From f47411fb53aeee0c7bd514cbc841f9030349f448 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 23 4月 2024 09:34:31 +0800
Subject: [PATCH] 项目文件添加

---
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/IClickWordCaptcha.cs                               |   32 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateOutput.cs                          |   73 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Alert.cs                                                          |   56 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/ChatHub.cs                                                      |  123 
 iWare_RawMaterialWarehouse_Web/src/api/modular/gen/sysCodeGenerateConfigManage.js                                                        |   29 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/editForm.vue                                                            |  145 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsOrderType.cs                                                             |   65 
 iWare_RawMaterialWarehouse_Web/src/views/main/README.md                                                                                  |    1 
 iWare_RawMaterialWarehouse_Web/src/components/Menu/index.js                                                                              |    2 
 iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/editForm.vue                                                          |  148 
 iWare_RawMaterialWarehouse_Web/src/views/system/tenant/index.vue                                                                         |  200 
 iWare_RawMaterialWarehouse_Web/jest.config.js                                                                                            |   23 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeUserService.cs                                      |   44 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Option.cs                                                   |    8 
 iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/searchBox.vue                                                                 |  109 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/editForm.vue                                                                   |  109 
 iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/ArticleListContent.vue                                                  |   89 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css                                      |    7 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js                                        | 4977 
 iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/DescriptionList.vue                                                        |  153 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeInput.cs                           |   94 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsOutput.cs   |  110 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysForm.cs                                                                   |   47 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/LabelTag.vue                                                                 |   99 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Gender.cs                                                                             |   52 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudentManage.js                                                        |  114 
 iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/index.vue                                                          |  296 
 iWare_RawMaterialWarehouse_Web/src/components/Exception/index.js                                                                         |    2 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/editForm.vue                                                                   |  118 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.jpg                                                                  |    0 
 iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/detailForm.vue                                                            |   75 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockOutput.cs                        |  120 
 iWare_RawMaterialWarehouse_Web/src/views/system/sms/index.vue                                                                            |  163 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RoleTypeEnum.cs                                                                       |   28 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/SysTenantManage.js                                                                   |   66 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysTimerSeedData.cs                                                               |   39 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/IWmsDumpOrderService.cs                               |   24 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/addForm.vue                                                                |   84 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsOutput.cs |  110 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesStation.cs                                                                   |   66 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAgvTaskManage.js                                                              |  139 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/excelForm.vue                                                         |  181 
 iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/editForm.vue                                                               |  167 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenService.cs                                           |   74 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialOutput.cs                                 |  152 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/index.vue                                                                  |  448 
 iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/addForm.vue                                                        |  122 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceInput.cs                                        |  310 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/index.vue                                                      |  215 
 iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/index.js                                                                        |    2 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/addForm.vue                                                           |  104 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/app.413ecdbc.js                                                            |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/GroupDiskOutWarehouseService.cs             |  236 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialSeedData.cs                                                            |   28 
 iWare_RawMaterialWarehouse_Web/src/views/system/user/addForm.vue                                                                         |  305 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/LoginType.cs                                                                          |   40 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/6.jpg                                                           |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-vendors.4659697d.css.gz                                             |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css.gz                                            |    0 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/excelForm.vue                                                            |  181 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/ITestStudent3Service.cs                               |   19 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlyPrepareRecord.js                                                                  |   41 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/editForm.vue                                                           |   95 
 iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/index.js                                                                |    3 
 iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/infoBlock.vue                                                                 |  142 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsDto.cs                        |   90 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenConfigService.cs                                      |  197 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/BStyleServiceExtension.cs                                             |   51 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css                                  |    7 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Options/RefreshTokenSettingOptions.cs                                                      |   15 
 iWare_RawMaterialWarehouse_Web/src/components/Editor/WangEditor.vue                                                                      |  126 
 iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/addForm.vue                                                          |  328 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_TreeSelect.cs                                                     |   72 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysConfigSeedData.cs                                                              |   57 
 iWare_RawMaterialWarehouse_Web/src/mock/services/article.js                                                                              |   88 
 iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/editForm.vue                                                       |  149 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictTypeSeedData.cs                                                            |   86 
 iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/DetailDrawer.vue                                                          |  153 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceDto.cs                  |   50 
 iWare_RawMaterialWarehouse_Web/src/utils/utils.less                                                                                      |   50 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsInput.cs  |   60 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderOutput.cs             |  352 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/EssentialFactor.cs                                                            |   20 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWarehouseInput.cs                                  |   49 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesAgvsiteStation.cs                                                            |   56 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css                                                          | 16465 ++
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/ISysOnlineUserService.cs                                  |   37 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/Dto/CallEmptyServiceInput.cs                               |   21 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPlace.cs                                                                 |  173 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Worker.cs                                                                         |   44 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/index.vue                                                              |  357 
 iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/index.vue                                                                    |  303 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrder.cs                                                       |  145 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateDto.cs                             |   61 
 iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/index.js                                                                  |    3 
 iWare_RawMaterialWarehouse_Web/src/views/system/workflow/edit.vue                                                                        |  182 
 iWare_RawMaterialWarehouse_Web/src/components/Result/index.js                                                                            |    2 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/Files/SysExcelTemplateManage.js                                                      |  114 
 iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniBar.vue                                                                         |   57 
 iWare_RawMaterialWarehouse_Web/src/components/Exception/ExceptionPage.vue                                                                |  130 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Rule.cs                                                     |   20 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/IMachineService.cs                                           |   26 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/NewtonsoftJsonSerializerProvider .cs                                             |   46 
 iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/addForm.vue                                                                |  146 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MessageType.cs                                                                        |   31 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaDto.cs                                            |   50 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FieldType.cs                                                                          |   35 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionResultsEnum.cs                                                    |   27 
 iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleB.vue                                                                        |  151 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/test/TestStudent3Manage.js                                                           |  114 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/5.jpg                                                           |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/SysPosService.cs                                                 |  137 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/editForm.vue                                                           |  143 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/editForm.vue                                                                  |   95 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/DEntityBase.cs                                                                      |   81 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/index.vue                                                            |  282 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/applicationsettings.json                                                            |    4 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css                               |  424 
 iWare_RawMaterialWarehouse_Web/src/layouts/Iframe.vue                                                                                    |   29 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/Dto/ConfigInput.cs                                            |  133 
 iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/index.vue                                                                 |  236 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/LowCodeService.cs                                            |  548 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsArea.cs                                                                  |   83 
 iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/infoBlock.vue                                                                |  128 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesDeviceWaring.cs                                                              |   52 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/applicationconfig.json                                                                     |  111 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsReceiptOrderManage.js                                                             |  147 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveInput.cs                                            |  126 
 iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Binding.vue                                                             |   25 
 iWare_RawMaterialWarehouse_Web/src/router/index.js                                                                                       |   19 
 iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/Ellipsis.vue                                                                      |   64 
 iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/editForm.vue                                                                        |  640 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map                               |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/logo.png                                                                      |    0 
 iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/auditor.vue                                                                   |  116 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherOutput.cs                               |   22 
 iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleA.vue                                                                        |  159 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/RegistInput.cs                                              |   31 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/SupplierStockReturnOrderManage.js                                                    |  152 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrder.cs                                                            |  166 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/editForm.vue                                                   |  145 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/ITestTeacherService.cs                                 |   26 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/additional-methods.js                              | 1158 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrderDetail.cs                                                 |  132 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDetailsStatusEnum.cs                                                         |   34 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Radio.cs                                                          |   52 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.cshtml                                                      |  120 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/SysConfigService.cs                                           |  191 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUser.cs                                                                   |  163 
 iWare_RawMaterialWarehouse_Web/postcss.config.js                                                                                         |    5 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeDto.cs                                  |   55 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpStatusCode.cs                                                                     |  252 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/editForm.vue                                                                      |  146 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserService.cs                                              |  164 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsPlaceSeedData.cs                                                               |   69 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/.config/dotnet-tools.json                                                             |   12 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Divider.cs                                                        |   32 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsMaterialContainer.cs                                                      |  120 
 iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/inputLayout.vue                                                              |   50 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/WmsStockReturnWarehouseService.cs            |  317 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/IDataPermissions.cs                                                                 |   28 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent5.cs                                                            |   36 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictTypeService.cs                                           |  187 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/userManage.js                                                                      |  268 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map                       |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelDateUtil.cs                                                                      |   36 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsTask.cs                                                                   |  157 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableInfo.cs                                                                 |   38 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/BlankingProductionLineEnum.cs                                                     |   22 
 iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/infoBlock.vue                                                     |  115 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTypeInput.cs                                            |  137 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskInput.cs                                       |  215 
 iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.md                                                                     |   48 
 iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/index.vue                                                                    |  257 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/IWmsGoodsReturnOrderService.cs                 |   24 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DateFactor.cs                                                          |   27 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.vm                                                         |   34 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsRolePdaMenu.cs                                                           |   36 
 iWare_RawMaterialWarehouse_Web/public/loading/loading.css                                                                                |    1 
 iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/GlobalHeader.vue                                                              |  194 
 iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/App.vue                                                              |  113 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage.js                                                                 |   41 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/WmsReceiptOrderService.cs                          |  415 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringDto.cs                          |   52 
 iWare_RawMaterialWarehouse_Web/src/components/PageHeader/index.js                                                                        |    2 
 iWare_RawMaterialWarehouse_Web/src/views/system/app/addForm.vue                                                                          |   91 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.cshtml                                                        |   29 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/index.vue                                                                 |  488 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/logManage.js                                                                       |   93 
 iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.less                                                                        |   25 
 iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingItem.vue                                                              |   38 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsDumpOrderManage.js                                                                |  114 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTaskManage.js                                                                     |   66 
 iWare_RawMaterialWarehouse_Web/LICENSE                                                                                                   |   21 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrderDetails.cs                                                 |  162 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysPos.cs                                                                    |   57 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Map/WmsContainerMapper.cs                               |   25 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput2.cs                                                |   38 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthToken.cs                                                |   98 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpPosOutput.cs                                              |   23 
 iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/addForm.vue                                                        |  342 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGenConfig.cs                                                          |  169 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DecimalFactor.cs                                                       |   46 
 iWare_RawMaterialWarehouse_Web/src/components/Charts/Liquid.vue                                                                          |   67 
 iWare_RawMaterialWarehouse_Web/src/components/Table/columnSetting.vue                                                                    |  104 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/editForm.vue                                                                       |  143 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_AccessDetailsManage.js                                                          |   66 
 iWare_RawMaterialWarehouse_Web/src/views/system/tenant/editForm.vue                                                                      |  163 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/IFormService.cs                                                |   66 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map                                  |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/ISysCacheService.cs                                            |  134 
 iWare_RawMaterialWarehouse_Web/package.json                                                                                              |  101 
 iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Project.vue                                                          |  214 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysOrgSeedData.cs                                                                 |   32 
 iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Login.vue                                                                          |  332 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/StationViewManage.js                                                                 |   65 
 iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/index.vue                                                                     |   45 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCodeDataBase.cs                                                        |  138 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/8.jpg                                                           |    0 
 iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.less                                                                      |   55 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/html_code_segment.html                                        |    5 
 iWare_RawMaterialWarehouse_Web/src/utils/filter.js                                                                                       |  114 
 iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/addForm.vue                                                                  |  117 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/welcome.164ddad4.png                                                      |    0 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPlaceManage.js                                                                    |  117 
 iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/addForm.vue                                                           |  122 
 iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/addForm.vue                                                         |  111 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/note/note.txt                                                               |   16 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialInput.cs                                  |  261 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictData.cs                                                               |   58 
 iWare_RawMaterialWarehouse_Web/src/components/TagSelect/TagSelectOption.jsx                                                              |   45 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderInput.cs                        |   93 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/editForm.vue                                                          |   99 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.cshtml                                                     |   35 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/SysFileService.cs                                               |  380 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/ISysPosService.cs                                                |   53 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysAppSeedData.cs                                                                 |   30 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/ISendMessageService.cs                                       |   49 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictDataManage.js                                                                  |   87 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.vm                                                         |  129 
 iWare_RawMaterialWarehouse_Web/docker/nginx/vhost/default.conf                                                                           |   30 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/index.vue                                                              |  293 
 iWare_RawMaterialWarehouse_Web/src/components/AvatarList/List.vue                                                                        |   99 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataOutput.cs                                           |   45 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderDto.cs                                |   62 
 iWare_RawMaterialWarehouse_Web/src/utils/domUtil.js                                                                                      |   19 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/index.vue                                                                |  394 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/editLevelModal.vue                                                             |   90 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/WmsInWarehouseService.cs                              |  317 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/DisableOpLogAttribute.cs                                                            |   10 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewImports.cshtml                                                             |    2 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Home/Index.cshtml                                                               |   12 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/loading.svg                                                   |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerPlaceSeedData.cs                                                      |   27 
 iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/infoBlock.vue                                                                |  106 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrderDetails.cs                                                     |  193 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/TextFactor.cs                                                          |   41 
 iWare_RawMaterialWarehouse_Web/public/index.html                                                                                         |   39 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsContainerEnum.cs                                                               |  112 
 iWare_RawMaterialWarehouse_Web/src/views/system/tenant/addForm.vue                                                                       |  157 
 iWare_RawMaterialWarehouse_Web/src/components/tools/UserMenu.vue                                                                         |  255 
 iWare_RawMaterialWarehouse_Web/src/views/system/user/index.vue                                                                           |  372 
 iWare_RawMaterialWarehouse_Web/src/components/Charts/smooth.area.less                                                                    |   14 
 iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/index.js                                                                   |    3 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/addForm.vue                                                                       |  121 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderInput.cs              |  441 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/user.6ca40864.js.gz                                                        |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Mapper/CustomMapper.cs                                                              |   36 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrderDetails.cs                                                        |  100 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/index.html                                                                    |  128 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/auditorworkflowManage.js                                                           |   61 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringOutput.cs                       |   52 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map                              |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormDto.cs                                                 |  350 
 iWare_RawMaterialWarehouse_Web/src/components/IconSelector/icons.js                                                                      |   36 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptcha.cs                                |  232 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/excelTemplateManage.js                                                             |  134 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterialStock/index.vue                                                                 |  219 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/DetailDrawer.vue                                                           |  284 
 iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.md                                                                         |   34 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ImportExcelType.cs                                                                    |   23 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/SysMenuService.cs                                               |  517 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserRole.cs                                                               |   36 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseOrderManage.js                                                               |  152 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Front.cs                                                  |  103 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenOutput.cs                                         |   68 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserInput.cs                                                |  455 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysApp.cs                                                                    |   48 
 iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.js                                                                     |    4 
 iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/infoBlock.vue                                                              |  106 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/SysEnumDataService.cs                                           |   70 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Admin.NET.EntityFramework.Core.csproj                                      |   39 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/FormService.cs                                                 |  187 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeDetailOutput.cs                                     |   46 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/DetailDrawer.vue                                                       |  170 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderOutput.cs                             |  149 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/NotFoundFrontException.cs                                         |    9 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserRoleSeedData.cs                                                            |   24 
 iWare_RawMaterialWarehouse_Web/src/mock/services/auth.js                                                                                 |   49 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenService.cs                                            | 1167 
 iWare_RawMaterialWarehouse_Web/src/views/system/notice/detailForm.vue                                                                    |   62 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceInput.cs                |  163 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPageSearch.cs                                          |   20 
 iWare_RawMaterialWarehouse_Web/src/components/Result/Result.vue                                                                          |  109 
 iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/index.vue                                                                    |  549 
 iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/chooseMaterials.vue                                                          |  330 
 iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/index.vue                                                                     |  514 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesEntrance.cs                                                                  |   51 
 iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/addForm.vue                                                                  |  126 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map                                    |    1 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/formDesignmanage.js                                                                |   81 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/liuying/TestStudent2Manage.js                                                        |  114 
 iWare_RawMaterialWarehouse_Web/src/store/mutation-types.js                                                                               |   19 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginInput.cs                                               |   24 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs                                 | 13178 ++
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/excelForm.vue                                                          |  180 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/IssueState.cs                                                                         |   34 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/JsonUtil.cs                                                                           |   82 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleMenuService.cs                                          |   38 
 iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/infoBlock.vue                                                              |  114 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleDataScopeService.cs                                     |   36 
 iWare_RawMaterialWarehouse_Web/src/core/bootstrap.js                                                                                     |   41 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/WmsStockReturnOrderService.cs                  |  400 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Handlers/JwtHandler.cs                                                                 |   86 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/VStudentService.cs                                        |  447 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsTaskEnum.cs                                                                    |  327 
 iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/infoBlock.vue                                                                |  116 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeReceivedManage.js                                                            |   24 
 iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Analysis.vue                                                                   |  385 
 iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.js                                                                          |   40 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/WmsOrderTypeService.cs                                  |  260 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingChuKuOrderManage.js                                                           |  147 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/GenEntity.cs                                             |  115 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/timersManage.js                                                                    |  143 
 iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/editForm.vue                                                      |  153 
 iWare_RawMaterialWarehouse_Web/jsconfig.json                                                                                             |   11 
 iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Register.vue                                                                       |  316 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/IWmsOrderService.cs                                     |   24 
 iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/GlobalFooter.vue                                                              |   46 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/addForm.vue                                                            |  120 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedWorkManage.js                                                              |  125 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/7.jpg                                                           |    0 
 iWare_RawMaterialWarehouse_Web/src/views/system/role/addForm.vue                                                                         |  125 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/addForm.vue                                                           |   85 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css                                               |  845 
 iWare_RawMaterialWarehouse_Web/src/views/system/dict/editForm.vue                                                                        |  128 
 iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/index.vue                                                                    |  271 
 iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/excelForm.vue                                                         |  181 
 iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.js                                                                         |    3 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileInput.cs                                                |   40 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Admin.NET.Database.Migrations.csproj                                        |   42 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.cshtml                                                     |  128 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map                    |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/TextFile1.txt                                  |    1 
 iWare_RawMaterialWarehouse_Web/src/mock/services/tagCloud.js                                                                             |    9 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/cesManage.js                                                                         |   66 
 iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/BaseSetting.vue                                                         |  238 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsOutput.cs                     |   98 
 iWare_RawMaterialWarehouse_Web/public/loading/loading.html                                                                               |    1 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/appManage.js                                                                       |  106 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestTeacherManage.js                                                        |  114 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsMaterialEnum.cs                                                                |  142 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Map/WmsMerchantinfoMapper.cs                         |   18 
 iWare_RawMaterialWarehouse_Web/src/layouts/BlankLayout.vue                                                                               |   16 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Output.cs                             |   47 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/2.jpg                                                           |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_SelectInputList.cs                                                |   96 
 iWare_RawMaterialWarehouse_Web/src/views/system/user/userOrgForm.vue                                                                     |  150 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleMenuService.cs                                           |  129 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/theme-colors-ef7df4e0.css                                                 | 1385 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeOutput.cs                               |   53 
 iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.md                                                                        |   43 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Convert.cs                                                  |   13 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/editForm.vue                                                               |  151 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map.ae82c867.png                                                          |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Program.cs                                                                            |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/IWmsPdaPowerService.cs                                   |   24 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Map/LesDeviceWaringMapper.cs                       |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpPosService.cs                                             |   37 
 iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/addForm.vue                                                           |  128 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgInput.cs                                                  |  180 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumUtil.cs                                                                           |  220 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/DetailDrawer.vue                                                       |  248 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/Merchantinfo.cs                                                             |   41 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderDto.cs                                      |  119 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderStatusEnum.cs                                                                |   94 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/Interface/IFactor.cs                                                   |   33 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/index.vue                                                                      |  528 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/CallEmptyService.cs                                        |  107 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/MachineService.cs                                            |   56 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/WareHouseInReportFormsService.cs      |  118 
 iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/infoBlock.vue                                                      |  116 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserDataScopeService.cs                                     |   36 
 iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.render.js                                                                        |  155 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoOutput.cs                         |   82 
 iWare_RawMaterialWarehouse_Web/src/components/Charts/Bar.vue                                                                             |   62 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Startup.cs                                                                          |   30 
 iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.js                                                                        |    4 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseOutput.cs                |   99 
 iWare_RawMaterialWarehouse_Web/src/views/system/pos/editForm.vue                                                                         |  129 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/tenantManage.js                                                                    |   96 
 iWare_RawMaterialWarehouse_Web/src/views/system/config/editForm.vue                                                                      |  158 
 iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/conditionflownode.js                                           |   40 
 iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/index.vue                                                         |  306 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleDataScopeService.cs                                      |   77 
 iWare_RawMaterialWarehouse_Web/src/views/system/notice/editForm.vue                                                                      |  256 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataCompareUtil.cs                                                                    |  215 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAssembleMaterialAttributManage.js                                                 |  125 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/LocationViewManage.js                                                                |   90 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialContainerSeedData.cs                                                   |   29 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/index.vue                                                                     |  201 
 iWare_RawMaterialWarehouse_Web/WMS基准版前端文档.docx                                                                                           |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCode.cs                                                                |  123 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/IVStudentService.cs                                       |   19 
 iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/index.js                                                                      |    2 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TypeUtil.cs                                                                           |  211 
 iWare_RawMaterialWarehouse_Web/src/components/Trend/index.js                                                                             |    3 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.png                                                                  |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrder.cs                                                        |  111 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthUserInput.cs                                            |   75 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map                                  |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceOutput.cs               |   50 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/index.vue                                                                  |  230 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/CodeGenHelper.cs                                                       |   53 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/IGeneralCaptcha.cs                                   |   22 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskInput.cs                                             |  426 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysExcelTemplate.cs                                                          |   89 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/SortStatusEnum.cs                                                                 |   34 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js                             |    4 
 iWare_RawMaterialWarehouse_Web/src/App.vue                                                                                               |   85 
 iWare_RawMaterialWarehouse_Web/src/views/system/org/addForm.vue                                                                          |  164 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelUtil.cs                                                                          |  458 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataOutput.cs                                           |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/user.fa7ae686.css.gz                                                      |    0 
 iWare_RawMaterialWarehouse_Web/src/utils/messagesend.js                                                                                  |   31 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictType.cs                                                               |   68 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMerchantinfo.cs                                                          |  103 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map                                    |    1 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/editForm.vue                                                          |  146 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/SnowflakeIdServiceExtension.cs                                        |   19 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/ITestStudent5Service.cs                               |   26 
 iWare_RawMaterialWarehouse_Web/src/views/system/menu/addForm.vue                                                                         |  612 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/site.css                                                                  |   18 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvWaringManage.js                                                                   |  128 
 iWare_RawMaterialWarehouse_Web/src/api/modular/gen/codeGenerateManage.js                                                                 |  148 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/editForm.vue                                                                  |  127 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpExtOrgPosService.cs                                       |   44 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Dto/Front_FileDto.cs                                                          |   11 
 iWare_RawMaterialWarehouse_Web/src/components/Menu/SideMenu.vue                                                                          |   61 
 iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/unauditor.vue                                                                 |  123 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/PMFinishedOrderManage.js                                                             |  154 
 iWare_RawMaterialWarehouse_Web/src/views/system/role/editForm.vue                                                                        |  144 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/onlineUserManage.js                                                                |   45 
 iWare_RawMaterialWarehouse_Web/src/layouts/UserLayout.vue                                                                                |  164 
 iWare_RawMaterialWarehouse_Web/src/mock/services/user.js                                                                                 |  768 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css                            | 4857 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuInput.cs                                                |  352 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/ILesDeviceWaringService.cs                         |   24 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/1.jpg                                                           |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsInput.cs                      |  209 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Font/font1559.ttf                                                     |    0 
 iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/DetailDrawer.vue                                                              |  170 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Output.cs                             |   67 
 iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniArea.vue                                                                        |   56 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrderDetails.cs                                                 |  108 
 iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.js                                                                          |    3 
 iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/ase.js                                                                    |   11 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserSeedData.cs                                                                |   32 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/enumManage.js                                                                      |   29 
 iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.js                                                                        |    3 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/addForm.vue                                                                   |  142 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/typeSelectModal.vue                                                       |   82 
 iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.less                                                                      |   60 
 iWare_RawMaterialWarehouse_Web/src/main.js                                                                                               |   50 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-vendors.c9111d8d.js                                                  | 1003 
 iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/infoBlock.vue                                                         |  116 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderDto.cs                                |   82 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Map/WmsStockReturnOrderMapper.cs               |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/fail.8d6df989.css.gz                                                      |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrderDetails.cs                                                            |  178 
 iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/excelForm.vue                                                  |  181 
 iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/chooseMaterials.vue                                                          |  310 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeOutput.cs                          |  154 
 iWare_RawMaterialWarehouse_Web/src/components/Table/index.js                                                                             |  487 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/WmsPlaceService.cs                                          |  282 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent3Manage.js                                                       |  114 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Rate.cs                                                           |   43 
 iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/index.vue                                                                      |  499 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTreeOutput.cs                                           |   33 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right1.vue                                                                   |  109 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/InvertingStorageManage.js                                                            |   66 
 iWare_RawMaterialWarehouse_Web/src/views/404.vue                                                                                         |   18 
 iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/nodeProperty.vue                                               |  388 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/excelForm.vue                                                           |  180 
 iWare_RawMaterialWarehouse_Web/src/views/system/config/index.vue                                                                         |  237 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpPos.cs                                                                 |   36 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Card.cs                                                           |   51 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map                         |    1 
 iWare_RawMaterialWarehouse_Web/src/views/system/notice/index.vue                                                                         |  278 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map                                      |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Admin.NET.Core.csproj                                                                      |   69 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/View_Materialstock_Material/View_Materialstock_Material.cs                          |   51 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/WmsPdaReceiptOrderService.cs                      |  147 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/favicon.ico                                                                   |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.csproj                                                        |   57 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/Dto/OnlineUserOutput.cs                                   |   58 
 iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/index.vue                                                   |  282 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Class.cs                                                                              |   24 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.cshtml                                                     |   27 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.cshtml                                                    |  558 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/IWmsOrderTypeService.cs                                 |   83 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpExtOrgPosOutput.cs                                        |   38 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Map/TestStudentMapper.cs                               |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Map/TestStudent3Mapper.cs                             |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeAttribute.cs                                               |   12 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/WmsContainerService.cs                                  |  303 
 iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/RegisterResult.vue                                                                 |   50 
 iWare_RawMaterialWarehouse_Web/src/components/Tree/Tree.jsx                                                                              |  124 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/RuKuSourceEnum.cs                                                                 |   26 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Properties/launchSettings.json                                                    |   11 
 iWare_RawMaterialWarehouse_Web/src/views/system/workflow/index.vue                                                                       |  136 
 iWare_RawMaterialWarehouse_Web/.gitignore                                                                                                |    6 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/ISysOrgService.cs                                                |   79 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPdaPower.cs                                                              |   63 
 iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/infoBlock.vue                                                      |  116 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/MaterialSortingService.cs                            |  216 
 iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.md                                                                        |   64 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptcha.cs                                    |  136 
 iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/AvatarModal.vue                                                         |  182 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/ISysExcelTemplateService.cs                            |  160 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/CommonTemplate.xlsx                                         |    0 
 iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.md                                                                          |   38 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/ReceiveMaterialOrderManage.js                                                        |  128 
 iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/index.js                                                                   |    2 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderOutput.cs                                   |  224 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/IWmsTakeMaterialOrderService.cs               |   24 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsContainerPlace.cs                                                         |   51 
 iWare_RawMaterialWarehouse_Web/src/config/router.config.js                                                                               |   98 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogVis.cs                                                                 |   81 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Text.cs                                                           |   58 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/excelForm.vue                                                          |  180 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderInput.cs                    |   39 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Map/WmsGoodsReturnOrderMapper.cs               |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent.cs                                                             |   55 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PagedUtil.cs                                                                          |   88 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysFile.cs                                                                   |   69 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryRuleManage.js                                                               |  114 
 iWare_RawMaterialWarehouse_Web/src/components/CountDown/CountDown.vue                                                                    |  102 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnInputBase.cs                                                                        |  116 
 iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/list.vue                                                                      |  133 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Input.cs                                                          |   68 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/editForm.vue                                                         |  124 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDistributeTypeEnum.cs                                                        |   22 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DateTimeOffSetToDateTime.cs                                                           |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesPackWarehouse.cs                                                             |   74 
 iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/editForm.vue                                                                |  170 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RequestTypeEnum.cs                                                                    |   33 
 iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/editForm.vue                                                                   |  422 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css                           |    8 
 iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.svg                                                                        |    1 
 iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/infoBlock.vue                                                        |  106 
 iWare_RawMaterialWarehouse_Web/.editorconfig                                                                                             |   39 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/loading.css                                                           |  132 
 iWare_RawMaterialWarehouse_Web/src/views/system/machine/index.vue                                                                        |  140 
 iWare_RawMaterialWarehouse_Web/src/views/system/config/addForm.vue                                                                       |  130 
 iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/addForm.vue                                                                  |  311 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/prePareManage.js                                                                     |   79 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css                                 | 4996 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileOutput.cs                                               |   85 
 iWare_RawMaterialWarehouse_Web/src/components/xnComponents/XCard.vue                                                                     |   16 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/DatabaseOutput.cs                                        |   28 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/addForm.vue                                                    |  124 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/index.vue                                                                         |  367 
 iWare_RawMaterialWarehouse_Web/src/views/system/pos/addForm.vue                                                                          |  106 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMerchantinfoManage.js                                                             |  114 
 iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/index.vue                                                             |  229 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/WmsMaterialService.cs                                    |  157 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.vm                                                       |   30 
 iWare_RawMaterialWarehouse_Web/src/store/index.js                                                                                        |   32 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map                                |    1 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/editForm.vue                                                             |  138 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/4.jpg                                                           |    0 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsGoodsReturnOrderManage.js                                                         |  123 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderInspectionManage.js                                                          |  137 
 iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleC.vue                                                                        |  223 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/TestStudentService.cs                                  |  545 
 iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/index.vue                                                           |  271 
 iWare_RawMaterialWarehouse_Web/src/views/system/file/detailForm.vue                                                                      |   99 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/IChatClient.cs                                                  |   25 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWareHouseOutput.cs                                 |  107 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Startup.cs                                                                             |  142 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/excelForm.vue                                                        |  181 
 iWare_RawMaterialWarehouse_Web/src/components/ChooseSiteModal.vue                                                                        |  110 
 iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/editForm.vue                                                             |  140 
 iWare_RawMaterialWarehouse_Web/src/layouts/index.js                                                                                      |    8 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderInput.cs                |  319 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/addForm.vue                                                                    |  260 
 iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/edit.vue                                                                      |   60 
 iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/index.vue                                                                     |   91 
 iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniSmoothArea.vue                                                                  |   40 
 iWare_RawMaterialWarehouse_Web/src/components/Charts/chart.less                                                                          |   13 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/WareWcsToWmsService.cs                                             | 1062 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ReflectionUtil.cs                                                                     |   40 
 iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/NumberInfo.vue                                                                  |   54 
 iWare_RawMaterialWarehouse_Web/src/components/Search/index.less                                                                          |   25 
 iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/index.js                                                                      |    2 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRole.cs                                                                   |  142 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Dynamic.cs                                                  |   11 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysTimer.cs                                                                  |   96 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/site.js                                                                    |    4 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/ISysConfigService.cs                                          |   78 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesOrderMode.cs                                                                   |   23 
 iWare_RawMaterialWarehouse_Web/src/components/index.less                                                                                 |    6 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/menuManage.js                                                                      |  130 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderInput.cs                                    |  329 
 iWare_RawMaterialWarehouse_Web/src/views/system/role/roleOrgForm.vue                                                                     |  195 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/EnumAuditStatus.cs                                                                    |   25 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FieldUtil.cs                                                                          |   74 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Slider.cs                                                         |   58 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsContainer.cs                                                             |  150 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/excelForm.vue                                                         |  180 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppInput.cs                                                  |  119 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css                             |    7 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/SpareTimes/SpareTimeDemo.cs                                                         |   36 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SysHelper.cs                                                           |   36 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataScopeType.cs                                                                      |   37 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsHistoryMaterialContainer .cs                                              |  108 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/3.jpg                                                           |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/Dto/MessageinputDto.cs                                          |   35 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css                               |    8 
 iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/index.vue                                                                 |  344 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceInput.cs                                |  117 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/ISysEnumDataService.cs                                          |   24 
 iWare_RawMaterialWarehouse_Web/src/components/UserSelect/index.js                                                                        |    3 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/ISysTimerService.cs                                            |   70 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadImg.cs                                                      |   73 
 iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Custom.vue                                                              |   75 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/infoBlock.vue                                                             |  173 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/SysConst.cs                                                                          |   12 
 iWare_RawMaterialWarehouse_Web/src/views/Home.vue                                                                                        |  215 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleMenu.cs                                                               |   36 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/GenEntityComparer.cs                                         |   48 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Dynamic.cs                                                |   23 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialStockManage.js                                                            |   26 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/SysCacheService.cs                                             |  272 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysRoleSeedData.cs                                                                |   32 
 iWare_RawMaterialWarehouse_Web/src/mixins/handleTableHt.js                                                                               |  141 
 iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/assembly.vue                                                                   |   16 
 iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/index.vue                                                                           |  283 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/app.413ecdbc.js.gz                                                         |    0 
 iWare_RawMaterialWarehouse_Web/src/components/MultiTab/events.js                                                                         |    2 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/numberChangeModal.vue                                                     |   88 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsAreaSeedData.cs                                                                |   24 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent2.cs                                                            |   56 
 iWare_RawMaterialWarehouse_Web/src/components/Trend/index.md                                                                             |   45 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/excelForm.vue                                                        |  181 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestTeacher.cs                                                             |   38 
 iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/editForm.vue                                                               |  117 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/editForm.vue                                                                      |  204 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceOutput.cs                                       |  137 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.cs                                         | 3102 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataConvertUtil.cs                                                                    |  434 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuOutput.cs                                               |  128 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherDto.cs                                  |   22 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/CsRedisExtensions.cs                                                             |   31 
 iWare_RawMaterialWarehouse_Web/src/views/main/View_AccessDetails/index.vue                                                               |  268 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogAudit.cs                                                               |   66 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataInput.cs                                            |   34 
 iWare_RawMaterialWarehouse_Web/src/assets/welcome.png                                                                                    |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FileLocation.cs                                                                       |   34 
 iWare_RawMaterialWarehouse_Web/src/mock/services/manage.js                                                                               |  252 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.cs.cshtml                                                  |  180 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/LICENSE.txt                                                        |   36 
 iWare_RawMaterialWarehouse_Web/src/views/system/timers/index.vue                                                                         |  264 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ShellUtil.cs                                                                          |   58 
 iWare_RawMaterialWarehouse_Web/src/core/lazy_lib/components_use.js                                                                       |  115 
 iWare_RawMaterialWarehouse_Web/src/core/use.js                                                                                           |   30 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/MaterialStockService.cs                           |  141 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Controllers/HomeController.cs                                                         |   23 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/excelForm.vue                                                                 |  180 
 iWare_RawMaterialWarehouse_Web/src/views/system/app/index.vue                                                                            |  294 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/SysTimerService.cs                                             |  323 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlywoodStockManage.js                                                                |   15 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/AdminType.cs                                                                          |   28 
 iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/editForm.vue                                                               |  137 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrastLowCode.cs                                       |  124 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css                                     | 4997 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/index.vue                                                                     |  306 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/MultiTenantDbContext.cs                                         |   62 
 iWare_RawMaterialWarehouse_Web/src/components/IconSelector/index.js                                                                      |    2 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsContainerManage.js                                                                |  114 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictDataSeedData.cs                                                            |  261 
 iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/fkModal.vue                                                                    |  184 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/index.vue                                                             |  528 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/WmsAgvTaskService.cs                                      |  311 
 iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/builderWorkFlow.vue                                                  |  443 
 iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/addForm.vue                                                                |  123 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/TestStudent5Service.cs                                |  391 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/ViewDynamic.cs                                                    |   15 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/index.vue                                                             |  223 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPdaPowerManage.js                                                                 |  114 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpService.cs                                                 |  136 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFront.cs                                                     |   32 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-166.json                                            |    8 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuWeight.cs                                                                         |   22 
 iWare_RawMaterialWarehouse_Web/src/views/system/exception/500.vue                                                                        |   17 
 iWare_RawMaterialWarehouse_Web/src/core/lazy_use.js                                                                                      |   27 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpMethod.cs                                                                         |   64 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnRestfulResultProvider.cs                                                            |  167 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css.gz                                                       |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/CommonConst.cs                                                                       |   55 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskOutput.cs                                      |   65 
 iWare_RawMaterialWarehouse_Web/src/components/Charts/ChartCard.vue                                                                       |  120 
 iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/DepartmentSelect.vue                                                      |   48 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingLocationViewManage.js                                                         |   92 
 iWare_RawMaterialWarehouse_Web/src/components/Charts/Trend.vue                                                                           |   82 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right4.vue                                                                   |  106 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvWaring.cs                                                                    |   69 
 iWare_RawMaterialWarehouse_Web/src/utils/device.js                                                                                       |   33 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-本机.json                                             |    8 
 iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/infoBlock.vue                                                       |  115 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/addForm.vue                                                                        |  121 
 iWare_RawMaterialWarehouse_Web/src/components/IconSelector/IconSelector.vue                                                              |   86 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/SysFileServiceEx.cs                                                           |   26 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobOutput.cs                                               |  149 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgOutput.cs                                                 |   60 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/ClaimConst.cs                                                                        |   45 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/emailManage.js                                                                     |   29 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpService.cs                                                |   60 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css                        |    7 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/QueryTypeConst.cs                                                                    |   53 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpPosService.cs                                              |   81 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherInput.cs                                |   66 
 iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/inputLayout.vue                                                               |   50 
 iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/index.vue                                                                    |  228 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderOutput.cs                       |  278 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Config.cs                                                   |   23 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/AutomaticWarehouseService.cs                   |  351 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.cshtml                                                     |  370 
 iWare_RawMaterialWarehouse_Web/.eslintrc.js                                                                                              |   77 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/WmsAreaService.cs                                            |  313 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/index.vue                                                                |  424 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSupplierManage.js                                                                 |   66 
 iWare_RawMaterialWarehouse_Web/src/components/Trend/index.less                                                                           |   42 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderDto.cs                  |   77 
 iWare_RawMaterialWarehouse_Web/src/assets/notice.png                                                                                     |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpPosSeedData.cs                                                              |   30 
 iWare_RawMaterialWarehouse_Web/src/views/system/account/center/Index.vue                                                                 |  308 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/LogWorker/WorkerLog.cs                                                            |   48 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOutboundOrderManage.js                                                     |  154 
 iWare_RawMaterialWarehouse_Web/src/views/system/role/index.vue                                                                           |  239 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesDeviceWaringManage.js                                                             |  114 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentOutput.cs                                     |   52 
 iWare_RawMaterialWarehouse_Web/docker/nginx/nginx.conf                                                                                   |   21 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/entranceSelectModal.vue                                                   |   98 
 iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/editForm.vue                                                   |  107 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/addForm.vue                                                                   |   82 
 iWare_RawMaterialWarehouse_Web/src/components/index.js                                                                                   |   70 
 iWare_RawMaterialWarehouse_Web/src/views/system/exception/404.vue                                                                        |   17 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerDto.cs                                    |   47 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableColumnOuput.cs                                      |   44 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseInput.cs           |   69 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapPoint.png                                                             |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceOutput.cs                               |  124 
 iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/index.vue                                                          |  271 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeService.cs                                          |   67 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/GoodsReturnStatus.cs                                                        |   23 
 iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/securityItem/updPwd.vue                                                 |  118 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysMenuSeedData.cs                                                                |  285 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/DefaultDbContext.cs                                                               |   13 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/VStudentManage.js                                                           |  114 
 iWare_RawMaterialWarehouse_Web/src/components/tools/HeadInfo.vue                                                                         |   67 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/IAuthService.cs                                                 |   48 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeInput.cs                                |  185 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontLayout.cs                                               |   20 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/IWmsReceiptOrderService.cs                         |   24 
 iWare_RawMaterialWarehouse_Web/src/utils/applocation.js                                                                                  |   11 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/chooseMaterialsModal.vue                                                 |  427 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentOutput.cs                               |   67 
 iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/chooseMaterials.vue                                                           |  335 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/digitalFlop.vue                                                              |  214 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/ExWarehouseService.cs                                    |  323 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/WmsGoodsReturnOrderService.cs                  |  364 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Select.cs                                                         |   77 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.vm                                                        |  581 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeBase.cs                                             |   60 
 iWare_RawMaterialWarehouse_Web/src/components/tools/index.js                                                                             |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerOutput.cs                               |  102 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/README.md                                                                          |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/YesOrNot.cs                                                                           |   22 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Enum/FieldType.cs                                                             |   10 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right3.vue                                                                   |   72 
 iWare_RawMaterialWarehouse_Web/src/views/main/StationView/index.vue                                                                      |  278 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/ReceivingStatus.cs                                                          |   23 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.min.map                                                |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderDto.cs                          |  107 
 iWare_RawMaterialWarehouse_Web/src/components/Table/index.less                                                                           |   54 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Date.cs                                                           |   73 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/View/TestDemo/VStudent.cs                                                                  |  129 
 iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/SearchForm.vue                                                                |  152 
 DBScript/01_DDL/02_DDL_TABLE_Edit.sql                                                                                                    |    4 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map2.png                                                                 |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveOutput.cs                                           |  120 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesAisle.cs                                                                       |   46 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.js                                                     | 10872 +
 iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/NoticeIcon.vue                                                                  |  100 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/bg.110420cf.png                                                           |    0 
 iWare_RawMaterialWarehouse_Web/src/views/system/dict/index.vue                                                                           |  251 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map                                 |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictDataService.cs                                           |  196 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-vendors.4659697d.css                                                | 30745 +++++
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/addForm.vue                                                                   |  105 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/roleManage.js                                                                      |  155 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/index.vue                                                                         |  420 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaResult.cs                          |  119 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkShopType.cs                                                                |   48 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpExtOrgPos.cs                                                                |   29 
 iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/infoBlock.vue                                                      |  115 
 iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/index.vue                                                                |  503 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderInput.cs                |  487 
 iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/editForm.vue                                                       |  132 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/index.vue                                                                      |  194 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/RequestActionFilter.cs                                                              |  105 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage.js                                                                |  169 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAgvTask/index.vue                                                                   |  186 
 iWare_RawMaterialWarehouse_Web/src/views/system/README.md                                                                                |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ListUtil.cs                                                                           |   53 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuOpenType.cs                                                                       |   34 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Html.cs                                                           |   26 
 iWare_RawMaterialWarehouse_Web/src/utils/permissions.js                                                                                  |   27 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/Dto/BaseDto.cs                                                  |   52 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/fail.c1daacfd.js                                                           |   26 
 iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/chooseMaterials.vue                                                  |  256 
 iWare_RawMaterialWarehouse_Web/src/views/system/workflow/create.vue                                                                      |  157 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveOutput.cs                                   |   47 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNotice.cs                                                                 |   78 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/WmsMaterialStock.cs                                                        |  167 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesEntranceType.cs                                                                |   22 
 iWare_RawMaterialWarehouse_Web/src/components/tools/LangSelect.vue                                                                       |   46 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/WareHouseOutReportFormsService.cs    |  118 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/README.md                                                                            |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMaterial.cs                                                              |  174 
 iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.less                                                                   |   23 
 iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/addForm.vue                                                                         |  314 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj                                                            |   58 
 iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/index.vue                                                             |  261 
 iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Index.vue                                                               |  155 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerSeedData.cs                                                           |   29 
 iWare_RawMaterialWarehouse_Web/src/components/PageLoading/index.jsx                                                                      |  106 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/addForm.vue                                                           |  105 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoInput.cs                          |  246 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Textarea.cs                                                       |   60 
 iWare_RawMaterialWarehouse_Web/public/loading/option2/html_code_segment.html                                                             |    5 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left22.vue                                                                   |  152 
 iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/index.vue                                                                  |  288 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingMaterialStock/index.vue                                                             |  219 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-b7a16696.e8717d8b.js                                                 |    9 
 iWare_RawMaterialWarehouse_Web/src/mock/index.js                                                                                         |   21 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuTreeOutput.cs                                           |   73 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Base.cs                                                     |   35 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeReceiveOutput.cs                                    |   25 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FileUtil.cs                                                                           |   53 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map.3425b845.jpg                                                          |    0 
 iWare_RawMaterialWarehouse_Web/src/store/getters.js                                                                                      |   20 
 iWare_RawMaterialWarehouse_Web/src/utils/util.js                                                                                         |  256 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right2.vue                                                                   |   65 
 iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Security.vue                                                            |   70 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockOutboundOrderManage.js                                                     |  191 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesStationManage.js                                                                  |  161 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left2.vue                                                                    |   68 
 iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniProgress.vue                                                                    |   75 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Input.cs                              |  153 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingMaterialStockManage.js                                                        |   77 
 iWare_RawMaterialWarehouse_Web/src/views/system/pos/index.vue                                                                            |  178 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/appsettings.json                                                                      |  161 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Image/logo.png                                                                |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseOutput.cs          |   56 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderDto.cs                |  227 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/excelForm.vue                                                                 |  180 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOnlineUser.cs                                                             |   79 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeUserStatus.cs                                                                   |   28 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewInput.cs                           |   72 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/DetailDrawer.vue                                                      |  205 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/WmsDumpOrderService.cs                                |  335 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderOutput.cs                             |   94 
 iWare_RawMaterialWarehouse_Web/src/components/Dialog.js                                                                                  |  113 
 iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flownodes.js                                                   |   52 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamic.cs                                              |    6 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map                             |    1 
 iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/ListBox.vue                                                               |  146 
 iWare_RawMaterialWarehouse_Web/src/views/system/role/rolePdaMenuModal.vue                                                                |  123 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/excelForm.vue                                                              |  180 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/TestStudent3Service.cs                                |  527 
 iWare_RawMaterialWarehouse_Web/src/store/modules/async-router.js                                                                         |   33 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/LowCodeInput.cs                                          |  155 
 iWare_RawMaterialWarehouse_Web/src/components/UserSelect/UserSelect.vue                                                                  |   76 
 iWare_RawMaterialWarehouse_Web/src/components/Trend/Trend.vue                                                                            |   41 
 iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/auditoropera.vue                                                   |  137 
 iWare_RawMaterialWarehouse_Web/src/components/Search/GlobalSearch.jsx                                                                    |   62 
 iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/index.vue                                                                     |  375 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Program.cs                                                                        |   14 
 iWare_RawMaterialWarehouse_Web/src/components/tools/DetailList.vue                                                                       |    5 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js                                    |    7 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryPlanManage.js                                                               |  225 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/LocationViewService.cs                             |  280 
 iWare_RawMaterialWarehouse_Web/src/views/system/timers/editForm.vue                                                                      |  390 
 iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/addForm.vue                                                                  |  248 
 iWare_RawMaterialWarehouse_Web/src/views/system/dict/addForm.vue                                                                         |  106 
 iWare_RawMaterialWarehouse_Wms/iWare_RawMaterialWarehouse_Wms.sln                                                                        |   61 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.vue.vm                                                     |  181 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Entity/LocationView.cs                                                              |   30 
 iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/index.vue                                                                  |  235 
 iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/addForm.vue                                                              |  117 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/index.vue                                                                      |  162 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput.cs                                                 |   33 
 DBScript/01_DDL/04_DDL_INDEX.sql                                                                                                         |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrder.cs                                                        |  131 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js              |  432 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt                                 |   12 
 iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowNodeGroup.vue                                              |  168 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.vm                                                         |   26 
 iWare_RawMaterialWarehouse_Web/src/components/Editor/QuillEditor.vue                                                                     |   78 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/excelForm.vue                                                         |  180 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left23.vue                                                                   |   50 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerInput.cs                                |  311 
 iWare_RawMaterialWarehouse_Web/src/components/NProgress/nprogress.less                                                                   |   76 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/editForm.vue                                                                  |  165 
 iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifySlide.vue                                                          |  374 
 iWare_RawMaterialWarehouse_Web/src/components/global.less                                                                                |  541 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/user.6ca40864.js                                                           |    1 
 iWare_RawMaterialWarehouse_Web/public/config.js                                                                                          |    5 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserDataScopeSeedData.cs                                                       |   22 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptchaInput.cs                               |   27 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceDto.cs                                          |  145 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Map/TestTeacherMapper.cs                               |   18 
 iWare_RawMaterialWarehouse_Web/src/assets/logo.jpg                                                                                       |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Input.cs                              |  214 
 iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/indexConfig.vue                                                                |  367 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeModular.cs                                                            |   72 
 iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Article.vue                                                          |   91 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Admin.NET.WorkerService.csproj                                                    |   17 
 iWare_RawMaterialWarehouse_Web/src/views/system/exception/403.vue                                                                        |   17 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialDto.cs                                    |   70 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js          |    5 
 iWare_RawMaterialWarehouse_Web/src/views/system/user/userRoleForm.vue                                                                    |  117 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/WmsMerchantinfoService.cs                            |  253 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map                        |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Map/WmsOrderMapper.cs                                   |   18 
 iWare_RawMaterialWarehouse_Web/src/components/tools/Logo.vue                                                                             |   51 
 iWare_RawMaterialWarehouse_Web/src/components/Charts/RankList.vue                                                                        |   77 
 iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/index.vue                                                             |  380 
 iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Notification.vue                                                        |   25 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TreeBuildUtil.cs                                                                      |   75 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/addForm.vue                                                            |   82 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/FakeDeleteExtensions.cs                                                          |  140 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeService.cs                                           |  320 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesProductionlineManage.js                                                           |   66 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/DetailDrawer.vue                                                                  |  199 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/configManage.js                                                                    |   85 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/fail.c1daacfd.js.gz                                                        |    0 
 iWare_RawMaterialWarehouse_Web/src/store/modules/app.js                                                                                  |  138 
 iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/addForm.vue                                                           |  322 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/SysAppService.cs                                                 |  191 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map                           |    1 
 iWare_RawMaterialWarehouse_Web/src/utils/mixin.js                                                                                        |   85 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/AntDesignTreeNode.cs                                        |   79 
 iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/addForm.vue                                                        |  111 
 iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/index.vue                                                            |  273 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserService.cs                                               |  496 
 iWare_RawMaterialWarehouse_Web/src/utils/routeConvert.js                                                                                 |   30 
 iWare_RawMaterialWarehouse_Web/webstorm.config.js                                                                                        |    3 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Cascader.cs                                                       |   62 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseInput.cs          |   94 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseEntrance.cs                                                     |   60 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/BaackupWarehouseOrderManage.js                                                       |  140 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderManage.js                                                                    |  137 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/ProductionReturnedOrderManage.js                                                     |  153 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/TemplateConst.cs                                                                     |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogOp.cs                                                                  |  121 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaInput.cs                                          |  163 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map2.48889afd.png                                                         |    0 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/DetailDrawer.vue                                                        |  276 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Tree_Option.cs                                              |    7 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/loading.css                                                   |   22 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvTask.cs                                                                      |  100 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRolePdaMenu.cs                                               |    6 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderInput.cs                              |  277 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsInput.cs    |   60 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewStart.cshtml                                                               |    3 
 iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/index.vue                                                                  |  259 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map                             |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PageInputOrder.cs                                                                     |   69 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Batch.cs                                                          |   62 
 iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/infoBlock.vue                                                               |  114 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesTakematerialsManage.js                                                            |  194 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/ZZProductFinishedOrderManage.js                                                      |  153 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceInput.cs                   |   43 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/EventSubscriber/LogEventSubscriber.cs                                                      |   43 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.vm                                                          |  118 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/StringUtil.cs                                                                         |   83 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/LogExceptionHandler.cs                                                              |   45 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/index.vue                                                                          |  232 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Number.cs                                                         |   63 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginOutput.cs                                              |  275 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleOutput.cs                                               |   30 
 iWare_RawMaterialWarehouse_Web/src/views/system/email/index.vue                                                                          |  205 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialManage.js                                                                 |  102 
 iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/axios.js                                                                  |   30 
 iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/readme.md                                                      |  300 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserDataScopeService.cs                                      |   77 
 iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify.vue                                                                      |  473 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/editForm.vue                                                              |  328 
 iWare_RawMaterialWarehouse_Web/.travis.yml                                                                                               |    7 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Map/TestStudent5Mapper.cs                             |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenModel.cs                                          |   91 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Switch.cs                                                         |   30 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderDto.cs                  |   92 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/WmsSortOrderService.cs                                |  259 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/editForm.vue                                                          |  124 
 iWare_RawMaterialWarehouse_Web/src/views/main/plywoodStock/index.vue                                                                     |  189 
 iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/chooseMaterials.vue                                                |  322 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOrderManage.js                                                             |  152 
 iWare_RawMaterialWarehouse_Web/docker/nginx/Dockerfile                                                                                   |   32 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeInput.cs                                            |  152 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/ITestStudentService.cs                                 |   22 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbStockManage.js                                                                    |   15 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/appsettings.json                                                                  |    9 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbPrepareRecord.js                                                                  |   41 
 iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/FooterToolBar.vue                                                            |   30 
 iWare_RawMaterialWarehouse_Web/src/views/system/file/previewForm.vue                                                                     |   60 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/MoveType.cs                                                                 |   19 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/LambdaExpressionBuilder.cs                                                       |  183 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css                                   |  427 
 DBScript/01_DDL/03_DDL_VIEW.sql                                                                                                          |    1 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/editForm.vue                                                                  |  186 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Map/VStudentMapper.cs                                     |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNoticeUser.cs                                                             |   44 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.cshtml                                                   |   32 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/addForm.vue                                                                    |   92 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/SysExcelTemplateService.cs                             |  485 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentInput.cs                                |  197 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleInput.cs                                                |  251 
 iWare_RawMaterialWarehouse_Web/src/api/modular/gen/lowCodeManage.js                                                                      |  105 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewOutput.cs                          |  191 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserRoleService.cs                                           |  104 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceOutput.cs                  |  204 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.cshtml                                                  |  277 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerInput.cs                                  |  141 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/TopMiddleCmp.vue                                                             |  112 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/DeliveryWorkManage.js                                                                |  127 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.cshtml                                                     |   35 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/workflowManage.js                                                                  |  117 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/WmsWarehouseEntranceService.cs                  |  258 
 iWare_RawMaterialWarehouse_Web/src/components/TextArea/index.jsx                                                                         |   69 
 iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/viewworkflow.vue                                                   |   99 
 DBScript/02_DML/01_InitData.sql                                                                                                          |    1 
 iWare_RawMaterialWarehouse_Web/src/assets/text_logo.png                                                                                  |    0 
 iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/create.vue                                                                    |  149 
 iWare_RawMaterialWarehouse_Web/src/views/system/role/roleMenuForm.vue                                                                    |  185 
 iWare_RawMaterialWarehouse_Web/src/permission.js                                                                                         |  123 
 iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowentity.js                                                  |   24 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/IWmsInspectOrderService.cs                         |   13 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPublishDto.cs                                          |   20 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAccessDetails/index.vue                                                             |  275 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseOutput.cs         |  119 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskOutput.cs                                            |  160 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataInput.cs                                            |  161 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveInput.cs                                    |   86 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogEx.cs                                                                  |   79 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/jquery.validate.js                                 | 1601 
 iWare_RawMaterialWarehouse_Web/src/components/Charts/TagCloud.vue                                                                        |  113 
 iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse/index.vue                                                                      |  283 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/IPUtil.cs                                                                             |   33 
 iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/themeColor.js                                                                |   24 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/index.vue                                                            |  391 
 iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/excelForm.vue                                                            |  181 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/addForm.vue                                                           |  126 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAccessDetailsManage.js                                                        |   66 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Table.cs                                                          |  128 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Service/BaseId.cs                                                                          |   18 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/addForm.vue                                                          |   88 
 iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/infoBlock.vue                                                         |  115 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgTreeNode.cs                                               |   73 
 iWare_RawMaterialWarehouse_Web/src/components/Exception/type.js                                                                          |   19 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/addForm.vue                                                          |  117 
 iWare_RawMaterialWarehouse_Web/src/views/system/org/index.vue                                                                            |  233 
 iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/index.vue                                                                        |  211 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentInput.cs                                      |  177 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesSerialRuleDetail.cs                                                          |   96 
 iWare_RawMaterialWarehouse_Web/.browserslistrc                                                                                           |    3 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/cards.vue                                                                    |  188 
 iWare_RawMaterialWarehouse_Web/src/components/MultiTab/MultiTab.vue                                                                      |  162 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map                           |    1 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseReceiveOrderManage.js                                                        |  205 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj                                                              |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenConfig.cs                                         |  179 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FormDesignType.cs                                                                     |   16 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map                                 |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleService.cs                                              |  109 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-b7a16696.e8717d8b.js.gz                                              |    0 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/addForm.vue                                                          |  105 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobInput.cs                                                |  246 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.min.js                                                 |    2 
 iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/index.vue                                                          |  314 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/addForm.vue                                                              |  116 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuType.cs                                                                           |   28 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/ISysAppService.cs                                                |   74 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/IWmsMerchantinfoService.cs                           |   24 
 iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/index.vue                                                                   |  309 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGen.cs                                                                |  119 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/loginManage.js                                                                     |  119 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/index.vue                                                                     |  224 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleDataScope.cs                                                          |   36 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css                                 |    7 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/SysOrgService.cs                                                 |  383 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockInput.cs                         |  294 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/WmsInspectOrderService.cs                          |  173 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.json                                                            |    8 
 iWare_RawMaterialWarehouse_Web/src/core/icons.js                                                                                         |   11 
 iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/editForm.vue                                                        |  132 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle1.vue                                                                  |  121 
 iWare_RawMaterialWarehouse_Web/src/views/system/timers/addForm.vue                                                                       |  367 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map                        |    1 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/index.vue                                                                          |  316 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/DetailDrawer.vue                                                       |  239 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/logo.a0cbaad2.png                                                         |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/ILowCodeService.cs                                           |   56 
 iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/chooseMaterials.vue                                                   |  254 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/DictionaryExtensions.cs                                                          |   47 
 iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/addForm.vue                                                                      |  101 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskDto.cs                                         |   65 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrder.cs                                                               |   90 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/BaseService.cs                                                  |  405 
 iWare_RawMaterialWarehouse_Web/src/views/system/app/editForm.vue                                                                         |  116 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpExtOrgPosService.cs                                        |   94 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_Materialstock_MaterialManage.js                                                 |  114 
 iWare_RawMaterialWarehouse_Web/src/views/system/org/editForm.vue                                                                         |  192 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringInput.cs                        |  156 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/IWmsStockReturnOrderService.cs                 |   24 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOrg.cs                                                                    |   98 
 iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/settingConfig.js                                                             |   46 
 iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Monitor.vue                                                                    |   15 
 iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Workplace.vue                                                                  |  526 
 iWare_RawMaterialWarehouse_Web/src/views/system/tenant/tenantMenuForm.vue                                                                |  186 
 iWare_RawMaterialWarehouse_Web/src/utils/exportToExcel.js                                                                                |  101 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaInput.cs                           |   27 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/avatar2.jpg                                                                   |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Editor.cs                                                         |   58 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Map/WmsDumpOrderMapper.cs                             |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictDataService.cs                                          |   74 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsStockReturnOrderManage.js                                                         |  124 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/SysOnlineUserService.cs                                   |  105 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderOutput.cs                   |  125 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/CommonStatus.cs                                                                       |   28 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpExtOrgPos.cs                                                           |   53 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/additional-methods.min.js                          |    4 
 iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.js                                                                               |  177 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/fileManage.js                                                                      |  115 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenInput.cs                                          |  234 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/XnCodeGenOutput.cs                                       |   55 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map                             |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Startup.cs                                                                 |   41 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Checkbox.cs                                                       |   52 
 iWare_RawMaterialWarehouse_Web/src/layouts/PageView.vue                                                                                  |   32 
 iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/index.vue                                                                     |  265 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/homeManage.js                                                                      |   43 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/fail.8d6df989.css                                                         | 1703 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.vm                                                         |   34 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/AuthService.cs                                                  |  347 
 iWare_RawMaterialWarehouse_Web/vue.config.js                                                                                             |  141 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/index.vue                                                               |  403 
 iWare_RawMaterialWarehouse_Web/src/views/system/workflow/startworkflow.vue                                                               |   82 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/Dto/PosInput.cs                                                  |  132 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeType.cs                                                                         |   19 
 iWare_RawMaterialWarehouse_Web/src/views/system/onlineUser/index.vue                                                                     |  205 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/index.vue                                                                      |  349 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/Comm.cs                                                                               |   46 
 iWare_RawMaterialWarehouse_Web/src/components/Charts/TransferBar.vue                                                                     |   64 
 iWare_RawMaterialWarehouse_Web/src/components/TagSelect/index.jsx                                                                        |  113 
 iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/infoBlock.vue                                                             |  104 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/MachineUtil.cs                                                                        |  261 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.vm                                                            |   28 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoDto.cs                            |   82 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderInput.cs                              |  197 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/ISysMenuService.cs                                              |  101 
 iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/inputLayout.vue                                                            |   50 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/LICENSE                                                         |   22 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesTakeMaterialsStatus.cs                                                         |   28 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Map/WmsTakeMaterialOrderMapper.cs             |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableColumn.cs                                                               |   51 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseInput.cs                 |   82 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvTaskManage.js                                                                     |   31 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeManage.js                                                                    |   85 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/user.fa7ae686.css                                                         |  723 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockReturnOrderManage.js                                                       |  190 
 iWare_RawMaterialWarehouse_Web/src/store/modules/permission.js                                                                           |   76 
 iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/editForm.vue                                                                 |  140 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left1.vue                                                                    |   70 
 iWare_RawMaterialWarehouse_Web/babel.config.js                                                                                           |   28 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle2.vue                                                                  |  157 
 iWare_RawMaterialWarehouse_Web/src/assets/login_bk.png                                                                                   |    0 
 iWare_RawMaterialWarehouse_Web/web.config                                                                                                |   25 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/IWmsContainerService.cs                                 |   73 
 iWare_RawMaterialWarehouse_Web/src/utils/request.js                                                                                      |  167 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskDto.cs                                               |  110 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/WmsTakeMaterialOrderService.cs                |  613 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsBindIn/index.vue                                                                        |   16 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/SendMessageService.cs                                        |  112 
 iWare_RawMaterialWarehouse_Web/src/assets/icons/bx-analyse.svg                                                                           |    1 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/topHeader.vue                                                                |  103 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTakeMaterialOrderManage.js                                                        |  141 
 iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/addForm.vue                                                                 |  136 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/DeskDataConst.cs                                                                     |   23 
 iWare_RawMaterialWarehouse_Web/src/views/system/menu/editForm.vue                                                                        |  677 
 iWare_RawMaterialWarehouse_Web/src/store/modules/user.js                                                                                 |  258 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/index.vue                                                            |  508 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrder.cs                                                                   |  152 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/LICENSE.md                                              |   22 
 iWare_RawMaterialWarehouse_Web/src/core/directives/action.js                                                                             |   34 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmp.cs                                                                    |   70 
 iWare_RawMaterialWarehouse_Web/src/views/main/StationView/SearchForm.vue                                                                 |   74 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkshopSection.cs                                                             |   28 
 iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/sourcenodes.js                                                 |   55 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderOutput.cs               |  233 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserDataScope.cs                                                          |   36 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map                                        |    1 
 iWare_RawMaterialWarehouse_Web/src/router/generator-routers.js                                                                           |  263 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/DodeviceType.cs                                                                   |   34 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormAddDto.cs                                              |   37 
 iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/index.js                                                                     |    2 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/index.vue                                                                     |  229 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerOutput.cs                                 |   67 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Grid.cs                                                           |  108 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/PriorityModal.vue                                                                  |  108 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrasOutput.cs                                         |   18 
 iWare_RawMaterialWarehouse_Web/src/components/Loading.js                                                                                 |   64 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictManage.js                                                                      |  101 
 iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/index.vue                                                      |  172 
 iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingDrawer.vue                                                            |  360 
 iWare_RawMaterialWarehouse_Web/src/utils/socket.js                                                                                       |  216 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadFile.cs                                                     |   86 
 iWare_RawMaterialWarehouse_Web/src/views/system/user/editForm.vue                                                                        |  291 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/editForm.vue                                                         |  103 
 iWare_RawMaterialWarehouse_Web/src/components/StationSelect.vue                                                                          |  186 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.Designer.cs                                | 13180 ++
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingTaskManage.js                                                                 |  108 
 iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/addForm.vue                                                                    |  416 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictTypeService.cs                                          |   72 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseManage.cs                                                       |   41 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map                            |    1 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/orgManage.js                                                                       |   85 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Map/WmsPdaPowerMapper.cs                                 |   18 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/DetailDrawer.vue                                                                   |  120 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/excelForm.vue                                                                     |  180 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/WmsTaskService.cs                                            |  627 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/CodeGenUtil.cs                                                                        |   85 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_FrontModel.cs                                             |   43 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Dto.cs                                |   47 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamicOptions.cs                                       |   15 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css                                      | 11197 +
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingRuKuOrderManage.js                                                            |  175 
 iWare_RawMaterialWarehouse_Web/src/mock/services/other.js                                                                                |  973 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/editForm.vue                                                          |  125 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/addForm.vue                                                             |  121 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/WmsPdaPowerService.cs                                    |  245 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/TradeMode.cs                                                                |   94 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysConfig.cs                                                                 |   61 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/TestTeacherService.cs                                  |  241 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ErrorCode.cs                                                                          |  497 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/editForm.vue                                                                   |  263 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/WmsAccessDetailsService.cs                        |   56 
 iWare_RawMaterialWarehouse_Web/src/config/defaultSettings.js                                                                             |   38 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/bg.png                                                                   |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Shared/_Layout.cshtml                                                           |   11 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenConfigService.cs                                     |   54 
 iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/editForm.vue                                                                     |  120 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleService.cs                                               |  345 
 iWare_RawMaterialWarehouse_Web/docker/docker-compose.yml                                                                                 |   16 
 iWare_RawMaterialWarehouse_Web/src/components/AvatarList/Item.vue                                                                        |   46 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Model.cs                                                    |   11 
 iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/util.js                                                                   |   52 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormEditDto.cs                                             |   33 
 iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/TestWork.vue                                                                   |  115 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsTaskSeedData.cs                                                                |   29 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent2Manage.js                                                       |  114 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/InventoryRuleType.cs                                                                  |   94 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/machineManage.js                                                                   |   32 
 iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/index.vue                                                                    |  275 
 iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/editForm.vue                                                         |  179 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle3.vue                                                                  |  208 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Tabs.cs                                                           |  121 
 iWare_RawMaterialWarehouse_Web/src/components/PageHeader/PageHeader.vue                                                                  |  209 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeBindDatabaseAttribute.cs                                   |   23 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Time.cs                                                           |   53 
 iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/infoBlock.vue                                                                |  105 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent3.cs                                                            |   56 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsWarehouseEntranceManage.js                                                        |  114 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.vm                                                       |  294 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js                                        |    7 
 iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/infoBlock.vue                                               |  140 
 iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/addForm.vue                                                       |  125 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsAreaEnum.cs                                                                    |   99 
 iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifyPoints.vue                                                         |  259 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.js                                            | 5026 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/excelForm.vue                                                                 |  195 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderOutput.cs               |  204 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left12.vue                                                                   |   87 
 DBScript/01_DDL/01_DDL_TABLE.sql                                                                                                         |    1 
 iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/searchBox.vue                                                                |  109 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeUserService.cs                                       |   86 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderOutput.cs                       |  231 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockDto.cs                           |  102 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderInput.cs                        |  346 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSortOrderManage.js                                                                |  114 
 iWare_RawMaterialWarehouse_Web/src/views/system/file/index.vue                                                                           |  266 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Button.cs                                                         |   48 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js                                 |    7 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/index.vue                                                              |  304 
 iWare_RawMaterialWarehouse_Web/public/logo.png                                                                                           |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/VAccessDetails.cs                                                          |  104 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent5Manage.js                                                       |  114 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage2.js                                                               |   40 
 iWare_RawMaterialWarehouse_Web/src/layouts/BasicLayout.vue                                                                               |  203 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Properties/launchSettings.json                                                        |   44 
 iWare_RawMaterialWarehouse_Web/src/layouts/RouteView.vue                                                                                 |   54 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/infoBlock.vue                                                            |  122 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysMenu.cs                                                                   |  142 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.xml                                                           | 25607 ++++
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerDto.cs                                  |  102 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Map/WmsSortOrderMapper.cs                             |   18 
 iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/searchBox.vue                                                              |  109 
 iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/SearchForm.vue                                                            |  136 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/rankingBoard.vue                                                             |   81 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableOutput.cs                                           |   38 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/excelForm.vue                                                         |  181 
 iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.css                                                                        |    1 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionStatus.cs                                                         |   19 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/LesDeviceWaringService.cs                          |  253 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.vm                                                         |  574 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/CurrentUserInfo.cs                                              |   32 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/ceManage.js                                                                          |   66 
 iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/nomalWorkFlow.vue                                                    |  166 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/excelForm.vue                                                              |  180 
 iWare_RawMaterialWarehouse_Web/src/views/main/StationView/DetailDrawer.vue                                                               |  183 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/index.vue                                                             |  200 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderTypeManage.js                                                                |   53 
 iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/editForm.vue                                                          |  159 
 iWare_RawMaterialWarehouse_Web/Dockerfile                                                                                                |    3 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/addForm.vue                                                                       |  161 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/editForm.vue                                                               |  124 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapCenterPoint.png                                                       |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/loading.html                                                          |    1 
 iWare_RawMaterialWarehouse_Web/src/components/IconSelector/README.md                                                                     |   47 
 iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/index.vue                                                                 |  181 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/index.vue                                                                    |  119 
 iWare_RawMaterialWarehouse_Web/src/views/system/index/welcome.vue                                                                        |   79 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/BindEntranceService.cs                                  |  518 
 iWare_RawMaterialWarehouse_Web/public/favicon.ico                                                                                        |    0 
 iWare_RawMaterialWarehouse_Web/src/views/system/notice/addForm.vue                                                                       |  228 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WarehouseEntranceEnum.cs                                                          |   22 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/Front_CodeGenerate.cs                                    |  122 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/DefaultDbContext.cs                                             |  307 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css                            |    7 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/IWmsSortOrderService.cs                               |   24 
 iWare_RawMaterialWarehouse_Web/src/utils/checkVersion.js                                                                                 |   40 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/ISysFileService.cs                                              |   90 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage1.js                                                                |  130 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-vendors.c9111d8d.js.gz                                               |    0 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css                                | 4866 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.css                                          | 11221 +
 iWare_RawMaterialWarehouse_Web/src/components/Charts/Radar.vue                                                                           |   68 
 iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/addForm.vue                                                    |   92 
 iWare_RawMaterialWarehouse_Web/src/utils/helper/permission.js                                                                            |   51 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsSortOrder.cs                                                               |  109 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/addForm.vue                                                                |  126 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeStatus.cs                                                                       |   34 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js                                     | 6780 +
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpSeedData.cs                                                                 |   38 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/TransferOrderManage.js                                                               |  154 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAreaManage.js                                                                     |  123 
 iWare_RawMaterialWarehouse_Web/src/views/system/menu/index.vue                                                                           |  267 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Map/WmsReceiptOrderMapper.cs                       |   18 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnPageResult.cs                                                                       |   11 
 iWare_RawMaterialWarehouse_Web/src/components/TextArea/style.less                                                                        |   12 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesPackState.cs                                                                   |   27 
 iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/editForm.vue                                                                  |  105 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/index.vue                                                             |  339 
 iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/StandardFormRow.vue                                                        |  122 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/QueryableExstenstions.cs                                                         |   48 
 iWare_RawMaterialWarehouse_Web/src/components/_util/util.js                                                                              |   46 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/editForm.vue                                                             |  383 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppOutput.cs                                                 |   33 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserRoleService.cs                                          |   45 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumEntity.cs                                                                         |   23 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.vm                                                      |  384 
 iWare_RawMaterialWarehouse_Web/src/components/tools/Breadcrumb.vue                                                                       |   51 
 iWare_RawMaterialWarehouse_Web/src/mock/util.js                                                                                          |   38 
 iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/index.vue                                                                  |  308 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataOpType.cs                                                                         |   78 
 iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/addForm.vue                                                                    |  100 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialStockSeedData.cs                                                       |   29 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/WmsOrderService.cs                                      |  328 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysPosSeedData.cs                                                                 |   28 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.cshtml                                                   |  284 
 iWare_RawMaterialWarehouse_Web/config/plugin.config.js                                                                                   |   46 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/QueryTypeEnum.cs                                                                      |   82 
 iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/addForm.vue                                                                   |  206 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateInput.cs                           |  264 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/smsManage.js                                                                       |   43 
 iWare_RawMaterialWarehouse_Web/src/components/UserMenu.vue                                                                               |  239 
 iWare_RawMaterialWarehouse_Web/src/utils/axios.js                                                                                        |   35 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserOutput.cs                                               |  109 
 iWare_RawMaterialWarehouse_Web/.prettierrc                                                                                               |    5 
 iWare_RawMaterialWarehouse_Web/src/components/Table/README.md                                                                            |  338 
 iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/editForm.vue                                                                 |  148 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaOutput.cs                                         |   50 
 iWare_RawMaterialWarehouse_Web/.env.production                                                                                           |    3 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/editForm.vue                                                         |  140 
 iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/SearchForm.vue                                                         |  153 
 iWare_RawMaterialWarehouse_Web/src/components/UpDownSort.vue                                                                             |   58 
 iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/index.js                                                             |    5 
 iWare_RawMaterialWarehouse_Web/src/components/tools/TwoStepCaptcha.vue                                                                   |   88 
 iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/FileUrl_Code.cs                                                    |   17 
 iWare_RawMaterialWarehouse_Web/src/api/modular/system/posManage.js                                                                       |   71 
 iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesFoamingPackWarehouseManage.js                                                     |  114 
 iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/scrollBoard.vue                                                              |   48 
 iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/excelForm.vue                                                        |  181 
 1,427 files changed, 346,904 insertions(+), 0 deletions(-)

diff --git a/DBScript/01_DDL/01_DDL_TABLE.sql b/DBScript/01_DDL/01_DDL_TABLE.sql
new file mode 100644
index 0000000..2549633
--- /dev/null
+++ b/DBScript/01_DDL/01_DDL_TABLE.sql
@@ -0,0 +1 @@
+/* 杩欓噷鍐欏垱寤烘暟鎹簱鐨勮剼鏈� */
\ No newline at end of file
diff --git a/DBScript/01_DDL/02_DDL_TABLE_Edit.sql b/DBScript/01_DDL/02_DDL_TABLE_Edit.sql
new file mode 100644
index 0000000..4a42b33
--- /dev/null
+++ b/DBScript/01_DDL/02_DDL_TABLE_Edit.sql
@@ -0,0 +1,4 @@
+/* 杩欓噷鍐欏垱寤烘垨淇敼琛ㄥ瓧娈电殑鑴氭湰 */
+
+ ALTER TABLE sys_code_gen_config ADD   ShowTitleMinWidth     nvarchar(50)  -- 澧炲姞 椤甸潰鍒楁樉绀烘渶灏忓搴︺�怑ditby liuwq,2024-04-18銆�
+  ALTER TABLE sys_code_gen_config ADD   WhetherUnionKey     nvarchar(5)  -- 澧炲姞 鏄惁鏄仈鍚堜富閿�怑ditby liuwq,2024-04-18銆�
\ No newline at end of file
diff --git a/DBScript/01_DDL/03_DDL_VIEW.sql b/DBScript/01_DDL/03_DDL_VIEW.sql
new file mode 100644
index 0000000..2a38372
--- /dev/null
+++ b/DBScript/01_DDL/03_DDL_VIEW.sql
@@ -0,0 +1 @@
+/* 杩欓噷鍐欐暣涓郴缁熺殑瑙嗗浘鑴氭湰 */
\ No newline at end of file
diff --git a/DBScript/01_DDL/04_DDL_INDEX.sql b/DBScript/01_DDL/04_DDL_INDEX.sql
new file mode 100644
index 0000000..707a509
--- /dev/null
+++ b/DBScript/01_DDL/04_DDL_INDEX.sql
@@ -0,0 +1 @@
+/* 这里写整个系统的索引脚本 */
\ No newline at end of file
diff --git a/DBScript/02_DML/01_InitData.sql b/DBScript/02_DML/01_InitData.sql
new file mode 100644
index 0000000..c1f41a9
--- /dev/null
+++ b/DBScript/02_DML/01_InitData.sql
@@ -0,0 +1 @@
+/* 杩欓噷鍐� 鍒濆鍖栫殑鏁版嵁 */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/.browserslistrc b/iWare_RawMaterialWarehouse_Web/.browserslistrc
new file mode 100644
index 0000000..8f96043
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/.browserslistrc
@@ -0,0 +1,3 @@
+> 1%
+last 2 versions
+not ie <= 10
diff --git a/iWare_RawMaterialWarehouse_Web/.editorconfig b/iWare_RawMaterialWarehouse_Web/.editorconfig
new file mode 100644
index 0000000..6f77dff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/.editorconfig
@@ -0,0 +1,39 @@
+[*]
+charset=utf-8
+end_of_line=lf
+insert_final_newline=false
+indent_style=space
+indent_size=2
+
+[{*.ng,*.sht,*.html,*.shtm,*.shtml,*.htm}]
+indent_style=space
+indent_size=2
+
+[{*.jhm,*.xslt,*.xul,*.rng,*.xsl,*.xsd,*.ant,*.tld,*.fxml,*.jrxml,*.xml,*.jnlp,*.wsdl}]
+indent_style=space
+indent_size=2
+
+[{.babelrc,.stylelintrc,jest.config,.eslintrc,.prettierrc,*.json,*.jsb3,*.jsb2,*.bowerrc}]
+indent_style=space
+indent_size=2
+
+[*.svg]
+indent_style=space
+indent_size=2
+
+[*.js.map]
+indent_style=space
+indent_size=2
+
+[*.less]
+indent_style=space
+indent_size=2
+
+[*.vue]
+indent_style=space
+indent_size=2
+
+[{.analysis_options,*.yml,*.yaml}]
+indent_style=space
+indent_size=2
+
diff --git a/iWare_RawMaterialWarehouse_Web/.env.production b/iWare_RawMaterialWarehouse_Web/.env.production
new file mode 100644
index 0000000..f603bd6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/.env.production
@@ -0,0 +1,3 @@
+#166鐜
+VUE_APP_API_BASE_URL=http://10.10.40.166:5556
+VUE_APP_SOCKET_BASE_URL=ws://10.10.40.166:5556
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/.eslintrc.js b/iWare_RawMaterialWarehouse_Web/.eslintrc.js
new file mode 100644
index 0000000..e4f4dae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/.eslintrc.js
@@ -0,0 +1,77 @@
+module.exports = {
+  root: true,
+  env: {
+    node: true
+  },
+  'extends': [
+    'plugin:vue/strongly-recommended',
+    '@vue/standard'
+  ],
+  rules: {
+    'no-console': 'off',
+    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
+    'generator-star-spacing': 'off',
+    'no-mixed-operators': 0,
+    'vue/max-attributes-per-line': [
+      2,
+      {
+        'singleline': 5,
+        'multiline': {
+          'max': 1,
+          'allowFirstLine': false
+        }
+      }
+    ],
+    'vue/attribute-hyphenation': 0,
+    'vue/html-self-closing': 0,
+    'vue/component-name-in-template-casing': 0,
+    'vue/html-closing-bracket-spacing': 0,
+    'vue/singleline-html-element-content-newline': 0,
+    'vue/no-unused-components': 0,
+    'vue/multiline-html-element-content-newline': 0,
+    'vue/no-use-v-if-with-v-for': 0,
+    'vue/html-closing-bracket-newline': 0,
+    'vue/no-parsing-error': 0,
+    'no-tabs': 0,
+    'quotes': [
+      2,
+      'single',
+      {
+        'avoidEscape': true,
+        'allowTemplateLiterals': true
+      }
+    ],
+    'semi': [
+      2,
+      'never',
+      {
+        'beforeStatementContinuationChars': 'never'
+      }
+    ],
+    'no-delete-var': 2,
+    'prefer-const': [
+      2,
+      {
+        'ignoreReadBeforeAssign': false
+      }
+    ],
+    'template-curly-spacing': 'off',
+    'indent': 'off',
+    "space-before-function-paren": 0,
+    'no-multi-spaces': 2, //涓嶈兘鐢ㄥ浣欑殑绌烘牸
+  },
+  parserOptions: {
+    parser: 'babel-eslint'
+  },
+  overrides: [
+    {
+      files: [
+        '**/__tests__/*.{j,t}s?(x)',
+        '**/tests/unit/**/*.spec.{j,t}s?(x)'
+      ],
+      env: {
+        jest: true
+      }
+    }
+  ]
+}
diff --git a/iWare_RawMaterialWarehouse_Web/.gitignore b/iWare_RawMaterialWarehouse_Web/.gitignore
new file mode 100644
index 0000000..9aa7d09
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/.gitignore
@@ -0,0 +1,6 @@
+node_modules/
+dist/
+.env
+.env.development
+.env.preview
+package-lock.json
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/.prettierrc b/iWare_RawMaterialWarehouse_Web/.prettierrc
new file mode 100644
index 0000000..cbe842a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/.prettierrc
@@ -0,0 +1,5 @@
+{
+  "printWidth": 120,
+  "semi": false,
+  "singleQuote": true
+}
diff --git a/iWare_RawMaterialWarehouse_Web/.travis.yml b/iWare_RawMaterialWarehouse_Web/.travis.yml
new file mode 100644
index 0000000..a08bfcb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/.travis.yml
@@ -0,0 +1,7 @@
+language: node_js
+node_js:
+  - 10.15.0
+cache: yarn
+script:
+  - yarn
+  - yarn run lint --no-fix && yarn run build
diff --git a/iWare_RawMaterialWarehouse_Web/Dockerfile b/iWare_RawMaterialWarehouse_Web/Dockerfile
new file mode 100644
index 0000000..cc66541
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/Dockerfile
@@ -0,0 +1,3 @@
+FROM nginx
+
+COPY . /usr/share/nginx/html
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/LICENSE b/iWare_RawMaterialWarehouse_Web/LICENSE
new file mode 100644
index 0000000..66eef0b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Anan Yang
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git "a/iWare_RawMaterialWarehouse_Web/WMS\345\237\272\345\207\206\347\211\210\345\211\215\347\253\257\346\226\207\346\241\243.docx" "b/iWare_RawMaterialWarehouse_Web/WMS\345\237\272\345\207\206\347\211\210\345\211\215\347\253\257\346\226\207\346\241\243.docx"
new file mode 100644
index 0000000..021d398
--- /dev/null
+++ "b/iWare_RawMaterialWarehouse_Web/WMS\345\237\272\345\207\206\347\211\210\345\211\215\347\253\257\346\226\207\346\241\243.docx"
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/babel.config.js b/iWare_RawMaterialWarehouse_Web/babel.config.js
new file mode 100644
index 0000000..b6c4717
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/babel.config.js
@@ -0,0 +1,28 @@
+const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV)
+
+const plugins = []
+if (IS_PROD) {
+  plugins.push('transform-remove-console')
+}
+
+// lazy load ant-design-vue
+// if your use import on Demand, Use this code
+plugins.push(['import', {
+  'libraryName': 'ant-design-vue',
+  'libraryDirectory': 'es',
+  'style': true // `style: true` 浼氬姞杞� less 鏂囦欢
+}])
+
+module.exports = {
+  presets: [
+    [
+      '@babel/preset-env',
+      {
+        'useBuiltIns': 'entry',
+        'corejs': 3
+      }
+    ],
+    '@vue/cli-plugin-babel/preset'
+  ],
+  plugins
+}
diff --git a/iWare_RawMaterialWarehouse_Web/config/plugin.config.js b/iWare_RawMaterialWarehouse_Web/config/plugin.config.js
new file mode 100644
index 0000000..af8159a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/config/plugin.config.js
@@ -0,0 +1,46 @@
+const ThemeColorReplacer = require('webpack-theme-color-replacer')
+const generate = require('@ant-design/colors/lib/generate').default
+
+const getAntdSerials = (color) => {
+  // 娣″寲锛堝嵆less鐨則int锛�
+  const lightens = new Array(9).fill().map((t, i) => {
+    return ThemeColorReplacer.varyColor.lighten(color, i / 10)
+  })
+  const colorPalettes = generate(color)
+  const rgb = ThemeColorReplacer.varyColor.toNum3(color.replace('#', '')).join(',')
+  return lightens.concat(colorPalettes).concat(rgb)
+}
+
+const themePluginOption = {
+  fileName: 'css/theme-colors-[contenthash:8].css',
+  matchColors: getAntdSerials('#FA541C'), // 涓昏壊绯诲垪
+  // 鏀瑰彉鏍峰紡閫夋嫨鍣紝瑙e喅鏍峰紡瑕嗙洊闂
+  changeSelector (selector) {
+    switch (selector) {
+      case '.ant-calendar-today .ant-calendar-date':
+        return ':not(.ant-calendar-selected-date):not(.ant-calendar-selected-day)' + selector
+      case '.ant-btn:focus,.ant-btn:hover':
+        return '.ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger)'
+      case '.ant-btn.active,.ant-btn:active':
+        return '.ant-btn.active:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:active:not(.ant-btn-primary):not(.ant-btn-danger)'
+      case '.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon':
+      case '.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon':
+        return ':not(.ant-steps-item-process)' + selector
+      case '.ant-menu-horizontal>.ant-menu-item-active,.ant-menu-horizontal>.ant-menu-item-open,.ant-menu-horizontal>.ant-menu-item-selected,.ant-menu-horizontal>.ant-menu-item:hover,.ant-menu-horizontal>.ant-menu-submenu-active,.ant-menu-horizontal>.ant-menu-submenu-open,.ant-menu-horizontal>.ant-menu-submenu-selected,.ant-menu-horizontal>.ant-menu-submenu:hover':
+      case '.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal > .ant-menu-submenu-selected,.ant-menu-horizontal > .ant-menu-submenu:hover':
+        return '.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover'
+      case '.ant-menu-horizontal > .ant-menu-item-selected > a':
+      case '.ant-menu-horizontal>.ant-menu-item-selected>a':
+        return '.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item-selected > a'
+      case '.ant-menu-horizontal > .ant-menu-item > a:hover':
+      case '.ant-menu-horizontal>.ant-menu-item>a:hover':
+        return '.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item > a:hover'
+      default :
+        return selector
+    }
+  }
+}
+
+const createThemeColorReplacerPlugin = () => new ThemeColorReplacer(themePluginOption)
+
+module.exports = createThemeColorReplacerPlugin
diff --git a/iWare_RawMaterialWarehouse_Web/docker/docker-compose.yml b/iWare_RawMaterialWarehouse_Web/docker/docker-compose.yml
new file mode 100644
index 0000000..1136a87
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/docker/docker-compose.yml
@@ -0,0 +1,16 @@
+version: '3.4'
+
+services:
+  nginx:
+    build:
+      context: ../
+      dockerfile: ./docker/nginx/Dockerfile
+    image: admin_net_web:1.2
+    ports:
+      - 81:80
+    restart: "always"
+    volumes:
+      - node_modules:/build/node_modules:rw
+    # network_mode: host #瀹夸富缃戠粶锛屼笌瀹夸富鏈哄叡浜綉缁滐紝瀹夊叏鎬т笉浣筹紝鏈湴寮�鍙戜娇鐢紝娣︼紝涓嶆敮鎸亀indows锛屼粎鏀寔Linux
+volumes:
+  node_modules:
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/docker/nginx/Dockerfile b/iWare_RawMaterialWarehouse_Web/docker/nginx/Dockerfile
new file mode 100644
index 0000000..2badc04
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/docker/nginx/Dockerfile
@@ -0,0 +1,32 @@
+# build
+FROM node:latest AS builder
+
+# 鍒囨崲缂栬瘧鐩綍
+WORKDIR /build
+COPY ./ ./
+# 缂栬瘧椤圭洰 娴嬭瘯
+RUN yarn config set registry https://registry.npm.taobao.org/ \
+  && yarn install \
+  && yarn run build:development
+
+# 缂栬瘧椤圭洰 姝e紡
+#RUN yarn config set registry https://registry.npm.taobao.org/ \
+#  && yarn install \
+#  && yarn run build
+
+# web
+FROM nginx:alpine
+
+# 鏃跺尯
+ENV TZ=Asia/Shanghai
+RUN echo "http://mirrors.aliyun.com/alpine/v3.4/main/" > /etc/apk/repositories \
+  && apk --no-cache add tzdata zeromq \
+  && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
+  && echo '$TZ' > /etc/timezone
+
+COPY ./docker/nginx/logs /var/log/nginx
+COPY ./docker/nginx/vhost /etc/nginx/conf.d/
+COPY ./docker/nginx/nginx.conf /etc/nginx/nginx.conf
+
+# 鎷疯礉椤圭洰
+COPY --from=builder /build/dist/ /var/www/html
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/docker/nginx/nginx.conf b/iWare_RawMaterialWarehouse_Web/docker/nginx/nginx.conf
new file mode 100644
index 0000000..5f2842e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/docker/nginx/nginx.conf
@@ -0,0 +1,21 @@
+user nginx;
+worker_processes  1;
+pid /var/run/nginx.pid;
+error_log /var/log/nginx/nginx.error.log warn;
+events {
+    worker_connections  1024;
+}
+http {
+    include /etc/nginx/mime.types;
+    default_type application/octet-stream;
+    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
+                     '$status $body_bytes_sent "$http_referer" '
+                     '"$http_user_agent" "$http_x_forwarded_for"';
+    access_log /dev/null;
+    #access_log  /var/log/nginx/nginx.access.log  main;
+    sendfile on;
+    #tcp_nopush on;
+    keepalive_timeout 65;
+    #gzip on;
+    include /etc/nginx/conf.d/*.conf;
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/docker/nginx/vhost/default.conf b/iWare_RawMaterialWarehouse_Web/docker/nginx/vhost/default.conf
new file mode 100644
index 0000000..5ca558b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/docker/nginx/vhost/default.conf
@@ -0,0 +1,30 @@
+server {
+	listen       80;
+	server_name  localhost;
+	root   /var/www/html;
+	index  index.php index.html index.htm;
+	access_log /dev/null;
+    error_log  /var/log/nginx/default.error.log  warn;
+
+	# redirect server error pages to the static page /50x.html
+	#
+	#error_page   500 502 503 504  /50x.html;
+
+  location / {
+    root /var/www/html;
+    add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
+    try_files $uri $uri/ /index.html;
+  }
+
+
+  location /api {
+    #濡傛灉鏈嶅姟鍣ㄨ鑾峰彇瀹㈡埛绔湡瀹濱P锛屽彲浠ョ敤涓嬩笁鍙ヨ缃富鏈哄ご鍜屽鎴风鐪熷疄鍦板潃
+    proxy_set_header Host $http_host;
+    proxy_set_header  X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    rewrite ^/api/(.*)$ /$1 break;  #閲嶅啓
+    proxy_pass http://host.docker.internal:5566; # docker鍐呰闂涓绘満锛坵in鎴杕ac锛�----娉ㄦ剰锛氬涓绘満闇�鍦╤osts鏂囦欢涓鍔犱竴鏉�  host.docker.internal  127.0.0.1
+    # proxy_pass http://host.docker.internal:5566; # 鐢熶骇鐜鏀规垚鐪熷疄鍚庣鍦板潃
+  }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/jest.config.js b/iWare_RawMaterialWarehouse_Web/jest.config.js
new file mode 100644
index 0000000..29fee32
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/jest.config.js
@@ -0,0 +1,23 @@
+module.exports = {
+  moduleFileExtensions: [
+    'js',
+    'jsx',
+    'json',
+    'vue'
+  ],
+  transform: {
+    '^.+\\.vue$': 'vue-jest',
+    '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
+    '^.+\\.jsx?$': 'babel-jest'
+  },
+  moduleNameMapper: {
+    '^@/(.*)$': '<rootDir>/src/$1'
+  },
+  snapshotSerializers: [
+    'jest-serializer-vue'
+  ],
+  testMatch: [
+    '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
+  ],
+  testURL: 'http://localhost/'
+}
diff --git a/iWare_RawMaterialWarehouse_Web/jsconfig.json b/iWare_RawMaterialWarehouse_Web/jsconfig.json
new file mode 100644
index 0000000..1bd0da4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/jsconfig.json
@@ -0,0 +1,11 @@
+{
+  "compilerOptions": {
+    "target": "es6",
+    "baseUrl": ".",
+    "paths": {
+      "@/*": ["src/*"]
+    }
+  },
+  "exclude": ["node_modules", "dist"],
+  "include": ["src/**/*"]
+}
diff --git a/iWare_RawMaterialWarehouse_Web/package.json b/iWare_RawMaterialWarehouse_Web/package.json
new file mode 100644
index 0000000..f923aab
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/package.json
@@ -0,0 +1,101 @@
+{
+  "name": "vue-antd-pro",
+  "version": "3.0.0",
+  "private": true,
+  "scripts": {
+    "serve": "vue-cli-service serve  --open",
+    "build": "vue-cli-service build",
+    "servenew": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service serve",
+    "buildnew": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service build",
+    "test:unit": "vue-cli-service test:unit",
+    "build:preview": "vue-cli-service build --mode preview",
+    "postinstall": "opencollective-postinstall"
+  },
+  "dependencies": {
+    "@antv/data-set": "^0.10.2",
+    "@jiaminghi/data-view": "^2.10.0",
+    "@microsoft/signalr": "^5.0.5",
+    "ant-design-vue": "1.7.8",
+    "axios": "^0.19.0",
+    "babel-polyfill": "^6.26.0",
+    "clipboard": "^2.0.6",
+    "compression-webpack-plugin": "5.0.1",
+    "core-js": "^3.1.2",
+    "crypto-js": "^4.0.0",
+    "default-passive-events": "^1.0.10",
+    "echarts": "^5.4.0",
+    "enquire.js": "^2.1.6",
+    "font-awesome": "^4.7.0",
+    "jquery": "^3.5.1",
+    "jsbarcode": "^3.11.3",
+    "jsplumb": "^2.15.6",
+    "k-form-design": "^3.8.11",
+    "leaflet": "^1.7.1",
+    "leaflet.pm": "^2.2.0",
+    "linq": "^3.2.3",
+    "lodash.clonedeep": "^4.5.0",
+    "lodash.get": "^4.4.2",
+    "lodash.pick": "^4.4.0",
+    "md5": "^2.2.1",
+    "mockjs2": "1.0.8",
+    "moment": "^2.24.0",
+    "nprogress": "^0.2.0",
+    "print-js": "^1.0.63",
+    "raphael": "^2.3.0",
+    "screenfull": "^5.1.0",
+    "viser-vue": "^2.4.6",
+    "vue": "^2.6.10",
+    "vue-clipboard2": "^0.2.1",
+    "vue-codemirror-lite": "^1.0.4",
+    "vue-cropper": "0.4.9",
+    "vue-ls": "^3.2.1",
+    "vue-quill-editor": "^3.0.6",
+    "vue-router": "^3.1.2",
+    "vue-svg-component-runtime": "^1.0.1",
+    "vue2-leaflet": "^2.7.0",
+    "vuedraggable": "^2.23.2",
+    "vuex": "^3.1.1",
+    "wangeditor": "^3.1.1",
+    "xlsx": "0.14.1"
+  },
+  "devDependencies": {
+    "@ant-design/colors": "^3.2.1",
+    "@vue/cli-plugin-babel": "^4.0.4",
+    "@vue/cli-plugin-eslint": "^4.0.4",
+    "@vue/cli-plugin-router": "^4.0.4",
+    "@vue/cli-plugin-unit-jest": "^4.0.4",
+    "@vue/cli-plugin-vuex": "^4.0.4",
+    "@vue/cli-service": "^4.0.4",
+    "@vue/eslint-config-prettier": "^5.0.0",
+    "@vue/eslint-config-standard": "^4.0.0",
+    "@vue/test-utils": "^1.0.0-beta.29",
+    "babel-eslint": "^10.0.1",
+    "babel-plugin-import": "^1.13.0",
+    "babel-plugin-transform-remove-console": "^6.9.4",
+    "eslint": "^6.8.0",
+    "eslint-plugin-html": "^5.0.0",
+    "eslint-plugin-prettier": "^3.1.0",
+    "eslint-plugin-vue": "^5.2.3",
+    "less": "^3.0.4",
+    "less-loader": "^5.0.0",
+    "opencollective": "^1.0.3",
+    "opencollective-postinstall": "^2.0.2",
+    "prettier": "^1.18.2",
+    "vue-svg-icon-loader": "^2.1.1",
+    "vue-template-compiler": "^2.6.10",
+    "webpack": "^4.46.0",
+    "webpack-theme-color-replacer": "1.3.18"
+  },
+  "collective": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/ant-design-pro-vue"
+  },
+  "main": ".eslintrc.js",
+  "directories": {
+    "test": "tests"
+  },
+  "keywords": [],
+  "author": "",
+  "license": "ISC",
+  "description": ""
+}
diff --git a/iWare_RawMaterialWarehouse_Web/postcss.config.js b/iWare_RawMaterialWarehouse_Web/postcss.config.js
new file mode 100644
index 0000000..961986e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/postcss.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+  plugins: {
+    autoprefixer: {}
+  }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/public/config.js b/iWare_RawMaterialWarehouse_Web/public/config.js
new file mode 100644
index 0000000..6737c88
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/config.js
@@ -0,0 +1,5 @@
+window._CONFIG = {
+    baseUrl: 'http://localhost:8090', //璋冭瘯鍦板潃
+    // baseUrlScreen: 'http://10.10.40.166:5588', //鐪嬫澘澶у睆 - 涓浗鍦板浘杩欎竴鐗�
+  }
+  
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/public/favicon.ico b/iWare_RawMaterialWarehouse_Web/public/favicon.ico
new file mode 100644
index 0000000..da49afa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/favicon.ico
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/public/index.html b/iWare_RawMaterialWarehouse_Web/public/index.html
new file mode 100644
index 0000000..5c6df91
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/index.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html lang="zh-cmn-Hans">
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width,initial-scale=1.0">
+  <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+  <title>鎴戠殑寮�鍙戞ā鏉�</title>
+  <script src="<%= BASE_URL %>config.js">
+  </script>
+  <style>.first-loading-wrp{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:420px;height:100%}.first-loading-wrp>h1{font-size:128px}.first-loading-wrp .loading-wrp{padding:98px;display:flex;justify-content:center;align-items:center}.dot{animation:antRotate 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;font-size:32px;width:32px;height:32px;box-sizing:border-box}.dot i{width:14px;height:14px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.dot i:nth-child(1){top:0;left:0}.dot i:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.dot i:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.dot i:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove{to{opacity:1}}@-webkit-keyframes antSpinMove{to{opacity:1}}</style>
+  <!-- require cdn assets css -->
+  <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
+  <link rel="stylesheet" href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" />
+  <% } %>
+  <script>
+    var version = 20240312;//杩欓噷璁剧疆鎮ㄧ殑鐗堟湰鍙�
+  </script>
+</head>
+<body>
+<noscript>
+  <strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
+</noscript>
+<div id="app">
+  <div class="first-loading-wrp">
+    <!-- <h1>Admin.NET</h1> -->
+    <div class="loading-wrp">
+      <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
+    </div>
+    <div style="display: flex; justify-content: center; align-items: center;">鎴戠殑寮�鍙戞ā鏉�</div>
+  </div>
+</div>
+<!-- require cdn assets js -->
+<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
+<script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
+<% } %>
+<!-- built files will be auto injected --> 
+</body>
+</html>
diff --git a/iWare_RawMaterialWarehouse_Web/public/loading/loading.css b/iWare_RawMaterialWarehouse_Web/public/loading/loading.css
new file mode 100644
index 0000000..a899eac
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/loading/loading.css
@@ -0,0 +1 @@
+#preloadingAnimation{position:fixed;left:0;top:0;height:100%;width:100%;background:#ffffff;user-select:none;z-index: 9999;overflow: hidden}.lds-roller{display:inline-block;position:relative;left:50%;top:50%;transform:translate(-50%,-50%);width:64px;height:64px;}.lds-roller div{animation:lds-roller 1.2s cubic-bezier(0.5,0,0.5,1) infinite;transform-origin:32px 32px;}.lds-roller div:after{content:" ";display:block;position:absolute;width:6px;height:6px;border-radius:50%;background:#13c2c2;margin:-3px 0 0 -3px;}.lds-roller div:nth-child(1){animation-delay:-0.036s;}.lds-roller div:nth-child(1):after{top:50px;left:50px;}.lds-roller div:nth-child(2){animation-delay:-0.072s;}.lds-roller div:nth-child(2):after{top:54px;left:45px;}.lds-roller div:nth-child(3){animation-delay:-0.108s;}.lds-roller div:nth-child(3):after{top:57px;left:39px;}.lds-roller div:nth-child(4){animation-delay:-0.144s;}.lds-roller div:nth-child(4):after{top:58px;left:32px;}.lds-roller div:nth-child(5){animation-delay:-0.18s;}.lds-roller div:nth-child(5):after{top:57px;left:25px;}.lds-roller div:nth-child(6){animation-delay:-0.216s;}.lds-roller div:nth-child(6):after{top:54px;left:19px;}.lds-roller div:nth-child(7){animation-delay:-0.252s;}.lds-roller div:nth-child(7):after{top:50px;left:14px;}.lds-roller div:nth-child(8){animation-delay:-0.288s;}.lds-roller div:nth-child(8):after{top:45px;left:10px;}#preloadingAnimation .load-tips{color: #13c2c2;font-size:2rem;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin-top:80px;text-align:center;width:400px;height:64px;}  @keyframes lds-roller{0%{transform:rotate(0deg);} 100%{transform:rotate(360deg);}}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/public/loading/loading.html b/iWare_RawMaterialWarehouse_Web/public/loading/loading.html
new file mode 100644
index 0000000..018c402
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/loading/loading.html
@@ -0,0 +1 @@
+<div id="preloadingAnimation"><div class=lds-roller><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div><div class=load-tips>Loading</div></div>
diff --git a/iWare_RawMaterialWarehouse_Web/public/loading/option2/html_code_segment.html b/iWare_RawMaterialWarehouse_Web/public/loading/option2/html_code_segment.html
new file mode 100644
index 0000000..5c85af3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/loading/option2/html_code_segment.html
@@ -0,0 +1,5 @@
+<div class="preloading-animate">
+  <div class="preloading-wrapper">
+    <svg class="preloading-balls" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="67.802" cy="59.907" r="6" fill="#51CACC"><animate attributeName="cx" values="75;57.72542485937369" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="50;73.77641290737884" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#51CACC;#9DF871" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="46.079" cy="69.992" r="6" fill="#9DF871"><animate attributeName="cx" values="57.72542485937369;29.774575140626318" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="73.77641290737884;64.69463130731182" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#9DF871;#E0FF77" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="29.775" cy="52.449" r="6" fill="#E0FF77"><animate attributeName="cx" values="29.774575140626318;29.774575140626315" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="64.69463130731182;35.30536869268818" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#E0FF77;#DE9DD6" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="41.421" cy="31.521" r="6" fill="#DE9DD6"><animate attributeName="cx" values="29.774575140626315;57.72542485937368" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="35.30536869268818;26.22358709262116" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#DE9DD6;#FF708E" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="64.923" cy="36.13" r="6" fill="#FF708E"><animate attributeName="cx" values="57.72542485937368;75" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="26.22358709262116;49.99999999999999" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#FF708E;#51CACC" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle></svg>
+  </div>
+</div>
diff --git a/iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.css b/iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.css
new file mode 100644
index 0000000..c35cd73
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.css
@@ -0,0 +1 @@
+.preloading-animate{background:#ffffff;width:100%;height:100%;position:fixed;left:0;top:0;z-index:299;}.preloading-animate .preloading-wrapper{position:absolute;width:5rem;height:5rem;left:50%;top:50%;transform:translate(-50%,-50%);}.preloading-animate .preloading-wrapper .preloading-balls{font-size:5rem;}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.svg b/iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.svg
new file mode 100644
index 0000000..7ff7322
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.svg
@@ -0,0 +1 @@
+<svg class="preloading-balls" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="67.802" cy="59.907" r="6" fill="#51CACC"><animate attributeName="cx" values="75;57.72542485937369" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="50;73.77641290737884" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#51CACC;#9DF871" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="46.079" cy="69.992" r="6" fill="#9DF871"><animate attributeName="cx" values="57.72542485937369;29.774575140626318" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="73.77641290737884;64.69463130731182" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#9DF871;#E0FF77" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="29.775" cy="52.449" r="6" fill="#E0FF77"><animate attributeName="cx" values="29.774575140626318;29.774575140626315" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="64.69463130731182;35.30536869268818" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#E0FF77;#DE9DD6" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="41.421" cy="31.521" r="6" fill="#DE9DD6"><animate attributeName="cx" values="29.774575140626315;57.72542485937368" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="35.30536869268818;26.22358709262116" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#DE9DD6;#FF708E" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="64.923" cy="36.13" r="6" fill="#FF708E"><animate attributeName="cx" values="57.72542485937368;75" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="26.22358709262116;49.99999999999999" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#FF708E;#51CACC" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle></svg>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/public/logo.png b/iWare_RawMaterialWarehouse_Web/public/logo.png
new file mode 100644
index 0000000..5a014a8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/logo.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/App.vue b/iWare_RawMaterialWarehouse_Web/src/App.vue
new file mode 100644
index 0000000..2e90026
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/App.vue
@@ -0,0 +1,85 @@
+<template>
+  <a-config-provider :locale="locale">
+    <div id="app" class="app app1">
+      <router-view class="scrollbar"/>
+    </div>
+  </a-config-provider>
+</template>
+
+<script>
+import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
+import { AppDeviceEnquire } from '@/utils/mixin'
+
+export default {
+  mixins: [AppDeviceEnquire],
+  data () {
+    return {
+      locale: zhCN
+    }
+  },
+  mounted () {
+
+  }
+}
+</script>
+<style lang="less">
+  .app {
+    overflow: auto;
+    border  : none;
+  }
+  .scrollbar {
+    margin: 0 auto;
+  }
+  .app1::-webkit-scrollbar {
+    /*婊氬姩鏉℃暣浣撴牱寮�*/
+    width : 8px;  /*楂樺鍒嗗埆瀵瑰簲妯珫婊氬姩鏉$殑灏哄*/
+  }
+  .app1::-webkit-scrollbar-thumb {
+    /*婊氬姩鏉¢噷闈㈠皬鏂瑰潡*/
+    border-radius: 6px;
+    background   : #aaa;
+  }
+  .app1::-webkit-scrollbar-track {
+    /*婊氬姩鏉¢噷闈㈣建閬�*/
+    border-radius: 8px;
+    background   : #FFFFFF;
+  }
+  .weiben-private-drawer {
+    .ant-drawer-wrapper-body{
+      display:flex;
+      flex-direction: column;
+      .ant-drawer-header{
+        flex-shrink: 0;
+      }
+      .ant-drawer-body{
+        padding:0;
+        flex-grow: 1;
+        height:1px;
+      }
+    }
+    .ant-spin-nested-loading,.ant-spin-container{
+      height:100%;
+    }
+  }
+  .ant-modal{
+    &.zero-modal{
+      .ant-modal-body{
+        padding:0;
+      }
+    }
+  }
+  a.disabled{
+    color:#a9a9a9 !important;
+  }
+  .auto-wrap{
+  	word-break:break-all;
+  	word-wrap:break-word; 
+  }
+  .no-wrap,.ellipsis{
+  	white-space:nowrap;
+  }
+  .ellipsis{
+  	overflow:hidden;
+  	text-overflow:ellipsis;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/codeGenerateManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/codeGenerateManage.js
new file mode 100644
index 0000000..cea3503
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/codeGenerateManage.js
@@ -0,0 +1,148 @@
+/**
+ * 浠g爜鐢熸垚
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+export function codeGeneratePage (parameter) {
+  return axios({
+    url: '/codeGenerate/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 澧炲姞
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+export function codeGenerateAdd (parameter) {
+  return axios({
+    url: '/codeGenerate/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+export function codeGenerateEdit (parameter) {
+  return axios({
+    url: '/codeGenerate/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+export function codeGenerateDelete (parameter) {
+  return axios({
+    url: '/codeGenerate/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鏌ヨ褰撳墠鏁版嵁搴撶敤鎴蜂笅鐨勬墍鏈夊簱
+ *
+ * @author fuqiang
+ * @date 2021/10/13 15:00
+ */
+ export function codeGenerateDatabaseList (parameter) {
+  return axios({
+    url: '/codeGenerate/DatabaseList',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏌ヨ褰撳墠鏁版嵁搴撶敤鎴蜂笅鐨勬墍鏈夎〃
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+export function codeGenerateInformationList (parameter) {
+  return axios({
+    url: '/codeGenerate/InformationList',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏍规嵁搴撳悕琛ㄥ悕鑾峰彇鍒�
+ *
+ * @author fuqiang 20211014
+ * @param {*} databaseName 搴撳悕
+ * @param {*} tableName 琛ㄥ悕
+ * @return {*}
+ */
+export function codeGenerateColumnList (databaseName,tableName) {
+  return axios({
+    url: `/codeGenerate/ColumnList/${databaseName}/${tableName}`,
+    method: 'get'
+  })
+}
+
+/**
+ * 鏈湴鐢熸垚
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+export function codeGenerateRunLocal (parameter) {
+  return axios({
+    url: '/codeGenerate/runLocal',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍘嬬缉鍖呮柟寮忎笅杞�
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+export function codeGenerateRunDown (parameter) {
+  return axios({
+    url: '/codeGenerate/runDown',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鍒锋柊閰嶇疆琛�
+ *
+ * @author lanhuxing
+ * @date 2022/05/08 15:00
+ */
+export function codeGenerateRefresh (id) {
+  return axios({
+    url: '/codeGenerate/refresh/' + id,
+    method: 'get'
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/lowCodeManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/lowCodeManage.js
new file mode 100644
index 0000000..44d788a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/lowCodeManage.js
@@ -0,0 +1,105 @@
+/**
+ * 浣庝唬鐮佺鐞�
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍒楄〃
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+export function lowCodePage (parameter) {
+  return axios({
+    url: '/lowcode/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 澧炲姞
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+export function lowCodeAdd (parameter) {
+  return axios({
+    url: '/lowcode/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+export function lowCodeEdit (parameter) {
+  return axios({
+    url: '/lowcode/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+export function lowCodeDelete (parameter) {
+  return axios({
+    url: '/lowcode/del',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缁勪欢杞崲鏁版嵁搴撳瓧娈�
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+export function lowCodeContrast (parameter) {
+  return axios({
+    url: '/lowcode/contrast',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇缁勪欢璇︽儏
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+export function lowCodeInfo (id) {
+  return axios({
+    url: '/lowcode/info/' + id,
+    method: 'get'
+  })
+}
+
+/**
+ * 鐢熸垚ORM妯″瀷
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+export function lowCodeRunLocal (id) {
+  return axios({
+    url: '/lowcode/runLocal/' + id,
+    method: 'get'
+  })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/sysCodeGenerateConfigManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/sysCodeGenerateConfigManage.js
new file mode 100644
index 0000000..e61944c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/sysCodeGenerateConfigManage.js
@@ -0,0 +1,29 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 浠g爜鐢熸垚璇︾粏閰嶇疆鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2021-02-06 20:19:49
+ */
+export function sysCodeGenerateConfigList (parameter) {
+  return axios({
+    url: '/sysCodeGenerateConfig/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 缂栬緫浠g爜鐢熸垚璇︾粏閰嶇疆
+ *
+ * @author yubaoshan
+ * @date 2021-02-06 20:19:49
+ */
+export function sysCodeGenerateConfigEdit (parameter) {
+  return axios({
+    url: '/sysCodeGenerateConfig/edit',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvTaskManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvTaskManage.js
new file mode 100644
index 0000000..ea5f97c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvTaskManage.js
@@ -0,0 +1,31 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ娉℃搏杞﹂棿Agv浠诲姟琛�
+ *
+ * @author yrj
+ */
+export function AgvTaskPage (parameter) {
+  return axios({
+    url: '/assembleagvtask/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 寮哄埗瀹屾垚
+ *
+ * @author yrj 
+ */
+export function AgvTaskForceComplete (id) {
+  return axios({
+    url: '/assembleagvtask/finish',
+    method: 'post',
+    data: {id}
+  })
+}
+
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvWaringManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvWaringManage.js
new file mode 100644
index 0000000..62599c3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvWaringManage.js
@@ -0,0 +1,128 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨAgv鎶ヨ
+ *
+ * @author yc
+ */
+export function AgvWaringPage (parameter) {
+  return axios({
+    url: '/AgvWaring/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * Agv鎶ヨ鍒楄〃
+ *
+ * @author yc
+ */
+export function AgvWaringList (parameter) {
+  return axios({
+    url: '/AgvWaring/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞Agv鎶ヨ
+ *
+ * @author yc
+ */
+export function AgvWaringAdd (parameter) {
+  return axios({
+    url: '/AgvWaring/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫Agv鎶ヨ
+ *
+ * @author yc
+ */
+export function AgvWaringEdit (parameter) {
+  return axios({
+    url: '/AgvWaring/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎Agv鎶ヨ
+ *
+ * @author yc
+ */
+export function AgvWaringDelete (parameter) {
+  return axios({
+    url: '/AgvWaring/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭Agv鎶ヨ鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function AgvWaringToExcel (parameter) {
+  return axios({
+    url: '/AgvWaring/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆Agv鎶ヨ鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function AgvWaringFromExcel (data, parameter) {
+  return axios({
+    url: '/AgvWaring/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇Agv鎶ヨ鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function AgvWaringDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/AgvWaring/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+/**
+ * Agv澶嶄綅
+ *
+ * @author yhh
+ */
+export function AgvWaringReset (id) {
+  return axios({
+    url: '/AgvWaring/PcResetAgvFault',
+    method: 'post',
+    data: {id}
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BaackupWarehouseOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BaackupWarehouseOrderManage.js
new file mode 100644
index 0000000..599bad7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BaackupWarehouseOrderManage.js
@@ -0,0 +1,140 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ澶囧簱璁″垝
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderPage (parameter) {
+  return axios({
+    url: '/BackupWarehouseOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 澶囧簱璁″垝鍒楄〃
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderList (parameter) {
+  return axios({
+    url: '/BackupWarehouseOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞澶囧簱璁″垝
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderAdd (parameter) {
+  return axios({
+    url: '/BackupWarehouseOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫澶囧簱璁″垝
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderEdit (parameter) {
+  return axios({
+    url: '/BackupWarehouseOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎澶囧簱璁″垝
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderDelete (parameter) {
+  return axios({
+    url: '/BackupWarehouseOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭澶囧簱璁″垝鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderToExcel (parameter) {
+  return axios({
+    url: '/BackupWarehouseOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆澶囧簱璁″垝鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/BackupWarehouseOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇澶囧簱璁″垝鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/BackupWarehouseOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function BackupWarehouseOrderSubclass() {
+  return axios({
+    url: '/BackupWarehouseOrder/OrderTypeSubclass',
+    method: 'get'
+  })
+}
+
+
+/**
+ * 澶囧簱璁″垝璇︽儏
+ *
+ * @author yhh
+ */
+export function BackupWarehouseOrderDetailPage (parameter) {
+  return axios({
+    url: '/BackupWarehouseOrder/DetailsPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage.js
new file mode 100644
index 0000000..ecba79f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage.js
@@ -0,0 +1,169 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ缁勭洏鍏ュ簱
+ *
+ * @author liduanping
+ */
+export function BindEntrancePage (parameter) {
+  return axios({
+    url: '/BindEntrance/page',
+    method: 'get',
+    params: parameter
+  })
+}
+ 
+/**
+ * 缁勭洏鍏ュ簱鍒楄〃
+ *
+ * @author liduanping
+ */
+export function BindEntranceList (parameter) {
+  return axios({
+    url: '/BindEntrance/list',
+    method: 'get',
+    params: parameter
+  })
+}
+ 
+/**
+ * 鎵嬪姩鍏ュ簱
+ *
+ * @author yhh
+ */
+export function BindEntranceManualWare (parameter) {
+  return axios({
+    url: '/BindEntrance/ManualWare',
+    method: 'post',
+    data: parameter
+  })
+}
+ 
+/**
+ * 鑷姩鍏ュ簱
+ *
+ * @author yhh
+ */
+export function BindEntranceAutoWare (parameter) {
+  return axios({
+    url: '/BindEntrance/AutoWare',
+    method: 'post',
+    data: parameter
+  })
+}
+ 
+// 缁勭洏 202311
+export function AutoWare (parameter) {
+  return axios({
+    url: '/bindentrance/AutoWare',
+    method: 'post',
+    data: parameter
+  })
+}
+
+// 鑷姩鍏ュ簱 202311
+export function automaticWarehousing (parameter) {
+  return axios({
+    url: '/bindentrance/automaticWarehousing',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+// 浜哄伐鍏ュ簱 202311
+export function manualWarehousing (parameter) {
+  return axios({
+    url: '/bindentrance/manualWarehousing',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+// 鐗╂枡鏌ヨ 202311
+export function MaterialRukuPage (parameter) {
+  return axios({
+    url: '/bindentrance/GetMaterial?MaterialNo='+parameter.MaterialNo,
+    method: 'get',
+    data: parameter
+  })
+}
+
+
+/**
+ * 鑾峰彇鎵樼洏淇℃伅
+ *
+ * @author yhh
+ */
+export function BindEntranceGetContainer (parameter) {
+  return axios({
+    url: '/BindEntrance/GetContainer',
+    method: 'get',
+    params: parameter
+  })
+}
+ 
+/**
+ * 鑾峰彇鐗╂枡淇℃伅
+ *
+ * @author yhh
+ */
+export function BindEntranceGetMaterial (parameter) {
+  return axios({
+    url: '/BindEntrance/GetMaterial',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鎵樼洏淇℃伅-鑾峰彇鐗╂枡
+ *
+ * @author dla
+ */
+export function BindMixtureGetContainer (parameter) {
+  return axios({    
+    url: '/BindEntrance/getcontainer',
+    method: 'get',
+    params: parameter
+  })
+}
+ 
+/**
+ * 缁勭洏鎺ュ彛
+ *
+ * @author yhh
+ */
+export function BindAction (parameter) {
+  return axios({
+    url: '/BindEntrance/BindEntrance',
+    method: 'post',
+    data: parameter
+  })
+}
+ 
+/**
+ * 绉诲簱
+ *
+ * @author yhh
+ */
+export function BindEntranceTransfer (parameter) {
+  return axios({
+    url: '/BindEntrance/StockTransfer',
+    method: 'post',
+    data: parameter
+  })
+}
+ 
+/**
+ * 鑾峰彇鐩爣浠撳簱涓嬫媺鍒楄〃
+ *
+ * @author yhh
+ */
+export function BindEntranceGetSelects () {
+  return axios({
+    url: '/BindEntrance/GetAreaList',
+    method: 'get'
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage2.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage2.js
new file mode 100644
index 0000000..bababb3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage2.js
@@ -0,0 +1,40 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鎵嬪姩鍏ュ簱
+ *
+ * @author yhh
+ */
+export function BindEntranceManualWare (parameter) {
+  return axios({
+    url: '/PlywoodGroupDisk/PlywoodManualWare',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鎵樼洏淇℃伅
+ *
+ * @author yhh
+ */
+export function BindEntranceGetContainer (parameter) {
+  return axios({
+    url: '/PlywoodGroupDisk/PlywoodGetContainer',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 缁勭洏鎺ュ彛
+ *
+ * @author yhh
+ */
+export function BindAction (parameter) {
+  return axios({
+    url: '/PlywoodGroupDisk/PlywoodBindEntrance',
+    method: 'post',
+    data: parameter
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DeliveryWorkManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DeliveryWorkManage.js
new file mode 100644
index 0000000..b0e6b8a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DeliveryWorkManage.js
@@ -0,0 +1,127 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鏀惰揣浣滀笟
+ *
+ * @author yc
+ */
+export function DeliveryWorkPage (parameter) {
+  return axios({
+    url: '/DeliveryWork/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏀惰揣浣滀笟鍒楄〃
+ *
+ * @author yc
+ */
+export function DeliveryWorkList (parameter) {
+  return axios({
+    url: '/DeliveryWork/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鏀惰揣浣滀笟
+ *
+ * @author yc
+ */
+export function DeliveryWorkAdd (parameter) {
+  return axios({
+    url: '/DeliveryWork/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鏀惰揣浣滀笟
+ *
+ * @author yc
+ */
+export function DeliveryWorkEdit (parameter) {
+  return axios({
+    url: '/DeliveryWork/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鏀惰揣浣滀笟
+ *
+ * @author yc
+ */
+export function DeliveryWorkDelete (parameter) {
+  return axios({
+    url: '/DeliveryWork/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭鏀惰揣浣滀笟鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function DeliveryWorkToExcel (parameter) {
+  return axios({
+    url: '/DeliveryWork/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆鏀惰揣浣滀笟鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function DeliveryWorkFromExcel (data, parameter) {
+  return axios({
+    url: '/DeliveryWork/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇鏀惰揣浣滀笟鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function DeliveryWorkDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/DeliveryWork/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+/**
+ * 鍗曟嵁璇︽儏
+ *
+ * @author yhh
+ */
+export function DeliveryWorkDetailPage (parameter) {
+  return axios({
+    url: '/DeliveryWork/DetailsPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOrderManage.js
new file mode 100644
index 0000000..10421d4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOrderManage.js
@@ -0,0 +1,152 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙戣揣鍗�
+ *
+ * @author yc
+ */
+export function DispatchedOrderPage (parameter) {
+  return axios({
+    url: '/DispatchedOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鍙戣揣鍗曞垪琛�
+ *
+ * @author yc
+ */
+export function DispatchedOrderList (parameter) {
+  return axios({
+    url: '/DispatchedOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鍙戣揣鍗�
+ *
+ * @author yc
+ */
+export function DispatchedOrderAdd (parameter) {
+  return axios({
+    url: '/DispatchedOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鍙戣揣鍗�
+ *
+ * @author yc
+ */
+export function DispatchedOrderEdit (parameter) {
+  return axios({
+    url: '/DispatchedOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鍙戣揣鍗�
+ *
+ * @author yc
+ */
+export function DispatchedOrderDelete (parameter) {
+  return axios({
+    url: '/DispatchedOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭鍙戣揣鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function DispatchedOrderToExcel (parameter) {
+  return axios({
+    url: '/DispatchedOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆鍙戣揣鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function DispatchedOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/DispatchedOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇鍙戣揣鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function DispatchedOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/DispatchedOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function DispatchedOrderLargeCategories() {
+  return axios({
+    url: '/DispatchedOrder/OrderTypeLargeCategory',
+    method: 'get'
+  })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function DispatchedOrderSubclass(id) {
+  return axios({
+    url: '/DispatchedOrder/OrderTypeSubclass',
+    method: 'get',
+    params:{id}
+  })
+}
+
+
+/**
+ * 鏌ヨ閲囪喘鍗曡鎯�
+ *
+ * @author yhh
+ */
+export function DispatchedOrderDetailPage (parameter) {
+  return axios({
+    url: '/DispatchedOrder/detailPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOutboundOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOutboundOrderManage.js
new file mode 100644
index 0000000..faf1c90
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOutboundOrderManage.js
@@ -0,0 +1,154 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙戣揣鍑哄簱
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderPage (parameter) {
+  return axios({
+    url: '/DispatchedOutboundOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鍙戣揣鍑哄簱鍒楄〃
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderList (parameter) {
+  return axios({
+    url: '/DispatchedOutboundOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鍙戣揣鍑哄簱
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderAdd (parameter) {
+  return axios({
+    url: '/DispatchedOutboundOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鍙戣揣鍑哄簱
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderEdit (parameter) {
+  return axios({
+    url: '/DispatchedOutboundOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鍙戣揣鍑哄簱
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderDelete (parameter) {
+  return axios({
+    url: '/DispatchedOutboundOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭鍙戣揣鍑哄簱鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderToExcel (parameter) {
+  return axios({
+    url: '/DispatchedOutboundOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆鍙戣揣鍑哄簱鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/DispatchedOutboundOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇鍙戣揣鍑哄簱鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/DispatchedOutboundOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function DispatchedOutboundOrderLargeCategories() {
+  return axios({
+    url: '/DispatchedOutboundOrder/OrderTypeLargeCategory',
+    method: 'get'
+  })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function DispatchedOutboundOrderSubclass(id) {
+  return axios({
+    url: '/DispatchedOutboundOrder/OrderTypeSubclass',
+    method: 'get',
+    params:{id}
+  })
+}
+
+
+/**
+ * 鍙戣揣鍑哄簱鍗曡鎯�
+ *
+ * @author yhh
+ */
+export function DispatchedOutboundOrderDetailPage (parameter) {
+  return axios({
+    url: '/DispatchedOutboundOrder/DetailsPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedWorkManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedWorkManage.js
new file mode 100644
index 0000000..b5f55fb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedWorkManage.js
@@ -0,0 +1,125 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙戣揣浣滀笟
+ *
+ * @author yc
+ */
+export function DispatchedWorkPage (parameter) {
+  return axios({
+    url: '/DispatchedWork/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鍙戣揣浣滀笟鍒楄〃
+ *
+ * @author yc
+ */
+export function DispatchedWorkList (parameter) {
+  return axios({
+    url: '/DispatchedWork/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鍙戣揣浣滀笟
+ *
+ * @author yc
+ */
+export function DispatchedWorkAdd (parameter) {
+  return axios({
+    url: '/DispatchedWork/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鍙戣揣浣滀笟
+ *
+ * @author yc
+ */
+export function DispatchedWorkEdit (parameter) {
+  return axios({
+    url: '/DispatchedWork/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鍙戣揣浣滀笟
+ *
+ * @author yc
+ */
+export function DispatchedWorkDelete (parameter) {
+  return axios({
+    url: '/DispatchedWork/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭鍙戣揣浣滀笟鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function DispatchedWorkToExcel (parameter) {
+  return axios({
+    url: '/DispatchedWork/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆鍙戣揣浣滀笟鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function DispatchedWorkFromExcel (data, parameter) {
+  return axios({
+    url: '/DispatchedWork/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇鍙戣揣浣滀笟鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function DispatchedWorkDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/DispatchedWork/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鍗曟嵁璇︽儏
+ *
+ * @author yhh
+ */
+export function DispatchedWorkDetailPage (parameter) {
+  return axios({
+    url: '/DispatchedWork/DetailsPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage.js
new file mode 100644
index 0000000..b7dc248
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage.js
@@ -0,0 +1,41 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳瓨琛�
+ *
+ * @author liduanping
+ */
+export function WmsMaterialStockPage (parameter) {
+  return axios({
+    url: '/ExWarehouse/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鎵嬪姩鍑哄簱
+ *
+ * @author yhh
+ */
+export function IexwarehouseManual (parameter) {
+  return axios({
+    url: '/ExWarehouse/manualExWarehouse',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑷姩鍑哄簱
+ *
+ * @author yhh
+ */
+export function IexwarehouseAuto (parameter) {
+  return axios({
+    url: '/ExWarehouse/AutoExWarehouse',
+    method: 'post',
+    data: parameter
+  })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage1.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage1.js
new file mode 100644
index 0000000..0d64661
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage1.js
@@ -0,0 +1,130 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙枡
+ *
+ * @author XJF
+ */
+export function CncTakeMaterialsPage (parameter) {
+  return axios({
+    url: '/cnctakematerials/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鍙枡
+ *
+ * @author XJF
+ */
+export function CncTakeMaterialsAdd (data) {
+  return axios({
+    url: '/cnctakematerials/AddCNCTakematerial',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 鍒犻櫎鍙枡
+ *
+ * @author XJF
+ */
+export function CncTakeMaterialsDelete (parameter) {
+  return axios({
+    url: '/LesTakematerials/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鍙枡鍗曞彿
+ *
+ * @author yhh
+ */
+export function GetBillNumber () {
+  return axios({
+    url: '/cnctakematerials/CNCGetTakeMaterialsNo',
+    method: 'get'
+  })
+}
+
+
+/**
+ * 鐗╂枡鏌ヨ
+ *
+ * @author yhh
+ */
+export function QueryMaterials (params) {
+  return axios({
+    url: '/cnctakematerials/CNCMaterialSourcepage',
+    method: 'get',
+    params:params
+  })
+}
+
+/**
+ * 鍙枡鍗曚笅鍙�
+ *
+ * @author yhh
+ */
+export function Distribute (ids) {
+  return axios({
+    url: '/cnctakematerials/CNCBatchTakeMaterials',
+    method: 'post',
+    data:{id:ids}
+  })
+}
+
+/**
+ * 鍙枡鍗曡鎯呬笅鍙�
+ *
+ * @author yhh
+ */
+export function DetailDistribute (id) {
+  return axios({
+    url: '/cnctakematerials/CNCBatchTakeMaterialsDetail',
+    method: 'post',
+    data:{id}
+  })
+}
+
+/**
+ * 鍗曟嵁璇︽儏
+ *
+ * @author yhh
+ */
+export function CncTakeMaterialsDetailPage (params) {
+  return axios({
+    url: '/cnctakematerials/detailPage',
+    method: 'get',
+    params:params
+  })
+}
+
+/**
+ * 鑾峰彇浜х嚎
+ *
+ * @author yhh
+ */
+export function GetLines() {
+  return axios({
+    url: '/cnctakematerials/GetProductionlineList',
+    method: 'get'
+  })
+}
+
+/**
+ * 鏍规嵁浜х嚎鑾峰彇宸ヤ綅
+ *
+ * @author yhh
+ */
+export function GetStations(id) {
+  return axios({
+    url: '/cnctakematerials/GetStationList',
+    method: 'get',
+    params:{id}
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/Files/SysExcelTemplateManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/Files/SysExcelTemplateManage.js
new file mode 100644
index 0000000..0514fa8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/Files/SysExcelTemplateManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨExcel妯℃澘
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplatePage (parameter) {
+  return axios({
+    url: '/SysExcelTemplate/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * Excel妯℃澘鍒楄〃
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplateList (parameter) {
+  return axios({
+    url: '/SysExcelTemplate/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞Excel妯℃澘
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplateAdd (parameter) {
+  return axios({
+    url: '/SysExcelTemplate/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫Excel妯℃澘
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplateEdit (parameter) {
+  return axios({
+    url: '/SysExcelTemplate/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎Excel妯℃澘
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplateDelete (parameter) {
+  return axios({
+    url: '/SysExcelTemplate/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭Excel妯℃澘鐨凟xcel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplateToExcel (parameter) {
+  return axios({
+    url: '/SysExcelTemplate/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆Excel妯℃澘鐨凟xcel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplateFromExcel (data, parameter) {
+  return axios({
+    url: '/SysExcelTemplate/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇Excel妯℃澘鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplateDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/SysExcelTemplate/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAccessDetailsManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAccessDetailsManage.js
new file mode 100644
index 0000000..d93a8d7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAccessDetailsManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function FoamingAccessDetailsPage (parameter) {
+  return axios({
+    url: '/FoamingAccessDetails/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鍑哄叆搴撹褰曞垪琛�
+ *
+ * @author lidunanping
+ */
+export function FoamingAccessDetailsList (parameter) {
+  return axios({
+    url: '/FoamingAccessDetails/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function FoamingAccessDetailsAdd (parameter) {
+  return axios({
+    url: '/FoamingAccessDetails/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function FoamingAccessDetailsEdit (parameter) {
+  return axios({
+    url: '/FoamingAccessDetails/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function FoamingAccessDetailsDelete (parameter) {
+  return axios({
+    url: '/FoamingAccessDetails/delete',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAgvTaskManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAgvTaskManage.js
new file mode 100644
index 0000000..731980c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAgvTaskManage.js
@@ -0,0 +1,139 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ娉℃搏杞﹂棿Agv浠诲姟琛�
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskPage (parameter) {
+  return axios({
+    url: '/FoamingAgvTask/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娉℃搏杞﹂棿Agv浠诲姟琛ㄥ垪琛�
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskList (parameter) {
+  return axios({
+    url: '/FoamingAgvTask/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞娉℃搏杞﹂棿Agv浠诲姟琛�
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskAdd (parameter) {
+  return axios({
+    url: '/FoamingAgvTask/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫娉℃搏杞﹂棿Agv浠诲姟琛�
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskEdit (parameter) {
+  return axios({
+    url: '/FoamingAgvTask/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎娉℃搏杞﹂棿Agv浠诲姟琛�
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskDelete (parameter) {
+  return axios({
+    url: '/FoamingAgvTask/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 瀵煎嚭娉℃搏杞﹂棿Agv浠诲姟琛ㄧ殑Excel鏂囦欢
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskToExcel (parameter) {
+  return axios({
+    url: '/FoamingAgvTask/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆娉℃搏杞﹂棿Agv浠诲姟琛ㄧ殑Excel鏂囦欢
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskFromExcel (data, parameter) {
+  return axios({
+    url: '/FoamingAgvTask/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+/**
+ * 涓嬭浇娉℃搏杞﹂棿Agv浠诲姟琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/FoamingAgvTask/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 寮哄埗瀹屾垚
+ *
+ * @author yrj 
+ */
+export function FoamingAgvTaskForceComplete (id) {
+  return axios({
+    url: '/FoamingAgvTask/finish',
+    method: 'post',
+    data: {id}
+  })
+}
+
+/**
+ * 鐢熸垚AGB浠诲姟锛屾柟渚挎祴璇�
+ *
+ * @author yubaoshan
+ * @date 2020/6/23 23:09
+ */
+export function foamingAgvTaskGenerate(parameter) {
+  return axios({
+    url: '/FoamingInteractive/CreateInTask',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingChuKuOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingChuKuOrderManage.js
new file mode 100644
index 0000000..be1c2eb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingChuKuOrderManage.js
@@ -0,0 +1,147 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙戞场杞﹂棿鍑哄簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingChuKuOrderPage (parameter) {
+  return axios({
+    url: '/FoamingChuKuOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鍑哄簱鍗曟嵁璇︽儏
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingChuKuOrderDetailPage (parameter) {
+  return axios({
+    url: '/FoamingChuKuOrder/detailPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 缂栬緫鏃惰幏鍙栧嚭搴撳崟淇℃伅
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingChuKuOrderDetailEdit (parameter) {
+  return axios({
+    url: '/FoamingChuKuOrder/editDetail',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鍙戞场杞﹂棿鍑哄簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingChuKuOrderAdd (parameter) {
+  return axios({
+    url: '/FoamingChuKuOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鍙戞场杞﹂棿鍑哄簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingChuKuOrderEdit (parameter) {
+  return axios({
+    url: '/FoamingChuKuOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鍙戞场杞﹂棿鍑哄簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingChuKuOrderDelete (parameter) {
+  return axios({
+    url: '/FoamingChuKuOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鎵归噺涓嬪彂
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingChuKuOrderMulDistribute (ids) {
+  return axios({
+    url: '/FoamingChuKuOrder/batchDistribute',
+    method: 'post',
+    data: {id:ids}
+  })
+}
+
+/**
+ * 鎵归噺鎾ゅ洖
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingChuKuOrderMulWithdraw (ids) {
+  return axios({
+    url: '/FoamingChuKuOrder/batchWithdraw',
+    method: 'post',
+    data: {id:ids}
+  })
+}
+
+
+/**
+ * 鍒嗛〉鏌ヨ鍙嚭搴撶墿鏂欎俊鎭�
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingChuKuOrderStockPage (parameter) {
+  return axios({
+    url: '/FoamingChuKuOrder/stockPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+
+/**
+ * 鍗曟嵁瀹屾垚
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingChuKuOrderOutForceComplete (id) {
+  return axios({
+    url: '/FoamingChuKuOrder/OutForceComplete',
+    method: 'post',
+    data: {id}
+  })
+}
+
+/**
+ * 鑾峰彇鍗曟嵁鍙�
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingChuKuOrderGetNo () {
+  return axios({
+    url: '/FoamingChuKuOrder/GetChuKuOrderNo',
+    method: 'post'
+  })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingLocationViewManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingLocationViewManage.js
new file mode 100644
index 0000000..33aa12e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingLocationViewManage.js
@@ -0,0 +1,92 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鑾峰彇搴撳尯鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetArea () {
+  return axios({
+    url: '/Foaminglocationview/GetArea',
+    method: 'get'
+  })
+}
+
+
+/**
+ * 鏍规嵁搴撳尯鑾峰彇宸烽亾
+ *
+ * @author yhh
+ */
+export function GetAisle (parameter) {
+  return axios({
+    url: '/Foaminglocationview/GetPalceAisle',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏍规嵁搴撳尯鑾峰彇鎺掑垪琛�
+ *
+ * @author yhh
+ */
+export function GetPalceRowno (parameter) {
+  return axios({
+    url: '/Foaminglocationview/GetPalceRowno',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇涓�涓帓涓殑搴撲綅鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetPalceList (parameter) {
+  return axios({
+    url: '/Foaminglocationview/GetPalceList',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇搴撳尯璇︽儏
+ *
+ * @author yhh
+ */
+export function GetLocationDetail (parameter) {
+  return axios({
+    url: '/Foaminglocationview/GetMaterialDetail',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏇存柊搴撲綅閿佸畾鐘舵��
+ *
+ * @author yhh
+ */
+export function UpdateLock (parameter) {
+  return axios({
+    url: '/Foaminglocationview/UpdatePalceIslock',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏇存柊搴撲綅绌洪棽鐘舵��
+ *
+ * @author yhh
+ */
+export function UpdateEmpty (parameter) {
+  return axios({
+    url: '/Foaminglocationview/UpdatePalceKongXian',
+    method: 'get',
+    params: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingMaterialStockManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingMaterialStockManage.js
new file mode 100644
index 0000000..0b408e3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingMaterialStockManage.js
@@ -0,0 +1,77 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳瓨琛�
+ *
+ * @author XJF
+ */
+export function FoamingMaterialStockPage (parameter) {
+  return axios({
+    url: '/FoamingMaterialStock/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 搴撳瓨琛ㄥ垪琛�
+ *
+ * @author XJF
+ */
+export function FoamingMaterialStockList (parameter) {
+  return axios({
+    url: '/FoamingMaterialStock/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞搴撳瓨琛�
+ *
+ * @author XJF
+ */
+export function FoamingMaterialStockAdd (parameter) {
+  return axios({
+    url: '/FoamingMaterialStock/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫搴撳瓨琛�
+ *
+ * @author XJF
+ */
+export function FoamingMaterialStockEdit (parameter) {
+  return axios({
+    url: '/FoamingMaterialStock/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎搴撳瓨琛�
+ *
+ * @author XJF
+ */
+export function FoamingMaterialStockDelete (parameter) {
+  return axios({
+    url: '/FoamingMaterialStock/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+* 鑾峰彇WmsArea鍒楄〃
+* @author XJF
+*/
+export function FoamingMaterialStockFkWmsAreaList() {
+  return axios({
+    url: '/FoamingMaterialStock/fkWmsArea',
+    method: 'get'
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingRuKuOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingRuKuOrderManage.js
new file mode 100644
index 0000000..862fc09
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingRuKuOrderManage.js
@@ -0,0 +1,175 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙戞场杞﹂棿鍏ュ簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingRuKuOrderPage (parameter) {
+  return axios({
+    url: '/FoamingRuKuOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鍏ュ簱鍗曟嵁璇︽儏
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderDetailPage (parameter) {
+  return axios({
+    url: '/FoamingRuKuOrder/detailPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鍙戞场杞﹂棿鍏ュ簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingRuKuOrderAdd (parameter) {
+  return axios({
+    url: '/FoamingRuKuOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鍙戞场杞﹂棿鍏ュ簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingRuKuOrderEdit (parameter) {
+  return axios({
+    url: '/FoamingRuKuOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鍙戞场杞﹂棿鍏ュ簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingRuKuOrderDelete (parameter) {
+  return axios({
+    url: '/FoamingRuKuOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鎵归噺涓嬪彂
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderMulDistribute (params) {
+  return axios({
+    url: '/FoamingRuKuOrder/batchDistribute',
+    method: 'post',
+    data: params
+  })
+}
+
+/**
+ * 鎵归噺鎾ゅ洖
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderMulWithdraw (ids) {
+  return axios({
+    url: '/FoamingRuKuOrder/batchWithdraw',
+    method: 'post',
+    data: {id:ids}
+  })
+}
+
+
+/**
+ * 寮哄埗瀹屾垚
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderForceComplete (id) {
+  return axios({
+    url: '/FoamingRuKuOrder/ForceComplete',
+    method: 'post',
+    data: {id}
+  })
+}
+
+
+/**
+ * 澧炶ˉ鏁伴噺
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderAddOrderDetails (params) {
+  return axios({
+    url: '/FoamingRuKuOrder/AddOrderDetails',
+    method: 'post',
+    data: params
+  })
+}
+
+/**
+ * 璇︽儏鍏ュ簱
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderExecuteTask (params) {
+  return axios({
+    url: '/FoamingRuKuOrder/ExecuteTask',
+    method: 'post',
+    data: params
+  })
+}
+
+
+/**
+ * 鑾峰彇鍗曟嵁鍙�
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderGetNo () {
+  return axios({
+    url: '/FoamingRuKuOrder/GetRuKuOrderNo',
+    method: 'post'
+  })
+}
+
+
+/**
+ * 鑾峰彇瀹藉害涓嬫媺鍒楄〃鏁版嵁
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderGetMaterialWide () {
+  return axios({
+    url: '/FoamingRuKuOrder/GetMaterialWide',
+    method: 'get'
+  })
+}
+
+
+/**
+ * 璇︽儏鍙栨秷
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuDetailCancel(id) {
+  return axios({
+    url: '/FoamingRuKuOrder/RuKuCancelTask',
+    method: 'post',
+    data:{id}
+  })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingTaskManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingTaskManage.js
new file mode 100644
index 0000000..1791da7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingTaskManage.js
@@ -0,0 +1,108 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙戞场杞﹂棿浠诲姟绠$悊琛紙鐔熷寲搴擄級
+ *
+ * @author yrj
+ */
+export function FoamingTaskPage (parameter) {
+  return axios({
+    url: '/FoamingTask/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 寮哄埗瀹屾垚
+ *
+ * @author yuhuanhuan 
+ */
+export function FoamingTaskForceComplete (id) {
+  return axios({
+    url: '/FoamingTask/finish',
+    method: 'post',
+    data: {id}
+  })
+}
+
+/**
+ * 浠诲姟鍙栨秷
+ *
+ * @author yuhuanhuan 
+ */
+export function FoamingTaskCancel (ids) {
+  return axios({
+    url: '/FoamingTask/batchCancel',
+    method: 'post',
+    data: {id:ids}
+  })
+}
+
+/**
+ * 浠诲姟鏆傚仠
+ *
+ * @author yuhuanhuan 
+ */
+export function FoamingTaskPause (ids) {
+  return axios({
+    url: '/FoamingTask/batchBreak',
+    method: 'post',
+    data: {id:ids}
+  })
+}
+
+/**
+ * 浠诲姟缁х画
+ *
+ * @author yuhuanhuan 
+ */
+export function FoamingTaskContinue (ids) {
+  return axios({
+    url: '/FoamingTask/batchContinue',
+    method: 'post',
+    data: {id:ids}
+  })
+}
+
+
+/**
+ * 鏇存柊浼樺厛绾�
+ *
+ * @author yuhuanhuan 
+ */
+export function FoamingTaskLevelUpdate (parameter) {
+  return axios({
+    url: '/FoamingTask/updateTaskLevel',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 鏇存柊浼樺厛绾�
+ *
+ * @author yuhuanhuan 
+ */
+export function FoamingTaskUpLevel (id) {
+  return axios({
+    url: '/FoamingTask/upwardTaskLevel',
+    method: 'post',
+    data: {id}
+  })
+}
+
+/**
+ * 鏇存柊浼樺厛绾�
+ *
+ * @author yuhuanhuan 
+ */
+export function FoamingTaskDownLevel (id) {
+  return axios({
+    url: '/FoamingTask/downTaskLevel',
+    method: 'post',
+    data: {id}
+  })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryPlanManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryPlanManage.js
new file mode 100644
index 0000000..1ad4936
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryPlanManage.js
@@ -0,0 +1,225 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鐩樼偣璁″垝
+ *
+ * @author li
+ */
+export function InventoryPlanPage (parameter) {
+  return axios({
+    url: '/InventoryPlan/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鎶ュ憡椤甸潰鏌ヨ鐩樼偣璁″垝
+ *
+ * @author yhh
+ */
+export function InventoryPlanRecordPage (parameter) {
+  return axios({
+    url: '/InventoryPlan/InventoryComplete',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鐩樼偣璁″垝鍒楄〃
+ *
+ * @author li
+ */
+export function InventoryPlanList (parameter) {
+  return axios({
+    url: '/InventoryPlan/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鐩樼偣璁″垝
+ *
+ * @author yhh
+ */
+export function InventoryPlanAdd (parameter) {
+  return axios({
+    url: '/InventoryPlan/AddInventoryPlan',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鐩樼偣璁″垝
+ *
+ * @author yhh
+ */
+export function InventoryPlanEdit (parameter) {
+  return axios({
+    url: '/InventoryPlan/UpdateInventoryPlan',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鐩樼偣璁″垝
+ *
+ * @author li
+ */
+export function InventoryPlanDelete (parameter) {
+  return axios({
+    url: '/InventoryPlan/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭鐩樼偣璁″垝鐨凟xcel鏂囦欢
+ *
+ * @author li
+ */
+export function InventoryPlanToExcel (parameter) {
+  return axios({
+    url: '/InventoryPlan/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆鐩樼偣璁″垝鐨凟xcel鏂囦欢
+ *
+ * @author li
+ */
+export function InventoryPlanFromExcel (data, parameter) {
+  return axios({
+    url: '/InventoryPlan/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇鐩樼偣璁″垝鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author li
+ */
+export function InventoryPlanDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/InventoryPlan/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
+
+/**
+* 鑾峰彇InventoryRule鍒楄〃
+* @author li
+*/
+export function InventoryPlanFkInventoryRuleList() {
+  return axios({
+    url: '/InventoryPlan/fkInventoryRule',
+    method: 'get'
+  })
+}
+
+/**
+* 鑾峰彇浠撳簱涓嬫媺鍒楄〃
+* @author yhh
+*/
+export function InventoryPlanGetAreas() {
+  return axios({
+    url: '/InventoryPlan/InventoryArea',
+    method: 'get'
+  })
+}
+
+/**
+* 鑾峰彇鐩樼偣瑙勫垯涓嬫媺鍒楄〃
+* @author yhh
+*/
+export function InventoryPlanGetCheckRules() {
+  return axios({
+    url: '/InventoryPlan/InventoryRule',
+    method: 'get'
+  })
+}
+
+/**
+ * 鑾峰彇璁″垝鍙�
+ *
+ * @author yhh
+ */
+export function GetBillNumber () {
+  return axios({
+    url: '/InventoryPlan/CreatePlanNo',
+    method: 'get'
+  })
+}
+
+/**
+ * 鑾峰彇鍙姞鍏ヨ鍒掔殑鏄庣粏鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetCouldOuts(params) {
+  return axios({
+    url: '/InventoryPlan/SelectStock',
+    method: 'get',
+    params: params
+  })
+}
+
+/**
+ * 鐩樼偣璁″垝璇︽儏
+ *
+ * @author yhh
+ */
+export function InventoryPlanDetailPage (parameter) {
+  return axios({
+    url: '/InventoryPlan/DetailPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鐩樼偣瀹℃牳
+ *
+ * @author yhh
+ */
+export function InventoryReview (parameter) {
+  return axios({
+    url: '/InventoryPlan/UpdateExamine',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鏀瑰彉搴撳瓨鏁�
+ *
+ * @author yhh
+ */
+export function InventoryChangeStockNumber (parameter) {
+  return axios({
+    url: '/InventoryPlan/UpdateInventoryStock',
+    method: 'post',
+    data: parameter
+  })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryRuleManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryRuleManage.js
new file mode 100644
index 0000000..6c2ad26
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryRuleManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鐩樼偣瑙勫垯
+ *
+ * @author li
+ */
+export function InventoryRulePage (parameter) {
+  return axios({
+    url: '/InventoryRule/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鐩樼偣瑙勫垯鍒楄〃
+ *
+ * @author li
+ */
+export function InventoryRuleList (parameter) {
+  return axios({
+    url: '/InventoryRule/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鐩樼偣瑙勫垯
+ *
+ * @author li
+ */
+export function InventoryRuleAdd (parameter) {
+  return axios({
+    url: '/InventoryRule/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鐩樼偣瑙勫垯
+ *
+ * @author li
+ */
+export function InventoryRuleEdit (parameter) {
+  return axios({
+    url: '/InventoryRule/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鐩樼偣瑙勫垯
+ *
+ * @author li
+ */
+export function InventoryRuleDelete (parameter) {
+  return axios({
+    url: '/InventoryRule/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭鐩樼偣瑙勫垯鐨凟xcel鏂囦欢
+ *
+ * @author li
+ */
+export function InventoryRuleToExcel (parameter) {
+  return axios({
+    url: '/InventoryRule/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆鐩樼偣瑙勫垯鐨凟xcel鏂囦欢
+ *
+ * @author li
+ */
+export function InventoryRuleFromExcel (data, parameter) {
+  return axios({
+    url: '/InventoryRule/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇鐩樼偣瑙勫垯鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author li
+ */
+export function InventoryRuleDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/InventoryRule/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InvertingStorageManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InvertingStorageManage.js
new file mode 100644
index 0000000..660e504
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InvertingStorageManage.js
@@ -0,0 +1,66 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀛樿揣搴撲綅
+ *
+ * @author yhh
+ */
+export function GetCunHouPlace (parameter) {
+  return axios({
+    url: '/Relocation/GetCunHouPlace',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏌ヨ绌洪棽搴撲綅
+ *
+ * @author yhh
+ */
+export function GetKongXianPlace (parameter) {
+  return axios({
+    url: '/Relocation/GetKongXianPlace',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑷姩鍊掑簱
+ *
+ * @author yhh
+ */
+export function AutoSubmit (data) {
+  return axios({
+    url: '/Relocation/ZdSubmitPlace',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 鎵嬪姩鍊掑簱
+ *
+ * @author yhh
+ */
+export function ManualSubmit (data) {
+  return axios({
+    url: '/Relocation/SdSubmitPlace',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 鏌ヨ搴撲綅璇︽儏
+ *
+ * @author yhh
+ */
+export function GetLocationDetail (parameter) {
+  return axios({
+    url: '/Relocation/GetPlaceDetail',
+    method: 'get',
+    params: parameter
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesDeviceWaringManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesDeviceWaringManage.js
new file mode 100644
index 0000000..5d70484
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesDeviceWaringManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ璁惧鎶ヨ
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringPage (parameter) {
+  return axios({
+    url: '/LesDeviceWaring/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 璁惧鎶ヨ鍒楄〃
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringList (parameter) {
+  return axios({
+    url: '/LesDeviceWaring/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞璁惧鎶ヨ
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringAdd (parameter) {
+  return axios({
+    url: '/LesDeviceWaring/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫璁惧鎶ヨ
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringEdit (parameter) {
+  return axios({
+    url: '/LesDeviceWaring/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎璁惧鎶ヨ
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringDelete (parameter) {
+  return axios({
+    url: '/LesDeviceWaring/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭璁惧鎶ヨ鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringToExcel (parameter) {
+  return axios({
+    url: '/LesDeviceWaring/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆璁惧鎶ヨ鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringFromExcel (data, parameter) {
+  return axios({
+    url: '/LesDeviceWaring/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇璁惧鎶ヨ鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/LesDeviceWaring/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesFoamingPackWarehouseManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesFoamingPackWarehouseManage.js
new file mode 100644
index 0000000..3431311
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesFoamingPackWarehouseManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鎵撳寘淇℃伅
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehousePage (parameter) {
+  return axios({
+    url: '/LesFoamingPackWarehouse/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鎵撳寘淇℃伅鍒楄〃
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehouseList (parameter) {
+  return axios({
+    url: '/LesFoamingPackWarehouse/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鎵撳寘淇℃伅
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehouseAdd (parameter) {
+  return axios({
+    url: '/LesFoamingPackWarehouse/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鎵撳寘淇℃伅
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehouseEdit (parameter) {
+  return axios({
+    url: '/LesFoamingPackWarehouse/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鎵撳寘淇℃伅
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehouseDelete (parameter) {
+  return axios({
+    url: '/LesFoamingPackWarehouse/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭鎵撳寘淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehouseToExcel (parameter) {
+  return axios({
+    url: '/LesFoamingPackWarehouse/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆鎵撳寘淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehouseFromExcel (data, parameter) {
+  return axios({
+    url: '/LesFoamingPackWarehouse/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇鎵撳寘淇℃伅鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehouseDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/LesFoamingPackWarehouse/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesProductionlineManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesProductionlineManage.js
new file mode 100644
index 0000000..01db0bf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesProductionlineManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ浜х嚎淇℃伅
+ *
+ * @author XJF
+ */
+export function LesProductionlinePage (parameter) {
+  return axios({
+    url: '/LesProductionline/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 浜х嚎淇℃伅鍒楄〃
+ *
+ * @author XJF
+ */
+export function LesProductionlineList (parameter) {
+  return axios({
+    url: '/LesProductionline/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞浜х嚎淇℃伅
+ *
+ * @author XJF
+ */
+export function LesProductionlineAdd (parameter) {
+  return axios({
+    url: '/LesProductionline/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫浜х嚎淇℃伅
+ *
+ * @author XJF
+ */
+export function LesProductionlineEdit (parameter) {
+  return axios({
+    url: '/LesProductionline/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎浜х嚎淇℃伅
+ *
+ * @author XJF
+ */
+export function LesProductionlineDelete (parameter) {
+  return axios({
+    url: '/LesProductionline/delete',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesStationManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesStationManage.js
new file mode 100644
index 0000000..2d7bbd8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesStationManage.js
@@ -0,0 +1,161 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ宸ヤ綅琛�
+ *
+ * @author li
+ */
+export function LesStationPage (parameter) {
+  return axios({
+    url: '/LesStation/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 宸ヤ綅琛ㄥ垪琛�
+ *
+ * @author li
+ */
+export function LesStationList (parameter) {
+  return axios({
+    url: '/LesStation/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞宸ヤ綅琛�
+ *
+ * @author li
+ */
+export function LesStationAdd (parameter) {
+  return axios({
+    url: '/LesStation/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫宸ヤ綅琛�
+ *
+ * @author li
+ */
+export function LesStationEdit (parameter) {
+  return axios({
+    url: '/LesStation/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎宸ヤ綅琛�
+ *
+ * @author li
+ */
+export function LesStationDelete (parameter) {
+  return axios({
+    url: '/LesStation/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭宸ヤ綅琛ㄧ殑Excel鏂囦欢
+ *
+ * @author li
+ */
+export function LesStationToExcel (parameter) {
+  return axios({
+    url: '/LesStation/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆宸ヤ綅琛ㄧ殑Excel鏂囦欢
+ *
+ * @author li
+ */
+export function LesStationFromExcel (data, parameter) {
+  return axios({
+    url: '/LesStation/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇宸ヤ綅琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author li
+ */
+export function LesStationDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/LesStation/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
+
+/**
+* 鑾峰彇LesProductionline鍒楄〃
+* @author li
+*/
+export function LesStationFkLesProductionlineList() {
+  return axios({
+    url: '/LesStation/fkLesProductionline',
+    method: 'get'
+  })
+}
+
+
+/**
+ * 鑾峰彇浜х嚎鏁版嵁
+ *
+ * @author yhh
+ */
+export function GetLines () {
+  return axios({
+    url: '/LesStation/GetProductionlineList',
+    method: 'get'
+  })
+}
+ 
+/**
+ * 鏍规嵁浜х嚎锛岃幏鍙栧伐浣嶆暟鎹�
+ *
+ * @author yhh
+ */
+export function GetStations (id) {
+  return axios({
+    url: '/LesStation/GetStationList',
+    method: 'get',
+    params:{id}
+  })
+}
+
+/**
+ * 鑾峰彇浜х嚎淇℃伅
+ */
+export function getProLineList() {
+  return axios({
+    url: '/lesstation/fkLesProductionline',
+    method: 'get'
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesTakematerialsManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesTakematerialsManage.js
new file mode 100644
index 0000000..d1f922b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesTakematerialsManage.js
@@ -0,0 +1,194 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙枡
+ *
+ * @author XJF
+ */
+export function LesTakematerialsPage (parameter) {
+  return axios({
+    url: '/LesTakematerials/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鍙枡
+ *
+ * @author XJF
+ */
+export function LesTakematerialsAdd (data) {
+  return axios({
+    url: '/lesTakematerials/AddTakematerial',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 鍒犻櫎鍙枡
+ *
+ * @author XJF
+ */
+export function LesTakematerialsDelete (ids) {
+  return axios({
+    url: '/LesTakematerials/delete',
+    method: 'post',
+    data:{id:ids}
+  })
+}
+
+/**
+ * 鑾峰彇鍙枡鍗曞彿
+ *
+ * @author yhh
+ */
+export function GetBillNumber () {
+  return axios({
+    url: '/lesTakematerials/GetTakeMaterialsNo',
+    method: 'get'
+  })
+}
+
+
+/**
+ * 鐗╂枡鏌ヨ
+ *
+ * @author yhh
+ */
+export function QueryMaterials (params) {
+  return axios({
+    url: '/lesTakematerials/MaterialSourcepage',
+    method: 'get',
+    params:params
+  })
+}
+
+/**
+ * 棰嗘枡鍗曚笅鍙�
+ *
+ * @author yhh
+ */
+export function Distribute (ids) {
+  return axios({
+    url: '/lesTakematerials/BatchTakeMaterials',
+    method: 'post',
+    data:{id:ids}
+  })
+}
+
+/**
+ * 棰嗘枡鍗曞畬鎴�
+ *
+ * @author yhh
+ */
+export function ForceComplete (id) {
+  return axios({
+    url: '/lesTakematerials/CompleteOrder',
+    method: 'post',
+    data:{id:id}
+  })
+}
+
+
+/**
+ * 棰嗘枡鍗曡鎯呬笅鍙�
+ *
+ * @author yhh
+ */
+export function DetailDistribute (params) {
+  return axios({
+    url: '/lesTakematerials/BatchTakeMaterialsDetial',
+    method: 'post',
+    data:params
+  })
+}
+
+/**
+ * 鍗曟嵁璇︽儏
+ *
+ * @author yhh
+ */
+export function LesTakeMaterialsDetailPage (params) {
+  return axios({
+    url: '/lesTakematerials/detailPage',
+    method: 'get',
+    params:params
+  })
+}
+
+
+/**
+ * 鑾峰彇浜х嚎
+ *
+ * @author yhh
+ */
+export function GetLines() {
+  return axios({
+    url: '/lesTakematerials/GetProductionlineList',
+    method: 'get'
+  })
+}
+
+/**
+ * 鏍规嵁浜х嚎鑾峰彇宸ヤ綅
+ *
+ * @author yhh
+ */
+export function GetStations(id) {
+  return axios({
+    url: '/lesTakematerials/GetStationList',
+    method: 'get',
+    params:{id}
+  })
+}
+
+/**
+ * 鑾峰彇搴撳尯涓嬫媺
+ *
+ * @author yhh
+ */
+export function GetAreas() {
+  return axios({
+    url: '/lesTakematerials/GetAreaList',
+    method: 'get'
+  })
+}
+
+/**
+ * 鑾峰彇鍥惧彿涓嬫媺
+ *
+ * @author yhh
+ */
+export function GetDrawinNos() {
+  return axios({
+    url: '/lesTakematerials/GetDrawingNoList',
+    method: 'get'
+  })
+}
+
+/**
+ * 鑾峰彇鑸瑰彿涓嬫媺
+ *
+ * @author yhh
+ */
+export function GetSipNos() {
+  return axios({
+    url: '/lesTakematerials/GetShipNoList',
+    method: 'get'
+  })
+}
+
+/**
+ * 鎸夌墿鏂欐彁浜�
+ *
+ * @author yhh
+ */
+export function LesTakematerialsAutoAdd (data) {
+  return axios({
+    url: '/lesTakematerials/AutoAddTakematerial',
+    method: 'post',
+    data: data
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LocationViewManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LocationViewManage.js
new file mode 100644
index 0000000..d8bfa09
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LocationViewManage.js
@@ -0,0 +1,90 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鑾峰彇搴撳尯鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetArea () {
+  return axios({
+    url: '/LocationView/GetArea',
+    method: 'get'
+  })
+}
+/**
+ * 鏍规嵁搴撳尯鑾峰彇宸烽亾
+ *
+ * @author yhh
+ */
+export function GetAisle (parameter) {
+  return axios({
+    url: '/LocationView/GetAisle',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏍规嵁搴撳尯鑾峰彇鎺掑垪琛�
+ *
+ * @author yhh
+ */
+export function GetPalceRowno (parameter) {
+  return axios({
+    url: '/LocationView/GetPalceRowno',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇涓�涓帓涓殑搴撲綅鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetPalceList (parameter) {
+  return axios({
+    url: '/LocationView/GetPalceList',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇搴撳尯璇︽儏
+ *
+ * @author yhh
+ */
+export function GetLocationDetail (parameter) {
+  return axios({
+    url: '/LocationView/GetMaterialDetail',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏇存柊搴撲綅閿佸畾鐘舵��
+ *
+ * @author yhh
+ */
+export function UpdateLock (parameter) {
+  return axios({
+    url: '/LocationView/UpdatePalceIslock',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏇存柊搴撲綅绌洪棽鐘舵��
+ *
+ * @author yhh
+ */
+export function UpdateEmpty (parameter) {
+  return axios({
+    url: '/LocationView/UpdatePalceKongXian',
+    method: 'get',
+    params: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PMFinishedOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PMFinishedOrderManage.js
new file mode 100644
index 0000000..72d7ad0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PMFinishedOrderManage.js
@@ -0,0 +1,154 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗�
+ *
+ * @author yc
+ */
+export function PMFinishedOrderPage (parameter) {
+  return axios({
+    url: '/PMFinishedOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗曞垪琛�
+ *
+ * @author yc
+ */
+export function PMFinishedOrderList (parameter) {
+  return axios({
+    url: '/PMFinishedOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗�
+ *
+ * @author yc
+ */
+export function PMFinishedOrderAdd (parameter) {
+  return axios({
+    url: '/PMFinishedOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗�
+ *
+ * @author yc
+ */
+export function PMFinishedOrderEdit (parameter) {
+  return axios({
+    url: '/PMFinishedOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗�
+ *
+ * @author yc
+ */
+export function PMFinishedOrderDelete (parameter) {
+  return axios({
+    url: '/PMFinishedOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function PMFinishedOrderToExcel (parameter) {
+  return axios({
+    url: '/PMFinishedOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function PMFinishedOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/PMFinishedOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function PMFinishedOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/PMFinishedOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function PMFinishedOrderLargeCategories() {
+  return axios({
+    url: '/PMFinishedOrder/OrderTypeLargeCategory',
+    method: 'get'
+  })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function PMFinishedOrderSubclass(id) {
+  return axios({
+    url: '/PMFinishedOrder/OrderTypeSubclass',
+    method: 'get',
+    params:{id}
+  })
+}
+
+
+/**
+ * 瀹屽伐鍏ュ簱鍗曡鎯�
+ *
+ * @author yhh
+ */
+export function PMFinishedOrderDetailPage (parameter) {
+  return axios({
+    url: '/PMFinishedOrder/DetailsPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlyPrepareRecord.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlyPrepareRecord.js
new file mode 100644
index 0000000..49e9a5d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlyPrepareRecord.js
@@ -0,0 +1,41 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鑳跺悎鏉垮鏂欏崟鏌ヨ
+ *
+ * @author yhh
+ */
+export function PlywoodPreparationPage (parameter) {
+  return axios({
+    url: '/plywoodpreparation/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑳跺悎鏉垮鏂欏崟鎹鎯�
+ *
+ * @author yhh
+ */
+export function PlywoodPreparationDetailPage (params) {
+  return axios({
+    url: '/plywoodpreparation/detailPage',
+    method: 'get',
+    params:params
+  })
+}
+
+
+/**
+ * 鑳跺悎鏉垮鏂欒鍒掍笅鍙�
+ *
+ * @author yhh
+ */
+export function Distribute (ids) {
+  return axios({
+    url: '/plywoodpreparation/BatchPreparationMaterials',
+    method: 'post',
+    data:{id:ids}
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlywoodStockManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlywoodStockManage.js
new file mode 100644
index 0000000..6d2f40e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlywoodStockManage.js
@@ -0,0 +1,15 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳瓨琛�
+ *
+ * @author yhh
+ */
+export function PlywoodStockPage (parameter) {
+  return axios({
+    url: '/plywoodmaterialstock/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ProductionReturnedOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ProductionReturnedOrderManage.js
new file mode 100644
index 0000000..6f7ef42
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ProductionReturnedOrderManage.js
@@ -0,0 +1,153 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ浜х嚎閫�搴撶鐞�
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderPage (parameter) {
+  return axios({
+    url: '/ProductionReturnedOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 浜х嚎閫�搴撶鐞嗗垪琛�
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderList (parameter) {
+  return axios({
+    url: '/ProductionReturnedOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞浜х嚎閫�搴撶鐞�
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderAdd (parameter) {
+  return axios({
+    url: '/ProductionReturnedOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫浜х嚎閫�搴撶鐞�
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderEdit (parameter) {
+  return axios({
+    url: '/ProductionReturnedOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎浜х嚎閫�搴撶鐞�
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderDelete (parameter) {
+  return axios({
+    url: '/ProductionReturnedOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭浜х嚎閫�搴撶鐞嗙殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderToExcel (parameter) {
+  return axios({
+    url: '/ProductionReturnedOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆浜х嚎閫�搴撶鐞嗙殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/ProductionReturnedOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇浜х嚎閫�搴撶鐞嗙殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/ProductionReturnedOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function ProductionReturnedOrderLargeCategories() {
+  return axios({
+    url: '/ProductionReturnedOrder/OrderTypeLargeCategory',
+    method: 'get'
+  })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function ProductionReturnedOrderSubclass(id) {
+  return axios({
+    url: '/ProductionReturnedOrder/OrderTypeSubclass',
+    method: 'get',
+    params:{id}
+  })
+}
+
+
+/**
+ * 浜х嚎閫�搴撳崟璇︽儏
+ *
+ * @author yhh
+ */
+export function ProductionReturnedOrderDetailPage (parameter) {
+  return axios({
+    url: '/ProductionReturnedOrder/DetailPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseOrderManage.js
new file mode 100644
index 0000000..b42f30a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseOrderManage.js
@@ -0,0 +1,152 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ閲囪喘鍗�
+ *
+ * @author XJF
+ */
+export function PurchaseOrderPage (parameter) {
+  return axios({
+    url: '/PurchaseOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 閲囪喘鍗曞垪琛�
+ *
+ * @author XJF
+ */
+export function PurchaseOrderList (parameter) {
+  return axios({
+    url: '/PurchaseOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞閲囪喘鍗�
+ *
+ * @author XJF
+ */
+export function PurchaseOrderAdd (parameter) {
+  return axios({
+    url: '/PurchaseOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫閲囪喘鍗�
+ *
+ * @author XJF
+ */
+export function PurchaseOrderEdit (parameter) {
+  return axios({
+    url: '/PurchaseOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎閲囪喘鍗�
+ *
+ * @author XJF
+ */
+export function PurchaseOrderDelete (parameter) {
+  return axios({
+    url: '/PurchaseOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭閲囪喘鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function PurchaseOrderToExcel (parameter) {
+  return axios({
+    url: '/PurchaseOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆閲囪喘鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function PurchaseOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/PurchaseOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇閲囪喘鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function PurchaseOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/PurchaseOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function PurchaseOrderLargeCategories() {
+  return axios({
+    url: '/PurchaseOrder/OrderTypeLargeCategory',
+    method: 'get'
+  })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function PurchaseOrderSubclass(id) {
+  return axios({
+    url: '/PurchaseOrder/OrderTypeSubclass',
+    method: 'get',
+    params:{id}
+  })
+}
+
+
+/**
+ * 鏌ヨ閲囪喘鍗曡鎯�
+ *
+ * @author yhh
+ */
+export function PurchaseOrderDetailPage (parameter) {
+  return axios({
+    url: '/PurchaseOrder/detailPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseReceiveOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseReceiveOrderManage.js
new file mode 100644
index 0000000..ceec83f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseReceiveOrderManage.js
@@ -0,0 +1,205 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ閲囪喘鏀惰揣
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderPage (parameter) {
+  return axios({
+    url: '/PurchaseReceiveOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 閲囪喘鏀惰揣鍒楄〃
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderList (parameter) {
+  return axios({
+    url: '/PurchaseReceiveOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞閲囪喘鏀惰揣
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderAdd (parameter) {
+  return axios({
+    url: '/PurchaseReceiveOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫閲囪喘鏀惰揣
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderEdit (parameter) {
+  return axios({
+    url: '/PurchaseReceiveOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎閲囪喘鏀惰揣
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderDelete (parameter) {
+  return axios({
+    url: '/PurchaseReceiveOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭閲囪喘鏀惰揣鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderToExcel (parameter) {
+  return axios({
+    url: '/PurchaseReceiveOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆閲囪喘鏀惰揣鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/PurchaseReceiveOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇閲囪喘鏀惰揣鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/PurchaseReceiveOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function PurchaseReceiveOrderLargeCategories() {
+  return axios({
+    url: '/PurchaseReceiveOrder/OrderTypeLargeCategory',
+    method: 'get'
+  })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function PurchaseReceiveOrderSubclass(id) {
+  return axios({
+    url: '/PurchaseReceiveOrder/OrderTypeSubclass',
+    method: 'get',
+    params:{id}
+  })
+}
+
+
+/**
+ * 閿�鍞��搴撳崟璇︽儏
+ *
+ * @author yhh
+ */
+export function PurchaseReceiveOrderDetailPage (parameter) {
+  return axios({
+    url: '/PurchaseReceiveOrder/DetailsPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇閲囪喘鏀惰喘鍗曞彿
+ *
+ * @author yhh
+ */
+export function GetBillNumber () {
+  return axios({
+    url: '/PurchaseReceiveOrder/GetPurchaseReceiveOrderNo',
+    method: 'get'
+  })
+}
+
+/**
+ * 鑾峰彇鏈粦瀹氭敹璐у崟鐨勯噰璐崟鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetPurchaseOrders() {
+  return axios({
+    url: '/PurchaseReceiveOrder/GetPurchaseOrderNo',
+    method: 'get'
+  })
+}
+
+/**
+ * 鑾峰彇鍙敹鑾风殑鐗╂枡鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetCouldReceiveMaterials(params) {
+  return axios({
+    url: '/PurchaseReceiveOrder/GetDetailByPurchaseOrderNo',
+    method: 'get',
+    params: params
+  })
+}
+
+/**
+ * 缂栬緫閲囪喘鏀惰揣璇︽儏鏀惰揣鏁�
+ *
+ * @author yhh
+ */
+export function PurchaseReceiveOrderEditDetailNumber (parameter) {
+  return axios({
+    url: '/PurchaseReceiveOrder/EditDetail',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/README.md b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/README.md
new file mode 100644
index 0000000..fadf99a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/README.md
@@ -0,0 +1 @@
+/** 鎮ㄧ殑涓氬姟鎺ュ彛鏂囦欢鍏ㄥ啓鍦ㄦ鏂囦欢澶逛笅闈紝鍗囩骇搴曞骇鐩存帴杩佺Щ浠g爜鍗冲彲 **/
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ReceiveMaterialOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ReceiveMaterialOrderManage.js
new file mode 100644
index 0000000..d51baf9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ReceiveMaterialOrderManage.js
@@ -0,0 +1,128 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ棰嗘枡鍗�
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderPage (parameter) {
+  return axios({
+    url: '/ReceiveMaterialOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 棰嗘枡鍗曞垪琛�
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderList (parameter) {
+  return axios({
+    url: '/ReceiveMaterialOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞棰嗘枡鍗�
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderAdd (parameter) {
+  return axios({
+    url: '/ReceiveMaterialOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫棰嗘枡鍗�
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderEdit (parameter) {
+  return axios({
+    url: '/ReceiveMaterialOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎棰嗘枡鍗�
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderDelete (parameter) {
+  return axios({
+    url: '/ReceiveMaterialOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭棰嗘枡鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderToExcel (parameter) {
+  return axios({
+    url: '/ReceiveMaterialOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆棰嗘枡鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/ReceiveMaterialOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇棰嗘枡鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/ReceiveMaterialOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 棰嗘枡鍗曡鎯�
+ *
+ * @author yhh
+ */
+export function ReceiveMaterialOrderDetailPage (parameter) {
+  return axios({
+    url: '/ReceiveMaterialOrder/DetailsPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbPrepareRecord.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbPrepareRecord.js
new file mode 100644
index 0000000..1fff5ce
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbPrepareRecord.js
@@ -0,0 +1,41 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鑳跺悎鏉垮鏂欏崟鏌ヨ
+ *
+ * @author yhh
+ */
+export function RsbPreparationPage (parameter) {
+  return axios({
+    url: '/rsbpreparation/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑳跺悎鏉垮鏂欏崟鎹鎯�
+ *
+ * @author yhh
+ */
+export function RsbPreparationDetailPage (params) {
+  return axios({
+    url: '/rsbpreparation/detailPage',
+    method: 'get',
+    params:params
+  })
+}
+
+
+/**
+ * 鑳跺悎鏉垮鏂欒鍒掍笅鍙�
+ *
+ * @author yhh
+ */
+export function Distribute (ids) {
+  return axios({
+    url: '/rsbpreparation/BatchPreparationMaterials',
+    method: 'post',
+    data:{id:ids}
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbStockManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbStockManage.js
new file mode 100644
index 0000000..7d56aa3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbStockManage.js
@@ -0,0 +1,15 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳瓨琛�
+ *
+ * @author yhh
+ */
+export function RsbStockPage (parameter) {
+  return axios({
+    url: '/rsbmaterialstock/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockOutboundOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockOutboundOrderManage.js
new file mode 100644
index 0000000..6229b6a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockOutboundOrderManage.js
@@ -0,0 +1,191 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ閿�鍞嚭搴�
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderPage (parameter) {
+  return axios({
+    url: '/SalesStockOutboundOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 閿�鍞嚭搴撳垪琛�
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderList (parameter) {
+  return axios({
+    url: '/SalesStockOutboundOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞閿�鍞嚭搴�
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderAdd (parameter) {
+  return axios({
+    url: '/SalesStockOutboundOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫閿�鍞嚭搴�
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderEdit (parameter) {
+  return axios({
+    url: '/SalesStockOutboundOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎閿�鍞嚭搴�
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderDelete (parameter) {
+  return axios({
+    url: '/SalesStockOutboundOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭閿�鍞嚭搴撶殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderToExcel (parameter) {
+  return axios({
+    url: '/SalesStockOutboundOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆閿�鍞嚭搴撶殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/SalesStockOutboundOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇閿�鍞嚭搴撶殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/SalesStockOutboundOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鍗曟嵁鍙戣揣浠撳簱鍒楄〃
+ *
+ * @author yhh
+ */
+export function SalesStockOutboundOrderGetAreas() {
+  return axios({
+    url: '/SalesStockOutboundOrder/SalesStockOutboundOrderGetAreaList',
+    method: 'get'
+  })
+}
+
+
+/**
+ * 閿�鍞嚭搴撳崟璇︽儏
+ *
+ * @author yhh
+ */
+export function SalesStockOutboundOrderDetailPage (parameter) {
+  return axios({
+    url: '/SalesStockOutboundOrder/DetailsPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鍗曞彿
+ *
+ * @author yhh
+ */
+export function GetBillNumber () {
+  return axios({
+    url: '/SalesStockOutboundOrder/GetSalesStockOutboundOrderNoo',
+    method: 'get'
+  })
+}
+
+/**
+ * 鑾峰彇鍙嚭搴撶殑鏄庣粏鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetCouldOutMaterials(params) {
+  return axios({
+    url: '/SalesStockOutboundOrder/GetMaterialList',
+    method: 'get',
+    params: params
+  })
+}
+
+/**
+ * 缂栬緫鍗曟嵁璇︽儏鏁伴噺
+ *
+ * @author yhh
+ */
+export function SalesStockOutboundOrderEditDetailNumber (parameter) {
+  return axios({
+    url: '/SalesStockOutboundOrder/UpdateSalesStockOutboundDetail',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 涓嬪彂
+ *
+ * @author yhh
+ */
+export function SalesStockOutboundOrderMulDistribute (ids) {
+  return axios({
+    url: '/SalesStockOutboundOrder/BatchSalesStockOutboundOrder',
+    method: 'post',
+    data: {id:ids}
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockReturnOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockReturnOrderManage.js
new file mode 100644
index 0000000..967fa96
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockReturnOrderManage.js
@@ -0,0 +1,190 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ閿�鍞��搴�
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderPage (parameter) {
+  return axios({
+    url: '/SalesStockReturnOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 閿�鍞��搴撳垪琛�
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderList (parameter) {
+  return axios({
+    url: '/SalesStockReturnOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞閿�鍞��搴�
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderAdd (parameter) {
+  return axios({
+    url: '/SalesStockReturnOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫閿�鍞��搴�
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderEdit (parameter) {
+  return axios({
+    url: '/SalesStockReturnOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎閿�鍞��搴�
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderDelete (parameter) {
+  return axios({
+    url: '/SalesStockReturnOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭閿�鍞��搴撶殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderToExcel (parameter) {
+  return axios({
+    url: '/SalesStockReturnOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆閿�鍞��搴撶殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/SalesStockReturnOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇閿�鍞��搴撶殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/SalesStockReturnOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 閿�鍞��搴撳崟璇︽儏
+ *
+ * @author yhh
+ */
+export function SalesStockReturnOrderDetailPage (parameter) {
+  return axios({
+    url: '/SalesStockReturnOrder/DetailsPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇閿�鍞��搴撳崟鍙�
+ *
+ * @author yhh
+ */
+export function GetBillNumber () {
+  return axios({
+    url: '/SalesStockReturnOrder/GetSalesStockReturnOrderNo',
+    method: 'get'
+  })
+}
+
+
+/**
+ * 鑾峰彇鏈粦瀹氶攢鍞��搴撳崟鐨勫嚭搴撳崟(璁″垝)鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetStockOuts() {
+  return axios({
+    url: '/SalesStockReturnOrder/GetSalesStockOutboundOrderNo',
+    method: 'get'
+  })
+}
+
+/**
+ * 缂栬緫鍞��搴撳崟璇︽儏閫�搴撴暟
+ *
+ * @author yhh
+ */
+export function SalesStockReturnOrderEditDetailNumber (parameter) {
+  return axios({
+    url: '/SalesStockReturnOrder/UpdateSalesStockReturnOrderDetail',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鍙��搴撶殑鐗╂枡鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetCouldReturnMaterials(params) {
+  return axios({
+    url: '/SalesStockReturnOrder/GetDetailBySalesStockOutboundOrderNo',
+    method: 'get',
+    params: params
+  })
+}
+
+/**
+ * 涓嬪彂
+ *
+ * @author yhh
+ */
+export function SalesStockReturnOrderMulDistribute (ids) {
+  return axios({
+    url: '/SalesStockReturnOrder/BatchSalesStockReturnOrder',
+    method: 'post',
+    data: {id:ids}
+  })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/StationViewManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/StationViewManage.js
new file mode 100644
index 0000000..64f674a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/StationViewManage.js
@@ -0,0 +1,65 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 浜х嚎涓嬫媺
+ *
+ * @author yhh
+ */
+export function GetProductionLines () {
+  return axios({
+    url: '/stationview/SelectProductionLine',
+    method: 'get'
+  })
+}
+
+/**
+ * 鏍规嵁浜х嚎鑾峰彇宸ヤ綅
+ *
+ * @author yhh
+ */
+export function GetStationList (id) {
+  return axios({
+    url: '/stationview/GetStationList',
+    method: 'get',
+    params:{id}
+  })
+}
+
+/**
+ * 鑾峰彇宸ヤ綅璇︽儏
+ *
+ * @author yhh
+ */
+export function GetStationDetail (params) {
+  return axios({
+    url: '/stationview/GetMaterialDetail',
+    method: 'get',
+    params:params
+  })
+}
+
+/**
+ * 鏇存柊宸ヤ綅浣跨敤鐘舵��
+ *
+ * @author yhh
+ */
+export function UpdateLock (parameter) {
+  return axios({
+    url: '/stationview/UpdateStationIslock',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏇存柊宸ヤ綅绌洪棽鐘舵��
+ *
+ * @author yhh
+ */
+export function UpdateEmpty (parameter) {
+  return axios({
+    url: '/stationview/UpdateStationKongXian',
+    method: 'get',
+    params: parameter
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SupplierStockReturnOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SupplierStockReturnOrderManage.js
new file mode 100644
index 0000000..e5380b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SupplierStockReturnOrderManage.js
@@ -0,0 +1,152 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ渚涘簲鍟嗛��搴�
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderPage (parameter) {
+  return axios({
+    url: '/SupplierStockReturnOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 渚涘簲鍟嗛��搴撳垪琛�
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderList (parameter) {
+  return axios({
+    url: '/SupplierStockReturnOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞渚涘簲鍟嗛��搴�
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderAdd (parameter) {
+  return axios({
+    url: '/SupplierStockReturnOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫渚涘簲鍟嗛��搴�
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderEdit (parameter) {
+  return axios({
+    url: '/SupplierStockReturnOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎渚涘簲鍟嗛��搴�
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderDelete (parameter) {
+  return axios({
+    url: '/SupplierStockReturnOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭渚涘簲鍟嗛��搴撶殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderToExcel (parameter) {
+  return axios({
+    url: '/SupplierStockReturnOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆渚涘簲鍟嗛��搴撶殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/SupplierStockReturnOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇渚涘簲鍟嗛��搴撶殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/SupplierStockReturnOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function SupplierStockReturnOrderLargeCategories() {
+  return axios({
+    url: '/SupplierStockReturnOrder/OrderTypeLargeCategory',
+    method: 'get'
+  })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function SupplierStockReturnOrderSubclass(id) {
+  return axios({
+    url: '/SupplierStockReturnOrder/OrderTypeSubclass',
+    method: 'get',
+    params:{id}
+  })
+}
+
+
+/**
+ * 渚涘簲鍟嗛��搴撳崟璇︽儏
+ *
+ * @author yhh
+ */
+export function SupplierStockReturnOrderDetailPage (parameter) {
+  return axios({
+    url: '/SupplierStockReturnOrder/DetailsPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SysTenantManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SysTenantManage.js
new file mode 100644
index 0000000..bcf66e9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SysTenantManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ绉熸埛琛�
+ *
+ * @author 钃濈嫄鏄�
+ */
+export function SysTenantPage (parameter) {
+  return axios({
+    url: '/SysTenant/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 绉熸埛琛ㄥ垪琛�
+ *
+ * @author 钃濈嫄鏄�
+ */
+export function SysTenantList (parameter) {
+  return axios({
+    url: '/SysTenant/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞绉熸埛琛�
+ *
+ * @author 钃濈嫄鏄�
+ */
+export function SysTenantAdd (parameter) {
+  return axios({
+    url: '/SysTenant/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫绉熸埛琛�
+ *
+ * @author 钃濈嫄鏄�
+ */
+export function SysTenantEdit (parameter) {
+  return axios({
+    url: '/SysTenant/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎绉熸埛琛�
+ *
+ * @author 钃濈嫄鏄�
+ */
+export function SysTenantDelete (parameter) {
+  return axios({
+    url: '/SysTenant/delete',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent2Manage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent2Manage.js
new file mode 100644
index 0000000..13a1d0b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent2Manage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀛︾敓淇℃伅
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2Page (parameter) {
+  return axios({
+    url: '/TestStudent2/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 瀛︾敓淇℃伅鍒楄〃
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2List (parameter) {
+  return axios({
+    url: '/TestStudent2/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞瀛︾敓淇℃伅
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2Add (parameter) {
+  return axios({
+    url: '/TestStudent2/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫瀛︾敓淇℃伅
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2Edit (parameter) {
+  return axios({
+    url: '/TestStudent2/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎瀛︾敓淇℃伅
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2Delete (parameter) {
+  return axios({
+    url: '/TestStudent2/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭瀛︾敓淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2ToExcel (parameter) {
+  return axios({
+    url: '/TestStudent2/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆瀛︾敓淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2FromExcel (data, parameter) {
+  return axios({
+    url: '/TestStudent2/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇瀛︾敓淇℃伅鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2DownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/TestStudent2/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent3Manage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent3Manage.js
new file mode 100644
index 0000000..80e8d39
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent3Manage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Page (parameter) {
+  return axios({
+    url: '/TestStudent3/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 瀛︾敓淇℃伅琛�3-鍒樻枃濂囧垪琛�
+ *
+ * @author liuwq
+ */
+export function TestStudent3List (parameter) {
+  return axios({
+    url: '/TestStudent3/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Add (parameter) {
+  return axios({
+    url: '/TestStudent3/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Edit (parameter) {
+  return axios({
+    url: '/TestStudent3/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Delete (parameter) {
+  return axios({
+    url: '/TestStudent3/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function TestStudent3ToExcel (parameter) {
+  return axios({
+    url: '/TestStudent3/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function TestStudent3ImportExcel (data, parameter) {
+  return axios({
+    url: '/TestStudent3/importExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel瀵煎叆妯℃澘
+ *
+ * @author liuwq
+ */
+export function TestStudent3DownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/TestStudent3/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent5Manage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent5Manage.js
new file mode 100644
index 0000000..a7f1b0a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent5Manage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ娴嬭瘯瀛︾敓琛�
+ *
+ * @author shaocx
+ */
+export function TestStudent5Page (parameter) {
+  return axios({
+    url: '/TestStudent5/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娴嬭瘯瀛︾敓琛ㄥ垪琛�
+ *
+ * @author shaocx
+ */
+export function TestStudent5List (parameter) {
+  return axios({
+    url: '/TestStudent5/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞娴嬭瘯瀛︾敓琛�
+ *
+ * @author shaocx
+ */
+export function TestStudent5Add (parameter) {
+  return axios({
+    url: '/TestStudent5/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫娴嬭瘯瀛︾敓琛�
+ *
+ * @author shaocx
+ */
+export function TestStudent5Edit (parameter) {
+  return axios({
+    url: '/TestStudent5/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎娴嬭瘯瀛︾敓琛�
+ *
+ * @author shaocx
+ */
+export function TestStudent5Delete (parameter) {
+  return axios({
+    url: '/TestStudent5/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭娴嬭瘯瀛︾敓琛ㄧ殑Excel鏂囦欢
+ *
+ * @author shaocx
+ */
+export function TestStudent5ToExcel (parameter) {
+  return axios({
+    url: '/TestStudent5/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆娴嬭瘯瀛︾敓琛ㄧ殑Excel鏂囦欢
+ *
+ * @author shaocx
+ */
+export function TestStudent5FromExcel (data, parameter) {
+  return axios({
+    url: '/TestStudent5/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇娴嬭瘯瀛︾敓琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author shaocx
+ */
+export function TestStudent5DownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/TestStudent5/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudentManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudentManage.js
new file mode 100644
index 0000000..94a99b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudentManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentPage (parameter) {
+  return axios({
+    url: '/TestStudent/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 瀛︾敓淇℃伅琛�1-閭甸暱绁ュ垪琛�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentList (parameter) {
+  return axios({
+    url: '/TestStudent/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentAdd (parameter) {
+  return axios({
+    url: '/TestStudent/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentEdit (parameter) {
+  return axios({
+    url: '/TestStudent/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentDelete (parameter) {
+  return axios({
+    url: '/TestStudent/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭瀛︾敓淇℃伅琛�1-閭甸暱绁ョ殑Excel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentToExcel (parameter) {
+  return axios({
+    url: '/TestStudent/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆瀛︾敓淇℃伅琛�1-閭甸暱绁ョ殑Excel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentImportExcel (data, parameter) {
+  return axios({
+    url: '/TestStudent/importExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇瀛︾敓淇℃伅琛�1-閭甸暱绁ョ殑Excel瀵煎叆妯℃澘
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/TestStudent/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestTeacherManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestTeacherManage.js
new file mode 100644
index 0000000..a42c0fa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestTeacherManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ娴嬭瘯鑰佸笀琛�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherPage (parameter) {
+  return axios({
+    url: '/TestTeacher/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娴嬭瘯鑰佸笀琛ㄥ垪琛�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherList (parameter) {
+  return axios({
+    url: '/TestTeacher/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞娴嬭瘯鑰佸笀琛�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherAdd (parameter) {
+  return axios({
+    url: '/TestTeacher/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫娴嬭瘯鑰佸笀琛�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherEdit (parameter) {
+  return axios({
+    url: '/TestTeacher/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎娴嬭瘯鑰佸笀琛�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherDelete (parameter) {
+  return axios({
+    url: '/TestTeacher/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭娴嬭瘯鑰佸笀琛ㄧ殑Excel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherToExcel (parameter) {
+  return axios({
+    url: '/TestTeacher/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆娴嬭瘯鑰佸笀琛ㄧ殑Excel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherFromExcel (data, parameter) {
+  return axios({
+    url: '/TestTeacher/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇娴嬭瘯鑰佸笀琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/TestTeacher/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/VStudentManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/VStudentManage.js
new file mode 100644
index 0000000..e764428
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/VStudentManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀛︾敓瑙嗗浘
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentPage (parameter) {
+  return axios({
+    url: '/VStudent/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 瀛︾敓瑙嗗浘鍒楄〃
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentList (parameter) {
+  return axios({
+    url: '/VStudent/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞瀛︾敓瑙嗗浘
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentAdd (parameter) {
+  return axios({
+    url: '/VStudent/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫瀛︾敓瑙嗗浘
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentEdit (parameter) {
+  return axios({
+    url: '/VStudent/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎瀛︾敓瑙嗗浘
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentDelete (parameter) {
+  return axios({
+    url: '/VStudent/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭瀛︾敓瑙嗗浘鐨凟xcel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentToExcel (parameter) {
+  return axios({
+    url: '/VStudent/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆瀛︾敓瑙嗗浘鐨凟xcel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentFromExcel (data, parameter) {
+  return axios({
+    url: '/VStudent/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇瀛︾敓瑙嗗浘鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/VStudent/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TransferOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TransferOrderManage.js
new file mode 100644
index 0000000..60cedbf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TransferOrderManage.js
@@ -0,0 +1,154 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ璋冩嫧鍗�
+ *
+ * @author yc
+ */
+export function TransferOrderPage (parameter) {
+  return axios({
+    url: '/TransferOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 璋冩嫧鍗曞垪琛�
+ *
+ * @author yc
+ */
+export function TransferOrderList (parameter) {
+  return axios({
+    url: '/TransferOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞璋冩嫧鍗�
+ *
+ * @author yc
+ */
+export function TransferOrderAdd (parameter) {
+  return axios({
+    url: '/TransferOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫璋冩嫧鍗�
+ *
+ * @author yc
+ */
+export function TransferOrderEdit (parameter) {
+  return axios({
+    url: '/TransferOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎璋冩嫧鍗�
+ *
+ * @author yc
+ */
+export function TransferOrderDelete (parameter) {
+  return axios({
+    url: '/TransferOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭璋冩嫧鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function TransferOrderToExcel (parameter) {
+  return axios({
+    url: '/TransferOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆璋冩嫧鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function TransferOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/TransferOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇璋冩嫧鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function TransferOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/TransferOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function TransferOrderLargeCategories() {
+  return axios({
+    url: '/TransferOrder/OrderTypeLargeCategory',
+    method: 'get'
+  })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function TransferOrderSubclass(id) {
+  return axios({
+    url: '/TransferOrder/OrderTypeSubclass',
+    method: 'get',
+    params:{id}
+  })
+}
+
+
+/**
+ * 璋冩嫧鍗曡鎯�
+ *
+ * @author yhh
+ */
+export function TransferOrderDetailPage (parameter) {
+  return axios({
+    url: '/TransferOrder/DetailsPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_AccessDetailsManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_AccessDetailsManage.js
new file mode 100644
index 0000000..cb24693
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_AccessDetailsManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function View_AccessDetailsPage (parameter) {
+  return axios({
+    url: '/View_AccessDetails/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鍑哄叆搴撹褰曞垪琛�
+ *
+ * @author lidunanping
+ */
+export function View_AccessDetailsList (parameter) {
+  return axios({
+    url: '/View_AccessDetails/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function View_AccessDetailsAdd (parameter) {
+  return axios({
+    url: '/View_AccessDetails/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function View_AccessDetailsEdit (parameter) {
+  return axios({
+    url: '/View_AccessDetails/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function View_AccessDetailsDelete (parameter) {
+  return axios({
+    url: '/View_AccessDetails/delete',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_Materialstock_MaterialManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_Materialstock_MaterialManage.js
new file mode 100644
index 0000000..6cefad6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_Materialstock_MaterialManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳瓨鐗╂枡瑙嗗浘
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialPage (parameter) {
+  return axios({
+    url: '/View_Materialstock_Material/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 搴撳瓨鐗╂枡瑙嗗浘鍒楄〃
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialList (parameter) {
+  return axios({
+    url: '/View_Materialstock_Material/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞搴撳瓨鐗╂枡瑙嗗浘
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialAdd (parameter) {
+  return axios({
+    url: '/View_Materialstock_Material/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫搴撳瓨鐗╂枡瑙嗗浘
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialEdit (parameter) {
+  return axios({
+    url: '/View_Materialstock_Material/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎搴撳瓨鐗╂枡瑙嗗浘
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialDelete (parameter) {
+  return axios({
+    url: '/View_Materialstock_Material/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭搴撳瓨鐗╂枡瑙嗗浘鐨凟xcel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialToExcel (parameter) {
+  return axios({
+    url: '/View_Materialstock_Material/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆搴撳瓨鐗╂枡瑙嗗浘鐨凟xcel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialFromExcel (data, parameter) {
+  return axios({
+    url: '/View_Materialstock_Material/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇搴撳瓨鐗╂枡瑙嗗浘鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/View_Materialstock_Material/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAreaManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAreaManage.js
new file mode 100644
index 0000000..da3b082
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAreaManage.js
@@ -0,0 +1,123 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳尯淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAreaPage (parameter) {
+  return axios({
+    url: '/WmsArea/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 搴撳尯淇℃伅鍒楄〃
+ *
+ * @author XJF
+ */
+export function WmsAreaList (parameter) {
+  return axios({
+    url: '/WmsArea/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞搴撳尯淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAreaAdd (parameter) {
+  return axios({
+    url: '/WmsArea/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫搴撳尯淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAreaEdit (parameter) {
+  return axios({
+    url: '/WmsArea/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎搴撳尯淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAreaDelete (parameter) {
+  return axios({
+    url: '/WmsArea/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭搴撳尯淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsAreaToExcel (parameter) {
+  return axios({
+    url: '/WmsArea/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆搴撳尯淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsAreaFromExcel (data, parameter) {
+  return axios({
+    url: '/WmsArea/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+/**
+ * 涓嬭浇搴撳尯淇℃伅鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsAreaDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/WmsArea/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鑾峰彇缁勮杞﹂棿搴撳尯
+ *
+ * @author yhh
+ */
+export function GetZuzhuangAreas () {
+  return axios({
+    url: '/WmsArea/TaskWmsArea',
+    method: 'get'
+  })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAssembleMaterialAttributManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAssembleMaterialAttributManage.js
new file mode 100644
index 0000000..0e38ce1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAssembleMaterialAttributManage.js
@@ -0,0 +1,125 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ缁勮杞﹂棿鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributPage (parameter) {
+  return axios({
+    url: '/WmsAssembleMaterialAttribut/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 缁勮杞﹂棿鐗╂枡淇℃伅鍒楄〃
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributList (parameter) {
+  return axios({
+    url: '/WmsAssembleMaterialAttribut/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞缁勮杞﹂棿鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributAdd (parameter) {
+  return axios({
+    url: '/WmsAssembleMaterialAttribut/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫缁勮杞﹂棿鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributEdit (parameter) {
+  return axios({
+    url: '/WmsAssembleMaterialAttribut/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎缁勮杞﹂棿鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributDelete (parameter) {
+  return axios({
+    url: '/WmsAssembleMaterialAttribut/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭缁勮杞﹂棿鐗╂枡淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributToExcel (parameter) {
+  return axios({
+    url: '/WmsAssembleMaterialAttribut/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆缁勮杞﹂棿鐗╂枡淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributFromExcel (data, parameter) {
+  return axios({
+    url: '/WmsAssembleMaterialAttribut/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇缁勮杞﹂棿鐗╂枡淇℃伅鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/WmsAssembleMaterialAttribut/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
+
+/**
+* 鑾峰彇WmsAssembleMaterial鍒楄〃
+* @author XJF
+*/
+export function WmsAssembleMaterialAttributFkWmsAssembleMaterialList() {
+  return axios({
+    url: '/WmsAssembleMaterialAttribut/fkWmsAssembleMaterial',
+    method: 'get'
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsContainerManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsContainerManage.js
new file mode 100644
index 0000000..470c4b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsContainerManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鎵樼洏淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsContainerPage (parameter) {
+  return axios({
+    url: '/WmsContainer/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鎵樼洏淇℃伅鍒楄〃
+ *
+ * @author XJF
+ */
+export function WmsContainerList (parameter) {
+  return axios({
+    url: '/WmsContainer/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鎵樼洏淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsContainerAdd (parameter) {
+  return axios({
+    url: '/WmsContainer/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鎵樼洏淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsContainerEdit (parameter) {
+  return axios({
+    url: '/WmsContainer/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鎵樼洏淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsContainerDelete (parameter) {
+  return axios({
+    url: '/WmsContainer/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭鎵樼洏淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsContainerToExcel (parameter) {
+  return axios({
+    url: '/WmsContainer/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆鎵樼洏淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsContainerFromExcel (data, parameter) {
+  return axios({
+    url: '/WmsContainer/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇鎵樼洏淇℃伅鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsContainerDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/WmsContainer/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsDumpOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsDumpOrderManage.js
new file mode 100644
index 0000000..1ee1090
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsDumpOrderManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ杞偍鍗�
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderPage (parameter) {
+  return axios({
+    url: '/WmsDumpOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 杞偍鍗曞垪琛�
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderList (parameter) {
+  return axios({
+    url: '/WmsDumpOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞杞偍鍗�
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderAdd (parameter) {
+  return axios({
+    url: '/WmsDumpOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫杞偍鍗�
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderEdit (parameter) {
+  return axios({
+    url: '/WmsDumpOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎杞偍鍗�
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderDelete (parameter) {
+  return axios({
+    url: '/WmsDumpOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭杞偍鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderToExcel (parameter) {
+  return axios({
+    url: '/WmsDumpOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆杞偍鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/WmsDumpOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇杞偍鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/WmsDumpOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsGoodsReturnOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsGoodsReturnOrderManage.js
new file mode 100644
index 0000000..690f882
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsGoodsReturnOrderManage.js
@@ -0,0 +1,123 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ閫�璐у崟
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderPage (parameter) {
+  return axios({
+    url: '/WmsGoodsReturnOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 閫�璐у崟鍒楄〃
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderList (parameter) {
+  return axios({
+    url: '/WmsGoodsReturnOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞閫�璐у崟
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderAdd (parameter) {
+  return axios({
+    url: '/WmsGoodsReturnOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫閫�璐у崟
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderEdit (parameter) {
+  return axios({
+    url: '/WmsGoodsReturnOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎閫�璐у崟
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderDelete (parameter) {
+  return axios({
+    url: '/WmsGoodsReturnOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭閫�璐у崟鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderToExcel (parameter) {
+  return axios({
+    url: '/WmsGoodsReturnOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆閫�璐у崟鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/WmsGoodsReturnOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇閫�璐у崟鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/WmsGoodsReturnOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+/**
+ * 鐗╂枡璇︽儏
+ */
+ export function WmsOrderLldDetail (parameter) {
+  return axios({
+    url: '/WmsGoodsReturnOrder/PageDetail',
+    method: 'get',
+    params: parameter
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialManage.js
new file mode 100644
index 0000000..17dd604
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialManage.js
@@ -0,0 +1,102 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsMaterialPage (parameter) {
+  return axios({
+    url: '/WmsMaterial/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鐗╂枡淇℃伅鍒楄〃
+ *
+ * @author XJF
+ */
+export function WmsMaterialList (parameter) {
+  return axios({
+    url: '/WmsMaterial/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsMaterialAdd (parameter) {
+  return axios({
+    url: '/WmsMaterial/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsMaterialEdit (parameter) {
+  return axios({
+    url: '/WmsMaterial/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsMaterialDelete (parameter) {
+  return axios({
+    url: '/WmsMaterial/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇搴撳尯涓嬫媺
+ *
+ * @author yhh
+ */
+export function GetAreas (parameter) {
+  return axios({
+    url: '/WmsMaterial/GetAreaList',
+    method: 'get'
+  })
+}
+
+/**
+ * 鑾峰彇宸ヤ綅涓嬫媺
+ *
+ * @author yhh
+ */
+export function GetStations (parameter) {
+  return axios({
+    url: '/WmsMaterial/GetStationList',
+    method: 'get'
+  })
+}
+
+/**
+ * 鍚屾Desk鏁版嵁
+ *
+ * @author dln
+ */
+export function Getdeskdata () {
+  return axios({
+    url: '/deskdatasynchronous/GetMomMaterial',
+    method: 'post'
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialStockManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialStockManage.js
new file mode 100644
index 0000000..b8f774b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialStockManage.js
@@ -0,0 +1,26 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳瓨琛�
+ *
+ * @author XJF
+ */
+export function WmsMaterialStockPage (parameter) {
+  return axios({
+    url: '/WmsMaterialStock/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+
+/**
+* 鑾峰彇鎵�鍦ㄥ簱鍖哄垪琛�
+* @author XJF
+*/
+export function WmsMaterialStockFkWmsAreaList() {
+  return axios({
+    url: '/WmsMaterialStock/WmsArea',
+    method: 'get'
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMerchantinfoManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMerchantinfoManage.js
new file mode 100644
index 0000000..c943ecd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMerchantinfoManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀹㈠晢淇℃伅琛�
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoPage (parameter) {
+  return axios({
+    url: '/WmsMerchantinfo/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 瀹㈠晢淇℃伅琛ㄥ垪琛�
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoList (parameter) {
+  return axios({
+    url: '/WmsMerchantinfo/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞瀹㈠晢淇℃伅琛�
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoAdd (parameter) {
+  return axios({
+    url: '/WmsMerchantinfo/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫瀹㈠晢淇℃伅琛�
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoEdit (parameter) {
+  return axios({
+    url: '/WmsMerchantinfo/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎瀹㈠晢淇℃伅琛�
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoDelete (parameter) {
+  return axios({
+    url: '/WmsMerchantinfo/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭瀹㈠晢淇℃伅琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoToExcel (parameter) {
+  return axios({
+    url: '/WmsMerchantinfo/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆瀹㈠晢淇℃伅琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoFromExcel (data, parameter) {
+  return axios({
+    url: '/WmsMerchantinfo/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇瀹㈠晢淇℃伅琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/WmsMerchantinfo/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderInspectionManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderInspectionManage.js
new file mode 100644
index 0000000..07d5c17
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderInspectionManage.js
@@ -0,0 +1,137 @@
+锘縤mport { axios } from '@/utils/request'
+// 鎶ユ鍗�
+/**
+ * 鏌ヨ鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderPage (parameter) {
+  return axios({
+    url: '/wmsinspectorder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鍗曟嵁琛ㄥ垪琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderList (parameter) {
+  return axios({
+    url: '/WmsOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderAdd (parameter) {
+  return axios({
+    url: '/WmsOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderEdit (parameter) {
+  return axios({
+    url: '/WmsOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderDelete (parameter) {
+  return axios({
+    url: '/WmsOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭鍗曟嵁琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsOrderToExcel (parameter) {
+  return axios({
+    url: '/WmsOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆鍗曟嵁琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/WmsOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇鍗曟嵁琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/WmsOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
+/**
+ * 鐗╂枡璇︽儏
+ *
+ */
+ export function WmsOrderRukuDetail(parameter) {
+  return axios({
+    url: '/wmsinspectorder/PageDetail',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鎶ユ
+ *
+ */
+ export function WmsOrderBaojian(parameter) {
+  return axios({
+    url: '/wmsinspectorder/InspectionDeclaration',
+    method: 'post',
+    data: parameter
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderManage.js
new file mode 100644
index 0000000..4f899fc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderManage.js
@@ -0,0 +1,137 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderPage (parameter) {
+  return axios({
+    url: '/WmsOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鍗曟嵁琛ㄥ垪琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderList (parameter) {
+  return axios({
+    url: '/WmsOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderAdd (parameter) {
+  return axios({
+    url: '/WmsOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderEdit (parameter) {
+  return axios({
+    url: '/WmsOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderDelete (parameter) {
+  return axios({
+    url: '/WmsOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭鍗曟嵁琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsOrderToExcel (parameter) {
+  return axios({
+    url: '/WmsOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆鍗曟嵁琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/WmsOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇鍗曟嵁琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/WmsOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
+/**
+ * 鐗╂枡璇︽儏
+ *
+ */
+ export function WmsOrderRukuDetail (parameter) {
+  return axios({
+    url: 'wmsorder/PageDetail',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 涓嬪彂
+ *
+ */
+ export function dealDistribute(data) {
+  return axios({
+    url: '/wmsorder/DistributeInOrder',
+    method: 'post',
+    data: data
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderTypeManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderTypeManage.js
new file mode 100644
index 0000000..2ca8d60
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderTypeManage.js
@@ -0,0 +1,53 @@
+锘縤mport { axios } from '@/utils/request'
+ 
+/**
+ * 鏍规嵁鐖秈d鏌ヨ鍗曟嵁绫诲瀷鍒楄〃
+ * @author yuhuanhuan
+ */
+export function WareOrderTypePage (pid) {
+  return axios({
+    url: '/WareOrderType/listNonPage',
+    method: 'get',
+    params: {Pid:pid}
+  })
+}
+ 
+ 
+/**
+ * 娣诲姞鍗曟嵁绫诲瀷缁存姢琛�
+ *
+ * @author yrj
+ */
+export function WareOrderTypeAdd (parameter) {
+  return axios({
+    url: '/WareOrderType/add',
+    method: 'post',
+    data: parameter
+  })
+}
+ 
+/**
+ * 缂栬緫鍗曟嵁绫诲瀷缁存姢琛�
+ *
+ * @author yrj
+ */
+export function WareOrderTypeEdit (parameter) {
+  return axios({
+    url: '/WareOrderType/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+ 
+/**
+ * 鍒犻櫎鍗曟嵁绫诲瀷缁存姢琛�
+ *
+ * @author yrj
+ */
+export function WareOrderTypeDelete (parameter) {
+  return axios({
+    url: '/WareOrderType/delete',
+    method: 'post',
+    data: parameter
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPdaPowerManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPdaPowerManage.js
new file mode 100644
index 0000000..b4711a5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPdaPowerManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨPDA鑿滃崟
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerPage (parameter) {
+  return axios({
+    url: '/WmsPdaPower/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * PDA鑿滃崟鍒楄〃
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerList (parameter) {
+  return axios({
+    url: '/WmsPdaPower/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞PDA鑿滃崟
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerAdd (parameter) {
+  return axios({
+    url: '/WmsPdaPower/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫PDA鑿滃崟
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerEdit (parameter) {
+  return axios({
+    url: '/WmsPdaPower/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎PDA鑿滃崟
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerDelete (parameter) {
+  return axios({
+    url: '/WmsPdaPower/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭PDA鑿滃崟鐨凟xcel鏂囦欢
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerToExcel (parameter) {
+  return axios({
+    url: '/WmsPdaPower/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆PDA鑿滃崟鐨凟xcel鏂囦欢
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerFromExcel (data, parameter) {
+  return axios({
+    url: '/WmsPdaPower/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇PDA鑿滃崟鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/WmsPdaPower/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPlaceManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPlaceManage.js
new file mode 100644
index 0000000..848f501
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPlaceManage.js
@@ -0,0 +1,117 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撲綅淇℃伅
+ *
+ * @author liduanping
+ */
+export function WmsPlacePage (parameter) {
+  return axios({
+    url: '/WmsPlace/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 搴撲綅淇℃伅鍒楄〃
+ *
+ * @author liduanping
+ */
+export function WmsPlaceList (parameter) {
+  return axios({
+    url: '/WmsPlace/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞搴撲綅淇℃伅
+ *
+ * @author liduanping
+ */
+export function WmsPlaceAdd (parameter) {
+  return axios({
+    url: '/WmsPlace/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫搴撲綅淇℃伅
+ *
+ * @author liduanping
+ */
+export function WmsPlaceEdit (parameter) {
+  return axios({
+    url: '/WmsPlace/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎搴撲綅淇℃伅
+ *
+ * @author liduanping
+ */
+export function WmsPlaceDelete (parameter) {
+  return axios({
+    url: '/WmsPlace/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+* 鑾峰彇WmsArea鍒楄〃
+* @author liduanping
+*/
+export function WmsPlaceFkWmsAreaList() {
+  return axios({
+    url: '/WmsPlace/fkWmsArea',
+    method: 'get'
+  })
+}
+
+/**
+ * 鎵归噺閿佸畾
+ *
+ * @author yuhuanhuan
+ */
+export function WmsPlaceLock (ids) {
+  return axios({
+    url: '/WmsPlace/MoreLock',
+    method: 'post',
+    data: {id:ids}
+  })
+}
+
+/**
+ * 鎵归噺瑙i攣
+ *
+ * @author yuhuanhuan
+ */
+export function WmsPlaceUnlock (ids) {
+  return axios({
+    url: '/WmsPlace/MoreUnlock',
+    method: 'post',
+    data: {id:ids}
+  })
+}
+
+
+/**
+ * 鏃犲弬鑾峰彇宸烽亾鍒楄〃
+ *
+ * @author yuhuanhuan
+ */
+export function WmsPlaceGetFAisles () {
+  return axios({
+    url: '/WmsPlace/GetFAisle',
+    method: 'get'
+  })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsReceiptOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsReceiptOrderManage.js
new file mode 100644
index 0000000..2dd5d99
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsReceiptOrderManage.js
@@ -0,0 +1,147 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鏀惰揣鍗�
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderPage (parameter) {
+  return axios({
+    url: '/WmsReceiptOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏀惰揣鍗曞垪琛�
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderList (parameter) {
+  return axios({
+    url: '/WmsReceiptOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鏀惰揣鍗�
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderAdd (parameter) {
+  return axios({
+    url: '/WmsReceiptOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鏀惰揣鍗�
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderEdit (parameter) {
+  return axios({
+    url: '/WmsReceiptOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鏀惰揣鍗�
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderDelete (parameter) {
+  return axios({
+    url: '/WmsReceiptOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭鏀惰揣鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderToExcel (parameter) {
+  return axios({
+    url: '/WmsReceiptOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆鏀惰揣鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/WmsReceiptOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇鏀惰揣鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/WmsReceiptOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
+
+/**
+ * 鐗╂枡璇︽儏
+ */
+ export function WmsOrderLldDetail (parameter) {
+  return axios({
+    url: '/WmsReceiptOrder/PageDetail',
+    method: 'get',
+    params: parameter
+  })
+}
+
+// 纭鏀惰揣
+export function WmsReceiptOrderSh(parameter) {
+  return axios({
+    url: '/wmsreceiptorder/PcConfirmReceipt',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 鎶ユ
+ *
+ */
+ export function WmsOrderBaojian(parameter) {
+  return axios({
+    url: '/wmsinspectorder/InspectionDeclaration',
+    method: 'post',
+    data: parameter
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSortOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSortOrderManage.js
new file mode 100644
index 0000000..f084a31
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSortOrderManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍒嗘嫞鍗�
+ *
+ * @author XJF
+ */
+export function WmsSortOrderPage (parameter) {
+  return axios({
+    url: '/WmsSortOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鍒嗘嫞鍗曞垪琛�
+ *
+ * @author XJF
+ */
+export function WmsSortOrderList (parameter) {
+  return axios({
+    url: '/WmsSortOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鍒嗘嫞鍗�
+ *
+ * @author XJF
+ */
+export function WmsSortOrderAdd (parameter) {
+  return axios({
+    url: '/WmsSortOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鍒嗘嫞鍗�
+ *
+ * @author XJF
+ */
+export function WmsSortOrderEdit (parameter) {
+  return axios({
+    url: '/WmsSortOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鍒嗘嫞鍗�
+ *
+ * @author XJF
+ */
+export function WmsSortOrderDelete (parameter) {
+  return axios({
+    url: '/WmsSortOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭鍒嗘嫞鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsSortOrderToExcel (parameter) {
+  return axios({
+    url: '/WmsSortOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆鍒嗘嫞鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsSortOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/WmsSortOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇鍒嗘嫞鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsSortOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/WmsSortOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsStockReturnOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsStockReturnOrderManage.js
new file mode 100644
index 0000000..2c67a4f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsStockReturnOrderManage.js
@@ -0,0 +1,124 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ閫�搴撳崟
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderPage (parameter) {
+  return axios({
+    url: '/WmsStockReturnOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 閫�搴撳崟鍒楄〃
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderList (parameter) {
+  return axios({
+    url: '/WmsStockReturnOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞閫�搴撳崟
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderAdd (parameter) {
+  return axios({
+    url: '/WmsStockReturnOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫閫�搴撳崟
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderEdit (parameter) {
+  return axios({
+    url: '/WmsStockReturnOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎閫�搴撳崟
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderDelete (parameter) {
+  return axios({
+    url: '/WmsStockReturnOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭閫�搴撳崟鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderToExcel (parameter) {
+  return axios({
+    url: '/WmsStockReturnOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆閫�搴撳崟鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/WmsStockReturnOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇閫�搴撳崟鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/WmsStockReturnOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
+/**
+ * 鐗╂枡璇︽儏
+ */
+ export function WmsOrderRDetail (parameter) {
+  return axios({
+    url: '/WmsStockReturnOrder/PageDetail',
+    method: 'get',
+    params: parameter
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSupplierManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSupplierManage.js
new file mode 100644
index 0000000..b49b812
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSupplierManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ渚涘簲鍟�
+ *
+ * @author li
+ */
+export function WmsSupplierPage (parameter) {
+  return axios({
+    url: '/WmsSupplier/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 渚涘簲鍟嗗垪琛�
+ *
+ * @author li
+ */
+export function WmsSupplierList (parameter) {
+  return axios({
+    url: '/WmsSupplier/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞渚涘簲鍟�
+ *
+ * @author li
+ */
+export function WmsSupplierAdd (parameter) {
+  return axios({
+    url: '/WmsSupplier/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫渚涘簲鍟�
+ *
+ * @author li
+ */
+export function WmsSupplierEdit (parameter) {
+  return axios({
+    url: '/WmsSupplier/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎渚涘簲鍟�
+ *
+ * @author li
+ */
+export function WmsSupplierDelete (parameter) {
+  return axios({
+    url: '/WmsSupplier/delete',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTakeMaterialOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTakeMaterialOrderManage.js
new file mode 100644
index 0000000..5a60a7f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTakeMaterialOrderManage.js
@@ -0,0 +1,141 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ棰嗘枡鍗�
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderPage (parameter) {
+  return axios({
+    url: '/WmsTakeMaterialOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 棰嗘枡鍗曞垪琛�
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderList (parameter) {
+  return axios({
+    url: '/WmsTakeMaterialOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞棰嗘枡鍗�
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderAdd (parameter) {
+  return axios({
+    url: '/WmsTakeMaterialOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫棰嗘枡鍗�
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderEdit (parameter) {
+  return axios({
+    url: '/WmsTakeMaterialOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎棰嗘枡鍗�
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderDelete (parameter) {
+  return axios({
+    url: '/WmsTakeMaterialOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭棰嗘枡鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderToExcel (parameter) {
+  return axios({
+    url: '/WmsTakeMaterialOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆棰嗘枡鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/WmsTakeMaterialOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇棰嗘枡鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/WmsTakeMaterialOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
+
+
+
+
+/**
+ * 鐗╂枡璇︽儏
+ */
+ export function WmsOrderLldDetail (parameter) {
+  return axios({
+    url: '/wmstakematerialorder/PageDetail',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 棰嗘枡鍗曚笅鍙�
+ *
+ * @author yhh
+ */
+ export function Distribute (ids) {
+  return axios({
+    url: '/wmstakematerialorder/DistributeOrder',
+    method: 'post',
+    data:{id:ids}
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTaskManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTaskManage.js
new file mode 100644
index 0000000..0a337b3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTaskManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ浠诲姟绠$悊
+ *
+ * @author liduanping
+ */
+export function WmsTaskPage (parameter) {
+  return axios({
+    url: '/WmsTask/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 浠诲姟鐗╂枡璇︽儏
+ *
+ * @author yhh
+ */
+export function WmsTaskDetail (parameter) {
+  return axios({
+    url: '/WmsTask/detail',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎浠诲姟
+ *
+ * @author yhh
+ */
+export function WmsTaskCancel (id) {
+  return axios({
+    url: '/WmsTask/CancelTask',
+    method: 'post',
+    data: {id}
+  })
+}
+
+/**
+ * 寮哄埗瀹屾垚
+ *
+ * @author yhh
+ */
+export function WmsTaskFinish (id) {
+  return axios({
+    url: '/WmsTask/finish',
+    method: 'post',
+    data: {id}
+  })
+}
+
+/**
+ * 鏇存敼浼樺厛绾�
+ *
+ * @author yhh
+ */
+export function WmsTaskUpdateLevel (parameter) {
+  return axios({
+    url: '/WmsTask/upwardTaskLevel',
+    method: 'get',
+    params: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsWarehouseEntranceManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsWarehouseEntranceManage.js
new file mode 100644
index 0000000..e0dd0b9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsWarehouseEntranceManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳彛琛�
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntrancePage (parameter) {
+  return axios({
+    url: '/WmsWarehouseEntrance/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 搴撳彛琛ㄥ垪琛�
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntranceList (parameter) {
+  return axios({
+    url: '/WmsWarehouseEntrance/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞搴撳彛琛�
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntranceAdd (parameter) {
+  return axios({
+    url: '/WmsWarehouseEntrance/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫搴撳彛琛�
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntranceEdit (parameter) {
+  return axios({
+    url: '/WmsWarehouseEntrance/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎搴撳彛琛�
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntranceDelete (parameter) {
+  return axios({
+    url: '/WmsWarehouseEntrance/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭搴撳彛琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntranceToExcel (parameter) {
+  return axios({
+    url: '/WmsWarehouseEntrance/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆搴撳彛琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntranceFromExcel (data, parameter) {
+  return axios({
+    url: '/WmsWarehouseEntrance/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇搴撳彛琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntranceDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/WmsWarehouseEntrance/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ZZProductFinishedOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ZZProductFinishedOrderManage.js
new file mode 100644
index 0000000..e04e489
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ZZProductFinishedOrderManage.js
@@ -0,0 +1,153 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderPage (parameter) {
+  return axios({
+    url: '/ZZProductFinishedOrder/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱鍒楄〃
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderList (parameter) {
+  return axios({
+    url: '/ZZProductFinishedOrder/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderAdd (parameter) {
+  return axios({
+    url: '/ZZProductFinishedOrder/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderEdit (parameter) {
+  return axios({
+    url: '/ZZProductFinishedOrder/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderDelete (parameter) {
+  return axios({
+    url: '/ZZProductFinishedOrder/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderToExcel (parameter) {
+  return axios({
+    url: '/ZZProductFinishedOrder/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderFromExcel (data, parameter) {
+  return axios({
+    url: '/ZZProductFinishedOrder/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/ZZProductFinishedOrder/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function ZZProductFinishedOrderLargeCategories() {
+  return axios({
+    url: '/ZZProductFinishedOrder/OrderTypeLargeCategory',
+    method: 'get'
+  })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function ZZProductFinishedOrderSubclass(id) {
+  return axios({
+    url: '/ZZProductFinishedOrder/OrderTypeSubclass',
+    method: 'get',
+    params:{id}
+  })
+}
+
+
+/**
+ * 瀹屽伐鍏ュ簱鍗曡鎯�
+ *
+ * @author yhh
+ */
+export function ZZProductFinishedOrderDetailPage (parameter) {
+  return axios({
+    url: '/ZZProductFinishedOrder/DetailsPage',
+    method: 'get',
+    params: parameter
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ceManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ceManage.js
new file mode 100644
index 0000000..2d4db38
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ceManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鐗╂枡淇℃伅
+ *
+ * @author liduanping
+ */
+export function cePage (parameter) {
+  return axios({
+    url: '/ce/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鐗╂枡淇℃伅鍒楄〃
+ *
+ * @author liduanping
+ */
+export function ceList (parameter) {
+  return axios({
+    url: '/ce/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞鐗╂枡淇℃伅
+ *
+ * @author liduanping
+ */
+export function ceAdd (parameter) {
+  return axios({
+    url: '/ce/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鐗╂枡淇℃伅
+ *
+ * @author liduanping
+ */
+export function ceEdit (parameter) {
+  return axios({
+    url: '/ce/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鐗╂枡淇℃伅
+ *
+ * @author liduanping
+ */
+export function ceDelete (parameter) {
+  return axios({
+    url: '/ce/delete',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/cesManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/cesManage.js
new file mode 100644
index 0000000..16eb5dc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/cesManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨces
+ *
+ * @author liduanping
+ */
+export function cesPage (parameter) {
+  return axios({
+    url: '/ces/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * ces鍒楄〃
+ *
+ * @author liduanping
+ */
+export function cesList (parameter) {
+  return axios({
+    url: '/ces/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞ces
+ *
+ * @author liduanping
+ */
+export function cesAdd (parameter) {
+  return axios({
+    url: '/ces/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫ces
+ *
+ * @author liduanping
+ */
+export function cesEdit (parameter) {
+  return axios({
+    url: '/ces/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎ces
+ *
+ * @author liduanping
+ */
+export function cesDelete (parameter) {
+  return axios({
+    url: '/ces/delete',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/liuying/TestStudent2Manage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/liuying/TestStudent2Manage.js
new file mode 100644
index 0000000..8e98139
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/liuying/TestStudent2Manage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀛︾敓淇℃伅琛↙iuying
+ *
+ * @author liuying
+ */
+export function TestStudent2Page (parameter) {
+  return axios({
+    url: '/TestStudent2/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 瀛︾敓淇℃伅琛↙iuying鍒楄〃
+ *
+ * @author liuying
+ */
+export function TestStudent2List (parameter) {
+  return axios({
+    url: '/TestStudent2/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞瀛︾敓淇℃伅琛↙iuying
+ *
+ * @author liuying
+ */
+export function TestStudent2Add (parameter) {
+  return axios({
+    url: '/TestStudent2/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫瀛︾敓淇℃伅琛↙iuying
+ *
+ * @author liuying
+ */
+export function TestStudent2Edit (parameter) {
+  return axios({
+    url: '/TestStudent2/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎瀛︾敓淇℃伅琛↙iuying
+ *
+ * @author liuying
+ */
+export function TestStudent2Delete (parameter) {
+  return axios({
+    url: '/TestStudent2/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭瀛︾敓淇℃伅琛↙iuying鐨凟xcel鏂囦欢
+ *
+ * @author liuying
+ */
+export function TestStudent2ToExcel (parameter) {
+  return axios({
+    url: '/TestStudent2/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆瀛︾敓淇℃伅琛↙iuying鐨凟xcel鏂囦欢
+ *
+ * @author liuying
+ */
+export function TestStudent2FromExcel (data, parameter) {
+  return axios({
+    url: '/TestStudent2/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇瀛︾敓淇℃伅琛↙iuying鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author liuying
+ */
+export function TestStudent2DownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/TestStudent2/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/prePareManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/prePareManage.js
new file mode 100644
index 0000000..146fadc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/prePareManage.js
@@ -0,0 +1,79 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鍒嗛〉鏌ヨ澶囨枡鍗�
+ *
+ * @author yhh
+ */
+export function PrePareManagePage (parameter) {
+  return axios({
+    url: '/lespreparation/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞澶囨枡鍗�
+ *
+ * @author yhh
+ */
+export function PrePareManageAdd (data) {
+  return axios({
+    url: '/lespreparation/AddPreparation',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 鍒犻櫎澶囨枡鍗�
+ *
+ * @author yhh
+ */
+export function PrePareManageDelete (ids) {
+  return axios({
+    url: '/lespreparation/delete',
+    method: 'post',
+    data: {id:ids}
+  })
+}
+
+/**
+ * 鑾峰彇澶囨枡鍗曞彿
+ *
+ * @author yhh
+ */
+export function GetBillNumber () {
+  return axios({
+    url: '/lespreparation/GetTakeMaterialsNo',
+    method: 'get'
+  })
+}
+
+
+/**
+ * 澶囨枡鐗╂枡鏌ヨ
+ *
+ * @author yhh
+ */
+export function QueryMaterials (params) {
+  return axios({
+    url: '/lespreparation/MaterialSourcepage',
+    method: 'get',
+    params:params
+  })
+}
+
+/**
+ * 鍗曟嵁璇︽儏
+ *
+ * @author yhh
+ */
+export function CncTakeMaterialsDetailPage (params) {
+  return axios({
+    url: '/lespreparation/detailPage',
+    method: 'get',
+    params:params
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/test/TestStudent3Manage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/test/TestStudent3Manage.js
new file mode 100644
index 0000000..3b29097
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/test/TestStudent3Manage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Page (parameter) {
+  return axios({
+    url: '/TestStudent3/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 瀛︾敓淇℃伅琛�3-鍒樻枃濂囧垪琛�
+ *
+ * @author liuwq
+ */
+export function TestStudent3List (parameter) {
+  return axios({
+    url: '/TestStudent3/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Add (parameter) {
+  return axios({
+    url: '/TestStudent3/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Edit (parameter) {
+  return axios({
+    url: '/TestStudent3/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Delete (parameter) {
+  return axios({
+    url: '/TestStudent3/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function TestStudent3ToExcel (parameter) {
+  return axios({
+    url: '/TestStudent3/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function TestStudent3FromExcel (data, parameter) {
+  return axios({
+    url: '/TestStudent3/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel瀵煎叆妯℃澘
+ *
+ * @author liuwq
+ */
+export function TestStudent3DownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/TestStudent3/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/README.md b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/README.md
new file mode 100644
index 0000000..46aab4d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/README.md
@@ -0,0 +1 @@
+/** 姝ゆ枃浠跺す涓嬩唬鐮佸敖閲忎笉瑕佸姩锛屽簳搴у崌绾х洿鎺ヨ鐩栨浛鎹� **/
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/appManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/appManage.js
new file mode 100644
index 0000000..870787e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/appManage.js
@@ -0,0 +1,106 @@
+/**
+ * 绯荤粺搴旂敤
+ *
+ * @author yubaoshan
+ * @date 2020骞�4鏈�23鏃�12:10:57
+ */
+import { axios } from '@/utils/request'
+
+/**
+ * 绯荤粺搴旂敤鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020骞�7鏈�9鏃�15:05:01
+ */
+export function getAppPage (parameter) {
+  return axios({
+    url: '/sysApp/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 绯荤粺搴旂敤鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020骞�7鏈�9鏃�15:05:01
+ */
+export function getAppList (parameter) {
+  return axios({
+    url: '/sysApp/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏂板绯荤粺搴旂敤
+ *
+ * @author yubaoshan
+ * @date 2020骞�7鏈�9鏃�15:05:01
+ */
+export function sysAppAdd (parameter) {
+  return axios({
+    url: '/sysApp/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫绯荤粺搴旂敤
+ *
+ * @author yubaoshan
+ * @param parameter
+ * @returns {*}
+ */
+export function sysAppEdit (parameter) {
+  return axios({
+    url: '/sysApp/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎绯荤粺搴旂敤
+ *
+ * @author yubaoshan
+ * @date 2020骞�7鏈�9鏃�15:05:01
+ */
+export function sysAppDelete (parameter) {
+  return axios({
+    url: '/sysApp/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 璁句负榛樿搴旂敤
+ *
+ * @author yubaoshan
+ * @date 2020骞�7鏈�9鏃�15:05:01
+ */
+export function sysAppSetAsDefault (parameter) {
+  return axios({
+    url: '/sysApp/setAsDefault',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 淇敼搴旂敤鐘舵��
+ *
+ * @author zuohuaijun
+ * @date 2021骞�1鏈�1鏃�
+ */
+export function sysAppChangeStatus (parameter) {
+  return axios({
+    url: '/sysApp/changeStatus',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/auditorworkflowManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/auditorworkflowManage.js
new file mode 100644
index 0000000..2703f28
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/auditorworkflowManage.js
@@ -0,0 +1,61 @@
+import {
+  axios
+} from '@/utils/request'
+
+// 瀹℃牳娴佺▼鐩稿叧
+
+/**
+ * 鑾峰彇鎴戝彂璧风殑娴佺▼
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/09
+ */
+ export function getMystartWorkflow(parameter) {
+  return axios({
+    url: '/workflowmanager/page',
+    method: 'post',
+    params: parameter
+  })
+}
+
+/**
+ * 鏈鏍告祦绋�
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/09
+ */
+ export function getMyUnAuditorWorkflow(parameter) {
+  return axios({
+    url: '/auditorworkflow/myworkflowlist',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娴佺▼瀹℃牳鑺傜偣鏁版嵁
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/09
+ */
+ export function getStepAuditor(parameter) {
+  return axios({
+    url: '/auditorworkflow/stepauditor',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 瀹℃牳娴佺▼
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/09
+ */
+ export function auditorWorkflow(parameter) {
+  return axios({
+    url: '/auditorworkflow/auditor',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/configManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/configManage.js
new file mode 100644
index 0000000..34bdd41
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/configManage.js
@@ -0,0 +1,85 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鍒嗛〉鏌ヨ閰嶇疆鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:57
+ */
+export function sysConfigPage (parameter) {
+  return axios({
+    url: '/sysConfig/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞绯荤粺鍙傛暟閰嶇疆
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:57
+ */
+export function sysConfigAdd (parameter) {
+  return axios({
+    url: '/sysConfig/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫绯荤粺鍙傛暟閰嶇疆
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:57
+ */
+export function sysConfigEdit (parameter) {
+  return axios({
+    url: '/sysConfig/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎绯荤粺鍙傛暟閰嶇疆
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:57
+ */
+export function sysConfigDelete (parameter) {
+  return axios({
+    url: '/sysConfig/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇瀛楀吀绫诲瀷涓嬫墍鏈夊瓧鍏革紝涓句緥锛岃繑鍥炴牸寮忎负锛歔{code:"M",value:"鐢�"},{code:"F",value:"濂�"}]
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 02:06
+ */
+export function sysDictTypeDropDown (parameter) {
+  return axios({
+    url: '/sysDictType/dropDown',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇绯荤粺鐨勬墍鏈変换鍔″垪琛�
+ *
+ * @author yubaoshan
+ * @date 2020/7/8 20:46
+ */
+export function sysTimersGetActionClasses (parameter) {
+  return axios({
+    url: '/sysTimers/getActionClasses',
+    method: 'get',
+    params: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictDataManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictDataManage.js
new file mode 100644
index 0000000..34f6770
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictDataManage.js
@@ -0,0 +1,87 @@
+import {
+  axios
+} from '@/utils/request'
+
+/**
+ * 鏌ヨ绯荤粺瀛楀吀鍊�
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 02:24
+ */
+export function sysDictDataPage(parameter) {
+  return axios({
+    url: '/sysDictData/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞绯荤粺瀛楀吀鍊�
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 02:24
+ */
+export function sysDictDataAdd(parameter) {
+  return axios({
+    url: '/sysDictData/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫绯荤粺瀛楀吀鍊�
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 02:25
+ */
+export function sysDictDataEdit(parameter) {
+  return axios({
+    url: '/sysDictData/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎绯荤粺瀛楀吀鍊�
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 02:25
+ */
+export function sysDictDataDelete(parameter) {
+  return axios({
+    url: '/sysDictData/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 淇敼绯荤粺瀛楀吀鐘舵��
+ *
+ * @author xusn
+ * @date 2021-04-30 11:00:16
+ */
+export function sysDictDataChangeStatus(parameter) {
+  return axios({
+    url: '/sysDictData/changeStatus',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鏍规嵁Code鑾峰彇瀛楀吀鏁版嵁
+ *
+ * @author lanhuxing
+ * @date 2021-04-30 11:00:16
+ */
+export function sysDictDataListbycode(parameter) {
+  return axios({
+    url: '/sysDictData/listbycode?code=' + parameter.code,
+    method: 'get',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictManage.js
new file mode 100644
index 0000000..7569c5e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictManage.js
@@ -0,0 +1,101 @@
+import {
+  axios
+} from '@/utils/request'
+
+/**
+ * 鍒嗛〉鏌ヨ绯荤粺瀛楀吀绫诲瀷
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 01:46
+ */
+export function sysDictTypePage(parameter) {
+  return axios({
+    url: '/sysDictType/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞绯荤粺瀛楀吀绫诲瀷
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 01:46
+ */
+export function sysDictTypeAdd(parameter) {
+  return axios({
+    url: '/sysDictType/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫绯荤粺瀛楀吀绫诲瀷
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 01:50
+ */
+export function sysDictTypeEdit(parameter) {
+  return axios({
+    url: '/sysDictType/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎绯荤粺瀛楀吀绫诲瀷
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 01:50
+ */
+export function sysDictTypeDelete(parameter) {
+  return axios({
+    url: '/sysDictType/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇瀛楀吀绫诲瀷涓嬫墍鏈夊瓧鍏革紝涓句緥锛岃繑鍥炴牸寮忎负锛歔{code:"M",value:"鐢�"},{code:"F",value:"濂�"}]
+ *
+ * @author yubaoshan
+ * @date 2020/6/10 00:10
+ */
+export function sysDictTypeDropDown(parameter) {
+  return axios({
+    url: '/sysDictType/dropDown',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鎵�鏈夊瓧鍏革紝鍚姩鏃跺姞鍏ョ紦瀛樹娇鐢�
+ *
+ * @author yubaoshan
+ * @date 2020/6/10 00:10
+ */
+export function sysDictTypeTree(parameter) {
+  return axios({
+    url: '/sysDictType/tree',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 淇敼绯荤粺瀛楀吀鐘舵��
+ *
+ * @author xusn
+ * @date 2021-04-30 11:00:16
+ */
+export function sysDictTypeChangeStatus(parameter) {
+  return axios({
+    url: '/sysDictType/changeStatus',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/emailManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/emailManage.js
new file mode 100644
index 0000000..1321bcc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/emailManage.js
@@ -0,0 +1,29 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鍙戦�侀偖浠�
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 23:22
+ */
+export function emailSendEmail (parameter) {
+  return axios({
+    url: '/email/sendEmail',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍙戦�乭tml閭欢
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 23:23
+ */
+export function emailSendEmailHtml (parameter) {
+  return axios({
+    url: '/email/sendEmailHtml',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/enumManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/enumManage.js
new file mode 100644
index 0000000..dd48818
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/enumManage.js
@@ -0,0 +1,29 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏍规嵁鏋氫妇鍚嶇О鑾峰彇鏋氫妇鏁版嵁锛岃繑鍥炴牸寮忎负锛歔{code:"M",value:"鐢�"},{code:"F",value:"濂�"}]
+ *
+ * @author taoran
+ * @date 2021-04-16 21:13/sysEnumData/list/{enumName}
+ */
+export function sysEnumDataList (parameter) {
+  return axios({
+    url: '/sysEnumData/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏍规嵁瀹炰綋鍚嶅拰瀛楁鍚嶈幏鍙栨灇涓炬暟鎹�
+ *
+ * @author taoran
+ * @date 2021-04-16 21:13
+ */
+export function sysEnumDataListByField (parameter) {
+  return axios({
+    url: '/sysEnumData/listByFiled',
+    method: 'get',
+    params: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/excelTemplateManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/excelTemplateManage.js
new file mode 100644
index 0000000..76c6f27
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/excelTemplateManage.js
@@ -0,0 +1,134 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨExcel妯℃澘
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplatePage (parameter) {
+  return axios({
+    url: '/sysExcelTemplate/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * Excel妯℃澘鍒楄〃
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateList (parameter) {
+  return axios({
+    url: '/sysExcelTemplate/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞Excel妯℃澘
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateAdd (parameter) {
+  return axios({
+    url: '/sysExcelTemplate/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫Excel妯℃澘
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateEdit (parameter) {
+  return axios({
+    url: '/sysExcelTemplate/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎Excel妯℃澘
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateDelete (parameter) {
+  return axios({
+    url: '/sysExcelTemplate/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 瀵煎嚭Excel妯℃澘鐨凟xcel鏂囦欢
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateToExcel (parameter) {
+  return axios({
+    url: '/sysExcelTemplate/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆Excel妯℃澘鐨凟xcel鏂囦欢
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateFromExcel (data, parameter) {
+  return axios({
+    url: '/sysExcelTemplate/fromExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+  })
+}
+
+/**
+ * 涓嬭浇Excel妯℃澘鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateDownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/sysExcelTemplate/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 淇敼Excel妯℃澘鐘舵��
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateChangeStatus(parameter) {
+  return axios({
+    url: '/sysExcelTemplate/changeStatus',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇瀹炰綋鍚嶇О鑾峰彇灞炴�ч泦鍚�
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateGetColumnList(parameter) {
+  return axios({
+    url: '/sysExcelTemplate/getColumnList',
+    method: 'get',
+    params: parameter,
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/fileManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/fileManage.js
new file mode 100644
index 0000000..389ccdb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/fileManage.js
@@ -0,0 +1,115 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鍒嗛〉鏌ヨ鏂囦欢淇℃伅琛�
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 00:20
+ */
+export function sysFileInfoPage (parameter) {
+  return axios({
+    url: '/sysFileInfo/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鍏ㄩ儴鏂囦欢淇℃伅琛�
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 00:20
+ */
+export function sysFileInfoList (parameter) {
+  return axios({
+    url: '/sysFileInfo/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 涓婁紶鏂囦欢
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 00:20
+ */
+export function sysFileInfoUpload (parameter) {
+  return axios({
+    url: '/sysFileInfo/upload',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 涓嬭浇鏂囦欢
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 00:20
+ */
+export function sysFileInfoDownload (parameter) {
+  return axios({
+    url: '/sysFileInfo/download',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 鏌ョ湅鍥剧墖
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 00:20
+ */
+export function sysFileInfoPreview (parameter) {
+  return axios({
+    url: '/sysFileInfo/preview',
+    method: 'get',
+    params: parameter,
+    responseType: 'arraybuffer'
+  })
+}
+
+/**
+ * 鏌ョ湅璇︽儏鏂囦欢淇℃伅琛�
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 00:20
+ */
+export function sysFileInfoDetail (parameter) {
+  return axios({
+    url: '/sysFileInfo/detail',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鏂囦欢淇℃伅琛�
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 00:20
+ */
+export function sysFileInfoDelete (parameter) {
+  return axios({
+    url: '/sysFileInfo/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 涓婁紶澶村儚
+ *
+ * @author zuohuaijun
+ * @date 2021/4/23 00:20
+ */
+export function sysFileInfoUploadAvatar (parameter) {
+  return axios({
+    url: '/sysFileInfo/uploadAvatar',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/formDesignmanage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/formDesignmanage.js
new file mode 100644
index 0000000..ad1d8aa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/formDesignmanage.js
@@ -0,0 +1,81 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 淇濆瓨琛ㄥ崟
+ */
+export function formAdd(parameter) {
+  return axios({
+    url: '/formmanager/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇琛ㄥ崟
+ */
+ export function formEntity(parameter) {
+  return axios({
+    url: '/formmanager/entity',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇琛ㄥ崟鏌ョ湅 涓嶈兘缂栬緫
+ */
+ export function formEntityView(parameter) {
+  return axios({
+    url: '/formmanager/entityview',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏇存柊琛ㄥ崟
+ */
+ export function formEdit(parameter) {
+  return axios({
+    url: '/formmanager/update',
+    method: 'post',
+    data: parameter
+  })
+}
+
+// 鍒犻櫎琛ㄥ崟
+export function formDelete(parameter) {
+  return axios({
+    url: '/formmanager/delete',
+    method: 'delete',
+    data: parameter
+  })
+}
+
+// 鍙戝竷琛ㄥ崟
+export function formPublish(parameter) {
+  return axios({
+    url: '/formmanager/publish',
+    method: 'post',
+    data: parameter
+  })
+}
+
+// 鑾峰彇琛ㄥ崟鍒楄〃
+export function formList(parameter) {
+  return axios({
+    url: '/formmanager/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+// 鑾峰彇琛ㄥ崟鍒楄〃
+export function getformList(parameter) {
+  return axios({
+    url: '/formmanager/publislist',
+    method: 'get',
+    params: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/homeManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/homeManage.js
new file mode 100644
index 0000000..55fda7f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/homeManage.js
@@ -0,0 +1,43 @@
+/**
+ * 绯荤粺搴旂敤
+ *
+ * @author yhh
+ */
+import { axios } from '@/utils/request'
+
+/**
+ * 鑾峰彇搴撲綅鏁版嵁
+ *
+ * @author yhh
+ */
+export function GetPalceNumbers () {
+  return axios({
+    url: '/locationview/GetPalceDetail',
+    method: 'get'
+  })
+}
+
+/**
+ * 鑾峰彇鍑哄叆搴撶粺璁℃暟鎹�
+ *
+ * @author yhh
+ */
+export function GeInOutTaskNumber (params) {
+  return axios({
+    url: '/locationview/task-detail',
+    method: 'get',
+    params:params
+  })
+}
+
+/**
+ * 鑾峰彇鍑哄叆搴撴�绘暟
+ *
+ * @author yhh
+ */
+export function GeInOutTotalNumber () {
+  return axios({
+    url: '/locationview/GetTaskCount',
+    method: 'get'
+  })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/logManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/logManage.js
new file mode 100644
index 0000000..b1f2d52
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/logManage.js
@@ -0,0 +1,93 @@
+/*
+ * @Author: your name
+ * @Date: 2021-04-17 17:45:37
+ * @LastEditTime: 2021-04-17 18:03:59
+ * @LastEditors: your name
+ * @Description: In User Settings Edit
+ * @FilePath: \frontend\src\api\modular\system\logManage.js
+ */
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ璁块棶鏃ュ織
+ *
+ * @author yubaoshan
+ * @date 2020/5/19 11:57
+ */
+export function sysVisLogPage (parameter) {
+  return axios({
+    url: '/sysVisLog/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏌ヨ鎿嶄綔鏃ュ織
+ *
+ * @author yubaoshan
+ * @date 2020/5/19 11:57
+ */
+export function sysOpLogPage (parameter) {
+  return axios({
+    url: '/sysOpLog/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏌ヨ寮傚父鏃ュ織
+ *
+ * @author yubaoshan
+ * @date 2020/5/19 11:57
+ */
+export function sysExLogPage (parameter) {
+  return axios({
+    url: '/sysExLog/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娓呯┖璁块棶鏃ュ織
+ *
+ * @author yubaoshan
+ * @date 2020/6/23 23:09
+ */
+export function sysVisLogDelete (parameter) {
+  return axios({
+    url: '/sysVisLog/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 娓呯┖鐧诲綍鏃ュ織
+ *
+ * @author yubaoshan
+ * @date 2020/6/23 23:09
+ */
+export function sysOpLogDelete (parameter) {
+  return axios({
+    url: '/sysOpLog/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 娓呯┖寮傚父鏃ュ織
+ *
+ * @author yubaoshan
+ * @date 2020/6/23 23:09
+ */
+ export function sysExLogDelete (parameter) {
+  return axios({
+    url: '/sysExLog/delete',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/loginManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/loginManage.js
new file mode 100644
index 0000000..15d8909
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/loginManage.js
@@ -0,0 +1,119 @@
+/**
+ * 绯荤粺搴旂敤
+ *
+ * @author yubaoshan
+ * @date 2020/5/26 19:06
+ */
+import { axios } from '@/utils/request'
+
+/**
+ * 鐧诲綍
+ *
+ * @author yubaoshan
+ * @date 2020/5/26 19:06
+ */
+export function login (parameter) {
+  return axios({
+    url: '/login',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鐧诲嚭
+ *
+ * @author yubaoshan
+ * @date 2020/5/26 19:07
+ */
+export function logout (parameter) {
+  return axios({
+    url: '/logout',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
+ *
+ * @author yubaoshan
+ * @date 2020/5/26 19:08
+ */
+export function getLoginUser (parameter) {
+  return axios({
+    url: '/getLoginUser',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇绉熸埛寮�鍏�
+ *
+ * @author yubaoshan
+ * @date 2020/9/5 1:24
+ */
+export function getTenantOpen (parameter) {
+  return axios({
+    url: '/getTenantOpen',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鐭俊楠岃瘉鐮�
+ *
+ * @author yubaoshan
+ * @date 2020/5/26 19:29
+ */
+export function getSmsCaptcha (parameter) {
+  return axios({
+    url: '/getSmsCaptcha',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇楠岃瘉鐮佸紑鍏�
+ *
+ * @author Jax
+ * @date 2021/1/22 00:00
+ */
+export function getCaptchaOpen (parameter) {
+  return axios({
+    url: '/getCaptchaOpen',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇楠岃瘉鍥剧墖 浠ュ強token
+ *
+ * @author Jax
+ * @date 2021/1/22 00:00
+ */
+export function reqGet(data) {
+  return axios({
+    url: '/captcha/get',
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 婊戝姩鎴栬�呯偣閫夐獙璇�
+ *
+ * @author Jax
+ * @date 2021/1/22 00:00
+ */
+export function reqCheck(data) {
+  return axios({
+    url: '/captcha/check',
+    method: 'post',
+    data
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/machineManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/machineManage.js
new file mode 100644
index 0000000..fb02013
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/machineManage.js
@@ -0,0 +1,32 @@
+import {
+  axios
+} from '@/utils/request'
+
+/**
+ *
+ * 绯荤粺灞炴�х洃鎺�
+ *
+ */
+export function sysMachineUse(parameter) {
+  return axios({
+    url: '/sysMachine/use',
+    method: 'get',
+    params: parameter
+  })
+}
+
+export function sysMachineBase(parameter) {
+  return axios({
+    url: '/sysMachine/base',
+    method: 'get',
+    params: parameter
+  })
+}
+
+export function sysMachineNetwork(parameter) {
+  return axios({
+    url: '/sysMachine/network',
+    method: 'get',
+    params: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/menuManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/menuManage.js
new file mode 100644
index 0000000..454c406
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/menuManage.js
@@ -0,0 +1,130 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鑾峰彇鑿滃崟鍒楄〃
+ *
+ * @author yubaoshan
+ * @param parameter
+ * @returns {*}
+ */
+export function getMenuList (parameter) {
+  return axios({
+    url: '/sysMenu/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇pda鑿滃崟鍒楄〃
+ *
+ * @author yuhuanhuan
+ * @param id
+ * @returns {*}
+ */
+export function getPdaMenuList (id) {
+  return axios({
+    url: '/sysMenu/listpda',
+    method: 'get',
+    params: {id}
+  })
+}
+
+
+/**
+ * 鑾峰彇绯荤粺鑿滃崟鏍戯紝鐢ㄤ簬鏂板锛岀紪杈戞椂閫夋嫨涓婄骇鑺傜偣
+ *
+ * @author yubaoshan
+ * @date 2020/4/23 12:22
+ */
+export function getMenuTree (parameter) {
+  return axios({
+    url: '/sysMenu/tree',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 澧炲姞鑿滃崟
+ *
+ * @author yubaoshan
+ * @date 2020/4/24 23:23
+ */
+export function sysMenuAdd (parameter) {
+  return axios({
+    url: '/sysMenu/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 澧炲姞鑿滃崟
+ *
+ * @author yubaoshan
+ * @date 2020/4/24 23:23
+ */
+export function sysMenuDelete (parameter) {
+  return axios({
+    url: '/sysMenu/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鏌ョ湅鑿滃崟璇︽儏
+ *
+ * @author yubaoshan
+ * @date 2020/4/25 01:11
+ */
+export function sysMenuDetail (parameter) {
+  return axios({
+    url: '/sysMenu/detail',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫绯荤粺鑿滃崟
+ *
+ * @author yubaoshan
+ * @date 2020/4/25 01:11
+ */
+export function sysMenuEdit (parameter) {
+  return axios({
+    url: '/sysMenu/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇绯荤粺鑿滃崟鏍戯紝鐢ㄤ簬缁欒鑹叉巿鏉冩椂閫夋嫨
+ *
+ * @author yubaoshan
+ * @date 2020/6/2 17:30
+ */
+export function SysMenuTreeForGrant (parameter) {
+  return axios({
+    url: '/sysMenu/treeForGrant',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏍规嵁绯荤粺鍒囨崲鑿滃崟
+ *
+ * @author yubaoshan
+ * @date 2020/6/28 15:25
+ */
+export function sysMenuChange (parameter) {
+  return axios({
+    url: '/sysMenu/change',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeManage.js
new file mode 100644
index 0000000..d4f7277
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeManage.js
@@ -0,0 +1,85 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ绯荤粺閫氱煡鍏憡
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 01:56
+ */
+export function sysNoticePage (parameter) {
+  return axios({
+    url: '/sysNotice/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞绯荤粺閫氱煡鍏憡
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 01:56
+ */
+export function sysNoticeAdd (parameter) {
+  return axios({
+    url: '/sysNotice/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫绯荤粺閫氱煡鍏憡
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 01:56
+ */
+export function sysNoticeEdit (parameter) {
+  return axios({
+    url: '/sysNotice/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎绯荤粺閫氱煡鍏憡
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 01:56
+ */
+export function sysNoticeDelete (parameter) {
+  return axios({
+    url: '/sysNotice/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 閫氱煡鍏憡璇︽儏
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 01:56
+ */
+export function sysNoticeDetail (parameter) {
+  return axios({
+    url: '/sysNotice/detail',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 淇敼鐘舵��
+ *
+ * @author yubaoshan
+ * @date 2020/7/30 02:23
+ */
+export function sysNoticeChangeStatus (parameter) {
+  return axios({
+    url: '/sysNotice/changeStatus',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeReceivedManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeReceivedManage.js
new file mode 100644
index 0000000..d28174a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeReceivedManage.js
@@ -0,0 +1,24 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鎴戞敹鍒扮殑绯荤粺閫氱煡鍏憡
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:02
+ */
+export function sysNoticeReceived (parameter) {
+  return axios({
+    url: '/sysNotice/received',
+    method: 'get',
+    params: parameter
+  })
+}
+
+export function unReadNotice (parameter) {
+  return axios({
+    url: '/sysNotice/unread',
+    method: 'get',
+    params: parameter
+  })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/onlineUserManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/onlineUserManage.js
new file mode 100644
index 0000000..dd92dc7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/onlineUserManage.js
@@ -0,0 +1,45 @@
+import {
+  axios
+} from '@/utils/request'
+
+/**
+ * 鍒嗛〉鍦ㄧ嚎鐢ㄦ埛鍒楄〃
+ *
+ * @author 鍐欐剰
+ * @date 2021/7/21 23:34
+ */
+export function sysOnlineUserPage(parameter) {
+  return axios({
+    url: '/sysOnlineUser/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鍦ㄧ嚎鐢ㄦ埛鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/6/8 11:11
+ */
+export function sysOnlineUserList(parameter) {
+  return axios({
+    url: '/sysOnlineUser/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 寮哄埗涓嬬嚎
+ *
+ * @author yubaoshan
+ * @date 2020/6/8 11:11
+ */
+export function sysOnlineUserForceExist(parameter) {
+  return axios({
+    url: '/sysOnlineUser/forceExist',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/orgManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/orgManage.js
new file mode 100644
index 0000000..6ad82f6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/orgManage.js
@@ -0,0 +1,85 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鑾峰彇鏈烘瀯鏍�
+ *
+ * @author yubaoshan
+ * @date 2020/4/26 12:08
+ */
+export function getOrgTree (parameter) {
+  return axios({
+    url: '/sysOrg/tree',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鏈烘瀯鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/5/11 12:59
+ */
+export function getOrgList (parameter) {
+  return axios({
+    url: '/sysOrg/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鏈烘瀯鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/5/11 16:17
+ */
+export function getOrgPage (parameter) {
+  return axios({
+    url: '/sysOrg/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏂板鏈烘瀯
+ *
+ * @author yubaoshan
+ * @date 2020/5/11 13:56
+ */
+export function sysOrgAdd (parameter) {
+  return axios({
+    url: '/sysOrg/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鏈烘瀯
+ *
+ * @author yubaoshan
+ * @date 2020/5/11 13:56
+ */
+export function sysOrgEdit (parameter) {
+  return axios({
+    url: '/sysOrg/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鏈烘瀯
+ *
+ * @author yubaoshan
+ * @date 2020/5/11 12:59
+ */
+export function sysOrgDelete (parameter) {
+  return axios({
+    url: '/sysOrg/delete',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/posManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/posManage.js
new file mode 100644
index 0000000..847cf61
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/posManage.js
@@ -0,0 +1,71 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ绯荤粺鑱屼綅
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:31
+ */
+export function sysPosPage (parameter) {
+  return axios({
+    url: '/sysPos/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 绯荤粺鑱屼綅鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/6/21 23:50
+ */
+export function sysPosList (parameter) {
+  return axios({
+    url: '/sysPos/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞绯荤粺鑱屼綅
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:31
+ */
+export function sysPosAdd (parameter) {
+  return axios({
+    url: '/sysPos/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫绯荤粺鑱屼綅
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:31
+ */
+export function sysPosEdit (parameter) {
+  return axios({
+    url: '/sysPos/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎绯荤粺鑱屼綅
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:31
+ */
+export function sysPosDelete (parameter) {
+  return axios({
+    url: '/sysPos/delete',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/roleManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/roleManage.js
new file mode 100644
index 0000000..40c5093
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/roleManage.js
@@ -0,0 +1,155 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鑾峰彇瑙掕壊鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/5/6 11:44
+ */
+export function getRolePage (parameter) {
+  return axios({
+    url: '/sysRole/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 澧炲姞瑙掕壊
+ *
+ * @author yubaoshan
+ * @date 2020/5/6 11:44
+ */
+export function sysRoleAdd (parameter) {
+  return axios({
+    url: '/sysRole/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫瑙掕壊
+ *
+ * @author yubaoshan
+ * @date 2020/5/6 11:44
+ */
+export function sysRoleEdit (parameter) {
+  return axios({
+    url: '/sysRole/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎瑙掕壊
+ *
+ * @author yubaoshan
+ * @date 2020/5/6 17:51
+ */
+export function sysRoleDelete (parameter) {
+  return axios({
+    url: '/sysRole/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎瑙掕壊
+ *
+ * @author yubaoshan
+ * @date 2020/5/7 11:28
+ */
+export function sysRoleDeteil (parameter) {
+  return axios({
+    url: '/sysRole/detail',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鎺堟潈瑙掕壊鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/5/26 23:59
+ */
+export function sysRoleDropDown (parameter) {
+  return axios({
+    url: '/sysRole/dropDown',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鎷ユ湁鑿滃崟
+ *
+ * @author yubaoshan
+ * @date 2020/6/02 19:02
+ */
+export function sysRoleOwnMenu (parameter) {
+  return axios({
+    url: '/sysRole/ownMenu',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鎺堟潈鑿滃崟
+ *
+ * @author yubaoshan
+ * @date 2020/6/2 21:10
+ */
+export function sysRoleGrantMenu (parameter) {
+  return axios({
+    url: '/sysRole/grantMenu',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 鎺堟潈pda鑿滃崟
+ *
+ * @author yuhuanhuan
+ */
+export function sysRoleGrantPdaMenu (parameter) {
+  return axios({
+    url: '/sysRole/grantPdaMenu',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鎷ユ湁鏁版嵁
+ *
+ * @author yubaoshan
+ * @date 2020/6/02 21:40
+ */
+export function sysRoleOwnData (parameter) {
+  return axios({
+    url: '/sysRole/ownData',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鎺堟潈鏁版嵁
+ *
+ * @author yubaoshan
+ * @date 2020/6/2 21:50
+ */
+export function sysRoleGrantData (parameter) {
+  return axios({
+    url: '/sysRole/grantData',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/smsManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/smsManage.js
new file mode 100644
index 0000000..9973bd2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/smsManage.js
@@ -0,0 +1,43 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鍙戦�佽褰曟煡璇�
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 22:11
+ */
+export function smsPage (parameter) {
+  return axios({
+    url: '/sms/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 楠岃瘉鐭俊楠岃瘉鐮�
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 22:12
+ */
+export function sysSendLoginMessage (parameter) {
+  return axios({
+    url: '/sms/sendLoginMessage',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 楠岃瘉鐭俊楠岃瘉鐮�
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 22:12
+ */
+export function sysValidateMessage (parameter) {
+  return axios({
+    url: '/sms/validateMessage',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/tenantManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/tenantManage.js
new file mode 100644
index 0000000..6168e7e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/tenantManage.js
@@ -0,0 +1,96 @@
+/**
+ * 绉熸埛
+ */
+import {
+  axios
+} from '@/utils/request'
+
+/**
+ * 绉熸埛鍒楄〃
+ *
+ */
+export function sysTenantPage(parameter) {
+  return axios({
+    url: '/sysTenant/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏂板绉熸埛
+ *
+ */
+export function sysTenantAdd(parameter) {
+  return axios({
+    url: '/sysTenant/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎绉熸埛
+ *
+ */
+export function sysTenantDelete(parameter) {
+  return axios({
+    url: '/sysTenant/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫绉熸埛
+ *
+ */
+export function sysTenantEdit(parameter) {
+  return axios({
+    url: '/sysTenant/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鎷ユ湁鑿滃崟
+ *
+ * @author zuohuaijun
+ * @date 2021/04/22 10:30
+ */
+export function sysTenantOwnMenu (parameter) {
+  return axios({
+    url: '/sysTenant/ownMenu',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鎺堟潈鑿滃崟
+ *
+ * @author zuohuaijun
+ * @date 2021/04/22 10:30
+ */
+export function sysTenantGrantMenu (parameter) {
+  return axios({
+    url: '/sysTenant/grantMenu',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 閲嶇疆瀵嗙爜
+ *
+ * @author zuohuaijun
+ * @date 2021/04/22 11:00
+ */
+export function sysTenantResetPwd (parameter) {
+  return axios({
+    url: '/sysTenant/resetPwd',
+    method: 'post',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/timersManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/timersManage.js
new file mode 100644
index 0000000..5ee86e9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/timersManage.js
@@ -0,0 +1,143 @@
+import {
+  axios
+} from '@/utils/request'
+
+/**
+ * 鍒嗛〉鏌ヨ瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:13
+ */
+export function sysTimersPage(parameter) {
+  return axios({
+    url: '/sysTimers/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鍏ㄩ儴瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersList(parameter) {
+  return axios({
+    url: '/sysTimers/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鏌ョ湅璇︽儏瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersDetail(parameter) {
+  return axios({
+    url: '/sysTimers/detail',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersAdd(parameter) {
+  return axios({
+    url: '/sysTimers/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersDelete(parameter) {
+  return axios({
+    url: '/sysTimers/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersEdit(parameter) {
+  return axios({
+    url: '/sysTimers/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇绯荤粺鐨勬墍鏈変换鍔″垪琛�
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersGetActionClasses(parameter) {
+  return axios({
+    url: '/sysTimers/getActionClasses',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍚姩瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersStart(parameter) {
+  return axios({
+    url: '/sysTimers/start',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍋滄瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersStop(parameter) {
+  return axios({
+    url: '/sysTimers/stop',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鎵�鏈夋湰鍦颁换鍔�
+ *
+ * @author zuohuaijun
+ * @date 2021/04/24 23:10
+ */
+export function sysTimersLocalJobList(parameter) {
+  return axios({
+    url: '/sysTimers/localJobList',
+    method: 'get',
+    data: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/userManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/userManage.js
new file mode 100644
index 0000000..00fb75e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/userManage.js
@@ -0,0 +1,268 @@
+import {
+  axios
+} from '@/utils/request'
+
+/**
+ * 鑾峰彇鐢ㄦ埛鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/4/26 12:08
+ */
+export function getUserPage(parameter) {
+  return axios({
+    url: '/sysUser/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 澧炲姞鐢ㄦ埛
+ *
+ * @author yubaoshan
+ * @date 2020/5/5 02:08
+ */
+export function sysUserAdd(parameter) {
+  return axios({
+    url: '/sysUser/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫鐢ㄦ埛
+ *
+ * @author yubaoshan
+ * @date 2020/5/5 02:08
+ */
+export function sysUserEdit(parameter) {
+  return axios({
+    url: '/sysUser/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鐢ㄦ埛璇︽儏
+ *
+ * @author yubaoshan
+ * @date 2020/5/5 19:55
+ */
+export function sysUserDetail(parameter) {
+  return axios({
+    url: '/sysUser/detail',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎鐢ㄦ埛
+ *
+ * @author yubaoshan
+ * @date 2020/5/7 19:31
+ */
+export function sysUserDelete(parameter) {
+  return axios({
+    url: '/sysUser/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鎷ユ湁瑙掕壊
+ *
+ * @author yubaoshan
+ * @date 2020/6/3 11:58
+ */
+export function sysUserOwnRole(parameter) {
+  return axios({
+    url: '/sysUser/ownRole',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鎺堟潈瑙掕壊
+ *
+ * @author yubaoshan
+ * @date 2020/5/26 23:59
+ */
+export function sysUserGrantRole(parameter) {
+  return axios({
+    url: '/sysUser/grantRole',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鎷ユ湁鏁版嵁
+ *
+ * @author yubaoshan
+ * @date 2020/6/2 23:14
+ */
+export function sysUserOwnData(parameter) {
+  return axios({
+    url: '/sysUser/ownData',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鎺堟潈鏁版嵁
+ *
+ * @author yubaoshan
+ * @date 2020/6/2 23:15
+ */
+export function sysUserGrantData(parameter) {
+  return axios({
+    url: '/sysUser/grantData',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 淇敼鐘舵��
+ *
+ * @author yubaoshan
+ * @date 2020/6/23 21:36
+ */
+export function sysUserChangeStatus(parameter) {
+  return axios({
+    url: '/sysUser/changeStatus',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 閲嶇疆瀵嗙爜
+ *
+ * @author yubaoshan
+ * @date 2020/6/23 22:04
+ */
+export function sysUserResetPwd(parameter) {
+  return axios({
+    url: '/sysUser/resetPwd',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 淇敼瀵嗙爜
+ *
+ * @author yubaoshan
+ * @date 2020/6/25 00:25
+ */
+export function sysUserUpdatePwd(parameter) {
+  return axios({
+    url: '/sysUser/updatePwd',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鐢ㄦ埛閫夋嫨鍣�
+ *
+ * @author yubaoshan
+ * @date 2020/6/25 00:25
+ */
+export function sysUserSelector(parameter) {
+  return axios({
+    url: '/sysUser/selector',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鐢ㄦ埛鍒楄〃
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/05/07
+ */
+ export function getUserList(parameter) {
+  return axios({
+    url: '/sysUser/userList',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 淇敼澶村儚
+ *
+ * @author yubaoshan
+ * @date 2020/9/20 2:21
+ */
+export function sysUserUpdateAvatar(parameter) {
+  return axios({
+    url: '/sysUser/updateAvatar',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鏇存柊鍩烘湰淇℃伅
+ *
+ * @author yubaoshan
+ * @date 2020/9/20 03:12
+ */
+export function sysUserUpdateInfo(parameter) {
+  return axios({
+    url: '/sysUser/updateInfo',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 瀵煎嚭鐢ㄦ埛淇℃伅
+ *
+ * @author zuohuaijun
+ * @date 2021/4/20 01:00
+ */
+export function sysUserExport(parameter) {
+  return axios({
+    url: '/sysUser/export',
+    method: 'get',
+    data: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆鐢ㄦ埛淇℃伅
+ *
+ * @author zuohuaijun
+ * @date 2021/4/20 01:00
+ */
+export function sysUserImport(parameter) {
+  return axios({
+    url: '/sysUser/import',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇鎵�灞炰骇绾夸笅鎷夊垪琛�
+ *
+ * @author yhh
+ */
+export function sysUserGetLines() {
+  return axios({
+    url: '/sysUser/selectLesWorkShopType',
+    method: 'get',
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/workflowManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/workflowManage.js
new file mode 100644
index 0000000..d0ab711
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/workflowManage.js
@@ -0,0 +1,117 @@
+import {
+  axios
+} from '@/utils/request'
+
+// 宸ヤ綔娴佺浉鍏矨PI
+
+/**
+ * 鑾峰彇姝ラ鍒楄〃
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/07
+ */
+ export function getAllStepBodyList(parameter) {
+  return axios({
+    url: '/stepBodyManage/allstepBody',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鑾峰彇娴佺▼瀹氫箟鍒楄〃
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/06
+ */
+ export function getWorkflowDefinitionList(parameter) {
+  return axios({
+    url: '/workflowdefinition/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞宸ヤ綔娴�
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/06
+ */
+ export function addWorkflowDefinition(parameter) {
+  return axios({
+    url: '/workflowdefinition/create',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎宸ヤ綔娴�
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/07
+ */
+ export function deleteWorkflowDefinition(parameter) {
+  return axios({
+    url: '/workflowdefinition/delete',
+    method: 'delete',
+    data: parameter
+  })
+}
+
+/**
+ * 鏇存柊宸ヤ綔娴�
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/07
+ */
+ export function workflowUpdata(parameter) {
+  return axios({
+    url: '/workflowdefinition/update',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鏍规嵁id鍜岀増鏈幏鍙栧伐浣滄祦淇℃伅
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/07
+ */
+export function getWorkflowByID(parameter) {
+  return axios({
+    url: '/workflowdefinition/workflow/',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 鍙戣捣宸ヤ綔娴�
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/10
+ */
+ export function startWorkflow(parameter) {
+  return axios({
+    url: '/workflowmanager/Start',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鑾峰彇宸ヤ綔娴佽緭鍏ュ弬鏁�
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/10
+ */
+ export function inputsWorkflow(parameter) {
+  return axios({
+    url: '/workflowmanager/inputsparameter',
+    method: 'get',
+    params: parameter
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/assets/icons/bx-analyse.svg b/iWare_RawMaterialWarehouse_Web/src/assets/icons/bx-analyse.svg
new file mode 100644
index 0000000..b02a8d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/assets/icons/bx-analyse.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1551058675966" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7872" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M85.333333 512h85.333334a340.736 340.736 0 0 1 99.712-241.621333 337.493333 337.493333 0 0 1 108.458666-72.96 346.453333 346.453333 0 0 1 261.546667-1.749334A106.154667 106.154667 0 0 0 746.666667 298.666667C805.802667 298.666667 853.333333 251.136 853.333333 192S805.802667 85.333333 746.666667 85.333333c-29.397333 0-55.978667 11.776-75.221334 30.933334-103.722667-41.514667-222.848-40.874667-325.76 2.517333a423.594667 423.594667 0 0 0-135.68 91.264 423.253333 423.253333 0 0 0-91.306666 135.637333A426.88 426.88 0 0 0 85.333333 512z m741.248 133.205333c-17.109333 40.618667-41.685333 77.141333-72.96 108.416s-67.797333 55.850667-108.458666 72.96a346.453333 346.453333 0 0 1-261.546667 1.749334A106.154667 106.154667 0 0 0 277.333333 725.333333C218.197333 725.333333 170.666667 772.864 170.666667 832S218.197333 938.666667 277.333333 938.666667c29.397333 0 55.978667-11.776 75.221334-30.933334A425.173333 425.173333 0 0 0 512 938.666667a425.941333 425.941333 0 0 0 393.258667-260.352A426.325333 426.325333 0 0 0 938.666667 512h-85.333334a341.034667 341.034667 0 0 1-26.752 133.205333z" p-id="7873"></path><path d="M512 318.378667c-106.752 0-193.621333 86.869333-193.621333 193.621333S405.248 705.621333 512 705.621333s193.621333-86.869333 193.621333-193.621333S618.752 318.378667 512 318.378667z m0 301.909333c-59.690667 0-108.288-48.597333-108.288-108.288S452.309333 403.712 512 403.712s108.288 48.597333 108.288 108.288-48.597333 108.288-108.288 108.288z" p-id="7874"></path></svg>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/assets/login_bk.png b/iWare_RawMaterialWarehouse_Web/src/assets/login_bk.png
new file mode 100644
index 0000000..18c5c5d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/assets/login_bk.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/assets/logo.jpg b/iWare_RawMaterialWarehouse_Web/src/assets/logo.jpg
new file mode 100644
index 0000000..da49afa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/assets/logo.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/assets/notice.png b/iWare_RawMaterialWarehouse_Web/src/assets/notice.png
new file mode 100644
index 0000000..b713953
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/assets/notice.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/assets/text_logo.png b/iWare_RawMaterialWarehouse_Web/src/assets/text_logo.png
new file mode 100644
index 0000000..76921c8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/assets/text_logo.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/assets/welcome.png b/iWare_RawMaterialWarehouse_Web/src/assets/welcome.png
new file mode 100644
index 0000000..94abec2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/assets/welcome.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/ArticleListContent.vue b/iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/ArticleListContent.vue
new file mode 100644
index 0000000..8f39978
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/ArticleListContent.vue
@@ -0,0 +1,89 @@
+<template>
+  <div class="antd-pro-components-article-list-content-index-listContent">
+    <div class="description">
+      <slot>
+        {{ description }}
+      </slot>
+    </div>
+    <div class="extra">
+      <a-avatar :src="avatar" size="small" />
+      <a :href="href">{{ owner }}</a> 鍙戝竷鍦� <a :href="href">{{ href }}</a>
+      <em>{{ updateAt | moment }}</em>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'ArticleListContent',
+  props: {
+    prefixCls: {
+      type: String,
+      default: 'antd-pro-components-article-list-content-index-listContent'
+    },
+    description: {
+      type: String,
+      default: ''
+    },
+    owner: {
+      type: String,
+      required: true
+    },
+    avatar: {
+      type: String,
+      required: true
+    },
+    href: {
+      type: String,
+      required: true
+    },
+    updateAt: {
+      type: String,
+      required: true
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+@import '../index.less';
+
+.antd-pro-components-article-list-content-index-listContent {
+  .description {
+    max-width: 720px;
+    line-height: 22px;
+  }
+  .extra {
+    margin-top: 16px;
+    color: @text-color-secondary;
+    line-height: 22px;
+
+    & /deep/ .ant-avatar {
+      position: relative;
+      top: 1px;
+      width: 20px;
+      height: 20px;
+      margin-right: 8px;
+      vertical-align: top;
+    }
+
+    & > em {
+      margin-left: 16px;
+      color: @disabled-color;
+      font-style: normal;
+    }
+  }
+}
+
+@media screen and (max-width: @screen-xs) {
+  .antd-pro-components-article-list-content-index-listContent {
+    .extra {
+      & > em {
+        display: block;
+        margin-top: 8px;
+        margin-left: 0;
+      }
+    }
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/index.js b/iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/index.js
new file mode 100644
index 0000000..37d35c7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/index.js
@@ -0,0 +1,3 @@
+import ArticleListContent from './ArticleListContent'
+
+export default ArticleListContent
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/Item.vue b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/Item.vue
new file mode 100644
index 0000000..26e149e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/Item.vue
@@ -0,0 +1,46 @@
+<template>
+  <tooltip v-if="tips !== ''">
+    <template slot="title">{{ tips }}</template>
+    <avatar :size="avatarSize" :src="src" />
+  </tooltip>
+  <avatar v-else :size="avatarSize" :src="src" />
+</template>
+
+<script>
+import Avatar from 'ant-design-vue/es/avatar'
+import Tooltip from 'ant-design-vue/es/tooltip'
+
+export default {
+  name: 'AvatarItem',
+  components: {
+    Avatar,
+    Tooltip
+  },
+  props: {
+    tips: {
+      type: String,
+      default: '',
+      required: false
+    },
+    src: {
+      type: String,
+      default: ''
+    }
+  },
+  data () {
+    return {
+      size: this.$parent.size
+    }
+  },
+  computed: {
+    avatarSize () {
+      return this.size !== 'mini' && this.size || 20
+    }
+  },
+  watch: {
+    '$parent.size' (val) {
+      this.size = val
+    }
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/List.vue b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/List.vue
new file mode 100644
index 0000000..446ceeb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/List.vue
@@ -0,0 +1,99 @@
+<!--
+<template>
+  <div :class="[prefixCls]">
+    <ul>
+      <slot></slot>
+      <template v-for="item in filterEmpty($slots.default).slice(0, 3)"></template>
+
+      <template v-if="maxLength > 0 && filterEmpty($slots.default).length > maxLength">
+        <avatar-item :size="size">
+          <avatar :size="size !== 'mini' && size || 20" :style="excessItemsStyle">{{ `+${maxLength}` }}</avatar>
+        </avatar-item>
+      </template>
+    </ul>
+  </div>
+</template>
+-->
+
+<script>
+import Avatar from 'ant-design-vue/es/avatar'
+import AvatarItem from './Item'
+import { filterEmpty } from '@/components/_util/util'
+
+export default {
+  AvatarItem,
+  name: 'AvatarList',
+  components: {
+    Avatar,
+    AvatarItem
+  },
+  props: {
+    prefixCls: {
+      type: String,
+      default: 'ant-pro-avatar-list'
+    },
+    /**
+       * 澶村儚澶у皬 绫诲瀷: large銆乻mall 銆乵ini, default
+       * 榛樿鍊�: default
+       */
+    size: {
+      type: [String, Number],
+      default: 'default'
+    },
+    /**
+       * 瑕佹樉绀虹殑鏈�澶ч」鐩�
+       */
+    maxLength: {
+      type: Number,
+      default: 0
+    },
+    /**
+       * 澶氫綑鐨勯」鐩鏍�
+       */
+    excessItemsStyle: {
+      type: Object,
+      default: () => {
+        return {
+          color: '#f56a00',
+          backgroundColor: '#fde3cf'
+        }
+      }
+    }
+  },
+  data () {
+    return {}
+  },
+  methods: {
+    getItems (items) {
+      const classString = {
+        [`${this.prefixCls}-item`]: true,
+        [`${this.size}`]: true
+      }
+
+      if (this.maxLength > 0) {
+        items = items.slice(0, this.maxLength)
+        items.push((<Avatar size={ this.size } style={ this.excessItemsStyle }>{`+${this.maxLength}`}</Avatar>))
+      }
+      const itemList = items.map((item) => (
+        <li class={ classString }>{ item }</li>
+      ))
+      return itemList
+    }
+  },
+  render () {
+    const { prefixCls, size } = this.$props
+    const classString = {
+      [`${prefixCls}`]: true,
+      [`${size}`]: true
+    }
+    const items = filterEmpty(this.$slots.default)
+    const itemsDom = items && items.length ? <ul class={`${prefixCls}-items`}>{ this.getItems(items) }</ul> : null
+
+    return (
+      <div class={ classString }>
+        { itemsDom }
+      </div>
+    )
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.js b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.js
new file mode 100644
index 0000000..dd6bb8b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.js
@@ -0,0 +1,4 @@
+import AvatarList from './List'
+import './index.less'
+
+export default AvatarList
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.less b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.less
new file mode 100644
index 0000000..9ce073f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.less
@@ -0,0 +1,60 @@
+@import "../index";
+
+@avatar-list-prefix-cls: ~"@{ant-pro-prefix}-avatar-list";
+@avatar-list-item-prefix-cls: ~"@{ant-pro-prefix}-avatar-list-item";
+
+.@{avatar-list-prefix-cls} {
+  display: inline-block;
+
+  ul {
+    list-style: none;
+    display: inline-block;
+    padding: 0;
+    margin: 0 0 0 8px;
+    font-size: 0;
+  }
+}
+
+.@{avatar-list-item-prefix-cls} {
+  display: inline-block;
+  font-size: @font-size-base;
+  margin-left: -8px;
+  width: @avatar-size-base;
+  height: @avatar-size-base;
+
+  :global {
+    .ant-avatar {
+      border: 1px solid #fff;
+      cursor: pointer;
+    }
+  }
+
+  &.large {
+    width: @avatar-size-lg;
+    height: @avatar-size-lg;
+  }
+
+  &.small {
+    width: @avatar-size-sm;
+    height: @avatar-size-sm;
+  }
+
+  &.mini {
+    width: 20px;
+    height: 20px;
+
+    :global {
+      .ant-avatar {
+        width: 20px;
+        height: 20px;
+        line-height: 20px;
+
+        .ant-avatar-string {
+          font-size: 12px;
+          line-height: 18px;
+        }
+      }
+    }
+  }
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.md b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.md
new file mode 100644
index 0000000..dc9c092
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.md
@@ -0,0 +1,64 @@
+# AvatarList 鐢ㄦ埛澶村儚鍒楄〃
+
+
+涓�缁勭敤鎴峰ご鍍忥紝甯哥敤鍦ㄩ」鐩�/鍥㈤槦鎴愬憳鍒楄〃銆傚彲閫氳繃璁剧疆 `size` 灞炴�ф潵鎸囧畾澶村儚澶у皬銆�
+
+
+
+寮曠敤鏂瑰紡锛�
+
+```javascript
+import AvatarList from '@/components/AvatarList'
+const AvatarListItem = AvatarList.AvatarItem
+
+export default {
+    components: {
+        AvatarList,
+        AvatarListItem
+    }
+}
+```
+
+
+
+## 浠g爜婕旂ず  [demo](https://pro.loacg.com/test/home)
+
+```html
+<avatar-list size="mini">
+    <avatar-list-item tips="Jake" src="https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" />
+    <avatar-list-item tips="Andy" src="https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" />
+    <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+</avatar-list>
+```
+鎴�
+```html
+<avatar-list :max-length="3">
+    <avatar-list-item tips="Jake" src="https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" />
+    <avatar-list-item tips="Andy" src="https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" />
+    <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+    <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+    <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+    <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+    <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+</avatar-list>
+```
+
+
+
+## API
+
+### AvatarList
+
+| 鍙傛暟               | 璇存槑       | 绫诲瀷                                 | 榛樿鍊�       |
+| ---------------- | -------- | ---------------------------------- | --------- |
+| size             | 澶村儚澶у皬     | `large`銆乣small` 銆乣mini`, `default` | `default` |
+| maxLength        | 瑕佹樉绀虹殑鏈�澶ч」鐩� | number                             | -         |
+| excessItemsStyle | 澶氫綑鐨勯」鐩鏍�  | CSSProperties                      | -         |
+
+### AvatarList.Item
+
+| 鍙傛暟   | 璇存槑     | 绫诲瀷        | 榛樿鍊� |
+| ---- | ------ | --------- | --- |
+| tips | 澶村儚灞曠ず鏂囨 | string | -   |
+| src  | 澶村儚鍥剧墖杩炴帴 | string    | -   |
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/Bar.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Bar.vue
new file mode 100644
index 0000000..4482845
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Bar.vue
@@ -0,0 +1,62 @@
+<template>
+  <div :style="{ padding: '0 0 32px 32px' }">
+    <h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
+    <v-chart
+      height="254"
+      :data="data"
+      :forceFit="true"
+      :padding="['auto', 'auto', '40', '50']">
+      <v-tooltip />
+      <v-axis />
+      <v-bar position="x*y"/>
+    </v-chart>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'Bar',
+  props: {
+    title: {
+      type: String,
+      default: ''
+    },
+    data: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    },
+    scale: {
+      type: Array,
+      default: () => {
+        return [{
+          dataKey: 'x',
+          min: 2
+        }, {
+          dataKey: 'y',
+          title: '鏃堕棿',
+          min: 1,
+          max: 22
+        }]
+      }
+    },
+    tooltip: {
+      type: Array,
+      default: () => {
+        return [
+          'x*y',
+          (x, y) => ({
+            name: x,
+            value: y
+          })
+        ]
+      }
+    }
+  },
+  data () {
+    return {
+    }
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/ChartCard.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/ChartCard.vue
new file mode 100644
index 0000000..fc1f425
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/ChartCard.vue
@@ -0,0 +1,120 @@
+<template>
+  <a-card :loading="loading" :body-style="{ padding: '20px 24px 8px' }" :bordered="false">
+    <div class="chart-card-header">
+      <div class="meta">
+        <span class="chart-card-title">
+          <slot name="title">
+            {{ title }}
+          </slot>
+        </span>
+        <span class="chart-card-action">
+          <slot name="action"></slot>
+        </span>
+      </div>
+      <div class="total">
+        <slot name="total">
+          <span>{{ typeof total === 'function' && total() || total }}</span>
+        </slot>
+      </div>
+    </div>
+    <div class="chart-card-content">
+      <div class="content-fix">
+        <slot></slot>
+      </div>
+    </div>
+    <div class="chart-card-footer">
+      <div class="field">
+        <slot name="footer"></slot>
+      </div>
+    </div>
+  </a-card>
+</template>
+
+<script>
+export default {
+  name: 'ChartCard',
+  props: {
+    title: {
+      type: String,
+      default: ''
+    },
+    total: {
+      type: [Function, Number, String],
+      required: false,
+      default: null
+    },
+    loading: {
+      type: Boolean,
+      default: false
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  .chart-card-header {
+    position: relative;
+    overflow: hidden;
+    width: 100%;
+
+    .meta {
+      position: relative;
+      overflow: hidden;
+      width: 100%;
+      color: rgba(0, 0, 0, .45);
+      font-size: 14px;
+      line-height: 22px;
+    }
+  }
+
+  .chart-card-action {
+    cursor: pointer;
+    position: absolute;
+    top: 0;
+    right: 0;
+  }
+
+  .chart-card-footer {
+    border-top: 1px solid #e8e8e8;
+    padding-top: 9px;
+    margin-top: 8px;
+
+    > * {
+      position: relative;
+    }
+
+    .field {
+      white-space: nowrap;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      margin: 0;
+    }
+  }
+
+  .chart-card-content {
+    margin-bottom: 12px;
+    position: relative;
+    height: 46px;
+    width: 100%;
+
+    .content-fix {
+      position: absolute;
+      left: 0;
+      bottom: 0;
+      width: 100%;
+    }
+  }
+
+  .total {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    word-break: break-all;
+    white-space: nowrap;
+    color: #000;
+    margin-top: 4px;
+    margin-bottom: 0;
+    font-size: 30px;
+    line-height: 38px;
+    height: 38px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/Liquid.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Liquid.vue
new file mode 100644
index 0000000..4019fb1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Liquid.vue
@@ -0,0 +1,67 @@
+<template>
+  <div>
+    <v-chart
+      :forceFit="true"
+      :height="height"
+      :width="width"
+      :data="data"
+      :scale="scale"
+      :padding="0">
+      <v-tooltip />
+      <v-interval
+        :shape="['liquid-fill-gauge']"
+        position="transfer*value"
+        color=""
+        :v-style="{
+          lineWidth: 10,
+          opacity: 0.75
+        }"
+        :tooltip="[
+          'transfer*value',
+          (transfer, value) => {
+            return {
+              name: transfer,
+              value,
+            };
+          },
+        ]"
+      ></v-interval>
+      <v-guide
+        v-for="(row, index) in data"
+        :key="index"
+        type="text"
+        :top="true"
+        :position="{
+          gender: row.transfer,
+          value: 45
+        }"
+        :content="row.value + '%'"
+        :v-style="{
+          fontSize: 100,
+          textAlign: 'center',
+          opacity: 0.75,
+        }"
+      />
+    </v-chart>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'Liquid',
+  props: {
+    height: {
+      type: Number,
+      default: 0
+    },
+    width: {
+      type: Number,
+      default: 0
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniArea.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniArea.vue
new file mode 100644
index 0000000..58fe92c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniArea.vue
@@ -0,0 +1,56 @@
+<template>
+  <div class="antv-chart-mini">
+    <div class="chart-wrapper" :style="{ height: 46 }">
+      <v-chart :force-fit="true" :height="height" :data="data" :padding="[36, 0, 18, 0]">
+        <v-tooltip />
+        <v-smooth-area position="x*y" />
+      </v-chart>
+    </div>
+  </div>
+</template>
+
+<script>
+import moment from 'moment'
+const data = []
+const beginDay = new Date().getTime()
+
+for (let i = 0; i < 10; i++) {
+  data.push({
+    x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'),
+    y: Math.round(Math.random() * 10)
+  })
+}
+
+const tooltip = [
+  'x*y',
+  (x, y) => ({
+    name: x,
+    value: y
+  })
+]
+const scale = [{
+  dataKey: 'x',
+  min: 2
+}, {
+  dataKey: 'y',
+  title: '鏃堕棿',
+  min: 1,
+  max: 22
+}]
+
+export default {
+  name: 'MiniArea',
+  data () {
+    return {
+      data,
+      tooltip,
+      scale,
+      height: 100
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  @import "chart";
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniBar.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniBar.vue
new file mode 100644
index 0000000..beac404
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniBar.vue
@@ -0,0 +1,57 @@
+<template>
+  <div class="antv-chart-mini">
+    <div class="chart-wrapper" :style="{ height: 46 }">
+      <v-chart :force-fit="true" :height="height" :data="data" :padding="[36, 5, 18, 5]">
+        <v-tooltip />
+        <v-bar position="x*y" />
+      </v-chart>
+    </div>
+  </div>
+</template>
+
+<script>
+import moment from 'moment'
+const data = []
+const beginDay = new Date().getTime()
+
+for (let i = 0; i < 10; i++) {
+  data.push({
+    x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'),
+    y: Math.round(Math.random() * 10)
+  })
+}
+
+const tooltip = [
+  'x*y',
+  (x, y) => ({
+    name: x,
+    value: y
+  })
+]
+
+const scale = [{
+  dataKey: 'x',
+  min: 2
+}, {
+  dataKey: 'y',
+  title: '鏃堕棿',
+  min: 1,
+  max: 30
+}]
+
+export default {
+  name: 'MiniBar',
+  data () {
+    return {
+      data,
+      tooltip,
+      scale,
+      height: 100
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  @import "chart";
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniProgress.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniProgress.vue
new file mode 100644
index 0000000..e691363
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniProgress.vue
@@ -0,0 +1,75 @@
+<template>
+  <div class="chart-mini-progress">
+    <div class="target" :style="{ left: target + '%'}">
+      <span :style="{ backgroundColor: color }" />
+      <span :style="{ backgroundColor: color }"/>
+    </div>
+    <div class="progress-wrapper">
+      <div class="progress" :style="{ backgroundColor: color, width: percentage + '%', height: height }"></div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'MiniProgress',
+  props: {
+    target: {
+      type: Number,
+      default: 0
+    },
+    height: {
+      type: String,
+      default: '10px'
+    },
+    color: {
+      type: String,
+      default: '#13C2C2'
+    },
+    percentage: {
+      type: Number,
+      default: 0
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  .chart-mini-progress {
+    padding: 5px 0;
+    position: relative;
+    width: 100%;
+
+    .target {
+      position: absolute;
+      top: 0;
+      bottom: 0;
+
+      span {
+        border-radius: 100px;
+        position: absolute;
+        top: 0;
+        left: 0;
+        height: 4px;
+        width: 2px;
+
+        &:last-child {
+          top: auto;
+          bottom: 0;
+        }
+      }
+    }
+    .progress-wrapper {
+      background-color: #f5f5f5;
+      position: relative;
+
+      .progress {
+        transition: all .4s cubic-bezier(.08,.82,.17,1) 0s;
+        border-radius: 1px 0 0 1px;
+        background-color: #1890ff;
+        width: 0;
+        height: 100%;
+      }
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniSmoothArea.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniSmoothArea.vue
new file mode 100644
index 0000000..e5455c2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniSmoothArea.vue
@@ -0,0 +1,40 @@
+<template>
+  <div :class="prefixCls">
+    <div class="chart-wrapper" :style="{ height: 46 }">
+      <v-chart :force-fit="true" :height="100" :data="dataSource" :scale="scale" :padding="[36, 0, 18, 0]">
+        <v-tooltip />
+        <v-smooth-line position="x*y" :size="2" />
+        <v-smooth-area position="x*y" />
+      </v-chart>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'MiniSmoothArea',
+  props: {
+    prefixCls: {
+      type: String,
+      default: 'ant-pro-smooth-area'
+    },
+    scale: {
+      type: [Object, Array],
+      required: true
+    },
+    dataSource: {
+      type: Array,
+      required: true
+    }
+  },
+  data () {
+    return {
+      height: 100
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  @import "smooth.area.less";
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/Radar.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Radar.vue
new file mode 100644
index 0000000..5ee88ad
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Radar.vue
@@ -0,0 +1,68 @@
+<template>
+  <v-chart :forceFit="true" height="400" :data="data" :padding="[20, 20, 95, 20]" :scale="scale">
+    <v-tooltip></v-tooltip>
+    <v-axis :dataKey="axis1Opts.dataKey" :line="axis1Opts.line" :tickLine="axis1Opts.tickLine" :grid="axis1Opts.grid" />
+    <v-axis :dataKey="axis2Opts.dataKey" :line="axis2Opts.line" :tickLine="axis2Opts.tickLine" :grid="axis2Opts.grid" />
+    <v-legend dataKey="user" marker="circle" :offset="30" />
+    <v-coord type="polar" radius="0.8" />
+    <v-line position="item*score" color="user" :size="2" />
+    <v-point position="item*score" color="user" :size="4" shape="circle" />
+  </v-chart>
+</template>
+
+<script>
+const axis1Opts = {
+  dataKey: 'item',
+  line: null,
+  tickLine: null,
+  grid: {
+    lineStyle: {
+      lineDash: null
+    },
+    hideFirstLine: false
+  }
+}
+const axis2Opts = {
+  dataKey: 'score',
+  line: null,
+  tickLine: null,
+  grid: {
+    type: 'polygon',
+    lineStyle: {
+      lineDash: null
+    }
+  }
+}
+
+const scale = [
+  {
+    dataKey: 'score',
+    min: 0,
+    max: 80
+  }, {
+    dataKey: 'user',
+    alias: '绫诲瀷'
+  }
+]
+
+export default {
+  name: 'Radar',
+  props: {
+    data: {
+      type: Array,
+      default: null
+    }
+  },
+  data () {
+    return {
+      axis1Opts,
+      axis2Opts,
+      scale
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/RankList.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/RankList.vue
new file mode 100644
index 0000000..afb56a1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/RankList.vue
@@ -0,0 +1,77 @@
+<template>
+  <div class="rank">
+    <h4 class="title">{{ title }}</h4>
+    <ul class="list">
+      <li :key="index" v-for="(item, index) in list">
+        <span :class="index < 3 ? 'active' : null">{{ index + 1 }}</span>
+        <span>{{ item.name }}</span>
+        <span>{{ item.total }}</span>
+      </li>
+    </ul>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'RankList',
+  // ['title', 'list']
+  props: {
+    title: {
+      type: String,
+      default: ''
+    },
+    list: {
+      type: Array,
+      default: null
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+
+  .rank {
+    padding: 0 32px 32px 72px;
+
+    .list {
+      margin: 25px 0 0;
+      padding: 0;
+      list-style: none;
+
+      li {
+        margin-top: 16px;
+
+        span {
+          color: rgba(0, 0, 0, .65);
+          font-size: 14px;
+          line-height: 22px;
+
+          &:first-child {
+            background-color: #f5f5f5;
+            border-radius: 20px;
+            display: inline-block;
+            font-size: 12px;
+            font-weight: 600;
+            margin-right: 24px;
+            height: 20px;
+            line-height: 20px;
+            width: 20px;
+            text-align: center;
+          }
+          &.active {
+            background-color: #314659;
+            color: #fff;
+          }
+          &:last-child {
+            float: right;
+          }
+        }
+      }
+    }
+  }
+
+  .mobile .rank {
+    padding: 0 32px 32px 32px;
+  }
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/TagCloud.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/TagCloud.vue
new file mode 100644
index 0000000..74d1b3f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/TagCloud.vue
@@ -0,0 +1,113 @@
+<template>
+  <v-chart :width="width" :height="height" :padding="[0]" :data="data" :scale="scale">
+    <v-tooltip :show-title="false" />
+    <v-coord type="rect" direction="TL" />
+    <v-point position="x*y" color="category" shape="cloud" tooltip="value*category" />
+  </v-chart>
+</template>
+
+<script>
+import { registerShape } from 'viser-vue'
+const DataSet = require('@antv/data-set')
+
+const imgUrl = 'https://gw.alipayobjects.com/zos/rmsportal/gWyeGLCdFFRavBGIDzWk.png'
+
+const scale = [
+  { dataKey: 'x', nice: false },
+  { dataKey: 'y', nice: false }
+]
+
+registerShape('point', 'cloud', {
+  draw (cfg, container) {
+    return container.addShape('text', {
+      attrs: {
+        fillOpacity: cfg.opacity,
+        fontSize: cfg.origin._origin.size,
+        rotate: cfg.origin._origin.rotate,
+        text: cfg.origin._origin.text,
+        textAlign: 'center',
+        fontFamily: cfg.origin._origin.font,
+        fill: cfg.color,
+        textBaseline: 'Alphabetic',
+        ...cfg.style,
+        x: cfg.x,
+        y: cfg.y
+      }
+    })
+  }
+})
+
+export default {
+  name: 'TagCloud',
+  props: {
+    tagList: {
+      type: Array,
+      required: true
+    },
+    height: {
+      type: Number,
+      default: 400
+    },
+    width: {
+      type: Number,
+      default: 640
+    }
+  },
+  data () {
+    return {
+      data: [],
+      scale
+    }
+  },
+  watch: {
+    tagList: function (val) {
+      if (val.length > 0) {
+        this.initTagCloud(val)
+      }
+    }
+  },
+  mounted () {
+    if (this.tagList.length > 0) {
+      this.initTagCloud(this.tagList)
+    }
+  },
+  methods: {
+    initTagCloud (dataSource) {
+      const { height, width } = this
+
+      const dv = new DataSet.View().source(dataSource)
+      const range = dv.range('value')
+      const min = range[0]
+      const max = range[1]
+      const imageMask = new Image()
+      imageMask.crossOrigin = ''
+      imageMask.src = imgUrl
+      imageMask.onload = () => {
+        dv.transform({
+          type: 'tag-cloud',
+          fields: ['name', 'value'],
+          size: [width, height],
+          imageMask,
+          font: 'Verdana',
+          padding: 0,
+          timeInterval: 5000, // max execute time
+          rotate () {
+            let random = ~~(Math.random() * 4) % 4
+            if (random === 2) {
+              random = 0
+            }
+            return random * 90 // 0, 90, 270
+          },
+          fontSize (d) {
+            if (d.value) {
+              return ((d.value - min) / (max - min)) * (32 - 8) + 8
+            }
+            return 0
+          }
+        })
+        this.data = dv.rows
+      }
+    }
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/TransferBar.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/TransferBar.vue
new file mode 100644
index 0000000..7f96f0b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/TransferBar.vue
@@ -0,0 +1,64 @@
+<template>
+  <div :style="{ padding: '0 0 32px 32px' }">
+    <h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
+    <v-chart
+      height="254"
+      :data="data"
+      :scale="scale"
+      :forceFit="true"
+      :padding="['auto', 'auto', '40', '50']">
+      <v-tooltip />
+      <v-axis />
+      <v-bar position="x*y"/>
+    </v-chart>
+  </div>
+</template>
+
+<script>
+const tooltip = [
+  'x*y',
+  (x, y) => ({
+    name: x,
+    value: y
+  })
+]
+const scale = [{
+  dataKey: 'x',
+  title: '鏃ユ湡(澶�)',
+  alias: '鏃ユ湡(澶�)',
+  min: 2
+}, {
+  dataKey: 'y',
+  title: '娴侀噺(Gb)',
+  alias: '娴侀噺(Gb)',
+  min: 1
+}]
+
+export default {
+  name: 'Bar',
+  props: {
+    title: {
+      type: String,
+      default: ''
+    }
+  },
+  data () {
+    return {
+      data: [],
+      scale,
+      tooltip
+    }
+  },
+  created () {
+    this.getMonthBar()
+  },
+  methods: {
+    getMonthBar () {
+      this.$http.get('/analysis/month-bar')
+        .then(res => {
+          this.data = res.result
+        })
+    }
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/Trend.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Trend.vue
new file mode 100644
index 0000000..2dce37e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Trend.vue
@@ -0,0 +1,82 @@
+<template>
+  <div class="chart-trend">
+    {{ term }}
+    <span>{{ rate }}%</span>
+    <span :class="['trend-icon', trend]"><a-icon :type="'caret-' + trend"/></span>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'Trend',
+  props: {
+    term: {
+      type: String,
+      default: '',
+      required: true
+    },
+    percentage: {
+      type: Number,
+      default: null
+    },
+    type: {
+      type: Boolean,
+      default: null
+    },
+    target: {
+      type: Number,
+      default: 0
+    },
+    value: {
+      type: Number,
+      default: 0
+    },
+    fixed: {
+      type: Number,
+      default: 2
+    }
+  },
+  data () {
+    return {
+      trend: this.type && 'up' || 'down',
+      rate: this.percentage
+    }
+  },
+  created () {
+    const type = this.type === null ? this.value >= this.target : this.type
+    this.trend = type ? 'up' : 'down'
+    this.rate = (this.percentage === null ? Math.abs(this.value - this.target) * 100 / this.target : this.percentage).toFixed(this.fixed)
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  .chart-trend {
+    display: inline-block;
+    font-size: 14px;
+    line-height: 22px;
+
+    .trend-icon {
+      font-size: 12px;
+
+      &.up, &.down {
+        margin-left: 4px;
+        position: relative;
+        top: 1px;
+
+        i {
+          font-size: 12px;
+          transform: scale(.83);
+        }
+      }
+
+      &.up {
+        color: #f5222d;
+      }
+      &.down {
+        color: #52c41a;
+        top: -1px;
+      }
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/chart.less b/iWare_RawMaterialWarehouse_Web/src/components/Charts/chart.less
new file mode 100644
index 0000000..e04fa09
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/chart.less
@@ -0,0 +1,13 @@
+.antv-chart-mini {
+  position: relative;
+  width: 100%;
+
+  .chart-wrapper {
+    position: absolute;
+    bottom: -28px;
+    width: 100%;
+
+/*    margin: 0 -5px;
+    overflow: hidden;*/
+  }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/smooth.area.less b/iWare_RawMaterialWarehouse_Web/src/components/Charts/smooth.area.less
new file mode 100644
index 0000000..eabdb75
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/smooth.area.less
@@ -0,0 +1,14 @@
+@import "../index";
+
+@smoothArea-prefix-cls: ~"@{ant-pro-prefix}-smooth-area";
+
+.@{smoothArea-prefix-cls} {
+    position: relative;
+    width: 100%;
+
+    .chart-wrapper {
+        position: absolute;
+        bottom: -28px;
+        width: 100%;
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/ChooseSiteModal.vue b/iWare_RawMaterialWarehouse_Web/src/components/ChooseSiteModal.vue
new file mode 100644
index 0000000..672028c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/ChooseSiteModal.vue
@@ -0,0 +1,110 @@
+<template>
+  <a-modal :title="title" v-model="innerVisible" @ok="onConfirm">
+    <a-form :form="form" :label-col="{ span: 4 }" :wrapper-col="{ span: 20 }">
+      <a-form-item :label="labelText">
+        <a-select v-decorator="rule" placeholder="璇烽�夋嫨..." >
+          <a-select-option v-for="(item,index) in sites" :key="'site-sel-'+index" :value="item">{{ item }}</a-select-option>
+        </a-select>
+      </a-form-item>
+    </a-form>
+  </a-modal>
+</template>
+
+<script>
+import { BindEntranceGetSelects } from '@/api/modular/main/BindEntranceManage'
+export default {
+  name:'wmsSiteChooseModal',
+  emits:['update:visible','confirm'],
+  props:{
+    type:{
+      type:String,
+      default:'in'
+    },
+    visible:{
+      type:Boolean,
+      default:false
+    }
+  },
+  data(){
+    return {
+      title:'',
+      labelText:'',
+      innerVisible:false,
+      form: this.$form.createForm(this, { name: 'choose-site-form' }),
+      sites:[],
+      rule:['site',{rules:[
+        { required: true, message: '' }
+      ]}]
+    }
+  },
+  watch:{
+    visible(newVal,oldVal){
+      this.changeInnerVisible()
+    },
+    innerVisible(newVal,oldVal){
+      this.changeVisible()
+    }
+  },
+  methods:{
+    changeInnerVisible(){
+      if (this.visible!==this.innerVisible){
+        this.innerVisible = this.visible
+        if (this.innerVisible) {
+          this.$nextTick(()=>{
+            this.opened()
+          })
+        }
+      }
+    },
+    changeVisible(){
+      if (this.innerVisible!==this.visible){
+        this.$emit('update:visible',this.innerVisible)
+      }
+    },
+    opened(){
+      this.initText()
+      this.getSites()
+    },
+    initText(){
+      if (this.type==='in') {
+        this.title="鍏ュ簱鍙i�夋嫨"
+        this.labelText = "鍏ュ簱鍙�"
+        this.rule[1].rules[0].message = "璇烽�夋嫨鍏ュ簱鍙�"
+      } else {
+        this.title="鍑哄簱鍙i�夋嫨"
+        this.labelText = "鍑哄簱鍙�"
+         this.rule[1].rules[0].message = "璇烽�夋嫨鍑哄簱鍙�"
+      }
+    },
+    getSites(){
+      // 鍏ュ簱鍙�
+      if(this.type==='in'){
+        if (this.sites.length===0) {
+          BindEntranceGetSelects().then(d=>{
+            this.sites = d.data || []
+          }).catch(()=>{
+            
+          })
+        } 
+      }else{
+       // 鍙湁涓�涓嚭搴撳彛
+       this.sites = ["鍑哄簱鍙�"]
+      }
+    },
+    onConfirm(){
+      this.form.validateFields((err, values) => {
+        if (!err) {
+          this.innerVisible = false;
+          this.$emit('confirm',values.site)
+        } 
+      });
+    }
+  },
+  created(){
+    this.changeInnerVisible()
+  }
+}
+</script>
+
+<style>
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/CountDown/CountDown.vue b/iWare_RawMaterialWarehouse_Web/src/components/CountDown/CountDown.vue
new file mode 100644
index 0000000..575dd4a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/CountDown/CountDown.vue
@@ -0,0 +1,102 @@
+<template>
+  <span>
+    {{ lastTime | format }}
+  </span>
+</template>
+
+<script>
+
+function fixedZero (val) {
+  return val * 1 < 10 ? `0${val}` : val
+}
+
+export default {
+  name: 'CountDown',
+  props: {
+    format: {
+      type: Function,
+      default: undefined
+    },
+    target: {
+      type: [Date, Number],
+      required: true
+    },
+    onEnd: {
+      type: Function,
+      default: () => ({})
+    }
+  },
+  data () {
+    return {
+      dateTime: '0',
+      originTargetTime: 0,
+      lastTime: 0,
+      timer: 0,
+      interval: 1000
+    }
+  },
+  filters: {
+    format (time) {
+      const hours = 60 * 60 * 1000
+      const minutes = 60 * 1000
+
+      const h = Math.floor(time / hours)
+      const m = Math.floor((time - h * hours) / minutes)
+      const s = Math.floor((time - h * hours - m * minutes) / 1000)
+      return `${fixedZero(h)}:${fixedZero(m)}:${fixedZero(s)}`
+    }
+  },
+  created () {
+    this.initTime()
+    this.tick()
+  },
+  methods: {
+    initTime () {
+      let lastTime = 0
+      let targetTime = 0
+      this.originTargetTime = this.target
+      try {
+        if (Object.prototype.toString.call(this.target) === '[object Date]') {
+          targetTime = this.target
+        } else {
+          targetTime = new Date(this.target).getTime()
+        }
+      } catch (e) {
+        throw new Error('invalid target prop')
+      }
+
+      lastTime = targetTime - new Date().getTime()
+
+      this.lastTime = lastTime < 0 ? 0 : lastTime
+    },
+    tick () {
+      const { onEnd } = this
+
+      this.timer = setTimeout(() => {
+        if (this.lastTime < this.interval) {
+          clearTimeout(this.timer)
+          this.lastTime = 0
+          if (typeof onEnd === 'function') {
+            onEnd()
+          }
+        } else {
+          this.lastTime -= this.interval
+          this.tick()
+        }
+      }, this.interval)
+    }
+  },
+  beforeUpdate () {
+    if (this.originTargetTime !== this.target) {
+      this.initTime()
+    }
+  },
+  beforeDestroy () {
+    clearTimeout(this.timer)
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.js b/iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.js
new file mode 100644
index 0000000..35e954f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.js
@@ -0,0 +1,3 @@
+import CountDown from './CountDown'
+
+export default CountDown
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.md b/iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.md
new file mode 100644
index 0000000..fd46809
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.md
@@ -0,0 +1,34 @@
+# CountDown 鍊掕鏃�
+
+鍊掕鏃剁粍浠躲��
+
+
+
+寮曠敤鏂瑰紡锛�
+
+```javascript
+import CountDown from '@/components/CountDown/CountDown'
+
+export default {
+    components: {
+        CountDown
+    }
+}
+```
+
+
+
+## 浠g爜婕旂ず  [demo](https://pro.loacg.com/test/home)
+
+```html
+<count-down :target="new Date().getTime() + 3000000" :on-end="onEndHandle" />
+```
+
+
+
+## API
+
+| 鍙傛暟      | 璇存槑                                      | 绫诲瀷         | 榛樿鍊� |
+|----------|------------------------------------------|-------------|-------|
+| target | 鐩爣鏃堕棿 | Date | - |
+| onEnd |  鍊掕鏃剁粨鏉熷洖璋� | funtion | -|
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/DepartmentSelect.vue b/iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/DepartmentSelect.vue
new file mode 100644
index 0000000..5203efd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/DepartmentSelect.vue
@@ -0,0 +1,48 @@
+ <template>
+  <a-tree-select
+    :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+    allowClear
+    :treeData="orgTree"
+    :placeholder="placeholder"
+    treeDefaultExpandAll
+    @change="onchange"
+  >
+    <span slot="title" slot-scope="{ id }">{{ id }}</span>
+  </a-tree-select>
+</template>
+<script>
+import { getOrgTree } from '@/api/modular/system/orgManage'
+
+export default {
+  name: 'DepartSelect',
+  props: {
+    placeholder: {
+      type: String
+    },
+    value: {
+      type: String
+    }
+  },
+  data() {
+    return {
+      orgTree: []
+    }
+  },
+  created() {
+    this.getOrgData()
+  },
+  methods: {
+    getOrgData() {
+      getOrgTree().then((res) => {
+        this.orgTree = res
+      })
+    },
+    /**
+     * 閫夋嫨鏍戞満鏋勶紝鍒濆鍖栨満鏋勫悕绉颁簬琛ㄥ崟涓�
+     */
+    onchange (value) {
+      this.$emit('change', value)
+    }
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/index.js b/iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/index.js
new file mode 100644
index 0000000..68ac87d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/index.js
@@ -0,0 +1,3 @@
+import DepartmentSelect from './DepartmentSelect'
+
+export default DepartmentSelect
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/DescriptionList.vue b/iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/DescriptionList.vue
new file mode 100644
index 0000000..7f98fec
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/DescriptionList.vue
@@ -0,0 +1,153 @@
+<template>
+  <div :class="['description-list', size, layout === 'vertical' ? 'vertical': 'horizontal']">
+    <div v-if="title" class="title">{{ title }}</div>
+    <a-row>
+      <slot></slot>
+    </a-row>
+  </div>
+</template>
+
+<script>
+import { Col } from 'ant-design-vue/es/grid/'
+
+const Item = {
+  name: 'DetailListItem',
+  props: {
+    term: {
+      type: String,
+      default: '',
+      required: false
+    }
+  },
+  inject: {
+    col: {
+      type: Number
+    }
+  },
+  render () {
+    return (
+      <Col {...{ props: responsive[this.col] }}>
+        <div class="term">{this.$props.term}</div>
+        <div class="content">{this.$slots.default}</div>
+      </Col>
+    )
+  }
+}
+
+const responsive = {
+  1: { xs: 24 },
+  2: { xs: 24, sm: 12 },
+  3: { xs: 24, sm: 12, md: 8 },
+  4: { xs: 24, sm: 12, md: 6 }
+}
+
+export default {
+  name: 'DetailList',
+  Item: Item,
+  components: {
+    Col
+  },
+  props: {
+    title: {
+      type: String,
+      default: '',
+      required: false
+    },
+    col: {
+      type: Number,
+      required: false,
+      default: 3
+    },
+    size: {
+      type: String,
+      required: false,
+      default: 'large'
+    },
+    layout: {
+      type: String,
+      required: false,
+      default: 'horizontal'
+    }
+  },
+  provide () {
+    return {
+      col: this.col > 4 ? 4 : this.col
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+
+  .description-list {
+
+    .title {
+      color: rgba(0,0,0,.85);
+      font-size: 14px;
+      font-weight: 500;
+      margin-bottom: 16px;
+    }
+
+    /deep/ .term {
+      color: rgba(0,0,0,.85);
+      display: table-cell;
+      line-height: 20px;
+      margin-right: 8px;
+      padding-bottom: 16px;
+      white-space: nowrap;
+
+      &:not(:empty):after {
+        content: ":";
+        margin: 0 8px 0 2px;
+        position: relative;
+        top: -.5px;
+      }
+    }
+
+    /deep/ .content {
+      color: rgba(0,0,0,.65);
+      display: table-cell;
+      min-height: 22px;
+      line-height: 22px;
+      padding-bottom: 16px;
+      width: 100%;
+      &:empty {
+        content: ' ';
+        height: 38px;
+        padding-bottom: 16px;
+      }
+    }
+
+    &.small {
+
+      .title {
+        font-size: 14px;
+        color: rgba(0, 0, 0, .65);
+        font-weight: normal;
+        margin-bottom: 12px;
+      }
+      /deep/ .term, .content {
+        padding-bottom: 8px;
+      }
+    }
+
+    &.large {
+      /deep/ .term, .content {
+        padding-bottom: 16px;
+      }
+
+      .title {
+        font-size: 16px;
+      }
+    }
+
+    &.vertical {
+      .term {
+        padding-bottom: 8px;
+      }
+      /deep/ .term, .content {
+        display: block;
+      }
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/index.js b/iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/index.js
new file mode 100644
index 0000000..7aed83d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/index.js
@@ -0,0 +1,2 @@
+import DescriptionList from './DescriptionList'
+export default DescriptionList
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Dialog.js b/iWare_RawMaterialWarehouse_Web/src/components/Dialog.js
new file mode 100644
index 0000000..78e95b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Dialog.js
@@ -0,0 +1,113 @@
+import Modal from 'ant-design-vue/es/modal'
+export default (Vue) => {
+  function dialog (component, componentProps, modalProps) {
+    const _vm = this
+    modalProps = modalProps || {}
+    if (!_vm || !_vm._isVue) {
+      return
+    }
+    let dialogDiv = document.querySelector('body>div[type=dialog]')
+    if (!dialogDiv) {
+      dialogDiv = document.createElement('div')
+      dialogDiv.setAttribute('type', 'dialog')
+      document.body.appendChild(dialogDiv)
+    }
+
+    const handle = function (checkFunction, afterHandel) {
+      if (checkFunction instanceof Function) {
+        const res = checkFunction()
+        if (res instanceof Promise) {
+          res.then(c => {
+            c && afterHandel()
+          })
+        } else {
+          res && afterHandel()
+        }
+      } else {
+        // checkFunction && afterHandel()
+        checkFunction || afterHandel()
+      }
+    }
+
+    const dialogInstance = new Vue({
+      data () {
+        return {
+          visible: true
+        }
+      },
+      router: _vm.$router,
+      store: _vm.$store,
+      mounted () {
+        this.$on('close', (v) => {
+          this.handleClose()
+        })
+      },
+      methods: {
+        handleClose () {
+          handle(this.$refs._component.onCancel, () => {
+            this.visible = false
+            this.$refs._component.$emit('close')
+            this.$refs._component.$emit('cancel')
+            dialogInstance.$destroy()
+          })
+        },
+        handleOk () {
+          handle(this.$refs._component.onOK || this.$refs._component.onOk, () => {
+            this.visible = false
+            this.$refs._component.$emit('close')
+            this.$refs._component.$emit('ok')
+            dialogInstance.$destroy()
+          })
+        }
+      },
+      render: function (h) {
+        const that = this
+        const modalModel = modalProps && modalProps.model
+        if (modalModel) {
+          delete modalProps.model
+        }
+        const ModalProps = Object.assign({}, modalModel && { model: modalModel } || {}, {
+          attrs: Object.assign({}, {
+            ...(modalProps.attrs || modalProps)
+          }, {
+            visible: this.visible
+          }),
+          on: Object.assign({}, {
+            ...(modalProps.on || modalProps)
+          }, {
+            ok: () => {
+              that.handleOk()
+            },
+            cancel: () => {
+              that.handleClose()
+            }
+          })
+        })
+
+        const componentModel = componentProps && componentProps.model
+        if (componentModel) {
+          delete componentProps.model
+        }
+        const ComponentProps = Object.assign({}, componentModel && { model: componentModel } || {}, {
+          ref: '_component',
+          attrs: Object.assign({}, {
+            ...((componentProps && componentProps.attrs) || componentProps)
+          }),
+          on: Object.assign({}, {
+            ...((componentProps && componentProps.on) || componentProps)
+          })
+        })
+
+        return h(Modal, ModalProps, [h(component, ComponentProps)])
+      }
+    }).$mount(dialogDiv)
+  }
+
+  Object.defineProperty(Vue.prototype, '$dialog', {
+    get: () => {
+      return function () {
+        dialog.apply(this, arguments)
+      }
+    }
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Editor/QuillEditor.vue b/iWare_RawMaterialWarehouse_Web/src/components/Editor/QuillEditor.vue
new file mode 100644
index 0000000..13524cd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Editor/QuillEditor.vue
@@ -0,0 +1,78 @@
+<template>
+  <div :class="prefixCls">
+    <quill-editor
+      v-model="content"
+      ref="myQuillEditor"
+      :options="editorOption"
+      @blur="onEditorBlur($event)"
+      @focus="onEditorFocus($event)"
+      @ready="onEditorReady($event)"
+      @change="onEditorChange($event)">
+    </quill-editor>
+
+  </div>
+</template>
+
+<script>
+import 'quill/dist/quill.core.css'
+import 'quill/dist/quill.snow.css'
+import 'quill/dist/quill.bubble.css'
+
+import { quillEditor } from 'vue-quill-editor'
+
+export default {
+  name: 'QuillEditor',
+  components: {
+    quillEditor
+  },
+  props: {
+    prefixCls: {
+      type: String,
+      default: 'ant-editor-quill'
+    },
+    // 琛ㄥ崟鏍¢獙鐢ㄥ瓧娈�
+    // eslint-disable-next-line
+    value: {
+      type: String
+    }
+  },
+  data () {
+    return {
+      content: null,
+      editorOption: {
+        // some quill options
+      }
+    }
+  },
+  methods: {
+    onEditorBlur (quill) {
+    },
+    onEditorFocus (quill) {
+    },
+    onEditorReady (quill) {
+    },
+    onEditorChange ({ quill, html, text }) {
+      this.$emit('change', html)
+    }
+  },
+  watch: {
+    value (val) {
+      this.content = val
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+@import url('../index.less');
+
+/* 瑕嗙洊 quill 榛樿杈规鍦嗚涓� ant 榛樿鍦嗚锛岀敤浜庣粺涓� ant 缁勪欢椋庢牸 */
+.ant-editor-quill {
+  /deep/ .ql-toolbar.ql-snow {
+    border-radius: @border-radius-base @border-radius-base 0 0;
+  }
+  /deep/ .ql-container.ql-snow {
+    border-radius: 0 0 @border-radius-base @border-radius-base;
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Editor/WangEditor.vue b/iWare_RawMaterialWarehouse_Web/src/components/Editor/WangEditor.vue
new file mode 100644
index 0000000..7a79a9e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Editor/WangEditor.vue
@@ -0,0 +1,126 @@
+<template>
+  <div>
+    <div id="editor" ref="myEditor"></div>
+    <slot></slot>
+  </div>
+</template>
+<script>
+  import WangEditor from 'wangeditor'
+  export default {
+    name: 'ComponentWangeditor',
+    data () {
+      return {
+        edit: ''
+      }
+    },
+    props: {
+      value: {
+        type: String,
+        default: ''
+      },
+      config: {
+        type: Object,
+        default: () => {
+          return {}
+        }
+      },
+      uploadConfig: {
+        type: Object,
+        default: () => {
+          return {
+            method: 'http', // 鏀寔custom(objurl)鍜宧ttp(鏈嶅姟鍣�)鍜宐ase64
+            url: '/'
+          }
+        }
+      }
+    },
+    computed: {
+      customConfig () {
+        return {
+          pasteFilterStyle: false, // 鍏抽棴鎺夌矘璐存牱寮忕殑杩囨护
+          pasteIgnoreImg: false, // 绮樿创鏃朵笉蹇界暐鍥剧墖
+          ...this.config
+        }
+      }
+    },
+    watch: {
+
+    },
+    components: {
+
+    },
+    methods: {
+      readBlobAsDataURL (blob, callback) {
+        var a = new FileReader()
+        a.onload = function (e) { callback(e.target.result) }
+        a.readAsDataURL(blob)
+      },
+      initEditor () {
+        var self = this
+        this.editor = new WangEditor(this.$refs.myEditor)
+        // 閰嶇疆 onchange 浜嬩欢
+        this.editor.customConfig = this.customConfig
+        this.editor.customConfig.uploadImgMaxLength = 5
+        this.editor.change = function () { // 缂栬緫鍖哄煙鍐呭鍙樺寲鏃�
+          self.$emit('input', this.txt.html())
+          self.$emit('onchange', this.txt.html(), this.txt)
+          // editor.txt.html('.....') //璁剧疆缂栬緫鍣ㄥ唴瀹�
+          // editor.txt.clear() //娓呯┖缂栬緫鍣ㄥ唴瀹�
+          // editor.txt.append('<p>杩藉姞鐨勫唴瀹�</p>')//缁х画杩藉姞鍐呭銆�
+          // editor.txt.text()  // 璇诲彇 text
+          // editor.txt.getJSON()  // 鑾峰彇 JSON 鏍煎紡鐨勫唴瀹�
+        }
+        this.editor.customConfig.customUploadImg = function (files, insert) {
+          if (self.uploadConfig.method === 'custom') {
+            files.forEach(file => {
+              var fileUrl = URL.createObjectURL(file)
+              insert(fileUrl)
+            })
+          }
+          if (self.uploadConfig.method === 'base64') {
+            files.forEach(file => {
+              self.readBlobAsDataURL(file, function (dataurl) {
+                insert(dataurl)
+              })
+            })
+          }
+          if (self.uploadConfig.method === 'http') {
+            if (self.uploadConfig.callback) {
+              self.uploadConfig.callback(files, insert)
+            } else {
+              var formData = new FormData()
+              files.forEach(file => {
+                formData.append('file', file)
+              })
+              self.$axios.post(self.uploadConfig.url, formData).then(({ data }) => {
+                if (data.status === 'success') {
+                  insert(data.url)
+                }
+              })
+            }
+          }
+        }
+
+        this.editor.create() // 鐢熸垚缂栬緫鍣�
+        this.editor.txt.text(this.value) // 鐢熸垚缂栬緫鍣�
+        this.$emit('oninit', this.editor)
+      }
+    },
+    beforeCreate () {
+    },
+    created () {
+    },
+    beforeMount () {
+    },
+    mounted () {
+      this.initEditor()
+    }
+  }
+</script>
+
+<style >
+  .w-e-toolbar{
+    flex-wrap:wrap;
+  }
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/Ellipsis.vue b/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/Ellipsis.vue
new file mode 100644
index 0000000..5d59200
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/Ellipsis.vue
@@ -0,0 +1,64 @@
+<script>
+import Tooltip from 'ant-design-vue/es/tooltip'
+import { cutStrByFullLength, getStrFullLength } from '@/components/_util/util'
+/*
+    const isSupportLineClamp = document.body.style.webkitLineClamp !== undefined;
+
+    const TooltipOverlayStyle = {
+      overflowWrap: 'break-word',
+      wordWrap: 'break-word',
+    };
+  */
+
+export default {
+  name: 'Ellipsis',
+  components: {
+    Tooltip
+  },
+  props: {
+    prefixCls: {
+      type: String,
+      default: 'ant-pro-ellipsis'
+    },
+    tooltip: {
+      type: Boolean
+    },
+    length: {
+      type: Number,
+      required: true
+    },
+    lines: {
+      type: Number,
+      default: 1
+    },
+    fullWidthRecognition: {
+      type: Boolean,
+      default: false
+    }
+  },
+  methods: {
+    getStrDom (str, fullLength) {
+      return (
+        <span>{ cutStrByFullLength(str, this.length) + (fullLength > this.length ? '...' : '') }</span>
+      )
+    },
+    getTooltip (fullStr, fullLength) {
+      return (
+        <Tooltip>
+          <template slot="title">{ fullStr }</template>
+          { this.getStrDom(fullStr, fullLength) }
+        </Tooltip>
+      )
+    }
+  },
+  render () {
+    const { tooltip, length } = this.$props
+    const str = this.$slots.default.map(vNode => vNode.text).join('')
+    const fullLength = getStrFullLength(str)
+    const strDom = tooltip && fullLength > length ? this.getTooltip(str, fullLength) : this.getStrDom(str, fullLength)
+    return (
+      strDom
+    )
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.js b/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.js
new file mode 100644
index 0000000..91e3ff4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.js
@@ -0,0 +1,3 @@
+import Ellipsis from './Ellipsis'
+
+export default Ellipsis
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.md b/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.md
new file mode 100644
index 0000000..f528ac7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.md
@@ -0,0 +1,38 @@
+# Ellipsis 鏂囨湰鑷姩鐪佺暐鍙�
+
+鏂囨湰杩囬暱鑷姩澶勭悊鐪佺暐鍙凤紝鏀寔鎸夌収鏂囨湰闀垮害鍜屾渶澶ц鏁颁袱绉嶆柟寮忔埅鍙栥��
+
+
+
+寮曠敤鏂瑰紡锛�
+
+```javascript
+import Ellipsis from '@/components/Ellipsis'
+
+export default {
+    components: {
+        Ellipsis
+    }
+}
+```
+
+
+
+## 浠g爜婕旂ず  [demo](https://pro.loacg.com/test/home)
+
+```html
+<ellipsis :length="100" tooltip>
+        There were injuries alleged in three cases in 2015, and a
+        fourth incident in September, according to the safety recall report. After meeting with US regulators in October, the firm decided to issue a voluntary recall.
+</ellipsis>
+```
+
+
+
+## API
+
+
+鍙傛暟 | 璇存槑 | 绫诲瀷 | 榛樿鍊�
+----|------|-----|------
+tooltip | 绉诲姩鍒版枃鏈睍绀哄畬鏁村唴瀹圭殑鎻愮ず | boolean | -
+length | 鍦ㄦ寜鐓ч暱搴︽埅鍙栦笅鐨勬枃鏈渶澶у瓧绗︽暟锛岃秴杩囧垯鎴彇鐪佺暐 | number | -
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Exception/ExceptionPage.vue b/iWare_RawMaterialWarehouse_Web/src/components/Exception/ExceptionPage.vue
new file mode 100644
index 0000000..832896c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Exception/ExceptionPage.vue
@@ -0,0 +1,130 @@
+<template>
+  <div class="exception">
+    <div class="imgBlock">
+      <div class="imgEle" :style="{backgroundImage: `url(${config[type].img})`}">
+      </div>
+    </div>
+    <div class="content">
+      <h1>{{ config[type].title }}</h1>
+      <div class="desc">{{ config[type].desc }}</div>
+      <div class="actions">
+        <a-button type="primary" @click="handleToHome">杩斿洖棣栭〉</a-button>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import types from './type'
+
+export default {
+  name: 'Exception',
+  props: {
+    type: {
+      type: String,
+      default: '404'
+    }
+  },
+  data () {
+    return {
+      config: types
+    }
+  },
+  methods: {
+    handleToHome () {
+      this.$router.push({ name: 'Console' })
+    }
+  }
+}
+</script>
+<style lang="less">
+@import "~ant-design-vue/lib/style/index";
+
+.exception {
+  display: flex;
+  align-items: center;
+  height: 80%;
+  min-height: 500px;
+
+  .imgBlock {
+    flex: 0 0 62.5%;
+    width: 62.5%;
+    padding-right: 152px;
+    zoom: 1;
+    &::before,
+    &::after {
+      content: ' ';
+      display: table;
+    }
+    &::after {
+      clear: both;
+      height: 0;
+      font-size: 0;
+      visibility: hidden;
+    }
+  }
+
+  .imgEle {
+    float: right;
+    width: 100%;
+    max-width: 430px;
+    height: 360px;
+    background-repeat: no-repeat;
+    background-position: 50% 50%;
+    background-size: contain;
+  }
+
+  .content {
+    flex: auto;
+
+    h1 {
+      margin-bottom: 24px;
+      color: #434e59;
+      font-weight: 600;
+      font-size: 72px;
+      line-height: 72px;
+    }
+
+    .desc {
+      margin-bottom: 16px;
+      color: @text-color-secondary;
+      font-size: 20px;
+      line-height: 28px;
+    }
+
+    .actions {
+      button:not(:last-child) {
+        margin-right: 8px;
+      }
+    }
+  }
+}
+
+@media screen and (max-width: @screen-xl) {
+  .exception {
+    .imgBlock {
+      padding-right: 88px;
+    }
+  }
+}
+
+@media screen and (max-width: @screen-sm) {
+  .exception {
+    display: block;
+    text-align: center;
+    .imgBlock {
+      margin: 0 auto 24px;
+      padding-right: 0;
+    }
+  }
+}
+
+@media screen and (max-width: @screen-xs) {
+  .exception {
+    .imgBlock {
+      margin-bottom: -24px;
+      overflow: hidden;
+    }
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Exception/index.js b/iWare_RawMaterialWarehouse_Web/src/components/Exception/index.js
new file mode 100644
index 0000000..dda91be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Exception/index.js
@@ -0,0 +1,2 @@
+import ExceptionPage from './ExceptionPage.vue'
+export default ExceptionPage
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Exception/type.js b/iWare_RawMaterialWarehouse_Web/src/components/Exception/type.js
new file mode 100644
index 0000000..8158f0f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Exception/type.js
@@ -0,0 +1,19 @@
+const types = {
+  403: {
+    img: 'https://gw.alipayobjects.com/zos/rmsportal/wZcnGqRDyhPOEYFcZDnb.svg',
+    title: '403',
+    desc: '鎶辨瓑锛屼綘鏃犳潈璁块棶璇ラ〉闈�'
+  },
+  404: {
+    img: 'https://gw.alipayobjects.com/zos/rmsportal/KpnpchXsobRgLElEozzI.svg',
+    title: '404',
+    desc: '鎶辨瓑锛屼綘璁块棶鐨勯〉闈笉瀛樺湪鎴栦粛鍦ㄥ紑鍙戜腑'
+  },
+  500: {
+    img: 'https://gw.alipayobjects.com/zos/rmsportal/RVRUAYdCGeYNBWoKiIwB.svg',
+    title: '500',
+    desc: '鎶辨瓑锛屾湇鍔″櫒鍑洪敊浜�'
+  }
+}
+
+export default types
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/FooterToolBar.vue b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/FooterToolBar.vue
new file mode 100644
index 0000000..f4056dc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/FooterToolBar.vue
@@ -0,0 +1,30 @@
+<template>
+  <div :class="prefixCls">
+    <div style="float: left">
+      <slot name="extra">{{ extra }}</slot>
+    </div>
+    <div style="float: right">
+      <slot></slot>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'FooterToolBar',
+  props: {
+    prefixCls: {
+      type: String,
+      default: 'ant-pro-footer-toolbar'
+    },
+    extra: {
+      type: [String, Object],
+      default: ''
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.js b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.js
new file mode 100644
index 0000000..a0bf145
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.js
@@ -0,0 +1,4 @@
+import FooterToolBar from './FooterToolBar'
+import './index.less'
+
+export default FooterToolBar
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.less b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.less
new file mode 100644
index 0000000..f56273f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.less
@@ -0,0 +1,23 @@
+@import "../index";
+
+@footer-toolbar-prefix-cls: ~"@{ant-pro-prefix}-footer-toolbar";
+
+.@{footer-toolbar-prefix-cls} {
+  position: fixed;
+  width: 100%;
+  bottom: 0;
+  right: 0;
+  height: 56px;
+  line-height: 56px;
+  box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.03);
+  background: #fff;
+  border-top: 1px solid #e8e8e8;
+  padding: 0 24px;
+  z-index: 9;
+
+  &:after {
+    content: "";
+    display: block;
+    clear: both;
+  }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.md b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.md
new file mode 100644
index 0000000..c1aec2c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.md
@@ -0,0 +1,48 @@
+# FooterToolbar 搴曢儴宸ュ叿鏍�
+
+鍥哄畾鍦ㄥ簳閮ㄧ殑宸ュ叿鏍忋��
+
+
+
+## 浣曟椂浣跨敤
+
+鍥哄畾鍦ㄥ唴瀹瑰尯鍩熺殑搴曢儴锛屼笉闅忔粴鍔ㄦ潯绉诲姩锛屽父鐢ㄤ簬闀块〉闈㈢殑鏁版嵁鎼滈泦鍜屾彁浜ゅ伐浣溿��
+
+
+
+寮曠敤鏂瑰紡锛�
+
+```javascript
+import FooterToolBar from '@/components/FooterToolbar'
+
+export default {
+    components: {
+        FooterToolBar
+    }
+}
+```
+
+
+
+## 浠g爜婕旂ず
+
+```html
+<footer-tool-bar>
+    <a-button type="primary" @click="validate" :loading="loading">鎻愪氦</a-button>
+</footer-tool-bar>
+```
+鎴�
+```html
+<footer-tool-bar extra="鎵╁睍淇℃伅鎻愮ず">
+    <a-button type="primary" @click="validate" :loading="loading">鎻愪氦</a-button>
+</footer-tool-bar>
+```
+
+
+## API
+
+鍙傛暟 | 璇存槑 | 绫诲瀷 | 榛樿鍊�
+----|------|-----|------
+children (slot) | 宸ュ叿鏍忓唴瀹癸紝鍚戝彸瀵归綈 | - | -
+extra | 棰濆淇℃伅锛屽悜宸﹀榻� | String, Object | -
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/GlobalFooter.vue b/iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/GlobalFooter.vue
new file mode 100644
index 0000000..9dc8a99
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/GlobalFooter.vue
@@ -0,0 +1,46 @@
+<template>
+  <div class="footer">
+    <div class="links">
+    </div>
+    <div class="copyright">
+      鐗堟潈鎵�鏈� Copyright漏浼熸湰鏅鸿兘鏈虹數(涓婃捣)鑲′唤鏈夐檺鍏徃
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'GlobalFooter',
+  data () {
+    return {}
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.footer {
+  padding: 0 16px;
+  margin: 0 0 10px;
+  text-align: center;
+
+  .links {
+    margin-bottom: 8px;
+
+    a {
+      color: rgba(0, 0, 0, 0.45);
+
+      &:hover {
+        color: rgba(0, 0, 0, 0.65);
+      }
+
+      &:not(:last-child) {
+        margin-right: 40px;
+      }
+    }
+  }
+  .copyright {
+    color: rgba(0, 0, 0, 0.45);
+    font-size: 14px;
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/index.js b/iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/index.js
new file mode 100644
index 0000000..832e0bd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/index.js
@@ -0,0 +1,2 @@
+import GlobalFooter from './GlobalFooter'
+export default GlobalFooter
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/GlobalHeader.vue b/iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/GlobalHeader.vue
new file mode 100644
index 0000000..bccb7f8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/GlobalHeader.vue
@@ -0,0 +1,194 @@
+<template>
+  <transition name="showHeader">
+    <div v-if="visible" class="header-animat">
+      <a-layout-header
+        v-if="visible"
+        :class="[fixedHeader && 'ant-header-fixedHeader', sidebarOpened ? 'ant-header-side-opened' : 'ant-header-side-closed', ]"
+        :style="{ padding: '0', height: '55px' }">
+        <div v-if="mode === 'sidemenu'" class="header">
+
+          <a-menu style="height: 55px; border-bottom: 0px;" mode="horizontal" :default-selected-keys="this.defApp">
+            <a-icon
+              v-if="device==='mobile'"
+              class="trigger"
+              :type="collapsed ? 'menu-fold' : 'menu-unfold'"
+              @click="toggle" />
+            <a-icon
+              v-else
+              class="trigger"
+              :type="collapsed ? 'menu-unfold' : 'menu-fold'"
+              @click="toggle"
+              style="padding-left: 20px; padding-right: 20px;" />
+
+            <a-menu-item
+              v-for="(item) in userInfo.apps"
+              :key="item.code"
+              style="top:0px; line-height: 55px; padding-left: 10px; padding-right: 10px"
+              @click="switchApp(item.code)">
+              {{ item.name }}
+            </a-menu-item>
+            <user-menu></user-menu>
+          </a-menu>
+
+        </div>
+        <div v-else :class="['top-nav-header-index', theme]">
+
+          <div class="header-index-wide">
+            <div class="header-index-left">
+              <logo class="top-nav-header" :show-title="device !== 'mobile'" />
+              <s-menu v-if="device !== 'mobile'" mode="horizontal" :menu="menus" :theme="theme" />
+              <a-icon v-else class="trigger" :type="collapsed ? 'menu-fold' : 'menu-unfold'" @click="toggle" />
+            </div>
+            <user-menu class="header-index-right"></user-menu>
+          </div>
+        </div>
+      </a-layout-header>
+    </div>
+  </transition>
+</template>
+
+<script>
+  import UserMenu from '../tools/UserMenu'
+  import SMenu from '../Menu/'
+  import Logo from '../tools/Logo'
+  import {
+    mixin
+  } from '@/utils/mixin'
+  import {
+    mapActions,
+    mapGetters
+  } from 'vuex'
+  import {
+    ALL_APPS_MENU
+  } from '@/store/mutation-types'
+  import Vue from 'vue'
+  import {
+    message
+  } from 'ant-design-vue/es'
+  import Enumerable from 'linq'
+
+  export default {
+    name: 'GlobalHeader',
+    components: {
+      UserMenu,
+      SMenu,
+      Logo
+    },
+    computed: {
+      ...mapGetters(['userInfo'])
+    },
+    created() {
+      // this.defApp.push(Vue.ls.get(ALL_APPS_MENU)[0].code)
+      var defautMenu = Enumerable.from(Vue.ls.get(ALL_APPS_MENU)).firstOrDefault(x => x.active === 'Y')
+      if (defautMenu !== undefined) {
+        this.defApp.push(defautMenu.code)
+      }
+    },
+    mixins: [mixin],
+    props: {
+      mode: {
+        type: String,
+        // sidemenu, topmenu
+        default: 'sidemenu'
+      },
+      menus: {
+        type: Array,
+        required: true
+      },
+      theme: {
+        type: String,
+        required: false,
+        default: 'dark'
+      },
+      collapsed: {
+        type: Boolean,
+        required: false,
+        default: false
+      },
+      device: {
+        type: String,
+        required: false,
+        default: 'desktop'
+      }
+    },
+    data() {
+      return {
+        visible: true,
+        oldScrollTop: 0,
+        defApp: []
+      }
+    },
+    mounted() {
+      document.addEventListener('scroll', this.handleScroll, {
+        passive: true
+      })
+    },
+    methods: {
+      ...mapActions(['MenuChange']),
+
+      /**
+       * 搴旂敤鍒囨崲
+       */
+      switchApp(appCode) {
+        this.defApp = []
+        const applicationData = this.userInfo.apps.filter(item => item.code === appCode)
+        const hideMessage = message.loading('姝e湪鍒囨崲搴旂敤锛�', 0)
+        this.MenuChange(applicationData[0]).then((res) => {
+          hideMessage()
+          // eslint-disable-next-line handle-callback-err
+        }).catch((err) => {
+          message.error('搴旂敤鍒囨崲寮傚父')
+        })
+      },
+      handleScroll() {
+        if (!this.autoHideHeader) {
+          return
+        }
+
+        const scrollTop = document.body.scrollTop + document.documentElement.scrollTop
+        if (!this.ticking) {
+          this.ticking = true
+          requestAnimationFrame(() => {
+            if (this.oldScrollTop > scrollTop) {
+              this.visible = true
+            } else if (scrollTop > 300 && this.visible) {
+              this.visible = false
+            } else if (scrollTop < 300 && !this.visible) {
+              this.visible = true
+            }
+            this.oldScrollTop = scrollTop
+            this.ticking = false
+          })
+        }
+      },
+      toggle() {
+        this.$emit('toggle')
+      }
+    },
+    beforeDestroy() {
+      document.body.removeEventListener('scroll', this.handleScroll, true)
+    }
+  }
+</script>
+
+<style lang="less">
+  @import '../index.less';
+
+  .header-animat {
+    position: relative;
+    z-index: @ant-global-header-zindex;
+  }
+
+  .showHeader-enter-active {
+    transition: all 0.25s ease;
+  }
+
+  .showHeader-leave-active {
+    transition: all 0.5s ease;
+  }
+
+  .showHeader-enter,
+  .showHeader-leave-to {
+    opacity: 0;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/index.js b/iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/index.js
new file mode 100644
index 0000000..0807c87
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/index.js
@@ -0,0 +1,2 @@
+import GlobalHeader from './GlobalHeader'
+export default GlobalHeader
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/IconSelector.vue b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/IconSelector.vue
new file mode 100644
index 0000000..810d297
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/IconSelector.vue
@@ -0,0 +1,86 @@
+<template>
+  <div :class="prefixCls">
+    <a-tabs v-model="currentTab" @change="handleTabChange">
+      <a-tab-pane v-for="v in icons" :tab="v.title" :key="v.key">
+        <ul>
+          <li v-for="(icon, key) in v.icons" :key="`${v.key}-${key}`" :class="{ 'active': selectedIcon==icon }" @click="handleSelectedIcon(icon)" >
+            <a-icon :type="icon" :style="{ fontSize: '36px' }" />
+          </li>
+        </ul>
+      </a-tab-pane>
+    </a-tabs>
+  </div>
+</template>
+
+<script>
+import icons from './icons'
+
+export default {
+  name: 'IconSelect',
+  props: {
+    prefixCls: {
+      type: String,
+      default: 'ant-pro-icon-selector'
+    },
+    // eslint-disable-next-line
+    value: {
+      type: String
+    }
+  },
+  data () {
+    return {
+      selectedIcon: this.value || '',
+      currentTab: 'directional',
+      icons
+    }
+  },
+  watch: {
+    value (val) {
+      this.selectedIcon = val
+      this.autoSwitchTab()
+    }
+  },
+  created () {
+    if (this.value) {
+      this.autoSwitchTab()
+    }
+  },
+  methods: {
+    handleSelectedIcon (icon) {
+      this.selectedIcon = icon
+      this.$emit('change', icon)
+    },
+    handleTabChange (activeKey) {
+      this.currentTab = activeKey
+    },
+    autoSwitchTab () {
+      icons.some(item => item.icons.some(icon => icon === this.value) && (this.currentTab = item.key))
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  @import "../index.less";
+
+  ul{
+    list-style: none;
+    padding: 0;
+    overflow-y: scroll;
+    height: 250px;
+
+    li{
+      display: inline-block;
+      padding: @padding-sm;
+      margin: 3px 0;
+      border-radius: @border-radius-base;
+
+      &:hover, &.active{
+        // box-shadow: 0px 0px 5px 2px @primary-color;
+        cursor: pointer;
+        color: @white;
+        background-color: @primary-color;
+      }
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/README.md b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/README.md
new file mode 100644
index 0000000..49e25b8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/README.md
@@ -0,0 +1,47 @@
+IconSelector
+====
+
+> 鍥炬爣閫夋嫨缁勪欢锛屽父鐢ㄤ簬涓烘煇涓�涓暟鎹瀹氫竴涓浘鏍囨椂浣跨敤
+> eg: 璁惧畾鑿滃崟鍒楄〃鏃讹紝涓烘瘡涓彍鍗曡瀹氫竴涓浘鏍�
+
+璇ョ粍浠剁敱 [@Saraka](https://github.com/saraka-tsukai) 灏佽
+
+
+
+### 浣跨敤鏂瑰紡
+
+```vue
+<template>
+	<div>
+       <icon-selector @change="handleIconChange"/>
+    </div>
+</template>
+
+<script>
+import IconSelector from '@/components/IconSelector'
+
+export default {
+  name: 'YourView',
+  components: {
+    IconSelector
+  },
+  data () {
+    return {
+    }
+  },
+  methods: {
+    handleIconChange (icon) {
+    }
+  }
+}
+</script>
+```
+
+
+
+### 浜嬩欢
+
+
+| 鍚嶇О   | 璇存槑                       | 绫诲瀷   | 榛樿鍊� |
+| ------ | -------------------------- | ------ | ------ |
+| change | 褰撴敼鍙樹簡 `icon` 閫変腑椤硅Е鍙� | String | -      |
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/icons.js b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/icons.js
new file mode 100644
index 0000000..2afc40a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/icons.js
@@ -0,0 +1,36 @@
+/**
+ * 澧炲姞鏂扮殑鍥炬爣鏃讹紝璇烽伒寰互涓嬫暟鎹粨鏋�
+ * Adding new icon please follow the data structure below
+ */
+export default [
+  {
+    key: 'directional',
+    title: '鏂瑰悜鎬у浘鏍�',
+    icons: ['step-backward', 'step-forward', 'fast-backward', 'fast-forward', 'shrink', 'arrows-alt', 'down', 'up', 'left', 'right', 'caret-up', 'caret-down', 'caret-left', 'caret-right', 'up-circle', 'down-circle', 'left-circle', 'right-circle', 'double-right', 'double-left', 'vertical-left', 'vertical-right', 'forward', 'backward', 'rollback', 'enter', 'retweet', 'swap', 'swap-left', 'swap-right', 'arrow-up', 'arrow-down', 'arrow-left', 'arrow-right', 'play-circle', 'up-square', 'down-square', 'left-square', 'right-square', 'login', 'logout', 'menu-fold', 'menu-unfold', 'border-bottom', 'border-horizontal', 'border-inner', 'border-left', 'border-right', 'border-top', 'border-verticle', 'pic-center', 'pic-left', 'pic-right', 'radius-bottomleft', 'radius-bottomright', 'radius-upleft', 'fullscreen', 'fullscreen-exit']
+  },
+  {
+    key: 'suggested',
+    title: '鎻愮ず寤鸿鎬у浘鏍�',
+    icons: ['question', 'question-circle', 'plus', 'plus-circle', 'pause', 'pause-circle', 'minus', 'minus-circle', 'plus-square', 'minus-square', 'info', 'info-circle', 'exclamation', 'exclamation-circle', 'close', 'close-circle', 'close-square', 'check', 'check-circle', 'check-square', 'clock-circle', 'warning', 'issues-close', 'stop']
+  },
+  {
+    key: 'editor',
+    title: '缂栬緫绫诲浘鏍�',
+    icons: ['edit', 'form.vue', 'copy', 'scissor', 'delete', 'snippets', 'diff', 'highlight', 'align-center', 'align-left', 'align-right', 'bg-colors', 'bold', 'italic', 'underline', 'strikethrough', 'redo', 'undo', 'zoom-in', 'zoom-out', 'font-colors', 'font-size', 'line-height', 'column-height', 'dash', 'small-dash', 'sort-ascending', 'sort-descending', 'drag', 'ordered-list', 'radius-setting']
+  },
+  {
+    key: 'data',
+    title: '鏁版嵁绫诲浘鏍�',
+    icons: ['area-chart', 'pie-chart', 'bar-chart', 'dot-chart', 'line-chart', 'radar-chart', 'heat-map', 'fall', 'rise', 'stock', 'box-plot', 'fund', 'sliders']
+  },
+  {
+    key: 'brand_logo',
+    title: '缃戠珯閫氱敤鍥炬爣',
+    icons: ['lock', 'unlock', 'bars', 'book', 'calendar', 'cloud', 'cloud-download', 'code', 'copy', 'credit-card', 'delete', 'desktop', 'download', 'ellipsis', 'file', 'file-text', 'file-unknown', 'file-pdf', 'file-word', 'file-excel', 'file-jpg', 'file-ppt', 'file-markdown', 'file-add', 'folder', 'folder-open', 'folder-add', 'hdd', 'frown', 'meh', 'smile', 'inbox', 'laptop', 'appstore', 'link', 'mail', 'mobile', 'notification', 'paper-clip', 'picture', 'poweroff', 'reload', 'search', 'setting', 'share-alt', 'shopping-cart', 'tablet', 'tag', 'tags', 'to-top', 'upload', 'user', 'video-camera', 'home', 'loading', 'loading-3-quarters', 'cloud-upload', 'star', 'heart', 'environment', 'eye', 'camera', 'save', 'team', 'solution', 'phone', 'filter', 'exception', 'export', 'customer-service', 'qrcode', 'scan', 'like', 'dislike', 'message', 'pay-circle', 'calculator', 'pushpin', 'bulb', 'select', 'switcher', 'rocket', 'bell', 'disconnect', 'database', 'compass', 'barcode', 'hourglass', 'key', 'flag', 'layout', 'printer', 'sound', 'usb', 'skin', 'tool', 'sync', 'wifi', 'car', 'schedule', 'user-add', 'user-delete', 'usergroup-add', 'usergroup-delete', 'man', 'woman', 'shop', 'gift', 'idcard', 'medicine-box', 'red-envelope', 'coffee', 'copyright', 'trademark', 'safety', 'wallet', 'bank', 'trophy', 'contacts', 'global', 'shake', 'api', 'fork', 'dashboard', 'table', 'profile', 'alert', 'audit', 'branches', 'build', 'border', 'crown', 'experiment', 'fire', 'money-collect', 'property-safety', 'read', 'reconciliation', 'rest', 'security-scan', 'insurance', 'interaction', 'safety-certificate', 'project', 'thunderbolt', 'block', 'cluster', 'deployment-unit', 'dollar', 'euro', 'pound', 'file-done', 'file-exclamation', 'file-protect', 'file-search', 'file-sync', 'gateway', 'gold', 'robot', 'shopping']
+  },
+  {
+    key: 'application',
+    title: '鍝佺墝鍜屾爣璇�',
+    icons: ['android', 'apple', 'windows', 'ie', 'chrome', 'github', 'aliwangwang', 'dingding', 'weibo-square', 'weibo-circle', 'taobao-circle', 'html5', 'weibo', 'twitter', 'wechat', 'youtube', 'alipay-circle', 'taobao', 'skype', 'qq', 'medium-workmark', 'gitlab', 'medium', 'linkedin', 'google-plus', 'dropbox', 'facebook', 'codepen', 'code-sandbox', 'amazon', 'google', 'codepen-circle', 'alipay', 'ant-design', 'aliyun', 'zhihu', 'slack', 'slack-square', 'behance', 'behance-square', 'dribbble', 'dribbble-square', 'instagram', 'yuque', 'alibaba', 'yahoo']
+  }
+]
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/index.js b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/index.js
new file mode 100644
index 0000000..2d27d70
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/index.js
@@ -0,0 +1,2 @@
+import IconSelector from './IconSelector'
+export default IconSelector
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Loading.js b/iWare_RawMaterialWarehouse_Web/src/components/Loading.js
new file mode 100644
index 0000000..5de79ff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Loading.js
@@ -0,0 +1,64 @@
+import Vue from "vue";
+import { Spin } from "ant-design-vue"; 
+
+const createFullLoading = function(){
+  const instance = new Vue({
+    data: {
+      visible: false,
+    },
+    methods: {
+      show() {
+        this.visible = true;
+      },
+      hide() {
+        this.visible = false;
+      },
+    },
+    render(h, data) {
+      const fullscreenStyle = {
+        position: "fixed",
+        left: 0,
+        top: 0,
+        width: "100%",
+        height: "100%",
+        display: this.visible?'block':'none',
+        zIndex:99999999999
+      }
+      const maskStyle = {
+        position: "absolute",
+        left: 0,
+        top: 0,
+        width: "100%",
+        height: "100%",
+        zIndex:1,
+        backgroundColor:'rgba(0,0,0,.2)'
+      }
+      const innerStyle = {
+        position: "absolute",
+        left: 0,
+        top: 0,
+        width: "100%",
+        height: "100%",
+        zIndex:2,
+        backgroundColor:'transparent',
+        display: "flex",
+        justifyContent: "center",
+        alignItems: "center"
+      }
+      return (
+        <div style={fullscreenStyle}>
+          <div style={maskStyle}></div>
+          <div style={innerStyle}><Spin /></div>
+        </div>
+      )
+    },
+  });
+  const component = instance.$mount();
+  document.body.appendChild(component.$el);
+  return instance
+}
+
+export default createFullLoading
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Menu/SideMenu.vue b/iWare_RawMaterialWarehouse_Web/src/components/Menu/SideMenu.vue
new file mode 100644
index 0000000..2889535
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Menu/SideMenu.vue
@@ -0,0 +1,61 @@
+<template>
+  <a-layout-sider
+    :class="['sider', isDesktop() ? null : 'shadow', theme, fixSiderbar ? 'ant-fixed-sidemenu' : null ]"
+    width="230px"
+    :collapsible="collapsible"
+    v-model="collapsed"
+    :trigger="null">
+    <logo />
+    <s-menu
+      :collapsed="collapsed"
+      :menu="menus"
+      :theme="theme"
+      :mode="mode"
+      @select="onSelect"
+    ></s-menu>
+  </a-layout-sider>
+
+</template>
+
+<script>
+import Logo from '@/components/tools/Logo'
+import SMenu from './index'
+import { mixin, mixinDevice } from '@/utils/mixin'
+
+export default {
+  name: 'SideMenu',
+  components: { Logo, SMenu },
+  mixins: [mixin, mixinDevice],
+  props: {
+    mode: {
+      type: String,
+      required: false,
+      default: 'inline'
+    },
+    theme: {
+      type: String,
+      required: false,
+      default: 'dark'
+    },
+    collapsible: {
+      type: Boolean,
+      required: false,
+      default: false
+    },
+    collapsed: {
+      type: Boolean,
+      required: false,
+      default: false
+    },
+    menus: {
+      type: Array,
+      required: true
+    }
+  },
+  methods: {
+    onSelect (obj) {
+      this.$emit('menuSelect', obj)
+    }
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Menu/index.js b/iWare_RawMaterialWarehouse_Web/src/components/Menu/index.js
new file mode 100644
index 0000000..4348509
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Menu/index.js
@@ -0,0 +1,2 @@
+import SMenu from './menu'
+export default SMenu
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.js b/iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.js
new file mode 100644
index 0000000..2b3f7a2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.js
@@ -0,0 +1,177 @@
+import Menu from 'ant-design-vue/es/menu'
+import Icon from 'ant-design-vue/es/icon'
+
+export default {
+  name: 'SMenu',
+  props: {
+    menu: {
+      type: Array,
+      required: true
+    },
+    theme: {
+      type: String,
+      required: false,
+      default: 'dark'
+    },
+    mode: {
+      type: String,
+      required: false,
+      default: 'inline'
+    },
+    collapsed: {
+      type: Boolean,
+      required: false,
+      default: false
+    }
+  },
+  data () {
+    return {
+      openKeys: [],
+      selectedKeys: [],
+      cachedOpenKeys: []
+    }
+  },
+  computed: {
+    rootSubmenuKeys: vm => {
+      const keys = []
+      vm.menu.forEach(item => keys.push(item.path))
+      return keys
+    }
+  },
+  mounted () {
+    this.updateMenu()
+  },
+  watch: {
+    collapsed (val) {
+      if (val) {
+        this.cachedOpenKeys = this.openKeys.concat()
+        this.openKeys = []
+      } else {
+        this.openKeys = this.cachedOpenKeys
+      }
+    },
+    $route: function () {
+      this.updateMenu()
+    }
+  },
+  methods: {
+    // select menu item
+    onOpenChange (openKeys) {
+      // 鍦ㄦ按骞虫ā寮忎笅鏃舵墽琛岋紝骞朵笖涓嶅啀鎵ц鍚庣画
+      if (this.mode === 'horizontal') {
+        this.openKeys = openKeys
+        return
+      }
+      // 闈炴按骞虫ā寮忔椂
+      const latestOpenKey = openKeys.find(key => !this.openKeys.includes(key))
+      if (!this.rootSubmenuKeys.includes(latestOpenKey)) {
+        this.openKeys = openKeys
+      } else {
+        this.openKeys = latestOpenKey ? [latestOpenKey] : []
+      }
+    },
+    onSelect ({ item, key, selectedKeys }) {
+      this.selectedKeys = selectedKeys
+      this.$emit('select', { item, key, selectedKeys })
+    },
+    updateMenu () {
+      const routes = this.$route.matched.concat()
+      const { hidden } = this.$route.meta
+      if (routes.length >= 3 && hidden) {
+        routes.pop()
+        this.selectedKeys = [routes[routes.length - 1].path]
+      } else {
+        this.selectedKeys = [routes.pop().path]
+      }
+      const openKeys = []
+      if (this.mode === 'inline') {
+        routes.forEach(item => {
+          openKeys.push(item.path)
+        })
+      }
+
+      this.collapsed ? (this.cachedOpenKeys = openKeys) : (this.openKeys = openKeys)
+    },
+
+    // render
+    renderItem (menu) {
+      if (!menu.hidden) {
+        return menu.children && !menu.hideChildrenInMenu ? this.renderSubMenu(menu) : this.renderMenuItem(menu)
+      }
+      return null
+    },
+    renderMenuItem (menu) {
+      const target = menu.meta.target || null
+      const CustomTag = target && 'a' || 'router-link'
+      const props = { to: { name: menu.name } }
+      const attrs = { href: menu.path, target: menu.meta.target }
+
+      if (menu.children && menu.hideChildrenInMenu) {
+        // 鎶婃湁瀛愯彍鍗曠殑 骞朵笖 鐖惰彍鍗曟槸瑕侀殣钘忓瓙鑿滃崟鐨�
+        // 閮界粰瀛愯彍鍗曞鍔犱竴涓� hidden 灞炴��
+        // 鐢ㄦ潵缁欏埛鏂伴〉闈㈡椂锛� selectedKeys 鍋氭帶鍒剁敤
+        menu.children.forEach(item => {
+          item.meta = Object.assign(item.meta, { hidden: true })
+        })
+      }
+
+      return (
+        <Menu.Item {...{ key: menu.path }}>
+          <CustomTag {...{ props, attrs }}>
+            {this.renderIcon(menu.meta.icon)}
+            <span>{menu.meta.title}</span>
+          </CustomTag>
+        </Menu.Item>
+      )
+    },
+    renderSubMenu (menu) {
+      const itemArr = []
+      if (!menu.hideChildrenInMenu) {
+        menu.children.forEach(item => itemArr.push(this.renderItem(item)))
+      }
+      return (
+        <Menu.SubMenu {...{ key: menu.path }}>
+          <span slot="title">
+            {this.renderIcon(menu.meta.icon)}
+            <span>{menu.meta.title}</span>
+          </span>
+          {itemArr}
+        </Menu.SubMenu>
+      )
+    },
+    renderIcon (icon) {
+      if (icon === 'none' || icon === undefined) {
+        return null
+      }
+      const props = {}
+      typeof (icon) === 'object' ? props.component = icon : props.type = icon
+      return (
+        <Icon {... { props } }/>
+      )
+    }
+  },
+
+  render () {
+    const dynamicProps = {
+      props: {
+        mode: this.mode,
+        theme: this.theme,
+        openKeys: this.openKeys,
+        selectedKeys: this.selectedKeys
+      },
+      on: {
+        openChange: this.onOpenChange,
+        select: this.onSelect
+      }
+    }
+
+    const menuTree = this.menu.map(item => {
+      if (item.hidden) {
+        return null
+      }
+      return this.renderItem(item)
+    })
+
+    return (<Menu {...dynamicProps}>{menuTree}</Menu>)
+  }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.render.js b/iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.render.js
new file mode 100644
index 0000000..279e4ad
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.render.js
@@ -0,0 +1,155 @@
+import Menu from 'ant-design-vue/es/menu'
+import Icon from 'ant-design-vue/es/icon'
+
+const { Item, SubMenu } = Menu
+
+export default {
+  name: 'SMenu',
+  props: {
+    menu: {
+      type: Array,
+      required: true
+    },
+    theme: {
+      type: String,
+      required: false,
+      default: 'dark'
+    },
+    mode: {
+      type: String,
+      required: false,
+      default: 'inline'
+    },
+    collapsed: {
+      type: Boolean,
+      required: false,
+      default: false
+    }
+  },
+  data () {
+    return {
+      openKeys: [],
+      selectedKeys: [],
+      cachedOpenKeys: []
+    }
+  },
+  computed: {
+    rootSubmenuKeys: vm => {
+      const keys = []
+      vm.menu.forEach(item => keys.push(item.path))
+      return keys
+    }
+  },
+  created () {
+    this.updateMenu()
+  },
+  watch: {
+    collapsed (val) {
+      if (val) {
+        this.cachedOpenKeys = this.openKeys.concat()
+        this.openKeys = []
+      } else {
+        this.openKeys = this.cachedOpenKeys
+      }
+    },
+    $route: function () {
+      this.updateMenu()
+    }
+  },
+  methods: {
+    renderIcon: function (h, icon) {
+      if (icon === 'none' || icon === undefined) {
+        return null
+      }
+      const props = {}
+      typeof (icon) === 'object' ? props.component = icon : props.type = icon
+      return h(Icon, { props: { ...props } })
+    },
+    renderMenuItem: function (h, menu, pIndex, index) {
+      const target = menu.meta.target || null
+      return h(Item, { key: menu.path ? menu.path : 'item_' + pIndex + '_' + index }, [
+        h('router-link', { attrs: { to: { name: menu.name }, target: target } }, [
+          this.renderIcon(h, menu.meta.icon),
+          h('span', [menu.meta.title])
+        ])
+      ])
+    },
+    renderSubMenu: function (h, menu, pIndex, index) {
+      const this2_ = this
+      const subItem = [h('span', { slot: 'title' }, [this.renderIcon(h, menu.meta.icon), h('span', [menu.meta.title])])]
+      const itemArr = []
+      const pIndex_ = pIndex + '_' + index
+      if (!menu.hideChildrenInMenu) {
+        menu.children.forEach(function (item, i) {
+          itemArr.push(this2_.renderItem(h, item, pIndex_, i))
+        })
+      }
+      return h(SubMenu, { key: menu.path ? menu.path : 'submenu_' + pIndex + '_' + index }, subItem.concat(itemArr))
+    },
+    renderItem: function (h, menu, pIndex, index) {
+      if (!menu.hidden) {
+        return menu.children && !menu.hideChildrenInMenu
+          ? this.renderSubMenu(h, menu, pIndex, index)
+          : this.renderMenuItem(h, menu, pIndex, index)
+      }
+    },
+    renderMenu: function (h, menuTree) {
+      const this2_ = this
+      const menuArr = []
+      menuTree.forEach(function (menu, i) {
+        if (!menu.hidden) {
+          menuArr.push(this2_.renderItem(h, menu, '0', i))
+        }
+      })
+      return menuArr
+    },
+    onOpenChange (openKeys) {
+      const latestOpenKey = openKeys.find(key => !this.openKeys.includes(key))
+      if (!this.rootSubmenuKeys.includes(latestOpenKey)) {
+        this.openKeys = openKeys
+      } else {
+        this.openKeys = latestOpenKey ? [latestOpenKey] : []
+      }
+    },
+    updateMenu () {
+      const routes = this.$route.matched.concat()
+
+      if (routes.length >= 4 && this.$route.meta.hidden) {
+        routes.pop()
+        this.selectedKeys = [routes[2].path]
+      } else {
+        this.selectedKeys = [routes.pop().path]
+      }
+
+      const openKeys = []
+      if (this.mode === 'inline') {
+        routes.forEach(item => {
+          openKeys.push(item.path)
+        })
+      }
+
+      this.collapsed ? (this.cachedOpenKeys = openKeys) : (this.openKeys = openKeys)
+    }
+  },
+  render (h) {
+    return h(
+      Menu,
+      {
+        props: {
+          theme: this.$props.theme,
+          mode: this.$props.mode,
+          openKeys: this.openKeys,
+          selectedKeys: this.selectedKeys
+        },
+        on: {
+          openChange: this.onOpenChange,
+          select: obj => {
+            this.selectedKeys = obj.selectedKeys
+            this.$emit('select', obj)
+          }
+        }
+      },
+      this.renderMenu(h, this.menu)
+    )
+  }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/MultiTab.vue b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/MultiTab.vue
new file mode 100644
index 0000000..c9dd077
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/MultiTab.vue
@@ -0,0 +1,162 @@
+<script>
+import events from './events'
+
+export default {
+  name: 'MultiTab',
+  data () {
+    return {
+      fullPathList: [],
+      pages: [],
+      activeKey: '',
+      newTabIndex: 0
+    }
+  },
+  created () {
+    // bind event
+    events.$on('open', val => {
+      if (!val) {
+        throw new Error(`multi-tab: open tab ${val} err`)
+      }
+      this.activeKey = val
+    }).$on('close', val => {
+      if (!val) {
+        this.closeThat(this.activeKey)
+        return
+      }
+      this.closeThat(val)
+    }).$on('rename', ({ key, name }) => {
+      try {
+        const item = this.pages.find(item => item.path === key)
+        item.meta.customTitle = name
+        this.$forceUpdate()
+      } catch (e) {
+      }
+    })
+
+    this.pages.push(this.$route)
+    this.fullPathList.push(this.$route.fullPath)
+    this.selectedLastPath()
+  },
+  methods: {
+    onEdit (targetKey, action) {
+      this[action](targetKey)
+    },
+    remove (targetKey) {
+      this.pages = this.pages.filter(page => page.fullPath !== targetKey)
+      this.fullPathList = this.fullPathList.filter(path => path !== targetKey)
+      // 鍒ゆ柇褰撳墠鏍囩鏄惁鍏抽棴锛岃嫢鍏抽棴鍒欒烦杞埌鏈�鍚庝竴涓繕瀛樺湪鐨勬爣绛鹃〉
+      if (!this.fullPathList.includes(this.activeKey)) {
+        this.selectedLastPath()
+      }
+    },
+    selectedLastPath () {
+      this.activeKey = this.fullPathList[this.fullPathList.length - 1]
+    },
+
+    // content menu
+    closeThat (e) {
+      // 鍒ゆ柇鏄惁涓烘渶鍚庝竴涓爣绛鹃〉锛屽鏋滄槸鏈�鍚庝竴涓紝鍒欐棤娉曡鍏抽棴
+      if (this.fullPathList.length > 1) {
+        this.remove(e)
+      } else {
+        this.$message.info('杩欐槸鏈�鍚庝竴涓爣绛句簡, 鏃犳硶琚叧闂�')
+      }
+    },
+    closeLeft (e) {
+      const currentIndex = this.fullPathList.indexOf(e)
+      if (currentIndex > 0) {
+        this.fullPathList.forEach((item, index) => {
+          if (index < currentIndex) {
+            this.remove(item)
+          }
+        })
+      } else {
+        this.$message.info('宸︿晶娌℃湁鏍囩')
+      }
+    },
+    closeRight (e) {
+      const currentIndex = this.fullPathList.indexOf(e)
+      if (currentIndex < (this.fullPathList.length - 1)) {
+        this.fullPathList.forEach((item, index) => {
+          if (index > currentIndex) {
+            this.remove(item)
+          }
+        })
+      } else {
+        this.$message.info('鍙充晶娌℃湁鏍囩')
+      }
+    },
+    closeAll (e) {
+      const currentIndex = this.fullPathList.indexOf(e)
+      this.fullPathList.forEach((item, index) => {
+        if (index !== currentIndex) {
+          this.remove(item)
+        }
+      })
+    },
+    closeMenuClick (key, route) {
+      this[key](route)
+    },
+    renderTabPaneMenu (e) {
+      return (
+        <a-menu {...{ on: { click: ({ key, item, domEvent }) => { this.closeMenuClick(key, e) } } }}>
+          <a-menu-item key="closeThat">鍏抽棴褰撳墠鏍囩</a-menu-item>
+          <a-menu-item key="closeRight">鍏抽棴鍙充晶</a-menu-item>
+          <a-menu-item key="closeLeft">鍏抽棴宸︿晶</a-menu-item>
+          <a-menu-item key="closeAll">鍏抽棴鍏ㄩ儴</a-menu-item>
+        </a-menu>
+      )
+    },
+    // render
+    renderTabPane (title, keyPath) {
+      const menu = this.renderTabPaneMenu(keyPath)
+
+      return (
+        <a-dropdown overlay={menu} trigger={['contextmenu']}>
+          <span style={{ userSelect: 'none' }}>{ title }</span>
+        </a-dropdown>
+      )
+    }
+  },
+  watch: {
+    '$route': function (newVal) {
+      this.activeKey = newVal.fullPath
+      if (this.fullPathList.indexOf(newVal.fullPath) < 0) {
+        this.fullPathList.push(newVal.fullPath)
+        this.pages.push(newVal)
+      }
+    },
+    activeKey: function (newPathKey) {
+      this.$router.push({ path: newPathKey })
+    }
+  },
+  render () {
+    const { onEdit, $data: { pages } } = this
+    const panes = pages.map(page => {
+      return (
+        <a-tab-pane
+          style={{ height: 0, background: '#8999ee', color: '#899ee' }}
+          tab={this.renderTabPane(page.meta.customTitle || page.meta.title, page.fullPath)}
+          key={page.fullPath} closable={pages.length > 1}
+        >
+        </a-tab-pane>)
+    })
+
+    return (
+      <div class="ant-pro-multi-tab" style="margin:0">
+        <div class="ant-pro-multi-tab-wrapper">
+          <a-tabs
+            hideAdd
+            tabBarGutter={-1}
+            type={'editable-card'}
+            v-model={this.activeKey}
+            tabBarStyle={{ background: '#FFF', margin: 0, paddingLeft: '0px', paddingTop: '0px' }}
+            {...{ on: { edit: onEdit } }}>
+            {panes}
+          </a-tabs>
+        </div>
+      </div>
+    )
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/events.js b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/events.js
new file mode 100644
index 0000000..b0230b5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/events.js
@@ -0,0 +1,2 @@
+import Vue from 'vue'
+export default new Vue()
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.js b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.js
new file mode 100644
index 0000000..02a1c77
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.js
@@ -0,0 +1,40 @@
+import events from './events'
+import MultiTab from './MultiTab'
+import './index.less'
+
+const api = {
+  /**
+   * open new tab on route fullPath
+   * @param config
+   */
+  open: function (config) {
+    events.$emit('open', config)
+  },
+  rename: function (key, name) {
+    events.$emit('rename', { key: key, name: name })
+  },
+  /**
+   * close current page
+   */
+  closeCurrentPage: function () {
+    this.close()
+  },
+  /**
+   * close route fullPath tab
+   * @param config
+   */
+  close: function (config) {
+    events.$emit('close', config)
+  }
+}
+
+MultiTab.install = function (Vue) {
+  if (Vue.prototype.$multiTab) {
+    return
+  }
+  api.instance = events
+  Vue.prototype.$multiTab = api
+  Vue.component('multi-tab', MultiTab)
+}
+
+export default MultiTab
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.less b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.less
new file mode 100644
index 0000000..773e3af
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.less
@@ -0,0 +1,25 @@
+@import '../index';
+
+@multi-tab-prefix-cls: ~"@{ant-pro-prefix}-multi-tab";
+@multi-tab-wrapper-prefix-cls: ~"@{ant-pro-prefix}-multi-tab-wrapper";
+
+/*
+.topmenu .@{multi-tab-prefix-cls} {
+  max-width: 1200px;
+  margin: -23px auto 24px auto;
+}
+*/
+.@{multi-tab-prefix-cls} {
+  margin: -23px -24px 24px -24px;
+  background: #fff;
+}
+
+.topmenu .@{multi-tab-wrapper-prefix-cls} {
+  max-width: 1200px;
+  margin: 0 auto;
+}
+
+.topmenu.content-width-Fluid .@{multi-tab-wrapper-prefix-cls} {
+  max-width: 100%;
+  margin: 0 auto;
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/NProgress/nprogress.less b/iWare_RawMaterialWarehouse_Web/src/components/NProgress/nprogress.less
new file mode 100644
index 0000000..7826c0e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/NProgress/nprogress.less
@@ -0,0 +1,76 @@
+@import url('../index.less');
+
+/* Make clicks pass-through */
+#nprogress {
+  pointer-events: none;
+}
+
+#nprogress .bar {
+  background: @primary-color;
+
+  position: fixed;
+  z-index: 1031;
+  top: 0;
+  left: 0;
+
+  width: 100%;
+  height: 2px;
+}
+
+/* Fancy blur effect */
+#nprogress .peg {
+  display: block;
+  position: absolute;
+  right: 0px;
+  width: 100px;
+  height: 100%;
+  box-shadow: 0 0 10px @primary-color, 0 0 5px @primary-color;
+  opacity: 1.0;
+
+  -webkit-transform: rotate(3deg) translate(0px, -4px);
+  -ms-transform: rotate(3deg) translate(0px, -4px);
+  transform: rotate(3deg) translate(0px, -4px);
+}
+
+/* Remove these to get rid of the spinner */
+#nprogress .spinner {
+  display: block;
+  position: fixed;
+  z-index: 1031;
+  top: 15px;
+  right: 15px;
+}
+
+#nprogress .spinner-icon {
+  width: 18px;
+  height: 18px;
+  box-sizing: border-box;
+
+  border: solid 2px transparent;
+  border-top-color: @primary-color;
+  border-left-color: @primary-color;
+  border-radius: 50%;
+
+  -webkit-animation: nprogress-spinner 400ms linear infinite;
+  animation: nprogress-spinner 400ms linear infinite;
+}
+
+.nprogress-custom-parent {
+  overflow: hidden;
+  position: relative;
+}
+
+.nprogress-custom-parent #nprogress .spinner,
+.nprogress-custom-parent #nprogress .bar {
+  position: absolute;
+}
+
+@-webkit-keyframes nprogress-spinner {
+  0%   { -webkit-transform: rotate(0deg); }
+  100% { -webkit-transform: rotate(360deg); }
+}
+@keyframes nprogress-spinner {
+  0%   { transform: rotate(0deg); }
+  100% { transform: rotate(360deg); }
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/NoticeIcon.vue b/iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/NoticeIcon.vue
new file mode 100644
index 0000000..191da89
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/NoticeIcon.vue
@@ -0,0 +1,100 @@
+<template>
+  <a-popover
+    v-model="visible"
+    trigger="click"
+    placement="bottomRight"
+    overlayClassName="header-notice-wrapper"
+    :getPopupContainer="() => $refs.noticeRef.parentElement"
+    :autoAdjustOverflow="true"
+    :arrowPointAtCenter="true"
+    :overlayStyle="{ width: '300px', top: '50px' }"
+  >
+    <template slot="content">
+      <a-spin :spinning="loading">
+        <a-tabs>
+          <a-tab-pane :tab="item.key" :key="item.key" v-for="item in userNotices.rows">
+            <a-list
+            ><a-list-item
+               v-for="(notice, index) in item.noticeData.filter(m => {
+                 return m.type == item.value
+               })"
+               :key="index"
+             >
+               <a-list-item-meta :title="notice.title" :description="notice.publicTime">
+                 <a-avatar style="background-color: white" slot="avatar" :src="noticeImg" />
+               </a-list-item-meta>
+             </a-list-item>
+              <a-list-item
+                v-if="
+                  item.noticeData.filter(m => {
+                    return m.type == item.value
+                  }).length > 0
+                "
+                style="display: block;text-align: center;"
+              >
+                <a-button type="link" @click="goMore()">鍘诲鐞�</a-button>
+              </a-list-item>
+            </a-list>
+          </a-tab-pane>
+        </a-tabs>
+      </a-spin>
+    </template>
+    <span @click="fetchNotice" class="header-notice" ref="noticeRef" style="padding: 0 18px">
+      <a-badge :count="userNotices.totalRows">
+        <a-icon style="font-size: 16px; padding: 4px" type="bell" />
+      </a-badge>
+    </span>
+  </a-popover>
+</template>
+
+<script>
+import noticeImg from '../../assets/notice.png'
+import { mapGetters } from 'vuex'
+export default {
+  name: 'HeaderNotice',
+  data() {
+    return {
+      loading: false,
+      visible: false,
+      noticeImg: noticeImg
+    }
+  },
+  mounted() {},
+  computed: {
+    ...mapGetters(['userNotices'])
+  },
+  methods: {
+    fetchNotice() {
+      // if (!this.visible) {
+      //   this.loading = true
+      //   setTimeout(() => {
+      //     this.loading = false
+      //   }, 100)
+      // } else {
+      //   this.loading = false
+      // }
+      this.visible = !this.visible
+    },
+    goMore() {
+      this.visible = !this.visible
+      this.$router.push('/noticeReceived')
+    }
+  }
+}
+</script>
+
+<style lang="css">
+.header-notice-wrapper {
+  top: 50px !important;
+}
+</style>
+<style lang="less" scoped>
+.header-notice {
+  display: inline-block;
+  transition: all 0.3s;
+
+  span {
+    vertical-align: initial;
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/index.js b/iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/index.js
new file mode 100644
index 0000000..659b9ec
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/index.js
@@ -0,0 +1,2 @@
+import NoticeIcon from './NoticeIcon'
+export default NoticeIcon
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/NumberInfo.vue b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/NumberInfo.vue
new file mode 100644
index 0000000..d76a4e6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/NumberInfo.vue
@@ -0,0 +1,54 @@
+<template>
+  <div :class="[prefixCls]">
+    <slot name="subtitle">
+      <div :class="[`${prefixCls}-subtitle`]">{{ typeof subTitle === 'string' ? subTitle : subTitle() }}</div>
+    </slot>
+    <div class="number-info-value">
+      <span>{{ total }}</span>
+      <span class="sub-total">
+        {{ subTotal }}
+        <icon :type="`caret-${status}`" />
+      </span>
+    </div>
+  </div>
+</template>
+
+<script>
+import Icon from 'ant-design-vue/es/icon'
+
+export default {
+  name: 'NumberInfo',
+  props: {
+    prefixCls: {
+      type: String,
+      default: 'ant-pro-number-info'
+    },
+    total: {
+      type: Number,
+      required: true
+    },
+    subTotal: {
+      type: Number,
+      required: true
+    },
+    subTitle: {
+      type: [String, Function],
+      default: ''
+    },
+    status: {
+      type: String,
+      default: 'up'
+    }
+  },
+  components: {
+    Icon
+  },
+  data () {
+    return {}
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  //@import "index";
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.js b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.js
new file mode 100644
index 0000000..659a2f3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.js
@@ -0,0 +1,3 @@
+import NumberInfo from './NumberInfo'
+
+export default NumberInfo
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.less b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.less
new file mode 100644
index 0000000..719113d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.less
@@ -0,0 +1,55 @@
+@import "../index";
+
+@numberInfo-prefix-cls: ~"@{ant-pro-prefix}-number-info";
+
+.@{numberInfo-prefix-cls} {
+
+  .ant-pro-number-info-subtitle {
+    color: @text-color-secondary;
+    font-size: @font-size-base;
+    height: 22px;
+    line-height: 22px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    word-break: break-all;
+    white-space: nowrap;
+  }
+
+  .number-info-value {
+    margin-top: 4px;
+    font-size: 0;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    word-break: break-all;
+    white-space: nowrap;
+
+    & > span {
+      color: @heading-color;
+      display: inline-block;
+      line-height: 32px;
+      height: 32px;
+      font-size: 24px;
+      margin-right: 32px;
+    }
+
+    .sub-total {
+      color: @text-color-secondary;
+      font-size: @font-size-lg;
+      vertical-align: top;
+      margin-right: 0;
+      i {
+        font-size: 12px;
+        transform: scale(0.82);
+        margin-left: 4px;
+      }
+      :global {
+        .anticon-caret-up {
+          color: @red-6;
+        }
+        .anticon-caret-down {
+          color: @green-6;
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.md b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.md
new file mode 100644
index 0000000..147adc4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.md
@@ -0,0 +1,43 @@
+# NumberInfo 鏁版嵁鏂囨湰
+
+甯哥敤鍦ㄦ暟鎹崱鐗囦腑锛岀敤浜庣獊鍑哄睍绀烘煇涓笟鍔℃暟鎹��
+
+
+
+寮曠敤鏂瑰紡锛�
+
+```javascript
+import NumberInfo from '@/components/NumberInfo'
+
+export default {
+    components: {
+        NumberInfo
+    }
+}
+```
+
+
+
+## 浠g爜婕旂ず  [demo](https://pro.loacg.com/test/home)
+
+```html
+<number-info
+    :sub-title="() => { return 'Visits this week' }"
+    :total="12321"
+    status="up"
+    :sub-total="17.1"></number-info>
+```
+
+
+
+## API
+
+鍙傛暟 | 璇存槑 | 绫诲瀷 | 榛樿鍊�
+----|------|-----|------
+title | 鏍囬 | ReactNode\|string | -
+subTitle | 瀛愭爣棰� | ReactNode\|string | -
+total | 鎬婚噺 | ReactNode\|string | -
+subTotal | 瀛愭�婚噺 | ReactNode\|string | -
+status | 澧炲姞鐘舵�� | 'up \| down' | -
+theme | 鐘舵�佹牱寮� | string | 'light'
+gap | 璁剧疆鏁板瓧鍜屾弿杩颁箣闂寸殑闂磋窛锛堝儚绱狅級| number | 8
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/PageHeader/PageHeader.vue b/iWare_RawMaterialWarehouse_Web/src/components/PageHeader/PageHeader.vue
new file mode 100644
index 0000000..b182119
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/PageHeader/PageHeader.vue
@@ -0,0 +1,209 @@
+<template>
+  <div class="page-header">
+    <div class="page-header-index-wide">
+      <div class="detail">
+        <div class="main" v-if="!$route.meta.hiddenHeaderContent">
+          <div class="row">
+            <img v-if="logo" :src="logo" class="logo"/>
+            <h1 v-if="title" class="title">{{ title }}</h1>
+            <div class="action">
+              <slot name="action"></slot>
+            </div>
+          </div>
+          <div class="row">
+            <div v-if="avatar" class="avatar">
+              <a-avatar :src="avatar" />
+            </div>
+            <div v-if="this.$slots.content" class="headerContent">
+              <slot name="content"></slot>
+            </div>
+            <div v-if="this.$slots.extra" class="extra">
+              <slot name="extra"></slot>
+            </div>
+          </div>
+          <div>
+            <slot name="pageMenu"></slot>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+
+export default {
+  name: 'PageHeader',
+  props: {
+    title: {
+      type: [String, Boolean],
+      default: true,
+      required: false
+    },
+    logo: {
+      type: String,
+      default: '',
+      required: false
+    },
+    avatar: {
+      type: String,
+      default: '',
+      required: false
+    }
+  },
+  data () {
+    return {
+      crumbsState: this.$store.state.app.crumbsState
+      }
+  },
+  computed: {
+    getCrumbsState() {
+      return this.$store.state.app.crumbsState
+    }
+  },
+  watch: {
+    getCrumbsState (newVal, oldVal) {
+      this.crumbsState = newVal
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.page-header {
+  background: #fff;
+  padding: 10px 32px 0;
+  border-bottom: 0px solid #e8e8e8;
+
+  .breadcrumb {
+    margin-bottom: 10px;
+  }
+
+  .detail {
+    display: flex;
+    /*margin-bottom: 16px;*/
+
+    .avatar {
+      flex: 0 1 72px;
+      margin: 0 24px 8px 0;
+
+      & > span {
+        border-radius: 72px;
+        display: block;
+        width: 72px;
+        height: 72px;
+      }
+    }
+
+    .main {
+      width: 100%;
+      flex: 0 1 auto;
+
+      .row {
+        display: flex;
+        width: 100%;
+
+        .avatar {
+          margin-bottom: 10px;
+        }
+      }
+
+      .title {
+        font-size: 20px;
+        font-weight: 500;
+
+        font-size: 20px;
+        line-height: 28px;
+        font-weight: 500;
+        color: rgba(0, 0, 0, 0.85);
+        margin-bottom: 16px;
+        flex: auto;
+      }
+      .logo {
+        width: 28px;
+        height: 28px;
+        border-radius: 4px;
+        margin-right: 16px;
+      }
+      .content,
+      .headerContent {
+        flex: auto;
+        color: rgba(0, 0, 0, 0.45);
+        line-height: 22px;
+
+        .link {
+          margin-top: 16px;
+          line-height: 24px;
+
+          a {
+            font-size: 14px;
+            margin-right: 32px;
+          }
+        }
+      }
+      .extra {
+        flex: 0 1 auto;
+        margin-left: 88px;
+        min-width: 242px;
+        text-align: right;
+      }
+      .action {
+        margin-left: 56px;
+        min-width: 266px;
+        flex: 0 1 auto;
+        text-align: right;
+        &:empty {
+          display: none;
+        }
+      }
+    }
+  }
+}
+
+.mobile .page-header {
+  .main {
+    .row {
+      flex-wrap: wrap;
+
+      .avatar {
+        flex: 0 1 25%;
+        margin: 0 2% 8px 0;
+      }
+
+      .content,
+      .headerContent {
+        flex: 0 1 70%;
+
+        .link {
+          margin-top: 16px;
+          line-height: 24px;
+
+          a {
+            font-size: 14px;
+            margin-right: 10px;
+          }
+        }
+      }
+
+      .extra {
+        flex: 1 1 auto;
+        margin-left: 0;
+        min-width: 0;
+        text-align: right;
+      }
+
+      .action {
+        margin-left: unset;
+        min-width: 266px;
+        flex: 0 1 auto;
+        text-align: left;
+        margin-bottom: 12px;
+
+        &:empty {
+          display: none;
+        }
+      }
+    }
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/PageHeader/index.js b/iWare_RawMaterialWarehouse_Web/src/components/PageHeader/index.js
new file mode 100644
index 0000000..ec1078c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/PageHeader/index.js
@@ -0,0 +1,2 @@
+import PageHeader from './PageHeader'
+export default PageHeader
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/PageLoading/index.jsx b/iWare_RawMaterialWarehouse_Web/src/components/PageLoading/index.jsx
new file mode 100644
index 0000000..af6d6d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/PageLoading/index.jsx
@@ -0,0 +1,106 @@
+import { Spin } from 'ant-design-vue'
+
+export const PageLoading = {
+  name: 'PageLoading',
+  props: {
+    tip: {
+      type: String,
+      default: 'Loading..'
+    },
+    size: {
+      type: String,
+      default: 'large'
+    }
+  },
+  render () {
+    const style = {
+      textAlign: 'center',
+      background: 'rgba(0,0,0,0.6)',
+      position: 'fixed',
+      top: 0,
+      bottom: 0,
+      left: 0,
+      right: 0,
+      zIndex: 1100
+    }
+    const spinStyle = {
+      position: 'absolute',
+      left: '50%',
+      top: '40%',
+      transform: 'translate(-50%, -50%)'
+    }
+    return (<div style={style}>
+      <Spin size={this.size} style={spinStyle} tip={this.tip} />
+    </div>)
+  }
+}
+
+const version = '0.0.1'
+const loading = {}
+
+loading.newInstance = (Vue, options) => {
+  let loadingElement = document.querySelector('body>div[type=loading]')
+  if (!loadingElement) {
+    loadingElement = document.createElement('div')
+    loadingElement.setAttribute('type', 'loading')
+    loadingElement.setAttribute('class', 'ant-loading-wrapper')
+    document.body.appendChild(loadingElement)
+  }
+
+  const cdProps = Object.assign({ visible: false, size: 'large', tip: 'Loading...' }, options)
+
+  const instance = new Vue({
+    data () {
+      return {
+        ...cdProps
+      }
+    },
+    render () {
+      const { tip } = this
+      const props = {}
+      this.tip && (props.tip = tip)
+      if (this.visible) {
+        return <PageLoading { ...{ props } } />
+      }
+      return null
+    }
+  }).$mount(loadingElement)
+
+  function update (config) {
+    const { visible, size, tip } = { ...cdProps, ...config }
+    instance.$set(instance, 'visible', visible)
+    if (tip) {
+      instance.$set(instance, 'tip', tip)
+    }
+    if (size) {
+      instance.$set(instance, 'size', size)
+    }
+  }
+
+  return {
+    instance,
+    update
+  }
+}
+
+const api = {
+  show: function (options) {
+    this.instance.update({ ...options, visible: true })
+  },
+  hide: function () {
+    this.instance.update({ visible: false })
+  }
+}
+
+const install = function (Vue, options) {
+  if (Vue.prototype.$loading) {
+    return
+  }
+  api.instance = loading.newInstance(Vue, options)
+  Vue.prototype.$loading = api
+}
+
+export default {
+  version,
+  install
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Result/Result.vue b/iWare_RawMaterialWarehouse_Web/src/components/Result/Result.vue
new file mode 100644
index 0000000..99f7f19
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Result/Result.vue
@@ -0,0 +1,109 @@
+<template>
+  <div class="result">
+    <div>
+      <a-icon :class="{ 'icon': true, [`${type}`]: true }" :type="localIsSuccess ? 'check-circle' : 'close-circle'"/>
+    </div>
+    <div class="title">
+      <slot name="title">
+        {{ title }}
+      </slot>
+    </div>
+    <div class="description">
+      <slot name="description">
+        {{ description }}
+      </slot>
+    </div>
+    <div class="extra" v-if="$slots.default">
+      <slot></slot>
+    </div>
+    <div class="action" v-if="$slots.action">
+      <slot name="action"></slot>
+    </div>
+  </div>
+</template>
+
+<script>
+const resultEnum = ['success', 'error']
+
+export default {
+  name: 'Result',
+  props: {
+    /** @Deprecated */
+    isSuccess: {
+      type: Boolean,
+      default: false
+    },
+    type: {
+      type: String,
+      default: resultEnum[0],
+      validator (val) {
+        return (val) => resultEnum.includes(val)
+      }
+    },
+    title: {
+      type: String,
+      default: ''
+    },
+    description: {
+      type: String,
+      default: ''
+    }
+  },
+  computed: {
+    localIsSuccess: function () {
+      return this.type === resultEnum[0]
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  .result {
+    text-align: center;
+    width: 72%;
+    margin: 0 auto;
+    padding: 24px 0 8px;
+
+    .icon {
+      font-size: 72px;
+      line-height: 72px;
+      margin-bottom: 24px;
+    }
+    .success {
+      color: #52c41a;
+    }
+    .error {
+      color: red;
+    }
+    .title {
+      font-size: 24px;
+      color: rgba(0, 0, 0, .85);
+      font-weight: 500;
+      line-height: 32px;
+      margin-bottom: 16px;
+    }
+    .description {
+      font-size: 14px;
+      line-height: 22px;
+      color: rgba(0, 0, 0, 0.45);
+      margin-bottom: 24px;
+    }
+    .extra {
+      background: #fafafa;
+      padding: 24px 40px;
+      border-radius: 2px;
+      text-align: left;
+    }
+    .action {
+      margin-top: 32px;
+    }
+  }
+
+  .mobile {
+    .result {
+      width: 100%;
+      margin: 0 auto;
+      padding: unset;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Result/index.js b/iWare_RawMaterialWarehouse_Web/src/components/Result/index.js
new file mode 100644
index 0000000..51cb3b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Result/index.js
@@ -0,0 +1,2 @@
+import Result from './Result.vue'
+export default Result
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Search/GlobalSearch.jsx b/iWare_RawMaterialWarehouse_Web/src/components/Search/GlobalSearch.jsx
new file mode 100644
index 0000000..13bfa56
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Search/GlobalSearch.jsx
@@ -0,0 +1,62 @@
+import { Select } from 'ant-design-vue'
+import './index.less'
+
+const GlobalSearch = {
+  name: 'GlobalSearch',
+  data () {
+    return {
+      visible: false
+    }
+  },
+  mounted () {
+    const keyboardHandle = (e) => {
+      e.preventDefault()
+      e.stopPropagation()
+      const { ctrlKey, shiftKey, altKey, keyCode } = e
+      // key is `K` and hold ctrl
+      if (keyCode === 75 && ctrlKey && !shiftKey && !altKey) {
+        this.visible = !this.visible
+      }
+    }
+    document.addEventListener('keydown', keyboardHandle)
+  },
+  render () {
+    const { visible } = this
+    const handleSearch = (e) => {
+      this.$emit('search', e)
+    }
+
+    const handleChange = (e) => {
+      this.$emit('change', e)
+    }
+    if (!visible) {
+      return null
+    }
+    return (
+      <div class={'global-search global-search-wrapper'}>
+        <div class={'global-search-box'}>
+          <Select
+            size={'large'}
+            showSearch
+            placeholder="Input search text.."
+            style={{ width: '100%' }}
+            defaultActiveFirstOption={false}
+            showArrow={false}
+            filterOption={false}
+            onSearch={handleSearch}
+            onChange={handleChange}
+            notFoundContent={null}
+          >
+          </Select>
+          <div class={'global-search-tips'}>Open with Ctrl/鈱� + K</div>
+        </div>
+      </div>
+    )
+  }
+}
+
+GlobalSearch.install = function (Vue) {
+  Vue.component(GlobalSearch.name, GlobalSearch)
+}
+
+export default GlobalSearch
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Search/index.less b/iWare_RawMaterialWarehouse_Web/src/components/Search/index.less
new file mode 100644
index 0000000..d397852
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Search/index.less
@@ -0,0 +1,25 @@
+@import "~ant-design-vue/es/style/themes/default";
+
+.global-search-wrapper {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: @zindex-modal-mask;
+  background: @modal-mask-bg;
+
+  .global-search-box {
+    position: absolute;
+    top: 20%;
+    left: 50%;
+    width: 450px;
+    transform: translate(-50%, -50%);
+
+    .global-search-tips {
+      color: @white;
+      font-size: @font-size-lg;
+      text-align: right;
+    }
+  }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingDrawer.vue
new file mode 100644
index 0000000..9d4178d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingDrawer.vue
@@ -0,0 +1,360 @@
+<template>
+  <div class="setting-drawer">
+    <a-drawer
+      width="300"
+      placement="right"
+      @close="onClose"
+      :closable="false"
+      :visible="visible"
+      :drawer-style="{ position: 'absolute' }"
+      style="z-index: 999"
+    >
+      <div class="setting-drawer-index-content">
+
+        <div :style="{ marginBottom: '24px' }">
+          <h3 class="setting-drawer-index-title">鏁翠綋椋庢牸璁剧疆</h3>
+
+          <div class="setting-drawer-index-blockChecbox">
+            <a-tooltip>
+              <template slot="title">
+                鏆楄壊鑿滃崟椋庢牸
+              </template>
+              <div class="setting-drawer-index-item" @click="handleMenuTheme('dark')">
+                <img src="https://gw.alipayobjects.com/zos/rmsportal/LCkqqYNmvBEbokSDscrm.svg" alt="dark">
+                <div class="setting-drawer-index-selectIcon" v-if="navTheme === 'dark'">
+                  <a-icon type="check"/>
+                </div>
+              </div>
+            </a-tooltip>
+
+            <a-tooltip>
+              <template slot="title">
+                浜壊鑿滃崟椋庢牸
+              </template>
+              <div class="setting-drawer-index-item" @click="handleMenuTheme('light')">
+                <img src="https://gw.alipayobjects.com/zos/rmsportal/jpRkZQMyYRryryPNtyIC.svg" alt="light">
+                <div class="setting-drawer-index-selectIcon" v-if="navTheme !== 'dark'">
+                  <a-icon type="check"/>
+                </div>
+              </div>
+            </a-tooltip>
+          </div>
+        </div>
+
+        <div :style="{ marginBottom: '24px' }">
+          <h3 class="setting-drawer-index-title">涓婚鑹�</h3>
+
+          <div style="height: 20px">
+            <a-tooltip class="setting-drawer-theme-color-colorBlock" v-for="(item, index) in colorList" :key="index">
+              <template slot="title">
+                {{ item.key }}
+              </template>
+              <a-tag :color="item.color" @click="changeColor(item.color)">
+                <a-icon type="check" v-if="item.color === primaryColor"></a-icon>
+              </a-tag>
+            </a-tooltip>
+
+          </div>
+        </div>
+        <a-divider />
+
+        <div :style="{ marginBottom: '24px' }">
+          <h3 class="setting-drawer-index-title">瀵艰埅妯″紡</h3>
+
+          <div class="setting-drawer-index-blockChecbox">
+            <a-tooltip>
+              <template slot="title">
+                渚ц竟鏍忓鑸�
+              </template>
+              <div class="setting-drawer-index-item" @click="handleLayout('sidemenu')">
+                <img src="https://gw.alipayobjects.com/zos/rmsportal/JopDzEhOqwOjeNTXkoje.svg" alt="sidemenu">
+                <div class="setting-drawer-index-selectIcon" v-if="layoutMode === 'sidemenu'">
+                  <a-icon type="check"/>
+                </div>
+              </div>
+            </a-tooltip>
+
+            <a-tooltip>
+              <template slot="title">
+                椤堕儴鏍忓鑸�
+              </template>
+              <div class="setting-drawer-index-item" @click="handleLayout('topmenu')">
+                <img src="https://gw.alipayobjects.com/zos/rmsportal/KDNDBbriJhLwuqMoxcAr.svg" alt="topmenu">
+                <div class="setting-drawer-index-selectIcon" v-if="layoutMode !== 'sidemenu'">
+                  <a-icon type="check"/>
+                </div>
+              </div>
+            </a-tooltip>
+          </div>
+          <div :style="{ marginTop: '24px' }">
+            <a-list :split="false">
+              <a-list-item>
+                <a-tooltip slot="actions">
+                  <template slot="title">
+                    璇ヨ瀹氫粎 [椤堕儴鏍忓鑸猐 鏃舵湁鏁�
+                  </template>
+                  <a-select size="small" style="width: 80px;" :defaultValue="contentWidth" @change="handleContentWidthChange">
+                    <a-select-option value="Fixed">鍥哄畾</a-select-option>
+                    <a-select-option value="Fluid" v-if="layoutMode !== 'sidemenu'">娴佸紡</a-select-option>
+                  </a-select>
+                </a-tooltip>
+                <a-list-item-meta>
+                  <div slot="title">鍐呭鍖哄煙瀹藉害</div>
+                </a-list-item-meta>
+              </a-list-item>
+              <a-list-item>
+                <a-switch slot="actions" size="small" :defaultChecked="fixedHeader" @change="handleFixedHeader" />
+                <a-list-item-meta>
+                  <div slot="title">鍥哄畾 Header</div>
+                </a-list-item-meta>
+              </a-list-item>
+              <a-list-item>
+                <a-switch slot="actions" size="small" :disabled="!fixedHeader" :defaultChecked="autoHideHeader" @change="handleFixedHeaderHidden" />
+                <a-list-item-meta>
+                  <a-tooltip slot="title" placement="left">
+                    <template slot="title">鍥哄畾 Header 鏃跺彲閰嶇疆</template>
+                    <div :style="{ opacity: !fixedHeader ? '0.5' : '1' }">涓嬫粦鏃堕殣钘� Header</div>
+                  </a-tooltip>
+                </a-list-item-meta>
+              </a-list-item>
+              <a-list-item >
+                <a-switch slot="actions" size="small" :disabled="(layoutMode === 'topmenu')" :defaultChecked="fixSiderbar" @change="handleFixSiderbar" />
+                <a-list-item-meta>
+                  <div slot="title" :style="{ textDecoration: layoutMode === 'topmenu' ? 'line-through' : 'unset' }">鍥哄畾渚ц竟鑿滃崟</div>
+                </a-list-item-meta>
+              </a-list-item>
+            </a-list>
+          </div>
+        </div>
+        <a-divider />
+
+        <div :style="{ marginBottom: '24px' }">
+          <h3 class="setting-drawer-index-title">鍏朵粬璁剧疆</h3>
+          <div>
+            <a-list :split="false">
+              <a-list-item>
+                <a-switch slot="actions" size="small" :defaultChecked="colorWeak" @change="onColorWeak" />
+                <a-list-item-meta>
+                  <div slot="title">鑹插急妯″紡</div>
+                </a-list-item-meta>
+              </a-list-item>
+              <a-list-item>
+                <a-switch slot="actions" size="small" :defaultChecked="multiTab" @change="onMultiTab" />
+                <a-list-item-meta>
+                  <div slot="title">澶氶〉绛炬ā寮�</div>
+                </a-list-item-meta>
+              </a-list-item>
+              <a-list-item>
+                <a-switch slot="actions" size="small" :defaultChecked="crumbsState" @change="onCrumbs" />
+                <a-list-item-meta>
+                  <div slot="title">鏄剧ず闈㈠寘灞�</div>
+                </a-list-item-meta>
+              </a-list-item>
+            </a-list>
+          </div>
+        </div>
+        <a-divider />
+        <div :style="{ marginBottom: '24px' }">
+          <a-button
+            @click="doCopy"
+            icon="copy"
+            block
+          >鎷疯礉璁剧疆</a-button>
+          <a-alert type="warning" :style="{ marginTop: '24px' }">
+            <span slot="message">
+              閰嶇疆鏍忓彧鍦ㄥ紑鍙戠幆澧冪敤浜庨瑙堬紝鐢熶骇鐜涓嶄細灞曠幇锛岃鎵嬪姩淇敼閰嶇疆鏂囦欢銆備慨鏀归厤缃枃浠跺悗锛岄渶瑕佹竻绌烘湰鍦扮紦瀛樺拰LocalStorage
+              <a href="https://github.com/sendya/ant-design-pro-vue/blob/master/src/config/defaultSettings.js" target="_blank">src/config/defaultSettings.js</a>
+            </span>
+          </a-alert>
+        </div>
+      </div>
+      <div class="setting-drawer-index-handle" @click="toggle" slot="handle">
+        <a-icon type="setting" v-if="!visible"/>
+        <a-icon type="close" v-else/>
+      </div>
+    </a-drawer>
+  </div>
+</template>
+
+<script>
+/* import { DetailList } from '@/components'
+import SettingItem from './SettingItem' */
+import config from '@/config/defaultSettings'
+import { updateTheme, updateColorWeak, colorList } from './settingConfig'
+import { mixin, mixinDevice } from '@/utils/mixin'
+
+export default {
+  components: {
+    // DetailList,
+    // SettingItem
+  },
+  mixins: [mixin, mixinDevice],
+  data () {
+    return {
+      visible: false,
+      colorList
+    }
+  },
+  watch: {
+
+  },
+  mounted () {
+    updateTheme(this.primaryColor)
+    if (this.colorWeak !== config.colorWeak) {
+      updateColorWeak(this.colorWeak)
+    }
+  },
+  methods: {
+    showDrawer () {
+      this.visible = true
+    },
+    onClose () {
+      this.visible = false
+    },
+    toggle () {
+      this.visible = !this.visible
+    },
+    onColorWeak (checked) {
+      this.$store.dispatch('ToggleWeak', checked)
+      updateColorWeak(checked)
+    },
+    onMultiTab (checked) {
+      this.$store.dispatch('ToggleMultiTab', checked)
+    },
+    onCrumbs(checked) {
+      this.$store.dispatch('ToggleCrumbsState', checked)
+    },
+    handleMenuTheme (theme) {
+      this.$store.dispatch('ToggleTheme', theme)
+    },
+    doCopy () {
+      // get current settings from mixin or this.$store.state.app, pay attention to the property name
+      const text = `export default {
+  primaryColor: '${this.primaryColor}', // primary color of ant design
+  navTheme: '${this.navTheme}', // theme for nav menu
+  layout: '${this.layoutMode}', // nav menu position: sidemenu or topmenu
+  contentWidth: '${this.contentWidth}', // layout of content: Fluid or Fixed, only works when layout is topmenu
+  fixedHeader: ${this.fixedHeader}, // sticky header
+  fixSiderbar: ${this.fixSiderbar}, // sticky siderbar
+  autoHideHeader: ${this.autoHideHeader}, //  auto hide header
+  colorWeak: ${this.colorWeak},
+  multiTab: ${this.multiTab},
+  crumbsState: ${this.crumbsState},
+  production: process.env.NODE_ENV === 'production' && process.env.VUE_APP_PREVIEW !== 'true',
+  // vue-ls options
+  storageOptions: {
+    namespace: 'pro__',
+    name: 'ls',
+    storage: 'local',
+  }
+}`
+      this.$copyText(text).then(message => {
+        this.$message.success('澶嶅埗瀹屾瘯')
+      }).catch(err => {
+        this.$message.error('澶嶅埗澶辫触')
+      })
+    },
+    handleLayout (mode) {
+      this.$store.dispatch('ToggleLayoutMode', mode)
+      // 鍥犱负椤堕儴鑿滃崟涓嶈兘鍥哄畾宸︿晶鑿滃崟鏍忥紝鎵�浠ュ己鍒跺叧闂�
+      this.handleFixSiderbar(false)
+    },
+    handleContentWidthChange (type) {
+      this.$store.dispatch('ToggleContentWidth', type)
+    },
+    changeColor (color) {
+      if (this.primaryColor !== color) {
+        this.$store.dispatch('ToggleColor', color)
+        updateTheme(color)
+      }
+    },
+    handleFixedHeader (fixed) {
+      this.$store.dispatch('ToggleFixedHeader', fixed)
+    },
+    handleFixedHeaderHidden (autoHidden) {
+      this.$store.dispatch('ToggleFixedHeaderHidden', autoHidden)
+    },
+    handleFixSiderbar (fixed) {
+      if (this.layoutMode === 'topmenu') {
+        this.$store.dispatch('ToggleFixSiderbar', false)
+        return
+      }
+      this.$store.dispatch('ToggleFixSiderbar', fixed)
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+
+  .setting-drawer-index-content {
+
+    .setting-drawer-index-blockChecbox {
+      display: flex;
+
+      .setting-drawer-index-item {
+        margin-right: 16px;
+        position: relative;
+        border-radius: 4px;
+        cursor: pointer;
+
+        img {
+          width: 48px;
+        }
+
+        .setting-drawer-index-selectIcon {
+          position: absolute;
+          top: 0;
+          right: 0;
+          width: 100%;
+          padding-top: 15px;
+          padding-left: 24px;
+          height: 100%;
+          color: #1890ff;
+          font-size: 14px;
+          font-weight: 700;
+        }
+      }
+    }
+    .setting-drawer-theme-color-colorBlock {
+      width: 20px;
+      height: 20px;
+      border-radius: 2px;
+      float: left;
+      cursor: pointer;
+      margin-right: 8px;
+      padding-left: 0px;
+      padding-right: 0px;
+      text-align: center;
+      color: #fff;
+      font-weight: 700;
+
+      i {
+        font-size: 14px;
+      }
+    }
+  }
+
+  .setting-drawer-index-handle {
+    position: absolute;
+    top: 240px;
+    background: #1890ff;
+    width: 48px;
+    height: 48px;
+    right: 300px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    cursor: pointer;
+    pointer-events: auto;
+    z-index: 1001;
+    text-align: center;
+    font-size: 16px;
+    border-radius: 4px 0 0 4px;
+
+    i {
+      color: rgb(255, 255, 255);
+      font-size: 20px;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingItem.vue b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingItem.vue
new file mode 100644
index 0000000..2b3b553
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingItem.vue
@@ -0,0 +1,38 @@
+<template>
+  <div class="setting-drawer-index-item">
+    <h3 class="setting-drawer-index-title">{{ title }}</h3>
+    <slot></slot>
+    <a-divider v-if="divider"/>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'SettingItem',
+  props: {
+    title: {
+      type: String,
+      default: ''
+    },
+    divider: {
+      type: Boolean,
+      default: false
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+
+  .setting-drawer-index-item {
+    margin-bottom: 24px;
+
+    .setting-drawer-index-title {
+      font-size: 14px;
+      color: rgba(0, 0, 0, .85);
+      line-height: 22px;
+      margin-bottom: 12px;
+    }
+
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/index.js b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/index.js
new file mode 100644
index 0000000..8260f2d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/index.js
@@ -0,0 +1,2 @@
+import SettingDrawer from './SettingDrawer'
+export default SettingDrawer
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/settingConfig.js b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/settingConfig.js
new file mode 100644
index 0000000..c45911e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/settingConfig.js
@@ -0,0 +1,46 @@
+import { message } from 'ant-design-vue/es'
+import themeColor from './themeColor.js'
+
+const colorList = [
+  {
+    key: '钖勬毊', color: '#F5222D'
+  },
+  {
+    key: '鐏北', color: '#FA541C'
+  },
+  {
+    key: '鏃ユ毊', color: '#FAAD14'
+  },
+  {
+    key: '鏄庨潚', color: '#13C2C2'
+  },
+  {
+    key: '鏋佸厜缁�', color: '#52C41A'
+  },
+  {
+    key: '鎷傛檽钃濓紙榛樿锛�', color: '#1890FF'
+  },
+  {
+    key: '鏋佸钃�', color: '#2F54EB'
+  },
+  {
+    key: '閰辩传', color: '#722ED1'
+  }
+]
+
+const updateTheme = newPrimaryColor => {
+  const hideMessage = message.loading('姝e湪鍒囨崲涓婚锛�', 0)
+  themeColor.changeColor(newPrimaryColor).finally(t => {
+    setTimeout(() => {
+      hideMessage()
+    }, 10)
+  })
+}
+
+const updateColorWeak = colorWeak => {
+  // document.body.className = colorWeak ? 'colorWeak' : '';
+  const app = document.body.querySelector('#app')
+  colorWeak ? app.classList.add('colorWeak') : app.classList.remove('colorWeak')
+}
+
+export { updateTheme, colorList, updateColorWeak }
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/themeColor.js b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/themeColor.js
new file mode 100644
index 0000000..10dfbd4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/themeColor.js
@@ -0,0 +1,24 @@
+import client from 'webpack-theme-color-replacer/client'
+import generate from '@ant-design/colors/lib/generate'
+
+export default {
+  getAntdSerials (color) {
+    // 娣″寲锛堝嵆less鐨則int锛�
+    const lightens = new Array(9).fill().map((t, i) => {
+      return client.varyColor.lighten(color, i / 10)
+    })
+    // colorPalette鍙樻崲寰楀埌棰滆壊鍊�
+    const colorPalettes = generate(color)
+    const rgb = client.varyColor.toNum3(color.replace('#', '')).join(',')
+    return lightens.concat(colorPalettes).concat(rgb)
+  },
+  changeColor (newColor) {
+    var options = {
+      newColors: this.getAntdSerials(newColor), // new colors array, one-to-one corresponde with `matchColors`
+      changeUrl (cssUrl) {
+        return `/${cssUrl}` // while router is not `hash` mode, it needs absolute path
+      }
+    }
+    return client.changer.changeColor(options, Promise)
+  }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/StandardFormRow.vue b/iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/StandardFormRow.vue
new file mode 100644
index 0000000..a4e261b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/StandardFormRow.vue
@@ -0,0 +1,122 @@
+<template>
+  <div :class="[prefixCls, lastCls, blockCls, gridCls]">
+    <div v-if="title" class="antd-pro-components-standard-form-row-index-label">
+      <span>{{ title }}</span>
+    </div>
+    <div class="antd-pro-components-standard-form-row-index-content">
+      <slot></slot>
+    </div>
+  </div>
+</template>
+
+<script>
+const classes = [
+  'antd-pro-components-standard-form-row-index-standardFormRowBlock',
+  'antd-pro-components-standard-form-row-index-standardFormRowGrid',
+  'antd-pro-components-standard-form-row-index-standardFormRowLast'
+]
+export default {
+  name: 'StandardFormRow',
+  props: {
+    prefixCls: {
+      type: String,
+      default: 'antd-pro-components-standard-form-row-index-standardFormRow'
+    },
+    title: {
+      type: String,
+      default: undefined
+    },
+    last: {
+      type: Boolean
+    },
+    block: {
+      type: Boolean
+    },
+    grid: {
+      type: Boolean
+    }
+  },
+  computed: {
+    lastCls () {
+      return this.last ? classes[2] : null
+    },
+    blockCls () {
+      return this.block ? classes[0] : null
+    },
+    gridCls () {
+      return this.grid ? classes[1] : null
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+@import '../index.less';
+
+.antd-pro-components-standard-form-row-index-standardFormRow {
+  display: flex;
+  margin-bottom: 16px;
+  padding-bottom: 16px;
+  border-bottom: 1px dashed @border-color-split;
+
+  /deep/ .ant-form-item {
+    margin-right: 24px;
+  }
+  /deep/ .ant-form-item-label label {
+    margin-right: 0;
+    color: @text-color;
+  }
+  /deep/ .ant-form-item-label,
+  .ant-form-item-control {
+    padding: 0;
+    line-height: 32px;
+  }
+
+  .antd-pro-components-standard-form-row-index-label {
+    flex: 0 0 auto;
+    margin-right: 24px;
+    color: @heading-color;
+    font-size: @font-size-base;
+    text-align: right;
+    & > span {
+      display: inline-block;
+      height: 32px;
+      line-height: 32px;
+      &::after {
+        content: '锛�';
+      }
+    }
+  }
+
+  .antd-pro-components-standard-form-row-index-content {
+    flex: 1 1 0;
+    /deep/ .ant-form-item:last-child {
+      margin-right: 0;
+    }
+  }
+
+  &.antd-pro-components-standard-form-row-index-standardFormRowLast {
+    margin-bottom: 0;
+    padding-bottom: 0;
+    border: none;
+  }
+
+  &.antd-pro-components-standard-form-row-index-standardFormRowBlock {
+    /deep/ .ant-form-item,
+    div.ant-form-item-control-wrapper {
+      display: block;
+    }
+  }
+
+  &.antd-pro-components-standard-form-row-index-standardFormRowGrid {
+      /deep/ .ant-form-item,
+      div.ant-form-item-control-wrapper {
+        display: block;
+      }
+      /deep/ .ant-form-item-label {
+        float: left;
+      }
+  }
+}
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/index.js b/iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/index.js
new file mode 100644
index 0000000..8155cc7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/index.js
@@ -0,0 +1,3 @@
+import StandardFormRow from './StandardFormRow'
+
+export default StandardFormRow
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/StationSelect.vue b/iWare_RawMaterialWarehouse_Web/src/components/StationSelect.vue
new file mode 100644
index 0000000..026b39b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/StationSelect.vue
@@ -0,0 +1,186 @@
+<template>
+  <div class="station-select-component" :style="{with:width}">
+    <div class="select-block">
+      <a-select style="width: 100%" placeholder="浜х嚎" @change="onChangeLine"  v-model="value1" :allowClear="allowClear">
+        <a-select-option v-for="(item,index) in list1" :value="item.productionlineId" :key="'lines-sel-'+index">{{item.productionlineName}}</a-select-option>
+      </a-select>
+    </div>
+    <div class="divider"></div>
+    <div class="select-block">
+      <a-select style="width: 100%" placeholder="宸ヤ綅" v-model="value2" :allowClear="allowClear">
+        <a-select-option v-for="(item,index) in list2" :value="item.takeMaterialsSiteId" :key="'stations-sel-'+index">{{item.takeMaterialsSite}}</a-select-option>
+      </a-select>
+    </div>
+    <div class="mask" v-if="loading">
+      <a-icon type="loading" />&nbsp;&nbsp;&nbsp;Loading...
+    </div>
+  </div>
+</template>
+
+<script>
+import { getUserDefaultLine } from '@/utils/util'
+export default {
+  name:'stationSelectComponent',
+  emits:['input','change'],
+  props:{
+    width:{
+      type:String,
+      default:'100%'
+    },
+    value:{
+      type:Array,
+      default:function(){
+        return []
+      }
+    },
+    allowClear:{
+      type:Boolean,
+      default:false
+    },
+    getLines:{
+      default:function(){
+        return function(){
+          return new Promise(function(resolve){
+            resolve(null)
+          })
+        }
+      }
+    },
+    getStations:{
+      default:function(){
+        return function(){
+          return new Promise(function(resolve){
+            resolve(null)
+          })
+        }
+      }
+    }
+  },
+  data(){
+    return {
+      list1:[],
+      list2:[],
+      value1:undefined,
+      value2:undefined,
+      loading:false
+    }
+  },
+  mounted(){
+    this.init()
+  },
+  watch:{
+    value1(newVal,oldVal){
+      if (newVal!==oldVal) {
+        this.backValue()
+      }
+    },
+    value2(newVal,oldVal){
+      if (newVal!==oldVal) {
+        this.backValue()
+      }
+    }
+  },
+  methods:{
+    clear(){
+      this.value1 = undefined
+      this.value2 = undefined
+      this.list2 = []
+    },
+    init(){
+      this.initValue()
+      this.loading = true
+      this.getLines().then((d)=>{
+        this.list1 = d.data || []
+        this.setDefaultInitLine()
+        this.loading = false;
+      }).catch(()=>{
+        this.loading = false;
+      })
+    },
+    setDefaultInitLine(){
+      let val = getUserDefaultLine(this.$store,this.list1,'productionlineId')
+      if (!val && this.list1.length===1) {
+        val = this.list1[0].productionlineId
+      }
+      this.value1 = val
+      this.changeLine(val)
+    },
+    initValue(){
+      if (this.value[0]) this.value1 = this.value[0]
+      if (this.value[1]) this.value2 = this.value[1]
+    },
+    onChangeLine(val){
+      this.changeLine(val,false)
+    },
+    changeLine(val,init=true){
+      if (val) {
+        this.loading = true;
+        this.getStations(val).then((d)=>{
+          this.list2 = d.data || []
+          if (this.list2.length===1) {
+            let val = this.list2[0].takeMaterialsSiteId
+            this.value2 = val
+          }
+          this.loading = false;
+        }).catch(()=>{
+          this.list2 = []
+          this.value2 = undefined
+          this.loading = false;
+        })
+      } else {
+        if (!init) {
+          this.list2 = []
+          this.value2 = undefined
+        }
+      }
+    },
+    backValue(){
+      this.$emit('input',[this.value1,this.value2])
+      this.$emit('change',[this.value1,this.value2])
+    },
+    getFullValue(){
+      let res = [null,null]
+      for (let i=0;i<this.list1.length;i++) {
+        if (this.list1[i].productionlineId===this.value1) {
+          res[0] = {...this.list1[i]}
+          break;
+        }
+      }
+      for (let i=0;i<this.list2.length;i++) {
+        if (this.list2[i].takeMaterialsSiteId===this.value2) {
+          res[1] = {...this.list2[i]}
+          break;
+        }
+      }
+      return res
+    }
+  }
+}
+</script>
+
+<style scoped lang="less">
+.station-select-component{
+  display: flex;
+  position: relative;
+  .select-block{
+    width: 1px;
+    flex-grow: 1;
+  }
+  .divider{
+    flex-shrink: 0;
+    width: 4px;
+  }
+  .mask{
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    background-color: #F0F8FF;
+    overflow: hidden;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Table/README.md b/iWare_RawMaterialWarehouse_Web/src/components/Table/README.md
new file mode 100644
index 0000000..8e32dd0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Table/README.md
@@ -0,0 +1,338 @@
+Table 閲嶅皝瑁呯粍浠惰鏄�
+====
+
+
+灏佽璇存槑
+----
+
+>  鍩虹鐨勪娇鐢ㄦ柟寮忎笌 API 涓� [瀹樻柟鐗�(Table)](https://vuecomponent.github.io/ant-design-vue/components/table-cn/) 鏈竴鑷达紝鍦ㄥ叾鍩虹涓婏紝灏佽浜嗗姞杞芥暟鎹殑鏂规硶銆�
+>
+> 浣犳棤闇�鍦ㄤ綘鏄敤琛ㄦ牸鐨勯〉闈㈣繘琛屽垎椤甸�昏緫澶勭悊锛屼粎闇�鍚� Table 缁勪欢浼犻�掔粦瀹� `:data="Promise"` 瀵硅薄鍗冲彲
+
+璇� `table` 鐢� [@Saraka](https://github.com/saraka-tsukai) 瀹屾垚灏佽
+
+
+渚嬪瓙1
+----
+锛堝熀纭�浣跨敤锛�
+
+```vue
+
+<template>
+  <s-table
+    ref="table"
+    :rowKey="(record) => record.data.id"
+    :columns="columns"
+    :data="loadData"
+    :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+  >
+  </s-table>
+</template>
+
+<script>
+  import STable from '@/components'
+
+  export default {
+    components: {
+      STable
+    },
+    data() {
+      return {
+        columns: [
+          {
+            title: '瑙勫垯缂栧彿',
+            dataIndex: 'no'
+          },
+          {
+            title: '鎻忚堪',
+            dataIndex: 'description'
+          },
+          {
+            title: '鏈嶅姟璋冪敤娆℃暟',
+            dataIndex: 'callNo',
+            sorter: true,
+            needTotal: true,
+            customRender: (text) => text + ' 娆�'
+          },
+          {
+            title: '鐘舵��',
+            dataIndex: 'status',
+            needTotal: true
+          },
+          {
+            title: '鏇存柊鏃堕棿',
+            dataIndex: 'updatedAt',
+            sorter: true
+          }
+        ],
+        // 鏌ヨ鏉′欢鍙傛暟
+        queryParam: {},
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return this.$http.get('/service', {
+            params: Object.assign(parameter, this.queryParam)
+          }).then(res => {
+            return res.result
+          })
+        },
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    methods: {
+      onSelectChange (selectedRowKeys, selectedRows) {
+         this.selectedRowKeys = selectedRowKeys
+         this.selectedRows = selectedRows
+       }
+    }
+  }
+</script>
+
+```
+
+
+
+渚嬪瓙2
+----
+
+锛堢畝鍗曠殑琛ㄦ牸锛屾渶鍚庝竴鍒楁槸鍚勭鎿嶄綔锛�
+
+```vue
+<template>
+  <s-table
+    ref="table"
+    :columns="columns"
+    :data="loadData"
+  >
+    <span slot="action" slot-scope="text, record">
+      <a>缂栬緫</a>
+      <a-divider type="vertical"/>
+      <a-dropdown>
+        <a class="ant-dropdown-link">
+          鏇村 <a-icon type="down"/>
+        </a>
+        <a-menu slot="overlay">
+          <a-menu-item>
+            <a href="javascript:;">1st menu item</a>
+          </a-menu-item>
+          <a-menu-item>
+            <a href="javascript:;">2nd menu item</a>
+          </a-menu-item>
+          <a-menu-item>
+            <a href="javascript:;">3rd menu item</a>
+          </a-menu-item>
+        </a-menu>
+      </a-dropdown>
+    </span>
+  </s-table>
+</template>
+
+<script>
+  import STable from '@/components/table/'
+
+  export default {
+    components: {
+      STable
+    },
+    data() {
+      return {
+        columns: [
+          {
+            title: '瑙勫垯缂栧彿',
+            dataIndex: 'no'
+          },
+          {
+            title: '鎻忚堪',
+            dataIndex: 'description'
+          },
+          {
+            title: '鏈嶅姟璋冪敤娆℃暟',
+            dataIndex: 'callNo',
+          },
+          {
+            title: '鐘舵��',
+            dataIndex: 'status',
+          },
+          {
+            title: '鏇存柊鏃堕棿',
+            dataIndex: 'updatedAt',
+          },
+          {
+            table: '鎿嶄綔',
+            dataIndex: 'action',
+            scopedSlots: {customRender: 'action'},
+          }
+        ],
+        // 鏌ヨ鏉′欢鍙傛暟
+        queryParam: {},
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return this.$http.get('/service', {
+            params: Object.assign(parameter, this.queryParam)
+          }).then(res => {
+            return res.result
+          })
+        },
+      }
+    },
+    methods: {
+      edit(row) {
+        // axios 鍙戦�佹暟鎹埌鍚庣 淇敼鏁版嵁鎴愬姛鍚�
+        // 璋冪敤 refresh() 閲嶆柊鍔犺浇鍒楄〃鏁版嵁
+        // 杩欓噷 setTimeout 妯℃嫙鍙戣捣璇锋眰鐨勭綉缁滃欢杩�..
+        setTimeout(() => {
+          this.$refs.table.refresh() // refresh() 涓嶄紶鍙傞粯璁ゅ�� false 涓嶅埛鏂板埌鍒嗛〉绗竴椤�
+        }, 1500)
+
+      }
+    }
+  }
+</script>
+```
+
+
+
+鍐呯疆鏂规硶
+----
+
+閫氳繃 `this.$refs.table` 璋冪敤
+
+`this.$refs.table.refresh(true)` 鍒锋柊鍒楄〃 (鐢ㄦ埛鏂板/淇敼鏁版嵁鍚庯紝閲嶈浇鍒楄〃鏁版嵁)
+
+> 娉ㄦ剰锛氳璋冪敤 `refresh(bool)` 闇�瑕佺粰琛ㄦ牸缁勪欢璁惧畾 `ref` 鍊�
+>
+> `refresh()` 鏂规硶鍙互浼犱竴涓� `bool` 鍊硷紝褰撴湁浼犲�� 鎴栧�间负 `true` 鏃讹紝鍒欏埛鏂版椂浼氬己鍒跺埛鏂板埌绗竴椤碉紙甯哥敤鎴烽〉闈� 鎼滅储 鎸夐挳杩涜鎼滅储鏃讹紝缁撴灉浠庣涓�椤靛紑濮嬪垎椤碉級
+
+
+鍐呯疆灞炴��
+----
+> 闄ゅ幓 `a-table` 鑷甫灞炴�у锛岃繕鑰屽鎻愪緵浜嗕竴浜涢澶栧睘鎬у睘鎬�  
+
+
+| 灞炴��           | 璇存槑                                            | 绫诲瀷              | 榛樿鍊� |
+| -------------- | ----------------------------------------------- | ----------------- | ------ |
+| alert          | 璁剧疆鏄惁鏄剧ず琛ㄦ牸淇℃伅鏍�                          | [object, boolean] | null   |
+| showPagination | 鏄剧ず鍒嗛〉閫夋嫨鍣紝鍙紶 'auto' \| boolean          | [string, boolean] | 'auto' |
+| data           | 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� `Promise` 瀵硅薄 **蹇呴』缁戝畾** | Promise           | -      |
+
+
+`alert` 灞炴�у璞★細
+
+```javascript
+alert: {
+  show: Boolean, 
+  clear: [Function, Boolean]
+}
+```
+
+娉ㄦ剰浜嬮」
+----
+
+> 浣犲彲鑳介渶瑕佷负浜嗕笌鍚庣鎻愪緵鐨勬帴鍙h繑鍥炵粨鏋滀竴鑷磋�屽幓淇敼浠ヤ笅浠g爜锛�
+> (闇�瑕佹敞鎰忕殑鏄紝杩欓噷鐨勪慨鏀规槸鍏ㄥ眬鎬х殑锛屾剰鍛崇潃鏁翠釜椤圭洰鎵�鏈変娇鐢ㄨ table 缁勪欢閮介渶瑕侀伒瀹堣繖涓繑鍥炵粨鏋滃畾涔夌殑瀛楁銆�)
+>
+> 鏂囨。涓殑缁撴瀯鏈夊彲鑳界敱浜庣粍浠� bug 杩涜淇鑰屾敼鍔ㄣ�傚疄闄呬慨鏀硅浠ュ綋鏃舵渶鏂扮増鏈负鍑�
+
+淇敼 `@/components/table/index.js`  绗� 156 琛岃捣
+
+
+
+```javascript
+result.then(r => {
+          this.localPagination = this.showPagination && Object.assign({}, this.localPagination, {
+            current: r.pageNo, // 杩斿洖缁撴灉涓殑褰撳墠鍒嗛〉鏁�
+            total: r.totalCount, // 杩斿洖缁撴灉涓殑鎬昏褰曟暟
+            showSizeChanger: this.showSizeChanger,
+            pageSize: (pagination && pagination.pageSize) ||
+              this.localPagination.pageSize
+          }) || false
+          // 涓洪槻姝㈠垹闄ゆ暟鎹悗瀵艰嚧椤甸潰褰撳墠椤甸潰鏁版嵁闀垮害涓� 0 ,鑷姩缈婚〉鍒颁笂涓�椤�
+          if (r.data.length === 0 && this.showPagination && this.localPagination.current > 1) {
+            this.localPagination.current--
+            this.loadData()
+            return
+          }
+
+          // 杩欓噷鐢ㄤ簬鍒ゆ柇鎺ュ彛鏄惁鏈夎繑鍥� r.totalCount 涓� this.showPagination = true 涓� pageNo 鍜� pageSize 瀛樺湪 涓� totalCount 灏忎簬绛変簬 pageNo * pageSize 鐨勫ぇ灏�
+          // 褰撴儏鍐垫弧瓒虫椂锛岃〃绀烘暟鎹笉婊¤冻鍒嗛〉澶у皬锛屽叧闂� table 鍒嗛〉鍔熻兘
+          try {
+            if ((['auto', true].includes(this.showPagination) && r.totalCount <= (r.pageNo * this.localPagination.pageSize))) {
+              this.localPagination.hideOnSinglePage = true
+            }
+          } catch (e) {
+            this.localPagination = false
+          }
+          this.localDataSource = r.data // 杩斿洖缁撴灉涓殑鏁扮粍鏁版嵁
+          this.localLoading = false
+        })
+```
+杩斿洖 JSON 渚嬪瓙锛�
+```json
+{
+  "message": "",
+  "result": {
+    "data": [{
+        id: 1,
+        cover: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
+        title: 'Alipay',
+        description: '閭f槸涓�绉嶅唴鍦ㄧ殑涓滆タ锛� 浠栦滑鍒拌揪涓嶄簡锛屼篃鏃犳硶瑙﹀強鐨�',
+        status: 1,
+        updatedAt: '2018-07-26 00:00:00'
+      },
+      {
+        id: 2,
+        cover: 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png',
+        title: 'Angular',
+        description: '甯屾湜鏄竴涓ソ涓滆タ锛屼篃璁告槸鏈�濂界殑锛屽ソ涓滆タ鏄笉浼氭秷浜$殑',
+        status: 1,
+        updatedAt: '2018-07-26 00:00:00'
+      },
+      {
+        id: 3,
+        cover: 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png',
+        title: 'Ant Design',
+        description: '鍩庨晣涓湁閭d箞澶氱殑閰掗锛屽ス鍗村亸鍋忚蛋杩涗簡鎴戠殑閰掗',
+        status: 1,
+        updatedAt: '2018-07-26 00:00:00'
+      },
+      {
+        id: 4,
+        cover: 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png',
+        title: 'Admin.NET',
+        description: '閭f椂鍊欐垜鍙細鎯宠嚜宸辨兂瑕佷粈涔堬紝浠庝笉鎯宠嚜宸辨嫢鏈変粈涔�',
+        status: 1,
+        updatedAt: '2018-07-26 00:00:00'
+      },
+      {
+        id: 5,
+        cover: 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png',
+        title: 'Bootstrap',
+        description: '鍑涘啲灏嗚嚦',
+        status: 1,
+        updatedAt: '2018-07-26 00:00:00'
+      },
+      {
+        id: 6,
+        cover: 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png',
+        title: 'Vue',
+        description: '鐢熷懡灏卞儚涓�鐩掑阀鍏嬪姏锛岀粨鏋滃線寰�鍑轰汉鎰忔枡',
+        status: 1,
+        updatedAt: '2018-07-26 00:00:00'
+      }
+    ],
+    "pageSize": 10,
+    "pageNo": 0,
+    "totalPage": 6,
+    "totalCount": 57
+  },
+  "status": 200,
+  "timestamp": 1534955098193
+}
+```
+
+
+
+鏇存柊鏃堕棿
+----
+
+璇ユ枃妗f渶鍚庢洿鏂颁簬锛� 2019-06-23 PM 17:19
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Table/columnSetting.vue b/iWare_RawMaterialWarehouse_Web/src/components/Table/columnSetting.vue
new file mode 100644
index 0000000..7b68f9d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Table/columnSetting.vue
@@ -0,0 +1,104 @@
+<!--
+ * @Author: 闄堢鏂� 15821704398@163.com
+ * @Date: 2024-02-19 15:02:50
+ * @LastEditors: 闄堢鏂� 15821704398@163.com
+ * @LastEditTime: 2024-02-20 10:50:22
+ * @FilePath: \zhaoshang-Les-web\src\components\Table\columnSetting.vue
+ * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+-->
+<template>
+  <div slot="overlay" class="ant-dropdown-menu s-tool-column ant-dropdown-content">
+    <div class="s-tool-column-header s-tool-column-item">
+      <a-checkbox :indeterminate="indeterminate" :checked="checkAll" @change="onCheckAllChange">
+        鍒楀睍绀�
+      </a-checkbox>
+      <a @click="reset">閲嶇疆</a>
+    </div>
+    <a-divider />
+    <div class="ant-checkbox-group">
+      <div>
+        <draggable v-model="columnsSetting" animation="300" @end="emitColumnChange">
+          <div class="s-tool-column-item" v-for="item in columnsSetting" :key="item.title">
+            <div class="s-tool-column-handle" >
+              <a-icon type="more"/>
+              <a-icon type="more"/>
+            </div>
+            <a-checkbox v-model="item.checked" @change="onChange">{{ item.title }}</a-checkbox>
+          </div>
+        </draggable>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  import draggable from 'vuedraggable'
+
+  export default {
+    props: {
+      columns: {
+        type: Array,
+        default: () => ([])
+      }
+    },
+    components: {
+      draggable
+    },
+    data() {
+      return {
+        indeterminate: false,
+        checkAll: true,
+        columnsSetting: [],
+        originColumns: []
+      }
+    },
+    methods: {
+      reset() {
+        const path = this.$route.path
+        this.columnsSetting = JSON.parse(JSON.stringify(this.originColumns))
+        window.localStorage.removeItem(path)
+        this.indeterminate = false
+        this.checkAll = true
+        this.emitColumnChange()
+      },
+      onChange() {
+        const path = this.$route.path
+        window.localStorage.setItem(path,JSON.stringify(this.columnsSetting))
+        const checkedList = this.columnsSetting.filter(value => value.checked)
+        this.indeterminate = !!checkedList.length && checkedList.length < this.columnsSetting.length
+        this.checkAll = checkedList.length === this.columnsSetting.length
+        this.emitColumnChange() 
+      },
+      onCheckAllChange(e) {
+        const val = e.target.checked
+        Object.assign(this, {
+          indeterminate: false,
+          checkAll: val,
+          columnsSetting: this.columns.map(value => ({ ...value, checked: val }))
+        })
+        this.emitColumnChange()
+      },
+      emitColumnChange() {
+        this.$emit('columnChange', this.columnsSetting)
+      }
+    },
+    mounted() {
+      const path = this.$route.path
+      let str =   window.localStorage.getItem(path)
+      console.log(str,'str')
+      if(str) {
+        this.columnsSetting = JSON.parse(str)
+        this.originColumns = JSON.parse(JSON.stringify(this.columnsSetting))
+      }else {
+        this.columnsSetting = this.columns.map(value => ({ ...value, checked: true }))
+        this.originColumns = JSON.parse(JSON.stringify(this.columnsSetting))
+        window.localStorage.setItem(path,JSON.stringify(columnsSetting))
+      }
+      
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Table/index.js b/iWare_RawMaterialWarehouse_Web/src/components/Table/index.js
new file mode 100644
index 0000000..1d7bd25
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Table/index.js
@@ -0,0 +1,487 @@
+import T from 'ant-design-vue/es/table/Table'
+import get from 'lodash.get'
+import draggable from 'vuedraggable'
+import columnSetting from './columnSetting'
+import './index.less'
+
+export default {
+  components: {
+    draggable,
+    columnSetting
+  },
+  data() {
+    return {
+      needTotalList: [],
+
+      selectedRows: [],
+      selectedRowKeys: [],
+
+      localLoading: false,
+      localDataSource: [],
+      localPagination: Object.assign({}, this.pagination),
+      isFullscreen: false,
+      customSize: this.size,
+      columnsSetting: []
+    }
+  },
+  props: Object.assign({}, T.props, {
+    rowKey: {
+      type: [String, Function],
+      default: 'key'
+    },
+    data: {
+      type: Function,
+      required: true
+    },
+    pageNum: {
+      type: Number,
+      default: 1
+    },
+    pageSize: {
+      type: Number,
+      default: 10
+    },
+    pageSizeOptions: {
+      type: Array,
+      default: function() {
+        return ['10', '20', '30', '40']
+      }
+    },
+    showSizeChanger: {
+      type: Boolean,
+      default: true
+    },
+    size: {
+      type: String,
+      default: 'middle'
+    },
+    /**
+     * alert: {
+     *   show: true,
+     *   clear: Function
+     * }
+     */
+    alert: {
+      type: [Object, Boolean],
+      default: null
+    },
+    rowSelection: {
+      type: Object,
+      default: null
+    },
+    /** @Deprecated */
+    showAlertInfo: {
+      type: Boolean,
+      default: false
+    },
+    showPagination: {
+      type: String | Boolean,
+      default: 'auto'
+    },
+    /**
+     * enable page URI mode
+     *
+     * e.g:
+     * /users/1
+     * /users/2
+     * /users/3?queryParam=test
+     * ...
+     */
+    pageURI: {
+      type: Boolean,
+      default: false
+    },
+    extraTool: {
+      type: Array,
+      default: () => []
+    }
+  }),
+  watch: {
+    'localPagination.current'(val) {
+      this.$emit('changeTablePage', {
+        current: val,
+        pageSize: this.localPagination.pageSize
+      })
+      this.pageURI &&
+        this.$router.push({
+          ...this.$route,
+          name: this.$route.name,
+          params: Object.assign({}, this.$route.params, {
+            pageNo: val
+          })
+        })
+    },
+    pageNum(val) {
+      Object.assign(this.localPagination, {
+        current: val
+      })
+    },
+    pageSize(val) {
+      Object.assign(this.localPagination, {
+        pageSize: val
+      })
+    },
+    showSizeChanger(val) {
+      Object.assign(this.localPagination, {
+        showSizeChanger: val
+      })
+    }
+  },
+  created() {
+    const { pageNo } = this.$route.params
+    const localPageNum = (this.pageURI && pageNo && parseInt(pageNo)) || this.pageNum
+    this.localPagination =
+      (['auto', true].includes(this.showPagination) &&
+        Object.assign({}, this.localPagination, {
+          current: localPageNum,
+          pageSize: this.pageSize,
+          pageSizeOptions: this.pageSizeOptions,
+          showSizeChanger: this.showSizeChanger,
+          showTotal: (total, range) => {
+            return range[0] + '-' + range[1] + '鍏�' + total + '鏉�'
+          }
+        })) ||
+      false
+    this.needTotalList = this.initTotalList(this.columns)
+    this.loadData()
+    this.columnsSetting = this.columns
+  },
+  methods: {
+    /**
+     * 琛ㄦ牸閲嶆柊鍔犺浇鏂规硶
+     * 濡傛灉鍙傛暟涓� true, 鍒欏己鍒跺埛鏂板埌绗竴椤�
+     * @param Boolean bool
+     */
+    refresh(bool = false) {
+      bool &&
+        (this.localPagination = Object.assign(
+          {},
+          {
+            current: 1,
+            pageSize: this.pageSize
+          }
+        ))
+      this.loadData()
+    },
+    /**
+     * 鍔犺浇鏁版嵁鏂规硶
+     * @param {Object} pagination 鍒嗛〉閫夐」鍣�
+     * @param {Object} filters 杩囨护鏉′欢
+     * @param {Object} sorter 鎺掑簭鏉′欢
+     */
+    loadData(pagination, filters, sorter) {
+      this.localLoading = true
+      const parameter = Object.assign(
+        {
+          pageNo:
+            (pagination && pagination.current) || (this.showPagination && this.localPagination.current) || this.pageNum,
+          pageSize:
+            (pagination && pagination.pageSize) ||
+            (this.showPagination && this.localPagination.pageSize) ||
+            this.pageSize
+        },
+        (sorter &&
+          sorter.field && {
+            sortField: sorter.field
+          }) ||
+          {},
+        (sorter &&
+          sorter.order && {
+            sortOrder: sorter.order
+          }) ||
+          {},
+        {
+          ...filters
+        }
+      )
+      const result = this.data(parameter)
+      // 瀵规帴鑷繁鐨勯�氱敤鏁版嵁鎺ュ彛闇�瑕佷慨鏀逛笅鏂逛唬鐮佷腑鐨� r.pageNo, r.totalCount, r.data
+      // eslint-disable-next-line
+      if ((typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function') {
+        result.then(r => {
+          if (r == null) {
+            this.localLoading = false
+            return
+          }
+          this.localPagination =
+            (this.showPagination &&
+              Object.assign({}, this.localPagination, {
+                current: r.pageNo, // pageNo, // 杩斿洖缁撴灉涓殑褰撳墠鍒嗛〉鏁�
+                total: r.totalRows, // totalCount, // 杩斿洖缁撴灉涓殑鎬昏褰曟暟
+                showSizeChanger: this.showSizeChanger,
+                pageSize: (pagination && pagination.pageSize) || this.localPagination.pageSize
+              })) ||
+            false
+          // 鍚庣鏁版嵁rows涓簄ull淇濆瓨淇
+          if (r.rows == null) {
+            r.rows = []
+          }
+          // 涓洪槻姝㈠垹闄ゆ暟鎹悗瀵艰嚧椤甸潰褰撳墠椤甸潰鏁版嵁闀垮害涓� 0 ,鑷姩缈婚〉鍒颁笂涓�椤�
+          if (r.rows.length === 0 && this.showPagination && this.localPagination.current > 1) {
+            this.localPagination.current--
+            this.loadData()
+            return
+          }
+
+          // 杩欓噷鐢ㄤ簬鍒ゆ柇鎺ュ彛鏄惁鏈夎繑鍥� r.totalCount 涓� this.showPagination = true 涓� pageNo 鍜� pageSize 瀛樺湪 涓� totalCount 灏忎簬绛変簬 pageNo * pageSize 鐨勫ぇ灏�
+          // 褰撴儏鍐垫弧瓒虫椂锛岃〃绀烘暟鎹笉婊¤冻鍒嗛〉澶у皬锛屽叧闂� table 鍒嗛〉鍔熻兘
+          try {
+            if (
+              ['auto', true].includes(this.showPagination) &&
+              r.totalCount <= r.totalPage * this.localPagination.pageSize
+            ) {
+              this.localPagination.hideOnSinglePage = true
+            }
+          } catch (e) {
+            this.localPagination = false
+          }
+          this.localDataSource = r.rows // 杩斿洖缁撴灉涓殑鏁扮粍鏁版嵁
+          this.localLoading = false
+        })
+      }
+    },
+    initTotalList(columns) {
+      const totalList = []
+      columns &&
+        columns instanceof Array &&
+        columns.forEach(column => {
+          if (column.needTotal) {
+            totalList.push({
+              ...column,
+              total: 0
+            })
+          }
+        })
+      return totalList
+    },
+    /**
+     * 鐢ㄤ簬鏇存柊宸查�変腑鐨勫垪琛ㄦ暟鎹� total 缁熻
+     * @param selectedRowKeys
+     * @param selectedRows
+     */
+    updateSelect(selectedRowKeys, selectedRows) {
+      this.selectedRows = selectedRows
+      this.selectedRowKeys = selectedRowKeys
+      const list = this.needTotalList
+      this.needTotalList = list.map(item => {
+        return {
+          ...item,
+          total: selectedRows.reduce((sum, val) => {
+            const total = sum + parseInt(get(val, item.dataIndex))
+            return isNaN(total) ? 0 : total
+          }, 0)
+        }
+      })
+    },
+    /**
+     * 娓呯┖ table 宸查�変腑椤�
+     */
+    clearSelected() {
+      if (this.rowSelection) {
+        this.rowSelection.onChange([], [])
+        this.updateSelect([], [])
+      }
+    },
+    /**
+     * 澶勭悊浜ょ粰 table 浣跨敤鑰呭幓澶勭悊 clear 浜嬩欢鏃讹紝鍐呴儴閫変腑缁熻鍚屾椂璋冪敤
+     * @param callback
+     * @returns {*}
+     */
+    renderClear(callback) {
+      if (this.selectedRowKeys.length <= 0) return null
+      return (
+        <a
+          style="margin-left: 24px"
+          onClick={() => {
+            callback()
+            this.clearSelected()
+          }}
+        >
+          娓呯┖
+        </a>
+      )
+    },
+    renderAlert() {
+      // 缁樺埗缁熻鍒楁暟鎹�
+      // eslint-disable-next-line no-unused-vars
+      const needTotalItems = this.needTotalList.map(item => {
+        return (
+          <span style="margin-right: 12px">
+            {item.title}鎬昏{' '}
+            <a style="font-weight: 600">{!item.customRender ? item.total : item.customRender(item.total)}</a>
+          </span>
+        )
+      })
+
+      // 缁樺埗 娓呯┖ 鎸夐挳
+      // eslint-disable-next-line no-unused-vars
+      const clearItem =
+        typeof this.alert.clear === 'boolean' && this.alert.clear
+          ? this.renderClear(this.clearSelected)
+          : this.alert !== null && typeof this.alert.clear === 'function'
+          ? this.renderClear(this.alert.clear)
+          : null
+
+      // 缁樺埗 alert 缁勪欢
+      // 缁熶竴鍏堝幓闄lert缁勪欢
+      return ''
+      /* return (
+        <a-alert showIcon={true} style="margin-bottom: 16px">
+          <template slot="message">
+            <span style="margin-right: 12px">宸查�夋嫨: <a style="font-weight: 600">{this.selectedRows.length}</a></span>
+            {needTotalItems}
+            {clearItem}
+          </template>
+        </a-alert>
+      ) */
+    },
+    columnChange(val) {
+      this.columnsSetting = val
+    },
+    renderHeader() {
+      let tools = [
+        {
+          icon: 'reload',
+          title: '鍒锋柊',
+          onClick: () => {
+            this.refresh()
+          }
+        },
+        {
+          icon: 'column-height',
+          title: '瀵嗗害',
+          isDropdown: true,
+          menu: () => {
+            const onClick = ({ key }) => {
+              this.customSize = key
+            }
+            return (
+              <a-menu slot="overlay" onClick={onClick} selectable defaultSelectedKeys={[this.customSize]}>
+                <a-menu-item key="default">榛樿</a-menu-item>
+                <a-menu-item key="middle">涓瓑</a-menu-item>
+                <a-menu-item key="small">绱у噾</a-menu-item>
+              </a-menu>
+            )
+          },
+          onClick: () => {}
+        },
+        {
+          icon: 'setting',
+          title: '鍒楄缃�',
+          isDropdown: true,
+          menu: () => {
+            return <columnSetting slot="overlay" columns={this.columns} onColumnChange={this.columnChange} />
+          },
+          onClick: () => {}
+        }
+      ]
+      if (this.extraTool.length) {
+        tools = tools.concat(this.extraTool)
+      }
+
+      return (
+        <div class="s-table-tool">
+          <div class="s-table-tool-left">{this.$scopedSlots.operator && this.$scopedSlots.operator()}</div>
+          <div class="s-table-tool-right">
+            {tools.map(tool => {
+              if (tool.isDropdown) {
+                return (
+                  <a-dropdown trigger={['click']}>
+                    <a-tooltip title={tool.title} class="s-tool-item" onClick={tool.onClick}>
+                      <a-icon type={tool.icon} />
+                    </a-tooltip>
+                    {tool.menu()}
+                  </a-dropdown>
+                )
+              }
+              return (
+                <a-tooltip title={tool.title} class="s-tool-item" onClick={tool.onClick}>
+                  <a-icon type={tool.icon} />
+                </a-tooltip>
+              )
+            })}
+          </div>
+        </div>
+      )
+      /* return (
+        <a-alert showIcon={true} style="margin-bottom: 16px">
+          <template slot="message">
+            <span style="margin-right: 12px">宸查�夋嫨: <a style="font-weight: 600">{this.selectedRows.length}</a></span>
+            {needTotalItems}
+            {clearItem}
+          </template>
+        </a-alert>
+      ) */
+    }
+  },
+
+  render() {
+    let props = {}
+    const localKeys = Object.keys(this.$data)
+    const showAlert =
+      (typeof this.alert === 'object' &&
+        this.alert !== null &&
+        this.alert.show &&
+        typeof this.rowSelection.selectedRowKeys !== 'undefined') ||
+      this.alert
+
+    Object.keys(T.props).forEach(k => {
+      const localKey = `local${k.substring(0, 1).toUpperCase()}${k.substring(1)}`
+      if (localKeys.includes(localKey)) {
+        props[k] = this[localKey]
+        return props[k]
+      }
+      if (k === 'rowSelection') {
+        if (showAlert && this.rowSelection) {
+          // 濡傛灉闇�瑕佷娇鐢╝lert锛屽垯閲嶆柊缁戝畾 rowSelection 浜嬩欢
+          props[k] = {
+            ...this.rowSelection,
+            selectedRows: this.selectedRows,
+            selectedRowKeys: this.selectedRowKeys,
+            onChange: (selectedRowKeys, selectedRows) => {
+              this.updateSelect(selectedRowKeys, selectedRows)
+              typeof this[k].onChange !== 'undefined' && this[k].onChange(selectedRowKeys, selectedRows)
+            }
+          }
+          return props[k]
+        } else if (!this.rowSelection) {
+          // 濡傛灉娌℃墦绠楀紑鍚� rowSelection 鍒欐竻绌洪粯璁ょ殑閫夋嫨椤�
+          props[k] = null
+          return props[k]
+        }
+      }
+      this[k] && (props[k] = this[k])
+      // 姝ゅ閰嶇疆琛ㄦ牸澶у皬涓庤鏄剧ず鐨勫垪
+      props = {
+        ...props,
+        size: this.customSize,
+        columns: this.columnsSetting.filter(value => value.checked === undefined || value.checked)
+      }
+      return props[k]
+    })
+    /* if (props.pagination){
+      props.pagination.pageSizeOptions = [...this.pageSizeOptions]
+    } */
+    const table = (
+      <a-table
+        {...{ props, scopedSlots: { ...this.$scopedSlots } }}
+        onChange={this.loadData}
+        onExpand={(expanded, record) => {
+          this.$emit('expand', expanded, record)
+        }}
+      >
+        {Object.keys(this.$slots).map(name => (
+          <template slot={name}>{this.$slots[name]}</template>
+        ))}
+      </a-table>
+    )
+
+    return (
+      <div class="table-wrapper">
+        {this.renderHeader()}
+        {showAlert ? this.renderAlert() : null}
+        {table}
+      </div>
+    )
+  }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Table/index.less b/iWare_RawMaterialWarehouse_Web/src/components/Table/index.less
new file mode 100644
index 0000000..3ef6793
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Table/index.less
@@ -0,0 +1,54 @@
+.table-wrapper{
+  background: #fff;
+}
+.s-table-tool{
+  display: flex;
+  margin-bottom: 16px;
+  .s-table-tool-left{
+    flex: 1;
+  }
+  .s-table-tool-right{
+    display: inline-flex;
+    align-items: center;
+    .s-tool-item{
+      font-size: 16px;
+      margin-left: 16px;
+      cursor: pointer;
+
+    }
+  }
+}
+
+.s-tool-column-item{
+  display: flex;
+  align-items: center;
+  padding: 4px 16px 4px 4px;
+  .ant-checkbox-wrapper{
+    flex: 1;
+  }
+  .s-tool-column-handle{
+    opacity: .8;
+    cursor: move;
+    .anticon-more{
+      font-size: 12px;
+      margin-top: 2px;
+      & + .anticon-more{
+        margin: 2px 4px 0 -8px;
+      }
+    }
+  }
+}
+.s-tool-column-header{
+  padding: 5px 16px 10px 24px;
+  min-width: 180px;
+}
+.s-tool-column{
+  .ant-divider{
+    margin: 0;
+  }
+  .ant-checkbox-group{
+    padding: 4px 0;
+    display: block;
+  }
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/TagSelect/TagSelectOption.jsx b/iWare_RawMaterialWarehouse_Web/src/components/TagSelect/TagSelectOption.jsx
new file mode 100644
index 0000000..b5ae799
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/TagSelect/TagSelectOption.jsx
@@ -0,0 +1,45 @@
+import { Tag } from 'ant-design-vue'
+const { CheckableTag } = Tag
+
+export default {
+  name: 'TagSelectOption',
+  props: {
+    prefixCls: {
+      type: String,
+      default: 'ant-pro-tag-select-option'
+    },
+    value: {
+      type: [String, Number, Object],
+      default: ''
+    },
+    checked: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data () {
+    return {
+      localChecked: this.checked || false
+    }
+  },
+  watch: {
+    'checked' (val) {
+      this.localChecked = val
+    },
+    '$parent.items': {
+      handler: function (val) {
+        this.value && val.hasOwnProperty(this.value) && (this.localChecked = val[this.value])
+      },
+      deep: true
+    }
+  },
+  render () {
+    const { $slots, value } = this
+    const onChange = (checked) => {
+      this.$emit('change', { value, checked })
+    }
+    return (<CheckableTag key={value} vModel={this.localChecked} onChange={onChange}>
+      {$slots.default}
+    </CheckableTag>)
+  }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/TagSelect/index.jsx b/iWare_RawMaterialWarehouse_Web/src/components/TagSelect/index.jsx
new file mode 100644
index 0000000..af98ad7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/TagSelect/index.jsx
@@ -0,0 +1,113 @@
+import PropTypes from 'ant-design-vue/es/_util/vue-types'
+import Option from './TagSelectOption.jsx'
+import { filterEmpty } from '@/components/_util/util'
+
+export default {
+  Option,
+  name: 'TagSelect',
+  model: {
+    prop: 'checked',
+    event: 'change'
+  },
+  props: {
+    prefixCls: {
+      type: String,
+      default: 'ant-pro-tag-select'
+    },
+    defaultValue: {
+      type: PropTypes.array,
+      default: null
+    },
+    value: {
+      type: PropTypes.array,
+      default: null
+    },
+    expandable: {
+      type: Boolean,
+      default: false
+    },
+    hideCheckAll: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data () {
+    return {
+      expand: false,
+      localCheckAll: false,
+      items: this.getItemsKey(filterEmpty(this.$slots.default)),
+      val: this.value || this.defaultValue || []
+    }
+  },
+  methods: {
+    onChange (checked) {
+      const key = Object.keys(this.items).filter(key => key === checked.value)
+      this.items[key] = checked.checked
+      const bool = Object.values(this.items).lastIndexOf(false)
+      if (bool === -1) {
+        this.localCheckAll = true
+      } else {
+        this.localCheckAll = false
+      }
+    },
+    onCheckAll (checked) {
+      Object.keys(this.items).forEach(v => {
+        this.items[v] = checked.checked
+      })
+      this.localCheckAll = checked.checked
+    },
+    getItemsKey (items) {
+      const totalItem = {}
+      items.forEach(item => {
+        totalItem[item.componentOptions.propsData && item.componentOptions.propsData.value] = false
+      })
+      return totalItem
+    },
+    // CheckAll Button
+    renderCheckAll () {
+      const props = {
+        on: {
+          change: (checked) => {
+            this.onCheckAll(checked)
+            checked.value = 'total'
+            this.$emit('change', checked)
+          }
+        }
+      }
+      const checkAllElement = <Option key={'total'} checked={this.localCheckAll} {...props}>All</Option>
+      return !this.hideCheckAll && checkAllElement || null
+    },
+    // expandable
+    renderExpandable () {
+
+    },
+    // render option
+    renderTags (items) {
+      const listeners = {
+        change: (checked) => {
+          this.onChange(checked)
+          this.$emit('change', checked)
+        }
+      }
+
+      return items.map(vnode => {
+        const options = vnode.componentOptions
+        options.listeners = listeners
+        return vnode
+      })
+    }
+  },
+  render () {
+    const { $props: { prefixCls } } = this
+    const classString = {
+      [`${prefixCls}`]: true
+    }
+    const tagItems = filterEmpty(this.$slots.default)
+    return (
+      <div class={classString}>
+        {this.renderCheckAll()}
+        {this.renderTags(tagItems)}
+      </div>
+    )
+  }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/TextArea/index.jsx b/iWare_RawMaterialWarehouse_Web/src/components/TextArea/index.jsx
new file mode 100644
index 0000000..00aeb2f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/TextArea/index.jsx
@@ -0,0 +1,69 @@
+import './style.less'
+import { getStrFullLength, cutStrByFullLength } from '../_util/util'
+import Input from 'ant-design-vue/es/input'
+const TextArea = Input.TextArea
+
+export default {
+  name: 'LimitTextArea',
+  model: {
+    prop: 'value',
+    event: 'change'
+  },
+  props: Object.assign({}, TextArea.props, {
+    prefixCls: {
+      type: String,
+      default: 'ant-textarea-limit'
+    },
+    // eslint-disable-next-line
+    value: {
+      type: String
+    },
+    limit: {
+      type: Number,
+      default: 200
+    }
+  }),
+  data () {
+    return {
+      currentLimit: 0
+    }
+  },
+  watch: {
+    value (val) {
+      this.calcLimitNum(val)
+    }
+  },
+  created () {
+    this.calcLimitNum(this.value)
+  },
+  methods: {
+    handleChange (e) {
+      const value = e.target.value
+      const len = getStrFullLength(value)
+      if (len <= this.limit) {
+        this.currentLimit = len
+        this.$emit('change', value)
+        return
+      } else {
+        const str = cutStrByFullLength(value, this.limit)
+        this.currentLimit = getStrFullLength(str)
+        this.$emit('change', str)
+      }
+      console.error('limit out! currentLimit:', this.currentLimit)
+    },
+    calcLimitNum (val) {
+      const len = getStrFullLength(val)
+      this.currentLimit = len
+    }
+  },
+  render () {
+    const { prefixCls, ...props } = this.$props
+    return (
+      <div class={this.prefixCls}>
+        <TextArea {...{ props }} value={this.value} onChange={this.handleChange}>
+        </TextArea>
+        <span class="limit">{this.currentLimit}/{this.limit}</span>
+      </div>
+    )
+  }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/TextArea/style.less b/iWare_RawMaterialWarehouse_Web/src/components/TextArea/style.less
new file mode 100644
index 0000000..6dee494
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/TextArea/style.less
@@ -0,0 +1,12 @@
+.ant-textarea-limit {
+  position: relative;
+
+  .limit {
+    position: absolute;
+    color: #909399;
+    background: #fff;
+    font-size: 12px;
+    bottom: 5px;
+    right: 10px;
+  }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Tree/Tree.jsx b/iWare_RawMaterialWarehouse_Web/src/components/Tree/Tree.jsx
new file mode 100644
index 0000000..e5a2a11
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Tree/Tree.jsx
@@ -0,0 +1,124 @@
+import { Menu, Icon, Input } from 'ant-design-vue'
+
+const { Item, ItemGroup, SubMenu } = Menu
+const { Search } = Input
+
+export default {
+  name: 'Tree',
+  props: {
+    dataSource: {
+      type: Array,
+      required: true
+    },
+    openKeys: {
+      type: Array,
+      default: () => []
+    },
+    search: {
+      type: Boolean,
+      default: false
+    }
+  },
+  created () {
+    this.localOpenKeys = this.openKeys.slice(0)
+  },
+  data () {
+    return {
+      localOpenKeys: []
+    }
+  },
+  methods: {
+    handlePlus (item) {
+      this.$emit('add', item)
+    },
+    handleTitleClick (...args) {
+      this.$emit('titleClick', { args })
+    },
+
+    renderSearch () {
+      return (
+        <Search
+          placeholder="input search text"
+          style="width: 100%; margin-bottom: 1rem"
+        />
+      )
+    },
+    renderIcon (icon) {
+      return icon && (<Icon type={icon} />) || null
+    },
+    renderMenuItem (item) {
+      return (
+        <Item key={item.key}>
+          { this.renderIcon(item.icon) }
+          { item.title }
+          <a class="btn" style="width: 20px;z-index:1300" {...{ on: { click: () => this.handlePlus(item) } }}><a-icon type="plus"/></a>
+        </Item>
+      )
+    },
+    renderItem (item) {
+      return item.children ? this.renderSubItem(item, item.key) : this.renderMenuItem(item, item.key)
+    },
+    renderItemGroup (item) {
+      const childrenItems = item.children.map(o => {
+        return this.renderItem(o, o.key)
+      })
+
+      return (
+        <ItemGroup key={item.key}>
+          <template slot="title">
+            <span>{ item.title }</span>
+            <a-dropdown>
+              <a class="btn"><a-icon type="ellipsis" /></a>
+              <a-menu slot="overlay">
+                <a-menu-item key="1">鏂板</a-menu-item>
+                <a-menu-item key="2">鍚堝苟</a-menu-item>
+                <a-menu-item key="3">绉婚櫎</a-menu-item>
+              </a-menu>
+            </a-dropdown>
+          </template>
+          { childrenItems }
+        </ItemGroup>
+      )
+    },
+    renderSubItem (item, key) {
+      const childrenItems = item.children && item.children.map(o => {
+        return this.renderItem(o, o.key)
+      })
+
+      const title = (
+        <span slot="title">
+          { this.renderIcon(item.icon) }
+          <span>{ item.title }</span>
+        </span>
+      )
+
+      if (item.group) {
+        return this.renderItemGroup(item)
+      }
+      // titleClick={this.handleTitleClick(item)}
+      return (
+        <SubMenu key={key}>
+          { title }
+          { childrenItems }
+        </SubMenu>
+      )
+    }
+  },
+  render () {
+    const { dataSource, search } = this.$props
+
+    // this.localOpenKeys = openKeys.slice(0)
+    const list = dataSource.map(item => {
+      return this.renderItem(item)
+    })
+
+    return (
+      <div class="tree-wrapper">
+        { search ? this.renderSearch() : null }
+        <Menu mode="inline" class="custom-tree" {...{ on: { click: item => this.$emit('click', item), 'update:openKeys': val => { this.localOpenKeys = val } } }} openKeys={this.localOpenKeys}>
+          { list }
+        </Menu>
+      </div>
+    )
+  }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Trend/Trend.vue b/iWare_RawMaterialWarehouse_Web/src/components/Trend/Trend.vue
new file mode 100644
index 0000000..526e1cc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Trend/Trend.vue
@@ -0,0 +1,41 @@
+<template>
+  <div :class="[prefixCls, reverseColor && 'reverse-color' ]">
+    <span>
+      <slot name="term"></slot>
+      <span class="item-text">
+        <slot></slot>
+      </span>
+    </span>
+    <span :class="[flag]"><a-icon :type="`caret-${flag}`"/></span>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'Trend',
+  props: {
+    prefixCls: {
+      type: String,
+      default: 'ant-pro-trend'
+    },
+    /**
+       * 涓婂崌涓嬮檷鏍囪瘑锛歶p|down
+       */
+    flag: {
+      type: String,
+      required: true
+    },
+    /**
+       * 棰滆壊鍙嶈浆
+       */
+    reverseColor: {
+      type: Boolean,
+      default: false
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  @import "index";
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.js b/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.js
new file mode 100644
index 0000000..9f14228
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.js
@@ -0,0 +1,3 @@
+import Trend from './Trend.vue'
+
+export default Trend
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.less b/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.less
new file mode 100644
index 0000000..8a3d24c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.less
@@ -0,0 +1,42 @@
+@import "../index";
+
+@trend-prefix-cls: ~"@{ant-pro-prefix}-trend";
+
+.@{trend-prefix-cls} {
+  display: inline-block;
+  font-size: @font-size-base;
+  line-height: 22px;
+
+  .up,
+  .down {
+    margin-left: 4px;
+    position: relative;
+    top: 1px;
+
+    i {
+      font-size: 12px;
+      transform: scale(0.83);
+    }
+  }
+
+  .item-text {
+    display: inline-block;
+    margin-left: 8px;
+    color: rgba(0,0,0,.85);
+  }
+
+  .up {
+    color: @red-6;
+  }
+  .down {
+    color: @green-6;
+    top: -1px;
+  }
+
+  &.reverse-color .up {
+    color: @green-6;
+  }
+  &.reverse-color .down {
+    color: @red-6;
+  }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.md b/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.md
new file mode 100644
index 0000000..8881f0e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.md
@@ -0,0 +1,45 @@
+# Trend 瓒嬪娍鏍囪
+
+瓒嬪娍绗﹀彿锛屾爣璁颁笂鍗囧拰涓嬮檷瓒嬪娍銆傞�氬父鐢ㄧ豢鑹蹭唬琛ㄢ�滃ソ鈥濓紝绾㈣壊浠h〃鈥滀笉濂解�濓紝鑲$エ娑ㄨ穼鍦烘櫙闄ゅ銆�
+
+
+
+寮曠敤鏂瑰紡锛�
+
+```javascript
+import Trend from '@/components/Trend'
+
+export default {
+    components: {
+        Trend
+    }
+}
+```
+
+
+
+## 浠g爜婕旂ず  [demo](https://pro.loacg.com/test/home)
+
+```html
+<trend flag="up">5%</trend>
+```
+鎴�
+```html
+<trend flag="up">
+    <span slot="term">宸ヨ祫</span>
+    5%
+</trend>
+```
+鎴�
+```html
+<trend flag="up" term="宸ヨ祫">5%</trend>
+```
+
+
+## API
+
+| 鍙傛暟      | 璇存槑                                      | 绫诲瀷         | 榛樿鍊� |
+|----------|------------------------------------------|-------------|-------|
+| flag | 涓婂崌涓嬮檷鏍囪瘑锛歚up|down` | string | - |
+| reverseColor | 棰滆壊鍙嶈浆 | Boolean | false |
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/UpDownSort.vue b/iWare_RawMaterialWarehouse_Web/src/components/UpDownSort.vue
new file mode 100644
index 0000000..88622ac
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/UpDownSort.vue
@@ -0,0 +1,58 @@
+<template>
+  <div class="up-down-sort-component">
+    <div class="wrapper">
+      <div class="up-triangle" :style="{
+        borderBottom:`${size} solid ${sort===0?activeColor:defaultColor}`,
+        borderRight:`${size} solid transparent`,
+        borderLeft:`${size} solid transparent`
+      }"></div>
+      <div class="triangle-divider"></div>
+      <div class="down-triangle" :style="{
+        borderTop:`${size} solid ${sort===1?activeColor:defaultColor}`,
+        borderRight:`${size} solid transparent`,
+        borderLeft:`${size} solid transparent`
+      }"></div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name:'upDownSortComponent',
+  props:{
+    sort:{
+      type:Number,
+      default:2
+    },
+    size:{
+      type:String,
+      default:'4px'
+    }
+  },
+  data(){
+    return {
+      defaultColor:'#a9a9a9',
+      activeColor:'#333333'
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.up-down-sort-component{
+  display: inline;
+  &>.wrapper{
+    display: flex;
+    flex-direction: column;
+    .up-triangle,.down-triangle{
+      width: 0;
+      height: 0;
+      flex-shrink: 0;
+    }
+    .triangle-divider{
+      height: 2px;
+      flex-shrink: 0;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/UserMenu.vue b/iWare_RawMaterialWarehouse_Web/src/components/UserMenu.vue
new file mode 100644
index 0000000..a561939
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/UserMenu.vue
@@ -0,0 +1,239 @@
+<template>
+  <div class="user-wrapper">
+    <div class="content-box">
+      <span class="action" @click="toggleFullscreen">
+        <a-icon type="fullscreen-exit" v-if="isFullscreen" />
+        <a-icon type="fullscreen" v-else />
+      </span>
+      <notice-icon class="action" v-if="hasPerm('sysNotice:received')" />
+      <a-dropdown>
+        <span class="action ant-dropdown-link user-dropdown-menu">
+          <a-avatar class="avatar" size="small" :src="avatar" />
+          <span>{{ nickname }}</span>
+        </span>
+        <a-menu slot="overlay" class="user-dropdown-menu-wrapper">
+          <a-menu-item key="4" v-if="mode === 'sidemenu'">
+            <a @click="appToggled()">
+              <a-icon type="swap" />
+              <span>鍒囨崲搴旂敤</span>
+            </a>
+          </a-menu-item>
+          <a-menu-item key="1">
+            <router-link :to="{ name: 'settings' }">
+              <a-icon type="setting" />
+              <span>璐︽埛璁剧疆</span>
+            </router-link>
+          </a-menu-item>
+<!--          <a-menu-item key="2">-->
+<!--            <a @click="sendMessage()">-->
+<!--              <a-icon type="message" />-->
+<!--              <span>娑堟伅鍙戦�佹祴璇�</span>-->
+<!--            </a>-->
+<!--          </a-menu-item>-->
+          <a-menu-divider />
+          <a-menu-item key="3">
+            <a href="javascript:" @click="handleLogout">
+              <a-icon type="logout" />
+              <span>閫�鍑虹櫥褰�</span>
+            </a>
+          </a-menu-item>
+        </a-menu>
+      </a-dropdown>
+    </div>
+    <a-modal title="鍒囨崲搴旂敤" :visible="visible" :footer="null" :confirm-loading="confirmLoading" @cancel="handleCancel">
+      <a-form :form="form1">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="閫夋嫨搴旂敤">
+          <a-menu mode="inline" :default-selected-keys="this.defApp" style="border-bottom:0;lineHeight:55px;">
+            <a-menu-item v-for="item in userInfo.apps" :key="item.code" style="top:0;" @click="switchApp(item.code)">
+              {{ item.name }}
+            </a-menu-item>
+          </a-menu>
+        </a-form-item>
+      </a-form>
+    </a-modal>
+  </div>
+</template>
+
+<script>
+
+  import screenfull from 'screenfull'
+  import NoticeIcon from '@/components/NoticeIcon'
+  import {
+    mapActions,
+    mapGetters
+  } from 'vuex'
+  import {
+    ALL_APPS_MENU
+  } from '@/store/mutation-types'
+  import Vue from 'vue'
+  import {
+    message
+  } from 'ant-design-vue/es'
+  import { messagesendtoAll } from '@/utils/messagesend'
+
+  export default {
+    name: 'UserMenu',
+    components: {
+      NoticeIcon,
+      screenfull
+    },
+    props: {
+      mode: {
+        type: String,
+        default: 'sidemenu'
+      }
+    },
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 16
+          }
+        },
+        visible: false,
+        confirmLoading: false,
+        form1: this.$form.createForm(this),
+        defApp: [],
+        isFullscreen: false
+      }
+    },
+
+    computed: {
+      ...mapGetters(['token', 'nickname', 'avatar', 'userInfo'])
+    },
+
+
+    // 璁剧疆signalr浠ょ墝
+    async mounted() {
+      //await this.$socket.authenticate(this.token)
+    },
+
+
+
+    methods: {
+      ...mapActions(['Logout', 'MenuChange']),
+
+      handleLogout() {
+        this.$confirm({
+          title: '鎻愮ず',
+          content: '鐪熺殑瑕佹敞閿�鐧诲綍鍚� ?',
+          okText: '纭畾',
+          cancelText: '鍙栨秷',
+          onOk: () => {
+            return this.Logout({})
+              .then(() => {
+                location.href = window.__CONFIG.backurl
+              })
+              .catch(err => {
+                this.$message.error({
+                  title: '閿欒',
+                  description: err.message
+                })
+              })
+          },
+          onCancel() {}
+        })
+      },
+
+      /**
+       * 鎵撳紑鍒囨崲搴旂敤妗�
+       */
+      appToggled() {
+        this.visible = true
+        this.defApp.push(Vue.ls.get(ALL_APPS_MENU)[0].code)
+      },
+
+      switchApp(appCode) {
+        this.visible = false
+        this.defApp = []
+        const applicationData = this.userInfo.apps.filter(item => item.code === appCode)
+        const hideMessage = message.loading('姝e湪鍒囨崲搴旂敤锛�', 0)
+        this.MenuChange(applicationData[0])
+          .then(res => {
+            hideMessage()
+          })
+          .catch(err => {
+            message.error('搴旂敤鍒囨崲寮傚父' + err)
+          })
+      },
+      handleCancel() {
+        this.form1.resetFields()
+        this.visible = false
+      },
+      /* 鍏ㄥ睆鍒囨崲 */
+      toggleFullscreen() {
+        if (!screenfull.isEnabled) {
+          message.error('鎮ㄧ殑娴忚鍣ㄤ笉鏀寔鍏ㄥ睆妯″紡')
+          return
+        }
+        screenfull.toggle()
+        this.isFullscreen = !screenfull.isFullscreen;
+      }
+      // 鍙戦�佹秷鎭祴璇�
+      // sendMessage() {
+      //   messagesendtoAll(Object.assign({ title: '娴嬭瘯鏍囬', message: '杩欐槸娑堟伅鍐呭', messagetype: 1 }))
+      // },
+    },
+    // signalr鎺ユ敹鐨勪俊鎭�
+    // sockets: {
+    //   ReceiveMessage(data) {
+    //     switch (data.messagetype) {
+    //       case 0:
+    //         this.$notification.info({
+    //           message: data.title,
+    //           description: data.message,
+    //           placement: 'bottomRight',
+    //           duration: null
+    //         })
+    //       break
+    //       case 1:
+    //         this.$notification.success({
+    //           message: data.title,
+    //           description: data.message,
+    //           placement: 'bottomRight',
+    //           duration: null
+    //         })
+    //       break
+    //       case 2:
+    //         this.$notification.warning({
+    //           message: data.title,
+    //           description: data.message,
+    //           placement: 'bottomRight',
+    //           duration: null
+    //         })
+    //       break
+    //       case 3:
+    //         this.$notification.error({
+    //           message: data.title,
+    //           description: data.message,
+    //           placement: 'bottomRight',
+    //           duration: null
+    //         })
+    //       break
+    //     }
+    //   }
+    // }
+  }
+</script>
+
+<style lang="less" scoped>
+  .appRedio {
+    border: 1px solid #91d5ff;
+    padding: 10px 20px;
+    background: #e6f7ff;
+    border-radius: 2px;
+    margin-bottom: 10px;
+    color: #91d5ff;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/UserSelect/UserSelect.vue b/iWare_RawMaterialWarehouse_Web/src/components/UserSelect/UserSelect.vue
new file mode 100644
index 0000000..5606c60
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/UserSelect/UserSelect.vue
@@ -0,0 +1,76 @@
+<template>
+  <a-select
+    :mode="model"
+    showSearch
+    :value="selectValue"
+    :filter-option="false"
+    :placeholder="placeholder"
+    :not-found-content="fetching ? undefined : null"
+    @search="fetchUser"
+    @change="handleChange"
+  >
+    <a-spin v-if="fetching" slot="notFoundContent" size="small" />
+    <a-select-option v-for="d in data" :key="d.value">
+      {{ d.text }}
+    </a-select-option>
+  </a-select>
+</template>
+<script>
+import debounce from 'lodash/debounce'
+import { getUserPage } from '@/api/modular/system/userManage'
+
+export default {
+  name: 'UserSelect',
+  props: {
+    placeholder: {
+      type: String
+    },
+    value: {
+      type: String
+    },
+    multiple: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data() {
+    const multiple = this.multiple
+    this.fetchUser = debounce(this.fetchUser, 800)
+    return {
+      data: [],
+      fetching: false,
+      selectValue: multiple ? [] : undefined,
+      model: multiple ? 'multiple' : 'default'
+    }
+  },
+  methods: {
+    fetchUser(key) {
+      this.data = []
+      this.fetching = true
+
+      const params = {
+        pageNo: 1,
+        pageSize: 10,
+        searchValue: key
+      }
+      this.userFetching = true
+
+      getUserPage(params).then((res) => {
+        this.data = res.data.rows.map(user => ({
+          text: `${user.name} ${user.account}`,
+          value: user.id
+        }))
+      }).finally(() => {
+        this.fetching = false
+      })
+    },
+    handleChange(value) {
+      Object.assign(this, {
+        selectValue: value,
+        fetching: false
+      })
+      this.$emit('change', value)
+    }
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/UserSelect/index.js b/iWare_RawMaterialWarehouse_Web/src/components/UserSelect/index.js
new file mode 100644
index 0000000..813c055
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/UserSelect/index.js
@@ -0,0 +1,3 @@
+import UserSelect from './UserSelect'
+
+export default UserSelect
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/_util/util.js b/iWare_RawMaterialWarehouse_Web/src/components/_util/util.js
new file mode 100644
index 0000000..dd33231
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/_util/util.js
@@ -0,0 +1,46 @@
+/**
+ * components util
+ */
+
+/**
+ * 娓呯悊绌哄�硷紝瀵硅薄
+ * @param children
+ * @returns {*[]}
+ */
+export function filterEmpty (children = []) {
+  return children.filter(c => c.tag || (c.text && c.text.trim() !== ''))
+}
+
+/**
+ * 鑾峰彇瀛楃涓查暱搴︼紝鑻辨枃瀛楃 闀垮害1锛屼腑鏂囧瓧绗﹂暱搴�2
+ * @param {*} str
+ */
+export const getStrFullLength = (str = '') =>
+  str.split('').reduce((pre, cur) => {
+    const charCode = cur.charCodeAt(0)
+    if (charCode >= 0 && charCode <= 128) {
+      return pre + 1
+    }
+    return pre + 2
+  }, 0)
+
+/**
+ * 鎴彇瀛楃涓诧紝鏍规嵁 maxLength 鎴彇鍚庤繑鍥�
+ * @param {*} str
+ * @param {*} maxLength
+ */
+export const cutStrByFullLength = (str = '', maxLength) => {
+  let showLength = 0
+  return str.split('').reduce((pre, cur) => {
+    const charCode = cur.charCodeAt(0)
+    if (charCode >= 0 && charCode <= 128) {
+      showLength += 1
+    } else {
+      showLength += 2
+    }
+    if (showLength <= maxLength) {
+      return pre + cur
+    }
+    return pre
+  }, '')
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/global.less b/iWare_RawMaterialWarehouse_Web/src/components/global.less
new file mode 100644
index 0000000..a20929e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/global.less
@@ -0,0 +1,541 @@
+@import './index.less';
+
+body {
+
+
+}
+
+
+/*璋峰摜婊氬姩鏉℃牱寮�*/
+::-webkit-scrollbar {
+  width: 15px;
+  height: 15px;
+  position: absolute
+}
+
+::-webkit-scrollbar-thumb {
+  background-color: #d7d7d7
+}
+
+::-webkit-scrollbar-track {
+  background-color: white
+}
+
+#app {
+  height: 100%;
+
+  &.colorWeak {
+    filter: invert(80%);
+  }
+  &.userLayout {
+    overflow: auto;
+  }
+}
+
+.layout.ant-layout {
+  height: auto;
+  overflow-x: hidden;
+
+  &.mobile,
+  &.tablet {
+    .ant-layout-content {
+      .content {
+        margin: 24px 0 0;
+      }
+    }
+
+    /**
+     * ant-table-wrapper
+     * 瑕嗙洊鐨勮〃鏍兼墜鏈烘ā寮忔牱寮忥紝濡傛灉鎯充慨鏀瑰湪鎵嬫満涓婅〃鏍兼渶浣庡搴︼紝鍙互鍦ㄨ繖閲屾敼鍔�
+     */
+    .ant-table-wrapper {
+      .ant-table-content {
+        overflow-y: auto;
+      }
+      .ant-table-body {
+        min-width: 800px;
+      }
+    }
+    .topmenu {
+      /* 蹇呴』涓� topmenu  鎵嶈兘鍚敤娴佸紡甯冨眬 */
+      &.content-width-Fluid {
+        .header-index-wide {
+          margin-left: 0;
+        }
+      }
+    }
+  }
+
+  &.mobile {
+    .sidemenu {
+      .ant-header-fixedHeader {
+        &.ant-header-side-opened,
+        &.ant-header-side-closed {
+          width: 100%;
+        }
+      }
+    }
+  }
+
+  &.ant-layout-has-sider {
+    flex-direction: row;
+  }
+
+  .trigger {
+    font-size: 20px;
+    line-height: 55px;
+    padding: 0 24px;
+    cursor: pointer;
+    transition: color 0.3s;
+    &:hover {
+      background: rgba(0, 0, 0, 0.025);
+    }
+  }
+
+  .topmenu {
+    .ant-header-fixedHeader {
+      position: fixed;
+      top: 0;
+      right: 0;
+      z-index: 9;
+      width: 100%;
+      transition: width 0.2s;
+
+      &.ant-header-side-opened {
+        width: 100%;
+      }
+
+      &.ant-header-side-closed {
+        width: 100%;
+      }
+    }
+    /* 蹇呴』涓� topmenu  鎵嶈兘鍚敤娴佸紡甯冨眬 */
+    &.content-width-Fluid {
+      .header-index-wide {
+        max-width: unset;
+        .header-index-left {
+          flex: 1 1 1000px;
+          .logo{
+            margin-left: 25px;
+          }
+          .ant-menu.ant-menu-horizontal{
+            max-width: calc(100vw - 190px - 238px - 25px);
+            flex: 1 1 calc(100vw - 190px - 238px - 25px);
+          }
+        }
+        .header-index-right{
+          margin-right:25px;
+        }
+      }
+
+      .page-header-index-wide {
+        max-width: unset;
+      }
+    }
+  }
+
+  .sidemenu {
+    .ant-header-fixedHeader {
+      position: fixed;
+      top: 0;
+      right: 0;
+      z-index: 9;
+      width: 100%;
+      transition: width 0.2s;
+
+      &.ant-header-side-opened {
+        width: calc(100% - 230px);
+      }
+
+      &.ant-header-side-closed {
+        width: calc(100% - 80px);
+      }
+    }
+  }
+
+  .header {
+    height: 55px;
+    // padding: 0 12px 0 0;
+    background: #fff;
+    box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
+    position: relative;
+  }
+
+  .header,
+  .top-nav-header-index {
+    .user-wrapper {
+      float: right;
+      height: 100%;
+
+      .action {
+        line-height: 55px;
+        cursor: pointer;
+        padding: 0 12px;
+        display: inline-block;
+        transition: all 0.3s;
+        height: 100%;
+        color: rgba(0, 0, 0, 0.65);
+
+        &:hover {
+          background: rgba(0, 0, 0, 0.025);
+        }
+
+        .avatar {
+          margin: 15px 8px 15px 0;
+          color: #1890ff;
+          background: hsla(0, 0%, 100%, 0.85);
+          vertical-align: middle;
+        }
+
+        .icon {
+          font-size: 16px;
+          padding: 4px;
+        }
+      }
+    }
+
+    &.dark {
+      .user-wrapper {
+        .action {
+          color: rgba(255, 255, 255, 0.85);
+          a {
+            color: rgba(255, 255, 255, 0.85);
+          }
+
+          &:hover {
+            background: rgba(255, 255, 255, 0.16);
+          }
+        }
+      }
+    }
+  }
+
+  &.mobile,
+  &.tablet {
+    .top-nav-header-index {
+      .header-index-wide {
+        .header-index-left {
+          .trigger {
+            color: rgba(255, 255, 255, 0.85);
+            padding: 0 12px;
+          }
+
+          .logo.top-nav-header {
+            flex: 0 0 56px;
+            text-align: center;
+            line-height: 58px;
+            h1 {
+              display: none;
+            }
+          }
+        }
+      }
+
+      &.light {
+        .header-index-wide {
+          .header-index-left {
+            .trigger {
+              color: rgba(0, 0, 0, 0.65);
+            }
+          }
+        }
+      }
+    }
+  }
+
+  &.tablet {
+    // overflow: hidden; text-overflow:ellipsis; white-space: nowrap;
+    .top-nav-header-index {
+      .header-index-wide {
+        .header-index-left {
+          .logo > a {
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+          }
+        }
+        .ant-menu.ant-menu-horizontal {
+          flex: 1 1 auto;
+          white-space: normal;
+        }
+      }
+    }
+  }
+
+  .top-nav-header-index {
+    box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
+    position: relative;
+    transition: background 0.3s, width 0.2s;
+
+    .header-index-wide {
+      max-width: 1200px;
+      margin: auto;
+      padding-left: 0;
+      display: flex;
+      height: 55px;
+
+      .ant-menu.ant-menu-horizontal {
+        max-width: 835px;
+        flex: 0 1 835px;
+        border: none;
+        height: 55px;
+        line-height: 55px;
+      }
+
+      .header-index-left {
+        flex: 0 1 1000px;
+        display: flex;
+
+        .logo.top-nav-header {
+          flex: 0 0 165px;
+          width: 165px;
+          height: 55px;
+          position: relative;
+          line-height: 55px;
+          transition: all 0.3s;
+          overflow: hidden;
+
+          img,
+          svg {
+            display: inline-block;
+            vertical-align: middle;
+            height: 32px;
+            width: 32px;
+          }
+
+          h1 {
+            color: #fff;
+            display: inline-block;
+            vertical-align: top;
+            font-size: 16px;
+            margin: 0 0 0 12px;
+            font-weight: 400;
+          }
+        }
+      }
+
+      .header-index-right {
+        flex: 0 0 238px;
+        align-self: flex-end;
+        height: 55px;
+        overflow: hidden;
+
+        .content-box {
+          float: right;
+          .action {
+            max-width: 140px;
+            overflow: hidden;
+            text-overflow:ellipsis;
+            white-space:nowrap;
+          }
+        }
+      }
+    }
+
+    &.light {
+      background-color: #fff;
+
+      .header-index-wide {
+        .header-index-left {
+          .logo {
+            h1 {
+              color: #002140;
+            }
+          }
+        }
+      }
+    }
+  }
+
+  // 鍐呭鍖�
+  .layout-content {
+    margin: 24px 24px 0px;
+    //height: 100%;
+    //height: 64px;
+    padding: 0 12px 0 0;
+  }
+
+  // footer
+  .ant-layout-footer {
+    padding: 0;
+  }
+}
+
+.topmenu {
+  .page-header-index-wide {
+    max-width: 1200px;
+    margin: 0 auto;
+  }
+}
+
+// drawer-sider 鑷畾涔�
+.ant-drawer.drawer-sider {
+  .sider {
+    box-shadow: none;
+  }
+
+  &.dark {
+    .ant-drawer-content {
+      background-color: rgb(0, 21, 41);
+    }
+  }
+  &.light {
+    box-shadow: none;
+    .ant-drawer-content {
+      background-color: #fff;
+    }
+  }
+
+  .ant-drawer-body {
+    padding: 0;
+  }
+}
+
+// 鑿滃崟鏍峰紡
+.sider {
+  box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35);
+  position: relative;
+  z-index: @ant-global-sider-zindex;
+  min-height: 100vh;
+
+  .ant-layout-sider-children {
+    overflow-y: hidden;
+
+    &:hover {
+      overflow-y: auto;
+    }
+  }
+
+  &.ant-fixed-sidemenu {
+    position: fixed;
+    height: 100%;
+  }
+
+  // logo鍖哄煙鏍峰紡
+  .logo {
+    position: relative;
+    height: 55px;
+    padding-left: 24px;
+    overflow: hidden;
+    line-height: 55px;
+    background: #002140;
+    transition: all .3s;
+
+    img,
+    svg,
+    h1 {
+      display: inline-block;
+      vertical-align: middle;
+    }
+
+    img,
+    svg {
+      height: 32px;
+      width: 32px;
+    }
+
+    h1 {
+      color: #fff;
+      font-size: 20px;
+      margin: 0 0 0 12px;
+      font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
+      font-weight: 600;
+      vertical-align: middle;
+    }
+  }
+
+  &.light {
+    background-color: #fff;
+    box-shadow: 2px 0px 8px 0px rgba(29, 35, 41, 0.05);
+
+    .logo {
+      background: #fff;
+      box-shadow: 1px 1px 0px 0px #e8e8e8;
+
+      h1 {
+        color: unset;
+      }
+    }
+
+    .ant-menu-light {
+      border-right-color: transparent;
+    }
+  }
+}
+
+// 澶栫疆鐨勬牱寮忔帶鍒�
+.user-dropdown-menu {
+  span {
+    user-select: none;
+  }
+}
+.user-dropdown-menu-wrapper.ant-dropdown-menu {
+  padding: 4px 0;
+
+  .ant-dropdown-menu-item {
+    width: 160px;
+  }
+
+  .ant-dropdown-menu-item > .anticon:first-child,
+  .ant-dropdown-menu-item > a > .anticon:first-child,
+  .ant-dropdown-menu-submenu-title > .anticon:first-child .ant-dropdown-menu-submenu-title > a > .anticon:first-child {
+    min-width: 12px;
+    margin-right: 8px;
+  }
+}
+
+// 鏁版嵁鍒楄〃 鏍峰紡
+.table-alert {
+  margin-bottom: 16px;
+}
+
+.table-page-search-wrapper {
+  .ant-form-inline {
+    .ant-form-item {
+      display: flex;
+      margin-bottom: 24px;
+      margin-right: 0;
+
+      .ant-form-item-control-wrapper {
+        flex: 1 1;
+        display: inline-block;
+        vertical-align: middle;
+      }
+
+      > .ant-form-item-label {
+        line-height: 32px;
+        padding-right: 8px;
+        width: auto;
+      }
+      .ant-form-item-control {
+        height: 32px;
+        line-height: 32px;
+      }
+    }
+  }
+
+  .table-page-search-submitButtons {
+    display: block;
+    margin-bottom: 24px;
+    white-space: nowrap;
+  }
+}
+
+.content {
+  .table-operator {
+    margin-bottom: 18px;
+
+    button {
+      margin-right: 8px;
+    }
+  }
+}
+
+.boxOutWrap{
+  height: calc(100vh - 120px);
+  overflow: hidden;
+}
+.boxForm{
+  max-height: 350px;
+  overflow-y: auto;
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/index.js b/iWare_RawMaterialWarehouse_Web/src/components/index.js
new file mode 100644
index 0000000..afa75ac
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/index.js
@@ -0,0 +1,70 @@
+// chart
+import Bar from '@/components/Charts/Bar'
+import ChartCard from '@/components/Charts/ChartCard'
+import Liquid from '@/components/Charts/Liquid'
+import MiniArea from '@/components/Charts/MiniArea'
+import MiniSmoothArea from '@/components/Charts/MiniSmoothArea'
+import MiniBar from '@/components/Charts/MiniBar'
+import MiniProgress from '@/components/Charts/MiniProgress'
+import Radar from '@/components/Charts/Radar'
+import RankList from '@/components/Charts/RankList'
+import TransferBar from '@/components/Charts/TransferBar'
+import TagCloud from '@/components/Charts/TagCloud'
+
+// pro components
+import AvatarList from '@/components/AvatarList'
+import CountDown from '@/components/CountDown'
+import Ellipsis from '@/components/Ellipsis'
+import FooterToolbar from '@/components/FooterToolbar'
+import NumberInfo from '@/components/NumberInfo'
+import DescriptionList from '@/components/DescriptionList'
+import Tree from '@/components/Tree/Tree'
+import Trend from '@/components/Trend'
+import STable from '@/components/Table'
+import MultiTab from '@/components/MultiTab'
+import Result from '@/components/Result'
+import IconSelector from '@/components/IconSelector'
+import TagSelect from '@/components/TagSelect'
+import ExceptionPage from '@/components/Exception'
+import StandardFormRow from '@/components/StandardFormRow'
+import ArticleListContent from '@/components/ArticleListContent'
+import AntdEditor from '@/components/Editor/WangEditor'
+import Dialog from '@/components/Dialog'
+
+// xn components
+import XCard from '@/components/xnComponents/XCard'
+
+export {
+  AvatarList,
+  Bar,
+  ChartCard,
+  Liquid,
+  MiniArea,
+  MiniSmoothArea,
+  MiniBar,
+  MiniProgress,
+  Radar,
+  TagCloud,
+  RankList,
+  TransferBar,
+  Trend,
+  CountDown,
+  Ellipsis,
+  FooterToolbar,
+  NumberInfo,
+  DescriptionList,
+  // 鍏煎鍐欐硶锛岃鍕跨户缁娇鐢�
+  DescriptionList as DetailList,
+  Tree,
+  STable,
+  MultiTab,
+  Result,
+  ExceptionPage,
+  IconSelector,
+  TagSelect,
+  StandardFormRow,
+  ArticleListContent,
+  AntdEditor,
+  Dialog,
+  XCard
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/index.less b/iWare_RawMaterialWarehouse_Web/src/components/index.less
new file mode 100644
index 0000000..e831c41
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/index.less
@@ -0,0 +1,6 @@
+@import "~ant-design-vue/lib/style/index";
+
+// The prefix to use on all css classes from ant-pro.
+@ant-pro-prefix             : ant-pro;
+@ant-global-sider-zindex    : 106;
+@ant-global-header-zindex   : 105;
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/Breadcrumb.vue b/iWare_RawMaterialWarehouse_Web/src/components/tools/Breadcrumb.vue
new file mode 100644
index 0000000..e817861
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/Breadcrumb.vue
@@ -0,0 +1,51 @@
+<template>
+  <a-breadcrumb class="breadcrumb">
+    <a-breadcrumb-item v-for="(item, index) in breadList" :key="item.name">
+      <router-link
+        v-if="item.name != name && index != 1"
+        :to="{ path: item.path === '' ? '/' : item.path }"
+      >{{ item.meta.title }}</router-link>
+      <span v-else>{{ item.meta.title }}</span>
+    </a-breadcrumb-item>
+  </a-breadcrumb>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+      name: '',
+      breadList: []
+    }
+  },
+  created () {
+    this.getBreadcrumb()
+  },
+  methods: {
+    getBreadcrumb () {
+      let arr = []
+      // this.breadList.push({name: 'index', path: '/dashboard/', meta: {title: '棣栭〉'}})
+
+      this.name = this.$route.name
+      this.$route.matched.forEach(item => {
+        // item.name !== 'index' && this.breadList.push(item)
+        arr.push(item)
+        //this.breadList.push(item)
+      })
+      /* if (arr.length>=2) {
+        arr.splice(0,1)
+      } */
+      this.breadList = arr
+      console.log(this.breadList)
+    }
+  },
+  watch: {
+    $route () {
+      this.getBreadcrumb()
+    }
+  }
+}
+</script>
+
+<style scoped>
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/DetailList.vue b/iWare_RawMaterialWarehouse_Web/src/components/tools/DetailList.vue
new file mode 100644
index 0000000..6745a08
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/DetailList.vue
@@ -0,0 +1,5 @@
+<script>
+/* WARNING: 鍏煎鑰佸紩鍏ワ紝璇峰嬁缁х画浣跨敤 */
+import DescriptionList from '@/components/DescriptionList'
+export default DescriptionList
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/HeadInfo.vue b/iWare_RawMaterialWarehouse_Web/src/components/tools/HeadInfo.vue
new file mode 100644
index 0000000..7fbc692
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/HeadInfo.vue
@@ -0,0 +1,67 @@
+<template>
+  <div class="head-info" :class="center && 'center'">
+    <span>{{ title }}</span>
+    <p>{{ content }}</p>
+    <em v-if="bordered"/>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'HeadInfo',
+  props: {
+    title: {
+      type: String,
+      default: ''
+    },
+    content: {
+      type: String,
+      default: ''
+    },
+    bordered: {
+      type: Boolean,
+      default: false
+    },
+    center: {
+      type: Boolean,
+      default: true
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  .head-info {
+    position: relative;
+    text-align: left;
+    padding: 0 32px 0 0;
+    min-width: 125px;
+
+    &.center {
+      text-align: center;
+      padding: 0 32px;
+    }
+
+    span {
+      color: rgba(0, 0, 0, .45);
+      display: inline-block;
+      font-size: 14px;
+      line-height: 22px;
+      margin-bottom: 4px;
+    }
+    p {
+      color: rgba(0, 0, 0, .85);
+      font-size: 24px;
+      line-height: 32px;
+      margin: 0;
+    }
+    em {
+      background-color: #e8e8e8;
+      position: absolute;
+      height: 56px;
+      width: 1px;
+      top: 0;
+      right: 0;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/LangSelect.vue b/iWare_RawMaterialWarehouse_Web/src/components/tools/LangSelect.vue
new file mode 100644
index 0000000..283f356
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/LangSelect.vue
@@ -0,0 +1,46 @@
+<template>
+  <a-dropdown>
+    <span class="action global-lang">
+      <a-icon type="global" style="font-size: 16px"/>
+    </span>
+    <a-menu slot="overlay" style="width: 150px;" @click="SwitchLang">
+      <a-menu-item key="zh-CN">
+        <a rel="noopener noreferrer">
+          <span role="img" aria-label="绠�浣撲腑鏂�">馃嚚馃嚦</span> 绠�浣撲腑鏂�
+        </a>
+      </a-menu-item>
+      <a-menu-item key="zh-TW">
+        <a rel="noopener noreferrer">
+          <span role="img" aria-label="绻佷綋涓枃">馃嚟馃嚢</span> 绻佷綋涓枃
+        </a>
+      </a-menu-item>
+      <a-menu-item key="en-US">
+        <a rel="noopener noreferrer">
+          <span role="img" aria-label="English">馃嚞馃嚙</span> English
+        </a>
+      </a-menu-item>
+      <a-menu-item key="pt-BR">
+        <a rel="noopener noreferrer">
+          <span role="img" aria-label="Portugu锚s">馃嚙馃嚪</span> Portugu锚s
+        </a>
+      </a-menu-item>
+    </a-menu>
+  </a-dropdown>
+</template>
+
+<script>
+// import { mixin as langMixin } from '@/store/i18n-mixin'
+
+export default {
+  name: 'LangSelect',
+  // mixins: [langMixin],
+  data () {
+    return {}
+  },
+  methods: {
+    // SwitchLang (row) {
+    //   this.setLang(row.key)
+    // }
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/Logo.vue b/iWare_RawMaterialWarehouse_Web/src/components/tools/Logo.vue
new file mode 100644
index 0000000..65b54e4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/Logo.vue
@@ -0,0 +1,51 @@
+<template>
+  <div class="logo" style="display:flex;align-items: center;">
+    <router-link :to="{name:'Console'}">
+      <div style="display:flex;align-items:center;">
+        <img src="@/assets/logo.jpg" style="height:20px;width:auto;" />
+        <h1 v-if="showTitle">{{ this.titles }}</h1>
+      </div>
+    </router-link>
+  </div>
+</template>
+
+<script>
+import { mixin, mixinDevice } from '@/utils/mixin'
+
+export default {
+  name: 'Logo',
+  mixins: [mixin, mixinDevice],
+  data () {
+    return {
+      titles: ''
+    }
+  },
+  props: {
+    title: {
+      type: String,
+      default: '鎴戠殑寮�鍙戞ā鏉�',
+      required: false
+    },
+    showTitle: {
+      type: Boolean,
+      default: true,
+      required: false
+    }
+  },
+  created () {
+    if (this.layoutMode === 'topmenu') {
+      if (this.title.length > 8) {
+        this.titles = this.title.substring(0, 8) + '...'
+      } else {
+        this.titles = this.title
+      }
+    } else {
+      if (this.title.length > 10) {
+        this.titles = this.title.substring(0, 8) + '...'
+      } else {
+        this.titles = this.title
+      }
+    }
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/TwoStepCaptcha.vue b/iWare_RawMaterialWarehouse_Web/src/components/tools/TwoStepCaptcha.vue
new file mode 100644
index 0000000..4367ffe
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/TwoStepCaptcha.vue
@@ -0,0 +1,88 @@
+<template>
+  <!-- 涓ゆ楠岃瘉 -->
+  <a-modal
+    centered
+    v-model="visible"
+    @cancel="handleCancel"
+    :maskClosable="false"
+  >
+    <div slot="title" :style="{ textAlign: 'center' }">涓ゆ楠岃瘉</div>
+    <template slot="footer">
+      <div :style="{ textAlign: 'center' }">
+        <a-button key="back" @click="handleCancel">杩斿洖</a-button>
+        <a-button key="submit" type="primary" :loading="stepLoading" @click="handleStepOk">
+          缁х画
+        </a-button>
+      </div>
+    </template>
+
+    <a-spin :spinning="stepLoading">
+      <a-form layout="vertical" :auto-form-create="(form)=>{this.form = form}">
+        <div class="step-form-wrapper">
+          <p style="text-align: center" v-if="!stepLoading">璇峰湪鎵嬫満涓墦寮� Google Authenticator 鎴栦袱姝ラ獙璇� APP<br />杈撳叆 6 浣嶅姩鎬佺爜</p>
+          <p style="text-align: center" v-else>姝e湪楠岃瘉..<br/>璇风◢鍚�</p>
+          <a-form-item
+            :style="{ textAlign: 'center' }"
+            hasFeedback
+            fieldDecoratorId="stepCode"
+            :fieldDecoratorOptions="{rules: [{ required: true, message: '璇疯緭鍏� 6 浣嶅姩鎬佺爜!', pattern: /^\d{6}$/, len: 6 }]}"
+          >
+            <a-input :style="{ textAlign: 'center' }" @keyup.enter.native="handleStepOk" placeholder="000000" />
+          </a-form-item>
+          <p style="text-align: center">
+            <a @click="onForgeStepCode">閬楀け鎵嬫満?</a>
+          </p>
+        </div>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+export default {
+  props: {
+    visible: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data () {
+    return {
+      stepLoading: false,
+
+      form: null
+    }
+  },
+  methods: {
+    handleStepOk () {
+      const vm = this
+      this.stepLoading = true
+      this.form.validateFields((err, values) => {
+        if (!err) {
+          setTimeout(() => {
+            vm.stepLoading = false
+            vm.$emit('success', { values })
+          }, 2000)
+          return
+        }
+        this.stepLoading = false
+        this.$emit('error', { err })
+      })
+    },
+    handleCancel () {
+      this.visible = false
+      this.$emit('cancel')
+    },
+    onForgeStepCode () {
+
+    }
+  }
+}
+</script>
+<style lang="less" scoped>
+  .step-form-wrapper {
+    margin: 0 auto;
+    width: 80%;
+    max-width: 400px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/UserMenu.vue b/iWare_RawMaterialWarehouse_Web/src/components/tools/UserMenu.vue
new file mode 100644
index 0000000..579aada
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/UserMenu.vue
@@ -0,0 +1,255 @@
+<template>
+  <div class="user-wrapper">
+    <div class="content-box">
+      <!--<a href="" target="_blank">
+        <span class="action">
+          <a-icon type="question-circle-o"></a-icon>
+        </span>
+      </a>-->
+
+      <span class="action" @click="toggleFullscreen">
+        <a-icon type="fullscreen-exit" v-if="isFullscreen" />
+        <a-icon type="fullscreen" v-else />
+      </span>
+      <notice-icon class="action" v-if="hasPerm('sysNotice:received')" />
+
+      <a-dropdown>
+        <span class="action ant-dropdown-link user-dropdown-menu">
+          <a-avatar class="avatar" size="small" :src="avatar" />
+          <span>{{ nickname }}</span>
+        </span>
+        <a-menu slot="overlay" class="user-dropdown-menu-wrapper">
+          <a-menu-item key="4" v-if="mode === 'sidemenu'">
+            <a @click="appToggled()">
+              <a-icon type="swap" />
+              <span>鍒囨崲搴旂敤</span>
+            </a>
+          </a-menu-item>
+          <!--<a-menu-item key="0">
+            <router-link :to="{ name: 'center' }">
+              <a-icon type="user"/>
+              <span>涓汉涓績</span>
+            </router-link>
+          </a-menu-item> -->
+          <a-menu-item key="1">
+            <router-link :to="{ name: 'settings' }">
+              <a-icon type="setting" />
+              <span>璐︽埛璁剧疆</span>
+            </router-link>
+          </a-menu-item>
+          <a-menu-item key="2">
+            <a @click="sendMessage()">
+              <a-icon type="message" />
+              <span>娑堟伅鍙戦�佹祴璇�</span>
+            </a>
+          </a-menu-item>
+          <a-menu-divider />
+          <a-menu-item key="3">
+            <a href="javascript:;" @click="handleLogout">
+              <a-icon type="logout" />
+              <span>閫�鍑虹櫥褰�</span>
+            </a>
+          </a-menu-item>
+        </a-menu>
+      </a-dropdown>
+    </div>
+    <a-modal title="鍒囨崲搴旂敤" :visible="visible" :footer="null" :confirm-loading="confirmLoading" @cancel="handleCancel">
+      <a-form :form="form1">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="閫夋嫨搴旂敤">
+          <a-menu mode="inline" :default-selected-keys="this.defApp" style="border-bottom:0px;lineHeight:55px;">
+            <a-menu-item v-for="item in userInfo.apps" :key="item.code" style="top:0px;" @click="switchApp(item.code)">
+              {{ item.name }}
+            </a-menu-item>
+          </a-menu>
+        </a-form-item>
+      </a-form>
+    </a-modal>
+  </div>
+</template>
+
+<script>
+  import screenfull from 'screenfull'
+  import NoticeIcon from '@/components/NoticeIcon'
+  import {
+    mapActions,
+    mapGetters
+  } from 'vuex'
+  import {
+    ALL_APPS_MENU
+  } from '@/store/mutation-types'
+  import Vue from 'vue'
+  import {
+    message
+  } from 'ant-design-vue/es'
+  import { messagesendtoAll } from '@/utils/messagesend'
+  export default {
+    name: 'UserMenu',
+    components: {
+      NoticeIcon,
+      screenfull
+    },
+    props: {
+      mode: {
+        type: String,
+        // sidemenu, topmenu
+        default: 'sidemenu'
+      }
+    },
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 16
+          }
+        },
+        visible: false,
+        confirmLoading: false,
+        form1: this.$form.createForm(this),
+        defApp: [],
+        isFullscreen: false
+      }
+    },
+
+    computed: {
+      ...mapGetters(['token', 'nickname', 'avatar', 'userInfo'])
+    },
+    // 璁剧疆signalr浠ょ墝
+    async mounted() {
+      //await this.$socket.authenticate(this.token)
+    },
+    methods: {
+      ...mapActions(['Logout', 'MenuChange']),
+
+      handleLogout() {
+        this.$confirm({
+          title: '鎻愮ず',
+          content: '鐪熺殑瑕佹敞閿�鐧诲綍鍚� ?',
+          okText: '纭畾',
+          cancelText: '鍙栨秷',
+          onOk: () => {
+            return this.Logout({})
+              .then(() => {
+                setTimeout(() => {
+                  window.location.reload()
+                }, 16)
+              })
+              .catch(err => {
+                this.$message.error({
+                  title: '閿欒',
+                  description: err.message
+                })
+              })
+          },
+          onCancel() {}
+        })
+      },
+
+      /**
+       * 鎵撳紑鍒囨崲搴旂敤妗�
+       */
+      appToggled() {
+        this.visible = true
+        this.defApp.push(Vue.ls.get(ALL_APPS_MENU)[0].code)
+      },
+
+      switchApp(appCode) {
+        this.visible = false
+        this.defApp = []
+        const applicationData = this.userInfo.apps.filter(item => item.code === appCode)
+        const hideMessage = message.loading('姝e湪鍒囨崲搴旂敤锛�', 0)
+        this.MenuChange(applicationData[0])
+          .then(res => {
+            hideMessage()
+            // eslint-disable-next-line handle-callback-err
+          })
+          .catch(err => {
+            message.error('搴旂敤鍒囨崲寮傚父' + err)
+          })
+      },
+      handleCancel() {
+        this.form1.resetFields()
+        this.visible = false
+      },
+      /* 鍏ㄥ睆鍒囨崲 */
+      toggleFullscreen() {
+        if (!screenfull.isEnabled) {
+          message.error('鎮ㄧ殑娴忚鍣ㄤ笉鏀寔鍏ㄥ睆妯″紡')
+          return
+        }
+        screenfull.toggle()
+        if (screenfull.isFullscreen) {
+          this.isFullscreen = false
+        } else {
+          this.isFullscreen = true
+        }
+      },
+      // 鍙戦�佹秷鎭祴璇�
+      sendMessage() {
+        messagesendtoAll(Object.assign({ title: '娴嬭瘯鏍囬', message: '杩欐槸娑堟伅鍐呭', messagetype: 1 }))
+      },
+    },
+    // signalr鎺ユ敹鐨勪俊鎭�
+    sockets: {
+      ReceiveMessage(data) {
+        switch (data.messagetype) {
+          case 0:
+            this.$notification.info({
+              message: data.title,
+              description: data.message,
+              placement: 'bottomRight',
+              duration: null
+            })
+          break
+          case 1:
+            this.$notification.success({
+              message: data.title,
+              description: data.message,
+              placement: 'bottomRight',
+              duration: null
+            })
+          break
+          case 2:
+            this.$notification.warning({
+              message: data.title,
+              description: data.message,
+              placement: 'bottomRight',
+              duration: null
+            })
+          break
+          case 3:
+            this.$notification.error({
+              message: data.title,
+              description: data.message,
+              placement: 'bottomRight',
+              duration: null
+            })
+          break
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+  .appRedio {
+    border: 1px solid #91d5ff;
+    padding: 10px 20px;
+    background: #e6f7ff;
+    border-radius: 2px;
+    margin-bottom: 10px;
+    color: #91d5ff;
+    /*display: inline;
+    margin-bottom:10px;*/
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/index.js b/iWare_RawMaterialWarehouse_Web/src/components/tools/index.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/index.js
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify.vue b/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify.vue
new file mode 100644
index 0000000..e7b6d1a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify.vue
@@ -0,0 +1,473 @@
+<template>
+  <div :class="mode=='pop'?'mask':''" v-show="showBox">
+    <div :class="mode=='pop'?'verifybox':''" :style="{'max-width':parseInt(imgSize.width)+30+'px'}">
+      <div class="verifybox-top" v-if="mode=='pop'">
+        璇峰畬鎴愬畨鍏ㄩ獙璇�
+        <span @click="closeBox" class="verifybox-close">
+          <i class="iconfont icon-close"></i>
+        </span>
+      </div>
+      <div :style="{padding:mode=='pop'?'15px':'0'}" class="verifybox-bottom">
+        <!-- 楠岃瘉鐮佸鍣� -->
+        <components
+          :arith="arith"
+          :barSize="barSize"
+          :blockSize="blockSize"
+          :captchaType="captchaType"
+          :explain="explain"
+          :figure="figure"
+          :imgSize="imgSize"
+          :is="componentType"
+          :mode="mode"
+          :type="verifyType"
+          :vSpace="vSpace"
+          ref="instance"
+          v-if="componentType"></components>
+      </div>
+    </div>
+  </div>
+</template>
+<script type="text/babel">
+    /**
+     * Verify 楠岃瘉鐮佺粍浠�
+     * @description 鍒嗗彂楠岃瘉鐮佷娇鐢�
+     * */
+    import VerifySlide from './Verify/VerifySlide'
+    import VerifyPoints from './Verify/VerifyPoints'
+
+    export default {
+        name: 'Vue2Verify',
+        props: {
+            // 鍙岃鍖�
+            locale: {
+                require: false,
+                type: String,
+                default() {
+                    // 榛樿璇█涓嶈緭鍏ヤ负娴忚鍣ㄨ瑷�
+                    if (navigator.language) {
+                        var language = navigator.language
+                    } else {
+                        // eslint-disable-next-line no-redeclare
+                        var language = navigator.browserLanguage
+                    }
+                    return language
+                }
+            },
+            captchaType: {
+                type: String,
+                required: true
+            },
+            // eslint-disable-next-line vue/require-default-prop
+            figure: {
+                type: Number
+            },
+            // eslint-disable-next-line vue/require-default-prop
+            arith: {
+                type: Number
+            },
+            mode: {
+                type: String,
+                default: 'pop'
+            },
+            // eslint-disable-next-line vue/require-default-prop
+            vSpace: {
+                type: Number
+            },
+            // eslint-disable-next-line vue/require-default-prop
+            explain: {
+                type: String
+            },
+            imgSize: {
+                type: Object,
+                default() {
+                    return {
+                        width: '310px',
+                        height: '155px'
+                    }
+                }
+            },
+            // eslint-disable-next-line vue/require-default-prop
+            blockSize: {
+                type: Object
+            },
+            // eslint-disable-next-line vue/require-default-prop
+            barSize: {
+                type: Object
+            }
+        },
+        data() {
+            return {
+                // showBox:true,
+                clickShow: false,
+                // 鍐呴儴绫诲瀷
+                verifyType: undefined,
+                // 鎵�鐢ㄧ粍浠剁被鍨�
+                componentType: undefined
+            }
+        },
+        methods: {
+            /**
+             * i18n
+             * @description 鍏煎vue-i18n 璋冪敤$t鏉ヨ浆鎹k
+             * @param {String} text-琚浆鎹㈢殑鐩爣
+             * @return {String} i18n鐨勭粨鏋�
+             * */
+            i18n(text) {
+                if (this.$t) {
+                    return this.$t(text)
+                } else {
+                    // 鍏煎涓嶅瓨鍦ㄧ殑璇█
+                    const i18n = this.$options.i18n.messages[this.locale] || this.$options.i18n.messages['en-US']
+                    return i18n[text]
+                }
+            },
+            /**
+             * refresh
+             * @description 鍒锋柊
+             * */
+            refresh() {
+                if (this.instance.refresh) {
+                    this.instance.refresh()
+                }
+            },
+            closeBox() {
+                this.clickShow = false
+                this.refresh()
+            },
+            show() {
+                // eslint-disable-next-line eqeqeq
+                if (this.mode == 'pop') {
+                    this.clickShow = true
+                }
+            }
+        },
+        computed: {
+            instance() {
+                return this.$refs.instance || {}
+            },
+            showBox() {
+                // eslint-disable-next-line eqeqeq
+                if (this.mode == 'pop') {
+                    return this.clickShow
+                } else {
+                    return true
+                }
+            }
+        },
+        watch: {
+            captchaType: {
+                immediate: true,
+                handler(captchaType) {
+                    switch (captchaType.toString()) {
+                        case 'blockPuzzle':
+                            this.verifyType = '2'
+                            this.componentType = 'VerifySlide'
+                            break
+                        case 'clickWord':
+                            this.verifyType = ''
+                            this.componentType = 'VerifyPoints'
+                            break
+                    }
+                }
+            }
+        },
+        components: {
+            VerifySlide,
+            VerifyPoints
+        }
+    }
+</script>
+<style>
+    .verifybox{
+        position: relative;
+        box-sizing: border-box;
+        border-radius: 2px;
+        border: 1px solid #e4e7eb;
+        background-color: #fff;
+        box-shadow: 0 0 10px rgba(0,0,0,.3);
+        left: 50%;
+        top:50%;
+        transform: translate(-50%,-50%);
+    }
+    .verifybox-top{
+        padding: 0 15px;
+        height: 50px;
+        line-height: 50px;
+        text-align: left;
+        font-size: 16px;
+        color: #45494c;
+        border-bottom: 1px solid #e4e7eb;
+        box-sizing: border-box;
+    }
+    .verifybox-bottom{
+        padding: 15px;
+        box-sizing: border-box;
+    }
+    .verifybox-close{
+        position: absolute;
+        top: 13px;
+        right: 9px;
+        width: 24px;
+        height: 24px;
+        text-align: center;
+        cursor: pointer;
+    }
+    .mask{
+        position: fixed;
+        top: 0;
+        left:0;
+        z-index: 1001;
+        width: 100%;
+        height: 100vh;
+        background: rgba(0,0,0,.3);
+        /* display: none; */
+        transition: all .5s;
+    }
+    .verify-tips{
+        position: absolute;
+        left: 0px;
+        bottom:0px;
+        width: 100%;
+        height: 30px;
+        line-height:30px;
+        color: #fff;
+    }
+    .suc-bg{
+       background-color:rgba(92, 184, 92,.5);
+       filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7f5CB85C, endcolorstr=#7f5CB85C);
+    }
+    .err-bg{
+       background-color:rgba(217, 83, 79,.5);
+       filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7fD9534F, endcolorstr=#7fD9534F);
+    }
+    .tips-enter,.tips-leave-to{
+        bottom: -30px;
+    }
+    .tips-enter-active,.tips-leave-active{
+        transition: bottom .5s;
+    }
+    /* ---------------------------- */
+    /*甯歌楠岃瘉鐮�*/
+    .verify-code {
+        font-size: 20px;
+        text-align: center;
+        cursor: pointer;
+        margin-bottom: 5px;
+        border: 1px solid #ddd;
+    }
+
+    .cerify-code-panel {
+        height: 100%;
+        overflow: hidden;
+    }
+
+    .verify-code-area {
+        float: left;
+    }
+
+    .verify-input-area {
+        float: left;
+        width: 60%;
+        padding-right: 10px;
+
+    }
+
+    .verify-change-area {
+        line-height: 30px;
+        float: left;
+    }
+
+    .varify-input-code {
+        display: inline-block;
+        width: 100%;
+        height: 25px;
+    }
+
+    .verify-change-code {
+        color: #337AB7;
+        cursor: pointer;
+    }
+
+    .verify-btn {
+        width: 200px;
+        height: 30px;
+        background-color: #337AB7;
+        color: #FFFFFF;
+        border: none;
+        margin-top: 10px;
+    }
+
+    /*婊戝姩楠岃瘉鐮�*/
+    .verify-bar-area {
+        position: relative;
+        background: #FFFFFF;
+        text-align: center;
+        -webkit-box-sizing: content-box;
+        -moz-box-sizing: content-box;
+        box-sizing: content-box;
+        border: 1px solid #ddd;
+        -webkit-border-radius: 4px;
+    }
+
+    .verify-bar-area .verify-move-block {
+        position: absolute;
+        top: 0px;
+        left: 0;
+        background: #fff;
+        cursor: pointer;
+        -webkit-box-sizing: content-box;
+        -moz-box-sizing: content-box;
+        box-sizing: content-box;
+        box-shadow: 0 0 2px #888888;
+        -webkit-border-radius: 1px;
+    }
+
+    .verify-bar-area .verify-move-block:hover {
+        background-color: #337ab7;
+        color: #FFFFFF;
+    }
+
+    .verify-bar-area .verify-left-bar {
+        position: absolute;
+        top: -1px;
+        left: -1px;
+        background: #f0fff0;
+        cursor: pointer;
+        -webkit-box-sizing: content-box;
+        -moz-box-sizing: content-box;
+        box-sizing: content-box;
+        border: 1px solid #ddd;
+    }
+
+    .verify-img-panel {
+        margin: 0;
+        -webkit-box-sizing: content-box;
+        -moz-box-sizing: content-box;
+        box-sizing: content-box;
+        border-top: 1px solid #ddd;
+        border-bottom: 1px solid #ddd;
+        border-radius: 3px;
+        position: relative;
+    }
+
+    .verify-img-panel .verify-refresh {
+        width: 25px;
+        height: 25px;
+        text-align: center;
+        padding: 5px;
+        cursor: pointer;
+        position: absolute;
+        top: 0;
+        right: 0;
+        z-index: 2;
+    }
+
+    .verify-img-panel .icon-refresh {
+        font-size: 20px;
+        color: #fff;
+    }
+
+    .verify-img-panel .verify-gap {
+        background-color: #fff;
+        position: relative;
+        z-index: 2;
+        border: 1px solid #fff;
+    }
+
+    .verify-bar-area .verify-move-block .verify-sub-block {
+        position: absolute;
+        text-align: center;
+        z-index: 3;
+        /* border: 1px solid #fff; */
+    }
+
+    .verify-bar-area .verify-move-block .verify-icon {
+        font-size: 18px;
+    }
+
+    .verify-bar-area .verify-msg {
+        z-index: 3;
+    }
+
+    /*瀛椾綋鍥炬爣鐨刢ss*/
+    /*@font-face {font-family: "iconfont";*/
+    /*src: url('../fonts/iconfont.eot?t=1508229193188'); !* IE9*!*/
+    /*src: url('../fonts/iconfont.eot?t=1508229193188#iefix') format('embedded-opentype'), !* IE6-IE8 *!*/
+    /*url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'),*/
+    /*url('../fonts/iconfont.ttf?t=1508229193188') format('truetype'), !* chrome, firefox, opera, Safari, Android, iOS 4.2+*!*/
+    /*url('../fonts/iconfont.svg?t=1508229193188#iconfont') format('svg'); !* iOS 4.1- *!*/
+    /*}*/
+
+    .iconfont {
+        font-family: "iconfont" !important;
+        font-size: 16px;
+        font-style: normal;
+        -webkit-font-smoothing: antialiased;
+        -moz-osx-font-smoothing: grayscale;
+    }
+
+    .icon-check:before {
+        content: " ";
+        display: block;
+        width: 16px;
+        height: 16px;
+        position: absolute;
+        margin: auto;
+        left: 0;
+        right: 0;
+        top: 0;
+        bottom: 0;
+        z-index: 9999;
+        background-image: url("data:image/png;base64,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");
+        background-size: contain;
+    }
+
+    .icon-close:before {
+        content: " ";
+        display: block;
+        width: 16px;
+        height: 16px;
+        position: absolute;
+        margin: auto;
+        left: 0;
+        right: 0;
+        top: 0;
+        bottom: 0;
+        z-index: 9999;
+        background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADIEAYAAAD9yHLdAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAADwRJREFUeNrt3V1sU+cZwPHndTAjwZ0mbZPKR/hKm0GqtiJJGZ9CIvMCawJoUksvOpC2XjSi4kMECaa2SO0qFEEhgFCQSqWOVWqJEGJJuyYYWCG9QCIOhQvYlgGCIFmatrVSUhzixO8ujNM1gSZOfPye857/7wYlfPg5xj5/n/fExyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABATizsWti1sCs/v6y0rLSsdMaMZ/Y8s+eZPZMnm54LQO6kn/fp/UB6v2B6LrdRpgcwZf7e+Xvn7505MxAIBAKBrVt1ja7RNdXVaqlaqpbOmTP0z+u9eq/ee/euFEqhFH7ySeCjwEeBj+rr299of6P9jb//3fT2AMhcWVlZWVnZ3Ln6uD6uj2/eLF3SJV1VVapW1ara6dOH/nn9hf5Cf3HzpupW3aq7qSl5LHkseay+/nLt5drLtbdvm96eXPNZQJQqn1Q+qXzS73+vN+gNesObb0q7tEv7xImZ/kv6kr6kL/X3q0PqkDpUXx/aFNoU2rRz53l1Xp1X/f2mtxTAcMv1cr1cT5jQfb37evf1ujrpkR7p2bxZ1agaVZOXl/E/WCM1UnP/vv5cf64/f+utjg87Puz4cPfu1G9qbXp7neaTgChVeqD0QOmBP/5RHVPH1LHf/CbrN1EplVLZ2iqt0iqtv/51NBqNRqP37pnecgDpI42CgtTz9OTJ1PO0sjLbt6PX6/V6/Z/+1LG5Y3PH5g0bHnzX2pBkXlyPKTtadrTs6Ouvq/fV++r9LVscu6EbckNuPPGEhCUs4UWLpsanxqfGT5yIxWKxWCyRMH0/AH40GI6whCXc3Cyn5bScDoeduj11RV1RV559dkrFlIopFX19sauxq7GrbW2m7wenBEwP4JT0OY7UV6+/nrMbjkhEIitWSIVUSEVLS0ljSWNJYyhk+v4A/GQwHHtkj+xpahp8XuaImqwmq8m7di2oXlC9oHr2bNP3h1OsDUhgfWB9YP2WLdIgDdLwgx/kfICzclbOLluW35Hfkd/x5z8PPqABOGbYEcd22S7bKypyPsiDc6v9df11/XWvvWb6fnGKtQHRj+nH9GOrV5ueY/CVz4MHNCEBsm9YOHJ8xPEo6og6oo64YD/k1PaZHiDbvruD/uYb0/MMUyEVUtHWFi+Pl8fLf/Wray9ee/Haiz09pscCvGjYUpWpI44RBE8FTwVPFRRcLLxYeLEwHjc9T7ZYdwSi2lSbavvxj03P8UgsbQHj5pqlqlFK9iZ7k70u3i+NkXUB6Tvcd7jv8H//a3qOEXGyHciY6ZPjYzXw0sBLAy95YL+UIeuWsNJK75feL71/545arBarxYWFpucZUVjCEj53LvWEqK7mfSTAt9x6jmNEi2WxLL59O3ooeih6aNYs0+Nkm3VHIIO6pEu6Pv3U9Bijxsl2YBjPhiOtUAql0EP7oQxZG5C8SXmT8ibt35++5IjpeUaNpS3As0tVabpBN+iGgQE5Lsfl+KFDpudxirUBuTT90vRL0//xj/S1qkzPkzFOtsOHvHZy/FFUsSpWxfv2pZai//Y30/M4xfpLmRR/VvxZ8Wd//Wvf7b7bfbd//vPBS454xU25KTdnz+YSKbCZ55eq0h5cE2/OB3M+mPPBb3977dq1a9eu2XstLGtPog+Vvp5/X1tfW19bU5N6V72r3v3FL0zPlTHeRwKLeOV9HCPaLbtl94UL8a/jX8e/fv55vzwvfROQNEICmEc47OC7gKQREiD3CIddfBuQNEICOI9w2Mn3AUkjJED2EQ67EZAhCAkwfoTDHwjIIxASIHOEw18IyAgICTAywuFPBGSUCAkwHOHwNwKSIUICEA6kEJAxIiTwI8KB/0dAxomQwA8IBx6GgGQJIYGNCAe+DwHJMkICGxAOjAYBcQghgRcRDmSCgDiMkMALCAfGgoDkCCGBGxEOjAcByTFCAjcgHMgGAmIIIYEJhAPZREAMIyTIBcIBJxAQlyAkcALhgJMIiMsQEmQD4UAuEBCXIiQYC8KBXCIgLkdIMBqEAyYQEI8gJHgYwgGTCIjHEBKIEA64AwHxKELiT4QDbkJAPI6Q+APhgBsREEsQEjsRDrgZAbEMIbED4YAXEBBLERJvIhzwEgJiOULiDYQDXkRAfIKQuBPhgJcREJ8hJO5AOGADAuJThMQMwgGbEBCfIyS5QThgIwICESEkTiEcsBkBwXcQkuwgHPADAoKHIiRjQzjgJwQE34uQjA7hgB8REIwKIXk4wgE/IyDICCFJIRwAAcEY+TUkhAP4FgHBuPglJIQDGI6AICtsDUl+XX5dfl0ySTiA4QgIsmrwlXpYwhJubpaIRCSyYoXpuTIWlrCEz50b/Nrr2xGRiESqq6PRaDQavXfP9FiwAwGBI6w5IvEqjjiQAwQEjiIkOUY4kEMEBDlBSBxGOGAAAUFOEZIsIxwwiIDACEIyToQDLkBAYBQhyRDhgIsQELgCIRkB4YALERC4CiEZgnDAxQgIXMn3ISEc8AACAlfzXUgIBzyEgMATrA8J4YAHERB4inUhIRzwsIDpAYBMJNYm1ibWKqUeV4+rx5X3XwCdkTNyxoLtgC/xwIUnWPN5HI/i8Ge2A04gIHA168MxFCGBhxAQuJLvwjEUIYEHEBC4iu/DMRQhgYsRELgC4RgBIYELERAYRTgyREjgIgQERhCOcSIkcAECgpwiHFlGSGAQAUFOEA6HERIYQEDgKMKRY4QEOURA4AjCYRghQQ7kmR4AdhkMR1jCEm5uliNyRI54MBxhCUv43DkpkiIpunVLbspNuTl7tumxRu2W3JJbM2cGC4IFwYKFC6fGp8anxk+ciMVisVgskTA9HuzAxRSRFcOOOCISkciKFabnylj66ril8dJ46Zo1wY3BjcGNVVV6m96mt505Y3q8jKX/HyqkQipaWkoaSxpLGkMh02PBDixhYVysWaoa4bLq1lxGnqUtZBEBwZj4JRxDERLgWwQEGfFrOIYiJAABwSgRjocjJPAzAoLvRThGh5DAjwgIHopwjA0hgZ8QEHwH4cgOQgI/ICAQEcLhFEICmxEQnyMcuUFIYCMC4lOEwwxCApsQEJ8hHO5ASGADAuIThMOdCAm8jIBYjnB4AyGBFxEQSxEObyIk8BICYhnCYQdCAi8gIJYgHHYiJHAzAuJxhMMfCAnciIB4FOHwJ0ICNyEgHkM4IEJI4A4ExCMIBx6GkMAkAuJyhAOjQUhgAgFxKcKBsSAkyCUC4jKEA9lASJALBMQlCAecQEjgJAJiGOFALhASOIGAGEI4YAIhQTYRkBwjHHADQoJsICA5QjjgRoQE4xEwPYDtbAtH4kriSuIKT1BbXCy8WHixMB6fuGzisonLVq/W2/Q2ve3MGdNzZeysnJWzy5blt+e357f/5S8ljSWNJY2hkOmxbMcRiENsDcfV7Ve3X93+zTemx4IzOCJBJghIlhEO2ICQYDQISJYQDtiIkOD7EJBxIhzwA0KChyEgY0Q44EeEBP+PgGSIcACEBCkEZJQIBzAcIfE3AjICwgGMjJD4EwF5BMIBZI6Q+AsBGYJwAONHSPyBgDxAOIDsIyR2831ACAfgPEJiJ98GhHAAuUdI7OK7gBAOwDxCYgffBIRwAO5DSLzN+oAs18v1cj1hQk95T3lP+aefpr77y1+anitje2SP7Dl7NhW+1auj0Wg0Gr13z/RYQDYMvsALS1jCzc0SkYhEVqwwPVfGKqVSKltbQ++E3gm9U1V1Xp1X51V/v+mxnGL9B0p1X+++3n29ri71FeEA3GjwcR2RiESqq1MhOXfO9FwZa5VWaa2s7DnYc7Dn4O7dpsdxmrUBKX+7/O3yt3/2M5krc2Xupk2m58lYeqkqmogmomvWEA74QfpxHtwY3BjcWFXl1U9I1Iv0Ir1o69b53fO753fPm2d6HqdYG5BkXjIvmbd1q3pOPaeemzDB9Dyjlj7i2Ck7ZeeqVZzjgB+lP2o3dU5kzRqvHZGoGlWjavLyAg2BhkDDa6+Znscp1gZEzVQz1cyqKtNzjBpLVcAwnl/aOi7H5biH9kMZsi4gCzoXdC7o/OEPZZ/sk33TppmeZ0QsVQEj8vbS1owZJY0ljSWNoZDpSbLNuoAMrBtYN7DuRz8yPceIWKoCMubVpa3Q/ND80HwP7JcyZF1ARIkS9e9/mx7jkTjiAMbNa0ckgUmBSYFJ//mP6Tmyzdr3gZTGS+Ol8Rs31FK1VC2dM8f0POkjjuCTwSeDT1ZXp19JmR4LsIFr30eyQ3bIjs7O6AvRF6IvFBebHifb7DsCeUA1qAbV0Nxseg7CATjPrSfb9VP6Kf2UC/ZDDrE2IMlkMplM7t8vNVIjNffv53yAIUtVhANwnluWtvRhfVgf7u1VL6uX1csHDpi+X5xibUAu116uvVx7+3bqqz/8IWc3nD7imBecF5y3ciUnx4HcM36yPSlJSb71VrQj2hHtuHPH9P3hlDzTAzgt1hRrijW1tU3ZMWXHlB1z5qgr6oq68uyzWb+h/bJf9re0BIuCRcGitWs54gDMi8VisVgskZganxqfGj9xInWtqvJyuSE35MYTT2T79vRJfVKfPHas4+mOpzuerq01vf1Osz4gabGWWEus5dSpaV9N+2raV4mE7JJdsmvJEmmXdmnP/J3q+pK+pC/190undErn3r1FkaJIUeR3vzv9yulXTr/S12d6ewF8Kx2S4gvFF4ovfPxxX29fb19vQYE+qo/qowsWqPfUe+q9QMYrMumlKlklq2TVm29+Nxxam95up1n7U1gjKSstKy0rnTFDr9Qr9cotW1SLalEtq1enfgy4qOjhf+vOHVkn62TdJ58M3B24O3C3vv7Lg18e/PJgZ6fp7QGQufQ18/QpfUqf2rw59d3nn0/9OmPGsL+wRJbIkn/+U7+qX9WvNjUFZgVmBWbV17cXtBe0F3R1md6eXPNtQB4l/fkEiTWJNYk1P/1p+n0lvF8D8I/BHwvWokX/5CehaCgaiv7rX6nLs/f2mp4PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtvsf2vlfs7i0WI4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTctMTItMTVUMTU6NTc6MjcrMDg6MDCiEb4vAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE3LTEyLTE1VDE1OjU3OjI3KzA4OjAw00wGkwAAAE10RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fY2sxYnphMHpqOWpqZGN4ci9jbG9zZS5zdmdHkn2WAAAAAElFTkSuQmCC");
+        background-size: contain;
+    }
+
+    .icon-right:before {
+        content: " ";
+        display: block;
+        width: 16px;
+        height: 16px;
+        position: absolute;
+        margin: auto;
+        left: 0;
+        right: 0;
+        top: 0;
+        bottom: 0;
+        background-size: cover;
+        z-index: 9999;
+        background-image: url("data:image/png;base64,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");
+        background-size: contain;
+    }
+
+    .icon-refresh:before {
+        content: " ";
+        display: block;
+        width: 16px;
+        height: 16px;
+        position: absolute;
+        margin: auto;
+        left: 0;
+        right: 0;
+        top: 0;
+        bottom: 0;
+        z-index: 9999;
+        background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADIEAYAAAD9yHLdAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAMQpJREFUeNrt3XlcVHX3B/Bz7rCISi6IC+ijkpZpIswMyBLgluVuKm4pqWmEuG/hUpr5uFYoiuaSFrklZvroo+jPFRURZgYVxZ1K3HIXUBSGe35/XC9PWpYL8J2B8/6H1wwGn3sb5sz93u/3fAEYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOM/QUUHYCx59F0ddPVTVdXq5YXkxeTF1O3Ll7H63jdzY3eoDfojTp1UIta1FatCm/D2/C2kxPchttwu0oVyIRMyKxShVpSS2pZuTIkQzIklyuHv+Av+IudHURBFERJkvJbKlQo+IWhEAqhsgz2YA/2d+8WPP/oMXWkjtTx4UMMwAAMuH4d2kE7aHf9OoVQCIX8/jvuxJ2489o1WkJLaMmlS+AHfuB37hwmYAImnDtnNBlNRlNGhvJDiUSfX/ZygiiIgqhMmayJWROzJgYF4Xbcjtv9/akX9aJerq7QE3pCTwcHiIEYiMnMxNpYG2ufOYNTcApOOXDAcNZw1nA2KUn0cTwrLiBMKO+z3me9z9asKa+V18prtVr5tHxaPv3mmzgaR+Nod3cYCANhYMOGyr9+9VXla9myonMXFoqmaIp+8ADDMRzDz56FTtAJOh07RgmUQAkGA17Da3jNYMjrldcrr1dKyrGxx8YeG3vvnujc7I8QdbG6WF3skCFUjapRtYkTcSSOxJHVqr3Yz0tNVb6OH280Go1G43//K/oIn3rkogOwkgzR09bT1tPW3V3jrHHWOLdoIRtkg2zw84PTcBpO+/jgGByDY2rWFJ3U0tEiWkSL8vNxDa7BNSdOkAM5kMOuXTgYB+PgnTvz1uStyVuzbx8XmOKh0+q0Oq2tLW2hLbRl9WrsgB2wQ7duhf17aAWtoBWzZpncTe4m94gI0cf9JC4g7KU0oSbUhCpW1FTTVNNUa98eTGACU9u2uAf34J6WLWEuzIW5VauKzlni6UEP+txcZYju0CGoDtWh+pYt+QH5AfkB69cfxaN4FH/9VXTMkkJ3UXdRd3HBAuWKMTy8yH8hAQENH64MeUZFiT5+FRcQ9kwaN27cuHHjSpVsbW1tbW2DgxEREbt2Vb7bvLny1dZWdE721+gz+ow+S06W+kn9pH7r1+fdyruVd2vdOi4sz0f7rvZd7bs+Pvgv/Bf+KyEBjGAEIxb5+yjNp/k0PytLE6mJ1ES+9lpybHJscuzVq6LPBxcQ9hjlJqCNTbY+W5+tb98eFsEiWNS3LxyDY3CsXTvlsb296JzsJT2aHEBdqAt12bULMzADM5YsgQ/hQ/hw0yblk25enuiYlka7XLtcu3zTJozGaIzu2LG4fz85kzM5jxxpijPFmeLmzhV9PriAlHKefp5+nn4uLtgQG2LDQYOwDJbBMh99BIfgEBxycRGdjxUvOkSH6NDVq7gEl+CSFSvMx83Hzcejo49+c/Sbo99cuiQ6nyjKPY8qVchABjJcuYJe6IVeNjbFHqQNtIE2W7YYpxmnGad16CD6vEiiA7DipfwhNG6sS9Wl6lJ/+EF6KD2UHv76K6ZgCqZMmcKFo3RDX/RF3+rVYQWsgBXjx9uQDdlQero2XZuuTV+2zOui10Wvi6+9JjpncaMP6AP6ICBAWOFQc0RQBEXUqSP6fKj4CqSEKxizvY7X8fqkSaADHejati2usVtWwqhDX+2pPbXfsIFqU22qPW1aSl5KXkre0aOi4xUV3QPdA92Df/8b/MEf/CdMEJvmwgVlem/t2qLPC1+BlDAe8R7xHvENGypXGuvWFdzsAwCAdu24cLCXshgWw2JJUqetSv2l/lL/lBT19abfot+i3+LmJjpmYaMbdINu1K0rOgf4gi/4irsCehIXECvX5OMmHzf52NVVO087TzsvJkZzSnNKcyo1FRAQMDiYCwYrUurr69HrTa4iV5GrnDihu6O7o7sze7Y6e090zJeFC3ABLnjRhYGFiICALGe2IxcQK+OT4ZPhk+HgoNPpdDrdp5/agA3YwOnTGIMxGNO3r/oJUXROVjopK+rLlIGW0BJajh1rF2gXaBd4+rRut263bndIyKN/ZX0faHbADthRrpzoGCCDDDIXEPacPL/0/NLzy8DAXKdcp1ynlBTl2alT1Z5OovMx9pcSIRESnZ1hLIyFsd9/rxunG6cbt2+fOtQqOt4zQ0BAC3jj9gIvEHgT/0lcQCyUcqVRubJypfHdd9IZ6Yx0Zu9epWnf66+LzsfYC9kFu2BXQIDmjOaM5ozJpCMd6WjKFLU1iOh4Fo+vQNjfUWdN5Z7OPZ172mBQnv3gA76XwUoUdUGqHvSgnzwZpsJUmJqQoP9C/4X+C/6A9DTkTu7kzlcg7JHg4ODg4GCNRv0kpvwhHTiAn+An+IkFzPpgrDhMhskwWa+nS3SJLhmNWq1Wq9V+9JHoWJYGwzAMwzQa5ZH4e53CA5RW+vv6+/r7tWqlD0oflD5o9271k9jjLxDGShl1nxZERFy8WHtVe1V7deNGtWmn6HiWol5Uvah6UeKHsizmUqi00J3SndKd6tRJNskm2bR8OY7H8Ti+cmXRuUobSqIkSsrJUVYW37sHw2E4DH+Gwn0QDsLBihV5SLF4YDtsh+06dbLxt/G38U9OVu6VdOmi9OpS980oerSX9tJeRGyGzbCZ6LMCUPZh2YdlH6pDWQ8fisrBfwDFRNtH20fbZ8IELItlsey0afwG9ILCIAzCHj6kntSTep49C6thNaw+fRpDMARDTp/GbtgNu506BTNgBsy4cEFpQXHrltnb7G32vnXLYaLDRIeJt24l1kqslVgrJ+d5f/3jzSadneVj8jH5WNWqmmhNtCbaxYXqUT2q5+xMy2k5La9ZU9mBsHFj/Ba/xW8bNVKuNF9/HQxgAIOdnejTaXW8wAu87t3DbMzG7IEDDSsNKw0r164t6l+rzdJmabNMJqWAeHqKPg1mg9lgNlSqpHRTvnNHVA5+Aysij88qWbhQmQY4cKDoXJaODtABOpCeDtfgGlw7cADfw/fwvf37lfN34ICbm5ubm9vZs7GxsbGxsfn5ovM+L/V1kT83f27+3Pr1bZbYLLFZ4u5OJ+kknQwMpP20n/a3aMGz7Z4RAQF99ZVyRTJunPKkLBf2r9Fu0W7RbklJwck4GSd7eIg+bOW4nZ2V475xQ1QMHsIqZMoWra+8kt8zv2d+z9hY5dnWrUXnshjhEA7h2dlwAS7Aha1boTW0htYbN5pjzDHmmPj4ow5HHY46PL3rq9IDSPRBvLiCNumBEAiBaWnKs+rXtWuhLJSFsn/oknwOz+G5Fi0wHuMxvkUL6A29oXeHDkpBrVJF9PEIh4CAo0frknRJuqS6dW1r2NawrdGnz4teYVoLZYtjSVI2cBOXgwtIIVH/4M3VzdXN1bdsUXo7iL/UFev+faX99O7d0AJaQIvY2JwbOTdybmzYkDYlbUralOxsmAJTYIronJYnJSElISXh8mXl0cqV0AAaQIOVK9VZe+nn08+nn/f1LWhZQ0BAvXuX2sISBmEQ1qVLHuVRHu3Z4z7HfY77nI4dlS1+r1172R+P+ZiP+Tzk/CQuIC9JWejXoIHyyXrnTmgGzaCZq6voXMVN3fEOHdERHRcsKN+8fPPyzdet24f7cB8+eADTYBpME53S+j0+dHfggPpVmZUzblyF7yt8X+H7Nm0gEiIhMjQUVsJKWPnOO6XmnhsCAjZtalvHto5tnQMHlL/PNm2UK9fz50XHKyz2SfZJ9knip/GW/BdUEfFM8EzwTKhXT1otrZZW79tXavbReLT3tjLdctMmnIpTceqSJYb2hvaG9jt3io7HHlfwOh0qDZWGDh2q3IT+8MPS0gKHIimSIn//HbpBN+jWurXpmuma6dqxY8/7c3QjdSN1I48ehXiIh3h3d9HHJblJbpJbjRqit7blAvKcvDt4d/DuULeueb15vXn9vn3oh37oV6uW6FxFpWC6axZmYdaCBTZbbbbabP3qq8O9D/c+3Pv330XnY89H2RDKySn/Qv6F/AsffYRDcAgOGTWqpA99USIlUuLNm+iDPujTurVyRWJ65rsHllZAZHvZXrZ3dX18qLP48RDWM1IX/pkTzAnmhF27SmrhoGRKpmSzGebDfJi/Zk2+lC/lS599drTi0YpHK/76q+h87OUk10yumVzz5k3l0YwZDdc1XNdw3fz5DjkOOQ454eFUn+pT/YkTcSgOxaGOjqLzFhalcDg5KY9271b+ntu2NZQ1lDWUVffL+RvxEA/xljMEKLvL7rI7IiRAAvxz+iIjfAzN0qn7bdBb9Ba9tWdPiWsxogMd6IigA3SADuvWaS5rLmsuN2pkGm4abhoeEqLMM+fCUVKldU/rntY9O9v4gfED4wezZtEYGkNjGjSAYAiG4KVLCz5QlCgVKtBaWktrt29X7pE0b/6P/0kgBEIgkejkKvvR9qPtR4svaMIDWCp1Ixw7WztbO9uEBOUSv0ED0bkKjT/4g/+5c8rK6o8+Ui7p9+wRHYtZFrXtunRdui5dX7oUp+N0nO7nJzpXYVGHaKVvpW+lb7t2NXxk+Mjw0bZtT/47pdCo904aNxadW5l1V7u2Mi38wgVRMfgK5AnqSmPb8bbjbcevW1dSCof6SZKaUTNqNnu27VjbsbZj3d25cLC/cyTwSOCRwLQ0U1dTV1PXgAByJmdyHjlS+e79+6LzvSz0Rm/0dnAgIxnJuHGjsrPne++p31c6SAQEwAgYASMsYEfCR+Tecm+5N1+BWBztae1p7emoKOyNvbH30KGi8xQOkwnLYTksN3CgId4Qb4hXN6Ri7MUon8hffVV5tHSp8vUZhoIsXMGQ3VbYCluPH7eYledPUFqZ1K0reoiZC8gjavtotQuo6DwvTL2nYQADGL7+uryxvLG8MSJCWY9R0saymWVA1LvoXfQuI0bIF+WL8sXZs5UmlZazb0VJo3HRuGhc3NySNidtTtr8yy+icpT6ISx9qj5VnxoUpBSOBQtE53lRdJgO0+HMTPkr+Sv5q27dlLHRMWO4cLCiR2S4bLhsuBwZSV/T1/R1y5Z0iA7RIXHrE1jxKLUFRNlfoE4dpVvr+vXKs+L767+Y1FTNVc1VzVUvrxTHFMcUxw0bRCdipVPKmJQxKWPi45V7bTodTaAJNOEZpsmy55IXlBeUF1T4TSOfV6krIGovIRu9jd5G/8MPVruAahksg2U//qg88PFR5vefOSM6FmMA/+vl9SD/Qf6D/ObN6Uf6kX785hvRuUoKzWDNYM1g8QWk1I1Rnrc/b3/e/pNPlGaHb70lOs9z2wSbYFN0tLGmsaax5rBhypPiX0iM/RVlnUlurvIoLEz3ve573fe//gpREAVRM2eKzmet8lvlt8pvJX47g1JzBaIP1AfqAz09ldlIkyeLzvO8aAWtoBWzZimFY8gQ5VkuHMy6FCxYnEbTaFp4OIRCKITy6/h52bjauNq4ij9vJb6AKF1K7e3pHt2je99/by07wdEiWkSL8vPhM/gMPgsLM7mb3E3uERGiczFWGExtTG1MbRYuhMWwGBb37as8m5cnOpe1eOj90PuhNxeQIlehZ4WeFXqql8oWsIL0n6ifyE7BKTj1wQfGTsZOxk48dsxKJmUh6+rVFEIhFNKjR8EHJ/a3bNfYrrFdwwWkyHh+6fml55eBgbARNsJG9V6B5aOVtJJWDhtmCjGFmEJWrRKdh7HioPRe+/lnyIRMyBw9WnQeS2e7yXaT7SYuIIVOnWUl1ZfqS/WjopRLZPEbr/wT8iRP8pwyxRRvijfFR0eLzsOYCKZWplamVvPm0WbaTJvV6fXsSXmd8jrldRJ/pWbxb6zPKz09PT09/aOPYCpMhalNmojO848ezaoyLTMtMy37/HPRcRizBPI5+Zx8bvBg8AEf8Ll+XXQeS1PmtzK/lfmNr0AKjU+GT4ZPRuXKysYxX3whOs8/WgSLYNGGDY9Px2WMAahNHK9fV3b6DA8XncfSZEVkRWRFcAEpNHmYh3k4derjG8dYHppBM2jGmTOaSppKmkr9+yvPin8hMGaJlJY8sbE8pPW4SmMqjak0hoewXpq+j76Pvs+bb5ILuZBLaKjoPE8VDuEQnp0tl5HLyGXeey+pflL9pPqZmaJjMWYNzKvMq8yrwsOVfTBu3BCdR7RsXbYuWye+gFj9SnQ6SSfp5FdfWXr3TzKTmcwffqjuryA6D2N/5BXsFewVXL268qh6dfm8fF4+b2+PU3EqTnV0pMk0mSaXL6+8gf9Fz7gFsAAW2NjQEBpCQ/6wFe7H8DF8fOcOfoPf4DfPsKMfAgLev4+f4+f4+cOHT36belJP6rluHfwIP8KPgweLPm/F7lG3beMS4xLjEvHrZqy2nbtOq9PqtE2bKi+4xETReZ6G3qF36J3ISNN003TT9FGjROdhpZPSPLRiRRudjc5GFxKi/N107qxcGXt5QTREQ3T58qJzsn+gBz3oc3ONi42LjYvt7UXHsdohLNpKW2nr+PGiczzVRJgIE9PSMqtnVs+sbsE5WYmm3abdpt02eLDmoOag5uD580rhmDdP+W7z5lw4rExTaApN1d5i4lnskM/TFNzz+Iw+o886dhSd508erSSXt8vb5e0DB55bfG7xucV/vhRnrCjpZutm62ZHR8MkmASTSuFQT0mlAQ1oxA9dqazuCoReo9fotYgIMIIRjOL3BP6TztAZOkdFpSxOWZyy+NAh0XFY6aIM7Q4bVmrvEZRwVJfqUl3LuQKxmgKi36Lfot/i5kaTaBJN6tFDdJ4/GQtjYeyvv+bszdmbs/fTT0XHYaWLUjgqVFCGOHhBaollYUNYVlNA5GPyMfnYuHEWO9tqNsyG2aGhyv4H2dmi47DShcpTeSrfpw8kQRIkVawoOg8rIjLIIPMQ1jPzPut91vvsK6/gT/gT/qS2fbY0O3YoC5527BCdhJVO2AybYbOWLUXnYEWMgIC4gDwzcw9zD3OPnj2VR2XLis5T4LGNcHiWFRNMBzrQubmJjsGKFgZgAAbwENYzwxbYAluoLT8syFW4ClfXrFH2MzCZRMdhpRu1ptbU+g8L+FgJxlcg/8gj3iPeI75hQ9gDe2CPj4/oPAXCIAzCHj7UJGuSNcl8s5xZBpyEk3DS7duic7Ai1hyaQ3O+AvlHmhRNiibFAq88FsEiWLR8edLmpM1Jm3/5RXQcxgAAoA/0gT7nzomOwYrYHtgDe65eFR1DZXEFRJmOaGurbLBkQTfNH93zkDZJm6RNc+eKjsPYH+FwHI7DeRJHiXcQDsJBy+mlZ3EFRF4vr5fXv/sujsSROLJaNdF5CiyGxbB427bkmsk1k2ueOSM6DmN/ZH/C/oT9idhYZT+cmzdF52FFQ+or9ZX6xsaKzlGQR3SAPwXqJnWTullgi5JdsAt2qT2EGLMsB28evHnwZlYWtISW0HLyZNF5WFHYuDE5Njk2OfbIEdFJVBZWQBBhNIyG0W3aiE6iomk0jaadOGGsaKxorLhzp+g8jP0dU7wp3hQfHU0hFEIhP/wgOg97Sf7gD/7nzklukpvkFhYmOs6TLKaA6AP1gfpADw/4Gr6Gr11dRedRKbNboqOVR8+wnwFjFsA03DTcNLxfP+XRzJm0iBbRIvEbELFn1BJaQsv9+8255lxzbrNmypWH5dw8V1lMAVFaMLRtKzrG4/LylJWfljPmyNizk2VlndL48VKUFCVFeXjQJtpEm9asocN0mA7zjpjCPdogSpmeq+5r9P77xtnG2cbZzZod/eboN0e/uXRJdMynsZhuttqftD9pfzp4EKfjdJzu5yc6D0RCJETGxRkDjYHGQMsZUmOsMDRc13Bdw3V2duViy8WWi23Y0DzLPMs8q1YtTT9NP00/Z2c5W86Ws//ccw5H42gcXb48mMEM5r/YmTAKoiCqXDlaQStohZ3d8+bCnbgTd5Ypo3S1dnB40eOjZbSMlt27Bz2hJ/QshHUTs2E2zM7MxLfxbXz7+a/kcASOwBFEspPsJDtdvy6Nk8ZJ465exbbYFtsmJSmTc6xv8oPwAuKT4ZPhk1G5cu6V3Cu5V65dwzAMwzCNRnQumANzYM4HHxhbGFsYW8TEiI7DGGOWRnhXW/N483jz+Nat8SSexJPiCwdFUzRFP3hg42TjZOO0caPoPIwxZqmE3wMhLWlJazmtSjAcwzE8Li6pflL9pPo8RswYY08jvIDAG/AGvOHtLTqGSpm2+3//JzoHY4xZOmEFJIiCKIhsbJQuoh4eok+Eit6it+itPXtE52CMMUsn7B7I/e73u9/v/uabmI7pmP7isy0KzQgYASOuXUtxTHFMcTx1SnQcxhizdMKuQPL75PfJ7+PlJfoEqCiLsihr9+5Hj3jBIGOM/QNx90BOwAk4odOJPgEFJ2KptFRaunev6ByMMWYthBUQvIk38aZeL/oEqEgiiaTkZNE5GGPMWggrIDSLZtGs+vVFn4DH9zbnex+MMfasir2AqCvPsSk2xaavvCL6BMBxOA7H09OVnkH374uOwxhj1qLYC4j5ffP75vdr1xZ94AUOwkE4ePy46BiMMWZtir2AyF3lrnLXOnVEH7iKfMmXfE+cEJ2DMcasTfHfA2kEjaDRv/4l+sALTsCv0q/Sr6dPi87BGGPWptgLCLqjO7pb0BXISlpJKy1voxbGGLN0xX8F0gbaQBvLKSDSIGmQNOj6ddE5GGPM2hR/ASEgoBo1RB+4StnA6sYN0TkYY8zaFHsBoZk0k2ZWqiT6wFXZKdkp2SnXronOwRhj1qb4r0DKQBkoU6GC6ANX3L2b1j2te1r3QtjykjHGSpniLyB2YAd2llJAeOEgY4y9qOKfhbUcl+Nye3vRBw6+4Au+3HWXMcZeVLEVkODg4ODgYI0GjGAEI6LoA+cCwhhjL6fYCkhKQEpASoCNsA2sGGOMFa5iKyB21e2q21XnT/yMMVZSFFsBUWY75eWBDnSgs4BCcggOwSELGEpjjDErVcw30YnAG7zBW/y0WepDfahP5cqiczDGmLUq/mm8RjCCMSdH9IFjOIZjeJky/k7+Tv5Ojo6i8zDGmLUp/gISBEEQdOeO6ANXPajzoM6DOlWris7BGGPWpvgLyByYA3Nu3RJ94CpyJmdydnYWnYMxxqxN8ffC2k7bafvNm6IPvOAE+Ev+kj9fgTDG2PMq/pXoC3EhLrSc5oWyXtbL+po1RedgjDFrU/xDWJWhMlS+cEH0gauwMTbGxg0bis7BGGPWpvgLyApYASsyMkQfuIrKUlkq26iR6ByMMWZtir+AAACABV2BfIqf4qdcQBhj7HkVewGR58vz5fmnT4s+8AKJkAiJzs4e8R7xHvE8G4sxxp5VsReQepH1IutF/vILRVM0RT94IPoEFJyIddI6aV3jxqJzMMaYtdAU9y9MS0tLS0sjcnF0cXRx7N4dfoPf4Ldq1USfCGm7tF3afvbsZfNl82Xz/v2i8zDGmKUTdA8EAKpAFahiMok+ASoaQSNoRIsWonMwxpi1EFZA6Cf6iX46dEj0CSjI05k6U2c/P58MnwyfDAcH0XkYY8zSCdvgCQEBwXIKiNpcMdc31zfX19dXeXb3btG5GGPMUgm7AjGajCaj6cQJ5dHdu6JPRIEBMAAGNG8uOgZjjFk6cfdAAABAlpWvhw+LPhEFMiADMt55R3QMxhizdIILCAAYwAAGCxrKmopTcaqXl8cwj2Eew+rXF52HMcYslfgCchfuwt2DB0XHeJLGXeOuce/RQ3QOxhizVMILyN2YuzF3Y+Lj6TAdpsOZmaLzFFgIC2Hh+++LjsEYY5aq2BcSPunWtlvbbm3Lz3eRXCQXydMTzsAZOGMBvakQELBKlZpv1Xyr5lubNl1Ou5x2Oe3qVdGxGGPMUgi/AinQGlpD640bRcd4krxUXiov7d1bdA7GGLM0llNAhsAQGLJ1K+hBD/rcXNFxVHScjtPxDz90n+M+x31OuXKi8zDGmKUQPoSlunLlypUrVx4+dIl0iXSJ9PeH7bAdtterJzoXxmEcxjk4SD2lnlLPS5eurLqy6sqq5GTRuRhjRcfrotdFr4uvvVa9SvUq1av4+ro2c23m2qxBg2oPqz2s9tDRMcAnwCfA5/ff1d5+ovOKImwl+tPgcByOwzduJIkkkt59V3SeglzZmI3ZI0Yoj775RvmqrmNhjFmj4ODg4OBgjSb9fPr59PP9+9NMmkkzx46VO8md5E6vvaZ0zAAgICAAkEACCQDS09PT09Pv3tVO107XTl+7Vr4qX5WvfvXVkagjUUeizp4VfVzFBUUHeJIyVFS1qu0523O25zIylHUidnaic6kohEIopEsX03DTcNPwn38WnYcx9vx0Wp1Wp61ShSIogiLWr8dZOAtnBQW93E/Ny4NBMAgGzZgBS2AJLJk2Tem4kZcn+niLisUVEJUuRZeiS1m7FgbCQBhoOesxaBftol0HD5oqmiqaKr71lug8jLFnpwxNOTnJHeWOcscDB5TZlg0aFPovagNtoM2WLXer3q16t2q3bueGnRt2btjDh6KPv7BZzk30J3mAB3ioQ0WWA1tiS2zp76+7qLuou9i2reg8jLF/pg5VyWlympy2YUORFQ7VNtgG29q3f6XtK21faTt3rujjLyoWW0CMaEQj7tsHARAAASdPis7zJEqlVEqdPVt9YYrOwxh7uvT26e3T248ZA+NhPIwPDCyu34uzcTbODg319PP08/TT60Wfh8Jm8W98NSrWqFijoq0t3sf7eN+Cbqrvxt24u2rVW7du3bp169IlZRaZ0Sg6F2Psf7wWeC3wWtCokTIpZ80a5Z6qTfFNHroCV+AKIprRjGZJUt4nNm8WfV4Ki8VegajyLuVdyrv0/feUREmUlJMjOs+fzIW5MHfqVH8nfyd/J0dH0XEYYwBBFERBZGMj15HryHW++w4WwSJYZG8vNlXJu2dq8QUkNTU1NTX19m2IhEiIXLNGdJ4n4UgciSOrVXtw6cGlB5ciIkTnYYwBZK/OXp29etgwmAyTYbL4oSNKpmRKrl1bdI7CZvEFRCVfkC/IF2bOVP5HmM2i8/yJP/iD/9ix+kB9oD7Q01N0HMZKoybUhJpQnTqwH/bD/qlTRecpkAzJkIwWO+v1RVlNAVEX6OAMnIEzVq4Uneev2dqSjnSk++67husarmu4znLWrzBW8iHa7LfZb7N/0SLlDdtyWg/halyNqy9eFJ2jsFlNASmwATbAhmnTlAcWuEAnHuIh3t29TL0y9crU+/RT0XEYKw309fX19fXDw2EkjISRljPZpkAf6AN9jh0THaOwWV0BMRqNRqPx/HnqRb2o1w8/iM7zVB7gAR4REV51vep61fXyEh2HsZJI30ffR9/nzTflU/Ip+dTs2aLzPA2GYiiG7tghOkdhs7oCorLZZ7PPZp/lXomgF3qhl41N/on8E/knfvjB+6z3We+zr7wiOhdjJYHaHZvSKI3SYmPRG73R28FBdK4/CYMwCHv40DzPPM88b8MG0XEKm9UWkKTNSZuTNv/yC8RCLMSuWCE6z9NgAAZgwOuvmx3NjmbHmJhHz5a4m2mMFSebXja9bHotXVrkK8pfEt2je3Rv3bojgUcCjwRevy46T2Gz2gKiyvsp76e8nz79FIbBMBh2+7boPE+D7bAdtuvUSZukTdIm8b0Rxl6EvpK+kr7SuHHYCTthp169ROd5GlpEi2hRfj4NoAE0YMYM0XmKSon5JKzT6XQ6XViY8mjhQtF5nioUQiFUlukG3aAbnTqZJpgmmCZs2SI6FmOWTDtBO0E74Z13oDN0hs7//S+GYRiGWXALIQICWrZM6cY7aJDoOEWlxBQQhSRpN2k3aTclJuJUnIpTLf3m9d27+Aa+gW+89ZZhpWGlYeXx46ITMWZJ1FYksqPsKDvu3w9REAVRlSqJzvU0lEiJlHjzJjbFpti0QQOlgNy4ITpXUbH6IazHyTJ8Dp/D52Fh6iWk6ER/r0IFeofeoXd27dJ/of9C/8Xrr4tOxJglaPJxk4+bfOzqKq+QV8grtm619MJRYCtsha3jx5f0wqGy3EvAF3TlkRquNVxruDo74xk8g2e8vUXneqpESITEcuWoP/Wn/u3aVS1btWzVsuvX/2743fC7IStLdDzGipNPhk+GT0blyuAADuCwZ4+yolz81tb/hCbQBJqQkGB6z/Se6b2hQx89W+K3ui1xBUTlkumS6ZKZkAB+4Ad+ISFwES7CRcttdog7cSfurFRJ6i/1l/q/+67LWZezLmfXrVPK4f37ovMxVpSUHQIrVJCvydfka9u2QQzEQIzltwRSm7xiCIZgSLt2yt9ryZtt9TQlbAjrf5RLyLt35SA5SA4KCVFvXovO9Y/+Df+GfzdsqExP3L7dI94j3iPe2Vl0LMaKglo4oAW0gBZxcbAH9sAeHx/RuZ7ZQTgIBz/7TFngfOqU6DjFrcQWEFVKcEpwSvCuXeRDPuQzZ47oPM9Hq5UeSA+kBwcOeHfw7uDdoW5d0YkYKwwFhQMAALZvt7bCoW5t/er8V+e/Oj8yUnQeUUrYLKynU/cHyI7LjsuOi4+HSTAJJvn6is71rOgQHaJDV69KraRWUqu2bQ3xhnhDfEqK6FyMPQ9lun2NGsojdfq6Vis61zPzBm/wvnPHvNC80LzQ0/MoHsWj+OuvomOJUuKvQFT7cB/uQ7MZ8zEf8/v0ocN0mA5nZorO9azQF33Rt3p16kf9qF98vO6O7o7uzttvi87F2LPwzPLM8sx64w3lnuShQ8qzVlQ4HsEszMKssLDSXjhUJfYm+tNcXn159eXVt2/XqFejXo16GRl4GA/j4S5dROd6ZsmQDMl2dpAGaZDWo0eNcjXK1Sh3+/aV3678duW35GTR8Rj7Ix3pSEfNmuFaXItrd+yA9bAe1levLjrXi1m0yLjduN24fdYs0UksRakZwnoa5ZJaXbmurmS3VqtX53yS80nOJ6Ghad3Tuqd1z84WnYiVTrpVulW6VaNGKV2zZ81Sm4uKzvW81Om5D/If5D/Ib95c+bvKzRWdy1KUmiGspylvKG8obxg2DN6Bd+Cd7dtF53k5vXs72DjYONgcPlwwZMBYMVA2UCtfXpeiS9GlrF0LX8PX8PVXX1lr4QBf8AXfy5dxOk7H6d26ceH4a6W+gKj3RjT9Nf01/bt3p320j/ZZcUuRR9OApVgpVopNStJqtVqt9qOPlG9yF2BWuLTvat/Vvuvj44AO6IAmEwyEgTCwRw/RuV6Uuq4DEiABErp0UabnXrkiOpel4jeUJ6gtFGwCbAJsAg4fVj5JubqKzlU4DhzAztgZOw8caPjU8Knh09OnRSdi1qVgNmNMdkx2zOjRSouRL75QvmtrKzrfC3u0TkzuJfeSewUHpzimOKY4lrz9OwobF5CnUHcSlCvLleXKe/cqz5YtKzrXyyr4hPVoAZQ6jz02NjY2NtbSe4cxUTxDPUM9Q319sQN2wA4LF+JknIyTPTxE5yoseAWv4JVRowyXDZcNl0vvuo7nxQXkH+hO6U7pTnXqBO/D+/B+bKzyrBV/0noC7aW9tDclheIojuLGjlUXXorOxcTyuuh10euik1N+bn5ufu6sWTgTZ+LMAQPACEYwlqCh0P7QH/rPmGEcYhxiHDJhgug41qbkvBCKmH6Yfph+WNeudJAO0sE1a5RnS04hedyOHVgOy2G5iAhesFg6KLMRy5ZVNmYbOpRepVfp1XHjcDgOx+GVK4vOV9ioA3WgDgsWmKaYppimqM0P2fPiAvKclNlNXbpIzaRmUrO1a5VnS2AhUXuHLYbFsHjtWnm+PF+eP3lyil+KX4rfuXOi47GXUy+qXlS9KHv7ivMrzq84f9Ag+YR8Qj4xcaK6YFV0vqJCsRRLsd9+a3IzuZnc1I2eSn7X3KJS6mdhPa/Hb6699x6EQRiEPXwoOlehWwyLYbH06PXRu7d0XDouHT99Wrtau1q7+v/+zzPdM90zvUMH5fslaEijhFJ7T2l3andqdw4fXsGpglMFp/Pn6RV6hV6ZP7+kFw6IhViIXbJEKRzqrEQuHC+L//BfknLp37kz6EEP+h9/BAMYwGBnJzpXcaHP6XP6/MgRuA/34f68eZlXM69mXl2z5tywc8PODSuBhdVKKAWjaVNl5feAARAMwRDcp4/yXeufDPLMtsE22DZ3rrGqsaqx6qhRypNcOAoLF5BCohSSdu0gHMIhfO1aiIZoiC5fXnSuYjcMhsGw27fpOl2n6z//jANxIA5cu9ZtkNsgt0G7d/Nsr8Klv6+/r79fq5ZskA2yoUcPvIE38Eb//gXbApQ2j4ZeqQE1oAaffGIKNAWaAr/8UnSskooLSCHzCvYK9gr28MgfnD84f/DmzTgGx+CYmjVF5xKNIimSIn//Hd3QDd3WrwdXcAXX9etzYnNic2ITEnil79/TVtVW1VZ1d1dWRnfsCCfhJJzs3BmyIAuytNoSNzvqhdy/L++V98p7+/bldRzFo5S/4IqOp5+nn6efi4s0QZogTdi0CSbDZJis14vOZZnu36fRNJpGJyRIA6QB0oC9e+EW3IJbe/aUcyjnUM4hKUntGCA6aWFTF+Zl2mXaZdo1aiStllZLqwMDyZ/8yT8wEHfhLtwVGAhzYS7MrVpVdF5Lo25zoHld87rm9Y4dk39J/iX5F24qWly4gBQxdXokhVIohcbE4GJcjIu7dhWdy2p4gRd43btHs2gWzTpxQlnwdeKE0uTu5EnpXeld6d3jx/MG5Q3KG3TypNJm+7fflP+4+Me63ee4z3GfU66c3VG7o3ZH69bNn5o/NX9q3bo4GAfj4FdfhVbQClo1boxrcA2u8fBQJmE0agSLYBEssrcXfbqtS2oqEBBQ+/bKDqQXLohOVNpwASlWiLoFugW6Bf/+NxyDY3AsIoKHHgoXJVMyJZvNYAYzmG/cgFzIhdz/fcUojMKoa9cgBEIg5M6dZ/65QECg0WAwBmOwkxO0hJbQ0slJ+blVqkAe5EFelSqQCImQyFsQF5l20A7a/fyzpq+mr6Zvv35J9ZPqJ9W3nn19Shp+4xKkYEOoltASWn7/vfKsulMbYwwAgKIpmqIfPIBsyIbsiAhTK1MrU6t580TnYgouIIJ5xHvEe8Q7O2t2aHZodixfrkw7bN9edC7GRKJpNI2mnTiBE3EiTuzVSxmiSk0VnYs9jguIRUFU2q8PGoSIiKg2dStF8/ZZ6aQDHeiIIAIiIGLpUltbW1tb2xEjEmsl1kqslZMjOh77a1xALJQ6bRPSIR3SV63CIAzCoDffFJ2LsULlB37g99tvShv1jz9WWuXExYmOxZ4NtzKxUKZrpmuma8eOYSAGYqBWq8xCGjGCDtNhOsw3DZk1y8tTvkZF5QTkBOQEvPkmFw7rxFcgVkZdX4I9sAf2mDkTT+AJPNGnD8/mYpZvz578yPzI/MghQ44EHgk8EpiWJjoRezn8hmPl9Kn6VH1qUBD1o37Ub/585dnGjUXnYqXcoz3FoQt0gS7jxxtbGFsYW8TEiI7FChcPYVk5Q2NDY0PjffuUhQo6nTrUBT7gAz7Xr4vOx0oHdUU4jIJRMGr0aDgEh+BQ/fpcOEo2vgIpodQV0TaeNp42ngMHKiu4J0zglhisUIyAETDi2jWQQQb566+VvdHnzzcajUaj8f590fFY8eACUkp4n/U+6332lVfMn5g/MX8SGoou6IIuI0YonxRdXETnYxZuFIyCUZcugR3Ygd2sWeW7le9WvtvSpUqPsgcPRMdjYvAQVimhtnwwbTBtMG2YMycnMCcwJ7BuXWXr2g8/LNjXgzEAUDok7N+PNbAG1ggJuXvz7s27N1991RhsDDYGz5/PhYMB8BUIe4JnqGeoZ6ivLzbEhtgwLAyaQlNoGhyM4RiO4WXKiM7HChfNo3k079YtfA1fw9diYmQH2UF2WLJEaYd+8qTofMyycQFhf6sJNaEmVLGiTZxNnE1c166URVmU1bcv3sE7eCcg4PGtb5lly8tT2ubv26c0m/zuO8e+jn0d+/70E19RsBfBBYS9EHUnPPov/Zf+27mzsg6lc2eaTtNpemAgeqEXetnYiM5ZOt29C8tgGSyLi4McyIGcTZtyQ3NDc0Pj4lJTU1NTU2/fFp2QlQxcQFih8snwyfDJqFw51y3XLdft7bexMTbGxq1awTgYB+NatYI5MAfm1KkjOqfVerRlK1SBKlDl1Ck6Rsfo2O7dOAJH4Ij//CdnR86OnB379vEOj6w4cAFhxUq/Rb9Fv8XNTR4gD5AH+PmhCU1o8vGBTtAJOvn6Kv9KXQhpays6b7FT95RHQsLERGgADaBBYiJshI2w8fBhjMM4jEtMVLrT3r0rOi4r3biAMIui0+q0Oq2tLV2ki3TxjTfgS/gSvmzcGDMxEzMbNYIgCIKgWrXgB/gBfqhdW5k95uqKq3AVrnJ1tZid/fSgB31urrID4W+/QTWoBtXOnwc3cAO38+dhH+yDfenpShfa8+el8lJ5qfzJk8k1k2sm1zx7Vvkhxb+jImPPgwsIK1G8gr2CvYKrVzdfMl8yX6pZU1ouLZeWu7pCb+gNve3sKIIiKKJcOZgJM2GmnZ2UJWVJWXZ2NIkm0aRy5ZQFcYjkS77kW768ci8nK0uZrXT7Ni7ABbggKwuGwlAYmpmpdJHNytL8R/MfzX+ysiAO4iDuxo26H9T9oO4Hly/HxsbGxsbm54s+L4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYKzb/D4DEm9oGCaFQAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTEyLTE1VDE1OjU3OjI3KzA4OjAwohG+LwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0xMi0xNVQxNTo1NzoyNyswODowMNNMBpMAAABPdEVYdHN2ZzpiYXNlLXVyaQBmaWxlOi8vL2hvbWUvYWRtaW4vaWNvbi1mb250L3RtcC9pY29uX2NrMWJ6YTB6ajlqamRjeHIvcmVmcmVzaC5zdmejF0ikAAAAAElFTkSuQmCC");
+        background-size: contain;
+    }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifyPoints.vue b/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifyPoints.vue
new file mode 100644
index 0000000..4f7f496
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifyPoints.vue
@@ -0,0 +1,259 @@
+/* eslint-disable no-unused-vars */
+<template>
+  <div
+    style="position: relative"
+  >
+    <div class="verify-img-out">
+      <div
+        :style="{'width': setSize.imgWidth,
+                 'height': setSize.imgHeight,
+                 'background-size' : setSize.imgWidth + ' '+ setSize.imgHeight,
+                 'margin-bottom': vSpace + 'px'}"
+        class="verify-img-panel"
+      >
+        <div @click="refresh" class="verify-refresh" style="z-index:3" v-show="showRefresh">
+          <i class="iconfont icon-refresh"></i>
+        </div>
+        <img
+          :src="'data:image/png;base64,'+pointBackImgBase"
+          @click="bindingClick?canvasClick($event):undefined"
+          alt=""
+          ref="canvas"
+          style="width:100%;height:100%;display:block">
+
+        <div
+          :key="index"
+          :style="{
+            'background-color':'#1abd6c',
+            color:'#fff',
+            'z-index':9999,
+            width:'20px',
+            height:'20px',
+            'text-align':'center',
+            'line-height':'20px',
+            'border-radius': '50%',
+            position:'absolute',
+            top:parseInt(tempPoint.y-10) + 'px',
+            left:parseInt(tempPoint.x-10) + 'px'
+          }"
+          class="point-area"
+          v-for="(tempPoint, index) in tempPoints">
+          {{ index + 1 }}
+        </div>
+      </div>
+    </div>
+    <!-- 'height': this.barSize.height, -->
+    <div
+      :style="{'width': setSize.imgWidth,
+               'color': this.barAreaColor,
+               'border-color': this.barAreaBorderColor,
+               'line-height':this.barSize.height}"
+      class="verify-bar-area">
+      <span class="verify-msg">{{ text }}</span>
+    </div>
+  </div>
+</template>
+<script type="text/babel">
+    /**
+     * VerifyPoints
+     * @description 鐐归��
+     * */
+    import { resetSize } from './../utils/util'
+    import { aesEncrypt } from './../utils/ase'
+    import { reqGet, reqCheck } from '@/api/modular/system/loginManage'
+
+    export default {
+        name: 'VerifyPoints',
+        props: {
+            // 寮瑰嚭寮弍op锛屽浐瀹歠ixed
+            mode: {
+                type: String,
+                default: 'fixed'
+            },
+            // eslint-disable-next-line vue/require-default-prop
+            captchaType: {
+                type: String
+            },
+            // 闂撮殧
+            vSpace: {
+                type: Number,
+                default: 5
+            },
+            imgSize: {
+                type: Object,
+                default() {
+                    return {
+                        width: '310px',
+                        height: '155px'
+                    }
+                }
+            },
+            barSize: {
+                type: Object,
+                default() {
+                    return {
+                        width: '310px',
+                        height: '40px'
+                    }
+                }
+            }
+        },
+        data() {
+            return {
+                secretKey: '', // 鍚庣杩斿洖鐨刟se鍔犲瘑绉橀挜
+                checkNum: 3, // 榛樿闇�瑕佺偣鍑荤殑瀛楁暟
+                fontPos: [], // 閫変腑鐨勫潗鏍囦俊鎭�
+                checkPosArr: [], // 鐢ㄦ埛鐐瑰嚮鐨勫潗鏍�
+                num: 1, // 鐐瑰嚮鐨勮鏁�
+                pointBackImgBase: '', // 鍚庣鑾峰彇鍒扮殑鑳屾櫙鍥剧墖
+                poinTextList: [], // 鍚庣杩斿洖鐨勭偣鍑诲瓧浣撻『搴�
+                backToken: '', // 鍚庣杩斿洖鐨則oken鍊�
+                setSize: {
+                    imgHeight: 0,
+                    imgWidth: 0,
+                    barHeight: 0,
+                    barWidth: 0
+                },
+                tempPoints: [],
+                text: '',
+                barAreaColor: undefined,
+                barAreaBorderColor: undefined,
+                showRefresh: true,
+                bindingClick: true
+            }
+        },
+        computed: {
+            resetSize() {
+                return resetSize
+            }
+        },
+        methods: {
+            init() {
+                // 鍔犺浇椤甸潰
+                this.fontPos.splice(0, this.fontPos.length)
+                this.checkPosArr.splice(0, this.checkPosArr.length)
+                this.num = 1
+                this.getPictrue()
+                this.$nextTick(() => {
+                    this.setSize = this.resetSize(this)	// 閲嶆柊璁剧疆瀹藉害楂樺害
+                    this.$parent.$emit('ready', this)
+                })
+            },
+            canvasClick(e) {
+                this.checkPosArr.push(this.getMousePos(this.$refs.canvas, e))
+                // eslint-disable-next-line eqeqeq
+                if (this.num == this.checkNum) {
+                    this.num = this.createPoint(this.getMousePos(this.$refs.canvas, e))
+                    // 鎸夋瘮渚嬭浆鎹㈠潗鏍囧��
+                    this.checkPosArr = this.pointTransfrom(this.checkPosArr, this.setSize)
+                    // 绛夊垱寤哄潗鏍囨墽琛屽畬
+                    setTimeout(() => {
+                        // var flag = this.comparePos(this.fontPos, this.checkPosArr);
+                        // 鍙戦�佸悗绔姹�
+                        var captchaVerification = this.secretKey ? aesEncrypt(this.backToken + '---' + JSON.stringify(this.checkPosArr), this.secretKey) : this.backToken + '---' + JSON.stringify(this.checkPosArr)
+                        const data = {
+                            captchaType: this.captchaType,
+                            'pointJson': this.secretKey ? aesEncrypt(JSON.stringify(this.checkPosArr), this.secretKey) : JSON.stringify(this.checkPosArr),
+                            'token': this.backToken
+                        }
+                        reqCheck(data).then(res => {
+                            // eslint-disable-next-line eqeqeq
+                            if (res.repCode == '0000') {
+                                this.barAreaColor = '#4cae4c'
+                                this.barAreaBorderColor = '#5cb85c'
+                                this.text = '楠岃瘉鎴愬姛'
+                                this.bindingClick = false
+                                // eslint-disable-next-line eqeqeq
+                                if (this.mode == 'pop') {
+                                    setTimeout(() => {
+                                        this.$parent.clickShow = false
+                                        this.refresh()
+                                    }, 1500)
+                                }
+                                this.$parent.$emit('success', { captchaVerification })
+                            } else {
+                                this.$parent.$emit('error', this)
+                                this.barAreaColor = '#d9534f'
+                                this.barAreaBorderColor = '#d9534f'
+                                this.text = '楠岃瘉澶辫触'
+                                setTimeout(() => {
+                                    this.refresh()
+                                }, 700)
+                            }
+                        })
+                    }, 400)
+                }
+                if (this.num < this.checkNum) {
+                    this.num = this.createPoint(this.getMousePos(this.$refs.canvas, e))
+                }
+            },
+
+            // 鑾峰彇鍧愭爣
+            getMousePos: function (obj, e) {
+                var x = e.offsetX
+                var y = e.offsetY
+                return { x, y }
+            },
+            // 鍒涘缓鍧愭爣鐐�
+            createPoint: function (pos) {
+                this.tempPoints.push(Object.assign({}, pos))
+                return ++this.num
+            },
+            refresh: function () {
+                this.tempPoints.splice(0, this.tempPoints.length)
+                this.barAreaColor = '#000'
+                this.barAreaBorderColor = '#ddd'
+                this.bindingClick = true
+                this.fontPos.splice(0, this.fontPos.length)
+                this.checkPosArr.splice(0, this.checkPosArr.length)
+                this.num = 1
+                this.getPictrue()
+                this.text = '楠岃瘉澶辫触'
+                this.showRefresh = true
+            },
+
+            // 璇锋眰鑳屾櫙鍥剧墖鍜岄獙璇佸浘鐗�
+            getPictrue() {
+                const data = {
+                    captchaType: this.captchaType
+                }
+                reqGet(data).then(res => {
+                    // eslint-disable-next-line eqeqeq
+                    if (res.repCode == '0000') {
+                        this.pointBackImgBase = res.repData.originalImageBase64
+                        this.backToken = res.repData.token
+                        this.secretKey = res.repData.secretKey
+                        this.poinTextList = res.repData.wordList
+                        this.text = '璇蜂緷娆$偣鍑汇��' + this.poinTextList.join(',') + '銆�'
+                    } else {
+                        this.text = res.repMsg
+                    }
+                })
+            },
+            // 鍧愭爣杞崲鍑芥暟
+            pointTransfrom(pointArr, imgSize) {
+                var newPointArr = pointArr.map(p => {
+                    const x = Math.round(310 * p.x / parseInt(imgSize.imgWidth))
+                    const y = Math.round(155 * p.y / parseInt(imgSize.imgHeight))
+                    return { x, y }
+                })
+                return newPointArr
+            }
+        },
+        watch: {
+            // type鍙樺寲鍒欏叏闈㈠埛鏂�
+            type: {
+                immediate: true,
+                handler() {
+                    this.init()
+                }
+            }
+        },
+        mounted() {
+            // 绂佹鎷栨嫿
+            this.$el.onselectstart = function () {
+                return false
+            }
+        }
+    }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifySlide.vue b/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifySlide.vue
new file mode 100644
index 0000000..8e91a5e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifySlide.vue
@@ -0,0 +1,374 @@
+<template>
+  <div style="position: relative;">
+    <div
+      :style="{height: (parseInt(setSize.imgHeight) + vSpace) + 'px'}"
+      class="verify-img-out"
+      v-if="type === '2'"
+    >
+      <div
+        :style="{width: setSize.imgWidth,
+                 height: setSize.imgHeight,}"
+        class="verify-img-panel">
+        <img :src="'data:image/png;base64,'+backImgBase" alt="" style="width:100%;height:100%;display:block">
+        <div @click="refresh" class="verify-refresh" v-show="showRefresh"><i class="iconfont icon-refresh"></i>
+        </div>
+        <transition name="tips">
+          <span :class="passFlag ?'suc-bg':'err-bg'" class="verify-tips" v-if="tipWords">{{ tipWords }}</span>
+        </transition>
+      </div>
+    </div>
+    <!-- 鍏叡閮ㄥ垎 -->
+    <div
+      :style="{width: setSize.imgWidth,
+               height: barSize.height,
+               'line-height':barSize.height}"
+      class="verify-bar-area">
+      <span class="verify-msg" v-text="text"></span>
+      <div
+        :style="{width: (leftBarWidth!==undefined)?leftBarWidth: barSize.height, height: barSize.height, 'border-color': leftBarBorderColor, transaction: transitionWidth}"
+        class="verify-left-bar">
+        <span class="verify-msg" v-text="finishText"></span>
+        <div
+          :style="{width: barSize.height, height: barSize.height, 'background-color': moveBlockBackgroundColor, left: moveBlockLeft, transition: transitionLeft}"
+          @mousedown="start"
+          @touchstart="start"
+          class="verify-move-block">
+          <i
+            :class="['verify-icon iconfont', iconClass]"
+            :style="{color: iconColor}"></i>
+          <div
+            :style="{'width':Math.floor(parseInt(setSize.imgWidth)*47/310)+ 'px',
+                     'height': setSize.imgHeight,
+                     'top':'-' + (parseInt(setSize.imgHeight) + vSpace) + 'px',
+                     'background-size': setSize.imgWidth + ' ' + setSize.imgHeight,
+            }"
+            class="verify-sub-block"
+            v-if="type === '2'">
+            <img :src="'data:image/png;base64,'+blockBackImgBase" alt="" style="width:100%;height:100%;display:block">
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script type="text/babel">
+    /**
+     * VerifySlide
+     * @description 婊戝潡
+     * */
+    import { aesEncrypt } from './../utils/ase'
+    import { resetSize } from './../utils/util'
+    import { reqGet, reqCheck } from '@/api/modular/system/loginManage'
+
+    //  "captchaType":"blockPuzzle",
+    export default {
+        name: 'VerifySlide',
+        props: {
+            // eslint-disable-next-line vue/require-default-prop
+            captchaType: {
+                type: String
+            },
+            type: {
+                type: String,
+                default: '1'
+            },
+            // 寮瑰嚭寮弍op锛屽浐瀹歠ixed
+            mode: {
+                type: String,
+                default: 'fixed'
+            },
+            vSpace: {
+                type: Number,
+                default: 5
+            },
+            explain: {
+                type: String,
+                default: '鍚戝彸婊戝姩瀹屾垚楠岃瘉'
+            },
+            imgSize: {
+                type: Object,
+                default() {
+                    return {
+                        width: '310px',
+                        height: '155px'
+                    }
+                }
+            },
+            blockSize: {
+                type: Object,
+                default() {
+                    return {
+                        width: '50px',
+                        height: '50px'
+                    }
+                }
+            },
+            barSize: {
+                type: Object,
+                default() {
+                    return {
+                        width: '310px',
+                        height: '40px'
+                    }
+                }
+            }
+        },
+        data() {
+            return {
+                secretKey: '', // 鍚庣杩斿洖鐨勫姞瀵嗙閽� 瀛楁
+                passFlag: '', // 鏄惁閫氳繃鐨勬爣璇�
+                backImgBase: '', // 楠岃瘉鐮佽儗鏅浘鐗�
+                blockBackImgBase: '', // 楠岃瘉婊戝潡鐨勮儗鏅浘鐗�
+                backToken: '', // 鍚庣杩斿洖鐨勫敮涓�token鍊�
+                startMoveTime: '', // 绉诲姩寮�濮嬬殑鏃堕棿
+                endMovetime: '', // 绉诲姩缁撴潫鐨勬椂闂�
+                tipsBackColor: '', // 鎻愮ず璇嶇殑鑳屾櫙棰滆壊
+                tipWords: '',
+                text: '',
+                finishText: '',
+                setSize: {
+                    imgHeight: 0,
+                    imgWidth: 0,
+                    barHeight: 0,
+                    barWidth: 0
+                },
+                top: 0,
+                left: 0,
+                moveBlockLeft: undefined,
+                leftBarWidth: undefined,
+                // 绉诲姩涓牱寮�
+                moveBlockBackgroundColor: undefined,
+                leftBarBorderColor: '#ddd',
+                iconColor: undefined,
+                iconClass: 'icon-right',
+                status: false, // 榧犳爣鐘舵��
+                isEnd: false,		// 鏄楠岃瘉瀹屾垚
+                showRefresh: true,
+                transitionLeft: '',
+                transitionWidth: ''
+            }
+        },
+        computed: {
+            barArea() {
+                return this.$el.querySelector('.verify-bar-area')
+            },
+            resetSize() {
+                return resetSize
+            }
+        },
+        methods: {
+            init() {
+                this.text = this.explain
+                this.getPictrue()
+                this.$nextTick(() => {
+                    const setSize = this.resetSize(this)	// 閲嶆柊璁剧疆瀹藉害楂樺害
+                    for (const key in setSize) {
+                        this.$set(this.setSize, key, setSize[key])
+                    }
+                    this.$parent.$emit('ready', this)
+                })
+
+                var _this = this
+
+                window.removeEventListener('touchmove', function (e) {
+                    _this.move(e)
+                })
+                window.removeEventListener('mousemove', function (e) {
+                    _this.move(e)
+                })
+
+                // 榧犳爣鏉惧紑
+                window.removeEventListener('touchend', function () {
+                    _this.end()
+                })
+                window.removeEventListener('mouseup', function () {
+                    _this.end()
+                })
+
+                window.addEventListener('touchmove', function (e) {
+                    _this.move(e)
+                })
+                window.addEventListener('mousemove', function (e) {
+                    _this.move(e)
+                })
+
+                // 榧犳爣鏉惧紑
+                window.addEventListener('touchend', function () {
+                    _this.end()
+                })
+                window.addEventListener('mouseup', function () {
+                    _this.end()
+                })
+            },
+
+            // 榧犳爣鎸変笅
+            start: function (e) {
+                e = e || window.event
+                if (!e.touches) { // 鍏煎PC绔�
+                    var x = e.clientX
+                } else { // 鍏煎绉诲姩绔�
+                    // eslint-disable-next-line no-redeclare
+                    var x = e.touches[0].pageX
+                }
+                this.startLeft = Math.floor(x - this.barArea.getBoundingClientRect().left)
+                this.startMoveTime = +new Date() // 寮�濮嬫粦鍔ㄧ殑鏃堕棿
+                // eslint-disable-next-line eqeqeq
+                if (this.isEnd == false) {
+                    this.text = ''
+                    this.moveBlockBackgroundColor = '#337ab7'
+                    this.leftBarBorderColor = '#337AB7'
+                    this.iconColor = '#fff'
+                    e.stopPropagation()
+                    this.status = true
+                }
+            },
+            // 榧犳爣绉诲姩
+            move: function (e) {
+                e = e || window.event
+                // eslint-disable-next-line eqeqeq
+                if (this.status && this.isEnd == false) {
+                    if (!e.touches) { // 鍏煎PC绔�
+                        var x = e.clientX
+                    } else { // 鍏煎绉诲姩绔�
+                        // eslint-disable-next-line no-redeclare
+                        var x = e.touches[0].pageX
+                    }
+                    // eslint-disable-next-line camelcase
+                    var bar_area_left = this.barArea.getBoundingClientRect().left
+                    // eslint-disable-next-line camelcase
+                    var move_block_left = x - bar_area_left // 灏忔柟鍧楃浉瀵逛簬鐖跺厓绱犵殑left鍊�
+                    // eslint-disable-next-line camelcase
+                    if (move_block_left >= this.barArea.offsetWidth - parseInt(parseInt(this.blockSize.width) / 2) - 2) {
+                        // eslint-disable-next-line camelcase
+                        move_block_left = this.barArea.offsetWidth - parseInt(parseInt(this.blockSize.width) / 2) - 2
+                    }
+                    // eslint-disable-next-line camelcase
+                    if (move_block_left <= 0) {
+                        // eslint-disable-next-line camelcase
+                        move_block_left = parseInt(parseInt(this.blockSize.width) / 2)
+                    }
+                    // 鎷栧姩鍚庡皬鏂瑰潡鐨刲eft鍊�
+                    // eslint-disable-next-line camelcase
+                    this.moveBlockLeft = (move_block_left - this.startLeft) + 'px'
+                    // eslint-disable-next-line camelcase
+                    this.leftBarWidth = (move_block_left - this.startLeft) + 'px'
+                }
+            },
+
+            // 榧犳爣鏉惧紑
+            end: function () {
+                this.endMovetime = +new Date()
+                var _this = this
+                // 鍒ゆ柇鏄惁閲嶅悎
+                // eslint-disable-next-line eqeqeq
+                if (this.status && this.isEnd == false) {
+                    var moveLeftDistance = parseInt((this.moveBlockLeft || '').replace('px', ''))
+                    moveLeftDistance = moveLeftDistance * 310 / parseInt(this.setSize.imgWidth)
+                    const data = {
+                        captchaType: this.captchaType,
+                        'pointJson': this.secretKey ? aesEncrypt(JSON.stringify({ x: moveLeftDistance, y: 5.0 }), this.secretKey) : JSON.stringify({ x: moveLeftDistance, y: 5.0 }),
+                        'token': this.backToken
+                    }
+                    reqCheck(data).then(res => {
+                        // eslint-disable-next-line eqeqeq
+                        if (res.repCode == '0000') {
+                            this.moveBlockBackgroundColor = '#5cb85c'
+                            this.leftBarBorderColor = '#5cb85c'
+                            this.iconColor = '#fff'
+                            this.iconClass = 'icon-check'
+                            this.showRefresh = false
+                            this.isEnd = true
+                            // eslint-disable-next-line eqeqeq
+                            if (this.mode == 'pop') {
+                                setTimeout(() => {
+                                    this.$parent.clickShow = false
+                                    this.refresh()
+                                }, 1500)
+                            }
+                            this.passFlag = true
+                            this.tipWords = `${((this.endMovetime - this.startMoveTime) / 1000).toFixed(2)}s楠岃瘉鎴愬姛`
+                            var captchaVerification = this.secretKey ? aesEncrypt(this.backToken + '---' + JSON.stringify({ x: moveLeftDistance, y: 5.0 }), this.secretKey) : this.backToken + '---' + JSON.stringify({ x: moveLeftDistance, y: 5.0 })
+                            setTimeout(() => {
+                                this.tipWords = ''
+                                this.$parent.closeBox()
+                                this.$parent.$emit('success', { captchaVerification })
+                            }, 1000)
+                        } else {
+                            this.moveBlockBackgroundColor = '#d9534f'
+                            this.leftBarBorderColor = '#d9534f'
+                            this.iconColor = '#fff'
+                            this.iconClass = 'icon-close'
+                            this.passFlag = false
+                            setTimeout(function () {
+                                _this.refresh()
+                            }, 1000)
+                            this.$parent.$emit('error', this)
+                            this.tipWords = '楠岃瘉澶辫触'
+                            setTimeout(() => {
+                                    this.tipWords = ''
+                            }, 1000)
+                        }
+                    })
+                    this.status = false
+                }
+            },
+
+            refresh: function () {
+                this.showRefresh = true
+                this.finishText = ''
+
+                this.transitionLeft = 'left .3s'
+                this.moveBlockLeft = 0
+
+                this.leftBarWidth = undefined
+                this.transitionWidth = 'width .3s'
+
+                this.leftBarBorderColor = '#ddd'
+                this.moveBlockBackgroundColor = '#fff'
+                this.iconColor = '#000'
+                this.iconClass = 'icon-right'
+                this.isEnd = false
+
+                this.getPictrue()
+                setTimeout(() => {
+                    this.transitionWidth = ''
+                    this.transitionLeft = ''
+                    this.text = this.explain
+                }, 300)
+            },
+
+            // 璇锋眰鑳屾櫙鍥剧墖鍜岄獙璇佸浘鐗�
+            getPictrue() {
+                const data = {
+                    captchaType: this.captchaType
+                }
+                reqGet(data).then(res => {
+                    // eslint-disable-next-line eqeqeq
+                    if (res.repCode == '0000') {
+                        this.backImgBase = res.repData.originalImageBase64
+                        this.blockBackImgBase = res.repData.jigsawImageBase64
+                        this.backToken = res.repData.token
+                        this.secretKey = res.repData.secretKey
+                    } else {
+                        this.tipWords = res.repMsg
+                    }
+                })
+            }
+        },
+        watch: {
+            // type鍙樺寲鍒欏叏闈㈠埛鏂�
+            type: {
+                immediate: true,
+                handler() {
+                    this.init()
+                }
+            }
+        },
+        mounted() {
+            // 绂佹鎷栨嫿
+            this.$el.onselectstart = function () {
+                return false
+            }
+        }
+    }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/ase.js b/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/ase.js
new file mode 100644
index 0000000..7556cd7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/ase.js
@@ -0,0 +1,11 @@
+import CryptoJS from 'crypto-js'
+/**
+ * @word 瑕佸姞瀵嗙殑鍐呭
+ * @keyWord String  鏈嶅姟鍣ㄩ殢鏈鸿繑鍥炵殑鍏抽敭瀛�
+ */
+export function aesEncrypt(word, keyWord = 'XwKsGlMcdPMEhR1B') {
+  var key = CryptoJS.enc.Utf8.parse(keyWord)
+  var srcs = CryptoJS.enc.Utf8.parse(word)
+  var encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 })
+  return encrypted.toString()
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/axios.js b/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/axios.js
new file mode 100644
index 0000000..b98b993
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/axios.js
@@ -0,0 +1,30 @@
+import axios from 'axios'
+
+axios.defaults.baseURL = process.env.BASE_API
+
+const service = axios.create({
+  timeout: 40000,
+  headers: {
+    'X-Requested-With': 'XMLHttpRequest',
+    'Content-Type': 'application/json; charset=UTF-8'
+  }
+})
+service.interceptors.request.use(
+  config => {
+    return config
+  },
+  error => {
+    Promise.reject(error)
+  }
+)
+
+// response interceptor
+service.interceptors.response.use(
+  response => {
+    const res = response.data
+    return res
+  },
+  () => {
+  }
+)
+export default service
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/util.js b/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/util.js
new file mode 100644
index 0000000..f6c5746
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/util.js
@@ -0,0 +1,52 @@
+export function resetSize(vm) {
+    // eslint-disable-next-line camelcase
+    var img_width, img_height, bar_width, bar_height	// 鍥剧墖鐨勫搴︺�侀珮搴︼紝绉诲姩鏉$殑瀹藉害銆侀珮搴�
+
+    var parentWidth = vm.$el.parentNode.offsetWidth || window.offsetWidth
+    var parentHeight = vm.$el.parentNode.offsetHeight || window.offsetHeight
+
+    // eslint-disable-next-line eqeqeq
+    if (vm.imgSize.width.indexOf('%') != -1) {
+        // eslint-disable-next-line camelcase
+        img_width = parseInt(this.imgSize.width) / 100 * parentWidth + 'px'
+    } else {
+        // eslint-disable-next-line camelcase
+        img_width = this.imgSize.width
+    }
+
+    // eslint-disable-next-line eqeqeq
+    if (vm.imgSize.height.indexOf('%') != -1) {
+        // eslint-disable-next-line camelcase
+        img_height = parseInt(this.imgSize.height) / 100 * parentHeight + 'px'
+    } else {
+        // eslint-disable-next-line camelcase
+        img_height = this.imgSize.height
+    }
+
+    // eslint-disable-next-line eqeqeq
+    if (vm.barSize.width.indexOf('%') != -1) {
+        // eslint-disable-next-line camelcase
+        bar_width = parseInt(this.barSize.width) / 100 * parentWidth + 'px'
+    } else {
+        // eslint-disable-next-line camelcase
+        bar_width = this.barSize.width
+    }
+
+    // eslint-disable-next-line eqeqeq
+    if (vm.barSize.height.indexOf('%') != -1) {
+        // eslint-disable-next-line camelcase
+        bar_height = parseInt(this.barSize.height) / 100 * parentHeight + 'px'
+    } else {
+        // eslint-disable-next-line camelcase
+        bar_height = this.barSize.height
+    }
+
+    return { imgWidth: img_width, imgHeight: img_height, barWidth: bar_width, barHeight: bar_height }
+}
+
+// eslint-disable-next-line camelcase
+export const _code_chars = [1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
+// eslint-disable-next-line camelcase
+export const _code_color1 = ['#fffff0', '#f0ffff', '#f0fff0', '#fff0f0']
+// eslint-disable-next-line camelcase
+export const _code_color2 = ['#FF0033', '#006699', '#993366', '#FF9900', '#66CC66', '#FF33CC']
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/xnComponents/XCard.vue b/iWare_RawMaterialWarehouse_Web/src/components/xnComponents/XCard.vue
new file mode 100644
index 0000000..4fdb719
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/xnComponents/XCard.vue
@@ -0,0 +1,16 @@
+<template>
+  <a-card :bordered="false" :bodyStyle="tstyle">
+    <slot name="content"></slot>
+  </a-card>
+</template>
+
+<script>
+    export default {
+        name: 'XCard',
+      data() {
+        return {
+          tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' }
+        }
+      }
+    }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/config/defaultSettings.js b/iWare_RawMaterialWarehouse_Web/src/config/defaultSettings.js
new file mode 100644
index 0000000..48e7d61
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/config/defaultSettings.js
@@ -0,0 +1,38 @@
+/**
+ * 椤圭洰榛樿閰嶇疆椤�
+ * primaryColor - 榛樿涓婚鑹�, 濡傛灉淇敼棰滆壊涓嶇敓鏁堬紝璇锋竻鐞� localStorage
+ * navTheme - sidebar theme ['dark', 'light'] 涓ょ涓婚
+ * colorWeak - 鑹茬洸妯″紡
+ * layout - 鏁翠綋甯冨眬鏂瑰紡 ['sidemenu', 'topmenu'] 涓ょ甯冨眬
+ * fixedHeader - 鍥哄畾 Header : boolean
+ * fixSiderbar - 鍥哄畾宸︿晶鑿滃崟鏍� 锛� boolean
+ * autoHideHeader - 鍚戜笅婊氬姩鏃讹紝闅愯棌 Header : boolean
+ * contentWidth - 鍐呭鍖哄竷灞�锛� 娴佸紡 |  鍥哄畾
+ *
+ * storageOptions: {} - Vue-ls 鎻掍欢閰嶇疆椤� (localStorage/sessionStorage)
+ * production: 鍙橀噺鏆傚厛璁惧畾涓� false锛岀洰鐨勬槸鍚勭鐜閮芥甯告樉绀鸿缃娊灞夛紝鐪熷疄鐜璇锋斁寮�娉ㄩ噴
+ *
+ *
+ */
+
+export default {
+  primaryColor: '#FA541C', // primary color of ant design
+  navTheme: 'light', // theme for nav menu
+  layout: 'sidemenu', // nav menu position: sidemenu or topmenu
+  contentWidth: 'Fixed', // layout of content: Fluid or Fixed, only works when layout is topmenu
+  fixedHeader: true, // sticky header
+  fixSiderbar: true, // sticky siderbar
+  autoHideHeader: false, //  auto hide header
+  colorWeak: false,
+  multiTab: false,
+  crumbsSate: false,
+  production: process.env.NODE_ENV === 'production' && process.env.VUE_APP_PREVIEW !== 'true',
+  // vue-ls options
+  storageOptions: {
+    namespace: 'pro__', // key prefix
+    name: 'ls', // name variable Vue.[ls] or this.[$ls],
+    storage: 'local' // storage name session, local, memory
+  }
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/config/router.config.js b/iWare_RawMaterialWarehouse_Web/src/config/router.config.js
new file mode 100644
index 0000000..cf09871
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/config/router.config.js
@@ -0,0 +1,98 @@
+// eslint-disable-next-line
+import { UserLayout, BasicLayout, RouteView, BlankLayout, PageView } from '@/layouts'
+import { bxAnaalyse } from '@/core/icons'
+
+export const asyncRouterMap = [
+
+  {
+    path: '/',
+    name: 'MenuIndex.vue',
+    component: BasicLayout,
+    meta: { title: '棣栭〉' },
+    redirect: '/dashboard/workplace',
+    children: [
+      // dashboard
+      {
+        path: 'dashboard',
+        name: 'dashboard',
+        redirect: '/dashboard/workplace',
+        component: RouteView,
+        // eslint-disable-next-line standard/object-curly-even-spacing
+        meta: { title: '浠〃鐩�', keepAlive: true, icon: bxAnaalyse /* permission: [ 'dashboard' ] */ },
+        children: [
+          {
+            path: 'analysis/:pageNo([1-9]\\d*)?',
+            name: 'Analysis',
+            component: () => import('@/views/system/dashboard/Analysis'),
+            // eslint-disable-next-line standard/object-curly-even-spacing
+            meta: { title: '鍒嗘瀽椤�', keepAlive: true /* permission: [ 'dashboard' ] */ }
+          },
+          {
+            path: 'workplace',
+            name: 'Workplace',
+            component: () => import('@/views/system/dashboard/Workplace'),
+            // eslint-disable-next-line standard/object-curly-even-spacing
+            meta: { title: '宸ヤ綔鍙�', keepAlive: false/*, permission: [ 'dashboard' ] */ }
+          }
+        ]
+      }
+    ]
+  },
+  {
+    path: '*', redirect: '/404', hidden: true
+  }
+]
+
+/**
+ * 鍩虹璺敱
+ * @type { *[] }
+ */
+export const constantRouterMap = [
+  {
+    path: '/user',
+    component: UserLayout,
+    redirect: '/user/login',
+    hidden: true,
+    children: [
+      {
+        path: 'login',
+        name: 'login',
+        component: () => import(/* webpackChunkName: "user" */ '@/views/userLoginReg/Login')
+      },
+      {
+        path: 'register',
+        name: 'register',
+        component: () => import(/* webpackChunkName: "user" */ '@/views/userLoginReg/Register')
+      },
+      {
+        path: 'register-result',
+        name: 'registerResult',
+        component: () => import(/* webpackChunkName: "user" */ '@/views/userLoginReg/RegisterResult')
+      },
+      {
+        path: 'recover',
+        name: 'recover',
+        component: undefined
+      }
+    ]
+  },
+
+  {
+    path: '/test',
+    component: BlankLayout,
+    redirect: '/test/home',
+    children: [
+      {
+        path: 'home',
+        name: 'TestHome',
+        component: () => import('@/views/Home')
+      }
+    ]
+  },
+
+  {
+    path: '/404',
+    component: () => import(/* webpackChunkName: "fail" */ '@/views/system/exception/404')
+  }
+
+]
diff --git a/iWare_RawMaterialWarehouse_Web/src/core/bootstrap.js b/iWare_RawMaterialWarehouse_Web/src/core/bootstrap.js
new file mode 100644
index 0000000..58cb248
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/core/bootstrap.js
@@ -0,0 +1,41 @@
+/*
+ * @Author: your name
+ * @Date: 2021-05-18 23:01:53
+ * @LastEditTime: 2021-05-19 00:57:22
+ * @LastEditors: your name
+ * @Description: In User Settings Edit
+ * @FilePath: \frontend\src\core\bootstrap.js
+ */
+import Vue from 'vue'
+import store from '@/store/'
+import {
+  ACCESS_TOKEN,
+  DEFAULT_COLOR,
+  DEFAULT_THEME,
+  DEFAULT_LAYOUT_MODE,
+  DEFAULT_COLOR_WEAK,
+  SIDEBAR_TYPE,
+  DEFAULT_FIXED_HEADER,
+  DEFAULT_FIXED_HEADER_HIDDEN,
+  DEFAULT_FIXED_SIDEMENU,
+  DEFAULT_CONTENT_WIDTH_TYPE,
+  DEFAULT_MULTI_TAB,
+  DEFAULT_CRUMBS_STATE
+} from '@/store/mutation-types'
+
+import config from '@/config/defaultSettings'
+
+export default function Initializer () {
+  store.commit('SET_SIDEBAR_TYPE', Vue.ls.get(SIDEBAR_TYPE, true))
+  store.commit('TOGGLE_THEME', Vue.ls.get(DEFAULT_THEME, config.navTheme))
+  store.commit('TOGGLE_LAYOUT_MODE', Vue.ls.get(DEFAULT_LAYOUT_MODE, config.layout))
+  store.commit('TOGGLE_FIXED_HEADER', Vue.ls.get(DEFAULT_FIXED_HEADER, config.fixedHeader))
+  store.commit('TOGGLE_FIXED_SIDERBAR', Vue.ls.get(DEFAULT_FIXED_SIDEMENU, config.fixSiderbar))
+  store.commit('TOGGLE_CONTENT_WIDTH', Vue.ls.get(DEFAULT_CONTENT_WIDTH_TYPE, config.contentWidth))
+  store.commit('TOGGLE_FIXED_HEADER_HIDDEN', Vue.ls.get(DEFAULT_FIXED_HEADER_HIDDEN, config.autoHideHeader))
+  store.commit('TOGGLE_WEAK', Vue.ls.get(DEFAULT_COLOR_WEAK, config.colorWeak))
+  store.commit('TOGGLE_COLOR', Vue.ls.get(DEFAULT_COLOR, config.primaryColor))
+  store.commit('TOGGLE_MULTI_TAB', Vue.ls.get(DEFAULT_MULTI_TAB, config.multiTab))
+  store.commit('TOGGLE_CRUMBS_STATE', Vue.ls.get(DEFAULT_CRUMBS_STATE, config.crumbsSate))
+  store.commit('SET_TOKEN', Vue.ls.get(ACCESS_TOKEN))
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/core/directives/action.js b/iWare_RawMaterialWarehouse_Web/src/core/directives/action.js
new file mode 100644
index 0000000..bdc9ec0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/core/directives/action.js
@@ -0,0 +1,34 @@
+import Vue from 'vue'
+import store from '@/store'
+
+/**
+ * Action 鏉冮檺鎸囦护
+ * 鎸囦护鐢ㄦ硶锛�
+ *  - 鍦ㄩ渶瑕佹帶鍒� action 绾у埆鏉冮檺鐨勭粍浠朵笂浣跨敤 v-action:[method] , 濡備笅锛�
+ *    <i-button v-action:add >娣诲姞鐢ㄦ埛</a-button>
+ *    <a-button v-action:delete>鍒犻櫎鐢ㄦ埛</a-button>
+ *    <a v-action:edit @click="edit(record)">淇敼</a>
+ *
+ *  - 褰撳墠鐢ㄦ埛娌℃湁鏉冮檺鏃讹紝缁勪欢涓婁娇鐢ㄤ簡璇ユ寚浠ゅ垯浼氳闅愯棌
+ *  - 褰撳悗鍙版潈闄愯窡 pro 鎻愪緵鐨勬ā寮忎笉鍚屾椂锛屽彧闇�瑕侀拡瀵硅繖閲岀殑鏉冮檺杩囨护杩涜淇敼鍗冲彲
+ *
+ *  @see https://github.com/sendya/ant-design-pro-vue/pull/53
+ */
+const action = Vue.directive('action', {
+  inserted: function (el, binding, vnode) {
+    const actionName = binding.arg
+    const roles = store.getters.roles
+    const elVal = vnode.context.$route.meta.permission
+    const permissionId = elVal instanceof String && [elVal] || elVal
+    roles.permissions.forEach(p => {
+      if (!permissionId.includes(p.permissionId)) {
+        return
+      }
+      if (p.actionList && !p.actionList.includes(actionName)) {
+        el.parentNode && el.parentNode.removeChild(el) || (el.style.display = 'none')
+      }
+    })
+  }
+})
+
+export default action
diff --git a/iWare_RawMaterialWarehouse_Web/src/core/icons.js b/iWare_RawMaterialWarehouse_Web/src/core/icons.js
new file mode 100644
index 0000000..46b7261
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/core/icons.js
@@ -0,0 +1,11 @@
+/**
+ * Custom icon list
+ * All icons are loaded here for easy management
+ * @see https://vue.ant.design/components/icon/#Custom-Font-Icon
+ *
+ * 鑷畾涔夊浘鏍囧姞杞借〃
+ * 鎵�鏈夊浘鏍囧潎浠庤繖閲屽姞杞斤紝鏂逛究绠$悊
+ */
+import bxAnaalyse from '@/assets/icons/bx-analyse.svg?inline' // path to your '*.svg?inline' file.
+
+export { bxAnaalyse }
diff --git a/iWare_RawMaterialWarehouse_Web/src/core/lazy_lib/components_use.js b/iWare_RawMaterialWarehouse_Web/src/core/lazy_lib/components_use.js
new file mode 100644
index 0000000..a6b1b38
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/core/lazy_lib/components_use.js
@@ -0,0 +1,115 @@
+/**
+ * 璇ユ枃浠舵槸涓轰簡鎸夐渶鍔犺浇锛屽墧闄ゆ帀浜嗕竴浜涗笉闇�瑕佺殑妗嗘灦缁勪欢銆�
+ * 鍑忓皯浜嗙紪璇戞敮鎸佸簱鍖呭ぇ灏�
+ * @author yubaoshan
+ * 褰撻渶瑕佹洿澶氱粍浠朵緷璧栨椂锛屽湪璇ユ枃浠跺姞鍏ュ嵆鍙�
+ */
+import Vue from 'vue'
+import {
+  ConfigProvider,
+  Layout,
+  Input,
+  InputNumber,
+  Button,
+  Switch,
+  Radio,
+  Checkbox,
+  Select,
+  Card,
+  Form,
+  Row,
+  Col,
+  Modal,
+  Table,
+  Tabs,
+  Icon,
+  Badge,
+  Popover,
+  Dropdown,
+  List,
+  Avatar,
+  Breadcrumb,
+  Steps,
+  Spin,
+  Menu,
+  Drawer,
+  Tooltip,
+  Alert,
+  Tag,
+  Divider,
+  DatePicker,
+  TimePicker,
+  Upload,
+  Progress,
+  Skeleton,
+  Popconfirm,
+  message,
+  notification,
+  TreeSelect,
+  Tree,
+  Transfer,
+  Empty,
+  PageHeader,
+  Descriptions,
+  Result,
+  Cascader,
+  Collapse,
+} from 'ant-design-vue'
+// import VueCropper from 'vue-cropper'
+
+Vue.use(ConfigProvider)
+Vue.use(Layout)
+Vue.use(Input)
+Vue.use(InputNumber)
+Vue.use(Button)
+Vue.use(Switch)
+Vue.use(Radio)
+Vue.use(Checkbox)
+Vue.use(Select)
+Vue.use(Card)
+Vue.use(Form)
+Vue.use(Row)
+Vue.use(Col)
+Vue.use(Modal)
+Vue.use(Table)
+Vue.use(Tabs)
+Vue.use(Icon)
+Vue.use(Badge)
+Vue.use(Popover)
+Vue.use(Dropdown)
+Vue.use(List)
+Vue.use(Avatar)
+Vue.use(Breadcrumb)
+Vue.use(Steps)
+Vue.use(Spin)
+Vue.use(Menu)
+Vue.use(Drawer)
+Vue.use(Tooltip)
+Vue.use(Alert)
+Vue.use(Tag)
+Vue.use(Divider)
+Vue.use(DatePicker)
+Vue.use(TimePicker)
+Vue.use(Upload)
+Vue.use(Progress)
+Vue.use(Skeleton)
+Vue.use(Popconfirm)
+// Vue.use(VueCropper)
+Vue.use(notification)
+Vue.use(TreeSelect)
+Vue.use(Tree)
+Vue.use(Transfer)
+Vue.use(Empty)
+Vue.use(PageHeader)
+Vue.use(Descriptions)
+Vue.use(Result)
+Vue.use(Cascader)
+Vue.use(Collapse)
+
+Vue.prototype.$confirm = Modal.confirm
+Vue.prototype.$message = message
+Vue.prototype.$notification = notification
+Vue.prototype.$info = Modal.info
+Vue.prototype.$success = Modal.success
+Vue.prototype.$error = Modal.error
+Vue.prototype.$warning = Modal.warning
diff --git a/iWare_RawMaterialWarehouse_Web/src/core/lazy_use.js b/iWare_RawMaterialWarehouse_Web/src/core/lazy_use.js
new file mode 100644
index 0000000..efd2047
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/core/lazy_use.js
@@ -0,0 +1,27 @@
+import Vue from 'vue'
+import VueStorage from 'vue-ls'
+import config from '@/config/defaultSettings'
+
+// base library
+import '@/core/lazy_lib/components_use'
+import Viser from 'viser-vue'
+
+// ext library
+import VueClipboard from 'vue-clipboard2'
+import VueCropper from 'vue-cropper'
+import MultiTab from '@/components/MultiTab'
+import PageLoading from '@/components/PageLoading'
+import PermissionHelper from '@/utils/helper/permission'
+import './directives/action'
+
+VueClipboard.config.autoSetContainer = true
+
+Vue.use(Viser)
+Vue.use(MultiTab)
+Vue.use(PageLoading)
+Vue.use(VueStorage, config.storageOptions)
+Vue.use(VueClipboard)
+Vue.use(PermissionHelper)
+Vue.use(VueCropper)
+
+process.env.NODE_ENV !== 'production' && console.warn('[antd-pro] NOTICE: Antd use lazy-load.')
diff --git a/iWare_RawMaterialWarehouse_Web/src/core/use.js b/iWare_RawMaterialWarehouse_Web/src/core/use.js
new file mode 100644
index 0000000..a17c2fc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/core/use.js
@@ -0,0 +1,30 @@
+import Vue from 'vue'
+import VueStorage from 'vue-ls'
+import config from '@/config/defaultSettings'
+
+// base library
+import Antd from 'ant-design-vue'
+import Viser from 'viser-vue'
+import VueCropper from 'vue-cropper'
+import 'ant-design-vue/dist/antd.less'
+
+// ext library
+import VueClipboard from 'vue-clipboard2'
+import MultiTab from '@/components/MultiTab'
+import PageLoading from '@/components/PageLoading'
+import PermissionHelper from '@/utils/helper/permission'
+// import '@/components/use'
+import './directives/action'
+
+VueClipboard.config.autoSetContainer = true
+
+Vue.use(Antd)
+Vue.use(Viser)
+Vue.use(MultiTab)
+Vue.use(PageLoading)
+Vue.use(VueStorage, config.storageOptions)
+Vue.use(VueClipboard)
+Vue.use(PermissionHelper)
+Vue.use(VueCropper)
+
+process.env.NODE_ENV !== 'production' && console.warn('[antd-pro] WARNING: Antd now use fulled imported.')
diff --git a/iWare_RawMaterialWarehouse_Web/src/layouts/BasicLayout.vue b/iWare_RawMaterialWarehouse_Web/src/layouts/BasicLayout.vue
new file mode 100644
index 0000000..9a39754
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/layouts/BasicLayout.vue
@@ -0,0 +1,203 @@
+<template>
+  <a-layout :class="['layout', device]">
+    <!-- SideMenu -->
+    <a-drawer
+      v-if="isMobile()"
+      placement="left"
+      :wrapClassName="`drawer-sider ${navTheme}`"
+      :closable="false"
+      :visible="collapsed"
+      @close="drawerClose"
+    >
+      <side-menu
+        mode="inline"
+        :menus="menus"
+        :theme="navTheme"
+        :collapsed="false"
+        :collapsible="true"
+        @menuSelect="menuSelect"
+      ></side-menu>
+    </a-drawer>
+
+    <side-menu
+      v-else-if="isSideMenu()"
+      mode="inline"
+      :menus="menus"
+      :theme="navTheme"
+      :collapsed="collapsed"
+      :collapsible="true"
+    ></side-menu>
+
+    <a-layout :class="[layoutMode, `content-width-${contentWidth}`]" :style="{ paddingLeft: contentPaddingLeft, minHeight: '100vh' }">
+      <!-- layout header -->
+      <global-header
+        :mode="layoutMode"
+        :menus="menus"
+        :theme="navTheme"
+        :collapsed="collapsed"
+        :device="device"
+        @toggle="toggle"
+      />
+
+      <!-- layout content -->
+      <a-layout-content :style="{display:'flex',flexDirection:'column',paddingTop: fixedHeader ? '55px' : '0'}">
+        <div style="flex-shrink:0;" v-if="multiTab">
+          <multi-tab></multi-tab>
+        </div>
+        <div style="flex-grow:1;height:10px;display:flex;flex-direction:column;">
+          <div style="flex-shrink:0;background-color:#fff;padding:8px;" v-if="crumbsState">
+            <s-breadcrumb />
+          </div>
+          <div style="flex-grow:1;height:10px;">
+            <transition name="page-transition">
+              <route-view />
+            </transition>
+          </div>
+        </div>
+      </a-layout-content>
+      <!-- <a-layout-content :style="{ height: '100%', margin: '24px 24px 0', paddingTop: fixedHeader ? '55px' : '0' }">
+        <multi-tab v-if="multiTab"></multi-tab>
+        <transition name="page-transition">
+          <route-view />
+        </transition>
+      </a-layout-content> -->
+
+      <!-- layout footer -->
+      <a-layout-footer>
+        <global-footer />
+      </a-layout-footer>
+
+      <!-- Setting Drawer (show in development mode) -->
+      <setting-drawer v-if="!production"></setting-drawer>
+    </a-layout>
+  </a-layout>
+
+</template>
+
+<script>
+import { triggerWindowResizeEvent } from '@/utils/util'
+import { mapState, mapActions } from 'vuex'
+import { mixin, mixinDevice } from '@/utils/mixin'
+import config from '@/config/defaultSettings'
+
+import RouteView from './RouteView'
+import SideMenu from '@/components/Menu/SideMenu'
+import GlobalHeader from '@/components/GlobalHeader'
+import GlobalFooter from '@/components/GlobalFooter'
+import SettingDrawer from '@/components/SettingDrawer'
+import Breadcrumb from '@/components/tools/Breadcrumb'
+import { convertRoutes } from '@/utils/routeConvert'
+
+export default {
+  name: 'BasicLayout',
+  mixins: [mixin, mixinDevice],
+  components: {
+    RouteView,
+    SideMenu,
+    GlobalHeader,
+    GlobalFooter,
+    SettingDrawer,
+    's-breadcrumb': Breadcrumb
+  },
+  data () {
+    return {
+      production: config.production,
+      collapsed: false,
+      menus: []
+    }
+  },
+  computed: {
+    ...mapState({
+      // 鍔ㄦ�佷富璺敱
+      mainMenu: state => state.permission.addRouters
+    }),
+    contentPaddingLeft () {
+      if (!this.fixSidebar || this.isMobile()) {
+        return '0'
+      }
+      if (this.sidebarOpened) {
+        return '230px'
+      }
+      return '80px'
+    }
+  },
+  watch: {
+    sidebarOpened (val) {
+      this.collapsed = !val
+    },
+    // 鑿滃崟鍙樺寲
+    mainMenu (val) {
+      this.setMenus()
+    }
+  },
+  created () {
+    this.setMenus()
+    /* const routes = convertRoutes(this.mainMenu.find(item => item.path === '/'))
+    this.menus = (routes && routes.children) || [] */
+    this.collapsed = !this.sidebarOpened
+  },
+  mounted () {
+    const userAgent = navigator.userAgent
+    if (userAgent.indexOf('Edge') > -1) {
+      this.$nextTick(() => {
+        this.collapsed = !this.collapsed
+        setTimeout(() => {
+          this.collapsed = !this.collapsed
+        }, 16)
+      })
+    }
+  },
+  methods: {
+    ...mapActions(['setSidebar']),
+    // 閲嶆柊鐢熸垚
+    setMenus () {
+      const routes = convertRoutes(this.mainMenu.find(item => item.path === '/'))
+      this.menus = (routes && routes.children) || []
+    },
+    toggle () {
+      this.collapsed = !this.collapsed
+      this.setSidebar(!this.collapsed)
+      triggerWindowResizeEvent()
+    },
+    paddingCalc () {
+      let left = ''
+      if (this.sidebarOpened) {
+        left = this.isDesktop() ? '230px' : '80px'
+      } else {
+        left = (this.isMobile() && '0') || ((this.fixSidebar && '80px') || '0')
+      }
+      return left
+    },
+    menuSelect () {
+    },
+    drawerClose () {
+      this.collapsed = false
+    }
+  }
+}
+</script>
+
+<style lang="less">
+/*
+ * The following styles are auto-applied to elements with
+ * transition="page-transition" when their visibility is toggled
+ * by Vue.js.
+ *
+ * You can easily play with the page transition by editing
+ * these styles.
+ */
+
+.page-transition-enter {
+  opacity: 0;
+}
+
+.page-transition-leave-active {
+  opacity: 0;
+}
+
+.page-transition-enter .page-transition-container,
+.page-transition-leave-active .page-transition-container {
+  -webkit-transform: scale(1.1);
+  transform: scale(1.1);
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/layouts/BlankLayout.vue b/iWare_RawMaterialWarehouse_Web/src/layouts/BlankLayout.vue
new file mode 100644
index 0000000..1bfbfbf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/layouts/BlankLayout.vue
@@ -0,0 +1,16 @@
+<template>
+  <div>
+    <router-view />
+  </div>
+</template>
+
+<script>
+
+export default {
+  name: 'BlankLayout'
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/layouts/Iframe.vue b/iWare_RawMaterialWarehouse_Web/src/layouts/Iframe.vue
new file mode 100644
index 0000000..e2526a4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/layouts/Iframe.vue
@@ -0,0 +1,29 @@
+
+<script>
+  import Vue from 'vue'
+  import { ACCESS_TOKEN } from '@/store/mutation-types'
+
+    export default {
+      name: 'Iframe',
+      data () {
+          return {
+          }
+      },
+      render () {
+        const { $route: { meta: { link } } } = this
+        if ({ link }.link === '') {
+           return '404'
+        }
+        let url = ''
+        if ({ link }.link.indexOf('token=') > -1) {
+          url = { link }.link + Vue.ls.get(ACCESS_TOKEN)
+        } else {
+          url = { link }.link
+        }
+        let height = ''
+        const deviceHeight = document.documentElement.clientHeight
+        height = (Number(deviceHeight) - 260) + 'px'
+        return <iframe id="iframe" height={height} src={url} style="width:100%;overflow:hidden;" frameBorder="0"></iframe>
+      }
+   }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/layouts/PageView.vue b/iWare_RawMaterialWarehouse_Web/src/layouts/PageView.vue
new file mode 100644
index 0000000..6ecd2ee
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/layouts/PageView.vue
@@ -0,0 +1,32 @@
+<template>
+  <div style="height:100%;overflow:auto;">
+    <div class="content" style="margin:0;height:100%;">
+      <div class="page-header-index-wide" style="height:100%;">
+        <slot>
+          <!-- keep-alive  -->
+          <keep-alive v-if="multiTab">
+            <router-view ref="content" />
+          </keep-alive>
+          <router-view v-else ref="content" />
+        </slot>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { mapState } from 'vuex'
+
+export default {
+  name: 'PageView',
+  computed: {
+    ...mapState({
+      multiTab: state => state.app.multiTab
+    })
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/layouts/RouteView.vue b/iWare_RawMaterialWarehouse_Web/src/layouts/RouteView.vue
new file mode 100644
index 0000000..93081e2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/layouts/RouteView.vue
@@ -0,0 +1,54 @@
+<script>
+export default {
+  name: 'RouteView',
+  props: {
+    keepAlive: {
+      type: Boolean,
+      default: true
+    }
+  },
+  data () {
+    return {}
+  },
+  render () {
+    const { $route: { meta }, $store: { getters } } = this
+    const inKeep = (
+      <div style="height:100%;box-sizing:border-box;padding:24px 24px 0 24px;overflow:auto;">
+        <div class="content" style="margin:0;height:100%;">
+          <div class="page-header-index-wide" style="height:100%;">
+            <keep-alive>
+              <router-view />
+            </keep-alive>
+          </div>
+        </div>
+      </div>
+    )
+    
+    /* const inKeep = (
+      <keep-alive>
+        <router-view />
+      </keep-alive>
+    ) */
+    
+    const notKeep = (
+      <div style="height:100%;box-sizing:border-box;padding:24px 24px 0 24px;overflow:auto;">
+        <div class="content" style="margin:0;height:100%;">
+          <div class="page-header-index-wide" style="height:100%;">
+            <router-view />
+          </div>
+        </div>
+      </div>
+    )
+    /* const notKeep = (
+      <router-view />
+    ) */
+    // 杩欓噷澧炲姞浜� multiTab 鐨勫垽鏂紝褰撳紑鍚簡 multiTab 鏃�
+    // 搴斿綋鍏ㄩ儴缁勪欢鐨嗙紦瀛橈紝鍚﹀垯浼氬鑷村垏鎹㈤〉闈㈠悗椤甸潰杩樺師鎴愬師濮嬬姸鎬�
+    // 鑻ョ‘瀹炰笉闇�瑕侊紝鍙敼涓� return meta.keepAlive ? inKeep : notKeep
+    if (!getters.multiTab && !meta.keepAlive) {
+      return notKeep
+    }
+    return this.keepAlive || getters.multiTab || meta.keepAlive ? inKeep : notKeep
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/layouts/UserLayout.vue b/iWare_RawMaterialWarehouse_Web/src/layouts/UserLayout.vue
new file mode 100644
index 0000000..18d8c6a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/layouts/UserLayout.vue
@@ -0,0 +1,164 @@
+<template>
+  <div id="userLayout" :class="['user-layout-wrapper', device]">
+    <div class="container">
+      <div class="login-form-x">
+        <div class="login-form-y">
+          <div class="top">
+            <div class="header">
+              <div class="logo">
+                <img src="~@/assets/logo.jpg" alt="logo">
+              </div>
+              <span class="title">鎴戠殑寮�鍙戞ā鏉�</span>
+            </div>
+          </div>
+          
+          <route-view></route-view>
+        </div>
+      </div>
+      
+
+      <div class="footer">
+        <!-- <div class="links">
+          <a href="_self">甯姪</a>
+          <a href="_self">闅愮</a>
+          <a href="_self">鏉℃</a>
+        </div> -->
+        <div class="copyright">
+          <p>Copyright@浼熸湰鏅鸿兘鏈虹數(涓婃捣)鑲′唤鏈夐檺鍏徃All Right Reserved</p>
+          <!-- <p>澶囨鍙�:鑻廔CP 澶� 05012752   鑻忓畨鍏綉瀹夊 32028202000467鍙�</p> -->
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import RouteView from './RouteView'
+import { mixinDevice } from '@/utils/mixin'
+
+export default {
+  name: 'UserLayout',
+  components: { RouteView },
+  mixins: [mixinDevice],
+  data () {
+    return {}
+  },
+  mounted () {
+    document.body.classList.add('userLayout')
+  },
+  beforeDestroy () {
+    document.body.classList.remove('userLayout')
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  #userLayout.user-layout-wrapper {
+    height: 100%;
+
+    &.mobile {
+      .container {
+        .main {
+          max-width: 368px;
+          width: 98%;
+        }
+      }
+    }
+
+    .container {
+      width: 100%;
+      min-height: 100%;
+      background-color: #ffffff;
+      background-image: url("../assets/login_bk.png");
+      background-attachment: fixed;
+      background-repeat: no-repeat;
+      background-position: center center;
+      background-size: 100% 100%;
+      padding: 110px 0 144px;
+      position: relative;
+      display: flex;
+      align-items: center;
+      .login-form-x{
+        width:100%;
+        box-sizing: border-box;
+        display: flex;
+        padding-right: 12%;
+        justify-content: flex-end;
+        .login-form-y{
+          display: flex;
+          flex-direction: column;
+          min-width: 260px;
+          width: 368px;
+          padding:20px 20px 10px 20px;
+          background-color: #fff;
+          border-radius: 20px;
+          opacity: 0.8;
+        }
+      }
+        
+      a {
+        text-decoration: none;
+      }
+
+      .top {
+        width: 100%;
+        margin-bottom: 20px;
+        .header {
+          display:flex;
+          flex-direction: column;
+          justify-content: center;
+
+          .logo {
+            display:flex;
+            justify-content: center;
+            height:40px;
+            img{
+              height:100%;
+              width:auto;
+            }
+          }
+
+          .title {
+            font-size: 33px;
+            color: rgba(0, 0, 0, .85);
+            font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif;
+            font-weight: 600;
+            display:flex;
+            justify-content: center;
+          }
+        }
+      }
+
+      .main {
+        width: 100%;
+      }
+
+      .footer {
+        position: absolute;
+        width: 100%;
+        bottom: 0;
+        padding: 0 16px;
+        margin: 48px 0 12px;
+        text-align: center;
+        color: #999;
+
+        .links {
+          margin-bottom: 8px;
+          font-size: 14px;
+          a {
+            transition: all 0.3s;
+            &:not(:last-child) {
+              margin-right: 40px;
+            }
+          }
+        }
+        .copyright {
+          font-size: 14px;
+          p{
+            margin-bottom: 0;
+          }
+        }
+      }
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/layouts/index.js b/iWare_RawMaterialWarehouse_Web/src/layouts/index.js
new file mode 100644
index 0000000..a7ab0c9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/layouts/index.js
@@ -0,0 +1,8 @@
+import UserLayout from './UserLayout'
+import BlankLayout from './BlankLayout'
+import BasicLayout from './BasicLayout'
+import RouteView from './RouteView'
+import PageView from './PageView'
+import Iframe from './Iframe'
+
+export { UserLayout, BasicLayout, BlankLayout, RouteView, PageView, Iframe }
diff --git a/iWare_RawMaterialWarehouse_Web/src/main.js b/iWare_RawMaterialWarehouse_Web/src/main.js
new file mode 100644
index 0000000..e1ef354
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/main.js
@@ -0,0 +1,50 @@
+// with polyfills
+import 'core-js/stable'
+import 'regenerator-runtime/runtime'
+import Vue from 'vue'
+import App from './App.vue'
+import router from './router'
+import store from './store/'
+import { VueAxios } from './utils/request'
+// WARNING: `mockjs` NOT SUPPORT `IE` PLEASE DO NOT USE IN `production` ENV.
+import './mock'
+
+import bootstrap from './core/bootstrap'
+import './core/lazy_use'
+import './permission'
+import './utils/filter'
+import './components/global.less'
+//import socket from './utils/socket'
+import { Dialog } from '@/components'
+import { hasBtnPermission } from './utils/permissions'
+import { sysApplication } from './utils/applocation'
+import 'k-form-design/packages/core/useComponents'
+import KFormDesign from 'k-form-design/packages/use.js'
+import 'k-form-design/lib/k-form-design.css'
+import 'ant-design-vue/dist/antd.less'
+import dataV from '@jiaminghi/data-view'
+import createLoading from './components/Loading'
+import { getObjectType } from './utils/util'
+import checkVersion from './utils/checkVersion'
+
+Vue.use(KFormDesign)
+Vue.use(dataV)
+//Vue.use(socket, '/hubs/chatHub')
+
+Vue.use(VueAxios)
+Vue.use(Dialog)
+Vue.prototype.hasPerm = hasBtnPermission
+Vue.prototype.applocation = sysApplication
+Vue.prototype.$getObjectType = getObjectType
+Vue.prototype.$loading = createLoading()
+Vue.config.productionTip = false
+
+new Vue({
+  router,
+  store,
+  created: bootstrap,
+  render: h => h(App)
+}).$mount('#app')
+
+
+checkVersion();//鍚姩鐗堟湰妫�鏌ュ畾鏃跺櫒
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/mixins/handleTableHt.js b/iWare_RawMaterialWarehouse_Web/src/mixins/handleTableHt.js
new file mode 100644
index 0000000..12af838
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mixins/handleTableHt.js
@@ -0,0 +1,141 @@
+/***
+<div ref="boxOutWrap" class="boxOutWrap">
+
+  <div ref="boxForm" class="boxForm"> 
+      <a-card :bordered="false"
+
+     <template class="table-operator" slot="operator" v-if="hasPerm('TestStudent2:add')" >
+    <div ref="actionBar" class="actionBar">	
+
+
+ <s-table	:scroll="{x: true,y:tableHeight}"
+
+  //鑷畾涔塼able楂樺害
+  import setTableHtMixin from '@/mixins/handleTableHt.js'
+
+    export default {
+  mixins: [setTableHtMixin],
+
+
+    this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+  window.addEventListener(
+  'resize',
+  () => {
+  this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+  },
+  false
+  )
+
+
+    toggleAdvanced () {
+  this.advanced = !this.advanced
+  this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+  },
+
+
+     customHeaderCell: () => {
+            return {
+              style: {
+                'min-width': '120px' //鏈�灏忓垪瀹借缃�
+              }
+            }
+          },
+          customCell: () => {
+            return {
+              style: {
+                'min-width': '120px' //鏈�灏忓垪瀹借缃�
+              }
+            }
+          },
+          
+  {
+          title: '搴忓彿',
+          width: '60px',
+          align: 'center',
+          customRender: (text, record, index) => `${index + 1}`
+        },
+
+ * 
+ */
+export default {
+  data() {
+    return {
+      tableHeight: 100
+    }
+  },
+  // watch: {
+  //   $route: {
+  //     handler: function (route, oldRoute) {
+  //       this.setTableHeight()
+  //       window.addEventListener('resize', this.setTableHeight)
+  //     },
+  //     immediate: true
+  //   }
+  // },
+  methods: {
+    //璁剧疆涓昏〃琛ㄦ牸楂樺害
+    handleTableHt() {
+      this.$nextTick(() => {
+        if (!this.$refs.boxOutWrap) {
+          console.log("娌℃湁DOM:boxOutWrap,鏃犳硶鑷姩璁$畻琛ㄦ牸楂樺害")
+          return
+        }
+        if (!this.$refs.boxForm) {
+          console.log("娌℃湁DOM:boxForm,鏃犳硶鑷姩璁$畻琛ㄦ牸楂樺害")
+          return
+        }
+        if (!this.$refs.actionBar) {
+          console.log("娌℃湁DOM:actionBar,鏃犳硶鑷姩璁$畻琛ㄦ牸楂樺害")
+          return
+        }
+        let mainTableHt = 0
+        // let t_footer = 40 //搴曢儴鐗堟潈
+        // let t_head = 55 //椤堕儴鏍�
+        let t_boxOutWrap = 0 //鏈�澶х殑鐩掑瓙
+        let t_tablePage = 24.5 //琛ㄦ牸鍒嗛〉
+        let t_formhead = 0 //form
+        if (this.$refs.boxOutWrap) {
+          // form澶х洅瀛愮殑楂樺害
+          t_boxOutWrap = this.$refs.boxOutWrap.clientHeight
+        }
+        if (this.$refs.boxForm) {
+          // form澶х洅瀛愮殑楂樺害
+          t_formhead = this.$refs.boxForm.clientHeight || 0
+        }
+        let t_actionBar = 0
+        if (this.$refs.actionBar) {
+          //鎿嶄綔鏍�32
+          t_actionBar = this.$refs.actionBar.clientHeight || 0
+        }
+        // mainTableHt = document.documentElement.clientHeight - t_head - t_formhead - t_tablePage - t_actionBar - t_footer
+        mainTableHt = t_boxOutWrap - t_formhead - t_tablePage - t_actionBar
+        mainTableHt = mainTableHt - 120 //鍑忔帀鍏朵粬闂撮殭 padding
+        console.log('鏈�澶х殑鐩掑瓙' + t_boxOutWrap)
+        console.log('form楂�' + t_formhead)
+        console.log('琛ㄦ牸鎿嶄綔鏍忛珮' + t_actionBar)
+        console.log('琛ㄦ牸楂樺害锛�' + mainTableHt)
+        if (mainTableHt <= 0) {
+          mainTableHt = 30
+        }
+        // this.tableHeight = mainTableHt + 'px'
+        this.tableHeight = mainTableHt 
+
+      })
+    },
+  }
+  // async activated () {
+  //   if (this.ready || this.$Config.ready === 0) {
+  //     this.setTableHeight()
+  //     window.addEventListener('resize', this.setTableHeight)
+  //   }
+  //   this.ready = true
+  //   this.$Config.ready++
+  // },
+  // deactivated () {
+  //   window.removeEventListener('resize', this.setTableHeight)
+  // },
+  // destroyed () {
+  //   window.removeEventListener('resize', this.setTableHeight)
+  // }
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/index.js b/iWare_RawMaterialWarehouse_Web/src/mock/index.js
new file mode 100644
index 0000000..63ed127
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/index.js
@@ -0,0 +1,21 @@
+import { isIE } from '@/utils/util'
+
+// 鍒ゆ柇鐜涓嶆槸 prod 鎴栬�� preview 鏄� true 鏃讹紝鍔犺浇 mock 鏈嶅姟
+if (process.env.NODE_ENV !== 'production' || process.env.VUE_APP_PREVIEW === 'true') {
+  if (isIE()) {
+    console.error('[antd-pro] ERROR: `mockjs` NOT SUPPORT `IE` PLEASE DO NOT USE IN `production` ENV.')
+  }
+  // 浣跨敤鍚屾鍔犺浇渚濊禆
+  // 闃叉 vuex 涓殑 GetInfo 鏃╀簬 mock 杩愯锛屽鑷存棤娉� mock 璇锋眰杩斿洖缁撴灉
+  const Mock = require('mockjs2')
+  require('./services/auth')
+  require('./services/user')
+  require('./services/manage')
+  require('./services/other')
+  require('./services/tagCloud')
+  require('./services/article')
+
+  Mock.setup({
+    timeout: 800 // setter delay time
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/services/article.js b/iWare_RawMaterialWarehouse_Web/src/mock/services/article.js
new file mode 100644
index 0000000..81e1b9a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/services/article.js
@@ -0,0 +1,88 @@
+import Mock from 'mockjs2'
+import { builder, getQueryParameters } from '../util'
+
+const titles = [
+  'Alipay',
+  'Angular',
+  'Ant Design',
+  'iWare.Wms',
+  'Bootstrap',
+  'React',
+  'Vue',
+  'Webpack'
+]
+
+const avatar = ['https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
+  'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png',
+  'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png',
+  'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png',
+  'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png'
+]
+
+const covers = [
+  'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png',
+  'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png',
+  'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png',
+  'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png'
+]
+
+const owner = [
+  '浠樺皬灏�',
+  '鍚村姞濂�',
+  '鍛ㄦ槦鏄�',
+  '鏋椾笢涓�',
+  '鏇蹭附涓�'
+]
+
+const content = '娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆傝殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�'
+const description = '鍦ㄤ腑鍙颁骇鍝佺殑鐮斿彂杩囩▼涓紝浼氬嚭鐜颁笉鍚岀殑璁捐瑙勮寖鍜屽疄鐜版柟寮忥紝浣嗗叾涓線寰�瀛樺湪寰堝绫讳技鐨勯〉闈㈠拰缁勪欢锛岃繖浜涚被浼肩殑缁勪欢浼氳鎶界鎴愪竴濂楁爣鍑嗚鑼冦��'
+const href = 'https://ant.design'
+
+const article = (options) => {
+  const queryParameters = getQueryParameters(options)
+  if (queryParameters && !queryParameters.count) {
+    queryParameters.count = 5
+  }
+  const data = []
+  for (let i = 0; i < queryParameters.count; i++) {
+    const tmpKey = i + 1
+    const num = parseInt(Math.random() * (4 + 1), 10)
+    data.push({
+      id: tmpKey,
+      avatar: avatar[num],
+      owner: owner[num],
+      content: content,
+      star: Mock.mock('@integer(1, 999)'),
+      percent: Mock.mock('@integer(1, 999)'),
+      like: Mock.mock('@integer(1, 999)'),
+      message: Mock.mock('@integer(1, 999)'),
+      description: description,
+      href: href,
+      title: titles[ i % 8 ],
+      updatedAt: Mock.mock('@datetime'),
+      members: [
+        {
+          avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
+          name: '鏇蹭附涓�',
+          id: 'member1'
+        },
+        {
+          avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
+          name: '鐜嬫槶鍚�',
+          id: 'member2'
+        },
+        {
+          avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
+          name: '钁e濞�',
+          id: 'member3'
+        }
+      ],
+      activeUser: Math.ceil(Math.random() * 100000) + 100000,
+      newUser: Math.ceil(Math.random() * 1000) + 1000,
+      cover: parseInt(i / 4, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)]
+    })
+  }
+  return builder(data)
+}
+
+Mock.mock(/\/list\/article/, 'get', article)
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/services/auth.js b/iWare_RawMaterialWarehouse_Web/src/mock/services/auth.js
new file mode 100644
index 0000000..717a72b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/services/auth.js
@@ -0,0 +1,49 @@
+import Mock from 'mockjs2'
+import { builder, getBody } from '../util'
+
+const username = ['admin', 'super']
+// 寮虹‖瑕佹眰 ant.design 鐩稿悓瀵嗙爜
+// '21232f297a57a5a743894a0e4a801fc3',
+const password = ['8914de686ab28dc22f30d3d8e107ff6c'] // admin, ant.design
+
+const login = (options) => {
+  const body = getBody(options)
+  if (!username.includes(body.username) || !password.includes(body.password)) {
+    return builder({ isLogin: true }, '璐︽埛鎴栧瘑鐮侀敊璇�', 401)
+  }
+
+  return builder({
+    'id': Mock.mock('@guid'),
+    'name': Mock.mock('@name'),
+    'username': 'admin',
+    'password': '',
+    'avatar': 'https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png',
+    'status': 1,
+    'telephone': '',
+    'lastLoginIp': '27.154.74.117',
+    'lastLoginTime': 1534837621348,
+    'creatorId': 'admin',
+    'createTime': 1497160610259,
+    'deleted': 0,
+    'roleId': 'admin',
+    'lang': 'zh-CN',
+    'token': '4291d7da9005377ec9aec4a71ea837f'
+  }, '', 200, { 'Custom-Header': Mock.mock('@guid') })
+}
+
+const logout = () => {
+  return builder({}, '[娴嬭瘯鎺ュ彛] 娉ㄩ攢鎴愬姛')
+}
+
+const smsCaptcha = () => {
+  return builder({ captcha: Mock.mock('@integer(10000, 99999)') })
+}
+
+const twofactor = () => {
+  return builder({ stepCode: Mock.mock('@integer(0, 1)') })
+}
+
+Mock.mock(/\/auth\/login/, 'post', login)
+Mock.mock(/\/auth\/logout/, 'post', logout)
+Mock.mock(/\/account\/sms/, 'post', smsCaptcha)
+Mock.mock(/\/auth\/2step-code/, 'post', twofactor)
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/services/manage.js b/iWare_RawMaterialWarehouse_Web/src/mock/services/manage.js
new file mode 100644
index 0000000..9b941e5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/services/manage.js
@@ -0,0 +1,252 @@
+import Mock from 'mockjs2'
+import { builder, getQueryParameters } from '../util'
+
+const totalCount = 5701
+
+const serverList = (options) => {
+  const parameters = getQueryParameters(options)
+
+  const result = []
+  const pageNo = parseInt(parameters.pageNo)
+  const pageSize = parseInt(parameters.pageSize)
+  const totalPage = Math.ceil(totalCount / pageSize)
+  const key = (pageNo - 1) * pageSize
+  const next = (pageNo >= totalPage ? (totalCount % pageSize) : pageSize) + 1
+
+  for (let i = 1; i < next; i++) {
+    const tmpKey = key + i
+    result.push({
+      key: tmpKey,
+      id: tmpKey,
+      no: 'No ' + tmpKey,
+      description: '杩欐槸涓�娈垫弿杩�',
+      callNo: Mock.mock('@integer(1, 999)'),
+      status: Mock.mock('@integer(0, 3)'),
+      updatedAt: Mock.mock('@datetime'),
+      editable: false
+    })
+  }
+
+  return builder({
+    pageSize: pageSize,
+    pageNo: pageNo,
+    totalCount: totalCount,
+    totalPage: totalPage,
+    data: result
+  })
+}
+
+const projects = () => {
+  return builder({
+    'data': [{
+      id: 1,
+      cover: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
+      title: 'Alipay',
+      description: '閭f槸涓�绉嶅唴鍦ㄧ殑涓滆タ锛� 浠栦滑鍒拌揪涓嶄簡锛屼篃鏃犳硶瑙﹀強鐨�',
+      status: 1,
+      updatedAt: '2018-07-26 00:00:00'
+    },
+    {
+      id: 2,
+      cover: 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png',
+      title: 'Angular',
+      description: '甯屾湜鏄竴涓ソ涓滆タ锛屼篃璁告槸鏈�濂界殑锛屽ソ涓滆タ鏄笉浼氭秷浜$殑',
+      status: 1,
+      updatedAt: '2018-07-26 00:00:00'
+    },
+    {
+      id: 3,
+      cover: 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png',
+      title: 'Ant Design',
+      description: '鍩庨晣涓湁閭d箞澶氱殑閰掗锛屽ス鍗村亸鍋忚蛋杩涗簡鎴戠殑閰掗',
+      status: 1,
+      updatedAt: '2018-07-26 00:00:00'
+    },
+    {
+      id: 4,
+      cover: 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png',
+      title: 'iWare.Wms',
+      description: '閭f椂鍊欐垜鍙細鎯宠嚜宸辨兂瑕佷粈涔堬紝浠庝笉鎯宠嚜宸辨嫢鏈変粈涔�',
+      status: 1,
+      updatedAt: '2018-07-26 00:00:00'
+    },
+    {
+      id: 5,
+      cover: 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png',
+      title: 'Bootstrap',
+      description: '鍑涘啲灏嗚嚦',
+      status: 1,
+      updatedAt: '2018-07-26 00:00:00'
+    },
+    {
+      id: 6,
+      cover: 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png',
+      title: 'Vue',
+      description: '鐢熷懡灏卞儚涓�鐩掑阀鍏嬪姏锛岀粨鏋滃線寰�鍑轰汉鎰忔枡',
+      status: 1,
+      updatedAt: '2018-07-26 00:00:00'
+    }
+    ],
+    'pageSize': 10,
+    'pageNo': 0,
+    'totalPage': 6,
+    'totalCount': 57
+  })
+}
+
+const activity = () => {
+  return builder([{
+    id: 1,
+    user: {
+      nickname: '@name',
+      avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
+    },
+    project: {
+      name: '鐧介弓閰辨补寮�鍙戠粍',
+      action: '鏇存柊',
+      event: '鐣粍璁″垝'
+    },
+    time: '2018-08-23 14:47:00'
+  },
+  {
+    id: 1,
+    user: {
+      nickname: '钃濊帗閰�',
+      avatar: 'https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png'
+    },
+    project: {
+      name: '鐧介弓閰辨补寮�鍙戠粍',
+      action: '鏇存柊',
+      event: '鐣粍璁″垝'
+    },
+    time: '2018-08-23 09:35:37'
+  },
+  {
+    id: 1,
+    user: {
+      nickname: '@name',
+      avatar: '@image(64x64)'
+    },
+    project: {
+      name: '鐧介弓閰辨补寮�鍙戠粍',
+      action: '鍒涘缓',
+      event: '鐣粍璁″垝'
+    },
+    time: '2017-05-27 00:00:00'
+  },
+  {
+    id: 1,
+    user: {
+      nickname: '鏇蹭附涓�',
+      avatar: '@image(64x64)'
+    },
+    project: {
+      name: '楂橀�兼牸璁捐澶╁洟',
+      action: '鏇存柊',
+      event: '鍏湀杩唬'
+    },
+    time: '2018-08-23 14:47:00'
+  },
+  {
+    id: 1,
+    user: {
+      nickname: '@name',
+      avatar: '@image(64x64)'
+    },
+    project: {
+      name: '楂橀�兼牸璁捐澶╁洟',
+      action: 'created',
+      event: '鍏湀杩唬'
+    },
+    time: '2018-08-23 14:47:00'
+  },
+  {
+    id: 1,
+    user: {
+      nickname: '鏇蹭附涓�',
+      avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
+    },
+    project: {
+      name: '楂橀�兼牸璁捐澶╁洟',
+      action: 'created',
+      event: '鍏湀杩唬'
+    },
+    time: '2018-08-23 14:47:00'
+  }
+  ])
+}
+
+const teams = () => {
+  return builder([{
+    id: 1,
+    name: '绉戝鎼爾缁�',
+    avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
+  },
+  {
+    id: 2,
+    name: '绋嬪簭鍛樻棩甯�',
+    avatar: 'https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png'
+  },
+  {
+    id: 1,
+    name: '璁捐澶╁洟',
+    avatar: 'https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png'
+  },
+  {
+    id: 1,
+    name: '涓簩灏戝コ鍥�',
+    avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png'
+  },
+  {
+    id: 1,
+    name: '楠椾綘瀛﹁绠楁満',
+    avatar: 'https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png'
+  }
+  ])
+}
+
+const radar = () => {
+  return builder([{
+    item: '寮曠敤',
+    '涓汉': 70,
+    '鍥㈤槦': 30,
+    '閮ㄩ棬': 40
+  },
+  {
+    item: '鍙g',
+    '涓汉': 60,
+    '鍥㈤槦': 70,
+    '閮ㄩ棬': 40
+  },
+  {
+    item: '浜ч噺',
+    '涓汉': 50,
+    '鍥㈤槦': 60,
+    '閮ㄩ棬': 40
+  },
+  {
+    item: '璐$尞',
+    '涓汉': 40,
+    '鍥㈤槦': 50,
+    '閮ㄩ棬': 40
+  },
+  {
+    item: '鐑害',
+    '涓汉': 60,
+    '鍥㈤槦': 70,
+    '閮ㄩ棬': 40
+  },
+  {
+    item: '寮曠敤',
+    '涓汉': 70,
+    '鍥㈤槦': 50,
+    '閮ㄩ棬': 40
+  }
+  ])
+}
+
+Mock.mock(/\/service/, 'get', serverList)
+Mock.mock(/\/list\/search\/projects/, 'get', projects)
+Mock.mock(/\/workplace\/activity/, 'get', activity)
+Mock.mock(/\/workplace\/teams/, 'get', teams)
+Mock.mock(/\/workplace\/radar/, 'get', radar)
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/services/other.js b/iWare_RawMaterialWarehouse_Web/src/mock/services/other.js
new file mode 100644
index 0000000..56e2dd9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/services/other.js
@@ -0,0 +1,973 @@
+import Mock from 'mockjs2'
+import { builder } from '../util'
+
+const orgTree = () => {
+  return builder([{
+    'key': 'key-01',
+    'title': '鐮斿彂涓績',
+    'icon': 'mail',
+    'children': [{
+      'key': 'key-01-01',
+      'title': '鍚庣缁�',
+      'icon': null,
+      'group': true,
+      children: [{
+        'key': 'key-01-01-01',
+        'title': 'JAVA',
+        'icon': null
+      },
+      {
+        'key': 'key-01-01-02',
+        'title': 'PHP',
+        'icon': null
+      },
+      {
+        'key': 'key-01-01-03',
+        'title': 'Golang',
+        'icon': null
+      }
+      ]
+    }, {
+      'key': 'key-01-02',
+      'title': '鍓嶇缁�',
+      'icon': null,
+      'group': true,
+      children: [{
+        'key': 'key-01-02-01',
+        'title': 'React',
+        'icon': null
+      },
+      {
+        'key': 'key-01-02-02',
+        'title': 'Vue',
+        'icon': null
+      },
+      {
+        'key': 'key-01-02-03',
+        'title': 'Angular',
+        'icon': null
+      }
+      ]
+    }]
+  }, {
+    'key': 'key-02',
+    'title': '璐㈠姟閮�',
+    'icon': 'dollar',
+    'children': [{
+      'key': 'key-02-01',
+      'title': '浼氳鏍哥畻',
+      'icon': null
+    }, {
+      'key': 'key-02-02',
+      'title': '鎴愭湰鎺у埗',
+      'icon': null
+    }, {
+      'key': 'key-02-03',
+      'title': '鍐呴儴鎺у埗',
+      'icon': null,
+      'children': [{
+        'key': 'key-02-03-01',
+        'title': '璐㈠姟鍒跺害寤鸿',
+        'icon': null
+      },
+      {
+        'key': 'key-02-03-02',
+        'title': '浼氳鏍哥畻',
+        'icon': null
+      }
+      ]
+    }]
+  }])
+}
+
+const role = () => {
+  return builder({
+    'data': [{
+      'id': 'admin',
+      'name': '绠$悊鍛�',
+      'describe': '鎷ユ湁鎵�鏈夋潈闄�',
+      'status': 1,
+      'creatorId': 'system',
+      'createTime': 1497160610259,
+      'deleted': 0,
+      'permissions': [{
+        'roleId': 'admin',
+        'permissionId': 'comment',
+        'permissionName': '璇勮绠$悊',
+        'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+        'actionEntitySet': [{
+          'action': 'add',
+          'describe': '鏂板',
+          'defaultCheck': false
+        },
+        {
+          'action': 'query',
+          'describe': '鏌ヨ',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        },
+        {
+          'action': 'edit',
+          'describe': '淇敼',
+          'defaultCheck': false
+        },
+        {
+          'action': 'delete',
+          'describe': '鍒犻櫎',
+          'defaultCheck': false
+        }],
+        'actionList': ['delete', 'edit'],
+        'dataAccess': null
+      },
+      {
+        'roleId': 'admin',
+        'permissionId': 'member',
+        'permissionName': '浼氬憳绠$悊',
+        'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+        'actionEntitySet': [{
+          'action': 'add',
+          'describe': '鏂板',
+          'defaultCheck': false
+        },
+        {
+          'action': 'query',
+          'describe': '鏌ヨ',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        },
+        {
+          'action': 'edit',
+          'describe': '淇敼',
+          'defaultCheck': false
+        },
+        {
+          'action': 'delete',
+          'describe': '鍒犻櫎',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': ['query', 'get', 'edit', 'delete'],
+        'dataAccess': null
+      },
+      {
+        'roleId': 'admin',
+        'permissionId': 'menu',
+        'permissionName': '鑿滃崟绠$悊',
+        'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"}]',
+        'actionEntitySet': [{
+          'action': 'add',
+          'describe': '鏂板',
+          'defaultCheck': false
+        },
+        {
+          'action': 'import',
+          'describe': '瀵煎叆',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        },
+        {
+          'action': 'edit',
+          'describe': '淇敼',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': ['add', 'import'],
+        'dataAccess': null
+      },
+      {
+        'roleId': 'admin',
+        'permissionId': 'order',
+        'permissionName': '璁㈠崟绠$悊',
+        'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+        'actionEntitySet': [{
+          'action': 'add',
+          'describe': '鏂板',
+          'defaultCheck': false
+        },
+        {
+          'action': 'query',
+          'describe': '鏌ヨ',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        },
+        {
+          'action': 'edit',
+          'describe': '淇敼',
+          'defaultCheck': false
+        },
+        {
+          'action': 'delete',
+          'describe': '鍒犻櫎',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': ['query', 'add', 'get'],
+        'dataAccess': null
+      },
+      {
+        'roleId': 'admin',
+        'permissionId': 'permission',
+        'permissionName': '鏉冮檺绠$悊',
+        'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+        'actionEntitySet': [{
+          'action': 'add',
+          'describe': '鏂板',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        },
+        {
+          'action': 'edit',
+          'describe': '淇敼',
+          'defaultCheck': false
+        },
+        {
+          'action': 'delete',
+          'describe': '鍒犻櫎',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': ['add', 'get', 'edit', 'delete'],
+        'dataAccess': null
+      },
+      {
+        'roleId': 'admin',
+        'permissionId': 'role',
+        'permissionName': '瑙掕壊绠$悊',
+        'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+        'actionEntitySet': [{
+          'action': 'add',
+          'describe': '鏂板',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        },
+        {
+          'action': 'edit',
+          'describe': '淇敼',
+          'defaultCheck': false
+        },
+        {
+          'action': 'delete',
+          'describe': '鍒犻櫎',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': null,
+        'dataAccess': null
+      },
+      {
+        'roleId': 'admin',
+        'permissionId': 'test',
+        'permissionName': '娴嬭瘯鏉冮檺',
+        'actions': '[]',
+        'actionEntitySet': [],
+        'actionList': null,
+        'dataAccess': null
+      },
+      {
+        'roleId': 'admin',
+        'permissionId': 'user',
+        'permissionName': '鐢ㄦ埛绠$悊',
+        'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]',
+        'actionEntitySet': [{
+          'action': 'add',
+          'describe': '鏂板',
+          'defaultCheck': false
+        },
+        {
+          'action': 'import',
+          'describe': '瀵煎叆',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        },
+        {
+          'action': 'edit',
+          'describe': '淇敼',
+          'defaultCheck': false
+        },
+        {
+          'action': 'delete',
+          'describe': '鍒犻櫎',
+          'defaultCheck': false
+        },
+        {
+          'action': 'export',
+          'describe': '瀵煎嚭',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': ['add', 'get'],
+        'dataAccess': null
+      }
+      ]
+    },
+    {
+      'id': 'svip',
+      'name': 'SVIP',
+      'describe': '瓒呯骇浼氬憳',
+      'status': 1,
+      'creatorId': 'system',
+      'createTime': 1532417744846,
+      'deleted': 0,
+      'permissions': [{
+        'roleId': 'admin',
+        'permissionId': 'comment',
+        'permissionName': '璇勮绠$悊',
+        'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+        'actionEntitySet': [{
+          'action': 'add',
+          'describe': '鏂板',
+          'defaultCheck': false
+        },
+        {
+          'action': 'query',
+          'describe': '鏌ヨ',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        },
+        {
+          'action': 'edit',
+          'describe': '淇敼',
+          'defaultCheck': false
+        },
+        {
+          'action': 'delete',
+          'describe': '鍒犻櫎',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': ['add', 'get', 'delete'],
+        'dataAccess': null
+      },
+      {
+        'roleId': 'admin',
+        'permissionId': 'member',
+        'permissionName': '浼氬憳绠$悊',
+        'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+        'actionEntitySet': [{
+          'action': 'add',
+          'describe': '鏂板',
+          'defaultCheck': false
+        },
+        {
+          'action': 'query',
+          'describe': '鏌ヨ',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': ['add', 'query', 'get'],
+        'dataAccess': null
+      },
+      {
+        'roleId': 'admin',
+        'permissionId': 'menu',
+        'permissionName': '鑿滃崟绠$悊',
+        'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"}]',
+        'actionEntitySet': [{
+          'action': 'add',
+          'describe': '鏂板',
+          'defaultCheck': false
+        },
+        {
+          'action': 'import',
+          'describe': '瀵煎叆',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': ['add', 'get'],
+        'dataAccess': null
+      },
+      {
+        'roleId': 'admin',
+        'permissionId': 'order',
+        'permissionName': '璁㈠崟绠$悊',
+        'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+        'actionEntitySet': [{
+          'action': 'add',
+          'describe': '鏂板',
+          'defaultCheck': false
+        },
+        {
+          'action': 'query',
+          'describe': '鏌ヨ',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        },
+        {
+          'action': 'edit',
+          'describe': '淇敼',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': ['add', 'query'],
+        'dataAccess': null
+      },
+      {
+        'roleId': 'admin',
+        'permissionId': 'permission',
+        'permissionName': '鏉冮檺绠$悊',
+        'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+        'actionEntitySet': [{
+          'action': 'add',
+          'describe': '鏂板',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        },
+        {
+          'action': 'edit',
+          'describe': '淇敼',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': ['add', 'get', 'edit'],
+        'dataAccess': null
+      },
+      {
+        'roleId': 'admin',
+        'permissionId': 'role',
+        'permissionName': '瑙掕壊绠$悊',
+        'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+        'actionEntitySet': [{
+          'action': 'add',
+          'describe': '鏂板',
+          'defaultCheck': false
+        },
+        {
+          'action': 'edit',
+          'describe': '淇敼',
+          'defaultCheck': false
+        },
+        {
+          'action': 'delete',
+          'describe': '鍒犻櫎',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': null,
+        'dataAccess': null
+      },
+      {
+        'roleId': 'admin',
+        'permissionId': 'test',
+        'permissionName': '娴嬭瘯鏉冮檺',
+        'actions': '[]',
+        'actionEntitySet': [],
+        'actionList': ['add', 'edit'],
+        'dataAccess': null
+      },
+      {
+        'roleId': 'admin',
+        'permissionId': 'user',
+        'permissionName': '鐢ㄦ埛绠$悊',
+        'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]',
+        'actionEntitySet': [{
+          'action': 'add',
+          'describe': '鏂板',
+          'defaultCheck': false
+        },
+        {
+          'action': 'import',
+          'describe': '瀵煎叆',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        },
+        {
+          'action': 'edit',
+          'describe': '淇敼',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': ['add'],
+        'dataAccess': null
+      }
+      ]
+    },
+    {
+      'id': 'user',
+      'name': '鏅�氫細鍛�',
+      'describe': '鏅�氱敤鎴凤紝鍙兘鏌ヨ',
+      'status': 1,
+      'creatorId': 'system',
+      'createTime': 1497160610259,
+      'deleted': 0,
+      'permissions': [{
+        'roleId': 'user',
+        'permissionId': 'comment',
+        'permissionName': '璇勮绠$悊',
+        'actions': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]',
+        'actionEntitySet': [{
+          'action': 'query',
+          'describe': '鏌ヨ',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': ['query'],
+        'dataAccess': null
+      },
+
+      {
+        'roleId': 'user',
+        'permissionId': 'marketing',
+        'permissionName': '钀ラ攢绠$悊',
+        'actions': '[]',
+        'actionEntitySet': [],
+        'actionList': null,
+        'dataAccess': null
+      },
+      {
+        'roleId': 'user',
+        'permissionId': 'member',
+        'permissionName': '浼氬憳绠$悊',
+        'actions': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]',
+        'actionEntitySet': [{
+          'action': 'query',
+          'describe': '鏌ヨ',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': null,
+        'dataAccess': null
+      },
+      {
+        'roleId': 'user',
+        'permissionId': 'menu',
+        'permissionName': '鑿滃崟绠$悊',
+        'actions': '[]',
+        'actionEntitySet': [],
+        'actionList': null,
+        'dataAccess': null
+      },
+
+      {
+        'roleId': 'user',
+        'permissionId': 'order',
+        'permissionName': '璁㈠崟绠$悊',
+        'actions': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]',
+        'actionEntitySet': [{
+          'action': 'query',
+          'describe': '鏌ヨ',
+          'defaultCheck': false
+        },
+        {
+          'action': 'get',
+          'describe': '璇︽儏',
+          'defaultCheck': false
+        }
+        ],
+        'actionList': null,
+        'dataAccess': null
+      },
+      {
+        'roleId': 'user',
+        'permissionId': 'permission',
+        'permissionName': '鏉冮檺绠$悊',
+        'actions': '[]',
+        'actionEntitySet': [],
+        'actionList': null,
+        'dataAccess': null
+      },
+      {
+        'roleId': 'user',
+        'permissionId': 'role',
+        'permissionName': '瑙掕壊绠$悊',
+        'actions': '[]',
+        'actionEntitySet': [],
+        'actionList': null,
+        'dataAccess': null
+      },
+
+      {
+        'roleId': 'user',
+        'permissionId': 'test',
+        'permissionName': '娴嬭瘯鏉冮檺',
+        'actions': '[]',
+        'actionEntitySet': [],
+        'actionList': null,
+        'dataAccess': null
+      },
+      {
+        'roleId': 'user',
+        'permissionId': 'user',
+        'permissionName': '鐢ㄦ埛绠$悊',
+        'actions': '[]',
+        'actionEntitySet': [],
+        'actionList': null,
+        'dataAccess': null
+      }
+      ]
+    }
+    ],
+    'pageSize': 10,
+    'pageNo': 0,
+    'totalPage': 1,
+    'totalCount': 5
+  })
+}
+
+const permissionNoPager = () => {
+  return builder([{
+    'id': 'marketing',
+    'name': '钀ラ攢绠$悊',
+    'describe': null,
+    'status': 1,
+    'actionData': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+    'sptDaTypes': null,
+    'optionalFields': null,
+    'parents': null,
+    'type': null,
+    'deleted': 0,
+    'actions': [
+      'add',
+      'query',
+      'get',
+      'edit',
+      'delete'
+    ]
+  },
+  {
+    'id': 'member',
+    'name': '浼氬憳绠$悊',
+    'describe': null,
+    'status': 1,
+    'actionData': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+    'sptDaTypes': null,
+    'optionalFields': '[]',
+    'parents': null,
+    'type': 'default',
+    'deleted': 0,
+    'actions': [
+      'add',
+      'query',
+      'get',
+      'edit',
+      'delete'
+    ]
+  },
+  {
+    'id': 'menu',
+    'name': '鑿滃崟绠$悊',
+    'describe': null,
+    'status': 1,
+    'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"}]',
+    'sptDaTypes': null,
+    'optionalFields': '[]',
+    'parents': null,
+    'type': 'default',
+    'deleted': 0,
+    'actions': [
+      'add',
+      'import',
+      'get',
+      'edit'
+    ]
+  },
+  {
+    'id': 'order',
+    'name': '璁㈠崟绠$悊',
+    'describe': null,
+    'status': 1,
+    'actionData': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+    'sptDaTypes': null,
+    'optionalFields': '[]',
+    'parents': null,
+    'type': 'default',
+    'deleted': 0,
+    'actions': [
+      'add',
+      'query',
+      'get',
+      'edit',
+      'delete'
+    ]
+  },
+  {
+    'id': 'permission',
+    'name': '鏉冮檺绠$悊',
+    'describe': null,
+    'status': 1,
+    'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+    'sptDaTypes': null,
+    'optionalFields': '[]',
+    'parents': null,
+    'type': 'default',
+    'deleted': 0,
+    'actions': [
+      'add',
+      'get',
+      'edit',
+      'delete'
+    ]
+  },
+  {
+    'id': 'role',
+    'name': '瑙掕壊绠$悊',
+    'describe': null,
+    'status': 1,
+    'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+    'sptDaTypes': null,
+    'optionalFields': '[]',
+    'parents': null,
+    'type': 'default',
+    'deleted': 0,
+    'actions': [
+      'add',
+      'get',
+      'edit',
+      'delete'
+    ]
+  },
+  {
+    'id': 'test',
+    'name': '娴嬭瘯鏉冮檺',
+    'describe': null,
+    'status': 1,
+    'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]',
+    'sptDaTypes': null,
+    'optionalFields': '[]',
+    'parents': null,
+    'type': 'default',
+    'deleted': 0,
+    'actions': [
+      'add',
+      'get'
+    ]
+  },
+  {
+    'id': 'user',
+    'name': '鐢ㄦ埛绠$悊',
+    'describe': null,
+    'status': 1,
+    'actionData': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]',
+    'sptDaTypes': null,
+    'optionalFields': '[]',
+    'parents': null,
+    'type': 'default',
+    'deleted': 0,
+    'actions': [
+      'add',
+      'get'
+    ]
+  }
+  ])
+}
+
+const permissions = () => {
+  return builder({
+    'data': [{
+      'id': 'marketing',
+      'name': '钀ラ攢绠$悊',
+      'describe': null,
+      'status': 1,
+      'actionData': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+      'sptDaTypes': null,
+      'optionalFields': null,
+      'parents': null,
+      'type': null,
+      'deleted': 0,
+      'actions': [
+        'add',
+        'query',
+        'get',
+        'edit',
+        'delete'
+      ]
+    },
+    {
+      'id': 'member',
+      'name': '浼氬憳绠$悊',
+      'describe': null,
+      'status': 1,
+      'actionData': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+      'sptDaTypes': null,
+      'optionalFields': '[]',
+      'parents': null,
+      'type': 'default',
+      'deleted': 0,
+      'actions': [
+        'add',
+        'query',
+        'get',
+        'edit',
+        'delete'
+      ]
+    },
+    {
+      'id': 'menu',
+      'name': '鑿滃崟绠$悊',
+      'describe': null,
+      'status': 1,
+      'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"}]',
+      'sptDaTypes': null,
+      'optionalFields': '[]',
+      'parents': null,
+      'type': 'default',
+      'deleted': 0,
+      'actions': [
+        'add',
+        'import',
+        'get',
+        'edit'
+      ]
+    },
+    {
+      'id': 'order',
+      'name': '璁㈠崟绠$悊',
+      'describe': null,
+      'status': 1,
+      'actionData': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+      'sptDaTypes': null,
+      'optionalFields': '[]',
+      'parents': null,
+      'type': 'default',
+      'deleted': 0,
+      'actions': [
+        'add',
+        'query',
+        'get',
+        'edit',
+        'delete'
+      ]
+    },
+    {
+      'id': 'permission',
+      'name': '鏉冮檺绠$悊',
+      'describe': null,
+      'status': 1,
+      'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+      'sptDaTypes': null,
+      'optionalFields': '[]',
+      'parents': null,
+      'type': 'default',
+      'deleted': 0,
+      'actions': [
+        'add',
+        'get',
+        'edit',
+        'delete'
+      ]
+    },
+    {
+      'id': 'role',
+      'name': '瑙掕壊绠$悊',
+      'describe': null,
+      'status': 1,
+      'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+      'sptDaTypes': null,
+      'optionalFields': '[]',
+      'parents': null,
+      'type': 'default',
+      'deleted': 0,
+      'actions': [
+        'add',
+        'get',
+        'edit',
+        'delete'
+      ]
+    },
+    {
+      'id': 'test',
+      'name': '娴嬭瘯鏉冮檺',
+      'describe': null,
+      'status': 1,
+      'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]',
+      'sptDaTypes': null,
+      'optionalFields': '[]',
+      'parents': null,
+      'type': 'default',
+      'deleted': 0,
+      'actions': [
+        'add',
+        'get'
+      ]
+    },
+    {
+      'id': 'user',
+      'name': '鐢ㄦ埛绠$悊',
+      'describe': null,
+      'status': 1,
+      'actionData': '[{"action":"add","describe":"鏂板","defaultCheck":false},{"action":"get","describe":"鏌ヨ","defaultCheck":false}]',
+      'sptDaTypes': null,
+      'optionalFields': '[]',
+      'parents': null,
+      'type': 'default',
+      'deleted': 0,
+      'actions': [
+        'add',
+        'get'
+      ]
+    }
+    ],
+    'pageSize': 10,
+    'pageNo': 0,
+    'totalPage': 1,
+    'totalCount': 5
+  })
+}
+
+Mock.mock(/\/org\/tree/, 'get', orgTree)
+Mock.mock(/\/role/, 'get', role)
+Mock.mock(/\/permission\/no-pager/, 'get', permissionNoPager)
+Mock.mock(/\/permission/, 'get', permissions)
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/services/tagCloud.js b/iWare_RawMaterialWarehouse_Web/src/mock/services/tagCloud.js
new file mode 100644
index 0000000..63a2e06
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/services/tagCloud.js
@@ -0,0 +1,9 @@
+import Mock from 'mockjs2'
+import { builder } from '../util'
+
+//
+const tagCloudData = () => {
+  return builder([{ 'value': 9, 'name': 'AntV' }, { 'value': 8, 'name': 'F2' }, { 'value': 8, 'name': 'G2' }, { 'value': 8, 'name': 'G6' }, { 'value': 8, 'name': 'DataSet' }, { 'value': 8, 'name': '澧ㄨ�呭闄�' }, { 'value': 6, 'name': 'Analysis' }, { 'value': 6, 'name': 'Data Mining' }, { 'value': 6, 'name': 'Data Vis' }, { 'value': 6, 'name': 'Design' }, { 'value': 6, 'name': 'Grammar' }, { 'value': 6, 'name': 'Graphics' }, { 'value': 6, 'name': 'Graph' }, { 'value': 6, 'name': 'Hierarchy' }, { 'value': 6, 'name': 'Labeling' }, { 'value': 6, 'name': 'Layout' }, { 'value': 6, 'name': 'Quantitative' }, { 'value': 6, 'name': 'Relation' }, { 'value': 6, 'name': 'Statistics' }, { 'value': 6, 'name': '鍙鍖�' }, { 'value': 6, 'name': '鏁版嵁' }, { 'value': 6, 'name': '鏁版嵁鍙鍖�' }, { 'value': 4, 'name': 'Arc Diagram' }, { 'value': 4, 'name': 'Bar Chart' }, { 'value': 4, 'name': 'Canvas' }, { 'value': 4, 'name': 'Chart' }, { 'value': 4, 'name': 'DAG' }, { 'value': 4, 'name': 'DG' }, { 'value': 4, 'name': 'Facet' }, { 'value': 4, 'name': 'Geo' }, { 'value': 4, 'name': 'Line' }, { 'value': 4, 'name': 'MindMap' }, { 'value': 4, 'name': 'Pie' }, { 'value': 4, 'name': 'Pizza Chart' }, { 'value': 4, 'name': 'Punch Card' }, { 'value': 4, 'name': 'SVG' }, { 'value': 4, 'name': 'Sunburst' }, { 'value': 4, 'name': 'Tree' }, { 'value': 4, 'name': 'UML' }, { 'value': 3, 'name': 'Chart' }, { 'value': 3, 'name': 'View' }, { 'value': 3, 'name': 'Geom' }, { 'value': 3, 'name': 'Shape' }, { 'value': 3, 'name': 'Scale' }, { 'value': 3, 'name': 'Animate' }, { 'value': 3, 'name': 'Global' }, { 'value': 3, 'name': 'Slider' }, { 'value': 3, 'name': 'Connector' }, { 'value': 3, 'name': 'Transform' }, { 'value': 3, 'name': 'Util' }, { 'value': 3, 'name': 'DomUtil' }, { 'value': 3, 'name': 'MatrixUtil' }, { 'value': 3, 'name': 'PathUtil' }, { 'value': 3, 'name': 'G' }, { 'value': 3, 'name': '2D' }, { 'value': 3, 'name': '3D' }, { 'value': 3, 'name': 'Line' }, { 'value': 3, 'name': 'Area' }, { 'value': 3, 'name': 'Interval' }, { 'value': 3, 'name': 'Schema' }, { 'value': 3, 'name': 'Edge' }, { 'value': 3, 'name': 'Polygon' }, { 'value': 3, 'name': 'Heatmap' }, { 'value': 3, 'name': 'Render' }, { 'value': 3, 'name': 'Tooltip' }, { 'value': 3, 'name': 'Axis' }, { 'value': 3, 'name': 'Guide' }, { 'value': 3, 'name': 'Coord' }, { 'value': 3, 'name': 'Legend' }, { 'value': 3, 'name': 'Path' }, { 'value': 3, 'name': 'Helix' }, { 'value': 3, 'name': 'Theta' }, { 'value': 3, 'name': 'Rect' }, { 'value': 3, 'name': 'Polar' }, { 'value': 3, 'name': 'Dsv' }, { 'value': 3, 'name': 'Csv' }, { 'value': 3, 'name': 'Tsv' }, { 'value': 3, 'name': 'GeoJSON' }, { 'value': 3, 'name': 'TopoJSON' }, { 'value': 3, 'name': 'Filter' }, { 'value': 3, 'name': 'Map' }, { 'value': 3, 'name': 'Pick' }, { 'value': 3, 'name': 'Rename' }, { 'value': 3, 'name': 'Filter' }, { 'value': 3, 'name': 'Map' }, { 'value': 3, 'name': 'Pick' }, { 'value': 3, 'name': 'Rename' }, { 'value': 3, 'name': 'Reverse' }, { 'value': 3, 'name': 'sort' }, { 'value': 3, 'name': 'Subset' }, { 'value': 3, 'name': 'Partition' }, { 'value': 3, 'name': 'Imputation' }, { 'value': 3, 'name': 'Fold' }, { 'value': 3, 'name': 'Aggregate' }, { 'value': 3, 'name': 'Proportion' }, { 'value': 3, 'name': 'Histogram' }, { 'value': 3, 'name': 'Quantile' }, { 'value': 3, 'name': 'Treemap' }, { 'value': 3, 'name': 'Hexagon' }, { 'value': 3, 'name': 'Binning' }, { 'value': 3, 'name': 'kernel' }, { 'value': 3, 'name': 'Regression' }, { 'value': 3, 'name': 'Density' }, { 'value': 3, 'name': 'Sankey' }, { 'value': 3, 'name': 'Voronoi' }, { 'value': 3, 'name': 'Projection' }, { 'value': 3, 'name': 'Centroid' }, { 'value': 3, 'name': 'H5' }, { 'value': 3, 'name': 'Mobile' }, { 'value': 3, 'name': 'K绾垮浘' }, { 'value': 3, 'name': '鍏崇郴鍥�' }, { 'value': 3, 'name': '鐑涘舰鍥�' }, { 'value': 3, 'name': '鑲$エ鍥�' }, { 'value': 3, 'name': '鐩存柟鍥�' }, { 'value': 3, 'name': '閲戝瓧濉斿浘' }, { 'value': 3, 'name': '鍒嗛潰' }, { 'value': 3, 'name': '鍗椾竵鏍煎皵鐜懓鍥�' }, { 'value': 3, 'name': '楗煎浘' }, { 'value': 3, 'name': '绾垮浘' }, { 'value': 3, 'name': '鐐瑰浘' }, { 'value': 3, 'name': '鏁g偣鍥�' }, { 'value': 3, 'name': '瀛愬脊鍥�' }, { 'value': 3, 'name': '鏌辩姸鍥�' }, { 'value': 3, 'name': '浠〃鐩�' }, { 'value': 3, 'name': '姘旀场鍥�' }, { 'value': 3, 'name': '婕忔枟鍥�' }, { 'value': 3, 'name': '鐑姏鍥�' }, { 'value': 3, 'name': '鐜夌帵鍥�' }, { 'value': 3, 'name': '鐩存柟鍥�' }, { 'value': 3, 'name': '鐭╁舰鏍戝浘' }, { 'value': 3, 'name': '绠卞舰鍥�' }, { 'value': 3, 'name': '鑹插潡鍥�' }, { 'value': 3, 'name': '铻烘棆鍥�' }, { 'value': 3, 'name': '璇嶄簯' }, { 'value': 3, 'name': '璇嶄簯鍥�' }, { 'value': 3, 'name': '闆疯揪鍥�' }, { 'value': 3, 'name': '闈㈢Н鍥�' }, { 'value': 3, 'name': '椹禌鍏嬪浘' }, { 'value': 3, 'name': '鐩掗』鍥�' }, { 'value': 3, 'name': '鍧愭爣杞�' }, { 'value': 3, 'name': '' }, { 'value': 3, 'name': 'Jacques Bertin' }, { 'value': 3, 'name': 'Leland Wilkinson' }, { 'value': 3, 'name': 'William Playfair' }, { 'value': 3, 'name': '鍏宠仈' }, { 'value': 3, 'name': '鍒嗗竷' }, { 'value': 3, 'name': '鍖洪棿' }, { 'value': 3, 'name': '鍗犳瘮' }, { 'value': 3, 'name': '鍦板浘' }, { 'value': 3, 'name': '鏃堕棿' }, { 'value': 3, 'name': '姣旇緝' }, { 'value': 3, 'name': '娴佺▼' }, { 'value': 3, 'name': '瓒嬪娍' }, { 'value': 2, 'name': '浜﹀彾' }, { 'value': 2, 'name': '鍐嶉' }, { 'value': 2, 'name': '瀹岀櫧' }, { 'value': 2, 'name': '宸存��' }, { 'value': 2, 'name': '寮犲垵灏�' }, { 'value': 2, 'name': '寰℃湳' }, { 'value': 2, 'name': '鏈夌敯' }, { 'value': 2, 'name': '娌夐奔' }, { 'value': 2, 'name': '鐜変集' }, { 'value': 2, 'name': '鐢诲悍' }, { 'value': 2, 'name': '绁��' }, { 'value': 2, 'name': '缁濅簯' }, { 'value': 2, 'name': '缃楀' }, { 'value': 2, 'name': '钀у簡' }, { 'value': 2, 'name': '钁g強鐝�' }, { 'value': 2, 'name': '闄嗘矇' }, { 'value': 2, 'name': '椤惧��' }, { 'value': 2, 'name': 'Domo' }, { 'value': 2, 'name': 'GPL' }, { 'value': 2, 'name': 'PAI' }, { 'value': 2, 'name': 'SPSS' }, { 'value': 2, 'name': 'SYSTAT' }, { 'value': 2, 'name': 'Tableau' }, { 'value': 2, 'name': 'D3' }, { 'value': 2, 'name': 'Vega' }, { 'value': 2, 'name': '缁熻鍥捐〃' }])
+}
+
+Mock.mock(/\/data\/antv\/tag-cloud/, 'get', tagCloudData)
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/services/user.js b/iWare_RawMaterialWarehouse_Web/src/mock/services/user.js
new file mode 100644
index 0000000..ad0747c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/services/user.js
@@ -0,0 +1,768 @@
+import Mock from 'mockjs2'
+import { builder } from '../util'
+
+const info = (options) => {
+  const userInfo = {
+    'id': '4291d7da9005377ec9aec4a71ea837f',
+    'name': '澶╅噹杩滃瓙',
+    'username': 'admin',
+    'password': '',
+    'avatar': '/avatar2.jpg',
+    'status': 1,
+    'telephone': '',
+    'lastLoginIp': '27.154.74.117',
+    'lastLoginTime': 1534837621348,
+    'creatorId': 'admin',
+    'createTime': 1497160610259,
+    'merchantCode': 'TLif2btpzg079h15bk',
+    'deleted': 0,
+    'roleId': 'admin',
+    'role': {}
+  }
+  // role
+  const roleObj = {
+    'id': 'admin',
+    'name': '绠$悊鍛�',
+    'describe': '鎷ユ湁鎵�鏈夋潈闄�',
+    'status': 1,
+    'creatorId': 'system',
+    'createTime': 1497160610259,
+    'deleted': 0,
+    'permissions': [{
+      'roleId': 'admin',
+      'permissionId': 'dashboard',
+      'permissionName': '浠〃鐩�',
+      'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+      'actionEntitySet': [{
+        'action': 'add',
+        'describe': '鏂板',
+        'defaultCheck': false
+      }, {
+        'action': 'query',
+        'describe': '鏌ヨ',
+        'defaultCheck': false
+      }, {
+        'action': 'get',
+        'describe': '璇︽儏',
+        'defaultCheck': false
+      }, {
+        'action': 'update',
+        'describe': '淇敼',
+        'defaultCheck': false
+      }, {
+        'action': 'delete',
+        'describe': '鍒犻櫎',
+        'defaultCheck': false
+      }],
+      'actionList': null,
+      'dataAccess': null
+    }, {
+      'roleId': 'admin',
+      'permissionId': 'exception',
+      'permissionName': '寮傚父椤甸潰鏉冮檺',
+      'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+      'actionEntitySet': [{
+        'action': 'add',
+        'describe': '鏂板',
+        'defaultCheck': false
+      }, {
+        'action': 'query',
+        'describe': '鏌ヨ',
+        'defaultCheck': false
+      }, {
+        'action': 'get',
+        'describe': '璇︽儏',
+        'defaultCheck': false
+      }, {
+        'action': 'update',
+        'describe': '淇敼',
+        'defaultCheck': false
+      }, {
+        'action': 'delete',
+        'describe': '鍒犻櫎',
+        'defaultCheck': false
+      }],
+      'actionList': null,
+      'dataAccess': null
+    }, {
+      'roleId': 'admin',
+      'permissionId': 'result',
+      'permissionName': '缁撴灉鏉冮檺',
+      'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+      'actionEntitySet': [{
+        'action': 'add',
+        'describe': '鏂板',
+        'defaultCheck': false
+      }, {
+        'action': 'query',
+        'describe': '鏌ヨ',
+        'defaultCheck': false
+      }, {
+        'action': 'get',
+        'describe': '璇︽儏',
+        'defaultCheck': false
+      }, {
+        'action': 'update',
+        'describe': '淇敼',
+        'defaultCheck': false
+      }, {
+        'action': 'delete',
+        'describe': '鍒犻櫎',
+        'defaultCheck': false
+      }],
+      'actionList': null,
+      'dataAccess': null
+    }, {
+      'roleId': 'admin',
+      'permissionId': 'profile',
+      'permissionName': '璇︾粏椤垫潈闄�',
+      'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+      'actionEntitySet': [{
+        'action': 'add',
+        'describe': '鏂板',
+        'defaultCheck': false
+      }, {
+        'action': 'query',
+        'describe': '鏌ヨ',
+        'defaultCheck': false
+      }, {
+        'action': 'get',
+        'describe': '璇︽儏',
+        'defaultCheck': false
+      }, {
+        'action': 'update',
+        'describe': '淇敼',
+        'defaultCheck': false
+      }, {
+        'action': 'delete',
+        'describe': '鍒犻櫎',
+        'defaultCheck': false
+      }],
+      'actionList': null,
+      'dataAccess': null
+    }, {
+      'roleId': 'admin',
+      'permissionId': 'table',
+      'permissionName': '琛ㄦ牸鏉冮檺',
+      'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"}]',
+      'actionEntitySet': [{
+        'action': 'add',
+        'describe': '鏂板',
+        'defaultCheck': false
+      }, {
+        'action': 'import',
+        'describe': '瀵煎叆',
+        'defaultCheck': false
+      }, {
+        'action': 'get',
+        'describe': '璇︽儏',
+        'defaultCheck': false
+      }, {
+        'action': 'update',
+        'describe': '淇敼',
+        'defaultCheck': false
+      }],
+      'actionList': null,
+      'dataAccess': null
+    }, {
+      'roleId': 'admin',
+      'permissionId': 'form.vue',
+      'permissionName': '琛ㄥ崟鏉冮檺',
+      'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+      'actionEntitySet': [{
+        'action': 'add',
+        'describe': '鏂板',
+        'defaultCheck': false
+      }, {
+        'action': 'get',
+        'describe': '璇︽儏',
+        'defaultCheck': false
+      }, {
+        'action': 'query',
+        'describe': '鏌ヨ',
+        'defaultCheck': false
+      }, {
+        'action': 'update',
+        'describe': '淇敼',
+        'defaultCheck': false
+      }, {
+        'action': 'delete',
+        'describe': '鍒犻櫎',
+        'defaultCheck': false
+      }],
+      'actionList': null,
+      'dataAccess': null
+    }, {
+      'roleId': 'admin',
+      'permissionId': 'order',
+      'permissionName': '璁㈠崟绠$悊',
+      'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+      'actionEntitySet': [{
+        'action': 'add',
+        'describe': '鏂板',
+        'defaultCheck': false
+      }, {
+        'action': 'query',
+        'describe': '鏌ヨ',
+        'defaultCheck': false
+      }, {
+        'action': 'get',
+        'describe': '璇︽儏',
+        'defaultCheck': false
+      }, {
+        'action': 'update',
+        'describe': '淇敼',
+        'defaultCheck': false
+      }, {
+        'action': 'delete',
+        'describe': '鍒犻櫎',
+        'defaultCheck': false
+      }],
+      'actionList': null,
+      'dataAccess': null
+    }, {
+      'roleId': 'admin',
+      'permissionId': 'permission',
+      'permissionName': '鏉冮檺绠$悊',
+      'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+      'actionEntitySet': [{
+        'action': 'add',
+        'describe': '鏂板',
+        'defaultCheck': false
+      }, {
+        'action': 'get',
+        'describe': '璇︽儏',
+        'defaultCheck': false
+      }, {
+        'action': 'update',
+        'describe': '淇敼',
+        'defaultCheck': false
+      }, {
+        'action': 'delete',
+        'describe': '鍒犻櫎',
+        'defaultCheck': false
+      }],
+      'actionList': null,
+      'dataAccess': null
+    }, {
+      'roleId': 'admin',
+      'permissionId': 'role',
+      'permissionName': '瑙掕壊绠$悊',
+      'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+      'actionEntitySet': [{
+        'action': 'add',
+        'describe': '鏂板',
+        'defaultCheck': false
+      }, {
+        'action': 'get',
+        'describe': '璇︽儏',
+        'defaultCheck': false
+      }, {
+        'action': 'update',
+        'describe': '淇敼',
+        'defaultCheck': false
+      }, {
+        'action': 'delete',
+        'describe': '鍒犻櫎',
+        'defaultCheck': false
+      }],
+      'actionList': null,
+      'dataAccess': null
+    }, {
+      'roleId': 'admin',
+      'permissionId': 'table',
+      'permissionName': '妗屽瓙绠$悊',
+      'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+      'actionEntitySet': [{
+        'action': 'add',
+        'describe': '鏂板',
+        'defaultCheck': false
+      }, {
+        'action': 'get',
+        'describe': '璇︽儏',
+        'defaultCheck': false
+      }, {
+        'action': 'query',
+        'describe': '鏌ヨ',
+        'defaultCheck': false
+      }, {
+        'action': 'update',
+        'describe': '淇敼',
+        'defaultCheck': false
+      }, {
+        'action': 'delete',
+        'describe': '鍒犻櫎',
+        'defaultCheck': false
+      }],
+      'actionList': null,
+      'dataAccess': null
+    }, {
+      'roleId': 'admin',
+      'permissionId': 'user',
+      'permissionName': '鐢ㄦ埛绠$悊',
+      'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]',
+      'actionEntitySet': [{
+        'action': 'add',
+        'describe': '鏂板',
+        'defaultCheck': false
+      }, {
+        'action': 'import',
+        'describe': '瀵煎叆',
+        'defaultCheck': false
+      }, {
+        'action': 'get',
+        'describe': '璇︽儏',
+        'defaultCheck': false
+      }, {
+        'action': 'update',
+        'describe': '淇敼',
+        'defaultCheck': false
+      }, {
+        'action': 'delete',
+        'describe': '鍒犻櫎',
+        'defaultCheck': false
+      }, {
+        'action': 'export',
+        'describe': '瀵煎嚭',
+        'defaultCheck': false
+      }],
+      'actionList': null,
+      'dataAccess': null
+    }]
+  }
+
+  roleObj.permissions.push({
+    'roleId': 'admin',
+    'permissionId': 'support',
+    'permissionName': '瓒呯骇妯″潡',
+    'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]',
+    'actionEntitySet': [{
+      'action': 'add',
+      'describe': '鏂板',
+      'defaultCheck': false
+    }, {
+      'action': 'import',
+      'describe': '瀵煎叆',
+      'defaultCheck': false
+    }, {
+      'action': 'get',
+      'describe': '璇︽儏',
+      'defaultCheck': false
+    }, {
+      'action': 'update',
+      'describe': '淇敼',
+      'defaultCheck': false
+    }, {
+      'action': 'delete',
+      'describe': '鍒犻櫎',
+      'defaultCheck': false
+    }, {
+      'action': 'export',
+      'describe': '瀵煎嚭',
+      'defaultCheck': false
+    }],
+    'actionList': null,
+    'dataAccess': null
+  })
+
+  userInfo.role = roleObj
+  return builder(userInfo)
+}
+
+const userNav = (options) => {
+  const nav = [
+    // dashboard
+    {
+      'name': 'dashboard',
+      'parentId': 0,
+      'id': 1,
+      'meta': {
+        'icon': 'dashboard',
+        'title': '浠〃鐩�77',
+        'show': true
+      },
+      'component': 'RouteView',
+      'redirect': '/dashboard/workplace'
+    },
+    {
+      'name': 'workplace',
+      'parentId': 1,
+      'id': 7,
+      'meta': {
+        'title': '宸ヤ綔鍙�',
+        'show': true
+      },
+      'component': 'Workplace'
+    },
+    {
+      'name': 'monitor',
+      'path': 'https://www.baidu.com/',
+      'parentId': 1,
+      'id': 3,
+      'meta': {
+        'title': '鐩戞帶椤碉紙澶栭儴锛�',
+        'target': '_blank',
+        'show': true
+      }
+    },
+    {
+      'name': 'Analysis',
+      'parentId': 1,
+      'id': 2,
+      'meta': {
+        'title': '鍒嗘瀽椤�',
+        'show': true
+      },
+      'component': 'Analysis',
+      'path': '/dashboard/analysis'
+    },
+    {
+      'name': 'tests',
+      'parentId': 1,
+      'id': 8,
+      'meta': {
+        'title': '娴嬭瘯鍔熻兘',
+        'show': true
+      },
+      'component': 'TestWork'
+    },
+
+    // form
+    {
+      'name': 'form.vue',
+      'parentId': 0,
+      'id': 10,
+      'meta': {
+        'icon': 'form.vue',
+        'title': '琛ㄥ崟椤�'
+      },
+      'redirect': '/form/base-form',
+      'component': 'PageView'
+    },
+    {
+      'name': 'basic-form',
+      'parentId': 10,
+      'id': 6,
+      'meta': {
+        'title': '鍩虹琛ㄥ崟'
+      },
+      'component': 'BasicForm'
+    },
+    {
+      'name': 'step-form',
+      'parentId': 10,
+      'id': 5,
+      'meta': {
+        'title': '鍒嗘琛ㄥ崟'
+      },
+      'component': 'StepForm'
+    },
+    {
+      'name': 'advanced-form',
+      'parentId': 10,
+      'id': 4,
+      'meta': {
+        'title': '楂樼骇琛ㄥ崟'
+      },
+      'component': 'AdvanceForm'
+    },
+
+    // list
+    {
+      'name': 'list',
+      'parentId': 0,
+      'id': 10010,
+      'meta': {
+        'icon': 'table',
+        'title': '鍒楄〃椤�',
+        'show': true
+      },
+      'redirect': '/list/table-list',
+      'component': 'PageView'
+    },
+    {
+      'name': 'table-list',
+      'parentId': 10010,
+      'id': 10011,
+      'path': '/list/table-list/:pageNo([1-9]\\d*)?',
+      'meta': {
+        'title': '鏌ヨ琛ㄦ牸',
+        'show': true
+      },
+      'component': 'TableList'
+    },
+    {
+      'name': 'basic-list',
+      'parentId': 10010,
+      'id': 10012,
+      'meta': {
+        'title': '鏍囧噯鍒楄〃',
+        'show': true
+      },
+      'component': 'StandardList'
+    },
+    {
+      'name': 'card',
+      'parentId': 10010,
+      'id': 10013,
+      'meta': {
+        'title': '鍗$墖鍒楄〃',
+        'show': true
+      },
+      'component': 'CardList'
+    },
+    {
+      'name': 'search',
+      'parentId': 10010,
+      'id': 10014,
+      'meta': {
+        'title': '鎼滅储鍒楄〃',
+        'show': true
+      },
+      'redirect': '/list/search/article',
+      'component': 'SearchLayout'
+    },
+    {
+      'name': 'article',
+      'parentId': 10014,
+      'id': 10015,
+      'meta': {
+        'title': '鎼滅储鍒楄〃锛堟枃绔狅級',
+        'show': true
+      },
+      'component': 'SearchArticles'
+    },
+    {
+      'name': 'project',
+      'parentId': 10014,
+      'id': 10016,
+      'meta': {
+        'title': '鎼滅储鍒楄〃锛堥」鐩級',
+        'show': true
+      },
+      'component': 'SearchProjects'
+    },
+    {
+      'name': 'application',
+      'parentId': 10014,
+      'id': 10017,
+      'meta': {
+        'title': '鎼滅储鍒楄〃锛堝簲鐢級',
+        'show': true
+      },
+      'component': 'SearchApplications'
+    },
+
+    // profile
+    {
+      'name': 'profile',
+      'parentId': 0,
+      'id': 10018,
+      'meta': {
+        'title': '璇︽儏椤�',
+        'icon': 'profile',
+        'show': true
+      },
+      'redirect': '/profile/basic',
+      'component': 'RouteView'
+    },
+    {
+      'name': 'basic',
+      'parentId': 10018,
+      'id': 10019,
+      'meta': {
+        'title': '鍩虹璇︽儏椤�',
+        'show': true
+      },
+      'component': 'ProfileBasic'
+    },
+    {
+      'name': 'advanced',
+      'parentId': 10018,
+      'id': 10020,
+      'meta': {
+        'title': '楂樼骇璇︽儏椤�',
+        'show': true
+      },
+      'component': 'ProfileAdvanced'
+    },
+
+    // result
+    {
+      'name': 'result',
+      'parentId': 0,
+      'id': 10021,
+      'meta': {
+        'title': '缁撴灉椤�',
+        'icon': 'check-circle-o',
+        'show': true
+      },
+      'redirect': '/result/success',
+      'component': 'PageView'
+    },
+    {
+      'name': 'success',
+      'parentId': 10021,
+      'id': 10022,
+      'meta': {
+        'title': '鎴愬姛',
+        'hiddenHeaderContent': true,
+        'show': true
+      },
+      'component': 'ResultSuccess'
+    },
+    {
+      'name': 'fail',
+      'parentId': 10021,
+      'id': 10023,
+      'meta': {
+        'title': '澶辫触',
+        'hiddenHeaderContent': true,
+        'show': true
+      },
+      'component': 'ResultFail'
+    },
+
+    // Exception
+    {
+      'name': 'exception',
+      'parentId': 0,
+      'id': 10024,
+      'meta': {
+        'title': '寮傚父椤�',
+        'icon': 'warning',
+        'show': true
+      },
+      'redirect': '/exception/403',
+      'component': 'RouteView'
+    },
+    {
+      'name': '403',
+      'parentId': 10024,
+      'id': 10025,
+      'meta': {
+        'title': '403',
+        'show': true
+      },
+      'component': 'Exception403'
+    },
+    {
+      'name': '404',
+      'parentId': 10024,
+      'id': 10026,
+      'meta': {
+        'title': '404',
+        'show': true
+      },
+      'component': 'Exception404'
+    },
+    {
+      'name': '500',
+      'parentId': 10024,
+      'id': 10027,
+      'meta': {
+        'title': '500',
+        'show': true
+      },
+      'component': 'Exception500'
+    },
+
+    // account
+    {
+      'name': 'account',
+      'parentId': 0,
+      'id': 10028,
+      'meta': {
+        'title': '涓汉椤�',
+        'icon': 'user',
+        'show': true
+      },
+      'redirect': '/account/center',
+      'component': 'RouteView'
+    },
+    {
+      'name': 'center',
+      'parentId': 10028,
+      'id': 10029,
+      'meta': {
+        'title': '涓汉涓績',
+        'show': true
+      },
+      'component': 'AccountCenter'
+    },
+    // 鐗规畩涓夌骇鑿滃崟
+    {
+      'name': 'settings',
+      'parentId': 10028,
+      'id': 10030,
+      'meta': {
+        'title': '涓汉璁剧疆',
+        'hideHeader': true,
+        'hideChildren': true,
+        'show': true
+      },
+      'redirect': '/account/settings/base',
+      'component': 'AccountSettings'
+    },
+    {
+      'name': 'BaseSettings',
+      'path': '/account/settings/base',
+      'parentId': 10030,
+      'id': 10031,
+      'meta': {
+        'title': '鍩烘湰璁剧疆',
+        'show': false
+      },
+      'component': 'BaseSettings'
+    },
+    {
+      'name': 'SecuritySettings',
+      'path': '/account/settings/security',
+      'parentId': 10030,
+      'id': 10032,
+      'meta': {
+        'title': '瀹夊叏璁剧疆',
+        'show': false
+      },
+      'component': 'SecuritySettings'
+    },
+    {
+      'name': 'CustomSettings',
+      'path': '/account/settings/custom',
+      'parentId': 10030,
+      'id': 10033,
+      'meta': {
+        'title': '涓�у寲璁剧疆',
+        'show': false
+      },
+      'component': 'CustomSettings'
+    },
+    {
+      'name': 'BindingSettings',
+      'path': '/account/settings/binding',
+      'parentId': 10030,
+      'id': 10034,
+      'meta': {
+        'title': '璐︽埛缁戝畾',
+        'show': false
+      },
+      'component': 'BindingSettings'
+    },
+    {
+      'name': 'NotificationSettings',
+      'path': '/account/settings/notification',
+      'parentId': 10030,
+      'id': 10034,
+      'meta': {
+        'title': '鏂版秷鎭�氱煡',
+        'show': false
+      },
+      'component': 'NotificationSettings'
+    }
+  ]
+  const json = builder(nav)
+  return json
+}
+
+Mock.mock(/\/api\/user\/info/, 'get', info)
+Mock.mock(/\/api\/user\/nav/, 'get', userNav)
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/util.js b/iWare_RawMaterialWarehouse_Web/src/mock/util.js
new file mode 100644
index 0000000..a4be036
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/util.js
@@ -0,0 +1,38 @@
+const responseBody = {
+  message: '',
+  timestamp: 0,
+  result: null,
+  code: 0
+}
+
+export const builder = (data, message, code = 0, headers = {}) => {
+  responseBody.result = data
+  if (message !== undefined && message !== null) {
+    responseBody.message = message
+  }
+  if (code !== undefined && code !== 0) {
+    responseBody.code = code
+    responseBody._status = code
+  }
+  if (headers !== null && typeof headers === 'object' && Object.keys(headers).length > 0) {
+    responseBody._headers = headers
+  }
+  responseBody.timestamp = new Date().getTime()
+  return responseBody
+}
+
+export const getQueryParameters = (options) => {
+  const url = options.url
+  const search = url.split('?')[1]
+  if (!search) {
+    return {}
+  }
+  return JSON.parse('{"' + decodeURIComponent(search)
+    .replace(/"/g, '\\"')
+    .replace(/&/g, '","')
+    .replace(/=/g, '":"') + '"}')
+}
+
+export const getBody = (options) => {
+  return options.body && JSON.parse(options.body)
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/permission.js b/iWare_RawMaterialWarehouse_Web/src/permission.js
new file mode 100644
index 0000000..7e786a9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/permission.js
@@ -0,0 +1,123 @@
+import Vue from 'vue'
+import router from './router'
+import store from './store'
+
+import NProgress from 'nprogress' // progress bar
+import '@/components/NProgress/nprogress.less' // progress bar custom style
+import { setDocumentTitle, domTitle } from '@/utils/domUtil'
+import { ACCESS_TOKEN, ALL_APPS_MENU } from '@/store/mutation-types'
+
+import { Modal, notification } from 'ant-design-vue' // NProgress Configuration
+import { timeFix } from '@/utils/util'/// es/notification
+import Enumerable from 'linq'
+
+NProgress.configure({ showSpinner: false })
+const whiteList = ['login', 'register', 'registerResult', 'wechat'] // no redirect whitelist
+// 鏃犻粯璁ら椤电殑鎯呭喌
+const defaultRoutePath = '/welcome'
+
+router.beforeEach((to, from, next) => {
+  NProgress.start() // start progress bar
+  to.meta && (typeof to.meta.title !== 'undefined' && setDocumentTitle(`${to.meta.title} - ${domTitle}`))
+  if (Vue.ls.get(ACCESS_TOKEN)) {
+    /* has token */
+    if (to.path === '/user/login') {
+      //next({ path: defaultRoutePath })
+      NProgress.done()
+    } else {
+      if (store.getters.roles.length === 0) {
+        store
+          .dispatch('GetInfo')
+          .then(res => {
+            if (res.menus.length < 1) {
+              Modal.error({
+                title: '鎻愮ず锛�',
+                content: '鏃犺彍鍗曟潈闄愶紝璇疯仈绯荤鐞嗗憳',
+                okText: '纭畾',
+                onOk: () => {
+                  store.dispatch('Logout').then(() => {
+                    window.location.reload()
+                  })
+                }
+              })
+              return
+            }
+            // eslint-disable-next-line camelcase
+            const all_app_menu = Vue.ls.get(ALL_APPS_MENU)
+            let antDesignmenus
+            // eslint-disable-next-line camelcase
+            if (all_app_menu == null) {
+              const applocation = []
+              res.apps.forEach(item => {
+                const apps = { 'code': '', 'name': '', 'active': '', 'menu': '' }
+                if (item.active) {
+                  apps.code = item.code
+                  apps.name = item.name
+                  apps.active = item.active
+                  apps.menu = res.menus
+                  antDesignmenus = res.menus
+                } else {
+                  apps.code = item.code
+                  apps.name = item.name
+                  apps.active = item.active
+                  apps.menu = ''
+                }
+                applocation.push(apps)
+              })
+              if (antDesignmenus === undefined) {
+                // 娌℃湁璁剧疆榛樿鍊肩殑鎯呭喌涓嬶紝浣跨涓�涓簲鐢ㄨ彍鍗曚负榛樿鑿滃崟
+                var firstApps = Enumerable.from(applocation).first()
+                firstApps.active = 'Y'
+                firstApps.menu = res.menus
+                antDesignmenus = res.menus
+              }
+              Vue.ls.set(ALL_APPS_MENU, applocation, 7 * 24 * 60 * 60 * 1000)//缂撳瓨7澶�
+              // 寤惰繜 1 绉掓樉绀烘杩庝俊鎭�
+              setTimeout(() => {
+                notification.success({
+                  message: '娆㈣繋',
+                  description: `${timeFix()}锛屾杩庡洖鏉
+                })
+              }, 1000)
+            } else {
+              antDesignmenus = Vue.ls.get(ALL_APPS_MENU)[0].menu
+            }
+            store.dispatch('GenerateRoutes', { antDesignmenus }).then(() => {
+              // 鍔ㄦ�佹坊鍔犲彲璁块棶璺敱琛�
+              router.addRoutes(store.getters.addRouters)
+              // 璇锋眰甯︽湁 redirect 閲嶅畾鍚戞椂锛岀櫥褰曡嚜鍔ㄩ噸瀹氬悜鍒拌鍦板潃
+              const redirect = decodeURIComponent(from.query.redirect || to.path)
+              if (to.path === redirect) {
+                next({ path: redirect })
+                // hack鏂规硶 纭繚addRoutes宸插畬鎴� ,set the replace: true so the navigation will not leave a history record
+                next({ ...to, replace: true })
+              } else {
+                // 璺宠浆鍒扮洰鐨勮矾鐢�
+                next({ path: redirect })
+              }
+            })
+          })
+          .catch(() => {
+            store.dispatch('Logout').then(() => {
+              next({ path: '/user/login', query: { redirect: to.fullPath } })
+            })
+          })
+        store.dispatch('getNoticReceiveList').then((res) => { })
+      } else {
+        next()
+      }
+    }
+  } else {
+    if (whiteList.includes(to.name)) {
+      // 鍦ㄥ厤鐧诲綍鐧藉悕鍗曪紝鐩存帴杩涘叆
+      next()
+    } else {
+      next({ path: '/user/login', query: { redirect: to.fullPath } })
+      NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it
+    }
+  }
+})
+
+router.afterEach(() => {
+  NProgress.done() // finish progress bar
+})
diff --git a/iWare_RawMaterialWarehouse_Web/src/router/generator-routers.js b/iWare_RawMaterialWarehouse_Web/src/router/generator-routers.js
new file mode 100644
index 0000000..457ea1f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/router/generator-routers.js
@@ -0,0 +1,263 @@
+
+import { BasicLayout, BlankLayout, PageView, RouteView, Iframe } from '@/layouts'
+
+// 鍓嶇璺敱琛�
+const constantRouterComponents = {
+  // 鍩虹椤甸潰 layout 蹇呴』寮曞叆
+  BasicLayout: BasicLayout,
+  BlankLayout: BlankLayout,
+  RouteView: RouteView,
+  PageView: PageView,
+  Iframe: Iframe,
+  '403': () => import('@/views/system/exception/403'),
+  '404': () => import('@/views/system/exception/404'),
+  '500': () => import('@/views/system/exception/500'),
+
+  'Workplace': () => import('@/views/system/dashboard/Workplace'),
+  // account
+  'AccountCenter': () => import('@/views/system/account/center/Index'),
+  'AccountSettings': () => import('@/views/system/account/settings/Index'),
+  'BaseSettings': () => import('@/views/system/account/settings/BaseSetting'),
+  'SecuritySettings': () => import('@/views/system/account/settings/Security'),
+  'CustomSettings': () => import('@/views/system/account/settings/Custom'),
+  'BindingSettings': () => import('@/views/system/account/settings/Binding'),
+  'NotificationSettings': () => import('@/views/system/account/settings/Notification'),
+
+  // 榛樿棣栭〉
+  'Console': () => import('@/views/system/index/welcome')
+}
+
+// 鍓嶇鏈壘鍒伴〉闈㈣矾鐢憋紙鍥哄畾涓嶇敤鏀癸級銆佸師鏉ヤ负 /404
+const notFoundRouter = {
+  path: '*', redirect: '/welcome', hidden: true
+}
+// 涓汉涓績椤甸潰
+const userAccount = [
+  // account
+  {
+    'name': 'account',
+    'pid': 0,
+    'id': 10028,
+    'meta': {
+      'title': '涓汉椤�',
+      'icon': 'user',
+      'show': false
+    },
+    'redirect': '/account/center',
+    'component': 'RouteView'
+  },
+  {
+    'name': 'center',
+    'pid': 10028,
+    'id': 10029,
+    'meta': {
+      'title': '涓汉涓績',
+      'show': false
+    },
+    'component': 'AccountCenter'
+  },
+  // 鐗规畩涓夌骇鑿滃崟
+  {
+    'name': 'settings',
+    'pid': '10028',
+    'id': '10030',
+    'meta': {
+      'title': '涓汉璁剧疆',
+      'hideHeader': true,
+      'hideChildren': true,
+      'show': false
+    },
+    'redirect': '/account/settings/base',
+    'component': 'AccountSettings'
+  },
+  {
+    'name': 'BaseSettings',
+    'path': '/account/settings/base',
+    'pid': 10030,
+    'id': 10031,
+    'meta': {
+      'title': '鍩烘湰璁剧疆',
+      'show': false
+    },
+    'component': 'BaseSettings'
+  },
+  {
+    'name': 'SecuritySettings',
+    'path': '/account/settings/security',
+    'pid': 10030,
+    'id': 10032,
+    'meta': {
+      'title': '瀹夊叏璁剧疆',
+      'show': false
+    },
+    'component': 'SecuritySettings'
+  },
+  {
+    'name': 'CustomSettings',
+    'path': '/account/settings/custom',
+    'pid': 10030,
+    'id': 10033,
+    'meta': {
+      'title': '涓�у寲璁剧疆',
+      'show': false
+    },
+    'component': 'CustomSettings'
+  },
+  {
+    'name': 'BindingSettings',
+    'path': '/account/settings/binding',
+    'pid': 10030,
+    'id': 10034,
+    'meta': {
+      'title': '璐︽埛缁戝畾',
+      'show': false
+    },
+    'component': 'BindingSettings'
+  },
+  {
+    'name': 'NotificationSettings',
+    'path': '/account/settings/notification',
+    'pid': 10030,
+    'id': 10034,
+    'meta': {
+      'title': '鏂版秷鎭�氱煡',
+      'show': false
+    },
+    'component': 'NotificationSettings'
+  },
+  {
+    'name': 'Console',
+    'path': '/welcome',
+    'pid': 0,
+    'id': 183183,
+    'meta': {
+      'title': '棣栭〉',
+      'show': false
+    },
+    'component': 'Console'
+  }
+
+]
+
+// 鏍圭骇鑿滃崟
+const rootRouter = {
+  key: '',
+  name: 'MenuIndex.vue',
+  path: '',
+  component: 'BasicLayout',
+  redirect: '/welcome',
+  meta: {
+    title: '棣栭〉'
+  },
+  children: []
+}
+
+/**
+ * 鍔ㄦ�佺敓鎴愯彍鍗�
+ * @param data
+ * @returns {Promise<Router>}
+ */
+export const generatorDynamicRouter = (data) => {
+  return new Promise((resolve, reject) => {
+    const resNav = data.antDesignmenus
+    const menuNav = []
+    const childrenNav = []
+    //      鍚庣鏁版嵁, 鏍圭骇鏍戞暟缁�,  鏍圭骇 PID
+    listToTree(resNav, childrenNav, 0)
+
+    /**
+     * 澧炲姞闈欐�佺綉椤�
+     */
+    listToTree(userAccount, childrenNav, 0)
+    rootRouter.children = childrenNav
+    menuNav.push(rootRouter)
+    const routers = generator(menuNav)
+    routers.push(notFoundRouter)
+    resolve(routers)
+  }).catch(err => {
+    // reject('鍔犺浇鑿滃崟澶辫触')
+    return Promise.reject(err)
+  })
+}
+
+/**
+ * 鏍煎紡鍖栨爲褰㈢粨鏋勬暟鎹� 鐢熸垚 vue-router 灞傜骇璺敱琛�
+ *
+ * @param routerMap
+ * @param parent
+ * @returns {*}
+ */
+export const generator = (routerMap, parent) => {
+  return routerMap.map(item => {
+    // eslint-disable-next-line no-unused-vars
+    const { title, show, hideChildren, hiddenHeaderContent, target, icon, link } = item.meta || {}
+    const currentRouter = {
+      // 濡傛灉璺敱璁剧疆浜� path锛屽垯浣滀负榛樿 path锛屽惁鍒� 璺敱鍦板潃 鍔ㄦ�佹嫾鎺ョ敓鎴愬 /dashboard/workplace
+      path: item.path || `${parent && parent.path || ''}/${item.key}`,
+      // 璺敱鍚嶇О锛屽缓璁敮涓�
+      name: item.name || item.key || '',
+      // 璇ヨ矾鐢卞搴旈〉闈㈢殑 缁勪欢 :鏂规1
+      // component: constantRouterComponents[item.component || item.key],
+      // 璇ヨ矾鐢卞搴旈〉闈㈢殑 缁勪欢 :鏂规2 (鍔ㄦ�佸姞杞�)
+      component: (constantRouterComponents[item.component || item.key]) || (() => import(`@/views/${item.component}`)),
+      // meta: 椤甸潰鏍囬, 鑿滃崟鍥炬爣, 椤甸潰鏉冮檺(渚涙寚浠ゆ潈闄愮敤锛屽彲鍘绘帀)
+      meta: {
+        title: title,
+        icon: icon || undefined,
+        // hiddenHeaderContent: hiddenHeaderContent,
+        target: target,
+        link: link
+      }
+    }
+    // 鏄惁璁剧疆浜嗛殣钘忚彍鍗�
+    if (show === false) {
+      currentRouter.hidden = true
+    }
+    // 鏄惁璁剧疆浜嗛殣钘忓瓙鑿滃崟
+    if (hideChildren) {
+      currentRouter.hideChildrenInMenu = true
+    }
+    // 涓轰簡闃叉鍑虹幇鍚庣杩斿洖缁撴灉涓嶈鑼冿紝澶勭悊鏈夊彲鑳藉嚭鐜版嫾鎺ュ嚭涓や釜 鍙嶆枩鏉�
+    if (!currentRouter.path.startsWith('http')) {
+      currentRouter.path = currentRouter.path.replace('//', '/')
+    }
+    // 閲嶅畾鍚�
+    item.redirect && (currentRouter.redirect = item.redirect)
+    // 鏄惁鏈夊瓙鑿滃崟锛屽苟閫掑綊澶勭悊
+    if (item.children && item.children.length > 0) {
+      // Recursion
+      currentRouter.children = generator(item.children, currentRouter)
+    }
+    return currentRouter
+  })
+}
+
+/**
+ * 鏁扮粍杞爲褰㈢粨鏋�
+ * @param list 婧愭暟缁�
+ * @param tree 鏍�
+ * @param parentId 鐖禝D
+ */
+const listToTree = (list, tree, parentId) => {
+  if (list) {
+    list.forEach(item => {
+      // 鍒ゆ柇鏄惁涓虹埗绾ц彍鍗�
+      // eslint-disable-next-line eqeqeq
+      if (item.pid == parentId) {
+        const child = {
+          ...item,
+          key: item.key || item.name,
+          children: []
+        }
+        // 杩唬 list锛� 鎵惧埌褰撳墠鑿滃崟鐩哥鍚堢殑鎵�鏈夊瓙鑿滃崟
+        listToTree(list, child.children, item.id)
+        // 鍒犳帀涓嶅瓨鍦� children 鍊肩殑灞炴��
+        if (child.children.length <= 0) {
+          delete child.children
+        }
+        // 鍔犲叆鍒版爲涓�
+        tree.push(child)
+      }
+    })
+  }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/router/index.js b/iWare_RawMaterialWarehouse_Web/src/router/index.js
new file mode 100644
index 0000000..dd72772
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/router/index.js
@@ -0,0 +1,19 @@
+import Vue from 'vue'
+import Router from 'vue-router'
+import { constantRouterMap } from '@/config/router.config'
+
+// hack router push callback
+const originalPush = Router.prototype.push
+Router.prototype.push = function push (location, onResolve, onReject) {
+  if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
+  return originalPush.call(this, location).catch(err => err)
+}
+
+Vue.use(Router)
+
+export default new Router({
+  mode: 'history',
+  base: process.env.BASE_URL,
+  scrollBehavior: () => ({ y: 0 }),
+  routes: constantRouterMap
+})
diff --git a/iWare_RawMaterialWarehouse_Web/src/store/getters.js b/iWare_RawMaterialWarehouse_Web/src/store/getters.js
new file mode 100644
index 0000000..0d3f37d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/store/getters.js
@@ -0,0 +1,20 @@
+const getters = {
+  device: state => state.app.device,
+  theme: state => state.app.theme,
+  color: state => state.app.color,
+  token: state => state.user.token,
+  avatar: state => state.user.avatar,
+  nickname: state => state.user.name,
+  welcome: state => state.user.welcome,
+  roles: state => state.user.roles,
+  buttons: state => state.user.buttons,
+  allButtons: state => state.user.allButtons,
+  admintype: state => state.user.admintype,
+  userInfo: state => state.user.info,
+  userNotices: state => state.user.notices,
+  addRouters: state => state.permission.addRouters,
+  multiTab: state => state.app.multiTab,
+  lang: state => state.i18n.lang
+}
+
+export default getters
diff --git a/iWare_RawMaterialWarehouse_Web/src/store/index.js b/iWare_RawMaterialWarehouse_Web/src/store/index.js
new file mode 100644
index 0000000..687d21b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/store/index.js
@@ -0,0 +1,32 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+
+import app from './modules/app'
+import user from './modules/user'
+
+// default router permission control
+// import permission from './modules/permission'
+
+// dynamic router permission control (Experimental)
+import permission from './modules/async-router'
+import getters from './getters'
+
+Vue.use(Vuex)
+
+export default new Vuex.Store({
+  modules: {
+    app,
+    user,
+    permission
+  },
+  state: {
+
+  },
+  mutations: {
+
+  },
+  actions: {
+
+  },
+  getters
+})
diff --git a/iWare_RawMaterialWarehouse_Web/src/store/modules/app.js b/iWare_RawMaterialWarehouse_Web/src/store/modules/app.js
new file mode 100644
index 0000000..24bf365
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/store/modules/app.js
@@ -0,0 +1,138 @@
+import Vue from 'vue'
+import {
+  SIDEBAR_TYPE,
+  DEFAULT_THEME,
+  DEFAULT_LAYOUT_MODE,
+  DEFAULT_COLOR,
+  DEFAULT_COLOR_WEAK,
+  DEFAULT_FIXED_HEADER,
+  DEFAULT_FIXED_SIDEMENU,
+  DEFAULT_FIXED_HEADER_HIDDEN,
+  DEFAULT_CONTENT_WIDTH_TYPE,
+  DEFAULT_MULTI_TAB,
+  DEFAULT_CRUMBS_STATE
+} from '@/store/mutation-types'
+
+const app = {
+  state: {
+    sidebar: true,
+    device: 'desktop',
+    theme: '',
+    layout: '',
+    contentWidth: '',
+    fixedHeader: false,
+    fixSiderbar: false,
+    autoHideHeader: false,
+    color: null,
+    weak: false,
+    multiTab: true,
+    crumbsState: true,
+    hasError: false
+  },
+  mutations: {
+    SET_SIDEBAR_TYPE: (state, type) => {
+      state.sidebar = type
+      Vue.ls.set(SIDEBAR_TYPE, type)
+    },
+    CLOSE_SIDEBAR: (state) => {
+      Vue.ls.set(SIDEBAR_TYPE, true)
+      state.sidebar = false
+    },
+    TOGGLE_DEVICE: (state, device) => {
+      state.device = device
+    },
+    TOGGLE_THEME: (state, theme) => {
+      // setStore('_DEFAULT_THEME', theme)
+      Vue.ls.set(DEFAULT_THEME, theme)
+      state.theme = theme
+    },
+    TOGGLE_LAYOUT_MODE: (state, layout) => {
+      Vue.ls.set(DEFAULT_LAYOUT_MODE, layout)
+      state.layout = layout
+    },
+    TOGGLE_FIXED_HEADER: (state, fixed) => {
+      Vue.ls.set(DEFAULT_FIXED_HEADER, fixed)
+      state.fixedHeader = fixed
+    },
+    TOGGLE_FIXED_SIDERBAR: (state, fixed) => {
+      Vue.ls.set(DEFAULT_FIXED_SIDEMENU, fixed)
+      state.fixSiderbar = fixed
+    },
+    TOGGLE_FIXED_HEADER_HIDDEN: (state, show) => {
+      Vue.ls.set(DEFAULT_FIXED_HEADER_HIDDEN, show)
+      state.autoHideHeader = show
+    },
+    TOGGLE_CONTENT_WIDTH: (state, type) => {
+      Vue.ls.set(DEFAULT_CONTENT_WIDTH_TYPE, type)
+      state.contentWidth = type
+    },
+    TOGGLE_COLOR: (state, color) => {
+      Vue.ls.set(DEFAULT_COLOR, color)
+      state.color = color
+    },
+    TOGGLE_WEAK: (state, flag) => {
+      Vue.ls.set(DEFAULT_COLOR_WEAK, flag)
+      state.weak = flag
+    },
+    TOGGLE_MULTI_TAB: (state, bool) => {
+      Vue.ls.set(DEFAULT_MULTI_TAB, bool)
+      state.multiTab = bool
+    },
+    TOGGLE_CRUMBS_STATE: (state, bool) => {
+      Vue.ls.set(DEFAULT_CRUMBS_STATE, bool)
+      state.crumbsState = bool
+    },
+    SET_HAS_ERROR: (state, bool) => {
+      state.hasError = bool
+    }
+  },
+  actions: {
+    setSidebar ({ commit }, type) {
+      commit('SET_SIDEBAR_TYPE', type)
+    },
+    CloseSidebar ({ commit }) {
+      commit('CLOSE_SIDEBAR')
+    },
+    ToggleDevice ({ commit }, device) {
+      commit('TOGGLE_DEVICE', device)
+    },
+    ToggleTheme ({ commit }, theme) {
+      commit('TOGGLE_THEME', theme)
+    },
+    ToggleLayoutMode ({ commit }, mode) {
+      commit('TOGGLE_LAYOUT_MODE', mode)
+    },
+    ToggleFixedHeader ({ commit }, fixedHeader) {
+      if (!fixedHeader) {
+        commit('TOGGLE_FIXED_HEADER_HIDDEN', false)
+      }
+      commit('TOGGLE_FIXED_HEADER', fixedHeader)
+    },
+    ToggleFixSiderbar ({ commit }, fixSiderbar) {
+      commit('TOGGLE_FIXED_SIDERBAR', fixSiderbar)
+    },
+    ToggleFixedHeaderHidden ({ commit }, show) {
+      commit('TOGGLE_FIXED_HEADER_HIDDEN', show)
+    },
+    ToggleContentWidth ({ commit }, type) {
+      commit('TOGGLE_CONTENT_WIDTH', type)
+    },
+    ToggleColor ({ commit }, color) {
+      commit('TOGGLE_COLOR', color)
+    },
+    ToggleWeak ({ commit }, weakFlag) {
+      commit('TOGGLE_WEAK', weakFlag)
+    },
+    ToggleMultiTab ({ commit }, bool) {
+      commit('TOGGLE_MULTI_TAB', bool)
+    },
+    ToggleCrumbsState ({ commit }, bool) {
+      commit('TOGGLE_CRUMBS_STATE', bool)
+    },
+    SetHasError ({ commit }, bool) {
+      commit('SET_HAS_ERROR', bool)
+    }
+  }
+}
+
+export default app
diff --git a/iWare_RawMaterialWarehouse_Web/src/store/modules/async-router.js b/iWare_RawMaterialWarehouse_Web/src/store/modules/async-router.js
new file mode 100644
index 0000000..4491e06
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/store/modules/async-router.js
@@ -0,0 +1,33 @@
+/**
+ * 鍚戝悗绔姹傜敤鎴风殑鑿滃崟锛屽姩鎬佺敓鎴愯矾鐢�
+ */
+import { constantRouterMap } from '@/config/router.config'
+import { generatorDynamicRouter } from '@/router/generator-routers'
+
+const permission = {
+  state: {
+    routers: constantRouterMap,
+    addRouters: []
+  },
+  mutations: {
+    SET_ROUTERS: (state, routers) => {
+      state.addRouters = routers
+      state.routers = constantRouterMap.concat(routers)
+    }
+  },
+  actions: {
+    GenerateRoutes ({ commit }, data) {
+      return new Promise(resolve => {
+        generatorDynamicRouter(data).then(routers => {
+          commit('SET_ROUTERS', routers)
+          resolve()
+        })
+      }).catch(err => {
+        // eslint-disable-next-line no-undef
+        reject(err)
+      })
+    }
+  }
+}
+
+export default permission
diff --git a/iWare_RawMaterialWarehouse_Web/src/store/modules/permission.js b/iWare_RawMaterialWarehouse_Web/src/store/modules/permission.js
new file mode 100644
index 0000000..c614821
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/store/modules/permission.js
@@ -0,0 +1,76 @@
+import { asyncRouterMap, constantRouterMap } from '@/config/router.config'
+
+/**
+ * 杩囨护璐︽埛鏄惁鎷ユ湁鏌愪竴涓潈闄愶紝骞跺皢鑿滃崟浠庡姞杞藉垪琛ㄧЩ闄�
+ *
+ * @param permission
+ * @param route
+ * @returns {boolean}
+ */
+function hasPermission (permission, route) {
+  // if (route.meta && route.meta.permission) {
+  //   let flag = false
+  //   for (let i = 0, len = permission.length; i < len; i++) {
+  //     flag = route.meta.permission.includes(permission[i])
+  //     if (flag) {
+  //       return true
+  //     }
+  //   }
+  //   return false
+  // }
+  return true
+}
+
+/**
+ * 鍗曡处鎴峰瑙掕壊鏃讹紝浣跨敤璇ユ柟娉曞彲杩囨护瑙掕壊涓嶅瓨鍦ㄧ殑鑿滃崟
+ *
+ * @param roles
+ * @param route
+ * @returns {*}
+ */
+// eslint-disable-next-line
+function hasRole(roles, route) {
+  if (route.meta && route.meta.roles) {
+    return route.meta.roles.includes(roles.id)
+  } else {
+    return true
+  }
+}
+
+function filterAsyncRouter (routerMap, roles) {
+  const accessedRouters = routerMap.filter(route => {
+    if (hasPermission(roles.permissionList, route)) {
+      if (route.children && route.children.length) {
+        route.children = filterAsyncRouter(route.children, roles)
+      }
+      return true
+    }
+    return false
+  })
+  return accessedRouters
+}
+
+const permission = {
+  state: {
+    routers: constantRouterMap,
+    addRouters: []
+  },
+  mutations: {
+    SET_ROUTERS: (state, routers) => {
+      state.addRouters = routers
+      state.routers = constantRouterMap.concat(routers)
+    }
+  },
+  actions: {
+    GenerateRoutes ({ commit }, data) {
+      return new Promise(resolve => {
+        const { roles } = data
+        const accessedRouters = filterAsyncRouter(asyncRouterMap, roles)
+        commit('SET_ROUTERS', accessedRouters)
+        resolve()
+      })
+    }
+  }
+}
+
+export default permission
diff --git a/iWare_RawMaterialWarehouse_Web/src/store/modules/user.js b/iWare_RawMaterialWarehouse_Web/src/store/modules/user.js
new file mode 100644
index 0000000..9395c25
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/store/modules/user.js
@@ -0,0 +1,258 @@
+import Vue from 'vue'
+import { login, getLoginUser, logout } from '@/api/modular/system/loginManage'
+import { sysDictTypeTree } from '@/api/modular/system/dictManage'
+import { sysMenuChange } from '@/api/modular/system/menuManage'
+// eslint-disable-next-line no-unused-vars
+import { ACCESS_TOKEN, ALL_APPS_MENU, DICT_TYPE_TREE_DATA, NOTICE_RECEIVED } from '@/store/mutation-types'
+import { sysFileInfoPreview } from '@/api/modular/system/fileManage'
+import {
+  unReadNotice
+} from '@/api/modular/system/noticeReceivedManage'
+
+import { welcome, dateFormat } from '@/utils/util'
+import store from '../index'
+import router from '../../router'
+
+const user = {
+  state: {
+    token: '',
+    name: '',
+    welcome: '',
+    avatar: '',
+    buttons: [], // 鎸夐挳鏉冮檺
+    allButtons: [], // 鎵�鏈夋寜閽潈闄�
+    admintype: '', // 鏄惁鏄秴绠�
+    roles: [],
+    info: {},
+    notices: [] // 鎺ユ敹鐨勯�氱煡鍏憡
+  },
+
+  mutations: {
+    SET_TOKEN: (state, token) => {
+      state.token = token
+    },
+    SET_NAME: (state, { name, welcome }) => {
+      state.name = name
+      state.welcome = welcome
+    },
+    SET_AVATAR: (state, avatar) => {
+      state.avatar = avatar
+    },
+    SET_ROLES: (state, roles) => {
+      state.roles = roles
+    },
+    SET_INFO: (state, info) => {
+      state.info = info
+    },
+    SET_BUTTONS: (state, buttons) => {
+      state.buttons = buttons
+    },
+    SET_ALL_BUTTONS: (state, allButtons) => {
+      state.allButtons = allButtons
+    },
+    SET_ADMINTYPE: (state, admintype) => {
+      state.admintype = admintype
+    },
+    SET_NOTICES: (state, notices) => {
+      state.notices = notices
+    },
+    APPEND_NOTICE: (state, notice) => {
+      notice.publicTime = dateFormat(notice.publicTime, 'YYYY-mm-dd HH:MM:SS')
+      const notices = state.notices
+      const temp = notices.rows.filter(m => { return m.value === notice.type })[0]
+      const other = notices.rows.filter(m => { return m.value !== notice.type })
+      temp.noticeData.unshift(notice)
+      notices.totalRows++
+      if (temp.noticeData.length > 6) {
+        temp.noticeData.pop()
+      }
+      notices.rows = []
+      notices.rows.push(temp)
+      notices.rows.push.apply(notices.rows, other)
+      notices.rows.sort((obj1, obj2) => {
+        return obj1.index - obj2.index
+      })
+      state.notices = notices
+    },
+    SUBTRACT_NOTICE: (state, notice) => {
+      // 鏌ョ湅閫氱煡鍚庡湪娑堟伅鎻愮ず涓秷闄ゅ凡缁忔煡鐪嬭繃鐨勶紝姝ゅ嚱鏁� 鍙兘 瀛樺湪鏈煡bug
+      // notice.publicTime = dateFormat(notice.publicTime, 'YYYY-mm-dd HH:MM:SS')
+      const notices = state.notices
+      // debugger
+      const temp = notices.rows.filter(m => { return m.value === notice.type })[0]
+      const other = notices.rows.filter(m => { return m.value !== notice.type })
+      temp.noticeData.shift(notice)
+      notices.totalRows--
+      if (temp.noticeData.length > 6) {
+        temp.noticeData.pop()
+      }
+      notices.rows = []
+      notices.rows.pop(temp)
+      notices.rows.pop.apply(notices.rows, other)
+      notices.rows.sort((obj1, obj2) => {
+        return obj1.index - obj2.index
+      })
+      state.notices = notices
+    }
+  },
+
+  actions: {
+    // 鐧诲綍
+    Login ({ commit }, userInfo) {
+      Vue.ls.remove(ALL_APPS_MENU)//娓呴櫎鑿滃崟缂撳瓨
+      return new Promise((resolve, reject) => {
+        login(userInfo).then(response => {
+          if (!response.success) {
+            reject(response.message)
+            return
+          }
+         // 浠庡搷搴� Header 涓鍙栵紝澶勭悊閫昏緫绉昏嚦 request.js 涓鐞�
+          // const result = response.data
+          // Vue.ls.set(ACCESS_TOKEN, result, 7 * 24 * 60 * 60 * 1000)
+          // commit('SET_TOKEN', result)
+          resolve()
+        // eslint-disable-next-line handle-callback-err
+        }).catch(error => {
+          // eslint-disable-next-line prefer-promise-reject-errors
+          reject('鍚庣鏈惎鍔ㄦ垨浠g悊閿欒')
+        })
+      })
+    },
+
+    // 鑾峰彇鐢ㄦ埛淇℃伅
+    GetInfo ({ commit }) {
+      return new Promise((resolve, reject) => {
+        getLoginUser().then(response => {
+          if (response.success) {
+            const data = response.data
+            commit('SET_ADMINTYPE', data.adminType)
+            commit('SET_ROLES', 1)
+            commit('SET_BUTTONS', data.permissions)
+            commit('SET_ALL_BUTTONS', data.allPermissions)
+            commit('SET_INFO', data)
+            commit('SET_NAME', { name: data.name, welcome: welcome() })
+            if (data.avatar != null) {
+              sysFileInfoPreview({ id: data.avatar }).then((res) => {
+                commit('SET_AVATAR', window.URL.createObjectURL(new Blob([res])))
+              }).catch((err) => {
+                this.$message.error('棰勮閿欒锛�' + err.message)
+              })
+              // commit('SET_AVATAR', process.env.VUE_APP_API_BASE_URL + '/sysFileInfo/preview?id=' + data.avatar)
+            } else {
+              commit('SET_AVATAR', '/avatar2.jpg')
+            }
+            resolve(data)
+          } else {
+            // eslint-disable-next-line no-undef
+            reject(new Error(response.message))
+          }
+        })
+        //鐧诲綍杩囨湡鍚庡墠绔細鍙戠敓楂橀璁块棶鍚庣鐨勯棶棰�
+        //.catch(error => {
+        //  reject(error)
+        //})
+      })
+    },
+
+    // 鐧诲嚭
+    Logout ({ commit, state }) {
+      return new Promise((resolve) => {
+        logout(state.token).then(() => {
+          resolve()
+        }).catch(() => {
+          resolve()
+        }).finally(() => {
+          commit('SET_TOKEN', '')
+          commit('SET_ROLES', [])
+          commit('SET_BUTTONS', [])
+          commit('SET_ALL_BUTTONS', [])
+          commit('SET_ADMINTYPE', '')
+          Vue.ls.remove(ACCESS_TOKEN)
+          Vue.ls.remove(ALL_APPS_MENU)
+          Vue.ls.remove(DICT_TYPE_TREE_DATA)
+          Vue.ls.remove('X-Access-Token')
+        })
+      })
+    },
+
+    // 鍔犺浇鎵�鏈夊瓧鍏告暟鎹�
+    dictTypeData () {
+      return new Promise((resolve, reject) => {
+        sysDictTypeTree().then((data) => {
+          if (data.success) {
+            const result = data.data
+            Vue.ls.set(DICT_TYPE_TREE_DATA, result)
+            resolve()
+          } else {
+            // eslint-disable-next-line no-undef
+            reject(new Error(data.message))
+          }
+        }).catch(error => {
+          reject(error)
+        })
+      })
+    },
+
+    // 鍒囨崲搴旂敤鑿滃崟
+    MenuChange ({ commit }, application) {
+      return new Promise((resolve) => {
+        sysMenuChange({ application: application.code }).then((res) => {
+          const apps = { 'code': '', 'name': '', 'active': '', 'menu': '' }
+          apps.active = true
+          apps.menu = res.data
+          // eslint-disable-next-line camelcase
+          const all_app_menu = Vue.ls.get(ALL_APPS_MENU)
+          // eslint-disable-next-line camelcase
+          const new_false_all_app_menu = []
+          // 鍏堝幓闄ゆ墍鏈夐粯璁ょ殑锛屼互涓烘鏃跺垏鎹㈢殑鍗冲皢鎴愪负鍓嶇缂撳瓨榛樿鐨勫簲鐢�
+          all_app_menu.forEach(item => {
+            if (item.active) {
+              item.active = false
+            }
+            new_false_all_app_menu.push(item)
+          })
+          // 姝ゆ椂缂撳瓨涓叏閮ㄩ兘鏄笉榛樿鐨勫簲鐢�
+          Vue.ls.set(ALL_APPS_MENU, new_false_all_app_menu)
+          apps.name = application.name
+          apps.code = application.code
+          const applocationR = []
+          applocationR.push(apps)
+          Vue.ls.set(ALL_APPS_MENU, applocationR)
+          resolve(res)
+          const antDesignmenus = res.data
+          store.dispatch('GenerateRoutes', { antDesignmenus }).then(() => {
+            router.addRoutes(store.getters.addRouters)
+          })
+          // 鍒囨崲搴旂敤鍒锋柊鏁翠綋鐣岄潰锛屾殏涓斿彇娑�
+          // window.location.reload()
+        }).catch(() => {
+          resolve()
+        })
+      })
+    },
+    // 鑾峰彇鏀跺埌鐨勯�氱煡
+    getNoticReceiveList({
+      commit
+    }) {
+      return new Promise((resolve, reject) => {
+        unReadNotice({
+          pageSize: 6
+        }).then((data) => {
+          if (data.success) {
+            const result = data.data
+            commit('SET_NOTICES', result)
+            resolve()
+          } else {
+            // eslint-disable-next-line no-undef
+            reject(new Error(data.message))
+          }
+        }).catch(error => {
+          reject(error)
+        })
+      })
+    }
+
+  }
+}
+
+export default user
diff --git a/iWare_RawMaterialWarehouse_Web/src/store/mutation-types.js b/iWare_RawMaterialWarehouse_Web/src/store/mutation-types.js
new file mode 100644
index 0000000..ca372f8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/store/mutation-types.js
@@ -0,0 +1,19 @@
+export const ACCESS_TOKEN = 'Access-Token'
+export const SIDEBAR_TYPE = 'SIDEBAR_TYPE'
+export const ALL_APPS_MENU = 'ALL_APPS_MENU'
+export const DEFAULT_THEME = 'DEFAULT_THEME'
+export const DEFAULT_LAYOUT_MODE = 'DEFAULT_LAYOUT_MODE'
+export const DEFAULT_COLOR = 'DEFAULT_COLOR'
+export const DEFAULT_COLOR_WEAK = 'DEFAULT_COLOR_WEAK'
+export const DEFAULT_FIXED_HEADER = 'DEFAULT_FIXED_HEADER'
+export const DEFAULT_FIXED_SIDEMENU = 'DEFAULT_FIXED_SIDEMENU'
+export const DEFAULT_FIXED_HEADER_HIDDEN = 'DEFAULT_FIXED_HEADER_HIDDEN'
+export const DEFAULT_CONTENT_WIDTH_TYPE = 'DEFAULT_CONTENT_WIDTH_TYPE'
+export const DEFAULT_MULTI_TAB = 'DEFAULT_MULTI_TAB'
+export const DEFAULT_CRUMBS_STATE = 'DEFAULT_CRUMBS_STATE'
+export const DICT_TYPE_TREE_DATA = 'DICT_TYPE_TREE_DATA'
+export const NOTICE_RECEIVED = 'NOTICE_RECEIVED'
+export const CONTENT_WIDTH_TYPE = {
+  Fluid: 'Fluid',
+  Fixed: 'Fixed'
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/applocation.js b/iWare_RawMaterialWarehouse_Web/src/utils/applocation.js
new file mode 100644
index 0000000..30fdc28
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/applocation.js
@@ -0,0 +1,11 @@
+import store from '@/store'
+
+/**
+ * 缂撳瓨涓殑宸查�変腑搴旂敤
+ *
+ * @author yubaoshan
+ * @date 2020/06/27 02:34
+ */
+export function sysApplication () {
+  return store.getters.applocation
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/axios.js b/iWare_RawMaterialWarehouse_Web/src/utils/axios.js
new file mode 100644
index 0000000..3b91f6b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/axios.js
@@ -0,0 +1,35 @@
+const VueAxios = {
+  vm: {},
+  // eslint-disable-next-line no-unused-vars
+  install (Vue, instance) {
+    if (this.installed) {
+      return
+    }
+    this.installed = true
+
+    if (!instance) {
+      // eslint-disable-next-line no-console
+      console.error('You have to install axios')
+      return
+    }
+
+    Vue.axios = instance
+
+    Object.defineProperties(Vue.prototype, {
+      axios: {
+        get: function get () {
+          return instance
+        }
+      },
+      $http: {
+        get: function get () {
+          return instance
+        }
+      }
+    })
+  }
+}
+
+export {
+  VueAxios
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/checkVersion.js b/iWare_RawMaterialWarehouse_Web/src/utils/checkVersion.js
new file mode 100644
index 0000000..4cc32bc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/checkVersion.js
@@ -0,0 +1,40 @@
+// checkVersion.js
+function fetchVersion() {
+    // 浣跨敤 fetch API 鏉ヨ幏鍙� index.html 鏂囦欢
+    return fetch('/')
+      .then(response => response.text())
+      .then(html => {
+        // 浣跨敤姝e垯琛ㄨ揪寮忔潵鎻愬彇鐗堟湰鍙�
+        const versionMatch = html.match(/var version = (\d+);/);
+        if (versionMatch && versionMatch.length > 1) {
+          //console.log('鎵惧埌鐨勭増鏈彿鏄�:'+versionMatch[1]);
+          return versionMatch[1]; // 杩斿洖鐗堟湰鍙�
+        }
+        throw new Error('涓嶈兘鎵惧埌鐗堟湰鍙枫��');
+      });
+  }
+  
+  function checkVersion() {
+    let currentVersion; // 褰撳墠椤甸潰鐨勭増鏈彿
+  
+    // 鍒濆鍖栨椂鑾峰彇涓�娆$増鏈彿
+    fetchVersion().then(version => {
+      currentVersion = version;
+    });
+  
+    // 鍒涘缓瀹氭椂鍣紝姣�10绉掓鏌ヤ竴娆�
+    setInterval(() => {
+      fetchVersion().then(newVersion => {
+        // 妫�鏌ョ増鏈彿鏄惁鏈夊彉鍖�
+        if (newVersion !== currentVersion) {
+          // 濡傛灉鐗堟湰鍙峰彉鍖栵紝鎻愮ず鐢ㄦ埛锛屽苟鏇存柊褰撳墠鐗堟湰鍙�
+          if (confirm('妫�娴嬪埌鏂扮増鏈紝鏄惁閲嶆柊鍔犺浇椤甸潰锛熷鏋滀俊鎭繕鏈彁浜ゅ畬锛岃鐐瑰嚮鍙栨秷锛岀户缁~鍐�.')) {
+            window.location.reload(); // 鐢ㄦ埛纭鍚庨噸鏂板姞杞介〉闈�
+            currentVersion = newVersion; // 鏇存柊褰撳墠鐗堟湰鍙凤紝閬垮厤閲嶅鎻愮ず
+          }
+        }
+      }).catch(error => console.error('鑾峰彇鐗堟湰鍙峰け璐ワ細', error));
+    }, 10000); // 璁剧疆鏃堕棿闂撮殧涓� 10000 姣锛�10 绉掞級
+  }
+  
+  export default checkVersion;
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/device.js b/iWare_RawMaterialWarehouse_Web/src/utils/device.js
new file mode 100644
index 0000000..0f350f3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/device.js
@@ -0,0 +1,33 @@
+import enquireJs from 'enquire.js'
+
+export const DEVICE_TYPE = {
+  DESKTOP: 'desktop',
+  TABLET: 'tablet',
+  MOBILE: 'mobile'
+}
+
+export const deviceEnquire = function (callback) {
+  const matchDesktop = {
+    match: () => {
+      callback && callback(DEVICE_TYPE.DESKTOP)
+    }
+  }
+
+  const matchLablet = {
+    match: () => {
+      callback && callback(DEVICE_TYPE.TABLET)
+    }
+  }
+
+  const matchMobile = {
+    match: () => {
+      callback && callback(DEVICE_TYPE.MOBILE)
+    }
+  }
+
+  // screen and (max-width: 1087.99px)
+  enquireJs
+    .register('screen and (max-width: 576px)', matchMobile)
+    .register('screen and (min-width: 576px) and (max-width: 1199px)', matchLablet)
+    .register('screen and (min-width: 1200px)', matchDesktop)
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/domUtil.js b/iWare_RawMaterialWarehouse_Web/src/utils/domUtil.js
new file mode 100644
index 0000000..519b620
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/domUtil.js
@@ -0,0 +1,19 @@
+export const setDocumentTitle = function (title) {
+  document.title = title
+  const ua = navigator.userAgent
+  // eslint-disable-next-line
+  const regex = /\bMicroMessenger\/([\d\.]+)/
+  if (regex.test(ua) && /ip(hone|od|ad)/i.test(ua)) {
+    const i = document.createElement('iframe')
+    i.src = '/favicon.ico'
+    i.style.display = 'none'
+    i.onload = function () {
+      setTimeout(function () {
+        i.remove()
+      }, 9)
+    }
+    document.body.appendChild(i)
+  }
+}
+
+export const domTitle = '鎴戠殑寮�鍙戞ā鏉�'
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/exportToExcel.js b/iWare_RawMaterialWarehouse_Web/src/utils/exportToExcel.js
new file mode 100644
index 0000000..1409937
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/exportToExcel.js
@@ -0,0 +1,101 @@
+//@ts-nocheck
+import * as XLSX from 'xlsx';
+export function exportExcel(dataSource, entozh, type = "xlsx", name = "鍏ㄩ儴淇℃伅") {
+    const nowdata = dataSource;
+    if (nowdata != undefined) {
+        let i = 1;
+        const json = nowdata.map((item) => {
+            return Object.keys(item).reduce((newData, key) => {
+                console.log(key,'key')
+                console.log(entozh,'entozh')
+                const newKey = entozh[key] //|| key
+                if (newKey !== undefined) {
+                    if (key !== 'key') {
+                        //涓嶉渶瑕乲ey
+                        if (key === 'id') {
+                            newData[newKey] = i //.toString()
+                            i++;
+                        } else {
+                            newData[newKey] = item[key]
+                        }
+                    }
+                }
+                return newData
+            }, {})
+        });
+        // debugger;
+        const sheet = XLSX.utils.json_to_sheet(json);
+        openDownloadDialog(sheet2blob(sheet, undefined, type), `${name}${getCurrentTime()}.${type}`);
+    } else {
+        this.$message.warning("鏃犳暟鎹�")
+    }
+
+}
+
+export function openDownloadDialog(url, saveName) {
+    if (typeof url == 'object' && url instanceof Blob) {
+        url = URL.createObjectURL(url); // 鍒涘缓blob鍦板潃
+    }
+    var aLink = document.createElement('a');
+    aLink.href = url;
+    aLink.download = saveName || ''; // HTML5鏂板鐨勫睘鎬э紝鎸囧畾淇濆瓨鏂囦欢鍚嶏紝鍙互涓嶈鍚庣紑锛屾敞鎰忥紝file:///妯″紡涓嬩笉浼氱敓鏁�
+    var event;
+    if (window.MouseEvent) event = new MouseEvent('click');
+    else {
+        event = document.createEvent('MouseEvents');
+        event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+    }
+    aLink.dispatchEvent(event);
+}
+
+export function sheet2blob(sheet, sheetName, type = "xlsx") {
+    sheetName = sheetName || 'sheet1';
+    var workbook = {
+        SheetNames: [sheetName],
+        Sheets: {}
+    };
+    workbook.Sheets[sheetName] = sheet; // 鐢熸垚excel鐨勯厤缃」
+
+    var wopts = {
+        bookType: `${type}`, // 瑕佺敓鎴愮殑鏂囦欢绫诲瀷
+        bookSST: false, // 鏄惁鐢熸垚Shared String Table锛屽畼鏂硅В閲婃槸锛屽鏋滃紑鍚敓鎴愰�熷害浼氫笅闄嶏紝浣嗗湪浣庣増鏈琁OS璁惧涓婃湁鏇村ソ鐨勫吋瀹规��
+        type: 'binary'
+    };
+
+    var wbout = XLSX.write(workbook, wopts);
+    var blob = new Blob([s2ab(wbout)], {
+        type: "application/octet-stream"
+    }); // 瀛楃涓茶浆ArrayBuffer
+    function s2ab(s) {
+        var buf = new ArrayBuffer(s.length);
+        var view = new Uint8Array(buf);
+        for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
+        return buf;
+    }
+
+    return blob;
+}
+
+// 鑾峰彇褰撳墠鏃堕棿
+export function getCurrentTime() {
+    let date = new Date();
+    //鑾峰彇骞翠唤
+    let year = date.getFullYear();
+    //鑾峰彇鏈堜唤
+    let month = date.getMonth() + 1;
+    month = month >= 10 ? month : "0" + month;
+    //鑾峰彇澶╂暟
+    let day = date.getDate();
+    day = day >= 10 ? day : "0" + day;
+    //鑾峰彇灏忔椂
+    let hour = date.getHours();
+    hour = hour >= 10 ? hour : "0" + hour;
+    //鑾峰彇鍒嗛挓
+    let min = date.getMinutes();
+    min = min >= 10 ? min : "0" + min;
+    //鑾峰彇绉�
+    let second = date.getSeconds();
+    second = second >= 10 ? second : "0" + second;
+    //鎷兼帴鏃堕棿瀛楃涓�
+    return `${year}-${month}-${day} ${hour}:${min}:${second}`;
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/filter.js b/iWare_RawMaterialWarehouse_Web/src/utils/filter.js
new file mode 100644
index 0000000..e087bae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/filter.js
@@ -0,0 +1,114 @@
+import Vue from 'vue'
+import { DICT_TYPE_TREE_DATA } from '@/store/mutation-types'
+import moment from 'moment'
+import 'moment/locale/zh-cn'
+moment.locale('zh-cn')
+
+Vue.filter('NumberFormat', function (value) {
+  if (!value) {
+    return '0'
+  }
+  const intPartFormat = value.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') // 鍗冨垎浣嶇 1,100,000.00 
+  return intPartFormat
+})
+
+Vue.filter('moment', function (dataStr, pattern = 'YYYY-MM-DD HH:mm:ss') {
+  return moment(dataStr).format(pattern)
+})
+
+/**
+ * 閲戦鏍煎紡鍖� 锛屼娇鐢ㄦ柟娉曪細{{ val | Fmoney }}
+ *
+ * @author yubaoshan
+ * @date 2020-9-15 15:02:20
+ */
+Vue.filter('Fmoney', function (val) {
+  // eslint-disable-next-line no-useless-escape
+  val = val.toString().replace(/\$|\,/g, '')
+  if (isNaN(val)) {
+    val = '0'
+  }
+  // eslint-disable-next-line eqeqeq
+  const sign = (val == (val = Math.abs(val)))
+  val = Math.floor(val * 100 + 0.50000000001)
+  let cents = val % 100
+  val = Math.floor(val / 100).toString()
+  if (cents < 10) {
+    cents = '0' + cents
+  }
+  // eslint-disable-next-line no-undef
+  for (let i = 0; i < Math.floor((val.length - (1 + i)) / 3); i++) {
+    val = val.substring(0, val.length - (4 * i + 3)) + ',' + val.substring(val.length - (4 * i + 3))
+  }
+  return (((sign) ? '' : '-') + val + '.' + cents)
+})
+
+/**
+ * 缈昏瘧浣跨敤鏂规硶锛岀洿鎺ヨ繑鍥炵炕璇戝悗鐨刵ame {{ code | dictType(value) }}
+ *
+ * @author yubaoshan
+ * @date 2020-9-15 15:02:20
+ */
+Vue.filter('dictType', function (code, value) {
+  const dictTypeTree = Vue.ls.get(DICT_TYPE_TREE_DATA)
+  if (dictTypeTree === undefined) {
+    return '闇�閲嶆柊鐧诲綍'
+  }
+  // eslint-disable-next-line eqeqeq
+  const tree = dictTypeTree.filter(item => item.code == code)[0].children
+  if (tree === undefined || tree.length === 0) {
+    return '鏃犳瀛楀吀'
+  }
+  // eslint-disable-next-line eqeqeq
+  const values = tree.filter(item => item.code == value)
+  if (values.length === undefined || values.length === 0) {
+    return '鏃犳瀛楀吀'
+  }
+  return values[0].name
+})
+
+/**
+ * 鑾峰彇鏌愪釜code涓嬪瓧鍏哥殑鍒楄〃锛屽鐢ㄤ簬瀛楀吀涓嬫媺妗嗭紝浣跨敤鏂规硶锛歿{ code | dictData }}
+ *
+ * @author yubaoshan
+ * @date 2020-9-19 22:40:22
+ */
+Vue.filter('dictData', function (code) {
+  const dictTypeTree = Vue.ls.get(DICT_TYPE_TREE_DATA)
+  if (dictTypeTree === undefined) {
+    return []
+  }
+  let tree =[];
+  // eslint-disable-next-line eqeqeq
+  //const tree = dictTypeTree.filter(item => item.code == code)[0].children
+  var arr1 = dictTypeTree.filter(item => item.code == code)
+  if(arr1.length>0){
+    tree = arr1[0].children
+  }
+  if (tree === undefined) {
+    return []
+  }
+  return tree
+})
+
+/**
+ * 鑾峰彇鎵�鏈夊瓧鍏告暟缁�
+ *
+ * @author yubaoshan
+ * @date 2021-2-8 01:13
+ */
+Vue.filter('dictDataAll', function () {
+  return Vue.ls.get(DICT_TYPE_TREE_DATA)
+})
+
+/**
+ * 鑾峰彇鏋氫妇涓搴斿瓧娈电殑鍊�
+ */
+Vue.filter('enumsName',(code,arr,attr,name) => {
+  let str = ''
+  const index = arr.findIndex(item => item[attr] == code)
+  if(index > -1) {
+    str = arr[index][name]
+  }
+  return str
+})
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/helper/permission.js b/iWare_RawMaterialWarehouse_Web/src/utils/helper/permission.js
new file mode 100644
index 0000000..f0f6a32
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/helper/permission.js
@@ -0,0 +1,51 @@
+export const PERMISSION_ENUM = {
+  'add': { key: 'add', label: '鏂板' },
+  'delete': { key: 'delete', label: '鍒犻櫎' },
+  'edit': { key: 'edit', label: '淇敼' },
+  'query': { key: 'query', label: '鏌ヨ' },
+  'get': { key: 'get', label: '璇︽儏' },
+  'enable': { key: 'enable', label: '鍚敤' },
+  'disable': { key: 'disable', label: '绂佺敤' },
+  'import': { key: 'import', label: '瀵煎叆' },
+  'export': { key: 'export', label: '瀵煎嚭' }
+}
+
+function plugin (Vue) {
+  if (plugin.installed) {
+    return
+  }
+
+  !Vue.prototype.$auth && Object.defineProperties(Vue.prototype, {
+    $auth: {
+      get () {
+        const _this = this
+        return (permissions) => {
+          const [permission, action] = permissions.split('.')
+          const permissionList = _this.$store.getters.roles.permissions
+          return permissionList.find((val) => {
+            return val.permissionId === permission
+          }).actionList.findIndex((val) => {
+            return val === action
+          }) > -1
+        }
+      }
+    }
+  })
+
+  !Vue.prototype.$enum && Object.defineProperties(Vue.prototype, {
+    $enum: {
+      get () {
+        // const _this = this;
+        return (val) => {
+          let result = PERMISSION_ENUM
+          val && val.split('.').forEach(v => {
+            result = result && result[v] || null
+          })
+          return result
+        }
+      }
+    }
+  })
+}
+
+export default plugin
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/messagesend.js b/iWare_RawMaterialWarehouse_Web/src/utils/messagesend.js
new file mode 100644
index 0000000..d041ef2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/messagesend.js
@@ -0,0 +1,31 @@
+import Vue from 'vue'
+
+// signalR 瀹㈡埛绔皟鐢�
+// 鏈嶅姟鍣ㄧ鍙戦�佹秷鎭�
+
+// 缁欐煇涓�涓釜浜�
+export function messagesendtosomeone (parameter) {
+  Vue.socket.invoke('ClientsSendMessage', { userId: parameter.userId, title: parameter.title, message: parameter.message, messagetype: parameter.messagetype })
+  .then(response => {
+  })
+}
+
+// 缁欐墍鏈変汉
+export function messagesendtoAll (parameter) {
+  Vue.socket.invoke('ClientsSendMessagetoAll', { title: parameter.title, message: parameter.message, messagetype: parameter.messagetype })
+  .then(response => {
+  })
+}
+
+// 缁欐煇浜涗汉
+export function messagesendtouserList (parameter) {
+  Vue.socket.invoke('ClientsSendMessagetoUsers', { userId: parameter.userList, title: parameter.title, message: parameter.message, messagetype: parameter.messagetype })
+  .then(response => {
+  })
+}
+// 闄や簡鍙戦�佷汉 鍙戦�佺粰鍓╀笅鐨勪汉
+export function messagesendtoexsomeone (parameter) {
+  Vue.socket.invoke('ClientsSendMessagetoOther', { userIds: parameter.userIds, title: parameter.title, message: parameter.message, messagetype: parameter.messagetype })
+  .then(response => {
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/mixin.js b/iWare_RawMaterialWarehouse_Web/src/utils/mixin.js
new file mode 100644
index 0000000..87d6c86
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/mixin.js
@@ -0,0 +1,85 @@
+/*
+ * @Author: your name
+ * @Date: 2021-05-18 23:01:55
+ * @LastEditTime: 2021-05-19 00:49:11
+ * @LastEditors: your name
+ * @Description: In User Settings Edit
+ * @FilePath: \frontend\src\utils\mixin.js
+ */
+// import Vue from 'vue'
+import { deviceEnquire, DEVICE_TYPE } from '@/utils/device'
+import { mapState } from 'vuex'
+
+// const mixinsComputed = Vue.config.optionMergeStrategies.computed
+// const mixinsMethods = Vue.config.optionMergeStrategies.methods
+
+const mixin = {
+  computed: {
+    ...mapState({
+      layoutMode: state => state.app.layout,
+      navTheme: state => state.app.theme,
+      primaryColor: state => state.app.color,
+      colorWeak: state => state.app.weak,
+      fixedHeader: state => state.app.fixedHeader,
+      fixSiderbar: state => state.app.fixSiderbar,
+      fixSidebar: state => state.app.fixSiderbar,
+      contentWidth: state => state.app.contentWidth,
+      autoHideHeader: state => state.app.autoHideHeader,
+      sidebarOpened: state => state.app.sidebar,
+      multiTab: state => state.app.multiTab,
+      crumbsState: state => state.app.crumbsState
+    })
+  },
+  methods: {
+    isTopMenu () {
+      return this.layoutMode === 'topmenu'
+    },
+    isSideMenu () {
+      return !this.isTopMenu()
+    }
+  }
+}
+
+const mixinDevice = {
+  computed: {
+    ...mapState({
+      device: state => state.app.device
+    })
+  },
+  methods: {
+    isMobile () {
+      return this.device === DEVICE_TYPE.MOBILE
+    },
+    isDesktop () {
+      return this.device === DEVICE_TYPE.DESKTOP
+    },
+    isTablet () {
+      return this.device === DEVICE_TYPE.TABLET
+    }
+  }
+}
+
+const AppDeviceEnquire = {
+  mounted () {
+    const { $store } = this
+    deviceEnquire(deviceType => {
+      switch (deviceType) {
+        case DEVICE_TYPE.DESKTOP:
+          $store.commit('TOGGLE_DEVICE', 'desktop')
+          $store.dispatch('setSidebar', true)
+          break
+        case DEVICE_TYPE.TABLET:
+          $store.commit('TOGGLE_DEVICE', 'tablet')
+          $store.dispatch('setSidebar', false)
+          break
+        case DEVICE_TYPE.MOBILE:
+        default:
+          $store.commit('TOGGLE_DEVICE', 'mobile')
+          $store.dispatch('setSidebar', true)
+          break
+      }
+    })
+  }
+}
+
+export { mixin, AppDeviceEnquire, mixinDevice }
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/permissions.js b/iWare_RawMaterialWarehouse_Web/src/utils/permissions.js
new file mode 100644
index 0000000..3b91fe3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/permissions.js
@@ -0,0 +1,27 @@
+import store from '@/store'
+
+export function actionToObject (json) {
+  try {
+    return JSON.parse(json)
+  } catch (e) {
+  }
+  return []
+}
+
+/**
+ * 鎺у埗鎸夐挳鏄惁鏄剧ず
+ *
+ * @author yubaoshan
+ * @date 2020/06/27 02:34
+ */
+export function hasBtnPermission (permission) {
+  const myBtns = store.getters.buttons
+  const allBtns = store.getters.allButtons
+  const admintype = store.getters.admintype
+  // eslint-disable-next-line eqeqeq
+  if (admintype == '1') {
+     return true
+  }
+  // 鎵�鏈夌郴缁熸寜閽腑涓嶅瓨鍦紝鍒欎笉闄愬埗
+  return allBtns.indexOf(permission) === -1 || myBtns.indexOf(permission) > -1
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/request.js b/iWare_RawMaterialWarehouse_Web/src/utils/request.js
new file mode 100644
index 0000000..111a5a9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/request.js
@@ -0,0 +1,167 @@
+import Vue from 'vue'
+import axios from 'axios'
+import store from '@/store'
+// import router from './router'
+import { message, Modal, notification } from 'ant-design-vue' /// es/notification
+import { VueAxios } from './axios'
+import { ACCESS_TOKEN } from '@/store/mutation-types'
+
+// 鍒涘缓 axios 瀹炰緥
+const service = axios.create({
+ // baseURL: process.env.VUE_APP_API_BASE_URL + '/api', // api base_url
+  baseURL: window._CONFIG.baseUrl+'/api', 
+  timeout: 6000 // 璇锋眰瓒呮椂鏃堕棿
+})
+
+const err = error => {
+  if (error.response) {
+    const data = error.response.data
+    const token = Vue.ls.get(ACCESS_TOKEN)
+
+    if (error.response.status === 403) {
+      notification.error({
+        message: 'Forbidden',
+        description: data.message
+      })
+    }
+    if (error.response.status === 500) {
+      if (data.message && data.message.length > 0) {
+        message.error(data.message)
+      }
+    }
+    if (error.response.status === 401 && !(data.result && data.result.isLogin)) {
+      notification.error({
+        message: 'Unauthorized',
+        description: 'Authorization verification failed'
+      })
+      if (token) {
+        store.dispatch('Logout').then(() => {
+          setTimeout(() => {
+            window.location.reload()
+          }, 1500)
+        })
+      }
+    }
+  }
+  return Promise.reject(error)
+}
+
+// request interceptor
+service.interceptors.request.use(config => {
+  const token = Vue.ls.get(ACCESS_TOKEN)
+  const refreshToken = Vue.ls.get('X-Access-Token')
+  if (token) {
+    config.headers['Authorization'] = 'Bearer ' + token
+  }
+  if (refreshToken) {
+    config.headers['X-Authorization'] = 'Bearer ' + refreshToken
+  }
+
+   ///-----------------------杩欓噷寮�濮�
+   const params = config.params || {};
+    // get鍙傛暟缂栫爜
+    if (config.method?.toUpperCase() === "GET" && params) {
+      let url = config.url + "?";
+      for (const propName of Object.keys(params)) {
+        const value = params[propName];
+        if (
+          value !== void 0 &&
+          value !== null &&
+          typeof value !== "undefined"
+        ) {
+          if (typeof value === "object") {
+            for (const val of Object.keys(value)) {
+              const params = propName + "[" + val + "]";
+              const subPart = encodeURIComponent(params) + "=";
+              url += subPart + encodeURIComponent(value[val]) + "&";
+            }
+          } else {
+            url += `${propName}=${encodeURIComponent(value)}&`;
+          }
+        }
+      }
+      // 缁� get 璇锋眰鍔犱笂鏃堕棿鎴冲弬鏁帮紝閬垮厤浠庣紦瀛樹腑鎷挎暟鎹�
+      // const now = new Date().getTime()
+      // params = params.substring(0, url.length - 1) + `?_t=${now}`
+      url = url.slice(0, -1);
+      config.params = {};
+      config.url = url;
+    }
+
+  return config
+}, err)
+
+
+const _requestErrAlert = function(msg,callback,oktext='纭') {
+  Modal.error({
+    title: '绯荤粺鎻愮ず锛�',
+    content: msg,
+    keyboard: false,
+    okText: oktext,
+    onOk: () => {
+      callback && callback()
+    }
+  })
+}
+
+const requerstErrMsg = function(msg){
+  
+}
+
+/**
+ * response interceptor
+ * 鎵�鏈夎姹傜粺涓�杩斿洖
+ */
+service.interceptors.response.use(response => {
+  // LocalStorage 瀛樺偍鐨� token 鍜� refreshToken锛屼笉璁惧畾杩囨湡鏃堕棿锛岀敱鏈嶅姟绔粺涓�澶勭悊
+  if (response.headers['access-token'] && response.headers['access-token'] !== 'invalid_token') {
+    Vue.ls.set(ACCESS_TOKEN, response.headers['access-token'] /*, 7 * 24 * 60 * 60 * 1000 */)
+    store.commit('SET_TOKEN', response.headers['access-token'])
+  }
+  if (response.headers['x-access-token']) {
+    Vue.ls.set('X-Access-Token', response.headers['x-access-token'] /*, 7 * 24 * 60 * 60 * 1000 */)
+  }
+  if (response.request.responseType === 'blob') {
+    return response
+  }
+  
+  if (response.status===200) {
+    const resData = response.data
+    const code = response.data.code
+    if (resData.success && ((code && code === 200)||(response.data.repCode==='0000'))) {
+      return resData
+    } else if (!store.state.app.hasError && code === 401) {
+      _requestErrAlert(resData.message,()=>{
+        store.dispatch('SetHasError', false)
+        window.location.reload()
+      },'閲嶆柊鐧诲綍')
+          
+      // 鎺堟潈杩囨湡锛屾竻鐞嗘湰鍦扮紦瀛樼殑璁板綍锛屼笉璁� Modal.error 鐨� onOk 鏄惁纭锛屽厛娓呯悊
+      // 鍚﹀垯浼氬湪娌℃寜 OK 鏃讹紝鍒锋柊缃戦〉鎴栬�呴噸鏂拌闂紝閮戒細寮瑰嚭鈥滄湭鎺堟潈鐨勬彁绀烘鈥�
+      // 杩欐牱鐨勮皟鏁村悗锛孴OKEN 涓虹┖鐩存帴閲嶅畾鍚戯紝SetHasError 鐨勮缃拰鍒ゆ柇鍏跺疄宸茬粡鐢ㄤ笉涓�
+      Vue.ls.remove(ACCESS_TOKEN)
+      Vue.ls.remove('X-Access-Token')
+      store.dispatch('SetHasError', true)
+      return resData
+    } else {
+      let msg = resData.message;
+      if (!msg) msg = '缃戠粶閿欒锛岃绋嶅悗鍐嶅皾璇曪紒';
+      message.error(msg)
+      console.log(response)
+      return Promise.reject(response)
+    }
+  } else {
+    message.error('缃戠粶閿欒锛岃绋嶅悗鍐嶅皾璇曪紒')
+    console.log(response)
+    return Promise.reject(response)
+  }
+}, err)
+
+const installer = {
+  vm: {},
+  install(Vue) {
+    Vue.use(VueAxios, service)
+  }
+}
+
+export { installer as VueAxios, service as axios }
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/routeConvert.js b/iWare_RawMaterialWarehouse_Web/src/utils/routeConvert.js
new file mode 100644
index 0000000..e88b0d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/routeConvert.js
@@ -0,0 +1,30 @@
+import cloneDeep from 'lodash.clonedeep'
+
+export function convertRoutes (nodes) {
+  if (!nodes) return null
+
+  nodes = cloneDeep(nodes)
+
+  let queue = Array.isArray(nodes) ? nodes.concat() : [nodes]
+
+  while (queue.length) {
+    const levelSize = queue.length
+
+    for (let i = 0; i < levelSize; i++) {
+      const node = queue.shift()
+
+      if (!node.children || !node.children.length) continue
+
+      node.children.forEach(child => {
+        // 杞寲鐩稿璺緞
+        if (child.path[0] !== '/' && !child.path.startsWith('http')) {
+          child.path = node.path.replace(/(\w*)[/]*$/, `$1/${child.path}`)
+        }
+      })
+
+      queue = queue.concat(node.children)
+    }
+  }
+
+  return nodes
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/socket.js b/iWare_RawMaterialWarehouse_Web/src/utils/socket.js
new file mode 100644
index 0000000..0ba4d69
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/socket.js
@@ -0,0 +1,216 @@
+import store from '@/store'
+import { Modal, message } from 'ant-design-vue'
+import * as SignalR from '@microsoft/signalr'
+
+const EventEmitter = require('events')
+
+const defaultOptions = {
+  log: false
+}
+
+class SocketConnection extends EventEmitter {
+  constructor(connection, options = {}) {
+    super()
+    this.connection = connection
+    this.options = Object.assign(defaultOptions, options)
+    this.listened = []
+    this.toSend = []
+    this.offline = false
+    this.socket = undefined
+  }
+
+  /**
+   * 鍚屼竴绉嶆秷鎭彧瀹氫箟涓�娆�
+   *
+   * @param {string| symbol} event
+   * @param {(...args: any[]) => void} listener
+   * @memberof SocketConnection
+   */
+  one(event, listener) {
+    if (this.listeners(event).length === 0) {
+      this.on(event, listener)
+    }
+  }
+
+  async _initialize() {
+    if(this.socket == undefined){
+        return;
+    }
+    try {
+      await this.socket.start()
+      this.emit('onstart')
+      if (this.offline) {
+        this.emit('onrestart')
+      }
+      this.offline = false
+    } catch (error) {
+      setTimeout(async () => {
+        await this._initialize()
+      }, 5000)
+    }
+  }
+
+  async start(token) {
+    // 缁勪欢閲嶆柊鍔犺浇鏃�, 濡傛灉 socket 瀛樺湪, 涓嶉渶瑕佹柊寤�
+    if (!this.socket) {
+      this.socket = new SignalR.HubConnectionBuilder()
+        .configureLogging(SignalR.LogLevel.Information)
+        .withUrl(`${process.env.VUE_APP_SOCKET_BASE_URL}/hubs/chathub`, {
+          accessTokenFactory: () => token,
+          skipNegotiation: true,
+          transport: SignalR.HttpTransportType.WebSockets
+        })
+        .build()
+
+      this.socket.onclose(async () => {
+        this.offline = true
+        this.emit('onclose')
+        await this._initialize()
+      })
+
+      this.socket.on('ForceExist', () => {
+        // 鍏抽棴杩炴帴
+        this.socket.stop()
+        // 蹇呴』
+        this.socket = undefined
+        store
+          .dispatch('Logout')
+          .then(() => {
+            Modal.success({
+              title: '娑堟伅',
+              content: '浣犲凡琚己鍒朵笅绾�',
+              keyboard: false,
+              onOk: () => {
+                window.location.reload()
+              }
+            })
+          })
+          .catch(err => {
+            message.error({
+              title: '閿欒',
+              description: err.message
+            })
+          })
+      })
+
+      this.socket.on('SingleLoginForceExist', () => {
+        // 鍏抽棴杩炴帴
+        this.socket.stop()
+        store
+          .dispatch('Logout')
+          .then(() => {
+            Modal.success({
+              title: '娑堟伅',
+              content: '鎮ㄧ殑璐﹀彿宸插湪鍏朵粬鍦版柟鐧诲綍锛岃寮哄埗涓嬬嚎',
+              keyboard: false,
+              onOk: () => {
+                window.location.reload()
+              }
+            })
+          })
+          .catch(err => {
+            message.error({
+              title: '閿欒',
+              description: err.message
+            })
+          })
+      })
+
+      await this._initialize()
+    }
+  }
+
+  async authenticate(token) {
+    await this.start(token)
+  }
+
+  listen(method) {
+    if (this.offline) return
+
+    if (this.listened.some(v => v === method)) return
+    this.listened.push(method)
+
+    this.one('onstart', () => {
+      this.listened.forEach(method => {
+        this.socket.on(method, data => {
+          if (this.options.log) {
+          }
+
+          this.emit(method, data)
+        })
+      })
+    })
+  }
+
+  send(methodName, ...args) {
+    if (this.options.log) {
+    }
+    if (this.offline) return
+
+    if (this.socket) {
+      this.socket.send(methodName, ...args)
+      return
+    }
+
+    this.one('onstart', () => this.socket.send(methodName, ...args))
+  }
+
+  async invoke(methodName, ...args) {
+    if (this.options.log) {
+    }
+    if (this.offline) return false
+
+    if (this.socket) {
+      return this.socket.invoke(methodName, ...args)
+    }
+
+    // eslint-disable-next-line no-async-promise-executor
+    return new Promise(async resolve => this.one('onstart', () => resolve(this.socket.invoke(methodName, ...args))))
+  }
+}
+
+if (!SignalR) {
+  throw new Error('[Vue-SignalR] Cannot locate signalr-client')
+}
+
+function install(Vue, connection) {
+  if (!connection) {
+    throw new Error('[Vue-SignalR] Cannot locate connection')
+  }
+  connection = process.env.VUE_APP_SOCKET_BASE_URL+connection
+  const Socket = new SocketConnection(connection)
+
+  Vue.socket = Socket
+
+  Object.defineProperties(Vue.prototype, {
+    $socket: {
+      get() {
+        return Socket
+      }
+    }
+  })
+
+  Vue.mixin({
+    created() {
+      if (this.$options.sockets) {
+        const methods = Object.getOwnPropertyNames(this.$options.sockets)
+
+        methods.forEach(method => {
+          Socket.listen(method)
+
+          Socket.one(method, data => this.$options.sockets[method].call(this, data))
+        })
+      }
+
+      if (this.$options.subscribe) {
+        Socket.one('authenticated', () => {
+          this.$options.subscribe.forEach(channel => {
+            Socket.invoke('join', channel)
+          })
+        })
+      }
+    }
+  })
+}
+
+export default install
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/util.js b/iWare_RawMaterialWarehouse_Web/src/utils/util.js
new file mode 100644
index 0000000..ef9bfd7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/util.js
@@ -0,0 +1,256 @@
+export function dateFormat(dateString,fmt) {
+    let date = new Date(dateString);
+		let ret;
+		const opt = {
+			"Y+": date.getFullYear().toString(), // 骞�
+			"m+": (date.getMonth() + 1).toString(), // 鏈�
+			"d+": date.getDate().toString(), // 鏃�
+			"H+": date.getHours().toString(), // 鏃�
+			"M+": date.getMinutes().toString(), // 鍒�
+			"S+": date.getSeconds().toString() // 绉�
+			// 鏈夊叾浠栨牸寮忓寲瀛楃闇�姹傚彲浠ョ户缁坊鍔狅紝蹇呴』杞寲鎴愬瓧绗︿覆
+		};
+		for (let k in opt) {
+			ret = new RegExp("(" + k + ")").exec(fmt);
+			if (ret) {
+				fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
+			};
+		};
+		return fmt;
+}
+
+export function timeFix () {
+  const time = new Date()
+  const hour = time.getHours()
+  return hour < 9 ? '鏃╀笂濂�' : hour <= 11 ? '涓婂崍濂�' : hour <= 13 ? '涓崍濂�' : hour < 20 ? '涓嬪崍濂�' : '鏅氫笂濂�'
+}
+
+export function welcome () {
+  const arr = ['浼戞伅涓�浼氬効鍚�', '鍑嗗鍚冧粈涔堝憿?', '瑕佷笉瑕佹墦涓�鎶� LOL', '鎴戠寽浣犲彲鑳界疮浜�']
+  const index = Math.floor(Math.random() * arr.length)
+  return arr[index]
+}
+
+/**
+ * 瑙﹀彂 window.resize
+ */
+export function triggerWindowResizeEvent () {
+  const event = document.createEvent('HTMLEvents')
+  event.initEvent('resize', true, true)
+  event.eventType = 'message'
+  window.dispatchEvent(event)
+}
+
+export function handleScrollHeader (callback) {
+  let timer = 0
+
+  let beforeScrollTop = window.pageYOffset
+  callback = callback || function () {}
+  window.addEventListener(
+    'scroll',
+    event => {
+      clearTimeout(timer)
+      timer = setTimeout(() => {
+        let direction = 'up'
+        const afterScrollTop = window.pageYOffset
+        const delta = afterScrollTop - beforeScrollTop
+        if (delta === 0) {
+          return false
+        }
+        direction = delta > 0 ? 'down' : 'up'
+        callback(direction)
+        beforeScrollTop = afterScrollTop
+      }, 50)
+    },
+    false
+  )
+}
+
+export function isIE () {
+  const bw = window.navigator.userAgent
+  const compare = (s) => bw.indexOf(s) >= 0
+  const ie11 = (() => 'ActiveXObject' in window)()
+  return compare('MSIE') || ie11
+}
+
+/**
+ * Remove loading animate
+ * @param id parent element id or class
+ * @param timeout
+ */
+export function removeLoadingAnimate (id = '', timeout = 1500) {
+  if (id === '') {
+    return
+  }
+  setTimeout(() => {
+    document.body.removeChild(document.getElementById(id))
+  }, timeout)
+}
+
+/* 鐢熸垚闅忔満uuid
+*	n锛歶uid鐨勯暱搴�
+* type锛氱被鍨嬶紙0-澶у皬鍐欏瓧姣�+鏁板瓧锛�1-灏忓啓瀛楁瘝+鏁板瓧锛�2-绾暟瀛楋紝3-澶у皬鍐欏瓧姣嶏紝4-灏忓啓瀛楁瘝锛�
+*/
+export function uuid(n=6,type=0){
+	let res='', uType=0;
+	const __uuidLetter = function(){
+		const __tempArr = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
+		return __tempArr[Math.floor(Math.random()*26)];
+	}
+	for (let i=0;i<n;i++) {
+		switch(type) {
+			case 1:
+				uType = Math.floor(Math.random()*2);
+				if (uType===0) {
+					res += Math.floor(Math.random()*10).toString()
+				} else {
+					res += __uuidLetter()
+				}
+				break;
+			case 2:
+				res += Math.floor(Math.random()*10).toString()
+				break;
+			case 3:
+				uType = Math.floor(Math.random()*2);
+				if (uType===0) {
+					res += __uuidLetter()
+				} else {
+					res += __uuidLetter().toUpperCase()
+				}
+				break;
+			case 4:
+				res += __uuidLetter()
+				break;
+			default:
+				uType = Math.floor(Math.random()*3);
+				if (uType===0) {
+					res += Math.floor(Math.random()*10).toString()
+				} else if (uType===1) {
+					res += __uuidLetter()
+				} else {
+					res += __uuidLetter().toUpperCase()
+				}
+				break;
+		}
+	}
+	return res;
+}
+
+/**
+ * 妫�楠屼笂浼犳枃浠舵槸鍚﹀悎鏍�
+ * @param fileInfo
+ * @param maxSize
+ * @param typeArr
+ */
+export function checkFile(fileInfo, maxSize, typeArr) {
+  if (fileInfo.size >= maxSize) {
+    fileInfo.status = 'error'
+    return {
+      success: false,
+      msg: "鏂囦欢澶у皬瓒呰繃鏈�澶ч檺搴�"
+    }
+  }
+  if (fileInfo.size <= 0) {
+    fileInfo.status = 'error'
+    return {
+      success: false,
+      msg: "鎵�閫変俊鎭腑瀛樺湪绌烘枃浠舵垨鐩綍"
+    }
+  }
+  const type = fileInfo.name.slice(fileInfo.name.lastIndexOf('.') + 1).toLowerCase()
+  if (!typeArr.includes('.' + type)) {
+    fileInfo.status = 'error'
+    return {
+      success: false,
+      msg: "涓嶆敮鎸佷互 ."+ type + "鎵╁睍绫诲瀷鐨勬枃浠舵垨鍥剧墖涓婁紶!"
+    }
+  }
+  return {
+    success: true,
+    msg: "涓婁紶鎴愬姛!"
+  }
+}
+
+export function parseDemandText() {
+  let text = "1.鏀寔Excel2007鍙婁互涓婄増鏈枃浠躲�俓n";
+  text += "2.涓轰繚璇佹暟鎹『鍒╁鍏ワ紝璇蜂笅杞絓""+ "<a-button onclick=\"downloadFile()\" " +
+    "style=\"width: 100%;text-align: center;color:#FA541C;cursor:pointer;\">瀵煎叆妯℃澘</a-button>\"\n";
+  text += "3.瀵煎叆鏂板鏁版嵁鏃朵笉鑳借秴杩�5000琛屻�俓n";
+  text += "4.瀵煎叆鏇存柊鏁版嵁鏃朵笉鑳借秴杩�2000琛屻��";
+  return text;
+}
+
+/**
+ * 鏍规嵁鍒楅泦鍚堜俊鎭敓鎴愭枃鏈弿杩�
+ * @param columnInfos
+ */
+export function parseExcelFieldText(columnInfos) {
+  let text = "", typeName = {
+    "System.String": "鏂囨湰銆傚: 閽熷瓭鏈�",
+    "System.Int32": "鏁板瓧銆傚: 4377",
+    "System.Int64": "鏁板瓧銆傚: 4377",
+    "System.Decimal": "鏁板瓧銆傚: 43.77",
+    "System.DateTimeOffset": "鏃ユ湡銆� 濡�: 2023/3/1",
+    "System.DateTime": "鏃ユ湡銆� 濡�: 2023/3/1",
+  };
+
+  columnInfos.forEach(x => {
+    text += x.columnComment + "(" + (x.isRequired ? "蹇呭~" : "闈炲繀濉�")  + "): ";
+    text += (typeName[x.dataType] ? typeName[x.dataType] : ("鏂囨湰銆� 鍙�夐」涓�: " + x.remark)) + "\n" ;
+  });
+
+  return text;
+}
+
+export function downloadFile(res) {
+  let blob = new Blob([res.data], { type: 'application/octet-stream;charset=UTF-8' })
+  let contentDisposition = res.headers['content-disposition']
+  let pattern = new RegExp('filename=([^;]+\\.[^\.;]+);*')
+  let result = pattern.exec(contentDisposition)
+  let filename = result[1];
+  let downloadElement = document.createElement('a')
+  let href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺�
+  let reg = /^["](.*)["]$/g
+  downloadElement.style.display = 'none'
+  downloadElement.href = href
+  downloadElement.download = decodeURI(filename.replace(reg, '$1')) // 涓嬭浇鍚庢枃浠跺悕
+  document.body.appendChild(downloadElement)
+  downloadElement.click() // 鐐瑰嚮涓嬭浇
+  document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌
+  window.URL.revokeObjectURL(href)
+}
+
+export function getObjectType(obj){
+	if (typeof obj !== 'object') {
+		return null;
+	} else {
+		let objTypeStr = Object.prototype.toString.call(obj).toLowerCase().trim();
+		objTypeStr = objTypeStr.substr(1,objTypeStr.length-2)
+		let tempA = objTypeStr.split(" ");
+		return tempA[1];
+	}	
+}
+
+export function getUserDefaultArea($store,arr,valueField='code'){
+  let res = ''
+  const _default = $store.getters['userInfo']['workShopType']
+  for (let i=0;i<arr.length;i++){
+    if (String(arr[i][valueField])===Sring(_default)) {
+      res = _default
+      break;
+    }
+  }
+  return res
+}
+
+export function getUserDefaultLine($store,arr,valueField='productionlineId'){
+  let res = ''
+  const _default = $store.getters['userInfo']['productionlineId']
+  for (let i=0;i<arr.length;i++){
+    if (arr[i][valueField]===_default) {
+      res = _default
+      break;
+    }
+  }
+	return res
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/utils.less b/iWare_RawMaterialWarehouse_Web/src/utils/utils.less
new file mode 100644
index 0000000..ba75a67
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/utils.less
@@ -0,0 +1,50 @@
+.textOverflow() {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  word-break: break-all;
+}
+
+.textOverflowMulti(@line: 3, @bg: #fff) {
+  position: relative;
+  max-height: @line * 1.5em;
+  margin-right: -1em;
+  padding-right: 1em;
+  overflow: hidden;
+  line-height: 1.5em;
+  text-align: justify;
+  &::before {
+    position: absolute;
+    right: 14px;
+    bottom: 0;
+    padding: 0 1px;
+    background: @bg;
+    content: '...';
+  }
+  &::after {
+    position: absolute;
+    right: 14px;
+    width: 1em;
+    height: 1em;
+    margin-top: 0.2em;
+    background: white;
+    content: '';
+  }
+}
+
+// mixins for clearfix
+// ------------------------
+.clearfix() {
+  zoom: 1;
+  &::before,
+  &::after {
+    display: table;
+    content: ' ';
+  }
+  &::after {
+    clear: both;
+    height: 0;
+    font-size: 0;
+    visibility: hidden;
+  }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/404.vue b/iWare_RawMaterialWarehouse_Web/src/views/404.vue
new file mode 100644
index 0000000..ed31e84
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/404.vue
@@ -0,0 +1,18 @@
+<template>
+  <div>
+    404 page
+  </div>
+</template>
+
+<script>
+export default {
+  name: '404'
+}
+</script>
+
+<style scoped>
+
+
+
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/Home.vue b/iWare_RawMaterialWarehouse_Web/src/views/Home.vue
new file mode 100644
index 0000000..ead54e0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/Home.vue
@@ -0,0 +1,215 @@
+<template>
+  <div class="home">
+    <div class="banner">
+      <img alt="Vue logo" style="width: 64px; height: 64px" src="../assets/logo.jpg">
+      <h3 style="margin-top: 1rem">Welcome to Your Vue.js App</h3>
+    </div>
+
+    <br/>
+
+    <h2># Trend 缁勪欢 </h2>
+
+    <a-divider> 姝e父 </a-divider>
+
+    <a-card>
+
+      <trend flag="up" style="margin-right: 16px;">
+        <span slot="term">宸ヨ祫</span>
+        5%
+      </trend>
+      <trend flag="up" style="margin-right: 16px;">
+        <span slot="term">宸ヤ綔閲�</span>
+        50%
+      </trend>
+      <trend flag="down">
+        <span slot="term">韬綋鐘舵��</span>
+        50%
+      </trend>
+
+    </a-card>
+
+    <a-divider> 棰滆壊鍙嶈浆 </a-divider>
+
+    <a-card style="margin-bottom: 3rem">
+
+      <trend flag="up" :reverse-color="true" style="margin-right: 16px;">
+        <span slot="term">宸ヨ祫</span>
+        5%
+      </trend>
+      <trend flag="down" :reverse-color="true" style="margin-right: 16px;">
+        <span slot="term">宸ヤ綔閲�</span>
+        50%
+      </trend>
+
+    </a-card>
+
+    <h2># AvatarList 缁勪欢 </h2>
+
+    <a-divider> AvatarList </a-divider>
+    <a-card style="margin-bottom: 3rem">
+      <avatar-list :max-length="3">
+        <avatar-list-item tips="Jake" src="https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" />
+        <avatar-list-item tips="Andy" src="https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" />
+        <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+        <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+        <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+        <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+        <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+
+      </avatar-list>
+
+      <a-divider type="vertical" style="margin: 0 16px" />
+
+      <avatar-list size="mini">
+        <avatar-list-item tips="Jake" src="https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" />
+        <avatar-list-item tips="Andy" src="https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" />
+        <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+      </avatar-list>
+    </a-card>
+
+    <h2># CountDown 缁勪欢 </h2>
+
+    <a-divider> CountDown </a-divider>
+    <a-card style="margin-bottom: 3rem">
+      <count-down
+        style="font-size: 2rem"
+        :target="new Date().getTime() + 3000000"
+        :on-end="onEndHandle">
+      </count-down>
+
+      <a-divider type="vertical" style="margin: 0 16px" />
+
+      <count-down
+        style="font-size: 2rem"
+        :target="new Date().getTime() + 10000"
+        :on-end="onEndHandle2">
+      </count-down>
+    </a-card>
+
+    <h2># Ellipsis 缁勪欢 </h2>
+
+    <a-divider> Ellipsis </a-divider>
+    <a-card style="margin-bottom: 3rem">
+      <ellipsis :length="100" tooltip>
+        There were injuries alleged in three cases in 2015, and a
+        fourth incident in September, according to the safety recall report. After meeting with US regulators in October, the firm decided to issue a voluntary recall.
+      </ellipsis>
+    </a-card>
+
+    <h2># NumberInfo 缁勪欢 </h2>
+
+    <a-divider> NumberInfo </a-divider>
+    <a-card style="margin-bottom: 3rem">
+      <number-info
+        :sub-title="() => { return 'Visits this week' }"
+        :total="12321"
+        status="up"
+        :sub-total="17.1"></number-info>
+    </a-card>
+
+    <h2># TagSelect 缁勪欢 </h2>
+
+    <a-divider> TagSelect </a-divider>
+    <a-card style="margin-bottom: 3rem">
+      <tag-select>
+        <tag-select-option value="cat1">绫荤洰1</tag-select-option>
+        <tag-select-option value="cat2">绫荤洰2</tag-select-option>
+        <tag-select-option value="cat3">绫荤洰3</tag-select-option>
+        <tag-select-option value="cat4">绫荤洰4</tag-select-option>
+        <tag-select-option value="cat5">绫荤洰5</tag-select-option>
+        <tag-select-option value="cat6">绫荤洰6</tag-select-option>
+        <tag-select-option value="cat7">绫荤洰7</tag-select-option>
+      </tag-select>
+    </a-card>
+
+    <h2># DescriptionList 缁勪欢 </h2>
+
+    <a-divider> DescriptionList </a-divider>
+    <a-card style="margin-bottom: 3rem">
+      <description-list title="缁勫悕绉�" size="small">
+        <description-list-item term="璐熻矗浜�">鏋椾笢涓�</description-list-item>
+        <description-list-item term="瑙掕壊鐮�">1234567</description-list-item>
+        <description-list-item term="鎵�灞為儴闂�">XX鍏徃-YY閮�</description-list-item>
+        <description-list-item term="杩囨湡鏃堕棿">2018-08-08</description-list-item>
+        <description-list-item term="鎻忚堪">杩欐鎻忚堪寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱...</description-list-item>
+      </description-list>
+    </a-card>
+
+    <a-divider> TagCloud </a-divider>
+    <a-card style="margin-bottom: 3rem">
+      <tag-cloud :tag-list="tagCloudData"></tag-cloud>
+    </a-card>
+  </div>
+</template>
+
+<script>
+// @ is an alias to /src
+
+import Trend from '@/components/Trend'
+import AvatarList from '@/components/AvatarList'
+import CountDown from '@/components/CountDown/CountDown'
+import Ellipsis from '@/components/Ellipsis'
+import NumberInfo from '@/components/NumberInfo'
+import TagSelect from '@/components/TagSelect'
+import { DescriptionList, TagCloud } from '@/components/'
+
+const AvatarListItem = AvatarList.AvatarItem
+const TagSelectOption = TagSelect.Option
+
+const DescriptionListItem = DescriptionList.Item
+
+export default {
+  name: 'Home',
+  components: {
+    NumberInfo,
+    Ellipsis,
+    CountDown,
+    Trend,
+    AvatarList,
+    AvatarListItem,
+    TagSelect,
+    TagSelectOption,
+    TagCloud,
+    DescriptionList,
+    DescriptionListItem
+  },
+  data () {
+    return {
+      targetTime: new Date().getTime() + 3900000,
+      tagCloudData: []
+    }
+  },
+  created () {
+    this.getTagCloudData()
+  },
+  methods: {
+    onEndHandle () {
+      this.$message.success('CountDown callback!!!')
+    },
+    onEndHandle2 () {
+      this.$notification.open({
+        message: 'Notification Title',
+        description: 'This is the content of the notification. This is the content of the notification. This is the content of the notification.'
+      })
+    },
+    getTagCloudData () {
+      this.$http.get('/data/antv/tag-cloud').then(res => {
+        this.tagCloudData = res.result
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+  .home {
+    width: 900px;
+    margin: 0 auto;
+    padding: 25px 0;
+  }
+  .home > .banner {
+    text-align: center;
+    padding: 25px 0;
+    margin: 25px 0;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/addForm.vue
new file mode 100644
index 0000000..17ed35b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/addForm.vue
@@ -0,0 +1,416 @@
+<template>
+  <a-modal
+    title="鏂板浠g爜鐢熸垚閰嶇疆"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+         <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚搴�" has-feedback>
+               <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鏁版嵁搴�"
+                v-decorator="['databaseName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴擄紒' }]}]">
+                <a-select-option
+                  v-for="(item,index) in databaseNameData"
+                  :key="index"
+                  :value="item.databaseName"
+                  @click="databaseNameSele(item)">{{ item.databaseName }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚琛�" has-feedback>
+              <a-select 
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鏁版嵁搴撹〃"
+                v-decorator="['tableName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴撹〃锛�' }]}]">
+                <a-select-option
+                  v-for="(item,index) in tableNameData"
+                  :key="index"
+                  :value="item.tableName"
+                  @click="tableNameSele(item)">{{ item.tableName }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="涓氬姟鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ヤ笟鍔″悕"
+                v-decorator="['busName', {rules: [{required: true, message: '璇疯緭鍏ヤ笟鍔″悕锛�'}]}]" />
+            </a-form-item>
+          </a-col>
+          <!--<a-col :md="12" :sm="24">
+            <a-form-item
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              label="绉婚櫎鍓嶇紑"
+            >
+              <a-radio-group v-decorator="['tablePrefix',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁绉婚櫎鍓嶇紑锛�' }]}]" >
+                <a-radio v-for="(item,index) in tablePrefixData" :key="index" :value="item.code" @click="tablePrefixRadio(item.code)">{{ item.name }}</a-radio>
+              </a-radio-group>
+            </a-form-item>
+          </a-col> -->
+        </a-row>
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟鍒嗙被" has-feedback>
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨搴旂敤鍒嗙被"
+                v-decorator="['menuApplication', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]">
+                <a-select-option
+                  v-for="(item,index) in appData"
+                  :key="index"
+                  :value="item.code"
+                  @click="changeApplication(item.code)">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <div>
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐖剁骇鑿滃崟" has-feedback>
+                <a-tree-select
+                  v-decorator="['menuPid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]"
+                  style="width: 100%"
+                  :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+                  :treeData="menuTreeData"
+                  placeholder="璇烽�夋嫨鐖剁骇鑿滃崟"
+                  treeDefaultExpandAll>
+                  <span slot="title" slot-scope="{ id }">{{ id }}
+                  </span>
+                </a-tree-select>
+              </a-form-item>
+            </div>
+          </a-col>
+        </a-row>
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鍛藉悕绌洪棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ヤ唬鐮佸寘鍚�"
+                v-decorator="['nameSpace', {rules: [{required: true, message: '璇疯緭鍏ュ懡鍚嶇┖闂达紒'}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="浣滆�呭鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ヤ綔鑰呭鍚�"
+                v-decorator="['authorName', {rules: [{required: true, message: '璇疯緭鍏ヤ綔鑰呭鍚嶏紒'}]}]" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <!--<a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item
+              label="鍔熻兘鍚�"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-input placeholder="璇疯緭鍏ュ姛鑳藉悕" v-decorator="['tableComment', {rules: [{required: true, message: '璇疯緭鍏ュ姛鑳藉悕锛�'}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item
+              label="绫诲悕"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-input placeholder="璇疯緭鍏ョ被鍚�" v-decorator="['className', {rules: [{required: true, message: '璇疯緭鍏ョ被鍚嶏紒'}]}]" />
+            </a-form-item>
+          </a-col>
+        </a-row> -->
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚鏂瑰紡">
+              <a-radio-group v-decorator="['generateType',{rules: [{ required: true, message: '璇烽�夋嫨鐢熸垚鏂瑰紡锛�' }]}]">
+                <a-radio
+                  v-for="(item,index) in generateTypeData"
+                  :key="index"
+                  :value="item.code"
+                  @click="generateTypeRadio(item.code)">{{ item.name }}</a-radio>
+              </a-radio-group>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="妯″潡璺緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ユā鍧楄矾寰�"
+                v-decorator="['moduleName', {rules: [{required: true, message: '璇疯緭鍏ユā鍧楄矾寰勶紒'}]}]" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鍓嶇椤圭洰鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ュ墠绔」鐩悕"
+                v-decorator="['frontProName', {rules: [{required: true, message: '璇疯緭鍏ュ墠绔」鐩悕锛�'}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鏄惁鍙槸鏌ヨ" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-switch v-decorator="['isOnlyQuery', { valuePropName: 'checked' }]" />
+              &nbsp;&nbsp;&nbsp;&nbsp;<a-tag color="cyan">濡傛灉鍙槸鏌ヨ,鍒欏彧浼氱敓鎴愭煡璇㈠拰瀵煎嚭鍔熻兘</a-tag>
+             </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鏄惁鏀寔瀵煎叆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-switch v-decorator="['isWhetherImport', { valuePropName: 'checked' }]" />
+              &nbsp;&nbsp;&nbsp;&nbsp;
+              <!-- <a-tag color="cyan">濡傛灉鍙槸鏌ヨ,鍒欏彧浼氱敓鎴愭煡璇㈠拰瀵煎嚭鍔熻兘</a-tag> -->
+             </a-form-item>
+          </a-col>
+        </a-row>
+        
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    getAppList
+  } from '@/api/modular/system/appManage'
+  import {
+    getMenuTree
+  } from '@/api/modular/system/menuManage'
+  import {
+    codeGenerateDatabaseList,
+    codeGenerateInformationList,
+    codeGenerateAdd
+  } from '@/api/modular/gen/codeGenerateManage'
+  export default {
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 15
+          }
+        },
+        visible: false,
+        appData: [],
+        menuTreeData: [],
+        databaseNameData:[],
+        tableNameData: [],
+        // tablePrefixData: [],
+        generateTypeData: [],
+        confirmLoading: false,
+        // tablePrefixValue: 'N',
+        databaseNameValue:'',
+        tableNameValue: '',
+        moduleName:'',
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add() {
+        this.visible = true
+        this.codeGenerateDatabaseList()
+       // 澶氬簱榛樿闇�瑕侀�夋嫨鍚庤皟鐢�
+       // this.codeGenerateInformationList() 
+        this.dataTypeItem()
+        this.selectedByDefault()
+
+        // 鑾峰彇绯荤粺搴旂敤鍒楄〃
+        this.getSysApplist()
+      },
+      /**
+       * 榛樿閫変腑椤�
+       */
+      selectedByDefault() {
+        this.form.getFieldDecorator('nameSpace', {
+          initialValue: 'Admin.NET.Application'
+        })
+        this.form.getFieldDecorator('frontProName', {
+          initialValue: 'My_Admin.NET_Template_Web'
+        })
+        // this.form.getFieldDecorator('tablePrefix', { valuePropName: 'checked', initialValue: 'N' })
+        this.form.getFieldDecorator('generateType', {
+          valuePropName: 'checked',
+          initialValue: '2'
+        })
+
+        // 鍒濆鍖栬彍鍗曢粯璁ら�夋嫨
+        this.form.getFieldDecorator('menuApplication', {
+          initialValue: 'busiapp'
+        })
+        this.changeApplication('busiapp')
+      },
+       /**
+       * 鑾峰緱鎵�鏈夋暟鎹簱
+       */
+      codeGenerateDatabaseList() {
+        codeGenerateDatabaseList().then((res) => {
+          this.databaseNameData = res.data
+        })
+      },
+      /**
+       * 鑾峰緱鎵�鏈夋暟鎹簱鐨勮〃
+       */
+      codeGenerateInformationList(parameter) {
+        codeGenerateInformationList(parameter).then((res) => {
+          this.tableNameData = res.data
+        })
+      },
+      /**
+       * 鑾峰緱鑿滃崟鎵�灞炲簲鐢�
+       */
+      getSysApplist() {
+        return getAppList().then((res) => {
+          if (res.success) {
+            this.appData = res.data
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      dataTypeItem() {
+        this.tablePrefixData = this.$options.filters['dictData']('yes_or_no')
+        this.generateTypeData = this.$options.filters['dictData']('code_gen_create_type')
+        this.generateTypeData.splice(0, 1) // 榛樿鍘绘帀浠庡帇缂╁寘涓嬭浇
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        validateFields((errors, values) => {
+          if (!errors) {
+            this.confirmLoading = true
+            codeGenerateAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }
+        })
+      },
+      handleCancel() {
+        this.form.resetFields()
+        this.visible = false
+        // 娓呯┖浠栦滑涓変釜
+        this.form.getFieldDecorator('className', {
+          initialValue: ''
+        })
+        this.form.getFieldDecorator('busName', {
+          initialValue: ''
+        })
+        // this.form.getFieldDecorator('tableComment', { initialValue: '' })
+      },
+       /**
+       * 閫夋嫨鏁版嵁搴�
+       */
+      databaseNameSele(item) {
+        this.databaseNameValue = item.databaseName
+        // this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
+        //this.form.getFieldDecorator('busName', {
+        //  initialValue: item.databaseComment
+        //})
+        // this.settingDefaultValue()
+        // this.form.getFieldDecorator('tableName', {
+        //  //X initialValue: ''
+        //  //X defaultValue:''
+        //  //X value:''
+        // }) 杩欎釜鏂规硶涓嶈捣浣滅敤
+        this.form.setFieldsValue({'tableName':''}); //杩欎釜OK
+        this.codeGenerateInformationList({ dbContextLocatorName:this.databaseNameValue});
+      },
+      /**
+       * 閫夋嫨鏁版嵁搴撳垪琛�
+       */
+      tableNameSele(item) {
+        this.tableNameValue = item.tableName
+        // this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
+        this.form.getFieldDecorator('busName', {
+          initialValue: item.tableComment
+        })
+        this.settingDefaultValue()
+      },
+      /**
+       * 鑿滃崟鎵�灞炲簲鐢╟hange浜嬩欢
+       */
+      changeApplication(value) {
+        getMenuTree({
+          'application': value
+        }).then((res) => {
+          if (res.success) {
+            this.menuTreeData = [{
+              'id': '-1',
+              'parentId': '0',
+              'title': '椤剁骇',
+              'value': '0',
+              'pid': '0',
+              'children': res.data
+            }]
+            this.form.getFieldDecorator('menuPid', {
+              initialValue: '0'
+            })
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      },
+      // /**
+      //  * 閫夋嫨鏄惁绉婚櫎鍓嶇紑瑙﹀彂
+      //  */
+      // tablePrefixRadio (tablePrefixType) {
+      //   this.tablePrefixValue = tablePrefixType
+      //   this.settingDefaultValue()
+      // },
+      /**
+       * 璁剧疆榛樿鍊�
+       */
+      settingDefaultValue() {
+        // const tableName = this.classNameToHump()
+        // this.form.getFieldDecorator('className', { initialValue: tableName })
+        // this.form.getFieldDecorator('busName', { initialValue: tableName + "涓氬姟"})
+      },
+      /**
+       * 閫夋嫨鐢熸垚鏂瑰紡
+       */
+      generateTypeRadio(generateType) {
+        // if (generateType === '1') {
+        //   this.packageNameShow = true
+        // } else {
+        //   this.packageNameShow = false
+        //   this.form.setFieldsValue({ nameSpace: 'iWare.Wms.Application' })
+        // }
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/assembly.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/assembly.vue
new file mode 100644
index 0000000..eabb7e7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/assembly.vue
@@ -0,0 +1,16 @@
+<template>
+</template>
+<script>
+import { STable, Ellipsis } from '@/components'
+export default {
+    components: {},
+    data(){
+        return {}
+    },
+    methods:{
+        
+    }
+}
+</script>
+<style lang="less">
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/editForm.vue
new file mode 100644
index 0000000..245239c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/editForm.vue
@@ -0,0 +1,422 @@
+<template>
+  <a-modal
+    title="缂栬緫浠g爜鐢熸垚閰嶇疆"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item v-show="false">
+          <a-input v-decorator="['id']" />
+        </a-form-item>
+         <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚搴�" has-feedback>
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鏁版嵁搴�"
+                v-decorator="['databaseName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴擄紒' }]}]">
+                <a-select-option
+                  v-for="(item,index) in databaseNameData"
+                  :key="index"
+                  :value="item.databaseName"
+                  @click="databaseNameSele(item)">{{ item.databaseName }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚琛�" has-feedback>
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鏁版嵁搴撹〃"
+                v-decorator="['tableName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴撹〃锛�' }]}]">
+                <a-select-option
+                  v-for="(item,index) in tableNameData"
+                  :key="index"
+                  :value="item.tableName"
+                  @click="tableNameSele(item)">{{ item.tableName }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="涓氬姟鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ヤ笟鍔″悕"
+                v-decorator="['busName', {rules: [{required: true, message: '璇疯緭鍏ヤ笟鍔″悕锛�'}]}]" />
+            </a-form-item>
+          </a-col>
+          <!--          <a-col :md="12" :sm="24">
+            <a-form-item
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              label="绉婚櫎鍓嶇紑"
+            >
+              <a-radio-group v-decorator="['tablePrefix',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁绉婚櫎鍓嶇紑锛�' }]}]" >
+                <a-radio v-for="(item,index) in tablePrefixData" :key="index" :value="item.code" @click="tablePrefixRadio(item.code)">{{ item.name }}</a-radio>
+              </a-radio-group>
+            </a-form-item>
+          </a-col> -->
+        </a-row>
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟鍒嗙被" has-feedback>
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨搴旂敤鍒嗙被"
+                v-decorator="['menuApplication', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]">
+                <a-select-option
+                  v-for="(item,index) in appData"
+                  :key="index"
+                  :value="item.code"
+                  @click="changeApplication(item.code)">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <div>
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐖剁骇鑿滃崟" has-feedback>
+                <a-tree-select
+                  v-decorator="['menuPid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]"
+                  style="width: 100%"
+                  :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+                  :treeData="menuTreeData"
+                  placeholder="璇烽�夋嫨鐖剁骇鑿滃崟"
+                  treeDefaultExpandAll>
+                  <span slot="title" slot-scope="{ id }">{{ id }}
+                  </span>
+                </a-tree-select>
+              </a-form-item>
+            </div>
+          </a-col>
+        </a-row>
+        <!--        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item
+              label="鍔熻兘鍚�"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-input placeholder="璇疯緭鍏ュ姛鑳藉悕" v-decorator="['tableComment', {rules: [{required: true, message: '璇疯緭鍏ュ姛鑳藉悕锛�'}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item
+              label="绫诲悕"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-input placeholder="璇疯緭鍏ョ被鍚�" v-decorator="['className', {rules: [{required: true, message: '璇疯緭鍏ョ被鍚嶏紒'}]}]" />
+            </a-form-item>
+          </a-col>
+        </a-row> -->
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鍛藉悕绌洪棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ュ懡鍚嶇┖闂�"
+                v-decorator="['nameSpace', {rules: [{required: true, message: '璇疯緭鍏ュ懡鍚嶇┖闂达紒'}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="浣滆�呭鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ヤ綔鑰呭鍚�"
+                v-decorator="['authorName', {rules: [{required: true, message: '璇疯緭鍏ヤ綔鑰呭鍚嶏紒'}]}]" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚鏂瑰紡">
+              <a-radio-group v-decorator="['generateType',{rules: [{ required: true, message: '璇烽�夋嫨鐢熸垚鏂瑰紡锛�' }]}]">
+                <a-radio
+                  v-for="(item,index) in generateTypeData"
+                  :key="index"
+                  :value="item.code"
+                  @click="generateTypeRadio(item.code)">{{ item.name }}</a-radio>
+              </a-radio-group>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="妯″潡璺緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ユā鍧楄矾寰�"
+                v-decorator="['moduleName', {rules: [{required: true, message: '璇疯緭鍏ユā鍧楄矾寰勶紒'}]}]" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鍓嶇椤圭洰鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ュ墠绔」鐩悕"
+                v-decorator="['frontProName', {rules: [{required: true, message: '璇疯緭鍏ュ墠绔」鐩悕锛�'}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鏄惁鍙槸鏌ヨ" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-switch v-decorator="['isOnlyQuery', { valuePropName: 'checked' }]" />
+              &nbsp;&nbsp;&nbsp;&nbsp;<a-tag color="cyan">濡傛灉鍙槸鏌ヨ,鍒欏彧浼氱敓鎴愭煡璇㈠拰瀵煎嚭鍔熻兘</a-tag>
+             </a-form-item>
+          </a-col>
+
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鏄惁鏀寔瀵煎叆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-switch v-decorator="['isWhetherImport', { valuePropName: 'checked' }]" />
+              &nbsp;&nbsp;&nbsp;&nbsp;
+              <!-- <a-tag color="cyan">濡傛灉鍙槸鏌ヨ,鍒欏彧浼氱敓鎴愭煡璇㈠拰瀵煎嚭鍔熻兘</a-tag> -->
+             </a-form-item>
+          </a-col>
+
+        </a-row>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    getAppList
+  } from '@/api/modular/system/appManage'
+  import {
+    getMenuTree
+  } from '@/api/modular/system/menuManage'
+  import {
+    codeGenerateDatabaseList,
+    codeGenerateInformationList,
+    codeGenerateEdit
+  } from '@/api/modular/gen/codeGenerateManage'
+  export default {
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 15
+          }
+        },
+        visible: false,
+        databaseNameData:[],
+        tableNameData: [],
+        appData: [],
+        menuTreeData: [],
+        // tablePrefixData: [],
+        generateTypeData: [],
+        confirmLoading: false,
+        // tablePrefixValue: 'N',
+        databaseNameValue:'',
+        tableNameValue: '',
+        moduleName:'',
+        // packageNameShow: true,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit(record) {
+        this.visible = true
+        this.codeGenerateDatabaseList()
+        this.codeGenerateInformationList()
+        this.dataTypeItem()
+        setTimeout(() => {
+          this.form.setFieldsValue({
+            id: record.id,
+            databaseName:record.databaseName,
+            tableName: record.tableName,
+            // tablePrefix: record.tablePrefix,
+            // tableComment: record.tableComment,
+            // className: record.className,
+            busName: record.busName,
+            generateType: record.generateType,
+            authorName: record.authorName,
+            frontProName:record.frontProName,
+            moduleName:record.moduleName,
+            nameSpace: record.nameSpace,
+            menuApplication: record.menuApplication,
+            menuPid: record.menuPid,
+            isOnlyQuery:record.isOnlyQuery,
+            isWhetherImport:record.isWhetherImport
+          })
+        }, 100)
+        this.databaseNameValue = record.databaseName
+        this.tableNameValue = record.tableName
+        // this.tablePrefixValue = record.tablePrefix
+
+        // 鑾峰彇绯荤粺搴旂敤鍒楄〃
+        this.getSysApplist()
+        this.changeApplication(record.menuApplication)
+      },
+      /**
+       * 鑾峰緱鑿滃崟鎵�灞炲簲鐢�
+       */
+      getSysApplist() {
+        return getAppList().then((res) => {
+          if (res.success) {
+            this.appData = res.data
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      },
+        /**
+       * 鑾峰緱鎵�鏈夋暟鎹簱
+       */
+      codeGenerateDatabaseList() {
+        codeGenerateDatabaseList().then((res) => {
+          this.databaseNameData = res.data
+        })
+      },
+      /**
+       * 鑾峰緱鎵�鏈夋暟鎹簱鐨勮〃
+       */
+      codeGenerateInformationList(parameter) {
+        codeGenerateInformationList(parameter).then((res) => {
+          this.tableNameData = res.data
+        })
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      dataTypeItem() {
+        this.tablePrefixData = this.$options.filters['dictData']('yes_or_no')
+        this.generateTypeData = this.$options.filters['dictData']('code_gen_create_type')
+        this.generateTypeData.splice(0, 1) // 榛樿鍘绘帀浠庡帇缂╁寘涓嬭浇
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        validateFields((errors, values) => {
+          if (!errors) {
+            this.confirmLoading = true
+            codeGenerateEdit(values).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }
+        })
+      },
+      handleCancel() {
+        this.form.resetFields()
+        this.visible = false
+      },
+        /**
+       * 閫夋嫨鏁版嵁搴�
+       */
+      databaseNameSele(item) {
+        this.databaseNameValue = item.databaseName
+        // this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
+        //this.form.getFieldDecorator('busName', {
+        //  initialValue: item.databaseComment
+        //})
+        this.form.setFieldsValue({'tableName':''}); //杩欎釜OK
+        this.codeGenerateInformationList({ dbContextLocatorName:this.databaseNameValue});
+        //this.settingDefaultValue()
+      },
+      /**
+       * 閫夋嫨鏁版嵁搴撳垪琛�
+       */
+      tableNameSele(item) {
+        this.tableNameValue = item.tableName
+        this.form.setFieldsValue({
+          className: item.tableComment
+        })
+        this.settingDefaultValue()
+      },
+      /**
+       * 鑿滃崟鎵�灞炲簲鐢╟hange浜嬩欢
+       */
+      changeApplication(value) {
+        getMenuTree({
+          'application': value
+        }).then((res) => {
+          if (res.success) {
+            this.menuTreeData = [{
+              'id': '-1',
+              'parentId': '0',
+              'title': '椤剁骇',
+              'value': '0',
+              'pid': '0',
+              'children': res.data
+            }]
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      },
+      // /**
+      //  * 閫夋嫨鏄惁绉婚櫎鍓嶇紑瑙﹀彂
+      //  */
+      // tablePrefixRadio (tablePrefixType) {
+      //   this.tablePrefixValue = tablePrefixType
+      //   this.settingDefaultValue()
+      // },
+      // /**
+      //  * 璁剧疆榛樿鍊�
+      //  */
+       settingDefaultValue () {
+      //  const tableName = this.classNameToHump()
+      //   this.form.setFieldsValue(
+      //     {
+      //       className: tableName,
+      //       busName: tableName.toLowerCase()
+      //     }
+      //   )
+       },
+      // /**
+      //  * 璁剧疆绫诲悕涓烘暟鎹簱琛ㄧ殑椹煎嘲鍛藉悕
+      //  */
+      // classNameToHump () {
+      //   const arr = this.tableNameValue.toLowerCase().split('_')
+      //   if (this.tablePrefixValue === 'Y') {
+      //     arr.splice(0, 1)
+      //   }
+      //   for (let i = 0; i < arr.length; i++) {
+      //     // charAt()鏂规硶寰楀埌绗竴涓瓧姣嶏紝slice()寰楀埌绗簩涓瓧姣嶄互鍚庣殑瀛楃涓�
+      //     arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].slice(1)
+      //   }
+      //   return arr.join('')
+      // },
+      /**
+       * 閫夋嫨鐢熸垚鏂瑰紡
+       */
+      generateTypeRadio(generateType) {
+        // if (generateType === '1') {
+        //   this.packageNameShow = true
+        // } else {
+        //   this.packageNameShow = false
+        //   this.form.setFieldsValue({ packageName: 'com.cn.xiaonuo' })
+        // }
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/fkModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/fkModal.vue
new file mode 100644
index 0000000..43f4ff9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/fkModal.vue
@@ -0,0 +1,184 @@
+<template>
+  <a-modal
+    title="閫夋嫨澶栭敭鍏崇郴"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="澶栭敭搴�" has-feedback>
+               <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鏁版嵁搴�"
+                v-decorator="['databaseName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴擄紒' }]}]">
+                <a-select-option
+                  v-for="(item,index) in databaseNameData"
+                  :key="index"
+                  :value="item.databaseName"
+                  @click="databaseNameSele(item)">{{ item.databaseName }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="澶栭敭琛�" has-feedback>
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鏁版嵁搴撹〃"
+                v-decorator="['tableName', { rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴撹〃锛�' }] }]">
+                <a-select-option
+                  v-for="(item, index) in tableNameData"
+                  :key="index"
+                  :value="item.tableName"
+                  @click="tableNameSele(item)">{{ item.tableName }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鏄剧ず瀛楁" has-feedback>
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鏄剧ず瀛楁"
+                v-decorator="['columnName', { rules: [{ required: true, message: '璇烽�夋嫨鏄剧ず瀛楁锛�' }] }]">
+                <a-select-option v-for="(item, index) in cloumnNameData" :key="index" :value="item.columnName">{{
+                  item.columnName
+                }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    codeGenerateDatabaseList,
+    codeGenerateInformationList,
+    codeGenerateColumnList
+  } from '@/api/modular/gen/codeGenerateManage'
+  export default {
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 15
+          }
+        },
+        visible: false,
+        confirmLoading: false,
+        databaseNameData: [],
+        tableNameData: [],
+        cloumnNameData: [],
+        row: undefined,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      show(row) {
+        this.row = row
+        this.visible = true
+        this.codeGenerateDatabaseList()
+        //this.codeGenerateInformationList()
+        setTimeout(() => {
+          this.form.setFieldsValue({
+            databaseName:row.codeGen.databaseName,
+            tableName: row.fkEntityName,
+            columnName: row.fkColumnName
+          })
+        }, 100)
+      },
+      /**
+       * 鑾峰緱鎵�鏈夋暟鎹簱
+       */
+      codeGenerateDatabaseList() {
+        codeGenerateDatabaseList().then((res) => {
+          this.databaseNameData = res.data;
+          let tdatabaseName = this.form.getFieldValue('databaseName');
+          //鐪嬫槸鍚﹁兘鑾峰彇鍒板��,鑾峰彇涓嶅埌鐨勮瘽榛樿璧嬪�肩涓�涓畾浣嶅櫒
+          if(!tdatabaseName)
+          {
+           tdatabaseName = this.databaseNameData[0].databaseName;
+           this.form.setFieldsValue({databaseName:tdatabaseName}); //璧嬪��
+          }
+          this.codeGenerateInformationList({ dbContextLocatorName:tdatabaseName});
+        })
+      },
+      /**
+       * 鑾峰緱鎵�鏈夋暟鎹簱鐨勮〃
+       */
+      codeGenerateInformationList(parameter) {
+        codeGenerateInformationList(parameter).then(res => {
+          this.confirmLoading = true
+          this.tableNameData = res.data
+          this.confirmLoading = false
+        })
+      },
+      /**
+       * 鑾峰緱琛ㄤ笅鐨勬墍鏈夊垪
+       */
+      codeGenerateColumnList(databaseName,tableName) {
+        codeGenerateColumnList(databaseName,tableName).then(res => {
+          this.confirmLoading = true
+          this.cloumnNameData = res.data
+          this.confirmLoading = false
+        })
+      },
+
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        validateFields((errors, values) => {
+          if (!errors) {
+            this.row.fkEntityName = values.tableName
+            this.row.fkColumnName = values.columnName
+            this.row.fkColumnNetType = this.cloumnNameData.find(e => e.columnName === values.columnName).netType
+
+            this.handleCancel()
+          }
+        })
+      },
+      handleCancel() {
+        this.form.resetFields()
+        this.visible = false
+      },
+       /**
+       * 閫夋嫨鏁版嵁搴�
+       */
+      databaseNameSele(item) {
+        this.databaseNameValue = item.databaseName
+        // this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
+        this.form.setFieldsValue({'tableName':''}); //杩欎釜OK
+        this.codeGenerateInformationList({ dbContextLocatorName:this.databaseNameValue});
+      },
+      /**
+       * 閫夋嫨鏁版嵁搴撳垪琛�
+       */
+      tableNameSele(item) {
+        this.codeGenerateColumnList(item.databaseName,item.tableName)
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/index.vue
new file mode 100644
index 0000000..872d08b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/index.vue
@@ -0,0 +1,499 @@
+<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+    <div ref="boxForm" class="boxForm">
+      <a-card :bordered="false" v-show="indexOpenShow" :bodyStyle="tstyle">
+        <a-spin :spinning="Loading">
+          <div class="table-page-search-wrapper" v-if="hasPerm('codeGenerate:page')">
+            <a-form layout="inline">
+              <a-row :gutter="48">
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="琛ㄥ悕绉�">
+                    <a-input v-model="queryParam.tableName" allow-clear placeholder="璇疯緭鍏ヨ〃鍚嶇О" />
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="涓氬姟鍚�">
+                    <a-input v-model="queryParam.busName" allow-clear placeholder="璇疯緭鍏ヤ笟鍔″悕" />
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                  <a-button style="margin-left: 8px" @click="() => (queryParam = {})">閲嶇疆</a-button>
+                </a-col>
+              </a-row>
+            </a-form>
+          </div>
+        </a-spin>
+      </a-card>
+    </div>
+    <a-card :bordered="false" v-show="indexOpenShow">
+      <a-spin :spinning="Loading">
+        <s-table
+          ref="table"
+          :scroll="{ x: true, y: tableHeight }"
+          :columns="columns"
+          :data="loadData"
+          :alert="true"
+          :rowKey="record => record.id"
+          :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+        >
+          <div slot="operator" v-if="hasPerm('codeGenerate:add')">
+            <div ref="actionBar" class="actionBar">
+              <a-button type="primary" v-if="hasPerm('codeGenerate:add')" icon="plus" @click="$refs.addForm.add()"
+                >鏂板</a-button
+              >
+            </div>
+          </div>
+          <span slot="isOnlyQueryscopedSlots" slot-scope="text">
+            <div v-if="text === true">
+              <a-tag color="green">鏄�</a-tag>
+            </div>
+            <div v-else-if="text == false">
+              <a-tag color="volcano">鍚�</a-tag>
+            </div>
+            <div v-else=""></div>
+          </span>
+          <span slot="databaseName" slot-scope="text">
+            <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+          </span>
+          <span slot="tableName" slot-scope="text">
+            <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+          </span>
+          <span slot="busName" slot-scope="text">
+            <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+          </span>
+          <span slot="nameSpace" slot-scope="text">
+            <ellipsis :length="25" tooltip>{{ text }}</ellipsis>
+          </span>
+          <!--<span slot="className" slot-scope="text">
+            <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+          </span> -->
+          <!--<span slot="tableComment" slot-scope="text">
+            <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+          </span> -->
+          <!-- <span slot="tablePrefix" slot-scope="text">
+            <ellipsis :length="10" tooltip>{{ 'yes_or_no' | dictType(text) }}</ellipsis>
+          </span> -->
+          <span slot="generateType" slot-scope="text">
+            <ellipsis :length="20" tooltip>{{ 'code_gen_create_type' | dictType(text) }}</ellipsis>
+          </span>
+          <span slot="action" slot-scope="text, record">
+            <span v-if="record.generateType === '1'">
+              <a v-if="hasPerm('codeGenerate:runDown')" @click="runDownCodeGenerate(record)">寮�濮嬬敓鎴�</a>
+            </span>
+            <span v-else>
+              <a-popconfirm
+                v-if="hasPerm('codeGenerate:runLocal')"
+                placement="topRight"
+                title="纭畾鐢熸垚浠g爜鍒皕ip鍖咃紵"
+                @confirm="() => runDownCodeGenerate(record)"
+              >
+                <a> 鐢熸垚鍒皕ip鍖�</a>
+              </a-popconfirm>
+              <a-divider type="vertical" />
+              <a-popconfirm
+                v-if="hasPerm('codeGenerate:runLocal')"
+                placement="topRight"
+                title="纭畾鐢熸垚浠g爜鍒版湰椤圭洰锛�"
+                @confirm="() => runLocalCodeGenerate(record)"
+              >
+                <a> 鐢熸垚鍒版湰椤圭洰</a>
+              </a-popconfirm>
+            </span>
+            <a-divider
+              type="vertical"
+              v-if="
+                hasPerm('codeGenerate:config') & hasPerm('codeGenerate:runLocal') || hasPerm('codeGenerate:runDown')
+              "
+            />
+            <a style="color:green" v-if="hasPerm('codeGenerate:config')" @click="indexConfigOpen(record)">閰嶇疆</a>
+            <a-divider type="vertical" v-if="hasPerm('codeGenerate:config') & hasPerm('codeGenerate:edit')" />
+            <a-popconfirm
+              v-if="hasPerm('codeGenerate:resetconfig')"
+              placement="topRight"
+              title="閲嶇疆浼氭竻闄ゆ偍宸茬粡閰嶇疆鐨勫唴瀹�,纭瑕侀噸缃厤缃悧锛�"
+              @confirm="() => resetConfig(record)"
+            >
+              <a style="color:green">閲嶇疆閰嶇疆</a>
+            </a-popconfirm>
+
+            <a-divider type="vertical" v-if="hasPerm('codeGenerate:config') & hasPerm('codeGenerate:edit')" />
+            <a style="color:blue" v-if="hasPerm('codeGenerate:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+            <a-divider type="vertical" v-if="hasPerm('codeGenerate:edit') & hasPerm('codeGenerate:delete')" />
+            <a-popconfirm
+              v-if="hasPerm('codeGenerate:delete')"
+              placement="topRight"
+              title="纭鍒犻櫎锛�"
+              @confirm="() => codeGenerateDelete(record)"
+            >
+              <a style="color:blue">鍒犻櫎</a>
+            </a-popconfirm>
+          </span>
+        </s-table>
+        <add-form ref="addForm" @ok="handleOk" v-if="hasPerm('codeGenerate:add')" />
+        <edit-form ref="editForm" @ok="handleOk" v-if="hasPerm('codeGenerate:edit')" />
+      </a-spin>
+    </a-card>
+    <index-config ref="indexConfig" @ok="handleResetOpen" v-if="hasPerm('codeGenerate:config')" />
+  </div>
+</template>
+<script>
+import { STable, Ellipsis } from '@/components'
+import setTableHtMixin from '@/mixins/handleTableHt.js'
+import {
+  codeGeneratePage,
+  codeGenerateDelete,
+  codeGenerateRunDown,
+  codeGenerateRunLocal,
+  codeGenerateRefresh
+} from '@/api/modular/gen/codeGenerateManage'
+import addForm from './addForm'
+import editForm from './editForm'
+import indexConfig from './indexConfig'
+
+export default {
+  mixins: [setTableHtMixin],
+  components: {
+    indexConfig,
+    STable,
+    Ellipsis,
+    addForm,
+    editForm
+  },
+  data() {
+    return {
+      // 鏌ヨ鍙傛暟
+      queryParam: {},
+      // 琛ㄥご
+      columns: [
+        {
+          title: '搴忓彿',
+          width: '60px',
+          align: 'center',
+          customRender: (text, record, index) => `${index + 1}`
+        },
+        {
+          title: '搴撳悕绉�',
+          dataIndex: 'databaseName',
+          scopedSlots: { customRender: 'databaseName' },
+          customHeaderCell: () => {
+            return {
+              style: {
+                'min-width': '160px' //鏈�灏忓垪瀹借缃�
+              }
+            }
+          },
+          customCell: () => {
+            return {
+              style: {
+                'min-width': '160px' //鏈�灏忓垪瀹借缃�
+              }
+            }
+          }
+        },
+        {
+          title: '琛ㄥ悕绉�',
+          dataIndex: 'tableName',
+          customHeaderCell: () => {
+            return {
+              style: {
+                'min-width': '120px' //鏈�灏忓垪瀹借缃�
+              }
+            }
+          },
+          customCell: () => {
+            return {
+              style: {
+                'min-width': '120px' //鏈�灏忓垪瀹借缃�
+              }
+            }
+          },
+          scopedSlots: { customRender: 'tableName' }
+        },
+        {
+          title: '涓氬姟鍚�',
+          dataIndex: 'busName',
+          scopedSlots: { customRender: 'busName' },
+          customHeaderCell: () => {
+            return {
+              style: {
+                'min-width': '120px' //鏈�灏忓垪瀹借缃�
+              }
+            }
+          },
+          customCell: () => {
+            return {
+              style: {
+                'min-width': '120px' //鏈�灏忓垪瀹借缃�
+              }
+            }
+          }
+        },
+        {
+          title: '鍛藉悕绌洪棿',
+          dataIndex: 'nameSpace',
+          customHeaderCell: () => {
+            return {
+              style: {
+                'min-width': '120px' //鏈�灏忓垪瀹借缃�
+              }
+            }
+          },
+          customCell: () => {
+            return {
+              style: {
+                'min-width': '120px' //鏈�灏忓垪瀹借缃�
+              }
+            }
+          },
+          scopedSlots: { customRender: 'nameSpace' }
+        },
+        {
+          title: '妯″潡璺緞',
+          dataIndex: 'moduleName',
+          customHeaderCell: () => {
+            return {
+              style: {
+                'min-width': '120px' //鏈�灏忓垪瀹借缃�
+              }
+            }
+          },
+          customCell: () => {
+            return {
+              style: {
+                'min-width': '120px' //鏈�灏忓垪瀹借缃�
+              }
+            }
+          },
+          scopedSlots: { customRender: 'moduleName' }
+        },
+        {
+          title: '鍓嶇椤圭洰鍚�',
+          dataIndex: 'frontProName',
+          customHeaderCell: () => {
+            return {
+              style: {
+                width: '120px', //鏈�灏忓垪瀹借缃�
+                display: 'inline-block'
+              }
+            }
+          },
+          customCell: () => {
+            return {
+              style: {
+                width: '120px', //鏈�灏忓垪瀹借缃�
+                display: 'inline-block'
+              }
+            }
+          },
+          scopedSlots: { customRender: 'frontProName' }
+        },
+        // {
+        //   title: '绫诲悕',
+        //   dataIndex: 'className',
+        //   scopedSlots: { customRender: 'className' }
+        // },
+        // {
+        //   title: '鍔熻兘鍚�',
+        //   dataIndex: 'tableComment',
+        //   scopedSlots: { customRender: 'tableComment' }
+        // },
+        {
+          title: '浣滆�呭鍚�',
+          dataIndex: 'authorName',
+          customHeaderCell: () => {
+            return {
+              style: {
+                'min-width': '100px' //鏈�灏忓垪瀹借缃�
+              }
+            }
+          },
+          customCell: () => {
+            return {
+              style: {
+                'min-width': '100px' //鏈�灏忓垪瀹借缃�
+              }
+            }
+          }
+        },
+        // {
+        //   title: '琛ㄥ墠缂�绉婚櫎',
+        //   dataIndex: 'tablePrefix',
+        //   scopedSlots: { customRender: 'tablePrefix' }
+        // },
+        // {
+        //   title: '鐢熸垚鏂瑰紡',
+        //   dataIndex: 'generateType',
+        //   scopedSlots: { customRender: 'generateType' },
+        // },
+        {
+          title: '鏄惁鍙槸鏌ヨ',
+          align: 'center',
+          width: '120px',
+          sorter: true,
+          dataIndex: 'isOnlyQuery',
+          scopedSlots: { customRender: 'isOnlyQueryscopedSlots' }
+        }
+      ],
+      tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+      loadData: parameter => {
+        return codeGeneratePage(Object.assign(parameter, this.queryParam)).then(res => {
+          return res.data
+        })
+      },
+      selectedRowKeys: [],
+      selectedRows: [],
+      Loading: false,
+      jdbcDriverList: [],
+      indexOpenShow: true
+    }
+  },
+  created() {
+    if (this.hasPerm('codeGenerate:edit') || this.hasPerm('codeGenerate:delete')) {
+      this.columns.push({
+        title: '鎿嶄綔',
+        width: '220px',
+        dataIndex: 'action',
+        scopedSlots: { customRender: 'action' }
+      })
+    }
+    this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+    window.addEventListener(
+      'resize',
+      () => {
+        this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+      },
+      false
+    )
+  },
+  methods: {
+    /**
+     * 寮�濮嬬敓鎴愪唬鐮侊紙鐢熸垚鍘嬬缉鍖咃級
+     */
+    runDownCodeGenerate(record) {
+      this.Loading = true
+      codeGenerateRunDown({ id: record.id })
+        .then(res => {
+          this.Loading = false
+
+          this.downloadfile(res)
+        })
+        .catch(err => {
+          debugger
+          this.Loading = false
+          this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒-' + err.message)
+        })
+    },
+    downloadfile(res) {
+      var blob = new Blob([res.data], { type: 'application/octet-stream;charset=UTF-8' })
+      var contentDisposition = res.headers['content-disposition']
+      var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
+      var result = patt.exec(contentDisposition)
+      var filename = result[1]
+      var downloadElement = document.createElement('a')
+      var href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺�
+      var reg = /^["](.*)["]$/g
+      downloadElement.style.display = 'none'
+      downloadElement.href = href
+      downloadElement.download = decodeURI(filename.replace(reg, '$1')) // 涓嬭浇鍚庢枃浠跺悕
+      document.body.appendChild(downloadElement)
+      downloadElement.click() // 鐐瑰嚮涓嬭浇
+      document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌
+      window.URL.revokeObjectURL(href)
+    },
+    /**
+     * 寮�濮嬬敓鎴愪唬鐮侊紙鏈湴椤圭洰锛�
+     */
+    runLocalCodeGenerate(record) {
+      codeGenerateRunLocal(record).then(res => {
+        if (res.success) {
+          this.$message.success('鐢熸垚鎴愬姛')
+          this.$refs.table.refresh()
+        } else {
+          this.$message.error('鐢熸垚澶辫触锛�' + res.message)
+        }
+      })
+    },
+    /**
+     * 鍒犻櫎
+     */
+    codeGenerateDelete(record) {
+      this.Loading = true
+      codeGenerateDelete([{ id: record.id }])
+        .then(res => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+          }
+        })
+        .catch(err => {
+          this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+        })
+        .finally(res => {
+          this.Loading = false
+        })
+    },
+    /**
+     * 閲嶇疆閰嶇疆
+     */
+    resetConfig(record) {
+      this.Loading = true
+      codeGenerateRefresh(record.id)
+        .then(res => {
+          if (res.success) {
+            this.$message.success('閲嶇疆閰嶇疆鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('閲嶇疆閰嶇疆澶辫触锛�' + res.message)
+          }
+        })
+        .catch(err => {
+          this.$message.error('閲嶇疆閰嶇疆閿欒锛�' + err.message)
+        })
+        .finally(res => {
+          this.Loading = false
+        })
+    },
+    /**
+     * 鎵撳紑閰嶇疆鐣岄潰
+     */
+    indexConfigOpen(record) {
+      this.indexOpenShow = false
+      this.$refs.indexConfig.open(record)
+      //涓嶅啀璋冪敤璇ユ柟娉�,鐢ㄤ簬澶勭悊淇濆瓨閰嶇疆鐨刡ug 銆怑ditby shaocx,2024-04-11銆�
+      /*
+      codeGenerateRefresh(record.id).then((res) => {
+        this.$refs.indexConfig.open(record)
+      })
+      //*/
+    },
+    /**
+     * 璇︾粏閰嶇疆鐣岄潰杩斿洖
+     */
+    handleResetOpen() {
+      this.indexOpenShow = true
+      this.$refs.table.refresh()
+    },
+    /**
+     * 鍏朵粬鐣岄潰杩斿洖
+     */
+    handleOk() {
+      this.$refs.table.refresh()
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    }
+  }
+}
+</script>
+<style lang="less">
+.table-operator {
+  margin-bottom: 18px;
+}
+button {
+  margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/indexConfig.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/indexConfig.vue
new file mode 100644
index 0000000..bf954d0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/indexConfig.vue
@@ -0,0 +1,367 @@
+<template>
+  <a-card :bordered="false" v-show="indexConfigShow">
+    <div class="table-operator">
+      <a-button class="but_item" type="dashed" @click="handleCancel" icon="rollback">杩斿洖</a-button>
+      <a-button type="primary" icon="plus" @click="handleSubmit">淇濆瓨</a-button>
+    </div>
+    <a-table
+      ref="table"
+      size="middle"
+      :columns="columns"
+      :dataSource="loadData"
+      :pagination="false"
+      :alert="true"
+      :loading="tableLoading"
+      :scroll="{x: true,y:410}"
+      :rowKey="(record) => record.id">
+      <template slot="columnComment" slot-scope="text, record">
+        <a-input v-model="record.columnComment" />
+      </template>
+
+      <template slot="showTitleMinWidth" slot-scope="text, record">
+        <a-input v-model="record.showTitleMinWidth" />
+      </template>
+
+      <!--<template slot="netType" slot-scope="text, record">
+        <a-select style="width: 120px" v-model="record.netType" :disabled="judgeColumns(record)">
+          <a-select-option v-for="(item,index) in netTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+        </a-select>
+      </template> -->
+      <template slot="effectType" slot-scope="text, record">
+        <a-select
+          style="width: 100%"
+          v-model="record.effectType"
+          :disabled="judgeColumns(record)"
+          @change="effectTypeChange(record, $event)">
+          <a-select-option v-for="(item, index) in effectTypeData" :key="index" :value="item.code">{{
+            item.name
+          }}</a-select-option>
+        </a-select>
+      </template>
+      <template slot="dictTypeCode" slot-scope="text, record">
+        <a-select
+          style="width: 100%"
+          v-model="record.dictTypeCode"
+          :disabled="
+            record.effectType !== 'radio' && record.effectType !== 'select' && record.effectType !== 'checkbox'
+          ">
+          <a-select-option v-for="(item, index) in dictDataAll" :key="index" :value="item.code">{{
+            item.name
+          }}</a-select-option>
+        </a-select>
+      </template>
+      <template slot="whetherTable" slot-scope="text, record">
+        <a-checkbox v-model="record.whetherTable" />
+      </template>
+      <template slot="whetherOrderBy" slot-scope="text, record">
+        <a-checkbox v-model="record.whetherOrderBy" />
+      </template>
+      <template slot="whetherRetract" slot-scope="text, record">
+        <a-checkbox v-model="record.whetherRetract" />
+      </template>
+      <template slot="whetherAddUpdate" slot-scope="text, record">
+        <a-checkbox v-model="record.whetherAddUpdate" :disabled="judgeColumns(record)" />
+      </template>
+      <template slot="whetherUnionKey" slot-scope="text, record">
+        <a-checkbox v-model="record.whetherUnionKey" :disabled="judgeColumns(record)" />
+      </template>
+      
+      <template slot="whetherRequired" slot-scope="text, record">
+        <a-checkbox v-model="record.whetherRequired" :disabled="judgeColumns(record)" />
+      </template>
+      <template slot="queryWhether" slot-scope="text, record">
+        <a-switch v-model="record.queryWhether">
+          <a-icon slot="checkedChildren" type="check" />
+          <a-icon slot="unCheckedChildren" type="close" />
+        </a-switch>
+      </template>
+      <template slot="queryType" slot-scope="text, record">
+        <a-select style="width: 100px" v-model="record.queryType" :disabled="!record.queryWhether">
+          <a-select-option v-for="(item, index) in codeGenQueryTypeData" :key="index" :value="item.code">{{
+            item.name
+          }}</a-select-option>
+        </a-select>
+      </template>
+    </a-table>
+    <fk-modal ref="fkModal" />
+  </a-card>
+</template>
+<script>
+  import {
+    sysCodeGenerateConfigList,
+    sysCodeGenerateConfigEdit
+  } from '@/api/modular/gen/sysCodeGenerateConfigManage'
+  import fkModal from './fkModal'
+  export default {
+    components: {
+      fkModal
+    },
+    data() {
+      return {
+        // 琛ㄥご
+        columns: [{
+            title: '瀛楁',
+            width:"120px",
+            dataIndex: 'columnName'
+          },
+          {
+            title: '鎻忚堪',
+            width:"120px",
+            dataIndex: 'columnComment',
+            scopedSlots: {
+              customRender: 'columnComment'
+            }
+          },
+          {
+            title: '绫诲瀷',
+             width:"120px",
+             dataIndex: 'netType'
+          },
+          // {
+          //   title: 'net绫诲瀷',
+          //   dataIndex: 'netType',
+          //   scopedSlots: { customRender: 'netType' }
+          // },
+          {
+            title: '浣滅敤绫诲瀷',
+             width:"120px",
+             dataIndex: 'effectType',
+            scopedSlots: {
+              customRender: 'effectType'
+            }
+          },
+          {
+            title: '瀛楀吀',
+            width: '200px',
+             width:"120px",
+             dataIndex: 'dictTypeCode',
+            scopedSlots: {
+              customRender: 'dictTypeCode'
+            }
+          },
+
+          {
+            title: '鏈�灏忓瓧娈靛垪瀹�',
+            align: 'center',
+             width:"100px",
+             dataIndex: 'showTitleMinWidth',
+            scopedSlots: {
+              customRender: 'showTitleMinWidth'
+            }
+          },
+
+
+          {
+            title: '鍒楄〃鏄剧ず',
+            align: 'center',
+             width:"80px",
+             dataIndex: 'whetherTable',
+            scopedSlots: {
+              customRender: 'whetherTable'
+            }
+          },
+          {
+            title: '鎺掑簭',
+            align: 'center',
+             width:"70px",
+             dataIndex: 'whetherOrderBy',
+            scopedSlots: {
+              customRender: 'whetherOrderBy'
+            }
+          },
+          // {
+          //   title: '鍒楀瓧娈电渷鐣�',
+          //   align: 'center',
+          //   dataIndex: 'whetherRetract',
+          //   scopedSlots: { customRender: 'whetherRetract' }
+          // },
+          {
+            title: '澧炴敼',
+            align: 'center',
+            width:"70px",
+            dataIndex: 'whetherAddUpdate',
+            scopedSlots: {
+              customRender: 'whetherAddUpdate'
+            }
+          },
+          {
+            title: '鑱斿悎涓婚敭',
+            align: 'center',
+            width:"120px",
+            dataIndex: 'whetherUnionKey',
+            scopedSlots: {
+              customRender: 'whetherUnionKey'
+            }
+          },
+          {
+            title: '蹇呭~',
+            align: 'center',
+            width:"70px",
+            dataIndex: 'whetherRequired',
+            scopedSlots: {
+              customRender: 'whetherRequired'
+            }
+          },
+          {
+            title: '鏄惁鏄煡璇�',
+            align: 'center',
+            width:"100px",
+            dataIndex: 'queryWhether',
+            scopedSlots: {
+              customRender: 'queryWhether'
+            }
+          },
+          {
+            title: '鏌ヨ鏂瑰紡',
+            width:"120px",
+            dataIndex: 'queryType',
+            scopedSlots: {
+              customRender: 'queryType'
+            }
+          }
+        ],
+        indexConfigShow: false,
+        tableLoading: false,
+        visible: false,
+        loadData: [],
+        netTypeData: [],
+        effectTypeData: [],
+        dictDataAll: [],
+        codeGenQueryTypeData: [],
+        yesOrNoData: []
+      }
+    },
+    methods: {
+      /**
+       * 鎵撳紑鐣岄潰
+       */
+      open(data) {
+        this.indexConfigShow = true
+        this.tableLoading = true
+        const dictOption = this.$options
+        this.netTypeData = dictOption.filters['dictData']('code_gen_net_type')
+        this.effectTypeData = dictOption.filters['dictData']('code_gen_effect_type')
+        this.dictDataAll = dictOption.filters['dictDataAll']()
+        this.yesOrNoData = dictOption.filters['dictData']('yes_or_no')
+        this.codeGenQueryTypeData = dictOption.filters['dictData']('code_gen_query_type')
+        const params = {
+          codeGenId: data.id
+        }
+        sysCodeGenerateConfigList(params).then((res) => {
+          this.loadData = res.data
+          this.loadData.forEach(item => {
+            for (const key in item) {
+              if (item[key] === 'Y') {
+                item[key] = true
+              }
+              if (item[key] === 'N') {
+                item[key] = false
+              }
+            }
+
+            // 鏋氫妇绫诲瀷榛樿鍊间负涓嬫媺妗�
+            if(item["netType"].indexOf("Admin.NET.Core.") != -1){
+              item.effectType ='select'
+            }
+         
+            //璁剧疆琛ㄦ牸鍒楀搴�
+            if(item.showTitleMinWidth==null || item.showTitleMinWidth==""){
+              if(item["netType"]=='int'){
+                item.showTitleMinWidth ='80px'
+              }else{
+                item.showTitleMinWidth ='120px'
+              }
+            }
+
+            // 绉熸埛id鍒楅粯璁ゅ叏閮ㄤ笉鍕鹃��
+            if (item.columnName === 'tenantId') {
+              item.whetherTable = false
+              item.whetherOrderBy = false
+              item.whetherAddUpdate = false
+              item.queryWhether = false
+              item.whetherUnionKey=false
+            }
+          })
+          this.tableLoading = false
+        })
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit() {
+    
+        // 鍋氭暟缁勫睘鎬ц浆鎹�, 鍜卞厛鏉ヤ竴涓垏鏂弻鍚戠粦瀹氾紝瀛︿範鐨勭闉嬩笅鍥炶涓嬪晩
+        // eslint-disable-next-line prefer-const
+        var inx1 = this.loadData.findIndex(
+          (u) => u.showTitleMinWidth == '' || u.showTitleMinWidth == null 
+        )
+        if(inx1>-1){
+          this.$message.warning("鍒楀瀛楁鍚嶅繀濉�")
+          return
+        }
+        var inx2 = this.loadData.findIndex(
+          (u) =>  u.showTitleMinWidth.indexOf("px") == -1 
+        )
+        if(inx2>-1){
+          this.$message.warning("鍒楀瀛楁鍚嶅寘鍚玴x")
+          return
+        }
+        this.tableLoading = true
+        let loadDatas = JSON.parse(JSON.stringify(this.loadData))
+        loadDatas.forEach(item => {
+          // 蹇呭~閭d竴椤硅浆鎹�
+          for (const key in item) {
+            if (item[key] === true) {
+              item[key] = 'Y'
+            }
+            if (item[key] === false) {
+              item[key] = 'N'
+            }
+          }
+        })
+        // const param = {
+        //   sysCodeGenerateConfigParamList: loadDatas
+        // }
+        sysCodeGenerateConfigEdit(loadDatas).then((res) => {
+          this.tableLoading = false
+          if (res.success) {
+            this.$message.success('缂栬緫鎴愬姛')
+            this.handleCancel()
+          } else {
+            this.$message.error('缂栬緫澶辫触锛�' + res.message)
+          }
+        }).finally((res)=>{this.tableLoading = false})
+      },
+      /**
+       * 鍒ゆ柇鏄惁锛堢敤浜庢槸鍚﹁兘閫夋嫨鎴栬緭鍏ョ瓑锛�
+       */
+      judgeColumns(data) {
+        if (
+         
+          data.columnName.indexOf('createdUserName') > -1 ||
+          data.columnName.indexOf('createdTime') > -1 ||
+          data.columnName.indexOf('updatedUserName') > -1 ||
+          data.columnName.indexOf('updatedTime') > -1 ||
+          data.columnKey === 'True'
+        ) {
+          return true
+        }
+        return false
+      },
+      /**
+       * 浣滅敤绫诲瀷鏀瑰彉
+       */
+      effectTypeChange(data, value) {
+        if (value === 'fk') {
+          //鎵撳紑澶栭敭璁剧疆妯℃�佹
+          this.$refs.fkModal.show(data)
+        }
+      },
+      handleCancel() {
+        this.$emit('ok')
+        this.loadData = []
+        this.indexConfigShow = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/addForm.vue
new file mode 100644
index 0000000..4d1b1ca
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/addForm.vue
@@ -0,0 +1,314 @@
+<template>
+  <a-modal
+    title="鏂板浠g爜鐢熸垚閰嶇疆"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+         <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚搴�" has-feedback>
+               <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鏁版嵁搴�"
+                v-decorator="['databaseName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴擄紒' }]}]">
+                <a-select-option
+                  v-for="(item,index) in databaseNameData"
+                  :key="index"
+                  :value="item.databaseName"
+                  @click="databaseNameSele(item)">{{ item.databaseName }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="涓氬姟鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ヤ笟鍔″悕"
+                v-decorator="['busName', {rules: [{required: true, message: '璇疯緭鍏ヤ笟鍔″悕锛�'}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟鍒嗙被" has-feedback>
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨搴旂敤鍒嗙被"
+                v-decorator="['menuApplication', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]">
+                <a-select-option
+                  v-for="(item,index) in appData"
+                  :key="index"
+                  :value="item.code"
+                  @click="changeApplication(item.code)">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <div>
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐖剁骇鑿滃崟" has-feedback>
+                <a-tree-select
+                  v-decorator="['menuPid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]"
+                  style="width: 100%"
+                  :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+                  :treeData="menuTreeData"
+                  placeholder="璇烽�夋嫨鐖剁骇鑿滃崟"
+                  treeDefaultExpandAll>
+                  <span slot="title" slot-scope="{ id }">{{ id }}
+                  </span>
+                </a-tree-select>
+              </a-form-item>
+            </div>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鍛藉悕绌洪棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ヤ唬鐮佸寘鍚�"
+                v-decorator="['nameSpace', {rules: [{required: true, message: '璇疯緭鍏ュ懡鍚嶇┖闂达紒'}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="浣滆�呭鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ヤ綔鑰呭鍚�"
+                v-decorator="['authorName', {rules: [{required: true, message: '璇疯緭鍏ヤ綔鑰呭鍚嶏紒'}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚鏂瑰紡">
+              <a-radio-group v-decorator="['generateType',{rules: [{ required: true, message: '璇烽�夋嫨鐢熸垚鏂瑰紡锛�' }]}]">
+                <a-radio
+                  v-for="(item,index) in generateTypeData"
+                  :key="index"
+                  :value="item.code"
+                  @click="generateTypeRadio(item.code)">{{ item.name }}</a-radio>
+              </a-radio-group>
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    getAppList
+  } from '@/api/modular/system/appManage'
+  import {
+    getMenuTree
+  } from '@/api/modular/system/menuManage'
+  import { codeGenerateDatabaseList } from '@/api/modular/gen/codeGenerateManage'
+  import { lowCodeAdd } from '@/api/modular/gen/lowCodeManage'
+  export default {
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 15
+          }
+        },
+        visible: false,
+        appData: [],
+        menuTreeData: [],
+        databaseNameData:[],
+        // tablePrefixData: [],
+        generateTypeData: [],
+        confirmLoading: false,
+        // tablePrefixValue: 'N',
+        databaseNameValue:'',
+        tableNameValue: '',
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add() {
+        this.visible = true
+        this.codeGenerateDatabaseList()
+       // 澶氬簱榛樿闇�瑕侀�夋嫨鍚庤皟鐢�
+       // this.codeGenerateInformationList() 
+        this.dataTypeItem()
+        this.selectedByDefault()
+
+        // 鑾峰彇绯荤粺搴旂敤鍒楄〃
+        this.getSysApplist()
+      },
+      /**
+       * 榛樿閫変腑椤�
+       */
+      selectedByDefault() {
+        this.form.getFieldDecorator('nameSpace', {
+          initialValue: 'iWare.Wms.Application'
+        })
+        // this.form.getFieldDecorator('tablePrefix', { valuePropName: 'checked', initialValue: 'N' })
+        this.form.getFieldDecorator('generateType', {
+          valuePropName: 'checked',
+          initialValue: '2'
+        })
+
+        // 鍒濆鍖栬彍鍗曢粯璁ら�夋嫨
+        this.form.getFieldDecorator('menuApplication', {
+          initialValue: 'busiapp'
+        })
+        this.changeApplication('busiapp')
+      },
+       /**
+       * 鑾峰緱鎵�鏈夋暟鎹簱
+       */
+      codeGenerateDatabaseList() {
+        codeGenerateDatabaseList().then((res) => {
+          this.databaseNameData = res.data
+        })
+      },
+      /**
+       * 鑾峰緱鑿滃崟鎵�灞炲簲鐢�
+       */
+      getSysApplist() {
+        return getAppList().then((res) => {
+          if (res.success) {
+            this.appData = res.data
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      dataTypeItem() {
+        this.tablePrefixData = this.$options.filters['dictData']('yes_or_no')
+        this.generateTypeData = this.$options.filters['dictData']('code_gen_create_type')
+        this.generateTypeData.splice(0, 1) // 榛樿鍘绘帀浠庡帇缂╁寘涓嬭浇
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        validateFields((errors, values) => {
+          if (!errors) {
+            this.confirmLoading = true
+            lowCodeAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }
+        })
+      },
+      handleCancel() {
+        this.form.resetFields()
+        this.visible = false
+        // 娓呯┖浠栦滑涓変釜
+        this.form.getFieldDecorator('className', {
+          initialValue: ''
+        })
+        this.form.getFieldDecorator('busName', {
+          initialValue: ''
+        })
+        // this.form.getFieldDecorator('tableComment', { initialValue: '' })
+      },
+       /**
+       * 閫夋嫨鏁版嵁搴�
+       */
+      databaseNameSele(item) {
+        this.databaseNameValue = item.databaseName
+        // this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
+        //this.form.getFieldDecorator('busName', {
+        //  initialValue: item.databaseComment
+        //})
+        // this.settingDefaultValue()
+        // this.form.getFieldDecorator('tableName', {
+        //  //X initialValue: ''
+        //  //X defaultValue:''
+        //  //X value:''
+        // }) 杩欎釜鏂规硶涓嶈捣浣滅敤
+        this.form.setFieldsValue({'tableName':''}); //杩欎釜OK
+        //this.codeGenerateInformationList({ dbContextLocatorName:this.databaseNameValue});
+      },
+      /**
+       * 閫夋嫨鏁版嵁搴撳垪琛�
+       */
+      tableNameSele(item) {
+        this.tableNameValue = item.tableName
+        // this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
+        this.form.getFieldDecorator('busName', {
+          initialValue: item.tableComment
+        })
+        this.settingDefaultValue()
+      },
+      /**
+       * 鑿滃崟鎵�灞炲簲鐢╟hange浜嬩欢
+       */
+      changeApplication(value) {
+        getMenuTree({
+          'application': value
+        }).then((res) => {
+          if (res.success) {
+            this.menuTreeData = [{
+              'id': '-1',
+              'parentId': '0',
+              'title': '椤剁骇',
+              'value': '0',
+              'pid': '0',
+              'children': res.data
+            }]
+            this.form.getFieldDecorator('menuPid', {
+              initialValue: '0'
+            })
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      },
+      // /**
+      //  * 閫夋嫨鏄惁绉婚櫎鍓嶇紑瑙﹀彂
+      //  */
+      // tablePrefixRadio (tablePrefixType) {
+      //   this.tablePrefixValue = tablePrefixType
+      //   this.settingDefaultValue()
+      // },
+      /**
+       * 璁剧疆榛樿鍊�
+       */
+      settingDefaultValue() {
+        // const tableName = this.classNameToHump()
+        // this.form.getFieldDecorator('className', { initialValue: tableName })
+        // this.form.getFieldDecorator('busName', { initialValue: tableName + "涓氬姟"})
+      },
+      /**
+       * 閫夋嫨鐢熸垚鏂瑰紡
+       */
+      generateTypeRadio(generateType) {
+        // if (generateType === '1') {
+        //   this.packageNameShow = true
+        // } else {
+        //   this.packageNameShow = false
+        //   this.form.setFieldsValue({ nameSpace: 'Admin.NET.Application' })
+        // }
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/editForm.vue
new file mode 100644
index 0000000..4590af2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/editForm.vue
@@ -0,0 +1,640 @@
+<template>
+  <a-modal
+    title="缂栬緫浠g爜鐢熸垚閰嶇疆"
+    :width="1200"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-tabs v-model="activeKey" @change="tabsChange">
+        <a-tab-pane key="1" tab="鍩虹淇℃伅">
+          <a-form :form="form">
+            <a-form-item v-show="false">
+              <a-input v-decorator="['id']" />
+            </a-form-item>
+            <a-row :gutter="24">
+              <a-col :md="12" :sm="24">
+                <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚搴�" has-feedback>
+                  <a-select
+                    style="width: 100%"
+                    placeholder="璇烽�夋嫨鏁版嵁搴�"
+                    v-decorator="['databaseName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴擄紒' }]}]">
+                    <a-select-option
+                      v-for="(item,index) in databaseNameData"
+                      :key="index"
+                      :value="item.databaseName"
+                      @click="databaseNameSele(item)">{{ item.databaseName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+
+              <a-col :md="12" :sm="24">
+                <a-form-item label="涓氬姟鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+                  <a-input
+                    placeholder="璇疯緭鍏ヤ笟鍔″悕"
+                    v-decorator="['busName', {rules: [{required: true, message: '璇疯緭鍏ヤ笟鍔″悕锛�'}]}]" />
+                </a-form-item>
+              </a-col>
+              
+              <a-col :md="12" :sm="24">
+                <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟鍒嗙被" has-feedback>
+                  <a-select
+                    style="width: 100%"
+                    placeholder="璇烽�夋嫨搴旂敤鍒嗙被"
+                    v-decorator="['menuApplication', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]">
+                    <a-select-option
+                      v-for="(item,index) in appData"
+                      :key="index"
+                      :value="item.code"
+                      @click="changeApplication(item.code)">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="12" :sm="24">
+                <div>
+                  <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐖剁骇鑿滃崟" has-feedback>
+                    <a-tree-select
+                      v-decorator="['menuPid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]"
+                      style="width: 100%"
+                      :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+                      :treeData="menuTreeData"
+                      placeholder="璇烽�夋嫨鐖剁骇鑿滃崟"
+                      treeDefaultExpandAll>
+                      <span slot="title" slot-scope="{ id }">{{ id }}
+                      </span>
+                    </a-tree-select>
+                  </a-form-item>
+                </div>
+              </a-col>
+            
+              <a-col :md="12" :sm="24">
+                <a-form-item label="鍛藉悕绌洪棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+                  <a-input
+                    placeholder="璇疯緭鍏ュ懡鍚嶇┖闂�"
+                    v-decorator="['nameSpace', {rules: [{required: true, message: '璇疯緭鍏ュ懡鍚嶇┖闂达紒'}]}]" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="12" :sm="24">
+                <a-form-item label="浣滆�呭鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+                  <a-input
+                    placeholder="璇疯緭鍏ヤ綔鑰呭鍚�"
+                    v-decorator="['authorName', {rules: [{required: true, message: '璇疯緭鍏ヤ綔鑰呭鍚嶏紒'}]}]" />
+                </a-form-item>
+              </a-col>
+
+              <a-col :md="12" :sm="24">
+                <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚鏂瑰紡">
+                  <a-radio-group v-decorator="['generateType',{rules: [{ required: true, message: '璇烽�夋嫨鐢熸垚鏂瑰紡锛�' }]}]">
+                    <a-radio
+                      v-for="(item,index) in generateTypeData"
+                      :key="index"
+                      :value="item.code"
+                      @click="generateTypeRadio(item.code)">{{ item.name }}</a-radio>
+                  </a-radio-group>
+                </a-form-item>
+              </a-col>
+            </a-row>
+          </a-form>
+        </a-tab-pane>
+        <a-tab-pane key="2" tab="琛ㄥ崟閰嶇疆" force-render>
+          <k-form-design 
+            :showHead="false" 
+            ref='kfd'
+            style="background-color: white;"
+            @save="kFormHandleSave"
+            :value="kFormDesignData"  />
+        </a-tab-pane>
+        <a-tab-pane key="3" tab="鍔ㄦ�佹暟鎹�" force-render>
+          <dictIndex></dictIndex>
+        </a-tab-pane>
+        <a-tab-pane key="4" tab="鏁版嵁琛ㄩ厤缃�">
+          <a-button type="primary" @click="addTableModal">娣诲姞琛�</a-button>
+
+          <span v-for="(table, index) in Tables" :key="index">
+            <a-tag :closable="true" @close="tableHandleClose(table)">
+              {{ table.tableDesc }}
+            </a-tag>
+          </span>
+
+          <a-table 
+            ref="table"
+            :dataSource="databases" 
+            :columns="databases_columns"
+            :pagination="false"
+            :alert="true"
+            :rowKey="(record) => record.id">
+            <span slot="dbParam" slot-scope="text, record">
+              <a-input v-model="record.dbParam" />
+            </span>
+            <span slot="fieldName" slot-scope="text, record">
+              <a-input v-model="record.fieldName" />
+            </span>
+            <span slot="tableName" slot-scope="text, record">
+              <a-select v-model="record.tableName" @change="handleChangeTable(record)">
+                <a-select-option v-for="d in Tables" :key="d.tableName">
+                  {{ d.tableDesc }}
+                </a-select-option>
+              </a-select>
+            </span>
+            <span slot="isRequired" slot-scope="text, record">
+              <a-checkbox v-model="record.isRequired"></a-checkbox>
+            </span>
+            <span slot="key" slot-scope="text, record">
+              {{record.control_Key}} <br />
+              {{record.control_Label}} ({{record.control_Model}})
+            </span>
+            <template slot="whetherTable" slot-scope="text, record">
+              <a-checkbox v-model="record.whetherTable" />
+            </template>
+            <template slot="whetherOrderBy" slot-scope="text, record">
+              <a-checkbox v-model="record.whetherOrderBy" />
+            </template>
+            <template slot="whetherAddUpdate" slot-scope="text, record">
+              <a-checkbox v-model="record.whetherAddUpdate" />
+            </template>
+            <template slot="whetherUnionKey" slot-scope="text, record">
+              <a-checkbox v-model="record.whetherUnionKey" />
+            </template>
+            <template slot="queryWhether" slot-scope="text, record">
+              <a-checkbox v-model="record.queryWhether" />
+            </template>
+            <template slot="queryType" slot-scope="text, record">
+              <a-select style="width: 100px" v-model="record.queryType" :disabled="!record.queryWhether">
+                <a-select-option v-for="(item, index) in codeGenQueryTypeData" :key="index" :value="item.code">{{
+                  item.name
+                }}</a-select-option>
+              </a-select>
+            </template>
+          </a-table>
+        </a-tab-pane>
+      </a-tabs>
+      <a-modal :visible="visible" v-if="addTableShow" title="娣诲姞琛�" @ok="addTable_handleOk" @cancel="addTable_handleCancel">
+          <a-row :gutter="24">
+            <a-col :md="24" :sm="24">
+              <a-form-item label="绫诲悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+                <a-input v-model="addTable.className" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="24" :sm="24">
+              <a-form-item label="琛ㄥ悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+                <a-input v-model="addTable.tableName" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="24" :sm="24">
+              <a-form-item label="鎻忚堪" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+                <a-input v-model="addTable.tableDesc" />
+              </a-form-item>
+            </a-col>
+          </a-row>
+      </a-modal>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    getAppList
+  } from '@/api/modular/system/appManage'
+  import {
+    getMenuTree
+  } from '@/api/modular/system/menuManage'
+  import { 
+    codeGenerateDatabaseList 
+  } from '@/api/modular/gen/codeGenerateManage'
+  import { lowCodeEdit,lowCodeContrast, lowCodeInfo } from '@/api/modular/gen/lowCodeManage'
+  import { CheckOutlined, EditOutlined } from '@ant-design/icons-vue';
+  import 'k-form-design/styles/k-form-design.less'
+import { setFormDesignConfig } from 'k-form-design'
+  import { STable, Ellipsis } from '@/components'
+  import dictIndex from '../../system/dict/index.vue'
+  import Vue from 'vue'
+  import { ACCESS_TOKEN } from '@/store/mutation-types'
+import { map } from 'leaflet'
+
+  export default{
+    components: {
+      STable, Ellipsis,dictIndex
+    },
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 15
+          }
+        },
+        visible: false,
+        addTable:{
+          className: '',
+          tableName: '',
+          tableDesc: ''
+        },
+        Tables:[],
+        addTableShow: false,
+        databaseNameData:[],
+        tableNameData: [],
+        appData: [],
+        menuTreeData: [],
+        generateTypeData: [],
+        confirmLoading: false,
+        databaseNameValue:'',
+        tableNameValue: '',
+        activeKey: '1',
+        kFormDesignData: {},
+        databases: [],
+        editableData: {},
+        databases_columns: [{
+            title: 'key',
+            dataIndex: 'control_Key',
+            key: 'control_Key',
+            scopedSlots: { customRender: 'key' }
+          },{
+            title: '琛ㄥ崟绫诲瀷',
+            dataIndex: 'control_Type',
+            key: 'control_Type',
+          },{
+            title: '闈炵┖瀛楁',
+            dataIndex: 'isRequired',
+            key: 'isRequired',
+            width: '70px',
+            scopedSlots: { customRender: 'isRequired' }
+          },{
+            title: '琛ㄥ悕',
+            dataIndex: 'tableName',
+            key: 'tableName',
+            scopedSlots: { customRender: 'tableName' }
+          },{
+            title: '瀛楁鍚�',
+            dataIndex: 'fieldName',
+            key: 'fieldName',
+            width: '150px',
+          },{
+            title: '鏁版嵁绫诲瀷',
+            dataIndex: 'dbTypeName',
+            key: 'dbTypeName',
+          },{
+            title: '鏁版嵁搴撶被鍨�',
+            dataIndex: 'dbParam',
+            key: 'dbParam',
+            width: '150px',
+            scopedSlots: { customRender: 'dbParam' }
+          },
+          {
+            title: '鍒楄〃鏄剧ず',
+            align: 'center',
+            dataIndex: 'whetherTable',
+            scopedSlots: {
+              customRender: 'whetherTable'
+            }
+          },
+          {
+            title: '鎺掑簭',
+            align: 'center',
+            dataIndex: 'whetherOrderBy',
+            scopedSlots: {
+              customRender: 'whetherOrderBy'
+            }
+          },
+          {
+            title: '澧炴敼',
+            align: 'center',
+            dataIndex: 'whetherAddUpdate',
+            scopedSlots: {
+              customRender: 'whetherAddUpdate'
+            }
+          },
+          {
+            title: '鑱斿悎涓婚敭',
+            align: 'center',
+            width:"70px",
+            dataIndex: 'whetherUnionKey',
+            scopedSlots: {
+              customRender: 'whetherUnionKey'
+            }
+          },
+          {
+            title: '鏄惁鏄煡璇�',
+            align: 'center',
+            dataIndex: 'queryWhether',
+            scopedSlots: {
+              customRender: 'queryWhether'
+            }
+          },
+          {
+            title: '鏌ヨ鏂瑰紡',
+            dataIndex: 'queryType',
+            scopedSlots: {
+              customRender: 'queryType'
+            }
+          }],
+        codeGenQueryTypeData: [],
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit(record) {
+        const dictOption = this.$options
+        this.visible = true
+        this.codeGenerateDatabaseList()
+        this.dataTypeItem()
+        this.loadData(record)
+        this.databaseNameValue = record.databaseName
+        this.tableNameValue = record.tableName
+        this.databases = [];
+        this.codeGenQueryTypeData = dictOption.filters['dictData']('code_gen_query_type')
+
+        let formDesign = record.formDesign || '';
+
+        if(formDesign.length > 0){
+          this.kFormDesignData = JSON.parse(record.formDesign);
+        }else{
+          this.kFormDesignData = {
+              "list": [
+              ],
+              "config": {
+                  "layout": "horizontal",
+                  "labelCol": {
+                      "xs": 4,
+                      "sm": 4,
+                      "md": 4,
+                      "lg": 4,
+                      "xl": 4,
+                      "xxl": 4
+                  },
+                  "labelWidth": 100,
+                  "labelLayout": "flex",
+                  "wrapperCol": {
+                      "xs": 18,
+                      "sm": 18,
+                      "md": 18,
+                      "lg": 18,
+                      "xl": 18,
+                      "xxl": 18
+                  },
+                  "hideRequiredMark": false,
+                  "customStyle": ""
+              }
+          }
+        }
+
+        // 鑾峰彇绯荤粺搴旂敤鍒楄〃
+        this.getSysApplist()
+        this.changeApplication(record.menuApplication)
+
+        let uploadHeaders = {};
+
+        const token = Vue.ls.get(ACCESS_TOKEN)
+        const refreshToken = Vue.ls.get('X-Access-Token')
+        if (token) {
+          uploadHeaders['Authorization'] = 'Bearer ' + token
+        }
+        if (refreshToken) {
+          uploadHeaders['X-Authorization'] = 'Bearer ' + refreshToken
+        }
+
+        let kformConfig = {
+          uploadFile: "/api/sysFileInfo/kformormupload", // 涓婁紶鏂囦欢鍦板潃
+          uploadImage: "/api/sysFileInfo/kformormupload", // 涓婁紶鍥剧墖鍦板潃
+          uploadFileName: "file", // 涓婁紶鏂囦欢name
+          uploadImageName: "file", // 涓婁紶鍥剧墖name
+          uploadFileData: { key: "UploadFile:Default" }, // 涓婁紶鏂囦欢棰濆鍙傛暟
+          uploadImageData: { key: "UploadFile:Default" }, // 涓婁紶鍥剧墖棰濆鍙傛暟
+          uploadFileHeaders: uploadHeaders, // 涓婁紶鏂囦欢璇锋眰澶撮儴
+          uploadImageHeaders: uploadHeaders // 涓婁紶鍥剧墖璇锋眰澶撮儴
+        };
+
+        setFormDesignConfig(kformConfig);
+
+        this.$nextTick(() => {
+          this.form.setFieldsValue({
+            id: record.id,
+            databaseName:record.databaseName,
+            tableName: record.tableName,
+            // tablePrefix: record.tablePrefix,
+            // tableComment: record.tableComment,
+            // className: record.className,
+            busName: record.busName,
+            generateType: record.generateType,
+            authorName: record.authorName,
+            nameSpace: record.nameSpace,
+            menuApplication: record.menuApplication,
+            menuPid: record.menuPid
+          })
+
+          this.importKFormDesignData();
+        });
+
+      },
+      /**
+       * 鍔犺浇鏁版嵁
+       */
+      loadData(record){
+        lowCodeInfo(record.id).then((res) => {
+          if (res.success) {
+            this.databases = [];
+            this.Tables = [];
+            (res.data.databases || []).forEach(element => {
+              this.databases.push(element);
+            });
+            (res.data.tables || []).forEach(element => {
+              this.Tables.push(element);
+            });
+          } else {
+            this.$message.error('鑾峰彇澶辫触' + res.message)
+          }
+        })
+      },
+      /**
+       * 鑾峰緱鑿滃崟鎵�灞炲簲鐢�
+       */
+      getSysApplist() {
+        return getAppList().then((res) => {
+          if (res.success) {
+            this.appData = res.data
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      },
+        /**
+       * 鑾峰緱鎵�鏈夋暟鎹簱
+       */
+      codeGenerateDatabaseList() {
+        codeGenerateDatabaseList().then((res) => {
+          this.databaseNameData = res.data
+        })
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      dataTypeItem() {
+        this.tablePrefixData = this.$options.filters['dictData']('yes_or_no')
+        this.generateTypeData = this.$options.filters['dictData']('code_gen_create_type')
+        this.generateTypeData.splice(0, 1) // 榛樿鍘绘帀浠庡帇缂╁寘涓嬭浇
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        validateFields((errors, values) => {
+          if (!errors) {
+            this.confirmLoading = true
+            
+            this.$refs.kfd.handleSave();
+            values.formDesign = this.form.formDesign;
+            values.formDesignType = 1;
+            values.Databases = this.databases;
+
+            lowCodeEdit(values).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }
+        })
+      },
+      handleCancel() {
+        this.form.resetFields()
+        this.visible = false
+      },
+        /**
+       * 閫夋嫨鏁版嵁搴�
+       */
+      databaseNameSele(item) {
+        this.databaseNameValue = item.databaseName
+        // this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
+        //this.form.getFieldDecorator('busName', {
+        //  initialValue: item.databaseComment
+        //})
+        this.form.setFieldsValue({'tableName':''}); //杩欎釜OK
+        //this.settingDefaultValue()
+      },
+      /**
+       * 閫夋嫨鏁版嵁搴撳垪琛�
+       */
+      tableNameSele(item) {
+        this.tableNameValue = item.tableName
+        this.form.setFieldsValue({
+          className: item.tableComment
+        })
+      },
+      /**
+       * 鑿滃崟鎵�灞炲簲鐢╟hange浜嬩欢
+       */
+      changeApplication(value) {
+        getMenuTree({
+          'application': value
+        }).then((res) => {
+          if (res.success) {
+            this.menuTreeData = [{
+              'id': '-1',
+              'parentId': '0',
+              'title': '椤剁骇',
+              'value': '0',
+              'pid': '0',
+              'children': res.data
+            }]
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      },
+      /**
+       * 閫夋嫨鐢熸垚鏂瑰紡
+       */
+      generateTypeRadio(generateType) {
+        // if (generateType === '1') {
+        //   this.packageNameShow = true
+        // } else {
+        //   this.packageNameShow = false
+        //   this.form.setFieldsValue({ packageName: 'com.cn.xiaonuo' })
+        // }
+      },
+      kFormHandleSave(values) {
+        this.form.formDesign = values
+      },
+      tabsChange(values){
+        if(values == "4"){
+          var Fields = this.$refs.kfd.getValue();
+
+          lowCodeContrast({Controls: JSON.stringify(Fields) , Databases: this.databases}).then((res) => {
+            if (res.success) {
+              for(var i = 0;i < (res.data.del || []).length;i++){
+                this.databases.forEach((item,index) => {
+                  if(item.control_Key === res.data.del[i].control_Key){
+                    this.databases.splice(index,1)
+                  }
+                })
+              }
+              for(var i = 0;i < (res.data.add || []).length;i++){
+                this.databases.push(res.data.add[i]);
+              }
+            } else {
+              this.$message.error('鍔犺浇澶辫触' + res.message)
+            }
+          }).finally((res) => {
+            //this.confirmLoading = false
+            //缁撴潫鍔犺浇
+          })
+        }
+      },
+      addTable_handleOk(){
+        var dataTable = {...this.addTable};
+        this.Tables.push(dataTable);
+        this.databases.forEach((item,index) => {
+          this.$set(item,'className',dataTable.className);
+          this.$set(item,'tableName',dataTable.tableName);
+          this.$set(item,'tableDesc',dataTable.tableDesc);
+        });
+        this.addTableShow = false;
+      },
+      addTable_handleCancel(){
+        this.addTableShow = false;
+      },
+      addTableModal(){
+        this.addTableShow = true;
+        this.addTable.className = '';
+        this.addTable.tableName = '';
+        this.addTable.tableDesc = '';
+      },
+      importKFormDesignData () {
+        this.$refs.kfd.handleSetData(this.kFormDesignData)
+      },
+      tableHandleClose(item){
+        this.Tables = this.Tables.filter(table => table.className !== item.className);
+      },
+      handleChangeTable(a){
+        let selectTable = this.Tables.filter(table => table.tableName === a.tableName)
+
+        if(selectTable.length > 0){
+          let item = { ...selectTable[0] };
+          a.className = item.className;
+          a.tableDesc = item.tableDesc;
+        }
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/index.vue
new file mode 100644
index 0000000..27d8b96
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/index.vue
@@ -0,0 +1,283 @@
+<template>
+  <div>
+    <a-card :bordered="false" v-show="indexOpenShow" :bodyStyle="tstyle">
+      <a-spin :spinning="Loading">
+        <div class="table-page-search-wrapper" v-if="hasPerm('lowCode:page')">
+          <a-form layout="inline">
+            <a-row :gutter="48">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="搴撳悕绉�">
+                  <a-input v-model="queryParam.databaseName" allow-clear placeholder="璇疯緭鍏ュ簱鍚嶇О" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => (queryParam = {})">閲嶇疆</a-button>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
+      </a-spin>
+    </a-card>
+    <a-card :bordered="false" v-show="indexOpenShow">
+      <a-spin :spinning="Loading">
+        <s-table
+          ref="table"
+          :columns="columns"
+          :data="loadData"
+          :alert="true"
+          :rowKey="(record) => record.id"
+          :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+        >
+          <div slot="operator" v-if="hasPerm('lowCode:add')">
+            <a-button type="primary" v-if="hasPerm('lowCode:add')" icon="plus" @click="$refs.addForm.add()"
+              >鏂板</a-button
+            >
+          </div>
+          <span slot="databaseName" slot-scope="text">
+            <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+          </span>
+          <span slot="tableName" slot-scope="text">
+            <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+          </span>
+          <span slot="busName" slot-scope="text">
+            <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+          </span>
+          <span slot="nameSpace" slot-scope="text">
+            <ellipsis :length="25" tooltip>{{ text }}</ellipsis>
+          </span>
+          <!--<span slot="className" slot-scope="text">
+            <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+          </span> -->
+          <!--<span slot="tableComment" slot-scope="text">
+            <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+          </span> -->
+          <!-- <span slot="tablePrefix" slot-scope="text">
+            <ellipsis :length="10" tooltip>{{ 'yes_or_no' | dictType(text) }}</ellipsis>
+          </span> -->
+          <span slot="generateType" slot-scope="text">
+            <ellipsis :length="20" tooltip>{{ 'code_gen_create_type' | dictType(text) }}</ellipsis>
+          </span>
+          <span slot="action" slot-scope="text, record">
+            <span v-if="record.generateType === '1'">
+              <a v-if="hasPerm('lowCode:runDown')" @click="runDownCodeGenerate(record)">寮�濮嬬敓鎴�</a>
+            </span>
+            <span v-else>
+              <a-popconfirm
+                v-if="hasPerm('lowCode:runLocal')"
+                placement="topRight"
+                title="纭畾鐢熸垚浠g爜鍒版湰椤圭洰锛�"
+                @confirm="() => runLocalCodeGenerate(record)"
+              >
+                <a>寮�濮嬬敓鎴�</a>
+              </a-popconfirm>
+            </span>
+            <a-divider
+              type="vertical"
+              v-if="
+                hasPerm('lowCode:config') & hasPerm('lowCode:runLocal') || hasPerm('lowCode:runDown')
+              "
+            />
+            <a-divider type="vertical" v-if="hasPerm('lowCode:config') & hasPerm('lowCode:edit')" />
+            <a v-if="hasPerm('lowCode:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+            <a-divider type="vertical" v-if="hasPerm('lowCode:edit') & hasPerm('lowCode:delete')" />
+            <a-popconfirm
+              v-if="hasPerm('lowCode:delete')"
+              placement="topRight"
+              title="纭鍒犻櫎锛�"
+              @confirm="() => codeGenerateDelete(record)"
+            >
+              <a>鍒犻櫎</a>
+            </a-popconfirm>
+          </span>
+        </s-table>
+        <add-form ref="addForm" @ok="handleOk" v-if="hasPerm('lowCode:add')" />
+        <edit-form ref="editForm" @ok="handleOk" v-if="hasPerm('lowCode:edit')" />
+      </a-spin>
+    </a-card>
+  </div>
+</template>
+<script>
+import { STable, Ellipsis } from '@/components'
+import {
+  lowCodePage,
+  lowCodeRunLocal,
+  lowCodeEdit,
+  lowCodeDelete,
+} from '@/api/modular/gen/lowCodeManage'
+import addForm from './addForm'
+import editForm from './editForm'
+
+export default {
+  components: {
+    STable,
+    Ellipsis,
+    addForm,
+    editForm,
+  },
+  data() {
+    return {
+      // 鏌ヨ鍙傛暟
+      queryParam: {},
+      // 琛ㄥご
+      columns: [
+        {
+          title: '搴撳悕绉�',
+          dataIndex: 'databaseName',
+          scopedSlots: { customRender: 'databaseName' },
+        },
+        {
+          title: '涓氬姟鍚�',
+          dataIndex: 'busName',
+          scopedSlots: { customRender: 'busName' },
+        },
+        {
+          title: '鍛藉悕绌洪棿',
+          dataIndex: 'nameSpace',
+          scopedSlots: { customRender: 'nameSpace' },
+        },
+        // {
+        //   title: '绫诲悕',
+        //   dataIndex: 'className',
+        //   scopedSlots: { customRender: 'className' }
+        // },
+        // {
+        //   title: '鍔熻兘鍚�',
+        //   dataIndex: 'tableComment',
+        //   scopedSlots: { customRender: 'tableComment' }
+        // },
+        {
+          title: '浣滆�呭鍚�',
+          dataIndex: 'authorName',
+        },
+        // {
+        //   title: '琛ㄥ墠缂�绉婚櫎',
+        //   dataIndex: 'tablePrefix',
+        //   scopedSlots: { customRender: 'tablePrefix' }
+        // },
+        {
+          title: '鐢熸垚鏂瑰紡',
+          dataIndex: 'generateType',
+          scopedSlots: { customRender: 'generateType' },
+        },
+      ],
+      tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+      loadData: (parameter) => {
+        return lowCodePage(Object.assign(parameter, this.queryParam)).then((res) => {
+          return res.data
+        })
+      },
+      selectedRowKeys: [],
+      selectedRows: [],
+      Loading: false,
+      jdbcDriverList: [],
+      indexOpenShow: true,
+    }
+  },
+  created() {
+    if (this.hasPerm('lowCode:edit') || this.hasPerm('lowCode:delete')) {
+      this.columns.push({
+        title: '鎿嶄綔',
+        width: '230px',
+        dataIndex: 'action',
+        scopedSlots: { customRender: 'action' },
+      })
+    }
+  },
+  methods: {
+    /**
+     * 寮�濮嬬敓鎴愪唬鐮侊紙鐢熸垚鍘嬬缉鍖咃級
+     */
+    runDownCodeGenerate(record) {
+      console.log(record.id)
+      // this.Loading = true
+      // codeGenerateRunDown({ id: record.id })
+      //   .then((res) => {
+      //     this.Loading = false
+      //     this.downloadfile(res)
+      //     // eslint-disable-next-line handle-callback-err
+      //   })
+      //   .catch((err) => {
+      //     this.Loading = false
+      //     this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒')
+      //   })
+    },
+    downloadfile(res) {
+      var blob = new Blob([res.data], { type: 'application/octet-stream;charset=UTF-8' })
+      var contentDisposition = res.headers['content-disposition']
+      var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
+      var result = patt.exec(contentDisposition)
+      var filename = result[1]
+      var downloadElement = document.createElement('a')
+      var href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺�
+      var reg = /^["](.*)["]$/g
+      downloadElement.style.display = 'none'
+      downloadElement.href = href
+      downloadElement.download = decodeURI(filename.replace(reg, '$1')) // 涓嬭浇鍚庢枃浠跺悕
+      document.body.appendChild(downloadElement)
+      downloadElement.click() // 鐐瑰嚮涓嬭浇
+      document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌
+      window.URL.revokeObjectURL(href)
+    },
+    /**
+     * 寮�濮嬬敓鎴愪唬鐮侊紙鏈湴椤圭洰锛�
+     */
+    runLocalCodeGenerate(record) {
+      lowCodeRunLocal(record.id).then((res) => {
+        if (res.success) {
+          this.$message.success('鐢熸垚鎴愬姛')
+          this.$refs.table.refresh()
+        } else {
+          this.$message.error('鐢熸垚澶辫触锛�' + res.message)
+        }
+      })
+    },
+    /**
+     * 鍒犻櫎
+     */
+    codeGenerateDelete(record) {
+      this.Loading = true
+      lowCodeDelete([{ id: record.id }])
+        .then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+          }
+        })
+        .catch((err) => {
+          this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+        })
+        .finally((res) => {
+          this.Loading = false
+        })
+    },
+    /**
+     * 璇︾粏閰嶇疆鐣岄潰杩斿洖
+     */
+    handleResetOpen() {
+      this.indexOpenShow = true
+      this.$refs.table.refresh()
+    },
+    /**
+     * 鍏朵粬鐣岄潰杩斿洖
+     */
+    handleOk() {
+      this.$refs.table.refresh()
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    },
+  },
+}
+</script>
+<style lang="less">
+.table-operator {
+  margin-bottom: 18px;
+}
+button {
+  margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/editForm.vue
new file mode 100644
index 0000000..e27e5e1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/editForm.vue
@@ -0,0 +1,105 @@
+锘�<template>
+    <!-- 202311 -->
+  <a-modal
+    :title="title"
+    width="600px"
+    :visible="visible"
+    dialogClass="zero-modal"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <div class="bind-entrance-edit-modal-content">
+        <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-form-item label="鐗╂枡缂栫爜">
+            <a-input placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" allow-clear v-decorator="['materialNo',{rules:[{required:true,message:'鐗╂枡缂栫爜涓嶅彲涓虹┖锛�'}]}]" />
+          </a-form-item>
+          <a-form-item label="MaterialName">
+            <a-input placeholder="璇疯緭鍏�" allow-clear v-decorator="['MaterialName',{rules:[{required:true,message:'涓嶅彲涓虹┖锛�'}]}]" />
+          </a-form-item>
+          <a-form-item label="MaterialDensity">
+            <a-input placeholder="璇疯緭鍏aterialDensity" allow-clear v-decorator="['MaterialDensity',{rules:[{required:true,message:'MaterialDensity涓嶅彲涓虹┖锛�'}]}]" />
+          </a-form-item>
+          <a-form-item label="MaterialBatch">
+            <a-input placeholder="璇疯緭鍏ユ壒娆�" allow-clear v-decorator="['MaterialBatch',{rules:[{required:true,message:'涓嶅彲涓虹┖锛�'}]}]" />
+          </a-form-item>
+          
+          <!-- <a-row :gutter="16">
+            <a-col :span="8">
+              <a-form-item label="闀�">
+                <a-input-number placeholder="璇疯緭鍏ラ暱" allow-clear style="width: 100%" v-decorator="['long',{rules:[{required:true,message:'闀夸笉鍙负绌猴紒'},{ validator: numberValidate }]}]" :min="0" />
+              </a-form-item>
+            </a-col>
+            <a-col :span="8">
+              <a-form-item label="瀹�">
+                <a-input-number placeholder="璇疯緭鍏ュ" allow-clear style="width: 100%" v-decorator="['wide',{rules:[{required:true,message:'瀹戒笉鍙负绌猴紒'},{ validator: numberValidate }]}]" :min="0" />
+              </a-form-item>
+            </a-col>
+            <a-col :span="8">
+              <a-form-item label="楂�">
+                <a-input-number placeholder="璇疯緭鍏ラ珮" allow-clear style="width: 100%" v-decorator="['high',{rules:[{required:true,message:'楂樹笉鍙负绌猴紒'},{ validator: numberValidate }]}]" :min="0" />
+              </a-form-item>
+            </a-col>
+          </a-row> -->
+          
+        </a-form>
+      </div>
+    </a-spin>
+    
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="submit" type="primary" :loading="confirmLoading" @click="handleSubmit">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+ 
+<script>
+  export default {
+    emits:['callback'],
+    data () {
+      return {
+        labelCol: {
+          span:24
+        },
+        wrapperCol: {
+          span:24
+        },
+        visible: false,
+        confirmLoading: false,
+        title:'鏂板涓绘澘鐗╂枡',
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      init () {
+        let _initForm = {materialNo:''}
+        this.visible = true
+        this.$nextTick(()=>{
+          this.form.setFieldsValue(_initForm)
+        })
+      },
+      numberValidate(rule, value, callback){
+        if (value<=0){
+          callback('蹇呴』澶т簬0');
+        } else {
+          callback();
+        }
+      },
+      handleSubmit () {
+        this.form.validateFields((errors, values) => {
+          if (!errors) {
+            this.handleCancel()
+            this.$emit('callback',values)
+          }
+        })
+      },
+      handleCancel () {
+        this.visible = false
+      }
+    }
+  }
+</script>
+<style lang="less" scoped>
+.bind-entrance-edit-modal-content{
+  padding: 20px 16px 0 16px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/index.vue
new file mode 100644
index 0000000..d075c39
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/index.vue
@@ -0,0 +1,514 @@
+<template>
+  <!-- 202311 -->
+  <a-spin :spinning="loading">
+    <div class="wms-in-bound-page">
+      <!-- <div class="in-bound-page-block block-three">
+        <div style="width:580px;margin:0 auto">
+          鍏ュ簱绫诲瀷锛�
+          <a-radio-group v-model="receiptType" @change="onChange">
+            <a-radio v-for="(item, index) in taskModelData" :value="item.code" :key="'destination-sel-' + index">
+              {{ item.name }}
+            </a-radio>
+          </a-radio-group>
+        </div>
+      </div> -->
+
+      <div class="in-bound-page-block block-one">
+        <search-box label="鎵樼洏鍙�" v-model="containterTph" :msg-type="msgType.containter" :msg="msg.containter"
+          :label-width="labelWidth" placeholder="璇疯緭鍏�..." @search="onContainterSearch" @reset="onContainterReset" />
+      </div>
+
+
+      <div class="in-bound-page-block block-one">
+        <search-box label="鐗╂枡鍙�" v-model="materialNoSaoma" :msg-type="msgType.materialNoSaoma" :msg="msg.materialNoSaoma"
+          :label-width="labelWidth" placeholder="璇疯緭鍏�..." @search="onMaterialSearch" @reset="onmaterialReset" />
+      </div>
+
+
+
+      <div class="in-bound-page-block block-two">
+        <div class="table-top-box">
+          <!-- v-if="receiptType == 2" -->
+          <!-- <a-button type="primary" @click="onAddMaterial" >娣诲姞鐗╂枡</a-button> -->
+        </div>
+        <!-- v-if="receiptType == 2" -->
+        <div class="table-box">
+          <a-table :columns="columns" :data-source="list" :row-key="tableKey" :pagination="false">
+            <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+            <template slot="specSlots" slot-scope="text, record">
+              {{ record.long }}*{{ record.wide }}*{{ record.high }}
+            </template>
+            <template slot="action" slot-scope="text, record, index">
+              <a-button type="danger" @click.stop="onDel(record, index)">鍒� 闄�</a-button>
+            </template>
+          </a-table>
+        </div>
+      </div>
+      <div class="in-bound-page-block block-three">
+        <div class="block-three-input-box">
+          <a-row :gutter="32">
+            <a-col :md="12" :sm="24">
+              <input-layout label="鍏ュ簱鍙�" :label-width="labelWidth">
+                <a-select v-model="sourcePlace" placeholder="璇烽�夋嫨..." style="width:100%;" allowClear>
+                  <a-select-option v-for="(item, index) in selectList.entrances" :value="item"
+                    :key="'entrance-sel-' + index">{{ item }}</a-select-option>
+                </a-select>
+              </input-layout>
+            </a-col>
+            <a-col :md="12" :sm="24">
+              <input-layout label="搴撲綅鍙�" :label-width="labelWidth">
+                <a-input placeholder="璇疯緭鍏�..." v-model.trim="placecode" />
+              </input-layout>
+            </a-col>
+          </a-row>
+        </div>
+      </div>
+      <div class="bottom-btns-view">
+        <!-- <a-button type="primary" :disabled="bindBtnDisabled" @click="onBind">缁勭洏</a-button> -->
+        <!-- <a-button type="primary" @click="onAutoIntrance">鑷姩鍏ュ簱</a-button> -->
+
+        <a-button type="primary" @click="onRk(1)">缁勭洏</a-button>
+        <a-button type="primary"  :disabled="sourcePlace==''" @click="onRk(2)">鑷姩鍏ュ簱</a-button>
+        <a-button type="primary" :disabled="placecode==''" @click="onRk(3)">浜哄伐鍏ュ簱</a-button>
+        <a-button @click="onReset">閲� 缃�</a-button>
+      </div>
+
+      <edit-form ref="form" @callback="handleOk" />
+    </div>
+  </a-spin>
+</template>
+<script>
+import SearchBox from './searchBox.vue'
+import InputLayout from './inputLayout.vue'
+import editForm from './editForm.vue'
+import StationSelect from '@/components/StationSelect.vue'
+import {
+  BindEntranceGetContainer,
+  BindAction,
+  BindEntranceAutoWare,
+  AutoWare, // 1109
+  automaticWarehousing, // 1109
+  manualWarehousing, // 1109
+  MaterialRukuPage, // 1109
+} from '@/api/modular/main/BindEntranceManage'
+
+export default {
+  name: 'wmsBindEntrancePage',
+  components: { SearchBox, InputLayout, editForm, StationSelect },
+  data() {
+    return {
+      loading: false,
+      labelWidth: '75px',
+      containter: null,
+      receiptType: "", //1 绌烘墭 2 鐗╂枡
+      msg: {
+        containter: '',
+        materialNoSaoma:''
+      },
+      msgType: {
+        containter: '',
+        materialNoSaoma:''
+      },
+      containterTph: '',
+      sufFrom: {
+        stationArr: []
+      },
+      selectList: {
+        entrances: ['鍏ュ簱鍙�'],
+        destinations: []
+      },
+      tableKey: 'materialNo',
+      list: [
+        // {
+        //   "materialName": "88888888888888888888",
+        //   "materialNo": 1111111,
+        //   "materialId": 0,
+        //   "materialBatch": "3333333",
+        //   "materialType": 1,
+        //   "inspectionMethod": 1,
+        //   "materialSpec": "444",
+        //   "materialDensity": "5",
+        //   "materialUnit": "6",
+        //   "lesWorkshopSection": 1
+        // }
+      ],
+      columns: [
+        {
+          dataIndex: 'index',
+          title: '搴忓彿',
+          fixed: 'left',
+          width: '60',
+          scopedSlots: { customRender: 'index' }
+        },
+        {
+          dataIndex: 'materialNo',
+          title: '鐗╂枡缂栧彿'
+        },
+        {
+          dataIndex: 'materialName',
+          title: '鐗╂枡鍚嶇О'
+        },
+        {
+          dataIndex: 'materialBatch',
+          title: '鐗╂枡鎵规'
+        },
+        // {
+        //   dataIndex:'MaterialDensity',
+        //   title:'MaterialDensity'
+        // },
+   
+        // {
+        //   dataIndex:'materialspec',
+        //   title:'灏哄',
+        //   scopedSlots: { customRender: 'specSlots' }
+        // },
+        {
+          dataIndex: 'action',
+          title: '鎿嶄綔',
+          fixed: 'right',
+          width: '70',
+          scopedSlots: { customRender: 'action' }
+        }
+      ],
+      taskModelData: [
+
+      ],
+      containter: {
+        "containerCode": ""
+      },
+      materialNoSaoma:"",
+      sourcePlace:"",
+      bindBtnDisabled:true,
+      placecode:""
+    }
+  },
+  computed: {
+    // bindBtnDisabled() {
+    //   let res = true;
+    //   if (this.containter && (this.containter.containerStatus === 1 || this.containter.containerStatus === 2) && this.list.length > 0) {
+    //     res = false;
+    //   }
+    //   return res;
+    // },
+    // autoIntranceBtnDisabled() {
+    //   let res = true;
+    //   if (this.containter && (this.containter.containerStatus === 1 || this.containter.containerStatus === 2) && this.list.length > 0 && this.sufFrom.stationArr.length === 2) {
+    //     res = false;
+    //   }
+    //   return res;
+    // }
+  },
+  created() {
+    const taskModelOption = this.$options
+    this.taskModelData = taskModelOption.filters['dictData']('ruku_type')
+    // this.$nextTick(() => {
+    //   // this.columns = this.columnone;
+    // })
+  },
+  methods: {
+    onContainterReset() {
+      this.resetContainter()
+    },
+
+  
+    onContainterSearch() {
+      if (!this.containterTph) {
+        this.msgType.containter = 'error'
+        this.msg.containter = '璇疯緭鍏ユ墭鐩樺彿锛�';
+        return false;
+      }
+
+      this.msg.containter = ''
+      this.loading = true;
+      this.getContainterInfo((f) => {
+        this.loading = false;
+      })
+
+    },
+
+    // 鎵墿鏂欏彿
+    onMaterialSearch() {
+      if (this.materialNoSaoma=='') {
+        this.$message.warning(`璇疯緭鍏ョ墿鏂欏彿锛乣);
+        return
+      }
+
+     // this.msg.materialNoSaoma = ''
+      this.loading = true;
+      let params = {
+        MaterialNo:this.materialNoSaoma
+      }
+      MaterialRukuPage(params).then((res) => {
+        this.loading = false;
+        if(res.data){
+          let arr1 = this.list.filter((v)=> v.materialNo == res.data.materialNo );
+          if(arr1.length>0){
+            this.$message.warning(`姝ょ墿鏂欏凡缁忓湪鍒楄〃涓瓨鍦紒`);
+            return
+          }
+          this.list.unshift(res.data)
+          this.msgType.materialNoSaoma = ''
+          this.msg.materialNoSaoma = '';
+        }else{
+            this.msgType.materialNoSaoma = 'error'
+            this.msg.materialNoSaoma = '鐗╂枡涓嶅瓨鍦紒';
+          // this.$message.warning(`鐗╂枡涓嶅瓨鍦紒`);
+        }
+      }).catch(err => {
+        //this.$message.error(err);
+      })
+
+    },
+    onmaterialReset() {
+      this.materialNoSaoma = ""
+    },
+
+    resetContainter() {
+      this.clearContainter()
+      this.clearBackContainer()
+    },
+    // 娓呯┖鎵樼洏鍙�
+    clearContainter() {
+      this.containterTph = ''
+      this.msg.container = ''
+      this.msgType.containter = ''
+      
+    },
+    clearBackContainer() {
+      this.containter = null
+    },
+    resetSufFrom() {
+      this.sufFrom.stationArr = []
+    },
+    getContainterInfo(callback) {
+      let params = { Containercode: this.containterTph }
+      const __setErrMessage = function (__msg) {
+        if (!__msg) {
+          __msg = '缃戠粶閿欒锛岃绋嶅悗鍐嶅皾璇曪紒'
+        }
+        this.msgType.containter = 'error'
+        this.msg.containter = "鎵樼洏涓嶅瓨鍦紒";
+      }.bind(this)
+      BindEntranceGetContainer(params).then((d) => {
+        if (d.data) {
+          if (d.data.containerCode) {
+            this.containter = d.data.wmsContainer
+            let _arr = d.data.wmsMaterials || []
+            if (_arr.length > 0) {
+              this.list = _arr
+            }
+            this.msgType.containter = 'info'
+            this.msg.containter = `灏哄锛�${this.containter.specLength}*${this.containter.specWidth}`;
+            this.containterTph = d.data.containerCode
+            callback && callback(true)
+          } else {
+            this.clearBackContainer()
+            __setErrMessage(d.message)
+            callback && callback(false)
+          }
+        } else {
+          this.clearBackContainer()
+          __setErrMessage(d.message)
+          callback && callback(false)
+        }
+      }).catch((err) => {
+        this.clearBackContainer()
+        __setErrMessage()
+        callback && callback(false)
+      })
+
+    },
+    onAddMaterial() {
+      this.$refs.form.init()
+    },
+    handleOk(obj) {
+      this.addToList(obj)
+    },
+    addToList(obj) {
+      let f = false, _no = "";
+      for (let i = 0; i < this.list.length; i++) {
+        if (this.list[i][this.tableKey] === obj[this.tableKey]) {
+          f = true
+          _no = this.list[i][this.tableKey]
+          break;
+        }
+      }
+      if (!f) {
+        this.list.unshift(obj)
+      } else {
+        this.$message.warning(`鐗╂枡${_no}宸插瓨鍦紒`);
+      }
+    },
+    onDel(obj, index) {
+      this.list.splice(index, 1)
+    },
+    onAutoIntrance() {
+      this.loading = true;
+      this.dealAutoIntrance((f) => {
+        this.loading = false;
+        if (f) {
+          this.$message.success('鍏ュ簱鎴愬姛锛�');
+          this.resetContainter()
+          this.resetSufFrom()
+          this.list = [];
+        }
+      })
+    },
+    onBind() {
+      this.loading = true;
+      this.dealBind((f) => {
+        if (f) {
+
+          this.getContainterInfo((f1) => {
+            this.loading = false;
+            this.$message.success('缁勭洏鎴愬姛锛�');
+          })
+        } else {
+          this.loading = false;
+        }
+      })
+    },
+    onReset() {
+      this.receiptType = ''
+      this.sourcePlace = ''
+      this.placecode = ''
+      this.containterTph = ''
+      this.msg.containter = ''
+      this.materialNoSaoma =''
+      this.resetContainter()
+      this.resetSufFrom()
+      this.list = [];
+    },
+    dealBind(callback) {
+      let params = {
+        containerCode: this.containter.containerCode,
+        wmsMaterials: this.list
+      }
+      BindAction(params).then(() => {
+        callback && callback(true)
+      }).catch(() => {
+        callback && callback(false)
+      })
+    },
+    dealAutoIntrance(callback) {
+      let params = {
+        containerCode: this.containter.containerCode,
+        wmsMaterials: this.list
+        // stationCode:this.sufFrom.stationArr[1]
+      }
+      BindEntranceAutoWare(params).then(() => {
+        callback && callback(true)
+      }).catch(() => {
+        callback && callback(false)
+      })
+    },
+    onChange() {
+
+    },
+    //鍏ュ簱
+    onRk(param) {
+      // if (this.receiptType == '') {
+      //   this.$message.warning(`璇烽�夋嫨鍏ュ簱绫诲瀷锛乣);
+      //   return;
+      // }
+      
+      if (this.containterTph == '' || this.containterTph== null || this.containterTph == undefined) {
+        this.$message.warning(`璇疯緭鍏ユ墭鐩樺彿锛乣);
+        return;
+      }
+
+
+
+      let params = {
+        containerCode: this.containterTph || '',
+        source: 1, //this.receiptType
+        placeCode: this.placecode, //搴撲綅鍙�
+        sourcePlace: this.sourcePlace, //鍏ュ簱鍙�
+        wmsMaterials: this.list
+      }
+
+      // 缁勭洏
+      if (param == 1) {
+        AutoWare(params).then(() => {
+          this.loading = false;
+          this.$message.success('缁勭洏鎴愬姛锛�');
+          this.onReset()
+        }).catch(err => {
+         // this.$message.error(err);
+          })
+      }
+
+      // 鑷姩鍏ュ簱
+      if (param == 2) {
+        automaticWarehousing(params).then(() => {
+          this.loading = false;
+          this.$message.success('鑷姩鍏ュ簱鎴愬姛锛�');
+          this.onReset()
+        }).catch(err => {
+        //  this.$message.error(err);
+          })
+      }
+
+      // 浜哄伐鍏ュ簱
+      if (param == 3) {
+        manualWarehousing(params).then(() => {
+          this.loading = false;
+          this.$message.success('浜哄伐鍏ュ簱鎴愬姛锛�');
+          this.onReset()
+        }).catch(err => {
+          //this.$message.error(err);
+        })
+      }
+    }
+  }
+}
+</script>
+<style lang="less" scoped>
+.wms-in-bound-page {
+  border-radius: 6px 6px 0 0;
+  background-color: #fff;
+}
+
+.in-bound-page-block {
+  border-bottom: 2px solid #dcdcdc;
+  overflow: auto;
+  padding-top: 16px;
+  padding-bottom: 16px;
+
+  &.block-two {
+    padding-top: 12px;
+
+    .table-box {
+      padding-top: 20px;
+      min-height: 241px;
+    }
+  }
+
+  &.block-three {
+    overflow: hidden;
+    padding-left: 8px;
+    padding-right: 8px;
+  }
+}
+
+.bottom-btns-view {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  flex-wrap: wrap;
+  padding: 16px 8px;
+
+  .ant-btn+.ant-btn {
+    margin-left: 20px;
+  }
+}
+
+.block-three-input-box {
+  margin: 0 auto;
+  width: 600px;
+}
+
+.table-top-box {
+  padding-left: 20px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/inputLayout.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/inputLayout.vue
new file mode 100644
index 0000000..37f3f0f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/inputLayout.vue
@@ -0,0 +1,50 @@
+<template>
+  <div class="wms-in-bound-input-layout">
+    <div class="label-view" v-if="label" :style="{width:labelWidth?labelWidth:'auto'}">{{label}}锛�</div>
+    <div class="input-view">
+      <slot></slot>
+      <div v-if="msg">
+        <a-alert :message="msg" type="error" show-icon />
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name:'wmsInBoundInputLayout',
+  props:{
+    label:{
+      type:String,
+      default:''
+    },
+    labelWidth:{
+      type:String,
+      default:''
+    },
+    msg:{
+      type:String,
+      default:''
+    }
+  },
+  mounted(){
+    console.log(this.$scopedSlots.err)
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-in-bound-input-layout{
+  width:100%;
+  display:flex;
+  margin:0 auto;
+  .label-view{
+    flex-shrink: 0;
+    padding-top: 3.5px;
+    text-align: right;
+  }
+  .input-view{
+    flex-grow:1;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/searchBox.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/searchBox.vue
new file mode 100644
index 0000000..91a37f9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/searchBox.vue
@@ -0,0 +1,109 @@
+<template>
+  <div class="wms-in-bound-search-box">
+    <div class="label-view" v-if="label" :style="{width:labelWidth?labelWidth:'auto'}">{{label}}锛�</div>
+    <div class="input-view">
+      <a-input :placeholder="placeholder" v-model.trim="innerValue" />
+      <div v-if="msg && innerValue" class="msg-row">
+        <a-alert v-if="msgType==='error'" :message="msg" type="error" show-icon />
+        <a-alert v-else :message="msg" type="info" show-icon />
+      </div>
+    </div>
+    <div class="btns-view">
+      <a-button type="primary" @click="onSearch" :disabled="btnDisabled">鎼� 绱�</a-button>
+      <a-button @click="onReset" :disabled="btnDisabled">閲� 缃�</a-button>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name:'wmsInBoundSearchBox',
+  emits:['input','search','reset'],
+  props:{
+    label:{
+      type:String,
+      default:''
+    },
+    labelWidth:{
+      type:String,
+      default:''
+    },
+    placeholder:{
+      type:String,
+      default:''
+    },
+    msgType:{
+      type:String,
+      default:''
+    },
+    msg:{
+      type:String,
+      default:''
+    },
+    value:{
+      type:[String,null],
+      default:''
+    },
+    btnDisabled:{
+      type:Boolean,
+      default:false
+    }
+  },
+  data(){
+    return {
+      innerValue:''
+    }
+  },
+  created(){
+    this.innerValue = this.value
+  },
+  watch:{
+    innerValue(newVal,oldVal){
+      if (newVal!==this.value) {
+        this.$emit('input',newVal)
+      }
+    },
+    value(newVal,oldVal){
+      if (newVal!==this.innerValue) {
+        this.innerValue = newVal;
+      }
+    }
+  },
+  methods:{
+    onSearch(){
+      this.$emit('search',this.innerValue)
+    },
+    onReset(){
+      this.innerValue = ''
+      this.$emit('reset')
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-in-bound-search-box{
+  width:600px;
+  display:flex;
+  margin:0 auto;
+  .label-view,.btns-view{
+    flex-shrink: 0;
+  }
+  .label-view{
+    padding-top: 3.5px;
+    text-align: right;
+  }
+  .btns-view{
+    padding-left: 16px;
+    .ant-btn + .ant-btn {
+      margin-left:10px;
+    }
+  }
+  .input-view{
+    flex-grow:1;
+    .msg-row{
+      padding-top:4px;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/index.vue
new file mode 100644
index 0000000..fd60b36
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/index.vue
@@ -0,0 +1,549 @@
+<template>
+  <a-spin :spinning="loading">
+    <div class="wms-in-bound-page">
+      <div class="in-bound-page-block block-one">
+        <search-box 
+          label="鎵樼洏鍙�" 
+          v-model="prevFrom.containter" 
+          :msg-type="msgType.containter"
+          :msg="msg.containter"
+          :label-width="labelWidth" 
+          placeholder="璇疯緭鍏�..."
+          @search="onContainterSearch" 
+          @reset="onContainterReset"
+        />
+      </div>
+      <div class="in-bound-page-block block-two">
+        <div class="radios-box">
+          <div class="label" :style="{width:labelWidth}">宸ユ锛�</div>
+          <div class="content">
+            <div class="radio-group">
+              <a-radio-group v-model="prevFrom.workType">
+                <a-radio v-for="(item,index) in selectList.workTypes" :value="item.code" :key="'work-type-radio-'+index">{{item.name}}</a-radio>
+              </a-radio-group>
+            </div>
+            <div v-if="msg.workType" class="msg-row">
+              <a-alert :message="msg.workType" type="error" show-icon />
+            </div>
+          </div>
+        </div>
+        <search-box 
+          label="鐗╂枡鐮�" 
+          v-model="prevFrom.material" 
+          :msg-type="msgType.material"
+          :msg="msg.material"
+          :label-width="labelWidth" 
+          placeholder="璇疯緭鍏�..." 
+          :btn-disabled="materialDisabled"
+          @search="onMaterialSearch"
+          @reset="onMaterialReset"
+        />
+        <div class="table-box">
+          <a-table :columns="columns" :data-source="list" :row-key="tableKey" :pagination="false">
+            <template slot="index" slot-scope="text, record, index">{{index+1}}</template>
+            <template slot="input" slot-scope="text, record">
+              <a-input-number v-model="record.bindquantity" :min="0" />
+            </template>
+            <template slot="action" slot-scope="text, record, index">
+              <a-button type="danger" @click.stop="onDel(record,index)" :disabled="materialDisabled">鍒� 闄�</a-button>
+            </template>
+          </a-table>
+        </div>
+      </div>
+      <div class="in-bound-page-block block-three">
+        <a-row :gutter="16">
+          <a-col :md="8" :sm="24">
+            <input-layout label="璧峰浣嶇疆" :label-width="labelWidth">
+              <a-input placeholder="璇疯緭鍏�..." v-model.trim="sufFrom.entrance" allowClear />
+            </input-layout>
+          </a-col>
+          <a-col :md="8" :sm="24">
+            <input-layout label="鐩爣浠撳簱" :label-width="labelWidth">
+              <a-select v-model="sufFrom.areaId" placeholder="璇烽�夋嫨..." style="width:100%;" allowClear>
+                <a-select-option v-for="(item,index) in selectList.areas" :value="item.areaId" :key="'area-sel-'+index">{{item.areaName}}</a-select-option>
+              </a-select>
+            </input-layout>
+          </a-col>
+          <a-col :md="8" :sm="24">
+            <input-layout label="鐩爣搴撲綅鍙�/宸ヤ綅" :label-width="labelWidth2">
+              <a-input placeholder="璇疯緭鍏�..." v-model.trim="sufFrom.placecode" allowClear />
+            </input-layout>
+          </a-col>
+        </a-row>
+      </div>
+      <div class="bottom-btns-view">
+        <a-button type="primary" :disabled="bindBtnDisabled" @click="onBind">缁勭洏</a-button>
+        <a-button type="danger" :disabled="manualIntranceBtnDisabled" @click="onManualIntrance">浜哄伐鍏ュ簱</a-button>
+        <a-button type="primary" :disabled="autoIntranceBtnDisabled" @click="onAutoIntrance">鑷姩鍏ュ簱</a-button>
+        <a-button type="danger" :disabled="moveBtnDisabled" @click="onTransfer">绉诲簱</a-button>
+        <a-button @click="onReset">閲� 缃�</a-button>
+      </div>
+    </div>
+  </a-spin>
+</template>
+<script>
+import SearchBox from './searchBox.vue'
+import InputLayout from './inputLayout.vue'
+import { 
+  BindEntranceGetContainer, 
+  BindEntranceGetMaterial, 
+  BindAction, 
+  BindEntranceGetSelects, 
+  BindEntranceManualWare, 
+  BindEntranceAutoWare,
+  BindEntranceTransfer
+} from '@/api/modular/main/BindEntranceManage'
+export default {
+  name:'wmsBindEntrancePage',
+  components:{SearchBox,InputLayout},
+  data(){
+    return {
+      loading:false,
+      labelWidth:'75px',
+      labelWidth2:'120px',
+      containter:null,
+      materialDisabled:false,
+      msg:{
+        containter:'',
+        material:'',
+        workType:''
+      },
+      msgType:{
+        containter:'info',
+        material:'error'
+      },
+      prevFrom:{
+        containter:'',
+        material:'',
+        workType:''
+      },
+      sufFrom:{
+        entrance:'',
+        areaId:undefined,
+        placecode:''
+      },
+      selectList:{
+        workTypes:[],
+        areas:[]
+      },
+      tableKey:'tableKey',
+      list:[],
+      columns:[
+        {
+          dataIndex:'index',
+          title:'搴忓彿',
+          fixed:'left',
+          width:'60',
+          scopedSlots: { customRender: 'index' }
+        },
+        {
+          dataIndex:'materialno',
+          title:'鐗╂枡缂栧彿'
+        },
+        {
+          dataIndex:'materialname',
+          title:'鐗╂枡鍚嶇О'
+        },
+        {
+          dataIndex:'materialspec',
+          title:'灏哄'
+        },
+        {
+          dataIndex:'materialDensity',
+          title:'瀵嗗害'
+        },
+        {
+          dataIndex:'materialbatch',
+          title:'鎵规'
+        },
+        {
+          dataIndex:'bindquantity',
+          title:'鏁伴噺',
+          scopedSlots: { customRender: 'input' }
+        },
+        {
+          dataIndex:'action',
+          title:'鎿嶄綔',
+          fixed:'right',
+          width:'70',
+          scopedSlots: { customRender: 'action' }
+        }
+      ]
+    }
+  },
+  computed:{
+    bindBtnDisabled(){
+      let res = true;
+      if (this.containter && this.containter.containerstatus!==3 && this.list.length>0) {
+        res = false;
+      }
+      return res;
+    },
+    manualIntranceBtnDisabled(){
+      let res = true;
+      //鍙湁鎵樼洏琛ㄧず绌烘墭鍏ュ簱 锛� 鍙湁鐗╂枡琛ㄧず鏃犳墭鐗╂枡鍏ュ簱
+      if ((this.containter || this.list.length>0) && (this.sufFrom.placecode || this.sufFrom.areaId)) {
+        res = false;
+      }
+      return res;
+    },
+    autoIntranceBtnDisabled(){
+      let res = true;
+      //鍙湁鎵樼洏琛ㄧず绌烘墭鍏ュ簱 锛� 鍙湁鐗╂枡琛ㄧず鏃犳墭鐗╂枡鍏ュ簱
+      if ((this.containter || this.list.length>0) && this.sufFrom.entrance && (this.sufFrom.placecode || this.sufFrom.areaId)) {
+        res = false;
+      }
+      return res;
+    },
+    moveBtnDisabled(){
+      let res = true;
+      if (this.sufFrom.placecode && this.materialDisabled) {
+        res = false;
+      }
+      return res;
+    }
+  },
+  methods:{
+    getSelectList(){
+      this.loading = true;
+      BindEntranceGetSelects().then((d)=>{
+        this.selectList.areas = d.data
+        this.loading = false;
+      }).catch(()=>{
+        this.loading = false;
+      })
+    },
+    onContainterReset(){
+      this.resetContainter()
+    },
+    onContainterSearch(){
+      if (!this.prevFrom.containter) {
+        this.msgType.containter = 'error'
+        this.msg.containter = '璇疯緭鍏ユ墭鐩樺彿锛�';
+        return false;
+      }
+      
+      this.msg.containter = ''
+      this.loading = true;
+      this.getContainterInfo((f)=>{
+        this.loading = false;
+      })
+    },
+    onMaterialReset(){
+      this.resetMaterial()
+    },
+    resetContainter(){
+      this.msg.containter = '';
+      this.prevFrom.containter = ''
+      this.containter = null;
+      this.materialDisabled = false;
+    },
+    resetMaterial(){
+      this.msg.material = '';
+      this.prevFrom.material = ''
+    },
+    resetSufFrom(){
+      this.sufFrom.entrance = ''
+      this.sufFrom.placecode = ''
+    },
+    onMaterialSearch(){
+      if (!this.prevFrom.workType) {
+        this.msg.workType = '璇烽�夋嫨宸ユ锛�';
+        return false;
+      }
+      this.msg.workType = ''
+      if (!this.prevFrom.material) {
+        this.msg.material = '璇疯緭鍏ョ墿鏂欑紪鍙凤紒';
+        return false;
+      }
+      this.msg.material = ''
+      this.loading = true;
+      this.getMaterialInfo((f)=>{
+        this.loading = false;
+      })
+    },
+    getContainterInfo(callback){
+      let params = {Containercode:this.prevFrom.containter}
+      BindEntranceGetContainer(params).then((d)=>{
+        if (d.data) {
+          let _temp1 = this.$options.filters['dictType']('container_type',d.data.wmsContainer.containertype)
+          let _temp2 = this.$options.filters['dictType']('container_status',d.data.wmsContainer.containerstatus)
+          this.msgType.containter = 'info'
+          this.msg.containter = `鏉愯川锛�${_temp1}锛岀姸鎬侊細${_temp2}`;
+          this.containter = d.data.wmsContainer
+          this.list = (d.data.wmsMaterials || []).map((mapItem)=>{
+            return this.createTableKey(mapItem)
+          })
+          if (d.data.wmsContainer.containerstatus===3) {
+            this.materialDisabled = true;
+          }
+           callback && callback(true)
+        } else {
+          this.msgType.containter = 'error'
+          this.msg.containter = d.message || '鏌ユ棤淇℃伅锛�';
+          this.containter = null;
+          this.list = []
+          callback && callback(false)
+        }
+      }).catch((err)=>{
+        this.containter = null;
+        this.list = []
+        callback && callback(false)
+      })
+    },
+    getMaterialInfo(callback){
+      let params = {Materialno:this.prevFrom.material,LesWorkshopSection:this.prevFrom.workType}
+      BindEntranceGetMaterial(params).then((d)=>{
+        if (d.data) {
+          let arr = (d.data || []).map((mapItem)=>{
+            return this.createTableKey(mapItem)
+          })
+          this.checkInList(arr)
+          callback && callback(true)
+        } else {
+          this.msg.material = d.message || '鏌ユ棤淇℃伅锛�';
+          callback && callback(false)
+        }
+      }).catch((err)=>{
+        callback && callback(false)
+      })
+    },
+    /* 鍒涘缓鍞竴閿紝鏍规嵁涓氬姟閫昏緫锛堝垽鏂悓绉嶇墿鏂欑殑瑙勫垯锛夋敼鍔� */
+    createTableKey(obj){
+      obj[this.tableKey] = obj.materialno
+      return obj
+    },
+    checkInList(arr){
+      let newArr = [], reCount = 0;
+      arr.forEach((item)=>{
+        let f = false;
+        for (let i=0;i<this.list.length;i++) {
+          if (this.list[i][this.tableKey] === item[this.tableKey]) {
+            reCount++;
+            f = true
+            break;
+          }
+        }
+        if (!f) {
+          newArr.push(item)
+        }
+      })
+      this.list = [].concat(this.list,newArr)
+      if (reCount) {
+        this.$message.warning(`${reCount}绗旀暟鎹凡瀛樺湪锛屾湭娣诲姞锛乣);
+      }
+    },
+    getContainterMaterials(callback){
+      let params = {ContainerName:this.prevFrom.containter}
+      WmsGetContainterList(params).then(d=>{
+        this.list = d.data || []
+        callback && callback(true)
+      }).catch(err=>{
+        this.list = []
+        callback && callback(false)
+      })
+    },
+    onDel(obj,index){
+      this.list.splice(index,1)
+    },
+    onManualIntrance(){
+      let cf = this.checkBeforeSubmit();
+      if (!cf) return false;
+      this.loading = true;
+      this.dealManualIntrance((f)=>{
+        this.loading = false;
+        if (f) {
+          this.$message.success('鍏ュ簱鎴愬姛锛�');
+          this.resetContainter()
+          this.resetMaterial()
+          this.resetSufFrom()
+          this.list = [];
+        }
+      })
+    },
+    onAutoIntrance(){
+      let cf = this.checkBeforeSubmit();
+      if (!cf) return false;
+      this.loading = true;
+      this.dealAutoIntrance((f)=>{
+        this.loading = false;
+        if (f) {
+          this.$message.success('鍏ュ簱鎴愬姛锛�');
+          this.resetContainter()
+          this.resetMaterial()
+          this.resetSufFrom()
+          this.list = [];
+        }
+      })
+    },
+    onBind(){
+      let cf = this.checkBeforeSubmit('bind');
+      if (!cf) return false;
+      this.loading = true;
+      this.dealBind((f)=>{
+        if (f) {
+          this.getContainterInfo((f1)=>{
+            this.loading = false;
+            this.$message.success('缁勭洏鎴愬姛锛�');
+          })
+        } else {
+          this.loading = false;
+        }
+      })
+    },
+    onTransfer(){
+      this.loading = true;
+      this.dealTransfer((f)=>{
+        this.loading = false;
+        if (f) {
+          this.$message.success('绉诲簱鎴愬姛锛�');
+          this.resetContainter()
+          this.resetMaterial()
+          this.resetSufFrom()
+          this.list = [];
+        }
+      })
+    },
+    onReset(){
+      this.resetContainter()
+      this.resetMaterial()
+      this.list = [];
+    },
+    checkBeforeSubmit(type){
+      let flag=true, msg="";
+      
+      if (this.list.length>0) {
+        for (let i=0;i<this.list.length;i++) {
+          if (!this.list[i].bindquantity) {
+            msg = `璇风‘璁ょ${i+1}绗旂墿鏂欑殑鏁伴噺锛乣
+            flag = false;
+          }
+          if (flag && this.list[i].bindquantity!==parseInt(this.list[i].bindquantity)) {
+             msg = `绗�${i+1}绗旂墿鏂�,鏁伴噺鍙兘鏄鏁存暟锛乣
+             flag = false;
+          }
+        }
+      } else {
+        if (type==='bind') {
+          msg = '娌℃湁鐗╂枡淇℃伅锛�'
+          flag = false;
+        }
+      }
+      
+      if (!flag && msg) {
+        this.$error({
+          title: '绯荤粺鎻愮ず',
+          content: msg,
+        });
+      }
+      
+      return flag;
+    },
+    dealBind(callback){
+      let params = {
+        containercode:this.containter.containercode,
+        wmsMaterials:this.list
+      }
+      BindAction(params).then(()=>{
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    dealManualIntrance(callback){
+      let params = {
+        containercode:this.containter?this.containter.containercode:null,
+        wmsMaterials:this.list,
+        placecode:this.sufFrom.placecode,
+        areaId:this.sufFrom.areaId
+      }
+      BindEntranceManualWare(params).then(()=>{
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    dealAutoIntrance(callback){
+      let params = {
+        containercode:this.containter?this.containter.containercode:null,
+        wmsMaterials:this.list,
+        placecode:this.sufFrom.placecode,
+        areaId:this.sufFrom.areaId,
+        entrance:this.sufFrom.entrance
+      }
+      BindEntranceAutoWare(params).then(()=>{
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    dealTransfer(callback){
+      let params = {
+        containercode:this.containter.containercode,
+        placecode:this.sufFrom.placecode
+      }
+      BindEntranceTransfer(params).then(()=>{
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    }
+  },
+  created(){
+    this.selectList.workTypes = this.$options.filters['dictData']('lesworkshop_section')
+  },
+  mounted(){
+    this.getSelectList()
+  }
+}
+</script>
+<style lang="less" scoped>
+.wms-in-bound-page{
+  border-radius: 6px 6px 0 0;
+  background-color: #fff;
+}
+.in-bound-page-block{
+  border-bottom:2px solid #dcdcdc;
+  overflow: auto;
+  padding-top: 16px;
+  padding-bottom: 16px;
+  &.block-two{
+    padding-top:12px;
+    .table-box{
+      padding-top:20px;
+      min-height: 241px;
+    }
+  }
+  &.block-three{
+     overflow: hidden;
+     padding-left:8px;
+     padding-right:8px;
+  }
+}
+.bottom-btns-view{
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  flex-wrap: wrap;
+  padding:16px 8px;
+  .ant-btn + .ant-btn {
+    margin-left:20px;
+  }
+}
+.radios-box{
+  width:600px;
+  display:flex;
+  margin:0 auto;
+  padding-bottom: 12px;
+  &>.label{
+    flex-shrink: 0;
+    text-align: right;
+  }
+  &>.content{
+    flex-grow:1;
+    .msg-row{
+      padding-top:4px;
+    }
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/inputLayout.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/inputLayout.vue
new file mode 100644
index 0000000..37f3f0f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/inputLayout.vue
@@ -0,0 +1,50 @@
+<template>
+  <div class="wms-in-bound-input-layout">
+    <div class="label-view" v-if="label" :style="{width:labelWidth?labelWidth:'auto'}">{{label}}锛�</div>
+    <div class="input-view">
+      <slot></slot>
+      <div v-if="msg">
+        <a-alert :message="msg" type="error" show-icon />
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name:'wmsInBoundInputLayout',
+  props:{
+    label:{
+      type:String,
+      default:''
+    },
+    labelWidth:{
+      type:String,
+      default:''
+    },
+    msg:{
+      type:String,
+      default:''
+    }
+  },
+  mounted(){
+    console.log(this.$scopedSlots.err)
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-in-bound-input-layout{
+  width:100%;
+  display:flex;
+  margin:0 auto;
+  .label-view{
+    flex-shrink: 0;
+    padding-top: 3.5px;
+    text-align: right;
+  }
+  .input-view{
+    flex-grow:1;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/searchBox.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/searchBox.vue
new file mode 100644
index 0000000..e0b7800
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/searchBox.vue
@@ -0,0 +1,109 @@
+<template>
+  <div class="wms-in-bound-search-box">
+    <div class="label-view" v-if="label" :style="{width:labelWidth?labelWidth:'auto'}">{{label}}锛�</div>
+    <div class="input-view">
+      <a-input :placeholder="placeholder" v-model.trim="innerValue" />
+      <div v-if="msg" class="msg-row">
+        <a-alert v-if="msgType==='error'" :message="msg" type="error" show-icon />
+        <a-alert v-else :message="msg" type="info" show-icon />
+      </div>
+    </div>
+    <div class="btns-view">
+      <a-button type="primary" @click="onSearch" :disabled="btnDisabled">鎼� 绱�</a-button>
+      <a-button @click="onReset" :disabled="btnDisabled">閲� 缃�</a-button>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name:'wmsInBoundSearchBox',
+  emits:['input','search','reset'],
+  props:{
+    label:{
+      type:String,
+      default:''
+    },
+    labelWidth:{
+      type:String,
+      default:''
+    },
+    placeholder:{
+      type:String,
+      default:''
+    },
+    msgType:{
+      type:String,
+      default:''
+    },
+    msg:{
+      type:String,
+      default:''
+    },
+    value:{
+      type:[String,null],
+      default:''
+    },
+    btnDisabled:{
+      type:Boolean,
+      default:false
+    }
+  },
+  data(){
+    return {
+      innerValue:''
+    }
+  },
+  created(){
+    this.innerValue = this.value
+  },
+  watch:{
+    innerValue(newVal,oldVal){
+      if (newVal!==this.value) {
+        this.$emit('input',newVal)
+      }
+    },
+    value(newVal,oldVal){
+      if (newVal!==this.innerValue) {
+        this.innerValue = newVal;
+      }
+    }
+  },
+  methods:{
+    onSearch(){
+      this.$emit('search',this.innerValue)
+    },
+    onReset(){
+      this.innerValue = ''
+      this.$emit('reset')
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-in-bound-search-box{
+  width:600px;
+  display:flex;
+  margin:0 auto;
+  .label-view,.btns-view{
+    flex-shrink: 0;
+  }
+  .label-view{
+    padding-top: 3.5px;
+    text-align: right;
+  }
+  .btns-view{
+    padding-left: 16px;
+    .ant-btn + .ant-btn {
+      margin-left:10px;
+    }
+  }
+  .input-view{
+    flex-grow:1;
+    .msg-row{
+      padding-top:4px;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/addForm.vue
new file mode 100644
index 0000000..8cda209
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/addForm.vue
@@ -0,0 +1,122 @@
+锘�<template>
+  <a-modal
+    title="鏂板鍙戣揣鍑哄簱"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍙戣揣鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彂璐у崟鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+        <a-form-item label="鍙戣揣鎵瑰彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ彂璐ф壒鍙�" style="width: 100%" v-decorator="['dispatchedBatch']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="鍙戣揣浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彂璐т汉" v-decorator="['dispatchedWorker']" />
+        </a-form-item>
+        <a-form-item label="鍙戣揣鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍙戣揣鏃堕棿" v-decorator="['dispatchedTime']" @change="onChangedispatchedTime"/>
+        </a-form-item>
+        <a-form-item label="鏀惰揣鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ敹璐у湴鍧�" v-decorator="['shippingAddress']" />
+        </a-form-item>
+        <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['customer']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    DispatchedOutboundOrderAdd
+  } from '@/api/modular/main/DispatchedOutboundOrderManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        orderLargeCategoryData: [],
+        orderSubclassData: [],
+        dispatchedTimeDateString: '',
+        orderStatusData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            values.dispatchedTime = this.dispatchedTimeDateString
+            DispatchedOutboundOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      onChangedispatchedTime(date, dateString) {
+        this.dispatchedTimeDateString = dateString
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/editForm.vue
new file mode 100644
index 0000000..8b3fcfd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/editForm.vue
@@ -0,0 +1,149 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫鍙戣揣鍑哄簱"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍙戣揣鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彂璐у崟鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+        <a-form-item label="鍙戣揣鎵瑰彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ彂璐ф壒鍙�" style="width: 100%" v-decorator="['dispatchedBatch']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="鍙戣揣浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彂璐т汉" v-decorator="['dispatchedWorker']" />
+        </a-form-item>
+        <a-form-item label="鍙戣揣鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍙戣揣鏃堕棿" v-decorator="['dispatchedTime']" @change="onChangedispatchedTime"/>
+        </a-form-item>
+        <a-form-item label="鏀惰揣鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ敹璐у湴鍧�" v-decorator="['shippingAddress']" />
+        </a-form-item>
+        <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['customer']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+    DispatchedOutboundOrderEdit
+  } from '@/api/modular/main/DispatchedOutboundOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        orderLargeCategoryData: [],
+        orderSubclassData: [],
+        dispatchedTimeDateString: '',
+        orderStatusData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      moment,
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              orderNo: record.orderNo,
+              orderLargeCategory: record.orderLargeCategory,
+              orderSubclass: record.orderSubclass,
+              orderQuantity: record.orderQuantity,
+              dispatchedBatch: record.dispatchedBatch,
+              areaName: record.areaName,
+              dispatchedWorker: record.dispatchedWorker,
+              shippingAddress: record.shippingAddress,
+              customer: record.customer
+            }
+          )
+        })
+        this.form.getFieldDecorator('dispatchedTime', { initialValue: moment(record.dispatchedTime, 'YYYY-MM-DD') })
+        this.dispatchedTimeDateString = moment(record.dispatchedTime).format('YYYY-MM-DD')
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            values.dispatchedTime = this.dispatchedTimeDateString
+            this.record.dispatchedTime = this.dispatchedTimeDateString
+            DispatchedOutboundOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      onChangedispatchedTime(date, dateString) {
+        this.dispatchedTimeDateString = dateString
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/index.vue
new file mode 100644
index 0000000..12f8662
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/index.vue
@@ -0,0 +1,296 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍙戣揣鍗曞彿">
+                <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ彂璐у崟鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                  <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <!-- <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁澶х被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderLargeCategory" placeholder="璇烽�夋嫨..." @change="onLargeCategorySelect">
+                    <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁灏忕被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderSubclass" placeholder="璇烽�夋嫨...">
+                    <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col> -->
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩爣浠撳簱">
+                  <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ョ洰鏍囦粨搴�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍙戣揣浜�">
+                  <a-input v-model="queryParam.dispatchedWorker" allow-clear placeholder="璇疯緭鍏ュ彂璐т汉"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鏀惰揣鍦板潃">
+                  <a-input v-model="queryParam.shippingAddress" allow-clear placeholder="璇疯緭鍏ユ敹璐у湴鍧�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="瀹㈡埛">
+                  <a-input v-model="queryParam.customer" allow-clear placeholder="璇疯緭鍏ュ鎴�"/>
+                </a-form-item>
+              </a-col>
+            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+      >
+        <template class="table-operator" slot="operator" >
+          <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板鍙戣揣鍑哄簱</a-button>
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" />
+          <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => DispatchedOutboundOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { 
+    DispatchedOutboundOrderPage, 
+    DispatchedOutboundOrderDelete ,
+    DispatchedOutboundOrderLargeCategories,
+    DispatchedOutboundOrderSubclass
+  } from '@/api/modular/main/DispatchedOutboundOrderManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        selectOptions:{
+          largeCategories:[],
+          subclasses:[]
+        },
+        columns: [
+          {
+            title: '鍙戣揣鍗曞彿',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          // {
+          //   title: '鍗曟嵁澶х被',
+          //   align: 'center',
+          //   dataIndex: 'orderLargeCategory',
+          //   //scopedSlots: { customRender: 'orderLargeCategoryscopedSlots' }
+          // },
+          // {
+          //   title: '鍗曟嵁灏忕被',
+          //   align: 'center',
+          //   dataIndex: 'orderSubclass',
+          //   //scopedSlots: { customRender: 'orderSubclassscopedSlots' }
+          // },
+          {
+            title: '鍗曟嵁鎬绘暟閲�',
+            align: 'center',
+            dataIndex: 'orderQuantity'
+          },
+          {
+            title: '鍙戣揣鎵瑰彿',
+            align: 'center',
+            dataIndex: 'dispatchedBatch'
+          },
+          {
+            title: '鐩爣浠撳簱',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '鍙戣揣浜�',
+            align: 'center',
+            dataIndex: 'dispatchedWorker'
+          },
+          {
+            title: '鍙戣揣鏃堕棿',
+            align: 'center',
+            dataIndex: 'dispatchedTime'
+          },
+          {
+            title: '鏀惰揣鍦板潃',
+            align: 'center',
+            dataIndex: 'shippingAddress'
+          },
+          {
+            title: '瀹㈡埛',
+            align: 'center',
+            dataIndex: 'customer'
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatus',
+            scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return DispatchedOutboundOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0])
+            }
+            return res.data
+          })
+        },
+        orderStatusEnumData: [],
+        infoId:null,
+        infoOrderNo:''
+      }
+    },
+    created () {
+      const orderStatusEnumOption = this.$options
+      this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+    },
+    mounted(){
+      this.getLargeCategoriesOptions()
+    },
+    methods: {
+      onViewDetail(obj){
+        if (this.infoId===obj.id) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      getLargeCategoriesOptions(){
+        DispatchedOutboundOrderLargeCategories().then(d=>{
+          this.selectOptions.largeCategories = d.data || []
+        }).catch(err=>{
+          console.log(err)
+        })
+      },
+      getSubclassOptions(id){
+        DispatchedOutboundOrderSubclass(id).then(d=>{
+          this.selectOptions.subclasses = d.data || []
+          this.queryParam.subclasses = undefined
+        }).catch(err=>{
+          this.clearSubclass()
+          console.log(err)
+        })
+      },
+      onLargeCategorySelect(val){
+        if (val) {
+          this.getSubclassOptions(val)
+        } else {
+          this.clearSubclass()
+        }
+      },
+      clearSubclass(){
+        this.selectOptions.subclasses = []
+        this.queryParam.subclasses = undefined
+      },
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      DispatchedOutboundOrderDelete (record) {
+        DispatchedOutboundOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            if (this.infoId && record.id) {
+              this.infoId = null
+            }
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      infoCallback(){
+        this.$refs.table.refresh()
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/infoBlock.vue
new file mode 100644
index 0000000..a7af495
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/infoBlock.vue
@@ -0,0 +1,116 @@
+<template>
+  <div class="dispatched-out-bound-order-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <template slot="statusSlots" slot-scope="text,record">
+        <a-tag :color="text==='瀹屾垚'?'#008000':(
+          text==='鎵ц涓�'?'#1e90ff':(
+            text==='鍙栨秷'?'#556b2f':(
+              text==='鏆傚仠'?'#8b0000':(
+                text==='鎾ゅ洖'?'#ff00ff':'gray'
+              )
+            )
+          )
+        )">{{text}}</a-tag>
+      </template>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { DispatchedOutboundOrderDetailPage } from '@/api/modular/main/DispatchedOutboundOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'dispatchedOutBoundOrderInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+		{ title: '鎵樼洏鍙�', align:'center', dataIndex: 'containerCode', key: 'containerCode' },
+        { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+		{ title: '鍩烘湰鍗曚綅', align:'center', dataIndex: 'basicUnit', key: 'basicUnit' },
+        { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.Id = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return DispatchedOutboundOrderDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.dispatched-out-bound-order-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/addForm.vue
new file mode 100644
index 0000000..f0c4728
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/addForm.vue
@@ -0,0 +1,136 @@
+锘�<template>
+  <a-modal
+    title="鏂板鍙戣揣浣滀笟"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="浼樺厛绾�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ヤ紭鍏堢骇" style="width: 100%" v-decorator="['priority']" />
+        </a-form-item>
+        <a-form-item label="鍙戣揣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彂璐т粨搴撳悕绉�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="浜よ揣鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨浜よ揣鏃ユ湡" v-decorator="['deliveryGoodsTime']" @change="onChangedeliveryGoodsTime"/>
+        </a-form-item>
+        <a-form-item label="璁″垝鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ鍒掑彿" v-decorator="['planNo']" />
+        </a-form-item>
+        <a-form-item label="鑸瑰彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ埞鍙�" v-decorator="['shipNo']" />
+        </a-form-item>
+        <a-form-item label="宸ョ▼鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ伐绋嬪彿" v-decorator="['projectNo']" />
+        </a-form-item>
+        <a-form-item label="鍒嗛厤鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ垎閰嶇姸鎬�" v-decorator="['assignmentStatus']" />
+        </a-form-item>
+        <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['custom']" />
+        </a-form-item>
+        <a-form-item label="鐢佃瘽鑱旂郴浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ數璇濊仈绯讳汉" v-decorator="['phoneNumber']" />
+        </a-form-item>
+        <a-form-item label="鏀惰幏鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ敹鑾峰湴鍧�" v-decorator="['address']" />
+        </a-form-item>
+        <a-form-item label="杩愯緭鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ繍杈撳叕鍙�" v-decorator="['transportationCompany']" />
+        </a-form-item>
+        <a-form-item label="杩愯緭鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ繍杈撳崟鍙�" v-decorator="['transportationOrderNo']" />
+        </a-form-item>
+        <a-form-item label="鍙栨秷鍘熷洜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彇娑堝師鍥�" v-decorator="['reasonForCancellation']" />
+        </a-form-item>
+        <a-form-item label="鏁村崟鏀惰揣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ暣鍗曟敹璐�" v-decorator="['isFullOrder']" />
+        </a-form-item>
+        <a-form-item label="璐т富缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ揣涓荤紪鍙�" v-decorator="['shipperOrder']" />
+        </a-form-item>
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    DispatchedWorkAdd
+  } from '@/api/modular/main/DispatchedWorkManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        deliveryGoodsTimeDateString: '',
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            values.deliveryGoodsTime = this.deliveryGoodsTimeDateString
+            DispatchedWorkAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      onChangedeliveryGoodsTime(date, dateString) {
+        this.deliveryGoodsTimeDateString = dateString
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/editForm.vue
new file mode 100644
index 0000000..1ec931b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/editForm.vue
@@ -0,0 +1,170 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫鍙戣揣浣滀笟"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="浼樺厛绾�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ヤ紭鍏堢骇" style="width: 100%" v-decorator="['priority']" />
+        </a-form-item>
+        <a-form-item label="鍙戣揣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彂璐т粨搴撳悕绉�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="浜よ揣鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨浜よ揣鏃ユ湡" v-decorator="['deliveryGoodsTime']" @change="onChangedeliveryGoodsTime"/>
+        </a-form-item>
+        <a-form-item label="璁″垝鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ鍒掑彿" v-decorator="['planNo']" />
+        </a-form-item>
+        <a-form-item label="鑸瑰彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ埞鍙�" v-decorator="['shipNo']" />
+        </a-form-item>
+        <a-form-item label="宸ョ▼鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ伐绋嬪彿" v-decorator="['projectNo']" />
+        </a-form-item>
+        <a-form-item label="鍒嗛厤鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ垎閰嶇姸鎬�" v-decorator="['assignmentStatus']" />
+        </a-form-item>
+        <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['custom']" />
+        </a-form-item>
+        <a-form-item label="鐢佃瘽鑱旂郴浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ數璇濊仈绯讳汉" v-decorator="['phoneNumber']" />
+        </a-form-item>
+        <a-form-item label="鏀惰幏鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ敹鑾峰湴鍧�" v-decorator="['address']" />
+        </a-form-item>
+        <a-form-item label="杩愯緭鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ繍杈撳叕鍙�" v-decorator="['transportationCompany']" />
+        </a-form-item>
+        <a-form-item label="杩愯緭鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ繍杈撳崟鍙�" v-decorator="['transportationOrderNo']" />
+        </a-form-item>
+        <a-form-item label="鍙栨秷鍘熷洜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彇娑堝師鍥�" v-decorator="['reasonForCancellation']" />
+        </a-form-item>
+        <a-form-item label="鏁村崟鏀惰揣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ暣鍗曟敹璐�" v-decorator="['isFullOrder']" />
+        </a-form-item>
+        <a-form-item label="璐т富缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ揣涓荤紪鍙�" v-decorator="['shipperOrder']" />
+        </a-form-item>
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+    DispatchedWorkEdit
+  } from '@/api/modular/main/DispatchedWorkManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        deliveryGoodsTimeDateString: '',
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      moment,
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              orderNo: record.orderNo,
+              priority: record.priority,
+              areaName: record.areaName,
+              planNo: record.planNo,
+              shipNo: record.shipNo,
+              projectNo: record.projectNo,
+              assignmentStatus: record.assignmentStatus,
+              custom: record.custom,
+              phoneNumber: record.phoneNumber,
+              address: record.address,
+              transportationCompany: record.transportationCompany,
+              transportationOrderNo: record.transportationOrderNo,
+              reasonForCancellation: record.reasonForCancellation,
+              isFullOrder: record.isFullOrder,
+              shipperOrder: record.shipperOrder,
+              remarks: record.remarks
+            }
+          )
+        })
+        this.form.getFieldDecorator('deliveryGoodsTime', { initialValue: moment(record.deliveryGoodsTime, 'YYYY-MM-DD') })
+        this.deliveryGoodsTimeDateString = moment(record.deliveryGoodsTime).format('YYYY-MM-DD')
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            values.deliveryGoodsTime = this.deliveryGoodsTimeDateString
+            this.record.deliveryGoodsTime = this.deliveryGoodsTimeDateString
+            DispatchedWorkEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      onChangedeliveryGoodsTime(date, dateString) {
+        this.deliveryGoodsTimeDateString = dateString
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/index.vue
new file mode 100644
index 0000000..b1cc0d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/index.vue
@@ -0,0 +1,309 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="璁㈠崟鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.deliveryOrderStatusEnum" placeholder="璇疯緭鍏ヨ鍗曠姸鎬�">
+                  <a-select-option v-for="(item,index) in deliveryOrderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                    <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>  
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍙戣揣浠撳簱鍚嶇О">
+                  <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ュ彂璐т粨搴撳悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="澶囨敞">
+                  <a-input v-model="queryParam.remarks" allow-clear placeholder="璇疯緭鍏ュ娉�"/>
+                </a-form-item>
+              </a-col>            
+            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+      >
+        <template class="table-operator" slot="operator" >
+          <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板鍙戣揣浣滀笟</a-button>
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" />
+          <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => DispatchedWorkDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { DispatchedWorkPage, DispatchedWorkDelete } from '@/api/modular/main/DispatchedWorkManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+sorter: true,
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          {
+            title: '璁㈠崟鐘舵��',
+            align: 'center',
+sorter: true,
+            dataIndex: 'deliveryOrderStatusEnum',
+            scopedSlots: { customRender: 'deliveryOrderStatusEnumscopedSlots' }
+          },
+          {
+            title: '浼樺厛绾�',
+            align: 'center',
+sorter: true,
+            dataIndex: 'priority'
+          },
+          {
+            title: '鍗曟嵁澶х被',
+            align: 'center',
+sorter: true,
+            dataIndex: 'orderLargeCategory'
+          },
+          {
+            title: '鍗曟嵁灏忕被',
+            align: 'center',
+sorter: true,
+            dataIndex: 'orderSubclass'
+          },
+          {
+            title: '鍙戣揣浠撳簱鍚嶇О',
+            align: 'center',
+sorter: true,
+            dataIndex: 'areaName'
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+sorter: true,
+            dataIndex: 'orderStatus',
+            scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+          },
+          {
+            title: '浜よ揣鏃ユ湡',
+            align: 'center',
+sorter: true,
+            dataIndex: 'deliveryGoodsTime'
+          },
+          {
+            title: '璁″垝鍙�',
+            align: 'center',
+sorter: true,
+            dataIndex: 'planNo'
+          },
+          {
+            title: '鑸瑰彿',
+            align: 'center',
+sorter: true,
+            dataIndex: 'shipNo'
+          },
+          {
+            title: '宸ョ▼鍙�',
+            align: 'center',
+sorter: true,
+            dataIndex: 'projectNo'
+          },
+          {
+            title: '鍒嗛厤鐘舵��',
+            align: 'center',
+sorter: true,
+            dataIndex: 'assignmentStatus'
+          },
+          {
+            title: '瀹㈡埛',
+            align: 'center',
+sorter: true,
+            dataIndex: 'custom'
+          },
+          {
+            title: '鐢佃瘽鑱旂郴浜�',
+            align: 'center',
+sorter: true,
+            dataIndex: 'phoneNumber'
+          },
+          {
+            title: '鏀惰幏鍦板潃',
+            align: 'center',
+sorter: true,
+            dataIndex: 'address'
+          },
+          {
+            title: '杩愯緭鍏徃',
+            align: 'center',
+sorter: true,
+            dataIndex: 'transportationCompany'
+          },
+          {
+            title: '杩愯緭鍗曞彿',
+            align: 'center',
+sorter: true,
+            dataIndex: 'transportationOrderNo'
+          },
+          {
+            title: '鍙栨秷鍘熷洜',
+            align: 'center',
+sorter: true,
+            dataIndex: 'reasonForCancellation'
+          },
+          {
+            title: '鏁村崟鏀惰揣',
+            align: 'center',
+sorter: true,
+            dataIndex: 'isFullOrder'
+          },
+          {
+            title: '璐т富缂栧彿',
+            align: 'center',
+sorter: true,
+            dataIndex: 'shipperOrder'
+          },
+          {
+            title: '澶囨敞',
+            align: 'center',
+sorter: true,
+            dataIndex: 'remarks'
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return DispatchedWorkPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0])
+            }
+            return res.data
+          })
+        },
+        orderStatusEnumData:[],
+        deliveryOrderStatusEnumData:[],
+        infoId:null,
+        infoOrderNo:''
+      }
+    },
+    created () {
+      const orderStatusEnumOption = this.$options
+      this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+      this.deliveryOrderStatusEnumData = orderStatusEnumOption.filters['dictData']('purchase_receive_status')
+    },
+    methods: {
+      onViewDetail(obj){
+        if (this.infoId===obj.id) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      DispatchedWorkDelete (record) {
+        DispatchedWorkDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      infoCallback(){
+        this.$refs.table.refresh()
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/infoBlock.vue
new file mode 100644
index 0000000..f7a5249
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/infoBlock.vue
@@ -0,0 +1,114 @@
+<template>
+  <div class="dispatched-work-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <template slot="statusSlots" slot-scope="text,record">
+        <a-tag :color="text==='瀹屾垚'?'#008000':(
+          text==='鎵ц涓�'?'#1e90ff':(
+            text==='鍙栨秷'?'#556b2f':(
+              text==='鏆傚仠'?'#8b0000':(
+                text==='鎾ゅ洖'?'#ff00ff':'gray'
+              )
+            )
+          )
+        )">{{text}}</a-tag>
+      </template>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { DispatchedWorkDetailPage } from '@/api/modular/main/DispatchedWorkManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'deliveryWorkInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+        { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.Id = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return DispatchedWorkDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.dispatched-work-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse/index.vue
new file mode 100644
index 0000000..4d744a1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse/index.vue
@@ -0,0 +1,283 @@
+<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+      <!-- 鍑哄簱绠$悊202311 -->
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsMaterialStock:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐗╂枡缂栧彿">
+                <a-input v-model="queryParam.materialno" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+              </a-form-item>
+            </a-col><a-col :md="8" :sm="24">
+              <a-form-item label="鐗╂枡绫诲埆">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.materialtype" placeholder="璇烽�夋嫨鐗╂枡绫诲埆">
+                  <a-select-option v-for="(item,index) in materialtypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡鎵规">
+                  <a-input v-model="queryParam.materialbatch" allow-clear placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡鍚嶇О">
+                  <a-input v-model="queryParam.materialname" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡灏哄">
+                  <a-input v-model="queryParam.materialspec" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�"/>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="妫�楠屾柟寮�">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.inspectionmethod" placeholder="璇烽�夋嫨妫�楠屾柟寮�">
+                    <a-select-option v-for="(item,index) in inspectionmethodData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="鍗曚綅绫诲埆">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.unittype" placeholder="璇烽�夋嫨鍗曚綅绫诲埆">
+                    <a-select-option v-for="(item,index) in unittypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="鍗曚綅缂栧彿">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.unitno" placeholder="璇烽�夋嫨鍗曚綅缂栧彿">
+                    <a-select-option v-for="(item,index) in unitnoData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="搴撲綅缂栫爜">
+                  <a-input v-model="queryParam.placecode" allow-clear placeholder="璇疯緭鍏ュ簱浣嶇紪鐮�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎵樼洏缂栫爜">
+                  <a-input v-model="queryParam.containercode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樼紪鐮�"/>
+                </a-form-item>
+              </a-col>            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.placeCode"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsMaterialStock:add')" >
+          <a-button icon="export" type="primary" :disabled="selectedRows.length==0" @click="onOpenSite">鑷姩鍑哄簱</a-button>
+          <a-button icon="export" type="danger" :disabled="selectedRows.length==0" @click="onManualOut">浜哄伐鍑哄簱</a-button>
+          <a-button icon="vertical-align-bottom">瀵煎嚭</a-button>
+        </template>
+        <span slot="materialtypescopedSlots" slot-scope="text">
+          {{ 'material_type' | dictType(text) }}
+        </span>
+        <span slot="inspectionmethodscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'#2db7f5':'#108ee9'">{{ 'material_inspection' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="unittypescopedSlots" slot-scope="text">
+          {{ 'unit_type' | dictType(text) }}
+        </span>
+        <span slot="unitnoscopedSlots" slot-scope="text">
+          {{ 'unitno_type' | dictType(text) }}
+        </span>
+      </s-table>
+    </a-card>
+    
+    <site-modal :visible.sync="siteVisible" type="out" @confirm="onSiteBack" />
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { WmsMaterialStockPage, IexwarehouseManual, IexwarehouseAuto } from '@/api/modular/main/ExWarehouseManage'
+  import SiteModal from '@/components/ChooseSiteModal.vue'
+  export default {
+    components: {
+      STable,
+      SiteModal
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鐗╂枡缂栧彿',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'materialNo'
+          },
+          {
+            title: '鐗╂枡绫诲埆',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'materialType',
+            scopedSlots: { customRender: 'materialtypescopedSlots' }
+          },
+          {
+            title: '鐗╂枡鎵规',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'materialBatch'
+          },
+          {
+            title: '鐗╂枡鍚嶇О',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'materialName'
+          },
+          {
+            title: '鐗╂枡灏哄',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'materialSpec'
+          },
+          {
+            title: '妫�楠屾柟寮�',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'inspectionMethod',
+            scopedSlots: { customRender: 'inspectionmethodscopedSlots' }
+          },
+          {
+            title: '鍗曚綅绫诲埆',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'unitType',
+            scopedSlots: { customRender: 'unittypescopedSlots' }
+          },
+          {
+            title: '鍗曚綅缂栧彿',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'unitNo',
+            scopedSlots: { customRender: 'unitnoscopedSlots' }
+          },
+          {
+            title: '搴撳瓨鏁�',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'stockNumber'
+          },
+          {
+            title: '搴撲綅缂栫爜',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'placeCode'
+          },
+          {
+            title: '鎵樼洏缂栫爜',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'containerCode'
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return WmsMaterialStockPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            res.data.rows = res.data.rows.map((_obj)=>{
+            _obj.materialType= _obj.materialType.toString()
+            _obj.inspectionMethod= _obj.inspectionMethod.toString()
+            _obj.unitType= _obj.unitType.toString()
+            _obj.unitNo= _obj.unitNo.toString()
+				    return _obj;
+			    })
+			 // console.log(res.data)
+            return res.data
+          })
+        },
+        materialtypeData: [],
+        inspectionmethodData: [],
+        unittypeData: [],
+        unitnoData: [],
+        selectedRowKeys: [],
+        selectedRows: [],
+        siteVisible:false
+      }
+    },
+    created () {
+      const materialtypeOption = this.$options
+      this.materialtypeData = materialtypeOption.filters['dictData']('material_type')
+      const inspectionmethodOption = this.$options
+      this.inspectionmethodData = inspectionmethodOption.filters['dictData']('material_inspection')
+      const unittypeOption = this.$options
+      this.unittypeData = unittypeOption.filters['dictData']('unit_type')
+      const unitnoOption = this.$options
+      this.unitnoData = unitnoOption.filters['dictData']('unit_type')
+    },
+    methods: {
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      },
+      onOpenSite(){
+        this.siteVisible = true
+      },
+      onSiteBack(res){
+        let params = {containercode:this.selectedRows[0].containercode,placecode:this.selectedRows[0].placecode,entranceId:res}
+        this.dealOut(params,'auto')
+      },
+      onManualOut(){
+        this.$confirm({
+          title: '鎿嶄綔纭',
+          content: '纭畾瑕佽繘琛屼汉宸ュ叆搴撴搷浣滃悧锛�',
+          cancelText:'鍙栨秷',
+          okText:'纭',
+          onOk:()=> {
+            // let params = {containercode:this.selectedRows[0].containercode,placecode:this.selectedRows[0].placecode}
+            this.dealOut(this.selectedRows)
+          }
+        });
+      },
+      dealOut(params,type){
+        let _methodName = 'manualAjax';
+        if (type==='auto') _methodName = 'autoAjax';
+        this[_methodName](params).then(()=>{
+          this.$message.success('鎿嶄綔鎴愬姛');
+          this.$refs.table.refresh()
+        }).catch(()=>{})
+      },
+      autoAjax(params){
+        console.log(this.selectedRows)
+        // return IexwarehouseAuto(params)
+        return IexwarehouseAuto(this.selectedRows);
+      },
+      manualAjax(params){
+        return IexwarehouseManual(params)
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/addForm.vue
new file mode 100644
index 0000000..b321801
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/addForm.vue
@@ -0,0 +1,206 @@
+<template>
+  <a-modal
+    title="鏂板鍙枡"
+    width="90vw"
+    :visible="visible"
+    dialogClass="zero-modal"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <div class="ex-warehouse1-modal-content">
+        <div class="form-view">
+          <a-form :form="form">
+            <a-row>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input disabled v-decorator="['OrderNo',{rules:[{required:true,message:'鍗曟嵁鍙蜂笉鍙负绌猴紒'}]}]" />
+                </a-form-item>
+              </a-col>
+             <!-- <a-col :md="8" :sm="24">
+                <a-form-item label="宸ョ▼鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input allowClear placeholder="璇疯緭鍏�..." v-decorator="['engineeringNo',{rules:[{required:true,message:'璇疯緭鍏ュ伐绋嬪彿锛�'}]}]" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="璁″垝鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input allowClear placeholder="璇疯緭鍏�..." v-decorator="['planNo',{rules:[{required:true,message:'璇疯緭鍏ヨ鍒掑彿锛�'}]}]" />
+                </a-form-item>
+              </a-col> -->
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍙枡绔欑偣" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input v-show="false" v-decorator="['takeMaterialsSiteId',{rules:[{required:true,message:'璇烽�夋嫨鍙枡绔欑偣锛�'}]}]" />
+                  <station-select v-model="stationArr" :get-lines="getLines" :get-stations="getStations" @change="onChangeStation" />
+                </a-form-item>
+              </a-col>
+              <!-- <a-col :md="8" :sm="24">
+                <a-form-item label="鐝粍" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input allowClear placeholder="璇疯緭鍏�..." v-decorator="['teamName',{rules:[{required:true,message:'璇疯緭鍏ョ彮缁勶紒'}]}]" />
+                </a-form-item>
+              </a-col> -->
+            </a-row>
+          </a-form>
+        </div>
+        <div class="action-view">
+          <a-button type="primary" icon="plus" @click="openChoose">
+            娣诲姞鐗╂枡
+          </a-button>
+        </div>
+        <div class="list-view" ref="listWrapper">
+          <!-- 娉ㄦ剰scroll.x鐨勫�� -->
+          <a-table v-if="th" :data-source="list" :columns="columns" rowKey="id" :pagination="false" :scroll="{x:1100,y:th}">
+            <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+            <template slot="action" slot-scope="text,record,index">
+              <a-button type="danger" size="small" @click.stop="cancelListItem(index)">鍒犻櫎</a-button>
+            </template>
+          </a-table> 
+        </div>
+      </div>
+    </a-spin>
+    
+    <choose-modal :visible.sync="chooseVisible" @callback="chooseBack" />
+    
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="submit" type="primary" :loading="confirmLoading" @click="handleSubmit" :disabled="!list.length">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+  import ChooseModal from './chooseMaterials.vue'
+  import { CncTakeMaterialsAdd,GetBillNumber,GetLines,GetStations } from '@/api/modular/main/ExWarehouseManage1'
+  import StationSelect from '@/components/StationSelect.vue'
+  export default {
+    components:{ChooseModal,StationSelect},
+    data () {
+      return {
+        getLines:GetLines,
+        getStations:GetStations,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 18 }
+        },
+        visible: false,
+        confirmLoading: false,
+        lines:[],
+        stations:[],
+        stationArr:[],
+        th:0,
+        list:[],
+        columns:[
+          { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+          { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo', width: 150 },
+          { title: '鍥惧彿', dataIndex: 'drawingNo', key: 'drawingNo' },
+          { title: '灏哄', dataIndex: 'materialSpec', key: 'materialSpec', width: 150 },
+          { title: '搴撳尯', dataIndex: 'areaName', key: 'areaName', width: 120 },
+          { title: '搴撲綅', dataIndex: 'placeCode', key: 'placeCode', width: 150 },
+          { title: '鎵樼洏鍙�', dataIndex: 'containerCode', key: 'containerCode', width: 120 },
+          { title: '鏁伴噺', dataIndex: 'stockNumber', key: 'stockNumber', width: 100 },
+          { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+        ],
+        chooseVisible:false
+      }
+    },
+    beforeCreate(){
+      this.form = this.$form.createForm(this)
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+          this.th = this.$refs.listWrapper.clientHeight - 60
+          this.getInitData()
+        });
+      },
+      getInitData(){
+        this.confirmLoading = true;
+        GetBillNumber().then((d1)=>{
+          this.form.setFieldsValue({OrderNo:(d1.data.takeMaterialsNo || '')})
+          this.confirmLoading = false;
+        }).catch(()=>{
+          this.confirmLoading = false;
+        })
+      },
+      onChangeStation(arr){
+        this.form.setFieldsValue({takeMaterialsSiteId:arr[1]})
+      },
+      chooseBack(arr){
+        let newArr = [], reCount = 0;
+        arr.forEach((item)=>{
+          let f = false;
+          for (let i=0;i<this.list.length;i++) {
+            if (this.list[i].id === item.id) {
+              reCount++;
+              f = true
+              break;
+            }
+          }
+          if (!f) {
+            newArr.push(item)
+          }
+        })
+        this.list = [].concat(this.list,newArr)
+        if (reCount) {
+          this.$message.warning(`${reCount}绗旀暟鎹凡瀛樺湪锛屾湭娣诲姞锛乣);
+        }
+      },
+      cancelListItem(index){
+        this.list.splice(index,1)
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        this.form.validateFields((errors, values) => {
+          if (!errors) {
+            this.confirmLoading = true
+            let params = {...values,...{WmsAssembleOrderDetails:this.list}}
+            CncTakeMaterialsAdd(params).then(()=>{
+              this.confirmLoading = false
+              this.handleCancel()
+              this.$emit('ok')
+            }).catch(()=>{
+              this.confirmLoading = false
+            })
+          } 
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+        this.th = 0
+        this.list = []
+        this.chooseVisible = false
+      },
+      openChoose(){
+        this.chooseVisible = true
+      }
+    }
+  }
+</script>
+<style lang="less" scoped>
+.ex-warehouse1-modal-content{
+  height: 70vh;
+  display: flex;
+  flex-direction: column;
+  .form-view,.action-view{
+    flex-shrink: 0;
+  }
+  .form-view{
+    background-color: #F3F7FA;
+    padding-top: 20px;
+  }
+  .action-view{
+    padding: 8px 16px;
+  }
+  .list-view{
+    flex-grow: 1;
+    padding: 0 16px;
+    overflow: auto;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/chooseMaterials.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/chooseMaterials.vue
new file mode 100644
index 0000000..30fa193
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/chooseMaterials.vue
@@ -0,0 +1,335 @@
+<template>
+  <a-modal
+    title="鐗╂枡閫夋嫨"
+    width="85vw"
+    :visible="innerVisible"
+    dialogClass="zero-modal"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="loading">
+      <div class="ex-warehouse1-choose-modal-content">
+        <div class="choose-bar">
+          <div class="choose-form-view">
+            <a-form layout="inline">
+              <a-row>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="鎵樼洏缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-input v-model.trim="query.ContainerCode" placeholder="璇疯緭鍏�..." allowClear />
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-select style="width: 100%" v-model="query.MaterialType" placeholder="璇烽�夋嫨..." allowClear>
+                      <a-select-option v-for="(item,index) in types" :value="item.code" :key="'types-sel-'+index">{{item.name}}</a-select-option>
+                    </a-select>
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-input v-model.trim="query.MaterialName" placeholder="璇疯緭鍏�..." allowClear />
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="灏哄" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-input v-model.trim="query.Specifications" placeholder="璇疯緭鍏�..." allowClear />
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-input v-model.trim="query.MaterialBatch" placeholder="璇疯緭鍏�..." allowClear />
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="瀵嗗害" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-input v-model.trim="query.Density" placeholder="璇疯緭鍏�..." allowClear />
+                  </a-form-item>
+                </a-col>
+              </a-row>
+            </a-form>
+          </div>
+          <div class="choose-btns-view">
+            <a-button type="primary" style="margin-bottom:6px;" @click.stop="onQuery">鏌ヨ</a-button>
+            <a-button @click.stop="onReset">閲嶇疆</a-button>
+          </div>
+        </div>
+        <div class="table-box" ref="listWrapper">
+          <div class="action-view" v-if="showType===1">
+            <a-table v-if="th1" :data-source="list" :columns="listColumns" 
+              :pagination="{current:queried.PageNo,pageSize:queried.PageSize,total:listTotal}" 
+              rowKey="id" :row-selection="{onChange:rowSelectionsChange,selectedRowKeys:selectedRowKeys}" :scroll="{x:1300,y:th1}"
+              @change="chooseTablePageChange">
+              <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+            </a-table>
+          </div>
+          <div class="choosen-view" v-else>
+            <a-table v-if="th2" :data-source="choosen" :columns="choosenColumns" rowKey="id" :pagination="false" :scroll="{x:1300,y:th2}">
+              <template slot="action" slot-scope="text,record,index">
+                <a-button type="danger" size="small" @click.stop="cancelChoosen(index)">鍒犻櫎</a-button>
+              </template>
+            </a-table>
+          </div>
+        </div>
+      </div>
+    </a-spin>
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="choosen" type="primary" @click="changeShowType">鎵�閫夌墿鏂�<span v-if="choosen.length>0">({{choosen.length}})</span></a-button>
+      <a-button key="submit" type="primary" :loading="loading" @click="handleSubmit" :disabled="!choosen.length">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import { QueryMaterials } from '@/api/modular/main/ExWarehouseManage1'
+const defaultQuery = {
+  MaterialType:undefined,
+  MaterialName:'',
+  Specifications:'',
+  MaterialBatch:'',
+  Density:'',
+  ContainerCode:''
+}
+const pagination = {
+  PageNo:1,
+  PageSize:10
+} 
+export default {
+  emits:['update:visible','callback'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    }
+  },
+  data(){
+    return {
+      innerVisible:false,
+      loading:false,
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 5 }
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 18 }
+      },
+      types:[],
+      query:{...defaultQuery},
+      queried:{...pagination},
+      listTotal:0,
+      list:[],
+      listColumns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo', width: 150 },
+        { title: '鍥惧彿', dataIndex: 'drawingNo', key: 'drawingNo' },
+        { title: '灏哄', dataIndex: 'materialSpec', key: 'materialSpec', width: 150 },
+        { title: '搴撳尯', dataIndex: 'areaName', key: 'areaName', width: 120 },
+        { title: '搴撲綅', dataIndex: 'placeCode', key: 'placeCode', width: 150 },
+        { title: '鎵樼洏鍙�', dataIndex: 'containerCode', key: 'containerCode', width: 120 },
+        { title: '鏁伴噺', dataIndex: 'stockNumber', key: 'stockNumber', width: 100 }
+      ],
+      selectedRowKeys:[],
+      choosen:[],
+      choosenColumns:[
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo', width: 150 },
+        { title: '鍥惧彿', dataIndex: 'drawingNo', key: 'drawingNo' },
+        { title: '灏哄', dataIndex: 'materialSpec', key: 'materialSpec', width: 150 },
+        { title: '搴撳尯', dataIndex: 'areaName', key: 'areaName', width: 120 },
+        { title: '搴撲綅', dataIndex: 'placeCode', key: 'placeCode', width: 150 },
+        { title: '鎵樼洏鍙�', dataIndex: 'containerCode', key: 'containerCode', width: 120 },
+        { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+      ],
+      showType:1,   //1鏄剧ず鏌ヨ椤甸潰锛� 2鏄剧ず宸查�夋暟鎹�
+      th1:0,
+      th2:0
+    }
+  },
+  created(){
+    this.innerVisible = this.visible
+    this.types = this.$options.filters['dictData']('material_type')
+  },
+  watch:{
+    visible(newVal){
+      if (newVal!==this.innerVisible) {
+        this.innerVisible = newVal
+      }
+    },
+    innerVisible(newVal,oldVal){
+      if (newVal!==this.visible) {
+        this.$emit('update:visible',newVal)
+      }
+      if (newVal!==oldVal) {
+        if (newVal) {
+          this.init()
+        }
+      }
+    }
+  },
+  methods:{
+    init(){
+      this.$nextTick(() => {
+        let h = this.$refs.listWrapper.clientHeight
+        this.th1 = h - 120
+        this.th2= h - 60
+        this.resetQuery()
+      });
+    },
+    handleSubmit(){
+      this.$emit('callback',this.choosen)
+      this.handleCancel()
+    },
+    handleCancel(){
+      this.innerVisible = false;
+      this.showType = 1
+      this.list = []
+      this.choosen = []
+      this.loading = false
+      this.query = {...defaultQuery}
+      this.queried = {...pagination}
+    },
+    onQuery(){
+      this.newQuery()
+    },
+    onReset(){
+      this.resetQuery()
+    },
+    resetQuery(){
+      this.query = {...defaultQuery}
+      this.newQuery()
+    },
+    newQuery(){
+      this.queried = {...this.query,...pagination}
+      this.queryChooseDataSource()
+    },
+    queryChooseDataSource(){
+      this.loading = true;
+      QueryMaterials(this.queried).then((d)=>{
+        this.list = d.data.rows || []
+        this.listTotal = d.data.totalRows || 0
+        this.setSelectedRowKeys()
+        this.loading = false;
+      }).catch(()=>{
+        this.loading = false;
+      })
+    },
+    rowSelectionsChange(selectedRowKeys, selectedRows){
+      let reduces = [], adds = []
+      /* 璁$畻闇�瑕佽绉诲嚭choosen鐨勫唴瀹� */
+      this.selectedRowKeys.forEach((val)=>{
+        let f1 = false;
+        for (let i=0;i<selectedRowKeys.length;i++) {
+          if (selectedRowKeys[i] === val) {
+            f1 = true;
+            break;
+          }
+        }
+        if (!f1) {
+          reduces.push(val)
+        }
+      })
+      /* 璁$畻闇�瑕佽鍔犲叆choosen鐨勫唴瀹� */
+      selectedRowKeys.forEach((val)=>{
+        let f2 = false;
+        for (let i=0;i<this.choosen.length;i++) {
+          if (this.choosen[i].id === val) {
+            f2 = true;
+            break;
+          }
+        }
+        if (!f2) {
+          adds.push(val)
+        }
+      })
+      /* 鎵ц瀹為檯鏁版嵁澶勭悊锛屽厛鍑忓悗鍔狅紝鍑忓皯澶勭悊鏃堕棿 */
+      this.selectedRowKeys = selectedRowKeys
+      this.reduceChoosen(reduces)
+      this.addChosen(adds)
+    },
+    chooseTablePageChange(pagination){
+      this.queried.PageNo = pagination.current
+      this.queryChooseDataSource()
+    },
+    reduceChoosen(arr){
+      arr.forEach((val)=>{
+        let reduceIndex = -1;
+        for (let i=0;this.choosen.length;i++) {
+          if (this.choosen[i].id === val) {
+            reduceIndex = i
+            break;
+          }
+        }
+        if (reduceIndex>=0) {
+          this.choosen.splice(reduceIndex,1)
+        }
+      })
+    },
+    cancelChoosen(index){
+      this.choosen.splice(index,1)
+    },
+    addChosen(arr){
+      arr.forEach((val)=>{
+        for (let i=0;this.list.length;i++) {
+          if (this.list[i].id === val) {
+            let obj = {...this.list[i]}
+            this.choosen.push(obj)
+            break;
+          }
+        }
+      })
+    },
+    setSelectedRowKeys(){
+      let arr = []
+      this.choosen.forEach((item)=>{
+        for (let i=0;i<this.list.length;i++) {
+          if (this.list[i].id === item.id) {
+            arr.push(item.id)
+            break;
+          }
+        }
+      })
+      this.selectedRowKeys = arr
+    },
+    changeShowType(){
+      if (this.showType===1) {
+        this.showType = 2
+      } else {
+        this.showType = 1
+        this.setSelectedRowKeys()
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.ex-warehouse1-choose-modal-content{
+  height: 70vh;
+  display: flex;
+  flex-direction: column;
+  .choose-bar{
+    flex-shrink: 0;
+    padding: 8px 4px;
+    display: flex;
+    .choose-form-view{
+      flex-grow: 1;
+    }
+    .choose-btns-view{
+      flex-shrink: 0;
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+    }
+  }
+  .table-box{
+    flex-grow: 1;
+    padding: 0 16px;
+    overflow: auto;
+  }
+  .ant-form-inline{
+    .ant-form-item {
+      margin-right: 0;
+      width: 100%;
+    }
+  } 
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/index.vue
new file mode 100644
index 0000000..0a4f60d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/index.vue
@@ -0,0 +1,265 @@
+<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('LesTakematerials:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁鍙�">
+                <a-input v-model="queryParam.OrderNo" allow-clear placeholder="璇疯緭鍏�..."/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.status" placeholder="璇烽�夋嫨鐘舵��">
+                  <a-select-option v-for="(item,index) in statusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <!-- <a-col :md="8" :sm="24">
+              <a-form-item label="璁″垝鍙�">
+                <a-input v-model="queryParam.planNo" allow-clear placeholder="璇疯緭鍏ヨ鍒掑彿"/>
+              </a-form-item>
+            </a-col> -->
+            <!-- <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍙枡绔欑偣">
+                  <a-input v-model="queryParam.takeMaterialsSite" allow-clear placeholder="璇疯緭鍏ュ彨鏂欑珯鐐�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐝粍">
+                  <a-input v-model="queryParam.teamName" allow-clear placeholder="璇疯緭鍏ョ彮缁�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡鍚嶇О">
+                  <a-input v-model="queryParam.materialName" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡绫诲瀷">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.materialType" placeholder="璇烽�夋嫨鐗╂枡绫诲瀷">
+                    <a-select-option v-for="(item,index) in materialTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="瀵嗗害">
+                  <a-input v-model="queryParam.density" allow-clear placeholder="璇疯緭鍏ュ瘑搴�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="灏哄">
+                  <a-input v-model="queryParam.specifications" allow-clear placeholder="璇疯緭鍏ュ昂瀵�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡鎵规">
+                  <a-input v-model="queryParam.materialBatch" allow-clear placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎵樼洏鍙�">
+                  <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樺彿"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.status" placeholder="璇烽�夋嫨鐘舵��">
+                    <a-select-option v-for="(item,index) in statusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>            
+            </template> -->
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <!-- <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a> -->
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+      >
+        <template class="table-operator" slot="operator" v-if="hasPerm('LesTakematerials:add')" >
+          <a-button type="primary" v-if="hasPerm('LesTakematerials:add')" icon="plus" @click="$refs.addForm.add()">鏂板鍙枡</a-button>
+        </template>
+        <span slot="orderStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text===2?'#0000ff':(text===3?'#008000':(text===4?'#ffd700':'gray'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="action" slot-scope="text, record">
+          <a :class="[(record.orderStatus===1||record.orderStatus===4)?'':'disabled']" style="margin-right:10px;" @click="onEdit(record)">缂栬緫</a>
+          <a-dropdown>
+            <a class="ant-dropdown-link" @click="e => e.preventDefault()">鏇村...</a>
+            <a-menu slot="overlay">
+              <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" style="margin-right:10px;" @click="onDistribute(record)">涓嬪彂</a></a-menu-item>
+              <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" @click="onDel(record)">鍒犻櫎</a></a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+      </s-table>
+      
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" />
+      
+      <add-form ref="addForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { CncTakeMaterialsPage, CncTakeMaterialsDelete, Distribute } from '@/api/modular/main/ExWarehouseManage1'
+  import addForm from './addForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatus',
+            scopedSlots: { customRender: 'orderStatusscopedSlots' }
+          },
+          {
+            title: '鍗曟嵁鎬绘暟閲�',
+            align: 'center',
+            dataIndex: 'orderQuantityTotal'
+          },
+          {
+            title: '鍙枡绔欑偣',
+            align: 'center',
+            dataIndex: 'stationName'
+          },
+          {
+            title: '鍒涘缓鏃堕棿',
+            align: 'center',
+            dataIndex: 'createdTime'
+          },
+          {
+            title: '鍒涘缓浜�',
+            align: 'center',
+            dataIndex: 'createdUserName'
+          },
+          {
+            title: '鎿嶄綔',
+            width: '120px',
+            align: 'center',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return CncTakeMaterialsPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0])
+            }
+            return res.data
+          })
+        },
+        materialTypeData: [],
+        statusData: [],
+        infoId:null,
+        infoOrderNo:''
+      }
+    },
+    created () {
+      const statusOption = this.$options
+      this.statusData = statusOption.filters['dictData']('order_status')
+    },
+    methods: {
+      onViewDetail(obj){
+        if (this.infoId===obj.id) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      onEdit(){
+        
+      },
+      onDistribute(obj){
+        if (obj.orderStatus!==1&&obj.orderStatus!==4) return false
+        this.$confirm({
+          title: '绯荤粺鎻愮ず',
+          content: '鎮ㄥ皢瑕佽繘琛屼笅鍙戜换鍔$殑鎿嶄綔锛岀‘璁よ缁х画鍢涳紵',
+          okText:'纭',
+          cancelText:'鍙栨秷',
+          onOk:()=>{
+            this.dealDistribute([obj.id],(f)=>{
+              if (f) {
+                this.$message.success('鎿嶄綔鎴愬姛')
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      onDel(){
+        
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      dealDistribute(ids,callback){
+        this.$loading.show()
+        Distribute(ids).then(()=>{
+          this.$loading.hide()
+          this.$refs.table.refresh()
+          callback && callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback && callback(false)
+        })
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/infoBlock.vue
new file mode 100644
index 0000000..3300202
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/infoBlock.vue
@@ -0,0 +1,142 @@
+<template>
+  <div class="ex-warehouse1-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <template slot="statusSlots" slot-scope="text,record">
+        <a-tag :color="text==='瀹屾垚'?'#008000':(
+          text==='鎵ц涓�'?'#1e90ff':(
+            text==='鍙栨秷'?'#556b2f':(
+              text==='鏆傚仠'?'#8b0000':(
+                text==='鎾ゅ洖'?'#ff00ff':'gray'
+              )
+            )
+          )
+        )">{{text}}</a-tag>
+      </template>
+      <template slot="action" slot-scope="text, record">
+        <a @click="onDistribute(record)">涓嬪彂</a>
+      </template>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { CncTakeMaterialsDetailPage,DetailDistribute } from '@/api/modular/main/ExWarehouseManage1'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'exWarehouse1InfoBlock',
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鍥惧彿', align:'center', dataIndex: 'drawingNo', key: 'drawingNo' },
+        { title: '鍏ュ簱鏃堕棿', align: 'center', dataIndex: 'createdTime', width: 170},
+        { title: '浠诲姟鐘舵��', align:'center', dataIndex: 'taskStatusName', scopedSlots: { customRender: 'statusSlots' }, width: 150 },
+        { title: '鎿嶄綔', width: '80px', align: 'center', dataIndex: 'action', scopedSlots: { customRender: 'action' } }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.OrderId = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return CncTakeMaterialsDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+    onDistribute(obj){
+      this.$confirm({
+        title: '绯荤粺鎻愮ず',
+        content: '鎮ㄥ皢瑕佽繘琛屼笅鍙戠殑鎿嶄綔锛岀‘璁よ缁х画鍢涳紵',
+        okText:'纭',
+        cancelText:'鍙栨秷',
+        onOk:()=>{
+          this.dealDistribute(obj.id,(f)=>{
+            if (f) {
+              this.$message.success('鎿嶄綔鎴愬姛')
+              this.$refs.table.refresh()
+            }
+          })
+        }
+      });
+    },
+    dealDistribute(id,callback){
+      this.$loading.show()
+      DetailDistribute(id).then(()=>{
+        this.$loading.hide()
+        callback && callback(true)
+      }).catch(()=>{
+        this.$loading.hide()
+        callback && callback(false)
+      })
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.ex-warehouse1-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAccessDetails/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAccessDetails/index.vue
new file mode 100644
index 0000000..bfa139c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAccessDetails/index.vue
@@ -0,0 +1,275 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('View_AccessDetails:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鎵规">
+                <a-input v-model="queryParam.MaterialBatch" allow-clear placeholder="璇疯緭鍏ユ壒娆�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐗╂枡缂栧彿">
+                <a-input v-model="queryParam.MaterialNo" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="瀵嗗害">
+                  <a-input v-model="queryParam.MaterialDensity" allow-clear placeholder="璇疯緭鍏ュ瘑搴�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠诲姟鍙�">
+                  <a-input v-model="queryParam.taskno" allow-clear placeholder="璇疯緭鍏ヤ换鍔″彿"/>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="浠诲姟鏂瑰紡">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskmodel" placeholder="璇烽�夋嫨浠诲姟鏂瑰紡">
+                    <a-select-option v-for="(item,index) in taskmodelData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠诲姟绫诲瀷">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.tasktype" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
+                    <a-select-option v-for="(item,index) in tasktypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="璧峰鐐�">
+                  <a-input v-model="queryParam.SourcePlace" allow-clear placeholder="璇疯緭鍏ヨ捣濮嬬偣"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩爣鐐�">
+                  <a-input v-model="queryParam.ToPlace" allow-clear placeholder="璇疯緭鍏ョ洰鏍囩偣"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍒涘缓鏃堕棿">
+                  <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+                </a-form-item>
+              </a-col>
+            </template>
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        row-key="id"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('View_AccessDetails:add')" >
+          <!-- <a-button type="primary" v-if="hasPerm('View_AccessDetails:add')" icon="plus" @click="$refs.addForm.add()">鏂板鍑哄叆搴撹褰�</a-button> -->
+        </template>
+        <span slot="taskmodelscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'#2db7f5':'#87d068'">{{ 'task_model' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="tasktypescopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'#2db7f5':(text===2?'#87d068':'#108ee9')">{{ 'task_type' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="taskstatusscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'#2db7f5':(text===2?'#108ee9':'#87d068')">{{ 'task_status' | dictType(text) }}</a-tag>
+        </span>
+        <!-- <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('FoamingAccessDetails:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('FoamingAccessDetails:edit') & hasPerm('View_AccessDetails:delete')"/>
+          <a-popconfirm v-if="hasPerm('FoamingAccessDetails:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => FoamingAccessDetailsDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span> -->
+        <template class="table-operator" slot="operator" v-if="hasPerm('FoamingAccessDetails:add')" >
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('FoamingAccessDetails:exportExcel')" icon="download" @click="FoamingAgvTaskToExcel()">
+            瀵煎嚭
+          </a-button>
+         </template>
+      </s-table>
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { FoamingAccessDetailsPage, FoamingAccessDetailsDelete } from '@/api/modular/main/FoamingAccessDetailsManage'
+  export default {
+    components: {
+      STable
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '浠诲姟鍙�',
+            align: 'center',
+            dataIndex: 'taskNo'
+          },
+          {
+            title: '浠诲姟鏂瑰紡',
+            align: 'center',
+            dataIndex: 'taskModel',
+            scopedSlots: { customRender: 'taskmodelscopedSlots' }
+          },
+          {
+            title: '浠诲姟绫诲瀷',
+            align: 'center',
+            dataIndex: 'taskType',
+            scopedSlots: { customRender: 'tasktypescopedSlots' }
+          },
+          {
+            title: '浠诲姟鐘舵��',
+            align: 'center',
+            dataIndex: 'taskStatus',
+            scopedSlots: { customRender: 'taskstatusscopedSlots' }
+          },
+          {
+            title: '浠诲姟浼樺厛绾�',
+            align: 'center',
+            dataIndex: 'taskLevel'
+          },
+          {
+            title: '璧峰鐐�',
+            align: 'center',
+            dataIndex: 'sourcePlace'
+          },
+          {
+            title: '鐩爣鐐�',
+            align: 'center',
+            dataIndex: 'toPlace'
+          },
+          {
+            title: '鐗╂枡缂栧彿',
+            align: 'center',
+            dataIndex: 'materialNo'
+          },
+          {
+            title: '鐗╂枡鎵规',
+            align: 'center',
+            dataIndex: 'batch'
+          },
+		  {
+		    title: '瀵嗗害',
+		    align: 'center',
+		    dataIndex: 'materialDensity'
+		  },
+          {
+            title: '闀�',
+            align: 'center',
+            dataIndex: 'long'
+          },
+          {
+            title: '楂�',
+            align: 'center',
+            dataIndex: 'high'
+          },
+		  {
+		    title: '瀹�',
+		    align: 'center',
+		    dataIndex: 'wide'
+		  },
+          {
+            title: '鍒涘缓鏃堕棿',
+            align: 'center',
+            dataIndex: 'createdTime'
+          },
+          {
+            title: '鏇存柊鏃堕棿',
+            align: 'center',
+            dataIndex: 'updatedTime'
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          let params = {...this.queryParam}
+          if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+            params.SearchBeginTime = params.dateRange[0] + ' 00:00:00'
+            params.SearchEndTime = params.dateRange[1] + ' 23:59:59'
+            delete params.dateRange
+          } else {
+            delete params.dateRange
+            delete params.SearchBeginTime
+            delete params.SearchEndTime
+          }
+          return FoamingAccessDetailsPage(Object.assign(parameter, params)).then((res) => {
+            return res.data
+          })
+        },
+        taskmodelData: [],
+        tasktypeData: [],
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      // if (this.hasPerm('View_AccessDetails:edit') || this.hasPerm('View_AccessDetails:delete')) {
+      //   this.columns.push({
+      //     title: '鎿嶄綔',
+      //     width: '150px',
+      //     dataIndex: 'action',
+      //     scopedSlots: { customRender: 'action' }
+      //   })
+      // }
+      const __Option = this.$options
+      this.taskmodelData = __Option.filters['dictData']('task_model')
+      this.tasktypeData = __Option.filters['dictData']('task_type')
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      FoamingAccessDetailsDelete (record) {
+        FoamingAccessDetailsDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAgvTask/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAgvTask/index.vue
new file mode 100644
index 0000000..2cd06c6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAgvTask/index.vue
@@ -0,0 +1,186 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+      <div class="table-page-search-wrapper" v-if="hasPerm('FoamingAgvTask:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="浠诲姟绫诲瀷">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskType" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
+                  <a-select-option v-for="(item,index) in agvTaskTypeList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col> 
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.agvState" placeholder="璇烽�夋嫨鐘舵��">
+                  <a-select-option v-for="(item,index) in agvTaskStatusList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="褰撳墠鎵ц鐨勪换鍔�">
+                  <a-input v-model="queryParam.transportOrder" allow-clear placeholder="璇疯緭鍏ュ綋鍓嶆墽琛岀殑浠诲姟"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="涓讳换鍔″彿">
+                  <a-input v-model="queryParam.taskNo" allow-clear placeholder="璇疯緭鍏ヤ富浠诲姟鍙�"/>
+                </a-form-item>
+              </a-col>
+              <!-- <a-col :md="8" :sm="24">
+                <a-form-item label="瀹瑰櫒缂栧彿">
+                  <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ュ鍣ㄧ紪鍙�"/>
+                </a-form-item>
+              </a-col> -->
+            </template>
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+      >
+        <span slot="action" slot-scope="text, record">
+          <a :class="[record.agvState==='瀹屾垚'?'disabled':'']" style="margin-right:10px;" @click="onForceComplete(record)">瀹屾垚</a>
+        </span>
+      </s-table>
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { FoamingAgvTaskPage, FoamingAgvTaskDelete, FoamingAgvTaskForceComplete } from '@/api/modular/main/FoamingAgvTaskManage'
+  export default {
+    components: {
+      STable
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '浠诲姟绫诲瀷',
+            align: 'center',
+            dataIndex: 'taskType'
+          },
+          {
+            title: '鐘舵��',
+            align: 'center',
+            dataIndex: 'agvState'
+          },
+          {
+            title: '璧峰浣嶇疆',
+            align: 'center',
+            dataIndex: 'startPlace'
+          },
+          {
+            title: '缁撴潫浣嶇疆',
+            align: 'center',
+            dataIndex: 'endPlace'
+          },
+          {
+            title: '褰撳墠鎵ц鐨勪换鍔�',
+            align: 'center',
+            dataIndex: 'transportOrder'
+          },
+          {
+            title: '涓讳换鍔″彿',
+            align: 'center',
+            dataIndex: 'taskNo'
+          },
+          {
+            title: '鎿嶄綔',
+            width: '60px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return FoamingAgvTaskPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        taskTypeData: [],
+        agvStateData: [],
+        //workShopTypeData: [],
+        agvTaskTypeList: [],
+        agvTaskStatusList: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      const _agvTaskTypeOption = this.$options
+      this.agvTaskTypeList = _agvTaskTypeOption.filters['dictData']('agv_task_type')
+      const _agvTaskStatusOption = this.$options
+      this.agvTaskStatusList = _agvTaskStatusOption.filters['dictData']('agv_task_status')
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onForceComplete(obj){
+        if (obj.agvState==='瀹屾垚') return false
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屽己鍒跺畬鎴愭搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleForceComplete(obj.id,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      handleForceComplete(id,callback){
+        this.$loading.show()
+        FoamingAgvTaskForceComplete(id).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/chooseMaterialsModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/chooseMaterialsModal.vue
new file mode 100644
index 0000000..ff1350f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/chooseMaterialsModal.vue
@@ -0,0 +1,427 @@
+<template>
+  <a-modal
+    title="鍑哄簱鐗╂枡閫夋嫨"
+    width="90vw"
+    :visible="visible"
+    dialogClass="zero-modal"
+    :zIndex="1001"
+    @cancel="handleCancel">
+    <a-spin :spinning="loading">
+      <div class="shk-issues-choose-materials-modal">
+        <div class="search-bar">
+          <div class="search-form-item">
+            <div class="label">鎵规锛�</div>
+            <div class="content">
+              <a-input placeholder="璇疯緭鍏�..." allow-clear v-model="query.Batch" />
+            </div>
+          </div>
+         <div class="search-form-item">
+           <div class="label">宸烽亾锛�</div>
+           <div class="content">
+             <a-select style="width: 100%" mode="multiple" placeholder="璇烽�夋嫨..." allow-clear v-model="query.aisles">
+               <a-select-option v-for="(item,index) in selectOptions.aisles" :key="'aisle-sel-'+index" :value="item">{{item}}</a-select-option>
+             </a-select>
+           </div>
+         </div>
+          <div class="search-form-item">
+            <div class="label">鍏ュ簱鏃堕棿锛�</div>
+            <div class="content">
+              <a-range-picker v-model="query.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+            </div>
+          </div>
+          <div class="search-form-item">
+            <div class="label">鐗╂枡缂栧彿锛�</div>
+            <div class="content">
+              <a-input placeholder="璇疯緭鍏�..." allow-clear v-model="query.MaterialNo" />
+            </div>
+          </div>
+          <div class="search-form-item">
+            <div class="label">瀵嗗害锛�</div>
+            <div class="content">
+              <a-input placeholder="璇疯緭鍏�..." allow-clear v-model="query.MaterialDensity" />
+            </div>
+          </div>
+          <div class="bar-btns">
+            <a-button type="primary" @click="onQuery">鏌ヨ</a-button>
+            <a-button @click="onReset" style="margin-right:0;">閲嶇疆</a-button>
+          </div>
+        </div>
+        
+        <div class="result-table-view">
+          <div class="more-list-head">
+            <div class="more-list-padding">
+              <div class="more-list-row">
+                <div class="more-list-cell" v-for="(item,index) in columns" :key="'more-list-head-cell-'+index" :style="{
+                  width:item.grow?'1px':(item.width?item.width:'auto'),
+                  flexGrow:item.grow?item.grow:'initial',
+                  flexShrink:item.grow?'initial':'0',
+                  justifyContent:item.align?item.align:'center',
+                  cursor:(typeof item.sort === 'number')?'pointer':'auto'
+                }" @click.stop="changeTableSort(item,index)">
+                  <a-checkbox v-if="item.type==='checkbox'" :indeterminate="indeterminate" :checked="checkAll"  @change="onChangeAllChecked" />
+                  <template v-else>
+                    {{item.name}}<up-down-sort style="margin-left:8px;" :sort="item.sort" v-if="typeof item.sort === 'number'" />
+                  </template>
+                </div>
+              </div>
+            </div>
+          </div>
+          <div class="more-list-body" @scroll="handleScroll" :key="listKey">
+            <div class="more-list-padding">
+              <div class="more-list-row" v-for="(itema,indexa) in list" :key="'more-list-row-'+indexa">
+                <div class="more-list-cell" v-for="(itemb,indexb) in columns" :key="'more-list-body-cell-'+indexb" :style="{
+                  width:itemb.grow?'1px':(itemb.width?itemb.width:'auto'),
+                  flexGrow:itemb.grow?itemb.grow:'initial',
+                  flexShrink:itemb.grow?'initial':'0',
+                  justifyContent:itemb.align?itemb.align:'center'
+                }">
+                  <a-checkbox v-if="itemb.type==='checkbox'" :checked="itema.checked" @change="onChangeChecked($event,itema,indexa)" />
+                  <template v-else-if="itemb.type==='index'">{{indexa+1}}</template>
+                  <template v-else-if="itemb.type==='spec'">{{`${itema.long}*${itema.wide}*${itema.high}`}}</template>
+                  <template v-else>{{itema[itemb.key]}}</template>
+                </div>
+              </div>
+            </div>
+          </div>
+          
+        </div>
+      </div>
+    </a-spin>
+    
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="submit" type="primary" @click="handleSubmit" :disabled="choosen.length<=0">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import { FoamingChuKuOrderStockPage } from '@/api/modular/main/FoamingChuKuOrderManage'
+import { WmsPlaceGetFAisles } from '@/api/modular/main/WmsPlaceManage'
+import UpDownSort from '@/components/UpDownSort'
+const defaultQuery = {
+  MaterialNo:'',
+  Batch:'',
+  Aisle:'',
+  MaterialDensity:'',
+  dateRange:[],
+  aisles:[],
+}
+const pagination = {PageNo:1,PageSize:20}
+export default {
+  name:'shkIssuesChooseMaterialsModal',
+  emits:['update:visible','callback'],
+  components:{UpDownSort},
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    }
+  },
+  data(){
+    return {
+      loading:false,
+      selectOptions:{
+        aisles:[]
+      },
+      list:[],
+      query:{...defaultQuery},
+      queried:{...pagination},
+      columns:[
+        { type:'checkbox', width:'50px' },
+        { type:'index', name:'搴忓彿', width:'50px' },
+        { name:'宸烽亾', key:'aisle', width:'80px', sort:2, sortName:'AisleSort' },
+        { name:'鐗╂枡缂栧彿', key:'materialNo', grow:2, sort:2, sortName:'MaterialNoSort' },
+        { name:'鎵规', key:'batch', grow:1, sort:2, sortName:'BatchSort' },
+        { name:'瀵嗗害', key:'materialDensity', grow:1, sort:2, sortName:'MaterialDensitySort' },
+        { type:'spec', name:'灏哄', grow:2, sort:2, sortName:'LongSort' },
+        { name:'搴撲綅鍙�', key:'placeCode', width:'140px', sort:2, sortName:'PlaceCodeSort' },
+        { name:'鍏ュ簱鏃堕棿', key:'createdTime', width:'170px', sort:2, sortName:'TimeSort' }
+      ],
+      sortColumnIndexs:[2,3,4,5,6,7,8],  //鍏佽鎺掑簭鐨勫垪搴忓彿锛屼笌columns鐨剆ort瀛楁鏄惁瀛樺湪瀵瑰簲
+      listKey:0,
+      scrollTop:0,
+      choosen:[],
+      indeterminate:false,
+      checkAll:false,
+      hasMore:true,
+      inLoading:false
+    }
+  },
+  watch:{
+    visible(newV,oldV){
+      if (newV!==oldV){
+        this.initShow()
+        this.handleClose()
+      }
+    }
+  },
+  methods:{
+    handleCancel(){
+      this.$emit('update:visible',false)
+    },
+    initShow(){
+      if (this.visible) {
+        this.getAislesSelectOptions()
+        this.reset()
+      }
+    },
+    handleClose(){
+      if (!this.visible) {
+        this.query = {...defaultQuery}
+        this.list = []
+        this.choosen = []
+        this.indexChoosen = []
+        this.scrollTop = 0
+        this.indeterminate = false
+        this.checkAll = false
+        this.hasMore = true
+        this.inLoading = false
+      }
+    },
+    handleSubmit(){
+      this.$emit('callback',this.choosen)
+      this.handleCancel()
+    },
+    onQuery(){
+      this.newList()
+    },
+    onReset(){
+      this.reset()
+    },
+    onTableChange(pagination){
+      if (pagination.current!==this.queried.PageNo) {
+        this.pageList(pagination.current)
+      }
+    },
+    reset(){
+      this.query = {...defaultQuery}
+      this.newList()
+    },
+    newList(){
+      let sortPorams = {}
+      this.columns.forEach((columnitem)=>{
+        if (typeof columnitem.sort === 'number') {
+          sortPorams[columnitem.sortName] = columnitem.sort
+        }
+      })
+      this.queried = {...this.query,...pagination,...sortPorams}
+      if ((this.queried.dateRange instanceof Array) && this.queried.dateRange.length===2) {
+        this.queried.SearchBeginTime = this.queried.dateRange[0] + ' 00:00:00'
+        this.queried.SearchEndTime = this.queried.dateRange[1] + ' 23:59:59'
+        delete this.queried.dateRange
+      } else {
+        delete this.queried.dateRange
+        delete this.queried.SearchBeginTime
+        delete this.queried.SearchEndTime
+      }
+      if ((this.queried.aisles instanceof Array) && this.queried.aisles.length>0) {
+        this.queried.Aisle = this.queried.aisles.join(',')
+        delete this.queried.aisles
+      } else {
+        this.queried.Aisle = ''
+        delete this.queried.aisles
+      }
+      this.listKey = new Date().getTime()
+      this.hasMore = true
+      this.getList()
+    },
+    moreList(){
+      this.queried.PageNo++
+      this.getList()
+    },
+    getList(){
+      this.loading = true
+      this.inLoading = true
+      FoamingChuKuOrderStockPage(this.queried).then(res=>{
+        this.addList(res.data)
+        this.$nextTick(()=>{
+          this.inLoading = false
+        })
+        this.loading = false
+      }).catch(()=>{
+        this.loading = false
+      })
+    },
+    changeTableSort(obj,index){
+      if (typeof obj.sort !== 'number') return false;
+      if (obj.sort===1) {
+        obj.sort = 2
+        this.newList()
+      } else {
+        this.sortColumnIndexs.forEach((item)=>{
+          if (item===index) {
+            if (obj.sort===0) {
+              this.columns[item].sort = 1
+            } else {
+              this.columns[item].sort = 0
+            }
+            this.newList()
+          } else {
+            if (this.columns[item].sort!==2) {
+              this.columns[item].sort = 2
+              this.newList()
+            }
+          }
+        })
+      }
+    },
+    addList(resData){
+      let arr = resData.rows || []
+      if (this.queried.PageNo === 1) {
+        this.list = arr
+        this.checkAll = false
+        this.indeterminate = false
+        this.choosen = []
+        this.indexChoosen = []
+      }  else {
+        arr.forEach((item)=>{
+          this.list.push(item)
+        })
+        this.setAllCheckStatus()
+      }
+      if (this.queried.PageNo >= resData.totalPage) {
+        this.hasMore = false
+      }
+    },
+    handleScroll(e){
+      let _prevTop = this.scrollTop
+      this.scrollTop = e.target.scrollTop
+      if (!this.hasMore || this.inLoading || this.scrollTop<=_prevTop) {
+        return false
+      }
+      if ((e.target.scrollHeight -  e.target.clientHeight - e.target.scrollTop)<=1) {
+        this.moreList()
+      }
+    },
+    onChangeChecked(e,obj,index){
+      obj.checked = e.target.checked
+      this.$set(this.list,index,obj)
+      this.setAllCheckStatus()
+      if (obj.checked) {
+        this.choosen.push(obj)
+        this.indexChoosen.push(index)
+      } else {
+        let cIndex =  this.indexChoosen.indexOf(index);
+        if (cIndex>=0){
+          this.indexChoosen.splice(cIndex,1)
+          this.choosen.splice(cIndex,1)
+        }
+      }
+    },
+    onChangeAllChecked(){
+      if (this.checkAll) {
+        this.checkAll = false
+      } else {
+        this.checkAll = true
+      }
+      this.indeterminate = false
+      this.list.forEach((item)=>{
+        item.checked = this.checkAll
+      })
+      if (this.checkAll) {
+        this.choosen = [...this.list]
+        this.indexChoosen = this.list.map((itemx,indexx)=>{
+          return indexx
+        })
+      } else {
+        this.choosen = []
+        this.indexChoosen = []
+      }
+    },
+    setAllCheckStatus(){
+      let c = 0 , n = this.list.length;
+      this.list.forEach((item)=>{
+        if (item.checked) {
+          c++
+        }
+      })
+      if (c===0) {
+        this.checkAll = false
+        this.indeterminate = false
+      } else if (c===n) {
+        this.checkAll = true
+        this.indeterminate = false
+      } else {
+        this.checkAll = false
+        this.indeterminate = true
+      }
+    },
+    getAislesSelectOptions(){
+      if (this.selectOptions.aisles.length<=0) {
+        WmsPlaceGetFAisles().then((d)=>{
+          this.selectOptions.aisles = d.data || []
+        }).catch(()=>{})
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.shk-issues-choose-materials-modal{
+  height: 65vh;
+  display: flex;
+  flex-direction: column;
+  .search-bar{
+    display: flex;
+    padding: 16px 16px 0 16px;
+    flex-shrink: 0;
+    flex-wrap: wrap;
+    .search-form-item{
+      width: 33.33%;
+      flex-shrink: 0;
+      display: flex;
+      margin-bottom: 16px;
+      &>.label{
+        width: 78px;
+        flex-shrink: 0;
+        text-align: right;
+        padding-top: 4px;
+      }
+      &>.content{
+        width: 1px;
+        flex-grow: 1;
+      }
+    }
+    .bar-btns{
+      padding-left:16px;
+    }
+  }
+  .result-table-view{
+    flex-grow: 1;
+    height: 1px;
+    display: flex;
+    flex-direction: column;
+    box-sizing: border-box;
+    padding-bottom: 12px;
+    .more-list-head{
+      flex-shrink: 0;
+      .more-list-cell{
+        background-color:#fafafa;
+      }
+    }
+    .more-list-body{
+      height: 1px;
+      flex-grow: 1;
+      overflow: auto;
+    }
+    .more-list-padding{
+      padding: 0 16px;
+    }
+    .more-list-row{
+      box-sizing: border-box;
+      width: 100%;
+      display: flex;
+      border-bottom: 1px solid #e8e8e8;
+      .more-list-cell{
+        display: flex;
+        align-items: center;
+        padding: 6px 8px;
+        word-break:break-all;
+        word-wrap:break-word; 
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/editForm.vue
new file mode 100644
index 0000000..83117b8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/editForm.vue
@@ -0,0 +1,383 @@
+锘�<template>
+  <a-modal
+    :title="title"
+    width="95vw"
+    :visible="visible"
+    dialogClass="zero-modal"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <div class="issue-notes-modal-content">
+        
+        <div class="edit-form">
+          <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <!-- #############  -->
+            <a-row :gutter="16">
+              <a-col :span="12">
+                <a-form-item label="鍗曟嵁缂栧彿">
+                  <a-input disabled v-decorator="['orderNo',{rules:[{required:true,message:'鍗曟嵁缂栧彿涓嶅彲涓虹┖锛�'}]}]">
+                    <a-icon slot="addonAfter" @click="refreshOrderNo" type="sync" />
+                  </a-input>
+                </a-form-item>
+              </a-col>
+              <a-col :span="12">
+                <a-form-item label="鍑哄簱鍗曠被鍒�">
+                  <a-select style="width: 100%" placeholder="璇烽�夋嫨鍑哄簱鍗曠被鍒�" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍑哄簱鍗曠被鍒紒' }]}]">
+                    <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+            </a-row>
+            <a-row :gutter="16">
+              <a-col :span="12">
+                <a-form-item label="鍑哄簱鍙�">
+                  <a-select style="width: 100%" placeholder="璇烽�夋嫨鍑哄簱鍙�" v-decorator="['exitPort', {rules: [{required:true,message:'鍑哄簱鍙d笉鍙负绌猴紒'}]}]">
+                    <a-select-option v-for="(item,index) in preferredPortList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :span="12">
+                <a-form-item label="澶囨敞">
+                  <a-input placeholder="璇疯緭鍏ュ娉�" :max-length="30" v-decorator="['remarks']" />
+                </a-form-item>
+              </a-col>
+            </a-row>
+            <!-- #############  -->
+          </a-form>
+        </div>
+        
+        <div class="materials-table-top">
+           <a-button type="primary" icon="plus" @click="onOpenChooseModal">娣诲姞鐗╂枡</a-button>
+           <a-input placeholder="鐗╂枡缂栧彿/鎵规" v-model="keywords" style="display:inline-block;width:240px;"  />
+        </div>
+        
+        <div class="materials-table">
+          <div class="materials-table-head">
+            <div class="materials-table-padding">
+              <div class="materials-table-row">
+                <div class="materials-table-cell" v-for="(item,index) in columns" :key="'materials-table-head-cell-'+index" :style="{
+                  width:item.grow?'1px':(item.width?item.width:'auto'),
+                  flexGrow:item.grow?item.grow:'initial',
+                  flexShrink:item.grow?'initial':'0',
+                  justifyContent:item.align?item.align:'center'
+                }">
+                  <template>{{item.name}}</template>
+                </div>
+              </div>
+            </div>
+          </div>
+          <div class="materials-table-body">
+            <div class="materials-table-padding">
+              <a-empty v-if="showList.length<=0" />
+              <div v-else class="materials-table-row" v-for="(itema,indexa) in showList" :key="'materials-table-row-'+indexa">
+                <div class="materials-table-cell" v-for="(itemb,indexb) in columns" :key="'materials-table-body-cell-'+indexb" :style="{
+                  width:itemb.grow?'1px':(itemb.width?itemb.width:'auto'),
+                  flexGrow:itemb.grow?itemb.grow:'initial',
+                  flexShrink:itemb.grow?'initial':'0',
+                  justifyContent:itemb.align?itemb.align:'center'
+                }">
+                  <template v-if="itemb.type==='index'">{{indexa+1}}</template>
+                  <template v-else-if="itemb.type==='spec'">{{`${itema.long}*${itema.wide}*${itema.high}`}}</template>
+                  <template v-else-if="itemb.type==='action'">
+                    <a-button type="danger" icon="delete" size="small" @click="onCancelList(indexa,itema)">鍒犻櫎</a-button>
+                  </template>
+                  <template v-else>{{itema[itemb.key]}}</template>
+                </div>
+              </div>
+            </div>
+          </div>
+          
+        </div>
+      </div>
+      
+      <choose-materials-modal :visible.sync="chooseVisible" @callback="chooseCallback" />
+    </a-spin>
+    
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="submit" type="primary" :loading="confirmLoading" :disabled="list.length<=0" @click="handleSubmit">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+ 
+<script>
+  import chooseMaterialsModal from './chooseMaterialsModal.vue'
+  import { FoamingChuKuOrderDetailEdit, FoamingChuKuOrderAdd, FoamingChuKuOrderEdit, FoamingChuKuOrderGetNo } from '@/api/modular/main/FoamingChuKuOrderManage'
+  export default {
+    components:{chooseMaterialsModal},
+    emits:['callback'],
+    props:{
+      orderSubclassData:{
+        type:Array,
+        default:function(){
+          return []
+        }
+      },
+      preferredPortList:{
+        type:Array,
+        default:function(){
+          return []
+        }
+      }
+    },
+    data () {
+      return {
+        id:null,
+        type:'',
+        labelCol: {
+          span:24
+        },
+        wrapperCol: {
+          span:24
+        },
+        visible: false,
+        confirmLoading: false,
+        title:'',
+        form: this.$form.createForm(this),
+        list:[],
+        showList:[],
+        keywords:'',
+        columns:[
+          { type:'index', name:'搴忓彿', width:'50px' },
+          { name:'宸烽亾', key:'aisle', width:'70px' },
+          { name:'鐗╂枡缂栧彿', key:'materialNo', grow:2 },
+          { name:'鎵规', key:'batch', grow:1 },
+          { name:'瀵嗗害', key:'materialDensity', grow:1 },
+          { type:'spec', name:'灏哄', grow:2 },
+          { name:'搴撲綅鍙�', key:'placeCode', width:'140px' },
+          { name:'鍏ュ簱鏃堕棿', key:'createdTime', width:'170px' },
+          { type:'action', name:'鎿嶄綔', width:'80px' }
+        ],
+        rowkey:'materialNo',
+        chooseVisible:false
+      }
+    },
+    watch:{
+      keywords(newVal,oldVal) {
+        if (newVal!==oldVal) {
+          this.setShowList()
+        }
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      init (type,record) {
+        this.type = type;
+        this.visible = true
+        if (type==='add'){
+          this.title="鏂板鍑哄簱鍗�"
+          this.getOrderNo((str)=>{
+            if (str) {
+              let _initForm = {orderNo:str} 
+              this.$nextTick(()=>{
+                this.form.setFieldsValue(_initForm)
+              })
+            }
+          })
+        } else {
+          this.title="缂栬緫鍑哄簱鍗�"
+          this.initEdit(record)
+        }
+      },
+      initEdit(obj){
+        this.id = obj.id
+        this.$loading.show()
+        FoamingChuKuOrderDetailEdit({Id:this.id}).then((d)=>{
+          let _initForm = {
+            orderNo:d.data.orderNo,
+            exitPort:d.data.exitPort,
+            orderSubclass:d.data.orderSubclass,
+            remarks:d.data.remarks
+          } 
+          this.$nextTick(()=>{
+            this.form.setFieldsValue(_initForm)
+          })
+          this.list = d.data.wareFoamingOrderDetails
+          this.setShowList()
+          this.$loading.hide()
+        }).catch(()=>{
+          this.$loading.hide()
+        })
+      },
+      getOrderNo(callback){
+        this.$loading.show()
+        FoamingChuKuOrderGetNo().then((d)=>{
+          callback(d.data)
+          this.$loading.hide()
+        }).catch(()=>{
+          this.$loading.hide()
+        })
+      },
+      setShowList(){
+        if (this.keywords) {
+          let arr = []
+          this.list.forEach((item)=>{
+            if (item.materialNo.indexOf(this.keywords)>=0 || item.materialNo.indexOf(this.batch)>=0) {
+              arr.push(item)
+            }
+          })
+          this.showList = arr
+        } else {
+          this.showList = [...this.list]
+        }
+      },
+      onOpenChooseModal(){
+        this.chooseVisible = true
+      },
+      chooseCallback(arr){
+        let newArr = [], msg = ''
+        arr.forEach((item)=>{
+          let ch = this.checkHasMaterial(item)
+          if (ch) {
+            if (msg) msg += '锛�'
+            msg += ch
+          } else {
+            newArr.push(item)
+          }
+        })
+        if (msg) {
+          msg += '鐗╂枡宸叉坊鍔犺繃锛屼笉鍐嶉噸澶嶆坊鍔狅紒'
+          this.$warning({
+            title: '绯荤粺鎻愮ず',
+            content: msg
+          });
+        }
+        this.list = [].concat(this.list,newArr)
+        this.setShowList()
+      },
+      onCancelList(index,obj){
+        this.showList.splice(index,1)
+        let n = -1
+        for (let i=0;i<this.list.length;i++) {
+          if (obj[this.rowkey] === this.list[i][this.rowkey]) {
+            n = i
+            break
+          }
+        }
+        if (n>=0) {
+          this.list.splice(n,1)
+        }
+      },
+      /* 楠岃瘉鐗╂枡鏄惁宸茶娣诲姞杩囷紝鏄繑鍥炵墿鏂欑紪鍙凤紝鍚﹀垯杩斿洖绌哄瓧绗︿覆 */
+      checkHasMaterial(obj){
+        let res = ''
+        for (let i=0;i<this.list.length;i++) {
+          if (obj[this.rowkey] === this.list[i][this.rowkey]) {
+            res = obj[this.rowkey]
+            break;
+          }
+        }
+        return res
+      },
+      refreshOrderNo(){
+        if (this.type==='edit') return false;
+        this.getOrderNo((str)=>{
+          if (str) {
+            let _initForm = {orderNo:str} 
+            this.$nextTick(()=>{
+              this.form.setFieldsValue(_initForm)
+            })
+          }
+        })
+      },
+      handleSubmit () {
+       this.form.validateFields((errors, values) => {
+         if (!errors) {
+           this.$loading.show()
+           this.handleSubmitAjax(values,(f)=>{
+             this.$loading.hide()
+             if (f) {
+               this.$message.success('鎿嶄綔鎴愬姛锛�');
+               this.handleCancel()
+               this.$emit('callback')
+             }
+           })
+         }
+       })
+      },
+      handleSubmitAjax (params,callback){
+        if (this.type==='add') {
+          this.handleAddAjax(params,callback)
+        } else {
+          this.handleEditAjax(params,callback)
+        }
+      },
+      handleAddAjax(params,callback){
+        let _params = {...params}
+        _params.wareFoamingOrderDetails = this.list
+        FoamingChuKuOrderAdd(_params).then(()=>{
+          callback(true)
+        }).catch(()=>{
+          callback(false)
+        })
+      },
+      handleEditAjax(params,callback){
+        let _params = {...params}
+        _params.wareFoamingOrderDetails = this.list
+        _params.id = this.id;
+        FoamingChuKuOrderEdit(_params).then(()=>{
+          callback(true)
+        }).catch(()=>{
+          callback(false)
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.list = []
+        this.showList = []
+        this.keywords = ''
+        this.visible = false
+      }
+    }
+  }
+</script>
+<style lang="less" scoped>
+.issue-notes-modal-content{
+  height: 65vh;
+  display: flex;
+  flex-direction: column;
+  .edit-form,.materials-table-top{
+    flex-shrink: 0;
+  }
+  .edit-form{
+    padding: 20px 16px 0 16px;
+  }
+  .materials-table-top{
+    padding: 0 16px 8px 16px;
+  }
+  .materials-table{
+    height: 1px;
+    flex-grow: 1;
+    display: flex;
+    flex-direction: column;
+    box-sizing: border-box;
+    padding-bottom: 12px;
+    .materials-table-head{
+      flex-shrink: 0;
+      .materials-table-cell{
+        background-color:#fafafa;
+      }
+    }
+    .materials-table-body{
+      height: 1px;
+      flex-grow: 1;
+      overflow: auto;
+    }
+    .materials-table-padding{
+      padding: 0 16px;
+    }
+    .materials-table-row{
+      box-sizing: border-box;
+      width: 100%;
+      display: flex;
+      border-bottom: 1px solid #e8e8e8;
+      .materials-table-cell{
+        display: flex;
+        align-items: center;
+        padding: 6px 8px;
+        word-break:break-all;
+        word-wrap:break-word; 
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/index.vue
new file mode 100644
index 0000000..4e9cd67
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/index.vue
@@ -0,0 +1,424 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+      <div class="table-page-search-wrapper" v-if="hasPerm('FoamingChuKuOrder:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鎵规">
+                <a-input v-model="queryParam.batch" allow-clear placeholder="璇疯緭鍏ユ壒娆�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瀵嗗害">
+                <a-input v-model="queryParam.MaterialDensity" allow-clear placeholder="璇疯緭鍏ュ瘑搴�"/>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁缂栧彿">
+                  <a-input v-model="queryParam.OrderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍑哄簱鍗曠被鍨�">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.OrderSubclass" placeholder="璇烽�夋嫨鍑哄簱鍗曠被鍨�">
+                    <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍑哄簱鍙�">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.PreferredPort" placeholder="璇烽�夋嫨鍑哄簱鍙�">
+                    <a-select-option v-for="(item,index) in preferredPortList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                    <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>  
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍒涘缓鏃堕棿">
+                  <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+                </a-form-item>
+              </a-col>
+            </template>
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" >
+          <a-button type="primary" v-if="hasPerm('FoamingChuKuOrder:add')" icon="plus" @click="$refs.form.init('add')">鏂板</a-button>
+          <!-- <a-button type="danger" icon="step-backward" :disabled="!selectWithdraws.length" @click="onWithdraw">鎾ゅ洖</a-button> -->
+          <a-button type="danger" icon="step-forward" :disabled="!selectDistributes.length" @click="onMulDistribute">涓嬪彂</a-button>
+          <a-button type="danger" v-if="hasPerm('FoamingChuKuOrder:delete')" icon="delete" :disabled="!selectDels.length" @click="onMulDel">鍒犻櫎</a-button>
+        </template>
+        <span slot="orderStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text===2?'#0000ff':(text===3?'#008000':(text===4?'#ffd700':'gray'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="action" slot-scope="text, record">
+          <a :class="[(hasPerm('FoamingChuKuOrder:edit') && (record.orderStatus===1||record.orderStatus===4))?'':'disabled']" style="margin-right:10px;" @click="onEdit(record)">缂栬緫</a>
+          <a-dropdown>
+            <a class="ant-dropdown-link" @click="e => e.preventDefault()">鏇村...</a>
+            <a-menu slot="overlay">
+              <a-menu-item><a :class="[record.orderStatus===2?'':'disabled']" style="margin-right:10px;" @click="onForceComplete(record)">瀹屾垚</a></a-menu-item>
+              <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" style="margin-right:10px;" @click="onDistribute(record)">涓嬪彂</a></a-menu-item>
+              <!-- <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===2?'':'disabled']" @click="onWithdraw(record)" style="margin-right:10px;">鎾ゅ洖</a></a-menu-item> -->
+              <a-menu-item><a :class="[(hasPerm('FoamingChuKuOrder:delete') && (record.orderStatus===1||record.orderStatus===4))?'':'disabled']" @click="onDel(record)">鍒犻櫎</a></a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+      </s-table>
+      
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" />
+      
+      <edit-form ref="form" :orderSubclassData="orderSubclassData" :preferredPortList="preferredPortList" @callback="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { FoamingChuKuOrderPage, FoamingChuKuOrderDelete, FoamingChuKuOrderMulDistribute, FoamingChuKuOrderMulWithdraw, FoamingChuKuOrderOutForceComplete } from '@/api/modular/main/FoamingChuKuOrderManage'
+  import { WareOrderTypePage } from '@/api/modular/main/WmsOrderTypeManage'
+  import { WareWarehouseEntranceNonPage } from '@/api/modular/main/WmsWarehouseEntranceManage'
+  import editForm from './editForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      editForm,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          {
+            title: '鍑哄簱鍗曠被鍨�',
+            align: 'center',
+            dataIndex: 'orderSubclassName'
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatus',
+            scopedSlots: { customRender: 'orderStatusscopedSlots' }
+          },
+          {
+            title: '鍗曟嵁鎬绘暟閲�',
+            align: 'center',
+            dataIndex: 'orderQuantityTotal'
+          },
+          {
+            title: '鍑哄簱鍙�',
+            align: 'center',
+            dataIndex: 'exitPortName'
+          },
+          {
+            title: '鍒涘缓鏃堕棿',
+            align: 'center',
+            dataIndex: 'createdTime'
+          },
+          {
+            title: '鍒涘缓浜�',
+            align: 'center',
+            dataIndex: 'createdUserName'
+          },
+          {
+            title: '澶囨敞',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'remarks'
+          },
+          {
+            title: '鎿嶄綔',
+            width: '120px',
+            align: 'center',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          this.selectedRowKeys = []
+          this.selectDels = []
+          this.selectDistributes = []
+          this.selectWithdraws = []
+          this.infoId = null
+          let params = {...this.queryParam}
+          if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+            params.SearchBeginTime = params.dateRange[0] + ' 00:00:00'
+            params.SearchEndTime = params.dateRange[1] + ' 23:59:59'
+            delete params.dateRange
+          } else {
+            delete params.dateRange
+            delete params.SearchBeginTime
+            delete params.SearchEndTime
+          }
+          return FoamingChuKuOrderPage(Object.assign(parameter, params)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0])
+            }
+            return res.data
+          })
+        },
+        orderSubclassData:[],
+        orderStatusData: [],
+        preferredPortList:[],
+        blankingProductionLineList:[],
+        selectedRowKeys: [],
+        selectDels: [],
+        selectDistributes: [],
+        selectWithdraws: [],
+        infoId:null,
+        infoOrderNo:''
+      }
+    },
+    created () {
+      const _options = this.$options
+      this.orderStatusData = _options.filters['dictData']('order_status')
+      this.blankingProductionLineList = _options.filters['dictData']('blanking_production_line')
+    },
+    mounted(){
+      this.getInitSelectOptions()
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      getInitSelectOptions(){
+        Promise.all([
+          WareOrderTypePage(408734100951109),
+          WareWarehouseEntranceNonPage('2')
+        ]).then(response=>{
+          this.orderSubclassData = response[0].data || []
+          this.preferredPortList = response[1].data || []
+        }).catch(()=>{
+          
+        })
+      },
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      FoamingChuKuOrderDelete (record) {
+        FoamingChuKuOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onViewDetail(obj){
+        if (this.infoId===obj.id) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      onEdit(obj){
+        if (!this.hasPerm('FoamingChuKuOrder:edit')) return false;
+        if (obj.orderStatus!==1 && obj.orderStatus!==4) return false
+        this.$refs.form.init('edit',obj)
+      },
+      onDel(obj){
+        if (obj.orderStatus!==1 && obj.orderStatus!==4) return false
+        this.dealDel([obj.id])
+      },
+      onForceComplete(obj){
+        if (obj.orderStatus!==2) return false
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屽己鍒跺畬鎴愭搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleForceComplete(obj.id,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      onDistribute(obj){
+        if (obj.orderStatus!==1 && obj.orderStatus!==4) return false
+        this.dealDistribute([obj.id])
+      },
+      onWithdraw(obj){
+        if (obj.orderStatus!==1 && obj.orderStatus!==2) return false
+        this.dealWithdraw([obj.id])
+      },
+      onMulDel(){
+        this.dealDel(this.selectDels)
+      },
+      onMulDistribute(){
+        this.dealDistribute(this.selectDistributes)
+      },
+      onMulWithdraw(){
+        this.dealWithdraw(this.selectWithdraws)
+      },
+      dealDel(ids){
+        if (!this.hasPerm('FoamingChuKuOrder:delete')) return false;
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屽垹闄ゆ搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleDelete(ids,(f)=>{
+              if (f) {
+                if (this.infoId && ids.indexOf(this.infoId)>=0) {
+                  this.infoId = null
+                }
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      dealDistribute(ids){
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屼笅鍙戞搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleDistribute(ids,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      dealWithdraw(ids){
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屾挙鍥炴搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleWithdraw(ids,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      handleForceComplete(id,callback){
+        this.$loading.show()
+        FoamingChuKuOrderOutForceComplete(id).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      handleDelete(id,callback){
+        this.$loading.show()
+        let params = {id}
+        FoamingChuKuOrderDelete(params).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      handleDistribute(id,callback){
+        this.$loading.show()
+        FoamingChuKuOrderMulDistribute(id).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      handleWithdraw(id,callback){
+        this.$loading.show()
+        FoamingChuKuOrderMulWithdraw(id).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        let arr1=[],arr2=[],arr3=[]
+        selectedRows.forEach((item)=>{
+          if (item.orderStatus===1) {
+            arr1.push(item.id)
+          }
+          if (item.orderStatus===1 || item.orderStatus===4) {
+            arr2.push(item.id)
+          }
+          if (item.orderStatus===1 || item.orderStatus===2) {
+            arr3.push(item.id)
+          }
+        })
+        this.selectDels = arr1
+        this.selectDistributes = arr2
+        this.selectWithdraws = arr3
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/infoBlock.vue
new file mode 100644
index 0000000..c138e4d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/infoBlock.vue
@@ -0,0 +1,122 @@
+<template>
+  <div class="issue-notes-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <template slot="specSlots" slot-scope="text,record">
+        {{`${record.long}*${record.wide}*${record.high}`}}
+      </template>
+      <template slot="statusSlots" slot-scope="text,record">
+        <a-tag :color="text==='瀹屾垚'?'#008000':(
+          text==='鎵ц涓�'?'#1e90ff':(
+            text==='鍙栨秷'?'#556b2f':(
+              text==='鏆傚仠'?'#8b0000':(
+                text==='鎾ゅ洖'?'#ff00ff':'gray'
+              )
+            )
+          )
+        )">{{text}}</a-tag>
+      </template>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { FoamingChuKuOrderDetailPage } from '@/api/modular/main/FoamingChuKuOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'issueNotesInfoBlock',
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鎵规', align:'center', dataIndex: 'batch', key: 'batch' },
+        { title: '瀵嗗害', align:'center', dataIndex: 'materialDensity', key: 'materialDensity', width: 100 },
+        { title: '灏哄', align:'center', dataIndex: 'spec', scopedSlots: { customRender: 'specSlots' }, width: 150 },
+        { title: '宸烽亾', align:'center', dataIndex: 'aisle', key: 'aisle', width: 70 },
+        {
+          title: '鍏ュ簱鏃堕棿',
+          align: 'center',
+          dataIndex: 'createdTime'
+        },
+        { title: '浠诲姟鐘舵��', align:'center', dataIndex: 'taskStatusName', scopedSlots: { customRender: 'statusSlots' }, width: 150 }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.OrderId = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return FoamingChuKuOrderDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.issue-notes-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/DetailDrawer.vue
new file mode 100644
index 0000000..ddb6aff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/DetailDrawer.vue
@@ -0,0 +1,170 @@
+<template>
+  <a-drawer 
+    title="搴撲綅璇︽儏"
+    wrapClassName="weiben-private-drawer"
+    :width="400"
+    :closable="false"
+    :maskClosable="true"
+    :visible="visible"
+    :after-visible-change="afterVisibleChange"
+    @close="onClose"
+  >
+    <a-spin :spinning="loading">
+      <div class="wms-warehouse-location-view-detail-div">
+        <div class="btns-row">
+          <a-button type="primary" :disabled="locationObj.islock!==0" @click.stop="onUpdateLock">閿佸畾</a-button>
+          <a-button type="primary" :disabled="locationObj.islock===0" @click.stop="onUpdateLock">瑙i攣</a-button>
+          <a-button type="primary" :disabled="!(locationObj.islock!==1)" @click.stop="onUpdateEmpty">缃┖</a-button>
+        </div>
+        <div class="location-detail-box">
+          <div class="base-info info-box">
+            <p>搴撲綅缂栧彿锛歿{locationObj.placeCode}}</p>
+            <p>鎵樼洏缂栧彿锛歿{containercode}}</p>
+          </div>
+          <!-- 鐗╂枡鍒楄〃 start -->
+          <div class="location-materials">
+            <a-card v-for="(item,index) in materialList" :key="'material-item-'+index">
+              <div class="info-box">
+                <p>鐗╂枡缂栧彿锛歿{item.materialNo}}</p>
+                <p>鎵规鍙凤細{{item.materialBatch}}</p>
+                <p>鏁伴噺锛歿{item.stockNumber}}</p>
+              </div>
+            </a-card>
+          </div>
+          <!-- 鐗╂枡鍒楄〃 end -->
+        </div>
+      </div>
+    </a-spin>
+  </a-drawer>
+</template>
+
+<script>
+import { GetLocationDetail,UpdateLock,UpdateEmpty } from '@/api/modular/main/FoamingLocationViewManage'
+export default {
+  name:'wmsWarehouseLocationViewDetailDrawer',
+  emits:['update:visible','callback'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    },
+    row:{
+      type:Object,
+      default:function(){
+        return {}
+      }
+    }
+  },
+  data(){
+    return {
+      loading:false,
+      locationObj:{
+        placestatus:null,
+        islock:null
+      },
+      containercode:'',
+      materialList:[],
+      actionFlag:false
+    }
+  },
+  methods:{
+    onClose(){
+      this.close()
+    },
+    close(){
+      this.$emit('update:visible',false)
+    },
+    afterVisibleChange(visible){
+      if (visible) {
+        this.initShow()
+      } else {
+        this.afterClsoe()
+      }
+    },
+    initShow(){
+      this.loading = true;
+      this.getLocationDetail(()=>{
+        this.loading = false;
+      })
+    },
+    getLocationDetail(callback){
+      let params = {ID:this.row.id}
+      GetLocationDetail(params).then((d)=>{
+        this.locationObj = d.data.palceDetails || {}
+        this.containercode = d.data.containercode || ''
+        this.materialList = d.data.wmsMaterialStocks || []
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    afterClsoe(){
+      this.locationObj = {
+        placestatus:null,
+        islock:null
+      }
+      this.containercode = ''
+      this.materialList = []
+      if (this.actionFlag) {
+        this.$emit('callback')
+      }
+      this.actionFlag = false
+    },
+    onUpdateLock(){
+      this.loading = true;
+      let params = {ID:this.row.id}
+      UpdateLock(params).then(()=>{
+        this.actionFlag = true;
+        this.getLocationDetail(()=>{
+          this.loading = false;
+          this.$message.success('鎿嶄綔鎴愬姛锛�');
+        })
+      }).catch(()=>{
+        this.loading = false;
+      })
+    },
+    onUpdateEmpty(){
+      this.loading = true;
+      let params = {Id:this.row.id}
+      UpdateEmpty(params).then(()=>{
+        this.actionFlag = true;
+        this.getLocationDetail(()=>{
+          this.loading = false;
+          this.$message.success('鎿嶄綔鎴愬姛锛�');
+        })
+      }).catch(()=>{
+        this.loading = false;
+      })
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-warehouse-location-view-detail-div{
+  height:100%;
+  display: flex;
+  flex-direction: column;
+  &>.btns-row{
+    flex-shrink: 0;
+    padding:12px 16px;
+    .ant-btn + .ant-btn {
+      margin-left: 10px;
+    }
+  }
+  .location-detail-box{
+    flex-grow: 1;
+    overflow: auto;
+  }
+  .info-box{
+    line-height: 1.5;
+    p{
+      margin-bottom: 0;
+    }
+  }
+  .base-info,.location-materials{
+    padding:0 16px;
+    margin-bottom: 16px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/SearchForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/SearchForm.vue
new file mode 100644
index 0000000..b55b3e7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/SearchForm.vue
@@ -0,0 +1,153 @@
+<template>
+  <a-form layout="inline">
+    <a-form-item label="搴撳尯">
+      <a-select v-model="form.Areaid" class="slect-width" @change="onAreaChange">
+        <a-select-option v-for="(item,index) in selectList.areas" :key="'area-sel-'+index" :value="item.id">{{item.areaName}}</a-select-option>
+      </a-select>
+    </a-form-item>
+    <a-form-item label="宸烽亾">
+      <a-select v-model="form.Aisleid" allowClear class="slect-width" @change="onAisleChange">
+        <a-select-option v-for="(item,index) in selectList.aisles" :key="'aisle-sel-'+index" :value="item">{{item}}</a-select-option>
+      </a-select>
+    </a-form-item>
+    <a-form-item label="鎺�">
+      <a-select v-model="form.Rowno" allowClear class="slect-width">
+        <a-select-option v-for="(item,index) in selectList.rows" :key="'row-sel-'+index" :value="item">{{item}}</a-select-option>
+      </a-select>
+    </a-form-item>
+    <a-form-item>
+      <a-button type="primary" @click.stop="onSearch">鏌ヨ</a-button>
+    </a-form-item>
+  </a-form>
+</template>
+
+<script>
+import { GetArea, GetAisle, GetPalceRowno } from '@/api/modular/main/FoamingLocationViewManage'
+export default {
+  name:'wmsWarehouseLocationViewSearchCompontent',
+  emits:['update:loading','search'],
+  data(){
+    return {
+      loading:{
+        type:Boolean,
+        default:false
+      },
+      form:{
+        Areaid:null,
+        Aisleid:null,
+        Rowno:null
+      },
+      selectList:{
+        areas:[],
+        aisles:[],
+        rows:[]
+      }
+    }
+  },
+  methods:{
+    init(callback){
+      this.getSelectListAreas((f1)=>{
+        if (f1) {
+          callback && callback(true,{...this.form})
+        } else {
+          callback && callback(false)
+        }
+      })
+    },
+    getSelectListAreas(callback){
+      GetArea().then((d)=>{
+        this.selectList.areas = d.data || [];
+        this.selectList.rows = []
+        this.form.Aisleid = null
+        this.form.Rowno = null
+        if (this.selectList.areas.length>0) {
+          this.form.Areaid = this.selectList.areas[0].id
+          this.getSelectListAisles(()=>{
+            callback && callback(true)
+          })
+        } else {
+          this.form.Areaid = null
+          this.selectList.aisles = []
+          callback && callback(true)
+        }
+      }).catch(()=>{
+        this.selectList.areas = []
+        this.selectList.aisles = []
+        this.selectList.rows = []
+        this.form.Areaid = null
+        this.form.Aisleid = null
+        this.form.Rowno = null
+        callback && callback(false)
+      })
+    },
+    getSelectListAisles(callback){
+      let params = {Areaid:this.form.Areaid}
+      GetAisle(params).then((d)=>{
+        this.selectList.aisles = d.data || [];
+        this.form.Rowno = null
+        if (this.selectList.aisles.length===1) {
+          this.form.Aisleid = this.selectList.aisles[0]
+          this.getSelectListRows(()=>{
+            callback && callback(true)
+          })
+        } else {
+          this.selectList.rows = []
+          this.form.Aisleid = null
+          callback && callback(true)
+        }
+      }).catch(()=>{
+        this.selectList.aisles = []
+        this.selectList.rows = []
+        this.form.Aisleid = null
+        this.form.Rowno = null
+        callback && callback(false)
+      })
+    },
+    getSelectListRows(callback){
+      let params = {Areaid:this.form.Areaid,Aisleid:this.form.Aisleid}
+      GetPalceRowno(params).then((d)=>{
+        this.selectList.rows = d.data || [];
+        if (this.selectList.rows.length===1) {
+          this.form.Rowno = this.selectList.rows[0]
+          callback && callback(true)
+        } else {
+          this.form.Rowno = null
+          callback && callback(true)
+        }
+      }).catch(()=>{
+        this.selectList.rows = []
+        this.form.Rowno = null
+        callback && callback(false)
+      })
+    },
+    onAreaChange() {
+      this.$emit('update:loading',true)
+      this.getSelectListAisles(()=>{
+         this.$emit('update:loading',false)
+      })
+    },
+    onAisleChange() {
+      this.$emit('update:loading',true)
+      this.getSelectListRows(()=>{
+         this.$emit('update:loading',false)
+      })
+    },
+    onSearch(){
+      if (!this.form.Areaid) {
+        this.$error({
+          title: '绯荤粺鎻愮ず',
+          content: '璇烽�夋嫨搴撳尯锛�',
+        });
+        return false;
+      }
+      this.$emit('search',{...this.form})
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.slect-width{
+  width:180px
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/index.vue
new file mode 100644
index 0000000..2b152e7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/index.vue
@@ -0,0 +1,357 @@
+锘�<template>
+  <div class="wms-warehouse-location-view-page">
+    <a-spin :spinning="loading">
+      <div class="top-blcok">
+        <search-form ref="search" :loading.sync="loading" @search="onSearch" />
+      </div>
+      <div class="containter-blcok">
+        <div class="example-tags">
+          <div class="tag">绌洪棽({{countNum.empty}})</div>
+          <div class="tag orange-tag">寰呭叆({{countNum.daiRu}})</div>
+          <div class="tag purple-tag">寰呭嚭({{countNum.daiChu}})</div>
+          <div class="tag primary-tag">瀛樿揣({{countNum.fill}})</div>
+          <div class="tag red-tag">閿佸畾({{countNum.lock}})</div>
+        </div>
+        <!-- 搴撳尯鏄剧ず鍖哄煙 start -->
+        <div class="locations-box">
+          
+          <div class="location-items-group-block" v-for="(item1,index1) in list" :key="'location-block-'+index1">
+            <div class="block-title">绗瑊{item1.aisle}}宸烽亾</div>
+            
+            <div class="location-items-group">
+              <div class="location-items-row" v-for="(item2,index2) in (item1.wareLocationRownoData || [])" :key="'location-row-'+index2">
+                
+                <div class="location-items-layer" v-for="(item3,index3) in (item2.wareLocationLayerData || [])" :key="'location-layer-'+index3">
+                  <div class="divider"></div>
+                  <div class="location-item" v-for="(item4,index4) in (item3.wareLocationColumnNoData || [])" :key="'location-item-'+index4" :class="[
+                    item4?(
+                      item4.islock?'red-item':(
+                        item4.placeStatus===3?'primary-item':(
+                          item4.placeStatus===2?'orange-item':(
+                            item4.placeStatus===4?'purple-item':''
+                          )
+                        )
+                      )
+                    ):'died-item'
+                  ]" @click="openDetail(item4)">
+                    {{item4?item4.placeCode:''}}
+                  </div>
+                  <div class="divider-zero"></div>
+                </div>
+              </div>
+            </div>
+            
+          </div>
+          
+        </div>
+        <!-- 搴撳尯鏄剧ず鍖哄煙 end -->
+      </div>
+
+      <detail-drawer :visible.sync="detailVisible" :row="detailRow" @callback="lockCallback" />
+    </a-spin>
+  </div>
+</template>
+
+<script>
+  import SearchForm from './SearchForm.vue'
+  import DetailDrawer from './DetailDrawer.vue'
+  import {
+    GetPalceList
+  } from '@/api/modular/main/FoamingLocationViewManage'
+import ItemVue from '@/components/AvatarList/Item.vue'
+  export default {
+    name: 'wmsWarehouseLocationViewPage',
+    components: {
+      SearchForm,
+      DetailDrawer
+    },
+    data() {
+      return {
+        detailVisible: false,
+        detailRow: {},
+        loading: false,
+        countNum: {
+          empty: 0,
+          daiRu: 0,
+          daiChu: 0,
+          fill: 0,
+          lock: 0
+        },
+        list: [],
+        searchForm: {}
+      }
+    },
+    methods: {
+      openDetail(obj) {
+        if (!obj) return false
+        this.detailRow = obj
+        this.detailVisible = true;
+      },
+      getList(params, callback) {
+        GetPalceList(params).then((d) => {
+          if (d.data) {
+            this.countNum = {
+              empty: d.data.emptyNum || 0,
+              daiRu: d.data.daiRuNum || 0,
+              daiChu: d.data.daichuNum || 0,
+              fill: d.data.cunhuoNum || 0,
+              lock: d.data.lockNum || 0
+            }
+            this.list = d.data.palceDetails || []
+          } else {
+            this.countNum = {
+              empty: 0,
+              daiRu: 0,
+              daiChu: 0,
+              fill: 0,
+              lock: 0
+            }
+            this.list = []
+          }
+          callback && callback(true)
+        }).catch(() => {
+          callback && callback(false)
+        })
+      },
+      onSearch(valObj) {
+        this.loading = true
+        this.searchForm = valObj
+        this.getList(valObj, () => {
+          this.loading = false
+        })
+      },
+      lockCallback() {
+        this.loading = true
+        this.getList(this.searchForm, () => {
+          this.loading = false
+        })
+      },
+      init() {
+        this.loading = true
+        this.$refs.search.init((f, valObj) => {
+          this.loading = false
+          if (f) {
+            this.searchForm = valObj
+            this.getList(valObj, () => {
+              this.loading = false
+            })
+          } else {
+            this.loading = false
+          }
+        })
+      }
+    },
+    mounted() {
+      this.init()
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+  .wms-warehouse-location-view-page {
+    overflow: hidden;
+    display: flex;
+    overflow: auto;
+    background-color: #fff;
+    border-radius: 10px;
+    flex-direction: column;
+    height: 100%;
+
+    .top-blcok {
+      flex-shrink: 0;
+      padding: 10px 16px 16px 16px;
+    }
+
+    .containter-blcok {
+      flex-grow: 1;
+      height: 1px;
+      display: flex;
+      flex-direction: column;
+      @gray-color: #808080;
+      @danger-color: #ff3333;
+      @primary-color: #ccffff;
+      @orange-color: #ffa500;
+      @purple-color: #800080;
+      @border-color-x: #c0c0c0;
+
+      .example-tags {
+        flex-shrink: 0;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        padding: 0 16px 16px 16px;
+
+        .tag {
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          height: 30px;
+          width: 100px;
+          border: 1px solid @border-color-x;
+          border-radius: 4px;
+          cursor: default;
+          background-color: @gray-color;
+
+          &+.tag {
+            margin-left: 10px;
+          }
+
+          &.red-tag {
+            background-color: @danger-color;
+          }
+
+          &.primary-tag {
+            background-color: @primary-color;
+          }
+
+          &.orange-tag {
+            background-color: @orange-color;
+          }
+
+          &.purple-tag {
+            background-color: @purple-color;
+          }
+          &.green-tag {
+            background-color: #2cb228 !important;
+          }
+
+          &:not(.primary-tag) {
+            color: #FFFFFF;
+          }
+        }
+      }
+
+    
+
+      .locations-box {
+        flex-grow: 1;
+        height: 1px;
+        overflow: auto;
+
+        .location-items-group-block {
+          padding: 0 16px;
+          margin-bottom: 16px;
+          .block-title {
+            padding-bottom: 4px;
+          }
+          &:last-child{
+            margin-bottom: 0;
+          }
+        }
+
+        .location-items-group {
+          @padding-size:8px;
+
+          .location-items-row {
+            margin-bottom: 16px;
+            background-color: #f0f8ff;
+            overflow: auto;
+            padding: @padding-size 0;
+            display: flex;
+            flex-direction: column;
+            
+            .location-items-layer{
+              flex-shrink: 0;
+              display: flex;
+              margin-bottom: @padding-size;
+              .divider{
+                width:@padding-size;
+                flex-shrink: 0;
+              }
+              .divider-zero{
+                width:1px;
+                flex-shrink: 0;
+              }
+              .location-item {
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                width: 120px;
+                height: 50px;
+                overflow: hidden;
+                white-space: nowrap;
+                margin-right: @padding-size;
+                border: 1px solid @border-color-x;
+                border-radius: 4px;
+                cursor: pointer;
+                flex-shrink: 0;
+                background-color: @gray-color;
+              
+                &.active {
+                  box-shadow: 0 0 4px #00ff00;
+                }
+                
+                &.died-item {
+                  background-color: #FFFFFF;
+                  background-image: linear-gradient(
+                  	to top right,
+                  	rgba(192, 192, 192, 0) 0%,
+                  	rgba(192, 192, 192, 0) calc(50% - 1px),
+                  	rgba(192, 192, 192, 1) 50%,
+                  	rgba(192, 192, 192, 0) calc(50% + 1px),
+                  	rgba(192, 192, 192, 0) 100%
+                  ), linear-gradient(
+                  	to bottom right,
+                  	rgba(192, 192, 192, 0) 0%,
+                  	rgba(192, 192, 192, 0) calc(50% - 1px),
+                  	rgba(192, 192, 192, 1) 50%,
+                  	rgba(192, 192, 192, 0) calc(50% + 1px),
+                  	rgba(192, 192, 192, 0) 100%
+                  );
+                  cursor: not-allowed;
+                }
+                
+                &.red-item {
+                  background-color: @danger-color;
+                }
+                
+                &.primary-item {
+                  background-color: @primary-color;
+                }
+                
+                &.orange-item {
+                  background-color: @orange-color;
+                }
+                
+                &.purple-item {
+                  background-color: @purple-color;
+                }
+                
+                &:not(.primary-item,.died-item) {
+                  color: #FFFFFF;
+                }
+                
+              }
+            
+              &:last-child {
+                margin-bottom: 0;
+              }
+            }
+
+            &:last-child {
+              margin-bottom: 0;
+            }
+
+            
+          }
+        }
+      }
+    }
+  }
+</style>
+<style lang="less">
+  .wms-warehouse-location-view-page {
+
+    .ant-spin-nested-loading,
+    .ant-spin-container {
+      height: 100%;
+    }
+
+    .ant-spin-container {
+      overflow: hidden;
+      display: flex;
+      flex-direction: column;
+    }
+  }
+
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingMaterialStock/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingMaterialStock/index.vue
new file mode 100644
index 0000000..eb37999
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingMaterialStock/index.vue
@@ -0,0 +1,219 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('FoamingMaterialStock:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐗╂枡缂栧彿">
+                <a-input v-model="queryParam.materialNo" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+                <a-form-item label="搴撲綅缂栫爜">
+                  <a-input v-model="queryParam.placeCode" allow-clear placeholder="璇疯緭鍏ュ簱浣嶇紪鐮�"/>
+                </a-form-item>
+              </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎵�鍦ㄥ簱鍖�">
+                  <a-select :allowClear="true" style="width: 100%;" v-model="queryParam.areaId" placeholder="璇烽�夋嫨鎵�鍦ㄥ簱鍖�">
+                    <a-select-option v-for="(item,index) in areaNameData" :key="index" :value="item.id">{{ item.areaName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍏ュ簱鏃堕棿">
+                  <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+                </a-form-item>
+              </a-col>
+            </template>
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <!-- <template class="table-operator" slot="operator" v-if="hasPerm('FoamingMaterialStock:add')" >
+          <a-button type="primary" v-if="hasPerm('FoamingMaterialStock:add')" icon="plus" @click="$refs.addForm.add()">鏂板搴撳瓨琛�</a-button>
+        </template> -->
+        <!-- <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('FoamingMaterialStock:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('FoamingMaterialStock:edit') & hasPerm('FoamingMaterialStock:delete')"/>
+          <a-popconfirm v-if="hasPerm('FoamingMaterialStock:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => FoamingMaterialStockDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span> -->
+        <template class="table-operator" slot="operator" v-if="hasPerm('FoamingMaterialStock:add')" >
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('FoamingMaterialStock:exportExcel')" icon="download" @click="FoamingAgvTaskToExcel()">
+            瀵煎嚭
+          </a-button>
+        </template>
+      </s-table>
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { FoamingMaterialStockPage, FoamingMaterialStockDelete } from '@/api/modular/main/FoamingMaterialStockManage'
+  import { WmsAreaList } from '@/api/modular/main/WmsAreaManage'
+  export default {
+    components: {
+      STable
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鐗╂枡缂栧彿',
+            align: 'center',
+            dataIndex: 'materialNo'
+          },
+          {
+            title: '鐗╂枡鎵规',
+            align: 'center',
+            dataIndex: 'materialBatch'
+          },
+          {
+            title: '鐗╂枡瀵嗗害',
+            align: 'center',
+            dataIndex: 'materialDensity'
+          },
+          // {
+          //   title: '鐗╂枡鍚嶇О',
+          //   align: 'center',
+          //   dataIndex: 'materialName'
+          // },
+          {
+            title: '鐗╂枡灏哄',
+            align: 'center',
+            dataIndex: 'materialSpec'
+          },
+          // {
+          //   title: '鎵樼洏缂栫爜',
+          //   align: 'center',
+          //   dataIndex: 'containerCode'
+          // },
+          {
+            title: '搴撲綅缂栫爜',
+            align: 'center',
+            dataIndex: 'placeCode'
+          },
+          {
+            title: '鎵�鍦ㄥ簱鍖�',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '搴撳瓨鏁�',
+            align: 'center',
+            dataIndex: 'stockNumber'
+          },
+          {
+            title: '鍏ュ簱鏃堕棿',
+            align: 'center',
+            dataIndex: 'createdTime'
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          let params = {...this.queryParam}
+          if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+            params.SearchBeginTime = params.dateRange[0] + ' 00:00:00'
+            params.SearchEndTime = params.dateRange[1] + ' 23:59:59'
+            delete params.dateRange
+          } else {
+            delete params.dateRange
+            delete params.SearchBeginTime
+            delete params.SearchEndTime
+          }
+          return FoamingMaterialStockPage(Object.assign(parameter, params)).then((res) => {
+            return res.data
+          })
+        },
+        areaNameData: [],
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      if (this.hasPerm('FoamingMaterialStock:edit') || this.hasPerm('FoamingMaterialStock:delete')) {
+        // this.columns.push({
+        //   title: '鎿嶄綔',
+        //   width: '150px',
+        //   dataIndex: 'action',
+        //   scopedSlots: { customRender: 'action' }
+        // })
+      }
+    },
+    mounted(){
+      this.WmsAreaLists()
+    },
+    methods: {
+      WmsAreaLists(){
+        WmsAreaList().then((d)=>{
+          this.areaNameData = d.data || []
+        }).catch(()=>{
+          
+        })
+      },
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      FoamingMaterialStockDelete (record) {
+        FoamingMaterialStockDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/editForm.vue
new file mode 100644
index 0000000..9ca1e17
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/editForm.vue
@@ -0,0 +1,328 @@
+锘�<template>
+  <a-modal
+    :title="title"
+    width="780px"
+    :visible="visible"
+    dialogClass="zero-modal"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <div class="entry-notes-modal-content">
+        <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-row :gutter="16">
+            <a-col :span="12">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input disabled v-decorator="['orderNo',{rules:[{required:true,message:'鍗曟嵁缂栧彿涓嶅彲涓虹┖锛�'}]}]">
+                  <a-icon slot="addonAfter" @click="refreshOrderNo" type="sync" />
+                </a-input>
+              </a-form-item>
+            </a-col>
+            <a-col :span="12">
+              <a-form-item label="鍏ュ簱鍗曠被鍒�">
+                <a-select allow-clear style="width: 100%" placeholder="璇烽�夋嫨鍏ュ簱鍗曠被鍒�" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍏ュ簱鍗曠被鍒紒' }]}]">
+                  <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter="16">
+            <a-col :span="12">
+              <a-form-item label="鍏ュ簱鍙�">
+                <a-select mode="multiple" allow-clear style="width: 100%" placeholder="璇烽�夋嫨鍏ュ簱鍙�" v-decorator="['preferredPortArr', {rules: [{required:true,message:'鍏ュ簱鍙d笉鍙负绌猴紒'}]}]">
+                  <a-select-option v-for="(item,index) in preferredPortList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :span="12">
+              <a-form-item label="涓嬫枡浜х嚎">
+                <a-select allow-clear style="width: 100%" placeholder="璇烽�夋嫨涓嬫枡浜х嚎" v-decorator="['blankingProductionLine', {rules: [{required:true,message:'涓嬫枡浜х嚎涓嶅彲涓虹┖锛�'}]}]">
+                  <a-select-option v-for="(item,index) in blankingProductionLineList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter="16">
+            <a-col :span="12">
+              <a-form-item label="鎵规">
+                <a-input placeholder="璇疯緭鍏ユ壒娆�" allow-clear v-decorator="['batch',{rules:[{required:true,message:'鎵规涓嶅彲涓虹┖锛�'}]}]" />
+              </a-form-item>
+            </a-col>
+            <a-col :span="12">
+              <a-form-item label="鎵规鎬绘暟">
+                <a-input-number allow-clear style="width: 100%" v-decorator="['orderQuantityTotal',{rules:[
+                  { required: true, message: '鎵规鎬绘暟涓嶅彲涓虹┖锛�' },
+                  { validator: interalNumberValidate }
+                ],validateFirst:true}]" :min="0" placeholder="璇疯緭鍏ユ壒娆℃�绘暟" />
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter="16">
+            <a-col :span="12">
+              <a-form-item label="娴佹按鍙�">
+                <a-input-number style="width: 100%" allow-clear v-decorator="['serialNo',{rules:[{ validator: interalNumberValidate }]}]" :min="0" placeholder="璇疯緭鍏ユ祦姘村彿" />
+              </a-form-item>
+            </a-col>
+            <a-col :span="12">
+              <a-form-item label="瀵嗗害">
+                <a-input placeholder="璇疯緭鍏ュ瘑搴�" allow-clear v-decorator="['materialDensity',{rules:[{required:true,message:'瀵嗗害涓嶅彲涓虹┖锛�'}]}]" />
+              </a-form-item>
+            </a-col>
+          </a-row>
+          <a-row :gutter="16">
+            <a-col :span="12">
+              <a-row :gutter="16">
+                <a-col :span="8">
+                  <a-form-item label="闀�">
+                    <a-input-number placeholder="璇疯緭鍏ラ暱" allow-clear style="width: 100%" v-decorator="['long',{rules:[{ validator: numberValidate }]}]" :min="0" />
+                  </a-form-item>
+                </a-col>
+                <a-col :span="8">
+                  <a-form-item label="瀹�">
+                    <a-select style="width: 100%" allow-clear placeholder="璇烽�夋嫨瀹�" v-decorator="['wide', {rules: [{validator: numberValidate}]}]">
+                      <a-select-option v-for="(item,index) in wideOptions" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                    </a-select>
+                  </a-form-item>
+                </a-col>
+                <a-col :span="8">
+                  <a-form-item label="楂�">
+                    <a-input-number placeholder="璇疯緭鍏ラ珮" allow-clear style="width: 100%" v-decorator="['high',{rules:[{ validator: numberValidate }]}]" :min="0" />
+                  </a-form-item>
+                </a-col>
+              </a-row>
+            </a-col>
+            <a-col :span="12">
+              <a-form-item label="澶囨敞">
+                <a-input placeholder="璇疯緭鍏ュ娉�" allow-clear :max-length="30" v-decorator="['remarks']" />
+              </a-form-item>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-spin>
+    
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="submit" type="primary" :loading="confirmLoading" @click="handleSubmit">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+ 
+<script>
+  import { FoamingRuKuOrderAdd,FoamingRuKuOrderEdit,FoamingRuKuOrderGetNo, FoamingRuKuOrderGetMaterialWide } from '@/api/modular/main/FoamingRuKuOrderManage'
+  export default {
+    emits:['callback'],
+    props:{
+      orderSubclassData:{
+        type:Array,
+        default:function(){
+          return []
+        }
+      },
+      preferredPortList:{
+        type:Array,
+        default:function(){
+          return []
+        }
+      }
+    },
+    data () {
+      return {
+        id:null,
+        type:'',
+        labelCol: {
+          span:24
+        },
+        wrapperCol: {
+          span:24
+        },
+        visible: false,
+        confirmLoading: false,
+        title:'',
+        blankingProductionLineList:[],
+        form: this.$form.createForm(this),
+        wideOptions:[]
+      }
+    },
+    created(){
+      this.blankingProductionLineList = this.$options.filters['dictData']('blanking_production_line')
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      init (type,record) {
+        this.type = type;
+        this.visible = true
+        let _initForm = {}
+        if (type==='add'){
+          this.title="鏂板鍏ュ簱鍗�"
+          _initForm.blankingProductionLine = '1'
+          _initForm.orderSubclass = 408737870467141
+          this.$loading.show()
+          this.getOrderNo((f,str)=>{
+            if (f) {
+               _initForm.orderNo = str
+            }
+            this.$nextTick(()=>{
+              this.form.setFieldsValue(_initForm)
+            })
+            this.getWideOptions(()=>{
+              this.$loading.hide()
+            },false)
+          },false)
+        } else {
+          this.title="缂栬緫鍏ュ簱鍗�"
+          _initForm.orderNo = record.orderNo
+          _initForm.orderSubclass = record.orderSubclass
+          if (record.preferredPort) {
+            _initForm.preferredPortArr = record.preferredPort.split(',')
+          } else {
+            _initForm.preferredPortArr = []
+          }
+          _initForm.batch = record.batch
+          _initForm.orderQuantityTotal = record.orderQuantityTotal
+          _initForm.materialDensity = record.materialDensity
+          _initForm.blankingProductionLine = String(record.blankingProductionLine)
+          _initForm.long = record.long
+          _initForm.wide = record.wide
+          _initForm.high = record.high
+          _initForm.serialNo = record.serialNo
+          _initForm.remarks = record.remarks
+          this.id = record.id
+          this.$nextTick(()=>{
+            this.form.setFieldsValue(_initForm)
+          })
+          this.getWideOptions()
+        }
+      },
+      getOrderNo(callback,needLoading=true){
+        if (needLoading) {
+          this.$loading.show()
+        }
+        FoamingRuKuOrderGetNo().then((d)=>{
+          callback(true,d.data)
+          if (needLoading) {
+            this.$loading.hide()
+          }
+        }).catch(()=>{
+          callback(false)
+          if (needLoading) {
+            this.$loading.hide()
+          }
+        })
+      },
+      getWideOptions(callback,needLoading=true){
+        if (this.wideOptions.length>0) {
+          callback && callback(true)
+        } else {
+          if (needLoading) {
+            this.$loading.show()
+          }
+          FoamingRuKuOrderGetMaterialWide().then((d)=>{
+            this.wideOptions = d.data || []
+            callback && callback(true)
+            if (needLoading) {
+              this.$loading.hide()
+            }
+          }).catch(()=>{
+            callback && callback(false)
+            if (needLoading) {
+              this.$loading.hide()
+            }
+          })
+        }
+      },
+      interalNumberValidate(rule, value, callback){
+        if (value<=0){
+          callback('蹇呴』澶т簬0');
+        } else if (Number(value)!==parseInt(value)) {
+          callback('鍙兘鏄暣鏁�');
+        } else {
+          callback();
+        }
+      },
+      numberValidate(rule, value, callback){
+        if (value<=0){
+          callback('蹇呴』澶т簬0');
+        } else {
+          callback();
+        }
+      },
+      refreshOrderNo(){
+        if (this.type==='edit') return false;
+        this.getOrderNo((f,str)=>{
+          if (f) {
+            let _initForm = {orderNo:str}
+            this.$nextTick(()=>{
+              this.form.setFieldsValue(_initForm)
+            })
+          }
+        })
+      },
+      handleSubmit () {
+       this.form.validateFields((errors, values) => {
+         if (!errors) {
+           this.$loading.show()
+           this.handleSubmitAjax({...values},(f)=>{
+             this.$loading.hide()
+             if (f) {
+               this.$message.success('鎿嶄綔鎴愬姛锛�');
+               this.handleCancel()
+               this.$emit('callback')
+             }
+           })
+         }
+       })
+      },
+      handleSubmitAjax (params,callback){
+       if (this.$getObjectType(params.preferredPortArr)==='array') {
+         params.preferredPort = params.preferredPortArr.join(',')
+       }
+       delete params.preferredPortArr
+       if (this.type==='add') {
+         this.handleAddAjax(params,callback)
+       } else {
+         this.handleEditAjax(params,callback)
+       }
+      },
+      handleAddAjax(params,callback){
+       let _params = {...params}
+       FoamingRuKuOrderAdd(_params).then(()=>{
+         callback(true)
+       }).catch(()=>{
+         callback(false)
+       })
+      },
+      handleEditAjax(params,callback){
+       let _params = {...params}
+       _params.id = this.id;
+       FoamingRuKuOrderEdit(_params).then(()=>{
+         callback(true)
+       }).catch(()=>{
+         callback(false)
+       })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
+<style lang="less" scoped>
+.entry-notes-modal-content{
+  padding: 20px 16px 0 16px;
+  .form-view,.action-view{
+    flex-shrink: 0;
+  }
+  .form-view{
+    background-color: #F3F7FA;
+    padding-top: 20px;
+  }
+  .action-view{
+    padding: 8px 16px;
+  }
+  .list-view{
+    flex-grow: 1;
+    padding: 0 16px;
+    overflow: auto;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/entranceSelectModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/entranceSelectModal.vue
new file mode 100644
index 0000000..156d333
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/entranceSelectModal.vue
@@ -0,0 +1,98 @@
+<template>
+  <a-modal
+    title="閫夋嫨鍏ュ簱鍙�"
+    width="300px"
+    :visible="visible"
+    dialogClass="zero-modal"
+    @cancel="handleCancel"
+  >
+    <div class="shk-in-entrance-select-modal">
+      <a-select style="width: 100%" v-model="entranceCode" placeholder="璇烽�夋嫨鍏ュ簱鍙�">
+        <a-select-option v-for="(item,index) in preferredPortList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+      </a-select>
+    </div>
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button type="primary" key="ok" :disabled="!entranceCode" @click="onConfirm">纭</a-button>
+    </template>
+  </a-modal> 
+</template>
+
+<script>
+import { FoamingRuKuOrderExecuteTask } from '@/api/modular/main/FoamingRuKuOrderManage'
+export default {
+  name:'shkInEntranceSelectModal',
+  emits:['update:visible','callback'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    },
+    preferredPortList:{
+      type:Array,
+      default:function(){
+        return []
+      }
+    },
+    did:{
+      type:[Number,null],
+      default:null
+    }
+  },
+  data(){
+    return {
+      entranceCode:undefined
+    }
+  },
+  watch:{
+    visible:{
+      immediate:true,
+      handler(newV,oldV){
+        if (newV!==oldV){
+          this.initShow()
+          this.handleClose()
+        }
+      }
+    }
+  },
+  created(){
+    
+  },
+  methods:{
+    handleCancel(){
+      this.$emit('update:visible',false)
+    },
+    initShow(){
+      if (this.visible) {
+        
+      }
+    },
+    handleClose(){
+      if (!this.visible) {
+        this.entranceCode = undefined
+      }
+    },
+    onConfirm(){
+      this.$loading.show()
+      let params = {
+        id:this.did,
+        entranceCode:this.entranceCode
+      }
+      FoamingRuKuOrderExecuteTask(params).then(()=>{
+        this.$loading.hide()
+        this.$message.success('鎿嶄綔鎴愬姛');
+        this.$emit('callback')
+        this.handleCancel()
+      }).catch(()=>{
+        this.$loading.hide()
+      })
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.shk-in-entrance-select-modal{
+  padding: 8px 16px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/index.vue
new file mode 100644
index 0000000..e3b665e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/index.vue
@@ -0,0 +1,488 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+      <div class="table-page-search-wrapper" v-if="hasPerm('FoamingRuKuOrder:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鎵规">
+                <a-input v-model="queryParam.batch" allow-clear placeholder="璇疯緭鍏ユ壒娆�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瀵嗗害">
+                <a-input v-model="queryParam.MaterialDensity" allow-clear placeholder="璇疯緭鍏ュ瘑搴�"/>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁缂栧彿">
+                  <a-input v-model="queryParam.OrderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鐘舵��">
+                    <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>      
+              <a-col :md="8" :sm="24">
+              <a-form-item label="鍏ュ簱鍗曠被鍨�">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.OrderSubclass" placeholder="璇烽�夋嫨鍏ュ簱鍗曠被鍨�">
+                  <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+                <a-form-item label="涓嬫枡浜х嚎">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.BlankingProductionLine" placeholder="璇烽�夋嫨涓嬫枡浜х嚎">
+                    <a-select-option v-for="(item,index) in blankingProductionLineList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍏ュ簱鍙�">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.PreferredPort" placeholder="璇烽�夋嫨鍏ュ簱鍙�">
+                    <a-select-option v-for="(item,index) in preferredPortList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍒涘缓鏃堕棿">
+                  <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+                </a-form-item>
+              </a-col>
+            </template>
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('fp_rk_action')">
+          <a-button type="primary" icon="plus" @click="$refs.form.init('add')">鏂板</a-button>
+          <a-button type="danger" icon="step-forward" :disabled="!selectDistributes.length" @click="onMulDistribute">涓嬪彂</a-button>
+          <a-button type="danger" icon="delete" :disabled="!selectDels.length" @click="onMulDel">鍒犻櫎</a-button>
+        </template>
+        <span slot="orderStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text===2?'#0000ff':(text===3?'#008000':(text===4?'#ffd700':'gray'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="taskModelscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'#90ee90':(text===2?'#1e90ff':(text===3?'#00ffff':'gray'))">{{ 'task_model' | dictType(text) }}</a-tag>
+        </span>
+        <template slot="blankingProductionLineSlots" slot-scope="text">
+        {{ 'blanking_production_line' | dictType(text) }}
+      </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="action" slot-scope="text, record">
+          <a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" style="margin-right:10px;" @click="onEdit(record)">缂栬緫</a>
+          <a-dropdown>
+            <a class="ant-dropdown-link" @click="e => e.preventDefault()">鏇村...</a>
+            <a-menu slot="overlay">
+              <a-menu-item><a :class="[record.orderStatus===2?'':'disabled']" style="margin-right:10px;" @click="onForceComplete(record)">瀹屾垚</a></a-menu-item>
+              <a-menu-item><a :class="[record.orderStatus===2||record.orderStatus===3?'':'disabled']" style="margin-right:10px;" @click="onOpenNumberChangeModal(record)">澧炶ˉ鏁伴噺</a></a-menu-item>
+              <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" style="margin-right:10px;" @click="onDistribute(record)">涓嬪彂</a></a-menu-item>
+              <!-- <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===2?'':'disabled']" @click="onWithdraw(record)" style="margin-right:10px;">鎾ゅ洖</a></a-menu-item> -->
+              <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" @click="onDel(record)">鍒犻櫎</a></a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+      </s-table>
+      
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" :preferredPortList="preferredPortList" />
+      <type-select-modal :visible.sync="typeVisible" @callback="distributeConfirmCallback" />
+      <number-change-modal :visible.sync="numberVisible" :obj="numberRow" @callback="numberChangeCallback" />
+      <edit-form ref="form" :orderSubclassData="orderSubclassData" :preferredPortList="preferredPortList" @callback="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { 
+    FoamingRuKuOrderPage, 
+    FoamingRuKuOrderDelete, 
+    FoamingRuKuOrderMulDistribute, 
+    FoamingRuKuOrderMulWithdraw ,
+    FoamingRuKuOrderForceComplete
+  } from '@/api/modular/main/FoamingRuKuOrderManage'
+  import { WareOrderTypePage } from '@/api/modular/main/WmsOrderTypeManage'
+  import { WareWarehouseEntranceNonPage } from '@/api/modular/main/WmsWarehouseEntranceManage'
+  import editForm from './editForm.vue'
+  import infoBlock from './infoBlock.vue'
+  import typeSelectModal from './typeSelectModal.vue'
+  import numberChangeModal from './numberChangeModal.vue'
+  export default {
+    components: {
+      STable,
+      editForm,
+      infoBlock,
+      typeSelectModal,
+      numberChangeModal
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          {
+            title: '鍏ュ簱鍗曠被鍨�',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'orderSubclassName'
+          },
+          {
+            title: '鍏ュ簱鏂瑰紡',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'orderDistributeType',
+            scopedSlots: { customRender: 'taskModelscopedSlots' }
+          },
+          {
+            title: '鎵规',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'batch'
+          },
+          {
+            title: '瀵嗗害',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'materialDensity'
+          },
+          {
+            title: '涓嬫枡浜х嚎',
+            align: 'center',
+            //sorter: true,
+            dataIndex: 'blankingProductionLine',
+            scopedSlots: { customRender: 'blankingProductionLineSlots' }
+          },
+          {
+            title: '鍗曟嵁鎬绘暟閲�',
+            align: 'center',
+            //sorter: true,
+            dataIndex: 'orderQuantityTotal'
+          },
+          {
+            title: '鍏ュ簱鍙�',
+            align: 'center',
+            dataIndex: 'preferredPortName'
+          },
+          {
+            title: '鍒涘缓鏃堕棿',
+            align: 'center',
+            dataIndex: 'createdTime'
+          },
+          {
+            title: '鍒涘缓浜�',
+            align: 'center',
+            dataIndex: 'createdUserName'
+          },
+          {
+            title: '鐘舵��',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'orderStatus',
+            scopedSlots: { customRender: 'orderStatusscopedSlots' }
+          },
+          {
+            title: '澶囨敞',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'remarks'
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          this.selectedRowKeys = []
+          this.selectDels = []
+          this.selectDistributes = []
+          this.selectWithdraws = []
+          this.infoId = null
+          let params = {...this.queryParam}
+          if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+            params.SearchBeginTime = params.dateRange[0] + ' 00:00:00'
+            params.SearchEndTime = params.dateRange[1] + ' 23:59:59'
+            delete params.dateRange
+          } else {
+            delete params.dateRange
+            delete params.SearchBeginTime
+            delete params.SearchEndTime
+          }
+          return FoamingRuKuOrderPage(Object.assign(parameter, params)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0])
+            }
+            return res.data
+          })
+        },
+        orderSubclassData:[],
+        orderStatusData: [],
+        preferredPortList:[],
+        blankingProductionLineList:[],
+        selectedRowKeys: [],
+        selectDels: [],
+        selectDistributes: [],
+        selectWithdraws: [],
+        infoId:null,
+        infoOrderNo:'',
+        typeVisible:false,
+        confirmDistributes:[],
+        numberVisible:false,
+        numberRow:{}
+      }
+    },
+    created () {
+      const _options = this.$options
+      this.orderStatusData = _options.filters['dictData']('order_status')
+      this.blankingProductionLineList = _options.filters['dictData']('blanking_production_line')
+      if (this.hasPerm('fp_rk_action')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '120px',
+          align: 'center',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+    },
+    mounted(){
+      this.getInitSelectOptions()
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      getInitSelectOptions(){
+        Promise.all([
+          WareOrderTypePage(408733612789829),
+          WareWarehouseEntranceNonPage('1')
+        ]).then(response=>{
+          this.orderSubclassData = response[0].data || []
+          this.preferredPortList = response[1].data || []
+        }).catch(()=>{
+          
+        })
+      },
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      FoamingRuKuOrderDelete (record) {
+        FoamingRuKuOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onViewDetail(obj){
+        if (this.infoId===obj.id) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      onEdit(obj){
+        if (!this.hasPerm('FoamingRuKuOrder:edit')) return false;
+        if (obj.orderStatus!==1 && obj.orderStatus!==4) return false
+        this.$refs.form.init('edit',obj)
+        //abc
+      },
+      onDel(obj){
+        if (obj.orderStatus!==1 && obj.orderStatus!==4) return false
+        this.dealDel([obj.id])
+      },
+      onForceComplete(obj){
+        if (obj.orderStatus!==2) return false
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屽己鍒跺畬鎴愭搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleForceComplete(obj.id,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      onOpenNumberChangeModal(obj){
+        if (obj.orderStatus!==2 && obj.orderStatus!==3) return false
+        this.numberVisible = true
+        this.numberRow = obj
+      },
+      numberChangeCallback(){
+        this.$refs.table.refresh()
+      },
+      onDistribute(obj){
+        if (obj.orderStatus!==1 && obj.orderStatus!==4) return false
+        this.dealDistribute([obj.id])
+      },
+      onWithdraw(obj){
+        if (obj.orderStatus!==1 && obj.orderStatus!==2) return false
+        this.dealWithdraw([obj.id])
+      },
+      onMulDel(){
+        this.dealDel(this.selectDels)
+      },
+      onMulDistribute(){
+        this.dealDistribute(this.selectDistributes)
+      },
+      onMulWithdraw(){
+        this.dealWithdraw(this.selectWithdraws)
+      },
+      dealDel(ids){
+        if (!this.hasPerm('FoamingRuKuOrder:delete')) return false;
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屽垹闄ゆ搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleDelete(ids,(f)=>{
+              if (f) {
+                if (this.infoId && ids.indexOf(this.infoId)>=0) {
+                  this.infoId = null
+                }
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      dealDistribute(ids){
+        this.confirmDistributes = ids
+        this.typeVisible = true
+      },
+      distributeConfirmCallback(val){
+        let params = {id:this.confirmDistributes,orderDistributeType:val}
+        this.handleDistribute(params,(f)=>{
+          if (f) {
+            this.$refs.table.refresh()
+          }
+        })
+      },
+      dealWithdraw(ids){
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屾挙鍥炴搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleWithdraw(ids,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      handleForceComplete(id,callback){
+        this.$loading.show()
+        FoamingRuKuOrderForceComplete(id).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      handleDelete(id,callback){
+        this.$loading.show()
+        let params = {id}
+        FoamingRuKuOrderDelete(params).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      handleDistribute(params,callback){
+        this.$loading.show()
+        FoamingRuKuOrderMulDistribute(params).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      handleWithdraw(id,callback){
+        this.$loading.show()
+        FoamingRuKuOrderMulWithdraw(id).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        let arr1=[],arr2=[],arr3=[]
+        selectedRows.forEach((item)=>{
+          if (item.orderStatus===1 || item.orderStatus===4) {
+            arr2.push(item.id)
+            arr1.push(item.id)
+          }
+          if (item.orderStatus===1 || item.orderStatus===2) {
+            arr3.push(item.id)
+          }
+        })
+        this.selectDels = arr1
+        this.selectDistributes = arr2
+        this.selectWithdraws = arr3
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/infoBlock.vue
new file mode 100644
index 0000000..c16b574
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/infoBlock.vue
@@ -0,0 +1,173 @@
+<template>
+  <div class="entry-notes-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <template slot="specSlots" slot-scope="text,record">
+        {{`${record.long}*${record.wide}*${record.high}`}}
+      </template>
+      <template slot="statusSlots" slot-scope="text,record">
+        <a-tag :color="text==='瀹屾垚'?'#008000':(
+          text==='鎵ц涓�'?'#1e90ff':(
+            text==='鍙栨秷'?'#556b2f':(
+              text==='鏆傚仠'?'#8b0000':(
+                text==='鎾ゅ洖'?'#ff00ff':'gray'
+              )
+            )
+          )
+        )">{{text}}</a-tag>
+      </template>
+      <template slot="action" slot-scope="text,record">
+        <a @click="onOpenEntrance(record.id)">鍏ュ簱</a>
+        <a style="margin-left:10px;" :class="[record.isCancel!==1?'disabled':'']" @click="onCancel(record)">鍙栨秷</a>
+      </template>
+    </s-table>
+    
+    <entrance-select-modal :visible.sync="entranceVisible" :preferredPortList="preferredPortList" :did="entraceId" @callback="actionBack" />
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { FoamingRuKuOrderDetailPage, FoamingRuKuDetailCancel } from '@/api/modular/main/FoamingRuKuOrderManage'
+import entranceSelectModal from './entranceSelectModal.vue'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'entryNotesInfoBlock',
+  components:{STable,entranceSelectModal},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    },
+    preferredPortList:{
+      type:Array,
+      default:function(){
+        return []
+      }
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鎵规', align:'center', dataIndex: 'batch', key: 'batch' },
+        { title: '瀵嗗害', align:'center', dataIndex: 'materialDensity', key: 'materialDensity', width: 80 },
+        { title: '灏哄', align:'center', dataIndex: 'spec', scopedSlots: { customRender: 'specSlots' }, width: 150 },
+        { title: '鍏ュ簱鍙�', align:'center', dataIndex: 'preferredPort', key: 'preferredPort' },
+        { title: '浠诲姟鐘舵��', align:'center', dataIndex: 'taskStatusName', scopedSlots: { customRender: 'statusSlots' }, width: 150 }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+      entranceVisible:false,
+      entraceId:null
+    }
+  },
+  created(){
+    if (this.hasPerm('fp_rk_action')) {
+      this.columns.push({ title: '鎿嶄綔', align: 'center', dataIndex: 'action', scopedSlots: { customRender: 'action' }, width: 105 })
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.OrderId = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return FoamingRuKuOrderDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+    onOpenEntrance(id){
+      this.entraceId = id
+      this.entranceVisible = true
+    },
+    actionBack(){
+      this.$refs.table.refresh()
+    },
+    onCancel(obj){
+      if (obj.isCancel!==1) return false
+      this.dealCancel(obj.id)
+    },
+    dealCancel(id){
+      this.$confirm({
+        title: '纭畾瑕佽繘琛屽彇娑堟搷浣滃悧锛�',
+        okText: '纭畾',
+        okType: 'danger',
+        cancelText: '鍙栨秷',
+        onOk:()=>{
+          this.handleCancel(id,(f)=>{
+            if (f) {
+              this.$refs.table.refresh()
+            }
+          })
+        }
+      });
+    },
+    handleCancel(id,callback){
+      this.$loading.show()
+      FoamingRuKuDetailCancel(id).then(()=>{
+        this.$loading.hide()
+        callback(true)
+      }).catch(()=>{
+        this.$loading.hide()
+        callback(false)
+      })
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.entry-notes-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/numberChangeModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/numberChangeModal.vue
new file mode 100644
index 0000000..101c589
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/numberChangeModal.vue
@@ -0,0 +1,88 @@
+<template>
+  <a-modal
+    title="澧炶ˉ鏁伴噺"
+    width="220px"
+    :visible="visible"
+    dialogClass="zero-modal"
+    @cancel="handleCancel"
+  >
+    <div class="shk-in-number-change-modal">
+       <a-input-number style="width:100%;" v-model="qty" :min="0" />
+    </div>
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button type="primary" key="ok" :disabled="!qty" @click="onConfirm">纭</a-button>
+    </template>
+  </a-modal> 
+</template>
+
+<script>
+import { FoamingRuKuOrderAddOrderDetails } from '@/api/modular/main/FoamingRuKuOrderManage'
+export default {
+  name:'shkInNumberChangeModal',
+  emits:['update:visible','callback'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    },
+    obj:{
+      type:Object,
+      default:function(){
+        return {}
+      }
+    }
+  },
+  data(){
+    return {
+      qty:0
+    }
+  },
+  watch:{
+    visible:{
+      immediate:true,
+      handler(newV,oldV){
+        if (newV!==oldV){
+          this.initShow()
+        }
+      }
+    }
+  },
+  methods:{
+    handleCancel(){
+      this.$emit('update:visible',false)
+    },
+    initShow(){
+      this.qty = 0 
+    },
+    onConfirm(){
+      this.$loading.show()
+      this.handleUpdateAjax((f)=>{
+        this.$loading.hide()
+        if (f) {
+          this.$message.success('鎿嶄綔鎴愬姛锛�');
+          this.handleCancel()
+          this.$emit('callback')
+        }
+      })
+    },
+    handleUpdateAjax(callback){
+      let _params = {
+        id:this.obj.id,
+        qty:this.qty
+      }
+      FoamingRuKuOrderAddOrderDetails(_params).then(()=>{
+        callback(true)
+      }).catch(()=>{
+        callback(false)
+      })
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.shk-in-number-change-modal{
+  padding: 8px 16px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/typeSelectModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/typeSelectModal.vue
new file mode 100644
index 0000000..5968ccc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/typeSelectModal.vue
@@ -0,0 +1,82 @@
+<template>
+  <a-modal
+    title="閫夋嫨鍏ュ簱鏂瑰紡"
+    width="300px"
+    :visible="visible"
+    dialogClass="zero-modal"
+    @cancel="handleCancel"
+  >
+    <div class="shk-in-type-select-modal">
+      <a-radio-group v-model="radioValue" :options="radioOptions" />
+    </div>
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button type="primary" key="ok" @click="onConfirm">纭</a-button>
+    </template>
+  </a-modal> 
+</template>
+
+<script>
+export default {
+  name:'shkInTypeSelectModal',
+  emits:['update:visible','callback'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    }
+  },
+  data(){
+    return {
+      radioOptions:[],
+      radioValue:'2'
+    }
+  },
+  watch:{
+    visible:{
+      immediate:true,
+      handler(newV,oldV){
+        if (newV!==oldV){
+          this.initShow()
+          this.handleClose()
+        }
+      }
+    }
+  },
+  created(){
+    if (!this.radioOptions.length) {
+      this.radioOptions = this.$options.filters['dictData']('task_model').map((item)=>{
+        let obj = {}
+        obj.value = item.code
+        obj.label = item.name
+        return obj
+      })
+    }
+  },
+  methods:{
+    handleCancel(){
+      this.$emit('update:visible',false)
+    },
+    initShow(){
+      if (this.visible) {
+        
+      }
+    },
+    handleClose(){
+      if (!this.visible) {
+        this.radioValue = '2'
+      }
+    },
+    onConfirm(){
+      this.$emit('callback',this.radioValue)
+      this.handleCancel()
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.shk-in-type-select-modal{
+  padding: 8px 16px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/editLevelModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/editLevelModal.vue
new file mode 100644
index 0000000..63d877d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/editLevelModal.vue
@@ -0,0 +1,90 @@
+<template>
+  <a-modal
+    title="浼樺厛绾т慨鏀�"
+    width="300px"
+    :visible="visible"
+    dialogClass="zero-modal"
+    @cancel="handleCancel"
+  >
+    <div class="shk-task-level-edit-modal">
+       <a-select v-model="taskLevel" placeholder="璇烽�夋嫨..." style="width:100%;">
+         <a-select-option v-for="index of 10" :key="index" :value="index">{{index}}</a-select-option>
+       </a-select>
+    </div>
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button type="primary" key="ok" @click="onConfirm">纭</a-button>
+    </template>
+  </a-modal> 
+</template>
+
+<script>
+import { FoamingTaskLevelUpdate } from '@/api/modular/main/FoamingTaskManage'
+export default {
+  name:'shkTaskLevelEditModal',
+  emits:['update:visible','callback'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    },
+    obj:{
+      type:Object,
+      default:function(){
+        return {}
+      }
+    }
+  },
+  data(){
+    return {
+      taskLevel:1
+    }
+  },
+  watch:{
+    visible:{
+      immediate:true,
+      handler(newV,oldV){
+        if (newV!==oldV){
+          this.initShow()
+        }
+      }
+    }
+  },
+  methods:{
+    handleCancel(){
+      this.$emit('update:visible',false)
+    },
+    initShow(){
+      this.taskLevel = this.obj.taskLevel 
+    },
+    onConfirm(){
+      this.$loading.show()
+      this.handleUpdateAjax((f)=>{
+        this.$loading.hide()
+        if (f) {
+          this.$message.success('鎿嶄綔鎴愬姛锛�');
+          this.handleCancel()
+          this.$emit('callback')
+        }
+      })
+    },
+    handleUpdateAjax(callback){
+      let _params = {
+        id:this.obj.id,
+        taskLevel:this.taskLevel
+      }
+      FoamingTaskLevelUpdate(_params).then(()=>{
+        callback(true)
+      }).catch(()=>{
+        callback(false)
+      })
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.shk-task-level-edit-modal{
+  padding: 8px 16px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/index.vue
new file mode 100644
index 0000000..126542d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/index.vue
@@ -0,0 +1,528 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('FoamingTask:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鎵规">
+                <a-input v-model="queryParam.batch" allow-clear placeholder="璇疯緭鍏ユ壒娆�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="宸烽亾">
+                <a-select style="width: 100%" placeholder="璇烽�夋嫨宸烽亾" allow-clear v-model="queryParam.Aisle">
+                  <a-select-option v-for="(item,index) in aislesOptions" :key="'aisle-sel-'+index" :value="item">{{item}}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡缂栧彿">
+                  <a-input v-model="queryParam.MaterialNo" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="瀵嗗害">
+                  <a-input v-model="queryParam.MaterialDensity" allow-clear placeholder="璇疯緭鍏ュ瘑搴�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠诲姟鍙�">
+                  <a-input v-model="queryParam.taskNo" allow-clear placeholder="璇疯緭鍏ヤ换鍔″彿"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠诲姟鏂瑰紡">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskModel" placeholder="璇烽�夋嫨浠诲姟鏂瑰紡">
+                    <a-select-option v-for="(item,index) in taskModelData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠诲姟绫诲瀷">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskType" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
+                    <a-select-option v-for="(item,index) in taskTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠诲姟鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskStatus" placeholder="璇烽�夋嫨浠诲姟鐘舵��">
+                    <a-select-option v-for="(item,index) in taskStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="璧峰鐐�">
+                  <a-input v-model="queryParam.SourcePlace" allow-clear placeholder="璇疯緭鍏ヨ捣濮嬬偣"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩爣鐐�">
+                  <a-input v-model="queryParam.ToPlace" allow-clear placeholder="璇疯緭鍏ョ洰鏍囩偣"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍒涘缓鏃堕棿">
+                  <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+                </a-form-item>
+              </a-col>
+            </template>
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator">
+          <a-button type="danger" icon="close-circle" :disabled="!selectedCancels.length" @click="">鍙栨秷</a-button>
+          <a-button type="danger" icon="pause" :disabled="!selectedPauses.length" @click="">鏆傚仠</a-button>
+          <a-button type="danger" icon="double-right" :disabled="!selectedContinuess.length" @click="">缁х画</a-button>
+        </template>
+        <span slot="taskModelscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'#ffd700':(text===3?'#00ced1':(text===2?'#1e90ff':'gray'))">{{ 'task_model' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="taskTypescopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'#008000':(text===3?'#ffd700':(text===3?'#1e90ff':'gray'))">{{ 'task_type' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="taskStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text===3?'#008000':(
+            text===2?'#1e90ff':(
+              text===4?'#556b2f':(
+                text===5?'#8b0000':(
+                  text===6?'#ff00ff':'gray'
+                )
+              )
+            )
+          )">{{ 'task_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="isReadscopedSlots" slot-scope="text">
+          {{ 'yes_or_no' | dictType(text) }}
+        </span>
+        <span slot="taskDodeviceStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text===6?'#008000':(
+            text===5?'#ff00ff':(
+              text===2?'#00ced1':(
+                text===3?'#1e90ff':(
+                  text===4?'#0000cd':'gray'
+                )
+              )
+            )
+          )">{{ 'task_dodevice_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <!-- <a :class="[(record.taskStatus===3||record.taskStatus===4||record.taskStatus===5||record.taskStatus===6)?'disabled':'']" style="margin-right:10px;" @click="onForceComplete(record)">瀹屾垚</a> -->
+          <a :class="[record.taskStatus===1?'':'disabled']" @click="onUpLevel(record)" style="margin-right:10px;"><a-icon type="arrow-up" /></a>
+          <a :class="[record.taskStatus===1?'':'disabled']" @click="onDownLevel(record)" style="margin-right:10px;"><a-icon type="arrow-down" /></a>
+          <!-- <a-dropdown>
+            <a class="ant-dropdown-link" @click="e => e.preventDefault()">鏇村</a>
+            <a-menu slot="overlay">
+              <a-menu-item><a :class="[record.taskStatus===1?'':'disabled']" @click="onCancel(record)">鍙栨秷</a></a-menu-item>
+              <a-menu-item><a :class="[record.taskStatus===1?'':'disabled']" @click="onPause(record)">鏆傚仠</a></a-menu-item>
+              <a-menu-item><a :class="[record.taskStatus===5?'':'disabled']" @click="onContinue(record)">缁х画</a></a-menu-item>
+            </a-menu>
+          </a-dropdown> -->
+        </span>
+      </s-table>
+    </a-card>
+    
+    <!-- <edit-level-modal :visible.sync="levelVisible" :obj="levelObj" @callback="onLevelConfirm" /> -->
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { 
+    FoamingTaskPage,
+    FoamingTaskForceComplete, 
+    FoamingTaskCancel, 
+    FoamingTaskPause, 
+    FoamingTaskContinue ,
+    FoamingTaskUpLevel,
+    FoamingTaskDownLevel
+  } from '@/api/modular/main/FoamingTaskManage'
+  import { WmsPlaceGetFAisles } from '@/api/modular/main/WmsPlaceManage'
+  //import editLevelModal from './editLevelModal.vue'
+  export default {
+    components: {
+      STable,
+      //editLevelModal
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '浠诲姟鍙�',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'taskNo'
+          },
+          {
+            title: '浠诲姟鏂瑰紡',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'taskModel',
+            scopedSlots: { customRender: 'taskModelscopedSlots' }
+          },
+          {
+            title: '浠诲姟绫诲瀷',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'taskType',
+            scopedSlots: { customRender: 'taskTypescopedSlots' }
+          },
+          {
+            title: '浠诲姟鐘舵��',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'taskStatus',
+            scopedSlots: { customRender: 'taskStatusscopedSlots' }
+          },
+          {
+            title: '浠诲姟浼樺厛绾�',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'taskLevel'
+          },
+          {
+            title: '宸烽亾',
+            align: 'center',
+            dataIndex: 'aisle'
+          },
+          {
+            title: '璧峰鐐�',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'sourcePlace'
+          },
+          {
+            title: '鐩爣鐐�',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'toPlace'
+          },
+          {
+            title: '浠诲姟璁惧鐘舵��',
+            align: 'center',
+            dataIndex: 'taskDodeviceStatus',
+            scopedSlots: { customRender: 'taskDodeviceStatusscopedSlots' }
+          },
+          {
+            title: '鐗╂枡缂栧彿',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'materialNo'
+          },
+          {
+            title: '鐗╂枡灏哄',
+            align: 'center',
+            // sorter: true,
+            dataIndex: 'materialSpec'
+          },
+          {
+            title: '鍒涘缓鏃堕棿',
+            align: 'center',
+            dataIndex: 'createdTime'
+          },
+          {
+            title: '鏇存柊鏃堕棿',
+            align: 'center',
+            dataIndex: 'updatedTime'
+          },
+          {
+            title: '鎿嶄綔',
+            width: '70px',
+            dataIndex: 'action',
+            fixed:'right',
+            align: 'center',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          let params = {...this.queryParam}
+          if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+            params.SearchBeginTime = params.dateRange[0] + ' 00:00:00'
+            params.SearchEndTime = params.dateRange[1] + ' 23:59:59'
+            delete params.dateRange
+          } else {
+            delete params.dateRange
+            delete params.SearchBeginTime
+            delete params.SearchEndTime
+          }
+          return FoamingTaskPage(Object.assign(parameter, params)).then((res) => {
+            return res.data
+          })
+        },
+        taskModelData: [],
+        taskTypeData: [],
+        taskStatusData: [],
+        isReadData: [],
+        areaNameData: [],
+        taskDodeviceStatusData: [],
+        aislesOptions:[],
+        selectedRowKeys: [],
+        selectedCancels: [],
+        selectedPauses: [],
+        selectedContinuess: [],
+        levelVisible:false,
+        levelObj:{}
+      }
+    },
+    created () {
+      const $options = this.$options
+      this.taskModelData = $options.filters['dictData']('task_model')
+      this.taskTypeData = $options.filters['dictData']('task_type')
+      this.taskStatusData = $options.filters['dictData']('task_status')
+      this.isReadData = $options.filters['dictData']('yes_or_no')
+      this.taskDodeviceStatusData = $options.filters['dictData']('task_dodevice_status')
+      /* console.log(this.taskDodeviceStatusData.map((item)=>{
+        return [item.code,item.name]
+      })) */
+    },
+    mounted(){
+      this.getAislesSelectOptions()
+    },
+    methods: {
+      getAislesSelectOptions(){
+        WmsPlaceGetFAisles().then((d)=>{
+          this.aislesOptions = d.data || []
+        }).catch(()=>{})
+      },
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      /* openLevelModal(obj){
+        if (obj.taskStatus!==1) return false
+        this.levelObj = obj
+        this.levelVisible = true
+      },
+      onLevelConfirm(){
+        this.$refs.table.refresh()
+      }, */
+      onMulCancel(){
+        this.dealCancel(this.selectedCancels)
+      },
+      onMulPause(){
+        this.dealPause(this.selectedPauses)
+      },
+      onMulContinue(){
+        this.dealContinue(this.selectedContinuess)
+      },
+      onForceComplete(obj){
+        if (obj.taskStatus===3||obj.taskStatus===4||obj.taskStatus===5) return false
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屽己鍒跺畬鎴愭搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleForceComplete(obj.id,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      onUpLevel(obj){
+        if (obj.taskStatus!==1) return false
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屼紭鍏堢骇璋冩暣鍚楋紵',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleUpLevel(obj.id,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      onDownLevel(obj){
+        if (obj.taskStatus!==1) return false
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屼紭鍏堢骇璋冩暣鍚楋紵',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleDownLevel(obj.id,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      onCancel(obj){
+        if (obj.taskStatus!==1) return false
+        this.dealCancel([obj.id])
+      },
+      onPause(obj){
+        if (obj.taskStatus!==1) return false
+        this.dealPause([obj.id])
+      },
+      onContinue(obj){
+        if (obj.taskStatus!==5) return false
+        this.dealContinue([obj.id])
+      },
+      dealCancel(ids){
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屽彇娑堟搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleCancel(ids,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      dealPause(ids){
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屾殏鍋滄搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handlePause(ids,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      dealContinue(ids){
+        this.$confirm({
+          title: '纭畾瑕佺户缁换鍔″悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleContinue(ids,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      handleForceComplete(id,callback){
+        this.$loading.show()
+        FoamingTaskForceComplete(id).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      handleUpLevel(id,callback){
+        this.$loading.show()
+        FoamingTaskUpLevel(id).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      handleDownLevel(id,callback){
+        this.$loading.show()
+        FoamingTaskDownLevel(id).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      handleCancel(id,callback){
+        this.$loading.show()
+        FoamingTaskCancel(id).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      handlePause(id,callback){
+        this.$loading.show()
+        FoamingTaskPause(id).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      handleContinue(id,callback){
+        this.$loading.show()
+        FoamingTaskContinue(id).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      onSelectChange (selectedRowKeys, selectedRows){
+        this.selectedRowKeys = selectedRowKeys
+        let arr1=[],arr2=[],arr3=[]
+        selectedRows.forEach((item)=>{
+          if (item.taskStatus===1) {
+            arr1.push(item.id)
+            arr2.push(item.id)
+          }
+          if (item.taskStatus===5) {
+            arr3.push(item.id)
+          }
+        })
+        this.selectedCancels = arr1
+        this.selectedPauses = arr2
+        this.selectedContinuess = arr3
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/addForm.vue
new file mode 100644
index 0000000..a20c586
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/addForm.vue
@@ -0,0 +1,311 @@
+锘�<template>
+  <a-modal
+    :title="(type==='modify'?'淇敼':'鏂板')+'鐩樼偣璁″垝'"
+    width="90vw"
+    dialogClass="zero-modal"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <div class="inventory-plan-modal-content">
+        <div class="form-view">
+          <a-form :form="form">
+            <a-row>
+              <a-col :md="12" :sm="24">
+                <a-form-item label="璁″垝鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input disabled v-decorator="['planNo',{rules:[{required:true,message:'璁″垝鍙蜂笉鍙负绌猴紒'}]}]" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="12" :sm="24">
+                <a-form-item label="鐩樼偣瑙勫垯" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-select :allowClear="true" style="width: 100%" v-decorator="['inventoryRuleId',{rules:[{required:true,message:'璇烽�夋嫨鐩樼偣瑙勫垯锛�'}]}]" placeholder="璇烽�夋嫨...">
+                    <a-select-option v-for="(item,index) in ruleOptions" :key="index" :value="item.id">
+                      {{ item.label }}
+                    </a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="12" :sm="24">
+                <a-form-item label="鐩樼偣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-select style="width: 100%" v-decorator="['areaID',{rules:[{required:true,message:'璇烽�夋嫨鐩樼偣浠撳簱锛�'}]}]" placeholder="璇烽�夋嫨...">
+                    <a-select-option v-for="(item,index) in areaOptions" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="12" :sm="24">
+                <a-form-item label="鐩樼偣鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-range-picker style="width: 100%" v-decorator="['dateRange',{rules:[{required:true,message:'璇风‘璁ょ洏鐐规椂闂达紒'}]}]" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+                </a-form-item>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
+        <div class="action-view">
+          <a-button type="primary" icon="plus" @click="openChoose">
+            娣诲姞璁″垝鏄庣粏
+          </a-button>
+        </div>
+        <div class="list-view" ref="listWrapper">
+          <!-- 娉ㄦ剰scroll.x鐨勫�� -->
+          <template v-if="th">
+            <a-table v-if="type==='modify'" :data-source="list" :columns="columns" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+              <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+              <template slot="action" slot-scope="text,record,index">
+                <a-button type="danger" size="small" @click.stop="cancelListItem(index)">鍒犻櫎</a-button>
+              </template>
+              <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+            </a-table>
+            <a-table v-else :data-source="list" :columns="columns" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+              <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+              <template slot="action" slot-scope="text,record,index">
+                <a-button type="danger" size="small" @click.stop="cancelListItem(index)">鍒犻櫎</a-button>
+              </template>
+              <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+            </a-table>
+          </template>
+          
+        </div>
+      </div>
+    </a-spin>
+    
+    <choose-modal :visible.sync="chooseVisible" @callback="chooseBack" />
+    
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="submit" type="primary" :loading="confirmLoading" @click="onSubmit" :disabled="!list.length">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    InventoryPlanAdd,
+    GetBillNumber,
+    InventoryPlanEdit,
+    InventoryPlanDetailPage
+  } from '@/api/modular/main/InventoryPlanManage'
+  import ChooseModal from './chooseMaterials.vue'
+  import moment from 'moment'
+  export default {
+    components:{ChooseModal},
+    props:{
+      type:{
+        type:String,
+        default:''
+      },
+      areaOptions:{
+        type:Array,
+        default:function(){
+          return []
+        }
+      },
+      ruleOptions:{
+        type:Array,
+        default:function(){
+          return []
+        }
+      }
+    },
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 18 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        th:0,
+        tableKey:'containerCode',
+        list:[],
+        columns:[
+          { title: '搴忓彿', key: 'index', width: 70, align:'center', scopedSlots: { customRender: 'index' }},
+          { title: '瀹瑰櫒缂栧彿', dataIndex: 'containerCode', key: 'containerCode' },
+          { title: '搴撲綅缂栧彿', dataIndex: 'placeCode', key: 'placeCode' },
+          { title: '鐗╂枡缂栫爜', dataIndex: 'materialCode', key: 'materialCode' },
+          { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+          { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+          { title: '鏁伴噺', dataIndex: 'stockNumber', key: 'stockNumber' },
+          { title: '鎿嶄綔', key: 'action', width: 80, align:'center', scopedSlots: { customRender: 'action' }}
+        ],
+        chooseVisible:false,
+        planid:null
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      init (record) {
+        this.visible = true
+        this.$nextTick(() => {
+          this.th = this.$refs.listWrapper.clientHeight - 60
+          if (this.type==='modify') {
+            this.getEditInitData(record)
+          } else {
+            this.getAddInitData()
+          }
+        });
+      },
+      getAddInitData(){
+        this.confirmLoading = true;
+        GetBillNumber().then(d=>{
+          let formData = {
+            planNo:(d.data || '')
+          }
+          this.form.setFieldsValue(formData)
+          this.confirmLoading = false;
+        }).catch((err)=>{
+          this.confirmLoading = false;
+        })
+      },
+      getEditInitData(record){
+        let formData = {
+          planNo:record.planNo,
+          inventoryRuleId:record.inventoryRuleId,
+          areaID:String(record.areaID)
+        }
+        if (record.startPlanTime) {
+          record.startPlanTime = moment(record.startPlanTime).format('YYYY-MM-DD')
+        }
+        if (record.endPlanTime) {
+          record.endPlanTime = moment(record.endPlanTime).format('YYYY-MM-DD')
+        }
+        if (record.startPlanTime && record.endPlanTime) {
+          formData.dateRange = [record.startPlanTime,record.endPlanTime]
+        } else {
+          formData.dateRange = []
+        }
+        this.form.setFieldsValue(formData)
+        this.confirmLoading = true;
+        let params = {
+          Id:record.id,
+          PageNo:1,
+          PageSize:999
+        }
+        this.planid = record.id
+        InventoryPlanDetailPage(params).then((d)=>{
+          this.list = d.data.rows || []
+          this.confirmLoading = false;
+        }).catch(()=>{
+          this.confirmLoading = false;
+        })
+      },
+      chooseBack(arr){
+        let newArr = [], reCount = 0;
+        arr.forEach((item)=>{
+          let f = false;
+          for (let i=0;i<this.list.length;i++) {
+            if (this.list[i][this.tableKey] === item[this.tableKey]) {
+              reCount++;
+              f = true
+              break;
+            }
+          }
+          if (!f) {
+            let _obj = {...item}
+            _obj.orderQuantity = 0
+            _obj.requireTime = ''
+            newArr.push(item)
+          }
+        })
+        this.list = [].concat(newArr,this.list)
+        if (reCount) {
+          this.$message.warning(`${reCount}绗旀暟鎹凡瀛樺湪锛屾湭娣诲姞锛乣);
+        }
+      },
+      cancelListItem(index){
+        this.list.splice(index,1)
+      },
+      openChoose(){
+        this.chooseVisible = true
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      onSubmit () {
+        const { form: { validateFields } } = this
+        validateFields((errors, values) => {
+          if (!errors) {
+            this.confirmLoading = true
+            this.handleSubmit(values,(fx)=>{
+              if (fx) {
+                this.$message.success('鎻愪氦鎴愬姛')
+                this.confirmLoading = false
+                this.handleCancel()
+                this.$emit('ok')
+              } else {
+                this.confirmLoading = false
+              }
+            })
+          } 
+        })
+      },
+      handleSubmit(values,callback){
+        this.confirmLoading = true
+        let params = {...values}
+        if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+          params.startPlanTime = params.dateRange[0] + ' 00:00:00'
+          params.endPlanTime = params.dateRange[1] + ' 23:59:59'
+          delete params.dateRange
+        } else {
+          delete params.dateRange
+          delete params.startPlanTime
+          delete params.endPlanTime
+        }
+        if (this.type==='modify') {
+          this.handleSubmitModify(params,callback)
+        } else {
+          this.handleSubmitAdd(params,callback)
+        }
+      },
+      handleSubmitAdd(values,callback){
+        let params = {...values,...{inventoryPlanModel:this.list}}
+        InventoryPlanAdd(params).then(()=>{
+          callback && callback(true)
+        }).catch(()=>{
+          callback && callback(false)
+        })
+      },
+      handleSubmitModify(values,callback){
+        let params = {...values,...{inventoryPlanModel:this.list,id:this.planid}}
+        InventoryPlanEdit(params).then(()=>{
+          callback && callback(true)
+        }).catch(()=>{
+          callback && callback(false)
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.list = []
+        this.planid = null
+        this.visible = false
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+.inventory-plan-modal-content{
+  height: 70vh;
+  display: flex;
+  flex-direction: column;
+  .form-view,.action-view{
+    flex-shrink: 0;
+  }
+  .form-view{
+    background-color: #F3F7FA;
+    padding-top: 20px;
+  }
+  .action-view{
+    padding: 8px 16px;
+  }
+  .list-view{
+    flex-grow: 1;
+    padding: 0 16px;
+    overflow: auto;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/chooseMaterials.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/chooseMaterials.vue
new file mode 100644
index 0000000..59f3846
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/chooseMaterials.vue
@@ -0,0 +1,330 @@
+<template>
+  <a-modal
+    title="鐩樼偣璁″垝鏄庣粏閫夋嫨"
+    width="85vw"
+    :visible="innerVisible"
+    dialogClass="zero-modal"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="loading">
+      <div class="inventory-plan-choose-modal-content">
+        <div class="choose-bar">
+          <div class="choose-form-view">
+            <a-form layout="inline">
+              <a-row>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="鐗╂枡缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-input v-model.trim="query.MaterialName" placeholder="璇疯緭鍏�..." allowClear />
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-input v-model.trim="query.MaterialCode" placeholder="璇疯緭鍏�..." allowClear />
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="鐗╂枡绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-select style="width: 100%" v-model="query.MaterialType" placeholder="璇烽�夋嫨..." allowClear>
+                      <a-select-option v-for="(item,index) in types" :value="item.code" :key="'types-sel-'+index">{{item.name}}</a-select-option>
+                    </a-select>
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="瀹瑰櫒缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-input v-model.trim="query.ContainerCode" placeholder="璇疯緭鍏�..." allowClear />
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="搴撲綅缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-input v-model.trim="query.PlaceCode" placeholder="璇疯緭鍏�..." allowClear />
+                  </a-form-item>
+                </a-col>
+              </a-row>
+            </a-form>
+          </div>
+          <div class="choose-btns-view">
+            <a-button type="primary" style="margin-bottom:6px;" @click.stop="onQuery">鏌ヨ</a-button>
+            <a-button @click.stop="onReset">閲嶇疆</a-button>
+          </div>
+        </div>
+        <div class="table-box" ref="listWrapper">
+          <div class="action-view" v-if="showType===1">
+            <a-table v-if="th1" :data-source="list" :columns="listColumns" 
+              :pagination="{current:queried.PageNo,pageSize:queried.PageSize,total:listTotal}" 
+              :rowKey="tableKey" :row-selection="{onChange:rowSelectionsChange,selectedRowKeys:selectedRowKeys}" :scroll="{y:th1}"
+              @change="chooseTablePageChange">
+              <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+              <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+            </a-table>
+          </div>
+          <div class="choosen-view" v-else>
+            <a-table v-if="th2" :data-source="choosen" :columns="choosenColumns" :rowKey="tableKey" :pagination="false" :scroll="{y:th2}">
+              <template slot="action" slot-scope="text,record,index">
+                <a-button type="danger" size="small" @click.stop="cancelChoosen(index)">鍒犻櫎</a-button>
+              </template>
+              <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+            </a-table>
+          </div>
+        </div>
+      </div>
+    </a-spin>
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="choosen" type="primary" @click="changeShowType">鎵�閫夌墿鏂�<span v-if="choosen.length>0">({{choosen.length}})</span></a-button>
+      <a-button key="submit" type="primary" :loading="loading" @click="handleSubmit" :disabled="!choosen.length">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import { GetCouldOuts } from '@/api/modular/main/InventoryPlanManage'
+const defaultQuery = {
+  MaterialType:undefined,
+  ContainerCode:'',
+  MaterialCode:'',
+  MaterialName:'',
+  PlaceCode:''
+}
+const pagination = {
+  PageNo:1,
+  PageSize:10
+} 
+export default {
+  emits:['update:visible','callback'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    }
+  },
+  data(){
+    return {
+      innerVisible:false,
+      loading:false,
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 5 }
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 18 }
+      },
+      types:[],
+      query:{...defaultQuery},
+      queried:{...pagination},
+      tableKey:'containerCode',
+      listTotal:0,
+      list:[],
+      listColumns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '瀹瑰櫒缂栧彿', dataIndex: 'containerCode', key: 'containerCode' },
+        { title: '搴撲綅缂栧彿', dataIndex: 'placeCode', key: 'placeCode' },
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialCode', key: 'materialCode' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+        { title: '鏁伴噺', dataIndex: 'stockNumber', key: 'stockNumber' }
+      ],
+      selectedRowKeys:[],
+      choosen:[],
+      choosenColumns:[
+        { title: '瀹瑰櫒缂栧彿', dataIndex: 'containerCode', key: 'containerCode' },
+        { title: '搴撲綅缂栧彿', dataIndex: 'placeCode', key: 'placeCode' },
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialCode', key: 'materialCode' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+        { title: '鏁伴噺', dataIndex: 'stockNumber', key: 'stockNumber' },
+        { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+      ],
+      showType:1,   //1鏄剧ず鏌ヨ椤甸潰锛� 2鏄剧ず宸查�夋暟鎹�
+      th1:0,
+      th2:0
+    }
+  },
+  created(){
+    this.innerVisible = this.visible
+    this.types = this.$options.filters['dictData']('material_type')
+  },
+  watch:{
+    visible(newVal){
+      if (newVal!==this.innerVisible) {
+        this.innerVisible = newVal
+      }
+    },
+    innerVisible(newVal,oldVal){
+      if (newVal!==this.visible) {
+        this.$emit('update:visible',newVal)
+      }
+      if (newVal!==oldVal) {
+        if (newVal) {
+          this.init()
+        }
+      }
+    }
+  },
+  methods:{
+    init(){
+      this.$nextTick(() => {
+        let h = this.$refs.listWrapper.clientHeight
+        this.th1 = h - 120
+        this.th2= h - 60
+        this.resetQuery()
+      });
+    },
+    handleSubmit(){
+      this.$emit('callback',this.choosen)
+      this.handleCancel()
+    },
+    handleCancel(){
+      this.innerVisible = false;
+      this.showType = 1
+      this.list = []
+      this.choosen = []
+      this.loading = false
+      this.queried = {...pagination}
+    },
+    onQuery(){
+      this.newQuery()
+    },
+    onReset(){
+      this.resetQuery()
+    },
+    resetQuery(){
+      this.query = {...defaultQuery}
+      this.newQuery()
+    },
+    newQuery(){
+     this.queried = {...this.query,...pagination}
+      this.queryChooseDataSource()
+    },
+    queryChooseDataSource(){
+      this.loading = true;
+      GetCouldOuts(this.queried).then((d)=>{
+        this.list = d.data.rows || []
+        this.listTotal = d.data.totalRows || 0
+        this.setSelectedRowKeys()
+        this.loading = false;
+      }).catch(()=>{
+        this.loading = false;
+      })
+    },
+    rowSelectionsChange(selectedRowKeys, selectedRows){
+      let reduces = [], adds = []
+      /* 璁$畻闇�瑕佽绉诲嚭choosen鐨勫唴瀹� */
+      this.selectedRowKeys.forEach((val)=>{
+        let f1 = false;
+        for (let i=0;i<selectedRowKeys.length;i++) {
+          if (selectedRowKeys[i] === val) {
+            f1 = true;
+            break;
+          }
+        }
+        if (!f1) {
+          reduces.push(val)
+        }
+      })
+      /* 璁$畻闇�瑕佽鍔犲叆choosen鐨勫唴瀹� */
+      selectedRowKeys.forEach((val)=>{
+        let f2 = false;
+        for (let i=0;i<this.choosen.length;i++) {
+          if (this.choosen[i][this.tableKey] === val) {
+            f2 = true;
+            break;
+          }
+        }
+        if (!f2) {
+          adds.push(val)
+        }
+      })
+      /* 鎵ц瀹為檯鏁版嵁澶勭悊锛屽厛鍑忓悗鍔狅紝鍑忓皯澶勭悊鏃堕棿 */
+      this.selectedRowKeys = selectedRowKeys
+      this.reduceChoosen(reduces)
+      this.addChosen(adds)
+    },
+    chooseTablePageChange(pagination){
+      this.queried.PageNo = pagination.current
+      this.queryChooseDataSource()
+    },
+    reduceChoosen(arr){
+      arr.forEach((val)=>{
+        let reduceIndex = -1;
+        for (let i=0;this.choosen.length;i++) {
+          if (this.choosen[i][this.tableKey] === val) {
+            reduceIndex = i
+            break;
+          }
+        }
+        if (reduceIndex>=0) {
+          this.choosen.splice(reduceIndex,1)
+        }
+      })
+    },
+    cancelChoosen(index){
+      this.choosen.splice(index,1)
+    },
+    addChosen(arr){
+      arr.forEach((val)=>{
+        for (let i=0;this.list.length;i++) {
+          if (this.list[i][this.tableKey] === val) {
+            let obj = {...this.list[i]}
+            this.choosen.push(obj)
+            break;
+          }
+        }
+      })
+    },
+    setSelectedRowKeys(){
+      let arr = []
+      this.choosen.forEach((item)=>{
+        for (let i=0;i<this.list.length;i++) {
+          if (this.list[i][this.tableKey] === item[this.tableKey]) {
+            arr.push(item[this.tableKey])
+            break;
+          }
+        }
+      })
+      this.selectedRowKeys = arr
+    },
+    changeShowType(){
+      if (this.showType===1) {
+        this.showType = 2
+      } else {
+        this.showType = 1
+        this.setSelectedRowKeys()
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.inventory-plan-choose-modal-content{
+  height: 70vh;
+  display: flex;
+  flex-direction: column;
+  .choose-bar{
+    flex-shrink: 0;
+    padding: 8px 4px;
+    display: flex;
+    .choose-form-view{
+      flex-grow: 1;
+    }
+    .choose-btns-view{
+      flex-shrink: 0;
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+    }
+  }
+  .table-box{
+    flex-grow: 1;
+    padding: 0 16px;
+    overflow: auto;
+  }
+  .ant-form-inline{
+    .ant-form-item {
+      margin-right: 0;
+      width: 100%;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/index.vue
new file mode 100644
index 0000000..14b2711
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/index.vue
@@ -0,0 +1,275 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐩樼偣璁″垝鍗曞彿">
+                <a-input v-model="queryParam.planNo" allow-clear placeholder="璇疯緭鍏ョ洏鐐硅鍒掑崟鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.StatusEnum" placeholder="璇烽�夋嫨鐘舵��">
+                  <a-select-option v-for="(item,index) in selectOptions.statues" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩樼偣瑙勫垯">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.InventoryRuleId" placeholder="璇烽�夋嫨鐩樼偣瑙勫垯">
+                    <a-select-option v-for="(item,index) in selectOptions.rules" :key="index" :value="item.id">
+                      {{ item.label }}
+                    </a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩樼偣浠撳簱">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.AreaID" placeholder="璇烽�夋嫨鐩樼偣浠撳簱">
+                    <a-select-option v-for="(item,index) in selectOptions.areas" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩樼偣鏃堕棿">
+                  <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+                </a-form-item>
+              </a-col>           
+            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+      >
+        <template class="table-operator" slot="operator" >
+          <a-button type="primary" icon="plus" @click="onNew">鏂板鐩樼偣璁″垝</a-button>
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="planStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'task_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a @click="onEdit(record)">缂栬緫</a>
+          <a-divider type="vertical" />
+          <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => InventoryPlanDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+      <add-form ref="addForm" :type="formType" :area-options="selectOptions.areas" :rule-options="selectOptions.rules" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import moment from 'moment'
+  import { 
+    InventoryPlanPage, 
+    InventoryPlanDelete,
+    InventoryPlanGetAreas,
+    InventoryPlanGetCheckRules
+  } from '@/api/modular/main/InventoryPlanManage'
+  import addForm from './addForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        selectOptions:{
+          areas:[],
+          rules:[],
+          statues:[]
+        },
+        columns: [
+          {
+            title: '鐩樼偣璁″垝鍗曞彿',
+            align: 'center',
+            dataIndex: 'planNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          {
+            title: '璁″垝鐘舵��',
+            align: 'center',
+            dataIndex: 'statusEnum',
+            scopedSlots: { customRender: 'planStatusEnumscopedSlots' }
+          },
+          {
+            title: '瑙勫垯缂栫爜',
+            align: 'center',
+            dataIndex: 'ruleLabel'
+          },
+          {
+            title: '鐩樼偣浠撳簱',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '鐩樼偣寮�濮嬫椂闂�',
+            align: 'center',
+sorter: true,
+            dataIndex: 'startPlanTime'
+          },
+          {
+            title: '鐩樼偣缁撴潫鏃堕棿',
+            align: 'center',
+sorter: true,
+            dataIndex: 'endPlanTime'
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          let params = {...this.queryParam}
+          if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+            params.StartPlanTime = params.dateRange[0] + ' 00:00:00'
+            params.EndPlanTime = params.dateRange[1] + ' 23:59:59'
+            delete params.dateRange
+          } else {
+            delete params.dateRange
+            delete params.StartPlanTime
+            delete params.EndPlanTime
+          }
+          return InventoryPlanPage(Object.assign(parameter, params)).then((res) => {
+            let _arr = res.data.rows || []
+            _arr = _arr.map((mapItem)=>{
+              mapItem.ruleLabel = this.getRuleLabel(mapItem.inventoryRuled)
+              return mapItem
+            })
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0],true)
+            }
+            res.data.rows = _arr
+            return res.data
+          })
+        },
+        infoId:null,
+        infoOrderNo:'',
+        formType:''
+      }
+    },
+    created(){
+      this.selectOptions.statues = this.$options.filters['dictData']('task_status')
+    },
+    mounted () {
+     this.getSelectOptions()
+    },
+    methods: {
+      moment,
+      onNew(){
+        this.formType = 'add'
+        this.$refs.addForm.init()
+      },
+      onEdit(obj){
+        this.formType = 'modify'
+        this.$refs.addForm.init(obj)
+      },
+      getSelectOptions(){
+        Promise.all([
+          InventoryPlanGetAreas(),
+          InventoryPlanGetCheckRules()
+        ]).then(response=>{
+          this.selectOptions.areas = response[0].data || []
+          this.selectOptions.rules = (response[1].data || []).map(mapItem=>{
+            mapItem.label = this.getRuleLabel(mapItem)
+            return mapItem
+          })
+        }).catch(err=>{
+          console.log(err)
+        })
+      },
+      getRuleLabel(obj){
+        let res = obj.ruleName
+        res += '/' + this.$options.filters['dictType']('RuleType',obj.ruleType)
+        res += '/' + this.$options.filters['dictType']('RuleMode',obj.ruleMode)
+        if (obj.ruleModeValue) {
+          if (obj.ruleMode===1) {
+            res += '(' + obj.ruleModeValue + '%)'
+          } else if (obj.ruleMode===2) {
+            res += '(' + obj.ruleModeValue + '浠�)'
+          } 
+        }
+        res += '/' + this.$options.filters['dictType']('RuleCycle',obj.ruleCycle)
+        return res
+      },
+      onViewDetail(obj,mainRefresh=false){
+        if (this.infoId===obj.id && mainRefresh===false) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.planNo
+        }
+      },
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      InventoryPlanDelete (record) {
+        InventoryPlanDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.infoId = null
+        this.$refs.table.refresh()
+      },
+      infoCallback(){
+        this.$refs.table.refresh()
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/infoBlock.vue
new file mode 100644
index 0000000..6949aff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/infoBlock.vue
@@ -0,0 +1,106 @@
+<template>
+  <div class="inventory-plan-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { InventoryPlanDetailPage } from '@/api/modular/main/InventoryPlanManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'inventoryPlanInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '瀹瑰櫒缂栧彿', dataIndex: 'containerCode', key: 'containerCode' },
+        { title: '搴撲綅缂栧彿', dataIndex: 'placeCode', key: 'placeCode' },
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialCode', key: 'materialCode' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+        { title: '鏁伴噺', dataIndex: 'stockNumber', key: 'stockNumber' },
+        { title: '鐩樼偣鏁�', dataIndex: 'inventoryNumber', key: 'inventoryNumber' }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.Id = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return InventoryPlanDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.inventory-plan-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/index.vue
new file mode 100644
index 0000000..57a13b4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/index.vue
@@ -0,0 +1,282 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐩樼偣璁″垝鍗曞彿">
+                <a-input v-model="queryParam.planNo" allow-clear placeholder="璇疯緭鍏ョ洏鐐硅鍒掑崟鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瀹℃壒鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.ExamineState" placeholder="璇烽�夋嫨瀹℃壒鐘舵��">
+                  <a-select-option v-for="(item,index) in selectOptions.parseStatus" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩樼偣瑙勫垯">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.InventoryRuleId" placeholder="璇烽�夋嫨鐩樼偣瑙勫垯">
+                    <a-select-option v-for="(item,index) in selectOptions.rules" :key="index" :value="item.id">
+                      {{ item.label }}
+                    </a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩樼偣浠撳簱">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.AreaID" placeholder="璇烽�夋嫨鐩樼偣浠撳簱">
+                    <a-select-option v-for="(item,index) in selectOptions.areas" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩樼偣鏃堕棿">
+                  <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+                </a-form-item>
+              </a-col>           
+            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+      >
+        <template class="table-operator" slot="operator" >
+          <a-button type="primary" :disabled="!selectedRowKeys.length || !hasPerm('inventory_plan_stock_order_generate')" @click="onMulGenerateRecord">鎵归噺鐢熸垚鎶ヨ〃</a-button>
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="parseStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#7fff00':(text===3?'##ff1493':'#2f4f4f'))">{{ 'examine_state' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a :disabled="!hasPerm('inventory_plan_stock_order_generate')" @click="onGenerateRecord(record)">鐢熸垚鎶ヨ〃</a>
+        </span>
+      </s-table>
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import moment from 'moment'
+  import { 
+    InventoryPlanRecordPage, 
+    InventoryPlanGetAreas,
+    InventoryPlanGetCheckRules
+  } from '@/api/modular/main/InventoryPlanManage'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        selectOptions:{
+          areas:[],
+          rules:[],
+          parseStatus:[]
+        },
+        columns: [
+          {
+            title: '鐩樼偣璁″垝鍗曞彿',
+            align: 'center',
+            dataIndex: 'planNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          {
+            title: '瀹℃壒鐘舵��',
+            align: 'center',
+            dataIndex: 'examineState',
+            scopedSlots: { customRender: 'parseStatusEnumscopedSlots' }
+          },
+          {
+            title: '瑙勫垯缂栫爜',
+            align: 'center',
+            dataIndex: 'ruleLabel'
+          },
+          {
+            title: '鐩樼偣浠撳簱',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '鐩樼偣寮�濮嬫椂闂�',
+            align: 'center',
+sorter: true,
+            dataIndex: 'startPlanTime'
+          },
+          {
+            title: '鐩樼偣缁撴潫鏃堕棿',
+            align: 'center',
+sorter: true,
+            dataIndex: 'endPlanTime'
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          let params = {...this.queryParam}
+          if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+            params.StartPlanTime = params.dateRange[0] + ' 00:00:00'
+            params.EndPlanTime = params.dateRange[1] + ' 23:59:59'
+            delete params.dateRange
+          } else {
+            delete params.dateRange
+            delete params.StartPlanTime
+            delete params.EndPlanTime
+          }
+          return InventoryPlanRecordPage(Object.assign(parameter, params)).then((res) => {
+            let _arr = res.data.rows || []
+            _arr = _arr.map((mapItem)=>{
+              mapItem.ruleLabel = this.getRuleLabel(mapItem.inventoryRuled)
+              return mapItem
+            })
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0],true)
+            }
+            res.data.rows = _arr
+            this.selectedRowKeys = []
+            return res.data
+          })
+        },
+        selectedRowKeys: [],
+        infoId:null,
+        infoOrderNo:'',
+        formType:''
+      }
+    },
+    created(){
+      this.selectOptions.parseStatus = this.$options.filters['dictData']('examine_state')
+    },
+    mounted () {
+     this.getSelectOptions()
+    },
+    methods: {
+      moment,
+      getSelectOptions(){
+        Promise.all([
+          InventoryPlanGetAreas(),
+          InventoryPlanGetCheckRules()
+        ]).then(response=>{
+          this.selectOptions.areas = response[0].data || []
+          this.selectOptions.rules = (response[1].data || []).map(mapItem=>{
+            mapItem.label = this.getRuleLabel(mapItem)
+            return mapItem
+          })
+        }).catch(err=>{
+          console.log(err)
+        })
+      },
+      getRuleLabel(obj){
+        let res = obj.ruleName
+        res += '/' + this.$options.filters['dictType']('RuleType',obj.ruleType)
+        res += '/' + this.$options.filters['dictType']('RuleMode',obj.ruleMode)
+        if (obj.ruleModeValue) {
+          if (obj.ruleMode===1) {
+            res += '(' + obj.ruleModeValue + '%)'
+          } else if (obj.ruleMode===2) {
+            res += '(' + obj.ruleModeValue + '浠�)'
+          } 
+        }
+        res += '/' + this.$options.filters['dictType']('RuleCycle',obj.ruleCycle)
+        return res
+      },
+      onViewDetail(obj,mainRefresh=false){
+        if (this.infoId===obj.id && mainRefresh===false) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.planNo
+        }
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      infoCallback(){
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+      },
+      onMulGenerateRecord(){
+        this.dealGenerateRecord(this.selectedRowKeys)
+      },
+      onGenerateRecord(obj){
+        if (!this.hasPerm('inventory_plan_stock_order_generate')) return false
+        this.dealGenerateRecord([obj.id])
+      },
+      dealGenerateRecord(ids){
+        this.$confirm({
+          title: '纭畾瑕佽繘琛岀敓鎴愭姤琛ㄦ搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            let params = {}
+            this.handleGenerateRecord(params,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      handleGenerateRecord(params,callback){
+        callback(true)
+        /* this.$loading.show()
+        InventoryReview(params).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        }) */
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/infoBlock.vue
new file mode 100644
index 0000000..8c239c4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/infoBlock.vue
@@ -0,0 +1,140 @@
+<template>
+  <div class="inventory-plan-change-stock-number-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+        <a-button type="primary" style="margin-left:10px;" :disabled="!hasPerm('inventory_plan_stock_number_change')" @click="onUpdate">鏇存柊搴撳瓨</a-button>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <template slot="inputCell" slot-scope="text,record,index">
+        <a-input-number v-model="record.stockNumber" :min="0" />
+      </template>
+      <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { InventoryPlanDetailPage, InventoryChangeStockNumber } from '@/api/modular/main/InventoryPlanManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'inventoryPlanChangeStockNumberInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '瀹瑰櫒缂栧彿', dataIndex: 'containerCode', key: 'containerCode' },
+        { title: '搴撲綅缂栧彿', dataIndex: 'placeCode', key: 'placeCode' },
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialCode', key: 'materialCode' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+        { title: '搴撳瓨鏁�', key: 'stockNumber', scopedSlots: { customRender: 'inputCell' }, width: 180, align:'center' },
+        { title: '鐩樼偣鏁�', dataIndex: 'inventoryNumber',key: 'inventoryNumber' }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+      list:[]
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.Id = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return InventoryPlanDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+            this.list = res.data.rows
+          } else {
+            this.list = []
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+    onUpdate(){
+      this.$confirm({
+        title: '纭畾瑕佹洿鏂颁繚瀛樺簱瀛樻暟鎹悧锛�',
+        okText: '纭畾',
+        okType: 'danger',
+        cancelText: '鍙栨秷',
+        onOk:()=>{
+          this.handleUpdate((f)=>{
+            if (f) {
+              this.$refs.table.refresh()
+            }
+          })
+        }
+      });
+    },
+    handleUpdate(callback){
+      this.$loading.show()
+      let params = {updateStockNumList:this.list}
+      InventoryChangeStockNumber(params).then(()=>{
+        this.$loading.hide()
+        callback(true)
+      }).catch(()=>{
+        this.$loading.hide()
+        callback(false)
+      })
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.inventory-plan-change-stock-number-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/index.vue
new file mode 100644
index 0000000..9e72e3e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/index.vue
@@ -0,0 +1,308 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐩樼偣璁″垝鍗曞彿">
+                <a-input v-model="queryParam.planNo" allow-clear placeholder="璇疯緭鍏ョ洏鐐硅鍒掑崟鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瀹℃壒鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.ExamineState" placeholder="璇烽�夋嫨瀹℃壒鐘舵��">
+                  <a-select-option v-for="(item,index) in selectOptions.parseStatus" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩樼偣瑙勫垯">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.InventoryRuleId" placeholder="璇烽�夋嫨鐩樼偣瑙勫垯">
+                    <a-select-option v-for="(item,index) in selectOptions.rules" :key="index" :value="item.id">
+                      {{ item.label }}
+                    </a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩樼偣浠撳簱">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.AreaID" placeholder="璇烽�夋嫨鐩樼偣浠撳簱">
+                    <a-select-option v-for="(item,index) in selectOptions.areas" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩樼偣鏃堕棿">
+                  <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+                </a-form-item>
+              </a-col>           
+            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+      >
+        <template class="table-operator" slot="operator" >
+          <a-button type="primary" :disabled="!selectedRowKeys.length || !hasPerm('inventory_check')" @click="onMulParse">鎵归噺閫氳繃</a-button>
+          <a-button type="primary" :disabled="!selectedRowKeys.length || !hasPerm('inventory_check')" @click="onMulReject">鎵归噺椹冲洖</a-button>
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="parseStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#7fff00':(text===3?'##ff1493':'#2f4f4f'))">{{ 'examine_state' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a :disabled="!hasPerm('inventory_check')" @click="onParse(record)">閫氳繃</a>
+          <a-divider type="vertical" />
+          <a :disabled="!hasPerm('inventory_check')" @click="onReject(record)">椹冲洖</a>
+        </span>
+      </s-table>
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import moment from 'moment'
+  import { 
+    InventoryPlanRecordPage, 
+    InventoryPlanGetAreas,
+    InventoryPlanGetCheckRules,
+    InventoryReview
+  } from '@/api/modular/main/InventoryPlanManage'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        selectOptions:{
+          areas:[],
+          rules:[],
+          parseStatus:[]
+        },
+        columns: [
+          {
+            title: '鐩樼偣璁″垝鍗曞彿',
+            align: 'center',
+            dataIndex: 'planNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          {
+            title: '瀹℃壒鐘舵��',
+            align: 'center',
+            dataIndex: 'examineState',
+            scopedSlots: { customRender: 'parseStatusEnumscopedSlots' }
+          },
+          {
+            title: '瑙勫垯缂栫爜',
+            align: 'center',
+            dataIndex: 'ruleLabel'
+          },
+          {
+            title: '鐩樼偣浠撳簱',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '鐩樼偣寮�濮嬫椂闂�',
+            align: 'center',
+sorter: true,
+            dataIndex: 'startPlanTime'
+          },
+          {
+            title: '鐩樼偣缁撴潫鏃堕棿',
+            align: 'center',
+sorter: true,
+            dataIndex: 'endPlanTime'
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          let params = {...this.queryParam}
+          if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+            params.StartPlanTime = params.dateRange[0] + ' 00:00:00'
+            params.EndPlanTime = params.dateRange[1] + ' 23:59:59'
+            delete params.dateRange
+          } else {
+            delete params.dateRange
+            delete params.StartPlanTime
+            delete params.EndPlanTime
+          }
+          return InventoryPlanRecordPage(Object.assign(parameter, params)).then((res) => {
+            let _arr = res.data.rows || []
+            _arr = _arr.map((mapItem)=>{
+              mapItem.ruleLabel = this.getRuleLabel(mapItem.inventoryRuled)
+              return mapItem
+            })
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0],true)
+            }
+            res.data.rows = _arr
+            this.selectedRowKeys = []
+            return res.data
+          })
+        },
+        selectedRowKeys: [],
+        infoId:null,
+        infoOrderNo:'',
+        formType:''
+      }
+    },
+    created(){
+      this.selectOptions.parseStatus = this.$options.filters['dictData']('examine_state')
+    },
+    mounted () {
+     this.getSelectOptions()
+    },
+    methods: {
+      moment,
+      getSelectOptions(){
+        Promise.all([
+          InventoryPlanGetAreas(),
+          InventoryPlanGetCheckRules()
+        ]).then(response=>{
+          this.selectOptions.areas = response[0].data || []
+          this.selectOptions.rules = (response[1].data || []).map(mapItem=>{
+            mapItem.label = this.getRuleLabel(mapItem)
+            return mapItem
+          })
+        }).catch(err=>{
+          console.log(err)
+        })
+      },
+      getRuleLabel(obj){
+        let res = obj.ruleName
+        res += '/' + this.$options.filters['dictType']('RuleType',obj.ruleType)
+        res += '/' + this.$options.filters['dictType']('RuleMode',obj.ruleMode)
+        if (obj.ruleModeValue) {
+          if (obj.ruleMode===1) {
+            res += '(' + obj.ruleModeValue + '%)'
+          } else if (obj.ruleMode===2) {
+            res += '(' + obj.ruleModeValue + '浠�)'
+          } 
+        }
+        res += '/' + this.$options.filters['dictType']('RuleCycle',obj.ruleCycle)
+        return res
+      },
+      onViewDetail(obj,mainRefresh=false){
+        if (this.infoId===obj.id && mainRefresh===false) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.planNo
+        }
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      infoCallback(){
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+      },
+      onMulParse(){
+        this.dealParse(this.selectedRowKeys)
+      },
+      onMulReject(){
+        this.dealReject(this.selectedRowKeys)
+      },
+      onParse(obj){
+        if (!this.hasPerm('inventory_check')) return false
+        this.dealParse([obj.id])
+      },
+      onReject(obj){
+        if (!this.hasPerm('inventory_check')) return false
+        this.dealReject([obj.id])
+      },
+      dealParse(ids){
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屽鏍搁�氳繃鎿嶄綔鍚楋紵',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            let params = {updateExamineId:ids,examineState:2}
+            this.handleReview(params,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      dealReject(ids){
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屽鏍搁┏鍥炴搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            let params = {updateExamineId:ids,examineState:3}
+            this.handleReview(params,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      handleReview(params,callback){
+        this.$loading.show()
+        InventoryReview(params).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/infoBlock.vue
new file mode 100644
index 0000000..267929a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/infoBlock.vue
@@ -0,0 +1,106 @@
+<template>
+  <div class="inventory-order-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { InventoryPlanDetailPage } from '@/api/modular/main/InventoryPlanManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'inventoryOrderInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '瀹瑰櫒缂栧彿', dataIndex: 'containerCode', key: 'containerCode' },
+        { title: '搴撲綅缂栧彿', dataIndex: 'placeCode', key: 'placeCode' },
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialCode', key: 'materialCode' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+        { title: '搴撳瓨鏁�', dataIndex: 'stockNumber', key: 'stockNumber' },
+        { title: '鐩樼偣鏁�', dataIndex: 'inventoryNumber', key: 'inventoryNumber' }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.Id = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return InventoryPlanDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.inventory-order-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/addForm.vue
new file mode 100644
index 0000000..e8834a8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/addForm.vue
@@ -0,0 +1,126 @@
+锘�<template>
+  <a-modal
+    title="鏂板鐩樼偣瑙勫垯"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鐩樼偣缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洏鐐圭紪鐮�" v-decorator="['ruleNo', {rules: [{ required: true, message: '璇疯緭鍏ョ洏鐐圭紪鐮侊紒' }]}]" />
+        </a-form-item>
+        <a-form-item label="瑙勫垯鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ鍒欏悕绉�" v-decorator="['ruleName', {rules: [{ required: true, message: '璇疯緭鍏ヨ鍒欏悕绉帮紒' }]}]" />
+        </a-form-item>
+        <a-form-item label="鐩樼偣绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鐩樼偣绫诲瀷" v-decorator="['ruleType', {rules: [{ required: true, message: '璇烽�夋嫨鐩樼偣绫诲瀷锛�' }]}]">
+            <a-select-option v-for="(item,index) in ruleTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鐩樼偣妯″紡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鐩樼偣妯″紡" v-decorator="['ruleMode', {rules: [{ required: true, message: '璇烽�夋嫨鐩樼偣妯″紡锛�' }]}]" @change="onChangeRuleMode">
+            <a-select-option v-for="(item,index) in ruleModeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item v-if="ruleMode==='1'" label="璁″垝鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-input-number style="width: 100%" :min="0.000001" :max="100" :formatter="value => value?`${value}%`:''" :parser="value => value.replace('%', '')"
+            v-decorator="['ruleModeValue', {rules: [{ required: true, message: '璇疯緭鍏ヨ鍒掓暟锛�' }]}]" />
+        </a-form-item>
+        <a-form-item v-if="ruleMode==='2'" label="璁″垝鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-input-number style="width: 100%" :min="0.000001" :max="100" :formatter="value => value?`${value}浠禶:''" :parser="value => value.replace('浠�', '')"
+            v-decorator="['ruleModeValue', {rules: [{ required: true, message: '璇疯緭鍏ヨ鍒掓暟锛�' }]}]" />
+        </a-form-item>
+        <a-form-item label="鐩樼偣鍛ㄦ湡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鐩樼偣鍛ㄦ湡" v-decorator="['ruleCycle', {rules: [{ required: true, message: '璇烽�夋嫨鐩樼偣鍛ㄦ湡锛�' }]}]">
+            <a-select-option v-for="(item,index) in ruleCycleData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    InventoryRuleAdd
+  } from '@/api/modular/main/InventoryRuleManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        ruleTypeData: [],
+        ruleModeData: [],
+        ruleCycleData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        ruleMode:null
+      }
+    },
+    created(){
+      const ruleTypeOption = this.$options
+      this.ruleTypeData = ruleTypeOption.filters['dictData']('RuleType')
+      const ruleModeOption = this.$options
+      this.ruleModeData = ruleModeOption.filters['dictData']('RuleMode')
+      const ruleCycleOption = this.$options
+      this.ruleCycleData = ruleCycleOption.filters['dictData']('RuleCycle')
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        
+      },
+      onChangeRuleMode(val){
+        this.ruleMode = val
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            InventoryRuleAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.ruleMode = null
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/editForm.vue
new file mode 100644
index 0000000..6fb599d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/editForm.vue
@@ -0,0 +1,148 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫鐩樼偣瑙勫垯"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鐩樼偣缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洏鐐圭紪鐮�" v-decorator="['ruleNo', {rules: [{ required: true, message: '璇疯緭鍏ョ洏鐐圭紪鐮侊紒' }]}]" />
+        </a-form-item>
+        <a-form-item label="瑙勫垯鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ鍒欏悕绉�" v-decorator="['ruleName', {rules: [{ required: true, message: '璇疯緭鍏ヨ鍒欏悕绉帮紒' }]}]" />
+        </a-form-item>
+        <a-form-item label="鐩樼偣绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鐩樼偣绫诲瀷" v-decorator="['ruleType', {rules: [{ required: true, message: '璇烽�夋嫨鐩樼偣绫诲瀷锛�' }]}]">
+            <a-select-option v-for="(item,index) in ruleTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鐩樼偣妯″紡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鐩樼偣妯″紡" v-decorator="['ruleMode', {rules: [{ required: true, message: '璇烽�夋嫨鐩樼偣妯″紡锛�' }]}]">
+            <a-select-option v-for="(item,index) in ruleModeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item v-if="ruleMode==='1'" label="璁″垝鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-input-number style="width: 100%" :min="0.000001" :max="100" :formatter="value => value?`${value}%`:''" :parser="value => value.replace('%', '')"
+            v-decorator="['ruleModeValue', {rules: [{ required: true, message: '璇疯緭鍏ヨ鍒掓暟锛�' }]}]" />
+        </a-form-item>
+        <a-form-item v-if="ruleMode==='2'" label="璁″垝鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-input-number style="width: 100%" :min="0.000001" :max="100" :formatter="value => value?`${value}浠禶:''" :parser="value => value.replace('浠�', '')"
+            v-decorator="['ruleModeValue', {rules: [{ required: true, message: '璇疯緭鍏ヨ鍒掓暟锛�' }]}]" />
+        </a-form-item>
+        <a-form-item label="鐩樼偣鍛ㄦ湡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鐩樼偣鍛ㄦ湡" v-decorator="['ruleCycle', {rules: [{ required: true, message: '璇烽�夋嫨鐩樼偣鍛ㄦ湡锛�' }]}]">
+            <a-select-option v-for="(item,index) in ruleCycleData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    InventoryRuleEdit
+  } from '@/api/modular/main/InventoryRuleManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        ruleTypeData: [],
+        ruleModeData: [],
+        ruleCycleData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        ruleMode:null
+      }
+    },
+    created(){
+      const ruleTypeOption = this.$options
+      this.ruleTypeData = ruleTypeOption.filters['dictData']('RuleType')
+      const ruleModeOption = this.$options
+      this.ruleModeData = ruleModeOption.filters['dictData']('RuleMode')
+      const ruleCycleOption = this.$options
+      this.ruleCycleData = ruleCycleOption.filters['dictData']('RuleCycle')
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+        this.Id = record.id;
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              ruleNo: record.ruleNo,
+              ruleName: record.ruleName,
+              ruleType: String(record.ruleType),
+              ruleMode: String(record.ruleMode),
+              ruleCycle: String(record.ruleCycle)
+            }
+          )
+          this.ruleMode = String(record.ruleMode)
+          if (this.ruleMode==='1'||this.ruleMode==='2') {
+            this.$nextTick(()=>{
+              if (!record.ruleModeValue) record.ruleModeValue = ''
+              this.form.setFieldsValue({ruleModeValue:record.ruleModeValue})
+            })
+          }
+        })
+      },
+      onChangeRuleMode(val){
+        this.ruleMode = val
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            InventoryRuleEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.ruleMode=null
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/index.vue
new file mode 100644
index 0000000..87dceb4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/index.vue
@@ -0,0 +1,228 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐩樼偣缂栫爜">
+                <a-input v-model="queryParam.ruleNo" allow-clear placeholder="璇疯緭鍏ョ洏鐐圭紪鐮�" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瑙勫垯鍚嶇О">
+                <a-input v-model="queryParam.ruleName" allow-clear placeholder="璇疯緭鍏ヨ鍒欏悕绉�" />
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩樼偣绫诲瀷">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.ruleType" placeholder="璇烽�夋嫨鐩樼偣绫诲瀷">
+                    <a-select-option v-for="(item,index) in ruleTypeData" :key="index"
+                      :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="鐩樼偣妯″紡">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.ruleMode" placeholder="璇烽�夋嫨鐩樼偣妯″紡">
+                    <a-select-option v-for="(item,index) in ruleModeData" :key="index"
+                      :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩樼偣鍛ㄦ湡">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.ruleCycle" placeholder="璇烽�夋嫨鐩樼偣鍛ㄦ湡">
+                    <a-select-option v-for="(item,index) in ruleCycleData" :key="index"
+                      :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col> 
+            </template>
+
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'" />
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table ref="table" :columns="columns" :data="loadData" :alert="true" :rowKey="(record) => record.id">
+        <template class="table-operator" slot="operator">
+          <a-button type="primary" icon="plus"
+            @click="$refs.addForm.add()">鏂板鐩樼偣瑙勫垯</a-button>
+        </template>
+        <span slot="ruleTypescopedSlots" slot-scope="text">
+          {{ 'RuleType' | dictType(text) }}
+        </span>
+        <span slot="ruleModescopedSlots" slot-scope="text">
+          {{ 'RuleMode' | dictType(text) }}
+        </span>
+        <span slot="ruleCyclescopedSlots" slot-scope="text">
+          {{ 'RuleCycle' | dictType(text) }}
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" />
+          <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�"
+            @confirm="() => InventoryRuleDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import {
+    STable
+  } from '@/components'
+  import {
+    InventoryRulePage,
+    InventoryRuleDelete
+  } from '@/api/modular/main/InventoryRuleManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm
+    },
+    data() {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [{
+            title: '鐩樼偣缂栫爜',
+            align: 'center',
+            dataIndex: 'ruleNo'
+          },
+          {
+            title: '瑙勫垯鍚嶇О',
+            align: 'center',
+            dataIndex: 'ruleName'
+          },
+          {
+            title: '鐩樼偣绫诲瀷',
+            align: 'center',
+            dataIndex: 'ruleType',
+            scopedSlots: {
+              customRender: 'ruleTypescopedSlots'
+            }
+          },
+          {
+            title: '鐩樼偣妯″紡',
+            align: 'center',
+            dataIndex: 'ruleMode',
+            scopedSlots: {
+              customRender: 'ruleModescopedSlots'
+            }
+          },
+          {
+            title: '璁″垝鏁�',
+            align: 'center',
+            dataIndex: 'ruleModeValueShow'
+          },
+          {
+            title: '鐩樼偣鍛ㄦ湡',
+            align: 'center',
+            dataIndex: 'ruleCycle',
+            scopedSlots: {
+              customRender: 'ruleCyclescopedSlots'
+            }
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: {
+              customRender: 'action'
+            }
+          }
+        ],
+        tstyle: {
+          'padding-bottom': '0px',
+          'margin-bottom': '10px'
+        },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return InventoryRulePage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            _arr = _arr.map((mapItem)=>{
+              mapItem.ruleModeValueShow = ''
+              if (mapItem.ruleModeValue) {
+                if (mapItem.ruleMode===1) {
+                  mapItem.ruleModeValueShow = mapItem.ruleModeValue + '%'
+                } else if (mapItem.ruleMode===2) {
+                  mapItem.ruleModeValueShow = mapItem.ruleModeValue + '浠�'
+                }
+              }
+              return mapItem
+            })
+            res.data.rows = _arr
+            return res.data
+          })
+        },
+        ruleTypeData: [],
+        ruleModeData: [],
+        ruleCycleData: [],
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created() {
+      const ruleTypeOption = this.$options
+      this.ruleTypeData = ruleTypeOption.filters['dictData']('RuleType')
+      const ruleModeOption = this.$options
+      this.ruleModeData = ruleModeOption.filters['dictData']('RuleMode')
+      const ruleCycleOption = this.$options
+      this.ruleCycleData = ruleCycleOption.filters['dictData']('RuleCycle')
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate() {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      InventoryRuleDelete(record) {
+        InventoryRuleDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced() {
+        this.advanced = !this.advanced
+      },
+      handleOk() {
+        this.$refs.table.refresh()
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+
+  button {
+    margin-right: 8px;
+  }
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/DetailDrawer.vue
new file mode 100644
index 0000000..e4b4920
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/DetailDrawer.vue
@@ -0,0 +1,153 @@
+<template>
+  <a-drawer 
+    title="搴撲綅璇︽儏"
+    wrapClassName="weiben-private-drawer"
+    :width="400"
+    :closable="false"
+    :maskClosable="true"
+    :visible="visible"
+    :after-visible-change="afterVisibleChange"
+    @close="onClose"
+  >
+    <a-spin :spinning="loading">
+      <div class="zz-inverting-storages-detail-div">
+        <div class="location-detail-box">
+          <div class="base-info info-box">
+            <p>搴撲綅缂栧彿锛歿{locationObj.placecode}}</p>
+            <p>鎵樼洏缂栧彿锛歿{containercode}}</p>
+          </div>
+          <!-- 鐗╂枡鍒楄〃 start -->
+          <div class="location-materials">
+            
+            <div class="location-material-item" v-for="(item,index) in materialList" :key="'material-item-'+index">
+              <a-card>
+                <div class="info-box">
+                  <p>鐗╂枡缂栧彿锛歿{item.materialNo}}</p>
+                  <p>鐗╂枡鍚嶇О锛歿{item.materialName}}</p>
+                  <p>灏哄锛歿{item.materialSpec}}</p>
+                  <p>鑸瑰彿锛歿{item.shipNo}}</p>
+                  <p>鍥惧彿锛歿{item.drawingNo}}</p>
+                </div>
+              </a-card>
+            </div>
+            
+          </div>
+          <!-- 鐗╂枡鍒楄〃 end -->
+        </div>
+      </div>
+    </a-spin>
+  </a-drawer>
+</template>
+
+<script>
+import { GetLocationDetail } from '@/api/modular/main/InvertingStorageManage'
+export default {
+  name:'zzInvertingStorageDetailDrawer',
+  emits:['update:visible','callback'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    },
+    row:{
+      type:Object,
+      default:function(){
+        return {}
+      }
+    }
+  },
+  data(){
+    return {
+      loading:false,
+      locationObj:{
+        placestatus:null,
+        islock:null
+      },
+      containercode:'',
+      materialList:[],
+      actionFlag:false
+    }
+  },
+  methods:{
+    onClose(){
+      this.close()
+    },
+    close(){
+      this.$emit('update:visible',false)
+    },
+    afterVisibleChange(visible){
+      if (visible) {
+        this.initShow()
+      } else {
+        this.afterClsoe()
+      }
+    },
+    initShow(){
+      this.loading = true;
+      this.getLocationDetail(()=>{
+        this.loading = false;
+      })
+    },
+    getLocationDetail(callback){
+      let params = {Placecode:this.row.placecode}
+      GetLocationDetail(params).then((d)=>{
+        this.locationObj = d.data.palceDetails || {}
+        this.containercode = d.data.containercode || ''
+        this.materialList = d.data.wmsMaterialStocks || []
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    afterClsoe(){
+      this.locationObj = {
+        placestatus:null,
+        islock:null
+      }
+      this.containercode = ''
+      this.materialList = []
+      if (this.actionFlag) {
+        this.$emit('callback')
+      }
+      this.actionFlag = false
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.zz-inverting-storages-detail-div{
+  height:100%;
+  display: flex;
+  flex-direction: column;
+  &>.btns-row{
+    flex-shrink: 0;
+    padding:12px 16px;
+    .ant-btn + .ant-btn {
+      margin-left: 10px;
+    }
+  }
+  .location-detail-box{
+    flex-grow: 1;
+    overflow: auto;
+  }
+  .info-box{
+    line-height: 1.5;
+    p{
+      margin-bottom: 0;
+    }
+  }
+  .base-info,.location-materials{
+    padding:0 16px;
+    margin-bottom: 16px;
+  }
+  .location-materials{
+    .location-material-item{
+      margin-bottom: 12px;
+      &:last-child {
+        margin-bottom: 0;
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/ListBox.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/ListBox.vue
new file mode 100644
index 0000000..d78d5b6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/ListBox.vue
@@ -0,0 +1,146 @@
+<template>
+  <div class="zz-inverting-storages-list-box">
+    <div class="box-top">
+      <div class="check-all-box">
+        <a-checkbox :indeterminate="indeterminate" :checked="checkAll" @change="onAllChange">{{checkAll?'鍏ㄩ儴鍙栨秷':'鍏ㄩ儴閫夋嫨'}}</a-checkbox>
+      </div>
+      <div class="checked-des auto-wrap">宸查�夋嫨搴撲綅鏁帮細<a style="cursor:default;">{{checkedNum}}</a></div>
+    </div>
+    <div class="list-group">
+      <div class="lsit-item" v-for="(item,index) in list" :key="'lsit-item-'+index">
+        <a-checkbox :checked="item.checked" @change="onSingleChange(index,item,$event)" /><a class="space-link" @click.stop="openDetail(item)">{{item.placecode}}</a>
+      </div>
+    </div>
+    
+    <detail-drawer :visible.sync="detailVisible" :row="detailRow" />
+  </div>
+</template>
+
+<script>
+import DetailDrawer from './DetailDrawer.vue'
+export default {
+  name:'zzInvertingStorageListBox',
+  components:{DetailDrawer},
+  data(){
+    return {
+      checkAll:false,
+      indeterminate:false,
+      list:[],
+      checkedNum:0,
+      detailVisible:false,
+      detailRow:{}
+    }
+  },
+  methods:{
+    setList(arr){
+      this.list = [...arr]
+      this.restCheckAll()
+    },
+    emptyChoosen(){
+      this.restCheckAll()
+      this.linkSetCheckList(false)
+    },
+    restCheckAll(){
+      this.checkAll = false
+      this.indeterminate = false
+      this.checkedNum = 0
+    },
+    onSingleChange(index,obj,e){
+      obj.checked = e.target.checked
+      if (obj.checked) {
+        this.checkedNum++;
+      } else {
+        this.checkedNum--;
+      }
+      this.linkSetCheckAll()
+    },
+    onAllChange(e){
+      let _temp = e.target.checked
+      if (_temp) {
+        this.checkAll = true
+        this.checkedNum = this.list.length
+      } else {
+        this.checkAll = false
+        this.checkedNum = 0
+      }
+      this.indeterminate = false
+      this.linkSetCheckList(_temp)
+    },
+    linkSetCheckAll(){
+      let c = 0 , n = this.list.length;
+      this.list.forEach((listitem)=>{
+        if (listitem.checked) {
+          c++
+        }
+      })
+      if (c===0) {
+        this.checkAll = false;
+        this.indeterminate = false
+      } else if (c===n) {
+        this.checkAll = true;
+        this.indeterminate = false
+      } else {
+        this.checkAll = false;
+        this.indeterminate = true
+      }
+    },
+    linkSetCheckList(__empty) {
+      this.list.forEach((listitem)=>{
+        listitem.checked = __empty
+      })
+    },
+    openDetail(obj){
+      this.detailRow = obj
+      this.detailVisible = true;
+    },
+    getChoosen(){
+      let arr = [];
+      this.list.forEach((listitem)=>{
+        if (listitem.checked) {
+          arr.push(listitem)
+        }
+      })
+      return arr
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.zz-inverting-storages-list-box {
+  height:100%;
+  display: flex;
+  flex-direction: column;
+  background-color: #fff;
+  .box-top {
+    flex-shrink: 0;
+    display: flex;
+    align-items: center;
+    border-bottom: 1px solid #dcdcdc;
+    .check-all-box{
+      flex-shrink: 0;
+      padding: 0 12px;
+    }
+    .checked-des{
+      flex-grow: 1;
+      width: 1px;
+      padding: 6px 6px 6px 0;
+    }
+  }
+  .list-group{
+    height: 1px;
+    flex-grow: 1;
+    overflow: auto;
+    .lsit-item{
+      border-bottom: 1px dashed #dcdcdc;
+      padding: 6px 12px;
+      .space-link{
+        margin-left: 8px;
+      }
+      &:last-child{
+        border-bottom: 0;
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/SearchForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/SearchForm.vue
new file mode 100644
index 0000000..6e3bf4d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/SearchForm.vue
@@ -0,0 +1,136 @@
+<template>
+  <div class="zz-inverting-storages-search-compontent">
+    <a-row :gutter="6">
+      <a-col :md="12" :sm="24">
+        <a-select v-model="form.Areaid" style="width:100%;" placeholder="璇烽�夋嫨搴撳尯" @change="onAreaChange">
+          <a-select-option v-for="(item,index) in areas" :key="'area-sel-'+index" :value="item.id">{{item.areaName}}</a-select-option>
+        </a-select>
+      </a-col>
+      <a-col :md="12" :sm="24">
+        <a-select v-model="form.Rowno" style="width:100%;" placeholder="璇烽�夋嫨鎺�" allowClear @change="onRowChange">
+          <a-select-option v-for="(item,index) in rows" :key="'row-sel-'+index" :value="item">{{item}}</a-select-option>
+        </a-select>
+      </a-col>
+    </a-row>
+  </div>
+</template>
+
+<script>
+import { GetArea, GetPalceRowno } from '@/api/modular/main/LocationViewManage'
+export default {
+  name:'zzInvertingStorageSearchCompontent',
+  emits:['change'],
+  props:{
+    areas:{
+      type:Array,
+      default:function(){
+        return []
+      }
+    },
+    rows:{
+      type:Array,
+      default:function(){
+        return []
+      }
+    }
+  },
+  data(){
+    return {
+      form:{
+        Areaid聽:undefined,
+        Rowno:undefined
+      },
+      selectList:{
+        areas:[],
+        rows:[]
+      }
+    }
+  },
+  methods:{
+    setAreaValue(val){
+      this.form.Areaid = val
+    },
+    setRowValue(val){
+      this.form.Rowno = val
+    },
+    onAreaChange(val){
+      this.$emit('change','area',val)
+    },
+    onRowChange(val){
+      this.$emit('change','row',val)
+    },
+    getValues(){
+      return {...this.form}
+    }
+    /* init(callback){
+      this.getSelectListAreas((f1)=>{
+        if (f1) {
+          this.getSelectListRows((f2)=>{
+            if (f2) {
+              callback && callback(true,{...this.form})
+            } else {
+              callback && callback(false)
+            }
+          })
+        } else {
+          callback && callback(false)
+        }
+      })
+    },
+    getSelectListAreas(callback){
+      GetArea().then((d)=>{
+        this.selectList.areas = d.data || [];
+        if (this.selectList.areas.length>0) {
+          this.form.Areaid = this.selectList.areas[0].id
+          callback && callback(true)
+        } else {
+          callback && callback(false)
+        }
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    getSelectListRows(callback){
+      let params = {Areaid:this.form.Areaid}
+      GetPalceRowno(params).then((d)=>{
+        this.selectList.rows = d.data || [];
+        if (this.selectList.rows.length>0) {
+          if (this.selectList.rows.length===1) {
+            this.form.Rowno = this.selectList.rows[0]
+          } else {
+            this.form.Rowno = null
+          }
+          callback && callback(true)
+        } else {
+          this.form.Rowno = null
+          callback && callback(false)
+        }
+      }).catch(()=>{
+        this.selectList.rows = []
+        this.form.Rowno = null
+        callback && callback(false)
+      })
+    },
+    onAreaChange() {
+      this.$loading.show()
+      this.getSelectListRows(()=>{
+         this.$loading.hide()
+      })
+    },
+    onSearch(){
+      if (!this.form.Areaid) {
+        this.$error({
+          title: '绯荤粺鎻愮ず',
+          content: '璇烽�夋嫨搴撳尯锛�',
+        });
+        return false;
+      }
+      this.$emit('search',{...this.form})
+    } */
+  }
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/index.vue
new file mode 100644
index 0000000..b4c337e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/index.vue
@@ -0,0 +1,344 @@
+<template>
+  <div class="zz-inverting-storage-page">
+    <div class="top-warning-view">
+      <a-alert message="娉ㄦ剰浜嬮」" type="warning">
+        <template slot="description">
+          <div class="auto-wrap">1銆佸�掑簱锛岃捣濮嬪簱浣嶆暟涓庣洰鏍囧簱浣嶆暟搴斾繚鎸佷竴鑷淬��</div>
+          <div class="auto-wrap">2銆佸�掑簱锛屾瘡娆$Щ鍔ㄥ簱浣嶇殑鐗╂枡搴旇鏄竴鑷寸殑銆�</div>
+        </template>
+      </a-alert>
+    </div>
+    <div class="hor-divider"></div>
+    <div class="double-lists-view">
+      <div class="inverting-block">
+        <div class="title no-wrap">璧峰搴撲綅</div>
+        <div class="search-bar">
+          <search-form ref="search1" :areas="selectList.areas" :rows="selectList.rows1" @change="onSearchChange1" />
+        </div>
+        <div class="list-box">
+          <list-box ref="list1" />
+        </div>
+      </div>
+      <div class="ver-divider"></div>
+      <div class="inverting-block">
+        <div class="title no-wrap">鐩爣搴撲綅</div>
+        <div class="search-bar">
+          <search-form ref="search2" :areas="selectList.areas" :rows="selectList.rows2" @change="onSearchChange2" />
+        </div>
+        <div class="list-box">
+          <list-box ref="list2" />
+        </div>
+      </div>
+    </div>
+    <div class="hor-divider"></div>
+    <div class="bottom-btns-row">
+      <a-button @click="onSubmit('manual')">浜哄伐鍊掑簱</a-button>
+      <a-button type="primary" @click="onSubmit('auto')">鑷姩鍊掑簱</a-button>
+    </div>
+  </div>
+</template>
+
+<script>
+import SearchForm from './SearchForm.vue'
+import ListBox from './ListBox.vue'
+import { GetArea, GetPalceRowno } from '@/api/modular/main/LocationViewManage'
+import { GetCunHouPlace, GetKongXianPlace, ManualSubmit, AutoSubmit } from '@/api/modular/main/InvertingStorageManage'
+export default {
+  name:'zzInvertingStoragePage',
+  components:{SearchForm, ListBox},
+  data(){
+    return {
+      selectList:{
+        areas:[],
+        rows1:[],
+        rows2:[]
+      }
+    }
+  },
+  methods:{
+    init(){
+      this.$loading.show()
+      this.getSelectListAreas((f1,val)=>{
+        if (f1) {
+          this.getSelectListRows(val,(f2)=>{
+            if (f2) {
+              this.getCunHuoList((f3)=>{
+                if (f3) {
+                  this.getKongXianList(()=>{
+                    this.$loading.hide()
+                  })
+                } else {
+                  this.$loading.hide()
+                }
+              })
+            } else {
+              this.$loading.hide()
+            }
+          })
+        } else {
+          this.$loading.hide()
+        }
+      })
+    },
+    onSearchChange1(type,val){
+      if (type==='area') {
+        this.areaChange1(val)
+      } else {
+        this.rowChange1(val)
+      }
+    },
+    areaChange1(val){
+      this.$loading.show()
+      this.getSelectListRows(val,(f)=>{
+        if (f) {
+          this.getCunHuoList(()=>{
+            this.$loading.hide()
+          })
+        } else {
+          this.$loading.hide()
+        }
+      },1)
+    },
+    rowChange1(val){
+      this.$loading.show()
+      this.getCunHuoList(()=>{
+        this.$loading.hide()
+      })
+    },
+    onSearchChange2(type,val){
+      if (type==='area') {
+        this.areaChange2(val)
+      } else {
+        this.rowChange2(val)
+      }
+    },
+    areaChange2(val){
+      this.$loading.show()
+      this.getSelectListRows(val,(f)=>{
+        if (f) {
+          this.getKongXianList(()=>{
+            this.$loading.hide()
+          })
+        } else {
+          this.$loading.hide()
+        }
+      },2)
+    },
+    rowChange2(val){
+      this.$loading.show()
+      this.getKongXianList(()=>{
+        this.$loading.hide()
+      })
+    },
+    getSelectListAreas(callback){
+      GetArea().then((d)=>{
+        this.selectList.areas = d.data || [];
+        if (this.selectList.areas.length>0) {
+          let _temp = this.selectList.areas[0].id
+          this.$refs.search1.setAreaValue(_temp)
+          this.$refs.search2.setAreaValue(_temp)
+          callback && callback(true,_temp)
+        } else {
+          callback && callback(false)
+        }
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    getSelectListRows(val,callback,listIndex){
+      let params = {Areaid:val}
+      GetPalceRowno(params).then((d)=>{
+        let _arr = d.data || [];
+        if (!listIndex || listIndex===1) {
+          this.selectList.rows1 = _arr
+        }
+        if (!listIndex || listIndex===2) {
+          this.selectList.rows2 = _arr
+        }
+        if (_arr.length>0) {
+          if (_arr.length===1) {
+            if (!listIndex || listIndex===1) {
+              this.$refs.search1.setRowValue(this.selectList.rows[0])
+            }
+            if (!listIndex || listIndex===2) {
+              this.$refs.search2.setRowValue(this.selectList.rows[0])
+            }
+          } else {
+            if (!listIndex || listIndex===1) {
+              this.$refs.search1.setRowValue(undefined)
+            }
+            if (!listIndex || listIndex===2) {
+              this.$refs.search2.setRowValue(undefined)
+            }
+          }
+          callback && callback(true)
+        } else {
+          if (!listIndex || listIndex===1) {
+            this.$refs.search1.setRowValue(undefined)
+          }
+          if (!listIndex || listIndex===2) {
+            this.$refs.search2.setRowValue(undefined)
+          }
+          callback && callback(false)
+        }
+      }).catch(()=>{
+        if (!listIndex || listIndex===1) {
+          this.selectList.rows1 = []
+          this.$refs.search1.setRowValue(undefined)
+        }
+        if (!listIndex || listIndex===2) {
+          this.selectList.rows2 = []
+          this.$refs.search2.setRowValue(undefined)
+        }
+        callback && callback(false)
+      })
+    },
+    getCunHuoList(callback) {
+      let params = this.$refs.search1.getValues()
+      GetCunHouPlace(params).then(d=>{
+        this.$refs.list1.setList(d.data || [])
+        callback && callback(true)
+      }).catch(()=>{
+        this.$refs.list1.setList([])
+        callback && callback(false)
+      })
+    },
+    getKongXianList(callback) {
+      let params = this.$refs.search2.getValues()
+      GetKongXianPlace(params).then(d=>{
+        this.$refs.list2.setList(d.data || [])
+        callback && callback(true)
+      }).catch(()=>{
+        this.$refs.list2.setList([])
+        callback && callback(false)
+      })
+    },
+    onSubmit(type) {
+      this.$loading.show()
+      let params = this.getSubmitParams()
+      this.checkBeforeSumbit(type,params,(f)=>{
+        if (f.flag) {
+          this.submitAjax(type,params,(f2)=>{
+            this.$loading.hide()
+            if (f2) {
+              this.$message.success('鍊掑簱鎻愪氦鎴愬姛');
+              this.$refs.list1.emptyChoosen()
+              this.$refs.list2.emptyChoosen()
+            } 
+          })
+        } else {
+          this.$loading.hide()
+          this.$warning({
+            title: '绯荤粺鎻愮ず',
+            content: f.msg
+          });
+        }
+      })
+    },
+    checkBeforeSumbit(type,params,callback){
+      let res = {flag:true,msg:''}
+      if (params.startPlaceList.length!==params.endPlaceList.length) {
+        res.flag = false
+        res.msg = '璧峰搴撲綅鍜岀洰鏍囧簱浣嶇殑宸查�夊簱浣嶆暟涓嶄竴鑷淬��'
+      }
+      if (res.flag && params.startPlaceList.length===0) {
+        res.flag = false
+        res.msg = '璇烽�夋嫨搴撲綅銆�'
+      }
+      callback(res)
+    },
+    getSubmitParams(){
+      return {
+        startPlaceList:this.$refs.list1.getChoosen(),
+        endPlaceList:this.$refs.list2.getChoosen()
+      }
+    },
+    submitAjax(type,params,callback){
+      if (type==='auto') {
+        this.autoSubmitAjax(params,callback)
+      } else {
+        this.manualSubmitAjax(params,callback)
+      }
+    },
+    autoSubmitAjax(params,callback) {
+      AutoSubmit(params).then(()=>{
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    manualSubmitAjax(params,callback) {
+      ManualSubmit(params).then(()=>{
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    }
+  },
+  mounted(){
+    this.init()
+  }
+}
+</script>
+
+<style scoped lang="less">
+.zz-inverting-storage-page {
+  @dividerSize:12px;
+  height:100%;
+  display: flex;
+  flex-direction: column;
+  .hor-divider,.ver-divider,.bottom-btns-row{
+    flex-shrink: 0;
+  }
+  .hor-divider{
+    height: @dividerSize;
+  }
+  .ver-divider{
+    width: @dividerSize;
+  }
+  .top-warning-view{
+    flex-shrink: 0;
+  }
+  .bottom-btns-row{
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    .ant-btn + .ant-btn {
+      margin-left:20px;
+    }
+  }
+  .double-lists-view{
+    flex-grow: 1;
+    height: 1px;
+    display: flex;
+    .inverting-block{
+      flex-grow: 1;
+      width: 1px;
+      border-radius: 2px;
+      box-sizing: border-box;
+      border: 1px solid #dcdcdc;
+      display: flex;
+      flex-direction: column;
+      &>.title{
+        text-align: center;
+        background-color: #f0f8ff;
+        font-size: 1.5em;
+        padding: 4px 0;
+        border-bottom: 1px solid #dcdcdc;
+      }
+      &>.search-bar{
+        padding: 6px;
+        border-bottom: 1px solid #dcdcdc;
+        background-color: #fff;
+      }
+      &>.title,&>.search-bar{
+        flex-shrink: 0;
+      }
+      &>.list-box{
+        flex-grow: 1;
+        height: 1px;
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/DetailDrawer.vue
new file mode 100644
index 0000000..decc099
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/DetailDrawer.vue
@@ -0,0 +1,170 @@
+<template>
+  <a-drawer 
+    title="搴撲綅璇︽儏"
+    wrapClassName="weiben-private-drawer"
+    :width="400"
+    :closable="false"
+    :maskClosable="true"
+    :visible="visible"
+    :after-visible-change="afterVisibleChange"
+    @close="onClose"
+  >
+    <a-spin :spinning="loading">
+      <div class="wms-warehouse-location-view-detail-div">
+        <div class="btns-row">
+          <a-button type="primary" :disabled="locationObj.islock!==0" @click.stop="onUpdateLock">閿佸畾</a-button>
+          <a-button type="primary" :disabled="locationObj.islock===0" @click.stop="onUpdateLock">瑙i攣</a-button>
+          <a-button type="primary" :disabled="!(locationObj.islock!==1)" @click.stop="onUpdateEmpty">缃┖</a-button>
+        </div>
+        <div class="location-detail-box">
+          <div class="base-info info-box">
+            <p>搴撲綅缂栧彿锛歿{locationObj.placeCode}}</p>
+            <p>鎵樼洏缂栧彿锛歿{containercode}}</p>
+          </div>
+          <!-- 鐗╂枡鍒楄〃 start -->
+          <div class="location-materials">
+            <a-card v-for="(item,index) in materialList" :key="'material-item-'+index">
+              <div class="info-box">
+                <p>鐗╂枡缂栧彿锛歿{item.materialNo}}</p>
+                <p>鎵规鍙凤細{{item.materialBatch}}</p>
+                <p>鏁伴噺锛歿{item.stockNumber}}</p>
+              </div>
+            </a-card>
+          </div>
+          <!-- 鐗╂枡鍒楄〃 end -->
+        </div>
+      </div>
+    </a-spin>
+  </a-drawer>
+</template>
+
+<script>
+import { GetLocationDetail,UpdateLock,UpdateEmpty } from '@/api/modular/main/LocationViewManage'
+export default {
+  name:'wmsWarehouseLocationViewDetailDrawer',
+  emits:['update:visible','callback'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    },
+    row:{
+      type:Object,
+      default:function(){
+        return {}
+      }
+    }
+  },
+  data(){
+    return {
+      loading:false,
+      locationObj:{
+        placestatus:null,
+        islock:null
+      },
+      containercode:'',
+      materialList:[],
+      actionFlag:false
+    }
+  },
+  methods:{
+    onClose(){
+      this.close()
+    },
+    close(){
+      this.$emit('update:visible',false)
+    },
+    afterVisibleChange(visible){
+      if (visible) {
+        this.initShow()
+      } else {
+        this.afterClsoe()
+      }
+    },
+    initShow(){
+      this.loading = true;
+      this.getLocationDetail(()=>{
+        this.loading = false;
+      })
+    },
+    getLocationDetail(callback){
+      let params = {ID:this.row.id}
+      GetLocationDetail(params).then((d)=>{
+        this.locationObj = d.data.palceDetails || {}
+        this.containercode = d.data.containercode || ''
+        this.materialList = d.data.wmsMaterialStocks || []
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    afterClsoe(){
+      this.locationObj = {
+        placestatus:null,
+        islock:null
+      }
+      this.containercode = ''
+      this.materialList = []
+      if (this.actionFlag) {
+        this.$emit('callback')
+      }
+      this.actionFlag = false
+    },
+    onUpdateLock(){
+      this.loading = true;
+      let params = {ID:this.row.id}
+      UpdateLock(params).then(()=>{
+        this.actionFlag = true;
+        this.getLocationDetail(()=>{
+          this.loading = false;
+          this.$message.success('鎿嶄綔鎴愬姛锛�');
+        })
+      }).catch(()=>{
+        this.loading = false;
+      })
+    },
+    onUpdateEmpty(){
+      this.loading = true;
+      let params = {Id:this.row.id}
+      UpdateEmpty(params).then(()=>{
+        this.actionFlag = true;
+        this.getLocationDetail(()=>{
+          this.loading = false;
+          this.$message.success('鎿嶄綔鎴愬姛锛�');
+        })
+      }).catch(()=>{
+        this.loading = false;
+      })
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-warehouse-location-view-detail-div{
+  height:100%;
+  display: flex;
+  flex-direction: column;
+  &>.btns-row{
+    flex-shrink: 0;
+    padding:12px 16px;
+    .ant-btn + .ant-btn {
+      margin-left: 10px;
+    }
+  }
+  .location-detail-box{
+    flex-grow: 1;
+    overflow: auto;
+  }
+  .info-box{
+    line-height: 1.5;
+    p{
+      margin-bottom: 0;
+    }
+  }
+  .base-info,.location-materials{
+    padding:0 16px;
+    margin-bottom: 16px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/SearchForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/SearchForm.vue
new file mode 100644
index 0000000..a44058a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/SearchForm.vue
@@ -0,0 +1,152 @@
+<template>
+  <a-form layout="inline">
+    <a-form-item label="搴撳尯">
+      <a-select v-model="form.Areaid" class="slect-width" @change="onAreaChange">
+        <a-select-option v-for="(item,index) in selectList.areas" :key="'area-sel-'+index" :value="item.id">{{item.areaName}}</a-select-option>
+      </a-select>
+    </a-form-item>
+    <a-form-item label="宸烽亾">
+      <a-select v-model="form.Aisleid" allowClear class="slect-width" @change="onAisleChange">
+        <a-select-option v-for="(item,index) in selectList.aisles" :key="'aisle-sel-'+index" :value="item">{{item}}</a-select-option>
+      </a-select>
+    </a-form-item>
+
+    <a-form-item label="鎺�">
+      <a-select v-model="form.Rowno" class="slect-width" allowClear>
+        <a-select-option v-for="(item,index) in selectList.rows" :key="'row-sel-'+index" :value="item">{{item}}</a-select-option>
+      </a-select>
+    </a-form-item>
+    <a-form-item>
+      <a-button type="primary" @click.stop="onSearch">鏌ヨ</a-button>
+    </a-form-item>
+  </a-form>
+</template>
+
+<script>
+import { GetArea, GetAisle,GetPalceRowno } from '@/api/modular/main/LocationViewManage'
+export default {
+  name:'wmsWarehouseLocationViewSearchCompontent',
+  emits:['update:loading','search'],
+  data(){
+    return {
+      loading:{
+        type:Boolean,
+        default:false
+      },
+      form:{
+        Areaid聽:null,
+        Rowno:null
+      },
+      selectList:{
+        areas:[],
+        rows:[]
+      }
+    }
+  },
+  methods:{
+    init(callback){
+      this.getSelectListAreas((f1)=>{
+        if (f1) {
+          callback && callback(true,{...this.form})
+        } else {
+          callback && callback(false)
+        }
+      })
+    },
+    getSelectListAreas(callback){
+      GetArea().then((d)=>{
+        this.selectList.areas = d.data || [];
+        this.selectList.rows = []
+        this.form.Aisleid = null
+        this.form.Rowno = null
+        if (this.selectList.areas.length>0) {
+          this.form.Areaid = this.selectList.areas[0].id
+          this.getSelectListAisles(()=>{
+            callback && callback(true)
+          })
+        } else {
+          this.form.Areaid = null
+          this.selectList.aisles = []
+          callback && callback(true)
+        }
+      }).catch(()=>{
+        this.selectList.areas = []
+        this.selectList.aisles = []
+        this.selectList.rows = []
+        this.form.Areaid = null
+        this.form.Aisleid = null
+        this.form.Rowno = null
+        callback && callback(false)
+      })
+    },
+    getSelectListAisles(callback){
+      let params = {Areaid:this.form.Areaid}
+      GetAisle(params).then((d)=>{
+        this.selectList.aisles = d.data || [];
+        this.form.Rowno = null
+        if (this.selectList.aisles.length===1) {
+          this.form.Aisleid = this.selectList.aisles[0]
+          this.getSelectListRows(()=>{
+            callback && callback(true)
+          })
+        } else {
+          this.selectList.rows = []
+          this.form.Aisleid = null
+          callback && callback(true)
+        }
+      }).catch(()=>{
+        this.selectList.aisles = []
+        this.selectList.rows = []
+        this.form.Aisleid = null
+        this.form.Rowno = null
+        callback && callback(false)
+      })
+    },
+    getSelectListRows(callback){
+      let params = {Areaid:this.form.Areaid,Aisleid:this.form.Aisleid}
+      GetPalceRowno(params).then((d)=>{
+        this.selectList.rows = d.data || [];
+        if (this.selectList.rows.length===1) {
+          this.form.Rowno = this.selectList.rows[0]
+          callback && callback(true)
+        } else {
+          this.form.Rowno = null
+          callback && callback(true)
+        }
+      }).catch(()=>{
+        this.selectList.rows = []
+        this.form.Rowno = null
+        callback && callback(false)
+      })
+    },
+    onAreaChange() {
+      this.$emit('update:loading',true)
+      this.getSelectListAisles(()=>{
+         this.$emit('update:loading',false)
+      })
+    },
+    onAisleChange() {
+      this.$emit('update:loading',true)
+      this.getSelectListRows(()=>{
+         this.$emit('update:loading',false)
+      })
+    },
+    onSearch(){
+      if (!this.form.Areaid) {
+        this.$error({
+          title: '绯荤粺鎻愮ず',
+          content: '璇烽�夋嫨搴撳尯锛�',
+        });
+        return false;
+      }
+      this.$emit('search',{...this.form})
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.slect-width{
+  width:180px
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/index.vue
new file mode 100644
index 0000000..74e71b1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/index.vue
@@ -0,0 +1,375 @@
+锘�<template>
+  <!--  搴撲綅瑙嗗浘 -->
+  <div class="wms-warehouse-location-view-page">
+    <a-spin :spinning="loading">
+      <div class="top-blcok">
+        <search-form ref="search" :loading.sync="loading" @search="onSearch" />
+      </div>
+      <div class="containter-blcok">
+        <div class="example-tags">
+          <div class="tag">绌洪棽({{countNum.empty}})</div>
+          <div class="tag orange-tag">寰呭叆({{countNum.daiRu}})</div>
+          <div class="tag purple-tag">寰呭嚭({{countNum.daiChu}})</div>
+          <div class="tag primary-tag">瀛樿揣({{countNum.fill}})</div>
+          <div class="tag green-tag">绌烘墭({{countNum.kongtuo}})</div>
+          <div class="tag red-tag">閿佸畾({{countNum.lock}})</div>
+        </div>
+        <!-- 搴撳尯鏄剧ず鍖哄煙 start -->
+        <div class="locations-box">
+          
+          <div class="location-items-group-block" v-for="(item1,index1) in list" :key="'location-block-'+index1">
+            <div class="block-title">绗瑊{item1.aisle}}宸烽亾</div>
+            
+            <div class="location-items-group">
+              <div class="location-items-row" v-for="(item2,index2) in (item1.wareLocationRownoData || [])" :key="'location-row-'+index2">
+                
+                <div class="location-items-layer" v-for="(item3,index3) in (item2.wareLocationLayerData || [])" :key="'location-layer-'+index3">
+                  <div class="divider"></div>
+                  <div class="location-item" v-for="(item4,index4) in (item3.wareLocationColumnNoData || [])" :key="'location-item-'+index4" 
+                  :class="[handleClass(item4)]"
+                  @click="openDetail(item4)">
+                    {{item4?item4.placeCode:''}}
+                  </div>
+                  <div class="divider-zero"></div>
+                </div>
+              </div>
+            </div>
+            
+          </div>
+          
+        </div>
+        <!-- 搴撳尯鏄剧ず鍖哄煙 end -->
+      </div>
+      <detail-drawer :visible.sync="detailVisible" :row="detailRow" @callback="lockCallback" />
+    </a-spin>
+  </div>
+</template>
+
+<script>
+  import SearchForm from './SearchForm.vue'
+  import DetailDrawer from './DetailDrawer.vue'
+  import {
+    GetPalceList
+  } from '@/api/modular/main/LocationViewManage'
+import ItemVue from '@/components/AvatarList/Item.vue'
+  export default {
+    name: 'wmsWarehouseLocationViewPage',
+    components: {
+      SearchForm,
+      DetailDrawer
+    },
+    data() {
+      return {
+        detailVisible: false,
+        detailRow: {},
+        loading: false,
+        countNum: {
+          empty: 0,
+          daiRu: 0,
+          daiChu: 0,
+          fill: 0,
+          kongtuo:0,
+          lock: 0
+        },
+        list: [],
+        searchForm: {}
+      }
+    },
+    methods: {
+      handleClass(item4) {
+        let className = ''
+        if (item4) {
+          if (item4.islock) {
+            className = 'red-item'
+          } else if (item4.placeStatus === 3) {
+            if(item4.emptyContainer === 1){
+              className = 'green-item'
+            }else{
+              className = 'primary-item'
+            }
+          } else if (item4.placeStatus === 2) {
+            className = 'orange-item'
+          } else if (item4.placeStatus === 4) {
+            className = 'purple-item'
+          }
+        } else {
+          className = 'died-item'
+        }
+        return className
+      },
+
+      openDetail(obj) {
+        if (!obj) return false
+        this.detailRow = obj
+        this.detailVisible = true;
+      },
+      getList(params, callback) {
+        GetPalceList(params).then((d) => {
+          if (d.data) {
+            this.countNum = {
+              empty: d.data.emptyNum || 0,
+              daiRu: d.data.daiRuNum || 0,
+              daiChu: d.data.daichuNum || 0,
+              fill: d.data.materialNum || 0,
+              kongtuo: d.data.emptyContainerNum || 0,
+              lock: d.data.lockNum || 0
+            }
+            this.list = d.data.palceDetails || []
+          } else {
+            this.countNum = {
+              empty: 0,
+              daiRu: 0,
+              daiChu: 0,
+              fill: 0,
+              kongtuo:0,
+              lock: 0
+            }
+            this.list = []
+          }
+          callback && callback(true)
+        }).catch(() => {
+          callback && callback(false)
+        })
+      },
+      onSearch(valObj) {
+        this.loading = true
+        this.searchForm = valObj
+        this.getList(valObj, () => {
+          this.loading = false
+        })
+      },
+      lockCallback() {
+        this.loading = true
+        this.getList(this.searchForm, () => {
+          this.loading = false
+        })
+      },
+      init() {
+        this.loading = true
+        this.$refs.search.init((f, valObj) => {
+          this.loading = false
+          if (f) {
+            this.searchForm = valObj
+            this.getList(valObj, () => {
+              this.loading = false
+            })
+          } else {
+            this.loading = false
+          }
+        })
+      }
+    },
+    mounted() {
+      this.init()
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+  .wms-warehouse-location-view-page {
+    overflow: hidden;
+    display: flex;
+    overflow: auto;
+    background-color: #fff;
+    border-radius: 10px;
+    flex-direction: column;
+    height: 100%;
+
+    .top-blcok {
+      flex-shrink: 0;
+      padding: 10px 16px 16px 16px;
+    }
+
+    .containter-blcok {
+      flex-grow: 1;
+      height: 1px;
+      display: flex;
+      flex-direction: column;
+      @gray-color: #808080;
+      @danger-color: #ff3333;
+      @primary-color: #ccffff;
+      @orange-color: #ffa500;
+      @purple-color: #800080;
+      @green-color: #2cb228;
+      @border-color-x: #c0c0c0;
+
+      .example-tags {
+        flex-shrink: 0;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        padding: 0 16px 16px 16px;
+
+        .tag {
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          height: 30px;
+          width: 100px;
+          border: 1px solid @border-color-x;
+          border-radius: 4px;
+          cursor: default;
+          background-color: @gray-color;
+
+          &+.tag {
+            margin-left: 10px;
+          }
+
+          &.red-tag {
+            background-color: @danger-color;
+          }
+
+          &.primary-tag {
+            background-color: @primary-color;
+          }
+
+          &.orange-tag {
+            background-color: @orange-color;
+          }
+
+          &.purple-tag {
+            background-color: @purple-color;
+          }
+          &.green-tag {
+            background-color: @green-color;
+          }
+          &:not(.primary-tag) {
+            color: #FFFFFF;
+          }
+        }
+      }
+
+      .locations-box {
+        flex-grow: 1;
+        height: 1px;
+        overflow: auto;
+
+        .location-items-group-block {
+          padding: 0 16px;
+          margin-bottom: 16px;
+          .block-title {
+            padding-bottom: 4px;
+          }
+          &:last-child{
+            margin-bottom: 0;
+          }
+        }
+
+        .location-items-group {
+          @padding-size:8px;
+
+          .location-items-row {
+            margin-bottom: 16px;
+            background-color: #f0f8ff;
+            overflow: auto;
+            padding: @padding-size 0;
+            display: flex;
+            flex-direction: column;
+            
+            .location-items-layer{
+              flex-shrink: 0;
+              display: flex;
+              margin-bottom: @padding-size;
+              .divider{
+                width:@padding-size;
+                flex-shrink: 0;
+              }
+              .divider-zero{
+                width:1px;
+                flex-shrink: 0;
+              }
+              .location-item {
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                width: 120px;
+                height: 50px;
+                overflow: hidden;
+                white-space: nowrap;
+                margin-right: @padding-size;
+                border: 1px solid @border-color-x;
+                border-radius: 4px;
+                cursor: pointer;
+                flex-shrink: 0;
+                background-color: @gray-color;
+              
+                &.active {
+                  box-shadow: 0 0 4px #00ff00;
+                }
+                
+                &.died-item {
+                  background-color: #FFFFFF;
+                  background-image: linear-gradient(
+                  	to top right,
+                  	rgba(192, 192, 192, 0) 0%,
+                  	rgba(192, 192, 192, 0) calc(50% - 1px),
+                  	rgba(192, 192, 192, 1) 50%,
+                  	rgba(192, 192, 192, 0) calc(50% + 1px),
+                  	rgba(192, 192, 192, 0) 100%
+                  ), linear-gradient(
+                  	to bottom right,
+                  	rgba(192, 192, 192, 0) 0%,
+                  	rgba(192, 192, 192, 0) calc(50% - 1px),
+                  	rgba(192, 192, 192, 1) 50%,
+                  	rgba(192, 192, 192, 0) calc(50% + 1px),
+                  	rgba(192, 192, 192, 0) 100%
+                  );
+                  cursor: not-allowed;
+                }
+                
+                &.red-item {
+                  background-color: @danger-color;
+                }
+                &.green-item {
+                  background-color: @green-color;
+                }
+                
+                &.primary-item {
+                  background-color: @primary-color;
+                }
+                
+                &.orange-item {
+                  background-color: @orange-color;
+                }
+                
+                &.purple-item {
+                  background-color: @purple-color;
+                }
+                
+                &:not(.primary-item,.died-item) {
+                  color: #FFFFFF;
+                }
+                
+              }
+            
+              &:last-child {
+                margin-bottom: 0;
+              }
+            }
+
+            &:last-child {
+              margin-bottom: 0;
+            }
+
+            
+          }
+        }
+      }
+    }
+  }
+</style>
+<style lang="less">
+  .wms-warehouse-location-view-page {
+
+    .ant-spin-nested-loading,
+    .ant-spin-container {
+      height: 100%;
+    }
+
+    .ant-spin-container {
+      overflow: hidden;
+      display: flex;
+      flex-direction: column;
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/addForm.vue
new file mode 100644
index 0000000..bb70802
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/addForm.vue
@@ -0,0 +1,146 @@
+锘�<template>
+  <a-modal
+    title="鏂板娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]" @change="onLargeCategorySelect">
+            <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+            <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴撳悕绉�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="璧峰浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ捣濮嬩綅缃�" v-decorator="['startingPosition']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦綅缃�" v-decorator="['targetPosition']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatusEnum', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    PMFinishedOrderAdd,PMFinishedOrderLargeCategories,PMFinishedOrderSubclass
+  } from '@/api/modular/main/PMFinishedOrderManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        }, 
+		selectOptions:{
+          largeCategories:[],
+          subclasses:[]
+        },
+        orderStatusEnumData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+		getLargeCategoriesOptions(){
+		  if (this.selectOptions.largeCategories.length<=0) {
+		    PMFinishedOrderLargeCategories().then(d=>{
+		      this.selectOptions.largeCategories = d.data || []
+		    }).catch(err=>{
+		      console.log(err)
+		    })
+		  }
+		},
+		getSubclassOptions(id){
+		  PMFinishedOrderSubclass(id).then(d=>{
+		    this.selectOptions.subclasses = d.data || []
+		    this.form.resetFields(['orderSubclass'])
+		  }).catch(err=>{
+		    this.clearSubclass()
+		    console.log(err)
+		  })
+		},
+		onLargeCategorySelect(val){
+		  if (val) {
+		    this.getSubclassOptions(val)
+		  } else {
+		    this.clearSubclass()
+		  }
+		},
+		clearSubclass(){
+		  this.selectOptions.subclasses = []
+		  this.form.resetFields(['orderSubclass'])
+		},
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        const orderStatusEnumOption = this.$options
+        this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+        this.$nextTick(() => {
+		 this.getLargeCategoriesOptions()
+        });
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            PMFinishedOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/editForm.vue
new file mode 100644
index 0000000..acd3110
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/editForm.vue
@@ -0,0 +1,167 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+       <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+         <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]" @change="onLargeCategorySelect">
+           <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+         </a-select>
+       </a-form-item>
+       <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+         <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+           <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+         </a-select>
+       </a-form-item>
+        <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+       <a-form-item label="鐩爣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+         <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴撳悕绉�" v-decorator="['areaName']" />
+       </a-form-item>
+        <a-form-item label="璧峰浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ捣濮嬩綅缃�" v-decorator="['startingPosition']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦綅缃�" v-decorator="['targetPosition']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatusEnum', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    PMFinishedOrderEdit,PMFinishedOrderLargeCategories,PMFinishedOrderSubclass
+  } from '@/api/modular/main/PMFinishedOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+		selectOptions:{
+		  largeCategories:[],
+		  subclasses:[]
+		},
+        record: {},
+        orderStatusEnumData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+		getLargeCategoriesOptions(){
+		  if (this.selectOptions.largeCategories.length<=0) {
+		    PMFinishedOrderLargeCategories().then(d=>{
+		      this.selectOptions.largeCategories = d.data || []
+		    }).catch(err=>{
+		      console.log(err)
+		    })
+		  }
+		},
+		getSubclassOptions(id,init=false){
+		  PMFinishedOrderSubclass(id).then(d=>{
+		    this.selectOptions.subclasses = d.data || []
+			if (!init){
+				this.form.resetFields(['orderSubclass'])
+			}
+		  }).catch(err=>{
+		    this.clearSubclass()
+		    console.log(err)
+		  })
+		},
+		onLargeCategorySelect(val){
+		  if (val) {
+		    this.getSubclassOptions(val)
+		  } else {
+		    this.clearSubclass()
+		  }
+		},
+		clearSubclass(){
+		  this.selectOptions.subclasses = []
+		  this.form.resetFields(['orderSubclass'])
+		},
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        const orderStatusEnumOption = this.$options
+        this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              orderNo: record.orderNo,
+              orderLargeCategory: record.orderLargeCategory,
+              orderSubclass: record.orderSubclass,
+              orderQuantity: record.orderQuantity,
+              areaName: record.areaName,
+              startingPosition: record.startingPosition,
+              targetPosition: record.targetPosition,
+              orderStatusEnum: record.orderStatusEnum
+            }
+          )
+		  this.getLargeCategoriesOptions()
+		  this.getSubclassOptions(record.orderLargeCategory,true)
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            PMFinishedOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/index.vue
new file mode 100644
index 0000000..0027f5e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/index.vue
@@ -0,0 +1,259 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                  <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>			
+            <template v-if="advanced">
+              <!-- <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁澶х被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderLargeCategory" placeholder="璇烽�夋嫨..." @change="onLargeCategorySelect">
+                    <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁灏忕被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderSubclass" placeholder="璇烽�夋嫨...">
+                    <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col> -->
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩爣浠撳簱">
+                  <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ョ洰鏍囦粨搴�"/>
+                </a-form-item>
+              </a-col>
+            </template>
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+		>
+        <template class="table-operator" slot="operator">
+          <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板娉℃搏鍏ュ簱鍗�</a-button>
+        </template>
+		<template slot="linkSlot" slot-scope="text,record">
+		  <a @click="onViewDetail(record)">{{text}}</a>
+		</template>
+        <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical"/>
+          <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => PMFinishedOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+	  <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { PMFinishedOrderPage, PMFinishedOrderDelete, PMFinishedOrderLargeCategories, PMFinishedOrderSubclass} from '@/api/modular/main/PMFinishedOrderManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm,
+	  infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        selectOptions:{
+          largeCategories:[],
+          subclasses:[]
+        },
+        columns: [
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          // {
+          //   title: '鍗曟嵁澶х被',
+          //   align: 'center',
+          //   dataIndex: 'orderLargeCategory',
+          //   //scopedSlots: { customRender: 'orderLargeCategoryscopedSlots' }
+          // },
+          // {
+          //   title: '鍗曟嵁灏忕被',
+          //   align: 'center',
+          //   dataIndex: 'orderSubclass',
+          //   //scopedSlots: { customRender: 'orderSubclassscopedSlots' }
+          // },
+          {
+            title: '鍗曟嵁鏁伴噺',
+            align: 'center',
+            dataIndex: 'orderQuantity'
+          },
+          {
+            title: '鐩爣浠撳簱',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '璧峰浣嶇疆',
+            align: 'center',
+            dataIndex: 'startingPosition'
+          },
+          {
+            title: '鐩爣浣嶇疆',
+            align: 'center',
+            dataIndex: 'targetPosition'
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatusEnum',
+            scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return PMFinishedOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0])
+            }
+            return res.data
+          })
+        },
+        orderStatusEnumData: [],
+        infoId:null,
+        infoOrderNo:''
+      }
+    },
+    created () {
+      const orderStatusEnumOption = this.$options
+      this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+    },
+	mounted(){
+	  this.getLargeCategoriesOptions()
+	},
+    methods: {
+		onViewDetail(obj){
+		  if (this.infoId===obj.id) {
+		    this.infoId = null
+		    this.infoOrderNo = ''
+		  } else {
+		    this.infoId = obj.id;
+		    this.infoOrderNo = obj.orderNo
+		  }
+		},
+		getLargeCategoriesOptions(){
+		  PMFinishedOrderLargeCategories().then(d=>{
+		    this.selectOptions.largeCategories = d.data || []
+		  }).catch(err=>{
+		    console.log(err)
+		  })
+		},
+		getSubclassOptions(id){
+		  PMFinishedOrderSubclass(id).then(d=>{
+		    this.selectOptions.subclasses = d.data || []
+		    this.queryParam.subclasses = undefined
+		  }).catch(err=>{
+		    this.clearSubclass()
+		    console.log(err)
+		  })
+		},
+		onLargeCategorySelect(val){
+		  if (val) {
+		    this.getSubclassOptions(val)
+		  } else {
+		    this.clearSubclass()
+		  }
+		},
+		clearSubclass(){
+		  this.selectOptions.subclasses = []
+		  this.queryParam.subclasses = undefined
+		},
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      PMFinishedOrderDelete (record) {
+        PMFinishedOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            if (this.infoId && record.id) {
+              this.infoId = null
+            }
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+	  infoCallback(){
+        this.$refs.table.refresh()
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/infoBlock.vue
new file mode 100644
index 0000000..f7f132d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/infoBlock.vue
@@ -0,0 +1,114 @@
+<template>
+  <div class="pm-finished-order-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <template slot="statusSlots" slot-scope="text,record">
+        <a-tag :color="text==='瀹屾垚'?'#008000':(
+          text==='鎵ц涓�'?'#1e90ff':(
+            text==='鍙栨秷'?'#556b2f':(
+              text==='鏆傚仠'?'#8b0000':(
+                text==='鎾ゅ洖'?'#ff00ff':'gray'
+              )
+            )
+          )
+        )">{{text}}</a-tag>
+      </template>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { PMFinishedOrderDetailPage } from '@/api/modular/main/PMFinishedOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'pmFinishedOrderInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+        { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.Id = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return PMFinishedOrderDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.pm-finished-order-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/addForm.vue
new file mode 100644
index 0000000..f4e94ef
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/addForm.vue
@@ -0,0 +1,111 @@
+锘�<template>
+  <a-modal
+    title="鏂板浜х嚎閫�搴撶鐞�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鐗╂枡绉嶇被" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ墿鏂欑绫�" v-decorator="['materialType']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+        <a-form-item label="鍙栬揣浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彇璐т綅缃�" v-decorator="['pickupPosition']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴撳悕绉�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="閫�璐х悊鐢�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ��璐х悊鐢�" v-decorator="['returnReason']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    ProductionReturnedOrderAdd
+  } from '@/api/modular/main/ProductionReturnedOrderManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        orderLargeCategoryData: [],
+        orderSubclassData: [],
+        orderStatusEnumData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            ProductionReturnedOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/editForm.vue
new file mode 100644
index 0000000..84213ca
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/editForm.vue
@@ -0,0 +1,132 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫浜х嚎閫�搴撶鐞�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鐗╂枡绉嶇被" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ墿鏂欑绫�" v-decorator="['materialType']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+        <a-form-item label="鍙栬揣浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彇璐т綅缃�" v-decorator="['pickupPosition']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴撳悕绉�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="閫�璐х悊鐢�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ��璐х悊鐢�" v-decorator="['returnReason']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    ProductionReturnedOrderEdit
+  } from '@/api/modular/main/ProductionReturnedOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        orderLargeCategoryData: [],
+        orderSubclassData: [],
+        orderStatusEnumData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              orderNo: record.orderNo,
+              orderLargeCategory: record.orderLargeCategory,
+              orderSubclass: record.orderSubclass,
+              materialType: record.materialType,
+              orderQuantity: record.orderQuantity,
+              pickupPosition: record.pickupPosition,
+              areaName: record.areaName,
+              returnReason: record.returnReason
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            ProductionReturnedOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/index.vue
new file mode 100644
index 0000000..474935d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/index.vue
@@ -0,0 +1,271 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                  <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <!-- <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁澶х被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderLargeCategory" placeholder="璇烽�夋嫨..." @change="onLargeCategorySelect">
+                    <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁灏忕被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderSubclass" placeholder="璇烽�夋嫨...">
+                    <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col> -->
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩爣浠撳簱">
+                  <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ョ洰鏍囦粨搴�"/>
+                </a-form-item>
+              </a-col>          
+            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+      >
+        <template class="table-operator" slot="operator" >
+          <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板浜х嚎閫�搴撶鐞�</a-button>
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" />
+          <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => ProductionReturnedOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { 
+    ProductionReturnedOrderPage, 
+    ProductionReturnedOrderDelete,
+    ProductionReturnedOrderLargeCategories,
+    ProductionReturnedOrderSubclass
+  } from '@/api/modular/main/ProductionReturnedOrderManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        selectOptions:{
+          largeCategories:[],
+          subclasses:[]
+        },
+        columns: [
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          // {
+          //   title: '鍗曟嵁澶х被',
+          //   align: 'center',
+          //   dataIndex: 'orderLargeCategory',
+          //   //scopedSlots: { customRender: 'orderLargeCategoryscopedSlots' }
+          // },
+          // {
+          //   title: '鍗曟嵁灏忕被',
+          //   align: 'center',
+          //   dataIndex: 'orderSubclass',
+          //   //scopedSlots: { customRender: 'orderSubclassscopedSlots' }
+          // },
+          {
+            title: '鐗╂枡绉嶇被',
+            align: 'center',
+            dataIndex: 'materialType'
+          },
+          {
+            title: '鍗曟嵁鎬绘暟閲�',
+            align: 'center',
+            dataIndex: 'orderQuantity'
+          },
+          {
+            title: '鍙栬揣浣嶇疆',
+            align: 'center',
+            dataIndex: 'pickupPosition'
+          },
+          {
+            title: '鐩爣浠撳簱鍚嶇О',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '閫�璐х悊鐢�',
+            align: 'center',
+            dataIndex: 'returnReason'
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatusEnum',
+            scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return ProductionReturnedOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0])
+            }
+            return res.data
+          })
+        },
+        orderStatusEnumData: [],
+        infoId:null,
+        infoOrderNo:''
+      }
+    },
+    created () {
+      const orderStatusEnumOption = this.$options
+      this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+    },
+    mounted(){
+      this.getLargeCategoriesOptions()
+    },
+    methods: {
+      onViewDetail(obj){
+        if (this.infoId===obj.id) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      getLargeCategoriesOptions(){
+        ProductionReturnedOrderLargeCategories().then(d=>{
+          this.selectOptions.largeCategories = d.data || []
+        }).catch(err=>{
+          console.log(err)
+        })
+      },
+      getSubclassOptions(id){
+        ProductionReturnedOrderSubclass(id).then(d=>{
+          this.selectOptions.subclasses = d.data || []
+          this.queryParam.subclasses = undefined
+        }).catch(err=>{
+          this.clearSubclass()
+          console.log(err)
+        })
+      },
+      onLargeCategorySelect(val){
+        if (val) {
+          this.getSubclassOptions(val)
+        } else {
+          this.clearSubclass()
+        }
+      },
+      clearSubclass(){
+        this.selectOptions.subclasses = []
+        this.queryParam.subclasses = undefined
+      },
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      ProductionReturnedOrderDelete (record) {
+        ProductionReturnedOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+            if (this.infoId && record.id) {
+              this.infoId = null
+            }
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      infoCallback(){
+        this.$refs.table.refresh()
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/infoBlock.vue
new file mode 100644
index 0000000..dcf4827
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/infoBlock.vue
@@ -0,0 +1,115 @@
+<template>
+  <div class="production-returned-order-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <template slot="statusSlots" slot-scope="text,record">
+        <a-tag :color="text==='瀹屾垚'?'#008000':(
+          text==='鎵ц涓�'?'#1e90ff':(
+            text==='鍙栨秷'?'#556b2f':(
+              text==='鏆傚仠'?'#8b0000':(
+                text==='鎾ゅ洖'?'#ff00ff':'gray'
+              )
+            )
+          )
+        )">{{text}}</a-tag>
+      </template>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { ProductionReturnedOrderDetailPage } from '@/api/modular/main/ProductionReturnedOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'ProductionReturnedOrderInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鎵樼洏鍙�', align:'center', dataIndex: 'containerCode', key: 'containerCode' },
+        { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+        { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.Id = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return ProductionReturnedOrderDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.production-returned-order-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/index.vue
new file mode 100644
index 0000000..7cd956c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/index.vue
@@ -0,0 +1,303 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('PurchaseOrder:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+              </a-form-item>
+            </a-col><a-col :md="8" :sm="24">
+              <a-form-item label="璁㈠崟鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.purchaseOrderStatusEnum" placeholder="璇烽�夋嫨...">
+                  <a-select-option v-for="(item,index) in purchaseOrderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+			<template v-if="advanced">
+             <!-- <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁澶х被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderLargeCategory" placeholder="璇烽�夋嫨..." @change="onLargeCategorySelect">
+                    <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁灏忕被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderSubclass" placeholder="璇烽�夋嫨...">
+                    <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col> -->
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                    <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="onReset">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+      >
+        <template class="table-operator" slot="operator">
+          <a-button type="primary" icon="plus" @click="">ERP鑾峰彇</a-button>
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="purchaseOrderStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#00ffff':(text===3?'#0000ff':'#7fff00'))">{{ 'purchase_orderstatus' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="isFullOrderscopedSlots" slot-scope="text">
+          <a-tag :color="!!text?'#90ee90':'gray'">{{ 'number_yes_no' | dictType(text) }}</a-tag>
+        </span>
+      </s-table>
+      
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { PurchaseOrderPage, PurchaseOrderDelete, PurchaseOrderLargeCategories, PurchaseOrderSubclass } from '@/api/modular/main/PurchaseOrderManage'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        selectOptions:{
+          largeCategories:[],
+          subclasses:[]
+        },
+        columns: [
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          {
+            title: '璁㈠崟鐘舵��',
+            align: 'center',
+            dataIndex: 'purchaseOrderStatusEnum',
+            scopedSlots: { customRender: 'purchaseOrderStatusEnumscopedSlots' }
+          },
+          // {
+          //   title: '鍗曟嵁浼樺厛绾�',
+          //   align: 'center',
+          //   dataIndex: 'orderLevel'
+          // },
+          // {
+          //   title: '鍗曟嵁澶х被',
+          //   align: 'center',
+          //   dataIndex: 'orderLargeCategory'
+          // },
+          // {
+          //   title: '鍗曟嵁灏忕被',
+          //   align: 'center',
+          //   dataIndex: 'orderSubclass'
+          // },
+          {
+            title: '鏀惰揣浠撳簱',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatusEnum',
+            scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+          },
+          {
+            title: '鍙戣揣鏃ユ湡',
+            align: 'center',
+            dataIndex: 'sendGoodsTime'
+          },
+          {
+            title: '浜よ揣鏃ユ湡',
+            align: 'center',
+            dataIndex: 'deliveryGoodsTime'
+          },
+          {
+            title: '渚涘簲鍟�',
+            align: 'center',
+            dataIndex: 'supplier'
+          },
+          {
+            title: '鎺ヨ揣浜�',
+            align: 'center',
+            dataIndex: 'receivingPerson'
+          },
+          {
+            title: '鐢佃瘽鑱旂郴浜�',
+            align: 'center',
+            dataIndex: 'phoneNumber'
+          },
+          {
+            title: '鏀惰揣鍦板潃',
+            align: 'center',
+            dataIndex: 'address'
+          },
+          {
+            title: '杩愯緭鍏徃',
+            align: 'center',
+            dataIndex: 'transportationCompany'
+          },
+          {
+            title: '杩愯緭鍗曞彿',
+            align: 'center',
+            dataIndex: 'transportationOrderNo'
+          },
+          {
+            title: '鍙栨秷鍘熷洜',
+            align: 'center',
+            dataIndex: 'reasonForCancellation'
+          },
+          {
+            title: '鏁村崟鏀惰揣',
+            align: 'center',
+            dataIndex: 'isFullOrder',
+            scopedSlots: { customRender: 'isFullOrderscopedSlots' }
+          },
+          {
+            title: '璐т富缂栧彿',
+            align: 'center',
+            dataIndex: 'shipperOrder'
+          },
+          {
+            title: '澶囨敞',
+            align: 'center',
+            dataIndex: 'remarks'
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return PurchaseOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0])
+            }
+            return res.data
+          })
+        },
+        purchaseOrderStatusEnumData: [],
+        orderStatusEnumData: [],
+        infoId:null,
+        infoOrderNo:''
+      }
+    },
+    created () {
+      this.purchaseOrderStatusEnumData = this.$options.filters['dictData']('purchase_orderstatus')
+      this.orderStatusEnumData = this.$options.filters['dictData']('order_status')
+    },
+    mounted(){
+      this.getLargeCategoriesOptions()
+    },
+    methods: {
+      onViewDetail(obj){
+        if (this.infoId===obj.id) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      onReset(){
+        this.queryParam = {}
+        this.selectOptions.subclasses = []
+      },
+      getLargeCategoriesOptions(){
+        PurchaseOrderLargeCategories().then(d=>{
+          this.selectOptions.largeCategories = d.data || []
+        }).catch(err=>{
+          console.log(err)
+        })
+      },
+      getSubclassOptions(id){
+        PurchaseOrderSubclass(id).then(d=>{
+          this.selectOptions.subclasses = d.data || []
+          this.queryParam.subclasses = undefined
+        }).catch(err=>{
+          this.clearSubclass()
+          console.log(err)
+        })
+      },
+      onLargeCategorySelect(val){
+        if (val) {
+          this.getSubclassOptions(val)
+        } else {
+          this.clearSubclass()
+        }
+      },
+      clearSubclass(){
+        this.selectOptions.subclasses = []
+        this.queryParam.subclasses = undefined
+      },
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      PurchaseOrderDelete (record) {
+        PurchaseOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      infoCallback(){
+        this.$refs.table.refresh()
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/infoBlock.vue
new file mode 100644
index 0000000..f0c2262
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/infoBlock.vue
@@ -0,0 +1,128 @@
+<template>
+  <div class="les-purchase-order-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <template slot="statusSlots" slot-scope="text,record">
+        <a-tag :color="text==='瀹屾垚'?'#008000':(
+          text==='鎵ц涓�'?'#1e90ff':(
+            text==='鍙栨秷'?'#556b2f':(
+              text==='鏆傚仠'?'#8b0000':(
+                text==='鎾ゅ洖'?'#ff00ff':'gray'
+              )
+            )
+          )
+        )">{{text}}</a-tag>
+      </template>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { PurchaseOrderDetailPage } from '@/api/modular/main/PurchaseOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'lesPurchaseOrderInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        // { title: '鐗╂枡ID', align:'center', dataIndex: 'materialId', key: 'materialId' },
+        { title: '鐗╂枡缂栫爜', align:'center', dataIndex: 'materialCode', key: 'materialCode' },
+        { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+        // { title: '鐗╂枡鐗堟湰', align:'center', dataIndex: 'materialVersion', key: 'materialVersion' },
+        { title: '鐗╂枡绫诲埆', align:'center', dataIndex: 'materialType', key: 'materialType' },
+        { title: '灏哄', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '瀵嗗害', align:'center', dataIndex: 'materialDensity', key: 'materialDensity' },
+        { title: '鍗曚綅', align:'center', dataIndex: 'unitType', key: 'unitType' },
+        { title: '澶囨敞', align:'center', dataIndex: 'remarks', key: 'remarks' },
+        { title: '鏄惁鎵嬪伐鎷h揣', align:'center', dataIndex: 'isManualPicking', key: 'isManualPicking' },
+        { title: '璁㈣揣鏁�', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' },
+        // { title: '鍛ㄨ浆瑙勫垯', align:'center', dataIndex: 'turnoverRules', key: 'turnoverRules' },
+        // { title: '鍒嗛厤瑙勫垯', align:'center', dataIndex: 'allocationRules', key: 'allocationRules' },
+        { title: '璁″垝鏁�', align:'center', dataIndex: 'planQuantity', key: 'planQuantity' },
+        { title: '鍒嗛厤鏁�', align:'center', dataIndex: 'allocationQuantity', key: 'allocationQuantity' },
+        { title: '鎷h揣鏁�', align:'center', dataIndex: 'pickingQuantity', key: 'pickingQuantity' },
+        { title: '鍙戣揣鏁�', align:'center', dataIndex: 'sendGoodsQuantity', key: 'sendGoodsQuantity' },
+        { title: '鍙戣揣浜�', align:'center', dataIndex: 'shipperMan', key: 'shipperMan' },
+        { title: '妫�楠岀粨鏋�', align:'center', dataIndex: 'inspectionResults', key: 'inspectionResults' }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.PurchaseOrderId = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return PurchaseOrderDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.les-purchase-order-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/addForm.vue
new file mode 100644
index 0000000..7ff3878
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/addForm.vue
@@ -0,0 +1,322 @@
+锘�<template>
+  <a-modal
+    :title="(type==='modify'?'淇敼':'鏂板')+'閲囪喘鏀惰揣'"
+    width="90vw"
+    :visible="visible"
+    dialogClass="zero-modal"
+    :confirmLoading="confirmLoading"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <div class="purchase-receive-modal-content">
+        <div class="form-view">
+          <a-form :form="form">
+            <a-row>
+              <a-col :md="12" :sm="24">
+                <a-form-item label="鍗曟嵁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input disabled v-decorator="['purchaseReceiveOrderOrderNo',{rules:[{required:true,message:'鍗曟嵁鍙蜂笉鍙负绌猴紒'}]}]" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="12" :sm="24" v-if="type==='add'">
+                <a-form-item label="閲囪喘鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-select style="width: 100%" v-decorator="['purchaseOrderNo',{rules:[{required:true,message:'璇烽�夋嫨閲囪喘鍗曞彿锛�'}]}]" placeholder="璇烽�夋嫨...">
+                    <a-select-option v-for="(item,index) in selectOptions.purchaseOrders" :key="index" :value="item.purchaseOrderNo">{{ item.purchaseOrderNo }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="12" :sm="24" v-else>
+                <a-form-item label="閲囪喘鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input disabled v-decorator="['purchaseOrderNo']" />
+                </a-form-item>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
+        <div class="action-view">
+          <a-button type="primary" icon="plus" :disabled="type==='modify'" @click="openChoose">
+            娣诲姞鐗╂枡
+          </a-button>
+        </div>
+        <div class="list-view" ref="listWrapper">
+          <!-- 娉ㄦ剰scroll.x鐨勫�� -->
+          <template v-if="th">
+            <a-table v-if="type==='modify'" :data-source="list" :columns="columnsEdit" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+              <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+              <template slot="inputCell" slot-scope="text,record,index">
+                <a-input-number v-model="record.receiveQuantity" :min="0" />
+              </template>
+              <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+            </a-table>
+            <a-table v-else :data-source="list" :columns="columnsAdd" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+              <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+              <template slot="action" slot-scope="text,record,index">
+                <a-button type="danger" size="small" @click.stop="cancelListItem(index)">鍒犻櫎</a-button>
+              </template>
+              <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+            </a-table>
+          </template>
+          
+        </div>
+      </div>
+    </a-spin>
+    
+    <choose-modal :visible.sync="chooseVisible" :query-order-no="chooseOrderNo" @callback="chooseBack" />
+    
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="submit" type="primary" :loading="confirmLoading" @click="onSubmit" :disabled="!list.length">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    PurchaseReceiveOrderAdd,
+    GetBillNumber,
+    GetPurchaseOrders,
+    PurchaseReceiveOrderDetailPage,
+    PurchaseReceiveOrderEditDetailNumber
+  } from '@/api/modular/main/PurchaseReceiveOrderManage'
+  import ChooseModal from './chooseMaterials.vue'
+  export default {
+    components:{ChooseModal},
+    props:{
+      type:{
+        type:String,
+        default:''
+      }
+    },
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 18 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        selectOptions:{
+          purchaseOrders:[]
+        },
+        th:0,
+        tableKey:'materialNo',
+        list:[],
+        columns:[
+          { title: '搴忓彿', key: 'index', width: 70, align:'center', scopedSlots: { customRender: 'index' }},
+          { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+          { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+          { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+          { title: '鍗曚綅绫诲瀷', dataIndex: 'basicUnit', key: 'basicUnit', width: 120, scopedSlots: { customRender: 'unitTyleSlot' }},
+          { title: '閫佽揣鏁�', dataIndex: 'deliverQuantity', key: 'deliverQuantity', width: 180 }
+        ],
+        columnA:{ title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }},
+        columnB:{ title: '鏀惰揣鏁�', key: 'receiveQuantity', scopedSlots: { customRender: 'inputCell' }, width: 220, align:'center'},
+        columnsAdd:[],
+        columnsEdit:[],
+        chooseVisible:false,
+        chooseOrderNo:''
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      init (record) {
+        this.visible = true
+        this.$nextTick(() => {
+          this.th = this.$refs.listWrapper.clientHeight - 60
+          if (this.type==='modify') {
+            let _arr = [...this.columns]
+            _arr.push(this.columnB)
+            this.columnsEdit = _arr
+            this.getEditInitData(record)
+          } else {
+            let _arr = [...this.columns]
+            _arr.push(this.columnA)
+            this.columnsAdd = _arr
+            this.getAddInitData()
+          }
+        });
+      },
+      getAddInitData(){
+        this.confirmLoading = true;
+        Promise.all([
+          GetBillNumber(),
+          GetPurchaseOrders()
+        ]).then(response=>{
+          let formData = {
+            purchaseReceiveOrderOrderNo:(response[0].data.orderNo || '')
+          }
+          this.selectOptions.purchaseOrders = response[1].data || []
+          if (this.selectOptions.purchaseOrders.length===1){
+            formData.purchaseOrderNo = this.selectOptions.purchaseOrders[0].purchaseOrderNo
+          }
+          this.form.setFieldsValue(formData)
+          this.confirmLoading = false;
+        }).catch((err)=>{
+          this.confirmLoading = false;
+        })
+      },
+      getEditInitData(record){
+        let formData = {
+          purchaseReceiveOrderOrderNo:record.orderNo,
+          purchaseOrderNo:record.receiveOrderNo
+        }
+        this.form.setFieldsValue(formData)
+        this.confirmLoading = true;
+        let params = {
+          Id:record.id,
+          PageNo:1,
+          PageSize:999
+        }
+        PurchaseReceiveOrderDetailPage(params).then((d)=>{
+          this.list = d.data.rows || []
+          this.confirmLoading = false;
+        }).catch(()=>{
+          this.confirmLoading = false;
+        })
+      },
+      chooseBack(arr){
+        let newArr = [], reCount = 0;
+        arr.forEach((item)=>{
+          let f = false;
+          for (let i=0;i<this.list.length;i++) {
+            if (this.list[i][this.tableKey] === item[this.tableKey]) {
+              reCount++;
+              f = true
+              break;
+            }
+          }
+          if (!f) {
+            let _obj = {...item}
+            _obj.orderQuantity = 0
+            _obj.requireTime = ''
+            newArr.push(item)
+          }
+        })
+        this.list = [].concat(newArr,this.list)
+        if (reCount) {
+          this.$message.warning(`${reCount}绗旀暟鎹凡瀛樺湪锛屾湭娣诲姞锛乣);
+        }
+      },
+      cancelListItem(index){
+        this.list.splice(index,1)
+      },
+      interalNumberValidate(val){
+        let res = 0
+        if (!val) {
+          res = 1  //鏁伴噺蹇呭~涓斿ぇ浜�0
+        } else if (Number(val)!==parseInt(val)) {
+          res = 2  //鍙兘鏄暣鏁�
+        }
+        return res
+      },
+      checkBeforeSubmit() {
+        let res = true, msg = '';
+        if (this.type==='modify') {
+          for (let i=0;i<this.list.length;i++) {
+            let numberTag = this.interalNumberValidate(this.list[i].receiveQuantity)
+            if (numberTag!==0) {
+              res = false
+              if (numberTag===1) {
+                msg = `绗�${i+1}琛岋紝鏀惰揣鏁板繀濉笖澶т簬0锛乣
+              } else if (numberTag===2) {
+                msg = `绗�${i+1}琛岋紝鏀惰揣鏁板彧鑳芥槸鏁存暟锛乣
+              }
+              break;
+            }
+          }
+        }
+        if (!res) {
+          this.$message.warning(msg);
+        }
+        return res
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      onSubmit () {
+        const { form: { validateFields } } = this
+        validateFields((errors, values) => {
+          if (!errors) {
+            let f = this.checkBeforeSubmit()
+            if (f) {
+              this.confirmLoading = true
+              this.handleSubmit(values,(fx)=>{
+                if (fx) {
+                  this.$message.success('鎻愪氦鎴愬姛')
+                  this.confirmLoading = false
+                  this.handleCancel()
+                  this.$emit('ok')
+                } else {
+                  this.confirmLoading = false
+                }
+              })
+            }
+          } 
+        })
+      },
+      handleSubmit(values,callback){
+        this.confirmLoading = true
+        if (this.type==='modify') {
+          this.handleSubmitModify(callback)
+        } else {
+          this.handleSubmitAdd(values,callback)
+        }
+      },
+      handleSubmitAdd(values,callback){
+        let params = {...values,...{purchaseReceiveOrderDetailList:this.list}}
+        PurchaseReceiveOrderAdd(params).then(()=>{
+          callback && callback(true)
+        }).catch(()=>{
+          callback && callback(false)
+        })
+      },
+      handleSubmitModify(callback){
+        let params = [...this.list]
+        PurchaseReceiveOrderEditDetailNumber(params).then(()=>{
+          callback && callback(true)
+        }).catch(()=>{
+          callback && callback(false)
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.list = []
+        this.visible = false
+      },
+      openChoose(){
+        this.form.validateFields(['purchaseOrderNo'],(errors, values) =>{
+          if (!errors){
+            this.chooseOrderNo = values.purchaseOrderNo
+            this.chooseVisible = true
+          }
+        })
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+.purchase-receive-modal-content{
+  height: 70vh;
+  display: flex;
+  flex-direction: column;
+  .form-view,.action-view{
+    flex-shrink: 0;
+  }
+  .form-view{
+    background-color: #F3F7FA;
+    padding-top: 20px;
+  }
+  .action-view{
+    padding: 8px 16px;
+  }
+  .list-view{
+    flex-grow: 1;
+    padding: 0 16px;
+    overflow: auto;
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/chooseMaterials.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/chooseMaterials.vue
new file mode 100644
index 0000000..bdf4bef
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/chooseMaterials.vue
@@ -0,0 +1,254 @@
+<template>
+  <a-modal
+    title="鐗╂枡閫夋嫨"
+    width="85vw"
+    :visible="innerVisible"
+    dialogClass="zero-modal"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="loading">
+      <div class="purchase-receive-choose-modal-content">
+        <div class="table-box" ref="listWrapper">
+          <div class="action-view" v-if="showType===1">
+            <a-table v-if="th1" :data-source="list" :columns="listColumns" 
+              :pagination="{current:queried.PageNo,pageSize:queried.PageSize,total:listTotal}" 
+              :rowKey="tableKey" :row-selection="{onChange:rowSelectionsChange,selectedRowKeys:selectedRowKeys}" :scroll="{y:th1}"
+              @change="chooseTablePageChange">
+              <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+              <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+            </a-table>
+          </div>
+          <div class="choosen-view" v-else>
+            <a-table v-if="th2" :data-source="choosen" :columns="choosenColumns" :rowKey="tableKey" :pagination="false" :scroll="{y:th2}">
+              <template slot="action" slot-scope="text,record,index">
+                <a-button type="danger" size="small" @click.stop="cancelChoosen(index)">鍒犻櫎</a-button>
+              </template>
+              <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+            </a-table>
+          </div>
+        </div>
+      </div>
+    </a-spin>
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="choosen" type="primary" @click="changeShowType">鎵�閫夌墿鏂�<span v-if="choosen.length>0">({{choosen.length}})</span></a-button>
+      <a-button key="submit" type="primary" :loading="loading" @click="handleSubmit" :disabled="!choosen.length">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import { GetCouldReceiveMaterials } from '@/api/modular/main/PurchaseReceiveOrderManage'
+const pagination = {
+  PageNo:1,
+  PageSize:10
+} 
+export default {
+  emits:['update:visible','callback'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    },
+    queryOrderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      innerVisible:false,
+      loading:false,
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 5 }
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 18 }
+      },
+      queried:{...pagination},
+      tableKey:'materialNo',
+      listTotal:0,
+      list:[],
+      listColumns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鍗曚綅绫诲瀷', dataIndex: 'basicUnit', key: 'basicUnit', width: 120, scopedSlots: { customRender: 'unitTyleSlot' }},
+        { title: '閫佽揣鏁�', dataIndex: 'deliverQuantity', key: 'deliverQuantity', width: 180 }
+      ],
+      selectedRowKeys:[],
+      choosen:[],
+      choosenColumns:[
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鍗曚綅绫诲瀷', dataIndex: 'basicUnit', key: 'basicUnit', width: 120, scopedSlots: { customRender: 'unitTyleSlot' }},
+        { title: '閫佽揣鏁�', dataIndex: 'deliverQuantity', key: 'deliverQuantity', width: 180 },
+        { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+      ],
+      showType:1,   //1鏄剧ず鏌ヨ椤甸潰锛� 2鏄剧ず宸查�夋暟鎹�
+      th1:0,
+      th2:0
+    }
+  },
+  created(){
+    this.innerVisible = this.visible
+  },
+  watch:{
+    visible(newVal){
+      if (newVal!==this.innerVisible) {
+        this.innerVisible = newVal
+      }
+    },
+    innerVisible(newVal,oldVal){
+      if (newVal!==this.visible) {
+        this.$emit('update:visible',newVal)
+      }
+      if (newVal!==oldVal) {
+        if (newVal) {
+          this.init()
+        }
+      }
+    }
+  },
+  methods:{
+    init(){
+      this.$nextTick(() => {
+        let h = this.$refs.listWrapper.clientHeight
+        this.th1 = h - 120
+        this.th2= h - 60
+        this.newQuery()
+      });
+    },
+    handleSubmit(){
+      this.$emit('callback',this.choosen)
+      this.handleCancel()
+    },
+    handleCancel(){
+      this.innerVisible = false;
+      this.showType = 1
+      this.list = []
+      this.choosen = []
+      this.loading = false
+      this.queried = {...pagination}
+    },
+    newQuery(){
+      this.queried = {...pagination}
+      this.queried.purchaseOrderNo = this.queryOrderNo
+      this.queryChooseDataSource()
+    },
+    queryChooseDataSource(){
+      this.loading = true;
+      GetCouldReceiveMaterials(this.queried).then((d)=>{
+        this.list = d.data.rows || []
+        this.listTotal = d.data.totalRows || 0
+        this.setSelectedRowKeys()
+        this.loading = false;
+      }).catch(()=>{
+        this.loading = false;
+      })
+    },
+    rowSelectionsChange(selectedRowKeys, selectedRows){
+      let reduces = [], adds = []
+      /* 璁$畻闇�瑕佽绉诲嚭choosen鐨勫唴瀹� */
+      this.selectedRowKeys.forEach((val)=>{
+        let f1 = false;
+        for (let i=0;i<selectedRowKeys.length;i++) {
+          if (selectedRowKeys[i] === val) {
+            f1 = true;
+            break;
+          }
+        }
+        if (!f1) {
+          reduces.push(val)
+        }
+      })
+      /* 璁$畻闇�瑕佽鍔犲叆choosen鐨勫唴瀹� */
+      selectedRowKeys.forEach((val)=>{
+        let f2 = false;
+        for (let i=0;i<this.choosen.length;i++) {
+          if (this.choosen[i][this.tableKey] === val) {
+            f2 = true;
+            break;
+          }
+        }
+        if (!f2) {
+          adds.push(val)
+        }
+      })
+      /* 鎵ц瀹為檯鏁版嵁澶勭悊锛屽厛鍑忓悗鍔狅紝鍑忓皯澶勭悊鏃堕棿 */
+      this.selectedRowKeys = selectedRowKeys
+      this.reduceChoosen(reduces)
+      this.addChosen(adds)
+    },
+    chooseTablePageChange(pagination){
+      this.queried.PageNo = pagination.current
+      this.queryChooseDataSource()
+    },
+    reduceChoosen(arr){
+      arr.forEach((val)=>{
+        let reduceIndex = -1;
+        for (let i=0;this.choosen.length;i++) {
+          if (this.choosen[i][this.tableKey] === val) {
+            reduceIndex = i
+            break;
+          }
+        }
+        if (reduceIndex>=0) {
+          this.choosen.splice(reduceIndex,1)
+        }
+      })
+    },
+    cancelChoosen(index){
+      this.choosen.splice(index,1)
+    },
+    addChosen(arr){
+      arr.forEach((val)=>{
+        for (let i=0;this.list.length;i++) {
+          if (this.list[i][this.tableKey] === val) {
+            let obj = {...this.list[i]}
+            this.choosen.push(obj)
+            break;
+          }
+        }
+      })
+    },
+    setSelectedRowKeys(){
+      let arr = []
+      this.choosen.forEach((item)=>{
+        for (let i=0;i<this.list.length;i++) {
+          if (this.list[i][this.tableKey] === item[this.tableKey]) {
+            arr.push(item[this.tableKey])
+            break;
+          }
+        }
+      })
+      this.selectedRowKeys = arr
+    },
+    changeShowType(){
+      if (this.showType===1) {
+        this.showType = 2
+      } else {
+        this.showType = 1
+        this.setSelectedRowKeys()
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.purchase-receive-choose-modal-content{
+  height: 50vh;
+  display: flex;
+  flex-direction: column;
+  box-sizing: border-box;
+  padding: 16px 16px 0 16px;
+  .table-box{
+    height: 100%;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/index.vue
new file mode 100644
index 0000000..2b8b684
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/index.vue
@@ -0,0 +1,229 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                  <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col> 
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+      >
+        <template class="table-operator" slot="operator">
+          <a-button type="primary" icon="plus" @click="onNew()">鏂板閲囪喘鏀惰揣</a-button>
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'purchase_receive_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a @click="onEdit(record)">缂栬緫</a>
+          <a-divider type="vertical" />
+          <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => PurchaseReceiveOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+      <add-form ref="addForm" :type="formType" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { 
+    PurchaseReceiveOrderPage, 
+    PurchaseReceiveOrderDelete
+  } from '@/api/modular/main/PurchaseReceiveOrderManage'
+  import addForm from './addForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        selectOptions:{
+          largeCategories:[],
+          subclasses:[]
+        },
+        columns: [
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          {
+            title: '鐗╂枡绉嶇被',
+            align: 'center',
+            dataIndex: 'materialType'
+          },
+          {
+            title: '鍗曟嵁鏁伴噺',
+            align: 'center',
+            dataIndex: 'orderQuantity'
+          },
+          {
+            title: '瀹為檯鏀惰揣鏁�',
+            align: 'center',
+            dataIndex: 'receiveQuantity'
+          },
+          {
+            title: '鐩爣浠撳簱',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '渚涘簲鍟�',
+            align: 'center',
+            dataIndex: 'supplier'
+          },
+          {
+            title: '閲囪喘鍗曞彿',
+            align: 'center',
+            dataIndex: 'receiveOrderNo'
+          },
+          {
+            title: '閫佽揣鍗曞彿',
+            align: 'center',
+            dataIndex: 'deliverOrderNo'
+          },
+          {
+            title: '鐘舵��',
+            align: 'center',
+            dataIndex: 'purchaseReceiveEnum'
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return PurchaseReceiveOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0],true)
+            }
+            return res.data
+          })
+        },
+        orderStatusEnumData: [],
+        infoId:null,
+        infoOrderNo:'',
+        formType:''
+      }
+    },
+    created () {
+      const orderStatusEnumOption = this.$options
+      this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('purchase_receive_status')
+    },
+    methods: {
+      onViewDetail(obj,mainRefresh=false){
+        if (this.infoId===obj.id && mainRefresh===false) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      onNew(){
+        this.formType = 'add'
+        this.$refs.addForm.init()
+      },
+      onEdit(obj){
+        this.formType = 'modify'
+        this.$refs.addForm.init(obj)
+      },
+      clearInfo(){
+        this.infoId = null
+        this.infoOrderNo = ''
+      },
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      PurchaseReceiveOrderDelete (record) {
+        PurchaseReceiveOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            if (this.infoId && record.id) {
+              this.clearInfo()
+            }
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        if (this.formType==='modify'){
+          this.infoId = null
+          this.$nextTick(()=>{
+            this.$refs.table.refresh()
+          })
+        } else {
+          this.$refs.table.refresh()
+        }
+      },
+      infoCallback(){
+        this.$refs.table.refresh()
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/infoBlock.vue
new file mode 100644
index 0000000..7113431
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/infoBlock.vue
@@ -0,0 +1,116 @@
+<template>
+  <div class="purchase-receive-order-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <template slot="statusSlots" slot-scope="text,record">
+        <a-tag :color="text==='瀹屾垚'?'#008000':(
+          text==='鎵ц涓�'?'#1e90ff':(
+            text==='鍙栨秷'?'#556b2f':(
+              text==='鏆傚仠'?'#8b0000':(
+                text==='鎾ゅ洖'?'#ff00ff':'gray'
+              )
+            )
+          )
+        )">{{text}}</a-tag>
+      </template>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { PurchaseReceiveOrderDetailPage } from '@/api/modular/main/PurchaseReceiveOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'purchaseReceiveOrderInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+				{ title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+				{ title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'MaterialBath' },
+        { title: '鍩烘湰鍗曚綅', align:'center', dataIndex: 'basicUnit', key: 'basicUnit' },
+        { title: '閫佽揣鏁�', align:'center', dataIndex: 'deliverQuantity', key: 'deliverQuantity' },
+        { title: '瀹為檯鏀惰揣鏁�', align:'center', dataIndex: 'receiveQuantity', key: 'receiveQuantity' },
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.Id = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return PurchaseReceiveOrderDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.purchase-receive-order-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/README.md b/iWare_RawMaterialWarehouse_Web/src/views/main/README.md
new file mode 100644
index 0000000..fadf99a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/README.md
@@ -0,0 +1 @@
+/** 鎮ㄧ殑涓氬姟鎺ュ彛鏂囦欢鍏ㄥ啓鍦ㄦ鏂囦欢澶逛笅闈紝鍗囩骇搴曞骇鐩存帴杩佺Щ浠g爜鍗冲彲 **/
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/addForm.vue
new file mode 100644
index 0000000..87a0d80
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/addForm.vue
@@ -0,0 +1,128 @@
+锘�<template>
+  <a-modal
+    title="鏂板棰嗘枡鍗�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ユ�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+        <a-form-item label="浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨搴�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="鍙枡浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彨鏂欎汉" v-decorator="['takeMaterialName']" />
+        </a-form-item>
+        <a-form-item label="鍙枡宸ヤ綅" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彨鏂欏伐浣�" v-decorator="['callMaterialStation']" />
+        </a-form-item>
+        <a-form-item label="鏀惰揣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ敹璐т粨搴�" v-decorator="['shippingWarehouse']" />
+        </a-form-item>
+        <a-form-item label="鏀惰揣鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏀惰揣鏃堕棿" v-decorator="['shippingTime']" @change="onChangeshippingTime"/>
+        </a-form-item>
+        <a-form-item label="鐝粍" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ彮缁�" v-decorator="['teams']" />
+        </a-form-item>
+        <a-form-item label="璁″垝鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ鍒掑彿" v-decorator="['planNo']" />
+        </a-form-item>
+        <a-form-item label="宸ョ▼鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ伐绋嬪彿" v-decorator="['projectNo']" />
+        </a-form-item>
+        <a-form-item label="鑸瑰彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ埞鍙�" v-decorator="['shipNo']" />
+        </a-form-item>
+        <a-form-item label="浠撳彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨鍙�" v-decorator="['warehouseNo']" />
+        </a-form-item>
+        <a-form-item label="宸ュ崟鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ伐鍗曞彿" v-decorator="['workOrderNo']" />
+        </a-form-item>
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    ReceiveMaterialOrderAdd
+  } from '@/api/modular/main/ReceiveMaterialOrderManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        shippingTimeDateString: '',
+        orderStatusData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            values.shippingTime = this.shippingTimeDateString
+            ReceiveMaterialOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      onChangeshippingTime(date, dateString) {
+        this.shippingTimeDateString = dateString
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/editForm.vue
new file mode 100644
index 0000000..8044b2e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/editForm.vue
@@ -0,0 +1,159 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫棰嗘枡鍗�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ユ�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+        <a-form-item label="浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨搴�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="鍙枡浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彨鏂欎汉" v-decorator="['takeMaterialName']" />
+        </a-form-item>
+        <a-form-item label="鍙枡宸ヤ綅" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彨鏂欏伐浣�" v-decorator="['callMaterialStation']" />
+        </a-form-item>
+        <a-form-item label="鏀惰揣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ敹璐т粨搴�" v-decorator="['shippingWarehouse']" />
+        </a-form-item>
+        <a-form-item label="鏀惰揣鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏀惰揣鏃堕棿" v-decorator="['shippingTime']" @change="onChangeshippingTime"/>
+        </a-form-item>
+        <a-form-item label="鐝粍" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ彮缁�" v-decorator="['teams']" />
+        </a-form-item>
+        <a-form-item label="璁″垝鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ鍒掑彿" v-decorator="['planNo']" />
+        </a-form-item>
+        <a-form-item label="宸ョ▼鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ伐绋嬪彿" v-decorator="['projectNo']" />
+        </a-form-item>
+        <a-form-item label="鑸瑰彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ埞鍙�" v-decorator="['shipNo']" />
+        </a-form-item>
+        <a-form-item label="浠撳彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨鍙�" v-decorator="['warehouseNo']" />
+        </a-form-item>
+        <a-form-item label="宸ュ崟鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ伐鍗曞彿" v-decorator="['workOrderNo']" />
+        </a-form-item>
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+    ReceiveMaterialOrderEdit
+  } from '@/api/modular/main/ReceiveMaterialOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        shippingTimeDateString: '',
+        orderStatusData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      moment,
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              orderNo: record.orderNo,
+              orderQuantity: record.orderQuantity,
+              areaName: record.areaName,
+              takeMaterialName: record.takeMaterialName,
+              callMaterialStation: record.callMaterialStation,
+              shippingWarehouse: record.shippingWarehouse,
+              teams: record.teams,
+              planNo: record.planNo,
+              projectNo: record.projectNo,
+              shipNo: record.shipNo,
+              warehouseNo: record.warehouseNo,
+              workOrderNo: record.workOrderNo,
+              remarks: record.remarks
+            }
+          )
+        })
+        this.form.getFieldDecorator('shippingTime', { initialValue: moment(record.shippingTime, 'YYYY-MM-DD') })
+        this.shippingTimeDateString = moment(record.shippingTime).format('YYYY-MM-DD')
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            values.shippingTime = this.shippingTimeDateString
+            this.record.shippingTime = this.shippingTimeDateString
+            ReceiveMaterialOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      onChangeshippingTime(date, dateString) {
+        this.shippingTimeDateString = dateString
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/index.vue
new file mode 100644
index 0000000..1fa5b0d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/index.vue
@@ -0,0 +1,261 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" >
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍙戣揣浠撳簱">
+                <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ュ彂璐т粨搴�"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐝粍">
+                  <a-input v-model="queryParam.teams" allow-clear placeholder="璇疯緭鍏ョ彮缁�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="宸ョ▼鍙�">
+                  <a-input v-model="queryParam.projectNo" allow-clear placeholder="璇疯緭鍏ュ伐绋嬪彿"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鑸瑰彿">
+                  <a-input v-model="queryParam.shipNo" allow-clear placeholder="璇疯緭鍏ヨ埞鍙�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="宸ュ崟鍙�">
+                  <a-input v-model="queryParam.workOrderNo" allow-clear placeholder="璇疯緭鍏ュ伐鍗曞彿"/>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                    <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+      >
+        <template class="table-operator" slot="operator" >
+          <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板棰嗘枡鍗�</a-button>
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" />
+          <a-popconfirm  placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => ReceiveMaterialOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { ReceiveMaterialOrderPage, ReceiveMaterialOrderDelete } from '@/api/modular/main/ReceiveMaterialOrderManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          {
+            title: '鍗曟嵁鏁伴噺',
+            align: 'center',
+            dataIndex: 'orderQuantity'
+          },
+          {
+            title: '鍙戣揣浠撳簱',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '鍙枡浜�',
+            align: 'center',
+            dataIndex: 'takeMaterialName'
+          },
+          {
+            title: '鍙枡宸ヤ綅',
+            align: 'center',
+            dataIndex: 'callMaterialStation'
+          },
+          {
+            title: '鏀惰揣浠撳簱',
+            align: 'center',
+            dataIndex: 'shippingWarehouse'
+          },
+          {
+            title: '鏀惰揣鏃堕棿',
+            align: 'center',
+			sorter: true,
+            dataIndex: 'shippingTime'
+          },
+          {
+            title: '鐝粍',
+            align: 'center',
+            dataIndex: 'teams'
+          },
+          {
+            title: '璁″垝鍙�',
+            align: 'center',
+            dataIndex: 'planNo'
+          },
+          {
+            title: '宸ョ▼鍙�',
+            align: 'center',
+            dataIndex: 'projectNo'
+          },
+          {
+            title: '鑸瑰彿',
+            align: 'center',
+            dataIndex: 'shipNo'
+          },
+          {
+            title: '浠撳彿',
+            align: 'center',
+            dataIndex: 'warehouseNo'
+          },
+          {
+            title: '宸ュ崟鍙�',
+            align: 'center',
+            dataIndex: 'workOrderNo'
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatus',
+            scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+          },
+          {
+            title: '澶囨敞',
+            align: 'center',
+            dataIndex: 'remarks'
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return ReceiveMaterialOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0])
+            }
+            return res.data
+          })
+        },
+        orderStatusEnumData: [],
+        infoId:null,
+        infoOrderNo:''
+      }
+    },
+    created () {
+      const orderStatusEnumOption = this.$options
+      this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+    },
+    methods: {
+      onViewDetail(obj){
+        if (this.infoId===obj.id) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      ReceiveMaterialOrderDelete (record) {
+        ReceiveMaterialOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      infoCallback(){
+        this.$refs.table.refresh()
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/infoBlock.vue
new file mode 100644
index 0000000..012c9c7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/infoBlock.vue
@@ -0,0 +1,115 @@
+<template>
+  <div class="receive-material-order-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <template slot="statusSlots" slot-scope="text,record">
+        <a-tag :color="text==='瀹屾垚'?'#008000':(
+          text==='鎵ц涓�'?'#1e90ff':(
+            text==='鍙栨秷'?'#556b2f':(
+              text==='鏆傚仠'?'#8b0000':(
+                text==='鎾ゅ洖'?'#ff00ff':'gray'
+              )
+            )
+          )
+        )">{{text}}</a-tag>
+      </template>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { ReceiveMaterialOrderDetailPage } from '@/api/modular/main/ReceiveMaterialOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'receiveMaterialOrderInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+		{ title: '鐗╂枡瀵嗗害', align:'center', dataIndex: 'materialSensity', key: 'materialSensity' },
+        { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.Id = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return ReceiveMaterialOrderDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.receive-material-order-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/addForm.vue
new file mode 100644
index 0000000..cb8cd31
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/addForm.vue
@@ -0,0 +1,342 @@
+锘�<template>
+  <a-modal
+    :title="(type==='modify'?'淇敼':'鏂板')+'閿�鍞嚭搴�'"
+    width="90vw"
+    :visible="visible"
+    dialogClass="zero-modal"
+    :confirmLoading="confirmLoading"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <div class="sales-stock-out-bound-modal-content">
+        <div class="form-view">
+          <a-form :form="form">
+            <a-row>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input disabled v-decorator="['orderNo',{rules:[{required:true,message:'鍗曟嵁鍙蜂笉鍙负绌猴紒'}]}]" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鏀惰揣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-select :disabled="type==='modify'" style="width: 100%" v-decorator="['areaId',{rules:[{required:true,message:'璇烽�夋嫨鏀惰揣浠撳簱锛�'}]}]" placeholder="璇烽�夋嫨...">
+                    <a-select-option v-for="(item,index) in areaOptions" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input :disabled="type==='modify'" v-decorator="['customer']" placeholder="璇疯緭鍏�..." />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鏀惰揣鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input :disabled="type==='modify'" v-decorator="['shippingAddress']" placeholder="璇疯緭鍏�..." />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="璁″垝鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input :disabled="type==='modify'" v-decorator="['planNo']" placeholder="璇疯緭鍏�..." />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="宸ョ▼鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input :disabled="type==='modify'" v-decorator="['projectNo']" placeholder="璇疯緭鍏�..." />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鑸瑰彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input :disabled="type==='modify'" v-decorator="['shipNo']" placeholder="璇疯緭鍏�..." />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠撳彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input :disabled="type==='modify'" v-decorator="['warehouseNo']" placeholder="璇疯緭鍏�..." />
+                </a-form-item>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
+        <div class="action-view">
+          <a-button type="primary" icon="plus" :disabled="type==='modify'" @click="openChoose">
+            娣诲姞鍑哄簱鏄庣粏
+          </a-button>
+        </div>
+        <div class="list-view" ref="listWrapper">
+          <!-- 娉ㄦ剰scroll.x鐨勫�� -->
+          <template v-if="th">
+            <a-table v-if="type==='modify'" :data-source="list" :columns="columnsEdit" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+              <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+              <template slot="inputCell" slot-scope="text,record,index">
+                <a-input-number v-model="record.orderDetailQuantity" :min="0" />
+              </template>
+              <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+            </a-table>
+            <a-table v-else :data-source="list" :columns="columnsAdd" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+              <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+              <template slot="action" slot-scope="text,record,index">
+                <a-button type="danger" size="small" @click.stop="cancelListItem(index)">鍒犻櫎</a-button>
+              </template>
+              <template slot="inputCell" slot-scope="text,record,index">
+                <a-input-number v-model="record.orderDetailQuantity" :min="0" />
+              </template>
+              <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+            </a-table>
+          </template>
+          
+        </div>
+      </div>
+    </a-spin>
+    
+    <choose-modal :visible.sync="chooseVisible" @callback="chooseBack" />
+    
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="submit" type="primary" :loading="confirmLoading" @click="onSubmit" :disabled="!list.length">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    SalesStockOutboundOrderAdd,
+    GetBillNumber,
+    SalesStockOutboundOrderEditDetailNumber,
+    SalesStockOutboundOrderDetailPage
+  } from '@/api/modular/main/SalesStockOutboundOrderManage'
+  import ChooseModal from './chooseMaterials.vue'
+  export default {
+    components:{ChooseModal},
+    props:{
+      type:{
+        type:String,
+        default:''
+      },
+      areaOptions:{
+        type:Array,
+        default:function(){
+          return []
+        }
+      }
+    },
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 18 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        th:0,
+        tableKey:'materialNo',
+        list:[],
+        columns:[
+          { title: '搴忓彿', key: 'index', width: 70, align:'center', scopedSlots: { customRender: 'index' }},
+          { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+          { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+          { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+          { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+          { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch' },
+          { title: '鏁伴噺', key: 'orderDetailQuantity', scopedSlots: { customRender: 'inputCell' }, width: 220, align:'center'}
+        ],
+        columnA:{ title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }},
+        columnsAdd:[],
+        columnsEdit:[],
+        chooseVisible:false
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      init (record) {
+        this.visible = true
+        this.$nextTick(() => {
+          this.th = this.$refs.listWrapper.clientHeight - 60
+          if (this.type==='modify') {
+            let _arr = [...this.columns]
+            this.columnsEdit = _arr
+            this.getEditInitData(record)
+          } else {
+            let _arr = [...this.columns]
+            _arr.push(this.columnA)
+            this.columnsAdd = _arr
+            this.getAddInitData()
+          }
+        });
+      },
+      getAddInitData(){
+        this.confirmLoading = true;
+        GetBillNumber().then(d=>{
+          let formData = {
+            orderNo:(d.data.orderNo || '')
+          }
+          this.form.setFieldsValue(formData)
+          this.confirmLoading = false;
+        }).catch((err)=>{
+          this.confirmLoading = false;
+        })
+      },
+      getEditInitData(record){
+        let formData = {
+          orderNo:record.orderNo,
+          areaId:record.areaId,
+          customer:record.customer,
+          shippingAddress:record.shippingAddress,
+          planNo:record.planNo,
+          shipNo:record.shipNo,
+          projectNo:record.projectNo,
+          warehouseNo:record.warehouseNo
+        }
+        this.form.setFieldsValue(formData)
+        this.confirmLoading = true;
+        let params = {
+          Id:record.id,
+          PageNo:1,
+          PageSize:999
+        }
+        SalesStockOutboundOrderDetailPage(params).then((d)=>{
+          this.list = d.data.rows || []
+          this.confirmLoading = false;
+        }).catch(()=>{
+          this.confirmLoading = false;
+        })
+      },
+      chooseBack(arr){
+        let newArr = [], reCount = 0;
+        arr.forEach((item)=>{
+          let f = false;
+          for (let i=0;i<this.list.length;i++) {
+            if (this.list[i][this.tableKey] === item[this.tableKey]) {
+              reCount++;
+              f = true
+              break;
+            }
+          }
+          if (!f) {
+            let _obj = {...item}
+            _obj.orderQuantity = 0
+            _obj.requireTime = ''
+            newArr.push(item)
+          }
+        })
+        this.list = [].concat(newArr,this.list)
+        if (reCount) {
+          this.$message.warning(`${reCount}绗旀暟鎹凡瀛樺湪锛屾湭娣诲姞锛乣);
+        }
+      },
+      cancelListItem(index){
+        this.list.splice(index,1)
+      },
+      interalNumberValidate(val){
+        let res = 0
+        if (!val) {
+          res = 1  //鏁伴噺蹇呭~涓斿ぇ浜�0
+        } else if (Number(val)!==parseInt(val)) {
+          res = 2  //鍙兘鏄暣鏁�
+        }
+        return res
+      },
+      openChoose(){
+        this.chooseVisible = true
+      },
+      checkBeforeSubmit() {
+        let res = true, msg = '';
+        for (let i=0;i<this.list.length;i++) {
+          let numberTag = this.interalNumberValidate(this.list[i].orderDetailQuantity)
+          if (numberTag!==0) {
+            res = false
+            if (numberTag===1) {
+              msg = `绗�${i+1}琛岋紝鏁伴噺蹇呭~涓斿ぇ浜�0锛乣
+            } else if (numberTag===2) {
+              msg = `绗�${i+1}琛岋紝鏁伴噺鍙兘鏄暣鏁帮紒`
+            }
+            break;
+          }
+        }
+        if (!res) {
+          this.$message.warning(msg);
+        }
+        return res
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      onSubmit () {
+        const { form: { validateFields } } = this
+        validateFields((errors, values) => {
+          if (!errors) {
+            let f = this.checkBeforeSubmit()
+            if (f) {
+              this.confirmLoading = true
+              this.handleSubmit(values,(fx)=>{
+                if (fx) {
+                  this.$message.success('鎻愪氦鎴愬姛')
+                  this.confirmLoading = false
+                  this.handleCancel()
+                  this.$emit('ok')
+                } else {
+                  this.confirmLoading = false
+                }
+              })
+            }
+          } 
+        })
+      },
+      handleSubmit(values,callback){
+        this.confirmLoading = true
+        if (this.type==='modify') {
+          this.handleSubmitModify(callback)
+        } else {
+          this.handleSubmitAdd(values,callback)
+        }
+      },
+      handleSubmitAdd(values,callback){
+        let params = {...values,...{addSalesStockOutboundOrderInputDetails:this.list}}
+        SalesStockOutboundOrderAdd(params).then(()=>{
+          callback && callback(true)
+        }).catch(()=>{
+          callback && callback(false)
+        })
+      },
+      handleSubmitModify(callback){
+        let params = [...this.list]
+        SalesStockOutboundOrderEditDetailNumber(params).then(()=>{
+          callback && callback(true)
+        }).catch(()=>{
+          callback && callback(false)
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.list = []
+        this.visible = false
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+.sales-stock-out-bound-modal-content{
+  height: 70vh;
+  display: flex;
+  flex-direction: column;
+  .form-view,.action-view{
+    flex-shrink: 0;
+  }
+  .form-view{
+    background-color: #F3F7FA;
+    padding-top: 20px;
+  }
+  .action-view{
+    padding: 8px 16px;
+  }
+  .list-view{
+    flex-grow: 1;
+    padding: 0 16px;
+    overflow: auto;
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/chooseMaterials.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/chooseMaterials.vue
new file mode 100644
index 0000000..7e4eff2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/chooseMaterials.vue
@@ -0,0 +1,322 @@
+<template>
+  <a-modal
+    title="閿�鍞嚭搴撴槑缁嗛�夋嫨"
+    width="85vw"
+    :visible="innerVisible"
+    dialogClass="zero-modal"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="loading">
+      <div class="sales-stock-out-bound-choose-modal-content">
+        <div class="choose-bar">
+          <div class="choose-form-view">
+            <a-form layout="inline">
+              <a-row>
+                <a-col :md="12" :sm="24">
+                  <a-form-item label="鐗╂枡缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-input v-model.trim="query.MaterialNo" placeholder="璇疯緭鍏�..." allowClear />
+                  </a-form-item>
+                </a-col>
+                <a-col :md="12" :sm="24">
+                  <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-input v-model.trim="query.MaterialName" placeholder="璇疯緭鍏�..." allowClear />
+                  </a-form-item>
+                </a-col>
+                <a-col :md="12" :sm="24">
+                  <a-form-item label="鐗╂枡绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-select style="width: 100%" v-model="query.MaterialType" placeholder="璇烽�夋嫨..." allowClear>
+                      <a-select-option v-for="(item,index) in types" :value="item.code" :key="'types-sel-'+index">{{item.name}}</a-select-option>
+                    </a-select>
+                  </a-form-item>
+                </a-col>
+                <a-col :md="12" :sm="24">
+                  <a-form-item label="鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-input v-model.trim="query.MaterialBatch" placeholder="璇疯緭鍏�..." allowClear />
+                  </a-form-item>
+                </a-col>
+              </a-row>
+            </a-form>
+          </div>
+          <div class="choose-btns-view">
+            <a-button type="primary" style="margin-bottom:6px;" @click.stop="onQuery">鏌ヨ</a-button>
+            <a-button @click.stop="onReset">閲嶇疆</a-button>
+          </div>
+        </div>
+        <div class="table-box" ref="listWrapper">
+          <div class="action-view" v-if="showType===1">
+            <a-table v-if="th1" :data-source="list" :columns="listColumns" 
+              :pagination="{current:queried.PageNo,pageSize:queried.PageSize,total:listTotal}" 
+              :rowKey="tableKey" :row-selection="{onChange:rowSelectionsChange,selectedRowKeys:selectedRowKeys}" :scroll="{y:th1}"
+              @change="chooseTablePageChange">
+              <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+              <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+            </a-table>
+          </div>
+          <div class="choosen-view" v-else>
+            <a-table v-if="th2" :data-source="choosen" :columns="choosenColumns" :rowKey="tableKey" :pagination="false" :scroll="{y:th2}">
+              <template slot="action" slot-scope="text,record,index">
+                <a-button type="danger" size="small" @click.stop="cancelChoosen(index)">鍒犻櫎</a-button>
+              </template>
+              <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+            </a-table>
+          </div>
+        </div>
+      </div>
+    </a-spin>
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="choosen" type="primary" @click="changeShowType">鎵�閫夌墿鏂�<span v-if="choosen.length>0">({{choosen.length}})</span></a-button>
+      <a-button key="submit" type="primary" :loading="loading" @click="handleSubmit" :disabled="!choosen.length">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import { GetCouldOutMaterials } from '@/api/modular/main/SalesStockOutboundOrderManage'
+const defaultQuery = {
+  MaterialType:undefined,
+  MaterialBatch:'',
+  MaterialNo:'',
+  MaterialName:''
+}
+const pagination = {
+  PageNo:1,
+  PageSize:10
+} 
+export default {
+  emits:['update:visible','callback'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    }
+  },
+  data(){
+    return {
+      innerVisible:false,
+      loading:false,
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 5 }
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 18 }
+      },
+      types:[],
+      query:{...defaultQuery},
+      queried:{...pagination},
+      tableKey:'materialNo',
+      listTotal:0,
+      list:[],
+      listColumns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+        { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch' }
+      ],
+      selectedRowKeys:[],
+      choosen:[],
+      choosenColumns:[
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+        { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch' },
+        { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+      ],
+      showType:1,   //1鏄剧ず鏌ヨ椤甸潰锛� 2鏄剧ず宸查�夋暟鎹�
+      th1:0,
+      th2:0
+    }
+  },
+  created(){
+    this.innerVisible = this.visible
+    this.types = this.$options.filters['dictData']('material_type')
+  },
+  watch:{
+    visible(newVal){
+      if (newVal!==this.innerVisible) {
+        this.innerVisible = newVal
+      }
+    },
+    innerVisible(newVal,oldVal){
+      if (newVal!==this.visible) {
+        this.$emit('update:visible',newVal)
+      }
+      if (newVal!==oldVal) {
+        if (newVal) {
+          this.init()
+        }
+      }
+    }
+  },
+  methods:{
+    init(){
+      this.$nextTick(() => {
+        let h = this.$refs.listWrapper.clientHeight
+        this.th1 = h - 120
+        this.th2= h - 60
+        this.resetQuery()
+      });
+    },
+    handleSubmit(){
+      this.$emit('callback',this.choosen)
+      this.handleCancel()
+    },
+    handleCancel(){
+      this.innerVisible = false;
+      this.showType = 1
+      this.list = []
+      this.choosen = []
+      this.loading = false
+      this.queried = {...pagination}
+    },
+    onQuery(){
+      this.newQuery()
+    },
+    onReset(){
+      this.resetQuery()
+    },
+    resetQuery(){
+      this.query = {...defaultQuery}
+      this.newQuery()
+    },
+    newQuery(){
+     this.queried = {...this.query,...pagination}
+      this.queryChooseDataSource()
+    },
+    queryChooseDataSource(){
+      this.loading = true;
+      GetCouldOutMaterials(this.queried).then((d)=>{
+        this.list = d.data.rows || []
+        this.listTotal = d.data.totalRows || 0
+        this.setSelectedRowKeys()
+        this.loading = false;
+      }).catch(()=>{
+        this.loading = false;
+      })
+    },
+    rowSelectionsChange(selectedRowKeys, selectedRows){
+      let reduces = [], adds = []
+      /* 璁$畻闇�瑕佽绉诲嚭choosen鐨勫唴瀹� */
+      this.selectedRowKeys.forEach((val)=>{
+        let f1 = false;
+        for (let i=0;i<selectedRowKeys.length;i++) {
+          if (selectedRowKeys[i] === val) {
+            f1 = true;
+            break;
+          }
+        }
+        if (!f1) {
+          reduces.push(val)
+        }
+      })
+      /* 璁$畻闇�瑕佽鍔犲叆choosen鐨勫唴瀹� */
+      selectedRowKeys.forEach((val)=>{
+        let f2 = false;
+        for (let i=0;i<this.choosen.length;i++) {
+          if (this.choosen[i][this.tableKey] === val) {
+            f2 = true;
+            break;
+          }
+        }
+        if (!f2) {
+          adds.push(val)
+        }
+      })
+      /* 鎵ц瀹為檯鏁版嵁澶勭悊锛屽厛鍑忓悗鍔狅紝鍑忓皯澶勭悊鏃堕棿 */
+      this.selectedRowKeys = selectedRowKeys
+      this.reduceChoosen(reduces)
+      this.addChosen(adds)
+    },
+    chooseTablePageChange(pagination){
+      this.queried.PageNo = pagination.current
+      this.queryChooseDataSource()
+    },
+    reduceChoosen(arr){
+      arr.forEach((val)=>{
+        let reduceIndex = -1;
+        for (let i=0;this.choosen.length;i++) {
+          if (this.choosen[i][this.tableKey] === val) {
+            reduceIndex = i
+            break;
+          }
+        }
+        if (reduceIndex>=0) {
+          this.choosen.splice(reduceIndex,1)
+        }
+      })
+    },
+    cancelChoosen(index){
+      this.choosen.splice(index,1)
+    },
+    addChosen(arr){
+      arr.forEach((val)=>{
+        for (let i=0;this.list.length;i++) {
+          if (this.list[i][this.tableKey] === val) {
+            let obj = {...this.list[i]}
+            this.choosen.push(obj)
+            break;
+          }
+        }
+      })
+    },
+    setSelectedRowKeys(){
+      let arr = []
+      this.choosen.forEach((item)=>{
+        for (let i=0;i<this.list.length;i++) {
+          if (this.list[i][this.tableKey] === item[this.tableKey]) {
+            arr.push(item[this.tableKey])
+            break;
+          }
+        }
+      })
+      this.selectedRowKeys = arr
+    },
+    changeShowType(){
+      if (this.showType===1) {
+        this.showType = 2
+      } else {
+        this.showType = 1
+        this.setSelectedRowKeys()
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.sales-stock-out-bound-choose-modal-content{
+  height: 70vh;
+  display: flex;
+  flex-direction: column;
+  .choose-bar{
+    flex-shrink: 0;
+    padding: 8px 4px;
+    display: flex;
+    .choose-form-view{
+      flex-grow: 1;
+    }
+    .choose-btns-view{
+      flex-shrink: 0;
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+    }
+  }
+  .table-box{
+    flex-grow: 1;
+    padding: 0 16px;
+    overflow: auto;
+  }
+  .ant-form-inline{
+    .ant-form-item {
+      margin-right: 0;
+      width: 100%;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/index.vue
new file mode 100644
index 0000000..d711588
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/index.vue
@@ -0,0 +1,314 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍑哄簱鍗曞彿">
+                <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ嚭搴撳崟鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                  <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍙戣揣浠撳簱">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.AreaId" placeholder="璇烽�夋嫨鍙戣揣浠撳簱">
+                    <a-select-option v-for="(item,index) in selectOptions.areas" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="瀹㈡埛">
+                  <a-input v-model="queryParam.customer" allow-clear placeholder="璇疯緭鍏ュ鎴�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鏀惰揣鍦板潃">
+                  <a-input v-model="queryParam.shippingAddress" allow-clear placeholder="璇疯緭鍏ユ敹璐у湴鍧�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="璁″垝鍙�">
+                  <a-input v-model="queryParam.planNo" allow-clear placeholder="璇疯緭鍏ヨ鍒掑彿"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鑸瑰彿">
+                  <a-input v-model="queryParam.shipNo" allow-clear placeholder="璇疯緭鍏ヨ埞鍙�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="宸ョ▼鍙�">
+                  <a-input v-model="queryParam.projectNo" allow-clear placeholder="璇疯緭鍏ュ伐绋嬪彿"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠撳彿">
+                  <a-input v-model="queryParam.warehouseNo" allow-clear placeholder="璇疯緭鍏ヤ粨鍙�"/>
+                </a-form-item>
+              </a-col>            
+            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+      >
+        <template class="table-operator" slot="operator" >
+          <a-button type="primary" icon="plus" @click="onNew">鏂板閿�鍞嚭搴�</a-button>
+          <a-button type="danger" icon="step-forward" :disabled="!selectedRowKeys.length" @click="onMulDistribute">涓嬪彂</a-button>
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a @click="onEdit(record)">缂栬緫</a>
+          <a-divider type="vertical" />
+          <a @click="onDistribute(record)">涓嬪彂</a>
+          <a-divider type="vertical" />
+          <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => SalesStockOutboundOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+      <add-form ref="addForm" :type="formType" :area-options="selectOptions.areas" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { 
+    SalesStockOutboundOrderPage, 
+    SalesStockOutboundOrderDelete,
+    SalesStockOutboundOrderGetAreas,
+    SalesStockOutboundOrderMulDistribute
+  } from '@/api/modular/main/SalesStockOutboundOrderManage'
+  import addForm from './addForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        selectOptions:{
+          areas:[]
+        },
+        columns: [
+          {
+            title: '鍑哄簱鍗曞彿',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          {
+            title: '鍗曟嵁鎬绘暟閲�',
+            align: 'center',
+            dataIndex: 'orderQuantity'
+          },
+          {
+            title: '鍙戣揣浠撳簱',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '瀹㈡埛',
+            align: 'center',
+            dataIndex: 'customer'
+          },
+          {
+            title: '鏀惰揣鍦板潃',
+            align: 'center',
+            dataIndex: 'shippingAddress'
+          },
+          {
+            title: '璁″垝鍙�',
+            align: 'center',
+            dataIndex: 'planNo'
+          },
+          {
+            title: '鑸瑰彿',
+            align: 'center',
+            dataIndex: 'shipNo'
+          },
+          {
+            title: '宸ョ▼鍙�',
+            align: 'center',
+            dataIndex: 'projectNo'
+          },
+          {
+            title: '浠撳彿',
+            align: 'center',
+            dataIndex: 'warehouseNo'
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatus',
+            scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return SalesStockOutboundOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0],true)
+            }
+            this.selectedRowKeys = []
+            return res.data
+          })
+        },
+        orderStatusEnumData: [],
+        selectedRowKeys: [],
+        infoId:null,
+        infoOrderNo:'',
+        formType:''
+      }
+    },
+    created () {
+      const orderStatusEnumOption = this.$options
+      this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+    },
+    mounted(){
+      this.getAreas()
+    },
+    methods: {
+      onNew(){
+        this.formType = 'add'
+        this.$refs.addForm.init()
+      },
+      onEdit(obj){
+        this.formType = 'modify'
+        this.$refs.addForm.init(obj)
+      },
+      getAreas(){
+        SalesStockOutboundOrderGetAreas().then(d=>{
+          this.selectOptions.areas = d.data || []
+        }).catch(err=>{
+          console.log(err)
+        })
+      },
+      onViewDetail(obj,mainRefresh=false){
+        if (this.infoId===obj.id && mainRefresh===false) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      SalesStockOutboundOrderDelete (record) {
+        SalesStockOutboundOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            if (this.infoId && record.id) {
+              this.infoId = null
+            }
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.infoId = null
+        this.$refs.table.refresh()
+      },
+      infoCallback(){
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+      },
+      onMulDistribute(){
+        this.dealDistribute(this.selectedRowKeys)
+      },
+      onDistribute(obj){
+        this.dealDistribute([obj.id])
+      },
+      dealDistribute(ids){
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屼笅鍙戞搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleDistribute(ids,(f)=>{
+              if (f) {
+                if (this.infoId && ids.indexOf(this.infoId)>=0) {
+                  this.infoId = null
+                }
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      handleDistribute(ids,callback){
+        this.$loading.show()
+        SalesStockOutboundOrderMulDistribute(ids).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/infoBlock.vue
new file mode 100644
index 0000000..a5111f6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/infoBlock.vue
@@ -0,0 +1,116 @@
+<template>
+  <div class="sales-stock-out-bound-order-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+      <template slot="statusSlots" slot-scope="text,record">
+        <a-tag :color="text==='瀹屾垚'?'#008000':(
+          text==='鎵ц涓�'?'#1e90ff':(
+            text==='鍙栨秷'?'#556b2f':(
+              text==='鏆傚仠'?'#8b0000':(
+                text==='鎾ゅ洖'?'#ff00ff':'gray'
+              )
+            )
+          )
+        )">{{text}}</a-tag>
+      </template>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { SalesStockOutboundOrderDetailPage } from '@/api/modular/main/SalesStockOutboundOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'SalesStockOutBoundOrderInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+        { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBatch', key: 'materialBatch' },
+        { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.Id = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return SalesStockOutboundOrderDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.sales-stock-out-bound-order-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/addForm.vue
new file mode 100644
index 0000000..425efbc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/addForm.vue
@@ -0,0 +1,328 @@
+锘�<template>
+  <a-modal
+    :title="(type==='modify'?'淇敼':'鏂板')+'閿�鍞��搴�'"
+    width="90vw"
+    :visible="visible"
+    dialogClass="zero-modal"
+    :confirmLoading="confirmLoading"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <div class="sales-stock-return-modal-content">
+        <div class="form-view">
+          <a-form :form="form">
+            <a-row>
+              <a-col :md="12" :sm="24">
+                <a-form-item label="鍗曟嵁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input disabled v-decorator="['salesStockReturnOrderNo',{rules:[{required:true,message:'鍗曟嵁鍙蜂笉鍙负绌猴紒'}]}]" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="12" :sm="24" v-if="type==='add'">
+                <a-form-item label="鍑哄簱鍗曟嵁" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-select style="width: 100%" v-decorator="['salesStockOutboundOrderNo',{rules:[{required:true,message:'璇烽�夋嫨鍑哄簱鍗曟嵁锛�'}]}]" placeholder="璇烽�夋嫨...">
+                    <a-select-option v-for="(item,index) in selectOptions.outOrders" :key="index" :value="item.salesStockOutboundOrderNo">{{ item.salesStockOutboundOrderNo }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="12" :sm="24" v-else>
+                <a-form-item label="鍑哄簱鍗曟嵁" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input disabled v-decorator="['salesStockOutboundOrderNo']" />
+                </a-form-item>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
+        <div class="action-view">
+          <a-button type="primary" icon="plus" :disabled="type==='modify'" @click="openChoose">
+            娣诲姞鐗╂枡
+          </a-button>
+        </div>
+        <div class="list-view" ref="listWrapper">
+          <!-- 娉ㄦ剰scroll.x鐨勫�� -->
+          <template v-if="th">
+            <a-table v-if="type==='modify'" :data-source="list" :columns="columnsEdit" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+              <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+              <template slot="inputCell" slot-scope="text,record,index">
+                <a-input-number v-model="record.orderDetailQuantity" :min="0" />
+              </template>
+              <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+            </a-table>
+            <a-table v-else :data-source="list" :columns="columnsAdd" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+              <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+              <template slot="action" slot-scope="text,record,index">
+                <a-button type="danger" size="small" @click.stop="cancelListItem(index)">鍒犻櫎</a-button>
+              </template>
+              <template slot="inputCell" slot-scope="text,record,index">
+                <a-input-number v-model="record.orderDetailQuantity" :min="0" />
+              </template>
+              <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+            </a-table>
+          </template>
+          
+        </div>
+      </div>
+    </a-spin>
+    
+    <choose-modal :visible.sync="chooseVisible" :query-order-no="chooseOrderNo" @callback="chooseBack" />
+    
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="submit" type="primary" :loading="confirmLoading" @click="onSubmit" :disabled="!list.length">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    SalesStockReturnOrderAdd,
+    GetBillNumber,
+    GetStockOuts,
+    SalesStockReturnOrderDetailPage,
+    SalesStockReturnOrderEditDetailNumber
+  } from '@/api/modular/main/SalesStockReturnOrderManage'
+  import ChooseModal from './chooseMaterials.vue'
+  export default {
+    components:{ChooseModal},
+    props:{
+      type:{
+        type:String,
+        default:''
+      }
+    },
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 18 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        selectOptions:{
+          outOrders:[]
+        },
+        th:0,
+        tableKey:'materialNo',
+        list:[],
+        columns:[
+          { title: '搴忓彿', key: 'index', width: 70, align:'center', scopedSlots: { customRender: 'index' }},
+          { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+          { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+          { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch' },
+          { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+          { title: '鍗曚綅绫诲瀷', dataIndex: 'basicUnit', key: 'basicUnit', width: 120, scopedSlots: { customRender: 'unitTyleSlot' }},
+          { title: '鍑哄簱鏁�', dataIndex: 'orderOutDetailQuantity', key: 'orderOutDetailQuantity', width: 180 },
+          { title: '閫�璐ф暟', key: 'orderDetailQuantity', scopedSlots: { customRender: 'inputCell' }, width: 220, align:'center'}
+        ],
+        columnA:{ title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }},
+        columnsAdd:[],
+        columnsEdit:[],
+        chooseVisible:false,
+        chooseOrderNo:''
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      init (record) {
+        this.visible = true
+        this.$nextTick(() => {
+          this.th = this.$refs.listWrapper.clientHeight - 60
+          if (this.type==='modify') {
+            let _arr = [...this.columns]
+            this.columnsEdit = _arr
+            this.getEditInitData(record)
+          } else {
+            let _arr = [...this.columns]
+            _arr.push(this.columnA)
+            this.columnsAdd = _arr
+            this.getAddInitData()
+          }
+        });
+      },
+      getAddInitData(){
+        this.confirmLoading = true;
+        Promise.all([
+          GetBillNumber(),
+          GetStockOuts()
+        ]).then(response=>{
+          let formData = {
+            salesStockReturnOrderNo:(response[0].data.orderNo || '')
+          }
+          this.selectOptions.outOrders = response[1].data || []
+          if (this.selectOptions.outOrders.length===1){
+            formData.salesStockOutboundOrderNo = this.selectOptions.outOrders[0].salesStockOutboundOrderNo
+          }
+          this.form.setFieldsValue(formData)
+          this.confirmLoading = false;
+        }).catch((err)=>{
+          this.confirmLoading = false;
+        })
+      },
+      getEditInitData(record){
+        let formData = {
+          salesStockReturnOrderNo:record.orderNo,
+          salesStockOutboundOrderNo:record.saleOrderNo
+        }
+        this.form.setFieldsValue(formData)
+        this.confirmLoading = true;
+        let params = {
+          Id:record.id,
+          PageNo:1,
+          PageSize:999
+        }
+        SalesStockReturnOrderDetailPage(params).then((d)=>{
+          this.list = d.data.rows || []
+          this.confirmLoading = false;
+        }).catch(()=>{
+          this.confirmLoading = false;
+        })
+      },
+      chooseBack(arr){
+        let newArr = [], reCount = 0;
+        arr.forEach((item)=>{
+          let f = false;
+          for (let i=0;i<this.list.length;i++) {
+            if (this.list[i][this.tableKey] === item[this.tableKey]) {
+              reCount++;
+              f = true
+              break;
+            }
+          }
+          if (!f) {
+            let _obj = {...item}
+            _obj.orderQuantity = 0
+            _obj.requireTime = ''
+            newArr.push(item)
+          }
+        })
+        this.list = [].concat(newArr,this.list)
+        if (reCount) {
+          this.$message.warning(`${reCount}绗旀暟鎹凡瀛樺湪锛屾湭娣诲姞锛乣);
+        }
+      },
+      cancelListItem(index){
+        this.list.splice(index,1)
+      },
+      interalNumberValidate(val){
+        let res = 0
+        if (!val) {
+          res = 1  //鏁伴噺蹇呭~涓斿ぇ浜�0
+        } else if (Number(val)!==parseInt(val)) {
+          res = 2  //鍙兘鏄暣鏁�
+        }
+        return res
+      },
+      checkBeforeSubmit() {
+        let res = true, msg = '';
+        for (let i=0;i<this.list.length;i++) {
+          let numberTag = this.interalNumberValidate(this.list[i].orderDetailQuantity)
+          if (numberTag!==0) {
+            res = false
+            if (numberTag===1) {
+              msg = `绗�${i+1}琛岋紝閫�璐ф暟蹇呭~涓斿ぇ浜�0锛乣
+            } else if (numberTag===2) {
+              msg = `绗�${i+1}琛岋紝閫�璐ф暟鍙兘鏄暣鏁帮紒`
+            }
+            break;
+          }
+          if (res && this.list[i].orderDetailQuantity > this.list[i].orderOutDetailQuantity) {
+            res = false
+            msg = `绗�${i+1}琛岋紝閫�璐ф暟涓嶈兘澶т簬鍑哄簱鏁帮紒`
+            break;
+          }
+        }
+        if (!res) {
+          this.$message.warning(msg);
+        }
+        return res
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      onSubmit () {
+        const { form: { validateFields } } = this
+        validateFields((errors, values) => {
+          if (!errors) {
+            let f = this.checkBeforeSubmit()
+            if (f) {
+              this.confirmLoading = true
+              this.handleSubmit(values,(fx)=>{
+                if (fx) {
+                  this.$message.success('鎻愪氦鎴愬姛')
+                  this.confirmLoading = false
+                  this.handleCancel()
+                  this.$emit('ok')
+                } else {
+                  this.confirmLoading = false
+                }
+              })
+            }
+          } 
+        })
+      },
+      handleSubmit(values,callback){
+        this.confirmLoading = true
+        if (this.type==='modify') {
+          this.handleSubmitModify(callback)
+        } else {
+          this.handleSubmitAdd(values,callback)
+        }
+      },
+      handleSubmitAdd(values,callback){
+        let params = {...values,...{salesStockReturnOrderDetailList:this.list}}
+        SalesStockReturnOrderAdd(params).then(()=>{
+          callback && callback(true)
+        }).catch(()=>{
+          callback && callback(false)
+        })
+      },
+      handleSubmitModify(callback){
+        let params = [...this.list]
+        SalesStockReturnOrderEditDetailNumber(params).then(()=>{
+          callback && callback(true)
+        }).catch(()=>{
+          callback && callback(false)
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.list = []
+        this.visible = false
+      },
+      openChoose(){
+        this.form.validateFields(['salesStockOutboundOrderNo'],(errors, values) =>{
+          if (!errors){
+            this.chooseOrderNo = values.salesStockOutboundOrderNo
+            this.chooseVisible = true
+          }
+        })
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+.sales-stock-return-modal-content{
+  height: 70vh;
+  display: flex;
+  flex-direction: column;
+  .form-view,.action-view{
+    flex-shrink: 0;
+  }
+  .form-view{
+    background-color: #F3F7FA;
+    padding-top: 20px;
+  }
+  .action-view{
+    padding: 8px 16px;
+  }
+  .list-view{
+    flex-grow: 1;
+    padding: 0 16px;
+    overflow: auto;
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/chooseMaterials.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/chooseMaterials.vue
new file mode 100644
index 0000000..4455578
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/chooseMaterials.vue
@@ -0,0 +1,256 @@
+<template>
+  <a-modal
+    title="鐗╂枡閫夋嫨"
+    width="85vw"
+    :visible="innerVisible"
+    dialogClass="zero-modal"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="loading">
+      <div class="sales-stock-return-choose-modal-content">
+        <div class="table-box" ref="listWrapper">
+          <div class="action-view" v-if="showType===1">
+            <a-table v-if="th1" :data-source="list" :columns="listColumns" 
+              :pagination="{current:queried.PageNo,pageSize:queried.PageSize,total:listTotal}" 
+              :rowKey="tableKey" :row-selection="{onChange:rowSelectionsChange,selectedRowKeys:selectedRowKeys}" :scroll="{y:th1}"
+              @change="chooseTablePageChange">
+              <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+              <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+            </a-table>
+          </div>
+          <div class="choosen-view" v-else>
+            <a-table v-if="th2" :data-source="choosen" :columns="choosenColumns" :rowKey="tableKey" :pagination="false" :scroll="{y:th2}">
+              <template slot="action" slot-scope="text,record,index">
+                <a-button type="danger" size="small" @click.stop="cancelChoosen(index)">鍒犻櫎</a-button>
+              </template>
+              <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+            </a-table>
+          </div>
+        </div>
+      </div>
+    </a-spin>
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="choosen" type="primary" @click="changeShowType">鎵�閫夌墿鏂�<span v-if="choosen.length>0">({{choosen.length}})</span></a-button>
+      <a-button key="submit" type="primary" :loading="loading" @click="handleSubmit" :disabled="!choosen.length">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import { GetCouldReturnMaterials } from '@/api/modular/main/SalesStockReturnOrderManage'
+const pagination = {
+  PageNo:1,
+  PageSize:10
+} 
+export default {
+  emits:['update:visible','callback'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    },
+    queryOrderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      innerVisible:false,
+      loading:false,
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 5 }
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 18 }
+      },
+      queried:{...pagination},
+      tableKey:'materialNo',
+      listTotal:0,
+      list:[],
+      listColumns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch' },
+        { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鍗曚綅绫诲瀷', dataIndex: 'basicUnit', key: 'basicUnit', width: 120, scopedSlots: { customRender: 'unitTyleSlot' }},
+        { title: '鍑哄簱鏁�', dataIndex: 'orderOutDetailQuantity', key: 'orderOutDetailQuantity', width: 180 }
+      ],
+      selectedRowKeys:[],
+      choosen:[],
+      choosenColumns:[
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch' },
+        { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鍗曚綅绫诲瀷', dataIndex: 'basicUnit', key: 'basicUnit', width: 120, scopedSlots: { customRender: 'unitTyleSlot' }},
+        { title: '鍑哄簱鏁�', dataIndex: 'orderOutDetailQuantity', key: 'orderOutDetailQuantity', width: 180 },
+        { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+      ],
+      showType:1,   //1鏄剧ず鏌ヨ椤甸潰锛� 2鏄剧ず宸查�夋暟鎹�
+      th1:0,
+      th2:0
+    }
+  },
+  created(){
+    this.innerVisible = this.visible
+  },
+  watch:{
+    visible(newVal){
+      if (newVal!==this.innerVisible) {
+        this.innerVisible = newVal
+      }
+    },
+    innerVisible(newVal,oldVal){
+      if (newVal!==this.visible) {
+        this.$emit('update:visible',newVal)
+      }
+      if (newVal!==oldVal) {
+        if (newVal) {
+          this.init()
+        }
+      }
+    }
+  },
+  methods:{
+    init(){
+      this.$nextTick(() => {
+        let h = this.$refs.listWrapper.clientHeight
+        this.th1 = h - 120
+        this.th2= h - 60
+        this.newQuery()
+      });
+    },
+    handleSubmit(){
+      this.$emit('callback',this.choosen)
+      this.handleCancel()
+    },
+    handleCancel(){
+      this.innerVisible = false;
+      this.showType = 1
+      this.list = []
+      this.choosen = []
+      this.loading = false
+      this.queried = {...pagination}
+    },
+    newQuery(){
+      this.queried = {...pagination}
+      this.queried.SalesStockOutboundOrderNo = this.queryOrderNo
+      this.queryChooseDataSource()
+    },
+    queryChooseDataSource(){
+      this.loading = true;
+      GetCouldReturnMaterials(this.queried).then((d)=>{
+        this.list = d.data.rows || []
+        this.listTotal = d.data.totalRows || 0
+        this.setSelectedRowKeys()
+        this.loading = false;
+      }).catch(()=>{
+        this.loading = false;
+      })
+    },
+    rowSelectionsChange(selectedRowKeys, selectedRows){
+      let reduces = [], adds = []
+      /* 璁$畻闇�瑕佽绉诲嚭choosen鐨勫唴瀹� */
+      this.selectedRowKeys.forEach((val)=>{
+        let f1 = false;
+        for (let i=0;i<selectedRowKeys.length;i++) {
+          if (selectedRowKeys[i] === val) {
+            f1 = true;
+            break;
+          }
+        }
+        if (!f1) {
+          reduces.push(val)
+        }
+      })
+      /* 璁$畻闇�瑕佽鍔犲叆choosen鐨勫唴瀹� */
+      selectedRowKeys.forEach((val)=>{
+        let f2 = false;
+        for (let i=0;i<this.choosen.length;i++) {
+          if (this.choosen[i][this.tableKey] === val) {
+            f2 = true;
+            break;
+          }
+        }
+        if (!f2) {
+          adds.push(val)
+        }
+      })
+      /* 鎵ц瀹為檯鏁版嵁澶勭悊锛屽厛鍑忓悗鍔狅紝鍑忓皯澶勭悊鏃堕棿 */
+      this.selectedRowKeys = selectedRowKeys
+      this.reduceChoosen(reduces)
+      this.addChosen(adds)
+    },
+    chooseTablePageChange(pagination){
+      this.queried.PageNo = pagination.current
+      this.queryChooseDataSource()
+    },
+    reduceChoosen(arr){
+      arr.forEach((val)=>{
+        let reduceIndex = -1;
+        for (let i=0;this.choosen.length;i++) {
+          if (this.choosen[i][this.tableKey] === val) {
+            reduceIndex = i
+            break;
+          }
+        }
+        if (reduceIndex>=0) {
+          this.choosen.splice(reduceIndex,1)
+        }
+      })
+    },
+    cancelChoosen(index){
+      this.choosen.splice(index,1)
+    },
+    addChosen(arr){
+      arr.forEach((val)=>{
+        for (let i=0;this.list.length;i++) {
+          if (this.list[i][this.tableKey] === val) {
+            let obj = {...this.list[i]}
+            this.choosen.push(obj)
+            break;
+          }
+        }
+      })
+    },
+    setSelectedRowKeys(){
+      let arr = []
+      this.choosen.forEach((item)=>{
+        for (let i=0;i<this.list.length;i++) {
+          if (this.list[i][this.tableKey] === item[this.tableKey]) {
+            arr.push(item[this.tableKey])
+            break;
+          }
+        }
+      })
+      this.selectedRowKeys = arr
+    },
+    changeShowType(){
+      if (this.showType===1) {
+        this.showType = 2
+      } else {
+        this.showType = 1
+        this.setSelectedRowKeys()
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.sales-stock-return-choose-modal-content{
+  height: 50vh;
+  display: flex;
+  flex-direction: column;
+  box-sizing: border-box;
+  padding: 16px 16px 0 16px;
+  .table-box{
+    height: 100%;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/editForm.vue
new file mode 100644
index 0000000..170765a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/editForm.vue
@@ -0,0 +1,179 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫閿�鍞��搴�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]" @change="onLargeCategorySelect">
+            <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+            <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浠撳簱Id" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴揑d" v-decorator="['areaId']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴撳悕绉�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="閫�璐ф柟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ��璐ф柟" v-decorator="['returnGoods']" />
+        </a-form-item>
+        <a-form-item label="瀹㈡埛缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鎴风紪鍙�" v-decorator="['returnGoodsOrderNo']" />
+        </a-form-item>
+        <a-form-item label="閿�鍞崟鎹�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ攢鍞崟鎹�" v-decorator="['saleOrderNo']" />
+        </a-form-item>
+        <a-form-item label="鍙戣揣鍗曟嵁" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彂璐у崟鎹�" v-decorator="['dispatchedOrderOrderNo']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatusEnum', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    SalesStockReturnOrderEdit,SalesStockReturnOrderLargeCategories,SalesStockReturnOrderSubclass
+  } from '@/api/modular/main/SalesStockReturnOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+		selectOptions:{
+		  largeCategories:[],
+		  subclasses:[]
+		},
+        record: {},
+        orderStatusEnumData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+			getLargeCategoriesOptions(){
+			  if (this.selectOptions.largeCategories.length<=0) {
+			    SalesStockReturnOrderLargeCategories().then(d=>{
+			      this.selectOptions.largeCategories = d.data || []
+			    }).catch(err=>{
+			      console.log(err)
+			    })
+			  }
+			},
+			getSubclassOptions(id,init=false){
+			  SalesStockReturnOrderSubclass(id).then(d=>{
+			    this.selectOptions.subclasses = d.data || []
+				if (!init){
+					this.form.resetFields(['orderSubclass'])
+				}
+			  }).catch(err=>{
+			    this.clearSubclass()
+			    console.log(err)
+			  })
+			},
+			onLargeCategorySelect(val){
+			  if (val) {
+			    this.getSubclassOptions(val)
+			  } else {
+			    this.clearSubclass()
+			  }
+			},
+			clearSubclass(){
+			  this.selectOptions.subclasses = []
+			  this.form.resetFields(['orderSubclass'])
+			},
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        const orderStatusEnumOption = this.$options
+        this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id:record.id,
+              orderNo: record.orderNo,
+              orderLargeCategory: record.orderLargeCategory,
+              orderSubclass: record.orderSubclass,
+              orderQuantity: record.orderQuantity,
+              areaId: record.areaId,
+              areaName: record.areaName,
+              returnGoods: record.returnGoods,
+              returnGoodsOrderNo: record.returnGoodsOrderNo,
+              saleOrderNo: record.saleOrderNo,
+              dispatchedOrderOrderNo: record.dispatchedOrderOrderNo,
+              orderStatusEnum: String(record.orderStatusEnum)
+            }
+          )
+		  this.getLargeCategoriesOptions()
+		  this.getSubclassOptions(record.orderLargeCategory,true)
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            SalesStockReturnOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/index.vue
new file mode 100644
index 0000000..7a19b74
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/index.vue
@@ -0,0 +1,273 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                  <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>      
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩爣浠撳簱">
+                  <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ョ洰鏍囦粨搴�"/>
+                </a-form-item>
+              </a-col>
+                    
+            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+      >
+        <template class="table-operator" slot="operator" >
+          <a-button type="primary" icon="plus" @click="onNew">鏂板閿�鍞��搴�</a-button>
+          <a-button type="danger" icon="step-forward" :disabled="!selectedRowKeys.length" @click="onMulDistribute">涓嬪彂</a-button>
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a @click="onEdit(record)">缂栬緫</a>
+          <a-divider type="vertical" />
+          <a @click="onDistribute(record)">涓嬪彂</a>
+          <a-divider type="vertical" />
+          <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => SalesStockReturnOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+      <add-form ref="addForm" :type="formType" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { SalesStockReturnOrderPage, SalesStockReturnOrderDelete, SalesStockReturnOrderMulDistribute } from '@/api/modular/main/SalesStockReturnOrderManage'
+  import addForm from './addForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        selectOptions:{
+          largeCategories:[],
+          subclasses:[]
+        },
+        columns: [
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          {
+            title: '鍗曟嵁鏁伴噺',
+            align: 'center',
+            dataIndex: 'orderQuantity'
+          },
+          {
+            title: '鐩爣浠撳簱',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '閫�璐ф柟',
+            align: 'center',
+            dataIndex: 'returnGoods'
+          },
+          {
+            title: '瀹㈡埛缂栧彿',
+            align: 'center',
+            dataIndex: 'returnGoodsOrderNo'
+          },
+          {
+            title: '閿�鍞崟鎹�',
+            align: 'center',
+            dataIndex: 'saleOrderNo'
+          },
+          {
+            title: '鍙戣揣鍗曟嵁',
+            align: 'center',
+            dataIndex: 'dispatchedOrderOrderNo'
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatusEnum',
+            scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return SalesStockReturnOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0],true)
+            }
+            this.selectedRowKeys = []
+            return res.data
+          })
+        },
+        orderStatusEnumData: [],
+        selectedRowKeys: [],
+        infoId:null,
+        infoOrderNo:'',
+        formType:''
+      }
+    },
+    created () {
+      const orderStatusEnumOption = this.$options
+      this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+    },
+    methods: {
+      onViewDetail(obj,mainRefresh=false){
+        if (this.infoId===obj.id && mainRefresh===false) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      onNew(){
+        this.formType = 'add'
+        this.$refs.addForm.init()
+      },
+      onEdit(obj){
+        this.formType = 'modify'
+        this.$refs.addForm.init(obj)
+      },
+      clearInfo(){
+        this.infoId = null
+        this.infoOrderNo = ''
+      },
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      SalesStockReturnOrderDelete (record) {
+        SalesStockReturnOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            if (this.infoId && record.id) {
+              this.clearInfo()
+            }
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        if (this.formType==='modify'){
+          this.infoId = null
+          this.$nextTick(()=>{
+            this.$refs.table.refresh()
+          })
+        } else {
+          this.$refs.table.refresh()
+        }
+      },
+      infoCallback(){
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+      },
+      onMulDistribute(){
+        this.dealDistribute(this.selectedRowKeys)
+      },
+      onDistribute(obj){
+        this.dealDistribute([obj.id])
+      },
+      dealDistribute(ids){
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屼笅鍙戞搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleDistribute(ids,(f)=>{
+              if (f) {
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      handleDistribute(ids,callback){
+        this.$loading.show()
+        SalesStockReturnOrderMulDistribute(ids).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/infoBlock.vue
new file mode 100644
index 0000000..58f5d7f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/infoBlock.vue
@@ -0,0 +1,106 @@
+<template>
+  <div class="sales-stock-return-order-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { SalesStockReturnOrderDetailPage } from '@/api/modular/main/SalesStockReturnOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'salesStockReturnOrderInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch' },
+        { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鍗曚綅绫诲瀷', dataIndex: 'basicUnit', key: 'basicUnit', width: 120, scopedSlots: { customRender: 'unitTyleSlot' }},
+        { title: '鍑哄簱鏁�', dataIndex: 'orderOutDetailQuantity', key: 'orderOutDetailQuantity', width: 100 },
+        { title: '閫�璐ф暟', dataIndex: 'orderDetailQuantity',key: 'orderDetailQuantity', width: 100}
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.Id = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return SalesStockReturnOrderDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.sales-stock-return-order-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/DetailDrawer.vue
new file mode 100644
index 0000000..c89d4dd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/DetailDrawer.vue
@@ -0,0 +1,183 @@
+<template>
+  <a-drawer 
+    title="宸ヤ綅璇︽儏璇︽儏"
+    wrapClassName="weiben-private-drawer"
+    :width="400"
+    :closable="false"
+    :maskClosable="true"
+    :visible="visible"
+    :after-visible-change="afterVisibleChange"
+    @close="onClose"
+  >
+    <a-spin :spinning="loading">
+      <div class="station-view-detail-div">
+        <div class="btns-row">
+          <a-button type="primary" :disabled="stationObj.status!==0" @click.stop="onUpdateLock">鍋滅敤</a-button>
+          <a-button type="primary" :disabled="stationObj.status!==1" @click.stop="onUpdateLock">鍚敤</a-button>
+          <a-button type="primary" :disabled="!(stationObj.status===0&&stationObj.stataionStatus!==1)" @click.stop="onUpdateEmpty">缃┖</a-button>
+        </div>
+        <div class="location-detail-box">
+          <div class="base-info info-box">
+            <p>宸ヤ綅缂栧彿锛歿{stationObj.code}}</p>
+            <p>宸ヤ綅鍚嶇О锛歿{stationObj.name}}</p>
+            <p>鎵樼洏鐮侊細{{stationObj.containerCode}}</p>
+          </div>
+          <!-- 鐗╂枡鍒楄〃 start -->
+          <div class="location-materials">
+            
+            <div class="location-material-item" v-for="(item,index) in materialList" :key="'material-item-'+index">
+              <a-card>
+                <div class="info-box">
+                  <p>鐗╂枡缂栧彿锛歿{item.materialNo}}</p>
+                  <p>鐗╂枡鍚嶇О锛歿{item.materialName}}</p>
+                  <p>灏哄锛歿{item.materialSpec}}</p>
+                  <p>鑸瑰彿锛歿{item.shipNo}}</p>
+                  <p>鍥惧彿锛歿{item.drawingNo}}</p>
+                </div>
+              </a-card>
+            </div>
+            
+          </div>
+          <!-- 鐗╂枡鍒楄〃 end -->
+        </div>
+      </div>
+    </a-spin>
+  </a-drawer>
+</template>
+
+<script>
+import { GetStationDetail,UpdateLock,UpdateEmpty } from '@/api/modular/main/StationViewManage'
+export default {
+  name:'stationViewDetailDrawer',
+  emits:['update:visible','callback'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    },
+    row:{
+      type:Object,
+      default:function(){
+        return {}
+      }
+    }
+  },
+  data(){
+    return {
+      loading:false,
+      stationObj:{
+        placestatus:null,
+        islock:null
+      },
+      containercode:'',
+      materialList:[],
+      actionFlag:false
+    }
+  },
+  methods:{
+    onClose(){
+      this.close()
+    },
+    close(){
+      this.$emit('update:visible',false)
+    },
+    afterVisibleChange(visible){
+      if (visible) {
+        this.initShow()
+      } else {
+        this.afterClsoe()
+      }
+    },
+    initShow(){
+      this.loading = true;
+      this.getLocationDetail(()=>{
+        this.loading = false;
+      })
+    },
+    getLocationDetail(callback){
+      let params = {ID:this.row.id}
+      GetStationDetail(params).then((d)=>{
+        this.stationObj = d.data.lesStation || {}
+        this.materialList = d.data.assembleMaterialContainer || []
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    afterClsoe(){
+      this.locationObj = {
+        status:null,
+        stataionStatus:null
+      }
+      this.materialList = []
+      if (this.actionFlag) {
+        this.$emit('callback')
+      }
+      this.actionFlag = false
+    },
+    onUpdateLock(){
+      this.loading = true;
+      let params = {ID:this.row.id}
+      UpdateLock(params).then(()=>{
+        this.actionFlag = true;
+        this.getLocationDetail(()=>{
+          this.loading = false;
+          this.$message.success('鎿嶄綔鎴愬姛锛�');
+        })
+      }).catch(()=>{
+        this.loading = false;
+      })
+    },
+    onUpdateEmpty(){
+      this.loading = true;
+      let params = {ID:this.row.id}
+      UpdateEmpty(params).then(()=>{
+        this.actionFlag = true;
+        this.getLocationDetail(()=>{
+          this.loading = false;
+          this.$message.success('鎿嶄綔鎴愬姛锛�');
+        })
+      }).catch(()=>{
+        this.loading = false;
+      })
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.station-view-detail-div{
+  height:100%;
+  display: flex;
+  flex-direction: column;
+  &>.btns-row{
+    flex-shrink: 0;
+    padding:12px 16px;
+    .ant-btn + .ant-btn {
+      margin-left: 10px;
+    }
+  }
+  .location-detail-box{
+    flex-grow: 1;
+    overflow: auto;
+  }
+  .info-box{
+    line-height: 1.5;
+    p{
+      margin-bottom: 0;
+    }
+  }
+  .base-info,.location-materials{
+    padding:0 16px;
+    margin-bottom: 16px;
+  }
+  .location-materials{
+    .location-material-item{
+      margin-bottom: 12px;
+      &:last-child {
+        margin-bottom: 0;
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/SearchForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/SearchForm.vue
new file mode 100644
index 0000000..f65bb58
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/SearchForm.vue
@@ -0,0 +1,74 @@
+<template>
+  <a-form layout="inline">
+    <a-form-item label="浜х嚎">
+      <a-select v-model="form.line" class="slect-width">
+        <a-select-option v-for="(item,index) in selectList.lines" :key="'line-sel-'+index" :value="item.id">{{item.name}}</a-select-option>
+      </a-select>
+    </a-form-item>
+    <a-form-item>
+      <a-button type="primary" @click.stop="onSearch">鏌ヨ</a-button>
+    </a-form-item>
+  </a-form>
+</template>
+
+<script>
+import { GetProductionLines } from '@/api/modular/main/StationViewManage'
+export default {
+  name:'stationViewSearchCompontent',
+  emits:['update:loading','search'],
+  data(){
+    return {
+      loading:{
+        type:Boolean,
+        default:false
+      },
+      form:{
+        line聽:null
+      },
+      selectList:{
+        lines:[]
+      }
+    }
+  },
+  methods:{
+    init(callback){
+      this.getSelectListLines((f)=>{
+        if (f) {
+          callback && callback(true,this.form.line)
+        } else {
+          callback && callback(false)
+        }
+      })
+    },
+    getSelectListLines(callback){
+      GetProductionLines().then((d)=>{
+        this.selectList.lines = d.data || [];
+        if (this.selectList.lines.length>0) {
+          this.form.line = this.selectList.lines[0].id
+          callback && callback(true)
+        } else {
+          callback && callback(false)
+        }
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    onSearch(){
+      if (!this.form.line) {
+        this.$error({
+          title: '绯荤粺鎻愮ず',
+          content: '璇烽�夋嫨浜х嚎锛�',
+        });
+        return false;
+      }
+      this.$emit('search',this.form.line)
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.slect-width{
+  width:180px
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/index.vue
new file mode 100644
index 0000000..74a0802
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/index.vue
@@ -0,0 +1,278 @@
+锘�<template>
+  <div class="station-view-page">
+    <a-spin :spinning="loading">
+      <div class="top-blcok">
+        <search-form ref="search" :loading.sync="loading" @search="onSearch" />
+      </div>
+      <div class="containter-blcok">
+        <div class="example-tags">
+          <div class="tag tan-tag">绌洪棽</div>
+          <div class="tag orange-tag">寰呭叆</div>
+          <div class="tag purple-tag">寰呭嚭</div>
+          <div class="tag primary-tag">瀛樿揣</div>
+          <div class="tag red-tag">鍋滅敤</div>
+        </div>
+        <!-- 宸ヤ綅鏄剧ず鍖哄煙 start -->
+        <div class="stations-box">
+          <div class="station-item-group">
+            <div class="station-item" v-for="(item,index) in list" :key="'station-item-'+index" :class="[
+              (!item||item.status===undefined||item.status===null||item.status===2)?'died-item':(
+                item.status===1?'red-item':(
+                  item.stataionStatus===2?'orange-item':(
+                    item.stataionStatus===4?'purple-item':(
+                      item.stataionStatus===1?'tan-item':(
+                        item.stataionStatus===3?'primary-item':''
+                      )
+                    )
+                  )
+                )
+              )
+            ]" @click="openDetail(item)">
+              {{item?item.name:''}}
+            </div> 
+          </div> 
+        </div>
+        <!-- 搴撳尯鏄剧ず鍖哄煙 end -->
+      </div>
+      
+      <detail-drawer :visible.sync="detailVisible" :row="detailRow" @callback="lockCallback" />
+    </a-spin>
+  </div>
+</template>
+
+<script>
+import SearchForm from './SearchForm.vue'
+import DetailDrawer from './DetailDrawer.vue'
+import { GetStationList } from '@/api/modular/main/StationViewManage'
+export default {
+  name:'stationViewPage',
+  components:{SearchForm,DetailDrawer},
+  data(){
+    return {
+      detailVisible:false,
+      detailRow:{},
+      loading:false,
+      countNum: {
+        empty: 0,
+        daiRu: 0,
+        daiChu: 0,
+        fill: 0,
+        lock: 0,
+        emptyContainer:0
+      },
+      list:[],
+      searchForm:{}
+    }
+  },
+  methods:{
+    openDetail(obj){
+      this.detailRow = obj
+      this.detailVisible = true;
+    },
+    getList(id,callback){
+      GetStationList(id).then((d)=>{
+        this.list = d.data || []
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    onSearch(valObj) {
+      this.loading = true
+      this.searchForm = valObj
+      this.getList(valObj,()=>{
+        this.loading = false
+      })
+    },
+    lockCallback(){
+      this.loading = true
+      this.getList(this.searchForm,()=>{
+        this.loading = false
+      })
+    },
+    init(){
+      this.loading = true
+      this.$refs.search.init((f,val)=>{
+        if (f) {
+          this.getList(val,()=>{
+            this.loading = false
+          })
+        } else {
+          this.loading = false
+        }
+      })
+    }
+  },
+  mounted(){
+    this.init()
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.station-view-page{
+  overflow: hidden;
+  display: flex;
+  overflow: auto;
+  background-color: #fff;
+  border-radius: 10px;
+  flex-direction: column;
+  height: 100%;
+  
+  .top-blcok {
+    flex-shrink: 0;
+    padding: 10px 16px 16px 16px;
+  }
+  
+  .containter-blcok {
+    flex-grow: 1;
+    height: 1px;
+    display: flex;
+    flex-direction: column;
+    @gray-color: #808080;
+    @danger-color: #ff3333;
+    @primary-color: #ccffff;
+    @orange-color: #ffa500;
+    @purple-color: #800080;
+    @tan-color: #d2b48c;
+    @border-color-x: #c0c0c0;
+  
+    .example-tags {
+      flex-shrink: 0;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      padding: 0 16px 16px 16px;
+  
+      .tag {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        height: 30px;
+        width: 100px;
+        border: 1px solid @border-color-x;
+        border-radius: 4px;
+        cursor: default;
+        background-color: @gray-color;
+  
+        &+.tag {
+          margin-left: 10px;
+        }
+  
+        &.red-tag {
+          background-color: @danger-color;
+        }
+  
+        &.primary-tag {
+          background-color: @primary-color;
+        }
+  
+        &.orange-tag {
+          background-color: @orange-color;
+        }
+  
+        &.purple-tag {
+          background-color: @purple-color;
+        }
+        
+        &.tan-tag{
+          background-color: @tan-color;
+        }
+  
+        &:not(.primary-tag) {
+          color: #FFFFFF;
+        }
+      }
+    }
+  
+    .stations-box {
+      @divider-size:8px;
+      flex-grow: 1;
+      height: 1px;
+      overflow: auto;
+      .station-item-group{
+        display: flex;
+        flex-wrap: wrap;
+        padding-left: @divider-size;
+      }
+      .station-item {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        width: 150px;
+        height: 50px;
+        overflow: hidden;
+        white-space: nowrap;
+        margin-right: @divider-size;
+        margin-bottom: @divider-size;
+        border: 1px solid @border-color-x;
+        border-radius: 4px;
+        cursor: pointer;
+        flex-shrink: 0;
+        background-color: @gray-color;
+      
+        &.active {
+          box-shadow: 0 0 4px #00ff00;
+        }
+        
+        &.died-item {
+          background-color: #FFFFFF;
+          background-image: linear-gradient(
+          	to top right,
+          	rgba(192, 192, 192, 0) 0%,
+          	rgba(192, 192, 192, 0) calc(50% - 1px),
+          	rgba(192, 192, 192, 1) 50%,
+          	rgba(192, 192, 192, 0) calc(50% + 1px),
+          	rgba(192, 192, 192, 0) 100%
+          ), linear-gradient(
+          	to bottom right,
+          	rgba(192, 192, 192, 0) 0%,
+          	rgba(192, 192, 192, 0) calc(50% - 1px),
+          	rgba(192, 192, 192, 1) 50%,
+          	rgba(192, 192, 192, 0) calc(50% + 1px),
+          	rgba(192, 192, 192, 0) 100%
+          );
+          cursor: not-allowed;
+        }
+        
+        &.red-item {
+          background-color: @danger-color;
+        }
+        
+        &.primary-item {
+          background-color: @primary-color;
+        }
+        
+        &.orange-item {
+          background-color: @orange-color;
+        }
+        
+        &.purple-item {
+          background-color: @purple-color;
+        }
+        
+        &.tan-item{
+          background-color: @tan-color;
+        }
+        
+        &:not(.primary-item,.died-item) {
+          color: #FFFFFF;
+        }
+        
+      }
+    }
+  }
+}
+</style>
+<style lang="less">
+.station-view-page{
+  .ant-spin-nested-loading,.ant-spin-container{
+    height:100%;
+  }
+  .ant-spin-container{
+    overflow: hidden;
+    display: flex;
+    flex-direction: column;
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/addForm.vue
new file mode 100644
index 0000000..359b945
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/addForm.vue
@@ -0,0 +1,125 @@
+锘�<template>
+  <a-modal
+    title="鏂板渚涘簲鍟嗛��搴�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="閫�璐у崟鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ��璐у崟鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="閫�璐т汉" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ��璐т汉" v-decorator="['customer']" />
+        </a-form-item>
+        <a-form-item label="渚涘簲鍟�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢" v-decorator="['supplier']" />
+        </a-form-item>
+        <a-form-item label="閫�璐ф椂闂�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨閫�璐ф椂闂�" v-decorator="['stockOutTime']" @change="onChangestockOutTime"/>
+        </a-form-item>
+        <a-form-item label="閫�璐х悊鐢�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ��璐х悊鐢�" v-decorator="['stockOutReason']" />
+        </a-form-item>
+        <a-form-item label="鍙戣揣鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彂璐у崟鍙�" v-decorator="['dispatchedOrderNo']" />
+        </a-form-item>
+        <a-form-item label="鏀惰揣鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ敹璐у湴鍧�" v-decorator="['shippingAddress']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    SupplierStockReturnOrderAdd
+  } from '@/api/modular/main/SupplierStockReturnOrderManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        orderLargeCategoryData: [],
+        orderSubclassData: [],
+        stockOutTimeDateString: '',
+        orderStatusData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            values.stockOutTime = this.stockOutTimeDateString
+            SupplierStockReturnOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      onChangestockOutTime(date, dateString) {
+        this.stockOutTimeDateString = dateString
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/editForm.vue
new file mode 100644
index 0000000..3d0ced8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/editForm.vue
@@ -0,0 +1,153 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫渚涘簲鍟嗛��搴�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="閫�璐у崟鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ��璐у崟鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="閫�璐т汉" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ��璐т汉" v-decorator="['customer']" />
+        </a-form-item>
+        <a-form-item label="渚涘簲鍟�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢" v-decorator="['supplier']" />
+        </a-form-item>
+        <a-form-item label="閫�璐ф椂闂�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨閫�璐ф椂闂�" v-decorator="['stockOutTime']" @change="onChangestockOutTime"/>
+        </a-form-item>
+        <a-form-item label="閫�璐х悊鐢�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ��璐х悊鐢�" v-decorator="['stockOutReason']" />
+        </a-form-item>
+        <a-form-item label="鍙戣揣鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彂璐у崟鍙�" v-decorator="['dispatchedOrderNo']" />
+        </a-form-item>
+        <a-form-item label="鏀惰揣鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ敹璐у湴鍧�" v-decorator="['shippingAddress']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+    SupplierStockReturnOrderEdit
+  } from '@/api/modular/main/SupplierStockReturnOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        orderLargeCategoryData: [],
+        orderSubclassData: [],
+        stockOutTimeDateString: '',
+        orderStatusData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      moment,
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              orderNo: record.orderNo,
+              orderLargeCategory: record.orderLargeCategory,
+              orderSubclass: record.orderSubclass,
+              orderQuantity: record.orderQuantity,
+              areaName: record.areaName,
+              customer: record.customer,
+              supplier: record.supplier,
+              stockOutReason: record.stockOutReason,
+              dispatchedOrderNo: record.dispatchedOrderNo,
+              shippingAddress: record.shippingAddress
+            }
+          )
+        })
+        this.form.getFieldDecorator('stockOutTime', { initialValue: moment(record.stockOutTime, 'YYYY-MM-DD') })
+        this.stockOutTimeDateString = moment(record.stockOutTime).format('YYYY-MM-DD')
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            values.stockOutTime = this.stockOutTimeDateString
+            this.record.stockOutTime = this.stockOutTimeDateString
+            SupplierStockReturnOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      onChangestockOutTime(date, dateString) {
+        this.stockOutTimeDateString = dateString
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/index.vue
new file mode 100644
index 0000000..306cd37
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/index.vue
@@ -0,0 +1,306 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="閫�璐у崟鍙�">
+                <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ラ��璐у崟鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                  <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+             <!-- <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁澶х被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderLargeCategory" placeholder="璇烽�夋嫨..." @change="onLargeCategorySelect">
+                    <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁灏忕被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderSubclass" placeholder="璇烽�夋嫨...">
+                    <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col> -->
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩爣浠撳簱">
+                  <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ョ洰鏍囦粨搴�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="閫�璐т汉">
+                  <a-input v-model="queryParam.customer" allow-clear placeholder="璇疯緭鍏ラ��璐т汉"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="渚涘簲鍟�">
+                  <a-input v-model="queryParam.supplier" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍙戣揣鍗曞彿">
+                  <a-input v-model="queryParam.dispatchedOrderNo" allow-clear placeholder="璇疯緭鍏ュ彂璐у崟鍙�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鏀惰揣鍦板潃">
+                  <a-input v-model="queryParam.shippingAddress" allow-clear placeholder="璇疯緭鍏ユ敹璐у湴鍧�"/>
+                </a-form-item>
+              </a-col>            
+            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+      >
+        <template class="table-operator" slot="operator">
+          <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板渚涘簲鍟嗛��搴�</a-button>
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" />
+          <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => SupplierStockReturnOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { 
+    SupplierStockReturnOrderPage, 
+    SupplierStockReturnOrderDelete ,
+    SupplierStockReturnOrderLargeCategories,
+    SupplierStockReturnOrderSubclass
+  } from '@/api/modular/main/SupplierStockReturnOrderManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        selectOptions:{
+          largeCategories:[],
+          subclasses:[]
+        },
+        columns: [
+          {
+            title: '閫�璐у崟鍙�',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          // {
+          //   title: '鍗曟嵁澶х被',
+          //   align: 'center',
+          //   dataIndex: 'orderLargeCategory',
+          //   //scopedSlots: { customRender: 'orderLargeCategoryscopedSlots' }
+          // },
+          // {
+          //   title: '鍗曟嵁灏忕被',
+          //   align: 'center',
+          //   dataIndex: 'orderSubclass',
+          //   //scopedSlots: { customRender: 'orderSubclassscopedSlots' }
+          // },
+          {
+            title: '鍗曟嵁鎬绘暟閲�',
+            align: 'center',
+            dataIndex: 'orderQuantity'
+          },
+          {
+            title: '鐩爣浠撳簱',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '閫�璐т汉',
+            align: 'center',
+            dataIndex: 'customer'
+          },
+          {
+            title: '渚涘簲鍟�',
+            align: 'center',
+            dataIndex: 'supplier'
+          },
+          {
+            title: '閫�璐ф椂闂�',
+            align: 'center',
+            dataIndex: 'stockOutTime'
+          },
+          {
+            title: '閫�璐х悊鐢�',
+            align: 'center',
+            dataIndex: 'stockOutReason'
+          },
+          {
+            title: '鍙戣揣鍗曞彿',
+            align: 'center',
+            dataIndex: 'dispatchedOrderNo'
+          },
+          {
+            title: '鏀惰揣鍦板潃',
+            align: 'center',
+            dataIndex: 'shippingAddress'
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatus',
+            scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return SupplierStockReturnOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0])
+            }
+            return res.data
+          })
+        },
+        orderStatusEnumData: [],
+        infoId:null,
+        infoOrderNo:''
+      }
+    },
+    created () {
+      const orderStatusEnumOption = this.$options
+      this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+    },
+    mounted(){
+      this.getLargeCategoriesOptions()
+    },
+    methods: {
+      onViewDetail(obj){
+        if (this.infoId===obj.id) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      getLargeCategoriesOptions(){
+        SupplierStockReturnOrderLargeCategories().then(d=>{
+          this.selectOptions.largeCategories = d.data || []
+        }).catch(err=>{
+          console.log(err)
+        })
+      },
+      getSubclassOptions(id){
+        SupplierStockReturnOrderSubclass(id).then(d=>{
+          this.selectOptions.subclasses = d.data || []
+          this.queryParam.subclasses = undefined
+        }).catch(err=>{
+          this.clearSubclass()
+          console.log(err)
+        })
+      },
+      onLargeCategorySelect(val){
+        if (val) {
+          this.getSubclassOptions(val)
+        } else {
+          this.clearSubclass()
+        }
+      },
+      clearSubclass(){
+        this.selectOptions.subclasses = []
+        this.queryParam.subclasses = undefined
+      },
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      SupplierStockReturnOrderDelete (record) {
+        SupplierStockReturnOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            if (this.infoId && record.id) {
+              this.infoId = null
+            }
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      infoCallback(){
+        this.$refs.table.refresh()
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/infoBlock.vue
new file mode 100644
index 0000000..c14c2ea
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/infoBlock.vue
@@ -0,0 +1,115 @@
+<template>
+  <div class="supplier-stock-return-order-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <template slot="statusSlots" slot-scope="text,record">
+        <a-tag :color="text==='瀹屾垚'?'#008000':(
+          text==='鎵ц涓�'?'#1e90ff':(
+            text==='鍙栨秷'?'#556b2f':(
+              text==='鏆傚仠'?'#8b0000':(
+                text==='鎾ゅ洖'?'#ff00ff':'gray'
+              )
+            )
+          )
+        )">{{text}}</a-tag>
+      </template>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { SupplierStockReturnOrderDetailPage } from '@/api/modular/main/SupplierStockReturnOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'supplierStockReturnOrderInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+		{ title: '鍩烘湰鍗曚綅', align:'center', dataIndex: 'basicUnit', key: 'basicUnit' },
+        { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.Id = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return SupplierStockReturnOrderDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.supplier-stock-return-order-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/addForm.vue
new file mode 100644
index 0000000..a27693f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/addForm.vue
@@ -0,0 +1,101 @@
+锘�<template>
+  <a-modal
+    title="鏂板绉熸埛琛�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="绠$悊鍛樺悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ鐞嗗憳鍚嶇О" v-decorator="['adminName']" />
+        </a-form-item>
+        <a-form-item label="涓绘満" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ富鏈�" v-decorator="['host']" />
+        </a-form-item>
+        <a-form-item label="鐢靛瓙閭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ數瀛愰偖绠�" v-decorator="['email']" />
+        </a-form-item>
+        <a-form-item label="鐢佃瘽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ數璇�" v-decorator="['phone']" />
+        </a-form-item>
+        <a-form-item label="鏁版嵁搴撹繛鎺�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ暟鎹簱杩炴帴" v-decorator="['connection']" />
+        </a-form-item>
+        <a-form-item label="鏋舵瀯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ灦鏋�" v-decorator="['schema']" />
+        </a-form-item>
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    SysTenantAdd
+  } from '@/api/modular/main/SysTenantManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            SysTenantAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/editForm.vue
new file mode 100644
index 0000000..d3ce765
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/editForm.vue
@@ -0,0 +1,120 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫绉熸埛琛�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="绠$悊鍛樺悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ鐞嗗憳鍚嶇О" v-decorator="['adminName']" />
+        </a-form-item>
+        <a-form-item label="涓绘満" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ富鏈�" v-decorator="['host']" />
+        </a-form-item>
+        <a-form-item label="鐢靛瓙閭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ數瀛愰偖绠�" v-decorator="['email']" />
+        </a-form-item>
+        <a-form-item label="鐢佃瘽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ數璇�" v-decorator="['phone']" />
+        </a-form-item>
+        <a-form-item label="鏁版嵁搴撹繛鎺�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ暟鎹簱杩炴帴" v-decorator="['connection']" />
+        </a-form-item>
+        <a-form-item label="鏋舵瀯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ灦鏋�" v-decorator="['schema']" />
+        </a-form-item>
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    SysTenantEdit
+  } from '@/api/modular/main/SysTenantManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true
+        this.record = record
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              name: record.name,
+              adminName: record.adminName,
+              host: record.host,
+              email: record.email,
+              phone: record.phone,
+              connection: record.connection,
+              schema: record.schema,
+              remark: record.remark
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            SysTenantEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/index.vue
new file mode 100644
index 0000000..d489ab2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/index.vue
@@ -0,0 +1,211 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('SysTenant:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍏徃鍚嶇О">
+                <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ叕鍙稿悕绉�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="绠$悊鍛樺悕绉�">
+                <a-input v-model="queryParam.adminName" allow-clear placeholder="璇疯緭鍏ョ鐞嗗憳鍚嶇О"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="涓绘満">
+                  <a-input v-model="queryParam.host" allow-clear placeholder="璇疯緭鍏ヤ富鏈�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐢靛瓙閭">
+                  <a-input v-model="queryParam.email" allow-clear placeholder="璇疯緭鍏ョ數瀛愰偖绠�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐢佃瘽">
+                  <a-input v-model="queryParam.phone" allow-clear placeholder="璇疯緭鍏ョ數璇�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鏁版嵁搴撹繛鎺�">
+                  <a-input v-model="queryParam.connection" allow-clear placeholder="璇疯緭鍏ユ暟鎹簱杩炴帴"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鏋舵瀯">
+                  <a-input v-model="queryParam.schema" allow-clear placeholder="璇疯緭鍏ユ灦鏋�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="澶囨敞">
+                  <a-input v-model="queryParam.remark" allow-clear placeholder="璇疯緭鍏ュ娉�"/>
+                </a-form-item>
+              </a-col>            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('SysTenant:add')" >
+          <a-button type="primary" v-if="hasPerm('SysTenant:add')" icon="plus" @click="$refs.addForm.add()">鏂板绉熸埛琛�</a-button>
+        </template>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('SysTenant:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('SysTenant:edit') & hasPerm('SysTenant:delete')"/>
+          <a-popconfirm v-if="hasPerm('SysTenant:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => SysTenantDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { SysTenantPage, SysTenantDelete } from '@/api/modular/main/SysTenantManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鍏徃鍚嶇О',
+            align: 'center',
+sorter: true,
+            dataIndex: 'name'
+          },
+          {
+            title: '绠$悊鍛樺悕绉�',
+            align: 'center',
+sorter: true,
+            dataIndex: 'adminName'
+          },
+          {
+            title: '涓绘満',
+            align: 'center',
+sorter: true,
+            dataIndex: 'host'
+          },
+          {
+            title: '鐢靛瓙閭',
+            align: 'center',
+sorter: true,
+            dataIndex: 'email'
+          },
+          {
+            title: '鐢佃瘽',
+            align: 'center',
+sorter: true,
+            dataIndex: 'phone'
+          },
+          {
+            title: '鏁版嵁搴撹繛鎺�',
+            align: 'center',
+sorter: true,
+            dataIndex: 'connection'
+          },
+          {
+            title: '鏋舵瀯',
+            align: 'center',
+sorter: true,
+            dataIndex: 'schema'
+          },
+          {
+            title: '澶囨敞',
+            align: 'center',
+sorter: true,
+            dataIndex: 'remark'
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return SysTenantPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      if (this.hasPerm('SysTenant:edit') || this.hasPerm('SysTenant:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      SysTenantDelete (record) {
+        SysTenantDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/addForm.vue
new file mode 100644
index 0000000..452cd65
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/addForm.vue
@@ -0,0 +1,105 @@
+锘�<template>
+  <a-modal
+    title="鏂板瀛︾敓淇℃伅琛�1-閭甸暱绁�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age', {rules: [{required: true, message: '璇疯緭鍏ュ鐢熷勾榫勶紒'}]}]" />
+        </a-form-item>
+        <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['startName',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁鍦ㄦ牎锛�' }], valuePropName: 'checked'}]" />
+        </a-form-item>
+        <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender', {rules: [{ required: true, message: '璇烽�夋嫨鎬у埆锛�' }]}]">
+            <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate',{rules: [{ required: true, message: '璇烽�夋嫨鍑虹敓鏃ユ湡锛�' }]}]" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鍏宠仈鑰佸笀" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叧鑱旇�佸笀" v-decorator="['teacherId']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+  TestStudentAdd
+  } from '@/api/modular/main/TestDemo/TestStudentManage'
+  export default {
+  data () {
+  return {
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  genderData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const genderOption = this.$options
+        this.genderData = genderOption.filters['dictData']('sex')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            TestStudentAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/editForm.vue
new file mode 100644
index 0000000..2961520
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/editForm.vue
@@ -0,0 +1,124 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫瀛︾敓淇℃伅琛�1-閭甸暱绁�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age', {rules: [{required: true, message: '璇疯緭鍏ュ鐢熷勾榫勶紒'}]}]" />
+        </a-form-item>
+        <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['startName',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁鍦ㄦ牎锛�' }], valuePropName: 'checked'}]" />
+        </a-form-item>
+        <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender', {rules: [{ required: true, message: '璇烽�夋嫨鎬у埆锛�' }]}]">
+            <a-select-option v-for="(item,index) in genderData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate',{rules: [{ required: true, message: '璇烽�夋嫨鍑虹敓鏃ユ湡锛�' }]}]" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鍏宠仈鑰佸笀" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叧鑱旇�佸笀" v-decorator="['teacherId']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+  import {
+  TestStudentEdit
+  } from '@/api/modular/main/TestDemo/TestStudentManage'
+  export default {
+  data () {
+  return {
+  Id: 0,
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  record: {},
+  genderData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const genderOption = this.$options
+        this.genderData = genderOption.filters['dictData']('sex')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              name: record.name,
+              age: record.age,
+              startName: record.startName,
+              gender: record.gender,
+              brithDate: record.brithDate,
+              teacherId: record.teacherId
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            TestStudentEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/excelForm.vue
new file mode 100644
index 0000000..8387e8d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <!--<a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>-->
+      </a-row>
+      <a-row :span="24">
+        <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>-->
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="testStudentDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+  import { TestStudentImportExcel, TestStudentDownloadExcelTemplate} from '@/api/modular/main/TestDemo/TestStudentManage'
+  import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+  export default {
+  components: {
+  },
+  data() {
+  return {
+  visible: false,
+  detailed: false,
+  confirmLoading: false,
+  fileList: [],
+  importExcelTypeData: [],
+  importExcelType: '1',
+  uploadFile: null,
+  columns: [],
+  dataList: [],
+  demandText:'',
+  columnText: ''
+  }
+  },
+  methods: {
+  index() {
+  this.visible = true;
+  this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+  this.demandText = parseDemandText("testStudentDownloadExcelTemplate")
+  window.downloadFile = this.testStudentDownloadExcelTemplate;
+  this.getTable();
+  },
+  showDemand() {
+  this.detailed = !this.detailed;
+  },
+  customRequest(document) {
+  this.uploadFile = document
+  },
+  getTable() {
+  sysExcelTemplateGetColumnList({className: "TestStudent"}).then(res =>
+  {
+  if (res.success) {
+  this.columns =[];
+  this.dataList = [{}];
+  res.data.forEach(x => {
+  this.columns.push({
+  dataIndex: x.columnName,
+  key: x.columnName,
+  title: x.columnComment
+  });
+  this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+  });
+  this.columnText = parseExcelFieldText(res.data);
+  }
+  });
+  },
+  beforeUpload(fileInfo) {
+  let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+  if (!res.success) {
+  this.$message.warning(res.msg)
+  return false
+  }
+  setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+  },
+  handleChange(fileInfo) {
+  if (fileInfo.file.status === 'error') {
+  fileInfo.fileList.splice(0, 1)
+  }
+  if (fileInfo.file.status === 'done') {
+  if (fileInfo.fileList.length > 1) {
+  fileInfo.fileList.splice(0, 1)
+  }
+  this.fileList = fileInfo.file
+  }
+  },
+  handleSubmit() {
+  this.confirmLoading = true
+  const formData = new FormData()
+  formData.append('file', this.uploadFile.file)
+  TestStudentImportExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+  this.$message.success('鎿嶄綔鎴愬姛')
+  this.confirmLoading = false
+  this.$emit('ok', [])
+  this.handleCancel()
+  }).finally((res)=>{this.confirmLoading = false})
+  },
+  handleCancel() {
+  this.visible = false
+  this.detailed = false
+  },
+  testStudentDownloadExcelTemplate() {
+  TestStudentDownloadExcelTemplate({version: "v2"}).then((res) => {
+  downloadFile(res);
+  }).catch((err) => {
+  this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+  })
+  }
+  }
+  }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/index.vue
new file mode 100644
index 0000000..2a44b2a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/index.vue
@@ -0,0 +1,528 @@
+锘�<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+	<div ref="boxForm" class="boxForm">  
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('TestStudent:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瀛︾敓濮撳悕">
+                <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ鐢熷鍚�"/>
+              </a-form-item>
+            </a-col><a-col :md="8" :sm="24">
+              <a-form-item label="瀛︾敓骞撮緞">
+                <a-input-number v-model="queryParam.age" style="width: 100%" allow-clear placeholder="璇疯緭鍏ュ鐢熷勾榫�"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+			<a-col :md="8" :sm="24">
+				<a-form-item label="鏄惁鍦ㄦ牎">
+					<a-select :allowClear="true" style="width: 100%" v-model="queryParam.startName" placeholder="璇烽�夋嫨鏄惁鍦ㄦ牎">
+						<a-select-option v-for="(item,index) in startNameData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+					</a-select>
+				</a-form-item>
+			</a-col>
+		<a-col :md="8" :sm="24">
+                <a-form-item label="鎬у埆">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.gender" placeholder="璇烽�夋嫨鎬у埆">
+                    <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>          <!--骞存湀鏃ユ椂鍒嗙-->
+			<!--鏃堕棿鑼冨洿-->
+
+				<a-col :md="8" :sm="24">
+					<a-form-item label="鍑虹敓鏃ユ湡">
+						<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.brithDate"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @change="onChangebrithDate"/>
+
+					</a-form-item>
+				</a-col>
+			
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍏宠仈鑰佸笀">
+                  <a-input v-model="queryParam.teacherId" allow-clear placeholder="璇疯緭鍏ュ叧鑱旇�佸笀"/>
+                </a-form-item>
+              </a-col>          <!--骞存湀鏃ユ椂鍒嗙-->
+			<!--鏃堕棿鑼冨洿-->
+
+				<a-col :md="8" :sm="24">
+					<a-form-item label="鍒涘缓鏃堕棿">
+						<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.createdTime"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @change="onChangecreatedTime"/>
+
+					</a-form-item>
+				</a-col>
+			          <!--骞存湀鏃ユ椂鍒嗙-->
+			<!--鏃堕棿鑼冨洿-->
+
+				<a-col :md="8" :sm="24">
+					<a-form-item label="鏇存柊鏃堕棿">
+						<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.updatedTime"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @change="onChangeupdatedTime"/>
+
+					</a-form-item>
+				</a-col>
+			
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍒涘缓鑰呭悕绉�">
+                  <a-input v-model="queryParam.createdUserName" allow-clear placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="淇敼鑰呭悕绉�">
+                  <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�"/>
+                </a-form-item>
+              </a-col>	</template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+	</div>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+		@changeTablePage="pageInfo = $event"
+		:scroll="{x: true,y:tableHeight}"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('TestStudent:add')" >
+		<div ref="actionBar" class="actionBar">
+			<a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('TestStudent:exportExcel')" icon="download" @click="TestStudentToExcel()">
+            瀵煎嚭
+          </a-button>
+			<a-button type="primary" v-if="hasPerm('TestStudent:add')" icon="plus" @click="$refs.addForm.add()">鏂板瀛︾敓淇℃伅琛�1-閭甸暱绁�</a-button>
+		</div>
+		</template>
+		  <span slot="startNamescopedSlots" slot-scope="text">
+			<div v-if="text===true ">
+				<a-tag color="green">鏄�</a-tag>
+			</div>
+			<div v-else-if="text==false">
+				<a-tag color="volcano">鍚�</a-tag>
+			</div>
+			<div v-else=""></div>
+			</span>
+		  <span slot="genderscopedSlots" slot-scope="text">
+			{{ 'sex' | dictType(text) }}
+			</span>
+		  <span slot="action" slot-scope="text, record">
+			
+			<a v-if="hasPerm('TestStudent:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('TestStudent:edit') & hasPerm('TestStudent:delete')"/>
+          <a-popconfirm v-if="hasPerm('TestStudent:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => TestStudentDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+	  <excel-form ref="excelForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+	import { STable } from '@/components'
+	import moment from 'moment'
+	import { TestStudentPage, TestStudentDelete, TestStudentToExcel } from '@/api/modular/main/TestDemo/TestStudentManage'
+	//鑷畾涔塼able楂樺害
+	import setTableHtMixin from '@/mixins/handleTableHt.js'
+	import addForm from './addForm.vue'
+	import { exportExcel } from '@/utils/exportToExcel'
+	import { downloadFile } from '@/utils/util'
+	import editForm from './editForm.vue'
+	import excelForm from './excelForm.vue'
+	export default {
+	mixins: [setTableHtMixin],
+	components: {
+	STable,
+	addForm,
+	editForm,
+	excelForm
+	},
+	data () {
+	return {
+	advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+	queryParam: {},
+	 pageInfo: {
+        current: 1,
+        pageSize: 10
+      },
+	columns: [
+	{
+	title:'搴忓彿',
+	width: '60px',
+	align: 'center',
+	customRender: (text, record, index) => `${index + 1 + (this.pageInfo.current - 1) * this.pageInfo.pageSize}`
+	},
+	{
+	title: '瀛︾敓濮撳悕',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'name'
+	},
+	{
+	title: '瀛︾敓骞撮緞',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '80px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '80px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'age'
+	},
+	{
+	title: '鏄惁鍦ㄦ牎',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'startName',
+	scopedSlots: { customRender: 'startNamescopedSlots' }
+	},
+	{
+	title: '鎬у埆',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'gender',
+	scopedSlots: { customRender: 'genderscopedSlots' }
+	},
+	{
+	title: '鍑虹敓鏃ユ湡',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'brithDate'
+	},
+	{
+	title: '鍏宠仈鑰佸笀',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'teacherId'
+	},
+	{
+	title: '鍒涘缓鏃堕棿',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'createdTime'
+	},
+	{
+	title: '鏇存柊鏃堕棿',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'updatedTime'
+	},
+	{
+	title: '鍒涘缓鑰呭悕绉�',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'createdUserName'
+	},
+	{
+	title: '淇敼鑰呭悕绉�',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'updatedUserName'
+	}
+	],
+	tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+	// 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+	loadData: parameter => {
+	return TestStudentPage(Object.assign(parameter, this.switchingDate())).then((res) => {
+	return res.data
+	})
+	},
+        genderData: [],
+	selectedRowKeys: [],
+	selectedRows: []
+	}
+	},
+	created () {
+	if (this.hasPerm('TestStudent:edit') || this.hasPerm('TestStudent:delete')) {
+	this.columns.push({
+	title: '鎿嶄綔',
+	width: '150px',
+	dataIndex: 'action',
+	scopedSlots: { customRender: 'action' }
+	})
+	}
+	const path = this.$route.path
+	const columnStr = window.localStorage.getItem(path)
+	if(columnStr) {
+	var _columns = JSON.parse(columnStr)
+	this.columns.forEach(element => {
+	var fObj = _columns.find((item, index) => {
+	return item.dataIndex === element.dataIndex;
+	})
+	if(fObj!=undefined && fObj!=null){
+	element.checked=fObj.checked;
+	}
+	});
+	}
+	const startNameOption = this.$options
+	this.startNameData = startNameOption.filters['dictData']('yes_true_false')
+	const genderOption = this.$options
+	this.genderData = genderOption.filters['dictData']('sex')
+
+	this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+	window.addEventListener(
+	'resize',
+	() => {
+	this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+	},
+	false
+	)
+	
+	},
+	methods: {
+	moment,
+	/**
+	* 鏌ヨ鍙傛暟缁勮
+	*/
+	switchingDate () {
+	const obj = JSON.parse(JSON.stringify(this.queryParam))
+	return obj
+	},
+	TestStudentDelete (record) {
+	TestStudentDelete(record).then((res) => {
+	if (res.success) {
+	this.$message.success('鍒犻櫎鎴愬姛')
+	this.$refs.table.refresh()
+	} else {
+	this.$message.error('鍒犻櫎澶辫触') // + res.message
+	}
+	})
+	},
+
+
+	TestStudentToExcel() {
+	this.loading = true
+	let entozh = {};
+	const path = this.$route.path;
+	if (window.localStorage.getItem(path)) {
+	JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+	if (item.dataIndex != 'action' && item.checked) {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	} else { //鐩存帴鐐瑰鍑�
+	this.columns.forEach(item => {
+	if (item.dataIndex != 'action') {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	}
+	TestStudentPage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+	this.loading = false;
+	//闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+	var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+	res.data.rows.forEach(item => {
+	var arrKeys = Object.keys(item);
+	arrKeys.forEach(key => {
+	var strFieldDic = key + 'Data';
+	//鏋氫妇杞��
+	if (this[strFieldDic] && this[strFieldDic].length > 0) {
+	let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+	if (arrFieldDic.length > 0) {
+	item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+	}
+	}
+	// 鏃ユ湡鎴彇
+	if (arrDataCutout.length > 0) {
+	arrDataCutout.forEach(itemIn => {
+	if (key == itemIn.dataIndex && item[key]) {
+	item[key] = item[key].split(" ")[0]
+	}
+	})
+	}
+	});
+	})
+	exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+	}).catch((err) => {
+	this.loading = false
+	this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+	})
+	},
+
+
+	toggleAdvanced () {
+	this.advanced = !this.advanced
+	this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+	},
+	onChangebrithDate(date, dateString) {
+	  this.queryParam.brithDate = dateString
+	},
+	onChangecreatedTime(date, dateString) {
+	  this.queryParam.createdTime = dateString
+	},
+	onChangeupdatedTime(date, dateString) {
+	  this.queryParam.updatedTime = dateString
+	},
+	handleOk () {
+	this.$refs.table.refresh()
+	},
+	onSelectChange (selectedRowKeys, selectedRows) {
+	this.selectedRowKeys = selectedRowKeys
+	this.selectedRows = selectedRows
+	}
+	}
+	}
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/addForm.vue
new file mode 100644
index 0000000..e1e8782
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/addForm.vue
@@ -0,0 +1,105 @@
+锘�<template>
+  <a-modal
+    title="鏂板瀛︾敓淇℃伅"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+        </a-form-item>
+        <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+        </a-form-item>
+        <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender', {rules: [{ required: true, message: '璇烽�夋嫨鎬у埆锛�' }]}]">
+            <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+  TestStudent2Add
+  } from '@/api/modular/main/TestDemo/TestStudent2Manage'
+  export default {
+  data () {
+  return {
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  genderData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const genderOption = this.$options
+        this.genderData = genderOption.filters['dictData']('sex')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            TestStudent2Add(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/editForm.vue
new file mode 100644
index 0000000..7509fbd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/editForm.vue
@@ -0,0 +1,124 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫瀛︾敓淇℃伅"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+        </a-form-item>
+        <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+        </a-form-item>
+        <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender', {rules: [{ required: true, message: '璇烽�夋嫨鎬у埆锛�' }]}]">
+            <a-select-option v-for="(item,index) in genderData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+  import {
+  TestStudent2Edit
+  } from '@/api/modular/main/TestDemo/TestStudent2Manage'
+  export default {
+  data () {
+  return {
+  Id: 0,
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  record: {},
+  genderData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const genderOption = this.$options
+        this.genderData = genderOption.filters['dictData']('sex')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              name: record.name,
+              age: record.age,
+              hasMoney: record.hasMoney,
+              startName: record.startName,
+              gender: record.gender,
+              brithDate: record.brithDate
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            TestStudent2Edit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/excelForm.vue
new file mode 100644
index 0000000..5c45730
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="testStudent2DownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+  import { TestStudent2FromExcel, TestStudent2DownloadExcelTemplate} from '@/api/modular/main/TestDemo/TestStudent2Manage'
+  import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+  export default {
+  components: {
+  },
+  data() {
+  return {
+  visible: false,
+  detailed: false,
+  confirmLoading: false,
+  fileList: [],
+  importExcelTypeData: [],
+  importExcelType: '1',
+  uploadFile: null,
+  columns: [],
+  dataList: [],
+  demandText:'',
+  columnText: ''
+  }
+  },
+  methods: {
+  index() {
+  this.visible = true;
+  this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+  this.demandText = parseDemandText("testStudent2DownloadExcelTemplate")
+  window.downloadFile = this.testStudent2DownloadExcelTemplate;
+  this.getTable();
+  },
+  showDemand() {
+  this.detailed = !this.detailed;
+  },
+  customRequest(document) {
+  this.uploadFile = document
+  },
+  getTable() {
+  sysExcelTemplateGetColumnList({className: "TestStudent2"}).then(res =>
+  {
+  if (res.success) {
+  this.columns =[];
+  this.dataList = [{}];
+  res.data.forEach(x => {
+  this.columns.push({
+  dataIndex: x.columnName,
+  key: x.columnName,
+  title: x.columnComment
+  });
+  this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+  });
+  this.columnText = parseExcelFieldText(res.data);
+  }
+  });
+  },
+  beforeUpload(fileInfo) {
+  let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+  if (!res.success) {
+  this.$message.warning(res.msg)
+  return false
+  }
+  setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+  },
+  handleChange(fileInfo) {
+  if (fileInfo.file.status === 'error') {
+  fileInfo.fileList.splice(0, 1)
+  }
+  if (fileInfo.file.status === 'done') {
+  if (fileInfo.fileList.length > 1) {
+  fileInfo.fileList.splice(0, 1)
+  }
+  this.fileList = fileInfo.file
+  }
+  },
+  handleSubmit() {
+  this.confirmLoading = true
+  const formData = new FormData()
+  formData.append('file', this.uploadFile.file)
+  testStudent2FromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+  this.$message.success('鎿嶄綔鎴愬姛')
+  this.confirmLoading = false
+  this.$emit('ok', [])
+  this.handleCancel()
+  }).finally((res)=>{this.confirmLoading = false})
+  },
+  handleCancel() {
+  this.visible = false
+  this.detailed = false
+  },
+  testStudent2DownloadExcelTemplate() {
+  testStudent2DownloadExcelTemplate({version: "v2"}).then((res) => {
+  downloadFile(res);
+  }).catch((err) => {
+  this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+  })
+  }
+  }
+  }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/index.vue
new file mode 100644
index 0000000..9795961
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/index.vue
@@ -0,0 +1,282 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('TestStudent2:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瀛︾敓濮撳悕">
+                <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ鐢熷鍚�"/>
+              </a-form-item>
+            </a-col><a-col :md="8" :sm="24">
+              <a-form-item label="瀛︾敓骞撮緞">
+                <a-input-number v-model="queryParam.age" style="width: 100%" allow-clear placeholder="璇疯緭鍏ュ鐢熷勾榫�"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="闆惰姳閽�">
+                  <a-input v-model="queryParam.hasMoney" allow-clear placeholder="璇疯緭鍏ラ浂鑺遍挶"/>
+                </a-form-item>
+              </a-col>
+			<a-col :md="8" :sm="24">
+				<a-form-item label="鏄惁鍦ㄦ牎">
+					<a-select :allowClear="true" style="width: 100%" v-model="queryParam.startName" placeholder="璇烽�夋嫨鏄惁鍦ㄦ牎">
+						<a-select-option v-for="(item,index) in startNameData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+					</a-select>
+				</a-form-item>
+			</a-col>
+		<a-col :md="8" :sm="24">
+                <a-form-item label="鎬у埆">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.gender" placeholder="璇烽�夋嫨鎬у埆">
+                    <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>          <!--骞存湀鏃ユ椂鍒嗙-->
+			<!--鏃堕棿鑼冨洿-->
+
+				<a-col :md="8" :sm="24">
+					<a-form-item label="鍑虹敓鏃ユ湡">
+						<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.brithDate"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @change="onChangebrithDate"/>
+
+					</a-form-item>
+				</a-col>
+				</template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+		:scroll="{x: true}"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('TestStudent2:add')" >
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('TestStudent2:exportExcel')" icon="download" @click="TestStudent2ToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('TestStudent2:add')" icon="plus" @click="$refs.addForm.add()">鏂板瀛︾敓淇℃伅</a-button>
+        </template>
+		  <span slot="startNamescopedSlots" slot-scope="text">
+			<div v-if="text===true ">
+				<a-tag color="green">鏄�</a-tag>
+			</div>
+			<div v-else-if="text==false">
+				<a-tag color="volcano">鍚�</a-tag>
+			</div>
+			<div v-else=""></div>
+			</span>
+		  <span slot="genderscopedSlots" slot-scope="text">
+			{{ 'sex' | dictType(text) }}
+			</span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('TestStudent2:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('TestStudent2:edit') & hasPerm('TestStudent2:delete')"/>
+          <a-popconfirm v-if="hasPerm('TestStudent2:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => TestStudent2Delete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+	import { STable } from '@/components'
+	import moment from 'moment'
+	import { TestStudent2Page, TestStudent2Delete, TestStudent2ToExcel } from '@/api/modular/main/TestDemo/TestStudent2Manage'
+	import addForm from './addForm.vue'
+	import { exportExcel } from '@/utils/exportToExcel'
+	import { downloadFile } from '@/utils/util'
+	import editForm from './editForm.vue'
+	export default {
+	components: {
+	STable,
+	addForm,
+	editForm
+	},
+	data () {
+	return {
+	advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+	queryParam: {},
+	columns: [
+	{
+	title: '瀛︾敓濮撳悕',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'name'
+	},
+	{
+	title: '瀛︾敓骞撮緞',
+	align: 'center',
+	width:'80px',
+	sorter: true,
+	dataIndex: 'age'
+	},
+	{
+	title: '闆惰姳閽�',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'hasMoney'
+	},
+	{
+	title: '鏄惁鍦ㄦ牎',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'startName',
+	scopedSlots: { customRender: 'startNamescopedSlots' }
+	},
+	{
+	title: '鎬у埆',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'gender',
+	scopedSlots: { customRender: 'genderscopedSlots' }
+	},
+	{
+	title: '鍑虹敓鏃ユ湡',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'brithDate'
+	}
+	],
+	tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+	// 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+	loadData: parameter => {
+	return TestStudent2Page(Object.assign(parameter, this.switchingDate())).then((res) => {
+	return res.data
+	})
+	},
+        genderData: [],
+	selectedRowKeys: [],
+	selectedRows: []
+	}
+	},
+	created () {
+	const path = this.$route.path
+	const columnStr = window.localStorage.getItem(path)
+	if(columnStr) {
+	var _columns = JSON.parse(columnStr)
+	this.columns.forEach(element => {
+	var fObj = _columns.find((item, index) => {
+	return item.dataIndex === element.dataIndex;
+	})
+	if(fObj!=undefined && fObj!=null){
+	element.checked=fObj.checked;
+	}
+	});
+	}
+	const startNameOption = this.$options
+	this.startNameData = startNameOption.filters['dictData']('yes_true_false')
+	const genderOption = this.$options
+	this.genderData = genderOption.filters['dictData']('sex')
+	},
+	methods: {
+	moment,
+	/**
+	* 鏌ヨ鍙傛暟缁勮
+	*/
+	switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      TestStudent2Delete (record) {
+        TestStudent2Delete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+	  
+
+TestStudent2ToExcel() {
+        this.loading = true
+	    let entozh = {};
+        const path = this.$route.path;
+        if (window.localStorage.getItem(path)) {
+            JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+                if (item.dataIndex != 'action' && item.checked) {
+                    entozh[item.dataIndex] = item.title
+                }
+            })
+        } else { //鐩存帴鐐瑰鍑�
+            this.columns.forEach(item => {
+                if (item.dataIndex != 'action') {
+                    entozh[item.dataIndex] = item.title
+                }
+            })
+        }
+		 TestStudent2Page(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {		
+			this.loading = false;
+     		res.data.rows.forEach(item => {
+				var arr1 = Object.keys(item);
+				arr1.forEach(key => {
+					var str1 = key+'Data';
+					if(this[str1]&&this[str1].length>0){
+  let s1 = this[str1].filter(v => String(v.code)  == String(item[key]) );
+  if(s1.length>0){
+  item[key] = s1[0]?.name || '娌℃湁鏋氫妇鍊�';
+  }
+  }
+  })
+  })
+  exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+  }).catch((err) => {
+  this.loading = false
+  this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+  })
+  },
+
+
+  toggleAdvanced () {
+  this.advanced = !this.advanced
+  },
+  onChangebrithDate(date, dateString) {
+    this.queryParam.brithDate = dateString
+  },
+  handleOk () {
+  this.$refs.table.refresh()
+  },
+  onSelectChange (selectedRowKeys, selectedRows) {
+  this.selectedRowKeys = selectedRowKeys
+  this.selectedRows = selectedRows
+  }
+  }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/addForm.vue
new file mode 100644
index 0000000..79225a2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/addForm.vue
@@ -0,0 +1,117 @@
+锘�<template>
+  <a-modal
+    title="鏂板瀛︾敓淇℃伅琛�3-鍒樻枃濂�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ鐢熷鍚嶏紒'}]}]" />
+        </a-form-item>
+        <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+        </a-form-item>
+        <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+        </a-form-item>
+        <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+            <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鍒涘缓鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" v-decorator="['createdTime']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鏇存柊鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏇存柊鏃堕棿" v-decorator="['updatedTime']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鍒涘缓鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�" v-decorator="['createdUserName']" />
+        </a-form-item>
+        <a-form-item label="淇敼鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�" v-decorator="['updatedUserName']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+  TestStudent3Add
+  } from '@/api/modular/main/TestDemo/TestStudent3Manage'
+  export default {
+  data () {
+  return {
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  genderData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const genderOption = this.$options
+        this.genderData = genderOption.filters['dictData']('sex')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            TestStudent3Add(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/editForm.vue
new file mode 100644
index 0000000..50cda26
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/editForm.vue
@@ -0,0 +1,140 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫瀛︾敓淇℃伅琛�3-鍒樻枃濂�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ鐢熷鍚嶏紒'}]}]" />
+        </a-form-item>
+        <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+        </a-form-item>
+        <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+        </a-form-item>
+        <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+            <a-select-option v-for="(item,index) in genderData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+        <a-form-item label="鍒涘缓鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" v-decorator="['createdTime']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鏇存柊鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏇存柊鏃堕棿" v-decorator="['updatedTime']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鍒涘缓鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�" v-decorator="['createdUserName']" />
+        </a-form-item>
+        <a-form-item label="淇敼鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�" v-decorator="['updatedUserName']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+  import {
+  TestStudent3Edit
+  } from '@/api/modular/main/TestDemo/TestStudent3Manage'
+  export default {
+  data () {
+  return {
+  Id: 0,
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  record: {},
+  genderData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const genderOption = this.$options
+        this.genderData = genderOption.filters['dictData']('sex')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              name: record.name,
+              age: record.age,
+              hasMoney: record.hasMoney,
+              startName: record.startName,
+              gender: record.gender,
+              brithDate: record.brithDate,
+              createdTime: record.createdTime,
+              updatedTime: record.updatedTime,
+              createdUserName: record.createdUserName,
+              updatedUserName: record.updatedUserName
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            TestStudent3Edit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/excelForm.vue
new file mode 100644
index 0000000..1a5d277
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <!--<a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>-->
+      </a-row>
+      <a-row :span="24">
+        <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>-->
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="testStudent3DownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+  import { TestStudent3ImportExcel, TestStudent3DownloadExcelTemplate} from '@/api/modular/main/TestDemo/TestStudent3Manage'
+  import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+  export default {
+  components: {
+  },
+  data() {
+  return {
+  visible: false,
+  detailed: false,
+  confirmLoading: false,
+  fileList: [],
+  importExcelTypeData: [],
+  importExcelType: '1',
+  uploadFile: null,
+  columns: [],
+  dataList: [],
+  demandText:'',
+  columnText: ''
+  }
+  },
+  methods: {
+  index() {
+  this.visible = true;
+  this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+  this.demandText = parseDemandText("testStudent3DownloadExcelTemplate")
+  window.downloadFile = this.testStudent3DownloadExcelTemplate;
+  this.getTable();
+  },
+  showDemand() {
+  this.detailed = !this.detailed;
+  },
+  customRequest(document) {
+  this.uploadFile = document
+  },
+  getTable() {
+  sysExcelTemplateGetColumnList({className: "TestStudent3"}).then(res =>
+  {
+  if (res.success) {
+  this.columns =[];
+  this.dataList = [{}];
+  res.data.forEach(x => {
+  this.columns.push({
+  dataIndex: x.columnName,
+  key: x.columnName,
+  title: x.columnComment
+  });
+  this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+  });
+  this.columnText = parseExcelFieldText(res.data);
+  }
+  });
+  },
+  beforeUpload(fileInfo) {
+  let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+  if (!res.success) {
+  this.$message.warning(res.msg)
+  return false
+  }
+  setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+  },
+  handleChange(fileInfo) {
+  if (fileInfo.file.status === 'error') {
+  fileInfo.fileList.splice(0, 1)
+  }
+  if (fileInfo.file.status === 'done') {
+  if (fileInfo.fileList.length > 1) {
+  fileInfo.fileList.splice(0, 1)
+  }
+  this.fileList = fileInfo.file
+  }
+  },
+  handleSubmit() {
+  this.confirmLoading = true
+  const formData = new FormData()
+  formData.append('file', this.uploadFile.file)
+  TestStudent3ImportExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+  this.$message.success('鎿嶄綔鎴愬姛')
+  this.confirmLoading = false
+  this.$emit('ok', [])
+  this.handleCancel()
+  }).finally((res)=>{this.confirmLoading = false})
+  },
+  handleCancel() {
+  this.visible = false
+  this.detailed = false
+  },
+  testStudent3DownloadExcelTemplate() {
+  TestStudent3DownloadExcelTemplate({version: "v2"}).then((res) => {
+  downloadFile(res);
+  }).catch((err) => {
+  this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+  })
+  }
+  }
+  }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/index.vue
new file mode 100644
index 0000000..616c050
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/index.vue
@@ -0,0 +1,508 @@
+锘�<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+	<div ref="boxForm" class="boxForm">  
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('TestStudent3:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瀛︾敓濮撳悕">
+                <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ鐢熷鍚�"/>
+              </a-form-item>
+            </a-col><a-col :md="8" :sm="24">
+              <a-form-item label="瀛︾敓骞撮緞">
+                <a-input-number v-model="queryParam.age" style="width: 100%" allow-clear placeholder="璇疯緭鍏ュ鐢熷勾榫�"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="闆惰姳閽�">
+                  <a-input v-model="queryParam.hasMoney" allow-clear placeholder="璇疯緭鍏ラ浂鑺遍挶"/>
+                </a-form-item>
+              </a-col>
+			<a-col :md="8" :sm="24">
+				<a-form-item label="鏄惁鍦ㄦ牎">
+					<a-select :allowClear="true" style="width: 100%" v-model="queryParam.startName" placeholder="璇烽�夋嫨鏄惁鍦ㄦ牎">
+						<a-select-option v-for="(item,index) in startNameData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+					</a-select>
+				</a-form-item>
+			</a-col>
+		<a-col :md="8" :sm="24">
+                <a-form-item label="鎬у埆">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.gender" placeholder="璇烽�夋嫨鎬у埆">
+                    <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>          <!--骞存湀鏃ユ椂鍒嗙-->
+			<!--鏃堕棿鑼冨洿-->
+
+				<a-col :md="8" :sm="24">
+					<a-form-item label="鍑虹敓鏃ユ湡">
+						<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.brithDate"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @change="onChangebrithDate"/>
+
+					</a-form-item>
+				</a-col>
+			          <!--骞存湀鏃ユ椂鍒嗙-->
+			<!--鏃堕棿鑼冨洿-->
+
+				<a-col :md="8" :sm="24">
+					<a-form-item label="鍒涘缓鏃堕棿">
+						<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.createdTime"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @change="onChangecreatedTime"/>
+
+					</a-form-item>
+				</a-col>
+			          <!--骞存湀鏃ユ椂鍒嗙-->
+			<!--鏃堕棿鑼冨洿-->
+
+				<a-col :md="8" :sm="24">
+					<a-form-item label="鏇存柊鏃堕棿">
+						<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.updatedTime"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @change="onChangeupdatedTime"/>
+
+					</a-form-item>
+				</a-col>
+			
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍒涘缓鑰呭悕绉�">
+                  <a-input v-model="queryParam.createdUserName" allow-clear placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="淇敼鑰呭悕绉�">
+                  <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�"/>
+                </a-form-item>
+              </a-col>	</template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+	</div>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+		@changeTablePage="pageInfo = $event"
+		:scroll="{x: true,y:tableHeight}"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('TestStudent3:add')" >
+		<div ref="actionBar" class="actionBar">
+          <a-button type="info" v-if="hasPerm('TestStudent3:exportExcel')" icon="download" @click="TestStudent3ToExcel()">
+            瀵煎嚭
+          </a-button>
+		</div>
+		</template>
+		  <span slot="startNamescopedSlots" slot-scope="text">
+			<div v-if="text===true ">
+				<a-tag color="green">鏄�</a-tag>
+			</div>
+			<div v-else-if="text==false">
+				<a-tag color="volcano">鍚�</a-tag>
+			</div>
+			<div v-else=""></div>
+			</span>
+		  <span slot="genderscopedSlots" slot-scope="text">
+			{{ 'sex' | dictType(text) }}
+			</span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+	  <excel-form ref="excelForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+	import { STable } from '@/components'
+	import moment from 'moment'
+	import { TestStudent3Page, TestStudent3Delete, TestStudent3ToExcel } from '@/api/modular/main/TestDemo/TestStudent3Manage'
+	//鑷畾涔塼able楂樺害
+	import setTableHtMixin from '@/mixins/handleTableHt.js'
+	import addForm from './addForm.vue'
+	import { exportExcel } from '@/utils/exportToExcel'
+	import { downloadFile } from '@/utils/util'
+	import editForm from './editForm.vue'
+	import excelForm from './excelForm.vue'
+	export default {
+	mixins: [setTableHtMixin],
+	components: {
+	STable,
+	addForm,
+	editForm,
+	excelForm
+	},
+	data () {
+	return {
+	advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+	queryParam: {},
+	 pageInfo: {
+        current: 1,
+        pageSize: 10
+      },
+	columns: [
+	{
+	title:'搴忓彿',
+	width: '60px',
+	align: 'center',
+	customRender: (text, record, index) => `${index + 1 + (this.pageInfo.current - 1) * this.pageInfo.pageSize}`
+	},
+	{
+	title: '瀛︾敓濮撳悕',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'name'
+	},
+	{
+	title: '瀛︾敓骞撮緞',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '80px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '80px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'age'
+	},
+	{
+	title: '闆惰姳閽�',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'hasMoney'
+	},
+	{
+	title: '鏄惁鍦ㄦ牎',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'startName',
+	scopedSlots: { customRender: 'startNamescopedSlots' }
+	},
+	{
+	title: '鎬у埆',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'gender',
+	scopedSlots: { customRender: 'genderscopedSlots' }
+	},
+	{
+	title: '鍑虹敓鏃ユ湡',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'brithDate'
+	},
+	{
+	title: '鍒涘缓鏃堕棿',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'createdTime'
+	},
+	{
+	title: '鏇存柊鏃堕棿',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'updatedTime'
+	},
+	{
+	title: '鍒涘缓鑰呭悕绉�',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'createdUserName'
+	},
+	{
+	title: '淇敼鑰呭悕绉�',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'updatedUserName'
+	}
+	],
+	tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+	// 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+	loadData: parameter => {
+	return TestStudent3Page(Object.assign(parameter, this.switchingDate())).then((res) => {
+	return res.data
+	})
+	},
+        genderData: [],
+	selectedRowKeys: [],
+	selectedRows: []
+	}
+	},
+	created () {
+	const path = this.$route.path
+	const columnStr = window.localStorage.getItem(path)
+	if(columnStr) {
+	var _columns = JSON.parse(columnStr)
+	this.columns.forEach(element => {
+	var fObj = _columns.find((item, index) => {
+	return item.dataIndex === element.dataIndex;
+	})
+	if(fObj!=undefined && fObj!=null){
+	element.checked=fObj.checked;
+	}
+	});
+	}
+	const startNameOption = this.$options
+	this.startNameData = startNameOption.filters['dictData']('yes_true_false')
+	const genderOption = this.$options
+	this.genderData = genderOption.filters['dictData']('sex')
+
+	this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+	window.addEventListener(
+	'resize',
+	() => {
+	this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+	},
+	false
+	)
+	
+	},
+	methods: {
+	moment,
+	/**
+	* 鏌ヨ鍙傛暟缁勮
+	*/
+	switchingDate () {
+	const obj = JSON.parse(JSON.stringify(this.queryParam))
+	return obj
+	},
+	TestStudent3Delete (record) {
+	TestStudent3Delete(record).then((res) => {
+	if (res.success) {
+	this.$message.success('鍒犻櫎鎴愬姛')
+	this.$refs.table.refresh()
+	} else {
+	this.$message.error('鍒犻櫎澶辫触') // + res.message
+	}
+	})
+	},
+
+
+	TestStudent3ToExcel() {
+	this.loading = true
+	let entozh = {};
+	const path = this.$route.path;
+	if (window.localStorage.getItem(path)) {
+	JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+	if (item.dataIndex != 'action' && item.checked) {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	} else { //鐩存帴鐐瑰鍑�
+	this.columns.forEach(item => {
+	if (item.dataIndex != 'action') {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	}
+	TestStudent3Page(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+	this.loading = false;
+	//闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+	var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+	res.data.rows.forEach(item => {
+	var arrKeys = Object.keys(item);
+	arrKeys.forEach(key => {
+	var strFieldDic = key + 'Data';
+	//鏋氫妇杞��
+	if (this[strFieldDic] && this[strFieldDic].length > 0) {
+	let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+	if (arrFieldDic.length > 0) {
+	item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+	}
+	}
+	// 鏃ユ湡鎴彇
+	if (arrDataCutout.length > 0) {
+	arrDataCutout.forEach(itemIn => {
+	if (key == itemIn.dataIndex && item[key]) {
+	item[key] = item[key].split(" ")[0]
+	}
+	})
+	}
+	});
+	})
+	exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+	}).catch((err) => {
+	this.loading = false
+	this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+	})
+	},
+
+
+	toggleAdvanced () {
+	this.advanced = !this.advanced
+	this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+	},
+	onChangebrithDate(date, dateString) {
+	  this.queryParam.brithDate = dateString
+	},
+	onChangecreatedTime(date, dateString) {
+	  this.queryParam.createdTime = dateString
+	},
+	onChangeupdatedTime(date, dateString) {
+	  this.queryParam.updatedTime = dateString
+	},
+	handleOk () {
+	this.$refs.table.refresh()
+	},
+	onSelectChange (selectedRowKeys, selectedRows) {
+	this.selectedRowKeys = selectedRowKeys
+	this.selectedRows = selectedRows
+	}
+	}
+	}
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/addForm.vue
new file mode 100644
index 0000000..51573ed
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/addForm.vue
@@ -0,0 +1,88 @@
+锘�<template>
+  <a-modal
+    title="鏂板娴嬭瘯瀛︾敓琛�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍚�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ勾榫�" style="width: 100%" v-decorator="['age']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+  TestStudent5Add
+  } from '@/api/modular/main/TestDemo/TestStudent5Manage'
+  export default {
+  data () {
+  return {
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            TestStudent5Add(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/editForm.vue
new file mode 100644
index 0000000..cadd8be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/editForm.vue
@@ -0,0 +1,103 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫娴嬭瘯瀛︾敓琛�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍚�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ勾榫�" style="width: 100%" v-decorator="['age']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+  import {
+  TestStudent5Edit
+  } from '@/api/modular/main/TestDemo/TestStudent5Manage'
+  export default {
+  data () {
+  return {
+  Id: 0,
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  record: {},
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              name: record.name,
+              age: record.age
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            TestStudent5Edit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/excelForm.vue
new file mode 100644
index 0000000..3faf14e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <!--<a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>-->
+      </a-row>
+      <a-row :span="24">
+        <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>-->
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="testStudent5DownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+	import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+	import { TestStudent5FromExcel, TestStudent5DownloadExcelTemplate} from '@/api/modular/main/TestDemo/TestStudent5Manage'
+	import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+	export default {
+	components: {
+	},
+	data() {
+	return {
+	visible: false,
+	detailed: false,
+	confirmLoading: false,
+	fileList: [],
+	importExcelTypeData: [],
+	importExcelType: '1',
+	uploadFile: null,
+	columns: [],
+	dataList: [],
+	demandText:'',
+	columnText: ''
+	}
+	},
+	methods: {
+	index() {
+	this.visible = true;
+	this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+	this.demandText = parseDemandText("testStudent5DownloadExcelTemplate")
+	window.downloadFile = this.testStudent5DownloadExcelTemplate;
+	this.getTable();
+	},
+	showDemand() {
+	this.detailed = !this.detailed;
+	},
+	customRequest(document) {
+	this.uploadFile = document
+	},
+	getTable() {
+	sysExcelTemplateGetColumnList({className: "TestStudent5"}).then(res =>
+	{
+	if (res.success) {
+	this.columns =[];
+	this.dataList = [{}];
+	res.data.forEach(x => {
+	this.columns.push({
+	dataIndex: x.columnName,
+	key: x.columnName,
+	title: x.columnComment
+	});
+	this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+	});
+	this.columnText = parseExcelFieldText(res.data);
+	}
+	});
+	},
+	beforeUpload(fileInfo) {
+	let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+	if (!res.success) {
+	this.$message.warning(res.msg)
+	return false
+	}
+	setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+	},
+	handleChange(fileInfo) {
+	if (fileInfo.file.status === 'error') {
+	fileInfo.fileList.splice(0, 1)
+	}
+	if (fileInfo.file.status === 'done') {
+	if (fileInfo.fileList.length > 1) {
+	fileInfo.fileList.splice(0, 1)
+	}
+	this.fileList = fileInfo.file
+	}
+	},
+	handleSubmit() {
+	this.confirmLoading = true
+	const formData = new FormData()
+	formData.append('file', this.uploadFile.file)
+	TestStudent5FromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+	this.$message.success('鎿嶄綔鎴愬姛')
+	this.confirmLoading = false
+	this.$emit('ok', [])
+	this.handleCancel()
+	}).finally((res)=>{this.confirmLoading = false})
+	},
+	handleCancel() {
+	this.visible = false
+	this.detailed = false
+	},
+	testStudent5DownloadExcelTemplate() {
+	TestStudent5DownloadExcelTemplate({version: "v2"}).then((res) => {
+	downloadFile(res);
+	}).catch((err) => {
+	this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+	})
+	}
+	}
+	}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/index.vue
new file mode 100644
index 0000000..8f85dc1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/index.vue
@@ -0,0 +1,391 @@
+锘�<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+	<div ref="boxForm" class="boxForm">  
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('TestStudent5:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="濮撳悕">
+                <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ鍚�"/>
+              </a-form-item>
+            </a-col><a-col :md="8" :sm="24">
+              <a-form-item label="骞撮緞">
+                <a-input-number v-model="queryParam.age" style="width: 100%" allow-clear placeholder="璇疯緭鍏ュ勾榫�"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">          <!--骞存湀鏃ユ椂鍒嗙-->
+			<!--鏃堕棿鑼冨洿-->
+
+				<a-col :md="8" :sm="24">
+					<a-form-item label="鍒涘缓鏃堕棿">
+						<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.createdTime"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @change="onChangecreatedTime"/>
+
+					</a-form-item>
+				</a-col>
+			          <!--骞存湀鏃ユ椂鍒嗙-->
+			<!--鏃堕棿鑼冨洿-->
+
+				<a-col :md="8" :sm="24">
+					<a-form-item label="鏇存柊鏃堕棿">
+						<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.updatedTime"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @change="onChangeupdatedTime"/>
+
+					</a-form-item>
+				</a-col>
+			
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍒涘缓鑰呭悕绉�">
+                  <a-input v-model="queryParam.createdUserName" allow-clear placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="淇敼鑰呭悕绉�">
+                  <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�"/>
+                </a-form-item>
+              </a-col>	</template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+	</div>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+		:scroll="{x: true,y:tableHeight}"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('TestStudent5:add')" >
+		<div ref="actionBar" class="actionBar">	
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('TestStudent5:exportExcel')" icon="download" @click="TestStudent5ToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('TestStudent5:add')" icon="plus" @click="$refs.addForm.add()">鏂板娴嬭瘯瀛︾敓琛�</a-button>
+		</div>
+		</template>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('TestStudent5:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('TestStudent5:edit') & hasPerm('TestStudent5:delete')"/>
+          <a-popconfirm v-if="hasPerm('TestStudent5:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => TestStudent5Delete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+	  <excel-form ref="excelForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+	import { STable } from '@/components'
+	import moment from 'moment'
+	import { TestStudent5Page, TestStudent5Delete, TestStudent5ToExcel } from '@/api/modular/main/TestDemo/TestStudent5Manage'
+	//鑷畾涔塼able楂樺害
+	import setTableHtMixin from '@/mixins/handleTableHt.js'
+	import addForm from './addForm.vue'
+	import { exportExcel } from '@/utils/exportToExcel'
+	import { downloadFile } from '@/utils/util'
+	import editForm from './editForm.vue'
+	import excelForm from './excelForm.vue'
+	export default {
+	mixins: [setTableHtMixin],
+	components: {
+	STable,
+	addForm,
+	editForm,
+	excelForm
+	},
+	data () {
+	return {
+	advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+	queryParam: {},
+	columns: [
+	{
+	title:'搴忓彿',
+	width: '60px',
+	align: 'center',
+	customRender: (text, record, index) => `${index + 1}`,
+	},
+	{
+	title: '濮撳悕',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': ''//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': ''//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'name'
+	},
+	{
+	title: '骞撮緞',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': ''//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': ''//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'age'
+	},
+	{
+	title: '鍒涘缓鏃堕棿',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': ''//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': ''//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'createdTime'
+	},
+	{
+	title: '鏇存柊鏃堕棿',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': ''//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': ''//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'updatedTime'
+	},
+	{
+	title: '鍒涘缓鑰呭悕绉�',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': ''//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': ''//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'createdUserName'
+	},
+	{
+	title: '淇敼鑰呭悕绉�',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': ''//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': ''//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'updatedUserName'
+	}
+	],
+	tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+	// 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+	loadData: parameter => {
+	return TestStudent5Page(Object.assign(parameter, this.switchingDate())).then((res) => {
+	return res.data
+	})
+	},
+	selectedRowKeys: [],
+	selectedRows: []
+	}
+	},
+	created () {
+	if (this.hasPerm('TestStudent5:edit') || this.hasPerm('TestStudent5:delete')) {
+	this.columns.push({
+	title: '鎿嶄綔',
+	width: '150px',
+	dataIndex: 'action',
+	scopedSlots: { customRender: 'action' }
+	})
+	}
+	const path = this.$route.path
+	const columnStr = window.localStorage.getItem(path)
+	if(columnStr) {
+	var _columns = JSON.parse(columnStr)
+	this.columns.forEach(element => {
+	var fObj = _columns.find((item, index) => {
+	return item.dataIndex === element.dataIndex;
+	})
+	if(fObj!=undefined && fObj!=null){
+	element.checked=fObj.checked;
+	}
+	});
+	}
+
+	this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+	window.addEventListener(
+	'resize',
+	() => {
+	this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+	},
+	false
+	)
+	
+	},
+	methods: {
+	moment,
+	/**
+	* 鏌ヨ鍙傛暟缁勮
+	*/
+	switchingDate () {
+	const obj = JSON.parse(JSON.stringify(this.queryParam))
+	return obj
+	},
+	TestStudent5Delete (record) {
+	TestStudent5Delete(record).then((res) => {
+	if (res.success) {
+	this.$message.success('鍒犻櫎鎴愬姛')
+	this.$refs.table.refresh()
+	} else {
+	this.$message.error('鍒犻櫎澶辫触') // + res.message
+	}
+	})
+	},
+
+
+	TestStudent5ToExcel() {
+	this.loading = true
+	let entozh = {};
+	const path = this.$route.path;
+	if (window.localStorage.getItem(path)) {
+	JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+	if (item.dataIndex != 'action' && item.checked) {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	} else { //鐩存帴鐐瑰鍑�
+	this.columns.forEach(item => {
+	if (item.dataIndex != 'action') {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	}
+	TestStudent5Page(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+	this.loading = false;
+	//闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+	var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+	res.data.rows.forEach(item => {
+	var arrKeys = Object.keys(item);
+	arrKeys.forEach(key => {
+	var strFieldDic = key + 'Data';
+	//鏋氫妇杞��
+	if (this[strFieldDic] && this[strFieldDic].length > 0) {
+	let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+	if (arrFieldDic.length > 0) {
+	item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+	}
+	}
+	// 鏃ユ湡鎴彇
+	if (arrDataCutout.length > 0) {
+	arrDataCutout.forEach(itemIn => {
+	if (key == itemIn.dataIndex && item[key]) {
+	item[key] = item[key].split(" ")[0]
+	}
+	})
+	}
+	});
+	})
+	exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+	}).catch((err) => {
+	this.loading = false
+	this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+	})
+	},
+
+
+	toggleAdvanced () {
+	this.advanced = !this.advanced
+	this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+	},
+	onChangecreatedTime(date, dateString) {
+	  this.queryParam.createdTime = dateString
+	},
+	onChangeupdatedTime(date, dateString) {
+	  this.queryParam.updatedTime = dateString
+	},
+	handleOk () {
+	this.$refs.table.refresh()
+	},
+	onSelectChange (selectedRowKeys, selectedRows) {
+	this.selectedRowKeys = selectedRowKeys
+	this.selectedRows = selectedRows
+	}
+	}
+	}
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/addForm.vue
new file mode 100644
index 0000000..9f5d41a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/addForm.vue
@@ -0,0 +1,85 @@
+锘�<template>
+  <a-modal
+    title="鏂板娴嬭瘯鑰佸笀琛�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['name']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+  TestTeacherAdd
+  } from '@/api/modular/main/TestDemo/TestTeacherManage'
+  export default {
+  data () {
+  return {
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            TestTeacherAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/editForm.vue
new file mode 100644
index 0000000..5e210a0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/editForm.vue
@@ -0,0 +1,99 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫娴嬭瘯鑰佸笀琛�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+  import {
+  TestTeacherEdit
+  } from '@/api/modular/main/TestDemo/TestTeacherManage'
+  export default {
+  data () {
+  return {
+  Id: 0,
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  record: {},
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              name: record.name
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            TestTeacherEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/excelForm.vue
new file mode 100644
index 0000000..1266c79
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="testTeacherDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+  import { TestTeacherFromExcel, TestTeacherDownloadExcelTemplate} from '@/api/modular/main/TestDemo/TestTeacherManage'
+  import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+  export default {
+  components: {
+  },
+  data() {
+  return {
+  visible: false,
+  detailed: false,
+  confirmLoading: false,
+  fileList: [],
+  importExcelTypeData: [],
+  importExcelType: '1',
+  uploadFile: null,
+  columns: [],
+  dataList: [],
+  demandText:'',
+  columnText: ''
+  }
+  },
+  methods: {
+  index() {
+  this.visible = true;
+  this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+  this.demandText = parseDemandText("testTeacherDownloadExcelTemplate")
+  window.downloadFile = this.testTeacherDownloadExcelTemplate;
+  this.getTable();
+  },
+  showDemand() {
+  this.detailed = !this.detailed;
+  },
+  customRequest(document) {
+  this.uploadFile = document
+  },
+  getTable() {
+  sysExcelTemplateGetColumnList({className: "TestTeacher"}).then(res =>
+  {
+  if (res.success) {
+  this.columns =[];
+  this.dataList = [{}];
+  res.data.forEach(x => {
+  this.columns.push({
+  dataIndex: x.columnName,
+  key: x.columnName,
+  title: x.columnComment
+  });
+  this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+  });
+  this.columnText = parseExcelFieldText(res.data);
+  }
+  });
+  },
+  beforeUpload(fileInfo) {
+  let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+  if (!res.success) {
+  this.$message.warning(res.msg)
+  return false
+  }
+  setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+  },
+  handleChange(fileInfo) {
+  if (fileInfo.file.status === 'error') {
+  fileInfo.fileList.splice(0, 1)
+  }
+  if (fileInfo.file.status === 'done') {
+  if (fileInfo.fileList.length > 1) {
+  fileInfo.fileList.splice(0, 1)
+  }
+  this.fileList = fileInfo.file
+  }
+  },
+  handleSubmit() {
+  this.confirmLoading = true
+  const formData = new FormData()
+  formData.append('file', this.uploadFile.file)
+  testTeacherFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+  this.$message.success('鎿嶄綔鎴愬姛')
+  this.confirmLoading = false
+  this.$emit('ok', [])
+  this.handleCancel()
+  }).finally((res)=>{this.confirmLoading = false})
+  },
+  handleCancel() {
+  this.visible = false
+  this.detailed = false
+  },
+  testTeacherDownloadExcelTemplate() {
+  testTeacherDownloadExcelTemplate({version: "v2"}).then((res) => {
+  downloadFile(res);
+  }).catch((err) => {
+  this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+  })
+  }
+  }
+  }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/index.vue
new file mode 100644
index 0000000..5c5e2ae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/index.vue
@@ -0,0 +1,200 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('TestTeacher:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍚嶇О">
+                <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ悕绉�"/>
+              </a-form-item>
+            </a-col><a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+		:scroll="{x: true}"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('TestTeacher:add')" >
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('TestTeacher:exportExcel')" icon="download" @click="TestTeacherToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('TestTeacher:add')" icon="plus" @click="$refs.addForm.add()">鏂板娴嬭瘯鑰佸笀琛�</a-button>
+        </template>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('TestTeacher:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('TestTeacher:edit') & hasPerm('TestTeacher:delete')"/>
+          <a-popconfirm v-if="hasPerm('TestTeacher:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => TestTeacherDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+	import { STable } from '@/components'
+	import { TestTeacherPage, TestTeacherDelete, TestTeacherToExcel } from '@/api/modular/main/TestDemo/TestTeacherManage'
+	import addForm from './addForm.vue'
+	import { exportExcel } from '@/utils/exportToExcel'
+	import { downloadFile } from '@/utils/util'
+	import editForm from './editForm.vue'
+	export default {
+	components: {
+	STable,
+	addForm,
+	editForm
+	},
+	data () {
+	return {
+	queryParam: {},
+	columns: [
+	{
+	title: '鍚嶇О',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'name'
+	}
+	],
+	tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+	// 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+	loadData: parameter => {
+	return TestTeacherPage(Object.assign(parameter, this.queryParam)).then((res) => {
+	return res.data
+	})
+	},
+	selectedRowKeys: [],
+	selectedRows: []
+	}
+	},
+	created () {
+	if (this.hasPerm('TestTeacher:edit') || this.hasPerm('TestTeacher:delete')) {
+	this.columns.push({
+	title: '鎿嶄綔',
+	width: '150px',
+	dataIndex: 'action',
+	scopedSlots: { customRender: 'action' }
+	})
+	}
+	const path = this.$route.path
+	const columnStr = window.localStorage.getItem(path)
+	if(columnStr) {
+	var _columns = JSON.parse(columnStr)
+	this.columns.forEach(element => {
+	var fObj = _columns.find((item, index) => {
+	return item.dataIndex === element.dataIndex;
+	})
+	if(fObj!=undefined && fObj!=null){
+	element.checked=fObj.checked;
+	}
+	});
+	}
+	},
+	methods: {
+	/**
+	* 鏌ヨ鍙傛暟缁勮
+	*/
+	switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      TestTeacherDelete (record) {
+        TestTeacherDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+	  
+
+TestTeacherToExcel() {
+        this.loading = true
+	    let entozh = {};
+        const path = this.$route.path;
+        if (window.localStorage.getItem(path)) {
+            JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+                if (item.dataIndex != 'action' && item.checked) {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	} else { //鐩存帴鐐瑰鍑�
+	this.columns.forEach(item => {
+	if (item.dataIndex != 'action') {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	}
+	TestTeacherPage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+	this.loading = false;
+	//闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+	var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+	res.data.rows.forEach(item => {
+	var arr1 = Object.keys(item);
+	arr1.forEach(key => {
+	var str1 = key + 'Data';
+	//鏋氫妇杞��
+	if (this[str1] && this[str1].length > 0) {
+	let s1 = this[str1].filter(v => String(v.code) == String(item[key]));
+	if (s1.length > 0) {
+	item[key] = s1[0]?.name || '娌℃湁鏋氫妇鍊�';
+	}
+	}
+	// 鏃ユ湡鎴彇
+	if (arrDataCutout.length > 0) {
+	arrDataCutout.forEach(itemIn => {
+	if (key == itemIn.dataIndex && item[key]) {
+	item[key] = item[key].split(" ")[0]
+	}
+	})
+	}
+	});
+	})
+	exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+	}).catch((err) => {
+	this.loading = false
+	this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+	})
+	},
+
+
+	handleOk () {
+	this.$refs.table.refresh()
+	},
+	onSelectChange (selectedRowKeys, selectedRows) {
+	this.selectedRowKeys = selectedRowKeys
+	this.selectedRows = selectedRows
+	}
+	}
+	}
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/addForm.vue
new file mode 100644
index 0000000..53ddf6a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/addForm.vue
@@ -0,0 +1,116 @@
+锘�<template>
+  <a-modal
+    title="鏂板瀛︾敓瑙嗗浘"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="Id涓婚敭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏d涓婚敭" v-decorator="['id']" />
+        </a-form-item>
+        <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+        </a-form-item>
+        <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+            <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" @change="onChangebrithDate"/>
+        </a-form-item>
+        <a-form-item label="鍏宠仈鑰佸笀" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叧鑱旇�佸笀" v-decorator="['teacherId']" />
+        </a-form-item>
+        <a-form-item label="鑰佸笀鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ�佸笀鍚嶇О" v-decorator="['teacherName']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+  VStudentAdd
+  } from '@/api/modular/main/TestDemo/VStudentManage'
+  export default {
+  data () {
+  return {
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  genderData: [],
+  brithDateDateString: '',
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const genderOption = this.$options
+        this.genderData = genderOption.filters['dictData']('sex')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            values.brithDate = this.brithDateDateString
+            VStudentAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      onChangebrithDate(date, dateString) {
+        this.brithDateDateString = dateString
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/editForm.vue
new file mode 100644
index 0000000..a48ae38
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/editForm.vue
@@ -0,0 +1,138 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫瀛︾敓瑙嗗浘"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="Id涓婚敭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏d涓婚敭" v-decorator="['id']" />
+        </a-form-item>
+        <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+        </a-form-item>
+        <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+            <a-select-option v-for="(item,index) in genderData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" @change="onChangebrithDate"/>
+        </a-form-item>
+        <a-form-item label="鍏宠仈鑰佸笀" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叧鑱旇�佸笀" v-decorator="['teacherId']" />
+        </a-form-item>
+        <a-form-item label="鑰佸笀鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ�佸笀鍚嶇О" v-decorator="['teacherName']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+  import {
+  VStudentEdit
+  } from '@/api/modular/main/TestDemo/VStudentManage'
+  export default {
+  data () {
+  return {
+  Id: 0,
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  record: {},
+  genderData: [],
+  brithDateDateString: '',
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      moment,
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const genderOption = this.$options
+        this.genderData = genderOption.filters['dictData']('sex')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              name: record.name,
+              age: record.age,
+              startName: record.startName,
+              gender: record.gender,
+              teacherId: record.teacherId,
+              teacherName: record.teacherName
+            }
+          )
+        })
+        this.form.getFieldDecorator('brithDate', { initialValue: moment(record.brithDate, 'YYYY-MM-DD') })
+        this.brithDateDateString = moment(record.brithDate).format('YYYY-MM-DD')
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            values.brithDate = this.brithDateDateString
+            this.record.brithDate = this.brithDateDateString
+            VStudentEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      onChangebrithDate(date, dateString) {
+        this.brithDateDateString = dateString
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/excelForm.vue
new file mode 100644
index 0000000..aaf5281
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <!--<a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>-->
+      </a-row>
+      <a-row :span="24">
+        <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>-->
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="vStudentDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+	import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+	import { VStudentFromExcel, VStudentDownloadExcelTemplate} from '@/api/modular/main/TestDemo/VStudentManage'
+	import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+	export default {
+	components: {
+	},
+	data() {
+	return {
+	visible: false,
+	detailed: false,
+	confirmLoading: false,
+	fileList: [],
+	importExcelTypeData: [],
+	importExcelType: '1',
+	uploadFile: null,
+	columns: [],
+	dataList: [],
+	demandText:'',
+	columnText: ''
+	}
+	},
+	methods: {
+	index() {
+	this.visible = true;
+	this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+	this.demandText = parseDemandText("vStudentDownloadExcelTemplate")
+	window.downloadFile = this.vStudentDownloadExcelTemplate;
+	this.getTable();
+	},
+	showDemand() {
+	this.detailed = !this.detailed;
+	},
+	customRequest(document) {
+	this.uploadFile = document
+	},
+	getTable() {
+	sysExcelTemplateGetColumnList({className: "VStudent"}).then(res =>
+	{
+	if (res.success) {
+	this.columns =[];
+	this.dataList = [{}];
+	res.data.forEach(x => {
+	this.columns.push({
+	dataIndex: x.columnName,
+	key: x.columnName,
+	title: x.columnComment
+	});
+	this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+	});
+	this.columnText = parseExcelFieldText(res.data);
+	}
+	});
+	},
+	beforeUpload(fileInfo) {
+	let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+	if (!res.success) {
+	this.$message.warning(res.msg)
+	return false
+	}
+	setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+	},
+	handleChange(fileInfo) {
+	if (fileInfo.file.status === 'error') {
+	fileInfo.fileList.splice(0, 1)
+	}
+	if (fileInfo.file.status === 'done') {
+	if (fileInfo.fileList.length > 1) {
+	fileInfo.fileList.splice(0, 1)
+	}
+	this.fileList = fileInfo.file
+	}
+	},
+	handleSubmit() {
+	this.confirmLoading = true
+	const formData = new FormData()
+	formData.append('file', this.uploadFile.file)
+	VStudentFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+	this.$message.success('鎿嶄綔鎴愬姛')
+	this.confirmLoading = false
+	this.$emit('ok', [])
+	this.handleCancel()
+	}).finally((res)=>{this.confirmLoading = false})
+	},
+	handleCancel() {
+	this.visible = false
+	this.detailed = false
+	},
+	vStudentDownloadExcelTemplate() {
+	VStudentDownloadExcelTemplate({version: "v2"}).then((res) => {
+	downloadFile(res);
+	}).catch((err) => {
+	this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+	})
+	}
+	}
+	}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/index.vue
new file mode 100644
index 0000000..533d7a3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/index.vue
@@ -0,0 +1,394 @@
+锘�<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+	<div ref="boxForm" class="boxForm">  
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('VStudent:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="Id涓婚敭">
+                <a-input v-model="queryParam.id" allow-clear placeholder="璇疯緭鍏d涓婚敭"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瀛︾敓濮撳悕">
+                <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ鐢熷鍚�"/>
+              </a-form-item>
+            </a-col><template v-if="advanced"><a-col :md="8" :sm="24">
+                <a-form-item label="瀛︾敓骞撮緞">
+                  <a-input-number v-model="queryParam.age" style="width: 100%" allow-clear placeholder="璇疯緭鍏ュ鐢熷勾榫�"/>
+                </a-form-item>
+              </a-col>
+			<a-col :md="8" :sm="24">
+				<a-form-item label="鏄惁鍦ㄦ牎">
+					<a-select :allowClear="true" style="width: 100%" v-model="queryParam.startName" placeholder="璇烽�夋嫨鏄惁鍦ㄦ牎">
+						<a-select-option v-for="(item,index) in startNameData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+					</a-select>
+				</a-form-item>
+			</a-col>
+		<a-col :md="8" :sm="24">
+                <a-form-item label="鎬у埆">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.gender" placeholder="璇烽�夋嫨鎬у埆">
+                    <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+			        <a-col :md="8" :sm="24">
+				        <a-form-item label="鍑虹敓鏃ユ湡">
+					        <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-model="queryParam.brithDate" @change="onChangebrithDate"/>
+				        </a-form-item>
+			        </a-col>
+		        
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍏宠仈鑰佸笀">
+                  <a-input v-model="queryParam.teacherId" allow-clear placeholder="璇疯緭鍏ュ叧鑱旇�佸笀"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鑰佸笀鍚嶇О">
+                  <a-input v-model="queryParam.teacherName" allow-clear placeholder="璇疯緭鍏ヨ�佸笀鍚嶇О"/>
+                </a-form-item>
+              </a-col>	</template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+	</div>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+		:scroll="{x: true,y:tableHeight}"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('VStudent:add')" >
+		<div ref="actionBar" class="actionBar">
+          <a-button type="info" v-if="hasPerm('VStudent:exportExcel')" icon="download" @click="VStudentToExcel()">
+            瀵煎嚭
+          </a-button>
+		</div>
+		</template>
+		  <span slot="startNamescopedSlots" slot-scope="text">
+			<div v-if="text===true ">
+				<a-tag color="green">鏄�</a-tag>
+			</div>
+			<div v-else-if="text==false">
+				<a-tag color="volcano">鍚�</a-tag>
+			</div>
+			<div v-else=""></div>
+			</span>
+		  <span slot="genderscopedSlots" slot-scope="text">
+			{{ 'sex' | dictType(text) }}
+			</span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+	  <excel-form ref="excelForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+	import { STable } from '@/components'
+	import moment from 'moment'
+	import { VStudentPage, VStudentDelete, VStudentToExcel } from '@/api/modular/main/TestDemo/VStudentManage'
+	//鑷畾涔塼able楂樺害
+	import setTableHtMixin from '@/mixins/handleTableHt.js'
+	import addForm from './addForm.vue'
+	import { exportExcel } from '@/utils/exportToExcel'
+	import { downloadFile } from '@/utils/util'
+	import editForm from './editForm.vue'
+	import excelForm from './excelForm.vue'
+	export default {
+	mixins: [setTableHtMixin],
+	components: {
+	STable,
+	addForm,
+	editForm,
+	excelForm
+	},
+	data () {
+	return {
+	advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+	queryParam: {},
+	columns: [
+	{
+	title:'搴忓彿',
+	width: '60px',
+	align: 'center',
+	customRender: (text, record, index) => `${index + 1}`,
+	},
+	{
+	title: '瀛︾敓濮撳悕',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'name'
+	},
+	{
+	title: '瀛︾敓骞撮緞',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '80px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '80px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'age'
+	},
+	{
+	title: '鏄惁鍦ㄦ牎',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'startName',
+	scopedSlots: { customRender: 'startNamescopedSlots' }
+	},
+	{
+	title: '鎬у埆',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '80px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '80px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'gender',
+	scopedSlots: { customRender: 'genderscopedSlots' }
+	},
+	{
+	title: '鍑虹敓鏃ユ湡',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	customRender: (value) => (value ? value.split(" ")[0] : value),//鏃堕棿鎴彇 涓嶈鏃跺垎绉�
+	customCutout:true,//鏃堕棿鎴彇 涓嶈鏃跺垎绉�
+	dataIndex: 'brithDate'
+	},
+	{
+	title: '鑰佸笀鍚嶇О',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'teacherName'
+	}
+	],
+	tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+	// 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+	loadData: parameter => {
+	return VStudentPage(Object.assign(parameter, this.switchingDate())).then((res) => {
+	return res.data
+	})
+	},
+        genderData: [],
+	selectedRowKeys: [],
+	selectedRows: []
+	}
+	},
+	created () {
+	const path = this.$route.path
+	const columnStr = window.localStorage.getItem(path)
+	if(columnStr) {
+	var _columns = JSON.parse(columnStr)
+	this.columns.forEach(element => {
+	var fObj = _columns.find((item, index) => {
+	return item.dataIndex === element.dataIndex;
+	})
+	if(fObj!=undefined && fObj!=null){
+	element.checked=fObj.checked;
+	}
+	});
+	}
+	const startNameOption = this.$options
+	this.startNameData = startNameOption.filters['dictData']('yes_true_false')
+	const genderOption = this.$options
+	this.genderData = genderOption.filters['dictData']('sex')
+
+	this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+	window.addEventListener(
+	'resize',
+	() => {
+	this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+	},
+	false
+	)
+	
+	},
+	methods: {
+	moment,
+	/**
+	* 鏌ヨ鍙傛暟缁勮
+	*/
+	switchingDate () {
+	const obj = JSON.parse(JSON.stringify(this.queryParam))
+	return obj
+	},
+	VStudentDelete (record) {
+	VStudentDelete(record).then((res) => {
+	if (res.success) {
+	this.$message.success('鍒犻櫎鎴愬姛')
+	this.$refs.table.refresh()
+	} else {
+	this.$message.error('鍒犻櫎澶辫触') // + res.message
+	}
+	})
+	},
+
+
+	VStudentToExcel() {
+	this.loading = true
+	let entozh = {};
+	const path = this.$route.path;
+	if (window.localStorage.getItem(path)) {
+	JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+	if (item.dataIndex != 'action' && item.checked) {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	} else { //鐩存帴鐐瑰鍑�
+	this.columns.forEach(item => {
+	if (item.dataIndex != 'action') {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	}
+	VStudentPage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+	this.loading = false;
+	//闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+	var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+	res.data.rows.forEach(item => {
+	var arrKeys = Object.keys(item);
+	arrKeys.forEach(key => {
+	var strFieldDic = key + 'Data';
+	//鏋氫妇杞��
+	if (this[strFieldDic] && this[strFieldDic].length > 0) {
+	let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+	if (arrFieldDic.length > 0) {
+	item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+	}
+	}
+	// 鏃ユ湡鎴彇
+	if (arrDataCutout.length > 0) {
+	arrDataCutout.forEach(itemIn => {
+	if (key == itemIn.dataIndex && item[key]) {
+	item[key] = item[key].split(" ")[0]
+	}
+	})
+	}
+	});
+	})
+	exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+	}).catch((err) => {
+	this.loading = false
+	this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+	})
+	},
+
+
+	toggleAdvanced () {
+	this.advanced = !this.advanced
+	this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+	},
+	onChangebrithDate(date, dateString) {
+	  this.queryParam.brithDate = dateString
+	},
+	handleOk () {
+	this.$refs.table.refresh()
+	},
+	onSelectChange (selectedRowKeys, selectedRows) {
+	this.selectedRowKeys = selectedRowKeys
+	this.selectedRows = selectedRows
+	}
+	}
+	}
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/addForm.vue
new file mode 100644
index 0000000..3b9a893
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/addForm.vue
@@ -0,0 +1,117 @@
+锘�<template>
+  <a-modal
+    title="鏂板璋冩嫧鍗�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍑哄簱鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ嚭搴撳崟鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鐗╂枡鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ墿鏂欐壒娆�" v-decorator="['materialBath']" />
+        </a-form-item>
+        <a-form-item label="鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ユ�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+        <a-form-item label="杞嚭浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ浆鍑轰粨搴�" v-decorator="['outAreaName']" />
+        </a-form-item>
+        <a-form-item label="杞嚭搴撳尯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ浆鍑哄簱鍖�" v-decorator="['outwarehouseName']" />
+        </a-form-item>
+        <a-form-item label="杞叆浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ浆鍏ヤ粨搴�" v-decorator="['inAreaName']" />
+        </a-form-item>
+        <a-form-item label="杞叆搴撳尯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ浆鍏ュ簱鍖�" v-decorator="['inwarehouseName']" />
+        </a-form-item>
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    TransferOrderAdd
+  } from '@/api/modular/main/TransferOrderManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        orderLargeCategoryData: [],
+        orderSubclassData: [],
+        orderStatusData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            TransferOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/editForm.vue
new file mode 100644
index 0000000..718a829
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/editForm.vue
@@ -0,0 +1,140 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫璋冩嫧鍗�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍑哄簱鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ嚭搴撳崟鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鐗╂枡鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ墿鏂欐壒娆�" v-decorator="['materialBath']" />
+        </a-form-item>
+        <a-form-item label="鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ユ�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+        <a-form-item label="杞嚭浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ浆鍑轰粨搴�" v-decorator="['outAreaName']" />
+        </a-form-item>
+        <a-form-item label="杞嚭搴撳尯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ浆鍑哄簱鍖�" v-decorator="['outwarehouseName']" />
+        </a-form-item>
+        <a-form-item label="杞叆浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ浆鍏ヤ粨搴�" v-decorator="['inAreaName']" />
+        </a-form-item>
+        <a-form-item label="杞叆搴撳尯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ浆鍏ュ簱鍖�" v-decorator="['inwarehouseName']" />
+        </a-form-item>
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    TransferOrderEdit
+  } from '@/api/modular/main/TransferOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        orderLargeCategoryData: [],
+        orderSubclassData: [],
+        orderStatusData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              orderNo: record.orderNo,
+              orderLargeCategory: record.orderLargeCategory,
+              orderSubclass: record.orderSubclass,
+              materialBath: record.materialBath,
+              orderQuantity: record.orderQuantity,
+              outAreaName: record.outAreaName,
+              outwarehouseName: record.outwarehouseName,
+              inAreaName: record.inAreaName,
+              inwarehouseName: record.inwarehouseName,
+              remarks: record.remarks
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            TransferOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/index.vue
new file mode 100644
index 0000000..a69a943
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/index.vue
@@ -0,0 +1,271 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍑哄簱鍗曞彿">
+                <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ嚭搴撳崟鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                  <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+             <!-- <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁澶х被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderLargeCategory" placeholder="璇烽�夋嫨..." @change="onLargeCategorySelect">
+                    <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁灏忕被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderSubclass" placeholder="璇烽�夋嫨...">
+                    <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>        -->
+            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+      >
+        <template class="table-operator" slot="operator" >
+          <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板璋冩嫧鍗�</a-button>
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical"/>
+          <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => TransferOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { TransferOrderPage, TransferOrderDelete, TransferOrderLargeCategories, TransferOrderSubclass } from '@/api/modular/main/TransferOrderManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        selectOptions:{
+          largeCategories:[],
+          subclasses:[]
+        },
+        columns: [
+          {
+            title: '鍑哄簱鍗曞彿',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          // {
+          //   title: '鍗曟嵁澶х被',
+          //   align: 'center',
+          //   dataIndex: 'orderLargeCategory',
+          //   //scopedSlots: { customRender: 'orderLargeCategoryscopedSlots' }
+          // },
+          // {
+          //   title: '鍗曟嵁灏忕被',
+          //   align: 'center',
+          //   dataIndex: 'orderSubclass',
+          //   //scopedSlots: { customRender: 'orderSubclassscopedSlots' }
+          // },
+          {
+            title: '鐗╂枡鎵规',
+            align: 'center',
+            dataIndex: 'materialBath'
+          },
+          {
+            title: '鍗曟嵁鏁伴噺',
+            align: 'center',
+            dataIndex: 'orderQuantity'
+          },
+          {
+            title: '杞嚭浠撳簱',
+            align: 'center',
+            dataIndex: 'outAreaName'
+          },
+          {
+            title: '杞嚭搴撳尯',
+            align: 'center',
+            dataIndex: 'outwarehouseName'
+          },
+          {
+            title: '杞叆浠撳簱',
+            align: 'center',
+            dataIndex: 'inAreaName'
+          },
+          {
+            title: '杞叆搴撳尯',
+            align: 'center',
+            dataIndex: 'inwarehouseName'
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatus',
+            scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+          },
+          {
+            title: '澶囨敞',
+            align: 'center',
+            dataIndex: 'remarks'
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return TransferOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0])
+            }
+            return res.data
+          })
+        },
+        orderStatusEnumData: [],
+        infoId:null,
+        infoOrderNo:''
+      }
+    },
+    created () {
+      const orderStatusEnumOption = this.$options
+      this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+    },
+    mounted(){
+      this.getLargeCategoriesOptions()
+    },
+    methods: {
+      onViewDetail(obj){
+        if (this.infoId===obj.id) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      getLargeCategoriesOptions(){
+        TransferOrderLargeCategories().then(d=>{
+          this.selectOptions.largeCategories = d.data || []
+        }).catch(err=>{
+          console.log(err)
+        })
+      },
+      getSubclassOptions(id){
+        TransferOrderSubclass(id).then(d=>{
+          this.selectOptions.subclasses = d.data || []
+          this.queryParam.subclasses = undefined
+        }).catch(err=>{
+          this.clearSubclass()
+          console.log(err)
+        })
+      },
+      onLargeCategorySelect(val){
+        if (val) {
+          this.getSubclassOptions(val)
+        } else {
+          this.clearSubclass()
+        }
+      },
+      clearSubclass(){
+        this.selectOptions.subclasses = []
+        this.queryParam.subclasses = undefined
+      },
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      TransferOrderDelete (record) {
+        TransferOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            if (this.infoId && record.id) {
+              this.infoId = null
+            }
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      infoCallback(){
+        this.$refs.table.refresh()
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/infoBlock.vue
new file mode 100644
index 0000000..b06fb54
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/infoBlock.vue
@@ -0,0 +1,116 @@
+<template>
+  <div class="transfer-order-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <template slot="statusSlots" slot-scope="text,record">
+        <a-tag :color="text==='瀹屾垚'?'#008000':(
+          text==='鎵ц涓�'?'#1e90ff':(
+            text==='鍙栨秷'?'#556b2f':(
+              text==='鏆傚仠'?'#8b0000':(
+                text==='鎾ゅ洖'?'#ff00ff':'gray'
+              )
+            )
+          )
+        )">{{text}}</a-tag>
+      </template>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { TransferOrderDetailPage } from '@/api/modular/main/TransferOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'transferOrderInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+		{ title: '鐗╂枡瀵嗗害', align:'center', dataIndex: 'materialSensity', key: 'materialSensity' },
+        { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' },
+				
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.Id = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return TransferOrderDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.transfer-order-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/View_AccessDetails/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/View_AccessDetails/index.vue
new file mode 100644
index 0000000..882e728
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/View_AccessDetails/index.vue
@@ -0,0 +1,268 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('View_AccessDetails:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="浠诲姟鍙�">
+                <a-input v-model="queryParam.taskno" allow-clear placeholder="璇疯緭鍏ヤ换鍔″彿"/>
+              </a-form-item>
+            </a-col><a-col :md="8" :sm="24">
+              <a-form-item label="浠诲姟鏂瑰紡">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskmodel" placeholder="璇烽�夋嫨浠诲姟鏂瑰紡">
+                  <a-select-option v-for="(item,index) in taskmodelData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col><template v-if="advanced"><a-col :md="8" :sm="24">
+                <a-form-item label="浠诲姟绫诲瀷">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.tasktype" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
+                    <a-select-option v-for="(item,index) in tasktypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="浠诲姟鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskstatus" placeholder="璇烽�夋嫨浠诲姟鐘舵��">
+                    <a-select-option v-for="(item,index) in taskstatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鏉ユ簮">
+                  <a-input v-model="queryParam.sourceplace" allow-clear placeholder="璇疯緭鍏ユ潵婧�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩爣">
+                  <a-input v-model="queryParam.toplace" allow-clear placeholder="璇疯緭鍏ョ洰鏍�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎵樼洏缂栫爜">
+                  <a-input v-model="queryParam.containercode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樼紪鐮�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡鍚嶇О">
+                  <a-input v-model="queryParam.materialname" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡缂栫爜">
+                  <a-input v-model="queryParam.materialno" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡鎵规">
+                  <a-input v-model="queryParam.materialbatch" allow-clear placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡灏哄">
+                  <a-input v-model="queryParam.materialspec" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�"/>
+                </a-form-item>
+              </a-col>            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.taskNo"
+      >
+        <span slot="taskmodelscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'#2db7f5':'#87d068'">{{ 'task_model' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="tasktypescopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'#2db7f5':(text===2?'#87d068':'#108ee9')">{{ 'task_type' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="taskstatusscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'#2db7f5':(text===2?'#108ee9':'#87d068')">{{ 'task_status' | dictType(text) }}</a-tag>
+        </span>
+        <template class="table-operator" slot="operator" >
+          <!-- <a-button type="info" v-if="hasPerm('View_AccessDetails:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('View_AccessDetails:exportExcel')" icon="download" @click="FoamingAgvTaskToExcel()">
+            瀵煎嚭
+          </a-button> -->
+        </template>
+      </s-table>
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { View_AccessDetailsPage } from '@/api/modular/main/View_AccessDetailsManage'
+  export default {
+    components: {
+      STable
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '浠诲姟鍙�',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'taskNo'
+          },
+          {
+            title: '浠诲姟鏂瑰紡',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'taskModel',
+            scopedSlots: { customRender: 'taskmodelscopedSlots' }
+          },
+          {
+            title: '浠诲姟绫诲瀷',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'taskType',
+            scopedSlots: { customRender: 'tasktypescopedSlots' }
+          },
+          {
+            title: '浠诲姟鐘舵��',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'taskStatus',
+            scopedSlots: { customRender: 'taskstatusscopedSlots' }
+          },
+          {
+            title: '鏉ユ簮',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'description'
+          },
+          {
+            title: '鐩爣',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'toPlaceName'
+          },
+          {
+            title: '鎵樼洏缂栫爜',
+            align: 'center',
+            sorter: true,
+            dataIndex: 'containerCode'
+          },
+          {
+            title: '鐗╂枡鍚嶇О',
+            align: 'center',
+            dataIndex: 'materialName'
+          },
+          {
+            title: '鐗╂枡缂栫爜',
+            align: 'center',
+            dataIndex: 'materialNo'
+          },
+          {
+            title: '鐗╂枡鎵规',
+            align: 'center',
+            dataIndex: 'materialBatch'
+          },
+          {
+            title: '鐗╂枡灏哄',
+            align: 'center',
+            dataIndex: 'materialSpec'
+          },
+          {
+            title: '鍒涘缓鏃堕棿',
+            align: 'center',
+            dataIndex: 'taskCreatedTime',
+            width:170
+          },
+          {
+            title: '瀹屾垚鏃堕棿',
+            align: 'center',
+            dataIndex: 'taskUpdatedTime',
+            width:170
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return View_AccessDetailsPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        taskmodelData: [],
+        tasktypeData: [],
+        taskstatusData: [],
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      // if (this.hasPerm('View_AccessDetails:edit') || this.hasPerm('View_AccessDetails:delete')) {
+      //   this.columns.push({
+      //     title: '鎿嶄綔',
+      //     width: '150px',
+      //     dataIndex: 'action',
+      //     scopedSlots: { customRender: 'action' }
+      //   })
+      // }
+      const taskmodelOption = this.$options
+      this.taskmodelData = taskmodelOption.filters['dictData']('task_model')
+      const tasktypeOption = this.$options
+      this.tasktypeData = tasktypeOption.filters['dictData']('task_type')
+      const taskstatusOption = this.$options
+      this.taskstatusData = taskstatusOption.filters['dictData']('task_status')
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      View_AccessDetailsDelete (record) {
+        View_AccessDetailsDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/addForm.vue
new file mode 100644
index 0000000..1d1f2ab
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/addForm.vue
@@ -0,0 +1,92 @@
+锘�<template>
+  <a-modal
+    title="鏂板搴撳瓨鐗╂枡瑙嗗浘"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" v-decorator="['materialName']" />
+        </a-form-item>
+        <a-form-item label="鐗╂枡缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�" v-decorator="['materialNo']" />
+        </a-form-item>
+        <a-form-item label="鐗╂枡鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ墿鏂欐壒娆�" v-decorator="['materialBatch']" />
+        </a-form-item>
+        <a-form-item label="瀹炵墿搴撳瓨鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ疄鐗╁簱瀛樻暟" v-decorator="['stockNumber']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    View_Materialstock_MaterialAdd
+  } from '@/api/modular/main/View_Materialstock_MaterialManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            View_Materialstock_MaterialAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/editForm.vue
new file mode 100644
index 0000000..44443e9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/editForm.vue
@@ -0,0 +1,107 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫搴撳瓨鐗╂枡瑙嗗浘"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" v-decorator="['materialName']" />
+        </a-form-item>
+        <a-form-item label="鐗╂枡缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�" v-decorator="['materialNo']" />
+        </a-form-item>
+        <a-form-item label="鐗╂枡鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ墿鏂欐壒娆�" v-decorator="['materialBatch']" />
+        </a-form-item>
+        <a-form-item label="瀹炵墿搴撳瓨鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ疄鐗╁簱瀛樻暟" v-decorator="['stockNumber']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    View_Materialstock_MaterialEdit
+  } from '@/api/modular/main/View_Materialstock_MaterialManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              materialName: record.materialName,
+              materialNo: record.materialNo,
+              materialBatch: record.materialBatch,
+              stockNumber: record.stockNumber
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            View_Materialstock_MaterialEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/excelForm.vue
new file mode 100644
index 0000000..0a0f962
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="view_Materialstock_MaterialDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+	import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+	
+	import { View_Materialstock_MaterialFromExcel, View_Materialstock_MaterialDownloadExcelTemplate} from '@/api/modular/main/View_Materialstock_MaterialManage'
+	import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+	export default {
+	components: {
+	},
+	data() {
+	return {
+	visible: false,
+	detailed: false,
+	confirmLoading: false,
+	fileList: [],
+	importExcelTypeData: [],
+	importExcelType: '1',
+	uploadFile: null,
+	columns: [],
+	dataList: [],
+	demandText:'',
+	columnText: ''
+	}
+	},
+	methods: {
+	index() {
+	this.visible = true;
+	this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+	this.demandText = parseDemandText("view_Materialstock_MaterialDownloadExcelTemplate")
+	window.downloadFile = this.view_Materialstock_MaterialDownloadExcelTemplate;
+	this.getTable();
+	},
+	showDemand() {
+	this.detailed = !this.detailed;
+	},
+	customRequest(document) {
+	this.uploadFile = document
+	},
+	getTable() {
+	sysExcelTemplateGetColumnList({className: "View_Materialstock_Material"}).then(res =>
+	{
+	if (res.success) {
+	this.columns =[];
+	this.dataList = [{}];
+	res.data.forEach(x => {
+	this.columns.push({
+	dataIndex: x.columnName,
+	key: x.columnName,
+	title: x.columnComment
+	});
+	this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+	});
+	this.columnText = parseExcelFieldText(res.data);
+	}
+	});
+	},
+	beforeUpload(fileInfo) {
+	let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+	if (!res.success) {
+	this.$message.warning(res.msg)
+	return false
+	}
+	setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+	},
+	handleChange(fileInfo) {
+	if (fileInfo.file.status === 'error') {
+	fileInfo.fileList.splice(0, 1)
+	}
+	if (fileInfo.file.status === 'done') {
+	if (fileInfo.fileList.length > 1) {
+	fileInfo.fileList.splice(0, 1)
+	}
+	this.fileList = fileInfo.file
+	}
+	},
+	handleSubmit() {
+	this.confirmLoading = true
+	const formData = new FormData()
+	formData.append('file', this.uploadFile.file)
+	view_Materialstock_MaterialFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+	this.$message.success('鎿嶄綔鎴愬姛')
+	this.confirmLoading = false
+	this.$emit('ok', [])
+	this.handleCancel()
+	}).finally((res)=>{this.confirmLoading = false})
+	},
+	handleCancel() {
+	this.visible = false
+	this.detailed = false
+	},
+	view_Materialstock_MaterialDownloadExcelTemplate() {
+	view_Materialstock_MaterialDownloadExcelTemplate({version: "v2"}).then((res) => {
+	downloadFile(res);
+	}).catch((err) => {
+	this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+	})
+	}
+	}
+	}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/index.vue
new file mode 100644
index 0000000..733148f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/index.vue
@@ -0,0 +1,172 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('View_Materialstock_Material:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐗╂枡鍚嶇О">
+                <a-input v-model="queryParam.materialName" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐗╂枡缂栧彿">
+                <a-input v-model="queryParam.materialNo" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡鎵规">
+                  <a-input v-model="queryParam.materialBatch" allow-clear placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"/>
+                </a-form-item>
+              </a-col>            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('View_Materialstock_Material:add')" >
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('view_Materialstock_Material:exportExcel')" icon="download" @click="view_Materialstock_MaterialToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('View_Materialstock_Material:add')" icon="plus" @click="$refs.addForm.add()">鏂板搴撳瓨鐗╂枡瑙嗗浘</a-button>
+        </template>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('View_Materialstock_Material:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('View_Materialstock_Material:edit') & hasPerm('View_Materialstock_Material:delete')"/>
+          <a-popconfirm v-if="hasPerm('View_Materialstock_Material:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => View_Materialstock_MaterialDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { View_Materialstock_MaterialPage, View_Materialstock_MaterialDelete } from '@/api/modular/main/View_Materialstock_MaterialManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鐗╂枡鍚嶇О',
+            align: 'center',
+sorter: true,
+            dataIndex: 'materialName'
+          },
+          {
+            title: '鐗╂枡缂栧彿',
+            align: 'center',
+sorter: true,
+            dataIndex: 'materialNo'
+          },
+          {
+            title: '鐗╂枡鎵规',
+            align: 'center',
+sorter: true,
+            dataIndex: 'materialBatch'
+          },
+          {
+            title: '瀹炵墿搴撳瓨鏁�',
+            align: 'center',
+sorter: true,
+            dataIndex: 'stockNumber'
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return View_Materialstock_MaterialPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      if (this.hasPerm('View_Materialstock_Material:edit') || this.hasPerm('View_Materialstock_Material:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+	  const path = this.$route.path
+    const columnStr = window.localStorage.getItem(path)
+    if(columnStr) {
+      this.columns = JSON.parse(columnStr)
+    }
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      View_Materialstock_MaterialDelete (record) {
+        View_Materialstock_MaterialDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/addForm.vue
new file mode 100644
index 0000000..b3d4a72
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/addForm.vue
@@ -0,0 +1,121 @@
+锘�<template>
+  <a-modal
+    title="鏂板搴撳尯淇℃伅"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['areaName', {rules: [{ required: true, message: '璇疯緭鍏ュ悕绉帮紒' }]}]" />
+        </a-form-item>
+        <a-form-item label="鎻忚堪" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ弿杩�" v-decorator="['areaDesc', {rules: [{ required: true, message: '璇疯緭鍏ユ弿杩帮紒' }]}]" />
+        </a-form-item>
+        <!-- <a-form-item label="鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鐘舵��" v-decorator="['areaStatus', {rules: [{ required: true, message: '璇烽�夋嫨鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in areaStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item> -->
+        <a-form-item label="鍒嗙被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍒嗙被" v-decorator="['areaType', {rules: [{ required: true, message: '璇烽�夋嫨鍒嗙被锛�' }]}]">
+            <a-select-option v-for="(item,index) in areaTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炶溅闂�" v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]">
+            <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鏄惁涓洪挗骞冲彴" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['isSteel', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <!-- <a-form-item label="绛炬牳鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨绛炬牳鐘舵��" v-decorator="['issueState', {rules: [{ required: true, message: '璇烽�夋嫨绛炬牳鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in issueStateData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item> -->
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsAreaAdd
+  } from '@/api/modular/main/WmsAreaManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        areaStatusData: [],
+        areaTypeData: [],
+        workShopTypeData: [],
+        //issueStateData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const areaStatusOption = this.$options
+        this.areaStatusData = areaStatusOption.filters['dictData']('common_status')
+        const areaTypeOption = this.$options
+        this.areaTypeData = areaTypeOption.filters['dictData']('area_type')
+        const workShopTypeOption = this.$options
+        this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+        // const issueStateOption = this.$options
+        // this.issueStateData = issueStateOption.filters['dictData']('issue_state')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            WmsAreaAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/editForm.vue
new file mode 100644
index 0000000..6872344
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/editForm.vue
@@ -0,0 +1,143 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫搴撳尯淇℃伅"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="鎻忚堪" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ弿杩�" v-decorator="['areaDesc']" />
+        </a-form-item>
+        <!-- <a-form-item label="鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鐘舵��" v-decorator="['areaStatus', {rules: [{ required: true, message: '璇烽�夋嫨鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in areaStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item> -->
+        <a-form-item label="鍒嗙被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍒嗙被" v-decorator="['areaType', {rules: [{ required: true, message: '璇烽�夋嫨鍒嗙被锛�' }]}]">
+            <a-select-option v-for="(item,index) in areaTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炶溅闂�" v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]">
+            <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鏄惁涓洪挗骞冲彴" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['isSteel', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item v-show="false">
+          <a-input v-decorator="['id']" />
+        </a-form-item>
+        <!-- <a-form-item label="绛炬牳鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨绛炬牳鐘舵��" v-decorator="['issueState', {rules: [{ required: true, message: '璇烽�夋嫨绛炬牳鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in issueStateData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item> -->
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsAreaEdit
+  } from '@/api/modular/main/WmsAreaManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        areaStatusData: [],
+        areaTypeData: [],
+        workShopTypeData: [],
+        //issueStateData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const areaStatusOption = this.$options
+        this.areaStatusData = areaStatusOption.filters['dictData']('common_status')
+        const areaTypeOption = this.$options
+        this.areaTypeData = areaTypeOption.filters['dictData']('area_type')
+        const workShopTypeOption = this.$options
+        this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+        // const issueStateOption = this.$options
+        // this.issueStateData = issueStateOption.filters['dictData']('issue_state')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              areaName: record.areaName,
+              areaDesc: record.areaDesc,
+              areaStatus: record.areaStatus,
+              areaType: record.areaType,
+              isSteel: record.isSteel,
+              workShopType: record.workShopType,
+              issueState: record.issueState
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            WmsAreaEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/index.vue
new file mode 100644
index 0000000..9d1db00
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/index.vue
@@ -0,0 +1,232 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsArea:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍚嶇О">
+                <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ュ悕绉�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+                <a-form-item label="鍒嗙被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.areaType" placeholder="璇烽�夋嫨鍒嗙被">
+                    <a-select-option v-for="(item,index) in areaTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+            <template v-if="advanced">
+              <!-- <a-col :md="8" :sm="24">
+              <a-form-item label="鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.areaStatus" placeholder="璇烽�夋嫨鐘舵��">
+                  <a-select-option v-for="(item,index) in areaStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col> -->
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎵�灞炶溅闂�">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.workShopType" placeholder="璇烽�夋嫨鎵�灞炶溅闂�">
+                    <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <!-- <a-col :md="8" :sm="24">
+                <a-form-item label="绛炬牳鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.issueState" placeholder="璇烽�夋嫨绛炬牳鐘舵��">
+                    <a-select-option v-for="(item,index) in issueStateData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>             -->
+            </template>
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsArea:add')" >
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('wmsArea:exportExcel')" icon="download" @click="wmsAreaToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('WmsArea:add')" icon="plus" @click="$refs.addForm.add()">鏂板</a-button>
+        </template>
+        <span slot="areaStatusscopedSlots" slot-scope="text">
+          {{ 'common_status' | dictType(text) }}
+        </span>
+        <span slot="areaTypescopedSlots" slot-scope="text">
+          {{ 'area_type' | dictType(text) }}
+        </span>
+        <span slot="workShopTypescopedSlots" slot-scope="text">
+          {{ 'les_workshop_type' | dictType(text) }}
+        </span>
+        <!-- <span slot="issueStatescopedSlots" slot-scope="text">
+          {{ 'issue_state' | dictType(text) }}
+        </span> -->
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsArea:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('WmsArea:edit') & hasPerm('WmsArea:delete')"/>
+          <a-popconfirm v-if="hasPerm('WmsArea:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsAreaDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { WmsAreaPage, WmsAreaDelete } from '@/api/modular/main/WmsAreaManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鍚嶇О',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '鎻忚堪',
+            align: 'center',
+            dataIndex: 'areaDesc'
+          },
+          {
+            title: '鍒嗙被',
+            align: 'center',
+            dataIndex: 'areaType',
+            scopedSlots: { customRender: 'areaTypescopedSlots' }
+          },
+          // {
+          //   title: '鐘舵��',
+          //   align: 'center',
+          //   dataIndex: 'areaStatus',
+          //   scopedSlots: { customRender: 'areaStatusscopedSlots' }
+          // },
+          {
+            title: '鏄惁涓洪挗骞冲彴',
+            align: 'center',
+            customRender: (value) => (value ? <a-tag color="#87d068">鏄�</a-tag> : <a-tag color="gray">鍚�</a-tag>),
+            dataIndex: 'isSteel'
+          },
+          {
+            title: '鎵�灞炶溅闂�',
+            align: 'center',
+            dataIndex: 'workShopType',
+            scopedSlots: { customRender: 'workShopTypescopedSlots' }
+          },
+          // {
+          //   title: '绛炬牳鐘舵��',
+          //   align: 'center',
+          //   dataIndex: 'issueState',
+          //   scopedSlots: { customRender: 'issueStatescopedSlots' }
+          // }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return WmsAreaPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            res.data.rows = res.data.rows.map((_obj)=>{
+            _obj.areaStatus= _obj.areaStatus.toString()
+            _obj.areaType= _obj.areaType.toString()
+            _obj.workShopType= _obj.workShopType.toString()
+            _obj.issueState= _obj.issueState.toString()
+				    return _obj;
+			    })
+            return res.data
+          })
+        },
+        areaStatusData: [],
+        areaTypeData: [],
+        workShopTypeData: [],
+        issueStateData: [],
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      if (this.hasPerm('WmsArea:edit') || this.hasPerm('WmsArea:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+      const areaStatusOption = this.$options
+      this.areaStatusData = areaStatusOption.filters['dictData']('common_status')
+      const areaTypeOption = this.$options
+      this.areaTypeData = areaTypeOption.filters['dictData']('area_type')
+      const workShopTypeOption = this.$options
+      this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+      // const issueStateOption = this.$options
+      // this.issueStateData = issueStateOption.filters['dictData']('issue_state')
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      WmsAreaDelete (record) {
+        WmsAreaDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/addForm.vue
new file mode 100644
index 0000000..098707d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/addForm.vue
@@ -0,0 +1,124 @@
+锘�<template>
+  <a-modal
+    title="鏂板缁勮杞﹂棿鐗╂枡淇℃伅"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鐗╂枡鍚嶇О" v-decorator="['materialId']">
+            <a-select-option v-for="(item,index) in WmsAssembleMaterialData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="搴撳尯鍙傛暟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ簱鍖哄弬鏁�" v-decorator="['areaNameParameter']" />
+        </a-form-item>
+        <a-form-item label="宸ヤ綔鍖哄弬鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ伐浣滃尯鍙傛暟" v-decorator="['stationNameParameter']" />
+        </a-form-item>
+        <a-form-item label="鐔熷寲鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ョ啛鍖栨椂闂�" style="width: 100%" v-decorator="['maturationTime']" />
+        </a-form-item>
+        <a-form-item label="鏄惁闇�瑕佺啛鍖�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['isMaturation', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item label="閫昏緫鍖哄煙" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ラ�昏緫鍖哄煙" style="width: 100%" v-decorator="['logicalName']" />
+        </a-form-item>
+        <a-form-item label="宸ユ" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨宸ユ" v-decorator="['lesWorkshopSection', {rules: [{ required: true, message: '璇烽�夋嫨宸ユ锛�' }]}]">
+            <a-select-option v-for="(item,index) in lesWorkshopSectionData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="绛炬牳鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨绛炬牳鐘舵��" v-decorator="['issueState', {rules: [{ required: true, message: '璇烽�夋嫨绛炬牳鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in issueStateData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsAssembleMaterialAttributFkWmsAssembleMaterialList,
+    WmsAssembleMaterialAttributAdd
+  } from '@/api/modular/main/WmsAssembleMaterialAttributManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        lesWorkshopSectionData: [],
+        issueStateData: [],
+        WmsAssembleMaterialData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      WmsAssembleMaterialAttributFkWmsAssembleMaterialList() {
+          WmsAssembleMaterialAttributFkWmsAssembleMaterialList().then(res => {
+            this.WmsAssembleMaterialData = res.data
+          })
+      },
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const lesWorkshopSectionOption = this.$options
+        this.lesWorkshopSectionData = lesWorkshopSectionOption.filters['dictData']('lesworkshop_section')
+        const issueStateOption = this.$options
+        this.issueStateData = issueStateOption.filters['dictData']('issue_state')
+      this.WmsAssembleMaterialAttributFkWmsAssembleMaterialList()
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            WmsAssembleMaterialAttributAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/editForm.vue
new file mode 100644
index 0000000..d370126
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/editForm.vue
@@ -0,0 +1,145 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫缁勮杞﹂棿鐗╂枡淇℃伅"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鐗╂枡鍚嶇О" v-decorator="['materialId']">
+            <a-select-option v-for="(item,index) in WmsAssembleMaterialData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="搴撳尯鍙傛暟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ簱鍖哄弬鏁�" v-decorator="['areaNameParameter']" />
+        </a-form-item>
+        <a-form-item label="宸ヤ綔鍖哄弬鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ伐浣滃尯鍙傛暟" v-decorator="['stationNameParameter']" />
+        </a-form-item>
+        <a-form-item label="鐔熷寲鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ョ啛鍖栨椂闂�" style="width: 100%" v-decorator="['maturationTime']" />
+        </a-form-item>
+        <a-form-item label="鏄惁闇�瑕佺啛鍖�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['isMaturation', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item label="閫昏緫鍖哄煙" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ラ�昏緫鍖哄煙" style="width: 100%" v-decorator="['logicalName']" />
+        </a-form-item>
+        <a-form-item label="宸ユ" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨宸ユ" v-decorator="['lesWorkshopSection', {rules: [{ required: true, message: '璇烽�夋嫨宸ユ锛�' }]}]">
+            <a-select-option v-for="(item,index) in lesWorkshopSectionData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+        <a-form-item label="绛炬牳鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨绛炬牳鐘舵��" v-decorator="['issueState', {rules: [{ required: true, message: '璇烽�夋嫨绛炬牳鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in issueStateData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsAssembleMaterialAttributFkWmsAssembleMaterialList,
+    WmsAssembleMaterialAttributEdit
+  } from '@/api/modular/main/WmsAssembleMaterialAttributManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        lesWorkshopSectionData: [],
+        issueStateData: [],
+        WmsAssembleMaterialData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      WmsAssembleMaterialAttributFkWmsAssembleMaterialList() {
+          WmsAssembleMaterialAttributFkWmsAssembleMaterialList().then(res => {
+            this.WmsAssembleMaterialData = res.data
+          })
+      },
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const lesWorkshopSectionOption = this.$options
+        this.lesWorkshopSectionData = lesWorkshopSectionOption.filters['dictData']('lesworkshop_section')
+        const issueStateOption = this.$options
+        this.issueStateData = issueStateOption.filters['dictData']('issue_state')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              materialId: record.materialId,
+              areaNameParameter: record.areaNameParameter,
+              stationNameParameter: record.stationNameParameter,
+              maturationTime: record.maturationTime,
+              isMaturation: record.isMaturation,
+              logicalName: record.logicalName,
+              lesWorkshopSection: record.lesWorkshopSection,
+              issueState: record.issueState
+            }
+          )
+        })
+      this.WmsAssembleMaterialAttributFkWmsAssembleMaterialList()
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            WmsAssembleMaterialAttributEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/index.vue
new file mode 100644
index 0000000..4584ecf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/index.vue
@@ -0,0 +1,215 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsAssembleMaterialAttribut:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="搴撳尯鍙傛暟">
+                <a-input v-model="queryParam.areaNameParameter" allow-clear placeholder="璇疯緭鍏ュ簱鍖哄弬鏁�"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="宸ヤ綔鍖哄弬鏁�">
+                  <a-input v-model="queryParam.stationNameParameter" allow-clear placeholder="璇疯緭鍏ュ伐浣滃尯鍙傛暟"/>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="鐔熷寲鏃堕棿">
+                  <a-input-number v-model="queryParam.maturationTime" style="width: 100%" allow-clear placeholder="璇疯緭鍏ョ啛鍖栨椂闂�"/>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="閫昏緫鍖哄煙">
+                  <a-input-number v-model="queryParam.logicalName" style="width: 100%" allow-clear placeholder="璇疯緭鍏ラ�昏緫鍖哄煙"/>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="宸ユ">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.lesWorkshopSection" placeholder="璇烽�夋嫨宸ユ">
+                    <a-select-option v-for="(item,index) in lesWorkshopSectionData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="绛炬牳鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.issueState" placeholder="璇烽�夋嫨绛炬牳鐘舵��">
+                    <a-select-option v-for="(item,index) in issueStateData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsAssembleMaterialAttribut:add')" >
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('wmsAssembleMaterialAttribut:exportExcel')" icon="download" @click="wmsAssembleMaterialAttributToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('WmsAssembleMaterialAttribut:add')" icon="plus" @click="$refs.addForm.add()">鏂板缁勮杞﹂棿鐗╂枡淇℃伅</a-button>
+        </template>
+        <span slot="lesWorkshopSectionscopedSlots" slot-scope="text">
+          {{ 'lesworkshop_section' | dictType(text) }}
+        </span>
+        <span slot="issueStatescopedSlots" slot-scope="text">
+          {{ 'issue_state' | dictType(text) }}
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsAssembleMaterialAttribut:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('WmsAssembleMaterialAttribut:edit') & hasPerm('WmsAssembleMaterialAttribut:delete')"/>
+          <a-popconfirm v-if="hasPerm('WmsAssembleMaterialAttribut:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsAssembleMaterialAttributDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { WmsAssembleMaterialAttributPage, WmsAssembleMaterialAttributDelete } from '@/api/modular/main/WmsAssembleMaterialAttributManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鐗╂枡鍚嶇О',
+            align: 'center',
+            customRender: (value, record) => record.wmsAssembleMaterial.materialName,
+            dataIndex: 'materialId'
+          },
+          {
+            title: '搴撳尯鍙傛暟',
+            align: 'center',
+            dataIndex: 'areaNameParameter'
+          },
+          {
+            title: '宸ヤ綔鍖哄弬鏁�',
+            align: 'center',
+            dataIndex: 'stationNameParameter'
+          },
+          {
+            title: '鐔熷寲鏃堕棿',
+            align: 'center',
+            dataIndex: 'maturationTime'
+          },
+          {
+            title: '鏄惁闇�瑕佺啛鍖�',
+            align: 'center',
+            customRender: (value) => (value ? <a-tag color="green">True</a-tag> : <a-tag color="volcano">False</a-tag>),
+            dataIndex: 'isMaturation'
+          },
+          {
+            title: '閫昏緫鍖哄煙',
+            align: 'center',
+            dataIndex: 'logicalName'
+          },
+          {
+            title: '宸ユ',
+            align: 'center',
+            dataIndex: 'lesWorkshopSection',
+            scopedSlots: { customRender: 'lesWorkshopSectionscopedSlots' }
+          },
+          {
+            title: '绛炬牳鐘舵��',
+            align: 'center',
+            dataIndex: 'issueState',
+            scopedSlots: { customRender: 'issueStatescopedSlots' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return WmsAssembleMaterialAttributPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        lesWorkshopSectionData: [],
+        issueStateData: [],
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      if (this.hasPerm('WmsAssembleMaterialAttribut:edit') || this.hasPerm('WmsAssembleMaterialAttribut:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+      const lesWorkshopSectionOption = this.$options
+      this.lesWorkshopSectionData = lesWorkshopSectionOption.filters['dictData']('lesworkshop_section')
+      const issueStateOption = this.$options
+      this.issueStateData = issueStateOption.filters['dictData']('issue_state')
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      WmsAssembleMaterialAttributDelete (record) {
+        WmsAssembleMaterialAttributDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBindIn/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBindIn/index.vue
new file mode 100644
index 0000000..514186b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBindIn/index.vue
@@ -0,0 +1,16 @@
+锘�<template>
+  <div>
+
+  </div>
+</template>
+<script>
+  
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/addForm.vue
new file mode 100644
index 0000000..26f876e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/addForm.vue
@@ -0,0 +1,142 @@
+锘�<template>
+  <a-modal
+    title="鏂板鎵樼洏淇℃伅"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鎵樼洏缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ墭鐩樼紪鍙�" v-decorator="['containerCode', {rules: [{ required: true, message: '璇疯緭鍏ユ墭鐩樼紪鍙凤紒' }]}]" />
+        </a-form-item>
+        <a-form-item label="鎵樼洏绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵樼洏绫诲瀷" v-decorator="['containerType', {rules: [{ required: true, message: '璇烽�夋嫨绫诲瀷锛�' }]}]">
+            <a-select-option v-for="(item,index) in containerTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <!-- <a-form-item label="鎵樼洏鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵樼洏鐘舵��" v-decorator="['containerStatus', {rules: [{ required: true, message: '璇烽�夋嫨鎵樼洏鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in containerStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item> -->
+        <!-- <a-form-item label="鏁伴噺" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ユ暟閲�" style="width: 100%" v-decorator="['Quantity', {rules: [{ required: true, message: '璇疯緭鍏ユ暟閲忥紒' }]}]" />
+        </a-form-item> -->
+        <a-form-item label="闀垮害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ暱搴�" v-decorator="['specLength']" />
+        </a-form-item>
+        <a-form-item label="瀹藉害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ュ搴�" v-decorator="['specWidth']" />
+        </a-form-item>
+        <a-form-item label="楂樺害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ珮搴�" v-decorator="['specHeight']" />
+        </a-form-item>
+        <!-- <a-form-item label="闄愰暱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ檺闀�" v-decorator="['limitLength']" />
+        </a-form-item>
+        <a-form-item label="闄愬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ檺瀹�" v-decorator="['limitWidth']" />
+        </a-form-item>
+        <a-form-item label="闄愰珮" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ檺楂�" v-decorator="['limitHeight']" />
+        </a-form-item>
+        <a-form-item label="杞介噸涓婇檺" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ヨ浇閲嶄笂闄�" v-decorator="['maxWeight']" />
+        </a-form-item> -->
+        <!-- <a-form-item label="鐖舵墭鐩業d" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ埗鎵樼洏Id" v-decorator="['parentContainerId']" />
+        </a-form-item> -->
+        <!-- <a-form-item label="鎵樼洏鍒嗙被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵樼洏鍒嗙被" v-decorator="['containerCategory', {rules: [{ required: true, message: '璇烽�夋嫨鎵樼洏鍒嗙被锛�' }]}]">
+            <a-select-option v-for="(item,index) in containerCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炶溅闂�" v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]">
+            <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item> -->
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsContainerAdd
+  } from '@/api/modular/main/WmsContainerManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        containerTypeData: [],
+        containerStatusData: [],
+        containerCategoryData: [],
+        workShopTypeData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        })
+        const containerTypeOption = this.$options
+        this.containerTypeData = containerTypeOption.filters['dictData']('container_type')
+        const containerStatusOption = this.$options
+        this.containerStatusData = containerStatusOption.filters['dictData']('container_status')
+        const containerCategoryOption = this.$options
+        this.containerCategoryData = containerCategoryOption.filters['dictData']('container_category')
+        const workShopTypeOption = this.$options
+        this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            WmsContainerAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/editForm.vue
new file mode 100644
index 0000000..c7dfa1e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/editForm.vue
@@ -0,0 +1,165 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫鎵樼洏淇℃伅"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鎵樼洏缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input disabled placeholder="璇疯緭鍏ユ墭鐩樼紪鍙�" v-decorator="['containerCode', {rules: [{ required: true, message: '璇疯緭鍏ユ墭鐩樼紪鍙凤紒' }]}]" />
+        </a-form-item>
+        <a-form-item label="绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨绫诲瀷" v-decorator="['containerType', {rules: [{ required: true, message: '璇烽�夋嫨绫诲瀷锛�' }]}]">
+            <a-select-option v-for="(item,index) in containerTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鎵樼洏鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵樼洏鐘舵��" v-decorator="['containerStatus', {rules: [{ required: true, message: '璇烽�夋嫨鎵樼洏鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in containerStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="闀垮害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ暱搴�" v-decorator="['specLength']" />
+        </a-form-item>
+        <a-form-item label="瀹藉害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ュ搴�" v-decorator="['specWidth']" />
+        </a-form-item>
+        <a-form-item label="楂樺害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ珮搴�" v-decorator="['specHeight']" />
+        </a-form-item>
+        <!-- <a-form-item label="闄愰暱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ檺闀�" v-decorator="['limitLength']" />
+        </a-form-item>
+        <a-form-item label="闄愬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ檺瀹�" v-decorator="['limitWidth']" />
+        </a-form-item>
+        <a-form-item label="闄愰珮" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ檺楂�" v-decorator="['limitHeight']" />
+        </a-form-item>
+        <a-form-item label="杞介噸涓婇檺" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ヨ浇閲嶄笂闄�" v-decorator="['maxWeight']" />
+        </a-form-item>
+        <a-form-item label="鐖舵墭鐩業d" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ埗鎵樼洏Id" v-decorator="['parentContainerId']" />
+        </a-form-item> -->
+        <!-- <a-form-item label="鎵樼洏鍒嗙被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵樼洏鍒嗙被" v-decorator="['containerCategory', {rules: [{ required: true, message: '璇烽�夋嫨鎵樼洏鍒嗙被锛�' }]}]">
+            <a-select-option v-for="(item,index) in containerCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炶溅闂�" v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]">
+            <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item> -->
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsContainerEdit
+  } from '@/api/modular/main/WmsContainerManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        containerTypeData: [],
+        containerStatusData: [],
+        containerCategoryData: [],
+        workShopTypeData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true
+		this.Id = record.id
+        this.$nextTick(() => {
+        })
+        // 娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const containerTypeOption = this.$options
+        this.containerTypeData = containerTypeOption.filters['dictData']('container_type')
+        const containerStatusOption = this.$options
+        this.containerStatusData = containerStatusOption.filters['dictData']('container_status')
+        const containerCategoryOption = this.$options
+        this.containerCategoryData = containerCategoryOption.filters['dictData']('container_category')
+        const workShopTypeOption = this.$options
+        this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              containerCode: record.containerCode,
+              containerType: record.containerType,
+              containerStatus: record.containerStatus,
+              specLength: record.specLength,
+              specWidth: record.specWidth,
+              specHeight: record.specHeight,
+              limitLength: record.limitLength,
+              limitWidth: record.limitWidth,
+              limitHeight: record.limitHeight,
+              maxWeight: record.maxWeight,
+              parentContainerId: record.parentContainerId
+              // containerCategory: record.containerCategory,
+              // workShopType: record.workShopType
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            WmsContainerEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/excelForm.vue
new file mode 100644
index 0000000..c9b7831
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/excelForm.vue
@@ -0,0 +1,195 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger
+            accept=".xlsx,.xls"
+            :multiple="false"
+            :custom-request="customRequest"
+            :file-list="fileList"
+            :before-upload="beforeUpload"
+            :remove="handleRemove">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">
+              {{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="deskFactoryDownloadExcelTemplate" type="link">
+          涓嬭浇瀵煎叆妯℃澘
+        </a-button>
+          锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record,index) => index" :pagination="false">
+      </a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { WmsContainerFromExcel, WmsContainerDownloadExcelTemplate} from '@/api/modular/main/WmsContainerManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+  components: {
+  },
+  data() {
+    return {
+      visible: false,
+      detailed: false,
+      confirmLoading: false,
+      fileList: [],
+      fileContext: {},
+      importExcelTypeData: [],
+      importExcelType: '1',
+      columns: [],
+      dataList: [],
+      demandText:'',
+      columnText: ''
+    }
+  },
+  methods: {
+    index() {
+      this.fileContext = {};
+      this.fileList = [];
+      this.visible = true;
+      this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+      this.demandText = parseDemandText()
+      window.downloadFile = this.deskFactoryDownloadExcelTemplate;
+      this.getTable();
+    },
+    showDemand() {
+      this.detailed = !this.detailed;
+    },
+    getTable() {
+      sysExcelTemplateGetColumnList({className: "DeskFactory"}).then(res => {
+        if (res.success) {
+          this.columns =[];
+          this.dataList = [{}];
+          res.data.forEach(x => {
+            this.columns.push({
+              dataIndex: x.columnName,
+              key: x.columnName,
+              title: x.columnComment
+            });
+            this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+          });
+          this.columnText = parseExcelFieldText(res.data);
+        }
+      });
+    },
+    customRequest(document) {
+      this.fileContext = document
+    },
+    beforeUpload(file) {
+      let res = checkFile(file, 1073741824, ['.xlsx', '.xls']);
+      if (!res.success) {
+        this.$message.warning(res.msg)
+        return false
+      }
+      setTimeout(() => {
+        this.fileContext.onSuccess(this.fileContext.file)
+        this.fileList = [this.fileContext.file]
+      }, 200)
+    },
+    handleRemove (file) {
+      const index = this.fileList.indexOf(file)
+      const newFileList = this.fileList.slice()
+      newFileList.splice(index, 1)
+      this.fileList = newFileList
+    },
+    handleSubmit() {
+      if(this.fileList.length < 1) {
+        this.$message.warning('璇峰厛涓婁紶鏂囦欢锛�')
+        return false
+      }
+      this.confirmLoading = true
+      const formData = new FormData()
+      formData.append('file', this.fileList[0])
+      WmsContainerFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.$emit('ok', [])
+        this.handleCancel()
+      }).finally((res)=> {
+        this.confirmLoading = false
+        this.fileList = []
+      })
+    },
+    handleCancel() {
+      this.visible = false
+      this.detailed = false
+    },
+    deskFactoryDownloadExcelTemplate() {
+      WmsContainerDownloadExcelTemplate({version: "v2"}).then((res) => {
+        downloadFile(res);
+      }).catch((err) => {
+        this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+      })
+    }
+  }
+}
+</script>
+<style scoped="">
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/index.vue
new file mode 100644
index 0000000..28cc998
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/index.vue
@@ -0,0 +1,306 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsContainer:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="缂栧彿">
+                <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ョ紪鍙�" />
+              </a-form-item>
+            </a-col><a-col :md="8" :sm="24">
+              <a-form-item label="绫诲瀷">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.containerType" placeholder="璇烽�夋嫨绫诲瀷">
+                  <a-select-option v-for="(item, index) in containerTypeData" :key="index" :value="item.code">{{ item.name
+                  }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col><template v-if="advanced"><a-col :md="8" :sm="24">
+                <a-form-item label="鎵樼洏鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.containerStatus"
+                    placeholder="璇烽�夋嫨鎵樼洏鐘舵��">
+                    <a-select-option v-for="(item, index) in containerStatusData" :key="index" :value="item.code">{{
+                      item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <!-- <a-col :md="8" :sm="24">
+                <a-form-item label="闀垮害">
+                  <a-input v-model="queryParam.specLength" allow-clear placeholder="璇疯緭鍏ラ暱搴�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="瀹藉害">
+                  <a-input v-model="queryParam.specWidth" allow-clear placeholder="璇疯緭鍏ュ搴�"/>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="鎵樼洏鍒嗙被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.containerCategory" placeholder="璇烽�夋嫨鎵樼洏鍒嗙被">
+                    <a-select-option v-for="(item,index) in containerCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col> -->
+              <!-- <a-col :md="8" :sm="24">
+                <a-form-item label="鎵�灞炶溅闂�">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.workShopType" placeholder="璇烽�夋嫨鎵�灞炶溅闂�">
+                    <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>             -->
+            </template>
+
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'" />
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table ref="table" :columns="columns" :data="loadData" :alert="true" :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template slot="operator" v-if="hasPerm('WmsContainer:add')">
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload"
+            @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('wmsContainer:exportExcel')" icon="download" @click="wmsContainerToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('WmsContainer:add')" icon="plus"
+            @click="$refs.addForm.add()">鏂板</a-button>
+        </template>
+        <span slot="containerTypescopedSlots" slot-scope="text">
+          <a-tag
+            :color="text === '1' ? '#cd853f' : (text === '2' ? '#d3d3d3' : (text === '3' ? '#1e90ff' : '#696969'))">{{
+              'container_type'
+              | dictType(text) }}</a-tag>
+        </span>
+        <span slot="containerStatusscopedSlots" slot-scope="text">
+          <a-tag
+            :color="text === '1' ? '#daa520' : (text === '2' ? '#cd5c5c' : (text === '3' ? '#add8e6' : '#696969'))">{{
+              'container_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="containerCategoryscopedSlots" slot-scope="text">
+          <a-tag :color="text === '1' ? '#00ffff' : (
+            text === '2' ? '#ffe4c4' : (
+              text === '3' ? '#8a2be2' : (
+                text === '4' ? '#5f9ea0' : (
+                  text === '5' ? '#00008b' : '#696969'
+                )
+              )
+            )
+          )
+            ">{{ 'container_category' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="workShopTypescopedSlots" slot-scope="text">
+          {{ 'les_workshop_type' | dictType(text) }}
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsContainer:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <!-- <a-divider type="vertical" v-if="hasPerm('WmsContainer:edit') & hasPerm('WmsContainer:delete')"/> -->
+          <!-- <a-popconfirm v-if="hasPerm('WmsContainer:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsContainerDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm> -->
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+      <excel-form ref="excelForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsContainerPage, WmsContainerDelete } from '@/api/modular/main/WmsContainerManage'
+import { exportExcel } from '@/utils/exportToExcel'
+import addForm from './addForm.vue'
+import editForm from './editForm.vue'
+import excelForm from './excelForm.vue'
+export default {
+  components: {
+    STable,
+    addForm,
+    editForm,
+    excelForm
+  },
+  data() {
+    return {
+      advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+      queryParam: {},
+      columns: [
+        {
+          title: '缂栧彿',
+          align: 'center',
+          dataIndex: 'containerCode'
+        },
+        {
+          title: '绫诲瀷',
+          align: 'center',
+          dataIndex: 'containerType',
+          scopedSlots: { customRender: 'containerTypescopedSlots' }
+        },
+        {
+          title: '鎵樼洏鐘舵��',
+          align: 'center',
+          dataIndex: 'containerStatus',
+          scopedSlots: { customRender: 'containerStatusscopedSlots' }
+        },
+        {
+          title: '闀垮害',
+          align: 'center',
+          dataIndex: 'specLength'
+        },
+        {
+          title: '瀹藉害',
+          align: 'center',
+          dataIndex: 'specWidth'
+        },
+        {
+          title: '楂樺害',
+          align: 'center',
+          dataIndex: 'specHeight'
+        },
+        // {
+        //   title: '闄愰暱',
+        //   align: 'center',
+        //   dataIndex: 'limitLength'
+        // },
+        // {
+        //   title: '闄愬',
+        //   align: 'center',
+        //   dataIndex: 'limitWidth'
+        // },
+        // {
+        //   title: '闄愰珮',
+        //   align: 'center',
+        //   dataIndex: 'limitHeight'
+        // },
+        // {
+        //   title: '杞介噸涓婇檺',
+        //   align: 'center',
+        //   dataIndex: 'maxWeight'
+        // }
+        // {
+        //   title: '鎵樼洏鍒嗙被',
+        //   align: 'center',
+        //   dataIndex: 'containerCategory',
+        //   scopedSlots: { customRender: 'containerCategoryscopedSlots' }
+        // }
+        // ,{
+        //   title: '鎵�灞炶溅闂�',
+        //   align: 'center',
+        //   dataIndex: 'workShopType',
+        //   scopedSlots: { customRender: 'workShopTypescopedSlots' }
+        // }
+      ],
+      tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: parameter => {
+        return WmsContainerPage(Object.assign(parameter, this.queryParam)).then((res) => {
+          res.data.rows = res.data.rows.map((_obj) => {
+            _obj.containerType = _obj.containerType.toString()
+            _obj.containerStatus = _obj.containerStatus.toString()
+            _obj.containerCategory = _obj.containerCategory.toString()
+            _obj.workShopType = _obj.workShopType.toString()
+            return _obj
+          })
+          return res.data
+        })
+      },
+      containerTypeData: [],
+      containerStatusData: [],
+      containerCategoryData: [],
+      workShopTypeData: [],
+      selectedRowKeys: [],
+      selectedRows: []
+    }
+  },
+  created() {
+    if (this.hasPerm('WmsContainer:edit') || this.hasPerm('WmsContainer:delete')) {
+      this.columns.push({
+        title: '鎿嶄綔',
+        width: '150px',
+        dataIndex: 'action',
+        scopedSlots: { customRender: 'action' }
+      })
+    }
+    const path = this.$route.path
+    const columnStr = window.localStorage.getItem(path)
+    if (columnStr) {
+      this.columns = JSON.parse(columnStr)
+    }
+    const containerTypeOption = this.$options
+    this.containerTypeData = containerTypeOption.filters['dictData']('container_type')
+    const containerStatusOption = this.$options
+    this.containerStatusData = containerStatusOption.filters['dictData']('container_status')
+    const containerCategoryOption = this.$options
+    this.containerCategoryData = containerCategoryOption.filters['dictData']('container_category')
+    const workShopTypeOption = this.$options
+    this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+  },
+  methods: {
+    /**
+     * 鏌ヨ鍙傛暟缁勮
+     */
+    switchingDate() {
+      const obj = JSON.parse(JSON.stringify(this.queryParam))
+      return obj
+    },
+    WmsContainerDelete(record) {
+      WmsContainerDelete(record).then((res) => {
+        if (res.success) {
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.$refs.table.refresh()
+        } else {
+          this.$message.error('鍒犻櫎澶辫触') // + res.message
+        }
+      })
+    },
+    toggleAdvanced() {
+      this.advanced = !this.advanced
+    },
+    handleOk() {
+      this.$refs.table.refresh()
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    },
+    //瀵煎嚭
+    wmsContainerToExcel() {
+      let entozh = {}
+      const path = this.$route.path
+      JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+        if (item.dataIndex != 'action' && item.checked) {
+          entozh[item.dataIndex] = item.title
+        }
+      })
+      WmsContainerPage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then(res => {
+        res.data.rows.map(item => {
+          item.containerType = this.$options.filters['dictType']('container_type',item.containerType)
+          item.containerStatus = this.$options.filters['dictType']('container_status',item.containerStatus)
+        })
+        exportExcel(res.data.rows, entozh, "xlsx", "瀹瑰櫒鍩虹淇℃伅琛�")
+      })
+
+    }
+  }
+}
+</script>
+<style lang="less">
+.table-operator {
+  margin-bottom: 18px;
+}
+
+button {
+  margin-right: 8px;
+}</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/addForm.vue
new file mode 100644
index 0000000..59d9883
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/addForm.vue
@@ -0,0 +1,105 @@
+锘�<template>
+  <a-modal
+    title="鏂板杞偍鍗�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['nO']" />
+        </a-form-item>
+        <a-form-item label="鍒涘缓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃ユ湡" v-decorator="['billdate']" @change="onChangebilldate"/>
+        </a-form-item>
+        <a-form-item label="鍒涘缓浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ垱寤轰汉" v-decorator="['creator']" />
+        </a-form-item>
+        <a-form-item label="鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叕鍙�" v-decorator="['companyname']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatus', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsDumpOrderAdd
+  } from '@/api/modular/main/WmsDumpOrderManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        billdateDateString: '',
+        orderStatusData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const orderStatusOption = this.$options
+        this.orderStatusData = orderStatusOption.filters['dictData']('order_status')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            values.billdate = this.billdateDateString
+            WmsDumpOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      onChangebilldate(date, dateString) {
+        this.billdateDateString = dateString
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/editForm.vue
new file mode 100644
index 0000000..b8651b9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/editForm.vue
@@ -0,0 +1,127 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫杞偍鍗�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['nO']" />
+        </a-form-item>
+        <a-form-item label="鍒涘缓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃ユ湡" v-decorator="['billdate']" @change="onChangebilldate"/>
+        </a-form-item>
+        <a-form-item label="鍒涘缓浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ垱寤轰汉" v-decorator="['creator']" />
+        </a-form-item>
+        <a-form-item label="鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叕鍙�" v-decorator="['companyname']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatus', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+    WmsDumpOrderEdit
+  } from '@/api/modular/main/WmsDumpOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        billdateDateString: '',
+        orderStatusData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      moment,
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const orderStatusOption = this.$options
+        this.orderStatusData = orderStatusOption.filters['dictData']('order_status')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              nO: record.nO,
+              creator: record.creator,
+              companyname: record.companyname,
+              orderStatus: record.orderStatus
+            }
+          )
+        })
+        this.form.getFieldDecorator('billdate', { initialValue: moment(record.billdate, 'YYYY-MM-DD') })
+        this.billdateDateString = moment(record.billdate).format('YYYY-MM-DD')
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            values.billdate = this.billdateDateString
+            this.record.billdate = this.billdateDateString
+            WmsDumpOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      onChangebilldate(date, dateString) {
+        this.billdateDateString = dateString
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/excelForm.vue
new file mode 100644
index 0000000..4c40d05
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="wmsDumpOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsDumpOrderFromExcel, wmsDumpOrderDownloadExcelTemplate} from '@/api/modular/main/WmsDumpOrderManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+  components: {
+  },
+  data() {
+    return {
+      visible: false,
+      detailed: false,
+      confirmLoading: false,
+      fileList: [],
+      importExcelTypeData: [],
+      importExcelType: '1',
+      uploadFile: null,
+      columns: [],
+      dataList: [],
+	  demandText:'',
+      columnText: ''
+    }
+  },
+  methods: {
+    index() {
+      this.visible = true;
+      this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+      this.demandText = parseDemandText("wmsDumpOrderDownloadExcelTemplate")
+      window.downloadFile = this.wmsDumpOrderDownloadExcelTemplate;
+      this.getTable();
+    },
+    showDemand() {
+      this.detailed = !this.detailed;
+    },
+    customRequest(document) {
+      this.uploadFile = document
+    },
+    getTable() {
+      sysExcelTemplateGetColumnList({className: "WmsDumpOrder"}).then(res =>
+      {
+        if (res.success) {
+          this.columns =[];
+          this.dataList = [{}];
+          res.data.forEach(x => {
+            this.columns.push({
+              dataIndex: x.columnName,
+              key: x.columnName,
+              title: x.columnComment
+            });
+            this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+          });
+          this.columnText = parseExcelFieldText(res.data);
+        }
+      });
+    },
+    beforeUpload(fileInfo) {
+      let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+      if (!res.success) {
+        this.$message.warning(res.msg)
+        return false
+      }
+      setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+    },
+    handleChange(fileInfo) {
+      if (fileInfo.file.status === 'error') {
+        fileInfo.fileList.splice(0, 1)
+      }
+      if (fileInfo.file.status === 'done') {
+        if (fileInfo.fileList.length > 1) {
+          fileInfo.fileList.splice(0, 1)
+        }
+        this.fileList = fileInfo.file
+      }
+    },
+    handleSubmit() {
+      this.confirmLoading = true
+      const formData = new FormData()
+      formData.append('file', this.uploadFile.file)
+      wmsDumpOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.confirmLoading = false
+        this.$emit('ok', [])
+        this.handleCancel()
+      }).finally((res)=>{this.confirmLoading = false})
+    },
+    handleCancel() {
+      this.visible = false
+      this.detailed = false
+    },
+    wmsDumpOrderDownloadExcelTemplate() {
+      wmsDumpOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+        downloadFile(res);
+      }).catch((err) => {
+        this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/index.vue
new file mode 100644
index 0000000..e691b2e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/index.vue
@@ -0,0 +1,201 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsDumpOrder:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.nO" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+              </a-form-item>
+            </a-col><a-col :md="8" :sm="24">
+              <a-form-item label="鍒涘缓鏃ユ湡">
+                <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃ユ湡" v-model="queryParam.billdateDate" @change="onChangebilldate"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍒涘缓浜�">
+                  <a-input v-model="queryParam.creator" allow-clear placeholder="璇疯緭鍏ュ垱寤轰汉"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍏徃">
+                  <a-input v-model="queryParam.companyname" allow-clear placeholder="璇疯緭鍏ュ叕鍙�"/>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                    <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsDumpOrder:add')" >
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('wmsDumpOrder:exportExcel')" icon="download" @click="wmsDumpOrderToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('WmsDumpOrder:add')" icon="plus" @click="$refs.addForm.add()">鏂板杞偍鍗�</a-button>
+        </template>
+        <span slot="orderStatusscopedSlots" slot-scope="text">
+          {{ 'order_status' | dictType(text) }}
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsDumpOrder:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('WmsDumpOrder:edit') & hasPerm('WmsDumpOrder:delete')"/>
+          <a-popconfirm v-if="hasPerm('WmsDumpOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsDumpOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import moment from 'moment'
+  import { WmsDumpOrderPage, WmsDumpOrderDelete } from '@/api/modular/main/WmsDumpOrderManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            dataIndex: 'nO'
+          },
+          {
+            title: '鍒涘缓鏃ユ湡',
+            align: 'center',
+            dataIndex: 'billdate'
+          },
+          {
+            title: '鍒涘缓浜�',
+            align: 'center',
+            dataIndex: 'creator'
+          },
+          {
+            title: '鍏徃',
+            align: 'center',
+            dataIndex: 'companyname'
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatus',
+            scopedSlots: { customRender: 'orderStatusscopedSlots' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return WmsDumpOrderPage(Object.assign(parameter, this.switchingDate())).then((res) => {
+            return res.data
+          })
+        },
+        orderStatusData: [],
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      if (this.hasPerm('WmsDumpOrder:edit') || this.hasPerm('WmsDumpOrder:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+      const orderStatusOption = this.$options
+      this.orderStatusData = orderStatusOption.filters['dictData']('order_status')
+    },
+    methods: {
+      moment,
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const queryParambilldate = this.queryParam.billdateDate
+        if (queryParambilldate != null) {
+            this.queryParam.billdate = moment(queryParambilldate).format('YYYY-MM-DD')
+            if (queryParambilldate.length < 1) {
+                delete this.queryParam.billdate
+            }
+        }else
+        {
+          delete this.queryParam.billdate
+        }
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      WmsDumpOrderDelete (record) {
+        WmsDumpOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      onChangebilldate(date, dateString) {
+        this.billdateDateString = dateString
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/DetailDrawer.vue
new file mode 100644
index 0000000..7a9d0be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/DetailDrawer.vue
@@ -0,0 +1,248 @@
+<template>
+  <!-- <a-drawer 
+    title="璁㈠崟璇︽儏"
+    wrapClassName="weiben-private-drawer"
+    width="70%"
+    :closable="false"
+    :maskClosable="true"
+    :visible="visible"
+    :after-visible-change="afterVisibleChange"
+    @close="onClose"
+  >
+    <a-spin :spinning="loading">
+  
+    </a-spin>
+  </a-drawer>  -->
+<!-- 閫�璐у崟 - 璇︽儏 -->
+  <div v-if="visible" style="background-color: white">
+    <div class="">
+      <div class="">
+        <span style="font-weight:bold;cursor:default;">
+          <a style="cursor:default;">{{ row.no }}</a
+          >鍗曟嵁璇︽儏
+        </span>
+        <div style="margin-top: 10px;">
+          <a-table  :columns="columns" :data-source="list" row-key="id" :pagination="ipagination" :bordered="false"
+          :rowKey="(record) => record.id"
+          :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"  :scroll="{x: true}" 
+          >
+            <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+            <span slot="containerStatusscopedSlots" slot-scope="text">
+              <a-tag
+                :color="text === '1' ? '#daa520' : text === '2' ? '#cd5c5c' : text === '3' ? '#add8e6' : '#696969'"
+                >{{ 'orderdetails_statusenum' | dictType(text) }}</a-tag
+              >
+            </span>
+            <!-- 瀹為檯閫�璐ф暟閲� -->
+            <template slot="qtyscopedSlots" slot-scope="text, record, index">
+              <a-input-number style="width:100%;" v-model="record.qty" :min="0" />
+            </template>
+            <!-- 宸紓鏁� -->
+            <!-- <template slot="qtyChaScopedSlots" slot-scope="text, record, index">
+              {{ Number(record.deliveryQty - record.receivedQty).toFixed(2) }}
+            </template> -->
+
+          </a-table>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { WmsOrderLldDetail }  from '@/api/modular/main/WmsGoodsReturnOrderManage'
+import { STable } from '@/components'
+
+export default {
+  components: {
+    STable
+  },
+  name: 'WmsReceiptOrderDetailDrawer',
+  emits: ['update:visible','postBjData'],
+  props: {
+    visible: {
+      type: Boolean,
+      default: false
+    },
+    row: {
+      type: Object,
+      default: function() {
+        return {}
+      }
+    }
+  },
+  data() {
+    return {
+      loading: false,
+      containerStatusData: [],
+      list: [],
+      columns: [
+        {
+          dataIndex: 'index',
+          title: '搴忓彿',
+          fixed: 'left',
+          width: '60',
+          scopedSlots: { customRender: 'index' },
+          align: 'center'
+        },
+        {
+          dataIndex:'projectCode',
+          title:'椤圭洰缂栧彿',
+          width:'120px'
+        },
+        {
+          dataIndex: 'materialcode',
+          title: '鐗╂枡缂栧彿',
+          align: 'center',
+          width:'120px'
+        },
+        {
+          dataIndex: 'materialname',
+          title: '鐗╂枡鍚嶇О',
+          align: 'center',
+          minWidth:'120px'
+        },
+        {
+          dataIndex:'taCode',
+          title:'TA缂栧彿',
+          align: 'center',
+          width:'120px'
+        },
+        // {
+        //   dataIndex: 'batchno_WMS',
+        //   title: '鎵规',
+        //   align: 'center'
+        // },
+        // {
+        //   dataIndex: 'qty',
+        //   title: '鏁伴噺',
+        //   align: 'center',
+        //   scopedSlots: { customRender: 'qtyscopedSlots' }
+        // },
+        // {
+        //   dataIndex: 'deliveryQty',
+        //   title: '閫佽揣鏁伴噺',
+        //   align: 'center'
+        // },
+        {
+          dataIndex: 'qty',
+          title: '閫�璐ф暟閲�',
+          align: 'center',
+          width:'200px',
+          scopedSlots: { customRender: 'qtyscopedSlots' }
+        },
+        // {
+        //   dataIndex: 'chaQty',
+        //   title: '宸紓鏁�',
+        //   align: 'center',
+        //   scopedSlots: { customRender: 'qtyChaScopedSlots' }
+        // },
+        // {
+        //   dataIndex: 'containerCode',
+        //   title: '鎵樼洏缂栫爜',
+        //   align: 'center'
+        // },
+        // {
+        //   title: '鐘舵��',
+        //   align: 'center',
+        //   dataIndex: 'orderStatus',
+        //   scopedSlots: { customRender: 'containerStatusscopedSlots' }
+        // },
+        // {
+        //   dataIndex:'unit',
+        //   title:'鍩烘湰鍗曚綅'
+        // },
+
+        // {
+        //   dataIndex:'customsUnitName',
+        //   title:'鍗曚綅'
+        // },
+        // {
+        //   dataIndex:'tradeName',
+        //   title:'鍝佸悕'
+        // },
+
+           
+      ],
+      // 鍒嗛〉
+      ipagination: {
+        current: 1,
+        pageSize: 10,
+        pageSizeOptions: ['10','20','30','40'],
+        showTotal: (total, range) => {
+          return range[0] + '-' + range[1] + '鍏�' + total + '鏉�'
+        },
+        showQuickJumper: true,
+        showSizeChanger: true,
+        total: 0,
+        size:'small'
+      },
+      selectedRowKeys: [],
+    }
+  },
+
+  created() {
+    const containerStatusOption = this.$options
+    this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum')
+  },
+  methods: {
+    onClose() {
+      this.close()
+    },
+    close() {
+      this.$emit('update:visible', false)
+    },
+    afterVisibleChange(visible) {
+      if (visible) {
+        this.initShow()
+      } else {
+        this.afterClsoe()
+      }
+    },
+    initShow() {
+      this.loading = true
+      this.getList(() => {
+        this.loading = false
+      })
+    },
+    getList(row) {
+      WmsOrderLldDetail({ id: row.id })
+        .then(d => {
+          this.list = d.data.rows || []
+          this.$emit('update:visible', true)
+
+          // callback && callback(true)
+        })
+        .catch(() => {
+          this.list = []
+          this.$emit('update:visible', false)
+
+          // callback && callback(false)
+        })
+    },
+    afterClsoe() {
+      this.list = []
+    },
+    onSelectChange (selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+      this.$emit('postBjData', this.selectedRows)
+    },
+    clearAll(){
+      this.selectedRowKeys = []
+      this.selectedRows = []
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-task-management-detail-div {
+  height: 100%;
+  overflow: auto;
+
+  .drawer-content {
+    padding: 16px;
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/addForm.vue
new file mode 100644
index 0000000..7485539
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/addForm.vue
@@ -0,0 +1,82 @@
+锘�<template>
+  <a-modal
+    title="鏂板閫�璐у崟"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsGoodsReturnOrderAdd
+  } from '@/api/modular/main/WmsGoodsReturnOrderManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const goodsReturnStatusOption = this.$options
+        this.goodsReturnStatusData = goodsReturnStatusOption.filters['dictData']('GoodsReturnStatus')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            WmsGoodsReturnOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/editForm.vue
new file mode 100644
index 0000000..316b7e8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/editForm.vue
@@ -0,0 +1,95 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫閫�璐у崟"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsGoodsReturnOrderEdit
+  } from '@/api/modular/main/WmsGoodsReturnOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const goodsReturnStatusOption = this.$options
+        this.goodsReturnStatusData = goodsReturnStatusOption.filters['dictData']('GoodsReturnStatus')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            WmsGoodsReturnOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/excelForm.vue
new file mode 100644
index 0000000..f0d6f44
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="wmsGoodsReturnOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsGoodsReturnOrderFromExcel, wmsGoodsReturnOrderDownloadExcelTemplate} from '@/api/modular/main/WmsGoodsReturnOrderManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+  components: {
+  },
+  data() {
+    return {
+      visible: false,
+      detailed: false,
+      confirmLoading: false,
+      fileList: [],
+      importExcelTypeData: [],
+      importExcelType: '1',
+      uploadFile: null,
+      columns: [],
+      dataList: [],
+	  demandText:'',
+      columnText: ''
+    }
+  },
+  methods: {
+    index() {
+      this.visible = true;
+      this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+      this.demandText = parseDemandText("wmsGoodsReturnOrderDownloadExcelTemplate")
+      window.downloadFile = this.wmsGoodsReturnOrderDownloadExcelTemplate;
+      this.getTable();
+    },
+    showDemand() {
+      this.detailed = !this.detailed;
+    },
+    customRequest(document) {
+      this.uploadFile = document
+    },
+    getTable() {
+      sysExcelTemplateGetColumnList({className: "WmsGoodsReturnOrder"}).then(res =>
+      {
+        if (res.success) {
+          this.columns =[];
+          this.dataList = [{}];
+          res.data.forEach(x => {
+            this.columns.push({
+              dataIndex: x.columnName,
+              key: x.columnName,
+              title: x.columnComment
+            });
+            this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+          });
+          this.columnText = parseExcelFieldText(res.data);
+        }
+      });
+    },
+    beforeUpload(fileInfo) {
+      let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+      if (!res.success) {
+        this.$message.warning(res.msg)
+        return false
+      }
+      setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+    },
+    handleChange(fileInfo) {
+      if (fileInfo.file.status === 'error') {
+        fileInfo.fileList.splice(0, 1)
+      }
+      if (fileInfo.file.status === 'done') {
+        if (fileInfo.fileList.length > 1) {
+          fileInfo.fileList.splice(0, 1)
+        }
+        this.fileList = fileInfo.file
+      }
+    },
+    handleSubmit() {
+      this.confirmLoading = true
+      const formData = new FormData()
+      formData.append('file', this.uploadFile.file)
+      wmsGoodsReturnOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.confirmLoading = false
+        this.$emit('ok', [])
+        this.handleCancel()
+      }).finally((res)=>{this.confirmLoading = false})
+    },
+    handleCancel() {
+      this.visible = false
+      this.detailed = false
+    },
+    wmsGoodsReturnOrderDownloadExcelTemplate() {
+      wmsGoodsReturnOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+        downloadFile(res);
+      }).catch((err) => {
+        this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/index.vue
new file mode 100644
index 0000000..3caf878
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/index.vue
@@ -0,0 +1,304 @@
+锘�<template>
+  <div>
+    <!--  閫�璐у崟 -->
+    <a-card :bordered="false" :bodyStyle="tstyle">
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsGoodsReturnOrder:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.no" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="渚涘簲鍟嗙紪鐮�">
+                <a-input v-model="queryParam.vendorcode" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="渚涘簲鍟嗗悕绉�">
+                  <a-input v-model="queryParam.vendorname" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍏徃鍚嶇О">
+                  <a-input v-model="queryParam.companyname" allow-clear placeholder="璇疯緭鍏ュ叕鍙稿悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠撶鍛�">
+                  <a-input v-model="queryParam.warehouseKeepername" allow-clear placeholder="璇疯緭鍏ヤ粨绠″憳"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠撳偍涓績">
+                  <a-input v-model="queryParam.warehouseCentername" allow-clear placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�"/>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="閫�璐х姸鎬�">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.goodsReturnStatus" placeholder="璇烽�夋嫨閫�璐х姸鎬�">
+                    <a-select-option v-for="(item,index) in goodsReturnStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" -->
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        >
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsGoodsReturnOrder:add')" >
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('wmsGoodsReturnOrder:exportExcel')" icon="download" @click="wmsGoodsReturnOrderToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('WmsGoodsReturnOrder:add')" icon="plus" @click="$refs.addForm.add()">鏂板閫�璐у崟</a-button>
+        </template>
+
+
+        <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onOpenInfo(record)">{{ text }}</a>
+        </template>
+
+
+        <span slot="goodsReturnStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text===2?'#daa520':(text===1?'#cd5c5c':(text===3?'#add8e6':'#696969'))">{{ 'GoodsReturnStatus' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+
+          
+          <a v-if="hasPerm('WmsReceiptOrder:edit')" :class="[record.orderStatus == 1 ? 'disabled' : '']"
+            @click="onDistributeBj(record)">閫�璐�</a>
+
+          <!-- <a v-if="hasPerm('WmsGoodsReturnOrder:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('WmsGoodsReturnOrder:edit') & hasPerm('WmsGoodsReturnOrder:delete')"/>
+          <a-popconfirm v-if="hasPerm('WmsGoodsReturnOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsGoodsReturnOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm> -->
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+
+      <detail-drawer ref="tableDetailDrawer" :visible.sync="infoVisible" :row="infoRow"  @postBjData="postBjData"/>
+
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { WmsGoodsReturnOrderPage, WmsGoodsReturnOrderDelete } from '@/api/modular/main/WmsGoodsReturnOrderManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+import DetailDrawer from './DetailDrawer.vue'
+
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm,
+    DetailDrawer
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+        {
+          dataIndex: 'index',
+          title: '搴忓彿',
+          fixed: 'left',
+          width: '60',
+          scopedSlots: { customRender: 'index' },
+          align: 'center'
+        },
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            dataIndex: 'no',
+          scopedSlots: { customRender: 'linkSlot' },
+           minWidth:"100px"
+
+          },
+          {
+            title: '鍒涘缓鏃ユ湡',
+            align: 'center',
+            dataIndex: 'billdate',
+           width:"150px"
+          },
+          {
+            title: '渚涘簲鍟嗙紪鐮�',
+            align: 'center',
+            dataIndex: 'vendorcode',
+           minWidth:"100px"
+          },
+          {
+            title: '渚涘簲鍟嗗悕绉�',
+            align: 'center',
+            dataIndex: 'vendorname',
+           minWidth:"100px"
+          },
+          {
+            title: '鍏徃鍚嶇О',
+            align: 'center',
+            dataIndex: 'companyname',
+           minWidth:"100px"
+          },
+          {
+            title: '浠撶鍛�',
+            align: 'center',
+            dataIndex: 'warehouseKeepername',
+           minWidth:"100px"
+          },
+          {
+            title: '浠撳偍涓績',
+            align: 'center',
+            dataIndex: 'warehouseCentername',
+           minWidth:"100px"
+          },
+          {
+            title: '閫�璐х姸鎬�',
+            align: 'center',
+            dataIndex: 'goodsReturnStatus',
+            scopedSlots: { customRender: 'goodsReturnStatusscopedSlots' },
+            minWidth:"100px"
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return WmsGoodsReturnOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            this.$nextTick(()=>{
+              if(res.data.rows && res.data.rows.length>0){
+                this.onOpenInfo(res.data.rows[0]);
+              }
+            })
+            return res.data
+          })
+        },
+        goodsReturnStatusData: [],
+        selectedRowKeys: [],
+        selectedRows: [],
+           //璇︽儏鍙橀噺
+      infoRow: {},
+      infoVisible: false,
+      postBjDataArr: []
+      }
+    },
+    created () {
+      if (this.hasPerm('WmsGoodsReturnOrder:edit') || this.hasPerm('WmsGoodsReturnOrder:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+      const goodsReturnStatusOption = this.$options
+      this.goodsReturnStatusData = goodsReturnStatusOption.filters['dictData']('GoodsReturnStatus')
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      WmsGoodsReturnOrderDelete (record) {
+        WmsGoodsReturnOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      },
+      //璇︽儏
+    onOpenInfo(row) {
+      this.infoVisible = true;
+      this.infoRow = row;
+      if(row){
+       this.$refs.tableDetailDrawer.getList(row);
+      }
+    },
+    // 閫変腑鐨勭墿鏂�
+    postBjData(data) {
+      this.postBjDataArr = data
+    },
+    // 閫�璐�
+    onDistributeBj(obj) {
+      // if (obj.orderStatus !== 1 && obj.orderStatus !== 4) return false
+      // if (obj.orderStatus == 1) return false
+
+
+
+      // if(this.postBjDataArr.length<=0 || obj.id != this.postBjDataArr[0].orderId){
+      //   this.$message.error('璇烽�変腑姝ゅ崟鎹笅鐨勭墿鏂�!')
+      //   return
+      // }
+      // this.$confirm({
+      //   title: '绯荤粺鎻愮ず',
+      //   content: '鎮ㄥ皢瑕佽繘琛屾姤妫�浠诲姟鐨勬搷浣滐紝纭瑕佺户缁槢锛�',
+      //   okText: '纭',
+      //   cancelText: '鍙栨秷',
+      //   onOk: () => {
+      //     let param = {
+      //       ...obj,
+      //       dtls: this.postBjDataArr
+      //     }
+      //     WmsOrderBaojian(param).then(res => {
+      //       if (res.success) {
+      //         this.$message.success('鎿嶄綔鎴愬姛')
+      //         this.$refs.table.refresh()
+      //       } else {
+      //         this.$message.error('鎿嶄綔澶辫触')
+      //       }
+      //     })
+      //   }
+      // })
+    },
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/addForm.vue
new file mode 100644
index 0000000..eba364c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/addForm.vue
@@ -0,0 +1,260 @@
+<template>
+  <a-modal
+    title="鏂板鐗╂枡淇℃伅"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
+        <a-row>
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡缂栧彿" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"
+                v-decorator="['materialNo', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欑紪鍙凤紒' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡鍚嶇О" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"
+                v-decorator="['materialName', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欏悕绉帮紒' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡绫诲埆">
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鐗╂枡绫诲埆"
+                v-decorator="['materialType', { rules: [{ required: true, message: '璇烽�夋嫨鐗╂枡绫诲埆锛�' }] }]"
+              >
+                <a-select-option v-for="(item, index) in materialTypeData" :key="index" :value="item.code">{{
+                  item.name
+                }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡灏哄" has-feedback>
+              <a-input placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�" v-decorator="['materialSpec']" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡瀵嗗害" has-feedback>
+              <a-input placeholder="璇疯緭鍏ョ墿鏂欏瘑搴�" v-decorator="['materialDensity']" />
+            </a-form-item>
+          </a-col>
+
+          <!-- <a-form-item label="搴撳尯鍙傛暟"  has-feedback>
+          <a-select mode="multiple" style="width: 100%" placeholder="璇烽�夋嫨搴撳尯鍙傛暟" v-decorator="['areas']">
+            <a-select-option v-for="(item,index) in areaNameParameterData" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="宸ヤ綔鍖哄弬鏁�"  has-feedback>
+          <a-select mode="multiple" style="width: 100%" placeholder="璇烽�夋嫨宸ヤ綔鍖哄弬鏁�" v-decorator="['stations']">
+            <a-select-option v-for="(item,index) in stationNameParameterData" :key="index" :value="item.stationId">{{ item.stationName }}</a-select-option>
+          </a-select>
+        </a-form-item> -->
+
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡鎵规" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"
+                v-decorator="['materialBatch', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欐壒娆★紒' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡妫�楠�" has-feedback>
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鐗╂枡妫�楠�"
+                v-decorator="['inspectionMethod', { rules: [{ required: true, message: '璇烽�夋嫨鐗╂枡妫�楠岋紒' }] }]"
+              >
+                <a-select-option v-for="(item, index) in inspectionMethodData" :key="index" :value="item.code">{{
+                  item.name
+                }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡鍗曚綅" has-feedback>
+              <a-input placeholder="璇疯緭鍏ョ墿鏂欏崟浣�" v-decorator="['materialUnit']" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="瀹夊叏瀛橀噺" has-feedback>
+              <a-input type="number" min="1" placeholder="璇疯緭鍏ュ畨鍏ㄥ瓨閲�" v-decorator="['safeqty']" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="鏈�澶у瓨閲�" has-feedback>
+              <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶澶у瓨閲�" v-decorator="['maxImumqty']" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="鏈�灏忓簱榫�" has-feedback>
+              <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶灏忓簱榫�" v-decorator="['minstorageAge']" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="鏈�澶у簱榫�" has-feedback>
+              <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶澶у簱榫�" v-decorator="['maxstorageAge']" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="鎻忚堪" has-feedback>
+              <a-textarea :rows="4" placeholder="璇疯緭鍏ユ弿杩�" v-decorator="['description']"></a-textarea>
+            </a-form-item>
+          </a-col>
+
+          <!-- <a-form-item label="搴撳尯Ids"  has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ簱鍖篒ds" v-decorator="['areaIds']" />
+        </a-form-item> -->
+          <!-- <a-form-item label="搴撳尯鍙傛暟"  has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ簱鍖哄弬鏁�" v-decorator="['areaNameParameter']" />
+        </a-form-item> -->
+          <!-- <a-form-item label="宸ヤ綔鍖篒ds"  has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ伐浣滃尯Ids" v-decorator="['stationIds']" />
+        </a-form-item> -->
+          <!-- <a-form-item label="宸ヤ綔鍖哄弬鏁�"  has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ伐浣滃尯鍙傛暟" v-decorator="['stationNameParameter']" />
+        </a-form-item> -->
+          <!-- <a-form-item label="宸ユ"  has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ伐娈�" v-decorator="['lesWorkshopSection']" />
+        </a-form-item> -->
+
+          <!-- <a-form-item label="绛炬牳鐘舵��"  has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ鏍哥姸鎬�" v-decorator="['issueState']" />
+        </a-form-item> -->
+
+          <!-- <a-form-item label="鐔熷寲鏃堕棿"  has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ョ啛鍖栨椂闂�" style="width: 100%" v-decorator="['maturationTime']" />
+        </a-form-item> -->
+          <!-- <a-form-item label="鏄惁闇�瑕佺啛鍖�" >
+          <a-switch v-decorator="['isMaturation', { valuePropName: 'checked' }]" />
+        </a-form-item> -->
+        </a-row>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { WmsMaterialAdd, GetAreas, GetStations } from '@/api/modular/main/WmsMaterialManage'
+export default {
+  data() {
+    return {
+      labelCol: {
+        // xs: { span: 24 },
+        // sm: { span: 5 }
+        span: 8
+      },
+      wrapperCol: {
+        // xs: { span: 24 },
+        // sm: { span: 15 }
+        span: 13
+      },
+      inspectionMethodData: [],
+      materialTypeData: [],
+      areaNameParameterData: [],
+      stationNameParameterData: [],
+      visible: false,
+      confirmLoading: false,
+      form: this.$form.createForm(this)
+    }
+  },
+  methods: {
+    // 鍒濆鍖栨柟娉�
+    add(record) {
+      this.visible = true
+      this.$nextTick(() => {
+        this.getSelects()
+      })
+      const materialTypeOption = this.$options
+      this.materialTypeData = materialTypeOption.filters['dictData']('material_type')
+      const inspectionMethodOption = this.$options
+      this.inspectionMethodData = inspectionMethodOption.filters['dictData']('material_inspection')
+    },
+    getSelects() {
+      if (this.areaNameParameterData.length <= 0 || this.stationNameParameterData.length <= 0) {
+        this.confirmLoading = true
+        Promise.all([GetAreas(), GetStations()])
+          .then(response => {
+            this.areaNameParameterData = response[0].data || []
+            this.stationNameParameterData = response[1].data || []
+            this.confirmLoading = false
+          })
+          .catch(() => {
+            this.confirmLoading = false
+          })
+      }
+    },
+    /**
+     * 鎻愪氦琛ㄥ崟
+     */
+    handleSubmit() {
+      const {
+        form: { validateFields }
+      } = this
+      this.confirmLoading = true
+      validateFields((errors, values) => {
+        if (!errors) {
+          if (this.$getObjectType(values.areas) === 'array') {
+            values.areaIds = values.areas.join(',')
+            values.areaNameParameterArr = values.areas.map(val => {
+              return this.parseSelectName(val, 'areaId', 'areaName', 'areaNameParameterData')
+            })
+            values.areaNameParameter = values.areaNameParameterArr.join(',')
+          }
+          if (this.$getObjectType(values.stations) === 'array') {
+            values.stationIds = values.stations.join(',')
+            values.stationNameParameterArr = values.stations.map(val => {
+              return this.parseSelectName(val, 'stationId', 'stationName', 'stationNameParameterData')
+            })
+            values.stationNameParameter = values.stationNameParameterArr.join(',')
+          }
+          WmsMaterialAdd(values)
+            .then(res => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            })
+            .finally(res => {
+              this.confirmLoading = false
+            })
+        } else {
+          this.confirmLoading = false
+        }
+      })
+    },
+    parseSelectName(val, field, nfield, pfield) {
+      let res = val
+      for (let i = 0; i < this[pfield].length; i++) {
+        if (val === this[pfield][i][field]) {
+          res = this[pfield][i][nfield]
+          break
+        }
+      }
+      return res
+    },
+    handleCancel() {
+      this.form.resetFields()
+      this.visible = false
+    }
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/editForm.vue
new file mode 100644
index 0000000..01953b1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/editForm.vue
@@ -0,0 +1,263 @@
+<template>
+  <a-modal
+    title="缂栬緫鐗╂枡淇℃伅"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
+
+        <a-row>
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡缂栧彿" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"
+               disabled v-decorator="['materialNo', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欑紪鍙凤紒' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡鍚嶇О" has-feedback>
+              <a-input
+                placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"
+                v-decorator="['materialName', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欏悕绉帮紒' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡绫诲埆">
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鐗╂枡绫诲埆"
+                v-decorator="['materialType', { rules: [{ required: true, message: '璇烽�夋嫨鐗╂枡绫诲埆锛�' }] }]"
+              >
+                <a-select-option v-for="(item, index) in materialTypeData" :key="index" :value="item.code">{{
+                  item.name
+                }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡灏哄" has-feedback>
+              <a-input placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�" v-decorator="['materialSpec']" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡瀵嗗害" has-feedback>
+              <a-input placeholder="璇疯緭鍏ョ墿鏂欏瘑搴�" v-decorator="['materialDensity']" />
+            </a-form-item>
+          </a-col>
+
+          <!-- <a-form-item label="搴撳尯鍙傛暟"  has-feedback>
+          <a-select mode="multiple" style="width: 100%" placeholder="璇烽�夋嫨搴撳尯鍙傛暟" v-decorator="['areas']">
+            <a-select-option v-for="(item,index) in areaNameParameterData" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="宸ヤ綔鍖哄弬鏁�"  has-feedback>
+          <a-select mode="multiple" style="width: 100%" placeholder="璇烽�夋嫨宸ヤ綔鍖哄弬鏁�" v-decorator="['stations']">
+            <a-select-option v-for="(item,index) in stationNameParameterData" :key="index" :value="item.stationId">{{ item.stationName }}</a-select-option>
+          </a-select>
+        </a-form-item> -->
+
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡鎵规" has-feedback>
+              <a-input
+              disabled  placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"
+                v-decorator="['materialBatch', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欐壒娆★紒' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡妫�楠�" has-feedback>
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鐗╂枡妫�楠�"
+                v-decorator="['inspectionMethod', { rules: [{ required: true, message: '璇烽�夋嫨鐗╂枡妫�楠岋紒' }] }]"
+              >
+                <a-select-option v-for="(item, index) in inspectionMethodData" :key="index" :value="item.code">{{
+                  item.name
+                }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="鐗╂枡鍗曚綅" has-feedback>
+              <a-input placeholder="璇疯緭鍏ョ墿鏂欏崟浣�" v-decorator="['materialUnit']" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="瀹夊叏瀛橀噺" has-feedback>
+              <a-input type="number" min="1" placeholder="璇疯緭鍏ュ畨鍏ㄥ瓨閲�" v-decorator="['safeqty']" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="鏈�澶у瓨閲�" has-feedback>
+              <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶澶у瓨閲�" v-decorator="['maxImumqty']" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="鏈�灏忓簱榫�" has-feedback>
+              <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶灏忓簱榫�" v-decorator="['minstorageAge']" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="鏈�澶у簱榫�" has-feedback>
+              <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶澶у簱榫�" v-decorator="['maxstorageAge']" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="鎻忚堪" has-feedback>
+              <a-textarea :rows="4" placeholder="璇疯緭鍏ユ弿杩�" v-decorator="['description']"></a-textarea>
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <!-- <a-form-item label="鐔熷寲鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ョ啛鍖栨椂闂�" style="width: 100%" v-decorator="['maturationTime']" />
+        </a-form-item>
+        <a-form-item label="鏄惁闇�瑕佺啛鍖�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-switch v-decorator="['isMaturation', { valuePropName: 'checked' }]" />
+        </a-form-item> -->
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsMaterialEdit,GetAreas,GetStations
+  } from '@/api/modular/main/WmsMaterialManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+      labelCol: {
+        // xs: { span: 24 },
+        // sm: { span: 5 }
+        span: 8
+      },
+      wrapperCol: {
+        // xs: { span: 24 },
+        // sm: { span: 15 }
+        span: 13
+      },
+        record: {},
+        inspectionMethodData: [],
+        materialTypeData: [],
+        areaNameParameterData: [],
+        stationNameParameterData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+        this.Id = record.id;
+        this.$nextTick(() => {
+          this.getSelects()
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const materialTypeOption = this.$options
+        this.materialTypeData = materialTypeOption.filters['dictData']('material_type')
+        const inspectionMethodOption = this.$options
+        this.inspectionMethodData = inspectionMethodOption.filters['dictData']('material_inspection')
+
+        this.$nextTick(() => {
+          let {areas, stations, ...rest } = record
+          this.form.setFieldsValue(
+            {
+              ...rest,
+              // id: record.id,
+              // materialNo: record.materialNo,
+              // materialName: record.materialName,
+              // materialType: record.materialType,
+              // materialSpec: record.materialSpec,
+              // materialDensity: record.materialDensity,
+              // maxImumqty: record.maxImumqty,
+              areas: record.areaIds?record.areaIds.split(','):[],
+              stations: record.stationIds?record.stationIds.split(','):[],
+              // maturationTime: record.maturationTime,
+              // isMaturation: record.isMaturation
+            }
+          )
+        })
+      },
+      getSelects(){
+        if (this.areaNameParameterData.length<=0 || this.stationNameParameterData.length<=0) {
+          this.confirmLoading = true
+          Promise.all([
+            GetAreas(),
+            GetStations()
+          ]).then(response=>{
+            this.areaNameParameterData = response[0].data || []
+            this.stationNameParameterData = response[1].data || []
+            this.confirmLoading = false
+          }).catch(()=>{
+            this.confirmLoading = false
+          })
+        }
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            let params = {...this.record,...values}
+            if (this.$getObjectType(values.areas)==='array') {
+              params.areaIds = values.areas.join(',')
+              params.areaNameParameterArr = values.areas.map((val)=>{
+                return this.parseSelectName(val,'areaId','areaName','areaNameParameterData')
+              })
+              params.areaNameParameter = params.areaNameParameterArr.join(',')
+            }
+            if (this.$getObjectType(values.stations)==='array'){
+               params.stationIds = values.stations.join(',')
+               params.stationNameParameterArr = values.stations.map((val)=>{
+                 return this.parseSelectName(val,'stationId','stationName','stationNameParameterData')
+               })
+               params.stationNameParameter = params.stationNameParameterArr.join(',')
+            }
+            
+            WmsMaterialEdit(params).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', params)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      parseSelectName(val,field,nfield,pfield){
+        let res = val;
+        for (let i=0;i<this[pfield].length;i++) {
+          if (val===this[pfield][i][field]) {
+            res = this[pfield][i][nfield]
+            break
+          }
+        }
+        return res
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/index.vue
new file mode 100644
index 0000000..b67f90d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/index.vue
@@ -0,0 +1,349 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsMaterial:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐗╂枡鍚嶇О">
+                <a-input v-model="queryParam.materialName" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐗╂枡绫诲埆">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.materialType" placeholder="璇烽�夋嫨鐗╂枡绫诲埆">
+                  <a-select-option v-for="(item,index) in materialTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡灏哄">
+                  <a-input v-model="queryParam.materialSpec" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�"/>
+                </a-form-item>
+              </a-col>
+              <!-- <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡瀵嗗害">
+                  <a-input v-model="queryParam.materialDensity" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏瘑搴�"/>
+                </a-form-item>
+              </a-col>             -->
+            </template>
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <a-spin :spinning="loading">
+        <!--  :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" -->
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :scroll="{x: true}"
+        :rowKey="(record) => record.id"
+        >
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsMaterial:add')" >
+          <a-button type="primary" v-if="hasPerm('WmsMaterial:add')" icon="plus" @click="$refs.addForm.add()">鏂板</a-button>
+        </template>
+        <template class="table-operator" slot="operator"  >
+          
+          <!-- <span>
+            <a-popconfirm v-if="hasPerm('WmsMaterial:tongbu')" placement="topRight" title="纭鍚屾锛�" @confirm="() => handleSubmit()">
+            <a class="tongbubut">鍚屾Desk鏁版嵁</a>
+          </a-popconfirm>
+          </span> -->
+          <!-- <a-button class="tongbubut" @click="handleSubmit">鍚屾Desk鏁版嵁</a-button> -->
+        </template>
+
+        
+        <span slot="inspectionMethodscopedSlots" slot-scope="text">
+          {{ 'material_inspection' | dictType(text) }}
+        </span>
+
+
+        <span slot="materialTypescopedSlots" slot-scope="text">
+          {{ 'material_type' | dictType(text) }}
+        </span>
+
+
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsMaterial:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('WmsMaterial:edit') & hasPerm('WmsMaterial:delete')"/>
+          <a-popconfirm v-if="hasPerm('WmsMaterial:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsMaterialDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+    </a-spin>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { WmsMaterialPage, WmsMaterialDelete,Getdeskdata } from '@/api/modular/main/WmsMaterialManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm
+    },
+    data () {
+      return {
+        loading:false,
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+        {
+            title: '鐗╂枡缂栧彿',
+            align: 'center',
+sorter: true,
+            dataIndex: 'materialNo',
+            width:"100px",
+            ellipsis:true
+          },
+          {
+            title: '鐗╂枡鍚嶇О',
+            align: 'center',
+            dataIndex: 'materialName',
+            width:"100px",
+            ellipsis:true
+          },
+          {
+            title: '鐗╂枡鎵规',
+            align: 'center',
+sorter: true,
+            dataIndex: 'materialBatch',
+            width:"100px",
+            ellipsis:true
+          },
+          {
+            title: '鐗╂枡绫诲埆',
+            align: 'center',
+            dataIndex: 'materialType',
+            scopedSlots: { customRender: 'materialTypescopedSlots' },
+            width:"100px"
+          },
+          {
+            title: '鐗╂枡灏哄',
+            align: 'center',
+            dataIndex: 'materialSpec',
+            width:"100px"
+          },
+          {
+            title: '鐗╂枡瀵嗗害',
+            align: 'center',
+            dataIndex: 'materialDensity',
+            width:"100px"
+          },
+          // {
+          //   title: '搴撳尯鍙傛暟',
+          //   align: 'center',
+          //   dataIndex: 'areaNameParameter',
+          //   width:"100px"
+          //   // scopedSlots: { customRender: 'areaNameParameterscopedSlots' }
+          // },
+          // {
+          //   title: '宸ヤ綔鍖哄弬鏁�',
+          //   align: 'center',
+          //   dataIndex: 'stationNameParameter',
+          //   width:"120px"
+          //   // scopedSlots: { customRender: 'stationNameParameterscopedSlots' }
+          // },  
+          {
+            title: '鐗╂枡妫�楠�',
+            align: 'center',
+            dataIndex: 'inspectionMethod',
+            scopedSlots: { customRender: 'inspectionMethodscopedSlots' },
+            width:"100px"
+          },
+          {
+            title: '鐗╂枡鍗曚綅',
+            align: 'center',
+sorter: true,
+            dataIndex: 'materialUnit',
+            width:"100px"
+          },
+//           {
+//             title: '搴撳尯Ids',
+//             align: 'center',
+// sorter: true,
+//             dataIndex: 'areaIds'
+//           },
+//           {
+//             title: '宸ヤ綔鍖篒ds',
+//             align: 'center',
+// sorter: true,
+//             dataIndex: 'stationIds'
+//           },
+//           {
+//             title: '宸ユ',
+//             align: 'center',
+// sorter: true,
+//             dataIndex: 'lesWorkshopSection',
+//             width:"100px"
+//           },
+          {
+            title: '鎻忚堪',
+            align: 'center',
+sorter: true,
+            dataIndex: 'description',
+            width:"100px"
+          },
+          {
+            title: '瀹夊叏瀛橀噺',
+            align: 'center',
+sorter: true,
+            dataIndex: 'safeqty',
+            width:"100px"
+          },
+          {
+            title: '鏈�澶у瓨閲�',
+            align: 'center',
+sorter: true,
+            dataIndex: 'maxImumqty',
+            width:"100px"
+          },
+          {
+            title: '鏈�灏忓簱榫�',
+            align: 'center',
+sorter: true,
+            dataIndex: 'minstorageAge',
+            width:"100px"
+          },
+          {
+            title: '鏈�澶у簱榫�',
+            align: 'center',
+sorter: true,
+            dataIndex: 'maxstorageAge',
+            width:"100px"
+          },
+//           {
+//             title: '绛炬牳鐘舵��',
+//             align: 'center',
+// sorter: true,
+//             dataIndex: 'issueState'
+//           }
+
+          // {
+          //   title: '鐔熷寲鏃堕棿',
+          //   align: 'center',
+          //   dataIndex: 'maturationTime'
+          // },
+          // {
+          //   title: '鏄惁闇�瑕佺啛鍖�',
+          //   align: 'center',
+          //   customRender: (value) => (value ? <a-tag color="#87d068">鏄�</a-tag> : <a-tag color="gray">鍚�</a-tag>),
+          //   dataIndex: 'isMaturation'
+          // }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return WmsMaterialPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            res.data.rows = res.data.rows.map((_obj)=>{
+            _obj.materialType= _obj.materialType.toString()
+				    return _obj;
+			    })
+            return res.data
+          })
+        },
+        inspectionMethodData: [],
+        materialTypeData: [],
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      if (this.hasPerm('WmsMaterial:edit') || this.hasPerm('WmsMaterial:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          fixed: 'right',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+      const materialTypeOption = this.$options
+      this.materialTypeData = materialTypeOption.filters['dictData']('material_type')
+      const inspectionMethodOption = this.$options
+      this.inspectionMethodData = inspectionMethodOption.filters['dictData']('material_inspection')
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      WmsMaterialDelete (record) {
+        WmsMaterialDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      handleSubmit() {
+        this.loading = true;
+        Getdeskdata().then((res) => {
+          console.log('res',res)
+          if (res.success) {
+            this.$message.success('鍚屾鎴愬姛')
+            this.$refs.table.refresh()
+            this.loading = false;
+          } else {
+            this.$message.error('鍚屾澶辫触锛�' + res.message)
+            this.loading = false;
+          }
+        }).catch((err) => {
+          this.$message.error('鍚屾閿欒锛�' + err.message)
+          this.loading = false;
+        })
+    },
+    toggleAdvanced () {
+      this.advanced = !this.advanced
+    },
+    handleOk () {
+      this.$refs.table.refresh()
+    },
+    onSelectChange (selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;    
+  }
+  .tongbubut{
+    border-radius: 2px;
+    padding: 6px 10px 8px 10px;
+    background-color: dodgerblue;color: #fff;
+  }
+  .tongbubut:hover{
+    opacity: 0.8;
+    background-color: dodgerblue;color: #fff;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterialStock/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterialStock/index.vue
new file mode 100644
index 0000000..09ccf9e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterialStock/index.vue
@@ -0,0 +1,219 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsMaterialStock:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐗╂枡缂栧彿">
+                <a-input v-model="queryParam.materialNo" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐗╂枡绫诲瀷">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.materialType" placeholder="璇烽�夋嫨鐗╂枡绫诲瀷">
+                  <a-select-option v-for="(item,index) in materialTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡灏哄">
+                  <a-input v-model="queryParam.materialSpec" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍥� 鍙�">
+                  <a-input v-model="queryParam.DrawingNo" allow-clear placeholder="璇疯緭鍏ュ浘鍙�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鑸� 鍙�">
+                  <a-input v-model="queryParam.ShipNo" allow-clear placeholder="璇疯緭鍏ヨ埞鍙�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="搴撲綅缂栫爜">
+                  <a-input v-model="queryParam.placeCode" allow-clear placeholder="璇疯緭鍏ュ簱浣嶇紪鐮�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎵樼洏缂栫爜">
+                  <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樼紪鐮�"/>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="鎵�鍦ㄥ簱鍖�">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.areaId" placeholder="璇烽�夋嫨鎵�鍦ㄥ簱鍖�">
+                    <a-select-option v-for="(item,index) in areaNameData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>            
+            </template>
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+      >
+        <span slot="materialTypescopedSlots" slot-scope="text">
+          {{ 'material_type' | dictType(text) }}
+        </span>
+      </s-table>
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { WmsMaterialStockPage,WmsMaterialStockFkWmsAreaList } from '@/api/modular/main/WmsMaterialStockManage'
+  export default {
+    components: {
+      STable
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鐗╂枡缂栧彿',
+            align: 'center',
+            dataIndex: 'materialNo'
+          },
+          {
+            title: '鐗╂枡绫诲瀷',
+            align: 'center',
+            dataIndex: 'materialType',
+            scopedSlots: { customRender: 'materialTypescopedSlots' }
+          },
+          {
+            title: '鐗╂枡鎵规',
+            align: 'center',
+            dataIndex: 'materialBatch'
+          },
+          {
+            title: '鐗╂枡鍚嶇О',
+            align: 'center',
+            dataIndex: 'materialName'
+          },
+          {
+            title: '鐗╂枡灏哄',
+            align: 'center',
+            dataIndex: 'materialSpec'
+          },
+          {
+            title: '鐗╂枡瀵嗗害',
+            align: 'center',
+            dataIndex: 'materialDensity'
+          },
+          {
+            title: '鑸瑰彿',
+            align: 'center',
+            dataIndex: 'shipNo'
+          },
+          {
+            title: '鍥惧彿',
+            align: 'center',
+            dataIndex: 'drawingNo'
+          },
+          {
+            title: '搴撳瓨鏁�',
+            align: 'center',
+            dataIndex: 'stockNumber'
+          },
+          {
+            title: '搴撲綅缂栫爜',
+            align: 'center',
+            dataIndex: 'placeCode'
+          },
+          {
+            title: '鎵樼洏缂栫爜',
+            align: 'center',
+            dataIndex: 'containerCode'
+          },
+          {
+            title: '搴撳尯',
+            align: 'center',
+            // customRender: (value, record) => record.wmsArea.areaName,
+            dataIndex: 'areaName'
+          },
+          {
+            title: '鍏ュ簱鏃堕棿',
+            align: 'center',
+            dataIndex: 'createdTime',
+            width:170
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return WmsMaterialStockPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        materialTypeData: [],
+        areaNameData: [],
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      const materialTypeOption = this.$options
+      this.materialTypeData = materialTypeOption.filters['dictData']('material_type')
+    },
+    mounted(){
+      this.WmsAreaLists()
+    },
+    methods: {
+      WmsAreaLists(){
+        WmsMaterialStockFkWmsAreaList().then((d)=>{
+          console.log(d)
+          this.areaNameData = d.data || []
+        }).catch(()=>{
+          
+        })
+      },
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/addForm.vue
new file mode 100644
index 0000000..bb4cf30
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/addForm.vue
@@ -0,0 +1,126 @@
+锘�<template>
+  <a-modal
+    title="鏂板瀹㈠晢淇℃伅琛�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="瀹㈠晢缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗙紪鍙�" v-decorator="['merchantNo']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗗悕绉�" v-decorator="['merchantName']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢鍒嗙被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨瀹㈠晢鍒嗙被" v-decorator="['merchantType', {rules: [{ required: true, message: '璇烽�夋嫨瀹㈠晢鍒嗙被锛�' }]}]">
+            <a-select-option v-for="(item,index) in merchantTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="瀹㈠晢绠�绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗙畝绉�" v-decorator="['merchantShort']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢绛夌骇" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨瀹㈠晢绛夌骇" v-decorator="['merchantGrade', {rules: [{ required: true, message: '璇烽�夋嫨瀹㈠晢绛夌骇锛�' }]}]">
+            <a-select-option v-for="(item,index) in merchantGradeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="瀹㈠晢灞炴��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗗睘鎬�" v-decorator="['merchantAttribute']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢琛屼笟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗚涓�" v-decorator="['merchantTmt']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢鑱旂郴浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗚仈绯讳汉" v-decorator="['merchantContact']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢鐢佃瘽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗙數璇�" v-decorator="['merchantPhone']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢浼犵湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗕紶鐪�" v-decorator="['merchantFax']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢閭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗛偖绠�" v-decorator="['merchantEmail']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗗湴鍧�" v-decorator="['merchantAddress']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsMerchantinfoAdd
+  } from '@/api/modular/main/WmsMerchantinfoManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        merchantTypeData: [],
+        merchantGradeData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const merchantTypeOption = this.$options
+        this.merchantTypeData = merchantTypeOption.filters['dictData']('MerchantType')
+        const merchantGradeOption = this.$options
+        this.merchantGradeData = merchantGradeOption.filters['dictData']('MerchantGrade')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            WmsMerchantinfoAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/editForm.vue
new file mode 100644
index 0000000..a686a05
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/editForm.vue
@@ -0,0 +1,151 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫瀹㈠晢淇℃伅琛�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="瀹㈠晢缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗙紪鍙�" v-decorator="['merchantNo']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗗悕绉�" v-decorator="['merchantName']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢鍒嗙被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨瀹㈠晢鍒嗙被" v-decorator="['merchantType', {rules: [{ required: true, message: '璇烽�夋嫨瀹㈠晢鍒嗙被锛�' }]}]">
+            <a-select-option v-for="(item,index) in merchantTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="瀹㈠晢绠�绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗙畝绉�" v-decorator="['merchantShort']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢绛夌骇" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨瀹㈠晢绛夌骇" v-decorator="['merchantGrade', {rules: [{ required: true, message: '璇烽�夋嫨瀹㈠晢绛夌骇锛�' }]}]">
+            <a-select-option v-for="(item,index) in merchantGradeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="瀹㈠晢灞炴��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗗睘鎬�" v-decorator="['merchantAttribute']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢琛屼笟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗚涓�" v-decorator="['merchantTmt']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢鑱旂郴浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗚仈绯讳汉" v-decorator="['merchantContact']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢鐢佃瘽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗙數璇�" v-decorator="['merchantPhone']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢浼犵湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗕紶鐪�" v-decorator="['merchantFax']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢閭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗛偖绠�" v-decorator="['merchantEmail']" />
+        </a-form-item>
+        <a-form-item label="瀹㈠晢鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鍟嗗湴鍧�" v-decorator="['merchantAddress']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsMerchantinfoEdit
+  } from '@/api/modular/main/WmsMerchantinfoManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        merchantTypeData: [],
+        merchantGradeData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const merchantTypeOption = this.$options
+        this.merchantTypeData = merchantTypeOption.filters['dictData']('MerchantType')
+        const merchantGradeOption = this.$options
+        this.merchantGradeData = merchantGradeOption.filters['dictData']('MerchantGrade')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              merchantNo: record.merchantNo,
+              merchantName: record.merchantName,
+              merchantType: record.merchantType,
+              merchantShort: record.merchantShort,
+              merchantGrade: record.merchantGrade,
+              merchantAttribute: record.merchantAttribute,
+              merchantTmt: record.merchantTmt,
+              merchantContact: record.merchantContact,
+              merchantPhone: record.merchantPhone,
+              merchantFax: record.merchantFax,
+              merchantEmail: record.merchantEmail,
+              merchantAddress: record.merchantAddress
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            WmsMerchantinfoEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/excelForm.vue
new file mode 100644
index 0000000..608c91d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="wmsMerchantinfoDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsMerchantinfoFromExcel, wmsMerchantinfoDownloadExcelTemplate} from '@/api/modular/main/WmsMerchantinfoManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+  components: {
+  },
+  data() {
+    return {
+      visible: false,
+      detailed: false,
+      confirmLoading: false,
+      fileList: [],
+      importExcelTypeData: [],
+      importExcelType: '1',
+      uploadFile: null,
+      columns: [],
+      dataList: [],
+	  demandText:'',
+      columnText: ''
+    }
+  },
+  methods: {
+    index() {
+      this.visible = true;
+      this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+      this.demandText = parseDemandText("wmsMerchantinfoDownloadExcelTemplate")
+      window.downloadFile = this.wmsMerchantinfoDownloadExcelTemplate;
+      this.getTable();
+    },
+    showDemand() {
+      this.detailed = !this.detailed;
+    },
+    customRequest(document) {
+      this.uploadFile = document
+    },
+    getTable() {
+      sysExcelTemplateGetColumnList({className: "WmsMerchantinfo"}).then(res =>
+      {
+        if (res.success) {
+          this.columns =[];
+          this.dataList = [{}];
+          res.data.forEach(x => {
+            this.columns.push({
+              dataIndex: x.columnName,
+              key: x.columnName,
+              title: x.columnComment
+            });
+            this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+          });
+          this.columnText = parseExcelFieldText(res.data);
+        }
+      });
+    },
+    beforeUpload(fileInfo) {
+      let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+      if (!res.success) {
+        this.$message.warning(res.msg)
+        return false
+      }
+      setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+    },
+    handleChange(fileInfo) {
+      if (fileInfo.file.status === 'error') {
+        fileInfo.fileList.splice(0, 1)
+      }
+      if (fileInfo.file.status === 'done') {
+        if (fileInfo.fileList.length > 1) {
+          fileInfo.fileList.splice(0, 1)
+        }
+        this.fileList = fileInfo.file
+      }
+    },
+    handleSubmit() {
+      this.confirmLoading = true
+      const formData = new FormData()
+      formData.append('file', this.uploadFile.file)
+      wmsMerchantinfoFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.confirmLoading = false
+        this.$emit('ok', [])
+        this.handleCancel()
+      }).finally((res)=>{this.confirmLoading = false})
+    },
+    handleCancel() {
+      this.visible = false
+      this.detailed = false
+    },
+    wmsMerchantinfoDownloadExcelTemplate() {
+      wmsMerchantinfoDownloadExcelTemplate({version: "v2"}).then((res) => {
+        downloadFile(res);
+      }).catch((err) => {
+        this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/index.vue
new file mode 100644
index 0000000..fae5665
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/index.vue
@@ -0,0 +1,230 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsMerchantinfo:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瀹㈠晢缂栧彿">
+                <a-input v-model="queryParam.merchantNo" allow-clear placeholder="璇疯緭鍏ュ鍟嗙紪鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瀹㈠晢鍚嶇О">
+                <a-input v-model="queryParam.merchantName" allow-clear placeholder="璇疯緭鍏ュ鍟嗗悕绉�"/>
+              </a-form-item>
+            </a-col><template v-if="advanced"><a-col :md="8" :sm="24">
+                <a-form-item label="瀹㈠晢鍒嗙被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.merchantType" placeholder="璇烽�夋嫨瀹㈠晢鍒嗙被">
+                    <a-select-option v-for="(item,index) in merchantTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="瀹㈠晢绛夌骇">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.merchantGrade" placeholder="璇烽�夋嫨瀹㈠晢绛夌骇">
+                    <a-select-option v-for="(item,index) in merchantGradeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="瀹㈠晢琛屼笟">
+                  <a-input v-model="queryParam.merchantTmt" allow-clear placeholder="璇疯緭鍏ュ鍟嗚涓�"/>
+                </a-form-item>
+              </a-col>            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsMerchantinfo:add')" >
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('wmsMerchantinfo:exportExcel')" icon="download" @click="wmsMerchantinfoToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('WmsMerchantinfo:add')" icon="plus" @click="$refs.addForm.add()">鏂板瀹㈠晢淇℃伅琛�</a-button>
+        </template>
+        <span slot="merchantTypescopedSlots" slot-scope="text">
+          {{ 'MerchantType' | dictType(text) }}
+        </span>
+        <span slot="merchantGradescopedSlots" slot-scope="text">
+          {{ 'MerchantGrade' | dictType(text) }}
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsMerchantinfo:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('WmsMerchantinfo:edit') & hasPerm('WmsMerchantinfo:delete')"/>
+          <a-popconfirm v-if="hasPerm('WmsMerchantinfo:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsMerchantinfoDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { WmsMerchantinfoPage, WmsMerchantinfoDelete } from '@/api/modular/main/WmsMerchantinfoManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '瀹㈠晢缂栧彿',
+            align: 'center',
+            dataIndex: 'merchantNo'
+          },
+          {
+            title: '瀹㈠晢鍚嶇О',
+            align: 'center',
+            dataIndex: 'merchantName'
+          },
+          {
+            title: '瀹㈠晢鍒嗙被',
+            align: 'center',
+            dataIndex: 'merchantType',
+            scopedSlots: { customRender: 'merchantTypescopedSlots' }
+          },
+          {
+            title: '瀹㈠晢绠�绉�',
+            align: 'center',
+            dataIndex: 'merchantShort'
+          },
+          {
+            title: '瀹㈠晢绛夌骇',
+            align: 'center',
+            dataIndex: 'merchantGrade',
+            scopedSlots: { customRender: 'merchantGradescopedSlots' }
+          },
+          {
+            title: '瀹㈠晢灞炴��',
+            align: 'center',
+            dataIndex: 'merchantAttribute'
+          },
+          {
+            title: '瀹㈠晢琛屼笟',
+            align: 'center',
+            dataIndex: 'merchantTmt'
+          },
+          {
+            title: '瀹㈠晢鑱旂郴浜�',
+            align: 'center',
+            dataIndex: 'merchantContact'
+          },
+          {
+            title: '瀹㈠晢鐢佃瘽',
+            align: 'center',
+            dataIndex: 'merchantPhone'
+          },
+          {
+            title: '瀹㈠晢浼犵湡',
+            align: 'center',
+            dataIndex: 'merchantFax'
+          },
+          {
+            title: '瀹㈠晢閭',
+            align: 'center',
+            dataIndex: 'merchantEmail'
+          },
+          {
+            title: '瀹㈠晢鍦板潃',
+            align: 'center',
+            dataIndex: 'merchantAddress'
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return WmsMerchantinfoPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        merchantTypeData: [],
+        merchantGradeData: [],
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      if (this.hasPerm('WmsMerchantinfo:edit') || this.hasPerm('WmsMerchantinfo:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+      const merchantTypeOption = this.$options
+      this.merchantTypeData = merchantTypeOption.filters['dictData']('MerchantType')
+      const merchantGradeOption = this.$options
+      this.merchantGradeData = merchantGradeOption.filters['dictData']('MerchantGrade')
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      WmsMerchantinfoDelete (record) {
+        WmsMerchantinfoDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/DetailDrawer.vue
new file mode 100644
index 0000000..5e8e087
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/DetailDrawer.vue
@@ -0,0 +1,199 @@
+<template>
+  <!-- <a-drawer 
+    title="璁㈠崟璇︽儏"
+    wrapClassName="weiben-private-drawer"
+    width="70%"
+    :closable="false"
+    :maskClosable="true"
+    :visible="visible"
+    :after-visible-change="afterVisibleChange"
+    @close="onClose"
+  >
+    <a-spin :spinning="loading">
+  
+    </a-spin>
+  </a-drawer>  -->
+
+  <div v-if="visible" style="background-color: white">
+
+    <!-- <a-spin :spinning="loading"> -->
+    <div class="wms-task-management-detail-div">
+
+      <div class="drawer-content">
+
+        <span style="font-weight:bold;cursor:default;">
+          <a style="cursor:default;">{{ row.no }}</a>鍗曟嵁璇︽儏
+        </span>
+        <div style="margin-top: 10px;">
+          <a-table :columns="columns" :data-source="list" row-key="id" :pagination="ipagination" :scroll="{x: true}">
+            <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+            <span slot="containerStatusscopedSlots" slot-scope="text">
+              <a-tag :color="text == '1' ? '#daa520' : (text == '2' ? '#cd5c5c' : (text == '3' ? '#add8e6' : '#696969'))">{{
+                'orderdetails_statusenum' | dictType(text) }}</a-tag>
+            </span>
+          </a-table>
+        </div>
+
+      </div>
+    </div>
+    <!-- </a-spin> -->
+
+
+  </div>
+</template>
+
+<script>
+import { WmsOrderRukuDetail } from '@/api/modular/main/WmsOrderManage'
+
+export default {
+  name: 'wmsOrderRukuManagementDetailDrawer',
+  emits: ['update:visible'],
+  props: {
+    visible: {
+      type: Boolean,
+      default: false
+    },
+    row: {
+      type: Object,
+      default: function () {
+        return {}
+      }
+    }
+  },
+  data() {
+    return {
+      loading: false,
+      containerStatusData: [],
+      list: [],
+
+      columns: [
+        {
+          dataIndex: 'index',
+          title: '搴忓彿',
+          fixed: 'left',
+          width: '60',
+          scopedSlots: { customRender: 'index' },
+          align: 'center'
+        },
+        {
+          dataIndex:'projectCode',
+          title:'椤圭洰缂栧彿',
+          align: 'center',
+          width:'120px'
+        },
+        {
+          dataIndex: 'materialcode',
+          title: '鐗╂枡缂栧彿',
+          align: 'center',
+          width:'150px'
+        },
+        {
+          dataIndex: 'materialname',
+          title: '鐗╂枡鍚嶇О',
+          align: 'center',
+          width:'120px'
+        },
+        {
+          dataIndex:'taCode',
+          title:'TA缂栧彿',
+          align: 'center',
+          width:'120px'
+        },
+        {
+          dataIndex: 'qty',
+          title: '鏁伴噺',
+          align: 'center',
+          align: 'center',
+          width:'120px'
+        },
+        {
+          dataIndex: 'price',
+          title: '浠锋牸',
+          align: 'center',
+          align: 'center',
+          width:'120px'
+        },
+        {
+          dataIndex: 'sumPrice',
+          title: '鎬婚噾棰�',
+          align: 'center',
+          align: 'center',
+          width:'120px'
+        },
+        {
+          title: '鐘舵��',
+          align: 'center',
+          dataIndex: 'orderStatus',
+          scopedSlots: { customRender: 'containerStatusscopedSlots' },
+          align: 'center'
+        },
+      ],
+       // 鍒嗛〉
+       ipagination: {
+        current: 1,
+        pageSize: 10,
+        pageSizeOptions: ['10','20','30','40'],
+        showTotal: (total, range) => {
+          return range[0] + '-' + range[1] + '鍏�' + total + '鏉�'
+        },
+        showQuickJumper: true,
+        showSizeChanger: true,
+        total: 0,
+        size:'small'
+      },
+    }
+  },
+
+  created() {
+    const containerStatusOption = this.$options;
+    this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum');
+  },
+  methods: {
+    onClose() {
+      this.close()
+    },
+    close() {
+      this.$emit('update:visible', false)
+    },
+    afterVisibleChange(visible) {
+      if (visible) {
+        this.initShow()
+      } else {
+        this.afterClsoe()
+      }
+    },
+    initShow() {
+      this.loading = true;
+      this.getList(() => {
+        this.loading = false;
+      })
+    },
+    getList(row) {
+      let params = { id: row.id }
+      WmsOrderRukuDetail(params).then(d => {
+        this.list = d.data.rows || []
+        this.$emit('update:visible', true)
+        // callback && callback(true)
+      }).catch(() => {
+        this.$emit('update:visible', false)
+        this.list = []
+        // callback && callback(false)
+      })
+    },
+    afterClsoe() {
+      this.list = []
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-task-management-detail-div {
+  height: 100%;
+  overflow: auto;
+
+  .drawer-content {
+    padding: 16px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/addForm.vue
new file mode 100644
index 0000000..d6a8fe6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/addForm.vue
@@ -0,0 +1,121 @@
+锘�<template>
+  <a-modal
+    title="鏂板鍗曟嵁琛�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['nO']" />
+        </a-form-item>
+        <a-form-item label="閫佽揣閫氱煡鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ�佽揣閫氱煡鍗曞彿" v-decorator="['sourceBillNo']" />
+        </a-form-item>
+        <a-form-item label="渚涘簲鍟嗙紪鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜" v-decorator="['vendorcode']" />
+        </a-form-item>
+        <a-form-item label="渚涘簲鍟嗗悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" v-decorator="['vendorname']" />
+        </a-form-item>
+        <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" v-decorator="['companyname']" />
+        </a-form-item>
+        <a-form-item label="浠撶鍛�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨绠″憳" v-decorator="['warehouseKeepername']" />
+        </a-form-item>
+        <a-form-item label="璐告槗鏂瑰紡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨璐告槗鏂瑰紡" v-decorator="['tradeMode', {rules: [{ required: true, message: '璇烽�夋嫨璐告槗鏂瑰紡锛�' }]}]">
+            <a-select-option v-for="(item,index) in tradeModeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="浠撳偍涓績" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" v-decorator="['warehouseCentername']" />
+        </a-form-item>
+        <a-form-item label="浠撻棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨闂�" v-decorator="['storeRoomname']" />
+        </a-form-item>
+        <a-form-item label="鎶ュ叧鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ姤鍏冲崟鍙�" v-decorator="['declarationCode']" />
+        </a-form-item>
+        <a-form-item label="涓撲笟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ笓涓�" v-decorator="['majorname']" />
+        </a-form-item>
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-textarea placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsOrderAdd
+  } from '@/api/modular/main/WmsOrderManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        tradeModeData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const tradeModeOption = this.$options
+        this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            WmsOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/editForm.vue
new file mode 100644
index 0000000..549184d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/editForm.vue
@@ -0,0 +1,146 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫鍗曟嵁琛�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input disabled placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['no']" />
+        </a-form-item>
+        <a-form-item label="閫佽揣閫氱煡鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ�佽揣閫氱煡鍗曞彿" v-decorator="['sourceBillNo']" />
+        </a-form-item>
+        <a-form-item label="渚涘簲鍟嗙紪鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜" v-decorator="['vendorcode']" />
+        </a-form-item>
+        <a-form-item label="渚涘簲鍟嗗悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" v-decorator="['vendorname']" />
+        </a-form-item>
+        <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" v-decorator="['companyname']" />
+        </a-form-item>
+        <a-form-item label="浠撶鍛�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨绠″憳" v-decorator="['warehouseKeepername']" />
+        </a-form-item>
+        <a-form-item label="璐告槗鏂瑰紡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨璐告槗鏂瑰紡" v-decorator="['tradeMode', {rules: [{ required: true, message: '璇烽�夋嫨璐告槗鏂瑰紡锛�' }]}]">
+            <a-select-option v-for="(item,index) in tradeModeData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="浠撳偍涓績" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" v-decorator="['warehouseCentername']" />
+        </a-form-item>
+        <a-form-item label="浠撻棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨闂�" v-decorator="['storeRoomname']" />
+        </a-form-item>
+        <a-form-item label="鎶ュ叧鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ姤鍏冲崟鍙�" v-decorator="['declarationCode']" />
+        </a-form-item>
+        <a-form-item label="涓撲笟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ笓涓�" v-decorator="['majorname']" />
+        </a-form-item>
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-textarea placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsOrderEdit
+  } from '@/api/modular/main/WmsOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        tradeModeData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const tradeModeOption = this.$options
+        this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              no: record.no,
+              sourceBillNo: record.sourceBillNo,
+              vendorcode: record.vendorcode,
+              vendorname: record.vendorname,
+              companyname: record.companyname,
+              warehouseKeepername: record.warehouseKeepername,
+              tradeMode: record.tradeMode,
+              warehouseCentername: record.warehouseCentername,
+              storeRoomname: record.storeRoomname,
+              declarationCode: record.declarationCode,
+              majorname: record.majorname,
+              remarks: record.remarks
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            WmsOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/excelForm.vue
new file mode 100644
index 0000000..a04d54e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="wmsOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsOrderFromExcel, wmsOrderDownloadExcelTemplate} from '@/api/modular/main/WmsOrderManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+  components: {
+  },
+  data() {
+    return {
+      visible: false,
+      detailed: false,
+      confirmLoading: false,
+      fileList: [],
+      importExcelTypeData: [],
+      importExcelType: '1',
+      uploadFile: null,
+      columns: [],
+      dataList: [],
+	  demandText:'',
+      columnText: ''
+    }
+  },
+  methods: {
+    index() {
+      this.visible = true;
+      this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+      this.demandText = parseDemandText("wmsOrderDownloadExcelTemplate")
+      window.downloadFile = this.wmsOrderDownloadExcelTemplate;
+      this.getTable();
+    },
+    showDemand() {
+      this.detailed = !this.detailed;
+    },
+    customRequest(document) {
+      this.uploadFile = document
+    },
+    getTable() {
+      sysExcelTemplateGetColumnList({className: "WmsOrder"}).then(res =>
+      {
+        if (res.success) {
+          this.columns =[];
+          this.dataList = [{}];
+          res.data.forEach(x => {
+            this.columns.push({
+              dataIndex: x.columnName,
+              key: x.columnName,
+              title: x.columnComment
+            });
+            this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+          });
+          this.columnText = parseExcelFieldText(res.data);
+        }
+      });
+    },
+    beforeUpload(fileInfo) {
+      let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+      if (!res.success) {
+        this.$message.warning(res.msg)
+        return false
+      }
+      setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+    },
+    handleChange(fileInfo) {
+      if (fileInfo.file.status === 'error') {
+        fileInfo.fileList.splice(0, 1)
+      }
+      if (fileInfo.file.status === 'done') {
+        if (fileInfo.fileList.length > 1) {
+          fileInfo.fileList.splice(0, 1)
+        }
+        this.fileList = fileInfo.file
+      }
+    },
+    handleSubmit() {
+      this.confirmLoading = true
+      const formData = new FormData()
+      formData.append('file', this.uploadFile.file)
+      wmsOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.confirmLoading = false
+        this.$emit('ok', [])
+        this.handleCancel()
+      }).finally((res)=>{this.confirmLoading = false})
+    },
+    handleCancel() {
+      this.visible = false
+      this.detailed = false
+    },
+    wmsOrderDownloadExcelTemplate() {
+      wmsOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+        downloadFile(res);
+      }).catch((err) => {
+        this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/index.vue
new file mode 100644
index 0000000..108ef58
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/index.vue
@@ -0,0 +1,367 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsOrder:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.no" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="閫佽揣閫氱煡鍗曞彿">
+                <a-input v-model="queryParam.sourceBillNo" allow-clear placeholder="璇疯緭鍏ラ�佽揣閫氱煡鍗曞彿"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="渚涘簲鍟嗙紪鐮�">
+                  <a-input v-model="queryParam.vendorcode" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="渚涘簲鍟嗗悕绉�">
+                  <a-input v-model="queryParam.vendorname" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍏徃鍚嶇О">
+                  <a-input v-model="queryParam.companyname" allow-clear placeholder="璇疯緭鍏ュ叕鍙稿悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠撶鍛�">
+                  <a-input v-model="queryParam.warehouseKeepername" allow-clear placeholder="璇疯緭鍏ヤ粨绠″憳"/>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="璐告槗鏂瑰紡">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.tradeMode" placeholder="璇烽�夋嫨璐告槗鏂瑰紡">
+                    <a-select-option v-for="(item,index) in tradeModeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠撳偍涓績">
+                  <a-input v-model="queryParam.warehouseCentername" allow-clear placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠撻棿">
+                  <a-input v-model="queryParam.storeRoomname" allow-clear placeholder="璇疯緭鍏ヤ粨闂�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎶ュ叧鍗曞彿">
+                  <a-input v-model="queryParam.declarationCode" allow-clear placeholder="璇疯緭鍏ユ姤鍏冲崟鍙�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="涓撲笟">
+                  <a-input v-model="queryParam.majorname" allow-clear placeholder="璇疯緭鍏ヤ笓涓�"/>
+                </a-form-item>
+              </a-col>            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" -->
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        聽 :scroll="{x: true}"
+      >
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsOrder:add')" >
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('wmsOrder:exportExcel')" icon="download" @click="wmsOrderToExcel()">
+            瀵煎嚭
+          </a-button>
+          <!-- <a-button type="primary" v-if="hasPerm('WmsOrder:add')" icon="plus" @click="$refs.addForm.add()">鏂板鍗曟嵁琛�</a-button> -->
+        </template>
+        <span slot="tradeModescopedSlots" slot-scope="text">
+          {{ 'trade_mode' | dictType(text) }}
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsOrder:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('WmsOrder:edit') & hasPerm('WmsOrder:delete')"/>
+          <!-- <a-popconfirm v-if="hasPerm('WmsOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm> -->
+        </span>
+        <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onOpenInfo(record)">{{ text }}</a>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+          <!-- <a :class="[(record.orderStatus===1||record.orderStatus===4)?'':'disabled']" style="margin-right:10px;" @click="onEdit(record)">缂栬緫</a> -->
+          <a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" style="margin-right:10px;" @click="onDistribute(record)">涓嬪彂</a>
+
+          <!-- <a :class="[(record.orderStatus===1||record.orderStatus===4)?'':'disabled']" style="margin-right:10px;" @click="$refs.editForm.edit(record)">缂栬緫</a> -->
+
+          <!-- <a-dropdown>
+            <a class="ant-dropdown-link" @click="e => e.preventDefault()">鏇村...</a>
+            <a-menu slot="overlay">
+              <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" style="margin-right:10px;" @click="onDistribute(record)">涓嬪彂</a></a-menu-item>
+              <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" @click="WmsOrderDelete(record)">鍒犻櫎</a></a-menu-item>
+            </a-menu>
+          </a-dropdown> -->
+        </span>
+
+
+        <span slot="containerStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text===2?'#daa520':(text===1?'#cd5c5c':(text===3?'#add8e6':'#696969'))">{{ 'order_statusenum' | dictType(text) }}</a-tag>
+        </span>
+
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+
+      <detail-drawer ref="tableDetailDrawer" :visible.sync="infoVisible" :row="infoRow" />
+    </a-card>
+
+  
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { WmsOrderPage, WmsOrderDelete ,dealDistribute} from '@/api/modular/main/WmsOrderManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+import DetailDrawer from './DetailDrawer.vue'
+
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm,
+    DetailDrawer,
+
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+        {
+          dataIndex: 'index',
+          title: '搴忓彿',
+          fixed: 'left',
+          width: '60',
+          scopedSlots: { customRender: 'index' },
+          align: 'center'
+        },
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            dataIndex: 'no',
+          scopedSlots: { customRender: 'linkSlot' },
+           width:"100px"
+          },
+          {
+            title: '閫佽揣閫氱煡鍗曞彿',
+            align: 'center',
+            dataIndex: 'sourceBillNo',
+             width:"100px"
+          },
+          {
+            title: '渚涘簲鍟嗙紪鐮�',
+            align: 'center',
+            dataIndex: 'vendorcode',
+             width:"100px"
+          },
+          {
+            title: '渚涘簲鍟嗗悕绉�',
+            align: 'center',
+            dataIndex: 'vendorname',
+             width:"100px"
+          },
+          {
+            title: '鍏徃鍚嶇О',
+            align: 'center',
+            dataIndex: 'companyname',
+             width:"100px"
+          },
+          {
+            title: '浠撶鍛�',
+            align: 'center',
+            dataIndex: 'warehouseKeepername',
+             width:"100px"
+          },
+          {
+            title: '璐告槗鏂瑰紡',
+            align: 'center',
+            dataIndex: 'tradeMode',
+            scopedSlots: { customRender: 'tradeModescopedSlots' },
+             width:"100px"
+          },
+          {
+            title: '浠撳偍涓績',
+            align: 'center',
+            dataIndex: 'warehouseCentername',
+             width:"100px"
+          },
+          {
+            title: '浠撻棿',
+            align: 'center',
+            dataIndex: 'storeRoomname',
+             width:"100px"
+          },
+          {
+            title: '鎶ュ叧鍗曞彿',
+            align: 'center',
+            dataIndex: 'declarationCode',
+             width:"100px"
+          },
+          {
+            title: '涓撲笟',
+            align: 'center',
+            dataIndex: 'majorname',
+             width:"100px"
+          },
+          {
+            title: '鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatus',
+            scopedSlots: { customRender: 'containerStatusscopedSlots' },
+             width:"100px"
+          },
+          {
+            title: '澶囨敞',
+            align: 'center',
+            dataIndex: 'remarks',
+             width:"100px"
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return WmsOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            this.$nextTick(()=>{
+              if(res.data.rows && res.data.rows.length>0){
+                this.onOpenInfo(res.data.rows[0]);
+              }
+            })
+            return res.data
+          })
+        },
+        tradeModeData: [],
+        selectedRowKeys: [],
+        selectedRows: [],
+      infoRow: {},
+      infoVisible: false,
+      containerStatusData:[]
+      }
+    },
+    created () {
+      if (this.hasPerm('WmsOrder:edit') || this.hasPerm('WmsOrder:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '80px',
+          dataIndex: 'action',
+          fixed: 'right',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+      const tradeModeOption = this.$options
+      this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+
+      const containerStatusOption = this.$options;
+      this.containerStatusData = containerStatusOption.filters['dictData']('order_statusenum')
+
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      WmsOrderDelete (record) {
+        WmsOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      },
+      onOpenInfo(row) {
+        this.infoVisible = true;
+        this.infoRow = row;
+        if(row){
+          this.$refs.tableDetailDrawer.getList(row);
+        }
+      },
+
+      onDistribute(obj){
+        if (obj.orderStatus!==1&&obj.orderStatus!==4) return false
+        this.$confirm({
+          title: '绯荤粺鎻愮ず',
+          content: '鎮ㄥ皢瑕佽繘琛屼笅鍙戜换鍔$殑鎿嶄綔锛岀‘璁よ缁х画鍢涳紵',
+          okText:'纭',
+          cancelText:'鍙栨秷',
+          onOk:()=>{
+            // this.dealDistribute([obj.id],(f)=>{
+            //   if (f) {
+            //     this.$message.success('鎿嶄綔鎴愬姛')
+            //     this.$refs.table.refresh()
+            //   }
+            // })
+            dealDistribute({
+              "id": [
+              obj.id
+              ]
+            }).then((res) => {
+                  if (res.success) {
+                    this.$message.success('鎿嶄綔鎴愬姛')
+                    this.$refs.table.refresh()
+                  } else {
+                    this.$message.error('澶辫触') 
+                  }
+                })
+                
+              }
+            });
+      },
+
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/DetailDrawer.vue
new file mode 100644
index 0000000..f3d01b3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/DetailDrawer.vue
@@ -0,0 +1,276 @@
+<template>
+  <!-- <a-drawer 
+    title="璁㈠崟璇︽儏"
+    wrapClassName="weiben-private-drawer"
+    width="70%"
+    :closable="false"
+    :maskClosable="true"
+    :visible="visible"
+    :after-visible-change="afterVisibleChange"
+    @close="onClose"
+  >
+    <a-spin :spinning="loading">
+  
+    </a-spin>
+  </a-drawer>  -->
+
+  <div v-if="visible" style="background-color: white">
+
+    <!-- <a-spin :spinning="loading"> -->
+    <div class="wms-task-management-detail-div">
+      <div class="drawer-content">
+        <span style="font-weight:bold;cursor:default;">
+          <a style="cursor:default;">{{ row.no }}</a>鍗曟嵁璇︽儏
+        </span>
+        <div style="margin-top: 10px;">
+          <a-table :columns="columns" :data-source="list" row-key="id" :pagination="ipagination" :bordered="false"
+            :scroll="{ x: true }" :rowKey="(record) => record.id"
+            :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+            <template slot="index" slot-scope="text, record, index">
+              <span>{{ index + 1 }}</span>
+            </template>
+            <span slot="InspectionResultsSlots" slot-scope="text">
+              {{ 'InspectionResults' | dictType(text) }}
+            </span>
+            <span slot="containerStatusscopedSlots" slot-scope="text">
+              <a-tag
+                :color="text == '1' ? '#daa520' : (text == '2' ? '#cd5c5c' : (text == '3' ? '#add8e6' : '#696969'))">{{
+                  'orderdetails_statusenum' | dictType(text) }}</a-tag>
+            </span>
+          </a-table>
+        </div>
+      </div>
+    </div>
+    <!-- </a-spin> -->
+
+
+  </div>
+</template>
+
+<script>
+import { WmsOrderRukuDetail } from '@/api/modular/main/WmsOrderInspectionManage'
+export default {
+  name: 'wmsOrderRukuManagementDetailDrawer',
+  emits: ['update:visible', 'postBjData'],
+  props: {
+    visible: {
+      type: Boolean,
+      default: false
+    },
+    row: {
+      type: Object,
+      default: function () {
+        return {}
+      }
+    }
+  },
+  data() {
+    return {
+      loading: false,
+      containerStatusData: [],
+      list: [],
+      selectedRowKeys: [],
+      columns: [
+        // {
+        //   dataIndex: 'index',
+        //   title: '搴忓彿',
+        //   scopedSlots: { customRender: 'index' },
+        //   align: 'center',
+        //   width: '60'
+        // },
+        {
+          dataIndex: 'itemNo',
+          title: '琛屽彿',
+          align: 'center',
+          width: '100px'
+        },
+        {
+          dataIndex: 'materialcode',
+          title: '鐗╂枡缂栧彿',
+          align: 'center',
+          width: '100px'
+        },
+        {
+          dataIndex: 'materialname',
+          title: '鐗╂枡鍚嶇О',
+          align: 'center',
+          width: '100px'
+        },
+
+        {
+          title: '鐘舵��',
+          align: 'center',
+          dataIndex: 'orderStatus',
+          scopedSlots: { customRender: 'containerStatusscopedSlots' },
+          align: 'center',
+          width: '100px'
+        },
+        {
+          dataIndex: 'contractCode',
+          title: '鍚堝悓缂栧彿',
+          align: 'center',
+          width: '100px'
+        },
+
+        {
+          dataIndex: 'price',
+          title: '鍗曚环',
+          align: 'center',
+          width: '100px'
+        },
+
+        {
+          dataIndex: 'projectCode',
+          title: '椤圭洰缂栧彿',
+          align: 'center',
+          width: '100px'
+        },
+        {
+          dataIndex: 'unit',
+          title: '鍗曚綅',
+          align: 'center',
+          width: '100px'
+        },
+ 
+        {
+          dataIndex: 'qty',
+          title: '鏁伴噺',
+          align: 'center',
+          width: '100px'
+        },
+        {
+          dataIndex: 'inspectionResults',
+          title: '妫�楠岀粨鏋�',
+          align: 'center',
+          width: '100px',
+          scopedSlots: { customRender: 'InspectionResultsSlots' },
+        },
+
+        {
+          dataIndex: 'customsNum',
+          title: '鎶ュ叧鏁伴噺',
+          align: 'center',
+          width: '100px'
+        },
+        {
+          dataIndex: 'customsPrices',
+          title: '鎶ュ叧閲戦',
+          align: 'center',
+          width: '100px'
+        },
+        {
+          dataIndex: 'customsUnitName',
+          title: '鎶ュ叧鍗曚綅',
+          align: 'center',
+          width: '100px'
+        },
+        {
+          dataIndex: 'singleLength',
+          title: '鍗曟牴闀垮害',
+          align: 'center',
+          width: '100px'
+        },
+        {
+          dataIndex: 'sumPrice',
+          title: '鎴愭湰閲戦',
+          align: 'center',
+          width: '100px'
+        },
+        {
+          dataIndex: 'taCode',
+          title: 'TA鍙�',
+          align: 'center',
+          width: '100px'
+        },
+        {
+          dataIndex: 'theoreticalWeight',
+          title: '鐞嗚閲嶉噺',
+          align: 'center',
+          width: '100px'
+        },
+
+        {
+          dataIndex: 'specialNeeds',
+          title: '鐗规畩瑕佹眰',
+          align: 'center',
+          width: '100px'
+        },
+      ],
+      // 鍒嗛〉
+      ipagination: {
+        current: 1,
+        pageSize: 10,
+        pageSizeOptions: ['10', '20', '30', '40'],
+        showTotal: (total, range) => {
+          return range[0] + '-' + range[1] + '鍏�' + total + '鏉�'
+        },
+        showQuickJumper: true,
+        showSizeChanger: true,
+        total: 0,
+        size: 'small',
+        InspectionResultsData: []
+      },
+    }
+  },
+
+  created() {
+    const containerStatusOption = this.$options;
+    this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum');
+
+    // const InspectionResultsDataOption = this.$options
+    // this.InspectionResultsData = InspectionResultsDataOption.filters['dictData']('InspectionResults')
+  },
+  methods: {
+    onClose() {
+      this.close()
+    },
+    close() {
+      this.$emit('update:visible', false)
+    },
+    afterVisibleChange(visible) {
+      if (visible) {
+        this.initShow()
+      } else {
+        this.afterClsoe()
+      }
+    },
+    initShow() {
+      this.loading = true;
+      this.getList(() => {
+        this.loading = false;
+      })
+    },
+    getList(row) {
+      let params = { id: row.id }
+      WmsOrderRukuDetail(params).then(d => {
+        this.list = d.data.rows || []
+        this.$emit('update:visible', true)
+        // callback && callback(true)
+      }).catch(() => {
+        this.$emit('update:visible', false)
+        this.list = []
+        // callback && callback(false)
+      })
+    },
+    afterClsoe() {
+      this.list = []
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+      this.$emit('postBjData', this.selectedRows)
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-task-management-detail-div {
+  height: 100%;
+  overflow: auto;
+
+  .drawer-content {
+    padding: 16px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/addForm.vue
new file mode 100644
index 0000000..33ac721
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/addForm.vue
@@ -0,0 +1,121 @@
+锘�<template>
+  <a-modal
+    title="鏂板鍗曟嵁琛�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['nO']" />
+        </a-form-item>
+        <a-form-item label="閫佽揣閫氱煡鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ�佽揣閫氱煡鍗曞彿" v-decorator="['sourceBillNo']" />
+        </a-form-item>
+        <a-form-item label="渚涘簲鍟嗙紪鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜" v-decorator="['vendorcode']" />
+        </a-form-item>
+        <a-form-item label="渚涘簲鍟嗗悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" v-decorator="['vendorname']" />
+        </a-form-item>
+        <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" v-decorator="['companyname']" />
+        </a-form-item>
+        <a-form-item label="浠撶鍛�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨绠″憳" v-decorator="['warehouseKeepername']" />
+        </a-form-item>
+        <a-form-item label="璐告槗鏂瑰紡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨璐告槗鏂瑰紡" v-decorator="['tradeMode', {rules: [{ required: true, message: '璇烽�夋嫨璐告槗鏂瑰紡锛�' }]}]">
+            <a-select-option v-for="(item,index) in tradeModeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="浠撳偍涓績" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" v-decorator="['warehouseCentername']" />
+        </a-form-item>
+        <a-form-item label="浠撻棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨闂�" v-decorator="['storeRoomname']" />
+        </a-form-item>
+        <a-form-item label="鎶ュ叧鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ姤鍏冲崟鍙�" v-decorator="['declarationCode']" />
+        </a-form-item>
+        <a-form-item label="涓撲笟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ笓涓�" v-decorator="['majorname']" />
+        </a-form-item>
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-textarea placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsOrderAdd
+  } from '@/api/modular/main/WmsOrderInspectionManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        tradeModeData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const tradeModeOption = this.$options
+        this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            WmsOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/editForm.vue
new file mode 100644
index 0000000..83953d5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/editForm.vue
@@ -0,0 +1,145 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫鍗曟嵁琛�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input disabled placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['no']" />
+        </a-form-item>
+        <a-form-item label="閫佽揣閫氱煡鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ�佽揣閫氱煡鍗曞彿" v-decorator="['sourceBillNo']" />
+        </a-form-item>
+        <a-form-item label="渚涘簲鍟嗙紪鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜" v-decorator="['vendorcode']" />
+        </a-form-item>
+        <a-form-item label="渚涘簲鍟嗗悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" v-decorator="['vendorname']" />
+        </a-form-item>
+        <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" v-decorator="['companyname']" />
+        </a-form-item>
+        <a-form-item label="浠撶鍛�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨绠″憳" v-decorator="['warehouseKeepername']" />
+        </a-form-item>
+        <a-form-item label="璐告槗鏂瑰紡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨璐告槗鏂瑰紡" v-decorator="['tradeMode', {rules: [{ required: true, message: '璇烽�夋嫨璐告槗鏂瑰紡锛�' }]}]">
+            <a-select-option v-for="(item,index) in tradeModeData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="浠撳偍涓績" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" v-decorator="['warehouseCentername']" />
+        </a-form-item>
+        <a-form-item label="浠撻棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨闂�" v-decorator="['storeRoomname']" />
+        </a-form-item>
+        <a-form-item label="鎶ュ叧鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ姤鍏冲崟鍙�" v-decorator="['declarationCode']" />
+        </a-form-item>
+        <a-form-item label="涓撲笟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ笓涓�" v-decorator="['majorname']" />
+        </a-form-item>
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-textarea placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+<script>
+  import {
+    WmsOrderEdit
+  } from '@/api/modular/main/WmsOrderInspectionManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        tradeModeData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const tradeModeOption = this.$options
+        this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              no: record.no,
+              sourceBillNo: record.sourceBillNo,
+              vendorcode: record.vendorcode,
+              vendorname: record.vendorname,
+              companyname: record.companyname,
+              warehouseKeepername: record.warehouseKeepername,
+              tradeMode: record.tradeMode,
+              warehouseCentername: record.warehouseCentername,
+              storeRoomname: record.storeRoomname,
+              declarationCode: record.declarationCode,
+              majorname: record.majorname,
+              remarks: record.remarks
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            WmsOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/excelForm.vue
new file mode 100644
index 0000000..6cd242c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="wmsOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsOrderFromExcel, wmsOrderDownloadExcelTemplate} from '@/api/modular/main/WmsOrderInspectionManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+  components: {
+  },
+  data() {
+    return {
+      visible: false,
+      detailed: false,
+      confirmLoading: false,
+      fileList: [],
+      importExcelTypeData: [],
+      importExcelType: '1',
+      uploadFile: null,
+      columns: [],
+      dataList: [],
+	  demandText:'',
+      columnText: ''
+    }
+  },
+  methods: {
+    index() {
+      this.visible = true;
+      this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+      this.demandText = parseDemandText("wmsOrderDownloadExcelTemplate")
+      window.downloadFile = this.wmsOrderDownloadExcelTemplate;
+      this.getTable();
+    },
+    showDemand() {
+      this.detailed = !this.detailed;
+    },
+    customRequest(document) {
+      this.uploadFile = document
+    },
+    getTable() {
+      sysExcelTemplateGetColumnList({className: "WmsOrder"}).then(res =>
+      {
+        if (res.success) {
+          this.columns =[];
+          this.dataList = [{}];
+          res.data.forEach(x => {
+            this.columns.push({
+              dataIndex: x.columnName,
+              key: x.columnName,
+              title: x.columnComment
+            });
+            this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+          });
+          this.columnText = parseExcelFieldText(res.data);
+        }
+      });
+    },
+    beforeUpload(fileInfo) {
+      let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+      if (!res.success) {
+        this.$message.warning(res.msg)
+        return false
+      }
+      setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+    },
+    handleChange(fileInfo) {
+      if (fileInfo.file.status === 'error') {
+        fileInfo.fileList.splice(0, 1)
+      }
+      if (fileInfo.file.status === 'done') {
+        if (fileInfo.fileList.length > 1) {
+          fileInfo.fileList.splice(0, 1)
+        }
+        this.fileList = fileInfo.file
+      }
+    },
+    handleSubmit() {
+      this.confirmLoading = true
+      const formData = new FormData()
+      formData.append('file', this.uploadFile.file)
+      wmsOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.confirmLoading = false
+        this.$emit('ok', [])
+        this.handleCancel()
+      }).finally((res)=>{this.confirmLoading = false})
+    },
+    handleCancel() {
+      this.visible = false
+      this.detailed = false
+    },
+    wmsOrderDownloadExcelTemplate() {
+      wmsOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+        downloadFile(res);
+      }).catch((err) => {
+        this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/index.vue
new file mode 100644
index 0000000..3fc7a9a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/index.vue
@@ -0,0 +1,403 @@
+锘�<template>
+  <!-- 鎶ユ鍗� -->
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsOrder:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.no" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="閫佽揣閫氱煡鍗曞彿">
+                <a-input v-model="queryParam.sourceBillNo" allow-clear placeholder="璇疯緭鍏ラ�佽揣閫氱煡鍗曞彿" />
+              </a-form-item> </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="渚涘簲鍟嗙紪鐮�">
+                  <a-input v-model="queryParam.vendorcode" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="渚涘簲鍟嗗悕绉�">
+                  <a-input v-model="queryParam.vendorname" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍏徃鍚嶇О">
+                  <a-input v-model="queryParam.companyname" allow-clear placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠撶鍛�">
+                  <a-input v-model="queryParam.warehouseKeepername" allow-clear placeholder="璇疯緭鍏ヤ粨绠″憳" />
+                </a-form-item> </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="璐告槗鏂瑰紡">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.tradeMode" placeholder="璇烽�夋嫨璐告槗鏂瑰紡">
+                    <a-select-option v-for="(item, index) in tradeModeData" :key="index" :value="item.code">{{
+                      item.name
+                    }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠撳偍涓績">
+                  <a-input v-model="queryParam.warehouseCentername" allow-clear placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠撻棿">
+                  <a-input v-model="queryParam.storeRoomname" allow-clear placeholder="璇疯緭鍏ヤ粨闂�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎶ュ叧鍗曞彿">
+                  <a-input v-model="queryParam.declarationCode" allow-clear placeholder="璇疯緭鍏ユ姤鍏冲崟鍙�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="涓撲笟">
+                  <a-input v-model="queryParam.majorname" allow-clear placeholder="璇疯緭鍏ヤ笓涓�" />
+                </a-form-item>
+              </a-col>
+            </template>
+
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => (queryParam = {})">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px">
+                  {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'" />
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table ref="table" :columns="columns" :data="loadData" :alert="true" :rowKey="record => record.id"
+        :scroll="{ x: true }" :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsOrder:add')">
+          <!-- <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('wmsOrder:exportExcel')" icon="download" @click="wmsOrderToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('WmsOrder:add')" icon="plus" @click="$refs.addForm.add()">鏂板鍗曟嵁琛�</a-button> -->
+        </template>
+        <span slot="tradeModescopedSlots" slot-scope="text">
+          {{ 'trade_mode' | dictType(text) }}
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsOrder:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('WmsOrder:edit') & hasPerm('WmsOrder:delete')" />
+          <!-- <a-popconfirm v-if="hasPerm('WmsOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm> -->
+        </span>
+
+        <template slot="linkSlot" slot-scope="text, record">
+          <a @click="onOpenInfo(record)">{{ text }}</a>
+        </template>
+
+        <span slot="action" slot-scope="text, record">
+          <!-- <a :class="[(record.orderStatus===1||record.orderStatus===4)?'':'disabled']" style="margin-right:10px;" @click="onEdit(record)">缂栬緫</a> -->
+          <a v-if="hasPerm('WmsReceiptOrder:edit')" :class="[record.orderStatus == 1 ? 'disabled' : '']"
+            @click="onDistribute(record)">鎶ユ</a>
+
+          <!-- <a :class="[record.orderStatus === 1 || record.orderStatus === 4 ? '' : 'disabled']" style="margin-right:10px;"
+            @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-dropdown>
+            <a class="ant-dropdown-link" @click="e => e.preventDefault()">鏇村...</a>
+            <a-menu slot="overlay">
+              <a-menu-item><a :class="[record.orderStatus === 1 || record.orderStatus === 4 ? '' : 'disabled']"
+                  style="margin-right:10px;" @click="onDistribute(record)">涓嬪彂</a></a-menu-item>
+              <a-menu-item><a :class="[record.orderStatus === 1 || record.orderStatus === 4 ? '' : 'disabled']"
+                  @click="WmsOrderDelete(record)">鍒犻櫎</a></a-menu-item>
+            </a-menu>
+          </a-dropdown> -->
+        </span>
+
+        <span slot="containerStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text === 2 ? '#daa520' : text === 1 ? '#cd5c5c' : text === 3 ? '#add8e6' : '#696969'">{{
+            'order_statusenum' | dictType(text)
+          }}</a-tag>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+      <detail-drawer ref="tableDetailDrawer" :visible.sync="infoVisible" :row="infoRow" @postBjData="postBjData" />
+    </a-card>
+  </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsOrderPage, WmsOrderDelete, WmsOrderBaojian } from '@/api/modular/main/WmsOrderInspectionManage'
+import addForm from './addForm.vue'
+import editForm from './editForm.vue'
+import DetailDrawer from './DetailDrawer.vue'
+
+export default {
+  components: {
+    STable,
+    addForm,
+    editForm,
+    DetailDrawer
+  },
+  data() {
+    return {
+      advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+      queryParam: {},
+      columns: [
+        {
+          title: '鍗曟嵁缂栧彿',
+          align: 'center',
+          dataIndex: 'no',
+          scopedSlots: { customRender: 'linkSlot' },
+          width: '100px'
+        },
+        {
+          title: '鐘舵��',
+          align: 'center',
+          dataIndex: 'orderStatus',
+          scopedSlots: { customRender: 'containerStatusscopedSlots' },
+          width: '100px'
+        },
+
+        {
+          title: '渚涘簲鍟嗙紪鐮�',
+          align: 'center',
+          dataIndex: 'vendorcode',
+          width: '100px'
+        },
+        {
+          title: '渚涘簲鍟嗗悕绉�',
+          align: 'center',
+          dataIndex: 'vendorname',
+          width: '100px'
+        },
+
+
+        {
+          title: '鍒涘缓鏃ユ湡',
+          align: 'center',
+          dataIndex: 'billdate',
+          width: '100px'
+        },
+        {
+          title: '鍏徃鍚嶇О',
+          align: 'center',
+          dataIndex: 'companyname',
+          width: '100px'
+        },
+        {
+          title: '鎶ュ叧鍗曞彿',
+          align: 'center',
+          dataIndex: 'declarationCode',
+          width: '100px'
+        },
+
+        {
+          title: '涓撲笟',
+          align: 'center',
+          dataIndex: 'majorname',
+          width: '100px'
+        },
+
+        {
+          title: '閫佽揣閫氱煡鍗曞彿',
+          align: 'center',
+          dataIndex: 'sourceBillNo',
+          width: '100px'
+        },
+
+
+        {
+          title: '浠撳偍涓績',
+          align: 'center',
+          dataIndex: 'warehouseCentername',
+          width: '100px'
+        },
+
+        {
+          title: '浠撶鍛�',
+          align: 'center',
+          dataIndex: 'warehouseKeepername',
+          width: '100px'
+        },
+
+        {
+          title: '澶囨敞',
+          align: 'center',
+          dataIndex: 'remarks',
+          width: '100px'
+        },
+
+        // {
+        //   title: '閫佽揣閫氱煡鍗曞彿',
+        //   align: 'center',
+        //   dataIndex: 'sourceBillNo',
+        //   width: '100px'
+        // },
+
+        // {
+        //   title: '鍏徃鍚嶇О',
+        //   align: 'center',
+        //   dataIndex: 'companyname',
+        //   width: '100px'
+        // },
+        // {
+        //   title: '浠撶鍛�',
+        //   align: 'center',
+        //   dataIndex: 'warehouseKeepername',
+        //   width: '100px'
+        // },
+        // {
+        //   title: '璐告槗鏂瑰紡',
+        //   align: 'center',
+        //   dataIndex: 'tradeMode',
+        //   scopedSlots: { customRender: 'tradeModescopedSlots' },
+        //   width: '100px'
+        // },
+        // {
+        //   title: '浠撳偍涓績',
+        //   align: 'center',
+        //   dataIndex: 'warehouseCentername',
+        //   width: '100px'
+        // },
+        // {
+        //   title: '浠撻棿',
+        //   align: 'center',
+        //   dataIndex: 'storeRoomname',
+        //   width: '100px'
+        // },
+        // {
+        //   title: '鎶ュ叧鍗曞彿',
+        //   align: 'center',
+        //   dataIndex: 'declarationCode',
+        //   width: '100px'
+        // },
+        // {
+        //   title: '涓撲笟',
+        //   align: 'center',
+        //   dataIndex: 'majorname',
+        //   width: '100px'
+        // },
+
+
+      ],
+      tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: parameter => {
+        return WmsOrderPage(Object.assign(parameter, this.queryParam)).then(res => {
+          return res.data
+        })
+      },
+      tradeModeData: [],
+      selectedRowKeys: [],
+      selectedRows: [],
+      infoRow: {},
+      infoVisible: false,
+      containerStatusData: [],
+      postBjDataArr: []
+    }
+  },
+  created() {
+    if (this.hasPerm('WmsOrder:edit') || this.hasPerm('WmsOrder:delete')) {
+      this.columns.push({
+        title: '鎿嶄綔',
+        width: '100px',
+        dataIndex: 'action',
+        fixed: 'right',
+        scopedSlots: { customRender: 'action' }
+      })
+    }
+    const tradeModeOption = this.$options
+    this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+
+    const containerStatusOption = this.$options
+    this.containerStatusData = containerStatusOption.filters['dictData']('order_statusenum')
+  },
+  methods: {
+    /**
+     * 鏌ヨ鍙傛暟缁勮
+     */
+    switchingDate() {
+      const obj = JSON.parse(JSON.stringify(this.queryParam))
+      return obj
+    },
+    WmsOrderDelete(record) {
+      WmsOrderDelete(record).then(res => {
+        if (res.success) {
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.$refs.table.refresh()
+        } else {
+          this.$message.error('鍒犻櫎澶辫触') // + res.message
+        }
+      })
+    },
+    toggleAdvanced() {
+      this.advanced = !this.advanced
+    },
+    handleOk() {
+      this.$refs.table.refresh()
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    },
+    onOpenInfo(row) {
+      this.infoVisible = true
+      this.infoRow = row
+      this.$refs.tableDetailDrawer.getList(row)
+    },
+
+    onDistribute(obj) {
+      // if (obj.orderStatus !== 1 && obj.orderStatus !== 4) return false
+      if (obj.orderStatus == 1) return false
+      if(this.postBjDataArr.length<=0 || obj.id != this.postBjDataArr[0].orderId){
+        this.$message.error('璇烽�変腑姝ゅ崟鎹笅鐨勭墿鏂�!')
+        return
+      }
+      this.$confirm({
+        title: '绯荤粺鎻愮ず',
+        content: '鎮ㄥ皢瑕佽繘琛屾姤妫�浠诲姟鐨勬搷浣滐紝纭瑕佺户缁槢锛�',
+        okText: '纭',
+        cancelText: '鍙栨秷',
+        onOk: () => {
+          let param = {
+            ...obj,
+            dtls: this.postBjDataArr
+          }
+          WmsOrderBaojian(param).then(res => {
+            if (res.success) {
+              this.$message.success('鎿嶄綔鎴愬姛')
+              this.$refs.table.refresh()
+            } else {
+              this.$message.error('鎿嶄綔澶辫触')
+            }
+          })
+        }
+      })
+    },
+    // 閫変腑鐨勭墿鏂�
+    postBjData(data) {
+      this.postBjDataArr = data
+    }
+  }
+}
+</script>
+<style lang="less">
+.table-operator {
+  margin-bottom: 18px;
+}
+
+button {
+  margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/editForm.vue
new file mode 100644
index 0000000..a432631
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/editForm.vue
@@ -0,0 +1,186 @@
+锘�<template>
+  <a-modal
+    :title="title"
+    width="600px"
+    :visible="visible"
+    dialogClass="zero-modal"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <div class="order-type-modal-content">
+        <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-form-item label="绫诲瀷缂栫爜">
+            <a-input placeholder="璇疯緭鍏ョ被鍨嬬紪鐮�" :disabled="type==='edit'" v-decorator="['code',{rules:[{required:true,message:'绫诲瀷缂栫爜涓嶅彲涓虹┖锛�'}]}]" />
+          </a-form-item>
+          <a-form-item label="绫诲瀷鍚嶇О">
+            <a-input placeholder="璇疯緭鍏ョ被鍨嬪悕绉�" v-decorator="['name',{rules:[{required:true,message:'绫诲瀷鍚嶇О涓嶅彲涓虹┖锛�'}]}]" />
+          </a-form-item>
+          <a-form-item label="鎺掑簭">
+            <a-input-number placeholder="璇疯緭鍏ユ帓搴�" style="width: 100%" v-decorator="['sort',{rules:[
+              {required:true,message:'鎺掑簭涓嶅彲涓虹┖锛�'},
+              { validator: sortValidate }
+            ],validateFirst:true}]" :min="1" />
+          </a-form-item>
+          <a-form-item label="鎵�灞炶溅闂�" v-if="pObj.id">
+            <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炶溅闂�" v-decorator="['lesWorkShopType', {rules: [{required:true,message:'鎵�灞炶溅闂翠笉鍙负绌猴紒'}]}]">
+              <a-select-option v-for="(item,index) in selectOptions1" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+            </a-select>
+          </a-form-item>
+        </a-form>
+      </div>
+    </a-spin>
+    
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="submit" type="primary" :loading="confirmLoading" @click="handleSubmit">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+  import {WareOrderTypeAdd,WareOrderTypeEdit} from '@/api/modular/main/WmsOrderTypeManage'
+  export default {
+    name:'orderTypeModal',
+    emits:['update:visible','callback'],
+    props:{
+      visible:{
+        type:Boolean,
+        default:false
+      },
+      type:{
+        type:String,
+        default:'add'
+      },
+      obj:{
+        type:Object,
+        default:function(){
+          return {}
+        }
+      },
+      pObj:{
+        type:Object,
+        default:function(){
+          return {}
+        }
+      }
+    },
+    watch:{
+      visible:{
+        immediate:true,
+        handler(newV,oldV){
+          if (newV!==oldV){
+            this.initShow()
+          }
+        }
+      }
+    },
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 4 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 20 }
+        },
+        confirmLoading: false,
+        title:'',
+        selectOptions1:[],
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      initShow(){
+        if (this.visible) {
+          this.getSelectOptions()
+          if (this.type==='add'){
+            this.title="鏂板鍗曟嵁绫诲瀷"
+            let _initForm = {sort:1}
+            this.$nextTick(()=>{
+              this.form.setFieldsValue(_initForm)
+            })
+          } else {
+            this.title="缂栬緫鍗曟嵁绫诲瀷"
+            let _initForm = {
+              name:this.obj.name,
+              code:this.obj.code,
+              sort:this.obj.sort
+            }
+            if (this.pObj.id) {
+              _initForm.lesWorkShopType = this.obj.lesWorkShopType
+            }
+            this.$nextTick(()=>{
+              this.form.setFieldsValue(_initForm)
+            })
+          }
+        }
+      },
+      getSelectOptions(){
+        if (this.selectOptions1.length<=0) {
+          this.selectOptions1 = this.$options.filters['dictData']('les_workshop_type')
+        }
+      },
+      sortValidate(rule, value, callback){
+        if (Number(value)!==parseInt(value)) {
+          callback('鍙兘鏄暣鏁�');
+        } else {
+          callback();
+        }
+      },
+      handleSubmit () {
+        this.form.validateFields((errors, values) => {
+          if (!errors) {
+            this.$loading.show()
+            this.handleSubmitAjax(values,(f)=>{
+              this.$loading.hide()
+              if (f) {
+                this.$message.success('鎿嶄綔鎴愬姛锛�');
+                this.handleCancel()
+                this.$emit('callback')
+              }
+            })
+          }
+        })
+      },
+      handleSubmitAjax (params,callback){
+        if (this.type==='add') {
+          this.handleAddAjax(params,callback)
+        } else {
+          this.handleEditAjax(params,callback)
+        }
+      },
+      handleAddAjax(params,callback){
+        let _params = {...params}
+        if (!this.pObj.id) {
+          _params.pid = 0
+        } else {
+          _params.pid = this.pObj.id
+        }
+        WareOrderTypeAdd(_params).then(()=>{
+          callback(true)
+        }).catch(()=>{
+          callback(false)
+        })
+      },
+      handleEditAjax(params,callback){
+        let _params = {...params}
+        _params.pid = this.obj.pid;
+        _params.id = this.obj.id;
+        WareOrderTypeEdit(_params).then(()=>{
+          callback(true)
+        }).catch(()=>{
+          callback(false)
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.$emit('update:visible',false)
+      }
+    }
+  }
+</script>
+<style lang="less" scoped>
+.order-type-modal-content{
+  padding: 20px 16px 0 16px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/index.vue
new file mode 100644
index 0000000..a397798
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/index.vue
@@ -0,0 +1,229 @@
+锘�<template>
+  <div class="base-order-type-manage-page">
+    <div class="divider"></div>
+    <div class="management-card main-management-card">
+      <div class="top-head">
+        <span>涓荤被鍨�</span>
+        <a @click="onMainAdd"><a-icon type="plus" /></a>
+      </div>
+      <div class="content" ref="content">
+        <a-table v-if="th" :data-source="list1" :columns="columns1" rowKey="id" :pagination="false" :scroll="{x:580,y:th}">
+          <template slot="linkSlot" slot-scope="text,record">
+            <a @click="onActiveMain(record)">{{text}}</a>
+          </template>
+          <template slot="action" slot-scope="text,record,index">
+            <a style="margin-right:8px;" @click="onEdit(record)"><a-icon type="edit" /></a>
+            <a @click="onDelete(record)"><a-icon type="delete" /></a>
+          </template>
+        </a-table> 
+      </div>
+    </div>
+    <div class="divider"></div>
+    <div class="management-card sub-management-card">
+      <div class="top-head">
+        <span><span style="margin-right:8px;" v-if="activeMainObj.name">{{activeMainObj.name}}</span>瀛愮被鍨嬫槑缁�</span>
+        <a @click="onDetailAdd" v-if="activeMainObj.id"><a-icon type="plus" /></a>
+      </div>
+      <div class="content" ref="content">
+        <a-table v-if="th" :data-source="list2" :columns="columns2" rowKey="id" :pagination="false" :scroll="{x:580,y:th}">
+          <template slot="lesWorkShopTypeSlot" slot-scope="text">
+            {{ 'les_workshop_type' | dictType(text) }}
+          </template>
+          <template slot="action" slot-scope="text,record,index">
+            <a style="margin-right:8px;" @click="onEdit(record)"><a-icon type="edit" /></a>
+            <a @click="onDelete(record)"><a-icon type="delete" /></a>
+          </template>
+        </a-table> 
+      </div>
+    </div>
+    <div class="divider"></div>
+    
+    <edit-form :visible.sync="formVisible" :type="formType" :obj="formObj" :p-obj="formParentObj" @callback="editBack" />
+  </div>
+</template>
+<script>
+  import { WareOrderTypePage, WareOrderTypeDelete } from '@/api/modular/main/WmsOrderTypeManage'
+  import editForm from './editForm.vue'
+  let interval = null
+  export default {
+    components: {editForm},
+    data () {
+      return {
+        list1:[],
+        list2:[],
+        th:0,
+        columns1:[
+          { title: '绫诲瀷缂栫爜', dataIndex: 'code', scopedSlots: { customRender: 'linkSlot' } },
+          { title: '绫诲瀷鍚嶇О', dataIndex: 'name', scopedSlots: { customRender: 'linkSlot' } },
+          { title: '鎺掑簭', dataIndex: 'sort', key: 'sort' },
+          { title: '鎿嶄綔', key: 'action', width: 70, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+        ],
+        columns2:[
+          { title: '绫诲瀷缂栫爜', dataIndex: 'code', key: 'code' },
+          { title: '绫诲瀷鍚嶇О', dataIndex: 'name', key: 'name' },
+          { title: '鎺掑簭', dataIndex: 'sort', key: 'sort' },
+          { title: '鎵�灞炶溅闂�', dataIndex: 'lesWorkShopType', scopedSlots: { customRender: 'lesWorkShopTypeSlot' } },
+          { title: '鎿嶄綔', key: 'action', width: 70, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+        ],
+        formVisible:false,
+        formType:'',
+        formObj:{},
+        formParentObj:{},
+        activeMainObj:{}
+      }
+    },
+    mounted () {
+      this.calTh()
+      this.getMainList()
+    },
+    methods: {
+      calTh(){
+        interval = window.setInterval(()=>{
+          if (this.th) {
+            window.clearInterval(interval)
+            interval = null
+          } else {
+            this.th = this.$refs.content.clientHeight - 55
+          }
+        },100)
+      },
+      getMainList(){
+        this.getList(0)
+        this.list2 = []
+        this.activeMainObj = {}
+      },
+      getList(pid){
+        this.$loading.show()
+        WareOrderTypePage(pid).then(d=>{
+          let arr = (d.data || []).map((item)=>{
+            item.lesWorkShopType = String(item.lesWorkShopType)
+            return item
+          })
+          if (pid===0){
+            this.list1=arr
+          } else {
+            this.list2=arr
+          }
+          this.$loading.hide()
+        }).catch(()=>{
+          this.$loading.hide()
+        })
+      },
+      onMainAdd(){
+        this.formType = 'add'
+        this.formObj = {}
+        this.formParentObj = {}
+        this.formVisible = true
+      },
+      onDetailAdd(){
+        this.formType = 'add'
+        this.formObj = {}
+        this.formParentObj = this.activeMainObj
+        this.formVisible = true
+      },
+      onEdit(obj){
+        this.formType = 'edit'
+        this.formObj = obj
+        if (obj.pid===0) {
+          this.formParentObj = {}
+        } else {
+          this.formParentObj = this.activeMainObj
+        }
+        this.formVisible = true
+      },
+      editBack(){
+        if (!this.formParentObj.id) {
+          this.getMainList()
+        } else {
+          this.getList(this.formParentObj.id)
+        }
+      },
+      onDelete(obj){
+        this.$confirm({
+          title: '纭畾瑕佽繘琛屽垹闄ゆ搷浣滃悧锛�',
+          okText: '纭畾',
+          okType: 'danger',
+          cancelText: '鍙栨秷',
+          onOk:()=>{
+            this.handleDelete(obj.id,(f)=>{
+              if (f) {
+                if (obj.pid===0) {
+                  this.getMainList()
+                } else {
+                  this.getList(this.activeMainObj.id)
+                }
+              }
+            })
+          }
+        });
+      },
+      handleDelete(id,callback){
+        this.$loading.show()
+        let params = {id}
+        WareOrderTypeDelete(params).then(()=>{
+          this.$loading.hide()
+          callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback(false)
+        })
+      },
+      onActiveMain(obj){
+        this.activeMainObj = obj
+        this.getList(obj.id)
+      }
+    },
+    beforeDestroy(){
+      try{
+        window.clearInterval(interval)
+        interval = null
+      }catch(e){
+        //TODO handle the exception
+      }
+    }
+  }
+</script>
+<style lang="less" scoped>
+.base-order-type-manage-page{
+  height: 100%;
+  background-color: #fff;
+  border-radius: 2px;
+  display: flex;
+  @dividerSize:16px;
+  padding: @dividerSize 0;
+  .divider {
+    width: @dividerSize;
+    flex-shrink: 0;
+  }
+  .management-card{
+    width: 1px;
+    flex-grow: 1;
+    box-sizing: border-box;
+    border: 1px solid #d9d9d9;
+    border-radius: 4px;
+    overflow: hidden;
+    display: flex;
+    flex-direction: column;
+    &.main-management-card{
+      flex-grow: 2;
+    }
+    &.sub-management-card{
+      flex-grow: 3;
+    }
+    &>.top-head {
+      flex-shrink: 0;
+      border-bottom: 1px solid #d9d9d9;
+      padding: 8px 16px;
+      font-size: 1.2em;
+      font-weight: bold;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+    }
+    &>.content {
+      height: 1px;
+      flex-grow: 1;
+    }
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/addForm.vue
new file mode 100644
index 0000000..0308bc1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/addForm.vue
@@ -0,0 +1,100 @@
+锘�<template>
+  <a-modal
+    title="鏂板PDA鑿滃崟"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍥炬爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ浘鏍�" v-decorator="['icon']" />
+        </a-form-item>
+        <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ紪鐮�" v-decorator="['code']" />
+        </a-form-item>
+        <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="棰滆壊" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ鑹�" v-decorator="['clolor']" />
+        </a-form-item>
+        <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炶溅闂�" v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]">
+            <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsPdaPowerAdd
+  } from '@/api/modular/main/WmsPdaPowerManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        workShopTypeData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const workShopTypeOption = this.$options
+        this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            WmsPdaPowerAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/editForm.vue
new file mode 100644
index 0000000..f9ad61f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/editForm.vue
@@ -0,0 +1,118 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫PDA鑿滃崟"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍥炬爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ浘鏍�" v-decorator="['icon']" />
+        </a-form-item>
+        <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ紪鐮�" v-decorator="['code']" />
+        </a-form-item>
+        <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="棰滆壊" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ鑹�" v-decorator="['clolor']" />
+        </a-form-item>
+        <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炶溅闂�" v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]">
+            <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsPdaPowerEdit
+  } from '@/api/modular/main/WmsPdaPowerManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        workShopTypeData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const workShopTypeOption = this.$options
+        this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              icon: record.icon,
+              code: record.code,
+              name: record.name,
+              clolor: record.clolor,
+              workShopType: String(record.workShopType)
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            WmsPdaPowerEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/index.vue
new file mode 100644
index 0000000..626361e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/index.vue
@@ -0,0 +1,194 @@
+锘�<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+    <div ref="boxForm" class="boxForm">
+      <a-card :bordered="false" :bodyStyle="tstyle">
+        <div class="table-page-search-wrapper" v-if="hasPerm('WmsPdaPower:page')">
+          <a-form layout="inline">
+            <a-row :gutter="48">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="缂栫爜">
+                  <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ョ紪鐮�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍚嶇О">
+                  <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ悕绉�"/>
+                </a-form-item>
+              </a-col><template v-if="advanced"><a-col :md="8" :sm="24">
+                <a-form-item label="鎵�灞炶溅闂�">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.workShopType" placeholder="璇烽�夋嫨鎵�灞炶溅闂�">
+                    <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>            </template>
+
+              <a-col :md="8" :sm="24" >
+                <span class="table-page-search-submitButtons">
+                  <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                  <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                  <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                    <a-icon :type="advanced ? 'up' : 'down'"/>
+                  </a>
+                </span>
+              </a-col>
+
+            </a-row>
+          </a-form>
+        </div>
+      </a-card>
+    </div>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :scroll="{x: true,y:tableHeight}"
+        :rowSelection="null"
+        >
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsPdaPower:add')" >
+          <div ref="actionBar" class="actionBar">
+            <a-button type="primary" v-if="hasPerm('WmsPdaPower:add')" icon="plus" @click="$refs.addForm.add()">鏂板PDA鑿滃崟</a-button>
+          </div>
+        </template>
+        <span slot="workShopTypescopedSlots" slot-scope="text">
+          {{ 'les_workshop_type' | dictType(text) }}
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsPdaPower:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('WmsPdaPower:edit') & hasPerm('WmsPdaPower:delete')"/>
+          <a-popconfirm v-if="hasPerm('WmsPdaPower:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsPdaPowerDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { WmsPdaPowerPage, WmsPdaPowerDelete } from '@/api/modular/main/WmsPdaPowerManage'
+  import setTableHtMixin from '@/mixins/handleTableHt.js'//鑷畾涔塼able楂樺害
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  export default {
+    mixins: [setTableHtMixin],
+    components: {
+      STable,
+      addForm,
+      editForm
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+        {
+          title: '搴忓彿',
+          width: '60px',
+          align: 'center',
+          customRender: (text, record, index) => `${index + 1}`
+        },
+          {
+            title: '鍥炬爣',
+            align: 'center',
+            dataIndex: 'icon'
+          },
+          {
+            title: '缂栫爜',
+            align: 'center',
+            dataIndex: 'code'
+          },
+          {
+            title: '鍚嶇О',
+            align: 'center',
+            dataIndex: 'name'
+          },
+          {
+            title: '棰滆壊',
+            align: 'center',
+            dataIndex: 'clolor'
+          },
+          {
+            title: '鎵�灞炶溅闂�',
+            align: 'center',
+            dataIndex: 'workShopType',
+            scopedSlots: { customRender: 'workShopTypescopedSlots' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return WmsPdaPowerPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        workShopTypeData: [],
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      if (this.hasPerm('WmsPdaPower:edit') || this.hasPerm('WmsPdaPower:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+      const workShopTypeOption = this.$options
+      this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+      this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+      window.addEventListener(
+      'resize',
+      () => {
+      this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+      },
+      false
+      )
+
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      WmsPdaPowerDelete (record) {
+        WmsPdaPowerDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+        this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/addForm.vue
new file mode 100644
index 0000000..7b9af1a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/addForm.vue
@@ -0,0 +1,161 @@
+锘�<template>
+  <a-modal
+    title="鏂板搴撲綅淇℃伅"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ紪鐮�" v-decorator="['placecode', {rules: [{required: true, message: '璇疯緭鍏ョ紪鐮侊紒'}]}]" />
+        </a-form-item>
+        <a-form-item label="鎵�鍦ㄥ簱鍖�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�鍦ㄥ簱鍖�" v-decorator="['areaid', {rules: [{ required: true, message: '璇烽�夋嫨鎵�鍦ㄥ簱鍖猴紒' }]}]">
+            <a-select-option v-for="(item,index) in WmsAreaData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鎺�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ユ帓" style="width: 100%" v-decorator="['rowno', {rules: [{ required: true, message: '璇疯緭鍏ユ帓锛�' }]}]" :min="0"/>
+        </a-form-item>
+        <a-form-item label="鍒�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ垪" style="width: 100%" v-decorator="['columnno', {rules: [{ required: true, message: '璇疯緭鍏ュ垪锛�' }]}]" :min="0"/>
+        </a-form-item>
+        <a-form-item label="灞�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ眰" style="width: 100%" v-decorator="['layerno', {rules: [{ required: true, message: '璇疯緭鍏ュ眰锛�' }]}]" :min="0"/>
+        </a-form-item>
+        <a-form-item label="宸烽亾" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ贩閬�" style="width: 100%" v-decorator="['aisle', {rules: [{ required: true, message: '璇疯緭鍏ュ贩閬擄紒' }]}]" :min="0"/>
+        </a-form-item>
+        <a-form-item label="杩涙繁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ヨ繘娣卞彿" style="width: 100%" v-decorator="['deepcellno']" :min="0"/>
+        </a-form-item>
+
+        <a-form-item label="绾垮彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ョ嚎鍙�" style="width: 100%" v-decorator="['line']" :min="0"/>
+        </a-form-item>
+        <a-form-item label="鍫嗗灈鏈哄唴閮ㄤ綅缃�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ爢鍨涙満鍐呴儴浣嶇疆" v-decorator="['positionnoForSrm']" />
+        </a-form-item>
+        <a-form-item label="搴撲綅X鍧愭爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ簱浣峏鍧愭爣" style="width: 100%" v-decorator="['xzb']" :min="0"/>
+        </a-form-item>
+        <a-form-item label="搴撲綅Y鍧愭爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ簱浣峐鍧愭爣" style="width: 100%" v-decorator="['yzb']" :min="0"/>
+        </a-form-item>
+        <a-form-item label="搴撲綅Z鍧愭爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ簱浣峑鍧愭爣" style="width: 100%" v-decorator="['zzb']" :min="0"/>
+        </a-form-item>
+        <a-form-item label="搴撲綅闀垮害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ簱浣嶉暱搴�" style="width: 100%" v-decorator="['length']" :min="0"/>
+        </a-form-item>
+        <a-form-item label="搴撲綅瀹藉害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ簱浣嶅搴�" style="width: 100%" v-decorator="['width']" :min="0"/>
+        </a-form-item>
+        <a-form-item label="搴撲綅楂樺害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ簱浣嶉珮搴�" style="width: 100%" v-decorator="['height']" :min="0"/>
+        </a-form-item>
+        <a-form-item label="鏈�澶ф壙閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ユ渶澶ф壙閲�" style="width: 100%" v-decorator="['maxweight']" :min="0"/>
+        </a-form-item>
+        <a-form-item label="搴撲綅楂樺害绾у埆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨搴撲綅楂樺害绾у埆" v-decorator="['heightlevel']">
+            <a-select-option v-for="(item,index) in heightlevelData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="浼樺厛绾�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ヤ紭鍏堢骇" style="width: 100%" v-decorator="['priority']" :min="0"/>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsPlaceFkWmsAreaList,
+    WmsPlaceAdd
+  } from '@/api/modular/main/WmsPlaceManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        WmsAreaData: [],
+        visible: false,
+        confirmLoading: false,
+        heightlevelData: [],
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      WmsPlaceFkWmsAreaList() {
+          WmsPlaceFkWmsAreaList().then(res => {
+            this.WmsAreaData = res.data
+          })
+      },
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        })
+        const placestatusOption = this.$options
+        this.placestatusData = placestatusOption.filters['dictData']('place_status')
+        const islockOption = this.$options
+        this.islockData = islockOption.filters['dictData']('yes_or_no')
+        const isfullOption = this.$options
+        this.isfullData = isfullOption.filters['dictData']('yes_or_no')
+        const hastaskdoingOption = this.$options
+        this.hastaskdoingData = hastaskdoingOption.filters['dictData']('yes_or_no')
+        const heightlevelOption = this.$options
+        this.heightlevelData = heightlevelOption.filters['dictData']('height_level')
+        this.WmsPlaceFkWmsAreaList()
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+				if (values[key] == null) {
+						values[key] = 0
+				}
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            WmsPlaceAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/editForm.vue
new file mode 100644
index 0000000..381b8cc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/editForm.vue
@@ -0,0 +1,204 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫搴撲綅淇℃伅"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input
+            disabled
+            placeholder="璇疯緭鍏ョ紪鐮�"
+            v-decorator="['placecode', { rules: [{ required: true, message: '璇疯緭鍏ョ紪鐮侊紒' }] }]"
+          />
+        </a-form-item>
+        <a-form-item label="鎵�鍦ㄥ簱鍖�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-select
+            style="width: 100%"
+            placeholder="璇烽�夋嫨鎵�鍦ㄥ簱鍖�"
+            v-decorator="['areaid', { rules: [{ required: true, message: '璇烽�夋嫨鎵�鍦ㄥ簱鍖猴紒' }] }]"
+          >
+            <a-select-option v-for="(item, index) in WmsAreaData" :key="index" :value="item.code">{{
+              item.name
+            }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鎺�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ユ帓" style="width: 100%" v-decorator="['rowno']" :min="0" />
+        </a-form-item>
+        <a-form-item label="鍒�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ垪" style="width: 100%" v-decorator="['columnno']" :min="0" />
+        </a-form-item>
+        <a-form-item label="灞�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ眰" style="width: 100%" v-decorator="['layerno']" :min="0" />
+        </a-form-item>
+        <a-form-item label="宸烽亾" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number
+            placeholder="璇疯緭鍏ュ贩閬�"
+            style="width: 100%"
+            v-decorator="['aisle', { rules: [{ required: true, message: '璇疯緭鍏ュ贩閬擄紒' }] }]"
+            :min="0"
+          />
+        </a-form-item>
+        <a-form-item label="杩涙繁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ヨ繘娣卞彿" style="width: 100%" v-decorator="['deepcellno']" :min="0" />
+        </a-form-item>
+        <a-form-item label="绾垮彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ョ嚎鍙�" style="width: 100%" v-decorator="['line']" :min="0" />
+        </a-form-item>
+        <a-form-item label="鍫嗗灈鏈哄唴閮ㄤ綅缃�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ爢鍨涙満鍐呴儴浣嶇疆" v-decorator="['positionnoForSrm']" />
+        </a-form-item>
+        <a-form-item label="搴撲綅X鍧愭爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ簱浣峏鍧愭爣" style="width: 100%" v-decorator="['xzb']" :min="0" />
+        </a-form-item>
+        <a-form-item label="搴撲綅Y鍧愭爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ簱浣峐鍧愭爣" style="width: 100%" v-decorator="['yzb']" :min="0" />
+        </a-form-item>
+        <a-form-item label="搴撲綅Z鍧愭爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ簱浣峑鍧愭爣" style="width: 100%" v-decorator="['zzb']" :min="0" />
+        </a-form-item>
+        <a-form-item label="搴撲綅闀垮害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ簱浣嶉暱搴�" style="width: 100%" v-decorator="['length']" :min="0" />
+        </a-form-item>
+        <a-form-item label="搴撲綅瀹藉害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ簱浣嶅搴�" style="width: 100%" v-decorator="['width']" :min="0" />
+        </a-form-item>
+        <a-form-item label="搴撲綅楂樺害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ簱浣嶉珮搴�" style="width: 100%" v-decorator="['height']" :min="0" />
+        </a-form-item>
+        <a-form-item label="鏈�澶ф壙閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ユ渶澶ф壙閲�" style="width: 100%" v-decorator="['maxweight']" :min="0" />
+        </a-form-item>
+        <a-form-item label="搴撲綅楂樺害绾у埆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨搴撲綅楂樺害绾у埆" v-decorator="['heightlevel']">
+            <a-select-option v-for="(item, index) in heightlevelData" :key="index" :value="item.code">{{
+              item.name
+            }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="浼樺厛绾�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ヤ紭鍏堢骇" style="width: 100%" v-decorator="['priority']" :min="0" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { WmsPlaceFkWmsAreaList, WmsPlaceEdit } from '@/api/modular/main/WmsPlaceManage'
+export default {
+  data() {
+    return {
+      Id: 0,
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 5 }
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 15 }
+      },
+      record: {},
+      WmsAreaData: [],
+      heightlevelData: [],
+      visible: false,
+      confirmLoading: false,
+      form: this.$form.createForm(this)
+    }
+  },
+  methods: {
+    WmsPlaceFkWmsAreaList() {
+      WmsPlaceFkWmsAreaList().then((res) => {
+        this.WmsAreaData = res.data
+      })
+    },
+    // 鍒濆鍖栨柟娉�
+    edit(record) {
+      this.visible = true
+      this.Id = record.id
+      this.$nextTick(() => {})
+      // 娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+      this.record = JSON.parse(JSON.stringify(record))
+      const placestatusOption = this.$options
+      this.placestatusData = placestatusOption.filters['dictData']('place_status')
+      const islockOption = this.$options
+      this.islockData = islockOption.filters['dictData']('yes_or_no')
+      const isfullOption = this.$options
+      this.isfullData = isfullOption.filters['dictData']('yes_or_no')
+      const hastaskdoingOption = this.$options
+      this.hastaskdoingData = hastaskdoingOption.filters['dictData']('yes_or_no')
+      const heightlevelOption = this.$options
+      this.heightlevelData = heightlevelOption.filters['dictData']('height_level')
+      this.$nextTick(() => {
+        this.form.setFieldsValue({
+          id: record.id,
+          placecode: record.placecode,
+          areaid: record.areaid,
+          rowno: record.rowno,
+          columnno: record.columnno,
+          layerno: record.layerno,
+          deepcellno: record.deepcellno,
+          aisle: record.aisle,
+          line: record.line,
+          positionnoForSrm: record.positionnoForSrm,
+          xzb: record.xzb,
+          yzb: record.yzb,
+          zzb: record.zzb,
+          length: record.length,
+          width: record.width,
+          height: record.height,
+          maxweight: record.maxweight,
+          heightlevel: record.heightlevel + '',
+          priority: record.priority
+        })
+      })
+      this.WmsPlaceFkWmsAreaList()
+    },
+    handleSubmit() {
+      const {
+        form: { validateFields }
+      } = this
+      this.confirmLoading = true
+      validateFields((errors, values) => {
+        if (!errors) {
+          for (const key in values) {
+            if (values[key] == null) continue
+            if (typeof values[key] === 'object') {
+              values[key] = JSON.stringify(values[key])
+              this.record[key] = values[key]
+            } else {
+              this.record[key] = values[key]
+            }
+          }
+          WmsPlaceEdit(this.record)
+            .then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            })
+            .finally((res) => {
+              this.confirmLoading = false
+            })
+        } else {
+          this.confirmLoading = false
+        }
+      })
+    },
+    handleCancel() {
+      this.form.resetFields()
+      this.visible = false
+    }
+  }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/index.vue
new file mode 100644
index 0000000..fdba0b8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/index.vue
@@ -0,0 +1,420 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsPlace:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="缂栫爜">
+                <a-input v-model="queryParam.placecode" allow-clear placeholder="璇疯緭鍏ョ紪鐮�" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐘舵��">
+                <a-select
+                  :allowClear="true"
+                  style="width: 100%"
+                  v-model="queryParam.placestatus"
+                  placeholder="璇烽�夋嫨鐘舵��"
+                >
+                  <a-select-option v-for="(item, index) in placestatusData" :key="index" :value="item.code">{{
+                    item.name
+                  }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎵�鍦ㄥ簱鍖�">
+                  <a-select
+                    :allowClear="true"
+                    style="width: 100%"
+                    v-model="queryParam.areaId"
+                    placeholder="璇烽�夋嫨鎵�鍦ㄥ簱鍖�"
+                  >
+                    <a-select-option v-for="(item, index) in areaNameData" :key="index" :value="item.id">{{
+                      item.areaName
+                    }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鏄惁閿佸畾">
+                  <a-select
+                    :allowClear="true"
+                    style="width: 100%"
+                    v-model="queryParam.islock"
+                    placeholder="璇烽�夋嫨鏄惁閿佸畾"
+                  >
+                    <a-select-option v-for="(item, index) in islockData" :key="index" :value="item.code">{{
+                      item.name
+                    }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+            </template>
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => (queryParam = {})">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px">
+                  {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'" />
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :scroll="{ x: 2000 }"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+      >
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsPlace:add')">
+          <a-button
+            type="primary"
+            v-if="hasPerm('WmsPlace:add')"
+            icon="plus"
+            @click="$refs.addForm.add()"
+          >鏂板</a-button
+          >
+          <a-button
+            type="danger"
+            icon="lock"
+            :disabled="selectedCounldLocks.length === 0"
+            @click="onMulLock"
+          >鎵归噺閿佸畾</a-button
+          >
+          <a-button
+            type="danger"
+            icon="unlock"
+            :disabled="selectedCounldUnLocks.length === 0"
+            @click="onMulUnlock"
+          >鎵归噺瑙i攣</a-button
+          >
+        </template>
+        <span slot="placestatusscopedSlots" slot-scope="text">
+          <a-tag :color="text === 1 ? '#87d068' : text === 2 ? '#2db7f5' : text === 3 ? '#D4B60F' : '#108ee9'">{{
+            'place_status' | dictType(text)
+          }}</a-tag>
+        </span>
+        <span slot="islockscopedSlots" slot-scope="text">
+          <a-tag :color="text === 1 ? '#108ee9' : 'gray'">{{ 'yes_or_no' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="emptyContainerSlots" slot-scope="text">
+          <a-tag :color="text === 1 ? '#108ee9' : 'gray'">{{ 'yes_or_no' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="heightlevelscopedSlots" slot-scope="text">
+          {{ 'height_level' | dictType(text) }}
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsContainer:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('WmsContainer:edit') & hasPerm('WmsContainer:delete')" />
+          <a-popconfirm
+            v-if="hasPerm('WmsContainer:delete')"
+            placement="topRight"
+            title="纭鍒犻櫎锛�"
+            @confirm="() => WmsPlaceDelete(record)"
+          >
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsPlacePage, WmsPlaceDelete, WmsPlaceLock, WmsPlaceUnlock } from '@/api/modular/main/WmsPlaceManage'
+import { WmsAreaList } from '@/api/modular/main/WmsAreaManage'
+import addForm from './addForm.vue'
+import editForm from './editForm.vue'
+export default {
+  components: {
+    STable,
+    addForm,
+    editForm
+  },
+  data() {
+    return {
+      advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+      queryParam: {},
+      columns: [
+        {
+          title: '搴撲綅缂栫爜',
+          align: 'center',
+          sorter: true,
+          dataIndex: 'placecode'
+        },
+        {
+          title: '搴撲綅鐘舵��',
+          align: 'center',
+          dataIndex: 'placestatus',
+          scopedSlots: { customRender: 'placestatusscopedSlots' }
+        },
+        {
+          title: '鎵�鍦ㄥ簱鍖�',
+          align: 'center',
+          customRender: (value, record) => record.wmsArea.areaName,
+          dataIndex: 'areaid'
+        },
+        {
+          title: '鎺�',
+          align: 'center',
+          dataIndex: 'rowno'
+        },
+        {
+          title: '鍒�',
+          align: 'center',
+          dataIndex: 'columnno'
+        },
+        {
+          title: '灞�',
+          align: 'center',
+          dataIndex: 'layerno'
+        },
+        {
+          title: '杩涙繁鍙�',
+          align: 'center',
+          dataIndex: 'deepcellno'
+        },
+        {
+          title: '宸烽亾',
+          align: 'center',
+          dataIndex: 'aisle'
+        },
+        {
+          title: '绾垮彿',
+          align: 'center',
+          dataIndex: 'line'
+        },
+        {
+          title: '鏄惁閿佸畾',
+          align: 'center',
+          dataIndex: 'islock',
+          scopedSlots: { customRender: 'islockscopedSlots' }
+        },
+        {
+          title: '鏄惁绌烘墭',
+          align: 'center',
+          dataIndex: 'emptyContainer',
+          scopedSlots: { customRender: 'emptyContainerSlots' }
+        },
+        {
+          title: '搴撲綅闀垮害(m)',
+          align: 'center',
+          dataIndex: 'length'
+        },
+        {
+          title: '搴撲綅瀹藉害(m)',
+          align: 'center',
+          dataIndex: 'width'
+        },
+        {
+          title: '搴撲綅楂樺害(m)',
+          align: 'center',
+          dataIndex: 'height'
+        },
+        {
+          title: '搴撲綅X鍧愭爣',
+          align: 'center',
+          dataIndex: 'xzb'
+        },
+        {
+          title: '搴撲綅Y鍧愭爣',
+          align: 'center',
+          dataIndex: 'yzb'
+        },
+        {
+          title: '搴撲綅Z鍧愭爣',
+          align: 'center',
+          dataIndex: 'zzb'
+        },
+        {
+          title: '鍫嗗灈鏈哄唴閮ㄤ綅缃�',
+          align: 'center',
+          dataIndex: 'positionnoForSrm'
+        },
+        {
+          title: '鏈�澶ф壙閲�',
+          align: 'center',
+          dataIndex: 'maxweight'
+        },
+        {
+          title: '搴撲綅楂樺害绛夌骇',
+          align: 'center',
+          dataIndex: 'heightlevel',
+          scopedSlots: { customRender: 'heightlevelscopedSlots' }
+        },
+        {
+          title: '浼樺厛绾�',
+          align: 'center',
+          dataIndex: 'priority'
+        }
+      ],
+      tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: (parameter) => {
+        return WmsPlacePage(Object.assign(parameter, this.queryParam)).then((res) => {
+          res.data.rows = res.data.rows.map((_obj) => {
+            _obj.placestatus = _obj.placestatus.toString()
+            return _obj
+          })
+          // 鍓嶅彴鑾峰彇鏁版嵁骞剁紪鍐欐垚绉嶅瓙鏁版嵁鐨勬ā鏉�
+          // console.log(res.data.rows[0]);
+          // 	  var ShuChu="";
+          // 	  for(var i=res.data.rows.length-1; i>=0 ; i--){
+          // 		ShuChu+="new 搴撲綅淇℃伅{Id="+res.data.rows[i]['id']+",Aisle="+res.data.rows[i]['aisle']+",Aisleside=\""+res.data.rows[i]['aisleside']+"\",Areaid="+res.data.rows[i]['areaid']+",Columnno="+res.data.rows[i]['columnno']+",Deepcellno="+res.data.rows[i]['deepcellno']+",Hastaskdoing="+res.data.rows[i]['hastaskdoing']+",Height="+res.data.rows[i]['height']+",Heightlevel="+res.data.rows[i]['heightlevel']+",Isfull="+res.data.rows[i]['isfull']+",Islock=\""+res.data.rows[i]['islock']+"\",Layerno="+res.data.rows[i]['layerno']+",Length="+res.data.rows[i]['length']+",Line="+res.data.rows[i]['line']+",Maxweight="+res.data.rows[i]['maxweight']+",Placecode=\""+res.data.rows[i]['placecode']+"\",Placestatus="+res.data.rows[i]['placestatus']+",Priority="+res.data.rows[i]['priority']+",Rowno="+res.data.rows[i]['rowno']+",Width="+res.data.rows[i]['width']+",}"
+          // 		}
+          // 	  console.log(ShuChu)
+          return res.data
+        })
+      },
+      placestatusData: [],
+      islockData: [],
+      hastaskdoingData: [],
+      selectedRowKeys: [],
+      selectedCounldLocks: [],
+      selectedCounldUnLocks: []
+    }
+  },
+  created() {
+    if (this.hasPerm('WmsPlace:edit') || this.hasPerm('WmsPlace:delete')) {
+      this.columns.push({
+        title: '鎿嶄綔',
+        width: '150px',
+        fixed: 'right',
+        align: 'center',
+        dataIndex: 'action',
+        scopedSlots: { customRender: 'action' }
+      })
+    }
+    const placestatusOption = this.$options
+    this.placestatusData = placestatusOption.filters['dictData']('place_status')
+    const islockOption = this.$options
+    this.islockData = islockOption.filters['dictData']('yes_or_no')
+    const hastaskdoingOption = this.$options
+    this.hastaskdoingData = hastaskdoingOption.filters['dictData']('yes_or_no')
+  },
+  mounted() {
+    this.WmsAreaLists()
+  },
+  methods: {
+    WmsAreaLists() {
+      WmsAreaList()
+        .then((d) => {
+          this.areaNameData = d.data || []
+        })
+        .catch(() => {})
+    },
+    /**
+     * 鏌ヨ鍙傛暟缁勮
+     */
+    switchingDate() {
+      const obj = JSON.parse(JSON.stringify(this.queryParam))
+      return obj
+    },
+    WmsPlaceDelete(record) {
+      WmsPlaceDelete(record).then((res) => {
+        if (res.success) {
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.$refs.table.refresh()
+        } else {
+          this.$message.error('鍒犻櫎澶辫触') // + res.message
+        }
+      })
+    },
+    toggleAdvanced() {
+      this.advanced = !this.advanced
+    },
+    handleOk() {
+      this.$refs.table.refresh()
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      const arr1 = []
+      const arr2 = []
+      selectedRows.forEach((item) => {
+        if (item.islock === 1) {
+          arr2.push(item.id)
+        } else {
+          arr1.push(item.id)
+        }
+      })
+      this.selectedCounldLocks = arr1
+      this.selectedCounldUnLocks = arr2
+    },
+    onMulLock() {
+      this.$confirm({
+        title: '纭畾瑕佽繘琛岄攣瀹氭搷浣滃悧锛�',
+        okText: '纭畾',
+        okType: 'danger',
+        cancelText: '鍙栨秷',
+        onOk: () => {
+          this.handleLock((f) => {
+            if (f) {
+              this.$refs.table.refresh()
+            }
+          })
+        }
+      })
+    },
+    onMulUnlock() {
+      this.$confirm({
+        title: '纭畾瑕佽繘琛岃В閿佹搷浣滃悧锛�',
+        okText: '纭畾',
+        okType: 'danger',
+        cancelText: '鍙栨秷',
+        onOk: () => {
+          this.handleUnlock((f) => {
+            if (f) {
+              this.$refs.table.refresh()
+            }
+          })
+        }
+      })
+    },
+    handleLock(callback) {
+      this.$loading.show()
+      WmsPlaceLock(this.selectedCounldLocks)
+        .then(() => {
+          this.$loading.hide()
+          callback(true)
+        })
+        .catch(() => {
+          this.$loading.hide()
+          callback(false)
+        })
+    },
+    handleUnlock(callback) {
+      this.$loading.show()
+      WmsPlaceUnlock(this.selectedCounldUnLocks)
+        .then(() => {
+          this.$loading.hide()
+          callback(true)
+        })
+        .catch(() => {
+          this.$loading.hide()
+          callback(false)
+        })
+    }
+  }
+}
+</script>
+<style lang="less">
+.table-operator {
+  margin-bottom: 18px;
+}
+button {
+  margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/DetailDrawer.vue
new file mode 100644
index 0000000..9d1e4b4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/DetailDrawer.vue
@@ -0,0 +1,284 @@
+<template>
+  <!-- <a-drawer 
+    title="璁㈠崟璇︽儏"
+    wrapClassName="weiben-private-drawer"
+    width="70%"
+    :closable="false"
+    :maskClosable="true"
+    :visible="visible"
+    :after-visible-change="afterVisibleChange"
+    @close="onClose"
+  >
+    <a-spin :spinning="loading">
+  
+    </a-spin>
+  </a-drawer>  -->
+<!-- 鏀惰揣鍗曠鐞� - 璇︽儏 -->
+  <div v-if="visible" style="background-color: white">
+    <div class="">
+      <div class="">
+        <span style="font-weight:bold;cursor:default;">
+          <a style="cursor:default;">{{ row.no }}</a
+          >鍗曟嵁璇︽儏
+        </span>
+        <div style="margin-top: 10px;">
+          <a-table  :columns="columns" :data-source="list" row-key="id" :pagination="ipagination" :bordered="false"
+          :rowKey="(record) => record.id"  :scroll="{x: true}" 
+          :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+          >
+            <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+            <span slot="containerStatusscopedSlots" slot-scope="text">
+              <a-tag
+                :color="text === '1' ? '#daa520' : text === '2' ? '#cd5c5c' : text === '3' ? '#add8e6' : '#696969'"
+                >{{ 'orderdetails_statusenum' | dictType(text) }}</a-tag
+              >
+            </span>
+            <!-- 瀹為檯鏀惰揣鏁伴噺 -->
+            <template slot="qtyscopedSlots" slot-scope="text, record, index">
+              <a-input-number style="width:100%;" v-model="record.receivedQty" :min="0" />
+            </template>
+            <!-- 宸紓鏁� -->
+            <template slot="qtyChaScopedSlots" slot-scope="text, record, index">
+              {{ Number(record.deliveryQty - record.receivedQty).toFixed(2) }}
+            </template>
+
+            
+
+        <span slot="receivingStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text == '2' ? '#daa520' : (text == '1' ? '#cd5c5c' : (text == '3' ? '#add8e6' : '#696969'))">{{ 'ReceivingStatus'
+            | dictType(text) }}</a-tag>
+        </span>
+
+
+        <span slot="inspectionStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text == '2' ? '#daa520' : (text == '1' ? '#cd5c5c' : (text == '3' ? '#add8e6' : '#696969'))">{{ 'InspectionStatus'
+            | dictType(text) }}</a-tag>
+        </span>
+          </a-table>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { WmsOrderLldDetail } from '@/api/modular/main/WmsReceiptOrderManage'
+import { STable } from '@/components'
+
+export default {
+  components: {
+    STable
+  },
+  name: 'WmsReceiptOrderDetailDrawer',
+  emits: ['update:visible','postBjData'],
+  props: {
+    visible: {
+      type: Boolean,
+      default: false
+    },
+    row: {
+      type: Object,
+      default: function() {
+        return {}
+      }
+    }
+  },
+  data() {
+    return {
+      loading: false,
+      containerStatusData: [],
+      list: [],
+      columns: [
+        {
+          dataIndex: 'index',
+          title: '搴忓彿',
+          fixed: 'left',
+          width: '60',
+          scopedSlots: { customRender: 'index' },
+          align: 'center'
+        },
+        {
+          title: '鏀惰揣鐘舵��',
+          align: 'center',
+          dataIndex: 'receivingStatus',
+          scopedSlots: { customRender: 'receivingStatusscopedSlots' },
+          width: "100px"
+        },
+        {
+          title: '鎶ユ鐘舵��',
+          align: 'center',
+          dataIndex: 'inspectionStatus',
+          scopedSlots: { customRender: 'inspectionStatusscopedSlots' },
+          width: "100px"
+        },
+        {
+          dataIndex: 'materialcode',
+          title: '鐗╂枡缂栧彿',
+          align: 'center',
+          width: "100px"
+        },
+        {
+          dataIndex: 'materialname',
+          title: '鐗╂枡鍚嶇О',
+          align: 'center',
+          width: "150px"
+        },
+        {
+          dataIndex:'taCode',
+          title:'TA缂栧彿',
+          align: 'center',
+          width:'120px'
+        },
+        // {
+        //   dataIndex: 'batchno_WMS',
+        //   title: '鎵规',
+        //   align: 'center'
+        // },
+        // {
+        //   dataIndex: 'qty',
+        //   title: '鏁伴噺',
+        //   align: 'center',
+        //   scopedSlots: { customRender: 'qtyscopedSlots' }
+        // },
+        {
+          dataIndex: 'deliveryQty',
+          title: '閫佽揣鏁伴噺',
+          align: 'center',
+          width: "100px"
+        },
+        {
+          dataIndex: 'receivedQty',
+          title: '瀹為檯鏀惰揣鏁伴噺',
+          align: 'center',
+          width:'180px',
+          scopedSlots: { customRender: 'qtyscopedSlots' }
+        },
+        {
+          dataIndex: 'chaQty',
+          title: '宸紓鏁�',
+          align: 'center',
+          scopedSlots: { customRender: 'qtyChaScopedSlots' }
+        },
+        // {
+        //   dataIndex: 'containerCode',
+        //   title: '鎵樼洏缂栫爜',
+        //   align: 'center'
+        // },
+        // {
+        //   title: '鐘舵��',
+        //   align: 'center',
+        //   dataIndex: 'orderStatus',
+        //   scopedSlots: { customRender: 'containerStatusscopedSlots' }
+        // },
+        // {
+        //   dataIndex:'unit',
+        //   title:'鍩烘湰鍗曚綅'
+        // },
+        // {
+        //   dataIndex:'projectCode',
+        //   title:'椤圭洰缂栧彿'
+        // },
+        // {
+        //   dataIndex:'customsUnitName',
+        //   title:'鍗曚綅'
+        // },
+        // {
+        //   dataIndex:'tradeName',
+        //   title:'鍝佸悕'
+        // },
+
+           
+      ],
+      // 鍒嗛〉
+      ipagination: {
+        current: 1,
+        pageSize: 10,
+        pageSizeOptions: ['10','20','30','40'],
+        showTotal: (total, range) => {
+          return range[0] + '-' + range[1] + '鍏�' + total + '鏉�'
+        },
+        showQuickJumper: true,
+        showSizeChanger: true,
+        total: 0,
+        size:'small'
+      },
+      selectedRowKeys: [],
+    }
+  },
+
+  created() {
+    const containerStatusOption = this.$options
+    this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum')
+  },
+  methods: {
+    onClose() {
+      this.close()
+    },
+    close() {
+      this.$emit('update:visible', false)
+    },
+    afterVisibleChange(visible) {
+      if (visible) {
+        this.initShow()
+      } else {
+        this.afterClsoe()
+      }
+    },
+    initShow() {
+      this.loading = true
+      this.getList(() => {
+        this.loading = false
+      })
+    },
+    getList(row) {
+      this.selectedRowKeys = []
+      this.selectedRows = []
+      WmsOrderLldDetail({ id: row.id })
+        .then(d => {
+
+          // 娴嬭瘯鏁版嵁
+          // d.data.rows.forEach(element => {
+          //   element.receivingStatus =1;
+          //   element.inspectionStatus =1;
+          // });
+
+          this.list = d.data.rows || []
+
+          
+          this.$emit('update:visible', true)
+
+          // callback && callback(true)
+        })
+        .catch(() => {
+          this.list = []
+          this.$emit('update:visible', false)
+
+          // callback && callback(false)
+        })
+    },
+    afterClsoe() {
+      this.list = []
+    },
+    onSelectChange (selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+      this.$emit('postBjData', this.selectedRows)
+    },
+    clearAll(){
+      this.selectedRowKeys = []
+      this.selectedRows = []
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-task-management-detail-div {
+  height: 100%;
+  overflow: auto;
+
+  .drawer-content {
+    padding: 16px;
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/addForm.vue
new file mode 100644
index 0000000..9289d41
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/addForm.vue
@@ -0,0 +1,84 @@
+锘�<template>
+  <a-modal
+    title="鏂板鏀惰揣鍗�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsReceiptOrderAdd
+  } from '@/api/modular/main/WmsReceiptOrderManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const tradeModeOption = this.$options
+        this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+        const orderStatusOption = this.$options
+        this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            WmsReceiptOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/editForm.vue
new file mode 100644
index 0000000..64a86f5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/editForm.vue
@@ -0,0 +1,124 @@
+锘�<template>
+
+<a-modal
+    title="鏀惰揣"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form"  layout="inline">
+        <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鏀惰揣浜�">
+                <a-input v-model="shr" allow-clear placeholder="璇疯緭鍏ユ敹璐т汉"/>
+              </a-form-item>
+            </a-col>
+          </a-row>
+        <!-- <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item> -->
+      </a-form>
+    </a-spin>
+  </a-modal>
+
+  <!-- <a-modal
+    title="缂栬緫鏀惰揣鍗�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal> -->
+</template>
+
+<script>
+  import {
+    WmsReceiptOrderEdit
+  } from '@/api/modular/main/WmsReceiptOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        shr:""
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        if(record.orderStatus == 4){
+          this.$message.warning('鐘舵�佸凡瀹屾垚锛屼笉鍙户缁敹璐э紒');
+          return;
+        }
+        this.visible = true;
+		    this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const tradeModeOption = this.$options
+        this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+        const orderStatusOption = this.$options
+        this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            WmsReceiptOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/excelForm.vue
new file mode 100644
index 0000000..3dafb69
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="wmsReceiptOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsReceiptOrderFromExcel, wmsReceiptOrderDownloadExcelTemplate} from '@/api/modular/main/WmsReceiptOrderManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+  components: {
+  },
+  data() {
+    return {
+      visible: false,
+      detailed: false,
+      confirmLoading: false,
+      fileList: [],
+      importExcelTypeData: [],
+      importExcelType: '1',
+      uploadFile: null,
+      columns: [],
+      dataList: [],
+	  demandText:'',
+      columnText: ''
+    }
+  },
+  methods: {
+    index() {
+      this.visible = true;
+      this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+      this.demandText = parseDemandText("wmsReceiptOrderDownloadExcelTemplate")
+      window.downloadFile = this.wmsReceiptOrderDownloadExcelTemplate;
+      this.getTable();
+    },
+    showDemand() {
+      this.detailed = !this.detailed;
+    },
+    customRequest(document) {
+      this.uploadFile = document
+    },
+    getTable() {
+      sysExcelTemplateGetColumnList({className: "WmsReceiptOrder"}).then(res =>
+      {
+        if (res.success) {
+          this.columns =[];
+          this.dataList = [{}];
+          res.data.forEach(x => {
+            this.columns.push({
+              dataIndex: x.columnName,
+              key: x.columnName,
+              title: x.columnComment
+            });
+            this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+          });
+          this.columnText = parseExcelFieldText(res.data);
+        }
+      });
+    },
+    beforeUpload(fileInfo) {
+      let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+      if (!res.success) {
+        this.$message.warning(res.msg)
+        return false
+      }
+      setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+    },
+    handleChange(fileInfo) {
+      if (fileInfo.file.status === 'error') {
+        fileInfo.fileList.splice(0, 1)
+      }
+      if (fileInfo.file.status === 'done') {
+        if (fileInfo.fileList.length > 1) {
+          fileInfo.fileList.splice(0, 1)
+        }
+        this.fileList = fileInfo.file
+      }
+    },
+    handleSubmit() {
+      this.confirmLoading = true
+      const formData = new FormData()
+      formData.append('file', this.uploadFile.file)
+      wmsReceiptOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.confirmLoading = false
+        this.$emit('ok', [])
+        this.handleCancel()
+      }).finally((res)=>{this.confirmLoading = false})
+    },
+    handleCancel() {
+      this.visible = false
+      this.detailed = false
+    },
+    wmsReceiptOrderDownloadExcelTemplate() {
+      wmsReceiptOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+        downloadFile(res);
+      }).catch((err) => {
+        this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/index.vue
new file mode 100644
index 0000000..b271eea
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/index.vue
@@ -0,0 +1,448 @@
+锘�<template>
+  <div>
+    <!-- 鏀惰揣鍗� -->
+    <a-card :bordered="false" :bodyStyle="tstyle">
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsReceiptOrder:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.no" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="閫佽揣閫氱煡鍗曞彿">
+                <a-input v-model="queryParam.sourceBillno" allow-clear placeholder="璇疯緭鍏ラ�佽揣閫氱煡鍗曞彿" />
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="渚涘簲鍟嗙紪鐮�">
+                  <a-input v-model="queryParam.vendorcode" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="渚涘簲鍟嗗悕绉�">
+                  <a-input v-model="queryParam.vendorname" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍏徃鍚嶇О">
+                  <a-input v-model="queryParam.companyname" allow-clear placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠撶鍛�">
+                  <a-input v-model="queryParam.warehouseKeepername" allow-clear placeholder="璇疯緭鍏ヤ粨绠″憳" />
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="璐告槗鏂瑰紡">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.tradeMode" placeholder="璇烽�夋嫨璐告槗鏂瑰紡">
+                    <a-select-option v-for="(item, index) in tradeModeData" :key="index" :value="item.code">{{ item.name
+                    }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠撳偍涓績">
+                  <a-input v-model="queryParam.warehouseCentername" allow-clear placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠撻棿">
+                  <a-input v-model="queryParam.storeRoomname" allow-clear placeholder="璇疯緭鍏ヤ粨闂�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎶ュ叧鍗曞彿">
+                  <a-input v-model="queryParam.declarationCode" allow-clear placeholder="璇疯緭鍏ユ姤鍏冲崟鍙�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="涓撲笟">
+                  <a-input v-model="queryParam.majorname" allow-clear placeholder="璇疯緭鍏ヤ笓涓�" />
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                    <a-select-option v-for="(item, index) in orderStatusData" :key="index" :value="item.code">{{ item.name
+                    }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col> </template>
+
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'" />
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" -->
+      <s-table ref="table" :scroll="{ x: true }" :columns="columns" :data="loadData" :alert="true"
+        :rowKey="(record) => record.id" >
+        <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onOpenInfo(record)">{{ text }}</a>
+        </template>
+
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsReceiptOrder:add')">
+
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('wmsReceiptOrder:exportExcel')" icon="download" @click="wmsReceiptOrderToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('WmsReceiptOrder:add')" icon="plus" @click="$refs.addForm.add()">鏇存柊</a-button>
+        </template>
+        <span slot="tradeModescopedSlots" slot-scope="text">
+          {{ 'trade_mode' | dictType(text) }}
+        </span>
+        <!-- <span slot="orderStatusscopedSlots" slot-scope="text">
+          {{ 'order_statusenum' | dictType(text) }}
+        </span> -->
+        <span slot="action" slot-scope="text, record">
+          <!-- <a v-if="hasPerm('WmsReceiptOrder:edit')" :class="[record.orderStatus == 4 ? 'disabled' : '']" @click="$refs.editForm.edit(record)">鏀惰揣</a> -->
+          <a v-if="hasPerm('WmsReceiptOrder:edit')" :class="[record.orderStatus == 4 ? 'disabled' : '']"
+            @click="onDistribute(record)">鏀惰揣</a>
+
+            &nbsp;&nbsp;&nbsp;
+
+            <a v-if="hasPerm('WmsReceiptOrder:edit')" :class="[record.receivingStatus == 1 ? 'disabled' : '']"
+            @click="onDistributeBj(record)">鎶ユ</a>
+
+          <!-- <a v-if="hasPerm('WmsReceiptOrder:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a> -->
+          <!-- <a-divider type="vertical" v-if="hasPerm('WmsReceiptOrder:edit') & hasPerm('WmsReceiptOrder:delete')"/> -->
+          <!-- <a-popconfirm v-if="hasPerm('WmsReceiptOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsReceiptOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm> -->
+        </span>
+
+        <!-- <span slot="orderStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text == '2' ? '#daa520' : (text == '1' ? '#cd5c5c' : (text == '3' ? '#add8e6' : '#696969'))">{{ 'order_statusenum'
+            | dictType(text) }}</a-tag>
+        </span> -->
+
+
+        <span slot="receivingStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text == '2' ? '#daa520' : (text == '1' ? '#cd5c5c' : (text == '3' ? '#add8e6' : '#696969'))">{{ 'ReceivingStatus'
+            | dictType(text) }}</a-tag>
+        </span>
+
+
+        <span slot="inspectionStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text == '2' ? '#daa520' : (text == '1' ? '#cd5c5c' : (text == '3' ? '#add8e6' : '#696969'))">{{ 'InspectionStatus'
+            | dictType(text) }}</a-tag>
+        </span>
+
+
+
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+      <detail-drawer ref="tableDetailDrawer" :visible.sync="infoVisible" :row="infoRow"  @postBjData="postBjData"/>
+    </a-card>
+  </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsReceiptOrderPage, WmsReceiptOrderDelete ,WmsReceiptOrderSh ,WmsOrderBaojian} from '@/api/modular/main/WmsReceiptOrderManage'
+import addForm from './addForm.vue'
+import editForm from './editForm.vue'
+import DetailDrawer from './DetailDrawer.vue'
+
+export default {
+  components: {
+    STable,
+    addForm,
+    editForm,
+    DetailDrawer
+  },
+  data() {
+    return {
+      advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+      queryParam: {},
+      columns: [
+      {
+          dataIndex: 'index',
+          title: '搴忓彿',
+          fixed: 'left',
+          width: '60',
+          scopedSlots: { customRender: 'index' },
+          align: 'center'
+        },
+        {
+          title: '鍗曟嵁缂栧彿',
+          align: 'center',
+          fixed: 'left',
+          dataIndex: 'no',
+          scopedSlots: { customRender: 'linkSlot' },
+          width: "140px"
+        },
+        // {
+        //   title: '鍗曟嵁鐘舵��',
+        //   align: 'center',
+        //   dataIndex: 'orderStatus',
+        //   scopedSlots: { customRender: 'orderStatusscopedSlots' },
+        //   width: "100px"
+        // },
+
+        {
+          title: '鏀惰揣鐘舵��',
+          align: 'center',
+          dataIndex: 'receivingStatus',
+          scopedSlots: { customRender: 'receivingStatusscopedSlots' },
+          width: "100px"
+        },
+        {
+          title: '鎶ユ鐘舵��',
+          align: 'center',
+          dataIndex: 'inspectionStatus',
+          scopedSlots: { customRender: 'inspectionStatusscopedSlots' },
+          width: "100px"
+        },
+
+        {
+          title: '鍒涘缓鏃ユ湡',
+          align: 'center',
+          dataIndex: 'billdate',
+          width: "160px"
+        },
+        {
+          title: '閫佽揣閫氱煡鍗曞彿',
+          align: 'center',
+          dataIndex: 'sourceBillNo',
+          width: "160px"
+        },
+        {
+          title: '渚涘簲鍟嗙紪鐮�',
+          align: 'center',
+          dataIndex: 'vendorcode',
+          width: "160px"
+        },
+        {
+          title: '渚涘簲鍟嗗悕绉�',
+          align: 'center',
+          dataIndex: 'vendorname',
+          width: "160px"
+        },
+        {
+          title: '鍏徃鍚嶇О',
+          align: 'center',
+          dataIndex: 'companyname',
+          width: "160px"
+        },
+        {
+          title: '浠撶鍛�',
+          align: 'center',
+          dataIndex: 'warehouseKeepername',
+          width: "100px"
+        },
+        {
+          title: '璐告槗鏂瑰紡',
+          align: 'center',
+          dataIndex: 'tradeMode',
+          scopedSlots: { customRender: 'tradeModescopedSlots' },
+          width: "100px"
+        },
+        {
+          title: '浠撳偍涓績',
+          align: 'center',
+          dataIndex: 'warehouseCentername',
+          width: "160px"
+        },
+        {
+          title: '浠撻棿',
+          align: 'center',
+          dataIndex: 'storeRoomname',
+          width: "100px"
+        },
+        {
+          title: '鎶ュ叧鍗曞彿',
+          align: 'center',
+          dataIndex: 'declarationCode',
+          width: "100px"
+        },
+        {
+          title: '涓撲笟',
+          align: 'center',
+          dataIndex: 'majorname',
+          width: "100px"
+        },
+        {
+          title: '澶囨敞',
+          align: 'center',
+          dataIndex: 'remarks',
+          width: "100px"
+        },
+
+      ],
+      tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: parameter => {
+       
+        return WmsReceiptOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+
+          this.$nextTick(()=>{
+            if(res.data.rows && res.data.rows.length>0){
+              this.onOpenInfo(res.data.rows[0]);
+            }
+          })
+// // 娴嬭瘯鏁版嵁
+//           res.data.rows.forEach(element => {
+//             element.receivingStatus =1;
+//             element.inspectionStatus =1;
+//           });
+          return res.data
+        })
+      },
+      tradeModeData: [],
+      orderStatusData: [],
+      selectedRowKeys: [],
+      selectedRows: [],
+      //璇︽儏鍙橀噺
+      infoRow: {},
+      infoVisible: false,
+      postBjDataArr: []
+    }
+  },
+  created() {
+    if (this.hasPerm('WmsReceiptOrder:edit') || this.hasPerm('WmsReceiptOrder:delete')) {
+      this.columns.push({
+        title: '鎿嶄綔',
+        width: '150px',
+        dataIndex: 'action',
+        fixed: 'right',
+        scopedSlots: { customRender: 'action' }
+      })
+    }
+    const tradeModeOption = this.$options
+    this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+    const orderStatusOption = this.$options
+    this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+
+  },
+  methods: {
+    /**
+     * 鏌ヨ鍙傛暟缁勮
+     */
+    switchingDate() {
+      const obj = JSON.parse(JSON.stringify(this.queryParam))
+      return obj
+    },
+    WmsReceiptOrderDelete(record) {
+      WmsReceiptOrderDelete(record).then((res) => {
+        if (res.success) {
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.$refs.table.refresh()
+        } else {
+          this.$message.error('鍒犻櫎澶辫触') // + res.message
+        }
+      })
+    },
+    toggleAdvanced() {
+      this.advanced = !this.advanced
+    },
+    handleOk() {
+      this.$refs.table.refresh()
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    },
+    //璇︽儏
+    onOpenInfo(row) {
+      this.infoVisible = true;
+      this.infoRow = row;
+      if(row){
+       this.$refs.tableDetailDrawer.getList(row);
+      }
+    },
+
+// 鏀惰揣
+    onDistribute(obj) {
+      // if (obj.orderStatus !== 1 && obj.orderStatus !== 4) return false
+      // if (obj.orderStatus == 1) return false
+
+      if(this.postBjDataArr.length<=0 || obj.id != this.postBjDataArr[0].orderId){
+        this.$message.error('璇烽�変腑姝ゅ崟鎹笅鐨勭墿鏂�!')
+        return
+      }
+      this.$confirm({
+        title: '绯荤粺鎻愮ず',
+        content: '鎮ㄥ皢瑕佽繘琛屾敹璐т换鍔$殑鎿嶄綔锛岀‘璁よ缁х画鍢涳紵',
+        okText: '纭',
+        cancelText: '鍙栨秷',
+        onOk: () => {
+          let param = {
+            "no":obj.no,
+            getOrderDetailOutputList: this.postBjDataArr
+          }
+          WmsReceiptOrderSh(param).then(res => {
+            if (res.success) {
+              this.$message.success('鎿嶄綔鎴愬姛')
+              this.$refs.table.refresh()
+              this.$refs.tableDetailDrawer.clearAll()
+            } else {
+              this.$message.error('鎿嶄綔澶辫触')
+            }
+          })
+        }
+      })
+    },
+
+      // 閫変腑鐨勭墿鏂�
+      postBjData(data) {
+      this.postBjDataArr = data
+    },
+// 鎶ユ
+    onDistributeBj(obj) {
+      // if (obj.orderStatus !== 1 && obj.orderStatus !== 4) return false
+      // if (obj.orderStatus == 1) return false
+      if(this.postBjDataArr.length<=0 || obj.id != this.postBjDataArr[0].orderId){
+        this.$message.error('璇烽�変腑姝ゅ崟鎹笅鐨勭墿鏂�!')
+        return
+      }
+      this.$confirm({
+        title: '绯荤粺鎻愮ず',
+        content: '鎮ㄥ皢瑕佽繘琛屾姤妫�浠诲姟鐨勬搷浣滐紝纭瑕佺户缁槢锛�',
+        okText: '纭',
+        cancelText: '鍙栨秷',
+        onOk: () => {
+          let param = {
+            ...obj,
+            dtls: this.postBjDataArr
+          }
+          WmsOrderBaojian(param).then(res => {
+            if (res.success) {
+              this.$message.success('鎿嶄綔鎴愬姛')
+              this.$refs.table.refresh()
+            } else {
+              this.$message.error('鎿嶄綔澶辫触')
+            }
+          })
+        }
+      })
+    },
+
+  }
+}
+</script>
+<style lang="less">
+.table-operator {
+  margin-bottom: 18px;
+}
+
+button {
+  margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/addForm.vue
new file mode 100644
index 0000000..8a5073f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/addForm.vue
@@ -0,0 +1,82 @@
+锘�<template>
+  <a-modal
+    title="鏂板鍒嗘嫞鍗�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsSortOrderAdd
+  } from '@/api/modular/main/WmsSortOrderManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const sortStatusOption = this.$options
+        this.sortStatusData = sortStatusOption.filters['dictData']('SortStatusEnum')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            WmsSortOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/editForm.vue
new file mode 100644
index 0000000..f3f21a4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/editForm.vue
@@ -0,0 +1,95 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫鍒嗘嫞鍗�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsSortOrderEdit
+  } from '@/api/modular/main/WmsSortOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const sortStatusOption = this.$options
+        this.sortStatusData = sortStatusOption.filters['dictData']('SortStatusEnum')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            WmsSortOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/excelForm.vue
new file mode 100644
index 0000000..0aa0085
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="wmsSortOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsSortOrderFromExcel, wmsSortOrderDownloadExcelTemplate} from '@/api/modular/main/WmsSortOrderManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+  components: {
+  },
+  data() {
+    return {
+      visible: false,
+      detailed: false,
+      confirmLoading: false,
+      fileList: [],
+      importExcelTypeData: [],
+      importExcelType: '1',
+      uploadFile: null,
+      columns: [],
+      dataList: [],
+	  demandText:'',
+      columnText: ''
+    }
+  },
+  methods: {
+    index() {
+      this.visible = true;
+      this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+      this.demandText = parseDemandText("wmsSortOrderDownloadExcelTemplate")
+      window.downloadFile = this.wmsSortOrderDownloadExcelTemplate;
+      this.getTable();
+    },
+    showDemand() {
+      this.detailed = !this.detailed;
+    },
+    customRequest(document) {
+      this.uploadFile = document
+    },
+    getTable() {
+      sysExcelTemplateGetColumnList({className: "WmsSortOrder"}).then(res =>
+      {
+        if (res.success) {
+          this.columns =[];
+          this.dataList = [{}];
+          res.data.forEach(x => {
+            this.columns.push({
+              dataIndex: x.columnName,
+              key: x.columnName,
+              title: x.columnComment
+            });
+            this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+          });
+          this.columnText = parseExcelFieldText(res.data);
+        }
+      });
+    },
+    beforeUpload(fileInfo) {
+      let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+      if (!res.success) {
+        this.$message.warning(res.msg)
+        return false
+      }
+      setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+    },
+    handleChange(fileInfo) {
+      if (fileInfo.file.status === 'error') {
+        fileInfo.fileList.splice(0, 1)
+      }
+      if (fileInfo.file.status === 'done') {
+        if (fileInfo.fileList.length > 1) {
+          fileInfo.fileList.splice(0, 1)
+        }
+        this.fileList = fileInfo.file
+      }
+    },
+    handleSubmit() {
+      this.confirmLoading = true
+      const formData = new FormData()
+      formData.append('file', this.uploadFile.file)
+      wmsSortOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.confirmLoading = false
+        this.$emit('ok', [])
+        this.handleCancel()
+      }).finally((res)=>{this.confirmLoading = false})
+    },
+    handleCancel() {
+      this.visible = false
+      this.detailed = false
+    },
+    wmsSortOrderDownloadExcelTemplate() {
+      wmsSortOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+        downloadFile(res);
+      }).catch((err) => {
+        this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/index.vue
new file mode 100644
index 0000000..02309d0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/index.vue
@@ -0,0 +1,224 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsSortOrder:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鏉ユ簮鍗曞彿">
+                <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ユ潵婧愬崟鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="椤圭洰缂栧彿">
+                <a-input v-model="queryParam.projectCode" allow-clear placeholder="璇疯緭鍏ラ」鐩紪鍙�"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="TA鍙�">
+                  <a-input v-model="queryParam.tACode" allow-clear placeholder="璇疯緭鍏A鍙�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍒嗘鍙�">
+                  <a-input v-model="queryParam.partCode" allow-clear placeholder="璇疯緭鍏ュ垎娈靛彿"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="搴撲綅缂栫爜">
+                  <a-input v-model="queryParam.placeCode" allow-clear placeholder="璇疯緭鍏ュ簱浣嶇紪鐮�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="瀹瑰櫒缂栧彿">
+                  <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ュ鍣ㄧ紪鍙�"/>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.sortStatus" placeholder="璇烽�夋嫨鐘舵��">
+                    <a-select-option v-for="(item,index) in sortStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <!--    :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" -->
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+     >
+       <template class="table-operator" slot="operator" v-if="hasPerm('WmsSortOrder:add')" >
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('wmsSortOrder:exportExcel')" icon="download" @click="wmsSortOrderToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('WmsSortOrder:add')" icon="plus" @click="$refs.addForm.add()">鏂板鍒嗘嫞鍗�</a-button>
+        </template>
+        <span slot="sortStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text===2?'#daa520':(text===1?'#cd5c5c':(text===3?'#add8e6':'#696969'))">{{ 'SortStatusEnum' | dictType(text) }}</a-tag>
+
+        </span>
+        <!-- <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsSortOrder:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('WmsSortOrder:edit') & hasPerm('WmsSortOrder:delete')"/>
+          <a-popconfirm v-if="hasPerm('WmsSortOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsSortOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span> -->
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { WmsSortOrderPage, WmsSortOrderDelete } from '@/api/modular/main/WmsSortOrderManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鏉ユ簮鍗曞彿',
+            align: 'center',
+            dataIndex: 'orderNo'
+          },
+          {
+            title: '椤圭洰缂栧彿',
+            align: 'center',
+            dataIndex: 'projectCode'
+          },
+          {
+            title: 'TA鍙�',
+            align: 'center',
+            dataIndex: 'tACode'
+          },
+          {
+            title: '鍒嗘鍙�',
+            align: 'center',
+            dataIndex: 'partCode'
+          },
+          {
+            title: '搴撲綅缂栫爜',
+            align: 'center',
+            dataIndex: 'placeCode'
+          },
+          {
+            title: '瀹瑰櫒缂栧彿',
+            align: 'center',
+            dataIndex: 'containerCode'
+          },
+          {
+            title: '鍒嗘嫞鏁�',
+            align: 'center',
+            dataIndex: 'sortQuantity'
+          },
+          {
+            title: '瀹為檯鍒嗘嫞鏁�',
+            align: 'center',
+            dataIndex: 'actualQuantity'
+          },
+          {
+            title: '澶囨敞',
+            align: 'center',
+            dataIndex: 'remarks'
+          },
+          {
+            title: '鐘舵��',
+            align: 'center',
+            dataIndex: 'sortStatus',
+            scopedSlots: { customRender: 'sortStatusscopedSlots' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return WmsSortOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        sortStatusData: [],
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      if (this.hasPerm('WmsSortOrder:edit') || this.hasPerm('WmsSortOrder:delete')) {
+        // this.columns.push({
+        //   title: '鎿嶄綔',
+        //   width: '150px',
+        //   dataIndex: 'action',
+        //   scopedSlots: { customRender: 'action' }
+        // })
+      }
+      const sortStatusOption = this.$options
+      this.sortStatusData = sortStatusOption.filters['dictData']('SortStatusEnum')
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      WmsSortOrderDelete (record) {
+        WmsSortOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/DetailDrawer.vue
new file mode 100644
index 0000000..dd82b3a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/DetailDrawer.vue
@@ -0,0 +1,239 @@
+<template>
+  <!-- <a-drawer 
+    title="璁㈠崟璇︽儏"
+    wrapClassName="weiben-private-drawer"
+    width="70%"
+    :closable="false"
+    :maskClosable="true"
+    :visible="visible"
+    :after-visible-change="afterVisibleChange"
+    @close="onClose"
+  >
+    <a-spin :spinning="loading">
+  
+    </a-spin>
+  </a-drawer>  -->
+<!-- 閫�搴撳崟 - 璇︽儏 -->
+  <div v-if="visible" style="background-color: white">
+    <div class="">
+      <div class="">
+        <span style="font-weight:bold;cursor:default;">
+          <a style="cursor:default;">{{ row.no }}</a
+          >鍗曟嵁璇︽儏
+        </span>
+        <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" -->
+        <div style="margin-top: 10px;">
+          <a-table  :columns="columns" :data-source="list" row-key="id" :pagination="ipagination" :bordered="false"
+          :rowKey="(record) => record.id"
+      
+          >
+            <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+            <span slot="containerStatusscopedSlots" slot-scope="text">
+              <a-tag
+                :color="text === '1' ? '#daa520' : text === '2' ? '#cd5c5c' : text === '3' ? '#add8e6' : '#696969'"
+                >{{ 'orderdetails_statusenum' | dictType(text) }}</a-tag
+              >
+            </span>
+            <!-- 瀹為檯閫�璐ф暟閲� -->
+            <template slot="qtyscopedSlots" slot-scope="text, record, index">
+              <a-input-number style="width:100%;" v-model="record.qty" :min="0" />
+            </template>
+            <!-- 宸紓鏁� -->
+            <!-- <template slot="qtyChaScopedSlots" slot-scope="text, record, index">
+              {{ Number(record.deliveryQty - record.receivedQty).toFixed(2) }}
+            </template> -->
+
+          </a-table>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { WmsOrderRDetail }  from '@/api/modular/main/WmsStockReturnOrderManage'
+import { STable } from '@/components'
+
+export default {
+  components: {
+    STable
+  },
+  name: 'WmsReceiptOrderDetailDrawer',
+  emits: ['update:visible','postBjData'],
+  props: {
+    visible: {
+      type: Boolean,
+      default: false
+    },
+    row: {
+      type: Object,
+      default: function() {
+        return {}
+      }
+    }
+  },
+  data() {
+    return {
+      loading: false,
+      containerStatusData: [],
+      list: [],
+      columns: [
+        {
+          dataIndex: 'index',
+          title: '搴忓彿',
+          fixed: 'left',
+          width: '60',
+          scopedSlots: { customRender: 'index' },
+          align: 'center'
+        },
+        {
+          dataIndex:'projectCode',
+          title:'椤圭洰缂栧彿'
+        },
+        {
+          dataIndex: 'materialcode',
+          title: '鐗╂枡缂栧彿',
+          align: 'center'
+        },
+        {
+          dataIndex: 'materialname',
+          title: '鐗╂枡鍚嶇О',
+          align: 'center'
+        },
+        
+        // {
+        //   dataIndex: 'batchno_WMS',
+        //   title: '鎵规',
+        //   align: 'center'
+        // },
+        // {
+        //   dataIndex: 'qty',
+        //   title: '鏁伴噺',
+        //   align: 'center',
+        //   scopedSlots: { customRender: 'qtyscopedSlots' }
+        // },
+        // {
+        //   dataIndex: 'deliveryQty',
+        //   title: '閫佽揣鏁伴噺',
+        //   align: 'center'
+        // },
+        {
+          dataIndex: 'qty',
+          title: '閫�搴撴暟閲�',
+          align: 'center',
+          width:'200px',
+          // scopedSlots: { customRender: 'qtyscopedSlots' }
+        },
+        // {
+        //   dataIndex: 'chaQty',
+        //   title: '宸紓鏁�',
+        //   align: 'center',
+        //   scopedSlots: { customRender: 'qtyChaScopedSlots' }
+        // },
+        // {
+        //   dataIndex: 'containerCode',
+        //   title: '鎵樼洏缂栫爜',
+        //   align: 'center'
+        // },
+        // {
+        //   title: '鐘舵��',
+        //   align: 'center',
+        //   dataIndex: 'orderStatus',
+        //   scopedSlots: { customRender: 'containerStatusscopedSlots' }
+        // },
+        // {
+        //   dataIndex:'unit',
+        //   title:'鍩烘湰鍗曚綅'
+        // },
+
+        // {
+        //   dataIndex:'customsUnitName',
+        //   title:'鍗曚綅'
+        // },
+        // {
+        //   dataIndex:'tradeName',
+        //   title:'鍝佸悕'
+        // },
+
+           
+      ],
+      // 鍒嗛〉
+      ipagination: {
+        current: 1,
+        pageSize: 10,
+        pageSizeOptions: ['10','20','30','40'],
+        showTotal: (total, range) => {
+          return range[0] + '-' + range[1] + '鍏�' + total + '鏉�'
+        },
+        showQuickJumper: true,
+        showSizeChanger: true,
+        total: 0,
+        size:'small'
+      },
+      selectedRowKeys: [],
+    }
+  },
+
+  created() {
+    const containerStatusOption = this.$options
+    this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum')
+  },
+  methods: {
+    onClose() {
+      this.close()
+    },
+    close() {
+      this.$emit('update:visible', false)
+    },
+    afterVisibleChange(visible) {
+      if (visible) {
+        this.initShow()
+      } else {
+        this.afterClsoe()
+      }
+    },
+    initShow() {
+      this.loading = true
+      this.getList(() => {
+        this.loading = false
+      })
+    },
+    getList(row) {
+      WmsOrderRDetail({ id: row.id })
+        .then(d => {
+          this.list = d.data.rows || []
+          this.$emit('update:visible', true)
+          // callback && callback(true)
+        })
+        .catch(() => {
+          this.list = []
+          this.$emit('update:visible', false)
+          // callback && callback(false)
+        })
+    },
+    afterClsoe() {
+      this.list = []
+    },
+    onSelectChange (selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+      this.$emit('postBjData', this.selectedRows)
+    },
+    clearAll(){
+      this.selectedRowKeys = []
+      this.selectedRows = []
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-task-management-detail-div {
+  height: 100%;
+  overflow: auto;
+
+  .drawer-content {
+    padding: 16px;
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/addForm.vue
new file mode 100644
index 0000000..30778f5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/addForm.vue
@@ -0,0 +1,120 @@
+锘�<template>
+  <a-modal
+    title="鏂板閫�搴撳崟"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="浜嬪姟绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨浜嬪姟绫诲瀷" v-decorator="['moveType', {rules: [{ required: true, message: '璇烽�夋嫨浜嬪姟绫诲瀷锛�' }]}]">
+            <a-select-option v-for="(item,index) in moveTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['nO']" />
+        </a-form-item>
+        <a-form-item label="棰嗙敤椤圭洰鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ鐢ㄩ」鐩彿" v-decorator="['wBSElementcode']" />
+        </a-form-item>
+        <a-form-item label="棰嗘枡閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ鏂欓儴闂�" v-decorator="['benefitingDepartcode']" />
+        </a-form-item>
+        <a-form-item label="鏀剁泭閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ敹鐩婇儴闂�" v-decorator="['costCenterID']" />
+        </a-form-item>
+        <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['fI_Client_Analysis_H']" />
+        </a-form-item>
+        <a-form-item label="棰嗗彇浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ鍙栦汉" v-decorator="['pickerID']" />
+        </a-form-item>
+        <a-form-item label="鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叕鍙�" v-decorator="['companyname']" />
+        </a-form-item>
+        <a-form-item label="鏂藉伐闃�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ柦宸ラ槦" v-decorator="['constructionTeamID']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatus', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsStockReturnOrderAdd
+  } from '@/api/modular/main/WmsStockReturnOrderManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        moveTypeData: [],
+        orderStatusData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const moveTypeOption = this.$options
+        this.moveTypeData = moveTypeOption.filters['dictData']('MoveType')
+        const orderStatusOption = this.$options
+        this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            WmsStockReturnOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/editForm.vue
new file mode 100644
index 0000000..856925f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/editForm.vue
@@ -0,0 +1,143 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫閫�搴撳崟"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="浜嬪姟绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨浜嬪姟绫诲瀷" v-decorator="['moveType', {rules: [{ required: true, message: '璇烽�夋嫨浜嬪姟绫诲瀷锛�' }]}]">
+            <a-select-option v-for="(item,index) in moveTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['nO']" />
+        </a-form-item>
+        <a-form-item label="棰嗙敤椤圭洰鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ鐢ㄩ」鐩彿" v-decorator="['wBSElementcode']" />
+        </a-form-item>
+        <a-form-item label="棰嗘枡閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ鏂欓儴闂�" v-decorator="['benefitingDepartcode']" />
+        </a-form-item>
+        <a-form-item label="鏀剁泭閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ敹鐩婇儴闂�" v-decorator="['costCenterID']" />
+        </a-form-item>
+        <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['fI_Client_Analysis_H']" />
+        </a-form-item>
+        <a-form-item label="棰嗗彇浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ鍙栦汉" v-decorator="['pickerID']" />
+        </a-form-item>
+        <a-form-item label="鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叕鍙�" v-decorator="['companyname']" />
+        </a-form-item>
+        <a-form-item label="鏂藉伐闃�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ柦宸ラ槦" v-decorator="['constructionTeamID']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatus', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsStockReturnOrderEdit
+  } from '@/api/modular/main/WmsStockReturnOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        moveTypeData: [],
+        orderStatusData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const moveTypeOption = this.$options
+        this.moveTypeData = moveTypeOption.filters['dictData']('MoveType')
+        const orderStatusOption = this.$options
+        this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              moveType: record.moveType,
+              nO: record.nO,
+              wBSElementcode: record.wBSElementcode,
+              benefitingDepartcode: record.benefitingDepartcode,
+              costCenterID: record.costCenterID,
+              fI_Client_Analysis_H: record.fI_Client_Analysis_H,
+              pickerID: record.pickerID,
+              companyname: record.companyname,
+              constructionTeamID: record.constructionTeamID,
+              orderStatus: record.orderStatus
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            WmsStockReturnOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/excelForm.vue
new file mode 100644
index 0000000..9a26227
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="wmsStockReturnOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsStockReturnOrderFromExcel, wmsStockReturnOrderDownloadExcelTemplate} from '@/api/modular/main/WmsStockReturnOrderManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+  components: {
+  },
+  data() {
+    return {
+      visible: false,
+      detailed: false,
+      confirmLoading: false,
+      fileList: [],
+      importExcelTypeData: [],
+      importExcelType: '1',
+      uploadFile: null,
+      columns: [],
+      dataList: [],
+	  demandText:'',
+      columnText: ''
+    }
+  },
+  methods: {
+    index() {
+      this.visible = true;
+      this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+      this.demandText = parseDemandText("wmsStockReturnOrderDownloadExcelTemplate")
+      window.downloadFile = this.wmsStockReturnOrderDownloadExcelTemplate;
+      this.getTable();
+    },
+    showDemand() {
+      this.detailed = !this.detailed;
+    },
+    customRequest(document) {
+      this.uploadFile = document
+    },
+    getTable() {
+      sysExcelTemplateGetColumnList({className: "WmsStockReturnOrder"}).then(res =>
+      {
+        if (res.success) {
+          this.columns =[];
+          this.dataList = [{}];
+          res.data.forEach(x => {
+            this.columns.push({
+              dataIndex: x.columnName,
+              key: x.columnName,
+              title: x.columnComment
+            });
+            this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+          });
+          this.columnText = parseExcelFieldText(res.data);
+        }
+      });
+    },
+    beforeUpload(fileInfo) {
+      let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+      if (!res.success) {
+        this.$message.warning(res.msg)
+        return false
+      }
+      setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+    },
+    handleChange(fileInfo) {
+      if (fileInfo.file.status === 'error') {
+        fileInfo.fileList.splice(0, 1)
+      }
+      if (fileInfo.file.status === 'done') {
+        if (fileInfo.fileList.length > 1) {
+          fileInfo.fileList.splice(0, 1)
+        }
+        this.fileList = fileInfo.file
+      }
+    },
+    handleSubmit() {
+      this.confirmLoading = true
+      const formData = new FormData()
+      formData.append('file', this.uploadFile.file)
+      wmsStockReturnOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.confirmLoading = false
+        this.$emit('ok', [])
+        this.handleCancel()
+      }).finally((res)=>{this.confirmLoading = false})
+    },
+    handleCancel() {
+      this.visible = false
+      this.detailed = false
+    },
+    wmsStockReturnOrderDownloadExcelTemplate() {
+      wmsStockReturnOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+        downloadFile(res);
+      }).catch((err) => {
+        this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/index.vue
new file mode 100644
index 0000000..7340540
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/index.vue
@@ -0,0 +1,293 @@
+锘�<template>
+  <div>
+    <!-- 閫�搴撳崟 -->
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsStockReturnOrder:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48"><a-col :md="8" :sm="24">
+              <a-form-item label="浜嬪姟绫诲瀷">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.moveType" placeholder="璇烽�夋嫨浜嬪姟绫诲瀷">
+                  <a-select-option v-for="(item, index) in moveTypeData" :key="index" :value="item.code">{{ item.name
+                  }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.no" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�" />
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="棰嗙敤椤圭洰鍙�">
+                  <a-input v-model="queryParam.wBSElementcode" allow-clear placeholder="璇疯緭鍏ラ鐢ㄩ」鐩彿" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="棰嗘枡閮ㄩ棬">
+                  <a-input v-model="queryParam.benefitingDepartcode" allow-clear placeholder="璇疯緭鍏ラ鏂欓儴闂�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鏀剁泭閮ㄩ棬">
+                  <a-input v-model="queryParam.costCenterID" allow-clear placeholder="璇疯緭鍏ユ敹鐩婇儴闂�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="瀹㈡埛">
+                  <a-input v-model="queryParam.fI_Client_Analysis_H" allow-clear placeholder="璇疯緭鍏ュ鎴�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="棰嗗彇浜�">
+                  <a-input v-model="queryParam.pickerID" allow-clear placeholder="璇疯緭鍏ラ鍙栦汉" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍏徃">
+                  <a-input v-model="queryParam.companyname" allow-clear placeholder="璇疯緭鍏ュ叕鍙�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鏂藉伐闃�">
+                  <a-input v-model="queryParam.constructionTeamID" allow-clear placeholder="璇疯緭鍏ユ柦宸ラ槦" />
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                    <a-select-option v-for="(item, index) in orderStatusData" :key="index" :value="item.code">{{ item.name
+                    }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col> </template>
+
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'" />
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" -->
+      <s-table ref="table" :columns="columns" :data="loadData" :alert="true" :rowKey="(record) => record.id"
+        >
+
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsStockReturnOrder:add')">
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload"
+            @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('wmsStockReturnOrder:exportExcel')" icon="download"
+            @click="wmsStockReturnOrderToExcel()">
+            瀵煎嚭
+          </a-button>
+
+
+          <a-button type="primary" v-if="hasPerm('WmsStockReturnOrder:add')" icon="plus"
+            @click="$refs.addForm.add()">鏂板閫�搴撳崟</a-button>
+        </template>
+
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onOpenInfo(record)">{{ text }}</a>
+        </template>
+
+        <span slot="moveTypescopedSlots" slot-scope="text">
+          {{ 'MoveType' | dictType(text) }}
+        </span>
+        <span slot="orderStatusscopedSlots" slot-scope="text">
+          {{ 'order_statusenum' | dictType(text) }}
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsStockReturnOrder:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('WmsStockReturnOrder:edit') & hasPerm('WmsStockReturnOrder:delete')" />
+          <a-popconfirm v-if="hasPerm('WmsStockReturnOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�"
+            @confirm="() => WmsStockReturnOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+
+      <detail-drawer ref="tableDetailDrawer" :visible.sync="infoVisible" :row="infoRow" @postBjData="postBjData" />
+
+    </a-card>
+
+
+  </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsStockReturnOrderPage, WmsStockReturnOrderDelete } from '@/api/modular/main/WmsStockReturnOrderManage'
+import addForm from './addForm.vue'
+import editForm from './editForm.vue'
+import DetailDrawer from './DetailDrawer.vue'
+
+export default {
+  components: {
+    STable,
+    addForm,
+    editForm,
+    DetailDrawer
+  },
+  data() {
+    return {
+      advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+      queryParam: {},
+      columns: [
+        {
+          title: '浜嬪姟绫诲瀷',
+          align: 'center',
+          dataIndex: 'moveType',
+          scopedSlots: { customRender: 'moveTypescopedSlots' }
+        },
+        {
+          title: '鍗曟嵁缂栧彿',
+          align: 'center',
+          dataIndex: 'no',
+          scopedSlots: { customRender: 'linkSlot' },
+          minWidth: "100px"
+        },
+        {
+          title: '閫�鏂欑敵璇锋棩鏈�',
+          align: 'center',
+          dataIndex: 'billdate'
+        },
+        {
+          title: '棰嗙敤椤圭洰鍙�',
+          align: 'center',
+          dataIndex: 'wBSElementcode'
+        },
+        {
+          title: '棰嗘枡閮ㄩ棬',
+          align: 'center',
+          dataIndex: 'benefitingDepartcode'
+        },
+        {
+          title: '鏀剁泭閮ㄩ棬',
+          align: 'center',
+          dataIndex: 'costCenterID'
+        },
+        {
+          title: '瀹㈡埛',
+          align: 'center',
+          dataIndex: 'fI_Client_Analysis_H'
+        },
+        {
+          title: '棰嗗彇浜�',
+          align: 'center',
+          dataIndex: 'pickerID'
+        },
+        {
+          title: '鍏徃',
+          align: 'center',
+          dataIndex: 'companyname'
+        },
+        {
+          title: '鏂藉伐闃�',
+          align: 'center',
+          dataIndex: 'constructionTeamID'
+        },
+        {
+          title: '鍗曟嵁鐘舵��',
+          align: 'center',
+          dataIndex: 'orderStatus',
+          scopedSlots: { customRender: 'orderStatusscopedSlots' }
+        }
+      ],
+      tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: parameter => {
+        return WmsStockReturnOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+          this.$nextTick(() => {
+            if (res.data.rows && res.data.rows.length > 0) {
+              this.onOpenInfo(res.data.rows[0]);
+            }
+          })
+          return res.data
+        })
+      },
+      moveTypeData: [],
+      orderStatusData: [],
+      selectedRowKeys: [],
+      selectedRows: [],
+      //璇︽儏鍙橀噺
+      infoRow: {},
+      infoVisible: false,
+      postBjDataArr: []
+    }
+  },
+  created() {
+    if (this.hasPerm('WmsStockReturnOrder:edit') || this.hasPerm('WmsStockReturnOrder:delete')) {
+      this.columns.push({
+        title: '鎿嶄綔',
+        width: '150px',
+        dataIndex: 'action',
+        scopedSlots: { customRender: 'action' }
+      })
+    }
+    const moveTypeOption = this.$options
+    this.moveTypeData = moveTypeOption.filters['dictData']('MoveType')
+    const orderStatusOption = this.$options
+    this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+  },
+  methods: {
+    /**
+     * 鏌ヨ鍙傛暟缁勮
+     */
+    switchingDate() {
+      const obj = JSON.parse(JSON.stringify(this.queryParam))
+      return obj
+    },
+    WmsStockReturnOrderDelete(record) {
+      WmsStockReturnOrderDelete(record).then((res) => {
+        if (res.success) {
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.$refs.table.refresh()
+        } else {
+          this.$message.error('鍒犻櫎澶辫触') // + res.message
+        }
+      })
+    },
+    toggleAdvanced() {
+      this.advanced = !this.advanced
+    },
+    handleOk() {
+      this.$refs.table.refresh()
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    },
+    //璇︽儏
+    onOpenInfo(row) {
+      this.infoVisible = true;
+      this.infoRow = row;
+      if (row) {
+        this.$refs.tableDetailDrawer.getList(row);
+      }
+    },
+    // 閫変腑鐨勭墿鏂�
+    postBjData(data) {
+      this.postBjDataArr = data
+    },
+  }
+}
+</script>
+<style lang="less">
+.table-operator {
+  margin-bottom: 18px;
+}
+
+button {
+  margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/addForm.vue
new file mode 100644
index 0000000..a6b838a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/addForm.vue
@@ -0,0 +1,92 @@
+锘�<template>
+  <a-modal
+    title="鏂板渚涘簲鍟�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['supplierName', {rules: [{required: true, message: '璇疯緭鍏ュ悕绉帮紒'}]}]" />
+        </a-form-item>
+        <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ紪鐮�" v-decorator="['supplierCode', {rules: [{required: true, message: '璇疯緭鍏ョ紪鐮侊紒'}]}]" />
+        </a-form-item>
+        <a-form-item label="鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ湴鍧�" v-decorator="['address']" />
+        </a-form-item>
+        <a-form-item label="鑱旂郴鐢佃瘽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ仈绯荤數璇�" v-decorator="['iphone']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsSupplierAdd
+  } from '@/api/modular/main/WmsSupplierManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            WmsSupplierAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/editForm.vue
new file mode 100644
index 0000000..85a7c20
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/editForm.vue
@@ -0,0 +1,109 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫渚涘簲鍟�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['supplierName', {rules: [{required: true, message: '璇疯緭鍏ュ悕绉帮紒'}]}]" />
+        </a-form-item>
+        <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ紪鐮�" v-decorator="['supplierCode', {rules: [{required: true, message: '璇疯緭鍏ョ紪鐮侊紒'}]}]" />
+        </a-form-item>
+        <a-form-item label="鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ湴鍧�" v-decorator="['address']" />
+        </a-form-item>
+        <a-form-item label="鑱旂郴鐢佃瘽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ仈绯荤數璇�" v-decorator="['iphone']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsSupplierEdit
+  } from '@/api/modular/main/WmsSupplierManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              supplierName: record.supplierName,
+              supplierCode: record.supplierCode,
+              address: record.address,
+              iphone: record.iphone
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            WmsSupplierEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/index.vue
new file mode 100644
index 0000000..4385733
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/index.vue
@@ -0,0 +1,162 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsSupplier:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍚嶇О">
+                <a-input v-model="queryParam.supplierName" allow-clear placeholder="璇疯緭鍏ュ悕绉�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="缂栫爜">
+                <a-input v-model="queryParam.supplierCode" allow-clear placeholder="璇疯緭鍏ョ紪鐮�"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鑱旂郴鐢佃瘽">
+                  <a-input v-model="queryParam.iphone" allow-clear placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/>
+                </a-form-item>
+              </a-col>            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsSupplier:add')" >
+          <a-button type="primary" v-if="hasPerm('WmsSupplier:add')" icon="plus" @click="$refs.addForm.add()">鏂板渚涘簲鍟�</a-button>
+        </template>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsSupplier:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('WmsSupplier:edit') & hasPerm('WmsSupplier:delete')"/>
+          <a-popconfirm v-if="hasPerm('WmsSupplier:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsSupplierDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { WmsSupplierPage, WmsSupplierDelete } from '@/api/modular/main/WmsSupplierManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鍚嶇О',
+            align: 'center',
+sorter: true,
+            dataIndex: 'supplierName'
+          },
+          {
+            title: '缂栫爜',
+            align: 'center',
+sorter: true,
+            dataIndex: 'supplierCode'
+          },
+          {
+            title: '鍦板潃',
+            align: 'center',
+sorter: true,
+            dataIndex: 'address'
+          },
+          {
+            title: '鑱旂郴鐢佃瘽',
+            align: 'center',
+sorter: true,
+            dataIndex: 'iphone'
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return WmsSupplierPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      if (this.hasPerm('WmsSupplier:edit') || this.hasPerm('WmsSupplier:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      WmsSupplierDelete (record) {
+        WmsSupplierDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/DetailDrawer.vue
new file mode 100644
index 0000000..f5c06b6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/DetailDrawer.vue
@@ -0,0 +1,205 @@
+<template>
+  <!-- <a-drawer 
+    title="璁㈠崟璇︽儏"
+    wrapClassName="weiben-private-drawer"
+    width="70%"
+    :closable="false"
+    :maskClosable="true"
+    :visible="visible"
+    :after-visible-change="afterVisibleChange"
+    @close="onClose"
+  >
+    <a-spin :spinning="loading">
+  
+    </a-spin>
+  </a-drawer>  -->
+
+  <div v-if="visible" style="background-color: white">
+    <div class="">
+      <div class="">
+        <span style="font-weight:bold;cursor:default;">
+          <a style="cursor:default;">{{ row.no }}</a
+          >鍗曟嵁璇︽儏
+        </span>
+        <div style="margin-top: 10px;">
+          <a-table  :scroll="{x: true}" :columns="columns" :data-source="list" row-key="id" :pagination="ipagination" :bordered="false">
+            <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+            <span slot="containerStatusscopedSlots" slot-scope="text">
+              <a-tag
+                :color="text === '1' ? '#daa520' : text === '2' ? '#cd5c5c' : text === '3' ? '#add8e6' : '#696969'"
+                >{{ 'orderdetails_statusenum' | dictType(text) }}</a-tag
+              >
+            </span>
+          </a-table>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { WmsOrderLldDetail } from '@/api/modular/main/WmsTakeMaterialOrderManage'
+import { STable } from '@/components'
+
+export default {
+  components: {
+    STable
+  },
+  name: 'wmsOrderLldManagementDetailDrawer',
+  emits: ['update:visible'],
+  props: {
+    visible: {
+      type: Boolean,
+      default: false
+    },
+    row: {
+      type: Object,
+      default: function() {
+        return {}
+      }
+    }
+  },
+  data() {
+    return {
+      loading: false,
+      containerStatusData: [],
+      list: [],
+      columns: [
+        {
+          dataIndex: 'index',
+          title: '搴忓彿',
+          fixed: 'left',
+          width: '60',
+          scopedSlots: { customRender: 'index' },
+          align: 'center'
+        },
+        {
+          dataIndex: 'materialcode',
+          title: '鐗╂枡缂栧彿',
+          align: 'center',
+          width:'120px'
+        },
+        {
+          dataIndex: 'materialname',
+          title: '鐗╂枡鍚嶇О',
+          align: 'center'
+        },
+        {
+          dataIndex:'taCode',
+          title:'TA缂栧彿',
+          align: 'center',
+          width:'120px'
+        },
+        // {
+        //   dataIndex: 'batchno_WMS',
+        //   title: '鎵规',
+        //   align: 'center'
+        // },
+        {
+          dataIndex: 'qty',
+          title: '鏁伴噺',
+          align: 'center',
+          width:'120px'
+        },
+        // {
+        //   dataIndex: 'containerCode',
+        //   title: '鎵樼洏缂栫爜',
+        //   align: 'center'
+        // },
+        {
+          title: '鐘舵��',
+          align: 'center',
+          dataIndex: 'orderStatus',
+          scopedSlots: { customRender: 'containerStatusscopedSlots' }
+        },
+        // {
+        //   dataIndex:'unit',
+        //   title:'鍩烘湰鍗曚綅'
+        // },
+        // {
+        //   dataIndex:'projectCode',
+        //   title:'椤圭洰缂栧彿'
+        // },
+        // {
+        //   dataIndex:'customsUnitName',
+        //   title:'鍗曚綅'
+        // },
+        // {
+        //   dataIndex:'tradeName',
+        //   title:'鍝佸悕'
+        // },
+
+           
+      ],
+      // 鍒嗛〉
+      ipagination: {
+        current: 1,
+        pageSize: 10,
+        pageSizeOptions: ['10','20','30','40'],
+        showTotal: (total, range) => {
+          return range[0] + '-' + range[1] + '鍏�' + total + '鏉�'
+        },
+        showQuickJumper: true,
+        showSizeChanger: true,
+        total: 0,
+        size:'small'
+      },
+    }
+  },
+
+  created() {
+    const containerStatusOption = this.$options
+    this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum')
+  },
+  methods: {
+    onClose() {
+      this.close()
+    },
+    close() {
+      this.$emit('update:visible', false)
+    },
+    afterVisibleChange(visible) {
+      if (visible) {
+        this.initShow()
+      } else {
+        this.afterClsoe()
+      }
+    },
+    initShow() {
+      this.loading = true
+      this.getList(() => {
+        this.loading = false
+      })
+    },
+    getList(row) {
+      WmsOrderLldDetail({ id: row.id })
+        .then(d => {
+          this.list = d.data.rows || []
+          this.$emit('update:visible', true)
+
+          // callback && callback(true)
+        })
+        .catch(() => {
+          this.list = []
+          this.$emit('update:visible', false)
+
+          // callback && callback(false)
+        })
+    },
+    afterClsoe() {
+      this.list = []
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-task-management-detail-div {
+  height: 100%;
+  overflow: auto;
+
+  .drawer-content {
+    padding: 16px;
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/addForm.vue
new file mode 100644
index 0000000..ccbd6df
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/addForm.vue
@@ -0,0 +1,126 @@
+锘�<template>
+  <a-modal
+    title="鏂板棰嗘枡鍗�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="浜嬪姟绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ簨鍔$被鍨�" v-decorator="['moveType']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['no']" />
+        </a-form-item>
+        <a-form-item label="棰嗙敤椤圭洰鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ鐢ㄩ」鐩彿" v-decorator="['wBSElementcode']" />
+        </a-form-item>
+        <a-form-item label="棰嗘枡閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ鏂欓儴闂�" v-decorator="['benefitingDepartcode']" />
+        </a-form-item>
+        <a-form-item label="鍙楃泭閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彈鐩婇儴闂�" v-decorator="['costCenterID']" />
+        </a-form-item>
+        <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['fI_Client_Analysis_H']" />
+        </a-form-item>
+        <a-form-item label="鏄惁鍏徃闂翠氦鏄�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['isInnerCompany', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item label="棰嗘枡浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ鏂欎汉" v-decorator="['pickerID']" />
+        </a-form-item>
+        <a-form-item label="浠撳偍涓績" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" v-decorator="['warehouseCentername']" />
+        </a-form-item>
+        <a-form-item label="鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叕鍙�" v-decorator="['companyname']" />
+        </a-form-item>
+        <a-form-item label="鏂藉伐闃�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ柦宸ラ槦" v-decorator="['constructionTeamID']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatus', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsTakeMaterialOrderAdd
+  } from '@/api/modular/main/WmsTakeMaterialOrderManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        orderStatusData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const orderStatusOption = this.$options
+        this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            if(values.isInnerCompany){
+              values.isInnerCompany = 1
+            }else{
+              values.isInnerCompany = 2
+            }
+            WmsTakeMaterialOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/editForm.vue
new file mode 100644
index 0000000..63d336b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/editForm.vue
@@ -0,0 +1,146 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫棰嗘枡鍗�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="浜嬪姟绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ簨鍔$被鍨�" v-decorator="['moveType']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['no']" />
+        </a-form-item>
+        <a-form-item label="棰嗙敤椤圭洰鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ鐢ㄩ」鐩彿" v-decorator="['wbsElementcode']" />
+        </a-form-item>
+        <a-form-item label="棰嗘枡閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ鏂欓儴闂�" v-decorator="['benefitingDepartcode']" />
+        </a-form-item>
+        <a-form-item label="鍙楃泭閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ彈鐩婇儴闂�" v-decorator="['costCenterID']" />
+        </a-form-item>
+        <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['fI_Client_Analysis_H']" />
+        </a-form-item>
+        <a-form-item label="鏄惁鍏徃闂翠氦鏄�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['isInnerCompany', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item label="棰嗘枡浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ鏂欎汉" v-decorator="['pickerID']" />
+        </a-form-item>
+        <a-form-item label="浠撳偍涓績" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" v-decorator="['warehouseCentername']" />
+        </a-form-item>
+        <a-form-item label="鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ叕鍙�" v-decorator="['companyname']" />
+        </a-form-item>
+        <a-form-item label="鏂藉伐闃�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ柦宸ラ槦" v-decorator="['constructionTeamID']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatus', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+            <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsTakeMaterialOrderEdit
+  } from '@/api/modular/main/WmsTakeMaterialOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        orderStatusData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		    this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const orderStatusOption = this.$options
+        this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              moveType: record.moveType,
+              no: record.no,
+              wbsElementcode: record.wbsElementcode,
+              benefitingDepartcode: record.benefitingDepartcode,
+              costCenterID: record.costCenterID,
+              fI_Client_Analysis_H: record.fI_Client_Analysis_H,
+              isInnerCompany: record.isInnerCompany,
+              pickerID: record.pickerID,
+              warehouseCentername: record.warehouseCentername,
+              companyname: record.companyname,
+              constructionTeamID: record.constructionTeamID,
+              orderStatus: record.orderStatus
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            WmsTakeMaterialOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/excelForm.vue
new file mode 100644
index 0000000..9ee7fd4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="wmsTakeMaterialOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsTakeMaterialOrderFromExcel, wmsTakeMaterialOrderDownloadExcelTemplate} from '@/api/modular/main/WmsTakeMaterialOrderManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+  components: {
+  },
+  data() {
+    return {
+      visible: false,
+      detailed: false,
+      confirmLoading: false,
+      fileList: [],
+      importExcelTypeData: [],
+      importExcelType: '1',
+      uploadFile: null,
+      columns: [],
+      dataList: [],
+	  demandText:'',
+      columnText: ''
+    }
+  },
+  methods: {
+    index() {
+      this.visible = true;
+      this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+      this.demandText = parseDemandText("wmsTakeMaterialOrderDownloadExcelTemplate")
+      window.downloadFile = this.wmsTakeMaterialOrderDownloadExcelTemplate;
+      this.getTable();
+    },
+    showDemand() {
+      this.detailed = !this.detailed;
+    },
+    customRequest(document) {
+      this.uploadFile = document
+    },
+    getTable() {
+      sysExcelTemplateGetColumnList({className: "WmsTakeMaterialOrder"}).then(res =>
+      {
+        if (res.success) {
+          this.columns =[];
+          this.dataList = [{}];
+          res.data.forEach(x => {
+            this.columns.push({
+              dataIndex: x.columnName,
+              key: x.columnName,
+              title: x.columnComment
+            });
+            this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+          });
+          this.columnText = parseExcelFieldText(res.data);
+        }
+      });
+    },
+    beforeUpload(fileInfo) {
+      let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+      if (!res.success) {
+        this.$message.warning(res.msg)
+        return false
+      }
+      setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+    },
+    handleChange(fileInfo) {
+      if (fileInfo.file.status === 'error') {
+        fileInfo.fileList.splice(0, 1)
+      }
+      if (fileInfo.file.status === 'done') {
+        if (fileInfo.fileList.length > 1) {
+          fileInfo.fileList.splice(0, 1)
+        }
+        this.fileList = fileInfo.file
+      }
+    },
+    handleSubmit() {
+      this.confirmLoading = true
+      const formData = new FormData()
+      formData.append('file', this.uploadFile.file)
+      wmsTakeMaterialOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.confirmLoading = false
+        this.$emit('ok', [])
+        this.handleCancel()
+      }).finally((res)=>{this.confirmLoading = false})
+    },
+    handleCancel() {
+      this.visible = false
+      this.detailed = false
+    },
+    wmsTakeMaterialOrderDownloadExcelTemplate() {
+      wmsTakeMaterialOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+        downloadFile(res);
+      }).catch((err) => {
+        this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/index.vue
new file mode 100644
index 0000000..340ba87
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/index.vue
@@ -0,0 +1,339 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsTakeMaterialOrder:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="浜嬪姟绫诲瀷">
+                <a-input v-model="queryParam.moveType" allow-clear placeholder="璇疯緭鍏ヤ簨鍔$被鍨�" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.no" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�" />
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="棰嗙敤椤圭洰鍙�">
+                  <a-input v-model="queryParam.wbsElementcode" allow-clear placeholder="璇疯緭鍏ラ鐢ㄩ」鐩彿" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="棰嗘枡閮ㄩ棬">
+                  <a-input v-model="queryParam.benefitingDepartcode" allow-clear placeholder="璇疯緭鍏ラ鏂欓儴闂�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍙楃泭閮ㄩ棬">
+                  <a-input v-model="queryParam.costCenterID" allow-clear placeholder="璇疯緭鍏ュ彈鐩婇儴闂�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="瀹㈡埛">
+                  <a-input v-model="queryParam.fI_Client_Analysis_H" allow-clear placeholder="璇疯緭鍏ュ鎴�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="棰嗘枡浜�">
+                  <a-input v-model="queryParam.pickerID" allow-clear placeholder="璇疯緭鍏ラ鏂欎汉" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="浠撳偍涓績">
+                  <a-input v-model="queryParam.warehouseCentername" allow-clear placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍏徃">
+                  <a-input v-model="queryParam.companyname" allow-clear placeholder="璇疯緭鍏ュ叕鍙�" />
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                    <a-select-option v-for="(item, index) in orderStatusData" :key="index" :value="item.code">{{ item.name
+                    }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col> </template>
+
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'" />
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table ref="table"  :scroll="{x: true}" :columns="columns" :data="loadData" :alert="true" :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onOpenInfo(record)">{{ text }}</a>
+        </template>
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsTakeMaterialOrder:add')">
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload"
+            @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('wmsTakeMaterialOrder:exportExcel')" icon="download"
+            @click="wmsTakeMaterialOrderToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('WmsTakeMaterialOrder:add')" icon="plus"
+            @click="$refs.addForm.add()">鏂板棰嗘枡鍗�</a-button>
+        </template>
+        <!-- <span slot="orderStatusscopedSlots" slot-scope="text">
+          {{ 'order_statusenum' | dictType(text) }}
+        </span> -->
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsTakeMaterialOrder:edit')"  :class="[record.orderStatus === 1 || record.orderStatus === 4 ? '' : 'disabled']" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical"
+            v-if="hasPerm('WmsTakeMaterialOrder:edit') & hasPerm('WmsTakeMaterialOrder:delete')" />
+
+
+          <a-dropdown>
+            <a class="ant-dropdown-link" @click="e => e.preventDefault()">鏇村...</a>
+            <a-menu slot="overlay">
+              <a-menu-item><a :class="[record.orderStatus === 1 || record.orderStatus === 4 ? '' : 'disabled']"
+                  style="margin-right:10px;" @click="onDistribute(record)">涓嬪彂</a></a-menu-item>
+              <a-menu-item><a :class="[record.orderStatus === 1 || record.orderStatus === 4 ? '' : 'disabled']"
+                  @click="WmsTakeMaterialOrderDelete(record)">鍒犻櫎</a></a-menu-item>
+            </a-menu>
+          </a-dropdown>
+
+
+          <!-- <a-popconfirm v-if="hasPerm('WmsTakeMaterialOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsTakeMaterialOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm> -->
+        </span>
+
+        <span slot="orderStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text=='2'?'#daa520':(text=='1'?'#cd5c5c':(text=='3'?'#add8e6':'#696969'))">{{ 'order_statusenum' | dictType(text) }}</a-tag>
+        </span>
+
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+
+      <detail-drawer ref="tableDetailDrawer" :visible.sync="infoVisible" :row="infoRow" />
+    </a-card>
+   
+  </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsTakeMaterialOrderPage, WmsTakeMaterialOrderDelete ,Distribute} from '@/api/modular/main/WmsTakeMaterialOrderManage'
+import addForm from './addForm.vue'
+import editForm from './editForm.vue'
+import DetailDrawer from './DetailDrawer.vue'
+
+export default {
+  components: {
+    STable,
+    addForm,
+    editForm,
+    DetailDrawer
+  },
+  data() {
+    return {
+      advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+      queryParam: {},
+      columns: [
+      {
+          title: '鍗曟嵁缂栧彿',
+          align: 'center',
+          dataIndex: 'no',
+          width:"100px",
+          scopedSlots: { customRender: 'linkSlot' }
+        },
+        {
+          title: '浜嬪姟绫诲瀷',
+          align: 'center',
+          dataIndex: 'moveType',
+          width:"100px"
+        },
+
+        {
+          title: '棰嗘枡鍗曠敵璇锋棩鏈�',
+          align: 'center',
+          dataIndex: 'billdate',
+            width:"160px"
+        },
+        {
+          title: '棰嗙敤椤圭洰鍙�',
+          align: 'center',
+          dataIndex: 'wbsElementcode',
+            width:"100px"
+        },
+        {
+          title: '棰嗘枡閮ㄩ棬',
+          align: 'center',
+          dataIndex: 'benefitingDepartcode',
+            width:"100px"
+        },
+        {
+          title: '鍙楃泭閮ㄩ棬',
+          align: 'center',
+          dataIndex: 'costCenterID',
+            width:"100px"
+        },
+        {
+          title: '瀹㈡埛',
+          align: 'center',
+          dataIndex: 'fI_Client_Analysis_H',
+            width:"100px"
+        },
+        {
+          title: '鏄惁鍏徃闂翠氦鏄�',
+          align: 'center',
+          customRender: (value) => (value ? <a-tag color="green">鏄�</a-tag> : <a-tag color="volcano">鍚�</a-tag>),
+          dataIndex: 'isInnerCompany',
+            width:"140px"
+        },
+        {
+          title: '棰嗘枡浜�',
+          align: 'center',
+          dataIndex: 'pickerID',
+            width:"100px"
+        },
+        {
+          title: '浠撳偍涓績',
+          align: 'center',
+          dataIndex: 'warehouseCentername',
+            width:"100px"
+        },
+        {
+          title: '鍏徃',
+          align: 'center',
+          dataIndex: 'companyname',
+            width:"100px"
+        },
+        {
+          title: '鏂藉伐闃�',
+          align: 'center',
+          dataIndex: 'constructionTeamID',
+            width:"100px"
+        },
+        {
+          title: '鐘舵��',
+          align: 'center',
+          dataIndex: 'orderStatus',
+          scopedSlots: { customRender: 'orderStatusscopedSlots' }
+        }
+      ],
+      tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: parameter => {
+        return WmsTakeMaterialOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+          this.$nextTick(()=>{
+            if(res.data.rows && res.data.rows.length>0){
+              this.onOpenInfo(res.data.rows[0]);
+            }
+          })
+          return res.data
+        })
+      },
+      orderStatusData: [],
+      selectedRowKeys: [],
+      selectedRows: [],
+      //璇︽儏鍙橀噺
+      infoRow: {},
+      infoVisible: false,
+      containerStatusData: []
+    }
+  },
+  created() {
+    if (this.hasPerm('WmsTakeMaterialOrder:edit') || this.hasPerm('WmsTakeMaterialOrder:delete')) {
+      this.columns.push({
+        title: '鎿嶄綔',
+        width: '150px',
+        dataIndex: 'action',
+        fixed: 'right',
+        scopedSlots: { customRender: 'action' }
+      })
+    }
+    const orderStatusOption = this.$options
+    this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+  },
+  methods: {
+    /**
+     * 鏌ヨ鍙傛暟缁勮
+     */
+    switchingDate() {
+      const obj = JSON.parse(JSON.stringify(this.queryParam))
+      return obj
+    },
+    WmsTakeMaterialOrderDelete(record) {
+      WmsTakeMaterialOrderDelete(record).then((res) => {
+        if (res.success) {
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.$refs.table.refresh()
+        } else {
+          this.$message.error('鍒犻櫎澶辫触') // + res.message
+        }
+      })
+    },
+    toggleAdvanced() {
+      this.advanced = !this.advanced
+    },
+    handleOk() {
+      this.$refs.table.refresh()
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    },
+    //璇︽儏
+    onOpenInfo(row) {
+      this.infoVisible = true;
+      this.infoRow = row;
+      this.$refs.tableDetailDrawer.getList(row);
+    },
+    onDistribute(obj){
+        if (obj.orderStatus!==1&&obj.orderStatus!==4) return false
+        this.$confirm({
+          title: '绯荤粺鎻愮ず',
+          content: '鎮ㄥ皢瑕佽繘琛屼笅鍙戜换鍔$殑鎿嶄綔锛岀‘璁よ缁х画鍢涳紵',
+          okText:'纭',
+          cancelText:'鍙栨秷',
+          onOk:()=>{
+            // [obj.id]
+            this.dealDistribute(obj.id,(f)=>{
+              if (f) {
+                this.$message.success('鎿嶄綔鎴愬姛')
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      dealDistribute(ids,callback){
+        this.$loading.show()
+        Distribute(ids).then(()=>{
+          this.$loading.hide()
+          this.$refs.table.refresh()
+          callback && callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback && callback(false)
+        })
+      }
+  }
+}
+</script>
+<style lang="less">
+.table-operator {
+  margin-bottom: 18px;
+}
+
+button {
+  margin-right: 8px;
+}</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/DetailDrawer.vue
new file mode 100644
index 0000000..96ccdcf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/DetailDrawer.vue
@@ -0,0 +1,120 @@
+<template>
+  <a-drawer 
+    title="浠诲姟璇︽儏"
+    wrapClassName="weiben-private-drawer"
+    width="70%"
+    :closable="false"
+    :maskClosable="true"
+    :visible="visible"
+    :after-visible-change="afterVisibleChange"
+    @close="onClose"
+  >
+    <a-spin :spinning="loading">
+      <div class="wms-task-management-detail-div">
+        <div class="drawer-content">
+          <a-table :columns="columns" :data-source="list" row-key="id" :pagination="false">
+            <template slot="index" slot-scope="text, record, index">{{index+1}}</template>
+          </a-table>
+        </div>
+      </div>
+    </a-spin>
+  </a-drawer>
+</template>
+
+<script>
+import { WmsTaskDetail } from '@/api/modular/main/WmsTaskManage'
+export default {
+  name:'wmsTaskManagementDetailDrawer',
+  emits:['update:visible'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    },
+    row:{
+      type:Object,
+      default:function(){
+        return {}
+      }
+    }
+  },
+  data(){
+    return {
+      loading:false,
+      list:[],
+      columns:[
+        {
+          dataIndex:'index',
+          title:'搴忓彿',
+          fixed:'left',
+          width:'60',
+          scopedSlots: { customRender: 'index' }
+        },
+        {
+          dataIndex:'materialNo',
+          title:'鐗╂枡缂栧彿'
+        },
+        {
+          dataIndex:'materialName',
+          title:'鐗╂枡鍚嶇О'
+        },
+        {
+          dataIndex:'materialSpec',
+          title:'灏哄'
+        },
+        {
+          dataIndex:'shipNo',
+          title:'鑸瑰彿'
+        },
+        {
+          dataIndex:'drawingNo',
+          title:'鍥惧彿'
+        }
+      ]
+    }
+  },
+  methods:{
+    onClose(){
+      this.close()
+    },
+    close(){
+      this.$emit('update:visible',false)
+    },
+    afterVisibleChange(visible){
+      if (visible) {
+        this.initShow()
+      } else {
+        this.afterClsoe()
+      }
+    },
+    initShow(){
+      this.loading = true;
+      this.getList(()=>{
+        this.loading = false;
+      })
+    },
+    getList(callback){
+      let params = {OrderNo:this.row.orderNo}
+      WmsTaskDetail(params).then(d=>{
+        this.list = d.data || []
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    afterClsoe(){
+      this.list = []
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-task-management-detail-div{
+  height:100%;
+  overflow: auto;
+  .drawer-content{
+    padding: 16px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/PriorityModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/PriorityModal.vue
new file mode 100644
index 0000000..f0b4ba4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/PriorityModal.vue
@@ -0,0 +1,108 @@
+<template>
+  <a-modal title="浠诲姟浼樺厛绾ц皟鏁�" v-model="innerVisible" @ok="onConfirm" :afterClose="afterClose">
+    <a-form :form="form" :label-col="{ span: 4 }" :wrapper-col="{ span: 20 }">
+      <a-form-item label="浼樺厛绾�">
+        <a-select v-decorator="rule" placeholder="璇烽�夋嫨..." >
+          <a-select-option :key="1" :value="1">1绾�</a-select-option>
+          <a-select-option :key="2" :value="2">2绾�</a-select-option>
+          <a-select-option :key="3" :value="3">3绾�</a-select-option>
+          <a-select-option :key="4" :value="4">4绾�</a-select-option>
+          <a-select-option :key="5" :value="5">5绾�</a-select-option>
+          <a-select-option :key="6" :value="6">6绾�</a-select-option>
+          <a-select-option :key="7" :value="7">7绾�</a-select-option>
+          <a-select-option :key="8" :value="8">8绾�</a-select-option>
+          <a-select-option :key="9" :value="9">9绾�</a-select-option>
+          <a-select-option :key="10" :value="10">10绾�</a-select-option>
+        </a-select>
+      </a-form-item>
+    </a-form>
+  </a-modal>
+</template>
+
+<script>
+import { WmsTaskUpdateLevel } from '@/api/modular/main/WmsTaskManage'
+export default {
+  name:'wmsTaskPriorityModal',
+  emits:['update:visible','confirm'],
+  props:{
+    row:{
+      type:Object,
+      default:function(){
+        return {}
+      }
+    },
+    visible:{
+      type:Boolean,
+      default:false
+    }
+  },
+  data(){
+    return {
+      title:'',
+      labelText:'',
+      innerVisible:false,
+      form: this.$form.createForm(this, { name: 'choose-site-form' }),
+      sites:[],
+      rule:['Tasklevel',{rules:[
+        { required: true, message: '璇风‘璁や紭鍏堢骇' }
+      ]}]
+    }
+  },
+  watch:{
+    visible(newVal,oldVal){
+      this.changeInnerVisible()
+    },
+    innerVisible(newVal,oldVal){
+      this.changeVisible()
+    }
+  },
+  methods:{
+    changeInnerVisible(){
+      if (this.visible!==this.innerVisible){
+        this.innerVisible = this.visible
+        if (this.innerVisible) {
+          this.$nextTick(()=>{
+            this.opened()
+          })
+        }
+      }
+    },
+    changeVisible(){
+      if (this.innerVisible!==this.visible){
+        this.$emit('update:visible',this.innerVisible)
+      }
+    },
+    opened(){
+      //this.getSites()
+    },
+    onConfirm(){
+      this.form.validateFields((err, values) => {
+        if (!err) {
+          let params = {...values}
+          params.Id = this.row.id;
+          WmsTaskUpdateLevel(params).then(()=>{
+            this.innerVisible = false;
+            this.$message.success('鎿嶄綔鎴愬姛')
+            this.$emit('confirm')
+          }).catch(()=>[
+            
+          ])
+        } 
+      });
+    },
+    afterClose(){
+      try{
+        this.form.resetFields()
+      }catch(e){
+        
+      }
+    }
+  },
+  created(){
+    this.changeInnerVisible()
+  }
+}
+</script>
+
+<style>
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/index.vue
new file mode 100644
index 0000000..62f2957
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/index.vue
@@ -0,0 +1,316 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsTask:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="浠诲姟鍙�">
+                <a-input v-model="queryParam.taskno" allow-clear placeholder="璇疯緭鍏ヤ换鍔″彿" />
+              </a-form-item>
+            </a-col><a-col :md="8" :sm="24">
+              <a-form-item label="浠诲姟鏂瑰紡">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskmodel" placeholder="璇烽�夋嫨浠诲姟鏂瑰紡">
+                  <a-select-option v-for="(item, index) in taskmodelData" :key="index" :value="item.code">{{ item.name
+                  }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col><template v-if="advanced"><a-col :md="8" :sm="24">
+                <a-form-item label="浠诲姟绫诲瀷">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.tasktype" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
+                    <a-select-option v-for="(item, index) in tasktypeData" :key="index" :value="item.code">{{ item.name
+                    }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="浠诲姟鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskstatus" placeholder="璇烽�夋嫨浠诲姟鐘舵��">
+                    <a-select-option v-for="(item, index) in taskstatusData" :key="index" :value="item.code">{{ item.name
+                    }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎵樼洏缂栧彿">
+                  <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樼紪鍙�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="璧峰搴撲綅">
+                  <a-input v-model="queryParam.sourceplace" allow-clear placeholder="璇疯緭鍏ヨ捣濮嬪簱浣�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩爣搴撲綅">
+                  <a-input v-model="queryParam.toplace" allow-clear placeholder="璇疯緭鍏ョ洰鏍囧簱浣�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="搴撳尯鍚嶇О">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.areaName" placeholder="璇烽�夋嫨搴撳尯鍚嶇О">
+                    <a-select-option v-for="(item, index) in areaNameData" :key="index" :value="item.areaName">{{
+                      item.areaName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col> 
+            </template>
+
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'" />
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table ref="table" :columns="columns" :data="loadData" :alert="true" :rowKey="(record) => record.id">
+        <span slot="taskmodelscopedSlots" slot-scope="text">
+          <a-tag :color="text === 1 ? '#2db7f5' : '#87d068'">{{ 'task_model' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="tasktypescopedSlots" slot-scope="text">
+          <a-tag :color="text === 1 ? '#2db7f5' : '#87d068'">{{ 'task_type' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="taskstatusscopedSlots" slot-scope="text">
+          <a-tag :color="text === 1 ? '#2db7f5' : (text === 2 ? '#108ee9' : '#87d068')">{{ 'task_status' | dictType(text) }}</a-tag>
+        </span>
+        <template slot="aisledSlots" slot-scope="text,record">
+          {{ record.aisle | enumsName(aisleList,'code','name') }}
+        </template>
+        <span slot="eqpScopedSlots" slot-scope="text">
+          <a-tag :color="text === 2 ? '#0000FF' : (
+            text === 3 ? '#00FFFF' : (
+              text === 5 ? '#FFD700' : (
+                text === 6 ? '#87d068' : '#808080'
+              )
+            )
+          )">
+            {{ 'zz_task_dodevice_status' | dictType(text) }}
+          </a-tag>
+        </span>
+        <span slot="taskdodevice_status" slot-scope="text">
+          {{ 'taskdodevice_statusenum' | dictType(text) }}
+        </span>
+        <template slot="agvStatusSlots" slot-scope="text,record">
+          {{ record.agvTaskDodeviceStatusEnum | enumsName(agvStatusEnums,'code','name') }}
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onOpenInfo(record)">{{ text }}</a>
+        </template>
+        <div slot="action" slot-scope="text, record">
+          <a @click="onFinish(record)">瀹屾垚</a>
+          <!-- <a-divider type="vertical" />
+          <a @click="onOpenPriorityModal(record)">浼樺厛绾�</a> -->
+          <a-divider type="vertical" />
+          <a @click="onCancel(record)">鍙栨秷</a>
+        </div>
+      </s-table>
+    </a-card>
+
+    <detail-drawer :visible.sync="infoVisible" :row="infoRow" />
+    <priority-modal :visible.sync="priorityVisible" :row="priorityRow" @confirm="onCallbackPriority" />
+  </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsTaskPage, WmsTaskCancel, WmsTaskFinish } from '@/api/modular/main/WmsTaskManage'
+import { GetZuzhuangAreas } from '@/api/modular/main/WmsAreaManage'
+import DetailDrawer from './DetailDrawer.vue'
+import PriorityModal from './PriorityModal.vue'
+export default {
+  components: {
+    STable,
+    DetailDrawer,
+    PriorityModal
+  },
+  data() {
+    return {
+      advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+      queryParam: {},
+      aisleList: [],
+      agvStatusEnums: [],
+      columns: [
+        {
+          title: '浠诲姟鍙�',
+          align: 'center',
+          sorter: true,
+          dataIndex: 'taskNo',
+          scopedSlots: { customRender: 'linkSlot' }
+        },
+        {
+          title: '浠诲姟鏂瑰紡',
+          align: 'center',
+          dataIndex: 'taskModel',
+          scopedSlots: { customRender: 'taskmodelscopedSlots' }
+        },
+        {
+          title: '浠诲姟绫诲瀷',
+          align: 'center',
+          dataIndex: 'taskType',
+          scopedSlots: { customRender: 'tasktypescopedSlots' }
+        },
+        {
+          title: '浠诲姟鐘舵��',
+          align: 'center',
+          dataIndex: 'taskStatus',
+          scopedSlots: { customRender: 'taskstatusscopedSlots' }
+        },
+        {
+          title: '鎵樼洏缂栧彿',
+          align: 'center',
+          dataIndex: 'containerCode'
+        },
+        {
+          title: '璧峰搴撲綅',
+          align: 'center',
+          dataIndex: 'sourcePlace'
+        },
+        {
+          title: '鐩爣搴撲綅',
+          align: 'center',
+          dataIndex: 'toPlace'
+        },
+        {
+          title: '搴撳尯鍚嶇О',
+          align: 'center',
+          dataIndex: 'areaName'
+        },
+        {
+          title: '鍏ュ簱鏉ユ簮',
+          align: 'center',
+          dataIndex: 'description'
+        },
+        {
+          title: '璁惧鐘舵��',
+          align: 'center',
+          dataIndex: 'taskDodeviceStatus',
+          scopedSlots: { customRender: 'taskdodevice_status' }
+        },
+        {
+          title: '鍒涘缓鏃堕棿',
+          align: 'center',
+          dataIndex: 'createdTime',
+          width: 170
+        },
+        {
+          title: '鏇存柊鏃堕棿',
+          align: 'center',
+          dataIndex: 'updatedTime',
+          width: 170
+        }
+      ],
+      tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: parameter => {
+        return WmsTaskPage(Object.assign(parameter, this.queryParam)).then((res) => {
+          return res.data
+        })
+      },
+      taskmodelData: [],
+      tasktypeData: [],
+      taskstatusData: [],
+      areaNameData: [],
+      selectedRowKeys: [],
+      selectedRows: [],
+      infoVisible: false,
+      infoRow: {},
+      priorityVisible: false,
+      priorityRow: {}
+    }
+  },
+  created() {
+    if (this.hasPerm('WmsTask:edit') || this.hasPerm('WmsTask:delete')) {
+      this.columns.push({
+        title: '鎿嶄綔',
+        width: '120px',
+        dataIndex: 'action',
+        scopedSlots: { customRender: 'action' }
+      })
+    }
+    const taskmodelOption = this.$options
+    this.taskmodelData = taskmodelOption.filters['dictData']('task_model')
+    const tasktypeOption = this.$options
+    this.tasktypeData = tasktypeOption.filters['dictData']('task_type')
+    const taskstatusOption = this.$options
+    this.taskstatusData = taskstatusOption.filters['dictData']('task_status')
+    this.aisleList = this.$options.filters['dictData']('les_aisle')
+    this.agvStatusEnums = this.$options.filters['dictData']('agv_task_dodevice_status')
+  },
+  mounted() {
+    this.getAreas()
+  },
+  methods: {
+    getAreas() {
+      GetZuzhuangAreas().then((d) => {
+        this.areaNameData = d.data || []
+      }).catch(() => {
+
+      })
+    },
+    toggleAdvanced() {
+      this.advanced = !this.advanced
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    },
+    onOpenInfo(row) {
+      this.infoRow = row;
+      this.infoVisible = true
+    },
+    onOpenPriorityModal(row) {
+      this.priorityRow = row;
+      this.priorityVisible = true
+    },
+    onCallbackPriority() {
+      this.$refs.table.refresh()
+    },
+    onFinish(row) {
+      this.$confirm({
+        title: '鎿嶄綔纭',
+        content: '纭畾瑕佽繘琛屽己鍒跺畬鎴愭搷浣滃悧锛�',
+        onOk: () => {
+          this.dealFinish(row.id)
+        }
+      });
+    },
+    dealFinish(id) {
+      WmsTaskFinish(id).then(() => {
+        this.$message.success('鎿嶄綔鎴愬姛');
+        this.$refs.table.refresh()
+      }).catch(() => { })
+    },
+    onCancel(row) {
+      this.$confirm({
+        title: '鎿嶄綔纭',
+        content: '纭畾瑕佽繘琛屽彇娑堟搷浣滃悧锛�',
+        onOk: () => {
+          this.dealCalcel(row.id)
+        }
+      });
+    },
+    dealCalcel(id) {
+      WmsTaskCancel(id).then(() => {
+        this.$message.success('鎿嶄綔鎴愬姛');
+        this.$refs.table.refresh()
+      }).catch(() => { })
+    }
+  }
+}
+</script>
+<style lang="less">
+.table-operator {
+  margin-bottom: 18px;
+}
+
+button {
+  margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/addForm.vue
new file mode 100644
index 0000000..e938d01
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/addForm.vue
@@ -0,0 +1,104 @@
+锘�<template>
+  <a-modal
+    title="鏂板搴撳彛琛�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ紪鐮�" v-decorator="['code']" />
+        </a-form-item>
+        <a-form-item label="绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ被鍨�-1.鍏ュ簱鍙2.鍑哄簱鍙�" v-decorator="['type']" />
+        </a-form-item>
+        <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ墍灞炶溅闂�" v-decorator="['lesWorkShopType']" />
+        </a-form-item>
+        <a-form-item label="鎵�灞炲贩閬�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ユ墍灞炲贩閬�" style="width: 100%" v-decorator="['affiliatedRoadway']" />
+        </a-form-item>
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']" />
+        </a-form-item>
+        <a-form-item label="鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ姸鎬�" v-decorator="['status']" />
+        </a-form-item>
+        <a-form-item label="绛炬牳鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ鏍哥姸鎬�" v-decorator="['issueState']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsWarehouseEntranceAdd
+  } from '@/api/modular/main/WmsWarehouseEntranceManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            WmsWarehouseEntranceAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/editForm.vue
new file mode 100644
index 0000000..ae4ab82
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/editForm.vue
@@ -0,0 +1,125 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫搴撳彛琛�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ紪鐮�" v-decorator="['code']" />
+        </a-form-item>
+        <a-form-item label="绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ被鍨�-1.鍏ュ簱鍙2.鍑哄簱鍙�" v-decorator="['type']" />
+        </a-form-item>
+        <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ墍灞炶溅闂�" v-decorator="['lesWorkShopType']" />
+        </a-form-item>
+        <a-form-item label="鎵�灞炲贩閬�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ユ墍灞炲贩閬�" style="width: 100%" v-decorator="['affiliatedRoadway']" />
+        </a-form-item>
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']" />
+        </a-form-item>
+        <a-form-item label="鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ姸鎬�" v-decorator="['status']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+        <a-form-item label="绛炬牳鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ鏍哥姸鎬�" v-decorator="['issueState']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    WmsWarehouseEntranceEdit
+  } from '@/api/modular/main/WmsWarehouseEntranceManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              name: record.name,
+              code: record.code,
+              type: record.type,
+              lesWorkShopType: record.lesWorkShopType,
+              affiliatedRoadway: record.affiliatedRoadway,
+              remark: record.remark,
+              status: record.status,
+              issueState: record.issueState
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            WmsWarehouseEntranceEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/excelForm.vue
new file mode 100644
index 0000000..dde3faf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="wmsWarehouseEntranceDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsWarehouseEntranceFromExcel, wmsWarehouseEntranceDownloadExcelTemplate} from '@/api/modular/main/WmsWarehouseEntranceManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+  components: {
+  },
+  data() {
+    return {
+      visible: false,
+      detailed: false,
+      confirmLoading: false,
+      fileList: [],
+      importExcelTypeData: [],
+      importExcelType: '1',
+      uploadFile: null,
+      columns: [],
+      dataList: [],
+	  demandText:'',
+      columnText: ''
+    }
+  },
+  methods: {
+    index() {
+      this.visible = true;
+      this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+      this.demandText = parseDemandText("wmsWarehouseEntranceDownloadExcelTemplate")
+      window.downloadFile = this.wmsWarehouseEntranceDownloadExcelTemplate;
+      this.getTable();
+    },
+    showDemand() {
+      this.detailed = !this.detailed;
+    },
+    customRequest(document) {
+      this.uploadFile = document
+    },
+    getTable() {
+      sysExcelTemplateGetColumnList({className: "WmsWarehouseEntrance"}).then(res =>
+      {
+        if (res.success) {
+          this.columns =[];
+          this.dataList = [{}];
+          res.data.forEach(x => {
+            this.columns.push({
+              dataIndex: x.columnName,
+              key: x.columnName,
+              title: x.columnComment
+            });
+            this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+          });
+          this.columnText = parseExcelFieldText(res.data);
+        }
+      });
+    },
+    beforeUpload(fileInfo) {
+      let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+      if (!res.success) {
+        this.$message.warning(res.msg)
+        return false
+      }
+      setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+    },
+    handleChange(fileInfo) {
+      if (fileInfo.file.status === 'error') {
+        fileInfo.fileList.splice(0, 1)
+      }
+      if (fileInfo.file.status === 'done') {
+        if (fileInfo.fileList.length > 1) {
+          fileInfo.fileList.splice(0, 1)
+        }
+        this.fileList = fileInfo.file
+      }
+    },
+    handleSubmit() {
+      this.confirmLoading = true
+      const formData = new FormData()
+      formData.append('file', this.uploadFile.file)
+      wmsWarehouseEntranceFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.confirmLoading = false
+        this.$emit('ok', [])
+        this.handleCancel()
+      }).finally((res)=>{this.confirmLoading = false})
+    },
+    handleCancel() {
+      this.visible = false
+      this.detailed = false
+    },
+    wmsWarehouseEntranceDownloadExcelTemplate() {
+      wmsWarehouseEntranceDownloadExcelTemplate({version: "v2"}).then((res) => {
+        downloadFile(res);
+      }).catch((err) => {
+        this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/index.vue
new file mode 100644
index 0000000..252085c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/index.vue
@@ -0,0 +1,223 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsWarehouseEntrance:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍚嶇О">
+                <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ悕绉�" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="缂栫爜">
+                <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ョ紪鐮�" />
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�">
+                  <a-input v-model="queryParam.type" allow-clear placeholder="璇疯緭鍏ョ被鍨�-1.鍏ュ簱鍙2.鍑哄簱鍙�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎵�灞炶溅闂�">
+                  <a-input v-model="queryParam.lesWorkShopType" allow-clear placeholder="璇疯緭鍏ユ墍灞炶溅闂�" />
+                </a-form-item>
+              </a-col><a-col :md="8" :sm="24">
+                <a-form-item label="鎵�灞炲贩閬�">
+                  <a-input-number v-model="queryParam.affiliatedRoadway" style="width: 100%" allow-clear
+                    placeholder="璇疯緭鍏ユ墍灞炲贩閬�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="澶囨敞">
+                  <a-input v-model="queryParam.remark" allow-clear placeholder="璇疯緭鍏ュ娉�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐘舵��">
+                  <a-input v-model="queryParam.status" allow-clear placeholder="璇疯緭鍏ョ姸鎬�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="绛炬牳鐘舵��">
+                  <a-input v-model="queryParam.issueState" allow-clear placeholder="璇疯緭鍏ョ鏍哥姸鎬�" />
+                </a-form-item>
+              </a-col> </template>
+
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'" />
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table ref="table" :columns="columns" :data="loadData" :alert="true" :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('WmsWarehouseEntrance:add')">
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload"
+            @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('wmsWarehouseEntrance:exportExcel')" icon="download"
+            @click="wmsWarehouseEntranceToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('WmsWarehouseEntrance:add')" icon="plus"
+            @click="$refs.addForm.add()">鏂板搴撳彛琛�</a-button>
+        </template>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('WmsWarehouseEntrance:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical"
+            v-if="hasPerm('WmsWarehouseEntrance:edit') & hasPerm('WmsWarehouseEntrance:delete')" />
+          <a-popconfirm v-if="hasPerm('WmsWarehouseEntrance:delete')" placement="topRight" title="纭鍒犻櫎锛�"
+            @confirm="() => WmsWarehouseEntranceDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsWarehouseEntrancePage, WmsWarehouseEntranceDelete } from '@/api/modular/main/WmsWarehouseEntranceManage'
+import addForm from './addForm.vue'
+import editForm from './editForm.vue'
+export default {
+  components: {
+    STable,
+    addForm,
+    editForm
+  },
+  data() {
+    return {
+      advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+      queryParam: {},
+      columns: [
+        {
+          title: '鍚嶇О',
+          align: 'center',
+          sorter: true,
+          dataIndex: 'name'
+        },
+        {
+          title: '缂栫爜',
+          align: 'center',
+          sorter: true,
+          dataIndex: 'code'
+        },
+        {
+          title: '绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�',
+          align: 'center',
+          sorter: true,
+          dataIndex: 'type'
+        },
+        {
+          title: '鎵�灞炶溅闂�',
+          align: 'center',
+          sorter: true,
+          dataIndex: 'lesWorkShopType'
+        },
+        {
+          title: '鎵�灞炲贩閬�',
+          align: 'center',
+          sorter: true,
+          dataIndex: 'affiliatedRoadway'
+        },
+        {
+          title: '澶囨敞',
+          align: 'center',
+          sorter: true,
+          dataIndex: 'remark'
+        },
+        {
+          title: '鐘舵��',
+          align: 'center',
+          sorter: true,
+          dataIndex: 'status'
+        },
+        {
+          title: '绛炬牳鐘舵��',
+          align: 'center',
+          sorter: true,
+          dataIndex: 'issueState'
+        }
+      ],
+      tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: parameter => {
+        return WmsWarehouseEntrancePage(Object.assign(parameter, this.queryParam)).then((res) => {
+          return res.data
+        })
+      },
+      selectedRowKeys: [],
+      selectedRows: []
+    }
+  },
+  created() {
+    if (this.hasPerm('WmsWarehouseEntrance:edit') || this.hasPerm('WmsWarehouseEntrance:delete')) {
+      this.columns.push({
+        title: '鎿嶄綔',
+        width: '150px',
+        dataIndex: 'action',
+        scopedSlots: { customRender: 'action' }
+      })
+    }
+    const path = this.$route.path
+    const columnStr = window.localStorage.getItem(path)
+    if (columnStr) {
+      this.columns = JSON.parse(columnStr)
+    }
+  },
+  methods: {
+    /**
+     * 鏌ヨ鍙傛暟缁勮
+     */
+    switchingDate() {
+      const obj = JSON.parse(JSON.stringify(this.queryParam))
+      return obj
+    },
+    WmsWarehouseEntranceDelete(record) {
+      WmsWarehouseEntranceDelete(record).then((res) => {
+        if (res.success) {
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.$refs.table.refresh()
+        } else {
+          this.$message.error('鍒犻櫎澶辫触') // + res.message
+        }
+      })
+    },
+    toggleAdvanced() {
+      this.advanced = !this.advanced
+    },
+    handleOk() {
+      this.$refs.table.refresh()
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    }
+  }
+}
+</script>
+<style lang="less">
+.table-operator {
+  margin-bottom: 18px;
+}
+
+button {
+  margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/addForm.vue
new file mode 100644
index 0000000..a49f667
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/addForm.vue
@@ -0,0 +1,111 @@
+锘�<template>
+  <a-modal
+    title="鏂板缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鐗╂枡绉嶇被" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ墿鏂欑绫�" v-decorator="['materialType']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴撳悕绉�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="璧峰浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ捣濮嬩綅缃�" v-decorator="['startingPosition']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦綅缃�" v-decorator="['targetPosition']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    ZZProductFinishedOrderAdd
+  } from '@/api/modular/main/ZZProductFinishedOrderManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        orderLargeCategoryData: [],
+        orderSubclassData: [],
+        orderStatusEnumData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            ZZProductFinishedOrderAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/editForm.vue
new file mode 100644
index 0000000..6124e02
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/editForm.vue
@@ -0,0 +1,132 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+            <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鐗╂枡绉嶇被" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ墿鏂欑绫�" v-decorator="['materialType']" />
+        </a-form-item>
+        <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴撳悕绉�" v-decorator="['areaName']" />
+        </a-form-item>
+        <a-form-item label="璧峰浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ捣濮嬩綅缃�" v-decorator="['startingPosition']" />
+        </a-form-item>
+        <a-form-item label="鐩爣浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ョ洰鏍囦綅缃�" v-decorator="['targetPosition']" />
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    ZZProductFinishedOrderEdit
+  } from '@/api/modular/main/ZZProductFinishedOrderManage'
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+        orderLargeCategoryData: [],
+        orderSubclassData: [],
+        orderStatusEnumData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              orderNo: record.orderNo,
+              orderLargeCategory: record.orderLargeCategory,
+              orderSubclass: record.orderSubclass,
+              materialType: record.materialType,
+              orderQuantity: record.orderQuantity,
+              areaName: record.areaName,
+              startingPosition: record.startingPosition,
+              targetPosition: record.targetPosition
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            ZZProductFinishedOrderEdit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/index.vue
new file mode 100644
index 0000000..7af3b8f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/index.vue
@@ -0,0 +1,271 @@
+锘�<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁缂栧彿">
+                <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+                  <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <!-- <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁澶х被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderLargeCategory" placeholder="璇烽�夋嫨..." @change="onLargeCategorySelect">
+                    <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁灏忕被">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderSubclass" placeholder="璇烽�夋嫨...">
+                    <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col> -->
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐩爣浠撳簱">
+                  <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ョ洰鏍囦粨搴�"/>
+                </a-form-item>
+              </a-col>            
+            </template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+      >
+        <template class="table-operator" slot="operator" >
+          <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板缁勮鍏ュ簱</a-button>
+        </template>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+          <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" />
+          <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => ZZProductFinishedOrderDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { 
+    ZZProductFinishedOrderPage, 
+    ZZProductFinishedOrderDelete,
+    ZZProductFinishedOrderLargeCategories,
+    ZZProductFinishedOrderSubclass
+  } from '@/api/modular/main/ZZProductFinishedOrderManage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      editForm,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        selectOptions:{
+          largeCategories:[],
+          subclasses:[]
+        },
+        columns: [
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          // {
+          //   title: '鍗曟嵁澶х被',
+          //   align: 'center',
+          //   dataIndex: 'orderLargeCategory',
+          //   //scopedSlots: { customRender: 'orderLargeCategoryscopedSlots' }
+          // },
+          // {
+          //   title: '鍗曟嵁灏忕被',
+          //   align: 'center',
+          //   dataIndex: 'orderSubclass',
+          //   //scopedSlots: { customRender: 'orderSubclassscopedSlots' }
+          // },
+          {
+            title: '鐗╂枡绉嶇被',
+            align: 'center',
+            dataIndex: 'materialType'
+          },
+          {
+            title: '鍗曟嵁鏁伴噺',
+            align: 'center',
+            dataIndex: 'orderQuantity'
+          },
+          {
+            title: '鐩爣浠撳簱',
+            align: 'center',
+            dataIndex: 'areaName'
+          },
+          {
+            title: '璧峰浣嶇疆',
+            align: 'center',
+            dataIndex: 'startingPosition'
+          },
+          {
+            title: '鐩爣浣嶇疆',
+            align: 'center',
+            dataIndex: 'targetPosition'
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatusEnum',
+            scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+          },
+          {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return ZZProductFinishedOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0])
+            }
+            return res.data
+          })
+        },
+        orderStatusEnumData: [],
+        infoId:null,
+        infoOrderNo:''
+      }
+    },
+    created () {
+      const orderStatusEnumOption = this.$options
+      this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+    },
+    mounted(){
+      this.getLargeCategoriesOptions()
+    },
+    methods: {
+      onViewDetail(obj){
+        if (this.infoId===obj.id) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      getLargeCategoriesOptions(){
+        ZZProductFinishedOrderLargeCategories().then(d=>{
+          this.selectOptions.largeCategories = d.data || []
+        }).catch(err=>{
+          console.log(err)
+        })
+      },
+      getSubclassOptions(id){
+        ZZProductFinishedOrderSubclass(id).then(d=>{
+          this.selectOptions.subclasses = d.data || []
+          this.queryParam.subclasses = undefined
+        }).catch(err=>{
+          this.clearSubclass()
+          console.log(err)
+        })
+      },
+      onLargeCategorySelect(val){
+        if (val) {
+          this.getSubclassOptions(val)
+        } else {
+          this.clearSubclass()
+        }
+      },
+      clearSubclass(){
+        this.selectOptions.subclasses = []
+        this.queryParam.subclasses = undefined
+      },
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      ZZProductFinishedOrderDelete (record) {
+        ZZProductFinishedOrderDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            if (this.infoId && record.id) {
+              this.infoId = null
+            }
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      infoCallback(){
+        this.$refs.table.refresh()
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/infoBlock.vue
new file mode 100644
index 0000000..7fc0d43
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/infoBlock.vue
@@ -0,0 +1,115 @@
+<template>
+  <div class="zz-product-finished-order-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <template slot="statusSlots" slot-scope="text,record">
+        <a-tag :color="text==='瀹屾垚'?'#008000':(
+          text==='鎵ц涓�'?'#1e90ff':(
+            text==='鍙栨秷'?'#556b2f':(
+              text==='鏆傚仠'?'#8b0000':(
+                text==='鎾ゅ洖'?'#ff00ff':'gray'
+              )
+            )
+          )
+        )">{{text}}</a-tag>
+      </template>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { ZZProductFinishedOrderDetailPage } from '@/api/modular/main/ZZProductFinishedOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'zzProductFinishedOrderInfoBlock',
+  emits:["callback"],
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鎵樼洏鍙�', align:'center', dataIndex: 'containerCode', key: 'containerCode' },
+        { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+        { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+        { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.Id = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return ZZProductFinishedOrderDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.zz-product-finished-order-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/addForm.vue
new file mode 100644
index 0000000..65340ce
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/addForm.vue
@@ -0,0 +1,122 @@
+锘�<template>
+  <a-modal
+    title="鏂板瀛︾敓淇℃伅琛↙iuying"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+        </a-form-item>
+        <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+        </a-form-item>
+        <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+            <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" @change="onChangebrithDate"/>
+        </a-form-item>
+        <a-form-item label="鍒涘缓鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" v-decorator="['createdTime']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鏇存柊鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏇存柊鏃堕棿" v-decorator="['updatedTime']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鍒涘缓鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�" v-decorator="['createdUserName']" />
+        </a-form-item>
+        <a-form-item label="淇敼鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�" v-decorator="['updatedUserName']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+  TestStudent2Add
+  } from '@/api/modular/main/liuying/TestStudent2Manage'
+  export default {
+  data () {
+  return {
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  genderData: [],
+  brithDateDateString: '',
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const genderOption = this.$options
+        this.genderData = genderOption.filters['dictData']('sex')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            values.brithDate = this.brithDateDateString
+            TestStudent2Add(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      onChangebrithDate(date, dateString) {
+        this.brithDateDateString = dateString
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/editForm.vue
new file mode 100644
index 0000000..18abde7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/editForm.vue
@@ -0,0 +1,148 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫瀛︾敓淇℃伅琛↙iuying"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+        </a-form-item>
+        <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+        </a-form-item>
+        <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+            <a-select-option v-for="(item,index) in genderData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" @change="onChangebrithDate"/>
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+        <a-form-item label="鍒涘缓鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" v-decorator="['createdTime']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鏇存柊鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏇存柊鏃堕棿" v-decorator="['updatedTime']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鍒涘缓鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�" v-decorator="['createdUserName']" />
+        </a-form-item>
+        <a-form-item label="淇敼鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�" v-decorator="['updatedUserName']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+  import {
+  TestStudent2Edit
+  } from '@/api/modular/main/liuying/TestStudent2Manage'
+  export default {
+  data () {
+  return {
+  Id: 0,
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  record: {},
+  genderData: [],
+  brithDateDateString: '',
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      moment,
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const genderOption = this.$options
+        this.genderData = genderOption.filters['dictData']('sex')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              name: record.name,
+              age: record.age,
+              hasMoney: record.hasMoney,
+              startName: record.startName,
+              gender: record.gender,
+              createdTime: record.createdTime,
+              updatedTime: record.updatedTime,
+              createdUserName: record.createdUserName,
+              updatedUserName: record.updatedUserName
+            }
+          )
+        })
+        this.form.getFieldDecorator('brithDate', { initialValue: moment(record.brithDate, 'YYYY-MM-DD') })
+        this.brithDateDateString = moment(record.brithDate).format('YYYY-MM-DD')
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            values.brithDate = this.brithDateDateString
+            this.record.brithDate = this.brithDateDateString
+            TestStudent2Edit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      onChangebrithDate(date, dateString) {
+        this.brithDateDateString = dateString
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/excelForm.vue
new file mode 100644
index 0000000..2b403dd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="testStudent2DownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+	import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+	import { TestStudent2FromExcel, TestStudent2DownloadExcelTemplate} from '@/api/modular/main/liuying/TestStudent2Manage'
+	import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+	export default {
+	components: {
+	},
+	data() {
+	return {
+	visible: false,
+	detailed: false,
+	confirmLoading: false,
+	fileList: [],
+	importExcelTypeData: [],
+	importExcelType: '1',
+	uploadFile: null,
+	columns: [],
+	dataList: [],
+	demandText:'',
+	columnText: ''
+	}
+	},
+	methods: {
+	index() {
+	this.visible = true;
+	this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+	this.demandText = parseDemandText("testStudent2DownloadExcelTemplate")
+	window.downloadFile = this.testStudent2DownloadExcelTemplate;
+	this.getTable();
+	},
+	showDemand() {
+	this.detailed = !this.detailed;
+	},
+	customRequest(document) {
+	this.uploadFile = document
+	},
+	getTable() {
+	sysExcelTemplateGetColumnList({className: "TestStudent2"}).then(res =>
+	{
+	if (res.success) {
+	this.columns =[];
+	this.dataList = [{}];
+	res.data.forEach(x => {
+	this.columns.push({
+	dataIndex: x.columnName,
+	key: x.columnName,
+	title: x.columnComment
+	});
+	this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+	});
+	this.columnText = parseExcelFieldText(res.data);
+	}
+	});
+	},
+	beforeUpload(fileInfo) {
+	let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+	if (!res.success) {
+	this.$message.warning(res.msg)
+	return false
+	}
+	setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+	},
+	handleChange(fileInfo) {
+	if (fileInfo.file.status === 'error') {
+	fileInfo.fileList.splice(0, 1)
+	}
+	if (fileInfo.file.status === 'done') {
+	if (fileInfo.fileList.length > 1) {
+	fileInfo.fileList.splice(0, 1)
+	}
+	this.fileList = fileInfo.file
+	}
+	},
+	handleSubmit() {
+	this.confirmLoading = true
+	const formData = new FormData()
+	formData.append('file', this.uploadFile.file)
+	TestStudent2FromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+	this.$message.success('鎿嶄綔鎴愬姛')
+	this.confirmLoading = false
+	this.$emit('ok', [])
+	this.handleCancel()
+	}).finally((res)=>{this.confirmLoading = false})
+	},
+	handleCancel() {
+	this.visible = false
+	this.detailed = false
+	},
+	testStudent2DownloadExcelTemplate() {
+	TestStudent2DownloadExcelTemplate({version: "v2"}).then((res) => {
+	downloadFile(res);
+	}).catch((err) => {
+	this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+	})
+	}
+	}
+	}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/index.vue
new file mode 100644
index 0000000..3590075
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/index.vue
@@ -0,0 +1,380 @@
+锘�<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+	<div ref="boxForm" class="boxForm">  
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('TestStudent2:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瀛︾敓濮撳悕">
+                <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ鐢熷鍚�"/>
+              </a-form-item>
+            </a-col><a-col :md="8" :sm="24">
+              <a-form-item label="瀛︾敓骞撮緞">
+                <a-input-number v-model="queryParam.age" style="width: 100%" allow-clear placeholder="璇疯緭鍏ュ鐢熷勾榫�"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="闆惰姳閽�">
+                  <a-input v-model="queryParam.hasMoney" allow-clear placeholder="璇疯緭鍏ラ浂鑺遍挶"/>
+                </a-form-item>
+              </a-col>
+			<a-col :md="8" :sm="24">
+				<a-form-item label="鏄惁鍦ㄦ牎">
+					<a-select :allowClear="true" style="width: 100%" v-model="queryParam.startName" placeholder="璇烽�夋嫨鏄惁鍦ㄦ牎">
+						<a-select-option v-for="(item,index) in startNameData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+					</a-select>
+				</a-form-item>
+			</a-col>
+		<a-col :md="8" :sm="24">
+                <a-form-item label="鎬у埆">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.gender" placeholder="璇烽�夋嫨鎬у埆">
+                    <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+			        <a-col :md="8" :sm="24">
+				        <a-form-item label="鍑虹敓鏃ユ湡">
+					        <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-model="queryParam.brithDate" @change="onChangebrithDate"/>
+				        </a-form-item>
+			        </a-col>
+		                  <!--骞存湀鏃ユ椂鍒嗙-->
+
+					<a-col :md="8" :sm="24">
+						<a-form-item label="鍒涘缓鏃堕棿">
+							<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" v-model="queryParam.createdTime"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @change="onChangecreatedTime"/>
+						</a-form-item>
+					</a-col>
+				          <!--骞存湀鏃ユ椂鍒嗙-->
+
+					<a-col :md="8" :sm="24">
+						<a-form-item label="鏇存柊鏃堕棿">
+							<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏇存柊鏃堕棿" v-model="queryParam.updatedTime"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @change="onChangeupdatedTime"/>
+						</a-form-item>
+					</a-col>
+				
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍒涘缓鑰呭悕绉�">
+                  <a-input v-model="queryParam.createdUserName" allow-clear placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="淇敼鑰呭悕绉�">
+                  <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�"/>
+                </a-form-item>
+              </a-col>	</template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+	</div>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+		:scroll="{x: true,y:tableHeight}"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('TestStudent2:add')" >
+		<div ref="actionBar" class="actionBar">	
+          <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+          <a-button type="info" v-if="hasPerm('TestStudent2:exportExcel')" icon="download" @click="TestStudent2ToExcel()">
+            瀵煎嚭
+          </a-button>
+          <a-button type="primary" v-if="hasPerm('TestStudent2:add')" icon="plus" @click="$refs.addForm.add()">鏂板瀛︾敓淇℃伅琛↙iuying</a-button>
+		</div>
+		</template>
+		  <span slot="startNamescopedSlots" slot-scope="text">
+			<div v-if="text===true ">
+				<a-tag color="green">鏄�</a-tag>
+			</div>
+			<div v-else-if="text==false">
+				<a-tag color="volcano">鍚�</a-tag>
+			</div>
+			<div v-else=""></div>
+			</span>
+		  <span slot="genderscopedSlots" slot-scope="text">
+			{{ 'sex' | dictType(text) }}
+			</span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('TestStudent2:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('TestStudent2:edit') & hasPerm('TestStudent2:delete')"/>
+          <a-popconfirm v-if="hasPerm('TestStudent2:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => TestStudent2Delete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+	  <excel-form ref="excelForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+	import { STable } from '@/components'
+	import moment from 'moment'
+	import { TestStudent2Page, TestStudent2Delete, TestStudent2ToExcel } from '@/api/modular/main/liuying/TestStudent2Manage'
+	//鑷畾涔塼able楂樺害
+	import setTableHtMixin from '@/mixins/handleTableHt.js'
+	import addForm from './addForm.vue'
+	import { exportExcel } from '@/utils/exportToExcel'
+	import { downloadFile } from '@/utils/util'
+	import editForm from './editForm.vue'
+	import excelForm from './excelForm.vue'
+	export default {
+	mixins: [setTableHtMixin],
+	components: {
+	STable,
+	addForm,
+	editForm,
+	excelForm
+	},
+	data () {
+	return {
+	advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+	queryParam: {},
+	columns: [
+	{
+	title: '瀛︾敓濮撳悕',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'name'
+	},
+	{
+	title: '瀛︾敓骞撮緞',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'age'
+	},
+	{
+	title: '闆惰姳閽�',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'hasMoney'
+	},
+	{
+	title: '鏄惁鍦ㄦ牎',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'startName',
+	scopedSlots: { customRender: 'startNamescopedSlots' }
+	},
+	{
+	title: '鎬у埆',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'gender',
+	scopedSlots: { customRender: 'genderscopedSlots' }
+	},
+	{
+	title: '鍑虹敓鏃ユ湡',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	customRender: (value) => (value ? value.split(" ")[0] : value),
+	customCutout:true,
+	dataIndex: 'brithDate'
+	},
+	{
+	title: '鍒涘缓鏃堕棿',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'createdTime'
+	},
+	{
+	title: '鏇存柊鏃堕棿',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'updatedTime'
+	},
+	{
+	title: '鍒涘缓鑰呭悕绉�',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'createdUserName'
+	},
+	{
+	title: '淇敼鑰呭悕绉�',
+	align: 'center',
+	width:'120px',
+	sorter: true,
+	dataIndex: 'updatedUserName'
+	}
+	],
+	tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+	// 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+	loadData: parameter => {
+	return TestStudent2Page(Object.assign(parameter, this.switchingDate())).then((res) => {
+	return res.data
+	})
+	},
+        genderData: [],
+	selectedRowKeys: [],
+	selectedRows: []
+	}
+	},
+	created () {
+	if (this.hasPerm('TestStudent2:edit') || this.hasPerm('TestStudent2:delete')) {
+	this.columns.push({
+	title: '鎿嶄綔',
+	width: '150px',
+	dataIndex: 'action',
+	scopedSlots: { customRender: 'action' }
+	})
+	}
+	const path = this.$route.path
+	const columnStr = window.localStorage.getItem(path)
+	if(columnStr) {
+	var _columns = JSON.parse(columnStr)
+	this.columns.forEach(element => {
+	var fObj = _columns.find((item, index) => {
+	return item.dataIndex === element.dataIndex;
+	})
+	if(fObj!=undefined && fObj!=null){
+	element.checked=fObj.checked;
+	}
+	});
+	}
+	const startNameOption = this.$options
+	this.startNameData = startNameOption.filters['dictData']('yes_true_false')
+	const genderOption = this.$options
+	this.genderData = genderOption.filters['dictData']('sex')
+
+	this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+	window.addEventListener(
+	'resize',
+	() => {
+	this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+	},
+	false
+	)
+	
+	},
+	methods: {
+	moment,
+	/**
+	* 鏌ヨ鍙傛暟缁勮
+	*/
+	switchingDate () {
+	const obj = JSON.parse(JSON.stringify(this.queryParam))
+	return obj
+	},
+	TestStudent2Delete (record) {
+	TestStudent2Delete(record).then((res) => {
+	if (res.success) {
+	this.$message.success('鍒犻櫎鎴愬姛')
+	this.$refs.table.refresh()
+	} else {
+	this.$message.error('鍒犻櫎澶辫触') // + res.message
+	}
+	})
+	},
+
+
+	TestStudent2ToExcel() {
+	this.loading = true
+	let entozh = {};
+	const path = this.$route.path;
+	if (window.localStorage.getItem(path)) {
+	JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+	if (item.dataIndex != 'action' && item.checked) {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	} else { //鐩存帴鐐瑰鍑�
+	this.columns.forEach(item => {
+	if (item.dataIndex != 'action') {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	}
+	TestStudent2Page(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+	this.loading = false;
+	//闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+	var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+	res.data.rows.forEach(item => {
+	var arr1 = Object.keys(item);
+	arr1.forEach(key => {
+	var str1 = key + 'Data';
+	//鏋氫妇杞��
+	if (this[str1] && this[str1].length > 0) {
+	let s1 = this[str1].filter(v => String(v.code) == String(item[key]));
+	if (s1.length > 0) {
+	item[key] = s1[0]?.name || '娌℃湁鏋氫妇鍊�';
+	}
+	}
+	// 鏃ユ湡鎴彇
+	if (arrDataCutout.length > 0) {
+	arrDataCutout.forEach(itemIn => {
+	if (key == itemIn.dataIndex && item[key]) {
+	item[key] = item[key].split(" ")[0]
+	}
+	})
+	}
+	});
+	})
+	exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+	}).catch((err) => {
+	this.loading = false
+	this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+	})
+	},
+
+
+	toggleAdvanced () {
+	this.advanced = !this.advanced
+	this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+	},
+	onChangebrithDate(date, dateString) {
+	  this.queryParam.brithDate = dateString
+	},
+	onChangecreatedTime(date, dateString) {
+	  this.queryParam.createdTime = dateString
+	},
+	onChangeupdatedTime(date, dateString) {
+	  this.queryParam.updatedTime = dateString
+	},
+	handleOk () {
+	this.$refs.table.refresh()
+	},
+	onSelectChange (selectedRowKeys, selectedRows) {
+	this.selectedRowKeys = selectedRowKeys
+	this.selectedRows = selectedRows
+	}
+	}
+	}
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/editForm.vue
new file mode 100644
index 0000000..e6fe789
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/editForm.vue
@@ -0,0 +1,117 @@
+锘�<template>
+  <a-modal
+    :title="title"
+    width="600px"
+    :visible="visible"
+    dialogClass="zero-modal"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <div class="bind-entrance2-edit-modal-content">
+        <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          
+          <a-form-item label="鎵规">
+            <a-input placeholder="璇疯緭鍏ユ壒娆�" allow-clear v-decorator="['materialbatch',{rules:[{required:true,message:'鎵规涓嶅彲涓虹┖锛�'}]}]" />
+          </a-form-item>
+          <a-form-item label="渚涘簲鍟�">
+            <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢" allow-clear v-decorator="['b',{rules:[]}]" />
+          </a-form-item>
+          
+          <a-row :gutter="16">
+            <a-col :span="8">
+              <a-form-item label="闀�">
+                <a-input-number placeholder="璇疯緭鍏ラ暱" allow-clear style="width: 100%" v-decorator="['materiallength',{rules:[{required:true,message:'闀夸笉鍙负绌猴紒'},{ validator: numberValidate }]}]" :min="0" />
+              </a-form-item>
+            </a-col>
+            <a-col :span="8">
+              <a-form-item label="瀹�">
+                <a-input-number placeholder="璇疯緭鍏ュ" allow-clear style="width: 100%" v-decorator="['materialwidth',{rules:[{required:true,message:'瀹戒笉鍙负绌猴紒'},{ validator: numberValidate }]}]" :min="0" />
+              </a-form-item>
+            </a-col>
+            <a-col :span="8">
+              <a-form-item label="楂�">
+                <a-input-number placeholder="璇疯緭鍏ラ珮" allow-clear style="width: 100%" v-decorator="['materialhigh',{rules:[{required:true,message:'楂樹笉鍙负绌猴紒'},{ validator: numberValidate }]}]" :min="0" />
+              </a-form-item>
+            </a-col>
+          </a-row>
+          
+          <a-form-item label="鏁伴噺">
+            <a-input-number placeholder="璇疯緭鍏ユ暟閲�" allow-clear style="width: 100%" v-decorator="['bindquantity',{rules:[{required:true,message:'鏁伴噺涓嶅彲涓虹┖锛�'},{ validator: interalNumberValidate }]}]" :min="0" />
+          </a-form-item>
+          
+        </a-form>
+      </div>
+    </a-spin>
+    
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="submit" type="primary" :loading="confirmLoading" @click="handleSubmit">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+ 
+<script>
+  const defaultForm = {
+    materialbatch:'',
+    b:'',
+    bindquantity:null
+  }
+  export default {
+    emits:['callback'],
+    data () {
+      return {
+        labelCol: {
+          span:24
+        },
+        wrapperCol: {
+          span:24
+        },
+        visible: false,
+        confirmLoading: false,
+        title:'鏂板鑳跺悎鏉�',
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      init () {
+        let _initForm = {...defaultForm}
+        this.visible = true
+        this.$nextTick(()=>{
+          this.form.setFieldsValue(_initForm)
+        })
+      },
+      interalNumberValidate(rule, value, callback){
+        if (value<=0){
+          callback('蹇呴』澶т簬0');
+        } else if (Number(value)!==parseInt(value)) {
+          callback('鍙兘鏄暣鏁�');
+        } else {
+          callback();
+        }
+      },
+      numberValidate(rule, value, callback){
+        if (value<=0){
+          callback('蹇呴』澶т簬0');
+        } else {
+          callback();
+        }
+      },
+      handleSubmit () {
+        this.form.validateFields((errors, values) => {
+          if (!errors) {
+            this.handleCancel()
+            this.$emit('callback',values)
+          }
+        })
+      },
+      handleCancel () {
+        this.visible = false
+      }
+    }
+  }
+</script>
+<style lang="less" scoped>
+.bind-entrance2-edit-modal-content{
+  padding: 20px 16px 0 16px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/index.vue
new file mode 100644
index 0000000..93c891a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/index.vue
@@ -0,0 +1,288 @@
+<template>
+  <a-spin :spinning="loading">
+    <div class="wms-in-bound2-page">
+      <div class="in-bound-page-block block-one">
+        <search-box 
+          label="鎵樼洏鍙�" 
+          v-model="prevFrom.containter" 
+          :msg-type="msgType.containter"
+          :msg="msg.containter"
+          :label-width="labelWidth" 
+          placeholder="璇疯緭鍏�..."
+          @search="onContainterSearch" 
+          @reset="onContainterReset"
+        />
+      </div>
+      <div class="in-bound-page-block block-two">
+        <div class="table-top-box">
+          <a-button type="primary" @click="onAddMaterial">娣诲姞鐗╂枡</a-button>
+        </div>
+        <div class="table-box">
+          <a-table :columns="columns" :data-source="list" :row-key="tableKey" :pagination="false">
+            <template slot="index" slot-scope="text, record, index">{{index+1}}</template>
+            <template slot="specSlots" slot-scope="text, record">
+              {{record.materiallength}}*{{record.materialwidth}}*{{record.materialhigh}}
+            </template>
+            <template slot="action" slot-scope="text, record, index">
+              <a-button type="danger" @click.stop="onDel(record,index)">鍒� 闄�</a-button>
+            </template>
+          </a-table>
+        </div>
+      </div>
+      <div class="bottom-btns-view">
+        <a-button type="primary" :disabled="actionBtnDisabled" @click="onBind">缁勭洏</a-button>
+        <a-button type="primary" :disabled="actionBtnDisabled" @click="onManualIntrance">鎵嬪姩鍏ュ簱</a-button>
+        <a-button @click="onReset">閲� 缃�</a-button>
+      </div>
+      
+      <edit-form ref="form" @callback="handleOk" />
+    </div>
+  </a-spin>
+</template>
+<script>
+import SearchBox from './searchBox.vue'
+import InputLayout from './inputLayout.vue'
+import editForm from './editForm.vue'
+import { 
+  BindEntranceGetContainer, 
+  BindAction, 
+  BindEntranceManualWare
+} from '@/api/modular/main/BindEntranceManage2'
+export default {
+  name:'wmsBind2EntrancePage',
+  components:{SearchBox,InputLayout,editForm},
+  data(){
+    return {
+      loading:false,
+      labelWidth:'75px',
+      containter:null,
+      msg:{
+        containter:'',
+      },
+      msgType:{
+        containter:''
+      },
+      prevFrom:{
+        containter:''
+      },
+      tableKey:'tableKey',
+      list:[],
+      columns:[
+        {
+          dataIndex:'index',
+          title:'搴忓彿',
+          fixed:'left',
+          width:'60',
+          scopedSlots: { customRender: 'index' }
+        },
+        {
+          dataIndex:'materialbatch',
+          title:'鎵规'
+        },
+        {
+          dataIndex:'b',
+          title:'渚涘簲鍟�'
+        },
+        {
+          dataIndex:'materialspec',
+          title:'灏哄',
+          scopedSlots: { customRender: 'specSlots' }
+        },
+        {
+          dataIndex:'bindquantity',
+          title:'鏁伴噺'
+        },
+        {
+          dataIndex:'action',
+          title:'鎿嶄綔',
+          fixed:'right',
+          width:'70',
+          scopedSlots: { customRender: 'action' }
+        }
+      ]
+    }
+  },
+  computed:{
+    actionBtnDisabled(){
+      let res = true;
+      if (this.containter && (this.containter.containerStatus===1||this.containter.containerStatus===2) && this.list.length>0) {
+        res = false;
+      }
+      return res;
+    }
+  },
+  methods:{
+    onContainterReset(){
+      this.resetContainter()
+    },
+    onContainterSearch(){
+      if (!this.prevFrom.containter) {
+        this.msgType.containter = 'error'
+        this.msg.containter = '璇疯緭鍏ユ墭鐩樺彿锛�';
+        return false;
+      }
+      
+      this.msg.containter = ''
+      this.loading = true;
+      this.getContainterInfo((f)=>{
+        this.loading = false;
+      })
+    },
+    resetContainter(){
+      this.clearContainter()
+      this.clearBackContainer()
+    },
+    clearContainter(){
+    	this.prevFrom.container = ''
+    	this.msg.container = ''
+    },
+    clearBackContainer(){
+    	this.containter = null
+    },
+    getContainterInfo(callback){
+      let params = {Containercode:this.prevFrom.containter}
+      const __setErrMessage = function(__msg) {
+      	if (!__msg) {
+      		__msg = '缃戠粶閿欒锛岃绋嶅悗鍐嶅皾璇曪紒'
+      	}
+      	this.msgType.containter = 'error'
+      	this.msg.containter = __msg;
+      }.bind(this)
+      BindEntranceGetContainer(params).then((d)=>{
+        if (d.data) {
+        	if (d.data.wmsContainer) {
+        		this.containter = d.data.wmsContainer
+            let _arr = (d.data.wmsMaterials || []).map((mapObj,mapIndex)=>{
+              let _temp = 'ply-'+new Date().getTime()
+              mapObj[this.tableKey] = _temp+'_'+mapIndex
+              return mapObj
+            })
+            if (_arr.length>0) {
+              this.list = _arr
+            }
+        		this.msgType.containter = 'info'
+        		this.msg.containter = `灏哄锛�${this.containter.specLength}*${this.containter.specWidth}`
+        		callback && callback(true)
+        	} else {
+        		this.clearBackContainer()
+        		__setErrMessage(d.message)
+        		callback && callback(false)
+        	}
+        } else {
+        	this.clearBackContainer()
+        	__setErrMessage(d.message)
+        	callback && callback(false)
+        }
+      }).catch((err)=>{
+        this.clearBackContainer()
+        __setErrMessage()
+        callback && callback(false)
+      })
+    },
+    onAddMaterial(){
+      this.$refs.form.init()
+    },
+    handleOk(obj){
+      this.addToList(obj)
+    },
+    addToList(obj){
+      obj[this.tableKey] = 'ply-'+new Date().getTime()
+      this.list.unshift(obj)
+    },
+    onDel(obj,index){
+      this.list.splice(index,1)
+    },
+    onManualIntrance(){
+      this.loading = true;
+      this.dealManualIntrance((f)=>{
+        this.loading = false;
+        if (f) {
+          this.$message.success('鍏ュ簱鎴愬姛锛�');
+          this.resetContainter()
+          this.list = [];
+        }
+      })
+    },
+    onBind(){
+      this.loading = true;
+      this.dealBind((f)=>{
+        if (f) {
+          this.getContainterInfo((f1)=>{
+            this.loading = false;
+            this.$message.success('缁勭洏鎴愬姛锛�');
+          })
+        } else {
+          this.loading = false;
+        }
+      })
+    },
+    onReset(){
+      this.resetContainter()
+      this.list = [];
+    },
+    dealBind(callback){
+      let params = {
+        containercode:this.containter.containerCode,
+        wmsMaterials:this.list
+      }
+      BindAction(params).then(()=>{
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    dealManualIntrance(callback){
+      let params = {
+        containercode:this.containter.containerCode,
+        wmsMaterials:this.list
+      }
+      BindEntranceManualWare(params).then(()=>{
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    }
+  }
+}
+</script>
+<style lang="less" scoped>
+.wms-in-bound2-page{
+  border-radius: 6px 6px 0 0;
+  background-color: #fff;
+}
+.in-bound-page-block{
+  border-bottom:2px solid #dcdcdc;
+  overflow: auto;
+  padding-top: 16px;
+  padding-bottom: 16px;
+  &.block-two{
+    padding-top:12px;
+    .table-box{
+      padding-top:20px;
+      min-height: 241px;
+    }
+  }
+  &.block-three{
+     overflow: hidden;
+     padding-left:8px;
+     padding-right:8px;
+  }
+}
+.bottom-btns-view{
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  flex-wrap: wrap;
+  padding:16px 8px;
+  .ant-btn + .ant-btn {
+    margin-left:20px;
+  }
+}
+.block-three-input-box{
+  margin: 0 auto;
+  width: 600px;
+}
+.table-top-box{
+  padding-left: 20px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/inputLayout.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/inputLayout.vue
new file mode 100644
index 0000000..a4e7ec2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/inputLayout.vue
@@ -0,0 +1,50 @@
+<template>
+  <div class="wms-in-bound2-input-layout">
+    <div class="label-view" v-if="label" :style="{width:labelWidth?labelWidth:'auto'}">{{label}}锛�</div>
+    <div class="input-view">
+      <slot></slot>
+      <div v-if="msg">
+        <a-alert :message="msg" type="error" show-icon />
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name:'wmsInBound2InputLayout',
+  props:{
+    label:{
+      type:String,
+      default:''
+    },
+    labelWidth:{
+      type:String,
+      default:''
+    },
+    msg:{
+      type:String,
+      default:''
+    }
+  },
+  mounted(){
+    console.log(this.$scopedSlots.err)
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-in-bound2-input-layout{
+  width:100%;
+  display:flex;
+  margin:0 auto;
+  .label-view{
+    flex-shrink: 0;
+    padding-top: 3.5px;
+    text-align: right;
+  }
+  .input-view{
+    flex-grow:1;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/searchBox.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/searchBox.vue
new file mode 100644
index 0000000..df76f8d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/searchBox.vue
@@ -0,0 +1,109 @@
+<template>
+  <div class="wms-in-bound2-search-box">
+    <div class="label-view" v-if="label" :style="{width:labelWidth?labelWidth:'auto'}">{{label}}锛�</div>
+    <div class="input-view">
+      <a-input :placeholder="placeholder" v-model.trim="innerValue" />
+      <div v-if="msg" class="msg-row">
+        <a-alert v-if="msgType==='error'" :message="msg" type="error" show-icon />
+        <a-alert v-else :message="msg" type="info" show-icon />
+      </div>
+    </div>
+    <div class="btns-view">
+      <a-button type="primary" @click="onSearch" :disabled="btnDisabled">鎼� 绱�</a-button>
+      <a-button @click="onReset" :disabled="btnDisabled">閲� 缃�</a-button>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name:'wmsInBound2SearchBox',
+  emits:['input','search','reset'],
+  props:{
+    label:{
+      type:String,
+      default:''
+    },
+    labelWidth:{
+      type:String,
+      default:''
+    },
+    placeholder:{
+      type:String,
+      default:''
+    },
+    msgType:{
+      type:String,
+      default:''
+    },
+    msg:{
+      type:String,
+      default:''
+    },
+    value:{
+      type:[String,null],
+      default:''
+    },
+    btnDisabled:{
+      type:Boolean,
+      default:false
+    }
+  },
+  data(){
+    return {
+      innerValue:''
+    }
+  },
+  created(){
+    this.innerValue = this.value
+  },
+  watch:{
+    innerValue(newVal,oldVal){
+      if (newVal!==this.value) {
+        this.$emit('input',newVal)
+      }
+    },
+    value(newVal,oldVal){
+      if (newVal!==this.innerValue) {
+        this.innerValue = newVal;
+      }
+    }
+  },
+  methods:{
+    onSearch(){
+      this.$emit('search',this.innerValue)
+    },
+    onReset(){
+      this.innerValue = ''
+      this.$emit('reset')
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-in-bound2-search-box{
+  width:600px;
+  display:flex;
+  margin:0 auto;
+  .label-view,.btns-view{
+    flex-shrink: 0;
+  }
+  .label-view{
+    padding-top: 3.5px;
+    text-align: right;
+  }
+  .btns-view{
+    padding-left: 16px;
+    .ant-btn + .ant-btn {
+      margin-left:10px;
+    }
+  }
+  .input-view{
+    flex-grow:1;
+    .msg-row{
+      padding-top:4px;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/index.vue
new file mode 100644
index 0000000..3941b8a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/index.vue
@@ -0,0 +1,236 @@
+<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('LesTakematerials:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁鍙�">
+                <a-input v-model="queryParam.OrderNo" allow-clear placeholder="璇疯緭鍏�..."/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.status" placeholder="璇烽�夋嫨鐘舵��">
+                  <a-select-option v-for="(item,index) in statusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <!-- <a-col :md="8" :sm="24">
+              <a-form-item label="璁″垝鍙�">
+                <a-input v-model="queryParam.planNo" allow-clear placeholder="璇疯緭鍏ヨ鍒掑彿"/>
+              </a-form-item>
+            </a-col> -->
+            <!-- <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍙枡绔欑偣">
+                  <a-input v-model="queryParam.takeMaterialsSite" allow-clear placeholder="璇疯緭鍏ュ彨鏂欑珯鐐�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐝粍">
+                  <a-input v-model="queryParam.teamName" allow-clear placeholder="璇疯緭鍏ョ彮缁�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡鍚嶇О">
+                  <a-input v-model="queryParam.materialName" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡绫诲瀷">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.materialType" placeholder="璇烽�夋嫨鐗╂枡绫诲瀷">
+                    <a-select-option v-for="(item,index) in materialTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="瀵嗗害">
+                  <a-input v-model="queryParam.density" allow-clear placeholder="璇疯緭鍏ュ瘑搴�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="灏哄">
+                  <a-input v-model="queryParam.specifications" allow-clear placeholder="璇疯緭鍏ュ昂瀵�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡鎵规">
+                  <a-input v-model="queryParam.materialBatch" allow-clear placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎵樼洏鍙�">
+                  <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樺彿"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.status" placeholder="璇烽�夋嫨鐘舵��">
+                    <a-select-option v-for="(item,index) in statusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>            
+            </template> -->
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <!-- <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a> -->
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+      >
+        <span slot="orderStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text===2?'#0000ff':(text===3?'#008000':(text===4?'#ffd700':'gray'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="action" slot-scope="text, record">
+          <a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" @click="onDistribute(record)">涓嬪彂</a>
+        </span>
+      </s-table>
+      
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" />
+      
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { PlywoodPreparationPage, Distribute } from '@/api/modular/main/PlyPrepareRecord'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatus',
+            scopedSlots: { customRender: 'orderStatusscopedSlots' }
+          },
+          {
+            title: '鍒涘缓鏃堕棿',
+            align: 'center',
+            dataIndex: 'createdTime'
+          },
+          {
+            title: '鍒涘缓浜�',
+            align: 'center',
+            dataIndex: 'createdUserName'
+          },
+          {
+            title: '鎿嶄綔',
+            width: '120px',
+            align: 'center',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return PlywoodPreparationPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0])
+            }
+            return res.data
+          })
+        },
+        materialTypeData: [],
+        statusData: [],
+        infoId:null,
+        infoOrderNo:''
+      }
+    },
+    created () {
+      const statusOption = this.$options
+      this.statusData = statusOption.filters['dictData']('order_status')
+      console.log(this.statusData.map((obj)=>{
+        return {code:obj.code,name:obj.name}
+      }))
+    },
+    methods: {
+      onViewDetail(obj){
+        if (this.infoId===obj.id) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      onDistribute(obj){
+        if (obj.orderStatus!==1&&obj.orderStatus!==4) return false
+        this.$confirm({
+          title: '绯荤粺鎻愮ず',
+          content: '鎮ㄥ皢瑕佽繘琛屼笅鍙戠殑鎿嶄綔锛岀‘璁よ缁х画鍢涳紵',
+          okText:'纭',
+          cancelText:'鍙栨秷',
+          onOk:()=>{
+            this.dealDistribute([obj.id],(f)=>{
+              if (f) {
+                this.$message.success('鎿嶄綔鎴愬姛')
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      dealDistribute(ids,callback){
+        this.$loading.show()
+        Distribute(ids).then(()=>{
+          this.$loading.hide()
+          this.$refs.table.refresh()
+          callback && callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback && callback(false)
+        })
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/infoBlock.vue
new file mode 100644
index 0000000..366c0b4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/infoBlock.vue
@@ -0,0 +1,104 @@
+<template>
+  <div class="ply-prepare-manage-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { PlywoodPreparationDetailPage } from '@/api/modular/main/PlyPrepareRecord'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'plyPrepareManageInfoBlock',
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch', width: 120 },
+        { title: '鏁伴噺', dataIndex: 'orderQuantity', key: 'orderQuantity',  width: 100},
+        { title: '闇�姹傛棩鏈�', dataIndex: 'requireTime', key: 'requireTime',  width: 170}
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.OrderId = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return PlywoodPreparationDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.ply-prepare-manage-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/plywoodStock/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/plywoodStock/index.vue
new file mode 100644
index 0000000..38d6bb2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/plywoodStock/index.vue
@@ -0,0 +1,189 @@
+<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('WmsMaterialStock:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐗╂枡缂栧彿">
+                <a-input v-model="queryParam.materialNo" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐗╂枡绫诲瀷">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.materialType" placeholder="璇烽�夋嫨鐗╂枡绫诲瀷">
+                  <a-select-option v-for="(item,index) in materialTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡鎵规">
+                  <a-input v-model="queryParam.materialBatch" allow-clear placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡鍚嶇О">
+                  <a-input v-model="queryParam.materialName" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡灏哄">
+                  <a-input v-model="queryParam.materialSpec" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡瀵嗗害">
+                  <a-input v-model="queryParam.materialDensity" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏瘑搴�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="搴撲綅缂栫爜">
+                  <a-input v-model="queryParam.placeCode" allow-clear placeholder="璇疯緭鍏ュ簱浣嶇紪鐮�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎵樼洏缂栫爜">
+                  <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樼紪鐮�"/>
+                </a-form-item>
+              </a-col>         
+            </template>
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <span slot="materialTypescopedSlots" slot-scope="text">
+          {{ 'material_type' | dictType(text) }}
+        </span>
+      </s-table>
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { PlywoodStockPage } from '@/api/modular/main/PlywoodStockManage'
+  export default {
+    components: {
+      STable
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鐗╂枡缂栧彿',
+            align: 'center',
+            dataIndex: 'materialNo'
+          },
+          {
+            title: '鐗╂枡绫诲瀷',
+            align: 'center',
+            dataIndex: 'materialType',
+            scopedSlots: { customRender: 'materialTypescopedSlots' }
+          },
+          {
+            title: '鐗╂枡鎵规',
+            align: 'center',
+            dataIndex: 'materialBatch'
+          },
+          {
+            title: '鐗╂枡鍚嶇О',
+            align: 'center',
+            dataIndex: 'materialName'
+          },
+          {
+            title: '鐗╂枡灏哄',
+            align: 'center',
+            dataIndex: 'materialSpec'
+          },
+          {
+            title: '鐗╂枡瀵嗗害',
+            align: 'center',
+            dataIndex: 'materialDensity'
+          },
+          {
+            title: '搴撳瓨鏁�',
+            align: 'center',
+            dataIndex: 'stockNumber'
+          },
+          {
+            title: '搴撲綅缂栫爜',
+            align: 'center',
+            dataIndex: 'placeCode'
+          },
+          {
+            title: '鎵樼洏缂栫爜',
+            align: 'center',
+            dataIndex: 'containerCode'
+          },
+          {
+            title: '鍏ュ簱鏃堕棿',
+            align: 'center',
+            dataIndex: 'createdTime'
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return PlywoodStockPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        materialTypeData: [],
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      const materialTypeOption = this.$options
+      this.materialTypeData = materialTypeOption.filters['dictData']('material_type')
+    },
+    methods: {
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/addForm.vue
new file mode 100644
index 0000000..0b030ae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/addForm.vue
@@ -0,0 +1,248 @@
+锘�<template>
+  <a-modal
+    title="鏂板澶囨枡"
+    width="90vw"
+    :visible="visible"
+    dialogClass="zero-modal"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <div class="prepare-manage-modal-content">
+        <div class="form-view">
+          <a-form :form="form">
+            <a-row>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍗曟嵁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input disabled v-decorator="['OrderNo',{rules:[{required:true,message:'鍗曟嵁鍙蜂笉鍙负绌猴紒'}]}]" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍙枡绔欑偣" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                  <a-input v-show="false" v-decorator="['takeMaterialsSiteId',{rules:[{required:true,message:'璇烽�夋嫨鍙枡绔欑偣锛�'}]}]" />
+                  <station-select v-model="stationArr" :get-lines="getLines" :get-stations="getStations" @change="onChangeStation" />
+                </a-form-item>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
+        <div class="action-view">
+          <a-button type="primary" icon="plus" @click="openChoose">
+            娣诲姞鐗╂枡
+          </a-button>
+        </div>
+        <div class="list-view" ref="listWrapper">
+          <!-- 娉ㄦ剰scroll.x鐨勫�� -->
+          <a-table v-if="th" :data-source="list" :columns="columns" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+            <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+            <template slot="action" slot-scope="text,record,index">
+              <a-button type="danger" size="small" @click.stop="cancelListItem(index)">鍒犻櫎</a-button>
+            </template>
+            <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+            <template slot="inputCell" slot-scope="text,record,index">
+              <a-input-number v-model="record.orderQuantity" :min="0" />
+            </template>
+            <template slot="dateCell" slot-scope="text,record,index">
+              <a-date-picker :value="record.requireTime" value-format="YYYY-MM-DD" format="YYYY-MM-DD" @change="onChangeRequireDate(index,$event)" />
+            </template>
+          </a-table> 
+        </div>
+      </div>
+    </a-spin>
+    
+    <choose-modal :visible.sync="chooseVisible" @callback="chooseBack" />
+    
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="submit" type="primary" :loading="confirmLoading" @click="handleSubmit" :disabled="!list.length">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+  import ChooseModal from './chooseMaterials.vue'
+  import { PrePareManageAdd,GetBillNumber } from '@/api/modular/main/prePareManage'
+  import StationSelect from '@/components/StationSelect.vue'
+  import { GetLines,GetStations } from '@/api/modular/main/LesStationManage'
+  export default {
+    components:{ChooseModal,StationSelect},
+    data () {
+      return {
+        getLines:GetLines,
+        getStations:GetStations,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 18 }
+        },
+        visible: false,
+        confirmLoading: false,
+        stationArr:[],
+        th:0,
+        tableKey:'materialName',
+        list:[],
+        columns:[
+          { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+          { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+          { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+          { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+          { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch', width: 180 },
+          { title: '鏁伴噺', key: 'orderQuantity', scopedSlots: { customRender: 'inputCell' }, width: 220, align:'center'},
+          { title: '闇�姹傛棩鏈�', key: 'requireTime', scopedSlots: { customRender: 'dateCell' }, width: 220, align:'center'},
+          { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+        ],
+        chooseVisible:false
+      }
+    },
+    beforeCreate(){
+      this.form = this.$form.createForm(this)
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+          this.th = this.$refs.listWrapper.clientHeight - 60
+          this.getInitData()
+        });
+      },
+      getInitData(){
+        this.confirmLoading = true;
+        GetBillNumber().then((d1)=>{
+          this.form.setFieldsValue({OrderNo:(d1.data.takeMaterialsNo || '')})
+          this.confirmLoading = false;
+        }).catch(()=>{
+          this.confirmLoading = false;
+        })
+      },
+      onChangeStation(arr){
+        this.form.setFieldsValue({takeMaterialsSiteId:arr[1]})
+      },
+      chooseBack(arr){
+        let newArr = [], reCount = 0;
+        arr.forEach((item)=>{
+          let f = false;
+          for (let i=0;i<this.list.length;i++) {
+            if (this.list[i][this.tableKey] === item[this.tableKey]) {
+              reCount++;
+              f = true
+              break;
+            }
+          }
+          if (!f) {
+            let _obj = {...item}
+            _obj.orderQuantity = 0
+            _obj.requireTime = ''
+            newArr.push(item)
+          }
+        })
+        this.list = [].concat(newArr,this.list)
+        if (reCount) {
+          this.$message.warning(`${reCount}绗旀暟鎹凡瀛樺湪锛屾湭娣诲姞锛乣);
+        }
+      },
+      cancelListItem(index){
+        this.list.splice(index,1)
+      },
+      onChangeRequireDate(index,val){
+        let arr = this.list.map((item,i)=>{
+          if (i===index) {
+            item.requireTime=val
+          } else {
+            if (!item.requireTime) {
+              item.requireTime=val
+            }
+          }
+          return item
+        })
+        this.list = arr
+      },
+      interalNumberValidate(val){
+        let res = 0
+        if (!val) {
+          res = 1  //鏁伴噺蹇呭~涓斿ぇ浜�0
+        } else if (Number(val)!==parseInt(val)) {
+          res = 2  //鍙兘鏄暣鏁�
+        }
+        return res
+      },
+      checkBeforeSubmit() {
+        let res = true, msg = '';
+        for (let i=0;i<this.list.length;i++) {
+          let numberTag = this.interalNumberValidate(this.list[i].orderQuantity)
+          if (numberTag!==0) {
+            res = false
+            if (numberTag===1) {
+              msg = `绗�${i+1}琛岋紝鏁伴噺蹇呭~涓斿ぇ浜�0锛乣
+            } else if (numberTag===2) {
+              msg = `绗�${i+1}琛岋紝鏁伴噺鍙兘鏄暣鏁帮紒`
+            }
+            break;
+          }
+          if (!this.list[i].requireTime) {
+            res = false
+            msg = `绗�${i+1}琛岋紝闇�姹傛棩鏈熷繀濉紒`
+            break;
+          }
+        }
+        if (!res) {
+          this.$message.warning(msg);
+        }
+        return res
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        this.form.validateFields((errors, values) => {
+          if (!errors) {
+            let f = this.checkBeforeSubmit()
+            if (f) {
+              this.confirmLoading = true
+              let params = {...values,...{WmsAssembleOrderDetails:this.list}}
+              PrePareManageAdd(params).then(()=>{
+                this.confirmLoading = false
+                this.handleCancel()
+                this.$emit('ok')
+              }).catch(()=>{
+                this.confirmLoading = false
+              })
+            }
+          } 
+        })
+      },
+      handleCancel () {
+        this.visible = false
+        this.th = 0
+        this.list = []
+        this.chooseVisible = false
+      },
+      openChoose(){
+        this.chooseVisible = true
+      }
+    }
+  }
+</script>
+<style lang="less" scoped>
+.prepare-manage-modal-content{
+  height: 70vh;
+  display: flex;
+  flex-direction: column;
+  .form-view,.action-view{
+    flex-shrink: 0;
+  }
+  .form-view{
+    background-color: #F3F7FA;
+    padding-top: 20px;
+  }
+  .action-view{
+    padding: 8px 16px;
+  }
+  .list-view{
+    flex-grow: 1;
+    padding: 0 16px;
+    overflow: auto;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/chooseMaterials.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/chooseMaterials.vue
new file mode 100644
index 0000000..d3e4c42
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/chooseMaterials.vue
@@ -0,0 +1,310 @@
+<template>
+  <a-modal
+    title="鐗╂枡閫夋嫨"
+    width="85vw"
+    :visible="innerVisible"
+    dialogClass="zero-modal"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="loading">
+      <div class="prepare-manage-choose-modal-content">
+        <div class="choose-bar">
+          <div class="choose-form-view">
+            <a-form layout="inline">
+              <a-row>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-select style="width: 100%" v-model="query.MaterialType" placeholder="璇烽�夋嫨..." allowClear>
+                      <a-select-option v-for="(item,index) in types" :value="item.code" :key="'types-sel-'+index">{{item.name}}</a-select-option>
+                    </a-select>
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                    <a-input v-model.trim="query.MaterialBatch" placeholder="璇疯緭鍏�..." allowClear />
+                  </a-form-item>
+                </a-col>
+              </a-row>
+            </a-form>
+          </div>
+          <div class="choose-btns-view">
+            <a-button type="primary" style="margin-bottom:6px;" @click.stop="onQuery">鏌ヨ</a-button>
+            <a-button @click.stop="onReset">閲嶇疆</a-button>
+          </div>
+        </div>
+        <div class="table-box" ref="listWrapper">
+          <div class="action-view" v-if="showType===1">
+            <a-table v-if="th1" :data-source="list" :columns="listColumns" 
+              :pagination="{current:queried.PageNo,pageSize:queried.PageSize,total:listTotal}" 
+              :rowKey="tableKey" :row-selection="{onChange:rowSelectionsChange,selectedRowKeys:selectedRowKeys}" :scroll="{y:th1}"
+              @change="chooseTablePageChange">
+              <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+              <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+            </a-table>
+          </div>
+          <div class="choosen-view" v-else>
+            <a-table v-if="th2" :data-source="choosen" :columns="choosenColumns" :rowKey="tableKey" :pagination="false" :scroll="{y:th2}">
+              <template slot="action" slot-scope="text,record,index">
+                <a-button type="danger" size="small" @click.stop="cancelChoosen(index)">鍒犻櫎</a-button>
+              </template>
+              <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+            </a-table>
+          </div>
+        </div>
+      </div>
+    </a-spin>
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button key="choosen" type="primary" @click="changeShowType">鎵�閫夌墿鏂�<span v-if="choosen.length>0">({{choosen.length}})</span></a-button>
+      <a-button key="submit" type="primary" :loading="loading" @click="handleSubmit" :disabled="!choosen.length">纭</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import { QueryMaterials } from '@/api/modular/main/prePareManage'
+const defaultQuery = {
+  MaterialType:undefined,
+  MaterialBatch:''
+}
+const pagination = {
+  PageNo:1,
+  PageSize:10
+} 
+export default {
+  emits:['update:visible','callback'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    }
+  },
+  data(){
+    return {
+      innerVisible:false,
+      loading:false,
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 5 }
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 18 }
+      },
+      types:[],
+      query:{...defaultQuery},
+      queried:{...pagination},
+      tableKey:'materialName',
+      listTotal:0,
+      list:[],
+      listColumns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch', width: 180 }
+      ],
+      selectedRowKeys:[],
+      choosen:[],
+      choosenColumns:[
+        { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType',  width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch', width: 180 },
+        { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+      ],
+      showType:1,   //1鏄剧ず鏌ヨ椤甸潰锛� 2鏄剧ず宸查�夋暟鎹�
+      th1:0,
+      th2:0
+    }
+  },
+  created(){
+    this.innerVisible = this.visible
+    this.types = this.$options.filters['dictData']('material_type')
+    console.log(JSON.stringify(this.types))
+  },
+  watch:{
+    visible(newVal){
+      if (newVal!==this.innerVisible) {
+        this.innerVisible = newVal
+      }
+    },
+    innerVisible(newVal,oldVal){
+      if (newVal!==this.visible) {
+        this.$emit('update:visible',newVal)
+      }
+      if (newVal!==oldVal) {
+        if (newVal) {
+          this.init()
+        }
+      }
+    }
+  },
+  methods:{
+    init(){
+      this.$nextTick(() => {
+        let h = this.$refs.listWrapper.clientHeight
+        this.th1 = h - 120
+        this.th2= h - 60
+        this.resetQuery()
+      });
+    },
+    handleSubmit(){
+      this.$emit('callback',this.choosen)
+      this.handleCancel()
+    },
+    handleCancel(){
+      this.innerVisible = false;
+      this.showType = 1
+      this.list = []
+      this.choosen = []
+      this.loading = false
+      this.query = {...defaultQuery}
+      this.queried = {...pagination}
+    },
+    onQuery(){
+      this.newQuery()
+    },
+    onReset(){
+      this.resetQuery()
+    },
+    resetQuery(){
+      this.query = {...defaultQuery}
+      this.newQuery()
+    },
+    newQuery(){
+      this.queried = {...this.query,...pagination}
+      this.queryChooseDataSource()
+    },
+    queryChooseDataSource(){
+      this.loading = true;
+      QueryMaterials(this.queried).then((d)=>{
+        this.list = d.data.rows || []
+        this.listTotal = d.data.totalRows || 0
+        this.setSelectedRowKeys()
+        this.loading = false;
+      }).catch(()=>{
+        this.loading = false;
+      })
+    },
+    rowSelectionsChange(selectedRowKeys, selectedRows){
+      let reduces = [], adds = []
+      /* 璁$畻闇�瑕佽绉诲嚭choosen鐨勫唴瀹� */
+      this.selectedRowKeys.forEach((val)=>{
+        let f1 = false;
+        for (let i=0;i<selectedRowKeys.length;i++) {
+          if (selectedRowKeys[i] === val) {
+            f1 = true;
+            break;
+          }
+        }
+        if (!f1) {
+          reduces.push(val)
+        }
+      })
+      /* 璁$畻闇�瑕佽鍔犲叆choosen鐨勫唴瀹� */
+      selectedRowKeys.forEach((val)=>{
+        let f2 = false;
+        for (let i=0;i<this.choosen.length;i++) {
+          if (this.choosen[i][this.tableKey] === val) {
+            f2 = true;
+            break;
+          }
+        }
+        if (!f2) {
+          adds.push(val)
+        }
+      })
+      /* 鎵ц瀹為檯鏁版嵁澶勭悊锛屽厛鍑忓悗鍔狅紝鍑忓皯澶勭悊鏃堕棿 */
+      this.selectedRowKeys = selectedRowKeys
+      this.reduceChoosen(reduces)
+      this.addChosen(adds)
+    },
+    chooseTablePageChange(pagination){
+      this.queried.PageNo = pagination.current
+      this.queryChooseDataSource()
+    },
+    reduceChoosen(arr){
+      arr.forEach((val)=>{
+        let reduceIndex = -1;
+        for (let i=0;this.choosen.length;i++) {
+          if (this.choosen[i][this.tableKey] === val) {
+            reduceIndex = i
+            break;
+          }
+        }
+        if (reduceIndex>=0) {
+          this.choosen.splice(reduceIndex,1)
+        }
+      })
+    },
+    cancelChoosen(index){
+      this.choosen.splice(index,1)
+    },
+    addChosen(arr){
+      arr.forEach((val)=>{
+        for (let i=0;this.list.length;i++) {
+          if (this.list[i][this.tableKey] === val) {
+            let obj = {...this.list[i]}
+            this.choosen.push(obj)
+            break;
+          }
+        }
+      })
+    },
+    setSelectedRowKeys(){
+      let arr = []
+      this.choosen.forEach((item)=>{
+        for (let i=0;i<this.list.length;i++) {
+          if (this.list[i][this.tableKey] === item[this.tableKey]) {
+            arr.push(item[this.tableKey])
+            break;
+          }
+        }
+      })
+      this.selectedRowKeys = arr
+    },
+    changeShowType(){
+      if (this.showType===1) {
+        this.showType = 2
+      } else {
+        this.showType = 1
+        this.setSelectedRowKeys()
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.prepare-manage-choose-modal-content{
+  height: 70vh;
+  display: flex;
+  flex-direction: column;
+  .choose-bar{
+    flex-shrink: 0;
+    padding: 8px 4px;
+    display: flex;
+    .choose-form-view{
+      flex-grow: 1;
+    }
+    .choose-btns-view{
+      flex-shrink: 0;
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+    }
+  }
+  .table-box{
+    flex-grow: 1;
+    padding: 0 16px;
+    overflow: auto;
+  }
+  .ant-form-inline{
+    .ant-form-item {
+      margin-right: 0;
+      width: 100%;
+    }
+  } 
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/index.vue
new file mode 100644
index 0000000..ca6525f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/index.vue
@@ -0,0 +1,257 @@
+<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('LesTakematerials:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍗曟嵁鍙�">
+                <a-input v-model="queryParam.OrderNo" allow-clear placeholder="璇疯緭鍏�..."/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鐘舵��">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.status" placeholder="璇烽�夋嫨鐘舵��">
+                  <a-select-option v-for="(item,index) in statusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <!-- <a-col :md="8" :sm="24">
+              <a-form-item label="璁″垝鍙�">
+                <a-input v-model="queryParam.planNo" allow-clear placeholder="璇疯緭鍏ヨ鍒掑彿"/>
+              </a-form-item>
+            </a-col> -->
+            <!-- <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍙枡绔欑偣">
+                  <a-input v-model="queryParam.takeMaterialsSite" allow-clear placeholder="璇疯緭鍏ュ彨鏂欑珯鐐�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐝粍">
+                  <a-input v-model="queryParam.teamName" allow-clear placeholder="璇疯緭鍏ョ彮缁�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡鍚嶇О">
+                  <a-input v-model="queryParam.materialName" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡绫诲瀷">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.materialType" placeholder="璇烽�夋嫨鐗╂枡绫诲瀷">
+                    <a-select-option v-for="(item,index) in materialTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="瀵嗗害">
+                  <a-input v-model="queryParam.density" allow-clear placeholder="璇疯緭鍏ュ瘑搴�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="灏哄">
+                  <a-input v-model="queryParam.specifications" allow-clear placeholder="璇疯緭鍏ュ昂瀵�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐗╂枡鎵规">
+                  <a-input v-model="queryParam.materialBatch" allow-clear placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎵樼洏鍙�">
+                  <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樺彿"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐘舵��">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.status" placeholder="璇烽�夋嫨鐘舵��">
+                    <a-select-option v-for="(item,index) in statusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>            
+            </template> -->
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <!-- <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a> -->
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :pageSize="5"
+        :pageSizeOptions="['5','10','20','30']"
+      >
+        <template class="table-operator" slot="operator" v-if="hasPerm('LesTakematerials:add')" >
+          <a-button type="primary" v-if="hasPerm('LesTakematerials:add')" icon="plus" @click="$refs.addForm.add()">鏂板澶囨枡</a-button>
+        </template>
+        <span slot="orderStatusscopedSlots" slot-scope="text">
+          <a-tag :color="text===2?'#0000ff':(text===3?'#008000':(text===4?'#ffd700':'gray'))">{{ 'order_status' | dictType(text) }}</a-tag>
+        </span>
+        <template slot="linkSlot" slot-scope="text,record">
+          <a @click="onViewDetail(record)">{{text}}</a>
+        </template>
+        <span slot="action" slot-scope="text, record">
+          <a :class="[(record.orderStatus===1||record.orderStatus===4)?'':'disabled']" style="margin-right:10px;" @click="onEdit(record)">缂栬緫</a>
+          <a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" @click="onDel(record)">鍒犻櫎</a>
+        </span>
+      </s-table>
+      
+      <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" />
+      
+      <add-form ref="addForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable } from '@/components'
+  import { PrePareManagePage, PrePareManageDelete } from '@/api/modular/main/prePareManage'
+  import addForm from './addForm.vue'
+  import infoBlock from './infoBlock.vue'
+  export default {
+    components: {
+      STable,
+      addForm,
+      infoBlock
+    },
+    data () {
+      return {
+        advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        queryParam: {},
+        columns: [
+          {
+            title: '鍗曟嵁缂栧彿',
+            align: 'center',
+            dataIndex: 'orderNo',
+            scopedSlots: { customRender: 'linkSlot' }
+          },
+          {
+            title: '鍗曟嵁鐘舵��',
+            align: 'center',
+            dataIndex: 'orderStatus',
+            scopedSlots: { customRender: 'orderStatusscopedSlots' }
+          },
+          {
+            title: '澶囨枡鎬绘暟',
+            align: 'center',
+            dataIndex: 'orderQuantityTotal'
+          },
+          {
+            title: '鍒涘缓鏃堕棿',
+            align: 'center',
+            dataIndex: 'createdTime'
+          },
+          {
+            title: '鍒涘缓浜�',
+            align: 'center',
+            dataIndex: 'createdUserName'
+          },
+          {
+            title: '鎿嶄綔',
+            width: '120px',
+            align: 'center',
+            dataIndex: 'action',
+            scopedSlots: { customRender: 'action' }
+          }
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return PrePareManagePage(Object.assign(parameter, this.queryParam)).then((res) => {
+            let _arr = res.data.rows || []
+            if (_arr.length>0){
+              this.onViewDetail(_arr[0])
+            }
+            return res.data
+          })
+        },
+        materialTypeData: [],
+        statusData: [],
+        infoId:null,
+        infoOrderNo:''
+      }
+    },
+    created () {
+      const statusOption = this.$options
+      this.statusData = statusOption.filters['dictData']('order_status')
+      console.log(this.statusData.map((obj)=>{
+        return {code:obj.code,name:obj.name}
+      }))
+    },
+    methods: {
+      onViewDetail(obj){
+        if (this.infoId===obj.id) {
+          this.infoId = null
+          this.infoOrderNo = ''
+        } else {
+          this.infoId = obj.id;
+          this.infoOrderNo = obj.orderNo
+        }
+      },
+      onEdit(){
+        
+      },
+      onDel(obj){
+        if (obj.orderStatus!==1&&obj.orderStatus!==4) return false
+        this.$confirm({
+          title: '绯荤粺鎻愮ず',
+          content: '鎮ㄥ皢瑕佽繘琛屽垹闄ょ殑鎿嶄綔锛岀‘璁よ缁х画鍢涳紵',
+          okText:'纭',
+          cancelText:'鍙栨秷',
+          onOk:()=>{
+            this.dealDelete([obj.id],(f)=>{
+              if (f) {
+                this.$message.success('鍒犻櫎鎴愬姛')
+                if (obj.id===this.infoId) {
+                  this.infoId = null
+                }
+                this.$refs.table.refresh()
+              }
+            })
+          }
+        });
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      dealDelete(ids,callback){
+        this.$loading.show()
+        PrePareManageDelete(ids).then(()=>{
+          this.$loading.hide()
+          this.$refs.table.refresh()
+          callback && callback(true)
+        }).catch(()=>{
+          this.$loading.hide()
+          callback && callback(false)
+        })
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/infoBlock.vue
new file mode 100644
index 0000000..a86fe57
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/infoBlock.vue
@@ -0,0 +1,105 @@
+<template>
+  <div class="prepare-manage-info-block">
+    <s-table
+      ref="table"
+      :columns="columns"
+      :data="loadData"
+      :alert="true"
+      rowKey="tableRowKey"
+      :pageSize="queried.PageSize"
+      :pageSizeOptions="['5','10','20','30']"
+      :rowSelection="null">
+      <template class="table-operator" slot="operator" >
+        <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+      </template>
+      <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+      <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+    </s-table>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { CncTakeMaterialsDetailPage } from '@/api/modular/main/prePareManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+  name:'prepareManageInfoBlock',
+  components:{STable},
+  props:{
+    queryId:{
+      type:[Number,null],
+      default:null
+    },
+    orderNo:{
+      type:String,
+      default:''
+    }
+  },
+  data(){
+    return {
+      columns:[
+        { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+        { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+        { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+        { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+        { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch', width: 180 },
+        { title: '闇�姹傛暟閲�', dataIndex: 'orderQuantity', key: 'orderQuantity',  width: 100},
+        { title: '宸插鏁伴噺', dataIndex: 'actualQuantity', key: 'actualQuantity',  width: 100},
+        { title: '闇�姹傛棩鏈�', dataIndex: 'requireTime', key: 'requireTime',  width: 170}
+      ],
+      queried:{...pagination},
+      refreshKey:true,
+    }
+  },
+  watch:{
+    queryId(newV,oldV){
+      if (newV!==oldV){
+        this.initData()
+      }
+    }
+  },
+  methods:{
+    initData(){
+      this.refreshKey = true
+      this.$refs.table.refresh()
+    },
+    loadData(parameter){
+      parameter.OrderId = this.queryId
+      if (this.queryId) {
+        if (this.refreshKey) {
+          parameter.pageNo = pagination.PageNo
+          parameter.pageSize = pagination.PageSize
+        } 
+        this.refreshKey = false
+        this.queried.PageNo = parameter.pageNo 
+        this.queried.PageSize = parameter.pageSize 
+        return CncTakeMaterialsDetailPage(parameter).then((res) => {
+          if (res.data.rows) {
+            res.data.rows = res.data.rows.map((item,index)=>{
+              item.tableRowKey = index
+              return item
+            })
+          }
+          return res.data
+        })
+      } else {
+        return new Promise((resolve,reject)=>{
+          resolve({
+            pageNo:pagination.PageNo,
+            pageSize:pagination.PageSize,
+            rows:[],
+            totalPage:0,
+            totalRows:0
+          })
+        })
+      } 
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.prepare-manage-info-block{
+  padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/LabelTag.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/LabelTag.vue
new file mode 100644
index 0000000..5bd56ac
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/LabelTag.vue
@@ -0,0 +1,99 @@
+<template>
+  <div class="label-tag">
+    <template v-if="mergedConfig">
+      <div class="label-item" v-for="(label, i) in mergedConfig.data" :key="label">
+        {{ label }}
+        <div :style="`background-color: ${mergedConfig.colors[i % mergedConfig.colors.length]};`" />
+      </div>
+    </template>
+  </div>
+</template>
+
+<script>
+  import {
+    deepMerge
+  } from '@jiaminghi/charts/lib/util/index'
+
+  import {
+    deepClone
+  } from '@jiaminghi/c-render/lib/plugin/util'
+
+  export default {
+    name: 'LabelTag',
+    props: {
+      config: {
+        type: Object,
+        default: () => ([])
+      }
+    },
+    data() {
+      return {
+        defaultConfig: {
+          /**
+           * @description Label data
+           * @type {Array<String>}
+           * @default data = []
+           * @example data = ['label1', 'label2']
+           */
+          data: [],
+          /**
+           * @description Label color (Hex|Rgb|Rgba|color keywords)
+           * @type {Array<String>}
+           * @default colors = ['#00baff', '#3de7c9', '#fff', '#ffc530', '#469f4b']
+           * @example colors = ['#666', 'rgb(0, 0, 0)', 'rgba(0, 0, 0, 1)', 'red']
+           */
+          colors: ['#00baff', '#3de7c9', '#fff', '#ffc530', '#469f4b']
+        },
+
+        mergedConfig: null
+      }
+    },
+    watch: {
+      config() {
+        const {
+          mergeConfig
+        } = this
+
+        mergeConfig()
+      }
+    },
+    methods: {
+      mergeConfig() {
+        const {
+          config,
+          defaultConfig
+        } = this
+
+        this.mergedConfig = deepMerge(deepClone(defaultConfig, true), config || {})
+      }
+    },
+    mounted() {
+      const {
+        mergeConfig
+      } = this
+
+      mergeConfig()
+    }
+  }
+</script>
+
+<style lang="less">
+  .label-tag {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+
+    .label-item {
+      margin: 5px;
+      font-size: 5px;
+      display: flex;
+      align-items: center;
+
+      div {
+        width: 12px;
+        height: 12px;
+        margin-left: 5px;
+      }
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/TopMiddleCmp.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/TopMiddleCmp.vue
new file mode 100644
index 0000000..30261d9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/TopMiddleCmp.vue
@@ -0,0 +1,112 @@
+<template>
+  <div class="top-middle-cmp">
+    <div class="chart-name">
+
+      <dv-decoration-3 style="width:200px;height:20px;" />
+    </div>
+    <dv-charts :option="option" />
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'TopMiddleCmp',
+    data() {
+      return {
+        option: {
+          legend: {
+            data: ['璁惧瀹屽ソ鐜�'],
+            textStyle: {
+              fill: '#fff'
+            }
+          },
+          xAxis: {
+            data: [
+              '10/01', '10/02', '10/03', '10/04', '10/05', '10/06',
+              '10/07', '10/07', '10/08', '10/09', '10/10', '10/11',
+              '10/12', '10/13', '10/14', '10/15'
+            ],
+            boundaryGap: false,
+            axisLine: {
+              style: {
+                stroke: '#999'
+              }
+            },
+            axisLabel: {
+              style: {
+                fill: '#999'
+              }
+            },
+            axisTick: {
+              show: false
+            }
+          },
+          yAxis: {
+            data: 'value',
+            splitLine: {
+              show: false
+            },
+            axisLine: {
+              style: {
+                stroke: '#999'
+              }
+            },
+            axisLabel: {
+              style: {
+                fill: '#999'
+              },
+              formatter({
+                value
+              }) {
+                return value.toFixed(2)
+              }
+            },
+            axisTick: {
+              show: false
+            },
+            min: 95,
+            max: 100,
+            interval: 1
+          },
+          series: [{
+            data: [
+              99.56, 99.66, 99.84, 99.22, 99.11, 99.45,
+              99.44, 99.81, 99.84, 99.32, 99.14, 99.45,
+              99.15, 99.45, 99.64, 99.89
+            ],
+            type: 'line',
+            name: '璁惧瀹屽ソ鐜�',
+            smooth: true,
+            lineArea: {
+              show: true,
+              gradient: ['rgba(55, 162, 218, 0.6)', 'rgba(55, 162, 218, 0)']
+            }
+            // linePoint: {
+            //   radius: 4,
+            //   style: {
+            //     fill: '#00db95'
+            //   }
+            // }
+          }]
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+  .top-middle-cmp {
+    width: 100%;
+    height: 100%;
+    box-sizing: border-box;
+    background-color: rgba(6, 30, 93, 0.5);
+
+    .chart-name {
+      position: absolute;
+      left: 10px;
+      //text-align: right;
+      font-size: 20px;
+      top: 10px;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/cards.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/cards.vue
new file mode 100644
index 0000000..41588a7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/cards.vue
@@ -0,0 +1,188 @@
+<template>
+  <div id="cards">
+    <div class="card-item" v-for="(card, i) in cards" :key="card.title">
+      <div class="card-header">
+        <div class="card-header-left">{{ card.title }}</div>
+        <div class="card-header-right">{{ '0' + (i + 1) }}</div>
+      </div>
+      <dv-charts class="ring-charts" :option="card.ring" />
+      <div class="card-footer">
+        <div class="card-footer-item">
+          <div class="footer-title">绱閲戦</div>
+          <div class="footer-detail">
+            <dv-digital-flop :config="card.total" style="width:70%;height:35px;" />鍏�
+          </div>
+        </div>
+        <div class="card-footer-item">
+          <div class="footer-title">宸℃煡鐥呭</div>
+          <div class="footer-detail">
+            <dv-digital-flop :config="card.num" style="width:70%;height:35px;" />澶�
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'Cards',
+    data() {
+      return {
+        cards: []
+      }
+    },
+    methods: {
+      createData() {
+        const {
+          randomExtend
+        } = this
+
+        this.cards = new Array(5).fill(0).map((foo, i) => ({
+          title: '娴嬭瘯璺' + (i + i),
+          total: {
+            number: [randomExtend(9000, 10000)],
+            content: '{nt}',
+            textAlign: 'right',
+            style: {
+              fill: '#ea6027',
+              fontWeight: 'bold'
+            }
+          },
+          num: {
+            number: [randomExtend(30, 60)],
+            content: '{nt}',
+            textAlign: 'right',
+            style: {
+              fill: '#26fcd8',
+              fontWeight: 'bold'
+            }
+          },
+          ring: {
+            series: [{
+              type: 'gauge',
+              startAngle: -Math.PI / 2,
+              endAngle: Math.PI * 1.5,
+              arcLineWidth: 13,
+              radius: '80%',
+              data: [{
+                name: '璧勯噾鍗犳瘮',
+                value: randomExtend(40, 60)
+              }],
+              axisLabel: {
+                show: false
+              },
+              axisTick: {
+                show: false
+              },
+              pointer: {
+                show: false
+              },
+              backgroundArc: {
+                style: {
+                  stroke: '#224590'
+                }
+              },
+              details: {
+                show: true,
+                formatter: '璧勯噾鍗犳瘮{value}%',
+                style: {
+                  fill: '#1ed3e5',
+                  fontSize: 20
+                }
+              }
+            }],
+            color: ['#03d3ec']
+          }
+        }))
+      },
+      randomExtend(minNum, maxNum) {
+        if (arguments.length === 1) {
+          return parseInt(Math.random() * minNum + 1, 10)
+        } else {
+          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)
+        }
+      }
+    },
+    mounted() {
+      const {
+        createData
+      } = this
+
+      createData()
+
+      setInterval(this.createData, 30000)
+    }
+  }
+</script>
+
+<style lang="less">
+  #cards {
+    display: flex;
+    justify-content: space-between;
+    height: 45%;
+
+    .card-item {
+      background-color: rgba(6, 30, 93, 0.5);
+      border-top: 2px solid rgba(1, 153, 209, .5);
+      width: 19%;
+      display: flex;
+      flex-direction: column;
+    }
+
+    .card-header {
+      display: flex;
+      height: 20%;
+      align-items: center;
+      justify-content: space-between;
+
+      .card-header-left {
+        font-size: 18px;
+        font-weight: bold;
+        padding-left: 20px;
+      }
+
+      .card-header-right {
+        padding-right: 20px;
+        font-size: 40px;
+        color: #03d3ec;
+      }
+    }
+
+    .ring-charts {
+      height: 55%;
+    }
+
+    .card-footer {
+      height: 25%;
+      display: flex;
+      align-items: center;
+      justify-content: space-around;
+    }
+
+    .card-footer-item {
+      padding: 5px 10px 0px 10px;
+      box-sizing: border-box;
+      width: 40%;
+      background-color: rgba(6, 30, 93, 0.7);
+      border-radius: 3px;
+
+      .footer-title {
+        font-size: 15px;
+        margin-bottom: 5px;
+      }
+
+      .footer-detail {
+        font-size: 20px;
+        color: #1294fb;
+        display: flex;
+        font-size: 18px;
+        align-items: center;
+
+        .dv-digital-flop {
+          margin-right: 5px;
+        }
+      }
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/digitalFlop.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/digitalFlop.vue
new file mode 100644
index 0000000..8154503
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/digitalFlop.vue
@@ -0,0 +1,214 @@
+<template>
+  <div id="digital-flop">
+    <div class="digital-flop-item" v-for="item in digitalFlopData" :key="item.title">
+      <div class="digital-flop-title">{{ item.title }}</div>
+      <div class="digital-flop">
+        <dv-digital-flop :config="item.number" style="width:100px;height:50px;" />
+        <div class="unit">{{ item.unit }}</div>
+      </div>
+    </div>
+
+    <dv-decoration-10 />
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'DigitalFlop',
+    data() {
+      return {
+        digitalFlopData: []
+      }
+    },
+    methods: {
+      createData() {
+        const {
+          randomExtend
+        } = this
+
+        this.digitalFlopData = [{
+            title: '绠″吇閲岀▼',
+            number: {
+              number: [randomExtend(20000, 30000)],
+              content: '{nt}',
+              textAlign: 'right',
+              style: {
+                fill: '#4d99fc',
+                fontWeight: 'bold'
+              }
+            },
+            unit: '鍏噷'
+          },
+          {
+            title: '妗ユ',
+            number: {
+              number: [randomExtend(20, 30)],
+              content: '{nt}',
+              textAlign: 'right',
+              style: {
+                fill: '#f46827',
+                fontWeight: 'bold'
+              }
+            },
+            unit: '搴�'
+          },
+          {
+            title: '娑垫礊闅ч亾',
+            number: {
+              number: [randomExtend(20, 30)],
+              content: '{nt}',
+              textAlign: 'right',
+              style: {
+                fill: '#40faee',
+                fontWeight: 'bold'
+              }
+            },
+            unit: '涓�'
+          },
+          {
+            title: '鍖濋亾',
+            number: {
+              number: [randomExtend(10, 20)],
+              content: '{nt}',
+              textAlign: 'right',
+              style: {
+                fill: '#4d99fc',
+                fontWeight: 'bold'
+              }
+            },
+            unit: '涓�'
+          },
+          {
+            title: '闅ч亾',
+            number: {
+              number: [randomExtend(5, 10)],
+              content: '{nt}',
+              textAlign: 'right',
+              style: {
+                fill: '#f46827',
+                fontWeight: 'bold'
+              }
+            },
+            unit: '涓�'
+          },
+          {
+            title: '鏈嶅姟鍖�',
+            number: {
+              number: [randomExtend(5, 10)],
+              content: '{nt}',
+              textAlign: 'right',
+              style: {
+                fill: '#40faee',
+                fontWeight: 'bold'
+              }
+            },
+            unit: '涓�'
+          },
+          {
+            title: '鏀惰垂绔�',
+            number: {
+              number: [randomExtend(5, 10)],
+              content: '{nt}',
+              textAlign: 'right',
+              style: {
+                fill: '#4d99fc',
+                fontWeight: 'bold'
+              }
+            },
+            unit: '涓�'
+          },
+          {
+            title: '瓒呴檺绔�',
+            number: {
+              number: [randomExtend(5, 10)],
+              content: '{nt}',
+              textAlign: 'right',
+              style: {
+                fill: '#f46827',
+                fontWeight: 'bold'
+              }
+            },
+            unit: '涓�'
+          },
+          {
+            title: '鍋滆溅鍖�',
+            number: {
+              number: [randomExtend(5, 10)],
+              content: '{nt}',
+              textAlign: 'right',
+              style: {
+                fill: '#40faee',
+                fontWeight: 'bold'
+              }
+            },
+            unit: '涓�'
+          }
+        ]
+      },
+      randomExtend(minNum, maxNum) {
+        if (arguments.length === 1) {
+          return parseInt(Math.random() * minNum + 1, 10)
+        } else {
+          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)
+        }
+      }
+    },
+    mounted() {
+      const {
+        createData
+      } = this
+
+      createData()
+
+      setInterval(createData, 30000)
+    }
+  }
+</script>
+
+<style lang="less">
+  #digital-flop {
+    position: relative;
+    height: 15%;
+    flex-shrink: 0;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    background-color: rgba(6, 30, 93, 0.5);
+
+    .dv-decoration-10 {
+      position: absolute;
+      width: 95%;
+      left: 2.5%;
+      height: 5px;
+      bottom: 0px;
+    }
+
+    .digital-flop-item {
+      width: 11%;
+      height: 80%;
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+      align-items: center;
+      border-left: 3px solid rgb(6, 30, 93);
+      border-right: 3px solid rgb(6, 30, 93);
+    }
+
+    .digital-flop-title {
+      font-size: 20px;
+      margin-bottom: 20px;
+    }
+
+    .digital-flop {
+      display: flex;
+    }
+
+    .unit {
+      margin-left: 10px;
+      display: flex;
+      align-items: flex-end;
+      box-sizing: border-box;
+      padding-bottom: 13px;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/bg.png b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/bg.png
new file mode 100644
index 0000000..dbcebae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/bg.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.jpg b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.jpg
new file mode 100644
index 0000000..8e1c4f7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.png b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.png
new file mode 100644
index 0000000..dfbc8ff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map2.png b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map2.png
new file mode 100644
index 0000000..5e40905
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map2.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapCenterPoint.png b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapCenterPoint.png
new file mode 100644
index 0000000..255f69c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapCenterPoint.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapPoint.png b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapPoint.png
new file mode 100644
index 0000000..bb6c0be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapPoint.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/index.vue
new file mode 100644
index 0000000..000fd32
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/index.vue
@@ -0,0 +1,119 @@
+<template>
+  <div id="data-view">
+    <dv-full-screen-container>
+      <top-header />
+      <div class="main-container">
+        <div class="left1" style="width: 20%;display:flex;flex-direction:column">
+          <dv-border-box-12>
+            <left1 />
+          </dv-border-box-12>
+          <dv-border-box-12>
+            <left12 />
+          </dv-border-box-12>
+        </div>
+        <div class="left2" style="width: 20%;display:flex;flex-direction:column">
+          <dv-border-box-12>
+            <left2 />
+          </dv-border-box-12>
+          <dv-border-box-12>
+            <left22 />
+          </dv-border-box-12>
+          <dv-border-box-12>
+            <left23 />
+          </dv-border-box-12>
+        </div>
+        <div class="middle" style="width: 40%;display:flex;flex-direction:column">
+          <dv-border-box-1 style="height: 15%;">
+            <middle1 />
+          </dv-border-box-1>
+          <dv-border-box-8 style="height: 60%;">
+            <middle2 />
+          </dv-border-box-8>
+          <dv-border-box-1 style="height: 25%;">
+            <middle3 />
+          </dv-border-box-1>
+        </div>
+        <div class="right" style="width:20%;display:flex;flex-direction:column">
+          <dv-border-box-12>
+            <right1 />
+          </dv-border-box-12>
+          <dv-border-box-12>
+            <right2 />
+          </dv-border-box-12>
+          <dv-border-box-12>
+            <right3 />
+          </dv-border-box-12>
+          <dv-border-box-12>
+            <right4 />
+          </dv-border-box-12>
+        </div>
+      </div>
+    </dv-full-screen-container>
+  </div>
+</template>
+
+<script>
+  import topHeader from './topHeader'
+  import left1 from './left1'
+  import left12 from './left12'
+  import left2 from './left2'
+  import left22 from './left22'
+  import left23 from './left23'
+  import right1 from './right1'
+  import right2 from './right2'
+  import right3 from './right3'
+  import right4 from './right4'
+  import middle1 from './middle1'
+  import middle2 from './middle2'
+  import middle3 from './middle3'
+
+  export default {
+    name: 'DataView',
+    components: {
+      topHeader,
+      left1,
+      left12,
+      left2,
+      left22,
+      left23,
+      right1,
+      right2,
+      right3,
+      right4,
+      middle1,
+      middle2,
+      middle3
+    },
+    data() {
+      return {}
+    },
+    methods: {}
+  }
+</script>
+
+<style lang="less">
+  #data-view {
+    width: 100%;
+    height: 100%;
+    background-color: #030409;
+    color: #fff;
+
+    #dv-full-screen-container {
+      background-image: url('./img/bg.png');
+      background-size: 100% 100%;
+      box-shadow: 0 0 3px blue;
+      display: flex;
+      flex-direction: column;
+    }
+
+    .main-container {
+      // height: calc(~"100% - 80px");
+      // flex: 1;
+      height: 100%;
+      padding: 5px;
+      display: flex;
+      box-sizing: border-box;
+      flex-direction: row;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left1.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left1.vue
new file mode 100644
index 0000000..a706a81
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left1.vue
@@ -0,0 +1,70 @@
+<template>
+  <div id="left1">
+    <dv-scroll-board :config="config" />
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'Left1',
+    data() {
+      return {
+        config: {
+          // header: ['鏃堕棿', '鐥呭淇℃伅', '鏁伴噺', '鏍囨'],
+          data: [
+            [
+              '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж1鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;color:#32A1FB;">2019-07-02 17:25:00</span></span>'
+            ],
+            [
+              '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж2鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+            ],
+            [
+              '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж3鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+            ],
+            [
+              '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж4鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+            ],
+            [
+              '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж5鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+            ],
+            [
+              '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж6鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+            ],
+            [
+              '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж7鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+            ],
+            [
+              '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж8鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+            ],
+            [
+              '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж8鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+            ]
+          ],
+          // index: true,
+          // columnWidth: [45],
+          align: ['left'],
+          rowNum: 12,
+          // headerBGC: '#1981f6',
+          // headerHeight: 45,
+          oddRowBGC: 'rgba(0, 44, 81, 0.0)',
+          evenRowBGC: 'rgba(10, 29, 50, 0.0)'
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+  #left1 {
+    width: 100%;
+    height: 100%;
+    box-sizing: border-box;
+    background-color: rgba(6, 30, 93, 0.5);
+
+    .dv-scroll-board {
+      position: absolute;
+      top: 1%;
+      bottom: 0px;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left12.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left12.vue
new file mode 100644
index 0000000..4d6ce24
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left12.vue
@@ -0,0 +1,87 @@
+<template>
+  <div id="left12">
+    <div class="ranking-board-title">
+      鏈烘瀯璇勪及绛夌骇
+      <dv-decoration-6 style="width:200px;height:20px;" />
+    </div>
+    <dv-scroll-ranking-board class="board" :config="config" />
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'Left12',
+    data() {
+      return {
+        config: {
+          data: [{
+              name: 'XXX鏈烘瀯',
+              value: 55
+            },
+            {
+              name: 'XXX鏈烘瀯',
+              value: 120
+            },
+            {
+              name: 'XXX鏈烘瀯',
+              value: 78
+            },
+            {
+              name: 'XXX鏈烘瀯',
+              value: 66
+            },
+            {
+              name: 'XXX鏈烘瀯',
+              value: 80
+            },
+            {
+              name: 'XXX鏈烘瀯',
+              value: 45
+            },
+            {
+              name: 'XXX鏈烘瀯',
+              value: 29
+            },
+            {
+              name: 'XXX鏈烘瀯',
+              value: 29
+            },
+            {
+              name: 'XXX鏈烘瀯',
+              value: 29
+            }
+          ],
+          unit: '鍒�',
+          rowNum: 8
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+  #left12 {
+    width: 100%;
+    height: 100%;
+    box-sizing: border-box;
+    display: flex;
+    flex-direction: column;
+    background-color: rgba(6, 30, 93, 0.5);
+
+    .ranking-board-title {
+      position: absolute;
+      left: 10px;
+      font-size: 14px;
+      top: 10px;
+      color: #6BD4E0;
+    }
+
+    .board {
+      width: 90%;
+      position: absolute;
+      top: 50px;
+      bottom: 40px;
+      padding: 0px 15px;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left2.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left2.vue
new file mode 100644
index 0000000..fd87237
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left2.vue
@@ -0,0 +1,68 @@
+<template>
+  <div class="left2">
+    <div class="lc1-header">
+      鏈嶅姟鏁版嵁
+      <dv-decoration-3 style="width:200px;height:20px;" />
+    </div>
+    <dv-capsule-chart class="lc1-chart" :config="config" />
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'Left2',
+    data() {
+      return {
+        config: {
+          data: [{
+              name: '鏈烘瀯鎬绘暟',
+              value: 150
+            },
+            {
+              name: '搴婁綅鎬绘暟',
+              value: 5000
+            },
+            {
+              name: '鑰佷汉鎬绘暟',
+              value: 10000
+            },
+            {
+              name: '鍛樺伐鎬绘暟',
+              value: 1000
+            }
+          ],
+          colors: ['#00baff', '#3de7c9', '#ffc530', '#469f4b'],
+          showValue: true,
+          unit: '鍗曚綅'
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+  .left2 {
+    width: 100%;
+    //height: 100%;
+    box-sizing: border-box;
+    display: flex;
+    flex-direction: column;
+    background-color: rgba(6, 30, 93, 0.5);
+
+    .lc1-header {
+      position: absolute;
+      left: 10px;
+      font-size: 14px;
+      top: 10px;
+      color: #6BD4E0;
+    }
+
+    .lc1-chart {
+      width: 98%;
+      position: absolute;
+      top: 20%;
+      left: 1%;
+      bottom: 0px;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left22.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left22.vue
new file mode 100644
index 0000000..baad4ef
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left22.vue
@@ -0,0 +1,152 @@
+<template>
+  <div class="left22">
+    <div class="chart-name">
+      浜嬩欢缁熻
+      <dv-decoration-3 style="width:200px;height:20px;" />
+    </div>
+    <dv-charts :option="option" />
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'Left22',
+    data() {
+      return {
+        option: {
+          legend: {
+            data: [{
+                name: '鍟嗗搧璁㈠崟',
+                color: '#00baff'
+              },
+              {
+                name: '鍛煎彨',
+                color: '#ff5ca9'
+              },
+              {
+                name: '鏈嶅姟宸ュ崟',
+                color: '#3de7c9'
+              }
+            ],
+            textStyle: {
+              fill: '#fff'
+            }
+          },
+          xAxis: {
+            data: [
+              '12/01', '12/02', '12/03', '12/04', '12/05', '12/06', '12/07'
+            ],
+            axisLine: {
+              style: {
+                stroke: '#F6F8FA'
+              }
+            },
+            axisLabel: {
+              style: {
+                fill: '#F6F8FA'
+              }
+            },
+            axisTick: {
+              show: false
+            }
+          },
+          yAxis: {
+            data: 'value',
+            splitLine: {
+              show: false
+            },
+            axisLine: {
+              style: {
+                stroke: '#F6F8FA'
+              }
+            },
+            axisLabel: {
+              style: {
+                fill: '#F6F8FA'
+              }
+            },
+            axisTick: {
+              show: false
+            },
+            min: 0,
+            max: 8
+          },
+          series: [{
+              name: '鍟嗗搧璁㈠崟',
+              data: [
+                2.5, 3.5, 6.5, 6.5, 7.5, 6.5, 2.5
+              ],
+              type: 'bar',
+              barStyle: {
+                fill: 'rgba(0, 186, 255, 0.4)'
+              }
+            },
+            {
+              name: '鍛煎彨',
+              data: [
+                2.5, 3.5, 6.5, 6.5, 7.5, 6.5, 2.5
+              ],
+              type: 'line',
+              lineStyle: {
+                stroke: '#ff5ca9'
+              },
+              linePoint: {
+                radius: 4,
+                style: {
+                  fill: '#ff5ca9',
+                  stroke: 'transparent'
+                }
+              }
+            },
+            {
+              name: '鏈嶅姟宸ュ崟',
+              data: [
+                1.3, 2.3, 5.3, 5.3, 6.3, 5.3, 1.3
+              ],
+              type: 'line',
+              smooth: true,
+              lineArea: {
+                show: true,
+                gradient: ['rgba(55, 162, 218, 0.6)', 'rgba(55, 162, 218, 0)']
+              },
+              lineStyle: {
+                lineDash: [5, 5]
+              },
+              linePoint: {
+                radius: 4,
+                style: {
+                  fill: '#00db95'
+                }
+              }
+            }
+          ]
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+  .left22 {
+    width: 100%;
+    height: 100%;
+    box-sizing: border-box;
+    background-color: rgba(6, 30, 93, 0.5);
+
+    .chart-name {
+      position: absolute;
+      left: 10px;
+      font-size: 14px;
+      top: 10px;
+      color: #6BD4E0;
+    }
+
+    .dv-charts-container {
+      width: 98%;
+      position: absolute;
+      top: 1%;
+      left: 1%;
+      bottom: 0px;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left23.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left23.vue
new file mode 100644
index 0000000..b4069c0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left23.vue
@@ -0,0 +1,50 @@
+<template>
+  <div id="left23">
+    <div class="water-level-chart-title">
+      鏈烘瀯璇勪及杩涘害
+      <!-- <dv-decoration-12 style="width:200px;height:20px;" /> -->
+    </div>
+
+    <dv-decoration-9>66%</dv-decoration-9>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'Left23',
+    data() {
+      return {}
+    }
+  }
+</script>
+
+<style lang="less">
+  #left23 {
+    width: 100%;
+    height: 100%;
+    box-sizing: border-box;
+    background-color: rgba(6, 30, 93, 0.5);
+    display: flex;
+    flex-direction: column;
+
+    .water-level-chart-title {
+      position: absolute;
+      left: 10px;
+      font-size: 14px;
+      top: 10px;
+      color: #6BD4E0;
+    }
+
+    .dv-decoration-9 {
+      width: 80%;
+      height: 80%;
+      position: absolute;
+      left: 50%;
+      top: 52%;
+      transform: translate(-50%, -48%);
+      color: #6BD4E0;
+      font-weight: bold;
+      font-size: 40px;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle1.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle1.vue
new file mode 100644
index 0000000..0928ea1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle1.vue
@@ -0,0 +1,121 @@
+<template>
+  <div id="middle1">
+    <div class="digital-flop-item" v-for="item in digitalFlopData" :key="item.title">
+      <div class="digital-flop">
+        <dv-digital-flop :config="item.number" />
+      </div>
+      <div class="digital-flop-title">{{ item.title }}</div>
+    </div>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'Middle1',
+    data() {
+      return {
+        digitalFlopData: []
+      }
+    },
+    methods: {
+      createData() {
+        this.digitalFlopData = [{
+            title: '鏈烘瀯鎬绘暟',
+            number: {
+              number: [150],
+              content: '{nt}',
+              textAlign: 'center',
+              style: {
+                fill: '#40faee',
+                fontWeight: 'bold'
+              }
+            },
+            unit: '涓�'
+          },
+          {
+            title: '搴婁綅鎬绘暟',
+            number: {
+              number: [40000],
+              content: '{nt}',
+              textAlign: 'center',
+              style: {
+                fill: '#40faee',
+                fontWeight: 'bold'
+              }
+            },
+            unit: '涓�'
+          },
+          {
+            title: '鑰佷汉鎬绘暟',
+            number: {
+              number: [98760],
+              content: '{nt}',
+              textAlign: 'center',
+              style: {
+                fill: '#40faee',
+                fontWeight: 'bold'
+              }
+            },
+            unit: '涓�'
+          },
+          {
+            title: '鍛樺伐鎬绘暟',
+            number: {
+              number: [1200],
+              content: '{nt}',
+              textAlign: 'center',
+              style: {
+                fill: '#40faee',
+                fontWeight: 'bold'
+              }
+            },
+            unit: '涓�'
+          }
+        ]
+      }
+    },
+    mounted() {
+      const {
+        createData
+      } = this
+
+      createData()
+    }
+  }
+</script>
+
+<style lang="less">
+  #middle1 {
+    height: 100%;
+    padding: 5px 20px 5px 20px;
+    flex-shrink: 0;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    background-color: rgba(6, 30, 93, 0.5);
+
+    .digital-flop-item {
+      width: 100%;
+      //height: 60%;
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+      align-items: center;
+      border-left: 3px solid rgb(6, 30, 93);
+      border-right: 3px solid rgb(6, 30, 93);
+    }
+
+    .digital-flop-title {
+      font-size: 10px;
+      margin-bottom: 10px;
+      color: #40faee;
+      margin-top: -20px;
+      font-family: "寰蒋闆呴粦";
+    }
+
+    .digital-flop {
+      display: flex;
+      font-family: "榛戜綋";
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle2.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle2.vue
new file mode 100644
index 0000000..7e6e989
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle2.vue
@@ -0,0 +1,157 @@
+<template>
+  <div id="middle2">
+    <dv-flyline-chart-enhanced :config="config" :dev="true" />
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'Middle2',
+    data() {
+      return {
+        config: {
+          points: [{
+              name: '杩愬煄',
+              coordinate: [0.43, 0.66],
+              halo: {
+                show: true
+              },
+              icon: {
+                src: require('./img/mapCenterPoint.png'),
+                width: 30,
+                height: 30
+              },
+              text: {
+                // show: false
+              }
+            },
+            {
+              name: '骞抽檰鍘�',
+              coordinate: [0.53, 0.80]
+            },
+            {
+              name: '鑺煄鍘�',
+              coordinate: [0.27, 0.91]
+            },
+            {
+              name: '姘告祹甯�',
+              coordinate: [0.14, 0.77]
+            },
+            {
+              name: '涓寸寳鍘�',
+              coordinate: [0.31, 0.54]
+            },
+            {
+              name: '澶忓幙',
+              coordinate: [0.55, 0.54]
+            },
+            {
+              name: '鍨f洸鍘�',
+              coordinate: [0.78, 0.42]
+            },
+            {
+              name: '闂诲枩鍘�',
+              coordinate: [0.55, 0.37]
+            },
+            {
+              name: '涓囪崳鍘�',
+              coordinate: [0.35, 0.33]
+            },
+            {
+              name: '缁涘幙',
+              coordinate: [0.73, 0.26]
+            },
+            {
+              name: '鏂扮粵鍘�',
+              coordinate: [0.55, 0.17]
+            },
+            {
+              name: '绋峰北鍘�',
+              coordinate: [0.43, 0.17]
+            },
+            {
+              name: '娌虫触甯�',
+              coordinate: [0.28, 0.18]
+            }
+          ],
+          lines: [{
+              source: '骞抽檰鍘�',
+              target: '杩愬煄'
+            },
+            {
+              source: '鑺煄鍘�',
+              target: '杩愬煄'
+            },
+            {
+              source: '姘告祹甯�',
+              target: '杩愬煄'
+            },
+            {
+              source: '涓寸寳鍘�',
+              target: '杩愬煄'
+            },
+            {
+              source: '澶忓幙',
+              target: '杩愬煄'
+            },
+            {
+              source: '鍨f洸鍘�',
+              target: '杩愬煄'
+            },
+            {
+              source: '闂诲枩鍘�',
+              target: '杩愬煄'
+            },
+            {
+              source: '涓囪崳鍘�',
+              target: '杩愬煄'
+            },
+            {
+              source: '缁涘幙',
+              target: '杩愬煄'
+            },
+            {
+              source: '鏂扮粵鍘�',
+              target: '杩愬煄'
+            },
+            {
+              source: '绋峰北鍘�',
+              target: '杩愬煄'
+            },
+            {
+              source: '娌虫触甯�',
+              target: '杩愬煄'
+            }
+          ],
+          icon: {
+            show: true,
+            src: require('./img/mapPoint.png')
+          },
+          text: {
+            show: true
+          },
+          bgImgSrc: require('./img/map2.png')
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+  #middle2 {
+    width: 100%;
+    height: 100%;
+    box-sizing: border-box;
+    background-color: rgba(6, 30, 93, 0.5);
+
+    .dv-flyline-chart-enhanced {
+      width: 100%;
+      height: 100%;
+      // position: absolute;
+      // top: 5px;
+      // right: 5px;
+      // bottom: 5px;
+      // left: 5px;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle3.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle3.vue
new file mode 100644
index 0000000..b2d06cb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle3.vue
@@ -0,0 +1,208 @@
+<template>
+  <div class="middle3">
+    <div class="bc-chart-item">
+      <div class="bcci-header">XXX鏈烘瀯1</div>
+      <dv-active-ring-chart :config="config1" />
+      <!-- <Label-Tag :config="labelConfig" /> -->
+    </div>
+    <dv-decoration-2 class="decoration-1" :reverse="true" style="width:5px;" />
+
+    <div class="bc-chart-item">
+      <div class="bcci-header">XXX鏈烘瀯2</div>
+      <dv-active-ring-chart :config="config2" />
+      <!-- <Label-Tag :config="labelConfig" /> -->
+    </div>
+
+    <dv-decoration-2 class="decoration-2" :reverse="true" style="width:5px;" />
+
+    <div class="bc-chart-item">
+      <div class="bcci-header">XXX鏈烘瀯3</div>
+      <dv-active-ring-chart :config="config3" />
+      <!-- <Label-Tag :config="labelConfig" /> -->
+    </div>
+
+    <dv-decoration-2 class="decoration-3" :reverse="true" style="width:5px;" />
+
+    <div class="bc-chart-item">
+      <div class="bcci-header">XXX鏈烘瀯4</div>
+      <dv-active-ring-chart :config="config4" />
+      <!-- <Label-Tag :config="labelConfig" /> -->
+    </div>
+
+  </div>
+</template>
+
+<script>
+  // import LabelTag from './LabelTag'
+
+  export default {
+    name: 'Middle3',
+    components: {
+      // LabelTag
+    },
+    data() {
+      return {
+        config1: {
+          data: [{
+              name: '搴婁綅',
+              value: 356
+            },
+            {
+              name: '鍗犲湴闈㈢Н',
+              value: 215
+            },
+            {
+              name: '鎶ょ悊浜哄憳',
+              value: 90
+            },
+            {
+              name: '鍏朵粬',
+              value: 317
+            }
+          ],
+          color: ['#00baff', '#3de7c9', '#fff', '#ffc530', '#469f4b'],
+          radius: '65%',
+          activeRadius: '70%',
+          showOriginValue: true,
+          activeTimeGap: 5000,
+          digitalFlopStyle: {
+            fontSize: 12
+          }
+        },
+
+        config2: {
+          data: [{
+              name: '搴婁綅',
+              value: 615
+            },
+            {
+              name: '鍗犲湴闈㈢Н',
+              value: 322
+            },
+            {
+              name: '鎶ょ悊浜哄憳',
+              value: 198
+            },
+            {
+              name: '鍏朵粬',
+              value: 80
+            }
+          ],
+          color: ['#00baff', '#3de7c9', '#fff', '#ffc530', '#469f4b'],
+          radius: '65%',
+          activeRadius: '70%',
+          showOriginValue: true,
+          activeTimeGap: 5000,
+          digitalFlopStyle: {
+            fontSize: 12
+          }
+        },
+
+        config3: {
+          data: [{
+              name: '搴婁綅',
+              value: 452
+            },
+            {
+              name: '鍗犲湴闈㈢Н',
+              value: 512
+            },
+            {
+              name: '鎶ょ悊浜哄憳',
+              value: 333
+            },
+            {
+              name: '鍏朵粬',
+              value: 255
+            }
+          ],
+          color: ['#00baff', '#3de7c9', '#fff', '#ffc530', '#469f4b'],
+          radius: '65%',
+          activeRadius: '70%',
+          showOriginValue: true,
+          activeTimeGap: 5000,
+          digitalFlopStyle: {
+            fontSize: 12
+          }
+        },
+
+        config4: {
+          data: [{
+              name: '搴婁綅',
+              value: 156
+            },
+            {
+              name: '鍗犲湴闈㈢Н',
+              value: 415
+            },
+            {
+              name: '鎶ょ悊浜哄憳',
+              value: 90
+            },
+            {
+              name: '鍏朵粬',
+              value: 210
+            }
+          ],
+          color: ['#00baff', '#3de7c9', '#fff', '#ffc530', '#469f4b'],
+          radius: '65%',
+          activeRadius: '70%',
+          showOriginValue: true,
+          activeTimeGap: 5000,
+          digitalFlopStyle: {
+            fontSize: 12
+          }
+        }
+        // labelConfig: {
+        // 	data: ['鏀惰垂绔�', '鐩戞帶涓績', '閬撹矾澶栧満', '鍏朵粬']
+        // }
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+  .middle3 {
+    width: 100%;
+    height: 100%;
+    display: flex;
+    position: relative;
+    background-color: rgba(6, 30, 93, 0.5);
+
+    .bc-chart-item {
+      width: 25%;
+      height: 100%;
+      padding-top: 20px;
+      box-sizing: border-box;
+    }
+
+    .bcci-header {
+      height: 50px;
+      text-align: center;
+      line-height: 50px;
+      font-size: 14px;
+      color: #6BD4E0;
+    }
+
+    .dv-active-ring-chart {
+      height: calc(~"100% - 80px");
+      font-size: 5px;
+    }
+
+    .label-tag {
+      height: 30px;
+    }
+
+    .active-ring-name {
+      color: #6BD4E0 !important;
+      font-size: 3px !important;
+    }
+
+    .decoration-1,
+    .decoration-2,
+    .decoration-3 {
+      display: absolute;
+      left: 0%;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/rankingBoard.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/rankingBoard.vue
new file mode 100644
index 0000000..eff2713
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/rankingBoard.vue
@@ -0,0 +1,81 @@
+<template>
+  <div id="ranking-board">
+    <div class="ranking-board-title">宸℃煡涓婃姤璁板綍鏁伴噺</div>
+    <dv-scroll-ranking-board :config="config" />
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'RankingBoard',
+    data() {
+      return {
+        config: {
+          data: [{
+              name: '鏃ュ父鍏绘姢',
+              value: 55
+            },
+            {
+              name: '浜ら�氫簨鏁�',
+              value: 120
+            },
+            {
+              name: '璺潰',
+              value: 78
+            },
+            {
+              name: '妗ラ��',
+              value: 66
+            },
+            {
+              name: '璁℃棩宸�',
+              value: 80
+            },
+            {
+              name: '璺熀',
+              value: 45
+            },
+            {
+              name: '浜ゅ畨璁炬柦',
+              value: 29
+            },
+            {
+              name: '闄ら洩',
+              value: 29
+            },
+            {
+              name: '缁垮寲',
+              value: 29
+            }
+          ],
+          rowNum: 9
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+  #ranking-board {
+    width: 20%;
+    box-shadow: 0 0 3px blue;
+    display: flex;
+    flex-direction: column;
+    background-color: rgba(6, 30, 93, 0.5);
+    border-top: 2px solid rgba(1, 153, 209, .5);
+    box-sizing: border-box;
+    padding: 0px 30px;
+
+    .ranking-board-title {
+      font-weight: bold;
+      height: 50px;
+      display: flex;
+      align-items: center;
+      font-size: 20px;
+    }
+
+    .dv-scroll-ranking-board {
+      flex: 1;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right1.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right1.vue
new file mode 100644
index 0000000..f085869
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right1.vue
@@ -0,0 +1,109 @@
+<template>
+  <div id="right1">
+    <div class="rose-chart-title">
+      骞撮緞鍒嗗竷
+      <dv-decoration-3 style="width:200px;height:20px;" />
+    </div>
+    <dv-charts :option="option" />
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'Right1',
+    data() {
+      return {
+        option: {}
+      }
+    },
+    methods: {
+      createData() {
+        const {
+          randomExtend
+        } = this
+
+        this.option = {
+          series: [{
+            type: 'pie',
+            radius: '80%',
+            roseSort: false,
+            data: [{
+                name: '60-69宀�',
+                value: randomExtend(40, 70)
+              },
+              {
+                name: '70-79宀�',
+                value: randomExtend(20, 30)
+              },
+              {
+                name: '80-89宀�',
+                value: randomExtend(10, 50)
+              },
+              {
+                name: '90-99宀�',
+                value: randomExtend(5, 20)
+              },
+              {
+                name: '鍏朵粬',
+                value: randomExtend(40, 50)
+              }
+            ],
+            insideLabel: {
+              show: true
+            },
+            outsideLabel: {
+              formatter: '{name} {percent}%',
+              labelLineEndLength: 10,
+              style: {
+                fill: '#fff'
+              },
+              labelLineStyle: {
+                stroke: '#fff'
+              }
+            }
+            // roseType: true
+          }],
+          color: ['#00baff', '#fa3600', '#3de7c9', '#ff724c', '#ffc530', '#469f4b', '#a02200', '#5d1400', '#b72700']
+        }
+      },
+      randomExtend(minNum, maxNum) {
+        if (arguments.length === 1) {
+          return parseInt(Math.random() * minNum + 1, 10)
+        } else {
+          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)
+        }
+      }
+    },
+    mounted() {
+      const {
+        createData
+      } = this
+
+      createData()
+
+      setInterval(createData, 30000)
+    }
+  }
+</script>
+
+<style lang="less">
+  #right1 {
+    width: 100%;
+    height: 100%;
+    //box-sizing: border-box;
+    background-color: rgba(6, 30, 93, 0.5);
+
+    .rose-chart-title {
+      position: absolute;
+      left: 10px;
+      font-size: 14px;
+      top: 10px;
+      color: #6BD4E0;
+    }
+
+    .dv-charts-container {
+      height: calc(~"100% - 50px");
+      padding-top: 13%;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right2.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right2.vue
new file mode 100644
index 0000000..d073fb4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right2.vue
@@ -0,0 +1,65 @@
+<template>
+  <div class="right2">
+    <div class="chart-name">
+      鑰佷汉绫诲瀷
+      <dv-decoration-1 style="width:200px;height:20px;" />
+    </div>
+    <dv-conical-column-chart :config="config" />
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'Right2',
+    data() {
+      return {
+        config: {
+          data: [{
+              name: '涓変簲鑰佷汉',
+              value: 3500
+            },
+            {
+              name: '浜斾繚鑰佷汉',
+              value: 2500
+            },
+            {
+              name: '绀句細浠e吇',
+              value: 2000
+            },
+            {
+              name: '鍏朵粬',
+              value: 1000
+            }
+          ],
+          img: [],
+          showValue: true
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+  .right2 {
+    width: 100%;
+    height: 100%;
+    box-sizing: border-box;
+    background-color: rgba(6, 30, 93, 0.5);
+
+    .chart-name {
+      position: absolute;
+      left: 10px;
+      font-size: 14px;
+      top: 10px;
+      color: #6BD4E0;
+    }
+
+    .dv-conical-column-chart {
+      // width: 98%;
+      // position: absolute;
+      // top: 20%;
+      // left: 2px;
+      // bottom: 0px;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right3.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right3.vue
new file mode 100644
index 0000000..a778c4d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right3.vue
@@ -0,0 +1,72 @@
+<template>
+  <div class="right3">
+    <div class="lc1-header">
+      搴婁綅鎯呭喌
+      <dv-decoration-3 style="width:200px;height:20px;" />
+    </div>
+    <dv-capsule-chart class="lc1-chart" :config="config" />
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'Right3',
+    data() {
+      return {
+        config: {
+          data: [{
+              name: '浣跨敤',
+              value: 3000
+            },
+            {
+              name: '绌洪棽',
+              value: 1000
+            },
+            {
+              name: '棰勭害',
+              value: 5000
+            },
+            {
+              name: '鍖呮埧',
+              value: 200
+            },
+            {
+              name: '鍏朵粬',
+              value: 1000
+            }
+          ],
+          colors: ['#00baff', '#3de7c9', '#ffc530', '#FA3600', '#44934b'],
+          showValue: true,
+          unit: '寮�'
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+  .right3 {
+    width: 100%;
+    height: 100%;
+    box-sizing: border-box;
+    display: flex;
+    flex-direction: column;
+    background-color: rgba(6, 30, 93, 0.5);
+
+    .lc1-header {
+      position: absolute;
+      left: 10px;
+      font-size: 14px;
+      top: 10px;
+      color: #6BD4E0;
+    }
+
+    .lc1-chart {
+      width: 98%;
+      position: absolute;
+      top: 20%;
+      left: 1%;
+      bottom: 0px;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right4.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right4.vue
new file mode 100644
index 0000000..967d067
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right4.vue
@@ -0,0 +1,106 @@
+<template>
+  <div class="right4">
+    <div class="chart-name">
+      鏈嶅姟鍣ㄧ姸鎬�
+      <dv-decoration-3 style="width:200px;height:20px;" />
+    </div>
+    <dv-charts :option="option" />
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'Right4',
+    data() {
+      return {
+        option: {
+          // title: {
+          // 	text: '鍛ㄩ攢鍞瓒嬪娍'
+          // },
+          xAxis: {
+            // name: '绗簩鍛�',
+            data: ['鍛ㄤ竴', '鍛ㄤ簩', '鍛ㄤ笁', '鍛ㄥ洓', '鍛ㄤ簲', '鍛ㄥ叚', '鍛ㄦ棩'],
+            axisLine: {
+              style: {
+                stroke: '#F6F8FA'
+              }
+            },
+            axisLabel: {
+              style: {
+                fill: '#F6F8FA'
+              }
+            },
+            axisTick: {
+              show: false
+            }
+          },
+          yAxis: {
+            // name: '閿�鍞',
+            data: 'value',
+            splitLine: {
+              show: false
+            },
+            axisLine: {
+              style: {
+                stroke: '#F6F8FA'
+              }
+            },
+            axisLabel: {
+              style: {
+                fill: '#F6F8FA'
+              }
+            },
+            axisTick: {
+              show: false
+            }
+          },
+          series: [{
+            data: [1200, 2230, 1900, 2100, 3500, 4200, 3985],
+            type: 'line',
+            lineArea: {
+              show: true,
+              gradient: ['rgba(55, 162, 218, 0.6)', 'rgba(55, 162, 218, 0)']
+            },
+            label: {
+              show: true,
+              formatter: '{value}'
+            },
+            smooth: true,
+            lineStyle: {
+              lineDash: [5, 5]
+            },
+            linePoint: {
+              radius: 0
+            }
+          }]
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+  .right4 {
+    width: 100%;
+    height: 100%;
+    box-sizing: border-box;
+    background-color: rgba(6, 30, 93, 0.5);
+
+    .chart-name {
+      position: absolute;
+      left: 10px;
+      font-size: 14px;
+      top: 10px;
+      color: #6BD4E0;
+    }
+
+    .dv-charts-container {
+      //height: calc(~"100% - 40px");
+      //padding-top: 35px 10px 10px 10px;
+      height: 100%;
+      top: 10%;
+      left: 4%;
+      position: absolute;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/scrollBoard.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/scrollBoard.vue
new file mode 100644
index 0000000..a64ca29
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/scrollBoard.vue
@@ -0,0 +1,48 @@
+<template>
+  <div id="scroll-board">
+    <dv-scroll-board :config="config" />
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'ScrollBoard',
+    data() {
+      return {
+        config: {
+          header: ['鏃堕棿', '鐥呭淇℃伅', '鏁伴噺', '鏍囨'],
+          data: [
+            ['2019-07-01 19:25:00', '璺潰鍗卞-鏉炬暎', '5', 'xxxxxxx'],
+            ['2019-07-02 17:25:00', '璺潰鍗卞-璺潰娌规薄娓呯悊', '13', 'xxxxxxx'],
+            ['2019-07-03 16:25:00', '浜ゅ畨璁炬柦-浜ら�氭爣蹇楃墝缁撴瀯', '6', 'xxxxxxx'],
+            ['2019-07-04 15:25:00', '璺熀鍗卞-闃插皹缃�', '2', 'xxxxxxx'],
+            ['2019-07-05 14:25:00', '浜ゅ畨璁炬柦-浜ら�氭爣蹇楃墝缁撴瀯', '1', 'xxxxxxx'],
+            ['2019-07-06 13:25:00', '璺潰鍗卞-鏉炬暎', '3', 'xxxxxxx'],
+            ['2019-07-07 12:25:00', '璺熀鍗卞-闃插皹缃�', '4', 'xxxxxxx'],
+            ['2019-07-08 11:25:00', '璺潰鍗卞-璺潰娌规薄娓呯悊', '2', 'xxxxxxx'],
+            ['2019-07-09 10:25:00', '浜ゅ畨璁炬柦-浜ら�氭爣蹇楃墝缁撴瀯', '5', 'xxxxxxx'],
+            ['2019-07-10 09:25:00', '璺熀鍗卞-闃插皹缃�', '3', 'xxxxxxx']
+          ],
+          index: true,
+          columnWidth: [50, 170, 300],
+          align: ['center'],
+          rowNum: 7,
+          headerBGC: '#1981f6',
+          headerHeight: 45,
+          oddRowBGC: 'rgba(0, 44, 81, 0.8)',
+          evenRowBGC: 'rgba(10, 29, 50, 0.8)'
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+  #scroll-board {
+    width: 50%;
+    box-sizing: border-box;
+    margin-left: 20px;
+    height: 100%;
+    overflow: hidden;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/topHeader.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/topHeader.vue
new file mode 100644
index 0000000..38c8cac
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/topHeader.vue
@@ -0,0 +1,103 @@
+<template>
+  <div id="top-header">
+    <dv-decoration-8 class="header-left-decoration" />
+    <dv-decoration-5 class="header-center-decoration" />
+    <dv-decoration-8 class="header-right-decoration" :reverse="true" />
+    <div class="center-title">鏅烘収鍏昏�佹湇鍔℃暟鎹腑蹇�</div>
+    <div class="title-time">{{ dateFormat(date) }}</div>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'TopHeader',
+    data() {
+      return {
+        date: new Date()
+      }
+    },
+    methods: {
+      dateFormat(time) {
+        var date = new Date(time)
+        return date.toLocaleString('zh-Hans-CN', {
+          // timeZone:['UTC'],
+          weekday: 'long',
+          hours12: false,
+          year: 'numeric',
+          month: '2-digit',
+          day: '2-digit',
+          hour: '2-digit',
+          minute: '2-digit',
+          second: '2-digit'
+        })
+
+        // var year = date.getFullYear();
+        // /* 鍦ㄦ棩鏈熸牸寮忎腑锛屾湀浠芥槸浠�0寮�濮嬬殑锛屽洜姝よ鍔�0
+        //  * 浣跨敤涓夊厓琛ㄨ揪寮忓湪灏忎簬10鐨勫墠闈㈠姞0锛屼互杈惧埌鏍煎紡缁熶竴  濡� 09:11:05
+        //  * */
+        // var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
+        // var day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+        // var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
+        // var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
+        // var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
+        // var show_day = new Array('鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�', '鏄熸湡鏃�');
+        // // 鎷兼帴
+        // return year + "骞�" + month + "鏈�" + day + "鏃� " + hours + ":" + minutes + ":" + seconds;
+      }
+    },
+    mounted() {
+      const _this = this
+      this.timer = setInterval(() => {
+        _this.date = new Date()
+      }, 1000)
+    },
+    beforeDestroy() {
+      if (this.timer) {
+        clearInterval(this.timer)
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+  #top-header {
+    position: relative;
+    width: 100%;
+    height: 100px;
+    display: flex;
+    justify-content: space-between;
+    flex-shrink: 0;
+
+    .header-center-decoration {
+      width: 40%;
+      height: 80px;
+      margin-top: 30px;
+    }
+
+    .header-left-decoration,
+    .header-right-decoration {
+      width: 25%;
+      height: 60px;
+    }
+
+    .center-title {
+      position: absolute;
+      font-size: 28px;
+      font-weight: bold;
+      left: 50%;
+      top: 15px;
+      transform: translateX(-50%);
+      color: #40FAEE;
+    }
+
+    .title-time {
+      position: absolute;
+      font-size: 10px;
+      //font-weight: bold;
+      left: 50%;
+      top: 55px;
+      color: #6BD4E0;
+      transform: translateX(-50%);
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/addForm.vue
new file mode 100644
index 0000000..5195d55
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/addForm.vue
@@ -0,0 +1,117 @@
+锘�<template>
+  <a-modal
+    title="鏂板瀛︾敓淇℃伅琛�3-鍒樻枃濂�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+		<a-form :form="form">
+        <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+        </a-form-item>
+        <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+        </a-form-item>
+        <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+            <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鍒涘缓鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" v-decorator="['createdTime']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鏇存柊鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏇存柊鏃堕棿" v-decorator="['updatedTime']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鍒涘缓鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�" v-decorator="['createdUserName']" />
+        </a-form-item>
+        <a-form-item label="淇敼鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�" v-decorator="['updatedUserName']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+  TestStudent3Add
+  } from '@/api/modular/main/test/TestStudent3Manage'
+  export default {
+  data () {
+  return {
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  genderData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+
+        });
+        const genderOption = this.$options
+        this.genderData = genderOption.filters['dictData']('sex')
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+              }
+            }
+            TestStudent3Add(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/editForm.vue
new file mode 100644
index 0000000..1f7bd3e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/editForm.vue
@@ -0,0 +1,140 @@
+锘�<template>
+  <a-modal
+    title="缂栬緫瀛︾敓淇℃伅琛�3-鍒樻枃濂�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+        </a-form-item>
+        <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+        </a-form-item>
+        <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+        </a-form-item>
+        <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+        </a-form-item>
+        <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+            <a-select-option v-for="(item,index) in genderData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+        <a-form-item label="鍒涘缓鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" v-decorator="['createdTime']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鏇存柊鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏇存柊鏃堕棿" v-decorator="['updatedTime']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+        </a-form-item>
+        <a-form-item label="鍒涘缓鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�" v-decorator="['createdUserName']" />
+        </a-form-item>
+        <a-form-item label="淇敼鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�" v-decorator="['updatedUserName']" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+  import {
+  TestStudent3Edit
+  } from '@/api/modular/main/test/TestStudent3Manage'
+  export default {
+  data () {
+  return {
+  Id: 0,
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  record: {},
+  genderData: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+	moment,
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+        const genderOption = this.$options
+        this.genderData = genderOption.filters['dictData']('sex')
+        this.$nextTick(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              name: record.name,
+              age: record.age,
+              hasMoney: record.hasMoney,
+              startName: record.startName,
+              gender: record.gender,
+              brithDate: record.brithDate,
+              createdTime: record.createdTime,
+              updatedTime: record.updatedTime,
+              createdUserName: record.createdUserName,
+              updatedUserName: record.updatedUserName
+            }
+          )
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            for (const key in values) {
+              if (values[key] == null) continue
+              if (typeof (values[key]) === 'object') {
+                values[key] = JSON.stringify(values[key])
+                 this.record[key] = values[key]
+              } else {
+                 this.record[key] = values[key]
+              }
+            }
+            TestStudent3Edit(this.record).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', this.record)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          }else{
+            this.confirmLoading = false
+          } 
+        });
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/excelForm.vue
new file mode 100644
index 0000000..d0a187a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @cancel="handleCancel"
+    @ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <!--<a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>-->
+      </a-row>
+      <a-row :span="24">
+        <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>-->
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @click="testStudent3DownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+	import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+	import { TestStudent3FromExcel, TestStudent3DownloadExcelTemplate} from '@/api/modular/main/test/TestStudent3Manage'
+	import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+	export default {
+	components: {
+	},
+	data() {
+	return {
+	visible: false,
+	detailed: false,
+	confirmLoading: false,
+	fileList: [],
+	importExcelTypeData: [],
+	importExcelType: '1',
+	uploadFile: null,
+	columns: [],
+	dataList: [],
+	demandText:'',
+	columnText: ''
+	}
+	},
+	methods: {
+	index() {
+	this.visible = true;
+	this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+	this.demandText = parseDemandText("testStudent3DownloadExcelTemplate")
+	window.downloadFile = this.testStudent3DownloadExcelTemplate;
+	this.getTable();
+	},
+	showDemand() {
+	this.detailed = !this.detailed;
+	},
+	customRequest(document) {
+	this.uploadFile = document
+	},
+	getTable() {
+	sysExcelTemplateGetColumnList({className: "TestStudent3"}).then(res =>
+	{
+	if (res.success) {
+	this.columns =[];
+	this.dataList = [{}];
+	res.data.forEach(x => {
+	this.columns.push({
+	dataIndex: x.columnName,
+	key: x.columnName,
+	title: x.columnComment
+	});
+	this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+	});
+	this.columnText = parseExcelFieldText(res.data);
+	}
+	});
+	},
+	beforeUpload(fileInfo) {
+	let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+	if (!res.success) {
+	this.$message.warning(res.msg)
+	return false
+	}
+	setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+	},
+	handleChange(fileInfo) {
+	if (fileInfo.file.status === 'error') {
+	fileInfo.fileList.splice(0, 1)
+	}
+	if (fileInfo.file.status === 'done') {
+	if (fileInfo.fileList.length > 1) {
+	fileInfo.fileList.splice(0, 1)
+	}
+	this.fileList = fileInfo.file
+	}
+	},
+	handleSubmit() {
+	this.confirmLoading = true
+	const formData = new FormData()
+	formData.append('file', this.uploadFile.file)
+	TestStudent3FromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+	this.$message.success('鎿嶄綔鎴愬姛')
+	this.confirmLoading = false
+	this.$emit('ok', [])
+	this.handleCancel()
+	}).finally((res)=>{this.confirmLoading = false})
+	},
+	handleCancel() {
+	this.visible = false
+	this.detailed = false
+	},
+	testStudent3DownloadExcelTemplate() {
+	TestStudent3DownloadExcelTemplate({version: "v2"}).then((res) => {
+	downloadFile(res);
+	}).catch((err) => {
+	this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+	})
+	}
+	}
+	}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/index.vue
new file mode 100644
index 0000000..caeb8f5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/index.vue
@@ -0,0 +1,503 @@
+锘�<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+	<div ref="boxForm" class="boxForm">  
+    <a-card :bordered="false" :bodyStyle="tstyle">
+
+      <div class="table-page-search-wrapper" v-if="hasPerm('TestStudent3:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瀛︾敓濮撳悕">
+                <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ鐢熷鍚�"/>
+              </a-form-item>
+            </a-col><a-col :md="8" :sm="24">
+              <a-form-item label="瀛︾敓骞撮緞">
+                <a-input-number v-model="queryParam.age" style="width: 100%" allow-clear placeholder="璇疯緭鍏ュ鐢熷勾榫�"/>
+              </a-form-item>
+            </a-col><template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="闆惰姳閽�">
+                  <a-input v-model="queryParam.hasMoney" allow-clear placeholder="璇疯緭鍏ラ浂鑺遍挶"/>
+                </a-form-item>
+              </a-col>
+			<a-col :md="8" :sm="24">
+				<a-form-item label="鏄惁鍦ㄦ牎">
+					<a-select :allowClear="true" style="width: 100%" v-model="queryParam.startName" placeholder="璇烽�夋嫨鏄惁鍦ㄦ牎">
+						<a-select-option v-for="(item,index) in startNameData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+					</a-select>
+				</a-form-item>
+			</a-col>
+		<a-col :md="8" :sm="24">
+                <a-form-item label="鎬у埆">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.gender" placeholder="璇烽�夋嫨鎬у埆">
+                    <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>          <!--骞存湀鏃ユ椂鍒嗙-->
+			<!--鏃堕棿鑼冨洿-->
+
+				<a-col :md="8" :sm="24">
+					<a-form-item label="鍑虹敓鏃ユ湡">
+						<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.brithDate"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @change="onChangebrithDate"/>
+
+					</a-form-item>
+				</a-col>
+			          <!--骞存湀鏃ユ椂鍒嗙-->
+			<!--鏃堕棿鑼冨洿-->
+
+				<a-col :md="8" :sm="24">
+					<a-form-item label="鍒涘缓鏃堕棿">
+						<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.createdTime"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @change="onChangecreatedTime"/>
+
+					</a-form-item>
+				</a-col>
+			          <!--骞存湀鏃ユ椂鍒嗙-->
+			<!--鏃堕棿鑼冨洿-->
+
+				<a-col :md="8" :sm="24">
+					<a-form-item label="鏇存柊鏃堕棿">
+						<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.updatedTime"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @change="onChangeupdatedTime"/>
+
+					</a-form-item>
+				</a-col>
+			
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍒涘缓鑰呭悕绉�">
+                  <a-input v-model="queryParam.createdUserName" allow-clear placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="淇敼鑰呭悕绉�">
+                  <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�"/>
+                </a-form-item>
+              </a-col>	</template>
+
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+
+          </a-row>
+        </a-form>
+      </div>
+    </a-card>
+	</div>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+		:scroll="{x: true,y:tableHeight}"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('TestStudent3:add')" >
+		<div ref="actionBar" class="actionBar">
+          <a-button type="info" v-if="hasPerm('TestStudent3:exportExcel')" icon="download" @click="TestStudent3ToExcel()">
+            瀵煎嚭
+          </a-button>
+		</div>
+		</template>
+		  <span slot="startNamescopedSlots" slot-scope="text">
+			<div v-if="text===true ">
+				<a-tag color="green">鏄�</a-tag>
+			</div>
+			<div v-else-if="text==false">
+				<a-tag color="volcano">鍚�</a-tag>
+			</div>
+			<div v-else=""></div>
+			</span>
+		  <span slot="genderscopedSlots" slot-scope="text">
+			{{ 'sex' | dictType(text) }}
+			</span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+	  <excel-form ref="excelForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+	import { STable } from '@/components'
+	import moment from 'moment'
+	import { TestStudent3Page, TestStudent3Delete, TestStudent3ToExcel } from '@/api/modular/main/test/TestStudent3Manage'
+	//鑷畾涔塼able楂樺害
+	import setTableHtMixin from '@/mixins/handleTableHt.js'
+	import addForm from './addForm.vue'
+	import { exportExcel } from '@/utils/exportToExcel'
+	import { downloadFile } from '@/utils/util'
+	import editForm from './editForm.vue'
+	import excelForm from './excelForm.vue'
+	export default {
+	mixins: [setTableHtMixin],
+	components: {
+	STable,
+	addForm,
+	editForm,
+	excelForm
+	},
+	data () {
+	return {
+	advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+	queryParam: {},
+	columns: [
+	{
+	title:'搴忓彿',
+	width: '60px',
+	align: 'center',
+	customRender: (text, record, index) => `${index + 1}`,
+	},
+	{
+	title: '瀛︾敓濮撳悕',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'name'
+	},
+	{
+	title: '瀛︾敓骞撮緞',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '80px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '80px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'age'
+	},
+	{
+	title: '闆惰姳閽�',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'hasMoney'
+	},
+	{
+	title: '鏄惁鍦ㄦ牎',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'startName',
+	scopedSlots: { customRender: 'startNamescopedSlots' }
+	},
+	{
+	title: '鎬у埆',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'gender',
+	scopedSlots: { customRender: 'genderscopedSlots' }
+	},
+	{
+	title: '鍑虹敓鏃ユ湡',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'brithDate'
+	},
+	{
+	title: '鍒涘缓鏃堕棿',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'createdTime'
+	},
+	{
+	title: '鏇存柊鏃堕棿',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'updatedTime'
+	},
+	{
+	title: '鍒涘缓鑰呭悕绉�',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'createdUserName'
+	},
+	{
+	title: '淇敼鑰呭悕绉�',
+	align: 'center',
+	customHeaderCell: () => {
+	return {
+	 style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	 }
+	 }
+	},
+	customCell: () => {
+	return {
+	style: {
+	'min-width': '120px'//鏈�灏忓垪瀹借缃�
+	}
+	}
+	},
+	sorter: true,
+	dataIndex: 'updatedUserName'
+	}
+	],
+	tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+	// 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+	loadData: parameter => {
+	return TestStudent3Page(Object.assign(parameter, this.switchingDate())).then((res) => {
+	return res.data
+	})
+	},
+        genderData: [],
+	selectedRowKeys: [],
+	selectedRows: []
+	}
+	},
+	created () {
+	const path = this.$route.path
+	const columnStr = window.localStorage.getItem(path)
+	if(columnStr) {
+	var _columns = JSON.parse(columnStr)
+	this.columns.forEach(element => {
+	var fObj = _columns.find((item, index) => {
+	return item.dataIndex === element.dataIndex;
+	})
+	if(fObj!=undefined && fObj!=null){
+	element.checked=fObj.checked;
+	}
+	});
+	}
+	const startNameOption = this.$options
+	this.startNameData = startNameOption.filters['dictData']('yes_true_false')
+	const genderOption = this.$options
+	this.genderData = genderOption.filters['dictData']('sex')
+
+	this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+	window.addEventListener(
+	'resize',
+	() => {
+	this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+	},
+	false
+	)
+	
+	},
+	methods: {
+	moment,
+	/**
+	* 鏌ヨ鍙傛暟缁勮
+	*/
+	switchingDate () {
+	const obj = JSON.parse(JSON.stringify(this.queryParam))
+	return obj
+	},
+	TestStudent3Delete (record) {
+	TestStudent3Delete(record).then((res) => {
+	if (res.success) {
+	this.$message.success('鍒犻櫎鎴愬姛')
+	this.$refs.table.refresh()
+	} else {
+	this.$message.error('鍒犻櫎澶辫触') // + res.message
+	}
+	})
+	},
+
+
+	TestStudent3ToExcel() {
+	this.loading = true
+	let entozh = {};
+	const path = this.$route.path;
+	if (window.localStorage.getItem(path)) {
+	JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+	if (item.dataIndex != 'action' && item.checked) {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	} else { //鐩存帴鐐瑰鍑�
+	this.columns.forEach(item => {
+	if (item.dataIndex != 'action') {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	}
+	TestStudent3Page(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+	this.loading = false;
+	//闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+	var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+	res.data.rows.forEach(item => {
+	var arrKeys = Object.keys(item);
+	arrKeys.forEach(key => {
+	var strFieldDic = key + 'Data';
+	//鏋氫妇杞��
+	if (this[strFieldDic] && this[strFieldDic].length > 0) {
+	let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+	if (arrFieldDic.length > 0) {
+	item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+	}
+	}
+	// 鏃ユ湡鎴彇
+	if (arrDataCutout.length > 0) {
+	arrDataCutout.forEach(itemIn => {
+	if (key == itemIn.dataIndex && item[key]) {
+	item[key] = item[key].split(" ")[0]
+	}
+	})
+	}
+	});
+	})
+	exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+	}).catch((err) => {
+	this.loading = false
+	this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+	})
+	},
+
+
+	toggleAdvanced () {
+	this.advanced = !this.advanced
+	this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+	},
+	onChangebrithDate(date, dateString) {
+	  this.queryParam.brithDate = dateString
+	},
+	onChangecreatedTime(date, dateString) {
+	  this.queryParam.createdTime = dateString
+	},
+	onChangeupdatedTime(date, dateString) {
+	  this.queryParam.updatedTime = dateString
+	},
+	handleOk () {
+	this.$refs.table.refresh()
+	},
+	onSelectChange (selectedRowKeys, selectedRows) {
+	this.selectedRowKeys = selectedRowKeys
+	this.selectedRows = selectedRows
+	}
+	}
+	}
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/README.md b/iWare_RawMaterialWarehouse_Web/src/views/system/README.md
new file mode 100644
index 0000000..46aab4d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/README.md
@@ -0,0 +1 @@
+/** 姝ゆ枃浠跺す涓嬩唬鐮佸敖閲忎笉瑕佸姩锛屽簳搴у崌绾х洿鎺ヨ鐩栨浛鎹� **/
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/Index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/Index.vue
new file mode 100644
index 0000000..e2ffd4a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/Index.vue
@@ -0,0 +1,308 @@
+<template>
+  <div class="page-header-index-wide page-header-wrapper-grid-content-main">
+    <a-row :gutter="24">
+      <a-col :md="24" :lg="7">
+        <a-card :bordered="false">
+          <div class="account-center-avatarHolder">
+            <div class="avatar">
+              <img :src="avatar()">
+            </div>
+            <div class="username">{{ nickname() }}</div>
+            <div class="bio">娴风撼鐧惧窛锛屾湁瀹逛箖澶�</div>
+          </div>
+          <div class="account-center-detail">
+            <p>
+              <i class="title"></i>浜や簰涓撳
+            </p>
+            <p>
+              <i class="group"></i>铓傝殎閲戞湇锛嶆煇鏌愭煇浜嬩笟缇わ紞鏌愭煇骞冲彴閮紞鏌愭煇鎶�鏈儴锛峌ED
+            </p>
+            <p>
+              <i class="address"></i>
+              <span>娴欐睙鐪�</span>
+              <span>鏉窞甯�</span>
+            </p>
+          </div>
+          <a-divider/>
+
+          <div class="account-center-tags">
+            <div class="tagsTitle">鏍囩</div>
+            <div>
+              <template v-for="(tag, index) in tags">
+                <a-tooltip v-if="tag.length > 20" :key="tag" :title="tag">
+                  <a-tag
+                    :key="tag"
+                    :closable="index !== 0"
+                  >{{ `${tag.slice(0, 20)}...` }}</a-tag>
+                </a-tooltip>
+                <a-tag
+                  v-else
+                  :key="tag"
+                  :closable="index !== 0"
+                >{{ tag }}</a-tag>
+              </template>
+              <a-input
+                v-if="tagInputVisible"
+                ref="tagInput"
+                type="text"
+                size="small"
+                :style="{ width: '78px' }"
+                :value="tagInputValue"
+                @change="handleInputChange"
+                @blur="handleTagInputConfirm"
+                @keyup.enter="handleTagInputConfirm"
+              />
+              <a-tag v-else @click="showTagInput" style="background: #fff; borderStyle: dashed;">
+                <a-icon type="plus"/>New Tag
+              </a-tag>
+            </div>
+          </div>
+          <a-divider :dashed="true"/>
+
+          <div class="account-center-team">
+            <div class="teamTitle">鍥㈤槦</div>
+            <a-spin :spinning="teamSpinning">
+              <div class="members">
+                <a-row>
+                  <a-col :span="12" v-for="(item, index) in teams" :key="index">
+                    <a>
+                      <a-avatar size="small" :src="item.avatar"/>
+                      <span class="member">{{ item.name }}</span>
+                    </a>
+                  </a-col>
+                </a-row>
+              </div>
+            </a-spin>
+          </div>
+        </a-card>
+      </a-col>
+      <a-col :md="24" :lg="17">
+        <a-card
+          style="width:100%"
+          :bordered="false"
+          :tabList="tabListNoTitle"
+          :activeTabKey="noTitleKey"
+          @tabChange="key => handleTabChange(key, 'noTitleKey')"
+        >
+          <article-page v-if="noTitleKey === 'article'"></article-page>
+          <app-page v-else-if="noTitleKey === 'app'"></app-page>
+          <project-page v-else-if="noTitleKey === 'project'"></project-page>
+        </a-card>
+      </a-col>
+    </a-row>
+  </div>
+</template>
+
+<script>
+import { PageView, RouteView } from '@/layouts'
+import { AppPage, ArticlePage, ProjectPage } from './page'
+import { mapGetters } from 'vuex'
+
+export default {
+  components: {
+    RouteView,
+    PageView,
+    AppPage,
+    ArticlePage,
+    ProjectPage
+  },
+  data () {
+    return {
+      tags: ['寰堟湁鎯虫硶鐨�', '涓撴敞璁捐', '杈', '澶ч暱鑵�', '宸濆瀛�', '娴风撼鐧惧窛'],
+
+      tagInputVisible: false,
+      tagInputValue: '',
+
+      teams: [],
+      teamSpinning: true,
+
+      tabListNoTitle: [
+        {
+          key: 'article',
+          tab: '鏂囩珷(8)'
+        },
+        {
+          key: 'app',
+          tab: '搴旂敤(8)'
+        },
+        {
+          key: 'project',
+          tab: '椤圭洰(8)'
+        }
+      ],
+      noTitleKey: 'app'
+    }
+  },
+  mounted () {
+    this.getTeams()
+  },
+  methods: {
+    ...mapGetters(['nickname', 'avatar']),
+
+    getTeams () {
+      this.teams = [{
+        id: 1,
+        name: '绉戝鎼爾缁�',
+        avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
+      },
+        {
+          id: 2,
+          name: '绋嬪簭鍛樻棩甯�',
+          avatar: 'https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png'
+        },
+        {
+          id: 1,
+          name: '璁捐澶╁洟',
+          avatar: 'https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png'
+        },
+        {
+          id: 1,
+          name: '涓簩灏戝コ鍥�',
+          avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png'
+        },
+        {
+          id: 1,
+          name: '楠椾綘瀛﹁绠楁満',
+          avatar: 'https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png'
+        }
+      ]
+      this.teamSpinning = false
+    },
+
+    handleTabChange (key, type) {
+      this[type] = key
+    },
+
+    handleTagClose (removeTag) {
+      const tags = this.tags.filter(tag => tag !== removeTag)
+      this.tags = tags
+    },
+
+    showTagInput () {
+      this.tagInputVisible = true
+      this.$nextTick(() => {
+        this.$refs.tagInput.focus()
+      })
+    },
+
+    handleInputChange (e) {
+      this.tagInputValue = e.target.value
+    },
+
+    handleTagInputConfirm () {
+      const inputValue = this.tagInputValue
+      let tags = this.tags
+      if (inputValue && !tags.includes(inputValue)) {
+        tags = [...tags, inputValue]
+      }
+
+      Object.assign(this, {
+        tags,
+        tagInputVisible: false,
+        tagInputValue: ''
+      })
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.page-header-wrapper-grid-content-main {
+  width: 100%;
+  height: 100%;
+  min-height: 100%;
+  transition: 0.3s;
+
+  .account-center-avatarHolder {
+    text-align: center;
+    margin-bottom: 24px;
+
+    & > .avatar {
+      margin: 0 auto;
+      width: 104px;
+      height: 104px;
+      margin-bottom: 20px;
+      border-radius: 50%;
+      overflow: hidden;
+      img {
+        height: 100%;
+        width: 100%;
+      }
+    }
+
+    .username {
+      color: rgba(0, 0, 0, 0.85);
+      font-size: 20px;
+      line-height: 28px;
+      font-weight: 500;
+      margin-bottom: 4px;
+    }
+  }
+
+  .account-center-detail {
+    p {
+      margin-bottom: 8px;
+      padding-left: 26px;
+      position: relative;
+    }
+
+    i {
+      position: absolute;
+      height: 14px;
+      width: 14px;
+      left: 0;
+      top: 4px;
+      background: url(https://gw.alipayobjects.com/zos/rmsportal/pBjWzVAHnOOtAUvZmZfy.svg);
+    }
+
+    .title {
+      background-position: 0 0;
+    }
+    .group {
+      background-position: 0 -22px;
+    }
+    .address {
+      background-position: 0 -44px;
+    }
+  }
+
+  .account-center-tags {
+    .ant-tag {
+      margin-bottom: 8px;
+    }
+  }
+
+  .account-center-team {
+    .members {
+      a {
+        display: block;
+        margin: 12px 0;
+        line-height: 24px;
+        height: 24px;
+        .member {
+          font-size: 14px;
+          color: rgba(0, 0, 0, 0.65);
+          line-height: 24px;
+          max-width: 100px;
+          vertical-align: top;
+          margin-left: 12px;
+          transition: all 0.3s;
+          display: inline-block;
+        }
+        &:hover {
+          span {
+            color: #1890ff;
+          }
+        }
+      }
+    }
+  }
+
+  .tagsTitle,
+  .teamTitle {
+    font-weight: 500;
+    color: rgba(0, 0, 0, 0.85);
+    margin-bottom: 12px;
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/App.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/App.vue
new file mode 100644
index 0000000..853aeab
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/App.vue
@@ -0,0 +1,113 @@
+<template>
+  <div class="app-list">
+    <a-list
+      :grid="{ gutter: 24, lg: 3, md: 2, sm: 1, xs: 1 }"
+      :dataSource="dataSource">
+      <a-list-item slot="renderItem" slot-scope="item">
+        <a-card :hoverable="true">
+          <a-card-meta>
+            <div style="margin-bottom: 3px" slot="title">{{ item.title }}</div>
+            <a-avatar class="card-avatar" slot="avatar" :src="item.avatar" size="small"/>
+            <div class="meta-cardInfo" slot="description">
+              <div>
+                <p>娲昏穬鐢ㄦ埛</p>
+                <p>
+                  <span>{{ item.activeUser }}<span>涓�</span></span>
+                </p>
+              </div>
+              <div>
+                <p>鏂板鐢ㄦ埛</p>
+                <p>{{ item.newUser | NumberFormat }}</p>
+              </div>
+            </div>
+          </a-card-meta>
+          <template class="ant-card-actions" slot="actions">
+            <a>
+              <a-icon type="download"/>
+            </a>
+            <a>
+              <a-icon type="edit"/>
+            </a>
+            <a>
+              <a-icon type="share-alt"/>
+            </a>
+            <a>
+              <a-dropdown>
+                <a class="ant-dropdown-link" href="javascript:;">
+                  <a-icon type="ellipsis"/>
+                </a>
+                <a-menu slot="overlay">
+                  <a-menu-item>
+                    <a href="javascript:;">1st menu item</a>
+                  </a-menu-item>
+                  <a-menu-item>
+                    <a href="javascript:;">2nd menu item</a>
+                  </a-menu-item>
+                  <a-menu-item>
+                    <a href="javascript:;">3rd menu item</a>
+                  </a-menu-item>
+                </a-menu>
+              </a-dropdown>
+            </a>
+          </template>
+        </a-card>
+      </a-list-item>
+    </a-list>
+
+  </div>
+</template>
+
+<script>
+const dataSource = []
+for (let i = 0; i < 11; i++) {
+  dataSource.push({
+    title: 'Alipay',
+    avatar: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
+    activeUser: 17,
+    newUser: 1700
+  })
+}
+
+export default {
+  name: 'Article',
+  components: {},
+  data () {
+    return {
+      dataSource
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+
+  .app-list {
+
+    .meta-cardInfo {
+      zoom: 1;
+      margin-top: 16px;
+
+      > div {
+        position: relative;
+        text-align: left;
+        float: left;
+        width: 50%;
+
+        p {
+          line-height: 32px;
+          font-size: 24px;
+          margin: 0;
+
+          &:first-child {
+            color: rgba(0, 0, 0, .45);
+            font-size: 12px;
+            line-height: 20px;
+            margin-bottom: 4px;
+          }
+        }
+
+      }
+    }
+  }
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Article.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Article.vue
new file mode 100644
index 0000000..bac1ded
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Article.vue
@@ -0,0 +1,91 @@
+<template>
+  <a-list
+    size="large"
+    rowKey="id"
+    :loading="loading"
+    itemLayout="vertical"
+    :dataSource="data"
+  >
+    <a-list-item :key="item.id" slot="renderItem" slot-scope="item">
+      <a-list-item-meta>
+        <a slot="title" href="https://vue.ant.design/">{{ item.title }}</a>
+        <template slot="description">
+          <span>
+            <a-tag>Ant Design</a-tag>
+            <a-tag>璁捐璇█</a-tag>
+            <a-tag>铓傝殎閲戞湇</a-tag>
+          </span>
+        </template>
+      </a-list-item-meta>
+      <article-list-content :description="item.description" :owner="item.owner" :avatar="item.avatar" :href="item.href" :updateAt="item.updatedAt" />
+    </a-list-item>
+    <div slot="footer" v-if="data.length > 0" style="text-align: center; margin-top: 16px;">
+      <a-button @click="loadMore" :loading="loadingMore">鍔犺浇鏇村</a-button>
+    </div>
+  </a-list>
+</template>
+
+<script>
+import { ArticleListContent } from '@/components'
+
+export default {
+  name: 'Article',
+  components: {
+    ArticleListContent
+  },
+  data () {
+    return {
+      loading: true,
+      loadingMore: false,
+      data: []
+    }
+  },
+  mounted () {
+    this.getList()
+  },
+  methods: {
+    getList () {
+      this.data = [
+        {
+          updatedAt: '2021-05-01 12:00:00',
+          title: '灏忚',
+          owner: '淇炲疂灞�',
+          description: 'snowy鏄皬璇哄洟闃熶骇鍝�',
+          href: 'https://xiaonuo.vip',
+          avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
+          name: '鏇蹭附涓�',
+          id: 'member1'
+        },
+        {
+          updatedAt: '2021-05-01 12:00:00',
+          title: '灏忚',
+          owner: '寰愮帀绁�',
+          description: 'snowy鏄皬璇哄洟闃熶骇鍝�',
+          href: 'https://xiaonuo.vip',
+          avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
+          name: '鐜嬫槶鍚�',
+          id: 'member2'
+        },
+        {
+          updatedAt: '2021-05-01 12:00:00',
+          title: '灏忚',
+          owner: '钁e闆�',
+          description: 'snowy鏄皬璇哄洟闃熶骇鍝�',
+          href: 'https://xiaonuo.vip',
+          avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
+          name: '钁e濞�',
+          id: 'member3'
+        }
+      ]
+      this.loading = false
+    },
+    loadMore () {
+      this.loadingMore = false
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Project.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Project.vue
new file mode 100644
index 0000000..24dfb29
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Project.vue
@@ -0,0 +1,214 @@
+<template>
+  <div class="ant-pro-pages-account-projects-cardList">
+    <a-list :loading="loading" :data-source="data" :grid="{ gutter: 24, xxl: 3, xl: 2, lg: 2, md: 2, sm: 2, xs: 1 }">
+      <a-list-item slot="renderItem" slot-scope="item">
+        <a-card class="ant-pro-pages-account-projects-card" hoverable>
+          <img slot="cover" :src="item.cover" :alt="item.title" />
+          <a-card-meta :title="item.title">
+            <template slot="description">
+              <ellipsis :length="50">{{ item.description }}</ellipsis>
+            </template>
+          </a-card-meta>
+          <div class="cardItemContent">
+            <span>{{ item.updatedAt | fromNow }}</span>
+            <div class="avatarList">
+              <avatar-list size="mini">
+                <avatar-list-item
+                  v-for="(member, i) in item.members"
+                  :key="`${item.id}-avatar-${i}`"
+                  :src="member.avatar"
+                  :tips="member.name"
+                />
+              </avatar-list>
+            </div>
+          </div>
+        </a-card>
+      </a-list-item>
+    </a-list>
+  </div>
+</template>
+
+<script>
+import moment from 'moment'
+import { TagSelect, StandardFormRow, Ellipsis, AvatarList } from '@/components'
+const TagSelectOption = TagSelect.Option
+const AvatarListItem = AvatarList.AvatarItem
+
+export default {
+  name: 'Project',
+  components: {
+    AvatarList,
+    AvatarListItem,
+    Ellipsis,
+    TagSelect,
+    TagSelectOption,
+    StandardFormRow
+  },
+  data () {
+    return {
+      data: [],
+      form: this.$form.createForm(this),
+      loading: true
+    }
+  },
+  filters: {
+    fromNow (date) {
+      return moment(date).fromNow()
+    }
+  },
+  mounted () {
+    this.getList()
+  },
+  methods: {
+    handleChange (value) {
+    },
+    getList () {
+      this.data = [
+        {
+          id: '123',
+          cover: 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png',
+          content: '娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�',
+          message: '娑堟伅',
+          description: '灏忚妗嗘灦浜у搧',
+          href: 'https://xiaonuo.vip',
+          title: '灏忚',
+          updatedAt: '2021-05-01 12:00:00',
+          members: [
+            {
+              avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
+              name: '鏇蹭附涓�',
+              id: 'member1'
+            },
+            {
+              avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
+              name: '鐜嬫槶鍚�',
+              id: 'member2'
+            },
+            {
+              avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
+              name: '钁e濞�',
+              id: 'member3'
+            }
+          ]
+        },
+        {
+          id: '1234',
+          cover: 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png',
+          content: '娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�',
+          message: '娑堟伅',
+          description: '灏忚妗嗘灦浜у搧',
+          href: 'https://xiaonuo.vip',
+          title: '灏忚',
+          updatedAt: '2021-05-01 12:00:00',
+          members: [
+            {
+              avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
+              name: '鏇蹭附涓�',
+              id: 'member1'
+            },
+            {
+              avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
+              name: '鐜嬫槶鍚�',
+              id: 'member2'
+            },
+            {
+              avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
+              name: '钁e濞�',
+              id: 'member3'
+            }
+          ]
+        },
+        {
+          id: '12345',
+          cover: 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png',
+          content: '娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�',
+          message: '娑堟伅',
+          description: '灏忚妗嗘灦浜у搧',
+          href: 'https://xiaonuo.vip',
+          title: '灏忚',
+          updatedAt: '2021-05-01 12:00:00',
+          members: [
+            {
+              avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
+              name: '鏇蹭附涓�',
+              id: 'member1'
+            },
+            {
+              avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
+              name: '鐜嬫槶鍚�',
+              id: 'member2'
+            },
+            {
+              avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
+              name: '钁e濞�',
+              id: 'member3'
+            }
+          ]
+        },
+        {
+          id: '1236',
+          cover: 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png',
+          content: '娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�',
+          message: '娑堟伅',
+          description: '灏忚妗嗘灦浜у搧',
+          href: 'https://xiaonuo.vip',
+          title: '灏忚',
+          updatedAt: '2021-05-01 12:00:00',
+          members: [
+            {
+              avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
+              name: '鏇蹭附涓�',
+              id: 'member1'
+            },
+            {
+              avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
+              name: '鐜嬫槶鍚�',
+              id: 'member2'
+            },
+            {
+              avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
+              name: '钁e濞�',
+              id: 'member3'
+            }
+          ]
+        }
+      ]
+      this.loading = false
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  .ant-pro-pages-account-projects-cardList {
+    margin-top: 24px;
+
+    /deep/ .ant-card-meta-title {
+      margin-bottom: 4px;
+    }
+
+    /deep/ .ant-card-meta-description {
+      height: 44px;
+      overflow: hidden;
+      line-height: 22px;
+    }
+
+    .cardItemContent {
+      display: flex;
+      height: 20px;
+      margin-top: 16px;
+      margin-bottom: -4px;
+      line-height: 20px;
+
+      > span {
+        flex: 1 1;
+        color: rgba(0,0,0,.45);
+        font-size: 12px;
+      }
+
+      /deep/ .ant-pro-avatar-list {
+        flex: 0 1 auto;
+      }
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/index.js b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/index.js
new file mode 100644
index 0000000..b579b6a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/index.js
@@ -0,0 +1,5 @@
+import AppPage from './App'
+import ArticlePage from './Article'
+import ProjectPage from './Project'
+
+export { AppPage, ArticlePage, ProjectPage }
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/AvatarModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/AvatarModal.vue
new file mode 100644
index 0000000..ffeb1b4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/AvatarModal.vue
@@ -0,0 +1,182 @@
+<template>
+
+  <a-modal
+    title="淇敼澶村儚"
+    :visible="visible"
+    :maskClosable="false"
+    :confirmLoading="confirmLoading"
+    :width="800"
+    :footer="null"
+    @cancel="cancelHandel">
+    <a-row>
+      <a-col :xs="24" :md="12" :style="{height: '350px'}">
+        <vue-cropper
+          ref="cropper"
+          :img="options.img"
+          :info="true"
+          :autoCrop="options.autoCrop"
+          :autoCropWidth="options.autoCropWidth"
+          :autoCropHeight="options.autoCropHeight"
+          :fixedBox="options.fixedBox"
+          @realTime="realTime"
+        >
+        </vue-cropper>
+      </a-col>
+      <a-col :xs="24" :md="12" :style="{height: '350px'}">
+        <div class="avatar-upload-preview">
+          <img :src="previews.url" :style="previews.img"/>
+        </div>
+      </a-col>
+    </a-row>
+    <br>
+    <a-row>
+      <a-col :lg="2" :md="2">
+        <a-upload name="file" :beforeUpload="beforeUpload" :showUploadList="false">
+          <a-button icon="upload">閫夋嫨鍥剧墖</a-button>
+        </a-upload>
+      </a-col>
+      <a-col :lg="{span: 1, offset: 2}" :md="2">
+        <a-button icon="plus" @click="changeScale(1)"/>
+      </a-col>
+      <a-col :lg="{span: 1, offset: 1}" :md="2">
+        <a-button icon="minus" @click="changeScale(-1)"/>
+      </a-col>
+      <a-col :lg="{span: 1, offset: 1}" :md="2">
+        <a-button icon="undo" @click="rotateLeft"/>
+      </a-col>
+      <a-col :lg="{span: 1, offset: 1}" :md="2">
+        <a-button icon="redo" @click="rotateRight"/>
+      </a-col>
+      <a-col :lg="{span: 2, offset: 6}" :md="2">
+        <a-button type="primary" @click="finish('blob')" :loading="uploading">淇濆瓨</a-button>
+      </a-col>
+    </a-row>
+  </a-modal>
+
+</template>
+<script>
+  import { sysFileInfoUploadAvatar } from '@/api/modular/system/fileManage'
+  import { sysUserUpdateAvatar } from '@/api/modular/system/userManage'
+
+  export default {
+  data () {
+    return {
+      visible: false,
+      id: null,
+      confirmLoading: false,
+      fileList: [],
+      uploading: false,
+      options: {
+        img: '',
+        autoCrop: true,
+        autoCropWidth: 200,
+        autoCropHeight: 200,
+        fixedBox: true
+      },
+      previews: {}
+    }
+  },
+  methods: {
+    edit (id) {
+      this.visible = true
+      this.id = id
+      /* 鑾峰彇鍘熷澶村儚 */
+    },
+    close () {
+      this.id = null
+      this.visible = false
+    },
+    cancelHandel () {
+      this.close()
+    },
+    changeScale (num) {
+      num = num || 1
+      this.$refs.cropper.changeScale(num)
+    },
+    rotateLeft () {
+      this.$refs.cropper.rotateLeft()
+    },
+    rotateRight () {
+      this.$refs.cropper.rotateRight()
+    },
+    beforeUpload (file) {
+      this.fileList = file
+      const reader = new FileReader()
+      // 鎶夾rray Buffer杞寲涓篵lob 濡傛灉鏄痓ase64涓嶉渶瑕�
+      // 杞寲涓篵ase64
+      reader.readAsDataURL(file)
+      reader.onload = () => {
+        this.options.img = reader.result
+      }
+      // 杞寲涓篵lob
+      // reader.readAsArrayBuffer(file)
+      return false
+    },
+
+    // 涓婁紶鍥剧墖锛堢偣鍑讳笂浼犳寜閽級
+    finish (type) {
+      if (type === 'blob') {
+        this.uploading = true
+        this.$refs.cropper.getCropBlob((data) => {
+          const files = new window.File(
+            [data],
+            this.fileList.name,
+            { type: this.fileList.type }
+          )
+          const formData = new FormData()
+          formData.append('file', files)
+          sysFileInfoUploadAvatar(formData).then((res) => {
+            if (res.success) {
+              this.updateAvatar(res.data)
+              this.$emit('ok', res.data)
+            } else {
+              this.uploading = false
+              this.$message.error(res.message)
+            }
+          })
+        })
+      } else {
+        this.$refs.cropper.getCropData((data) => {
+        })
+      }
+    },
+    updateAvatar (data) {
+      const params = {
+        id: this.id,
+        avatar: data
+      }
+      sysUserUpdateAvatar(params).then((res) => {
+        this.uploading = false
+        if (res.success) {
+          this.visible = false
+          this.$message.success('澶村儚涓婁紶淇敼鎴愬姛')
+        } else {
+          this.$message.error(res.message)
+        }
+      })
+    },
+    realTime (data) {
+      this.previews = data
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+
+  .avatar-upload-preview {
+    position: absolute;
+    top: 50%;
+    transform: translate(50%, -50%);
+    width: 200px;
+    height: 200px;
+    border-radius: 50%;
+    box-shadow: 0 0 4px #ccc;
+    overflow: hidden;
+
+    img {
+      width: 100%;
+      height: 100%;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/BaseSetting.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/BaseSetting.vue
new file mode 100644
index 0000000..5de0073
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/BaseSetting.vue
@@ -0,0 +1,238 @@
+<template>
+  <div class="account-settings-info-view">
+    <a-row :gutter="16">
+      <a-col :md="24" :lg="16">
+
+        <a-form layout="vertical" :form="form">
+          <a-form-item label="鏄电О">
+            <a-input placeholder="缁欒嚜宸辫捣涓樀绉板惂" v-decorator="['nickName']" />
+          </a-form-item>
+          <a-form-item label="鐢熸棩">
+            <a-date-picker
+              placeholder="璇烽�夋嫨鐢熸棩"
+              @change="onChange"
+              style="width: 100%"
+              v-decorator="['birthday', {rules: [{required: true, message: '璇烽�夋嫨鐢熸棩锛�'}]}]" />
+          </a-form-item>
+          <a-form-item label="鎬у埆">
+            <a-radio-group v-decorator="['sex',{rules: [{ required: true, message: '璇烽�夋嫨鎬у埆锛�' }]}]">
+              <a-radio v-for="(item,index) in sexData" :key="index" :value="item.code">{{ item.name }}</a-radio>
+            </a-radio-group>
+          </a-form-item>
+          <a-form-item label="鎵嬫満">
+            <a-input placeholder="璇疯緭鍏ユ墜鏈哄彿" v-decorator="['phone', {rules: [{required: true, message: '璇疯緭鍏ユ墜鏈哄彿锛�'}]}]" />
+          </a-form-item>
+          <a-form-item label="鐢佃瘽">
+            <a-input placeholder="璇疯緭鍏ョ數璇�" v-decorator="['tel']" />
+          </a-form-item>
+          <a-form-item label="鐢靛瓙閭欢">
+            <a-input
+              placeholder="璇疯緭鍏ョ數瀛愰偖浠跺湴鍧�"
+              v-decorator="['email', {type: 'email',message: '璇疯緭鍏ユ纭殑閭鍙�',rules: [{required: true, message: '璇疯緭鍏ユ纭殑閭鍙凤紒'}]}]" />
+          </a-form-item>
+          <a-form-item>
+            <a-button type="primary" @click="submitUserInfo">鏇存柊鍩烘湰淇℃伅</a-button>
+          </a-form-item>
+        </a-form>
+
+      </a-col>
+      <a-col :md="24" :lg="8" :style="{ minHeight: '180px' }">
+        <div class="ant-upload-preview" @click="$refs.modal.edit(userInfo.id)">
+          <a-icon type="cloud-upload-o" class="upload-icon" />
+          <div class="mask">
+            <a-icon type="plus" />
+          </div>
+          <img :src="option.img" />
+        </div>
+      </a-col>
+
+    </a-row>
+
+    <avatar-modal ref="modal" @ok="setavatar" />
+
+  </div>
+</template>
+
+<script>
+  import store from '@/store'
+  import AvatarModal from './AvatarModal'
+  import {
+    mapGetters
+  } from 'vuex'
+  import moment from 'moment'
+  import {
+    sysUserUpdateInfo
+  } from '@/api/modular/system/userManage'
+  import {
+    sysFileInfoPreview
+  } from '@/api/modular/system/fileManage'
+  // mapActions
+  export default {
+    components: {
+      AvatarModal
+    },
+    data() {
+      return {
+        // cropper
+        preview: {},
+        form: this.$form.createForm(this),
+        sexData: [],
+        option: {
+          img: null,
+          info: true,
+          size: 1,
+          outputType: 'jpeg',
+          canScale: false,
+          autoCrop: true,
+          // 鍙湁鑷姩鎴浘寮�鍚� 瀹藉害楂樺害鎵嶇敓鏁�
+          autoCropWidth: 180,
+          autoCropHeight: 180,
+          fixedBox: true,
+          // 寮�鍚搴﹀拰楂樺害姣斾緥
+          fixed: true,
+          fixedNumber: [1, 1],
+          // userInfo
+          birthdayString: ''
+        }
+      }
+    },
+    computed: {
+      ...mapGetters(['userInfo'])
+    },
+    mounted() {
+      this.initUserInfo()
+    },
+    methods: {
+      // ...mapActions(['GetInfo']),
+      /**
+       * 鍒濆鍖栫敤鎴蜂俊鎭�
+       */
+      initUserInfo() {
+        setTimeout(() => {
+          this.form.setFieldsValue({
+            birthday: moment(this.userInfo.birthday, 'YYYY-MM-DD'),
+            nickName: this.userInfo.nickName,
+            sex: this.userInfo.sex.toString(),
+            email: this.userInfo.email,
+            phone: this.userInfo.phone,
+            tel: this.userInfo.tel
+          })
+          this.birthdayString = moment(this.userInfo.birthday).format('YYYY-MM-DD')
+          if (this.userInfo.avatar != null) {
+            sysFileInfoPreview({
+              id: this.userInfo.avatar
+            }).then((res) => {
+              this.option.img = window.URL.createObjectURL(new Blob([res]))
+            }).catch((err) => {
+              this.$message.error('棰勮閿欒锛�' + err.message)
+            })
+          } else {
+            this.option.img = '/avatar2.jpg'
+          }
+          // this.option.img = process.env.VUE_APP_API_BASE_URL + '/sysFileInfo/preview?id=' + this.userInfo.avatar
+          this.getSexData()
+        }, 100)
+      },
+      /**
+       * 鏃ユ湡闇�鍗曠嫭杞崲
+       */
+      onChange(date, dateString) {
+        this.birthdayString = dateString
+      },
+      submitUserInfo() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        validateFields((err, values) => {
+          if (!err) {
+            values.birthday = this.birthdayString
+            values.id = this.userInfo.id
+            sysUserUpdateInfo(values).then((res) => {
+              if (res.success) {
+                this.$message.success('涓汉淇℃伅鏇存柊鎴愬姛')
+                store.dispatch('GetInfo').then(() => {})
+              } else {
+                this.$message.error(JSON.stringify(res.message))
+              }
+            })
+          }
+        })
+      },
+      getSexData() {
+        this.sexData = this.$options.filters['dictData']('sex')
+      },
+      setavatar(url) {
+        sysFileInfoPreview({
+          id: url
+        }).then((res) => {
+          this.option.img = window.URL.createObjectURL(new Blob([res]))
+        }).catch((err) => {
+          this.$message.error('棰勮閿欒锛�' + err.message)
+        })
+        // this.option.img = process.env.VUE_APP_API_BASE_URL + '/sysFileInfo/preview?id=' + url
+        store.dispatch('GetInfo').then(() => {})
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+  .avatar-upload-wrapper {
+    height: 200px;
+    width: 100%;
+  }
+
+  .ant-upload-preview {
+    position: relative;
+    margin: 0 auto;
+    width: 100%;
+    max-width: 180px;
+    height: 180px;
+    border-radius: 50%;
+    box-shadow: 0 0 4px #ccc;
+
+    .upload-icon {
+      position: absolute;
+      top: 0;
+      right: 10px;
+      font-size: 1.4rem;
+      padding: 0.5rem;
+      background: rgba(222, 221, 221, 0.7);
+      border-radius: 50%;
+      border: 1px solid rgba(0, 0, 0, 0.2);
+    }
+
+    .mask {
+      opacity: 0;
+      position: absolute;
+      background: rgba(0, 0, 0, 0.4);
+      cursor: pointer;
+      transition: opacity 0.4s;
+
+      &:hover {
+        opacity: 1;
+      }
+
+      i {
+        font-size: 2rem;
+        position: absolute;
+        top: 50%;
+        left: 50%;
+        margin-left: -1rem;
+        margin-top: -1rem;
+        color: #d6d6d6;
+      }
+    }
+
+    img,
+    .mask {
+      width: 100%;
+      max-width: 180px;
+      height: 100%;
+      border-radius: 50%;
+      overflow: hidden;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Binding.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Binding.vue
new file mode 100644
index 0000000..cbea7fc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Binding.vue
@@ -0,0 +1,25 @@
+<template>
+  <a-list
+    itemLayout="horizontal"
+    :dataSource="data"
+  >
+
+  </a-list>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+      data: []
+    }
+  },
+  methods: {
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Custom.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Custom.vue
new file mode 100644
index 0000000..c235570
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Custom.vue
@@ -0,0 +1,75 @@
+<script>
+import { colorList } from '@/components/SettingDrawer/settingConfig'
+import ASwitch from 'ant-design-vue/es/switch'
+import AList from 'ant-design-vue/es/list'
+import AListItem from 'ant-design-vue/es/list/Item'
+import { mixin } from '@/utils/mixin'
+
+const Meta = AListItem.Meta
+
+export default {
+  components: {
+    AListItem,
+    AList,
+    ASwitch,
+    Meta
+  },
+  mixins: [mixin],
+  data () {
+    return {
+    }
+  },
+  filters: {
+    themeFilter (theme) {
+      const themeMap = {
+        'dark': '鏆楄壊',
+        'light': '鐧借壊'
+      }
+      return themeMap[theme]
+    }
+  },
+  methods: {
+    colorFilter (color) {
+      const c = colorList.find(o => o.color === color)
+      return c && c.key
+    },
+
+    onChange (checked) {
+      if (checked) {
+        this.$store.dispatch('ToggleTheme', 'dark')
+      } else {
+        this.$store.dispatch('ToggleTheme', 'light')
+      }
+    }
+  },
+  render () {
+    return (
+      <AList itemLayout="horizontal">
+        <AListItem>
+          <Meta>
+            <a slot="title">椋庢牸閰嶈壊</a>
+            <span slot="description">
+                鏁翠綋椋庢牸閰嶈壊璁剧疆
+            </span>
+          </Meta>
+          <div slot="actions">
+            <ASwitch checkedChildren="鏆楄壊" unCheckedChildren="鐧借壊" defaultChecked={this.navTheme === 'dark' && true || false} onChange={this.onChange} />
+          </div>
+        </AListItem>
+        <AListItem>
+          <Meta>
+            <a slot="title">涓婚鑹�</a>
+            <span slot="description">
+                椤甸潰椋庢牸閰嶈壊锛� <a domPropsInnerHTML={ this.colorFilter(this.primaryColor) }/>
+            </span>
+          </Meta>
+        </AListItem>
+      </AList>
+    )
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Index.vue
new file mode 100644
index 0000000..8db2efb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Index.vue
@@ -0,0 +1,155 @@
+<template>
+  <div class="page-header-index-wide">
+    <a-card :bordered="false" :bodyStyle="{ padding: '16px 0', height: '100%' }" :style="{ height: '100%' }">
+      <div class="account-settings-info-main" :class="device">
+        <div class="account-settings-info-left">
+          <a-menu
+            :mode="device == 'mobile' ? 'horizontal' : 'inline'"
+            :style="{ border: '0', width: device == 'mobile' ? '560px' : 'auto'}"
+            :selectedKeys="selectedKeys"
+            type="inner"
+            @openChange="onOpenChange"
+          >
+            <a-menu-item key="/account/settings/base">
+              <router-link :to="{ name: 'BaseSettings' }">
+                鍩烘湰璁剧疆
+              </router-link>
+            </a-menu-item>
+            <a-menu-item key="/account/settings/security">
+              <router-link :to="{ name: 'SecuritySettings' }">
+                瀹夊叏璁剧疆
+              </router-link>
+            </a-menu-item>
+            <a-menu-item key="/account/settings/custom">
+              <router-link :to="{ name: 'CustomSettings' }">
+                涓�у寲
+              </router-link>
+            </a-menu-item>
+            <a-menu-item key="/account/settings/binding">
+              <router-link :to="{ name: 'BindingSettings' }">
+                璐︽埛缁戝畾
+              </router-link>
+            </a-menu-item>
+            <a-menu-item key="/account/settings/notification">
+              <router-link :to="{ name: 'NotificationSettings' }">
+                鏂版秷鎭�氱煡
+              </router-link>
+            </a-menu-item>
+          </a-menu>
+        </div>
+        <div class="account-settings-info-right">
+          <div class="account-settings-info-title">
+            <span>{{ $route.meta.title }}</span>
+          </div>
+          <route-view></route-view>
+        </div>
+      </div>
+    </a-card>
+  </div>
+</template>
+
+<script>
+import { PageView, RouteView } from '@/layouts'
+import { mixinDevice } from '@/utils/mixin.js'
+
+export default {
+  components: {
+    RouteView,
+    PageView
+  },
+  mixins: [mixinDevice],
+  data () {
+    return {
+      // horizontal  inline
+      mode: 'inline',
+
+      openKeys: [],
+      selectedKeys: [],
+
+      // cropper
+      preview: {},
+      option: {
+        img: '/avatar2.jpg',
+        info: true,
+        size: 1,
+        outputType: 'jpeg',
+        canScale: false,
+        autoCrop: true,
+        // 鍙湁鑷姩鎴浘寮�鍚� 瀹藉害楂樺害鎵嶇敓鏁�
+        autoCropWidth: 180,
+        autoCropHeight: 180,
+        fixedBox: true,
+        // 寮�鍚搴﹀拰楂樺害姣斾緥
+        fixed: true,
+        fixedNumber: [1, 1]
+      },
+
+      pageTitle: ''
+    }
+  },
+  mounted () {
+    this.updateMenu()
+  },
+  methods: {
+    onOpenChange (openKeys) {
+      this.openKeys = openKeys
+    },
+    updateMenu () {
+      const routes = this.$route.matched.concat()
+      this.selectedKeys = [ routes.pop().path ]
+    }
+  },
+  watch: {
+    '$route' (val) {
+      this.updateMenu()
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  .account-settings-info-main {
+    width: 100%;
+    display: flex;
+    height: 100%;
+    overflow: auto;
+
+    &.mobile {
+      display: block;
+
+      .account-settings-info-left {
+        border-right: unset;
+        border-bottom: 1px solid #e8e8e8;
+        width: 100%;
+        height: 50px;
+        overflow-x: auto;
+        overflow-y: scroll;
+      }
+      .account-settings-info-right {
+        padding: 20px 40px;
+      }
+    }
+
+    .account-settings-info-left {
+      border-right: 1px solid #e8e8e8;
+      width: 224px;
+    }
+
+    .account-settings-info-right {
+      flex: 1 1;
+      padding: 8px 40px;
+
+      .account-settings-info-title {
+        color: rgba(0,0,0,.85);
+        font-size: 20px;
+        font-weight: 500;
+        line-height: 28px;
+        margin-bottom: 12px;
+      }
+      .account-settings-info-view {
+        padding-top: 12px;
+      }
+    }
+  }
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Notification.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Notification.vue
new file mode 100644
index 0000000..cbea7fc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Notification.vue
@@ -0,0 +1,25 @@
+<template>
+  <a-list
+    itemLayout="horizontal"
+    :dataSource="data"
+  >
+
+  </a-list>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+      data: []
+    }
+  },
+  methods: {
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Security.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Security.vue
new file mode 100644
index 0000000..2d3b650
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Security.vue
@@ -0,0 +1,70 @@
+<template>
+  <div>
+    <a-list
+      itemLayout="horizontal"
+      :dataSource="data"
+    >
+      <a-list-item slot="renderItem" slot-scope="item, MenuIndex" :key="MenuIndex">
+        <a-list-item-meta>
+          <a slot="title">{{ item.title }}</a>
+          <span slot="description">
+            <span class="security-list-description">{{ item.description }}</span>
+            <span v-if="item.value"> : </span>
+            <span class="security-list-value">{{ item.value }}</span>
+          </span>
+        </a-list-item-meta>
+        <template v-if="item.actions">
+          <a slot="actions" @click="item.actions.callback">{{ item.actions.title }}</a>
+        </template>
+      </a-list-item>
+    </a-list>
+    <upd-pwd ref="updPwd"/>
+  </div>
+</template>
+
+<script>
+  import { mapGetters } from 'vuex'
+  import UpdPwd from './securityItem/updPwd'
+  export default {
+    components: {
+      UpdPwd
+    },
+    data () {
+      return {
+        data: []
+      }
+    },
+    created () {
+      if (this.hasPerm('sysUser:updatePwd')) {
+        const updPwdMenu = {
+          title: '璐︽埛瀵嗙爜',
+          description: '褰撳墠瀵嗙爜寮哄害',
+          value: '寮�',
+          actions: { title: '淇敼',
+            callback: () => {
+              this.$refs.updPwd.open(this.userInfo.id)
+            }
+          }
+        }
+        this.data.push(updPwdMenu)
+      }
+      const encryptedPhone = { title: '瀵嗕繚鎵嬫満', description: '宸茬粦瀹氭墜鏈�', value: '138****8293', actions: { title: '淇敼', callback: () => { this.$message.success('This is a message of success') } } }
+      const encryptedProblem = { title: '瀵嗕繚闂', description: '鏈缃瘑淇濋棶棰橈紝瀵嗕繚闂鍙湁鏁堜繚鎶よ处鎴峰畨鍏�', value: '', actions: { title: '璁剧疆', callback: () => { this.$message.error('This is a message of error') } } }
+      const encryptedEmail = { title: '澶囩敤閭', description: '宸茬粦瀹氶偖绠�', value: 'ant***sign.com', actions: { title: '淇敼', callback: () => { this.$message.warning('This is message of warning') } } }
+      const encryptedMfa = { title: 'MFA 璁惧', description: '鏈粦瀹� MFA 璁惧锛岀粦瀹氬悗锛屽彲浠ヨ繘琛屼簩娆$‘璁�', value: '', actions: { title: '缁戝畾', callback: () => { this.$message.info('This is a normal message') } } }
+      this.data.push(encryptedPhone)
+      this.data.push(encryptedProblem)
+      this.data.push(encryptedEmail)
+      this.data.push(encryptedMfa)
+    },
+    computed: {
+      ...mapGetters(['userInfo'])
+    },
+    methods: {
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/securityItem/updPwd.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/securityItem/updPwd.vue
new file mode 100644
index 0000000..62f4ee5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/securityItem/updPwd.vue
@@ -0,0 +1,118 @@
+<template>
+  <a-modal
+    title="淇敼瀵嗙爜"
+    :visible="visible_updPwd"
+    :confirm-loading="confirmLoading"
+    @ok="handleOkUpdPwd"
+    @cancel="handleCancel">
+    <a-form :form="formUpdPwd">
+      <a-form-item label="鍘熷瘑鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+        <a-input
+          placeholder="璇疯緭鍏ュ師瀵嗙爜"
+          type="password"
+          v-decorator="['password', {rules: [{required: true, message: '璇疯緭鍏ュ師瀵嗙爜锛�'}]}]" />
+      </a-form-item>
+      <a-form-item label="鏂板瘑鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+        <a-input
+          placeholder="璇疯緭鍏ユ柊瀵嗙爜"
+          type="password"
+          v-decorator="['newPassword', {rules: [{required: true, min: 5, message: '璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑璐﹀彿锛�'},{
+            validator: validateToNextPassword,
+          },]}]" />
+      </a-form-item>
+      <a-form-item label="閲嶅鏂板瘑鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+        <a-input
+          placeholder="璇峰啀娆¤緭鍏ユ柊瀵嗙爜"
+          type="password"
+          v-decorator="['confirm', {rules: [{required: true, message: '璇峰啀娆¤緭鍏ユ柊瀵嗙爜锛�'},
+                                            {
+                                              validator: compareToFirstPassword,
+                                            }]}]" />
+      </a-form-item>
+    </a-form>
+  </a-modal>
+
+</template>
+
+<script>
+  import {
+    sysUserUpdatePwd
+  } from '@/api/modular/system/userManage'
+  export default {
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 16
+          }
+        },
+        confirmLoading: false,
+        visible_updPwd: false,
+        userId: '',
+        formUpdPwd: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      open(id) {
+        this.userId = id
+        this.visible_updPwd = true
+      },
+      handleOkUpdPwd() {
+        const {
+          formUpdPwd: {
+            validateFields
+          }
+        } = this
+        validateFields((errors, values) => {
+          if (!errors) {
+            this.confirmLoading = true
+            values.id = this.userId
+            sysUserUpdatePwd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('淇敼鎴愬姛')
+                this.handleCancel()
+              } else {
+                this.$message.error('淇敼澶辫触锛�' + res.message)
+              }
+              // eslint-disable-next-line handle-callback-err
+            }).finally((err) => {
+              this.confirmLoading = false
+            })
+          }
+        })
+      },
+      handleCancel() {
+        this.visible_updPwd = false
+      },
+      compareToFirstPassword(rule, value, callback) {
+        const formUpdPwd = this.formUpdPwd
+        if (value && value !== formUpdPwd.getFieldValue('newPassword')) {
+          // eslint-disable-next-line standard/no-callback-literal
+          callback('璇风‘璁や袱娆¤緭鍏ュ瘑鐮佺殑涓�鑷存�э紒')
+        } else {
+          callback()
+        }
+      },
+      validateToNextPassword(rule, value, callback) {
+        const formUpdPwd = this.formUpdPwd
+        if (value && this.confirmDirty) {
+          formUpdPwd.validateFields(['confirm'], {
+            force: true
+          })
+        }
+        callback()
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/app/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/app/addForm.vue
new file mode 100644
index 0000000..0c699b6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/app/addForm.vue
@@ -0,0 +1,91 @@
+<template>
+  <a-modal
+    title="鏂板搴旂敤"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item
+          style="display: none;"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+        >
+          <a-input v-decorator="['active']" />
+        </a-form-item>
+        <a-form-item
+          label="搴旂敤鍚嶇О"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ簲鐢ㄥ悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ簲鐢ㄥ悕绉帮紒'}]}]" />
+        </a-form-item>
+        <a-form-item
+          label="鍞竴缂栫爜"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+<script>
+  import { sysAppAdd } from '@/api/modular/system/appManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add () {
+        this.visible = true
+        this.form.getFieldDecorator('active', { initialValue: 'N' })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysAppAdd(values).then((res) => {
+              this.confirmLoading = false
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.handleCancel()
+                this.$emit('ok', values)
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/app/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/app/editForm.vue
new file mode 100644
index 0000000..9378fe2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/app/editForm.vue
@@ -0,0 +1,116 @@
+<template>
+  <a-modal
+    title="搴旂敤缂栬緫"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form" >
+        <a-form-item
+          style="display: none;"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+        >
+          <a-input v-decorator="['id']" />
+        </a-form-item>
+        <a-form-item
+          style="display: none;"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+        >
+          <a-input v-decorator="['active']" />
+        </a-form-item>
+        <a-form-item
+          label="搴旂敤鍚嶇О"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ簲鐢ㄥ悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ簲鐢ㄥ悕绉帮紒'}]}]" />
+        </a-form-item>
+        <a-form-item
+          label="鍞竴缂栫爜"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="鎺掑簭"
+        >
+          <a-input-number placeholder="璇疯緭鍏ユ帓搴�" style="width: 100%" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+<script>
+  import { sysAppEdit } from '@/api/modular/system/appManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        visibleDef: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true
+        setTimeout(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              name: record.name,
+              code: record.code,
+              sort: record.sort,
+              active: record.active
+            }
+          )
+        }, 100)
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysAppEdit(values).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/app/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/app/index.vue
new file mode 100644
index 0000000..35e897e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/app/index.vue
@@ -0,0 +1,294 @@
+/* eslint-disable eqeqeq */
+<template>
+<div ref="boxOutWrap" class="boxOutWrap">
+  <div ref="boxForm" class="boxForm">
+    <x-card v-if="hasPerm('sysApp:page')">
+      <div slot="content" class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="搴旂敤鍚嶇О">
+                <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ簲鐢ㄥ悕绉�" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍞竴缂栫爜">
+                <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ュ敮涓�缂栫爜" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </x-card>
+  </div>
+
+    <a-card :bordered="false">
+      <a-spin :spinning="loading">
+        <s-table
+          ref="table"
+          :columns="columns"
+          :data="loadData"
+          :alert="true"
+          :rowKey="(record) => record.id"
+          :scroll="{x: true,y:tableHeight}"
+          :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onChange }">
+          <template slot="operator" v-if="hasPerm('sysApp:add')">
+            <div ref="actionBar" class="actionBar">
+              <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysApp:add')">鏂板搴旂敤</a-button>
+            </div>
+          </template>
+          <span slot="active" slot-scope="text">
+            {{ activeFilter(text) }}
+          </span>
+          <span slot="status" slot-scope="text,record">
+            <a-popconfirm placement="top" :title="text===0? '纭畾鍋滅敤璇ュ簲鐢紵':'纭畾鍚敤璇ュ簲鐢紵'" @confirm="() => editAppStatus(text,record)">
+              <a>{{ statusFilter(text) }}</a>
+            </a-popconfirm>
+          </span>
+          <span slot="action" slot-scope="text, record">
+            <a v-if="hasPerm('sysApp:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+            <a-divider type="vertical" v-if="hasPerm('sysApp:edit') & hasPerm('sysApp:delete')" />
+            <a-popconfirm v-if="hasPerm('sysApp:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysAppDelete(record)">
+              <a>鍒犻櫎</a>
+            </a-popconfirm>
+            <a-divider type="vertical" v-if="hasPerm('sysApp:setAsDefault') & hasPerm('sysApp:delete') & record.active == 'N' || hasPerm('sysApp:edit') & hasPerm('sysApp:setAsDefault') & record.active == 'N'" />
+            <a-popconfirm
+              v-if="hasPerm('sysApp:setAsDefault') & record.active == 'N'"
+              placement="topRight"
+              title="璁剧疆涓洪粯璁ゅ簲鐢紵"
+              @confirm="() => sysDefault(record)">
+              <a>璁句负榛樿</a>
+            </a-popconfirm>
+          </span>
+        </s-table>
+        <add-form ref="addForm" @ok="handleOk" />
+        <edit-form ref="editForm" @ok="handleOk" />
+      </a-spin>
+    </a-card>
+  </div>
+</template>
+<script>
+  import {
+    STable,
+    XCard
+  } from '@/components'
+  import {
+    getAppPage,
+    sysAppDelete,
+    sysAppSetAsDefault,
+    sysAppChangeStatus
+  } from '@/api/modular/system/appManage'
+  import {
+    sysDictTypeDropDown
+  } from '@/api/modular/system/dictManage'
+  //鑷畾涔塼able楂樺害
+  import setTableHtMixin from '@/mixins/handleTableHt.js'
+  import editForm from './editForm'
+  import addForm from './addForm'
+  export default {
+    mixins: [setTableHtMixin],
+    components: {
+      XCard,
+      STable,
+      editForm,
+      addForm
+    },
+    data() {
+      return {
+        // description: '闈㈠寘灞戣鏄�',
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 16
+          }
+        },
+        // 鏌ヨ鍙傛暟
+        queryParam: {},
+        // 琛ㄥご
+        columns: [
+          {
+            title: '搴忓彿',
+            width: '60px',
+            align: 'center',
+            customRender: (text, record, index) => `${index + 1}`
+          },
+          {
+            title: '搴旂敤鍚嶇О',
+            dataIndex: 'name'
+          },
+          {
+            title: '鍞竴缂栫爜',
+            dataIndex: 'code'
+          },
+          {
+            title: '鏄惁榛樿',
+            dataIndex: 'active',
+            scopedSlots: {
+              customRender: 'active'
+            }
+          },
+          {
+            title: '鐘舵��',
+            dataIndex: 'status',
+            scopedSlots: {
+              customRender: 'status'
+            }
+          },
+          {
+            title: '鎺掑簭',
+            dataIndex: 'sort'
+          }
+        ],
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return getAppPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        loading: false,
+        selectedRowKeys: [],
+        selectedRows: [],
+        statusDict: [],
+        activeDict: []
+      }
+    },
+    created() {
+      this.sysDictTypeDropDown()
+      if (this.hasPerm('sysApp:edit') || this.hasPerm('sysApp:delete') || this.hasPerm('sysApp:setAsDefault')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '200px',
+          dataIndex: 'action',
+          scopedSlots: {
+            customRender: 'action'
+          }
+        })
+      }
+      this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+  window.addEventListener(
+  'resize',
+  () => {
+  this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+  },
+  false
+  )
+
+    },
+    methods: {
+      activeFilter(active) {
+        // eslint-disable-next-line eqeqeq
+        const values = this.activeDict.filter(item => item.code == active)
+        if (values.length > 0) {
+          return values[0].value
+        }
+      },
+      statusFilter(status) {
+        // eslint-disable-next-line eqeqeq
+        const values = this.statusDict.filter(item => item.code == status)
+        if (values.length > 0) {
+          return values[0].value
+        }
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown() {
+        sysDictTypeDropDown({
+          code: 'yes_or_no'
+        }).then((res) => {
+          this.activeDict = res.data
+        })
+        sysDictTypeDropDown({
+          code: 'common_status'
+        }).then((res) => {
+          this.statusDict = res.data
+        })
+      },
+      handleOk() {
+        this.$refs.table.refresh()
+      },
+      sysDefault(record) {
+        this.loading = true
+        sysAppSetAsDefault({
+          id: record.id
+        }).then((res) => {
+          this.loading = false
+          if (res.success) {
+            this.$message.success('璁剧疆鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('璁剧疆澶辫触锛�' + res.message)
+          }
+        })
+      },
+      /**
+       * 鍒犻櫎搴旂敤
+       */
+      sysAppDelete(record) {
+        this.loading = true
+        sysAppDelete(record).then((res) => {
+          this.loading = false
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+          }
+        }).catch((err) => {
+          this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+        })
+      },
+      editAppStatus(code, record) {
+        // eslint-disable-next-line no-unused-vars
+        const status = 0
+        // eslint-disable-next-line eqeqeq
+        if (code == 0) {
+          this.status = 1
+          // eslint-disable-next-line eqeqeq
+        } else if (code == 1) {
+          this.status = 0
+        }
+        sysAppChangeStatus({
+          id: record.id,
+          status: this.status
+        }).then(res => {
+          if (res.success) {
+            this.$message.success('鎿嶄綔鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鎿嶄綔澶辫触锛�' + res.message)
+          }
+        })
+      },
+      onChange(selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style scoped>
+  .table-operator {
+    margin-bottom: 18px;
+  }
+
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/config/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/config/addForm.vue
new file mode 100644
index 0000000..ffa836c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/config/addForm.vue
@@ -0,0 +1,130 @@
+<template>
+  <a-modal
+    title="鏂板鍙傛暟"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+        <a-form-item
+          label="鍙傛暟鍚嶇О"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ弬鏁板悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ弬鏁板悕绉帮紒'}]}]" />
+        </a-form-item>
+        <a-form-item
+          label="鍞竴缂栫爜"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+        </a-form-item>
+        <a-form-item
+          label="绯荤粺鍙傛暟"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+        >
+          <a-radio-group v-decorator="['sysFlag',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁涓虹郴缁熷弬鏁帮紒' }]}]" >
+            <a-radio-button value="Y" > 鏄� </a-radio-button>
+            <a-radio-button value="N" >  鍚� </a-radio-button>
+          </a-radio-group>
+        </a-form-item>
+        <a-form-item
+          label="鎵�灞炲垎绫�"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炲垎绫�" v-decorator="['groupCode', {rules: [{ required: true, message: '璇烽�夋嫨鍙栨墍灞炲垎绫伙紒' }]}]" >
+            <a-select-option v-for="(item,index) in groupCodeList" :key="index" :value="item.code" >{{ item.value }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="鍙傛暟鍊�"
+        >
+          <a-input placeholder="璇疯緭鍏ュ弬鏁板��" v-decorator="['value', {rules: [{required: true, message: '璇疯緭鍏ュ弬鏁板�硷紒'}]}]" />
+        </a-form-item>
+        <a-form-item
+          label="澶囨敞"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+<script>
+  import { sysDictTypeDropDown, sysConfigAdd } from '@/api/modular/system/configManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        formLoading: true,
+        groupCodeList: [],
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add () {
+        this.visible = true
+        this.sysDictTypeDropDown()
+      },
+      /**
+       * 鑾峰彇鎵�灞炲垎绫�
+       */
+      sysDictTypeDropDown () {
+        sysDictTypeDropDown({ code: 'consts_type' }).then((res) => {
+          this.groupCodeList = res.data
+          this.formLoading = false
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysConfigAdd(values).then((res) => {
+              this.confirmLoading = false
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/config/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/config/editForm.vue
new file mode 100644
index 0000000..a1354d5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/config/editForm.vue
@@ -0,0 +1,158 @@
+<template>
+  <a-modal
+    title="鍙傛暟缂栬緫"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+        <a-form-item
+          style="display: none;"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input v-decorator="['id']" />
+        </a-form-item>
+        <a-form-item
+          label="鍙傛暟鍚嶇О"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ弬鏁板悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ弬鏁板悕绉帮紒'}]}]" />
+        </a-form-item>
+        <a-form-item
+          label="鍞竴缂栫爜"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" :disabled="editDisabled" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+        </a-form-item>
+        <a-form-item
+          label="绯荤粺鍙傛暟"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+        >
+          <a-radio-group :disabled="editDisabled" v-decorator="['sysFlag',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁涓虹郴缁熷弬鏁帮紒' }]}]" >
+            <a-radio-button value="Y" > 鏄� </a-radio-button>
+            <a-radio-button value="N" >  鍚� </a-radio-button>
+          </a-radio-group>
+        </a-form-item>
+        <a-form-item
+          label="鎵�灞炲垎绫�"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-select :disabled="editDisabled" style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炲垎绫�" v-decorator="['groupCode', {rules: [{ required: true, message: '璇烽�夋嫨鍙栨墍灞炲垎绫伙紒' }]}]" >
+            <a-select-option v-for="(item,index) in groupCodeList" :key="index" :value="item.code" >{{ item.value }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="鍙傛暟鍊�"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ弬鏁板��" v-decorator="['value', {rules: [{required: true, message: '璇疯緭鍏ュ弬鏁板�硷紒'}]}]" />
+        </a-form-item>
+        <a-form-item
+          label="澶囨敞"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+<script>
+  import { sysDictTypeDropDown, sysConfigEdit } from '@/api/modular/system/configManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        formLoading: true,
+        groupCodeList: [],
+        editDisabled: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true
+        setTimeout(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              name: record.name,
+              code: record.code,
+              groupCode: record.groupCode,
+              sysFlag: record.sysFlag,
+              value: record.value,
+              remark: record.remark
+            }
+          )
+        }, 100)
+        // eslint-disable-next-line eqeqeq
+        if (record.sysFlag == 'Y') {
+           this.editDisabled = true
+        }
+        this.sysDictTypeDropDown()
+      },
+      /**
+       * 鑾峰彇鎵�灞炲垎绫�
+       */
+      sysDictTypeDropDown () {
+        sysDictTypeDropDown({ code: 'consts_type' }).then((res) => {
+          this.groupCodeList = res.data
+          this.formLoading = false
+        })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysConfigEdit(values).then((res) => {
+              this.confirmLoading = false
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+        this.editDisabled = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/config/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/config/index.vue
new file mode 100644
index 0000000..5a3a653
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/config/index.vue
@@ -0,0 +1,237 @@
+<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+    <div ref="boxForm" class="boxForm">
+      <x-card v-if="hasPerm('sysConfig:page')">
+        <div slot="content" class="table-page-search-wrapper">
+          <a-form layout="inline">
+            <a-row :gutter="48">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍙傛暟鍚嶇О">
+                  <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ弬鏁板悕绉�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍞竴缂栫爜">
+                  <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ュ敮涓�缂栫爜" />
+                </a-form-item>
+              </a-col>
+              <template v-if="advanced">
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="鎵�灞炲垎绫�">
+                    <a-select v-model="queryParam.groupCode" placeholder="璇烽�夋嫨鎵�灞炲垎绫�" allow-clear>
+                      <a-select-option
+                        v-for="(item, index) in groupCodeDictTypeDropDown"
+                        :key="index"
+                        :value="item.code"
+                        >{{ item.value }}</a-select-option
+                      >
+                    </a-select>
+                  </a-form-item>
+                </a-col>
+              </template>
+              <a-col :md="(!advanced && 8) || 24" :sm="24">
+                <span
+                  class="table-page-search-submitButtons"
+                  :style="(advanced && { float: 'right', overflow: 'hidden' }) || {}"
+                >
+                  <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                  <a-button style="margin-left: 8px" @click="() => (queryParam = {})">閲嶇疆</a-button>
+                  <a @click="toggleAdvanced" style="margin-left: 8px">
+                    {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                    <a-icon :type="advanced ? 'up' : 'down'" />
+                  </a>
+                </span>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
+      </x-card>
+    </div>
+
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :scroll="{ x: true, y: tableHeight }"
+        :rowKey="record => record.code"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+      >
+        <template slot="operator" v-if="hasPerm('sysConfig:add')">
+          <div ref="actionBar" class="actionBar">
+            <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysConfig:add')"
+              >鏂板閰嶇疆</a-button
+            >
+          </div>
+        </template>
+        <span slot="name" slot-scope="text">
+          <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+        </span>
+        <span slot="code" slot-scope="text">
+          <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+        </span>
+        <span slot="value" slot-scope="text">
+          <ellipsis :length="16" tooltip>{{ text }}</ellipsis>
+        </span>
+        <span slot="remark" slot-scope="text">
+          <ellipsis :length="16" tooltip>{{ text }}</ellipsis>
+        </span>
+        <span slot="groupCode" slot-scope="text">
+          <ellipsis :length="16" tooltip>{{ text }}</ellipsis>
+          <!-- {{ groupCodeFilter(text) }} -->
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('sysConfig:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('sysConfig:edit') & hasPerm('sysConfig:delete')" />
+          <a-popconfirm
+            v-if="hasPerm('sysConfig:delete')"
+            placement="topRight"
+            title="纭鍒犻櫎锛�"
+            @confirm="() => sysConfigDelete(record)"
+          >
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" v-if="hasPerm('sysConfig:add')" />
+      <edit-form ref="editForm" @ok="handleOk" v-if="hasPerm('sysConfig:edit')" />
+    </a-card>
+  </div>
+</template>
+<script>
+import { STable, Ellipsis, XCard } from '@/components'
+import { sysConfigPage, sysConfigDelete } from '@/api/modular/system/configManage'
+import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+//鑷畾涔塼able楂樺害
+import setTableHtMixin from '@/mixins/handleTableHt.js'
+import addForm from './addForm'
+import editForm from './editForm'
+export default {
+  mixins: [setTableHtMixin],
+  components: {
+    XCard,
+    STable,
+    Ellipsis,
+    addForm,
+    editForm
+  },
+  data() {
+    return {
+      // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+      advanced: false,
+      // 鏌ヨ鍙傛暟
+      queryParam: {},
+      // 琛ㄥご
+      columns: [
+        {
+          title: '鍙傛暟鍚嶇О',
+          dataIndex: 'name',
+          scopedSlots: { customRender: 'name' }
+        },
+        {
+          title: '鍞竴缂栫爜',
+          dataIndex: 'code',
+          scopedSlots: { customRender: 'code' }
+        },
+        {
+          title: '鍙傛暟鍊�',
+          dataIndex: 'value',
+          scopedSlots: { customRender: 'value' }
+        },
+        {
+          title: '鎵�灞炲垎绫�',
+          dataIndex: 'groupCode',
+          scopedSlots: { customRender: 'groupCode' }
+        },
+        {
+          title: '澶囨敞',
+          dataIndex: 'remark',
+          scopedSlots: { customRender: 'remark' }
+        }
+      ],
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: parameter => {
+        return sysConfigPage(Object.assign(parameter, this.queryParam)).then(res => {
+          return res.data
+        })
+      },
+      selectedRowKeys: [],
+      selectedRows: [],
+      groupCodeDictTypeDropDown: []
+    }
+  },
+  /**
+   * 鍒濆鍖栧垽鏂寜閽潈闄愭槸鍚︽嫢鏈夛紝娌℃湁鍒欎笉鐜板疄鍒�
+   */
+  created() {
+    this.sysDictTypeDropDown()
+    if (this.hasPerm('sysConfig:edit') || this.hasPerm('sysConfig:delete')) {
+      this.columns.push({
+        title: '鎿嶄綔',
+        width: '150px',
+        dataIndex: 'action',
+        scopedSlots: { customRender: 'action' }
+      })
+    }
+    this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+    window.addEventListener(
+      'resize',
+      () => {
+        this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+      },
+      false
+    )
+  },
+  methods: {
+    /**
+     * 鑾峰彇瀛楀吀鏁版嵁
+     */
+    sysDictTypeDropDown() {
+      sysDictTypeDropDown({ code: 'consts_type' }).then(res => {
+        this.groupCodeDictTypeDropDown = res.data
+      })
+    },
+    groupCodeFilter(groupCode) {
+      // eslint-disable-next-line eqeqeq
+      const values = this.groupCodeDictTypeDropDown.filter(item => item.code == groupCode)
+      if (values.length > 0) {
+        return values[0].value
+      }
+    },
+    sysConfigDelete(record) {
+      sysConfigDelete(record)
+        .then(res => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+          }
+        })
+        .catch(err => {
+          this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+        })
+    },
+    toggleAdvanced() {
+      this.advanced = !this.advanced
+      this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+    },
+    handleOk() {
+      this.$refs.table.refresh()
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    }
+  }
+}
+</script>
+<style lang="less">
+.table-operator {
+  margin-bottom: 18px;
+}
+button {
+  margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Analysis.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Analysis.vue
new file mode 100644
index 0000000..6fd22be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Analysis.vue
@@ -0,0 +1,385 @@
+<template>
+  <div class="page-header-index-wide">
+    <a-row :gutter="24">
+      <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
+        <chart-card :loading="loading" title="鎬婚攢鍞" total="锟�126,560">
+          <a-tooltip title="鎸囨爣璇存槑" slot="action">
+            <a-icon type="info-circle-o" />
+          </a-tooltip>
+          <div>
+            <trend flag="up" style="margin-right: 16px;">
+              <span slot="term">鍛ㄥ悓姣�</span>
+              12%
+            </trend>
+            <trend flag="down">
+              <span slot="term">鏃ュ悓姣�</span>
+              11%
+            </trend>
+          </div>
+          <template slot="footer">鏃ュ潎閿�鍞<span>锟� 234.56</span></template>
+        </chart-card>
+      </a-col>
+      <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
+        <chart-card :loading="loading" title="璁块棶閲�" :total="8846 | NumberFormat">
+          <a-tooltip title="鎸囨爣璇存槑" slot="action">
+            <a-icon type="info-circle-o" />
+          </a-tooltip>
+          <div>
+            <mini-area />
+          </div>
+          <template slot="footer">鏃ヨ闂噺<span> {{ '1234' | NumberFormat }}</span></template>
+        </chart-card>
+      </a-col>
+      <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
+        <chart-card :loading="loading" title="鏀粯绗旀暟" :total="6560 | NumberFormat">
+          <a-tooltip title="鎸囨爣璇存槑" slot="action">
+            <a-icon type="info-circle-o" />
+          </a-tooltip>
+          <div>
+            <mini-bar />
+          </div>
+          <template slot="footer">杞寲鐜� <span>60%</span></template>
+        </chart-card>
+      </a-col>
+      <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
+        <chart-card :loading="loading" title="杩愯惀娲诲姩鏁堟灉" total="78%">
+          <a-tooltip title="鎸囨爣璇存槑" slot="action">
+            <a-icon type="info-circle-o" />
+          </a-tooltip>
+          <div>
+            <mini-progress color="rgb(19, 194, 194)" :target="80" :percentage="78" height="8px" />
+          </div>
+          <template slot="footer">
+            <trend flag="down" style="margin-right: 16px;">
+              <span slot="term">鍚屽懆姣�</span>
+              12%
+            </trend>
+            <trend flag="up">
+              <span slot="term">鏃ョ幆姣�</span>
+              80%
+            </trend>
+          </template>
+        </chart-card>
+      </a-col>
+    </a-row>
+    <a-card :loading="loading" :bordered="false" :body-style="{padding: '0'}">
+      <div class="salesCard">
+        <a-tabs default-active-key="1" size="large" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}">
+          <div class="extra-wrapper" slot="tabBarExtraContent">
+            <div class="extra-item">
+              <a>浠婃棩</a>
+              <a>鏈懆</a>
+              <a>鏈湀</a>
+              <a>鏈勾</a>
+            </div>
+            <a-range-picker :style="{width: '230px'}" />
+          </div>
+          <a-tab-pane loading="true" tab="閿�鍞" key="1">
+            <a-row>
+              <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">
+                <bar :data="barData" title="閿�鍞鎺掕" />
+              </a-col>
+              <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">
+                <rank-list title="闂ㄥ簵閿�鍞帓琛屾" :list="rankList"/>
+              </a-col>
+            </a-row>
+          </a-tab-pane>
+          <a-tab-pane tab="璁块棶閲�" key="2">
+            <a-row>
+              <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">
+                <bar :data="barData2" title="閿�鍞瓒嬪娍" />
+              </a-col>
+              <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">
+                <rank-list title="闂ㄥ簵閿�鍞帓琛屾" :list="rankList"/>
+              </a-col>
+            </a-row>
+          </a-tab-pane>
+        </a-tabs>
+      </div>
+    </a-card>
+    <div class="antd-pro-pages-dashboard-analysis-twoColLayout" :class="isDesktop() ? 'desktop' : ''">
+      <a-row :gutter="24" type="flex" :style="{ marginTop: '24px' }">
+        <a-col :xl="12" :lg="24" :md="24" :sm="24" :xs="24">
+          <a-card :loading="loading" :bordered="false" title="绾夸笂鐑棬鎼滅储" :style="{ height: '100%' }">
+            <a-dropdown :trigger="['click']" placement="bottomLeft" slot="extra">
+              <a class="ant-dropdown-link" href="#">
+                <a-icon type="ellipsis" />
+              </a>
+              <a-menu slot="overlay">
+                <a-menu-item>
+                  <a href="javascript:;">鎿嶄綔涓�</a>
+                </a-menu-item>
+                <a-menu-item>
+                  <a href="javascript:;">鎿嶄綔浜�</a>
+                </a-menu-item>
+              </a-menu>
+            </a-dropdown>
+            <a-row :gutter="68">
+              <a-col :xs="24" :sm="12" :style="{ marginBottom: ' 24px'}">
+                <number-info :total="12321" :sub-total="17.1">
+                  <span slot="subtitle">
+                    <span>鎼滅储鐢ㄦ埛鏁�</span>
+                    <a-tooltip title="鎸囨爣璇存槑" slot="action">
+                      <a-icon type="info-circle-o" :style="{ marginLeft: '8px' }" />
+                    </a-tooltip>
+                  </span>
+                </number-info>
+                <!-- miniChart -->
+                <div>
+                  <mini-smooth-area :style="{ height: '45px' }" :dataSource="searchUserData" :scale="searchUserScale" />
+                </div>
+              </a-col>
+              <a-col :xs="24" :sm="12" :style="{ marginBottom: ' 24px'}">
+                <number-info :total="2.7" :sub-total="26.2" status="down">
+                  <span slot="subtitle">
+                    <span>浜哄潎鎼滅储娆℃暟</span>
+                    <a-tooltip title="鎸囨爣璇存槑" slot="action">
+                      <a-icon type="info-circle-o" :style="{ marginLeft: '8px' }" />
+                    </a-tooltip>
+                  </span>
+                </number-info>
+                <!-- miniChart -->
+                <div>
+                  <mini-smooth-area :style="{ height: '45px' }" :dataSource="searchUserData" :scale="searchUserScale" />
+                </div>
+              </a-col>
+            </a-row>
+            <div class="ant-table-wrapper">
+              <a-table
+                row-key="index"
+                size="small"
+                :columns="searchTableColumns"
+                :dataSource="searchData"
+                :pagination="{ pageSize: 5 }"
+              >
+                <span slot="range" slot-scope="text, record">
+                  <trend :flag="record.status === 0 ? 'up' : 'down'">
+                    {{ text }}%
+                  </trend>
+                </span>
+              </a-table>
+            </div>
+          </a-card>
+        </a-col>
+        <a-col :xl="12" :lg="24" :md="24" :sm="24" :xs="24">
+          <a-card class="antd-pro-pages-dashboard-analysis-salesCard" :loading="loading" :bordered="false" title="閿�鍞绫诲埆鍗犳瘮" :style="{ height: '100%' }">
+            <div slot="extra" style="height: inherit;">
+              <!-- style="bottom: 12px;display: inline-block;" -->
+              <span class="dashboard-analysis-iconGroup">
+                <a-dropdown :trigger="['click']" placement="bottomLeft">
+                  <a-icon type="ellipsis" class="ant-dropdown-link" />
+                  <a-menu slot="overlay">
+                    <a-menu-item>
+                      <a href="javascript:;">鎿嶄綔涓�</a>
+                    </a-menu-item>
+                    <a-menu-item>
+                      <a href="javascript:;">鎿嶄綔浜�</a>
+                    </a-menu-item>
+                  </a-menu>
+                </a-dropdown>
+              </span>
+              <div class="analysis-salesTypeRadio">
+                <a-radio-group defaultValue="a">
+                  <a-radio-button value="a">鍏ㄩ儴娓犻亾</a-radio-button>
+                  <a-radio-button value="b">绾夸笂</a-radio-button>
+                  <a-radio-button value="c">闂ㄥ簵</a-radio-button>
+                </a-radio-group>
+              </div>
+            </div>
+            <h4>閿�鍞</h4>
+            <div>
+              <!-- style="width: calc(100% - 240px);" -->
+              <div>
+                <v-chart :force-fit="true" :height="405" :data="pieData" :scale="pieScale">
+                  <v-tooltip :showTitle="false" dataKey="item*percent" />
+                  <v-axis />
+                  <!-- position="right" :offsetX="-140" -->
+                  <v-legend dataKey="item"/>
+                  <v-pie position="percent" color="item" :vStyle="pieStyle" />
+                  <v-coord type="theta" :radius="0.75" :innerRadius="0.6" />
+                </v-chart>
+              </div>
+            </div>
+          </a-card>
+        </a-col>
+      </a-row>
+    </div>
+  </div>
+</template>
+<script>
+import moment from 'moment'
+import { ChartCard, MiniArea, MiniBar, MiniProgress, RankList, Bar, Trend, NumberInfo, MiniSmoothArea } from '@/components'
+import { mixinDevice } from '@/utils/mixin'
+const barData = []
+const barData2 = []
+for (let i = 0; i < 12; i += 1) {
+  barData.push({
+    x: `${i + 1}鏈坄,
+    y: Math.floor(Math.random() * 1000) + 200
+  })
+  barData2.push({
+    x: `${i + 1}鏈坄,
+    y: Math.floor(Math.random() * 1000) + 200
+  })
+}
+const rankList = []
+for (let i = 0; i < 7; i++) {
+  rankList.push({
+    name: '鐧介弓宀� ' + (i + 1) + ' 鍙峰簵',
+    total: 1234.56 - i * 100
+  })
+}
+const searchUserData = []
+for (let i = 0; i < 7; i++) {
+  searchUserData.push({
+    x: moment().add(i, 'days').format('YYYY-MM-DD'),
+    y: Math.ceil(Math.random() * 10)
+  })
+}
+const searchUserScale = [
+  {
+    dataKey: 'x',
+    alias: '鏃堕棿'
+  },
+  {
+    dataKey: 'y',
+    alias: '鐢ㄦ埛鏁�',
+    min: 0,
+    max: 10
+  }]
+const searchTableColumns = [
+  {
+    dataIndex: 'MenuIndex.vue',
+    title: '鎺掑悕',
+    width: 90
+  },
+  {
+    dataIndex: 'keyword',
+    title: '鎼滅储鍏抽敭璇�'
+  },
+  {
+    dataIndex: 'count',
+    title: '鐢ㄦ埛鏁�'
+  },
+  {
+    dataIndex: 'range',
+    title: '鍛ㄦ定骞�',
+    align: 'right',
+    sorter: (a, b) => a.range - b.range,
+    scopedSlots: { customRender: 'range' }
+  }
+]
+const searchData = []
+for (let i = 0; i < 50; i += 1) {
+  searchData.push({
+    index: i + 1,
+    keyword: `鎼滅储鍏抽敭璇�-${i}`,
+    count: Math.floor(Math.random() * 1000),
+    range: Math.floor(Math.random() * 100),
+    status: Math.floor((Math.random() * 10) % 2)
+  })
+}
+const DataSet = require('@antv/data-set')
+const sourceData = [
+  { item: '瀹剁敤鐢靛櫒', count: 32.2 },
+  { item: '椋熺敤閰掓按', count: 21 },
+  { item: '涓姢鍋ュ悍', count: 17 },
+  { item: '鏈嶉グ绠卞寘', count: 13 },
+  { item: '姣嶅┐浜у搧', count: 9 },
+  { item: '鍏朵粬', count: 7.8 }
+]
+const pieScale = [{
+  dataKey: 'percent',
+  min: 0,
+  formatter: '.0%'
+}]
+const dv = new DataSet.View().source(sourceData)
+dv.transform({
+  type: 'percent',
+  field: 'count',
+  dimension: 'item',
+  as: 'percent'
+})
+const pieData = dv.rows
+export default {
+  name: 'Analysis',
+  mixins: [mixinDevice],
+  components: {
+    ChartCard,
+    MiniArea,
+    MiniBar,
+    MiniProgress,
+    RankList,
+    Bar,
+    Trend,
+    NumberInfo,
+    MiniSmoothArea
+  },
+  data () {
+    return {
+      loading: true,
+      rankList,
+      // 鎼滅储鐢ㄦ埛鏁�
+      searchUserData,
+      searchUserScale,
+      searchTableColumns,
+      searchData,
+      barData,
+      barData2,
+      //
+      pieScale,
+      pieData,
+      sourceData,
+      pieStyle: {
+        stroke: '#fff',
+        lineWidth: 1
+      }
+    }
+  },
+  created () {
+    setTimeout(() => {
+      this.loading = !this.loading
+    }, 1000)
+  }
+}
+</script>
+<style lang="less" scoped>
+  .extra-wrapper {
+    line-height: 55px;
+    padding-right: 24px;
+    .extra-item {
+      display: inline-block;
+      margin-right: 24px;
+
+      a {
+        margin-left: 24px;
+      }
+    }
+  }
+  .antd-pro-pages-dashboard-analysis-twoColLayout {
+    position: relative;
+    display: flex;
+    display: block;
+    flex-flow: row wrap;
+  }
+  .antd-pro-pages-dashboard-analysis-salesCard {
+    height: calc(100% - 24px);
+    /deep/ .ant-card-head {
+      position: relative;
+    }
+  }
+  .dashboard-analysis-iconGroup {
+    i {
+      margin-left: 16px;
+      color: rgba(0,0,0,.45);
+      cursor: pointer;
+      transition: color .32s;
+      color: black;
+    }
+  }
+  .analysis-salesTypeRadio {
+    position: absolute;
+    right: 54px;
+    bottom: 12px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Monitor.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Monitor.vue
new file mode 100644
index 0000000..2b9c6c1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Monitor.vue
@@ -0,0 +1,15 @@
+<template>
+  <div>
+    Monitor
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'Monitor'
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/TestWork.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/TestWork.vue
new file mode 100644
index 0000000..c36ece5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/TestWork.vue
@@ -0,0 +1,115 @@
+<template>
+  <div>
+    <h2>鏈〉闈㈠唴瀹瑰潎涓烘祴璇曞姛鑳斤紝鏆備笉鎻愪緵绋冲畾鎬т繚璇�</h2>
+    <a-divider />
+    <div class="multi-tab-test">
+      <h4>澶氭爣绛剧粍浠舵祴璇曞姛鑳�</h4>
+      <a-button @click="handleCloseCurrentTab" style="margin-right: 16px;">鍏抽棴褰撳墠椤�</a-button>
+      <a-button @click="handleOpenTab" style="margin-right: 16px;">鎵撳紑 浠诲姟鍒楄〃</a-button>
+      <a-popconfirm :visible="visible" @confirm="confirm" @cancel="cancel" okText="纭畾" cancelText="鍙栨秷">
+        <template v-slot:title>
+          <div>
+            <a-form :form="form" layout="inline">
+              <a-form-item label="鑷畾涔夊悕绉�">
+                <a-input v-decorator="['tabName', {rules: [{required: true, message: '璇疯緭鍏ユ柊鐨� Tab 鍚嶇О'}]}]"/>
+              </a-form-item>
+            </a-form>
+          </div>
+        </template>
+        <a-button @click="() => visible = !visible" style="margin-right: 16px;">淇敼褰撳墠 Tab 鍚嶇О</a-button>
+      </a-popconfirm>
+
+      <a-popconfirm :visible="visible2" @confirm="confirm2" @cancel="() => visible2 = false" okText="纭畾" cancelText="鍙栨秷">
+        <template v-slot:title>
+          <div>
+            <p>椤甸潰 KEY 鏄敱椤甸潰鐨勮矾鐢� <code>path</code> 鍐冲畾鐨�</p>
+            <p>濡傛灉瑕佷慨鏀规煇涓�涓〉闈㈡爣棰橈紝璇ラ〉闈㈠繀椤诲凡缁忚鎵撳紑鍦� Tab 鏍�</p>
+            <p>鍚庢湡鍙互鑰冭檻浼樺寲鍒扮紪绋嬪紡 Tab 鏍忥紝灏卞彲浠ユ病鏈夎繖绉嶉檺鍒�</p>
+            <a-form :form="form2" layout="inline">
+              <a-form-item label="椤甸潰KEY">
+                <a-input v-decorator="['tabKey', { initialValue: '/dashboard/workplace' }]" />
+              </a-form-item>
+              <a-form-item label="鑷畾涔夊悕绉�">
+                <a-input v-decorator="['tabName', {rules: [{required: true, message: '璇疯緭鍏ユ柊鐨� Tab 鍚嶇О'}]}]"/>
+              </a-form-item>
+            </a-form>
+          </div>
+        </template>
+        <a-button @click="() => visible2 = !visible2">淇敼鏌愪竴涓� Tab 鍚嶇О</a-button>
+      </a-popconfirm>
+    </div>
+    <a-divider />
+    <div class="page-loading-test">
+      <h4>鍏ㄥ眬閬僵娴嬭瘯</h4>
+      <a-button @click="handleOpenLoading" style="margin-right: 16px;">鎵撳紑閬僵(5s 鑷姩鍏抽棴)</a-button>
+      <a-button @click="handleOpenLoadingCustomTip">鎵撳紑閬僵(鑷畾涔夋彁绀鸿)</a-button>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'TestWork',
+  data () {
+    return {
+      visible: false,
+      visible2: false
+    }
+  },
+  created () {
+    this.form = this.$form.createForm(this)
+    this.form2 = this.$form.createForm(this)
+  },
+  methods: {
+    handleCloseCurrentTab () {
+      this.$multiTab.closeCurrentPage() // or this.$multiTab.close()
+    },
+    handleOpenTab () {
+      this.$multiTab.open('/features/task')
+    },
+
+    handleOpenLoading () {
+      this.$nextTick(function () {
+      })
+      this.$loading.show()
+      setTimeout(() => {
+        this.$loading.hide()
+      }, 5000)
+    },
+    handleOpenLoadingCustomTip () {
+      this.$loading.show({ tip: '鑷畾涔夋彁绀鸿' })
+      setTimeout(() => {
+        this.$loading.hide()
+      }, 5000)
+    },
+
+    // confirm
+    confirm (e) {
+      e.stopPropagation()
+      const { path } = this.$route
+      this.form.validateFields((err, values) => {
+        if (!err) {
+          this.$multiTab.rename(path, values.tabName)
+          this.visible = false
+        }
+      })
+    },
+    cancel () {
+      this.visible = false
+    },
+    confirm2 (e) {
+      e.stopPropagation()
+      this.form2.validateFields((err, values) => {
+        if (!err) {
+          this.$multiTab.rename(values.tabKey, values.tabName)
+          this.visible2 = false
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Workplace.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Workplace.vue
new file mode 100644
index 0000000..9ea50d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Workplace.vue
@@ -0,0 +1,526 @@
+<template>
+  <page-view :avatar="avatar" :title="false">
+    <div slot="headerContent">
+      <div class="title">{{ timeFix }}锛寋{ user.name }}<span class="welcome-text">锛寋{ welcome }}</span></div>
+      <div style="margin-bottom:10px">鍓嶇宸ョ▼甯� | 铓傝殎閲戞湇 - 鏌愭煇鏌愪簨涓氱兢 - VUE骞冲彴</div>
+    </div>
+    <div slot="extra">
+      <a-row class="more-info">
+        <a-col :span="8">
+          <head-info title="椤圭洰" content="56" :center="false" :bordered="false"/>
+        </a-col>
+        <a-col :span="8">
+          <head-info title="鍥㈤槦鎺掑悕" content="8/24" :center="false" :bordered="false"/>
+        </a-col>
+        <a-col :span="8">
+          <head-info title="椤圭洰鏁�" content="2,223" :center="false" />
+        </a-col>
+      </a-row>
+    </div>
+
+    <div>
+      <a-row :gutter="24">
+        <a-col :xl="16" :lg="24" :md="24" :sm="24" :xs="24">
+          <a-card
+            class="project-list"
+            :loading="loading"
+            style="margin-bottom: 24px;"
+            :bordered="false"
+            title="杩涜涓殑椤圭洰"
+            :body-style="{ padding: 0 }">
+            <a slot="extra">鍏ㄩ儴椤圭洰</a>
+            <div>
+              <a-card-grid class="project-card-grid" :key="i" v-for="(item, i) in projects">
+                <a-card :bordered="false" :body-style="{ padding: 0 }">
+                  <a-card-meta>
+                    <div slot="title" class="card-title">
+                      <a-avatar size="small" :src="item.cover"/>
+                      <a>{{ item.title }}</a>
+                    </div>
+                    <div slot="description" class="card-description">
+                      {{ item.description }}
+                    </div>
+                  </a-card-meta>
+                  <div class="project-item">
+                    <a href="/#/">绉戝鎼爾缁�</a>
+                    <span class="datetime">9灏忔椂鍓�</span>
+                  </div>
+                </a-card>
+              </a-card-grid>
+            </div>
+          </a-card>
+
+          <a-card :loading="loading" title="鍔ㄦ��" :bordered="false">
+            <a-list>
+              <a-list-item :key="index" v-for="(item, index) in activities">
+                <a-list-item-meta>
+                  <a-avatar slot="avatar" :src="item.user.avatar" />
+                  <div slot="title">
+                    <span>{{ item.user.nickname }}</span>&nbsp;
+                    鍦�&nbsp;<a href="#">{{ item.project.name }}</a>&nbsp;
+                    <span>{{ item.project.action }}</span>&nbsp;
+                    <a href="#">{{ item.project.event }}</a>
+                  </div>
+                  <div slot="description">{{ item.time }}</div>
+                </a-list-item-meta>
+              </a-list-item>
+            </a-list>
+          </a-card>
+        </a-col>
+        <a-col
+          style="padding: 0 12px"
+          :xl="8"
+          :lg="24"
+          :md="24"
+          :sm="24"
+          :xs="24">
+          <a-card title="蹇�熷紑濮� / 渚挎嵎瀵艰埅" style="margin-bottom: 24px" :bordered="false" :body-style="{padding: 0}">
+            <div class="item-group">
+              <a>鎿嶄綔涓�</a>
+              <a>鎿嶄綔浜�</a>
+              <a>鎿嶄綔涓�</a>
+              <a>鎿嶄綔鍥�</a>
+              <a>鎿嶄綔浜�</a>
+              <a>鎿嶄綔鍏�</a>
+              <a-button size="small" type="primary" ghost icon="plus">娣诲姞</a-button>
+            </div>
+          </a-card>
+          <a-card title="XX 鎸囨暟" style="margin-bottom: 24px" :loading="radarLoading" :bordered="false" :body-style="{ padding: 0 }">
+            <div style="min-height: 400px;">
+              <!-- :scale="scale" :axis1Opts="axis1Opts" :axis2Opts="axis2Opts"  -->
+              <radar :data="radarData" />
+            </div>
+          </a-card>
+          <a-card :loading="loading" title="鍥㈤槦" :bordered="false">
+            <div class="members">
+              <a-row>
+                <a-col :span="12" v-for="(item, index) in teams" :key="index">
+                  <a>
+                    <a-avatar size="small" :src="item.avatar" />
+                    <span class="member">{{ item.name }}</span>
+                  </a>
+                </a-col>
+              </a-row>
+            </div>
+          </a-card>
+        </a-col>
+      </a-row>
+    </div>
+  </page-view>
+</template>
+
+<script>
+  import { timeFix } from '@/utils/util'
+  import { mapState } from 'vuex'
+  import { PageView } from '@/layouts'
+  import HeadInfo from '@/components/tools/HeadInfo'
+  import { Radar } from '@/components'
+  const DataSet = require('@antv/data-set')
+
+  export default {
+    name: 'Workplace',
+    components: {
+      PageView,
+      HeadInfo,
+      Radar
+    },
+    data () {
+      return {
+        timeFix: timeFix(),
+        avatar: '',
+        user: {},
+
+        projects: [],
+        loading: true,
+        radarLoading: true,
+        activities: [],
+        teams: [],
+
+        // data
+        axis1Opts: {
+          dataKey: 'item',
+          line: null,
+          tickLine: null,
+          grid: {
+            lineStyle: {
+              lineDash: null
+            },
+            hideFirstLine: false
+          }
+        },
+        axis2Opts: {
+          dataKey: 'score',
+          line: null,
+          tickLine: null,
+          grid: {
+            type: 'polygon',
+            lineStyle: {
+              lineDash: null
+            }
+          }
+        },
+        scale: [{
+          dataKey: 'score',
+          min: 0,
+          max: 80
+        }],
+        axisData: [
+          { item: '寮曠敤', a: 70, b: 30, c: 40 },
+          { item: '鍙g', a: 60, b: 70, c: 40 },
+          { item: '浜ч噺', a: 50, b: 60, c: 40 },
+          { item: '璐$尞', a: 40, b: 50, c: 40 },
+          { item: '鐑害', a: 60, b: 70, c: 40 },
+          { item: '寮曠敤', a: 70, b: 50, c: 40 }
+        ],
+        radarData: []
+      }
+    },
+    computed: {
+      ...mapState({
+        nickname: (state) => state.user.nickname,
+        welcome: (state) => state.user.welcome
+      }),
+      userInfo () {
+        return this.$store.getters.userInfo
+      }
+    },
+    created () {
+      this.user = this.userInfo
+      this.avatar = process.env.VUE_APP_API_BASE_URL + '/sysFileInfo/preview?id=' + this.userInfo.avatar
+    },
+    mounted () {
+      this.getProjects()
+      this.getActivity()
+      this.getTeams()
+      this.initRadar()
+    },
+    methods: {
+      getProjects () {
+        this.projects = [{
+          id: 1,
+          cover: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
+          title: 'Alipay',
+          description: '閭f槸涓�绉嶅唴鍦ㄧ殑涓滆タ锛� 浠栦滑鍒拌揪涓嶄簡锛屼篃鏃犳硶瑙﹀強鐨�',
+          status: 1,
+          updatedAt: '2018-07-26 00:00:00'
+        },
+          {
+            id: 2,
+            cover: 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png',
+            title: 'Angular',
+            description: '甯屾湜鏄竴涓ソ涓滆タ锛屼篃璁告槸鏈�濂界殑锛屽ソ涓滆タ鏄笉浼氭秷浜$殑',
+            status: 1,
+            updatedAt: '2018-07-26 00:00:00'
+          },
+          {
+            id: 3,
+            cover: 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png',
+            title: 'Ant Design',
+            description: '鍩庨晣涓湁閭d箞澶氱殑閰掗锛屽ス鍗村亸鍋忚蛋杩涗簡鎴戠殑閰掗',
+            status: 1,
+            updatedAt: '2018-07-26 00:00:00'
+          },
+          {
+            id: 4,
+            cover: 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png',
+            title: 'iWare.Wms',
+            description: '閭f椂鍊欐垜鍙細鎯宠嚜宸辨兂瑕佷粈涔堬紝浠庝笉鎯宠嚜宸辨嫢鏈変粈涔�',
+            status: 1,
+            updatedAt: '2018-07-26 00:00:00'
+          },
+          {
+            id: 5,
+            cover: 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png',
+            title: 'Bootstrap',
+            description: '鍑涘啲灏嗚嚦',
+            status: 1,
+            updatedAt: '2018-07-26 00:00:00'
+          },
+          {
+            id: 6,
+            cover: 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png',
+            title: 'Vue',
+            description: '鐢熷懡灏卞儚涓�鐩掑阀鍏嬪姏锛岀粨鏋滃線寰�鍑轰汉鎰忔枡',
+            status: 1,
+            updatedAt: '2018-07-26 00:00:00'
+          }
+        ]
+        this.loading = false
+      },
+      getActivity () {
+        this.activities = [{
+          id: 1,
+          user: {
+            nickname: '@name',
+            avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
+          },
+          project: {
+            name: '鐧介弓閰辨补寮�鍙戠粍',
+            action: '鏇存柊',
+            event: '鐣粍璁″垝'
+          },
+          time: '2018-08-23 14:47:00'
+        },
+          {
+            id: 1,
+            user: {
+              nickname: '钃濊帗閰�',
+              avatar: 'https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png'
+            },
+            project: {
+              name: '鐧介弓閰辨补寮�鍙戠粍',
+              action: '鏇存柊',
+              event: '鐣粍璁″垝'
+            },
+            time: '2018-08-23 09:35:37'
+          },
+          {
+            id: 1,
+            user: {
+              nickname: '@name',
+              avatar: '@image(64x64)'
+            },
+            project: {
+              name: '鐧介弓閰辨补寮�鍙戠粍',
+              action: '鍒涘缓',
+              event: '鐣粍璁″垝'
+            },
+            time: '2017-05-27 00:00:00'
+          },
+          {
+            id: 1,
+            user: {
+              nickname: '鏇蹭附涓�',
+              avatar: '@image(64x64)'
+            },
+            project: {
+              name: '楂橀�兼牸璁捐澶╁洟',
+              action: '鏇存柊',
+              event: '鍏湀杩唬'
+            },
+            time: '2018-08-23 14:47:00'
+          },
+          {
+            id: 1,
+            user: {
+              nickname: '@name',
+              avatar: '@image(64x64)'
+            },
+            project: {
+              name: '楂橀�兼牸璁捐澶╁洟',
+              action: 'created',
+              event: '鍏湀杩唬'
+            },
+            time: '2018-08-23 14:47:00'
+          },
+          {
+            id: 1,
+            user: {
+              nickname: '鏇蹭附涓�',
+              avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
+            },
+            project: {
+              name: '楂橀�兼牸璁捐澶╁洟',
+              action: 'created',
+              event: '鍏湀杩唬'
+            },
+            time: '2018-08-23 14:47:00'
+          }
+        ]
+      },
+      getTeams () {
+        this.teams = [{
+          id: 1,
+          name: '绉戝鎼爾缁�',
+          avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
+        },
+          {
+            id: 2,
+            name: '绋嬪簭鍛樻棩甯�',
+            avatar: 'https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png'
+          },
+          {
+            id: 1,
+            name: '璁捐澶╁洟',
+            avatar: 'https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png'
+          },
+          {
+            id: 1,
+            name: '涓簩灏戝コ鍥�',
+            avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png'
+          },
+          {
+            id: 1,
+            name: '楠椾綘瀛﹁绠楁満',
+            avatar: 'https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png'
+          }
+        ]
+      },
+      initRadar () {
+        this.radarLoading = true
+        const dv = new DataSet.View().source(
+          [{
+            item: '寮曠敤',
+            '涓汉': 70,
+            '鍥㈤槦': 30,
+            '閮ㄩ棬': 40
+          },
+            {
+              item: '鍙g',
+              '涓汉': 60,
+              '鍥㈤槦': 70,
+              '閮ㄩ棬': 40
+            },
+            {
+              item: '浜ч噺',
+              '涓汉': 50,
+              '鍥㈤槦': 60,
+              '閮ㄩ棬': 40
+            },
+            {
+              item: '璐$尞',
+              '涓汉': 40,
+              '鍥㈤槦': 50,
+              '閮ㄩ棬': 40
+            },
+            {
+              item: '鐑害',
+              '涓汉': 60,
+              '鍥㈤槦': 70,
+              '閮ㄩ棬': 40
+            },
+            {
+              item: '寮曠敤',
+              '涓汉': 70,
+              '鍥㈤槦': 50,
+              '閮ㄩ棬': 40
+            }
+          ]
+        )
+        dv.transform({
+          type: 'fold',
+          fields: ['涓汉', '鍥㈤槦', '閮ㄩ棬'],
+          key: 'user',
+          value: 'score'
+        })
+
+        this.radarData = dv.rows
+        this.radarLoading = false
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+  .project-list {
+
+    .card-title {
+      font-size: 0;
+
+      a {
+        color: rgba(0, 0, 0, 0.85);
+        margin-left: 12px;
+        line-height: 24px;
+        height: 24px;
+        display: inline-block;
+        vertical-align: top;
+        font-size: 14px;
+
+        &:hover {
+          color: #1890ff;
+        }
+      }
+    }
+    .card-description {
+      color: rgba(0, 0, 0, 0.45);
+      height: 44px;
+      line-height: 22px;
+      overflow: hidden;
+    }
+    .project-item {
+      display: flex;
+      margin-top: 8px;
+      overflow: hidden;
+      font-size: 12px;
+      height: 20px;
+      line-height: 20px;
+      a {
+        color: rgba(0, 0, 0, 0.45);
+        display: inline-block;
+        flex: 1 1 0;
+
+        &:hover {
+          color: #1890ff;
+        }
+      }
+      .datetime {
+        color: rgba(0, 0, 0, 0.25);
+        flex: 0 0 auto;
+        float: right;
+      }
+    }
+    .ant-card-meta-description {
+      color: rgba(0, 0, 0, 0.45);
+      height: 44px;
+      line-height: 22px;
+      overflow: hidden;
+    }
+  }
+
+  .item-group {
+    padding: 20px 0 8px 24px;
+    font-size: 0;
+    a {
+      color: rgba(0, 0, 0, 0.65);
+      display: inline-block;
+      font-size: 14px;
+      margin-bottom: 13px;
+      width: 25%;
+    }
+  }
+
+  .members {
+    a {
+      display: block;
+      margin: 12px 0;
+      line-height: 24px;
+      height: 24px;
+      .member {
+        font-size: 14px;
+        color: rgba(0, 0, 0, .65);
+        line-height: 24px;
+        max-width: 100px;
+        vertical-align: top;
+        margin-left: 12px;
+        transition: all 0.3s;
+        display: inline-block;
+      }
+      &:hover {
+        span {
+          color: #1890ff;
+        }
+      }
+    }
+  }
+
+  .mobile {
+
+    .project-list {
+
+      .project-card-grid {
+        width: 100%;
+      }
+    }
+
+    .more-info {
+      border: 0;
+      padding-top: 16px;
+      margin: 16px 0 16px;
+    }
+
+    .headerContent .title .welcome-text {
+      display: none;
+    }
+  }
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dict/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/addForm.vue
new file mode 100644
index 0000000..94dad70
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/addForm.vue
@@ -0,0 +1,106 @@
+<template>
+  <a-modal
+    title="鏂板瀛楀吀绫诲瀷"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item
+          label="绫诲瀷鍚嶇О"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ョ被鍨嬪悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ョ被鍨嬪悕绉帮紒'}]}]" />
+        </a-form-item>
+
+        <a-form-item
+          label="鍞竴缂栫爜"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+        </a-form-item>
+
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="鎺掑簭"
+        >
+          <a-input-number placeholder="璇疯緭鍏ユ帓搴�" style="width: 100%" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+        </a-form-item>
+
+        <a-form-item
+          label="澶囨敞"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+        </a-form-item>
+
+      </a-form>
+
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { sysDictTypeAdd } from '@/api/modular/system/dictManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+      },
+
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysDictTypeAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.form.resetFields()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/addForm.vue
new file mode 100644
index 0000000..2dce343
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/addForm.vue
@@ -0,0 +1,123 @@
+<template>
+  <a-modal
+    title="鏂板瀛楀吀鍊�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item
+          style="display: none;"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input v-decorator="['typeId']" />
+        </a-form-item>
+
+        <a-form-item
+          label="瀛楀吀鍊�"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ瓧鍏稿��" v-decorator="['value', {rules: [{required: true, message: '璇疯緭鍏ュ瓧鍏稿�硷紒'}]}]" />
+        </a-form-item>
+
+        <a-form-item
+          label="鍞竴缂栫爜"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+        </a-form-item>
+
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="鎺掑簭"
+        >
+          <a-input-number placeholder="璇疯緭鍏ユ帓搴�" style="width: 100%" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+        </a-form-item>
+
+        <a-form-item
+          label="澶囨敞"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+        </a-form-item>
+
+      </a-form>
+
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { sysDictDataAdd } from '@/api/modular/system/dictDataManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        // 澧炲姞涓婄骇绫诲瀷ID
+        setTimeout(() => {
+          this.form.setFieldsValue(
+            {
+              typeId: record
+            }
+          )
+        }, 100)
+      },
+
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysDictDataAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.form.resetFields()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/editForm.vue
new file mode 100644
index 0000000..a6bfeb1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/editForm.vue
@@ -0,0 +1,137 @@
+<template>
+  <a-modal
+    title="瀛楀吀鍊肩紪杈�"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+
+        <a-form-item
+          style="display: none;"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input v-decorator="['id']" />
+        </a-form-item>
+        <a-form-item
+          style="display: none;"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input v-decorator="['typeId']" />
+        </a-form-item>
+
+        <a-form-item
+          label="瀛楀吀鍊�"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ瓧鍏稿��" v-decorator="['value', {rules: [{required: true, message: '璇疯緭鍏ュ瓧鍏稿�硷紒'}]}]" />
+        </a-form-item>
+
+        <a-form-item
+          label="鍞竴缂栫爜"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+        </a-form-item>
+
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="鎺掑簭"
+          has-feedback
+        >
+          <a-input-number style="width: 100%" placeholder="璇疯緭鍏ユ帓搴�" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+        </a-form-item>
+
+        <a-form-item
+          label="澶囨敞"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+        </a-form-item>
+
+      </a-form>
+
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { sysDictDataEdit } from '@/api/modular/system/dictDataManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true
+        setTimeout(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              typeId: record.typeId,
+              value: record.value,
+              code: record.code,
+              sort: record.sort,
+              remark: record.remark
+            }
+          )
+        }, 100)
+      },
+
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysDictDataEdit(values).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.form.resetFields()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/index.vue
new file mode 100644
index 0000000..252e95f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/index.vue
@@ -0,0 +1,235 @@
+<template>
+  <a-modal title="瀛楀吀鍊肩鐞�" :width="900" :visible="visible" :footer="null" @cancel="handleCancel">
+    <x-card v-if="hasPerm('sysDictData:page')">
+      <div slot="content" class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瀛楀吀鍊�">
+                <a-input v-model="queryParam.value" allow-clear placeholder="璇疯緭鍏ュ瓧鍏稿��" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍞竴缂栫爜">
+                <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ュ敮涓�缂栫爜" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="!advanced && 8 || 24" :sm="24">
+              <span
+                class="table-page-search-submitButtons"
+                :style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </x-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="false"
+        :rowKey="(record) => record.code"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template slot="operator" v-if="hasPerm('sysDictData:add')">
+          <a-button @click="$refs.addForm.add(typeId)" icon="plus" type="primary" v-if="hasPerm('sysDictData:add')">鏂板鏁版嵁
+          </a-button>
+        </template>
+        <span slot="status" slot-scope="text,record">
+          <a-popconfirm
+            placement="top"
+            :title="text===0? '纭畾鍋滅敤璇ュ瓧鍏革紵':'纭畾鍚敤璇ュ瓧鍏革紵'"
+            @confirm="() => editSysDictDataStatus(text,record)">
+            <a>{{ statusFilter(text) }}</a>
+          </a-popconfirm>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('sysDictData:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('sysDictData:edit') & hasPerm('sysDictData:delete')" />
+          <a-popconfirm
+            v-if="hasPerm('sysDictData:delete')"
+            placement="topRight"
+            title="纭鍒犻櫎锛�"
+            @confirm="() => sysDictDataDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </a-modal>
+</template>
+<script>
+  import {
+    STable,
+    XCard
+  } from '@/components'
+  import {
+    sysDictDataPage,
+    sysDictDataDelete,
+    sysDictDataChangeStatus
+  } from '@/api/modular/system/dictDataManage'
+  import {
+    sysDictTypeDropDown
+  } from '@/api/modular/system/dictManage'
+  import addForm from './addForm'
+  import editForm from './editForm'
+  export default {
+    components: {
+      XCard,
+      STable,
+      addForm,
+      editForm
+    },
+    data() {
+      return {
+        // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        advanced: false,
+        // 鏌ヨ鍙傛暟
+        queryParam: {},
+        // 琛ㄥご
+        columns: [{
+            title: '瀛楀吀鍊�',
+            dataIndex: 'value'
+          },
+          {
+            title: '鍞竴缂栫爜',
+            dataIndex: 'code'
+          },
+          {
+            title: '鎺掑簭',
+            dataIndex: 'sort'
+          },
+          {
+            title: '澶囨敞',
+            dataIndex: 'remark',
+            width: 200
+          },
+          {
+            title: '鐘舵��',
+            dataIndex: 'status',
+            scopedSlots: {
+              customRender: 'status'
+            }
+          }
+        ],
+        visible: false,
+        typeId: [],
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          this.queryParam.typeId = this.typeId
+          return sysDictDataPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        selectedRowKeys: [],
+        selectedRows: [],
+        statusDict: []
+      }
+    },
+    created() {
+      this.sysDictTypeDropDown()
+      if (this.hasPerm('sysDictData:edit') || this.hasPerm('sysDictData:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: {
+            customRender: 'action'
+          }
+        })
+      }
+    },
+    methods: {
+      // 鎵撳紑姝ら〉闈㈤鍏堝姞杞芥鏂规硶
+      index(record) {
+        this.visible = true
+        this.typeId = record.id
+        this.queryParam.typeId = record.id
+        try {
+          this.$refs.table.refresh()
+        } catch (e) {
+          // 棣栨杩涘叆鐣岄潰锛屽洜琛ㄦ牸鍔犺浇椤哄簭锛屼細鎶涘紓甯革紝鎴戜滑涓嶄簣鐞嗕細
+        }
+      },
+      statusFilter(status) {
+        // eslint-disable-next-line eqeqeq
+        const values = this.statusDict.filter(item => item.code == status)
+        if (values.length > 0) {
+          return values[0].value
+        }
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown() {
+        sysDictTypeDropDown({
+          code: 'common_status'
+        }).then((res) => {
+          this.statusDict = res.data
+        })
+      },
+      handleCancel() {
+        this.queryParam = {}
+        this.visible = false
+      },
+      editSysDictDataStatus(code, record) {
+        // eslint-disable-next-line no-unused-vars
+        const status = 0
+        // eslint-disable-next-line eqeqeq
+        if (code == 0) {
+          this.status = 1
+          // eslint-disable-next-line eqeqeq
+        } else if (code == 1) {
+          this.status = 0
+        }
+        sysDictDataChangeStatus({
+          id: record.id,
+          status: this.status
+        }).then(res => {
+          if (res.success) {
+            this.$message.success('鎿嶄綔鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鎿嶄綔澶辫触锛�' + res.message)
+          }
+        })
+      },
+      sysDictDataDelete(record) {
+        sysDictDataDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+          }
+        }).catch((err) => {
+          this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+        })
+      },
+      toggleAdvanced() {
+        this.advanced = !this.advanced
+      },
+      handleOk() {
+        this.$refs.table.refresh()
+      },
+      onSelectChange(selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dict/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/editForm.vue
new file mode 100644
index 0000000..49ee823
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/editForm.vue
@@ -0,0 +1,128 @@
+<template>
+  <a-modal
+    title="瀛楀吀绫诲瀷缂栬緫"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+
+        <a-form-item
+          style="display: none;"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input v-decorator="['id']" />
+        </a-form-item>
+
+        <a-form-item
+          label="绫诲瀷鍚嶇О"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ョ被鍨嬪悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ョ被鍨嬪悕绉帮紒'}]}]" />
+        </a-form-item>
+
+        <a-form-item
+          label="鍞竴缂栫爜"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+        </a-form-item>
+
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="鎺掑簭"
+          has-feedback
+        >
+          <a-input-number style="width: 100%" placeholder="璇疯緭鍏ユ帓搴�" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+        </a-form-item>
+
+        <a-form-item
+          label="澶囨敞"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+        </a-form-item>
+
+      </a-form>
+
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { sysDictTypeEdit } from '@/api/modular/system/dictManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true
+        setTimeout(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              name: record.name,
+              code: record.code,
+              sort: record.sort,
+              remark: record.remark
+            }
+          )
+        }, 100)
+      },
+
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysDictTypeEdit(values).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.form.resetFields()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dict/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/index.vue
new file mode 100644
index 0000000..6131b40
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/index.vue
@@ -0,0 +1,251 @@
+<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+    <div ref="boxForm" class="boxForm">
+      <x-card v-if="hasPerm('sysDictType:page')">
+        <div slot="content" class="table-page-search-wrapper">
+          <a-form layout="inline">
+            <a-row :gutter="48">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="绫诲瀷鍚嶇О">
+                  <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ョ被鍨嬪悕绉�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍞竴缂栫爜" v-if="hasPerm('sysDictType:page')">
+                  <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ュ敮涓�缂栫爜" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="!advanced && 8 || 24" :sm="24">
+                <span
+                  class="table-page-search-submitButtons"
+                  :style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
+                  <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                  <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                </span>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
+      </x-card>
+    </div> 
+
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="false"
+        :rowKey="(record) => record.code"
+        :scroll="{x: true,y:tableHeight}"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template slot="operator" v-if="hasPerm('sysDictType:add')">
+          <div ref="actionBar" class="actionBar">	
+            <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysDictType:add')">鏂板绫诲瀷
+          </a-button>
+          </div>
+        </template>
+        <span slot="DynamicKey" slot-scope="text,record">
+          dict${{record.code}}
+        </span>
+        <span slot="status" slot-scope="text,record">
+          <a-popconfirm
+            placement="top"
+            :title="text===0? '纭畾鍋滅敤璇ュ瓧鍏革紵':'纭畾鍚敤璇ュ瓧鍏革紵'"
+            @confirm="() => editSysDictTypeStatus(text,record)">
+            <a>{{ statusFilter(text) }}</a>
+          </a-popconfirm>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a @click="$refs.dataIndex.index(record)">瀛楀吀</a>
+          <a-divider type="vertical" v-if="hasPerm('sysDictType:edit') || hasPerm('sysDictType:delete')" />
+          <a-dropdown v-if="hasPerm('sysDictType:edit') || hasPerm('sysDictType:delete')">
+            <a class="ant-dropdown-link">
+              鏇村
+              <a-icon type="down" />
+            </a>
+            <a-menu slot="overlay">
+              <a-menu-item v-if="hasPerm('sysDictType:edit')">
+                <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+              </a-menu-item>
+              <a-menu-item v-if="hasPerm('sysDictType:delete')">
+                <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysDictTypeDelete(record)">
+                  <a>鍒犻櫎</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+      <data-index ref="dataIndex" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import {
+    STable,
+    XCard
+  } from '@/components'
+  import {
+    sysDictTypePage,
+    sysDictTypeDelete,
+    sysDictTypeDropDown,
+    sysDictTypeChangeStatus
+  } from '@/api/modular/system/dictManage'
+  //鑷畾涔塼able楂樺害
+  import setTableHtMixin from '@/mixins/handleTableHt.js'
+  import addForm from './addForm'
+  import editForm from './editForm'
+  import dataIndex from './dictdata/index'
+  export default {
+    mixins: [setTableHtMixin],
+    components: {
+      XCard,
+      STable,
+      addForm,
+      editForm,
+      dataIndex
+    },
+    data() {
+      return {
+        // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        advanced: false,
+        // 鏌ヨ鍙傛暟
+        queryParam: {},
+        // 琛ㄥご
+        columns: [{
+            title: '绫诲瀷鍚嶇О',
+            dataIndex: 'name'
+          },
+          {
+            title: '鍔ㄦ�佹暟鎹�',
+            scopedSlots: {
+              customRender: 'DynamicKey'
+            }
+          },
+          {
+            title: '鍞竴缂栫爜',
+            dataIndex: 'code'
+          },
+          {
+            title: '鎺掑簭',
+            dataIndex: 'sort'
+          },
+          {
+            title: '澶囨敞',
+            dataIndex: 'remark',
+            width: 200
+          },
+          {
+            title: '鐘舵��',
+            dataIndex: 'status',
+            scopedSlots: {
+              customRender: 'status'
+            }
+          }, {
+            title: '鎿嶄綔',
+            width: '150px',
+            dataIndex: 'action',
+            scopedSlots: {
+              customRender: 'action'
+            }
+          }
+        ],
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return sysDictTypePage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        selectedRowKeys: [],
+        selectedRows: [],
+        statusDict: []
+      }
+    },
+    created() {
+      this.sysDictTypeDropDown()
+      this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+  window.addEventListener(
+  'resize',
+  () => {
+  this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+  },
+  false
+  )
+    },
+    methods: {
+      statusFilter(status) {
+        // eslint-disable-next-line eqeqeq
+        const values = this.statusDict.filter(item => item.code == status)
+        if (values.length > 0) {
+          return values[0].value
+        }
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown() {
+        sysDictTypeDropDown({
+          code: 'common_status'
+        }).then((res) => {
+          this.statusDict = res.data
+        })
+      },
+      editSysDictTypeStatus(code, record) {
+        // eslint-disable-next-line no-unused-vars
+        const status = 0
+        // eslint-disable-next-line eqeqeq
+        if (code == 0) {
+          this.status = 1
+          // eslint-disable-next-line eqeqeq
+        } else if (code == 1) {
+          this.status = 0
+        }
+        sysDictTypeChangeStatus({
+          id: record.id,
+          status: this.status
+        }).then(res => {
+          if (res.success) {
+            this.$message.success('鎿嶄綔鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鎿嶄綔澶辫触锛�' + res.message)
+          }
+        })
+      },
+      sysDictTypeDelete(record) {
+        sysDictTypeDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+          }
+        }).catch((err) => {
+          this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+        })
+      },
+      toggleAdvanced() {
+        this.advanced = !this.advanced
+        this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+      },
+      handleOk() {
+        this.$refs.table.refresh()
+      },
+      onSelectChange(selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/email/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/email/index.vue
new file mode 100644
index 0000000..937c373
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/email/index.vue
@@ -0,0 +1,205 @@
+<template>
+  <a-card :bordered="false">
+    <a-spin :spinning="confirmLoading">
+      <a-tabs default-active-key="1">
+        <a-tab-pane key="1" tab="鍙戦�侀偖浠�" @change="tabsCallback" v-if="hasPerm('email:sendEmail')">
+          <a-form :form="form1">
+            <a-form-item label="鏀朵欢閭">
+              <a-input
+                placeholder="璇疯緭鍏ユ敹浠堕偖绠�"
+                v-decorator="['to', {rules: [{type: 'email',message: '璇疯緭鍏ユ纭殑閭!'},{required: true, message: '璇疯緭鍏ユ敹浠堕偖绠憋紒'}]}]" />
+            </a-form-item>
+            <a-form-item label="閭欢鏍囬">
+              <a-input
+                placeholder="璇疯緭鍏ラ偖浠舵爣棰�"
+                v-decorator="['title', {rules: [{required: true, message: '璇疯緭鍏ラ偖浠舵爣棰橈紒'}]}]" />
+            </a-form-item>
+            <a-form-item label="閭欢鍐呭">
+              <a-textarea
+                :rows="4"
+                placeholder="璇疯緭鍏ュ娉�"
+                v-decorator="['content', {rules: [{required: true, message: '璇疯緭鍏ラ偖浠跺唴瀹癸紒'}]}]"></a-textarea>
+            </a-form-item>
+            <a-form-item class="subForm-item">
+              <a-button type="primary" @click="handleSubmit1" :loading="confirmLoading">鍙戦��</a-button>
+            </a-form-item>
+          </a-form>
+        </a-tab-pane>
+        <a-tab-pane key="2" tab="鍙戦�丠tml閭欢" @change="tabsCallback" v-if="hasPerm('email:sendEmailHtml')">
+          <a-form :form="form2">
+            <a-form-item label="鏀朵欢閭">
+              <a-input
+                placeholder="璇疯緭鍏ユ敹浠堕偖绠�"
+                v-decorator="['to',{rules: [ {type: 'email',message: '璇疯緭鍏ユ纭殑閭!'},{required: true, message: '璇疯緭鍏ユ敹浠堕偖绠憋紒'}]}]" />
+            </a-form-item>
+            <a-form-item label="閭欢鏍囬">
+              <a-input
+                placeholder="璇疯緭鍏ラ偖浠舵爣棰�"
+                v-decorator="['title', {rules: [{required: true, message: '璇疯緭鍏ラ偖浠舵爣棰橈紒'}]}]" />
+            </a-form-item>
+            <a-form-item label="閭欢鍐呭">
+              <antd-editor
+                :uploadConfig="editorUploadConfig"
+                v-model="editorContent"
+                @onchange="changeEditor"
+                @oninit="getEditor" />
+            </a-form-item>
+            <a-form-item class="subForm-item">
+              <a-button type="primary" @click="handleSubmit2" :loading="confirmLoading">鍙戦��</a-button>
+            </a-form-item>
+          </a-form>
+        </a-tab-pane>
+      </a-tabs>
+    </a-spin>
+  </a-card>
+</template>
+<script>
+  import {
+    emailSendEmail,
+    emailSendEmailHtml
+  } from '@/api/modular/system/emailManage'
+  import {
+    AntdEditor
+  } from '@/components'
+  // eslint-disable-next-line no-unused-vars
+  import {
+    sysFileInfoUpload,
+    // sysFileInfoDownload,
+    sysFileInfoPreview
+  } from '@/api/modular/system/fileManage'
+  export default {
+    components: {
+      AntdEditor
+    },
+    data() {
+      return {
+        editorContentText: '',
+        editorUploadConfig: {
+          method: 'http',
+          callback: this.editorUploadImage
+        },
+        confirmLoading: false,
+        editorContent: '',
+        form1: this.$form.createForm(this),
+        form2: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      tabsCallback(key) {
+        if (key === '1') {
+          // eslint-disable-next-line no-labels
+          form1: this.$form.createForm(this)
+          this.form2.resetFields()
+          this.editor.txt.clear()
+        }
+        if (key === '2') {
+          // eslint-disable-next-line no-labels
+          form2: this.$form.createForm(this)
+          this.form1.resetFields()
+        }
+      },
+      /**
+       * 缂栬緫鍣ㄥ洖璋冧笂浼犲強鍥炰紶鍥剧墖url
+       */
+      editorUploadImage(files, insert) {
+        const formData = new FormData()
+        files.forEach(file => {
+          formData.append('file', file)
+        })
+        sysFileInfoUpload(formData).then((res) => {
+          if (res.success) {
+            sysFileInfoPreview({
+              id: res.data
+            }).then((ress) => {
+              insert(window.URL.createObjectURL(new Blob([ress])))
+            }).catch((ress) => {
+              this.$message.error('涓婁紶棰勮閿欒锛�' + ress.message)
+            })
+          } else {
+            this.$message.error('缂栬緫鍣ㄤ笂浼犲浘鐗囧け璐ワ細' + res.message)
+          }
+        })
+      },
+      getEditor(editor) {
+        this.editor = editor
+      },
+      changeEditor(html, ele) {
+        this.editorContent = html
+        this.editorContentText = ele.text()
+      },
+      /**
+       * 鍙戦�侀偖浠�
+       */
+      handleSubmit1() {
+        const {
+          form1: {
+            validateFields
+          }
+        } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            emailSendEmail(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鍙戦�佹垚鍔�')
+                this.confirmLoading = false
+                this.form1.resetFields()
+              } else {
+                this.$message.error('鍙戦�佸け璐ワ細' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      /**
+       * 鍙戦�丠tml閭欢
+       */
+      handleSubmit2() {
+        const {
+          form2: {
+            validateFields
+          }
+        } = this
+        // eslint-disable-next-line eqeqeq
+        if (this.editorContent == '') {
+          this.$message.error('璇峰~鍐欓偖浠跺唴瀹�')
+          return
+        }
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            values.content = this.editorContent
+            emailSendEmailHtml(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鍙戦�佹垚鍔�')
+                this.confirmLoading = false
+                this.editor.txt.clear()
+                this.form2.resetFields()
+              } else {
+                this.$message.error('鍙戦�佸け璐ワ細' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      }
+
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/exception/403.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/exception/403.vue
new file mode 100644
index 0000000..ffc3799
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/exception/403.vue
@@ -0,0 +1,17 @@
+<template>
+  <exception-page type="403" />
+</template>
+
+<script>
+import { ExceptionPage } from '@/components'
+
+export default {
+  components: {
+    ExceptionPage
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/exception/404.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/exception/404.vue
new file mode 100644
index 0000000..16f767f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/exception/404.vue
@@ -0,0 +1,17 @@
+<template>
+  <exception-page type="404" />
+</template>
+
+<script>
+import { ExceptionPage } from '@/components'
+
+export default {
+  components: {
+    ExceptionPage
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/exception/500.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/exception/500.vue
new file mode 100644
index 0000000..cc5d7ab
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/exception/500.vue
@@ -0,0 +1,17 @@
+<template>
+  <exception-page type="500" />
+</template>
+
+<script>
+import { ExceptionPage } from '@/components'
+
+export default {
+  components: {
+    ExceptionPage
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/file/detailForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/file/detailForm.vue
new file mode 100644
index 0000000..f25b719
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/file/detailForm.vue
@@ -0,0 +1,99 @@
+<template>
+  <a-modal
+    title="鏂囦欢淇℃伅璇︽儏"
+    :footer="null"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item v-show="false">
+          <a-input v-decorator="['id']" />
+        </a-form-item>
+        <a-form-item
+          label="鏂囦欢瀛樺偍浣嶇疆"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+        >
+          {{ fileDetail.fileLocation }}
+        </a-form-item>
+        <a-form-item
+          label="鏂囦欢浠撳簱"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+        >
+          {{ fileDetail.fileBucket }}
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="鏂囦欢鍚嶇О"
+        >
+          {{ fileDetail.fileOriginName }}
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="鏂囦欢鍚庣紑"
+        >
+          {{ fileDetail.fileSuffix }}
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="鏂囦欢澶у皬"
+        >
+          {{ fileDetail.fileSizeKb }}
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="鍞竴鏍囪瘑"
+        >
+          {{ fileDetail.fileObjectName }}
+        </a-form-item>
+
+        <a-form-item
+          label="瀛樺偍璺緞"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+        >
+          {{ fileDetail.filePath }}
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+<script>
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 8 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        fileDetail: [],
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      detail (record) {
+        this.fileDetail = record
+        this.visible = true
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/file/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/file/index.vue
new file mode 100644
index 0000000..fbdd9c2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/file/index.vue
@@ -0,0 +1,266 @@
+<template>
+  <a-spin :spinning="cardLoading">
+    <x-card v-if="hasPerm('sysFileInfo:page')">
+      <div slot="content" class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瀛樺偍浣嶇疆">
+                <a-select v-model="queryParam.fileLocation" placeholder="璇烽�夋嫨瀛樺偍浣嶇疆" >
+                  <a-select-option v-for="(item,index) in fileLocationDictTypeDropDown" :key="index" :value="item.code" >{{ item.value }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鏂囦欢浠撳簱">
+                <a-input v-model="queryParam.fileBucket" placeholder="璇疯緭鍏ユ枃浠朵粨搴�"/>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鏂囦欢鍚嶇О">
+                  <a-input v-model="queryParam.fileOriginName" placeholder="璇疯緭鍏ユ枃浠跺悕绉帮紙涓婁紶鏃跺�欑殑鏂囦欢鍚嶏級"/>
+                </a-form-item>
+              </a-col>
+            </template>
+            <a-col :md="!advanced && 8 || 24" :sm="24">
+              <span class="table-page-search-submitButtons" :style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px">
+                  {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </x-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+      >
+        <template slot="operator" v-if="hasPerm('sysFileInfo:upload')">
+          <a-upload
+            :customRequest="customRequest"
+            :multiple="true"
+            :showUploadList="false"
+            name="file"
+            v-if="hasPerm('sysFileInfo:upload')"
+          >
+            <a-button> <a-icon type="upload" />涓婁紶鏂囦欢</a-button>
+          </a-upload>
+        </template>
+        <span slot="fileOriginName" slot-scope="text">
+          <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+        </span>
+        <span slot="fileObjectName" slot-scope="text">
+          <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+        </span>
+        <span slot="fileLocation" slot-scope="text">
+          {{ fileLocationFilter(text) }}
+        </span>
+        <span slot="fileSuffix" slot-scope="text">
+          <a-tag color="blue">{{ text }}</a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('sysFileInfo:download')" @click="sysFileInfoDownload(record)">涓嬭浇</a>
+          <a-divider type="vertical" v-if="hasPerm('sysFileInfo:download') & hasPerm('sysFileInfo:detail')"/>
+          <a v-if="hasPerm('sysFileInfo:detail')" @click="$refs.detailForm.detail(record)">璇︽儏</a>
+          <a-divider type="vertical" v-if="hasPerm('sysFileInfo:detail') & hasPerm('sysFileInfo:delete')"/>
+          <a-popconfirm v-if="hasPerm('sysFileInfo:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysFileInfoDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+          <a-divider type="vertical" v-if="(hasPerm('sysFileInfo:preview') & record.fileSuffix === 'png' || record.fileSuffix === 'jpeg' || record.fileSuffix === 'jpg'|| record.fileSuffix === 'gif'|| record.fileSuffix === 'tif' || record.fileSuffix === 'bmp' ) & hasPerm('sysFileInfo:delete')"/>
+          <a v-if="(hasPerm('sysFileInfo:preview') & record.fileSuffix === 'png' || record.fileSuffix === 'jpeg'|| record.fileSuffix === 'jpg'|| record.fileSuffix === 'gif'|| record.fileSuffix === 'tif' || record.fileSuffix === 'bmp' )" @click="$refs.previewForm.preview(record)">棰勮</a>
+          <a-divider type="vertical" v-if="(hasPerm('sysFileInfo:preview') & record.fileSuffix === 'doc' || record.fileSuffix === 'docx'|| record.fileSuffix === 'xls'|| record.fileSuffix === 'xlsx') & hasPerm('sysFileInfo:delete')"/>
+          <a v-if="(hasPerm('sysFileInfo:preview') & record.fileSuffix === 'doc' || record.fileSuffix === 'docx'|| record.fileSuffix === 'xls'|| record.fileSuffix === 'xlsx')" @click="previewMicrosoft(record)">棰勮</a>
+        </span>
+      </s-table>
+      <detail-form ref="detailForm" @ok="handleOk" v-if="hasPerm('sysFileInfo:detail')"/>
+      <preview-form ref="previewForm" v-if="hasPerm('sysFileInfo:preview')"/>
+    </a-card>
+  </a-spin>
+</template>
+<script>
+  import { STable, Ellipsis, XCard } from '@/components'
+  import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+  import { sysFileInfoPage, sysFileInfoDelete, sysFileInfoUpload, sysFileInfoDownload } from '@/api/modular/system/fileManage'
+  import detailForm from './detailForm'
+  import previewForm from './previewForm'
+  export default {
+    components: {
+      XCard,
+      STable,
+      Ellipsis,
+      detailForm,
+      previewForm
+    },
+    data () {
+      return {
+        // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        advanced: false,
+        // 鏌ヨ鍙傛暟
+        queryParam: {},
+        // 琛ㄥご
+        columns: [
+          {
+            title: '瀛樺偍浣嶇疆',
+            dataIndex: 'fileLocation',
+            scopedSlots: { customRender: 'fileLocation' }
+          },
+          {
+            title: '鏂囦欢浠撳簱',
+            dataIndex: 'fileBucket'
+          },
+          {
+            title: '鏂囦欢鍚嶇О',
+            dataIndex: 'fileOriginName',
+            scopedSlots: { customRender: 'fileOriginName' }
+          },
+          {
+            title: '鏂囦欢鍚庣紑',
+            dataIndex: 'fileSuffix',
+            scopedSlots: { customRender: 'fileSuffix' }
+          },
+          {
+            title: '鏂囦欢澶у皬',
+            dataIndex: 'fileSizeInfo'
+          },
+          {
+            title: '鍞竴鏍囪瘑id',
+            dataIndex: 'fileObjectName',
+            scopedSlots: { customRender: 'fileObjectName' }
+          }
+
+        ],
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return sysFileInfoPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        cardLoading: false,
+        fileLocationDictTypeDropDown: [],
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      this.sysDictTypeDropDown()
+      if (this.hasPerm('sysPos:edit') || this.hasPerm('sysPos:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '200px',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+    },
+    methods: {
+      fileLocationFilter (fileLocation) {
+        // eslint-disable-next-line eqeqeq
+        const values = this.fileLocationDictTypeDropDown.filter(item => item.code == fileLocation)
+        if (values.length > 0) {
+          return values[0].value
+        }
+      },
+      /**
+       * 棰勮鏂囦欢锛堝井杞彃浠讹級
+       */
+      previewMicrosoft (record) {
+        window.open('https://view.officeapps.live.com/op/view.aspx?src=' + process.env.VUE_APP_API_BASE_URL + '/sysFileInfo/download?id=' + record.id)
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown () {
+        sysDictTypeDropDown({ code: 'file_storage_location' }).then((res) => {
+          this.fileLocationDictTypeDropDown = res.data
+        })
+      },
+      /**
+       * 涓嬭浇鏂囦欢锛堟墍鏈夋枃浠讹級
+       */
+      sysFileInfoDownload (record) {
+        this.cardLoading = true
+        sysFileInfoDownload({ id: record.id }).then((res) => {
+          this.cardLoading = false
+          this.downloadfile(res)
+        // eslint-disable-next-line handle-callback-err
+        }).catch((err) => {
+          this.cardLoading = false
+          this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+        })
+      },
+      downloadfile (res) {
+        var blob = new Blob([res.data], { type: 'application/octet-stream;charset=UTF-8' })
+        var contentDisposition = res.headers['content-disposition']
+        var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
+        var result = patt.exec(contentDisposition)
+        var filename = result[1]
+        var downloadElement = document.createElement('a')
+        var href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺�
+        var reg = /^["](.*)["]$/g
+        downloadElement.style.display = 'none'
+        downloadElement.href = href
+        downloadElement.download = decodeURI(filename.replace(reg, '$1')) // 涓嬭浇鍚庢枃浠跺悕
+        document.body.appendChild(downloadElement)
+        downloadElement.click() // 鐐瑰嚮涓嬭浇
+        document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌
+        window.URL.revokeObjectURL(href)
+      },
+      sysFileInfoDelete (record) {
+        sysFileInfoDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+          }
+        }).catch((err) => {
+          this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      /**
+       * 涓婁紶鏂囦欢
+       */
+      customRequest (data) {
+        const formData = new FormData()
+        formData.append('file', data.file)
+        sysFileInfoUpload(formData).then((res) => {
+          if (res.success) {
+            this.$message.success('涓婁紶鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('涓婁紶澶辫触锛�' + res.message)
+          }
+        })
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/file/previewForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/file/previewForm.vue
new file mode 100644
index 0000000..f125b93
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/file/previewForm.vue
@@ -0,0 +1,60 @@
+<template>
+  <a-modal
+    title="棰勮鍥剧墖"
+    :footer="null"
+    :width="900"
+    :visible="visible"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="divLoading">
+      <div style="text-align: center">
+        <img :src="src" style="max-width: 99%">
+      </div>
+    </a-spin>
+  </a-modal>
+</template>
+<script>
+  import { sysFileInfoPreview } from '@/api/modular/system/fileManage'
+  export default {
+    data () {
+      return {
+        visible: false,
+        src: '',
+        divLoading: false
+      }
+    },
+    methods: {
+      /**
+       * 鍒濆鍖�
+       */
+      preview (record) {
+        this.visible = true
+        this.divLoading = true
+        this.sysFileInfoPreview(record)
+      },
+      /**
+       * 鑾峰彇鍥剧墖骞惰浆涓洪摼鎺�
+       */
+      sysFileInfoPreview (record) {
+        sysFileInfoPreview({ id: record.id }).then((res) => {
+          this.divLoading = false
+          this.downloadfile(res)
+        }).catch((err) => {
+          this.divLoading = false
+          this.$message.error('棰勮閿欒锛�' + err.message)
+        })
+      },
+      /**
+       * 杞浘鐗囩被鍨�
+       */
+      downloadfile (res) {
+        const blob = new Blob([res])
+        this.src = window.URL.createObjectURL(blob)
+      },
+      handleCancel () {
+        this.src = ''
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/edit.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/edit.vue
new file mode 100644
index 0000000..65b513e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/edit.vue
@@ -0,0 +1,60 @@
+<template>
+  <div>
+    <a-spin :spinning="spinning">
+      <h1 class="headertitle">{{ title }}</h1>
+      <k-form-design ref="kfd" :showHead="false" :title="title" @save="onSave"/>
+    </a-spin>
+
+  </div>
+</template>
+<script>
+  import { formEntity, formEdit } from '@/api/modular/system/formDesignmanage'
+  export default {
+    components: {},
+    data() {
+      return {
+        spinning: true,
+        jsonData: '',
+        title: ''
+      }
+    },
+    mounted () {
+      formEntity(Object.assign({ Id: this.$route.query.Id })).then(res => {
+        if (res.success === true) {
+          this.importData(res.data.formJson)
+          this.title = res.data.title
+          this.spinning = false
+        } else {
+          this.$message.error(res.message)
+        }
+      })
+    },
+    methods: {
+      importData (json) {
+        this.$refs.kfd.handleSetData(JSON.parse(json))
+      },
+      onSave(values) {
+        var data = {
+          formJson: values,
+          id: this.$route.query.Id
+        }
+        formEdit(Object.assign(data)).then(res => {
+          if (res.success === true) {
+            this.$message.success(res.message)
+          } else {
+            this.$message.error(res.message)
+          }
+        })
+      }
+    }
+  }
+</script>
+
+<style >
+.headertitle{
+  font-size: 30px;
+  font-weight: bolder;
+  text-align: center;
+  background-color: white;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/index.vue
new file mode 100644
index 0000000..dabf44d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/index.vue
@@ -0,0 +1,91 @@
+<template>
+  <div>
+    <k-form-design
+      :showHead="false"
+      ref="kfd"
+      style="background-color: white;"
+      @save="handleSave" />
+    <a-modal
+      title="淇濆瓨琛ㄥ崟"
+      :visible="visible"
+      :destroyOnClose="true"
+      @ok="handleOk"
+      @cancel="handleCancel"
+    >
+      <a-form :label-col="{ span: 5 }" :wrapper-col="{ span: 12 }">
+        <a-form-item label="琛ㄥ崟鏍囬">
+          <a-input placeholder="璇疯緭鍏ヨ〃鍗曟爣棰�" v-model="formtitle"/>
+        </a-form-item>
+        <a-form-item label="琛ㄥ崟绫诲瀷">
+          <a-select :select="selectformtype" v-model="typeId">
+            <a-select-option v-for="item in formtype" :value="item.id" :key="item.id">
+              {{ item.value }}</a-select-option>
+          </a-select>
+        </a-form-item>
+      </a-form>
+    </a-modal>
+  </div>
+</template>
+<script>
+  import 'k-form-design/styles/k-form-design.less'
+  import { formAdd } from '@/api/modular/system/formDesignmanage'
+  import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+
+  export default {
+    components: {},
+    data() {
+      return {
+        visible: false,
+        formtitle: '',
+        jsonData: '',
+        typeId: '',
+        formtype:[]
+      }
+    },
+    created() {
+      this.getSysDict()
+    },
+    methods: {
+      getSysDict() {
+        sysDictTypeDropDown({
+          code: 'form_type'
+        }).then((res) => {
+          this.formtype = res.data
+        })
+      },
+      selectformtype(value) {
+      },
+      handleSave(values) {
+        this.visible = true
+        this.jsonData = values
+      },
+      handleOk() {
+        var data = {
+          title: this.formtitle,
+          formJson: this.jsonData,
+          typeId: this.typeId
+        }
+         formAdd(Object.assign(data)).then(res => {
+          if (res.success === true) {
+            this.$message.success(res.message)
+            this.visible = false
+            this.formtitle = ''
+            this.$refs.formdesign.handleReset()
+          } else {
+            this.$message.error(res.message)
+          }
+        })
+      },
+      handleCancel() {
+        this.visible = false
+        this.formtitle = ''
+      }
+    },
+    mounted () {
+      // this.importData()
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/list.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/list.vue
new file mode 100644
index 0000000..6539741
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/list.vue
@@ -0,0 +1,133 @@
+<template>
+  <div>
+    <x-card v-if="hasPerm('formmanager:page')">
+      <div slot="content" class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="琛ㄥ崟鍚嶇О">
+                <a-input v-model="queryParam.title" allow-clear placeholder="璇疯緭鍏ヨ〃鍗曞悕绉�" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </x-card>
+    <a-card :bordered="false">
+      <a-spin :spinning="loading">
+        <s-table
+          ref="table"
+          :columns="columns"
+          :data="loadData"
+          :alert="true"
+          :rowKey="(record) => record.id">
+          <span slot="publish" slot-scope="text,record">
+            <a-switch :defaultChecked="text" @change="(checked)=>{ onChange(checked,record)}"/>
+          </span>
+          <span slot="action" slot-scope="text,record">
+            <a v-if="hasPerm('formmanager:edit')" @click="edit(record.id)">淇敼</a>
+            <a-divider type="vertical" v-if="hasPerm('formmanager:delete') & hasPerm('formmanager:edit')" />
+            <a-popconfirm v-if="hasPerm('formmanager:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => deleteform(record.id)">
+              <a>鍒犻櫎</a>
+            </a-popconfirm>
+          </span>
+        </s-table>
+      </a-spin>
+    </a-card>
+  </div>
+</template>
+
+<script>
+import { STable, XCard } from '@/components'
+import { formList, formPublish, formDelete } from '@/api/modular/system/formDesignmanage'
+export default {
+  name: 'FormDesignList',
+  components: {
+    STable,
+    XCard
+  },
+  data() {
+    return {
+      queryParam: {},
+      loading: true,
+      columns: [
+        {
+          title: '鏍囬',
+          dataIndex: 'title'
+        },
+        {
+          title: '琛ㄥ崟绫诲瀷',
+          dataIndex: 'typeName'
+        },
+        {
+          title: '鍒涘缓浜�',
+          dataIndex: 'createdUserName'
+        },
+        {
+          title: '鍒涘缓鏃堕棿',
+          dataIndex: 'createdTime'
+        },
+        {
+          title: '鏄惁鍙戝竷',
+          dataIndex: 'publish',
+          scopedSlots: {
+            customRender: 'publish'
+          }
+        },
+        {
+          title: '鎿嶄綔',
+          dataIndex: 'action',
+          scopedSlots: {
+            customRender: 'action'
+          }
+        }
+      ],
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: parameter => {
+        return formList(Object.assign(parameter, this.queryParam)).then(res => {
+          this.loading = false
+          return res.data
+        })
+      }
+    }
+  },
+  methods: {
+    // 鍙戝竷琛ㄥ崟
+    onChange(checked, record) {
+      var id = record.id
+      formPublish(Object.assign({ Id: id, publish: checked })).then(res => {
+          if (res.success === true) {
+            this.$message.success(res.message)
+          } else {
+            this.$message.error(res.message)
+          }
+      })
+    },
+    // 淇敼琛ㄥ崟
+    edit(Id) {
+      this.$router.push({ path: '/formDesign/edit', query: { Id: Id } })
+    },
+    // 鍒犻櫎琛ㄥ崟
+    deleteform(Id) {
+      formDelete(Object.assign({ 'Id': Id })).then(res => {
+        if (res.success === true) {
+          this.$refs.table.refresh(true)
+          this.$message.success(res.message)
+        } else {
+          this.$message.error(res.message)
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleA.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleA.vue
new file mode 100644
index 0000000..5726c27
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleA.vue
@@ -0,0 +1,159 @@
+<template>
+  <div class="home-index-module-a-compontent">
+    <div class="card-item stylea">
+      <div class="card-row1">
+        <div class="card-icon-frame">
+          <div class="card-icon-box">
+            <div class="card-icon-circle"></div>
+            <div class="card-icon-font">
+              <a-icon type="export" />
+            </div>
+          </div>
+        </div>
+        <div class="crad-num">{{count.out}}</div>
+      </div>
+      <div class="card-row2">鍑哄簱浠诲姟閲�</div>
+    </div>
+    <div class="divider"></div>
+    <div class="card-item styleb">
+      <div class="card-row1">
+        <div class="card-icon-frame">
+          <div class="card-icon-box">
+            <div class="card-icon-circle"></div>
+            <div class="card-icon-font">
+              <a-icon type="import" />
+            </div>
+          </div>
+        </div>
+        <div class="crad-num">{{count.in}}</div>
+      </div>
+      <div class="card-row2">鍏ュ簱浠诲姟閲�</div>
+    </div>
+    <div class="divider"></div>
+    <div class="card-item stylea">
+      <div class="card-row1">
+        <div class="card-icon-frame">
+          <div class="card-icon-box">
+            <div class="card-icon-circle"></div>
+            <div class="card-icon-font">
+              <a-icon type="export" />
+            </div>
+          </div>
+        </div>
+        <div class="crad-num">{{count.move}}</div>
+      </div>
+      <div class="card-row2">绉诲簱浠诲姟閲�</div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { GeInOutTotalNumber} from '@/api/modular/system/homeManage'
+export default {
+  name:'homeIndexModuleACompontent',
+  data(){
+    return {
+      count:{
+        in:0,
+        out:0,
+        move:0
+      }
+    }
+  },
+  methods:{
+    init(){
+      this.getData()
+    },
+    getData(callback){
+      GeInOutTotalNumber().then((d)=>{
+        this.count.in = d.data.rukuNum || 0
+        this.count.out = d.data.chukuNum || 0
+        this.count.move = d.data.yikuNum || 0
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    }
+  },
+  mounted(){
+    this.init()
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.home-index-module-a-compontent{
+  display: flex;
+  .divider{
+    width:24px;
+    flex-shrink: 0;
+  }
+  .card-item{
+    width: 1px;
+    flex-grow: 1;
+    height:120px;
+    border-radius: 6px;
+    &.stylea{
+      background-image: linear-gradient(115.159deg, rgb(252, 198, 135) 0%, rgb(249, 211, 34) 1%, rgb(248, 56, 0) 99%, rgb(242, 134, 160) 100%);
+    }
+    &.styleb{
+      background-image: linear-gradient(115.159deg, rgb(127, 254, 216) 0%, rgb(54, 208, 220) 0%, rgb(90, 134, 229) 100%, rgb(9, 189, 254) 100%);
+    }
+    .card-row1{
+      width:100%;
+      display: flex;
+      .card-icon-frame{
+        flex-shrink: 0;
+        padding:16px 10px 0 16px;
+        .card-icon-box{
+          width: 60px;
+          height: 60px;
+          position: relative;
+        }
+        .card-icon-circle,.card-icon-font{
+          position: absolute;
+          top:0;
+          left:0;
+          width: 100%;
+          height: 100%;
+        }
+        .card-icon-circle{
+          z-index: 10;
+          border-radius: 50%;
+          opacity: 0.1;
+          background-color: #fff;
+        }
+        .card-icon-font{
+          z-index: 20;
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          color:#fff;
+          font-size: 32px;
+        }
+      }
+      .crad-num{
+        flex-grow: 1;
+        display: flex;
+        white-space:nowrap;
+        align-items: center;
+        color: #fff;
+        justify-content: flex-end;
+        padding-right: 16px;
+        font-size: 28px;
+        font-weight: 700; 
+        overflow: hidden;
+      }
+    }
+    .card-row2{
+      color:#fff;
+      font-size: 20px;
+      font-weight: 400;
+      padding-right: 16px;
+      text-align: right;
+      white-space:nowrap;
+      overflow: hidden;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleB.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleB.vue
new file mode 100644
index 0000000..8d2cd71
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleB.vue
@@ -0,0 +1,151 @@
+<template>
+  <div class="home-index-module-b-compontent">
+    <div class="module-box">
+      <div class="top-title">鍑哄叆搴撶粺璁�</div>
+      <div class="action-row">
+        <a-radio-group v-model:value="chartType" size="small" @change="onChangeChartType">
+          <a-radio-button :value="1">杩�7澶�</a-radio-button>
+          <a-radio-button :value="2">杩�1涓湀</a-radio-button>
+          <a-radio-button :value="3">杩�3涓湀</a-radio-button>
+        </a-radio-group>
+      </div>
+      <div class="line-chart-block">
+        <div style="height: 100%;" :id="chartid"></div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import * as echarts from 'echarts';
+import { markRaw } from 'vue'
+import { GeInOutTaskNumber} from '@/api/modular/system/homeManage'
+export default {
+  name:'homeIndexModuleBCompontent',
+  data(){
+    return {
+      chartType:1,
+      chartid:'',
+      chart:null,
+      dataSource:[],
+      defaultOption:{
+      	tooltip: {
+      		trigger: 'axis'
+      	},
+      	legend:{
+      		show:true
+      	},
+      	grid: {
+      		left: 30,
+      		right: 10,
+      		bottom: 70
+      	},
+      	xAxis: {
+      		data: []
+      	},
+      	yAxis: {},
+      	dataZoom: [
+      		{
+      			startValue: '2014-06-01',
+      			type: 'slider'
+      		}
+      	],
+      	series: [
+          {name:'鍏ュ簱',type:'line',data:[],smooth: true},
+          {name:'鍑哄簱',type:'line',data:[],smooth: true}
+        ]
+      }
+    }
+  },
+  methods:{
+    init(){
+      setTimeout(()=>{
+        this.getData()
+      },200)
+    },
+    onChangeChartType(){
+     this.getData()
+    },
+    createChart(){
+    	if (!this.chart) {
+    		this.chart = markRaw(echarts.init(window.document.getElementById(this.chartid)))
+    	}
+    },
+    getData(){
+      let params = {LookType:this.chartType}
+      GeInOutTaskNumber(params).then((d)=>{
+        this.dataSource = d.data || []
+        this.drawChart()
+      }).catch(()=>{
+        
+      })
+    },
+    drawChart(){
+      if (this.dataSource.length<=0) return false;
+      let opt =  JSON.parse(JSON.stringify(this.defaultOption))
+      if (this.dataSource.length<=8) {
+      	opt.grid.bottom = 30
+      	delete opt.dataZoom;
+      } else {
+      	opt.dataZoom[0].startValue = this.dataSource[0].dateStr;
+      }
+      for (let i=0;i<this.dataSource.length;i++) {
+      	opt.xAxis.data.push(this.dataSource[i].dateStr)
+        opt.series[0].data.push(this.dataSource[i].rukuNum)
+      	opt.series[1].data.push(this.dataSource[i].chukuNum)
+      }
+      this.destoryChart()
+      this.createChart()
+      this.chart.setOption(opt)
+    },
+    destoryChart(){
+    	try{
+    		this.chart.dispose();
+    		window.document.getElementById(this.chartid).innerHTML = '';
+    		this.chart = null;
+    	}catch(e){
+    		//TODO handle the exception
+    	}
+    }
+  },
+  created() {
+  	this.chartid = 'chart-'+new Date().getTime();
+  },
+  beforeDestroy() {
+  	this.destoryChart()
+  },
+  mounted() {
+  	this.init()
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.home-index-module-b-compontent{
+  height:100%;
+  box-sizing: border-box;
+  padding-top: 24px;
+  .module-box{
+    background-color: #fff;
+    border-radius: 10px;
+    height:100%;
+    overflow: hidden;
+    display: flex;
+    flex-direction: column;
+    .top-title,.action-row{
+      flex-shrink: 0;
+    }
+    .top-title{
+      background-color: #fff;
+      padding:8px 16px;
+      font-size: 18px;
+    }
+    .action-row{
+      padding: 0 20px 12px 50px;
+    }
+    .line-chart-block{
+      flex-grow:1;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleC.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleC.vue
new file mode 100644
index 0000000..7b4a9b7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleC.vue
@@ -0,0 +1,223 @@
+<template>
+  <div class="home-index-module-c-compontent">
+    <div class="top-title">搴撳瓨缁熻</div>
+    <div class="module-c-contianer">
+      <div class="pie-chart-block" ref="chart"></div>
+      <div class="info-block">
+        <div class="num-item-row">
+          <div class="label">鎬诲簱浣嶏細</div>
+          <div class="num">{{chartData.total}}</div>
+        </div>
+        <div class="num-item-row" v-for="(item,index) in chartData.list" :key="'num-item-'+index">
+          <div class="label">{{item.text}}锛�</div>
+          <div class="num">{{item.num}}</div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import * as echarts from 'echarts';
+import { GetPalceNumbers} from '@/api/modular/system/homeManage'
+export default {
+  name:'homeIndexModuleCCompontent',
+  data(){
+    return {
+      $dom:null,
+      chart:null,
+      defaultOption:{
+        tooltip: {
+        	trigger: 'item',
+        	formatter: "{a} <br/>{b}: {c} ({d}%)"
+        },
+        legend: {
+        	show: false
+        },
+        title:{
+        	text:"80.02%",
+        	left:"center",
+        	top:"45%",
+        	textStyle:{
+        		color:"#000",
+        		fontSize:30,
+        		align:"center"
+        	}
+        },
+        graphic:{
+        	type:"text",
+        	left:"center",
+        	top:"38%",
+        	style:{
+        		text:"瀛樿揣鍗犳瘮",
+        		textAlign:"center",
+        		fill:"#929292",
+        		fontSize:18
+        	}
+        },
+        series: [
+        	{
+        		name: '搴撳瓨鍗犳瘮',
+        		type: 'pie',
+        		radius: ['60px', '80px'],
+        		avoidLabelOverlap: false,
+        		itemStyle: {
+        			borderRadius: 4,
+        			borderColor: '#fff',
+        			borderWidth: 2
+        		},
+        		label:{
+        			formatter: '{fc|{b}}\n{hr|}\n{fc|{d}%} ',
+        			rich: {
+        				fc: {
+        					color: '#333',
+        					fontSize:12,
+        					lineHeight:16,
+        					align: 'center'
+        				},
+        				hr: {
+        					borderColor: '#666',
+        					width: '100%',
+        					borderWidth: 1,
+        					height: 0
+        				}
+        			}
+        		},
+        		labelLine:{
+        			length:10,
+        			length2:5
+        		},
+        		data: []
+        	}
+        ]
+      },
+      chartData:{
+        total:0,
+        list:[],
+        totalRate:'1%'
+      }
+    }
+  },
+  methods:{
+    init(){
+      this.getData((f)=>{
+      	if (f) {
+      		this.createChart();
+      		this.drawChart();
+      	}
+      })	
+    },
+    getData(callback){
+      GetPalceNumbers().then((d)=>{
+        let _arr = [], _obj={};
+        _obj = {text:'绌哄簱浣�',num:(d.data.emptyNum||0),color:['#5988e5','#36cfdc']}
+        _arr.push(_obj)
+        _obj = {text:'鏈夎揣搴撲綅',num:(d.data.cunhuoNum||0),color:['#f9cf21','#f84302']}
+        _arr.push(_obj)
+        _obj = {text:'绌烘墭搴撲綅',num:(d.data.emptyContainerNum||0),color:['#66b53d','#d4f9a6']}
+        _arr.push(_obj)
+        this.chartData.list = _arr;
+        let _total = 0;
+        this.chartData.list.forEach((item)=>{
+          _total = _total + item.num
+        })
+         this.chartData.total = _total
+        let _hasNum = d.data.cunhuoNum||0
+        this.chartData.totalRate = _total?(Number(((_hasNum/_total)*100).toFixed(2)) + '%'):'0%';
+        callback && callback(true)
+      }).catch(()=>{
+        callback && callback(false)
+      })
+    },
+    drawChart(){
+      let arr = [];
+      this.chartData.list.forEach((item)=>{
+      	arr.push({
+          value:item.num,
+          name:item.text,
+          itemStyle:{
+            normal:{
+              color:new echarts.graphic.LinearGradient(1, 0, 0, 0,[{offset:0,color:item.color[0]},{offset:1,color:item.color[1]}])
+            }
+          }
+        })
+      })
+      let opt = {...this.defaultOption}
+      opt.series[0].data = arr;
+      opt.title.text = this.chartData.totalRate;
+      this.chart.setOption(opt)
+    },
+    createChart(){
+      if (!this.$dom) {
+      	this.$dom = this.$refs.chart;
+      	this.chart = echarts.init(this.$dom)
+      }
+    },
+    destoryChart(){
+      try{
+      	this.chart.dispose();
+      	this.$dom.innerHTML = '';
+      	this.$dom = null;
+      }catch(e){
+      	//TODO handle the exception
+      }
+    }
+  },
+  mounted(){
+    this.init()
+  },
+  beforeDestroy(){
+    this.destoryChart()
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.home-index-module-c-compontent{
+  background-color: #F0F8FF;
+  border-radius: 10px;
+  height:100%;
+  overflow: hidden;
+  display: flex;
+  flex-direction: column;
+  .top-title{
+    flex-shrink: 0;
+    background-color: #fff;
+    padding:8px 16px;
+    font-size: 18px;
+  }
+  .module-c-contianer{
+    flex-grow: 1;
+    display: flex;
+    flex-direction: column;
+    .pie-chart-block{
+      height:240px;
+      flex-shrink: 0;
+    }
+    .info-block{
+      flex-grow: 1;
+      overflow: auto;
+      .num-item-row{
+        display: flex;
+        font-size: 28px;
+        padding:4px 16px;
+        .label{
+          width:200px;
+          flex-shrink: 0;
+          color:#999;
+          white-space:nowrap;
+          overflow: hidden;
+        }
+        .num{
+          flex-grow:1;
+          text-align: right;
+          color:#333;
+          white-space:nowrap;
+          overflow: hidden;
+        }
+      }
+    }
+  }
+  
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/index/welcome.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/index/welcome.vue
new file mode 100644
index 0000000..0645f18
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/index/welcome.vue
@@ -0,0 +1,79 @@
+<template>
+  <div class="home-index-page" ref="page" :style="{height:pageHeight}">
+    <div class="block-left">
+      <div class="block-left-top"><module-a /></div>
+      <div class="block-left-bottom"><module-b /></div>
+    </div>
+    <div class="block-right"><module-c /></div>
+  </div>
+</template>
+
+<script>
+import ModuleA from './ModuleA.vue'
+import ModuleB from './ModuleB.vue'
+import ModuleC from './ModuleC.vue'
+export default {
+  name:'homeIndexPage',
+  components:{ModuleA,ModuleB,ModuleC},
+  data(){
+    return {
+      pageHeight:'100%'
+    }
+  },
+  watch:{
+    '$store.state.app.multiTab':{
+      deep:true,
+      handler:(newVal,oldVal)=>{
+        this.calPageHeight(newVal)
+      }
+    }
+  },
+  methods:{
+    calPageHeight(hasTab){
+      if (hasTab) {
+       let _h = this.$refs.page.clientHeight;
+       if (_h) {
+         this.pageHeight = (_h-42)+'px'
+       }
+      } else {
+        this.pageHeight = '100%';
+      }
+    },
+    initPageHeight(callback){
+      setTimeout(()=>{
+        this.calPageHeight(this.$store.state.app.multiTab)
+        callback && callback()
+      },100)
+    }
+  },
+  mounted(){
+    this.initPageHeight()
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.home-index-page{
+  overflow: hidden;
+  display: flex;
+  min-width: 1000px;
+  .block-right{
+    width:30%;
+    min-width:300px;
+    flex-shrink: 0;
+  }
+  .block-left{
+    flex-grow: 1;
+    box-sizing: border-box;
+    padding-right: 24px;
+    display: flex;
+    flex-direction: column;
+    .block-left-top{
+      flex-shrink: 0;
+    }
+    .block-left-bottom{
+      flex-grow: 1;
+    }
+  }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/machine/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/machine/index.vue
new file mode 100644
index 0000000..23236bb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/machine/index.vue
@@ -0,0 +1,140 @@
+<template>
+  <div v-if="hasPerm('sysMachine:query')">
+    <!-- 绯荤粺淇℃伅  Java淇℃伅-->
+    <a-row :gutter="24">
+      <a-col :md="12" :sm="24">
+        <a-card :loading="loading" title="绯荤粺淇℃伅" style="margin-bottom: 20px" :bordered="false">
+          <table class="sysInfo_table">
+            <tr>
+              <td class="sysInfo_td">涓绘満鍚嶇О锛�</td>
+              <td class="sysInfo_td">{{ this.machineBaseInfo.hostName }}</td>
+            </tr>
+            <tr>
+              <td class="sysInfo_td">鎿嶄綔绯荤粺锛�</td>
+              <td class="sysInfo_td">{{ this.machineBaseInfo.systemOs }}</td>
+            </tr>
+            <tr>
+              <td class="sysInfo_td">绯荤粺鏋舵瀯锛�</td>
+              <td class="sysInfo_td">{{ this.machineBaseInfo.osArchitecture }}</td>
+            </tr>
+            <tr>
+              <td class="sysInfo_td">杩愯妗嗘灦锛�</td>
+              <td class="sysInfo_td">{{ this.machineBaseInfo.frameworkDescription }}</td>
+            </tr>
+            <tr>
+              <td class="sysInfo_td">CPU鏍告暟锛�</td>
+              <td class="sysInfo_td">{{ this.machineBaseInfo.processorCount }}</td>
+            </tr>
+          </table>
+        </a-card>
+      </a-col>
+      <a-col :md="12" :sm="24">
+        <a-card :loading="loading" title="缃戠粶淇℃伅" style="margin-bottom: 20px" :bordered="false">
+          <table class="sysInfo_table">
+            <tr>
+              <td class="sysInfo_td">澶栫綉淇℃伅锛�</td>
+              <td class="sysInfo_td">{{ this.machineBaseInfo.wanIp }}</td>
+            </tr>
+            <tr>
+              <td class="sysInfo_td">IPv4鍦板潃锛�</td>
+              <td class="sysInfo_td">{{ this.machineBaseInfo.lanIp }}</td>
+            </tr>
+            <tr>
+              <td class="sysInfo_td">缃戝崱MAC锛�</td>
+              <td class="sysInfo_td">{{ this.machineBaseInfo.ipMac }}</td>
+            </tr>
+            <tr>
+              <td class="sysInfo_td">娴侀噺缁熻锛�</td>
+              <td class="sysInfo_td">{{ this.machineNetworkInfo.sendAndReceived }}</td>
+            </tr>
+            <tr>
+              <td class="sysInfo_td">缃戠粶閫熷害锛�</td>
+              <td class="sysInfo_td">{{ this.machineNetworkInfo.networkSpeed }}</td>
+            </tr>
+          </table>
+        </a-card>
+      </a-col>
+    </a-row>
+    <a-card :loading="loading" title="鍏朵粬淇℃伅" :bordered="false">
+      <table class="sysInfo_table">
+        <tr>
+          <td class="sysInfo_td">杩愯鏃堕棿锛�</td>
+          <td class="sysInfo_td">{{ this.machineUseInfo.runTime }}</td>
+          <td class="sysInfo_td">CPU浣跨敤鐜囷細</td>
+          <td class="sysInfo_td">{{ this.machineUseInfo.cpuRate }}%</td>
+        </tr>
+        <tr>
+          <td class="sysInfo_td">鎬诲唴瀛橈細</td>
+          <td class="sysInfo_td">{{ this.machineUseInfo.totalRam }}</td>
+          <td class="sysInfo_td">鍐呭瓨浣跨敤鐜囷細</td>
+          <td class="sysInfo_td">{{ this.machineUseInfo.ramRate }}%</td>
+        </tr>
+      </table>
+    </a-card>
+  </div>
+</template>
+<script>
+  import {
+    sysMachineBase,
+    sysMachineUse,
+    sysMachineNetwork
+  } from '@/api/modular/system/machineManage'
+  export default {
+    data() {
+      return {
+        loading: true,
+        machineBaseInfo: [],
+        machineUseInfo: [],
+        machineNetworkInfo: []
+      }
+    },
+    // 杩涢〉闈㈠姞杞�
+    created() {
+      this.loadMachineBaseInfo()
+      this.loadMachineUseInfo()
+    },
+    methods: {
+      // 鍔犺浇鏁版嵁鏂规硶
+      loadMachineBaseInfo() {
+        sysMachineBase().then((res) => {
+          this.loading = false
+          this.machineBaseInfo = res.data
+        })
+      },
+      loadMachineUseInfo() {
+        sysMachineUse().then((res) => {
+          this.loading = false
+          this.machineUseInfo = res.data
+        })
+      },
+      loadMachineNetworkInfo() {
+        sysMachineNetwork().then((res) => {
+          this.loading = false
+          this.machineNetworkInfo = res.data
+        })
+      },
+      refreshData() {
+         this.loadMachineUseInfo()
+         this.loadMachineNetworkInfo()
+      }
+    },
+    mounted() {
+      this.timer = setInterval(this.refreshData, 3000)
+    },
+    beforeDestroy() {
+        clearInterval(this.timer)
+    }
+  }
+</script>
+<style lang="less">
+  .sysInfo_table {
+    width: 100%;
+    min-height: 45px;
+    line-height: 45px;
+    text-align: center;
+  }
+
+  .sysInfo_td {
+    border-bottom: 1px solid #e8e8e8;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/menu/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/menu/addForm.vue
new file mode 100644
index 0000000..a763c45
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/menu/addForm.vue
@@ -0,0 +1,612 @@
+<template>
+  <a-modal
+    title="鏂板鑿滃崟"
+    :width="1000"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+    :destroyOnClose="true">
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鑿滃崟鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+              <a-input
+                placeholder="璇疯緭鍏ヨ彍鍗曞悕绉�"
+                v-decorator="['name',{rules: [{required: true, min: 1, message: '璇疯緭鍏ヨ彍鍗曞悕绉帮紒'}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item style="width: 100%" :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟缂栧彿" hasFeedback>
+              <a-input
+                placeholder="璇疯緭鍏ヨ彍鍗曠紪鍙�"
+                v-decorator="['code', {rules: [{required: true, min: 1, message: '璇疯緭鍏ヨ彍鍗曠紪鍙凤紒'}]}]" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎵�灞炲簲鐢�" has-feedback>
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨搴旂敤鍒嗙被"
+                v-decorator="['application', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]">
+                <a-select-option
+                  v-for="(item,index) in appData"
+                  :key="index"
+                  :value="item.code"
+                  @click="changeApplication(item.code)">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟灞傜骇">
+              <a-radio-group v-decorator="['type',{rules: [{ required: true, message: '璇烽�夋嫨鑿滃崟灞傜骇锛�' }]}]">
+                <a-radio
+                  v-for="(item,index) in typeData"
+                  :key="index"
+                  :value="item.code"
+                  @click="meneTypeFunc(item.code)">{{ item.value }}</a-radio>
+              </a-radio-group>
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <div v-show="pidShow">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐖剁骇鑿滃崟" has-feedback>
+                <a-tree-select
+                  v-decorator="['pid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]"
+                  style="width: 100%"
+                  :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+                  :treeData="menuTreeData"
+                  placeholder="璇烽�夋嫨鐖剁骇鑿滃崟"
+                  treeDefaultExpandAll>
+                  <span slot="title" slot-scope="{ id }">{{ id }}
+                  </span>
+                </a-tree-select>
+              </a-form-item>
+            </div>
+            <div v-show="redirectShow">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+                <span slot="label">
+                  <a-tooltip title="濡傞渶鎵撳紑棣栭〉鍔犺浇姝ょ洰褰曚笅鑿滃崟锛岃濉啓鍔犺浇鑿滃崟璺敱锛岃涓洪椤靛悗鍏朵粬璁剧疆鐨勪富椤靛皢琚浛浠�">
+                    <a-icon type="question-circle-o" />
+                  </a-tooltip>&nbsp;
+                  閲嶅畾鍚�
+                </span>
+                <a-input prop="redirect" placeholder="璇疯緭鍏ラ噸瀹氬悜鍦板潃" v-decorator="['redirect']" />
+              </a-form-item>
+            </div>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <span slot="label">
+                <a-tooltip title="鎸夐挳锛氭棤锛岃彍鍗曪細鍐呴摼銆佸閾俱�佺粍浠�">
+                  <a-icon type="question-circle-o" />
+                </a-tooltip>&nbsp;
+                鎵撳紑鏂瑰紡
+              </span>
+              <a-radio-group
+                :disabled="openTypeDisabled"
+                v-decorator="['openType',{rules: [{ required: true, message: '璇烽�夋嫨鎵撳紑鏂瑰紡锛�' }]}]">
+                <a-radio
+                  v-for="(item,index) in openTypeData"
+                  :key="index"
+                  :value="item.code"
+                  @click="meneOpenTypeFunc(item.code)">{{ item.value }}</a-radio>
+              </a-radio-group>
+            </a-form-item>
+
+          </a-col>
+        </a-row>
+
+        <a-divider />
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <div v-show="componentShow">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+                <span slot="label">
+                  <a-tooltip
+                    title="鍓嶇vue缁勪欢 views鏂囦欢澶逛笅璺緞锛屼緥锛歴ystem/menu/index銆傛敞锛氱洰褰曠骇濉啓锛歊outeView(涓嶅甫闈㈠寘灞�)锛孭ageView(甯﹂潰鍖呭睉)锛岃彍鍗曠骇鍐呴摼鎵撳紑http閾炬帴濉啓锛欼frame">
+                    <a-icon type="question-circle-o" />
+                  </a-tooltip>&nbsp;
+                  鍓嶇缁勪欢
+                </span>
+                <a-input
+                  placeholder="璇疯緭鍏ュ墠绔粍浠�"
+                  :disabled="componentDisabled"
+                  prop="component"
+                  v-decorator="['component',{rules: [{required: componentRequired, message: '璇疯緭鍏ュ墠绔粍浠�'}]}]" />
+                <!-- ,{rules: [{required: componentRequired, min: 1, message: '璇疯緭鍏ュ墠绔粍浠讹紒'}]}  -->
+              </a-form-item>
+            </div>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <div v-show="routerShow">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+                <span slot="label">
+                  <a-tooltip title="娴忚鍣ㄦ樉绀虹殑URL锛屼緥锛�/menu锛屽搴旀墦寮�椤甸潰涓鸿彍鍗曢〉闈�">
+                    <a-icon type="question-circle-o" />
+                  </a-tooltip>&nbsp;
+                  璺敱鍦板潃
+                </span>
+                <a-input
+                  placeholder="璇疯緭鍏ヨ矾鐢�"
+                  v-decorator="['router', {rules: [{required: routerRequired, message: '璇疯緭鍏ヨ矾鐢憋紒'}]}]" />
+              </a-form-item>
+            </div>
+            <div v-show="permissionShow">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鏉冮檺鏍囪瘑" hasFeedback>
+                <a-input
+                  placeholder="璇疯緭鍏ユ潈闄愭爣璇�"
+                  v-decorator="['permission', {rules: [{required: permissionRequired, message: '璇疯緭鍏ユ潈闄愭爣璇嗭紒'}]}]" />
+              </a-form-item>
+            </div>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <div v-show="linkShow">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+                <span slot="label">
+                  <a-tooltip title="褰撻�夋嫨浜嗛渶瑕佸唴閾炬垨澶栭摼鎵撳紑鐨勯�夐」锛屾澶勮緭鍏ヨ鎵撳紑鐨勯摼鎺ュ湴鍧�锛屼緥锛歨ttp://www.dilon.vip">
+                    <a-icon type="question-circle-o" />
+                  </a-tooltip>&nbsp;
+                  鍐呭閾惧湴鍧�
+                </span>
+                <a-input
+                  placeholder="璇疯緭鍏ュ唴閾炬墦寮�鍦板潃"
+                  :disabled="linkDisabled"
+                  v-decorator="['link', {rules: [{required: linkRequired, message: '璇疯緭鍏ユ潈闄愭爣璇嗭紒'}]}]" />
+              </a-form-item>
+            </div>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <div v-show="iconShow">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍥炬爣">
+                <a-input placeholder="璇烽�夋嫨鍥炬爣" disabled="disabled" v-decorator="['icon']">
+                  <a-icon slot="addonAfter" @click="openIconSele()" type="setting" />
+                </a-input>
+              </a-form-item>
+            </div>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <span slot="label">
+                <a-tooltip title="绯荤粺鏉冮噸锛氳彍鍗曞彲鍒嗛厤缁欎换浣曡鑹诧紝涓氬姟鏉冮噸锛氳彍鍗曞瓒呯骇绠$悊鍛樹笉鍙">
+                  <a-icon type="question-circle-o" />
+                </a-tooltip>&nbsp;
+                鏉冮噸
+              </span>
+              <a-radio-group v-decorator="['weight']">
+                <a-radio v-for="(item,index) in weightData" :key="index" :value="item.code">{{ item.value }}</a-radio>
+              </a-radio-group>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鏄惁鍙">
+              <a-switch
+                id="visible"
+                checkedChildren="鏄�"
+                unCheckedChildren="鍚�"
+                v-decorator="['visible', { valuePropName: 'checked' }]" /><!-- defaultChecked -->
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎺掑簭">
+              <a-input-number style="width: 100%" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="澶囨敞" hasFeedback>
+              <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-input>
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+      </a-form>
+    </a-spin>
+    <a-modal
+      :width="850"
+      :visible="visibleIcon"
+      @cancel="handleCancelIcon"
+      footer=""
+      :mask="false"
+      :closable="false"
+      :destroyOnClose="true">
+      <icon-selector v-model="currentSelectedIcon" @change="handleIconChange" />
+    </a-modal>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    getAppList
+  } from '@/api/modular/system/appManage'
+  import {
+    getMenuTree,
+    sysMenuAdd
+  } from '@/api/modular/system/menuManage'
+  import IconSelector from '@/components/IconSelector'
+  import {
+    sysDictTypeDropDown
+  } from '@/api/modular/system/dictManage'
+  export default {
+    components: {
+      IconSelector
+    },
+
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 6
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 16
+          }
+        },
+        visibleIcon: false,
+        visible: false,
+        confirmLoading: false,
+        appData: [],
+        menuTreeData: [],
+        redirectShow: true,
+        componentShow: true,
+        componentDisabled: false,
+        componentRequired: true,
+        routerRequired: true,
+        routerShow: true,
+        iconShow: true,
+        openTypeShow: true,
+        pidShow: true,
+        permissionShow: true,
+        permissionRequired: true,
+        // 鍥炬爣缁勪欢
+        currentSelectedIcon: 'pause-circle',
+        typeData: [],
+        openTypeData: [],
+        weightData: [],
+        formLoading: true,
+        linkShow: true,
+        openTypeDisabled: false,
+        openTypeDefault: [],
+        openType: '',
+        linkRequired: true,
+        linkDisabled: false,
+        type: '',
+        form: this.$form.createForm(this)
+      }
+    },
+
+    methods: {
+      // 鎵撳紑椤甸潰鍒濆鍖�
+      add(type) {
+        this.visible = true
+        // 鍥炬爣
+        this.currentSelectedIcon = type
+
+        // 榛樿閫変腑鑿滃崟椤癸紝骞跺垵濮嬪寲
+        this.form.getFieldDecorator('type', {
+          valuePropName: 'checked',
+          initialValue: '1'
+        })
+        this.meneTypeFunc('1')
+
+        // 榛樿閫変腑鐨勫崟閫夋
+        // this.form.getFieldDecorator('type',{valuePropName:'checked',initialValue:'1'})
+        this.form.getFieldDecorator('weight', {
+          valuePropName: 'checked',
+          initialValue: '2'
+        })
+        this.form.getFieldDecorator('visible', {
+          initialValue: true
+        })
+
+        // 鑾峰彇绯荤粺搴旂敤鍒楄〃
+        this.getSysApplist()
+        this.sysDictTypeDropDown()
+      },
+
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown() {
+        this.formLoading = true
+        // 鑿滃崟绫诲瀷
+        sysDictTypeDropDown({
+          code: 'menu_type'
+        }).then((res) => {
+          this.typeData = res.data
+        })
+        // 鏉冮噸
+        sysDictTypeDropDown({
+          code: 'menu_weight'
+        }).then((res) => {
+          this.weightData = res.data
+        })
+        // 鍐呭閾�
+        sysDictTypeDropDown({
+          code: 'open_type'
+        }).then((res) => {
+          this.openTypeData = res.data
+          this.formLoading = false
+        })
+      },
+
+      getSysApplist() {
+        return getAppList().then((res) => {
+          if (res.success) {
+            this.appData = res.data
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      },
+      changeApplication(value) {
+        getMenuTree({
+          'application': value
+        }).then((res) => {
+          if (res.success) {
+            this.form.resetFields(`pid`, [])
+            this.menuTreeData = [{
+              'id': '-1',
+              'parentId': '0',
+              'title': '椤剁骇',
+              'value': '0',
+              'pid': '0',
+              'children': res.data
+            }]
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      },
+
+      /**
+       * 閫夋嫨鑿滃崟绫诲瀷鎵ц鍒濆鍖栬〃鍗曞彉閲�
+       */
+      meneTypeFunc(type) {
+        this.type = type
+        // eslint-disable-next-line eqeqeq
+        if (type == '0' || type == '1') {
+          // 鍐呭閾惧湴鍧�鏄剧ず锛岀粰绌哄��
+          this.linkShow = true
+          this.form.resetFields(`link`, [])
+          // 鍥炬爣閫夋嫨鏄剧ず
+          this.iconShow = true
+          // 璺敱蹇呭~锛岃缃┖鍊硷紝骞舵樉绀�
+          this.routerRequired = true
+          this.form.getFieldDecorator('router', {
+            initialValue: ''
+          })
+          this.routerShow = true
+          // 鏉冮檺鏍囪瘑妗嗛殣钘忥紝閫夊~锛岀粰绌哄��
+          this.permissionShow = false
+          this.permissionRequired = false
+          this.form.getFieldDecorator('permission', {
+            initialValue: ''
+          })
+          // 鎵撳紑鏂瑰紡璁剧疆涓虹粍浠� 锛岀鐢ㄩ�夋嫨鏂瑰紡
+          this.openType = '1'
+          this.form.getFieldDecorator('openType', {
+            initialValue: this.openType = '1'
+          })
+          this.openTypeDisabled = false
+        }
+        // eslint-disable-next-line eqeqeq
+        if (type == '0') {
+          // 閲嶅畾鍚戝睍绀猴紝骞剁粰绌�
+          this.redirectShow = true
+          this.form.resetFields(`redirect`, [])
+          // 缁勪欢榛樿涓烘樉绀猴紝璁剧疆鍙緭鍏ワ紝缁欓粯璁ょ粍浠� PageView锛岄獙璇佸繀濉�
+          this.componentShow = true
+          this.componentDisabled = false
+          this.form.getFieldDecorator('component', {
+            initialValue: 'PageView'
+          })
+          this.componentRequired = true
+          // 鐖剁骇鍒濆鍖栭《绾э紝骞跺皢鍏堕殣钘�
+          this.form.getFieldDecorator('pid', {
+            initialValue: '0'
+          })
+          this.pidShow = false
+        } else {
+          // eslint-disable-next-line eqeqeq
+          if (type == '1') {
+            // 缁勪欢鍙互鎵嬭緭锛屽彇娑堝��
+            this.componentDisabled = false
+            this.form.getFieldDecorator('component', {
+              initialValue: ''
+            })
+          }
+          // 閲嶅畾鍚戣緭鍏ラ殣钘忥紝骞剁粰绌哄��
+          this.redirectShow = false
+          this.form.getFieldDecorator('redirect', {
+            initialValue: ''
+          })
+          // 鐖剁骇閫夋嫨鏀惧紑
+          this.pidShow = true
+        }
+        // eslint-disable-next-line eqeqeq
+        if (type == '2') {
+          // 缁勪欢璁剧疆涓嶅~锛屼笉鍙緭鍏ワ紝骞剁粰绌猴紙鎵嬭緭鐨勮窡璁剧疆鐨勶級
+          this.componentRequired = false
+          this.componentDisabled = true
+          this.form.resetFields(`component`, [])
+          this.form.getFieldDecorator('component', {
+            initialValue: ''
+          })
+          // 璺敱閫夊~锛岃缃┖鍊硷紝骞堕殣钘�
+          this.routerRequired = true
+          this.form.getFieldDecorator('router', {
+            initialValue: ''
+          })
+          this.routerShow = false
+          // 鍐呭閾惧湴鍧�闅愯棌锛岀粰绌哄��
+          this.linkShow = false
+          this.form.getFieldDecorator('link', {
+            initialValue: ''
+          })
+          // 鏉冮檺鏍囪瘑妗嗘樉绀猴紝蹇呭~锛岀粰绌哄��
+          this.permissionShow = true
+          this.permissionRequired = true
+          this.form.getFieldDecorator('permission', {
+            initialValue: ''
+          })
+          // 鍥炬爣閫夋嫨闅愯棌,骞剁粰绌�
+          this.iconShow = false
+          this.form.getFieldDecorator('icon', {
+            initialValue: ''
+          })
+          // 鎵撳紑鏂瑰紡璁剧疆涓烘棤 锛岀鐢ㄩ�夋嫨鏂瑰紡
+          this.openType = '0'
+          this.form.getFieldDecorator('openType', {
+            initialValue: this.openType
+          })
+          this.openTypeDisabled = true
+          // 鍙栨秷icon
+          this.form.getFieldDecorator('icon', {
+            initialValue: ''
+          })
+        }
+        this.meneOpenTypeFunc(this.openType)
+      },
+
+      /**
+       * 閫夋嫨鎵撳紑鏂瑰紡鎵ц鏂规硶
+       */
+      meneOpenTypeFunc(openType) {
+        this.form.resetFields(`openType`, openType)
+        // eslint-disable-next-line eqeqeq
+        if (openType == '2' || openType == '3') {
+          // 鐐瑰嚮鍐呭閾剧殑鏃跺�欎繚鐣欏師鍊硷紝鍏朵粬娓呯┖
+          if (this.linkDisabled === false) {
+            this.form.resetFields(`link`, [])
+          }
+          // 璁剧疆鍐呭閾惧彲鎵嬭緭锛屽姞楠岃瘉
+          this.linkDisabled = false
+          this.linkRequired = true
+        } else {
+          // 璁剧疆鍐呭閾句笉鍙墜杈擄紝鍙栨秷鍊硷紝鍙栨秷楠岃瘉
+          this.linkDisabled = true
+          this.form.resetFields(`link`, [])
+          this.linkRequired = false
+        }
+        // 鍙﹁捣涓�涓垎鏀�
+        // eslint-disable-next-line eqeqeq
+        if (openType == '3') {
+          this.componentRequired = false
+          this.componentDisabled = true
+          this.form.resetFields(`component`, [])
+          this.form.getFieldDecorator('component', {
+            initialValue: ''
+          })
+        } else {
+          this.componentRequired = true
+          // eslint-disable-next-line eqeqeq
+          if (this.type == '1' || this.type == '2') {
+            this.form.getFieldDecorator('component', {
+              initialValue: ''
+            })
+          } else {
+            this.form.resetFields(`component`, [])
+            this.form.getFieldDecorator('component', {
+              initialValue: 'PageView'
+            })
+          }
+          // eslint-disable-next-line eqeqeq
+          if (openType == '2') {
+            // 缁勪欢璁剧疆涓� iframe
+            this.form.resetFields(`component`, [])
+            this.form.getFieldDecorator('component', {
+              initialValue: 'Iframe'
+            })
+          }
+        }
+        // eslint-disable-next-line eqeqeq
+        if (this.type == '2') {
+          // eslint-disable-next-line eqeqeq
+          if (openType == '0') {
+            this.componentRequired = false
+            this.routerRequired = false
+          }
+        }
+      },
+
+      openIconSele() {
+        this.visibleIcon = true
+      },
+      handleIconChange(icon) {
+        this.form.getFieldDecorator('icon', {
+          initialValue: icon
+        })
+        this.visibleIcon = false
+      },
+      handleCancelIcon() {
+        this.visibleIcon = false
+      },
+      handleSubmit() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            if (values.visible) {
+              values.visible = 'Y'
+            } else {
+              values.visible = 'N'
+            }
+            values.type = parseInt(values.type)
+            values.openType = parseInt(values.openType)
+            values.weight = parseInt(values.weight)
+            sysMenuAdd(values).then((res) => {
+              this.confirmLoading = false
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel() {
+        this.form.resetFields()
+        this.confirmLoading = false
+        this.visible = false
+      }
+    }
+
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/menu/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/menu/editForm.vue
new file mode 100644
index 0000000..3d9d251
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/menu/editForm.vue
@@ -0,0 +1,677 @@
+<template>
+
+  <a-modal
+    title="缂栬緫鑿滃崟"
+    :width="1000"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+    :destroyOnClose="true">
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+
+        <a-form-item v-show="false">
+          <a-input v-decorator="['id']" />
+        </a-form-item>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鑿滃崟鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+              <a-input
+                placeholder="璇疯緭鍏ヨ彍鍗曞悕绉�"
+                v-decorator="['name',{rules: [{required: true, min: 1, message: '璇疯緭鍏ヨ彍鍗曞悕绉帮紒'}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item style="width: 100%" :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟缂栧彿" hasFeedback>
+              <a-input
+                placeholder="璇疯緭鍏ヨ彍鍗曠紪鍙�"
+                v-decorator="['code', {rules: [{required: true, min: 1, message: '璇疯緭鍏ヨ彍鍗曠紪鍙凤紒'}]}]" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎵�灞炲簲鐢�" has-feedback>
+              <a-select
+                style="width: 100%"
+                
+                placeholder="璇烽�夋嫨搴旂敤鍒嗙被"
+                v-decorator="['application', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]">
+                <a-select-option
+                  v-for="(item,index) in appData"
+                  :key="index"
+                  :value="item.code"
+                  @click="changeApplication(item.code)">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟灞傜骇">
+              <a-radio-group v-decorator="['type',{rules: [{ required: true, message: '璇烽�夋嫨鑿滃崟灞傜骇锛�' }]}]">
+                <a-radio
+                  v-for="(item,index) in typeData"
+                  :key="index"
+                  :value="item.code"
+                  @click="meneTypeFunc(item.code)">{{ item.value }}</a-radio>
+              </a-radio-group>
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <div v-show="pidShow">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐖剁骇鑿滃崟" has-feedback>
+                <a-tree-select
+                  v-decorator="['pid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]"
+                  style="width: 100%"
+                  :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+                  :treeData="menuTreeData"
+                  placeholder="璇烽�夋嫨鐖剁骇鑿滃崟"
+                  treeDefaultExpandAll
+                  @change="setPid">
+                  <span slot="title" slot-scope="{ id }">{{ id }}
+                  </span>
+                </a-tree-select>
+              </a-form-item>
+            </div>
+            <div v-show="redirectShow">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+                <span slot="label">
+                  <a-tooltip title="濡傞渶鎵撳紑棣栭〉鍔犺浇姝ょ洰褰曚笅鑿滃崟锛岃濉啓鍔犺浇鑿滃崟璺敱锛岃涓洪椤靛悗鍏朵粬璁剧疆鐨勪富椤靛皢琚浛浠�">
+                    <a-icon type="question-circle-o" />
+                  </a-tooltip>&nbsp;
+                  閲嶅畾鍚�
+                </span>
+                <a-input prop="redirect" placeholder="璇疯緭鍏ラ噸瀹氬悜鍦板潃" v-decorator="['redirect']" />
+              </a-form-item>
+            </div>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <span slot="label">
+                <a-tooltip title="鎸夐挳锛氭棤锛岃彍鍗曪細鍐呴摼銆佸閾俱�佺粍浠�">
+                  <a-icon type="question-circle-o" />
+                </a-tooltip>&nbsp;
+                鎵撳紑鏂瑰紡
+              </span>
+              <a-radio-group
+                :disabled="openTypeDisabled"
+                v-decorator="['openType',{rules: [{ required: true, message: '璇烽�夋嫨鎵撳紑鏂瑰紡锛�' }]}]">
+                <a-radio
+                  v-for="(item,index) in openTypeData"
+                  :key="index"
+                  :value="item.code"
+                  @click="meneOpenTypeFunc(item.code)">{{ item.value }}</a-radio>
+              </a-radio-group>
+            </a-form-item>
+
+          </a-col>
+        </a-row>
+
+        <a-divider />
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <div v-show="componentShow">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+                <span slot="label">
+                  <a-tooltip
+                    title="鍓嶇vue缁勪欢 views鏂囦欢澶逛笅璺緞锛屼緥锛歴ystem/menu/index銆傛敞锛氱洰褰曠骇濉啓锛歊outeView(涓嶅甫闈㈠寘灞�)锛孭ageView(甯﹂潰鍖呭睉)锛岃彍鍗曠骇鍐呴摼鎵撳紑http閾炬帴濉啓锛欼frame">
+                    <a-icon type="question-circle-o" />
+                  </a-tooltip>&nbsp;
+                  鍓嶇缁勪欢
+                </span>
+                <a-input
+                  placeholder="璇疯緭鍏ュ墠绔粍浠�"
+                  :disabled="componentDisabled"
+                  prop="component"
+                  v-decorator="['component',{rules: [{required: componentRequired, message: '璇疯緭鍏ュ墠绔粍浠�'}]}]" />
+              </a-form-item>
+            </div>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <div v-show="routerShow">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+                <span slot="label">
+                  <a-tooltip title="娴忚鍣ㄦ樉绀虹殑URL锛屼緥锛�/menu锛屽搴旀墦寮�椤甸潰涓鸿彍鍗曢〉闈�">
+                    <a-icon type="question-circle-o" />
+                  </a-tooltip>&nbsp;
+                  璺敱鍦板潃
+                </span>
+                <a-input
+                  placeholder="璇疯緭鍏ヨ矾鐢�"
+                  v-decorator="['router', {rules: [{required: routerRequired, message: '璇疯緭鍏ヨ矾鐢憋紒'}]}]" />
+              </a-form-item>
+            </div>
+            <div v-show="permissionShow">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鏉冮檺鏍囪瘑" hasFeedback>
+                <a-input
+                  placeholder="璇疯緭鍏ユ潈闄愭爣璇�"
+                  v-decorator="['permission', {rules: [{required: permissionRequired, message: '璇疯緭鍏ユ潈闄愭爣璇嗭紒'}]}]" />
+              </a-form-item>
+            </div>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <div v-show="linkShow">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+                <span slot="label">
+                  <a-tooltip title="褰撻�夋嫨浜嗛渶瑕佸唴閾炬垨澶栭摼鎵撳紑鐨勯�夐」锛屾澶勮緭鍏ヨ鎵撳紑鐨勯摼鎺ュ湴鍧�锛屼緥锛歨ttps://www.dilon.vip">
+                    <a-icon type="question-circle-o" />
+                  </a-tooltip>&nbsp;
+                  鍐呭閾惧湴鍧�
+                </span>
+                <a-input
+                  placeholder="璇疯緭鍏ュ唴閾炬墦寮�鍦板潃"
+                  :disabled="linkDisabled"
+                  v-decorator="['link', {rules: [{required: linkRequired, message: '璇疯緭鍏ユ潈闄愭爣璇嗭紒'}]}]" />
+              </a-form-item>
+            </div>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <div v-show="iconShow">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍥炬爣">
+                <a-input placeholder="璇烽�夋嫨鍥炬爣" disabled="disabled" v-decorator="['icon']">
+                  <a-icon slot="addonAfter" @click="openIconSele()" type="setting" />
+                </a-input>
+              </a-form-item>
+            </div>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <span slot="label">
+                <a-tooltip title="绯荤粺鏉冮噸锛氳彍鍗曞彲鍒嗛厤缁欎换浣曡鑹诧紝涓氬姟鏉冮噸锛氳彍鍗曞瓒呯骇绠$悊鍛樹笉鍙">
+                  <a-icon type="question-circle-o" />
+                </a-tooltip>&nbsp;
+                鏉冮噸
+              </span>
+              <a-radio-group v-decorator="['weight']">
+                <a-radio v-for="(item,index) in weightData" :key="index" :value="item.code">{{ item.value }}</a-radio>
+              </a-radio-group>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鏄惁鍙">
+              <a-switch
+                id="visible"
+                checkedChildren="鏄�"
+                unCheckedChildren="鍚�"
+                v-decorator="['visible', { valuePropName: 'checked' }]" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎺掑簭">
+              <a-input-number style="width: 100%" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="澶囨敞" hasFeedback>
+              <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-input>
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+      </a-form>
+    </a-spin>
+    <a-modal
+      :width="850"
+      :visible="visibleIcon"
+      @cancel="handleCancelIcon"
+      footer=""
+      :mask="false"
+      :closable="false"
+      :destroyOnClose="true">
+      <icon-selector v-model="currentSelectedIcon" @change="handleIconChange" />
+    </a-modal>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    getAppList
+  } from '@/api/modular/system/appManage'
+  import {
+    getMenuTree,
+    sysMenuEdit
+  } from '@/api/modular/system/menuManage'
+  import IconSelector from '@/components/IconSelector'
+  import {
+    sysDictTypeDropDown
+  } from '@/api/modular/system/dictManage'
+  export default {
+    name: 'MenuEdit',
+    components: {
+      IconSelector
+    },
+
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 6
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 16
+          }
+        },
+        visibleIcon: false,
+        visible: false,
+        confirmLoading: false,
+        appData: [],
+        menuTreeData: [],
+        redirectShow: true,
+        componentShow: true,
+        componentDisabled: false,
+        componentRequired: true,
+        routerRequired: true,
+        routerShow: true,
+        iconShow: true,
+        openTypeShow: true,
+        pidShow: true,
+        permissionShow: true,
+        permissionRequired: true,
+        // 鍥炬爣缁勪欢
+        currentSelectedIcon: 'pause-circle',
+        typeData: [],
+        openTypeData: [],
+        weightData: [],
+        formLoading: true,
+        linkShow: true,
+        openTypeDisabled: false,
+        openTypeDefault: [],
+        openType: '',
+        linkRequired: true,
+        linkDisabled: false,
+        type: '',
+        pid: '',
+        appDisabled: false,
+        form: this.$form.createForm(this)
+      }
+    },
+
+    watch: {
+      pid(val) {
+        if (val === '0') {
+          // 鍐嶄笉鑳藉垏鎹㈠簲鐢�
+          this.appDisabled = false
+        } else {
+          this.appDisabled = true
+        }
+      }
+    },
+
+    methods: {
+      // 鎵撳紑椤甸潰鍒濆鍖�
+      edit(record) {
+        this.visible = true
+        // 鑾峰彇绯荤粺搴旂敤鍒楄〃
+        this.getSysApplist()
+        this.sysDictTypeDropDown()
+
+        // 鍥炬爣
+        this.currentSelectedIcon = record.icon
+        // 榛樿閫変腑鑿滃崟椤癸紝骞跺垵濮嬪寲
+        this.form.getFieldDecorator('type', {
+          valuePropName: 'checked',
+          initialValue: record.type.toString()
+        })
+        this.meneTypeFunc(record.type.toString(), record.openType.toString())
+
+        // 榛樿閫変腑鐨勫崟閫夋
+        // eslint-disable-next-line no-unused-vars
+        // const visibleDef = false
+
+        // eslint-disable-next-line eqeqeq
+        if (record.visible == 'Y') {
+          this.visibleDef = true
+        } else {
+          this.visibleDef = false
+        }
+        this.form.getFieldDecorator('weight', {
+          valuePropName: 'checked',
+          initialValue: record.weight.toString()
+        })
+        this.form.getFieldDecorator('visible', {
+          valuePropName: 'checked',
+          initialValue: this.visibleDef
+        })
+        this.form.getFieldDecorator('icon', {
+          initialValue: record.icon
+        })
+        setTimeout(() => {
+          this.setMenuItem(record)
+          this.changeApplication(record.application)
+        }, 100)
+      },
+
+      setMenuItem(record) {
+        this.form.setFieldsValue({
+          id: record.id,
+          name: record.name,
+          code: record.code,
+          application: record.application,
+          redirect: record.redirect,
+          component: record.component,
+          permission: record.permission,
+          link: record.link,
+          router: record.router,
+          sort: record.sort,
+          remark: record.remark
+        })
+        this.form.getFieldDecorator('pid', {
+          initialValue: record.pid
+        })
+        this.pid = record.pid
+      },
+
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown() {
+        this.formLoading = true
+        // 鑿滃崟绫诲瀷
+        sysDictTypeDropDown({
+          code: 'menu_type'
+        }).then((res) => {
+          this.typeData = res.data
+        })
+        // 鏉冮噸
+        sysDictTypeDropDown({
+          code: 'menu_weight'
+        }).then((res) => {
+          this.weightData = res.data
+        })
+        // 鍐呭閾�
+        sysDictTypeDropDown({
+          code: 'open_type'
+        }).then((res) => {
+          this.openTypeData = res.data
+          this.formLoading = false
+        })
+      },
+
+      /**
+       * 閫夋嫨鐖剁骇
+       */
+      setPid(value) {
+        this.pid = value
+      },
+
+      getSysApplist() {
+        return getAppList().then((res) => {
+          if (res.success) {
+            this.appData = res.data
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      },
+      changeApplication(value) {
+        getMenuTree({
+          'application': value
+        }).then((res) => {
+          if (res.success) {
+            this.form.resetFields(`pid`, [])
+            this.menuTreeData = [{
+              'id': '-1',
+              'parentId': '0',
+              'title': '椤剁骇',
+              'value': '0',
+              'pid': '0',
+              'children': res.data
+            }]
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      },
+
+      /**
+       * 閫夋嫨鑿滃崟绫诲瀷鎵ц鍒濆鍖栬〃鍗曞彉閲�
+       */
+      meneTypeFunc(type, openType) {
+        this.type = type
+        // eslint-disable-next-line eqeqeq
+        if (type == '0' || type == '1') {
+          // 鍐呭閾惧湴鍧�鏄剧ず锛岀粰绌哄��
+          this.linkShow = true
+          this.form.resetFields(`link`, [])
+          // 鍥炬爣閫夋嫨鏄剧ず
+          this.iconShow = true
+          // 璺敱蹇呭~锛岃缃┖鍊硷紝骞舵樉绀�
+          this.routerRequired = true
+          this.form.getFieldDecorator('router', {
+            initialValue: ''
+          })
+          this.routerShow = true
+          // 鏉冮檺鏍囪瘑妗嗛殣钘忥紝閫夊~锛岀粰绌哄��
+          this.permissionShow = false
+          this.permissionRequired = false
+          this.form.getFieldDecorator('permission', {
+            initialValue: ''
+          })
+          // 鎵撳紑鏂瑰紡璁剧疆涓虹粍浠� 锛岀鐢ㄩ�夋嫨鏂瑰紡
+          this.openType = openType
+          this.form.getFieldDecorator('openType', {
+            initialValue: this.openType
+          })
+          this.openTypeDisabled = false
+        }
+        // eslint-disable-next-line eqeqeq
+        if (type == '0') {
+          // 閲嶅畾鍚戝睍绀猴紝骞剁粰绌�
+          this.redirectShow = true
+          this.form.resetFields(`redirect`, [])
+          // 缁勪欢榛樿涓烘樉绀猴紝璁剧疆鍙緭鍏ワ紝缁欓粯璁ょ粍浠� PageView锛岄獙璇佸繀濉�
+          this.componentShow = true
+          this.componentDisabled = false
+          this.form.getFieldDecorator('component', {
+            initialValue: 'PageView'
+          })
+          this.componentRequired = true
+          // 鐖剁骇鍒濆鍖栭《绾э紝骞跺皢鍏堕殣钘�
+          this.form.getFieldDecorator('pid', {
+            initialValue: '0'
+          })
+          this.pid = '0'
+          this.pidShow = false
+        } else {
+          // eslint-disable-next-line eqeqeq
+          if (type == '1') {
+            // 缁勪欢鍙互鎵嬭緭锛屽彇娑堝��
+            this.componentDisabled = false
+            this.form.getFieldDecorator('component', {
+              initialValue: ''
+            })
+          }
+          // 閲嶅畾鍚戣緭鍏ラ殣钘忥紝骞剁粰绌哄��
+          this.redirectShow = false
+          this.form.getFieldDecorator('redirect', {
+            initialValue: ''
+          })
+          // 鐖剁骇閫夋嫨鏀惧紑
+          this.pidShow = true
+        }
+        // eslint-disable-next-line eqeqeq
+        if (type == '2') {
+          // 缁勪欢璁剧疆涓嶅~锛屼笉鍙緭鍏ワ紝骞剁粰绌猴紙鎵嬭緭鐨勮窡璁剧疆鐨勶級
+          this.componentRequired = false
+          this.componentDisabled = true
+          this.form.resetFields(`component`, [])
+          this.form.getFieldDecorator('component', {
+            initialValue: ''
+          })
+          // 璺敱閫夊~锛岃缃┖鍊硷紝骞堕殣钘�
+          this.routerRequired = true
+          this.form.getFieldDecorator('router', {
+            initialValue: ''
+          })
+          this.routerShow = false
+          // 鍐呭閾惧湴鍧�闅愯棌锛岀粰绌哄��
+          this.linkShow = false
+          this.form.getFieldDecorator('link', {
+            initialValue: ''
+          })
+          // 鏉冮檺鏍囪瘑妗嗘樉绀猴紝蹇呭~锛岀粰绌哄��
+          this.permissionShow = true
+          this.permissionRequired = true
+          this.form.getFieldDecorator('permission', {
+            initialValue: ''
+          })
+          // 鍥炬爣閫夋嫨闅愯棌,骞剁粰绌�
+          this.iconShow = false
+          this.form.getFieldDecorator('icon', {
+            initialValue: ''
+          })
+          // 鎵撳紑鏂瑰紡璁剧疆涓烘棤 锛岀鐢ㄩ�夋嫨鏂瑰紡
+          this.openType = '0'
+          this.form.getFieldDecorator('openType', {
+            initialValue: this.openType
+          })
+          this.openTypeDisabled = true
+          // 鍙栨秷icon
+          this.form.getFieldDecorator('icon', {
+            initialValue: ''
+          })
+        }
+        this.meneOpenTypeFunc(this.openType)
+      },
+
+      /**
+       * 閫夋嫨鎵撳紑鏂瑰紡鎵ц鏂规硶
+       */
+      meneOpenTypeFunc(openType) {
+        this.form.resetFields(`openType`, openType)
+        // eslint-disable-next-line eqeqeq
+        if (openType == '2' || openType == '3') {
+          // 鐐瑰嚮鍐呭閾剧殑鏃跺�欎繚鐣欏師鍊硷紝鍏朵粬娓呯┖
+          if (this.linkDisabled === false) {
+            this.form.resetFields(`link`, [])
+          }
+          // 璁剧疆鍐呭閾惧彲鎵嬭緭锛屽姞楠岃瘉
+          this.linkDisabled = false
+          this.linkRequired = true
+        } else {
+          // 璁剧疆鍐呭閾句笉鍙墜杈擄紝鍙栨秷鍊硷紝鍙栨秷楠岃瘉
+          this.linkDisabled = true
+          this.form.resetFields(`link`, [])
+          this.linkRequired = false
+        }
+        // 鍙﹁捣涓�涓垎鏀�
+        // eslint-disable-next-line eqeqeq
+        if (openType == '3') {
+          this.componentRequired = false
+          this.componentDisabled = true
+          this.form.resetFields(`component`, [])
+          this.form.getFieldDecorator('component', {
+            initialValue: ''
+          })
+        } else {
+          this.componentRequired = true
+          // eslint-disable-next-line eqeqeq
+          if (this.type == '1' || this.type == '2') {
+            this.form.getFieldDecorator('component', {
+              initialValue: ''
+            })
+          } else {
+            this.form.resetFields(`component`, [])
+            this.form.getFieldDecorator('component', {
+              initialValue: 'PageView'
+            })
+          }
+          // eslint-disable-next-line eqeqeq
+          if (openType == '2') {
+            // 缁勪欢璁剧疆涓� iframe
+            this.form.resetFields(`component`, [])
+            this.form.getFieldDecorator('component', {
+              initialValue: 'Iframe'
+            })
+          }
+        }
+        // eslint-disable-next-line eqeqeq
+        if (this.type == '2') {
+          // eslint-disable-next-line eqeqeq
+          if (openType == '0') {
+            this.componentRequired = false
+            this.routerRequired = false
+          }
+        }
+      },
+
+      openIconSele() {
+        this.visibleIcon = true
+      },
+      handleIconChange(icon) {
+        this.form.getFieldDecorator('icon', {
+          initialValue: icon
+        })
+        // this.form.resetFields(`icon`,icon);
+
+        this.visibleIcon = false
+      },
+      handleCancelIcon() {
+        this.visibleIcon = false
+      },
+      handleSubmit() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            if (values.visible) {
+              values.visible = 'Y'
+            } else {
+              values.visible = 'N'
+            }
+            values.type = parseInt(values.type)
+            values.openType = parseInt(values.openType)
+            values.weight = parseInt(values.weight)
+            sysMenuEdit(values).then((res) => {
+              this.confirmLoading = false
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel() {
+        this.form.resetFields()
+        this.confirmLoading = false
+        this.visible = false
+      }
+    }
+
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/menu/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/menu/index.vue
new file mode 100644
index 0000000..a65c496
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/menu/index.vue
@@ -0,0 +1,267 @@
+/* eslint-disable */
+<template>
+  <a-row :gutter="24">
+    <a-col :md="5" :sm="24" style="padding: 0 0 0 0;">
+      <a-card :bordered="true">
+        <a-table
+          ref="table"
+          size="middle"
+          :rowKey="(record) => record.code"
+          :pagination="false"
+          :defaultExpandAllRows="true"
+          :columns="appColumns"
+          :dataSource="appData"
+          :loading="loading"
+          showPagination="auto"
+          :row-selection="{ selectedRowKeys: selectedAppKeys, onChange: onAppSelectChange,type:'radio' }"
+          :customRow="click"
+        >
+          <!--:rowSelection="rowSelectionon"-->
+
+          <span slot="type" slot-scope="text">
+            {{ typeFilter(text) }}
+          </span>
+
+          <span slot="icon" slot-scope="text">
+            <div v-if="text != null && text != ''">
+              <a-icon :type="text"/>
+            </div>
+          </span>
+        </a-table>
+      </a-card>
+    </a-col>
+    <a-col :md="19" :sm="24">
+      <a-card :bordered="false">
+        <div class="table-operator" v-if="hasPerm('sysMenu:add')">
+          <a-button type="primary" v-if="hasPerm('sysMenu:add')" icon="plus" @click="$refs.addForm.add()">鏂板鑿滃崟
+          </a-button>
+        </div>
+        <!--<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+          <i class="anticon anticon-info-circle ant-alert-icon"></i>宸查�夋嫨&nbsp;<a style="font-weight: 600">{{this.selectedRowKeys.length }}</a>椤�&nbsp;&nbsp;
+          <a style="margin-left: 24px" @click="clearSele()">娓呯┖</a>
+        </div>-->
+        <a-table
+          ref="table"
+          size="middle"
+          :rowKey="(record) => record.id"
+          :pagination="false"
+          :defaultExpandAllRows="true"
+          :columns="columns"
+          :dataSource="data"
+          :loading="loading"
+          showPagination="auto"
+          :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+        >
+          <!--:rowSelection="rowSelectionon"-->
+
+          <span slot="type" slot-scope="text">
+            {{ typeFilter(text) }}
+          </span>
+
+          <span slot="icon" slot-scope="text">
+            <div v-if="text != null && text != ''">
+              <a-icon :type="text"/>
+            </div>
+          </span>
+
+          <span slot="action" slot-scope="text, record">
+            <template>
+              <a v-if="hasPerm('sysMenu:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+              <a-divider type="vertical" v-if="hasPerm('sysMenu:edit') & hasPerm('sysMenu:delete')"/>
+              <a-popconfirm v-if="hasPerm('sysMenu:delete')" placement="topRight" title="鍒犻櫎鏈彍鍗曚笌涓嬬骇锛�"
+                            @confirm="() => handleDel(record)">
+                <a>鍒犻櫎</a>
+              </a-popconfirm>
+            </template>
+          </span>
+        </a-table>
+
+        <add-form ref="addForm" @ok="handleOk"/>
+        <edit-form ref="editForm" @ok="handleOk"/>
+      </a-card>
+    </a-col>
+  </a-row>
+
+</template>
+
+<script>
+    import { getMenuList, sysMenuDelete } from '@/api/modular/system/menuManage'
+    import addForm from './addForm'
+    import editForm from './editForm'
+    import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+    import { getAppList } from '@/api/modular/system/appManage'
+
+    export default {
+        components: {
+            addForm,
+            editForm
+        },
+        data() {
+            return {
+                queryParam: {},
+                data: [],
+                appData: [],
+                loading: true,
+                columns: [
+                    {
+                        title: '鑿滃崟鍚嶇О',
+                        dataIndex: 'name',
+                        width: '20%'
+                    },
+                    {
+                        title: '鑿滃崟绫诲瀷',
+                        dataIndex: 'type',
+                        scopedSlots: { customRender: 'type' }
+                    },
+                    {
+                        title: '鍥炬爣',
+                        dataIndex: 'icon',
+                        scopedSlots: { customRender: 'icon' }
+                    },
+                    {
+                        title: '缁勪欢',
+                        dataIndex: 'component',
+                        width: '20%',
+                        ellipsis: true
+                    },
+                    {
+                        title: '璺敱鍦板潃',
+                        dataIndex: 'router',
+                        key: 'router',
+                        ellipsis: true
+                    },
+                    {
+                        title: '鎺掑簭',
+                        dataIndex: 'sort'
+                    }
+                ],
+                appColumns: [{
+                    title: '搴旂敤鍚嶇О',
+                    dataIndex: 'name'
+                }],
+                selectedRowKeys: [],
+                selectedAppKeys: [],
+                typeDict: []
+            }
+        },
+        created() {
+            this.loadData()
+            if (this.hasPerm('sysMenu:edit') || this.hasPerm('sysMenu:delete')) {
+                this.columns.push({
+                    title: '鎿嶄綔',
+                    dataIndex: 'action',
+                    width: '150px',
+                    scopedSlots: { customRender: 'action' }
+                })
+            }
+        },
+
+        methods: {
+            loadData() {
+                this.loading = true
+                getAppList(this.queryParam).then((res) => {
+                    if (res.success) {
+                        this.appData = res.data
+                        this.removeEmptyChildren(this.appData)
+                    }
+                }).finally(() => {
+                    this.loading = false
+                })
+                this.sysDictTypeDropDown()
+            },
+
+            removeEmptyChildren(data) {
+                if (data == null || data.length === 0) return
+                for (let i = 0; i < data.length; i++) {
+                    const item = data[i]
+                    if (item.children != null && item.children.length === 0) {
+                        item.children = null
+                    } else {
+                        this.removeEmptyChildren(item.children)
+                    }
+                }
+            },
+
+            typeFilter(type) {
+                // eslint-disable-next-line eqeqeq
+                const values = this.typeDict.filter(item => item.code == type)
+                if (values.length > 0) {
+                    return values[0].value
+                }
+            },
+
+            /**
+             * 鑾峰彇瀛楀吀鏁版嵁
+             */
+            sysDictTypeDropDown() {
+                sysDictTypeDropDown({ code: 'menu_type' }).then((res) => {
+                    this.typeDict = res.data
+                })
+            },
+
+            refreshSele() {
+                this.onAppSelectChange(this.selectedAppKeys)
+            },
+            handleOk() {
+                this.onAppSelectChange(this.selectedAppKeys)
+            },
+            handleDel(record) {
+                sysMenuDelete(record).then((res) => {
+                    if (res.success) {
+                        this.$message.success('鍒犻櫎鎴愬姛')
+                        this.onAppSelectChange(this.selectedAppKeys)
+                    } else {
+                        this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+                    }
+                }).catch((err) => {
+                    this.$message.error('閿欒锛�' + err.message)
+                })
+            },
+
+            onSelectChange(selectedRowKeys) {
+                this.selectedRowKeys = selectedRowKeys
+            },
+            onAppSelectChange(selectedRowKeys) {
+                this.selectedAppKeys = selectedRowKeys
+                if (selectedRowKeys.length > 0) {
+                    this.queryParam.application = selectedRowKeys[0]
+                    getMenuList(this.queryParam).then((res) => {
+                        if (res.success) {
+                            this.data = res.data
+                            this.removeEmptyChildren(this.data)
+                        }
+                    }).finally(() => {
+                        this.loading = false
+                    })
+                }
+            },
+            click(record, index) {
+                return {
+                    on: {
+                        click: () => {
+                            const keys = []
+                            keys.push(record.code)
+                            this.selectedAppKeys = keys
+                            this.onAppSelectChange(this.selectedAppKeys)
+                        }
+                    }
+                }
+            },
+            clearSele() {
+                this.selectedRowKeys = []
+            }
+        }
+    }
+
+</script>
+<style scoped>
+
+  .table-operator {
+    margin-bottom: 18px;
+  }
+
+  button {
+    margin-right: 8px;
+  }
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/auditor.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/auditor.vue
new file mode 100644
index 0000000..814845e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/auditor.vue
@@ -0,0 +1,116 @@
+<template>
+  <div>
+    <x-card v-if="hasPerm('myworkflow:page')">
+      <div slot="content" class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="娴佺▼鍚嶇О">
+                <a-input v-model="queryParam.description" allow-clear placeholder="璇疯緭鍏ユ祦绋嬪悕绉�" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </x-card>
+    <a-card :bordered="false">
+      <a-spin :spinning="loading">
+        <s-table
+          ref="table"
+          :columns="columns"
+          :data="loadData"
+          :alert="true"
+          :rowKey="(record) => record.id">
+          <span slot="status" slot-scope="text">
+            <a-tag v-if="text === 0" color="orange">
+              {{ '鏈畬鎴�' }}
+            </a-tag>
+            <a-tag v-if="text === 1" color="green">
+              {{ '宸插畬鎴�' }}
+            </a-tag>
+          </span>
+          <span slot="action" slot-scope="text, record">
+            <a v-if="hasPerm('auditorworkflow:view')" @click="viewworkflow(record.workflowId,record.executionPointerId,record.formId)" >鏌ョ湅</a>
+          </span>
+        </s-table>
+      </a-spin>
+    </a-card>
+    <view-workflow ref="viewworkflow"></view-workflow>
+  </div>
+</template>
+
+<script>
+import { STable, XCard } from '@/components'
+import { getMyUnAuditorWorkflow } from '@/api/modular/system/auditorworkflowManage'
+import ViewWorkflow from './components/viewworkflow.vue'
+export default {
+  name: 'AuditorWorkflow',
+  components: {
+    STable,
+    XCard,
+    ViewWorkflow
+  },
+  data() {
+    return {
+      queryParam: {},
+      loading: true,
+      columns: [
+        {
+          title: '鏍囬',
+          dataIndex: 'title'
+        },
+
+        {
+          title: '浠诲姟鍚嶇О',
+          dataIndex: 'stepName'
+        },
+        {
+          title: '鍙戣捣浜�',
+          dataIndex: 'createUserName'
+        },
+        {
+          title: '鍒涘缓鏃堕棿',
+          dataIndex: 'createTime'
+        },
+        {
+          title: '鐘舵��',
+          dataIndex: 'status',
+          scopedSlots: {
+            customRender: 'status'
+          }
+        },
+        {
+          title: '鎿嶄綔',
+          dataIndex: 'action',
+          scopedSlots: {
+            customRender: 'action'
+          }
+        }
+      ],
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: parameter => {
+        this.queryParam.status = 1
+        return getMyUnAuditorWorkflow(Object.assign(parameter, this.queryParam)).then((res) => {
+          this.loading = false
+          return res.data
+        })
+      }
+    }
+  },
+  methods: {
+     viewworkflow(id, executionPointerId, formId) {
+      this.$refs.viewworkflow.init(id, executionPointerId, formId)
+    }
+  }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/auditoropera.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/auditoropera.vue
new file mode 100644
index 0000000..1d67c14
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/auditoropera.vue
@@ -0,0 +1,137 @@
+<template>
+  <a-drawer
+    title="娴佺▼瀹℃牳"
+    placement="right"
+    width="1000px"
+    :maskClosable="true"
+    :destroyOnClose="true"
+    :closable="true"
+    :visible="visible"
+    @close="onClose"
+  >
+    <a-skeleton :active="true" :loading="loading" :paragraph="true" :title="true" />
+    <a-skeleton :active="true" :loading="loading" :paragraph="true" :title="true" />
+    <a-skeleton :active="true" :loading="loading" :paragraph="true" :title="true" />
+    <k-form-build v-show="loading == false" ref="kfb" :value="jsonData" :disabled="true"/>
+    <a-form-model v-show="loading == false" :model="form" :label-col="labelCol" :wrapper-col="wrapperCol">
+      <a-form-model-item label="澶勭悊">
+        <a-radio-group v-model="form.resource">
+          <a-radio :value="true" :checked="true">
+            鍚屾剰
+          </a-radio>
+          <a-radio :value="false">
+            涓嶅悓鎰�
+          </a-radio>
+        </a-radio-group>
+      </a-form-model-item>
+      <a-form-model-item label="澶囨敞">
+        <a-textarea v-model="form.reMark" />
+      </a-form-model-item>
+    </a-form-model>
+    <div
+      :style="{
+        position: 'absolute',
+        right: 0,
+        bottom: 0,
+        width: '100%',
+        borderTop: '1px solid #e9e9e9',
+        padding: '10px 16px',
+        background: '#fff',
+        textAlign: 'right',
+        zIndex: 1,
+      }"
+    >
+      <a-button :style="{ marginRight: '8px' }" @click="onClose">
+        鍙栨秷
+      </a-button>
+      <a-button type="primary" @click="submit()">
+        鎻愪氦
+      </a-button>
+    </div>
+    <time v-show="loading == false" v-for="item in stepAuditor" :key="item.auditorName">
+      <a-timeline-item :color="setColor(item.status)">
+        <p>{{ item.auditorTime }}</p>
+        <p>{{ item.auditorName }}</p>
+        <p>{{ item.reMark }}</p>
+      </a-timeline-item>
+    </time>
+  </a-drawer>
+</template>
+
+<script>
+import 'k-form-design/styles/k-form-design.less'
+import { formEntityView } from '@/api/modular/system/formDesignmanage'
+import { inputsWorkflow } from '@/api/modular/system/workflowManage'
+import { getStepAuditor, auditorWorkflow } from '@/api/modular/system/auditorworkflowManage'
+import { Timeline } from 'ant-design-vue'
+export default {
+  name: 'AuditorOpera',
+  components: {
+    [Timeline.Item.name]: Timeline.Item
+  },
+  props: {
+
+  },
+  data () {
+    return {
+      visible: false,
+      loading: true,
+      executionPointerId: null,
+      labelCol: { span: 4 },
+      wrapperCol: { span: 14 },
+      form: {
+        reMark: '',
+        resource: true
+      },
+      jsonData: {},
+      jsonValue: {},
+      stepAuditor: []
+    }
+  },
+  methods: {
+    init(id, executionPointerId, formId) {
+      this.visible = true
+      this.executionPointerId = executionPointerId
+      formEntityView(Object.assign({ id: formId })).then(res => {
+        this.jsonData = JSON.parse(res.data.formJson) // res.data.nodesList
+        inputsWorkflow(Object.assign({ workflowId: id })).then(res => {
+          this.loading = false
+          this.$refs.kfb.setData(res.data)
+        })
+      })
+      getStepAuditor(Object.assign({ workflowId: id })).then(res => {
+        this.stepAuditor = res.data
+      })
+    },
+    setColor(status) {
+      if (status === 0) {
+        return 'red'
+      } else if (status === 1) {
+        return 'green'
+      } else if (status === 2) {
+        return 'orange'
+      }
+    },
+    submit() {
+      var data = {
+        executionPointerId: this.executionPointerId,
+        status: this.form.resource === true ? 1 : 0,
+        Remark: this.form.reMark
+      }
+      auditorWorkflow(Object.assign(data)).then(res => {
+        console.log(res)
+      })
+    },
+    onClose() {
+      this.visible = false
+      this.form.reMark = ''
+      this.form.resource = true
+      this.loading = true
+    }
+  }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/viewworkflow.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/viewworkflow.vue
new file mode 100644
index 0000000..8f6d4e9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/viewworkflow.vue
@@ -0,0 +1,99 @@
+<template>
+  <a-drawer
+    title="娴佺▼瀹℃牳"
+    placement="right"
+    width="1000px"
+    :maskClosable="true"
+    :destroyOnClose="true"
+    :closable="true"
+    :visible="visible"
+    @close="onClose"
+  >
+    <a-skeleton :active="true" :loading="loading" :paragraph="true" :title="true" />
+    <a-skeleton :active="true" :loading="loading" :paragraph="true" :title="true" />
+    <k-form-build v-show="loading == false" ref="kfb" :value="jsonData" :disabled="true"/>
+    <a-divider>娴佺▼璺嚎</a-divider>
+    <a-skeleton :active="true" :loading="loading" :paragraph="true" :title="true" />
+    <time v-show="loading == false" v-for="item in stepAuditor" :key="item.stepName">
+      <a-timeline-item style="margin-left:100px" :color="setColor(item.status)">
+        <p class="title">
+          <span >{{ item.stepName }}</span>
+          <span style="margin-left:10px">{{ item.auditorTime }}</span>
+        </p>
+        <p v-if="item.auditorName !== ''">{{ item.auditorName }}</p>
+        <p v-if="item.auditorName !== ''">{{ item.reMark }}</p>
+      </a-timeline-item>
+    </time>
+  </a-drawer>
+</template>
+
+<script>
+import 'k-form-design/styles/k-form-design.less'
+import { formEntityView } from '@/api/modular/system/formDesignmanage'
+import { inputsWorkflow } from '@/api/modular/system/workflowManage'
+import { getStepAuditor } from '@/api/modular/system/auditorworkflowManage'
+import { Timeline } from 'ant-design-vue'
+export default {
+  name: 'ViewWorkflow',
+  components: {
+    [Timeline.Item.name]: Timeline.Item
+  },
+  props: {
+
+  },
+  data () {
+    return {
+      visible: false,
+      loading: true,
+      executionPointerId: null,
+      labelCol: { span: 4 },
+      wrapperCol: { span: 14 },
+      form: {
+        reMark: '',
+        resource: true
+      },
+      jsonData: {},
+      jsonValue: {},
+      stepAuditor: []
+    }
+  },
+  methods: {
+    init(id, executionPointerId, formId) {
+      this.visible = true
+      this.executionPointerId = executionPointerId
+      formEntityView(Object.assign({ id: formId })).then(res => {
+        this.jsonData = JSON.parse(res.data.formJson) // res.data.nodesList
+        inputsWorkflow(Object.assign({ workflowId: id })).then(res => {
+          this.loading = false
+          this.$refs.kfb.setData(res.data)
+        })
+      })
+      getStepAuditor(Object.assign({ workflowId: id })).then(res => {
+        console.log(res)
+        this.stepAuditor = res.data
+      })
+    },
+    setColor(status) {
+      if (status === 0) {
+        return 'red'
+      } else if (status === 1) {
+        return 'green'
+      } else if (status === 2) {
+        return 'orange'
+      }
+    },
+    onClose() {
+      this.visible = false
+      this.form.reMark = ''
+      this.form.resource = true
+      this.loading = true
+    }
+  }
+}
+</script>
+
+<style>
+.title{
+  font-weight: bolder;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/create.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/create.vue
new file mode 100644
index 0000000..d74af96
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/create.vue
@@ -0,0 +1,149 @@
+<template>
+  <div>
+    <x-card v-if="hasPerm('myworkflow:page')">
+      <div slot="content" class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="娴佺▼鍚嶇О">
+                <a-input v-model="queryParam.description" allow-clear placeholder="璇疯緭鍏ユ祦绋嬪悕绉�" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </x-card>
+    <a-card :bordered="false">
+      <a-spin :spinning="loading">
+        <s-table
+          ref="table"
+          :columns="columns"
+          :data="loadData"
+          :alert="true"
+          :rowKey="(record) => record.id">
+          <span slot="status" slot-scope="text">
+            <a-tag v-if="text === 0" color="orange">
+              {{ '鏈畬鎴�' }}
+            </a-tag>
+            <a-tag v-if="text === 1" color="blue">
+              {{ '鏆傚仠' }}
+            </a-tag>
+            <a-tag v-if="text === 2" color="green">
+              {{ '宸插畬鎴�' }}
+            </a-tag>
+            <a-tag v-if="text === 3" color="red">
+              {{ '缁撴潫' }}
+            </a-tag>
+          </span>
+          <span slot="createdUserName" slot-scope="text">
+            <a-tag color="">
+              {{ text }}
+            </a-tag>
+          </span>
+          <span slot="version" slot-scope="text">
+            {{ 'V'+text+'.0' }}
+          </span>
+          <span slot="action" slot-scope="text, record">
+            <a v-if="hasPerm('auditorworkflow:view')" @click="viewworkflow(record.id,record.formId)" >鏌ョ湅</a>
+            <a-divider type="vertical" v-if="hasPerm('auditorworkflow:delete') & record.status == 0 & hasPerm('auditorworkflow:view')" />
+            <a-popconfirm v-if="hasPerm('myworkflow:delete') & record.status == 0" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => deleteworkflow(record.id)">
+              <a>鍒犻櫎</a>
+            </a-popconfirm>
+          </span>
+        </s-table>
+      </a-spin>
+    </a-card>
+    <view-workflow ref="viewworkflow"></view-workflow>
+  </div>
+</template>
+
+<script>
+import { STable, XCard } from '@/components'
+import { getMystartWorkflow } from '@/api/modular/system/auditorworkflowManage'
+import ViewWorkflow from './components/viewworkflow.vue'
+export default {
+  name: 'CreateWorkflow',
+  components: {
+    STable,
+    XCard,
+    ViewWorkflow
+  },
+  data() {
+    return {
+      queryParam: {},
+      loading: true,
+      columns: [
+        {
+          title: '鏍囬',
+          dataIndex: 'description'
+        },
+
+        {
+          title: '鍒涘缓浜�',
+          dataIndex: 'createdUserName',
+          scopedSlots: {
+            customRender: 'createdUserName'
+          }
+        },
+        {
+          title: '鍒涘缓鏃堕棿',
+          dataIndex: 'createdTime'
+        },
+        {
+          title: '鐘舵��',
+          dataIndex: 'status',
+          scopedSlots: {
+            customRender: 'status'
+          }
+        },
+        {
+          title: '瀹屾垚鏃堕棿',
+          dataIndex: 'completeTime'
+        },
+        {
+          title: '娴佺▼鐗堟湰',
+          dataIndex: 'version',
+          scopedSlots: {
+            customRender: 'version'
+          }
+        },
+        {
+          title: '鎿嶄綔',
+          dataIndex: 'action',
+          scopedSlots: {
+            customRender: 'action'
+          }
+        }
+      ],
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: parameter => {
+        return getMystartWorkflow(Object.assign(parameter, this.queryParam)).then((res) => {
+          this.loading = false
+          return res.data
+        })
+      }
+    }
+  },
+  methods: {
+    // 鏌ョ湅娴佺▼
+    viewworkflow(id, formId) {
+      console.log(id, formId)
+      this.$refs.viewworkflow.init(id, '', formId)
+    },
+    // 鍒犻櫎娴佺▼
+    deleteworkflow(id) {
+
+    }
+  }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/index.vue
new file mode 100644
index 0000000..3effc38
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/index.vue
@@ -0,0 +1,45 @@
+<template>
+  <div>
+    <a-card>
+      <a-tabs default-active-key="1" force-render>
+        <a-tab-pane key="1" tab="鎴戝彂璧风殑娴佺▼">
+          <create-workflow></create-workflow>
+        </a-tab-pane>
+        <a-tab-pane key="2" tab="鏈鏍告祦绋�" >
+          <un-auditor-workflow></un-auditor-workflow>
+        </a-tab-pane>
+        <a-tab-pane key="3" tab="宸插鏍告祦绋�">
+          <auditor-workflow></auditor-workflow>
+        </a-tab-pane>
+      </a-tabs>
+    </a-card>
+  </div>
+</template>
+
+<script>
+import { XCard } from '@/components'
+import CreateWorkflow from './create.vue'
+import UnAuditorWorkflow from './unauditor.vue'
+import AuditorWorkflow from './auditor.vue'
+export default {
+  name: 'WorkflowList',
+  components: {
+    XCard,
+    CreateWorkflow,
+    UnAuditorWorkflow,
+    AuditorWorkflow
+  },
+  data() {
+    return {
+
+    }
+  },
+  methods: {
+
+  }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/unauditor.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/unauditor.vue
new file mode 100644
index 0000000..14f7c53
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/unauditor.vue
@@ -0,0 +1,123 @@
+<template>
+  <div>
+    <x-card v-if="hasPerm('myworkflow:page')">
+      <div slot="content" class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="娴佺▼鍚嶇О">
+                <a-input v-model="queryParam.description" allow-clear placeholder="璇疯緭鍏ユ祦绋嬪悕绉�" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </x-card>
+    <a-card :bordered="false">
+      <a-spin :spinning="loading">
+        <s-table
+          ref="table"
+          :columns="columns"
+          :data="loadData"
+          :alert="true"
+          :rowKey="(record) => record.id">
+          <span slot="status" slot-scope="text">
+            <a-tag v-if="text === 0" color="orange">
+              {{ '鏈畬鎴�' }}
+            </a-tag>
+            <a-tag v-if="text === 1" color="green">
+              {{ '宸插畬鎴�' }}
+            </a-tag>
+          </span>
+          <span slot="action" slot-scope="text, record">
+            <a v-if="hasPerm('auditorworkflow:view')" @click="viewworkflow(record.id,record.version)" >鏌ョ湅</a>
+            <a-divider type="vertical" v-if="hasPerm('auditorworkflow:auditor') & record.status == 0 & hasPerm('auditorworkflow:view')" />
+            <a v-if="hasPerm('auditorworkflow:auditor')" @click="auditorworkflow(record.workflowId,record.executionPointerId,record.formId)" >瀹℃牳</a>
+          </span>
+        </s-table>
+      </a-spin>
+    </a-card>
+    <auditor-opera ref="auditoropera"></auditor-opera>
+  </div>
+</template>
+
+<script>
+import { STable, XCard } from '@/components'
+import { getMyUnAuditorWorkflow } from '@/api/modular/system/auditorworkflowManage'
+import AuditorOpera from './components/auditoropera.vue'
+export default {
+  name: 'UnAuditorWorkflow',
+  components: {
+    STable,
+    XCard,
+    AuditorOpera
+  },
+  data() {
+    return {
+      queryParam: {},
+      loading: true,
+      columns: [
+        {
+          title: '鏍囬',
+          dataIndex: 'title'
+        },
+
+        {
+          title: '浠诲姟鍚嶇О',
+          dataIndex: 'stepName'
+        },
+        {
+          title: '鍙戣捣浜�',
+          dataIndex: 'createUserName'
+        },
+        {
+          title: '鍒涘缓鏃堕棿',
+          dataIndex: 'createTime'
+        },
+        {
+          title: '鐘舵��',
+          dataIndex: 'status',
+          scopedSlots: {
+            customRender: 'status'
+          }
+        },
+        {
+          title: '鎿嶄綔',
+          dataIndex: 'action',
+          scopedSlots: {
+            customRender: 'action'
+          }
+        }
+      ],
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: parameter => {
+        this.queryParam.status = 0
+        return getMyUnAuditorWorkflow(Object.assign(parameter, this.queryParam)).then((res) => {
+          this.loading = false
+          return res.data
+        })
+      }
+    }
+  },
+  methods: {
+    // 鏌ョ湅娴佺▼
+    viewworkflow(id, version) {
+
+    },
+    // 瀹℃牳娴佺▼
+    auditorworkflow(id, executionPointerId, formId) {
+      this.$refs.auditoropera.init(id, executionPointerId, formId)
+    }
+  }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/notice/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/addForm.vue
new file mode 100644
index 0000000..7dd98c2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/addForm.vue
@@ -0,0 +1,228 @@
+<template>
+  <a-modal title="鏂板閫氱煡鍏憡" :width="1000" :footer="null" :visible="visible" @cancel="handleCancel">
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+        <a-form-item label="鏍囬" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-input placeholder="璇疯緭鍏ユ爣棰�" v-decorator="['title', {rules: [{required: true, message: '璇疯緭鍏ユ爣棰橈紒'}]}]" />
+        </a-form-item>
+        <a-form-item label="绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-radio-group v-decorator="['type',{rules: [{ required: true, message: '璇烽�夋嫨绫诲瀷锛�' }]}]">
+            <a-radio-button v-for="(item,index) in typeDictTypeDropDown" :key="index" :value="item.code">
+              {{ item.value }}</a-radio-button>
+          </a-radio-group>
+        </a-form-item>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍐呭">
+          <antd-editor
+            :uploadConfig="editorUploadConfig"
+            v-model="editorContent"
+            @onchange="changeEditor"
+            @oninit="getEditor" />
+        </a-form-item>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="閫氱煡鍒扮殑浜�">
+          <a-transfer
+            :data-source="mockData"
+            show-search
+            :list-style="{
+              width: '40%',
+              height: '300px',
+            }"
+            :filter-option="filterOption"
+            :target-keys="targetKeys"
+            :render="item => item.title"
+            @change="handleChange" />
+        </a-form-item>
+        <a-divider />
+        <a-form-item class="subForm-item">
+          <a-button type="primary" class="subButton" @click="handleSubmit(1)">鍙戝竷</a-button>
+          <a-button type="danger" class="subButton" @click="handleSubmit(0)">瀛樹负鑽夌</a-button>
+          <a-button class="subButton" @click="handleCancel">鍙栨秷</a-button>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+<script>
+  import {
+    sysNoticeAdd
+  } from '@/api/modular/system/noticeManage'
+  import {
+    sysDictTypeDropDown
+  } from '@/api/modular/system/dictManage'
+  import {
+    sysFileInfoUpload,
+    sysFileInfoPreview
+  } from '@/api/modular/system/fileManage'
+  import {
+    AntdEditor
+  } from '@/components'
+  import {
+    sysUserSelector
+  } from '@/api/modular/system/userManage'
+  export default {
+    name: 'AddForm',
+    components: {
+      AntdEditor
+    },
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 3
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 18
+          }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        editorContent: '',
+        editorContentText: '',
+        editorUploadConfig: {
+          method: 'http',
+          uploadImgServer: '/sysFileInfo/upload',
+          callback: this.editorUploadImage
+        },
+        mockData: [],
+        targetKeys: [],
+        typeDictTypeDropDown: [], // 0閫氱煡 1鍏憡
+        formLoading: true
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add() {
+        this.visible = true
+        this.sysDictTypeDropDown() // 鍏堟敞閲�
+        this.getMock()
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown() {
+        sysDictTypeDropDown({
+          code: 'notice_type'
+        }).then((res) => {
+          this.typeDictTypeDropDown = res.data
+        })
+      },
+      /**
+       * 缂栬緫鍣ㄥ洖璋冧笂浼犲強鍥炰紶鍥剧墖url
+       */
+      editorUploadImage(files, insert) {
+        const formData = new FormData()
+        files.forEach(file => {
+          formData.append('file', file)
+        })
+        sysFileInfoUpload(formData).then((res) => {
+          if (res.success) {
+            sysFileInfoPreview({
+              id: res.data
+            }).then((ress) => {
+              insert(window.URL.createObjectURL(new Blob([ress])))
+            }).catch((ress) => {
+              this.$message.error('涓婁紶棰勮閿欒锛�' + ress.message)
+            })
+          } else {
+            this.$message.error('缂栬緫鍣ㄤ笂浼犲浘鐗囧け璐ワ細' + res.message)
+          }
+        }).catch((err) => {
+          this.$message.error('棰勮閿欒锛�' + err.message)
+        })
+      },
+      getEditor(editor) {
+        this.editor = editor
+      },
+      changeEditor(html, ele) {
+        this.editorContent = html
+        this.editorContentText = ele.text()
+      },
+      /**
+       * 绌挎妗�
+       */
+      getMock() {
+        const targetKeys = []
+        const mockData = []
+        sysUserSelector().then((res) => {
+          this.formLoading = false
+          for (let i = 0; i < res.data.length; i++) {
+            const data = {
+              key: res.data[i].id.toString(),
+              title: res.data[i].name,
+              description: `description of ${res.data[i].name}`
+            }
+            mockData.push(data)
+          }
+        })
+        this.mockData = mockData
+        this.targetKeys = targetKeys
+      },
+      filterOption(inputValue, option) {
+        return option.description.indexOf(inputValue) > -1
+      },
+      handleChange(targetKeys, direction, moveKeys) {
+        this.targetKeys = targetKeys
+      },
+      handleSubmit(types) {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        // eslint-disable-next-line eqeqeq
+        if (this.editorContent == '') {
+          this.$message.error('璇峰~鍐欏唴瀹�')
+          return
+        }
+        if (this.targetKeys.length < 1) {
+          this.$message.error('璇烽�夋嫨閫氱煡鍒扮殑浜�')
+          return
+        }
+        validateFields((errors, values) => {
+          if (!errors) {
+            this.formLoading = true
+            values.content = this.editorContent
+            values.status = types
+            values.noticeUserIdList = this.targetKeys
+            sysNoticeAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.formLoading = false
+            })
+          }
+        })
+      },
+      handleCancel() {
+        this.editor.txt.clear()
+        this.targetKeys = []
+        this.editorContent = ''
+        this.form.resetFields()
+        this.visible = false
+        this.formLoading = true
+      }
+    }
+  }
+</script>
+<style>
+  .subButton {
+    float: right;
+  }
+
+  .subForm-item {
+    margin-bottom: 0px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/notice/detailForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/detailForm.vue
new file mode 100644
index 0000000..a5c54ab
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/detailForm.vue
@@ -0,0 +1,62 @@
+<template>
+  <a-modal
+    title="閫氱煡鍏憡璇︽儏"
+    :width="1000"
+    :confirmLoading="confirmLoading"
+    :visible="visible"
+    :footer="null"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <div style="text-align: center;font-size: 30px">{{ this.contentRecord.title }}</div>
+      <br>
+      <div style="text-align: right;font-size: 10px">
+        <span>锛堝彂甯冧汉锛歿{ this.contentRecord.publicUserName }}锛�</span>
+        <span>鍙戝竷鏃堕棿锛歿{ this.contentRecord.publicTime }} </span>
+      </div>
+      <a-divider style="margin-top: 5px" />
+      <div>
+        <label v-html="this.contentRecord.content"></label>
+      </div>
+    </a-spin>
+  </a-modal>
+</template>
+<script>
+  import {
+    sysNoticeDetail
+  } from '@/api/modular/system/noticeManage'
+
+  export default {
+    name: 'DetailForm',
+    components: {},
+    data() {
+      return {
+        visible: false,
+        confirmLoading: false,
+        contentRecord: {}
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      detail(record) {
+        this.confirmLoading = true
+        this.visible = true
+        this.sysNoticeDetail(record.id)
+      },
+      /**
+       * 鏌ョ湅璇︽儏
+       */
+      sysNoticeDetail(id) {
+        sysNoticeDetail({
+          id: id
+        }).then((res) => {
+          this.confirmLoading = false
+          this.contentRecord = res.data
+        })
+      },
+      handleCancel() {
+        this.visible = false
+        this.contentRecord = {}
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/notice/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/editForm.vue
new file mode 100644
index 0000000..f808a0b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/editForm.vue
@@ -0,0 +1,256 @@
+<template>
+  <a-modal title="缂栬緫閫氱煡鍏憡" :width="1000" :footer="null" :visible="visible" @cancel="handleCancel">
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+        <a-form-item v-show="false">
+          <a-input v-decorator="['id']" />
+        </a-form-item>
+        <a-form-item label="鏍囬" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-input placeholder="璇疯緭鍏ユ爣棰�" v-decorator="['title', {rules: [{required: true, message: '璇疯緭鍏ユ爣棰橈紒'}]}]" />
+        </a-form-item>
+        <a-form-item label="绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-radio-group v-decorator="['type',{rules: [{ required: true, message: '璇烽�夋嫨绫诲瀷锛�' }]}]">
+            <a-radio-button v-for="(item,index) in typeDictTypeDropDown" :key="index" :value="item.code">
+              {{ item.value }}</a-radio-button>
+          </a-radio-group>
+        </a-form-item>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍐呭">
+          <antd-editor
+            :uploadConfig="editorUploadConfig"
+            v-model="editorContent"
+            @onchange="changeEditor"
+            @oninit="getEditor" />
+        </a-form-item>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="閫氱煡鍒扮殑浜�">
+          <a-transfer
+            :data-source="mockData"
+            show-search
+            :list-style="{
+              width: '40%',
+              height: '300px',
+            }"
+            :filter-option="filterOption"
+            :target-keys="targetKeys"
+            :render="item => item.title"
+            @change="handleChange" />
+        </a-form-item>
+        <a-divider />
+        <a-form-item class="subForm-item">
+          <a-button type="primary" class="subButton" @click="handleSubmit(1)">鍙戝竷</a-button>
+          <a-button type="danger" class="subButton" @click="handleSubmit(0)">瀛樹负鑽夌</a-button>
+          <a-button class="subButton" @click="handleCancel">鍙栨秷</a-button>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+<script>
+  import {
+    sysNoticeEdit,
+    sysNoticeDetail
+  } from '@/api/modular/system/noticeManage'
+  import {
+    sysDictTypeDropDown
+  } from '@/api/modular/system/dictManage'
+  import {
+    sysFileInfoUpload,
+    sysFileInfoPreview
+  } from '@/api/modular/system/fileManage'
+  import {
+    AntdEditor
+  } from '@/components'
+  import {
+    sysUserSelector
+  } from '@/api/modular/system/userManage'
+  export default {
+    name: 'AddForm',
+    components: {
+      AntdEditor
+    },
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 3
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 18
+          }
+        },
+        visible: false,
+        form: this.$form.createForm(this),
+        typeDictTypeDropDown: [], // 0閫氱煡 1鍏憡
+        editorContent: '',
+        editorContentText: '',
+        editorUploadConfig: {
+          method: 'http',
+          uploadImgServer: '/sysFileInfo/upload',
+          callback: this.editorUploadImage
+        },
+        mockData: [],
+        targetKeys: [],
+        noticeDetail: [],
+        formLoading: true
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit(record) {
+        this.visible = true
+        this.sysNoticeDetail(record.id)
+        this.sysDictTypeDropDown()
+        setTimeout(() => {
+          this.form.setFieldsValue({
+            id: record.id,
+            title: record.title,
+            type: record.type.toString()
+          })
+          this.editor.txt.html(record.content)
+          this.editorContent = record.content
+        }, 100)
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown() {
+        sysDictTypeDropDown({
+          code: 'notice_type'
+        }).then((res) => {
+          this.typeDictTypeDropDown = res.data
+        })
+      },
+      /**
+       * 缂栬緫鍣ㄥ洖璋冧笂浼犲強鍥炰紶鍥剧墖url
+       */
+      editorUploadImage(files, insert) {
+        const formData = new FormData()
+        files.forEach(file => {
+          formData.append('file', file)
+        })
+        sysFileInfoUpload(formData).then((res) => {
+          if (res.success) {
+            sysFileInfoPreview({
+              id: res.data
+            }).then((ress) => {
+              insert(window.URL.createObjectURL(new Blob([ress])))
+            }).catch((ress) => {
+              this.$message.error('涓婁紶棰勮閿欒锛�' + ress.message)
+            })
+          } else {
+            this.$message.error('缂栬緫鍣ㄤ笂浼犲浘鐗囧け璐ワ細' + res.message)
+          }
+        })
+      },
+      getEditor(editor) {
+        this.editor = editor
+      },
+      changeEditor(html, ele) {
+        this.editorContent = html
+        this.editorContentText = ele.text()
+      },
+      /**
+       * 缂栬緫鏃惰幏鍙栧叏閮ㄤ俊鎭�
+       */
+      sysNoticeDetail(id) {
+        sysNoticeDetail({
+          id: id
+        }).then((res) => {
+          this.noticeDetail = res.data
+          this.getMock(this.noticeDetail)
+        })
+      },
+      /**
+       * 绌挎妗�
+       */
+      getMock(noticeDetail) {
+        const targetKeys = []
+        const mockData = []
+        sysUserSelector().then((res) => {
+          this.formLoading = false
+          for (let i = 0; i < res.data.length; i++) {
+            const data = {
+              key: res.data[i].id.toString(),
+              title: res.data[i].name,
+              description: `description of ${res.data[i].name}`
+            }
+            for (let j = 0; j < noticeDetail.noticeUserIdList.length; j++) {
+              if (data.key === noticeDetail.noticeUserIdList[j]) {
+                targetKeys.push(noticeDetail.noticeUserIdList[j])
+              }
+            }
+            mockData.push(data)
+          }
+        })
+        this.mockData = mockData
+        this.targetKeys = targetKeys
+      },
+      filterOption(inputValue, option) {
+        return option.description.indexOf(inputValue) > -1
+      },
+      handleChange(targetKeys, direction, moveKeys) {
+        this.targetKeys = targetKeys
+      },
+      handleSubmit(types) {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        // eslint-disable-next-line eqeqeq
+        if (this.editorContent == '') {
+          this.$message.error('璇峰~鍐欏唴瀹�')
+          return
+        }
+        if (this.targetKeys.length < 1) {
+          this.$message.error('璇烽�夋嫨閫氱煡鍒扮殑浜�')
+          return
+        }
+        validateFields((errors, values) => {
+          if (!errors) {
+            this.formLoading = true
+            values.content = this.editorContent
+            values.status = types
+            values.noticeUserIdList = this.targetKeys
+            sysNoticeEdit(values).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.visible = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.formLoading = false
+            })
+          }
+        })
+      },
+      handleCancel() {
+        this.editor.txt.clear()
+        this.targetKeys = []
+        this.editorContent = ''
+        this.form.resetFields()
+        this.visible = false
+        this.formLoading = true
+      }
+    }
+  }
+</script>
+<style>
+  .subButton {
+    float: right;
+  }
+
+  .subForm-item {
+    margin-bottom: 0px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/notice/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/index.vue
new file mode 100644
index 0000000..f34dfd9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/index.vue
@@ -0,0 +1,278 @@
+<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+    <div ref="boxForm" class="boxForm">
+      <x-card v-if="hasPerm('sysNotice:page')">
+        <div slot="content" class="table-page-search-wrapper">
+          <a-form layout="inline">
+            <a-row :gutter="48">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍏抽敭璇�">
+                  <a-input v-model="queryParam.searchValue" allow-clear placeholder="璇疯緭鍏ユ爣棰樸�佸唴瀹�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="绫诲瀷">
+                  <a-select v-model="queryParam.type" placeholder="璇烽�夋嫨绫诲瀷" allow-clear>
+                    <a-select-option v-for="(item, index) in typeDictTypeDropDown" :key="index" :value="item.code">
+                      {{ item.value }}</a-select-option
+                    >
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => (queryParam = {})">閲嶇疆</a-button>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
+      </x-card>
+    </div>
+
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :scroll="{ x: true, y: tableHeight }"
+        :rowKey="record => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+      >
+        <template slot="operator" v-if="hasPerm('sysNotice:add')">
+          <div ref="actionBar" class="actionBar">
+            <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysNotice:add')"
+              >鏂板鍏憡
+            </a-button>
+          </div>
+        </template>
+        <span slot="status" slot-scope="text">
+          {{ statusFilter(text) }}
+        </span>
+        <span slot="type" slot-scope="text">
+          {{ typeFilter(text) }}
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <div v-if="record.status == 0">
+            <a v-if="hasPerm('sysNotice:detail')" @click="$refs.detailForm.detail(record)">鏌ョ湅</a>
+            <a-divider type="vertical" v-if="hasPerm('sysNotice:detail') & hasPerm('sysNotice:edit')" />
+            <a v-if="hasPerm('sysNotice:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+            <a-divider type="vertical" v-if="hasPerm('sysNotice:edit') & hasPerm('sysNotice:changeStatus')" />
+            <a-popconfirm
+              v-if="hasPerm('sysNotice:changeStatus')"
+              placement="topRight"
+              title="纭鍙戝竷璇ヤ俊鎭紵"
+              @confirm="() => editNoticeStatus(1, record)"
+            >
+              <a>鍙戝竷</a>
+            </a-popconfirm>
+            <a-divider type="vertical" v-if="hasPerm('sysNotice:changeStatus') & hasPerm('sysNotice:delete')" />
+            <a-popconfirm
+              v-if="hasPerm('sysNotice:delete')"
+              placement="topRight"
+              title="纭鍒犻櫎锛�"
+              @confirm="() => sysNoticeDelete(record)"
+            >
+              <a>鍒犻櫎</a>
+            </a-popconfirm>
+          </div>
+          <div v-if="record.status == 1">
+            <a v-if="hasPerm('sysNotice:detail')" @click="$refs.detailForm.detail(record)">鏌ョ湅</a>
+            <a-divider type="vertical" v-if="hasPerm('sysNotice:detail') & hasPerm('sysNotice:changeStatus')" />
+            <a-popconfirm
+              v-if="hasPerm('sysNotice:changeStatus')"
+              placement="topRight"
+              title="纭鎾ゅ洖璇ヤ俊鎭紵"
+              @confirm="() => editNoticeStatus(2, record)"
+            >
+              <a>鎾ゅ洖</a>
+            </a-popconfirm>
+          </div>
+          <div v-if="record.status == 2">
+            <a v-if="hasPerm('sysNotice:detail')" @click="$refs.detailForm.detail(record)">鏌ョ湅</a>
+            <a-divider type="vertical" v-if="hasPerm('sysNotice:detail') & hasPerm('sysNotice:delete')" />
+            <a-popconfirm
+              v-if="hasPerm('sysNotice:delete')"
+              placement="topRight"
+              title="纭鍒犻櫎锛�"
+              @confirm="() => sysNoticeDelete(record)"
+            >
+              <a>鍒犻櫎</a>
+            </a-popconfirm>
+          </div>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" v-if="hasPerm('sysNotice:add')" />
+      <edit-form ref="editForm" @ok="handleOk" v-if="hasPerm('sysNotice:edit')" />
+      <detail-form ref="detailForm" @ok="handleOk" v-if="hasPerm('sysNotice:detail')" />
+      <div ref="editor"></div>
+    </a-card>
+  </div>
+</template>
+<script>
+import { STable, XCard } from '@/components'
+import { sysNoticePage, sysNoticeDelete, sysNoticeChangeStatus } from '@/api/modular/system/noticeManage'
+import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+//鑷畾涔塼able楂樺害
+import setTableHtMixin from '@/mixins/handleTableHt.js'
+import addForm from './addForm'
+import editForm from './editForm'
+import detailForm from './detailForm'
+export default {
+  mixins: [setTableHtMixin],
+  components: {
+    XCard,
+    STable,
+    addForm,
+    editForm,
+    detailForm
+  },
+  data() {
+    return {
+      // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+      advanced: false,
+      // 鏌ヨ鍙傛暟
+      queryParam: {},
+      // 琛ㄥご
+      columns: [
+        {
+          title: '搴忓彿',
+          width: '60px',
+          align: 'center',
+          customRender: (text, record, index) => `${index + 1}`
+        },
+        {
+          title: '鏍囬',
+          dataIndex: 'title'
+        },
+        {
+          title: '绫诲瀷',
+          dataIndex: 'type',
+          scopedSlots: {
+            customRender: 'type'
+          }
+        },
+        {
+          title: '鐘舵��',
+          dataIndex: 'status',
+          scopedSlots: {
+            customRender: 'status'
+          }
+        }
+      ],
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: parameter => {
+        return sysNoticePage(Object.assign(parameter, this.queryParam)).then(res => {
+          return res.data
+        })
+      },
+      selectedRowKeys: [],
+      selectedRows: [],
+      statusDictTypeDropDown: [], // 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎
+      typeDictTypeDropDown: [] // 0閫氱煡 1鍏憡
+    }
+  },
+  created() {
+    this.sysDictTypeDropDown() // 鍏堟敞閲�
+    if (this.hasPerm('sysNotice:changeStatus') || this.hasPerm('sysNotice:edit') || this.hasPerm('sysNotice:delete')) {
+      this.columns.push({
+        title: '鎿嶄綔',
+        width: '300px',
+        dataIndex: 'action',
+        scopedSlots: {
+          customRender: 'action'
+        }
+      })
+    }
+
+    this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+    window.addEventListener(
+      'resize',
+      () => {
+        this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+      },
+      false
+    )
+  },
+  methods: {
+    /**
+     * 鑾峰彇瀛楀吀鏁版嵁
+     */
+    sysDictTypeDropDown() {
+      sysDictTypeDropDown({
+        code: 'notice_status'
+      }).then(res => {
+        this.statusDictTypeDropDown = res.data
+      })
+      sysDictTypeDropDown({
+        code: 'notice_type'
+      }).then(res => {
+        this.typeDictTypeDropDown = res.data
+      })
+    },
+    statusFilter(status) {
+      // eslint-disable-next-line eqeqeq
+      const values = this.statusDictTypeDropDown.filter(item => item.code == status)
+      if (values.length > 0) {
+        return values[0].value
+      }
+    },
+    typeFilter(type) {
+      // eslint-disable-next-line eqeqeq
+      const values = this.typeDictTypeDropDown.filter(item => item.code == type)
+      if (values.length > 0) {
+        return values[0].value
+      }
+    },
+    /**
+     * 淇敼鐘舵��
+     */
+    editNoticeStatus(code, record) {
+      sysNoticeChangeStatus({
+        id: record.id,
+        status: code
+      }).then(res => {
+        if (res.success) {
+          this.$message.success('鎿嶄綔鎴愬姛')
+          this.$refs.table.refresh()
+        } else {
+          this.$message.error('鎿嶄綔澶辫触锛�' + res.message)
+        }
+      })
+    },
+    /**
+     * 鎻愪氦
+     */
+    sysNoticeDelete(record) {
+      sysNoticeDelete(record)
+        .then(res => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+          }
+        })
+        .catch(err => {
+          this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+        })
+    },
+    handleOk() {
+      this.$refs.table.refresh()
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    }
+  }
+}
+</script>
+<style lang="less">
+.table-operator {
+  margin-bottom: 18px;
+}
+
+button {
+  margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/detailForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/detailForm.vue
new file mode 100644
index 0000000..a4b43ed
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/detailForm.vue
@@ -0,0 +1,75 @@
+<template>
+  <a-modal
+    title="閫氱煡鍏憡璇︽儏"
+    :width="1000"
+    :confirmLoading="confirmLoading"
+    :visible="visible"
+    :footer="null"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="confirmLoading">
+
+      <div style="text-align: center;font-size: 30px">{{ this.contentRecord.title }}</div>
+      <br>
+      <div style="text-align: right;font-size: 10px">
+        <span>锛堝彂甯冧汉锛歿{ this.contentRecord.publicUserName }}锛�</span>
+        <span>鍙戝竷鏃堕棿锛歿{ this.contentRecord.publicTime }} </span>
+      </div>
+      <a-divider style="margin-top: 5px"/>
+      <div >
+        <label v-html="this.contentRecord.content"></label>
+      </div>
+
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { sysNoticeDetail } from '@/api/modular/system/noticeManage'
+
+  export default {
+    name: 'DetailForm',
+    components: {
+    },
+
+    data () {
+      return {
+        visible: false,
+        confirmLoading: false,
+        contentRecord: ''
+      }
+    },
+
+    methods: {
+
+      // 鍒濆鍖栨柟娉�
+      detail (record) {
+        this.confirmLoading = false
+        this.visible = true
+        this.sysNoticeDetail(record.id)
+      },
+
+      /**
+       * 鏌ョ湅璇︽儏
+       */
+      sysNoticeDetail (id) {
+        sysNoticeDetail({ id: id }).then((res) => {
+          this.confirmLoading = false
+          this.contentRecord = res.data
+        })
+      },
+
+      handleCancel () {
+        this.visible = false
+      }
+    }
+  }
+</script>
+<style>
+  .subButton{
+    float: right;
+  }
+  .subForm-item{
+    margin-bottom: 0px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/index.vue
new file mode 100644
index 0000000..2baf149
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/index.vue
@@ -0,0 +1,181 @@
+<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+    <div ref="boxForm" class="boxForm">
+       <x-card v-if="hasPerm('sysNotice:received')">
+          <div slot="content" class="table-page-search-wrapper">
+            <a-form layout="inline">
+              <a-row :gutter="48">
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="鍏抽敭璇�" v-if="hasPerm('sysNotice:received')">
+                    <a-input v-model="queryParam.searchValue" allow-clear placeholder="璇疯緭鍏ユ爣棰樸�佸唴瀹�"/>
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="绫诲瀷" v-if="hasPerm('sysNotice:received')">
+                    <a-select v-model="queryParam.type" placeholder="璇烽�夋嫨绫诲瀷" allow-clear >
+                      <a-select-option v-for="(item,index) in typeDictTypeDropDown" :key="index" :value="item.code" >{{ item.value }}</a-select-option>
+                    </a-select>
+                  </a-form-item>
+                </a-col>
+                <a-col :md="!advanced && 8 || 24" :sm="24">
+                  <span class="table-page-search-submitButtons" >
+                    <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                    <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆{{ tableHeight }}}</a-button>
+                  </span>
+                </a-col>
+              </a-row>
+            </a-form>
+          </div>
+        </x-card>
+    </div>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :scroll="{x: true,y:tableHeight}"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+      >
+      <template class="table-operator" slot="operator" v-if="hasPerm('sysNotice:add')" >
+      <div ref="actionBar" class="actionBar">	
+        <a-button type="info" style="visibility: hidden"> </a-button>
+      </div>
+      </template>
+        <span slot="status" slot-scope="text">
+          {{ statusFilter(text) }}
+        </span>
+        <span slot="type" slot-scope="text">
+          {{ typeFilter(text) }}
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('sysNotice:received')" @click="$refs.detailForm.detail(record)">鏌ョ湅</a>
+        </span>
+      </s-table>
+      <detail-form ref="detailForm" @ok="handleOk" />
+      <div ref="editor"></div>
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable, XCard } from '@/components'
+  // eslint-disable-next-line no-unused-vars
+  import { sysNoticeReceived } from '@/api/modular/system/noticeReceivedManage'
+  import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+  //鑷畾涔塼able楂樺害
+  import setTableHtMixin from '@/mixins/handleTableHt.js'
+  import detailForm from './detailForm'
+  export default {
+    mixins: [setTableHtMixin],
+    components: {
+      XCard,
+      STable,
+      detailForm
+    },
+    data () {
+      return {
+        // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        advanced: false,
+        // 鏌ヨ鍙傛暟
+        queryParam: {},
+        // 琛ㄥご
+        columns: [
+        {
+          title: '搴忓彿',
+          width: '60px',
+          align: 'center',
+          customRender: (text, record, index) => `${index + 1}`
+        },
+          {
+            title: '鏍囬',
+            dataIndex: 'title'
+          },
+          {
+            title: '绫诲瀷',
+            dataIndex: 'type',
+            scopedSlots: { customRender: 'type' }
+          },
+          {
+            title: '鐘舵��',
+            dataIndex: 'status',
+            scopedSlots: { customRender: 'status' }
+          }
+        ],
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return sysNoticeReceived(Object.assign(parameter, this.queryParam)).then((res) => {
+            // this.$store.commit('SET_NOTICES', res.data)
+            return res.data
+          })
+        },
+        selectedRowKeys: [],
+        selectedRows: [],
+        statusDictTypeDropDown: [], // 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎
+        typeDictTypeDropDown: []// 0閫氱煡 1鍏憡
+      }
+    },
+    created () {
+      this.sysDictTypeDropDown()// 鍏堟敞閲�
+      if (this.hasPerm('sysNotice:received')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '200px',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+      this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+      window.addEventListener(
+      'resize',
+      () => {
+      this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+      },
+      false
+      )
+    },
+    methods: {
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown () {
+        sysDictTypeDropDown({ code: 'notice_status' }).then((res) => {
+          this.statusDictTypeDropDown = res.data
+        })
+        sysDictTypeDropDown({ code: 'notice_type' }).then((res) => {
+          this.typeDictTypeDropDown = res.data
+        })
+      },
+      statusFilter (status) {
+        // eslint-disable-next-line eqeqeq
+        const values = this.statusDictTypeDropDown.filter(item => item.code == status)
+        if (values.length > 0) {
+          return values[0].value
+        }
+      },
+      typeFilter (type) {
+        // eslint-disable-next-line eqeqeq
+        const values = this.typeDictTypeDropDown.filter(item => item.code == type)
+        if (values.length > 0) {
+          return values[0].value
+        }
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/onlineUser/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/onlineUser/index.vue
new file mode 100644
index 0000000..64c498d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/onlineUser/index.vue
@@ -0,0 +1,205 @@
+<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+    <div ref="boxForm" class="boxForm">
+      <x-card v-if="hasPerm('sysOnlineUser:page')">
+        <div slot="content" class="table-page-search-wrapper">
+          <a-form layout="inline">
+            <a-row :gutter="48">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鎼滅储">
+                  <a-input v-model="queryParam.searchValue" allow-clear placeholder="璇疯緭鍏ヨ处鍙锋垨濮撳悕" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => (queryParam = {})">閲嶇疆</a-button>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
+      </x-card>
+    </div>
+
+    <a-card :bordered="false">
+      <!-- <a-table size="middle" :columns="columns" :dataSource="loadData" :pagination="false" :loading="loading">
+           <span slot="lastLoginAddress" slot-scope="text">
+             <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+           </span>
+           <span slot="lastLoginBrowser" slot-scope="text">
+             <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+           </span>
+           <span slot="action" slot-scope="text, record">
+             <a-popconfirm
+               v-if="hasPerm('sysOnlineUser:forceExist')"
+               placement="topRight"
+               title="鏄惁寮哄埗涓嬬嚎璇ョ敤鎴凤紵"
+               @confirm="() => forceExist(record)">
+               <a>寮哄埗涓嬬嚎</a>
+             </a-popconfirm>
+           </span>
+         </a-table> -->
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="record => record.id"
+        :scroll="{x: true,y:tableHeight}"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+      >
+        <span slot="lastLoginAddress" slot-scope="text">
+          <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+        </span>
+        <span slot="lastLoginBrowser" slot-scope="text">
+          <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a-popconfirm
+            v-if="hasPerm('sysOnlineUser:forceExist')"
+            placement="topRight"
+            title="鏄惁寮哄埗涓嬬嚎璇ョ敤鎴凤紵"
+            @confirm="() => forceExist(record)"
+          >
+            <a>寮哄埗涓嬬嚎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+    </a-card>
+  </div>
+</template>
+<script>
+import store from '@/store'
+import { STable, Ellipsis, XCard } from '@/components'
+import { sysOnlineUserForceExist, sysOnlineUserPage } from '@/api/modular/system/onlineUserManage'
+//鑷畾涔塼able楂樺害
+import setTableHtMixin from '@/mixins/handleTableHt.js'
+export default {
+  mixins: [setTableHtMixin],
+  components: {
+    XCard,
+    STable,
+    Ellipsis
+  },
+  data() {
+    return {
+      // 鏌ヨ鍙傛暟
+      queryParam: {},
+      // 琛ㄥご
+      columns: [
+        // {
+        //   title: '鐢ㄦ埛Id',
+        //   dataIndex: 'userId'
+        // },
+        {
+          title: '璐﹀彿',
+          dataIndex: 'account'
+        },
+        {
+          title: '濮撳悕',
+          dataIndex: 'name'
+        },
+        {
+          title: '鐧诲綍IP',
+          dataIndex: 'lastLoginIp'
+        },
+        {
+          title: '鐧诲綍鏃堕棿',
+          dataIndex: 'lastTime'
+        },
+        {
+          title: '娴忚鍣�',
+          dataIndex: 'lastLoginBrowser',
+          scopedSlots: {
+            customRender: 'lastLoginBrowser'
+          }
+        },
+        {
+          title: '鎿嶄綔绯荤粺',
+          dataIndex: 'lastLoginOs'
+        }
+      ],
+      // loading: true,
+      loadData: parameter => {
+        return sysOnlineUserPage(Object.assign(parameter, this.queryParam)).then(res => {
+          return res.data
+        })
+      },
+      selectedRowKeys: [],
+      selectedRows: []
+    }
+  },
+  // 杩涢〉闈㈠姞杞�
+  created() {
+    // 濡傛灉鏄秴绾х鐞嗗憳
+    // eslint-disable-next-line eqeqeq
+    if (store.getters.admintype == '1') {
+      this.columns.push({
+        title: '绉熸埛',
+        dataIndex: 'tenantName'
+      })
+    }
+
+    if (this.hasPerm('sysOnlineUser:forceExist')) {
+      this.columns.push({
+        title: '鎿嶄綔',
+        width: '150px',
+        dataIndex: 'action',
+        scopedSlots: {
+          customRender: 'action'
+        }
+      })
+    }
+    
+    this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+  window.addEventListener(
+  'resize',
+  () => {
+  this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+  },
+  false
+  )
+
+  },
+  mounted() {
+    const that = this
+    setTimeout(() => {
+      that.$refs.table.refresh(true)
+    }, 1000)
+  },
+  methods: {
+    forceExist(record) {
+      const that = this
+      sysOnlineUserForceExist(record)
+        .then(res => {
+          if (res.success) {
+            this.$message.success('寮哄埗涓嬬嚎鎴愬姛')
+            if (this.$store.getters.userInfo.id !== record.userId) {
+              // 閲嶆柊鍔犺浇琛ㄦ牸
+              setTimeout(() => {
+                that.$refs.table.refresh(false)
+              }, 1000)
+            }
+          } else {
+            this.$message.error('寮哄埗涓嬬嚎澶辫触锛�' + res.message)
+          }
+        })
+        .catch(err => {
+          this.$message.error('寮哄埗涓嬬嚎閿欒锛�' + err.message)
+        })
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    }
+  }
+}
+</script>
+<style lang="less">
+.table-operator {
+  margin-bottom: 18px;
+}
+
+button {
+  margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/org/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/org/addForm.vue
new file mode 100644
index 0000000..19d23b7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/org/addForm.vue
@@ -0,0 +1,164 @@
+<template>
+  <a-modal
+    title="鏂板鏈烘瀯"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+        <a-form-item label="鏈烘瀯绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-radio-group v-decorator="['orgtype',{rules: [{ required: true, message: '璇烽�夋嫨鏈烘瀯绫诲瀷锛�' }]}]">
+            <a-radio v-for="(item, index) in typeEnumDataDropDown" :key="index" :value="parseInt(item.code)" style="width:80px">
+              {{ item.value }}</a-radio>
+          </a-radio-group>
+        </a-form-item>
+
+        <a-form-item label="鏈烘瀯鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ユ満鏋勫悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ユ満鏋勫悕绉帮紒'}]}]" />
+        </a-form-item>
+
+        <a-form-item label="鍞竴缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+        </a-form-item>
+
+        <a-form-item label="涓婄骇鏈烘瀯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-tree-select
+            v-decorator="['pid', {rules: [{ required: true, message: '璇烽�夋嫨涓婄骇鏈烘瀯锛�' }]}]"
+            style="width: 100%"
+            :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+            :treeData="orgTree"
+            placeholder="璇烽�夋嫨涓婄骇鏈烘瀯"
+            treeDefaultExpandAll>
+            <span slot="title" slot-scope="{ id }">{{ id }}
+            </span>
+          </a-tree-select>
+        </a-form-item>
+
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎺掑簭">
+          <a-input-number
+            placeholder="璇疯緭鍏ユ帓搴�"
+            style="width: 100%"
+            v-decorator="['sort', { initialValue: 100 }]"
+            :min="1"
+            :max="1000" />
+        </a-form-item>
+
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    sysOrgAdd,
+    getOrgTree
+  } from '@/api/modular/system/orgManage'
+  import {
+    sysDictTypeDropDown
+  } from '@/api/modular/system/dictManage'
+  export default {
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 15
+          }
+        },
+        typeEnumDataDropDown: [],
+        orgTree: [],
+        visible: false,
+        confirmLoading: false,
+        formLoading: true,
+        form: this.$form.createForm(this)
+      }
+    },
+    created() {
+      this.sysDictTypeDropDown()
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add() {
+        this.visible = true
+        this.getOrgTree()
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown(text) {
+        sysDictTypeDropDown({
+          code: 'org_type'
+        }).then((res) => {
+          this.typeEnumDataDropDown = res.data
+        })
+      },
+      /**
+       * 鑾峰彇鏈烘瀯鏍戯紝骞跺姞杞戒簬琛ㄥ崟涓�
+       */
+      getOrgTree() {
+        getOrgTree().then((res) => {
+          this.formLoading = false
+          if (!res.success) {
+            this.orgTree = []
+            return
+          }
+          this.orgTree = [{
+            'id': '-1',
+            'parentId': '0',
+            'title': '椤剁骇',
+            'value': '0',
+            'pid': '0',
+            'children': res.data
+          }]
+        })
+      },
+
+      handleSubmit() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysOrgAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.form.resetFields()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel() {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/org/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/org/editForm.vue
new file mode 100644
index 0000000..2cc592e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/org/editForm.vue
@@ -0,0 +1,192 @@
+<template>
+  <a-modal
+    title="缂栬緫鏈烘瀯"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+        <a-form-item style="display: none" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input v-decorator="['id']" />
+        </a-form-item>
+
+        <a-form-item label="鏈烘瀯绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-radio-group
+            placeholder="璇烽�夋嫨鏈烘瀯绫诲瀷锛�"
+            v-decorator="['orgtype', { rules: [{ required: true, message: '璇烽�夋嫨鏈烘瀯绫诲瀷锛�' }] }]"
+          >
+            <a-radio v-for="(item, index) in typeEnumDataDropDown" :key="index" :value="item.code" style="width:80px"
+              >{{ item.value }}
+            </a-radio>
+          </a-radio-group>
+        </a-form-item>
+
+        <a-form-item label="鏈烘瀯鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input
+            placeholder="璇疯緭鍏ユ満鏋勫悕绉�"
+            v-decorator="['name', { rules: [{ required: true, message: '璇疯緭鍏ユ満鏋勫悕绉帮紒' }] }]"
+          />
+        </a-form-item>
+
+        <a-form-item label="鍞竴缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input
+            placeholder="璇疯緭鍏ュ敮涓�缂栫爜"
+            v-decorator="['code', { rules: [{ required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�' }] }]"
+          />
+        </a-form-item>
+
+        <a-form-item label="涓婄骇鏈烘瀯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-tree-select
+            v-decorator="['pid', { rules: [{ required: true, message: '璇烽�夋嫨涓婄骇鏈烘瀯锛�' }] }]"
+            style="width: 100%"
+            :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+            :treeData="orgTree"
+            placeholder="璇烽�夋嫨涓婄骇鏈烘瀯"
+            treeDefaultExpandAll
+          >
+            <span slot="title" slot-scope="{ id }">{{ id }} </span>
+          </a-tree-select>
+        </a-form-item>
+
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎺掑簭">
+          <a-input-number
+            placeholder="璇疯緭鍏ユ帓搴�"
+            style="width: 100%"
+            v-decorator="['sort', { initialValue: 100 }]"
+            :min="1"
+            :max="1000"
+          />
+        </a-form-item>
+
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { sysOrgEdit, getOrgTree } from '@/api/modular/system/orgManage'
+import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+export default {
+  data() {
+    return {
+      labelCol: {
+        xs: {
+          span: 24,
+        },
+        sm: {
+          span: 5,
+        },
+      },
+      wrapperCol: {
+        xs: {
+          span: 24,
+        },
+        sm: {
+          span: 15,
+        },
+      },
+      typeEnumDataDropDown: [],
+      orgTree: [],
+      visible: false,
+      confirmLoading: false,
+      formLoading: true,
+      form: this.$form.createForm(this),
+    }
+  },
+  created() {
+    this.sysDictTypeDropDown()
+  },
+  methods: {
+    // 鍒濆鍖栨柟娉�
+    edit(record) {
+      this.visible = true
+      this.getOrgTree()
+      this.form.getFieldDecorator('orgtype', {
+        valuePropName: 'checked',
+        initialValue: record.orgType,
+      })
+      setTimeout(() => {
+        this.form.setFieldsValue({
+          id: record.id,
+          orgType: record.orgType,
+          name: record.name,
+          code: record.code,
+          sort: record.sort,
+          pid: record.pid,
+          remark: record.remark,
+        })
+      }, 100)
+    },
+    /**
+     * 鑾峰彇瀛楀吀鏁版嵁
+     */
+    sysDictTypeDropDown(text) {
+      sysDictTypeDropDown({
+        code: 'org_type',
+      }).then((res) => {
+        this.typeEnumDataDropDown = res.data
+      })
+    },
+    /**
+     * 鑾峰彇鏈烘瀯鏍戯紝骞跺姞杞戒簬琛ㄥ崟涓�
+     */
+    getOrgTree() {
+      getOrgTree().then((res) => {
+        this.formLoading = false
+        if (!res.success) {
+          this.orgTree = []
+          return
+        }
+        this.orgTree = [
+          {
+            id: '-1',
+            parentId: '0',
+            title: '椤剁骇',
+            value: '0',
+            pid: '0',
+            children: res.data,
+          },
+        ]
+      })
+    },
+
+    handleSubmit() {
+      const {
+        form: { validateFields },
+      } = this
+      this.confirmLoading = true
+      validateFields((errors, values) => {
+        if (!errors) {
+          sysOrgEdit(values)
+            .then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.form.resetFields()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + res.message)
+              }
+            })
+            .finally((res) => {
+              this.confirmLoading = false
+            })
+        } else {
+          this.confirmLoading = false
+        }
+      })
+    },
+    handleCancel() {
+      this.form.resetFields()
+      this.visible = false
+    },
+  },
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/org/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/org/index.vue
new file mode 100644
index 0000000..1fb9df0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/org/index.vue
@@ -0,0 +1,233 @@
+<template>
+  <a-row :gutter="24" >
+    <a-col :md="5" :sm="24" style="padding: 0 0 0 0;">
+      <a-card :bordered="false" :loading="treeLoading">
+        <div v-if="this.orgTree!='' ">
+          <a-tree
+            style="scroll:true"
+            :treeData="orgTree"
+            v-if="orgTree.length"
+            @select="handleClick"
+            :defaultExpandAll="true"
+            :defaultExpandedKeys="defaultExpandedKeys"
+            :replaceFields="replaceFields" />
+        </div>
+        <div v-else>
+          <a-empty :image="simpleImage" />
+        </div>
+      </a-card>
+    </a-col>
+    <a-col :md="19" :sm="24">
+      <x-card v-if="hasPerm('sysOrg:page')">
+        <div slot="content" class="table-page-search-wrapper">
+          <a-form layout="inline">
+            <a-row :gutter="48">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鏈烘瀯鍚嶇О" >
+                  <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ユ満鏋勫悕绉�"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+              </a-col>
+              <a-col :md="8" :sm="24">
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
+      </x-card>
+      <a-card :bordered="false">
+        <s-table
+          ref="table"
+          :columns="columns"
+          :data="loadData"
+          :alert="true"
+          :rowKey="(record) => record.id"
+          :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+        >
+          <template slot="operator" v-if="hasPerm('sysOrg:add')">
+            <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysOrg:add')">鏂板鏈烘瀯</a-button>
+          </template>
+          <span slot="orgType" slot-scope="text">
+            {{ typeFilter(text) }}
+          </span>
+          <span slot="action" slot-scope="text, record">
+            <a v-if="hasPerm('sysOrg:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+            <a-divider type="vertical" v-if="hasPerm('sysOrg:edit') & hasPerm('sysOrg:delete')"/>
+            <a-popconfirm v-if="hasPerm('sysOrg:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysOrgDelete(record)">
+              <a>鍒犻櫎</a>
+            </a-popconfirm>
+          </span>
+        </s-table>
+        <add-form ref="addForm" @ok="handleOk" />
+        <edit-form ref="editForm" @ok="handleOk" />
+      </a-card>
+    </a-col>
+  </a-row>
+</template>
+<script>
+  import { STable, XCard } from '@/components'
+  import { Empty } from 'ant-design-vue'
+  import { getOrgPage, sysOrgDelete, getOrgTree } from '@/api/modular/system/orgManage'
+  import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+  import addForm from './addForm'
+  import editForm from './editForm'
+  export default {
+    components: {
+      XCard,
+      STable,
+      addForm,
+      editForm
+    },
+    data () {
+      return {
+        // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        advanced: false,
+        // 鏌ヨ鍙傛暟
+        queryParam: {},
+        // 琛ㄥご
+        columns: [
+          {
+            title: '鏈烘瀯鍚嶇О',
+            dataIndex: 'name'
+          },
+          {
+            title: '鏈烘瀯绫诲瀷',
+            dataIndex: 'orgType',
+            scopedSlots: {
+              customRender: 'orgType'
+            }
+          },
+          {
+            title: '鍞竴缂栫爜',
+            dataIndex: 'code'
+          },
+          {
+            title: '鎺掑簭',
+            dataIndex: 'sort'
+          },
+          {
+            title: '澶囨敞',
+            dataIndex: 'remark'
+          }
+        ],
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return getOrgPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        orgTree: [],
+        selectedRowKeys: [],
+        selectedRows: [],
+        defaultExpandedKeys: [],
+        typeDictTypeDropDown: [],
+        // 鎼滅储鐨勪笁涓弬鏁�
+        expandedKeys: [],
+        searchValue: '',
+        autoExpandParent: true,
+        treeLoading: true,
+        simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
+        replaceFields: {
+          key: 'id'
+        }
+      }
+    },
+    created () {
+      this.sysDictTypeDropDown()
+      this.getOrgTree()
+      if (this.hasPerm('sysOrg:edit') || this.hasPerm('sysOrg:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+    },
+    methods: {
+      /**
+       * 鑾峰彇鍒版満鏋勬爲锛屽睍寮�椤剁骇涓嬫爲鑺傜偣锛岃�冭檻鍒板悗鏈熸暟鎹噺鍙樺ぇ锛屼笉寤鸿鍏ㄩ儴灞曞紑
+       */
+      getOrgTree () {
+        getOrgTree(Object.assign(this.queryParam)).then(res => {
+          this.treeLoading = false
+          if (!res.success) {
+            return
+          }
+          this.orgTree = res.data
+          this.queryParam.parentId = this.orgTree[0].id
+          // 鍏ㄩ儴灞曞紑锛屼笂闈pi鏂规硶鎻愪緵鐨勪笉鐢熸晥锛屽厛鐢ㄦ鏂规硶
+          for (var item of res.data) {
+            // eslint-disable-next-line eqeqeq
+            if (item.parentId == 0) {
+              this.defaultExpandedKeys.push(item.id)
+            }
+          }
+          this.$refs.table.refresh()
+        })
+      },
+
+      typeFilter(orgType) {
+        // eslint-disable-next-line eqeqeq
+        const values = this.typeDictTypeDropDown.filter(item => item.code == orgType)
+        if (values.length > 0) {
+          return values[0].value
+        }
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown(text) {
+        sysDictTypeDropDown({
+          code: 'org_type'
+        }).then((res) => {
+          this.typeDictTypeDropDown = res.data
+        })
+      },
+      /**
+       * 鍒犻櫎
+       * @param record
+       */
+      sysOrgDelete (record) {
+        sysOrgDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.getOrgTree()
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+          }
+        }).catch((err) => {
+          this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+        })
+      },
+      handleClick (e) {
+        this.queryParam = {
+          pid: e.toString()
+        }
+        this.$refs.table.refresh(true)
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      handleOk () {
+        this.getOrgTree()
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/pos/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/pos/addForm.vue
new file mode 100644
index 0000000..765eb75
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/pos/addForm.vue
@@ -0,0 +1,106 @@
+<template>
+  <a-modal
+    title="鏂板鑱屼綅"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item
+          label="鑱屼綅鍚嶇О"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ヨ亴浣嶅悕绉帮紒'}]}]" />
+        </a-form-item>
+
+        <a-form-item
+          label="鍞竴缂栫爜"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+        </a-form-item>
+
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="鎺掑簭"
+        >
+          <a-input-number placeholder="璇疯緭鍏ユ帓搴�" style="width: 100%" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+        </a-form-item>
+
+        <a-form-item
+          label="澶囨敞"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+        </a-form-item>
+
+      </a-form>
+
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { sysPosAdd } from '@/api/modular/system/posManage'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+      },
+
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysPosAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.form.resetFields()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/pos/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/pos/editForm.vue
new file mode 100644
index 0000000..2fe5671
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/pos/editForm.vue
@@ -0,0 +1,129 @@
+<template>
+  <a-modal
+    title="鑱屼綅缂栬緫"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+
+        <a-form-item
+          style="display: none;"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input v-decorator="['id']" />
+        </a-form-item>
+
+        <a-form-item
+          label="鑱屼綅鍚嶇О"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ヨ亴浣嶅悕绉帮紒'}]}]" />
+        </a-form-item>
+
+        <a-form-item
+          label="鍞竴缂栫爜"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+        </a-form-item>
+
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="鎺掑簭"
+          has-feedback
+        >
+          <a-input-number style="width: 100%" placeholder="璇疯緭鍏ユ帓搴�" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+        </a-form-item>
+
+        <a-form-item
+          label="澶囨敞"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+        </a-form-item>
+
+      </a-form>
+
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { sysPosEdit } from '@/api/modular/system/posManage'
+
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true
+        setTimeout(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              name: record.name,
+              code: record.code,
+              sort: record.sort,
+              remark: record.remark
+            }
+          )
+        }, 100)
+      },
+
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysPosEdit(values).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.form.resetFields()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/pos/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/pos/index.vue
new file mode 100644
index 0000000..cc04077
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/pos/index.vue
@@ -0,0 +1,178 @@
+<template>
+<div ref="boxOutWrap" class="boxOutWrap">
+  <div ref="boxForm" class="boxForm">
+    <x-card v-if="hasPerm('sysPos:page')">
+      <div slot="content" class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鑱屼綅鍚嶇О" >
+                <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍞竴缂栫爜" >
+                <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ュ敮涓�缂栫爜" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="!advanced && 8 || 24" :sm="24">
+              <span class="table-page-search-submitButtons" :style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </x-card>
+  </div>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.code"
+        :scroll="{ x: true, y: tableHeight }"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+      >
+        <template slot="operator" v-if="hasPerm('sysPos:add')">
+          <div ref="actionBar" class="actionBar">	
+            <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysPos:add')">鏂板鑱屼綅</a-button>
+          </div>
+        </template>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('sysPos:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('sysPos:edit') & hasPerm('sysPos:delete')"/>
+          <a-popconfirm v-if="hasPerm('sysPos:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysPosDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+
+      </s-table>
+
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+
+    </a-card>
+  </div>
+</template>
+
+<script>
+  import { STable, XCard } from '@/components'
+  import { sysPosPage, sysPosDelete } from '@/api/modular/system/posManage'
+  //鑷畾涔塼able楂樺害
+  import setTableHtMixin from '@/mixins/handleTableHt.js'
+  import addForm from './addForm'
+  import editForm from './editForm'
+
+  export default {
+    mixins: [setTableHtMixin],
+    components: {
+      XCard,
+      STable,
+      addForm,
+      editForm
+    },
+
+    data () {
+      return {
+
+        // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        advanced: false,
+        // 鏌ヨ鍙傛暟
+        queryParam: {},
+        // 琛ㄥご
+        columns: [
+        {
+          title: '搴忓彿',
+          width: '60px',
+          align: 'center',
+          customRender: (text, record, index) => `${index + 1}`
+        },
+          {
+            title: '鑱屼綅鍚嶇О',
+            dataIndex: 'name'
+          },
+          {
+            title: '鍞竴缂栫爜',
+            dataIndex: 'code'
+          },
+          {
+            title: '鎺掑簭',
+            dataIndex: 'sort'
+          },
+          {
+            title: '澶囨敞',
+            dataIndex: 'remark'
+          }
+        ],
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return sysPosPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        selectedRowKeys: [],
+        selectedRows: []
+    }
+    },
+
+    created () {
+      if (this.hasPerm('sysPos:edit') || this.hasPerm('sysPos:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+      this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+  window.addEventListener(
+  'resize',
+  () => {
+  this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+  },
+  false
+  )
+    },
+
+    methods: {
+      sysPosDelete (record) {
+        sysPosDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+          }
+        }).catch((err) => {
+          this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+        })
+      },
+
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+        this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+      },
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+
+  }
+</script>
+
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/role/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/role/addForm.vue
new file mode 100644
index 0000000..8f0593a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/role/addForm.vue
@@ -0,0 +1,125 @@
+<template>
+  <a-modal
+    title="鏂板瑙掕壊"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item label="瑙掕壊绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-radio-group v-decorator="['roleType',{rules: [{ required: true, message: '璇烽�夋嫨瑙掕壊绫诲瀷锛�' }]}]">
+            <a-radio v-for="(item, index) in typeEnumDataDropDown" :key="index" :value="parseInt(item.code)" style="width:110px">
+              {{ item.value }}</a-radio>
+          </a-radio-group>
+        </a-form-item>
+        <a-form-item label="瑙掕壊鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ鑹插悕" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ヨ鑹插悕锛�'}]}]" />
+        </a-form-item>
+
+        <a-form-item label="鍞竴缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+        </a-form-item>
+
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎺掑簭">
+          <a-input-number
+            placeholder="璇疯緭鍏ユ帓搴�"
+            style="width: 100%"
+            v-decorator="['sort', { initialValue: 100 }]"
+            :min="1"
+            :max="1000" />
+        </a-form-item>
+
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    sysRoleAdd
+  } from '@/api/modular/system/roleManage'
+  import {
+    sysDictTypeDropDown
+  } from '@/api/modular/system/dictManage'
+  export default {
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 15
+          }
+        },
+        visible: false,
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        typeEnumDataDropDown: []
+      }
+    },
+    created() {
+      this.sysDictTypeDropDown()
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add(record) {
+        this.visible = true
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown(text) {
+        sysDictTypeDropDown({
+          code: 'role_type'
+        }).then((res) => {
+          this.typeEnumDataDropDown = res.data
+        })
+      },
+      handleSubmit() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysRoleAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.form.resetFields()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel() {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/role/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/role/editForm.vue
new file mode 100644
index 0000000..a207d8f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/role/editForm.vue
@@ -0,0 +1,144 @@
+<template>
+  <a-modal
+    title="瑙掕壊缂栬緫"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-form-item style="display: none;" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input v-decorator="['id']" />
+        </a-form-item>
+
+        <a-form-item label="瑙掕壊绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-radio-group v-decorator="['roleType',{rules: [{ required: true, message: '璇烽�夋嫨瑙掕壊绫诲瀷锛�' }]}]">
+            <a-radio v-for="(item, index) in typeEnumDataDropDown" :key="index" :value="parseInt(item.code)" style="width:110px">
+              {{ item.value }}</a-radio>
+          </a-radio-group>
+        </a-form-item>
+
+        <a-form-item label="瑙掕壊鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ヨ鑹插悕" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ヨ鑹插悕锛�'}]}]" />
+        </a-form-item>
+
+        <a-form-item label="鍞竴缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+        </a-form-item>
+
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎺掑簭" has-feedback>
+          <a-input-number
+            style="width: 100%"
+            placeholder="璇疯緭鍏ユ帓搴�"
+            v-decorator="['sort', { initialValue: 100 }]"
+            :min="1"
+            :max="1000" />
+        </a-form-item>
+
+        <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    sysRoleEdit
+  } from '@/api/modular/system/roleManage'
+  import {
+    sysDictTypeDropDown
+  } from '@/api/modular/system/dictManage'
+  export default {
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 15
+          }
+        },
+        visible: false,
+        confirmLoading: false,
+        typeEnumDataDropDown: [],
+        form: this.$form.createForm(this)
+      }
+    },
+    created() {
+      this.sysDictTypeDropDown()
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit(record) {
+        this.visible = true
+        this.form.getFieldDecorator('roleType', {
+          valuePropName: 'checked',
+          initialValue: record.roleType.toString()
+        })
+        setTimeout(() => {
+          this.form.setFieldsValue({
+            id: record.id,
+            roleType: record.roleType,
+            name: record.name,
+            code: record.code,
+            sort: record.sort,
+            remark: record.remark
+          })
+        }, 100)
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown(text) {
+        sysDictTypeDropDown({
+          code: 'role_type'
+        }).then((res) => {
+          this.typeEnumDataDropDown = res.data
+        })
+      },
+      handleSubmit() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysRoleEdit(values).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.form.resetFields()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel() {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/role/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/role/index.vue
new file mode 100644
index 0000000..63be54f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/role/index.vue
@@ -0,0 +1,239 @@
+<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+    <div ref="boxForm" class="boxForm">
+      <x-card v-if="hasPerm('sysRole:page')">
+      <div slot="content" class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="瑙掕壊鍚�">
+                <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ヨ鑹插悕" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍞竴缂栫爜">
+                <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ュ敮涓�缂栫爜" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+              <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </x-card>
+    </div>
+ 
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :scroll="{x: true,y:tableHeight}"
+        :rowKey="(record) => record.code"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template slot="operator" v-if="hasPerm('sysRole:add')">
+          <div ref="actionBar" class="actionBar">
+            <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysRole:add')">鏂板瑙掕壊
+            </a-button>
+          </div>
+        </template>
+        <span slot="roleType" slot-scope="text">
+          {{ typeFilter(text) }}
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('sysRole:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('sysRole:edit')" />
+          <a-dropdown v-if="hasPerm('sysRole:grantMenu') || hasPerm('sysRole:grantData') || hasPerm('sysRole:delete')">
+            <a class="ant-dropdown-link">
+              鏇村
+              <a-icon type="down" />
+            </a>
+            <a-menu slot="overlay">
+              <a-menu-item v-if="hasPerm('sysRole:grantMenu')">
+                <a @click="$refs.roleMenuForm.roleMenu(record)">鎺堟潈鑿滃崟</a>
+              </a-menu-item>
+              <a-menu-item v-if="hasPerm('sysRole:grantMenu')">
+                <a @click="onOpenRolePdaMenu(record.id)">鎺堟潈PDA鑿滃崟</a>
+              </a-menu-item>
+              <a-menu-item v-if="hasPerm('sysRole:grantData')">
+                <a @click="$refs.roleOrgForm.roleOrg(record)">鎺堟潈鏁版嵁</a>
+              </a-menu-item>
+              <a-menu-item v-if="hasPerm('sysRole:delete')">
+                <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysRoleDelete(record)">
+                  <a>鍒犻櫎</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </s-table>
+
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+      <role-menu-form ref="roleMenuForm" @ok="handleOk" />
+      <role-org-form ref="roleOrgForm" @ok="handleOk" />
+      <role-pda-menu-modal :visible.sync="pdaMenuVisible" :roleid="pdaMenuRoleId" />
+    </a-card>
+  </div>
+</template>
+
+<script>
+  import {
+    STable,
+    XCard
+  } from '@/components'
+  import {
+    getRolePage,
+    sysRoleDelete
+  } from '@/api/modular/system/roleManage'
+  //鑷畾涔塼able楂樺害
+  import setTableHtMixin from '@/mixins/handleTableHt.js'
+  import addForm from './addForm'
+  import editForm from './editForm'
+  import roleMenuForm from './roleMenuForm'
+  import roleOrgForm from './roleOrgForm'
+  import rolePdaMenuModal from './rolePdaMenuModal'
+  import {
+    sysDictTypeDropDown
+  } from '@/api/modular/system/dictManage'
+  export default {
+    mixins: [setTableHtMixin],
+    components: {
+      XCard,
+      STable,
+      addForm,
+      editForm,
+      roleMenuForm,
+      roleOrgForm,
+      rolePdaMenuModal
+    },
+
+    data() {
+      return {
+        // 鏌ヨ鍙傛暟
+        queryParam: {},
+        // 琛ㄥご
+        columns: [
+        {
+          title: '搴忓彿',
+          width: '60px',
+          align: 'center',
+          customRender: (text, record, index) => `${index + 1}`
+        },
+        {
+            title: '瑙掕壊鍚�',
+            dataIndex: 'name'
+          },
+          {
+            title: '瑙掕壊绫诲瀷',
+            dataIndex: 'roleType',
+            scopedSlots: {
+              customRender: 'roleType'
+            }
+          },
+          {
+            title: '鍞竴缂栫爜',
+            dataIndex: 'code'
+          },
+          {
+            title: '鎺掑簭',
+            dataIndex: 'sort'
+          }
+        ],
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return getRolePage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        selectedRowKeys: [],
+        selectedRows: [],
+        typeDictTypeDropDown: [],
+        pdaMenuVisible:false,
+        pdaMenuRoleId:null
+      }
+    },
+
+    created() {
+      this.sysDictTypeDropDown()
+      if (this.hasPerm('sysRole:edit') || this.hasPerm('sysRole:grantMenu') || this.hasPerm('sysRole:grantData') || this
+        .hasPerm('sysRole:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: {
+            customRender: 'action'
+          }
+        })
+      }
+      this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+      window.addEventListener(
+      'resize',
+      () => {
+      this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+      },
+      false
+      )
+
+    },
+
+    methods: {
+      typeFilter(roleType) {
+        // eslint-disable-next-line eqeqeq
+        const values = this.typeDictTypeDropDown.filter(item => item.code == roleType)
+        if (values.length > 0) {
+          return values[0].value
+        }
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown(text) {
+        sysDictTypeDropDown({
+          code: 'role_type'
+        }).then((res) => {
+          this.typeDictTypeDropDown = res.data
+        })
+      },
+      sysRoleDelete(record) {
+        sysRoleDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+          }
+        }).catch((err) => {
+          this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+        })
+      },
+      onOpenRolePdaMenu(id){
+        this.pdaMenuRoleId = id
+        this.pdaMenuVisible=true
+      },
+      handleOk() {
+        this.$refs.table.refresh()
+      },
+      onSelectChange(selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+
+  }
+</script>
+
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/role/roleMenuForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/role/roleMenuForm.vue
new file mode 100644
index 0000000..c1e06d8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/role/roleMenuForm.vue
@@ -0,0 +1,185 @@
+<template>
+  <a-modal
+    title="鎺堟潈鑿滃崟"
+    :width="600"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+        <a-form-item label="鑿滃崟鏉冮檺" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-tree
+            v-model="checkedKeys"
+            multiple
+            checkable
+            :auto-expand-parent="autoExpandParent"
+            :expanded-keys="expandedKeys"
+            :tree-data="menuTreeData"
+            :selected-keys="selectedKeys"
+            :replaceFields="replaceFields"
+            @expand="onExpand"
+            @select="onSelect"
+            @check="treeCheck">
+          </a-tree>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    SysMenuTreeForGrant
+  } from '@/api/modular/system/menuManage'
+  import {
+    sysRoleOwnMenu,
+    sysRoleGrantMenu
+  } from '@/api/modular/system/roleManage'
+
+  export default {
+    data() {
+      return {
+        labelCol: {
+          style: {
+            'padding-right': '20px'
+          },
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 15
+          }
+        },
+        menuTreeData: [],
+        expandedKeys: [],
+        checkedKeys: [],
+        halfCheckedKeys: [],
+        visible: false,
+        confirmLoading: false,
+        formLoading: true,
+        autoExpandParent: true,
+        selectedKeys: [],
+        subValues: [],
+        roleEntity: [],
+        replaceFields: {
+          key: 'id'
+        },
+        form: this.$form.createForm(this)
+      }
+    },
+
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      async roleMenu(record) {
+        this.formLoading = true
+        this.roleEntity = record
+        this.visible = true
+        await this.getMenuTree()
+        await this.expandedMenuKeys(record)
+      },
+
+      /**
+       * 鑾峰彇鑿滃崟鍒楄〃
+       */
+      getMenuTree() {
+        return SysMenuTreeForGrant().then((res) => {
+          if (res.success) {
+            this.menuTreeData = res.data
+            // 榛樿灞曞紑鐩綍绾�
+            this.menuTreeData.forEach(item => {
+              this.expandedKeys.push(item.id)
+            })
+          }
+        })
+      },
+
+      /**
+       * 姝よ鑹插凡鏈夎彍鍗曟潈闄�
+       */
+      expandedMenuKeys(record) {
+        return sysRoleOwnMenu({
+          id: record.id
+        }).then((res) => {
+          if (res.success) {
+            this.checkedKeys = res.data
+            this.findAllChildren(this.menuTreeData)
+          }
+          this.formLoading = false
+        })
+      },
+
+      treeCheck(checkKeys, event) {
+        this.halfCheckedKeys = event.halfCheckedKeys
+      },
+      onExpand(expandedKeys) {
+        this.expandedKeys = expandedKeys
+        this.autoExpandParent = false
+      },
+      onCheck(checkedKeys) {
+        this.checkedKeys = checkedKeys
+      },
+      onSelect(selectedKeys, info) {
+        this.selectedKeys = selectedKeys
+      },
+
+      handleSubmit() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysRoleGrantMenu({
+              id: this.roleEntity.id,
+              grantMenuIdList: this.checkedKeys.concat(this.halfCheckedKeys)
+            }).then((res) => {
+              if (res.success) {
+                this.$message.success('鎺堟潈鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鎺堟潈澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel() {
+        // 娓呯┖宸查�夋嫨鐨�
+        this.checkedKeys = []
+        // 娓呯┖宸插睍寮�鐨�
+        this.expandedKeys = []
+        this.visible = false
+      },
+      // 閬嶅巻鏍戝舰鐒跺悗鑾峰彇鍒板鐖惰妭鐐硅繘琛岀Щ闄わ紝浣跨敤瀛愯妭鐐癸紝鑰屼笖灏嗙埗鑺傜偣鍔犲叆鍒癿ainMenuList
+      findAllChildren(data) {
+        data.forEach((item, index) => {
+          if (item.children.length !== 0) {
+            for (let i = 0; i < this.checkedKeys.length; i++) {
+              if (item.id === this.checkedKeys[i]) {
+                this.checkedKeys.splice(i, 1)
+              }
+            }
+            this.findAllChildren(item.children)
+          }
+        })
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/role/roleOrgForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/role/roleOrgForm.vue
new file mode 100644
index 0000000..4df7e35
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/role/roleOrgForm.vue
@@ -0,0 +1,195 @@
+<template>
+  <a-modal
+    title="鎺堟潈鏁版嵁"
+    :width="600"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+        <a-form-item
+          label="鎺堟潈鑼冨洿"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          has-feedback
+        >
+          <a-select style="width: 100%" placeholder="璇烽�夋嫨鎺堟潈鑼冨洿" v-decorator="['dataScopeType', {rules: [{ required: true, message: '璇烽�夋嫨鎺堟潈鑼冨洿锛�' }]}]" >
+            <a-select-option v-for="(item,index) in dataScopeTypeData" :key="index" :value="item.code" @click="handleChange(item.code)">{{ item.value }}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <div v-show="orgTreeShow">
+          <a-form-item
+            label="閫夋嫨鏈烘瀯"
+            :labelCol="labelCol"
+            :wrapperCol="wrapperCol"
+          >
+            <a-tree
+              v-model="checkedKeys"
+              checkable
+              checkStrictly
+              :auto-expand-parent="autoExpandParent"
+              :expanded-keys="expandedKeys"
+              :tree-data="orgTreeData"
+              :selected-keys="selectedKeys"
+              :replaceFields="replaceFields"
+              @expand="onExpand"
+              @select="onSelect"
+            />
+          </a-form-item>
+        </div>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { getOrgTree } from '@/api/modular/system/orgManage'
+  import { sysRoleOwnData, sysRoleGrantData } from '@/api/modular/system/roleManage'
+  import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+
+  export default {
+    data () {
+      return {
+        labelCol: {
+          style: { 'padding-right': '20px' },
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        orgTreeData: [],
+        expandedKeys: [],
+        checkedKeys: [],
+        visible: false,
+        confirmLoading: false,
+        formLoading: true,
+        autoExpandParent: true,
+        selectedKeys: [],
+        subValues: [],
+        roleEntity: [],
+        dataScopeTypeData: [],
+        orgTreeShow: false,
+        replaceFields: {
+          key: 'id'
+        },
+        form: this.$form.createForm(this)
+      }
+    },
+
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      roleOrg (record) {
+        this.roleEntity = record
+        this.visible = true
+        this.formLoading = true
+        this.sysDictTypeDropDown()
+        this.form.getFieldDecorator('dataScopeType', { initialValue: record.dataScopeType.toString() })
+        this.handleChange(record.dataScopeType)
+      },
+
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown () {
+        // 鏁版嵁鑼冨洿
+        sysDictTypeDropDown({ code: 'data_scope_type' }).then((res) => {
+          this.dataScopeTypeData = res.data
+          this.formLoading = false
+        })
+      },
+
+      // 鑼冨洿涓嬫媺妗嗕簨浠�
+      handleChange (value) {
+        // eslint-disable-next-line eqeqeq
+        if (value == '5') {
+          this.formLoading = true
+          this.orgTreeShow = true
+          // 鑾峰彇鏈烘瀯鏍�
+          this.getOrgTree()
+          // 宸插叧鑱旀暟鎹�
+          this.sysRoleOwnData(this.roleEntity)
+        } else {
+          this.orgTreeShow = false
+          // 娓呯悊宸查�変腑鏈烘瀯
+          this.checkedKeys = []
+        }
+      },
+
+      /**
+       * 鑾峰彇鏈烘瀯鏍�
+       */
+      getOrgTree () {
+        getOrgTree().then((res) => {
+           if (res.success) {
+             this.orgTreeData = res.data
+             // 榛樿灞曞紑
+             this.orgTreeData.forEach(item => {
+               this.expandedKeys.push(item.id)
+             })
+           }
+        })
+      },
+
+      /**
+       * 姝よ鑹插凡鏈夋暟鎹垪琛�
+       */
+      sysRoleOwnData (record) {
+        sysRoleOwnData({ id: record.id }).then((res) => {
+          if (res.success) {
+            this.checkedKeys = res.data
+          }
+          this.formLoading = false
+        })
+      },
+
+      onExpand (expandedKeys) {
+        this.expandedKeys = expandedKeys
+        this.autoExpandParent = false
+      },
+      onCheck (checkedKeys) {
+        this.checkedKeys = checkedKeys
+      },
+      onSelect (selectedKeys, info) {
+        this.selectedKeys = selectedKeys
+      },
+
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            const checkedKeys = this.checkedKeys.checked === undefined ? this.checkedKeys : this.checkedKeys.checked
+            sysRoleGrantData({ id: this.roleEntity.id, grantOrgIdList: checkedKeys, dataScopeType: values.dataScopeType }).then((res) => {
+              this.confirmLoading = false
+              if (res.success) {
+                this.$message.success('鎺堟潈鎴愬姛')
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鎺堟潈澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        // 娓呯┖宸查�夋嫨鐨�
+        this.checkedKeys = []
+        // 娓呯┖宸插睍寮�鐨�
+        this.expandedKeys = []
+        this.visible = false
+        // 闅愯棌鏈烘瀯鏍�
+        this.orgTreeShow = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/role/rolePdaMenuModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/role/rolePdaMenuModal.vue
new file mode 100644
index 0000000..b9be6bc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/role/rolePdaMenuModal.vue
@@ -0,0 +1,123 @@
+<template>
+  <a-modal
+    title="PDA鑿滃崟鎺堟潈"
+    width="600px"
+    :visible="visible"
+    dialogClass="zero-modal"
+    @cancel="handleCancel"
+  >
+    <div class="system-role-pda-menu-modal">
+       <a-collapse v-model="activeKey">
+         <a-collapse-panel v-for="(itema,indexa) in menus" :key="String(indexa)" :header="itema.workShopName">
+           <div class="menu-lists">
+             <div class="menu-item" v-for="(itemb,indexb) in (itema.wmsPdaPowerOutput || [])" :key="`${indexa}-${indexb}`">
+               <a-checkbox :checked="itemb.isCheck" @change="onChangeChecked(itemb)">{{itemb.name}}</a-checkbox>
+             </div>
+           </div>
+         </a-collapse-panel>
+       </a-collapse>
+    </div>
+    <template slot="footer">
+      <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+      <a-button type="primary" key="ok" @click="onConfirm">纭</a-button>
+    </template>
+  </a-modal> 
+</template>
+
+<script>
+import { getPdaMenuList } from '@/api/modular/system/menuManage'
+import { sysRoleGrantPdaMenu } from '@/api/modular/system/roleManage'
+
+export default {
+  name:'systemRolePdaMenuModal',
+  emits:['update:visible'],
+  props:{
+    visible:{
+      type:Boolean,
+      default:false
+    },
+    roleid:{
+      type:[Number,String,null],
+      default:null
+    }
+  },
+  data(){
+    return {
+      menus:[],
+      activeKey:[]
+    }
+  },
+  watch:{
+    visible(newV,oldV){
+      if (newV!==oldV){
+        this.initShow()
+      }
+    }
+  },
+  methods:{
+    handleCancel(){
+      this.$emit('update:visible',false)
+    },
+    initShow(){
+      if (this.visible) {
+        this.getMenus()
+      }
+    },
+    getMenus(){
+      this.$loading.show()
+      getPdaMenuList(this.roleid).then((d)=>{
+        this.menus = d.data || []
+        if (this.menus.length>0) {
+          this.activeKey = ['0']
+        }
+        this.$loading.hide()
+      }).catch(()=>{
+        this.$loading.hide()
+      })
+    },
+    onChangeChecked(row){
+      row.isCheck = !row.isCheck
+    },
+    onConfirm(){
+      this.$loading.show()
+      this.handleUpdateAjax((f)=>{
+        this.$loading.hide()
+        if (f) {
+          this.$message.success('鎿嶄綔鎴愬姛锛�');
+          this.handleCancel()
+        }
+      })
+    },
+    handleUpdateAjax(callback){
+      let _params = {
+        id:this.roleid,
+        grantMenuIdList:[]
+      }
+      this.menus.forEach((itema)=>{
+        if (itema.wmsPdaPowerOutput instanceof Array) {
+          itema.wmsPdaPowerOutput .forEach((itemb)=>{
+            if (itemb.isCheck){
+              _params.grantMenuIdList.push(itemb.id)
+            }
+          })
+        }
+      })
+      if (_params.grantMenuIdList.length<=0) {
+        callback(false)
+      } else {
+        sysRoleGrantPdaMenu(_params).then(()=>{
+          callback(true)
+        }).catch(()=>{
+          callback(false)
+        })
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.system-role-pda-menu-modal{
+  padding: 16px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/sms/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/sms/index.vue
new file mode 100644
index 0000000..ef8c357
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/sms/index.vue
@@ -0,0 +1,163 @@
+<template>
+  <div>
+    <x-card v-if="hasPerm('sysSms:page')">
+      <div slot="content" class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鎵嬫満鍙�">
+                <a-input v-model="queryParam.phoneNumbers" placeholder="璇疯緭鍏ユ墜鏈哄彿"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍙戦�佺姸鎬�">
+                <a-select v-model="queryParam.status" placeholder="璇烽�夋嫨鍙戦�佺姸鎬�" >
+                  <a-select-option v-for="(item,index) in statusDictTypeDropDown" :key="index" :value="item.code" >{{ item.value }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鏉ユ簮">
+                  <a-select v-model="queryParam.source" placeholder="璇烽�夋嫨鏉ユ簮" >
+                    <a-select-option v-for="(item,index) in sourceDictTypeDropDown" :key="index" :value="item.code" >{{ item.value }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+            </template>
+            <a-col :md="!advanced && 8 || 24" :sm="24">
+              <span class="table-page-search-submitButtons" :style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
+                <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @click="toggleAdvanced" style="margin-left: 8px">
+                  {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </x-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+      >
+        <span slot="status" slot-scope="text">
+          {{ statusFilter(text) }}
+        </span>
+        <span slot="source" slot-scope="text">
+          {{ sourceFilter(text) }}
+        </span>
+      </s-table>
+    </a-card>
+  </div>
+</template>
+<script>
+  import { STable, XCard } from '@/components'
+  import { smsPage } from '@/api/modular/system/smsManage'
+  import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+  export default {
+    components: {
+      XCard,
+      STable
+    },
+    data () {
+      return {
+        // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        advanced: false,
+        // 鏌ヨ鍙傛暟
+        queryParam: {},
+        // 琛ㄥご
+        columns: [
+          {
+            title: '鎵嬫満鍙�',
+            dataIndex: 'phoneNumbers'
+          },
+          {
+            title: '鐭俊楠岃瘉鐮�',
+            dataIndex: 'validateCode'
+          },
+          {
+            title: '鐭俊妯℃澘ID',
+            dataIndex: 'templateCode'
+          },
+          {
+            title: '鍙戦�佺姸鎬�',
+            dataIndex: 'status',
+            scopedSlots: { customRender: 'status' }
+          },
+          {
+            title: '鏉ユ簮',
+            dataIndex: 'source',
+            scopedSlots: { customRender: 'source' }
+          },
+          {
+            title: '澶辨晥鏃堕棿',
+            dataIndex: 'invalidTime'
+          }
+        ],
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return smsPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        selectedRowKeys: [],
+        selectedRows: [],
+        statusDictTypeDropDown: [],
+        sourceDictTypeDropDown: []
+      }
+    },
+    created () {
+      this.sysDictTypeDropDown()
+    },
+    methods: {
+      sourceFilter (source) {
+        // eslint-disable-next-line eqeqeq
+        const values = this.sourceDictTypeDropDown.filter(item => item.code == source)
+        if (values.length > 0) {
+          return values[0].value
+        }
+      },
+      statusFilter (status) {
+        // eslint-disable-next-line eqeqeq
+        const values = this.statusDictTypeDropDown.filter(item => item.code == status)
+        if (values.length > 0) {
+          return values[0].value
+        }
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown () {
+        sysDictTypeDropDown({ code: 'send_type' }).then((res) => {
+          this.statusDictTypeDropDown = res.data
+        })
+        sysDictTypeDropDown({ code: 'sms_send_source' }).then((res) => {
+          this.sourceDictTypeDropDown = res.data
+        })
+      },
+      toggleAdvanced () {
+        this.advanced = !this.advanced
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/addForm.vue
new file mode 100644
index 0000000..ad83e6d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/addForm.vue
@@ -0,0 +1,157 @@
+<template>
+  <a-modal
+    title="鏂板绉熸埛"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ叕鍙稿悕绉帮紒'}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="绠$悊鍛樺鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input placeholder="璇疯緭鍏ョ鐞嗗憳濮撳悕" v-decorator="['adminName', {rules: [{required: true, message: '璇疯緭鍏ョ鐞嗗憳濮撳悕'}]}]" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item label="閭(璐﹀彿)" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input placeholder="璇疯緭鍏ョ數瀛愰偖绠�" v-decorator="['email', {rules: [{required: true, message: '璇疯緭鍏ョ數瀛愰偖绠�'}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鐢佃瘽鍙风爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input placeholder="璇疯緭鍏ョ數璇濆彿鐮�" v-decorator="['phone']" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <!--<a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鏋舵瀯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input placeholder="璇疯緭鍏ユ灦鏋勫悕绉�" v-decorator="['schema']" />
+            </a-form-item>
+          </a-col>
+        </a-row> -->
+
+        <!-- <a-row :gutter="24">
+          <a-col :md="24" :sm="24">
+            <a-form-item label="鏁版嵁搴撹繛鎺�" :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" has-feedback>
+              <a-textarea
+                :rows="4"
+                placeholder="璇疯緭鍏ユ暟鎹簱杩炴帴"
+                v-decorator="['connection', {rules: [{required: false, message: '璇疯緭鍏ユ暟鎹簱杩炴帴瀛楃涓诧紒'}]}]"></a-textarea>
+            </a-form-item>
+          </a-col>
+        </a-row> -->
+
+        <a-row :gutter="24">
+          <a-col :md="24" :sm="24">
+            <a-form :form="form">
+              <a-form-item label="澶囨敞" :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" has-feedback>
+                <a-textarea :rows="2" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+              </a-form-item>
+            </a-form>
+          </a-col>
+        </a-row>
+
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    sysTenantAdd
+  } from '@/api/modular/system/tenantManage'
+
+  export default {
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 6
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 16
+          }
+        },
+        labelCol_JG: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 3
+          }
+        },
+        wrapperCol_JG: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 20
+          }
+        },
+        visible: false,
+        confirmLoading: false,
+        formLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add(record) {
+        this.visible = true
+        this.formLoading = false
+      },
+
+      handleSubmit() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysTenantAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.form.resetFields()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel() {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/editForm.vue
new file mode 100644
index 0000000..4961fa7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/editForm.vue
@@ -0,0 +1,163 @@
+<template>
+  <a-modal
+    title="缂栬緫绉熸埛"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+        <a-form-item style="display: none;" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+          <a-input v-decorator="['id']" />
+        </a-form-item>
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input placeholder="鍏徃鍚嶇О" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ叕鍙稿悕绉�'}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="绠$悊鍛樺鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input placeholder="璇疯緭鍏ョ鐞嗗憳濮撳悕" v-decorator="['adminName', {rules: [{required: true, message: '璇疯緭鍏ョ鐞嗗憳濮撳悕'}]}]" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item label="閭(璐﹀彿)" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input placeholder="璇疯緭鍏ョ數瀛愰偖绠�" v-decorator="['email']" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="鐢佃瘽鍙风爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-input placeholder="璇疯緭鍏ョ數璇濆彿鐮�" v-decorator="['phone']" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <!-- <a-row :gutter="24">
+          <a-col :md="24" :sm="24">
+            <a-form-item label="鏁版嵁搴撹繛鎺�" :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" has-feedback>
+              <a-textarea
+                :rows="4"
+                placeholder="璇疯緭鍏ユ暟鎹簱杩炴帴"
+                v-decorator="['connection', {rules: [{required: true, message: '璇疯緭鍏ユ暟鎹簱杩炴帴瀛楃涓诧紒'}]}]"></a-textarea>
+            </a-form-item>
+          </a-col>
+        </a-row> -->
+
+        <a-row :gutter="24">
+          <a-col :md="24" :sm="24">
+            <a-form :form="form">
+              <a-form-item label="澶囨敞" :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" has-feedback>
+                <a-textarea :rows="2" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+              </a-form-item>
+            </a-form>
+          </a-col>
+        </a-row>
+
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    sysTenantEdit
+  } from '@/api/modular/system/tenantManage'
+
+  export default {
+    data() {
+      return {
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 6
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 16
+          }
+        },
+        labelCol_JG: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 3
+          }
+        },
+        wrapperCol_JG: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 20
+          }
+        },
+        visible: false,
+        confirmLoading: false,
+        formLoading: false,
+        form: this.$form.createForm(this)
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit(record) {
+        this.visible = true
+        setTimeout(() => {
+          this.form.setFieldsValue({
+            id: record.id,
+            name: record.name,
+            adminName: record.adminName,
+            host: record.host,
+            email: record.email,
+            phone: record.phone,
+            remark: record.remark,
+            connection: record.connection
+          })
+        }, 100)
+      },
+
+      handleSubmit() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysTenantEdit(values).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.form.resetFields()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel() {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/index.vue
new file mode 100644
index 0000000..1005acb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/index.vue
@@ -0,0 +1,200 @@
+<template>
+  <div>
+    <x-card v-if="hasPerm('sysTenant:page')">
+      <div slot="content" class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="鍏徃鍚嶇О">
+                <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ョ鎴峰悕绉�" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+              <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </x-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template slot="operator" v-if="hasPerm('sysTenant:add')">
+          <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysTenant:add')">鏂板绉熸埛
+          </a-button>
+        </template>
+        <span slot="host" slot-scope="host">
+          <a-tag :color="'geekblue'">
+            {{ host }}
+          </a-tag>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('sysTenant:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('sysTenant:edit')" />
+          <a-dropdown
+            v-if="hasPerm('sysTenant:grantMenu') || hasPerm('sysTenant:delete')">
+            <a class="ant-dropdown-link">
+              鏇村
+              <a-icon type="down" />
+            </a>
+            <a-menu slot="overlay">
+              <a-menu-item v-if="hasPerm('sysTenant:grantMenu')">
+                <a @click="$refs.tenantMenuForm.tenantMenu(record)">鎺堟潈鑿滃崟</a>
+              </a-menu-item>
+              <a-menu-item v-if="hasPerm('sysTenant:resetPwd')">
+                <a-popconfirm placement="topRight" title="纭閲嶇疆瀵嗙爜锛�" @confirm="() => resetPwd(record)">
+                  <a>閲嶇疆瀵嗙爜</a>
+                </a-popconfirm>
+              </a-menu-item>
+              <a-menu-item v-if="hasPerm('sysTenant:delete')">
+                <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysTenantDelete(record)">
+                  <a>鍒犻櫎</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+      <tenant-menu-form ref="tenantMenuForm" @ok="handleOk"/>
+    </a-card>
+  </div>
+</template>
+<script>
+  import {
+    STable,
+    Ellipsis,
+    XCard
+  } from '@/components'
+  import {
+    sysTenantPage,
+    sysTenantDelete,
+    sysTenantResetPwd
+  } from '@/api/modular/system/tenantManage'
+  import addForm from './addForm'
+  import editForm from './editForm'
+  import tenantMenuForm from './tenantMenuForm'
+
+  export default {
+    components: {
+      XCard,
+      STable,
+      Ellipsis,
+      addForm,
+      editForm,
+      tenantMenuForm
+    },
+    data() {
+      return {
+        // 鏌ヨ鍙傛暟
+        queryParam: {},
+        // 琛ㄥご
+        columns: [{
+            title: '鍏徃鍚嶇О',
+            dataIndex: 'name'
+          },
+          {
+            title: '璐﹀彿(閭)',
+            dataIndex: 'email'
+          },
+          {
+            title: '濮撳悕',
+            dataIndex: 'adminName'
+          },
+          {
+            title: '鐢佃瘽',
+            dataIndex: 'phone'
+          },
+           {
+            title: '鍒涘缓鏃堕棿',
+            dataIndex: 'createdTime'
+          },
+          {
+            title: '澶囨敞',
+            dataIndex: 'remark'
+          }
+          // {
+          //   title: '鏋舵瀯',
+          //   dataIndex: 'schema',
+          //   width: 100
+          // },
+        ],
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return sysTenantPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created() {
+      if (this.hasPerm('sysTenant:edit') || this.hasPerm('sysTenant:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: {
+            customRender: 'action'
+          }
+        })
+      }
+    },
+    methods: {
+      sysTenantDelete(record) {
+        sysTenantDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+          }
+        }).catch((err) => {
+          this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+        })
+      },
+      toggleAdvanced() {
+        this.advanced = !this.advanced
+      },
+      handleOk() {
+        this.$refs.table.refresh()
+      },
+      onSelectChange(selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      },
+      /**
+       * 閲嶇疆瀵嗙爜
+       */
+      resetPwd(record) {
+        sysTenantResetPwd({
+          id: record.id
+        }).then(res => {
+          if (res.success) {
+            this.$message.success('閲嶇疆鎴愬姛')
+            // this.$refs.table.refresh()
+          } else {
+            this.$message.error('閲嶇疆澶辫触锛�' + res.message)
+          }
+        })
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/tenantMenuForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/tenantMenuForm.vue
new file mode 100644
index 0000000..879246b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/tenantMenuForm.vue
@@ -0,0 +1,186 @@
+<template>
+  <a-modal
+    title="绉熸埛鎺堟潈鑿滃崟"
+    :width="600"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel">
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+        <a-form-item label="鑿滃崟鏉冮檺" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-tree
+            v-model="checkedKeys"
+            multiple
+            checkable
+            :auto-expand-parent="autoExpandParent"
+            :expanded-keys="expandedKeys"
+            :tree-data="menuTreeData"
+            :selected-keys="selectedKeys"
+            :replaceFields="replaceFields"
+            @expand="onExpand"
+            @select="onSelect"
+            @check="treeCheck">
+          </a-tree>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+    SysMenuTreeForGrant
+  } from '@/api/modular/system/menuManage'
+  import {
+    sysTenantOwnMenu,
+    sysTenantGrantMenu
+  } from '@/api/modular/system/tenantManage'
+
+  export default {
+    data() {
+      return {
+        labelCol: {
+          style: {
+            'padding-right': '20px'
+          },
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 15
+          }
+        },
+        menuTreeData: [],
+        expandedKeys: [],
+        checkedKeys: [],
+        halfCheckedKeys: [],
+        visible: false,
+        confirmLoading: false,
+        formLoading: true,
+        autoExpandParent: true,
+        selectedKeys: [],
+        subValues: [],
+        tenantEntity: [],
+        replaceFields: {
+          key: 'id'
+        },
+        form: this.$form.createForm(this)
+      }
+    },
+
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      tenantMenu(record) {
+        this.formLoading = true
+        this.tenantEntity = record
+        this.visible = true
+        this.getMenuTree()
+        this.expandedMenuKeys(record)
+      },
+
+      /**
+       * 鑾峰彇鑿滃崟鍒楄〃
+       */
+      getMenuTree() {
+        SysMenuTreeForGrant().then((res) => {
+          if (res.success) {
+            this.menuTreeData = res.data
+            // 榛樿灞曞紑鐩綍绾�
+            this.menuTreeData.forEach(item => {
+              this.expandedKeys.push(item.id)
+            })
+          }
+        })
+      },
+
+      /**
+       * 姝ょ鎴峰凡鏈夎彍鍗曟潈闄�
+       */
+      expandedMenuKeys(record) {
+        sysTenantOwnMenu({
+          id: record.id
+        }).then((res) => {
+          if (res.success) {
+            this.checkedKeys = res.data
+            this.findAllChildren(this.menuTreeData)
+          }
+          this.formLoading = false
+        })
+      },
+
+      treeCheck(checkKeys, event) {
+        this.halfCheckedKeys = event.halfCheckedKeys
+      },
+      onExpand(expandedKeys) {
+        this.expandedKeys = expandedKeys
+        this.autoExpandParent = false
+      },
+      onCheck(checkedKeys) {
+        this.checkedKeys = checkedKeys
+      },
+      onSelect(selectedKeys, info) {
+        this.selectedKeys = selectedKeys
+      },
+
+      handleSubmit() {
+        const {
+          form: {
+            validateFields
+          }
+        } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysTenantGrantMenu({
+              id: this.tenantEntity.id,
+              grantMenuIdList: this.checkedKeys.concat(this.halfCheckedKeys)
+            }).then((res) => {
+              if (res.success) {
+                this.$message.success('鎺堟潈鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鎺堟潈澶辫触锛�' + res.message)
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel() {
+        // 娓呯┖宸查�夋嫨鐨�
+        this.checkedKeys = []
+        // 娓呯┖宸插睍寮�鐨�
+        this.expandedKeys = []
+        this.visible = false
+      },
+
+      // 閬嶅巻鏍戝舰鐒跺悗鑾峰彇鍒板鐖惰妭鐐硅繘琛岀Щ闄わ紝浣跨敤瀛愯妭鐐癸紝鑰屼笖灏嗙埗鑺傜偣鍔犲叆鍒癿ainMenuList
+      findAllChildren(data) {
+        data.forEach((item, index) => {
+          if (item.children.length !== 0) {
+            for (let i = 0; i < this.checkedKeys.length; i++) {
+              if (item.id === this.checkedKeys[i]) {
+                this.checkedKeys.splice(i, 1)
+              }
+            }
+            this.findAllChildren(item.children)
+          }
+        })
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/timers/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/timers/addForm.vue
new file mode 100644
index 0000000..c071d3b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/timers/addForm.vue
@@ -0,0 +1,367 @@
+<template>
+  <a-modal
+    title="鏂板瀹氭椂浠诲姟"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :label="jobNameLabel" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-select
+                :placeholder="jobNamePlaceholder"
+                :showArrow="true"
+                :mode="jobNameMode"
+                v-decorator="['jobName', { rules: [{ required: true, message: '璇疯緭鍏ヤ换鍔″悕绉帮紒' }] }]"
+              >
+                <a-select-option
+                  v-for="(item, index) in JobNameData"
+                  :key="index"
+                  :value="item.jobName"
+                  @click="onChangeJobName(item)"
+                  >{{ item.jobName }}</a-select-option
+                >
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <span slot="label">
+                <a-tooltip title="Run绫诲瀷锛氱被鍚�/鏂规硶鍚嶏紝http绫诲瀷锛歎RL鍦板潃">
+                  <a-icon type="question-circle-o" /> </a-tooltip
+                >&nbsp; 璇锋眰鍦板潃
+              </span>
+              <a-input
+                placeholder="璇疯緭鍏ヨ鍦板潃"
+                v-decorator="['requestUrl', { rules: [{ required: true, message: '璇疯緭鍏ヨ姹傚湴鍧�锛�' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="24" :sm="24">
+            <a-form-item :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" label="璇锋眰绫诲瀷">
+              <a-radio-group
+                v-decorator="['requestType', { rules: [{ required: true, message: '璇烽�夋嫨璇锋眰绫诲埆锛�' }] }]"
+              >
+                <a-radio
+                  v-for="(item, index) in requestTypeEnumDataDropDown"
+                  :key="index"
+                  :value="parseInt(item.code)"
+                  @click="onChangeRequestType(item.code)"
+                  >{{ item.value }}</a-radio
+                >
+              </a-radio-group>
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <div v-show="showHeaders">
+            <a-col :md="24" :sm="24">
+              <a-form-item :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" label="璇锋眰澶�" has-feedback>
+                <a-input placeholder="璇疯緭鍏ヨ姹傚ご" style="width: 100%" v-decorator="['headers']" />
+              </a-form-item>
+            </a-col>
+          </div>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="24" :sm="24">
+            <a-form-item
+              :labelCol="labelCol_JG"
+              :wrapperCol="wrapperCol_JG"
+              :label="requestParametersLabel"
+              has-feedback
+            >
+              <a-textarea :rows="1" :placeholder="requestParametersPlaceholder" v-decorator="['requestParameters']">
+              </a-textarea>
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="瀹氭椂鍣ㄧ被鍨�">
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨瀹氭椂鍣ㄧ被鍨�"
+                @change="onChangeTimerType"
+                v-decorator="['timerType', { rules: [{ required: true, message: '璇烽�夋嫨瀹氭椂鍣ㄧ被鍨嬶紒' }] }]"
+              >
+                <a-select-option v-for="(item, index) in spareTimeTypeDropDown" :key="index" :value="item.code">{{
+                  item.value
+                }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              label="鎵ц闂撮殧(绉�)"
+              has-feedback
+              v-if="VisibleTimerType"
+            >
+              <a-input-number
+                placeholder="璇疯緭鍏ユ墽琛岄棿闅�"
+                style="width: 100%"
+                v-decorator="['interval', { rules: [{ required: true, message: '璇疯緭鍏ユ墽琛岄棿闅旓紒' }] }]"
+                :min="1"
+              />
+            </a-form-item>
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="浠诲姟琛ㄨ揪寮�" has-feedback v-else>
+              <nobr>
+                <a-input
+                  placeholder="璇疯緭鍏ヤ换鍔¤〃杈惧紡"
+                  v-decorator="['cron', { rules: [{ required: true, message: '璇疯緭鍏ヤ换鍔¤〃杈惧紡锛�' }] }]"
+                />
+                <a href="https://www.bejson.com/othertools/cron/" target="_Blank">鍙傝��</a>
+              </nobr>
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <span slot="label">
+                <a-tooltip title="鏂板浠诲姟鍚庣珛鍗虫墽琛岋紝椤圭洰鍚姩鍚庣珛鍗虫墽琛�">
+                  <a-icon type="question-circle-o" /> </a-tooltip
+                >&nbsp; 绔嬪嵆鎵ц
+              </span>
+              <a-switch
+                id="startNow"
+                checkedChildren="鏄�"
+                unCheckedChildren="鍚�"
+                v-decorator="['startNow', { valuePropName: 'checked' }]"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍙墽琛屼竴娆�">
+              <a-switch
+                id="doOnce"
+                checkedChildren="鏄�"
+                unCheckedChildren="鍚�"
+                v-decorator="['doOnce', { valuePropName: 'checked' }]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <span slot="label">
+                <a-tooltip
+                  title="骞惰鎵ц涓嶄細绛夊緟褰撳墠浠诲姟瀹屾垚锛屽彂璧锋墽琛屽悗绔嬪嵆寮�濮嬩笅娆′换鍔$殑鍊掕鏃躲�備覆琛屾墽琛屼細绛夊緟褰撳墠浠诲姟瀹屾垚鎵嶅紑濮嬩笅娆′换鍔$殑鍊掕鏃�"
+                >
+                  <a-icon type="question-circle-o" /> </a-tooltip
+                >&nbsp; 鎵ц绫诲瀷
+              </span>
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鎵ц绫诲瀷"
+                v-decorator="['executeType', { rules: [{ required: true, message: '璇烽�夋嫨鎵ц绫诲瀷锛�' }] }]"
+              >
+                <a-select-option v-for="(item, index) in executeTypeDropDown" :key="index" :value="item.code">{{
+                  item.value
+                }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="澶囨敞" :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" has-feedback>
+              <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-input>
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { sysTimersAdd, sysTimersLocalJobList } from '@/api/modular/system/timersManage'
+import { sysEnumDataList, sysEnumDataListByField } from '@/api/modular/system/enumManage'
+export default {
+  data() {
+    return {
+      labelCol: {
+        xs: {
+          span: 24,
+        },
+        sm: {
+          span: 6,
+        },
+      },
+      wrapperCol: {
+        xs: {
+          span: 24,
+        },
+        sm: {
+          span: 16,
+        },
+      },
+      labelCol_JG: {
+        xs: {
+          span: 24,
+        },
+        sm: {
+          span: 3,
+        },
+      },
+      wrapperCol_JG: {
+        xs: {
+          span: 24,
+        },
+        sm: {
+          span: 20,
+        },
+      },
+      visible: false,
+      confirmLoading: false,
+      VisibleTimerType: true,
+      requestTypeEnumDataDropDown: [],
+      spareTimeTypeDropDown: [],
+      executeTypeDropDown: [],
+      LocalJobsDropDown: [],
+      JobNameData: [],
+      formLoading: false,
+      jobNameLabel: '浠诲姟鍚嶇О',
+      jobNameMode: 'combobox',
+      jobNamePlaceholder: '璇疯緭鍏ヤ换鍔″悕绉�',
+      requestParametersLabel: '璇锋眰鍙傛暟',
+      requestParametersPlaceholder: '璇疯緭鍏ヨ姹傚弬鏁�',
+      showHeaders: true,
+      form: this.$form.createForm(this),
+    }
+  },
+  methods: {
+    // 鍒濆鍖栨柟娉�
+    add(record) {
+      this.visible = true
+      // this.formLoading = true
+      this.formLoading = false
+      this.sysEnumDataList()
+
+      this.form.getFieldDecorator('requestType', {
+        initialValue: 2,
+      })
+      this.form.getFieldDecorator('timerType', {
+        initialValue: 0,
+      })
+      this.form.getFieldDecorator('executeType', {
+        initialValue: 0,
+      })
+    },
+
+    /**
+     * 鑾峰彇鏋氫妇鏁版嵁
+     */
+    sysEnumDataList() {
+      sysEnumDataList({
+        enumName: 'RequestTypeEnum',
+      }).then((res) => {
+        this.requestTypeEnumDataDropDown = res.data
+      })
+      sysEnumDataListByField({
+        EntityName: 'SysTimer',
+        FieldName: 'TimerType',
+      }).then((res) => {
+        this.spareTimeTypeDropDown = res.data
+      })
+      sysEnumDataListByField({
+        EntityName: 'SysTimer',
+        FieldName: 'ExecuteType',
+      }).then((res) => {
+        this.executeTypeDropDown = res.data
+      })
+    },
+
+    onChangeTimerType(e) {
+      this.VisibleTimerType = e === 0
+    },
+
+    onChangeRequestType(e) {
+      this.showHeaders = e !== 0
+      if (!this.showHeaders) {
+        if (this.LocalJobsDropDown.length === 0) {
+          sysTimersLocalJobList().then((res) => {
+            this.LocalJobsDropDown = res.data
+            this.JobNameData = res.data
+          })
+        } else {
+          this.JobNameData = this.LocalJobsDropDown
+        }
+        this.jobNameLabel = '浠诲姟鏂规硶'
+        this.jobNameMode = 'default'
+        this.jobNamePlaceholder = '璇烽�夋嫨浠诲姟鏂规硶'
+        this.requestParametersLabel = '閰嶇疆椤瑰弬鏁�'
+        this.requestParametersPlaceholder = '璇疯緭鍏ラ厤缃」鍙傛暟'
+      } else {
+        this.JobNameData = []
+        this.jobNameLabel = '浠诲姟鍚嶇О'
+        this.jobNameMode = 'combobox'
+        this.jobNamePlaceholder = '璇疯緭鍏ヤ换鍔″悕绉�'
+        this.requestParametersLabel = '璇锋眰鍙傛暟'
+        this.requestParametersPlaceholder = '璇疯緭鍏ヨ姹傚弬鏁�'
+      }
+    },
+
+    onChangeJobName(e) {
+      this.onChangeTimerType(e.timerType)
+      setTimeout(() => {
+        this.form.setFieldsValue({
+          requestUrl: e.requestUrl,
+          startNow: e.startNow,
+          doOnce: e.doOnce,
+          interval: e.interval,
+          timerType: e.timerType,
+          remark: e.remark,
+          executeType: e.executeType,
+          cron: e.cron,
+        })
+      }, 100)
+    },
+
+    handleSubmit() {
+      const {
+        form: { validateFields },
+      } = this
+      this.confirmLoading = true
+      validateFields((errors, values) => {
+        if (!errors) {
+          sysTimersAdd(values)
+            .then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.form.resetFields()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + res.message)
+              }
+            })
+            .finally((res) => {
+              this.confirmLoading = false
+            })
+        } else {
+          this.confirmLoading = false
+        }
+      })
+    },
+    handleCancel() {
+      this.form.resetFields()
+      this.visible = false
+    },
+  },
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/timers/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/timers/editForm.vue
new file mode 100644
index 0000000..4a862b0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/timers/editForm.vue
@@ -0,0 +1,390 @@
+<template>
+  <a-modal
+    title="缂栬緫瀹氭椂浠诲姟"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+        <a-row :gutter="24" style="display: none">
+          <a-col :md="12" :sm="24">
+            <a-form-item>
+              <a-input v-decorator="['id']" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :label="jobNameLabel" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+              <a-select
+                :placeholder="jobNamePlaceholder"
+                :showArrow="true"
+                :mode="jobNameMode"
+                v-decorator="['jobName', { rules: [{ required: true, message: '璇疯緭鍏ヤ换鍔″悕绉帮紒' }] }]"
+              >
+                <a-select-option
+                  v-for="(item, index) in JobNameData"
+                  :key="index"
+                  :value="item.jobName"
+                  @click="onChangeJobName(item)"
+                  >{{ item.jobName }}</a-select-option
+                >
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <span slot="label">
+                <a-tooltip title="Run绫诲瀷锛氱被鍚�/鏂规硶鍚嶏紝http绫诲瀷锛歎RL鍦板潃">
+                  <a-icon type="question-circle-o" /> </a-tooltip
+                >&nbsp; 璇锋眰鍦板潃
+              </span>
+              <a-input
+                placeholder="璇疯緭鍏ヨ鍦板潃"
+                v-decorator="['requestUrl', { rules: [{ required: true, message: '璇疯緭鍏ヨ姹傚湴鍧�锛�' }] }]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="24" :sm="24">
+            <a-form-item :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" label="璇锋眰绫诲瀷">
+              <a-radio-group
+                v-decorator="['requestType', { rules: [{ required: true, message: '璇烽�夋嫨璇锋眰绫诲埆锛�' }] }]"
+              >
+                <a-radio
+                  v-for="(item, index) in requestTypeEnumDataDropDown"
+                  :key="index"
+                  :value="parseInt(item.code)"
+                  @click="onChangeRequestType(item.code)"
+                  >{{ item.value }}</a-radio
+                >
+              </a-radio-group>
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <div v-show="showHeaders">
+            <a-col :md="24" :sm="24">
+              <a-form-item :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" label="璇锋眰澶�" has-feedback>
+                <a-input placeholder="璇疯緭鍏ヨ姹傚ご" style="width: 100%" v-decorator="['headers']" />
+              </a-form-item>
+            </a-col>
+          </div>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="24" :sm="24">
+            <a-form-item
+              :labelCol="labelCol_JG"
+              :wrapperCol="wrapperCol_JG"
+              :label="requestParametersLabel"
+              has-feedback
+            >
+              <a-textarea :rows="1" :placeholder="requestParametersPlaceholder" v-decorator="['requestParameters']">
+              </a-textarea>
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="瀹氭椂鍣ㄧ被鍨�">
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨瀹氭椂鍣ㄧ被鍨�"
+                @change="onChangeTimerType"
+                v-decorator="['timerType', { rules: [{ required: true, message: '璇烽�夋嫨瀹氭椂鍣ㄧ被鍨嬶紒' }] }]"
+              >
+                <a-select-option v-for="(item, index) in spareTimeTypeDropDown" :key="index" :value="item.code">{{
+                  item.value
+                }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              label="鎵ц闂撮殧(绉�)"
+              has-feedback
+              v-if="VisibleTimerType"
+            >
+              <a-input-number
+                placeholder="璇疯緭鍏ユ墽琛岄棿闅�"
+                style="width: 100%"
+                v-decorator="['interval', { rules: [{ required: true, message: '璇疯緭鍏ユ墽琛岄棿闅旓紒' }] }]"
+                :min="1"
+              />
+            </a-form-item>
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="浠诲姟琛ㄨ揪寮�" has-feedback v-else>
+              <nobr>
+                <a-input
+                  placeholder="璇疯緭鍏ヤ换鍔¤〃杈惧紡"
+                  v-decorator="['cron', { rules: [{ required: true, message: '璇疯緭鍏ヤ换鍔¤〃杈惧紡锛�' }] }]"
+                />
+                <a href="https://www.bejson.com/othertools/cron/" target="_Blank">鍙傝��</a>
+              </nobr>
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <span slot="label">
+                <a-tooltip title="鏂板浠诲姟鍚庣珛鍗虫墽琛岋紝椤圭洰鍚姩鍚庣珛鍗虫墽琛�">
+                  <a-icon type="question-circle-o" /> </a-tooltip
+                >&nbsp; 绔嬪嵆鎵ц
+              </span>
+              <a-switch
+                id="startNow"
+                checkedChildren="鏄�"
+                unCheckedChildren="鍚�"
+                v-decorator="['startNow', { valuePropName: 'checked' }]"
+              />
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍙墽琛屼竴娆�">
+              <a-switch
+                id="doOnce"
+                checkedChildren="鏄�"
+                unCheckedChildren="鍚�"
+                v-decorator="['doOnce', { valuePropName: 'checked' }]"
+              />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row :gutter="24">
+          <a-col :md="12" :sm="24">
+            <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <span slot="label">
+                <a-tooltip
+                  title="骞惰鎵ц涓嶄細绛夊緟褰撳墠浠诲姟瀹屾垚锛屽彂璧锋墽琛屽悗绔嬪嵆寮�濮嬩笅娆′换鍔$殑鍊掕鏃躲�備覆琛屾墽琛屼細绛夊緟褰撳墠浠诲姟瀹屾垚鎵嶅紑濮嬩笅娆′换鍔$殑鍊掕鏃�"
+                >
+                  <a-icon type="question-circle-o" /> </a-tooltip
+                >&nbsp; 鎵ц绫诲瀷
+              </span>
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鎵ц绫诲瀷"
+                v-decorator="['executeType', { rules: [{ required: true, message: '璇烽�夋嫨鎵ц绫诲瀷锛�' }] }]"
+              >
+                <a-select-option v-for="(item, index) in executeTypeDropDown" :key="index" :value="item.code">{{
+                  item.value
+                }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="12" :sm="24">
+            <a-form-item label="澶囨敞" :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" has-feedback>
+              <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-input>
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { sysTimersEdit, sysTimersLocalJobList } from '@/api/modular/system/timersManage'
+import { sysEnumDataList, sysEnumDataListByField } from '@/api/modular/system/enumManage'
+
+export default {
+  data() {
+    return {
+      labelCol: {
+        xs: {
+          span: 24,
+        },
+        sm: {
+          span: 6,
+        },
+      },
+      wrapperCol: {
+        xs: {
+          span: 24,
+        },
+        sm: {
+          span: 16,
+        },
+      },
+      labelCol_JG: {
+        xs: {
+          span: 24,
+        },
+        sm: {
+          span: 3,
+        },
+      },
+      wrapperCol_JG: {
+        xs: {
+          span: 24,
+        },
+        sm: {
+          span: 20,
+        },
+      },
+      visible: false,
+      confirmLoading: false,
+      VisibleTimerType: true,
+      requestTypeEnumDataDropDown: [],
+      spareTimeTypeDropDown: [],
+      executeTypeDropDown: [],
+      LocalJobsDropDown: [],
+      JobNameData: [],
+      formLoading: false,
+      jobNameLabel: '浠诲姟鍚嶇О',
+      jobNameMode: 'combobox',
+      jobNamePlaceholder: '璇疯緭鍏ヤ换鍔″悕绉�',
+      requestParametersLabel: '璇锋眰鍙傛暟',
+      requestParametersPlaceholder: '璇疯緭鍏ヨ姹傚弬鏁�',
+      showHeaders: true,
+      form: this.$form.createForm(this),
+    }
+  },
+  methods: {
+    // 鍒濆鍖栨柟娉�
+    edit(record) {
+      this.visible = true
+      this.formLoading = true
+      this.sysEnumDataList()
+
+      // eslint-disable-next-line eqeqeq
+      this.VisibleTimerType = record.timerType == 0
+
+      if (record.requestType === 0) {
+        this.onChangeRequestType(record.requestType)
+      }
+
+      setTimeout(() => {
+        this.form.setFieldsValue({
+          id: record.id,
+          jobName: record.jobName,
+          requestUrl: record.requestUrl,
+          requestType: record.requestType,
+          timerType: record.timerType,
+          cron: record.cron,
+          interval: record.interval,
+          headers: record.headers,
+          requestParameters: record.requestParameters,
+          remark: record.remark,
+          startNow: record.startNow,
+          doOnce: record.doOnce,
+          executeType: record.executeType,
+        })
+      }, 100)
+    },
+
+    /**
+     * 鑾峰彇鏋氫妇鏁版嵁
+     */
+    sysEnumDataList() {
+      sysEnumDataList({
+        enumName: 'RequestTypeEnum',
+      }).then((res) => {
+        this.requestTypeEnumDataDropDown = res.data
+      })
+      sysEnumDataListByField({
+        EntityName: 'SysTimer',
+        FieldName: 'TimerType',
+      }).then((res) => {
+        this.spareTimeTypeDropDown = res.data
+      })
+      sysEnumDataListByField({
+        EntityName: 'SysTimer',
+        FieldName: 'ExecuteType',
+      }).then((res) => {
+        this.executeTypeDropDown = res.data
+      })
+      this.formLoading = false
+    },
+
+    onChangeTimerType(e) {
+      this.VisibleTimerType = e === 0
+    },
+
+    onChangeRequestType(e) {
+      this.showHeaders = e !== 0
+      if (!this.showHeaders) {
+        if (this.LocalJobsDropDown.length === 0) {
+          sysTimersLocalJobList().then((res) => {
+            this.LocalJobsDropDown = res.data
+            this.JobNameData = res.data
+          })
+        } else {
+          this.JobNameData = this.LocalJobsDropDown
+        }
+        this.jobNameLabel = '浠诲姟鏂规硶'
+        this.jobNameMode = 'default'
+        this.jobNamePlaceholder = '璇烽�夋嫨浠诲姟鏂规硶'
+        this.requestParametersLabel = '閰嶇疆椤瑰弬鏁�'
+        this.requestParametersPlaceholder = '璇疯緭鍏ラ厤缃」鍙傛暟'
+      } else {
+        this.JobNameData = []
+        this.jobNameLabel = '浠诲姟鍚嶇О'
+        this.jobNameMode = 'combobox'
+        this.jobNamePlaceholder = '璇疯緭鍏ヤ换鍔″悕绉�'
+        this.requestParametersLabel = '璇锋眰鍙傛暟'
+        this.requestParametersPlaceholder = '璇疯緭鍏ヨ姹傚弬鏁�'
+      }
+    },
+
+    onChangeJobName(e) {
+      this.onChangeTimerType(e.timerType)
+      setTimeout(() => {
+        this.form.setFieldsValue({
+          requestUrl: e.requestUrl,
+          startNow: e.startNow,
+          doOnce: e.doOnce,
+          interval: e.interval,
+          timerType: e.timerType,
+          remark: e.remark,
+          executeType: e.executeType,
+          cron: e.cron,
+        })
+      }, 100)
+    },
+
+    handleSubmit() {
+      const {
+        form: { validateFields },
+      } = this
+      this.confirmLoading = true
+      validateFields((errors, values) => {
+        if (!errors) {
+          sysTimersEdit(values)
+            .then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.visible = false
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.form.resetFields()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + res.message)
+              }
+            })
+            .finally((res) => {
+              this.confirmLoading = false
+            })
+        } else {
+          this.confirmLoading = false
+        }
+      })
+    },
+    handleCancel() {
+      this.form.resetFields()
+      this.visible = false
+    },
+  },
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/timers/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/timers/index.vue
new file mode 100644
index 0000000..bf2afdb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/timers/index.vue
@@ -0,0 +1,264 @@
+<template>
+  <div>
+    <x-card v-if="hasPerm('sysTimers:page')">
+      <div slot="content" class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="浠诲姟鍚嶇О">
+                <a-input v-model="queryParam.timerName" allow-clear placeholder="璇疯緭鍏ヤ换鍔″悕绉�" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+              <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </x-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+        :rowKey="(record) => record.id"
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template slot="operator" v-if="hasPerm('sysTimers:add')">
+          <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysTimers:add')">鏂板瀹氭椂浠诲姟
+          </a-button>
+        </template>
+        <span slot="actionClass" slot-scope="text">
+          <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+        </span>
+        <span slot="remark" slot-scope="text">
+          <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+        </span>
+        <span slot="requestType" slot-scope="requestType">
+          {{ requestTypeFilter(requestType) }}
+        </span>
+        <span slot="jobStatus" slot-scope="text,record" v-if="hasPerm('sysTimers:start') || hasPerm('sysTimers:stop')">
+          <a-popconfirm
+            placement="top"
+            :title="text===0? '纭畾鍋滄璇ヤ换鍔★紵':'纭畾鍚姩璇ヤ换鍔★紵'"
+            @confirm="() => editjobStatusStatus(text,record)">
+            <a-badge :status="text===0? 'processing':'default'" />
+            <a>{{ jobStatusFilter(text) }}</a>
+          </a-popconfirm>
+        </span>
+        <span slot="jobStatus" v-else>
+          <a-badge :status="text===0? 'processing':'default'" />
+          {{ jobStatusFilter(text) }}
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('sysTimers:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('sysTimers:edit') & hasPerm('sysTimers:delete')" />
+          <a-popconfirm
+            v-if="hasPerm('sysTimers:delete')"
+            placement="topRight"
+            title="纭鍒犻櫎锛�"
+            @confirm="() => sysTimersDelete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @ok="handleOk" />
+      <edit-form ref="editForm" @ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+  import {
+    STable,
+    Ellipsis,
+    XCard
+  } from '@/components'
+  import {
+    sysTimersPage,
+    sysTimersDelete,
+    sysTimersStart,
+    sysTimersStop
+  } from '@/api/modular/system/timersManage'
+  import addForm from './addForm'
+  import editForm from './editForm'
+  import {
+    sysEnumDataList
+  } from '@/api/modular/system/enumManage'
+  export default {
+    // name: 'PosIndex',
+    components: {
+      XCard,
+      STable,
+      Ellipsis,
+      addForm,
+      editForm
+    },
+    data() {
+      return {
+        // 鏌ヨ鍙傛暟
+        queryParam: {},
+        // 琛ㄥご
+        columns: [{
+            title: '浠诲姟鍚嶇О',
+            dataIndex: 'jobName'
+          },
+          {
+            title: '璇锋眰鍦板潃',
+            dataIndex: 'requestUrl'
+          },
+          {
+            title: '璇锋眰绫诲瀷',
+            dataIndex: 'requestType',
+            scopedSlots: {
+              customRender: 'requestType'
+            }
+          },
+          {
+            title: '璇锋眰鍙傛暟',
+            dataIndex: 'requestParameters'
+          },
+          {
+            title: '闂撮殧',
+            dataIndex: 'interval'
+          },
+          {
+            title: 'Cron',
+            dataIndex: 'cron'
+          },
+          {
+            title: '鐘舵��',
+            dataIndex: 'timerStatus',
+            scopedSlots: {
+              customRender: 'jobStatus'
+            }
+          },
+          {
+            title: '鎵ц娆℃暟',
+            dataIndex: 'runNumber'
+          },
+          {
+            title: '澶囨敞',
+            dataIndex: 'remark',
+            width: 100
+          }
+        ],
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return sysTimersPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        selectedRowKeys: [],
+        selectedRows: [],
+        requestTypeEnumDataDropDown: []
+      }
+    },
+    created() {
+      this.sysEnumDataList()
+      if (this.hasPerm('sysTimers:edit') || this.hasPerm('sysTimers:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: {
+            customRender: 'action'
+          }
+        })
+      }
+    },
+    methods: {
+      /**
+       * 鑾峰彇鏋氫妇鏁版嵁
+       */
+      sysEnumDataList() {
+        sysEnumDataList({
+          enumName: 'RequestTypeEnum'
+        }).then((res) => {
+          this.requestTypeEnumDataDropDown = res.data
+        })
+      },
+      requestTypeFilter(requestType) {
+        // eslint-disable-next-line eqeqeq
+        const values = this.requestTypeEnumDataDropDown.filter(item => item.code == requestType)
+        if (values.length > 0) {
+          return values[0].value
+        }
+      },
+      jobStatusFilter(jobStatus) {
+        if (jobStatus === 0) {
+          return '杩愯涓�'
+        } else if (jobStatus === 1) {
+          return '宸插仠姝�'
+        } else if (jobStatus === 2) {
+          return '鎵ц澶辫触'
+        } else if (jobStatus === 3) {
+          return '宸插彇娑�'
+        }
+      },
+      /**
+       * 鍚姩鍋滄
+       */
+      editjobStatusStatus(code, record) {
+        // eslint-disable-next-line eqeqeq
+        if (code === 0) {
+          sysTimersStop({
+            id: record.id,
+            jobName: record.jobName
+          }).then(res => {
+            if (res.success) {
+              this.$message.success('鍋滄鎴愬姛')
+              this.$refs.table.refresh()
+            } else {
+              this.$message.error('鍋滄澶辫触锛�' + res.message)
+            }
+          })
+          // eslint-disable-next-line eqeqeq
+        } else if (code != 0) {
+          sysTimersStart(record).then(res => {
+            if (res.success) {
+              this.$message.success('鍚姩鎴愬姛')
+              this.$refs.table.refresh()
+            } else {
+              this.$message.error('鍚姩澶辫触锛�' + res.message)
+            }
+          })
+        }
+      },
+      sysTimersDelete(record) {
+        sysTimersDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+          }
+        }).catch((err) => {
+          this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+        })
+      },
+      toggleAdvanced() {
+        this.advanced = !this.advanced
+      },
+      handleOk() {
+        this.$refs.table.refresh()
+      },
+      onSelectChange(selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    },
+    mounted() {
+      // this.timer = setInterval(this.loadData, 5000)
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/user/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/user/addForm.vue
new file mode 100644
index 0000000..aac559f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/user/addForm.vue
@@ -0,0 +1,305 @@
+<template>
+  <a-modal
+    title="鐢ㄦ埛澧炲姞"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-divider orientation="left">鍩烘湰淇℃伅</a-divider>
+      <a-row :gutter="24">
+        <a-col :md="12" :sm="24">
+          <a-form :form="form">
+            <a-form-item
+              label="璐﹀彿"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-input placeholder="璇疯緭鍏ヨ处鍙�" v-decorator="['account', {rules: [{required: true, min: 5, message: '璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑璐﹀彿锛�'}]}]" />
+            </a-form-item>
+          </a-form>
+        </a-col>
+        <a-col :md="12" :sm="24" >
+          <a-form :form="form">
+            <a-form-item
+              label="濮撳悕"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-input placeholder="璇疯緭鍏ュ鍚�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ鍚嶏紒'}]}]" />
+            </a-form-item>
+          </a-form>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :md="12" :sm="24">
+          <a-form :form="form">
+            <a-form-item
+              label="瀵嗙爜"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-input
+                placeholder="璇疯緭鍏ュ瘑鐮�"
+                type="password"
+                v-decorator="['password', {rules: [{required: true, min: 5, message: '璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑瀵嗙爜锛�'},{
+                  validator: validateToNextPassword,
+                },]}]" />
+            </a-form-item>
+          </a-form>
+        </a-col>
+        <a-col :md="12" :sm="24">
+          <a-form :form="form">
+            <a-form-item
+              label="閲嶅瀵嗙爜"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-input
+                placeholder="璇峰啀娆¤緭鍏ュ瘑鐮�"
+                type="password"
+                v-decorator="['confirm', {rules: [{required: true, message: '璇峰啀娆¤緭鍏ュ瘑鐮侊紒'},
+                                                  {
+                                                    validator: compareToFirstPassword,
+                                                  }]}]" />
+            </a-form-item>
+          </a-form>
+        </a-col>
+      </a-row>
+      
+      <a-divider orientation="left">鍛樺伐淇℃伅</a-divider>
+      <a-row :gutter="24">
+        <a-col :md="12" :sm="24">
+          <a-form :form="form">
+            <a-form-item
+              label="鏈烘瀯"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-tree-select
+                v-decorator="['sysEmpParam.orgId', {rules: [{ required: true, message: '璇烽�夋嫨鏈烘瀯锛�' }]}]"
+                style="width: 100%"
+                :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+                :treeData="orgTree"
+                placeholder="璇烽�夋嫨鏈烘瀯"
+                treeDefaultExpandAll
+                @change="e => initrOrgName(e)"
+              >
+                <span slot="title" slot-scope="{ id }">{{ id }}</span>
+              </a-tree-select>
+            </a-form-item>
+            <a-form-item v-show="false">
+              <a-input v-decorator="['sysEmpParam.orgName']" />
+            </a-form-item>
+          </a-form>
+        </a-col>
+        <a-col :md="12" :sm="24">
+          <a-form :form="form">
+            <a-form-item
+              label="宸ュ彿"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-input placeholder="璇疯緭鍏ュ伐鍙�" v-decorator="['sysEmpParam.jobNum']" />
+            </a-form-item>
+          </a-form>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :md="24" :sm="24">
+          <a-form :form="form">
+            <a-form-item
+              label="鑱屼綅淇℃伅"
+              :labelCol="labelCol_JG"
+              :wrapperCol="wrapperCol_JG"
+              has-feedback
+            >
+              <a-select
+                mode="multiple"
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鑱屼綅淇℃伅"
+                v-decorator="['sysEmpParam.posIdList', {rules: [{ required: true, message: '璇烽�夋嫨鑱屼綅淇℃伅锛�' }]}]"
+              >
+                <a-select-option v-for="(item,index) in posList" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-form>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :md="12" :sm="24">
+          <a-form :form="form">
+            <a-form-item
+              label="鎵�灞炶溅闂�"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鎵�灞炶溅闂�"
+                v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]"
+              >
+                <a-select-option v-for="(item,index) in selectOptions.workShopTypes" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-form>
+        </a-col>
+        <a-col :md="12" :sm="24">
+          <a-form :form="form">
+            <a-form-item
+              label="鎵�灞炰骇绾�"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鎵�灞炰骇绾�"
+              >
+                <a-select-option v-for="(item,index) in selectOptions.lines" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-form>
+        </a-col>
+      </a-row>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { sysUserAdd,sysUserGetLines } from '@/api/modular/system/userManage'
+  import { getOrgTree, getOrgList } from '@/api/modular/system/orgManage'
+  import { sysPosList } from '@/api/modular/system/posManage'
+  import moment from 'moment'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 6 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 }
+        },
+        // 鏈烘瀯琛屾牱寮�
+        labelCol_JG: {
+          xs: { span: 24 },
+          sm: { span: 3 }
+        },
+        wrapperCol_JG: {
+          xs: { span: 24 },
+          sm: { span: 20 }
+        },
+        visible: false,
+        confirmLoading: false,
+        orgTree: [],
+        orgList: [],
+        posList: [],
+        form: this.$form.createForm(this),
+        selectOptions:{
+          workShopTypes:[],
+          lines:[]
+        }
+      }
+    },
+    created(){
+      this.selectOptions.workShopTypes = this.$options.filters['dictData']('les_workshop_type')
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      add () {
+        this.visible = true
+        this.getOrgDate()
+        this.getPosList()
+        this.getLinesList()
+      },
+      /**
+       * 鑾峰彇鏈烘瀯鏍戯紝骞跺姞杞戒簬琛ㄥ崟涓�
+       */
+      getOrgDate () {
+        getOrgTree().then((res) => {
+          this.orgTree = res.data
+        })
+        getOrgList().then((res) => {
+          this.orgList = res.data
+        })
+      },
+      /**
+       * 鑾峰彇鎵�灞炰骇绾縧ist鍒楄〃
+       */
+      getLinesList () {
+        if (this.selectOptions.lines!==0) {
+          sysUserGetLines().then((res) => {
+            this.selectOptions.lines = res.data
+          })
+        }
+      },
+      /**
+       * 鑾峰彇鑱屼綅list鍒楄〃
+       */
+      getPosList () {
+        sysPosList().then((res) => {
+          this.posList = res.data
+        })
+      },
+      compareToFirstPassword (rule, value, callback) {
+        const form = this.form
+        if (value && value !== form.getFieldValue('password')) {
+          // eslint-disable-next-line standard/no-callback-literal
+          callback('璇风‘璁や袱娆¤緭鍏ュ瘑鐮佺殑涓�鑷存�э紒')
+        } else {
+          callback()
+        }
+      },
+      validateToNextPassword (rule, value, callback) {
+        const form = this.form
+        if (value && this.confirmDirty) {
+          form.validateFields(['confirm'], { force: true })
+        }
+        callback()
+      },
+      /**
+       * 閫夋嫨鏍戞満鏋勶紝鍒濆鍖栨満鏋勫悕绉颁簬琛ㄥ崟涓�
+       */
+      initrOrgName (value) {
+        this.form.getFieldDecorator('sysEmpParam.orgName', { initialValue: this.orgList.find(item => value === item.id).name })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysUserAdd(values).then((res) => {
+              if (res.success) {
+                this.$message.success('鏂板鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/user/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/user/editForm.vue
new file mode 100644
index 0000000..7706877
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/user/editForm.vue
@@ -0,0 +1,291 @@
+/* eslint-disable vue/no-template-shadow */
+<template>
+  <a-modal
+    title="缂栬緫鐢ㄦ埛"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="confirmLoading">
+      <a-divider orientation="left">鍩烘湰淇℃伅</a-divider>
+      <a-row :gutter="24">
+        <a-col :md="12" :sm="24">
+          <a-form :form="form">
+            <a-form-item
+              style="display: none;"
+            >
+              <a-input v-decorator="['id']" />
+            </a-form-item>
+            <a-form-item
+              label="璐﹀彿"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-input placeholder="璇疯緭鍏ヨ处鍙�" v-decorator="['account', {rules: [{required: true, min: 5, message: '璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑璐﹀彿锛�'}]}]" />
+            </a-form-item>
+          </a-form>
+        </a-col>
+        <a-col :md="12" :sm="24" >
+          <a-form :form="form">
+            <a-form-item
+              label="濮撳悕"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-input placeholder="璇疯緭鍏ュ鍚�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ鍚嶏紒'}]}]" />
+            </a-form-item>
+          </a-form>
+        </a-col>
+      </a-row>
+      <a-divider orientation="left">鍛樺伐淇℃伅</a-divider>
+      <a-row :gutter="24">
+        <a-col :md="12" :sm="24">
+          <a-form :form="form">
+            <a-form-item
+              label="鏈烘瀯"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-tree-select
+                v-decorator="['sysEmpParam.orgId', {rules: [{ required: true, message: '璇烽�夋嫨鏈烘瀯锛�' }]}]"
+                style="width: 100%"
+                :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+                :treeData="orgTree"
+                placeholder="璇烽�夋嫨鏈烘瀯"
+                treeDefaultExpandAll
+                @change="e => initrOrgName(e)"
+              >
+                <span slot="title" slot-scope="{ id }">{{ id }}</span>
+              </a-tree-select>
+            </a-form-item>
+            <a-form :form="form">
+              <a-form-item v-show="false">
+                <a-input v-decorator="['sysEmpParam.orgName']" />
+              </a-form-item>
+            </a-form>
+          </a-form>
+        </a-col>
+        <a-col :md="12" :sm="24">
+          <a-form :form="form">
+            <a-form-item
+              label="宸ュ彿"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-input placeholder="璇疯緭鍏ュ伐鍙�" v-decorator="['sysEmpParam.jobNum']" />
+            </a-form-item>
+          </a-form>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :md="24" :sm="24">
+          <a-form :form="form">
+            <a-form-item
+              label="鑱屼綅淇℃伅"
+              :labelCol="labelCol_JG"
+              :wrapperCol="wrapperCol_JG"
+              has-feedback
+            >
+              <a-select
+                mode="multiple"
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鑱屼綅淇℃伅"
+                v-decorator="['sysEmpParam.posIdList', {rules: [{ required: true, message: '璇烽�夋嫨鑱屼綅淇℃伅锛�' }]}]"
+              >
+                <a-select-option v-for="(item,index) in posList" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-form>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :md="12" :sm="24">
+          <a-form :form="form">
+            <a-form-item
+              label="鎵�灞炶溅闂�"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鎵�灞炶溅闂�"
+                v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]"
+              >
+                <a-select-option v-for="(item,index) in selectOptions.workShopTypes" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-form>
+        </a-col>
+        <a-col :md="12" :sm="24">
+          <a-form :form="form">
+            <a-form-item
+              label="鎵�灞炰骇绾�"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              has-feedback
+            >
+              <a-select
+                style="width: 100%"
+                placeholder="璇烽�夋嫨鎵�灞炰骇绾�"
+              >
+                <a-select-option v-for="(item,index) in selectOptions.lines" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-form>
+        </a-col>
+      </a-row>
+    </a-spin>
+  </a-modal>
+</template>
+<script>
+  import { sysUserEdit, sysUserDetail, sysUserGetLines } from '@/api/modular/system/userManage'
+  import { getOrgTree, getOrgList } from '@/api/modular/system/orgManage'
+  import { sysPosList } from '@/api/modular/system/posManage'
+  import moment from 'moment'
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 6 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 }
+        },
+        // 鏈烘瀯琛屾牱寮�
+        labelCol_JG: {
+          xs: { span: 24 },
+          sm: { span: 3 }
+        },
+        wrapperCol_JG: {
+          xs: { span: 24 },
+          sm: { span: 20 }
+        },
+        visible: false,
+        confirmLoading: false,
+        orgTree: [],
+        orgList: [],
+        posList: [],
+        form: this.$form.createForm(this),
+        selectOptions:{
+          workShopTypes:[],
+          lines:[]
+        }
+      }
+    },
+    created(){
+      this.selectOptions.workShopTypes = this.$options.filters['dictData']('les_workshop_type')
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.confirmLoading = true
+        this.visible = true
+        this.getOrgData()
+        this.getPosList()
+        this.getLinesList()
+        // 鍩烘湰淇℃伅鍔犱汉琛ㄥ崟
+        setTimeout(() => {
+          this.form.setFieldsValue(
+            {
+              id: record.id,
+              account: record.account,
+              name: record.name
+            }
+          )
+        }, 100)
+        // 鑱屼綅淇℃伅鍔犲叆琛ㄥ崟
+        this.getUserDetaile(record.id)
+      },
+      /**
+       * 閫氳繃鐢ㄦ埛ID鏌ヨ鍑虹敤鎴疯鎯咃紝灏嗚亴浣嶄俊鎭~鍏�
+       * @param id
+       */
+      getUserDetaile (id) {
+        sysUserDetail({ 'id': id }).then((res) => {
+          this.form.getFieldDecorator('workShopType', { initialValue: String(res.data.workShopType) })
+          this.form.getFieldDecorator('productionlineId', { initialValue: res.data.productionlineId })
+          let SysEmpInfo = res.data.sysEmpInfo
+          let Positions = []
+          SysEmpInfo.positions.forEach(item => {
+            Positions.push(item.posId)
+          })
+          this.form.getFieldDecorator('sysEmpParam.orgName', { initialValue: SysEmpInfo.orgName })
+          this.form.getFieldDecorator('sysEmpParam.posIdList', { initialValue: Positions })
+          this.form.getFieldDecorator('sysEmpParam.jobNum', { initialValue: SysEmpInfo.jobNum })
+          this.form.getFieldDecorator('sysEmpParam.orgId', { initialValue: SysEmpInfo.orgId })
+          this.confirmLoading = false
+        })
+      },
+      /**
+       * 鑾峰彇鏈烘瀯鏁版嵁锛屽苟鍔犺浇浜庤〃鍗曚腑
+       */
+      getOrgData () {
+        getOrgTree().then((res) => {
+          this.orgTree = res.data
+        })
+        getOrgList().then((res) => {
+          this.orgList = res.data
+        })
+      },
+      /**
+       * 鑾峰彇鎵�灞炰骇绾縧ist鍒楄〃
+       */
+      getLinesList () {
+        if (this.selectOptions.lines!==0) {
+          sysUserGetLines().then((res) => {
+            this.selectOptions.lines = res.data
+          })
+        }
+      },
+      /**
+       * 鑾峰彇鑱屼綅list鍒楄〃
+       */
+      getPosList () {
+        sysPosList().then((res) => {
+          this.posList = res.data
+        })
+      },
+      /**
+       * 閫夋嫨鏍戞満鏋勶紝鍒濆鍖栨満鏋勫悕绉颁簬琛ㄥ崟涓�
+       */
+      initrOrgName (value) {
+        this.form.getFieldDecorator('sysEmpParam.orgName', { initialValue: this.orgList.find(item => value === item.id).name })
+      },
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysUserEdit(values).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/user/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/user/index.vue
new file mode 100644
index 0000000..100784f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/user/index.vue
@@ -0,0 +1,372 @@
+<template>
+  <a-row :gutter="24">
+    <a-col :md="5" :sm="24" style="padding: 0 0 0 0;">
+      <a-card :bordered="false" :loading="treeLoading" >
+        <div v-if="this.orgTree != ''">
+          <a-tree
+            :treeData="orgTree"
+            v-if="orgTree.length"
+            @select="handleClick"
+            :defaultExpandAll="true"
+            :defaultExpandedKeys="defaultExpandedKeys"
+            :replaceFields="replaceFields" />
+        </div>
+        <div v-else>
+          <a-empty :image="simpleImage" />
+        </div>
+      </a-card>
+    </a-col>
+    <a-col :md="19" :sm="24">
+      <x-card v-if="hasPerm('sysUser:page')">
+        <div slot="content" class="table-page-search-wrapper">
+          <a-form layout="inline">
+            <a-row :gutter="48">
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鍏抽敭璇�">
+                  <a-input v-model="queryParam.searchValue" allow-clear placeholder="璇疯緭鍏ュ鍚嶃�佽处鍙�" />
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="鐘舵��">
+                  <a-select v-model="queryParam.searchStatus" allow-clear placeholder="璇烽�夋嫨鐘舵��" default-value="0">
+                    <a-select-option v-for="(item,index) in statusDictTypeDropDown" :key="index" :value="item.code">
+                      {{ item.value }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="8" :sm="24">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
+      </x-card>
+      <a-card :bordered="false">
+        <s-table
+          ref="table"
+          :columns="columns"
+          :data="loadData"
+          :alert="true"
+          :rowKey="(record) => record.id"
+          :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+          <template slot="operator">
+            <a-button type="primary" v-if="hasPerm('sysUser:add')" icon="plus" @click="$refs.addForm.add()">鏂板鐢ㄦ埛
+            </a-button>
+            <!-- <a-upload
+              :customRequest="customRequest"
+              :multiple="true"
+              :showUploadList="false"
+              name="file"
+              v-if="hasPerm('sysUser:import')">
+              <a-button icon="up-circle">瀵煎叆</a-button>
+            </a-upload>
+            <a-button v-if="hasPerm('sysUser:export')" icon="down-circle" @click="sysUserExport()">瀵煎嚭
+            </a-button> -->
+          </template>
+          <span slot="status" slot-scope="text,record" v-if="hasPerm('sysUser:changeStatus')">
+            <a-popconfirm
+              placement="top"
+              :title="text===0? '纭畾鍋滅敤璇ョ敤鎴凤紵':'纭畾鍚敤璇ョ敤鎴凤紵'"
+              @confirm="() => editUserStatus(text,record)">
+              <a>{{ statusFilter(text) }}</a>
+            </a-popconfirm>
+          </span>
+          <span slot="status" v-else>
+            {{ statusFilter(text) }}
+          </span>
+          <span slot="action" slot-scope="text, record">
+            <a v-if="hasPerm('sysUser:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+            <a-divider type="vertical" v-if="hasPerm('sysUser:edit')" />
+            <a-dropdown
+              v-if="hasPerm('sysUser:resetPwd') || hasPerm('sysUser:grantRole') || hasPerm('sysUser:grantData') || hasPerm('sysUser:delete')">
+              <a class="ant-dropdown-link">
+                鏇村
+                <a-icon type="down" />
+              </a>
+              <a-menu slot="overlay">
+                <a-menu-item v-if="hasPerm('sysUser:resetPwd')">
+                  <a-popconfirm placement="topRight" title="纭閲嶇疆瀵嗙爜锛�" @confirm="() => resetPwd(record)">
+                    <a>閲嶇疆瀵嗙爜</a>
+                  </a-popconfirm>
+                </a-menu-item>
+                <a-menu-item v-if="hasPerm('sysUser:grantRole')">
+                  <a @click="$refs.userRoleForm.userRole(record)">鎺堟潈瑙掕壊</a>
+                </a-menu-item>
+                <a-menu-item v-if="hasPerm('sysUser:grantData')">
+                  <a @click="$refs.userOrgForm.userOrg(record)">鎺堟潈鏁版嵁</a>
+                </a-menu-item>
+                <a-menu-item v-if="hasPerm('sysUser:delete')">
+                  <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysUserDelete(record)">
+                    <a>鍒犻櫎</a>
+                  </a-popconfirm>
+                </a-menu-item>
+              </a-menu>
+            </a-dropdown>
+          </span>
+        </s-table>
+        <add-form ref="addForm" @ok="handleOk" />
+        <edit-form ref="editForm" @ok="handleOk" />
+        <user-role-form ref="userRoleForm" @ok="handleOk" />
+        <user-org-form ref="userOrgForm" @ok="handleOk" />
+      </a-card>
+    </a-col>
+  </a-row>
+</template>
+<script>
+  import {
+    STable,
+    XCard
+  } from '@/components'
+  import {
+    Empty
+  } from 'ant-design-vue'
+  import {
+    getOrgTree
+  } from '@/api/modular/system/orgManage'
+  import {
+    getUserPage,
+    sysUserDelete,
+    sysUserChangeStatus,
+    sysUserResetPwd,
+    sysUserExport,
+    sysUserImport
+  } from '@/api/modular/system/userManage'
+  import {
+    sysDictTypeDropDown
+  } from '@/api/modular/system/dictManage'
+  import addForm from './addForm'
+  import editForm from './editForm'
+  import userRoleForm from './userRoleForm'
+  import userOrgForm from './userOrgForm'
+  export default {
+    components: {
+      XCard,
+      STable,
+      addForm,
+      editForm,
+      userRoleForm,
+      userOrgForm
+    },
+    data() {
+      return {
+        // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+        advanced: false,
+        // 鏌ヨ鍙傛暟
+        queryParam: {},
+        // 琛ㄥご
+        columns: [{
+            title: '璐﹀彿',
+            dataIndex: 'account'
+          },
+          {
+            title: '濮撳悕',
+            dataIndex: 'name'
+          },
+          {
+            title: '鐘舵��',
+            dataIndex: 'status',
+            scopedSlots: {
+              customRender: 'status'
+            }
+          }
+        ],
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+          return getUserPage(Object.assign(parameter, this.queryParam)).then((res) => {
+            return res.data
+          })
+        },
+        orgTree: [],
+        selectedRowKeys: [],
+        selectedRows: [],
+        defaultExpandedKeys: [],
+        statusDictTypeDropDown: [],
+        treeLoading: true,
+        simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
+        replaceFields: {
+          key: 'id'
+        }
+      }
+    },
+    created() {
+      /**
+       * 鑾峰彇鍒版満鏋勬爲锛屽睍寮�椤剁骇涓嬫爲鑺傜偣锛岃�冭檻鍒板悗鏈熸暟鎹噺鍙樺ぇ锛屼笉寤鸿鍏ㄩ儴灞曞紑
+       */
+      getOrgTree(Object.assign(this.queryParam)).then(res => {
+        this.treeLoading = false
+        if (!res.success) {
+          return
+        }
+        this.orgTree = res.data
+        for (var item of res.data) {
+          // eslint-disable-next-line eqeqeq
+          if (item.parentId == 0) {
+            this.defaultExpandedKeys.push(item.id)
+          }
+        }
+      })
+      this.sysDictTypeDropDown()
+      if (this.hasPerm('sysUser:edit') || this.hasPerm('sysUser:resetPwd') || this.hasPerm('sysUser:grantRole') || this
+        .hasPerm('sysUser:grantData') || this.hasPerm('sysUser:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: {
+            customRender: 'action'
+          }
+        })
+      }
+    },
+    methods: {
+      statusFilter(status) {
+        // eslint-disable-next-line eqeqeq
+        const values = this.statusDictTypeDropDown.filter(item => item.code == status)
+        if (values.length > 0) {
+          return values[0].value
+        }
+      },
+      /**
+       * 鑾峰彇瀛楀吀鏁版嵁
+       */
+      sysDictTypeDropDown(text) {
+        sysDictTypeDropDown({
+          code: 'common_status'
+        }).then((res) => {
+          this.statusDictTypeDropDown = res.data
+        })
+      },
+      /**
+       * 淇敼鐢ㄦ埛鐘舵��
+       */
+      editUserStatus(code, record) {
+        // eslint-disable-next-line no-unused-vars
+        const status = 0
+        // eslint-disable-next-line eqeqeq
+        if (code == 0) {
+          this.status = 1
+          // eslint-disable-next-line eqeqeq
+        } else if (code == 1) {
+          this.status = 0
+        }
+        sysUserChangeStatus({
+          id: record.id,
+          status: this.status
+        }).then(res => {
+          if (res.success) {
+            this.$message.success('鎿嶄綔鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鎿嶄綔澶辫触锛�' + res.message)
+          }
+        })
+      },
+      /**
+       * 閲嶇疆瀵嗙爜
+       */
+      resetPwd(record) {
+        sysUserResetPwd({
+          id: record.id
+        }).then(res => {
+          if (res.success) {
+            this.$message.success('閲嶇疆鎴愬姛')
+            // this.$refs.table.refresh()
+          } else {
+            this.$message.error('閲嶇疆澶辫触锛�' + res.message)
+          }
+        })
+      },
+      /**
+       * 鍒犻櫎鐢ㄦ埛
+       * @param record
+       */
+      sysUserDelete(record) {
+        sysUserDelete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+          }
+        }).catch((err) => {
+          this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+        })
+      },
+      // 瀵煎嚭鐢ㄦ埛鏂囦欢
+      sysUserExport(e) {
+        this.cardLoading = true
+        sysUserExport().then((res) => {
+          this.cardLoading = false
+          this.downloadfile(res)
+          // eslint-disable-next-line handle-callback-err
+        }).catch((err) => {
+          this.cardLoading = false
+          this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒')
+        })
+      },
+      downloadfile(res) {
+        var blob = new Blob([res.data], {
+          type: 'application/octet-stream;charset=UTF-8'
+        })
+        var contentDisposition = res.headers['content-disposition']
+        const filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/
+        const matches = filenameRegex.exec(contentDisposition)
+        const filename = matches[1].replace(/['"]/g, '')
+        var downloadElement = document.createElement('a')
+        var href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺�
+        var reg = /^["](.*)["]$/g
+        downloadElement.style.display = 'none'
+        downloadElement.href = href
+        downloadElement.download = decodeURI(filename.replace(reg, '$1')) // 涓嬭浇鍚庢枃浠跺悕
+        document.body.appendChild(downloadElement)
+        downloadElement.click() // 鐐瑰嚮涓嬭浇
+        document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌
+        window.URL.revokeObjectURL(href)
+      },
+      /**
+       * 涓婁紶鐢ㄦ埛鏂囦欢
+       */
+      customRequest(data) {
+        const formData = new FormData()
+        formData.append('file', data.file)
+        sysUserImport(formData).then((res) => {
+          if (res.success) {
+            this.$message.success('涓婁紶鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('涓婁紶澶辫触锛�' + res.message)
+          }
+        })
+      },
+      /**
+       * 鐐瑰嚮宸︿晶鏈烘瀯鏍戞煡璇㈠垪琛�
+       */
+      handleClick(e) {
+        this.queryParam = {
+          'sysEmpParam.orgId': e.toString()
+        }
+        this.$refs.table.refresh(true)
+      },
+      toggleAdvanced() {
+        this.advanced = !this.advanced
+      },
+      handleOk() {
+        this.$refs.table.refresh()
+      },
+      onSelectChange(selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/user/userOrgForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/user/userOrgForm.vue
new file mode 100644
index 0000000..1debf86
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/user/userOrgForm.vue
@@ -0,0 +1,150 @@
+<template>
+  <a-modal
+    title="鎺堟潈鏁版嵁"
+    :width="600"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+    <a-spin :spinning="formLoading">
+      <a-form :form="form">
+        <a-form-item
+          label="閫夋嫨鏈烘瀯"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+        >
+
+          <a-tree
+            v-model="checkedKeys"
+            checkable
+            :auto-expand-parent="autoExpandParent"
+            :expanded-keys="expandedKeys"
+            :tree-data="orgTreeData"
+            :selected-keys="selectedKeys"
+            :replaceFields="replaceFields"
+            @expand="onExpand"
+            @select="onSelect"
+          />
+        </a-form-item>
+
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { getOrgTree } from '@/api/modular/system/orgManage'
+  import { sysUserOwnData, sysUserGrantData } from '@/api/modular/system/userManage'
+
+  export default {
+    data () {
+      return {
+        labelCol: {
+          style: { 'padding-right': '20px' },
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        orgTreeData: [],
+        expandedKeys: [],
+        checkedKeys: [],
+        visible: false,
+        confirmLoading: false,
+        formLoading: true,
+        autoExpandParent: true,
+        selectedKeys: [],
+        userEntity: [],
+        replaceFields: {
+          key: 'id'
+        },
+        form: this.$form.createForm(this)
+      }
+    },
+
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      userOrg (record) {
+        this.userEntity = record
+        this.visible = true
+        // 鑾峰彇鏈烘瀯鏍�
+        this.getOrgTree()
+        // 宸插叧鑱旀暟鎹�
+        this.sysUserOwnData(this.userEntity)
+      },
+
+      /**
+       * 鑾峰彇鏈烘瀯鏍�
+       */
+      getOrgTree () {
+        this.formLoading = true
+        getOrgTree().then((res) => {
+           if (res.success) {
+             this.orgTreeData = res.data
+             // 榛樿灞曞紑
+             this.orgTreeData.forEach(item => {
+               this.expandedKeys.push(item.id)
+             })
+           }
+        })
+      },
+
+      /**
+       * 姝ょ敤鎴峰凡鏈夋暟鎹垪琛�
+       */
+      sysUserOwnData (record) {
+        sysUserOwnData({ id: record.id }).then((res) => {
+          if (res.success) {
+            this.checkedKeys = res.data
+          }
+          this.formLoading = false
+        })
+      },
+
+      onExpand (expandedKeys) {
+        this.expandedKeys = expandedKeys
+        this.autoExpandParent = false
+      },
+      onCheck (checkedKeys) {
+        this.checkedKeys = checkedKeys
+      },
+      onSelect (selectedKeys, info) {
+        this.selectedKeys = selectedKeys
+      },
+
+      handleSubmit () {
+        const { form: { validateFields } } = this
+        this.confirmLoading = true
+        validateFields((errors, values) => {
+          if (!errors) {
+            sysUserGrantData({ id: this.userEntity.id, grantOrgIdList: this.checkedKeys }).then((res) => {
+              if (res.success) {
+                this.$message.success('鎺堟潈鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('鎺堟潈澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+          } else {
+            this.confirmLoading = false
+          }
+        })
+      },
+      handleCancel () {
+        this.form.resetFields()
+        // 娓呯┖宸查�夋嫨鐨�
+        this.checkedKeys = []
+        // 娓呯┖宸插睍寮�鐨�
+        this.expandedKeys = []
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/user/userRoleForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/user/userRoleForm.vue
new file mode 100644
index 0000000..20c4d9b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/user/userRoleForm.vue
@@ -0,0 +1,117 @@
+<template>
+  <a-modal
+    title="鎺堟潈瑙掕壊"
+    :width="800"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleSubmit"
+    @cancel="handleCancel"
+  >
+
+    <a-card :bordered="false">
+
+      <div>
+        <a-table
+          size="middle"
+          :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+          :columns="columns"
+          :dataSource="loadData"
+          :pagination="false"
+          :loading="loading"
+          :rowKey="(record) => record.id"
+        />
+      </div>
+
+    </a-card>
+
+  </a-modal>
+</template>
+
+<script>
+  import { getRolePage } from '@/api/modular/system/roleManage'
+  import { sysUserOwnRole, sysUserGrantRole } from '@/api/modular/system/userManage'
+
+  const columns = [
+    {
+      title: '瑙掕壊鍚嶇О',
+      dataIndex: 'name'
+    },
+    {
+      title: '鍞竴缂栫爜',
+      dataIndex: 'code'
+    }
+  ]
+
+  export default {
+    name: 'UserRoleIndex',
+
+    data () {
+      return {
+        columns,
+        loadData: [],
+        selectedRowKeys: [], // Check here to configure the default column
+        loading: true,
+        visible: false,
+        confirmLoading: false,
+        recordEntity: []
+      }
+    },
+    computed: {
+      hasSelected () {
+        return this.selectedRowKeys.length > 0
+      }
+    },
+    methods: {
+      // 鍒濆鍖栨柟娉�
+      userRole (record) {
+        this.recordEntity = record
+        this.visible = true
+        // 鍔犺浇宸叉湁鏁版嵁
+        this.sysUserOwnRole()
+        // 鑾峰彇鍏ㄩ儴鍒楄〃,鏃犻渶鍒嗛〉
+        getRolePage({pageSize:9999}).then((res) => {
+          this.loadData = res.data.rows
+        })
+      },
+
+      /**
+       * 鑾峰彇鐢ㄦ埛宸叉湁瑙掕壊
+       */
+      sysUserOwnRole () {
+        this.loading = true
+        sysUserOwnRole({ id: this.recordEntity.id }).then((res) => {
+          // 閫変腑澶氶�夋
+          this.selectedRowKeys = res.data
+          this.loading = false
+        })
+      },
+
+      onSelectChange (selectedRowKeys) {
+        this.selectedRowKeys = selectedRowKeys
+      },
+
+      handleSubmit () {
+        // eslint-disable-next-line no-unused-expressions
+        this.confirmLoading = false
+        this.visible = false
+        sysUserGrantRole({ id: this.recordEntity.id, grantRoleIdList: this.selectedRowKeys }).then((res) => {
+               if (res.success) {
+                 this.$message.success('鎺堟潈鎴愬姛')
+                 this.confirmLoading = false
+                 this.$emit('ok', this.recordEntity)
+                 this.handleCancel()
+               } else {
+                 this.$message.error('鎺堟潈澶辫触锛�' + JSON.stringify(res.message))
+               }
+             }).finally((res) => {
+               this.confirmLoading = false
+             })
+      },
+      handleCancel () {
+        this.recordEntity = []
+        this.selectedRowKeys = []
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/builderWorkFlow.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/builderWorkFlow.vue
new file mode 100644
index 0000000..6f1bd80
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/builderWorkFlow.vue
@@ -0,0 +1,443 @@
+<template>
+  <div>
+    <a-row :gutter="20">
+      <a-col :span="2" class="leftboard">
+        <a-card :bordered="false" style="height: 700px">
+          <a-radio-group size="small" >
+            <a-radio-button value="add" @click="zoomAdd" v-show="false">
+              <a-icon type="plus-circle" />
+            </a-radio-button>
+            <a-radio-button value="minus" style="margin-left:5px" @click="zoomSub" v-show="false">
+              <a-icon type="minus-circle" />
+            </a-radio-button>
+          </a-radio-group>
+          <a-divider />
+          <draggable
+            :list="boardlist"
+            :group="{ name: 'board', pull: 'clone', put: false }"
+            @change="log"
+            @end="onEnd"
+            :options="draggableOptions"
+            style="margin-top: 60px;">
+            <template v-for="(node, index) in nodesourcelist">
+              <div :id="node.key" style="margin-top:20px; margin-left:-5px" :key="index">
+                <a-button :type="node.type" class="itembutton">
+                  {{ node.title }}
+                </a-button>
+              </div>
+            </template>
+          </draggable>
+        </a-card>
+      </a-col>
+      <a-col :span="16">
+        <a-card :bordered="true" style="height: 700px;overflow-x: auto;">
+          <div ref="efContainer" id="diagramContainer" class="nodeboard">
+            <template v-for="(node, index) in value">
+              <flow-nodeshow
+                :id="node.key"
+                :key="index"
+                :node="node"
+                :tabValue="tabValue"
+                @nodeclick="setnode(node)"
+                @changeNodeSite="changeNodeSite"
+                :currentNode="currentNode"></flow-nodeshow>
+            </template>
+          </div>
+        </a-card>
+      </a-col>
+      <a-col :span="6" class="rightboard">
+        <a-card :bordered="false" style="height: 700px">
+          <node-property
+            :nodelist="value"
+            :formlistsource="formlistsource"
+            ref="nodeproperty"
+            :currentNode="currentNode"
+            :conditionNode="conditionNode"
+            :isclickLine="isclickLine"
+            :activekey="tabValue"
+            :formId="formId"
+            @changeNextNode="changeNextNode"
+            @directionConnection="directionConnection"
+            @nextStepConnection="nextStepConnection"
+            @renameConnection="renameConnection"
+            @deleteConnection="deleteConnection"
+            @deleteNode="removeNode"
+          ></node-property>
+        </a-card>
+      </a-col>
+    </a-row>
+  </div>
+</template>
+
+<script>
+import NodeProperty from './store/nodeProperty.vue'
+import { createconditionFlowNodeDetail } from './store/conditionflownode'
+// import { createConditionsDetail } from './store/conditions'
+import { sourcenodes } from './store/sourcenodes'
+import FlowNodeshow from './store/flowNodeGroup'
+import { jsPlumb } from 'jsplumb'
+import draggable from 'vuedraggable'
+export default {
+  name: 'Home1',
+  components: {
+    NodeProperty,
+    draggable,
+    FlowNodeshow
+  },
+   props: {
+     // 鏄惁闇�瑕佸垵濮嬪寲鍔犺浇宸叉湁鐨刦low
+    localflow: {
+      type: Array,
+      default: null
+    },
+    propformId: {
+      type: Number,
+      default: null
+    }
+  },
+  data() {
+    return {
+        zoom: 1,
+        formId: this.propformId,
+        draggableOptions: {
+        preventOnFilter: false,
+        sort: false,
+        disabled: false,
+        ghostClass: 'tt',
+        // 涓嶄娇鐢℉5鍘熺敓鐨勯厤缃�
+        forceFallback: true
+        // 鎷栨嫿鐨勬椂鍊欐牱寮�
+        // fallbackClass: 'flow-node-draggable'
+                },
+      positionchange: { id: '', position: [] },
+      // 鏍峰紡
+      common: {
+          isSource: true, // 鎷栧姩绔偣鏃跺彲浠ヨ嚜鍔ㄥ垱寤鸿繛鎺�
+          isTarget: true,
+          labelStyle: { cssClass: 'flowLabel' },
+          Endpoint: ['Dot', { radius: 5, cssClass: 'ef-dot', hoverClass: 'ef-dot-hover' }],
+          connector: ['Flowchart'], // 杩炵嚎鐨勫舰鐘�     Bezier: 璐濆灏旀洸绾�  Flowchart: 鍏锋湁90搴﹁浆鎶樼偣鐨勬祦绋嬬嚎 StateMachine: 鐘舵�佹満 Straight: 鐩寸嚎
+          connectorStyle: { outlineStroke: '#3399FF', strokeWidth: 1 }, // 杩炴帴绾挎牱寮忥紙鎷栧姩鑷姩杩炴帴鏃剁敓鏁堬級
+          maxConnections: -1, // 闄愬埗杩炵嚎鐨勬暟閲忥紝-1涓轰笉闄愬埗
+          connectorHoverStyle: { strokeWidth: 3, outlineStroke: 'red' },
+         // Container: 'diagramContainer',
+          // overlays: [['Arrow', { width: 12, length: 12, location: 0.5 }]] // 闀垮 浣嶇疆
+          connectorOverlays: [
+            [
+              'Arrow',
+              {
+                width: 10,
+                length: 10,
+                location: 0.8
+              }
+            ]
+          ],
+          paintStyle: {
+          fill: 'white',
+          outlineStroke: 'orange',
+          strokeWidth: 2
+          },
+          hoverPaintStyle: {
+           outlineStroke: 'lightblue'
+          }
+      },
+      formlistsource: [],
+      plumbIns: null,
+      // 灞炴�ч〉閫夋嫨椤�
+      tabValue: 'node',
+      // 鏄惁閫変腑浜嗚繛绾�
+      isclickLine: false,
+      // 褰撳墠閫変腑鐨勮繛绾�
+      currentConnection: null,
+      // 鑺傜偣灞炴��
+      currentNode: null,
+      // 杩炵嚎灞炴��
+      conditionNode: null,
+      nodesourcelist: [],
+      value: [],
+      testnode: null,
+      conditionflownode: {
+        label: '',
+        nodeId: '',
+        conditions: {
+          field: '',
+          operator: '',
+          value: ''
+        }
+      },
+      WorkflowDefinition: {
+        color: '#2d8cf0',
+        version: 1,
+        nodes: null
+      },
+      boardlist: []
+    }
+  },
+  created() {
+    this.nodesourcelist = sourcenodes
+     },
+  mounted() {
+    this.plumbIns = jsPlumb.getInstance(this.common)
+    this.plumbIns.importDefaults({
+          // 涓嶅厑璁告柇寮�杩炵嚎锛屽彧鑳介�氳繃鍒犻櫎杩炵嚎
+           ConnectionsDetachable: false
+        })
+    this.$nextTick(() => {
+      this.plumbIns.ready(() => {
+        this.plumbIns.bind('connection', this.onConnection)
+        this.plumbIns.bind('click', this.onClickConnection)
+        this.plumbIns.bind('connectionMoved', this.onMoved)
+        // this.plumbIns.setContainer(this.$refs.efContainer)
+        if (this.localflow) {
+          this.value = this.localflow
+          if (this.value.length > 0) {
+            this.initWorkflow()
+          }
+        }
+      })
+    })
+  },
+  computed: {},
+  methods: {
+    // 缂╂斁
+     zoomAdd () {
+      if (this.zoom >= 1) {
+          return
+      }
+      this.zoom = this.zoom + 0.1
+      this.$refs.efContainer.style.transform = `scale(${this.zoom})`
+      this.plumbIns.setZoom(this.zoom)
+    },
+    zoomSub () {
+      if (this.zoom <= 0) {
+          return
+      }
+      this.zoom = this.zoom - 0.1
+      this.$refs.efContainer.style.transform = `scale(${this.zoom})`
+      this.plumbIns.setZoom(this.zoom)
+    },
+    // 鍒犻櫎鑺傜偣
+    removeNode() {
+      this.value.forEach((node) => {
+      node.nextNodes = node.nextNodes.filter(
+        (u) => u.nodeId !== this.currentNode.key
+      )
+      node.parentNodes = node.parentNodes.filter(
+        (u) => u !== this.currentNode.key
+      )
+    })
+    this.plumbIns.remove(this.currentNode.key)
+    this.value.filter(i => i.key === this.currentNode.key)[0].enable = false
+    },
+    onMoved() {
+    },
+    // 鍒濆鍖栧姞杞藉凡鏈夌殑flow
+    initWorkflow() {
+    this.value.forEach(item => {
+      this.$nextTick(() => {
+        this.addNode(item)
+      })
+      setTimeout(() => {
+      item.nextNodes.forEach((nnode) => {
+      this.plumbIns.connect({
+      uuids: [nnode.source, nnode.target]
+       })
+      })
+      })
+      }, 10000)
+     },
+    // 鏀瑰彉鑺傜偣鐨勪綅缃�
+    changeNodeSite (data) {
+        this.value.filter(u => u.key === data.nodeId)[0].position = [data.left.substr(0, data.left.length - 2), data.top.substr(0, data.top.length - 2)]
+    },
+    // 璁惧畾杩炵嚎鏍囩
+    renameConnection(label) {
+         var conn = this.plumbIns.getConnections({
+        source: this.currentConnection.sourceId,
+        target: this.currentConnection.targetId
+      })[0]
+      if (this.currentConnection !== null) {
+        conn.setLabel(label)
+      }
+    },
+    changeNextNode(parntsNodeID) {
+
+    },
+    directionConnection(direction) {
+     this.currentNode.direction = direction
+    },
+    nextStepConnection(nextstep) {
+     this.currentNode.nextStep = nextstep
+    },
+    getNode(key) {
+      return this.value.filter(u => u.key === key)[0]
+    },
+    // 鍒犻櫎杩炵嚎
+    deleteConnection() {
+      const source = this.getNode(this.currentConnection.sourceId)
+      const target = this.getNode(this.currentConnection.targetId)
+      source.nextNodes = source.nextNodes.filter(u => u.nodeId !== this.currentConnection.targetId)
+      target.parentNodes = source.parentNodes.filter(u => u !== this.currentConnection.sourceId)
+      this.plumbIns.deleteConnection(this.currentConnection)
+    },
+    // 璁剧疆鑺傜偣
+    setnode(node) {
+      this.$refs.nodeproperty.gettempStepBodyName()
+      this.isclickLine = false
+      this.tabValue = 'node'
+      this.currentNode = node
+      if (this.currentNode.stepBody && this.currentNode.stepBody.name) {
+      }
+    },
+    // 鐐瑰嚮杩炵嚎浜嬩欢
+    onClickConnection(connection) {
+      var sourse = this.value.filter(u => u.key === connection.sourceId)[0]
+      this.conditionNode = sourse.nextNodes.filter(u => u.nodeId === connection.targetId)[0]
+      this.currentConnection = connection
+      this.isclickLine = true
+      this.tabValue = 'line'
+    },
+    // 杩炴帴浜嬩欢
+    onConnection(info) {
+      var sourse = this.value.filter(u => u.key === info.sourceId)[0]
+      var target = this.value.filter(u => u.key === info.targetId)[0]
+      if (target.parentNodes.filter(u => u === sourse.key).length <= 0) {
+        target.parentNodes.push(sourse.key)
+      }
+      var sourceuuid = sourse.endpointOptions.filter(u => u.anchor === info.sourceEndpoint.anchor.type)[0].uuid
+      var targetuuid = target.endpointOptions.filter(u => u.anchor === info.targetEndpoint.anchor.type)[0].uuid
+      if (sourse.nextNodes.filter(u => u.nodeId === target.key).length <= 0) {
+          const c = createconditionFlowNodeDetail(target.key, sourceuuid, targetuuid)
+        sourse.nextNodes.push(c)
+      }
+    },
+    createNodeByType(type, x, y, key) {
+      const node = JSON.parse(JSON.stringify(this.nodesourcelist.filter(u => u.key === type)[0]))
+      node.key =
+        key !== undefined
+          ? key
+          : node.key +
+            '_' +
+            Date.now() +
+            Math.random()
+              .toString(36)
+              .substr(2)
+      if (node.endpointOptions !== null) {
+          node.endpointOptions.forEach(option => {
+          option.uuid = node.key + option.anchor
+        })
+      }
+      node.position = [x, y]
+           return node
+    },
+    addNodeByType(type, x, y) {
+      if (type === 'start' && this.value.filter(i => i.key.slice(0, 5) === type && i.enable === true).length > 0) {
+        this.$message.info('涓�涓祦绋嬪彧鑳芥湁涓�涓紑濮嬭妭鐐�')
+        return
+      }
+      const node = this.createNodeByType(type, x, y)
+      this.value.push(node)
+      this.$nextTick(() => {
+        this.addNode(node)
+      })
+    },
+    // 閲嶇敾鑺傜偣
+    revalidate() {
+      this.$nextTick(() => {
+        this.plumbIns.revalidate(this.currentNode.key)
+      })
+    },
+    // 娣诲姞鑺傜偣
+    addNode(node) {
+      this.plumbIns.ready(() => {
+      if (node.endpointOptions !== null) {
+          node.endpointOptions.forEach(option => {
+          this.plumbIns.addEndpoint(node.key, option, this.common)
+          })
+        }
+        // 鍙嫋鎷�   containment闄愬埗鎷栨嫿鍖哄煙 grid鎷栨嫿鏃剁綉鏍煎榻愬ぇ瀹堕兘鍦ㄥ彂
+        this.plumbIns.draggable(node.key, { containment: 'diagramContainer',
+            stop: function (el) {
+        },
+        grid: [10, 10] })
+      })
+    },
+    log(evt) {},
+    onEnd(evt) {
+      var efContainer = this.$refs.efContainer
+      var containerRect = efContainer.getBoundingClientRect()
+      var left = evt.originalEvent.clientX - containerRect.x + efContainer.scrollLeft - 80
+      var top = evt.originalEvent.clientY - containerRect.y + efContainer.scrollTop - 30
+      if (left > 0 && top > 0) {
+        this.addNodeByType(evt.item.id, left, top)
+      }
+    },
+    returnnode() {
+      this.WorkflowDefinition.nodes = this.value.filter(i => i.enable === true)
+    },
+    show() {
+    }
+  }
+}
+</script>
+<style scoped>
+/* 杩炵嚎涓殑label 鏍峰紡*/
+.jtk-overlay.flowLabel:not(.aLabel) {
+    padding: 4px 10px;
+    background-color: rgb(15, 208, 241);
+    color: #242525 !important;
+    border: 1px solid #E0E3E7;
+    border-radius: 5px;
+}
+.jtk-overlay {
+    cursor: pointer;
+    color: #4A4A4A;
+}
+.nodeboard {
+  width: 3000px;
+  height: auto;
+  margin-top: 20px;
+  min-height: 600px;
+  /* 缃戞牸鏍峰紡 */
+  background:
+     linear-gradient(to right,rgb(245, 240, 240) 1px,transparent 1px),
+     linear-gradient(to bottom,rgb(245, 240, 240) 1px,transparent 1px);
+     background-repeat: repeat;/* 榛樿涓� repeat */
+     background-size: 20px 20px;
+}
+.leftboard {
+  height: 700px;
+  /* background-color: rgb(181, 225, 226); */
+}
+.rightboard {
+  height: 700px;
+  /* background-color: rgb(200, 233, 146); */
+}
+.ef-dot {
+    background-color: #d31020;
+    border-radius: 10px;
+}
+
+.ef-node-menu-li {
+    color: #565758;
+    width: 150px;
+    border: 1px dashed #E0E3E7;
+    margin: 5px 0 5px 0;
+    padding: 5px;
+    border-radius: 5px;
+    padding-left: 8px;
+}
+
+.itembutton:hover{
+    cursor: move;
+    border: 3px dashed #1879FF;
+}
+.ef-node-menu-li:hover {
+    /* 璁剧疆绉诲姩鏍峰紡*/
+    cursor: move;
+    background-color: #F0F7FF;
+    border: 1px dashed #1879FF;
+    border-left: 4px solid #1879FF;
+    padding-left: 5px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/nomalWorkFlow.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/nomalWorkFlow.vue
new file mode 100644
index 0000000..0957d36
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/nomalWorkFlow.vue
@@ -0,0 +1,166 @@
+<template>
+  <div class="nomalstyle">
+    <a-form-model
+      ref="ruleForm"
+      :model="infodata"
+      :label-col="{ span: 5 }"
+      :wrapper-col="{ span: 12 }"
+      @submit="handleSubmit"
+      :rules="rules">
+      <a-form-model-item label="鏍囬" prop="title">
+        <a-input
+          placeholder="璇疯緭鍏ユ爣棰�"
+          v-model="infodata.title"
+        />
+      </a-form-model-item>
+      <a-form-model-item label="鍥炬爣">
+        <a-input placeholder="璇烽�夋嫨鍥炬爣" disabled="disabled" v-model="infodata.icon">
+          <a-icon slot="addonAfter" @click="openIconSele()" type="setting" />
+        </a-input>
+      </a-form-model-item>
+      <a-form-model-item label="缁戝畾琛ㄥ崟">
+        <a-select placeholder="璇烽�夋嫨琛ㄥ崟" v-model="infodata.formId">
+          <a-select-option v-for="formDesign in formDataSource" :value="formDesign.id" :key="formDesign.id">
+            {{ formDesign.name }}</a-select-option>
+        </a-select>
+      </a-form-model-item>
+      <a-form-model-item label="鍒嗙粍">
+        <a-select placeholder="璇烽�夋嫨鍒嗙粍" v-model="infodata.group">
+          <a-select-option v-for="(group, index) in groupDataSource" :value="group.code" :key="index">
+            {{ group.value }}</a-select-option>
+        </a-select>
+      </a-form-model-item>
+      <a-form-model-item label="鎻忚堪">
+        <a-textarea
+          v-model="infodata.description"
+          placeholder="璇峰~鍐欐祦绋嬫弿杩�"
+          :auto-size="{ minRows: 3, maxRows: 5 }"
+        />
+      </a-form-model-item>
+    </a-form-model>
+    <a-modal
+      :width="850"
+      :visible="visibleIcon"
+      @cancel="handleCancelIcon"
+      footer=""
+      :mask="false"
+      :closable="false"
+      :destroyOnClose="true">
+      <icon-selector v-model="currentSelectedIcon" @change="handleIconChange" />
+    </a-modal>
+  </div>
+</template>
+
+<script>
+import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+import { getformList } from '@/api/modular/system/formDesignmanage'
+import IconSelector from '@/components/IconSelector'
+export default {
+  name: 'Nomalflow',
+  components: { IconSelector },
+   props: {
+    // 娲诲姩椤�
+    data: {
+      type: Object,
+      default: null
+    }
+  },
+  data() {
+    return {
+       rules: {
+        title: [{ required: true, message: '璇疯緭鍏ユ爣棰�', trigger: 'change' }]
+      },
+      // infodata: {
+      //   icon: null,
+      //   title: null,
+      //   group: null,
+      //   description: null
+      // },
+      infodata: this.data,
+      nomalinfo: null,
+      groupDataSource: [],
+      formDataSource: [],
+      formLayout: 'horizontal',
+      form: this.$form.createForm(this, { name: 'coordinated' }),
+      currentSelectedIcon: 'pause-circle',
+      visibleIcon: false
+    }
+  },
+  created() {
+    this.getSysDict()
+    this.getformList()
+   },
+   activated() {
+  },
+   mounted() {
+  },
+  methods: {
+   async datainit() {
+     await this.form.setFieldsValue({
+        icon: this.infodata.icon,
+        title: this.infodata.title,
+        group: this.infodata.group,
+        description: this.infodata.description
+      })
+    },
+    getnomalinfo() {
+       this.$refs.ruleForm.validate(valid => {
+        if (valid) {
+          this.$emit('getflownomalinfo', true, this.infodata)
+        } else {
+          this.$emit('getflownomalinfo', false, this.infodata)
+          return false
+        }
+      })
+    },
+    /**
+    * 鑾峰彇瀛楀吀鏁版嵁
+    */
+    getSysDict() {
+        sysDictTypeDropDown({
+          code: 'workflow_group'
+        }).then((res) => {
+          this.groupDataSource = res.data
+      })
+    },
+    getformList() {
+      getformList().then(res => {
+        res.data.forEach(element => {
+          var el = { id: element.id, name: element.title }
+          this.formDataSource.push(el)
+        })
+      })
+    },
+    handleIconChange(icon) {
+        this.infodata.icon = icon
+        this.visibleIcon = false
+      },
+    handleSubmit(e) {
+      e.preventDefault()
+      this.form.validateFields((err, values) => {
+        if (!err) {
+        }
+      })
+    },
+    handleSelectChange(value) {
+      this.form.setFieldsValue({
+        note: `Hi, ${value === 'male' ? 'man' : 'lady'}!`
+      })
+    },
+    handleCancelIcon() {
+        this.visibleIcon = false
+      },
+    openIconSele() {
+        this.visibleIcon = true
+      }
+  }
+}
+</script>
+
+<style scoped>
+.nomalstyle{
+  margin-top: 100px;
+  margin-left: 10%;
+  text-align: center;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/conditionflownode.js b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/conditionflownode.js
new file mode 100644
index 0000000..f4baaa0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/conditionflownode.js
@@ -0,0 +1,40 @@
+
+export class Condition {
+  index
+  costom
+  field
+  operator
+  value
+  type
+}
+export class ConditionFlowNode {
+  constructor({ label, nodeId, conditions, type, source, target }) {
+    this.label = label
+    this.nodeId = nodeId
+    this.type = type
+    this.source = source
+    this.target = target
+    this.conditions = conditions
+  }
+}
+export function createconditionFlowNode(Data) {
+  return new ConditionFlowNode({
+    label: Data.label,
+    nodeId: Data.nodeId,
+    conditions: Data.conditions,
+    type: Data.type,
+    source: Data.source,
+    target: Data.target
+  })
+}
+
+export function createconditionFlowNodeDetail(nodeid, source, target) {
+  return new ConditionFlowNode({
+    label: '',
+    nodeId: nodeid,
+    type: '鏉′欢',
+    source: source,
+    target: target,
+    conditions: []
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowNodeGroup.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowNodeGroup.vue
new file mode 100644
index 0000000..c8e9534
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowNodeGroup.vue
@@ -0,0 +1,168 @@
+<template>
+  <div
+    ref="node"
+    id="item_left"
+    :class="nodeContainerClass"
+    :style="nodeContainerStyle"
+    @click="sendclick"
+    @mouseup="changeNodeSite">
+    <!-- 鏈�宸︿晶鐨勯偅鏉$珫绾� -->
+    <div class="ef-node-left"></div>
+    <!-- 鑺傜偣绫诲瀷鐨勫浘鏍� -->
+    <div class="ef-node-left-ico">
+      <a-icon :type="node.icon" />
+    </div>
+    <!-- 鑺傜偣鍚嶇О -->
+    <div class="ef-node-text" :show-overflow-tooltip="true">
+      {{ node.title }}
+    </div>
+    <!-- <a-button :type="node.type" :icon="node.icon" style="position:absolute;top:30%;left:36%;margin:-10% 0 0 -30%;">
+      {{ node.title }}
+    </a-button> -->
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'Flowlist',
+  components: {},
+  props: {
+    tabValue:
+    {
+      type: String,
+      default: ''
+    },
+    // 鑺傜偣灞炴��
+    currentNode: {
+      type: Object,
+      default: null
+    },
+    node: {
+      type: Object,
+      default: null
+    }
+  },
+  data() {
+    return {}
+  },
+  created() {
+  },
+  computed: {
+    nodeContainerClass() {
+      var choosestyle = 'ef-node-container'
+      if (this.currentNode && this.tabValue === 'node') {
+        if (this.currentNode.key === this.node.key) { choosestyle = 'ef-node-active' } else { choosestyle = 'ef-node-container' }
+      } else { choosestyle = 'ef-node-container' }
+      return choosestyle
+      },
+    // 鑺傜偣瀹瑰櫒鏍峰紡
+    nodeContainerStyle() {
+    return {
+        left: this.node.position[0] + 'px',
+        top: this.node.position[1] + 'px'
+      }
+    }
+  },
+  methods: {
+    sendclick() {
+      this.$emit('nodeclick')
+    },
+     // 榧犳爣绉诲姩鍚庢姮璧�
+    changeNodeSite() {
+     // 閬垮厤鎶栧姩
+         this.$emit('changeNodeSite', {
+          nodeId: this.node.key,
+          left: this.$refs.node.style.left,
+          top: this.$refs.node.style.top
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+/*鑺傜偣鏄剧ず鐨勬枃瀛�*/
+.ef-node-text {
+    color: #565758;
+    font-size: 12px;
+    line-height: 32px;
+    margin-top: -2px;
+    margin-left: 0px;
+    width: 70px;
+    /* 璁剧疆瓒呭嚭瀹藉害鏂囨湰鏄剧ず鏂瑰紡*/
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    text-align: center;
+}
+/*鑺傜偣宸︿晶鐨勫浘鏍�*/
+.ef-node-left-ico {
+    line-height: 32px;
+    margin-left: 8px;
+    margin-top: -2px;
+}
+
+/*鑺傜偣婵�娲绘牱寮�*/
+.ef-node-active {
+    cursor: move;
+    position: absolute;
+    display: flex;
+    width: 80px;
+    height: 32px;
+    border-radius: 5px;
+    background-color: rgb(240, 241, 131);
+    border: 1px solid blue;
+}
+.ef-node-container:hover {
+    /* 璁剧疆绉诲姩鏍峰紡*/
+    cursor: move;
+    background-color: #F0F7FF;
+    /*box-shadow: #1879FF 0px 0px 12px 0px;*/
+    background-color: #F0F7FF;
+    border: 1px dashed #1879FF;
+}
+/*鑺傜偣鐨勬渶澶栧眰瀹瑰櫒*/
+.ef-node-container {
+    position: absolute;
+    display: flex;
+    width: 80px;
+    height: 32px;
+    border: 2px solid #0c60ce;
+    border-radius: 5px;
+    background-color: #fff;
+}
+/*鑺傜偣宸︿晶鐨勭珫绾�*/
+.ef-node-left {
+    width: 4px;
+    background-color: #1879FF;
+    border-radius: 4px 0 0 4px;
+}
+.item {
+  position: absolute;
+  width: 100px;
+  height: 40px;
+  border: 3px solid rgb(9, 126, 221);
+  cursor: pointer;
+}
+.item:hover{
+    border: 5px solid rgb(22, 9, 99);
+}
+.ef-node-menu-li {
+    color: #565758;
+    width: 150px;
+    border: 1px dashed #E0E3E7;
+    margin: 5px 0 5px 0;
+    padding: 5px;
+    border-radius: 5px;
+    padding-left: 8px;
+}
+
+.ef-node-menu-li:hover {
+    /* 璁剧疆绉诲姩鏍峰紡*/
+    cursor: move;
+    background-color: #F0F7FF;
+    border: 1px dashed #1879FF;
+    border-left: 4px solid #1879FF;
+    padding-left: 5px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowentity.js b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowentity.js
new file mode 100644
index 0000000..34a7bc2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowentity.js
@@ -0,0 +1,24 @@
+export default class FlowEntity {
+  constructor({ title, version, description, icon, color, group, inputs, nodes }) {
+    this.title = title
+    this.version = version
+    this.description = description
+    this.icon = icon
+    this.color = color
+    this.group = group
+    this.inputs = inputs
+    this.nodes = nodes
+  }
+}
+export function createFlowFlowEntity(Data) {
+  return new FlowEntity({
+    title: Data.title,
+    version: Data.version,
+    description: Data.description,
+    icon: Data.icon,
+    color: Data.color,
+    group: Data.group,
+    inputs: Data.inputs,
+    nodes: Data.nodes
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flownodes.js b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flownodes.js
new file mode 100644
index 0000000..9af4274
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flownodes.js
@@ -0,0 +1,52 @@
+export default class FlowNode {
+  constructor({ key, title, icon, type, group, endpointOptions, stepBody, parentNodes, nextNodes, position, enable, nextStep, direction }) {
+    this.key = key
+    this.title = title
+    this.icon = icon
+    this.type = type
+    this.group = group
+    this.endpointOptions = endpointOptions
+    this.stepBody = stepBody
+    this.parentNodes = parentNodes
+    this.nextNodes = nextNodes
+    this.position = position
+    this.enable = enable
+    this.nextStep = nextStep
+    this.direction = direction
+  }
+}
+export function createFlowNode(Data) {
+  return new FlowNode({
+    key: Data.key,
+    title: Data.title,
+    icon: Data.icon,
+    type: Data.type,
+    group: Data.group,
+    endpointOptions: Data.endpointOptions,
+    stepBody: Data.stepBody,
+    parentNodes: Data.parentNodes,
+    nextNodes: Data.nextNodes,
+    position: Data.position,
+    enable: Data.enable,
+    nextStep: Data.nextStep,
+    direction: Data.direction
+  })
+}
+
+export function createFlowNodeDetail(key, title, icon, type, group, endpointOptions, stepBody, parentNodes, nextNodes, enable, nextStep) {
+  return new FlowNode({
+    key: key,
+    title: title,
+    icon: icon,
+    type: type,
+    group: group,
+    endpointOptions: endpointOptions,
+    stepBody: stepBody,
+    parentNodes: parentNodes,
+    nextNodes: nextNodes,
+    position: [20, 20],
+    enable: enable,
+    nextStep: nextStep,
+    direction: false
+  })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/nodeProperty.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/nodeProperty.vue
new file mode 100644
index 0000000..bf8b1c5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/nodeProperty.vue
@@ -0,0 +1,388 @@
+<template>
+  <div>
+    <a-tabs default-active-key="node" @change="callback" :activeKey="activekey">
+      <a-tab-pane key="line" tab="杩炵嚎" force-render :disabled="!isclickLine">
+        <a-form
+          ref="connectionForm"
+          label-position="top"
+          :model="nodecondition"
+          style="padding:5px;"
+          layout="vertical"
+        >
+          <a-form-item label="杩炵嚎鏍囬 :">
+            <a-input v-model="nodecondition.label" @change="revalidateConnection"></a-input>
+          </a-form-item>
+          <a-form-item label="杩炵嚎绫诲瀷 :">
+            <a-select v-model="nodecondition.type" >
+              <a-select-option value="鏉′欢">
+                鏉′欢
+              </a-select-option>
+            </a-select>
+          </a-form-item>
+          <a-form-item label="鏉′欢 :" v-show="conditionsvisionable">
+            <a-row :gutter="5" v-for="item in nodecondition.conditions.filter(item=>(item.costom === false))" :key="item.index" class="itemmarginTop">
+              <a-col span="6">
+                <a-select v-model="item.field">
+                  <a-select-option v-for="iitem in formmodellist" :value="iitem.key" :key="iitem.key" :dropdownMatchSelectWidth="false" dropdownStyle="downstyle">{{
+                    iitem.label
+                  }}</a-select-option>
+                </a-select>
+              </a-col>
+              <a-col span="4">
+                <a-select v-model="item.operator">
+                  <a-select-option value=">">{{ '>' }}</a-select-option>
+                  <a-select-option value=">=">{{ '&ge;' }}</a-select-option>
+                  <a-select-option value="<">{{ '&lt;' }}</a-select-option>
+                  <a-select-option value="<=">{{ '&le;' }}</a-select-option>
+                  <a-select-option value="!=">{{ '!=' }}</a-select-option>
+                  <a-select-option value="==">{{ '==' }}</a-select-option>
+                </a-select>
+              </a-col>
+              <a-col span="6">
+                <a-input v-model="item.value" :minlength="1"></a-input>
+              </a-col>
+              <a-col span="6">
+                <a-select v-model="item.type">
+                  <a-select-option value="string">{{ 'string' }}</a-select-option>
+                  <a-select-option value="bool">{{ 'bool' }}</a-select-option>
+                  <a-select-option value="number">{{ 'number' }}</a-select-option>
+                </a-select>
+              </a-col>
+              <a-col span="2">
+                <a-button @click="removeCondition(item.index)" icon="delete"></a-button>
+              </a-col>
+            </a-row>
+          </a-form-item>
+          <a-form-item>
+            <a-row :gutter="5">
+              <a-col span="12">
+                <a-button type="dashed" long @click="addCondition" icon="plus" v-show="conditionsvisionable">娣诲姞鏉′欢</a-button>
+              </a-col>
+            </a-row>
+            <a-divider />
+            <a-row class="margin-top-10">
+              <a-col span="24">
+                <a-button type="primary" @click="removeConnection" icon="delete">鍒犻櫎杩炵嚎</a-button>
+              </a-col>
+            </a-row>
+          </a-form-item>
+        </a-form>
+      </a-tab-pane>
+      <a-tab-pane key="node" tab="鑺傜偣" :disabled="isclickLine" style="margin-left:-15px">
+        <a-form :form="flownode" :label-col="{ span: 8 }" :wrapper-col="{ span: 16 }" @submit="handleSubmitnode">
+          <a-form-item label="鏍囪瘑">
+            <a-input v-model="flownode.key" :disabled="true"></a-input>
+          </a-form-item>
+          <a-form-item label="鏍囬">
+            <a-input v-model="flownode.title" @change="revalidateNode" :disabled="!flownode.key"></a-input>
+          </a-form-item>
+          <a-form-item label="鎵ц鎿嶄綔">
+            <a-select v-model="flownode.stepBody.displayName" placeholder="" @change="onStepBodyChange" :disabled="!flownode.key">
+              <a-select-option v-for="(item, index) in StepBodys" :value="item.name" :key="index">{{
+                item.displayName
+              }}</a-select-option>
+            </a-select>
+          </a-form-item>
+          <a-form-item label="瀹℃牳瀵硅薄锛�">
+            <a-select v-model="flownode.stepBody.inputs.userId.value" v-if="flownode.stepBody.name == 'FixedUserAudit'" @change="onStepBodyUserIDChange">
+              <a-select-option v-for="(user, index) in userslist" :value="user.key" :key="index">{{
+                user.title
+              }}</a-select-option>
+            </a-select>
+          </a-form-item>
+          <a-form-item :wrapper-col="{ span: 17, offset: 5 }">
+            <a-button type="primary" @click="removenode" :disabled="!flownode.key">
+              鍒犻櫎鑺傜偣
+            </a-button>
+          </a-form-item>
+        </a-form>
+      </a-tab-pane>
+    </a-tabs>
+  </div>
+</template>
+<script>
+import { getUserList } from '@/api/modular/system/userManage'
+import { getAllStepBodyList } from '@/api/modular/system/workflowManage'
+import { formEntity } from '@/api/modular/system/formDesignmanage'
+export default {
+  components: {
+  },
+  props: {
+    // 鎵�鏈夎妭鐐�
+    nodelist: {
+      type: Array,
+      default: null
+    },
+     // form琛ㄥ崟涓殑鏉′欢value
+    formlistsource: {
+      type: Array,
+      default: null
+    },
+    // 娲诲姩椤�
+    activekey: {
+      type: String,
+      default: 'node'
+    },
+    // 鏄惁閫変腑浜嗚繛绾�
+    isclickLine: {
+      type: Boolean,
+      default: false
+    },
+    // 鑺傜偣灞炴��
+    currentNode: {
+      type: Object,
+      default: null
+    },
+    // 杩炵嚎灞炴��
+    conditionNode: {
+      type: Object,
+      default: null
+    },
+    // 琛ㄥ崟Id
+    formId: {
+      type: Number,
+      default: null
+    }
+  },
+  data() {
+    return {
+      // 鎵�鏈夋湁鐢ㄧ殑鑺傜偣
+      nodesListEnable: [],
+      conditionsvisionable: true,
+      formmodellist: [],
+      formmodecostomlist: [],
+      formlistdata: [],
+      formJson: {},
+      UserValue: '',
+      FormValue: null,
+      PositionValue: '',
+      // 閫夋嫨鎵ц绫诲瀷
+      tempName: '',
+      // 鐢ㄦ埛鍒楄〃
+      userslist: [],
+      // 琛ㄥ崟瀛楁寮曞叆
+      nodecondition: {
+        label: '',
+        type: '鏉′欢',
+        source: '',
+        target: '',
+        nodeId: '',
+        conditions: []
+      },
+      labelCol: {
+          xs: {
+            span: 13
+          },
+          sm: {
+            span: 13
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 10
+          },
+          sm: {
+            span: 7
+          }
+        },
+        labelCol1: {
+          xs: {
+            span: 10
+          },
+          sm: {
+            span: 8
+          }
+        },
+        wrapperCol1: {
+          xs: {
+            span: 10
+          },
+          sm: {
+            span: 4
+          }
+        },
+      flownode: {
+        key: '',
+        title: '',
+        icon: '',
+        type: '',
+        group: '',
+        endpointOptions: null,
+        stepBody: null,
+        parentNodes: null,
+        nextNodes: null,
+        position: null,
+        nextStep: null,
+        direction: false
+        // backAnyStep: null
+      },
+      StepBodys: [],
+      initStepBody: {
+        displayName: '',
+        inputs: {
+          userId: {
+            displayName: '',
+            name: '',
+            value: null
+          }
+        },
+        name: '',
+        stepBodyType:
+          ''
+      }
+    }
+  },
+ async created() {
+    // 鍒濆鍖�
+    this.flownode.stepBody = this.initStepBody
+    // 鏌ユ壘鎵�鏈夋楠�
+    await getAllStepBodyList().then(res => {
+        if (res.success) {
+          res.data.forEach(item => {
+          this.StepBodys.push(item)
+        })
+      }
+     })
+    if (this.formId != null) {
+      formEntity(Object.assign({ id: this.formId })).then(res => {
+        this.formmodellist = res.data.nodesList.list
+      })
+    } else {
+      this.$message.warning('娴佺▼鏈粦瀹氳〃鍗曪紝鏃犳硶娣诲姞鏉′欢锛�')
+    }
+      // 鏌ユ壘鐢ㄦ埛鍒楄〃
+    getUserList().then(res => {
+      if (res.success) {
+        const mockData = []
+        res.data.forEach(item => {
+          const data = {
+            key: item.id.toString(),
+            title: item.name
+          }
+          mockData.push(data)
+        })
+        this.userslist = mockData
+      }
+    })
+  },
+  watch: {
+    nodelist: 'getnodelist',
+    formlistsource: 'getformlistsource',
+    activekey: 'getactivekey',
+    currentNode: 'getcurrentNode',
+    conditionNode: 'getconditionNode'
+  },
+  methods: {
+    removenode() {
+      this.$emit('deleteNode')
+    },
+    handleChange(e) {
+       this.flownode.form = e
+    },
+    onStepBodyProcedureIDChange(e) {
+      this.flownode.stepBody.inputs.workProcedureId.value = e
+    },
+    onStepBodyUserIDChange(e) {
+      this.flownode.stepBody.inputs.userId.value = e
+    },
+     onStepBodyChange(value) {
+      this.flownode.stepBody = JSON.parse(JSON.stringify(this.StepBodys.filter(u => u.name === value)[0]))
+    },
+    gettempStepBodyName() {
+      this.tempName = ''
+    },
+    // 鍒犻櫎鏉′欢
+    removeCondition(index) {
+      this.conditionNode.conditions = this.conditionNode.conditions.filter(item => (item.index !== index))
+    },
+    handleSubmitnode() {},
+    getactivekey(curVal, oldVal) {
+      this.activekeynow = curVal
+    },
+    getnodelist(curVal, oldVal) {
+      this.nodesListEnable = curVal.filter(i => i.enable === true)
+       },
+    // getformlistsource(curVal, oldVal) {
+    //   this.formmodellist = curVal
+    // },
+    getcurrentNode(curVal, oldVal) {
+      this.flownode = curVal
+      if (!this.flownode.stepBody || this.flownode.stepBody.stepBodyType === '') {
+        this.initStepBody.displayName = ''
+        this.flownode.stepBody = this.initStepBody
+      }
+    },
+    getconditionNode(curVal, oldVal) {
+      this.nodecondition = curVal
+    },
+    revalidateConnection(e) {
+      this.$emit('renameConnection', this.conditionNode.label)
+    },
+    nodenextstep() {
+      this.$emit('nextStepConnection', this.flownode.nextStep)
+    },
+    onChange() {
+      this.$emit('directionConnection', this.flownode.direction)
+    },
+    nodeBackAuto() {
+      if (this.flownode.backAutoStep) {
+        this.$emit('changeNextNode', null)
+      } else { this.$emit('changeNextNode', null) }
+      this.$emit('backAutoStep', this.flownode.backAutoStep)
+    },
+        revalidateNode(e) {
+     // this.$emit('renameNode', this.flownode.title)
+    },
+    savecondition() {
+    },
+    // 鍒犻櫎
+    removeConnection() {
+      this.$emit('deleteConnection')
+    },
+    // 娣诲姞鏉′欢
+    addCondition() {
+      var conditions = {
+        index: this.conditionNode.conditions.length + 1,
+        costom: false,
+        field: '',
+        operator: '',
+        value: '',
+        type: ''
+      }
+      this.conditionNode.conditions.push(conditions)
+    },
+    handleSelectChange(value) {
+      this.form.setFieldsValue({
+        note: `Hi, ${value === 'male' ? 'man' : 'lady'}!`
+      })
+    },
+    callback(key) {
+          }
+  }
+}
+</script>
+<style scoped>
+.downstyle {
+    width: 200px;
+    background-color: blue;
+}
+.itemmarginTop{
+ margin-top: 10px;
+}
+.itemmarginTopcostom{
+   margin-top: 10px;
+}
+.iteminline{
+  display: inline-block;
+  width: 200px;
+}
+.iteminline1{
+  display: inline-block;
+  width: 140px;
+}
+.mark{
+  width: 5px;
+  height: 100%;
+  background-color: red;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/readme.md b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/readme.md
new file mode 100644
index 0000000..434c144
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/readme.md
@@ -0,0 +1,300 @@
+jsPlumb.ready(() => {
+  var common = {
+    isSource: true, // 鎷栧姩绔偣鏃跺彲浠ヨ嚜鍔ㄥ垱寤鸿繛鎺�
+    isTarget: true,
+    endpoint: 'Dot', // 閿氱偣褰㈢姸  dot鍦嗗舰  Rectangle 鏂瑰舰
+    connector: ['Flowchart'], // 杩炵嚎鐨勫舰鐘�     Bezier: 璐濆灏旀洸绾�  Flowchart: 鍏锋湁90搴﹁浆鎶樼偣鐨勬祦绋嬬嚎 StateMachine: 鐘舵�佹満 Straight: 鐩寸嚎
+    // anchor: ['Left', 'Right']   //閿氱偣鐨勪綅缃�
+    connectorStyle: { outlineStroke: 'green', strokeWidth: 1 }, // 杩炴帴绾挎牱寮忥紙鎷栧姩鑷姩杩炴帴鏃剁敓鏁堬級
+    maxConnections: -1, // 闄愬埗杩炵嚎鐨勬暟閲忥紝-1涓轰笉闄愬埗
+    overlays: [['Arrow', { width: 12, length: 12, location: 0.5 }]] // 闀垮 浣嶇疆
+  }
+
+  jsPlumb.connect(
+    {
+      // source: "item_left",    //杩炴帴婧愬ご
+      // target: "item_right",    //杩炴帴鍘诲悜
+      // paintStyle: { stroke: 'red', strokeWidth: 3 },        // 杩炴帴绾跨殑鏍峰紡 锛堣缃簮澶村拰鍘诲悜鏃剁敓鏁堬級
+      // endpointStyle: { fill: 'red', outlineStroke: 'black', outlineWidth: 2 },     // 閿氱偣鐨勬牱寮�  fill濉厖    outlineStroke杈规锛堣缃簮澶村拰鍘诲悜鏃剁敓鏁堬級
+      // overlays: [["Arrow", { width: 12, length: 12, location: 0.5 }]] // 闀垮 浣嶇疆
+      /*
+    Arrow 涓�涓彲閰嶇疆鐨勭澶�
+    Label 鏍囩锛屽彲浠ュ湪閾炬帴涓婃樉绀烘枃瀛椾俊鎭�
+    PlainArrow 鍘熷绫诲瀷鐨勭澶�
+    Diamond 鑿卞舰绠ご
+    Custom 鑷畾涔夌被鍨�
+    */
+      /*
+   榛樿鍙傛暟鐨勭畝浠�:
+   Anchor 閿氱偣锛屽嵆绔偣閾炬帴鐨勪綅缃�
+   Anchors 澶氫釜閿氱偣 [婧愰敋鐐癸紝鐩爣閿氱偣].
+   Connector 閾炬帴
+   ConnectionsDetachable 鑺傜偣鏄惁鍙互鐢ㄩ紶鏍囨嫋鍔ㄤ娇鍏舵柇寮�锛岄粯璁や负true銆傚嵆鐢ㄩ紶鏍囬摼鎺ヤ笂鐨勮繛绾匡紝涔熷彲浠ヤ娇鐢ㄩ紶鏍囨嫋鍔ㄨ鍏舵柇寮�銆傝缃垚false锛屽彲浠ヨ鍏舵嫋鍔ㄤ篃涓嶄細鑷姩鏂紑銆�
+   Container 杩炵嚎鐨勫鍣�
+   DoNotThrowErrors 鏄惁鎶涘嚭閿欒
+   ConnectionOverlays 閾炬帴閬僵灞�
+   DragOptions 鎷栧姩璁剧疆
+   DropOptions 鎷栨斁璁剧疆
+   Endpoint 绔偣
+   Endpoints 鏁扮粍褰㈠紡鐨勶紝[婧愮鐐癸紝鐩爣绔偣]
+   EndpointOverlays 绔偣閬僵灞�
+   EndpointStyle 绔偣鏍峰紡
+   EndpointStyles [婧愮鐐规牱寮忥紝鐩爣绔偣鏍峰紡]
+   EndpointHoverStyle 绔偣榧犳爣缁忚繃鐨勬牱寮�
+   EndpointHoverStyles [婧愮鐐归紶鏍囩粡杩囨牱寮忥紝鐩爣绔偣榧犳爣缁忚繃鏍峰紡]
+   HoverPaintStyle 榧犳爣缁忚繃閾炬帴绾挎椂鐨勬牱寮�
+   LabelStyle 鏍囩鏍峰紡
+   LogEnabled 鏄惁鍚敤鏃ュ織
+   Overlays 杩炴帴绾垮拰绔偣鐨勯伄缃╁眰鏍峰紡
+   MaxConnections 绔偣鏈�澶ц繛鎺ョ嚎鏁伴噺榛樿涓�1锛� 璁剧疆鎴�-1鍙互琛ㄧず鏃犳暟涓摼鎺�
+   PaintStyle 杩炵嚎鏍峰紡
+   ReattachConnections 绔偣鏄惁鍙互鍐嶆閲嶆柊閾炬帴
+   RenderMode 娓叉煋妯″紡锛岄粯璁ゆ槸svg
+   Scope 浣滅敤鍩燂紝鐢ㄦ潵鍖哄垎鍝簺绔偣鍙互閾炬帴锛屼綔鐢ㄥ煙鐩稿悓鐨勫彲浠ラ摼鎺� */
+    },
+    common
+  )
+  // 鏂板涓�涓鐐�
+  jsPlumb.addEndpoint(
+    'start',
+    {
+      anchors: 'Right',
+      uuid: 'fromId'
+    },
+    common
+  )
+  jsPlumb.addEndpoint(
+    'task',
+    {
+      anchor: 'Left',
+      uuid: 'toId'
+    },
+    common
+  )
+  jsPlumb.addEndpoint(
+    'end',
+    {
+      anchor: 'Left',
+      uuid: 'toId'
+    },
+    common
+  )
+
+  // 鍙嫋鎷�   containment闄愬埗鎷栨嫿鍖哄煙 grid鎷栨嫿鏃剁綉鏍煎榻�
+  jsPlumb.draggable('start', { containment: 'diagramContainer', grid: [10, 10] })
+  jsPlumb.draggable('task', { containment: 'diagramContainer', grid: [10, 10] })
+  jsPlumb.draggable('end', { containment: 'diagramContainer', grid: [10, 10] })
+  // jsPlumb.addEndpoint(
+  //   'test',
+  //   {
+  //     anchors: 'Right',
+  //     uuid: 'testddd'
+  //   },
+  //   common
+  // )
+  // jsPlumb.draggable('test', { containment: 'efContainer', grid: [10, 10] })
+  // this.nodeList.forEach(item => {
+  //   console.log(item)
+  //   var timestamp = new Date().getTime()
+  //   jsPlumb.addEndpoint(
+  //     item.id,
+  //     {
+  //       anchors: 'Right',
+  //       uuid: timestamp
+  //     },
+  //     common
+  //   )
+  //   jsPlumb.draggable(item.id, { containment: 'efContainer', grid: [10, 10] })
+  // })
+  // 鍙嫋鎷�   containment闄愬埗鎷栨嫿鍖哄煙 grid鎷栨嫿鏃剁綉鏍煎榻�
+  // jsPlumb.draggable('item_left', { containment: 'efContainer', grid: [10, 10] })
+  // jsPlumb.draggable('item_right', { containment: 'diagramContainer', grid: [10, 10] })
+  // jsPlumb.draggable('item_right1', { containment: 'diagramContainer', grid: [10, 10] })
+
+  // 缁欒繛鎺ユ坊鍔犵偣鍑讳簨浠�
+  jsPlumb.bind('click', function(conn, originalEvent) {
+    if (window.prompt('纭畾鍒犻櫎鎵�鐐瑰嚮鐨勯摼鎺ュ悧锛� 杈撳叆1纭畾') === '1') {
+      jsPlumb.detach(conn) // 鍒犻櫎杩炴帴
+      // 鍒犻櫎鑺傜偣鍖呮嫭鐩稿叧鐨勮繛鎺�
+      // jsPlumb.remove('item_left')
+      // 閫氳繃缂栫爜杩炴帴,闇�瑕佸湪addEndpoint鏃讹紝灏辩粰璇ユ柇鐐瑰姞涓婁竴涓猽uid, 鐒跺悗閫氳繃connect()鏂规硶锛屽皢涓や釜鏂偣閾炬帴涓�,寤鸿缁欐瘡涓柇鐐归兘鍔犱笂鍞竴鐨剈uid
+      // jsPlumb.connect({ uuids: ['fromId', 'toId'] })
+
+      /**
+   * jsPlumb Events鍒楄〃
+   connection
+   connectionDetached
+   connectionMoved
+   click
+   dblclick
+   endpointClick
+   endpointDblClick
+   contextmenu
+   beforeDrop  杩炴帴鍓嶇殑妫�鏌ワ紝鍙互鐢ㄦ潵鍒ゆ柇鏄惁寤虹珛杩炴帴
+   beforeDetach
+   zoom
+   Connection Events
+   Endpoint Events
+   Overlay Events
+   Unbinding Events
+   */
+    }
+  })
+})
+export const easyFlowMixin = {
+    data() {
+        return {
+            jsplumbSetting: {
+                // 鍔ㄦ�侀敋鐐广�佷綅缃嚜閫傚簲
+                Anchors: ['Top', 'TopCenter', 'TopRight', 'TopLeft', 'Right', 'RightMiddle', 'Bottom', 'BottomCenter', 'BottomRight', 'BottomLeft', 'Left', 'LeftMiddle'],
+                // 瀹瑰櫒ID
+                Container: 'efContainer',
+                // 杩炵嚎鐨勬牱寮忥紝鐩寸嚎鎴栬�呮洸绾跨瓑锛屽彲閫夊��:  StateMachine銆丗lowchart锛孊ezier銆丼traight
+                Connector: ['Bezier', {curviness: 100}],
+                // Connector: ['Straight', {stub: 20, gap: 1}],
+                // Connector: ['Flowchart', {stub: 30, gap: 1, alwaysRespectStubs: false, midpoint: 0.5, cornerRadius: 10}],
+                // Connector: ['StateMachine', {margin: 5, curviness: 10, proximityLimit: 80}],
+                // 榧犳爣涓嶈兘鎷栧姩鍒犻櫎绾�
+                ConnectionsDetachable: false,
+                // 鍒犻櫎绾跨殑鏃跺�欒妭鐐逛笉鍒犻櫎
+                DeleteEndpointsOnDetach: false,
+                /**
+                 * 杩炵嚎鐨勪袱绔鐐圭被鍨嬶細鍦嗗舰
+                 * radius: 鍦嗙殑鍗婂緞锛岃秺澶у渾瓒婂ぇ
+                 */
+                // Endpoint: ['Dot', {radius: 5, cssClass: 'ef-dot', hoverClass: 'ef-dot-hover'}],
+                /**
+                 * 杩炵嚎鐨勪袱绔鐐圭被鍨嬶細鐭╁舰
+                 * height: 鐭╁舰鐨勯珮
+                 * width: 鐭╁舰鐨勫
+                 */
+                // Endpoint: ['Rectangle', {height: 20, width: 20, cssClass: 'ef-rectangle', hoverClass: 'ef-rectangle-hover'}],
+                /**
+                 * 鍥惧儚绔偣
+                 */
+                // Endpoint: ['Image', {src: 'https://www.easyicon.net/api/resizeApi.php?id=1181776&size=32', cssClass: 'ef-img', hoverClass: 'ef-img-hover'}],
+                /**
+                 * 绌虹櫧绔偣
+                 */
+                Endpoint: ['Blank', {Overlays: ''}],
+                // Endpoints: [['Dot', {radius: 5, cssClass: 'ef-dot', hoverClass: 'ef-dot-hover'}], ['Rectangle', {height: 20, width: 20, cssClass: 'ef-rectangle', hoverClass: 'ef-rectangle-hover'}]],
+                /**
+                 * 杩炵嚎鐨勪袱绔鐐规牱寮�
+                 * fill: 棰滆壊鍊硷紝濡傦細#12aabb锛屼负绌轰笉鏄剧ず
+                 * outlineWidth: 澶栬竟绾垮搴�
+                 */
+                EndpointStyle: {fill: '#1879ffa1', outlineWidth: 1},
+                // 鏄惁鎵撳紑jsPlumb鐨勫唴閮ㄦ棩蹇楄褰�
+                LogEnabled: true,
+                /**
+                 * 杩炵嚎鐨勬牱寮�
+                 */
+                PaintStyle: {
+                    // 绾跨殑棰滆壊
+                    stroke: '#E0E3E7',
+                    // 绾跨殑绮楃粏锛屽�艰秺澶х嚎瓒婄矖
+                    strokeWidth: 1,
+                    // 璁剧疆澶栬竟绾跨殑棰滆壊锛岄粯璁よ缃�忔槑锛岃繖鏍峰埆浜哄氨鐪嬩笉瑙佷簡锛岀偣鍑荤嚎鐨勬椂鍊欏彲浠ヤ笉鐢ㄧ簿纭偣鍑伙紝鍙傝�� https://blog.csdn.net/roymno2/article/details/72717101
+                    outlineStroke: 'transparent',
+                    // 绾垮杈圭殑瀹斤紝鍊艰秺澶э紝绾跨殑鐐瑰嚮鑼冨洿瓒婂ぇ
+                    outlineWidth: 10
+                },
+                DragOptions: {cursor: 'pointer', zIndex: 2000},
+                /**
+                 *  鍙犲姞 鍙傝�冿細 https://www.jianshu.com/p/d9e9918fd928
+                 */
+                Overlays: [
+                    // 绠ご鍙犲姞
+                    ['Arrow', {
+                        width: 10, // 绠ご灏鹃儴鐨勫搴�
+                        length: 8, // 浠庣澶寸殑灏鹃儴鍒板ご閮ㄧ殑璺濈
+                        location: 1, // 浣嶇疆锛屽缓璁娇鐢�0锝�1涔嬮棿
+                        direction: 1, // 鏂瑰悜锛岄粯璁ゅ�间负1锛堣〃绀哄悜鍓嶏級锛屽彲閫�-1锛堣〃绀哄悜鍚庯級
+                        foldback: 0.623 // 鎶樺洖锛屼篃灏辨槸灏剧考鐨勮搴︼紝榛樿0.623锛屽綋涓�1鏃讹紝涓烘涓夎
+                    }],
+                    // ['Diamond', {
+                    //     events: {
+                    //         dblclick: function (diamondOverlay, originalEvent) {
+                    //             console.log('double click on diamond overlay for : ' + diamondOverlay.component)
+                    //         }
+                    //     }
+                    // }],
+                    ['Label', {
+                        label: '',
+                        location: 0.1,
+                        cssClass: 'aLabel'
+                    }]
+                ],
+                // 缁樺埗鍥剧殑妯″紡 svg銆乧anvas
+                RenderMode: 'svg',
+                // 榧犳爣婊戣繃绾跨殑鏍峰紡
+                HoverPaintStyle: {stroke: '#b0b2b5', strokeWidth: 1},
+                // 婊戣繃閿氱偣鏁堟灉
+                // EndpointHoverStyle: {fill: 'red'}
+                Scope: 'jsPlumb_DefaultScope' // 鑼冨洿锛屽叿鏈夌浉鍚宻cope鐨勭偣鎵嶅彲杩炴帴
+            },
+            /**
+             * 杩炵嚎鍙傛暟
+             */
+            jsplumbConnectOptions: {
+                isSource: true,
+                isTarget: true,
+                // 鍔ㄦ�侀敋鐐广�佹彁渚涗簡4涓柟鍚� Continuous銆丄utoDefault
+                anchor: 'Continuous',
+                // 璁剧疆杩炵嚎涓婇潰鐨刲abel鏍峰紡
+                labelStyle: {
+                    cssClass: 'flowLabel'
+                },
+                // 淇敼浜唈splumb 婧愮爜锛屾敮鎸乴abel 涓虹┖浼犲叆鑷畾涔塻tyle
+                emptyLabelStyle: {
+                    cssClass: 'emptyFlowLabel'
+                }
+            },
+            /**
+             * 婧愮偣閰嶇疆鍙傛暟
+             */
+            jsplumbSourceOptions: {
+                // 璁剧疆鍙互鎷栨嫿鐨勭被鍚嶏紝鍙榧犳爣绉诲姩鍒拌绫诲悕涓婄殑DOM锛屽氨鍙互鎷栨嫿杩炵嚎
+                filter: '.flow-node-drag',
+                filterExclude: false,
+                anchor: 'Continuous',
+                // 鏄惁鍏佽鑷繁杩炴帴鑷繁
+                allowLoopback: true,
+                maxConnections: -1,
+                onMaxConnections: function (info, e) {
+                    console.log(`瓒呰繃浜嗘渶澶у�艰繛绾�: ${info.maxConnections}`)
+                }
+            },
+            // 鍙傝�� https://www.cnblogs.com/mq0036/p/7942139.html
+            jsplumbSourceOptions2: {
+                // 璁剧疆鍙互鎷栨嫿鐨勭被鍚嶏紝鍙榧犳爣绉诲姩鍒拌绫诲悕涓婄殑DOM锛屽氨鍙互鎷栨嫿杩炵嚎
+                filter: '.flow-node-drag',
+                filterExclude: false,
+                // anchor: 'Continuous',
+                // 鏄惁鍏佽鑷繁杩炴帴鑷繁
+                allowLoopback: true,
+                connector: ['Flowchart', {curviness: 50}],
+                connectorStyle: {
+                    // 绾跨殑棰滆壊
+                    stroke: 'red',
+                    // 绾跨殑绮楃粏锛屽�艰秺澶х嚎瓒婄矖
+                    strokeWidth: 1,
+                    // 璁剧疆澶栬竟绾跨殑棰滆壊锛岄粯璁よ缃�忔槑锛岃繖鏍峰埆浜哄氨鐪嬩笉瑙佷簡锛岀偣鍑荤嚎鐨勬椂鍊欏彲浠ヤ笉鐢ㄧ簿纭偣鍑伙紝鍙傝�� https://blog.csdn.net/roymno2/article/details/72717101
+                    outlineStroke: 'transparent',
+                    // 绾垮杈圭殑瀹斤紝鍊艰秺澶э紝绾跨殑鐐瑰嚮鑼冨洿瓒婂ぇ
+                    outlineWidth: 10
+                },
+                connectorHoverStyle: {stroke: 'red', strokeWidth: 2}
+            },
+            jsplumbTargetOptions: {
+                // 璁剧疆鍙互鎷栨嫿鐨勭被鍚嶏紝鍙榧犳爣绉诲姩鍒拌绫诲悕涓婄殑DOM锛屽氨鍙互鎷栨嫿杩炵嚎
+                filter: '.flow-node-drag',
+                filterExclude: false,
+                // 鏄惁鍏佽鑷繁杩炴帴鑷繁
+                anchor: 'Continuous',
+                allowLoopback: true,
+                dropOptions: {hoverClass: 'ef-drop-hover'}
+            }
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/sourcenodes.js b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/sourcenodes.js
new file mode 100644
index 0000000..e2b4ba5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/sourcenodes.js
@@ -0,0 +1,55 @@
+import { createFlowNodeDetail } from '@/views/system/workflow/components/store/flownodes'
+const sourcenodes = []
+sourcenodes.push(
+  createFlowNodeDetail(
+     'start', '寮�濮�', 'thunderbolt', 'primary', '1', [
+    {
+      anchor: 'Right',
+      maxConnections: -1
+    }
+  ], null, [], [], true, null
+  )
+)
+sourcenodes.push(
+  createFlowNodeDetail(
+     'step', '浠诲姟', '', 'primary', '2', [
+    {
+      anchor: 'Right',
+      maxConnections: -1
+    },
+    {
+      anchor: 'Left',
+      maxConnections: -1
+    }
+  ], null, [], [], true, null
+  )
+)
+// sourcenodes.push(
+//   createFlowNodeDetail(
+//     'sourcecondition', '鏉′欢', 'question-circle', 'primary', '2', [
+//     {
+//       anchor: 'Top',
+//       maxConnections: -1
+//     },
+//     {
+//       anchor: 'Left',
+//       maxConnections: -1
+//     },
+//     {
+//       anchor: 'Right',
+//       maxConnections: -1
+//     }
+//   ], null, [], []
+//   )
+// )
+sourcenodes.push(
+  createFlowNodeDetail(
+     'end', '缁撴潫', 'check-circle', 'primary', '1', [
+    {
+      anchor: 'Left',
+      maxConnections: -1
+    }
+  ], null, [], [], true, null
+  )
+)
+export { sourcenodes }
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/create.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/create.vue
new file mode 100644
index 0000000..433a619
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/create.vue
@@ -0,0 +1,157 @@
+<template>
+  <div id="creatflow">
+    <!-- <a-steps :current="currentStepIndex" size="small">
+      <a-step v-for="item in steps" :key="item.title" :title="item.title">
+        <a-icon slot="icon" :type="item.icon"/></a-step>
+    </a-steps> -->
+    <div class="steps-content">
+      <a-card>
+        <div v-if="steps[currentStepIndex].content === 'First-content'" >
+          <nomal ref="nomalinfo" @getflownomalinfo="getnomal" :data="flowinfodata"></nomal>
+        </div>
+      </a-card>
+      <div v-if="steps[currentStepIndex].content === 'Last-content'">
+        <builder ref="build" :localflow="localflow" :propformId="flowinfodata.formId"></builder>
+      </div>
+    </div>
+    <div>
+      <div class="steps-next">
+        <a-button icon="caret-down" v-if="currentStepIndex < steps.length - 1" type="primary" @click="next" >
+          涓嬩竴姝�
+        </a-button>
+      </div>
+      <div class="steps-send">
+        <a-button icon="caret-up" v-if="currentStepIndex > 0" type="primary" style="margin-left: 8px" @click="prev">
+          涓婁竴姝�
+        </a-button>
+        <a-button
+          style="margin-left: 8px"
+          icon="check"
+          v-if="currentStepIndex == steps.length - 1 && hasPerm('workFlow:save')"
+          type="primary"
+          @click="saveworkflow"
+        >
+          鎻愪氦
+        </a-button>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { addWorkflowDefinition } from '@/api/modular/system/workflowManage'
+import nomal from './components/nomalWorkFlow.vue'
+import builder from './components/builderWorkFlow.vue'
+export default {
+  name: 'Creatflow',
+  components: {
+    nomal,
+    builder
+    },
+  data() {
+    return {
+      localflow: null,
+      workflow: {
+       title: '',
+       version: '',
+       description: '',
+       icon: '',
+       color: '',
+       group: '',
+       inputs: null,
+       nodes: null,
+       formId: ''
+     },
+      // 鍩烘湰淇℃伅鏄惁杈惧埌鎻愪氦鏉′欢
+      savecondition: false,
+      flowinfodata: {
+        icon: null,
+        title: null,
+        group: null,
+        description: null,
+        formId: null
+      },
+      currentStepIndex: 0,
+      steps: [
+        {
+          title: '鍩烘湰淇℃伅',
+          content: 'First-content',
+          icon: 'credit-card'
+        },
+        {
+          title: '娴佺▼璁捐',
+          content: 'Last-content',
+          icon: 'apartment'
+        }
+      ]
+    }
+  },
+  methods: {
+    getnomal(success, values) {
+      this.flowinfodata = values
+      if (success) {
+        this.savecondition = true
+      } else {
+        this.savecondition = false
+      }
+    },
+    async  next() {
+      if (this.currentStepIndex === 0) {
+        await this.$refs.nomalinfo.getnomalinfo()
+      }
+      if (this.workflow.nodes) { this.localflow = JSON.parse(this.workflow.nodes) } else { this.localflow = null }
+      this.currentStepIndex++
+    },
+    prev() {
+      this.packageflow()
+      this.currentStepIndex--
+    },
+    packageflow() {
+      // 寰楀埌node
+       this.$refs.build.returnnode()
+       this.workflow.title = this.flowinfodata.title
+       this.workflow.version = this.$refs.build.WorkflowDefinition.version
+       this.workflow.description = this.flowinfodata.description
+       this.workflow.icon = this.flowinfodata.icon
+       this.workflow.color = this.$refs.build.WorkflowDefinition.color
+       this.workflow.group = this.flowinfodata.group
+       this.workflow.inputs = null
+       this.workflow.nodes = JSON.stringify(this.$refs.build.WorkflowDefinition.nodes)
+       this.workflow.formId = this.flowinfodata.formId
+    },
+    saveworkflow() {
+      if (this.savecondition) {
+      this.packageflow()
+
+      addWorkflowDefinition(Object.assign(this.workflow)).then(res => {
+      if (res.success) {
+        this.$message.success('鎻愪氦鎴愬姛')
+        } else {
+        this.$message.error('鎻愪氦澶辫触' + res.message)
+        }
+     })
+     } else {
+       this.$message.warning('璇峰畬鍠勬祦绋嬪熀鏈俊鎭�')
+     }
+    }
+  }
+}
+</script>
+<style scoped>
+.steps-content {
+  margin-top: 16px;
+  border-radius: 6px;
+  min-height: 200px;
+  text-align: center;
+  padding-top: 15px;
+}
+.steps-next {
+  text-align:center;
+  margin-top: 24px;
+  margin-right: 24px;
+}
+.steps-send {
+  text-align:right;
+  margin-top: 24px;
+  margin-right: 400px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/edit.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/edit.vue
new file mode 100644
index 0000000..2f29836
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/edit.vue
@@ -0,0 +1,182 @@
+<template>
+  <div>
+    <div class="steps-content">
+      <div v-if="steps[currentStepIndex].content === 'First-content'">
+        <nomal ref="nomalinfo" @getflownomalinfo="getnomal" :data="flowinfodata"></nomal>
+      </div>
+      <div v-if="steps[currentStepIndex].content === 'Last-content'">
+        <builder ref="build" :localflow="localflow" :propformId="flowinfodata.formId"></builder>
+      </div>
+    </div>
+    <div class="steps-action">
+      <div class="steps-next">
+        <a-button icon="caret-down" v-if="currentStepIndex < steps.length - 1" type="primary" @click="next">
+          涓嬩竴姝�
+        </a-button>
+      </div>
+      <div class="steps-send">
+        <a-button icon="caret-up" v-if="currentStepIndex > 0" type="primary" @click="prev">
+          涓婁竴姝�
+        </a-button>
+        <a-button
+          style="margin-left: 8px"
+          icon="check"
+          v-if="currentStepIndex == steps.length - 1 && hasPerm('workFlow:update')"
+          type="primary"
+          @click="saveworkflow"
+        >
+          鎻愪氦
+        </a-button>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { workflowUpdata, getWorkflowByID } from '@/api/modular/system/workflowManage'
+import nomal from './components/nomalWorkFlow.vue'
+import builder from './components/builderWorkFlow.vue'
+export default {
+  components: {
+    nomal,
+    builder
+    },
+  data() {
+    return {
+      localflow: null,
+      workflow: {
+       title: '',
+       version: '',
+       description: '',
+       icon: '',
+       color: '',
+       group: '',
+       inputs: null,
+       nodes: null,
+       formId: ''
+     },
+      // 鍩烘湰淇℃伅鏄惁杈惧埌鎻愪氦鏉′欢
+      savecondition: false,
+      flowinfodata: {
+        icon: null,
+        title: null,
+        group: null,
+        description: null,
+        formId: null
+      },
+      currentStepIndex: 0,
+      steps: [
+        {
+          title: '鍩烘湰淇℃伅',
+          content: 'First-content',
+          icon: 'credit-card'
+        },
+        {
+          title: '娴佺▼璁捐',
+          content: 'Last-content',
+          icon: 'apartment'
+        }
+      ]
+    }
+  },
+  mounted() {
+  },
+  activated() {
+    this.currentStepIndex = 0
+    const { id, version } = this.$route.params
+    if (id) {
+       getWorkflowByID(Object.assign({ id: id, version: version })).then((res) => {
+        this.flowinfodata.title = res.data.title
+        this.flowinfodata.description = res.data.description
+        this.flowinfodata.icon = res.data.icon
+        this.flowinfodata.group = res.data.group
+        this.flowinfodata.formId = res.data.formId
+        this.workflow.inputs = null
+        this.workflow.nodes = res.data.nodes
+      })
+    }
+  },
+  created() {
+    this.currentStepIndex = 0
+    const { id, version } = this.$route.params
+    if (id) {
+       getWorkflowByID(Object.assign({ id: id, version: version })).then((res) => {
+       this.flowinfodata.title = res.data.title
+       this.flowinfodata.description = res.data.description
+       this.flowinfodata.icon = res.data.icon
+       this.flowinfodata.group = res.data.group
+       this.flowinfodata.formId = res.data.formId
+       this.workflow.inputs = null
+       this.workflow.nodes = res.data.nodes
+     })
+    }
+  },
+  methods: {
+    getnomal(success, values) {
+      this.flowinfodata = values
+      if (success) {
+        this.savecondition = true
+      } else {
+        this.savecondition = false
+      }
+    },
+    async  next() {
+      if (this.currentStepIndex === 0) {
+        await this.$refs.nomalinfo.getnomalinfo()
+      }
+      if (this.workflow.nodes) { this.localflow = JSON.parse(this.workflow.nodes) } else { this.localflow = null }
+      this.currentStepIndex++
+    },
+    prev() {
+      this.packageflow()
+      this.currentStepIndex--
+    },
+    packageflow() {
+      // 寰楀埌node
+       this.$refs.build.returnnode()
+       this.workflow.title = this.flowinfodata.title
+       this.workflow.version = this.$refs.build.WorkflowDefinition.version
+       this.workflow.description = this.flowinfodata.description
+       this.workflow.icon = this.flowinfodata.icon
+       this.workflow.color = this.$refs.build.WorkflowDefinition.color
+       this.workflow.group = this.flowinfodata.group
+       this.workflow.inputs = null
+       this.workflow.nodes = JSON.stringify(this.$refs.build.WorkflowDefinition.nodes)
+       this.workflow.formId = this.flowinfodata.formId
+    },
+    saveworkflow() {
+      if (this.savecondition) {
+      this.packageflow()
+       this.workflow.version = this.workflow.version + 1
+      workflowUpdata(Object.assign(this.workflow)).then(res => {
+      if (res.success) {
+           this.$message.success('鎻愪氦鎴愬姛')
+        } else {
+        this.$message.error('鎻愪氦澶辫触' + res.message)
+        }
+     })
+     } else {
+       this.$message.warning('璇峰畬鍠勬祦绋嬪熀鏈俊鎭�')
+     }
+    }
+  }
+}
+</script>
+<style scoped>
+.steps-content {
+  margin-top: 16px;
+  border-radius: 6px;
+  min-height: 200px;
+  text-align: center;
+  padding-top: 15px;
+}
+.steps-next {
+  text-align:center;
+  margin-top: 24px;
+  margin-right: 24px;
+}
+.steps-send {
+  text-align:right;
+  margin-top: 24px;
+  margin-right: 400px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/index.vue
new file mode 100644
index 0000000..75f7bcc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/index.vue
@@ -0,0 +1,136 @@
+<template>
+  <div>
+    <x-card v-if="hasPerm('workflowdefinition:page')">
+      <div slot="content" class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="娴佺▼鍚嶇О">
+                <a-input v-model="queryParam.title" allow-clear placeholder="璇疯緭鍏ユ祦绋嬪悕绉�" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+    </x-card>
+    <a-card :bordered="false">
+      <a-spin :spinning="loading">
+        <s-table
+          ref="table"
+          :columns="columns"
+          :data="loadData"
+          :alert="true"
+          :rowKey="(record) => record.id">
+          <template slot="operator" v-if="hasPerm('workflowdefinition:create')">
+            <a-button @click="createWorkflow()" icon="plus" type="primary" v-if="hasPerm('workflowdefinition:create')">鏂板宸ヤ綔娴�</a-button>
+          </template>
+          <span slot="action" slot-scope="text, record">
+            <a v-if="hasPerm('workflowmanager:start')" @click="startworkflow(record.id,record.version,record.formId)" >鍙戣捣娴佺▼</a>
+            <a-divider type="vertical" v-if="hasPerm('workflowmanager:start') & hasPerm('workflowdefinition:edit')" />
+            <a v-if="hasPerm('workflowdefinition:edit')" @click="editworkflow(record.id,record.version)" >淇敼</a>
+            <a-divider type="vertical" v-if="hasPerm('workflowdefinition:delete') & hasPerm('workflowdefinition:edit')" />
+            <a-popconfirm v-if="hasPerm('workflowdefinition:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => deleteworkflow(record.id)">
+              <a>鍒犻櫎</a>
+            </a-popconfirm>
+          </span>
+        </s-table>
+      </a-spin>
+    </a-card>
+    <start-workflow ref="startworkflow"></start-workflow>
+  </div>
+</template>
+
+<script>
+import { STable, XCard } from '@/components'
+import { getWorkflowDefinitionList, deleteWorkflowDefinition } from '@/api/modular/system/workflowManage'
+import StartWorkflow from './startworkflow.vue'
+export default {
+  name: 'WorkflowList',
+  components: {
+    STable,
+    XCard,
+    StartWorkflow
+  },
+  data() {
+    return {
+      queryParam: {},
+      loading: true,
+      columns: [
+        {
+          title: '鏍囬',
+          dataIndex: 'title'
+        },
+        {
+          title: '娴佺▼鐗堟湰',
+          dataIndex: 'version'
+        },
+        {
+          title: '鍒涘缓浜�',
+          dataIndex: 'createdUserName'
+        },
+        {
+          title: '鍒涘缓鏃堕棿',
+          dataIndex: 'createdTime'
+        },
+        {
+          title: '鎿嶄綔',
+          dataIndex: 'action',
+          scopedSlots: {
+            customRender: 'action'
+          }
+        }
+      ],
+      // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+      loadData: parameter => {
+        return getWorkflowDefinitionList(Object.assign(parameter, this.queryParam)).then((res) => {
+          this.loading = false
+          return res.data
+        })
+      }
+    }
+  },
+  methods: {
+    // 鏂板缓宸ヤ綔娴�
+    createWorkflow() {
+      this.$nextTick(() => {
+        this.$router.push({ path: '/workflowmanage/create' })
+      })
+    },
+    // 鍙戣捣娴佺▼
+    startworkflow(id, version, formId) {
+      if (formId === null) {
+
+      } else {
+        this.$refs.startworkflow.init(id, version, formId)
+      }
+    },
+    // 淇敼娴佺▼
+    editworkflow(id, version) {
+       this.$nextTick(() => {
+        this.$router.push({ name: 'sys_workflow_edit', params: { id: id, version: version } })
+      })
+    },
+    // 鍒犻櫎娴佺▼
+    deleteworkflow(Id) {
+      deleteWorkflowDefinition(Object.assign({ Id: Id })).then(res => {
+        if (res.success === true) {
+          this.$refs.table.refresh(true)
+          this.$message.success(res.message)
+        } else {
+          this.$message.error(res.message)
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/startworkflow.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/startworkflow.vue
new file mode 100644
index 0000000..5ac1f40
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/startworkflow.vue
@@ -0,0 +1,82 @@
+<template>
+  <a-modal
+    title="鍙戣捣娴佺▼"
+    :visible="visible"
+    width="1000px"
+    :destroyOnClose="true"
+    @ok="handleOk"
+    @cancel="handleCancel">
+    <k-form-build ref="kfb" :value="jsonData" />
+  </a-modal>
+</template>
+
+<script>
+import 'k-form-design/styles/k-form-design.less'
+import { formEntity } from '@/api/modular/system/formDesignmanage'
+import { startWorkflow } from '@/api/modular/system/workflowManage'
+export default {
+  name: 'StartWorkflow',
+  components: {
+    porpsWorkflowDefinitionId: {
+      type: Number,
+      default: null
+    },
+    porpsVersion: {
+      type: Number,
+      default: null
+    },
+    porpsFormId: {
+      type: Number,
+      default: null
+    }
+  },
+  data() {
+    return {
+      visible: false,
+      workflowdefinitionId: null,
+      version: null,
+      jsonData: {}
+    }
+  },
+  methods: {
+    // 鍒濆鍖�
+    init(workflowdefinitionid, version, formId) {
+      this.visible = true
+      this.workflowdefinitionId = workflowdefinitionid
+      this.version = version
+      formEntity(Object.assign({ id: formId })).then(res => {
+        console.log(res)
+        this.jsonData = JSON.parse(res.data.formJson)
+      })
+    },
+    // 鎻愪氦
+    handleOk() {
+      this.$refs.kfb.getData().then(values => {
+        var data = {
+          id: this.workflowdefinitionId,
+          version: this.version,
+          inputs: values
+        }
+        startWorkflow(data).then(res => {
+          if (res.success === true) {
+            this.$message.success('鍙戣捣娴佺▼鎴愬姛锛�')
+            this.handleCancel()
+          } else {
+             this.$message.error(res.message)
+          }
+        })
+      }).catch(() => {
+        console.log('楠岃瘉鏈�氳繃锛岃幏鍙栧け璐�')
+      })
+    },
+    // 鍙栨秷
+    handleCancel() {
+      this.visible = false
+    }
+  }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Login.vue b/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Login.vue
new file mode 100644
index 0000000..4e46b29
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Login.vue
@@ -0,0 +1,332 @@
+<template>
+  <div class="main">
+    <a-form
+      id="formLogin"
+      class="user-layout-login"
+      ref="formLogin"
+      :form="form"
+      @submit="handleSubmit"
+    >
+      <div>
+        <a-alert v-if="isLoginError" type="error" showIcon style="margin-bottom: 24px;" :message="this.accountLoginErrMsg" />
+        
+        <a-form-item>
+          <a-input
+            size="large"
+            type="text"
+            placeholder="璐﹀彿"
+            v-decorator="[
+              'account',{ initialValue:'', rules: [{ required: true, message: '璇疯緭鍏ヨ处鍙�' }, { validator: handleUsernameOrEmail }], validateTrigger: 'change'}
+            ]"
+          >
+            <a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }"/>
+          </a-input>
+        </a-form-item>
+        
+        <a-form-item>
+          <a-input
+            size="large"
+            type="password"
+            autocomplete="false"
+            placeholder="瀵嗙爜"
+            v-decorator="[
+              'password',
+              { initialValue:'', rules: [{ required: true, message: '璇疯緭鍏ュ瘑鐮�' }], validateTrigger: 'blur'}
+            ]"
+          >
+            <a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }"/>
+          </a-input>
+        </a-form-item>
+      </div>
+      <!-- <a-tabs
+        :activeKey="customActiveKey"
+        :tabBarStyle="{ textAlign: 'center', borderBottom: 'unset' }"
+        @change="handleTabClick"
+      >
+        <a-tab-pane key="tab1" tab="璐﹀彿瀵嗙爜鐧诲綍">
+          <a-alert v-if="isLoginError" type="error" showIcon style="margin-bottom: 24px;" :message="this.accountLoginErrMsg" />
+
+          <a-form-item>
+            <a-input
+              size="large"
+              type="text"
+              placeholder="璐﹀彿"
+              v-decorator="[
+                'account',{ initialValue:'', rules: [{ required: true, message: '璇疯緭鍏ヨ处鍙�' }, { validator: handleUsernameOrEmail }], validateTrigger: 'change'}
+              ]"
+            >
+              <a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }"/>
+            </a-input>
+          </a-form-item>
+
+          <a-form-item>
+            <a-input
+              size="large"
+              type="password"
+              autocomplete="false"
+              placeholder="瀵嗙爜"
+              v-decorator="[
+                'password',
+                { initialValue:'', rules: [{ required: true, message: '璇疯緭鍏ュ瘑鐮�' }], validateTrigger: 'blur'}
+              ]"
+            >
+              <a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }"/>
+            </a-input>
+          </a-form-item>
+        </a-tab-pane>
+        <a-tab-pane key="tab2" tab="鎵嬫満鍙风櫥褰�">
+          <a-alert v-if="isLoginError" type="error" showIcon style="margin-bottom: 24px;" :message="this.accountLoginErrMsg" />
+          <a-form-item>
+            <a-input size="large" type="text" placeholder="鎵嬫満鍙�" v-decorator="['mobile', {rules: [{ required: true, pattern: /^1[34578]\d{9}$/, message: '璇疯緭鍏ユ纭殑鎵嬫満鍙�' }], validateTrigger: 'change'}]">
+              <a-icon slot="prefix" type="mobile" :style="{ color: 'rgba(0,0,0,.25)' }"/>
+            </a-input>
+          </a-form-item>
+
+          <a-row :gutter="16">
+            <a-col class="gutter-row" :span="16">
+              <a-form-item>
+                <a-input size="large" type="text" placeholder="楠岃瘉鐮�" v-decorator="['captcha', {rules: [{ required: true, message: '璇疯緭鍏ラ獙璇佺爜' }], validateTrigger: 'blur'}]">
+                  <a-icon slot="prefix" type="mail" :style="{ color: 'rgba(0,0,0,.25)' }"/>
+                </a-input>
+              </a-form-item>
+            </a-col>
+            <a-col class="gutter-row" :span="8">
+              <a-button
+                class="getCaptcha"
+                tabindex="-1"
+                :disabled="state.smsSendBtn"
+                @click.stop.prevent="getCaptcha"
+                v-text="!state.smsSendBtn && '鑾峰彇楠岃瘉鐮�' || (state.time+' s')"
+              ></a-button>
+            </a-col>
+          </a-row>
+        </a-tab-pane>
+      </a-tabs> -->
+
+      <a-form-item class="check-white">
+        <a-checkbox v-decorator="['rememberMe', { valuePropName: 'checked' }]">璁颁綇鎴�</a-checkbox>
+      </a-form-item>
+
+      <!-- <a-form-item>
+        <Verify
+          @success="verifySuccess"
+          :mode="'pop'"
+          :captchaType="'clickWord'"
+          :imgSize="{ width: '330px', height: '155px' }"
+          ref="verify"
+        ></Verify>
+      </a-form-item> -->
+
+      <a-form-item style="margin-top:24px">
+        <a-button
+          size="large"
+          type="primary"
+          htmlType="submit"
+          class="login-button"
+          :loading="state.loginBtn"
+          :disabled="state.loginBtn"
+        >纭畾</a-button>
+      </a-form-item>
+
+      <!-- <div class="user-login-other">
+        <span>鍏朵粬鐧诲綍鏂瑰紡</span>
+        <a>
+          <a-icon class="item-icon" type="alipay-circle"></a-icon>
+        </a>
+        <a>
+          <a-icon class="item-icon" type="taobao-circle"></a-icon>
+        </a>
+        <a>
+          <a-icon class="item-icon" type="weibo-circle"></a-icon>
+        </a>
+        <router-link class="register" :to="{ name: 'register' }">娉ㄥ唽璐︽埛</router-link>
+      </div> -->
+    </a-form>
+  </div>
+</template>
+
+<script>
+import Vue from 'vue'
+import { mapActions } from 'vuex'
+import { getSmsCaptcha, getCaptchaOpen } from '@/api/modular/system/loginManage'
+
+export default {
+  data () {
+    return {
+      customActiveKey: 'tab1',
+      loginBtn: false,
+      // login type: 0 email, 1 username, 2 telephone
+      loginType: 0,
+      isLoginError: false,
+      requiredTwoStepCaptcha: false,
+      stepCaptchaVisible: false,
+      form: this.$form.createForm(this),
+      state: {
+        time: 60,
+        loginBtn: false,
+        // login type: 0 email, 1 username, 2 telephone
+        loginType: 0,
+        smsSendBtn: false
+      },
+      accountLoginErrMsg: '',
+      tenantOpen: false,
+      captchaOpen: false, // 鏄惁寮�鍚獙璇佺爜
+      tenantsList: [],
+      loginParams: [] // 鐧诲綍鍙傛暟
+
+    }
+  },
+  mounted () {
+    this.getLocalStorageData()
+  },
+  methods: {
+    ...mapActions(['Login', 'Logout', 'dictTypeData']),
+    // handler
+    handleUsernameOrEmail (rule, value, callback) {
+      const { state } = this
+      const regex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/
+      if (regex.test(value)) {
+        state.loginType = 0
+      } else {
+        state.loginType = 1
+      }
+      callback()
+    },
+    /* handleTabClick (key) {
+      this.isLoginError = false
+      this.customActiveKey = key
+      // this.form.resetFields()
+    }, */
+    handleSubmit (e) {
+      e.preventDefault()
+      const {
+        form: { validateFields },
+        state,
+        customActiveKey,
+        Login
+      } = this
+
+      state.loginBtn = true
+      const validateFieldsKey = customActiveKey === 'tab1' ? ['account', 'password'] : ['mobile', 'captcha']
+      if (this.tenantOpen) {
+        validateFieldsKey.push('tenantCode')
+      }
+      validateFields(validateFieldsKey, { force: true }, (err, values) => {
+        this.loginParams = values
+        if (!err) {
+          // 鏄惁寮�鍚獙璇佺爜
+          // if (this.captchaOpen) {
+          //   this.$refs.verify.show()
+          //   state.loginBtn = false
+          //   return
+          // }
+          const loginParams = { ...values }
+          delete loginParams.account
+          loginParams[!state.loginType ? 'account' : 'account'] = values.account
+          loginParams.password = values.password
+          if (this.tenantOpen) {
+            loginParams.tenantCode = values.tenantCode
+          }
+          Login(loginParams)
+            .then((res) => this.loginSuccess(res))
+            .catch(err => this.requestFailed(JSON.stringify(err)))
+            .finally(() => {
+              state.loginBtn = false
+            })
+        } else {
+          setTimeout(() => {
+            state.loginBtn = false
+          }, 600)
+        }
+      })
+    },
+    loginSuccess (res) {
+      this.setLocalStorageData()
+      this.$router.push({ path: '/' })
+      this.isLoginError = false
+      // 鍔犺浇瀛楀吀鎵�鏈夊瓧鍏稿埌缂撳瓨涓�
+      this.dictTypeData().then((res) => { })
+    },
+    requestFailed (err) {
+      this.accountLoginErrMsg = err
+      this.isLoginError = true
+    },
+    /**
+     * 浠� localStorage 涓鍙栦俊鎭�
+     */
+    getLocalStorageData () {
+      const account = Vue.ls.get('LOGIN_ACCOUNT')
+      if (account) {
+        this.form.setFieldsValue(
+          {
+            account: account,
+            rememberMe: true
+          }
+        )
+      }
+    },
+    /**
+     * 灏嗕俊鎭啓鍏� localStorage
+     */
+    setLocalStorageData () {
+      if (this.form.getFieldValue('rememberMe')) {
+        Vue.ls.set('LOGIN_ACCOUNT', this.form.getFieldValue('account'))
+      } else {
+        Vue.ls.remove('LOGIN_ACCOUNT')
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.user-layout-login {
+  .check-white{
+    color:#fff;
+  }
+  
+  label {
+    font-size: 14px;
+  }
+
+  .getCaptcha {
+    display: block;
+    width: 100%;
+    height: 40px;
+  }
+
+  .forge-password {
+    font-size: 14px;
+  }
+
+  button.login-button {
+    padding: 0 15px;
+    font-size: 16px;
+    height: 40px;
+    width: 100%;
+  }
+
+  .user-login-other {
+    text-align: left;
+    margin-top: 24px;
+    line-height: 22px;
+
+    .item-icon {
+      font-size: 24px;
+      color: rgba(0, 0, 0, 0.2);
+      margin-left: 16px;
+      vertical-align: middle;
+      cursor: pointer;
+      transition: color 0.3s;
+
+      &:hover {
+        color: #1890ff;
+      }
+    }
+
+    .register {
+      float: right;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Register.vue b/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Register.vue
new file mode 100644
index 0000000..32c0c3c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Register.vue
@@ -0,0 +1,316 @@
+<template>
+  <div class="main user-layout-register">
+    <h3><span>娉ㄥ唽</span></h3>
+    <a-form ref="formRegister" :form="form" id="formRegister">
+      <a-form-item>
+        <a-input
+          size="large"
+          type="text"
+          placeholder="閭"
+          v-decorator="['email', {rules: [{ required: true, type: 'email', message: '璇疯緭鍏ラ偖绠卞湴鍧�' }], validateTrigger: ['change', 'blur']}]"
+        ></a-input>
+      </a-form-item>
+
+      <a-popover
+        placement="rightTop"
+        :trigger="['focus']"
+        :getPopupContainer="(trigger) => trigger.parentElement"
+        v-model="state.passwordLevelChecked">
+        <template slot="content">
+          <div :style="{ width: '240px' }" >
+            <div :class="['user-register', passwordLevelClass]">寮哄害锛�<span>{{ passwordLevelName }}</span></div>
+            <a-progress :percent="state.percent" :showInfo="false" :strokeColor=" passwordLevelColor " />
+            <div style="margin-top: 10px;">
+              <span>璇疯嚦灏戣緭鍏� 6 涓瓧绗︺�傝涓嶈浣跨敤瀹规槗琚寽鍒扮殑瀵嗙爜銆�</span>
+            </div>
+          </div>
+        </template>
+        <a-form-item>
+          <a-input
+            size="large"
+            type="password"
+            @click="handlePasswordInputClick"
+            autocomplete="false"
+            placeholder="鑷冲皯6浣嶅瘑鐮侊紝鍖哄垎澶у皬鍐�"
+            v-decorator="['password', {rules: [{ required: true, message: '鑷冲皯6浣嶅瘑鐮侊紝鍖哄垎澶у皬鍐�'}, { validator: this.handlePasswordLevel }], validateTrigger: ['change', 'blur']}]"
+          ></a-input>
+        </a-form-item>
+      </a-popover>
+
+      <a-form-item>
+        <a-input
+          size="large"
+          type="password"
+          autocomplete="false"
+          placeholder="纭瀵嗙爜"
+          v-decorator="['password2', {rules: [{ required: true, message: '鑷冲皯6浣嶅瘑鐮侊紝鍖哄垎澶у皬鍐�' }, { validator: this.handlePasswordCheck }], validateTrigger: ['change', 'blur']}]"
+        ></a-input>
+      </a-form-item>
+
+      <a-form-item>
+        <a-input size="large" placeholder="11 浣嶆墜鏈哄彿" v-decorator="['mobile', {rules: [{ required: true, message: '璇疯緭鍏ユ纭殑鎵嬫満鍙�', pattern: /^1[3456789]\d{9}$/ }, { validator: this.handlePhoneCheck } ], validateTrigger: ['change', 'blur'] }]">
+          <a-select slot="addonBefore" size="large" defaultValue="+86">
+            <a-select-option value="+86">+86</a-select-option>
+            <a-select-option value="+87">+87</a-select-option>
+          </a-select>
+        </a-input>
+      </a-form-item>
+      <!--<a-input-group size="large" compact>
+            <a-select style="width: 20%" size="large" defaultValue="+86">
+              <a-select-option value="+86">+86</a-select-option>
+              <a-select-option value="+87">+87</a-select-option>
+            </a-select>
+            <a-input style="width: 80%" size="large" placeholder="11 浣嶆墜鏈哄彿"></a-input>
+          </a-input-group>-->
+
+      <a-row :gutter="16">
+        <a-col class="gutter-row" :span="16">
+          <a-form-item>
+            <a-input size="large" type="text" placeholder="楠岃瘉鐮�" v-decorator="['captcha', {rules: [{ required: true, message: '璇疯緭鍏ラ獙璇佺爜' }], validateTrigger: 'blur'}]">
+              <a-icon slot="prefix" type="mail" :style="{ color: 'rgba(0,0,0,.25)' }"/>
+            </a-input>
+          </a-form-item>
+        </a-col>
+        <a-col class="gutter-row" :span="8">
+          <a-button
+            class="getCaptcha"
+            size="large"
+            :disabled="state.smsSendBtn"
+            @click.stop.prevent="getCaptcha"
+            v-text="!state.smsSendBtn && '鑾峰彇楠岃瘉鐮�'||(state.time+' s')"></a-button>
+        </a-col>
+      </a-row>
+
+      <a-form-item>
+        <a-button
+          size="large"
+          type="primary"
+          htmlType="submit"
+          class="register-button"
+          :loading="registerBtn"
+          @click.stop.prevent="handleSubmit"
+          :disabled="registerBtn">娉ㄥ唽
+        </a-button>
+        <router-link class="login" :to="{ name: 'login' }">浣跨敤宸叉湁璐︽埛鐧诲綍</router-link>
+      </a-form-item>
+
+    </a-form>
+  </div>
+</template>
+
+<script>
+import { mixinDevice } from '@/utils/mixin.js'
+import { getSmsCaptcha } from '@/api/modular/system/loginManage'
+
+const levelNames = {
+  0: '浣�',
+  1: '浣�',
+  2: '涓�',
+  3: '寮�'
+}
+const levelClass = {
+  0: 'error',
+  1: 'error',
+  2: 'warning',
+  3: 'success'
+}
+const levelColor = {
+  0: '#ff0000',
+  1: '#ff0000',
+  2: '#ff7e05',
+  3: '#52c41a'
+}
+export default {
+  name: 'Register',
+  components: {
+  },
+  mixins: [mixinDevice],
+  data () {
+    return {
+      form: this.$form.createForm(this),
+
+      state: {
+        time: 60,
+        smsSendBtn: false,
+        passwordLevel: 0,
+        passwordLevelChecked: false,
+        percent: 10,
+        progressColor: '#FF0000'
+      },
+      registerBtn: false
+    }
+  },
+  computed: {
+    passwordLevelClass () {
+      return levelClass[this.state.passwordLevel]
+    },
+    passwordLevelName () {
+      return levelNames[this.state.passwordLevel]
+    },
+    passwordLevelColor () {
+      return levelColor[this.state.passwordLevel]
+    }
+  },
+  methods: {
+    handlePasswordLevel (rule, value, callback) {
+      let level = 0
+
+      // 鍒ゆ柇杩欎釜瀛楃涓蹭腑鏈夋病鏈夋暟瀛�
+      if (/[0-9]/.test(value)) {
+        level++
+      }
+      // 鍒ゆ柇瀛楃涓蹭腑鏈夋病鏈夊瓧姣�
+      if (/[a-zA-Z]/.test(value)) {
+        level++
+      }
+      // 鍒ゆ柇瀛楃涓蹭腑鏈夋病鏈夌壒娈婄鍙�
+      if (/[^0-9a-zA-Z_]/.test(value)) {
+        level++
+      }
+      this.state.passwordLevel = level
+      this.state.percent = level * 30
+      if (level >= 2) {
+        if (level >= 3) {
+          this.state.percent = 100
+        }
+        callback()
+      } else {
+        if (level === 0) {
+          this.state.percent = 10
+        }
+        callback(new Error('瀵嗙爜寮哄害涓嶅'))
+      }
+    },
+
+    handlePasswordCheck (rule, value, callback) {
+      const password = this.form.getFieldValue('password')
+      if (value === undefined) {
+        callback(new Error('璇疯緭鍏ュ瘑鐮�'))
+      }
+      if (value && password && value.trim() !== password.trim()) {
+        callback(new Error('涓ゆ瀵嗙爜涓嶄竴鑷�'))
+      }
+      callback()
+    },
+
+    handlePhoneCheck (rule, value, callback) {
+      callback()
+    },
+
+    handlePasswordInputClick () {
+      if (!this.isMobile()) {
+        this.state.passwordLevelChecked = true
+        return
+      }
+      this.state.passwordLevelChecked = false
+    },
+
+    handleSubmit () {
+      const { form: { validateFields }, state, $router } = this
+      validateFields({ force: true }, (err, values) => {
+        if (!err) {
+          state.passwordLevelChecked = false
+          $router.push({ name: 'registerResult', params: { ...values } })
+        }
+      })
+    },
+
+    getCaptcha (e) {
+      e.preventDefault()
+      const { form: { validateFields }, state, $message, $notification } = this
+
+      validateFields(['mobile'], { force: true },
+        (err, values) => {
+          if (!err) {
+            state.smsSendBtn = true
+
+            const interval = window.setInterval(() => {
+              if (state.time-- <= 0) {
+                state.time = 60
+                state.smsSendBtn = false
+                window.clearInterval(interval)
+              }
+            }, 1000)
+
+            const hide = $message.loading('楠岃瘉鐮佸彂閫佷腑..', 0)
+
+            getSmsCaptcha({ mobile: values.mobile }).then(res => {
+              setTimeout(hide, 2500)
+              $notification['success']({
+                message: '鎻愮ず',
+                description: '楠岃瘉鐮佽幏鍙栨垚鍔燂紝鎮ㄧ殑楠岃瘉鐮佷负锛�' + res.result.captcha,
+                duration: 8
+              })
+            }).catch(err => {
+              setTimeout(hide, 1)
+              clearInterval(interval)
+              state.time = 60
+              state.smsSendBtn = false
+              this.requestFailed(err)
+            })
+          }
+        }
+      )
+    },
+    requestFailed (err) {
+      this.$notification['error']({
+        message: '閿欒',
+        description: ((err.response || {}).data || {}).message || '璇锋眰鍑虹幇閿欒锛岃绋嶅悗鍐嶈瘯',
+        duration: 4
+      })
+      this.registerBtn = false
+    }
+  },
+  watch: {
+    'state.passwordLevel' (val) {
+    }
+  }
+}
+</script>
+<style lang="less">
+  .user-register {
+
+    &.error {
+      color: #ff0000;
+    }
+
+    &.warning {
+      color: #ff7e05;
+    }
+
+    &.success {
+      color: #52c41a;
+    }
+
+  }
+
+  .user-layout-register {
+    .ant-input-group-addon:first-child {
+      background-color: #fff;
+    }
+  }
+</style>
+<style lang="less" scoped>
+  .user-layout-register {
+
+    & > h3 {
+      font-size: 16px;
+      margin-bottom: 20px;
+    }
+
+    .getCaptcha {
+      display: block;
+      width: 100%;
+      height: 40px;
+    }
+
+    .register-button {
+      width: 50%;
+    }
+
+    .login {
+      float: right;
+      line-height: 40px;
+    }
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/RegisterResult.vue b/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/RegisterResult.vue
new file mode 100644
index 0000000..5a807e0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/RegisterResult.vue
@@ -0,0 +1,50 @@
+<template>
+  <result
+    :isSuccess="true"
+    :content="false"
+    :title="email"
+    :description="description">
+
+    <template slot="action">
+      <a-button size="large" type="primary">鏌ョ湅閭</a-button>
+      <a-button size="large" style="margin-left: 8px" @click="goHomeHandle">杩斿洖棣栭〉</a-button>
+    </template>
+
+  </result>
+</template>
+
+<script>
+import { Result } from '@/components'
+
+export default {
+  name: 'RegisterResult',
+  components: {
+    Result
+  },
+  data () {
+    return {
+      description: '婵�娲婚偖浠跺凡鍙戦�佸埌浣犵殑閭涓紝閭欢鏈夋晥鏈熶负24灏忔椂銆傝鍙婃椂鐧诲綍閭锛岀偣鍑婚偖浠朵腑鐨勯摼鎺ユ縺娲诲笎鎴枫��',
+      form: {}
+    }
+  },
+  computed: {
+    email () {
+      const v = this.form && this.form.email || 'xxx'
+      const title = `浣犵殑璐︽埛锛�${v} 娉ㄥ唽鎴愬姛`
+      return title
+    }
+  },
+  created () {
+    this.form = this.$route.params
+  },
+  methods: {
+    goHomeHandle () {
+      this.$router.push({ name: 'login' })
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/vue.config.js b/iWare_RawMaterialWarehouse_Web/vue.config.js
new file mode 100644
index 0000000..82ca2bf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/vue.config.js
@@ -0,0 +1,141 @@
+const path = require('path')
+const webpack = require('webpack')
+const createThemeColorReplacerPlugin = require('./config/plugin.config')
+const CompressionWebpackPlugin = require('compression-webpack-plugin')
+const productionGzipExtensions = ['js', 'css']
+
+function resolve(dir) {
+  return path.join(__dirname, dir)
+}
+
+// const isProd = process.env.NODE_ENV === 'production'
+
+// const assetsCDN = {
+//   // webpack build externals
+//   externals: {
+//     vue: 'Vue',
+//     'vue-router': 'VueRouter',
+//     vuex: 'Vuex',
+//     axios: 'axios'
+//   },
+//   css: [],
+//   // https://unpkg.com/browse/vue@2.6.10/
+//   js: [
+//     '//cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js',
+//     '//cdn.jsdelivr.net/npm/vue-router@3.1.3/dist/vue-router.min.js',
+//     '//cdn.jsdelivr.net/npm/vuex@3.1.1/dist/vuex.min.js',
+//     '//cdn.jsdelivr.net/npm/axios@0.19.0/dist/axios.min.js'
+//   ]
+// }
+
+// vue.config.js
+const vueConfig = {
+  lintOnSave: false, // 鍏抽棴eslintrc璇硶妫�鏌�
+
+  configureWebpack: {
+    // webpack plugins
+    plugins: [
+      // Ignore all locale files of moment.js
+      // new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
+      new webpack.IgnorePlugin({
+        resourceRegExp: /^\.\/locale$/,
+        contextRegExp: /moment$/
+      }),
+      // maxChunks锛氫娇鐢ㄥぇ浜庢垨绛変簬 1 鐨勫�硷紝鏉ラ檺鍒� chunk 鐨勬渶澶ф暟閲忋�備娇鐢� 1 闃叉娣诲姞浠讳綍鍏朵粬棰濆鐨� chunk锛岃繖鏄洜涓篹ntry/main chunk 涔熶細鍖呭惈鍦ㄨ鏁颁箣涓��
+      // minChunkSize: 璁剧疆 chunk 鐨勬渶灏忓ぇ灏忋��
+      // 鍦ㄥ悎骞� chunk 鏃讹紝webpack 浼氬皾璇曡瘑鍒嚭鍏锋湁閲嶅妯″潡鐨� chunk锛屽苟浼樺厛杩涜鍚堝苟銆備换浣曟ā鍧楅兘涓嶄細琚悎骞跺埌 entry   chunk 涓紝浠ュ厤褰卞搷鍒濆椤甸潰鍔犺浇鏃堕棿銆�
+      new webpack.optimize.LimitChunkCountPlugin({
+        maxChunks: 5,
+        minChunkSize: 100
+      }),
+      // 閰嶇疆compression-webpack-plugin鍘嬬缉
+      new CompressionWebpackPlugin({
+        algorithm: 'gzip',
+        test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
+        threshold: 10240,
+        minRatio: 0.8,
+        deleteOriginalAssets: false // 鏄惁鍒犻櫎婧愭枃浠� 榛樿涓簍rue   濡傛灉Nginx閰嶇疆浜唃zip鍙互true锛屽惁鍒欏垹浜嗘簮鏂囦欢灏变笉鑳芥甯歌闂簡
+      })
+    ]
+    // if prod, add externals
+    // externals: isProd ? assetsCDN.externals : {}
+  },
+
+  chainWebpack: (config) => {
+    config.resolve.alias
+      .set('@$', resolve('src'))
+
+    const svgRule = config.module.rule('svg')
+    svgRule.uses.clear()
+    svgRule
+      .oneOf('inline')
+      .resourceQuery(/inline/)
+      .use('vue-svg-icon-loader')
+      .loader('vue-svg-icon-loader')
+      .end()
+      .end()
+      .oneOf('external')
+      .use('file-loader')
+      .loader('file-loader')
+      .options({
+        name: 'assets/[name].[hash:8].[ext]'
+      })
+
+    // // if prod is on
+    // // assets require on cdn
+    // if (isProd) {
+    //   config.plugin('html').tap(args => {
+    //     args[0].cdn = assetsCDN
+    //     return args
+    //   })
+    // }
+  },
+
+  css: {
+    loaderOptions: {
+      less: {
+        modifyVars: {
+          'primary-color': '#FA541C',
+          'layout-color': '#FA541C',
+          'border-radius-base': '2px'
+        },
+        // DO NOT REMOVE THIS LINE
+        javascriptEnabled: true
+      }
+    }
+  },
+
+  devServer: {
+    port: 81,
+    proxy: {
+      '/api': {
+        target: process.env.VUE_APP_API_BASE_URL,
+        ws: false,
+        changeOrigin: true
+        // pathRewrite: {
+        //   '^/api': '' // 闇�瑕乺ewrite鐨�,
+        // }
+      },
+      '/hubs': {
+        target: process.env.VUE_APP_SOCKET_BASE_URL,
+        ws: true,
+        changeOrigin: true
+      }
+    }
+  },
+
+  // disable source map in production
+  productionSourceMap: false,
+  // babel-loader no-ignore node_modules/*
+  transpileDependencies: []
+}
+
+// preview.pro.loacg.com only do not use in your production;
+if (process.env.VUE_APP_PREVIEW === 'true') {
+  // eslint-disable-next-line no-labels
+  // runtimeCompiler: true,
+  // add `ThemeColorReplacer` plugin to webpack plugins
+  vueConfig.configureWebpack.plugins.push(createThemeColorReplacerPlugin())
+}
+
+module.exports = vueConfig
diff --git a/iWare_RawMaterialWarehouse_Web/web.config b/iWare_RawMaterialWarehouse_Web/web.config
new file mode 100644
index 0000000..c9fc9d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/web.config
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+  <system.webServer>
+    <rewrite>
+      <rules>
+        <rule name="api" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
+          <match url="*api/*" />
+          <action type="Rewrite" url="http://localhost:7788/{R:2}" />
+        </rule>
+        <rule name="hubs" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
+          <match url="*hubs/*" />
+          <action type="Rewrite" url="http://localhost:7788/hubs/{R:2}" />
+        </rule>
+        <rule name="index" stopProcessing="true">
+          <match url="^((?!(api)).)*$" />
+          <conditions>
+                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
+                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
+          </conditions>
+          <action type="Rewrite" url="/" />
+        </rule>
+      </rules>
+    </rewrite>
+  </system.webServer>
+</configuration>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/webstorm.config.js b/iWare_RawMaterialWarehouse_Web/webstorm.config.js
new file mode 100644
index 0000000..9117455
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/webstorm.config.js
@@ -0,0 +1,3 @@
+'use strict'
+const webpackConfig = require('@vue/cli-service/webpack.config.js')
+module.exports = webpackConfig
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.csproj b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.csproj
new file mode 100644
index 0000000..a6380a0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.csproj
@@ -0,0 +1,57 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>disable</Nullable>
+    <DocumentationFile>Admin.NET.Application.xml</DocumentationFile>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Compile Remove="Entity\**" />
+    <Compile Remove="Service\System\StepBody\**" />
+    <Compile Remove="Service\System\Tenant\**" />
+    <Compile Remove="Service\System\Workflow\**" />
+    <Compile Remove="StepBody\**" />
+    <Compile Remove="System\**" />
+    <Compile Remove="Workflow\**" />
+    <EmbeddedResource Remove="Entity\**" />
+    <EmbeddedResource Remove="Service\System\StepBody\**" />
+    <EmbeddedResource Remove="Service\System\Tenant\**" />
+    <EmbeddedResource Remove="Service\System\Workflow\**" />
+    <EmbeddedResource Remove="StepBody\**" />
+    <EmbeddedResource Remove="System\**" />
+    <EmbeddedResource Remove="Workflow\**" />
+    <None Remove="Entity\**" />
+    <None Remove="Service\System\StepBody\**" />
+    <None Remove="Service\System\Tenant\**" />
+    <None Remove="Service\System\Workflow\**" />
+    <None Remove="StepBody\**" />
+    <None Remove="System\**" />
+    <None Remove="Workflow\**" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <None Remove="applicationsettings.json" />
+    <None Remove="HuaRui.Les.Application.xml" />
+    <None Remove="Admin.NET.Application.xml" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Content Include="Admin.NET.Application.xml" />
+    <Content Include="applicationsettings.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="EFCore.BulkExtensions" Version="6.5.6" />
+    <PackageReference Include="WorkflowCore" Version="3.6.4" />
+    <PackageReference Include="WorkflowCore.DSL" Version="3.6.4" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\Admin.NET.Core\Admin.NET.Core.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.xml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.xml
new file mode 100644
index 0000000..fc93696
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.xml
@@ -0,0 +1,25607 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>Admin.NET.Application</name>
+    </assembly>
+    <members>
+        <member name="T:Admin.NET.Application.CodeGenHelper">
+            <summary>
+            浠g爜鐢熸垚甯姪绫�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGenHelper.ValidateCodeGenConfig(System.Collections.Generic.List{Admin.NET.Core.SysCodeGenConfig})">
+            <summary>
+            鏍¢獙 浠g爜閰嶇疆
+            </summary>
+            <param name="list"></param>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGenHelper.ValidateCodeGenConfig(System.Collections.Generic.List{Admin.NET.Application.CodeGenConfig})">
+            <summary>
+            鏍¢獙 浠g爜閰嶇疆
+            </summary>
+            <param name="list"></param>
+        </member>
+        <member name="T:Admin.NET.Application.SysHelper">
+            <summary>
+            绯荤粺甯姪绫�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysHelper.GetUserName">
+            <summary>
+            鑾峰彇鐧诲綍浜虹殑鏄电О
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysHelper.GetUserId">
+            <summary>
+            鑾峰彇鐧诲綍浜虹殑鐢ㄦ埛id
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysHelper.GetNowTime">
+            <summary>
+            鑾峰彇褰撳墠鏃堕棿
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.CustomMapper">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.CustomMapper.Register(Mapster.TypeAdapterConfig)">
+            <summary>
+            
+            </summary>
+            <param name="config"></param>
+        </member>
+        <member name="T:Admin.NET.Application.BindEntranceService">
+            <summary>
+            鍏ュ簱绠$悊鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.BindEntranceService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterial,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.BindEntranceService.GetContainer(Admin.NET.Application.BindEntranceInput)">
+            <summary>
+            鎵樼洏鏌ヨ缁勭洏鐗╂枡
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.BindEntranceService.GetMaterial(Admin.NET.Application.GetMaterialInput)">
+            <summary>
+            鎵爜鑾峰彇鐗╂枡
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.BindEntranceService.AutoWare(Admin.NET.Application.WarehousingInput)">
+            <summary>
+             缁勭洏
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.BindEntranceService.AutomaticWarehousing(Admin.NET.Application.WarehousingInput)">
+            <summary>
+            鑷姩鍏ュ簱
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.BindEntranceService.ManualWarehousing(Admin.NET.Application.WarehousingInput)">
+            <summary>
+            浜哄伐鍏ュ簱
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.BindEntranceInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BindEntranceInput.ContainerCode">
+            <summary>
+            鎵樼洏鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WarehousingInput">
+            <summary>
+            缁勭洏杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WarehousingInput.ContainerCode">
+            <summary>
+            鎵樼洏鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WarehousingInput.PlaceCode">
+            <summary>
+            搴撲綅鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WarehousingInput.SourcePlace">
+            <summary>
+            鍏ュ簱璧峰浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WarehousingInput.WmsMaterials">
+            <summary>
+            鐗╂枡淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WarehousingMaterialInput">
+            <summary>
+            鐗╂枡鏄庣粏杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialId">
+            <summary>
+            鐗╂枡ID
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialType">
+            <summary>
+            鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WarehousingMaterialInput.InspectionMethod">
+            <summary>
+            鐗╂枡妫�楠�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialUnit">
+            <summary>
+            鐗╂枡鍗曚綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WarehousingMaterialInput.LesWorkshopSection">
+            <summary>
+            宸ユ
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetMaterialInput">
+            <summary>
+            鑾峰彇鐗╂枡杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetMaterialInput.MaterialNo">
+            <summary>
+            鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.BindEntranceOutput">
+            <summary>
+            缁勭洏鐗╂枡淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BindEntranceOutput.ContainerCode">
+            <summary>
+            鍛ㄨ浆绠卞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BindEntranceOutput.WmsContainer">
+            <summary>
+            鏂欑鍙蜂俊鎭�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BindEntranceOutput.PlaceCode">
+            <summary>
+            搴撲綅缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BindEntranceOutput.WmsMaterials">
+            <summary>
+            鐗╂枡鏄庣粏淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetMaterialContainerOutput">
+            <summary>
+             鐗╂枡鏄庣粏淇℃伅杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetMaterialContainerOutput.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetMaterialContainerOutput.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetMaterialContainerOutput.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetMaterialContainerOutput.MaterialType">
+            <summary>
+            鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetMaterialContainerOutput.InspectionMethod">
+            <summary>
+            鐗╂枡妫�楠�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetMaterialContainerOutput.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialOutput.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialOutput.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialOutput.MaterialId">
+            <summary>
+            鐗╂枡ID
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialOutput.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialOutput.MaterialType">
+            <summary>
+            鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialOutput.InspectionMethod">
+            <summary>
+            鐗╂枡妫�楠�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialOutput.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialOutput.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialOutput.MaterialUnit">
+            <summary>
+            鐗╂枡鍗曚綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialOutput.LesWorkshopSection">
+            <summary>
+            宸ユ
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ExWarehouseSearch">
+            <summary>
+             鐗╂枡鍑哄簱鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWarehouseSearch.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWarehouseSearch.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ExWarehouseInput">
+            <summary>
+            鍑哄簱杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWarehouseInput.ContainerCode">
+            <summary>
+            鎵樼洏鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWarehouseInput.ToPlace">
+            <summary>
+            鍑哄簱浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWarehouseInput.PlaceCode">
+            <summary>
+            搴撲綅缂栧彿
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.CallAirflareInput">
+            <summary>
+            鍛煎彨绌烘墭杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CallAirflareInput.Quantity">
+            <summary>
+            鍛煎彨绌烘墭鏁伴噺
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ExWareHouseOutput">
+            <summary>
+            鍑哄簱杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.MaterialType">
+            <summary>
+            鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.Long">
+            <summary>
+            闀�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.Wide">
+            <summary>
+            瀹�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.High">
+            <summary>
+            楂�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.InspectionMethod">
+            <summary>
+            妫�楠屾柟寮�;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.UnitType">
+            <summary>
+            鍗曚綅绫诲埆;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.UnitNo">
+            <summary>
+            鍗曚綅缂栧彿;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.StockNumber">
+            <summary>
+            瀹炵墿搴撳瓨鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.ContainerId">
+            <summary>
+            鎵樼洏Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.AreaId">
+            <summary>
+            搴撳尯Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ExWareHouseOutput.QuantityOfBill">
+            <summary>
+            璐﹂潰鏁伴噺
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ExWarehouseService">
+            <summary>
+            鍑哄簱绠$悊鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ExWarehouseService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterial,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ExWarehouseService.Page(Admin.NET.Application.ExWarehouseSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ鐗╂枡鍑哄簱绠$悊淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ExWarehouseService.AutoExWarehouse(System.Collections.Generic.List{Admin.NET.Application.ExWarehouseInput})">
+            <summary>
+            鑷姩鍑哄簱
+            </summary>
+            <param name="inputs"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ExWarehouseService.ManualExWarehouse(System.Collections.Generic.List{Admin.NET.Application.ExWarehouseInput})">
+            <summary>
+            浜哄伐鍑哄簱
+            </summary>
+            <param name="inputs"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ExWarehouseService.CallAirflare(Admin.NET.Application.CallAirflareInput)">
+            <summary>
+            鍛煎彨绌烘墭
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsAreaDto">
+            <summary>
+            搴撳尯淇℃伅杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaDto.AreaName">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaDto.AreaDesc">
+            <summary>
+            鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaDto.AreaStatus">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaDto.AreaType">
+            <summary>
+            鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaDto.IsSteel">
+            <summary>
+            鏄惁涓洪挗骞冲彴
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaDto.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaDto.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsAreaSearch">
+            <summary>
+            搴撳尯淇℃伅鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaSearch.AreaName">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaSearch.AreaDesc">
+            <summary>
+            鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaSearch.AreaStatus">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaSearch.AreaType">
+            <summary>
+            鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaSearch.IsSteel">
+            <summary>
+            鏄惁涓洪挗骞冲彴
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaSearch.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaSearch.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsAreaSearchNonPage">
+            <summary>
+            搴撳尯淇℃伅涓嶅垎椤垫煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaSearchNonPage.AreaName">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaSearchNonPage.AreaDesc">
+            <summary>
+            鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaSearchNonPage.AreaStatus">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaSearchNonPage.AreaType">
+            <summary>
+            鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaSearchNonPage.IsSteel">
+            <summary>
+            鏄惁涓洪挗骞冲彴
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaSearchNonPage.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaSearchNonPage.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsAreaInput">
+            <summary>
+            搴撳尯淇℃伅杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaInput.AreaName">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaInput.AreaDesc">
+            <summary>
+            鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaInput.AreaStatus">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaInput.AreaType">
+            <summary>
+            鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaInput.IsSteel">
+            <summary>
+            鏄惁涓洪挗骞冲彴
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaInput.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaInput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddWmsAreaInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteWmsAreaInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateWmsAreaInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWmsAreaInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryeWmsAreaInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsAreaOutput">
+            <summary>
+            搴撳尯淇℃伅杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaOutput.AreaName">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaOutput.AreaDesc">
+            <summary>
+            鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaOutput.AreaStatus">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaOutput.AreaType">
+            <summary>
+            鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaOutput.IsSteel">
+            <summary>
+            鏄惁涓洪挗骞冲彴
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaOutput.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsAreaOutput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsAreaService">
+            <summary>
+            搴撳尯淇℃伅鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAreaService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Admin.NET.Application.ISysExcelTemplateService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="wmsAreaRep"></param>
+            <param name="sysDictTypeRep"></param>
+            <param name="sysDictDataRep"></param>
+            <param name="sysExcelTemplateService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAreaService.Page(Admin.NET.Application.WmsAreaSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ搴撳尯淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAreaService.ListNonPageAsync(Admin.NET.Application.WmsAreaSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈠簱鍖轰俊鎭垪琛�
+            </summary>
+            <param name="input">搴撳尯淇℃伅鏌ヨ鍙傛暟</param>
+            <returns>(搴撳尯淇℃伅)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAreaService.Add(Admin.NET.Application.AddWmsAreaInput)">
+            <summary>
+            澧炲姞搴撳尯淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAreaService.Delete(Admin.NET.Application.DeleteWmsAreaInput)">
+            <summary>
+            鍒犻櫎搴撳尯淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAreaService.Update(Admin.NET.Application.UpdateWmsAreaInput)">
+            <summary>
+            鏇存柊搴撳尯淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAreaService.Get(Admin.NET.Application.QueryeWmsAreaInput)">
+            <summary>
+            鑾峰彇搴撳尯淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAreaService.List(Admin.NET.Application.WmsAreaInput)">
+            <summary>
+            鑾峰彇搴撳尯淇℃伅鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAreaService.TaskWmsArea">
+            <summary>
+            缁勮杞﹂棿鑾峰彇搴撳尯
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAreaService.GetAreaEntranceList">
+            <summary>
+            鑾峰彇浠撳簱涓嬫媺妗�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAreaService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆搴撳尯淇℃伅鍔熻兘
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAreaService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇搴撳尯淇℃伅鐨凟xcel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAreaService.ToExcelAsync(Admin.NET.Application.WmsAreaSearchNonPage)">
+            <summary>
+            鏍规嵁搴撳尯淇℃伅鏌ヨ鍙傛暟瀵煎嚭Excel
+            </summary>
+            <param name="input">搴撳尯淇℃伅鏌ヨ鍙傛暟</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsContainerDto">
+            <summary>
+            鎵樼洏淇℃伅杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.ContainerCode">
+            <summary>
+            缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.ContainerType">
+            <summary>
+            绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.ContainerStatus">
+            <summary>
+            鎵樼洏鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.SpecLength">
+            <summary>
+            闀垮害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.SpecWidth">
+            <summary>
+            瀹藉害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.SpecHeight">
+            <summary>
+            楂樺害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.LimitLength">
+            <summary>
+            闄愰暱
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.LimitWidth">
+            <summary>
+            闄愬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.LimitHeight">
+            <summary>
+            闄愰珮
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.MaxWeight">
+            <summary>
+            杞介噸涓婇檺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.ParentContainerId">
+            <summary>
+            鐖舵墭鐩業d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.AssetNo">
+            <summary>
+            璧勪骇缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.ContainerCategory">
+            <summary>
+            鎵樼洏鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.ErpNo">
+            <summary>
+            Erp鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.IsVirtually">
+            <summary>
+            鏄惁铏氭嫙
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerDto.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsContainerSearch">
+            <summary>
+            鎵樼洏淇℃伅鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.ContainerCode">
+            <summary>
+            缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.ContainerType">
+            <summary>
+            绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.ContainerStatus">
+            <summary>
+            鎵樼洏鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.SpecLength">
+            <summary>
+            闀垮害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.SpecWidth">
+            <summary>
+            瀹藉害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.SpecHeight">
+            <summary>
+            楂樺害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.LimitLength">
+            <summary>
+            闄愰暱
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.LimitWidth">
+            <summary>
+            闄愬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.LimitHeight">
+            <summary>
+            闄愰珮
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.MaxWeight">
+            <summary>
+            杞介噸涓婇檺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.ParentContainerId">
+            <summary>
+            鐖舵墭鐩業d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.AssetNo">
+            <summary>
+            璧勪骇缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.ContainerCategory">
+            <summary>
+            鎵樼洏鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.ErpNo">
+            <summary>
+            Erp鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.IsVirtually">
+            <summary>
+            鏄惁铏氭嫙
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearch.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsContainerSearchNonPage">
+            <summary>
+            鎵樼洏淇℃伅涓嶅垎椤垫煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.ContainerCode">
+            <summary>
+            缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.ContainerType">
+            <summary>
+            绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.ContainerStatus">
+            <summary>
+            鎵樼洏鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.SpecLength">
+            <summary>
+            闀垮害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.SpecWidth">
+            <summary>
+            瀹藉害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.SpecHeight">
+            <summary>
+            楂樺害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.LimitLength">
+            <summary>
+            闄愰暱
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.LimitWidth">
+            <summary>
+            闄愬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.LimitHeight">
+            <summary>
+            闄愰珮
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.MaxWeight">
+            <summary>
+            杞介噸涓婇檺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.ParentContainerId">
+            <summary>
+            鐖舵墭鐩業d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.AssetNo">
+            <summary>
+            璧勪骇缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.ContainerCategory">
+            <summary>
+            鎵樼洏鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.ErpNo">
+            <summary>
+            Erp鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.IsVirtually">
+            <summary>
+            鏄惁铏氭嫙
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsContainerInput">
+            <summary>
+            鎵樼洏淇℃伅杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.ContainerCode">
+            <summary>
+            缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.ContainerType">
+            <summary>
+            绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.ContainerStatus">
+            <summary>
+            鎵樼洏鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.SpecLength">
+            <summary>
+            闀垮害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.SpecWidth">
+            <summary>
+            瀹藉害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.SpecHeight">
+            <summary>
+            楂樺害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.LimitLength">
+            <summary>
+            闄愰暱
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.LimitWidth">
+            <summary>
+            闄愬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.LimitHeight">
+            <summary>
+            闄愰珮
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.MaxWeight">
+            <summary>
+            杞介噸涓婇檺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.ParentContainerId">
+            <summary>
+            鐖舵墭鐩業d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.AssetNo">
+            <summary>
+            璧勪骇缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.ContainerCategory">
+            <summary>
+            鎵樼洏鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.ErpNo">
+            <summary>
+            Erp鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.IsVirtually">
+            <summary>
+            鏄惁铏氭嫙
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerInput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddWmsContainerInput.Quantity">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWmsContainerInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsContainerOutput">
+            <summary>
+            鎵樼洏淇℃伅杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.ContainerCode">
+            <summary>
+            缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.ContainerType">
+            <summary>
+            绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.ContainerStatus">
+            <summary>
+            鎵樼洏鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.SpecLength">
+            <summary>
+            闀垮害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.SpecWidth">
+            <summary>
+            瀹藉害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.SpecHeight">
+            <summary>
+            楂樺害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.LimitLength">
+            <summary>
+            闄愰暱
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.LimitWidth">
+            <summary>
+            闄愬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.LimitHeight">
+            <summary>
+            闄愰珮
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.MaxWeight">
+            <summary>
+            杞介噸涓婇檺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.ParentContainerId">
+            <summary>
+            鐖舵墭鐩業d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.AssetNo">
+            <summary>
+            璧勪骇缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.ContainerCategory">
+            <summary>
+            鎵樼洏鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.ErpNo">
+            <summary>
+            Erp鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.IsVirtually">
+            <summary>
+            鏄惁铏氭嫙
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsContainerOutput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.IWmsContainerService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsContainerService.Add(Admin.NET.Application.AddWmsContainerInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsContainerService.Delete(Admin.NET.Application.DeleteWmsContainerInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsContainerService.Get(Admin.NET.Application.QueryeWmsContainerInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsContainerService.List(Admin.NET.Application.WmsContainerInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsContainerService.Page(Admin.NET.Application.WmsContainerSearch)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsContainerService.Update(Admin.NET.Application.UpdateWmsContainerInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsContainerService.ListNonPageAsync(Admin.NET.Application.WmsContainerSearchNonPage)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsContainerService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            
+            </summary>
+            <param name="file"></param>
+            <param name="importExcelType"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsContainerService.DownloadExcelTemplate(System.String)">
+            <summary>
+            
+            </summary>
+            <param name="version"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsContainerMapper">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsContainerMapper.Register(Mapster.TypeAdapterConfig)">
+            <summary>
+            
+            </summary>
+            <param name="config"></param>
+        </member>
+        <member name="T:Admin.NET.Application.WmsContainerService">
+            <summary>
+            鎵樼洏淇℃伅鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsContainerService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Admin.NET.Application.ISysExcelTemplateService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsContainerService.Page(Admin.NET.Application.WmsContainerSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ鎵樼洏淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsContainerService.ListNonPageAsync(Admin.NET.Application.WmsContainerSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈡墭鐩樹俊鎭垪琛�
+            </summary>
+            <param name="input">鎵樼洏淇℃伅鏌ヨ鍙傛暟</param>
+            <returns>(鎵樼洏淇℃伅)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsContainerService.Add(Admin.NET.Application.AddWmsContainerInput)">
+            <summary>
+            澧炲姞鎵樼洏淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsContainerService.Delete(Admin.NET.Application.DeleteWmsContainerInput)">
+            <summary>
+            鍒犻櫎鎵樼洏淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsContainerService.Update(Admin.NET.Application.UpdateWmsContainerInput)">
+            <summary>
+            鏇存柊鎵樼洏淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsContainerService.Get(Admin.NET.Application.QueryeWmsContainerInput)">
+            <summary>
+            鑾峰彇鎵樼洏淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsContainerService.List(Admin.NET.Application.WmsContainerInput)">
+            <summary>
+            鑾峰彇鎵樼洏淇℃伅鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsContainerService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆鎵樼洏淇℃伅鍔熻兘
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsContainerService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇鎵樼洏淇℃伅鐨凟xcel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsContainerService.ToExcelAsync(Admin.NET.Application.WmsContainerSearchNonPage)">
+            <summary>
+            鏍规嵁鎵樼洏淇℃伅鏌ヨ鍙傛暟瀵煎嚭Excel
+            </summary>
+            <param name="input">鎵樼洏淇℃伅鏌ヨ鍙傛暟</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsMaterialDto">
+            <summary>
+            鐗╂枡淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialDto.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialDto.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialDto.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialDto.Description">
+            <summary>
+            鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialDto.MaterialType">
+            <summary>
+            鐗╂枡绫诲埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialDto.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialDto.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialDto.AreaNameParameter">
+            <summary>
+            搴撳尯鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialDto.StationNameParameter">
+            <summary>
+            宸ヤ綔鍖哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialDto.MaturationTime">
+            <summary>
+            鐔熷寲鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialDto.IsMaturation">
+            <summary>
+            鏄惁闇�瑕佺啛鍖�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsMaterialSearch">
+            <summary>
+            鐗╂枡淇℃伅鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.Description">
+            <summary>
+            鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.MaterialType">
+            <summary>
+            鐗╂枡绫诲埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.MaterialUnit">
+            <summary>
+            鐗╂枡鍗曚綅
+            </summary>
+            
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.AreaNameParameter">
+            <summary>
+            搴撳尯鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.StationNameParameter">
+            <summary>
+            宸ヤ綔鍖哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.MaturationTime">
+            <summary>
+            鐔熷寲鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.IsMaturation">
+            <summary>
+            鏄惁闇�瑕佺啛鍖�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.InspectionMethod">
+            <summary>
+            妫�楠屾柟寮�;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.Safeqty">
+            <summary>
+            瀹夊叏瀛橀噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.MaxImumqty">
+            <summary>
+            鏈�澶у瓨閲�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.MinstorageAge">
+            <summary>
+            鏈�灏忓簱榫�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialSearch.MaxstorageAge">
+            <summary>
+            鏈�澶у簱榫�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsMaterialInput">
+            <summary>
+            鐗╂枡淇℃伅杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.Description">
+            <summary>
+            鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.MaterialType">
+            <summary>
+            鐗╂枡绫诲埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.MaterialUnit">
+            <summary>
+            鐗╂枡鍗曚綅
+            </summary>
+            
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.AreaIds">
+            <summary>
+            搴撳尯Ids
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.AreaNameParameter">
+            <summary>
+            搴撳尯鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.StationIds">
+            <summary>
+            宸ヤ綔鍖篒ds
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.StationNameParameter">
+            <summary>
+            宸ヤ綔鍖哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.MaturationTime">
+            <summary>
+            鐔熷寲鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.IsMaturation">
+            <summary>
+            鏄惁闇�瑕佺啛鍖�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.LesWorkshopSection">
+            <summary>
+            宸ユ
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.InspectionMethod">
+            <summary>
+            妫�楠屾柟寮�;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.Safeqty">
+            <summary>
+            瀹夊叏瀛橀噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.MaxImumqty">
+            <summary>
+            鏈�澶у瓨閲�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.MinstorageAge">
+            <summary>
+            鏈�灏忓簱榫�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialInput.MaxstorageAge">
+            <summary>
+            鏈�澶у簱榫�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddWmsMaterialInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteWmsMaterialInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateWmsMaterialInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWmsMaterialInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryeWmsMaterialInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsMaterialOutput">
+            <summary>
+            鐗╂枡淇℃伅杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.Description">
+            <summary>
+            鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.MaterialType">
+            <summary>
+            鐗╂枡绫诲埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.MaterialUnit">
+            <summary>
+            鐗╂枡鍗曚綅
+            </summary>
+            
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.AreaIds">
+            <summary>
+            搴撳尯Ids
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.AreaNameParameter">
+            <summary>
+            搴撳尯鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.StationIds">
+            <summary>
+            宸ヤ綔鍖篒ds
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.StationNameParameter">
+            <summary>
+            宸ヤ綔鍖哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.MaturationTime">
+            <summary>
+            鐔熷寲鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.IsMaturation">
+            <summary>
+            鏄惁闇�瑕佺啛鍖�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.InspectionMethod">
+            <summary>
+            妫�楠屾柟寮�;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.Safeqty">
+            <summary>
+            瀹夊叏瀛橀噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.MaxImumqty">
+            <summary>
+            鏈�澶у瓨閲�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.MinstorageAge">
+            <summary>
+            鏈�灏忓簱榫�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialOutput.MaxstorageAge">
+            <summary>
+            鏈�澶у簱榫�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AreaListOutput">
+            <summary>
+            搴撳尯涓嬫媺妗嗚緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AreaListOutput.AreaId">
+            <summary>
+            鎵�鍦ㄥ簱鍖篒d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AreaListOutput.AreaName">
+            <summary>
+            搴撳尯鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.StationListOutput">
+            <summary>
+            宸ヤ綔鍖猴紙宸ヤ綅锛変笅鎷夋杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StationListOutput.StationId">
+            <summary>
+            绔欑偣Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StationListOutput.StationName">
+            <summary>
+            绔欑偣鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsMaterialService">
+            <summary>
+            鐗╂枡淇℃伅鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMaterialService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterial,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.LesStation,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMaterialService.Page(Admin.NET.Application.WmsMaterialSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ鐗╂枡淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMaterialService.Add(Admin.NET.Application.AddWmsMaterialInput)">
+            <summary>
+            澧炲姞鐗╂枡淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMaterialService.Delete(Admin.NET.Application.DeleteWmsMaterialInput)">
+            <summary>
+            鍒犻櫎鐗╂枡淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMaterialService.Update(Admin.NET.Application.UpdateWmsMaterialInput)">
+            <summary>
+            鏇存柊鐗╂枡淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMaterialService.Get(Admin.NET.Application.QueryeWmsMaterialInput)">
+            <summary>
+            鑾峰彇鐗╂枡淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMaterialService.List(Admin.NET.Application.WmsMaterialInput)">
+            <summary>
+            鑾峰彇鐗╂枡淇℃伅鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMaterialService.GetAreaList">
+            <summary>
+            搴撳尯涓嬫媺妗�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsMerchantinfoDto">
+            <summary>
+            瀹㈠晢淇℃伅琛ㄨ緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantNo">
+            <summary>
+            瀹㈠晢缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantName">
+            <summary>
+            瀹㈠晢鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantType">
+            <summary>
+            瀹㈠晢鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantShort">
+            <summary>
+            瀹㈠晢绠�绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantGrade">
+            <summary>
+            瀹㈠晢绛夌骇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantAttribute">
+            <summary>
+            瀹㈠晢灞炴��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantTmt">
+            <summary>
+            瀹㈠晢琛屼笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantContact">
+            <summary>
+            瀹㈠晢鑱旂郴浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantPhone">
+            <summary>
+            瀹㈠晢鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantFax">
+            <summary>
+            瀹㈠晢浼犵湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantEmail">
+            <summary>
+            瀹㈠晢閭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantAddress">
+            <summary>
+            瀹㈠晢鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoDto.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsMerchantinfoSearch">
+            <summary>
+            瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantNo">
+            <summary>
+            瀹㈠晢缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantName">
+            <summary>
+            瀹㈠晢鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantType">
+            <summary>
+            瀹㈠晢鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantShort">
+            <summary>
+            瀹㈠晢绠�绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantGrade">
+            <summary>
+            瀹㈠晢绛夌骇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantAttribute">
+            <summary>
+            瀹㈠晢灞炴��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantTmt">
+            <summary>
+            瀹㈠晢琛屼笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantContact">
+            <summary>
+            瀹㈠晢鑱旂郴浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantPhone">
+            <summary>
+            瀹㈠晢鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantFax">
+            <summary>
+            瀹㈠晢浼犵湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantEmail">
+            <summary>
+            瀹㈠晢閭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantAddress">
+            <summary>
+            瀹㈠晢鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsMerchantinfoSearchNonPage">
+            <summary>
+            瀹㈠晢淇℃伅琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantNo">
+            <summary>
+            瀹㈠晢缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantName">
+            <summary>
+            瀹㈠晢鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantType">
+            <summary>
+            瀹㈠晢鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantShort">
+            <summary>
+            瀹㈠晢绠�绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantGrade">
+            <summary>
+            瀹㈠晢绛夌骇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantAttribute">
+            <summary>
+            瀹㈠晢灞炴��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantTmt">
+            <summary>
+            瀹㈠晢琛屼笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantContact">
+            <summary>
+            瀹㈠晢鑱旂郴浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantPhone">
+            <summary>
+            瀹㈠晢鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantFax">
+            <summary>
+            瀹㈠晢浼犵湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantEmail">
+            <summary>
+            瀹㈠晢閭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantAddress">
+            <summary>
+            瀹㈠晢鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsMerchantinfoInput">
+            <summary>
+            瀹㈠晢淇℃伅琛ㄨ緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantNo">
+            <summary>
+            瀹㈠晢缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantName">
+            <summary>
+            瀹㈠晢鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantType">
+            <summary>
+            瀹㈠晢鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantShort">
+            <summary>
+            瀹㈠晢绠�绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantGrade">
+            <summary>
+            瀹㈠晢绛夌骇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantAttribute">
+            <summary>
+            瀹㈠晢灞炴��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantTmt">
+            <summary>
+            瀹㈠晢琛屼笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantContact">
+            <summary>
+            瀹㈠晢鑱旂郴浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantPhone">
+            <summary>
+            瀹㈠晢鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantFax">
+            <summary>
+            瀹㈠晢浼犵湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantEmail">
+            <summary>
+            瀹㈠晢閭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantAddress">
+            <summary>
+            瀹㈠晢鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoInput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWmsMerchantinfoInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsMerchantinfoOutput">
+            <summary>
+            瀹㈠晢淇℃伅琛ㄨ緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantNo">
+            <summary>
+            瀹㈠晢缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantName">
+            <summary>
+            瀹㈠晢鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantType">
+            <summary>
+            瀹㈠晢鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantShort">
+            <summary>
+            瀹㈠晢绠�绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantGrade">
+            <summary>
+            瀹㈠晢绛夌骇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantAttribute">
+            <summary>
+            瀹㈠晢灞炴��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantTmt">
+            <summary>
+            瀹㈠晢琛屼笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantContact">
+            <summary>
+            瀹㈠晢鑱旂郴浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantPhone">
+            <summary>
+            瀹㈠晢鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantFax">
+            <summary>
+            瀹㈠晢浼犵湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantEmail">
+            <summary>
+            瀹㈠晢閭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantAddress">
+            <summary>
+            瀹㈠晢鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsMerchantinfoService">
+            <summary>
+            瀹㈠晢淇℃伅琛ㄦ湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMerchantinfoService.Page(Admin.NET.Application.WmsMerchantinfoSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ瀹㈠晢淇℃伅琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMerchantinfoService.ListNonPageAsync(Admin.NET.Application.WmsMerchantinfoSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈠鍟嗕俊鎭〃鍒楄〃
+            </summary>
+            <param name="input">瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁�</param>
+            <returns>(瀹㈠晢淇℃伅琛�)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMerchantinfoService.Add(Admin.NET.Application.AddWmsMerchantinfoInput)">
+            <summary>
+            澧炲姞瀹㈠晢淇℃伅琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMerchantinfoService.Delete(Admin.NET.Application.DeleteWmsMerchantinfoInput)">
+            <summary>
+            鍒犻櫎瀹㈠晢淇℃伅琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMerchantinfoService.Update(Admin.NET.Application.UpdateWmsMerchantinfoInput)">
+            <summary>
+            鏇存柊瀹㈠晢淇℃伅琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMerchantinfoService.Get(Admin.NET.Application.QueryeWmsMerchantinfoInput)">
+            <summary>
+            鑾峰彇瀹㈠晢淇℃伅琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMerchantinfoService.List(Admin.NET.Application.WmsMerchantinfoInput)">
+            <summary>
+            鑾峰彇瀹㈠晢淇℃伅琛ㄥ垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMerchantinfoService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆瀹㈠晢淇℃伅琛ㄥ姛鑳�
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMerchantinfoService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇瀹㈠晢淇℃伅琛ㄧ殑Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsMerchantinfoService.ToExcelAsync(Admin.NET.Application.WmsMerchantinfoSearchNonPage)">
+            <summary>
+            鏍规嵁瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+            </summary>
+            <param name="input">瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁�</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsOrderTypeDto">
+            <summary>
+            鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeDto.Pid">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeDto.Pids">
+            <summary>
+            鐖禝ds
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeDto.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeDto.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeDto.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeDto.LesWorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeDto.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeDto.Status">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WareOrderTypeSearch">
+            <summary>
+            鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareOrderTypeSearch.Pid">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareOrderTypeSearch.Pids">
+            <summary>
+            鐖禝ds
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareOrderTypeSearch.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareOrderTypeSearch.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareOrderTypeSearch.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareOrderTypeSearch.LesWorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareOrderTypeSearch.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareOrderTypeSearch.Status">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WareOrderTypeSearchNonPage">
+            <summary>
+            鍗曟嵁绫诲瀷缁存姢琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareOrderTypeSearchNonPage.Pid">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsOrderTypeInput">
+            <summary>
+            鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeInput.Pid">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeInput.LesWorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddWareOrderTypeInput">
+            <summary>
+            澧炲姞鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddWareOrderSubclassInput">
+            <summary>
+            澧炲姞鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteWareOrderTypeInput">
+            <summary>
+            鍒犻櫎鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateWareOrderTypeInput">
+            <summary>
+            鏇存柊鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWareOrderTypeInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryeWareOrderTypeInput">
+            <summary>
+            鏌ヨ鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsOrderTypeOutput">
+            <summary>
+            鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeOutput.Pid">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeOutput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeOutput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeOutput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeOutput.LesWorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeOutput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeOutput.Status">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderTypeOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.IWmsOrderTypeService">
+            <summary>
+            鍗曟嵁绫诲瀷缁存姢琛ㄦ湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsOrderTypeService.Add(Admin.NET.Application.AddWareOrderTypeInput)">
+            <summary>
+            澧炲姞鍗曟嵁绫诲瀷缁存姢琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsOrderTypeService.Delete(Admin.NET.Application.DeleteWareOrderTypeInput)">
+            <summary>
+            鍒犻櫎鍗曟嵁绫诲瀷缁存姢琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsOrderTypeService.Get(Admin.NET.Application.QueryeWareOrderTypeInput)">
+            <summary>
+            鑾峰彇鍗曟嵁绫诲瀷缁存姢琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsOrderTypeService.List(Admin.NET.Application.WmsOrderTypeInput)">
+            <summary>
+            鑾峰彇鍗曟嵁绫诲瀷缁存姢琛ㄥ垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsOrderTypeService.Page(Admin.NET.Application.WareOrderTypeSearch)">
+            <summary>
+            涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsOrderTypeService.Update(Admin.NET.Application.UpdateWareOrderTypeInput)">
+            <summary>
+            鏇存柊鍗曟嵁绫诲瀷缁存姢琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsOrderTypeService.ListNonPageAsync(Admin.NET.Application.WareOrderTypeSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsOrderTypeService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆鍗曟嵁绫诲瀷缁存姢琛ㄥ姛鑳�
+            </summary>
+            <param name="file"></param>
+            <param name="importExcelType"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsOrderTypeService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇鍗曟嵁绫诲瀷缁存姢琛ㄧ殑Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IWmsOrderTypeService.ToExcelAsync(Admin.NET.Application.WareOrderTypeSearchNonPage)">
+            <summary>
+            鏍规嵁鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+            </summary>
+            <param name="input">鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsOrderTypeService">
+            <summary>
+            鍗曟嵁绫诲瀷缁存姢琛ㄦ湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderTypeService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderType,Furion.DatabaseAccessor.MasterDbContextLocator},Admin.NET.Application.ISysExcelTemplateService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderTypeService.Page(Admin.NET.Application.WareOrderTypeSearch)">
+            <summary>
+            涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderTypeService.ListNonPageAsync(Admin.NET.Application.WareOrderTypeSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃鍒楄〃
+            </summary>
+            <param name="input">鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�</param>
+            <returns>(鍗曟嵁绫诲瀷缁存姢琛�)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderTypeService.Add(Admin.NET.Application.AddWareOrderTypeInput)">
+            <summary>
+            澧炲姞鍗曟嵁绫诲瀷缁存姢琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderTypeService.Delete(Admin.NET.Application.DeleteWareOrderTypeInput)">
+            <summary>
+            鍒犻櫎鍗曟嵁绫诲瀷缁存姢琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderTypeService.Update(Admin.NET.Application.UpdateWareOrderTypeInput)">
+            <summary>
+            鏇存柊鍗曟嵁绫诲瀷缁存姢琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderTypeService.Get(Admin.NET.Application.QueryeWareOrderTypeInput)">
+            <summary>
+            鑾峰彇鍗曟嵁绫诲瀷缁存姢琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderTypeService.List(Admin.NET.Application.WmsOrderTypeInput)">
+            <summary>
+            鑾峰彇鍗曟嵁绫诲瀷缁存姢琛ㄥ垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderTypeService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆鍗曟嵁绫诲瀷缁存姢琛ㄥ姛鑳�
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderTypeService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇鍗曟嵁绫诲瀷缁存姢琛ㄧ殑Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderTypeService.ToExcelAsync(Admin.NET.Application.WareOrderTypeSearchNonPage)">
+            <summary>
+            鏍规嵁鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+            </summary>
+            <param name="input">鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsPdaPowerDto">
+            <summary>
+            PDA鑿滃崟杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerDto.Icon">
+            <summary>
+            鍥炬爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerDto.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerDto.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerDto.Clolor">
+            <summary>
+            棰滆壊
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerDto.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerDto.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsPdaPowerSearch">
+            <summary>
+            PDA鑿滃崟鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerSearch.Icon">
+            <summary>
+            鍥炬爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerSearch.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerSearch.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerSearch.Clolor">
+            <summary>
+            棰滆壊
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerSearch.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerSearch.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsPdaPowerSearchNonPage">
+            <summary>
+            PDA鑿滃崟涓嶅垎椤垫煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerSearchNonPage.Icon">
+            <summary>
+            鍥炬爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerSearchNonPage.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerSearchNonPage.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerSearchNonPage.Clolor">
+            <summary>
+            棰滆壊
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerSearchNonPage.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerSearchNonPage.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsPdaPowerInput">
+            <summary>
+            PDA鑿滃崟杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerInput.Icon">
+            <summary>
+            鍥炬爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerInput.Clolor">
+            <summary>
+            棰滆壊
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerInput.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerInput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWmsPdaPowerInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsPdaPowerOutput">
+            <summary>
+            PDA鑿滃崟杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerOutput.Icon">
+            <summary>
+            鍥炬爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerOutput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerOutput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerOutput.Clolor">
+            <summary>
+            棰滆壊
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerOutput.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerOutput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPdaPowerOutput.IsCheck">
+            <summary>
+            鏄惁閫夋嫨
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.wmsPdaPowerMenuOutput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.wmsPdaPowerMenuOutput.WorkShopName">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.wmsPdaPowerMenuOutput.WmsPdaPowerOutput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsPdaPowerService">
+            <summary>
+            PDA鑿滃崟鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPdaPowerService.Page(Admin.NET.Application.WmsPdaPowerSearch)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPdaPowerService.ListNonPageAsync(Admin.NET.Application.WmsPdaPowerSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇DA鑿滃崟鍒楄〃
+            </summary>
+            <param name="input">PDA鑿滃崟鏌ヨ鍙傛暟</param>
+            <returns>(PDA鑿滃崟)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPdaPowerService.Add(Admin.NET.Application.AddWmsPdaPowerInput)">
+            <summary>
+            澧炲姞PDA鑿滃崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPdaPowerService.Delete(Admin.NET.Application.DeleteWmsPdaPowerInput)">
+            <summary>
+            鍒犻櫎PDA鑿滃崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPdaPowerService.Update(Admin.NET.Application.UpdateWmsPdaPowerInput)">
+            <summary>
+            鏇存柊PDA鑿滃崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPdaPowerService.Get(Admin.NET.Application.QueryeWmsPdaPowerInput)">
+            <summary>
+            鑾峰彇PDA鑿滃崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPdaPowerService.List(Admin.NET.Application.WmsPdaPowerInput)">
+            <summary>
+            鑾峰彇PDA鑿滃崟鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPdaPowerService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆PDA鑿滃崟鍔熻兘
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPdaPowerService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇PDA鑿滃崟鐨凟xcel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPdaPowerService.ToExcelAsync(Admin.NET.Application.WmsPdaPowerSearchNonPage)">
+            <summary>
+            鏍规嵁PDA鑿滃崟鏌ヨ鍙傛暟瀵煎嚭Excel
+            </summary>
+            <param name="input">PDA鑿滃崟鏌ヨ鍙傛暟</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsPlaceDto">
+            <summary>
+            搴撲綅淇℃伅杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.WmsAreaAreaname">
+            <summary>
+            鎵�鍦ㄥ簱鍖�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Placecode">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Placestatus">
+            <summary>
+            搴撲綅鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Areaid">
+            <summary>
+            鎵�鍦ㄥ簱鍖�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Rowno">
+            <summary>
+            鎺�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Columnno">
+            <summary>
+            鍒�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Layerno">
+            <summary>
+            灞�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Deepcellno">
+            <summary>
+            杩涙繁鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Aisle">
+            <summary>
+            宸烽亾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Line">
+            <summary>
+            绾垮彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Islock">
+            <summary>
+            鏄惁閿佸畾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.EmptyContainer">
+            <summary>
+            鏄惁绌烘墭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.PositionnoForSrm">
+            <summary>
+            鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Xzb">
+            <summary>
+            搴撲綅X鍧愭爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Yzb">
+            <summary>
+            搴撲綅Y鍧愭爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Zzb">
+            <summary>
+            搴撲綅Z鍧愭爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Length">
+            <summary>
+            搴撲綅闀垮害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Width">
+            <summary>
+            搴撲綅瀹藉害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Height">
+            <summary>
+            搴撲綅楂樺害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Maxweight">
+            <summary>
+            鏈�澶ф壙閲�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Heightlevel">
+            <summary>
+            搴撲綅楂樺害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Priority">
+            <summary>
+            浼樺厛绾�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.LogicalName">
+            <summary>
+            閫昏緫鍖哄煙
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsPlaceSearch">
+            <summary>
+            搴撲綅淇℃伅鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Placecode">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Placestatus">
+            <summary>
+            搴撲綅鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Areaid">
+            <summary>
+            鎵�鍦ㄥ簱鍖�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Rowno">
+            <summary>
+            鎺�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Columnno">
+            <summary>
+            鍒�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Layerno">
+            <summary>
+            灞�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Deepcellno">
+            <summary>
+            杩涙繁鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Aisle">
+            <summary>
+            宸烽亾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Line">
+            <summary>
+            绾垮彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Islock">
+            <summary>
+            鏄惁閿佸畾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.EmptyContainer">
+            <summary>
+            鏄惁绌烘墭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.PositionnoForSrm">
+            <summary>
+            鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Xzb">
+            <summary>
+            搴撲綅X鍧愭爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Yzb">
+            <summary>
+            搴撲綅Y鍧愭爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Zzb">
+            <summary>
+            搴撲綅Z鍧愭爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Length">
+            <summary>
+            搴撲綅闀垮害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Width">
+            <summary>
+            搴撲綅瀹藉害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Height">
+            <summary>
+            搴撲綅楂樺害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Maxweight">
+            <summary>
+            鏈�澶ф壙閲�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Heightlevel">
+            <summary>
+            搴撲綅楂樺害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceSearch.Priority">
+            <summary>
+            浼樺厛绾�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsPlaceInput">
+            <summary>
+            搴撲綅淇℃伅杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Placecode">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Placestatus">
+            <summary>
+            搴撲綅鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Areaid">
+            <summary>
+            鎵�鍦ㄥ簱鍖�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Rowno">
+            <summary>
+            鎺�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Columnno">
+            <summary>
+            鍒�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Layerno">
+            <summary>
+            灞�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Deepcellno">
+            <summary>
+            浣�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Aisle">
+            <summary>
+            宸烽亾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Line">
+            <summary>
+            绾垮彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Islock">
+            <summary>
+            鏄惁閿佸畾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.EmptyContainer">
+            <summary>
+            鏄惁绌烘墭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.PositionnoForSrm">
+            <summary>
+            鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Xzb">
+            <summary>
+            搴撲綅X鍧愭爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Yzb">
+            <summary>
+            搴撲綅Y鍧愭爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Zzb">
+            <summary>
+            搴撲綅Z鍧愭爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Length">
+            <summary>
+            搴撲綅闀垮害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Width">
+            <summary>
+            搴撲綅瀹藉害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Height">
+            <summary>
+            搴撲綅楂樺害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Maxweight">
+            <summary>
+            鏈�澶ф壙閲�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Heightlevel">
+            <summary>
+            搴撲綅楂樺害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceInput.Priority">
+            <summary>
+            浼樺厛绾�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddWmsPlaceInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddWmsPlaceInput.Areaid">
+            <summary>
+            鎵�鍦ㄥ簱鍖�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteWmsPlaceInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateWmsPlaceInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWmsPlaceInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryeWmsPlaceInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.MoreLockInput">
+            <summary>
+            鎵归噺閿佸畾鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MoreLockInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsPlaceOutput">
+            <summary>
+            搴撲綅淇℃伅杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Placecode">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Placestatus">
+            <summary>
+            搴撲綅鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Areaid">
+            <summary>
+            鎵�鍦ㄥ簱鍖�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Rowno">
+            <summary>
+            鎺�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Columnno">
+            <summary>
+            鍒�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Layerno">
+            <summary>
+            灞�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Deepcellno">
+            <summary>
+            杩涙繁鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Aisle">
+            <summary>
+            宸烽亾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Line">
+            <summary>
+            绾垮彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Islock">
+            <summary>
+            鏄惁閿佸畾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.EmptyContainer">
+            <summary>
+            鏄惁绌烘墭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.PositionnoForSrm">
+            <summary>
+            鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Xzb">
+            <summary>
+            搴撲綅X鍧愭爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Yzb">
+            <summary>
+            搴撲綅Y鍧愭爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Zzb">
+            <summary>
+            搴撲綅Z鍧愭爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Length">
+            <summary>
+            搴撲綅闀垮害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Width">
+            <summary>
+            搴撲綅瀹藉害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Height">
+            <summary>
+            搴撲綅楂樺害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Maxweight">
+            <summary>
+            鏈�澶ф壙閲�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Heightlevel">
+            <summary>
+            搴撲綅楂樺害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Priority">
+            <summary>
+            浼樺厛绾�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsPlaceOutput.WmsArea">
+            <summary>
+            搴撳尯淇℃伅杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsPlaceService">
+            <summary>
+            搴撲綅淇℃伅鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPlaceService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPlaceService.Page(Admin.NET.Application.WmsPlaceSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ搴撲綅淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPlaceService.AddNew(Admin.NET.Application.AddWmsPlaceInput)">
+            <summary>
+            澧炲姞搴撲綅淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPlaceService.Delete(Admin.NET.Application.DeleteWmsPlaceInput)">
+            <summary>
+            鍒犻櫎搴撲綅淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPlaceService.MoreLock(Admin.NET.Application.MoreLockInput)">
+            <summary>
+            鎵归噺閿佸畾
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPlaceService.MoreUnlock(Admin.NET.Application.MoreLockInput)">
+            <summary>
+            鎵归噺瑙i攣
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPlaceService.Update(Admin.NET.Application.UpdateWmsPlaceInput)">
+            <summary>
+            鏇存柊搴撲綅淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPlaceService.Get(Admin.NET.Application.QueryeWmsPlaceInput)">
+            <summary>
+            鑾峰彇搴撲綅淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPlaceService.List(Admin.NET.Application.WmsPlaceInput)">
+            <summary>
+            鑾峰彇搴撲綅淇℃伅鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPlaceService.FkWmsAreaList">
+            <summary>
+            鑾峰彇WmsArea鍒楄〃
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPlaceService.GetFAisle">
+            <summary>
+            鑾峰彇鐔熷寲搴撳贩閬�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsWarehouseEntranceDto">
+            <summary>
+            搴撳彛琛ㄨ緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.Type">
+            <summary>
+            绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.LesWorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.AffiliatedRoadway">
+            <summary>
+            鎵�灞炲贩閬�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.Status">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WareWarehouseEntranceSearch">
+            <summary>
+            搴撳彛琛ㄦ煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareWarehouseEntranceSearch.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareWarehouseEntranceSearch.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareWarehouseEntranceSearch.Type">
+            <summary>
+            绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareWarehouseEntranceSearch.LesWorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareWarehouseEntranceSearch.AffiliatedRoadway">
+            <summary>
+            鎵�灞炲贩閬�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareWarehouseEntranceSearch.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareWarehouseEntranceSearch.Status">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WareWarehouseEntranceSearchNonPage">
+            <summary>
+            搴撳彛琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareWarehouseEntranceSearchNonPage.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareWarehouseEntranceSearchNonPage.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareWarehouseEntranceSearchNonPage.Type">
+            <summary>
+            绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareWarehouseEntranceSearchNonPage.LesWorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareWarehouseEntranceSearchNonPage.AffiliatedRoadway">
+            <summary>
+            鎵�灞炲贩閬�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareWarehouseEntranceSearchNonPage.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareWarehouseEntranceSearchNonPage.Status">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsWarehouseEntranceInput">
+            <summary>
+            搴撳彛琛ㄨ緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceInput.Type">
+            <summary>
+            绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceInput.LesWorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceInput.AffiliatedRoadway">
+            <summary>
+            鎵�灞炲贩閬�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceInput.Status">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddWareWarehouseEntranceInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteWareWarehouseEntranceInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateWareWarehouseEntranceInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWareWarehouseEntranceInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryeWareWarehouseEntranceInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsWarehouseEntranceOutput">
+            <summary>
+            搴撳彛琛ㄨ緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.Type">
+            <summary>
+            绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.LesWorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.AffiliatedRoadway">
+            <summary>
+            鎵�灞炲贩閬�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.Status">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsWarehouseEntranceService">
+            <summary>
+            搴撳彛琛ㄦ湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Admin.NET.Application.ISysExcelTemplateService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysDictTypeRep"></param>
+            <param name="sysDictDataRep"></param>
+            <param name="wareWarehouseEntranceRep"></param>
+            <param name="sysExcelTemplateService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.Page(Admin.NET.Application.WareWarehouseEntranceSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ搴撳彛琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.ListNonPageAsync(Admin.NET.Application.WareWarehouseEntranceSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈠簱鍙h〃鍒楄〃
+            </summary>
+            <param name="input">搴撳彛琛ㄦ煡璇㈠弬鏁�</param>
+            <returns>(搴撳彛琛�)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.Add(Admin.NET.Application.AddWareWarehouseEntranceInput)">
+            <summary>
+            澧炲姞搴撳彛琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.Delete(Admin.NET.Application.DeleteWareWarehouseEntranceInput)">
+            <summary>
+            鍒犻櫎搴撳彛琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.Update(Admin.NET.Application.UpdateWareWarehouseEntranceInput)">
+            <summary>
+            鏇存柊搴撳彛琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.Get(Admin.NET.Application.QueryeWareWarehouseEntranceInput)">
+            <summary>
+            鑾峰彇搴撳彛琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.List(Admin.NET.Application.WmsWarehouseEntranceInput)">
+            <summary>
+            鑾峰彇搴撳彛琛ㄥ垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆搴撳彛琛ㄥ姛鑳�
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇搴撳彛琛ㄧ殑Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.ToExcelAsync(Admin.NET.Application.WareWarehouseEntranceSearchNonPage)">
+            <summary>
+            鏍规嵁搴撳彛琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+            </summary>
+            <param name="input">搴撳彛琛ㄦ煡璇㈠弬鏁�</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.AppPageInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AppPageInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AppPageInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddAppInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddAppInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddAppInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddAppInput.Active">
+            <summary>
+            鏄惁榛樿婵�娲伙紙Y-鏄紝N-鍚︼級,鍙兘鏈変竴涓郴缁熼粯璁ゆ縺娲�
+            鐢ㄦ埛鐧诲綍鍚庨粯璁ゅ睍绀烘绯荤粺鑿滃崟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddAppInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddAppInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateAppInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateAppInput.Id">
+            <summary>
+            搴旂敤Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateAppInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateAppInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateAppInput.Active">
+            <summary>
+            鏄惁榛樿婵�娲伙紙Y-鏄紝N-鍚︼級,鍙兘鏈変竴涓郴缁熼粯璁ゆ縺娲�
+            鐢ㄦ埛鐧诲綍鍚庨粯璁ゅ睍绀烘绯荤粺鑿滃崟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateAppInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateAppInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ChangeUserAppStatusInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeUserAppStatusInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryAppInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.SetDefaultAppInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AppOutput">
+            <summary>
+            绯荤粺搴旂敤鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AppOutput.Id">
+            <summary>
+            搴旂敤Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AppOutput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AppOutput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AppOutput.Active">
+            <summary>
+            鏄惁榛樿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AppOutput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ISysAppService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysAppService.AddApp(Admin.NET.Application.AddAppInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysAppService.DeleteApp(Admin.NET.Core.Service.BaseId)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysAppService.GetApp(Admin.NET.Application.QueryAppInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysAppService.GetAppList">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysAppService.GetLoginApps(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysAppService.QueryAppPageList(Admin.NET.Application.AppPageInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysAppService.SetAsDefault(Admin.NET.Application.SetDefaultAppInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysAppService.UpdateApp(Admin.NET.Application.UpdateAppInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysAppService.ChangeUserAppStatus(Admin.NET.Application.ChangeUserAppStatusInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysAppService">
+            <summary>
+            绯荤粺搴旂敤鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysAppService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysApp},Admin.NET.Application.ISysMenuService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysAppRep"></param>
+            <param name="sysMenuService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysAppService.GetLoginApps(System.Int64)">
+            <summary>
+            鑾峰彇鐢ㄦ埛搴旂敤鐩稿叧淇℃伅
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysAppService.QueryAppPageList(Admin.NET.Application.AppPageInput)">
+            <summary>
+            鍒嗛〉鏌ヨ绯荤粺搴旂敤
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysAppService.AddApp(Admin.NET.Application.AddAppInput)">
+            <summary>
+            澧炲姞绯荤粺搴旂敤
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysAppService.DeleteApp(Admin.NET.Core.Service.BaseId)">
+            <summary>
+            鍒犻櫎绯荤粺搴旂敤
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysAppService.UpdateApp(Admin.NET.Application.UpdateAppInput)">
+            <summary>
+            鏇存柊绯荤粺搴旂敤
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysAppService.GetApp(Admin.NET.Application.QueryAppInput)">
+            <summary>
+            鑾峰彇绯荤粺搴旂敤
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysAppService.GetAppList">
+            <summary>
+            鑾峰彇绯荤粺搴旂敤鍒楄〃
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysAppService.SetAsDefault(Admin.NET.Application.SetDefaultAppInput)">
+            <summary>
+            璁句负榛樿搴旂敤
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysAppService.ChangeUserAppStatus(Admin.NET.Application.ChangeUserAppStatusInput)">
+            <summary>
+            淇敼鐢ㄦ埛鐘舵��
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.AuthService">
+            <summary>
+            鐧诲綍鎺堟潈鐩稿叧鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.AuthService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysUser},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPdaPower},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.Entity.WmsBase.WmsRolePdaMenu},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData},Microsoft.AspNetCore.Http.IHttpContextAccessor,Admin.NET.Application.ISysUserService,Admin.NET.Application.ISysEmpService,Admin.NET.Application.ISysRoleService,Admin.NET.Application.ISysMenuService,Admin.NET.Application.ISysAppService,Admin.NET.Application.IClickWordCaptcha,Admin.NET.Application.ISysConfigService,Furion.EventBus.IEventPublisher,Admin.NET.Application.ISysCacheService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.AuthService.LoginAsync(Admin.NET.Application.LoginInput)">
+            <summary>
+            鐢ㄦ埛鐧诲綍
+            </summary>
+            <param name="input"></param>
+            <remarks>榛樿鐢ㄦ埛鍚�/瀵嗙爜锛歛dmin/admin</remarks>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.AuthService.GetLoginUserAsync">
+            <summary>
+            鑾峰彇褰撳墠PC鐧诲綍鐢ㄦ埛淇℃伅
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.AuthService.GetPdaLoginUserAsync">
+            <summary>
+            鑾峰彇褰撳墠PDA鐧诲綍鐢ㄦ埛淇℃伅
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.AuthService.LogoutAsync">
+            <summary>
+            閫�鍑�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.AuthService.GetCaptchaOpen">
+            <summary>
+            鑾峰彇楠岃瘉鐮佸紑鍏�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.AuthService.GetCaptcha">
+            <summary>
+            鑾峰彇楠岃瘉鐮侊紙榛樿鐐归�夋ā寮忥級
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.AuthService.VerificationCode(Admin.NET.Application.ClickWordCaptchaInput)">
+            <summary>
+            鏍¢獙楠岃瘉鐮�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.LoginInput">
+            <summary>
+            鐧诲綍杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginInput.Account">
+            <summary>
+            鐢ㄦ埛鍚�
+            </summary>
+            <example>superAdmin</example>
+        </member>
+        <member name="P:Admin.NET.Application.LoginInput.Password">
+            <summary>
+            瀵嗙爜
+            </summary>
+            <example>123456</example>
+        </member>
+        <member name="T:Admin.NET.Application.LoginOutput">
+            <summary>
+            鐢ㄦ埛鐧诲綍杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.Id">
+            <summary>
+            涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.Account">
+            <summary>
+            璐﹀彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.NickName">
+            <summary>
+            鏄电О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.Avatar">
+            <summary>
+            澶村儚
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.Birthday">
+            <summary>
+            鐢熸棩
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.Sex">
+            <summary>
+            鎬у埆(瀛楀吀 1鐢� 2濂�)
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.Email">
+            <summary>
+            閭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.Phone">
+            <summary>
+            鎵嬫満
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.Tel">
+            <summary>
+            鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.ProductionlineId">
+            <summary>
+            浜х嚎id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.AdminType">
+            <summary>
+            绠$悊鍛樼被鍨嬶紙1瓒呯骇绠$悊鍛� 2绠$悊鍛� 3鏅�氳处鍙凤級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.LastLoginIp">
+            <summary>
+            鏈�鍚庣櫥闄咺P
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.LastLoginTime">
+            <summary>
+            鏈�鍚庣櫥闄嗘椂闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.LastLoginAddress">
+            <summary>
+            鏈�鍚庣櫥闄嗗湴鍧�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.LastLoginBrowser">
+            <summary>
+            鏈�鍚庣櫥闄嗘墍鐢ㄦ祻瑙堝櫒
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.LastLoginOs">
+            <summary>
+            鏈�鍚庣櫥闄嗘墍鐢ㄧ郴缁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.LoginEmpInfo">
+            <summary>
+            鍛樺伐淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.Apps">
+            <summary>
+            鍏峰搴旂敤淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.Roles">
+            <summary>
+            瑙掕壊淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.Permissions">
+            <summary>
+            鏉冮檺淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.AllPermissions">
+            <summary>
+            绯荤粺鎵�鏈夋潈闄愪俊鎭�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.Menus">
+            <summary>
+            鐧诲綍鑿滃崟淇℃伅---AntDesign鐗堟湰鑿滃崟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginOutput.DataScopes">
+            <summary>
+            鏁版嵁鑼冨洿锛堟満鏋勶級淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.Id">
+            <summary>
+            涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.Account">
+            <summary>
+            璐﹀彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.NickName">
+            <summary>
+            鏄电О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.Avatar">
+            <summary>
+            澶村儚
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.Birthday">
+            <summary>
+            鐢熸棩
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.Sex">
+            <summary>
+            鎬у埆(瀛楀吀 1鐢� 2濂�)
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.Email">
+            <summary>
+            閭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.Phone">
+            <summary>
+            鎵嬫満
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.Tel">
+            <summary>
+            鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.ProductionlineId">
+            <summary>
+            浜х嚎id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.AdminType">
+            <summary>
+            绠$悊鍛樼被鍨嬶紙1瓒呯骇绠$悊鍛� 2绠$悊鍛� 3鏅�氳处鍙凤級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.LastLoginIp">
+            <summary>
+            鏈�鍚庣櫥闄咺P
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.LastLoginTime">
+            <summary>
+            鏈�鍚庣櫥闄嗘椂闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.LastLoginAddress">
+            <summary>
+            鏈�鍚庣櫥闄嗗湴鍧�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.LastLoginBrowser">
+            <summary>
+            鏈�鍚庣櫥闄嗘墍鐢ㄦ祻瑙堝櫒
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.LastLoginOs">
+            <summary>
+            鏈�鍚庣櫥闄嗘墍鐢ㄧ郴缁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LoginPdaOutput.WmsPdaPowerOutputs">
+            <summary>
+            鍛樺伐淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.Auth.Dto.RegistInput">
+            <summary>
+            娉ㄥ唽杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Auth.Dto.RegistInput.Email">
+            <summary>
+            鐢ㄦ埛鍚�
+            </summary>
+            <example>superAdmin</example>
+        </member>
+        <member name="P:Admin.NET.Application.Auth.Dto.RegistInput.CompanyName">
+            <summary>
+            鍏徃鍚�
+            </summary>
+            <example>superAdmin</example>
+        </member>
+        <member name="P:Admin.NET.Application.Auth.Dto.RegistInput.Password">
+            <summary>
+            瀵嗙爜
+            </summary>
+            <example>123456</example>
+        </member>
+        <member name="T:Admin.NET.Application.IAuthService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.IAuthService.GetCaptcha">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IAuthService.GetCaptchaOpen">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IAuthService.GetLoginUserAsync">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IAuthService.LoginAsync(Admin.NET.Application.LoginInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IAuthService.LogoutAsync">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IAuthService.VerificationCode(Admin.NET.Application.ClickWordCaptchaInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.BaseService`9">
+            <summary>
+            閫氱敤鏂规硶
+            </summary>
+            <typeparam name="TEntity"></typeparam>
+            <typeparam name="TSearchDto"></typeparam>
+            <typeparam name="TAddDto"></typeparam>
+            <typeparam name="TUpdateDto"></typeparam>
+            <typeparam name="TImportDto"></typeparam>
+            <typeparam name="TDetailDto"></typeparam>
+            <typeparam name="TPageListDto"></typeparam>
+            <typeparam name="TExportDto"></typeparam>
+            <typeparam name="TPrintDto"></typeparam>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.Repository">
+            <summary>
+            鏁版嵁浠撳偍
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.BaseService`9.#ctor(Furion.DatabaseAccessor.IRepository{`0})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="repository"></param>
+        </member>
+        <member name="M:Admin.NET.Application.BaseService`9.Get(System.Int64)">
+            <summary>
+            涓婚敭鏌ヨ
+            </summary>
+            <param name="id"></param>
+            <returns></returns>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.SearchExpression">
+            <summary>
+            鍒嗛〉鎼滅储鍓�
+            </summary>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.SearchQueryable">
+            <summary>
+            鑷畾涔夊垎椤垫悳绱紙澶嶆潅鏌ヨ锛�
+            </summary>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.PageListHandle">
+            <summary>
+            鍒嗛〉鏁版嵁杩斿洖鍓嶅鐞�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.BaseService`9.PageList(`1)">
+            <summary>
+            鍒嗛〉鏌ヨ
+            </summary>
+            <param name="searchDto"></param>
+            <returns></returns>
+            <exception cref="T:System.Exception"></exception>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.BeforeAddAction">
+            <summary>
+            鏂板鍓嶉獙璇佹垨澶勭悊
+            </summary>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.AfterAddAction">
+            <summary>
+            鏂板鍚庡鐞�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.BaseService`9.Add(`2)">
+            <summary>
+            鏂板
+            </summary>
+            <param name="addDto"></param>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.BeforeDeleteAction">
+            <summary>
+            鍒犻櫎鍓嶉獙璇佹垨澶勭悊
+            </summary>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.AfterDeleteAction">
+            <summary>
+            鍒犻櫎鍚庡鐞�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.BaseService`9.Delete(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            鍒犻櫎
+            </summary>
+            <param name="ids"></param>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.BeforeFakeDeleteAction">
+            <summary>
+            鍋囧垹闄ゅ墠楠岃瘉鎴栧鐞�
+            </summary>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.AfterFakeDeleteAction">
+            <summary>
+            鍋囧垹闄ゅ悗澶勭悊
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.BaseService`9.FakeDelete(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            鍋囧垹闄�
+            </summary>
+            <param name="ids"></param>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.BeforeUpdateAction">
+            <summary>
+            鏇存柊鍓嶉獙璇佹垨澶勭悊
+            </summary>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.AfterUpdateAction">
+            <summary>
+            鏇存柊鍚庡鐞�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.BaseService`9.Update(`3)">
+            <summary>
+            淇敼
+            </summary>
+            <param name="updateDto"></param>
+        </member>
+        <member name="M:Admin.NET.Application.BaseService`9.ImportTemplate">
+            <summary>
+            瀵煎叆妯$増涓嬭浇
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.BeforeImportAction">
+            <summary>
+            瀵煎叆鍓嶉獙璇佹垨澶勭悊
+            </summary>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.AfterImportAction">
+            <summary>
+            瀵煎叆鍚庡鐞�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.BaseService`9.Import(Microsoft.AspNetCore.Http.IFormFile)">
+            <summary>
+            瀵煎叆
+            </summary>
+            <param name="file"></param>
+            <exception cref="T:System.Exception"></exception>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.ExportSearchExpression">
+            <summary>
+            瀵煎嚭鎼滅储鍓�
+            </summary>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.ExportSearchQueryable">
+            <summary>
+            鑷畾涔夊鍑烘悳绱紙澶嶆潅鏌ヨ锛�
+            </summary>
+        </member>
+        <member name="F:Admin.NET.Application.BaseService`9.ExportHandle">
+            <summary>
+            瀵煎嚭鏁版嵁杩斿洖鍓嶅鐞�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.BaseService`9.Export(`1)">
+            <summary>
+            瀵煎嚭
+            </summary>
+            <param name="searchDto"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.BaseService`9.Print(System.Int64)">
+            <summary>
+            鑾峰彇鎵撳嵃鏁版嵁 todo: 鏈�绠�鍗曠殑涓婚敭鏌ヨ鍗曟潯鏁版嵁锛屽悗缁疄鐜板崟鎹墦鍗版ā鐗堟ā鍧�
+            </summary>
+            <param name="id"></param>
+        </member>
+        <member name="M:Admin.NET.Application.BaseService`9.GetSearchParameters(`1)">
+            <summary>
+            灏嗘煡璇to缁勮鎴愭悳绱㈠弬鏁�
+            </summary>
+            <param name="searchDto"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.BaseDto">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BaseDto.Id">
+            <summary>
+            涓婚敭Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BaseDto.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BaseDto.UpdatedTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BaseDto.CreatedUserId">
+            <summary>
+            鍒涘缓鑰匢d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BaseDto.CreatedUserName">
+            <summary>
+            鍒涘缓鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BaseDto.UpdatedUserId">
+            <summary>
+            淇敼鑰匢d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BaseDto.UpdatedUserName">
+            <summary>
+            淇敼鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BaseDto.IsDeleted">
+            <summary>
+            杞垹闄�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ISysCacheService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.AddCacheKey(System.String)">
+            <summary>
+            
+            </summary>
+            <param name="cacheKey"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.DelByPatternAsync(System.String)">
+            <summary>
+            
+            </summary>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.DelCacheKey(System.String)">
+            <summary>
+            
+            </summary>
+            <param name="cacheKey"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.Exists(System.String)">
+            <summary>
+            
+            </summary>
+            <param name="cacheKey"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.GetAllCacheKeys">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.GetAsync``1(System.String)">
+            <summary>
+            
+            </summary>
+            <typeparam name="T"></typeparam>
+            <param name="cacheKey"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.GetDataScope(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.GetMenu(System.Int64,System.String)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <param name="appCode"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.GetPermission(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.RemovePermission(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.GetStringAsync(System.String)">
+            <summary>
+            
+            </summary>
+            <param name="cacheKey"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.RemoveAsync(System.String)">
+            <summary>
+            
+            </summary>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.SetAsync(System.String,System.Object)">
+            <summary>
+            
+            </summary>
+            <param name="cacheKey"></param>
+            <param name="value"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.SetDataScope(System.Int64,System.Collections.Generic.List{System.Int64})">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <param name="dataScopes"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.SetMenu(System.Int64,System.String,System.Collections.Generic.List{Admin.NET.Application.AntDesignTreeNode})">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <param name="appCode"></param>
+            <param name="menus"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.SetPermission(System.Int64,System.Collections.Generic.List{System.String})">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <param name="permissions"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysCacheService.SetStringAsync(System.String,System.String)">
+            <summary>
+            
+            </summary>
+            <param name="cacheKey"></param>
+            <param name="value"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysCacheService">
+            <summary>
+            绯荤粺缂撳瓨鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.#ctor(Microsoft.Extensions.Caching.Distributed.IDistributedCache)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="cache"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.GetDataScope(System.Int64)">
+            <summary>
+            鑾峰彇鏁版嵁鑼冨洿缂撳瓨锛堟満鏋処d闆嗗悎锛�
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.SetDataScope(System.Int64,System.Collections.Generic.List{System.Int64})">
+            <summary>
+            缂撳瓨鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛�
+            </summary>
+            <param name="userId"></param>
+            <param name="dataScopes"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.GetMenu(System.Int64,System.String)">
+            <summary>
+            鑾峰彇鑿滃崟缂撳瓨
+            </summary>
+            <param name="userId"></param>
+            <param name="appCode"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.SetMenu(System.Int64,System.String,System.Collections.Generic.List{Admin.NET.Application.AntDesignTreeNode})">
+            <summary>
+            缂撳瓨鑿滃崟
+            </summary>
+            <param name="userId"></param>
+            <param name="appCode"></param>
+            <param name="menus"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.GetPermission(System.Int64)">
+            <summary>
+            鑾峰彇鏉冮檺缂撳瓨锛堟寜閽級
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.RemovePermission(System.Int64)">
+            <summary>
+            鍒犻櫎鏉冮檺缂撳瓨
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.SetPermission(System.Int64,System.Collections.Generic.List{System.String})">
+            <summary>
+            缂撳瓨鏉冮檺
+            </summary>
+            <param name="userId"></param>
+            <param name="permissions"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.GetAllCacheKeys">
+            <summary>
+            鑾峰彇鎵�鏈夌紦瀛樺叧閿瓧
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.RemoveAsync(System.String)">
+            <summary>
+            鍒犻櫎鎸囧畾鍏抽敭瀛楃紦瀛�
+            </summary>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.DelByPatternAsync(System.String)">
+            <summary>
+            鍒犻櫎鏌愮壒寰佸叧閿瓧缂撳瓨
+            </summary>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.SetAsync(System.String,System.Object)">
+            <summary>
+            璁剧疆缂撳瓨
+            </summary>
+            <param name="cacheKey"></param>
+            <param name="value"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.SetStringAsync(System.String,System.String)">
+            <summary>
+            璁剧疆缂撳瓨
+            </summary>
+            <param name="cacheKey"></param>
+            <param name="value"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.GetStringAsync(System.String)">
+            <summary>
+            鑾峰彇缂撳瓨
+            </summary>
+            <param name="cacheKey"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.GetAsync``1(System.String)">
+            <summary>
+            鑾峰彇缂撳瓨
+            </summary>
+            <typeparam name="T"></typeparam>
+            <param name="cacheKey"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.Exists(System.String)">
+            <summary>
+            妫�鏌ョ粰瀹� key 鏄惁瀛樺湪
+            </summary>
+            <param name="cacheKey">閿�</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.AddCacheKey(System.String)">
+            <summary>
+            澧炲姞缂撳瓨Key
+            </summary>
+            <param name="cacheKey"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCacheService.DelCacheKey(System.String)">
+             <summary>
+            
+             </summary>
+             <param name="cacheKey"></param>
+             <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.ClickWordCaptcha">
+            <summary>
+            鐐归�夐獙璇佺爜
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ClickWordCaptcha.#ctor(Microsoft.Extensions.Caching.Memory.IMemoryCache)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="memoryCache"></param>
+        </member>
+        <member name="M:Admin.NET.Application.ClickWordCaptcha.CreateCaptchaImage(System.String,System.Int32,System.Int32,System.Int32)">
+            <summary>
+            鐢熸垚楠岃瘉鐮佸浘鐗�
+            </summary>
+            <param name="code">鏂囧瓧</param>
+            <param name="width">鍥剧墖瀹藉害</param>
+            <param name="height">鍥剧墖楂樺害</param>
+            <param name="point">楠岃瘉鐐规暟閲忥紝涓嶈兘瓒呰繃鏂囧瓧鐨勯暱搴�</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ClickWordCaptcha.RandomCode(System.Int32)">
+            <summary>
+            闅忔満缁樺埗瀛楃涓�
+            </summary>
+            <param name="number"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ClickWordCaptcha.CheckCode(Admin.NET.Application.ClickWordCaptchaInput)">
+            <summary>
+            楠岃瘉鐮侀獙璇�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.PointPosModel">
+            <summary>
+            璁板綍姝g‘浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PointPosModel.X">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PointPosModel.Y">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ClickWordCaptchaInput">
+            <summary>
+            鐐瑰嚮楠岃瘉鐮佽緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ClickWordCaptchaInput.CaptchaType">
+            <summary>
+            楠岃瘉鐮佺被鍨�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ClickWordCaptchaInput.PointJson">
+            <summary>
+            鍧愭爣鐐归泦鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ClickWordCaptchaInput.Token">
+            <summary>
+            Token
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ClickWordCaptchaResult">
+            <summary>
+            楠岃瘉鐮佽緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ClickWordCaptchaResult.RepCode">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ClickWordCaptchaResult.RepMsg">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ClickWordCaptchaResult.RepData">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ClickWordCaptchaResult.Error">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ClickWordCaptchaResult.Success">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.RepData">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.CaptchaId">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.ProjectCode">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.CaptchaType">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.CaptchaOriginalPath">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.CaptchaFontType">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.CaptchaFontSize">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.SecretKey">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.OriginalImageBase64">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.Point">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.JigsawImageBase64">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.WordList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.PointList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.PointJson">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.Token">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.Result">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RepData.CaptchaVerification">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.IClickWordCaptcha">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.IClickWordCaptcha.CheckCode(Admin.NET.Application.ClickWordCaptchaInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IClickWordCaptcha.CreateCaptchaImage(System.String,System.Int32,System.Int32,System.Int32)">
+            <summary>
+            
+            </summary>
+            <param name="code"></param>
+            <param name="width"></param>
+            <param name="height"></param>
+            <param name="point"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IClickWordCaptcha.RandomCode(System.Int32)">
+            <summary>
+            
+            </summary>
+            <param name="number"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.GeneralCaptcha">
+            <summary>
+            甯歌楠岃瘉鐮�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.GeneralCaptcha.#ctor(Microsoft.Extensions.Caching.Memory.IMemoryCache)">
+            <summary>
+            
+            </summary>
+            <param name="memoryCache"></param>
+        </member>
+        <member name="M:Admin.NET.Application.GeneralCaptcha.CreateCaptchaImage(System.Int32)">
+            <summary>
+            鐢熸垚楠岃瘉鐮佸浘鐗�
+            </summary>
+            <param name="length"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.GeneralCaptcha.CheckCode(Admin.NET.Application.GeneralCaptchaInput)">
+            <summary>
+            楠岃瘉鐮侀獙璇�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.GeneralCaptchaInput">
+            <summary>
+            甯歌楠岃瘉鐮佽緭鍏�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GeneralCaptchaInput.CaptchaType">
+            <summary>
+            楠岃瘉鐮佺被鍨�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GeneralCaptchaInput.CaptchaCode">
+            <summary>
+            楠岃瘉鐮佸瓧绗�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GeneralCaptchaInput.Token">
+            <summary>
+            Token
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.IGeneralCaptcha">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.IGeneralCaptcha.CheckCode(Admin.NET.Application.GeneralCaptchaInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IGeneralCaptcha.CreateCaptchaImage(System.Int32)">
+            <summary>
+            
+            </summary>
+            <param name="length"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysCodeGenerateConfigService">
+            <summary>
+            浠g爜鐢熸垚璇︾粏閰嶇疆鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysCodeGenerateConfigService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysCodeGenConfig},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysCodeGen},Furion.DatabaseAccessor.IRepository{Furion.Extras.Admin.NET.Entity.SysLowCodeDataBase})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysCodeGenConfigRep"></param>
+            <param name="sysCodeGenRep"></param>
+            <param name="sysLowCodeRep"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysCodeGenerateConfigService.List(Admin.NET.Application.CodeGenConfig)">
+            <summary>
+            浠g爜鐢熸垚璇︾粏閰嶇疆鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCodeGenerateConfigService.Update(System.Collections.Generic.List{Admin.NET.Application.CodeGenConfig})">
+            <summary>
+            鏇存柊
+            </summary>
+            <param name="inputList"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCodeGenerateConfigService.Detail(Admin.NET.Application.CodeGenConfig)">
+            <summary>
+            璇︽儏
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCodeGenerateConfigService.DelAndAddList(System.Collections.Generic.List{Admin.NET.Application.TableColumnOuput},Admin.NET.Core.SysCodeGen)">
+            <summary>
+            鎵归噺澧炲姞
+            </summary>
+            <param name="tableColumnOuputList"></param>
+            <param name="codeGenerate"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysCodeGenerateConfigService.Add(Admin.NET.Application.CodeGenConfig)">
+            <summary>
+            澧炲姞
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysCodeGenerateConfigService.Delete(System.Int64)">
+            <summary>
+            鍒犻櫎
+            </summary>
+            <param name="codeGenId"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.CodeGen.CodeGenerateService">
+            <summary>
+            浠g爜鐢熸垚鍣ㄦ湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysCodeGen},Furion.DatabaseAccessor.IRepository{Furion.Extras.Admin.NET.Entity.SysLowCode},Admin.NET.Application.ICodeGenConfigService,Furion.ViewEngine.IViewEngine,Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysMenu},Admin.NET.Application.ISysExcelTemplateService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysCodeGenRep"></param>
+            <param name="sysLowCodeRep"></param>
+            <param name="codeGenConfigService"></param>
+            <param name="viewEngine"></param>
+            <param name="sysMenuRep"></param>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.QueryCodeGenPageList(Admin.NET.Application.CodeGenPageInput)">
+            <summary>
+            鍒嗛〉鏌ヨ
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.AddCodeGen(Admin.NET.Application.AddCodeGenInput)">
+            <summary>
+            澧炲姞
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.DeleteCodeGen(System.Collections.Generic.List{Admin.NET.Application.DeleteCodeGenInput})">
+            <summary>
+            鍒犻櫎
+            </summary>
+            <param name="inputs"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.UpdateCodeGen(Admin.NET.Application.UpdateCodeGenInput)">
+            <summary>
+            鏇存柊
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.Refresh(System.Int64)">
+            <summary>
+            鍒锋柊閰嶇疆琛�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetCodeGen(Admin.NET.Application.QueryCodeGenInput)">
+            <summary>
+            璇︽儏
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetDatabaseList">
+            <summary>
+            鑾峰彇鏁版嵁搴撳簱闆嗗悎
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetTableList(System.String)">
+            <summary>
+            鑾峰彇鏁版嵁搴撹〃(瀹炰綋)闆嗗悎
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetColumnListByTableName(System.String,System.String)">
+            <summary>
+            鏍规嵁琛ㄥ悕鑾峰彇鍒�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetColumnList(Admin.NET.Application.AddCodeGenInput)">
+            <summary>
+            鑾峰彇鏁版嵁琛ㄥ垪锛堝疄浣撳睘鎬э級闆嗗悎
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.RunLocal(Admin.NET.Core.SysCodeGen)">
+            <summary>
+            浠g爜鐢熸垚_鏈湴椤圭洰
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.RunDown(System.Int64)">
+            <summary>
+            浠g爜鐢熸垚_鍘嬬缉鍖呮柟寮忎笅杞�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.CommonRun(Admin.NET.Core.SysCodeGen,System.String)">
+            <summary>
+            浠g爜鐢熸垚
+            </summary>
+            <param name="input"></param>
+            <param name="curGenerateType">200:鐢熸垚鏈湴锛�100锛氱敓鎴愭湰鍦板帇缂╁寘</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.CreateImportExcelTemplteCode(Admin.NET.Core.SysCodeGen,System.Collections.Generic.List{Admin.NET.Application.CodeGenConfig})">
+            <summary>
+            鍒涘缓瀵煎叆鍔熻兘鑷畾涔夋ā鏉夸唬鐮� 
+            </summary>
+            <param name="input"></param>
+            <param name="tableFieldList"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetTemplatePathList">
+            <summary>
+            鑾峰彇妯℃澘鏂囦欢璺緞闆嗗悎
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetTargetPathList(Admin.NET.Core.SysCodeGen)">
+            <summary>
+            璁剧疆鐢熸垚鏂囦欢璺緞
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.LowercaseFirst(System.String)">
+            <summary>
+            瀛楃涓查瀛楁瘝灏忓啓
+            </summary>
+            <param name="str"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetZipPathList(Admin.NET.Core.SysCodeGen)">
+            <summary>
+            璁剧疆鐢熸垚鏂囦欢璺緞
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.CreateImportTemplte(Admin.NET.Core.SysCodeGen)">
+            <summary>
+            鏍规嵁琛ㄥ悕鍒涘缓瀵煎叆妯$増
+            </summary>
+            <param name="input"></param>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.CreatExcel(System.Collections.Generic.List{Admin.NET.Application.CodeGenConfig},System.String,System.String)">
+            <summary>
+            鏍规嵁瀹炰綋绫诲悕 鐢熸垚瀵煎叆excel妯$増
+            </summary>
+            <param name="tableFieldList">浠g爜鐢熸垚閫夋嫨閰嶇疆琛ㄧ殑瀛楁</param>
+            <param name="copayPath"></param>
+            <param name="newPath"></param>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.IsEnumProperty(System.Type,System.String)">
+            <summary>
+            鏍规嵁灞炴�у悕绉板垽鏂槸鍚︽槸鏋氫妇绫诲瀷
+            </summary>
+            <param name="type"></param>
+            <param name="propertyName"></param>
+            <returns></returns>
+            <exception cref="T:System.ArgumentException"></exception>
+        </member>
+        <member name="T:Admin.NET.Application.CodeGen.ICodeGenService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.AddCodeGen(Admin.NET.Application.AddCodeGenInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.DeleteCodeGen(System.Collections.Generic.List{Admin.NET.Application.DeleteCodeGenInput})">
+            <summary>
+            
+            </summary>
+            <param name="inputs"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.GetCodeGen(Admin.NET.Application.QueryCodeGenInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.GetColumnList(Admin.NET.Application.AddCodeGenInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.GetTableList(System.String)">
+            <summary>
+            
+            </summary>
+            <param name="dbContextLocatorName"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.QueryCodeGenPageList(Admin.NET.Application.CodeGenPageInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.RunLocal(Admin.NET.Core.SysCodeGen)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.RunDown(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.UpdateCodeGen(Admin.NET.Application.UpdateCodeGenInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.CodeGenConfig">
+            <summary>
+            浠g爜鐢熸垚璇︾粏閰嶇疆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.CodeGen">
+            <summary>
+            鎵�灞炵敓鎴愪富琛�
+            </summary>
+            
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.Id">
+            <summary>
+            涓婚敭Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.CodeGenId">
+            <summary>
+            浠g爜鐢熸垚涓昏〃ID
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.ColumnName">
+            <summary>
+            鏁版嵁搴撳瓧娈靛悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.OriginalColumnName">
+            <summary>
+            鏁版嵁搴撳瓧娈靛悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.LowerColumnName">
+            <summary>
+            鏁版嵁搴撳瓧娈靛悕(棣栧瓧姣嶅皬鍐�)
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.ColumnComment">
+            <summary>
+            瀛楁鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.NetType">
+            <summary>
+            .NET绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.DtoNetType">
+            <summary>
+            .NET绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.NetTypeIsNullLable">
+            <summary>
+            .NET绫诲瀷鏄惁鏄�肩被鍨�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.NetTypeIsNullLableForQueryInput">
+            <summary>
+            鏌ヨ鍙傛暟鍙负null涓撶敤
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.NetTypeIsNullLableForAddEditOutParam">
+            <summary>
+            銆愭柊澧炪�佺紪杈戙�佽繑鍥炴煡璇㈢粨鏋滅被銆� 鍙傛暟鍙负null涓撶敤
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.EffectType">
+            <summary>
+            浣滅敤绫诲瀷锛堝瓧鍏革級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.FkEntityName">
+            <summary>
+            澶栭敭瀹炰綋鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.LowerFkEntityName">
+            <summary>
+            澶栭敭瀹炰綋鍚嶇О(棣栧瓧姣嶅皬鍐�)
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.FkColumnName">
+            <summary>
+            澶栭敭鏄剧ず瀛楁
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.LowerFkColumnName">
+            <summary>
+            澶栭敭鏄剧ず瀛楁(棣栧瓧姣嶅皬鍐�)
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.FkColumnNetType">
+            <summary>
+            澶栭敭鏄剧ず瀛楁.NET绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.DictTypeCode">
+            <summary>
+            瀛楀吀code
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.WhetherRetract">
+            <summary>
+            鍒楄〃鏄惁缂╄繘锛堝瓧鍏革級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.WhetherRequired">
+            <summary>
+            鏄惁蹇呭~锛堝瓧鍏革級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.QueryWhether">
+            <summary>
+            鏄惁鏄煡璇㈡潯浠�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.QueryType">
+            <summary>
+            鏌ヨ鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.WhetherTable">
+            <summary>
+            鍒楄〃鏄剧ず
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.WhetherOrderBy">
+            <summary>
+            鍒楄〃鎺掑簭鏄剧ず
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.WhetherAddUpdate">
+            <summary>
+            澧炴敼
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.ColumnKey">
+            <summary>
+            涓诲閿�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.DataType">
+            <summary>
+            鏁版嵁搴撲腑绫诲瀷锛堢墿鐞嗙被鍨嬶級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.WhetherCommon">
+            <summary>
+            鏄惁鏄�氱敤瀛楁
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.ShowTitleMinWidth">
+            <summary>
+            椤甸潰鍒楁樉绀烘渶灏忓搴�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenConfig.WhetherUnionKey">
+            <summary>
+            鏄惁鑱斿悎涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.CodeGenPageInput">
+            <summary>
+            浠g爜鐢熸垚鍙傛暟绫�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenPageInput.BusName">
+            <summary>
+            涓氬姟鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenPageInput.TableName">
+            <summary>
+            鏁版嵁搴撹〃鍚�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddCodeGenInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.LowCodeId">
+            <summary>
+            浣庝唬鐮佹ā鍧楁潵婧�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.DatabaseName">
+            <summary>
+            鏁版嵁搴撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.TableName">
+            <summary>
+            鏁版嵁搴撹〃鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.BusName">
+            <summary>
+            涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.NameSpace">
+            <summary>
+            鍛藉悕绌洪棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.AuthorName">
+            <summary>
+            浣滆�呭鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.ModuleName">
+            <summary>
+            妯″潡璺緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.IsOnlyQuery">
+            <summary>
+            鏄惁鍙槸鏌ヨ
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.FrontProName">
+            <summary>
+            鍓嶇椤圭洰鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.GenerateType">
+            <summary>
+            鐢熸垚鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.MenuApplication">
+            <summary>
+            鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.MenuPid">
+            <summary>
+            鑿滃崟鐖剁骇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.ClassName">
+            <summary>
+            绫诲悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.TablePrefix">
+            <summary>
+            鏄惁绉婚櫎琛ㄥ墠缂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.TableComment">
+            <summary>
+            鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddCodeGenInput.IsWhetherImport">
+            <summary>
+            鏄惁鏀寔瀵煎叆
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteCodeGenInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateCodeGenInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.Id">
+            <summary>
+            浠g爜鐢熸垚鍣↖d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.DatabaseName">
+            <summary>
+            鏁版嵁搴撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.TableName">
+            <summary>
+            鏁版嵁搴撹〃鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.BusName">
+            <summary>
+            涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.NameSpace">
+            <summary>
+            鍛藉悕绌洪棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.ModuleName">
+            <summary>
+            妯″潡璺緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.IsOnlyQuery">
+            <summary>
+            鏄惁鍙槸鏌ヨ
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.FrontProName">
+            <summary>
+            鍓嶇椤圭洰鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.AuthorName">
+            <summary>
+            浣滆�呭鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.GenerateType">
+            <summary>
+            鐢熸垚鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.MenuApplication">
+            <summary>
+            鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.MenuPid">
+            <summary>
+            鑿滃崟鐖剁骇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.ClassName">
+            <summary>
+            绫诲悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.TablePrefix">
+            <summary>
+            鏄惁绉婚櫎琛ㄥ墠缂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.TableComment">
+            <summary>
+            鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateCodeGenInput.IsWhetherImport">
+            <summary>
+            鏄惁鏀寔瀵煎叆
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryCodeGenInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.CodeGenModel">
+            <summary>
+            浠g爜鐢熸垚鍙傛暟绫�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.Id">
+            <summary>
+            浠g爜鐢熸垚鍣↖d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.AuthorName">
+            <summary>
+            浣滆�呭鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.NameSpace">
+            <summary>
+            鍛藉悕绌洪棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.ProName">
+            <summary>
+            绋嬪簭闆�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.ClassName">
+            <summary>
+            绫诲悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.QueryWhetherList">
+            <summary>
+            鍓嶇鏌ヨ鏉′欢闆嗗悎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.TableField">
+            <summary>
+            琛ㄥ瓧娈甸泦鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.TablePrefix">
+            <summary>
+            鏄惁绉婚櫎琛ㄥ墠缂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.GenerateType">
+            <summary>
+            鐢熸垚鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.DatabaseName">
+            <summary>
+            鏁版嵁搴撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.TableName">
+            <summary>
+            鏁版嵁搴撹〃鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.PackageName">
+            <summary>
+            鍖呭悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.BusName">
+            <summary>
+            涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.TableComment">
+            <summary>
+            鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.MenuApplication">
+            <summary>
+            鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenModel.MenuPid">
+            <summary>
+            鑿滃崟鐖剁骇
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.CodeGenOutput">
+            <summary>
+            浠g爜鐢熸垚鍙傛暟绫�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenOutput.Id">
+            <summary>
+            浠g爜鐢熸垚鍣↖d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenOutput.AuthorName">
+            <summary>
+            浣滆�呭鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenOutput.ClassName">
+            <summary>
+            绫诲悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenOutput.TablePrefix">
+            <summary>
+            鏄惁绉婚櫎琛ㄥ墠缂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenOutput.GenerateType">
+            <summary>
+            鐢熸垚鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenOutput.DatabaseName">
+            <summary>
+            鏁版嵁搴撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenOutput.TableName">
+            <summary>
+            鏁版嵁搴撹〃鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenOutput.PackageName">
+            <summary>
+            鍖呭悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenOutput.BusName">
+            <summary>
+            涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenOutput.TableComment">
+            <summary>
+            鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenOutput.MenuApplication">
+            <summary>
+            鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CodeGenOutput.MenuPid">
+            <summary>
+            鑿滃崟鐖剁骇
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DatabaseOutput">
+            <summary>
+            鏁版嵁搴撳簱鍒楄〃鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DatabaseOutput.DatabaseName">
+            <summary>
+            搴撳悕锛堝瓧姣嶅舰寮忕殑锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DatabaseOutput.CreateTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DatabaseOutput.UpdateTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DatabaseOutput.DatabaseComment">
+            <summary>
+            搴撳悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TableColumnOuput">
+            <summary>
+            鏁版嵁搴撹〃鍒�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TableColumnOuput.ColumnName">
+            <summary>
+            瀛楁鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TableColumnOuput.IsNullable">
+            <summary>
+            鏄惁鍙负NULL 銆怑ditby shaocx,2024-04-20銆�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TableColumnOuput.DataType">
+            <summary>
+            鏁版嵁搴撲腑绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TableColumnOuput.NetType">
+            <summary>
+            .NET瀛楁绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TableColumnOuput.ColumnComment">
+            <summary>
+            瀛楁鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TableColumnOuput.ColumnKey">
+            <summary>
+            涓诲閿�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TableColumnOuput.ShowTitleMinWidth">
+            <summary>
+            椤甸潰鍒楁樉绀烘渶灏忓搴�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TableOutput">
+            <summary>
+            鏁版嵁搴撹〃鍒楄〃鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TableOutput.DatabaseName">
+            <summary>
+            搴撳悕锛堝瓧姣嶅舰寮忕殑锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TableOutput.DatabaseComment">
+            <summary>
+            搴撳悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TableOutput.TableName">
+            <summary>
+            琛ㄥ悕锛堝瓧姣嶅舰寮忕殑锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TableOutput.CreateTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TableOutput.UpdateTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TableOutput.TableComment">
+            <summary>
+            琛ㄥ悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.XnCodeGenOutput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.XnCodeGenOutput.AuthorName">
+            <summary>
+            浣滆�呭鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.XnCodeGenOutput.TablePrefix">
+            <summary>
+            鏄惁绉婚櫎琛ㄥ墠缂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.XnCodeGenOutput.GenerateType">
+            <summary>
+            鐢熸垚鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.XnCodeGenOutput.TableName">
+            <summary>
+            鏁版嵁搴撹〃鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.XnCodeGenOutput.TableNameAss">
+            <summary>
+            鏁版嵁搴撹〃鍚嶏紙缁忚繃缁勮鐨勶級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.XnCodeGenOutput.PackageName">
+            <summary>
+            浠g爜鍖呭悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.XnCodeGenOutput.CreateTimestring">
+            <summary>
+            鐢熸垚鏃堕棿锛坰tring绫诲瀷鐨勶級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.XnCodeGenOutput.ConfigList">
+            <summary>
+            鏁版嵁搴撹〃涓瓧娈甸泦鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.XnCodeGenOutput.BusName">
+            <summary>
+            涓氬姟鍚�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ICodeGenConfigService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ICodeGenConfigService.Add(Admin.NET.Application.CodeGenConfig)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ICodeGenConfigService.DelAndAddList(System.Collections.Generic.List{Admin.NET.Application.TableColumnOuput},Admin.NET.Core.SysCodeGen)">
+            <summary>
+            
+            </summary>
+            <param name="tableColumnOuputList"></param>
+            <param name="codeGenerate"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ICodeGenConfigService.Delete(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="codeGenId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ICodeGenConfigService.Detail(Admin.NET.Application.CodeGenConfig)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ICodeGenConfigService.List(Admin.NET.Application.CodeGenConfig)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ICodeGenConfigService.Update(System.Collections.Generic.List{Admin.NET.Application.CodeGenConfig})">
+            <summary>
+            
+            </summary>
+            <param name="inputList"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.ConfigPageInput">
+            <summary>
+            鍙傛暟閰嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ConfigPageInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ConfigPageInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ConfigPageInput.GroupCode">
+            <summary>
+            甯搁噺鎵�灞炲垎绫荤殑缂栫爜锛屾潵鑷簬鈥滃父閲忕殑鍒嗙被鈥濆瓧鍏�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddConfigInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddConfigInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddConfigInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddConfigInput.Value">
+            <summary>
+            灞炴�у��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddConfigInput.SysFlag">
+            <summary>
+            鏄惁鏄郴缁熷弬鏁帮紙Y-鏄紝N-鍚︼級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddConfigInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddConfigInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddConfigInput.GroupCode">
+            <summary>
+            甯搁噺鎵�灞炲垎绫荤殑缂栫爜锛屾潵鑷簬鈥滃父閲忕殑鍒嗙被鈥濆瓧鍏�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteConfigInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateConfigInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateConfigInput.Id">
+            <summary>
+            搴旂敤Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateConfigInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateConfigInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateConfigInput.Value">
+            <summary>
+            灞炴�у��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateConfigInput.SysFlag">
+            <summary>
+            鏄惁鏄郴缁熷弬鏁帮紙Y-鏄紝N-鍚︼級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateConfigInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateConfigInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateConfigInput.GroupCode">
+            <summary>
+            甯搁噺鎵�灞炲垎绫荤殑缂栫爜锛屾潵鑷簬鈥滃父閲忕殑鍒嗙被鈥濆瓧鍏�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryConfigInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ISysConfigService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysConfigService.AddConfig(Admin.NET.Application.AddConfigInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysConfigService.DeleteConfig(Admin.NET.Application.DeleteConfigInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysConfigService.GetConfig(Admin.NET.Application.QueryConfigInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysConfigService.GetConfigList">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysConfigService.QueryConfigPageList(Admin.NET.Application.ConfigPageInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysConfigService.UpdateConfig(Admin.NET.Application.UpdateConfigInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysConfigService.GetDemoEnvFlag">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysConfigService.GetCaptchaOpenFlag">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysConfigService.UpdateConfigCache(System.String,System.String)">
+            <summary>
+            
+            </summary>
+            <param name="code"></param>
+            <param name="value"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysConfigService.GetEnableSingleLoginFlag">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysConfigService">
+            <summary>
+            绯荤粺鍙傛暟閰嶇疆鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysConfigService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysConfig},Admin.NET.Application.ISysCacheService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysConfigRep"></param>
+            <param name="sysCacheService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysConfigService.QueryConfigPageList(Admin.NET.Application.ConfigPageInput)">
+            <summary>
+            鍒嗛〉鑾峰彇绯荤粺鍙傛暟閰嶇疆
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysConfigService.GetConfigList">
+            <summary>
+            鑾峰彇绯荤粺鍙傛暟閰嶇疆鍒楄〃
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysConfigService.AddConfig(Admin.NET.Application.AddConfigInput)">
+            <summary>
+            澧炲姞绯荤粺鍙傛暟閰嶇疆
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysConfigService.DeleteConfig(Admin.NET.Application.DeleteConfigInput)">
+            <summary>
+            鍒犻櫎绯荤粺鍙傛暟閰嶇疆
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysConfigService.UpdateConfig(Admin.NET.Application.UpdateConfigInput)">
+            <summary>
+            鏇存柊绯荤粺鍙傛暟閰嶇疆
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysConfigService.GetConfig(Admin.NET.Application.QueryConfigInput)">
+            <summary>
+            鑾峰彇绯荤粺鍙傛暟閰嶇疆
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysConfigService.GetConfigCache(System.String)">
+            <summary>
+            鑾峰彇閰嶇疆淇℃伅
+            </summary>
+            <param name="code"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysConfigService.UpdateConfigCache(System.String,System.String)">
+            <summary>
+            鏇存柊閰嶇疆缂撳瓨
+            </summary>
+            <param name="code"></param>
+            <param name="value"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysConfigService.GetDemoEnvFlag">
+            <summary>
+            鑾峰彇婕旂ず鐜寮�鍏虫槸鍚﹀紑鍚紝榛樿涓篺alse
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysConfigService.GetCaptchaOpenFlag">
+            <summary>
+            鑾峰彇楠岃瘉鐮佸紑鍏虫爣璇�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysConfigService.GetEnableSingleLoginFlag">
+            <summary>
+            鑾峰彇鍗曠敤鎴风櫥褰曞紑鍏虫爣璇�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.DictDataPageInput">
+            <summary>
+            瀛楀吀鍊煎弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictDataPageInput.TypeId">
+            <summary>
+            瀛楀吀绫诲瀷Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictDataPageInput.Value">
+            <summary>
+            鍊�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictDataPageInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryDictDataListInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.QueryDictDataListInput.TypeId">
+            <summary>
+            瀛楀吀绫诲瀷Id
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryDictDataListByCodeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.QueryDictDataListByCodeInput.Code">
+            <summary>
+            瀛楀吀绫诲瀷Code
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddDictDataInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDictDataInput.TypeId">
+            <summary>
+            瀛楀吀绫诲瀷Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDictDataInput.Value">
+            <summary>
+            鍊�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDictDataInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDictDataInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDictDataInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDictDataInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteDictDataInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateDictDataInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateDictDataInput.Id">
+            <summary>
+            瀛楀吀鍊糏d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateDictDataInput.TypeId">
+            <summary>
+            瀛楀吀绫诲瀷Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateDictDataInput.Value">
+            <summary>
+            鍊�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateDictDataInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateDictDataInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateDictDataInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateDictDataInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ChageStateDictDataInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChageStateDictDataInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryDictDataInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DictDataOutput">
+            <summary>
+            瀛楀吀鍊煎弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictDataOutput.Id">
+            <summary>
+            瀛楀吀Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictDataOutput.TypeId">
+            <summary>
+            瀛楀吀绫诲瀷Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictDataOutput.Value">
+            <summary>
+            鍊�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictDataOutput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictDataOutput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictDataOutput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictDataOutput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DictTreeOutput">
+            <summary>
+            瀛楀吀绫诲瀷涓庡瓧鍏稿�兼瀯閫犵殑鏍�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictTreeOutput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictTreeOutput.Pid">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictTreeOutput.Code">
+            <summary>
+            缂栫爜-瀵瑰簲瀛楀吀鍊肩殑缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictTreeOutput.Name">
+            <summary>
+            鍚嶇О-瀵瑰簲瀛楀吀鍊肩殑value
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictTreeOutput.Children">
+            <summary>
+            瀛愯妭鐐归泦鍚�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DictTypePageInput">
+            <summary>
+            瀛楀吀绫诲瀷鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictTypePageInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DictTypePageInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddDictTypeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDictTypeInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDictTypeInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDictTypeInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDictTypeInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDictTypeInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteDictTypeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateDictTypeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateDictTypeInput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateDictTypeInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateDictTypeInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateDictTypeInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateDictTypeInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateDictTypeInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ChangeStateDictTypeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeStateDictTypeInput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeStateDictTypeInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DropDownDictTypeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DropDownDictTypeInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryDictTypeInfoInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ISysDictDataService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictDataService.AddDictData(Admin.NET.Application.AddDictDataInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictDataService.ChangeDictDataStatus(Admin.NET.Application.ChageStateDictDataInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictDataService.DeleteByTypeId(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="dictTypeId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictDataService.DeleteDictData(Admin.NET.Application.DeleteDictDataInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictDataService.GetDictData(Admin.NET.Application.QueryDictDataInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictDataService.GetDictDataList(Admin.NET.Application.QueryDictDataListInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictDataService.GetDictDataListByDictTypeId(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="dictTypeId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictDataService.QueryDictDataPageList(Admin.NET.Application.DictDataPageInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictDataService.UpdateDictData(Admin.NET.Application.UpdateDictDataInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.ISysDictTypeService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictTypeService.AddDictType(Admin.NET.Application.AddDictTypeInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictTypeService.ChangeDictTypeStatus(Admin.NET.Application.ChangeStateDictTypeInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictTypeService.DeleteDictType(Admin.NET.Application.DeleteDictTypeInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictTypeService.GetDictTree">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictTypeService.GetDictType(Admin.NET.Application.QueryDictTypeInfoInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictTypeService.GetDictTypeDropDown(Admin.NET.Application.DropDownDictTypeInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictTypeService.GetDictTypeList">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictTypeService.QueryDictTypePageList(Admin.NET.Application.DictTypePageInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysDictTypeService.UpdateDictType(Admin.NET.Application.UpdateDictTypeInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysDictDataService">
+            <summary>
+            瀛楀吀鍊兼湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictDataService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysDictDataRep"></param>
+            <param name="sysDictTypeRep"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictDataService.QueryDictDataPageList(Admin.NET.Application.DictDataPageInput)">
+            <summary>
+            鍒嗛〉鏌ヨ瀛楀吀鍊�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictDataService.GetDictDataList(Admin.NET.Application.QueryDictDataListInput)">
+            <summary>
+            鑾峰彇鏌愪釜瀛楀吀绫诲瀷涓嬪瓧鍏稿�煎垪琛�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictDataService.GetDictDataListByCode(Admin.NET.Application.QueryDictDataListByCodeInput)">
+            <summary>
+            鑾峰彇鏌愪釜瀛楀吀绫诲瀷涓嬪瓧鍏稿�煎垪琛�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictDataService.AddDictData(Admin.NET.Application.AddDictDataInput)">
+            <summary>
+            澧炲姞瀛楀吀鍊�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictDataService.DeleteDictData(Admin.NET.Application.DeleteDictDataInput)">
+            <summary>
+            鍒犻櫎瀛楀吀鍊�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictDataService.UpdateDictData(Admin.NET.Application.UpdateDictDataInput)">
+            <summary>
+            鏇存柊瀛楀吀鍊�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictDataService.GetDictData(Admin.NET.Application.QueryDictDataInput)">
+            <summary>
+            瀛楀吀鍊艰鎯�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictDataService.ChangeDictDataStatus(Admin.NET.Application.ChageStateDictDataInput)">
+            <summary>
+            淇敼瀛楀吀鍊肩姸鎬�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictDataService.GetDictDataListByDictTypeId(System.Int64)">
+            <summary>
+            鏍规嵁瀛楀吀绫诲瀷Id鑾峰彇瀛楀吀鍊奸泦鍚�
+            </summary>
+            <param name="dictTypeId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictDataService.DeleteByTypeId(System.Int64)">
+            <summary>
+            鍒犻櫎瀛楀吀涓嬫墍鏈夊��
+            </summary>
+            <param name="dictTypeId"></param>
+        </member>
+        <member name="T:Admin.NET.Application.SysDictTypeService">
+            <summary>
+            瀛楀吀绫诲瀷鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictTypeService.#ctor(Admin.NET.Application.ISysDictDataService,Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysDictDataService"></param>
+            <param name="sysDictTypeRep"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictTypeService.QueryDictTypePageList(Admin.NET.Application.DictTypePageInput)">
+            <summary>
+            鍒嗛〉鏌ヨ瀛楀吀绫诲瀷
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictTypeService.GetDictTypeList">
+            <summary>
+            鑾峰彇瀛楀吀绫诲瀷鍒楄〃
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictTypeService.GetDictTypeDropDown(Admin.NET.Application.DropDownDictTypeInput)">
+            <summary>
+            鑾峰彇瀛楀吀绫诲瀷涓嬫墍鏈夊瓧鍏稿��
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictTypeService.AddDictType(Admin.NET.Application.AddDictTypeInput)">
+            <summary>
+            娣诲姞瀛楀吀绫诲瀷
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictTypeService.DeleteDictType(Admin.NET.Application.DeleteDictTypeInput)">
+            <summary>
+            鍒犻櫎瀛楀吀绫诲瀷
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictTypeService.UpdateDictType(Admin.NET.Application.UpdateDictTypeInput)">
+            <summary>
+            鏇存柊瀛楀吀绫诲瀷
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictTypeService.GetDictType(Admin.NET.Application.QueryDictTypeInfoInput)">
+            <summary>
+            瀛楀吀绫诲瀷璇︽儏
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictTypeService.ChangeDictTypeStatus(Admin.NET.Application.ChangeStateDictTypeInput)">
+            <summary>
+            鏇存柊瀛楀吀绫诲瀷鐘舵��
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysDictTypeService.GetDictTree">
+            <summary>
+            瀛楀吀绫诲瀷涓庡瓧鍏稿�兼瀯閫犵殑瀛楀吀鏍�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.EmpExtOrgPosOutput">
+            <summary>
+            闄勫睘鏈烘瀯鍜岃亴浣嶅弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpExtOrgPosOutput.OrgId">
+            <summary>
+            闄勫睘鏈烘瀯id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpExtOrgPosOutput.OrgCode">
+            <summary>
+            闄勫睘鏈烘瀯缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpExtOrgPosOutput.OrgName">
+            <summary>
+            闄勫睘鏈烘瀯鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpExtOrgPosOutput.PosId">
+            <summary>
+            闄勫睘鑱屼綅id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpExtOrgPosOutput.PosCode">
+            <summary>
+            闄勫睘鑱屼綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpExtOrgPosOutput.PosName">
+            <summary>
+            闄勫睘鑱屼綅鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.EmpOutput">
+            <summary>
+            鍛樺伐淇℃伅鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpOutput.JobNum">
+            <summary>
+            宸ュ彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpOutput.OrgId">
+            <summary>
+            鏈烘瀯id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpOutput.OrgName">
+            <summary>
+            鏈烘瀯鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpOutput.ExtOrgPos">
+            <summary>
+            鏈烘瀯涓庤亴浣嶄俊鎭�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpOutput.Positions">
+            <summary>
+            鑱屼綅淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.EmpOutput2">
+            <summary>
+            鍛樺伐淇℃伅鍙傛暟2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpOutput2.Id">
+            <summary>
+            鍛樺伐Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpOutput2.JobNum">
+            <summary>
+            宸ュ彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpOutput2.OrgId">
+            <summary>
+            鏈烘瀯Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpOutput2.OrgName">
+            <summary>
+            鏈烘瀯鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpOutput2.ExtIds">
+            <summary>
+            闄勫睘鏈烘瀯
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpOutput2.PosIdList">
+            <summary>
+            鑱屼綅闆嗗悎
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.EmpPosOutput">
+            <summary>
+            鍛樺伐鑱屼綅鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpPosOutput.PosId">
+            <summary>
+            鑱屼綅Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpPosOutput.PosCode">
+            <summary>
+            鑱屼綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EmpPosOutput.PosName">
+            <summary>
+            鑱屼綅鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ISysEmpExtOrgPosService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpExtOrgPosService.AddOrUpdate(System.Int64,System.Collections.Generic.List{Admin.NET.Application.EmpExtOrgPosOutput})">
+            <summary>
+            
+            </summary>
+            <param name="empId"></param>
+            <param name="extIdList"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpExtOrgPosService.DeleteEmpExtInfoByUserId(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="empId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpExtOrgPosService.GetEmpExtOrgPosList(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="empId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpExtOrgPosService.HasExtOrgEmp(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="orgId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpExtOrgPosService.HasExtPosEmp(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="posId"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.ISysEmpPosService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpPosService.AddOrUpdate(System.Int64,System.Collections.Generic.List{System.Int64})">
+            <summary>
+            
+            </summary>
+            <param name="empId"></param>
+            <param name="posIdList"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpPosService.DeleteEmpPosInfoByUserId(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="empId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpPosService.GetEmpPosList(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="empId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpPosService.HasPosEmp(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="posId"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.ISysEmpService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpService.AddOrUpdate(Admin.NET.Application.EmpOutput2)">
+            <summary>
+            
+            </summary>
+            <param name="sysEmpParam"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpService.DeleteEmpInfoByUserId(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="empId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpService.GetEmpInfo(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="empId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpService.GetEmpOrgId(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="empId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpService.HasOrgEmp(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="orgId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpService.UpdateEmpOrgInfo(System.Int64,System.String)">
+            <summary>
+            
+            </summary>
+            <param name="orgId"></param>
+            <param name="orgName"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEmpService.HasOrgEmp(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            
+            </summary>
+            <param name="orgIds"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysEmpExtOrgPosService">
+            <summary>
+            鍛樺伐闄勫睘鏈烘瀯鍜岃亴浣嶆湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpExtOrgPosService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysEmpExtOrgPos})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysEmpExtOrgPosRep"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpExtOrgPosService.AddOrUpdate(System.Int64,System.Collections.Generic.List{Admin.NET.Application.EmpExtOrgPosOutput})">
+            <summary>
+            淇濆瓨鎴栫紪杈戦檮灞炴満鏋勭浉鍏充俊鎭�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpExtOrgPosService.GetEmpExtOrgPosList(System.Int64)">
+            <summary>
+            鑾峰彇闄勫睘鏈烘瀯鍜岃亴浣嶄俊鎭�
+            </summary>
+            <param name="empId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpExtOrgPosService.HasExtOrgEmp(System.Int64)">
+            <summary>
+            鏍规嵁鏈烘瀯Id鍒ゆ柇璇ラ檮灞炴満鏋勪笅鏄惁鏈夊憳宸�
+            </summary>
+            <param name="orgId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpExtOrgPosService.HasExtPosEmp(System.Int64)">
+            <summary>
+            鏍规嵁鑱屼綅Id鍒ゆ柇璇ラ檮灞炶亴浣嶄笅鏄惁鏈夊憳宸�
+            </summary>
+            <param name="posId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpExtOrgPosService.DeleteEmpExtInfoByUserId(System.Int64)">
+            <summary>
+            鏍规嵁鍛樺伐Id鍒犻櫎瀵瑰簲鐨勫憳宸�-闄勫睘淇℃伅
+            </summary>
+            <param name="empId"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysEmpPosService">
+            <summary>
+            鍛樺伐鑱屼綅鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpPosService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysEmpPos})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysEmpPosRep"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpPosService.AddOrUpdate(System.Int64,System.Collections.Generic.List{System.Int64})">
+            <summary>
+            澧炲姞鎴栫紪杈戝憳宸ヨ亴浣嶇浉鍏充俊鎭�
+            </summary>
+            <param name="empId">鍛樺伐Id锛堢敤鎴稩d锛�</param>
+            <param name="posIdList">鑱屼綅id闆嗗悎</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpPosService.GetEmpPosList(System.Int64)">
+            <summary>
+            鑾峰彇鎵�灞炶亴浣嶄俊鎭�
+            </summary>
+            <param name="empId">鍛樺伐Id锛堢敤鎴稩d锛�</param>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpPosService.HasPosEmp(System.Int64)">
+            <summary>
+            鏍规嵁鑱屼綅Id鍒ゆ柇璇ヨ亴浣嶄笅鏄惁鏈夊憳宸�
+            </summary>
+            <param name="posId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpPosService.DeleteEmpPosInfoByUserId(System.Int64)">
+            <summary>
+            鏍规嵁鍛樺伐Id鍒犻櫎瀵圭敤鐨勫憳宸�-鑱屼綅淇℃伅
+            </summary>
+            <param name="empId"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysEmpService">
+            <summary>
+            鍛樺伐鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysEmp},Admin.NET.Application.ISysEmpExtOrgPosService,Admin.NET.Application.ISysEmpPosService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysEmpRep"></param>
+            <param name="sysEmpExtOrgPosService"></param>
+            <param name="sysEmpPosService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpService.GetEmpInfo(System.Int64)">
+            <summary>
+            鑾峰彇鐢ㄦ埛鍛樺伐鐩稿叧淇℃伅锛堝寘鎷櫥褰曪級
+            </summary>
+            <param name="empId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpService.AddOrUpdate(Admin.NET.Application.EmpOutput2)">
+            <summary>
+            澧炲姞鎴栫紪杈戝憳宸ョ浉鍏充俊鎭�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpService.UpdateEmpOrgInfo(System.Int64,System.String)">
+            <summary>
+            淇敼鍛樺伐鐩稿叧鏈烘瀯淇℃伅
+            </summary>
+            <param name="orgId"></param>
+            <param name="orgName"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpService.HasOrgEmp(System.Int64)">
+            <summary>
+            鏍规嵁鏈烘瀯Id鍒ゆ柇璇ユ満鏋勪笅鏄惁鏈夊憳宸�
+            </summary>
+            <param name="orgId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpService.DeleteEmpInfoByUserId(System.Int64)">
+            <summary>
+            鏍规嵁鍛樺伐Id鍒犻櫎瀵瑰簲鐨勫憳宸ヨ〃淇℃伅
+            </summary>
+            <param name="empId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpService.GetEmpOrgId(System.Int64)">
+            <summary>
+            鑾峰彇鍛樺伐鏈烘瀯Id
+            </summary>
+            <param name="empId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysEmpService.HasOrgEmp(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            鑾峰彇瀛愭満鏋勭敤鎴�
+            </summary>
+            <param name="orgIds"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.EnumDataInput">
+            <summary>
+            鏋氫妇杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EnumDataInput.EnumName">
+            <summary>
+            鏋氫妇绫诲瀷鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryEnumDataInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.QueryEnumDataInput.EntityName">
+            <summary>
+            瀹炰綋鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.QueryEnumDataInput.FieldName">
+            <summary>
+            瀛楁鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.EnumDataOutput">
+            <summary>
+            鏋氫妇杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EnumDataOutput.Code">
+            <summary>
+            瀛楀吀Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.EnumDataOutput.Value">
+            <summary>
+            瀛楀吀鍊�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ISysEnumDataService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEnumDataService.GetEnumDataList(Admin.NET.Application.EnumDataInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysEnumDataService.GetEnumDataListByField(Admin.NET.Application.QueryEnumDataInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysEnumDataService">
+            <summary>
+            鏋氫妇鍊兼湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysEnumDataService.GetEnumDataList(Admin.NET.Application.EnumDataInput)">
+            <summary>
+            閫氳繃鏋氫妇绫诲瀷鑾峰彇鏋氫妇鍊奸泦鍚�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysEnumDataService.GetEnumDataListByField(Admin.NET.Application.QueryEnumDataInput)">
+            <summary>
+            閫氳繃瀹炰綋瀛楁绫诲瀷鑾峰彇鐩稿叧闆嗗悎锛堢洰鍓嶄粎鏀寔鏋氫妇绫诲瀷锛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysExcelTemplateDto">
+            <summary>
+            Excel妯℃澘杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateDto.Name">
+            <summary>
+            妯℃澘鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateDto.Version">
+            <summary>
+            鐗堟湰
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateDto.AppName">
+            <summary>
+            鎵�灞炲簲鐢�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateDto.ClassName">
+            <summary>
+            绫诲悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateDto.TemplateFileName">
+            <summary>
+            妯℃澘鏂囦欢鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateDto.UnionUniqueFields">
+            <summary>
+            鍞竴瀛楁闆�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateDto.HeadStartLine">
+            <summary>
+            琛ㄥご寮�濮嬭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateDto.DataStartLine">
+            <summary>
+            鏁版嵁寮�濮嬭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateDto.Status">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.SysExcelTemplateSearch">
+            <summary>
+            Excel妯℃澘鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearch.Name">
+            <summary>
+            妯℃澘鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearch.Version">
+            <summary>
+            鐗堟湰
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearch.AppName">
+            <summary>
+            鎵�灞炲簲鐢�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearch.ClassName">
+            <summary>
+            绫诲悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearch.TemplateFileName">
+            <summary>
+            妯℃澘鏂囦欢鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearch.UnionUniqueFields">
+            <summary>
+            鍞竴瀛楁闆�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearch.HeadStartLine">
+            <summary>
+            琛ㄥご寮�濮嬭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearch.DataStartLine">
+            <summary>
+            鏁版嵁寮�濮嬭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearch.Status">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.SysExcelTemplateSearchNonPage">
+            <summary>
+            Excel妯℃澘涓嶅垎椤垫煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.Name">
+            <summary>
+            妯℃澘鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.Version">
+            <summary>
+            鐗堟湰
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.AppName">
+            <summary>
+            鎵�灞炲簲鐢�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.ClassName">
+            <summary>
+            绫诲悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.TemplateFileName">
+            <summary>
+            妯℃澘鏂囦欢鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.UnionUniqueFields">
+            <summary>
+            鍞竴瀛楁闆�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.HeadStartLine">
+            <summary>
+            琛ㄥご寮�濮嬭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.DataStartLine">
+            <summary>
+            鏁版嵁寮�濮嬭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.Status">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.SysExcelTemplateInput">
+            <summary>
+            Excel妯℃澘杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateInput.Name">
+            <summary>
+            妯℃澘鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateInput.Version">
+            <summary>
+            鐗堟湰
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateInput.AppName">
+            <summary>
+            鎵�灞炲簲鐢�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateInput.ClassName">
+            <summary>
+            绫诲悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateInput.TemplateFileName">
+            <summary>
+            妯℃澘鏂囦欢鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateInput.UnionUniqueFields">
+            <summary>
+            鍞竴瀛楁闆�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateInput.HeadStartLine">
+            <summary>
+            琛ㄥご寮�濮嬭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateInput.DataStartLine">
+            <summary>
+            鏁版嵁寮�濮嬭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateInput.Status">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddSysExcelTemplateInput">
+            <summary>
+            Excel妯℃澘娣诲姞杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.Name">
+            <summary>
+            妯℃澘鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.Version">
+            <summary>
+            鐗堟湰
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.AppName">
+            <summary>
+            鎵�灞炲簲鐢�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.ClassName">
+            <summary>
+            绫诲悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.TemplateFileName">
+            <summary>
+            妯℃澘鏂囦欢鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.UnionUniqueFields">
+            <summary>
+            鍞竴瀛楁闆�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.HeadStartLine">
+            <summary>
+            琛ㄥご寮�濮嬭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.DataStartLine">
+            <summary>
+            鏁版嵁寮�濮嬭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.Status">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateSysExcelTemplateStatusInput">
+            <summary>
+            鏇存柊Excel妯℃澘鐘舵�佽緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateSysExcelTemplateStatusInput.Status">
+            <summary>
+            鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteSysExcelTemplateInput">
+            <summary>
+            Excel妯℃澘鍒犻櫎杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateSysExcelTemplateInput">
+            <summary>
+            Excel妯℃澘鏇存柊杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateSysExcelTemplateInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QuerySysExcelTemplateInput">
+            <summary>
+            Excel妯℃澘鏌ヨ杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.SysExcelTemplateOutput">
+            <summary>
+            Excel妯℃澘杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateOutput.Name">
+            <summary>
+            妯℃澘鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateOutput.Version">
+            <summary>
+            鐗堟湰
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateOutput.AppName">
+            <summary>
+            鎵�灞炲簲鐢�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateOutput.ClassName">
+            <summary>
+            绫诲悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateOutput.TemplateFileName">
+            <summary>
+            妯℃澘鏂囦欢鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateOutput.UnionUniqueFields">
+            <summary>
+            鍞竴瀛楁闆�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateOutput.HeadStartLine">
+            <summary>
+            琛ㄥご寮�濮嬭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateOutput.DataStartLine">
+            <summary>
+            鏁版嵁寮�濮嬭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateOutput.Status">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SysExcelTemplateOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ISysExcelTemplateService">
+            <summary>
+            Excel妯℃澘杈撳嚭鏈嶅姟鎺ュ彛
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.AddAsync(Admin.NET.Application.AddSysExcelTemplateInput)">
+            <summary>
+            娣诲姞Excel妯℃澘
+            </summary>
+            <param name="input">Excel妯℃澘娣诲姞鍙傛暟</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.DeleteAsync(Admin.NET.Application.DeleteSysExcelTemplateInput)">
+            <summary>
+            鍒犻櫎Excel妯℃澘
+            </summary>
+            <param name="input">Excel妯℃澘鍒犻櫎鍙傛暟</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.GetAsync(Admin.NET.Application.QuerySysExcelTemplateInput)">
+            <summary>
+            鑾峰彇鍗曚釜Excel妯℃澘
+            </summary>
+            <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+            <returns>Excel妯℃澘瀹炰緥</returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.ListAsync(Admin.NET.Application.SysExcelTemplateInput)">
+            <summary>
+            涓嶅垎椤垫煡璇㈡墍鏈塃xcel妯℃澘鍒楄〃
+            </summary>
+            <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+            <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.PageAsync(Admin.NET.Application.SysExcelTemplateSearch)">
+            <summary>
+            鍒嗛〉鏌ヨExcel妯℃澘鍒楄〃
+            </summary>
+            <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+            <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.ListNonPageAsync(Admin.NET.Application.SysExcelTemplateSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇xcel妯℃澘鍒楄〃
+            </summary>
+            <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+            <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.UpdateAsync(Admin.NET.Application.UpdateSysExcelTemplateInput)">
+            <summary>
+            鏇存柊Excel妯℃澘
+            </summary>
+            <param name="input">Excel妯℃澘鏇存柊鍙傛暟</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.ToExcelAsync(Admin.NET.Application.SysExcelTemplateSearchNonPage)">
+            <summary>
+            鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+            </summary>
+            <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.ToExcelAsync(Admin.NET.Application.SysExcelTemplateSearchNonPage,System.String)">
+            <summary>
+            鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+            </summary>
+            <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+            <param name="appName"></param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.ChangeSysExcelTemplateStatusAsync(Admin.NET.Application.UpdateSysExcelTemplateStatusInput)">
+            <summary>
+            淇敼Excel妯℃澘鐘舵��
+            </summary>
+            <param name="input">Excel妯℃澘鐘舵�佸弬鏁�</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync(System.String,System.String)">
+            <summary>
+            鏍规嵁绫诲悕鍙婄増鏈彿鑾峰彇鍗曚釜Excel妯℃澘
+            </summary>
+            <param name="className">绫诲悕</param>
+            <param name="version">鐗堟湰鍙�</param>
+            <returns>Excel妯℃澘瀹炰緥</returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆鍔熻兘
+            </summary>
+            <param name="file"> Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇Excel妯℃澘鐨凟xcel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.GetColumnListAsync(System.String)">
+            <summary>
+            鑾峰彇瀹炰綋鍚嶇О鑾峰彇灞炴�ч泦鍚�
+            </summary>
+            <param name="className">瀹炰綋鍚嶇О</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.ParseTemplateHintAsync(System.String)">
+            <summary>
+            鑾峰彇妯℃澘鎻愮ず瀛楃
+            </summary>
+            <param name="className">瀹炰綋鍚嶇О</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.QueryUniqueColumns(System.String)">
+            <summary>
+            鏍规嵁绫诲悕鏌ヨ鍏舵煡璇㈠敮涓�绫诲瀷
+            </summary>
+            <param name="className">绫诲瀷鍚�</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.QueryTable(System.String)">
+            <summary>
+            鏍规嵁绫诲悕鏌ヨ鍏舵煡璇㈣〃淇℃伅
+            </summary>
+            <param name="className">绫诲瀷鍚�</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.ParseSeedData(System.String,System.String)">
+            <summary>
+            鏍规嵁绫诲悕鐢熸垚鐩稿簲鐨勭瀛愪唬鐮�
+            </summary>
+            <param name="className">绫诲悕</param>
+            <param name="prefix">鍓嶇紑</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysExcelTemplateService.ParseId(System.String)">
+            <summary>
+            鏍规嵁鍓嶇紑鑾峰彇鏈�澶D鍔�1
+            </summary>
+            <param name="prefix">鍓嶇紑</param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysExcelTemplateService">
+            <summary>
+            Excel妯℃澘鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysExcelTemplate,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            Excel妯℃澘鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysExcelTemplateRep"></param>
+            <param name="sysDictTypeRep"></param>
+            <param name="sysDictDataRep"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.PageAsync(Admin.NET.Application.SysExcelTemplateSearch)">
+            <summary>
+            鍒嗛〉鏌ヨExcel妯℃澘
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.ListNonPageAsync(Admin.NET.Application.SysExcelTemplateSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇xcel妯℃澘鍒楄〃
+            </summary>
+            <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+            <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.AddAsync(Admin.NET.Application.AddSysExcelTemplateInput)">
+            <summary>
+            澧炲姞Excel妯℃澘
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.DeleteAsync(Admin.NET.Application.DeleteSysExcelTemplateInput)">
+            <summary>
+            鍒犻櫎Excel妯℃澘
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.UpdateAsync(Admin.NET.Application.UpdateSysExcelTemplateInput)">
+            <summary>
+            鏇存柊Excel妯℃澘
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.ChangeSysExcelTemplateStatusAsync(Admin.NET.Application.UpdateSysExcelTemplateStatusInput)">
+            <summary>
+            淇敼Excel妯℃澘鐘舵��
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.GetAsync(Admin.NET.Application.QuerySysExcelTemplateInput)">
+            <summary>
+            鑾峰彇Excel妯℃澘
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.ListAsync(Admin.NET.Application.SysExcelTemplateInput)">
+            <summary>
+            鑾峰彇Excel妯℃澘鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.ToExcelAsync(Admin.NET.Application.SysExcelTemplateSearchNonPage)">
+            <summary>
+            鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+            </summary>
+            <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.ToExcelAsync(Admin.NET.Application.SysExcelTemplateSearchNonPage,System.String)">
+            <summary>
+            鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+            </summary>
+            <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+            <param name="appName"></param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync(System.String,System.String)">
+            <summary>
+            鏍规嵁绫诲悕鍙婄増鏈彿鑾峰彇鍗曚釜Excel妯℃澘
+            </summary>
+            <param name="className">绫诲悕</param>
+            <param name="version">鐗堟湰鍙�</param>
+            <returns>Excel妯℃澘瀹炰緥</returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            瀵煎叆Excel妯℃澘鏂囦欢
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.GetColumnListAsync(System.String)">
+            <summary>
+            鑾峰彇瀹炰綋鍚嶇О鑾峰彇灞炴�ч泦鍚�
+            </summary>
+            <param name="className">瀹炰綋鍚嶇О</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.QueryUniqueColumns(System.String)">
+            <summary>
+            鎹被鍚嶆煡璇㈠叾鏌ヨ鏍囬噺绫诲瀷
+            </summary>
+            <param name="className">绫诲悕</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.QueryTable(System.String)">
+            <summary>
+            鏍规嵁绫诲悕鏌ヨ鍏舵煡璇㈣〃淇℃伅
+            </summary>
+            <param name="className">绫诲瀷鍚�</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.ParseSeedData(System.String,System.String)">
+            <summary>
+            鏍规嵁绫诲悕鐢熸垚鐩稿簲鐨勭瀛愪唬鐮�
+            </summary>
+            <param name="className">绫诲悕</param>
+            <param name="prefix">鍓嶇紑</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.ParseTemplateHintAsync(System.String)">
+            <summary>
+            鑾峰彇妯℃澘鎻愮ず瀛楃
+            </summary>
+            <param name="className">瀹炰綋鍚嶇О</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysExcelTemplateService.ParseId(System.String)">
+            <summary>
+            鏍规嵁绫诲悕鑾峰彇鏈�澶D鍔�1
+            </summary>
+            <param name="prefix">鍓嶇紑</param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.FilePageInput">
+            <summary>
+            涓婁紶鏂囦欢鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FilePageInput.FileLocation">
+            <summary>
+            鏂囦欢瀛樺偍浣嶇疆锛�1:闃块噷浜戯紝2:鑵捐浜戯紝3:minio锛�4:鏈湴锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FilePageInput.FileBucket">
+            <summary>
+            鏂囦欢浠撳簱
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FilePageInput.FileOriginName">
+            <summary>
+            鏂囦欢鍚嶇О锛堜笂浼犳椂鍊欑殑鏂囦欢鍚嶏級
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteFileInfoInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryFileInfoInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FileOutput">
+            <summary>
+            涓婁紶鏂囦欢鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FileOutput.Id">
+            <summary>
+            鏂囦欢Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FileOutput.FileLocation">
+            <summary>
+            鏂囦欢瀛樺偍浣嶇疆锛�1:闃块噷浜戯紝2:鑵捐浜戯紝3:minio锛�4:鏈湴锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FileOutput.FileBucket">
+            <summary>
+            鏂囦欢浠撳簱
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FileOutput.FileOriginName">
+            <summary>
+            鏂囦欢鍚嶇О锛堜笂浼犳椂鍊欑殑鏂囦欢鍚嶏級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FileOutput.FileSuffix">
+            <summary>
+            鏂囦欢鍚庣紑
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FileOutput.FileSizeKb">
+            <summary>
+            鏂囦欢澶у皬kb
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FileOutput.FileSizeInfo">
+            <summary>
+            鏂囦欢澶у皬淇℃伅锛岃绠楀悗鐨�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FileOutput.FileObjectName">
+            <summary>
+            瀛樺偍鍒癰ucket鐨勫悕绉帮紙鏂囦欢鍞竴鏍囪瘑id锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FileOutput.FilePath">
+            <summary>
+            瀛樺偍璺緞
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.KFormFileOutput">
+            <summary>
+            k-form-design鎵�闇�鍙傛暟瑕佹眰
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.KFormFileOutput.code">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.KFormFileOutput.Data">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.KFormFileIrem">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.KFormFileIrem.FileId">
+            <summary>
+            鏂囦欢ID
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.KFormFileIrem.Url">
+            <summary>
+            鏂囦欢涓嬭浇鍦板潃
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ISysFileService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysFileService.DeleteFileInfo(Admin.NET.Application.DeleteFileInfoInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysFileService.DownloadFileInfo(Admin.NET.Application.QueryFileInfoInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysFileService.GetFileInfo(Admin.NET.Application.QueryFileInfoInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysFileService.GetFileInfoList(Admin.NET.Application.FileOutput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysFileService.PreviewFileInfo(Admin.NET.Application.QueryFileInfoInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysFileService.QueryFileInfoPageList(Admin.NET.Application.FilePageInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysFileService.UploadFileAvatar(Microsoft.AspNetCore.Http.IFormFile)">
+            <summary>
+            
+            </summary>
+            <param name="file"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysFileService.UploadFileDefault(Microsoft.AspNetCore.Http.IFormFile)">
+            <summary>
+            
+            </summary>
+            <param name="file"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysFileService.UploadFileDocument(Microsoft.AspNetCore.Http.IFormFile)">
+            <summary>
+            
+            </summary>
+            <param name="file"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysFileService.UploadFileShop(Microsoft.AspNetCore.Http.IFormFile)">
+            <summary>
+            
+            </summary>
+            <param name="file"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysFileService.UploadFile(Microsoft.AspNetCore.Http.IFormFile,System.String)">
+            <summary>
+            
+            </summary>
+            <param name="file"></param>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysFileService">
+            <summary>
+            鏂囦欢鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysFileService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysFile},Microsoft.Extensions.Configuration.IConfiguration,OnceMi.AspNetCore.OSS.IOSSServiceFactory)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysFileInfoRep"></param>
+            <param name="configuration"></param>
+            <param name="oSSServiceFactory"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysFileService.QueryFileInfoPageList(Admin.NET.Application.FilePageInput)">
+            <summary>
+            鍒嗛〉鑾峰彇鏂囦欢鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysFileService.GetFileInfoList(Admin.NET.Application.FileOutput)">
+            <summary>
+            鑾峰彇鏂囦欢鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysFileService.DeleteFileInfo(Admin.NET.Application.DeleteFileInfoInput)">
+            <summary>
+            鍒犻櫎鏂囦欢
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysFileService.GetFileInfo(Admin.NET.Application.QueryFileInfoInput)">
+            <summary>
+            鑾峰彇鏂囦欢璇︽儏
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysFileService.PreviewFileInfo(Admin.NET.Application.QueryFileInfoInput)">
+            <summary>
+            棰勮鏂囦欢
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysFileService.UploadFileDefault(Microsoft.AspNetCore.Http.IFormFile)">
+            <summary>
+            涓婁紶鏂囦欢
+            </summary>
+            <param name="file"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysFileService.KFormUploadFileDefault(Microsoft.AspNetCore.Http.IFormFile,System.String)">
+            <summary>
+            涓婁紶鏂囦欢(k-form-design)
+            </summary>
+            <param name="file"></param>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysFileService.DownloadFileInfo(Admin.NET.Application.QueryFileInfoInput)">
+            <summary>
+            涓嬭浇鏂囦欢
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysFileService.UploadFileAvatar(Microsoft.AspNetCore.Http.IFormFile)">
+            <summary>
+            涓婁紶澶村儚
+            </summary>
+            <param name="file"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysFileService.UploadFileDocument(Microsoft.AspNetCore.Http.IFormFile)">
+            <summary>
+            涓婁紶鏂囨。
+            </summary>
+            <param name="file"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysFileService.UploadFileShop(Microsoft.AspNetCore.Http.IFormFile)">
+            <summary>
+            涓婁紶鍟嗗簵鍥剧墖
+            </summary>
+            <param name="file"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysFileService.UploadFile(Microsoft.AspNetCore.Http.IFormFile,System.String)">
+            <summary>
+            涓婁紶鏂囦欢
+            </summary>
+            <param name="file"></param>
+            <param name="key"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysFileService.UploadFile(Microsoft.AspNetCore.Http.IFormFile,System.String,Admin.NET.Core.FileLocation)">
+            <summary>
+            涓婁紶鏂囦欢
+            </summary>
+            <param name="file">鏂囦欢</param>
+            <param name="key">瀵硅薄瀛樺偍閿�</param>
+            <param name="fileLocation">鏂囦欢瀛樺偍浣嶇疆</param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.FormAddDto">
+            <summary>
+            琛ㄥ崟娣诲姞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormAddDto.Title">
+             <summary>
+            琛ㄥ崟鏍囬 涓嶅彲閲嶅
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormAddDto.TypeId">
+            <summary>
+            琛ㄥ崟绫诲瀷ID
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormAddDto.FormJson">
+            <summary>
+            form琛ㄥ崟Json
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormAddDto.Publish">
+            <summary>
+            鏄惁鍙戝竷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormAddDto.Version">
+            <summary>
+            鐗堟湰
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FormDto">
+            <summary>
+            琛ㄥ崟杈撳嚭Dto
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.FormDto.#ctor">
+            <summary>
+            鏃犲弬鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.FormDto.#ctor(Admin.NET.Application.FormDto)">
+            <summary>
+            鏈夊弬鏋勯�犲嚱鏁�
+            </summary>
+            <param name="formDto"></param>
+        </member>
+        <member name="M:Admin.NET.Application.FormDto.#ctor(System.Int64,System.String,System.String,System.Boolean,System.Int64,System.String,System.Int32,System.String,System.Nullable{System.Int64},System.Nullable{System.DateTimeOffset},Admin.NET.Application.FormList)">
+            <summary>
+            鏈夊弬鏋勯�犲嚱鏁�
+            </summary>
+            <param name="id"></param>
+            <param name="title"></param>
+            <param name="formjson"></param>
+            <param name="publish"></param>
+            <param name="typeId"></param>
+            <param name="typeName"></param>
+            <param name="version"></param>
+            <param name="createdUserName"></param>
+            <param name="createdUserId"></param>
+            <param name="createdTime"></param>
+            <param name="nodesList"></param>
+        </member>
+        <member name="P:Admin.NET.Application.FormDto.Id">
+            <summary>
+            涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormDto.Title">
+             <summary>
+            琛ㄥ崟鏍囬 涓嶅彲閲嶅
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormDto.FormJson">
+            <summary>
+            form琛ㄥ崟Json
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormDto.Publish">
+            <summary>
+            鏄惁鍙戝竷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormDto.TypeId">
+            <summary>
+            琛ㄥ崟绫诲瀷ID
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormDto.TypeName">
+            <summary>
+            琛ㄥ崟绫诲瀷鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormDto.Version">
+            <summary>
+            鐗堟湰
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormDto.CreatedUserName">
+            <summary>
+            鍒涘缓浜哄鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormDto.CreatedUserId">
+            <summary>
+            鍒涘缓浜篒D
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormDto.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormDto.NodesList">
+            <summary>
+            鑺傜偣鍒楄〃
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FormList">
+            <summary>
+            琛ㄥ崟鍒楄〃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormList.List">
+            <summary>
+            鑺傜偣鍒楄〃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormList.Config">
+            <summary>
+            閰嶇疆
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FormNode">
+            <summary>
+            琛ㄥ崟鑺傜偣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormNode.Type">
+            <summary>
+            绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormNode.Label">
+            <summary>
+            鏍囬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormNode.Options">
+            <summary>
+            灞炴�ц缃�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormNode.Model">
+             <summary>
+            
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormNode.Key">
+             <summary>
+            
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormNode.Help">
+            <summary>
+            甯姪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormNode.Prefix">
+            <summary>
+            鍓嶇紑
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormNode.Suffix">
+            <summary>
+            鍚庣紑
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormNode.Rules">
+            <summary>
+            鏍¢獙瑙勫垯
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FormOptions">
+            <summary>
+            鑺傜偣灞炴��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormOptions.Type">
+            <summary>
+            绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormOptions.Width">
+            <summary>
+            瀹藉害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormOptions.DefaultValue">
+            <summary>
+            榛樿鍊�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormOptions.Placeholder">
+            <summary>
+            甯姪淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormOptions.Clearable">
+             <summary>
+            
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormOptions.MaxLength">
+             <summary>
+            
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormOptions.Hidden">
+            <summary>
+            鏄惁闅愯棌
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormOptions.Disabled">
+            <summary>
+            鏄惁鍙敤
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FormRules">
+            <summary>
+            鏍¢獙瑙勫垯
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormRules.Required">
+            <summary>
+            鏄惁蹇呭~
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormRules.Message">
+            <summary>
+            淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FormConfig">
+            <summary>
+            琛ㄥ崟閰嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormConfig.Layout">
+             <summary>
+            
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormConfig.LabelCol">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormConfig.WrapperCol">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormConfig.HideRequiredMark">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormConfig.CustomStyle">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FormLabelCol">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormLabelCol.XS">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormLabelCol.SM">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormLabelCol.MD">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormLabelCol.LG">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormLabelCol.XL">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormLabelCol.XXL">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FormWrapperCol">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormWrapperCol.XS">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormWrapperCol.SM">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormWrapperCol.MD">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormWrapperCol.LG">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormWrapperCol.XL">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormWrapperCol.XXL">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FormEditDto">
+            <summary>
+            琛ㄥ崟缂栬緫
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormEditDto.Title">
+             <summary>
+            琛ㄥ崟鏍囬 涓嶅彲閲嶅
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormEditDto.FormJson">
+            <summary>
+            form琛ㄥ崟Json
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormEditDto.Publish">
+            <summary>
+            鏄惁鍙戝竷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormEditDto.TypeId">
+            <summary>
+            琛ㄥ崟绫诲瀷ID
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormEditDto.Version">
+            <summary>
+            鐗堟湰
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FormPageSearch">
+            <summary>
+            鍒嗛〉鏌ヨ鏉′欢
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormPageSearch.Title">
+            <summary>
+            鏍囬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormPageSearch.TypeId">
+            <summary>
+            琛ㄥ崟绫诲瀷
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FormPublishDto">
+            <summary>
+            鍙戝竷鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormPublishDto.Publish">
+            <summary>
+            鍙戝竷鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FormPublishDto.Type">
+            <summary>
+            琛ㄥ崟绫诲瀷Id
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FormService">
+            <summary>
+            琛ㄥ崟绠$悊
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.FormService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysForm},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysformRep">琛ㄥ崟鏁版嵁琛�</param>
+            <param name="sysDictDataRep"></param>
+        </member>
+        <member name="M:Admin.NET.Application.FormService.GetPageList(Admin.NET.Application.FormPageSearch)">
+            <summary>
+            鑾峰彇琛ㄥ崟鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.FormService.FormAdd(Admin.NET.Application.FormAddDto)">
+            <summary>
+            娣诲姞
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.FormService.UpdateEditForm(Admin.NET.Application.FormEditDto)">
+            <summary>
+            鏇存柊琛ㄥ崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.FormService.Delete(Admin.NET.Core.Service.BaseId)">
+            <summary>
+            鍒犻櫎琛ㄥ崟
+            </summary>
+            <param name="input"></param>
+        </member>
+        <member name="M:Admin.NET.Application.FormService.Publish(Admin.NET.Application.FormPublishDto)">
+            <summary>
+            鍙戝竷琛ㄥ崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.FormService.Get(Admin.NET.Core.Service.BaseId)">
+            <summary>
+            鑾峰彇鍗曚竴瀹炰綋
+            </summary>
+            <param name="Input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.FormService.GetView(Admin.NET.Core.Service.BaseId)">
+            <summary>
+            鑾峰彇鍗曚竴瀹炰綋鏌ョ湅
+            </summary>
+            <param name="Input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.FormService.GetPulishList(System.Nullable{System.Int64})">
+            <summary>
+            鑾峰彇宸插彂甯冭〃鍗曞垪琛�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.FormService.CheckTitle(System.String)">
+            <summary>
+            鍒ゆ柇鏍囬鏄惁閲嶅
+            </summary>
+            <param name="Title"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.IFormService">
+            <summary>
+            琛ㄥ崟绠$悊鎺ュ彛
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.IFormService.GetPageList(Admin.NET.Application.FormPageSearch)">
+            <summary>
+            鑾峰彇琛ㄥ崟鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IFormService.FormAdd(Admin.NET.Application.FormAddDto)">
+            <summary>
+            娣诲姞
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IFormService.UpdateEditForm(Admin.NET.Application.FormEditDto)">
+            <summary>
+            鏇存柊琛ㄥ崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IFormService.Delete(Admin.NET.Core.Service.BaseId)">
+            <summary>
+            鍒犻櫎琛ㄥ崟
+            </summary>
+            <param name="input"></param>
+        </member>
+        <member name="M:Admin.NET.Application.IFormService.Publish(Admin.NET.Application.FormPublishDto)">
+            <summary>
+            鍙戝竷琛ㄥ崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IFormService.Get(Admin.NET.Core.Service.BaseId)">
+            <summary>
+            鑾峰彇鍗曚竴瀹炰綋
+            </summary>
+            <param name="Input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IFormService.GetView(Admin.NET.Core.Service.BaseId)">
+            <summary>
+            鑾峰彇鍗曚竴瀹炰綋鏌ョ湅
+            </summary>
+            <param name="Input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IFormService.GetPulishList(System.Nullable{System.Int64})">
+            <summary>
+            鑾峰彇鍙戝竷琛ㄥ崟鍒楄〃
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.ChatHub">
+            <summary>
+            鑱婂ぉ闆嗙嚎鍣�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ChatHub.#ctor(Admin.NET.Application.ISysCacheService,Admin.NET.Application.ISendMessageService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="cache"></param>
+            <param name="sendMessageService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.ChatHub.OnConnectedAsync">
+            <summary>
+            杩炴帴
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ChatHub.OnDisconnectedAsync(System.Exception)">
+            <summary>
+            鏂紑
+            </summary>
+            <param name="exception"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ChatHub.ClientsSendMessage(Admin.NET.Application.MessageinputDto)">
+            <summary>
+            鍓嶇璋冪敤鍙戦�佹柟娉�
+            鍙戦�佷俊鎭粰鏌愪釜浜�
+            </summary>
+            <param name="_message"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ChatHub.ClientsSendMessagetoAll(Admin.NET.Application.MessageinputDto)">
+            <summary>
+            鍓嶇璋冪敤鍙戦�佹柟娉�
+            鍙戦�佷俊鎭粰鎵�鏈変汉
+            </summary>
+            <param name="_message"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ChatHub.ClientsSendMessagetoOther(Admin.NET.Application.MessageinputDto)">
+            <summary>
+            鍓嶇璋冪敤鍙戦�佹柟娉�
+            鍙戦�佹秷鎭粰闄や簡鍙戦�佷汉鐨勫叾浠栦汉
+            </summary>
+            <param name="_message"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ChatHub.ClientsSendMessagetoUsers(Admin.NET.Application.MessageinputDto)">
+            <summary>
+            鍓嶇璋冪敤鍙戦�佹柟娉�
+            鍙戦�佹秷鎭粰鏌愪簺浜�
+            </summary>
+            <param name="_message"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.MessageinputDto">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MessageinputDto.userId">
+            <summary>
+            鐢ㄦ埛ID
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MessageinputDto.userIds">
+            <summary>
+            鐢ㄦ埛ID鍒楄〃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MessageinputDto.title">
+            <summary>
+            娑堟伅鏍囬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MessageinputDto.message">
+            <summary>
+            娑堟伅鍐呭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MessageinputDto.messageType">
+            <summary>
+            娑堟伅绫诲瀷
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.IChatClient">
+            <summary>
+            鑱婂ぉ瀹㈡埛绔帴鍙e畾涔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.IChatClient.ForceExist">
+            <summary>
+            寮哄埗涓嬬嚎
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IChatClient.SingleLoginForceExist">
+            <summary>
+            鍗曠敤鎴风櫥褰曪紝寮哄埗涓嬬嚎
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IChatClient.ReceiveMessage(System.Object)">
+            <summary>
+            鍙戦�佷俊鎭�
+            </summary>
+            <param name="context"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.Service.System.LowCode.Dto.ContrasOutput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrasOutput.Add">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrasOutput.Del">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode.Controls">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode.Databases">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.Id">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.Control_Key">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.Control_Label">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.Control_Model">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.Control_Type">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.TableName">
+            <summary>
+            琛ㄥ悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.ClassName">
+            <summary>
+            绫诲悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.TableDesc">
+            <summary>
+            琛ㄦ弿杩�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.FieldName">
+            <summary>
+            瀛楁鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.DbType">
+            <summary>
+            鏁版嵁绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.DbTypeName">
+            <summary>
+            鏁版嵁绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.DtoTypeName">
+            <summary>
+            鏁版嵁绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.DbParam">
+            <summary>
+            鏁版嵁绫诲瀷琛ュ厖鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.IsRequired">
+            <summary>
+            鏄惁蹇呭~
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.WhetherTable">
+            <summary>
+            鍒楄〃鏄剧ず
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.WhetherOrderBy">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.whetherAddUpdate">
+            <summary>
+            澧炴敼
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.QueryWhether">
+            <summary>
+            鏄惁鏄煡璇�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.QueryType">
+            <summary>
+            鏌ヨ鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.WhetherUnionKey">
+            <summary>
+            鏄惁鑱斿悎涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.TableName">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.TableDesc">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.AuthorName">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.BusName">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.NameSpace">
+            <summary>
+            鍛藉悕绌洪棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.ModuleName">
+            <summary>
+            妯″潡璺緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.IsOnlyQuery">
+            <summary>
+            鏄惁鍙槸鏌ヨ 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.ProName">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.DatabaseName">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.ClassName">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.CamelizeClassName">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.QueryWhetherList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.TableField">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.FileTableField">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.Fields">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.LowCodeId">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.FormDesign">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.DynamicData">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.DynamicLoad_Dict">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.IsFile">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.MenuApplication">
+            <summary>
+            鑿滃崟搴旂敤鍒嗙被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.ImportExcelCustomizationContent">
+            <summary>
+            瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AntDesignTreeNode">
+            <summary>
+            鐧诲綍鑿滃崟-AntDesign鑿滃崟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AntDesignTreeNode.Id">
+            <summary>
+            id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AntDesignTreeNode.Pid">
+            <summary>
+            鐖秈d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AntDesignTreeNode.Name">
+            <summary>
+            璺敱鍚嶇О, 蹇呴』璁剧疆,涓斾笉鑳介噸鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AntDesignTreeNode.Component">
+            <summary>
+            缁勪欢
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AntDesignTreeNode.Redirect">
+            <summary>
+            閲嶅畾鍚戝湴鍧�, 璁块棶杩欎釜璺敱鏃�, 鑷畾杩涜閲嶅畾鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AntDesignTreeNode.Meta">
+            <summary>
+            璺敱鍏冧俊鎭紙璺敱闄勫甫鎵╁睍淇℃伅锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AntDesignTreeNode.Path">
+            <summary>
+            璺緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AntDesignTreeNode.Hidden">
+            <summary>
+            鎺у埗璺敱鍜屽瓙璺敱鏄惁鏄剧ず鍦� sidebar
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.Meta">
+            <summary>
+            璺敱鍏冧俊鎭唴閮ㄧ被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Meta.Title">
+            <summary>
+            璺敱鏍囬, 鐢ㄤ簬鏄剧ず闈㈠寘灞�, 椤甸潰鏍囬 *鎺ㄨ崘璁剧疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Meta.Icon">
+            <summary>
+            鍥炬爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Meta.Show">
+            <summary>
+            鏄惁鍙
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Meta.Target">
+            <summary>
+            濡傞渶澶栭儴鎵撳紑锛屽鍔狅細_blank
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.Meta.Link">
+            <summary>
+            鍐呴摼鎵撳紑http閾炬帴
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.MenuInput">
+            <summary>
+            鑿滃崟鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuInput.Type">
+            <summary>
+            鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuInput.Router">
+            <summary>
+            璺敱鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuInput.Permission">
+            <summary>
+            鏉冮檺鏍囪瘑
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuInput.OpenType">
+            <summary>
+            鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TreeForGrantInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TreeForGrantInput.Application">
+            <summary>
+            搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetMenuTreeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetMenuTreeInput.Application">
+            <summary>
+            搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetMenuListInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetMenuListInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetMenuListInput.Application">
+            <summary>
+            搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddMenuInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Type">
+            <summary>
+            鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Pid">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Icon">
+            <summary>
+            鍥炬爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Router">
+            <summary>
+            璺敱鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Component">
+            <summary>
+            缁勪欢鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Permission">
+            <summary>
+            鏉冮檺鏍囪瘑
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Application">
+            <summary>
+            搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.OpenType">
+            <summary>
+            鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Visible">
+            <summary>
+            鏄惁鍙锛圷-鏄紝N-鍚︼級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Link">
+            <summary>
+            鍐呴摼鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Redirect">
+            <summary>
+            閲嶅畾鍚戝湴鍧�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Weight">
+            <summary>
+            鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddMenuInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteMenuInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateMenuInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Id">
+            <summary>
+            鑿滃崟Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Pid">
+            <summary>
+            鐖禝d
+            </summary>DeleteMenuInput
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Type">
+            <summary>
+            鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Icon">
+            <summary>
+            鍥炬爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Router">
+            <summary>
+            璺敱鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Component">
+            <summary>
+            缁勪欢鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Permission">
+            <summary>
+            鏉冮檺鏍囪瘑
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Application">
+            <summary>
+            搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.OpenType">
+            <summary>
+            鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Visible">
+            <summary>
+            鏄惁鍙锛圷-鏄紝N-鍚︼級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Link">
+            <summary>
+            鍐呴摼鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Redirect">
+            <summary>
+            閲嶅畾鍚戝湴鍧�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Weight">
+            <summary>
+            鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMenuInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryMenuInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ChangeAppMenuInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Application">
+            <summary>
+            搴旂敤缂栫爜
+            </summary>DeleteMenuInput
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Pid">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Type">
+            <summary>
+            鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Icon">
+            <summary>
+            鍥炬爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Router">
+            <summary>
+            璺敱鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Component">
+            <summary>
+            缁勪欢鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Permission">
+            <summary>
+            鏉冮檺鏍囪瘑
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.OpenType">
+            <summary>
+            鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Visible">
+            <summary>
+            鏄惁鍙锛圷-鏄紝N-鍚︼級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Link">
+            <summary>
+            鍐呴摼鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Redirect">
+            <summary>
+            閲嶅畾鍚戝湴鍧�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Weight">
+            <summary>
+            鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeAppMenuInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.MenuOutput">
+            <summary>
+            鑿滃崟鏍戯紙鍒楄〃褰㈠紡锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Id">
+            <summary>
+            鑿滃崟Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Children">
+            <summary>
+            瀛愯妭鐐�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Pid">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Type">
+            <summary>
+            鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Icon">
+            <summary>
+            鍥炬爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Router">
+            <summary>
+            璺敱鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Component">
+            <summary>
+            缁勪欢鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Permission">
+            <summary>
+            鏉冮檺鏍囪瘑
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Application">
+            <summary>
+            搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.OpenType">
+            <summary>
+            鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Visible">
+            <summary>
+            鏄惁鍙锛圷-鏄紝N-鍚︼級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Link">
+            <summary>
+            鍐呴摼鍦板潃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Redirect">
+            <summary>
+            閲嶅畾鍚戝湴鍧�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Weight">
+            <summary>
+            鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuOutput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.MenuOutput.GetId">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MenuOutput.GetPid">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MenuOutput.SetChildren(System.Collections.IList)">
+            <summary>
+            
+            </summary>
+            <param name="children"></param>
+        </member>
+        <member name="T:Admin.NET.Application.MenuTreeOutput">
+            <summary>
+            鑿滃崟鏍�---鎺堟潈銆佹柊澧炵紪杈戞椂閫夋嫨
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuTreeOutput.Id">
+            <summary>
+            涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuTreeOutput.ParentId">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuTreeOutput.Title">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuTreeOutput.Value">
+            <summary>
+            鍊�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuTreeOutput.IntValue">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuTreeOutput.Weight">
+            <summary>
+            鎺掑簭锛岃秺灏忎紭鍏堢骇瓒婇珮
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MenuTreeOutput.Children">
+            <summary>
+            瀛愯妭鐐�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.MenuTreeOutput.GetId">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MenuTreeOutput.GetPid">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MenuTreeOutput.SetChildren(System.Collections.IList)">
+            <summary>
+            
+            </summary>
+            <param name="children"></param>
+        </member>
+        <member name="T:Admin.NET.Application.ISysMenuService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysMenuService.AddMenu(Admin.NET.Application.AddMenuInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysMenuService.ChangeAppMenu(Admin.NET.Application.ChangeAppMenuInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysMenuService.DeleteMenu(Admin.NET.Application.DeleteMenuInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysMenuService.GetLoginMenusAntDesign(System.Int64,System.String)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <param name="appCode"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysMenuService.GetLoginPermissionList(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysMenuService.GetAllPermissionList">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysMenuService.GetMenu(Admin.NET.Application.QueryMenuInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysMenuService.GetMenuList(Admin.NET.Application.GetMenuListInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysMenuService.GetMenuTree(Admin.NET.Application.GetMenuTreeInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysMenuService.GetUserMenuAppCodeList(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysMenuService.HasMenu(System.String)">
+            <summary>
+            
+            </summary>
+            <param name="appCode"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysMenuService.TreeForGrant(Admin.NET.Application.TreeForGrantInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysMenuService.UpdateMenu(Admin.NET.Application.UpdateMenuInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysMenuService">
+            <summary>
+            绯荤粺鑿滃崟鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysMenu},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPdaPower},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.Entity.WmsBase.WmsRolePdaMenu},Admin.NET.Application.ISysCacheService,Admin.NET.Application.ISysUserRoleService,Admin.NET.Application.ISysRoleMenuService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysMenuRep"></param>
+            <param name="sysCacheService"></param>
+            <param name="sysUserRoleService"></param>
+            <param name="sysRoleMenuService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.GetLoginPermissionList(System.Int64)">
+            <summary>
+            鑾峰彇鐢ㄦ埛鏉冮檺(鎸夐挳鏉冮檺鏍囪瘑闆嗗悎)
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.GetAllPermissionList">
+            <summary>
+            鑾峰彇鎵�鏈夋潈闄�(鎸夐挳鏉冮檺鏍囪瘑闆嗗悎)
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.GetLoginMenusAntDesign(System.Int64,System.String)">
+            <summary>
+            鑾峰彇鐢ㄦ埛AntDesign鑿滃崟闆嗗悎
+            </summary>
+            <param name="userId"></param>
+            <param name="appCode"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.GetUserMenuAppCodeList(System.Int64)">
+            <summary>
+            鑾峰彇鐢ㄦ埛鑿滃崟鎵�灞炵殑搴旂敤缂栫爜闆嗗悎
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.GetMenuList(Admin.NET.Application.GetMenuListInput)">
+            <summary>
+            绯荤粺鑿滃崟鍒楄〃锛堟爲琛級
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.GetMenuListPda(Admin.NET.Application.QueryRoleInput)">
+            <summary>
+            绯荤粺鑿滃崟鍒楄〃锛堟爲琛級
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.CreateNewPids(System.Int64)">
+            <summary>
+            鍒涘缓Pids鏍煎紡
+            濡傛灉pid鏄�0椤剁骇鑺傜偣锛宲ids灏辨槸 [0];
+            濡傛灉pid涓嶆槸椤剁骇鑺傜偣锛宲ids灏辨槸 pid鑿滃崟鐨� pids + [pid] + ,
+            </summary>
+            <param name="pid"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.CheckMenuParam(Admin.NET.Application.MenuInput)">
+            <summary>
+            澧炲姞鍜岀紪杈戞椂妫�鏌ュ弬鏁�
+            </summary>
+            <param name="input"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.AddMenu(Admin.NET.Application.AddMenuInput)">
+            <summary>
+            澧炲姞绯荤粺鑿滃崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.DeleteMenu(Admin.NET.Application.DeleteMenuInput)">
+            <summary>
+            鍒犻櫎绯荤粺鑿滃崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.UpdateMenu(Admin.NET.Application.UpdateMenuInput)">
+            <summary>
+            鏇存柊绯荤粺鑿滃崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.GetMenu(Admin.NET.Application.QueryMenuInput)">
+            <summary>
+            鑾峰彇绯荤粺鑿滃崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.GetMenuTree(Admin.NET.Application.GetMenuTreeInput)">
+            <summary>
+            鑾峰彇绯荤粺鑿滃崟鏍戯紝鐢ㄤ簬鏂板銆佺紪杈戞椂閫夋嫨涓婄骇鑺傜偣
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.TreeForGrant(Admin.NET.Application.TreeForGrantInput)">
+            <summary>
+            鑾峰彇绯荤粺鑿滃崟鏍戯紝鐢ㄤ簬缁欒鑹叉巿鏉冩椂閫夋嫨
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.HasMenu(System.String)">
+            <summary>
+            鏍规嵁搴旂敤缂栫爜鍒ゆ柇璇ユ満鏋勪笅鏄惁鏈夌姸鎬佷负姝e父鐨勮彍鍗�
+            </summary>
+            <param name="appCode"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysMenuService.ChangeAppMenu(Admin.NET.Application.ChangeAppMenuInput)">
+            <summary>
+            鏍规嵁绯荤粺搴旂敤鍒囨崲鑿滃崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.ISendMessageService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISendMessageService.SendMessageToUser(System.String,System.String,Admin.NET.Core.MessageType,System.Int64)">
+            <summary>
+            鍙戦�佹秷鎭粰鏌愪釜浜�
+            </summary>
+            <param name="title">鍙戦�佹爣棰�</param>
+            <param name="message">鍙戦�佸唴瀹�</param>
+            <param name="userId">鎺ユ敹浜�</param>
+            <param name="type">娑堟伅绫诲瀷</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISendMessageService.SendMessageToUsers(System.String,System.String,Admin.NET.Core.MessageType,System.Collections.Generic.List{System.Int64})">
+            <summary>
+            鍙戦�佹秷鎭粰鏌愪簺浜�
+            </summary>
+            <param name="title">鍙戦�佹爣棰�</param>
+            <param name="message">鍙戦�佸唴瀹�</param>
+            <param name="userId">鎺ユ敹浜哄垪琛�</param>
+            <param name="type">娑堟伅绫诲瀷</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISendMessageService.SendMessageToAllUser(System.String,System.String,Admin.NET.Core.MessageType)">
+            <summary>
+            鍙戦�佹秷鎭粰鎵�鏈変汉
+            </summary>
+            <param name="title">鍙戦�佹爣棰�</param>
+            <param name="message">鍙戦�佸唴瀹�</param>
+            <param name="type">娑堟伅绫诲瀷</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISendMessageService.SendMessageToOtherUser(System.String,System.String,Admin.NET.Core.MessageType,System.Int64)">
+            <summary>
+            鍙戦�佹秷鎭粰闄や簡鍙戦�佷汉鐨勫叾浠栦汉
+            </summary>
+            <param name="title">鍙戦�佹爣棰�</param>
+            <param name="message">鍙戦�佸唴瀹�</param>
+            <param name="userId">鍙戦�佷汉</param>
+            <param name="type">娑堟伅绫诲瀷</param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SendMessageService">
+            <summary>
+            娑堟伅鍙戦�佹湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SendMessageService.#ctor(Admin.NET.Application.ISysCacheService,Microsoft.AspNetCore.SignalR.IHubContext{Admin.NET.Application.ChatHub,Admin.NET.Application.IChatClient})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysCacheService"></param>
+            <param name="chatHubContext"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SendMessageService.SendMessageToAllUser(System.String,System.String,Admin.NET.Core.MessageType)">
+            <summary>
+            鍙戦�佹秷鎭粰鎵�鏈変汉
+            </summary>
+            <param name="title">鍙戦�佹爣棰�</param>
+            <param name="message">鍙戦�佸唴瀹�</param>
+            <param name="type">娑堟伅绫诲瀷</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SendMessageService.SendMessageToOtherUser(System.String,System.String,Admin.NET.Core.MessageType,System.Int64)">
+            <summary>
+            鍙戦�佹秷鎭粰闄や簡鍙戦�佷汉鐨勫叾浠栦汉
+            </summary>
+            <param name="title">鍙戦�佹爣棰�</param>
+            <param name="message">鍙戦�佸唴瀹�</param>
+            <param name="userId">鍙戦�佷汉</param>
+            <param name="type">娑堟伅绫诲瀷</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SendMessageService.SendMessageToUser(System.String,System.String,Admin.NET.Core.MessageType,System.Int64)">
+            <summary>
+            鍙戦�佹秷鎭粰鏌愪釜浜�
+            </summary>
+            <param name="title">鍙戦�佹爣棰�</param>
+            <param name="message">鍙戦�佸唴瀹�</param>
+            <param name="userId">鎺ユ敹浜�</param>
+            <param name="type">娑堟伅绫诲瀷</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SendMessageService.SendMessageToUsers(System.String,System.String,Admin.NET.Core.MessageType,System.Collections.Generic.List{System.Int64})">
+            <summary>
+            鍙戦�佹秷鎭粰鏌愪簺浜�
+            </summary>
+            <param name="title">鍙戦�佹爣棰�</param>
+            <param name="message">鍙戦�佸唴瀹�</param>
+            <param name="userId">鎺ユ敹浜哄垪琛�</param>
+            <param name="type">娑堟伅绫诲瀷</param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.IMachineService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.IMachineService.GetMachineBaseInfo">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IMachineService.GetMachineNetWorkInfo">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.IMachineService.GetMachineUseInfo">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.MachineService">
+            <summary>
+            鏈嶅姟鍣ㄤ俊鎭湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.MachineService.#ctor">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.MachineService.GetMachineUseInfo">
+            <summary>
+            鑾峰彇鏈嶅姟鍣ㄨ祫婧愪俊鎭�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MachineService.GetMachineBaseInfo">
+            <summary>
+            鑾峰彇鏈嶅姟鍣ㄥ熀鏈弬鏁�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MachineService.GetMachineNetWorkInfo">
+            <summary>
+            鍔ㄦ�佽幏鍙栫綉缁滀俊鎭�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.NoticeBase">
+            <summary>
+            閫氱煡鍏憡鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeBase.Title">
+            <summary>
+            鏍囬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeBase.Content">
+            <summary>
+            鍐呭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeBase.Type">
+            <summary>
+            绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeBase.PublicUserId">
+            <summary>
+            鍙戝竷浜篒d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeBase.PublicUserName">
+            <summary>
+            鍙戝竷浜哄鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeBase.PublicOrgId">
+            <summary>
+            鍙戝竷鏈烘瀯Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeBase.PublicOrgName">
+            <summary>
+            鍙戝竷鏈烘瀯鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeBase.PublicTime">
+            <summary>
+            鍙戝竷鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeBase.CancelTime">
+            <summary>
+            鎾ゅ洖鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeBase.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.NoticeDetailOutput">
+            <summary>
+            绯荤粺閫氱煡鍏憡璇︽儏鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeDetailOutput.NoticeUserIdList">
+            <summary>
+            閫氱煡鍒扮殑鐢ㄦ埛Id闆嗗悎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeDetailOutput.NoticeUserReadInfoList">
+            <summary>
+            閫氱煡鍒扮殑鐢ㄦ埛闃呰淇℃伅闆嗗悎
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.NoticeUserRead">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeUserRead.UserId">
+            <summary>
+            鐢ㄦ埛Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeUserRead.UserName">
+            <summary>
+            鐢ㄦ埛鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeUserRead.ReadStatus">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0鏈 1宸茶锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeUserRead.ReadTime">
+            <summary>
+            闃呰鏃堕棿
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.NoticeInput">
+            <summary>
+            閫氱煡鍏憡鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeInput.Title">
+            <summary>
+            鏍囬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeInput.Content">
+            <summary>
+            鍐呭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeInput.Type">
+            <summary>
+            绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeInput.NoticeUserIdList">
+            <summary>
+            閫氱煡鍒扮殑浜�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.NoticePageInput">
+            <summary>
+            閫氱煡鍏憡鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticePageInput.Type">
+            <summary>
+            绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddNoticeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddNoticeInput.Title">
+            <summary>
+            鏍囬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddNoticeInput.Content">
+            <summary>
+            鍐呭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddNoticeInput.Type">
+            <summary>
+            绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddNoticeInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddNoticeInput.NoticeUserIdList">
+            <summary>
+            閫氱煡鍒扮殑浜�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteNoticeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateNoticeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateNoticeInput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateNoticeInput.Title">
+            <summary>
+            鏍囬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateNoticeInput.Content">
+            <summary>
+            鍐呭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateNoticeInput.Type">
+            <summary>
+            绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateNoticeInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateNoticeInput.NoticeUserIdList">
+            <summary>
+            閫氱煡鍒扮殑浜�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryNoticeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ChangeStatusNoticeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangeStatusNoticeInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.NoticeReceiveOutput">
+            <summary>
+            閫氱煡鍏憡鎺ユ敹鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeReceiveOutput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeReceiveOutput.ReadStatus">
+            <summary>
+            闃呰鐘舵�侊紙瀛楀吀 0鏈 1宸茶锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.NoticeReceiveOutput.ReadTime">
+            <summary>
+            闃呰鏃堕棿
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.Notice.ISysNoticeService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.ISysNoticeService.AddNotice(Admin.NET.Application.AddNoticeInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.ISysNoticeService.ChangeStatus(Admin.NET.Application.ChangeStatusNoticeInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.ISysNoticeService.DeleteNotice(Admin.NET.Application.DeleteNoticeInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.ISysNoticeService.GetNotice(Admin.NET.Application.QueryNoticeInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.ISysNoticeService.QueryNoticePageList(Admin.NET.Application.NoticePageInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.ISysNoticeService.ReceivedNoticePageList(Admin.NET.Application.NoticePageInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.ISysNoticeService.UpdateNotice(Admin.NET.Application.UpdateNoticeInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.ISysNoticeService.UnReadNoticeList(Admin.NET.Application.NoticeInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.Notice.ISysNoticeUserService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.ISysNoticeUserService.Add(System.Int64,System.Collections.Generic.List{System.Int64},Admin.NET.Core.NoticeUserStatus)">
+            <summary>
+            
+            </summary>
+            <param name="noticeId"></param>
+            <param name="noticeUserIdList"></param>
+            <param name="noticeUserStatus"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.ISysNoticeUserService.GetNoticeUserListByNoticeId(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="noticeId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.ISysNoticeUserService.Read(System.Int64,System.Int64,Admin.NET.Core.NoticeUserStatus)">
+            <summary>
+            
+            </summary>
+            <param name="noticeId"></param>
+            <param name="userId"></param>
+            <param name="status"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.ISysNoticeUserService.Update(System.Int64,System.Collections.Generic.List{System.Int64},Admin.NET.Core.NoticeUserStatus)">
+            <summary>
+            
+            </summary>
+            <param name="noticeId"></param>
+            <param name="noticeUserIdList"></param>
+            <param name="noticeUserStatus"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.Notice.SysNoticeService">
+            <summary>
+            閫氱煡鍏憡鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysNotice},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysNoticeUser},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysEmp},Admin.NET.Application.Notice.ISysNoticeUserService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysNoticeRep"></param>
+            <param name="sysNoticeUserRep"></param>
+            <param name="sysEmpRep"></param>
+            <param name="sysNoticeUserService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeService.QueryNoticePageList(Admin.NET.Application.NoticePageInput)">
+            <summary>
+            鍒嗛〉鏌ヨ閫氱煡鍏憡
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeService.AddNotice(Admin.NET.Application.AddNoticeInput)">
+            <summary>
+            澧炲姞閫氱煡鍏憡
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeService.DeleteNotice(Admin.NET.Application.DeleteNoticeInput)">
+            <summary>
+            鍒犻櫎閫氱煡鍏憡
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeService.UpdateNotice(Admin.NET.Application.UpdateNoticeInput)">
+            <summary>
+            鏇存柊閫氱煡鍏憡
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeService.GetNotice(Admin.NET.Application.QueryNoticeInput)">
+            <summary>
+            鑾峰彇閫氱煡鍏憡璇︽儏
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeService.ChangeStatus(Admin.NET.Application.ChangeStatusNoticeInput)">
+            <summary>
+            淇敼閫氱煡鍏憡鐘舵��
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeService.ReceivedNoticePageList(Admin.NET.Application.NoticePageInput)">
+            <summary>
+            鑾峰彇鎺ユ敹鐨勯�氱煡鍏憡
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeService.UpdatePublicInfo(Admin.NET.Core.SysNotice)">
+            <summary>
+            鏇存柊鍙戝竷淇℃伅
+            </summary>
+            <param name="notice"></param>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeService.UnReadNoticeList(Admin.NET.Application.NoticeInput)">
+            <summary>
+            鏈鐞嗘秷鎭�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.Notice.SysNoticeUserService">
+            <summary>
+            閫氱煡鍏憡鐢ㄦ埛
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeUserService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysNoticeUser})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysNoticeUserRep"></param>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeUserService.Add(System.Int64,System.Collections.Generic.List{System.Int64},Admin.NET.Core.NoticeUserStatus)">
+            <summary>
+            澧炲姞
+            </summary>
+            <param name="noticeId"></param>
+            <param name="noticeUserIdList"></param>
+            <param name="noticeUserStatus"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeUserService.Update(System.Int64,System.Collections.Generic.List{System.Int64},Admin.NET.Core.NoticeUserStatus)">
+            <summary>
+            鏇存柊
+            </summary>
+            <param name="noticeId"></param>
+            <param name="noticeUserIdList"></param>
+            <param name="noticeUserStatus"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeUserService.GetNoticeUserListByNoticeId(System.Int64)">
+            <summary>
+            鑾峰彇閫氱煡鍏憡鐢ㄦ埛鍒楄〃
+            </summary>
+            <param name="noticeId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.Notice.SysNoticeUserService.Read(System.Int64,System.Int64,Admin.NET.Core.NoticeUserStatus)">
+            <summary>
+            璁剧疆閫氱煡鍏憡璇诲彇鐘舵��
+            </summary>
+            <param name="noticeId"></param>
+            <param name="userId"></param>
+            <param name="status"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.OnlineUserOutput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OnlineUserOutput.ConnectionId">
+            <summary>
+            杩炴帴Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OnlineUserOutput.UserId">
+            <summary>
+            鐢ㄦ埛Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OnlineUserOutput.Account">
+            <summary>
+            璐﹀彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OnlineUserOutput.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OnlineUserOutput.LastTime">
+            <summary>
+            鏈�鍚庤繛鎺ユ椂闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OnlineUserOutput.LastLoginIp">
+            <summary>
+            鏈�鍚庣櫥褰旾P
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OnlineUserOutput.LastLoginBrowser">
+            <summary>
+            鏈�鍚庣櫥褰曟墍鐢ㄦ祻瑙堝櫒
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OnlineUserOutput.LastLoginOs">
+            <summary>
+            鏈�鍚庣櫥褰曟墍鐢ㄧ郴缁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OnlineUserOutput.TenantName">
+            <summary>
+            绉熸埛鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ISysOnlineUserService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysOnlineUserService.QueryOnlineUserPageList(Admin.NET.Core.PageInputBase)">
+            <summary>
+            鍒嗛〉鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysOnlineUserService.List">
+            <summary>
+            鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysOnlineUserService.ForceExist(Admin.NET.Core.OnlineUser)">
+            <summary>
+            寮哄埗涓嬬嚎
+            </summary>
+            <param name="onlineUser">鍦ㄧ嚎鐢ㄦ埛淇℃伅</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysOnlineUserService.SingleLoginForceExist(Admin.NET.Core.OnlineUser)">
+            <summary>
+            鍗曠敤鎴风櫥褰曞己鍒朵笅绾�
+            </summary>
+            <param name="user"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysOnlineUserService">
+            <summary>
+            鍦ㄧ嚎鐢ㄦ埛鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysOnlineUserService.#ctor(Admin.NET.Application.ISysCacheService,Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysUser},Microsoft.AspNetCore.SignalR.IHubContext{Admin.NET.Application.ChatHub,Admin.NET.Application.IChatClient})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysCacheService"></param>
+            <param name="sysUerRep"></param>
+            <param name="chatHubContext"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysOnlineUserService.QueryOnlineUserPageList(Admin.NET.Core.PageInputBase)">
+            <summary>
+            鍒嗛〉鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOnlineUserService.List">
+            <summary>
+            鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOnlineUserService.ForceExist(Admin.NET.Core.OnlineUser)">
+            <summary>
+            寮哄埗涓嬬嚎
+            </summary>
+            <param name="user"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOnlineUserService.SingleLoginForceExist(Admin.NET.Core.OnlineUser)">
+            <summary>
+            鍗曠敤鎴风櫥褰曞己鍒朵笅绾�
+            </summary>
+            <param name="user"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.OrgListInput">
+            <summary>
+            缁勭粐鏈烘瀯鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgListInput.Pid">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.OrgAddInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgAddInput.OrgType">
+            <summary>
+            鏈烘瀯绫诲瀷-鍝佺墝_1銆佹�诲簵(鍔犵洘/鐩磋惀)_2銆佺洿钀ュ簵_3銆佸姞鐩熷簵_4
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgAddInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgAddInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgAddInput.Pid">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgAddInput.Pids">
+            <summary>
+            鐖禝ds
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgAddInput.Tel">
+            <summary>
+            鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgAddInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgAddInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgAddInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteOrgInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DeleteOrgInput.Id">
+            <summary>
+            鏈烘瀯Id
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateOrgInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateOrgInput.OrgType">
+            <summary>
+            鏈烘瀯绫诲瀷-鍝佺墝_1銆佹�诲簵(鍔犵洘/鐩磋惀)_2銆佺洿钀ュ簵_3銆佸姞鐩熷簵_4
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateOrgInput.Id">
+            <summary>
+            鏈烘瀯Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateOrgInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateOrgInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateOrgInput.Pid">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateOrgInput.Pids">
+            <summary>
+            鐖禝ds
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateOrgInput.Tel">
+            <summary>
+            鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateOrgInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateOrgInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateOrgInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryOrgInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.QueryOrgInput.Id">
+            <summary>
+            鏈烘瀯Id
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.OrgPageInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgPageInput.OrgType">
+            <summary>
+            鏈烘瀯绫诲瀷-鍝佺墝_1銆佹�诲簵(鍔犵洘/鐩磋惀)_2銆佺洿钀ュ簵_3銆佸姞鐩熷簵_4
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgPageInput.Id">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgPageInput.Pid">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgPageInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.OrgOutput">
+            <summary>
+            缁勭粐鏈烘瀯鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgOutput.OrgType">
+            <summary>
+            鏈烘瀯绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgOutput.Id">
+            <summary>
+            鏈烘瀯Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgOutput.Pid">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgOutput.Pids">
+            <summary>
+            鐖禝ds
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgOutput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgOutput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgOutput.Tel">
+            <summary>
+            鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgOutput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgOutput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgOutput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.OrgTreeNode">
+            <summary>
+            缁勭粐鏈烘瀯鏍�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgTreeNode.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgTreeNode.ParentId">
+            <summary>
+            鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgTreeNode.Title">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgTreeNode.Value">
+            <summary>
+            鍊�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgTreeNode.Weight">
+            <summary>
+            鎺掑簭锛岃秺灏忎紭鍏堢骇瓒婇珮
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgTreeNode.Children">
+            <summary>
+            瀛愯妭鐐�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OrgTreeNode.Pid">
+            <summary>
+            涓婁竴绾d
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.OrgTreeNode.GetId">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.OrgTreeNode.GetPid">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.OrgTreeNode.SetChildren(System.Collections.IList)">
+            <summary>
+            
+            </summary>
+            <param name="children"></param>
+        </member>
+        <member name="T:Admin.NET.Application.ISysOrgService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysOrgService.AddOrg(Admin.NET.Application.OrgAddInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysOrgService.DeleteOrg(Admin.NET.Application.DeleteOrgInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysOrgService.GetDataScopeListByDataScopeType(System.Int32,System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="dataScopeType"></param>
+            <param name="orgId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysOrgService.GetOrg(Admin.NET.Application.QueryOrgInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysOrgService.GetOrgList(Admin.NET.Application.OrgListInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysOrgService.GetOrgTree">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysOrgService.QueryOrgPageList(Admin.NET.Application.OrgPageInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysOrgService.UpdateOrg(Admin.NET.Application.UpdateOrgInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysOrgService.GetAllDataScopeIdList">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysOrgService.GetUserDataScopeIdList">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysOrgService">
+            <summary>
+            缁勭粐鏈烘瀯鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysOrgService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysOrg},Admin.NET.Application.ISysCacheService,Admin.NET.Application.ISysEmpService,Admin.NET.Application.ISysEmpExtOrgPosService,Admin.NET.Application.ISysRoleDataScopeService,Admin.NET.Application.ISysUserDataScopeService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysOrgRep"></param>
+            <param name="sysCacheService"></param>
+            <param name="sysEmpService"></param>
+            <param name="sysEmpExtOrgPosService"></param>
+            <param name="sysRoleDataScopeService"></param>
+            <param name="sysUserDataScopeService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysOrgService.QueryOrgPageList(Admin.NET.Application.OrgPageInput)">
+            <summary>
+            鍒嗛〉鏌ヨ缁勭粐鏈烘瀯
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOrgService.GetDataScopeList(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            (闈炵鐞嗗憳)鑾峰彇褰撳墠鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d锛�
+            </summary>
+            <param name="dataScopes"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOrgService.GetOrgList(Admin.NET.Application.OrgListInput)">
+            <summary>
+            鑾峰彇缁勭粐鏈烘瀯鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOrgService.AddOrg(Admin.NET.Application.OrgAddInput)">
+            <summary>
+            澧炲姞缁勭粐鏈烘瀯
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOrgService.FillPids(Admin.NET.Core.SysOrg)">
+            <summary>
+            濉厖鐖禝ds瀛楁
+            </summary>
+            <param name="sysOrg"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOrgService.DeleteOrg(Admin.NET.Application.DeleteOrgInput)">
+            <summary>
+            鍒犻櫎缁勭粐鏈烘瀯
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOrgService.UpdateOrg(Admin.NET.Application.UpdateOrgInput)">
+            <summary>
+            鏇存柊缁勭粐鏈烘瀯
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOrgService.GetOrg(Admin.NET.Application.QueryOrgInput)">
+            <summary>
+            鑾峰彇缁勭粐鏈烘瀯淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOrgService.GetChildIdListWithSelfById(System.Int64)">
+            <summary>
+            鏍规嵁鑺傜偣Id鑾峰彇鎵�鏈夊瓙鑺傜偣Id闆嗗悎锛屽寘鍚嚜宸�
+            </summary>
+            <param name="id"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOrgService.GetOrgTree">
+            <summary>
+            鑾峰彇缁勭粐鏈烘瀯鏍�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOrgService.GetDataScopeListByDataScopeType(System.Int32,System.Int64)">
+            <summary>
+            鏍规嵁鏁版嵁鑼冨洿绫诲瀷鑾峰彇褰撳墠鐢ㄦ埛鐨勬暟鎹寖鍥达紙鏈烘瀯Id锛夐泦鍚�
+            </summary>
+            <param name="dataScopeType"></param>
+            <param name="orgId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOrgService.GetAllDataScopeIdList">
+            <summary>
+            鑾峰彇鎵�鏈夌殑鏈烘瀯缁勭粐Id闆嗗悎
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysOrgService.GetUserDataScopeIdList">
+            <summary>
+            鑾峰彇鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.PosInput">
+            <summary>
+            鑱屼綅鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PosInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PosInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PosInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PosInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PosInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PosInput.PageNo">
+            <summary>
+            褰撳墠椤电爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PosInput.PageSize">
+            <summary>
+            椤电爜瀹归噺
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddPosInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddPosInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddPosInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddPosInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddPosInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddPosInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeletePosInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdatePosInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdatePosInput.Id">
+            <summary>
+            鑱屼綅Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdatePosInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdatePosInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdatePosInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdatePosInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdatePosInput.Status">
+            <summary>
+            鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryPosInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ISysPosService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysPosService.AddPos(Admin.NET.Application.AddPosInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysPosService.DeletePos(Admin.NET.Application.DeletePosInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysPosService.GetPos(Admin.NET.Application.QueryPosInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysPosService.GetPosList(Admin.NET.Application.PosInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysPosService.QueryPosPageList(Admin.NET.Application.PosInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysPosService.UpdatePos(Admin.NET.Application.UpdatePosInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysPosService">
+            <summary>
+            鑱屼綅鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysPosService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysPos},Admin.NET.Application.ISysEmpPosService,Admin.NET.Application.ISysEmpExtOrgPosService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysPosRep"></param>
+            <param name="sysEmpPosService"></param>
+            <param name="sysEmpExtOrgPosService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysPosService.QueryPosPageList(Admin.NET.Application.PosInput)">
+            <summary>
+            鍒嗛〉鑾峰彇鑱屼綅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysPosService.GetPosList(Admin.NET.Application.PosInput)">
+            <summary>
+            鑾峰彇鑱屼綅鍒楄〃
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysPosService.AddPos(Admin.NET.Application.AddPosInput)">
+            <summary>
+            澧炲姞鑱屼綅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysPosService.DeletePos(Admin.NET.Application.DeletePosInput)">
+            <summary>
+            鍒犻櫎鑱屼綅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysPosService.UpdatePos(Admin.NET.Application.UpdatePosInput)">
+            <summary>
+            鏇存柊鑱屼綅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysPosService.GetPos(Admin.NET.Application.QueryPosInput)">
+            <summary>
+            鑾峰彇鑱屼綅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.RoleInput">
+            <summary>
+            瑙掕壊鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RoleInput.RoleType">
+            <summary>
+            瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RoleInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RoleInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.RolePageInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RolePageInput.RoleType">
+            <summary>
+            瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RolePageInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RolePageInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddRoleInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddRoleInput.RoleType">
+            <summary>
+            瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddRoleInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddRoleInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddRoleInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddRoleInput.DataScopeType">
+            <summary>
+            鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddRoleInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteRoleInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateRoleInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateRoleInput.RoleType">
+            <summary>
+            瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateRoleInput.Id">
+            <summary>
+            瑙掕壊Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateRoleInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateRoleInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateRoleInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateRoleInput.DataScopeType">
+            <summary>
+            鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateRoleInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryRoleInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GrantRoleMenuInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleMenuInput.Id">
+            <summary>
+            瑙掕壊Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleMenuInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleMenuInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleMenuInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleMenuInput.DataScopeType">
+            <summary>
+            鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleMenuInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleMenuInput.GrantMenuIdList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleMenuInput.GrantRoleIdList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleMenuInput.GrantOrgIdList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GrantRoleDataInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleDataInput.Id">
+            <summary>
+            瑙掕壊Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleDataInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleDataInput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleDataInput.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleDataInput.DataScopeType">
+            <summary>
+            鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleDataInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleDataInput.GrantMenuIdList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleDataInput.GrantRoleIdList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GrantRoleDataInput.GrantOrgIdList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.RoleOutput">
+            <summary>
+            鐧诲綍鐢ㄦ埛瑙掕壊鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RoleOutput.RoleType">
+            <summary>
+            瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RoleOutput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RoleOutput.Code">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.RoleOutput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ISysRoleDataScopeService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleDataScopeService.DeleteRoleDataScopeListByOrgIdList(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            
+            </summary>
+            <param name="orgIdList"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleDataScopeService.DeleteRoleDataScopeListByRoleId(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="roleId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleDataScopeService.GetRoleDataScopeIdList(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            
+            </summary>
+            <param name="roleIdList"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleDataScopeService.GrantDataScope(Admin.NET.Application.GrantRoleDataInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.ISysRoleMenuService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleMenuService.DeleteRoleMenuListByMenuIdList(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            
+            </summary>
+            <param name="menuIdList"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleMenuService.DeleteRoleMenuListByRoleId(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="roleId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleMenuService.GetRoleMenuIdList(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            
+            </summary>
+            <param name="roleIdList"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleMenuService.GrantMenu(Admin.NET.Application.GrantRoleMenuInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.ISysRoleService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleService.AddRole(Admin.NET.Application.AddRoleInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleService.DeleteRole(Admin.NET.Application.DeleteRoleInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleService.GetNameByRoleId(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="roleId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleService.GetRoleDropDown">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleService.GetRoleInfo(Admin.NET.Application.QueryRoleInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleService.GetRoleList(Admin.NET.Application.RoleInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleService.GetUserDataScopeIdList(System.Collections.Generic.List{System.Int64},System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="roleIdList"></param>
+            <param name="orgId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleService.GetUserRoleList(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleService.GrantData(Admin.NET.Application.GrantRoleDataInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleService.GrantMenu(Admin.NET.Application.GrantRoleMenuInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleService.OwnData(Admin.NET.Application.QueryRoleInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleService.OwnMenu(Admin.NET.Application.QueryRoleInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleService.QueryRolePageList(Admin.NET.Application.RolePageInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysRoleService.UpdateRole(Admin.NET.Application.UpdateRoleInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysRoleDataScopeService">
+            <summary>
+            瑙掕壊鏁版嵁鑼冨洿鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleDataScopeService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysRoleDataScope})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysRoleDataScopeRep"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleDataScopeService.GrantDataScope(Admin.NET.Application.GrantRoleDataInput)">
+            <summary>
+            鎺堟潈瑙掕壊鏁版嵁鑼冨洿
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleDataScopeService.GetRoleDataScopeIdList(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            鏍规嵁瑙掕壊Id闆嗗悎鑾峰彇瑙掕壊鏁版嵁鑼冨洿闆嗗悎
+            </summary>
+            <param name="roleIdList"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleDataScopeService.DeleteRoleDataScopeListByOrgIdList(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            鏍规嵁鏈烘瀯Id闆嗗悎鍒犻櫎瀵瑰簲鐨勮鑹�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+            </summary>
+            <param name="orgIdList"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleDataScopeService.DeleteRoleDataScopeListByRoleId(System.Int64)">
+            <summary>
+            鏍规嵁瑙掕壊Id鍒犻櫎瀵瑰簲鐨勮鑹�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+            </summary>
+            <param name="roleId"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysRoleMenuService">
+            <summary>
+            瑙掕壊鑿滃崟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleMenuService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysRoleMenu},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.Entity.WmsBase.WmsRolePdaMenu},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysMenu},Admin.NET.Application.ISysCacheService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysRoleMenuRep"></param>
+            <param name="sysMenuRep"></param>
+            <param name="sysCacheService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleMenuService.GetRoleMenuIdList(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            鑾峰彇瑙掕壊鐨勮彍鍗旾d闆嗗悎
+            </summary>
+            <param name="roleIdList"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleMenuService.GrantMenu(Admin.NET.Application.GrantRoleMenuInput)">
+            <summary>
+            鎺堟潈瑙掕壊鑿滃崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleMenuService.DeleteRoleMenuListByMenuIdList(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            鏍规嵁鑿滃崟Id闆嗗悎鍒犻櫎瀵瑰簲鐨勮鑹�-鑿滃崟琛ㄤ俊鎭�
+            </summary>
+            <param name="menuIdList"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleMenuService.DeleteRoleMenuListByRoleId(System.Int64)">
+            <summary>
+            鏍规嵁瑙掕壊Id鍒犻櫎瀵瑰簲鐨勮鑹�-鑿滃崟琛ㄥ叧鑱斾俊鎭�
+            </summary>
+            <param name="roleId"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysRoleService">
+            <summary>
+            瑙掕壊鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysRole},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysUserRole},Admin.NET.Application.ISysRoleDataScopeService,Admin.NET.Application.ISysOrgService,Admin.NET.Application.ISysRoleMenuService,Admin.NET.Application.ISysCacheService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysRoleRep"></param>
+            <param name="sysUserRoleRep"></param>
+            <param name="sysRoleDataScopeService"></param>
+            <param name="sysOrgService"></param>
+            <param name="sysRoleMenuService"></param>
+            <param name="sysCacheService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.GetUserRoleList(System.Int64)">
+            <summary>
+            鑾峰彇鐢ㄦ埛瑙掕壊鐩稿叧淇℃伅锛堢櫥褰曪級
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.QueryRolePageList(Admin.NET.Application.RolePageInput)">
+            <summary>
+            鍒嗛〉鑾峰彇瑙掕壊鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.GetRoleList(Admin.NET.Application.RoleInput)">
+            <summary>
+            鑾峰彇瑙掕壊鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.GetRoleDropDown">
+            <summary>
+            瑙掕壊涓嬫媺锛堢敤浜庢巿鏉冭鑹叉椂閫夋嫨锛�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.AddRole(Admin.NET.Application.AddRoleInput)">
+            <summary>
+            澧炲姞瑙掕壊
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.DeleteRole(Admin.NET.Application.DeleteRoleInput)">
+            <summary>
+            鍒犻櫎瑙掕壊
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.UpdateRole(Admin.NET.Application.UpdateRoleInput)">
+            <summary>
+            鏇存柊瑙掕壊
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.GetRoleInfo(Admin.NET.Application.QueryRoleInput)">
+            <summary>
+            鑾峰彇瑙掕壊
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.GrantMenu(Admin.NET.Application.GrantRoleMenuInput)">
+            <summary>
+            鎺堟潈瑙掕壊鑿滃崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.GrantPdaMenu(Admin.NET.Application.GrantRoleMenuInput)">
+            <summary>
+            鎺堟潈瑙掕壊PDA鑿滃崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.GrantData(Admin.NET.Application.GrantRoleDataInput)">
+            <summary>
+            鎺堟潈瑙掕壊鏁版嵁鑼冨洿
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.GetUserDataScopeIdList(System.Collections.Generic.List{System.Int64},System.Int64)">
+            <summary>
+            鏍规嵁瑙掕壊Id闆嗗悎鑾峰彇鏁版嵁鑼冨洿Id闆嗗悎
+            </summary>
+            <param name="roleIdList"></param>
+            <param name="orgId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.GetNameByRoleId(System.Int64)">
+            <summary>
+            鏍规嵁瑙掕壊Id鑾峰彇瑙掕壊鍚嶇О
+            </summary>
+            <param name="roleId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.OwnMenu(Admin.NET.Application.QueryRoleInput)">
+            <summary>
+            鑾峰彇瑙掕壊鎷ユ湁鑿滃崟Id闆嗗悎
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysRoleService.OwnData(Admin.NET.Application.QueryRoleInput)">
+            <summary>
+            鑾峰彇瑙掕壊鎷ユ湁鏁版嵁Id闆嗗悎
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.JobPageInput">
+            <summary>
+            浠诲姟璋冨害鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobPageInput.JobName">
+            <summary>
+            浠诲姟鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobPageInput.DoOnce">
+            <summary>
+            鍙墽琛屼竴娆�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobPageInput.StartNow">
+            <summary>
+            绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobPageInput.ExecuteType">
+            <summary>
+            鎵ц绫诲瀷(骞惰銆佸垪闃�)
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobPageInput.Interval">
+            <summary>
+            鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+            </summary>
+            <example>5</example>
+        </member>
+        <member name="P:Admin.NET.Application.JobPageInput.Cron">
+            <summary>
+            Cron琛ㄨ揪寮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobPageInput.TimerType">
+            <summary>
+            瀹氭椂鍣ㄧ被鍨�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobPageInput.RequestUrl">
+            <summary>
+            璇锋眰url
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobPageInput.RequestParameters">
+            <summary>
+            璇锋眰鍙傛暟锛圥ost锛孭ut璇锋眰鐢級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobPageInput.Headers">
+            <summary>
+            Headers(鍙互鍖呭惈濡傦細Authorization鎺堟潈璁よ瘉)
+            鏍煎紡锛歿"Authorization":"userpassword.."}
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobPageInput.RequestType">
+            <summary>
+            璇锋眰绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobPageInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddJobInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddJobInput.JobName">
+            <summary>
+            浠诲姟鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddJobInput.DoOnce">
+            <summary>
+            鍙墽琛屼竴娆�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddJobInput.StartNow">
+            <summary>
+            绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddJobInput.ExecuteType">
+            <summary>
+            鎵ц绫诲瀷(骞惰銆佸垪闃�)
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddJobInput.Interval">
+            <summary>
+            鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+            </summary>
+            <example>5</example>
+        </member>
+        <member name="P:Admin.NET.Application.AddJobInput.Cron">
+            <summary>
+            Cron琛ㄨ揪寮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddJobInput.TimerType">
+            <summary>
+            瀹氭椂鍣ㄧ被鍨�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddJobInput.RequestUrl">
+            <summary>
+            璇锋眰url
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddJobInput.RequestParameters">
+            <summary>
+            璇锋眰鍙傛暟锛圥ost锛孭ut璇锋眰鐢級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddJobInput.Headers">
+            <summary>
+            Headers(鍙互鍖呭惈濡傦細Authorization鎺堟潈璁よ瘉)
+            鏍煎紡锛歿"Authorization":"userpassword.."}
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddJobInput.RequestType">
+            <summary>
+            璇锋眰绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddJobInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.StopJobInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StopJobInput.JobName">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteJobInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateJobInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateJobInput.JobName">
+            <summary>
+            浠诲姟鍚嶇О
+            </summary>
+            <example>dilon</example>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateJobInput.DoOnce">
+            <summary>
+            鍙墽琛屼竴娆�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateJobInput.StartNow">
+            <summary>
+            绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateJobInput.ExecuteType">
+            <summary>
+            鎵ц绫诲瀷(骞惰銆佸垪闃�)
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateJobInput.Interval">
+            <summary>
+            鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+            </summary>
+            <example>5</example>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateJobInput.Cron">
+            <summary>
+            Cron琛ㄨ揪寮�
+            </summary>
+            <example></example>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateJobInput.TimerType">
+            <summary>
+            瀹氭椂鍣ㄧ被鍨�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateJobInput.RequestUrl">
+            <summary>
+            璇锋眰url
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateJobInput.RequestParameters">
+            <summary>
+            璇锋眰鍙傛暟锛圥ost锛孭ut璇锋眰鐢級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateJobInput.Headers">
+            <summary>
+            Headers(鍙互鍖呭惈濡傦細Authorization鎺堟潈璁よ瘉)
+            鏍煎紡锛歿"Authorization":"userpassword.."}
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateJobInput.RequestType">
+            <summary>
+            璇锋眰绫诲瀷
+            </summary>
+            <example>2</example>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateJobInput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryJobInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.JobOutput">
+            <summary>
+            浠诲姟淇℃伅---浠诲姟璇︽儏
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobOutput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobOutput.RunNumber">
+            <summary>
+            宸叉墽琛屾鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobOutput.TimerStatus">
+            <summary>
+            瀹氭椂鍣ㄧ姸鎬�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobOutput.Exception">
+            <summary>
+            寮傚父淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobOutput.JobName">
+            <summary>
+            浠诲姟鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobOutput.DoOnce">
+            <summary>
+            鍙墽琛屼竴娆�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobOutput.StartNow">
+            <summary>
+            绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobOutput.ExecuteType">
+            <summary>
+            鎵ц绫诲瀷(骞惰銆佸垪闃�)
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobOutput.Interval">
+            <summary>
+            鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobOutput.Cron">
+            <summary>
+            Cron琛ㄨ揪寮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobOutput.TimerType">
+            <summary>
+            瀹氭椂鍣ㄧ被鍨�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobOutput.RequestUrl">
+            <summary>
+            璇锋眰url
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.JobOutput.RequestType">
+            <summary>
+            璇锋眰绫诲瀷
+            </summary>
+            <example>2</example>
+        </member>
+        <member name="P:Admin.NET.Application.JobOutput.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TaskMethodInfo">
+            <summary>
+            浠诲姟鏂规硶淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskMethodInfo.MethodName">
+            <summary>
+            鏂规硶鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskMethodInfo.DeclaringType">
+            <summary>
+            鏂规硶鎵�灞炵被鐨凾ype瀵硅薄
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskMethodInfo.JobName">
+            <summary>
+            浠诲姟鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskMethodInfo.DoOnce">
+            <summary>
+            鍙墽琛屼竴娆�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskMethodInfo.StartNow">
+            <summary>
+            绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskMethodInfo.ExecuteType">
+            <summary>
+            鎵ц绫诲瀷(骞惰銆佸垪闃�)
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskMethodInfo.Interval">
+            <summary>
+            鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskMethodInfo.Cron">
+            <summary>
+            Cron琛ㄨ揪寮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskMethodInfo.TimerType">
+            <summary>
+            瀹氭椂鍣ㄧ被鍨�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskMethodInfo.RequestUrl">
+            <summary>
+            璇锋眰url
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskMethodInfo.RequestType">
+            <summary>
+            璇锋眰绫诲瀷
+            </summary>
+            <example>2</example>
+        </member>
+        <member name="P:Admin.NET.Application.TaskMethodInfo.Remark">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ISysTimerService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysTimerService.AddTimer(Admin.NET.Application.AddJobInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysTimerService.AddTimerJob(Admin.NET.Application.AddJobInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+        </member>
+        <member name="M:Admin.NET.Application.ISysTimerService.DeleteTimer(Admin.NET.Application.DeleteJobInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysTimerService.GetTimer(Admin.NET.Application.QueryJobInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysTimerService.GetTimerPageList(Admin.NET.Application.JobPageInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysTimerService.StartTimerJob(Admin.NET.Application.AddJobInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+        </member>
+        <member name="M:Admin.NET.Application.ISysTimerService.StopTimerJob(Admin.NET.Application.StopJobInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+        </member>
+        <member name="M:Admin.NET.Application.ISysTimerService.UpdateTimber(Admin.NET.Application.UpdateJobInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysTimerService.StartTimerJob">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.SysTimerService">
+            <summary>
+            浠诲姟璋冨害鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysTimerService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysTimer},Admin.NET.Application.ISysCacheService)">
+             <summary>
+            鏋勯�犲嚱鏁�
+             </summary>
+             <param name="sysTimerRep"></param>
+             <param name="cache"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysTimerService.GetTimerPageList(Admin.NET.Application.JobPageInput)">
+            <summary>
+            鍒嗛〉鑾峰彇浠诲姟鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysTimerService.GetLocalJobList">
+            <summary>
+            鑾峰彇鎵�鏈夋湰鍦颁换鍔�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysTimerService.AddTimer(Admin.NET.Application.AddJobInput)">
+            <summary>
+            澧炲姞浠诲姟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysTimerService.DeleteTimer(Admin.NET.Application.DeleteJobInput)">
+            <summary>
+            鍒犻櫎浠诲姟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysTimerService.UpdateTimber(Admin.NET.Application.UpdateJobInput)">
+            <summary>
+            淇敼浠诲姟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysTimerService.GetTimer(Admin.NET.Application.QueryJobInput)">
+            <summary>
+            鏌ョ湅浠诲姟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysTimerService.StopTimerJob(Admin.NET.Application.StopJobInput)">
+            <summary>
+            鍋滄浠诲姟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysTimerService.StartTimerJob(Admin.NET.Application.AddJobInput)">
+            <summary>
+            鍚姩浠诲姟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysTimerService.AddTimerJob(Admin.NET.Application.AddJobInput)">
+            <summary>
+            鏂板瀹氭椂浠诲姟
+            </summary>
+            <param name="input"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysTimerService.StartTimerJob">
+            <summary>
+            鍚姩鑷惎鍔ㄤ换鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysTimerService.GetTaskMethods">
+            <summary>
+            鑾峰彇鎵�鏈夋湰鍦颁换鍔�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.CurrentUserInfo">
+            <summary>
+            褰撳墠鐢ㄦ埛
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CurrentUserInfo.UserId">
+            <summary>
+            鐢ㄦ埛id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CurrentUserInfo.Account">
+            <summary>
+            璐﹀彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CurrentUserInfo.Name">
+            <summary>
+            鏄电О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CurrentUserInfo.IsSuperAdmin">
+            <summary>
+            鏄惁瓒呯骇绠$悊鍛�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AuthToken">
+            <summary>
+            AuthToken鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.AccessToken">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.ExpireIn">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.RefreshToken">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.Uid">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.OpenId">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.AccessCode">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.UnionId">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.Scope">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.TokenType">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.IdToken">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.MacAlgorithm">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.MacKey">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.Code">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.OauthToken">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.OauthTokenSecret">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.UserId">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.ScreenName">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthToken.OauthCallbackConfirmed">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AuthUserInput">
+            <summary>
+            OAuth鐢ㄦ埛鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthUserInput.Uuid">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthUserInput.Username">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthUserInput.Nickname">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthUserInput.Avatar">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthUserInput.Blog">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthUserInput.Company">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthUserInput.Location">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthUserInput.Email">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthUserInput.Eemark">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthUserInput.Gender">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthUserInput.Source">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthUserInput.Token">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AuthUserInput.RawUserInfo">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UserPageInput">
+            <summary>
+            鐢ㄦ埛鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.Account">
+            <summary>
+            璐﹀彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.Password">
+            <summary>
+            瀵嗙爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.NickName">
+            <summary>
+            鏄电О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.Avatar">
+            <summary>
+            澶村儚
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.Birthday">
+            <summary>
+            鐢熸棩
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.Sex">
+            <summary>
+            鎬у埆-鐢穇1銆佸コ_2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.Email">
+            <summary>
+            閭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.Phone">
+            <summary>
+            鎵嬫満
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.Tel">
+            <summary>
+            鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.Status">
+            <summary>
+            鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.SysEmpParam">
+            <summary>
+            鍛樺伐淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.SearchStatus">
+            <summary>
+            鎼滅储鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.GrantMenuIdList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.GrantRoleIdList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserPageInput.GrantOrgIdList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UserSelectorInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserSelectorInput.Name">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.CreateUserInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CreateUserInput.Account">
+            <summary>
+            璐﹀彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CreateUserInput.Password">
+            <summary>
+            瀵嗙爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CreateUserInput.NickName">
+            <summary>
+            鏄电О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CreateUserInput.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CreateUserInput.Avatar">
+            <summary>
+            澶村儚
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CreateUserInput.Birthday">
+            <summary>
+            鐢熸棩
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CreateUserInput.Sex">
+            <summary>
+            鎬у埆-鐢穇1銆佸コ_2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CreateUserInput.Email">
+            <summary>
+            閭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CreateUserInput.Phone">
+            <summary>
+            鎵嬫満
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CreateUserInput.Tel">
+            <summary>
+            鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CreateUserInput.Status">
+            <summary>
+            鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CreateUserInput.SysEmpParam">
+            <summary>
+            鍛樺伐淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddUserInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.Account">
+            <summary>
+            璐﹀彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.Password">
+            <summary>
+            瀵嗙爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.Confirm">
+            <summary>
+            纭瀵嗙爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.NickName">
+            <summary>
+            鏄电О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.Avatar">
+            <summary>
+            澶村儚
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.Birthday">
+            <summary>
+            鐢熸棩
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.Sex">
+            <summary>
+            鎬у埆-鐢穇1銆佸コ_2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.Email">
+            <summary>
+            閭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.Phone">
+            <summary>
+            鎵嬫満
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.Tel">
+            <summary>
+            鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.Status">
+            <summary>
+            鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.SysEmpParam">
+            <summary>
+            鍛樺伐淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddUserInput.ProductionlineId">
+            <summary>
+            鎵�灞炶溅闂翠骇绾�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.CheckUserDataInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CheckUserDataInput.SysEmpParam">
+            <summary>
+            鍛樺伐淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteUserInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DeleteUserInput.SysEmpParam">
+            <summary>
+            鍛樺伐淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateUserInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserInput.Account">
+            <summary>
+            璐﹀彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserInput.NickName">
+            <summary>
+            鏄电О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserInput.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserInput.Birthday">
+            <summary>
+            鐢熸棩
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserInput.Sex">
+            <summary>
+            鎬у埆-鐢穇1銆佸コ_2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserInput.Email">
+            <summary>
+            閭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserInput.Phone">
+            <summary>
+            鎵嬫満
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserInput.Tel">
+            <summary>
+            鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserInput.SysEmpParam">
+            <summary>
+            鍛樺伐淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserInput.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserInput.ProductionlineId">
+            <summary>
+            鎵�灞炶溅闂翠骇绾�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateUserBaseInfoInput">
+            <summary>
+            鏇存柊鐢ㄦ埛鍩烘湰淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserBaseInfoInput.NickName">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserBaseInfoInput.Phone">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserBaseInfoInput.Email">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserBaseInfoInput.Sex">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserBaseInfoInput.Birthday">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserBaseInfoInput.Tel">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateUserRoleDataInput">
+            <summary>
+            鏇存柊鐢ㄦ埛鎺堟潈鏁版嵁瑙掕壊鍜屾暟鎹寖鍥�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserRoleDataInput.SysEmpParam">
+            <summary>
+            鍛樺伐淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserRoleDataInput.GrantMenuIdList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserRoleDataInput.GrantRoleIdList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserRoleDataInput.GrantOrgIdList">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateUserStatusInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateUserStatusInput.Status">
+            <summary>
+            鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryUserInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ChangePasswordUserInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangePasswordUserInput.Password">
+            <summary>
+            瀵嗙爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ChangePasswordUserInput.NewPassword">
+            <summary>
+            鏂板瘑鐮�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UploadAvatarInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UploadAvatarInput.Avatar">
+            <summary>
+            澶村儚鏂囦欢璺緞鏍囪瘑
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UserOutput">
+            <summary>
+            鐢ㄦ埛鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserOutput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserOutput.Account">
+            <summary>
+            璐﹀彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserOutput.NickName">
+            <summary>
+            鏄电О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserOutput.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserOutput.Avatar">
+            <summary>
+            澶村儚
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserOutput.Birthday">
+            <summary>
+            鐢熸棩
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserOutput.Sex">
+            <summary>
+            鎬у埆-鐢穇1銆佸コ_2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserOutput.Email">
+            <summary>
+            閭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserOutput.Phone">
+            <summary>
+            鎵嬫満
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserOutput.Tel">
+            <summary>
+            鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserOutput.Status">
+            <summary>
+            鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserOutput.SysEmpInfo">
+            <summary>
+            鍛樺伐淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserOutput.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UserOutput.ProductionlineId">
+            <summary>
+            鎵�灞炶溅闂翠骇绾�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.LesWorkShopOutput">
+            <summary>
+            浜х嚎鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesWorkShopOutput.Id">
+            <summary>
+            浜х嚎Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesWorkShopOutput.LesWorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesWorkShopOutput.Name">
+            <summary>
+            浜х嚎鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesWorkShopOutput.Code">
+            <summary>
+            浜х嚎缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ISysUserDataScopeService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserDataScopeService.DeleteUserDataScopeListByOrgIdList(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            
+            </summary>
+            <param name="orgIdList"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserDataScopeService.DeleteUserDataScopeListByUserId(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserDataScopeService.GetUserDataScopeIdList(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserDataScopeService.GrantData(Admin.NET.Application.UpdateUserRoleDataInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.ISysUserRoleService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserRoleService.DeleteUserRoleListByRoleId(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="roleId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserRoleService.DeleteUserRoleListByUserId(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserRoleService.GetUserRoleDataScopeIdList(System.Int64,System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <param name="orgId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserRoleService.GetUserRoleIdList(System.Int64,System.Boolean)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <param name="checkRoleStatus"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserRoleService.GrantRole(Admin.NET.Application.UpdateUserRoleDataInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.ISysUserService">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.AddUser(Admin.NET.Application.AddUserInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.ChangeUserStatus(Admin.NET.Application.UpdateUserStatusInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.DeleteUser(Admin.NET.Application.DeleteUserInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.ExportUser">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.GetUser(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="id"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.GetUserById(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.GetUserDataScopeIdList">
+            <summary>
+            
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.GetUserDataScopeIdList(System.Int64)">
+            <summary>
+            
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.GetUserOwnData(Admin.NET.Application.QueryUserInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.GetUserOwnRole(Admin.NET.Application.QueryUserInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.GetUserSelector(Admin.NET.Application.UserSelectorInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.GrantUserData(Admin.NET.Application.UpdateUserRoleDataInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.GrantUserRole(Admin.NET.Application.UpdateUserRoleDataInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.GetSysUserList">
+            <summary>
+            鑾峰彇鐢ㄦ埛鍒楄〃
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.ImportUser(Microsoft.AspNetCore.Http.IFormFile)">
+            <summary>
+            
+            </summary>
+            <param name="file"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.QueryUserPageList(Admin.NET.Application.UserPageInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.ResetUserPwd(Admin.NET.Application.QueryUserInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.SaveAuthUserToUser(Admin.NET.Application.AuthUserInput,Admin.NET.Application.CreateUserInput)">
+            <summary>
+            
+            </summary>
+            <param name="authUser"></param>
+            <param name="sysUser"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.UpdateAvatar(Admin.NET.Application.UploadAvatarInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.UpdateUser(Admin.NET.Application.UpdateUserInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.UpdateUserInfo(Admin.NET.Application.UpdateUserBaseInfoInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.ISysUserService.UpdateUserPwd(Admin.NET.Application.ChangePasswordUserInput)">
+            <summary>
+            
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysUserDataScopeService">
+            <summary>
+            鐢ㄦ埛鏁版嵁鑼冨洿鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserDataScopeService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysUserDataScope})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysUserDataScopeRep"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserDataScopeService.GrantData(Admin.NET.Application.UpdateUserRoleDataInput)">
+            <summary>
+            鎺堟潈鐢ㄦ埛鏁版嵁
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserDataScopeService.GetUserDataScopeIdList(System.Int64)">
+            <summary>
+            鑾峰彇鐢ㄦ埛鐨勬暟鎹寖鍥碔d闆嗗悎
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserDataScopeService.DeleteUserDataScopeListByOrgIdList(System.Collections.Generic.List{System.Int64})">
+            <summary>
+            鏍规嵁鏈烘瀯Id闆嗗悎鍒犻櫎瀵瑰簲鐨勭敤鎴�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+            </summary>
+            <param name="orgIdList"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserDataScopeService.DeleteUserDataScopeListByUserId(System.Int64)">
+            <summary>
+            鏍规嵁鐢ㄦ埛Id鍒犻櫎瀵瑰簲鐨勭敤鎴�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysUserRoleService">
+            <summary>
+            鐢ㄦ埛瑙掕壊鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserRoleService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysUserRole},Admin.NET.Application.ISysRoleService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysUserRoleRep"></param>
+            <param name="sysRoleService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserRoleService.GetUserRoleIdList(System.Int64,System.Boolean)">
+            <summary>
+            鑾峰彇鐢ㄦ埛鐨勮鑹睮d闆嗗悎
+            </summary>
+            <param name="userId"></param>
+            <param name="checkRoleStatus"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserRoleService.GrantRole(Admin.NET.Application.UpdateUserRoleDataInput)">
+            <summary>
+            鎺堟潈鐢ㄦ埛瑙掕壊
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserRoleService.GetUserRoleDataScopeIdList(System.Int64,System.Int64)">
+            <summary>
+            鑾峰彇鐢ㄦ埛鎵�鏈夎鑹茬殑鏁版嵁鑼冨洿锛堢粍缁囨満鏋処d闆嗗悎锛�
+            </summary>
+            <param name="userId"></param>
+            <param name="orgId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserRoleService.DeleteUserRoleListByRoleId(System.Int64)">
+            <summary>
+            鏍规嵁瑙掕壊Id鍒犻櫎瀵瑰簲鐨勭敤鎴�-瑙掕壊琛ㄥ叧鑱斾俊鎭�
+            </summary>
+            <param name="roleId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserRoleService.DeleteUserRoleListByUserId(System.Int64)">
+            <summary>
+            鏍规嵁鐢ㄦ埛Id鍒犻櫎瀵瑰簲鐨勭敤鎴�-瑙掕壊琛ㄥ叧鑱斾俊鎭�
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SysUserService">
+            <summary>
+            鐢ㄦ埛鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysUser},Admin.NET.Application.ISysCacheService,Admin.NET.Application.ISysEmpService,Admin.NET.Application.ISysUserDataScopeService,Admin.NET.Application.ISysUserRoleService,Admin.NET.Application.ISysOrgService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysUserRep"></param>
+            <param name="lesProductionlineRep"></param>
+            <param name="sysCacheService"></param>
+            <param name="sysEmpService"></param>
+            <param name="sysUserDataScopeService"></param>
+            <param name="sysUserRoleService"></param>
+            <param name="sysOrgService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.QueryUserPageList(Admin.NET.Application.UserPageInput)">
+            <summary>
+            鍒嗛〉鏌ヨ鐢ㄦ埛
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.AddUser(Admin.NET.Application.AddUserInput)">
+            <summary>
+            澧炲姞鐢ㄦ埛
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.DeleteUser(Admin.NET.Application.DeleteUserInput)">
+            <summary>
+            鍒犻櫎鐢ㄦ埛
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.UpdateUser(Admin.NET.Application.UpdateUserInput)">
+            <summary>
+            鏇存柊鐢ㄦ埛
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.GetUser(System.Int64)">
+            <summary>
+            鏌ョ湅鐢ㄦ埛
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.ChangeUserStatus(Admin.NET.Application.UpdateUserStatusInput)">
+            <summary>
+            淇敼鐢ㄦ埛鐘舵��
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.GrantUserRole(Admin.NET.Application.UpdateUserRoleDataInput)">
+            <summary>
+            鎺堟潈鐢ㄦ埛瑙掕壊
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.GrantUserData(Admin.NET.Application.UpdateUserRoleDataInput)">
+            <summary>
+            鎺堟潈鐢ㄦ埛鏁版嵁鑼冨洿
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.UpdateUserInfo(Admin.NET.Application.UpdateUserBaseInfoInput)">
+            <summary>
+            鏇存柊鐢ㄦ埛淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.UpdateUserPwd(Admin.NET.Application.ChangePasswordUserInput)">
+            <summary>
+            淇敼鐢ㄦ埛瀵嗙爜
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.GetUserOwnRole(Admin.NET.Application.QueryUserInput)">
+            <summary>
+            鑾峰彇鐢ㄦ埛鎷ユ湁瑙掕壊
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.GetUserOwnData(Admin.NET.Application.QueryUserInput)">
+            <summary>
+            鑾峰彇鐢ㄦ埛鎷ユ湁鏁版嵁
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.ResetUserPwd(Admin.NET.Application.QueryUserInput)">
+            <summary>
+            閲嶇疆鐢ㄦ埛瀵嗙爜
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.UpdateAvatar(Admin.NET.Application.UploadAvatarInput)">
+            <summary>
+            淇敼鐢ㄦ埛澶村儚
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.GetUserSelector(Admin.NET.Application.UserSelectorInput)">
+            <summary>
+            鑾峰彇鐢ㄦ埛閫夋嫨鍣�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.GetSysUserList">
+            <summary>
+            鑾峰彇鐢ㄦ埛鍒楄〃
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.ExportUser">
+            <summary>
+            鐢ㄦ埛瀵煎嚭
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.ImportUser(Microsoft.AspNetCore.Http.IFormFile)">
+            <summary>
+            鐢ㄦ埛瀵煎叆
+            </summary>
+            <param name="file"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.GetUserById(System.Int64)">
+            <summary>
+            鏍规嵁鐢ㄦ埛Id鑾峰彇鐢ㄦ埛
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.SaveAuthUserToUser(Admin.NET.Application.AuthUserInput,Admin.NET.Application.CreateUserInput)">
+            <summary>
+            灏哋Auth璐﹀彿杞崲鎴愯处鍙�
+            </summary>
+            <param name="authUser"></param>
+            <param name="sysUser"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.GetUserDataScopeIdList(System.Int64)">
+            <summary>
+            鑾峰彇鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛夊苟缂撳瓨
+            </summary>
+            <param name="userId"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.GetUserDataScopeIdList">
+            <summary>
+            鑾峰彇鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.SysUserService.CheckDataScope(System.String)">
+            <summary>
+            妫�鏌ユ櫘閫氱敤鎴锋暟鎹寖鍥�
+            褰撴湁鐢ㄦ埛鏈夊涓粍缁囨椂锛屽湪鐧诲綍鏃堕�夋嫨涓�涓粍缁囷紝鎵�浠ョ粍缁噄d锛坥rgId锛変粠鍓嶇浼犺繃鏉�
+            </summary>
+            <param name="orgId"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudent3Search">
+            <summary>
+            瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Search.Name">
+            <summary>
+            瀛︾敓濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Search.Age">
+            <summary>
+            瀛︾敓骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Search.HasMoney">
+            <summary>
+            闆惰姳閽�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Search.StartName">
+            <summary>
+            鏄惁鍦ㄦ牎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Search.Gender">
+            <summary>
+            鎬у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Search.BrithDate">
+            <summary>
+            鍑虹敓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Search.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Search.UpdatedTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Search.CreatedUserName">
+            <summary>
+            鍒涘缓鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Search.UpdatedUserName">
+            <summary>
+            淇敼鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudent3SearchNonPage">
+            <summary>
+            瀛︾敓淇℃伅琛�3-鍒樻枃濂囦笉鍒嗛〉鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.Name">
+            <summary>
+            瀛︾敓濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.Age">
+            <summary>
+            瀛︾敓骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.HasMoney">
+            <summary>
+            闆惰姳閽�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.StartName">
+            <summary>
+            鏄惁鍦ㄦ牎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.Gender">
+            <summary>
+            鎬у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.BrithDate">
+            <summary>
+            鍑虹敓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.UpdatedTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.CreatedUserName">
+            <summary>
+            鍒涘缓鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.UpdatedUserName">
+            <summary>
+            淇敼鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudent3Input">
+            <summary>
+            瀛︾敓淇℃伅琛�3-鍒樻枃濂囪緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Input.Name">
+            <summary>
+            瀛︾敓濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Input.Age">
+            <summary>
+            瀛︾敓骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Input.HasMoney">
+            <summary>
+            闆惰姳閽�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Input.StartName">
+            <summary>
+            鏄惁鍦ㄦ牎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Input.Gender">
+            <summary>
+            鎬у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Input.BrithDate">
+            <summary>
+            鍑虹敓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Input.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Input.UpdatedTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Input.CreatedUserName">
+            <summary>
+            鍒涘缓鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Input.UpdatedUserName">
+            <summary>
+            淇敼鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddTestStudent3Input">
+            <summary>
+            瀛︾敓淇℃伅琛�3-鍒樻枃濂囨柊澧炲弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteTestStudent3Input">
+            <summary>
+            瀛︾敓淇℃伅琛�3-鍒樻枃濂囧垹闄ゅ弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateTestStudent3Input">
+            <summary>
+            瀛︾敓淇℃伅琛�3-鍒樻枃濂囨洿鏂板弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateTestStudent3Input.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryeTestStudent3Input">
+            <summary>
+            瀛︾敓淇℃伅琛�3-鍒樻枃濂囪幏鍙栧崟涓弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudent3Output">
+            <summary>
+            瀛︾敓淇℃伅琛�3-鍒樻枃濂囪緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Output.Name">
+            <summary>
+            瀛︾敓濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Output.Age">
+            <summary>
+            瀛︾敓骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Output.HasMoney">
+            <summary>
+            闆惰姳閽�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Output.StartName">
+            <summary>
+            鏄惁鍦ㄦ牎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Output.Gender">
+            <summary>
+            鎬у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Output.BrithDate">
+            <summary>
+            鍑虹敓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Output.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Output.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Output.UpdatedTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Output.CreatedUserName">
+            <summary>
+            鍒涘缓鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent3Output.UpdatedUserName">
+            <summary>
+            淇敼鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudent3Service">
+            <summary>
+            瀛︾敓淇℃伅琛�3-鍒樻枃濂囨湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent3Service.Page(Admin.NET.Application.TestStudent3Search)">
+            <summary>
+            鍒嗛〉鏌ヨ瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent3Service.ListNonPageAsync(Admin.NET.Application.TestStudent3SearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈠鐢熶俊鎭〃3-鍒樻枃濂囧垪琛�
+            </summary>
+            <param name="input">瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁�</param>
+            <returns>(瀛︾敓淇℃伅琛�3-鍒樻枃濂�)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent3Service.Add(Admin.NET.Application.AddTestStudent3Input)">
+            <summary>
+            澧炲姞瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent3Service.Delete(Admin.NET.Application.DeleteTestStudent3Input)">
+            <summary>
+            鍒犻櫎瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent3Service.Update(Admin.NET.Application.UpdateTestStudent3Input)">
+            <summary>
+            鏇存柊瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent3Service.Get(Admin.NET.Application.QueryeTestStudent3Input)">
+            <summary>
+            鑾峰彇瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent3Service.List(Admin.NET.Application.TestStudent3Input)">
+            <summary>
+            鑾峰彇瀛︾敓淇℃伅琛�3-鍒樻枃濂囧垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent3Service.ImportExcelAsync(Microsoft.AspNetCore.Http.IFormFile)">
+            <summary>
+            Excel妯℃澘瀵煎叆瀛︾敓淇℃伅琛�3-鍒樻枃濂囧姛鑳�
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent3Service.CommonImport(System.Data.DataTable,System.Int32)">
+            <summary>
+             DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+            </summary>
+            <param name="dataTable"></param>
+            <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent3Service.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent3Service.ToExcelAsync(Admin.NET.Application.TestStudent3SearchNonPage)">
+            <summary>
+            鏍规嵁瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁板鍑篍xcel
+            </summary>
+            <param name="input">瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁�</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent3Service.CheckExisit(Admin.NET.Core.TestStudent3,System.Boolean)">
+            <summary>
+            鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+            </summary>
+            <param name="input"></param>
+            <param name="isEdit"></param>
+            <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent3Service.CheckExisitForImport(System.Collections.Generic.List{Admin.NET.Core.TestStudent3})">
+            <summary>
+            鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+            </summary>
+            <param name="inputs"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudent5Dto">
+            <summary>
+            娴嬭瘯瀛︾敓琛ㄨ緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Dto.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Dto.Age">
+            <summary>
+            骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Dto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Dto.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Dto.UpdatedTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Dto.CreatedUserName">
+            <summary>
+            鍒涘缓鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Dto.UpdatedUserName">
+            <summary>
+            淇敼鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudent5Search">
+            <summary>
+            娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Search.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Search.Age">
+            <summary>
+            骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Search.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Search.UpdatedTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Search.CreatedUserName">
+            <summary>
+            鍒涘缓鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Search.UpdatedUserName">
+            <summary>
+            淇敼鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudent5SearchNonPage">
+            <summary>
+            娴嬭瘯瀛︾敓琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5SearchNonPage.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5SearchNonPage.Age">
+            <summary>
+            骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5SearchNonPage.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5SearchNonPage.UpdatedTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5SearchNonPage.CreatedUserName">
+            <summary>
+            鍒涘缓鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5SearchNonPage.UpdatedUserName">
+            <summary>
+            淇敼鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudent5Input">
+            <summary>
+            娴嬭瘯瀛︾敓琛ㄨ緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Input.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Input.Age">
+            <summary>
+            骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Input.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Input.UpdatedTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Input.CreatedUserName">
+            <summary>
+            鍒涘缓鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Input.UpdatedUserName">
+            <summary>
+            淇敼鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddTestStudent5Input">
+            <summary>
+            娴嬭瘯瀛︾敓琛ㄦ柊澧炲弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteTestStudent5Input">
+            <summary>
+            娴嬭瘯瀛︾敓琛ㄥ垹闄ゅ弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateTestStudent5Input">
+            <summary>
+            娴嬭瘯瀛︾敓琛ㄦ洿鏂板弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateTestStudent5Input.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryeTestStudent5Input">
+            <summary>
+            娴嬭瘯瀛︾敓琛ㄨ幏鍙栧崟涓弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudent5Output">
+            <summary>
+            娴嬭瘯瀛︾敓琛ㄨ緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Output.Name">
+            <summary>
+            濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Output.Age">
+            <summary>
+            骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Output.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Output.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Output.UpdatedTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Output.CreatedUserName">
+            <summary>
+            鍒涘缓鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudent5Output.UpdatedUserName">
+            <summary>
+            淇敼鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudent5Service">
+            <summary>
+            娴嬭瘯瀛︾敓琛ㄦ湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent5Service.Page(Admin.NET.Application.TestStudent5Search)">
+            <summary>
+            鍒嗛〉鏌ヨ娴嬭瘯瀛︾敓琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent5Service.ListNonPageAsync(Admin.NET.Application.TestStudent5SearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈡祴璇曞鐢熻〃鍒楄〃
+            </summary>
+            <param name="input">娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁�</param>
+            <returns>(娴嬭瘯瀛︾敓琛�)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent5Service.Add(Admin.NET.Application.AddTestStudent5Input)">
+            <summary>
+            澧炲姞娴嬭瘯瀛︾敓琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent5Service.Delete(Admin.NET.Application.DeleteTestStudent5Input)">
+            <summary>
+            鍒犻櫎娴嬭瘯瀛︾敓琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent5Service.Update(Admin.NET.Application.UpdateTestStudent5Input)">
+            <summary>
+            鏇存柊娴嬭瘯瀛︾敓琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent5Service.Get(Admin.NET.Application.QueryeTestStudent5Input)">
+            <summary>
+            鑾峰彇娴嬭瘯瀛︾敓琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent5Service.List(Admin.NET.Application.TestStudent5Input)">
+            <summary>
+            鑾峰彇娴嬭瘯瀛︾敓琛ㄥ垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent5Service.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆娴嬭瘯瀛︾敓琛ㄥ姛鑳�
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent5Service.CommonImport(System.Data.DataTable,System.Int32)">
+            <summary>
+             DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+            </summary>
+            <param name="dataTable"></param>
+            <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent5Service.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇娴嬭瘯瀛︾敓琛ㄧ殑Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent5Service.ToExcelAsync(Admin.NET.Application.TestStudent5SearchNonPage)">
+            <summary>
+            鏍规嵁娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+            </summary>
+            <param name="input">娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁�</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent5Service.CheckExisit(Admin.NET.Core.TestStudent5,System.Boolean,System.Int32)">
+            <summary>
+            鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+            </summary>
+            <param name="input"></param>
+            <param name="isEdit"></param>
+            <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudent5Service.CheckExisit(System.Collections.Generic.List{Admin.NET.Core.TestStudent5},Admin.NET.Core.TestStudent5,System.Int32)">
+            <summary>
+            鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鐨勬暟鎹泦
+            </summary>
+            <param name="inputs"></param>
+            <param name="input"></param>
+            <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudentSearch">
+            <summary>
+            瀛︾敓淇℃伅琛�1-閭甸暱绁ユ煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearch.Name">
+            <summary>
+            瀛︾敓濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearch.Age">
+            <summary>
+            瀛︾敓骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearch.StartName">
+            <summary>
+            鏄惁鍦ㄦ牎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearch.Gender">
+            <summary>
+            鎬у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearch.BrithDate">
+            <summary>
+            鍑虹敓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearch.TeacherId">
+            <summary>
+            鍏宠仈鑰佸笀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearch.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearch.UpdatedTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearch.CreatedUserName">
+            <summary>
+            鍒涘缓鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearch.UpdatedUserName">
+            <summary>
+            淇敼鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudentSearchNonPage">
+            <summary>
+            瀛︾敓淇℃伅琛�1-閭甸暱绁ヤ笉鍒嗛〉鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearchNonPage.Name">
+            <summary>
+            瀛︾敓濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearchNonPage.Age">
+            <summary>
+            瀛︾敓骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearchNonPage.StartName">
+            <summary>
+            鏄惁鍦ㄦ牎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearchNonPage.Gender">
+            <summary>
+            鎬у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearchNonPage.BrithDate">
+            <summary>
+            鍑虹敓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearchNonPage.TeacherId">
+            <summary>
+            鍏宠仈鑰佸笀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearchNonPage.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearchNonPage.UpdatedTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearchNonPage.CreatedUserName">
+            <summary>
+            鍒涘缓鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentSearchNonPage.UpdatedUserName">
+            <summary>
+            淇敼鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudentInput">
+            <summary>
+            瀛︾敓淇℃伅琛�1-閭甸暱绁ヨ緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentInput.Name">
+            <summary>
+            瀛︾敓濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentInput.Age">
+            <summary>
+            瀛︾敓骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentInput.StartName">
+            <summary>
+            鏄惁鍦ㄦ牎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentInput.Gender">
+            <summary>
+            鎬у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentInput.BrithDate">
+            <summary>
+            鍑虹敓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentInput.TeacherId">
+            <summary>
+            鍏宠仈鑰佸笀
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddTestStudentInput">
+            <summary>
+            瀛︾敓淇℃伅琛�1-閭甸暱绁ユ柊澧炲弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteTestStudentInput">
+            <summary>
+            瀛︾敓淇℃伅琛�1-閭甸暱绁ュ垹闄ゅ弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateTestStudentInput">
+            <summary>
+            瀛︾敓淇℃伅琛�1-閭甸暱绁ユ洿鏂板弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateTestStudentInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryeTestStudentInput">
+            <summary>
+            瀛︾敓淇℃伅琛�1-閭甸暱绁ヨ幏鍙栧崟涓弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudentOutput">
+            <summary>
+            瀛︾敓淇℃伅琛�1-閭甸暱绁ヨ緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentOutput.Name">
+            <summary>
+            瀛︾敓濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentOutput.Age">
+            <summary>
+            瀛︾敓骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentOutput.StartName">
+            <summary>
+            鏄惁鍦ㄦ牎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentOutput.Gender">
+            <summary>
+            鎬у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentOutput.BrithDate">
+            <summary>
+            鍑虹敓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentOutput.TeacherId">
+            <summary>
+            鍏宠仈鑰佸笀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentOutput.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentOutput.UpdatedTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentOutput.CreatedUserName">
+            <summary>
+            鍒涘缓鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestStudentOutput.UpdatedUserName">
+            <summary>
+            淇敼鑰呭悕绉�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestStudentService">
+            <summary>
+            瀛︾敓淇℃伅琛�1-閭甸暱绁ユ湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudentService.Page(Admin.NET.Application.TestStudentSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ瀛︾敓淇℃伅琛�1-閭甸暱绁�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudentService.ListNonPageAsync(Admin.NET.Application.TestStudentSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈠鐢熶俊鎭〃1-閭甸暱绁ュ垪琛�
+            </summary>
+            <param name="input">瀛︾敓淇℃伅琛�1-閭甸暱绁ユ煡璇㈠弬鏁�</param>
+            <returns>(瀛︾敓淇℃伅琛�1-閭甸暱绁�)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudentService.Get(Admin.NET.Application.QueryeTestStudentInput)">
+            <summary>
+            鑾峰彇瀛︾敓淇℃伅琛�1-閭甸暱绁�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudentService.List(Admin.NET.Application.TestStudentInput)">
+            <summary>
+            鑾峰彇瀛︾敓淇℃伅琛�1-閭甸暱绁ュ垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudentService.Add(Admin.NET.Application.AddTestStudentInput)">
+            <summary>
+            澧炲姞瀛︾敓淇℃伅琛�1-閭甸暱绁�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudentService.Delete(Admin.NET.Application.DeleteTestStudentInput)">
+            <summary>
+            鍒犻櫎瀛︾敓淇℃伅琛�1-閭甸暱绁�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudentService.Update(Admin.NET.Application.UpdateTestStudentInput)">
+            <summary>
+            鏇存柊瀛︾敓淇℃伅琛�1-閭甸暱绁�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudentService.ImportExcelAsync(Microsoft.AspNetCore.Http.IFormFile)">
+            <summary>
+            Excel妯℃澘瀵煎叆瀛︾敓淇℃伅琛�1-閭甸暱绁ュ姛鑳�
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudentService.CommonImport(System.Data.DataTable,System.Int32)">
+            <summary>
+             DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+            </summary>
+            <param name="dataTable"></param>
+            <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudentService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇瀛︾敓淇℃伅琛�1-閭甸暱绁ョ殑Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudentService.CheckExisit(Admin.NET.Core.TestStudent,System.Boolean)">
+            <summary>
+            鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+            </summary>
+            <param name="input"></param>
+            <param name="isEdit"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestStudentService.CheckExisitForImport(System.Collections.Generic.List{Admin.NET.Core.TestStudent})">
+            <summary>
+            鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+            </summary>
+            <param name="inputs"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.TestTeacherDto">
+            <summary>
+            娴嬭瘯鑰佸笀琛ㄨ緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestTeacherDto.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestTeacherDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestTeacherSearch">
+            <summary>
+            娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestTeacherSearch.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestTeacherSearchNonPage">
+            <summary>
+            娴嬭瘯鑰佸笀琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestTeacherSearchNonPage.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestTeacherInput">
+            <summary>
+            娴嬭瘯鑰佸笀琛ㄨ緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestTeacherInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateTestTeacherInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestTeacherOutput">
+            <summary>
+            娴嬭瘯鑰佸笀琛ㄨ緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestTeacherOutput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TestTeacherOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TestTeacherService">
+            <summary>
+            娴嬭瘯鑰佸笀琛ㄦ湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.TestTeacherService.Page(Admin.NET.Application.TestTeacherSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ娴嬭瘯鑰佸笀琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestTeacherService.ListNonPageAsync(Admin.NET.Application.TestTeacherSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈡祴璇曡�佸笀琛ㄥ垪琛�
+            </summary>
+            <param name="input">娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁�</param>
+            <returns>(娴嬭瘯鑰佸笀琛�)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestTeacherService.Add(Admin.NET.Application.AddTestTeacherInput)">
+            <summary>
+            澧炲姞娴嬭瘯鑰佸笀琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestTeacherService.Delete(Admin.NET.Application.DeleteTestTeacherInput)">
+            <summary>
+            鍒犻櫎娴嬭瘯鑰佸笀琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestTeacherService.Update(Admin.NET.Application.UpdateTestTeacherInput)">
+            <summary>
+            鏇存柊娴嬭瘯鑰佸笀琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestTeacherService.Get(Admin.NET.Application.QueryeTestTeacherInput)">
+            <summary>
+            鑾峰彇娴嬭瘯鑰佸笀琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestTeacherService.List(Admin.NET.Application.TestTeacherInput)">
+            <summary>
+            鑾峰彇娴嬭瘯鑰佸笀琛ㄥ垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestTeacherService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆娴嬭瘯鑰佸笀琛ㄥ姛鑳�
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestTeacherService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇娴嬭瘯鑰佸笀琛ㄧ殑Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.TestTeacherService.ToExcelAsync(Admin.NET.Application.TestTeacherSearchNonPage)">
+            <summary>
+            鏍规嵁娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+            </summary>
+            <param name="input">娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁�</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.VStudentSearch">
+            <summary>
+            瀛︾敓瑙嗗浘鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearch.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearch.Name">
+            <summary>
+            瀛︾敓濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearch.Age">
+            <summary>
+            瀛︾敓骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearch.StartName">
+            <summary>
+            鏄惁鍦ㄦ牎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearch.Gender">
+            <summary>
+            鎬у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearch.BrithDate">
+            <summary>
+            鍑虹敓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearch.TeacherId">
+            <summary>
+            鍏宠仈鑰佸笀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearch.teacherName">
+            <summary>
+            鑰佸笀鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.VStudentSearchNonPage">
+            <summary>
+            瀛︾敓瑙嗗浘涓嶅垎椤垫煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearchNonPage.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearchNonPage.Name">
+            <summary>
+            瀛︾敓濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearchNonPage.Age">
+            <summary>
+            瀛︾敓骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearchNonPage.StartName">
+            <summary>
+            鏄惁鍦ㄦ牎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearchNonPage.Gender">
+            <summary>
+            鎬у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearchNonPage.BrithDate">
+            <summary>
+            鍑虹敓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearchNonPage.TeacherId">
+            <summary>
+            鍏宠仈鑰佸笀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentSearchNonPage.teacherName">
+            <summary>
+            鑰佸笀鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.VStudentInput">
+            <summary>
+            瀛︾敓瑙嗗浘杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentInput.Name">
+            <summary>
+            瀛︾敓濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentInput.Age">
+            <summary>
+            瀛︾敓骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentInput.StartName">
+            <summary>
+            鏄惁鍦ㄦ牎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentInput.Gender">
+            <summary>
+            鎬у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentInput.BrithDate">
+            <summary>
+            鍑虹敓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentInput.TeacherId">
+            <summary>
+            鍏宠仈鑰佸笀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentInput.teacherName">
+            <summary>
+            鑰佸笀鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddVStudentInput">
+            <summary>
+            瀛︾敓瑙嗗浘鏂板鍙傛暟
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteVStudentInput">
+            <summary>
+            瀛︾敓瑙嗗浘鍒犻櫎鍙傛暟
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateVStudentInput">
+            <summary>
+            瀛︾敓瑙嗗浘鏇存柊鍙傛暟
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryeVStudentInput">
+            <summary>
+            瀛︾敓瑙嗗浘鑾峰彇鍗曚釜鍙傛暟
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.VStudentOutput">
+            <summary>
+            瀛︾敓瑙嗗浘杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentOutput.Name">
+            <summary>
+            瀛︾敓濮撳悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentOutput.Age">
+            <summary>
+            瀛︾敓骞撮緞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentOutput.StartName">
+            <summary>
+            鏄惁鍦ㄦ牎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentOutput.Gender">
+            <summary>
+            鎬у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentOutput.BrithDate">
+            <summary>
+            鍑虹敓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentOutput.TeacherId">
+            <summary>
+            鍏宠仈鑰佸笀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.VStudentOutput.teacherName">
+            <summary>
+            鑰佸笀鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.VStudentService">
+            <summary>
+            瀛︾敓瑙嗗浘鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.VStudentService.Page(Admin.NET.Application.VStudentSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ瀛︾敓瑙嗗浘
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.VStudentService.ListNonPageAsync(Admin.NET.Application.VStudentSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈠鐢熻鍥惧垪琛�
+            </summary>
+            <param name="input">瀛︾敓瑙嗗浘鏌ヨ鍙傛暟</param>
+            <returns>(瀛︾敓瑙嗗浘)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.VStudentService.Add(Admin.NET.Application.AddVStudentInput)">
+            <summary>
+            澧炲姞瀛︾敓瑙嗗浘
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.VStudentService.Delete(Admin.NET.Application.DeleteVStudentInput)">
+            <summary>
+            鍒犻櫎瀛︾敓瑙嗗浘
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.VStudentService.Update(Admin.NET.Application.UpdateVStudentInput)">
+            <summary>
+            鏇存柊瀛︾敓瑙嗗浘
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.VStudentService.Get(Admin.NET.Application.QueryeVStudentInput)">
+            <summary>
+            鑾峰彇瀛︾敓瑙嗗浘
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.VStudentService.List(Admin.NET.Application.VStudentInput)">
+            <summary>
+            鑾峰彇瀛︾敓瑙嗗浘鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.VStudentService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆瀛︾敓瑙嗗浘鍔熻兘
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.VStudentService.CommonImport(System.Data.DataTable,System.Int32)">
+            <summary>
+             DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+            </summary>
+            <param name="dataTable"></param>
+            <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.VStudentService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇瀛︾敓瑙嗗浘鐨凟xcel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.VStudentService.ToExcelAsync(Admin.NET.Application.VStudentSearchNonPage)">
+            <summary>
+            鏍规嵁瀛︾敓瑙嗗浘鏌ヨ鍙傛暟瀵煎嚭Excel
+            </summary>
+            <param name="input">瀛︾敓瑙嗗浘鏌ヨ鍙傛暟</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="M:Admin.NET.Application.VStudentService.CheckExisit(Admin.NET.Core.VStudent,System.Boolean,System.Int32)">
+            <summary>
+            鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+            </summary>
+            <param name="input"></param>
+            <param name="isEdit"></param>
+            <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.VStudentService.CheckExisit(System.Collections.Generic.List{Admin.NET.Core.VStudent},Admin.NET.Core.VStudent,System.Int32)">
+            <summary>
+            鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鐨勬暟鎹泦
+            </summary>
+            <param name="inputs"></param>
+            <param name="input"></param>
+            <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+        </member>
+        <member name="T:Admin.NET.Application.AssembleInteractiveInput">
+            <summary>
+            鍒涘缓涓讳换鍔°�丄GV浠诲姟杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AssembleInteractiveInput.BlankingProductionLine">
+            <summary>
+            涓嬬嚎鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AssembleDestinationsInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AssembleDestinationsInput.locationName">
+            <summary>
+            浣嶇疆锛堣捣鐐癸級/ 浣嶇疆锛堢粓鐐癸級
+            </summary>
+            <example>001H01B0101</example>
+        </member>
+        <member name="P:Admin.NET.Application.AssembleDestinationsInput.operation">
+            <summary>
+            鍙栬揣鍔ㄤ綔锛氬眰鏁� / 鏀捐揣鍔ㄤ綔锛氬眰鏁�  2
+            </summary>
+            <example>Load cargo:00</example>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateAssembleTaskInput">
+            <summary>
+            鏇存柊浠诲姟杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateAssembleTaskInput.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateAssembleTaskInput.TaskStatus">
+            <summary>
+            浠诲姟鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateAssembleTaskInput.TaskAssembleDodeviceStatus">
+            <summary>
+            璁惧浠诲姟鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateAssembleTaskInput.Aisle">
+            <summary>
+            宸烽亾
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FinishAssembleTaskInput">
+            <summary>
+            寮哄埗瀹屾垚
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FinishAssembleTaskInput.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateAgvWaring">
+             <summary>
+            鏇存柊agv鎶ラ敊淇℃伅
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateAgvWaring.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetAssembleTaskOutput">
+            <summary>
+            鏌ヨ鎵�鏈塛CS鍙互璇诲彇鐨勪换鍔¤緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetAssembleTaskOutput.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetAssembleTaskOutput.TaskType">
+            <summary>
+            浠诲姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetAssembleTaskOutput.TaskLevel">
+            <summary>
+            浠诲姟浼樺厛绾у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetAssembleTaskOutput.Aisle">
+            <summary>
+            宸烽亾/鎻愬崌鏈�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetAssembleTaskOutput.ContainerCode">
+            <summary>
+            鎵樼洏鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetAssembleTaskOutput.TaskStatus">
+            <summary>
+            浠诲姟鐘舵��;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetAgvWaring">
+            <summary>
+            鏌ヨ鎵�鏈塛CS鍙互璇诲彇鐨刟gv鎶ヨ淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetAgvWaring.Aisle">
+            <summary>
+            宸烽亾/鎻愬崌鏈�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.InteractiveInput">
+            <summary>
+            鍒涘缓涓讳换鍔°�丄GV浠诲姟杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.InteractiveInput.BlankingProductionLine">
+            <summary>
+            涓嬬嚎鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetPlaceInput">
+            <summary>
+            鏌ヨ鎵�鏈夌┖闂插簱浣嶈緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetPlaceInput.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateTaskInput">
+            <summary>
+            鏇存柊浠诲姟杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateTaskInput.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateTaskInput.TaskDodeviceStatus">
+            <summary>
+            璁惧浠诲姟鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateTaskInput.weight">
+            <summary>
+            绉伴噸閲嶉噺
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FinishTaskInput">
+            <summary>
+            寮哄埗瀹屾垚
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FinishTaskInput.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.CreateRelocationInput">
+            <summary>
+            鏇存柊浠诲姟杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CreateRelocationInput.SourcePlace">
+            <summary>
+            浠诲姟璧风偣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CreateRelocationInput.Aisle">
+            <summary>
+            宸烽亾
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddDeviceWaringInput">
+            <summary>
+            娣诲姞璁惧鎶ヨ淇℃伅杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDeviceWaringInput.WcsId">
+            <summary>
+            WcsId
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDeviceWaringInput.DeviceName">
+            <summary>
+            璁惧鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDeviceWaringInput.FaultName">
+            <summary>
+            鏁呴殰鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDeviceWaringInput.StartTime">
+            <summary>
+            鍙戠敓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDeviceWaringInput.EndTime">
+            <summary>
+            缁撴潫鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddDeviceWaringInput.RunningTime">
+            <summary>
+            鎸佺画鏃堕棿
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetSendTaskOutput">
+            <summary>
+            鏌ヨ鎵�鏈塛CS鍙互璇诲彇鐨勪换鍔¤緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetSendTaskOutput.taskDetail">
+            <summary>
+            浠诲姟璇︽儏
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetSendTaskOutput.materialDetail">
+            <summary>
+            鐗╂枡璇︽儏
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.SendTaskDetailOutput">
+            <summary>
+            浠诲姟璇︽儏
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SendTaskDetailOutput.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SendTaskDetailOutput.TaskType">
+            <summary>
+            浠诲姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SendTaskDetailOutput.TaskLevel">
+            <summary>
+            浠诲姟浼樺厛绾у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SendTaskDetailOutput.Aisle">
+            <summary>
+            宸烽亾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SendTaskDetailOutput.SourcePlace">
+            <summary>
+            浠诲姟鐨勮捣鐐�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SendTaskDetailOutput.TaskStatus">
+            <summary>
+            浠诲姟鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SendTaskDetailOutput.ContainerCode">
+            <summary>
+            鎵樼洏
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.SendMaterialDetailOutput">
+            <summary>
+            鐗╂枡璇︽儏
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SendMaterialDetailOutput.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SendMaterialDetailOutput.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SendMaterialDetailOutput.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SendMaterialDetailOutput.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetPlaceOutput">
+             <summary>
+            鑾峰彇绌洪棽鐨勫簱浣�
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetPlaceOutput.ToPlace">
+            <summary>
+            鍏ュ簱搴撲綅鐩爣鐐�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetPlaceOutput.SourcePlace">
+            <summary>
+            绉诲簱搴撲綅璧风偣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetPlaceOutput.TaskIsExist">
+            <summary>
+            浠诲姟鏄惁瀛樺湪
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetYiKuPlaceOutput">
+            <summary>
+            鑾峰彇绉诲簱搴撲綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetYiKuPlaceOutput.ToPlace">
+            <summary>
+            绉诲簱搴撲綅鐩爣鐐�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetYiKuPlaceOutput.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WareWcsToWmsService">
+            <summary>
+            鎷涘晢LES WCS璋冪敤鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WareWcsToWmsService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.AgvTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.LesPackWarehouse,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.LesDeviceWaring,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WareWcsToWmsService.GetSendTask">
+            <summary>
+            瀹氭椂鏌ヨWCS鍙互涓嬪彂鐨勫嚭鍏ュ簱浠诲姟(10鏉�)
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WareWcsToWmsService.UpdateTask(Admin.NET.Application.UpdateTaskInput)">
+            <summary>
+            鏇存柊浠诲姟淇℃伅
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WareWcsToWmsService.GetPlace(Admin.NET.Application.GetPlaceInput)">
+            <summary>
+            鑾峰彇搴撲綅淇℃伅
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WareWcsToWmsService.CreateRelocation(Admin.NET.Application.CreateRelocationInput)">
+            <summary>
+            鍒涘缓绉诲簱浠诲姟
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WareWcsToWmsService.CancelTask(Admin.NET.Application.FinishTaskInput)">
+            <summary>
+            鍙栨秷浠诲姟
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WareWcsToWmsService.CheckPack">
+            <summary>
+            wcs璇诲彇鎺ュ彛鍒ゆ柇鐗╂枡鏄惁缁勭洏鍑哄簱 true浠h〃宸茬粡缁勭洏鍑哄簱
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WareWcsToWmsService.AddDeviceWaring(Admin.NET.Application.AddDeviceWaringInput)">
+            <summary>
+            璁惧鎶ヨ淇℃伅
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WareWcsToWmsService.GetOneRowByAisle(System.Int32)">
+            <summary>
+            鏍规嵁宸烽亾鑾峰彇澶栦晶绗竴鎺�
+            </summary>
+            <param name="Aisle"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WareWcsToWmsService.GetTwoRowByAisle(System.Int32)">
+            <summary>
+            鏍规嵁宸烽亾鑾峰彇鍐呬晶绗簩鎺�
+            </summary>
+            <param name="Aisle"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WareWcsToWmsService.GetThreeRowByAisle(System.Int32)">
+            <summary>
+            鏍规嵁宸烽亾鑾峰彇澶栦晶绗簩鎺�
+            </summary>
+            <param name="Aisle"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WareWcsToWmsService.GetFourRowByAisle(System.Int32)">
+            <summary>
+            鏍规嵁宸烽亾鑾峰彇澶栦晶绗竴鎺�
+            </summary>
+            <param name="Aisle"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.AccessDetailsDto">
+            <summary>
+            鍑哄叆搴撹褰曡緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.TaskModel">
+            <summary>
+            浠诲姟鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.TaskType">
+            <summary>
+            浠诲姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.TaskLevel">
+            <summary>
+            浠诲姟绛夌骇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.TaskStatus">
+            <summary>
+            浠诲姟鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.SourcePlace">
+            <summary>
+            鏉ユ簮
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.ToPlace">
+            <summary>
+            鐩爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.ContainerId">
+            <summary>
+            鎵樼洏Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.MaterialNo">
+            <summary>
+            鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.MaterialId">
+            <summary>
+            鐗╂枡Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.BindQuantity">
+            <summary>
+            鎿嶄綔鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsDto.BindStatus">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.View_AccessDetailsSearch">
+            <summary>
+            鍑哄叆搴撹褰曟煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.TaskModel">
+            <summary>
+            浠诲姟鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.TaskType">
+            <summary>
+            浠诲姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.TaskLevel">
+            <summary>
+            浠诲姟绛夌骇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.TaskStatus">
+            <summary>
+            浠诲姟鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.SourcePlace">
+            <summary>
+            鏉ユ簮
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.ToPlace">
+            <summary>
+            鐩爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.ContainerId">
+            <summary>
+            鎵樼洏Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.MaterialNo">
+            <summary>
+            鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.MaterialId">
+            <summary>
+            鐗╂枡Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.BindQuantity">
+            <summary>
+            鎿嶄綔鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsSearch.BindStatus">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AccessDetailsInput">
+            <summary>
+            鍑哄叆搴撹褰曡緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.TaskModel">
+            <summary>
+            浠诲姟鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.TaskType">
+            <summary>
+            浠诲姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.TaskLevel">
+            <summary>
+            浠诲姟绛夌骇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.TaskStatus">
+            <summary>
+            浠诲姟鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.SourcePlace">
+            <summary>
+            鏉ユ簮
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.ToPlace">
+            <summary>
+            鐩爣
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.ContainerId">
+            <summary>
+            鎵樼洏Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.MaterialNo">
+            <summary>
+            鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.MaterialId">
+            <summary>
+            鐗╂枡Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.BindQuantity">
+            <summary>
+            鎿嶄綔鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AccessDetailsInput.BindStatus">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddAccessDetailsInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteAccessDetailsInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateAccessDetailsInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryeAccessDetailsInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.View_AccessDetailsOutput">
+            <summary>
+            鍑哄叆搴撹褰曡緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.TaskModel">
+            <summary>
+            浠诲姟鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.TaskType">
+            <summary>
+            浠诲姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.TaskLevel">
+            <summary>
+            浠诲姟绾у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.TaskStatus">
+            <summary>
+            浠诲姟鐘舵�� 瀛楀吀 鏈墽琛岋紝鎵ц涓紝瀹屾垚
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.SourcePlace">
+            <summary>
+            璧峰搴撲綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.ToPlace">
+            <summary>
+            鐩爣搴撲綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.Description">
+            <summary>
+            鏉ユ簮
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.UpdatedTime">
+            <summary>
+            淇敼鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.TaskCreatedTime">
+            <summary>
+            浠诲姟寮�濮嬫椂闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.TaskUpdatedTime">
+            <summary>
+            浠诲姟缁撴潫鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.View_AccessDetailsOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AccessDetailsService">
+            <summary>
+            鍑哄叆搴撹褰曟湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.AccessDetailsService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.Entity.VAccessDetails,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="vAccessDetailsRep"></param>
+        </member>
+        <member name="M:Admin.NET.Application.AccessDetailsService.Page(Admin.NET.Application.View_AccessDetailsSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ鍑哄叆搴撹褰�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.LesDeviceWaringDto">
+            <summary>
+            璁惧鎶ヨ杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringDto.WcsId">
+            <summary>
+            WcsId
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringDto.DeviceName">
+            <summary>
+            璁惧鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringDto.FaultName">
+            <summary>
+            鏁呴殰鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringDto.StartTime">
+            <summary>
+            鍙戠敓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringDto.EndTime">
+            <summary>
+            缁撴潫鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringDto.RunningTime">
+            <summary>
+            鎸佺画鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringDto.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.LesDeviceWaringSearch">
+            <summary>
+            璁惧鎶ヨ鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringSearch.WcsId">
+            <summary>
+            WcsId
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringSearch.DeviceName">
+            <summary>
+            璁惧鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringSearch.FaultName">
+            <summary>
+            鏁呴殰鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringSearch.StartTime">
+            <summary>
+            鍙戠敓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringSearch.EndTime">
+            <summary>
+            缁撴潫鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringSearch.RunningTime">
+            <summary>
+            鎸佺画鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringSearch.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.LesDeviceWaringSearchNonPage">
+            <summary>
+            璁惧鎶ヨ涓嶅垎椤垫煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringSearchNonPage.WcsId">
+            <summary>
+            WcsId
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringSearchNonPage.DeviceName">
+            <summary>
+            璁惧鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringSearchNonPage.FaultName">
+            <summary>
+            鏁呴殰鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringSearchNonPage.StartTime">
+            <summary>
+            鍙戠敓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringSearchNonPage.EndTime">
+            <summary>
+            缁撴潫鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringSearchNonPage.RunningTime">
+            <summary>
+            鎸佺画鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringSearchNonPage.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.LesDeviceWaringInput">
+            <summary>
+            璁惧鎶ヨ杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringInput.WcsId">
+            <summary>
+            WcsId
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringInput.DeviceName">
+            <summary>
+            璁惧鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringInput.FaultName">
+            <summary>
+            鏁呴殰鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringInput.StartTime">
+            <summary>
+            鍙戠敓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringInput.EndTime">
+            <summary>
+            缁撴潫鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringInput.RunningTime">
+            <summary>
+            鎸佺画鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringInput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateLesDeviceWaringInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.LesDeviceWaringOutput">
+            <summary>
+            璁惧鎶ヨ杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringOutput.WcsId">
+            <summary>
+            WcsId
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringOutput.DeviceName">
+            <summary>
+            璁惧鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringOutput.FaultName">
+            <summary>
+            鏁呴殰鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringOutput.StartTime">
+            <summary>
+            鍙戠敓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringOutput.EndTime">
+            <summary>
+            缁撴潫鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringOutput.RunningTime">
+            <summary>
+            鎸佺画鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.LesDeviceWaringOutput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.LesDeviceWaringService">
+            <summary>
+            璁惧鎶ヨ鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.LesDeviceWaringService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.LesDeviceWaring,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Admin.NET.Application.ISysExcelTemplateService)">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.LesDeviceWaringService.Page(Admin.NET.Application.LesDeviceWaringSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ璁惧鎶ヨ
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.LesDeviceWaringService.ListNonPageAsync(Admin.NET.Application.LesDeviceWaringSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈣澶囨姤璀﹀垪琛�
+            </summary>
+            <param name="input">璁惧鎶ヨ鏌ヨ鍙傛暟</param>
+            <returns>(璁惧鎶ヨ)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.LesDeviceWaringService.Add(Admin.NET.Application.AddLesDeviceWaringInput)">
+            <summary>
+            澧炲姞璁惧鎶ヨ
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.LesDeviceWaringService.Delete(Admin.NET.Application.DeleteLesDeviceWaringInput)">
+            <summary>
+            鍒犻櫎璁惧鎶ヨ
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.LesDeviceWaringService.Update(Admin.NET.Application.UpdateLesDeviceWaringInput)">
+            <summary>
+            鏇存柊璁惧鎶ヨ
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.LesDeviceWaringService.Get(Admin.NET.Application.QueryeLesDeviceWaringInput)">
+            <summary>
+            鑾峰彇璁惧鎶ヨ
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.LesDeviceWaringService.List(Admin.NET.Application.LesDeviceWaringInput)">
+            <summary>
+            鑾峰彇璁惧鎶ヨ鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.LesDeviceWaringService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆璁惧鎶ヨ鍔熻兘
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.LesDeviceWaringService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇璁惧鎶ヨ鐨凟xcel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.LesDeviceWaringService.ToExcelAsync(Admin.NET.Application.LesDeviceWaringSearchNonPage)">
+            <summary>
+            鏍规嵁璁惧鎶ヨ鏌ヨ鍙傛暟瀵煎嚭Excel
+            </summary>
+            <param name="input">璁惧鎶ヨ鏌ヨ鍙傛暟</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.LocationViewInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetPalceAisleInput">
+            <summary>
+            鑾峰彇搴撲綅瀵瑰簲鐨勫贩閬�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetPalceAisleInput.Areaid">
+            <summary>
+            搴撳尯Id
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetPalceAisleRownoInput">
+            <summary>
+            鑾峰彇搴撲綅鍜屽贩閬撹幏鍙栧搴旂殑鎺�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetPalceAisleRownoInput.Areaid">
+            <summary>
+            搴撳尯Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetPalceAisleRownoInput.Aisleid">
+            <summary>
+            宸烽亾ID
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetPalceListInput">
+            <summary>
+            鑾峰彇搴撲綅鍒楄〃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetPalceListInput.Areaid">
+            <summary>
+            搴撳尯Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetPalceListInput.Aisleid">
+            <summary>
+            宸烽亾Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetPalceListInput.Rowno">
+            <summary>
+            鎺�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetMaterialDetailInput">
+            <summary>
+            鑾峰彇搴撲綅瀵瑰簲鐨勪俊鎭�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.PalceInfoOtput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceInfoOtput.countNum">
+            <summary>
+            鎬诲簱浣嶆暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceInfoOtput.cunhuoNum">
+            <summary>
+            鎬诲瓨璐ф暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceInfoOtput.emptyNum">
+            <summary>
+            绌哄簱浣嶆暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceInfoOtput.emptyContainerNum">
+            <summary>
+            绌烘墭鐩樻暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceInfoOtput.materialNum">
+            <summary>
+            鐗╂枡鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceInfoOtput.lockNum">
+            <summary>
+            閿佸畾搴撲綅鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceInfoOtput.DaiRuNum">
+            <summary>
+            寰呭叆搴撲綅鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceInfoOtput.DaichuNum">
+            <summary>
+            寰呭嚭搴撲綅鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceInfoOtput.PalceDetails">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WareLocationAisleData">
+            <summary>
+            宸�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareLocationAisleData.Aisle">
+            <summary>
+            宸�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareLocationAisleData.wareLocationRownoData">
+            <summary>
+            宸峰睘鎬ф暟鎹�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WareLocationRownoData">
+            <summary>
+            鎺�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareLocationRownoData.Rowno">
+            <summary>
+            鎺�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareLocationRownoData.wareLocationLayerData">
+            <summary>
+            鎺掑睘鎬ф暟鎹�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WareLocationLayerData">
+            <summary>
+            灞�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareLocationLayerData.Layer">
+            <summary>
+            灞�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WareLocationLayerData.wareLocationColumnNoData">
+            <summary>
+            灞傚睘鎬ф暟鎹�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.MaterialDetailsOutput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialDetailsOutput.Containercode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialDetailsOutput.PalceDetails">
+            <summary>
+            搴撲綅瀵硅薄
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialDetailsOutput.WmsMaterialStocks">
+            <summary>
+            鐗╂枡淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.PalceDetail">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceDetail.PlaceCode">
+            <summary>
+            搴撲綅缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceDetail.ContainerCode">
+            <summary>
+            瀹瑰櫒缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceDetail.PlaceStatus">
+            <summary>
+            搴撲綅鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceDetail.Islock">
+            <summary>
+            鏄惁閿佸畾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceDetail.EmptyContainer">
+            <summary>
+            鏄惁绌烘墭鐩�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceDetail.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceDetail.RowNo">
+            <summary>
+            鎺�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceDetail.ColumnNo">
+            <summary>
+            鍒�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PalceDetail.LayerNo">
+            <summary>
+            灞�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.LocationViewService">
+            <summary>
+            搴撲綅璇曞浘鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.LocationViewService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.LocationViewService.GetArea">
+            <summary>
+            鑾峰彇搴撳尯淇℃伅
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.LocationViewService.GetPalceAisle(Admin.NET.Application.GetPalceAisleInput)">
+            <summary>
+            鏍规嵁搴撳尯鑾峰彇宸烽亾
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.LocationViewService.GetPalceRowno(Admin.NET.Application.GetPalceAisleRownoInput)">
+            <summary>
+            鏍规嵁搴撳尯鍜屽贩閬撹幏鍙栨帓
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.LocationViewService.GetPalceList(Admin.NET.Application.GetPalceListInput)">
+            <summary>
+            鏍规嵁搴撳尯 鎺掕幏鍙栧簱浣嶄俊鎭�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.LocationViewService.GetMaterialDetail(Admin.NET.Application.GetMaterialDetailInput)">
+            <summary>
+            鏍规嵁搴撲綅鑾峰彇瀵瑰簲淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.LocationViewService.UpdatePalceIslock(Admin.NET.Application.GetMaterialDetailInput)">
+            <summary>
+            淇敼搴撲綅閿佸畾淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.LocationViewService.UpdatePalceKongXian(Admin.NET.Application.GetMaterialDetailInput)">
+            <summary>
+            灏嗗簱浣嶇疆涓虹┖闂�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.MaterialStockDto">
+            <summary>
+            搴撳瓨淇℃伅锛堢啛鍖栧簱锛夎緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.WmsAreaAreaName">
+            <summary>
+            搴撳尯鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.MaterialType">
+            <summary>
+            鐗╂枡绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.Long">
+            <summary>
+            闀�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.Wide">
+            <summary>
+            瀹�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.High">
+            <summary>
+            楂�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.InspectionMethod">
+            <summary>
+            妫�楠屾柟寮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.UnitType">
+            <summary>
+            鍗曚綅绫诲埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.UnitNo">
+            <summary>
+            鍗曚綅缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.StockNumber">
+            <summary>
+            搴撳瓨鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.AreaId">
+            <summary>
+            搴撳尯ID
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsMaterialStockSearch">
+            <summary>
+            搴撳瓨琛ㄦ煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.MaterialType">
+            <summary>
+            鐗╂枡绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.InspectionMethod">
+            <summary>
+            妫�楠屾柟寮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.UnitType">
+            <summary>
+            鍗曚綅绫诲埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.UnitNo">
+            <summary>
+            鍗曚綅缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.StockNumber">
+            <summary>
+            搴撳瓨鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.AreaId">
+            <summary>
+            搴撳尯Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.DrawingNo">
+            <summary>
+            鍥惧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsMaterialStockSearch.ShipNo">
+            <summary>
+            鑸瑰彿
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.MaterialStockSearch">
+            <summary>
+            搴撳瓨淇℃伅锛堢啛鍖栧簱锛夋煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.MaterialType">
+            <summary>
+            鐗╂枡绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.Long">
+            <summary>
+            闀�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.Wide">
+            <summary>
+            瀹�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.High">
+            <summary>
+            楂�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.InspectionMethod">
+            <summary>
+            妫�楠屾柟寮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.UnitType">
+            <summary>
+            鍗曚綅绫诲埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.UnitNo">
+            <summary>
+            鍗曚綅缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.StockNumber">
+            <summary>
+            搴撳瓨鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockSearch.AreaId">
+            <summary>
+            搴撳尯Id
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.MaterialStockInput">
+            <summary>
+            搴撳瓨淇℃伅锛堢啛鍖栧簱锛夎緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.MaterialType">
+            <summary>
+            鐗╂枡绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.Long">
+            <summary>
+            闀�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.Wide">
+            <summary>
+            瀹�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.High">
+            <summary>
+            楂�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.InspectionMethod">
+            <summary>
+            妫�楠屾柟寮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.UnitType">
+            <summary>
+            鍗曚綅绫诲埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.UnitNo">
+            <summary>
+            鍗曚綅缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.StockNumber">
+            <summary>
+            搴撳瓨鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockInput.AreaId">
+            <summary>
+            搴撳尯Id
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddMaterialStockInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteMaterialStockInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateMaterialStockInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateMaterialStockInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryeMaterialStockInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AreaEntranceListOutput">
+            <summary>
+            鑾峰彇搴撳彛浠撳簱涓嬫媺妗嗚緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AreaEntranceListOutput.AreaId">
+            <summary>
+            浠撳簱Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AreaEntranceListOutput.AreaName">
+            <summary>
+            浠撳簱鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.MaterialStockOutput">
+            <summary>
+            搴撳瓨淇℃伅锛堢啛鍖栧簱锛夎緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.MaterialType">
+            <summary>
+            鐗╂枡绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.Long">
+            <summary>
+            闀�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.Wide">
+            <summary>
+            瀹�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.High">
+            <summary>
+            楂�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.InspectionMethod">
+            <summary>
+            妫�楠屾柟寮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.UnitType">
+            <summary>
+            鍗曚綅绫诲埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.UnitNo">
+            <summary>
+            鍗曚綅缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.StockNumber">
+            <summary>
+            搴撳瓨鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.AreaId">
+            <summary>
+            搴撳尯Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.AreaName">
+            <summary>
+            搴撳尯
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialStockOutput.CreatedTime">
+            <summary>
+            鍏ュ簱鏃堕棿
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.MaterialStockService">
+            <summary>
+            搴撳瓨淇℃伅鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.MaterialStockService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.MaterialStockService.Page(Admin.NET.Application.WmsMaterialStockSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ搴撳瓨琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MaterialStockService.Add(Admin.NET.Application.AddMaterialStockInput)">
+            <summary>
+            澧炲姞搴撳瓨琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MaterialStockService.Delete(Admin.NET.Application.DeleteMaterialStockInput)">
+            <summary>
+            鍒犻櫎搴撳瓨琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MaterialStockService.Update(Admin.NET.Application.UpdateMaterialStockInput)">
+            <summary>
+            鏇存柊搴撳瓨琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MaterialStockService.Get(Admin.NET.Application.QueryeMaterialStockInput)">
+            <summary>
+            鑾峰彇搴撳瓨琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MaterialStockService.List(Admin.NET.Application.MaterialStockInput)">
+            <summary>
+            鑾峰彇搴撳瓨琛ㄥ垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MaterialStockService.FkWmsAreaList">
+            <summary>
+            鑾峰彇WmsArea鍒楄〃
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.AgvTaskDto">
+            <summary>
+            AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskDto.TaskType">
+            <summary>
+            浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskDto.StartPlace">
+            <summary>
+            璧峰浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskDto.EndPlace">
+            <summary>
+            缁撴潫浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskDto.AgvState">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskDto.TransportOrder">
+            <summary>
+            褰撳墠鎵ц鐨勪换鍔�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskDto.TaskNo">
+            <summary>
+            涓讳换鍔″彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskDto.Pid">
+            <summary>
+            Agv鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskDto.ContainerCode">
+            <summary>
+            瀹瑰櫒缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskDto.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskDto.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AgvTaskSearch">
+            <summary>
+            AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearch.TaskType">
+            <summary>
+            浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearch.StartPlace">
+            <summary>
+            璧峰浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearch.EndPlace">
+            <summary>
+            缁撴潫浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearch.AgvState">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearch.TransportOrder">
+            <summary>
+            褰撳墠鎵ц鐨勪换鍔�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearch.TaskNo">
+            <summary>
+            涓讳换鍔″彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearch.Pid">
+            <summary>
+            Agv鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearch.ContainerCode">
+            <summary>
+            瀹瑰櫒缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearch.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearch.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AgvTaskSearchNonPage">
+            <summary>
+            AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級涓嶅垎椤垫煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.TaskType">
+            <summary>
+            浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.StartPlace">
+            <summary>
+            璧峰浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.EndPlace">
+            <summary>
+            缁撴潫浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.AgvState">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.TransportOrder">
+            <summary>
+            褰撳墠鎵ц鐨勪换鍔�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.TaskNo">
+            <summary>
+            涓讳换鍔″彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.Pid">
+            <summary>
+            Agv鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.ContainerCode">
+            <summary>
+            瀹瑰櫒缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AgvTaskInput">
+            <summary>
+            AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskInput.TaskType">
+            <summary>
+            浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskInput.StartPlace">
+            <summary>
+            璧峰浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskInput.EndPlace">
+            <summary>
+            缁撴潫浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskInput.AgvState">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskInput.TransportOrder">
+            <summary>
+            褰撳墠鎵ц鐨勪换鍔�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskInput.TaskNo">
+            <summary>
+            涓讳换鍔″彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskInput.Pid">
+            <summary>
+            Agv鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskInput.ContainerCode">
+            <summary>
+            瀹瑰櫒缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskInput.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskInput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddAgvTaskInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteAgvTaskInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateAgvTaskInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateAgvTaskInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryeAgvTaskInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AgvTaskFinishInput">
+            <summary>
+            寮哄埗瀹屾垚
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AgvTaskOutput">
+            <summary>
+            AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskOutput.TaskType">
+            <summary>
+            浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskOutput.StartPlace">
+            <summary>
+            璧峰浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskOutput.EndPlace">
+            <summary>
+            缁撴潫浣嶇疆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskOutput.AgvState">
+            <summary>
+            鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskOutput.TransportOrder">
+            <summary>
+            褰撳墠鎵ц鐨勪换鍔�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskOutput.TaskNo">
+            <summary>
+            涓讳换鍔″彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskOutput.Pid">
+            <summary>
+            Agv鐖禝d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskOutput.ContainerCode">
+            <summary>
+            瀹瑰櫒缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskOutput.WorkShopType">
+            <summary>
+            鎵�灞炶溅闂�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AgvTaskOutput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsAgvTaskService">
+            <summary>
+            AGV鍑哄叆搴撲换鍔$鐞嗘湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAgvTaskService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.AgvTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Admin.NET.Application.ISysExcelTemplateService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+            <param name="sysDictTypeRep"></param>
+            <param name="sysDictDataRep"></param>
+            <param name="agvTaskRep"></param>
+            <param name="wmsTaskRep"></param>
+            <param name="sysExcelTemplateService"></param>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAgvTaskService.Page(Admin.NET.Application.AgvTaskSearch)">
+            <summary>
+            鍒嗛〉鏌ヨAGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAgvTaskService.ListNonPageAsync(Admin.NET.Application.AgvTaskSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇GV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+            </summary>
+            <param name="input">AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟</param>
+            <returns>(AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAgvTaskService.Add(Admin.NET.Application.AddAgvTaskInput)">
+            <summary>
+            澧炲姞AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAgvTaskService.Delete(Admin.NET.Application.DeleteAgvTaskInput)">
+            <summary>
+            鍒犻櫎AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAgvTaskService.Update(Admin.NET.Application.UpdateAgvTaskInput)">
+            <summary>
+            鏇存柊AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAgvTaskService.Finish(Admin.NET.Application.AgvTaskFinishInput)">
+            <summary>
+            寮哄埗瀹屾垚
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAgvTaskService.Get(Admin.NET.Application.QueryeAgvTaskInput)">
+            <summary>
+            鑾峰彇AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAgvTaskService.List(Admin.NET.Application.AgvTaskInput)">
+            <summary>
+            鑾峰彇AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAgvTaskService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鍔熻兘
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAgvTaskService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鐨凟xcel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsAgvTaskService.ToExcelAsync(Admin.NET.Application.AgvTaskSearchNonPage)">
+            <summary>
+            鏍规嵁AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟瀵煎嚭Excel
+            </summary>
+            <param name="input">AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.TaskDto">
+            <summary>
+            鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.TaskModel">
+            <summary>
+            浠诲姟鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.TaskType">
+            <summary>
+            浠诲姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.TaskLevel">
+            <summary>
+            浠诲姟绾у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.TaskStatus">
+            <summary>
+            浠诲姟鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.IsRead">
+            <summary>
+            WCS鏄惁鍙互璇诲彇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.ContainerCode">
+            <summary>
+            鎵樼洏缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.SourcePlace">
+            <summary>
+            璧峰搴撲綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.ToPlace">
+            <summary>
+            鐩爣搴撲綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.Aisle">
+            <summary>
+            宸烽亾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.AreaName">
+            <summary>
+            搴撳尯鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.OrderDetailsId">
+            <summary>
+            鍗曟嵁鏄庣粏Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.OrderNo">
+            <summary>
+            缁勭洏璁板綍鍗曟嵁鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.SendTimes">
+            <summary>
+            鍙戦�佹鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.DodeviceId">
+            <summary>
+            浠诲姟鎵ц鍫嗗灈鏈篒d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.DodevicenodeId">
+            <summary>
+            璁惧鎵ц鑺傜偣Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.Dodevicetype">
+            <summary>
+            璁惧绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.TaskDodeviceStatus">
+            <summary>
+            浠诲姟璁惧鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskDto.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsTaskSearch">
+            <summary>
+            鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.Batch">
+            <summary>
+            鎵规    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.MaterialDensity">
+            <summary>
+            瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.TaskModel">
+            <summary>
+            浠诲姟鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.TaskType">
+            <summary>
+            浠诲姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.TaskLevel">
+            <summary>
+            浠诲姟绾у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.TaskStatus">
+            <summary>
+            浠诲姟鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.IsRead">
+            <summary>
+            WCS鏄惁鍙互璇诲彇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.ContainerCode">
+            <summary>
+            鎵樼洏缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.SourcePlace">
+            <summary>
+            璧峰搴撲綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.ToPlace">
+            <summary>
+            鐩爣搴撲綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.Aisle">
+            <summary>
+            宸烽亾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.AreaName">
+            <summary>
+            搴撳尯鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.OrderDetailsId">
+            <summary>
+            鍗曟嵁鏄庣粏Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.OrderNo">
+            <summary>
+            缁勭洏璁板綍鍗曟嵁鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.SendTimes">
+            <summary>
+            鍙戦�佹鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.DodeviceId">
+            <summary>
+            浠诲姟鎵ц鍫嗗灈鏈篒d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.DodevicenodeId">
+            <summary>
+            璁惧鎵ц鑺傜偣Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.Dodevicetype">
+            <summary>
+            璁惧绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.TaskDodeviceStatus">
+            <summary>
+            浠诲姟璁惧鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearch.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsTaskFinishInput">
+            <summary>
+            寮哄埗瀹屾垚杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateTaskLevelInput">
+            <summary>
+            鏇存柊浠诲姟浼樺厛绾�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.CancelInput">
+            <summary>
+            鎵归噺鍙栨秷浠诲姟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CancelInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.BatchCancelInput">
+            <summary>
+            鎵归噺鍙栨秷浠诲姟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BatchCancelInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.BatchBreakInput">
+            <summary>
+            鎵归噺鏆傚仠浠诲姟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BatchBreakInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.BatchContinueInput">
+            <summary>
+            鎵归噺缁х画浠诲姟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.BatchContinueInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsTaskSearchNonPage">
+            <summary>
+            鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級涓嶅垎椤垫煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.TaskModel">
+            <summary>
+            浠诲姟鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.TaskType">
+            <summary>
+            浠诲姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.TaskLevel">
+            <summary>
+            浠诲姟绾у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.TaskStatus">
+            <summary>
+            浠诲姟鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.IsRead">
+            <summary>
+            WCS鏄惁鍙互璇诲彇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.ContainerCode">
+            <summary>
+            鎵樼洏缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.SourcePlace">
+            <summary>
+            璧峰搴撲綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.ToPlace">
+            <summary>
+            鐩爣搴撲綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.Aisle">
+            <summary>
+            宸烽亾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.AreaName">
+            <summary>
+            搴撳尯鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.OrderDetailsId">
+            <summary>
+            鍗曟嵁鏄庣粏Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.OrderNo">
+            <summary>
+            缁勭洏璁板綍鍗曟嵁鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.SendTimes">
+            <summary>
+            鍙戦�佹鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.DodeviceId">
+            <summary>
+            浠诲姟鎵ц鍫嗗灈鏈篒d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.DodevicenodeId">
+            <summary>
+            璁惧鎵ц鑺傜偣Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.Dodevicetype">
+            <summary>
+            璁惧绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.TaskDodeviceStatus">
+            <summary>
+            浠诲姟璁惧鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TaskInput">
+            <summary>
+            鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.TaskModel">
+            <summary>
+            浠诲姟鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.TaskType">
+            <summary>
+            浠诲姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.TaskLevel">
+            <summary>
+            浠诲姟绾у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.TaskStatus">
+            <summary>
+            浠诲姟鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.IsRead">
+            <summary>
+            WCS鏄惁鍙互璇诲彇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.ContainerCode">
+            <summary>
+            鎵樼洏缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.SourcePlace">
+            <summary>
+            璧峰搴撲綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.ToPlace">
+            <summary>
+            鐩爣搴撲綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.Aisle">
+            <summary>
+            宸烽亾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.AreaName">
+            <summary>
+            搴撳尯鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.OrderDetailsId">
+            <summary>
+            鍗曟嵁鏄庣粏Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.OrderNo">
+            <summary>
+            缁勭洏璁板綍鍗曟嵁鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.SendTimes">
+            <summary>
+            鍙戦�佹鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.DodeviceId">
+            <summary>
+            浠诲姟鎵ц鍫嗗灈鏈篒d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.DodevicenodeId">
+            <summary>
+            璁惧鎵ц鑺傜偣Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.Dodevicetype">
+            <summary>
+            璁惧绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.TaskDodeviceStatus">
+            <summary>
+            浠诲姟璁惧鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskInput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AddWmsTaskInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DeleteWmsTaskInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.UpdateWmsTaskInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWmsTaskInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.QueryeWmsTaskInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TaskOutput">
+            <summary>
+            鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.TaskModel">
+            <summary>
+            浠诲姟鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.TaskType">
+            <summary>
+            浠诲姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.TaskLevel">
+            <summary>
+            浠诲姟绾у埆
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.TaskStatus">
+            <summary>
+            浠诲姟鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.IsRead">
+            <summary>
+            WCS鏄惁鍙互璇诲彇
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.IsReadName">
+            <summary>
+            WCS鏄惁鍙互璇诲彇鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.ContainerCode">
+            <summary>
+            鎵樼洏缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.SourcePlace">
+            <summary>
+            璧峰搴撲綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.ToPlace">
+            <summary>
+            鐩爣搴撲綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.Aisle">
+            <summary>
+            宸烽亾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.AreaName">
+            <summary>
+            搴撳尯鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.OrderDetailsId">
+            <summary>
+            鍗曟嵁鏄庣粏Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.OrderNo">
+            <summary>
+            缁勭洏璁板綍鍗曟嵁鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.SendTimes">
+            <summary>
+            鍙戦�佹鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.DodeviceId">
+            <summary>
+            浠诲姟鎵ц鍫嗗灈鏈篒d
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.DodevicenodeId">
+            <summary>
+            璁惧鎵ц鑺傜偣Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.Dodevicetype">
+            <summary>
+            璁惧绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.TaskDodeviceStatus">
+            <summary>
+            浠诲姟璁惧鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.AgvState">
+            <summary>
+            Agv鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.Batch">
+            <summary>
+            鎵规    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.MaterialDensity">
+            <summary>
+            瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.MaterialSpec">
+            <summary>
+            瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.UpdatedTime">
+            <summary>
+            鏇存柊鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.BlankingProductionLine">
+            <summary>
+            涓嬫枡浜х嚎
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TaskOutput.Description">
+            <summary>
+            鍏ュ簱鏉ユ簮
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsTaskService">
+            <summary>
+            浠诲姟绠$悊鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.AgvTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Admin.NET.Application.ISysExcelTemplateService)">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.Page(Admin.NET.Application.WmsTaskSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ鍑哄叆搴撲换鍔$鐞�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.ListNonPageAsync(Admin.NET.Application.WmsTaskSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈠嚭鍏ュ簱浠诲姟绠$悊鍒楄〃
+            </summary>
+            <param name="input">鍑哄叆搴撲换鍔$鐞嗘煡璇㈠弬鏁�</param>
+            <returns>(鍑哄叆搴撲换鍔$鐞�)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.Add(Admin.NET.Application.AddWmsTaskInput)">
+            <summary>
+            澧炲姞鍑哄叆搴撲换鍔$鐞�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.Delete(Admin.NET.Application.DeleteWmsTaskInput)">
+            <summary>
+            鍒犻櫎鍑哄叆搴撲换鍔$鐞�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.Update(Admin.NET.Application.UpdateWmsTaskInput)">
+            <summary>
+            鏇存柊鍑哄叆搴撲换鍔$鐞�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.Finish(Admin.NET.Application.WmsTaskFinishInput)">
+            <summary>
+            寮哄埗瀹屾垚
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.UpwardTaskLevel(Admin.NET.Application.UpdateTaskLevelInput)">
+            <summary>
+            鏇存柊浼樺厛绾�(鍚戜笂)
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.DownTaskLevel(Admin.NET.Application.UpdateTaskLevelInput)">
+            <summary>
+            鏇存柊浼樺厛绾�(鍚戜笅)
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.CancelTask(Admin.NET.Application.CancelInput)">
+            <summary>
+            鍙栨秷
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.BatchCancel(Admin.NET.Application.BatchCancelInput)">
+            <summary>
+            鎵归噺鍙栨秷
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.BatchBreak(Admin.NET.Application.BatchBreakInput)">
+            <summary>
+            鎵归噺鏆傚仠
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.BatchContinue(Admin.NET.Application.BatchContinueInput)">
+            <summary>
+            鎵归噺缁х画
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.Get(Admin.NET.Application.QueryeWmsTaskInput)">
+            <summary>
+            鑾峰彇鍑哄叆搴撲换鍔$鐞�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.List(Admin.NET.Application.TaskInput)">
+            <summary>
+            鑾峰彇鍑哄叆搴撲换鍔$鐞嗗垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆鍑哄叆搴撲换鍔$鐞嗗姛鑳�
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇鍑哄叆搴撲换鍔$鐞嗙殑Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTaskService.ToExcelAsync(Admin.NET.Application.WmsTaskSearchNonPage)">
+            <summary>
+            鏍规嵁鍑哄叆搴撲换鍔$鐞嗘煡璇㈠弬鏁板鍑篍xcel
+            </summary>
+            <param name="input">鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsDumpOrderDto">
+            <summary>
+            杞偍鍗曡緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderDto.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderDto.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderDto.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderDto.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderDto.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderDto.Creator">
+            <summary>
+            鍒涘缓浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderDto.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderDto.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderDto.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsDumpOrderSearch">
+            <summary>
+            杞偍鍗曟煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearch.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearch.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearch.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearch.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearch.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearch.Creator">
+            <summary>
+            鍒涘缓浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearch.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearch.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearch.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsDumpOrderSearchNonPage">
+            <summary>
+            杞偍鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.Creator">
+            <summary>
+            鍒涘缓浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsDumpOrderInput">
+            <summary>
+            杞偍鍗曡緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderInput.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderInput.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderInput.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderInput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderInput.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderInput.Creator">
+            <summary>
+            鍒涘缓浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderInput.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderInput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderInput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWmsDumpOrderInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DumpPageDetailInput">
+            <summary>
+            鑾峰彇鏄庣粏鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DumpPageDetailInput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsDumpOrderOutput">
+            <summary>
+            杞偍鍗曡緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderOutput.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderOutput.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderOutput.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderOutput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderOutput.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderOutput.Creator">
+            <summary>
+            鍒涘缓浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderOutput.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderOutput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderOutput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsDumpOrderOutput.Dtls">
+            <summary>
+            瀵瑰簲YiGo绯荤粺
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DumpPageDetailOutput">
+            <summary>
+            杞偍鍗曡鎯呰緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DumpPageDetailOutput.Id">
+            <summary>
+            Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DumpPageDetailOutput.OID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DumpPageDetailOutput.OrderId">
+            <summary>
+            鍗曟嵁Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DumpPageDetailOutput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DumpPageDetailOutput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DumpPageDetailOutput.Unit">
+            <summary>
+            鍩烘湰鍗曚綅    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DumpPageDetailOutput.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DumpPageDetailOutput.Length">
+            <summary>
+            闀垮害 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DumpPageDetailOutput.Batchno_SCM">
+            <summary>
+            SCM鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DumpPageDetailOutput.Batchno_WMS">
+            <summary>
+            WMS鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DumpPageDetailOutput.ProjectCode">
+            <summary>
+            搴撳瓨椤圭洰缂栫爜    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DumpPageDetailOutput.Projectcode_To">
+            <summary>
+            鏂板簱瀛橀」鐩紪鐮�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DumpPageDetailOutput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsDumpOrderOutputByYiGO">
+            <summary>
+            yigo杞偍鍗曡幏鍙栧弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsDumpOrderService">
+            <summary>
+            杞偍鍗曟湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsDumpOrderService.Page(Admin.NET.Application.WmsDumpOrderSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ杞偍鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsDumpOrderService.PageDetail(Admin.NET.Application.DumpPageDetailInput)">
+            <summary>
+            鑾峰彇鍗曟嵁鏄庣粏
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsDumpOrderService.GetDumpOrder">
+            <summary>
+            澧炲姞杞偍鍗�(yigo绯荤粺鑾峰彇)
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsDumpOrderService.ExecuteDumpOrder(Admin.NET.Application.DumpPageDetailInput)">
+            <summary>
+            鎵ц杞偍鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsDumpOrderService.ListNonPageAsync(Admin.NET.Application.WmsDumpOrderSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈣浆鍌ㄥ崟鍒楄〃
+            </summary>
+            <param name="input">杞偍鍗曟煡璇㈠弬鏁�</param>
+            <returns>(杞偍鍗�)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsDumpOrderService.Add(Admin.NET.Application.AddWmsDumpOrderInput)">
+            <summary>
+            澧炲姞杞偍鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsDumpOrderService.Delete(Admin.NET.Application.DeleteWmsDumpOrderInput)">
+            <summary>
+            鍒犻櫎杞偍鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsDumpOrderService.Update(Admin.NET.Application.UpdateWmsDumpOrderInput)">
+            <summary>
+            鏇存柊杞偍鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsDumpOrderService.Get(Admin.NET.Application.QueryeWmsDumpOrderInput)">
+            <summary>
+            鑾峰彇杞偍鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsDumpOrderService.List(Admin.NET.Application.WmsDumpOrderInput)">
+            <summary>
+            鑾峰彇杞偍鍗曞垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsDumpOrderService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆杞偍鍗曞姛鑳�
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsDumpOrderService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇杞偍鍗曠殑Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsDumpOrderService.ToExcelAsync(Admin.NET.Application.WmsDumpOrderSearchNonPage)">
+            <summary>
+            鏍规嵁杞偍鍗曟煡璇㈠弬鏁板鍑篍xcel
+            </summary>
+            <param name="input">杞偍鍗曟煡璇㈠弬鏁�</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsGoodsReturnOrderDto">
+            <summary>
+            閫�璐у崟杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.GoodsReturnStatus">
+            <summary>
+            閫�璐х姸鎬�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsGoodsReturnOrderSearch">
+            <summary>
+            閫�璐у崟鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.GoodsReturnStatus">
+            <summary>
+            閫�璐х姸鎬�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage">
+            <summary>
+            閫�璐у崟涓嶅垎椤垫煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.GoodsReturnStatus">
+            <summary>
+            閫�璐х姸鎬�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsGoodsReturnOrderInput">
+            <summary>
+            閫�璐у崟杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.GoodsReturnStatus">
+            <summary>
+            閫�璐х姸鎬�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWmsGoodsReturnOrderInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GoodsReturnOrdePageDetailInput">
+            <summary>
+            閫�璐у崟鑾峰彇鏄庣粏鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GoodsReturnOrdePageDetailInput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ReturnGoodsReturnOrderInput">
+            <summary>
+            閫�璐т笅鏋剁粰yigo绯荤粺鐨勫弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInput.SOID">
+            <summary>
+            YIGO绯荤粺id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInput.NO">
+            <summary>
+            鍏ュ簱閫氱煡鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInput.WMSNO">
+            <summary>
+            WMS閫�璐у崟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInput.Billdate">
+             <summary>
+            涓嬫灦鏃堕棿
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInput.Dtls">
+            <summary>
+            閫�璐ц鎯�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail">
+            <summary>
+            閫�璐т笅鏋剁粰yigo绯荤粺鐨勮鎯呭弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail.OID">
+            <summary>
+            OID  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail.SumWeight">
+            <summary>
+            閲嶉噺    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail.DestStoreareacode">
+            <summary>
+            搴撳尯    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail.DestLocationcode">
+            <summary>
+            鍌ㄤ綅    
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsGoodsReturnOrderOutput">
+            <summary>
+            閫�璐у崟杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.GoodsReturnStatus">
+            <summary>
+            閫�璐х姸鎬�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.Dtls">
+            <summary>
+            瀵瑰簲YiGo绯荤粺
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput">
+            <summary>
+            閫�璐у崟璇︽儏杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.Id">
+            <summary>
+            Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.OID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.OrderId">
+            <summary>
+            鍗曟嵁Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.Unit">
+            <summary>
+            鍩烘湰鍗曚綅    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.SingleLength">
+            <summary>
+            鍗曟牴闀垮害 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.TheoreticalWeight">
+            <summary>
+            鐞嗚閲嶉噺    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.Batchno_WMS">
+            <summary>
+            鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.Price">
+            <summary>
+            涓嶅惈绋庡崟浠�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.SumPrice">
+            <summary>
+            鎴愭湰閲戦    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.ContractCode">
+            <summary>
+            鍚堝悓缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.StoreRoomname">
+            <summary>
+            浠撻棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.DeclarationCode">
+            <summary>
+            鎶ュ叧鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.TradeName">
+            <summary>
+            鎶ュ叧鍝佸悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.ItemNo">
+            <summary>
+            鎶ュ叧椤瑰彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.CustomsUnitName">
+            <summary>
+            鎶ュ叧鍗曚綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.CustomsNum">
+            <summary>
+            鎶ュ叧鏁伴噺   
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.CustomsPrices">
+            <summary>
+            鎶ュ叧閲戦 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.ReceivingStatus">
+            <summary>
+            閫�璐х姸鎬�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetGoodsReturnOrderOutputByYiGo">
+            <summary>
+            yigo鑾峰彇閫�璐у崟杩斿洖鍙傛暟
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ReturnGoodsReturnOrderOutput">
+            <summary>
+            閫�璐т笅鏋惰繑鍥炲弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderOutput.Result">
+            <summary>
+            缁撴灉鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderOutput.Status">
+            <summary>
+            璇锋眰鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsGoodsReturnOrderService">
+            <summary>
+            閫�璐у崟鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.Page(Admin.NET.Application.WmsGoodsReturnOrderSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ閫�璐у崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.PageDetail(Admin.NET.Application.GoodsReturnOrdePageDetailInput)">
+            <summary>
+            鑾峰彇鍗曟嵁鏄庣粏
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.GetGoodsReturnOrder">
+            <summary>
+            鑾峰彇閫�璐у崟(yigo绯荤粺)
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.ReturnGoodsReturnOrder(Admin.NET.Application.ReturnGoodsReturnOrderInput)">
+            <summary>
+            閫�璐т笅鏋舵帴鍙�(yigo绯荤粺)
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.ListNonPageAsync(Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈤��璐у崟鍒楄〃
+            </summary>
+            <param name="input">閫�璐у崟鏌ヨ鍙傛暟</param>
+            <returns>(閫�璐у崟)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.Add(Admin.NET.Application.AddWmsGoodsReturnOrderInput)">
+            <summary>
+            澧炲姞閫�璐у崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.Delete(Admin.NET.Application.DeleteWmsGoodsReturnOrderInput)">
+            <summary>
+            鍒犻櫎閫�璐у崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.Update(Admin.NET.Application.UpdateWmsGoodsReturnOrderInput)">
+            <summary>
+            鏇存柊閫�璐у崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.Get(Admin.NET.Application.QueryeWmsGoodsReturnOrderInput)">
+            <summary>
+            鑾峰彇閫�璐у崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.List(Admin.NET.Application.WmsGoodsReturnOrderInput)">
+            <summary>
+            鑾峰彇閫�璐у崟鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆閫�璐у崟鍔熻兘
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇閫�璐у崟鐨凟xcel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.ToExcelAsync(Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage)">
+            <summary>
+            鏍规嵁閫�璐у崟鏌ヨ鍙傛暟瀵煎嚭Excel
+            </summary>
+            <param name="input">閫�璐у崟鏌ヨ鍙傛暟</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsOrderDto">
+            <summary>
+            鍗曟嵁琛ㄨ緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.SourceBillNo">
+            <summary>
+            閫佽揣閫氱煡鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.TradeMode">
+            <summary>
+            璐告槗鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.StoreRoomname">
+            <summary>
+            浠撻棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.DeclarationCode">
+            <summary>
+            鎶ュ叧鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.Majorname">
+            <summary>
+            涓撲笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDto.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.PageDetailInput">
+            <summary>
+            鑾峰彇鏄庣粏鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PageDetailInput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsOrderSearch">
+            <summary>
+            鍗曟嵁琛ㄦ煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.SourceBillNo">
+            <summary>
+            閫佽揣閫氱煡鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.TradeMode">
+            <summary>
+            璐告槗鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.StoreRoomname">
+            <summary>
+            浠撻棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.DeclarationCode">
+            <summary>
+            鎶ュ叧鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.Majorname">
+            <summary>
+            涓撲笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearch.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsOrderSearchNonPage">
+            <summary>
+            鍗曟嵁琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.SourceBillNo">
+            <summary>
+            閫佽揣閫氱煡鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.TradeMode">
+            <summary>
+            璐告槗鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.StoreRoomname">
+            <summary>
+            浠撻棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.DeclarationCode">
+            <summary>
+            鎶ュ叧鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.Majorname">
+            <summary>
+            涓撲笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsOrderInput">
+            <summary>
+            鍗曟嵁琛ㄨ緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.SourceBillNo">
+            <summary>
+            閫佽揣閫氱煡鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.TradeMode">
+            <summary>
+            璐告槗鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.StoreRoomname">
+            <summary>
+            浠撻棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.DeclarationCode">
+            <summary>
+            鎶ュ叧鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.Majorname">
+            <summary>
+            涓撲笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderInput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWmsOrderInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DistributeInOrderInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsOrderOutput">
+            <summary>
+            鍗曟嵁琛ㄨ緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.SourceBillNo">
+            <summary>
+            閫佽揣閫氱煡鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.TradeMode">
+            <summary>
+            璐告槗鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.StoreRoomname">
+            <summary>
+            浠撻棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.DeclarationCode">
+            <summary>
+            鎶ュ叧鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.Majorname">
+            <summary>
+            涓撲笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderOutput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsOrderDetailOutput">
+            <summary>
+            鍗曟嵁琛ㄨ鎯呰緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.Id">
+            <summary>
+            Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.OID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.OrderId">
+            <summary>
+            鍗曟嵁Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.Unit">
+            <summary>
+            鍩烘湰鍗曚綅    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.SingleLength">
+            <summary>
+            鍗曟牴闀垮害 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.TheoreticalWeight">
+            <summary>
+            鐞嗚閲嶉噺    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.Price">
+            <summary>
+            涓嶅惈绋庡崟浠�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.SumPrice">
+            <summary>
+            鎴愭湰閲戦    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.ContractCode">
+            <summary>
+            鍚堝悓缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.TradeName">
+            <summary>
+            鎶ュ叧鍝佸悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.ItemNo">
+            <summary>
+            鎶ュ叧椤瑰彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.CustomsUnitName">
+            <summary>
+            鎶ュ叧鍗曚綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.CustomsNum">
+            <summary>
+            鎶ュ叧鏁伴噺   
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.CustomsPrices">
+            <summary>
+            鎶ュ叧閲戦 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.SpecialNeeds">
+            <summary>
+            鐗规畩瑕佹眰
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsOrderDetailOutput.InspectionResults">
+            <summary>
+            妫�楠岀粨鏋�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsOrderService">
+            <summary>
+            鍏ュ簱閫氱煡鍗曟湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderService.Page(Admin.NET.Application.WmsOrderSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ鍗曟嵁琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderService.PageDetail(Admin.NET.Application.PageDetailInput)">
+            <summary>
+            鑾峰彇鍗曟嵁鏄庣粏
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderService.DistributeInOrder(Admin.NET.Application.DistributeInOrderInput)">
+            <summary>
+            鎵归噺涓嬪彂鍏ュ簱鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderService.ListNonPageAsync(Admin.NET.Application.WmsOrderSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈠崟鎹〃鍒楄〃
+            </summary>
+            <param name="input">鍗曟嵁琛ㄦ煡璇㈠弬鏁�</param>
+            <returns>(鍗曟嵁琛�)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderService.Add(Admin.NET.Application.AddWmsOrderInput)">
+            <summary>
+            澧炲姞鍗曟嵁琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderService.Delete(Admin.NET.Application.DeleteWmsOrderInput)">
+            <summary>
+            鍒犻櫎鍗曟嵁琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderService.Update(Admin.NET.Application.UpdateWmsOrderInput)">
+            <summary>
+            鏇存柊鍗曟嵁琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderService.Get(Admin.NET.Application.QueryeWmsOrderInput)">
+            <summary>
+            鑾峰彇鍗曟嵁琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderService.List(Admin.NET.Application.WmsOrderInput)">
+            <summary>
+            鑾峰彇鍗曟嵁琛ㄥ垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆鍗曟嵁琛ㄥ姛鑳�
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇鍗曟嵁琛ㄧ殑Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsOrderService.ToExcelAsync(Admin.NET.Application.WmsOrderSearchNonPage)">
+            <summary>
+            鏍规嵁鍗曟嵁琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+            </summary>
+            <param name="input">鍗曟嵁琛ㄦ煡璇㈠弬鏁�</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.InspectionDeclarationDetail">
+            <summary>
+            鎶ユ浼犻�掔粰yigo绯荤粺鐨勮鎯呭弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.InspectionDeclarationDetail.OID">
+            <summary>
+            OID  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.InspectionDeclarationDetail.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.InspectionDeclarationDetail.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.InspectionDeclarationDetail.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.InspectionDeclarationDetail.SumWeight">
+            <summary>
+            閲嶉噺    
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.InspectionDeclarationYiGo">
+            <summary>
+            鎶ユ浼犻�掔粰yigo绯荤粺鐨勫弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.InspectionDeclarationYiGo.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.InspectionDeclarationYiGo.SOID">
+            <summary>
+            YIGO绯荤粺id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.InspectionDeclarationYiGo.NO">
+            <summary>
+            鍏ュ簱閫氱煡鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.InspectionDeclarationYiGo.WMSNO">
+            <summary>
+            WMS鏀惰揣鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.InspectionDeclarationYiGo.Billdate">
+            <summary>
+            鏀惰揣鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.InspectionDeclarationYiGo.Dtls">
+            <summary>
+            鏀惰揣璇︽儏
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetInspectionResultInput">
+            <summary>
+            鑾峰彇鎶ユ缁撴灉鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultInput.NO">
+            <summary>
+            缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultInput.SOID">
+            <summary>
+            SOID  
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.InspectionDeclarationOutput">
+            <summary>
+            鎶ユ杩斿洖鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.InspectionDeclarationOutput.Result">
+            <summary>
+            缁撴灉鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.InspectionDeclarationOutput.Status">
+            <summary>
+            璇锋眰鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetInspectionResultOutput">
+            <summary>
+            鑾峰彇鎶ユ缁撴灉杩斿洖鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutput.Result">
+            <summary>
+            缁撴灉鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutput.Status">
+            <summary>
+            璇锋眰鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutput.Data">
+            <summary>
+            鏁版嵁
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetInspectionResultOutputData">
+            <summary>
+            鑾峰彇鎶ユ缁撴灉杩斿洖鏁版嵁
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputData.SOID">
+            <summary>
+            SOID
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputData.ON">
+            <summary>
+            鏀惰揣鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputData.Billdate">
+            <summary>
+            璐ㄦ鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputData.QCNO">
+            <summary>
+            璐ㄦ鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputData.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputData.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputData.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputData.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputData.TradeMode">
+            <summary>
+            璐告槗鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputData.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputData.StoreRoomname">
+            <summary>
+            浠撻棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputData.DeclarationCode">
+            <summary>
+            鎶ュ叧鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputData.Majorname">
+            <summary>
+            涓撲笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputData.Dtls">
+            <summary>
+            璇︽儏
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetInspectionResultOutputDataDetail">
+            <summary>
+            鑾峰彇鎶ユ缁撴灉杩斿洖鏁版嵁璇︽儏
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.OID">
+            <summary>
+            OID
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.FATQuality">
+            <summary>
+            璐ㄦ鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.Materialcode">
+            <summary>
+            鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.Unit">
+            <summary>
+            鍩烘湰鍗曚綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.SingleLength">
+            <summary>
+            鍗曟牴闀垮害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.TheoreticalWeight">
+            <summary>
+            鐞嗚閲嶉噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.Price">
+            <summary>
+            涓嶅惈绋庡崟浠�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.SumPrice">
+            <summary>
+            鎴愭湰閲戦
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.ProjectCode">
+            <summary>
+            椤圭洰缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.ContractCode">
+            <summary>
+            鍚堝悓缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.TradeName">
+            <summary>
+            鎶ュ叧鍝佸悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.ItemNo">
+            <summary>
+            鎶ュ叧椤瑰彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.CustomsUnitName">
+            <summary>
+            鎶ュ叧鍗曚綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.CustomsNum">
+            <summary>
+            鎶ュ叧鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.CustomsPrices">
+            <summary>
+            鎶ュ叧閲戦
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.SpecialNeeds">
+            <summary>
+            鐗规畩瑕佹眰
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.BatchNO_SCM">
+            <summary>
+            渚涘簲閾炬壒娆″彿
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsInspectOrderService">
+            <summary>
+            鎶ユ鍗�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsInspectOrderService.InspectionDeclaration(Admin.NET.Application.InspectionDeclarationYiGo)">
+            <summary>
+            鎶ユ涓婁紶
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsInspectOrderService.GetInspectionResult(Admin.NET.Application.GetInspectionResultInput)">
+            <summary>
+            鑾峰彇鎶ユ缁撴灉
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsInspectOrderService.Page(Admin.NET.Application.WmsOrderSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ鍏ュ簱閫氱煡鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsInspectOrderService.PageDetail(Admin.NET.Application.PageDetailInput)">
+            <summary>
+            鑾峰彇鍗曟嵁鏄庣粏
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsReceiptOrderDto">
+            <summary>
+            鏀惰揣鍗曡緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.SourceBillNo">
+            <summary>
+            閫佽揣閫氱煡鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.TradeMode">
+            <summary>
+            璐告槗鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.StoreRoomname">
+            <summary>
+            浠撻棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.DeclarationCode">
+            <summary>
+            鎶ュ叧鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.Majorname">
+            <summary>
+            涓撲笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDto.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsReceiptOrderSearch">
+            <summary>
+            鏀惰揣鍗曟煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.SourceBillNo">
+            <summary>
+            閫佽揣閫氱煡鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.TradeMode">
+            <summary>
+            璐告槗鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.StoreRoomname">
+            <summary>
+            浠撻棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.DeclarationCode">
+            <summary>
+            鎶ュ叧鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.Majorname">
+            <summary>
+            涓撲笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsReceiptOrderSearchNonPage">
+            <summary>
+            鏀惰揣鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.SourceBillNo">
+            <summary>
+            閫佽揣閫氱煡鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.TradeMode">
+            <summary>
+            璐告槗鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.StoreRoomname">
+            <summary>
+            浠撻棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.DeclarationCode">
+            <summary>
+            鎶ュ叧鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.Majorname">
+            <summary>
+            涓撲笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsReceiptOrderInput">
+            <summary>
+            鏀惰揣鍗曡緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.SourceBillNo">
+            <summary>
+            閫佽揣閫氱煡鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.TradeMode">
+            <summary>
+            璐告槗鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.StoreRoomname">
+            <summary>
+            浠撻棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.DeclarationCode">
+            <summary>
+            鎶ュ叧鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.Majorname">
+            <summary>
+            涓撲笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderInput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWmsReceiptOrderInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ReceiptageDetailInput">
+            <summary>
+            鏀惰揣鍗曡幏鍙栨槑缁嗗弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReceiptageDetailInput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PcConfirmReceiptInput.NO">
+            <summary>
+            鍗曟嵁缂栧彿  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PcConfirmReceiptInput.GetOrderDetailOutputList">
+            <summary>
+            璇︽儏鍙傛暟  
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsReceiptOrderOutput">
+            <summary>
+            鏀惰揣鍗曡緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Billdate">
+            <summary>
+            鍒涘缓鏃ユ湡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.SourceBillNo">
+            <summary>
+            閫佽揣閫氱煡鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Vendorcode">
+            <summary>
+            渚涘簲鍟嗙紪鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Vendorname">
+            <summary>
+            渚涘簲鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Companyname">
+            <summary>
+            鍏徃鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.WarehouseKeepername">
+            <summary>
+            浠撶鍛�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.TradeMode">
+            <summary>
+            璐告槗鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.StoreRoomname">
+            <summary>
+            浠撻棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.DeclarationCode">
+            <summary>
+            鎶ュ叧鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Majorname">
+            <summary>
+            涓撲笟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Dtls">
+            <summary>
+            瀵瑰簲YiGo绯荤粺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.ReceivingStatus">
+            <summary>
+            閫�璐х姸鎬�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.InspectionStatus">
+            <summary>
+            鎶ユ鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsReceiptOrderDetailOutput">
+            <summary>
+            鏀惰揣鍗曡鎯呰緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.Id">
+            <summary>
+            Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.OID">
+            <summary>
+            SCM鍏ュ簱閫氱煡鍗曟槑缁嗚鍞竴鏍囪瘑
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.OrderId">
+            <summary>
+            鍗曟嵁Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.Unit">
+            <summary>
+            鍩烘湰鍗曚綅    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.SingleLength">
+            <summary>
+            鍗曟牴闀垮害 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.TheoreticalWeight">
+            <summary>
+            鐞嗚閲嶉噺    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.Price">
+            <summary>
+            涓嶅惈绋庡崟浠�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.SumPrice">
+            <summary>
+            鎴愭湰閲戦    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.ContractCode">
+            <summary>
+            鍚堝悓缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.TradeName">
+            <summary>
+            鎶ュ叧鍝佸悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.ItemNo">
+            <summary>
+            鎶ュ叧椤瑰彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.CustomsUnitName">
+            <summary>
+            鎶ュ叧鍗曚綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.CustomsNum">
+            <summary>
+            鎶ュ叧鏁伴噺   
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.CustomsPrices">
+            <summary>
+            鎶ュ叧閲戦 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.SpecialNeeds">
+            <summary>
+            鐗规畩瑕佹眰
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.DeliveryQty">
+            <summary>
+            閫佽揣鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.ReceivedQty">
+            <summary>
+            鏀惰揣鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.ReceivingStatus">
+            <summary>
+            閫�璐х姸鎬�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.InspectionStatus">
+            <summary>
+            鎶ユ鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.addOrderInput">
+            <summary>
+            娴嬭瘯鍙傛暟
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsReceiptOrderService">
+            <summary>
+            鏀惰揣鍗曟湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsReceiptOrderService.Page(Admin.NET.Application.WmsReceiptOrderSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ鏀惰揣鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsReceiptOrderService.PageDetail(Admin.NET.Application.ReceiptageDetailInput)">
+            <summary>
+            鑾峰彇鍗曟嵁鏄庣粏
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsReceiptOrderService.PcConfirmReceipt(Admin.NET.Application.PcConfirmReceiptInput)">
+            <summary>
+            pc纭鏀惰揣
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsReceiptOrderService.ListNonPageAsync(Admin.NET.Application.WmsReceiptOrderSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈡敹璐у崟鍒楄〃
+            </summary>
+            <param name="input">鏀惰揣鍗曟煡璇㈠弬鏁�</param>
+            <returns>(鏀惰揣鍗�)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsReceiptOrderService.Add">
+            <summary>
+            澧炲姞鏀惰揣鍗�(yigo绯荤粺鑾峰彇)
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsReceiptOrderService.Delete(Admin.NET.Application.DeleteWmsReceiptOrderInput)">
+            <summary>
+            鍒犻櫎鏀惰揣鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsReceiptOrderService.Update(Admin.NET.Application.UpdateWmsReceiptOrderInput)">
+            <summary>
+            鏇存柊鏀惰揣鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsReceiptOrderService.Get(Admin.NET.Application.QueryeWmsReceiptOrderInput)">
+            <summary>
+            鑾峰彇鏀惰揣鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsReceiptOrderService.List(Admin.NET.Application.WmsReceiptOrderInput)">
+            <summary>
+            鑾峰彇鏀惰揣鍗曞垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsReceiptOrderService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆鏀惰揣鍗曞姛鑳�
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsReceiptOrderService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇鏀惰揣鍗曠殑Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsReceiptOrderService.ToExcelAsync(Admin.NET.Application.WmsReceiptOrderSearchNonPage)">
+            <summary>
+            鏍规嵁鏀惰揣鍗曟煡璇㈠弬鏁板鍑篍xcel
+            </summary>
+            <param name="input">鏀惰揣鍗曟煡璇㈠弬鏁�</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsSortOrderDto">
+            <summary>
+            鍒嗘嫞鍗曡緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderDto.OrderNo">
+            <summary>
+            鏉ユ簮鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderDto.OrderDetailID">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderDto.ContainerOrderNo">
+            <summary>
+            鍒嗘嫞缁勭洏鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderDto.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderDto.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderDto.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderDto.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderDto.ContainerCode">
+            <summary>
+            瀹瑰櫒缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderDto.SortQuantity">
+            <summary>
+            鍒嗘嫞鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderDto.ActualQuantity">
+            <summary>
+            瀹為檯鍒嗘嫞鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderDto.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderDto.SortStatus">
+            <summary>
+            鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderDto.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsSortOrderSearch">
+            <summary>
+            鍒嗘嫞鍗曟煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.OrderNo">
+            <summary>
+            鏉ユ簮鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.OrderDetailID">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.ContainerOrderNo">
+            <summary>
+            鍒嗘嫞缁勭洏鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.ContainerCode">
+            <summary>
+            瀹瑰櫒缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.SortQuantity">
+            <summary>
+            鍒嗘嫞鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.ActualQuantity">
+            <summary>
+            瀹為檯鍒嗘嫞鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.SortStatus">
+            <summary>
+            鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearch.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsSortOrderSearchNonPage">
+            <summary>
+            鍒嗘嫞鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.OrderNo">
+            <summary>
+            鏉ユ簮鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.OrderDetailID">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.ContainerOrderNo">
+            <summary>
+            鍒嗘嫞缁勭洏鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.ContainerCode">
+            <summary>
+            瀹瑰櫒缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.SortQuantity">
+            <summary>
+            鍒嗘嫞鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.ActualQuantity">
+            <summary>
+            瀹為檯鍒嗘嫞鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.SortStatus">
+            <summary>
+            鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsSortOrderInput">
+            <summary>
+            鍒嗘嫞鍗曡緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.OrderNo">
+            <summary>
+            鏉ユ簮鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.OrderDetailID">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.ContainerOrderNo">
+            <summary>
+            鍒嗘嫞缁勭洏鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.ContainerCode">
+            <summary>
+            瀹瑰櫒缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.SortQuantity">
+            <summary>
+            鍒嗘嫞鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.ActualQuantity">
+            <summary>
+            瀹為檯鍒嗘嫞鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.SortStatus">
+            <summary>
+            鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderInput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWmsSortOrderInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsSortOrderOutput">
+            <summary>
+            鍒嗘嫞鍗曡緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.OrderNo">
+            <summary>
+            鏉ユ簮鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.OrderDetailID">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.ContainerOrderNo">
+            <summary>
+            鍒嗘嫞缁勭洏鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.ContainerCode">
+            <summary>
+            瀹瑰櫒缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.SortQuantity">
+            <summary>
+            鍒嗘嫞鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.ActualQuantity">
+            <summary>
+            瀹為檯鍒嗘嫞鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.SortStatus">
+            <summary>
+            鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsSortOrderOutput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsSortOrderService">
+            <summary>
+            鍒嗘嫞鍗曟湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsSortOrderService.Page(Admin.NET.Application.WmsSortOrderSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ鍒嗘嫞鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsSortOrderService.ListNonPageAsync(Admin.NET.Application.WmsSortOrderSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈠垎鎷e崟鍒楄〃
+            </summary>
+            <param name="input">鍒嗘嫞鍗曟煡璇㈠弬鏁�</param>
+            <returns>(鍒嗘嫞鍗�)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsSortOrderService.Add(Admin.NET.Application.AddWmsSortOrderInput)">
+            <summary>
+            澧炲姞鍒嗘嫞鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsSortOrderService.Delete(Admin.NET.Application.DeleteWmsSortOrderInput)">
+            <summary>
+            鍒犻櫎鍒嗘嫞鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsSortOrderService.Update(Admin.NET.Application.UpdateWmsSortOrderInput)">
+            <summary>
+            鏇存柊鍒嗘嫞鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsSortOrderService.Get(Admin.NET.Application.QueryeWmsSortOrderInput)">
+            <summary>
+            鑾峰彇鍒嗘嫞鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsSortOrderService.List(Admin.NET.Application.WmsSortOrderInput)">
+            <summary>
+            鑾峰彇鍒嗘嫞鍗曞垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsSortOrderService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆鍒嗘嫞鍗曞姛鑳�
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsSortOrderService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇鍒嗘嫞鍗曠殑Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsSortOrderService.ToExcelAsync(Admin.NET.Application.WmsSortOrderSearchNonPage)">
+            <summary>
+            鏍规嵁鍒嗘嫞鍗曟煡璇㈠弬鏁板鍑篍xcel
+            </summary>
+            <param name="input">鍒嗘嫞鍗曟煡璇㈠弬鏁�</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsStockReturnOrderDto">
+            <summary>
+            閫�搴撳崟杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.MoveType">
+            <summary>
+            浜嬪姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.Billdate">
+            <summary>
+            閫�鏂欑敵璇锋棩鏈�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.WBSElementcode">
+            <summary>
+            棰嗙敤椤圭洰鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.BenefitingDepartcode">
+            <summary>
+            棰嗘枡閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.CostCenterID">
+            <summary>
+            鏀剁泭閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.FI_Client_Analysis_H">
+            <summary>
+            瀹㈡埛
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.PickerID">
+            <summary>
+            棰嗗彇浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.ConstructionTeamID">
+            <summary>
+            鏂藉伐闃�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsStockReturnOrderSearch">
+            <summary>
+            閫�搴撳崟鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.MoveType">
+            <summary>
+            浜嬪姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.Billdate">
+            <summary>
+            閫�鏂欑敵璇锋棩鏈�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.WBSElementcode">
+            <summary>
+            棰嗙敤椤圭洰鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.BenefitingDepartcode">
+            <summary>
+            棰嗘枡閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.CostCenterID">
+            <summary>
+            鏀剁泭閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.FI_Client_Analysis_H">
+            <summary>
+            瀹㈡埛
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.PickerID">
+            <summary>
+            棰嗗彇浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.ConstructionTeamID">
+            <summary>
+            鏂藉伐闃�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsStockReturnOrderSearchNonPage">
+            <summary>
+            閫�搴撳崟涓嶅垎椤垫煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.MoveType">
+            <summary>
+            浜嬪姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.Billdate">
+            <summary>
+            閫�鏂欑敵璇锋棩鏈�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.WBSElementcode">
+            <summary>
+            棰嗙敤椤圭洰鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.BenefitingDepartcode">
+            <summary>
+            棰嗘枡閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.CostCenterID">
+            <summary>
+            鏀剁泭閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.FI_Client_Analysis_H">
+            <summary>
+            瀹㈡埛
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.PickerID">
+            <summary>
+            棰嗗彇浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.ConstructionTeamID">
+            <summary>
+            鏂藉伐闃�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsStockReturnOrderInput">
+            <summary>
+            閫�搴撳崟杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.MoveType">
+            <summary>
+            浜嬪姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.Billdate">
+            <summary>
+            閫�鏂欑敵璇锋棩鏈�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.WBSElementcode">
+            <summary>
+            棰嗙敤椤圭洰鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.BenefitingDepartcode">
+            <summary>
+            棰嗘枡閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.CostCenterID">
+            <summary>
+            鏀剁泭閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.FI_Client_Analysis_H">
+            <summary>
+            瀹㈡埛
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.PickerID">
+            <summary>
+            棰嗗彇浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.ConstructionTeamID">
+            <summary>
+            鏂藉伐闃�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AddWmsStockReturnOrderInput.WmsStockReturnOrderDetails">
+            <summary>
+            閫�搴撴槑缁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsStockReturnOrderDetail">
+            <summary>
+            閫�搴撴槑缁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.OrderId">
+            <summary>
+            鍗曟嵁Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.OID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Unit">
+            <summary>
+            鍩烘湰鍗曚綅    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Length">
+            <summary>
+            鍗曟牴闀垮害 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Number">
+            <summary>
+            浠舵暟    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Batchno_SCM">
+            <summary>
+            SCM鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Batchno_WMS">
+            <summary>
+            WMS鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWmsStockReturnOrderInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.PageDetailStockReturnOrderInput">
+            <summary>
+            鑾峰彇鏄庣粏鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PageDetailStockReturnOrderInput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetTakeOrderDetailInput">
+            <summary>
+            鑾峰彇鍑哄簱瀹屾垚鏄庣粏鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetTakeOrderDetailInput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetTakeOrderDetailInput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetTakeOrderDetailInput.Batchno_SCM">
+            <summary>
+            SCM鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetTakeOrderDetailInput.Batchno_WMS">
+            <summary>
+            WMS鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetTakeOrderDetailInput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetTakeOrderDetailInput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetTakeOrderDetailInput.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.StockReturnGoodsReturnOrderInput">
+            <summary>
+            閫�鏂欎笂鏋剁粰yigo绯荤粺鐨勫弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInput.SOID">
+            <summary>
+            YIGO绯荤粺id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInput.NO">
+            <summary>
+            閫�鏂欑敵璇峰崟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInput.WMSNO">
+            <summary>
+            WMS鍏ュ簱鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInput.Billdate">
+             <summary>
+            鍑哄簱鏃堕棿
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInput.Dtls">
+            <summary>
+            閫�鏂欒鎯�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail">
+            <summary>
+            閫�璐т笅鏋剁粰yigo绯荤粺鐨勮鎯呭弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.OID">
+            <summary>
+            OID  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.DestStoreareacode">
+            <summary>
+            搴撳尯    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.DestLocationcode">
+            <summary>
+            鍌ㄤ綅    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.Batchno_SCM">
+            <summary>
+            SCM鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.Batchno_WMS">
+            <summary>
+            WMS鎵规鍙�    
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsStockReturnOrderOutput">
+            <summary>
+            閫�搴撳崟杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.MoveType">
+            <summary>
+            浜嬪姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.Billdate">
+            <summary>
+            閫�鏂欑敵璇锋棩鏈�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.WBSElementcode">
+            <summary>
+            棰嗙敤椤圭洰鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.BenefitingDepartcode">
+            <summary>
+            棰嗘枡閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.CostCenterID">
+            <summary>
+            鏀剁泭閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.FI_Client_Analysis_H">
+            <summary>
+            瀹㈡埛
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.PickerID">
+            <summary>
+            棰嗗彇浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.ConstructionTeamID">
+            <summary>
+            鏂藉伐闃�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.Dtls">
+            <summary>
+            瀵瑰簲YiGo绯荤粺
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsStockReturnOrderDetailOutput">
+            <summary>
+            閫�搴撳崟鑾峰彇鏄庣粏杩斿洖鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Id">
+            <summary>
+            Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.OrderId">
+            <summary>
+            鍗曟嵁Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.OID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Unit">
+            <summary>
+            鍩烘湰鍗曚綅    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Length">
+            <summary>
+            鍗曟牴闀垮害 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Number">
+            <summary>
+            浠舵暟    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Batchno_SCM">
+            <summary>
+            SCM鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Batchno_WMS">
+            <summary>
+            WMS鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsStockReturnOrderOutputByYiGO">
+            <summary>
+            yigo鑾峰彇閫�搴撳崟杩斿洖鍙傛暟
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.StockReturnGoodsReturnOrderOutput">
+            <summary>
+            閫�鏂欎笅鏋惰繑鍥炲弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderOutput.Result">
+            <summary>
+            缁撴灉鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderOutput.Status">
+            <summary>
+            璇锋眰鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsStockReturnOrderService">
+            <summary>
+            閫�搴撳崟鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnOrderService.Page(Admin.NET.Application.WmsStockReturnOrderSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ閫�搴撳崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnOrderService.PageDetail(Admin.NET.Application.PageDetailStockReturnOrderInput)">
+            <summary>
+            鑾峰彇鍗曟嵁鏄庣粏
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnOrderService.GetTakeOrderDetail(Admin.NET.Application.GetTakeOrderDetailInput)">
+            <summary>
+            鑾峰彇鍑哄簱瀹屾垚鐨勬槑缁�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnOrderService.Add">
+            <summary>
+            澧炲姞閫�搴撳崟(yigo绯荤粺鑾峰彇)
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnOrderService.StockReturnGoodsReturnOrder(Admin.NET.Application.StockReturnGoodsReturnOrderInput)">
+            <summary>
+            閫�鏂欎笂鏋舵帴鍙�(yigo绯荤粺)
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnOrderService.ListNonPageAsync(Admin.NET.Application.WmsStockReturnOrderSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈤��搴撳崟鍒楄〃
+            </summary>
+            <param name="input">閫�搴撳崟鏌ヨ鍙傛暟</param>
+            <returns>(閫�搴撳崟)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnOrderService.Delete(Admin.NET.Application.DeleteWmsStockReturnOrderInput)">
+            <summary>
+            鍒犻櫎閫�搴撳崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnOrderService.Update(Admin.NET.Application.UpdateWmsStockReturnOrderInput)">
+            <summary>
+            鏇存柊閫�搴撳崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnOrderService.Get(Admin.NET.Application.QueryeWmsStockReturnOrderInput)">
+            <summary>
+            鑾峰彇閫�搴撳崟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnOrderService.List(Admin.NET.Application.WmsStockReturnOrderInput)">
+            <summary>
+            鑾峰彇閫�搴撳崟鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnOrderService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆閫�搴撳崟鍔熻兘
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnOrderService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇閫�搴撳崟鐨凟xcel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnOrderService.ToExcelAsync(Admin.NET.Application.WmsStockReturnOrderSearchNonPage)">
+            <summary>
+            鏍规嵁閫�搴撳崟鏌ヨ鍙傛暟瀵煎嚭Excel
+            </summary>
+            <param name="input">閫�搴撳崟鏌ヨ鍙傛暟</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.WmsTakeMaterialOrderDto">
+            <summary>
+            棰嗘枡鍗曡緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.MoveType">
+            <summary>
+            浜嬪姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.Billdate">
+            <summary>
+            棰嗘枡鍗曠敵璇锋棩鏈�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.WBSElementcode">
+            <summary>
+            棰嗙敤椤圭洰鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.BenefitingDepartcode">
+            <summary>
+            棰嗘枡閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.CostCenterID">
+            <summary>
+            鍙楃泭閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.FI_Client_Analysis_H">
+            <summary>
+            瀹㈡埛
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.IsInnerCompany">
+            <summary>
+            鏄惁鍏徃闂翠氦鏄�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.PickerID">
+            <summary>
+            棰嗘枡浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.ConstructionTeamID">
+            <summary>
+            鏂藉伐闃�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.FjStock">
+            <summary>
+            鍒嗘嫞搴撳瓨
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.MaterialType">
+            <summary>
+            鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.Long">
+            <summary>
+            闀�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.Wide">
+            <summary>
+            瀹�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.High">
+            <summary>
+            楂�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.MaterialDensity">
+            <summary>
+            鐗╂枡瀵嗗害
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.InspectionMethod">
+            <summary>
+            妫�楠屾柟寮�;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.UnitType">
+            <summary>
+            鍗曚綅绫诲埆;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.UnitNo">
+            <summary>
+            鍗曚綅缂栧彿;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.StockNumber">
+            <summary>
+            瀹炵墿搴撳瓨鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.ContainerId">
+            <summary>
+            鎵樼洏Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.AreaId">
+            <summary>
+            搴撳尯Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.QuantityOfBill">
+            <summary>
+            璐﹂潰鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.Source">
+            <summary>
+            鍏ュ簱鏉ユ簮
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>]
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.ContractCode">
+            <summary>
+            鍚堝悓缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.FjStock.FjQty">
+            <summary>
+            鍒嗘嫞鏁伴噺
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsTakeMaterialOrderSearch">
+            <summary>
+            棰嗘枡鍗曟煡璇㈠弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.MoveType">
+            <summary>
+            浜嬪姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.Billdate">
+            <summary>
+            棰嗘枡鍗曠敵璇锋棩鏈�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.WBSElementcode">
+            <summary>
+            棰嗙敤椤圭洰鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.BenefitingDepartcode">
+            <summary>
+            棰嗘枡閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.CostCenterID">
+            <summary>
+            鍙楃泭閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.FI_Client_Analysis_H">
+            <summary>
+            瀹㈡埛
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.IsInnerCompany">
+            <summary>
+            鏄惁鍏徃闂翠氦鏄�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.PickerID">
+            <summary>
+            棰嗘枡浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.ConstructionTeamID">
+            <summary>
+            鏂藉伐闃�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage">
+            <summary>
+            棰嗘枡鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.MoveType">
+            <summary>
+            浜嬪姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.Billdate">
+            <summary>
+            棰嗘枡鍗曠敵璇锋棩鏈�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.WBSElementcode">
+            <summary>
+            棰嗙敤椤圭洰鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.BenefitingDepartcode">
+            <summary>
+            棰嗘枡閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.CostCenterID">
+            <summary>
+            鍙楃泭閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.FI_Client_Analysis_H">
+            <summary>
+            瀹㈡埛
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.IsInnerCompany">
+            <summary>
+            鏄惁鍏徃闂翠氦鏄�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.PickerID">
+            <summary>
+            棰嗘枡浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.ConstructionTeamID">
+            <summary>
+            鏂藉伐闃�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsTakeMaterialOrderInput">
+            <summary>
+            棰嗘枡鍗曡緭鍏ュ弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.MoveType">
+            <summary>
+            浜嬪姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.Billdate">
+            <summary>
+            棰嗘枡鍗曠敵璇锋棩鏈�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.WBSElementcode">
+            <summary>
+            棰嗙敤椤圭洰鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.BenefitingDepartcode">
+            <summary>
+            棰嗘枡閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.CostCenterID">
+            <summary>
+            鍙楃泭閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.FI_Client_Analysis_H">
+            <summary>
+            瀹㈡埛
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.IsInnerCompany">
+            <summary>
+            鏄惁鍏徃闂翠氦鏄� 1.鏄� 2.鍚�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.PickerID">
+            <summary>
+            棰嗘枡浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.ConstructionTeamID">
+            <summary>
+            鏂藉伐闃�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.UpdateWmsTakeMaterialOrderInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TakePageDetailInput">
+            <summary>
+            鑾峰彇鍗曟嵁鏄庣粏鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakePageDetailInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TakeMaterialStockSearch">
+            <summary>
+            鏌ヨ搴撳瓨鏄庣粏
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockSearch.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockSearch.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockSearch.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockSearch.ContractCode">
+            <summary>
+            鍚堝悓缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockSearch.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.DistributeOrderInput">
+            <summary>
+            涓嬪彂棰嗘枡鍗曞弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.DistributeOrderInput.Id">
+            <summary>
+            棰嗘枡鍗昳d
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ReturnTakeOrderInput">
+            <summary>
+            棰嗘枡涓嬫灦缁檡igo绯荤粺鐨勫弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderInput.Id">
+            <summary>
+            Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderInput.SOID">
+            <summary>
+            YIGO绯荤粺id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderInput.NO">
+            <summary>
+            鍏ュ簱閫氱煡鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderInput.WMSNO">
+            <summary>
+            WMS閫�璐у崟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderInput.Billdate">
+             <summary>
+            鍑哄簱鏃堕棿
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderInput.Dtls">
+            <summary>
+            鍑哄簱璇︽儏
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ReturnTakeOrderInputDetail">
+            <summary>
+            棰嗘枡涓嬫灦缁檡igo绯荤粺鐨勮鎯呭弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.OID">
+            <summary>
+            OID  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.DestStoreareacode">
+            <summary>
+            搴撳尯    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.DestLocationcode">
+            <summary>
+            鍌ㄤ綅    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.Batchno_SCM">
+            <summary>
+            SCM鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.Batchno_WMS">
+            <summary>
+            WMS鎵规鍙�    
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsTakeMaterialOrderOutput">
+            <summary>
+            棰嗘枡鍗曡緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.MoveType">
+            <summary>
+            浜嬪姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.Billdate">
+            <summary>
+            棰嗘枡鍗曠敵璇锋棩鏈�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.WBSElementcode">
+            <summary>
+            棰嗙敤椤圭洰鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.BenefitingDepartcode">
+            <summary>
+            棰嗘枡閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.CostCenterID">
+            <summary>
+            鍙楃泭閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.FI_Client_Analysis_H">
+            <summary>
+            瀹㈡埛
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.IsInnerCompany">
+            <summary>
+            鏄惁鍏徃闂翠氦鏄�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.PickerID">
+            <summary>
+            棰嗘枡浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.ConstructionTeamID">
+            <summary>
+            鏂藉伐闃�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.IssueState">
+            <summary>
+            绛炬牳鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.Dtls">
+            <summary>
+            瀵瑰簲YiGo绯荤粺
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput">
+            <summary>
+            鑾峰彇鏄庣粏杩斿洖鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.OrderId">
+            <summary>
+            鍗曟嵁Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.OID">
+            <summary>
+            SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.Unit">
+            <summary>
+            鍩烘湰鍗曚綅    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.DistributeQty">
+            <summary>
+            涓嬪彂鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.SingleLength">
+            <summary>
+            鍗曟牴闀垮害 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.Number">
+            <summary>
+            浠舵暟    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.Batchno_SCM">
+            <summary>
+            SCM鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.Batchno_WMS">
+            <summary>
+            WMS鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.WmsTakeMaterialOrder">
+            <summary>
+            鍗曟嵁涓昏〃
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.TakeMaterialStockOutput">
+            <summary>
+            鑾峰彇搴撳瓨杩斿洖鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.MaterialBatch">
+            <summary>
+            鐗╂枡鎵规
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.MaterialName">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.MaterialSpec">
+            <summary>
+            鐗╂枡瑙勬牸
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.UnitType">
+            <summary>
+            鍗曚綅绫诲埆;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.UnitNo">
+            <summary>
+            鍗曚綅缂栧彿;鏁版嵁瀛楀吀
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.StockNumber">
+            <summary>
+            瀹炵墿搴撳瓨鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.ContainerId">
+            <summary>
+            鎵樼洏Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.AreaId">
+            <summary>
+            搴撳尯Id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.QuantityOfBill">
+            <summary>
+            璐﹂潰鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.Source">
+            <summary>
+            鍏ュ簱鏉ユ簮
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.ContractCode">
+            <summary>
+            鍚堝悓缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.TakeMaterialStockOutput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.MaterialNoListOutput">
+            <summary>
+            搴撳瓨鍒嗙粍鐗╂枡鍙疯緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialNoListOutput.Code">
+            <summary>
+            Code
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialNoListOutput.MaterialNo">
+            <summary>
+            鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ProjectCodeListOutput">
+            <summary>
+            搴撳瓨鍒嗙粍椤圭洰缂栫爜杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ProjectCodeListOutput.Code">
+            <summary>
+            Code
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ProjectCodeListOutput.ProjectCode">
+            <summary>
+            鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsTakeMaterialOrderOutputByYiGO">
+            <summary>
+            yigo鑾峰彇棰嗘枡鍗曡繑鍥炲弬鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ReturnTakeOrderOutput">
+            <summary>
+            棰嗘枡涓嬫灦杩斿洖鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderOutput.Result">
+            <summary>
+            缁撴灉鎻忚堪
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReturnTakeOrderOutput.Status">
+            <summary>
+            璇锋眰鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsTakeMaterialOrderService">
+            <summary>
+            棰嗘枡鍗曟湇鍔�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.Page(Admin.NET.Application.WmsTakeMaterialOrderSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ棰嗘枡鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.ListNonPageAsync(Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage)">
+            <summary>
+            涓嶅垎椤垫煡璇㈤鏂欏崟鍒楄〃
+            </summary>
+            <param name="input">棰嗘枡鍗曟煡璇㈠弬鏁�</param>
+            <returns>(棰嗘枡鍗�)瀹炰緥鍒楄〃</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.PageDetail(Admin.NET.Application.TakePageDetailInput)">
+            <summary>
+            鑾峰彇鍗曟嵁鏄庣粏
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.StockPage(Admin.NET.Application.TakeMaterialStockSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ鐗╂枡搴撳瓨
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.GetMaterialNoList">
+            <summary>
+            鐗╂枡缂栫爜涓嬫媺妗�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.GetProjectCodeList">
+            <summary>
+            椤圭洰缂栫爜涓嬫媺妗�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.Add(Admin.NET.Application.AddWmsTakeMaterialOrderInput)">
+            <summary>
+            澧炲姞棰嗘枡鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.TakeOrderAdd">
+            <summary>
+            澧炲姞棰嗘枡鍗�(yigo绯荤粺鑾峰彇)
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.ReturnTakeOrder(Admin.NET.Application.ReturnTakeOrderInput)">
+            <summary>
+            棰嗘枡涓嬫灦鎺ュ彛(yigo绯荤粺)
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.DistributeOrder(Admin.NET.Application.DistributeOrderInput)">
+            <summary>
+            涓嬪彂棰嗘枡鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.Delete(Admin.NET.Application.DeleteWmsTakeMaterialOrderInput)">
+            <summary>
+            鍒犻櫎棰嗘枡鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.Update(Admin.NET.Application.UpdateWmsTakeMaterialOrderInput)">
+            <summary>
+            鏇存柊棰嗘枡鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.Get(Admin.NET.Application.QueryeWmsTakeMaterialOrderInput)">
+            <summary>
+            鑾峰彇棰嗘枡鍗�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.List(Admin.NET.Application.WmsTakeMaterialOrderInput)">
+            <summary>
+            鑾峰彇棰嗘枡鍗曞垪琛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+            <summary>
+            Excel妯℃澘瀵煎叆棰嗘枡鍗曞姛鑳�
+            </summary>
+            <param name="file">Excel妯℃澘鏂囦欢</param>
+            <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+            <returns>瀵煎叆鐨勮褰曟暟</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.DownloadExcelTemplate(System.String)">
+            <summary>
+            鏍规嵁鐗堟湰涓嬭浇棰嗘枡鍗曠殑Excel瀵煎叆妯℃澘
+            </summary>
+            <param name="version">妯℃澘鐗堟湰</param>
+            <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.ToExcelAsync(Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage)">
+            <summary>
+            鏍规嵁棰嗘枡鍗曟煡璇㈠弬鏁板鍑篍xcel
+            </summary>
+            <param name="input">棰嗘枡鍗曟煡璇㈠弬鏁�</param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
+        <member name="T:Admin.NET.Application.CallEmptyService">
+            <summary>
+            Pda绌烘墭鍑哄簱
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.CallEmptyService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderType,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.CallEmptyService.PdaContainerOut(Admin.NET.Application.PdaContainerOutInput)">
+            <summary>
+            鎻愪氦鍑哄簱
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.PdaContainerOutInput">
+            <summary>
+            绌烘墭鍑哄簱鍏ュ弬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PdaContainerOutInput.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetSortInfoInput">
+            <summary>
+            鑾峰彇鎵樼洏鐗╂枡鍒嗘嫞鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetSortInfoInput.ContainerCode">
+            <summary>
+            瀹瑰櫒缂栧彿
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.SortPdaPageInput">
+            <summary>
+            鍒嗛〉鑾峰彇鍑哄簱鍗�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageInput.No">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.SortPdaDetailPageInput">
+            <summary>
+            鏍规嵁鍑哄簱鍗曡幏鍙栧垎鎷f槑缁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageInput.No">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetSortInfoOutput">
+            <summary>
+            鑾峰彇鎵樼洏鐗╂枡鍒嗘嫞鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetSortInfoOutput.WmsContainer">
+            <summary>
+            瀹瑰櫒
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetSortInfoOutput.WmsSortOrderList">
+            <summary>
+            鍒嗘嫞淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.SortPdaPageOutput">
+            <summary>
+            鍒嗛〉鑾峰彇鍒嗘嫞鍗�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.OrderLargeCategory">
+            <summary>
+            鍗曟嵁澶х被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.MoveType">
+            <summary>
+            浜嬪姟绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.SOID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.Billdate">
+            <summary>
+            棰嗘枡鍗曠敵璇锋棩鏈�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.WBSElementcode">
+            <summary>
+            棰嗙敤椤圭洰鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.BenefitingDepartcode">
+            <summary>
+            棰嗘枡閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.CostCenterID">
+            <summary>
+            鍙楃泭閮ㄩ棬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.FI_Client_Analysis_H">
+            <summary>
+            瀹㈡埛
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.IsInnerCompany">
+            <summary>
+            鏄惁鍏徃闂翠氦鏄�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.PickerID">
+            <summary>
+            棰嗘枡浜�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.WarehouseCentername">
+            <summary>
+            浠撳偍涓績
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.Companyname">
+            <summary>
+            鍏徃
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.ConstructionTeamID">
+            <summary>
+            鏂藉伐闃�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaPageOutput.CreatedTime">
+            <summary>
+            鏃堕棿
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.SortPdaDetailPageOutput">
+            <summary>
+            鏍规嵁鍑哄簱鍗曡幏鍙栧垎鎷e崟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.OrderNo">
+            <summary>
+            鏉ユ簮鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.OrderDetailID">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.ContainerOrderNo">
+            <summary>
+            鍒嗘嫞缁勭洏鍗曞彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.ContainerCode">
+            <summary>
+            瀹瑰櫒缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.SortQuantity">
+            <summary>
+            鍒嗘嫞鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.ActualQuantity">
+            <summary>
+            瀹為檯鍒嗘嫞鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.Remarks">
+            <summary>
+            澶囨敞
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.SortStatus">
+            <summary>
+            鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.MaterialSortingService">
+            <summary>
+            鐗╂枡鍒嗘嫞鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.MaterialSortingService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsSortOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTakeMaterialOrder,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.MaterialSortingService.GetSortInfo(Admin.NET.Application.GetSortInfoInput)">
+            <summary>
+            鎵弿鍒嗘嫞鎵樼洏
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MaterialSortingService.SortSure(Admin.NET.Application.GetSortInfoOutput)">
+            <summary>
+            鍒嗘嫞纭
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MaterialSortingService.SortPdaPage(Admin.NET.Application.SortPdaPageInput)">
+            <summary>
+            pda鍑哄簱鍗曟煡璇�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.MaterialSortingService.SortPdaDetailPage(Admin.NET.Application.SortPdaDetailPageInput)">
+            <summary>
+            pda鏍规嵁鍑哄簱鍗曡幏鍙栧垎鎷e崟鏄庣粏
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.AutomaticWarehouseService">
+            <summary>
+            Pda鍗婅嚜鍔ㄥ叆搴�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.AutomaticWarehouseService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AutomaticWarehouseInput">
+            <summary>
+            鏍规嵁鎵规鍙疯幏鍙栦换鍔″弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AutomaticWarehouseInput.Batch">
+            <summary>
+            鎵规鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.PdaGetWarehouseEntranceInput">
+            <summary>
+            鏍规嵁id鑾峰彇鍏ュ簱鍙d笅鎷夋
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PdaGetWarehouseEntranceInput.Id">
+            <summary>
+            id
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.PdaAutomaticWarehouseInput">
+            <summary>
+            鏍规嵁鍗曟嵁缂栧彿鑾峰彇浠诲姟鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PdaAutomaticWarehouseInput.Batch">
+            <summary>
+            鎵规鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PdaAutomaticWarehouseInput.SerialNo">
+            <summary>
+            娴佹按鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PdaAutomaticWarehouseInput.EntranceCode">
+            <summary>
+            鍏ュ簱鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.CallBackInput">
+            <summary>
+            鍙嶉浠诲姟鐘舵�佸弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CallBackInput.TaskNo">
+            <summary>
+            浠诲姟鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CallBackInput.DeviceType">
+            <summary>
+            璁惧绫诲瀷
+            杈撻�佺嚎 = 1,
+            鍫嗗灈鏈� = 2,
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CallBackInput.TaskState">
+            <summary>
+            璁惧鎵ц鐘舵��
+            杈撻�佺嚎鎵ц涓� = 1,
+            杈撻�佺嚎瀹屾垚 = 2,
+            鍫嗗灈鏈烘墽琛屼腑 = 3,
+            鍫嗗灈鏈哄畬鎴� = 4,
+             </summary>
+        </member>
+        <member name="T:Admin.NET.Application.AutomaticWarehouseOutput">
+            <summary>
+            鏍规嵁鍗曟嵁缂栧彿鑾峰彇浠诲姟杩斿洖鍊�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.MaterialNo">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.Batch">
+            <summary>
+            鎵规    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.SerialNo">
+            <summary>
+            娴佹按鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.Long">
+            <summary>
+            闀�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.Wide">
+            <summary>
+            瀹�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.High">
+            <summary>
+            楂�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.PreferredPort">
+            <summary>
+            鍏ュ簱鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.OutEntranceListDefaultCodeOutput">
+            <summary>
+            杩斿洖鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OutEntranceListDefaultCodeOutput.DefaultCode">
+            <summary>
+            榛樿鍏ュ簱鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OutEntranceListDefaultCodeOutput.OutEntranceListOutputList">
+            <summary>
+            鍏ュ簱鍙e悕绉�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.OutEntranceListOutput">
+            <summary>
+            鑾峰彇鍏ュ簱鍙d笅鎷夋杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OutEntranceListOutput.Code">
+            <summary>
+            鍏ュ簱鍙ode
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.OutEntranceListOutput.Name">
+            <summary>
+            鍏ュ簱鍙e悕绉�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.CallBackOutput">
+            <summary>
+            鍙嶉浠诲姟鐘舵�佽緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.CallBackOutput.LocationCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GroupDiskOutWarehouseInput">
+            <summary>
+            鎵撳寘淇℃伅鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GroupDiskOutWarehouseInput.OutputEntrance">
+            <summary>
+            鍑哄簱鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GroupDiskOutWarehouseInput.PlcMaterialNoList">
+            <summary>
+            PLC鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GroupDiskOutWarehouseInput.WcsMaterialNoList">
+            <summary>
+            WMS鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.PackOutWarehouseInput">
+            <summary>
+            鎵撳寘淇℃伅鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PackOutWarehouseInput.PackCode">
+            <summary>
+            鎵撳寘鏍囩
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PackOutWarehouseInput.MaterialNoList">
+            <summary>
+            鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.MaterialNoList">
+            <summary>
+            鐗╂枡缂栫爜list
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.MaterialNoList.MaterialNo">
+            <summary>
+            鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetPackInfomationInput">
+            <summary>
+            鏍规嵁鍑哄簱鍙h幏鍙栫爜鍨涙暟鎹�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetPackInfomationInput.OutputEntrance">
+            <summary>
+            鍑哄簱鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GroupDiskOutWarehouseOutput">
+            <summary>
+            鎵撳寘淇℃伅杩斿洖鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GroupDiskOutWarehouseOutput.OrderNo">
+            <summary>
+            鍗曟嵁缂栧彿  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GroupDiskOutWarehouseOutput.OrderSubclass">
+            <summary>
+            鍗曟嵁灏忕被
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GroupDiskOutWarehouseOutput.GroupDiskOutWarehouseList">
+            <summary>
+            鎵撳寘淇℃伅list
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GroupDiskOutWarehouse">
+            <summary>
+            鎵撳寘淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GroupDiskOutWarehouse.MaterialNo">
+            <summary>
+            鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GroupDiskOutWarehouse.Long">
+            <summary>
+            闀�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GroupDiskOutWarehouse.Wide">
+            <summary>
+            瀹�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GroupDiskOutWarehouse.High">
+            <summary>
+            楂�    
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GroupDiskOutWarehouseService">
+            <summary>
+            Pda缁勭洏鍑哄簱
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.GroupDiskOutWarehouseService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.LesPackWarehouse,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetContainerInput">
+            <summary>
+            鑾峰彇鎵樼洏鍏ュ弬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetContainerInput.ContainerCode">
+            <summary>
+            鎵樼洏鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GroupDiskInput">
+             <summary>
+            缁勭洏鍏ュ弬
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GroupDiskInput.ContainerCode">
+            <summary>
+            鎵樼洏
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GroupDiskInput.WmsMaterials">
+            <summary>
+            鐗╂枡淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ReceiptMaterialContainerInput">
+            <summary>
+            缁勭洏鐗╂枡淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReceiptMaterialContainerInput.Id">
+            <summary>
+            鏄庣粏id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReceiptMaterialContainerInput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReceiptMaterialContainerInput.Materialcode">
+            <summary>
+            鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ReceiptMaterialContainerInput.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.PdaInWarehouseInput">
+             <summary>
+            鎻愪氦鍏ュ簱鍏ュ弬
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PdaInWarehouseInput.ContainerCode">
+            <summary>
+            鎵樼洏
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PdaInWarehouseInput.WmsMaterials">
+            <summary>
+            鐗╂枡淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.PadGetMaterialInput">
+             <summary>
+            鑾峰彇鐗╂枡鍏ュ弬
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialInput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetContainerOutput">
+            <summary>
+            鑾峰彇鎵樼洏鍏ュ弬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetContainerOutput.ContainerCode">
+            <summary>
+            鎵樼洏鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetContainerOutput.WmsContainer">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetContainerOutput.WmsMaterials">
+            <summary>
+            鐗╂枡淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GroupDiskOutput">
+            <summary>
+            浠呮敹璐э紙缁勭洏锛夋垚鍔熻緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GroupDiskOutput.Containercode">
+            <summary>
+            鎵樼洏
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GroupDiskOutput.OrderNo">
+            <summary>
+            缁勭洏鍗曟嵁
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.PadGetMaterialOutput">
+            <summary>
+            鐗╂枡杩斿洖鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.Id">
+            <summary>
+            Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.OrderId">
+            <summary>
+            鍗曟嵁Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.Unit">
+            <summary>
+            鍩烘湰鍗曚綅    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.SingleLength">
+            <summary>
+            鍗曟牴闀垮害 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.TheoreticalWeight">
+            <summary>
+            鐞嗚閲嶉噺    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.Price">
+            <summary>
+            涓嶅惈绋庡崟浠�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.SumPrice">
+            <summary>
+            鎴愭湰閲戦    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.ContractCode">
+            <summary>
+            鍚堝悓缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.TradeName">
+            <summary>
+            鎶ュ叧鍝佸悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.ItemNo">
+            <summary>
+            鎶ュ叧椤瑰彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.CustomsUnitName">
+            <summary>
+            鎶ュ叧鍗曚綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.CustomsNum">
+            <summary>
+            鎶ュ叧鏁伴噺   
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.CustomsPrices">
+            <summary>
+            鎶ュ叧閲戦 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.SpecialNeeds">
+            <summary>
+            鐗规畩瑕佹眰
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.PadGetMaterialOutput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsInWarehouseService">
+            <summary>
+            Pda鐗╂枡鍏ュ簱
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsInWarehouseService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderType,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsInWarehouseService.CheckTray(Admin.NET.Application.GetContainerInput)">
+            <summary>
+            鑾峰彇鎵樼洏
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsInWarehouseService.PadGetMaterial(Admin.NET.Application.PadGetMaterialInput)">
+            <summary>
+            閫氳繃鍗曟嵁鍙疯幏鍙栨槑缁�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsInWarehouseService.GroupDisk(Admin.NET.Application.GroupDiskInput)">
+            <summary>
+            鎵ц浠呮敹璐ф搷浣滐紙缁勭洏锛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsInWarehouseService.PdaInWarehouse(Admin.NET.Application.PdaInWarehouseInput)">
+            <summary>
+            鎻愪氦鍏ュ簱
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.GetOrderDetailInput">
+            <summary>
+            鍗曟嵁鍙峰弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailInput.NO">
+            <summary>
+            鍗曟嵁缂栧彿  
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.ConfirmReceiptInput">
+            <summary>
+            纭鏀惰揣鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ConfirmReceiptInput.NO">
+            <summary>
+            鍗曟嵁缂栧彿  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.ConfirmReceiptInput.GetOrderDetailOutputList">
+            <summary>
+            璇︽儏鍙傛暟  
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetOrderDetailOutput">
+            <summary>
+            鍗曟嵁鍙疯繑鍥炲弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.Id">
+            <summary>
+            Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.OrderId">
+            <summary>
+            鍗曟嵁Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.Unit">
+            <summary>
+            鍩烘湰鍗曚綅    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.SingleLength">
+            <summary>
+            鍗曟牴闀垮害 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.TheoreticalWeight">
+            <summary>
+            鐞嗚閲嶉噺    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.Price">
+            <summary>
+            涓嶅惈绋庡崟浠�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.SumPrice">
+            <summary>
+            鎴愭湰閲戦    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.ContractCode">
+            <summary>
+            鍚堝悓缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.TradeName">
+            <summary>
+            鎶ュ叧鍝佸悕
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.ItemNo">
+            <summary>
+            鎶ュ叧椤瑰彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.CustomsUnitName">
+            <summary>
+            鎶ュ叧鍗曚綅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.CustomsNum">
+            <summary>
+            鎶ュ叧鏁伴噺   
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.CustomsPrices">
+            <summary>
+            鎶ュ叧閲戦 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.SpecialNeeds">
+            <summary>
+            鐗规畩瑕佹眰
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.OrderStatus">
+            <summary>
+            鍗曟嵁鐘舵��
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.DeliveryQty">
+            <summary>
+            閫佽揣鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetOrderDetailOutput.ReceivedQty">
+            <summary>
+            鏀惰揣鏁伴噺
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsPdaReceiptOrderService">
+            <summary>
+            Pda鏀惰揣
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPdaReceiptOrderService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsReceiptOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsReceiptOrder,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPdaReceiptOrderService.GetOrderDetail(Admin.NET.Application.GetOrderDetailInput)">
+            <summary>
+            鏍规嵁鍗曟嵁鍙疯幏鍙栨槑缁�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsPdaReceiptOrderService.ConfirmReceipt(Admin.NET.Application.ConfirmReceiptInput)">
+            <summary>
+            pda纭鏀惰揣
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.StockReturnGetContainerInput">
+            <summary>
+            鑾峰彇鎵樼洏鍏ュ弬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGetContainerInput.ContainerCode">
+            <summary>
+            鎵樼洏鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.StockReturnGroupDiskInput">
+             <summary>
+            缁勭洏鍏ュ弬
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGroupDiskInput.ContainerCode">
+            <summary>
+            鎵樼洏
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGroupDiskInput.WmsMaterials">
+            <summary>
+            鐗╂枡淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.StockReturnReceiptMaterialContainerInput">
+            <summary>
+            缁勭洏鐗╂枡淇℃伅
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnReceiptMaterialContainerInput.Id">
+            <summary>
+            鏄庣粏id
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnReceiptMaterialContainerInput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnReceiptMaterialContainerInput.Materialcode">
+            <summary>
+            鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnReceiptMaterialContainerInput.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.StockReturnPdaInWarehouseInput">
+             <summary>
+            鎻愪氦鍏ュ簱鍏ュ弬
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPdaInWarehouseInput.ContainerCode">
+            <summary>
+            鎵樼洏
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPdaInWarehouseInput.WmsMaterials">
+            <summary>
+            鐗╂枡淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.StockReturnPadGetMaterialInput">
+             <summary>
+            鑾峰彇鐗╂枡鍏ュ弬
+             </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPadGetMaterialInput.NO">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.StockReturnGetContainerOutput">
+            <summary>
+            鑾峰彇鎵樼洏鍏ュ弬
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGetContainerOutput.ContainerCode">
+            <summary>
+            鎵樼洏鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGetContainerOutput.WmsContainer">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGetContainerOutput.WmsMaterials">
+            <summary>
+            鐗╂枡淇℃伅
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.StockReturnGroupDiskOutput">
+            <summary>
+            浠呮敹璐э紙缁勭洏锛夋垚鍔熻緭鍑哄弬鏁�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGroupDiskOutput.Containercode">
+            <summary>
+            鎵樼洏
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnGroupDiskOutput.OrderNo">
+            <summary>
+            缁勭洏鍗曟嵁
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.StockReturnPadGetMaterialOutput">
+            <summary>
+            鐗╂枡杩斿洖鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.OrderId">
+            <summary>
+            鍗曟嵁Id  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.OID">
+            <summary>
+            涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Unit">
+            <summary>
+            鍩烘湰鍗曚綅    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Length">
+            <summary>
+            鍗曟牴闀垮害 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Number">
+            <summary>
+            浠舵暟    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Batchno_SCM">
+            <summary>
+            SCM鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Batchno_WMS">
+            <summary>
+            WMS鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WmsStockReturnWarehouseService">
+            <summary>
+            Pda鐗╂枡閫�搴�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnWarehouseService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsStockReturnOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsStockReturnOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderType,Furion.DatabaseAccessor.MasterDbContextLocator})">
+            <summary>
+            鏋勯�犲嚱鏁�
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnWarehouseService.CheckTray(Admin.NET.Application.StockReturnGetContainerInput)">
+            <summary>
+            鑾峰彇鎵樼洏
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnWarehouseService.PadGetMaterial(Admin.NET.Application.StockReturnPadGetMaterialInput)">
+            <summary>
+            閫氳繃鍗曟嵁鍙疯幏鍙栨槑缁�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnWarehouseService.GroupDisk(Admin.NET.Application.StockReturnGroupDiskInput)">
+            <summary>
+            鎵ц浠呮敹璐ф搷浣滐紙缁勭洏锛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Application.WmsStockReturnWarehouseService.PdaInWarehouse(Admin.NET.Application.StockReturnPdaInWarehouseInput)">
+            <summary>
+            鎻愪氦鍏ュ簱
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.GetWareHouseInReportFormsInput">
+            <summary>
+            鍏ュ簱鎶ヨ〃杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.Batchno_SCM">
+            <summary>
+            SCM鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.Batchno_WMS">
+            <summary>
+            WMS鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetWareHouseInReportFormsOutput">
+            <summary>
+            鍏ュ簱鎶ヨ〃杩斿洖鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.OID">
+            <summary>
+            SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Unit">
+            <summary>
+            鍩烘湰鍗曚綅    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.DistributeQty">
+            <summary>
+            涓嬪彂鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.SingleLength">
+            <summary>
+            鍗曟牴闀垮害 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Number">
+            <summary>
+            浠舵暟    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Batchno_SCM">
+            <summary>
+            SCM鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Batchno_WMS">
+            <summary>
+            WMS鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.CreatedTime">
+            <summary>
+            鍑哄簱鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.UpdatedTime">
+            <summary>
+            鍑哄簱瀹屾垚鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Aisle">
+            <summary>
+            宸烽亾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.WmsTakeMaterialOrder">
+            <summary>
+            鍗曟嵁涓昏〃
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WareHouseInReportFormsService">
+            <summary>
+            鍏ュ簱鎶ヨ〃
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WareHouseInReportFormsService.GetWareHouseOutReportForms(Admin.NET.Application.GetWareHouseInReportFormsInput)">
+            <summary>
+            鍒嗛〉鏌ヨ鍏ュ簱鎶ヨ〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.GetWareHouseOutReportFormsInput">
+            <summary>
+            鍑哄簱鎶ヨ〃杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.Batchno_SCM">
+            <summary>
+            SCM鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.Batchno_WMS">
+            <summary>
+            WMS鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.GetWareHouseOutReportFormsOutput">
+            <summary>
+            鍑哄簱鎶ヨ〃杩斿洖鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.OID">
+            <summary>
+            SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Materialcode">
+            <summary>
+            鐗╂枡缂栧彿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Materialname">
+            <summary>
+            鐗╂枡鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Unit">
+            <summary>
+            鍩烘湰鍗曚綅    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Qty">
+            <summary>
+            鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.DistributeQty">
+            <summary>
+            涓嬪彂鏁伴噺
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.SingleLength">
+            <summary>
+            鍗曟牴闀垮害 
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Number">
+            <summary>
+            浠舵暟    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Batchno_SCM">
+            <summary>
+            SCM鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Batchno_WMS">
+            <summary>
+            WMS鎵规鍙�    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.ProjectCode">
+            <summary>
+            椤圭洰缂栧彿    
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.TACode">
+            <summary>
+            TA鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.PartCode">
+            <summary>
+            鍒嗘鍙�
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.ContainerCode">
+            <summary>
+            鎵樼洏缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.PlaceCode">
+            <summary>
+            搴撲綅缂栫爜
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.CreatedTime">
+            <summary>
+            鍑哄簱鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.UpdatedTime">
+            <summary>
+            鍑哄簱瀹屾垚鏃堕棿
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Aisle">
+            <summary>
+            宸烽亾
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.WmsTakeMaterialOrder">
+            <summary>
+            鍗曟嵁涓昏〃
+            </summary>
+        </member>
+        <member name="T:Admin.NET.Application.WareHouseOutReportFormsService">
+            <summary>
+            鍑哄簱鎶ヨ〃
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.WareHouseOutReportFormsService.GetWareHouseOutReportForms(Admin.NET.Application.GetWareHouseOutReportFormsInput)">
+            <summary>
+            鍒嗛〉鏌ヨ鍑哄簱鎶ヨ〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Admin.NET.Application.SpareTimeDemo">
+            <summary>
+            瀹氭椂浠诲姟demo
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.SpareTimeDemo.ExecSql(Furion.TaskScheduler.SpareTimer,System.Int64)">
+            <summary>
+            3绉掑悗鍑哄嫟缁熻
+            </summary>
+            <param name="timer">鍙傛暟</param>
+            <param name="count">娆℃暟</param>
+        </member>
+        <member name="T:Admin.NET.Application.Startup">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Application.Startup.ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
+            <summary>
+            
+            </summary>
+            <param name="services"></param>
+        </member>
+        <member name="M:Admin.NET.Application.Startup.Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Hosting.IWebHostEnvironment)">
+            <summary>
+            
+            </summary>
+            <param name="app"></param>
+            <param name="env"></param>
+        </member>
+        <member name="T:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.NameSpace">
+            <summary>
+            鍛藉悕绌洪棿
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.ModuleName">
+            <summary>
+            妯″潡鍚嶏紝鐢ㄤ簬鐢熸垚鐨勬枃浠跺す鐩綍 銆怑ditby shaocx,2024-04-07銆�
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.TableName">
+            <summary>
+            琛ㄥ悕
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.ClassName">
+            <summary>
+            绫诲悕
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.TableDesc">
+            <summary>
+            琛ㄦ弿杩�
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.DatabaseName">
+            <summary>
+            鏁版嵁搴撳悕绉�
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.AuthorName">
+            <summary>
+            浣滆�呭悕
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.BusName">
+            <summary>
+            涓氬姟鍚�
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.ProName">
+            <summary>
+            绋嬪簭闆�
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.FormDesign">
+            <summary>
+            鍔ㄦ�佽〃鍗�
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.Fields">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.DataBase">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field.Id">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field.ColumnComment">
+            <summary>
+            瀛楁澶囨敞
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field.FieldName">
+            <summary>
+            瀛楁鍚嶇О
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field.NetType">
+            <summary>
+            鏁版嵁绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field.DtoNetType">
+            <summary>
+            浼犲叆鏁版嵁绫诲瀷
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field.DbParam">
+            <summary>
+            鏁版嵁绫诲瀷琛ュ厖鍙傛暟
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field.IsRequired">
+            <summary>
+            鏄惁蹇呭~
+            </summary>
+        </member>
+        <member name="T:Furion.Extras.Admin.NET.Service.LowCode.Dto.LowCodePageInput">
+            <summary>
+            浠g爜鐢熸垚鍙傛暟绫�
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.LowCodePageInput.BusName">
+            <summary>
+            涓氬姟鍚嶇О
+            </summary>
+        </member>
+        <member name="T:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.AuthorName">
+            <summary>
+            浣滆�呭鍚�
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.GenerateType">
+            <summary>
+            鐢熸垚鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.DatabaseName">
+            <summary>
+            鏁版嵁搴撳悕
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.NameSpace">
+            <summary>
+            鍛藉悕绌洪棿
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.ModuleName">
+            <summary>
+            妯″潡璺緞
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.BusName">
+            <summary>
+            涓氬姟鍚�
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.MenuApplication">
+            <summary>
+            鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.MenuPid">
+            <summary>
+            鑿滃崟缂栫爜
+            </summary>
+        </member>
+        <member name="T:Furion.Extras.Admin.NET.Service.LowCode.Dto.DeleteLowCodeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="T:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.Id">
+            <summary>
+            浠g爜鐢熸垚鍣↖d
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.AuthorName">
+            <summary>
+            浣滆�呭鍚�
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.GenerateType">
+            <summary>
+            鐢熸垚鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.DatabaseName">
+            <summary>
+            鏁版嵁搴撳悕
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.NameSpace">
+            <summary>
+            鍛藉悕绌洪棿
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.ModuleName">
+            <summary>
+            妯″潡璺緞
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.BusName">
+            <summary>
+            涓氬姟鍚�
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.MenuApplication">
+            <summary>
+            鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.MenuPid">
+            <summary>
+            鑿滃崟缂栫爜
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.FormDesignType">
+            <summary>
+            鍔ㄦ�佽〃鍗曠被鍨�
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.FormDesign">
+            <summary>
+            鍔ㄦ�佽〃鍗�
+            </summary>
+        </member>
+        <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.Databases">
+            <summary>
+            琛ㄥ崟杞暟鎹粨鏋�
+            </summary>
+        </member>
+        <member name="T:Furion.Extras.Admin.NET.Service.LowCode.GenEntityComparer">
+            <summary>
+            
+            </summary>
+        </member>
+        <member name="M:Furion.Extras.Admin.NET.Service.LowCode.GenEntityComparer.Equals(Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity,Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity)">
+            <summary>
+            
+            </summary>
+            <param name="x"></param>
+            <param name="y"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Furion.Extras.Admin.NET.Service.LowCode.GenEntityComparer.GetHashCode(Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity)">
+            <summary>
+            
+            </summary>
+            <param name="obj"></param>
+            <returns></returns>
+        </member>
+    </members>
+</doc>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/CodeGenHelper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/CodeGenHelper.cs
new file mode 100644
index 0000000..d331036
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/CodeGenHelper.cs
@@ -0,0 +1,53 @@
+锘縰sing Admin.NET.Core;
+using Furion.FriendlyException;
+using System.Collections.Generic;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 浠g爜鐢熸垚甯姪绫�
+    /// </summary>
+    public class CodeGenHelper
+    {
+
+        /// <summary>
+        /// 鏍¢獙 浠g爜閰嶇疆
+        /// </summary>
+        /// <param name="list"></param>
+        public static void ValidateCodeGenConfig(List<SysCodeGenConfig> list)
+        {
+            //濡傛灉鏄笅鎷夋锛岄偅涔堝氨蹇呴』閫夋嫨瀛楀吀锛併�怑ditby shaocx,2024-04-16銆�
+            foreach (var item in list)
+            {
+                if (item.EffectType == "select" && string.IsNullOrEmpty(item.DictTypeCode))
+                {
+                    throw Oops.Oh($"瀛楁{item.ColumnName}鐨勪綔鐢ㄧ被鍨嬫槸'涓嬫媺妗�',瀛楀吀蹇呴』閫夋嫨锛�");
+                }
+                if (item.ColumnName.ToLower() != "id" && item.WhetherRequired == YesOrNot.Y.ToString() && item.WhetherAddUpdate == YesOrNot.N.ToString())
+                {
+                    throw Oops.Oh($"瀛楁{item.ColumnName}蹇呭~瀛楁蹇呴』閰嶇疆澧炴敼锛�");
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鏍¢獙 浠g爜閰嶇疆
+        /// </summary>
+        /// <param name="list"></param>
+        public static void ValidateCodeGenConfig(List<CodeGenConfig> list)
+        {
+            //濡傛灉鏄笅鎷夋锛岄偅涔堝氨蹇呴』閫夋嫨瀛楀吀锛併�怑ditby shaocx,2024-04-16銆�
+            foreach (var item in list)
+            {
+                if (item.EffectType == "select" && string.IsNullOrEmpty(item.DictTypeCode))
+                {
+                    throw Oops.Oh($"瀛楁{item.ColumnName}鐨勪綔鐢ㄧ被鍨嬫槸'涓嬫媺妗�',瀛楀吀蹇呴』閫夋嫨锛�");
+                }
+                if (item.ColumnName.ToLower() != "id" && item.WhetherRequired == YesOrNot.Y.ToString() && item.WhetherAddUpdate == YesOrNot.N.ToString())
+                {
+                    throw Oops.Oh($"瀛楁{item.ColumnName}蹇呭~瀛楁蹇呴』閰嶇疆澧炴敼锛�");
+                }
+            }
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SysHelper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SysHelper.cs
new file mode 100644
index 0000000..1c1289a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SysHelper.cs
@@ -0,0 +1,36 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 绯荤粺甯姪绫�
+    /// </summary>
+    public class SysHelper
+    {
+
+        /// <summary>
+        /// 鑾峰彇鐧诲綍浜虹殑鏄电О
+        /// </summary>
+        /// <returns></returns>
+        public static string GetUserName()
+        {
+            return CurrentUserInfo.Name;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐧诲綍浜虹殑鐢ㄦ埛id
+        /// </summary>
+        /// <returns></returns>
+        public static long GetUserId()
+        {
+            return CurrentUserInfo.UserId;
+        }
+
+        /// <summary>
+        /// 鑾峰彇褰撳墠鏃堕棿
+        /// </summary>
+        /// <returns></returns>
+        public static DateTime GetNowTime()
+        {
+            return DateTime.Now;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Entity/LocationView.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Entity/LocationView.cs
new file mode 100644
index 0000000..0631d05
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Entity/LocationView.cs
@@ -0,0 +1,30 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Furion.DatabaseAccessor;
+using iWare.Wms.Core;
+using Microsoft.EntityFrameworkCore;
+
+namespace iWare.Wms.Application.Entity
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    [Table("LocationView")]
+    [Comment("")]
+    public class LocationView : DEntityBase<long, MasterDbContextLocator>
+    {
+
+        /// <summary>
+        /// 杈撳叆妗�
+        /// </summary>
+        [Comment("杈撳叆妗�")][Required][Column(TypeName = "nvarchar(200)")]
+        public String input_1668660943053 { get; set; }
+        
+        /// <summary>
+        /// 鏂囨湰妗�
+        /// </summary>
+        [Comment("鏂囨湰妗�")][Required][Column(TypeName = "nvarchar(2000)")]
+        public String textarea_1668660945922 { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Mapper/CustomMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Mapper/CustomMapper.cs
new file mode 100644
index 0000000..981dd12
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Mapper/CustomMapper.cs
@@ -0,0 +1,36 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Util.LowCode.Dto;
+using Mapster;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class CustomMapper : IRegister
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="config"></param>
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<SysOrg, OrgTreeNode>()
+                .Map(dest => dest.ParentId, src => src.Pid)
+                .Map(dest => dest.Title, src => src.Name)
+                .Map(dest => dest.Value, src => src.Id)
+                .Map(dest => dest.Weight, src => src.Sort);
+
+            // 鑷畾涔夋祦绋嬭浆鎹㈡祦绋嬪畾涔塂to
+            //config.ForType<PersistedWorkflowDefinition, WorkflowDefinitionDto>()
+            //    .Map(dest => dest.Inputs, src => !string.IsNullOrWhiteSpace(src.Inputs) ? src.Inputs.FromJson<IEnumerable<IEnumerable<IEnumerable<WorkflowFormData>>>>() : null)
+            //    .Map(dest => dest.Nodes, src => src.Nodes.FromJson<IEnumerable<WorkflowNode>>());
+
+            config.ForType<SysFile, Front_FileDto>()
+                .Map(dest => dest.Status, src => "done")
+                .Map(dest => dest.Url, src => $"/api/sysFileInfo/download?id={src.Id}")
+                .Map(dest => dest.Uid, src => src.Id)
+                .Map(dest => dest.Name, src => src.FileOriginName);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/BindEntranceService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/BindEntranceService.cs
new file mode 100644
index 0000000..60da52f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/BindEntranceService.cs
@@ -0,0 +1,518 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Yitter.IdGenerator;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍏ュ簱绠$悊鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "BindEntrance", Order = 100)]
+    [Route("api/[Controller]")]
+    public class BindEntranceService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+        private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+        private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+        private readonly IRepository<WmsMaterial, MasterDbContextLocator> _wmsMaterialRep;
+        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public BindEntranceService(
+                        IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+                        IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+                        IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+                        IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+                        IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+                        IRepository<WmsMaterial, MasterDbContextLocator> wmsMaterialRep,
+                        IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+                        IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep)
+        {
+            this._wmsAreaRep = wmsAreaRep;
+            this._wmsPlaceRep = wmsPlaceRep;
+            this._wmsTaskRep = wmsTaskRep;
+            this._wmsContainerRep = wmsContainerRep;
+            this._wmsContainerPlaceRep = wmsContainerPlaceRep;
+            this._wmsMaterialRep = wmsMaterialRep;
+            this._wmsMaterialStockRep = wmsMaterialStockRep;
+            this._wmsMaterialContainerRep = wmsMaterialContainerRep;
+        }
+
+        /// <summary>
+        /// 鎵樼洏鏌ヨ缁勭洏鐗╂枡
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("getcontainer")]
+        [UnifyResult(typeof(BindEntranceOutput))]
+        public async Task<object> GetContainer([FromQuery] BindEntranceInput input)
+        {
+            var bindEntranceOutputModel = new BindEntranceOutput();
+
+            var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus != ContainerStatus.JINYONG);
+            if (wmsContainer == null)
+            {
+                var newWmsContainer = new WmsContainerDto();
+                newWmsContainer.ContainerCode = input.ContainerCode;
+                newWmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+                newWmsContainer.ContainerType = ContainerType.SULIAO;
+
+                bindEntranceOutputModel.ContainerCode = input.ContainerCode;
+                bindEntranceOutputModel.WmsContainer = newWmsContainer;
+
+                if (wmsContainer != null)
+                {
+                    var isWmsTask = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == wmsContainer.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG);
+                    if (isWmsTask) return XnRestfulResultProvider.RESTfulMesaage("鍛ㄨ浆绠卞彿瀛樺湪鏈畬鎴愪换鍔�!");
+
+                    bindEntranceOutputModel.WmsContainer = wmsContainer.Adapt<WmsContainerDto>();
+                    bindEntranceOutputModel.ContainerCode = wmsContainer.ContainerCode;
+
+                    // 鍛ㄨ浆绠卞彿缁勭洏鐘舵��
+                    if (wmsContainer.ContainerStatus == ContainerStatus.ZUPANG)
+                    {
+                        bindEntranceOutputModel.WmsMaterials = await _wmsMaterialContainerRep
+                            .Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ProjectToType<GetMaterialContainerOutput>().ToListAsync();
+
+                        return XnRestfulResultProvider.RESTfulResult(bindEntranceOutputModel);
+                    }
+                    // 鍛ㄨ浆绠卞彿搴撲綅鐘舵��
+                    if (wmsContainer.ContainerStatus == ContainerStatus.KUWEI)
+                    {
+                        // 鏌ヨ鍛ㄨ浆绠卞彿涓庡簱浣嶅叧绯�
+                        var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(u => u.ContainerId == wmsContainer.Id && u.ContainerCode == wmsContainer.ContainerCode);
+
+                        if (wmsContainerPlace != null) bindEntranceOutputModel.PlaceCode = wmsContainerPlace.PlaceCode;
+
+                        return XnRestfulResultProvider.RESTfulResult(bindEntranceOutputModel);
+                    }
+                }
+            }
+            return XnRestfulResultProvider.RESTfulResult(bindEntranceOutputModel);
+        }
+
+        /// <summary>
+        /// 鎵爜鑾峰彇鐗╂枡
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("GetMaterial")]
+        [UnifyResult(typeof(MaterialOutput))]
+        public async Task<object> GetMaterial([FromQuery] GetMaterialInput input)
+        {
+            var material = new MaterialOutput();
+            material.MaterialName = "鑳跺悎鏉�";
+            material.MaterialNo = "JHB20110101";
+            material.MaterialId = 43214325321513;
+            material.MaterialBatch = "DIYIPICI001";
+            material.MaterialType = MaterialType.BAOZHUANGCAILIAO;
+            material.InspectionMethod = MaterialInspection.MIANJIAN;
+            material.MaterialSpec = "";
+            material.MaterialDensity = "";
+            material.MaterialUnit = "";
+            material.LesWorkshopSection = LesWorkshopSection.CNC;
+            return XnRestfulResultProvider.RESTfulResult(material);
+
+        }
+
+
+        /// <summary>
+        ///  缁勭洏
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("AutoWare")]
+        public async Task AutoWare(WarehousingInput input)
+        {
+            // 鏍规嵁鎵樼洏鍙锋煡璇㈡墭鐩樺彿淇℃伅鏄惁宸插瓨鍦�
+            var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(u => u.ContainerCode == input.ContainerCode);
+            if (wmsContainer == null)
+            {
+                // 涓嶅瓨鍦ㄥ垯娣诲姞鎵樼洏鍙蜂俊鎭�
+                wmsContainer = new WmsContainer
+                {
+                    ContainerCode = input.ContainerCode,
+                    ContainerType = ContainerType.SULIAO,
+                    ContainerStatus = ContainerStatus.KOUXIAN,
+                    AssetNo = "N/A",
+                    ErpNo = "N/A"
+                };
+                await _wmsContainerRep.InsertNowAsync(wmsContainer);
+            }
+            // 鏌ヨ鏄惁浠诲姟宸插瓨鍦�
+            var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == wmsContainer.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG);
+            if (isExit) throw Oops.Oh("鎵樼洏鍙峰瓨鍦ㄦ湭瀹屾垚浠诲姟涓�!");
+
+            // 鏌ヨ宸茬粍鐩樹俊鎭�
+            var wmsMaterialContainerList = await _wmsMaterialContainerRep
+                .Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+            await _wmsMaterialContainerRep.DeleteAsync(wmsMaterialContainerList);
+            var orderNo = "N/A";
+            if (input.WmsMaterials.Count > 0)
+            {
+                wmsContainer.ContainerStatus = ContainerStatus.ZUPANG;
+                orderNo = YitIdHelper.NextId().ToString();
+                await _wmsContainerRep.UpdateAsync(wmsContainer);
+            }
+            // 鍒涘缓鏂扮粍鐩樿褰�
+            foreach (var item in input.WmsMaterials)
+            {
+                //鍒涘缓缁勭洏璁板綍
+                var bindentranceModel = new WmsMaterialContainer();
+                bindentranceModel.ContainerId = wmsContainer.Id;
+                bindentranceModel.ContainerCode = wmsContainer.ContainerCode;
+                bindentranceModel.MaterialNo = item.MaterialNo;
+                bindentranceModel.MaterialId = 478183507525701;
+                bindentranceModel.MaterialBatch = item.MaterialBatch;
+                bindentranceModel.BindQuantity = 1;
+                bindentranceModel.BindStatus = CommonStatus.ENABLE;
+                bindentranceModel.OrderNo = orderNo;
+                bindentranceModel.MaterialName = item.MaterialName;
+                bindentranceModel.MaterialDensity = "N/A";
+                await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel);
+            }
+        }
+
+
+
+        /// <summary>
+        /// 鑷姩鍏ュ簱
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("automaticWarehousing")]
+        [UnitOfWork]
+        public async Task AutomaticWarehousing(WarehousingInput input)
+        {
+            // 鏌ヨ娣峰悎鏂欏簱鍖轰俊鎭�
+            var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.AreaName.Contains("缁濈紭绔嬪簱"));
+            // 鏍规嵁鏂欑鍙锋煡璇㈠懆杞鍙蜂俊鎭槸鍚﹀凡瀛樺湪
+            var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(u => u.ContainerCode == input.ContainerCode);
+            if (wmsContainer == null)
+            {
+                // 涓嶅瓨鍦ㄥ垯娣诲姞鍛ㄨ浆绠卞彿淇℃伅
+                wmsContainer = new WmsContainer
+                {
+                    ContainerCode = input.ContainerCode,
+                    ContainerType = ContainerType.JINSHU,
+                    ContainerStatus = ContainerStatus.KOUXIAN,
+                    AssetNo = "N/A",
+                    ErpNo = "N/A"
+                };
+                await _wmsContainerRep.InsertNowAsync(wmsContainer);
+            }
+            else
+            {
+                // 鏇存柊鍛ㄨ浆绠卞彿鐘舵�佷负鈥滃簱浣嶁��
+                wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+                await _wmsContainerRep.UpdateAsync(wmsContainer);
+            }
+
+            // 鏌ヨ鍛ㄨ浆绠卞彿鏄惁宸插瓨鍦ㄤ换鍔�
+            var isWmsTask = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == wmsContainer.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG);
+            if (isWmsTask) throw Oops.Oh("鍛ㄨ浆绠卞彿瀛樺湪鏈畬鎴愪换鍔′腑!");
+
+            // 鍒犻櫎宸茬粍鐩樹俊鎭�
+            var oldWmsMaterialContainerList = await _wmsMaterialContainerRep
+                .Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+
+            foreach (var item in oldWmsMaterialContainerList)
+            {
+                await _wmsMaterialContainerRep.DeleteAsync(item);
+            }
+
+            // 缁勭洏鍗曟嵁 榛樿绌烘枡绠卞崟鎹�
+            var source = ""; //瀹氫箟鍏ュ簱鏉ユ簮
+            var orderNo = "N/A";
+            if (input.WmsMaterials.Count > 0)
+            {
+                wmsContainer.ContainerStatus = ContainerStatus.ZUPANG;
+                orderNo = YitIdHelper.NextId().ToString();
+                await _wmsContainerRep.UpdateAsync(wmsContainer);
+                source = "鐗╂枡";
+            }
+            else
+            {
+                source = "绌烘墭";
+            }
+            // 鏌ヨ鐗╂枡Id
+            var wmsMaterial = await _wmsMaterialRep.FirstOrDefaultAsync(u => u.MaterialNo == "N/A" && u.MaterialName == "N/A" && u.MaterialBatch == "N/A");
+
+            // 鍒涘缓鏂扮粍鐩樿褰�
+            foreach (var item in input.WmsMaterials)
+            {
+                var wmsMaterialContainer = item.Adapt<WmsMaterialContainer>();
+                wmsMaterialContainer.OrderNo = orderNo;
+                wmsMaterialContainer.ContainerId = wmsContainer.Id;
+                wmsMaterialContainer.ContainerCode = wmsContainer.ContainerCode;
+                wmsMaterialContainer.MaterialId = wmsMaterial.Id;
+                wmsMaterialContainer.BindStatus = CommonStatus.ENABLE;
+                await _wmsMaterialContainerRep.InsertNowAsync(wmsMaterialContainer);
+            }
+
+
+            //if (input.Source == RuKuSourceEnum.KONGTUO)
+            //else if (input.Source == RuKuSourceEnum.WULIAO)
+
+            //鍒涘缓宸烽亾鍒嗛厤
+            var wmsPlace = await _wmsPlaceRep.Where(u => u.PlaceStatus == PlaceStatus.KONGXIAN).ToListAsync();
+            var one = wmsPlace.Where(s => s.Aisle==1).ToList().Count;
+            var two = wmsPlace.Where(s => s.Aisle == 2).ToList().Count;
+            var three = wmsPlace.Where(s => s.Aisle == 3).ToList().Count;
+            var Aisle = 0;
+            if (one >= two && one >= three)
+            {
+                Aisle = 1;
+            }
+            else if (two >= one && two >= three)
+            {
+                Aisle = 2;
+            }
+            else
+            {
+                Aisle = 3;
+            }
+
+            string taskNo = "RUKU"+ DateTime.Today.ToString("yyyyMMdd");
+            var wmsTaskModel = await _wmsTaskRep.DetachedEntities.FirstOrDefaultAsync(u => EF.Functions.Like(u.TaskNo, $"%{taskNo}%"));
+            if (wmsTaskModel == null)
+            {
+                taskNo = taskNo + "0001";
+            }
+            else
+            {
+                //鑾峰彇娴佹按鍙锋渶澶х殑鏁版嵁
+                var maxSerialNumber = await _wmsTaskRep.MaxAsync(t => t.TaskNo);
+                taskNo = Comm.GenerateNewInvoiceNumber(maxSerialNumber, 1);
+            }
+
+            // 鍒涘缓浠诲姟
+            var takmodel = new WmsTask()
+            {
+                TaskNo = taskNo,//YitIdHelper.NextId().ToString(),
+                TaskModel = TaskModel.QUANZIDONG,
+                TaskType = TaskType.RUKU,
+                TaskLevel = 1,
+                Aisle = Aisle,
+                TaskStatus = TaskStatusEnum.WEIZHIXING,
+                ContainerCode = wmsContainer.ContainerCode,
+                SourcePlace = "鍏ュ簱鍙�",
+                ToPlace = "",
+                AreaName = wmsArea != null ? wmsArea.AreaName : "",
+                OrderNo = orderNo,
+                Description = source, //鍏ュ簱鏉ユ簮
+                TaskDodeviceStatus = TaskDodeviceStatusEnum.WZX,
+                IsRead = true
+            };
+            await _wmsTaskRep.InsertAsync(takmodel);
+        }
+
+
+
+
+
+        /// <summary>
+        /// 浜哄伐鍏ュ簱
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("manualWarehousing")]
+        [UnitOfWork]
+        public async Task ManualWarehousing(WarehousingInput input)
+        {
+            // 鏌ヨ娣峰悎鏂欏簱鍖轰俊鎭�
+            var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.AreaName.Contains("缁濈紭绔嬪簱"));
+            // 鏍规嵁鏂欑鍙锋煡璇㈠懆杞鍙蜂俊鎭槸鍚﹀凡瀛樺湪
+            var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(u => u.ContainerCode == input.ContainerCode);
+            if (wmsContainer == null)
+            {
+                // 涓嶅瓨鍦ㄥ垯娣诲姞鍛ㄨ浆绠卞彿淇℃伅
+                wmsContainer = new WmsContainer
+                {
+                    ContainerCode = input.ContainerCode,
+                    ContainerType = ContainerType.JINSHU,
+                    ContainerStatus = ContainerStatus.KUWEI,
+                    AssetNo = "N/A",
+                    ErpNo = "N/A"
+                };
+                await _wmsContainerRep.InsertNowAsync(wmsContainer);
+            }
+            else
+            {
+                // 鏇存柊鍛ㄨ浆绠卞彿鐘舵�佷负鈥滃簱浣嶁��
+                wmsContainer.ContainerStatus = ContainerStatus.KUWEI;
+                await _wmsContainerRep.UpdateAsync(wmsContainer);
+            }
+
+            // 鏌ヨ鍛ㄨ浆绠卞彿鏄惁宸插瓨鍦ㄤ换鍔�
+            var isWmsTask = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == wmsContainer.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG);
+            if (isWmsTask) throw Oops.Oh("鍛ㄨ浆绠卞彿瀛樺湪鏈畬鎴愪换鍔′腑!");
+
+            // 鍒犻櫎宸茬粍鐩樹俊鎭�
+            var oldWmsMaterialContainerList = await _wmsMaterialContainerRep
+                .Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+
+            foreach (var item in oldWmsMaterialContainerList)
+            {
+                await _wmsMaterialContainerRep.DeleteAsync(item);
+            }
+
+            // 鏌ヨ搴撲綅淇℃伅 闅忔満鍒嗛厤搴撲綅
+            var wmsPlace = new WmsPlace();
+            if (string.IsNullOrEmpty(input.PlaceCode))
+                wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.AreaId == wmsArea.Id && u.Islock == YesOrNot.N && u.PlaceStatus == PlaceStatus.KONGXIAN);
+            else
+                wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.AreaId == wmsArea.Id && u.PlaceCode == input.PlaceCode);
+            if (wmsPlace == null) throw Oops.Oh("搴撲綅涓嶅瓨鍦�!");
+            if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("搴撲綅琚攣瀹�!");
+            if (wmsPlace.PlaceStatus != PlaceStatus.KONGXIAN) throw Oops.Oh("搴撲綅宸插瓨璐�!");
+            // 鏇存柊搴撲綅鐘舵�佷负鈥滃瓨璐р��
+            wmsPlace.PlaceStatus = PlaceStatus.CUNHUO;
+
+            // 缁勭洏鍗曟嵁 榛樿绌烘枡绠卞崟鎹�
+            var orderNo = "N/A";
+            var source = ""; //瀹氫箟鍏ュ簱鏉ユ簮
+            if (input.WmsMaterials.Count > 0)
+            {
+                orderNo = YitIdHelper.NextId().ToString();
+                source = "鐗╂枡";
+            }
+            else
+            {
+                wmsPlace.EmptyContainer = YesOrNot.Y;  //鏄惁绌烘墭
+                source = "绌烘墭";
+            }
+            // 鏌ヨ鐗╂枡Id
+            var wmsMaterial = await _wmsMaterialRep.FirstOrDefaultAsync(u => u.MaterialNo == "N/A" && u.MaterialName == "N/A" && u.MaterialBatch == "N/A");
+
+            // 鍒涘缓鏂扮粍鐩樿褰�
+            foreach (var item in input.WmsMaterials)
+            {
+                var wmsMaterialContainer = item.Adapt<WmsMaterialContainer>();
+                wmsMaterialContainer.OrderNo = orderNo;
+                wmsMaterialContainer.ContainerId = wmsContainer.Id;
+                wmsMaterialContainer.ContainerCode = wmsContainer.ContainerCode;
+                wmsMaterialContainer.MaterialId = wmsMaterial.Id;
+                wmsMaterialContainer.BindStatus = CommonStatus.ENABLE;
+
+                await _wmsMaterialContainerRep.InsertNowAsync(wmsMaterialContainer);
+            }
+
+            string taskNo = "RUKU" + DateTime.Today.ToString("yyyyMMdd");
+            var wmsTaskModel = await _wmsTaskRep.DetachedEntities.FirstOrDefaultAsync(u => EF.Functions.Like(u.TaskNo, $"%{taskNo}%"));
+            if (wmsTaskModel == null)
+            {
+                taskNo = taskNo + "0001";
+            }
+            else
+            {
+                //鑾峰彇娴佹按鍙锋渶澶х殑鏁版嵁
+                var maxSerialNumber = await _wmsTaskRep.MaxAsync(t => t.TaskNo);
+                taskNo = Comm.GenerateNewInvoiceNumber(maxSerialNumber, 1);
+            }
+
+            // 鍒涘缓浠诲姟
+            var takmodel = new WmsTask()
+            {
+                TaskNo = taskNo,//YitIdHelper.NextId().ToString(),
+                TaskModel = TaskModel.SHOUDONG,
+                TaskType = TaskType.RUKU,
+                TaskLevel = 1,
+                Aisle = wmsPlace.Aisle,
+                TaskStatus = TaskStatusEnum.WANCHENG,
+                ContainerCode = wmsContainer.ContainerCode,
+                SourcePlace = "鍏ュ簱鍙�",
+                ToPlace = wmsPlace.PlaceCode,
+                AreaName = wmsArea != null ? wmsArea.AreaName : "",
+                OrderNo = orderNo,
+                Description = source, //鍏ュ簱鏉ユ簮
+                TaskDodeviceStatus = TaskDodeviceStatusEnum.W,
+                UpdatedTime = DateTime.Now,
+            };
+            await _wmsTaskRep.InsertAsync(takmodel);
+
+            // 鍒涘缓鎵樼洏鍙峰簱浣嶅叧绯昏〃
+            var wmsContainerPlaceModel = new WmsContainerPlace()
+            {
+                PlaceId = wmsPlace.Id,
+                PlaceCode = wmsPlace.PlaceCode,
+                ContainerId = wmsContainer.Id,
+                ContainerCode = wmsContainer.ContainerCode,
+                ContainerPlaceStatus = CommonStatus.ENABLE
+            };
+            await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlaceModel);
+
+            // 鏇存柊搴撳瓨
+            var wmsMaterialContainerList = await _wmsMaterialContainerRep.DetachedEntities
+                .Where(p => p.OrderNo == orderNo && p.BindStatus == CommonStatus.ENABLE).ProjectToType<WmsMaterialContainer>().ToListAsync();
+
+            foreach (var item in wmsMaterialContainerList)
+            {
+                var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(p => p.ContainerCode == wmsContainer.ContainerCode
+                && p.MaterialBatch == item.MaterialBatch );
+                if (wmsMaterialStock != null)
+                {
+                    wmsMaterialStock.Source = RuKuSourceEnum.WULIAO;
+                    wmsMaterialStock.AreaId = wmsPlace.AreaId;
+                    wmsMaterialStock.PlaceCode = wmsPlace.PlaceCode;
+                    wmsMaterialStock.StockNumber += item.BindQuantity;
+                    await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock);
+                }
+                else
+                {
+                    wmsMaterialStock = new WmsMaterialStock()
+                    {
+                        InspectionMethod = MaterialInspection.MIANJIAN,
+                        UnitType = UnitType.ZHONGLIANG,
+                        UnitNo = UnitNoType.T,
+                        MaterialNo = item.MaterialNo,
+                        MaterialType = MaterialType.CHENGPING,
+                        MaterialName = item.MaterialName,
+                        MaterialSpec = item.MaterialSpec,
+                        MaterialBatch = item.MaterialBatch,
+                        MaterialDensity = item.MaterialDensity,
+                        StockNumber = 1,
+                        PlaceCode = wmsPlace.PlaceCode,
+                        ContainerId = wmsContainer.Id,
+                        ContainerCode = wmsContainer.ContainerCode,
+                        AreaId = wmsPlace.AreaId,
+                        Source = RuKuSourceEnum.WULIAO
+                };
+                    await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
+                }
+            }
+            // 绌烘枡绠卞叆搴�
+            if (orderNo == "N/A")
+            {
+                var wmsMaterialStock = new WmsMaterialStock()
+                {
+                    InspectionMethod = MaterialInspection.MIANJIAN,
+                    UnitType = UnitType.ZHONGLIANG,
+                    UnitNo = UnitNoType.T,
+                    MaterialNo = "N/A",
+                    MaterialType = MaterialType.KONGTUO,
+                    MaterialName = "N/A",
+                    MaterialSpec = "N/A",
+                    MaterialBatch = "N/A",
+                    MaterialDensity = "N/A",
+                    StockNumber = 0,
+                    PlaceCode = wmsPlace.PlaceCode,
+                    ContainerId = wmsContainer.Id,
+                    ContainerCode = wmsContainer.ContainerCode,
+                    AreaId = wmsPlace.AreaId,
+                    Source = RuKuSourceEnum.KONGTUO
+            };
+                await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceInput.cs
new file mode 100644
index 0000000..390ded0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceInput.cs
@@ -0,0 +1,117 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class BindEntranceInput : PageInputBase
+    {
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        [Required(ErrorMessage = "鎵樼洏鍙蜂笉鑳戒负绌�")]
+        public string ContainerCode { get; set; }
+    }
+
+    /// <summary>
+    /// 缁勭洏杈撳叆鍙傛暟
+    /// </summary>
+    public class WarehousingInput
+    {
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        [Required(ErrorMessage = "鎵樼洏鍙蜂笉鑳戒负绌�")]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅鍙�
+        /// </summary>
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱璧峰浣嶇疆
+        /// </summary>
+        public string SourcePlace { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡淇℃伅
+        /// </summary>
+        public List<WarehousingMaterialInput> WmsMaterials { get; set; }
+    }
+
+    /// <summary>
+    /// 鐗╂枡鏄庣粏杈撳叆鍙傛暟
+    /// </summary>
+    public class WarehousingMaterialInput
+    {
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡ID
+        /// </summary>
+        public long MaterialId { get; set; }
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+        /// </summary>
+        public MaterialType MaterialType { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡妫�楠�
+        /// </summary>
+        public MaterialInspection InspectionMethod { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public string MaterialDensity { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍗曚綅
+        /// </summary>
+        public string MaterialUnit { get; set; }
+
+        /// <summary>
+        /// 宸ユ
+        /// </summary>
+        public LesWorkshopSection LesWorkshopSection { get; set; }
+    }
+
+    /// <summary>
+    /// 鑾峰彇鐗╂枡杈撳叆鍙傛暟
+    /// </summary>
+    public class GetMaterialInput
+    {
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string MaterialNo { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceOutput.cs
new file mode 100644
index 0000000..5393a8a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceOutput.cs
@@ -0,0 +1,124 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 缁勭洏鐗╂枡淇℃伅
+    /// </summary>
+    public class BindEntranceOutput
+    {
+
+        /// <summary>
+        /// 鍛ㄨ浆绠卞彿
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鏂欑鍙蜂俊鎭�
+        /// </summary>
+        public WmsContainerDto WmsContainer { get; set; }
+        /// <summary>
+        /// 搴撲綅缂栧彿
+        /// </summary>
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鏄庣粏淇℃伅
+        /// </summary>
+        public List<GetMaterialContainerOutput> WmsMaterials { get; set; }
+    }
+
+    /// <summary>
+    ///  鐗╂枡鏄庣粏淇℃伅杈撳嚭鍙傛暟
+    /// </summary>
+    public class GetMaterialContainerOutput
+    {
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+        /// </summary>
+        public MaterialType MaterialType { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡妫�楠�
+        /// </summary>
+        public MaterialInspection InspectionMethod { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public string MaterialSpec { get; set; }
+    }
+
+
+    public class MaterialOutput
+    {
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡ID
+        /// </summary>
+        public long MaterialId { get; set; }
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+        /// </summary>
+        public MaterialType MaterialType { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡妫�楠�
+        /// </summary>
+        public MaterialInspection InspectionMethod { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public string MaterialDensity { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍗曚綅
+        /// </summary>
+        public string MaterialUnit { get; set; }
+
+        /// <summary>
+        /// 宸ユ
+        /// </summary>
+        public LesWorkshopSection LesWorkshopSection { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWareHouseOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWareHouseOutput.cs
new file mode 100644
index 0000000..9330db4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWareHouseOutput.cs
@@ -0,0 +1,107 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍑哄簱杈撳叆鍙傛暟
+    /// </summary>
+    public class ExWareHouseOutput
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+        /// </summary>
+        public MaterialType MaterialType { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 闀�    
+        /// </summary>
+        public int Long { get; set; }
+
+        /// <summary>
+        /// 瀹�    
+        /// </summary>
+        public int Wide { get; set; }
+
+        /// <summary>
+        /// 楂�    
+        /// </summary>
+        public int High { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public string MaterialDensity { get; set; }
+
+        /// <summary>
+        /// 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+        /// </summary>
+        public MaterialInspection InspectionMethod { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅绫诲埆;鏁版嵁瀛楀吀
+        /// </summary>
+        public UnitType UnitType { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅缂栧彿;鏁版嵁瀛楀吀
+        /// </summary>
+        public UnitNoType UnitNo { get; set; }
+
+        /// <summary>
+        /// 瀹炵墿搴撳瓨鏁�
+        /// </summary>
+        public decimal StockNumber { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏Id
+        /// </summary>
+        public long ContainerId { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撳尯Id
+        /// </summary>
+        public long AreaId { get; set; }
+
+        /// <summary>
+        /// 璐﹂潰鏁伴噺
+        /// </summary>
+        public decimal QuantityOfBill { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWarehouseInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWarehouseInput.cs
new file mode 100644
index 0000000..fe42618
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWarehouseInput.cs
@@ -0,0 +1,49 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    ///  鐗╂枡鍑哄簱鏌ヨ鍙傛暟
+    /// </summary>
+    public class ExWarehouseSearch: PageInputBase
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string  MaterialName { get; set; }
+    }
+
+    /// <summary>
+    /// 鍑哄簱杈撳叆鍙傛暟
+    /// </summary>
+    public class ExWarehouseInput
+    {
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+        /// <summary>
+        /// 鍑哄簱浣嶇疆
+        /// </summary>
+        public string ToPlace { get; set; }
+        /// <summary>
+        /// 搴撲綅缂栧彿
+        /// </summary>
+        public string PlaceCode { get; set; }
+    }
+
+    /// <summary>
+    /// 鍛煎彨绌烘墭杈撳叆鍙傛暟
+    /// </summary>
+    public class CallAirflareInput
+    {
+        /// <summary>
+        /// 鍛煎彨绌烘墭鏁伴噺
+        /// </summary>
+        public int Quantity { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/ExWarehouseService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/ExWarehouseService.cs
new file mode 100644
index 0000000..9eddb3e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/ExWarehouseService.cs
@@ -0,0 +1,323 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Yitter.IdGenerator;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍑哄簱绠$悊鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "ExWarehouse", Order = 100)]
+    [Route("api/[Controller]")]
+    public class ExWarehouseService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+        private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+        private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+        private readonly IRepository<WmsMaterial, MasterDbContextLocator> _wmsMaterialRep;
+        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public ExWarehouseService(
+                        IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+                        IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+                        IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+                        IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+                        IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+                        IRepository<WmsMaterial, MasterDbContextLocator> wmsMaterialRep,
+                        IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+                        IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep
+            )
+        {
+            this._wmsAreaRep = wmsAreaRep;
+            this._wmsPlaceRep = wmsPlaceRep;
+            this._wmsTaskRep = wmsTaskRep;
+            this._wmsContainerRep = wmsContainerRep;
+            this._wmsContainerPlaceRep = wmsContainerPlaceRep;
+            this._wmsMaterialRep = wmsMaterialRep;
+            this._wmsMaterialStockRep = wmsMaterialStockRep;
+            this._wmsMaterialContainerRep = wmsMaterialContainerRep;
+        }
+
+        
+
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鐗╂枡鍑哄簱绠$悊淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<ExWareHouseOutput>> Page([FromQuery] ExWarehouseSearch input)
+        {
+            var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities
+                      .Where (!string.IsNullOrEmpty(input.MaterialName), u => EF.Functions.Like(u.MaterialName, $"%{input.MaterialName.Trim()}%"))
+                      .ProjectToType<ExWareHouseOutput>()
+                      .ToListAsync();
+            return wmsMaterialStocks.ToADPagedList(input.PageNo, input.PageSize);
+        }
+
+        /// <summary>
+        /// 鑷姩鍑哄簱
+        /// </summary>
+        /// <param name="inputs"></param>
+        /// <returns></returns>
+        [HttpPost("AutoExWarehouse")]
+        [UnitOfWork]
+        public async Task AutoExWarehouse(List<ExWarehouseInput> inputs)
+        {
+            // 鏍规嵁鎵樼洏鍙枫�佸簱浣嶇紪鍙峰幓閲�
+            var containerCodeDistinct = inputs.Select(u => new { u.ContainerCode, u.PlaceCode }).Distinct().ToList();
+            if (containerCodeDistinct.Count <= 0) throw Oops.Oh("鏆傛棤搴撳瓨鍑哄簱");
+
+            // 鏌ヨ搴撳尯鍚嶇О
+            var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.AreaName.Contains("缁濈紭绔嬪簱"));
+            if (wmsArea != null) throw Oops.Oh("搴撳尯涓嶅瓨鍦�");
+
+            foreach (var item in containerCodeDistinct)
+            {
+                var wmsMaterialContainerList = new List<WmsMaterialContainer>();
+                // 鍒ゆ柇浠诲姟
+                var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(p => p.ContainerCode == item.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG);
+                if (wmsTask != null) throw Oops.Oh("鍛ㄨ浆绠卞彿瀛樺湪鏈畬鎴愮殑浠诲姟!");
+
+                // 妫�鏌ュ懆杞鍙蜂俊鎭�
+                var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == item.ContainerCode);
+                if (wmsContainer == null) throw Oops.Oh("搴撳瓨涓病鏈夎锛�" + wmsContainer.ContainerCode + "鎵樼洏!");
+
+                // 妫�鏌ュ簱浣嶄俊鎭�
+                var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.PlaceCode == item.PlaceCode);
+                if (wmsPlace == null) throw Oops.Oh("搴撲綅涓嶅瓨鍦�!");
+                if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("搴撲綅琚攣瀹�!");
+
+                // 鏇存柊鐘舵�佷负鈥滃緟鍑衡��
+                wmsPlace.PlaceStatus = PlaceStatus.DAICHU;
+                await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+                // 妫�鏌ュ簱瀛�
+                var wmsMaterialStockList = inputs.Where(u => u.ContainerCode == wmsContainer.ContainerCode && u.PlaceCode == wmsPlace.PlaceCode).ToList();
+                if (wmsMaterialStockList.Count <= 0) throw Oops.Oh("搴撳瓨鏁版嵁寮傚父!");
+
+                // 妫�鏌ュ簱浣嶄笌鍛ㄨ浆绠卞彿鍏崇郴
+                var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(p => p.ContainerCode == wmsContainer.ContainerCode && p.ContainerId == wmsContainer.Id
+                && p.PlaceCode == wmsPlace.PlaceCode && p.PlaceId == wmsPlace.Id && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+                if (wmsContainerPlace == null) throw Oops.Oh("鎵樼洏鍙蜂笌搴撲綅鍏崇郴涓嶅瓨鍦�!");
+
+                // 涓嶆槸绌烘枡绠辨墠浼氭湁缁勭洏鍏崇郴
+                if (wmsPlace.EmptyContainer == YesOrNot.N)
+                {
+                    // 妫�鏌ョ墿鏂欎笌鍛ㄨ浆绠卞彿鍏崇郴 
+                    wmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+                    if (wmsMaterialContainerList.Count <= 0) throw Oops.Oh("鍛ㄨ浆绠卞彿涓庣墿鏂欏叧绯讳笉瀛樺湪!");
+                }
+                else
+                {
+                    // 鏇存柊绌烘枡绠卞簱瀛�
+                    var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(u => u.ContainerCode == wmsContainer.ContainerCode);
+                    if (wmsMaterialStock.Source == RuKuSourceEnum.KONGTUO)
+                    {
+                        wmsMaterialStock.PlaceCode = "N/A";
+                        await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock);
+                    }
+                }
+                if (wmsTask == null)
+                {
+                    string taskNo = "CHUKU" + DateTime.Today.ToString("yyyyMMdd");
+                    var wmsTaskModel = await _wmsTaskRep.DetachedEntities.FirstOrDefaultAsync(u => EF.Functions.Like(u.TaskNo, $"%{taskNo}%"));
+                    if (wmsTaskModel == null)
+                    {
+                        taskNo = taskNo + "0001";
+                    }
+                    else
+                    {
+                        //鑾峰彇娴佹按鍙锋渶澶х殑鏁版嵁
+                        var maxSerialNumber = await _wmsTaskRep.MaxAsync(t => t.TaskNo);
+                        taskNo = Comm.GenerateNewInvoiceNumber(maxSerialNumber, 1);
+                    }
+
+                    // 鏂板浠诲姟
+                    var takmodel = new WmsTask()
+                    {
+                        TaskNo = taskNo,//YitIdHelper.NextId().ToString(),
+                        TaskModel = TaskModel.QUANZIDONG,
+                        TaskType = TaskType.CHUKU,
+                        TaskLevel = 1,
+                        TaskStatus = TaskStatusEnum.WEIZHIXING,
+                        ContainerCode = wmsContainer.ContainerCode,
+                        SourcePlace = wmsPlace.PlaceCode,
+                        Aisle = wmsPlace.Aisle,
+                        ToPlace = "鍑哄簱鍙�",
+                        AreaName = wmsArea.AreaName,
+                        Description = wmsPlace.EmptyContainer == YesOrNot.Y ? "绌烘墭" : "鐗╂枡",
+                        OrderNo = wmsMaterialContainerList.Count <= 0 ? "N/A" : wmsMaterialContainerList.FirstOrDefault().OrderNo,
+                        TaskDodeviceStatus = TaskDodeviceStatusEnum.W,
+                        IsRead = true
+                    };
+                    await _wmsTaskRep.InsertAsync(takmodel);
+                }
+            }
+        }
+
+        /// <summary>
+        /// 浜哄伐鍑哄簱
+        /// </summary>
+        /// <param name="inputs"></param>
+        /// <returns></returns>
+        [HttpPost("manualExWarehouse")]
+        [UnitOfWork]
+        public async Task ManualExWarehouse(List<ExWarehouseInput> inputs)
+        {
+            // 鏍规嵁鎵樼洏鍙枫�佸簱浣嶇紪鍙峰幓閲�
+            var containerCodeDistinct = inputs.Select(u => new { u.ContainerCode, u.PlaceCode }).Distinct().ToList();
+            if (containerCodeDistinct.Count <= 0) throw Oops.Oh("鏆傛棤搴撳瓨鍑哄簱");
+
+            // 鏌ヨ搴撳尯鍚嶇О
+            var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.AreaName.Contains("缁濈紭绔嬪簱"));
+            if (wmsArea != null) throw Oops.Oh("搴撳尯涓嶅瓨鍦�");
+
+            foreach (var item in containerCodeDistinct)
+            {
+                var wmsMaterialContainerList = new List<WmsMaterialContainer>();
+                // 鍒ゆ柇浠诲姟
+                var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(p => p.ContainerCode == item.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG);
+                if (wmsTask != null) throw Oops.Oh("鎵樼洏鍙峰瓨鍦ㄦ湭瀹屾垚鐨勪换鍔�!");
+
+                // 妫�鏌ユ墭鐩樺彿淇℃伅
+                var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == item.ContainerCode);
+                if (wmsContainer == null) throw Oops.Oh("鍛ㄨ浆绠卞彿涓嶅瓨鍦�!");
+
+                // 妫�鏌ュ簱浣嶄俊鎭�
+                var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.PlaceCode == item.PlaceCode);
+                if (wmsPlace == null) throw Oops.Oh("搴撲綅涓嶅瓨鍦�!");
+                if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("搴撲綅琚攣瀹�!");
+
+                // 妫�鏌ュ簱瀛�
+                var wmsMaterialStockList = inputs.Where(u => u.ContainerCode == wmsContainer.ContainerCode && u.PlaceCode == wmsPlace.PlaceCode).ToList();
+                if (wmsMaterialStockList.Count <= 0) throw Oops.Oh("搴撳瓨鏁版嵁寮傚父!");
+
+                // 妫�鏌ュ簱浣嶄笌鎵樼洏鍙峰叧绯�
+                var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(p => p.ContainerCode == wmsContainer.ContainerCode && p.ContainerId == wmsContainer.Id
+                && p.PlaceCode == wmsPlace.PlaceCode && p.PlaceId == wmsPlace.Id && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+                if (wmsContainerPlace == null) throw Oops.Oh("鎵樼洏鍙蜂笌搴撲綅鍏崇郴涓嶅瓨鍦�!");
+
+
+                // 涓嶆槸绌烘墭鎵嶄細鏈夌粍鐩樺叧绯�
+                if (wmsPlace.EmptyContainer == YesOrNot.N)
+                {
+                    // 妫�鏌ョ墿鏂欎笌绌烘墭鍙峰叧绯� 
+                    wmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+                    if (wmsMaterialContainerList.Count <= 0) throw Oops.Oh("鎵樼洏鍙蜂笌鐗╂枡鍏崇郴涓嶅瓨鍦�!");
+                }
+                else
+                {
+                    // 鏇存柊绌烘枡绠卞簱瀛�
+                    var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(u => u.ContainerCode == wmsContainer.ContainerCode);
+                    if (wmsMaterialStock.Source == RuKuSourceEnum.KONGTUO)
+                    {
+                        await _wmsMaterialStockRep.DeleteAsync(wmsMaterialStock);
+                    }
+                }
+
+                if (wmsTask == null)
+                {
+                    //鏋勫缓鍑哄簱鐗╂枡鍜屽懆杞鍙峰叧绯�
+                    var orderNo = "N/A";
+                    if (wmsMaterialContainerList.Count > 0) orderNo = YitIdHelper.NextId().ToString();
+
+                    foreach (var wmsMaterialContaine in wmsMaterialContainerList)
+                    {
+                        //鏇存柊鐘舵�佷负鈥濆垹闄も��
+                        wmsMaterialContaine.BindStatus = CommonStatus.DELETED;
+                        await _wmsMaterialContainerRep.UpdateNowAsync(wmsMaterialContaine);
+
+                        //鏂板缁勭洏缁戝畾璁板綍 姝e父
+                        var addWmsMaterialContainer = wmsMaterialContaine;
+                        addWmsMaterialContainer.Id = YitIdHelper.NextId();
+                        addWmsMaterialContainer.OrderNo = orderNo;
+                        addWmsMaterialContainer.BindStatus = CommonStatus.ENABLE;
+                        await _wmsMaterialContainerRep.InsertNowAsync(addWmsMaterialContainer);
+                        // 杩欓噷娌℃湁鍒嗘嫞鎿嶄綔鐩存帴鏇存柊搴撳瓨淇℃伅
+                        var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(u => u.ContainerCode == wmsMaterialContaine.ContainerCode);
+                        wmsMaterialStock.PlaceCode = "N/A";
+                        wmsMaterialStock.StockNumber -= wmsMaterialContaine.BindQuantity;
+                        await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock);
+                    }
+
+                    string taskNo = "CHUKU" + DateTime.Today.ToString("yyyyMMdd");
+                    var wmsTaskModel = await _wmsTaskRep.DetachedEntities.FirstOrDefaultAsync(u => EF.Functions.Like(u.TaskNo, $"%{taskNo}%"));
+                    if (wmsTaskModel == null)
+                    {
+                        taskNo = taskNo + "0001";
+                    }
+                    else
+                    {
+                        //鑾峰彇娴佹按鍙锋渶澶х殑鏁版嵁
+                        var maxSerialNumber = await _wmsTaskRep.MaxAsync(t => t.TaskNo);
+                        taskNo = Comm.GenerateNewInvoiceNumber(maxSerialNumber, 1);
+                    }
+                    // 鏂板浠诲姟
+                    var addWmsTask = new WmsTask()
+                    {
+                        TaskNo = taskNo,//YitIdHelper.NextId().ToString(),
+                        TaskModel = TaskModel.SHOUDONG,
+                        TaskType = TaskType.CHUKU,
+                        TaskLevel = 1,
+                        TaskStatus = TaskStatusEnum.WANCHENG,
+                        ContainerCode = wmsContainer.ContainerCode,
+                        SourcePlace = wmsPlace.PlaceCode,
+                        Aisle = wmsPlace.Aisle,
+                        ToPlace = "鍑哄簱鍙�",
+                        AreaName = wmsArea.AreaName,
+                        Description = wmsPlace.EmptyContainer == YesOrNot.Y ? "绌烘墭" : "鐗╂枡",
+                        OrderNo = orderNo,
+                        TaskDodeviceStatus=TaskDodeviceStatusEnum.W,
+                        UpdatedTime = DateTime.Now,
+                    };
+                    await _wmsTaskRep.InsertAsync(addWmsTask);
+
+                    // 鏇存柊搴撲綅涓庡懆杞鍙峰叧绯昏〃鐘舵�佷负鈥滃垹闄も��
+                    wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED;
+                    await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace);
+
+                    // 鏇存柊搴撲綅涓衡�滅┖闂测��
+                    wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN;
+                    wmsPlace.Islock = YesOrNot.N;
+                    wmsPlace.EmptyContainer = YesOrNot.N;
+                    await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+                    // 鏇存柊鍛ㄨ浆绠卞彿鐘舵�佷负鈥滅┖闂测��
+                    wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+                    await _wmsContainerRep.UpdateAsync(wmsContainer);
+                }
+            }
+        }
+
+
+        /// <summary>
+        /// 鍛煎彨绌烘墭
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("callairflare")]
+        [UnitOfWork]
+        public async Task CallAirflare(CallAirflareInput input)
+        {
+            //鑾峰彇搴撲綅涓瓨璐ф槸绌烘墭鐨勫簱浣�
+            var wmsPlace = await _wmsPlaceRep.Where(u => u.PlaceStatus == PlaceStatus.CUNHUO && u.EmptyContainer== YesOrNot.Y).ToListAsync();
+            if (wmsPlace.Count > 0)
+            { 
+                
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaDto.cs
new file mode 100644
index 0000000..434e4c8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaDto.cs
@@ -0,0 +1,50 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撳尯淇℃伅杈撳嚭鍙傛暟
+    /// </summary>
+    public class WmsAreaDto
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string AreaName { get; set; }
+        
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        public string AreaDesc { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public CommonStatus AreaStatus { get; set; }
+        
+        /// <summary>
+        /// 鍒嗙被
+        /// </summary>
+        public AreaType AreaType { get; set; }
+        
+        /// <summary>
+        /// 鏄惁涓洪挗骞冲彴
+        /// </summary>
+        public bool IsSteel { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public LesWorkShopType WorkShopType { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public IssueState IssueState { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaInput.cs
new file mode 100644
index 0000000..32d5fa7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaInput.cs
@@ -0,0 +1,163 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撳尯淇℃伅鏌ヨ鍙傛暟
+    /// </summary>
+    public class WmsAreaSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string AreaName { get; set; }
+
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        public virtual string AreaDesc { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual CommonStatus? AreaStatus { get; set; }
+
+        /// <summary>
+        /// 鍒嗙被
+        /// </summary>
+        public virtual AreaType? AreaType { get; set; }
+
+        /// <summary>
+        /// 鏄惁涓洪挗骞冲彴
+        /// </summary>
+        public virtual bool? IsSteel { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual LesWorkShopType? WorkShopType { get; set; }
+
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual IssueState? IssueState { get; set; }
+    }
+
+    /// <summary>
+    /// 搴撳尯淇℃伅涓嶅垎椤垫煡璇㈠弬鏁�
+    /// </summary>
+    public class WmsAreaSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string AreaName { get; set; }
+
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        public virtual string AreaDesc { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual CommonStatus? AreaStatus { get; set; }
+
+        /// <summary>
+        /// 鍒嗙被
+        /// </summary>
+        public virtual AreaType? AreaType { get; set; }
+
+        /// <summary>
+        /// 鏄惁涓洪挗骞冲彴
+        /// </summary>
+        public virtual bool? IsSteel { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual LesWorkShopType? WorkShopType { get; set; }
+
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual IssueState? IssueState { get; set; }
+    }
+
+    /// <summary>
+    /// 搴撳尯淇℃伅杈撳叆鍙傛暟
+    /// </summary>
+    public class WmsAreaInput
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string AreaName { get; set; }
+
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        public virtual string AreaDesc { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual CommonStatus AreaStatus { get; set; }
+
+        /// <summary>
+        /// 鍒嗙被
+        /// </summary>
+        public virtual AreaType AreaType { get; set; }
+
+        /// <summary>
+        /// 鏄惁涓洪挗骞冲彴
+        /// </summary>
+        public virtual bool IsSteel { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual LesWorkShopType WorkShopType { get; set; }
+
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual IssueState IssueState { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddWmsAreaInput : WmsAreaInput
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteWmsAreaInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateWmsAreaInput : WmsAreaInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryeWmsAreaInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaOutput.cs
new file mode 100644
index 0000000..d2aaacc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaOutput.cs
@@ -0,0 +1,50 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撳尯淇℃伅杈撳嚭鍙傛暟
+    /// </summary>
+    public class WmsAreaOutput
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string AreaName { get; set; }
+
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        public string AreaDesc { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public CommonStatus AreaStatus { get; set; }
+
+        /// <summary>
+        /// 鍒嗙被
+        /// </summary>
+        public AreaType AreaType { get; set; }
+
+        /// <summary>
+        /// 鏄惁涓洪挗骞冲彴
+        /// </summary>
+        public bool IsSteel { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public LesWorkShopType WorkShopType { get; set; }
+
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public IssueState IssueState { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/WmsAreaService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/WmsAreaService.cs
new file mode 100644
index 0000000..9f665e5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/WmsAreaService.cs
@@ -0,0 +1,313 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using System.Text;
+using System.Web;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撳尯淇℃伅鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsArea", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsAreaService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="wmsAreaRep"></param>
+        /// <param name="sysDictTypeRep"></param>
+        /// <param name="sysDictDataRep"></param>
+        /// <param name="sysExcelTemplateService"></param>
+        public WmsAreaService(
+            IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+            IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+            IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
+            ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+            _wmsAreaRep = wmsAreaRep;
+            _sysDictTypeRep = sysDictTypeRep;
+            _sysDictDataRep = sysDictDataRep;
+            _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ搴撳尯淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsAreaOutput>> Page([FromQuery] WmsAreaSearch input)
+        {
+            var wmsAreas = await _wmsAreaRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(input.AreaName), u => EF.Functions.Like(u.AreaName, $"%{input.AreaName.Trim()}%"))
+                .Where(input.AreaStatus != null, u => u.AreaStatus == input.AreaStatus)
+                .Where(input.AreaType != null, u => u.AreaType == input.AreaType)
+                .Where(input.IsSteel != null, u => u.IsSteel == input.IsSteel)
+                .Where(input.WorkShopType != null, u => u.WorkShopType == input.WorkShopType)
+
+                .OrderBy(PageInputOrder.OrderBuilder<WmsAreaSearch>(input))
+                .ProjectToType<WmsAreaOutput>()
+                .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsAreas;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈠簱鍖轰俊鎭垪琛�
+        /// </summary>
+        /// <param name="input">搴撳尯淇℃伅鏌ヨ鍙傛暟</param>
+        /// <returns>(搴撳尯淇℃伅)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<WmsAreaOutput>> ListNonPageAsync([FromQuery] WmsAreaSearchNonPage input)
+        {
+            var pAreaName = input.AreaName?.Trim() ?? "";
+            var pAreaStatus = input.AreaStatus;
+            var pAreaType = input.AreaType;
+            var pIsSteel = input.IsSteel;
+            var pWorkShopType = input.WorkShopType;
+            var pIssueState = input.IssueState;
+            var wmsAreas = await _wmsAreaRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pAreaName), u => EF.Functions.Like(u.AreaName, $"%{pAreaName}%"))
+                .Where(pAreaStatus != null, u => u.AreaStatus == pAreaStatus)
+                .Where(pAreaType != null, u => u.AreaType == pAreaType)
+                .Where(pIsSteel != null, u => u.IsSteel == pIsSteel)
+                .Where(pWorkShopType != null, u => u.WorkShopType == pWorkShopType)
+
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<WmsAreaOutput>()
+            .ToListAsync();
+            return wmsAreas;
+        }
+
+        /// <summary>
+        /// 澧炲姞搴撳尯淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddWmsAreaInput input)
+        {
+            var wmsArea = input.Adapt<WmsArea>();
+            await _wmsAreaRep.InsertAsync(wmsArea);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎搴撳尯淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWmsAreaInput input)
+        {
+            var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsAreaRep.DeleteAsync(wmsArea);
+        }
+
+        /// <summary>
+        /// 鏇存柊搴撳尯淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWmsAreaInput input)
+        {
+            var isExist = await _wmsAreaRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsArea = input.Adapt<WmsArea>();
+            await _wmsAreaRep.UpdateAsync(wmsArea, ignoreNullValues: true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇搴撳尯淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WmsAreaOutput> Get([FromQuery] QueryeWmsAreaInput input)
+        {
+            return (await _wmsAreaRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsAreaOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇搴撳尯淇℃伅鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WmsAreaOutput>> List([FromQuery] WmsAreaInput input)
+        {
+            return await _wmsAreaRep.DetachedEntities.ProjectToType<WmsAreaOutput>().ToListAsync();
+        }
+
+        /// <summary>
+        /// 缁勮杞﹂棿鑾峰彇搴撳尯
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("TaskWmsArea")]
+        public async Task<dynamic> TaskWmsArea()
+        {
+            var list = await _wmsAreaRep.DetachedEntities.Where(x => x.WorkShopType == LesWorkShopType.JIAOHEBANCHEJIAN).ToListAsync();
+            return list.Select(e => new { Code = e.Id, AreaName = e.AreaName });
+        }
+
+        /// <summary>
+        /// 鑾峰彇浠撳簱涓嬫媺妗�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("GetAreaEntranceList")]
+        public async Task<List<AreaEntranceListOutput>> GetAreaEntranceList()
+        {
+            var data = await _wmsAreaRep.DetachedEntities.ProjectToType<WmsAreaOutput>().ToListAsync();
+            List<AreaEntranceListOutput> areaEntranceListOutputLists = new List<AreaEntranceListOutput>();
+            foreach (var item in data)
+            {
+                AreaEntranceListOutput areaEntranceListOutputList = new AreaEntranceListOutput();
+                areaEntranceListOutputList.AreaId = item.Id;
+                areaEntranceListOutputList.AreaName = item.AreaName;
+                areaEntranceListOutputLists.Add(areaEntranceListOutputList);
+            }
+            return areaEntranceListOutputLists;
+        }
+
+        ///// <summary>
+        ///// 鍑哄簱鍙d笅鎷夋
+        ///// </summary>
+        ///// <param name="input"></param>
+        ///// <returns></returns>
+        //[HttpGet("GetEntranceOutList")]
+        //public async Task<List<EntranceListOutput>> GetEntranceOutList([FromQuery] EntranceOutInput input)
+        //{
+        //    var data = await _lesEntranceRep.DetachedEntities.Where(u => u.AreaId == input.Id && u.EntranceType == Core.LesEntranceType.CHUKU).ProjectToType<LesStationOutput>().ToListAsync();
+        //    List<EntranceListOutput> entranceLists = new List<EntranceListOutput>();
+        //    foreach (var item in data)
+        //    {
+        //        EntranceListOutput entranceList = new EntranceListOutput();
+        //        entranceList.EntranceId = item.Id;
+        //        entranceList.EntranceName = item.Name;
+        //        entranceLists.Add(entranceList);
+        //    }
+        //    return entranceLists;
+        //}
+
+        /// <summary>
+        /// Excel妯℃澘瀵煎叆搴撳尯淇℃伅鍔熻兘
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsArea", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++)
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object>> data, out string sheetName);
+            List<WmsAreaOutput> wmsAreaList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsAreaOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = wmsAreaList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsArea>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if (!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsArea, WmsAreaOutput>(selectKeys);
+            List<WmsArea> updates = new();
+            List<WmsArea> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var wmsAreaExistSubList = _wmsAreaRep.Where(filter).Select(selector).ToList();
+                    wmsAreaExistSubList.ForEach(x =>
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+
+                foreach (var wmsArea in wmsAreaList)
+                {
+                    if (wmsArea.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsArea.Adapt<WmsArea>());
+                    }
+                    else
+                    {
+                        adds.Add(wmsArea.Adapt<WmsArea>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsAreaRep.Update(x));
+
+                var maxId = _wmsAreaRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);
+                Db.GetDbContext().Set<WmsArea>().AddRange(adds);
+                Db.GetDbContext().SaveChanges();
+            }
+
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇搴撳尯淇℃伅鐨凟xcel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsArea", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        /// <summary>
+        /// 鏍规嵁搴撳尯淇℃伅鏌ヨ鍙傛暟瀵煎嚭Excel
+        /// </summary>
+        /// <param name="input">搴撳尯淇℃伅鏌ヨ鍙傛暟</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] WmsAreaSearchNonPage input)
+        {
+            var wmsAreaList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(wmsAreaList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsArea", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerDto.cs
new file mode 100644
index 0000000..83a3c37
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerDto.cs
@@ -0,0 +1,102 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鎵樼洏淇℃伅杈撳嚭鍙傛暟
+    /// </summary>
+    public class WmsContainerDto
+    {
+        /// <summary>
+        /// 缂栧彿
+        /// </summary>
+        public string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 绫诲瀷
+        /// </summary>
+        public Admin.NET.Core.ContainerType ContainerType { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏鐘舵��
+        /// </summary>
+        public Admin.NET.Core.ContainerStatus ContainerStatus { get; set; }
+        
+        /// <summary>
+        /// 闀垮害
+        /// </summary>
+        public decimal SpecLength { get; set; }
+        
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public decimal SpecWidth { get; set; }
+        
+        /// <summary>
+        /// 楂樺害
+        /// </summary>
+        public decimal SpecHeight { get; set; }
+        
+        /// <summary>
+        /// 闄愰暱
+        /// </summary>
+        public decimal LimitLength { get; set; }
+        
+        /// <summary>
+        /// 闄愬
+        /// </summary>
+        public decimal LimitWidth { get; set; }
+        
+        /// <summary>
+        /// 闄愰珮
+        /// </summary>
+        public decimal LimitHeight { get; set; }
+        
+        /// <summary>
+        /// 杞介噸涓婇檺
+        /// </summary>
+        public decimal MaxWeight { get; set; }
+        
+        /// <summary>
+        /// 鐖舵墭鐩業d
+        /// </summary>
+        public long ParentContainerId { get; set; }
+        
+        /// <summary>
+        /// 璧勪骇缂栧彿
+        /// </summary>
+        public string AssetNo { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏鍒嗙被
+        /// </summary>
+        public Admin.NET.Core.ContainerCategory ContainerCategory { get; set; }
+        
+        /// <summary>
+        /// Erp鍗曞彿
+        /// </summary>
+        public string ErpNo { get; set; }
+        
+        /// <summary>
+        /// 鏄惁铏氭嫙
+        /// </summary>
+        public Admin.NET.Core.YesOrNot IsVirtually { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public Admin.NET.Core.LesWorkShopType WorkShopType { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerInput.cs
new file mode 100644
index 0000000..aab8232
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerInput.cs
@@ -0,0 +1,311 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 鎵樼洏淇℃伅鏌ヨ鍙傛暟
+    /// </summary>
+    public class WmsContainerSearch : PageInputBase
+    {
+        /// <summary>
+        /// 缂栧彿
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 绫诲瀷
+        /// </summary>
+        public virtual Admin.NET.Core.ContainerType? ContainerType { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.ContainerStatus? ContainerStatus { get; set; }
+        
+        /// <summary>
+        /// 闀垮害
+        /// </summary>
+        public virtual decimal? SpecLength { get; set; }
+        
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public virtual decimal? SpecWidth { get; set; }
+        
+        /// <summary>
+        /// 楂樺害
+        /// </summary>
+        public virtual decimal? SpecHeight { get; set; }
+        
+        /// <summary>
+        /// 闄愰暱
+        /// </summary>
+        public virtual decimal? LimitLength { get; set; }
+        
+        /// <summary>
+        /// 闄愬
+        /// </summary>
+        public virtual decimal? LimitWidth { get; set; }
+        
+        /// <summary>
+        /// 闄愰珮
+        /// </summary>
+        public virtual decimal? LimitHeight { get; set; }
+        
+        /// <summary>
+        /// 杞介噸涓婇檺
+        /// </summary>
+        public virtual decimal? MaxWeight { get; set; }
+        
+        /// <summary>
+        /// 鐖舵墭鐩業d
+        /// </summary>
+        public virtual long? ParentContainerId { get; set; }
+        
+        /// <summary>
+        /// 璧勪骇缂栧彿
+        /// </summary>
+        public virtual string AssetNo { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏鍒嗙被
+        /// </summary>
+        public virtual Admin.NET.Core.ContainerCategory? ContainerCategory { get; set; }
+        
+        /// <summary>
+        /// Erp鍗曞彿
+        /// </summary>
+        public virtual string ErpNo { get; set; }
+        
+        /// <summary>
+        /// 鏄惁铏氭嫙
+        /// </summary>
+        public virtual Admin.NET.Core.YesOrNot IsVirtually { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual Admin.NET.Core.LesWorkShopType? WorkShopType { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 鎵樼洏淇℃伅涓嶅垎椤垫煡璇㈠弬鏁�
+    /// </summary>
+    public class WmsContainerSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 缂栧彿
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 绫诲瀷
+        /// </summary>
+        public virtual Admin.NET.Core.ContainerType? ContainerType { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.ContainerStatus? ContainerStatus { get; set; }
+        
+        /// <summary>
+        /// 闀垮害
+        /// </summary>
+        public virtual decimal? SpecLength { get; set; }
+        
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public virtual decimal? SpecWidth { get; set; }
+        
+        /// <summary>
+        /// 楂樺害
+        /// </summary>
+        public virtual decimal? SpecHeight { get; set; }
+        
+        /// <summary>
+        /// 闄愰暱
+        /// </summary>
+        public virtual decimal? LimitLength { get; set; }
+        
+        /// <summary>
+        /// 闄愬
+        /// </summary>
+        public virtual decimal? LimitWidth { get; set; }
+        
+        /// <summary>
+        /// 闄愰珮
+        /// </summary>
+        public virtual decimal? LimitHeight { get; set; }
+        
+        /// <summary>
+        /// 杞介噸涓婇檺
+        /// </summary>
+        public virtual decimal? MaxWeight { get; set; }
+        
+        /// <summary>
+        /// 鐖舵墭鐩業d
+        /// </summary>
+        public virtual long? ParentContainerId { get; set; }
+        
+        /// <summary>
+        /// 璧勪骇缂栧彿
+        /// </summary>
+        public virtual string AssetNo { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏鍒嗙被
+        /// </summary>
+        public virtual Admin.NET.Core.ContainerCategory? ContainerCategory { get; set; }
+        
+        /// <summary>
+        /// Erp鍗曞彿
+        /// </summary>
+        public virtual string ErpNo { get; set; }
+        
+        /// <summary>
+        /// 鏄惁铏氭嫙
+        /// </summary>
+        public virtual Admin.NET.Core.YesOrNot? IsVirtually { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual Admin.NET.Core.LesWorkShopType? WorkShopType { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鎵樼洏淇℃伅杈撳叆鍙傛暟
+    /// </summary>
+    public class WmsContainerInput
+    {
+        /// <summary>
+        /// 缂栧彿
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 绫诲瀷
+        /// </summary>
+        public virtual Admin.NET.Core.ContainerType ContainerType { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.ContainerStatus ContainerStatus { get; set; }
+        
+        /// <summary>
+        /// 闀垮害
+        /// </summary>
+        public virtual decimal SpecLength { get; set; }
+        
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public virtual decimal SpecWidth { get; set; }
+        
+        /// <summary>
+        /// 楂樺害
+        /// </summary>
+        public virtual decimal SpecHeight { get; set; }
+        
+        /// <summary>
+        /// 闄愰暱
+        /// </summary>
+        public virtual decimal LimitLength { get; set; }
+        
+        /// <summary>
+        /// 闄愬
+        /// </summary>
+        public virtual decimal LimitWidth { get; set; }
+        
+        /// <summary>
+        /// 闄愰珮
+        /// </summary>
+        public virtual decimal LimitHeight { get; set; }
+        
+        /// <summary>
+        /// 杞介噸涓婇檺
+        /// </summary>
+        public virtual decimal MaxWeight { get; set; }
+        
+        /// <summary>
+        /// 鐖舵墭鐩業d
+        /// </summary>
+        public virtual long ParentContainerId { get; set; }
+        
+        /// <summary>
+        /// 璧勪骇缂栧彿
+        /// </summary>
+        public virtual string AssetNo { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏鍒嗙被
+        /// </summary>
+        public virtual Admin.NET.Core.ContainerCategory ContainerCategory { get; set; }
+        
+        /// <summary>
+        /// Erp鍗曞彿
+        /// </summary>
+        public virtual string ErpNo { get; set; }
+        
+        /// <summary>
+        /// 鏄惁铏氭嫙
+        /// </summary>
+        public virtual Admin.NET.Core.YesOrNot IsVirtually { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual Admin.NET.Core.LesWorkShopType WorkShopType { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+    public class AddWmsContainerInput : WmsContainerInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "鏁伴噺涓嶈兘涓虹┖")]
+        public long Quantity { get; set; }
+    }
+
+    public class DeleteWmsContainerInput : BaseId
+    {
+    }
+
+    public class UpdateWmsContainerInput : WmsContainerInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    public class QueryeWmsContainerInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerOutput.cs
new file mode 100644
index 0000000..87cbb47
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerOutput.cs
@@ -0,0 +1,102 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鎵樼洏淇℃伅杈撳嚭鍙傛暟
+    /// </summary>
+    public class WmsContainerOutput
+    {
+        /// <summary>
+        /// 缂栧彿
+        /// </summary>
+        public string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 绫诲瀷
+        /// </summary>
+        public Admin.NET.Core.ContainerType ContainerType { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏鐘舵��
+        /// </summary>
+        public Admin.NET.Core.ContainerStatus ContainerStatus { get; set; }
+        
+        /// <summary>
+        /// 闀垮害
+        /// </summary>
+        public decimal SpecLength { get; set; }
+        
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public decimal SpecWidth { get; set; }
+        
+        /// <summary>
+        /// 楂樺害
+        /// </summary>
+        public decimal SpecHeight { get; set; }
+        
+        /// <summary>
+        /// 闄愰暱
+        /// </summary>
+        public decimal LimitLength { get; set; }
+        
+        /// <summary>
+        /// 闄愬
+        /// </summary>
+        public decimal LimitWidth { get; set; }
+        
+        /// <summary>
+        /// 闄愰珮
+        /// </summary>
+        public decimal LimitHeight { get; set; }
+        
+        /// <summary>
+        /// 杞介噸涓婇檺
+        /// </summary>
+        public decimal MaxWeight { get; set; }
+        
+        /// <summary>
+        /// 鐖舵墭鐩業d
+        /// </summary>
+        public long ParentContainerId { get; set; }
+        
+        /// <summary>
+        /// 璧勪骇缂栧彿
+        /// </summary>
+        public string AssetNo { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏鍒嗙被
+        /// </summary>
+        public Admin.NET.Core.ContainerCategory ContainerCategory { get; set; }
+        
+        /// <summary>
+        /// Erp鍗曞彿
+        /// </summary>
+        public string ErpNo { get; set; }
+        
+        /// <summary>
+        /// 鏄惁铏氭嫙
+        /// </summary>
+        public Admin.NET.Core.YesOrNot IsVirtually { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public Admin.NET.Core.LesWorkShopType WorkShopType { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/IWmsContainerService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/IWmsContainerService.cs
new file mode 100644
index 0000000..dd88e4b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/IWmsContainerService.cs
@@ -0,0 +1,73 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface IWmsContainerService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task Add(AddWmsContainerInput input);
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task Delete(DeleteWmsContainerInput input);
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<WmsContainerOutput> Get([FromQuery] QueryeWmsContainerInput input);
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<WmsContainerOutput>> List([FromQuery] WmsContainerInput input);
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<WmsContainerOutput>> Page([FromQuery] WmsContainerSearch input);
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task Update(UpdateWmsContainerInput input);
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+
+        Task<List<WmsContainerOutput>> ListNonPageAsync([FromQuery] WmsContainerSearchNonPage input);
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="file"></param>
+        /// <param name="importExcelType"></param>
+        /// <returns></returns>
+
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="version"></param>
+        /// <returns></returns>
+
+        Task<IActionResult> DownloadExcelTemplate(string version);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Map/WmsContainerMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Map/WmsContainerMapper.cs
new file mode 100644
index 0000000..ade3147
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Map/WmsContainerMapper.cs
@@ -0,0 +1,25 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class WmsContainerMapper : IRegister
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="config"></param>
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddWmsContainerInput, WmsContainer>()
+            ;
+            config.ForType<UpdateWmsContainerInput, WmsContainer>()
+            ;
+            config.ForType<WmsContainer, WmsContainerOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/WmsContainerService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/WmsContainerService.cs
new file mode 100644
index 0000000..28707e3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/WmsContainerService.cs
@@ -0,0 +1,303 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鎵樼洏淇℃伅鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsContainer", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsContainerService : IWmsContainerService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsContainer,MasterDbContextLocator> _wmsContainerRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public WmsContainerService(
+             IRepository<WmsContainer,MasterDbContextLocator> wmsContainerRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+             _wmsContainerRep = wmsContainerRep;
+             _sysDictTypeRep = sysDictTypeRep;
+             _sysDictDataRep = sysDictDataRep;
+             _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鎵樼洏淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsContainerOutput>> Page([FromQuery] WmsContainerSearch input)
+        {
+            var wmsContainers = await _wmsContainerRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
+                .Where(input.ContainerType != null, u => u.ContainerType == input.ContainerType)
+                .Where(input.ContainerStatus != null, u => u.ContainerStatus == input.ContainerStatus)
+                .Where(input.SpecLength != null, u => u.SpecLength == input.SpecLength)
+                .Where(input.SpecWidth != null, u => u.SpecWidth == input.SpecWidth)
+                .Where(input.ContainerCategory != null, u => u.ContainerCategory == input.ContainerCategory)
+                .Where(input.WorkShopType != null, u => u.WorkShopType == input.WorkShopType)
+                .OrderBy(PageInputOrder.OrderBuilder<WmsContainerSearch>(input))
+                .ProjectToType<WmsContainerOutput>()
+                .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsContainers;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈡墭鐩樹俊鎭垪琛�
+        /// </summary>
+        /// <param name="input">鎵樼洏淇℃伅鏌ヨ鍙傛暟</param>
+        /// <returns>(鎵樼洏淇℃伅)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<WmsContainerOutput>> ListNonPageAsync([FromQuery] WmsContainerSearchNonPage input)
+        {
+            var pContainerCode = input.ContainerCode?.Trim() ?? "";
+            var pContainerType = input.ContainerType;
+            var pContainerStatus = input.ContainerStatus;
+            var pSpecLength = input.SpecLength;
+            var pSpecWidth = input.SpecWidth;
+            var pContainerCategory = input.ContainerCategory;
+            var pWorkShopType = input.WorkShopType;
+            var wmsContainers = await _wmsContainerRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{pContainerCode}%")) 
+                .Where(pContainerType != null, u => u.ContainerType == pContainerType)
+                .Where(pContainerStatus != null, u => u.ContainerStatus == pContainerStatus)
+                .Where(pSpecLength != null, u => u.SpecLength == pSpecLength)
+                .Where(pSpecWidth != null, u => u.SpecWidth == pSpecWidth)
+                .Where(pContainerCategory != null, u => u.ContainerCategory == pContainerCategory)
+                .Where(pWorkShopType != null, u => u.WorkShopType == pWorkShopType)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<WmsContainerOutput>()
+            .ToListAsync();
+            return wmsContainers;
+        }
+
+
+        /// <summary>
+        /// 澧炲姞鎵樼洏淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddWmsContainerInput input)
+        {
+            var isExist = await _wmsContainerRep.AnyAsync(u => u.ContainerCode == input.ContainerCode, false);
+            if (isExist) throw Oops.Oh($"褰撳墠鎵樼洏宸插瓨鍦紝鏂板澶辫触锛�");
+
+            var ContainerInfo = input.Adapt<WmsContainer>();
+            ContainerInfo.ContainerStatus = ContainerStatus.KOUXIAN;
+            ContainerInfo.AssetNo = "N/A";
+            ContainerInfo.ContainerCategory = ContainerCategory.GZP;
+            ContainerInfo.ErpNo = "N/A"; 
+            ContainerInfo.IsVirtually = YesOrNot.N;
+            ContainerInfo.WorkShopType = LesWorkShopType.FAPAOCHEJIAN;
+            await _wmsContainerRep.InsertAsync(ContainerInfo);
+            //string ContainerCode = "ZHONGTONG";
+            //if (input.SpecLength == 1250)
+            //{
+            //    ContainerCode = "YKA";
+            //}
+            //else if (input.SpecLength == 1050)
+            //{
+            //    ContainerCode = "YKB";
+            //}
+            //else if (input.SpecLength == 800)
+            //{
+            //    ContainerCode = "YKC";
+            //}
+            //var wmsContainerModal = await _wmsContainerRep.DetachedEntities.Where(u => u.ContainerCode.Contains(input.ContainerCode))
+            //    .ProjectToType<WmsContainerOutput>()
+            //    .OrderByDescending(u => u.ContainerCode)
+            //    .FirstOrDefaultAsync();
+            //int a = 0;
+            //if (wmsContainerModal != null)
+            //{
+            //    a = Convert.ToInt32(wmsContainerModal.ContainerCode.Substring(wmsContainerModal.ContainerCode.Length - 5));
+            //}
+            //for (int i = a + 1; i <= a + input.Quantity; i++)
+            //{
+            //    var wmsContainer = input.Adapt<WmsContainer>();
+            //    wmsContainer.AssetNo = "N/A";
+            //    wmsContainer.ErpNo = "N/A";
+            //    wmsContainer.IsVirtually = YesOrNot.N;
+            //    wmsContainer.IsDeleted = false;;
+            //    wmsContainer.ContainerCode = ContainerCode + i.ToString("00000");
+            //    await _wmsContainerRep.InsertAsync(wmsContainer);
+            //}
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鎵樼洏淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWmsContainerInput input)
+        {
+            var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsContainerRep.DeleteAsync(wmsContainer);
+        }
+
+        /// <summary>
+        /// 鏇存柊鎵樼洏淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWmsContainerInput input)
+        {
+            var isExist = await _wmsContainerRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsContainer = input.Adapt<WmsContainer>();
+            await _wmsContainerRep.UpdateAsync(wmsContainer,ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵樼洏淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WmsContainerOutput> Get([FromQuery] QueryeWmsContainerInput input)
+        {
+            return (await _wmsContainerRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsContainerOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵樼洏淇℃伅鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WmsContainerOutput>> List([FromQuery] WmsContainerInput input)
+        {
+            return await _wmsContainerRep.DetachedEntities.ProjectToType<WmsContainerOutput>().ToListAsync();
+        }    
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆鎵樼洏淇℃伅鍔熻兘
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsContainer", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++) 
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object>> data, out string sheetName);
+            List<WmsContainerOutput> wmsContainerList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsContainerOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = wmsContainerList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsContainer>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsContainer, WmsContainerOutput>(selectKeys);
+            List<WmsContainer> updates = new();
+            List<WmsContainer> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var wmsContainerExistSubList = _wmsContainerRep.Where(filter).Select(selector).ToList();
+                    wmsContainerExistSubList.ForEach(x => 
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+                foreach (var wmsContainer in wmsContainerList) 
+                {
+                    if (wmsContainer.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsContainer.Adapt<WmsContainer>());
+                    }
+                    else 
+                    {
+                        adds.Add(wmsContainer.Adapt<WmsContainer>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsContainerRep.Update(x));
+                
+
+                var maxId = _wmsContainerRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);    
+                Db.GetDbContext().Set<WmsContainer>().AddRange(adds);  
+                Db.GetDbContext().SaveChanges();
+               
+            }
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇鎵樼洏淇℃伅鐨凟xcel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsContainer", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+        /// <summary>
+        /// 鏍规嵁鎵樼洏淇℃伅鏌ヨ鍙傛暟瀵煎嚭Excel
+        /// </summary>
+        /// <param name="input">鎵樼洏淇℃伅鏌ヨ鍙傛暟</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] WmsContainerSearchNonPage input)
+        {
+            var wmsContainerList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(wmsContainerList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsContainer", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialDto.cs
new file mode 100644
index 0000000..5e4efad
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialDto.cs
@@ -0,0 +1,70 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐗╂枡淇℃伅
+    /// </summary>
+    public class WmsMaterialDto
+    {
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string MaterialName { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public string MaterialBatch { get; set; }
+        
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        public string Description { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡绫诲埆
+        /// </summary>
+        public MaterialType? MaterialType { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public string MaterialSpec { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public string MaterialDensity { get; set; }
+        
+        /// <summary>
+        /// 搴撳尯鍙傛暟
+        /// </summary>
+        public string AreaNameParameter { get; set; }
+        
+        /// <summary>
+        /// 宸ヤ綔鍖哄弬鏁�
+        /// </summary>
+        public string StationNameParameter { get; set; }
+        
+        /// <summary>
+        /// 鐔熷寲鏃堕棿
+        /// </summary>
+        public int MaturationTime { get; set; }
+        
+        /// <summary>
+        /// 鏄惁闇�瑕佺啛鍖�
+        /// </summary>
+        public bool? IsMaturation { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialInput.cs
new file mode 100644
index 0000000..0914106
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialInput.cs
@@ -0,0 +1,261 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐗╂枡淇℃伅鏌ヨ鍙傛暟
+    /// </summary>
+    public class WmsMaterialSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public virtual string MaterialName { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public virtual string MaterialNo { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public virtual string MaterialBatch { get; set; }
+        
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        public virtual string Description { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡绫诲埆
+        /// </summary>
+        public virtual MaterialType? MaterialType { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public virtual string MaterialSpec { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public virtual string MaterialDensity { get; set; }
+
+
+        /// <summary>
+        /// 鐗╂枡鍗曚綅
+        /// </summary>
+        /// 
+        public string MaterialUnit { get; set; }
+
+        /// <summary>
+        /// 搴撳尯鍙傛暟
+        /// </summary>
+        public virtual string AreaNameParameter { get; set; }
+        
+        /// <summary>
+        /// 宸ヤ綔鍖哄弬鏁�
+        /// </summary>
+        public virtual string StationNameParameter { get; set; }
+        
+        /// <summary>
+        /// 鐔熷寲鏃堕棿
+        /// </summary>
+        public virtual int? MaturationTime { get; set; }
+        
+        /// <summary>
+        /// 鏄惁闇�瑕佺啛鍖�
+        /// </summary>
+        public virtual bool? IsMaturation { get; set; }
+
+
+        //1217
+
+        /// <summary>
+        /// 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+        /// </summary>
+
+        public MaterialInspection InspectionMethod { get; set; }
+
+
+        /// <summary>
+        /// 瀹夊叏瀛橀噺
+        /// </summary>
+
+        public decimal Safeqty { get; set; }
+
+        /// <summary>
+        /// 鏈�澶у瓨閲�
+        /// </summary>
+
+        public decimal MaxImumqty { get; set; }
+
+        /// <summary>
+        /// 鏈�灏忓簱榫�
+        /// </summary>
+
+        public decimal MinstorageAge { get; set; }
+
+        /// <summary>
+        /// 鏈�澶у簱榫�
+        /// </summary>
+
+        public decimal MaxstorageAge { get; set; }
+      
+    }
+
+    /// <summary>
+    /// 鐗╂枡淇℃伅杈撳叆鍙傛暟
+    /// </summary>
+    public class WmsMaterialInput
+    {
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public virtual string MaterialName { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public virtual string MaterialNo { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public virtual string MaterialBatch { get; set; }
+        
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        public virtual string Description { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡绫诲埆
+        /// </summary>
+        public virtual MaterialType? MaterialType { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public virtual string MaterialSpec { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public virtual string MaterialDensity { get; set; }
+
+
+        /// <summary>
+        /// 鐗╂枡鍗曚綅
+        /// </summary>
+        /// 
+        public string MaterialUnit { get; set; }
+
+
+        /// <summary>
+        /// 搴撳尯Ids
+        /// </summary>
+
+        public string AreaIds { get; set; }
+
+        /// <summary>
+        /// 搴撳尯鍙傛暟
+        /// </summary>
+        public virtual string AreaNameParameter { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔鍖篒ds
+        /// </summary>
+
+        public string StationIds { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔鍖哄弬鏁�
+        /// </summary>
+        public virtual string StationNameParameter { get; set; }
+        
+        /// <summary>
+        /// 鐔熷寲鏃堕棿
+        /// </summary>
+        public virtual int MaturationTime { get; set; }
+        
+        /// <summary>
+        /// 鏄惁闇�瑕佺啛鍖�
+        /// </summary>
+        public virtual bool IsMaturation { get; set; }
+
+        /// <summary>
+        /// 宸ユ
+        /// </summary>
+        public LesWorkshopSection? LesWorkshopSection { get; set; }
+
+        //1217
+
+        /// <summary>
+        /// 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+        /// </summary>
+
+        public MaterialInspection InspectionMethod { get; set; }
+        /// <summary>
+        /// 瀹夊叏瀛橀噺
+        /// </summary>
+        public decimal Safeqty { get; set; }
+
+        /// <summary>
+        /// 鏈�澶у瓨閲�
+        /// </summary>
+
+        public decimal MaxImumqty { get; set; }
+
+        /// <summary>
+        /// 鏈�灏忓簱榫�
+        /// </summary>
+
+        public decimal MinstorageAge { get; set; }
+
+        /// <summary>
+        /// 鏈�澶у簱榫�
+        /// </summary>
+
+        public decimal MaxstorageAge { get; set; }
+
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddWmsMaterialInput : WmsMaterialInput
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteWmsMaterialInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateWmsMaterialInput : WmsMaterialInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryeWmsMaterialInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialOutput.cs
new file mode 100644
index 0000000..f93ade9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialOutput.cs
@@ -0,0 +1,152 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐗╂枡淇℃伅杈撳嚭鍙傛暟
+    /// </summary>
+    public class WmsMaterialOutput
+    {
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string MaterialName { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public string MaterialBatch { get; set; }
+        
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        public string Description { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡绫诲埆
+        /// </summary>
+        public MaterialType MaterialType { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public string MaterialSpec { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public string MaterialDensity { get; set; }
+        /// <summary>
+        /// 鐗╂枡鍗曚綅
+        /// </summary>
+        /// 
+        public string MaterialUnit { get; set; }
+        /// <summary>
+        /// 搴撳尯Ids
+        /// </summary>
+        public string AreaIds { get; set; }
+
+        /// <summary>
+        /// 搴撳尯鍙傛暟
+        /// </summary>
+        public string AreaNameParameter { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔鍖篒ds
+        /// </summary>
+        public string StationIds { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔鍖哄弬鏁�
+        /// </summary>
+        public string StationNameParameter { get; set; }
+        
+        /// <summary>
+        /// 鐔熷寲鏃堕棿
+        /// </summary>
+        public int MaturationTime { get; set; }
+        
+        /// <summary>
+        /// 鏄惁闇�瑕佺啛鍖�
+        /// </summary>
+        public bool IsMaturation { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+
+        //1217
+
+        /// <summary>
+        /// 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+        /// </summary>
+
+        public MaterialInspection InspectionMethod { get; set; }
+        /// <summary>
+        /// 瀹夊叏瀛橀噺
+        /// </summary>
+        public decimal Safeqty { get; set; }
+
+        /// <summary>
+        /// 鏈�澶у瓨閲�
+        /// </summary>
+
+        public decimal MaxImumqty { get; set; }
+
+        /// <summary>
+        /// 鏈�灏忓簱榫�
+        /// </summary>
+
+        public decimal MinstorageAge { get; set; }
+
+        /// <summary>
+        /// 鏈�澶у簱榫�
+        /// </summary>
+
+        public decimal MaxstorageAge { get; set; }
+
+       
+
+
+    }
+
+    /// <summary>
+    /// 搴撳尯涓嬫媺妗嗚緭鍑哄弬鏁�
+    /// </summary>
+    public class AreaListOutput
+    {
+        /// <summary>
+        /// 鎵�鍦ㄥ簱鍖篒d
+        /// </summary>
+        public string AreaId { get; set; }
+
+        /// <summary>
+        /// 搴撳尯鍚嶇О
+        /// </summary>
+        public string AreaName { get; set; }
+    }
+
+    /// <summary>
+    /// 宸ヤ綔鍖猴紙宸ヤ綅锛変笅鎷夋杈撳嚭鍙傛暟
+    /// </summary>
+    public class StationListOutput
+    {
+        /// <summary>
+        /// 绔欑偣Id
+        /// </summary>
+        public string StationId { get; set; }
+
+        /// <summary>
+        /// 绔欑偣鍚嶇О
+        /// </summary>
+        public string StationName { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/WmsMaterialService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/WmsMaterialService.cs
new file mode 100644
index 0000000..0613d96
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/WmsMaterialService.cs
@@ -0,0 +1,157 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐗╂枡淇℃伅鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsMaterial", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsMaterialService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsMaterial, MasterDbContextLocator> _wmsMaterialRep;
+        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+        private readonly IRepository<LesStation, MasterDbContextLocator> _lesStationRep;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public WmsMaterialService(
+            IRepository<WmsMaterial, MasterDbContextLocator> wmsMaterialRep,
+            IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+            IRepository<LesStation, MasterDbContextLocator> lesStationRep
+        )
+        {
+            _wmsMaterialRep = wmsMaterialRep;
+            _wmsAreaRep = wmsAreaRep;
+            _lesStationRep = lesStationRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鐗╂枡淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsMaterialOutput>> Page([FromQuery] WmsMaterialSearch input)
+        {
+            var wmsMaterials = await _wmsMaterialRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(input.MaterialName), u => EF.Functions.Like(u.MaterialName, $"%{input.MaterialName.Trim()}%"))
+                .Where(input.MaterialType != null, u => u.MaterialType == input.MaterialType)
+                .Where(!string.IsNullOrEmpty(input.MaterialSpec), u => EF.Functions.Like(u.MaterialSpec, $"%{input.MaterialSpec.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.MaterialDensity), u => EF.Functions.Like(u.MaterialDensity, $"%{input.MaterialDensity.Trim()}%"))
+                //.Where(input.IsMaturation != null, u => u.IsMaturation == input.IsMaturation)
+                .OrderBy(PageInputOrder.OrderBuilder<WmsMaterialSearch>(input))
+                .ProjectToType<WmsMaterialOutput>()
+                .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsMaterials;
+        }
+
+        /// <summary>
+        /// 澧炲姞鐗╂枡淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddWmsMaterialInput input)
+        {
+            var wmsMaterial = input.Adapt<WmsMaterial>();
+            await _wmsMaterialRep.InsertAsync(wmsMaterial);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鐗╂枡淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWmsMaterialInput input)
+        {
+            var wmsMaterial = await _wmsMaterialRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsMaterialRep.DeleteAsync(wmsMaterial);
+        }
+
+        /// <summary>
+        /// 鏇存柊鐗╂枡淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWmsMaterialInput input)
+        {
+            var isExist = await _wmsMaterialRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsMaterial = input.Adapt<WmsMaterial>();
+            await _wmsMaterialRep.UpdateAsync(wmsMaterial, ignoreNullValues: true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐗╂枡淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WmsMaterialOutput> Get([FromQuery] QueryeWmsMaterialInput input)
+        {
+            return (await _wmsMaterialRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsMaterialOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐗╂枡淇℃伅鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WmsMaterialOutput>> List([FromQuery] WmsMaterialInput input)
+        {
+            return await _wmsMaterialRep.DetachedEntities.ProjectToType<WmsMaterialOutput>().ToListAsync();
+        }
+
+        /// <summary>
+        /// 搴撳尯涓嬫媺妗�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("GetAreaList")]
+        public async Task<List<AreaListOutput>> GetAreaList()
+        {
+            var data = await _wmsAreaRep.DetachedEntities.ProjectToType<WmsAreaOutput>().ToListAsync();
+            List<AreaListOutput> areaListOutputLists = new List<AreaListOutput>();
+            foreach (var item in data)
+            {
+                AreaListOutput areaListOutputList = new AreaListOutput();
+                areaListOutputList.AreaId = item.Id.ToString();
+                areaListOutputList.AreaName = item.AreaName;
+                areaListOutputLists.Add(areaListOutputList);
+            }
+            return areaListOutputLists;
+        }
+
+        /// <summary>
+        /// 宸ヤ綔鍖猴紙宸ヤ綅锛変笅鎷夋
+        /// </summary>
+        /// <returns></returns>
+        //[HttpGet("GetStationList")]
+        //public async Task<List<StationListOutput>> GetStationList()
+        //{
+        //    var data = await _lesStationRep.DetachedEntities.ProjectToType<LesStationOutput>().ToListAsync();
+        //    List<StationListOutput> stationListOutputLists = new List<StationListOutput>();
+        //    foreach (var item in data)
+        //    {
+        //        StationListOutput stationListOutputList = new StationListOutput();
+        //        stationListOutputList.StationId = item.Id.ToString();
+        //        stationListOutputList.StationName = item.Name;
+        //        stationListOutputLists.Add(stationListOutputList);
+        //    }
+        //    return stationListOutputLists;
+        //}
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoDto.cs
new file mode 100644
index 0000000..518c683
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoDto.cs
@@ -0,0 +1,82 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀹㈠晢淇℃伅琛ㄨ緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsMerchantinfoDto
+    {
+        /// <summary>
+        /// 瀹㈠晢缂栧彿
+        /// </summary>
+        public string MerchantNo { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍚嶇О
+        /// </summary>
+        public string MerchantName { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍒嗙被
+        /// </summary>
+        public Admin.NET.Core.MerchantType MerchantType { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢绠�绉�
+        /// </summary>
+        public string MerchantShort { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢绛夌骇
+        /// </summary>
+        public Admin.NET.Core.MerchantGrade MerchantGrade { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢灞炴��
+        /// </summary>
+        public string MerchantAttribute { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢琛屼笟
+        /// </summary>
+        public string MerchantTmt { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鑱旂郴浜�
+        /// </summary>
+        public string MerchantContact { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鐢佃瘽
+        /// </summary>
+        public string MerchantPhone { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢浼犵湡
+        /// </summary>
+        public string MerchantFax { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢閭
+        /// </summary>
+        public string MerchantEmail { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍦板潃
+        /// </summary>
+        public string MerchantAddress { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoInput.cs
new file mode 100644
index 0000000..a7741f7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoInput.cs
@@ -0,0 +1,246 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁�
+    /// </summary>
+    public class WmsMerchantinfoSearch : PageInputBase
+    {
+        /// <summary>
+        /// 瀹㈠晢缂栧彿
+        /// </summary>
+        public virtual string MerchantNo { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍚嶇О
+        /// </summary>
+        public virtual string MerchantName { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍒嗙被
+        /// </summary>
+        public virtual Admin.NET.Core.MerchantType? MerchantType { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢绠�绉�
+        /// </summary>
+        public virtual string MerchantShort { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢绛夌骇
+        /// </summary>
+        public virtual Admin.NET.Core.MerchantGrade? MerchantGrade { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢灞炴��
+        /// </summary>
+        public virtual string MerchantAttribute { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢琛屼笟
+        /// </summary>
+        public virtual string MerchantTmt { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鑱旂郴浜�
+        /// </summary>
+        public virtual string MerchantContact { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鐢佃瘽
+        /// </summary>
+        public virtual string MerchantPhone { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢浼犵湡
+        /// </summary>
+        public virtual string MerchantFax { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢閭
+        /// </summary>
+        public virtual string MerchantEmail { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍦板潃
+        /// </summary>
+        public virtual string MerchantAddress { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 瀹㈠晢淇℃伅琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+    /// </summary>
+    public class WmsMerchantinfoSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 瀹㈠晢缂栧彿
+        /// </summary>
+        public virtual string? MerchantNo { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍚嶇О
+        /// </summary>
+        public virtual string? MerchantName { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍒嗙被
+        /// </summary>
+        public virtual Admin.NET.Core.MerchantType? MerchantType { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢绠�绉�
+        /// </summary>
+        public virtual string? MerchantShort { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢绛夌骇
+        /// </summary>
+        public virtual Admin.NET.Core.MerchantGrade? MerchantGrade { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢灞炴��
+        /// </summary>
+        public virtual string? MerchantAttribute { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢琛屼笟
+        /// </summary>
+        public virtual string? MerchantTmt { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鑱旂郴浜�
+        /// </summary>
+        public virtual string? MerchantContact { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鐢佃瘽
+        /// </summary>
+        public virtual string? MerchantPhone { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢浼犵湡
+        /// </summary>
+        public virtual string? MerchantFax { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢閭
+        /// </summary>
+        public virtual string? MerchantEmail { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍦板潃
+        /// </summary>
+        public virtual string? MerchantAddress { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 瀹㈠晢淇℃伅琛ㄨ緭鍏ュ弬鏁�
+    /// </summary>
+    public class WmsMerchantinfoInput
+    {
+        /// <summary>
+        /// 瀹㈠晢缂栧彿
+        /// </summary>
+        public virtual string MerchantNo { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍚嶇О
+        /// </summary>
+        public virtual string MerchantName { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍒嗙被
+        /// </summary>
+        public virtual Admin.NET.Core.MerchantType? MerchantType { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢绠�绉�
+        /// </summary>
+        public virtual string MerchantShort { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢绛夌骇
+        /// </summary>
+        public virtual Admin.NET.Core.MerchantGrade? MerchantGrade { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢灞炴��
+        /// </summary>
+        public virtual string MerchantAttribute { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢琛屼笟
+        /// </summary>
+        public virtual string MerchantTmt { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鑱旂郴浜�
+        /// </summary>
+        public virtual string MerchantContact { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鐢佃瘽
+        /// </summary>
+        public virtual string MerchantPhone { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢浼犵湡
+        /// </summary>
+        public virtual string MerchantFax { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢閭
+        /// </summary>
+        public virtual string MerchantEmail { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍦板潃
+        /// </summary>
+        public virtual string MerchantAddress { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+    public class AddWmsMerchantinfoInput : WmsMerchantinfoInput
+    {
+    }
+
+    public class DeleteWmsMerchantinfoInput : BaseId
+    {
+    }
+
+    public class UpdateWmsMerchantinfoInput : WmsMerchantinfoInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    public class QueryeWmsMerchantinfoInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoOutput.cs
new file mode 100644
index 0000000..87de0cd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoOutput.cs
@@ -0,0 +1,82 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀹㈠晢淇℃伅琛ㄨ緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsMerchantinfoOutput
+    {
+        /// <summary>
+        /// 瀹㈠晢缂栧彿
+        /// </summary>
+        public string MerchantNo { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍚嶇О
+        /// </summary>
+        public string MerchantName { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍒嗙被
+        /// </summary>
+        public Admin.NET.Core.MerchantType MerchantType { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢绠�绉�
+        /// </summary>
+        public string MerchantShort { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢绛夌骇
+        /// </summary>
+        public Admin.NET.Core.MerchantGrade MerchantGrade { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢灞炴��
+        /// </summary>
+        public string MerchantAttribute { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢琛屼笟
+        /// </summary>
+        public string MerchantTmt { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鑱旂郴浜�
+        /// </summary>
+        public string MerchantContact { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鐢佃瘽
+        /// </summary>
+        public string MerchantPhone { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢浼犵湡
+        /// </summary>
+        public string MerchantFax { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢閭
+        /// </summary>
+        public string MerchantEmail { get; set; }
+        
+        /// <summary>
+        /// 瀹㈠晢鍦板潃
+        /// </summary>
+        public string MerchantAddress { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/IWmsMerchantinfoService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/IWmsMerchantinfoService.cs
new file mode 100644
index 0000000..211264c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/IWmsMerchantinfoService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface IWmsMerchantinfoService
+    {
+        Task Add(AddWmsMerchantinfoInput input);
+        Task Delete(DeleteWmsMerchantinfoInput input);
+        Task<WmsMerchantinfoOutput> Get([FromQuery] QueryeWmsMerchantinfoInput input);
+        Task<List<WmsMerchantinfoOutput>> List([FromQuery] WmsMerchantinfoInput input);
+        Task<PageResult<WmsMerchantinfoOutput>> Page([FromQuery] WmsMerchantinfoSearch input);
+        Task Update(UpdateWmsMerchantinfoInput input);
+
+        Task<List<WmsMerchantinfoOutput>> ListNonPageAsync([FromQuery] WmsMerchantinfoSearchNonPage input);
+
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+        Task<IActionResult> DownloadExcelTemplate(string version);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Map/WmsMerchantinfoMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Map/WmsMerchantinfoMapper.cs
new file mode 100644
index 0000000..fcab3d7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Map/WmsMerchantinfoMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class WmsMerchantinfoMapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddWmsMerchantinfoInput, WmsMerchantinfo>()
+            ;
+            config.ForType<UpdateWmsMerchantinfoInput, WmsMerchantinfo>()
+            ;
+            config.ForType<WmsMerchantinfo, WmsMerchantinfoOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/WmsMerchantinfoService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/WmsMerchantinfoService.cs
new file mode 100644
index 0000000..0e69257
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/WmsMerchantinfoService.cs
@@ -0,0 +1,253 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀹㈠晢淇℃伅琛ㄦ湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsMerchantinfo", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsMerchantinfoService : IWmsMerchantinfoService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsMerchantinfo,MasterDbContextLocator> _wmsMerchantinfoRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        public WmsMerchantinfoService(
+            IRepository<WmsMerchantinfo,MasterDbContextLocator> wmsMerchantinfoRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+            _wmsMerchantinfoRep = wmsMerchantinfoRep;
+         _sysDictTypeRep = sysDictTypeRep;
+         _sysDictDataRep = sysDictDataRep;
+         _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ瀹㈠晢淇℃伅琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsMerchantinfoOutput>> Page([FromQuery] WmsMerchantinfoSearch input)
+        {
+            var wmsMerchantinfos = await _wmsMerchantinfoRep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.MerchantNo), u => EF.Functions.Like(u.MerchantNo, $"%{input.MerchantNo.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.MerchantName), u => EF.Functions.Like(u.MerchantName, $"%{input.MerchantName.Trim()}%"))
+                                     .Where(input.MerchantType != null, u => u.MerchantType == input.MerchantType)
+                                     .Where(input.MerchantGrade != null, u => u.MerchantGrade == input.MerchantGrade)
+                                     .Where(!string.IsNullOrEmpty(input.MerchantTmt), u => EF.Functions.Like(u.MerchantTmt, $"%{input.MerchantTmt.Trim()}%"))
+                                     .OrderBy(PageInputOrder.OrderBuilder<WmsMerchantinfoSearch>(input))
+                                     .ProjectToType<WmsMerchantinfoOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsMerchantinfos;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈠鍟嗕俊鎭〃鍒楄〃
+        /// </summary>
+        /// <param name="input">瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁�</param>
+        /// <returns>(瀹㈠晢淇℃伅琛�)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<WmsMerchantinfoOutput>> ListNonPageAsync([FromQuery] WmsMerchantinfoSearchNonPage input)
+        {
+            var pMerchantNo = input.MerchantNo?.Trim() ?? "";
+            var pMerchantName = input.MerchantName?.Trim() ?? "";
+            var pMerchantType = input.MerchantType;
+            var pMerchantGrade = input.MerchantGrade;
+            var pMerchantTmt = input.MerchantTmt?.Trim() ?? "";
+            var wmsMerchantinfos = await _wmsMerchantinfoRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pMerchantNo), u => EF.Functions.Like(u.MerchantNo, $"%{pMerchantNo}%")) 
+                .Where(!string.IsNullOrEmpty(pMerchantName), u => EF.Functions.Like(u.MerchantName, $"%{pMerchantName}%")) 
+                .Where(pMerchantType != null, u => u.MerchantType == pMerchantType)
+                .Where(pMerchantGrade != null, u => u.MerchantGrade == pMerchantGrade)
+                .Where(!string.IsNullOrEmpty(pMerchantTmt), u => EF.Functions.Like(u.MerchantTmt, $"%{pMerchantTmt}%")) 
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<WmsMerchantinfoOutput>()
+            .ToListAsync();
+            return wmsMerchantinfos;
+        }
+
+
+        /// <summary>
+        /// 澧炲姞瀹㈠晢淇℃伅琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddWmsMerchantinfoInput input)
+        {
+            var wmsMerchantinfo = input.Adapt<WmsMerchantinfo>();
+            await _wmsMerchantinfoRep.InsertAsync(wmsMerchantinfo);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎瀹㈠晢淇℃伅琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWmsMerchantinfoInput input)
+        {
+            var wmsMerchantinfo = await _wmsMerchantinfoRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsMerchantinfoRep.DeleteAsync(wmsMerchantinfo);
+        }
+
+        /// <summary>
+        /// 鏇存柊瀹㈠晢淇℃伅琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWmsMerchantinfoInput input)
+        {
+            var isExist = await _wmsMerchantinfoRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsMerchantinfo = input.Adapt<WmsMerchantinfo>();
+            await _wmsMerchantinfoRep.UpdateAsync(wmsMerchantinfo,ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀹㈠晢淇℃伅琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WmsMerchantinfoOutput> Get([FromQuery] QueryeWmsMerchantinfoInput input)
+        {
+            return (await _wmsMerchantinfoRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsMerchantinfoOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀹㈠晢淇℃伅琛ㄥ垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WmsMerchantinfoOutput>> List([FromQuery] WmsMerchantinfoInput input)
+        {
+            return await _wmsMerchantinfoRep.DetachedEntities.ProjectToType<WmsMerchantinfoOutput>().ToListAsync();
+        }    
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆瀹㈠晢淇℃伅琛ㄥ姛鑳�
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsMerchantinfo", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++) 
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<WmsMerchantinfoOutput> wmsMerchantinfoList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsMerchantinfoOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = wmsMerchantinfoList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsMerchantinfo>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsMerchantinfo, WmsMerchantinfoOutput>(selectKeys);
+            List<WmsMerchantinfo> updates = new();
+            List<WmsMerchantinfo> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var wmsMerchantinfoExistSubList = _wmsMerchantinfoRep.Where(filter).Select(selector).ToList();
+                    wmsMerchantinfoExistSubList.ForEach(x => 
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+                foreach (var wmsMerchantinfo in wmsMerchantinfoList) 
+                {
+                    if (wmsMerchantinfo.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsMerchantinfo.Adapt<WmsMerchantinfo>());
+                    }
+                    else 
+                    {
+                        adds.Add(wmsMerchantinfo.Adapt<WmsMerchantinfo>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsMerchantinfoRep.Update(x));
+                
+
+                var maxId = _wmsMerchantinfoRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);    
+                Db.GetDbContext().Set<WmsMerchantinfo>().AddRange(adds);  
+                Db.GetDbContext().SaveChanges();
+               
+            }
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇瀹㈠晢淇℃伅琛ㄧ殑Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsMerchantinfo", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+        /// <summary>
+        /// 鏍规嵁瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+        /// </summary>
+        /// <param name="input">瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁�</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] WmsMerchantinfoSearchNonPage input)
+        {
+            var wmsMerchantinfoList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(wmsMerchantinfoList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsMerchantinfo", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeDto.cs
new file mode 100644
index 0000000..07e74bb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeDto.cs
@@ -0,0 +1,55 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsOrderTypeDto
+    {
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public long Pid { get; set; }
+        
+        /// <summary>
+        /// 鐖禝ds
+        /// </summary>
+        public string Pids { get; set; }
+        
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+        
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+        
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public LesWorkShopType LesWorkShopType { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public CommonStatus Status { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeInput.cs
new file mode 100644
index 0000000..73599c3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeInput.cs
@@ -0,0 +1,185 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�
+    /// </summary>
+    public class WareOrderTypeSearch
+    {
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public virtual long? Pid { get; set; }
+
+        /// <summary>
+        /// 鐖禝ds
+        /// </summary>
+        public virtual string Pids { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public virtual int? Sort { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual LesWorkShopType? LesWorkShopType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public virtual string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual CommonStatus? Status { get; set; }
+    }
+
+    /// <summary>
+    /// 鍗曟嵁绫诲瀷缁存姢琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+    /// </summary>
+    public class WareOrderTypeSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public virtual long? Pid { get; set; }
+
+        ///// <summary>
+        ///// 鐖禝ds
+        ///// </summary>
+        //public virtual string? Pids { get; set; }
+
+        ///// <summary>
+        ///// 鍚嶇О
+        ///// </summary>
+        //public virtual string? Name { get; set; }
+
+        ///// <summary>
+        ///// 缂栫爜
+        ///// </summary>
+        //public virtual string? Code { get; set; }
+
+        ///// <summary>
+        ///// 鎺掑簭
+        ///// </summary>
+        //public virtual int? Sort { get; set; }
+
+        ///// <summary>
+        ///// 鎵�灞炶溅闂�
+        ///// </summary>
+        //public virtual LesWorkShopType? LesWorkShopType { get; set; }
+
+        ///// <summary>
+        ///// 澶囨敞
+        ///// </summary>
+        //public virtual string? Remark { get; set; }
+
+        ///// <summary>
+        ///// 鐘舵��
+        ///// </summary>
+        //public virtual CommonStatus? Status { get; set; }
+    }
+
+    /// <summary>
+    /// 鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍏ュ弬鏁�
+    /// </summary>
+    public class WmsOrderTypeInput
+    {
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public virtual long Pid { get; set; }
+
+        ///// <summary>
+        ///// 鐖禝ds
+        ///// </summary>
+        //public virtual string Pids { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public virtual int Sort { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual LesWorkShopType LesWorkShopType { get; set; }
+
+        ///// <summary>
+        ///// 澶囨敞
+        ///// </summary>
+        //public virtual string Remark { get; set; }
+
+        ///// <summary>
+        ///// 鐘舵��
+        ///// </summary>
+        //public virtual CommonStatus Status { get; set; }
+    }
+
+    /// <summary>
+    /// 澧炲姞鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍏ュ弬鏁�
+    /// </summary>
+    public class AddWareOrderTypeInput : WmsOrderTypeInput
+    {
+    }
+
+    /// <summary>
+    /// 澧炲姞鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+    /// </summary>
+    public class AddWareOrderSubclassInput : WmsOrderTypeInput
+    {
+    }
+
+    /// <summary>
+    /// 鍒犻櫎鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+    /// </summary>
+    public class DeleteWareOrderTypeInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 鏇存柊鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+    /// </summary>
+    public class UpdateWareOrderTypeInput : WmsOrderTypeInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+    }
+
+    /// <summary>
+    /// 鏌ヨ鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+    /// </summary>
+    public class QueryeWareOrderTypeInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeOutput.cs
new file mode 100644
index 0000000..2b74193
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeOutput.cs
@@ -0,0 +1,53 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsOrderTypeOutput
+    {
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public long Pid { get; set; }
+        
+        ///// <summary>
+        ///// 鐖禝ds
+        ///// </summary>
+        //public string Pids { get; set; }
+        
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+        
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+        
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public Core.LesWorkShopType LesWorkShopType { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public Core.CommonStatus Status { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/IWmsOrderTypeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/IWmsOrderTypeService.cs
new file mode 100644
index 0000000..3e6e010
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/IWmsOrderTypeService.cs
@@ -0,0 +1,83 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍗曟嵁绫诲瀷缁存姢琛ㄦ湇鍔�
+    /// </summary>
+    public interface IWmsOrderTypeService
+    {
+        /// <summary>
+        /// 澧炲姞鍗曟嵁绫诲瀷缁存姢琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task Add(AddWareOrderTypeInput input);
+
+        /// <summary>
+        /// 鍒犻櫎鍗曟嵁绫诲瀷缁存姢琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task Delete(DeleteWareOrderTypeInput input);
+
+        /// <summary>
+        /// 鑾峰彇鍗曟嵁绫诲瀷缁存姢琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<WmsOrderTypeOutput> Get([FromQuery] QueryeWareOrderTypeInput input);
+
+        /// <summary>
+        /// 鑾峰彇鍗曟嵁绫诲瀷缁存姢琛ㄥ垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<WmsOrderTypeOutput>> List([FromQuery] WmsOrderTypeInput input);
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<WmsOrderTypeOutput>> Page([FromQuery] WareOrderTypeSearch input);
+
+        /// <summary>
+        /// 鏇存柊鍗曟嵁绫诲瀷缁存姢琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task Update(UpdateWareOrderTypeInput input);
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<WmsOrderTypeOutput>> ListNonPageAsync([FromQuery] WareOrderTypeSearchNonPage input);
+
+        /// <summary>
+        /// Excel妯℃澘瀵煎叆鍗曟嵁绫诲瀷缁存姢琛ㄥ姛鑳�
+        /// </summary>
+        /// <param name="file"></param>
+        /// <param name="importExcelType"></param>
+        /// <returns></returns>
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇鍗曟嵁绫诲瀷缁存姢琛ㄧ殑Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version"></param>
+        /// <returns></returns>
+        Task<IActionResult> DownloadExcelTemplate(string version);
+
+        /// <summary>
+        /// 鏍规嵁鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+        /// </summary>
+        /// <param name="input">鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        Task<IActionResult> ToExcelAsync([FromQuery] WareOrderTypeSearchNonPage input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/WmsOrderTypeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/WmsOrderTypeService.cs
new file mode 100644
index 0000000..aada338
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/WmsOrderTypeService.cs
@@ -0,0 +1,260 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using System.Text;
+using System.Web;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍗曟嵁绫诲瀷缁存姢琛ㄦ湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WareOrderType", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsOrderTypeService : IWmsOrderTypeService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wareOrderTypeRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public WmsOrderTypeService(
+            IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+            IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
+            IRepository<WmsOrderType, MasterDbContextLocator> wareOrderTypeRep,
+            ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+            _sysDictTypeRep = sysDictTypeRep;
+            _sysDictDataRep = sysDictDataRep;
+            _wareOrderTypeRep = wareOrderTypeRep;
+            _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        [NonAction]
+        public async Task<List<WmsOrderTypeOutput>> Page([FromQuery] WareOrderTypeSearch input)
+        {
+            var wareOrderTypes = await _wareOrderTypeRep.DetachedEntities.Where(u => u.Pid == input.Pid)
+                //.OrderBy(PageInputOrder.OrderBuilder<WareOrderTypeSearch>(input))
+                .OrderBy(u => u.Sort)
+                .ProjectToType<WmsOrderTypeOutput>()
+                .ToListAsync();
+            return wareOrderTypes;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃鍒楄〃
+        /// </summary>
+        /// <param name="input">鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�</param>
+        /// <returns>(鍗曟嵁绫诲瀷缁存姢琛�)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<WmsOrderTypeOutput>> ListNonPageAsync([FromQuery] WareOrderTypeSearchNonPage input)
+        {
+            var pPid = input.Pid;
+            var wareOrderTypes = await _wareOrderTypeRep.DetachedEntities.Where(u => u.Pid == pPid)
+            //.OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .OrderBy(u => u.Sort)
+            .ProjectToType<WmsOrderTypeOutput>()
+            .ToListAsync();
+            return wareOrderTypes;
+        }
+
+        /// <summary>
+        /// 澧炲姞鍗曟嵁绫诲瀷缁存姢琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddWareOrderTypeInput input)
+        {
+            var wareOrderType = input.Adapt<WmsOrderType>();
+
+            // 鍒ゆ柇鍗曟嵁灏忕被鐨勬墍灞炶溅闂存槸鍚﹁窡鍗曟嵁澶х被鐨勬墍灞炶溅闂翠竴鏍凤紝娣诲姞灏忕被淇℃伅
+            //if (input.Pid > 0)
+            //{
+            //    // 鏍规嵁Pid鏌ヨ鍗曟嵁澶х被鐨勬墍灞炶溅闂�
+            //    var orderDaLei = await _wareOrderTypeRep.FirstOrDefaultAsync(z => z.Id == input.Pid);
+            //    if (input.LesWorkShopType != orderDaLei.LesWorkShopType)
+            //        throw Oops.Oh("灏忕被娣诲姞鐨勬墍灞炶溅闂磋涓庡ぇ绫荤殑鎵�灞炶溅闂翠竴鑷达紒");
+            //}
+
+            await _wareOrderTypeRep.InsertAsync(wareOrderType);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鍗曟嵁绫诲瀷缁存姢琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWareOrderTypeInput input)
+        {
+            var wareOrderType = await _wareOrderTypeRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wareOrderTypeRep.DeleteAsync(wareOrderType);
+        }
+
+        /// <summary>
+        /// 鏇存柊鍗曟嵁绫诲瀷缁存姢琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWareOrderTypeInput input)
+        {
+            var isExist = await _wareOrderTypeRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wareOrderType = input.Adapt<WmsOrderType>();
+            await _wareOrderTypeRep.UpdateAsync(wareOrderType, ignoreNullValues: true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曟嵁绫诲瀷缁存姢琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        [NonAction]
+        public async Task<WmsOrderTypeOutput> Get([FromQuery] QueryeWareOrderTypeInput input)
+        {
+            return (await _wareOrderTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsOrderTypeOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曟嵁绫诲瀷缁存姢琛ㄥ垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        [NonAction]
+        public async Task<List<WmsOrderTypeOutput>> List([FromQuery] WmsOrderTypeInput input)
+        {
+            return await _wareOrderTypeRep.DetachedEntities.ProjectToType<WmsOrderTypeOutput>().ToListAsync();
+        }
+
+        /// <summary>
+        /// Excel妯℃澘瀵煎叆鍗曟嵁绫诲瀷缁存姢琛ㄥ姛鑳�
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        [NonAction]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WareOrderType", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++)
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<WmsOrderTypeOutput> wareOrderTypeList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsOrderTypeOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = wareOrderTypeList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsOrderType>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if (!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsOrderType, WmsOrderTypeOutput>(selectKeys);
+            List<WmsOrderType> updates = new();
+            List<WmsOrderType> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var wareOrderTypeExistSubList = _wareOrderTypeRep.Where(filter).Select(selector).ToList();
+                    wareOrderTypeExistSubList.ForEach(x =>
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+
+                foreach (var wareOrderType in wareOrderTypeList)
+                {
+                    if (wareOrderType.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wareOrderType.Adapt<WmsOrderType>());
+                    }
+                    else
+                    {
+                        adds.Add(wareOrderType.Adapt<WmsOrderType>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wareOrderTypeRep.Update(x));
+
+                var maxId = _wareOrderTypeRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);
+                Db.GetDbContext().Set<WmsOrderType>().AddRange(adds);
+                Db.GetDbContext().SaveChanges();
+            }
+
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇鍗曟嵁绫诲瀷缁存姢琛ㄧ殑Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        [NonAction]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WareOrderType", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        /// <summary>
+        /// 鏍规嵁鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+        /// </summary>
+        /// <param name="input">鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        [NonAction]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] WareOrderTypeSearchNonPage input)
+        {
+            var wareOrderTypeList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(wareOrderTypeList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WareOrderType", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerDto.cs
new file mode 100644
index 0000000..dace7b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerDto.cs
@@ -0,0 +1,47 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// PDA鑿滃崟杈撳嚭鍙傛暟
+    /// </summary>
+    public class WmsPdaPowerDto
+    {
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        public string Icon { get; set; }
+        
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+        
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+        
+        /// <summary>
+        /// 棰滆壊
+        /// </summary>
+        public string Clolor { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public Admin.NET.Core.LesWorkShopType WorkShopType { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerInput.cs
new file mode 100644
index 0000000..f224ecf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerInput.cs
@@ -0,0 +1,141 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// PDA鑿滃崟鏌ヨ鍙傛暟
+    /// </summary>
+    public class WmsPdaPowerSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        public virtual string Icon { get; set; }
+        
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Code { get; set; }
+        
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 棰滆壊
+        /// </summary>
+        public virtual string Clolor { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual Admin.NET.Core.LesWorkShopType? WorkShopType { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+        /// <summary>
+    /// PDA鑿滃崟涓嶅垎椤垫煡璇㈠弬鏁�
+    /// </summary>
+    public class WmsPdaPowerSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        public virtual string Icon { get; set; }
+        
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Code { get; set; }
+        
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 棰滆壊
+        /// </summary>
+        public virtual string Clolor { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual Admin.NET.Core.LesWorkShopType? WorkShopType { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+        
+    }
+
+    /// <summary>
+    /// PDA鑿滃崟杈撳叆鍙傛暟
+    /// </summary>
+    public class WmsPdaPowerInput
+    {
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        public virtual string Icon { get; set; }
+        
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Code { get; set; }
+        
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 棰滆壊
+        /// </summary>
+        public virtual string Clolor { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual Admin.NET.Core.LesWorkShopType WorkShopType { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+    public class AddWmsPdaPowerInput : WmsPdaPowerInput
+    {
+    }
+
+    public class DeleteWmsPdaPowerInput : BaseId
+    {
+    }
+
+    public class UpdateWmsPdaPowerInput : WmsPdaPowerInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    public class QueryeWmsPdaPowerInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerOutput.cs
new file mode 100644
index 0000000..a56da2b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerOutput.cs
@@ -0,0 +1,67 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// PDA鑿滃崟杈撳嚭鍙傛暟
+    /// </summary>
+    public class WmsPdaPowerOutput
+    {
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        public string Icon { get; set; }
+        
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+        
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+        
+        /// <summary>
+        /// 棰滆壊
+        /// </summary>
+        public string Clolor { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public Admin.NET.Core.LesWorkShopType WorkShopType { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+
+        /// <summary>
+        /// 鏄惁閫夋嫨
+        /// </summary>
+        public bool IsCheck { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class wmsPdaPowerMenuOutput
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string WorkShopName { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<WmsPdaPowerOutput> WmsPdaPowerOutput { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/IWmsPdaPowerService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/IWmsPdaPowerService.cs
new file mode 100644
index 0000000..558a358
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/IWmsPdaPowerService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface IWmsPdaPowerService
+    {
+        Task Add(AddWmsPdaPowerInput input);
+        Task Delete(DeleteWmsPdaPowerInput input);
+        Task<WmsPdaPowerOutput> Get([FromQuery] QueryeWmsPdaPowerInput input);
+        Task<List<WmsPdaPowerOutput>> List([FromQuery] WmsPdaPowerInput input);
+        Task<PageResult<WmsPdaPowerOutput>> Page([FromQuery] WmsPdaPowerSearch input);
+        Task Update(UpdateWmsPdaPowerInput input);
+
+        Task<List<WmsPdaPowerOutput>> ListNonPageAsync([FromQuery] WmsPdaPowerSearchNonPage input);
+
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+        Task<IActionResult> DownloadExcelTemplate(string version);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Map/WmsPdaPowerMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Map/WmsPdaPowerMapper.cs
new file mode 100644
index 0000000..410ac2e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Map/WmsPdaPowerMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class WmsPdaPowerMapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddWmsPdaPowerInput, WmsPdaPower>()
+            ;
+            config.ForType<UpdateWmsPdaPowerInput, WmsPdaPower>()
+            ;
+            config.ForType<WmsPdaPower, WmsPdaPowerOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/WmsPdaPowerService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/WmsPdaPowerService.cs
new file mode 100644
index 0000000..fbf2ba5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/WmsPdaPowerService.cs
@@ -0,0 +1,245 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// PDA鑿滃崟鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsPdaPower", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsPdaPowerService : IWmsPdaPowerService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsPdaPower,MasterDbContextLocator> _wmsPdaPowerRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        public WmsPdaPowerService(
+            IRepository<WmsPdaPower,MasterDbContextLocator> wmsPdaPowerRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+             _wmsPdaPowerRep = wmsPdaPowerRep;
+             _sysDictTypeRep = sysDictTypeRep;
+             _sysDictDataRep = sysDictDataRep;
+             _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsPdaPowerOutput>> Page([FromQuery] WmsPdaPowerSearch input)
+        {
+            var wmsPdaPowers = await _wmsPdaPowerRep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.Code), u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Name), u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%"))
+                                     .Where(input.WorkShopType != null, u => u.WorkShopType == input.WorkShopType)
+                                     .OrderBy(PageInputOrder.OrderBuilder<WmsPdaPowerSearch>(input))
+                                     .ProjectToType<WmsPdaPowerOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsPdaPowers;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇DA鑿滃崟鍒楄〃
+        /// </summary>
+        /// <param name="input">PDA鑿滃崟鏌ヨ鍙傛暟</param>
+        /// <returns>(PDA鑿滃崟)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<WmsPdaPowerOutput>> ListNonPageAsync([FromQuery] WmsPdaPowerSearchNonPage input)
+        {
+            var pCode = input.Code?.Trim() ?? "";
+            var pName = input.Name?.Trim() ?? "";
+            var pWorkShopType = input.WorkShopType;
+            var wmsPdaPowers = await _wmsPdaPowerRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pCode), u => EF.Functions.Like(u.Code, $"%{pCode}%")) 
+                .Where(!string.IsNullOrEmpty(pName), u => EF.Functions.Like(u.Name, $"%{pName}%")) 
+                .Where(pWorkShopType != null, u => u.WorkShopType == pWorkShopType)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<WmsPdaPowerOutput>()
+            .ToListAsync();
+            return wmsPdaPowers;
+        }
+
+
+        /// <summary>
+        /// 澧炲姞PDA鑿滃崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddWmsPdaPowerInput input)
+        {
+            var wmsPdaPower = input.Adapt<WmsPdaPower>();
+            await _wmsPdaPowerRep.InsertAsync(wmsPdaPower);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎PDA鑿滃崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWmsPdaPowerInput input)
+        {
+            var wmsPdaPower = await _wmsPdaPowerRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsPdaPowerRep.DeleteAsync(wmsPdaPower);
+        }
+
+        /// <summary>
+        /// 鏇存柊PDA鑿滃崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWmsPdaPowerInput input)
+        {
+            var isExist = await _wmsPdaPowerRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsPdaPower = input.Adapt<WmsPdaPower>();
+            await _wmsPdaPowerRep.UpdateAsync(wmsPdaPower,ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇PDA鑿滃崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WmsPdaPowerOutput> Get([FromQuery] QueryeWmsPdaPowerInput input)
+        {
+            return (await _wmsPdaPowerRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsPdaPowerOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇PDA鑿滃崟鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WmsPdaPowerOutput>> List([FromQuery] WmsPdaPowerInput input)
+        {
+            return await _wmsPdaPowerRep.DetachedEntities.ProjectToType<WmsPdaPowerOutput>().ToListAsync();
+        }    
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆PDA鑿滃崟鍔熻兘
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsPdaPower", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++) 
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<WmsPdaPowerOutput> wmsPdaPowerList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsPdaPowerOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = wmsPdaPowerList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsPdaPower>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsPdaPower, WmsPdaPowerOutput>(selectKeys);
+            List<WmsPdaPower> updates = new();
+            List<WmsPdaPower> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var wmsPdaPowerExistSubList = _wmsPdaPowerRep.Where(filter).Select(selector).ToList();
+                    wmsPdaPowerExistSubList.ForEach(x => 
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+                foreach (var wmsPdaPower in wmsPdaPowerList) 
+                {
+                    if (wmsPdaPower.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsPdaPower.Adapt<WmsPdaPower>());
+                    }
+                    else 
+                    {
+                        adds.Add(wmsPdaPower.Adapt<WmsPdaPower>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsPdaPowerRep.Update(x));
+                
+
+                var maxId = _wmsPdaPowerRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);    
+                Db.GetDbContext().Set<WmsPdaPower>().AddRange(adds);  
+                Db.GetDbContext().SaveChanges();
+               
+            }
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇PDA鑿滃崟鐨凟xcel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsPdaPower", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+        /// <summary>
+        /// 鏍规嵁PDA鑿滃崟鏌ヨ鍙傛暟瀵煎嚭Excel
+        /// </summary>
+        /// <param name="input">PDA鑿滃崟鏌ヨ鍙傛暟</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] WmsPdaPowerSearchNonPage input)
+        {
+            var wmsPdaPowerList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(wmsPdaPowerList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsPdaPower", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceDto.cs
new file mode 100644
index 0000000..8682b03
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceDto.cs
@@ -0,0 +1,145 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撲綅淇℃伅杈撳嚭鍙傛暟
+    /// </summary>
+    public class WmsPlaceDto
+    {
+        /// <summary>
+        /// 鎵�鍦ㄥ簱鍖�
+        /// </summary>
+        public string WmsAreaAreaname { get; set; }
+        
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Placecode { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅鐘舵��
+        /// </summary>
+        public PlaceStatus Placestatus { get; set; }
+        
+        /// <summary>
+        /// 鎵�鍦ㄥ簱鍖�
+        /// </summary>
+        public long Areaid { get; set; }
+        
+        /// <summary>
+        /// 鎺�
+        /// </summary>
+        public int Rowno { get; set; }
+        
+        /// <summary>
+        /// 鍒�
+        /// </summary>
+        public int Columnno { get; set; }
+        
+        /// <summary>
+        /// 灞�
+        /// </summary>
+        public int Layerno { get; set; }
+        
+        /// <summary>
+        /// 杩涙繁鍙�
+        /// </summary>
+        public int Deepcellno { get; set; }
+        
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        public int Aisle { get; set; }
+        
+        /// <summary>
+        /// 绾垮彿
+        /// </summary>
+        public int Line { get; set; }
+        
+        /// <summary>
+        /// 宸烽亾宸﹀彸
+        /// </summary>
+        //public string Aisleside { get; set; }
+        
+        /// <summary>
+        /// 鏄惁閿佸畾
+        /// </summary>
+        public YesOrNot Islock { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        //public YesOrNot Isfull { get; set; }
+
+        /// <summary>
+        /// 鍚︽鍦ㄦ搷浣�
+        /// </summary>
+        //public YesOrNot Hastaskdoing { get; set; }
+
+        /// <summary>
+        /// 鏄惁绌烘墭
+        /// </summary>
+        public virtual YesOrNot EmptyContainer { get; set; }
+
+        /// <summary>
+        /// 鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+        /// </summary>
+        public string PositionnoForSrm { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅X鍧愭爣
+        /// </summary>
+        public string Xzb { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅Y鍧愭爣
+        /// </summary>
+        public string Yzb { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅Z鍧愭爣
+        /// </summary>
+        public string Zzb { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅闀垮害
+        /// </summary>
+        public decimal Length { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅瀹藉害
+        /// </summary>
+        public decimal Width { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅楂樺害
+        /// </summary>
+        public decimal Height { get; set; }
+        
+        /// <summary>
+        /// 鏈�澶ф壙閲�
+        /// </summary>
+        public decimal Maxweight { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅楂樺害
+        /// </summary>
+        public Heightlevel Heightlevel { get; set; }
+        
+        /// <summary>
+        /// 浼樺厛绾�
+        /// </summary>
+        public int Priority { get; set; }
+
+        /// <summary>
+        /// 閫昏緫鍖哄煙
+        /// </summary>
+        public int LogicalName { get; set; }
+
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceInput.cs
new file mode 100644
index 0000000..5c9e5e2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceInput.cs
@@ -0,0 +1,310 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撲綅淇℃伅鏌ヨ鍙傛暟
+    /// </summary>
+    public class WmsPlaceSearch : PageInputBase
+    {
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Placecode { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅鐘舵��
+        /// </summary>
+        public virtual PlaceStatus? Placestatus { get; set; }
+        
+        /// <summary>
+        /// 鎵�鍦ㄥ簱鍖�
+        /// </summary>
+        public virtual long? Areaid { get; set; }
+        
+        /// <summary>
+        /// 鎺�
+        /// </summary>
+        public virtual int? Rowno { get; set; }
+        
+        /// <summary>
+        /// 鍒�
+        /// </summary>
+        public virtual int? Columnno { get; set; }
+        
+        /// <summary>
+        /// 灞�
+        /// </summary>
+        public virtual int? Layerno { get; set; }
+        
+        /// <summary>
+        /// 杩涙繁鍙�
+        /// </summary>
+        public virtual int? Deepcellno { get; set; }
+        
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        public virtual int? Aisle { get; set; }
+        
+        /// <summary>
+        /// 绾垮彿
+        /// </summary>
+        public virtual int? Line { get; set; }
+        
+        /// <summary>
+        /// 宸烽亾宸﹀彸
+        /// </summary>
+        //public virtual string Aisleside { get; set; }
+        
+        /// <summary>
+        /// 鏄惁閿佸畾
+        /// </summary>
+        public virtual YesOrNot? Islock { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        //public virtual YesOrNot? Isfull { get; set; }
+
+        /// <summary>
+        /// 鍚︽鍦ㄦ搷浣�
+        /// </summary>
+        //public virtual YesOrNot? Hastaskdoing { get; set; }
+
+        /// <summary>
+        /// 鏄惁绌烘墭
+        /// </summary>
+        public virtual YesOrNot EmptyContainer { get; set; }
+
+        /// <summary>
+        /// 鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+        /// </summary>
+        public virtual string PositionnoForSrm { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅X鍧愭爣
+        /// </summary>
+        public virtual string Xzb { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅Y鍧愭爣
+        /// </summary>
+        public virtual string Yzb { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅Z鍧愭爣
+        /// </summary>
+        public virtual string Zzb { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅闀垮害
+        /// </summary>
+        public virtual decimal? Length { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅瀹藉害
+        /// </summary>
+        public virtual decimal? Width { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅楂樺害
+        /// </summary>
+        public virtual decimal? Height { get; set; }
+        
+        /// <summary>
+        /// 鏈�澶ф壙閲�
+        /// </summary>
+        public virtual decimal? Maxweight { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅楂樺害
+        /// </summary>
+        public virtual Heightlevel? Heightlevel { get; set; }
+        
+        /// <summary>
+        /// 浼樺厛绾�
+        /// </summary>
+        public virtual int? Priority { get; set; }
+    }
+
+    /// <summary>
+    /// 搴撲綅淇℃伅杈撳叆鍙傛暟
+    /// </summary>
+    public class WmsPlaceInput
+    {
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Placecode { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅鐘舵��
+        /// </summary>
+        public virtual PlaceStatus Placestatus { get; set; }
+        
+        /// <summary>
+        /// 鎵�鍦ㄥ簱鍖�
+        /// </summary>
+        public virtual long Areaid { get; set; }
+        
+        /// <summary>
+        /// 鎺�
+        /// </summary>
+        public virtual int Rowno { get; set; }
+        
+        /// <summary>
+        /// 鍒�
+        /// </summary>
+        public virtual int Columnno { get; set; }
+        
+        /// <summary>
+        /// 灞�
+        /// </summary>
+        public virtual int Layerno { get; set; }
+        
+        /// <summary>
+        /// 浣�
+        /// </summary>
+        public virtual int Deepcellno { get; set; }
+        
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        public virtual int Aisle { get; set; }
+        
+        /// <summary>
+        /// 绾垮彿
+        /// </summary>
+        public virtual int Line { get; set; }
+        
+        /// <summary>
+        /// 宸烽亾宸﹀彸
+        /// </summary>
+        //public virtual string Aisleside { get; set; }
+        
+        /// <summary>
+        /// 鏄惁閿佸畾
+        /// </summary>
+        public virtual YesOrNot Islock { get; set; }
+
+        /// <summary>
+        /// 鏄惁
+        /// </summary>
+        //public virtual YesOrNot Isfull { get; set; }
+
+        /// <summary>
+        /// 鍚︽鍦ㄦ搷浣�
+        /// </summary>
+        //public virtual YesOrNot Hastaskdoing { get; set; }
+
+        /// <summary>
+        /// 鏄惁绌烘墭
+        /// </summary>
+        public virtual YesOrNot EmptyContainer { get; set; }
+
+
+        /// <summary>
+        /// 鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+        /// </summary>
+        public virtual string PositionnoForSrm { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅X鍧愭爣
+        /// </summary>
+        public virtual string Xzb { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅Y鍧愭爣
+        /// </summary>
+        public virtual string Yzb { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅Z鍧愭爣
+        /// </summary>
+        public virtual string Zzb { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅闀垮害
+        /// </summary>
+        public virtual decimal Length { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅瀹藉害
+        /// </summary>
+        public virtual decimal Width { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅楂樺害
+        /// </summary>
+        public virtual decimal Height { get; set; }
+        
+        /// <summary>
+        /// 鏈�澶ф壙閲�
+        /// </summary>
+        public virtual decimal Maxweight { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅楂樺害
+        /// </summary>
+        public virtual Heightlevel Heightlevel { get; set; }
+        
+        /// <summary>
+        /// 浼樺厛绾�
+        /// </summary>
+        public virtual int Priority { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddWmsPlaceInput : WmsPlaceInput
+    {
+        /// <summary>
+        /// 鎵�鍦ㄥ簱鍖�
+        /// </summary>
+        [Required(ErrorMessage = "鎵�鍦ㄥ簱鍖轰笉鑳戒负绌�")]
+        public override long Areaid { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteWmsPlaceInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateWmsPlaceInput : WmsPlaceInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryeWmsPlaceInput : BaseId
+    {
+
+    }
+    /// <summary>
+    /// 鎵归噺閿佸畾鍙傛暟
+    /// </summary>
+    public class MoreLockInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public List<long> Id { get; set; }
+    }
+
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceOutput.cs
new file mode 100644
index 0000000..2246990
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceOutput.cs
@@ -0,0 +1,137 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撲綅淇℃伅杈撳嚭鍙傛暟
+    /// </summary>
+    public class WmsPlaceOutput
+    {
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Placecode { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅鐘舵��
+        /// </summary>
+        public PlaceStatus Placestatus { get; set; }
+        
+        /// <summary>
+        /// 鎵�鍦ㄥ簱鍖�
+        /// </summary>
+        public long Areaid { get; set; }
+        
+        /// <summary>
+        /// 鎺�
+        /// </summary>
+        public int Rowno { get; set; }
+        
+        /// <summary>
+        /// 鍒�
+        /// </summary>
+        public int Columnno { get; set; }
+        
+        /// <summary>
+        /// 灞�
+        /// </summary>
+        public int Layerno { get; set; }
+        
+        /// <summary>
+        /// 杩涙繁鍙�
+        /// </summary>
+        public int Deepcellno { get; set; }
+        
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        public int Aisle { get; set; }
+        
+        /// <summary>
+        /// 绾垮彿
+        /// </summary>
+        public int Line { get; set; }
+        
+        /// <summary>
+        /// 宸烽亾宸﹀彸
+        /// </summary>
+        //public string Aisleside { get; set; }
+        
+        /// <summary>
+        /// 鏄惁閿佸畾
+        /// </summary>
+        public YesOrNot Islock { get; set; }
+
+        //public YesOrNot Isfull { get; set; }
+
+        /// <summary>
+        /// 鍚︽鍦ㄦ搷浣�
+        /// </summary>
+        //public YesOrNot Hastaskdoing { get; set; }
+
+        /// <summary>
+        /// 鏄惁绌烘墭
+        /// </summary>
+        public virtual YesOrNot EmptyContainer { get; set; }
+
+        /// <summary>
+        /// 鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+        /// </summary>
+        public string PositionnoForSrm { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅X鍧愭爣
+        /// </summary>
+        public string Xzb { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅Y鍧愭爣
+        /// </summary>
+        public string Yzb { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅Z鍧愭爣
+        /// </summary>
+        public string Zzb { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅闀垮害
+        /// </summary>
+        public decimal Length { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅瀹藉害
+        /// </summary>
+        public decimal Width { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅楂樺害
+        /// </summary>
+        public decimal Height { get; set; }
+        
+        /// <summary>
+        /// 鏈�澶ф壙閲�
+        /// </summary>
+        public decimal Maxweight { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅楂樺害
+        /// </summary>
+        public Heightlevel Heightlevel { get; set; }
+        
+        /// <summary>
+        /// 浼樺厛绾�
+        /// </summary>
+        public int Priority { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 搴撳尯淇℃伅杈撳嚭鍙傛暟
+        /// </summary>
+        public WmsAreaOutput WmsArea { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/WmsPlaceService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/WmsPlaceService.cs
new file mode 100644
index 0000000..872fe09
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/WmsPlaceService.cs
@@ -0,0 +1,282 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撲綅淇℃伅鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsPlace", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsPlaceService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsArea> _wmsAreaRep;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public WmsPlaceService(
+            IRepository<WmsArea> wmsAreaRep,
+            IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep
+        )
+        {
+            _wmsAreaRep = wmsAreaRep;
+            _wmsPlaceRep = wmsPlaceRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ搴撲綅淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsPlaceOutput>> Page([FromQuery] WmsPlaceSearch input)
+        {
+            var wmsPlaces = await _wmsPlaceRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(input.Placecode), u => EF.Functions.Like(u.PlaceCode, $"%{input.Placecode.Trim()}%"))
+                .Where(input.Placestatus != null, u => u.PlaceStatus == input.Placestatus)
+                .Where(input.Areaid > 0, u => u.AreaId == input.Areaid)
+                .Where(input.Rowno != null, u => u.RowNo == input.Rowno)
+                .Where(input.Columnno != null, u => u.ColumnNo == input.Columnno)
+                .Where(input.Layerno != null, u => u.LayerNo == input.Layerno)
+                .Where(input.Aisle != null, u => u.Aisle == input.Aisle)
+                .Where(input.Islock != null, u => u.Islock == input.Islock)
+                .OrderBy(PageInputOrder.OrderBuilder<WmsPlaceSearch>(input))
+                .ProjectToType<WmsPlaceOutput>()
+                .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsPlaces;
+        }
+
+        /// <summary>
+        /// 澧炲姞搴撲綅淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        //[HttpPost("add")]
+        //public async Task Add(AddWmsPlaceInput input)
+        //{
+        //    //鑾峰彇搴撳尯淇℃伅
+        //    var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.Id == input.Areaid);
+        //    if (wmsArea.AreaType == AreaType.LITIKU)
+        //    {
+        //        var wmsPlace = input.Adapt<WmsPlace>();
+        //        for (int a = 1; a == 1; a++)
+        //        {
+        //            for (int t = 1; t <= wmsPlace.RowNo; t++)   //寰幆鎺�
+        //            {
+        //                for (int i = 1; i <= wmsPlace.ColumnNo; i++)   //寰幆鍒�
+        //                {
+        //                    for (int j = 1; j <= wmsPlace.LayerNo; j++)  //寰幆灞�
+        //                    {
+        //                        var model = new WmsPlace();
+        //                        model.PlaceStatus = PlaceStatus.KONGXIAN;
+        //                        model.AreaId = wmsPlace.AreaId;
+        //                        model.RowNo = t;
+        //                        model.ColumnNo = i;
+        //                        model.LayerNo = j;
+        //                        model.DeepcellNo = 1;
+        //                        model.Aisle = a;
+        //                        model.Islock = YesOrNot.N;
+        //                        model.Length = new decimal(1.2);
+        //                        model.Width = new decimal(1.5);
+        //                        model.Height = new decimal(1.8);
+        //                        model.MaxWeight = new decimal(2.8);
+        //                        model.HeightLevel = Heightlevel.DI;
+        //                        model.Priority = 0;
+        //                        model.AgvCode = "";
+        //                        model.PlaceCode = String.Format("{0}{1}{2}{3}{4}", wmsArea.AreaDesc, a.ToString("00"), t.ToString("00"), i.ToString("00"), j.ToString("00"));
+        //                        var isExit = await _wmsPlaceRep.AnyAsync(n => n.PlaceCode == model.PlaceCode);
+        //                        if (!isExit) await _wmsPlaceRep.InsertAsync(model);
+        //                    }
+        //                }
+        //            }
+        //        }
+        //    }
+        //    else
+        //    {
+        //        var wmsPlace = input.Adapt<WmsPlace>();
+        //        for (int t = 1; t <= wmsPlace.RowNo; t++)   //寰幆鎺�
+        //        {
+        //            for (int i = 1; i <= wmsPlace.ColumnNo; i++)   //寰幆鍒�
+        //            {
+        //                for (int j = 1; j <= wmsPlace.LayerNo; j++)  //寰幆灞�
+        //                {
+        //                    var model = new WmsPlace();
+        //                    model.PlaceStatus = PlaceStatus.KONGXIAN;
+        //                    model.AreaId = wmsPlace.AreaId;
+        //                    model.RowNo = t;
+        //                    model.ColumnNo = i;
+        //                    model.LayerNo = j;
+        //                    model.DeepcellNo = 1;
+        //                    model.Aisle = wmsPlace.Aisle;
+        //                    model.Islock = YesOrNot.N;
+        //                    model.Length = new decimal(1.2);
+        //                    model.Width = new decimal(1.5);
+        //                    model.Height = new decimal(1.8);
+        //                    model.MaxWeight = new decimal(2.8);
+        //                    model.HeightLevel = Heightlevel.DI;
+        //                    model.Priority = 0;
+        //                    model.AgvCode = "";
+        //                    model.PlaceCode = String.Format("{0}{1}{2}{3}", wmsArea.AreaDesc, t.ToString("00"), i.ToString("00"), j.ToString("00"));
+        //                    var isExit = await _wmsPlaceRep.AnyAsync(n => n.PlaceCode == model.PlaceCode);
+        //                    if (!isExit) await _wmsPlaceRep.InsertAsync(model);
+        //                }
+        //            }
+        //        }
+        //    }
+
+        //}
+
+        /// <summary>
+        /// 澧炲姞搴撲綅淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task AddNew(AddWmsPlaceInput input)
+        {
+            var isExit = await _wmsPlaceRep.AnyAsync(n => n.PlaceCode == input.Placecode);
+            if (isExit) throw Oops.Oh("瀛樺湪鐨勭浉鍚岀殑搴撲綅缂栫爜锛�");
+            var wmsPlace = input.Adapt<WmsPlace>();
+            wmsPlace.AgvCode = "Y/N";
+            wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN;
+            wmsPlace.Islock = YesOrNot.N;
+            wmsPlace.EmptyContainer = YesOrNot.N;
+            if (input.Heightlevel==0) {
+                wmsPlace.HeightLevel = Heightlevel.DI;
+            }
+            await _wmsPlaceRep.InsertAsync(wmsPlace);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎搴撲綅淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWmsPlaceInput input)
+        {
+            var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsPlaceRep.DeleteAsync(wmsPlace);
+        }
+
+        /// <summary>
+        /// 鎵归噺閿佸畾
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("MoreLock")]
+        public async Task MoreLock(MoreLockInput input)
+        {
+            if (input.Id.Count <= 0) throw Oops.Oh("id涓嶈兘涓虹┖锛�");
+            foreach (var item in input.Id)
+            {
+                var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.Id == item);
+                if (wmsPlace == null) throw Oops.Oh("搴撲綅淇℃伅涓嶅瓨鍦�!");
+                wmsPlace.Islock = YesOrNot.Y;
+                await _wmsPlaceRep.UpdateAsync(wmsPlace, ignoreNullValues: true);
+            }
+        }
+
+        /// <summary>
+        /// 鎵归噺瑙i攣
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("MoreUnlock")]
+        public async Task MoreUnlock(MoreLockInput input)
+        {
+            if (input.Id.Count <= 0) throw Oops.Oh("id涓嶈兘涓虹┖锛�");
+            foreach (var item in input.Id)
+            {
+                var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.Id == item);
+                if (wmsPlace == null) throw Oops.Oh("搴撲綅淇℃伅涓嶅瓨鍦�!");
+                wmsPlace.Islock = YesOrNot.N;
+                await _wmsPlaceRep.UpdateAsync(wmsPlace, ignoreNullValues: true);
+            }
+        }
+
+        /// <summary>
+        /// 鏇存柊搴撲綅淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWmsPlaceInput input)
+        {
+            var isExist = await _wmsPlaceRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsPlace = input.Adapt<WmsPlace>();
+            await _wmsPlaceRep.UpdateAsync(wmsPlace, ignoreNullValues: true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇搴撲綅淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WmsPlaceOutput> Get([FromQuery] QueryeWmsPlaceInput input)
+        {
+            return (await _wmsPlaceRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsPlaceOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇搴撲綅淇℃伅鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WmsPlaceOutput>> List([FromQuery] WmsPlaceInput input)
+        {
+            return await _wmsPlaceRep.DetachedEntities.ProjectToType<WmsPlaceOutput>().ToListAsync();
+        }
+
+        /// <summary>
+        /// 鑾峰彇WmsArea鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("fkWmsArea")]
+        public async Task<dynamic> FkWmsAreaList()
+        {
+            var list = await _wmsAreaRep.DetachedEntities.ToListAsync();
+            return list.Select(e => new { Code = e.Id, Name = e.AreaName });
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐔熷寲搴撳贩閬�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("GetFAisle")]
+        public async Task<object> GetFAisle()
+        {
+            var area = await _wmsAreaRep.FirstOrDefaultAsync(n => n.AreaStatus == CommonStatus.ENABLE && n.WorkShopType == LesWorkShopType.FAPAOCHEJIAN && n.AreaType == AreaType.LITIKU);
+            var objList = await _wmsPlaceRep.Where(n => n.AreaId == area.Id).OrderBy(n => n.Aisle).Select(n => n.Aisle).Distinct().ToArrayAsync();
+            for (int i = 0; i < objList.Length - 1; i++)
+            {
+                for (int j = 0; j < objList.Length - 1; j++)
+                {
+                    int k = j + 1;
+                    if (objList[j] > objList[k])
+                    {
+                        var temp = objList[k];
+                        objList[k] = objList[j];
+                        objList[j] = temp;
+                    }
+                }
+            }
+            return objList;
+        }
+    }
+
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceDto.cs
new file mode 100644
index 0000000..2b878ca
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceDto.cs
@@ -0,0 +1,50 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撳彛琛ㄨ緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsWarehouseEntranceDto
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+        
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+        /// </summary>
+        public WarehouseEntranceEnum Type { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public LesWorkShopType LesWorkShopType { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炲贩閬�
+        /// </summary>
+        public int AffiliatedRoadway { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public CommonStatus Status { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceInput.cs
new file mode 100644
index 0000000..7e42d74
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceInput.cs
@@ -0,0 +1,163 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撳彛琛ㄦ煡璇㈠弬鏁�
+    /// </summary>
+    public class WareWarehouseEntranceSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Code { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+        /// </summary>
+        public virtual WarehouseEntranceEnum? Type { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual LesWorkShopType? LesWorkShopType { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炲贩閬�
+        /// </summary>
+        public virtual int? AffiliatedRoadway { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public virtual string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual CommonStatus? Status { get; set; }
+    }
+
+    /// <summary>
+    /// 搴撳彛琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+    /// </summary>
+    public class WareWarehouseEntranceSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Code { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+        /// </summary>
+        public virtual WarehouseEntranceEnum? Type { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual LesWorkShopType? LesWorkShopType { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炲贩閬�
+        /// </summary>
+        public virtual int? AffiliatedRoadway { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public virtual string? Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual CommonStatus? Status { get; set; }
+    }
+
+    /// <summary>
+    /// 搴撳彛琛ㄨ緭鍏ュ弬鏁�
+    /// </summary>
+    public class WmsWarehouseEntranceInput
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Code { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+        /// </summary>
+        public virtual WarehouseEntranceEnum Type { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual LesWorkShopType LesWorkShopType { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炲贩閬�
+        /// </summary>
+        public virtual int AffiliatedRoadway { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public virtual string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual CommonStatus Status { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddWareWarehouseEntranceInput : WmsWarehouseEntranceInput
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteWareWarehouseEntranceInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateWareWarehouseEntranceInput : WmsWarehouseEntranceInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryeWareWarehouseEntranceInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceOutput.cs
new file mode 100644
index 0000000..d546f99
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceOutput.cs
@@ -0,0 +1,50 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撳彛琛ㄨ緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsWarehouseEntranceOutput
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+        
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+        /// </summary>
+        public WarehouseEntranceEnum Type { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public LesWorkShopType LesWorkShopType { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炲贩閬�
+        /// </summary>
+        public int AffiliatedRoadway { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public CommonStatus Status { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/WmsWarehouseEntranceService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/WmsWarehouseEntranceService.cs
new file mode 100644
index 0000000..125e6bd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/WmsWarehouseEntranceService.cs
@@ -0,0 +1,258 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using System.Text;
+using System.Web;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撳彛琛ㄦ湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsWarehouseEntrance", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsWarehouseEntranceService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wareWarehouseEntranceRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysDictTypeRep"></param>
+        /// <param name="sysDictDataRep"></param>
+        /// <param name="wareWarehouseEntranceRep"></param>
+
+        /// <param name="sysExcelTemplateService"></param>
+        public WmsWarehouseEntranceService(
+            IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wareWarehouseEntranceRep,
+            IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+            IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
+            ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+            _sysDictTypeRep = sysDictTypeRep;
+            _sysDictDataRep = sysDictDataRep;
+            _wareWarehouseEntranceRep = wareWarehouseEntranceRep;
+            _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ搴撳彛琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsWarehouseEntranceOutput>> Page([FromQuery] WareWarehouseEntranceSearch input)
+        {
+            var wareWarehouseEntrances = await _wareWarehouseEntranceRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(input.Name), u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.Code), u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%"))
+                .Where(input.Type != null, u => u.Type == input.Type)
+                .Where(input.LesWorkShopType != null, u => u.LesWorkShopType == input.LesWorkShopType)
+                .OrderBy(PageInputOrder.OrderBuilder<WareWarehouseEntranceSearch>(input))
+                .ProjectToType<WmsWarehouseEntranceOutput>()
+                .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wareWarehouseEntrances;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈠簱鍙h〃鍒楄〃
+        /// </summary>
+        /// <param name="input">搴撳彛琛ㄦ煡璇㈠弬鏁�</param>
+        /// <returns>(搴撳彛琛�)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<WmsWarehouseEntranceOutput>> ListNonPageAsync([FromQuery] WareWarehouseEntranceSearchNonPage input)
+        {
+            var pName = input.Name?.Trim() ?? "";
+            var pCode = input.Code?.Trim() ?? "";
+            var pType = input.Type;
+            var pLesWorkShopType = input.LesWorkShopType;
+            var wareWarehouseEntrances = await _wareWarehouseEntranceRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pName), u => EF.Functions.Like(u.Name, $"%{pName}%"))
+                .Where(!string.IsNullOrEmpty(pCode), u => EF.Functions.Like(u.Code, $"%{pCode}%"))
+                .Where(pType != null, u => u.Type == pType)
+                .Where(pLesWorkShopType != null, u => u.LesWorkShopType == pLesWorkShopType)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<WmsWarehouseEntranceOutput>()
+            .ToListAsync();
+            return wareWarehouseEntrances;
+        }
+
+        /// <summary>
+        /// 澧炲姞搴撳彛琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddWareWarehouseEntranceInput input)
+        {
+            var wareWarehouseEntrance = input.Adapt<WmsWarehouseEntrance>();
+            await _wareWarehouseEntranceRep.InsertAsync(wareWarehouseEntrance);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎搴撳彛琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWareWarehouseEntranceInput input)
+        {
+            var wareWarehouseEntrance = await _wareWarehouseEntranceRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wareWarehouseEntranceRep.DeleteAsync(wareWarehouseEntrance);
+        }
+
+        /// <summary>
+        /// 鏇存柊搴撳彛琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWareWarehouseEntranceInput input)
+        {
+            var isExist = await _wareWarehouseEntranceRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wareWarehouseEntrance = input.Adapt<WmsWarehouseEntrance>();
+            await _wareWarehouseEntranceRep.UpdateAsync(wareWarehouseEntrance, ignoreNullValues: true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇搴撳彛琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WmsWarehouseEntranceOutput> Get([FromQuery] QueryeWareWarehouseEntranceInput input)
+        {
+            return (await _wareWarehouseEntranceRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsWarehouseEntranceOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇搴撳彛琛ㄥ垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WmsWarehouseEntranceOutput>> List([FromQuery] WmsWarehouseEntranceInput input)
+        {
+            return await _wareWarehouseEntranceRep.DetachedEntities.ProjectToType<WmsWarehouseEntranceOutput>().ToListAsync();
+        }
+
+        /// <summary>
+        /// Excel妯℃澘瀵煎叆搴撳彛琛ㄥ姛鑳�
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WareWarehouseEntrance", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++)
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<WmsWarehouseEntranceOutput> wareWarehouseEntranceList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsWarehouseEntranceOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = wareWarehouseEntranceList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsWarehouseEntrance>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if (!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsWarehouseEntrance, WmsWarehouseEntranceOutput>(selectKeys);
+            List<WmsWarehouseEntrance> updates = new();
+            List<WmsWarehouseEntrance> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var wareWarehouseEntranceExistSubList = _wareWarehouseEntranceRep.Where(filter).Select(selector).ToList();
+                    wareWarehouseEntranceExistSubList.ForEach(x =>
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+
+                foreach (var wareWarehouseEntrance in wareWarehouseEntranceList)
+                {
+                    if (wareWarehouseEntrance.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wareWarehouseEntrance.Adapt<WmsWarehouseEntrance>());
+                    }
+                    else
+                    {
+                        adds.Add(wareWarehouseEntrance.Adapt<WmsWarehouseEntrance>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wareWarehouseEntranceRep.Update(x));
+
+                var maxId = _wareWarehouseEntranceRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);
+                Db.GetDbContext().Set<WmsWarehouseEntrance>().AddRange(adds);
+                Db.GetDbContext().SaveChanges();
+            }
+
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇搴撳彛琛ㄧ殑Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WareWarehouseEntrance", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        /// <summary>
+        /// 鏍规嵁搴撳彛琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+        /// </summary>
+        /// <param name="input">搴撳彛琛ㄦ煡璇㈠弬鏁�</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] WareWarehouseEntranceSearchNonPage input)
+        {
+            var wareWarehouseEntranceList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(wareWarehouseEntranceList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WareWarehouseEntrance", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppInput.cs
new file mode 100644
index 0000000..f2b55bf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppInput.cs
@@ -0,0 +1,119 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AppPageInput : PageInputBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Code { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddAppInput
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "搴旂敤鍚嶇О涓嶈兘涓虹┖")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "搴旂敤缂栫爜涓嶈兘涓虹┖")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鏄惁榛樿婵�娲伙紙Y-鏄紝N-鍚︼級,鍙兘鏈変竴涓郴缁熼粯璁ゆ縺娲�
+        /// 鐢ㄦ埛鐧诲綍鍚庨粯璁ゅ睍绀烘绯荤粺鑿滃崟
+        /// </summary>
+        public string Active { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public CommonStatus Status { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateAppInput
+    {
+        /// <summary>
+        /// 搴旂敤Id
+        /// </summary>
+        [Required(ErrorMessage = "搴旂敤Id涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Code { get; set; }
+
+        /// <summary>
+        /// 鏄惁榛樿婵�娲伙紙Y-鏄紝N-鍚︼級,鍙兘鏈変竴涓郴缁熼粯璁ゆ縺娲�
+        /// 鐢ㄦ埛鐧诲綍鍚庨粯璁ゅ睍绀烘绯荤粺鑿滃崟
+        /// </summary>
+        public string Active { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public CommonStatus Status { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class ChangeUserAppStatusInput : BaseId
+    {
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public CommonStatus Status { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryAppInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class SetDefaultAppInput : BaseId
+    {
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppOutput.cs
new file mode 100644
index 0000000..796fdfc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppOutput.cs
@@ -0,0 +1,33 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 绯荤粺搴旂敤鍙傛暟
+    /// </summary>
+    public class AppOutput
+    {
+        /// <summary>
+        /// 搴旂敤Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鏄惁榛樿
+        /// </summary>
+        public string Active { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/ISysAppService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/ISysAppService.cs
new file mode 100644
index 0000000..0230171
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/ISysAppService.cs
@@ -0,0 +1,74 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysAppService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task AddApp(AddAppInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task DeleteApp(BaseId input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<SysApp> GetApp([FromQuery] QueryAppInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<List<SysApp>> GetAppList();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        Task<List<AppOutput>> GetLoginApps(long userId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<SysApp>> QueryAppPageList([FromQuery] AppPageInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task SetAsDefault(SetDefaultAppInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateApp(UpdateAppInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task ChangeUserAppStatus(ChangeUserAppStatusInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/SysAppService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/SysAppService.cs
new file mode 100644
index 0000000..b8184d5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/SysAppService.cs
@@ -0,0 +1,191 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 绯荤粺搴旂敤鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "App", Order = 100)]
+    [Route("api")]
+    public class SysAppService : ISysAppService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysApp> _sysAppRep;    // 搴旂敤琛ㄤ粨鍌�
+        private readonly ISysMenuService _sysMenuService;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysAppRep"></param>
+        /// <param name="sysMenuService"></param>
+        public SysAppService(IRepository<SysApp> sysAppRep,
+                             ISysMenuService sysMenuService)
+        {
+            _sysAppRep = sysAppRep;
+            _sysMenuService = sysMenuService;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛搴旂敤鐩稿叧淇℃伅
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<AppOutput>> GetLoginApps(long userId)
+        {
+            var apps = _sysAppRep.DetachedEntities.Where(u => u.Status == CommonStatus.ENABLE);
+            if (!CurrentUserInfo.IsSuperAdmin)
+            {
+                var appCodeList = await _sysMenuService.GetUserMenuAppCodeList(userId);
+                apps = apps.Where(u => appCodeList.Contains(u.Code));
+            }
+            var appList = await apps.OrderBy(u => u.Sort).ProjectToType<AppOutput>().ToListAsync();
+
+            return appList;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ绯荤粺搴旂敤
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysApp/page")]
+        public async Task<PageResult<SysApp>> QueryAppPageList([FromQuery] AppPageInput input)
+        {
+            var name = !string.IsNullOrEmpty(input.Name?.Trim());
+            var code = !string.IsNullOrEmpty(input.Code?.Trim());
+            var apps = await _sysAppRep.DetachedEntities
+                                       .Where((name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")),
+                                              (code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%")))
+                                       //.Where(u => u.Status == CommonStatus.ENABLE)
+                                       .OrderBy(u => u.Sort)
+                                       .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return apps;
+        }
+
+        /// <summary>
+        /// 澧炲姞绯荤粺搴旂敤
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysApp/add")]
+        public async Task AddApp(AddAppInput input)
+        {
+            var isExist = await _sysAppRep.DetachedEntities.AnyAsync(u => u.Name == input.Name || u.Code == input.Code);
+            if (isExist)
+                throw Oops.Oh(ErrorCode.D5000);
+
+            if (input.Active == YesOrNot.Y.ToString())
+            {
+                isExist = await _sysAppRep.DetachedEntities.AnyAsync(u => u.Active == input.Active);
+                if (isExist)
+                    throw Oops.Oh(ErrorCode.D5001);
+            }
+
+            var app = input.Adapt<SysApp>();
+            await app.InsertAsync();
+        }
+
+        /// <summary>
+        /// 鍒犻櫎绯荤粺搴旂敤
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysApp/delete")]
+        public async Task DeleteApp(BaseId input)
+        {
+            var app = await _sysAppRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            // 璇ュ簲鐢ㄤ笅鏄惁鏈夌姸鎬佷负姝e父鐨勮彍鍗�
+            var hasMenu = await _sysMenuService.HasMenu(app.Code);
+            if (hasMenu)
+                throw Oops.Oh(ErrorCode.D5002);
+
+            await app.DeleteAsync();
+        }
+
+        /// <summary>
+        /// 鏇存柊绯荤粺搴旂敤
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysApp/edit")]
+        public async Task UpdateApp(UpdateAppInput input)
+        {
+            var isExist = await _sysAppRep.DetachedEntities.AnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id);
+            if (isExist)
+                throw Oops.Oh(ErrorCode.D5000);
+
+            if (input.Active == YesOrNot.Y.ToString())
+            {
+                isExist = await _sysAppRep.DetachedEntities.AnyAsync(u => u.Active == input.Active && u.Id != input.Id);
+                if (isExist)
+                    throw Oops.Oh(ErrorCode.D5001);
+            }
+
+            var app = input.Adapt<SysApp>();
+            await app.UpdateExcludeAsync(new[] { nameof(SysApp.Status) }, true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇绯荤粺搴旂敤
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysApp/detail")]
+        public async Task<SysApp> GetApp([FromQuery] QueryAppInput input)
+        {
+            return await _sysAppRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+        }
+
+        /// <summary>
+        /// 鑾峰彇绯荤粺搴旂敤鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysApp/list")]
+        public async Task<List<SysApp>> GetAppList()
+        {
+            return await _sysAppRep.DetachedEntities.Where(u => u.Status == CommonStatus.ENABLE).OrderBy(u => u.Sort).ToListAsync();
+        }
+
+        /// <summary>
+        /// 璁句负榛樿搴旂敤
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysApp/setAsDefault")]
+        public async Task SetAsDefault(SetDefaultAppInput input)
+        {
+            var apps = await _sysAppRep.Where(u => u.Status == CommonStatus.ENABLE).ToListAsync();
+            apps.ForEach(u =>
+            {
+                u.Active = YesOrNot.N.ToString();
+            });
+
+            var app = await _sysAppRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            app.Active = YesOrNot.Y.ToString();
+        }
+
+        /// <summary>
+        /// 淇敼鐢ㄦ埛鐘舵��
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysApp/changeStatus")]
+        public async Task ChangeUserAppStatus(ChangeUserAppStatusInput input)
+        {
+            if (!Enum.IsDefined(typeof(CommonStatus), input.Status))
+                throw Oops.Oh(ErrorCode.D3005);
+
+            var app = await _sysAppRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            app.Status = input.Status;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/AuthService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/AuthService.cs
new file mode 100644
index 0000000..4441399
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/AuthService.cs
@@ -0,0 +1,347 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Options;
+using Furion;
+using Furion.DatabaseAccessor;
+using Furion.DataEncryption;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.EventBus;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System.ComponentModel.DataAnnotations;
+using UAParser;
+using Admin.NET.Core.Entity.WmsBase;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐧诲綍鎺堟潈鐩稿叧鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "Auth", Order = 160)]
+    [Route("api")]
+    public class AuthService : IAuthService, IDynamicApiController, ITransient
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+
+        private readonly IRepository<SysUser> _sysUserRep; // 鐢ㄦ埛琛ㄤ粨鍌�
+        private readonly IRepository<WmsPdaPower> _wmsPdaPower;
+        private readonly IRepository<WmsRolePdaMenu> _wmsRolePdaMenu;
+        private readonly IRepository<SysDictData> _sysDictData;
+        private readonly ISysUserService _sysUserService; // 绯荤粺鐢ㄦ埛鏈嶅姟
+        private readonly ISysEmpService _sysEmpService; // 绯荤粺鍛樺伐鏈嶅姟
+        private readonly ISysRoleService _sysRoleService; // 绯荤粺瑙掕壊鏈嶅姟
+        private readonly ISysMenuService _sysMenuService; // 绯荤粺鑿滃崟鏈嶅姟
+        private readonly ISysAppService _sysAppService; // 绯荤粺搴旂敤鏈嶅姟
+        private readonly IClickWordCaptcha _captchaHandle; // 楠岃瘉鐮佹湇鍔�
+        private readonly ISysConfigService _sysConfigService; // 楠岃瘉鐮佹湇鍔�
+        private readonly IEventPublisher _eventPublisher;
+        private readonly ISysCacheService _cache;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public AuthService(IRepository<SysUser> sysUserRep, IRepository<WmsPdaPower> wmsPdaPower, IRepository<WmsRolePdaMenu> wmsRolePdaMenu,
+            IRepository<SysDictData> sysDictData, IHttpContextAccessor httpContextAccessor,
+            ISysUserService sysUserService, ISysEmpService sysEmpService, ISysRoleService sysRoleService,
+            ISysMenuService sysMenuService, ISysAppService sysAppService, IClickWordCaptcha captchaHandle,
+            ISysConfigService sysConfigService, IEventPublisher eventPublisher, ISysCacheService cache)
+        {
+            _sysUserRep = sysUserRep;
+            _wmsPdaPower = wmsPdaPower;
+            _wmsRolePdaMenu = wmsRolePdaMenu;
+            _sysDictData = sysDictData;
+            _httpContextAccessor = httpContextAccessor;
+            _sysUserService = sysUserService;
+            _sysEmpService = sysEmpService;
+            _sysRoleService = sysRoleService;
+            _sysMenuService = sysMenuService;
+            _sysAppService = sysAppService;
+            _captchaHandle = captchaHandle;
+            _sysConfigService = sysConfigService;
+            _eventPublisher = eventPublisher;
+            _cache = cache;
+        }
+
+        /// <summary>
+        /// 鐢ㄦ埛鐧诲綍
+        /// </summary>
+        /// <param name="input"></param>
+        /// <remarks>榛樿鐢ㄦ埛鍚�/瀵嗙爜锛歛dmin/admin</remarks>
+        /// <returns></returns>
+        [HttpPost("login")]
+        [AllowAnonymous]
+        public string LoginAsync([Required] LoginInput input)
+        {
+            // 鑾峰彇鍔犲瘑鍚庣殑瀵嗙爜
+            var encryptPasswod = MD5Encryption.Encrypt(input.Password);
+
+            // 鍒ゆ柇鐢ㄦ埛鍚嶅拰瀵嗙爜鏄惁姝g‘ 蹇界暐鍏ㄥ眬杩囨护鍣�
+            var user = _sysUserRep
+                .Where(u => u.Account.Equals(input.Account) && u.Password.Equals(encryptPasswod) && u.IsDeleted == false, false, true)
+                .FirstOrDefault();
+            _ = user ?? throw Oops.Oh(ErrorCode.D1000);
+
+            // 楠岃瘉璐﹀彿鏄惁琚喕缁�
+            if (user.Status == CommonStatus.DISABLE)
+                throw Oops.Oh(ErrorCode.D1017);
+
+            //楠岃瘉鏄惁鍗曠敤鎴风櫥褰曪紝濡傛灉鏄墧闄ゅ凡缁忕櫥褰曠殑鐢ㄦ埛
+            if (_sysConfigService.GetEnableSingleLoginFlag().Result)
+            {
+                var onlineUsers = _cache.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER).Result;
+                if (onlineUsers != null)
+                {
+                    var loginuser = onlineUsers.FirstOrDefault(u => u.UserId == user.Id);
+                    if (loginuser != null)
+                    {
+                        App.GetService<ISysOnlineUserService>().SingleLoginForceExist(loginuser);
+                    }
+                }
+            }
+
+            // 鍛樺伐淇℃伅
+            var empInfo = _sysEmpService.GetEmpInfo(user.Id).Result;
+
+            // 鑾峰彇鏁版嵁鏉冮檺
+            var dataScopes = JsonUtil.ToJson(_sysUserService.GetUserDataScopeIdList(user.Id).Result);
+
+            // 鐢熸垚Token浠ょ墝
+            //var accessToken = await _jwtBearerManager.CreateTokenAdmin(user);
+            var accessToken = JWTEncryption.Encrypt(new Dictionary<string, object>
+            {
+                {ClaimConst.CLAINM_USERID, user.Id},
+                //{ClaimConst.TENANT_ID, user.TenantId},
+                {ClaimConst.CLAINM_ACCOUNT, user.Account},
+                {ClaimConst.CLAINM_NAME, user.Name},
+                {ClaimConst.CLAINM_SUPERADMIN, user.AdminType},
+                {ClaimConst.CLAINM_ORGID, empInfo.OrgId},
+                {ClaimConst.CLAINM_ORGNAME, empInfo.OrgName},
+                {ClaimConst.DATA_SCOPES, dataScopes}
+            });
+
+            // 璁剧疆Swagger鑷姩鐧诲綍
+            _httpContextAccessor.HttpContext.SigninToSwagger(accessToken);
+
+            var tokenData = JWTEncryption.ReadJwtToken(accessToken);  // 瑙e瘑
+
+            //var (isValid, tokenData, validationResult) = JWTEncryption.Validate(accessToken); // 楠岃瘉token鏈夋晥鏈�
+
+            // 鐢熸垚鍒锋柊Token浠ょ墝
+            var refreshToken =
+                JWTEncryption.GenerateRefreshToken(accessToken, App.GetOptions<RefreshTokenSettingOptions>().ExpiredTime);
+
+            // 璁剧疆鍒锋柊Token浠ょ墝
+            _httpContextAccessor.HttpContext.Response.Headers["x-access-token"] = refreshToken;
+
+            return accessToken;
+        }
+
+        /// <summary>
+        /// 鑾峰彇褰撳墠PC鐧诲綍鐢ㄦ埛淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("getLoginUser")]
+        public async Task<LoginOutput> GetLoginUserAsync()
+        {
+            var user = _sysUserRep.FirstOrDefault(u => u.Id == CurrentUserInfo.UserId, false);
+            if (user == null)
+                throw Oops.Oh(ErrorCode.D1011);
+            var userId = user.Id;
+
+            var httpContext = _httpContextAccessor.HttpContext;
+            var loginOutput = user.Adapt<LoginOutput>();
+
+            loginOutput.LastLoginTime = user.LastLoginTime = DateTimeOffset.Now;
+            loginOutput.LastLoginIp = user.LastLoginIp = httpContext.GetRequestIPv4();
+
+            //var ipInfo = IpTool.Search(loginOutput.LastLoginIp);
+            //loginOutput.LastLoginAddress = ipInfo.Country + ipInfo.Province + ipInfo.City + "[" + ipInfo.NetworkOperator + "][" + ipInfo.Latitude + ipInfo.Longitude + "]";
+
+            var client = Parser.GetDefault().Parse(httpContext.Request.Headers["User-Agent"]);
+            loginOutput.LastLoginBrowser = client.UA.Family + client.UA.Major;
+            loginOutput.LastLoginOs = client.OS.Family + client.OS.Major;
+
+            // 鍛樺伐淇℃伅
+            loginOutput.LoginEmpInfo = await _sysEmpService.GetEmpInfo(userId);
+
+            // 瑙掕壊淇℃伅
+            loginOutput.Roles = await _sysRoleService.GetUserRoleList(userId);
+
+            // 鏉冮檺淇℃伅
+            loginOutput.Permissions = await _sysMenuService.GetLoginPermissionList(userId);
+
+            // 绯荤粺鎵�鏈夋潈闄愪俊鎭�
+            loginOutput.AllPermissions = await _sysMenuService.GetAllPermissionList();
+
+            // 鏁版嵁鑼冨洿淇℃伅(鏈烘瀯Id闆嗗悎)
+            loginOutput.DataScopes = await _sysUserService.GetUserDataScopeIdList(userId);
+
+            // 鍏峰搴旂敤淇℃伅锛堝绯荤粺锛岄粯璁ゆ縺娲讳竴涓紝鍙牴鎹郴缁熷垏鎹㈣彍鍗曪級,杩斿洖鐨勭粨鏋滀腑绗竴涓负婵�娲荤殑绯荤粺
+            loginOutput.Apps = await _sysAppService.GetLoginApps(userId);
+
+            // 鑿滃崟淇℃伅
+            if (loginOutput.Apps.Count > 0)
+            {
+                var activeApp = loginOutput.Apps.FirstOrDefault(u => u.Active == YesOrNot.Y.ToString());
+                var defaultActiveAppCode = activeApp != null ? activeApp.Code : loginOutput.Apps.FirstOrDefault().Code;
+                loginOutput.Menus = await _sysMenuService.GetLoginMenusAntDesign(userId, defaultActiveAppCode);
+            }
+
+            // 鏇存柊鐢ㄦ埛鏈�鍚庣櫥褰旾p鍜屾椂闂�
+            await _sysUserRep.UpdateIncludeAsync(user, new[] { nameof(SysUser.LastLoginIp), nameof(SysUser.LastLoginTime) });
+
+            // 澧炲姞鐧诲綍鏃ュ織
+            await _eventPublisher.PublishAsync(new ChannelEventSource("Create:VisLog",
+                new SysLogVis
+                {
+                    Name = loginOutput.Name,
+                    Success = YesOrNot.Y,
+                    Message = "鐧诲綍鎴愬姛",
+                    Ip = loginOutput.LastLoginIp,
+                    Browser = loginOutput.LastLoginBrowser,
+                    Os = loginOutput.LastLoginOs,
+                    VisType = LoginType.LOGIN,
+                    VisTime = loginOutput.LastLoginTime,
+                    Account = loginOutput.Account
+                }));
+            return loginOutput;
+        }
+
+        /// <summary>
+        /// 鑾峰彇褰撳墠PDA鐧诲綍鐢ㄦ埛淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("getPdaLoginUser")]
+        public async Task<LoginPdaOutput> GetPdaLoginUserAsync()
+        {
+            var user = _sysUserRep.FirstOrDefault(u => u.Id == CurrentUserInfo.UserId, false);
+            if (user == null)
+                throw Oops.Oh(ErrorCode.D1011);
+            var userId = user.Id;
+
+            var httpContext = _httpContextAccessor.HttpContext;
+            var loginOutput = user.Adapt<LoginPdaOutput>();
+
+            loginOutput.LastLoginTime = user.LastLoginTime = DateTimeOffset.Now;
+            loginOutput.LastLoginIp = user.LastLoginIp = httpContext.GetRequestIPv4();
+
+            //var ipInfo = IpTool.Search(loginOutput.LastLoginIp);
+            //loginOutput.LastLoginAddress = ipInfo.Country + ipInfo.Province + ipInfo.City + "[" + ipInfo.NetworkOperator + "][" + ipInfo.Latitude + ipInfo.Longitude + "]";
+
+            var client = Parser.GetDefault().Parse(httpContext.Request.Headers["User-Agent"]);
+            loginOutput.LastLoginBrowser = client.UA.Family + client.UA.Major;
+            loginOutput.LastLoginOs = client.OS.Family + client.OS.Major;
+            // 瑙掕壊淇℃伅
+            var roleList = await _sysRoleService.GetUserRoleList(userId);
+
+            var meunIdList = _wmsRolePdaMenu.Where(n => roleList.Select(u => u.Id).Contains(n.SysRoleId)).Select(n => n.PdaMenuId).ToList();
+            var wmspdaPowerList = _wmsPdaPower.Where(n => meunIdList.Contains(n.Id)).Adapt<List<WmsPdaPowerOutput>>();
+
+            var dicDataList = _sysDictData.Where(p => p.TypeId == 383290718294085).ToList();
+            var listData = new List<wmsPdaPowerMenuOutput>();
+            foreach (var item in dicDataList)
+            {
+                var enumValue = LesWorkShopType.FAPAOCHEJIAN;
+                if (item.Code == "1") enumValue = LesWorkShopType.FAPAOCHEJIAN;
+                else if (item.Code == "2") enumValue = LesWorkShopType.JIAOHEBANCHEJIAN;
+                else if (item.Code == "3") enumValue = LesWorkShopType.JHBCJ;
+                else if (item.Code == "4") enumValue = LesWorkShopType.RSBCJ;
+                else if (item.Code == "5") enumValue = LesWorkShopType.YLKCJ;
+                else enumValue = LesWorkShopType.TY;
+                if (wmspdaPowerList.Where(n => n.WorkShopType == enumValue).ToList().Count() != 0)
+                {
+                    listData.Add(new wmsPdaPowerMenuOutput()
+                    {
+                        WorkShopName = item.Value,
+                        WmsPdaPowerOutput = wmspdaPowerList.Where(n => n.WorkShopType == enumValue).ToList()
+                    });
+                }
+            }
+            loginOutput.WmsPdaPowerOutputs = listData;
+            // 鏇存柊鐢ㄦ埛鏈�鍚庣櫥褰旾p鍜屾椂闂�
+            await _sysUserRep.UpdateIncludeAsync(user, new[] { nameof(SysUser.LastLoginIp), nameof(SysUser.LastLoginTime) });
+
+            // 澧炲姞鐧诲綍鏃ュ織
+            await _eventPublisher.PublishAsync(new ChannelEventSource("Create:VisLog",
+                new SysLogVis
+                {
+                    Name = loginOutput.Name,
+                    Success = YesOrNot.Y,
+                    Message = "鐧诲綍鎴愬姛",
+                    Ip = loginOutput.LastLoginIp,
+                    Browser = loginOutput.LastLoginBrowser,
+                    Os = loginOutput.LastLoginOs,
+                    VisType = LoginType.LOGIN,
+                    VisTime = loginOutput.LastLoginTime,
+                    Account = loginOutput.Account
+                }));
+            return loginOutput;
+        }
+
+        /// <summary>
+        /// 閫�鍑�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("logout")]
+        [AllowAnonymous]
+        public async Task LogoutAsync()
+        {
+            var ip = _httpContextAccessor.HttpContext.GetRequestIPv4();
+            _httpContextAccessor.HttpContext.SignoutToSwagger();
+            //_httpContextAccessor.HttpContext.Response.Headers["access-token"] = "invalid token";
+
+            // 澧炲姞閫�鍑烘棩蹇�
+            await _eventPublisher.PublishAsync(new ChannelEventSource("Create:VisLog",
+                new SysLogVis
+                {
+                    Name = CurrentUserInfo.Name,
+                    Success = YesOrNot.Y,
+                    Message = "閫�鍑烘垚鍔�",
+                    VisType = LoginType.LOGOUT,
+                    VisTime = DateTimeOffset.Now,
+                    Account = CurrentUserInfo.Account,
+                    Ip = ip
+                }));
+        }
+
+        /// <summary>
+        /// 鑾峰彇楠岃瘉鐮佸紑鍏�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("getCaptchaOpen")]
+        [AllowAnonymous]
+        public async Task<bool> GetCaptchaOpen()
+        {
+            return await _sysConfigService.GetCaptchaOpenFlag();
+        }
+
+        /// <summary>
+        /// 鑾峰彇楠岃瘉鐮侊紙榛樿鐐归�夋ā寮忥級
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("captcha/get")]
+        [AllowAnonymous]
+        [NonUnify]
+        public async Task<ClickWordCaptchaResult> GetCaptcha()
+        {
+            // 鍥剧墖澶у皬瑕佷笌鍓嶇淇濇寔涓�鑷达紙鍧愭爣鑼冨洿锛�
+            return await _captchaHandle.CreateCaptchaImage(_captchaHandle.RandomCode(4), 310, 155);
+        }
+
+        /// <summary>
+        /// 鏍¢獙楠岃瘉鐮�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("captcha/check")]
+        [AllowAnonymous]
+        [NonUnify]
+        public async Task<ClickWordCaptchaResult> VerificationCode(ClickWordCaptchaInput input)
+        {
+            return await _captchaHandle.CheckCode(input);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginInput.cs
new file mode 100644
index 0000000..bff90cc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginInput.cs
@@ -0,0 +1,24 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐧诲綍杈撳叆鍙傛暟
+    /// </summary>
+    public class LoginInput
+    {
+        /// <summary>
+        /// 鐢ㄦ埛鍚�
+        /// </summary>
+        /// <example>superAdmin</example>
+        [Required(ErrorMessage = "鐢ㄦ埛鍚嶄笉鑳戒负绌�"), MinLength(5, ErrorMessage = "鐢ㄦ埛鍚嶄笉鑳藉皯浜�5浣嶅瓧绗�")]
+        public string Account { get; set; }
+
+        /// <summary>
+        /// 瀵嗙爜
+        /// </summary>
+        /// <example>123456</example>
+        [Required(ErrorMessage = "瀵嗙爜涓嶈兘涓虹┖"), MinLength(5, ErrorMessage = "瀵嗙爜涓嶈兘灏戜簬5浣嶅瓧绗�")]
+        public string Password { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginOutput.cs
new file mode 100644
index 0000000..f5c7b52
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginOutput.cs
@@ -0,0 +1,275 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐢ㄦ埛鐧诲綍杈撳嚭鍙傛暟
+    /// </summary>
+    public class LoginOutput
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        public string Account { get; set; }
+
+        /// <summary>
+        /// 鏄电О
+        /// </summary>
+        public string NickName { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 澶村儚
+        /// </summary>
+        public string Avatar { get; set; }
+
+        /// <summary>
+        /// 鐢熸棩
+        /// </summary>
+        public DateTimeOffset? Birthday { get; set; }
+
+        /// <summary>
+        /// 鎬у埆(瀛楀吀 1鐢� 2濂�)
+        /// </summary>
+        public int Sex { get; set; }
+
+        /// <summary>
+        /// 閭
+        /// </summary>
+        public String Email { get; set; }
+
+        /// <summary>
+        /// 鎵嬫満
+        /// </summary>
+        public String Phone { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽
+        /// </summary>
+        public String Tel { get; set; }
+
+        /// <summary>
+        /// 浜х嚎id
+        /// </summary>
+        public long ProductionlineId { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public LesWorkShopType WorkShopType { get; set; }
+
+        /// <summary>
+        /// 绠$悊鍛樼被鍨嬶紙1瓒呯骇绠$悊鍛� 2绠$悊鍛� 3鏅�氳处鍙凤級
+        /// </summary>
+        public int AdminType { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥闄咺P
+        /// </summary>
+        public string LastLoginIp { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥闄嗘椂闂�
+        /// </summary>
+        public DateTimeOffset? LastLoginTime { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥闄嗗湴鍧�
+        /// </summary>
+        public string LastLoginAddress { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥闄嗘墍鐢ㄦ祻瑙堝櫒
+        /// </summary>
+        public string LastLoginBrowser { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥闄嗘墍鐢ㄧ郴缁�
+        /// </summary>
+        public string LastLoginOs { get; set; }
+
+        /// <summary>
+        /// 鍛樺伐淇℃伅
+        /// </summary>
+        public EmpOutput LoginEmpInfo { get; set; } = new EmpOutput();
+
+        /// <summary>
+        /// 鍏峰搴旂敤淇℃伅
+        /// </summary>
+        public List<AppOutput> Apps { get; set; } = new List<AppOutput>();
+
+        /// <summary>
+        /// 瑙掕壊淇℃伅
+        /// </summary>
+        public List<RoleOutput> Roles { get; set; } = new List<RoleOutput>();
+
+        /// <summary>
+        /// 鏉冮檺淇℃伅
+        /// </summary>
+        public List<string> Permissions { get; set; } = new List<string>();
+
+        /// <summary>
+        /// 绯荤粺鎵�鏈夋潈闄愪俊鎭�
+        /// </summary>
+        public List<string> AllPermissions { get; set; } = new List<string>();
+
+        /// <summary>
+        /// 鐧诲綍鑿滃崟淇℃伅---AntDesign鐗堟湰鑿滃崟
+        /// </summary>
+        public List<AntDesignTreeNode> Menus { get; set; } = new List<AntDesignTreeNode>();
+
+        /// <summary>
+        /// 鏁版嵁鑼冨洿锛堟満鏋勶級淇℃伅
+        /// </summary>
+        public List<long> DataScopes { get; set; } = new List<long>();
+
+        ///// <summary>
+        ///// 绉熸埛淇℃伅
+        ///// </summary>
+        //public List<long> Tenants { get; set; }
+
+        ///// <summary>
+        ///// 瀵嗙爜
+        ///// </summary>
+        //public string Password { get; set; }
+
+        ///// <summary>
+        ///// 璐︽埛杩囨湡
+        ///// </summary>
+        //public string AccountNonExpired { get; set; }
+
+        ///// <summary>
+        ///// 鍑瘉杩囨湡
+        ///// </summary>
+        //public string CredentialsNonExpired { get; set; }
+
+        ///// <summary>
+        ///// 璐︽埛閿佸畾
+        ///// </summary>
+        //public bool AccountNonLocked { get; set; }
+
+        ///// <summary>
+        ///// 鐢ㄦ埛鍚嶇О
+        ///// </summary>
+        //public string UserName { get; set; }
+
+        ///// <summary>
+        ///// 鏉冮檺
+        ///// </summary>
+        //public List<long> Authorities { get; set; } = new List<long>();
+
+        ///// <summary>
+        ///// 鏄惁鍚姩
+        ///// </summary>
+        //public bool Enabled { get; set; }
+    }
+
+    public class LoginPdaOutput
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        public string Account { get; set; }
+
+        /// <summary>
+        /// 鏄电О
+        /// </summary>
+        public string NickName { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 澶村儚
+        /// </summary>
+        public string Avatar { get; set; }
+
+        /// <summary>
+        /// 鐢熸棩
+        /// </summary>
+        public DateTimeOffset? Birthday { get; set; }
+
+        /// <summary>
+        /// 鎬у埆(瀛楀吀 1鐢� 2濂�)
+        /// </summary>
+        public int Sex { get; set; }
+
+        /// <summary>
+        /// 閭
+        /// </summary>
+        public String Email { get; set; }
+
+        /// <summary>
+        /// 鎵嬫満
+        /// </summary>
+        public String Phone { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽
+        /// </summary>
+        public String Tel { get; set; }
+
+        /// <summary>
+        /// 浜х嚎id
+        /// </summary>
+        public long ProductionlineId { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public LesWorkShopType WorkShopType { get; set; }
+
+        /// <summary>
+        /// 绠$悊鍛樼被鍨嬶紙1瓒呯骇绠$悊鍛� 2绠$悊鍛� 3鏅�氳处鍙凤級
+        /// </summary>
+        public int AdminType { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥闄咺P
+        /// </summary>
+        public string LastLoginIp { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥闄嗘椂闂�
+        /// </summary>
+        public DateTimeOffset? LastLoginTime { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥闄嗗湴鍧�
+        /// </summary>
+        public string LastLoginAddress { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥闄嗘墍鐢ㄦ祻瑙堝櫒
+        /// </summary>
+        public string LastLoginBrowser { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥闄嗘墍鐢ㄧ郴缁�
+        /// </summary>
+        public string LastLoginOs { get; set; }
+
+        /// <summary>
+        /// 鍛樺伐淇℃伅
+        /// </summary>
+        public List<wmsPdaPowerMenuOutput> WmsPdaPowerOutputs { get; set; } 
+
+      
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/RegistInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/RegistInput.cs
new file mode 100644
index 0000000..5798f0c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/RegistInput.cs
@@ -0,0 +1,31 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application.Auth.Dto
+{
+    /// <summary>
+    /// 娉ㄥ唽杈撳叆鍙傛暟
+    /// </summary>
+    public class RegistInput
+    {
+        /// <summary>
+        /// 鐢ㄦ埛鍚�
+        /// </summary>
+        /// <example>superAdmin</example>
+        [Required(ErrorMessage = "鐢ㄦ埛鍚嶄笉鑳戒负绌�"), MinLength(3, ErrorMessage = "鐢ㄦ埛鍚嶄笉鑳藉皯浜�3浣嶅瓧绗�")]
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 鍏徃鍚�
+        /// </summary>
+        /// <example>superAdmin</example>
+        [Required(ErrorMessage = "鍏徃涓嶈兘涓虹┖"), MinLength(3, ErrorMessage = "鍏徃涓嶈兘灏戜簬3浣嶅瓧绗�")]
+        public string CompanyName { get; set; }
+
+        /// <summary>
+        /// 瀵嗙爜
+        /// </summary>
+        /// <example>123456</example>
+        [Required(ErrorMessage = "瀵嗙爜涓嶈兘涓虹┖"), MinLength(5, ErrorMessage = "瀵嗙爜涓嶈兘灏戜簬5浣嶅瓧绗�")]
+        public string Password { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/IAuthService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/IAuthService.cs
new file mode 100644
index 0000000..13c0ff0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/IAuthService.cs
@@ -0,0 +1,48 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface IAuthService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<ClickWordCaptchaResult> GetCaptcha();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<bool> GetCaptchaOpen();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<LoginOutput> GetLoginUserAsync();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        string LoginAsync([FromBody] LoginInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task LogoutAsync();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<ClickWordCaptchaResult> VerificationCode(ClickWordCaptchaInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/BaseService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/BaseService.cs
new file mode 100644
index 0000000..2296663
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/BaseService.cs
@@ -0,0 +1,405 @@
+using Admin.NET.Core;
+using Furion.ClayObject.Extensions;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.FriendlyException;
+using Furion.JsonSerialization;
+using Magicodes.ExporterAndImporter.Core;
+using Magicodes.ExporterAndImporter.Excel;
+using Mapster;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Expressions;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 閫氱敤鏂规硶
+    /// </summary>
+    /// <typeparam name="TEntity"></typeparam>
+    /// <typeparam name="TSearchDto"></typeparam>
+    /// <typeparam name="TAddDto"></typeparam>
+    /// <typeparam name="TUpdateDto"></typeparam>
+    /// <typeparam name="TImportDto"></typeparam>
+    /// <typeparam name="TDetailDto"></typeparam>
+    /// <typeparam name="TPageListDto"></typeparam>
+    /// <typeparam name="TExportDto"></typeparam>
+    /// <typeparam name="TPrintDto"></typeparam>
+    public class BaseService<TEntity, TSearchDto, TAddDto, TUpdateDto, TImportDto, TDetailDto, TPageListDto, TExportDto, TPrintDto>
+        where TEntity : DEntityBase, new()
+        where TUpdateDto : BaseDto
+        where TSearchDto : PageInputBase
+        where TPageListDto : new()
+        where TExportDto : class, new()
+        where TImportDto : class, new()
+    {
+        /// <summary>
+        /// 鏁版嵁浠撳偍
+        /// </summary>
+        protected readonly IRepository<TEntity> Repository;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="repository"></param>
+        public BaseService(IRepository<TEntity> repository)
+        {
+            Repository = repository;
+        }
+
+        #region 鏌ヨ/鍒嗛〉鏌ヨ
+
+        /// <summary>
+        /// 涓婚敭鏌ヨ
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public virtual async Task<TDetailDto> Get(long id)
+        {
+            var entity = await Repository.DetachedEntities.FirstOrDefaultAsync(e => e.Id == id);
+            return entity.Adapt<TDetailDto>();
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鎼滅储鍓�
+        /// </summary>
+        protected Func<TSearchDto, Expression<Func<TEntity, bool>>> SearchExpression = null;
+
+        /// <summary>
+        /// 鑷畾涔夊垎椤垫悳绱紙澶嶆潅鏌ヨ锛�
+        /// </summary>
+        protected Func<TSearchDto, IQueryable<TEntity>> SearchQueryable = null;
+
+        /// <summary>
+        /// 鍒嗛〉鏁版嵁杩斿洖鍓嶅鐞�
+        /// </summary>
+        /// <returns></returns>
+        protected Action<PageResult<TEntity>> PageListHandle = null;
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="searchDto"></param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        [HttpPost("page")]
+        public virtual async Task<PageResult<TEntity>> PageList(TSearchDto searchDto)
+        {
+            IQueryable<TEntity> queryable;
+            if (SearchQueryable != null)
+            {
+                // 閫氳繃娲剧敓绫讳腑瀹氫箟鐨勫鎵樻柟娉曡嚜瀹氫箟鏌ヨ鏉′欢
+                queryable = SearchQueryable(searchDto);
+            }
+            else
+            {
+                // 鍔ㄦ�佹瀯寤烘煡璇㈡潯浠�
+                GetSearchParameters(searchDto);
+                queryable = Repository.DetachedEntities.Search(searchDto);
+
+                // 鏈夎嚜瀹氫箟鐨勬煡璇㈡潯浠�
+                if (SearchExpression != null)
+                    queryable = queryable.Where(SearchExpression(searchDto));
+            }
+
+            var pageList = await queryable.ToADPagedListAsync(searchDto.PageNo, searchDto.PageSize);
+
+            PageListHandle?.Invoke(pageList);
+
+            return pageList;
+        }
+
+        #endregion 鏌ヨ/鍒嗛〉鏌ヨ
+
+        #region 鏂板
+
+        /// <summary>
+        /// 鏂板鍓嶉獙璇佹垨澶勭悊
+        /// </summary>
+        protected Action<TAddDto> BeforeAddAction = null;
+
+        /// <summary>
+        /// 鏂板鍚庡鐞�
+        /// </summary>
+        protected Action<TEntity> AfterAddAction = null;
+
+        /// <summary>
+        /// 鏂板
+        /// </summary>
+        /// <param name="addDto"></param>
+        public virtual async Task Add(TAddDto addDto)
+        {
+            // 鏂板鍓嶆搷浣�
+            BeforeAddAction?.Invoke(addDto);
+
+            // 鍐欐暟鎹�
+            var entity = await addDto.Adapt<TEntity>().InsertAsync();
+
+            // 鏂板鍚庢搷浣�
+            AfterAddAction?.Invoke(entity.Entity);
+        }
+
+        #endregion 鏂板
+
+        #region 鍒犻櫎/鍋囧垹闄�
+
+        /// <summary>
+        /// 鍒犻櫎鍓嶉獙璇佹垨澶勭悊
+        /// </summary>
+        protected Action<List<long>> BeforeDeleteAction = null;
+
+        /// <summary>
+        /// 鍒犻櫎鍚庡鐞�
+        /// </summary>
+        protected Action<List<long>, int> AfterDeleteAction = null;
+
+        /// <summary>
+        /// 鍒犻櫎
+        /// </summary>
+        /// <param name="ids"></param>
+        public virtual async Task Delete(List<long> ids)
+        {
+            BeforeDeleteAction?.Invoke(ids);
+            var count = await Repository.Context.DeleteRangeAsync<TEntity>(x => ids.Contains(x.Id));
+
+            AfterDeleteAction?.Invoke(ids, count);
+        }
+
+        /// <summary>
+        /// 鍋囧垹闄ゅ墠楠岃瘉鎴栧鐞�
+        /// </summary>
+        protected Action<List<long>> BeforeFakeDeleteAction = null;
+
+        /// <summary>
+        /// 鍋囧垹闄ゅ悗澶勭悊
+        /// </summary>
+        protected Action<List<long>, int> AfterFakeDeleteAction = null;
+
+        /// <summary>
+        /// 鍋囧垹闄�
+        /// </summary>
+        /// <param name="ids"></param>
+        [HttpDelete("fakeDelete")]
+        public virtual async Task FakeDelete(List<long> ids)
+        {
+            BeforeFakeDeleteAction?.Invoke(ids);
+
+            var count = await Repository.Context.BatchUpdate<TEntity>()
+                .Set(x => x.IsDeleted, x => false)
+                .Where(x => ids.Contains(x.Id))
+                .ExecuteAsync();
+
+            AfterFakeDeleteAction?.Invoke(ids, count);
+        }
+
+        #endregion 鍒犻櫎/鍋囧垹闄�
+
+        #region 淇敼
+
+        /// <summary>
+        /// 鏇存柊鍓嶉獙璇佹垨澶勭悊
+        /// </summary>
+        protected Action<TUpdateDto> BeforeUpdateAction = null;
+
+        /// <summary>
+        /// 鏇存柊鍚庡鐞�
+        /// </summary>
+        protected Action<TEntity> AfterUpdateAction = null;
+
+        /// <summary>
+        /// 淇敼
+        /// </summary>
+        /// <param name="updateDto"></param>
+        [HttpPut("edit")]
+        public virtual async Task Update(TUpdateDto updateDto)
+        {
+            BeforeUpdateAction?.Invoke(updateDto);
+            var entity = await updateDto.Adapt<TEntity>().UpdateAsync(true);
+            AfterUpdateAction?.Invoke(entity.Entity);
+        }
+
+        #endregion 淇敼
+
+        #region 瀵煎叆
+
+        /// <summary>
+        /// 瀵煎叆妯$増涓嬭浇
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("importTemplate")]
+        public virtual async Task<FileContentResult> ImportTemplate()
+        {
+            // 鍒涘缓Excel瀵煎叆瀵硅薄
+            IImporter importer = new ExcelImporter();
+            var byteArray = await importer.GenerateTemplateBytes<TImportDto>();
+
+            // 鏂囦欢鍚嶇О
+            var fileName = typeof(TEntity).GetDescriptionValue<CommentAttribute>().Comment + "瀵煎叆妯$増.xlsx";
+
+            return await Task.FromResult(
+                new FileContentResult(byteArray, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
+                {
+                    FileDownloadName = fileName
+                });
+        }
+
+        /// <summary>
+        /// 瀵煎叆鍓嶉獙璇佹垨澶勭悊
+        /// </summary>
+        protected Action<IEnumerable<TImportDto>> BeforeImportAction = null;
+
+        /// <summary>
+        /// 瀵煎叆鍚庡鐞�
+        /// </summary>
+        protected Action<IEnumerable<TImportDto>> AfterImportAction = null;
+
+        /// <summary>
+        /// 瀵煎叆
+        /// </summary>
+        /// <param name="file"></param>
+        /// <exception cref="Exception"></exception>
+        [UnitOfWork]
+        public virtual async Task Import(IFormFile file)
+        {
+            var path = Path.Combine(Path.GetTempPath(), $"{YitIdHelper.NextId()}.xlsx");
+            await using (var stream = File.Create(path))
+            {
+                await file.CopyToAsync(stream);
+            }
+
+            // 鍒涘缓Excel瀵煎叆瀵硅薄
+            IImporter importer = new ExcelImporter();
+            var import = await importer.Import<TImportDto>(path);
+
+            if (import == null)
+                throw Oops.Oh("瀵煎叆妯$増瑙f瀽寮傚父");
+            if (import.Exception != null)
+                throw Oops.Oh("瀵煎叆寮傚父:" + import.Exception);
+            if (import.RowErrors.Count > 0)
+                throw Oops.Oh("鏁版嵁鏍¢獙:" + JSON.Serialize(import.RowErrors));
+
+            BeforeImportAction?.Invoke(import.Data);
+
+            await Repository.InsertAsync(import.Data.Adapt<ICollection<TEntity>>());
+
+            AfterImportAction?.Invoke(import.Data);
+        }
+
+        #endregion 瀵煎叆
+
+        #region 瀵煎嚭
+
+        /// <summary>
+        /// 瀵煎嚭鎼滅储鍓�
+        /// </summary>
+        protected Func<TSearchDto, Expression<Func<TEntity, bool>>> ExportSearchExpression = null;
+
+        /// <summary>
+        /// 鑷畾涔夊鍑烘悳绱紙澶嶆潅鏌ヨ锛�
+        /// </summary>
+        protected Func<TSearchDto, IQueryable<TEntity>> ExportSearchQueryable = null;
+
+        /// <summary>
+        /// 瀵煎嚭鏁版嵁杩斿洖鍓嶅鐞�
+        /// </summary>
+        /// <returns></returns>
+        protected Action<PagedList<TEntity>> ExportHandle = null;
+
+        /// <summary>
+        /// 瀵煎嚭
+        /// </summary>
+        /// <param name="searchDto"></param>
+        /// <returns></returns>
+        [HttpGet("export")]
+        public virtual async Task<FileContentResult> Export(TSearchDto searchDto)
+        {
+            IQueryable<TEntity> queryable;
+            if (ExportSearchQueryable != null)
+            {
+                // 閫氳繃娲剧敓绫讳腑瀹氫箟鐨勫鎵樻柟娉曡嚜瀹氫箟鏌ヨ鏉′欢
+                queryable = ExportSearchQueryable(searchDto);
+            }
+            else
+            {
+                // 鍔ㄦ�佹瀯寤烘煡璇㈡潯浠�
+                GetSearchParameters(searchDto);
+                queryable = Repository.DetachedEntities.Search(searchDto);
+
+                // 鏈夎嚜瀹氫箟鐨勬煡璇㈡潯浠�
+                if (ExportSearchExpression != null)
+                    queryable = queryable.Where(ExportSearchExpression(searchDto));
+            }
+
+            var entitys = await queryable.ToListAsync();
+
+            // 鍒涘缓Excel瀵煎嚭瀵硅薄
+            IExporter exporter = new ExcelExporter();
+
+            // 瀵煎嚭鏂囦欢
+            var byteArray = await exporter.ExportAsByteArray(entitys.Adapt<List<TExportDto>>());
+
+            // 鏂囦欢鍚嶇О
+            var fileName = typeof(TEntity).GetDescriptionValue<CommentAttribute>() + DateTime.Now.ToString("yyyyMMddHHssmm") + ".xlsx";
+
+            return await Task.FromResult(
+                new FileContentResult(byteArray, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
+                {
+                    FileDownloadName = fileName
+                });
+        }
+
+        #endregion 瀵煎嚭
+
+        #region 鎵撳嵃
+
+        /// <summary>
+        /// 鑾峰彇鎵撳嵃鏁版嵁 todo: 鏈�绠�鍗曠殑涓婚敭鏌ヨ鍗曟潯鏁版嵁锛屽悗缁疄鐜板崟鎹墦鍗版ā鐗堟ā鍧�
+        /// </summary>
+        /// <param name="id"></param>
+        [HttpGet("print")]
+        public virtual async Task<TPrintDto> Print(long id)
+        {
+            var entity = await Repository.DetachedEntities.FirstOrDefaultAsync(e => e.Id == id);
+            return entity.Adapt<TPrintDto>();
+        }
+
+        #endregion 鎵撳嵃
+
+        #region 绉佹湁鏂规硶
+
+        /// <summary>
+        /// 灏嗘煡璇to缁勮鎴愭悳绱㈠弬鏁�
+        /// </summary>
+        /// <param name="searchDto"></param>
+        /// <returns></returns>
+        private void GetSearchParameters(TSearchDto searchDto)
+        {
+            // 濡傛灉娌℃湁澶嶆潅鏌ヨ鏉′欢锛屾妸鑷畾涔夋煡璇to涓湁鍐呭鐨勯」鍔犲叆鏌ヨ鏉′欢
+            if (searchDto.SearchParameters != null && searchDto.SearchParameters.Any()) return;
+
+            // 鏌ヨdto杞负瀛楀吀
+            var searchDictionary = searchDto.ToDictionary();
+
+            // 鍙栧疄浣撲腑鐨勫瓧娈靛悕绉�
+            var entityPropertieNames =
+                typeof(TEntity).GetProperties().Select(x => x.Name).ToList();
+
+            // 灏唖earchDto涓湁鍊肩殑灞炴�у姞鍏ュ鏉傛煡璇㈡潯浠�
+            foreach (var keyValuePair in searchDictionary)
+            {
+                // 璺宠繃鑷畾涔夊睘鎬у拰绌哄�煎睘鎬э紝鑷畾涔夊睘鎬у彲鍦ㄦ煡璇㈠墠濮旀墭涓畾涔夋煡璇㈡潯浠�
+                if (!entityPropertieNames.Contains(keyValuePair.Key) || keyValuePair.Value == null) continue;
+                searchDto.SearchParameters.Add(new Condition()
+                {
+                    Field = keyValuePair.Key,
+                    Op = QueryTypeEnum.Equals,
+                    Value = keyValuePair.Value
+                });
+            }
+        }
+
+        #endregion 绉佹湁鏂规硶
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/Dto/BaseDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/Dto/BaseDto.cs
new file mode 100644
index 0000000..59be149
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/Dto/BaseDto.cs
@@ -0,0 +1,52 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class BaseDto
+    {
+        /// <summary>
+        /// 涓婚敭Id
+        /// </summary>
+        public virtual long Id { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset? CreatedTime { get; set; }
+
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset? UpdatedTime { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鑰匢d
+        /// </summary>
+        public virtual long? CreatedUserId { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        [MaxLength(20)]
+        public virtual string CreatedUserName { get; set; }
+
+        /// <summary>
+        /// 淇敼鑰匢d
+        /// </summary>
+        public virtual long? UpdatedUserId { get; set; }
+
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// </summary>
+        [MaxLength(20)]
+        public virtual string UpdatedUserName { get; set; }
+
+        /// <summary>
+        /// 杞垹闄�
+        /// </summary>
+        public virtual bool IsDeleted { get; set; } = false;
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/ISysCacheService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/ISysCacheService.cs
new file mode 100644
index 0000000..6bd5d49
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/ISysCacheService.cs
@@ -0,0 +1,134 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysCacheService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        Task AddCacheKey(string cacheKey);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        Task DelByPatternAsync(string key);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        Task DelCacheKey(string cacheKey);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        bool Exists(string cacheKey);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<List<string>> GetAllCacheKeys();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        Task<T> GetAsync<T>(string cacheKey);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        Task<List<long>> GetDataScope(long userId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="appCode"></param>
+        /// <returns></returns>
+        Task<List<AntDesignTreeNode>> GetMenu(long userId, string appCode);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        Task<List<string>> GetPermission(long userId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        Task RemovePermission(long userId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        Task<string> GetStringAsync(string cacheKey);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        Task RemoveAsync(string key);
+        
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        Task SetAsync(string cacheKey, object value);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="dataScopes"></param>
+        /// <returns></returns>
+        Task SetDataScope(long userId, List<long> dataScopes);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="appCode"></param>
+        /// <param name="menus"></param>
+        /// <returns></returns>
+        Task SetMenu(long userId, string appCode, List<AntDesignTreeNode> menus);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="permissions"></param>
+        /// <returns></returns>
+        Task SetPermission(long userId, List<string> permissions);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        Task SetStringAsync(string cacheKey, string value);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/SysCacheService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/SysCacheService.cs
new file mode 100644
index 0000000..40104cf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/SysCacheService.cs
@@ -0,0 +1,272 @@
+锘縰sing Admin.NET.Core;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.JsonSerialization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Caching.Distributed;
+using System.Text;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 绯荤粺缂撳瓨鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "Cache", Order = 100)]
+    [Route("api")]
+    public class SysCacheService : ISysCacheService, IDynamicApiController, ISingleton
+    {
+        private readonly IDistributedCache _cache;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="cache"></param>
+        public SysCacheService(IDistributedCache cache)
+        {
+            _cache = cache;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏁版嵁鑼冨洿缂撳瓨锛堟満鏋処d闆嗗悎锛�
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<long>> GetDataScope(long userId)
+        {
+            var cacheKey = CommonConst.CACHE_KEY_DATASCOPE + userId;
+            var res = await _cache.GetStringAsync(cacheKey);
+            return string.IsNullOrWhiteSpace(res) ? null : JSON.Deserialize<List<long>>(res);
+        }
+
+        /// <summary>
+        /// 缂撳瓨鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛�
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="dataScopes"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task SetDataScope(long userId, List<long> dataScopes)
+        {
+            var cacheKey = CommonConst.CACHE_KEY_DATASCOPE + userId;
+            await _cache.SetStringAsync(cacheKey, JSON.Serialize(dataScopes));
+
+            await AddCacheKey(cacheKey);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鑿滃崟缂撳瓨
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="appCode"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<AntDesignTreeNode>> GetMenu(long userId, string appCode)
+        {
+            var cacheKey = CommonConst.CACHE_KEY_MENU + $"{userId}-{appCode}";
+            var res = await _cache.GetStringAsync(cacheKey);
+            return string.IsNullOrWhiteSpace(res) ? null : JSON.Deserialize<List<AntDesignTreeNode>>(res);
+        }
+
+        /// <summary>
+        /// 缂撳瓨鑿滃崟
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="appCode"></param>
+        /// <param name="menus"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task SetMenu(long userId, string appCode, List<AntDesignTreeNode> menus)
+        {
+            var cacheKey = CommonConst.CACHE_KEY_MENU + $"{userId}-{appCode}";
+            await _cache.SetStringAsync(cacheKey, JSON.Serialize(menus));
+
+            await AddCacheKey(cacheKey);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏉冮檺缂撳瓨锛堟寜閽級
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<string>> GetPermission(long userId)
+        {
+            var cacheKey = CommonConst.CACHE_KEY_PERMISSION + userId;
+            var res = await _cache.GetStringAsync(cacheKey);
+            return string.IsNullOrWhiteSpace(res) ? null : JSON.Deserialize<List<string>>(res);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏉冮檺缂撳瓨
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task RemovePermission(long userId)
+        {
+            var cacheKey = CommonConst.CACHE_KEY_PERMISSION + userId;
+            await RemoveAsync(cacheKey);
+        }
+
+        /// <summary>
+        /// 缂撳瓨鏉冮檺
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="permissions"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task SetPermission(long userId, List<string> permissions)
+        {
+            var cacheKey = CommonConst.CACHE_KEY_PERMISSION + userId;
+            await _cache.SetStringAsync(cacheKey, JSON.Serialize(permissions));
+
+            await AddCacheKey(cacheKey);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夌紦瀛樺叧閿瓧
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysCache/keyList")]
+        public async Task<List<string>> GetAllCacheKeys()
+        {
+            var res = await _cache.GetStringAsync(CommonConst.CACHE_KEY_ALL);
+            return string.IsNullOrWhiteSpace(res) ? null : JSON.Deserialize<List<string>>(res);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鎸囧畾鍏抽敭瀛楃紦瀛�
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        [HttpGet("sysCache/remove")]
+        public async Task RemoveAsync(string key)
+        {
+            await _cache.RemoveAsync(key);
+
+            await DelCacheKey(key);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏌愮壒寰佸叧閿瓧缂撳瓨
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task DelByPatternAsync(string key)
+        {
+            var allkeys = await GetAllCacheKeys();
+            var delAllkeys = allkeys.Where(u => u.Contains(key)).ToList();
+
+            // 鍒犻櫎鐩稿簲鐨勭紦瀛�
+            delAllkeys.ForEach(u =>
+            {
+                _cache.Remove(u);
+            });
+
+            // 鏇存柊鎵�鏈夌紦瀛橀敭
+            allkeys = allkeys.Where(u => !u.Contains(key)).ToList();
+            await _cache.SetStringAsync(CommonConst.CACHE_KEY_ALL, JSON.Serialize(allkeys));
+        }
+
+        /// <summary>
+        /// 璁剧疆缂撳瓨
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task SetAsync(string cacheKey, object value)
+        {
+            await _cache.SetAsync(cacheKey, Encoding.UTF8.GetBytes(JSON.Serialize(value)));
+
+            await AddCacheKey(cacheKey);
+        }
+
+        /// <summary>
+        /// 璁剧疆缂撳瓨
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task SetStringAsync(string cacheKey, string value)
+        {
+            await _cache.SetStringAsync(cacheKey, value);
+
+            await AddCacheKey(cacheKey);
+        }
+
+        /// <summary>
+        /// 鑾峰彇缂撳瓨
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        [HttpGet("sysCache/detail")]
+        public async Task<string> GetStringAsync(string cacheKey)
+        {
+            return await _cache.GetStringAsync(cacheKey);
+        }
+
+        /// <summary>
+        /// 鑾峰彇缂撳瓨
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<T> GetAsync<T>(string cacheKey)
+        {
+            var res = await _cache.GetAsync(cacheKey);
+            return res == null ? default : JSON.Deserialize<T>(Encoding.UTF8.GetString(res));
+        }
+
+        /// <summary>
+        /// 妫�鏌ョ粰瀹� key 鏄惁瀛樺湪
+        /// </summary>
+        /// <param name="cacheKey">閿�</param>
+        /// <returns></returns>
+        [NonAction]
+        public bool Exists(string cacheKey)
+        {
+            var res = _cache.GetStringAsync(CommonConst.CACHE_KEY_ALL).GetAwaiter().GetResult();
+            var allkeys = string.IsNullOrWhiteSpace(res) ? new HashSet<string>() : JSON.Deserialize<HashSet<string>>(res);
+            return allkeys.Any(_ => _ == cacheKey);
+        }
+
+        /// <summary>
+        /// 澧炲姞缂撳瓨Key
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task AddCacheKey(string cacheKey)
+        {
+            var res = await _cache.GetStringAsync(CommonConst.CACHE_KEY_ALL);
+            var allkeys = string.IsNullOrWhiteSpace(res) ? new HashSet<string>() : JSON.Deserialize<HashSet<string>>(res);
+            if (!allkeys.Any(m => m == cacheKey))
+            {
+                allkeys.Add(cacheKey);
+                await _cache.SetStringAsync(CommonConst.CACHE_KEY_ALL, JSON.Serialize(allkeys));
+            }
+        }
+
+        /// <summary>
+        ///
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task DelCacheKey(string cacheKey)
+        {
+            var res = await _cache.GetStringAsync(CommonConst.CACHE_KEY_ALL);
+            var allkeys = string.IsNullOrWhiteSpace(res) ? new HashSet<string>() : JSON.Deserialize<HashSet<string>>(res);
+            if (allkeys.Any(m => m == cacheKey))
+            {
+                allkeys.Remove(cacheKey);
+                await _cache.SetStringAsync(CommonConst.CACHE_KEY_ALL, JSON.Serialize(allkeys));
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptcha.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptcha.cs
new file mode 100644
index 0000000..1be52e5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptcha.cs
@@ -0,0 +1,232 @@
+锘縰sing Admin.NET.Core;
+using Furion;
+using Furion.DependencyInjection;
+using Furion.JsonSerialization;
+using Microsoft.Extensions.Caching.Memory;
+using SixLabors.Fonts;
+using SixLabors.ImageSharp;
+using SixLabors.ImageSharp.Drawing.Processing;
+using SixLabors.ImageSharp.Processing;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐐归�夐獙璇佺爜
+    /// </summary>
+    public class ClickWordCaptcha : IClickWordCaptcha, ITransient
+    {
+        private readonly IMemoryCache _memoryCache;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="memoryCache"></param>
+        public ClickWordCaptcha(IMemoryCache memoryCache)
+        {
+            _memoryCache = memoryCache;
+        }
+
+        /// <summary>
+        /// 鐢熸垚楠岃瘉鐮佸浘鐗�
+        /// </summary>
+        /// <param name="code">鏂囧瓧</param>
+        /// <param name="width">鍥剧墖瀹藉害</param>
+        /// <param name="height">鍥剧墖楂樺害</param>
+        /// <param name="point">楠岃瘉鐐规暟閲忥紝涓嶈兘瓒呰繃鏂囧瓧鐨勯暱搴�</param>
+        /// <returns></returns>
+        public async Task<ClickWordCaptchaResult> CreateCaptchaImage(string code, int width, int height, int point = 3)
+        {
+            var rtnResult = new ClickWordCaptchaResult();
+
+            Random random = new();
+            //鑳屾櫙
+            string bgImagesDir = Path.Combine(App.WebHostEnvironment.WebRootPath, "Captcha/Image");//鑳屾櫙鍥剧墖璺緞
+            string[] bgImagesFiles = Directory.GetFiles(bgImagesDir);//鑳屾櫙鍥剧墖鍒楄〃
+            int imgIndex = random.Next(1, bgImagesFiles.Length);//闅忔満涓�涓儗鏅浘鐗�
+            string randomImgFilePath = bgImagesFiles[imgIndex];//寰楀埌鑳屾櫙鍥剧墖璺緞
+
+            // 瀛椾綋鏉ヨ嚜锛歨ttps://www.zcool.com.cn/special/zcoolfonts/
+            string fontsDir = Path.Combine(App.WebHostEnvironment.WebRootPath, "Captcha/Font");//瀛椾綋璺緞
+                                                                                               //鎵�鏈夊瓧浣擄紝濡傛灉鏈夊涓瓧浣撴枃浠剁殑璇�
+            string[] fontFiles = new DirectoryInfo(fontsDir)?.GetFiles()
+                ?.Where(m => m.Extension.ToLower() == ".ttf")
+                ?.Select(m => m.FullName).ToArray();
+
+            using Image image = await Image.LoadAsync(randomImgFilePath);
+
+            if (image.Width != width || image.Height != height)
+            {
+                image.Mutate(x => x.Resize(width, height));
+            }
+            //瀛椾綋
+            var fontPath = fontFiles[random.Next(fontFiles.Length)];
+            var collection = new FontCollection();
+            var fontFamily = collection.Add(fontPath);
+            //collection.Install("path/to/emojiFont.ttf");//鍙互瀹夎澶氫釜
+            //collection.InstallCollection("path/to/font.ttc");
+            //
+            List<string> words = new();
+            //寰幆鎵�鏈夋枃瀛�
+            for (int i = 0; i < code.Length; i++)
+            {
+                //鏂囧瓧
+                var word = code[i].ToString();
+                var font = fontFamily.CreateFont(random.Next(14, 30));  //瀛椾綋
+                //棰滆壊
+                Color[] colorList = { Color.Black, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };
+                var colorIndex = random.Next(colorList.Length);
+                var color = colorList[colorIndex];
+                //鍧愭爣
+                int _x = random.Next(30, width - 30);//闅忔満涓�涓搴�
+                int _y = random.Next(30, height - 30);//闅忔満涓�涓珮搴�
+
+                //鍐欏叆鏂囧瓧
+                image.Mutate(x => x.DrawText(
+                     word,   //鏂囧瓧鍐呭
+                     font,                          //瀛椾綋
+                     color,                         //棰滆壊
+                     new PointF(_x, _y))   //鍧愭爣
+                );
+
+                if (rtnResult.RepData.Point.Count < point)
+                {
+                    //璁板綍鍧愭爣
+                    rtnResult.RepData.Point.Add(new PointPosModel() { X = _x, Y = _y });
+                    //璁板綍鏂囧瓧
+                    words.Add(word);
+                }
+            }
+
+            //璁板綍鏂囧瓧
+            rtnResult.RepData.WordList = words;
+
+            MemoryStream ms = new MemoryStream();
+            await image.SaveAsJpegAsync(ms);//浣嶅浘淇濆瓨鎴恓peg
+                                            //杞垚base64
+            rtnResult.RepData.OriginalImageBase64 = Convert.ToBase64String(ms.GetBuffer());
+            ms.Dispose();
+            rtnResult.RepData.Token = YitIdHelper.NextId().ToString();
+
+            // 缂撳瓨楠岃瘉鐮佹纭綅缃泦鍚�
+            var cacheOptions = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(30));
+            _memoryCache.Set(CommonConst.CACHE_KEY_CODE + rtnResult.RepData.Token, rtnResult.RepData.Point, cacheOptions);
+
+            rtnResult.RepData.Point = null; // 娓呯┖浣嶇疆淇℃伅
+            return rtnResult;
+        }
+
+        /// <summary>
+        /// 闅忔満缁樺埗瀛楃涓�
+        /// </summary>
+        /// <param name="number"></param>
+        /// <returns></returns>
+        public string RandomCode(int number)
+        {
+            char[] str_char_arrary = { '璧�', '閽�', '瀛�', '鏉�', '鍛�', '鍚�', '閮�', '鐜�', '鍐�', '闄�', '瑜�', '鍗�', '钂�', '娌�', '闊�', '鏉�',
+                '鏈�', '绉�', '灏�', '璁�', '浣�', '鍚�', '鏂�', '寮�', '瀛�', '鏇�', '涓�', '鍗�', '閲�', '榄�', '闄�', '濮�', '鎴�', '璋�', '閭�', '鍠�', '鏌�', '姘�',
+                '绐�', '绔�', '浜�', '鑻�', '娼�', '钁�', '濂�', '鑼�', '褰�', '閮�', '椴�', '闊�', '鏄�', '椹�', '鑻�', '鍑�', '鑺�', '鏂�', '浠�', '琚�', '鏌�', '椴�',
+                '鍙�', '鍞�', '璐�', '钖�', '闆�', '璐�', '鍊�', '姹�', '婊�', '娈�', '缃�', '姣�', '閮�', '瀹�', '甯�', '鍌�', '鍗�', '榻�', '鍏�', '椤�', '瀛�', '骞�',
+                '榛�', '绌�', '钀�', '灏�', '濮�', '閭�', '婀�', '姹�', '绁�', '姣�', '鐙�', '绫�', '浼�', '鎴�', '鎴�', '璋�', '瀹�', '鑼�', '搴�', '鐔�', '绾�', '鑸�',
+                '灞�', '椤�', '绁�', '钁�', '姊�', '鏉�', '闃�', '钃�', '闂�', '瀛�', '璐�', '璺�', '濞�', '姹�', '绔�', '棰�', '閮�', '姊�', '鐩�', '鏋�', '閽�', '寰�',
+                '閭�', '楠�', '楂�', '澶�', '钄�', '鐢�', '妯�', '鑳�', '鍑�', '闇�', '铏�', '涓�', '鏀�', '鏌�', '绠�', '鍗�', '鑾�', '鏌�', '鎴�', '瑁�', '缂�', '瑙�',
+                '搴�', '瀹�', '涓�', '瀹�', '閭�', '鍗�', '鏉�', '娲�', '鍖�', '璇�', '宸�', '鐭�', '宕�', '鍚�', '榫�', '绋�', '宓�', '閭�', '瑁�', '闄�', '鑽�', '缈�',
+                '鑽�', '浜�', '鎯�', '鐢�', '鏇�', '灏�', '鍌�', '浠�', '浼�', '瀹�', '浠�', '鐢�', '姝�', '绗�', '鍒�', '鏅�', '瑭�', '榫�', '鍙�', '骞�', '鍙�', '榛�',
+                '婧�', '鍗�', '鎬�', '钂�', '閭�', '浠�', '绱�', '璧�', '鍗�', '灞�', '姹�', '涔�', '鑳�', '闂�', '鑾�', '鍏�', '缈�', '璋�', '璐�', '鍔�', '閫�', '濮�',
+                '鐢�', '鎵�', '鍫�', '鍐�', '瀹�', '闆�', '妗�', '瀵�', '閫�', '鐕�', '娴�', '灏�', '鍐�', '娓�', '鍒�', '搴�', '鏅�', '鏌�', '鐬�', '闃�', '杩�', '涔�',
+                '瀹�', '鍚�', '鍙�', '鏄�', '寤�', '搴�', '缁�', '姝�', '閮�', '鑰�', '婊�', '寮�', '鍖�', '鍥�', '鏂�', '瀵�', '骞�', '绂�', '闃�', '涓�', '娆�', '鍒�',
+                '甯�', '宸�', '鑱�', '鍏�', '鑽�',
+                '浼�', '鍒�', '鍕�', '姣�', '淇�', '宄�', '寮�', '鍐�', '骞�', '淇�', '涓�', '鏂�', '杈�', '鍔�', '鏄�', '姘�', '鍋�', '涓�', '骞�', '蹇�', '涔�', '鍏�',
+                '鑹�', '娴�', '灞�', '浠�', '娉�', '瀹�', '璐�', '绂�', '鐢�', '榫�', '鍏�', '鍏�', '鍥�', '鑳�', '瀛�', '绁�', '鎵�', '鍙�', '姝�', '鏂�', '鍒�', '娓�',
+                '椋�', '褰�', '瀵�', '椤�', '淇�', '瀛�', '鏉�', '娑�', '鏄�', '鎴�', '搴�', '鏄�', '鍏�', '澶�', '杈�', '瀹�', '宀�', '涓�', '鑼�', '杩�', '鏋�', '鏈�',
+                '鍧�', '鍜�', '褰�', '鍗�', '璇�', '鍏�', '鏁�', '闇�', '鎸�', '澹�', '浼�', '鎬�', '缇�', '璞�', '蹇�', '閭�', '鎵�', '涔�', '缁�', '鍔�', '鏉�', '鍠�',
+                '鍘�', '搴�', '纾�', '姘�', '鍙�', '瑁�', '娌�', '鍝�', '姹�', '瓒�', '娴�', '浜�', '鏀�', '璋�', '浜�', '濂�', '鍥�', '涔�', '杞�', '缈�', '鏈�', '浼�',
+                '瀹�', '瑷�', '鑻�', '楦�', '鏈�', '鏂�', '姊�', '鏍�', '缁�', '鍚�', '鍏�', '浼�', '缈�', '鏃�', '楣�', '娉�', '鏅�', '杈�', '澹�', '浠�', '寤�', '瀹�',
+                '鑷�', '鏍�', '鐐�', '寰�', '琛�', '鏃�', '娉�', '鐩�', '闆�', '鐞�', '閽�', '鍐�', '绛�', '鑵�', '妤�', '姒�', '椋�', '鑸�', '寮�', '绉�', '濞�', '鑻�',
+                '鍗�', '鎱�', '宸�', '缇�', '濞�', '闈�', '娣�', '鎯�', '鐝�', '缈�', '闆�', '鑺�', '鐜�', '钀�', '绾�', '濞�', '鐜�', '鑺�', '鑺�', '鐕�', '褰�', '鏄�',
+                '鑿�', '鍏�', '鍑�', '娲�', '姊�', '鐞�', '绱�', '浜�', '鑾�', '鐪�', '鐜�', '闆�', '鑽�', '鐖�', '濡�', '闇�', '棣�', '鏈�', '鑾�', '濯�', '鑹�', '鐟�',
+                '鍑�', '浣�', '鍢�', '鐞�', '鍕�', '鐝�', '璐�', '鑾�', '妗�', '濞�', '鍙�', '鐠�', '鐠�', '濞�', '鐞�', '鏅�', '濡�', '鑼�', '绉�', '鐝�', '鑾�', '閿�',
+                '榛�', '闈�', '鍊�', '濠�', '濮�', '濠�', '濞�', '鐟�', '棰�', '闇�', '鐟�', '鎬�', '濠�', '闆�', '钃�', '绾�', '浠�', '鑽�', '涓�', '钃�', '鐪�', '鍚�',
+                '鐞�', '钑�', '钖�', '鑿�', '姊�', '宀�', '鑻�', '濠�', '棣�', '鐟�', '鐞�', '闊�', '铻�', '鍥�', '鑹�', '鍜�', '鍗�', '鑱�', '婢�', '绾�', '姣�', '鎮�',
+                '鏄�', '鍐�', '鐖�', '鐞�', '鑼�', '缇�', '甯�', '娆�', '椋�', '鑲�', '婊�', '棣�', '绛�', '鏌�', '绔�', '闇�', '鍑�', '鏅�', '娆�', '闇�', '鏋�', '鑺�',
+                '鑿�', '瀵�', '浼�', '浜�', '瀹�', '鍙�', '濮�', '鑸�', '褰�', '鑽�', '鏋�', '涓�', '闃�', '濡�', '瀹�', '璐�', '鍒�', '绋�', '姊�', '缃�', '鎭�', '楦�',
+                '妗�', '楠�', '鍓�', '濞�', '绾�', '瀹�', '鑻�', '鐏�', '鐜�', '濯�', '鐞�', '鏅�', '瀹�', '鐫�', '鐑�', '鍫�', '鍞�', '濞�', '闊�', '闆�', '鑻�', '钀�',
+                '闃�', '褰�', '瀹�', '闆�', '娲�', '蹇�', '瀹�', '鏇�', '绱�', '閫�', '璐�', '铦�', '鑿�', '缁�', '钃�', '鍎�', '缈�', '鐑�' };
+
+            var rand = new Random();
+            var hs = new HashSet<char>();
+            var randomBool = true;
+            while (randomBool)
+            {
+                if (hs.Count == number)
+                    break;
+                var rand_number = rand.Next(str_char_arrary.Length);
+                hs.Add(str_char_arrary[rand_number]);
+            }
+            return string.Join("", hs);
+        }
+
+        /// <summary>
+        /// 楠岃瘉鐮侀獙璇�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public Task<ClickWordCaptchaResult> CheckCode(ClickWordCaptchaInput input)
+        {
+            var res = new ClickWordCaptchaResult();
+
+            var rightVCodePos = _memoryCache.Get(CommonConst.CACHE_KEY_CODE + input.Token) as List<PointPosModel>;
+            if (rightVCodePos == null)
+            {
+                res.RepCode = "6110";
+                res.RepMsg = "楠岃瘉鐮佸凡澶辨晥锛岃閲嶆柊鑾峰彇";
+                return Task.FromResult(res);
+            }
+
+            var userVCodePos = JSON.Deserialize<List<PointPosModel>>(input.PointJson);
+            if (userVCodePos == null || userVCodePos.Count < rightVCodePos.Count)
+            {
+                res.RepCode = "6111";
+                res.RepMsg = "楠岃瘉鐮佹棤鏁�";
+                return Task.FromResult(res);
+            }
+
+            int allowOffset = 25; // 鍏佽鐨勫亸绉婚噺(鐐硅Е瀹归敊)
+            for (int i = 0; i < userVCodePos.Count; i++)
+            {
+                var xOffset = userVCodePos[i].X - rightVCodePos[i].X;
+                var yOffset = userVCodePos[i].Y - rightVCodePos[i].Y;
+                xOffset = Math.Abs(xOffset); // x杞村亸绉婚噺
+                yOffset = Math.Abs(yOffset); // y杞村亸绉婚噺
+                                             // 鍙鏈変竴涓偣鐨勪换鎰忎竴涓酱鍋忕Щ閲忓ぇ浜巃llowOffset锛屽垯楠岃瘉涓嶉�氳繃
+                if (xOffset > allowOffset || yOffset > allowOffset)
+                {
+                    res.RepCode = "6112";
+                    res.RepMsg = "楠岃瘉鐮侀敊璇�";
+                    return Task.FromResult(res);
+                }
+            }
+
+            _memoryCache.Remove(CommonConst.CACHE_KEY_CODE + input.Token);
+            res.RepCode = "0000";
+            res.RepMsg = "楠岃瘉鎴愬姛";
+            return Task.FromResult(res);
+        }
+    }
+
+    /// <summary>
+    /// 璁板綍姝g‘浣嶇疆
+    /// </summary>
+    public class PointPosModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public int X { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int Y { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaInput.cs
new file mode 100644
index 0000000..3c09053
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaInput.cs
@@ -0,0 +1,27 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐐瑰嚮楠岃瘉鐮佽緭鍏ュ弬鏁�
+    /// </summary>
+    public class ClickWordCaptchaInput
+    {
+        /// <summary>
+        /// 楠岃瘉鐮佺被鍨�
+        /// </summary>
+        [Required(ErrorMessage = "楠岃瘉鐮佺被鍨�")]
+        public string CaptchaType { get; set; }
+
+        /// <summary>
+        /// 鍧愭爣鐐归泦鍚�
+        /// </summary>
+        [Required(ErrorMessage = "鍧愭爣鐐归泦鍚堜笉鑳戒负绌�")]
+        public string PointJson { get; set; }
+
+        /// <summary>
+        /// Token
+        /// </summary>
+        public string Token { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaResult.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaResult.cs
new file mode 100644
index 0000000..03b9320
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaResult.cs
@@ -0,0 +1,119 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 楠岃瘉鐮佽緭鍑哄弬鏁�
+    /// </summary>
+    public class ClickWordCaptchaResult
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string RepCode { get; set; } = "0000";
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string RepMsg { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public RepData RepData { get; set; } = new RepData();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public bool Error { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public bool Success { get; set; } = true;
+    }
+    
+    /// <summary>
+    /// 
+    /// </summary>
+    public class RepData
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string CaptchaId { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string CaptchaType { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string CaptchaOriginalPath { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string CaptchaFontType { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string CaptchaFontSize { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string SecretKey { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string OriginalImageBase64 { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<PointPosModel> Point { get; set; } = new List<PointPosModel>();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string JigsawImageBase64 { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<string> WordList { get; set; } = new List<string>();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string PointList { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string PointJson { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Token { get; set; }
+        
+        /// <summary>
+        /// 
+        /// </summary>
+        public bool Result { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string CaptchaVerification { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/IClickWordCaptcha.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/IClickWordCaptcha.cs
new file mode 100644
index 0000000..d6e36f9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/IClickWordCaptcha.cs
@@ -0,0 +1,32 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface IClickWordCaptcha
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<ClickWordCaptchaResult> CheckCode(ClickWordCaptchaInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="code"></param>
+        /// <param name="width"></param>
+        /// <param name="height"></param>
+        /// <param name="point"></param>
+        /// <returns></returns>
+        Task<ClickWordCaptchaResult> CreateCaptchaImage(string code, int width, int height, int point = 3);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="number"></param>
+        /// <returns></returns>
+        string RandomCode(int number);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptcha.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptcha.cs
new file mode 100644
index 0000000..5596437
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptcha.cs
@@ -0,0 +1,136 @@
+锘縰sing Admin.NET.Core;
+using Furion.DependencyInjection;
+using Microsoft.Extensions.Caching.Memory;
+using System.Drawing;
+using System.Drawing.Imaging;
+using System.Text;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 甯歌楠岃瘉鐮�
+    /// </summary>
+    public class GeneralCaptcha : IGeneralCaptcha, ITransient
+    {
+        private readonly IMemoryCache _memoryCache;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="memoryCache"></param>
+        public GeneralCaptcha(IMemoryCache memoryCache)
+        {
+            _memoryCache = memoryCache;
+        }
+
+        /// <summary>
+        /// 鐢熸垚楠岃瘉鐮佸浘鐗�
+        /// </summary>
+        /// <param name="length"></param>
+        /// <returns></returns>
+        public ClickWordCaptchaResult CreateCaptchaImage(int length = 4)
+        {
+            var rtnResult = new ClickWordCaptchaResult();
+
+            var code = GenerateRandom(length); // 闅忔満瀛楃涓查泦鍚�
+            rtnResult.RepData.OriginalImageBase64 = Convert.ToBase64String(Draw(code)); //"data:image/jpg;base64," +
+            rtnResult.RepData.Token = YitIdHelper.NextId().ToString();
+
+            // 缂撳瓨楠岃瘉鐮佹纭綅缃泦鍚�
+            var cacheOptions = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(30));
+            _memoryCache.Set(CommonConst.CACHE_KEY_CODE + rtnResult.RepData.Token, code, cacheOptions);
+
+            rtnResult.RepData.Point = null; // 娓呯┖浣嶇疆淇℃伅
+            return rtnResult;
+        }
+
+        private static byte[] Draw(string code)
+        {
+            int codeW = 110;
+            int codeH = 36;
+            int fontSize = 22;
+
+            // 棰滆壊鍒楄〃锛岀敤浜庨獙璇佺爜銆佸櫔绾裤�佸櫔鐐�
+            Color[] color = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue };
+            // 瀛椾綋鍒楄〃锛岀敤浜庨獙璇佺爜
+            string[] fonts = new[] { "Times New Roman", "Verdana", "Arial", "Gungsuh", "Impact" };
+
+            using (var bmp = new Bitmap(codeW, codeH))
+            using (var g = Graphics.FromImage(bmp))
+            using (var ms = new MemoryStream())
+            {
+                g.Clear(Color.White);
+                var rnd = new Random();
+                // 鐢诲櫔绾�
+                for (int i = 0; i < 1; i++)
+                {
+                    int x1 = rnd.Next(codeW);
+                    int y1 = rnd.Next(codeH);
+                    int x2 = rnd.Next(codeW);
+                    int y2 = rnd.Next(codeH);
+                    var clr = color[rnd.Next(color.Length)];
+                    g.DrawLine(new Pen(clr), x1, y1, x2, y2);
+                }
+
+                // 鐢婚獙璇佺爜瀛楃涓�
+                string fnt;
+                Font ft;
+                for (int i = 0; i < code.Length; i++)
+                {
+                    fnt = fonts[rnd.Next(fonts.Length)];
+                    ft = new Font(fnt, fontSize);
+                    var clr = color[rnd.Next(color.Length)];
+                    g.DrawString(code[i].ToString(), ft, new SolidBrush(clr), (float)i * 24 + 2, (float)0);
+                }
+
+                // 灏嗛獙璇佺爜鍥剧墖鍐欏叆鍐呭瓨娴�
+                bmp.Save(ms, ImageFormat.Png);
+                return ms.ToArray();
+            }
+        }
+
+        private static string GenerateRandom(int length)
+        {
+            var chars = new StringBuilder();
+            // 楠岃瘉鐮佺殑瀛楃闆嗭紝鍘绘帀浜嗕竴浜涘鏄撴贩娣嗙殑瀛楃
+            char[] character = { '2', '3', '4', '5', '6', '8', '9', 'a', 'b', 'd', 'e', 'f', 'h', 'k', 'm', 'n', 'r', 'x', 'y', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'W', 'X', 'Y' };
+            Random rnd = new();
+            // 鐢熸垚楠岃瘉鐮佸瓧绗︿覆
+            for (int i = 0; i < length; i++)
+            {
+                chars.Append(character[rnd.Next(character.Length)]);
+            }
+            return chars.ToString();
+        }
+
+        /// <summary>
+        /// 楠岃瘉鐮侀獙璇�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public ClickWordCaptchaResult CheckCode(GeneralCaptchaInput input)
+        {
+            var res = new ClickWordCaptchaResult();
+
+            var code = _memoryCache.Get(CommonConst.CACHE_KEY_CODE + input.Token);
+            if (code == null)
+            {
+                res.RepCode = "6110";
+                res.RepMsg = "楠岃瘉鐮佸凡澶辨晥锛岃閲嶆柊鑾峰彇";
+                return res;
+            }
+            if (string.Compare(input.CaptchaCode, (string)code, true) != 0)
+            {
+                res.RepCode = "6112";
+                res.RepMsg = "楠岃瘉鐮侀敊璇�";
+                return res;
+            }
+
+            _memoryCache.Remove(CommonConst.CACHE_KEY_CODE + input.Token);
+            res.RepCode = "0000";
+            res.RepMsg = "楠岃瘉鎴愬姛";
+            return res;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptchaInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptchaInput.cs
new file mode 100644
index 0000000..e490075
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptchaInput.cs
@@ -0,0 +1,27 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 甯歌楠岃瘉鐮佽緭鍏�
+    /// </summary>
+    public class GeneralCaptchaInput
+    {
+        /// <summary>
+        /// 楠岃瘉鐮佺被鍨�
+        /// </summary>
+        [Required(ErrorMessage = "楠岃瘉鐮佺被鍨�")]
+        public string CaptchaType { get; set; }
+
+        /// <summary>
+        /// 楠岃瘉鐮佸瓧绗�
+        /// </summary>
+        [Required(ErrorMessage = "楠岃瘉鐮佸瓧绗︿笉鑳戒负绌�")]
+        public string CaptchaCode { get; set; }
+
+        /// <summary>
+        /// Token
+        /// </summary>
+        public string Token { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/IGeneralCaptcha.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/IGeneralCaptcha.cs
new file mode 100644
index 0000000..f063525
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/IGeneralCaptcha.cs
@@ -0,0 +1,22 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface IGeneralCaptcha
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        ClickWordCaptchaResult CheckCode(GeneralCaptchaInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="length"></param>
+        /// <returns></returns>
+        ClickWordCaptchaResult CreateCaptchaImage(int length = 4);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenConfigService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenConfigService.cs
new file mode 100644
index 0000000..3b5aef6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenConfigService.cs
@@ -0,0 +1,197 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.Extras.Admin.NET.Entity;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Http.Metadata;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 浠g爜鐢熸垚璇︾粏閰嶇疆鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "CodeGenConfig", Order = 100)]
+    [Route("api")]
+    public class SysCodeGenerateConfigService : ICodeGenConfigService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysLowCodeDataBase> _sysLowCodeRep; // 浠g爜鐢熸垚鍣ㄤ粨鍌�
+        private readonly IRepository<SysCodeGen> _sysCodeGenRep; // 浠g爜鐢熸垚鍣ㄤ粨鍌�
+        private readonly IRepository<SysCodeGenConfig> _sysCodeGenConfigRep; // 浠g爜鐢熸垚璇︾粏閰嶇疆浠撳偍
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysCodeGenConfigRep"></param>
+        /// <param name="sysCodeGenRep"></param>
+        /// <param name="sysLowCodeRep"></param>
+        public SysCodeGenerateConfigService(IRepository<SysCodeGenConfig> sysCodeGenConfigRep, IRepository<SysCodeGen> sysCodeGenRep
+            , IRepository<SysLowCodeDataBase> sysLowCodeRep
+            )
+        {
+            _sysLowCodeRep = sysLowCodeRep;
+            _sysCodeGenConfigRep = sysCodeGenConfigRep;
+            _sysCodeGenRep = sysCodeGenRep;
+        }
+
+        /// <summary>
+        /// 浠g爜鐢熸垚璇︾粏閰嶇疆鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysCodeGenerateConfig/list")]
+        public async Task<List<CodeGenConfig>> List([FromQuery] CodeGenConfig input)
+        {
+            var result = await _sysCodeGenConfigRep.DetachedEntities
+                                             .Where(u => u.CodeGenId == input.CodeGenId && u.WhetherCommon != YesOrNot.Y.ToString())
+                                             .ProjectToType<CodeGenConfig>()
+                                             .Distinct()
+                                             .ToListAsync();
+
+            var codeGen = await _sysCodeGenRep.FirstOrDefaultAsync(x => x.Id == input.CodeGenId);
+            var codeGenOutput = codeGen.Adapt<CodeGenOutput>();
+            result.ForEach(x => x.CodeGen = codeGenOutput);
+            return result;
+        }
+
+        /// <summary>
+        /// 鏇存柊
+        /// </summary>
+        /// <param name="inputList"></param>
+        /// <returns></returns>
+        [HttpPost("sysCodeGenerateConfig/edit")]
+        public async Task Update(List<CodeGenConfig> inputList)
+        {
+            if (inputList == null || inputList.Count < 1) return;
+            var list = inputList.Adapt<List<SysCodeGenConfig>>();
+
+            CodeGenHelper.ValidateCodeGenConfig(list);
+
+            await _sysCodeGenConfigRep.UpdateAsync(list);
+        }
+
+        /// <summary>
+        /// 璇︽儏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("路/detail")]
+        public async Task<SysCodeGenConfig> Detail([FromQuery] CodeGenConfig input)
+        {
+            return await _sysCodeGenConfigRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+        }
+
+        /// <summary>
+        /// 鎵归噺澧炲姞
+        /// </summary>
+        /// <param name="tableColumnOuputList"></param>
+        /// <param name="codeGenerate"></param>
+        [NonAction]
+        public async Task DelAndAddList(List<TableColumnOuput> tableColumnOuputList, SysCodeGen codeGenerate)
+        {
+            if (tableColumnOuputList == null) return;
+            var list = new List<SysCodeGenConfig>();
+
+            List<SysLowCodeDataBase> list_LowCode = new List<SysLowCodeDataBase>();
+
+            if (codeGenerate != null && codeGenerate.LowCodeId > 0 && _sysLowCodeRep.Where(x => x.SysLowCodeId == codeGenerate.LowCodeId).Any())
+            {
+                list_LowCode = _sysLowCodeRep.Where(x => x.SysLowCodeId == codeGenerate.LowCodeId).ToList();
+            }
+
+            foreach (var tableColumn in tableColumnOuputList)
+            {
+                var codeGenConfig = new SysCodeGenConfig();
+
+                var YesOrNo = YesOrNot.Y.ToString();
+                if (Convert.ToBoolean(tableColumn.ColumnKey))
+                {
+                    YesOrNo = YesOrNot.N.ToString();
+                }
+
+                if (CodeGenUtil.IsCommonColumn(tableColumn.ColumnName))
+                {
+                    codeGenConfig.WhetherCommon = YesOrNot.Y.ToString();
+                    YesOrNo = YesOrNot.N.ToString();
+                }
+                else
+                {
+                    codeGenConfig.WhetherCommon = YesOrNot.N.ToString();
+                }
+
+                codeGenConfig.CodeGenId = codeGenerate.Id;
+                codeGenConfig.ColumnName = tableColumn.ColumnName;
+                codeGenConfig.ColumnComment = tableColumn.ColumnComment;
+                codeGenConfig.NetType = CodeGenUtil.ConvertDataType(tableColumn.DataType);
+                codeGenConfig.DtoNetType = list_LowCode.Where(x => x.FieldName == tableColumn.ColumnName).Select(x => x.DtoTypeName).FirstOrDefault();
+                if (string.IsNullOrEmpty(codeGenConfig.DtoNetType)) codeGenConfig.DtoNetType = codeGenConfig.NetType;
+                codeGenConfig.WhetherRetract = YesOrNot.N.ToString();
+
+                codeGenConfig.WhetherRequired = tableColumn.IsNullable ? YesOrNot.N.ToString() : YesOrNot.Y.ToString();
+                codeGenConfig.QueryWhether = YesOrNo;
+                //ly-0419 鐢熸垚鏂板缓 缂栬緫椤甸潰 鍒涘缓浜� 淇敼浜哄垱寤烘椂闂� 淇敼鏃堕棿 涔熻嚜鍔ㄧ敓鎴愶紝闇�瑕佸幓鎺�
+                if (codeGenConfig.ColumnName == "CreatedTime" || codeGenConfig.ColumnName == "UpdatedTime"
+                    || codeGenConfig.ColumnName == "CreatedUserName" || codeGenConfig.ColumnName == "UpdatedUserName")
+                {
+                    codeGenConfig.WhetherAddUpdate = YesOrNot.N.ToString();
+                }
+                else
+                {
+                    codeGenConfig.WhetherAddUpdate = YesOrNo;
+                }
+                if (codeGenConfig.WhetherRequired == YesOrNot.Y.ToString())
+                {//蹇呭~瀛楁蹇呴』閰嶇疆澧炴敼銆�
+                    codeGenConfig.WhetherAddUpdate = YesOrNot.Y.ToString();
+                }
+
+                codeGenConfig.WhetherTable = YesOrNo;
+                codeGenConfig.WhetherOrderBy = YesOrNo;
+                //鏄惁鑱斿悎涓婚敭 update by liuwq 20240418 
+                codeGenConfig.WhetherRequired = YesOrNot.N.ToString();
+                codeGenConfig.ColumnKey = tableColumn.ColumnKey;
+
+                codeGenConfig.DataType = tableColumn.DataType;
+                codeGenConfig.EffectType = CodeGenUtil.DataTypeToEff(codeGenConfig.NetType);
+                codeGenConfig.QueryType = QueryTypeConst.绛変簬; // QueryTypeEnum.eq.ToString();
+                if (codeGenConfig.DtoNetType.ToLower() == "datetime".ToLower() || codeGenConfig.DtoNetType.ToLower() == "DateTimeOffset".ToLower())
+                {
+                    codeGenConfig.QueryType = QueryTypeConst.浠嬩簬;
+                }
+                codeGenConfig.ShowTitleMinWidth = tableColumn.ShowTitleMinWidth;
+                list.Add(codeGenConfig);
+            }
+
+            _sysCodeGenConfigRep.Context.DeleteRange<SysCodeGenConfig>(x => x.CodeGenId == codeGenerate.Id);
+
+            await _sysCodeGenConfigRep.InsertAsync(list);
+        }
+
+        /// <summary>
+        /// 澧炲姞
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task Add(CodeGenConfig input)
+        {
+            var codeGenConfig = input.Adapt<SysCodeGenConfig>();
+            await codeGenConfig.InsertAsync();
+        }
+
+        /// <summary>
+        /// 鍒犻櫎
+        /// </summary>
+        /// <param name="codeGenId"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task Delete(long codeGenId)
+        {
+            var codeGenConfigList = await _sysCodeGenConfigRep.Where(u => u.CodeGenId == codeGenId).ToListAsync();
+            await _sysCodeGenConfigRep.DeleteAsync(codeGenConfigList);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenService.cs
new file mode 100644
index 0000000..f1aa40d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenService.cs
@@ -0,0 +1,1167 @@
+using Admin.NET.Core;
+using Admin.NET.Core.Util.LowCode.Front.Code;
+using Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.Extras.Admin.NET.Entity;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Code;
+using Furion.FriendlyException;
+using Furion.ViewEngine;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Newtonsoft.Json;
+using OfficeOpenXml.Drawing;
+using OfficeOpenXml;
+using System;
+using System.Text;
+using System.Web;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using OfficeOpenXml.Style;
+using System.Net.WebSockets;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using System.Reflection;
+using NetTopologySuite.Noding;
+using System.Xml.Linq;
+using static Npgsql.Replication.PgOutput.Messages.RelationMessage;
+using StackExchange.Profiling.Internal;
+using System.Collections.Generic;
+using System.Data.SqlTypes;
+
+namespace Admin.NET.Application.CodeGen
+{
+    /// <summary>
+    /// 浠g爜鐢熸垚鍣ㄦ湇鍔�
+    /// </summary>
+    [Route("api/[Controller]")]
+    [ApiDescriptionSettings(Name = "CodeGenerate", Order = 100)]
+    public class CodeGenerateService : ICodeGenService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysCodeGen> _sysCodeGenRep; // 浠g爜鐢熸垚鍣ㄤ粨鍌�
+        private readonly IRepository<SysLowCode> _sysLowCodeRep; // 浠g爜鐢熸垚鍣ㄤ粨鍌�
+        private readonly ICodeGenConfigService _codeGenConfigService;
+        private readonly IViewEngine _viewEngine;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly IRepository<SysMenu> _sysMenuRep; // 鑿滃崟琛ㄤ粨鍌�
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysCodeGenRep"></param>
+        /// <param name="sysLowCodeRep"></param>
+        /// <param name="codeGenConfigService"></param>
+        /// <param name="viewEngine"></param>
+        /// <param name="sysMenuRep"></param>
+        public CodeGenerateService(IRepository<SysCodeGen> sysCodeGenRep,
+                              IRepository<SysLowCode> sysLowCodeRep,
+                              ICodeGenConfigService codeGenConfigService,
+                              IViewEngine viewEngine,
+                              IRepository<SysMenu> sysMenuRep,
+            ISysExcelTemplateService sysExcelTemplateService)
+        {
+            _sysCodeGenRep = sysCodeGenRep;
+            _sysLowCodeRep = sysLowCodeRep;
+            _codeGenConfigService = codeGenConfigService;
+            _viewEngine = viewEngine;
+            _sysMenuRep = sysMenuRep;
+            _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<SysCodeGen>> QueryCodeGenPageList([FromQuery] CodeGenPageInput input)
+        {
+            //if(input.)
+            //// 鍔犲叆閰嶇疆琛ㄤ腑
+            //_codeGenConfigService.AddList(GetColumnList(input.Adapt<AddCodeGenInput>()), codeGen);
+
+            var tableName = !string.IsNullOrEmpty(input.TableName?.Trim());
+            var busName = !string.IsNullOrEmpty(input.BusName?.Trim());
+            var codeGens = await _sysCodeGenRep.DetachedEntities
+                                               .Where((tableName, u => EF.Functions.Like(u.TableName, $"%{input.TableName.Trim()}%")))
+                                               .Where((busName, u => EF.Functions.Like(u.BusName, $"%{input.BusName.Trim()}%")))
+                                               .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return codeGens;
+        }
+
+        /// <summary>
+        /// 澧炲姞
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task AddCodeGen(AddCodeGenInput input)
+        {
+            var isExist = await _sysCodeGenRep.DetachedEntities.AnyAsync(u => u.TableName == input.TableName);
+            if (isExist)
+                throw Oops.Oh(ErrorCode.D1400);
+
+            if (input.LowCodeId != null && input.LowCodeId > 0)
+            {
+                isExist = await _sysCodeGenRep.DetachedEntities.AnyAsync(u => u.LowCodeId == input.LowCodeId);
+            }
+
+            if (!isExist)
+            {
+                var codeGen = input.Adapt<SysCodeGen>();
+                var newCodeGen = await codeGen.InsertNowAsync();
+
+                // 鍔犲叆閰嶇疆琛ㄤ腑
+                await _codeGenConfigService.DelAndAddList(GetColumnList(input), newCodeGen.Entity);
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎
+        /// </summary>
+        /// <param name="inputs"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public Task DeleteCodeGen(List<DeleteCodeGenInput> inputs)
+        {
+            if (inputs == null || inputs.Count < 1) return Task.Run(() => { });
+
+            var taskList = new List<Task>();
+
+            inputs.ForEach(u =>
+            {
+                taskList.Add(_sysCodeGenRep.DeleteAsync(u.Id));
+                // 鍒犻櫎閰嶇疆琛ㄤ腑
+                taskList.Add(_codeGenConfigService.Delete(u.Id));
+            });
+            return Task.WhenAll(taskList);//绛夊緟鎵�鏈変换鍔″畬鎴�
+        }
+
+        /// <summary>
+        /// 鏇存柊
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task UpdateCodeGen(UpdateCodeGenInput input)
+        {
+            var isExistObjOther = await _sysCodeGenRep.DetachedEntities.FirstOrDefaultAsync(u => u.TableName == input.TableName && u.Id != input.Id);
+            if (isExistObjOther != null)
+                throw Oops.Oh(ErrorCode.D1400);
+
+            var isExistObj = await _sysCodeGenRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (isExistObj == null)
+                throw Oops.Oh(ErrorCode.D1002);
+
+            //鍒ゆ柇濡傛灉鐢熸垚琛ㄥ彉鍖栦簡锛屽氨闇�瑕侀噸缃厤缃〃 銆怑ditby shaocx,2024-04-13銆�
+            var isChangeTableName = false;
+            if (input.TableName != isExistObj.TableName)
+            {
+                isChangeTableName = true;
+            }
+
+            var codeGen = input.Adapt<SysCodeGen>();
+            await codeGen.UpdateAsync();
+
+
+            if (isChangeTableName)
+            {
+                // 鍔犲叆閰嶇疆琛ㄤ腑
+                await _codeGenConfigService.DelAndAddList(GetColumnList(input.Adapt<AddCodeGenInput>()), codeGen);
+            }
+        }
+
+        /// <summary>
+        /// 鍒锋柊閰嶇疆琛�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("refresh/{id}")]
+        public void Refresh(long id)
+        {
+            var item = _sysCodeGenRep.Where(x => x.Id == id).FirstOrDefault();
+            // 鍔犲叆閰嶇疆琛ㄤ腑
+            _codeGenConfigService.DelAndAddList(GetColumnList(item.Adapt<AddCodeGenInput>()), item);
+        }
+
+        /// <summary>
+        /// 璇︽儏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<SysCodeGen> GetCodeGen([FromQuery] QueryCodeGenInput input)
+        {
+            return await _sysCodeGenRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏁版嵁搴撳簱闆嗗悎
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("DatabaseList")]
+        public List<DatabaseOutput> GetDatabaseList()
+        {
+            var DbContextLocators = AppDomain.CurrentDomain.GetAssemblies()
+                        .SelectMany(
+                            a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IDbContextLocator)))
+                        )
+                        .Select(x => new DatabaseOutput { DatabaseName = x.Name, DatabaseComment = x.FullName })
+                        .ToList();
+
+            return DbContextLocators;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏁版嵁搴撹〃(瀹炰綋)闆嗗悎
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("InformationList")]
+        public List<TableOutput> GetTableList(string dbContextLocatorName)
+        {
+            var dbContext = Db.GetDbContext();//榛樿鏁版嵁搴�
+            if (!string.IsNullOrEmpty(dbContextLocatorName))
+            {
+                var dbContentLocator = AppDomain.CurrentDomain.GetAssemblies()
+                           .SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IDbContextLocator)))).Where(x => x.Name == dbContextLocatorName).FirstOrDefault();
+
+                dbContext = Db.GetDbContext(dbContentLocator);
+            }
+            // 鑾峰彇瀹炰綋绫诲瀷灞炴��
+            //var entityType = dbContext.Model.GetEntityTypes()瑕佹敼鎴� var entityType = dbContext.GetService<IDesignTimeModel>().Model.GetEntityTypes()
+
+            return dbContext.GetService<IDesignTimeModel>().Model.GetEntityTypes().Select(u => new TableOutput
+            {
+                DatabaseName = dbContextLocatorName,
+                TableName = u.GetDefaultTableName(),
+                TableComment = u.GetComment()
+            }).ToList();
+        }
+
+        /// <summary>
+        /// 鏍规嵁琛ㄥ悕鑾峰彇鍒�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("ColumnList/{databaseName}/{tableName}")]
+        public List<TableColumnOuput> GetColumnListByTableName(string databaseName, string tableName)
+        {
+            var dbContext = Db.GetDbContext();//榛樿鏁版嵁搴�
+            if (!string.IsNullOrEmpty(databaseName))
+            {
+                var dbContentLocator = AppDomain.CurrentDomain.GetAssemblies()
+                           .SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IDbContextLocator)))).Where(x => x.Name == databaseName).FirstOrDefault();
+
+                dbContext = Db.GetDbContext(dbContentLocator);
+            }
+            // 鑾峰彇瀹炰綋绫诲瀷灞炴��
+            var entityType = dbContext.GetService<IDesignTimeModel>().Model.GetEntityTypes().FirstOrDefault(u => u.ClrType.Name == tableName);
+            if (entityType == null) return null;
+
+            // 鑾峰彇鍘熷绫诲瀷灞炴��
+            var type = entityType.ClrType;
+            if (type == null) return null;
+
+            // 鎸夊師濮嬬被鍨嬬殑椤哄簭鑾峰彇鎵�鏈夊疄浣撶被鍨嬪睘鎬э紙涓嶅寘鍚鑸睘鎬э紝浼氳繑鍥瀗ull锛�
+            return type.GetProperties().Select(propertyInfo => entityType.FindProperty(propertyInfo.Name))
+                       .Where(p => p != null).Select(p => new TableColumnOuput
+                       {
+                           ColumnName = p.Name,
+                           ColumnKey = p.IsKey().ToString(),
+                           DataType = p.PropertyInfo.PropertyType.ToString(),
+                           NetType = CodeGenUtil.ConvertDataType(p.PropertyInfo.PropertyType.ToString()),
+                           ColumnComment = p.GetComment()
+                       }).ToList();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏁版嵁琛ㄥ垪锛堝疄浣撳睘鎬э級闆嗗悎
+        /// </summary>
+        /// <returns></returns>
+        [NonAction]
+        public List<TableColumnOuput> GetColumnList([FromQuery] AddCodeGenInput input)
+        {
+            var dbContext = Db.GetDbContext();//榛樿鏁版嵁搴�
+            if (!string.IsNullOrEmpty(input.DatabaseName))
+            {
+                var dbContentLocator = AppDomain.CurrentDomain.GetAssemblies()
+                           .SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IDbContextLocator)))).Where(x => x.Name == input.DatabaseName).FirstOrDefault();
+
+                dbContext = Db.GetDbContext(dbContentLocator);
+            }
+            // 鑾峰彇瀹炰綋绫诲瀷灞炴��
+            var entityType = dbContext.GetService<IDesignTimeModel>().Model.GetEntityTypes()
+                .FirstOrDefault(u => u.ClrType.Name == input.TableName);
+            if (entityType == null) return null;
+
+            // 鑾峰彇鍘熷绫诲瀷灞炴��
+            var type = entityType.ClrType;
+            if (type == null) return null;
+
+            // 鎸夊師濮嬬被鍨嬬殑椤哄簭鑾峰彇鎵�鏈夊疄浣撶被鍨嬪睘鎬э紙涓嶅寘鍚鑸睘鎬э紝浼氳繑鍥瀗ull锛�
+            return type.GetProperties().Select(propertyInfo => entityType.FindProperty(propertyInfo.Name))
+                       .Where(p => p != null)
+                       .Select(p => new TableColumnOuput
+                       {
+                           ColumnName = p.Name,
+                           IsNullable = p.IsNullable,
+                           ColumnKey = p.IsKey().ToString(),
+                           DataType = p.PropertyInfo.PropertyType.ToString(),
+                           ColumnComment = p.GetComment()
+                       }).ToList();
+        }
+
+        /// <summary>
+        /// 浠g爜鐢熸垚_鏈湴椤圭洰
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("runLocal")]
+        public async Task<dynamic> RunLocal(SysCodeGen input)
+        {
+            return await CommonRun(input, "200");
+        }
+
+        /// <summary>
+        /// 浠g爜鐢熸垚_鍘嬬缉鍖呮柟寮忎笅杞�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("runDown")]
+        public async Task<IActionResult> RunDown(long id)
+        {
+            SysCodeGen input = await _sysCodeGenRep.Where(x => x.Id == id).FirstOrDefaultAsync();
+            var ret = await CommonRun(input, "100");
+            var _path = App.WebHostEnvironment.WebRootPath + @"\" + ret.url;
+
+            var fileName = HttpUtility.UrlEncode($"浠g爜鐢熸垚({ret.fileName}).zip", Encoding.GetEncoding("UTF-8"));
+
+            var path = Path.Combine(_path, "");
+            return new FileStreamResult(new FileStream(path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+
+        /// <summary>
+        /// 浠g爜鐢熸垚
+        /// </summary>
+        /// <param name="input"></param>
+        /// <param name="curGenerateType">200:鐢熸垚鏈湴锛�100锛氱敓鎴愭湰鍦板帇缂╁寘</param>
+        /// <returns></returns>
+        private async Task<dynamic> CommonRun(SysCodeGen input, string curGenerateType)
+        {
+
+
+
+            var templatePathList = GetTemplatePathList();
+            var targetPathList = new List<string>();
+            var zipPath = System.IO.Path.Combine(App.WebHostEnvironment.WebRootPath, "CodeGen", input.TableName);
+            if (curGenerateType.StartsWith('1'))
+            {
+                targetPathList = GetZipPathList(input);
+                if (Directory.Exists(zipPath))
+                    Directory.Delete(zipPath, true);
+            }
+            else
+                targetPathList = GetTargetPathList(input);
+
+            var tableFieldList = await _codeGenConfigService.List(new CodeGenConfig() { CodeGenId = input.Id }); // 瀛楁闆嗗悎
+            if (curGenerateType.StartsWith('2'))
+            {
+                CodeGenHelper.ValidateCodeGenConfig(tableFieldList);
+            }
+            for (var i = 0; i < templatePathList.Count; i++)
+            {
+                var tContent = System.IO.File.ReadAllText(templatePathList[i]);
+
+                tableFieldList.ForEach(u =>
+                {
+                    u.NetTypeIsNullLableForQueryInput = "?";
+                    u.NetTypeIsNullLableForAddEditOutParam = "";
+                    switch (u.NetType.ToLower())
+                    {
+                        case "int":
+                        case "int32":
+                        case "long":
+                        case "guid":
+                        case "decimal":
+                        case "datetime":
+                        case "datetimeoffset":
+                        case "bool": //澧炲姞甯冨皵绫诲瀷鐨勬潯浠� 銆怑ditby shaocx,2024-04-07銆�
+                            u.NetTypeIsNullLable = "?";
+                            if (u.WhetherRequired != "Y")
+                            {
+                                u.NetTypeIsNullLableForAddEditOutParam = "?";
+                            }
+                            break;
+                        case "string":
+                            u.NetTypeIsNullLableForQueryInput = "";
+                            break;
+                        default://鍏朵粬锛屾瘮濡傛灇涓� 銆怑ditby shaocx,2024-04-07銆�
+                            if (u.WhetherRequired != "Y")
+                            {
+                                u.NetTypeIsNullLableForAddEditOutParam = "?";
+                            }
+                            break;
+                    }
+                    u.OriginalColumnName = u.ColumnName;
+                });
+
+                if (i >= 6) // 閫傚簲鍓嶇棣栧瓧姣嶅皬鍐�
+                {
+                    tableFieldList.ForEach(u =>
+                    {
+                        u.ColumnName = u.ColumnName.Substring(0, 1).ToLower() + u.ColumnName[1..];
+                    });
+                }
+
+                var queryWhetherList = tableFieldList.Where(u => u.QueryWhether == YesOrNot.Y.ToString()).ToList(); // 鍓嶇鏌ヨ闆嗗悎
+
+                string FormDesign = "";
+
+                if (input.LowCodeId != null && input.LowCodeId > 0)
+                {
+                    FormDesign = _sysLowCodeRep.Where(x => x.Id == input.LowCodeId).Select(x => x.FormDesign).FirstOrDefault();
+                }
+
+                List<Front_Dynamic> dynamicLoad_dict = new List<Front_Dynamic>();
+                Dictionary<string, List<string>> dynamicData = new Dictionary<string, List<string>>();
+
+                if (!string.IsNullOrEmpty(FormDesign))
+                {
+                    try
+                    {
+                        var AllDynamic = FormDesign.ConvertToFront().AllFront().AllDynamic();
+
+                        AllDynamic.Where(x => x.Dynamic).Select(x => x.DynamicKey).ToList().ForEach(item =>
+                        {
+                            dynamicData.Add(item, new List<string>());
+                            var d = item.GetDynamic();
+                            if (d != null)
+                            {
+                                if (d.Head == "dict")
+                                {
+                                    dynamicLoad_dict.Add(d);
+                                }
+                            }
+                        });
+                    }
+                    catch { }
+                }
+
+                try
+                {
+                    //鑾峰彇瀵煎叆鍔熻兘鑷畾涔夋ā鏉夸唬鐮�
+                    StringBuilder templateContent = null;
+                    //Service鎺у埗鍣ㄧ敓鎴愬鍏ュ姛鑳借嚜瀹氫箟浠g爜   updare by liuwq
+                    if (templatePathList[i].IndexOf("Service.cs.vm") >= 0)
+                    {
+                        templateContent = CreateImportExcelTemplteCode(input, tableFieldList);
+                    }
+                    var tResult = _viewEngine.RunCompileFromCached(tContent, new
+                    {
+
+                        input.AuthorName,
+                        input.BusName,
+                        input.NameSpace,
+                        input.ModuleName,//澧炲姞妯″潡鍦板潃 銆怑ditby shaocx,2024-04-07銆�
+                        input.ProName,
+                        input.DatabaseName,
+                        input.IsOnlyQuery,
+                        input.IsWhetherImport,
+                        ClassName = input.TableName,
+                        CamelizeClassName = input.TableName.Substring(0, 1).ToLower() + input.TableName[1..], //棣栧瓧姣嶅皬鍐�
+                        QueryWhetherList = queryWhetherList,
+                        TableField = tableFieldList,
+                        input.LowCodeId,
+                        FormDesign,
+                        DynamicData = JsonConvert.SerializeObject(dynamicData),
+                        DynamicLoad_Dict = dynamicLoad_dict,
+                        IsFile = tableFieldList.Where(x => x.DtoNetType.Contains("Front_FileDto")).Any(),
+                        FileTableField = tableFieldList.Where(x => x.DtoNetType.Contains("Front_FileDto")).ToList(),
+
+                        ImportExcelCustomizationContent = templateContent?.ToString()//瀵煎叆鍔熻兘鑷畾涔夋ā鏉夸唬鐮�
+                    }); ;
+
+                    var dirPath = new DirectoryInfo(targetPathList[i]).Parent.FullName;
+                    if (!Directory.Exists(dirPath))
+                        Directory.CreateDirectory(dirPath);
+                    System.IO.File.WriteAllText(targetPathList[i], tResult, Encoding.UTF8);
+                }
+                catch (Exception ex)
+                {
+                    throw Oops.Oh($"閿欒妯℃澘锛歿templatePathList[i]}銆傞敊璇俊鎭細{ex.Message}銆�");
+                }
+
+
+
+
+
+
+            }
+
+            await AddMenu(input, input.DatabaseName.Substring(0, 5), input.TableName, input.BusName, input.MenuApplication, input.MenuPid, input.ModuleName);
+
+            if (input.IsWhetherImport == true)
+            {
+                //鍒涘缓瀵煎叆妯$増
+                await CreateImportTemplte(input);
+            }
+
+
+
+            // 闈瀂IP鍘嬬缉杩斿洖绌�
+            if (!curGenerateType.StartsWith('1'))
+                return null;
+            else
+            {
+                string downloadPath = zipPath + ".zip";
+                // 鍒ゆ柇鏄惁瀛樺湪鍚屽悕绉版枃浠�
+                if (System.IO.File.Exists(downloadPath))
+                    System.IO.File.Delete(downloadPath);
+                System.IO.Compression.ZipFile.CreateFromDirectory(zipPath, downloadPath);
+                //return new { url = $"{App.HttpContext.Request.Scheme}://{App.HttpContext.Request.Host.Value}/CodeGen/{input.TableName}.zip" };
+                return new { url = $@"CodeGen\{input.TableName}.zip", fileName = input.TableName };
+            }
+        }
+
+        //update by liuwq 20240418
+        /// <summary>
+        /// 鍒涘缓瀵煎叆鍔熻兘鑷畾涔夋ā鏉夸唬鐮� 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <param name="tableFieldList"></param>
+        /// <returns></returns>
+        private static StringBuilder CreateImportExcelTemplteCode(SysCodeGen input, List<CodeGenConfig> tableFieldList)
+        {
+            StringBuilder templateContent = new StringBuilder();
+            var whetherAddUpdate = tableFieldList.Where(u => u.WhetherAddUpdate == YesOrNot.Y.ToString()).ToList(); // 鍓嶇鏌ヨ澧炴敼闆嗗悎
+            templateContent.AppendLine("                          ");
+            templateContent.AppendLine($"                           var addItem = new {input.TableName}()");
+            templateContent.AppendLine("                            {");
+            templateContent.AppendLine("                               CreatedTime = SysHelper.GetNowTime(),");
+            templateContent.AppendLine("                               CreatedUserId = SysHelper.GetUserId(),");
+            templateContent.AppendLine("                               CreatedUserName = SysHelper.GetUserName(),");
+            templateContent.AppendLine("                               UpdatedTime = SysHelper.GetNowTime(),");
+            templateContent.AppendLine("                               UpdatedUserId = SysHelper.GetUserId(),");
+            templateContent.AppendLine("                               UpdatedUserName = SysHelper.GetUserName()");
+            templateContent.AppendLine("                             };");
+
+
+            templateContent.AppendLine("                          #region 瀹氫箟鍙橀噺");
+            foreach (var item in whetherAddUpdate)
+            {
+                templateContent.AppendLine($"                           var _{item.ColumnName} = \"\";//{item.ColumnComment}");
+            }
+
+            templateContent.AppendLine("                          #endregion");
+            templateContent.AppendLine("                          ");
+
+            templateContent.AppendLine("                          ");
+            templateContent.AppendLine("                          #region 鍙栧��");
+            foreach (var item in whetherAddUpdate)
+            {
+                templateContent.AppendLine($"                           _{item.ColumnName} = row[\"{item.ColumnComment}\"]?.ToString() ;");
+            }
+
+            templateContent.AppendLine("                          #endregion");
+            templateContent.AppendLine("                          ");
+
+            templateContent.AppendLine("                          ");
+            templateContent.AppendLine("                          #region 楠岃瘉");
+
+            //鏁板�肩被鍨嬮獙璇�
+            List<string> numericalTypeList = new List<string>()
+            {
+                "int",
+                "long",
+                "decimal"
+            };
+
+
+
+            foreach (var item in whetherAddUpdate)
+            {
+
+
+                //蹇呭~瀛楁楠岃瘉鏄惁涓虹┖
+                if (item.WhetherRequired.Equals("Y"))
+                {
+                    templateContent.AppendLine("                          ");
+                    templateContent.AppendLine($"                          if (string.IsNullOrEmpty(_{item.ColumnName}))");
+                    templateContent.AppendLine("                          {");
+                    templateContent.AppendLine($"                            throw Oops.Oh($\"绗瑊{index}}琛孾{item.ColumnComment}]{{_{item.ColumnName}}}涓嶈兘涓虹┖锛乗");");
+                    templateContent.AppendLine("                          }");
+                    templateContent.AppendLine("                          ");
+
+
+                }
+
+
+
+
+                //楠岃瘉鍊兼槸鍚︽湁鏁�
+
+                //楠岃瘉bool鍊�
+                if (item.DtoNetType.Equals("bool"))
+                {
+                    templateContent.AppendLine($"                          if(!string.IsNullOrEmpty(_{item.ColumnName}))");
+                    templateContent.AppendLine("                          {");
+                    templateContent.AppendLine($"                            if(!_{item.ColumnName}.Equals(\"鏄痋") && !_{item.ColumnName}.Equals(\"鍚"))");
+                    templateContent.AppendLine("                             {");
+                    templateContent.AppendLine($"                               throw Oops.Oh($\"绗瑊{index}}琛孾{item.ColumnComment}]{{_{item.ColumnName}}}鍊间笉姝g‘锛乗");");
+                    templateContent.AppendLine("                             }");
+                    templateContent.AppendLine("                             else");
+                    templateContent.AppendLine("                             {");
+                    templateContent.AppendLine($"                               bool out{item.ColumnName} = _{item.ColumnName}.Equals(\"鏄痋") ? true : false;");
+                    templateContent.AppendLine($"                               addItem.{item.ColumnName} = out{item.ColumnName};");
+                    templateContent.AppendLine("                             }");
+                    templateContent.AppendLine("                             }");
+                    templateContent.AppendLine("                          ");
+
+                }
+                //楠岃瘉鏋氫妇鍊兼槸鍚︽湁鏁�
+                else if (!string.IsNullOrWhiteSpace(item.DictTypeCode))//瀛楀吀code涓嶄负绌� 鏄娇鐢ㄦ灇涓惧��
+                {
+                    templateContent.AppendLine($"                          if(!string.IsNullOrEmpty(_{item.ColumnName}))");
+                    templateContent.AppendLine("                          {");
+                    templateContent.AppendLine($"                          {item.DataType}  enum{item.ColumnName} = default({item.DataType});");
+                    templateContent.AppendLine("                          ");
+                    templateContent.AppendLine($"                             if(!Enum.TryParse<{item.DataType}>(_{item.ColumnName}, out enum{item.ColumnName})&&!string.IsNullOrEmpty(_{item.ColumnName}))");
+                    templateContent.AppendLine("                              {");
+                    templateContent.AppendLine($"                                throw Oops.Oh($\"绗瑊{index}}琛孾{item.ColumnComment}]{{_{item.ColumnName}}}鍊间笉姝g‘锛乗");");
+                    templateContent.AppendLine("                              }");
+                    templateContent.AppendLine("                              else");
+                    templateContent.AppendLine("                              {");
+                    templateContent.AppendLine($"                                 addItem.{item.ColumnName} = enum{item.ColumnName};");
+                    templateContent.AppendLine("                              }");
+                    templateContent.AppendLine("                          ");
+                    templateContent.AppendLine("                           }");
+
+                }//楠岃瘉鏁板�兼槸鍚︽湁鏁�
+                else if (numericalTypeList.Any(a => a == item.DtoNetType))
+                {
+
+
+                    templateContent.AppendLine($"                          if(!string.IsNullOrEmpty(_{item.ColumnName}))");
+                    templateContent.AppendLine("                          {");
+                    templateContent.AppendLine($"                              if (!{item.DtoNetType}.TryParse(_{item.ColumnName}, out {item.DtoNetType} out{item.ColumnName})&&!string.IsNullOrEmpty(_{item.ColumnName}))");
+                    templateContent.AppendLine("                              {");
+                    templateContent.AppendLine($"                                 throw Oops.Oh($\"绗瑊{index}}琛孾{item.ColumnComment}]{{_{item.ColumnName}}}鍊间笉姝g‘锛乗");");
+                    templateContent.AppendLine("                              }");
+                    templateContent.AppendLine($"                              if (out{item.ColumnName} <= 0&&!string.IsNullOrEmpty(_{item.ColumnName}))");
+                    templateContent.AppendLine("                              {");
+                    templateContent.AppendLine($"                                 throw Oops.Oh($\"绗瑊{index}}琛孾{item.ColumnComment}]{{_{item.ColumnName}}}鍊间笉鑳藉皬浜庣瓑浜�0锛乗");");
+                    templateContent.AppendLine("                              }");
+                    templateContent.AppendLine("                              else");
+                    templateContent.AppendLine("                              {");
+                    templateContent.AppendLine($"                                 addItem.{item.ColumnName} = out{item.ColumnName};");
+                    templateContent.AppendLine("                              }");
+                    templateContent.AppendLine("                          ");
+                    templateContent.AppendLine("                          }");
+
+                }
+                else
+                {
+                    templateContent.AppendLine($"                          if(!string.IsNullOrEmpty(_{item.ColumnName}))");
+                    templateContent.AppendLine("                          {");
+
+                    //鏃ユ湡鎺т欢
+                    if (item.EffectType == "datepicker")
+                    {
+                        templateContent.AppendLine($"                                addItem.{item.ColumnName} = Convert.ToDateTime(Convert.ToDateTime(_{item.ColumnName}).ToShortDateString());");
+                    }//鏃ユ湡鏃堕棿鎺т欢
+                    else if (item.EffectType == "datetimepicker")
+                    {
+                        templateContent.AppendLine($"                                addItem.{item.ColumnName} =   Convert.ToDateTime(_{item.ColumnName});");
+                    }
+                    else
+                    {
+                        templateContent.AppendLine($"                                addItem.{item.ColumnName} = ({item.DtoNetType})_{item.ColumnName};");
+                    }
+                    templateContent.AppendLine("                           }");
+                }
+
+
+
+
+
+
+
+            }
+
+            templateContent.AppendLine("                          #endregion");
+            templateContent.AppendLine("                          ");
+
+
+
+            return templateContent;
+        }
+
+        private async Task AddMenu(SysCodeGen input, string menucodePre, string className, string busName, string application, long pid, string _ModuleName)
+        {
+            // 瀹氫箟鑿滃崟缂栫爜鍓嶇紑
+            var codePrefix = menucodePre + "_" + className.ToLower();//鏀逛负鍙栨暟鎹簱瀹氫綅鍣ㄧ殑鍓嶄簲涓瓧姣嶆柟渚垮尯鍒嗕笟鍔� //"dilon_" + className.ToLower();
+
+            // 鍏堝垹闄よ琛ㄥ凡鐢熸垚鐨勮彍鍗曞垪琛�
+            var menus = await _sysMenuRep.DetachedEntities.Where(u => u.Code == codePrefix || u.Code.StartsWith(codePrefix + "_")).ToListAsync();
+            await _sysMenuRep.DeleteAsync(menus);
+
+            // 濡傛灉 pid 涓� 0 璇存槑涓洪《绾ц彍鍗�, 闇�瑕佸垱寤洪《绾х洰褰�
+            if (pid == 0)
+            {
+                //瑙e喅 閫夋嫨鐖剁骇鑿滃崟鈥滈《绾р�濅細澶氱敓鎴愪竴绾ц彍鍗曠殑闂 銆怑ditby shaocx,2024-04-13銆�
+                /*
+                // 鐩綍
+                var menuType0 = new SysMenu
+                {
+                    Pid = 0,
+                    Pids = "[0],",
+                    Name = busName + "绠$悊",
+                    Code = codePrefix,
+                    Type = MenuType.DIR,
+                    Icon = "robot",
+                    Router = "/" + className.ToLower(),
+                    Component = "PageView",
+                    Application = application
+                };
+                pid = _sysMenuRep.InsertNowAsync(menuType0).GetAwaiter().GetResult().Entity.Id;
+                //*/
+            }
+            // 鐢变簬鍚庣画鑿滃崟浼氭湁淇敼, 闇�瑕佸垽鏂笅 pid 鏄惁瀛樺湪, 涓嶅瓨鍦ㄦ姤閿�
+            else if (!await _sysMenuRep.DetachedEntities.AnyAsync(e => e.Id == pid))
+                throw Oops.Oh(ErrorCode.D1505);
+
+            // 鑿滃崟
+            string _pids = "";
+            if (pid == 0)
+            {
+                _pids = "[0],";
+            }
+            else
+            {
+                _pids = "[0],[" + pid + "],";
+            }
+            var menuType1 = new SysMenu
+            {
+                Pid = pid,
+                Pids = _pids,
+                Name = busName,
+                Code = codePrefix + "_mgr",
+                Type = MenuType.MENU,
+                Router = "/" + className.ToLower(),
+                Component = "main/" + _ModuleName + "/" + className + "/index",//澧炲姞 妯″潡鍦板潃鐨勯厤缃�怑ditby shaocx,2024-04-07銆�
+                Application = application,
+                OpenType = MenuOpenType.COMPONENT
+            };
+            var pid1 = _sysMenuRep.InsertNowAsync(menuType1).GetAwaiter().GetResult().Entity.Id;
+
+            // 鎸夐挳-page
+            var menuType2 = new SysMenu
+            {
+                Pid = pid1,
+                Pids = "[0],[" + pid + "],[" + pid1 + "],",
+                Name = busName + "鏌ヨ",
+                Code = codePrefix + "_mgr_page",
+                Type = MenuType.BTN,
+                Permission = className + ":page",
+                Application = application,
+            }.InsertAsync();
+
+            // 鎸夐挳-detail
+            var menuType2_1 = new SysMenu
+            {
+                Pid = pid1,
+                Pids = "[0],[" + pid + "],[" + pid1 + "],",
+                Name = busName + "璇︽儏",
+                Code = codePrefix + "_mgr_detail",
+                Type = MenuType.BTN,
+                Permission = className + ":detail",
+                Application = application,
+            }.InsertAsync();
+
+            if (input.IsOnlyQuery != true)
+            {
+                // 鎸夐挳-add
+                var menuType2_2 = new SysMenu
+                {
+                    Pid = pid1,
+                    Pids = "[0],[" + pid + "],[" + pid1 + "],",
+                    Name = busName + "澧炲姞",
+                    Code = codePrefix + "_mgr_add",
+                    Type = MenuType.BTN,
+                    Permission = className + ":add",
+                    Application = application,
+                }.InsertAsync();
+
+                // 鎸夐挳-delete
+                var menuType2_3 = new SysMenu
+                {
+                    Pid = pid1,
+                    Pids = "[0],[" + pid + "],[" + pid1 + "],",
+                    Name = busName + "鍒犻櫎",
+                    Code = codePrefix + "_mgr_delete",
+                    Type = MenuType.BTN,
+                    Permission = className + ":delete",
+                    Application = application,
+                }.InsertAsync();
+
+                // 鎸夐挳-edit
+                var menuType2_4 = new SysMenu
+                {
+                    Pid = pid1,
+                    Pids = "[0],[" + pid + "],[" + pid1 + "],",
+                    Name = busName + "缂栬緫",
+                    Code = codePrefix + "_mgr_edit",
+                    Type = MenuType.BTN,
+                    Permission = className + ":edit",
+                    Application = application,
+                }.InsertAsync();
+
+                //鎸夐挳-瀵煎叆
+                if (input.IsWhetherImport == true)
+                {
+                    var menuType2_6 = new SysMenu
+                    {
+                        Pid = pid1,
+                        Pids = "[0],[" + pid + "],[" + pid1 + "],",
+                        Name = busName + "瀵煎叆excel",
+                        Code = codePrefix + "_mgr_import_excel",
+                        Type = MenuType.BTN,
+                        Permission = className + ":importExcel",
+                        Application = application,
+                    }.InsertAsync();
+                }
+
+            }
+
+
+            var menuType2_5 = new SysMenu
+            {
+                Pid = pid1,
+                Pids = "[0],[" + pid + "],[" + pid1 + "],",
+                Name = busName + "瀵煎嚭excel",
+                Code = codePrefix + "_mgr_export_excel",
+                Type = MenuType.BTN,
+                Permission = className + ":exportExcel",
+                Application = application,
+            }.InsertAsync();
+
+
+        }
+
+        /// <summary>
+        /// 鑾峰彇妯℃澘鏂囦欢璺緞闆嗗悎
+        /// </summary>
+        /// <returns></returns>
+        private List<string> GetTemplatePathList()
+        {
+            var templatePath = App.WebHostEnvironment.WebRootPath + @"\Template\";
+            return new List<string>()
+            {
+                templatePath + "Service.cs.vm",
+                templatePath + "IService.cs.vm",
+                templatePath + "Input.cs.vm",
+                templatePath + "Output.cs.vm",
+                //涓嶅啀鐢熸垚Dto鏂囦欢 銆怑ditby shaocx,2024-04-20銆�
+                //templatePath + "Dto.cs.vm",
+                templatePath + "Mapper.cs.vm",
+                templatePath + "index.vue.vm",
+                templatePath + "addForm.vue.vm",
+                templatePath + "editForm.vue.vm",
+                templatePath + "excelForm.vue.vm",
+                templatePath + "Manage.js.vm",
+            };
+        }
+
+        /// <summary>
+        /// 璁剧疆鐢熸垚鏂囦欢璺緞
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        private List<string> GetTargetPathList(SysCodeGen input)
+        {
+            //澧炲姞 妯″潡璺緞鐨勫啓鍏� 銆怑ditby shaocx,2024-04-07銆�
+            var backendPath = new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.FullName + @"\" + input.NameSpace + @"\Service\" + input.ModuleName + @"\" + input.TableName + @"\";//鍚庣鏂囦欢澶圭埗璺緞
+            var servicePath = backendPath + input.TableName + "Service.cs";
+            var iservicePath = backendPath + "I" + input.TableName + "Service.cs";
+            var inputPath = backendPath + @"Dto\" + input.TableName + "Input.cs";
+            var outputPath = backendPath + @"Dto\" + input.TableName + "Output.cs";
+            //涓嶅啀鐢熸垚Dto鏂囦欢 銆怑ditby shaocx,2024-04-20銆�
+            //var viewPath = backendPath + @"Dto\" + input.TableName + "Dto.cs";
+            var mapperPath = backendPath + @"Map\" + input.TableName + "Mapper.cs";
+            //澧炲姞 妯″潡璺緞鐨勫啓鍏� 銆怑ditby shaocx,2024-04-07銆�
+            var frontendPath = new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.Parent.FullName + @"\" + input.FrontProName + @"\src\views\main\" + input.ModuleName + @"\";//鍓嶇鏂囦欢澶圭埗璺緞
+            var indexPath = frontendPath + input.TableName + @"\index.vue";
+            var addFormPath = frontendPath + input.TableName + @"\addForm.vue";
+            var editFormPath = frontendPath + input.TableName + @"\editForm.vue";
+            var excelFormPath = frontendPath + input.TableName + @"\excelForm.vue";
+            //澧炲姞 妯″潡璺緞鐨勫啓鍏� 銆怑ditby shaocx,2024-04-07銆�
+            var apiJsPath = new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.Parent.FullName + @"\" + input.FrontProName + @"\src\api\modular\main\" + input.ModuleName + @"\" + input.TableName + "Manage.js";
+
+            return new List<string>()
+            {
+                servicePath,
+                iservicePath,
+                inputPath,
+                outputPath,
+                //涓嶅啀鐢熸垚Dto鏂囦欢 銆怑ditby shaocx,2024-04-20銆�
+                //viewPath,
+                mapperPath,
+                indexPath,
+                addFormPath,
+                editFormPath,
+                excelFormPath,
+                apiJsPath
+            };
+        }
+
+        /// <summary>
+        /// 瀛楃涓查瀛楁瘝灏忓啓
+        /// </summary>
+        /// <param name="str"></param>
+        /// <returns></returns>
+        public string LowercaseFirst(string input)
+        {
+            if (string.IsNullOrEmpty(input))
+            {
+                return input; // 濡傛灉杈撳叆涓虹┖锛屽垯鐩存帴杩斿洖
+            }
+
+            char firstChar = char.ToLower(input[0]); // 灏嗙涓�涓瓧绗﹁浆鎹负灏忓啓
+            string remainder = input.Length > 1 ? input.Substring(1) : ""; // 鑾峰彇鍓╀綑鐨勫瓧绗︿覆閮ㄥ垎
+            return firstChar + remainder; // 杩斿洖棣栧瓧姣嶅皬鍐欑殑瀛楃涓�
+        }
+
+
+        /// <summary>
+        /// 璁剧疆鐢熸垚鏂囦欢璺緞
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        private List<string> GetZipPathList(SysCodeGen input)
+        {
+            var zipPath = System.IO.Path.Combine(App.WebHostEnvironment.WebRootPath, "CodeGen", input.TableName);
+
+            var backendPath = System.IO.Path.Combine(zipPath, input.NameSpace, "Service", input.ModuleName, input.TableName);//鍚庣鏂囦欢澶圭埗璺緞
+            var servicePath = System.IO.Path.Combine(backendPath, input.TableName + "Service.cs");
+            var iservicePath = System.IO.Path.Combine(backendPath, "I" + input.TableName + "Service.cs");
+            var inputPath = System.IO.Path.Combine(backendPath, "Dto", input.TableName + "Input.cs");
+            var outputPath = System.IO.Path.Combine(backendPath, "Dto", input.TableName + "Output.cs");
+            var viewPath = System.IO.Path.Combine(backendPath, "Dto", input.TableName + "Dto.cs");
+            var mapperPath = System.IO.Path.Combine(backendPath, "Dto", input.TableName + "Mapper.cs");
+
+
+            var frontendPath = System.IO.Path.Combine(zipPath, input.FrontProName, "src", "views", "main", input.ModuleName, input.TableName);//鍓嶇鏂囦欢澶圭埗璺緞
+            var indexPath = frontendPath + @"\index.vue";
+            var addFormPath = frontendPath + @"\addForm.vue";
+            var editFormPath = frontendPath + @"\editForm.vue";
+            var excelFormPath = frontendPath + @"\excelForm.vue";
+            //澧炲姞 妯″潡璺緞鐨勫啓鍏� 銆怑ditby shaocx,2024-04-07銆�
+            var _apiJsPath = System.IO.Path.Combine(zipPath, input.FrontProName, "src", "api", "modular", "main", input.ModuleName);//鍓嶇鏂囦欢澶圭埗璺緞
+            var apiJsPath = new DirectoryInfo(_apiJsPath) + @"\" + input.TableName + "Manage.js";
+
+            return new List<string>()
+            {
+                servicePath,
+                iservicePath,
+                inputPath,
+                outputPath,
+                viewPath,
+                mapperPath,
+                indexPath,
+                addFormPath,
+                editFormPath,
+                excelFormPath,
+                apiJsPath
+            };
+        }
+
+
+        /// <summary>
+        /// 鏍规嵁琛ㄥ悕鍒涘缓瀵煎叆妯$増
+        /// </summary>
+        /// <param name="input"></param>
+        private async Task CreateImportTemplte(SysCodeGen input)
+        {
+            string errMsg = string.Empty;
+            //琛ㄥ悕
+            string tableName = input.TableName;
+            var copayPath = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + "\\CommonTemplate.xlsx";
+            string newPath = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\{tableName}{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+            var tableFieldList = await _codeGenConfigService.List(new CodeGenConfig() { CodeGenId = input.Id }); // 瀛楁闆嗗悎
+            CreatExcel(tableFieldList, copayPath, newPath);
+        }
+
+
+        /// <summary>
+        /// 鏍规嵁瀹炰綋绫诲悕 鐢熸垚瀵煎叆excel妯$増
+        /// </summary>
+        /// <param name="tableFieldList">浠g爜鐢熸垚閫夋嫨閰嶇疆琛ㄧ殑瀛楁</param>
+        /// <param name="copayPath"></param>
+        /// <param name="newPath"></param>
+        private void CreatExcel(List<CodeGenConfig> tableFieldList, string copayPath, string newPath)
+        {
+            string errMsg = string.Empty;
+            try
+            {
+                #region 楠岃瘉鍘熷瀵煎叆妯℃澘鏂囦欢鏄惁瀛樺湪
+                if (!File.Exists(copayPath))
+                {
+                    errMsg = $"鐢ㄦ潵澶嶅埗鐢熸垚妯$増鐨凟XCEL鏂囦欢涓嶅瓨鍦�";
+                    throw Oops.Oh($"鐢熸垚瀵煎叆妯$増鏂囦欢寮傚父锛歿errMsg}");
+                }
+                #endregion
+
+                //鑾峰彇妯℃澘鏂囦欢
+                FileInfo copyFile = new FileInfo(copayPath);
+
+                // 妫�鏌ユ柊鐢熸垚鐨勫鍏ユā鐗堟枃浠舵槸鍚﹀瓨鍦紝瀛樺湪灏卞垹闄わ紝浠ラ伩鍏嶅彲鑳界殑寮傚父銆�
+                if (File.Exists(newPath))
+                {
+                    File.Delete(newPath); // 鍒犻櫎鏂囦欢
+                }
+                //澶嶅埗鍘熷瀵煎叆妯$増锛屽垱寤烘柊鐨勫鍏ユā鐗堟枃浠�
+                copyFile.CopyTo(newPath, true);
+                FileInfo existingFile = new FileInfo(newPath);
+                using (ExcelPackage package = new ExcelPackage(existingFile))
+                {
+                    //鑾峰彇妯℃澘鍐呭
+                    ExcelWorksheet worksheet = package.Workbook.Worksheets[0];//鑾峰彇绗竴涓獁orksheet
+                    //琛屽拰鍒楅兘鏄粠1寮�濮嬶紝鑰屼笉鏄粠0寮�濮嬶紒锛侊紒
+                    int _remarkRowIndex = 1;//worksheet 琛岀储寮曪紙璇存槑锛� 娉ㄦ剰锛氶粯璁ゆ槸绗竴琛屾槸瀵煎叆妯$増鐨勮鏄�
+                    int _mergeRowCount = _remarkRowIndex;//鍚堝苟琛� 锛堝繀濉瓧娈垫暟閲忥級 榛樿鏄涓�琛屽悎骞� 
+                    int _titleRowIndex = 2;//worksheet 琛岀储寮曪紙鏍囬锛夋敞鎰忥細榛樿鏄涓�琛屾槸瀵煎叆妯$増鐨勬爣棰�
+                    int _cellIndex = 1;//worksheet 鍒楃储寮� 娉ㄦ剰锛氶粯璁ゆ槸绗竴鍒楀紑濮嬭缃鍏ユā鐗堢殑鏍囬
+
+                    //妯$増绗竴鍒椾綔涓烘ā鐗堜娇鐢紝鎵�鏈夋柊澧炵殑鍒楁牱寮忔姤閿欎竴鑷�
+                    var templateCell = worksheet.Cells[_titleRowIndex, _cellIndex];
+
+                    string _remark = string.Empty;  //绗竴琛屾坊鍔犺鏄庯紝娉ㄦ剰鎹㈣銆�
+
+                    //鑾峰彇瑕佸鐞嗙殑浠g爜鐢熸垚閰嶇疆鐨勬槸澧炴敼鐨勬ā鐗堝瓧娈�
+                    var showCodeGenConfigs = tableFieldList.Where(w => w.WhetherAddUpdate.Equals("Y")).ToList();
+                    int _mergeCellsCount = showCodeGenConfigs.Count();//鍚堝苟鍒楋紙妯$増璧嬪�肩殑鏍囬鍒楁暟锛�
+                                                                      //鑾峰彇蹇呭~瀛楁
+
+                    //鍒涘缓妯$増璇存槑
+                    StringBuilder _remarkContentBuilder = GetParseTemplateHint(showCodeGenConfigs);
+                    string _remarkContent = _remarkContentBuilder.ToString();
+
+                    #region 鍚堝苟鍗曞厓鏍�
+                    //鍚堝苟鍗曞厓鏍硷紝鍚堝苟琛屽拰鍒椼�傞粯璁ゆ槸鍚堝苟绗竴琛岀殑鎵�鏈夋爣棰樺垪
+                    var cellRange = worksheet.Cells[1, 1, _mergeRowCount, _mergeCellsCount];
+
+                    cellRange.Value = _remarkContent;//鍚堝苟鍗曞厓鏍煎悗鐨勫唴瀹硅祴鍊�
+                    var mergeCell = cellRange.Merge = true;//鍚堝苟
+                    int rowHeight = GetRowHeightBasedOnContent(showCodeGenConfigs.Count()); // 鏍规嵁鍐呭璁$畻琛岄珮锛堣繖閲岄渶瑕佷綘鑷繁瀹炵幇閫昏緫锛�
+                    worksheet.Row(_remarkRowIndex).Height = rowHeight; // 璁剧疆琛岄珮锛屾敞鎰廍PPlus鐨勫崟浣嶄笉鍚岋紝闇�瑕佽浆鎹�
+
+                    #endregion
+
+                    //寰幆鍒涘缓妯$増鏍囬鍒�
+                    foreach (var item in showCodeGenConfigs)
+                    {
+                        var currentCell = worksheet.Cells[_titleRowIndex, _cellIndex];
+                        //缁欐柊妯$増鍒楁爣棰樿祴鍊�
+                        currentCell.Value = item.ColumnComment;
+                        //澶嶅埗鎷疯礉鐨別xcel妯$増鍒楋紝缁欐柊妯$増鍒楁牱寮忚祴鍊�
+                        currentCell.StyleID = templateCell.StyleID;
+                        // worksheet.Column(_cellIndex).AutoFit();//瀹藉害鑷�傚簲
+
+                        _cellIndex++;
+                    }
+
+
+                    package.Save();//淇濆瓨
+                }
+            }
+            catch (Exception ex)
+            {
+                throw Oops.Oh($"鐢熸垚瀵煎叆妯$増鏂囦欢寮傚父锛岃鏌ョ湅绯荤粺鏃ュ織");
+            }
+            finally { }
+        }
+
+
+
+
+
+
+        // 杩欓噷鏄竴涓亣璁剧殑鏂规硶锛岀敤浜庢牴鎹崟鍏冩牸鍐呭璁$畻琛岄珮銆備綘闇�瑕佹牴鎹疄闄呮儏鍐垫潵瀹炵幇杩欎釜閫昏緫銆�
+        private static int GetRowHeightBasedOnContent(int lineCount)
+        {
+            // 杩欓噷鍙槸涓�涓ず渚嬮�昏緫锛屼綘鍙兘闇�瑕佹洿澶嶆潅鐨勭畻娉曟潵鍐冲畾鍚堥�傜殑琛岄珮銆�
+
+            return (lineCount + 3) * 20; // 
+        }
+
+
+        private StringBuilder GetParseTemplateHint(List<CodeGenConfig> requiredTableFieldList)
+        {
+            StringBuilder _remarkContentBuilder = new StringBuilder();
+            _remarkContentBuilder.AppendLine("");
+            _remarkContentBuilder.AppendLine("1.鏀寔Excel2007鍙婁互涓婄増鏈枃浠躲��");
+            _remarkContentBuilder.AppendLine("2.瀵煎叆鏂板鏁版嵁鏃朵笉鑳借秴杩�5000琛屻��");
+            _remarkContentBuilder.AppendLine("3.瀵煎叆鏇存柊鏁版嵁鏃朵笉鑳借秴杩�2000琛屻��");
+            _remarkContentBuilder.AppendLine("");
+            _remarkContentBuilder.AppendLine("");
+
+            Dictionary<string, string> typeNameDict = new()
+            {
+                { "string", "鏂囨湰銆�"},
+                { "int", "鏁板瓧銆�"},
+                { "long", "鏁板瓧銆�"},
+                { "decimal", "灏忔暟銆�"},
+                { "bool", "甯冨皵銆傜ず渚嬶細鏄�佸惁銆�"},
+
+            };
+            Dictionary<string, string> effectTypeDict = new()
+            {
+                { "datepicker", "鏃ユ湡銆� 绀轰緥: 2023/3/1"},
+                { "datetimepicker", "鏃ユ湡鏃堕棿銆傜ず渚�: 2023/3/1 12:00:00"},
+
+            };
+            requiredTableFieldList.ForEach(x =>
+            {
+                string text = "";
+                text += x.ColumnComment + "(" + (x.WhetherRequired.Equals("Y") ? "蹇呭~" : "闈炲繀濉�") + "): ";
+                if (effectTypeDict.ContainsKey(x.EffectType))
+                {
+                    text += effectTypeDict[x.EffectType];
+                }
+                else if (typeNameDict.ContainsKey(x.DtoNetType))
+                {
+                    text += typeNameDict[x.DtoNetType];
+                }
+                else
+                {
+                    text += ("娉ㄦ剰锛氱被鍨嬫湭鑳借瘑鍒嚭鏉ワ紝闇�瑕佽嚜宸辩淮鎶わ紒锛侊紒銆�");
+                }
+                _remarkContentBuilder.AppendLine(text);
+            });
+
+            return _remarkContentBuilder;
+
+        }
+
+
+
+        /// <summary>
+        /// 鏍规嵁灞炴�у悕绉板垽鏂槸鍚︽槸鏋氫妇绫诲瀷
+        /// </summary>
+        /// <param name="type"></param>
+        /// <param name="propertyName"></param>
+        /// <returns></returns>
+        /// <exception cref="ArgumentException"></exception>
+        public static bool IsEnumProperty(Type type, string propertyName)
+        {
+            PropertyInfo propertyInfo = type.GetProperty(propertyName);
+            if (propertyInfo == null)
+            {
+                throw new ArgumentException("Property not found", nameof(propertyName));
+            }
+            return propertyInfo.PropertyType.IsEnum;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenConfig.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenConfig.cs
new file mode 100644
index 0000000..51cb2d1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenConfig.cs
@@ -0,0 +1,179 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 浠g爜鐢熸垚璇︾粏閰嶇疆鍙傛暟
+    /// </summary>
+    public class CodeGenConfig
+    {
+
+        /// <summary>
+        /// 鎵�灞炵敓鎴愪富琛�
+        /// </summary>
+        /// 
+        public CodeGenOutput CodeGen { get; set; }
+        /// <summary>
+        /// 涓婚敭Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 浠g爜鐢熸垚涓昏〃ID
+        /// </summary>
+        public long CodeGenId { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撳瓧娈靛悕
+        /// </summary>
+        public string ColumnName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撳瓧娈靛悕
+        /// </summary>
+        public string OriginalColumnName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撳瓧娈靛悕(棣栧瓧姣嶅皬鍐�)
+        /// </summary>
+        public string LowerColumnName => string.IsNullOrWhiteSpace(ColumnName)
+                                      ? null
+                                      : ColumnName.Substring(0, 1).ToLower() + ColumnName[1..];
+
+        /// <summary>
+        /// 瀛楁鎻忚堪
+        /// </summary>
+        public string ColumnComment { get; set; }
+
+        /// <summary>
+        /// .NET绫诲瀷
+        /// </summary>
+        public string NetType { get; set; }
+
+        /// <summary>
+        /// .NET绫诲瀷
+        /// </summary>
+        public string DtoNetType { get; set; }
+
+        /// <summary>
+        /// .NET绫诲瀷鏄惁鏄�肩被鍨�
+        /// </summary>
+        public string NetTypeIsNullLable { get; set; }
+
+
+        /// <summary>
+        /// 鏌ヨ鍙傛暟鍙负null涓撶敤
+        /// </summary>
+        public string NetTypeIsNullLableForQueryInput { get; set; }
+
+
+        /// <summary>
+        /// 銆愭柊澧炪�佺紪杈戙�佽繑鍥炴煡璇㈢粨鏋滅被銆� 鍙傛暟鍙负null涓撶敤
+        /// </summary>
+        public string NetTypeIsNullLableForAddEditOutParam { get; set; }
+
+
+        /// <summary>
+        /// 浣滅敤绫诲瀷锛堝瓧鍏革級
+        /// </summary>
+        public string EffectType { get; set; }
+
+        /// <summary>
+        /// 澶栭敭瀹炰綋鍚嶇О
+        /// </summary>
+        public string FkEntityName { get; set; }
+
+        /// <summary>
+        /// 澶栭敭瀹炰綋鍚嶇О(棣栧瓧姣嶅皬鍐�)
+        /// </summary>
+        public string LowerFkEntityName => string.IsNullOrWhiteSpace(FkEntityName)
+                                        ? null
+                                        : FkEntityName.Substring(0, 1).ToLower() + FkEntityName[1..];
+
+        /// <summary>
+        /// 澶栭敭鏄剧ず瀛楁
+        /// </summary>
+        public string FkColumnName { get; set; }
+
+        /// <summary>
+        /// 澶栭敭鏄剧ず瀛楁(棣栧瓧姣嶅皬鍐�)
+        /// </summary>
+        public string LowerFkColumnName => string.IsNullOrWhiteSpace(FkColumnName)
+                                        ? null
+                                        : (FkColumnName.Substring(0, 1).ToLower() + FkColumnName[1..]);
+
+        /// <summary>
+        /// 澶栭敭鏄剧ず瀛楁.NET绫诲瀷
+        /// </summary>
+        public string FkColumnNetType { get; set; }
+
+        /// <summary>
+        /// 瀛楀吀code
+        /// </summary>
+        public string DictTypeCode { get; set; }
+
+        /// <summary>
+        /// 鍒楄〃鏄惁缂╄繘锛堝瓧鍏革級
+        /// </summary>
+        public string WhetherRetract { get; set; }
+
+        /// <summary>
+        /// 鏄惁蹇呭~锛堝瓧鍏革級
+        /// </summary>
+        public string WhetherRequired { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄煡璇㈡潯浠�
+        /// </summary>
+        public string QueryWhether { get; set; }
+
+        /// <summary>
+        /// 鏌ヨ鏂瑰紡
+        /// </summary>
+        public string QueryType { get; set; }
+
+        /// <summary>
+        /// 鍒楄〃鏄剧ず
+        /// </summary>
+        public string WhetherTable { get; set; }
+
+        /// <summary>
+        /// 鍒楄〃鎺掑簭鏄剧ず
+        /// </summary>
+        public string WhetherOrderBy { get; set; }
+
+        /// <summary>
+        /// 澧炴敼
+        /// </summary>
+        public string WhetherAddUpdate { get; set; }
+
+        /// <summary>
+        /// 涓诲閿�
+        /// </summary>
+        public string ColumnKey { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撲腑绫诲瀷锛堢墿鐞嗙被鍨嬶級
+        /// </summary>
+        public string DataType { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄�氱敤瀛楁
+        /// </summary>
+        public string WhetherCommon { get; set; }
+
+        /// <summary>
+        /// 椤甸潰鍒楁樉绀烘渶灏忓搴�
+        /// </summary>
+        public string ShowTitleMinWidth { get; set; }
+
+        /// <summary>
+        /// 鏄惁鑱斿悎涓婚敭
+        /// </summary>
+        public string WhetherUnionKey { get; set; }
+
+
+
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenInput.cs
new file mode 100644
index 0000000..691280e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenInput.cs
@@ -0,0 +1,234 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 浠g爜鐢熸垚鍙傛暟绫�
+    /// </summary>
+    public class CodeGenPageInput : PageInputBase
+    {
+        /// <summary>
+        /// 涓氬姟鍚�
+        /// </summary>
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撹〃鍚�
+        /// </summary>
+        public string TableName { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddCodeGenInput
+    {
+        /// <summary>
+        /// 浣庝唬鐮佹ā鍧楁潵婧�
+        /// </summary>
+        public long? LowCodeId { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撳悕
+        /// </summary>
+        [Required(ErrorMessage = "鏁版嵁搴撳悕涓嶈兘涓虹┖")]
+        public string DatabaseName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撹〃鍚�
+        /// </summary>
+        [Required(ErrorMessage = "鏁版嵁搴撹〃鍚嶄笉鑳戒负绌�")]
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+        /// </summary>
+        [Required(ErrorMessage = "涓氬姟鍚嶄笉鑳戒负绌�")]
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// 鍛藉悕绌洪棿
+        /// </summary>
+        [Required(ErrorMessage = "鍛藉悕绌洪棿涓嶈兘涓虹┖")]
+        public string NameSpace { get; set; }
+
+        /// <summary>
+        /// 浣滆�呭鍚�
+        /// </summary>
+        [Required(ErrorMessage = "浣滆�呭鍚嶄笉鑳戒负绌�")]
+        public string AuthorName { get; set; }
+
+        /// <summary>
+        /// 妯″潡璺緞
+        /// </summary>
+        [Required(ErrorMessage = "妯″潡璺緞涓嶈兘涓虹┖")]
+        public string ModuleName { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙槸鏌ヨ
+        /// </summary>
+        [Required(ErrorMessage = "鏄惁鍙槸鏌ヨ涓嶈兘涓虹┖")]
+        public bool IsOnlyQuery { get; set; }
+
+        /// <summary>
+        /// 鍓嶇椤圭洰鍚�
+        /// </summary>
+        [Required(ErrorMessage = "鍓嶇椤圭洰鍚嶄笉鑳戒负绌�")]
+        public string FrontProName { get; set; }
+
+        /// <summary>
+        /// 鐢熸垚鏂瑰紡
+        /// </summary>
+        [Required(ErrorMessage = "鐢熸垚鏂瑰紡涓嶈兘涓虹┖")]
+        public string GenerateType { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        [Required(ErrorMessage = "鑿滃崟搴旂敤鍒嗙被涓嶈兘涓虹┖")]
+        public string MenuApplication { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟鐖剁骇
+        /// </summary>
+        [Required(ErrorMessage = "鑿滃崟鐖剁骇涓嶈兘涓虹┖")]
+        public long MenuPid { get; set; }
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary>
+        public string ClassName { get; set; }
+
+        /// <summary>
+        /// 鏄惁绉婚櫎琛ㄥ墠缂�
+        /// </summary>
+        public string TablePrefix { get; set; }
+
+        /// <summary>
+        /// 鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+        /// </summary>
+        public string TableComment { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏀寔瀵煎叆
+        /// </summary>
+        [Required(ErrorMessage = "鏄惁鏀寔瀵煎叆")]
+        public bool IsWhetherImport { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteCodeGenInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateCodeGenInput
+    {
+        /// <summary>
+        /// 浠g爜鐢熸垚鍣↖d
+        /// </summary>
+        [Required(ErrorMessage = "浠g爜鐢熸垚鍣↖d涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撳悕
+        /// </summary>
+        [Required(ErrorMessage = "鏁版嵁搴撳悕涓嶈兘涓虹┖")]
+        public string DatabaseName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撹〃鍚�
+        /// </summary>
+        [Required(ErrorMessage = "鏁版嵁搴撹〃鍚嶄笉鑳戒负绌�")]
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+        /// </summary>
+        [Required(ErrorMessage = "涓氬姟鍚嶄笉鑳戒负绌�")]
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// 鍛藉悕绌洪棿
+        /// </summary>
+        [Required(ErrorMessage = "鍛藉悕绌洪棿涓嶈兘涓虹┖")]
+        public string NameSpace { get; set; }
+
+        /// <summary>
+        /// 妯″潡璺緞
+        /// </summary>
+        [Required(ErrorMessage = "妯″潡璺緞涓嶈兘涓虹┖")]
+        public string ModuleName { get; set; }
+
+
+        /// <summary>
+        /// 鏄惁鍙槸鏌ヨ
+        /// </summary>
+        [Required(ErrorMessage = "鏄惁鍙槸鏌ヨ涓嶈兘涓虹┖")]
+        public bool IsOnlyQuery { get; set; }
+
+        /// <summary>
+        /// 鍓嶇椤圭洰鍚�
+        /// </summary>
+        [Required(ErrorMessage = "鍓嶇椤圭洰鍚嶄笉鑳戒负绌�")]
+        public string FrontProName { get; set; }
+
+        /// <summary>
+        /// 浣滆�呭鍚�
+        /// </summary>
+        [Required(ErrorMessage = "浣滆�呭鍚嶄笉鑳戒负绌�")]
+        public string AuthorName { get; set; }
+
+        /// <summary>
+        /// 鐢熸垚鏂瑰紡
+        /// </summary>
+        [Required(ErrorMessage = "鐢熸垚鏂瑰紡涓嶈兘涓虹┖")]
+        public string GenerateType { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        [Required(ErrorMessage = "鑿滃崟搴旂敤鍒嗙被涓嶈兘涓虹┖")]
+        public string MenuApplication { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟鐖剁骇
+        /// </summary>
+        [Required(ErrorMessage = "鑿滃崟鐖剁骇涓嶈兘涓虹┖")]
+        public long MenuPid { get; set; }
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary>
+        public string ClassName { get; set; }
+
+        /// <summary>
+        /// 鏄惁绉婚櫎琛ㄥ墠缂�
+        /// </summary>
+        public string TablePrefix { get; set; }
+
+        /// <summary>
+        /// 鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+        /// </summary>
+        public string TableComment { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏀寔瀵煎叆
+        /// </summary>
+        [Required(ErrorMessage = "鏄惁鏀寔瀵煎叆")]
+        public bool IsWhetherImport { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryCodeGenInput : BaseId
+    {
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenModel.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenModel.cs
new file mode 100644
index 0000000..c47cf10
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenModel.cs
@@ -0,0 +1,91 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 浠g爜鐢熸垚鍙傛暟绫�
+    /// </summary>
+    public class CodeGenModel
+    {
+        /// <summary>
+        /// 浠g爜鐢熸垚鍣↖d
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 浣滆�呭鍚�
+        /// </summary>
+        public string AuthorName { get; set; }
+
+        /// <summary>
+        /// 鍛藉悕绌洪棿
+        /// </summary>
+        public string NameSpace { get; set; }
+
+        /// <summary>
+        /// 绋嬪簭闆�
+        /// </summary>
+        public string ProName
+        {
+            get { return NameSpace.TrimEnd(new char[] { '.', 'A', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n' }); }
+        }
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary>
+        public string ClassName { get; set; }
+
+        /// <summary>
+        /// 鍓嶇鏌ヨ鏉′欢闆嗗悎
+        /// </summary>
+        public List<CodeGenConfig> QueryWhetherList { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ瓧娈甸泦鍚�
+        /// </summary>
+        public List<CodeGenConfig> TableField { get; set; }
+
+        /// <summary>
+        /// 鏄惁绉婚櫎琛ㄥ墠缂�
+        /// </summary>
+        public string TablePrefix { get; set; }
+
+        /// <summary>
+        /// 鐢熸垚鏂瑰紡
+        /// </summary>
+        public string GenerateType { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撳悕
+        /// </summary>
+        public string DatabaseName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撹〃鍚�
+        /// </summary>
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 鍖呭悕
+        /// </summary>
+        public string PackageName { get; set; }
+
+        /// <summary>
+        /// 涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+        /// </summary>
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// 鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+        /// </summary>
+        public string TableComment { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        public string MenuApplication { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟鐖剁骇
+        /// </summary>
+        public long MenuPid { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenOutput.cs
new file mode 100644
index 0000000..3dc5974
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenOutput.cs
@@ -0,0 +1,68 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 浠g爜鐢熸垚鍙傛暟绫�
+    /// </summary>
+    public class CodeGenOutput
+    {
+        /// <summary>
+        /// 浠g爜鐢熸垚鍣↖d
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 浣滆�呭鍚�
+        /// </summary>
+        public string AuthorName { get; set; }
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary>
+        public string ClassName { get; set; }
+
+        /// <summary>
+        /// 鏄惁绉婚櫎琛ㄥ墠缂�
+        /// </summary>
+        public string TablePrefix { get; set; }
+
+        /// <summary>
+        /// 鐢熸垚鏂瑰紡
+        /// </summary>
+        public string GenerateType { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撳悕
+        /// </summary>
+        public string DatabaseName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撹〃鍚�
+        /// </summary>
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 鍖呭悕
+        /// </summary>
+        public string PackageName { get; set; }
+
+        /// <summary>
+        /// 涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+        /// </summary>
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// 鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+        /// </summary>
+        public string TableComment { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        public string MenuApplication { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟鐖剁骇
+        /// </summary>
+        public long MenuPid { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/DatabaseOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/DatabaseOutput.cs
new file mode 100644
index 0000000..4bf8143
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/DatabaseOutput.cs
@@ -0,0 +1,28 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏁版嵁搴撳簱鍒楄〃鍙傛暟
+    /// </summary>
+    public class DatabaseOutput
+    {
+        /// <summary>
+        /// 搴撳悕锛堝瓧姣嶅舰寮忕殑锛�
+        /// </summary>
+        public string DatabaseName { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public string CreateTime { get; set; }
+
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        public string UpdateTime { get; set; }
+
+        /// <summary>
+        /// 搴撳悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+        /// </summary>
+        public string DatabaseComment { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableColumnOuput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableColumnOuput.cs
new file mode 100644
index 0000000..138eb2a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableColumnOuput.cs
@@ -0,0 +1,44 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏁版嵁搴撹〃鍒�
+    /// </summary>
+    public class TableColumnOuput
+    {
+        /// <summary>
+        /// 瀛楁鍚�
+        /// </summary>
+        public string ColumnName { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙负NULL 銆怑ditby shaocx,2024-04-20銆�
+        /// </summary>
+        public bool IsNullable { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撲腑绫诲瀷
+        /// </summary>
+        public string DataType { get; set; }
+
+        /// <summary>
+        /// .NET瀛楁绫诲瀷
+        /// </summary>
+        public string NetType { get; set; }
+
+        /// <summary>
+        /// 瀛楁鎻忚堪
+        /// </summary>
+        public string ColumnComment { get; set; }
+
+        /// <summary>
+        /// 涓诲閿�
+        /// </summary>
+        public string ColumnKey { get; set; }
+
+
+        /// <summary>
+        /// 椤甸潰鍒楁樉绀烘渶灏忓搴�
+        /// </summary>
+        public string ShowTitleMinWidth { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableOutput.cs
new file mode 100644
index 0000000..db0d039
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableOutput.cs
@@ -0,0 +1,38 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏁版嵁搴撹〃鍒楄〃鍙傛暟
+    /// </summary>
+    public class TableOutput
+    {
+        /// <summary>
+        /// 搴撳悕锛堝瓧姣嶅舰寮忕殑锛�
+        /// </summary>
+        public string DatabaseName { get; set; }
+
+        /// <summary>
+        /// 搴撳悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+        /// </summary>
+        public string DatabaseComment { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ悕锛堝瓧姣嶅舰寮忕殑锛�
+        /// </summary>
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public string CreateTime { get; set; }
+
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        public string UpdateTime { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+        /// </summary>
+        public string TableComment { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/XnCodeGenOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/XnCodeGenOutput.cs
new file mode 100644
index 0000000..f2be9c3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/XnCodeGenOutput.cs
@@ -0,0 +1,55 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class XnCodeGenOutput
+    {
+        /// <summary>
+        /// 浣滆�呭鍚�
+        /// </summary>
+        public string AuthorName { get; set; }
+
+        /// <summary>
+        /// 鏄惁绉婚櫎琛ㄥ墠缂�
+        /// </summary>
+        public string TablePrefix { get; set; }
+
+        /// <summary>
+        /// 鐢熸垚鏂瑰紡
+        /// </summary>
+        public string GenerateType { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撹〃鍚�
+        /// </summary>
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撹〃鍚嶏紙缁忚繃缁勮鐨勶級
+        /// </summary>
+        public string TableNameAss { get; set; }
+
+        /// <summary>
+        /// 浠g爜鍖呭悕
+        /// </summary>
+        public string PackageName { get; set; }
+
+        /// <summary>
+        /// 鐢熸垚鏃堕棿锛坰tring绫诲瀷鐨勶級
+        /// </summary>
+        public string CreateTimestring { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撹〃涓瓧娈甸泦鍚�
+        /// </summary>
+        public List<SysCodeGenConfig> ConfigList { get; set; }
+
+        /// <summary>
+        /// 涓氬姟鍚�
+        /// </summary>
+        public string BusName { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenConfigService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenConfigService.cs
new file mode 100644
index 0000000..5260377
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenConfigService.cs
@@ -0,0 +1,54 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ICodeGenConfigService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task Add(CodeGenConfig input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="tableColumnOuputList"></param>
+        /// <param name="codeGenerate"></param>
+        /// <returns></returns>
+        Task DelAndAddList(List<TableColumnOuput> tableColumnOuputList, SysCodeGen codeGenerate);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="codeGenId"></param>
+        /// <returns></returns>
+        Task Delete(long codeGenId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<SysCodeGenConfig> Detail([FromQuery] CodeGenConfig input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<CodeGenConfig>> List([FromQuery] CodeGenConfig input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="inputList"></param>
+        /// <returns></returns>
+        Task Update(List<CodeGenConfig> inputList);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenService.cs
new file mode 100644
index 0000000..b89607e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenService.cs
@@ -0,0 +1,74 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application.CodeGen
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ICodeGenService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task AddCodeGen(AddCodeGenInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="inputs"></param>
+        /// <returns></returns>
+        Task DeleteCodeGen(List<DeleteCodeGenInput> inputs);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<SysCodeGen> GetCodeGen([FromQuery] QueryCodeGenInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        List<TableColumnOuput> GetColumnList(AddCodeGenInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="dbContextLocatorName"></param>
+        /// <returns></returns>
+        List<TableOutput> GetTableList(string dbContextLocatorName);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<SysCodeGen>> QueryCodeGenPageList([FromQuery] CodeGenPageInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<dynamic> RunLocal(SysCodeGen input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<IActionResult> RunDown(long id);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateCodeGen(UpdateCodeGenInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/Dto/ConfigInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/Dto/ConfigInput.cs
new file mode 100644
index 0000000..28b14d2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/Dto/ConfigInput.cs
@@ -0,0 +1,133 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍙傛暟閰嶇疆
+    /// </summary>
+    public class ConfigPageInput : PageInputBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Code { get; set; }
+
+        /// <summary>
+        /// 甯搁噺鎵�灞炲垎绫荤殑缂栫爜锛屾潵鑷簬鈥滃父閲忕殑鍒嗙被鈥濆瓧鍏�
+        /// </summary>
+        public virtual string GroupCode { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddConfigInput
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "鍙傛暟鍚嶇О涓嶈兘涓虹┖")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "鍙傛暟缂栫爜涓嶈兘涓虹┖")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 灞炴�у��
+        /// </summary>
+        public string Value { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄郴缁熷弬鏁帮紙Y-鏄紝N-鍚︼級
+        /// </summary>
+        public string SysFlag { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public int Status { get; set; }
+
+        /// <summary>
+        /// 甯搁噺鎵�灞炲垎绫荤殑缂栫爜锛屾潵鑷簬鈥滃父閲忕殑鍒嗙被鈥濆瓧鍏�
+        /// </summary>
+        public string GroupCode { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteConfigInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateConfigInput
+    {
+        /// <summary>
+        /// 搴旂敤Id
+        /// </summary>
+        [Required(ErrorMessage = "搴旂敤Id涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "鍙傛暟鍚嶇О涓嶈兘涓虹┖")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "鍙傛暟缂栫爜涓嶈兘涓虹┖")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 灞炴�у��
+        /// </summary>
+        public string Value { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄郴缁熷弬鏁帮紙Y-鏄紝N-鍚︼級
+        /// </summary>
+        public string SysFlag { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public int Status { get; set; }
+
+        /// <summary>
+        /// 甯搁噺鎵�灞炲垎绫荤殑缂栫爜锛屾潵鑷簬鈥滃父閲忕殑鍒嗙被鈥濆瓧鍏�
+        /// </summary>
+        public string GroupCode { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryConfigInput : BaseId
+    {
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/ISysConfigService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/ISysConfigService.cs
new file mode 100644
index 0000000..93404bb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/ISysConfigService.cs
@@ -0,0 +1,78 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysConfigService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task AddConfig(AddConfigInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task DeleteConfig(DeleteConfigInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<SysConfig> GetConfig([FromQuery] QueryConfigInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<List<SysConfig>> GetConfigList();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<SysConfig>> QueryConfigPageList([FromQuery] ConfigPageInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateConfig(UpdateConfigInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<bool> GetDemoEnvFlag();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<bool> GetCaptchaOpenFlag();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="code"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        Task UpdateConfigCache(string code, string value);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<bool> GetEnableSingleLoginFlag();
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/SysConfigService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/SysConfigService.cs
new file mode 100644
index 0000000..af54470
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/SysConfigService.cs
@@ -0,0 +1,191 @@
+using Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 绯荤粺鍙傛暟閰嶇疆鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "Config", Order = 100)]
+    [Route("api")]
+    public class SysConfigService : ISysConfigService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysConfig> _sysConfigRep;    // 鍙傛暟閰嶇疆琛ㄤ粨鍌�
+        private readonly ISysCacheService _sysCacheService;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysConfigRep"></param>
+        /// <param name="sysCacheService"></param>
+        public SysConfigService(IRepository<SysConfig> sysConfigRep, ISysCacheService sysCacheService)
+        {
+            _sysConfigRep = sysConfigRep;
+            _sysCacheService = sysCacheService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鑾峰彇绯荤粺鍙傛暟閰嶇疆
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysConfig/page")]
+        public async Task<PageResult<SysConfig>> QueryConfigPageList([FromQuery] ConfigPageInput input)
+        {
+            var name = !string.IsNullOrEmpty(input.Name?.Trim());
+            var code = !string.IsNullOrEmpty(input.Code?.Trim());
+            var groupCode = !string.IsNullOrEmpty(input.GroupCode?.Trim());
+            var configs = await _sysConfigRep.DetachedEntities
+                                             .Where((name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")),
+                                                    (code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%")),
+                                                    (groupCode, u => EF.Functions.Like(u.GroupCode, $"%{input.GroupCode.Trim()}%")))
+                                             .Where(u => u.Status != CommonStatus.DELETED)
+                                             .OrderBy(PageInputOrder.OrderBuilder(input))
+                                             .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return configs;
+        }
+
+        /// <summary>
+        /// 鑾峰彇绯荤粺鍙傛暟閰嶇疆鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysConfig/list")]
+        public async Task<List<SysConfig>> GetConfigList()
+        {
+            return await _sysConfigRep.DetachedEntities.Where(u => u.Status != CommonStatus.DELETED).ToListAsync();
+        }
+
+        /// <summary>
+        /// 澧炲姞绯荤粺鍙傛暟閰嶇疆
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysConfig/add")]
+        public async Task AddConfig(AddConfigInput input)
+        {
+            var isExist = await _sysConfigRep.DetachedEntities.AnyAsync(u => u.Name == input.Name || u.Code == input.Code);
+            if (isExist)
+                throw Oops.Oh(ErrorCode.D9000);
+
+            var config = input.Adapt<SysConfig>();
+            await config.InsertAsync();
+        }
+
+        /// <summary>
+        /// 鍒犻櫎绯荤粺鍙傛暟閰嶇疆
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysConfig/delete")]
+        public async Task DeleteConfig(DeleteConfigInput input)
+        {
+            var config = await _sysConfigRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            // 绂佹鍒犻櫎绯荤粺鍙傛暟
+            //if (config.SysFlag == YesOrNot.Y.ToString())
+            //    throw Oops.Oh(ErrorCode.D9001);
+
+            var deleteEntity = await config.DeleteNowAsync();
+            //鍒犻櫎缂撳瓨
+            await _sysCacheService.DelCacheKey(deleteEntity.Entity.Code);
+        }
+
+        /// <summary>
+        /// 鏇存柊绯荤粺鍙傛暟閰嶇疆
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysConfig/edit")]
+        public async Task UpdateConfig(UpdateConfigInput input)
+        {
+            var isExist = await _sysConfigRep.DetachedEntities.AnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id);
+            if (isExist)
+                throw Oops.Oh(ErrorCode.D9000);
+
+            var config = input.Adapt<SysConfig>();
+            await config.UpdateAsync(ignoreNullValues: true);
+            //鏇存柊缂撳瓨
+            var value = config != null ? config.Value : "";
+            await _sysCacheService.SetStringAsync(input.Code, value);
+        }
+
+        /// <summary>
+        /// 鑾峰彇绯荤粺鍙傛暟閰嶇疆
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysConfig/detail")]
+        public async Task<SysConfig> GetConfig([FromQuery] QueryConfigInput input)
+        {
+            return await _sysConfigRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+        }
+
+        /// <summary>
+        /// 鑾峰彇閰嶇疆淇℃伅
+        /// </summary>
+        /// <param name="code"></param>
+        /// <returns></returns>
+        private async Task<string> GetConfigCache(string code)
+        {
+            var value = await _sysCacheService.GetStringAsync(code);
+            if (string.IsNullOrEmpty(value))
+            {
+                var config = await _sysConfigRep.DetachedEntities.FirstOrDefaultAsync(u => u.Code == code);
+                value = config != null ? config.Value : "";
+                await _sysCacheService.SetStringAsync(code, value);
+            }
+            return value;
+        }
+
+        /// <summary>
+        /// 鏇存柊閰嶇疆缂撳瓨
+        /// </summary>
+        /// <param name="code"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        public async Task UpdateConfigCache(string code, string value)
+        {
+            await _sysCacheService.SetStringAsync(code, value);
+        }
+
+        /// <summary>
+        /// 鑾峰彇婕旂ず鐜寮�鍏虫槸鍚﹀紑鍚紝榛樿涓篺alse
+        /// </summary>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<bool> GetDemoEnvFlag()
+        {
+            var value = await GetConfigCache("DILON_DEMO_ENV_FLAG");
+            return bool.Parse(value);
+        }
+
+        /// <summary>
+        /// 鑾峰彇楠岃瘉鐮佸紑鍏虫爣璇�
+        /// </summary>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<bool> GetCaptchaOpenFlag()
+        {
+            var value = await GetConfigCache("DILON_CAPTCHA_OPEN");
+            return bool.Parse(value);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曠敤鎴风櫥褰曞紑鍏虫爣璇�
+        /// </summary>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<bool> GetEnableSingleLoginFlag()
+        {
+            var value = await GetConfigCache("DILON_ENABLE_SINGLE_LOGIN");
+            return bool.Parse(value);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataInput.cs
new file mode 100644
index 0000000..8c39247
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataInput.cs
@@ -0,0 +1,161 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using Furion.DataValidation;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀛楀吀鍊煎弬鏁�
+    /// </summary>
+    public class DictDataPageInput : PageInputBase
+    {
+        /// <summary>
+        /// 瀛楀吀绫诲瀷Id
+        /// </summary>
+        public long TypeId { get; set; }
+
+        /// <summary>
+        /// 鍊�
+        /// </summary>
+        public string Value { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryDictDataListInput
+    {
+        /// <summary>
+        /// 瀛楀吀绫诲瀷Id
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀绫诲瀷Id涓嶈兘涓虹┖"), DataValidation(ValidationTypes.Numeric)]
+        public long TypeId { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryDictDataListByCodeInput
+    {
+        /// <summary>
+        /// 瀛楀吀绫诲瀷Code
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀绫诲瀷Code涓嶈兘涓虹┖")]
+        public string Code { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddDictDataInput
+    {
+        /// <summary>
+        /// 瀛楀吀绫诲瀷Id
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀绫诲瀷Id涓嶈兘涓虹┖"), DataValidation(ValidationTypes.Numeric)]
+        public long TypeId { get; set; }
+
+        /// <summary>
+        /// 鍊�
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀鍊间笉鑳戒负绌�")]
+        public string Value { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀鍊肩紪鐮佷笉鑳戒负绌�")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public CommonStatus Status { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteDictDataInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateDictDataInput
+    {
+        /// <summary>
+        /// 瀛楀吀鍊糏d
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀鍊糏d涓嶈兘涓虹┖"), DataValidation(ValidationTypes.Numeric)]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 瀛楀吀绫诲瀷Id
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀绫诲瀷Id涓嶈兘涓虹┖"), DataValidation(ValidationTypes.Numeric)]
+        public long TypeId { get; set; }
+
+        /// <summary>
+        /// 鍊�
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀鍊间笉鑳戒负绌�")]
+        public string Value { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀鍊肩紪鐮佷笉鑳戒负绌�")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public CommonStatus Status { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class ChageStateDictDataInput : BaseId
+    {
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public CommonStatus Status { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryDictDataInput : BaseId
+    {
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataOutput.cs
new file mode 100644
index 0000000..1bc11c7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataOutput.cs
@@ -0,0 +1,45 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀛楀吀鍊煎弬鏁�
+    /// </summary>
+    public class DictDataOutput
+    {
+        /// <summary>
+        /// 瀛楀吀Id
+        /// </summary>
+        public virtual long Id { get; set; }
+
+        /// <summary>
+        /// 瀛楀吀绫诲瀷Id
+        /// </summary>
+        public long TypeId { get; set; }
+
+        /// <summary>
+        /// 鍊�
+        /// </summary>
+        public string Value { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public CommonStatus Status { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTreeOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTreeOutput.cs
new file mode 100644
index 0000000..7e1852d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTreeOutput.cs
@@ -0,0 +1,33 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀛楀吀绫诲瀷涓庡瓧鍏稿�兼瀯閫犵殑鏍�
+    /// </summary>
+    public class DictTreeOutput
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public long Pid { get; set; }
+
+        /// <summary>
+        /// 缂栫爜-瀵瑰簲瀛楀吀鍊肩殑缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О-瀵瑰簲瀛楀吀鍊肩殑value
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 瀛愯妭鐐归泦鍚�
+        /// </summary>
+        public List<DictTreeOutput> Children { get; set; } = new List<DictTreeOutput>();
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTypeInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTypeInput.cs
new file mode 100644
index 0000000..7ac5c85
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTypeInput.cs
@@ -0,0 +1,137 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀛楀吀绫诲瀷鍙傛暟
+    /// </summary>
+    public class DictTypePageInput : PageInputBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddDictTypeInput
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀绫诲瀷鍚嶇О涓嶈兘涓虹┖")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀绫诲瀷缂栫爜涓嶈兘涓虹┖")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public CommonStatus Status { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteDictTypeInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateDictTypeInput
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀绫诲瀷Id涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀绫诲瀷鍚嶇О涓嶈兘涓虹┖")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀绫诲瀷缂栫爜涓嶈兘涓虹┖")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public CommonStatus Status { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class ChangeStateDictTypeInput
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀绫诲瀷Id涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public CommonStatus Status { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DropDownDictTypeInput
+    {
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "瀛楀吀绫诲瀷缂栫爜涓嶈兘涓虹┖")]
+        public string Code { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryDictTypeInfoInput : BaseId
+    {
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictDataService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictDataService.cs
new file mode 100644
index 0000000..e0bc605
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictDataService.cs
@@ -0,0 +1,74 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysDictDataService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task AddDictData(AddDictDataInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task ChangeDictDataStatus(ChageStateDictDataInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="dictTypeId"></param>
+        /// <returns></returns>
+        Task DeleteByTypeId(long dictTypeId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task DeleteDictData(DeleteDictDataInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<SysDictData> GetDictData([FromQuery] QueryDictDataInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<SysDictData>> GetDictDataList([FromQuery] QueryDictDataListInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="dictTypeId"></param>
+        /// <returns></returns>
+        Task<List<SysDictData>> GetDictDataListByDictTypeId(long dictTypeId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<DictDataOutput>> QueryDictDataPageList([FromQuery] DictDataPageInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateDictData(UpdateDictDataInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictTypeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictTypeService.cs
new file mode 100644
index 0000000..a46272d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictTypeService.cs
@@ -0,0 +1,72 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysDictTypeService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task AddDictType(AddDictTypeInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task ChangeDictTypeStatus(ChangeStateDictTypeInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task DeleteDictType(DeleteDictTypeInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<List<DictTreeOutput>> GetDictTree();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<SysDictType> GetDictType([FromQuery] QueryDictTypeInfoInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<SysDictData>> GetDictTypeDropDown([FromQuery] DropDownDictTypeInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<List<SysDictType>> GetDictTypeList();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<SysDictType>> QueryDictTypePageList([FromQuery] DictTypePageInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateDictType(UpdateDictTypeInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictDataService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictDataService.cs
new file mode 100644
index 0000000..0264a42
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictDataService.cs
@@ -0,0 +1,196 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀛楀吀鍊兼湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings(Name = "DictData", Order = 100)]
+    [AllowAnonymous]
+    [Route("api")]
+    public class SysDictDataService : ISysDictDataService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysDictData> _sysDictDataRep;  // 瀛楀吀绫诲瀷琛ㄤ粨鍌�
+        private readonly IRepository<SysDictType> _sysDictTypeRep;  // 瀛楀吀绫诲瀷琛ㄤ粨鍌�
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysDictDataRep"></param>
+        /// <param name="sysDictTypeRep"></param>
+        public SysDictDataService(IRepository<SysDictData> sysDictDataRep, IRepository<SysDictType> sysDictTypeRep)
+        {
+            _sysDictDataRep = sysDictDataRep;
+            _sysDictTypeRep = sysDictTypeRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ瀛楀吀鍊�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysDictData/page")]
+        public async Task<PageResult<DictDataOutput>> QueryDictDataPageList([FromQuery] DictDataPageInput input)
+        {
+            bool supperAdmin = CurrentUserInfo.IsSuperAdmin;
+            var code = !string.IsNullOrEmpty(input.Code?.Trim());
+            var value = !string.IsNullOrEmpty(input.Value?.Trim());
+            var dictDatas = await _sysDictDataRep.DetachedEntities
+                                  .Where(u => u.TypeId == input.TypeId)
+                                  .Where((code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%")),
+                                         (value, u => EF.Functions.Like(u.Value, $"%{input.Value.Trim()}%")))
+                                  .Where(u => (u.Status != CommonStatus.DELETED && !supperAdmin) || (u.Status <= CommonStatus.DELETED && supperAdmin))
+                                  .OrderBy(u => u.Sort)
+                                  .ProjectToType<DictDataOutput>()
+                                  .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return dictDatas;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏌愪釜瀛楀吀绫诲瀷涓嬪瓧鍏稿�煎垪琛�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysDictData/list")]
+        public async Task<List<SysDictData>> GetDictDataList([FromQuery] QueryDictDataListInput input)
+        {
+            return await _sysDictDataRep.DetachedEntities.Where(u => u.TypeId == input.TypeId)
+                .Where(u => u.Status != CommonStatus.DELETED)
+                .OrderBy(u => u.Sort)
+                .ToListAsync();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏌愪釜瀛楀吀绫诲瀷涓嬪瓧鍏稿�煎垪琛�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysDictData/listbycode")]
+        public async Task<List<Front_Option>> GetDictDataListByCode([FromQuery] QueryDictDataListByCodeInput input)
+        {
+            var typeid = await _sysDictTypeRep.Where(x => x.Code == input.Code).Select(x => x.Id).FirstOrDefaultAsync();
+
+            return await _sysDictDataRep.DetachedEntities.Where(u => u.TypeId == typeid)
+                .Where(u => u.Status != CommonStatus.DELETED)
+                .OrderBy(u => u.Sort)
+                .Select(u => new Front_Option() { Label = u.Value, Value = u.Code })
+                .ToListAsync();
+        }
+
+        /// <summary>
+        /// 澧炲姞瀛楀吀鍊�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysDictData/add")]
+        public async Task AddDictData(AddDictDataInput input)
+        {
+            var isExist = await _sysDictDataRep.AnyAsync(u => (u.Code == input.Code || u.Value == input.Value) && u.TypeId == input.TypeId, false);
+            if (isExist) throw Oops.Oh(ErrorCode.D3003);
+
+            var dictData = input.Adapt<SysDictData>();
+            await _sysDictDataRep.InsertAsync(dictData);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎瀛楀吀鍊�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysDictData/delete")]
+        public async Task DeleteDictData(DeleteDictDataInput input)
+        {
+            var dictData = await _sysDictDataRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (dictData == null) throw Oops.Oh(ErrorCode.D3004);
+            if (dictData.Status == CommonStatus.DELETED)
+            {
+                await dictData.DeleteAsync();
+            }
+            else
+            {
+                dictData.Status = CommonStatus.DELETED;
+                dictData.IsDeleted = false;
+            }
+        }
+
+        /// <summary>
+        /// 鏇存柊瀛楀吀鍊�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysDictData/edit")]
+        public async Task UpdateDictData(UpdateDictDataInput input)
+        {
+            var isExist = await _sysDictDataRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3004);
+
+            // 鎺掗櫎鑷繁骞朵笖鍒ゆ柇涓庡叾浠栨槸鍚︾浉鍚�
+            isExist = await _sysDictDataRep.AnyAsync(u => (u.Value == input.Value || u.Code == input.Code) && u.TypeId == input.TypeId && u.Id != input.Id, false);
+            if (isExist) throw Oops.Oh(ErrorCode.D3003);
+
+            var dictData = input.Adapt<SysDictData>();
+            await _sysDictDataRep.UpdateAsync(dictData, ignoreNullValues: true);
+        }
+
+        /// <summary>
+        /// 瀛楀吀鍊艰鎯�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysDictData/detail")]
+        public async Task<SysDictData> GetDictData([FromQuery] QueryDictDataInput input)
+        {
+            return await _sysDictDataRep.FirstOrDefaultAsync(u => u.Id == input.Id, false);
+        }
+
+        /// <summary>
+        /// 淇敼瀛楀吀鍊肩姸鎬�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysDictData/changeStatus")]
+        public async Task ChangeDictDataStatus(ChageStateDictDataInput input)
+        {
+            var dictData = await _sysDictDataRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (dictData == null) throw Oops.Oh(ErrorCode.D3004);
+
+            if (!Enum.IsDefined(typeof(CommonStatus), input.Status))
+                throw Oops.Oh(ErrorCode.D3005);
+
+            dictData.Status = input.Status;
+            dictData.IsDeleted = false;;
+        }
+
+        /// <summary>
+        /// 鏍规嵁瀛楀吀绫诲瀷Id鑾峰彇瀛楀吀鍊奸泦鍚�
+        /// </summary>
+        /// <param name="dictTypeId"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<SysDictData>> GetDictDataListByDictTypeId(long dictTypeId)
+        {
+            return await _sysDictDataRep.DetachedEntities.Where(u => u.SysDictType.Id == dictTypeId)
+                                                         .Where(u => u.Status == CommonStatus.ENABLE).OrderBy(u => u.Sort)
+                                                         .ToListAsync();
+        }
+
+        /// <summary>
+        /// 鍒犻櫎瀛楀吀涓嬫墍鏈夊��
+        /// </summary>
+        /// <param name="dictTypeId"></param>
+        [NonAction]
+        public async Task DeleteByTypeId(long dictTypeId)
+        {
+            var dictDatas = await _sysDictDataRep.Where(u => u.TypeId == dictTypeId).ToListAsync();
+            await _sysDictDataRep.DeleteAsync(dictDatas);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictTypeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictTypeService.cs
new file mode 100644
index 0000000..29ed836
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictTypeService.cs
@@ -0,0 +1,187 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀛楀吀绫诲瀷鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "DictType", Order = 100)]
+    [AllowAnonymous]
+    [Route("api")]
+    public class SysDictTypeService : ISysDictTypeService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysDictType> _sysDictTypeRep;  // 瀛楀吀绫诲瀷琛ㄤ粨鍌�
+        private readonly ISysDictDataService _sysDictDataService;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysDictDataService"></param>
+        /// <param name="sysDictTypeRep"></param>
+        public SysDictTypeService(ISysDictDataService sysDictDataService,
+                                  IRepository<SysDictType> sysDictTypeRep)
+        {
+            _sysDictDataService = sysDictDataService;
+            _sysDictTypeRep = sysDictTypeRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ瀛楀吀绫诲瀷
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysDictType/page")]
+        public async Task<PageResult<SysDictType>> QueryDictTypePageList([FromQuery] DictTypePageInput input)
+        {
+            bool supperAdmin = CurrentUserInfo.IsSuperAdmin;
+            var code = !string.IsNullOrEmpty(input.Code?.Trim());
+            var name = !string.IsNullOrEmpty(input.Name?.Trim());
+            var dictTypes = await _sysDictTypeRep.DetachedEntities
+                                  .Where((code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%")),
+                                         (name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")))
+                                  .Where(u => (u.Status != CommonStatus.DELETED && !supperAdmin) || (u.Status <= CommonStatus.DELETED && supperAdmin)).OrderBy(u => u.Sort)
+                                  .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return dictTypes;
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀛楀吀绫诲瀷鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysDictType/list")]
+        public async Task<List<SysDictType>> GetDictTypeList()
+        {
+            return await _sysDictTypeRep.DetachedEntities.Where(u => u.Status != CommonStatus.DELETED).ToListAsync();
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀛楀吀绫诲瀷涓嬫墍鏈夊瓧鍏稿��
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [AllowAnonymous]
+        [HttpGet("sysDictType/dropDown")]
+        public async Task<List<SysDictData>> GetDictTypeDropDown([FromQuery] DropDownDictTypeInput input)
+        {
+            var dictType = await _sysDictTypeRep.FirstOrDefaultAsync(u => u.Code == input.Code, false);
+            if (dictType == null) throw Oops.Oh(ErrorCode.D3000);
+            return await _sysDictDataService.GetDictDataListByDictTypeId(dictType.Id);
+        }
+
+        /// <summary>
+        /// 娣诲姞瀛楀吀绫诲瀷
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysDictType/add")]
+        public async Task AddDictType(AddDictTypeInput input)
+        {
+            var isExist = await _sysDictTypeRep.AnyAsync(u => u.Name == input.Name || u.Code == input.Code, false);
+            if (isExist) throw Oops.Oh(ErrorCode.D3001);
+
+            var dictType = input.Adapt<SysDictType>();
+            await _sysDictTypeRep.InsertAsync(dictType);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎瀛楀吀绫诲瀷
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysDictType/delete")]
+        public async Task DeleteDictType(DeleteDictTypeInput input)
+        {
+            var dictType = await _sysDictTypeRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (dictType == null) throw Oops.Oh(ErrorCode.D3000);
+
+            if (dictType.Status == CommonStatus.DELETED)
+            {
+                await dictType.DeleteAsync();
+            }
+            else
+            {
+                dictType.Status = CommonStatus.DELETED;
+                dictType.IsDeleted = false;;
+            }
+        }
+
+        /// <summary>
+        /// 鏇存柊瀛楀吀绫诲瀷
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysDictType/edit"),]
+        public async Task UpdateDictType(UpdateDictTypeInput input)
+        {
+            var isExist = await _sysDictTypeRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            // 鎺掗櫎鑷繁骞朵笖鍒ゆ柇涓庡叾浠栨槸鍚︾浉鍚�
+            isExist = await _sysDictTypeRep.AnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id, false);
+            if (isExist) throw Oops.Oh(ErrorCode.D3001);
+
+            var dictType = input.Adapt<SysDictType>();
+            await _sysDictTypeRep.UpdateAsync(dictType, ignoreNullValues: true);
+        }
+
+        /// <summary>
+        /// 瀛楀吀绫诲瀷璇︽儏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysDictType/detail")]
+        public async Task<SysDictType> GetDictType([FromQuery] QueryDictTypeInfoInput input)
+        {
+            return await _sysDictTypeRep.FirstOrDefaultAsync(u => u.Id == input.Id, false);
+        }
+
+        /// <summary>
+        /// 鏇存柊瀛楀吀绫诲瀷鐘舵��
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysDictType/changeStatus")]
+        public async Task ChangeDictTypeStatus(ChangeStateDictTypeInput input)
+        {
+            var dictType = await _sysDictTypeRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (dictType == null) throw Oops.Oh(ErrorCode.D3000);
+
+            if (!Enum.IsDefined(typeof(CommonStatus), input.Status))
+                throw Oops.Oh(ErrorCode.D3005);
+
+            dictType.Status = input.Status;
+            dictType.IsDeleted = false;;
+        }
+
+        /// <summary>
+        /// 瀛楀吀绫诲瀷涓庡瓧鍏稿�兼瀯閫犵殑瀛楀吀鏍�
+        /// </summary>
+        /// <returns></returns>
+        [AllowAnonymous]
+        [HttpGet("sysDictType/tree")]
+        public async Task<List<DictTreeOutput>> GetDictTree()
+        {
+            return await _sysDictTypeRep.DetachedEntities.Select(u => new DictTreeOutput
+            {
+                Id = u.Id,
+                Code = u.Code,
+                Name = u.Name,
+                Children = u.SysDictDatas.Select(c => new DictTreeOutput
+                {
+                    Id = c.Id,
+                    Pid = c.TypeId,
+                    Code = c.Code,
+                    Name = c.Value
+                }).ToList()
+            }).ToListAsync();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpExtOrgPosOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpExtOrgPosOutput.cs
new file mode 100644
index 0000000..1eb5722
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpExtOrgPosOutput.cs
@@ -0,0 +1,38 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 闄勫睘鏈烘瀯鍜岃亴浣嶅弬鏁�
+    /// </summary>
+    public class EmpExtOrgPosOutput
+    {
+        /// <summary>
+        /// 闄勫睘鏈烘瀯id
+        /// </summary>
+        public long OrgId { get; set; }
+
+        /// <summary>
+        /// 闄勫睘鏈烘瀯缂栫爜
+        /// </summary>
+        public string OrgCode { get; set; }
+
+        /// <summary>
+        /// 闄勫睘鏈烘瀯鍚嶇О
+        /// </summary>
+        public string OrgName { get; set; }
+
+        /// <summary>
+        /// 闄勫睘鑱屼綅id
+        /// </summary>
+        public long PosId { get; set; }
+
+        /// <summary>
+        /// 闄勫睘鑱屼綅缂栫爜
+        /// </summary>
+        public string PosCode { get; set; }
+
+        /// <summary>
+        /// 闄勫睘鑱屼綅鍚嶇О
+        /// </summary>
+        public string PosName { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput.cs
new file mode 100644
index 0000000..23e2aa3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput.cs
@@ -0,0 +1,33 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍛樺伐淇℃伅鍙傛暟
+    /// </summary>
+    public class EmpOutput
+    {
+        /// <summary>
+        /// 宸ュ彿
+        /// </summary>
+        public string JobNum { get; set; }
+
+        /// <summary>
+        /// 鏈烘瀯id
+        /// </summary>
+        public string OrgId { get; set; }
+
+        /// <summary>
+        /// 鏈烘瀯鍚嶇О
+        /// </summary>
+        public string OrgName { get; set; }
+
+        /// <summary>
+        /// 鏈烘瀯涓庤亴浣嶄俊鎭�
+        /// </summary>
+        public List<EmpExtOrgPosOutput> ExtOrgPos { get; set; } = new List<EmpExtOrgPosOutput>();
+
+        /// <summary>
+        /// 鑱屼綅淇℃伅
+        /// </summary>
+        public List<EmpPosOutput> Positions { get; set; } = new List<EmpPosOutput>();
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput2.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput2.cs
new file mode 100644
index 0000000..7234081
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput2.cs
@@ -0,0 +1,38 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍛樺伐淇℃伅鍙傛暟2
+    /// </summary>
+    public class EmpOutput2
+    {
+        /// <summary>
+        /// 鍛樺伐Id
+        /// </summary>
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 宸ュ彿
+        /// </summary>
+        public string JobNum { get; set; }
+
+        /// <summary>
+        /// 鏈烘瀯Id
+        /// </summary>
+        public string OrgId { get; set; }
+
+        /// <summary>
+        /// 鏈烘瀯鍚嶇О
+        /// </summary>
+        public string OrgName { get; set; }
+
+        /// <summary>
+        /// 闄勫睘鏈烘瀯
+        /// </summary>
+        public List<EmpExtOrgPosOutput> ExtIds { get; set; } = new List<EmpExtOrgPosOutput>();
+
+        /// <summary>
+        /// 鑱屼綅闆嗗悎
+        /// </summary>
+        public List<long> PosIdList { get; set; } = new List<long>();
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpPosOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpPosOutput.cs
new file mode 100644
index 0000000..db7dc53
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpPosOutput.cs
@@ -0,0 +1,23 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍛樺伐鑱屼綅鍙傛暟
+    /// </summary>
+    public class EmpPosOutput
+    {
+        /// <summary>
+        /// 鑱屼綅Id
+        /// </summary>
+        public long PosId { get; set; }
+
+        /// <summary>
+        /// 鑱屼綅缂栫爜
+        /// </summary>
+        public string PosCode { get; set; }
+
+        /// <summary>
+        /// 鑱屼綅鍚嶇О
+        /// </summary>
+        public string PosName { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpExtOrgPosService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpExtOrgPosService.cs
new file mode 100644
index 0000000..debf571
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpExtOrgPosService.cs
@@ -0,0 +1,44 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysEmpExtOrgPosService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <param name="extIdList"></param>
+        /// <returns></returns>
+        Task AddOrUpdate(long empId, List<EmpExtOrgPosOutput> extIdList);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <returns></returns>
+        Task DeleteEmpExtInfoByUserId(long empId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <returns></returns>
+        Task<List<EmpExtOrgPosOutput>> GetEmpExtOrgPosList(long empId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="orgId"></param>
+        /// <returns></returns>
+        Task<bool> HasExtOrgEmp(long orgId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="posId"></param>
+        /// <returns></returns>
+        Task<bool> HasExtPosEmp(long posId);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpPosService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpPosService.cs
new file mode 100644
index 0000000..bffa8a2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpPosService.cs
@@ -0,0 +1,37 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysEmpPosService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <param name="posIdList"></param>
+        /// <returns></returns>
+        Task AddOrUpdate(long empId, List<long> posIdList);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <returns></returns>
+        Task DeleteEmpPosInfoByUserId(long empId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <returns></returns>
+        Task<List<EmpPosOutput>> GetEmpPosList(long empId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="posId"></param>
+        /// <returns></returns>
+        Task<bool> HasPosEmp(long posId);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpService.cs
new file mode 100644
index 0000000..6bd34e8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpService.cs
@@ -0,0 +1,60 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysEmpService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="sysEmpParam"></param>
+        /// <returns></returns>
+        Task AddOrUpdate(EmpOutput2 sysEmpParam);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <returns></returns>
+        Task DeleteEmpInfoByUserId(long empId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <returns></returns>
+        Task<EmpOutput> GetEmpInfo(long empId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <returns></returns>
+        Task<long> GetEmpOrgId(long empId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="orgId"></param>
+        /// <returns></returns>
+        Task<bool> HasOrgEmp(long orgId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="orgId"></param>
+        /// <param name="orgName"></param>
+        /// <returns></returns>
+        Task UpdateEmpOrgInfo(long orgId, string orgName);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="orgIds"></param>
+        /// <returns></returns>
+        Task<List<SysEmp>> HasOrgEmp(List<long> orgIds);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpExtOrgPosService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpExtOrgPosService.cs
new file mode 100644
index 0000000..a956cfa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpExtOrgPosService.cs
@@ -0,0 +1,94 @@
+using Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍛樺伐闄勫睘鏈烘瀯鍜岃亴浣嶆湇鍔�
+    /// </summary>
+    public class SysEmpExtOrgPosService : ISysEmpExtOrgPosService, ITransient
+    {
+        private readonly IRepository<SysEmpExtOrgPos> _sysEmpExtOrgPosRep;  // 闄勫睘鏈烘瀯琛ㄤ粨鍌�
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysEmpExtOrgPosRep"></param>
+        public SysEmpExtOrgPosService(IRepository<SysEmpExtOrgPos> sysEmpExtOrgPosRep)
+        {
+            _sysEmpExtOrgPosRep = sysEmpExtOrgPosRep;
+        }
+
+        /// <summary>
+        /// 淇濆瓨鎴栫紪杈戦檮灞炴満鏋勭浉鍏充俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        [UnitOfWork]
+        public async Task AddOrUpdate(long empId, List<EmpExtOrgPosOutput> extIdList)
+        {
+            // 鍏堝垹闄�
+            await DeleteEmpExtInfoByUserId(empId);
+
+            var extOrgPos = extIdList.Select(u => new SysEmpExtOrgPos
+            {
+                SysEmpId = empId,
+                SysOrgId = u.OrgId,
+                SysPosId = u.PosId
+            }).ToList();
+            await _sysEmpExtOrgPosRep.InsertAsync(extOrgPos);
+        }
+
+        /// <summary>
+        /// 鑾峰彇闄勫睘鏈烘瀯鍜岃亴浣嶄俊鎭�
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <returns></returns>
+        public async Task<List<EmpExtOrgPosOutput>> GetEmpExtOrgPosList(long empId)
+        {
+            return await _sysEmpExtOrgPosRep.DetachedEntities
+                                            .Where(u => u.SysEmpId == empId)
+                                            .Select(u => new EmpExtOrgPosOutput
+                                            {
+                                                OrgId = u.SysOrg.Id,
+                                                OrgCode = u.SysOrg.Code,
+                                                OrgName = u.SysOrg.Name,
+                                                PosId = u.SysPos.Id,
+                                                PosCode = u.SysPos.Code,
+                                                PosName = u.SysPos.Name
+                                            }).ToListAsync();
+        }
+
+        /// <summary>
+        /// 鏍规嵁鏈烘瀯Id鍒ゆ柇璇ラ檮灞炴満鏋勪笅鏄惁鏈夊憳宸�
+        /// </summary>
+        /// <param name="orgId"></param>
+        /// <returns></returns>
+        public async Task<bool> HasExtOrgEmp(long orgId)
+        {
+            return await _sysEmpExtOrgPosRep.DetachedEntities.AnyAsync(u => u.SysOrgId == orgId);
+        }
+
+        /// <summary>
+        /// 鏍规嵁鑱屼綅Id鍒ゆ柇璇ラ檮灞炶亴浣嶄笅鏄惁鏈夊憳宸�
+        /// </summary>
+        /// <param name="posId"></param>
+        /// <returns></returns>
+        public async Task<bool> HasExtPosEmp(long posId)
+        {
+            return await _sysEmpExtOrgPosRep.DetachedEntities.AnyAsync(u => u.SysPosId == posId);
+        }
+
+        /// <summary>
+        /// 鏍规嵁鍛樺伐Id鍒犻櫎瀵瑰簲鐨勫憳宸�-闄勫睘淇℃伅
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <returns></returns>
+        public async Task DeleteEmpExtInfoByUserId(long empId)
+        {
+            var eeoprList = await _sysEmpExtOrgPosRep.AsQueryable(u => u.SysEmpId == empId, false).ToListAsync();
+            await _sysEmpExtOrgPosRep.DeleteAsync(eeoprList);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpPosService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpPosService.cs
new file mode 100644
index 0000000..f422af6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpPosService.cs
@@ -0,0 +1,81 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍛樺伐鑱屼綅鏈嶅姟
+    /// </summary>
+    public class SysEmpPosService : ISysEmpPosService, ITransient
+    {
+        private readonly IRepository<SysEmpPos> _sysEmpPosRep;  // 鍛樺伐鑱屼綅琛ㄤ粨鍌�
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysEmpPosRep"></param>
+        public SysEmpPosService(IRepository<SysEmpPos> sysEmpPosRep)
+        {
+            _sysEmpPosRep = sysEmpPosRep;
+        }
+
+        /// <summary>
+        /// 澧炲姞鎴栫紪杈戝憳宸ヨ亴浣嶇浉鍏充俊鎭�
+        /// </summary>
+        /// <param name="empId">鍛樺伐Id锛堢敤鎴稩d锛�</param>
+        /// <param name="posIdList">鑱屼綅id闆嗗悎</param>
+        /// <returns></returns>
+        [UnitOfWork]
+        public async Task AddOrUpdate(long empId, List<long> posIdList)
+        {
+            // 鍏堝垹闄�
+            await DeleteEmpPosInfoByUserId(empId);
+
+            var empPos = posIdList.Select(u => new SysEmpPos
+            {
+                SysEmpId = empId,
+                SysPosId = u
+            }).ToList();
+            await _sysEmpPosRep.InsertAsync(empPos);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵�灞炶亴浣嶄俊鎭�
+        /// </summary>
+        /// <param name="empId">鍛樺伐Id锛堢敤鎴稩d锛�</param>
+        public async Task<List<EmpPosOutput>> GetEmpPosList(long empId)
+        {
+            return await _sysEmpPosRep.DetachedEntities
+                                      .Where(u => u.SysEmpId == empId)
+                                      .Select(u => new EmpPosOutput
+                                      {
+                                          PosId = u.SysPos.Id,
+                                          PosCode = u.SysPos.Code,
+                                          PosName = u.SysPos.Name
+                                      }).ToListAsync();
+        }
+
+        /// <summary>
+        /// 鏍规嵁鑱屼綅Id鍒ゆ柇璇ヨ亴浣嶄笅鏄惁鏈夊憳宸�
+        /// </summary>
+        /// <param name="posId"></param>
+        /// <returns></returns>
+        public async Task<bool> HasPosEmp(long posId)
+        {
+            return await _sysEmpPosRep.DetachedEntities.AnyAsync(u => u.SysPosId == posId);
+        }
+
+        /// <summary>
+        /// 鏍规嵁鍛樺伐Id鍒犻櫎瀵圭敤鐨勫憳宸�-鑱屼綅淇℃伅
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <returns></returns>
+        public async Task DeleteEmpPosInfoByUserId(long empId)
+        {
+            var sepList = await _sysEmpPosRep.AsQueryable(u => u.SysEmpId == empId, false).ToListAsync();
+            await _sysEmpPosRep.DeleteAsync(sepList);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpService.cs
new file mode 100644
index 0000000..4e711c6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpService.cs
@@ -0,0 +1,136 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Mapster;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍛樺伐鏈嶅姟
+    /// </summary>
+    public class SysEmpService : ISysEmpService, ITransient
+    {
+        private readonly IRepository<SysEmp> _sysEmpRep;  // 鍛樺伐琛ㄤ粨鍌�
+
+        private readonly ISysEmpExtOrgPosService _sysEmpExtOrgPosService;
+        private readonly ISysEmpPosService _sysEmpPosService;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysEmpRep"></param>
+        /// <param name="sysEmpExtOrgPosService"></param>
+        /// <param name="sysEmpPosService"></param>
+        public SysEmpService(IRepository<SysEmp> sysEmpRep,
+                             ISysEmpExtOrgPosService sysEmpExtOrgPosService,
+                             ISysEmpPosService sysEmpPosService)
+        {
+            _sysEmpRep = sysEmpRep;
+            _sysEmpExtOrgPosService = sysEmpExtOrgPosService;
+            _sysEmpPosService = sysEmpPosService;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛鍛樺伐鐩稿叧淇℃伅锛堝寘鎷櫥褰曪級
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <returns></returns>
+        public async Task<EmpOutput> GetEmpInfo(long empId)
+        {
+            var empInfoOutput = new EmpOutput();
+            var sysEmp = await _sysEmpRep.FirstOrDefaultAsync(u => u.Id == empId, false);
+            if (sysEmp == null) return empInfoOutput;
+
+            empInfoOutput = sysEmp.Adapt<EmpOutput>();
+            empInfoOutput.ExtOrgPos = await _sysEmpExtOrgPosService.GetEmpExtOrgPosList(empId);
+            empInfoOutput.Positions = await _sysEmpPosService.GetEmpPosList(empId);
+            return empInfoOutput;
+        }
+
+        /// <summary>
+        /// 澧炲姞鎴栫紪杈戝憳宸ョ浉鍏充俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        [UnitOfWork]
+        public async Task AddOrUpdate(EmpOutput2 sysEmpParam)
+        {
+            // 鍏堝垹闄ゅ憳宸ヤ俊鎭�
+            var emps = await _sysEmpRep.Where(u => u.Id == long.Parse(sysEmpParam.Id)).ToListAsync();
+            await _sysEmpRep.DeleteAsync(emps);
+
+            // 鍐嶆柊澧炴柊鍛樺伐淇℃伅
+            var emp = sysEmpParam.Adapt<SysEmp>();
+            await _sysEmpRep.InsertNowAsync(emp);
+
+            // 鏇存柊闄勫睘鏈烘瀯鑱屼綅淇℃伅
+            await _sysEmpExtOrgPosService.AddOrUpdate(emp.Id, sysEmpParam.ExtIds);
+
+            // 鏇存柊鑱屼綅淇℃伅
+            await _sysEmpPosService.AddOrUpdate(emp.Id, sysEmpParam.PosIdList);
+        }
+
+        /// <summary>
+        /// 淇敼鍛樺伐鐩稿叧鏈烘瀯淇℃伅
+        /// </summary>
+        /// <param name="orgId"></param>
+        /// <param name="orgName"></param>
+        /// <returns></returns>
+        public async Task UpdateEmpOrgInfo(long orgId, string orgName)
+        {
+            var emps = await _sysEmpRep.Where(u => u.OrgId == orgId).ToListAsync();
+            emps.ForEach(u =>
+            {
+                u.OrgName = orgName;
+            });
+        }
+
+        /// <summary>
+        /// 鏍规嵁鏈烘瀯Id鍒ゆ柇璇ユ満鏋勪笅鏄惁鏈夊憳宸�
+        /// </summary>
+        /// <param name="orgId"></param>
+        /// <returns></returns>
+        public async Task<bool> HasOrgEmp(long orgId)
+        {
+            return await _sysEmpRep.DetachedEntities.AnyAsync(u => u.OrgId == orgId);
+        }
+
+        /// <summary>
+        /// 鏍规嵁鍛樺伐Id鍒犻櫎瀵瑰簲鐨勫憳宸ヨ〃淇℃伅
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <returns></returns>
+        //[UnitOfWork]
+        public async Task DeleteEmpInfoByUserId(long empId)
+        {
+            // 鍒犻櫎鍛樺伐淇℃伅
+            await _sysEmpRep.DeleteAsync(empId);
+
+            // 绾ц仈鍒犻櫎瀵瑰簲鐨勫憳宸�-闄勫睘淇℃伅
+            await _sysEmpExtOrgPosService.DeleteEmpExtInfoByUserId(empId);
+
+            // 绾ц仈鍒犻櫎瀵圭敤鐨勫憳宸�-鑱屼綅淇℃伅
+            await _sysEmpPosService.DeleteEmpPosInfoByUserId(empId);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍛樺伐鏈烘瀯Id
+        /// </summary>
+        /// <param name="empId"></param>
+        /// <returns></returns>
+        public async Task<long> GetEmpOrgId(long empId)
+        {
+            return (await _sysEmpRep.FirstOrDefaultAsync(u => u.Id == empId, false)).OrgId;
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀛愭満鏋勭敤鎴�
+        /// </summary>
+        /// <param name="orgIds"></param>
+        /// <returns></returns>
+        public async Task<List<SysEmp>> HasOrgEmp(List<long> orgIds)
+        {
+            return await _sysEmpRep.DetachedEntities.Where(u => orgIds.Contains(u.OrgId)).ToListAsync();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataInput.cs
new file mode 100644
index 0000000..3c4e5d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataInput.cs
@@ -0,0 +1,34 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏋氫妇杈撳叆鍙傛暟
+    /// </summary>
+    public class EnumDataInput
+    {
+        /// <summary>
+        /// 鏋氫妇绫诲瀷鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "鏋氫妇绫诲瀷涓嶈兘涓虹┖")]
+        public string EnumName { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryEnumDataInput
+    {
+        /// <summary>
+        /// 瀹炰綋鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "瀹炰綋鍚嶇О涓嶈兘涓虹┖")]
+        public string EntityName { get; set; }
+
+        /// <summary>
+        /// 瀛楁鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "瀛楁鍚嶇О涓嶈兘涓虹┖")]
+        public string FieldName { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataOutput.cs
new file mode 100644
index 0000000..0f0deba
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataOutput.cs
@@ -0,0 +1,18 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏋氫妇杈撳嚭鍙傛暟
+    /// </summary>
+    public class EnumDataOutput
+    {
+        /// <summary>
+        /// 瀛楀吀Id
+        /// </summary>
+        public int Code { get; set; }
+
+        /// <summary>
+        /// 瀛楀吀鍊�
+        /// </summary>
+        public string Value { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/ISysEnumDataService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/ISysEnumDataService.cs
new file mode 100644
index 0000000..c864261
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/ISysEnumDataService.cs
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysEnumDataService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<dynamic> GetEnumDataList([FromQuery] EnumDataInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<dynamic> GetEnumDataListByField([FromQuery] QueryEnumDataInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/SysEnumDataService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/SysEnumDataService.cs
new file mode 100644
index 0000000..ac6653f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/SysEnumDataService.cs
@@ -0,0 +1,70 @@
+锘縰sing Admin.NET.Core;
+using Furion;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏋氫妇鍊兼湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings(Name = "EnumData", Order = 100)]
+    [AllowAnonymous]
+    [Route("api")]
+    public class SysEnumDataService : ISysEnumDataService, IDynamicApiController, ITransient
+    {
+        /// <summary>
+        /// 閫氳繃鏋氫妇绫诲瀷鑾峰彇鏋氫妇鍊奸泦鍚�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysEnumData/list")]
+        public async Task<dynamic> GetEnumDataList([FromQuery] EnumDataInput input)
+        {
+            // 鏌ユ壘鏋氫妇
+            var enumType = App.EffectiveTypes.FirstOrDefault(t => t.IsEnum && t.Name == input.EnumName);
+            if (enumType == null)
+                throw Oops.Oh(ErrorCode.D1502).StatusCode(405);
+
+            // 鑾峰彇鏋氫妇鐨凨ey鍜屾弿杩�
+            return await Task.Run(() =>
+                   EnumUtil.GetEnumDescDictionary(enumType)
+                   .Select(x => new EnumDataOutput
+                   {
+                       Code = x.Key,
+                       Value = x.Value
+                   }));
+        }
+
+        /// <summary>
+        /// 閫氳繃瀹炰綋瀛楁绫诲瀷鑾峰彇鐩稿叧闆嗗悎锛堢洰鍓嶄粎鏀寔鏋氫妇绫诲瀷锛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysEnumData/listByFiled")]
+        public async Task<dynamic> GetEnumDataListByField([FromQuery] QueryEnumDataInput input)
+        {
+            // 鑾峰彇瀹炰綋绫诲瀷灞炴��
+            var entityType = Db.GetDbContext().Model.GetEntityTypes().FirstOrDefault(u => u.ClrType.Name == input.EntityName);
+            if (entityType == null) throw Oops.Oh(ErrorCode.D1504);
+
+            // 鑾峰彇瀛楁绫诲瀷
+            var fieldType = entityType.GetProperties().FirstOrDefault(p => p.Name == input.FieldName)?.ClrType;
+            if (fieldType is not { IsEnum: true })
+                throw Oops.Oh(ErrorCode.D1503);
+
+            // 鑾峰彇鏋氫妇鐨凨ey鍜屾弿杩�
+            return await Task.Run(() =>
+                   EnumUtil.GetEnumDescDictionary(fieldType)
+                   .Select(x => new EnumDataOutput
+                   {
+                       Code = x.Key,
+                       Value = x.Value
+                   }));
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateDto.cs
new file mode 100644
index 0000000..43044e7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateDto.cs
@@ -0,0 +1,61 @@
+锘�#nullable enable
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// Excel妯℃澘杈撳嚭鍙傛暟
+    /// </summary>
+    public class SysExcelTemplateDto
+    {
+        /// <summary>
+        /// 妯℃澘鍚嶇О
+        /// </summary>
+        public string Name { get; set; } = null!;
+
+        /// <summary>
+        /// 鐗堟湰
+        /// </summary>
+        public string Version { get; set; } = null!;
+
+        /// <summary>
+        /// 鎵�灞炲簲鐢�
+        /// </summary>
+        public string AppName { get; set; } = null!;
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary>
+        public string ClassName { get; set; } = null!;
+
+        /// <summary>
+        /// 妯℃澘鏂囦欢鍚嶇О
+        /// </summary>
+        public string TemplateFileName { get; set; } = null!;
+
+        /// <summary>
+        /// 鍞竴瀛楁闆�
+        /// </summary>
+        public string UnionUniqueFields { get; set; } = null!;
+
+        /// <summary>
+        /// 琛ㄥご寮�濮嬭
+        /// </summary>
+        public int HeadStartLine { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁寮�濮嬭
+        /// </summary>
+        public int DataStartLine { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public Core.CommonStatus Status { get; set; }
+
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateInput.cs
new file mode 100644
index 0000000..e1f47bc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateInput.cs
@@ -0,0 +1,264 @@
+锘�#nullable enable
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// Excel妯℃澘鏌ヨ鍙傛暟
+    /// </summary>
+    public class SysExcelTemplateSearch : PageInputBase
+    {
+        /// <summary>
+        /// 妯℃澘鍚嶇О
+        /// </summary>
+        public virtual string? Name { get; set; }
+
+        /// <summary>
+        /// 鐗堟湰
+        /// </summary>
+        public virtual string? Version { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炲簲鐢�
+        /// </summary>
+        public virtual string? AppName { get; set; }
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary>
+        public virtual string? ClassName { get; set; }
+
+        /// <summary>
+        /// 妯℃澘鏂囦欢鍚嶇О
+        /// </summary>
+        public virtual string? TemplateFileName { get; set; }
+
+        /// <summary>
+        /// 鍞竴瀛楁闆�
+        /// </summary>
+        public virtual string? UnionUniqueFields { get; set; }
+
+        /// <summary>
+        /// 琛ㄥご寮�濮嬭
+        /// </summary>
+        public virtual int? HeadStartLine { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁寮�濮嬭
+        /// </summary>
+        public virtual int? DataStartLine { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual CommonStatus? Status { get; set; }
+
+    }
+
+    /// <summary>
+    /// Excel妯℃澘涓嶅垎椤垫煡璇㈠弬鏁�
+    /// </summary>
+    public class SysExcelTemplateSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 妯℃澘鍚嶇О
+        /// </summary>
+        public virtual string? Name { get; set; }
+
+        /// <summary>
+        /// 鐗堟湰
+        /// </summary>
+        public virtual string? Version { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炲簲鐢�
+        /// </summary>
+        public virtual string? AppName { get; set; }
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary>
+        public virtual string? ClassName { get; set; }
+
+        /// <summary>
+        /// 妯℃澘鏂囦欢鍚嶇О
+        /// </summary>
+        public virtual string? TemplateFileName { get; set; }
+
+        /// <summary>
+        /// 鍞竴瀛楁闆�
+        /// </summary>
+        public virtual string? UnionUniqueFields { get; set; }
+
+        /// <summary>
+        /// 琛ㄥご寮�濮嬭
+        /// </summary>
+        public virtual int? HeadStartLine { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁寮�濮嬭
+        /// </summary>
+        public virtual int? DataStartLine { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual CommonStatus? Status { get; set; }
+
+    }
+
+    /// <summary>
+    /// Excel妯℃澘杈撳叆鍙傛暟
+    /// </summary>
+    public class SysExcelTemplateInput
+    {
+        /// <summary>
+        /// 妯℃澘鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; } = null!;
+
+        /// <summary>
+        /// 鐗堟湰
+        /// </summary>
+        public virtual string Version { get; set; } = null!;
+
+        /// <summary>
+        /// 鎵�灞炲簲鐢�
+        /// </summary>
+        public virtual string AppName { get; set; } = null!;
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary>
+        public virtual string ClassName { get; set; } = null!;
+
+        /// <summary>
+        /// 妯℃澘鏂囦欢鍚嶇О
+        /// </summary>
+        public virtual string TemplateFileName { get; set; } = null!;
+
+        /// <summary>
+        /// 鍞竴瀛楁闆�
+        /// </summary>
+        public virtual string UnionUniqueFields { get; set; } = null!;
+
+        /// <summary>
+        /// 琛ㄥご寮�濮嬭
+        /// </summary>
+        public virtual int HeadStartLine { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁寮�濮嬭
+        /// </summary>
+        public virtual int DataStartLine { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual CommonStatus Status { get; set; }
+
+    }
+    /// <summary>
+    /// Excel妯℃澘娣诲姞杈撳叆鍙傛暟
+    /// </summary>
+    public class AddSysExcelTemplateInput : SysExcelTemplateInput
+    {
+        /// <summary>
+        /// 妯℃澘鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "妯℃澘鍚嶇О涓嶈兘涓虹┖")]
+        public override string Name { get; set; } = null!;
+
+        /// <summary>
+        /// 鐗堟湰
+        /// </summary>
+        [Required(ErrorMessage = "鐗堟湰涓嶈兘涓虹┖")]
+        public override string Version { get; set; } = null!;
+
+        /// <summary>
+        /// 鎵�灞炲簲鐢�
+        /// </summary>
+        [Required(ErrorMessage = "鎵�灞炲簲鐢ㄤ笉鑳戒负绌�")]
+        public override string AppName { get; set; } = null!;
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary>
+        [Required(ErrorMessage = "绫诲悕涓嶈兘涓虹┖")]
+        public override string ClassName { get; set; } = null!;
+
+        /// <summary>
+        /// 妯℃澘鏂囦欢鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "妯℃澘鏂囦欢鍚嶇О涓嶈兘涓虹┖")]
+        public override string TemplateFileName { get; set; } = null!;
+
+        /// <summary>
+        /// 鍞竴瀛楁闆�
+        /// </summary>
+        [Required(ErrorMessage = "鍞竴瀛楁闆嗕笉鑳戒负绌�")]
+        public override string UnionUniqueFields { get; set; } = null!;
+
+        /// <summary>
+        /// 琛ㄥご寮�濮嬭
+        /// </summary>
+        [Required(ErrorMessage = "琛ㄥご寮�濮嬭涓嶈兘涓虹┖")]
+        public override int HeadStartLine { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁寮�濮嬭
+        /// </summary>
+        [Required(ErrorMessage = "鏁版嵁寮�濮嬭涓嶈兘涓虹┖")]
+        public override int DataStartLine { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [Required(ErrorMessage = "鐘舵�佷笉鑳戒负绌�")]
+        public override CommonStatus Status { get; set; }
+
+    }
+
+
+    /// <summary>
+    /// 鏇存柊Excel妯℃澘鐘舵�佽緭鍏ュ弬鏁�
+    /// </summary>
+    public class UpdateSysExcelTemplateStatusInput : BaseId
+    {
+        /// <summary>
+        /// 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+        /// </summary>
+        public CommonStatus Status { get; set; }
+    }
+
+    /// <summary>
+    /// Excel妯℃澘鍒犻櫎杈撳叆鍙傛暟
+    /// </summary>
+    public class DeleteSysExcelTemplateInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// Excel妯℃澘鏇存柊杈撳叆鍙傛暟
+    /// </summary>
+    public class UpdateSysExcelTemplateInput : SysExcelTemplateInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+
+    }
+
+    /// <summary>
+    /// Excel妯℃澘鏌ヨ杈撳叆鍙傛暟
+    /// </summary>
+    public class QuerySysExcelTemplateInput : BaseId
+    {
+
+    }
+}
+
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateOutput.cs
new file mode 100644
index 0000000..26e9f56
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateOutput.cs
@@ -0,0 +1,73 @@
+锘�#nullable enable
+using System.ComponentModel;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// Excel妯℃澘杈撳嚭鍙傛暟
+    /// </summary>
+    [Description("Excel妯℃澘")]
+    public class SysExcelTemplateOutput
+    {
+        /// <summary>
+        /// 妯℃澘鍚嶇О
+        /// </summary>
+        [Description("妯℃澘鍚嶇О")]
+        public string Name { get; set; } = null!;
+
+        /// <summary>
+        /// 鐗堟湰
+        /// </summary>
+        [Description("鐗堟湰")]
+        public string Version { get; set; } = null!;
+
+        /// <summary>
+        /// 鎵�灞炲簲鐢�
+        /// </summary>
+        [Description("鎵�灞炲簲鐢�")]
+        public string AppName { get; set; } = null!;
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary>
+        [Description("绫诲悕")]
+        public string ClassName { get; set; } = null!;
+
+        /// <summary>
+        /// 妯℃澘鏂囦欢鍚嶇О
+        /// </summary>
+        [Description("妯℃澘鏂囦欢鍚嶇О")]
+        public string TemplateFileName { get; set; } = null!;
+
+        /// <summary>
+        /// 鍞竴瀛楁闆�
+        /// </summary>
+        [Description("鍞竴瀛楁闆�")]
+        public string UnionUniqueFields { get; set; } = null!;
+
+        /// <summary>
+        /// 琛ㄥご寮�濮嬭
+        /// </summary>
+        [Description("琛ㄥご寮�濮嬭")]
+        public int HeadStartLine { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁寮�濮嬭
+        /// </summary>
+        [Description("鏁版嵁寮�濮嬭")]
+        public int DataStartLine { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [Description("鐘舵��")]
+        public Core.CommonStatus Status { get; set; }
+
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Description("Id涓婚敭")]
+        public long Id { get; set; }
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/ISysExcelTemplateService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/ISysExcelTemplateService.cs
new file mode 100644
index 0000000..2aa2896
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/ISysExcelTemplateService.cs
@@ -0,0 +1,160 @@
+锘�#nullable enable
+using Admin.NET.Core;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// Excel妯℃澘杈撳嚭鏈嶅姟鎺ュ彛
+    /// </summary>
+    public interface ISysExcelTemplateService
+    {
+        /// <summary>
+        /// 娣诲姞Excel妯℃澘
+        /// </summary>
+        /// <param name="input">Excel妯℃澘娣诲姞鍙傛暟</param>
+        /// <returns></returns>
+        Task AddAsync(AddSysExcelTemplateInput input);
+
+        /// <summary>
+        /// 鍒犻櫎Excel妯℃澘
+        /// </summary>
+        /// <param name="input">Excel妯℃澘鍒犻櫎鍙傛暟</param>
+        /// <returns></returns>
+        Task DeleteAsync(DeleteSysExcelTemplateInput input);
+        
+        /// <summary>
+        /// 鑾峰彇鍗曚釜Excel妯℃澘
+        /// </summary>
+        /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+        /// <returns>Excel妯℃澘瀹炰緥</returns>
+        Task<SysExcelTemplateOutput?> GetAsync([FromQuery] QuerySysExcelTemplateInput input);
+        
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈡墍鏈塃xcel妯℃澘鍒楄〃
+        /// </summary>
+        /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+        /// <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+        Task<List<SysExcelTemplateOutput>> ListAsync([FromQuery] SysExcelTemplateInput input);
+        
+        /// <summary>
+        /// 鍒嗛〉鏌ヨExcel妯℃澘鍒楄〃
+        /// </summary>
+        /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+        /// <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+        Task<PageResult<SysExcelTemplateOutput>> PageAsync([FromQuery] SysExcelTemplateSearch input);
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇xcel妯℃澘鍒楄〃
+        /// </summary>
+        /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+        /// <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+        Task<List<SysExcelTemplateOutput>> ListNonPageAsync([FromQuery] SysExcelTemplateSearchNonPage input);
+
+        /// <summary>
+        /// 鏇存柊Excel妯℃澘
+        /// </summary>
+        /// <param name="input">Excel妯℃澘鏇存柊鍙傛暟</param>
+        /// <returns></returns>
+        Task UpdateAsync(UpdateSysExcelTemplateInput input);
+
+        /// <summary>
+        /// 鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+        /// </summary>
+        /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        Task<IActionResult> ToExcelAsync([FromQuery] SysExcelTemplateSearchNonPage input);
+
+
+        /// <summary>
+        /// 鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+        /// </summary>
+        /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+        /// <param name="appName"></param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        Task<IActionResult> ToExcelAsync([FromQuery] SysExcelTemplateSearchNonPage input, [FromQuery] string appName);
+
+
+
+        /// <summary>
+        /// 淇敼Excel妯℃澘鐘舵��
+        /// </summary>
+        /// <param name="input">Excel妯℃澘鐘舵�佸弬鏁�</param>
+        /// <returns></returns>
+        Task ChangeSysExcelTemplateStatusAsync(UpdateSysExcelTemplateStatusInput input);
+
+        /// <summary>
+        /// 鏍规嵁绫诲悕鍙婄増鏈彿鑾峰彇鍗曚釜Excel妯℃澘
+        /// </summary>
+        /// <param name="className">绫诲悕</param>
+        /// <param name="version">鐗堟湰鍙�</param>
+        /// <returns>Excel妯℃澘瀹炰緥</returns>
+        Task<SysExcelTemplateOutput?> GetByAppNameAndClassNameAndVersionAsync([FromQuery] string className, [FromQuery] string version);
+
+        /// <summary>
+        /// Excel妯℃澘瀵煎叆鍔熻兘
+        /// </summary>
+        /// <param name="file"> Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇Excel妯℃澘鐨凟xcel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        Task<IActionResult> DownloadExcelTemplate(string version);
+
+        /// <summary>
+        /// 鑾峰彇瀹炰綋鍚嶇О鑾峰彇灞炴�ч泦鍚�
+        /// </summary>
+        /// <param name="className">瀹炰綋鍚嶇О</param>
+        /// <returns></returns>
+        Task<List<TableColumn>> GetColumnListAsync([FromQuery] string className);
+
+        /// <summary>
+        /// 鑾峰彇妯℃澘鎻愮ず瀛楃
+        /// </summary>
+        /// <param name="className">瀹炰綋鍚嶇О</param>
+        /// <returns></returns>
+        Task<string> ParseTemplateHintAsync([FromQuery] string className);
+
+
+        /// <summary>
+        /// 鏍规嵁绫诲悕鏌ヨ鍏舵煡璇㈠敮涓�绫诲瀷
+        /// </summary>
+        /// <param name="className">绫诲瀷鍚�</param>
+        /// <returns></returns>
+        Task<List<TableColumn>> QueryUniqueColumns(string className);
+
+
+        /// <summary>
+        /// 鏍规嵁绫诲悕鏌ヨ鍏舵煡璇㈣〃淇℃伅
+        /// </summary>
+        /// <param name="className">绫诲瀷鍚�</param>
+        /// <returns></returns>
+        Task<TableInfo?> QueryTable(string className);
+
+
+        /// <summary>
+        /// 鏍规嵁绫诲悕鐢熸垚鐩稿簲鐨勭瀛愪唬鐮�
+        /// </summary>
+        /// <param name="className">绫诲悕</param>
+        /// <param name="prefix">鍓嶇紑</param>
+        /// <returns></returns>
+        Task<string> ParseSeedData([FromQuery] string className, string prefix);
+
+        /// <summary>
+        /// 鏍规嵁鍓嶇紑鑾峰彇鏈�澶D鍔�1
+        /// </summary>
+        /// <param name="prefix">鍓嶇紑</param>
+        /// <returns></returns>
+        Task<long> ParseId([FromQuery] string prefix);
+
+
+
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/SysExcelTemplateService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/SysExcelTemplateService.cs
new file mode 100644
index 0000000..d8c1345
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/SysExcelTemplateService.cs
@@ -0,0 +1,485 @@
+锘縰sing Furion;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using System.Linq.Dynamic.Core;
+using System.Text;
+using System.Web;
+using Admin.NET.Core;
+using Microsoft.AspNetCore.Authorization;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// Excel妯℃澘鏈嶅姟
+    /// </summary>
+    [Route("api")]
+    [ApiDescriptionSettings(Name = "ExcelTemplate", Order = 100)]
+    [AllowAnonymous]
+    public class SysExcelTemplateService : ISysExcelTemplateService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysExcelTemplate, MasterDbContextLocator> _sysExcelTemplateRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly static object _lock = new();
+
+        /// <summary>
+        /// Excel妯℃澘鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysExcelTemplateRep"></param>
+        /// <param name="sysDictTypeRep"></param>
+        /// <param name="sysDictDataRep"></param>
+        public SysExcelTemplateService(
+            IRepository<SysExcelTemplate, MasterDbContextLocator> sysExcelTemplateRep,
+            IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+            IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+        )
+        {
+            _sysExcelTemplateRep = sysExcelTemplateRep;
+            _sysDictTypeRep = sysDictTypeRep;
+            _sysDictDataRep = sysDictDataRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨExcel妯℃澘
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysExcelTemplate/page")]
+        public async Task<PageResult<SysExcelTemplateOutput>> PageAsync([FromQuery] SysExcelTemplateSearch input)
+        {
+            var pName = input.Name?.Trim() ?? "";
+            var pVersion = input.Version?.Trim() ?? "";
+            var pAppName = input.AppName?.Trim() ?? "";
+            var pClassName = input.ClassName?.Trim() ?? "";
+            var pTemplateFileName = input.TemplateFileName?.Trim() ?? "";
+            var pUnionUniqueFields = input.UnionUniqueFields?.Trim() ?? "";
+            var pStatus = input.Status;
+            var sysExcelTemplates = await _sysExcelTemplateRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pName), u => EF.Functions.Like(u.Name, $"%{pName}%"))
+                .Where(!string.IsNullOrEmpty(pVersion), u => EF.Functions.Like(u.Version, $"%{pVersion}%"))
+                .Where(!string.IsNullOrEmpty(pAppName), u => EF.Functions.Like(u.AppName, $"%{pAppName}%"))
+                .Where(!string.IsNullOrEmpty(pClassName), u => EF.Functions.Like(u.ClassName, $"%{pClassName}%"))
+                .Where(!string.IsNullOrEmpty(pTemplateFileName), u => EF.Functions.Like(u.TemplateFileName, $"%{pTemplateFileName}%"))
+                .Where(!string.IsNullOrEmpty(pUnionUniqueFields), u => EF.Functions.Like(u.UnionUniqueFields, $"%{pUnionUniqueFields}%"))
+                .Where(pStatus != null, u => u.Status == pStatus)
+            .OrderBy(PageInputOrder.OrderBuilder(input))
+            .ProjectToType<SysExcelTemplateOutput>()
+            .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return sysExcelTemplates;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇xcel妯℃澘鍒楄〃
+        /// </summary>
+        /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+        /// <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+        [HttpGet("sysExcelTemplate/listNonPage")]
+        public async Task<List<SysExcelTemplateOutput>> ListNonPageAsync([FromQuery] SysExcelTemplateSearchNonPage input)
+        {
+            var pName = input.Name?.Trim() ?? "";
+            var pVersion = input.Version?.Trim() ?? "";
+            var pAppName = input.AppName?.Trim() ?? "";
+            var pClassName = input.ClassName?.Trim() ?? "";
+            var pTemplateFileName = input.TemplateFileName?.Trim() ?? "";
+            var pUnionUniqueFields = input.UnionUniqueFields?.Trim() ?? "";
+            var pStatus = input.Status;
+            var sysExcelTemplates = await _sysExcelTemplateRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pName), u => EF.Functions.Like(u.Name, $"%{pName}%"))
+                .Where(!string.IsNullOrEmpty(pVersion), u => EF.Functions.Like(u.Version, $"%{pVersion}%"))
+                .Where(!string.IsNullOrEmpty(pAppName), u => EF.Functions.Like(u.AppName, $"%{pAppName}%"))
+                .Where(!string.IsNullOrEmpty(pClassName), u => EF.Functions.Like(u.ClassName, $"%{pClassName}%"))
+                .Where(!string.IsNullOrEmpty(pTemplateFileName), u => EF.Functions.Like(u.TemplateFileName, $"%{pTemplateFileName}%"))
+                .Where(!string.IsNullOrEmpty(pUnionUniqueFields), u => EF.Functions.Like(u.UnionUniqueFields, $"%{pUnionUniqueFields}%"))
+                .Where(pStatus != null, u => u.Status == pStatus)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<SysExcelTemplateOutput>()
+            .ToListAsync();
+            return sysExcelTemplates;
+        }
+
+        /// <summary>
+        /// 澧炲姞Excel妯℃澘
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysExcelTemplate/add")]
+        public async Task AddAsync(AddSysExcelTemplateInput input)
+        {
+            var sysExcelTemplate = input.Adapt<SysExcelTemplate>();
+            await _sysExcelTemplateRep.InsertAsync(sysExcelTemplate);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎Excel妯℃澘
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysExcelTemplate/delete")]
+        public async Task DeleteAsync(DeleteSysExcelTemplateInput input)
+        {
+            var sysExcelTemplate = await _sysExcelTemplateRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _sysExcelTemplateRep.DeleteAsync(sysExcelTemplate);
+        }
+
+        /// <summary>
+        /// 鏇存柊Excel妯℃澘
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysExcelTemplate/edit")]
+        public async Task UpdateAsync(UpdateSysExcelTemplateInput input)
+        {
+            var isExist = await _sysExcelTemplateRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+            var sysExcelTemplate = input.Adapt<SysExcelTemplate>();
+            await _sysExcelTemplateRep.UpdateAsync(sysExcelTemplate, ignoreNullValues: false);
+        }
+
+        /// <summary>
+        /// 淇敼Excel妯℃澘鐘舵��
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysExcelTemplate/changeStatus")]
+        public async Task ChangeSysExcelTemplateStatusAsync(UpdateSysExcelTemplateStatusInput input)
+        {
+            var sysExcelTemplate = await _sysExcelTemplateRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (!Enum.IsDefined(typeof(CommonStatus), input.Status))
+                throw Oops.Oh(ErrorCode.D3005);
+            sysExcelTemplate.Status = input.Status;
+        }
+
+        /// <summary>
+        /// 鑾峰彇Excel妯℃澘
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysExcelTemplate/detail")]
+        public async Task<SysExcelTemplateOutput?> GetAsync([FromQuery] QuerySysExcelTemplateInput input)
+        {
+            return (await _sysExcelTemplateRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id))?.Adapt<SysExcelTemplateOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇Excel妯℃澘鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysExcelTemplate/list")]
+        public async Task<List<SysExcelTemplateOutput>> ListAsync([FromQuery] SysExcelTemplateInput input)
+        {
+            return await _sysExcelTemplateRep.DetachedEntities.ProjectToType<SysExcelTemplateOutput>().ToListAsync();
+        }
+
+        /// <summary>
+        /// 鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+        /// </summary>
+        /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("sysExcelTemplate/toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] SysExcelTemplateSearchNonPage input)
+        {
+            var sysExcelTemplateList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(sysExcelTemplateList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await GetByAppNameAndClassNameAndVersionAsync("SysExcelTemplate", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel((App.Configuration["Excel:Template"] ?? "") + (App.Configuration["AppName"] ?? "") + @"\" + excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        /// <summary>
+        /// 鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+        /// </summary>
+        /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+        /// <param name="appName"></param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("sysExcelTemplate/toExcelByAppName")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] SysExcelTemplateSearchNonPage input, [FromQuery] string appName)
+        {
+            var sysExcelTemplateList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(sysExcelTemplateList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await GetByAppNameAndClassNameAndVersionAsync("SysExcelTemplate", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel((App.Configuration["Excel:Template"] ?? "") + appName + @"\" + excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        /// <summary>
+        /// 鏍规嵁绫诲悕鍙婄増鏈彿鑾峰彇鍗曚釜Excel妯℃澘
+        /// </summary>
+        /// <param name="className">绫诲悕</param>
+        /// <param name="version">鐗堟湰鍙�</param>
+        /// <returns>Excel妯℃澘瀹炰緥</returns>
+        [HttpGet("sysExcelTemplate/getAppNameAndByClassNameAndVersion")]
+        public async Task<SysExcelTemplateOutput?> GetByAppNameAndClassNameAndVersionAsync([FromQuery] string className, [FromQuery] string version)
+        {
+            return await _sysExcelTemplateRep.DetachedEntities.ProjectToType<SysExcelTemplateOutput>()
+                .FirstOrDefaultAsync(u => u.ClassName == className && u.Version == version);
+        }
+
+        /// <summary>
+        /// 瀵煎叆Excel妯℃澘鏂囦欢
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("sysExcelTemplate/fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await GetByAppNameAndClassNameAndVersionAsync("SysExcelTemplate", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++)
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<SysExcelTemplateOutput> sysExcelTemplateList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, SysExcelTemplateOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = sysExcelTemplateList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<SysExcelTemplate>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if (!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<SysExcelTemplate, SysExcelTemplateOutput>(selectKeys);
+            List<SysExcelTemplate> updates = new();
+            List<SysExcelTemplate> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var sysExcelTemplateExistSubList = _sysExcelTemplateRep.Where(filter).Select(selector).ToList();
+                    sysExcelTemplateExistSubList.ForEach(x =>
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+                foreach (var sysExcelTemplate in sysExcelTemplateList)
+                {
+                    if (sysExcelTemplate.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(sysExcelTemplate.Adapt<SysExcelTemplate>());
+                    }
+                    else
+                    {
+                        adds.Add(sysExcelTemplate.Adapt<SysExcelTemplate>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _sysExcelTemplateRep.Update(x));
+
+                var maxId = _sysExcelTemplateRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);
+                Db.GetDbContext().Set<SysExcelTemplate>().AddRange(adds);
+                Db.GetDbContext().SaveChanges();
+            }
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉�</returns>
+        [HttpGet("sysExcelTemplate/downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await GetByAppNameAndClassNameAndVersionAsync("SysExcelTemplate", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+
+            var path = Path.Combine((App.Configuration["Excel:Template"] ?? "") + (App.Configuration["AppName"] ?? "") + @"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀹炰綋鍚嶇О鑾峰彇灞炴�ч泦鍚�
+        /// </summary>
+        /// <param name="className">瀹炰綋鍚嶇О</param>
+        /// <returns></returns>
+        [HttpGet("sysExcelTemplate/getColumnList")]
+        public async Task<List<TableColumn>> GetColumnListAsync([FromQuery] string className)
+        {
+            var dbContext = Db.GetDbContext();
+
+            var entityType = dbContext.GetService<IDesignTimeModel>().Model.GetEntityTypes()
+                .FirstOrDefault(u => u.ClrType.Name == className);
+            if (entityType == null) return new List<TableColumn>();
+
+
+            var type = entityType.ClrType;
+            if (type == null) return new List<TableColumn>();
+
+            var columnList = new List<string>()
+            {
+                "Id", "CreatedTime", "UpdatedTime", "CreatedUserId", "CreatedUserName", "UpdatedUserId", "UpdatedUserName", "IsDeleted"
+            };
+
+            List<TableColumn> columns = type.GetProperties()
+                .Select(propertyInfo => entityType.FindProperty(propertyInfo.Name))
+                .Where(p => p != null && !columnList.Contains(p.Name)).Select(p =>
+                {
+                    var propInfo = p?.PropertyInfo;
+                    var type = propInfo?.PropertyType;
+                    var typeName = type?.ToString() ?? string.Empty;
+                    return new TableColumn
+                    {
+                        IsRequired = FieldUtil.IsRequired(p ?? null!, typeName),
+                        ColumnName = p?.Name,
+                        ColumnKey = ("Id".Equals(p?.Name)).ToString(),
+                        DataType = typeName,
+                        ColumnComment = p?.GetComment()
+                    };
+                }).ToList();
+
+            columns.ForEach(x => x.Remark = x.DataType.GetColumnRemark());
+            await Task.CompletedTask;
+            return columns;
+        }
+
+        /// <summary>
+        /// 鎹被鍚嶆煡璇㈠叾鏌ヨ鏍囬噺绫诲瀷
+        /// </summary>
+        /// <param name="className">绫诲悕</param>
+        /// <returns></returns>
+        [HttpGet("sysExcelTemplate/queryUniqueColumns")]
+        public async Task<List<TableColumn>> QueryUniqueColumns(string className)
+        {
+            var dbContext = Db.GetDbContext();//榛樿鏁版嵁搴�
+            var entityType = dbContext?.GetService<IDesignTimeModel>().Model.GetEntityTypes().FirstOrDefault(u => u.ClrType.Name == className);
+            await Task.CompletedTask;
+            return TypeUtil.GetUniqueColumns(entityType);
+        }
+
+        /// <summary>
+        /// 鏍规嵁绫诲悕鏌ヨ鍏舵煡璇㈣〃淇℃伅
+        /// </summary>
+        /// <param name="className">绫诲瀷鍚�</param>
+        /// <returns></returns>
+        [HttpGet("sysExcelTemplate/queryTable")]
+        public async Task<TableInfo?> QueryTable(string className)
+        {
+            var dbContext = Db.GetDbContext();//榛樿鏁版嵁搴�
+            var entityType = dbContext?.GetService<IDesignTimeModel>().Model.GetEntityTypes().FirstOrDefault(u => u.ClrType.Name == className);
+            await Task.CompletedTask;
+            return TypeUtil.GetTableInfo(entityType);
+        }
+
+        /// <summary>
+        /// 鏍规嵁绫诲悕鐢熸垚鐩稿簲鐨勭瀛愪唬鐮�
+        /// </summary>
+        /// <param name="className">绫诲悕</param>
+        /// <param name="prefix">鍓嶇紑</param>
+        /// <returns></returns>
+        [HttpGet("sysExcelTemplate/parseSeedData")]
+        public async Task<string> ParseSeedData([FromQuery] string className, string prefix)
+        {
+            var mId = await ParseId(prefix);
+
+            var tableInfo = await QueryTable(className);
+            var appName = App.Configuration["AppName"];
+            // var folder = App.Configuration["Desktop"];
+            var folder = System.IO.Path.Combine(App.WebHostEnvironment.WebRootPath, "AutoCreateFile", "ExcelTemplateTxt");
+            var unionUniqueColumns = await QueryUniqueColumns(className);
+            string unionUniqueFields = "";
+            unionUniqueColumns.ForEach(x => unionUniqueFields += x.ColumnName + ",");
+            if (unionUniqueFields.EndsWith(",")) unionUniqueFields = unionUniqueFields[..^1];
+
+            string fileName = DateTime.Now.Ticks + ".txt";
+            string msgExcelTemplate = $"new SysExcelTemplate {{ Id={mId++}, Name=\"{tableInfo?.TableComment ?? ""}\", Version = \"v1\" , ClassName=\"{tableInfo?.TableName ?? ""}\", TemplateFileName=\"{(tableInfo?.TableName ?? "").ToUnderLine()}_v1.xlsx\", UnionUniqueFields=\"{unionUniqueFields}\", AppName = \"{appName}\", HeadStartLine = 1, DataStartLine = 2, Status = 0}},";
+            FileUtil.WriteLine(folder, fileName, msgExcelTemplate);
+
+            msgExcelTemplate = $"new SysExcelTemplate {{ Id={mId++}, Name=\"{tableInfo?.TableComment ?? ""}\", Version = \"v2\" , ClassName=\"{tableInfo?.TableName ?? ""}\", TemplateFileName=\"{(tableInfo?.TableName ?? "").ToUnderLine()}_v2.xlsx\", UnionUniqueFields=\"{unionUniqueFields}\", AppName = \"{appName}\", HeadStartLine = 11, DataStartLine = 12, Status = 0}},";
+            FileUtil.WriteLine(folder, fileName, msgExcelTemplate);
+            FileUtil.WriteLine(folder, fileName, "");
+
+            return Path.Combine(folder, fileName);
+        }
+
+        /// <summary>
+        /// 鑾峰彇妯℃澘鎻愮ず瀛楃
+        /// </summary>
+        /// <param name="className">瀹炰綋鍚嶇О</param>
+        /// <returns></returns>
+        [HttpGet("sysExcelTemplate/parseTemplateHint")]
+        public async Task<string> ParseTemplateHintAsync([FromQuery] string className)
+        {
+            List<TableColumn> tableColumns = await GetColumnListAsync(className);
+            var folder = App.Configuration["Desktop"];
+            string fileName = DateTime.Now.Ticks + ".txt";
+
+            FileUtil.WriteLine(folder, fileName, "");
+            FileUtil.WriteLine(folder, fileName, "1.鏀寔Excel2007鍙婁互涓婄増鏈枃浠躲��");
+            FileUtil.WriteLine(folder, fileName, "2.瀵煎叆鏂板鏁版嵁鏃朵笉鑳借秴杩�5000琛屻��");
+            FileUtil.WriteLine(folder, fileName, "3.瀵煎叆鏇存柊鏁版嵁鏃朵笉鑳借秴杩�2000琛屻��");
+
+            FileUtil.WriteLine(folder, fileName, "");
+            FileUtil.WriteLine(folder, fileName, "");
+
+            Dictionary<string, string> typeNameDict = new()
+            {
+                { "System.String", "鏂囨湰銆傚: 閽熷瓭鏈�"},
+                { "System.Int32", "鏁板瓧銆傚: 4377"},
+                { "System.Int64", "鏁板瓧銆傚: 4377"},
+                { "System.DateTimeOffset", "鏃ユ湡銆� 濡�: 2023/3/1"},
+                { "System.DateTime", "鏃ユ湡銆� 濡�: 2023/3/1"}
+            };
+
+            tableColumns.ForEach(x =>
+            {
+                string text = "";
+                text += x.ColumnComment + "(" + (x.IsRequired ? "蹇呭~" : "闈炲繀濉�") + "): ";
+                text += typeNameDict.ContainsKey(x.DataType) ? typeNameDict[x.DataType] : ("鏂囨湰銆� 鍙�夐」涓�: " + x.Remark);
+                FileUtil.WriteLine(folder, fileName, text);
+            });
+
+            return Path.Combine(folder, fileName);
+        }
+
+        /// <summary>
+        /// 鏍规嵁绫诲悕鑾峰彇鏈�澶D鍔�1
+        /// </summary>
+        /// <param name="prefix">鍓嶇紑</param>
+        /// <returns></returns>
+        [HttpGet("sysExcelTemplate/parseId")]
+        public async Task<long> ParseId([FromQuery] string prefix)
+        {
+            var lastExcelTemplate = await _sysExcelTemplateRep.DetachedEntities.OrderByDescending(x => x.Id).FirstOrDefaultAsync();
+
+            var mId = (lastExcelTemplate?.Id + 1) ?? 1;
+            mId = long.Parse(prefix + mId.ToString()[1..]);
+            return mId;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileInput.cs
new file mode 100644
index 0000000..828226e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileInput.cs
@@ -0,0 +1,40 @@
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 涓婁紶鏂囦欢鍙傛暟
+    /// </summary>
+    public class FilePageInput : PageInputBase
+    {
+        /// <summary>
+        /// 鏂囦欢瀛樺偍浣嶇疆锛�1:闃块噷浜戯紝2:鑵捐浜戯紝3:minio锛�4:鏈湴锛�
+        /// </summary>
+        public int FileLocation { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢浠撳簱
+        /// </summary>
+        public string FileBucket { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢鍚嶇О锛堜笂浼犳椂鍊欑殑鏂囦欢鍚嶏級
+        /// </summary>
+        public string FileOriginName { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteFileInfoInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryFileInfoInput : BaseId
+    {
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileOutput.cs
new file mode 100644
index 0000000..30a9b89
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileOutput.cs
@@ -0,0 +1,85 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 涓婁紶鏂囦欢鍙傛暟
+    /// </summary>
+    public class FileOutput
+    {
+        /// <summary>
+        /// 鏂囦欢Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢瀛樺偍浣嶇疆锛�1:闃块噷浜戯紝2:鑵捐浜戯紝3:minio锛�4:鏈湴锛�
+        /// </summary>
+        public int FileLocation { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢浠撳簱
+        /// </summary>
+        public string FileBucket { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢鍚嶇О锛堜笂浼犳椂鍊欑殑鏂囦欢鍚嶏級
+        /// </summary>
+        public string FileOriginName { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢鍚庣紑
+        /// </summary>
+        public string FileSuffix { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢澶у皬kb
+        /// </summary>
+        public long FileSizeKb { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢澶у皬淇℃伅锛岃绠楀悗鐨�
+        /// </summary>
+        public string FileSizeInfo { get; set; }
+
+        /// <summary>
+        /// 瀛樺偍鍒癰ucket鐨勫悕绉帮紙鏂囦欢鍞竴鏍囪瘑id锛�
+        /// </summary>
+        public string FileObjectName { get; set; }
+
+        /// <summary>
+        /// 瀛樺偍璺緞
+        /// </summary>
+        public string FilePath { get; set; }
+    }
+
+    /// <summary>
+    /// k-form-design鎵�闇�鍙傛暟瑕佹眰
+    /// </summary>
+    public class KFormFileOutput
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public int code { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public KFormFileIrem Data { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class KFormFileIrem
+    {
+        /// <summary>
+        /// 鏂囦欢ID
+        /// </summary>
+        public long FileId { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢涓嬭浇鍦板潃
+        /// </summary>
+        public string Url { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/ISysFileService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/ISysFileService.cs
new file mode 100644
index 0000000..6d49674
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/ISysFileService.cs
@@ -0,0 +1,90 @@
+using Admin.NET.Core;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysFileService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task DeleteFileInfo(DeleteFileInfoInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<IActionResult> DownloadFileInfo([FromQuery] QueryFileInfoInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<SysFile> GetFileInfo([FromQuery] QueryFileInfoInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<SysFile>> GetFileInfoList([FromQuery] FileOutput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<IActionResult> PreviewFileInfo([FromQuery] QueryFileInfoInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<FileOutput>> QueryFileInfoPageList([FromQuery] FilePageInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="file"></param>
+        /// <returns></returns>
+        Task<long> UploadFileAvatar(IFormFile file);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="file"></param>
+        /// <returns></returns>
+        Task<long> UploadFileDefault(IFormFile file);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="file"></param>
+        /// <returns></returns>
+        Task UploadFileDocument(IFormFile file);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="file"></param>
+        /// <returns></returns>
+        Task UploadFileShop(IFormFile file);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="file"></param>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        Task<long> UploadFile(IFormFile file, string key);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/SysFileService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/SysFileService.cs
new file mode 100644
index 0000000..2e7b9f9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/SysFileService.cs
@@ -0,0 +1,380 @@
+using Admin.NET.Core;
+using Furion;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Furion.RemoteRequest.Extensions;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Configuration;
+using OnceMi.AspNetCore.OSS;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏂囦欢鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "File", Order = 100)]
+    [Route("api")]
+    public class SysFileService : ISysFileService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysFile> _sysFileInfoRep;  // 鏂囦欢淇℃伅琛ㄤ粨鍌�
+
+        private readonly IConfiguration _configuration;
+
+        private readonly IOSSServiceFactory _oSSServiceFactory;
+
+        private readonly string bucketName = "bucketName";
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysFileInfoRep"></param>
+        /// <param name="configuration"></param>
+        /// <param name="oSSServiceFactory"></param>
+        public SysFileService(IRepository<SysFile> sysFileInfoRep,
+                              IConfiguration configuration,
+                              IOSSServiceFactory oSSServiceFactory)
+        {
+            _sysFileInfoRep = sysFileInfoRep;
+            _configuration = configuration;
+            _oSSServiceFactory = oSSServiceFactory;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鑾峰彇鏂囦欢鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysFileInfo/page")]
+        public async Task<PageResult<FileOutput>> QueryFileInfoPageList([FromQuery] FilePageInput input)
+        {
+            var fileBucket = !string.IsNullOrEmpty(input.FileBucket?.Trim());
+            var fileOriginName = !string.IsNullOrEmpty(input.FileOriginName?.Trim());
+            var files = await _sysFileInfoRep.DetachedEntities
+                                             .Where(input.FileLocation > 0, u => u.FileLocation == input.FileLocation)
+                                             .Where(fileBucket, u => EF.Functions.Like(u.FileBucket, $"%{input.FileBucket.Trim()}%"))
+                                             .Where(fileOriginName, u => EF.Functions.Like(u.FileOriginName, $"%{input.FileOriginName.Trim()}%"))
+                                             .ProjectToType<FileOutput>()
+                                             .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return files;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏂囦欢鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysFileInfo/list")]
+        public async Task<List<SysFile>> GetFileInfoList([FromQuery] FileOutput input)
+        {
+            return await _sysFileInfoRep.DetachedEntities.ToListAsync();
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏂囦欢
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysFileInfo/delete")]
+        public async Task DeleteFileInfo(DeleteFileInfoInput input)
+        {
+            var file = await _sysFileInfoRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (file != null)
+            {
+                await file.DeleteAsync();
+
+                switch (file.FileLocation)
+                {
+                    case (int)FileLocation.MINIO:
+                        await _oSSServiceFactory.Create().RemoveObjectAsync(file.FileBucket, string.Concat(file.FilePath, "/", file.FileObjectName));
+                        break;
+
+                    case (int)FileLocation.ALIYUN:
+                        await _oSSServiceFactory.Create("Aliyun").RemoveObjectAsync(file.FileBucket, string.Concat(file.FilePath, "/", file.FileObjectName));
+                        break;
+
+                    case (int)FileLocation.TENCENT:
+                        await _oSSServiceFactory.Create("QCloud").RemoveObjectAsync(file.FileBucket, string.Concat(file.FilePath, "/", file.FileObjectName));
+                        break;
+
+                    default:
+                        var filePath = Path.Combine(App.WebHostEnvironment.WebRootPath, file.FilePath, file.FileObjectName);
+                        if (File.Exists(filePath))
+                            File.Delete(filePath);
+                        break;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏂囦欢璇︽儏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysFileInfo/detail")]
+        public async Task<SysFile> GetFileInfo([FromQuery] QueryFileInfoInput input)
+        {
+            var file = await _sysFileInfoRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (file == null)
+                throw Oops.Oh(ErrorCode.D8000);
+            return file;
+        }
+
+        /// <summary>
+        /// 棰勮鏂囦欢
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysFileInfo/preview")]
+        public async Task<IActionResult> PreviewFileInfo([FromQuery] QueryFileInfoInput input)
+        {
+            return await DownloadFileInfo(input);
+        }
+
+        /// <summary>
+        /// 涓婁紶鏂囦欢
+        /// </summary>
+        /// <param name="file"></param>
+        /// <returns></returns>
+        [HttpPost("sysFileInfo/upload")]
+        public async Task<long> UploadFileDefault(IFormFile file)
+        {
+            //瀵硅薄瀛樺偍鐨刱ey
+            const string key = "UploadFile:Default";
+            // 鍙互璇诲彇绯荤粺閰嶇疆鏉ュ喅瀹氬皢鏂囦欢瀛樺偍鍒颁粈涔堝湴鏂�
+            return await UploadFile(file, key, FileLocation.LOCAL);
+        }
+
+        /// <summary>
+        /// 涓婁紶鏂囦欢(k-form-design)
+        /// </summary>
+        /// <param name="file"></param>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        [HttpPost("sysFileInfo/kformormupload")]
+        [AllowAnonymous]//鏆傛病鎵惧埌k-form-design缁勪欢涓婁紶鏂囦欢濡備綍澧炲姞head
+        [NonUnify]//浜ょ粰k-form-design缁勪欢澶勭悊鏁版嵁涓嶉渶瑕佽鑼冨寲杩斿洖鏁版嵁
+        public async Task<KFormFileOutput> KFormUploadFileDefault(IFormFile file, string key)
+        {
+            long FileId = 0;
+
+            try
+            {
+                //瀵硅薄瀛樺偍鐨刱ey
+                if (string.IsNullOrEmpty(key))
+                    key = "UploadFile:Default";
+                // 鍙互璇诲彇绯荤粺閰嶇疆鏉ュ喅瀹氬皢鏂囦欢瀛樺偍鍒颁粈涔堝湴鏂�
+                FileId = await UploadFile(file, key, FileLocation.LOCAL);
+            }
+            catch
+            {
+                return new KFormFileOutput() { code = 1 };
+            }
+
+            return new KFormFileOutput()
+            {
+                code = 0,
+                Data = new KFormFileIrem()
+                {
+                    FileId = FileId,
+                    Url = $"/api/sysFileInfo/download?id={FileId}"
+                }
+            };
+        }
+
+        /// <summary>
+        /// 涓嬭浇鏂囦欢
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysFileInfo/download")]
+        [AllowAnonymous]
+        public async Task<IActionResult> DownloadFileInfo([FromQuery] QueryFileInfoInput input)
+        {
+            var file = await GetFileInfo(input);
+            var fileName = HttpUtility.UrlEncode(file.FileOriginName, Encoding.GetEncoding("UTF-8"));
+
+            switch (file.FileLocation)
+            {
+                case (int)FileLocation.ALIYUN:
+                    var filePath = string.Concat(file.FilePath, "/", file.FileObjectName);
+                    var stream1 = await (await _oSSServiceFactory.Create("Aliyun").PresignedGetObjectAsync(bucketName, filePath, 5)).GetAsStreamAsync();
+                    return new FileStreamResult(stream1, "application/octet-stream") { FileDownloadName = fileName };
+
+                case (int)FileLocation.TENCENT:
+                    var filePath1 = string.Concat(file.FilePath, "/", file.FileObjectName);
+                    var stream2 = await (await _oSSServiceFactory.Create("QCloud").PresignedGetObjectAsync(bucketName, filePath1, 5)).GetAsStreamAsync();
+                    return new FileStreamResult(stream2, "application/octet-stream") { FileDownloadName = fileName };
+
+                case (int)FileLocation.MINIO:
+                    var filePath2 = string.Concat(file.FilePath, "/", file.FileObjectName);
+                    var stream3 = await (await _oSSServiceFactory.Create().PresignedGetObjectAsync(file.FileBucket, filePath2, 5)).GetAsStreamAsync();
+                    return new FileStreamResult(stream3, "application/octet-stream") { FileDownloadName = fileName };
+
+                default:
+                    var filePath4 = Path.Combine(file.FilePath, file.FileObjectName);
+                    var path = Path.Combine(App.WebHostEnvironment.WebRootPath, filePath4);
+                    return new FileStreamResult(new FileStream(path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+            }
+        }
+
+        /// <summary>
+        /// 涓婁紶澶村儚
+        /// </summary>
+        /// <param name="file"></param>
+        /// <returns></returns>
+        [HttpPost("sysFileInfo/uploadAvatar")]
+        public async Task<long> UploadFileAvatar(IFormFile file)
+        {
+            const string key = "UploadFile:Avatar";
+            return await UploadFile(file, key);
+        }
+
+        /// <summary>
+        /// 涓婁紶鏂囨。
+        /// </summary>
+        /// <param name="file"></param>
+        /// <returns></returns>
+        [HttpPost("sysFileInfo/uploadDocument")]
+        public async Task UploadFileDocument(IFormFile file)
+        {
+            const string key = "UploadFile:Document";
+            await UploadFile(file, key);
+        }
+
+        /// <summary>
+        /// 涓婁紶鍟嗗簵鍥剧墖
+        /// </summary>
+        /// <param name="file"></param>
+        /// <returns></returns>
+        [HttpPost("sysFileInfo/uploadShop")]
+        public async Task UploadFileShop(IFormFile file)
+        {
+            const string key = "UploadFile:Shop";
+            await UploadFile(file, key);
+        }
+
+        /// <summary>
+        /// 涓婁紶鏂囦欢
+        /// </summary>
+        /// <param name="file"></param>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        [NonAction]//鐢ㄦ埛鍙互鑷畾涔夎鐢ㄧ殑
+        public async Task<long> UploadFile(IFormFile file, string key)
+        {
+            string path = _configuration[$"{key}:path"];
+            var filePath = Path.Combine(App.WebHostEnvironment.WebRootPath, path);
+            if (!Directory.Exists(filePath))
+                Directory.CreateDirectory(filePath);
+
+            var allowContentType = _configuration.GetSection($"{key}:contentType").Get<IEnumerable<string>>();
+
+            if (!allowContentType.Contains(file.ContentType)) throw Oops.Oh(ErrorCode.D8001);
+
+            var allowMaxSize = long.Parse(_configuration[$"{key}:maxSize"]);
+            var fileSizeKb = (long)(file.Length / 1024.0); // 鏂囦欢澶у皬KB
+            if (fileSizeKb > allowMaxSize) throw Oops.Oh(ErrorCode.D8002);
+
+            var originalFilename = file.FileName; // 鏂囦欢鍘熷鍚嶇О
+            var fileSuffix = Path.GetExtension(file.FileName).ToLower(); // 鏂囦欢鍚庣紑
+
+            // 鍏堝瓨搴撹幏鍙朓d
+            var newFile = await new SysFile
+            {
+                FileLocation = (int)FileLocation.LOCAL,
+                FileBucket = FileLocation.LOCAL.ToString(),
+                //FileObjectName = finalName,
+                FileOriginName = originalFilename,
+                FileSuffix = fileSuffix.TrimStart('.'),
+                FileSizeKb = fileSizeKb.ToString(),
+                FilePath = path
+            }.InsertNowAsync();
+
+            var finalName = newFile.Entity.Id + fileSuffix; // 鐢熸垚鏂囦欢鐨勬渶缁堝悕绉�
+            using (var stream = File.Create(Path.Combine(filePath, finalName)))
+            {
+                await file.CopyToAsync(stream);
+            }
+
+            newFile.Entity.FileObjectName = finalName;
+            return newFile.Entity.Id; // 杩斿洖鏂囦欢鍞竴鏍囪瘑
+        }
+
+        /// <summary>
+        /// 涓婁紶鏂囦欢
+        /// </summary>
+        /// <param name="file">鏂囦欢</param>
+        /// <param name="key">瀵硅薄瀛樺偍閿�</param>
+        /// <param name="fileLocation">鏂囦欢瀛樺偍浣嶇疆</param>
+        /// <returns></returns>
+        private async Task<long> UploadFile(IFormFile file, string key, FileLocation fileLocation)
+        {
+            string path = _configuration[$"{key}:path"];
+
+            var allowContentType = _configuration.GetSection($"{key}:contentType").Get<IEnumerable<string>>();
+            if (!allowContentType.Contains(file.ContentType)) throw Oops.Oh(ErrorCode.D8001);
+
+            var allowMaxSize = long.Parse(_configuration[$"{key}:maxSize"]);
+            var fileSizeKb = (long)(file.Length / 1024.0); // 鏂囦欢澶у皬KB
+            if (fileSizeKb > allowMaxSize) throw Oops.Oh(ErrorCode.D8002);
+
+            var originalFilename = file.FileName; // 鏂囦欢鍘熷鍚嶇О
+            var fileSuffix = Path.GetExtension(file.FileName).ToLower(); // 鏂囦欢鍚庣紑
+
+            // 鍏堝瓨搴撹幏鍙朓d
+            var newFile = await new SysFile
+            {
+                FileLocation = (int)fileLocation,
+                FileBucket = bucketName,
+                //FileObjectName = finalName,
+                FileOriginName = originalFilename,
+                FileSuffix = fileSuffix.TrimStart('.'),
+                FileSizeKb = fileSizeKb.ToString(),
+                FilePath = path
+            }.InsertNowAsync();
+
+            var finalName = newFile.Entity.Id + fileSuffix; // 鐢熸垚鏂囦欢鐨勬渶缁堝悕绉�
+            newFile.Entity.FileObjectName = finalName;
+            switch (fileLocation)
+            {
+                case FileLocation.ALIYUN:
+                    var filePath = string.Concat(path, "/", finalName);
+                    var stream = file.OpenReadStream();
+                    await _oSSServiceFactory.Create("aliyun").PutObjectAsync(bucketName, filePath, stream);
+                    break;
+
+                case FileLocation.TENCENT:
+                    var filePath1 = string.Concat(path, "/", finalName);
+                    var stream1 = file.OpenReadStream();
+                    await _oSSServiceFactory.Create("qcloud").PutObjectAsync(bucketName, filePath1, stream1);
+                    break;
+
+                case FileLocation.MINIO:
+                    var filePath2 = string.Concat(path, "/", finalName);
+                    var stream2 = file.OpenReadStream();
+                    await _oSSServiceFactory.Create().PutObjectAsync(bucketName, filePath2, stream2);
+                    break;
+
+                default:
+                    var filePath4 = Path.Combine(App.WebHostEnvironment.WebRootPath, path);
+                    if (!Directory.Exists(filePath4))
+                        Directory.CreateDirectory(filePath4);
+                    using (var stream4 = File.Create(Path.Combine(filePath4, finalName)))
+                    {
+                        await file.CopyToAsync(stream4);
+                    }
+                    break;
+            }
+            return newFile.Entity.Id; // 杩斿洖鏂囦欢鍞竴鏍囪瘑
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormAddDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormAddDto.cs
new file mode 100644
index 0000000..e8c86e3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormAddDto.cs
@@ -0,0 +1,37 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 琛ㄥ崟娣诲姞
+    /// </summary>
+    public class FormAddDto
+    {
+        /// <summary>
+        ///琛ㄥ崟鏍囬 涓嶅彲閲嶅
+        /// </summary>
+        [Required(ErrorMessage = "鏍囬涓嶈兘涓虹┖")]
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ崟绫诲瀷ID
+        /// </summary>
+        [Required(ErrorMessage = "琛ㄥ崟绫诲瀷ID涓嶅彲涓虹┖")]
+        public long TypeId { get; set; }
+
+        /// <summary>
+        /// form琛ㄥ崟Json
+        /// </summary>
+        public string FormJson { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙戝竷
+        /// </summary>
+        public bool Publish { get; set; } = false;
+
+        /// <summary>
+        /// 鐗堟湰
+        /// </summary>
+        public int Version { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormDto.cs
new file mode 100644
index 0000000..93c939c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormDto.cs
@@ -0,0 +1,350 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 琛ㄥ崟杈撳嚭Dto
+    /// </summary>
+    public class FormDto
+    {
+        /// <summary>
+        /// 鏃犲弬鏋勯�犲嚱鏁�
+        /// </summary>
+        public FormDto()
+        {
+        }
+
+        /// <summary>
+        /// 鏈夊弬鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="formDto"></param>
+        public FormDto(FormDto formDto)
+        {
+            this.Id = formDto.Id;
+            this.Title = formDto.Title;
+            this.FormJson = formDto.FormJson;
+            this.Publish = formDto.Publish;
+            this.TypeId = formDto.TypeId;
+            this.TypeName = formDto.TypeName;
+            this.Version = formDto.Version;
+            this.CreatedUserName = formDto.CreatedUserName;
+            this.CreatedUserId = formDto.CreatedUserId;
+            this.CreatedTime = formDto.CreatedTime;
+            this.NodesList = formDto.NodesList;
+        }
+
+        /// <summary>
+        /// 鏈夊弬鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="id"></param>
+        /// <param name="title"></param>
+        /// <param name="formjson"></param>
+        /// <param name="publish"></param>
+        /// <param name="typeId"></param>
+        /// <param name="typeName"></param>
+        /// <param name="version"></param>
+        /// <param name="createdUserName"></param>
+        /// <param name="createdUserId"></param>
+        /// <param name="createdTime"></param>
+        /// <param name="nodesList"></param>
+        public FormDto(long id, string title, string formjson, bool publish, long typeId, string typeName, int version, string createdUserName, long? createdUserId, DateTimeOffset? createdTime, FormList nodesList)
+        {
+            this.Id = id;
+            this.Title = title;
+            this.FormJson = formjson;
+            this.Publish = publish;
+            this.TypeId = typeId;
+            this.TypeName = typeName;
+            this.Version = version;
+            this.CreatedUserName = createdUserName;
+            this.CreatedUserId = createdUserId;
+            this.CreatedTime = createdTime;
+            this.NodesList = nodesList;
+        }
+
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        ///琛ㄥ崟鏍囬 涓嶅彲閲嶅
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// form琛ㄥ崟Json
+        /// </summary>
+        public string FormJson { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙戝竷
+        /// </summary>
+        public bool Publish { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ崟绫诲瀷ID
+        /// </summary>
+        public long TypeId { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ崟绫诲瀷鍚嶇О
+        /// </summary>
+        public string TypeName { get; set; }
+
+        /// <summary>
+        /// 鐗堟湰
+        /// </summary>
+        public int Version { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓浜哄鍚�
+        /// </summary>
+        public string CreatedUserName { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓浜篒D
+        /// </summary>
+        public long? CreatedUserId { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public DateTimeOffset? CreatedTime { get; set; }
+
+        /// <summary>
+        /// 鑺傜偣鍒楄〃
+        /// </summary>
+        public FormList NodesList { get; set; }
+    }
+
+    /// <summary>
+    /// 琛ㄥ崟鍒楄〃
+    /// </summary>
+    public class FormList
+    {
+        /// <summary>
+        /// 鑺傜偣鍒楄〃
+        /// </summary>
+        public List<FormNode> List { get; set; }
+
+        /// <summary>
+        /// 閰嶇疆
+        /// </summary>
+        public FormConfig Config { get; set; }
+    }
+
+    /// <summary>
+    /// 琛ㄥ崟鑺傜偣
+    /// </summary>
+    public class FormNode
+    {
+        /// <summary>
+        /// 绫诲瀷
+        /// </summary>
+        public string Type { get; set; }
+
+        /// <summary>
+        /// 鏍囬
+        /// </summary>
+        public string Label { get; set; }
+
+        /// <summary>
+        /// 灞炴�ц缃�
+        /// </summary>
+	    public FormOptions Options { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+		public string Model { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        public string Key { get; set; }
+
+        /// <summary>
+        /// 甯姪
+        /// </summary>
+        public string Help { get; set; }
+
+        /// <summary>
+        /// 鍓嶇紑
+        /// </summary>
+        public string Prefix { get; set; }
+
+        /// <summary>
+        /// 鍚庣紑
+        /// </summary>
+        public string Suffix { get; set; }
+
+        /// <summary>
+        /// 鏍¢獙瑙勫垯
+        /// </summary>
+		public List<FormRules> Rules { get; set; }
+    }
+
+    /// <summary>
+    /// 鑺傜偣灞炴��
+    /// </summary>
+    public class FormOptions
+    {
+        /// <summary>
+        /// 绫诲瀷
+        /// </summary>
+        public string Type { get; set; }
+
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+		public string Width { get; set; }
+
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public string DefaultValue { get; set; }
+
+        /// <summary>
+        /// 甯姪淇℃伅
+        /// </summary>
+        public string Placeholder { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        public bool Clearable { get; set; }
+
+        /// <summary>
+        ///
+        /// </summary>
+        public string MaxLength { get; set; }
+
+        /// <summary>
+        /// 鏄惁闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙敤
+        /// </summary>
+        public bool Disabled { get; set; }
+    }
+
+    /// <summary>
+    /// 鏍¢獙瑙勫垯
+    /// </summary>
+    public class FormRules
+    {
+        /// <summary>
+        /// 鏄惁蹇呭~
+        /// </summary>
+        public bool Required { get; set; }
+
+        /// <summary>
+        /// 淇℃伅
+        /// </summary>
+        public string Message { get; set; }
+    }
+
+    /// <summary>
+    /// 琛ㄥ崟閰嶇疆
+    /// </summary>
+    public class FormConfig
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        public string Layout { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public FormLabelCol LabelCol { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public FormWrapperCol WrapperCol { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public bool HideRequiredMark { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string CustomStyle { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class FormLabelCol
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public int XS { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int SM { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int MD { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int LG { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int XL { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int XXL { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class FormWrapperCol
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public int XS { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int SM { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int MD { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int LG { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int XL { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int XXL { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormEditDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormEditDto.cs
new file mode 100644
index 0000000..f54ca27
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormEditDto.cs
@@ -0,0 +1,33 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 琛ㄥ崟缂栬緫
+    /// </summary>
+    public class FormEditDto : BaseDto
+    {
+        /// <summary>
+        ///琛ㄥ崟鏍囬 涓嶅彲閲嶅
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// form琛ㄥ崟Json
+        /// </summary>
+        public string FormJson { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙戝竷
+        /// </summary>
+        public bool Publish { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ崟绫诲瀷ID
+        /// </summary>
+        public long TypeId { get; set; }
+
+        /// <summary>
+        /// 鐗堟湰
+        /// </summary>
+        public int Version { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPageSearch.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPageSearch.cs
new file mode 100644
index 0000000..8281449
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPageSearch.cs
@@ -0,0 +1,20 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍒嗛〉鏌ヨ鏉′欢
+    /// </summary>
+    public class FormPageSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鏍囬
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ崟绫诲瀷
+        /// </summary>
+        public long? TypeId { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPublishDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPublishDto.cs
new file mode 100644
index 0000000..b956892
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPublishDto.cs
@@ -0,0 +1,20 @@
+锘縰sing Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍙戝竷鐘舵��
+    /// </summary>
+    public class FormPublishDto : BaseId
+    {
+        /// <summary>
+        /// 鍙戝竷鐘舵��
+        /// </summary>
+        public bool Publish { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ崟绫诲瀷Id
+        /// </summary>
+        public long? Type { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/FormService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/FormService.cs
new file mode 100644
index 0000000..8d2bcb3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/FormService.cs
@@ -0,0 +1,187 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 琛ㄥ崟绠$悊
+    /// </summary>
+    [Route("api/formmanager")]
+    [ApiDescriptionSettings("琛ㄥ崟绠$悊", Name = "FormManager", Order = 100)]
+    public class FormService : IFormService, ITransient, IDynamicApiController
+    {
+        private readonly IRepository<SysForm> _sysformRep;
+        private readonly IRepository<SysDictData> _sysDictDataRep;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysformRep">琛ㄥ崟鏁版嵁琛�</param>
+        /// <param name="sysDictDataRep"></param>
+        public FormService(IRepository<SysForm> sysformRep, IRepository<SysDictData> sysDictDataRep)
+        {
+            _sysformRep = sysformRep;
+            _sysDictDataRep = sysDictDataRep;
+        }
+
+        /// <summary>
+        /// 鑾峰彇琛ㄥ崟鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<FormDto>> GetPageList([FromQuery] FormPageSearch input)
+        {
+            var formList = await _sysformRep.DetachedEntities
+                    .Join(_sysDictDataRep.DetachedEntities, f => f.TypeId, d => d.Id, (f, d) => new { f, d })
+                    .Where(!string.IsNullOrWhiteSpace(input.Title), x => x.f.Title.Contains(input.Title))
+                    .Where(input.TypeId != null, x => x.f.TypeId == input.TypeId)
+                    .Select(x => new FormDto()
+                    {
+                        Id = x.f.Id,
+                        Title = x.f.Title,
+                        FormJson = x.f.FormJson,
+                        Publish = x.f.Publish,
+                        TypeId = x.f.TypeId,
+                        TypeName = x.d.Value,
+                        Version = x.f.Version,
+                        CreatedUserName = x.f.CreatedUserName,
+                        CreatedUserId = x.f.CreatedUserId,
+                        CreatedTime = x.f.CreatedTime
+                    })
+                    .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return formList;
+        }
+
+        /// <summary>
+        /// 娣诲姞
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task<FormDto> FormAdd(FormAddDto input)
+        {
+            bool bl = await CheckTitle(input.Title);
+            if (bl)
+            {
+                var form = await _sysformRep.InsertNowAsync(input.Adapt<SysForm>());
+                return form.Entity.Adapt<FormDto>();
+            }
+            else
+                throw Oops.Oh("瀛樺湪鐩稿悓鏍囬琛ㄥ崟锛岃淇敼琛ㄥ崟鏍囬");
+        }
+
+        /// <summary>
+        /// 鏇存柊琛ㄥ崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [UnitOfWork]
+        [HttpPost("edit")]
+        public async Task UpdateEditForm(FormEditDto input)
+        {
+            var form = await _sysformRep.DetachedEntities.FirstOrDefaultAsync(x => x.Id == input.Id);
+            if (form == null)
+                throw Oops.Oh("鏈壘鍒板搴旇〃鍗曪紒");
+            form.FormJson = input.FormJson;
+            await _sysformRep.UpdateIncludeNowAsync(form, new[] { "FormJson" }, ignoreNullValues: true);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎琛ㄥ崟
+        /// </summary>
+        /// <param name="input"></param>
+        [HttpDelete("delete")]
+        public async Task Delete(BaseId input)
+        {
+            // 杩欓噷鍙互鍏堝垽鏂〃鍗曟槸鍚﹀凡缁忓湪娴佺▼涓娇鐢ㄤ簡
+            // 浣跨敤浜嗗垯涓嶈兘鍒犻櫎
+
+            // 鎴戣繖閲屾病鏈夊仛鍒ゆ柇
+            await _sysformRep.DeleteAsync(input.Id);
+        }
+
+        /// <summary>
+        /// 鍙戝竷琛ㄥ崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("publish")]
+        public async Task Publish(FormPublishDto input)
+        {
+            var form = await _sysformRep.DetachedEntities.FirstOrDefaultAsync(x => x.Id == input.Id);
+            if (form == null)
+                throw Oops.Oh("鏈壘鍒板搴旇〃鍗曪紒");
+            form.Publish = input.Publish;
+            await _sysformRep.UpdateIncludeNowAsync(form, new[] { nameof(form.Publish) });
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曚竴瀹炰綋
+        /// </summary>
+        /// <param name="Input"></param>
+        /// <returns></returns>
+        [HttpGet("entity")]
+        public async Task<FormDto> Get([FromQuery] BaseId Input)
+        {
+            var form = await _sysformRep.DetachedEntities.FirstOrDefaultAsync(x => x.Id == Input.Id);
+            FormDto formDto = new FormDto();
+            formDto = form.Adapt<FormDto>();
+            formDto.NodesList = formDto.FormJson.FromJson<FormList>();
+            return formDto;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曚竴瀹炰綋鏌ョ湅
+        /// </summary>
+        /// <param name="Input"></param>
+        /// <returns></returns>
+        [HttpGet("entityview")]
+        public async Task<FormDto> GetView([FromQuery] BaseId Input)
+        {
+            var form = await _sysformRep.DetachedEntities.FirstOrDefaultAsync(x => x.Id == Input.Id);
+            FormDto formDto = new FormDto();
+            formDto = form.Adapt<FormDto>();
+            formDto.NodesList = formDto.FormJson.FromJson<FormList>();
+            foreach (var node in formDto.NodesList.List)
+            {
+                node.Options.Disabled = true;
+            }
+            return formDto;
+        }
+
+        /// <summary>
+        /// 鑾峰彇宸插彂甯冭〃鍗曞垪琛�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("publislist")]
+        public async Task<dynamic> GetPulishList(long? typeId)
+        {
+            var form = await _sysformRep.DetachedEntities.Where(x => x.Publish == true)
+                                .Where(typeId != null, x => x.TypeId == typeId)
+                                .OrderByDescending(x => x.CreatedTime)
+                                .Select(x => new { x.Title, x.Id, x.TypeId, NodeList = x.FormJson.FromJson<FormList>() })
+                                .ToListAsync();
+            return form;
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇鏍囬鏄惁閲嶅
+        /// </summary>
+        /// <param name="Title"></param>
+        /// <returns></returns>
+        private async Task<bool> CheckTitle(string Title)
+        {
+            var form = await _sysformRep.DetachedEntities.FirstOrDefaultAsync(x => x.Title == Title);
+            if (form == null)
+                return true;
+            return false;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/IFormService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/IFormService.cs
new file mode 100644
index 0000000..baf46ce
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/IFormService.cs
@@ -0,0 +1,66 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 琛ㄥ崟绠$悊鎺ュ彛
+    /// </summary>
+    public interface IFormService
+    {
+        /// <summary>
+        /// 鑾峰彇琛ㄥ崟鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<FormDto>> GetPageList([FromQuery] FormPageSearch input);
+
+        /// <summary>
+        /// 娣诲姞
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<FormDto> FormAdd(FormAddDto input);
+
+        /// <summary>
+        /// 鏇存柊琛ㄥ崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateEditForm(FormEditDto input);
+
+        /// <summary>
+        /// 鍒犻櫎琛ㄥ崟
+        /// </summary>
+        /// <param name="input"></param>
+        Task Delete(BaseId input);
+
+        /// <summary>
+        /// 鍙戝竷琛ㄥ崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task Publish(FormPublishDto input);
+
+        /// <summary>
+        /// 鑾峰彇鍗曚竴瀹炰綋
+        /// </summary>
+        /// <param name="Input"></param>
+        /// <returns></returns>
+        Task<FormDto> Get(BaseId Input);
+
+        /// <summary>
+        /// 鑾峰彇鍗曚竴瀹炰綋鏌ョ湅
+        /// </summary>
+        /// <param name="Input"></param>
+        /// <returns></returns>
+        Task<FormDto> GetView([FromQuery] BaseId Input);
+
+        /// <summary>
+        /// 鑾峰彇鍙戝竷琛ㄥ崟鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        Task<dynamic> GetPulishList(long? typeId);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/ChatHub.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/ChatHub.cs
new file mode 100644
index 0000000..90e3ee6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/ChatHub.cs
@@ -0,0 +1,123 @@
+锘縰sing Admin.NET.Core;
+using Furion;
+using Furion.DataEncryption;
+using Microsoft.AspNetCore.SignalR;
+using UAParser;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鑱婂ぉ闆嗙嚎鍣�
+    /// </summary>
+    public class ChatHub : Hub<IChatClient>
+    {
+        private readonly ISysCacheService _cache;
+        private readonly ISendMessageService _sendMessageService;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="cache"></param>
+        /// <param name="sendMessageService"></param>
+        public ChatHub(ISysCacheService cache, ISendMessageService sendMessageService)
+        {
+            _cache = cache;
+            _sendMessageService = sendMessageService;
+        }
+
+        /// <summary>
+        /// 杩炴帴
+        /// </summary>
+        /// <returns></returns>
+        public override async Task OnConnectedAsync()
+        {
+            var token = Context.GetHttpContext().Request.Query["access_token"];
+            var claims = JWTEncryption.ReadJwtToken(token)?.Claims;
+
+            var client = Parser.GetDefault().Parse(Context.GetHttpContext().Request.Headers["User-Agent"]);
+            var loginBrowser = client.UA.Family + client.UA.Major;
+            var loginOs = client.OS.Family + client.OS.Major;
+
+            var userId = claims.FirstOrDefault(e => e.Type == ClaimConst.CLAINM_USERID)?.Value;
+            var account = claims.FirstOrDefault(e => e.Type == ClaimConst.CLAINM_ACCOUNT)?.Value;
+            var name = claims.FirstOrDefault(e => e.Type == ClaimConst.CLAINM_NAME)?.Value;
+            //var tenantId = claims.FirstOrDefault(e => e.Type == ClaimConst.TENANT_ID)?.Value;
+            var onlineUsers = await _cache.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER) ?? new List<OnlineUser>();
+            onlineUsers.Add(new OnlineUser
+            {
+                ConnectionId = Context.ConnectionId,
+                UserId = long.Parse(userId),
+                LastTime = DateTime.Now,
+                LastLoginIp = App.HttpContext.GetRequestIPv4(),
+                LastLoginBrowser = loginBrowser,
+                LastLoginOs = loginOs,
+                Account = account,
+                Name = name,
+                //TenantId = Convert.ToInt64(tenantId),
+            });
+            await _cache.SetAsync(CommonConst.CACHE_KEY_ONLINE_USER, onlineUsers);
+        }
+
+        /// <summary>
+        /// 鏂紑
+        /// </summary>
+        /// <param name="exception"></param>
+        /// <returns></returns>
+        public override async Task OnDisconnectedAsync(Exception exception)
+        {
+            if (!string.IsNullOrEmpty(Context.ConnectionId))
+            {
+                var onlineUsers = await _cache.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER);
+                if (onlineUsers == null) return;
+
+                onlineUsers.RemoveAll(u => u.ConnectionId == Context.ConnectionId);
+                await _cache.SetAsync(CommonConst.CACHE_KEY_ONLINE_USER, onlineUsers);
+            }
+        }
+
+        /// <summary>
+        /// 鍓嶇璋冪敤鍙戦�佹柟娉�
+        /// 鍙戦�佷俊鎭粰鏌愪釜浜�
+        /// </summary>
+        /// <param name="_message"></param>
+        /// <returns></returns>
+        public async Task ClientsSendMessage(MessageinputDto _message)
+        {
+            await _sendMessageService.SendMessageToUser(_message.title, _message.message, _message.messageType, _message.userId);
+        }
+
+        /// <summary>
+        /// 鍓嶇璋冪敤鍙戦�佹柟娉�
+        /// 鍙戦�佷俊鎭粰鎵�鏈変汉
+        /// </summary>
+        /// <param name="_message"></param>
+        /// <returns></returns>
+        public async Task ClientsSendMessagetoAll(MessageinputDto _message)
+        {
+            await _sendMessageService.SendMessageToAllUser(_message.title, _message.message, _message.messageType);
+        }
+
+        /// <summary>
+        /// 鍓嶇璋冪敤鍙戦�佹柟娉�
+        /// 鍙戦�佹秷鎭粰闄や簡鍙戦�佷汉鐨勫叾浠栦汉
+        /// </summary>
+        /// <param name="_message"></param>
+        /// <returns></returns>
+        public async Task ClientsSendMessagetoOther(MessageinputDto _message)
+        {
+            // _message.userId涓哄彂閫佷汉ID
+            await _sendMessageService.SendMessageToOtherUser(_message.title, _message.message, _message.messageType, _message.userId);
+        }
+
+        /// <summary>
+        /// 鍓嶇璋冪敤鍙戦�佹柟娉�
+        /// 鍙戦�佹秷鎭粰鏌愪簺浜�
+        /// </summary>
+        /// <param name="_message"></param>
+        /// <returns></returns>
+        public async Task ClientsSendMessagetoUsers(MessageinputDto _message)
+        {
+            await _sendMessageService.SendMessageToUsers(_message.title, _message.message, _message.messageType, _message.userIds);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/Dto/MessageinputDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/Dto/MessageinputDto.cs
new file mode 100644
index 0000000..b5b4bc0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/Dto/MessageinputDto.cs
@@ -0,0 +1,35 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class MessageinputDto
+    {
+        /// <summary>
+        /// 鐢ㄦ埛ID
+        /// </summary>
+        public long userId { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛ID鍒楄〃
+        /// </summary>
+        public List<long> userIds { get; set; }
+
+        /// <summary>
+        /// 娑堟伅鏍囬
+        /// </summary>
+        public string title { get; set; }
+
+        /// <summary>
+        /// 娑堟伅鍐呭
+        /// </summary>
+        public string message { get; set; }
+
+        /// <summary>
+        /// 娑堟伅绫诲瀷
+        /// </summary>
+        public MessageType messageType { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/IChatClient.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/IChatClient.cs
new file mode 100644
index 0000000..7ae9112
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/IChatClient.cs
@@ -0,0 +1,25 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鑱婂ぉ瀹㈡埛绔帴鍙e畾涔�
+    /// </summary>
+    public interface IChatClient
+    {
+        /// <summary>
+        /// 寮哄埗涓嬬嚎
+        /// </summary>
+        /// <returns></returns>
+        Task ForceExist();
+        /// <summary>
+        /// 鍗曠敤鎴风櫥褰曪紝寮哄埗涓嬬嚎
+        /// </summary>
+        /// <returns></returns>
+        Task SingleLoginForceExist();
+        /// <summary>
+        /// 鍙戦�佷俊鎭�
+        /// </summary>
+        /// <param name="context"></param>
+        /// <returns></returns>
+        Task ReceiveMessage(object context);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrasOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrasOutput.cs
new file mode 100644
index 0000000..25afa86
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrasOutput.cs
@@ -0,0 +1,18 @@
+锘縩amespace Admin.NET.Application.Service.System.LowCode.Dto
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class ContrasOutput
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<ContrastLowCode_Database> Add { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<ContrastLowCode_Database> Del { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrastLowCode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrastLowCode.cs
new file mode 100644
index 0000000..33611a7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrastLowCode.cs
@@ -0,0 +1,124 @@
+锘縩amespace Admin.NET.Application.Service.System.LowCode.Dto
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class ContrastLowCode
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Controls { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<ContrastLowCode_Database> Databases { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class ContrastLowCode_Database
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Control_Key { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Control_Label { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Control_Model { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Control_Type { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ悕
+        /// </summary>
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary>
+        public string ClassName { get; set; }
+
+        /// <summary>
+        /// 琛ㄦ弿杩�
+        /// </summary>
+        public string TableDesc { get; set; }
+
+        /// <summary>
+        /// 瀛楁鍚嶇О
+        /// </summary>
+        public string FieldName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁绫诲瀷
+        /// </summary>
+        public Type DbType { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁绫诲瀷
+        /// </summary>
+        public string DbTypeName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁绫诲瀷
+        /// </summary>
+        public string DtoTypeName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁绫诲瀷琛ュ厖鍙傛暟
+        /// </summary>
+        public string DbParam { get; set; }
+
+        /// <summary>
+        /// 鏄惁蹇呭~
+        /// </summary>
+        public bool? IsRequired { get; set; }
+
+        /// <summary>
+        /// 鍒楄〃鏄剧ず
+        /// </summary>
+        public bool? WhetherTable { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public bool? WhetherOrderBy { get; set; }
+
+        /// <summary>
+        /// 澧炴敼
+        /// </summary>
+        public bool? whetherAddUpdate { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄煡璇�
+        /// </summary>
+        public bool? QueryWhether { get; set; }
+
+        /// <summary>
+        /// 鏌ヨ鏂瑰紡
+        /// </summary>
+        public string QueryType { get; set; }
+
+        /// <summary>
+        /// 鏄惁鑱斿悎涓婚敭
+        /// </summary>
+        public bool? WhetherUnionKey { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/Front_CodeGenerate.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/Front_CodeGenerate.cs
new file mode 100644
index 0000000..cb77377
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/Front_CodeGenerate.cs
@@ -0,0 +1,122 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Service.LowCode.Dto;
+
+namespace Admin.NET.Application.Service.System.LowCode.Dto
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Front_CodeGenerate
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string TableDesc { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string AuthorName { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// 鍛藉悕绌洪棿
+        /// </summary>
+        public string NameSpace { get; set; }
+
+        /// <summary>
+        /// 妯″潡璺緞
+        /// </summary>
+        public string ModuleName { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙槸鏌ヨ 
+        /// </summary>
+        public bool IsOnlyQuery { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string ProName { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string DatabaseName { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string ClassName { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string CamelizeClassName { get; set; }
+
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<CodeGenConfig> QueryWhetherList { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<CodeGenConfig> TableField { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<CodeGenConfig> FileTableField { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<GenEntity_Field> Fields { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public long? LowCodeId { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string FormDesign { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string DynamicData { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<Front_Dynamic> DynamicLoad_Dict { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public bool IsFile { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟搴旂敤鍒嗙被
+        /// </summary>
+        public string MenuApplication { get; set; }
+
+        /// <summary>
+        /// 瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+        /// </summary>
+        public string ImportExcelCustomizationContent { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/GenEntity.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/GenEntity.cs
new file mode 100644
index 0000000..ca3b92a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/GenEntity.cs
@@ -0,0 +1,115 @@
+锘縰sing Furion.Extras.Admin.NET.Entity;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+
+namespace Furion.Extras.Admin.NET.Service.LowCode.Dto
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class GenEntity
+    {
+        /// <summary>
+        /// 鍛藉悕绌洪棿
+        /// </summary>
+        public string NameSpace { get; set; }
+
+
+        /// <summary>
+        /// 妯″潡鍚嶏紝鐢ㄤ簬鐢熸垚鐨勬枃浠跺す鐩綍 銆怑ditby shaocx,2024-04-07銆�
+        /// </summary>
+        public string ModuleName { get; set; }
+
+
+        /// <summary>
+        /// 琛ㄥ悕
+        /// </summary>
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary>
+        public string ClassName { get; set; }
+
+        /// <summary>
+        /// 琛ㄦ弿杩�
+        /// </summary>
+        public string TableDesc { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撳悕绉�
+        /// </summary>
+        public string DatabaseName { get; set; }
+
+        /// <summary>
+        /// 浣滆�呭悕
+        /// </summary>
+        public string AuthorName { get; set; }
+
+        /// <summary>
+        /// 涓氬姟鍚�
+        /// </summary>
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// 绋嬪簭闆�
+        /// </summary>
+        public string ProName { get; set; }
+
+        /// <summary>
+        /// 鍔ㄦ�佽〃鍗�
+        /// </summary>
+        public string FormDesign { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<GenEntity_Field> Fields { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<SysLowCodeDataBase> DataBase { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class GenEntity_Field
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 瀛楁澶囨敞
+        /// </summary>
+        public string ColumnComment { get; set; }
+
+        /// <summary>
+        /// 瀛楁鍚嶇О
+        /// </summary>
+        public string FieldName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁绫诲瀷
+        /// </summary>
+        public string NetType { get; set; }
+
+        /// <summary>
+        /// 浼犲叆鏁版嵁绫诲瀷
+        /// </summary>
+        public string DtoNetType { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁绫诲瀷琛ュ厖鍙傛暟
+        /// </summary>
+        public string DbParam { get; set; }
+
+        /// <summary>
+        /// 鏄惁蹇呭~
+        /// </summary>
+        public bool IsRequired { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/LowCodeInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/LowCodeInput.cs
new file mode 100644
index 0000000..7f98756
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/LowCodeInput.cs
@@ -0,0 +1,155 @@
+锘縰sing Admin.NET.Application.Service.System.LowCode.Dto;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Furion.Extras.Admin.NET.Service.LowCode.Dto
+{
+    /// <summary>
+    /// 浠g爜鐢熸垚鍙傛暟绫�
+    /// </summary>
+    public class LowCodePageInput : PageInputBase
+    {
+        /// <summary>
+        /// 涓氬姟鍚嶇О
+        /// </summary>
+        public string BusName { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddLowCodeInput
+    {
+        /// <summary>
+        /// 浣滆�呭鍚�
+        /// </summary>
+        [Required(ErrorMessage = "浣滆�呭鍚嶄笉鑳戒负绌�")]
+        public string AuthorName { get; set; }
+
+        /// <summary>
+        /// 鐢熸垚鏂瑰紡
+        /// </summary>
+        [Required(ErrorMessage = "鐢熸垚鏂瑰紡涓嶈兘涓虹┖")]
+        public string GenerateType { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撳悕
+        /// </summary>
+        [Required(ErrorMessage = "鏁版嵁搴撳悕涓嶈兘涓虹┖")]
+        public string DatabaseName { get; set; }
+
+        /// <summary>
+        /// 鍛藉悕绌洪棿
+        /// </summary>
+        [Required(ErrorMessage = "鍛藉悕绌洪棿涓嶈兘涓虹┖")]
+        public string NameSpace { get; set; }
+
+
+        /// <summary>
+        /// 妯″潡璺緞
+        /// </summary>
+        [Required(ErrorMessage = "妯″潡璺緞涓嶈兘涓虹┖")]
+        public string ModuleName { get; set; }
+
+        /// <summary>
+        /// 涓氬姟鍚�
+        /// </summary>
+        [Required(ErrorMessage = "涓氬姟鍚嶄笉鑳戒负绌�")]
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        [Required(ErrorMessage = "鑿滃崟搴旂敤鍒嗙被涓嶈兘涓虹┖")]
+        public string MenuApplication { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "鑿滃崟缂栫爜涓嶈兘涓虹┖")]
+        public long MenuPid { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteLowCodeInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateLowCodeInput
+    {
+        /// <summary>
+        /// 浠g爜鐢熸垚鍣↖d
+        /// </summary>
+        [Required(ErrorMessage = "浠g爜鐢熸垚鍣↖d涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 浣滆�呭鍚�
+        /// </summary>
+        [Required(ErrorMessage = "浣滆�呭鍚嶄笉鑳戒负绌�")]
+        public string AuthorName { get; set; }
+
+        /// <summary>
+        /// 鐢熸垚鏂瑰紡
+        /// </summary>
+        [Required(ErrorMessage = "鐢熸垚鏂瑰紡涓嶈兘涓虹┖")]
+        public string GenerateType { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撳悕
+        /// </summary>
+        [Required(ErrorMessage = "鏁版嵁搴撳悕涓嶈兘涓虹┖")]
+        public string DatabaseName { get; set; }
+
+        /// <summary>
+        /// 鍛藉悕绌洪棿
+        /// </summary>
+        [Required(ErrorMessage = "鍛藉悕绌洪棿涓嶈兘涓虹┖")]
+        public string NameSpace { get; set; }
+
+        /// <summary>
+        /// 妯″潡璺緞
+        /// </summary>
+        [Required(ErrorMessage = "妯″潡璺緞涓嶈兘涓虹┖")]
+        public string ModuleName { get; set; }
+
+        /// <summary>
+        /// 涓氬姟鍚�
+        /// </summary>
+        [Required(ErrorMessage = "涓氬姟鍚嶄笉鑳戒负绌�")]
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        [Required(ErrorMessage = "鑿滃崟搴旂敤鍒嗙被涓嶈兘涓虹┖")]
+        public string MenuApplication { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "鑿滃崟缂栫爜涓嶈兘涓虹┖")]
+        public long MenuPid { get; set; }
+
+        /// <summary>
+        /// 鍔ㄦ�佽〃鍗曠被鍨�
+        /// </summary>
+        public FormDesignType FormDesignType { get; set; } = FormDesignType.VueFormDesign;
+
+        /// <summary>
+        /// 鍔ㄦ�佽〃鍗�
+        /// </summary>
+        public string FormDesign { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ崟杞暟鎹粨鏋�
+        /// </summary>
+        public List<ContrastLowCode_Database> Databases { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/GenEntityComparer.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/GenEntityComparer.cs
new file mode 100644
index 0000000..eb1096b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/GenEntityComparer.cs
@@ -0,0 +1,48 @@
+锘縰sing Furion.Extras.Admin.NET.Service.LowCode.Dto;
+using System.Diagnostics.CodeAnalysis;
+
+namespace Furion.Extras.Admin.NET.Service.LowCode
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class GenEntityComparer : IEqualityComparer<GenEntity>
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="x"></param>
+        /// <param name="y"></param>
+        /// <returns></returns>
+        public bool Equals(GenEntity x, GenEntity y)
+        {
+            bool result = true;
+            if (x == null && y == null)
+            {
+                result = true;
+            }
+            else if (x == null ^ y == null)
+            {
+                result = false;
+            }
+            else
+            {
+                result = (x.TableDesc == y.TableDesc) &&
+                    (x.ClassName == y.ClassName) &&
+                    (x.TableName == y.TableName) &&
+                    (x.NameSpace == y.NameSpace);
+            }
+            return result;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="obj"></param>
+        /// <returns></returns>
+        public int GetHashCode([DisallowNull] GenEntity obj)
+        {
+            return obj == null ? 0 : obj.ToString().GetHashCode();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/ILowCodeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/ILowCodeService.cs
new file mode 100644
index 0000000..a94fed0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/ILowCodeService.cs
@@ -0,0 +1,56 @@
+锘�//using Admin.NET.Application.Service.System.LowCode.Dto;
+//using Admin.NET.Core;
+//using Furion.Extras.Admin.NET.Entity;
+//using Furion.Extras.Admin.NET.Service.LowCode.Dto;
+//using Microsoft.AspNetCore.Mvc;
+
+//namespace Furion.Extras.Admin.NET.Service.LowCode
+//{
+//    /// <summary>
+//    /// 
+//    /// </summary>
+//    public interface ILowCodeService
+//    {
+//        /// <summary>
+//        /// 
+//        /// </summary>
+//        /// <param name="input"></param>
+//        /// <returns></returns>
+//        Task Add(AddLowCodeInput input);
+
+//        /// <summary>
+//        /// 
+//        /// </summary>
+//        /// <param name="inputs"></param>
+//        /// <returns></returns>
+//        Task Delete(List<DeleteLowCodeInput> inputs);
+
+//        /// <summary>
+//        /// 
+//        /// </summary>
+//        /// <param name="input"></param>
+//        /// <returns></returns>
+//        Task<PageResult<SysLowCode>> QueryPageList([FromQuery] LowCodePageInput input);
+
+//        /// <summary>
+//        /// 
+//        /// </summary>
+//        /// <param name="input"></param>
+//        /// <returns></returns>
+//        Task Update(UpdateLowCodeInput input);
+
+//        /// <summary>
+//        /// 
+//        /// </summary>
+//        /// <param name="contrast"></param>
+//        /// <returns></returns>
+//        ContrasOutput Contrast(ContrastLowCode contrast);
+
+//        /// <summary>
+//        /// 
+//        /// </summary>
+//        /// <param name="id"></param>
+//        /// <returns></returns>
+//        Task<bool> RunLocal(long id);
+//    }
+//}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/LowCodeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/LowCodeService.cs
new file mode 100644
index 0000000..fb12490
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/LowCodeService.cs
@@ -0,0 +1,548 @@
+锘�//using Admin.NET.Application;
+//using Admin.NET.Application.Service.System.LowCode.Dto;
+//using Admin.NET.Core;
+//using Admin.NET.Core.Util.LowCode.Front.Code;
+//using Admin.NET.Core.Util.LowCode.Front.Model;
+//using Furion.DatabaseAccessor;
+//using Furion.DatabaseAccessor.Extensions;
+//using Furion.DependencyInjection;
+//using Furion.DynamicApiController;
+//using Furion.Extras.Admin.NET.Entity;
+//using Furion.Extras.Admin.NET.Service.LowCode.Dto;
+//using Furion.Extras.Admin.NET.Util;
+//using Furion.Extras.Admin.NET.Util.LowCode.Front.Code;
+//using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+//using Furion.FriendlyException;
+//using Furion.ViewEngine;
+//using Mapster;
+//using Microsoft.AspNetCore.Mvc;
+//using Microsoft.EntityFrameworkCore;
+//using Microsoft.Extensions.Configuration;
+//using Newtonsoft.Json;
+//using NString;
+//using System.Linq.Dynamic.Core;
+//using System.Text;
+
+//namespace Furion.Extras.Admin.NET.Service.LowCode
+//{
+//    /// <summary>
+//    /// 浣庝唬鐮佹ā鍧楁湇鍔�
+//    /// </summary>
+//    [ApiDescriptionSettings(Name = "LowCode", Order = 100)]
+//    [Route("api/lowcode")]
+//    public class LowCodeService : ILowCodeService, IDynamicApiController, ITransient
+//    {
+//        private readonly IRepository<SysLowCode> _sysLowCodeRep;
+//        private readonly IRepository<SysLowCodeDataBase> _sysLowCodeDataBaseRep;
+//        private readonly IRepository<SysMenu> _sysMenuRep; // 鑿滃崟琛ㄤ粨鍌�
+//        private readonly IConfiguration _configuration;
+//        private readonly IViewEngine _viewEngine;
+
+//        /// <summary>
+//        /// 鏋勯�犲嚱鏁�
+//        /// </summary>
+//        /// <param name="sysLowCodeRep"></param>
+//        /// <param name="sysLowCodeDataBaseRep"></param>
+//        /// <param name="sysMenuRep"></param>
+//        /// <param name="configuration"></param>
+//        /// <param name="viewEngine"></param>
+//        public LowCodeService(IRepository<SysLowCode> sysLowCodeRep,
+//            IRepository<SysLowCodeDataBase> sysLowCodeDataBaseRep,
+//            IRepository<SysMenu> sysMenuRep,
+//            IConfiguration configuration,
+//            IViewEngine viewEngine)
+//        {
+//            _sysLowCodeRep = sysLowCodeRep;
+//            _sysLowCodeDataBaseRep = sysLowCodeDataBaseRep;
+//            _sysMenuRep = sysMenuRep;
+//            _configuration = configuration;
+//            _viewEngine = viewEngine;
+//        }
+
+//        /// <summary>
+//        /// 鍒嗛〉鏌ヨ
+//        /// </summary>
+//        /// <param name="input"></param>
+//        /// <returns></returns>
+//        /// <exception cref="NotImplementedException"></exception>
+//        [HttpGet("page")]
+//        public async Task<PageResult<SysLowCode>> QueryPageList([FromQuery] LowCodePageInput input)
+//        {
+//            var busName = !string.IsNullOrEmpty(input.BusName?.Trim());
+//            var lowCodes = await _sysLowCodeRep.DetachedEntities
+//                                    .Where((busName, u => EF.Functions.Like(u.BusName, $"%{input.BusName.Trim()}%")))
+//                                    .ToADPagedListAsync(input.PageNo, input.PageSize);
+//            return lowCodes;
+//        }
+
+//        /// <summary>
+//        /// 鑾峰彇妯″潡璇︽儏
+//        /// </summary>
+//        /// <param name="id"></param>
+//        /// <returns></returns>
+//        [HttpGet("info/{id}")]
+//        public SysLowCode Info(long id)
+//        {
+//            return _sysLowCodeRep.Where(x => x.Id == id).Include(x => x.Databases).FirstOrDefault();
+//        }
+
+//        /// <summary>
+//        /// 娣诲姞
+//        /// </summary>
+//        /// <param name="input"></param>
+//        /// <returns></returns>
+//        /// <exception cref="NotImplementedException"></exception>
+//        [HttpPost("add")]
+//        public async Task Add(AddLowCodeInput input)
+//        {
+//            var isExist = await _sysLowCodeRep.DetachedEntities.AnyAsync(u => u.BusName == input.BusName);
+//            if (isExist)
+//                throw Oops.Oh(ErrorCode.D1600);
+
+//            var lowCode = input.Adapt<SysLowCode>();
+//            var newLowCode = await lowCode.InsertNowAsync();
+//        }
+
+//        /// <summary>
+//        /// 鍒犻櫎
+//        /// </summary>
+//        /// <param name="inputs"></param>
+//        /// <returns></returns>
+//        /// <exception cref="NotImplementedException"></exception>
+//        [HttpPost("del")]
+//        public async Task Delete(List<DeleteLowCodeInput> inputs)
+//        {
+//            if (inputs == null || inputs.Count < 1) return;
+
+//            foreach (var u in inputs)
+//            {
+//                _sysLowCodeDataBaseRep.Where(x => x.SysLowCodeId == u.Id).DeleteRange(_sysLowCodeDataBaseRep.Context);
+//                await _sysLowCodeRep.DeleteAsync(u.Id);
+//            }
+//        }
+
+//        /// <summary>
+//        /// 鏇存柊
+//        /// </summary>
+//        /// <param name="input"></param>
+//        /// <returns></returns>
+//        /// <exception cref="NotImplementedException"></exception>
+//        [HttpPost("edit")]
+//        public async Task Update(UpdateLowCodeInput input)
+//        {
+//            var lowCode = input.Adapt<SysLowCode>();
+//            await lowCode.UpdateAsync();
+
+//            await _sysLowCodeDataBaseRep.Context.DeleteRangeAsync<SysLowCodeDataBase>(x => x.SysLowCodeId == input.Id);
+//            await _sysLowCodeDataBaseRep.InsertAsync(lowCode.Databases);
+//        }
+
+//        /// <summary>
+//        /// 瀵规瘮缁勪欢
+//        /// </summary>
+//        /// <param name="contrast"></param>
+//        /// <returns></returns>
+//        /// <exception cref="NotImplementedException"></exception>
+//        [HttpPost("contrast")]
+//        public ContrasOutput Contrast(ContrastLowCode contrast)
+//        {
+//            List<IFront> fronts = contrast.Controls.ConvertToFront().AllFront();
+
+//            DataCompareUtil<IFront, ContrastLowCode_Database> dataCompare
+//                = new DataCompareUtil<IFront, ContrastLowCode_Database>(x => x.Key, x => x.Id);
+
+//            dataCompare.PushCompare(x => x.Key, x => x.Control_Key);
+//            dataCompare.PushCompare(x => x.Label, x => x.Control_Label);
+//            dataCompare.PushCompare(x => x.Model, x => x.Control_Model);
+//            dataCompare.PushCompare(x => x.Type, x => x.Control_Type);
+
+//            var compare = dataCompare.Compare(fronts, contrast.Databases);
+
+//            List<ContrastLowCode_Database> list = new List<ContrastLowCode_Database>();
+
+//            var tables = contrast.Databases.Where(x => !string.IsNullOrEmpty(x.TableName) && !string.IsNullOrEmpty(x.TableName))
+//                .Select(x => new { x.TableName, x.ClassName, x.TableDesc })
+//                .Distinct()
+//                .ToList();
+
+//            if (tables.Count != 1)
+//            {
+//                tables.Clear();
+//            }
+
+//            compare.NoContain_2.ForEach(item =>
+//            {
+//                list.AddRange(item.ReadFront_BindDatabase(_sysLowCodeRep.ProviderName).Select(x => new ContrastLowCode_Database()
+//                {
+//                    Control_Key = item.Key,
+//                    Control_Label = item.Label,
+//                    Control_Model = item.Model,
+//                    Control_Type = item.Type,
+//                    DbParam = x.DbParam,
+//                    DbType = x.DbType,
+//                    DbTypeName = x.DbType.Name,
+//                    DtoTypeName = x.DtoType == null ? x.DbType.Name : x.DtoType.Name,
+//                    FieldName = $"{item.Model}{x.Suffix}",
+//                    IsRequired = true,
+//                    Id = Guid.NewGuid(),
+//                    TableName = tables.Select(x => x.TableName).FirstOrDefault(),
+//                    ClassName = tables.Select(x => x.ClassName).FirstOrDefault(),
+//                    TableDesc = tables.Select(x => x.TableDesc).FirstOrDefault(),
+//                    QueryType = "equery",
+//                    QueryWhether = true,
+//                    whetherAddUpdate = true,
+//                    WhetherOrderBy = true,
+//                    WhetherTable = true
+//                }));
+//            });
+
+//            return new ContrasOutput()
+//            {
+//                Add = list,
+//                Del = compare.NoContain_1
+//            };
+//        }
+
+//        /// <summary>
+//        /// 鐢熸垚浠g爜
+//        /// </summary>
+//        /// <param name="id"></param>
+//        /// <returns></returns>
+//        [HttpGet("runLocal/{id}")]
+//        public async Task<bool> RunLocal(long id)
+//        {
+//            var info = Info(id);
+
+//            var list = info.Databases.Select(x => new GenEntity()
+//            {
+//                NameSpace = info.NameSpace,
+//                ModuleName = info.ModuleName,
+//                ClassName = x.ClassName,
+//                TableDesc = x.TableDesc,
+//                TableName = x.TableName,
+//                DatabaseName = info.DatabaseName,
+//                AuthorName = info.AuthorName,
+//                BusName = info.BusName,
+//                ProName = info.ProName,
+//                FormDesign = info.FormDesign
+//            }).Distinct(new GenEntityComparer()).ToList();
+
+//            list.ForEach(item =>
+//            {
+//                item.DataBase = info.Databases.ToList();
+//                item.Fields = info.Databases.Where(x => x.ClassName == item.ClassName).Select(x => new GenEntity_Field()
+//                {
+//                    ColumnComment = x.Control_Label,
+//                    DbParam = x.DbParam,
+//                    FieldName = x.FieldName,
+//                    IsRequired = x.IsRequired == null ? false : x.IsRequired.Value,
+//                    NetType = x.DbTypeName,
+//                    DtoNetType = x.DtoTypeName == null ? x.DbTypeName : x.DtoTypeName,
+//                }).ToList();
+//            });
+
+//            string TableName = string.Empty;
+
+//            list.ForEach(item =>
+//            {
+//                TableName = item.TableName;
+
+//                var AllDynamic = item.FormDesign.ConvertToFront().AllFront().AllDynamic();
+//                Dictionary<string, List<string>> dynamicData = new Dictionary<string, List<string>>();
+//                List<Front_Dynamic> dynamicLoad_dict = new List<Front_Dynamic>();
+
+//                AllDynamic.Where(x => x.Dynamic).Select(x => x.DynamicKey).ToList().ForEach(item =>
+//                {
+//                    dynamicData.Add(item, new List<string>());
+//                    var d = item.GetDynamic();
+//                    if (d != null)
+//                    {
+//                        if (d.Head == "dict")
+//                        {
+//                            dynamicLoad_dict.Add(d);
+//                        }
+//                    }
+//                });
+
+//                List<CodeGenConfig> tableFieldList = item.DataBase.Select(x => new CodeGenConfig()
+//                {
+//                    ColumnComment = x.Control_Label,
+//                    ColumnKey = String.Empty,
+//                    ColumnName = x.FieldName,
+//                    DataType = x.DbTypeName,
+//                    DtoNetType = x.DtoTypeName,
+//                    NetType = x.DbTypeName,
+//                    OriginalColumnName = x.FieldName,
+//                    QueryType = x.QueryType,
+//                    QueryWhether = x.QueryWhether.HasValue && x.QueryWhether.Value ? YesOrNot.Y.ToString() : YesOrNot.N.ToString(),
+//                    WhetherAddUpdate = x.WhetherAddUpdate.HasValue && x.WhetherAddUpdate.Value ? YesOrNot.Y.ToString() : YesOrNot.N.ToString(),
+//                    WhetherOrderBy = x.WhetherOrderBy.HasValue && x.WhetherOrderBy.Value ? YesOrNot.Y.ToString() : YesOrNot.N.ToString(),
+//                    WhetherRequired = x.IsRequired.HasValue && x.IsRequired.Value ? YesOrNot.Y.ToString() : YesOrNot.N.ToString(),
+//                    WhetherTable = x.WhetherTable.HasValue && x.WhetherTable.Value ? YesOrNot.Y.ToString() : YesOrNot.N.ToString(),
+//                    WhetherRetract = YesOrNot.N.ToString(),
+//                    WhetherCommon = YesOrNot.Y.ToString(),
+//                    NetTypeIsNullLable = String.Empty,
+//                    Id = 0,
+//                    FkEntityName = null,
+//                    FkColumnNetType = null,
+//                    FkColumnName = null,
+//                    EffectType = null,
+//                    DictTypeCode = null,
+//                    CodeGen = null,
+//                    CodeGenId = 0,
+//                }).ToList();
+
+//                tableFieldList.Add(new CodeGenConfig()
+//                {
+//                    ColumnComment = "Id",
+//                    ColumnKey = "True",
+//                    ColumnName = "Id",
+//                    DataType = null,
+//                    DtoNetType = "long",
+//                    NetType = "long",
+//                    OriginalColumnName = "Id",
+//                    QueryType = null,
+//                    QueryWhether = YesOrNot.N.ToString(),
+//                    WhetherAddUpdate = YesOrNot.N.ToString(),
+//                    WhetherOrderBy = YesOrNot.N.ToString(),
+//                    WhetherRequired = YesOrNot.N.ToString(),
+//                    WhetherTable = YesOrNot.N.ToString(),
+//                    WhetherRetract = YesOrNot.N.ToString(),
+//                    WhetherCommon = YesOrNot.Y.ToString(),
+//                    NetTypeIsNullLable = String.Empty,
+//                    Id = 0,
+//                    FkEntityName = null,
+//                    FkColumnNetType = null,
+//                    FkColumnName = null,
+//                    EffectType = null,
+//                    DictTypeCode = null,
+//                    CodeGen = null,
+//                    CodeGenId = 0,
+//                });
+
+//                tableFieldList.ForEach(u =>
+//                {
+//                    switch (u.NetType.ToLower())
+//                    {
+//                        case "int":
+//                        case "int32":
+//                        case "long":
+//                        case "guid":
+//                        case "decimal":
+//                        case "datetime":
+//                        case "datetimeoffset":
+//                            u.NetTypeIsNullLable = "?";
+//                            break;
+//                    }
+//                    u.OriginalColumnName = u.ColumnName;
+//                });
+
+//                var queryWhetherList = tableFieldList.Where(u => u.QueryWhether == YesOrNot.Y.ToString()).ToList(); // 鍓嶇鏌ヨ闆嗗悎
+
+//                var ss = App.Configuration.GetSection("CodeGenConfig");
+
+//                int config_index = 0;
+//                string ResultHead = "@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate\r\n";
+//                while (!string.IsNullOrEmpty(_configuration.GetValue<string>($"LowCodeConfig:{config_index}:Name")))
+//                {
+//                    var config_data = new
+//                    {
+//                        HostPath = App.WebHostEnvironment.WebRootPath,
+//                        CodePath = new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.FullName,
+//                        FrontendPath = new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.Parent.FullName + @"\iwara-wms-web\src\views\main\",
+//                        ApiJsPath = new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.Parent.FullName + @"\iwara-wms-web\src\api\modular\main\",
+//                        NameSpace = item.NameSpace,
+//                        ClassName = item.ClassName
+//                    };
+//                    var SourceFile = StringTemplate.Format(_configuration.GetValue<string>($"LowCodeConfig:{config_index}:Source:File"), config_data);
+//                    var TargetFile = StringTemplate.Format(_configuration.GetValue<string>($"LowCodeConfig:{config_index}:Target:File"), config_data);
+//                    var TargetDir = StringTemplate.Format(_configuration.GetValue<string>($"LowCodeConfig:{config_index}:Target:Dir"), config_data);
+//                    var IsFrontend = _configuration.GetValue<bool?>($"LowCodeConfig:{config_index}:IsFrontend");
+
+//                    if (IsFrontend.HasValue && IsFrontend.Value == true) // 閫傚簲鍓嶇棣栧瓧姣嶅皬鍐�
+//                    {
+//                        tableFieldList.ForEach(u =>
+//                        {
+//                            u.ColumnName = u.ColumnName.Substring(0, 1).ToLower() + u.ColumnName[1..];
+//                        });
+//                    }
+
+//                    #region 鎵ц浠g爜鐢熸垚
+
+//                    var tContent = File.ReadAllText(SourceFile);
+
+//                    if (tContent.IndexOf(ResultHead) == 0) tContent = tContent.Substring(ResultHead.Length);
+
+//                    var data = new
+//                    {
+//                        TableName = item.TableName,
+//                        NameSpace = item.NameSpace,
+//                        Fields = item.Fields,
+//                        ClassName = item.ClassName,
+//                        TableDesc = item.TableDesc,
+//                        DatabaseName = item.DatabaseName,
+//                        AuthorName = item.AuthorName,
+//                        BusName = item.BusName,
+//                        ProName = item.ProName,
+//                        CamelizeClassName = item.TableName.Substring(0, 1).ToLower() + item.TableName[1..], //棣栧瓧姣嶅皬鍐�
+//                        QueryWhetherList = queryWhetherList,
+//                        TableField = tableFieldList,
+//                        LowCodeId = id,
+//                        FormDesign = item.FormDesign,
+//                        DynamicData = JsonConvert.SerializeObject(dynamicData),
+//                        DynamicLoad_Dict = dynamicLoad_dict,
+//                        IsFile = tableFieldList.Where(x => x.DtoNetType.Contains("Front_FileDto")).Any(),
+//                        FileTableField = tableFieldList.Where(x => x.DtoNetType.Contains("Front_FileDto")).ToList()
+//                    };
+
+//                    var tResult = _viewEngine.RunCompileFromCached(tContent, data);
+//                    if (!Directory.Exists(TargetDir)) Directory.CreateDirectory(TargetDir);
+//                    File.WriteAllText($"{TargetDir}{TargetFile}", tResult, Encoding.UTF8);
+
+//                    #endregion 鎵ц浠g爜鐢熸垚
+
+//                    config_index++;
+//                }
+//            });
+
+//            if (!string.IsNullOrEmpty(TableName))
+//            {
+//                await AddMenu(info.DatabaseName.Substring(0, 5), TableName, info.BusName, info.MenuApplication, info.MenuPid);
+//            }
+
+//            return true;
+//        }
+
+//        private async Task AddMenu(string menucodePre, string className, string busName, string application, long pid)
+//        {
+//            // 瀹氫箟鑿滃崟缂栫爜鍓嶇紑
+//            var codePrefix = menucodePre + "_" + className.ToLower();//鏀逛负鍙栨暟鎹簱瀹氫綅鍣ㄧ殑鍓嶄簲涓瓧姣嶆柟渚垮尯鍒嗕笟鍔� //"dilon_" + className.ToLower();
+
+//            // 鍏堝垹闄よ琛ㄥ凡鐢熸垚鐨勮彍鍗曞垪琛�
+//            var menus = await _sysMenuRep.DetachedEntities.Where(u => u.Code == codePrefix || u.Code.StartsWith(codePrefix + "_")).ToListAsync();
+//            await _sysMenuRep.DeleteAsync(menus);
+
+//            // 濡傛灉 pid 涓� 0 璇存槑涓洪《绾ц彍鍗�, 闇�瑕佸垱寤洪《绾х洰褰�
+//            if (pid == 0)
+//            {
+//                // 鐩綍
+//                var menuType0 = new SysMenu
+//                {
+//                    Pid = 0,
+//                    Pids = "[0],",
+//                    Name = busName + "绠$悊",
+//                    Code = codePrefix,
+//                    Type = MenuType.DIR,
+//                    Icon = "robot",
+//                    Router = "/" + className.ToLower(),
+//                    Component = "PageView",
+//                    Application = application
+//                };
+//                pid = _sysMenuRep.InsertNowAsync(menuType0).GetAwaiter().GetResult().Entity.Id;
+//            }
+//            // 鐢变簬鍚庣画鑿滃崟浼氭湁淇敼, 闇�瑕佸垽鏂笅 pid 鏄惁瀛樺湪, 涓嶅瓨鍦ㄦ姤閿�
+//            else if (!await _sysMenuRep.DetachedEntities.AnyAsync(e => e.Id == pid))
+//                throw Oops.Oh(ErrorCode.D1505);
+
+//            // 鑿滃崟
+//            var menuType1 = new SysMenu
+//            {
+//                Pid = pid,
+//                Pids = "[0],[" + pid + "],",
+//                Name = busName + "绠$悊",
+//                Code = codePrefix + "_mgr",
+//                Type = MenuType.MENU,
+//                Router = "/" + className.ToLower(),
+//                Component = "main/" + className + "/index",
+//                Application = application,
+//                OpenType = MenuOpenType.COMPONENT
+//            };
+//            var pid1 = _sysMenuRep.InsertNowAsync(menuType1).GetAwaiter().GetResult().Entity.Id;
+
+//            // 鎸夐挳-page
+//            var menuType2 = new SysMenu
+//            {
+//                Pid = pid1,
+//                Pids = "[0],[" + pid + "],[" + pid1 + "],",
+//                Name = busName + "鏌ヨ",
+//                Code = codePrefix + "_mgr_page",
+//                Type = MenuType.BTN,
+//                Permission = className + ":page",
+//                Application = application,
+//            }.InsertAsync();
+
+//            // 鎸夐挳-detail
+//            var menuType2_1 = new SysMenu
+//            {
+//                Pid = pid1,
+//                Pids = "[0],[" + pid + "],[" + pid1 + "],",
+//                Name = busName + "璇︽儏",
+//                Code = codePrefix + "_mgr_detail",
+//                Type = MenuType.BTN,
+//                Permission = className + ":detail",
+//                Application = application,
+//            }.InsertAsync();
+
+//            // 鎸夐挳-add
+//            var menuType2_2 = new SysMenu
+//            {
+//                Pid = pid1,
+//                Pids = "[0],[" + pid + "],[" + pid1 + "],",
+//                Name = busName + "澧炲姞",
+//                Code = codePrefix + "_mgr_add",
+//                Type = MenuType.BTN,
+//                Permission = className + ":add",
+//                Application = application,
+//            }.InsertAsync();
+
+//            // 鎸夐挳-delete
+//            var menuType2_3 = new SysMenu
+//            {
+//                Pid = pid1,
+//                Pids = "[0],[" + pid + "],[" + pid1 + "],",
+//                Name = busName + "鍒犻櫎",
+//                Code = codePrefix + "_mgr_delete",
+//                Type = MenuType.BTN,
+//                Permission = className + ":delete",
+//                Application = application,
+//            }.InsertAsync();
+
+//            // 鎸夐挳-edit
+//            var menuType2_4 = new SysMenu
+//            {
+//                Pid = pid1,
+//                Pids = "[0],[" + pid + "],[" + pid1 + "],",
+//                Name = busName + "缂栬緫",
+//                Code = codePrefix + "_mgr_edit",
+//                Type = MenuType.BTN,
+//                Permission = className + ":edit",
+//                Application = application,
+//            }.InsertAsync();
+//        }
+
+//        private List<string> GetTemplatePathList()
+//        {
+//            var templatePath = App.WebHostEnvironment.WebRootPath + @"\Template\";
+//            return new List<string>()
+//            {
+//                templatePath + "Entity.cs.cshtml"
+//            };
+//        }
+
+//        /// <summary>
+//        /// 璁剧疆鐢熸垚鏂囦欢璺緞
+//        /// </summary>
+//        /// <param name="input"></param>
+//        /// <returns></returns>
+//        private List<string> GetTargetPathList(GenEntity input)
+//        {
+//            var backendPath = new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.FullName + @"\" + input.NameSpace + @"\Entity\";
+//            var outputPath = backendPath + @"\" + input.ClassName + ".cs";
+
+//            return new List<string>()
+//            {
+//                outputPath
+//            };
+//        }
+//    }
+//}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/AntDesignTreeNode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/AntDesignTreeNode.cs
new file mode 100644
index 0000000..04829a4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/AntDesignTreeNode.cs
@@ -0,0 +1,79 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐧诲綍鑿滃崟-AntDesign鑿滃崟绫诲瀷
+    /// </summary>
+    public class AntDesignTreeNode
+    {
+        /// <summary>
+        /// id
+        /// </summary>
+        public long? Id { get; set; }
+
+        /// <summary>
+        /// 鐖秈d
+        /// </summary>
+        public long? Pid { get; set; }
+
+        /// <summary>
+        /// 璺敱鍚嶇О, 蹇呴』璁剧疆,涓斾笉鑳介噸鍚�
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缁勪欢
+        /// </summary>
+        public string Component { get; set; }
+
+        /// <summary>
+        /// 閲嶅畾鍚戝湴鍧�, 璁块棶杩欎釜璺敱鏃�, 鑷畾杩涜閲嶅畾鍚�
+        /// </summary>
+        public string Redirect { get; set; }
+
+        /// <summary>
+        /// 璺敱鍏冧俊鎭紙璺敱闄勫甫鎵╁睍淇℃伅锛�
+        /// </summary>
+        public Meta Meta { get; set; }
+
+        /// <summary>
+        /// 璺緞
+        /// </summary>
+        public string Path { get; set; }
+
+        /// <summary>
+        /// 鎺у埗璺敱鍜屽瓙璺敱鏄惁鏄剧ず鍦� sidebar
+        /// </summary>
+        public bool Hidden { get; set; }
+    }
+
+    /// <summary>
+    /// 璺敱鍏冧俊鎭唴閮ㄧ被
+    /// </summary>
+    public class Meta
+    {
+        /// <summary>
+        /// 璺敱鏍囬, 鐢ㄤ簬鏄剧ず闈㈠寘灞�, 椤甸潰鏍囬 *鎺ㄨ崘璁剧疆
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙
+        /// </summary>
+        public bool Show { get; set; }
+
+        /// <summary>
+        /// 濡傞渶澶栭儴鎵撳紑锛屽鍔狅細_blank
+        /// </summary>
+        public string Target { get; set; }
+
+        /// <summary>
+        /// 鍐呴摼鎵撳紑http閾炬帴
+        /// </summary>
+        public string Link { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuInput.cs
new file mode 100644
index 0000000..b79fc20
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuInput.cs
@@ -0,0 +1,352 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鑿滃崟鍙傛暟
+    /// </summary>
+    public class MenuInput
+    {
+        /// <summary>
+        /// 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+        /// </summary>
+        public MenuType Type { get; set; }
+
+        /// <summary>
+        /// 璺敱鍦板潃
+        /// </summary>
+        public string Router { get; set; }
+
+        /// <summary>
+        /// 鏉冮檺鏍囪瘑
+        /// </summary>
+        public string Permission { get; set; }
+
+        /// <summary>
+        /// 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+        /// </summary>
+        public MenuOpenType OpenType { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class TreeForGrantInput
+    {
+        /// <summary>
+        /// 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        public string Application { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class GetMenuTreeInput
+    {
+        /// <summary>
+        /// 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        public string Application { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class GetMenuListInput
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        public string Application { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddMenuInput
+    {
+        /// <summary>
+        /// 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+        /// </summary>
+        [Required(ErrorMessage = "鑿滃崟绫诲瀷涓嶈兘涓虹┖")]
+        public MenuType Type { get; set; }
+
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public long Pid { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 璺敱鍦板潃
+        /// </summary>
+        public string Router { get; set; }
+
+        /// <summary>
+        /// 缁勪欢鍦板潃
+        /// </summary>
+        public string Component { get; set; }
+
+        /// <summary>
+        /// 鏉冮檺鏍囪瘑
+        /// </summary>
+        public string Permission { get; set; }
+
+        /// <summary>
+        /// 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        public string Application { get; set; }
+
+        /// <summary>
+        /// 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+        /// </summary>
+        public MenuOpenType OpenType { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙锛圷-鏄紝N-鍚︼級
+        /// </summary>
+        public string Visible { get; set; }
+
+        /// <summary>
+        /// 鍐呴摼鍦板潃
+        /// </summary>
+        public string Link { get; set; }
+
+        /// <summary>
+        /// 閲嶅畾鍚戝湴鍧�
+        /// </summary>
+        public string Redirect { get; set; }
+
+        /// <summary>
+        /// 鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+        /// </summary>
+        public MenuWeight Weight { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteMenuInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateMenuInput
+    {
+        /// <summary>
+        /// 鑿滃崟Id
+        /// </summary>
+        [Required(ErrorMessage = "鑿滃崟Id涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>DeleteMenuInput
+        [Required(ErrorMessage = "鐖剁骇鑿滃崟Id涓嶈兘涓虹┖")]
+        public long Pid { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+        /// </summary>
+        [Required(ErrorMessage = "鑿滃崟绫诲瀷涓嶈兘涓虹┖")]
+        public MenuType Type { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 璺敱鍦板潃
+        /// </summary>
+        public string Router { get; set; }
+
+        /// <summary>
+        /// 缁勪欢鍦板潃
+        /// </summary>
+        public string Component { get; set; }
+
+        /// <summary>
+        /// 鏉冮檺鏍囪瘑
+        /// </summary>
+        public string Permission { get; set; }
+
+        /// <summary>
+        /// 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        public string Application { get; set; }
+
+        /// <summary>
+        /// 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+        /// </summary>
+        public MenuOpenType OpenType { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙锛圷-鏄紝N-鍚︼級
+        /// </summary>
+        public string Visible { get; set; }
+
+        /// <summary>
+        /// 鍐呴摼鍦板潃
+        /// </summary>
+        public string Link { get; set; }
+
+        /// <summary>
+        /// 閲嶅畾鍚戝湴鍧�
+        /// </summary>
+        public string Redirect { get; set; }
+
+        /// <summary>
+        /// 鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+        /// </summary>
+        public MenuWeight Weight { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryMenuInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class ChangeAppMenuInput
+    {
+        /// <summary>
+        /// 搴旂敤缂栫爜
+        /// </summary>DeleteMenuInput
+        [Required(ErrorMessage = "搴旂敤缂栫爜涓嶈兘涓虹┖")]
+        public string Application { get; set; }
+
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public long Pid { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+        /// </summary>
+        public MenuType Type { get; set; }
+
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 璺敱鍦板潃
+        /// </summary>
+        public string Router { get; set; }
+
+        /// <summary>
+        /// 缁勪欢鍦板潃
+        /// </summary>
+        public string Component { get; set; }
+
+        /// <summary>
+        /// 鏉冮檺鏍囪瘑
+        /// </summary>
+        public string Permission { get; set; }
+
+        /// <summary>
+        /// 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+        /// </summary>
+        public MenuOpenType OpenType { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙锛圷-鏄紝N-鍚︼級
+        /// </summary>
+        public string Visible { get; set; }
+
+        /// <summary>
+        /// 鍐呴摼鍦板潃
+        /// </summary>
+        public string Link { get; set; }
+
+        /// <summary>
+        /// 閲嶅畾鍚戝湴鍧�
+        /// </summary>
+        public string Redirect { get; set; }
+
+        /// <summary>
+        /// 鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+        /// </summary>
+        public MenuWeight Weight { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuOutput.cs
new file mode 100644
index 0000000..4cea44f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuOutput.cs
@@ -0,0 +1,128 @@
+锘縰sing Admin.NET.Core;
+using System.Collections;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鑿滃崟鏍戯紙鍒楄〃褰㈠紡锛�
+    /// </summary>
+    public class MenuOutput : ITreeNode
+    {
+        /// <summary>
+        /// 鑿滃崟Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 瀛愯妭鐐�
+        /// </summary>
+        public List<MenuOutput> Children { get; set; } = new List<MenuOutput>();
+
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public long Pid { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+        /// </summary>
+        public MenuType Type { get; set; }
+
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 璺敱鍦板潃
+        /// </summary>
+        public string Router { get; set; }
+
+        /// <summary>
+        /// 缁勪欢鍦板潃
+        /// </summary>
+        public string Component { get; set; }
+
+        /// <summary>
+        /// 鏉冮檺鏍囪瘑
+        /// </summary>
+        public string Permission { get; set; }
+
+        /// <summary>
+        /// 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        public string Application { get; set; }
+
+        /// <summary>
+        /// 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+        /// </summary>
+        public MenuOpenType OpenType { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙锛圷-鏄紝N-鍚︼級
+        /// </summary>
+        public string Visible { get; set; }
+
+        /// <summary>
+        /// 鍐呴摼鍦板潃
+        /// </summary>
+        public string Link { get; set; }
+
+        /// <summary>
+        /// 閲嶅畾鍚戝湴鍧�
+        /// </summary>
+        public string Redirect { get; set; }
+
+        /// <summary>
+        /// 鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+        /// </summary>
+        public MenuWeight Weight { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        public long GetId()
+        {
+            return Id;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        public long GetPid()
+        {
+            return Pid;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="children"></param>
+        public void SetChildren(IList children)
+        {
+            Children = (List<MenuOutput>)children;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuTreeOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuTreeOutput.cs
new file mode 100644
index 0000000..79e29ce
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuTreeOutput.cs
@@ -0,0 +1,73 @@
+using Admin.NET.Core;
+using System.Collections;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鑿滃崟鏍�---鎺堟潈銆佹柊澧炵紪杈戞椂閫夋嫨
+    /// </summary>
+    public class MenuTreeOutput : ITreeNode
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public long ParentId { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 鍊�
+        /// </summary>
+        public string Value => IntValue.ToString();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public long IntValue { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭锛岃秺灏忎紭鍏堢骇瓒婇珮
+        /// </summary>
+        public MenuWeight Weight { get; set; }
+
+        /// <summary>
+        /// 瀛愯妭鐐�
+        /// </summary>
+        public List<MenuTreeOutput> Children { get; set; } = new List<MenuTreeOutput>();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        public long GetId()
+        {
+            return Id;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        public long GetPid()
+        {
+            return ParentId;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="children"></param>
+        public void SetChildren(IList children)
+        {
+            Children = (List<MenuTreeOutput>)children;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/ISysMenuService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/ISysMenuService.cs
new file mode 100644
index 0000000..c09cd9c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/ISysMenuService.cs
@@ -0,0 +1,101 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysMenuService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task AddMenu(AddMenuInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<AntDesignTreeNode>> ChangeAppMenu(ChangeAppMenuInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task DeleteMenu(DeleteMenuInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="appCode"></param>
+        /// <returns></returns>
+        Task<List<AntDesignTreeNode>> GetLoginMenusAntDesign(long userId, string appCode);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        Task<List<string>> GetLoginPermissionList(long userId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<List<string>> GetAllPermissionList();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<dynamic> GetMenu(QueryMenuInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<dynamic> GetMenuList([FromQuery] GetMenuListInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<dynamic> GetMenuTree([FromQuery] GetMenuTreeInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        Task<List<string>> GetUserMenuAppCodeList(long userId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="appCode"></param>
+        /// <returns></returns>
+        Task<bool> HasMenu(string appCode);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<dynamic> TreeForGrant([FromQuery] TreeForGrantInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateMenu(UpdateMenuInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/SysMenuService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/SysMenuService.cs
new file mode 100644
index 0000000..1403482
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/SysMenuService.cs
@@ -0,0 +1,517 @@
+using Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Admin.NET.Core.Entity.WmsBase;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 绯荤粺鑿滃崟鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "Menu", Order = 146)]
+    [Route("api")]
+    public class SysMenuService : ISysMenuService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysMenu> _sysMenuRep;  // 鑿滃崟琛ㄤ粨鍌�
+        private readonly IRepository<WmsPdaPower> _wmsPdaPower;  // PDA鑿滃崟琛ㄤ粨鍌�
+        private readonly IRepository<SysDictData> _sysDictData;
+        private readonly IRepository<WmsRolePdaMenu> _wmsRolePdaMenu;
+        private readonly ISysCacheService _sysCacheService;
+        private readonly ISysUserRoleService _sysUserRoleService;
+        private readonly ISysRoleMenuService _sysRoleMenuService;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysMenuRep"></param>
+        /// <param name="sysCacheService"></param>
+        /// <param name="sysUserRoleService"></param>
+        /// <param name="sysRoleMenuService"></param>
+        public SysMenuService(IRepository<SysMenu> sysMenuRep,
+                              IRepository<WmsPdaPower> wmsPdaPower,
+                              IRepository<SysDictData> sysDictData,
+                              IRepository<WmsRolePdaMenu> wmsRolePdaMenu,
+                              ISysCacheService sysCacheService,
+                              ISysUserRoleService sysUserRoleService,
+                              ISysRoleMenuService sysRoleMenuService)
+        {
+            _sysMenuRep = sysMenuRep;
+            _wmsPdaPower = wmsPdaPower;
+            _sysDictData = sysDictData;
+            _wmsRolePdaMenu = wmsRolePdaMenu;
+            _sysCacheService = sysCacheService;
+            _sysUserRoleService = sysUserRoleService;
+            _sysRoleMenuService = sysRoleMenuService;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛鏉冮檺(鎸夐挳鏉冮檺鏍囪瘑闆嗗悎)
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<string>> GetLoginPermissionList(long userId)
+        {
+            var permissions = await _sysCacheService.GetPermission(userId); // 鍏堜粠缂撳瓨閲岄潰璇诲彇
+            if (permissions == null || permissions.Count < 1)
+            {
+                if (!CurrentUserInfo.IsSuperAdmin && userId != 0)
+                {
+                    var roleIdList = await _sysUserRoleService.GetUserRoleIdList(userId);
+                    var menuIdList = await _sysRoleMenuService.GetRoleMenuIdList(roleIdList);
+                    permissions = await _sysMenuRep.DetachedEntities.Where(u => menuIdList.Contains(u.Id))
+                                                                    .Where(u => u.Type == MenuType.BTN)
+                                                                    .Where(u => u.Status == CommonStatus.ENABLE)
+                                                                    .Select(u => u.Permission).ToListAsync();
+                }
+                else
+                {
+                    permissions = await _sysMenuRep.DetachedEntities
+                                                   .Where(u => u.Type == MenuType.BTN)
+                                                   .Where(u => u.Status == CommonStatus.ENABLE)
+                                                   .Select(u => u.Permission).ToListAsync();
+                }
+                await _sysCacheService.SetPermission(userId, permissions); // 缂撳瓨缁撴灉
+            }
+            return permissions;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夋潈闄�(鎸夐挳鏉冮檺鏍囪瘑闆嗗悎)
+        /// </summary>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<string>> GetAllPermissionList()
+        {
+            return await GetLoginPermissionList(0);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛AntDesign鑿滃崟闆嗗悎
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="appCode"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<AntDesignTreeNode>> GetLoginMenusAntDesign(long userId, string appCode)
+        {
+            var antDesignTreeNodes = await _sysCacheService.GetMenu(userId, appCode); // 鍏堜粠缂撳瓨閲岄潰璇诲彇
+            if (antDesignTreeNodes == null || antDesignTreeNodes.Count < 1)
+            {
+                var sysMenuList = new List<SysMenu>();
+                // 绠$悊鍛樺垯灞曠ず鎵�鏈夌郴缁熻彍鍗�
+                if (CurrentUserInfo.IsSuperAdmin)
+                {
+                    sysMenuList = await _sysMenuRep.DetachedEntities
+                                                   .Where(u => u.Status == CommonStatus.ENABLE)
+                                                   .Where(u => u.Application == appCode)
+                                                   .Where(u => u.Type != MenuType.BTN)
+                                                   //.Where(u => u.Weight != (int)MenuWeight.DEFAULT_WEIGHT)
+                                                   .OrderBy(u => u.Sort).ThenBy(u => u.Id).ToListAsync();
+                }
+                else
+                {
+                    // 闈炵鐞嗗憳鍒欒幏鍙栬嚜宸辫鑹叉墍鎷ユ湁鐨勮彍鍗曢泦鍚�
+                    var roleIdList = await _sysUserRoleService.GetUserRoleIdList(userId);
+                    var menuIdList = await _sysRoleMenuService.GetRoleMenuIdList(roleIdList);
+                    sysMenuList = await _sysMenuRep.DetachedEntities
+                                                   .Where(u => menuIdList.Contains(u.Id))
+                                                   .Where(u => u.Status == CommonStatus.ENABLE)
+                                                   .Where(u => u.Application == appCode)
+                                                   .Where(u => u.Type != MenuType.BTN)
+                                                   .OrderBy(u => u.Sort).ThenBy(u => u.Id).ToListAsync();
+                }
+                // 杞崲鎴愮櫥褰曡彍鍗�
+                antDesignTreeNodes = sysMenuList.Select(u => new AntDesignTreeNode
+                {
+                    Id = u.Id,
+                    Pid = u.Pid,
+                    Path = u.OpenType == MenuOpenType.OUTER ? u.Link : u.Router,
+                    Name = u.Code,
+                    Component = u.Component,
+                    Redirect = u.OpenType == MenuOpenType.OUTER ? u.Link : u.Redirect,
+                    Meta = new Meta
+                    {
+                        Title = u.Name,
+                        Icon = u.Icon,
+                        Show = u.Visible == YesOrNot.Y.ToString(),
+                        Link = u.Link,
+                        Target = u.OpenType == MenuOpenType.OUTER ? "_blank" : ""
+                    }
+                }).ToList();
+                await _sysCacheService.SetMenu(userId, appCode, antDesignTreeNodes); // 缂撳瓨缁撴灉
+            }
+            return antDesignTreeNodes;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛鑿滃崟鎵�灞炵殑搴旂敤缂栫爜闆嗗悎
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<string>> GetUserMenuAppCodeList(long userId)
+        {
+            var roleIdList = await _sysUserRoleService.GetUserRoleIdList(userId);
+            var menuIdList = await _sysRoleMenuService.GetRoleMenuIdList(roleIdList);
+            return await _sysMenuRep.DetachedEntities.Where(u => menuIdList.Contains(u.Id))
+                                                     .Where(u => u.Status == CommonStatus.ENABLE)
+                                                     .Select(u => u.Application).ToListAsync();
+        }
+
+        /// <summary>
+        /// 绯荤粺鑿滃崟鍒楄〃锛堟爲琛級
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysMenu/list")]
+        public async Task<dynamic> GetMenuList([FromQuery] GetMenuListInput input)
+        {
+            var application = !string.IsNullOrEmpty(input.Application?.Trim());
+            var name = !string.IsNullOrEmpty(input.Name?.Trim());
+            var menus = await _sysMenuRep.DetachedEntities.Where((application, u => u.Application == input.Application.Trim()),
+                                                                 (name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")))
+                                                          .Where(u => u.Status == CommonStatus.ENABLE).OrderBy(u => u.Sort)
+                                                          .ProjectToType<MenuOutput>()
+                                                          .ToListAsync();
+            return new TreeBuildUtil<MenuOutput>().Build(menus);
+        }
+
+        /// <summary>
+        /// 绯荤粺鑿滃崟鍒楄〃锛堟爲琛級
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysMenu/listpda")]
+        public async Task<List<wmsPdaPowerMenuOutput>> GetMenuListPda([FromQuery] QueryRoleInput input)
+        {
+            var wmsPdaPowerList = await _wmsPdaPower.DetachedEntities.Where(u => 1 == 1).ProjectToType<WmsPdaPowerOutput>().ToListAsync();
+            var dicDataList = await _sysDictData.Where(p => p.TypeId == 383290718294085).ToListAsync();
+            var wmsRolePdaMenuList = await _wmsRolePdaMenu.DetachedEntities.Where(p => p.SysRoleId == input.Id).ToListAsync();
+           
+            
+            foreach (var item in wmsRolePdaMenuList)
+            {
+                var model = wmsPdaPowerList.Where(p => p.Id == item.PdaMenuId).FirstOrDefault();
+                if (model != null)
+                {
+                    wmsPdaPowerList.Where(p => p.Id == item.PdaMenuId).FirstOrDefault().IsCheck = true;
+                }
+            }
+            var listData = new List<wmsPdaPowerMenuOutput>();
+            foreach (var item in dicDataList)
+            {
+                var enumValue = LesWorkShopType.FAPAOCHEJIAN;
+                if (item.Code == "1") enumValue = LesWorkShopType.FAPAOCHEJIAN;
+                else if(item.Code=="2") enumValue = LesWorkShopType.JIAOHEBANCHEJIAN;
+                else if (item.Code == "3") enumValue = LesWorkShopType.JHBCJ;
+                else if (item.Code == "4") enumValue = LesWorkShopType.RSBCJ;
+                else if (item.Code == "5") enumValue = LesWorkShopType.YLKCJ;
+                else  enumValue = LesWorkShopType.TY;
+                listData.Add(new wmsPdaPowerMenuOutput()
+                {
+                    WorkShopName = item.Value,
+                    WmsPdaPowerOutput = wmsPdaPowerList.Where(n => n.WorkShopType == enumValue).ToList()
+                }); 
+            }
+            return listData;
+        }
+
+        /// <summary>
+        /// 鍒涘缓Pids鏍煎紡
+        /// 濡傛灉pid鏄�0椤剁骇鑺傜偣锛宲ids灏辨槸 [0];
+        /// 濡傛灉pid涓嶆槸椤剁骇鑺傜偣锛宲ids灏辨槸 pid鑿滃崟鐨� pids + [pid] + ,
+        /// </summary>
+        /// <param name="pid"></param>
+        /// <returns></returns>
+        private async Task<string> CreateNewPids(long pid)
+        {
+            if (pid == 0L)
+            {
+                return "[0],";
+            }
+            else
+            {
+                var pmenu = await _sysMenuRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == pid);
+                return pmenu.Pids + "[" + pid + "],";
+            }
+        }
+
+        /// <summary>
+        /// 澧炲姞鍜岀紪杈戞椂妫�鏌ュ弬鏁�
+        /// </summary>
+        /// <param name="input"></param>
+        private static void CheckMenuParam(MenuInput input)
+        {
+            var type = input.Type;
+            var router = input.Router;
+            var permission = input.Permission;
+            var openType = input.OpenType;
+
+            if (type.Equals((int)MenuType.DIR))
+            {
+                if (string.IsNullOrEmpty(router))
+                    throw Oops.Oh(ErrorCode.D4001);
+            }
+            else if (type.Equals((int)MenuType.MENU))
+            {
+                if (string.IsNullOrEmpty(router))
+                    throw Oops.Oh(ErrorCode.D4001);
+                if (string.IsNullOrEmpty(openType.ToString()))
+                    throw Oops.Oh(ErrorCode.D4002);
+            }
+            else if (type.Equals((int)MenuType.BTN))
+            {
+                if (string.IsNullOrEmpty(permission))
+                    throw Oops.Oh(ErrorCode.D4003);
+                if (!permission.Contains(":"))
+                    throw Oops.Oh(ErrorCode.D4004);
+                // 鍒ゆ柇璇ヨ祫婧愭槸鍚﹀瓨鍦�
+                //permission = ":" + permission;
+                //var urlSet = resourceCache.getAllResources();
+                //if (!urlSet.Contains(permission.Replace(":","/")))
+                //    throw Oops.Oh(ErrorCode.meu1005);
+            }
+        }
+
+        /// <summary>
+        /// 澧炲姞绯荤粺鑿滃崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysMenu/add")]
+        public async Task AddMenu(AddMenuInput input)
+        {
+            var isExist = await _sysMenuRep.DetachedEntities.AnyAsync(u => u.Code == input.Code); // u.Name == input.Name
+            if (isExist)
+                throw Oops.Oh(ErrorCode.D4000);
+
+            // 鏍¢獙鍙傛暟
+            CheckMenuParam(input.Adapt<MenuInput>());
+
+            var menu = input.Adapt<SysMenu>();
+            menu.Pids = await CreateNewPids(input.Pid);
+            menu.Status = CommonStatus.ENABLE;
+            await menu.InsertAsync();
+
+            // 娓呴櫎缂撳瓨
+            await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_MENU);
+            await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_PERMISSION);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎绯荤粺鑿滃崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysMenu/delete")]
+        [UnitOfWork]
+        public async Task DeleteMenu(DeleteMenuInput input)
+        {
+            var childIdList = await _sysMenuRep.DetachedEntities.Where(u => u.Pids.Contains(input.Id.ToString()))
+                                                                .Select(u => u.Id).ToListAsync();
+            childIdList.Add(input.Id);
+
+            var menus = await _sysMenuRep.Where(u => childIdList.Contains(u.Id)).ToListAsync();
+            await _sysMenuRep.DeleteAsync(menus);
+
+            // 绾ц仈鍒犻櫎璇ヨ彍鍗曞強瀛愯彍鍗曞搴旂殑瑙掕壊-鑿滃崟琛ㄤ俊鎭�
+            await _sysRoleMenuService.DeleteRoleMenuListByMenuIdList(childIdList);
+
+            // 娓呴櫎缂撳瓨
+            await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_MENU);
+            await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_PERMISSION);
+        }
+
+        /// <summary>
+        /// 鏇存柊绯荤粺鑿滃崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysMenu/edit"),]
+        public async Task UpdateMenu(UpdateMenuInput input)
+        {
+            // Pid鍜孖d涓嶈兘涓�鑷达紝涓�鑷翠細瀵艰嚧鏃犻檺閫掑綊
+            if (input.Id == input.Pid)
+                throw Oops.Oh(ErrorCode.D4006);
+
+            var isExist = await _sysMenuRep.DetachedEntities.AnyAsync(u => u.Code == input.Code && u.Id != input.Id); // u.Name == input.Name
+            if (isExist)
+                throw Oops.Oh(ErrorCode.D4000);
+
+            // 鏍¢獙鍙傛暟
+            CheckMenuParam(input.Adapt<MenuInput>());
+            // 濡傛灉鏄紪杈戯紝鐖秈d涓嶈兘涓鸿嚜宸辩殑瀛愯妭鐐�
+            var childIdList = await _sysMenuRep.DetachedEntities.Where(u => u.Pids.Contains(input.Id.ToString()))
+                                                                .Select(u => u.Id).ToListAsync();
+            if (childIdList.Contains(input.Pid))
+                throw Oops.Oh(ErrorCode.D4006);
+
+            var oldMenu = await _sysMenuRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+
+            // 鐢熸垚鏂扮殑pids
+            var newPids = await CreateNewPids(input.Pid);
+
+            // 鏄惁鏇存柊瀛愬簲鐢ㄧ殑鏍囪瘑
+            var updateSubAppsFlag = false;
+            // 鏄惁鏇存柊瀛愯妭鐐圭殑pids鐨勬爣璇�
+            var updateSubPidsFlag = false;
+
+            // 濡傛灉搴旂敤鏈夊彉鍖�
+            if (input.Application != oldMenu.Application)
+            {
+                // 鐖惰妭鐐逛笉鏄牴鑺傜偣涓嶈兘绉诲姩搴旂敤
+                if (oldMenu.Pid != 0L)
+                    throw Oops.Oh(ErrorCode.D4007);
+                updateSubAppsFlag = true;
+            }
+            // 鐖惰妭鐐规湁鍙樺寲
+            if (input.Pid != oldMenu.Pid)
+                updateSubPidsFlag = true;
+
+            // 寮�濮嬫洿鏂版墍鏈夊瓙鑺傜偣鐨勯厤缃�
+            if (updateSubAppsFlag || updateSubPidsFlag)
+            {
+                // 鏌ユ壘鎵�鏈夊彾瀛愯妭鐐癸紝鍖呭惈瀛愯妭鐐圭殑瀛愯妭鐐�
+                var menuList = await _sysMenuRep.Where(u => EF.Functions.Like(u.Pids, $"%{oldMenu.Id}%")).ToListAsync();
+                // 鏇存柊鎵�鏈夊瓙鑺傜偣鐨勫簲鐢ㄤ负褰撳墠鑿滃崟鐨勫簲鐢�
+                if (menuList.Count > 0)
+                {
+                    // 鏇存柊鎵�鏈夊瓙鑺傜偣鐨刟pplication
+                    if (updateSubAppsFlag)
+                    {
+                        menuList.ForEach(u =>
+                        {
+                            u.Application = input.Application;
+                        });
+                    }
+
+                    // 鏇存柊鎵�鏈夊瓙鑺傜偣鐨刾ids
+                    if (updateSubPidsFlag)
+                    {
+                        menuList.ForEach(u =>
+                        {
+                            //ly-0415 鍘熶唬鐮�
+                            // 瀛愯妭鐐筽ids缁勬垚 = 褰撳墠鑿滃崟鏂皃ids + 褰撳墠鑿滃崟id + 瀛愯妭鐐硅嚜宸辩殑pids鍚庣紑
+                            //var oldParentCodesPrefix = oldMenu.Pids + "[" + oldMenu.Id + "],";
+                            //var oldParentCodesSuffix = u.Pids[oldParentCodesPrefix.Length..];
+                            //var menuParentCodes = newPids + "[" + oldMenu.Id + "]," + oldParentCodesSuffix;
+
+                            //ly-0415 鏀瑰悗浠g爜
+                            // 瀛愯妭鐐筽ids缁勬垚 = 褰撳墠鑿滃崟鏂皃ids + 褰撳墠鑿滃崟id + 瀛愯妭鐐硅嚜宸辩殑pids鍚庣紑
+                            var oldParentCodesPrefix = oldMenu.Pids + "[" + oldMenu.Id + "],";
+                           // var oldParentCodesSuffix = u.Pids[oldParentCodesPrefix.Length..];
+                            var menuParentCodes = newPids + "[" + oldMenu.Id + "],";
+
+                            u.Pids = menuParentCodes;
+                        });
+                    }
+                }
+            }
+
+            // 鏇存柊褰撳墠鑿滃崟
+            oldMenu = input.Adapt<SysMenu>();
+            oldMenu.Pids = newPids;
+            await oldMenu.UpdateAsync(ignoreNullValues: true);
+
+            // 娓呴櫎缂撳瓨
+            await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_MENU);
+            await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_PERMISSION);
+        }
+
+        /// <summary>
+        /// 鑾峰彇绯荤粺鑿滃崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysMenu/detail")]
+        public async Task<dynamic> GetMenu(QueryMenuInput input)
+        {
+            return await _sysMenuRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+        }
+
+        /// <summary>
+        /// 鑾峰彇绯荤粺鑿滃崟鏍戯紝鐢ㄤ簬鏂板銆佺紪杈戞椂閫夋嫨涓婄骇鑺傜偣
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysMenu/tree")]
+        public async Task<dynamic> GetMenuTree([FromQuery] GetMenuTreeInput input)
+        {
+            var application = !string.IsNullOrEmpty(input.Application?.Trim());
+            var menus = await _sysMenuRep.DetachedEntities
+                                         .Where(application, u => u.Application == input.Application.Trim())
+                                         .Where(u => u.Status == CommonStatus.ENABLE)
+                                         .Where(u => u.Type == MenuType.DIR || u.Type == MenuType.MENU)
+                                         .OrderBy(u => u.Sort)
+                                         .Select(u => new MenuTreeOutput
+                                         {
+                                             Id = u.Id,
+                                             ParentId = u.Pid,
+                                             IntValue = u.Id,
+                                             Title = u.Name,
+                                             Weight = u.Weight
+                                         }).ToListAsync();
+            return new TreeBuildUtil<MenuTreeOutput>().Build(menus);
+        }
+
+        /// <summary>
+        /// 鑾峰彇绯荤粺鑿滃崟鏍戯紝鐢ㄤ簬缁欒鑹叉巿鏉冩椂閫夋嫨
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysMenu/treeForGrant")]
+        public async Task<dynamic> TreeForGrant([FromQuery] TreeForGrantInput input)
+        {
+            var menuIdList = new List<long>();
+            if (!CurrentUserInfo.IsSuperAdmin)
+            {
+                var roleIdList = await _sysUserRoleService.GetUserRoleIdList(CurrentUserInfo.UserId);
+                menuIdList = await _sysRoleMenuService.GetRoleMenuIdList(roleIdList);
+            }
+
+            var application = !string.IsNullOrEmpty(input.Application?.Trim());
+            var menus = await _sysMenuRep.DetachedEntities
+                                         .Where(application, u => u.Application == input.Application.Trim())
+                                         .Where(u => u.Status == CommonStatus.ENABLE)
+                                         .Where(menuIdList.Count > 0, u => menuIdList.Contains(u.Id))
+                                         .OrderBy(u => u.Sort).Select(u => new MenuTreeOutput
+                                         {
+                                             Id = u.Id,
+                                             ParentId = u.Pid,
+                                             IntValue = u.Id,
+                                             Title = u.Name,
+                                             Weight = u.Weight
+                                         }).ToListAsync();
+            return new TreeBuildUtil<MenuTreeOutput>().Build(menus);
+        }
+
+        /// <summary>
+        /// 鏍规嵁搴旂敤缂栫爜鍒ゆ柇璇ユ満鏋勪笅鏄惁鏈夌姸鎬佷负姝e父鐨勮彍鍗�
+        /// </summary>
+        /// <param name="appCode"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<bool> HasMenu(string appCode)
+        {
+            return await _sysMenuRep.DetachedEntities.AnyAsync(u => u.Application == appCode && u.Status != CommonStatus.DELETED);
+        }
+
+        /// <summary>
+        /// 鏍规嵁绯荤粺搴旂敤鍒囨崲鑿滃崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysMenu/change")]
+        public async Task<List<AntDesignTreeNode>> ChangeAppMenu(ChangeAppMenuInput input)
+        {
+            return await GetLoginMenusAntDesign(CurrentUserInfo.UserId, input.Application);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/ISendMessageService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/ISendMessageService.cs
new file mode 100644
index 0000000..a28e8e6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/ISendMessageService.cs
@@ -0,0 +1,49 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISendMessageService
+    {
+        /// <summary>
+        /// 鍙戦�佹秷鎭粰鏌愪釜浜�
+        /// </summary>
+        /// <param name="title">鍙戦�佹爣棰�</param>
+        /// <param name="message">鍙戦�佸唴瀹�</param>
+        /// <param name="userId">鎺ユ敹浜�</param>
+        /// <param name="type">娑堟伅绫诲瀷</param>
+        /// <returns></returns>
+        Task SendMessageToUser(string title, string message, MessageType type, long userId);
+
+        /// <summary>
+        /// 鍙戦�佹秷鎭粰鏌愪簺浜�
+        /// </summary>
+        /// <param name="title">鍙戦�佹爣棰�</param>
+        /// <param name="message">鍙戦�佸唴瀹�</param>
+        /// <param name="userId">鎺ユ敹浜哄垪琛�</param>
+        /// <param name="type">娑堟伅绫诲瀷</param>
+        /// <returns></returns>
+        Task SendMessageToUsers(string title, string message, MessageType type, List<long> userId);
+
+        /// <summary>
+        /// 鍙戦�佹秷鎭粰鎵�鏈変汉
+        /// </summary>
+        /// <param name="title">鍙戦�佹爣棰�</param>
+        /// <param name="message">鍙戦�佸唴瀹�</param>
+        /// <param name="type">娑堟伅绫诲瀷</param>
+        /// <returns></returns>
+        Task SendMessageToAllUser(string title, string message, MessageType type);
+
+        /// <summary>
+        /// 鍙戦�佹秷鎭粰闄や簡鍙戦�佷汉鐨勫叾浠栦汉
+        /// </summary>
+        /// <param name="title">鍙戦�佹爣棰�</param>
+        /// <param name="message">鍙戦�佸唴瀹�</param>
+        /// <param name="userId">鍙戦�佷汉</param>
+        /// <param name="type">娑堟伅绫诲瀷</param>
+        /// <returns></returns>
+        Task SendMessageToOtherUser(string title, string message, MessageType type, long userId);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/SendMessageService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/SendMessageService.cs
new file mode 100644
index 0000000..91da075
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/SendMessageService.cs
@@ -0,0 +1,112 @@
+锘縰sing Admin.NET.Core;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.SignalR;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 娑堟伅鍙戦�佹湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings(Name = "Message", Order = 100)]
+    [Route("api")]
+    public class SendMessageService : ISendMessageService, IDynamicApiController, ITransient
+    {
+        private readonly ISysCacheService _sysCacheService;
+        private readonly IHubContext<ChatHub, IChatClient> _chatHubContext;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysCacheService"></param>
+        /// <param name="chatHubContext"></param>
+        public SendMessageService(ISysCacheService sysCacheService, IHubContext<ChatHub, IChatClient> chatHubContext)
+        {
+            _sysCacheService = sysCacheService;
+            _chatHubContext = chatHubContext;
+        }
+
+        /// <summary>
+        /// 鍙戦�佹秷鎭粰鎵�鏈変汉
+        /// </summary>
+        /// <param name="title">鍙戦�佹爣棰�</param>
+        /// <param name="message">鍙戦�佸唴瀹�</param>
+        /// <param name="type">娑堟伅绫诲瀷</param>
+        /// <returns></returns>
+        [HttpGet("sysMessage/allUser")]
+        public async Task SendMessageToAllUser(string title, string message, MessageType type)
+        {
+            await _chatHubContext.Clients.All.ReceiveMessage(new { title = title, message = message, messagetype = type });
+        }
+
+        /// <summary>
+        /// 鍙戦�佹秷鎭粰闄や簡鍙戦�佷汉鐨勫叾浠栦汉
+        /// </summary>
+        /// <param name="title">鍙戦�佹爣棰�</param>
+        /// <param name="message">鍙戦�佸唴瀹�</param>
+        /// <param name="userId">鍙戦�佷汉</param>
+        /// <param name="type">娑堟伅绫诲瀷</param>
+        /// <returns></returns>
+        [HttpGet("sysMessage/otherUser")]
+        public async Task SendMessageToOtherUser(string title, string message, MessageType type, long userId)
+        {
+            var onlineuserlist = await _sysCacheService.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER);
+
+            var user = onlineuserlist.Where(x => x.UserId == userId).ToList();
+
+            if (user != null)
+            {
+                await _chatHubContext.Clients.AllExcept(user[0].ConnectionId).ReceiveMessage(new { title = title, message = message, messagetype = type });
+            }
+        }
+
+        /// <summary>
+        /// 鍙戦�佹秷鎭粰鏌愪釜浜�
+        /// </summary>
+        /// <param name="title">鍙戦�佹爣棰�</param>
+        /// <param name="message">鍙戦�佸唴瀹�</param>
+        /// <param name="userId">鎺ユ敹浜�</param>
+        /// <param name="type">娑堟伅绫诲瀷</param>
+        /// <returns></returns>
+        [HttpGet("sysMessage/user")]
+        public async Task SendMessageToUser(string title, string message, MessageType type, long userId)
+        {
+            var onlineuserlist = await _sysCacheService.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER);
+
+            var user = onlineuserlist.Where(x => x.UserId == userId).ToList();
+            if (user != null)
+            {
+                foreach (var item in user)
+                {
+                    await _chatHubContext.Clients.Client(item.ConnectionId).ReceiveMessage(new { title = title, message = message, messagetype = type });
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鍙戦�佹秷鎭粰鏌愪簺浜�
+        /// </summary>
+        /// <param name="title">鍙戦�佹爣棰�</param>
+        /// <param name="message">鍙戦�佸唴瀹�</param>
+        /// <param name="userId">鎺ユ敹浜哄垪琛�</param>
+        /// <param name="type">娑堟伅绫诲瀷</param>
+        /// <returns></returns>
+        [HttpGet("sysMessage/users")]
+        public async Task SendMessageToUsers(string title, string message, MessageType type, List<long> userId)
+        {
+            var onlineuserlist = await _sysCacheService.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER);
+
+            List<string> userlist = new List<string>();
+
+            foreach (var item in onlineuserlist)
+            {
+                if (userId.Contains(item.UserId))
+                {
+                    userlist.Add(item.ConnectionId);
+                }
+            }
+            await _chatHubContext.Clients.Clients(userlist).ReceiveMessage(new { title = title, message = message, messagetype = type });
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/IMachineService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/IMachineService.cs
new file mode 100644
index 0000000..c26a278
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/IMachineService.cs
@@ -0,0 +1,26 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface IMachineService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<dynamic> GetMachineBaseInfo();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<dynamic> GetMachineNetWorkInfo();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<dynamic> GetMachineUseInfo();
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/MachineService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/MachineService.cs
new file mode 100644
index 0000000..f982338
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/MachineService.cs
@@ -0,0 +1,56 @@
+锘縰sing Admin.NET.Core;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏈嶅姟鍣ㄤ俊鎭湇鍔�
+    /// </summary>
+    [AllowAnonymous]
+    [ApiDescriptionSettings(Name = "Machine", Order = 100)]
+    [Route("api")]
+    public class MachineService : IMachineService, IDynamicApiController, ITransient
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public MachineService()
+        {
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏈嶅姟鍣ㄨ祫婧愪俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysMachine/use")]
+        public async Task<dynamic> GetMachineUseInfo()
+        {
+            var useInfo = MachineUtil.GetMachineUseInfo();
+            return await Task.FromResult(useInfo);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏈嶅姟鍣ㄥ熀鏈弬鏁�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysMachine/base")]
+        public async Task<dynamic> GetMachineBaseInfo()
+        {
+            return await MachineUtil.GetMachineBaseInfo();
+        }
+
+        /// <summary>
+        /// 鍔ㄦ�佽幏鍙栫綉缁滀俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysMachine/network")]
+        public async Task<dynamic> GetMachineNetWorkInfo()
+        {
+            var baseInfo = MachineUtil.GetMachineNetWorkInfo();
+            return await Task.FromResult(baseInfo);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeBase.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeBase.cs
new file mode 100644
index 0000000..3305d15
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeBase.cs
@@ -0,0 +1,60 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 閫氱煡鍏憡鍙傛暟
+    /// </summary>
+    public class NoticeBase
+    {
+        /// <summary>
+        /// 鏍囬
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 鍐呭
+        /// </summary>
+        public string Content { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+        /// </summary>
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 鍙戝竷浜篒d
+        /// </summary>
+        public long PublicUserId { get; set; }
+
+        /// <summary>
+        /// 鍙戝竷浜哄鍚�
+        /// </summary>
+        public string PublicUserName { get; set; }
+
+        /// <summary>
+        /// 鍙戝竷鏈烘瀯Id
+        /// </summary>
+        public long PublicOrgId { get; set; }
+
+        /// <summary>
+        /// 鍙戝竷鏈烘瀯鍚嶇О
+        /// </summary>
+        public string PublicOrgName { get; set; }
+
+        /// <summary>
+        /// 鍙戝竷鏃堕棿
+        /// </summary>
+        public DateTimeOffset? PublicTime { get; set; }
+
+        /// <summary>
+        /// 鎾ゅ洖鏃堕棿
+        /// </summary>
+        public DateTimeOffset? CancelTime { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+        /// </summary>
+        public NoticeStatus Status { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeDetailOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeDetailOutput.cs
new file mode 100644
index 0000000..a4db705
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeDetailOutput.cs
@@ -0,0 +1,46 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 绯荤粺閫氱煡鍏憡璇︽儏鍙傛暟
+    /// </summary>
+    public class NoticeDetailOutput : NoticeBase
+    {
+        /// <summary>
+        /// 閫氱煡鍒扮殑鐢ㄦ埛Id闆嗗悎
+        /// </summary>
+        public List<string> NoticeUserIdList { get; set; }
+
+        /// <summary>
+        /// 閫氱煡鍒扮殑鐢ㄦ埛闃呰淇℃伅闆嗗悎
+        /// </summary>
+        public List<NoticeUserRead> NoticeUserReadInfoList { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class NoticeUserRead
+    {
+        /// <summary>
+        /// 鐢ㄦ埛Id
+        /// </summary>
+        public long UserId { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛鍚嶇О
+        /// </summary>
+        public string UserName { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0鏈 1宸茶锛�
+        /// </summary>
+        public NoticeUserStatus ReadStatus { get; set; }
+
+        /// <summary>
+        /// 闃呰鏃堕棿
+        /// </summary>
+        public DateTimeOffset? ReadTime { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeInput.cs
new file mode 100644
index 0000000..d5fffe0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeInput.cs
@@ -0,0 +1,152 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 閫氱煡鍏憡鍙傛暟
+    /// </summary>
+    public class NoticeInput : PageInputBase
+    {
+        /// <summary>
+        /// 鏍囬
+        /// </summary>
+        public virtual string Title { get; set; }
+
+        /// <summary>
+        /// 鍐呭
+        /// </summary>
+        public virtual string Content { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+        /// </summary>
+        public virtual NoticeType Type { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+        /// </summary>
+        public virtual NoticeStatus Status { get; set; }
+
+        /// <summary>
+        /// 閫氱煡鍒扮殑浜�
+        /// </summary>
+        public virtual List<long> NoticeUserIdList { get; set; }
+    }
+
+    /// <summary>
+    /// 閫氱煡鍏憡鍙傛暟
+    /// </summary>
+    public class NoticePageInput : PageInputBase
+    {
+        /// <summary>
+        /// 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+        /// </summary>
+        public virtual int Type { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddNoticeInput
+    {
+        /// <summary>
+        /// 鏍囬
+        /// </summary>
+        [Required(ErrorMessage = "鏍囬涓嶈兘涓虹┖")]
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 鍐呭
+        /// </summary>
+        [Required(ErrorMessage = "鍐呭涓嶈兘涓虹┖")]
+        public string Content { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+        /// </summary>
+        [Required(ErrorMessage = "绫诲瀷涓嶈兘涓虹┖")]
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+        /// </summary>
+        [Required(ErrorMessage = "鐘舵�佷笉鑳戒负绌�")]
+        public NoticeStatus Status { get; set; }
+
+        /// <summary>
+        /// 閫氱煡鍒扮殑浜�
+        /// </summary>
+        [Required(ErrorMessage = "閫氱煡鍒扮殑浜轰笉鑳戒负绌�")]
+        public List<long> NoticeUserIdList { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteNoticeInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateNoticeInput
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        [Required(ErrorMessage = "閫氱煡鍏憡Id涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鏍囬
+        /// </summary>
+        [Required(ErrorMessage = "鏍囬涓嶈兘涓虹┖")]
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 鍐呭
+        /// </summary>
+        [Required(ErrorMessage = "鍐呭涓嶈兘涓虹┖")]
+        public string Content { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+        /// </summary>
+        [Required(ErrorMessage = "绫诲瀷涓嶈兘涓虹┖")]
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+        /// </summary>
+        [Required(ErrorMessage = "鐘舵�佷笉鑳戒负绌�")]
+        public NoticeStatus Status { get; set; }
+
+        /// <summary>
+        /// 閫氱煡鍒扮殑浜�
+        /// </summary>
+        [Required(ErrorMessage = "閫氱煡鍒扮殑浜轰笉鑳戒负绌�")]
+        public List<long> NoticeUserIdList { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryNoticeInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class ChangeStatusNoticeInput : BaseId
+    {
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+        /// </summary>
+        [Required(ErrorMessage = "鐘舵�佷笉鑳戒负绌�")]
+        public NoticeStatus Status { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeReceiveOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeReceiveOutput.cs
new file mode 100644
index 0000000..3cd16eb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeReceiveOutput.cs
@@ -0,0 +1,25 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 閫氱煡鍏憡鎺ユ敹鍙傛暟
+    /// </summary>
+    public class NoticeReceiveOutput : NoticeBase
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 闃呰鐘舵�侊紙瀛楀吀 0鏈 1宸茶锛�
+        /// </summary>
+        public NoticeUserStatus ReadStatus { get; set; }
+
+        /// <summary>
+        /// 闃呰鏃堕棿
+        /// </summary>
+        public DateTimeOffset? ReadTime { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeService.cs
new file mode 100644
index 0000000..e88d9cf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeService.cs
@@ -0,0 +1,67 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application.Notice
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysNoticeService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task AddNotice(AddNoticeInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task ChangeStatus(ChangeStatusNoticeInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task DeleteNotice(DeleteNoticeInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<NoticeDetailOutput> GetNotice([FromQuery] QueryNoticeInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<SysNotice>> QueryNoticePageList([FromQuery] NoticePageInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<NoticeReceiveOutput>> ReceivedNoticePageList([FromQuery] NoticePageInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateNotice(UpdateNoticeInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<dynamic> UnReadNoticeList([FromQuery] NoticeInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeUserService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeUserService.cs
new file mode 100644
index 0000000..1ebfa34
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeUserService.cs
@@ -0,0 +1,44 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application.Notice
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysNoticeUserService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="noticeId"></param>
+        /// <param name="noticeUserIdList"></param>
+        /// <param name="noticeUserStatus"></param>
+        /// <returns></returns>
+        Task Add(long noticeId, List<long> noticeUserIdList, NoticeUserStatus noticeUserStatus);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="noticeId"></param>
+        /// <returns></returns>
+        Task<List<SysNoticeUser>> GetNoticeUserListByNoticeId(long noticeId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="noticeId"></param>
+        /// <param name="userId"></param>
+        /// <param name="status"></param>
+        /// <returns></returns>
+        Task Read(long noticeId, long userId, NoticeUserStatus status);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="noticeId"></param>
+        /// <param name="noticeUserIdList"></param>
+        /// <param name="noticeUserStatus"></param>
+        /// <returns></returns>
+        Task Update(long noticeId, List<long> noticeUserIdList, NoticeUserStatus noticeUserStatus);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeService.cs
new file mode 100644
index 0000000..b0caf58
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeService.cs
@@ -0,0 +1,320 @@
+using Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application.Notice
+{
+    /// <summary>
+    /// 閫氱煡鍏憡鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "Notice", Order = 100)]
+    [Route("api")]
+    public class SysNoticeService : ISysNoticeService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysNotice> _sysNoticeRep;  // 閫氱煡鍏憡琛ㄤ粨鍌�
+        private readonly IRepository<SysNoticeUser> _sysNoticeUserRep;  // 閫氱煡鍏憡鐢ㄦ埛琛ㄤ粨鍌�
+        private readonly IRepository<SysEmp> _sysEmpRep;
+        private readonly ISysNoticeUserService _sysNoticeUserService;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysNoticeRep"></param>
+        /// <param name="sysNoticeUserRep"></param>
+        /// <param name="sysEmpRep"></param>
+        /// <param name="sysNoticeUserService"></param>
+        public SysNoticeService(IRepository<SysNotice> sysNoticeRep,
+                                IRepository<SysNoticeUser> sysNoticeUserRep,
+                                IRepository<SysEmp> sysEmpRep,
+                                ISysNoticeUserService sysNoticeUserService)
+        {
+            _sysNoticeRep = sysNoticeRep;
+            _sysNoticeUserRep = sysNoticeUserRep;
+            _sysEmpRep = sysEmpRep;
+            _sysNoticeUserService = sysNoticeUserService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ閫氱煡鍏憡
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysNotice/page")]
+        public async Task<PageResult<SysNotice>> QueryNoticePageList([FromQuery] NoticePageInput input)
+        {
+            var searchValue = !string.IsNullOrEmpty(input.SearchValue?.Trim());
+            var notices = await _sysNoticeRep.DetachedEntities
+                                             .Where(searchValue, u => EF.Functions.Like(u.Title, $"%{input.SearchValue.Trim()}%") ||
+                                                                      EF.Functions.Like(u.Content, $"%{input.SearchValue.Trim()}%"))
+                                             .Where(input.Type > 0, u => u.Type == input.Type)
+                                             .Where(u => u.Status != NoticeStatus.DELETED)
+                                             //閫氱煡鍏憡绠$悊搴斿彧鏈夊彂甯冧汉鍙互绠$悊鑷繁鍙戝竷鐨勶紝鍏朵粬浜哄彧鑳藉湪宸叉敹鍏憡涓湅鍒�
+                                             .Where(u => u.PublicUserId == CurrentUserInfo.UserId)
+                                             .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return notices;
+        }
+
+        /// <summary>
+        /// 澧炲姞閫氱煡鍏憡
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysNotice/add")]
+        public async Task AddNotice(AddNoticeInput input)
+        {
+            if (input.Status != NoticeStatus.DRAFT && input.Status != NoticeStatus.PUBLIC)
+                throw Oops.Oh(ErrorCode.D7000);
+
+            var notice = input.Adapt<SysNotice>();
+            await UpdatePublicInfo(notice);
+            // 濡傛灉鏄彂甯冿紝鍒欒缃彂甯冩椂闂�
+            if (input.Status == NoticeStatus.PUBLIC)
+                notice.PublicTime = DateTimeOffset.Now;
+            var newItem = await notice.InsertNowAsync();
+            //濡傛灉鏄崏绋垮垯灏嗙姸鎬佹爣璁颁负鏆備笉閫氱煡锛屼笅娆℃洿鏀圭姸鎬佸悗鍐嶄慨鏀逛负鏈洿鏀圭姸鎬�
+            if (notice.Status != NoticeStatus.DRAFT)
+            {
+                // 閫氱煡鍒扮殑浜�
+                var noticeUserIdList = input.NoticeUserIdList;
+                var noticeUserStatus = NoticeUserStatus.UNREAD;
+                await _sysNoticeUserService.Add(newItem.Entity.Id, noticeUserIdList, noticeUserStatus);
+            }
+            else
+            {
+                var noticeUserIdList = input.NoticeUserIdList;
+                var noticeUserStatus = NoticeUserStatus.NONOTICE;
+                await _sysNoticeUserService.Add(newItem.Entity.Id, noticeUserIdList, noticeUserStatus);
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎閫氱煡鍏憡
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysNotice/delete")]
+        public async Task DeleteNotice(DeleteNoticeInput input)
+        {
+            var notice = await _sysNoticeRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (notice.Status != NoticeStatus.DRAFT && notice.Status != NoticeStatus.CANCEL) // 鍙兘鍒犻櫎鑽夌鍜屾挙鍥炵殑鍏憡
+                throw Oops.Oh(ErrorCode.D7001);
+            if (notice.PublicUserId != CurrentUserInfo.UserId)
+                throw Oops.Oh(ErrorCode.D7003);
+            await notice.DeleteAsync();
+        }
+
+        /// <summary>
+        /// 鏇存柊閫氱煡鍏憡
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysNotice/edit")]
+        public async Task UpdateNotice(UpdateNoticeInput input)
+        {
+            if (input.Status != NoticeStatus.DRAFT && input.Status != NoticeStatus.PUBLIC)
+                throw Oops.Oh(ErrorCode.D7000);
+
+            //  闈炶崏绋跨姸鎬�
+            if (input.Status != NoticeStatus.DRAFT)
+                throw Oops.Oh(ErrorCode.D7002);
+            // 濡傛灉鍙戝竷鑰呴潪鏈汉鍒欎笉鑳戒慨鏀�
+            SysNotice noticeInDb = await _sysNoticeRep.DetachedEntities.Where(u => u.Id == input.Id).FirstOrDefaultAsync();
+            if (noticeInDb.PublicUserId != CurrentUserInfo.UserId)
+                throw Oops.Oh(ErrorCode.D7003);
+
+            var notice = input.Adapt<SysNotice>();
+            if (input.Status == NoticeStatus.PUBLIC)
+            {
+                notice.PublicTime = DateTimeOffset.Now;
+                await UpdatePublicInfo(notice);
+            }
+            await notice.UpdateAsync();
+            //濡傛灉淇敼鍚庣殑鐘舵�佷负闈炶崏绋跨姸鎬佸垯閫氱煡
+            if (notice.Status != NoticeStatus.DRAFT)
+            {
+                // 閫氱煡鍒扮殑浜�
+                var noticeUserIdList = input.NoticeUserIdList;
+                var noticeUserStatus = NoticeUserStatus.UNREAD;
+                await _sysNoticeUserService.Update(input.Id, noticeUserIdList, noticeUserStatus);
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇閫氱煡鍏憡璇︽儏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysNotice/detail")]
+        public async Task<NoticeDetailOutput> GetNotice([FromQuery] QueryNoticeInput input)
+        {
+            var notice = await _sysNoticeRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+
+            // 鑾峰彇閫氱煡鍒扮殑鐢ㄦ埛
+            var noticeUserList = await _sysNoticeUserService.GetNoticeUserListByNoticeId(input.Id);
+            var noticeUserIdList = new List<string>();
+            var noticeUserReadInfoList = new List<NoticeUserRead>();
+            if (noticeUserList != null)
+            {
+                noticeUserList.ForEach(u =>
+                {
+                    noticeUserIdList.Add(u.UserId.ToString());
+                    var noticeUserRead = new NoticeUserRead
+                    {
+                        UserId = u.UserId,
+                        UserName = CurrentUserInfo.Name,
+                        ReadStatus = u.ReadStatus,
+                        ReadTime = u.ReadTime
+                    };
+                    noticeUserReadInfoList.Add(noticeUserRead);
+                });
+            }
+            var noticeResult = notice.Adapt<NoticeDetailOutput>();
+            noticeResult.NoticeUserIdList = noticeUserIdList;
+            noticeResult.NoticeUserReadInfoList = noticeUserReadInfoList;
+            if (noticeResult.Status == NoticeStatus.CANCEL)
+            {
+                noticeResult.Content = "<h1 style=\"text-align: center; \">璇ュ唴瀹瑰凡琚彂甯冭�呮挙鍥�</h1>";
+            }
+            // 濡傛灉璇ユ潯閫氱煡鍏憡涓哄凡鍙戝竷锛屽垯灏嗗綋鍓嶇敤鎴风殑璇ユ潯閫氱煡鍏憡璁剧疆涓哄凡璇�
+            if (notice.Status == NoticeStatus.PUBLIC || notice.Status == NoticeStatus.CANCEL)
+                await _sysNoticeUserService.Read(notice.Id, CurrentUserInfo.UserId, NoticeUserStatus.READ);
+            return noticeResult;
+        }
+
+        /// <summary>
+        /// 淇敼閫氱煡鍏憡鐘舵��
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysNotice/changeStatus")]
+        public async Task ChangeStatus(ChangeStatusNoticeInput input)
+        {
+            // 鐘舵�佸簲涓烘挙鍥炴垨鍒犻櫎鎴栧彂甯�
+            if (input.Status != NoticeStatus.CANCEL && input.Status != NoticeStatus.DELETED && input.Status != NoticeStatus.PUBLIC)
+                throw Oops.Oh(ErrorCode.D7000);
+
+            var noticeuser = await _sysNoticeUserRep.DetachedEntities.Where(u => u.NoticeId == input.Id).Select(u => u.UserId).ToListAsync();
+
+            var notice = await _sysNoticeRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (notice.PublicUserId != CurrentUserInfo.UserId)
+            {
+                throw Oops.Oh(ErrorCode.D7003);
+            }
+            notice.Status = input.Status;
+            if (input.Status == NoticeStatus.CANCEL)
+            {
+                notice.CancelTime = DateTimeOffset.Now;
+            }
+            else if (input.Status == NoticeStatus.PUBLIC)
+            {
+                notice.PublicTime = DateTimeOffset.Now;
+            }
+            await notice.UpdateAsync();
+            if (notice.Status != NoticeStatus.DRAFT)
+            {
+                // 閫氱煡鍒扮殑浜�
+                var noticeUserIdList = noticeuser;
+                var noticeUserStatus = NoticeUserStatus.UNREAD;
+                await _sysNoticeUserService.Update(input.Id, noticeUserIdList, noticeUserStatus);
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎺ユ敹鐨勯�氱煡鍏憡
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysNotice/received")]
+        public async Task<PageResult<NoticeReceiveOutput>> ReceivedNoticePageList([FromQuery] NoticePageInput input)
+        {
+            var searchValue = !string.IsNullOrEmpty(input.SearchValue?.Trim());
+            var notices = await _sysNoticeRep.DetachedEntities.Join(_sysNoticeUserRep.DetachedEntities, u => u.Id, e => e.NoticeId, (u, e) => new { u, e })
+                                             .Where(u => u.e.UserId == CurrentUserInfo.UserId)
+                                             .Where(searchValue, u => EF.Functions.Like(u.u.Title, $"%{input.SearchValue.Trim()}%") ||
+                                                                      EF.Functions.Like(u.u.Content, $"%{input.SearchValue.Trim()}%"))
+                                             .Where(input.Type > 0, u => u.u.Type == input.Type)
+                                             .Where(u => u.u.Status != NoticeStatus.DELETED && u.u.Status != NoticeStatus.DRAFT)
+                                             .Select(u => u.u.Adapt(u.e.Adapt<NoticeReceiveOutput>()))
+                                             .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return notices;
+        }
+
+        /// <summary>
+        /// 鏇存柊鍙戝竷淇℃伅
+        /// </summary>
+        /// <param name="notice"></param>
+        [NonAction]
+        private async Task UpdatePublicInfo(SysNotice notice)
+        {
+            var currUserId = CurrentUserInfo.UserId;
+            var emp = await _sysEmpRep.FirstOrDefaultAsync(u => u.Id == currUserId, false);
+            notice.PublicUserId = currUserId;
+            notice.PublicUserName = CurrentUserInfo.Name;
+            notice.PublicOrgId = emp.OrgId;
+            notice.PublicOrgName = emp.OrgName;
+        }
+
+        /// <summary>
+        /// 鏈鐞嗘秷鎭�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysNotice/unread")]
+        public async Task<dynamic> UnReadNoticeList([FromQuery] NoticeInput input)
+        {
+            var dic = typeof(NoticeType).EnumToList();
+            var notices = await (from n in _sysNoticeRep.AsQueryable()
+                                 join u in _sysNoticeUserRep.AsQueryable() on n.Id equals u.NoticeId
+                                 where u.UserId == CurrentUserInfo.UserId
+                                 && u.ReadStatus == NoticeUserStatus.UNREAD
+                                 orderby n.CreatedTime descending
+                                 select new NoticeReceiveOutput
+                                 {
+                                     CancelTime = n.CancelTime,
+                                     Id = n.Id,
+                                     Content = n.Content,
+                                     Title = n.Title,
+                                     Status = n.Status,
+                                     Type = n.Type,
+                                     PublicOrgId = n.PublicOrgId,
+                                     PublicOrgName = n.PublicOrgName,
+                                     PublicTime = n.PublicTime,
+                                     PublicUserId = n.PublicUserId,
+                                     PublicUserName = n.PublicUserName,
+                                     ReadStatus = u.ReadStatus,
+                                     ReadTime = u.ReadTime
+                                 })
+                                 .Skip(input.PageNo > 0 ? input.PageNo - 1 : input.PageNo)
+                                 .Take(input.PageSize)
+                                 .ToListAsync();
+
+            var count = notices.Count();
+
+            List<dynamic> noticeClays = new List<dynamic>();
+            int index = 0;
+            foreach (var item in dic)
+            {
+                noticeClays.Add(
+                    new
+                    {
+                        Index = index++,
+                        Key = item.Describe,
+                        Value = item.Value,
+                        NoticeData = notices.Where(m => m.Type == item.Value).ToList()
+                    }
+                );
+            }
+            return new
+            {
+                Rows = noticeClays,
+                TotalRows = count
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeUserService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeUserService.cs
new file mode 100644
index 0000000..a714429
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeUserService.cs
@@ -0,0 +1,86 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application.Notice
+{
+    /// <summary>
+    /// 閫氱煡鍏憡鐢ㄦ埛
+    /// </summary>
+    public class SysNoticeUserService : ISysNoticeUserService, ITransient
+    {
+        private readonly IRepository<SysNoticeUser> _sysNoticeUserRep;  // 閫氱煡鍏憡鐢ㄦ埛琛ㄤ粨鍌�
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysNoticeUserRep"></param>
+        public SysNoticeUserService(IRepository<SysNoticeUser> sysNoticeUserRep)
+        {
+            _sysNoticeUserRep = sysNoticeUserRep;
+        }
+
+        /// <summary>
+        /// 澧炲姞
+        /// </summary>
+        /// <param name="noticeId"></param>
+        /// <param name="noticeUserIdList"></param>
+        /// <param name="noticeUserStatus"></param>
+        /// <returns></returns>
+        public async Task Add(long noticeId, List<long> noticeUserIdList, NoticeUserStatus noticeUserStatus)
+        {
+            var noticeUserList = noticeUserIdList.Select(u => new SysNoticeUser
+            {
+                NoticeId = noticeId,
+                UserId = u,
+                ReadStatus = noticeUserStatus
+            });
+            await _sysNoticeUserRep.InsertAsync(noticeUserList);
+        }
+
+        /// <summary>
+        /// 鏇存柊
+        /// </summary>
+        /// <param name="noticeId"></param>
+        /// <param name="noticeUserIdList"></param>
+        /// <param name="noticeUserStatus"></param>
+        /// <returns></returns>
+        public async Task Update(long noticeId, List<long> noticeUserIdList, NoticeUserStatus noticeUserStatus)
+        {
+            var noticeUsers = await _sysNoticeUserRep.Where(u => u.NoticeId == noticeId).ToListAsync();
+            await _sysNoticeUserRep.DeleteAsync(noticeUsers);
+
+            await Add(noticeId, noticeUserIdList, noticeUserStatus);
+        }
+
+        /// <summary>
+        /// 鑾峰彇閫氱煡鍏憡鐢ㄦ埛鍒楄〃
+        /// </summary>
+        /// <param name="noticeId"></param>
+        /// <returns></returns>
+        public async Task<List<SysNoticeUser>> GetNoticeUserListByNoticeId(long noticeId)
+        {
+            return await _sysNoticeUserRep.Where(u => u.NoticeId == noticeId).ToListAsync();
+        }
+
+        /// <summary>
+        /// 璁剧疆閫氱煡鍏憡璇诲彇鐘舵��
+        /// </summary>
+        /// <param name="noticeId"></param>
+        /// <param name="userId"></param>
+        /// <param name="status"></param>
+        /// <returns></returns>
+        public async Task Read(long noticeId, long userId, NoticeUserStatus status)
+        {
+            var noticeUser = await _sysNoticeUserRep.FirstOrDefaultAsync(u => u.NoticeId == noticeId && u.UserId == userId);
+            if (noticeUser != null)
+            {
+                noticeUser.ReadStatus = status;
+                noticeUser.ReadTime = DateTimeOffset.Now;
+                await noticeUser.UpdateAsync();
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/Dto/OnlineUserOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/Dto/OnlineUserOutput.cs
new file mode 100644
index 0000000..79657ba
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/Dto/OnlineUserOutput.cs
@@ -0,0 +1,58 @@
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class OnlineUserOutput
+    {
+        /// <summary>
+        /// 杩炴帴Id
+        /// </summary>
+        public string ConnectionId { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛Id
+        /// </summary>
+        public long UserId { get; set; }
+
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        public string Account { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庤繛鎺ユ椂闂�
+        /// </summary>
+        public DateTimeOffset LastTime { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥褰旾P
+        /// </summary>
+        public string LastLoginIp { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥褰曟墍鐢ㄦ祻瑙堝櫒
+        /// </summary>
+        public string LastLoginBrowser { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥褰曟墍鐢ㄧ郴缁�
+        /// </summary>
+        public string LastLoginOs { get; set; }
+
+        ///// <summary>
+        ///// 绉熸埛id
+        ///// </summary>
+        //public long TenantId { get; set; }
+
+        /// <summary>
+        /// 绉熸埛鍚嶇О
+        /// </summary>
+        public string TenantName { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/ISysOnlineUserService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/ISysOnlineUserService.cs
new file mode 100644
index 0000000..1258de7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/ISysOnlineUserService.cs
@@ -0,0 +1,37 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysOnlineUserService
+    {
+        /// <summary>
+        /// 鍒嗛〉鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<OnlineUserOutput>> QueryOnlineUserPageList(PageInputBase input);
+
+        /// <summary>
+        /// 鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        Task<List<OnlineUserOutput>> List();
+
+        /// <summary>
+        /// 寮哄埗涓嬬嚎
+        /// </summary>
+        /// <param name="onlineUser">鍦ㄧ嚎鐢ㄦ埛淇℃伅</param>
+        /// <returns></returns>
+        Task ForceExist(OnlineUser onlineUser);
+
+        /// <summary>
+        /// 鍗曠敤鎴风櫥褰曞己鍒朵笅绾�
+        /// </summary>
+        /// <param name="user"></param>
+        /// <returns></returns>
+        Task SingleLoginForceExist(OnlineUser user);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/SysOnlineUserService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/SysOnlineUserService.cs
new file mode 100644
index 0000000..44400f1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/SysOnlineUserService.cs
@@ -0,0 +1,105 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.SignalR;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍦ㄧ嚎鐢ㄦ埛鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "OnlineUser", Order = 100)]
+    [Route("api")]
+    public class SysOnlineUserService : ISysOnlineUserService, IDynamicApiController, ITransient
+    {
+        private readonly ISysCacheService _sysCacheService;
+        private readonly IRepository<SysUser> _sysUserRep;// 鐢ㄦ埛琛ㄤ粨鍌�
+        //private readonly IRepository<SysTenant, MultiTenantDbContextLocator> _sysTenantRep;// 绉熸埛浠撳偍
+        private readonly IHubContext<ChatHub, IChatClient> _chatHubContext;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysCacheService"></param>
+        /// <param name="sysUerRep"></param>
+        /// <param name="chatHubContext"></param>
+        public SysOnlineUserService(ISysCacheService sysCacheService, IRepository<SysUser> sysUerRep,
+            //IRepository<SysTenant, MultiTenantDbContextLocator> sysTenantRep,
+            IHubContext<ChatHub, IChatClient> chatHubContext)
+        {
+            _sysCacheService = sysCacheService;
+            _sysUserRep = sysUerRep;
+            //_sysTenantRep = sysTenantRep;
+            _chatHubContext = chatHubContext;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysOnlineUser/page")]
+        public async Task<PageResult<OnlineUserOutput>> QueryOnlineUserPageList([FromQuery] PageInputBase input)
+        {
+            var onlineUsers = await _sysCacheService.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER) ?? new List<OnlineUser>();
+            var currUser = _sysUserRep.FirstOrDefault(u => u.Id == CurrentUserInfo.UserId, false);
+            var onlineUserOutputs = onlineUsers
+                //.Where(!CurrentUserInfo.IsSuperAdmin, o => o.TenantId == currUser.TenantId)
+                .Where(!string.IsNullOrWhiteSpace(input.SearchValue), o => o.Account.Contains(input.SearchValue) || o.Name.Contains(input.SearchValue))
+                .Select(o => o.Adapt<OnlineUserOutput>());
+
+            var currentPageData = onlineUserOutputs.ToADPagedList(input.PageNo, input.PageSize);
+
+            //濉厖绉熸埛鍚嶇О
+            //var tenants = await _sysTenantRep.DetachedEntities.ToListAsync();
+            //currentPageData.Rows.ToList().ForEach(o => o.TenantName = tenants.FirstOrDefault(p => p.Id == o.TenantId)?.Name);
+
+            return currentPageData;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysOnlineUser/list")]
+        public async Task<List<OnlineUserOutput>> List()
+        {
+            var onlineUsers = await _sysCacheService.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER) ?? new List<OnlineUser>();
+            var currUser = _sysUserRep.FirstOrDefault(u => u.Id == CurrentUserInfo.UserId, false);
+            var onlineUserOutputs = onlineUsers
+                //.Where(!CurrentUserInfo.IsSuperAdmin, o => o.TenantId == currUser.TenantId)
+                .Select(o => o.Adapt<OnlineUserOutput>())
+                .ToList();
+
+            //濉厖绉熸埛鍚嶇О
+            //var tenants = await _sysTenantRep.DetachedEntities.ToListAsync();
+            //onlineUserOutputs.ForEach(o => o.TenantName = tenants.FirstOrDefault(p => p.Id == o.TenantId)?.Name);
+
+            return onlineUserOutputs;
+        }
+
+        /// <summary>
+        /// 寮哄埗涓嬬嚎
+        /// </summary>
+        /// <param name="user"></param>
+        /// <returns></returns>
+        [HttpPost("sysOnlineUser/forceExist")]
+        public async Task ForceExist([FromBody] OnlineUser user)
+        {
+            await _chatHubContext.Clients.Client(user.ConnectionId).ForceExist();
+        }
+        /// <summary>
+        /// 鍗曠敤鎴风櫥褰曞己鍒朵笅绾�
+        /// </summary>
+        /// <param name="user"></param>
+        /// <returns></returns>
+        public async Task SingleLoginForceExist([FromBody] OnlineUser user)
+        {
+            await _chatHubContext.Clients.Client(user.ConnectionId).SingleLoginForceExist();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgInput.cs
new file mode 100644
index 0000000..17e7d9d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgInput.cs
@@ -0,0 +1,180 @@
+锘縰sing Admin.NET.Core;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 缁勭粐鏈烘瀯鍙傛暟
+    /// </summary>
+    public class OrgListInput
+    {
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public string Pid { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class OrgAddInput
+    {
+        /// <summary>
+        /// 鏈烘瀯绫诲瀷-鍝佺墝_1銆佹�诲簵(鍔犵洘/鐩磋惀)_2銆佺洿钀ュ簵_3銆佸姞鐩熷簵_4
+        /// </summary>
+        [Required(ErrorMessage = "璇烽�夋嫨鏈烘瀯绫诲瀷")]
+        public string OrgType { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "鏈烘瀯鍚嶇О涓嶈兘涓虹┖")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "鏈烘瀯缂栫爜涓嶈兘涓虹┖")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public string Pid { get; set; }
+
+        /// <summary>
+        /// 鐖禝ds
+        /// </summary>
+        public string Pids { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽
+        /// </summary>
+        public string Tel { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public int Status { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteOrgInput
+    {
+        /// <summary>
+        /// 鏈烘瀯Id
+        /// </summary>
+        [Required(ErrorMessage = "鏈烘瀯Id涓嶈兘涓虹┖")]
+        public string Id { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateOrgInput
+    {
+        /// <summary>
+        /// 鏈烘瀯绫诲瀷-鍝佺墝_1銆佹�诲簵(鍔犵洘/鐩磋惀)_2銆佺洿钀ュ簵_3銆佸姞鐩熷簵_4
+        /// </summary>
+        [Required(ErrorMessage = "璇烽�夋嫨鏈烘瀯绫诲瀷")]
+        public string OrgType { get; set; }
+
+        /// <summary>
+        /// 鏈烘瀯Id
+        /// </summary>
+        [Required(ErrorMessage = "鏈烘瀯Id涓嶈兘涓虹┖")]
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "鏈烘瀯鍚嶇О涓嶈兘涓虹┖")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "鏈烘瀯缂栫爜涓嶈兘涓虹┖")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public string Pid { get; set; }
+
+        /// <summary>
+        /// 鐖禝ds
+        /// </summary>
+        public string Pids { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽
+        /// </summary>
+        public string Tel { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public int Status { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryOrgInput
+    {
+        /// <summary>
+        /// 鏈烘瀯Id
+        /// </summary>
+        [Required(ErrorMessage = "鏈烘瀯Id涓嶈兘涓虹┖")]
+        public string Id { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class OrgPageInput : PageInputBase
+    {
+        /// <summary>
+        /// 鏈烘瀯绫诲瀷-鍝佺墝_1銆佹�诲簵(鍔犵洘/鐩磋惀)_2銆佺洿钀ュ簵_3銆佸姞鐩熷簵_4
+        /// </summary>
+        public string OrgType { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public string Pid { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgOutput.cs
new file mode 100644
index 0000000..b50cc25
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgOutput.cs
@@ -0,0 +1,60 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 缁勭粐鏈烘瀯鍙傛暟
+    /// </summary>
+    public class OrgOutput
+    {
+        /// <summary>
+        /// 鏈烘瀯绫诲瀷
+        /// </summary>
+        public string OrgType { get; set; }
+
+        /// <summary>
+        /// 鏈烘瀯Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public long Pid { get; set; }
+
+        /// <summary>
+        /// 鐖禝ds
+        /// </summary>
+        public string Pids { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽
+        /// </summary>
+        public string Tel { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public CommonStatus Status { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgTreeNode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgTreeNode.cs
new file mode 100644
index 0000000..3554821
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgTreeNode.cs
@@ -0,0 +1,73 @@
+锘縰sing Admin.NET.Core;
+using System.Collections;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 缁勭粐鏈烘瀯鏍�
+    /// </summary>
+    public class OrgTreeNode : ITreeNode
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        public long ParentId { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 鍊�
+        /// </summary>
+        public long Value { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭锛岃秺灏忎紭鍏堢骇瓒婇珮
+        /// </summary>
+        public int Weight { get; set; }
+
+        /// <summary>
+        /// 瀛愯妭鐐�
+        /// </summary>
+        public List<OrgTreeNode> Children { get; set; } = new List<OrgTreeNode>();
+
+        /// <summary>
+        /// 涓婁竴绾d
+        /// </summary>
+        public long Pid { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        public long GetId()
+        {
+            return Id;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        public long GetPid()
+        {
+            return ParentId;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="children"></param>
+        public void SetChildren(IList children)
+        {
+            Children = (List<OrgTreeNode>)children;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/ISysOrgService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/ISysOrgService.cs
new file mode 100644
index 0000000..a20196b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/ISysOrgService.cs
@@ -0,0 +1,79 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysOrgService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task AddOrg(OrgAddInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task DeleteOrg(DeleteOrgInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="dataScopeType"></param>
+        /// <param name="orgId"></param>
+        /// <returns></returns>
+        Task<List<long>> GetDataScopeListByDataScopeType(int dataScopeType, long orgId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<SysOrg> GetOrg([FromQuery] QueryOrgInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<OrgOutput>> GetOrgList([FromQuery] OrgListInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<dynamic> GetOrgTree();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<OrgOutput>> QueryOrgPageList([FromQuery] OrgPageInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateOrg(UpdateOrgInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<List<long>> GetAllDataScopeIdList();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<List<long>> GetUserDataScopeIdList();
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/SysOrgService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/SysOrgService.cs
new file mode 100644
index 0000000..15e318f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/SysOrgService.cs
@@ -0,0 +1,383 @@
+using Admin.NET.Core;
+using Furion;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 缁勭粐鏈烘瀯鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "Org", Order = 148)]
+    [Route("api")]
+    public class SysOrgService : ISysOrgService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysOrg> _sysOrgRep;  // 缁勭粐鏈烘瀯琛ㄤ粨鍌�
+        private readonly ISysCacheService _sysCacheService;
+        private readonly ISysEmpService _sysEmpService;
+        private readonly ISysEmpExtOrgPosService _sysEmpExtOrgPosService;
+        private readonly ISysRoleDataScopeService _sysRoleDataScopeService;
+        private readonly ISysUserDataScopeService _sysUserDataScopeService;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysOrgRep"></param>
+        /// <param name="sysCacheService"></param>
+        /// <param name="sysEmpService"></param>
+        /// <param name="sysEmpExtOrgPosService"></param>
+        /// <param name="sysRoleDataScopeService"></param>
+        /// <param name="sysUserDataScopeService"></param>
+        public SysOrgService(IRepository<SysOrg> sysOrgRep,
+                             ISysCacheService sysCacheService,
+                             ISysEmpService sysEmpService,
+                             ISysEmpExtOrgPosService sysEmpExtOrgPosService,
+                             ISysRoleDataScopeService sysRoleDataScopeService,
+                             ISysUserDataScopeService sysUserDataScopeService)
+        {
+            _sysOrgRep = sysOrgRep;
+            _sysCacheService = sysCacheService;
+            _sysEmpService = sysEmpService;
+            _sysEmpExtOrgPosService = sysEmpExtOrgPosService;
+            _sysRoleDataScopeService = sysRoleDataScopeService;
+            _sysUserDataScopeService = sysUserDataScopeService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ缁勭粐鏈烘瀯
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysOrg/page")]
+        public async Task<PageResult<OrgOutput>> QueryOrgPageList([FromQuery] OrgPageInput input)
+        {
+            var dataScopeList = GetDataScopeList(await GetUserDataScopeIdList());
+
+            var name = !string.IsNullOrEmpty(input.Name?.Trim());
+            var id = !string.IsNullOrEmpty(input.Id?.Trim());
+            var pId = !string.IsNullOrEmpty(input.Pid?.Trim());
+            var orgs = await _sysOrgRep.DetachedEntities
+                                       .Where((name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")), // 鏍规嵁鏈烘瀯鍚嶇О妯$硦鏌ヨ
+                                              (id, u => u.Id == long.Parse(input.Id.Trim())), // 鏍规嵁鏈烘瀯id鏌ヨ
+                                              (pId, u => EF.Functions.Like(u.Pids, $"%{input.Pid.Trim()}%")
+                                                         || u.Id == long.Parse(input.Pid.Trim()))) // 鏍规嵁鐖舵満鏋刬d鏌ヨ
+                                       .Where(dataScopeList.Count > 0, u => dataScopeList.Contains(u.Id)) // 闈炵鐞嗗憳鑼冨洿闄愬埗
+                                       .Where(u => u.Status != CommonStatus.DELETED).OrderBy(u => u.Sort)
+                                       .ProjectToType<OrgOutput>()
+                                       .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return orgs;
+        }
+
+        /// <summary>
+        /// (闈炵鐞嗗憳)鑾峰彇褰撳墠鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d锛�
+        /// </summary>
+        /// <param name="dataScopes"></param>
+        /// <returns></returns>
+        private List<long> GetDataScopeList(List<long> dataScopes)
+        {
+            var dataScopeList = new List<long>();
+            // 濡傛灉鏄秴绾х鐞嗗憳鍒欒幏鍙栨墍鏈夌粍缁囨満鏋勶紝鍚﹀垯鍙幏鍙栧叾鏁版嵁鑼冨洿鐨勬満鏋勬暟鎹�
+            if (!CurrentUserInfo.IsSuperAdmin)
+            {
+                if (dataScopes.Count < 1)
+                    return dataScopeList;
+
+                // 姝ゅ鑾峰彇鎵�鏈夌殑涓婄骇鑺傜偣锛岀敤浜庢瀯閫犲畬鏁存爲
+                dataScopes.ForEach(u =>
+                {
+                    var sysOrg = _sysOrgRep.DetachedEntities.FirstOrDefault(c => c.Id == u);
+                    if (sysOrg != null)
+                    {
+                        var parentAndChildIdListWithSelf = sysOrg.Pids.TrimEnd(',').Replace("[", "").Replace("]", "")
+                                                                    .Split(",").Select(u => long.Parse(u)).ToList();
+                        parentAndChildIdListWithSelf.Add(sysOrg.Id);
+                        dataScopeList.AddRange(parentAndChildIdListWithSelf);
+                    }
+                });
+            }
+
+            return dataScopeList;
+        }
+
+        /// <summary>
+        /// 鑾峰彇缁勭粐鏈烘瀯鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysOrg/list")]
+        public async Task<List<OrgOutput>> GetOrgList([FromQuery] OrgListInput input)
+        {
+            var dataScopeList = GetDataScopeList(await GetUserDataScopeIdList());
+
+            var pId = !string.IsNullOrEmpty(input.Pid?.Trim());
+            var orgs = await _sysOrgRep.DetachedEntities
+                                       .Where(pId, u => u.Pid == long.Parse(input.Pid))
+                                       .Where(dataScopeList.Count > 0, u => dataScopeList.Contains(u.Id))
+                                       .Where(u => u.Status != CommonStatus.DELETED)
+                                       .OrderBy(u => u.Sort)
+                                       .ProjectToType<OrgOutput>()
+                                       .ToListAsync();
+            return orgs;
+        }
+
+        /// <summary>
+        /// 澧炲姞缁勭粐鏈烘瀯
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysOrg/add")]
+        public async Task AddOrg(OrgAddInput input)
+        {
+            var isExist = await _sysOrgRep.DetachedEntities.AnyAsync(u => u.Name == input.Name || u.Code == input.Code);
+            if (isExist)
+                throw Oops.Oh(ErrorCode.D2002);
+            var dataScopes = await GetUserDataScopeIdList();
+            if (!CurrentUserInfo.IsSuperAdmin)
+            {
+                // 濡傛灉鏂板鐨勬満鏋勭埗Id涓嶆槸0锛屽垯杩涜鏁版嵁鏉冮檺鏍¢獙
+                if (input.Pid != "0" && !string.IsNullOrEmpty(input.Pid))
+                {
+                    // 鏂板缁勭粐鏈烘瀯鐨勭埗鏈烘瀯涓嶅湪鑷繁鐨勬暟鎹寖鍥村唴
+
+                    if (dataScopes.Count < 1 || !dataScopes.Contains(long.Parse(input.Pid)))
+                        throw Oops.Oh(ErrorCode.D2003);
+                }
+                else
+                    throw Oops.Oh(ErrorCode.D2006);
+            }
+
+            var sysOrg = input.Adapt<SysOrg>();
+            await FillPids(sysOrg);
+            var newOrg = await _sysOrgRep.InsertNowAsync(sysOrg);
+            // 褰撳墠鐢ㄦ埛涓嶆槸瓒呯骇绠$悊鍛樻椂锛屽皢鏂板鐨勫叕鍙稿姞鍒扮敤鎴风殑鏁版嵁鏉冮檺
+            if (!CurrentUserInfo.IsSuperAdmin)
+            {
+                var userId = CurrentUserInfo.UserId;
+                new SysUserDataScope
+                {
+                    SysUserId = userId,
+                    SysOrgId = newOrg.Entity.Id
+                }.Insert();
+                dataScopes.Add(newOrg.Entity.Id);
+                await _sysCacheService.SetDataScope(userId, dataScopes); // 缂撳瓨鏂扮粨鏋�
+            }
+        }
+
+        /// <summary>
+        /// 濉厖鐖禝ds瀛楁
+        /// </summary>
+        /// <param name="sysOrg"></param>
+        /// <returns></returns>
+        private async Task FillPids(SysOrg sysOrg)
+        {
+            if (sysOrg.Pid == 0L)
+            {
+                sysOrg.Pids = "[" + 0 + "],";
+            }
+            else
+            {
+                var t = await _sysOrgRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == sysOrg.Pid);
+                sysOrg.Pids = t.Pids + "[" + t.Id + "],";
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎缁勭粐鏈烘瀯
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysOrg/delete")]
+        [UnitOfWork]
+        public async Task DeleteOrg(DeleteOrgInput input)
+        {
+            var sysOrg = await _sysOrgRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == long.Parse(input.Id));
+
+            // 妫�娴嬫暟鎹寖鍥磋兘涓嶈兘鎿嶄綔杩欎釜鏈烘瀯
+            var dataScopes = await GetUserDataScopeIdList();
+            if (!CurrentUserInfo.IsSuperAdmin && (dataScopes.Count < 1 || !dataScopes.Contains(sysOrg.Id)))
+                throw Oops.Oh(ErrorCode.D2003);
+
+            // 璇ユ満鏋勪笅鏈夊憳宸ワ紝鍒欎笉鑳藉垹
+            var hasOrgEmp = await _sysEmpService.HasOrgEmp(sysOrg.Id);
+            if (hasOrgEmp)
+                throw Oops.Oh(ErrorCode.D2004);
+
+            // 璇ユ満鏋勪笅闈㈠瓙鏈烘瀯鑻ユ湁鍛樺伐锛屽垯涓嶈兘鍒�
+            var orgIds = await _sysOrgRep.DetachedEntities.Where(u => u.Pids.Contains(input.Id)).Select(u => u.Id).ToListAsync();
+            var emps = await _sysEmpService.HasOrgEmp(orgIds);
+            if (emps.Count > 0)
+                throw Oops.Oh(ErrorCode.D2004);
+
+            // 璇ラ檮灞炴満鏋勪笅鑻ユ湁鍛樺伐锛屽垯涓嶈兘鍒�
+            var hasExtOrgEmp = await _sysEmpExtOrgPosService.HasExtOrgEmp(sysOrg.Id);
+            if (hasExtOrgEmp)
+                throw Oops.Oh(ErrorCode.D2005);
+
+            // 绾ц仈鍒犻櫎瀛愯妭鐐�
+            var childIdList = await GetChildIdListWithSelfById(sysOrg.Id);
+            var orgs = await _sysOrgRep.Where(u => childIdList.Contains(u.Id)).ToListAsync();
+            await _sysOrgRep.DeleteAsync(orgs);
+
+            // 绾ц仈鍒犻櫎璇ユ満鏋勫強瀛愭満鏋勫搴旂殑瑙掕壊-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+            await _sysRoleDataScopeService.DeleteRoleDataScopeListByOrgIdList(childIdList);
+
+            // 绾ц仈鍒犻櫎璇ユ満鏋勫瓙鏈烘瀯瀵瑰簲鐨勭敤鎴�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+            await _sysUserDataScopeService.DeleteUserDataScopeListByOrgIdList(childIdList);
+        }
+
+        /// <summary>
+        /// 鏇存柊缁勭粐鏈烘瀯
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysOrg/edit")]
+        [UnitOfWork]
+        public async Task UpdateOrg(UpdateOrgInput input)
+        {
+            if (input.Pid != "0" && !string.IsNullOrEmpty(input.Pid))
+            {
+                var org = await _sysOrgRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == long.Parse(input.Pid));
+                _ = org ?? throw Oops.Oh(ErrorCode.D2000);
+            }
+            if (input.Id == input.Pid)
+                throw Oops.Oh(ErrorCode.D2001);
+
+            // 濡傛灉鏄紪杈戯紝鐖秈d涓嶈兘涓鸿嚜宸辩殑瀛愯妭鐐�
+            var childIdListById = await GetChildIdListWithSelfById(long.Parse(input.Id));
+            if (childIdListById.Contains(long.Parse(input.Pid)))
+                throw Oops.Oh(ErrorCode.D2001);
+
+            var sysOrg = await _sysOrgRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == long.Parse(input.Id));
+
+            // 妫�娴嬫暟鎹寖鍥磋兘涓嶈兘鎿嶄綔杩欎釜鏈烘瀯
+            var dataScopes = await GetUserDataScopeIdList();
+            if (!CurrentUserInfo.IsSuperAdmin && (dataScopes.Count < 1 || !dataScopes.Contains(sysOrg.Id)))
+                throw Oops.Oh(ErrorCode.D2003);
+
+            var isExist = await _sysOrgRep.DetachedEntities.AnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != sysOrg.Id);
+            if (isExist)
+                throw Oops.Oh(ErrorCode.D2002);
+
+            // 濡傛灉鍚嶇О鏈夊彉鍖栵紝鍒欎慨鏀瑰搴斿憳宸ョ殑鏈烘瀯鐩稿叧淇℃伅
+            if (!sysOrg.Name.Equals(input.Name))
+                await _sysEmpService.UpdateEmpOrgInfo(sysOrg.Id, sysOrg.Name);
+
+            sysOrg = input.Adapt<SysOrg>();
+            await FillPids(sysOrg);
+            await sysOrg.UpdateAsync(ignoreNullValues: true);
+
+            //// 灏嗘墍鏈夊瓙鐨勭埗id杩涜鏇存柊
+            //childIdListById.ForEach(u=> {
+            //    var child = _sysOrgRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == u.Id);
+            //    var newInput = child.Adapt<UpdateOrgInput>();
+            //    UpdateOrg(newInput).GetAwaiter();
+            //});
+        }
+
+        /// <summary>
+        /// 鑾峰彇缁勭粐鏈烘瀯淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysOrg/detail")]
+        public async Task<SysOrg> GetOrg([FromQuery] QueryOrgInput input)
+        {
+            return await _sysOrgRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == long.Parse(input.Id));
+        }
+
+        /// <summary>
+        /// 鏍规嵁鑺傜偣Id鑾峰彇鎵�鏈夊瓙鑺傜偣Id闆嗗悎锛屽寘鍚嚜宸�
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        private async Task<List<long>> GetChildIdListWithSelfById(long id)
+        {
+            var childIdList = await _sysOrgRep.DetachedEntities
+                                              .Where(u => EF.Functions.Like(u.Pids, $"%{id}%"))
+                                              .Select(u => u.Id).ToListAsync();
+            childIdList.Add(id);
+            return childIdList;
+        }
+
+        /// <summary>
+        /// 鑾峰彇缁勭粐鏈烘瀯鏍�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysOrg/tree")]
+        public async Task<dynamic> GetOrgTree()
+        {
+            var dataScopeList = new List<long>();
+            if (!CurrentUserInfo.IsSuperAdmin)
+            {
+                var dataScopes = await GetUserDataScopeIdList();
+                if (dataScopes.Count < 1)
+                    return dataScopeList;
+                dataScopeList = GetDataScopeList(dataScopes);
+            }
+            var orgs = await _sysOrgRep.DetachedEntities.Where(dataScopeList.Count > 0, u => dataScopeList.Contains(u.Id))
+                                                        .Where(u => u.Status == CommonStatus.ENABLE)
+                                                        .OrderBy(u => u.Sort)
+                                                        .ProjectToType<OrgTreeNode>()
+                                                        .ToListAsync();
+
+            return new TreeBuildUtil<OrgTreeNode>().Build(orgs);
+        }
+
+        /// <summary>
+        /// 鏍规嵁鏁版嵁鑼冨洿绫诲瀷鑾峰彇褰撳墠鐢ㄦ埛鐨勬暟鎹寖鍥达紙鏈烘瀯Id锛夐泦鍚�
+        /// </summary>
+        /// <param name="dataScopeType"></param>
+        /// <param name="orgId"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<long>> GetDataScopeListByDataScopeType(int dataScopeType, long orgId)
+        {
+            var orgIdList = new List<long>();
+            if (orgId < 0)
+                return orgIdList;
+
+            // 濡傛灉鏄寖鍥寸被鍨嬫槸鍏ㄩ儴鏁版嵁锛屽垯鑾峰彇褰撳墠鎵�鏈夌殑缁勭粐鏋舵瀯Id
+            if (dataScopeType == (int)DataScopeType.ALL)
+            {
+                orgIdList = await _sysOrgRep.DetachedEntities.Where(u => u.Status == CommonStatus.ENABLE).Select(u => u.Id).ToListAsync();
+            }
+            // 濡傛灉鑼冨洿绫诲瀷鏄湰閮ㄩ棬鍙婁互涓嬮儴闂紝鍒欐煡璇㈡湰鑺傜偣鍜屽瓙鑺傜偣闆嗗悎锛屽寘鍚湰鑺傜偣
+            else if (dataScopeType == (int)DataScopeType.DEPT_WITH_CHILD)
+            {
+                orgIdList = await GetChildIdListWithSelfById(orgId);
+            }
+            // 濡傛灉鏁版嵁鑼冨洿鏄湰閮ㄩ棬锛屼笉鍚瓙鑺傜偣锛屽垯鐩存帴杩斿洖鏈儴闂�
+            else if (dataScopeType == (int)DataScopeType.DEPT)
+            {
+                orgIdList.Add(orgId);
+            }
+            return orgIdList;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夌殑鏈烘瀯缁勭粐Id闆嗗悎
+        /// </summary>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<long>> GetAllDataScopeIdList()
+        {
+            return await _sysOrgRep.DetachedEntities.Select(u => u.Id).ToListAsync();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛�
+        /// </summary>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<long>> GetUserDataScopeIdList()
+        {
+            return await App.GetService<ISysUserService>().GetUserDataScopeIdList();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/Dto/PosInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/Dto/PosInput.cs
new file mode 100644
index 0000000..dbc199d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/Dto/PosInput.cs
@@ -0,0 +1,132 @@
+锘縰sing Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鑱屼綅鍙傛暟
+    /// </summary>
+    public class PosInput
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public int Status { get; set; }
+
+        /// <summary>
+        /// 褰撳墠椤电爜
+        /// </summary>
+        public int PageNo { get; set; } = 1;
+
+        /// <summary>
+        /// 椤电爜瀹归噺
+        /// </summary>
+        public int PageSize { get; set; } = 20;
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddPosInput
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "鑱屼綅鍚嶇О涓嶈兘涓虹┖")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "鑱屼綅缂栫爜涓嶈兘涓虹┖")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public int Status { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeletePosInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdatePosInput
+    {
+        /// <summary>
+        /// 鑱屼綅Id
+        /// </summary>
+        [Required(ErrorMessage = "鑱屼綅Id涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "鑱屼綅鍚嶇О涓嶈兘涓虹┖")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "鑱屼綅缂栫爜涓嶈兘涓虹┖")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public int Status { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryPosInput : BaseId
+    {
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/ISysPosService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/ISysPosService.cs
new file mode 100644
index 0000000..6564992
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/ISysPosService.cs
@@ -0,0 +1,53 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysPosService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task AddPos(AddPosInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task DeletePos(DeletePosInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<SysPos> GetPos([FromQuery] QueryPosInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<SysPos>> GetPosList([FromQuery] PosInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<SysPos>> QueryPosPageList([FromQuery] PosInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdatePos(UpdatePosInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/SysPosService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/SysPosService.cs
new file mode 100644
index 0000000..d5afeee
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/SysPosService.cs
@@ -0,0 +1,137 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鑱屼綅鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "Pos", Order = 147)]
+    [Route("api")]
+    public class SysPosService : ISysPosService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysPos> _sysPosRep;  // 鑱屼綅琛ㄤ粨鍌�
+
+        private readonly ISysEmpPosService _sysEmpPosService;
+        private readonly ISysEmpExtOrgPosService _sysEmpExtOrgPosService;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysPosRep"></param>
+        /// <param name="sysEmpPosService"></param>
+        /// <param name="sysEmpExtOrgPosService"></param>
+        public SysPosService(IRepository<SysPos> sysPosRep,
+                             ISysEmpPosService sysEmpPosService,
+                             ISysEmpExtOrgPosService sysEmpExtOrgPosService)
+        {
+            _sysPosRep = sysPosRep;
+            _sysEmpPosService = sysEmpPosService;
+            _sysEmpExtOrgPosService = sysEmpExtOrgPosService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鑾峰彇鑱屼綅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysPos/page")]
+        public async Task<PageResult<SysPos>> QueryPosPageList([FromQuery] PosInput input)
+        {
+            var name = !string.IsNullOrEmpty(input.Name?.Trim());
+            var code = !string.IsNullOrEmpty(input.Code?.Trim());
+            var pos = await _sysPosRep.DetachedEntities
+                                      .Where((name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")),
+                                             (code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%")))
+                                      .Where(u => u.Status == CommonStatus.ENABLE)
+                                      .OrderBy(u => u.Sort)
+                                      .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return pos;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鑱屼綅鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysPos/list")]
+        public async Task<List<SysPos>> GetPosList([FromQuery] PosInput input)
+        {
+            var code = !string.IsNullOrEmpty(input.Code?.Trim());
+            return await _sysPosRep.DetachedEntities.Where(code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%"))
+                                                    .Where(u => u.Status != CommonStatus.DELETED)
+                                                    .OrderBy(u => u.Sort).ToListAsync();
+        }
+
+        /// <summary>
+        /// 澧炲姞鑱屼綅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysPos/add")]
+        public async Task AddPos(AddPosInput input)
+        {
+            var isExist = await _sysPosRep.DetachedEntities.AnyAsync(u => u.Name == input.Name || u.Code == input.Code);
+            if (isExist)
+                throw Oops.Oh(ErrorCode.D6000);
+
+            var pos = input.Adapt<SysPos>();
+            await pos.InsertAsync();
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鑱屼綅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysPos/delete")]
+        public async Task DeletePos(DeletePosInput input)
+        {
+            // 璇ヨ亴浣嶄笅鏄惁鏈夊憳宸�
+            var hasPosEmp = await _sysEmpPosService.HasPosEmp(input.Id);
+            if (hasPosEmp)
+                throw Oops.Oh(ErrorCode.D6001);
+
+            // 璇ラ檮灞炶亴浣嶄笅鏄惁鏈夊憳宸�
+            var hasExtPosEmp = await _sysEmpExtOrgPosService.HasExtPosEmp(input.Id);
+            if (hasExtPosEmp)
+                throw Oops.Oh(ErrorCode.D6001);
+
+            var pos = await _sysPosRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await pos.DeleteAsync();
+        }
+
+        /// <summary>
+        /// 鏇存柊鑱屼綅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysPos/edit")]
+        public async Task UpdatePos(UpdatePosInput input)
+        {
+            var isExist = await _sysPosRep.DetachedEntities.AnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id);
+            if (isExist)
+                throw Oops.Oh(ErrorCode.D6000);
+
+            var pos = input.Adapt<SysPos>();
+            await pos.UpdateAsync(ignoreNullValues: true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鑱屼綅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysPos/detail")]
+        public async Task<SysPos> GetPos([FromQuery] QueryPosInput input)
+        {
+            return await _sysPosRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleInput.cs
new file mode 100644
index 0000000..4937334
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleInput.cs
@@ -0,0 +1,251 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瑙掕壊鍙傛暟
+    /// </summary>
+    public class RoleInput
+    {
+        /// <summary>
+        /// 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+        /// </summary>
+        public RoleTypeEnum RoleType { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class RolePageInput : PageInputBase
+    {
+        /// <summary>
+        /// 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+        /// </summary>
+        [Required(ErrorMessage = "璇烽�夋嫨瑙掕壊绫诲瀷")]
+        public RoleTypeEnum RoleType { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public virtual string Code { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddRoleInput
+    {
+        /// <summary>
+        /// 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+        /// </summary>
+        [Required(ErrorMessage = "璇烽�夋嫨瑙掕壊绫诲瀷")]
+        public RoleTypeEnum RoleType { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "瑙掕壊鍚嶇О涓嶈兘涓虹┖")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "瑙掕壊缂栫爜涓嶈兘涓虹┖")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+        /// </summary>
+        public int DataScopeType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteRoleInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateRoleInput
+    {
+        /// <summary>
+        /// 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+        /// </summary>
+        [Required(ErrorMessage = "璇烽�夋嫨瑙掕壊绫诲瀷")]
+        public RoleTypeEnum RoleType { get; set; }
+
+        /// <summary>
+        /// 瑙掕壊Id
+        /// </summary>
+        [Required(ErrorMessage = "瑙掕壊Id涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Required(ErrorMessage = "瑙掕壊鍚嶇О涓嶈兘涓虹┖")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Required(ErrorMessage = "瑙掕壊缂栫爜涓嶈兘涓虹┖")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+        /// </summary>
+        public int DataScopeType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryRoleInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class GrantRoleMenuInput : IXnInputBase
+    {
+        /// <summary>
+        /// 瑙掕壊Id
+        /// </summary>
+        [Required(ErrorMessage = "瑙掕壊Id涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+        /// </summary>
+        public int DataScopeType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<long> GrantMenuIdList { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<long> GrantRoleIdList { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<long> GrantOrgIdList { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class GrantRoleDataInput : IXnInputBase
+    {
+        /// <summary>
+        /// 瑙掕壊Id
+        /// </summary>
+        [Required(ErrorMessage = "瑙掕壊Id涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+        /// </summary>
+        public int DataScopeType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<long> GrantMenuIdList { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<long> GrantRoleIdList { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<long> GrantOrgIdList { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleOutput.cs
new file mode 100644
index 0000000..0a4bdc8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleOutput.cs
@@ -0,0 +1,30 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐧诲綍鐢ㄦ埛瑙掕壊鍙傛暟
+    /// </summary>
+    public class RoleOutput
+    {
+        /// <summary>
+        /// 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+        /// </summary>
+        public RoleTypeEnum RoleType { get; set; }
+
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleDataScopeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleDataScopeService.cs
new file mode 100644
index 0000000..a342714
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleDataScopeService.cs
@@ -0,0 +1,36 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysRoleDataScopeService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="orgIdList"></param>
+        /// <returns></returns>
+        Task DeleteRoleDataScopeListByOrgIdList(List<long> orgIdList);
+        
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        Task DeleteRoleDataScopeListByRoleId(long roleId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="roleIdList"></param>
+        /// <returns></returns>
+        Task<List<long>> GetRoleDataScopeIdList(List<long> roleIdList);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task GrantDataScope(GrantRoleDataInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleMenuService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleMenuService.cs
new file mode 100644
index 0000000..4057fdf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleMenuService.cs
@@ -0,0 +1,38 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysRoleMenuService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="menuIdList"></param>
+        /// <returns></returns>
+        Task DeleteRoleMenuListByMenuIdList(List<long> menuIdList);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        Task DeleteRoleMenuListByRoleId(long roleId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="roleIdList"></param>
+        /// <returns></returns>
+        Task<List<long>> GetRoleMenuIdList(List<long> roleIdList);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task GrantMenu(GrantRoleMenuInput input);
+
+        Task GrantPdaMenu(GrantRoleMenuInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleService.cs
new file mode 100644
index 0000000..067a158
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleService.cs
@@ -0,0 +1,109 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysRoleService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task AddRole(AddRoleInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task DeleteRole(DeleteRoleInput input);
+        
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        Task<string> GetNameByRoleId(long roleId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<List<RoleOutput>> GetRoleDropDown();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<SysRole> GetRoleInfo([FromQuery] QueryRoleInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<dynamic> GetRoleList([FromQuery] RoleInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="roleIdList"></param>
+        /// <param name="orgId"></param>
+        /// <returns></returns>
+        Task<List<long>> GetUserDataScopeIdList(List<long> roleIdList, long orgId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        Task<List<RoleOutput>> GetUserRoleList(long userId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task GrantData(GrantRoleDataInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task GrantMenu(GrantRoleMenuInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<long>> OwnData([FromQuery] QueryRoleInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<long>> OwnMenu([FromQuery] QueryRoleInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<SysRole>> QueryRolePageList([FromQuery] RolePageInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateRole(UpdateRoleInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleDataScopeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleDataScopeService.cs
new file mode 100644
index 0000000..8bce560
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleDataScopeService.cs
@@ -0,0 +1,77 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瑙掕壊鏁版嵁鑼冨洿鏈嶅姟
+    /// </summary>
+    public class SysRoleDataScopeService : ISysRoleDataScopeService, ITransient
+    {
+        private readonly IRepository<SysRoleDataScope> _sysRoleDataScopeRep;  // 瑙掕壊鏁版嵁鑼冨洿琛ㄤ粨鍌�
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysRoleDataScopeRep"></param>
+        public SysRoleDataScopeService(IRepository<SysRoleDataScope> sysRoleDataScopeRep)
+        {
+            _sysRoleDataScopeRep = sysRoleDataScopeRep;
+        }
+
+        /// <summary>
+        /// 鎺堟潈瑙掕壊鏁版嵁鑼冨洿
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [UnitOfWork]
+        public async Task GrantDataScope(GrantRoleDataInput input)
+        {
+            var dataScopes = await _sysRoleDataScopeRep.DetachedEntities.Where(u => u.SysRoleId == input.Id).ToListAsync();
+            await _sysRoleDataScopeRep.DeleteAsync(dataScopes);
+
+            var roleDataScopes = input.GrantOrgIdList.Select(u => new SysRoleDataScope
+            {
+                SysRoleId = input.Id,
+                SysOrgId = u
+            }).ToList();
+            await _sysRoleDataScopeRep.InsertAsync(roleDataScopes);
+        }
+
+        /// <summary>
+        /// 鏍规嵁瑙掕壊Id闆嗗悎鑾峰彇瑙掕壊鏁版嵁鑼冨洿闆嗗悎
+        /// </summary>
+        /// <param name="roleIdList"></param>
+        /// <returns></returns>
+        public async Task<List<long>> GetRoleDataScopeIdList(List<long> roleIdList)
+        {
+            return await _sysRoleDataScopeRep.DetachedEntities
+                                             .Where(u => roleIdList.Contains(u.SysRoleId))
+                                             .Select(u => u.SysOrgId).ToListAsync();
+        }
+
+        /// <summary>
+        /// 鏍规嵁鏈烘瀯Id闆嗗悎鍒犻櫎瀵瑰簲鐨勮鑹�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+        /// </summary>
+        /// <param name="orgIdList"></param>
+        /// <returns></returns>
+        public async Task DeleteRoleDataScopeListByOrgIdList(List<long> orgIdList)
+        {
+            var dataScopes = await _sysRoleDataScopeRep.DetachedEntities.Where(u => orgIdList.Contains(u.SysOrgId)).ToListAsync();
+            await _sysRoleDataScopeRep.DeleteAsync(dataScopes);
+        }
+
+        /// <summary>
+        /// 鏍规嵁瑙掕壊Id鍒犻櫎瀵瑰簲鐨勮鑹�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+        /// </summary>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        public async Task DeleteRoleDataScopeListByRoleId(long roleId)
+        {
+            var dataScopes = await _sysRoleDataScopeRep.DetachedEntities.Where(u => u.SysRoleId == roleId).ToListAsync();
+            await _sysRoleDataScopeRep.DeleteAsync(dataScopes);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleMenuService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleMenuService.cs
new file mode 100644
index 0000000..228c2f3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleMenuService.cs
@@ -0,0 +1,129 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+using Admin.NET.Core.Entity.WmsBase;
+using System.Text.RegularExpressions;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瑙掕壊鑿滃崟
+    /// </summary>
+    public class SysRoleMenuService : ISysRoleMenuService, ITransient
+    {
+        private readonly IRepository<SysRoleMenu> _sysRoleMenuRep;  // 瑙掕壊鑿滃崟琛ㄤ粨鍌�
+        private readonly IRepository<WmsRolePdaMenu> _wmsRolePdaMenu;  // 瑙掕壊鑿滃崟琛ㄤ粨鍌�
+        private readonly IRepository<SysMenu> _sysMenuRep;  // 鑿滃崟琛ㄤ粨鍌�
+        private readonly ISysCacheService _sysCacheService;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysRoleMenuRep"></param>
+        /// <param name="sysMenuRep"></param>
+        /// <param name="sysCacheService"></param>
+        public SysRoleMenuService(
+            IRepository<SysRoleMenu> sysRoleMenuRep,
+            IRepository<WmsRolePdaMenu> wmsRolePdaMenu,
+            IRepository<SysMenu> sysMenuRep, 
+            ISysCacheService sysCacheService)
+        {
+            _sysRoleMenuRep = sysRoleMenuRep;
+            _wmsRolePdaMenu = wmsRolePdaMenu;
+            _sysMenuRep = sysMenuRep;
+            _sysCacheService = sysCacheService;
+        }
+
+        /// <summary>
+        /// 鑾峰彇瑙掕壊鐨勮彍鍗旾d闆嗗悎
+        /// </summary>
+        /// <param name="roleIdList"></param>
+        /// <returns></returns>
+        public async Task<List<long>> GetRoleMenuIdList(List<long> roleIdList)
+        {
+            return await _sysRoleMenuRep.DetachedEntities
+                                        .Where(u => roleIdList.Contains(u.SysRoleId))
+                                        .Select(u => u.SysMenuId).ToListAsync();
+        }
+
+        /// <summary>
+        /// 鎺堟潈瑙掕壊鑿滃崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [UnitOfWork]
+        public async Task GrantMenu(GrantRoleMenuInput input)
+        {
+            var roleMenus = await _sysRoleMenuRep.DetachedEntities.Where(u => u.SysRoleId == input.Id).ToListAsync();
+            await _sysRoleMenuRep.DeleteAsync(roleMenus);
+
+            // 纭繚瀵规寜閽彍鍗曠殑鐖剁骇鑿滃崟鑳芥纭殑鎺堟潈锛屽彂鐜板墠绔瀯閫犵殑鏁版嵁浼氫涪寮冧簡鎸夐挳鑿滃崟鐨勭埗绾ц彍鍗�
+            var roleMenuPidsList = await _sysMenuRep.DetachedEntities.Where(u => input.GrantMenuIdList.Contains(u.Id))
+                .Select(u => u.Pids).ToListAsync();
+            var roleMenuSplitPids = roleMenuPidsList
+                .SelectMany(u => u.Split(',', StringSplitOptions.RemoveEmptyEntries)
+                .Select(v => long.Parse(v[1..^1]))
+                .Where(v => v != 0))
+                .Union(input.GrantMenuIdList);
+            var menus = roleMenuSplitPids.Select(u => new SysRoleMenu
+            {
+                SysRoleId = input.Id,
+                SysMenuId = u
+            }).ToList();
+            //ly-0415 杩囨护琛╯ys_menu涓嶅瓨鍦ㄧ殑id
+            List<SysRoleMenu> menusFilters = new List<SysRoleMenu>();
+            foreach (var item in menus)
+            {
+                var _details = _sysMenuRep.Where(x => x.Id == item.SysMenuId).ToList();
+                if (_details.Count>0)
+                {
+                    menusFilters.Add(item);
+                }
+            }
+            await _sysRoleMenuRep.InsertAsync(menusFilters);
+            // 娓呴櫎缂撳瓨
+            await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_MENU);
+            await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_PERMISSION);
+        }
+
+        [UnitOfWork]
+        public async Task GrantPdaMenu(GrantRoleMenuInput input)
+        {
+            var roleMenus = await _wmsRolePdaMenu.DetachedEntities.Where(u => u.SysRoleId == input.Id).ToListAsync();
+            await _wmsRolePdaMenu.DeleteAsync(roleMenus);
+
+            foreach (var item in input.GrantMenuIdList)
+            {
+                await _wmsRolePdaMenu.InsertAsync(new WmsRolePdaMenu
+                {
+                    SysRoleId = input.Id,
+                    PdaMenuId = item
+                });
+            }
+        }
+
+        /// <summary>
+        /// 鏍规嵁鑿滃崟Id闆嗗悎鍒犻櫎瀵瑰簲鐨勮鑹�-鑿滃崟琛ㄤ俊鎭�
+        /// </summary>
+        /// <param name="menuIdList"></param>
+        /// <returns></returns>
+        public async Task DeleteRoleMenuListByMenuIdList(List<long> menuIdList)
+        {
+            var roleMenus = await _sysRoleMenuRep.DetachedEntities.Where(u => menuIdList.Contains(u.SysMenuId)).ToListAsync();
+            await _sysRoleMenuRep.DeleteAsync(roleMenus);
+        }
+
+        /// <summary>
+        /// 鏍规嵁瑙掕壊Id鍒犻櫎瀵瑰簲鐨勮鑹�-鑿滃崟琛ㄥ叧鑱斾俊鎭�
+        /// </summary>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        public async Task DeleteRoleMenuListByRoleId(long roleId)
+        {
+            var roleMenus = await _sysRoleMenuRep.DetachedEntities.Where(u => u.SysRoleId == roleId).ToListAsync();
+            await _sysRoleMenuRep.DeleteAsync(roleMenus);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRolePdaMenu.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRolePdaMenu.cs
new file mode 100644
index 0000000..4ab3f8e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRolePdaMenu.cs
@@ -0,0 +1,6 @@
+锘縩amespace Admin.NET.Application
+{
+    internal class SysRolePdaMenu
+    {
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleService.cs
new file mode 100644
index 0000000..b317a68
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleService.cs
@@ -0,0 +1,345 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瑙掕壊鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "Role", Order = 149)]
+    [Route("api")]
+    public class SysRoleService : ISysRoleService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysRole> _sysRoleRep;  // 瑙掕壊琛ㄤ粨鍌�
+        private readonly IRepository<SysUserRole> _sysUserRoleRep;  // 鐢ㄦ埛瑙掕壊琛ㄤ粨鍌�
+        private readonly ISysRoleDataScopeService _sysRoleDataScopeService;
+        private readonly ISysOrgService _sysOrgService;
+        private readonly ISysRoleMenuService _sysRoleMenuService;
+        private readonly ISysCacheService _sysCacheService;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysRoleRep"></param>
+        /// <param name="sysUserRoleRep"></param>
+        /// <param name="sysRoleDataScopeService"></param>
+        /// <param name="sysOrgService"></param>
+        /// <param name="sysRoleMenuService"></param>
+        /// <param name="sysCacheService"></param>
+        public SysRoleService(IRepository<SysRole> sysRoleRep,
+                              IRepository<SysUserRole> sysUserRoleRep,
+                              ISysRoleDataScopeService sysRoleDataScopeService,
+                              ISysOrgService sysOrgService,
+                              ISysRoleMenuService sysRoleMenuService,
+                              ISysCacheService sysCacheService)
+        {
+            _sysRoleRep = sysRoleRep;
+            _sysUserRoleRep = sysUserRoleRep;
+            _sysRoleDataScopeService = sysRoleDataScopeService;
+            _sysOrgService = sysOrgService;
+            _sysRoleMenuService = sysRoleMenuService;
+            _sysCacheService = sysCacheService;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛瑙掕壊鐩稿叧淇℃伅锛堢櫥褰曪級
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<RoleOutput>> GetUserRoleList(long userId)
+        {
+            return await _sysUserRoleRep.Include(m => m.SysRole, false)
+                  .Where(m => m.SysUserId == userId && m.SysRole.Status == CommonStatus.ENABLE)
+                  .Select(m => new RoleOutput
+                  {
+                      Id = m.SysRoleId,
+                      Code = m.SysRole.Code,
+                      Name = m.SysRole.Name
+                  }).ToListAsync();
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鑾峰彇瑙掕壊鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysRole/page")]
+        public async Task<PageResult<SysRole>> QueryRolePageList([FromQuery] RolePageInput input)
+        {
+            var name = !string.IsNullOrEmpty(input.Name?.Trim());
+            var code = !string.IsNullOrEmpty(input.Code?.Trim());
+            var roles = await _sysRoleRep.DetachedEntities
+                                         .Where((name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")),
+                                                (code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%")))
+                                         .Where(u => u.Status == CommonStatus.ENABLE).OrderBy(u => u.Sort)
+                                         .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return roles;
+        }
+
+        /// <summary>
+        /// 鑾峰彇瑙掕壊鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<dynamic> GetRoleList([FromQuery] RoleInput input)
+        {
+            var name = !string.IsNullOrEmpty(input.Name?.Trim());
+            var code = !string.IsNullOrEmpty(input.Code?.Trim());
+            return await _sysRoleRep.DetachedEntities
+                                    .Where((name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")),
+                                           (code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%")))
+                                    .Where(u => u.Status == CommonStatus.ENABLE)
+                                    .OrderBy(u => u.Sort)
+                                    .Select(u => new
+                                    {
+                                        u.Id,
+                                        Name = u.Name + "[" + u.Code + "]",
+                                    })
+                                    .ToListAsync();
+        }
+
+        /// <summary>
+        /// 瑙掕壊涓嬫媺锛堢敤浜庢巿鏉冭鑹叉椂閫夋嫨锛�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysRole/dropDown")]
+        public async Task<List<RoleOutput>> GetRoleDropDown()
+        {
+            // 濡傛灉涓嶆槸瓒呯骇绠$悊鍛橈紝鍒欐煡璇㈣嚜宸辨嫢鏈夌殑瑙掕壊闆嗗悎
+            var roles = CurrentUserInfo.IsSuperAdmin
+                        ? await _sysUserRoleRep.Where(u => u.SysUserId == CurrentUserInfo.UserId).Select(u => u.SysRoleId).ToListAsync()
+                        : new List<long>();
+
+            return await _sysRoleRep.DetachedEntities
+                                    .Where(roles.Count > 0, u => roles.Contains(u.Id))
+                                    .Where(u => u.Status == CommonStatus.ENABLE)
+                                    .ProjectToType<RoleOutput>()
+                                    .ToListAsync();
+        }
+
+        /// <summary>
+        /// 澧炲姞瑙掕壊
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysRole/add")]
+        public async Task AddRole(AddRoleInput input)
+        {
+            var isExist = await _sysRoleRep.DetachedEntities.AnyAsync(u => u.Code == input.Code || u.Name == input.Name);
+            if (isExist)
+                throw Oops.Oh(ErrorCode.D1006);
+
+            var role = input.Adapt<SysRole>();
+            role.DataScopeType = DataScopeType.ALL; // 鏂拌鑹查粯璁ゅ叏閮ㄦ暟鎹寖鍥�
+            await role.InsertAsync();
+        }
+
+        /// <summary>
+        /// 鍒犻櫎瑙掕壊
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysRole/delete")]
+        [UnitOfWork]
+        public async Task DeleteRole(DeleteRoleInput input)
+        {
+            var sysRole = await _sysRoleRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (sysRole.Code == CommonConst.SYS_MANAGER_ROLE_CODE)
+                throw Oops.Oh(ErrorCode.D1019);
+
+            await sysRole.DeleteAsync();
+
+            //绾ц仈鍒犻櫎璇ヨ鑹插搴旂殑瑙掕壊-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+            await _sysRoleDataScopeService.DeleteRoleDataScopeListByRoleId(sysRole.Id);
+
+            ////绾ц仈鍒犻櫎璇ヨ鑹插搴旂殑鐢ㄦ埛-瑙掕壊琛ㄥ叧鑱斾俊鎭�
+            //await _sysUserRoleService.DeleteUserRoleListByRoleId(sysRole.Id); // 閬垮厤寰幆寮曠敤锛屾晠鐢ㄤ笅闈㈤�昏緫
+            var userRoles = await _sysUserRoleRep.Where(u => u.SysRoleId == sysRole.Id).ToListAsync();
+            await _sysUserRoleRep.DeleteAsync(userRoles);
+
+            //绾ц仈鍒犻櫎璇ヨ鑹插搴旂殑瑙掕壊-鑿滃崟琛ㄥ叧鑱斾俊鎭�
+            await _sysRoleMenuService.DeleteRoleMenuListByRoleId(sysRole.Id);
+        }
+
+        /// <summary>
+        /// 鏇存柊瑙掕壊
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysRole/edit")]
+        public async Task UpdateRole(UpdateRoleInput input)
+        {
+            var adminRole = await _sysRoleRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (adminRole.Code == CommonConst.SYS_MANAGER_ROLE_CODE)
+                throw Oops.Oh(ErrorCode.D1020);
+
+            var isExist = await _sysRoleRep.DetachedEntities.AnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id);
+            if (isExist)
+                throw Oops.Oh(ErrorCode.D1006);
+
+            var sysRole = input.Adapt<SysRole>();
+            await sysRole.UpdateExcludeAsync(new[] { nameof(SysRole.DataScopeType) }, true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇瑙掕壊
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysRole/detail")]
+        public async Task<SysRole> GetRoleInfo([FromQuery] QueryRoleInput input)
+        {
+            return await _sysRoleRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+        }
+
+        /// <summary>
+        /// 鎺堟潈瑙掕壊鑿滃崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysRole/grantMenu")]
+        public async Task GrantMenu(GrantRoleMenuInput input)
+        {
+            var adminRole = await _sysRoleRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (!CurrentUserInfo.IsSuperAdmin && adminRole.Code == CommonConst.SYS_MANAGER_ROLE_CODE)
+                throw Oops.Oh(ErrorCode.D1021);
+
+            await _sysRoleMenuService.GrantMenu(input);
+        }
+
+        /// <summary>
+        /// 鎺堟潈瑙掕壊PDA鑿滃崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysRole/grantPdaMenu")]
+        public async Task GrantPdaMenu(GrantRoleMenuInput input)
+        {
+            var adminRole = await _sysRoleRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (!CurrentUserInfo.IsSuperAdmin && adminRole.Code == CommonConst.SYS_MANAGER_ROLE_CODE)
+                throw Oops.Oh(ErrorCode.D1021);
+
+            await _sysRoleMenuService.GrantPdaMenu(input);
+        }
+        /// <summary>
+        /// 鎺堟潈瑙掕壊鏁版嵁鑼冨洿
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysRole/grantData")]
+        public async Task GrantData(GrantRoleDataInput input)
+        {
+            // 娓呴櫎鎵�鏈夌敤鎴锋暟鎹寖鍥寸紦瀛�
+            await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_DATASCOPE);
+
+            var role = await _sysRoleRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            var dataScopeType = input.DataScopeType;
+            if (!CurrentUserInfo.IsSuperAdmin)
+            {
+                //濡傛灉鎺堟潈鐨勮鑹茬殑鏁版嵁鑼冨洿绫诲瀷涓哄叏閮紝鍒欐病鏉冮檺锛屽彧鏈夎秴绾х鐞嗗憳鏈�
+                if ((int)DataScopeType.ALL == dataScopeType)
+                    throw Oops.Oh(ErrorCode.D1016);
+
+                //濡傛灉鎺堟潈鐨勮鑹叉暟鎹寖鍥寸被鍨嬩负鑷畾涔夛紝鍒欒鍒ゆ柇鎺堟潈鐨勬暟鎹寖鍥存槸鍚﹀湪鑷繁鐨勬暟鎹寖鍥村唴
+                if ((int)DataScopeType.DEFINE == dataScopeType)
+                {
+                    var dataScopes = await _sysOrgService.GetUserDataScopeIdList();
+                    var grantOrgIdList = input.GrantOrgIdList; //瑕佹巿鏉冪殑鏁版嵁鑼冨洿鍒楄〃
+                    if (grantOrgIdList.Count > 0)
+                    {
+                        if (dataScopes.Count < 1)
+                            throw Oops.Oh(ErrorCode.D1016);
+                        //else if (!dataScopes.All(u => grantOrgIdList.Any(c => c == u)))
+                        //    throw Oops.Oh(ErrorCode.D1016);
+                        else if (!grantOrgIdList.All(u => dataScopes.Any(c => c == u)))
+                            throw Oops.Oh(ErrorCode.D1016);
+                    }
+                }
+            }
+            role.DataScopeType = (DataScopeType)dataScopeType;
+            await _sysRoleDataScopeService.GrantDataScope(input);
+        }
+
+
+
+
+        /// <summary>
+        /// 鏍规嵁瑙掕壊Id闆嗗悎鑾峰彇鏁版嵁鑼冨洿Id闆嗗悎
+        /// </summary>
+        /// <param name="roleIdList"></param>
+        /// <param name="orgId"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<long>> GetUserDataScopeIdList(List<long> roleIdList, long orgId)
+        {
+            // 瀹氫箟瑙掕壊涓渶澶ф暟鎹寖鍥寸殑绫诲瀷锛岀洰鍓嶆寜鏈�澶ц寖鍥寸瓥鐣ユ潵锛屽鏋滀綘鍚屾椂鎷ユ湁ALL鍜孲ELF鐨勬潈闄愶紝鏈�鍚庢寜ALL杩斿洖
+            int strongerDataScopeType = (int)DataScopeType.SELF;
+
+            var customDataScopeRoleIdList = new List<long>();
+            if (roleIdList != null && roleIdList.Count > 0)
+            {
+                var roles = await _sysRoleRep.DetachedEntities.Where(u => roleIdList.Contains(u.Id)).ToListAsync();
+                roles.ForEach(u =>
+                {
+                    if (u.DataScopeType == DataScopeType.DEFINE)
+                        customDataScopeRoleIdList.Add(u.Id);
+                    else if ((int)u.DataScopeType <= strongerDataScopeType)
+                        strongerDataScopeType = (int)u.DataScopeType;
+                });
+            }
+
+            // 鑷畾涔夋暟鎹寖鍥寸殑瑙掕壊瀵瑰簲鐨勬暟鎹寖鍥�
+            var roleDataScopeIdList = await _sysRoleDataScopeService.GetRoleDataScopeIdList(customDataScopeRoleIdList);
+
+            // 瑙掕壊涓嫢鏈夋渶澶ф暟鎹寖鍥寸被鍨嬬殑鏁版嵁鑼冨洿
+            var dataScopeIdList = await _sysOrgService.GetDataScopeListByDataScopeType(strongerDataScopeType, orgId);
+
+            return roleDataScopeIdList.Concat(dataScopeIdList).Distinct().ToList(); //骞堕泦
+        }
+
+        /// <summary>
+        /// 鏍规嵁瑙掕壊Id鑾峰彇瑙掕壊鍚嶇О
+        /// </summary>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<string> GetNameByRoleId(long roleId)
+        {
+            var role = await _sysRoleRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == roleId);
+            if (role == null)
+                throw Oops.Oh(ErrorCode.D1002);
+            return role.Name;
+        }
+
+        /// <summary>
+        /// 鑾峰彇瑙掕壊鎷ユ湁鑿滃崟Id闆嗗悎
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysRole/ownMenu")]
+        public async Task<List<long>> OwnMenu([FromQuery] QueryRoleInput input)
+        {
+            return await _sysRoleMenuService.GetRoleMenuIdList(new List<long> { input.Id });
+        }
+
+        /// <summary>
+        /// 鑾峰彇瑙掕壊鎷ユ湁鏁版嵁Id闆嗗悎
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysRole/ownData")]
+        public async Task<List<long>> OwnData([FromQuery] QueryRoleInput input)
+        {
+            return await _sysRoleDataScopeService.GetRoleDataScopeIdList(new List<long> { input.Id });
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobInput.cs
new file mode 100644
index 0000000..38e6629
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobInput.cs
@@ -0,0 +1,246 @@
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+using Furion.TaskScheduler;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 浠诲姟璋冨害鍙傛暟
+    /// </summary>
+    public class JobPageInput : PageInputBase
+    {
+        /// <summary>
+        /// 浠诲姟鍚嶇О
+        /// </summary>
+
+        public string JobName { get; set; }
+
+        /// <summary>
+        /// 鍙墽琛屼竴娆�
+        /// </summary>
+        public bool DoOnce { get; set; } = false;
+
+        /// <summary>
+        /// 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+        /// </summary>
+        public bool StartNow { get; set; } = false;
+
+        /// <summary>
+        /// 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+        /// </summary>
+        public SpareTimeExecuteTypes ExecuteType { get; set; }
+
+        /// <summary>
+        /// 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+        /// </summary>
+        /// <example>5</example>
+        public int Interval { get; set; }
+
+        /// <summary>
+        /// Cron琛ㄨ揪寮�
+        /// </summary>
+        public string Cron { get; set; }
+
+        /// <summary>
+        /// 瀹氭椂鍣ㄧ被鍨�
+        /// </summary>
+        public SpareTimeTypes TimerType { get; set; }
+
+        /// <summary>
+        /// 璇锋眰url
+        /// </summary>
+        public string RequestUrl { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鍙傛暟锛圥ost锛孭ut璇锋眰鐢級
+        /// </summary>
+        public string RequestParameters { get; set; }
+
+        /// <summary>
+        /// Headers(鍙互鍖呭惈濡傦細Authorization鎺堟潈璁よ瘉)
+        /// 鏍煎紡锛歿"Authorization":"userpassword.."}
+        /// </summary>
+        public string Headers { get; set; }
+
+        /// <summary>
+        /// 璇锋眰绫诲瀷
+        /// </summary>
+        public RequestTypeEnum RequestType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddJobInput
+    {
+        /// <summary>
+        /// 浠诲姟鍚嶇О
+        /// </summary>
+
+        public string JobName { get; set; }
+
+        /// <summary>
+        /// 鍙墽琛屼竴娆�
+        /// </summary>
+        public bool DoOnce { get; set; } = false;
+
+        /// <summary>
+        /// 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+        /// </summary>
+        public bool StartNow { get; set; } = false;
+
+        /// <summary>
+        /// 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+        /// </summary>
+        public SpareTimeExecuteTypes ExecuteType { get; set; }
+
+        /// <summary>
+        /// 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+        /// </summary>
+        /// <example>5</example>
+        public int? Interval { get; set; }
+
+        /// <summary>
+        /// Cron琛ㄨ揪寮�
+        /// </summary>
+        public string Cron { get; set; }
+
+        /// <summary>
+        /// 瀹氭椂鍣ㄧ被鍨�
+        /// </summary>
+        public SpareTimeTypes TimerType { get; set; }
+
+        /// <summary>
+        /// 璇锋眰url
+        /// </summary>
+        public string RequestUrl { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鍙傛暟锛圥ost锛孭ut璇锋眰鐢級
+        /// </summary>
+        public string RequestParameters { get; set; }
+
+        /// <summary>
+        /// Headers(鍙互鍖呭惈濡傦細Authorization鎺堟潈璁よ瘉)
+        /// 鏍煎紡锛歿"Authorization":"userpassword.."}
+        /// </summary>
+        public string Headers { get; set; }
+
+        /// <summary>
+        /// 璇锋眰绫诲瀷
+        /// </summary>
+        public RequestTypeEnum RequestType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class StopJobInput
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string JobName { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteJobInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+
+    public class UpdateJobInput : BaseId
+    {
+        /// <summary>
+        /// 浠诲姟鍚嶇О
+        /// </summary>
+        /// <example>dilon</example>
+        [Required, MaxLength(20)]
+        public string JobName { get; set; }
+
+        /// <summary>
+        /// 鍙墽琛屼竴娆�
+        /// </summary>
+        public bool DoOnce { get; set; } = false;
+
+        /// <summary>
+        /// 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+        /// </summary>
+        public bool StartNow { get; set; } = false;
+
+        /// <summary>
+        /// 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+        /// </summary>
+        public SpareTimeExecuteTypes ExecuteType { get; set; } = SpareTimeExecuteTypes.Parallel;
+
+        /// <summary>
+        /// 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+        /// </summary>
+        /// <example>5</example>
+        public int? Interval { get; set; } = 5;
+
+        /// <summary>
+        /// Cron琛ㄨ揪寮�
+        /// </summary>
+        /// <example></example>
+        [MaxLength(200)]
+        public string Cron { get; set; }
+
+        /// <summary>
+        /// 瀹氭椂鍣ㄧ被鍨�
+        /// </summary>
+        public SpareTimeTypes TimerType { get; set; } = SpareTimeTypes.Interval;
+
+        /// <summary>
+        /// 璇锋眰url
+        /// </summary>
+        [MaxLength(200)]
+        public string RequestUrl { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鍙傛暟锛圥ost锛孭ut璇锋眰鐢級
+        /// </summary>
+        public string RequestParameters { get; set; }
+
+        /// <summary>
+        /// Headers(鍙互鍖呭惈濡傦細Authorization鎺堟潈璁よ瘉)
+        /// 鏍煎紡锛歿"Authorization":"userpassword.."}
+        /// </summary>
+        public string Headers { get; set; }
+
+        /// <summary>
+        /// 璇锋眰绫诲瀷
+        /// </summary>
+        /// <example>2</example>
+        public RequestTypeEnum RequestType { get; set; } = RequestTypeEnum.Post;
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [MaxLength(100)]
+        public string Remark { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryJobInput : BaseId
+    {
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobOutput.cs
new file mode 100644
index 0000000..43c7bb8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobOutput.cs
@@ -0,0 +1,149 @@
+锘縰sing Admin.NET.Core;
+using Furion.TaskScheduler;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 浠诲姟淇℃伅---浠诲姟璇︽儏
+    /// </summary>
+    public class JobOutput
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 宸叉墽琛屾鏁�
+        /// </summary>
+        public long? RunNumber { get; set; }
+
+        /// <summary>
+        /// 瀹氭椂鍣ㄧ姸鎬�
+        /// </summary>
+        public SpareTimeStatus TimerStatus { get; set; } = SpareTimeStatus.Stopped;
+
+        /// <summary>
+        /// 寮傚父淇℃伅
+        /// </summary>
+        public string Exception { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍚嶇О
+        /// </summary>
+        public string JobName { get; set; }
+
+        /// <summary>
+        /// 鍙墽琛屼竴娆�
+        /// </summary>
+        public bool DoOnce { get; set; } = false;
+
+        /// <summary>
+        /// 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+        /// </summary>
+        public bool StartNow { get; set; } = false;
+
+        /// <summary>
+        /// 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+        /// </summary>
+        public SpareTimeExecuteTypes ExecuteType { get; set; }
+
+        /// <summary>
+        /// 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+        /// </summary>
+        public int Interval { get; set; }
+
+        /// <summary>
+        /// Cron琛ㄨ揪寮�
+        /// </summary>
+        public string Cron { get; set; }
+
+        /// <summary>
+        /// 瀹氭椂鍣ㄧ被鍨�
+        /// </summary>
+        public SpareTimeTypes TimerType { get; set; }
+
+        /// <summary>
+        /// 璇锋眰url
+        /// </summary>
+        public string RequestUrl { get; set; }
+
+        /// <summary>
+        /// 璇锋眰绫诲瀷
+        /// </summary>
+        /// <example>2</example>
+        public RequestTypeEnum RequestType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+    }
+
+    /// <summary>
+    /// 浠诲姟鏂规硶淇℃伅
+    /// </summary>
+    public class TaskMethodInfo
+    {
+        /// <summary>
+        /// 鏂规硶鍚�
+        /// </summary>
+        public string MethodName { get; set; }
+
+        /// <summary>
+        /// 鏂规硶鎵�灞炵被鐨凾ype瀵硅薄
+        /// </summary>
+        public Type DeclaringType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍚嶇О
+        /// </summary>
+        public string JobName { get; set; }
+
+        /// <summary>
+        /// 鍙墽琛屼竴娆�
+        /// </summary>
+        public bool DoOnce { get; set; } = false;
+
+        /// <summary>
+        /// 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+        /// </summary>
+        public bool StartNow { get; set; } = false;
+
+        /// <summary>
+        /// 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+        /// </summary>
+        public SpareTimeExecuteTypes ExecuteType { get; set; }
+
+        /// <summary>
+        /// 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+        /// </summary>
+        public int Interval { get; set; }
+
+        /// <summary>
+        /// Cron琛ㄨ揪寮�
+        /// </summary>
+        public string Cron { get; set; }
+
+        /// <summary>
+        /// 瀹氭椂鍣ㄧ被鍨�
+        /// </summary>
+        public SpareTimeTypes TimerType { get; set; }
+
+        /// <summary>
+        /// 璇锋眰url
+        /// </summary>
+        public string RequestUrl { get; set; }
+
+        /// <summary>
+        /// 璇锋眰绫诲瀷
+        /// </summary>
+        /// <example>2</example>
+        public RequestTypeEnum RequestType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/ISysTimerService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/ISysTimerService.cs
new file mode 100644
index 0000000..4912b4d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/ISysTimerService.cs
@@ -0,0 +1,70 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysTimerService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task AddTimer(AddJobInput input);
+
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        void AddTimerJob(AddJobInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task DeleteTimer(DeleteJobInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<SysTimer> GetTimer([FromQuery] QueryJobInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<JobOutput>> GetTimerPageList([FromQuery] JobPageInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        void StartTimerJob(AddJobInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        void StopTimerJob(StopJobInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateTimber(UpdateJobInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        void StartTimerJob();
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/SysTimerService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/SysTimerService.cs
new file mode 100644
index 0000000..da76271
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/SysTimerService.cs
@@ -0,0 +1,323 @@
+using Admin.NET.Core;
+using Furion;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Furion.JsonSerialization;
+using Furion.RemoteRequest.Extensions;
+using Furion.TaskScheduler;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Reflection;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 浠诲姟璋冨害鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "Timer", Order = 100)]
+    [Route("api")]
+    public class SysTimerService : ISysTimerService, IDynamicApiController, IScoped
+    {
+        private readonly IRepository<SysTimer> _sysTimerRep;  // 浠诲姟琛ㄤ粨鍌�
+        private readonly ISysCacheService _cache;
+
+        /// <summary>
+        ///鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysTimerRep"></param>
+        /// <param name="cache"></param>
+        public SysTimerService(IRepository<SysTimer> sysTimerRep, ISysCacheService cache)
+        {
+            _sysTimerRep = sysTimerRep;
+            _cache = cache;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鑾峰彇浠诲姟鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysTimers/page")]
+        public async Task<PageResult<JobOutput>> GetTimerPageList([FromQuery] JobPageInput input)
+        {
+            var workers = SpareTime.GetWorkers().ToList();
+
+            var timers = await _sysTimerRep.DetachedEntities
+                                           .Where(!string.IsNullOrEmpty(input.JobName?.Trim()), u => EF.Functions.Like(u.JobName, $"%{input.JobName.Trim()}%"))
+                                           .ProjectToType<JobOutput>()
+                                           .ToADPagedListAsync(input.PageNo, input.PageSize);
+
+            timers.Rows.ToList().ForEach(u =>
+            {
+                var timer = workers.FirstOrDefault(m => m.WorkerName == u.JobName);
+                if (timer != null)
+                {
+                    u.TimerStatus = timer.Status;
+                    u.RunNumber = timer.Tally;
+                    u.Exception = JSON.Serialize(timer.Exception);
+                }
+            });
+            return timers;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夋湰鍦颁换鍔�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysTimers/localJobList")]
+        public async Task<IEnumerable<TaskMethodInfo>> GetLocalJobList()
+        {
+            // 鑾峰彇鏈湴鎵�鏈変换鍔℃柟娉�
+            return await GetTaskMethods();
+        }
+
+        /// <summary>
+        /// 澧炲姞浠诲姟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysTimers/add")]
+        public async Task AddTimer(AddJobInput input)
+        {
+            var isExist = await _sysTimerRep.AnyAsync(u => u.JobName == input.JobName, false);
+            if (isExist)
+                throw Oops.Oh(ErrorCode.D1100);
+
+            var timer = input.Adapt<SysTimer>();
+            await _sysTimerRep.InsertAsync(timer);
+
+            // 娣诲姞鍒颁换鍔¤皟搴﹂噷
+            AddTimerJob(input);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎浠诲姟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysTimers/delete")]
+        public async Task DeleteTimer(DeleteJobInput input)
+        {
+            var timer = await _sysTimerRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (timer == null)
+                throw Oops.Oh(ErrorCode.D1101);
+
+            await timer.DeleteAsync();
+
+            // 浠庤皟搴﹀櫒閲屽彇娑�
+            SpareTime.Cancel(timer.JobName);
+        }
+
+        /// <summary>
+        /// 淇敼浠诲姟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysTimers/edit")]
+        public async Task UpdateTimber(UpdateJobInput input)
+        {
+            // 鎺掗櫎鑷繁骞朵笖鍒ゆ柇涓庡叾浠栨槸鍚︾浉鍚�
+            var isExist = await _sysTimerRep.AnyAsync(u => u.JobName == input.JobName && u.Id != input.Id, false);
+            if (isExist) throw Oops.Oh(ErrorCode.D1100);
+
+            // 鍏堜粠璋冨害鍣ㄩ噷鍙栨秷
+            var oldTimer = await _sysTimerRep.FirstOrDefaultAsync(u => u.Id == input.Id, false);
+            SpareTime.Cancel(oldTimer.JobName);
+
+            var timer = input.Adapt<SysTimer>();
+            await timer.UpdateAsync(ignoreNullValues: true);
+            var addJobInput = input.Adapt<AddJobInput>();
+            // 鍐嶆坊鍔犲埌浠诲姟璋冨害閲�
+            AddTimerJob(addJobInput);
+        }
+
+        /// <summary>
+        /// 鏌ョ湅浠诲姟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysTimers/detail")]
+        public async Task<SysTimer> GetTimer([FromQuery] QueryJobInput input)
+        {
+            return await _sysTimerRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+        }
+
+        /// <summary>
+        /// 鍋滄浠诲姟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysTimers/stop")]
+        public void StopTimerJob(StopJobInput input)
+        {
+            SpareTime.Stop(input.JobName);
+        }
+
+        /// <summary>
+        /// 鍚姩浠诲姟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysTimers/start")]
+        public void StartTimerJob(AddJobInput input)
+        {
+            var timer = SpareTime.GetWorkers().ToList().Find(u => u.WorkerName == input.JobName);
+            if (timer == null)
+                AddTimerJob(input);
+
+            // 濡傛灉 StartNow 涓� flase , 鎵ц AddTimerJob 骞朵笉浼氬惎鍔ㄤ换鍔�
+            SpareTime.Start(input.JobName);
+        }
+
+        /// <summary>
+        /// 鏂板瀹氭椂浠诲姟
+        /// </summary>
+        /// <param name="input"></param>
+        [NonAction]
+        public void AddTimerJob(AddJobInput input)
+        {
+            Func<SpareTimer, long, Task> action = null;
+
+            switch (input.RequestType)
+            {
+                // 鍒涘缓鏈湴鏂规硶濮旀墭
+                case RequestTypeEnum.Run:
+                    {
+                        // 鏌ヨ绗﹀悎鏉′欢鐨勪换鍔℃柟娉�
+                        var taskMethod = GetTaskMethods()?.Result.FirstOrDefault(m => m.RequestUrl == input.RequestUrl);
+                        if (taskMethod == null) break;
+
+                        // 鍒涘缓浠诲姟瀵硅薄
+                        var typeInstance = Activator.CreateInstance(taskMethod.DeclaringType);
+
+                        // 鍒涘缓濮旀墭
+                        action = (Func<SpareTimer, long, Task>)Delegate.CreateDelegate(typeof(Func<SpareTimer, long, Task>), typeInstance, taskMethod.MethodName);
+                        break;
+                    }
+                // 鍒涘缓缃戠粶浠诲姟濮旀墭
+                default:
+                    {
+                        action = async (_, _) =>
+                        {
+                            var requestUrl = input.RequestUrl.Trim();
+                            requestUrl = requestUrl?.IndexOf("http") == 0 ? requestUrl : "http://" + requestUrl;
+                            var requestParameters = input.RequestParameters;
+                            var headersString = input.Headers;
+                            var headers = string.IsNullOrEmpty(headersString)
+                                ? null
+                                : JSON.Deserialize<Dictionary<string, string>>(headersString);
+
+                            switch (input.RequestType)
+                            {
+                                case RequestTypeEnum.Get:
+                                    await requestUrl.SetHeaders(headers).GetAsync();
+                                    break;
+
+                                case RequestTypeEnum.Post:
+                                    await requestUrl.SetHeaders(headers).SetQueries(requestParameters).PostAsync();
+                                    break;
+
+                                case RequestTypeEnum.Put:
+                                    await requestUrl.SetHeaders(headers).SetQueries(requestParameters).PutAsync();
+                                    break;
+
+                                case RequestTypeEnum.Delete:
+                                    await requestUrl.SetHeaders(headers).DeleteAsync();
+                                    break;
+                            }
+                        };
+                        break;
+                    }
+            }
+
+            if (action == null) return;
+
+            // 缂撳瓨浠诲姟閰嶇疆鍙傛暟锛屼互渚涗换鍔¤繍琛屾椂璇诲彇
+            if (input.RequestType == RequestTypeEnum.Run)
+            {
+                var jobParametersName = $"{input.JobName}_Parameters";
+                var jobParameters = _cache.Exists(jobParametersName);
+                var requestParametersIsNull = string.IsNullOrEmpty(input.RequestParameters);
+
+                // 濡傛灉娌℃湁浠诲姟閰嶇疆鍗村張瀛樺湪缂撳瓨锛屽垯鍒犻櫎缂撳瓨
+                if (requestParametersIsNull && jobParameters)
+                    _cache.RemoveAsync(jobParametersName);
+                else if (!requestParametersIsNull)
+                    _cache.SetAsync(jobParametersName, JSON.Deserialize<Dictionary<string, string>>(input.RequestParameters));
+            }
+
+            // 鍒涘缓瀹氭椂浠诲姟
+            switch (input.TimerType)
+            {
+                case SpareTimeTypes.Interval:
+                    if (input.DoOnce)
+                        SpareTime.DoOnce((int)input.Interval * 1000, action, input.JobName, input.Remark, input.StartNow, executeType: input.ExecuteType);
+                    else
+                        SpareTime.Do((int)input.Interval * 1000, action, input.JobName, input.Remark, input.StartNow, executeType: input.ExecuteType);
+                    break;
+
+                case SpareTimeTypes.Cron:
+                    SpareTime.Do(input.Cron, action, input.JobName, input.Remark, input.StartNow, executeType: input.ExecuteType);
+                    break;
+            }
+        }
+
+        /// <summary>
+        /// 鍚姩鑷惎鍔ㄤ换鍔�
+        /// </summary>
+        [NonAction]
+        public void StartTimerJob()
+        {
+            var sysTimerList = _sysTimerRep.DetachedEntities.Where(t => t.StartNow).ProjectToType<AddJobInput>().ToList();
+            sysTimerList.ForEach(AddTimerJob);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夋湰鍦颁换鍔�
+        /// </summary>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<IEnumerable<TaskMethodInfo>> GetTaskMethods()
+        {
+            // 鏈夌紦瀛樺氨杩斿洖缂撳瓨
+            var taskMethods = await _cache.GetAsync<IEnumerable<TaskMethodInfo>>(CommonConst.CACHE_KEY_TIMER_JOB);
+            if (taskMethods != null) return taskMethods;
+
+            // 鑾峰彇鎵�鏈夋湰鍦颁换鍔℃柟娉曪紝蹇呴』鏈塻pareTimeAttribute鐗规��
+            taskMethods = App.EffectiveTypes
+                .Where(u => u.IsClass && !u.IsInterface && !u.IsAbstract && typeof(ISpareTimeWorker).IsAssignableFrom(u))
+                .SelectMany(u => u.GetMethods(BindingFlags.Public | BindingFlags.Instance)
+                .Where(m => m.IsDefined(typeof(SpareTimeAttribute), false) &&
+                       m.GetParameters().Length == 2 &&
+                       m.GetParameters()[0].ParameterType == typeof(SpareTimer) &&
+                       m.GetParameters()[1].ParameterType == typeof(long) && (m.ReturnType == typeof(void) || m.ReturnType == typeof(Task)))
+                .Select(m =>
+                {
+                    // 榛樿鑾峰彇绗竴鏉′换鍔$壒鎬�
+                    var spareTimeAttribute = m.GetCustomAttribute<SpareTimeAttribute>();
+                    return new TaskMethodInfo
+                    {
+                        JobName = spareTimeAttribute.WorkerName,
+                        RequestUrl = $"{m.DeclaringType.Name}/{m.Name}",
+                        Cron = spareTimeAttribute.CronExpression,
+                        DoOnce = spareTimeAttribute.DoOnce,
+                        ExecuteType = spareTimeAttribute.ExecuteType,
+                        Interval = (int)spareTimeAttribute.Interval / 1000,
+                        StartNow = spareTimeAttribute.StartNow,
+                        RequestType = RequestTypeEnum.Run,
+                        Remark = spareTimeAttribute.Description,
+                        TimerType = string.IsNullOrEmpty(spareTimeAttribute.CronExpression) ? SpareTimeTypes.Interval : SpareTimeTypes.Cron,
+                        MethodName = m.Name,
+                        DeclaringType = m.DeclaringType
+                    };
+                }));
+
+            await _cache.SetAsync(CommonConst.CACHE_KEY_TIMER_JOB, taskMethods);
+            return taskMethods;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/CurrentUserInfo.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/CurrentUserInfo.cs
new file mode 100644
index 0000000..7e4081a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/CurrentUserInfo.cs
@@ -0,0 +1,32 @@
+锘縰sing Admin.NET.Core;
+using Furion;
+using Furion.FriendlyException;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 褰撳墠鐢ㄦ埛
+    /// </summary>
+    public static class CurrentUserInfo
+    {
+        /// <summary>
+        /// 鐢ㄦ埛id
+        /// </summary>
+        public static long UserId => App.User.FindFirst(ClaimConst.CLAINM_USERID) == null ? throw Oops.Oh(SysConst.SYS_SESSION_OUT) : long.Parse(App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value);
+
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        public static string Account => App.User.FindFirst(ClaimConst.CLAINM_ACCOUNT) == null ? throw Oops.Oh(SysConst.SYS_SESSION_OUT) : App.User.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value;
+
+        /// <summary>
+        /// 鏄电О
+        /// </summary>
+        public static string Name => App.User.FindFirst(ClaimConst.CLAINM_NAME) == null ? throw Oops.Oh(SysConst.SYS_SESSION_OUT) : App.User.FindFirst(ClaimConst.CLAINM_NAME)?.Value;
+
+        /// <summary>
+        /// 鏄惁瓒呯骇绠$悊鍛�
+        /// </summary>
+        public static bool IsSuperAdmin =>  App.User.FindFirst(ClaimConst.CLAINM_SUPERADMIN)?.Value == ((int)AdminType.SuperAdmin).ToString();
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthToken.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthToken.cs
new file mode 100644
index 0000000..8034431
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthToken.cs
@@ -0,0 +1,98 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// AuthToken鍙傛暟
+    /// </summary>
+    public class AuthToken
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string AccessToken { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int ExpireIn { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string RefreshToken { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Uid { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string OpenId { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string AccessCode { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string UnionId { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Scope { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string TokenType { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string IdToken { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string MacAlgorithm { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string MacKey { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string OauthToken { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string OauthTokenSecret { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string UserId { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string ScreenName { get; set; }
+        
+        /// <summary>
+        /// 
+        /// </summary>
+        public bool OauthCallbackConfirmed { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthUserInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthUserInput.cs
new file mode 100644
index 0000000..56b631d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthUserInput.cs
@@ -0,0 +1,75 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// OAuth鐢ㄦ埛鍙傛暟
+    /// </summary>
+    public class AuthUserInput
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Uuid { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Username { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Nickname { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Avatar { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Blog { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Company { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Location { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Eemark { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public Gender Gender { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Source { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public AuthToken Token { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string RawUserInfo { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserInput.cs
new file mode 100644
index 0000000..0237511
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserInput.cs
@@ -0,0 +1,455 @@
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐢ㄦ埛鍙傛暟
+    /// </summary>
+    public class UserPageInput : PageInputBase, IXnInputBase
+    {
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        public string Account { get; set; }
+
+        /// <summary>
+        /// 瀵嗙爜
+        /// </summary>
+        public string Password { get; set; }
+
+        /// <summary>
+        /// 鏄电О
+        /// </summary>
+        public string NickName { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 澶村儚
+        /// </summary>
+        public string Avatar { get; set; }
+
+        /// <summary>
+        /// 鐢熸棩
+        /// </summary>
+        public DateTime? Birthday { get; set; }
+
+        /// <summary>
+        /// 鎬у埆-鐢穇1銆佸コ_2
+        /// </summary>
+        public int Sex { get; set; }
+
+        /// <summary>
+        /// 閭
+        /// </summary>
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 鎵嬫満
+        /// </summary>
+        public string Phone { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽
+        /// </summary>
+        public string Tel { get; set; }
+
+        /// <summary>
+        /// 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+        /// </summary>
+        public CommonStatus Status { get; set; }
+
+        /// <summary>
+        /// 鍛樺伐淇℃伅
+        /// </summary>
+        public EmpOutput2 SysEmpParam { get; set; } = new EmpOutput2();
+
+        /// <summary>
+        /// 鎼滅储鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public CommonStatus SearchStatus { get; set; } = CommonStatus.ENABLE;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<long> GrantMenuIdList { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<long> GrantRoleIdList { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<long> GrantOrgIdList { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UserSelectorInput
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Name { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class CreateUserInput
+    {
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        public string Account { get; set; }
+
+        /// <summary>
+        /// 瀵嗙爜
+        /// </summary>
+        public string Password { get; set; }
+
+        /// <summary>
+        /// 鏄电О
+        /// </summary>
+        public string NickName { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 澶村儚
+        /// </summary>
+        public string Avatar { get; set; }
+
+        /// <summary>
+        /// 鐢熸棩
+        /// </summary>
+        public DateTime? Birthday { get; set; }
+
+        /// <summary>
+        /// 鎬у埆-鐢穇1銆佸コ_2
+        /// </summary>
+        public int Sex { get; set; }
+
+        /// <summary>
+        /// 閭
+        /// </summary>
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 鎵嬫満
+        /// </summary>
+        public string Phone { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽
+        /// </summary>
+        public string Tel { get; set; }
+
+        /// <summary>
+        /// 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+        /// </summary>
+        public CommonStatus Status { get; set; }
+
+        /// <summary>
+        /// 鍛樺伐淇℃伅
+        /// </summary>
+        public EmpOutput2 SysEmpParam { get; set; } = new EmpOutput2();
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddUserInput
+    {
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        [Required(ErrorMessage = "璐﹀彿鍚嶇О涓嶈兘涓虹┖")]
+        public string Account { get; set; }
+
+        /// <summary>
+        /// 瀵嗙爜
+        /// </summary>
+        [Required(ErrorMessage = "瀵嗙爜涓嶈兘涓虹┖")]
+        public string Password { get; set; }
+
+        /// <summary>
+        /// 纭瀵嗙爜
+        /// </summary>
+        [Required(ErrorMessage = "纭瀵嗙爜涓嶈兘涓虹┖"), Compare(nameof(Password), ErrorMessage = "涓ゆ瀵嗙爜涓嶄竴鑷�")]
+        public string Confirm { get; set; }
+
+        /// <summary>
+        /// 鏄电О
+        /// </summary>
+        public string NickName { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 澶村儚
+        /// </summary>
+        public string Avatar { get; set; }
+
+        /// <summary>
+        /// 鐢熸棩
+        /// </summary>
+        public DateTime? Birthday { get; set; }
+
+        /// <summary>
+        /// 鎬у埆-鐢穇1銆佸コ_2
+        /// </summary>
+        public int Sex { get; set; }
+
+        /// <summary>
+        /// 閭
+        /// </summary>
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 鎵嬫満
+        /// </summary>
+        public string Phone { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽
+        /// </summary>
+        public string Tel { get; set; }
+
+        /// <summary>
+        /// 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+        /// </summary>
+        public CommonStatus Status { get; set; }
+
+        /// <summary>
+        /// 鍛樺伐淇℃伅
+        /// </summary>
+        public EmpOutput2 SysEmpParam { get; set; } = new EmpOutput2();
+
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public LesWorkShopType WorkShopType { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂翠骇绾�
+        /// </summary>
+        public long ProductionlineId { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class CheckUserDataInput
+    {
+        /// <summary>
+        /// 鍛樺伐淇℃伅
+        /// </summary>
+        public EmpOutput2 SysEmpParam { get; set; } = new EmpOutput2();
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteUserInput : BaseId
+    {
+        /// <summary>
+        /// 鍛樺伐淇℃伅
+        /// </summary>
+        public EmpOutput2 SysEmpParam { get; set; } = new EmpOutput2();
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateUserInput : BaseId
+    {
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        [Required(ErrorMessage = "璐﹀彿鍚嶇О涓嶈兘涓虹┖")]
+        public string Account { get; set; }
+
+        /// <summary>
+        /// 鏄电О
+        /// </summary>
+        public string NickName { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        [Required(ErrorMessage = "濮撳悕涓嶈兘涓虹┖")]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鐢熸棩
+        /// </summary>
+        public DateTime? Birthday { get; set; }
+
+        /// <summary>
+        /// 鎬у埆-鐢穇1銆佸コ_2
+        /// </summary>
+        public int Sex { get; set; }
+
+        /// <summary>
+        /// 閭
+        /// </summary>
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 鎵嬫満
+        /// </summary>
+        public string Phone { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽
+        /// </summary>
+        public string Tel { get; set; }
+
+        /// <summary>
+        /// 鍛樺伐淇℃伅
+        /// </summary>
+        public EmpOutput2 SysEmpParam { get; set; } = new EmpOutput2();
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public LesWorkShopType WorkShopType { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂翠骇绾�
+        /// </summary>
+        public long ProductionlineId { get; set; }
+    }
+
+    /// <summary>
+    /// 鏇存柊鐢ㄦ埛鍩烘湰淇℃伅
+    /// </summary>
+    public class UpdateUserBaseInfoInput : BaseId
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        [Required(ErrorMessage = "鏄电О涓嶈兘涓虹┖")]
+        public string NickName { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [Required(ErrorMessage = "鎵嬫満鍙蜂笉鑳戒负绌�")]
+        public string Phone { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [Required(ErrorMessage = "鐢靛瓙閭涓嶈兘涓虹┖")]
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [Required(ErrorMessage = "鎬у埆涓嶈兘涓虹┖")]
+        public int Sex { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [Required(ErrorMessage = "鐢熸棩涓嶈兘涓虹┖")]
+        public DateTime? Birthday { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Tel { get; set; }
+    }
+
+    /// <summary>
+    /// 鏇存柊鐢ㄦ埛鎺堟潈鏁版嵁瑙掕壊鍜屾暟鎹寖鍥�
+    /// </summary>
+    public class UpdateUserRoleDataInput : BaseId, IXnInputBase
+    {
+        /// <summary>
+        /// 鍛樺伐淇℃伅
+        /// </summary>
+        public EmpOutput2 SysEmpParam { get; set; } = new EmpOutput2();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<long> GrantMenuIdList { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<long> GrantRoleIdList { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<long> GrantOrgIdList { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateUserStatusInput : BaseId
+    {
+        /// <summary>
+        /// 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+        /// </summary>
+        public CommonStatus Status { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryUserInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class ChangePasswordUserInput : BaseId
+    {
+        /// <summary>
+        /// 瀵嗙爜
+        /// </summary>
+        [Required(ErrorMessage = "鏃у瘑鐮佷笉鑳戒负绌�")]
+        public string Password { get; set; }
+
+        /// <summary>
+        /// 鏂板瘑鐮�
+        /// </summary>
+        [Required(ErrorMessage = "鏂板瘑鐮佷笉鑳戒负绌�")]
+        [StringLength(32, MinimumLength = 5, ErrorMessage = "瀵嗙爜闇�瑕佸ぇ浜�5涓瓧绗�")]
+        public string NewPassword { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UploadAvatarInput : BaseId
+    {
+        /// <summary>
+        /// 澶村儚鏂囦欢璺緞鏍囪瘑
+        /// </summary>
+        [Required(ErrorMessage = "澶村儚鏂囦欢璺緞鏍囪瘑涓嶈兘涓虹┖")]
+        public long Avatar { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserOutput.cs
new file mode 100644
index 0000000..927d82b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserOutput.cs
@@ -0,0 +1,109 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using NetTopologySuite.Index.Strtree;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐢ㄦ埛鍙傛暟
+    /// </summary>
+    public class UserOutput
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public virtual string Id { get; set; }
+
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        public virtual string Account { get; set; }
+
+        /// <summary>
+        /// 鏄电О
+        /// </summary>
+        public virtual string NickName { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public virtual string Name { get; set; }
+
+        /// <summary>
+        /// 澶村儚
+        /// </summary>
+        public virtual string Avatar { get; set; }
+
+        /// <summary>
+        /// 鐢熸棩
+        /// </summary>
+        public virtual DateTimeOffset? Birthday { get; set; }
+
+        /// <summary>
+        /// 鎬у埆-鐢穇1銆佸コ_2
+        /// </summary>
+        public virtual int Sex { get; set; }
+
+        /// <summary>
+        /// 閭
+        /// </summary>
+        public virtual string Email { get; set; }
+
+        /// <summary>
+        /// 鎵嬫満
+        /// </summary>
+        public virtual string Phone { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽
+        /// </summary>
+        public virtual string Tel { get; set; }
+
+        /// <summary>
+        /// 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+        /// </summary>
+        public virtual int Status { get; set; }
+
+        /// <summary>
+        /// 鍛樺伐淇℃伅
+        /// </summary>
+        public EmpOutput SysEmpInfo { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public LesWorkShopType WorkShopType { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂翠骇绾�
+        /// </summary>
+        public long ProductionlineId { get; set; }
+    }
+
+    /// <summary>
+    /// 浜х嚎鍙傛暟
+    /// </summary>
+    public class LesWorkShopOutput
+    {
+        /// <summary>
+        /// 浜х嚎Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public LesWorkShopType LesWorkShopType { get; set; }
+
+        /// <summary>
+        /// 浜х嚎鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 浜х嚎缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserDataScopeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserDataScopeService.cs
new file mode 100644
index 0000000..c9b4866
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserDataScopeService.cs
@@ -0,0 +1,36 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysUserDataScopeService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="orgIdList"></param>
+        /// <returns></returns>
+        Task DeleteUserDataScopeListByOrgIdList(List<long> orgIdList);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        Task DeleteUserDataScopeListByUserId(long userId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        Task<List<long>> GetUserDataScopeIdList(long userId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task GrantData(UpdateUserRoleDataInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserRoleService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserRoleService.cs
new file mode 100644
index 0000000..3c6875b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserRoleService.cs
@@ -0,0 +1,45 @@
+锘縩amespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysUserRoleService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        Task DeleteUserRoleListByRoleId(long roleId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        Task DeleteUserRoleListByUserId(long userId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="orgId"></param>
+        /// <returns></returns>
+        Task<List<long>> GetUserRoleDataScopeIdList(long userId, long orgId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="checkRoleStatus"></param>
+        /// <returns></returns>
+        Task<List<long>> GetUserRoleIdList(long userId, bool checkRoleStatus = true);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task GrantRole(UpdateUserRoleDataInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserService.cs
new file mode 100644
index 0000000..42e1129
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserService.cs
@@ -0,0 +1,164 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public interface ISysUserService
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task AddUser(AddUserInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task ChangeUserStatus(UpdateUserStatusInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task DeleteUser(DeleteUserInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<IActionResult> ExportUser();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        Task<UserOutput> GetUser(long id);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        Task<SysUser> GetUserById(long userId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        Task<List<long>> GetUserDataScopeIdList();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        Task<List<long>> GetUserDataScopeIdList(long userId);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<long>> GetUserOwnData([FromQuery] QueryUserInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<long>> GetUserOwnRole([FromQuery] QueryUserInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<List<UserOutput>> GetUserSelector([FromQuery] UserSelectorInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task GrantUserData(UpdateUserRoleDataInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task GrantUserRole(UpdateUserRoleDataInput input);
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        Task<List<UserOutput>> GetSysUserList();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="file"></param>
+        /// <returns></returns>
+        Task ImportUser(IFormFile file);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageResult<UserOutput>> QueryUserPageList([FromQuery] UserPageInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task ResetUserPwd(QueryUserInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="authUser"></param>
+        /// <param name="sysUser"></param>
+        /// <returns></returns>
+        Task SaveAuthUserToUser(AuthUserInput authUser, CreateUserInput sysUser);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateAvatar(UploadAvatarInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateUser(UpdateUserInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateUserInfo(UpdateUserBaseInfoInput input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task UpdateUserPwd(ChangePasswordUserInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserDataScopeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserDataScopeService.cs
new file mode 100644
index 0000000..030a432
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserDataScopeService.cs
@@ -0,0 +1,77 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐢ㄦ埛鏁版嵁鑼冨洿鏈嶅姟
+    /// </summary>
+    public class SysUserDataScopeService : ISysUserDataScopeService, ITransient
+    {
+        private readonly IRepository<SysUserDataScope> _sysUserDataScopeRep;  // 鐢ㄦ埛鏁版嵁鑼冨洿琛ㄤ粨鍌�
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysUserDataScopeRep"></param>
+        public SysUserDataScopeService(IRepository<SysUserDataScope> sysUserDataScopeRep)
+        {
+            _sysUserDataScopeRep = sysUserDataScopeRep;
+        }
+
+        /// <summary>
+        /// 鎺堟潈鐢ㄦ埛鏁版嵁
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [UnitOfWork]
+        public async Task GrantData(UpdateUserRoleDataInput input)
+        {
+            var dataScopes = await _sysUserDataScopeRep.Where(u => u.SysUserId == input.Id).ToListAsync();
+            await _sysUserDataScopeRep.DeleteAsync(dataScopes);
+
+            var userDataScopes = input.GrantOrgIdList.Select(u => new SysUserDataScope
+            {
+                SysUserId = input.Id,
+                SysOrgId = u
+            }).ToList();
+            await _sysUserDataScopeRep.InsertAsync(userDataScopes);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛鐨勬暟鎹寖鍥碔d闆嗗悎
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        public async Task<List<long>> GetUserDataScopeIdList(long userId)
+        {
+            return await _sysUserDataScopeRep.DetachedEntities
+                                             .Where(u => u.SysUserId == userId)
+                                             .Select(u => u.SysOrgId).ToListAsync();
+        }
+
+        /// <summary>
+        /// 鏍规嵁鏈烘瀯Id闆嗗悎鍒犻櫎瀵瑰簲鐨勭敤鎴�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+        /// </summary>
+        /// <param name="orgIdList"></param>
+        /// <returns></returns>
+        public async Task DeleteUserDataScopeListByOrgIdList(List<long> orgIdList)
+        {
+            var dataScopes = await _sysUserDataScopeRep.Where(u => orgIdList.Contains(u.SysOrgId), false).ToListAsync();
+            await _sysUserDataScopeRep.DeleteAsync(dataScopes);
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐢ㄦ埛Id鍒犻櫎瀵瑰簲鐨勭敤鎴�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        public async Task DeleteUserDataScopeListByUserId(long userId)
+        {
+            var sudsList = await _sysUserDataScopeRep.AsQueryable(m => m.SysUserId == userId, false).ToListAsync();
+            await _sysUserDataScopeRep.DeleteAsync(sudsList);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserRoleService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserRoleService.cs
new file mode 100644
index 0000000..0fd3303
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserRoleService.cs
@@ -0,0 +1,104 @@
+using Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐢ㄦ埛瑙掕壊鏈嶅姟
+    /// </summary>
+    public class SysUserRoleService : ISysUserRoleService, ITransient
+    {
+        private readonly IRepository<SysUserRole> _sysUserRoleRep;  // 鐢ㄦ埛鏉冮檺琛ㄤ粨鍌�
+
+        private readonly ISysRoleService _sysRoleService;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysUserRoleRep"></param>
+        /// <param name="sysRoleService"></param>
+        public SysUserRoleService(IRepository<SysUserRole> sysUserRoleRep, ISysRoleService sysRoleService)
+        {
+            _sysUserRoleRep = sysUserRoleRep;
+            _sysRoleService = sysRoleService;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛鐨勮鑹睮d闆嗗悎
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="checkRoleStatus"></param>
+        /// <returns></returns>
+        public async Task<List<long>> GetUserRoleIdList(long userId, bool checkRoleStatus = true)
+        {
+            return await _sysUserRoleRep
+                // 妫�鏌ole鐘舵�侊紝璺宠繃鍏ㄥ眬tenantId&delete杩囨护鍣紝瓒呯骇绠$悊鍛樹娇鐢�
+                .Where(!checkRoleStatus, u => u.SysRole.Status == CommonStatus.ENABLE && u.SysRole.IsDeleted == false, ignoreQueryFilters: true)
+                // 褰撲笉鏄秴绾х鐞嗗憳鐨勬椂鍊欐鏌ole鐘舵�佸拰鍏ㄥ眬tenantId&delete杩囨护鍣�
+                .Where(checkRoleStatus, u => u.SysRole.Status == CommonStatus.ENABLE)
+                .Where(u => u.SysUserId == userId)
+                .Select(u => u.SysRoleId)
+                .ToListAsync();
+        }
+
+        /// <summary>
+        /// 鎺堟潈鐢ㄦ埛瑙掕壊
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [UnitOfWork]
+        public async Task GrantRole(UpdateUserRoleDataInput input)
+        {
+            var userRoles = await _sysUserRoleRep.Where(u => u.SysUserId == input.Id).ToListAsync();
+            await _sysUserRoleRep.DeleteAsync(userRoles);
+
+            var roles = input.GrantRoleIdList.Select(u => new SysUserRole
+            {
+                SysUserId = input.Id,
+                SysRoleId = u
+            }).ToList();
+            await _sysUserRoleRep.InsertAsync(roles);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛鎵�鏈夎鑹茬殑鏁版嵁鑼冨洿锛堢粍缁囨満鏋処d闆嗗悎锛�
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="orgId"></param>
+        /// <returns></returns>
+        public async Task<List<long>> GetUserRoleDataScopeIdList(long userId, long orgId)
+        {
+            var roleIdList = await GetUserRoleIdList(userId);
+
+            // 鑾峰彇杩欎簺瑙掕壊瀵瑰簲鐨勬暟鎹寖鍥�
+            if (roleIdList.Count > 0)
+                return await _sysRoleService.GetUserDataScopeIdList(roleIdList, orgId);
+
+            return roleIdList;
+        }
+
+        /// <summary>
+        /// 鏍规嵁瑙掕壊Id鍒犻櫎瀵瑰簲鐨勭敤鎴�-瑙掕壊琛ㄥ叧鑱斾俊鎭�
+        /// </summary>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        public async Task DeleteUserRoleListByRoleId(long roleId)
+        {
+            var userRoles = await _sysUserRoleRep.Where(u => u.SysRoleId == roleId).ToListAsync();
+            await _sysUserRoleRep.DeleteAsync(userRoles);
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐢ㄦ埛Id鍒犻櫎瀵瑰簲鐨勭敤鎴�-瑙掕壊琛ㄥ叧鑱斾俊鎭�
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        public async Task DeleteUserRoleListByUserId(long userId)
+        {
+            var surList = await _sysUserRoleRep.AsQueryable(m => m.SysUserId == userId, false).ToListAsync();
+            await _sysUserRoleRep.DeleteAsync(surList);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserService.cs
new file mode 100644
index 0000000..4e7309e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserService.cs
@@ -0,0 +1,496 @@
+using Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DataEncryption;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Magicodes.ExporterAndImporter.Excel;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐢ㄦ埛鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings(Name = "User", Order = 150)]
+    [Route("api")]
+    public class SysUserService : ISysUserService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysUser> _sysUserRep;  // 鐢ㄦ埛琛ㄤ粨鍌�
+        //private readonly IRepository<LesProductionline> _lesProductionlineRep;  // 浜х嚎琛ㄤ粨鍌�
+        private readonly ISysCacheService _sysCacheService;
+        private readonly ISysEmpService _sysEmpService;
+        private readonly ISysUserDataScopeService _sysUserDataScopeService;
+        private readonly ISysUserRoleService _sysUserRoleService;
+        private readonly ISysOrgService _sysOrgService;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysUserRep"></param>
+        /// <param name="lesProductionlineRep"></param>
+        /// <param name="sysCacheService"></param>
+        /// <param name="sysEmpService"></param>
+        /// <param name="sysUserDataScopeService"></param>
+        /// <param name="sysUserRoleService"></param>
+        /// <param name="sysOrgService"></param>
+        public SysUserService(IRepository<SysUser> sysUserRep,
+            //IRepository<LesProductionline> lesProductionlineRep,
+            ISysCacheService sysCacheService,
+            ISysEmpService sysEmpService,
+            ISysUserDataScopeService sysUserDataScopeService,
+            ISysUserRoleService sysUserRoleService,
+            ISysOrgService sysOrgService)
+        {
+            _sysUserRep = sysUserRep;
+            //_lesProductionlineRep = lesProductionlineRep;
+            _sysCacheService = sysCacheService;
+            _sysEmpService = sysEmpService;
+            _sysUserDataScopeService = sysUserDataScopeService;
+            _sysUserRoleService = sysUserRoleService;
+            _sysOrgService = sysOrgService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鐢ㄦ埛
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysUser/page")]
+        public async Task<PageResult<UserOutput>> QueryUserPageList([FromQuery] UserPageInput input)
+        {
+            var searchValue = input.SearchValue;
+            var pid = input.SysEmpParam.OrgId;
+
+            var sysEmpRep = Db.GetRepository<SysEmp>();
+            var sysOrgRep = Db.GetRepository<SysOrg>();
+            var dataScopes = await GetUserDataScopeIdList(CurrentUserInfo.UserId);
+            var users = await _sysUserRep.DetachedEntities
+                                         .Join(sysEmpRep.DetachedEntities, u => u.Id, e => e.Id, (u, e) => new { u, e })
+                                         .Join(sysOrgRep.DetachedEntities, n => n.e.OrgId, o => o.Id, (n, o) => new { n, o })
+                                         .Where(!string.IsNullOrEmpty(searchValue), x => (x.n.u.Account.Contains(input.SearchValue) ||
+                                                                                    x.n.u.Name.Contains(input.SearchValue) ||
+                                                                                    x.n.u.Phone.Contains(input.SearchValue)))
+                                         .Where(!string.IsNullOrEmpty(pid), x => (x.n.e.OrgId == long.Parse(pid) ||
+                                                                            x.o.Pids.Contains($"[{pid.Trim()}]")))
+                                         .Where(input.SearchStatus >= 0, x => x.n.u.Status == input.SearchStatus)
+                                         .Where(x => x.n.u.AdminType != AdminType.SuperAdmin)//鎺掗櫎瓒呯骇绠$悊鍛�
+                                         .Where(!CurrentUserInfo.IsSuperAdmin && dataScopes.Count > 0, x => dataScopes.Contains(x.n.e.OrgId))
+                                         .Select(u => u.n.u.Adapt<UserOutput>())
+                                         .ToADPagedListAsync(input.PageNo, input.PageSize);
+
+            foreach (var user in users.Rows)
+            {
+                user.SysEmpInfo = await _sysEmpService.GetEmpInfo(long.Parse(user.Id));
+            }
+            return users;
+        }
+
+        /// <summary>
+        /// 鑾峰彇浜х嚎璇︽儏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        //[HttpGet("sysUser/selectLesWorkShopType")]
+        //public async Task<List<LesWorkShopOutput>> selectLesWorkShopType()
+        //{
+        //    return await _lesProductionlineRep.DetachedEntities.ProjectToType<LesWorkShopOutput>().ToListAsync();
+        //}
+
+        /// <summary>
+        /// 澧炲姞鐢ㄦ埛
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysUser/add")]
+        public async Task AddUser(AddUserInput input)
+        {
+            // 鏁版嵁鑼冨洿妫�鏌�
+            CheckDataScope(input.SysEmpParam.OrgId);
+
+            var isExist = await _sysUserRep.AnyAsync(u => u.Account == input.Account && u.IsDeleted == false, false, true);
+            if (isExist) throw Oops.Oh(ErrorCode.D1003);
+
+            var user = input.Adapt<SysUser>();
+            user.Password = MD5Encryption.Encrypt(input.Password);
+            if (string.IsNullOrEmpty(user.Name))
+                user.Name = user.Account;
+            if (string.IsNullOrEmpty(user.NickName))
+                user.NickName = user.Account;
+            var newUser = await _sysUserRep.InsertNowAsync(user);
+            input.SysEmpParam.Id = newUser.Entity.Id.ToString();
+            // 澧炲姞鍛樺伐淇℃伅
+            await _sysEmpService.AddOrUpdate(input.SysEmpParam);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鐢ㄦ埛
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysUser/delete")]
+        public async Task DeleteUser(DeleteUserInput input)
+        {
+            // 鏁版嵁鑼冨洿妫�鏌�
+            CheckDataScope(input.SysEmpParam.OrgId);
+
+            var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == input.Id, false);
+            if (user == null)
+                throw Oops.Oh(ErrorCode.D1002);
+
+            if (user.AdminType == AdminType.SuperAdmin)
+                throw Oops.Oh(ErrorCode.D1014);
+
+            if (user.AdminType == AdminType.Admin)
+                throw Oops.Oh(ErrorCode.D1018);
+
+            if (user.Id == CurrentUserInfo.UserId)
+                throw Oops.Oh(ErrorCode.D1001);
+
+            // 鐩存帴鍒犻櫎鐢ㄦ埛
+            await user.DeleteAsync();
+
+            // 鍒犻櫎鍛樺伐鍙婇檮灞炴満鏋勮亴浣嶄俊鎭�
+            await _sysEmpService.DeleteEmpInfoByUserId(input.Id);//empId涓巙serId鐩稿悓
+
+            //鍒犻櫎璇ョ敤鎴峰搴旂殑鐢ㄦ埛-瑙掕壊琛ㄥ叧鑱斾俊鎭�
+            await _sysUserRoleService.DeleteUserRoleListByUserId(input.Id);
+
+            //鍒犻櫎璇ョ敤鎴峰搴旂殑鐢ㄦ埛-鏁版嵁鑼冨洿琛ㄥ叧鑱斾俊鎭�
+            await _sysUserDataScopeService.DeleteUserDataScopeListByUserId(input.Id);
+        }
+
+        /// <summary>
+        /// 鏇存柊鐢ㄦ埛
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysUser/edit")]
+        public async Task UpdateUser(UpdateUserInput input)
+        {
+            // 鏁版嵁鑼冨洿妫�鏌�
+            CheckDataScope(input.SysEmpParam.OrgId);
+
+            // 鎺掗櫎鑷繁骞朵笖鍒ゆ柇涓庡叾浠栨槸鍚︾浉鍚�
+            var isExist = await _sysUserRep.AnyAsync(u => u.Account == input.Account && u.Id != input.Id, false);
+            if (isExist) throw Oops.Oh(ErrorCode.D1003);
+            var user = input.Adapt<SysUser>();
+            await user.UpdateExcludeAsync(new[] { nameof(SysUser.Password), nameof(SysUser.Status), nameof(SysUser.AdminType) }, true);
+            input.SysEmpParam.Id = user.Id.ToString();
+            // 鏇存柊鍛樺伐鍙婇檮灞炴満鏋勮亴浣嶄俊鎭�
+            await _sysEmpService.AddOrUpdate(input.SysEmpParam);
+        }
+
+        /// <summary>
+        /// 鏌ョ湅鐢ㄦ埛
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysUser/detail")]
+        public async Task<UserOutput> GetUser(long id)
+        {
+            var user = await _sysUserRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == id);
+            var userDto = user.Adapt<UserOutput>();
+            if (userDto != null)
+            {
+                userDto.SysEmpInfo = await _sysEmpService.GetEmpInfo(user.Id);
+            }
+            return userDto;
+        }
+
+        /// <summary>
+        /// 淇敼鐢ㄦ埛鐘舵��
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysUser/changeStatus")]
+        public async Task ChangeUserStatus(UpdateUserStatusInput input)
+        {
+            var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (user.AdminType == AdminType.SuperAdmin)
+                throw Oops.Oh(ErrorCode.D1015);
+
+            if (!Enum.IsDefined(typeof(CommonStatus), input.Status))
+                throw Oops.Oh(ErrorCode.D3005);
+            user.Status = input.Status;
+        }
+
+        /// <summary>
+        /// 鎺堟潈鐢ㄦ埛瑙掕壊
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysUser/grantRole")]
+        public async Task GrantUserRole(UpdateUserRoleDataInput input)
+        {
+            var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (user.AdminType == AdminType.SuperAdmin)
+                throw Oops.Oh(ErrorCode.D1022);
+
+            if (user.AdminType == AdminType.Admin)
+                throw Oops.Oh(ErrorCode.D1008);
+
+            // 鏁版嵁鑼冨洿妫�鏌�
+            CheckDataScope(input.SysEmpParam.OrgId);
+            await _sysUserRoleService.GrantRole(input);
+
+            //鍒犻櫎鏉冮檺,閲嶆柊鍔犺浇
+            await _sysCacheService.RemovePermission(input.Id);
+        }
+
+        /// <summary>
+        /// 鎺堟潈鐢ㄦ埛鏁版嵁鑼冨洿
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysUser/grantData")]
+        public async Task GrantUserData(UpdateUserRoleDataInput input)
+        {
+            // 娓呴櫎缂撳瓨
+            await _sysCacheService.RemoveAsync(CommonConst.CACHE_KEY_DATASCOPE + $"{input.Id}");
+
+            // 鏁版嵁鑼冨洿妫�鏌�
+            CheckDataScope(input.SysEmpParam.OrgId);
+            await _sysUserDataScopeService.GrantData(input);
+        }
+
+        /// <summary>
+        /// 鏇存柊鐢ㄦ埛淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysUser/updateInfo")]
+        public async Task UpdateUserInfo(UpdateUserBaseInfoInput input)
+        {
+            var user = input.Adapt<SysUser>();
+            await user.UpdateExcludeAsync(new[] { nameof(SysUser.AdminType), nameof(SysUser.LastLoginIp), nameof(SysUser.LastLoginTime) });
+        }
+
+        /// <summary>
+        /// 淇敼鐢ㄦ埛瀵嗙爜
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysUser/updatePwd")]
+        public async Task UpdateUserPwd(ChangePasswordUserInput input)
+        {
+            var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (MD5Encryption.Encrypt(input.Password) != user.Password)
+                throw Oops.Oh(ErrorCode.D1004);
+            user.Password = MD5Encryption.Encrypt(input.NewPassword);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛鎷ユ湁瑙掕壊
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysUser/ownRole")]
+        public async Task<List<long>> GetUserOwnRole([FromQuery] QueryUserInput input)
+        {
+            return await _sysUserRoleService.GetUserRoleIdList(input.Id);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛鎷ユ湁鏁版嵁
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("sysUser/ownData")]
+        public async Task<List<long>> GetUserOwnData([FromQuery] QueryUserInput input)
+        {
+            return await _sysUserDataScopeService.GetUserDataScopeIdList(input.Id);
+        }
+
+        /// <summary>
+        /// 閲嶇疆鐢ㄦ埛瀵嗙爜
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysUser/resetPwd")]
+        public async Task ResetUserPwd(QueryUserInput input)
+        {
+            var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            user.Password = MD5Encryption.Encrypt(CommonConst.DEFAULT_PASSWORD);
+        }
+
+        /// <summary>
+        /// 淇敼鐢ㄦ埛澶村儚
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("sysUser/updateAvatar")]
+        public async Task UpdateAvatar(UploadAvatarInput input)
+        {
+            var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            user.Avatar = input.Avatar.ToString();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛閫夋嫨鍣�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [AllowAnonymous] //鍏憡涓渶瑕佷娇鐢紝寮�鏀炬潈闄�
+        [HttpGet("sysUser/selector")]
+        public async Task<List<UserOutput>> GetUserSelector([FromQuery] UserSelectorInput input)
+        {
+            var name = !string.IsNullOrEmpty(input.Name?.Trim());
+            var result = await _sysUserRep.DetachedEntities
+                                    .Where(name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%"))
+                                    .Where(u => u.Status != CommonStatus.DELETED)
+                                    .Where(u => u.AdminType != AdminType.SuperAdmin)
+                                    .ToListAsync();
+            return result.Adapt<List<UserOutput>>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysUser/userList")]
+        public async Task<List<UserOutput>> GetSysUserList()
+        {
+            var userOut = await _sysUserRep.DetachedEntities.ToListAsync();
+            return userOut.Adapt<List<UserOutput>>();
+        }
+
+        /// <summary>
+        /// 鐢ㄦ埛瀵煎嚭
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("sysUser/export")]
+        public async Task<IActionResult> ExportUser()
+        {
+            var users = await _sysUserRep.DetachedEntities.AsQueryable()
+                                            .ProjectToType<UserOutput>()
+                                            .ToListAsync();
+            var exporter = new ExcelExporter();
+            var result = await exporter.ExportAsByteArray(users);
+            var memoryStream = new MemoryStream(result);
+            return await Task.FromResult(new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
+            {
+                FileDownloadName = $"{DateTimeOffset.Now:yyyyMMdd_HHmmss}_user.xlsx"
+            });
+        }
+
+        /// <summary>
+        /// 鐢ㄦ埛瀵煎叆
+        /// </summary>
+        /// <param name="file"></param>
+        /// <returns></returns>
+        [HttpPost("sysUser/import")]
+        public async Task ImportUser(IFormFile file)
+        {
+            var path = Path.Combine(Path.GetTempPath(), $"{YitIdHelper.NextId()}.xlsx");
+            using (var stream = File.Create(path))
+            {
+                await file.CopyToAsync(stream);
+            }
+
+            //var rows = MiniExcel.Query(path); // 瑙f瀽
+            //foreach (var row in rows)
+            //{
+            //    var a = row.A;
+            //    var b = row.B;
+            //    // 鍏ュ簱绛夋搷浣�
+
+            //}
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐢ㄦ埛Id鑾峰彇鐢ㄦ埛
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<SysUser> GetUserById(long userId)
+        {
+            return await _sysUserRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == userId);
+        }
+
+        /// <summary>
+        /// 灏哋Auth璐﹀彿杞崲鎴愯处鍙�
+        /// </summary>
+        /// <param name="authUser"></param>
+        /// <param name="sysUser"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task SaveAuthUserToUser(AuthUserInput authUser, CreateUserInput sysUser)
+        {
+            var user = sysUser.Adapt<SysUser>();
+            user.AdminType = AdminType.None; // 闈炵鐞嗗憳
+
+            // oauth璐﹀彿涓庣郴缁熻处鍙峰垽鏂�
+            var isExist = await _sysUserRep.DetachedEntities.AnyAsync(u => u.Account == authUser.Username);
+            user.Account = isExist ? authUser.Username + DateTime.Now.Ticks : authUser.Username;
+            user.Name = user.NickName = authUser.Nickname;
+            user.Email = authUser.Email;
+            user.Sex = authUser.Gender;
+            await user.InsertAsync();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛夊苟缂撳瓨
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<long>> GetUserDataScopeIdList(long userId)
+        {
+            var dataScopes = await _sysCacheService.GetDataScope(userId); // 鍏堜粠缂撳瓨閲岄潰璇诲彇
+            if (dataScopes == null || dataScopes.Count < 1)
+            {
+                if (!CurrentUserInfo.IsSuperAdmin)
+                {
+                    var orgId = await _sysEmpService.GetEmpOrgId(userId);
+                    // 鑾峰彇璇ョ敤鎴峰搴旂殑鏁版嵁鑼冨洿闆嗗悎
+                    var userDataScopeIdListForUser = await _sysUserDataScopeService.GetUserDataScopeIdList(userId);
+                    // 鑾峰彇璇ョ敤鎴风殑瑙掕壊瀵瑰簲鐨勬暟鎹寖鍥撮泦鍚�
+                    var userDataScopeIdListForRole = await _sysUserRoleService.GetUserRoleDataScopeIdList(userId, orgId);
+                    dataScopes = userDataScopeIdListForUser.Concat(userDataScopeIdListForRole).Distinct().ToList(); // 骞堕泦
+                }
+                else
+                {
+                    dataScopes = await _sysOrgService.GetAllDataScopeIdList();
+                }
+                await _sysCacheService.SetDataScope(userId, dataScopes); // 缂撳瓨缁撴灉
+            }
+            return dataScopes;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛�
+        /// </summary>
+        /// <returns></returns>
+        [NonAction]
+        public async Task<List<long>> GetUserDataScopeIdList()
+        {
+            var userId = CurrentUserInfo.UserId;
+            var dataScopes = await GetUserDataScopeIdList(userId);
+            return dataScopes;
+        }
+
+        /// <summary>
+        /// 妫�鏌ユ櫘閫氱敤鎴锋暟鎹寖鍥�
+        /// 褰撴湁鐢ㄦ埛鏈夊涓粍缁囨椂锛屽湪鐧诲綍鏃堕�夋嫨涓�涓粍缁囷紝鎵�浠ョ粍缁噄d锛坥rgId锛変粠鍓嶇浼犺繃鏉�
+        /// </summary>
+        /// <param name="orgId"></param>
+        /// <returns></returns>
+        private async void CheckDataScope(string orgId)
+        {
+            // 濡傛灉褰撳墠鐢ㄦ埛涓嶆槸瓒呯骇绠$悊鍛橈紝鍒欒繘琛屾暟鎹寖鍥存牎楠�
+            if (!CurrentUserInfo.IsSuperAdmin)
+            {
+                var dataScopes = await GetUserDataScopeIdList(CurrentUserInfo.UserId);
+                if (dataScopes == null || (orgId != null && !dataScopes.Any(u => u == long.Parse(orgId))))
+                    throw Oops.Oh(ErrorCode.D1013);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentInput.cs
new file mode 100644
index 0000000..fd68f06
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentInput.cs
@@ -0,0 +1,197 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ユ煡璇㈠弬鏁�
+    /// </summary>
+    public class TestStudentSearch : PageInputBase
+    {
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        public virtual int? Age { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        public virtual bool? StartName { get; set; }
+        
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public virtual Admin.NET.Core.GenderChinese? Gender { get; set; }
+        
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+        public virtual List<string> BrithDate { get; set; }
+        
+        /// <summary>
+        /// 鍏宠仈鑰佸笀
+        /// </summary>
+        public virtual long? TeacherId { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public virtual List<string> CreatedTime { get; set; }
+        
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        public virtual List<string> UpdatedTime { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        public virtual string CreatedUserName { get; set; }
+        
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// </summary>
+        public virtual string UpdatedUserName { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ヤ笉鍒嗛〉鏌ヨ鍙傛暟
+    /// </summary>
+    public class TestStudentSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        public virtual int? Age { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        public virtual bool? StartName { get; set; }
+        
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public virtual Admin.NET.Core.GenderChinese? Gender { get; set; }
+        
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+         public virtual List<DateTime>? BrithDate { get; set; }
+        
+        /// <summary>
+        /// 鍏宠仈鑰佸笀
+        /// </summary>
+        public virtual long? TeacherId { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+         public virtual List<DateTimeOffset>? CreatedTime { get; set; }
+        
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+         public virtual List<DateTimeOffset>? UpdatedTime { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        public virtual string CreatedUserName { get; set; }
+        
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// </summary>
+        public virtual string UpdatedUserName { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ヨ緭鍏ュ弬鏁�
+    /// </summary>
+    public class TestStudentInput
+    {
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        [Required(ErrorMessage = "瀛︾敓骞撮緞涓嶈兘涓虹┖")]
+        public virtual int Age { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        [Required(ErrorMessage = "鏄惁鍦ㄦ牎涓嶈兘涓虹┖")]
+        public virtual bool StartName { get; set; }
+        
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        [Required(ErrorMessage = "鎬у埆涓嶈兘涓虹┖")]
+        public virtual Admin.NET.Core.GenderChinese Gender { get; set; }
+        
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+        [Required(ErrorMessage = "鍑虹敓鏃ユ湡涓嶈兘涓虹┖")]
+        public virtual DateTime BrithDate { get; set; }
+        
+        /// <summary>
+        /// 鍏宠仈鑰佸笀
+        /// </summary>
+        public virtual long? TeacherId { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ユ柊澧炲弬鏁�
+    /// </summary>
+    public class AddTestStudentInput : TestStudentInput
+    {
+    }
+
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ュ垹闄ゅ弬鏁�
+    /// </summary>
+    public class DeleteTestStudentInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ユ洿鏂板弬鏁�
+    /// </summary>
+    public class UpdateTestStudentInput : TestStudentInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ヨ幏鍙栧崟涓弬鏁�
+    /// </summary>
+    public class QueryeTestStudentInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentOutput.cs
new file mode 100644
index 0000000..71eb280
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentOutput.cs
@@ -0,0 +1,67 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ヨ緭鍑哄弬鏁�
+    /// </summary>
+    public class TestStudentOutput
+    {
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        public string Name { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        public int Age { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        public bool StartName { get; set; }
+        
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public Admin.NET.Core.GenderChinese Gender { get; set; }
+        
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+        public DateTime BrithDate { get; set; }
+        
+        /// <summary>
+        /// 鍏宠仈鑰佸笀
+        /// </summary>
+        public long? TeacherId { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public DateTimeOffset? CreatedTime { get; set; }
+        
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        public DateTimeOffset? UpdatedTime { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        public string CreatedUserName { get; set; }
+        
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// </summary>
+        public string UpdatedUserName { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/ITestStudentService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/ITestStudentService.cs
new file mode 100644
index 0000000..284e77c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/ITestStudentService.cs
@@ -0,0 +1,22 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface ITestStudentService
+    {
+        Task<TestStudentOutput> Get([FromQuery] QueryeTestStudentInput input);
+        Task<List<TestStudentOutput>> List([FromQuery] TestStudentInput input);
+        Task<PageResult<TestStudentOutput>> Page([FromQuery] TestStudentSearch input);
+        Task<List<TestStudentOutput>> ListNonPageAsync([FromQuery] TestStudentSearchNonPage input);
+        
+        Task Add(AddTestStudentInput input);
+        Task Update(UpdateTestStudentInput input);
+        Task Delete(DeleteTestStudentInput input);
+        Task<int> ImportExcelAsync(IFormFile file);
+        IActionResult DownloadExcelTemplate(string version);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Map/TestStudentMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Map/TestStudentMapper.cs
new file mode 100644
index 0000000..3d96c44
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Map/TestStudentMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class TestStudentMapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddTestStudentInput, TestStudent>()
+            ;
+            config.ForType<UpdateTestStudentInput, TestStudent>()
+            ;
+            config.ForType<TestStudent, TestStudentOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/TestStudentService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/TestStudentService.cs
new file mode 100644
index 0000000..f4e29c5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/TestStudentService.cs
@@ -0,0 +1,545 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ユ湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings("TestDemo", Name = "TestStudent", Order = 100)]
+    [Route("api/[Controller]")]
+    public class TestStudentService : ITestStudentService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<TestStudent,MasterDbContextLocator> _testStudentRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        public TestStudentService(
+            IRepository<TestStudent,MasterDbContextLocator> testStudentRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+            _testStudentRep = testStudentRep;
+         _sysDictTypeRep = sysDictTypeRep;
+         _sysDictDataRep = sysDictDataRep;
+         _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ瀛︾敓淇℃伅琛�1-閭甸暱绁�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent/page")]
+        [HttpGet("page")]
+        public async Task<PageResult<TestStudentOutput>> Page([FromQuery] TestStudentSearch input)
+        {
+            var testStudents = await _testStudentRep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.Name), u => u.Name == input.Name)
+                                     .Where(input.Age != null, u => u.Age == input.Age)
+                                     .Where(input.StartName != null, u => u.StartName == input.StartName)
+                                     .Where(input.Gender != null, u => u.Gender == input.Gender)
+                                     .Where(input.BrithDate!=null, u => u.BrithDate>=  Convert.ToDateTime(input.BrithDate[0]) && u.BrithDate<= Convert.ToDateTime(input.BrithDate[1]))
+                                     .Where(input.TeacherId != null, u => u.TeacherId == input.TeacherId)
+                                     .Where(input.CreatedTime!=null, u => u.CreatedTime>=  Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
+                                     .Where(input.UpdatedTime!=null, u => u.UpdatedTime>=  Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
+                                     .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName)
+                                     .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName)
+                                     .OrderBy(PageInputOrder.OrderBuilder<TestStudentSearch>(input))
+                                     .ProjectToType<TestStudentOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return testStudents;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈠鐢熶俊鎭〃1-閭甸暱绁ュ垪琛�
+        /// </summary>
+        /// <param name="input">瀛︾敓淇℃伅琛�1-閭甸暱绁ユ煡璇㈠弬鏁�</param>
+        /// <returns>(瀛︾敓淇℃伅琛�1-閭甸暱绁�)瀹炰緥鍒楄〃</returns>
+        [Description("TestStudent/listNonPage")]
+        [HttpGet("listNonPage")]
+        public async Task<List<TestStudentOutput>> ListNonPageAsync([FromQuery] TestStudentSearchNonPage input)
+        {
+            var pName = input.Name?.Trim() ?? "";
+            var pAge = input.Age;
+            var pStartName = input.StartName;
+            var pGender = input.Gender;
+            var pBrithDate = input.BrithDate;
+            var pTeacherId = input.TeacherId;
+            var pCreatedTime = input.CreatedTime;
+            var pUpdatedTime = input.UpdatedTime;
+            var pCreatedUserName = input.CreatedUserName?.Trim() ?? "";
+            var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? "";
+            var testStudents = await _testStudentRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pName), u => u.Name == pName)
+                .Where(pAge != null, u => u.Age == pAge)
+                .Where(pStartName != null, u => u.StartName == pStartName)
+                .Where(pGender != null, u => u.Gender == pGender)
+           .Where(input.BrithDate!=null, u => u.BrithDate>=  Convert.ToDateTime(input.BrithDate[0]) && u.BrithDate<= Convert.ToDateTime(input.BrithDate[1]))
+                .Where(pTeacherId != null, u => u.TeacherId == pTeacherId)
+           .Where(input.CreatedTime!=null, u => u.CreatedTime>=  Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
+           .Where(input.UpdatedTime!=null, u => u.UpdatedTime>=  Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
+                .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName)
+                .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<TestStudentOutput>()
+            .ToListAsync();
+            return testStudents;
+        }
+
+         /// <summary>
+        /// 鑾峰彇瀛︾敓淇℃伅琛�1-閭甸暱绁�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent/detail")]
+        [HttpGet("detail")]
+        public async Task<TestStudentOutput> Get([FromQuery] QueryeTestStudentInput input)
+        {
+            return (await _testStudentRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<TestStudentOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀛︾敓淇℃伅琛�1-閭甸暱绁ュ垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent/list")]
+        [HttpGet("list")]
+        public async Task<List<TestStudentOutput>> List([FromQuery] TestStudentInput input)
+        {
+            return await _testStudentRep.DetachedEntities.ProjectToType<TestStudentOutput>().ToListAsync();
+        }    
+
+        #region 澧炪�佸垹銆佹敼
+
+        /// <summary>
+        /// 澧炲姞瀛︾敓淇℃伅琛�1-閭甸暱绁�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent/add")]
+        [HttpPost("add")]
+        public async Task Add(AddTestStudentInput input)
+        {
+            var testStudent = input.Adapt<TestStudent>();
+                        //楠岃瘉
+            await CheckExisit(testStudent);
+
+            testStudent.CreatedUserId = testStudent.UpdatedUserId = SysHelper.GetUserId();
+            testStudent.CreatedUserName = testStudent.UpdatedUserName = SysHelper.GetUserName();
+            testStudent.CreatedTime = testStudent.UpdatedTime = SysHelper.GetNowTime();
+            await _testStudentRep.InsertAsync(testStudent);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎瀛︾敓淇℃伅琛�1-閭甸暱绁�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent/delete")]
+        [HttpPost("delete")]
+        public async Task Delete(DeleteTestStudentInput input)
+        {
+            var testStudent = await _testStudentRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _testStudentRep.DeleteAsync(testStudent);
+            
+        }
+
+        /// <summary>
+        /// 鏇存柊瀛︾敓淇℃伅琛�1-閭甸暱绁�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent/edit")]
+        [HttpPost("edit")]
+        public async Task Update(UpdateTestStudentInput input)
+        {
+            var isExist = await _testStudentRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+            var testStudent = input.Adapt<TestStudent>();
+            //楠岃瘉
+            await CheckExisit(testStudent,true);
+
+            testStudent.UpdatedUserId = SysHelper.GetUserId();
+            testStudent.UpdatedUserName = SysHelper.GetUserName();
+            testStudent.UpdatedTime = SysHelper.GetNowTime();
+            await _testStudentRep.UpdateAsync(testStudent,ignoreNullValues:true);
+        }
+
+        #endregion
+
+        #region 瀵煎叆
+
+        /// <summary>
+        /// Excel妯℃澘瀵煎叆瀛︾敓淇℃伅琛�1-閭甸暱绁ュ姛鑳�
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [Description("TestStudent/importExcel")]
+        [HttpPost("importExcel")]
+        public async Task<int> ImportExcelAsync(IFormFile file)
+        { 
+            int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+            int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+            DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+            var addList =await CommonImport(importDataTable, _DataStartLine);
+
+            lock (_lock)
+            {
+                _testStudentRep.InsertAsync(addList);
+               
+            }
+            await Task.CompletedTask;
+            return addList.Count;
+        }
+
+        /// <summary>
+        ///  DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+        /// </summary>
+        /// <param name="dataTable"></param>
+        /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+        /// <returns></returns>
+        private async Task<List<TestStudent>> CommonImport(DataTable dataTable, int dataStartLine)
+        {
+
+            var details = new List<TestStudent>();
+            int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+            foreach (System.Data.DataRow row in dataTable.Rows)
+            {
+                index++;
+
+               //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+                                          
+                           var addItem = new TestStudent()
+                            {
+                               CreatedTime = SysHelper.GetNowTime(),
+                               CreatedUserId = SysHelper.GetUserId(),
+                               CreatedUserName = SysHelper.GetUserName(),
+                               UpdatedTime = SysHelper.GetNowTime(),
+                               UpdatedUserId = SysHelper.GetUserId(),
+                               UpdatedUserName = SysHelper.GetUserName()
+                             };
+                          #region 瀹氫箟鍙橀噺
+                           var _Name = "";//瀛︾敓濮撳悕
+                           var _Age = "";//瀛︾敓骞撮緞
+                           var _StartName = "";//鏄惁鍦ㄦ牎
+                           var _Gender = "";//鎬у埆
+                           var _BrithDate = "";//鍑虹敓鏃ユ湡
+                           var _TeacherId = "";//鍏宠仈鑰佸笀
+                           var _Id = "";//Id涓婚敭
+                          #endregion
+                          
+                          
+                          #region 鍙栧��
+                           _Name = row["瀛︾敓濮撳悕"]?.ToString() ;
+                           _Age = row["瀛︾敓骞撮緞"]?.ToString() ;
+                           _StartName = row["鏄惁鍦ㄦ牎"]?.ToString() ;
+                           _Gender = row["鎬у埆"]?.ToString() ;
+                           _BrithDate = row["鍑虹敓鏃ユ湡"]?.ToString() ;
+                           _TeacherId = row["鍏宠仈鑰佸笀"]?.ToString() ;
+                           _Id = row["Id涓婚敭"]?.ToString() ;
+                          #endregion
+                          
+                          
+                          #region 楠岃瘉
+                          if(!string.IsNullOrEmpty(_Name))
+                          {
+                                addItem.Name = (string)_Name;
+                           }
+                          
+                          if (string.IsNullOrEmpty(_Age))
+                          {
+                            throw Oops.Oh($"绗瑊index}琛孾瀛︾敓骞撮緞]{_Age}涓嶈兘涓虹┖锛�");
+                          }
+                          
+                          if(!string.IsNullOrEmpty(_Age))
+                          {
+                              if (!int.TryParse(_Age, out int outAge)&&!string.IsNullOrEmpty(_Age))
+                              {
+                                 throw Oops.Oh($"绗瑊index}琛孾瀛︾敓骞撮緞]{_Age}鍊间笉姝g‘锛�");
+                              }
+                              if (outAge <= 0&&!string.IsNullOrEmpty(_Age))
+                              {
+                                 throw Oops.Oh($"绗瑊index}琛孾瀛︾敓骞撮緞]{_Age}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+                              }
+                              else
+                              {
+                                 addItem.Age = outAge;
+                              }
+                          
+                          }
+                          
+                          if (string.IsNullOrEmpty(_StartName))
+                          {
+                            throw Oops.Oh($"绗瑊index}琛孾鏄惁鍦ㄦ牎]{_StartName}涓嶈兘涓虹┖锛�");
+                          }
+                          
+                          if(!string.IsNullOrEmpty(_StartName))
+                          {
+                            if(!_StartName.Equals("鏄�") && !_StartName.Equals("鍚�"))
+                             {
+                               throw Oops.Oh($"绗瑊index}琛孾鏄惁鍦ㄦ牎]{_StartName}鍊间笉姝g‘锛�");
+                             }
+                             else
+                             {
+                               bool outStartName = _StartName.Equals("鏄�") ? true : false;
+                               addItem.StartName = outStartName;
+                             }
+                             }
+                          
+                          
+                          if (string.IsNullOrEmpty(_Gender))
+                          {
+                            throw Oops.Oh($"绗瑊index}琛孾鎬у埆]{_Gender}涓嶈兘涓虹┖锛�");
+                          }
+                          
+                          if(!string.IsNullOrEmpty(_Gender))
+                          {
+                          Admin.NET.Core.GenderChinese  enumGender = default(Admin.NET.Core.GenderChinese);
+                          
+                             if(!Enum.TryParse<Admin.NET.Core.GenderChinese>(_Gender, out enumGender)&&!string.IsNullOrEmpty(_Gender))
+                              {
+                                throw Oops.Oh($"绗瑊index}琛孾鎬у埆]{_Gender}鍊间笉姝g‘锛�");
+                              }
+                              else
+                              {
+                                 addItem.Gender = enumGender;
+                              }
+                          
+                           }
+                          
+                          if (string.IsNullOrEmpty(_BrithDate))
+                          {
+                            throw Oops.Oh($"绗瑊index}琛孾鍑虹敓鏃ユ湡]{_BrithDate}涓嶈兘涓虹┖锛�");
+                          }
+                          
+                          if(!string.IsNullOrEmpty(_BrithDate))
+                          {
+                                addItem.BrithDate =   Convert.ToDateTime(_BrithDate);
+                           }
+                          if(!string.IsNullOrEmpty(_TeacherId))
+                          {
+                              if (!long.TryParse(_TeacherId, out long outTeacherId)&&!string.IsNullOrEmpty(_TeacherId))
+                              {
+                                 throw Oops.Oh($"绗瑊index}琛孾鍏宠仈鑰佸笀]{_TeacherId}鍊间笉姝g‘锛�");
+                              }
+                              if (outTeacherId <= 0&&!string.IsNullOrEmpty(_TeacherId))
+                              {
+                                 throw Oops.Oh($"绗瑊index}琛孾鍏宠仈鑰佸笀]{_TeacherId}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+                              }
+                              else
+                              {
+                                 addItem.TeacherId = outTeacherId;
+                              }
+                          
+                          }
+                          
+                          if (string.IsNullOrEmpty(_Id))
+                          {
+                            throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}涓嶈兘涓虹┖锛�");
+                          }
+                          
+                          if(!string.IsNullOrEmpty(_Id))
+                          {
+                              if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id))
+                              {
+                                 throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉姝g‘锛�");
+                              }
+                              if (outId <= 0&&!string.IsNullOrEmpty(_Id))
+                              {
+                                 throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+                              }
+                              else
+                              {
+                                 addItem.Id = outId;
+                              }
+                          
+                          }
+                          #endregion
+                          
+
+              
+                details.Add(addItem);
+            }
+              //楠岄噸
+              await CheckExisitForImport(details);
+            
+            return details;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇瀛︾敓淇℃伅琛�1-閭甸暱绁ョ殑Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [Description("TestStudent/downloadExcelTemplate")]
+        [HttpGet("downloadExcelTemplate")]
+        public IActionResult DownloadExcelTemplate([FromQuery] string version)
+        {
+            string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\TestStudent{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+            var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(瀛︾敓淇℃伅琛�1-閭甸暱绁�).xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        #endregion
+
+        #region 绉佹湁鏂规硶
+
+        /// <summary>
+        /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <param name="isEdit"></param>
+        /// <returns></returns>
+        private async Task CheckExisit( TestStudent input,bool isEdit=false)
+        {
+           
+
+           
+           bool isExist = false;
+           if (!isEdit)//鏂板
+           {
+                   //鏁版嵁鏄惁瀛樺湪閲嶅
+                   isExist = await _testStudentRep.AnyAsync(u =>
+                                   u.Name.Equals(input.Name)
+                                   &&u.Age.Equals(input.Age)
+                                   &&u.StartName.Equals(input.StartName)
+                                   &&u.Gender.Equals(input.Gender)
+                                   &&u.BrithDate.Equals(input.BrithDate)
+                                   &&u.TeacherId.Equals(input.TeacherId)
+                                   &&u.CreatedTime.Equals(input.CreatedTime)
+                                   &&u.UpdatedTime.Equals(input.UpdatedTime)
+                                   &&u.CreatedUserName.Equals(input.CreatedUserName)
+                                   &&u.UpdatedUserName.Equals(input.UpdatedUserName)
+                   ,false);
+          }
+           else//缂栬緫 
+          {
+
+          
+                
+                 //褰撳墠缂栬緫鏁版嵁浠ュ鏄惁瀛樺湪閲嶅
+                  isExist = await _testStudentRep.AnyAsync(u => 
+                                    u.Id != input.Id
+                                    &&u.Name.Equals(input.Name)
+                                    &&u.Age.Equals(input.Age)
+                                    &&u.StartName.Equals(input.StartName)
+                                    &&u.Gender.Equals(input.Gender)
+                                    &&u.BrithDate.Equals(input.BrithDate)
+                                    &&u.TeacherId.Equals(input.TeacherId)
+                                    &&u.CreatedTime.Equals(input.CreatedTime)
+                                    &&u.UpdatedTime.Equals(input.UpdatedTime)
+                                    &&u.CreatedUserName.Equals(input.CreatedUserName)
+                                    &&u.UpdatedUserName.Equals(input.UpdatedUserName)
+                    ,false);
+               }
+               
+        
+
+            if (isExist) throw Oops.Oh(ErrorCode.E0001);
+       }
+        
+        /// <summary>
+        /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+        /// </summary>
+        /// <param name="inputs"></param>
+        /// <returns></returns>
+        private async Task CheckExisitForImport(List<TestStudent> inputs)
+        { 
+            //鏍规嵁鑱斿悎涓婚敭楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�  
+                 if (inputs?.Count <= 0)
+                 {
+                     throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
+                 }
+                 //鏁版嵁鏄惁閲嶅
+                 var existExcelItem = inputs.GroupBy(g => new {
+                                               g.Name
+                                               ,g.Age
+                                               ,g.StartName
+                                               ,g.Gender
+                                               ,g.BrithDate
+                                               ,g.TeacherId
+                                               ,g.CreatedTime
+                                               ,g.UpdatedTime
+                                               ,g.CreatedUserName
+                                               ,g.UpdatedUserName
+                                               })
+                                               .Where(g => g.Count() > 1)
+                                               .Select(s => new {
+                                               s.Key.Name
+                                               ,s.Key.Age
+                                               ,s.Key.StartName
+                                               ,s.Key.Gender
+                                               ,s.Key.BrithDate
+                                               ,s.Key.TeacherId
+                                               ,s.Key.CreatedTime
+                                               ,s.Key.UpdatedTime
+                                               ,s.Key.CreatedUserName
+                                               ,s.Key.UpdatedUserName
+                                               }).FirstOrDefault();
+                 if (existExcelItem != null)
+                 {
+                   var testStudent = existExcelItem.Adapt<TestStudent>();
+                   var item= existExcelItem.Adapt<TestStudent>();
+                   throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑,瀛︾敓濮撳悕[{item.Name}],瀛︾敓骞撮緞[{item.Age}],鏄惁鍦ㄦ牎[{item.StartName}],鎬у埆[{item.Gender}],鍑虹敓鏃ユ湡[{item.BrithDate}],鍏宠仈鑰佸笀[{item.TeacherId}],鍒涘缓鏃堕棿[{item.CreatedTime}],鏇存柊鏃堕棿[{item.UpdatedTime}],鍒涘缓鑰呭悕绉癧{item.CreatedUserName}],淇敼鑰呭悕绉癧{item.UpdatedUserName}]宸插瓨鍦�");
+                 }
+                      
+
+
+
+    //鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+                 var existDBItem = await _testStudentRep.DetachedEntities.FirstOrDefaultAsync(w=> 
+                                                                         inputs.Select(s=>""
+                                                                           +s.Name
+                                                                           +s.Age
+                                                                           +s.StartName
+                                                                           +s.Gender
+                                                                           +s.BrithDate
+                                                                           +s.TeacherId
+                                                                           +s.CreatedTime
+                                                                           +s.UpdatedTime
+                                                                           +s.CreatedUserName
+                                                                           +s.UpdatedUserName
+                                                                        )
+                                                                        .Contains(""
+                                                                         +w.Name
+                                                                         +w.Age
+                                                                         +w.StartName
+                                                                         +w.Gender
+                                                                         +w.BrithDate
+                                                                         +w.TeacherId
+                                                                         +w.CreatedTime
+                                                                         +w.UpdatedTime
+                                                                         +w.CreatedUserName
+                                                                         +w.UpdatedUserName
+                  ));
+                  if (existDBItem != null)
+                 {
+                   var testStudent = existExcelItem.Adapt<TestStudent>();
+                   var item= existExcelItem.Adapt<TestStudent>();
+                   throw Oops.Oh($"绯荤粺涓�,瀛︾敓濮撳悕[{item.Name}],瀛︾敓骞撮緞[{item.Age}],鏄惁鍦ㄦ牎[{item.StartName}],鎬у埆[{item.Gender}],鍑虹敓鏃ユ湡[{item.BrithDate}],鍏宠仈鑰佸笀[{item.TeacherId}],鍒涘缓鏃堕棿[{item.CreatedTime}],鏇存柊鏃堕棿[{item.UpdatedTime}],鍒涘缓鑰呭悕绉癧{item.CreatedUserName}],淇敼鑰呭悕绉癧{item.UpdatedUserName}]宸插瓨鍦�");
+                 }
+        }
+
+        #endregion
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Input.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Input.cs
new file mode 100644
index 0000000..fec1529
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Input.cs
@@ -0,0 +1,214 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁�
+    /// </summary>
+    public class TestStudent3Search : PageInputBase
+    {
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        public virtual int? Age { get; set; }
+        
+        /// <summary>
+        /// 闆惰姳閽�
+        /// </summary>
+        public virtual decimal? HasMoney { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        public virtual bool? StartName { get; set; }
+        
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public virtual Admin.NET.Core.GenderChinese? Gender { get; set; }
+        
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+        public virtual List<string> BrithDate { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public virtual List<string> CreatedTime { get; set; }
+        
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        public virtual List<string> UpdatedTime { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        public virtual string CreatedUserName { get; set; }
+        
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// </summary>
+        public virtual string UpdatedUserName { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囦笉鍒嗛〉鏌ヨ鍙傛暟
+    /// </summary>
+    public class TestStudent3SearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        public virtual int? Age { get; set; }
+        
+        /// <summary>
+        /// 闆惰姳閽�
+        /// </summary>
+        public virtual decimal? HasMoney { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        public virtual bool? StartName { get; set; }
+        
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public virtual Admin.NET.Core.GenderChinese? Gender { get; set; }
+        
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+         public virtual List<DateTime>? BrithDate { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+         public virtual List<DateTimeOffset>? CreatedTime { get; set; }
+        
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+         public virtual List<DateTimeOffset>? UpdatedTime { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        public virtual string CreatedUserName { get; set; }
+        
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// </summary>
+        public virtual string UpdatedUserName { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囪緭鍏ュ弬鏁�
+    /// </summary>
+    public class TestStudent3Input
+    {
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        [Required(ErrorMessage = "瀛︾敓濮撳悕涓嶈兘涓虹┖")]
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        public virtual int? Age { get; set; }
+        
+        /// <summary>
+        /// 闆惰姳閽�
+        /// </summary>
+        public virtual decimal? HasMoney { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        public virtual bool? StartName { get; set; }
+        
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public virtual Admin.NET.Core.GenderChinese? Gender { get; set; }
+        
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+        public virtual DateTime? BrithDate { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset? CreatedTime { get; set; }
+        
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset? UpdatedTime { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        public virtual string CreatedUserName { get; set; }
+        
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// </summary>
+        public virtual string UpdatedUserName { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囨柊澧炲弬鏁�
+    /// </summary>
+    public class AddTestStudent3Input : TestStudent3Input
+    {
+    }
+
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囧垹闄ゅ弬鏁�
+    /// </summary>
+    public class DeleteTestStudent3Input : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囨洿鏂板弬鏁�
+    /// </summary>
+    public class UpdateTestStudent3Input : TestStudent3Input
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long? Id { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囪幏鍙栧崟涓弬鏁�
+    /// </summary>
+    public class QueryeTestStudent3Input : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Output.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Output.cs
new file mode 100644
index 0000000..636ba57
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Output.cs
@@ -0,0 +1,67 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囪緭鍑哄弬鏁�
+    /// </summary>
+    public class TestStudent3Output
+    {
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        public string Name { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        public int? Age { get; set; }
+        
+        /// <summary>
+        /// 闆惰姳閽�
+        /// </summary>
+        public decimal? HasMoney { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        public bool? StartName { get; set; }
+        
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public Admin.NET.Core.GenderChinese? Gender { get; set; }
+        
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+        public DateTime? BrithDate { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long? Id { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public DateTimeOffset? CreatedTime { get; set; }
+        
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        public DateTimeOffset? UpdatedTime { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        public string CreatedUserName { get; set; }
+        
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// </summary>
+        public string UpdatedUserName { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/ITestStudent3Service.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/ITestStudent3Service.cs
new file mode 100644
index 0000000..127b5f7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/ITestStudent3Service.cs
@@ -0,0 +1,19 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface ITestStudent3Service
+    {
+        Task<TestStudent3Output> Get([FromQuery] QueryeTestStudent3Input input);
+        Task<List<TestStudent3Output>> List([FromQuery] TestStudent3Input input);
+        Task<PageResult<TestStudent3Output>> Page([FromQuery] TestStudent3Search input);
+        Task<List<TestStudent3Output>> ListNonPageAsync([FromQuery] TestStudent3SearchNonPage input);
+        
+
+        Task<IActionResult> ToExcelAsync([FromQuery] TestStudent3SearchNonPage input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Map/TestStudent3Mapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Map/TestStudent3Mapper.cs
new file mode 100644
index 0000000..08a1299
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Map/TestStudent3Mapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class TestStudent3Mapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddTestStudent3Input, TestStudent3>()
+            ;
+            config.ForType<UpdateTestStudent3Input, TestStudent3>()
+            ;
+            config.ForType<TestStudent3, TestStudent3Output>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/TestStudent3Service.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/TestStudent3Service.cs
new file mode 100644
index 0000000..9220395
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/TestStudent3Service.cs
@@ -0,0 +1,527 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囨湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings("TestDemo", Name = "TestStudent3", Order = 100)]
+    [Route("api/[Controller]")]
+    public class TestStudent3Service : ITestStudent3Service, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<TestStudent3, MasterDbContextLocator> _testStudent3Rep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        public TestStudent3Service(
+            IRepository<TestStudent3, MasterDbContextLocator> testStudent3Rep
+            , IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            , IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            , ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+            _testStudent3Rep = testStudent3Rep;
+            _sysDictTypeRep = sysDictTypeRep;
+            _sysDictDataRep = sysDictDataRep;
+            _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent3/page")]
+        [HttpGet("page")]
+        public async Task<PageResult<TestStudent3Output>> Page([FromQuery] TestStudent3Search input)
+        {
+            var testStudent3s = await _testStudent3Rep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.Name), u => u.Name == input.Name)
+                                     .Where(input.Age != null, u => u.Age == input.Age)
+                                     .Where(input.HasMoney != null, u => u.HasMoney == input.HasMoney)
+                                     .Where(input.StartName != null, u => u.StartName == input.StartName)
+                                     .Where(input.Gender != null, u => u.Gender == input.Gender)
+                                     .Where(input.BrithDate != null, u => u.BrithDate >= Convert.ToDateTime(input.BrithDate[0]) && u.BrithDate <= Convert.ToDateTime(input.BrithDate[1]))
+                                     .Where(input.CreatedTime != null, u => u.CreatedTime >= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime <= Convert.ToDateTime(input.CreatedTime[1]))
+                                     .Where(input.UpdatedTime != null, u => u.UpdatedTime >= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime <= Convert.ToDateTime(input.UpdatedTime[1]))
+                                     .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName)
+                                     .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName)
+                                     .OrderBy(PageInputOrder.OrderBuilder<TestStudent3Search>(input))
+                                     .ProjectToType<TestStudent3Output>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return testStudent3s;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈠鐢熶俊鎭〃3-鍒樻枃濂囧垪琛�
+        /// </summary>
+        /// <param name="input">瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁�</param>
+        /// <returns>(瀛︾敓淇℃伅琛�3-鍒樻枃濂�)瀹炰緥鍒楄〃</returns>
+        [Description("TestStudent3/listNonPage")]
+        [HttpGet("listNonPage")]
+        public async Task<List<TestStudent3Output>> ListNonPageAsync([FromQuery] TestStudent3SearchNonPage input)
+        {
+            var pName = input.Name?.Trim() ?? "";
+            var pAge = input.Age;
+            var pHasMoney = input.HasMoney;
+            var pStartName = input.StartName;
+            var pGender = input.Gender;
+            var pBrithDate = input.BrithDate;
+            var pCreatedTime = input.CreatedTime;
+            var pUpdatedTime = input.UpdatedTime;
+            var pCreatedUserName = input.CreatedUserName?.Trim() ?? "";
+            var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? "";
+            var testStudent3s = await _testStudent3Rep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pName), u => u.Name == pName)
+                .Where(pAge != null, u => u.Age == pAge)
+                .Where(pHasMoney != null, u => u.HasMoney == pHasMoney)
+                .Where(pStartName != null, u => u.StartName == pStartName)
+                .Where(pGender != null, u => u.Gender == pGender)
+           .Where(input.BrithDate != null, u => u.BrithDate >= Convert.ToDateTime(input.BrithDate[0]) && u.BrithDate <= Convert.ToDateTime(input.BrithDate[1]))
+           .Where(input.CreatedTime != null, u => u.CreatedTime >= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime <= Convert.ToDateTime(input.CreatedTime[1]))
+           .Where(input.UpdatedTime != null, u => u.UpdatedTime >= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime <= Convert.ToDateTime(input.UpdatedTime[1]))
+                .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName)
+                .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<TestStudent3Output>()
+            .ToListAsync();
+            return testStudent3s;
+        }
+
+
+        /// <summary>
+        /// 澧炲姞瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent3/add")]
+        [HttpPost("add")]
+        public async Task Add(AddTestStudent3Input input)
+        {
+            var testStudent3 = input.Adapt<TestStudent3>();
+            //楠岃瘉
+            await CheckExisit(testStudent3);
+
+            testStudent3.CreatedUserId = testStudent3.UpdatedUserId = SysHelper.GetUserId();
+            testStudent3.CreatedUserName = testStudent3.UpdatedUserName = SysHelper.GetUserName();
+            testStudent3.CreatedTime = testStudent3.UpdatedTime = SysHelper.GetNowTime();
+            await _testStudent3Rep.InsertAsync(testStudent3);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent3/delete")]
+        [HttpPost("delete")]
+        public async Task Delete(DeleteTestStudent3Input input)
+        {
+            var testStudent3 = await _testStudent3Rep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _testStudent3Rep.DeleteAsync(testStudent3);
+
+        }
+
+        /// <summary>
+        /// 鏇存柊瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent3/edit")]
+        [HttpPost("edit")]
+        public async Task Update(UpdateTestStudent3Input input)
+        {
+            var isExist = await _testStudent3Rep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+            var testStudent3 = input.Adapt<TestStudent3>();
+            //楠岃瘉
+            await CheckExisit(testStudent3, true);
+
+            testStudent3.UpdatedUserId = SysHelper.GetUserId();
+            testStudent3.UpdatedUserName = SysHelper.GetUserName();
+            testStudent3.UpdatedTime = SysHelper.GetNowTime();
+            await _testStudent3Rep.UpdateAsync(testStudent3, ignoreNullValues: true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent3/detail")]
+        [HttpGet("detail")]
+        public async Task<TestStudent3Output> Get([FromQuery] QueryeTestStudent3Input input)
+        {
+            return null;
+            return null;
+            return null;
+            return null;
+            return null;
+            return null;
+            return (await _testStudent3Rep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<TestStudent3Output>();
+            return null;
+            return null;
+            return null;
+            return null;
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀛︾敓淇℃伅琛�3-鍒樻枃濂囧垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent3/list")]
+        [HttpGet("list")]
+        public async Task<List<TestStudent3Output>> List([FromQuery] TestStudent3Input input)
+        {
+            return await _testStudent3Rep.DetachedEntities.ProjectToType<TestStudent3Output>().ToListAsync();
+        }
+        /// <summary>
+        /// Excel妯℃澘瀵煎叆瀛︾敓淇℃伅琛�3-鍒樻枃濂囧姛鑳�
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("importExcel")]
+        public async Task<int> ImportExcelAsync(IFormFile file)
+        {
+            int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+            int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+            DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+            var addList = await CommonImport(importDataTable, _DataStartLine);
+
+            lock (_lock)
+            {
+                _testStudent3Rep.InsertAsync(addList);
+
+            }
+            await Task.CompletedTask;
+            return addList.Count;
+        }
+
+        /// <summary>
+        ///  DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+        /// </summary>
+        /// <param name="dataTable"></param>
+        /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+        /// <returns></returns>
+        private async Task<List<TestStudent3>> CommonImport(DataTable dataTable, int dataStartLine)
+        {
+
+            var details = new List<TestStudent3>();
+            int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+            foreach (System.Data.DataRow row in dataTable.Rows)
+            {
+                index++;
+
+                //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+
+                var addItem = new TestStudent3()
+                {
+                    CreatedTime = SysHelper.GetNowTime(),
+                    CreatedUserId = SysHelper.GetUserId(),
+                    CreatedUserName = SysHelper.GetUserName(),
+                    UpdatedTime = SysHelper.GetNowTime(),
+                    UpdatedUserId = SysHelper.GetUserId(),
+                    UpdatedUserName = SysHelper.GetUserName()
+                };
+                #region 瀹氫箟鍙橀噺
+                var _Name = "";//瀛︾敓濮撳悕
+                var _Age = "";//瀛︾敓骞撮緞
+                var _HasMoney = "";//闆惰姳閽�
+                var _StartName = "";//鏄惁鍦ㄦ牎
+                var _Gender = "";//鎬у埆
+                var _BrithDate = "";//鍑虹敓鏃ユ湡
+                var _CreatedTime = "";//鍒涘缓鏃堕棿
+                var _UpdatedTime = "";//鏇存柊鏃堕棿
+                var _CreatedUserName = "";//鍒涘缓鑰呭悕绉�
+                var _UpdatedUserName = "";//淇敼鑰呭悕绉�
+                #endregion
+
+
+                #region 鍙栧��
+                _Name = row["瀛︾敓濮撳悕"]?.ToString();
+                _Age = row["瀛︾敓骞撮緞"]?.ToString();
+                _HasMoney = row["闆惰姳閽�"]?.ToString();
+                _StartName = row["鏄惁鍦ㄦ牎"]?.ToString();
+                _Gender = row["鎬у埆"]?.ToString();
+                _BrithDate = row["鍑虹敓鏃ユ湡"]?.ToString();
+                _CreatedTime = row["鍒涘缓鏃堕棿"]?.ToString();
+                _UpdatedTime = row["鏇存柊鏃堕棿"]?.ToString();
+                _CreatedUserName = row["鍒涘缓鑰呭悕绉�"]?.ToString();
+                _UpdatedUserName = row["淇敼鑰呭悕绉�"]?.ToString();
+                #endregion
+
+
+                #region 楠岃瘉
+
+                if (string.IsNullOrEmpty(_Name))
+                {
+                    throw Oops.Oh($"绗瑊index}琛孾瀛︾敓濮撳悕]{_Name}涓嶈兘涓虹┖锛�");
+                }
+
+                if (!string.IsNullOrEmpty(_Name))
+                {
+                    addItem.Name = (string)_Name;
+                }
+                if (!string.IsNullOrEmpty(_Age))
+                {
+                    if (!int.TryParse(_Age, out int outAge) && !string.IsNullOrEmpty(_Age))
+                    {
+                        throw Oops.Oh($"绗瑊index}琛孾瀛︾敓骞撮緞]{_Age}鍊间笉姝g‘锛�");
+                    }
+                    if (outAge <= 0 && !string.IsNullOrEmpty(_Age))
+                    {
+                        throw Oops.Oh($"绗瑊index}琛孾瀛︾敓骞撮緞]{_Age}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+                    }
+                    else
+                    {
+                        addItem.Age = outAge;
+                    }
+
+                }
+                if (!string.IsNullOrEmpty(_HasMoney))
+                {
+                    if (!decimal.TryParse(_HasMoney, out decimal outHasMoney) && !string.IsNullOrEmpty(_HasMoney))
+                    {
+                        throw Oops.Oh($"绗瑊index}琛孾闆惰姳閽盷{_HasMoney}鍊间笉姝g‘锛�");
+                    }
+                    if (outHasMoney <= 0 && !string.IsNullOrEmpty(_HasMoney))
+                    {
+                        throw Oops.Oh($"绗瑊index}琛孾闆惰姳閽盷{_HasMoney}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+                    }
+                    else
+                    {
+                        addItem.HasMoney = outHasMoney;
+                    }
+
+                }
+                if (!string.IsNullOrEmpty(_StartName))
+                {
+                    if (!_StartName.Equals("鏄�") && !_StartName.Equals("鍚�"))
+                    {
+                        throw Oops.Oh($"绗瑊index}琛孾鏄惁鍦ㄦ牎]{_StartName}鍊间笉姝g‘锛�");
+                    }
+                    else
+                    {
+                        bool outStartName = _StartName.Equals("鏄�") ? true : false;
+                        addItem.StartName = outStartName;
+                    }
+                }
+
+                if (!string.IsNullOrEmpty(_Gender))
+                {
+                    Admin.NET.Core.GenderChinese enumGender = default(Admin.NET.Core.GenderChinese);
+
+                    if (!Enum.TryParse<Admin.NET.Core.GenderChinese>(_Gender, out enumGender) && !string.IsNullOrEmpty(_Gender))
+                    {
+                        throw Oops.Oh($"绗瑊index}琛孾鎬у埆]{_Gender}鍊间笉姝g‘锛�");
+                    }
+                    else
+                    {
+                        addItem.Gender = enumGender;
+                    }
+
+                }
+                if (!string.IsNullOrEmpty(_BrithDate))
+                {
+                    addItem.BrithDate = Convert.ToDateTime(_BrithDate);
+                }
+                if (!string.IsNullOrEmpty(_CreatedTime))
+                {
+                    addItem.CreatedTime = Convert.ToDateTime(_CreatedTime);
+                }
+                if (!string.IsNullOrEmpty(_UpdatedTime))
+                {
+                    addItem.UpdatedTime = Convert.ToDateTime(_UpdatedTime);
+                }
+                if (!string.IsNullOrEmpty(_CreatedUserName))
+                {
+                    addItem.CreatedUserName = (string)_CreatedUserName;
+                }
+                if (!string.IsNullOrEmpty(_UpdatedUserName))
+                {
+                    addItem.UpdatedUserName = (string)_UpdatedUserName;
+                }
+                #endregion
+
+
+
+                details.Add(addItem);
+            }
+            //楠岄噸
+            await CheckExisitForImport(details);
+
+            return details;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [Description("TestStudent3/downloadExcelTemplate")]
+        [HttpGet("downloadExcelTemplate")]
+        public IActionResult DownloadExcelTemplate([FromQuery] string version)
+        {
+            string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\TestStudent3{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+            var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(瀛︾敓淇℃伅琛�3-鍒樻枃濂�).xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        /// <summary>
+        /// 鏍规嵁瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁板鍑篍xcel
+        /// </summary>
+        /// <param name="input">瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁�</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [Description("TestStudent3/toExcel")]
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] TestStudent3SearchNonPage input)
+        {
+            var testStudent3List = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(testStudent3List, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("TestStudent3", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+
+
+
+
+
+
+
+        /// <summary>
+        /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <param name="isEdit"></param>
+        /// <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+        /// <returns></returns>
+        private async Task CheckExisit(TestStudent3 input, bool isEdit = false)
+        {
+
+
+
+            bool isExist = false;
+            if (!isEdit)//鏂板
+            {
+                //鏁版嵁鏄惁瀛樺湪閲嶅
+                isExist = await _testStudent3Rep.AnyAsync(u =>
+                                u.Name.Equals(input.Name)
+                , false);
+            }
+            else//缂栬緫 
+            {
+
+
+
+                //褰撳墠缂栬緫鏁版嵁浠ュ鏄惁瀛樺湪閲嶅
+                isExist = await _testStudent3Rep.AnyAsync(u =>
+                                  u.Id != input.Id
+                                  && u.Name.Equals(input.Name)
+                  , false);
+            }
+
+
+
+            if (isExist) throw Oops.Oh(ErrorCode.E0001);
+
+
+
+
+
+        }
+        /// <summary>
+        /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+        /// </summary>
+        /// <param name="inputs"></param>
+        /// <returns></returns>
+        private async Task CheckExisitForImport(List<TestStudent3> inputs)
+        {
+            //鏍规嵁鑱斿悎涓婚敭楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�  
+            if (inputs?.Count <= 0)
+            {
+                throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
+            }
+            //鏁版嵁鏄惁閲嶅
+            var existExcelItem = inputs.GroupBy(g => new
+            {
+                g.Name
+            })
+                                          .Where(g => g.Count() > 1)
+                                          .Select(s => new
+                                          {
+                                              s.Key.Name
+                                          }).FirstOrDefault();
+            if (existExcelItem != null)
+            {
+                var testStudent3 = existExcelItem.Adapt<TestStudent3>();
+                var item = existExcelItem.Adapt<TestStudent3>();
+                throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑,瀛︾敓濮撳悕[{item.Name}]宸插瓨鍦�");
+            }
+
+
+
+
+            //鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+            var existDBItem = await _testStudent3Rep.DetachedEntities.FirstOrDefaultAsync(w =>
+                                                                    inputs.Select(s => ""
+                                                                      + s.Name
+                                                                   )
+                                                                   .Contains(""
+                                                                    + w.Name
+             ));
+            if (existDBItem != null)
+            {
+                var testStudent3 = existExcelItem.Adapt<TestStudent3>();
+                var item = existExcelItem.Adapt<TestStudent3>();
+                throw Oops.Oh($"绯荤粺涓�,瀛︾敓濮撳悕[{item.Name}]宸插瓨鍦�");
+            }
+
+
+        }
+
+
+        #region 澧炪�佸垹銆佹敼
+        #endregion
+
+        #region 瀵煎叆
+        #endregion
+
+        #region 瀵煎嚭
+        #endregion
+
+        #region 绉佹湁鏂规硶
+        #endregion
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Dto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Dto.cs
new file mode 100644
index 0000000..f67a916
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Dto.cs
@@ -0,0 +1,47 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 娴嬭瘯瀛︾敓琛ㄨ緭鍑哄弬鏁�
+    /// </summary>
+    public class TestStudent5Dto
+    {
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public string Name { get; set; }
+        
+        /// <summary>
+        /// 骞撮緞
+        /// </summary>
+        public int Age { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public DateTimeOffset CreatedTime { get; set; }
+        
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        public DateTimeOffset UpdatedTime { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        public string CreatedUserName { get; set; }
+        
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// </summary>
+        public string UpdatedUserName { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Input.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Input.cs
new file mode 100644
index 0000000..61df6de
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Input.cs
@@ -0,0 +1,153 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁�
+    /// </summary>
+    public class TestStudent5Search : PageInputBase
+    {
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 骞撮緞
+        /// </summary>
+        public virtual int? Age { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public virtual List<string> CreatedTime { get; set; }
+        
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        public virtual List<string> UpdatedTime { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        public virtual string CreatedUserName { get; set; }
+        
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// </summary>
+        public virtual string UpdatedUserName { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 娴嬭瘯瀛︾敓琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+    /// </summary>
+    public class TestStudent5SearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 骞撮緞
+        /// </summary>
+        public virtual int? Age { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+         public virtual List<DateTimeOffset>? CreatedTime { get; set; }
+        
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+         public virtual List<DateTimeOffset>? UpdatedTime { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        public virtual string CreatedUserName { get; set; }
+        
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// </summary>
+        public virtual string UpdatedUserName { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 娴嬭瘯瀛︾敓琛ㄨ緭鍏ュ弬鏁�
+    /// </summary>
+    public class TestStudent5Input
+    {
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 骞撮緞
+        /// </summary>
+        public virtual int Age { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset CreatedTime { get; set; }
+        
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset UpdatedTime { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        public virtual string CreatedUserName { get; set; }
+        
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// </summary>
+        public virtual string UpdatedUserName { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 娴嬭瘯瀛︾敓琛ㄦ柊澧炲弬鏁�
+    /// </summary>
+    public class AddTestStudent5Input : TestStudent5Input
+    {
+    }
+
+    /// <summary>
+    /// 娴嬭瘯瀛︾敓琛ㄥ垹闄ゅ弬鏁�
+    /// </summary>
+    public class DeleteTestStudent5Input : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 娴嬭瘯瀛︾敓琛ㄦ洿鏂板弬鏁�
+    /// </summary>
+    public class UpdateTestStudent5Input : TestStudent5Input
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 娴嬭瘯瀛︾敓琛ㄨ幏鍙栧崟涓弬鏁�
+    /// </summary>
+    public class QueryeTestStudent5Input : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Output.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Output.cs
new file mode 100644
index 0000000..be2f367
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Output.cs
@@ -0,0 +1,47 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 娴嬭瘯瀛︾敓琛ㄨ緭鍑哄弬鏁�
+    /// </summary>
+    public class TestStudent5Output
+    {
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public string Name { get; set; }
+        
+        /// <summary>
+        /// 骞撮緞
+        /// </summary>
+        public int Age { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public DateTimeOffset CreatedTime { get; set; }
+        
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        public DateTimeOffset UpdatedTime { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        public string CreatedUserName { get; set; }
+        
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// </summary>
+        public string UpdatedUserName { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/ITestStudent5Service.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/ITestStudent5Service.cs
new file mode 100644
index 0000000..9904552
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/ITestStudent5Service.cs
@@ -0,0 +1,26 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface ITestStudent5Service
+    {
+        Task Add(AddTestStudent5Input input);
+        Task Delete(DeleteTestStudent5Input input);
+        Task<TestStudent5Output> Get([FromQuery] QueryeTestStudent5Input input);
+        Task<List<TestStudent5Output>> List([FromQuery] TestStudent5Input input);
+        Task<PageResult<TestStudent5Output>> Page([FromQuery] TestStudent5Search input);
+        Task Update(UpdateTestStudent5Input input);
+
+        Task<List<TestStudent5Output>> ListNonPageAsync([FromQuery] TestStudent5SearchNonPage input);
+
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+        IActionResult DownloadExcelTemplate(string version);
+
+        Task<IActionResult> ToExcelAsync([FromQuery] TestStudent5SearchNonPage input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Map/TestStudent5Mapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Map/TestStudent5Mapper.cs
new file mode 100644
index 0000000..74a4adb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Map/TestStudent5Mapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class TestStudent5Mapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddTestStudent5Input, TestStudent5>()
+            ;
+            config.ForType<UpdateTestStudent5Input, TestStudent5>()
+            ;
+            config.ForType<TestStudent5, TestStudent5Output>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/TestStudent5Service.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/TestStudent5Service.cs
new file mode 100644
index 0000000..562d651
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/TestStudent5Service.cs
@@ -0,0 +1,391 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 娴嬭瘯瀛︾敓琛ㄦ湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings("TestDemo", Name = "TestStudent5", Order = 100)]
+    [Route("api/[Controller]")]
+    public class TestStudent5Service : ITestStudent5Service, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<TestStudent5,MasterDbContextLocator> _testStudent5Rep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        public TestStudent5Service(
+            IRepository<TestStudent5,MasterDbContextLocator> testStudent5Rep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+            _testStudent5Rep = testStudent5Rep;
+         _sysDictTypeRep = sysDictTypeRep;
+         _sysDictDataRep = sysDictDataRep;
+         _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ娴嬭瘯瀛︾敓琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent5/page")]
+        [HttpGet("page")]
+        public async Task<PageResult<TestStudent5Output>> Page([FromQuery] TestStudent5Search input)
+        {
+            var testStudent5s = await _testStudent5Rep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.Name), u => u.Name == input.Name)
+                                     .Where(input.Age != null, u => u.Age == input.Age)
+                                     .Where(input.CreatedTime!=null, u => u.CreatedTime>=  Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
+                                     .Where(input.UpdatedTime!=null, u => u.UpdatedTime>=  Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
+                                     .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName)
+                                     .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName)
+                                     .OrderBy(PageInputOrder.OrderBuilder<TestStudent5Search>(input))
+                                     .ProjectToType<TestStudent5Output>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return testStudent5s;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈡祴璇曞鐢熻〃鍒楄〃
+        /// </summary>
+        /// <param name="input">娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁�</param>
+        /// <returns>(娴嬭瘯瀛︾敓琛�)瀹炰緥鍒楄〃</returns>
+        [Description("TestStudent5/listNonPage")]
+        [HttpGet("listNonPage")]
+        public async Task<List<TestStudent5Output>> ListNonPageAsync([FromQuery] TestStudent5SearchNonPage input)
+        {
+            var pName = input.Name?.Trim() ?? "";
+            var pAge = input.Age;
+            var pCreatedTime = input.CreatedTime;
+            var pUpdatedTime = input.UpdatedTime;
+            var pCreatedUserName = input.CreatedUserName?.Trim() ?? "";
+            var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? "";
+            var testStudent5s = await _testStudent5Rep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pName), u => u.Name == pName)
+                .Where(pAge != null, u => u.Age == pAge)
+           .Where(input.CreatedTime!=null, u => u.CreatedTime>=  Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
+           .Where(input.UpdatedTime!=null, u => u.UpdatedTime>=  Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
+                .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName)
+                .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<TestStudent5Output>()
+            .ToListAsync();
+            return testStudent5s;
+        }
+
+
+        /// <summary>
+        /// 澧炲姞娴嬭瘯瀛︾敓琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent5/add")]
+        [HttpPost("add")]
+        public async Task Add(AddTestStudent5Input input)
+        {
+            var testStudent5 = input.Adapt<TestStudent5>();
+                        //楠岃瘉
+            await CheckExisit(testStudent5);
+            await _testStudent5Rep.InsertAsync(testStudent5);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎娴嬭瘯瀛︾敓琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent5/delete")]
+        [HttpPost("delete")]
+        public async Task Delete(DeleteTestStudent5Input input)
+        {
+            var testStudent5 = await _testStudent5Rep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _testStudent5Rep.DeleteAsync(testStudent5);
+        }
+
+        /// <summary>
+        /// 鏇存柊娴嬭瘯瀛︾敓琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent5/edit")]
+        [HttpPost("edit")]
+        public async Task Update(UpdateTestStudent5Input input)
+        {
+            var isExist = await _testStudent5Rep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+            var testStudent5 = input.Adapt<TestStudent5>();
+            //楠岃瘉
+            await CheckExisit(testStudent5,true);
+            await _testStudent5Rep.UpdateAsync(testStudent5,ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇娴嬭瘯瀛︾敓琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent5/detail")]
+        [HttpGet("detail")]
+        public async Task<TestStudent5Output> Get([FromQuery] QueryeTestStudent5Input input)
+        {
+            return (await _testStudent5Rep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<TestStudent5Output>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇娴嬭瘯瀛︾敓琛ㄥ垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("TestStudent5/list")]
+        [HttpGet("list")]
+        public async Task<List<TestStudent5Output>> List([FromQuery] TestStudent5Input input)
+        {
+            return await _testStudent5Rep.DetachedEntities.ProjectToType<TestStudent5Output>().ToListAsync();
+        }    
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆娴嬭瘯瀛︾敓琛ㄥ姛鑳�
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        { 
+            int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+            int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+            DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+            var addList =await CommonImport(importDataTable, _DataStartLine);
+
+            lock (_lock)
+            {
+                _testStudent5Rep.InsertAsync(addList);
+               
+            }
+            await Task.CompletedTask;
+            return addList.Count;
+        }
+
+        /// <summary>
+        ///  DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+        /// </summary>
+        /// <param name="dataTable"></param>
+        /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+        /// <returns></returns>
+          private async Task<List<TestStudent5>> CommonImport(DataTable dataTable, int dataStartLine)
+        {
+
+            var details = new List<TestStudent5>();
+            int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+            foreach (System.Data.DataRow row in dataTable.Rows)
+            {
+                index++;
+
+               //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+                                          
+                           var addItem = new TestStudent5()
+                            {
+                               CreatedTime = DateTime.Now,
+                               CreatedUserId = CurrentUserInfo.UserId,
+                               CreatedUserName = CurrentUserInfo.Name,
+                               UpdatedTime = DateTime.Now,
+                               UpdatedUserId = CurrentUserInfo.UserId,
+                               UpdatedUserName = CurrentUserInfo.Name
+                             };
+                          #region 瀹氫箟鍙橀噺
+                           var _Name = "";//濮撳悕
+                           var _Age = "";//骞撮緞
+                          #endregion
+                          
+                          
+                          #region 鍙栧��
+                           _Name = row["濮撳悕"]?.ToString() ;
+                           _Age = row["骞撮緞"]?.ToString() ;
+                          #endregion
+                          
+                          
+                          #region 楠岃瘉
+                          if(!string.IsNullOrEmpty(_Name))
+                          {
+                                addItem.Name = (string)_Name;
+                           }
+                          if(!string.IsNullOrEmpty(_Age))
+                          {
+                              if (!int.TryParse(_Age, out int outAge)&&!string.IsNullOrEmpty(_Age))
+                              {
+                                 throw Oops.Oh($"绗瑊index}琛孾骞撮緞]{_Age}鍊间笉姝g‘锛�");
+                              }
+                              if (outAge <= 0&&!string.IsNullOrEmpty(_Age))
+                              {
+                                 throw Oops.Oh($"绗瑊index}琛孾骞撮緞]{_Age}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+                              }
+                              else
+                              {
+                                 addItem.Age = outAge;
+                              }
+                          
+                          }
+                          #endregion
+                          
+
+                //楠岄噸
+                await CheckExisit(details, addItem,index);
+                details.Add(addItem);
+            }
+
+            return details;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇娴嬭瘯瀛︾敓琛ㄧ殑Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [Description("TestStudent5/downloadExcelTemplate")]
+        [HttpGet("downloadExcelTemplate")]
+        public IActionResult DownloadExcelTemplate([FromQuery] string version)
+        {
+            string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\TestStudent5{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+            var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(娴嬭瘯瀛︾敓琛�).xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        /// <summary>
+        /// 鏍规嵁娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+        /// </summary>
+        /// <param name="input">娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁�</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [Description("TestStudent5/toExcel")]
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] TestStudent5SearchNonPage input)
+        {
+            var testStudent5List = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(testStudent5List, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("TestStudent5", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+
+
+        
+        
+
+
+
+        /// <summary>
+        /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <param name="isEdit"></param>
+        /// <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+        /// <returns></returns>
+        private async Task CheckExisit( TestStudent5 input,bool isEdit=false,int index=0)
+        {
+           
+
+           
+           bool isExist = false;
+           if (!isEdit)//鏂板
+           {
+                   //鏁版嵁鏄惁閲嶅
+                   isExist = await _testStudent5Rep.AnyAsync(u =>
+                                   u.Name.Equals(input.Name)
+                                   &&u.Age.Equals(input.Age)
+                                   &&u.CreatedTime.Equals(input.CreatedTime)
+                                   &&u.UpdatedTime.Equals(input.UpdatedTime)
+                                   &&u.CreatedUserName.Equals(input.CreatedUserName)
+                                   &&u.UpdatedUserName.Equals(input.UpdatedUserName)
+                   ,false);
+          }
+           else//缂栬緫 
+          {
+
+          
+                
+                 //鏁版嵁鏄惁閲嶅
+                  isExist = await _testStudent5Rep.AnyAsync(u => 
+                                    u.Id == input.Id
+                                    &&u.Age.Equals(input.Age)
+                                    &&u.CreatedTime.Equals(input.CreatedTime)
+                                    &&u.UpdatedTime.Equals(input.UpdatedTime)
+                                    &&u.CreatedUserName.Equals(input.CreatedUserName)
+                                    &&u.UpdatedUserName.Equals(input.UpdatedUserName)
+                    ,false);
+               }
+               
+        
+
+           if (index > 0)
+           {
+               if (isExist) throw Oops.Oh($"绗瑊index}琛屾暟鎹凡瀛樺湪");
+           }
+           else
+           {
+               if (isExist) throw Oops.Oh(ErrorCode.E0001);
+           }
+
+             
+           
+              
+
+        }
+
+        /// <summary>
+        /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鐨勬暟鎹泦
+        /// </summary>
+        /// <param name="inputs"></param>
+        /// <param name="input"></param>
+        /// <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+        private async Task CheckExisit(List<TestStudent5> inputs,TestStudent5 input, int index)
+        {
+
+                 //瀵煎叆鐨勯泦鍚堟槸鍚﹀凡瀛樺湪鐩稿悓鏁版嵁  
+                 var isExist = inputs.Any(u =>
+                                 u.Name.Equals(input.Name)
+                                 &&u.Age.Equals(input.Age)
+                                 &&u.CreatedTime.Equals(input.CreatedTime)
+                                 &&u.UpdatedTime.Equals(input.UpdatedTime)
+                                 &&u.CreatedUserName.Equals(input.CreatedUserName)
+                                 &&u.UpdatedUserName.Equals(input.UpdatedUserName)
+                 );
+                 if(isExist) throw Oops.Oh($"绗瑊index}琛屾暟鎹凡瀛樺湪");
+                 //鏁版嵁搴撴槸鍚﹀凡瀛樺湪鐩稿悓鏁�
+                 await CheckExisit(input,false,index);
+            
+           
+        }
+
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherDto.cs
new file mode 100644
index 0000000..9be56b5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherDto.cs
@@ -0,0 +1,22 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 娴嬭瘯鑰佸笀琛ㄨ緭鍑哄弬鏁�
+    /// </summary>
+    public class TestTeacherDto
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherInput.cs
new file mode 100644
index 0000000..b83e393
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherInput.cs
@@ -0,0 +1,66 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁�
+    /// </summary>
+    public class TestTeacherSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 娴嬭瘯鑰佸笀琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+    /// </summary>
+    public class TestTeacherSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 娴嬭瘯鑰佸笀琛ㄨ緭鍏ュ弬鏁�
+    /// </summary>
+    public class TestTeacherInput
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+    }
+
+    public class AddTestTeacherInput : TestTeacherInput
+    {
+    }
+
+    public class DeleteTestTeacherInput : BaseId
+    {
+    }
+
+    public class UpdateTestTeacherInput : TestTeacherInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    public class QueryeTestTeacherInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherOutput.cs
new file mode 100644
index 0000000..fff233c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherOutput.cs
@@ -0,0 +1,22 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 娴嬭瘯鑰佸笀琛ㄨ緭鍑哄弬鏁�
+    /// </summary>
+    public class TestTeacherOutput
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/ITestTeacherService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/ITestTeacherService.cs
new file mode 100644
index 0000000..465cd8e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/ITestTeacherService.cs
@@ -0,0 +1,26 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface ITestTeacherService
+    {
+        Task Add(AddTestTeacherInput input);
+        Task Delete(DeleteTestTeacherInput input);
+        Task<TestTeacherOutput> Get([FromQuery] QueryeTestTeacherInput input);
+        Task<List<TestTeacherOutput>> List([FromQuery] TestTeacherInput input);
+        Task<PageResult<TestTeacherOutput>> Page([FromQuery] TestTeacherSearch input);
+        Task Update(UpdateTestTeacherInput input);
+
+        Task<List<TestTeacherOutput>> ListNonPageAsync([FromQuery] TestTeacherSearchNonPage input);
+
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+        Task<IActionResult> DownloadExcelTemplate(string version);
+
+        Task<IActionResult> ToExcelAsync([FromQuery] TestTeacherSearchNonPage input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Map/TestTeacherMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Map/TestTeacherMapper.cs
new file mode 100644
index 0000000..b287d28
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Map/TestTeacherMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class TestTeacherMapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddTestTeacherInput, TestTeacher>()
+            ;
+            config.ForType<UpdateTestTeacherInput, TestTeacher>()
+            ;
+            config.ForType<TestTeacher, TestTeacherOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/TestTeacherService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/TestTeacherService.cs
new file mode 100644
index 0000000..0467d2b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/TestTeacherService.cs
@@ -0,0 +1,241 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 娴嬭瘯鑰佸笀琛ㄦ湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings("娴嬭瘯鑰佸笀琛�", Name = "TestTeacher", Order = 100)]
+    [Route("api/[Controller]")]
+    public class TestTeacherService : ITestTeacherService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<TestTeacher,MasterDbContextLocator> _testTeacherRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        public TestTeacherService(
+            IRepository<TestTeacher,MasterDbContextLocator> testTeacherRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+            _testTeacherRep = testTeacherRep;
+         _sysDictTypeRep = sysDictTypeRep;
+         _sysDictDataRep = sysDictDataRep;
+         _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ娴嬭瘯鑰佸笀琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<TestTeacherOutput>> Page([FromQuery] TestTeacherSearch input)
+        {
+            var testTeachers = await _testTeacherRep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.Name), u => u.Name == input.Name)
+                                     .OrderBy(PageInputOrder.OrderBuilder<TestTeacherSearch>(input))
+                                     .ProjectToType<TestTeacherOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return testTeachers;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈡祴璇曡�佸笀琛ㄥ垪琛�
+        /// </summary>
+        /// <param name="input">娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁�</param>
+        /// <returns>(娴嬭瘯鑰佸笀琛�)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<TestTeacherOutput>> ListNonPageAsync([FromQuery] TestTeacherSearchNonPage input)
+        {
+            var pName = input.Name?.Trim() ?? "";
+            var testTeachers = await _testTeacherRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pName), u => u.Name == pName)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<TestTeacherOutput>()
+            .ToListAsync();
+            return testTeachers;
+        }
+
+
+        /// <summary>
+        /// 澧炲姞娴嬭瘯鑰佸笀琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddTestTeacherInput input)
+        {
+            var testTeacher = input.Adapt<TestTeacher>();
+            await _testTeacherRep.InsertAsync(testTeacher);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎娴嬭瘯鑰佸笀琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteTestTeacherInput input)
+        {
+            var testTeacher = await _testTeacherRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _testTeacherRep.DeleteAsync(testTeacher);
+        }
+
+        /// <summary>
+        /// 鏇存柊娴嬭瘯鑰佸笀琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateTestTeacherInput input)
+        {
+            var isExist = await _testTeacherRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var testTeacher = input.Adapt<TestTeacher>();
+            await _testTeacherRep.UpdateAsync(testTeacher,ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇娴嬭瘯鑰佸笀琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<TestTeacherOutput> Get([FromQuery] QueryeTestTeacherInput input)
+        {
+            return (await _testTeacherRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<TestTeacherOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇娴嬭瘯鑰佸笀琛ㄥ垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<TestTeacherOutput>> List([FromQuery] TestTeacherInput input)
+        {
+            return await _testTeacherRep.DetachedEntities.ProjectToType<TestTeacherOutput>().ToListAsync();
+        }    
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆娴嬭瘯鑰佸笀琛ㄥ姛鑳�
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("TestTeacher", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++) 
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<TestTeacherOutput> testTeacherList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, TestTeacherOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = testTeacherList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<TestTeacher>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<TestTeacher, TestTeacherOutput>(selectKeys);
+            List<TestTeacher> updates = new();
+            List<TestTeacher> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var testTeacherExistSubList = _testTeacherRep.Where(filter).Select(selector).ToList();
+                    testTeacherExistSubList.ForEach(x => 
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+                foreach (var testTeacher in testTeacherList) 
+                {
+                    if (testTeacher.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(testTeacher.Adapt<TestTeacher>());
+                    }
+                    else 
+                    {
+                        adds.Add(testTeacher.Adapt<TestTeacher>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _testTeacherRep.Update(x));
+                
+
+                var maxId = _testTeacherRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);    
+                Db.GetDbContext().Set<TestTeacher>().AddRange(adds);  
+                Db.GetDbContext().SaveChanges();
+               
+            }
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇娴嬭瘯鑰佸笀琛ㄧ殑Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("TestTeacher", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+        /// <summary>
+        /// 鏍规嵁娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+        /// </summary>
+        /// <param name="input">娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁�</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] TestTeacherSearchNonPage input)
+        {
+            var testTeacherList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(testTeacherList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("TestTeacher", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentInput.cs
new file mode 100644
index 0000000..447a979
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentInput.cs
@@ -0,0 +1,177 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 瀛︾敓瑙嗗浘鏌ヨ鍙傛暟
+    /// </summary>
+    public class VStudentSearch : PageInputBase
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public virtual long? Id { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        public virtual int? Age { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        public virtual bool? StartName { get; set; }
+        
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public virtual int? Gender { get; set; }
+        
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+        public virtual DateTime? BrithDate { get; set; }
+        
+        /// <summary>
+        /// 鍏宠仈鑰佸笀
+        /// </summary>
+        public virtual long? TeacherId { get; set; }
+        
+        /// <summary>
+        /// 鑰佸笀鍚嶇О
+        /// </summary>
+        public virtual string teacherName { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 瀛︾敓瑙嗗浘涓嶅垎椤垫煡璇㈠弬鏁�
+    /// </summary>
+    public class VStudentSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public virtual long? Id { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        public virtual int? Age { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        public virtual bool? StartName { get; set; }
+        
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public virtual int? Gender { get; set; }
+        
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+        public virtual DateTime? BrithDate { get; set; }
+        
+        /// <summary>
+        /// 鍏宠仈鑰佸笀
+        /// </summary>
+        public virtual long? TeacherId { get; set; }
+        
+        /// <summary>
+        /// 鑰佸笀鍚嶇О
+        /// </summary>
+        public virtual string teacherName { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 瀛︾敓瑙嗗浘杈撳叆鍙傛暟
+    /// </summary>
+    public class VStudentInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public virtual long? Id { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        public virtual string Name { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        public virtual int? Age { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        public virtual bool? StartName { get; set; }
+        
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public virtual int? Gender { get; set; }
+        
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+        public virtual DateTime? BrithDate { get; set; }
+        
+        /// <summary>
+        /// 鍏宠仈鑰佸笀
+        /// </summary>
+        public virtual long? TeacherId { get; set; }
+        
+        /// <summary>
+        /// 鑰佸笀鍚嶇О
+        /// </summary>
+        public virtual string teacherName { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 瀛︾敓瑙嗗浘鏂板鍙傛暟
+    /// </summary>
+    public class AddVStudentInput : VStudentInput
+    {
+    }
+
+    /// <summary>
+    /// 瀛︾敓瑙嗗浘鍒犻櫎鍙傛暟
+    /// </summary>
+    public class DeleteVStudentInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 瀛︾敓瑙嗗浘鏇存柊鍙傛暟
+    /// </summary>
+    public class UpdateVStudentInput : VStudentInput
+    {
+    }
+
+    /// <summary>
+    /// 瀛︾敓瑙嗗浘鑾峰彇鍗曚釜鍙傛暟
+    /// </summary>
+    public class QueryeVStudentInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentOutput.cs
new file mode 100644
index 0000000..cbf3ab3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentOutput.cs
@@ -0,0 +1,52 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀛︾敓瑙嗗浘杈撳嚭鍙傛暟
+    /// </summary>
+    public class VStudentOutput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long? Id { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        public string Name { get; set; }
+        
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        public int? Age { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        public bool? StartName { get; set; }
+        
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public int? Gender { get; set; }
+        
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+        public DateTime? BrithDate { get; set; }
+        
+        /// <summary>
+        /// 鍏宠仈鑰佸笀
+        /// </summary>
+        public long? TeacherId { get; set; }
+        
+        /// <summary>
+        /// 鑰佸笀鍚嶇О
+        /// </summary>
+        public string teacherName { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/IVStudentService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/IVStudentService.cs
new file mode 100644
index 0000000..eeabeb8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/IVStudentService.cs
@@ -0,0 +1,19 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface IVStudentService
+    {
+        Task<VStudentOutput> Get([FromQuery] QueryeVStudentInput input);
+        Task<List<VStudentOutput>> List([FromQuery] VStudentInput input);
+        Task<PageResult<VStudentOutput>> Page([FromQuery] VStudentSearch input);
+        Task<List<VStudentOutput>> ListNonPageAsync([FromQuery] VStudentSearchNonPage input);
+        
+
+        Task<IActionResult> ToExcelAsync([FromQuery] VStudentSearchNonPage input);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Map/VStudentMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Map/VStudentMapper.cs
new file mode 100644
index 0000000..993cc71
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Map/VStudentMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class VStudentMapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddVStudentInput, VStudent>()
+            ;
+            config.ForType<UpdateVStudentInput, VStudent>()
+            ;
+            config.ForType<VStudent, VStudentOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/VStudentService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/VStudentService.cs
new file mode 100644
index 0000000..ff7bc2b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/VStudentService.cs
@@ -0,0 +1,447 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀛︾敓瑙嗗浘鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("TestDemo", Name = "VStudent", Order = 100)]
+    [Route("api/[Controller]")]
+    public class VStudentService : IVStudentService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<VStudent,MasterDbContextLocator> _vStudentRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        public VStudentService(
+            IRepository<VStudent,MasterDbContextLocator> vStudentRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+            _vStudentRep = vStudentRep;
+         _sysDictTypeRep = sysDictTypeRep;
+         _sysDictDataRep = sysDictDataRep;
+         _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ瀛︾敓瑙嗗浘
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("VStudent/page")]
+        [HttpGet("page")]
+        public async Task<PageResult<VStudentOutput>> Page([FromQuery] VStudentSearch input)
+        {
+            var vStudents = await _vStudentRep.DetachedEntities
+                                     .Where(input.Id != null, u => u.Id == input.Id)
+                                     .Where(!string.IsNullOrEmpty(input.Name), u => u.Name == input.Name)
+                                     .Where(input.Age != null, u => u.Age == input.Age)
+                                     .Where(input.StartName != null, u => u.StartName == input.StartName)
+                                     .Where(input.Gender != null, u => u.Gender == input.Gender)
+                                     .Where(input.BrithDate != null, u => u.BrithDate == input.BrithDate)
+                                     .Where(input.TeacherId != null, u => u.TeacherId == input.TeacherId)
+                                     .Where(!string.IsNullOrEmpty(input.teacherName), u => u.teacherName == input.teacherName)
+                                     .OrderBy(PageInputOrder.OrderBuilder<VStudentSearch>(input))
+                                     .ProjectToType<VStudentOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return vStudents;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈠鐢熻鍥惧垪琛�
+        /// </summary>
+        /// <param name="input">瀛︾敓瑙嗗浘鏌ヨ鍙傛暟</param>
+        /// <returns>(瀛︾敓瑙嗗浘)瀹炰緥鍒楄〃</returns>
+        [Description("VStudent/listNonPage")]
+        [HttpGet("listNonPage")]
+        public async Task<List<VStudentOutput>> ListNonPageAsync([FromQuery] VStudentSearchNonPage input)
+        {
+            var pId = input.Id;
+            var pName = input.Name?.Trim() ?? "";
+            var pAge = input.Age;
+            var pStartName = input.StartName;
+            var pGender = input.Gender;
+            var pBrithDate = input.BrithDate;
+            var pTeacherId = input.TeacherId;
+            var pteacherName = input.teacherName?.Trim() ?? "";
+            var vStudents = await _vStudentRep.DetachedEntities
+                .Where(pId != null, u => u.Id == pId)
+                .Where(!string.IsNullOrEmpty(pName), u => u.Name == pName)
+                .Where(pAge != null, u => u.Age == pAge)
+                .Where(pStartName != null, u => u.StartName == pStartName)
+                .Where(pGender != null, u => u.Gender == pGender)
+                .Where(pBrithDate != null, u => u.BrithDate == pBrithDate)
+                .Where(pTeacherId != null, u => u.TeacherId == pTeacherId)
+                .Where(!string.IsNullOrEmpty(pteacherName), u => u.teacherName == pteacherName)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<VStudentOutput>()
+            .ToListAsync();
+            return vStudents;
+        }
+
+
+        /// <summary>
+        /// 澧炲姞瀛︾敓瑙嗗浘
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("VStudent/add")]
+        [HttpPost("add")]
+        public async Task Add(AddVStudentInput input)
+        {
+            var vStudent = input.Adapt<VStudent>();
+                        //楠岃瘉
+            await CheckExisit(vStudent);
+
+            vStudent.CreatedUserId = vStudent.UpdatedUserId = SysHelper.GetUserId();
+            vStudent.CreatedUserName = vStudent.UpdatedUserName = SysHelper.GetUserName();
+            vStudent.CreatedTime = vStudent.UpdatedTime = SysHelper.GetNowTime();
+            await _vStudentRep.InsertAsync(vStudent);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎瀛︾敓瑙嗗浘
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("VStudent/delete")]
+        [HttpPost("delete")]
+        public async Task Delete(DeleteVStudentInput input)
+        {
+            
+        }
+
+        /// <summary>
+        /// 鏇存柊瀛︾敓瑙嗗浘
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("VStudent/edit")]
+        [HttpPost("edit")]
+        public async Task Update(UpdateVStudentInput input)
+        {
+            var isExist = await _vStudentRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+            var vStudent = input.Adapt<VStudent>();
+            //楠岃瘉
+            await CheckExisit(vStudent,true);
+
+            vStudent.UpdatedUserId = SysHelper.GetUserId();
+            vStudent.UpdatedUserName = SysHelper.GetUserName();
+            vStudent.UpdatedTime = SysHelper.GetNowTime();
+            await _vStudentRep.UpdateAsync(vStudent,ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀛︾敓瑙嗗浘
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("VStudent/detail")]
+        [HttpGet("detail")]
+        public async Task<VStudentOutput> Get([FromQuery] QueryeVStudentInput input)
+        {
+            return null;
+            return null;
+            return null;
+            return null;
+            return null;
+            return null;
+            return null;
+            return null;
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀛︾敓瑙嗗浘鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("VStudent/list")]
+        [HttpGet("list")]
+        public async Task<List<VStudentOutput>> List([FromQuery] VStudentInput input)
+        {
+            return await _vStudentRep.DetachedEntities.ProjectToType<VStudentOutput>().ToListAsync();
+        }    
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆瀛︾敓瑙嗗浘鍔熻兘
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        { 
+            int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+            int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+            DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+            var addList =await CommonImport(importDataTable, _DataStartLine);
+
+            lock (_lock)
+            {
+                _vStudentRep.InsertAsync(addList);
+               
+            }
+            await Task.CompletedTask;
+            return addList.Count;
+        }
+
+        /// <summary>
+        ///  DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+        /// </summary>
+        /// <param name="dataTable"></param>
+        /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+        /// <returns></returns>
+          private async Task<List<VStudent>> CommonImport(DataTable dataTable, int dataStartLine)
+        {
+
+            var details = new List<VStudent>();
+            int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+            foreach (System.Data.DataRow row in dataTable.Rows)
+            {
+                index++;
+
+               //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+                                          
+                           var addItem = new VStudent()
+                            {
+                               CreatedTime = SysHelper.GetNowTime(),
+                               CreatedUserId = SysHelper.GetUserId(),
+                               CreatedUserName = SysHelper.GetUserName(),
+                               UpdatedTime = SysHelper.GetNowTime(),
+                               UpdatedUserId = SysHelper.GetUserId(),
+                               UpdatedUserName = SysHelper.GetUserName()
+                             };
+                          #region 瀹氫箟鍙橀噺
+                           var _Id = "";//Id涓婚敭
+                           var _Name = "";//瀛︾敓濮撳悕
+                           var _Age = "";//瀛︾敓骞撮緞
+                           var _StartName = "";//鏄惁鍦ㄦ牎
+                           var _Gender = "";//鎬у埆
+                           var _BrithDate = "";//鍑虹敓鏃ユ湡
+                           var _TeacherId = "";//鍏宠仈鑰佸笀
+                           var _teacherName = "";//鑰佸笀鍚嶇О
+                          #endregion
+                          
+                          
+                          #region 鍙栧��
+                           _Id = row["Id涓婚敭"]?.ToString() ;
+                           _Name = row["瀛︾敓濮撳悕"]?.ToString() ;
+                           _Age = row["瀛︾敓骞撮緞"]?.ToString() ;
+                           _StartName = row["鏄惁鍦ㄦ牎"]?.ToString() ;
+                           _Gender = row["鎬у埆"]?.ToString() ;
+                           _BrithDate = row["鍑虹敓鏃ユ湡"]?.ToString() ;
+                           _TeacherId = row["鍏宠仈鑰佸笀"]?.ToString() ;
+                           _teacherName = row["鑰佸笀鍚嶇О"]?.ToString() ;
+                          #endregion
+                          
+                          
+                          #region 楠岃瘉
+                          if(!string.IsNullOrEmpty(_Id))
+                          {
+                              if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id))
+                              {
+                                 throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉姝g‘锛�");
+                              }
+                              if (outId <= 0&&!string.IsNullOrEmpty(_Id))
+                              {
+                                 throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+                              }
+                              else
+                              {
+                                 addItem.Id = outId;
+                              }
+                          
+                          }
+                          if(!string.IsNullOrEmpty(_Name))
+                          {
+                                addItem.Name = (string)_Name;
+                           }
+                          if(!string.IsNullOrEmpty(_Age))
+                          {
+                              if (!int.TryParse(_Age, out int outAge)&&!string.IsNullOrEmpty(_Age))
+                              {
+                                 throw Oops.Oh($"绗瑊index}琛孾瀛︾敓骞撮緞]{_Age}鍊间笉姝g‘锛�");
+                              }
+                              if (outAge <= 0&&!string.IsNullOrEmpty(_Age))
+                              {
+                                 throw Oops.Oh($"绗瑊index}琛孾瀛︾敓骞撮緞]{_Age}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+                              }
+                              else
+                              {
+                                 addItem.Age = outAge;
+                              }
+                          
+                          }
+                          if(!string.IsNullOrEmpty(_StartName))
+                          {
+                            if(!_StartName.Equals("鏄�") && !_StartName.Equals("鍚�"))
+                             {
+                               throw Oops.Oh($"绗瑊index}琛孾鏄惁鍦ㄦ牎]{_StartName}鍊间笉姝g‘锛�");
+                             }
+                             else
+                             {
+                               bool outStartName = _StartName.Equals("鏄�") ? true : false;
+                               addItem.StartName = outStartName;
+                             }
+                             }
+                          
+                          if(!string.IsNullOrEmpty(_Gender))
+                          {
+                          System.Int32  enumGender = default(System.Int32);
+                          
+                             if(!Enum.TryParse<System.Int32>(_Gender, out enumGender)&&!string.IsNullOrEmpty(_Gender))
+                              {
+                                throw Oops.Oh($"绗瑊index}琛孾鎬у埆]{_Gender}鍊间笉姝g‘锛�");
+                              }
+                              else
+                              {
+                                 addItem.Gender = enumGender;
+                              }
+                          
+                           }
+                          if(!string.IsNullOrEmpty(_BrithDate))
+                          {
+                                addItem.BrithDate = Convert.ToDateTime(Convert.ToDateTime(_BrithDate).ToShortDateString());
+                           }
+                          if(!string.IsNullOrEmpty(_TeacherId))
+                          {
+                              if (!long.TryParse(_TeacherId, out long outTeacherId)&&!string.IsNullOrEmpty(_TeacherId))
+                              {
+                                 throw Oops.Oh($"绗瑊index}琛孾鍏宠仈鑰佸笀]{_TeacherId}鍊间笉姝g‘锛�");
+                              }
+                              if (outTeacherId <= 0&&!string.IsNullOrEmpty(_TeacherId))
+                              {
+                                 throw Oops.Oh($"绗瑊index}琛孾鍏宠仈鑰佸笀]{_TeacherId}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+                              }
+                              else
+                              {
+                                 addItem.TeacherId = outTeacherId;
+                              }
+                          
+                          }
+                          if(!string.IsNullOrEmpty(_teacherName))
+                          {
+                                addItem.teacherName = (string)_teacherName;
+                           }
+                          #endregion
+                          
+
+                //楠岄噸
+                await CheckExisit(details, addItem,index);
+                details.Add(addItem);
+            }
+
+            return details;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇瀛︾敓瑙嗗浘鐨凟xcel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [Description("VStudent/downloadExcelTemplate")]
+        [HttpGet("downloadExcelTemplate")]
+        public IActionResult DownloadExcelTemplate([FromQuery] string version)
+        {
+            string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\VStudent{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+            var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(瀛︾敓瑙嗗浘).xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        /// <summary>
+        /// 鏍规嵁瀛︾敓瑙嗗浘鏌ヨ鍙傛暟瀵煎嚭Excel
+        /// </summary>
+        /// <param name="input">瀛︾敓瑙嗗浘鏌ヨ鍙傛暟</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [Description("VStudent/toExcel")]
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] VStudentSearchNonPage input)
+        {
+            var vStudentList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(vStudentList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("VStudent", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+
+
+        
+        
+
+
+
+        /// <summary>
+        /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <param name="isEdit"></param>
+        /// <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+        /// <returns></returns>
+        private async Task CheckExisit( VStudent input,bool isEdit=false,int index=0)
+        {
+           
+
+           
+
+          
+                
+               
+        
+
+            //娌℃湁閰嶇疆鑱斿悎涓婚敭锛屼笉闇�瑕侀獙閲�
+
+             
+           
+              
+
+        }
+
+        /// <summary>
+        /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鐨勬暟鎹泦
+        /// </summary>
+        /// <param name="inputs"></param>
+        /// <param name="input"></param>
+        /// <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+        private async Task CheckExisit(List<VStudent> inputs,VStudent input, int index)
+        {
+
+                //娌℃湁閰嶇疆鑱斿悎涓婚敭锛屼笉闇�瑕侀獙閲�
+            
+           
+        }
+
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveInput.cs
new file mode 100644
index 0000000..19601a7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveInput.cs
@@ -0,0 +1,86 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍒涘缓涓讳换鍔°�丄GV浠诲姟杈撳叆鍙傛暟
+    /// </summary>
+    public class AssembleInteractiveInput
+    {
+        /// <summary>
+        /// 涓嬬嚎鍙�
+        /// </summary>
+        public BlankingProductionLineEnum BlankingProductionLine { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        //public List<DestinationsInput> destinations { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AssembleDestinationsInput
+    {
+        /// <summary>
+        /// 浣嶇疆锛堣捣鐐癸級/ 浣嶇疆锛堢粓鐐癸級
+        /// </summary>
+        /// <example>001H01B0101</example>
+        public string locationName { get; set; }
+
+        /// <summary>
+        /// 鍙栬揣鍔ㄤ綔锛氬眰鏁� / 鏀捐揣鍔ㄤ綔锛氬眰鏁�  2
+        /// </summary>
+        /// <example>Load cargo:00</example>
+        public string operation { get; set; }
+    }
+
+    /// <summary>
+    /// 鏇存柊浠诲姟杈撳叆鍙傛暟
+    /// </summary>
+    public class UpdateAssembleTaskInput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public TaskStatusEnum TaskStatus { get; set; }
+
+        /// <summary>
+        /// 璁惧浠诲姟鐘舵��
+        /// </summary>
+        public TaskAssembleDodeviceStatusEnum TaskAssembleDodeviceStatus { get; set; }
+
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        public int Aisle { get; set; }
+    }
+
+
+    /// <summary>
+    /// 寮哄埗瀹屾垚
+    /// </summary>
+    public class FinishAssembleTaskInput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set; }
+    }
+    /// <summary>
+    ///鏇存柊agv鎶ラ敊淇℃伅
+    /// </summary>
+    public class UpdateAgvWaring
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long Id { get; set; }
+    }
+    
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveOutput.cs
new file mode 100644
index 0000000..8e2519c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveOutput.cs
@@ -0,0 +1,47 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏌ヨ鎵�鏈塛CS鍙互璇诲彇鐨勪换鍔¤緭鍑哄弬鏁�
+    /// </summary>
+    public class GetAssembleTaskOutput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set; }
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public TaskType TaskType { get; set; }
+        /// <summary>
+        /// 浠诲姟浼樺厛绾у埆
+        /// </summary>
+        public int TaskLevel { get; set; }
+        /// <summary>
+        /// 宸烽亾/鎻愬崌鏈�
+        /// </summary>
+        public int Aisle { get; set; }
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��;鏁版嵁瀛楀吀
+        /// </summary>
+        public TaskStatusEnum TaskStatus { get; set; }
+    }
+    /// <summary>
+    /// 鏌ヨ鎵�鏈塛CS鍙互璇诲彇鐨刟gv鎶ヨ淇℃伅
+    /// </summary>
+    public class GetAgvWaring
+    {
+        /// <summary>
+        /// 宸烽亾/鎻愬崌鏈�
+        /// </summary>
+        public int Aisle { get; set; }
+    }
+    
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveInput.cs
new file mode 100644
index 0000000..0179a80
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveInput.cs
@@ -0,0 +1,126 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍒涘缓涓讳换鍔°�丄GV浠诲姟杈撳叆鍙傛暟
+    /// </summary>
+    public class InteractiveInput
+    {
+        /// <summary>
+        /// 涓嬬嚎鍙�
+        /// </summary>
+        public BlankingProductionLineEnum BlankingProductionLine { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        //public List<DestinationsInput> destinations { get; set; }
+    }
+
+    /// <summary>
+    /// 鏌ヨ鎵�鏈夌┖闂插簱浣嶈緭鍏ュ弬鏁�
+    /// </summary>
+    public class GetPlaceInput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set; }
+    }
+
+    /// <summary>
+    /// 鏇存柊浠诲姟杈撳叆鍙傛暟
+    /// </summary>
+    public class UpdateTaskInput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        //public TaskStatusEnum TaskStatus { get; set; }
+
+        /// <summary>
+        /// 璁惧浠诲姟鐘舵��
+        /// </summary>
+        public TaskDodeviceStatusEnum TaskDodeviceStatus { get; set; }
+
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        //public int Aisle { get; set; }
+
+        /// <summary>
+        /// 绉伴噸閲嶉噺
+        /// </summary>
+        public decimal weight { get; set; }
+    }
+    /// <summary>
+    /// 寮哄埗瀹屾垚
+    /// </summary>
+    public class FinishTaskInput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set; }
+    }
+
+
+    /// <summary>
+    /// 鏇存柊浠诲姟杈撳叆鍙傛暟
+    /// </summary>
+    public class CreateRelocationInput
+    {
+        /// <summary>
+        /// 浠诲姟璧风偣
+        /// </summary>
+        public string SourcePlace { get; set; }
+
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        public int Aisle { get; set; }
+
+    }
+
+    /// <summary>
+    /// 娣诲姞璁惧鎶ヨ淇℃伅杈撳叆鍙傛暟
+    /// </summary>
+    public class AddDeviceWaringInput
+    {
+        /// <summary>
+        /// WcsId
+        /// </summary>
+        public int WcsId { get; set; }
+
+        /// <summary>
+        /// 璁惧鍚嶇О
+        /// </summary>
+        public string DeviceName { get; set; }
+
+        /// <summary>
+        /// 鏁呴殰鍚嶇О
+        /// </summary>
+        public string FaultName { get; set; }
+
+        /// <summary>
+        /// 鍙戠敓鏃堕棿
+        /// </summary>
+        public DateTimeOffset? StartTime { get; set; }
+
+        /// <summary>
+        /// 缁撴潫鏃堕棿
+        /// </summary>
+        public DateTimeOffset? EndTime { get; set; }
+
+        /// <summary>
+        /// 鎸佺画鏃堕棿
+        /// </summary>
+        public int RunningTime { get; set; }
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveOutput.cs
new file mode 100644
index 0000000..39376d0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveOutput.cs
@@ -0,0 +1,120 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏌ヨ鎵�鏈塛CS鍙互璇诲彇鐨勪换鍔¤緭鍑哄弬鏁�
+    /// </summary>
+    public class GetSendTaskOutput
+    {
+        /// <summary>
+        /// 浠诲姟璇︽儏
+        /// </summary>
+        public SendTaskDetailOutput taskDetail { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡璇︽儏
+        /// </summary>
+        public SendMaterialDetailOutput materialDetail { get; set; }
+    }
+
+    /// <summary>
+    /// 浠诲姟璇︽儏
+    /// </summary>
+    public class SendTaskDetailOutput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set; }
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public TaskType TaskType { get; set; }
+        /// <summary>
+        /// 浠诲姟浼樺厛绾у埆
+        /// </summary>
+        public int TaskLevel { get; set; }
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        public int Aisle { get; set; }
+        /// <summary>
+        /// 浠诲姟鐨勮捣鐐�
+        /// </summary>
+        public string SourcePlace { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public TaskStatusEnum TaskStatus { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏
+        /// </summary>
+        public string ContainerCode { get; set; }
+    }
+
+    /// <summary>
+    /// 鐗╂枡璇︽儏
+    /// </summary>
+    public class SendMaterialDetailOutput
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public string MaterialDensity { get; set; }
+    }
+
+    /// <summary>
+    ///鑾峰彇绌洪棽鐨勫簱浣�
+    /// </summary>
+    public class GetPlaceOutput
+    {
+        /// <summary>
+        /// 鍏ュ簱搴撲綅鐩爣鐐�
+        /// </summary>
+        public string ToPlace { get; set; }
+
+        /// <summary>
+        /// 绉诲簱搴撲綅璧风偣
+        /// </summary>
+        public string SourcePlace { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鏄惁瀛樺湪
+        /// </summary>
+        public bool TaskIsExist { get; set; } = true;
+    }
+
+    /// <summary>
+    /// 鑾峰彇绉诲簱搴撲綅
+    /// </summary>
+    public class GetYiKuPlaceOutput
+    {
+        /// <summary>
+        /// 绉诲簱搴撲綅鐩爣鐐�
+        /// </summary>
+        public string ToPlace { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/WareWcsToWmsService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/WareWcsToWmsService.cs
new file mode 100644
index 0000000..5178d45
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/WareWcsToWmsService.cs
@@ -0,0 +1,1062 @@
+锘縰sing Furion;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+using StackExchange.Redis;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鎷涘晢LES WCS璋冪敤鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("鎷涘晢LES WCS璋冪敤鏈嶅姟", Name = "WareWcsToWmsService", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WareWcsToWmsService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+        private readonly IRepository<AgvTask, MasterDbContextLocator> _agvTaskRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+        private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+        private readonly IRepository<LesPackWarehouse, MasterDbContextLocator> _lesPackWarehouseRep;
+        private readonly IRepository<LesDeviceWaring, MasterDbContextLocator> _lesDeviceWaringRep;
+
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public WareWcsToWmsService(
+            IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
+            IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+            IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+            IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+            IRepository<AgvTask, MasterDbContextLocator> agvTaskRep,
+            IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+            IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+            IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+            IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+            IRepository<LesPackWarehouse, MasterDbContextLocator> lesPackWarehouseRep,
+            IRepository<LesDeviceWaring, MasterDbContextLocator> lesDeviceWaringRep
+        )
+        {
+            _wmsOrderRep = wmsOrderRep;
+            _wmsOrderDetailsRep = wmsOrderDetailsRep;
+            _wmsTaskRep = wmsTaskRep;
+            _wmsMaterialContainerRep = wmsMaterialContainerRep;
+            _agvTaskRep = agvTaskRep;
+            _wmsPlaceRep = wmsPlaceRep;
+            _wmsContainerPlaceRep = wmsContainerPlaceRep;
+            _wmsMaterialStockRep = wmsMaterialStockRep;
+            _wmsContainerRep = wmsContainerRep;
+            _lesPackWarehouseRep = lesPackWarehouseRep;
+            _lesDeviceWaringRep = lesDeviceWaringRep;
+        }
+
+
+        /// <summary>
+        /// 瀹氭椂鏌ヨWCS鍙互涓嬪彂鐨勫嚭鍏ュ簱浠诲姟(10鏉�)
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("GetSendTask")]
+        [AllowAnonymous]
+        public async Task<List<SendTaskDetailOutput>> GetSendTask()
+        {
+            var outputList = new List<SendTaskDetailOutput>();
+            var alllist = await _wmsTaskRep.DetachedEntities
+                .Where(z => z.IsRead == true)
+                .Take(10)
+                .OrderByDescending(n => n.TaskLevel)
+                .OrderBy(p => p.CreatedTime).ToListAsync();
+            foreach (var item in alllist)
+            {
+                var sendTaskDetail = new SendTaskDetailOutput(); //浠诲姟璇︽儏
+                sendTaskDetail.TaskNo = item.TaskNo;
+                if (item.TaskType == TaskType.RUKU) sendTaskDetail.SourcePlace = item.ToPlace;
+                else sendTaskDetail.SourcePlace = item.SourcePlace;
+                sendTaskDetail.Aisle = item.Aisle;
+                sendTaskDetail.TaskType = item.TaskType;
+                sendTaskDetail.TaskLevel = item.TaskLevel;
+                sendTaskDetail.ContainerCode = item.ContainerCode;
+                sendTaskDetail.TaskStatus = item.TaskStatus;
+                outputList.Add(sendTaskDetail);
+
+                //item.IsRead=false;
+                //item.TaskStatus = TaskStatusEnum.DAIZHIXING;
+                //await _wmsTaskRep.UpdateAsync(item);
+            }
+            return outputList;
+        }
+
+
+        /// <summary>
+        /// 鏇存柊浠诲姟淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("UpdateTask")]
+        [UnitOfWork]
+        [AllowAnonymous]
+        public async Task UpdateTask([FromBody] UpdateTaskInput input)
+        {
+            //鏍规嵁浠诲姟鍙锋煡璇换鍔′俊鎭�
+            var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(z => z.TaskNo == input.TaskNo);
+            if (wmsTask == null) throw Oops.Oh(errorMessage: "浠诲姟涓嶅瓨鍦紒");
+            wmsTask.TaskDodeviceStatus = input.TaskDodeviceStatus;
+            wmsTask.TaskStatus = TaskStatusEnum.ZHIXINGZHONG;
+            wmsTask.IsRead = false;
+
+            WmsPlace wmsPlace = new WmsPlace();
+            //鍒ゆ柇鍏ュ簱杩樻槸鍑哄簱
+            if (wmsTask.TaskType == TaskType.RUKU)
+            {
+                //搴撲綅淇℃伅
+                wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(z => z.PlaceCode == wmsTask.ToPlace);
+            }
+            else if (wmsTask.TaskType == TaskType.CHUKU)
+            {
+                //搴撲綅淇℃伅
+                wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(z => z.PlaceCode == wmsTask.SourcePlace);
+            }
+            if (wmsPlace == null) throw Oops.Oh(errorMessage: "搴撲綅涓嶅瓨鍦紒");
+
+            // 鏌ヨ鎵樼洏淇℃伅
+            var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
+            if (wmsContainer == null) throw Oops.Oh("鎵樼洏涓嶅瓨鍦紒");
+
+            //鍏ュ簱绉伴噸
+            //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_RKCZ)
+            //{
+            //}
+            //鍏ュ簱杈撻�佺嚎寮�濮�
+            //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_RSSX)
+            //{
+            //}
+            //鍏ュ簱杈撻�佺嚎缁撴潫
+            //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_RSSX)
+            //{
+            //}
+            //鍏ュ簱RGV寮�濮�
+            //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_RGV)
+            //{
+            //}
+            //鍏ュ簱RGV缁撴潫
+            //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_RGV)
+            //{
+            //}
+            //鍏ュ簱寮�濮�
+            if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_DDJ)
+            {
+                // 鏇存柊搴撲綅鐘舵��
+                wmsPlace.PlaceStatus = PlaceStatus.DAIRU;
+                await _wmsPlaceRep.UpdateAsync(wmsPlace);
+            }
+            //鍏ュ簱瀹屾垚
+            if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_DDJ)
+            {
+                //棣栧厛鏇存柊浠诲姟鐘舵�佸畬鎴�
+                wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+                //鏇存柊璁惧鐘舵��
+                wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+
+                // 鏇存柊鎵樼洏鐘舵�佷负鈥滃簱浣嶁��
+                wmsContainer.ContainerStatus = ContainerStatus.KUWEI;
+                await _wmsContainerRep.UpdateAsync(wmsContainer);
+
+                //搴撲綅淇℃伅
+                if (wmsPlace == null) throw Oops.Oh("搴撲綅涓嶅瓨鍦�!");
+                if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("搴撲綅琚攣瀹�!");
+
+                // 鏇存柊搴撲綅鐘舵�佷负鈥滃瓨璐р��
+                wmsPlace.PlaceStatus = PlaceStatus.CUNHUO;
+                if (wmsTask.Description == "绌烘墭") wmsPlace.EmptyContainer = YesOrNot.Y;
+                else wmsPlace.EmptyContainer = YesOrNot.N;
+                await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+                // 鍒涘缓鎵樼洏鍙峰簱浣嶅叧绯昏〃
+                var wmsContainerPlaceModel = new WmsContainerPlace()
+                {
+                    PlaceId = wmsPlace.Id,
+                    PlaceCode = wmsPlace.PlaceCode,
+                    ContainerId = wmsContainer.Id,
+                    ContainerCode = wmsContainer.ContainerCode,
+                    ContainerPlaceStatus = CommonStatus.ENABLE
+                };
+                await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlaceModel);
+
+                // 鏇存柊搴撳瓨
+                var wmsMaterialContainerList = await _wmsMaterialContainerRep.DetachedEntities
+                    .Where(p => p.OrderNo == wmsTask.OrderNo && p.BindStatus == CommonStatus.ENABLE).ProjectToType<WmsMaterialContainer>().ToListAsync();
+
+                foreach (var item in wmsMaterialContainerList)
+                {
+                    var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(p => p.ContainerCode == wmsContainer.ContainerCode
+                    && p.MaterialBatch == item.MaterialBatch);
+                    if (wmsMaterialStock != null)
+                    {
+                        wmsMaterialStock.Source = RuKuSourceEnum.WULIAO;
+                        wmsMaterialStock.AreaId = wmsPlace.AreaId;
+                        wmsMaterialStock.PlaceCode = wmsPlace.PlaceCode;
+                        wmsMaterialStock.StockNumber = item.BindQuantity;
+                        await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock);
+                    }
+                    else
+                    {
+                        wmsMaterialStock = new WmsMaterialStock()
+                        {
+                            InspectionMethod = MaterialInspection.MIANJIAN,
+                            UnitType = UnitType.ZHONGLIANG,
+                            UnitNo = UnitNoType.T,
+                            MaterialNo = item.MaterialNo,
+                            MaterialType = MaterialType.CHENGPING,
+                            MaterialName = item.MaterialName,
+                            MaterialSpec = item.MaterialSpec,
+                            MaterialBatch = item.MaterialBatch,
+                            MaterialDensity = item.MaterialDensity,
+                            StockNumber = item.BindQuantity,
+                            PlaceCode = wmsPlace.PlaceCode,
+                            ContainerId = wmsContainer.Id,
+                            ContainerCode = wmsContainer.ContainerCode,
+                            AreaId = wmsPlace.AreaId,
+                            Source = RuKuSourceEnum.WULIAO
+                        };
+                        await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
+                    }
+                }
+                // 绌烘枡绠卞叆搴�
+                if (wmsTask.Description == "绌烘墭")
+                {
+                    var wmsMaterialStock = new WmsMaterialStock()
+                    {
+                        InspectionMethod = MaterialInspection.MIANJIAN,
+                        UnitType = UnitType.ZHONGLIANG,
+                        UnitNo = UnitNoType.T,
+                        MaterialNo = "N/A",
+                        MaterialType = MaterialType.KONGTUO,
+                        MaterialName = "N/A",
+                        MaterialSpec = "N/A",
+                        MaterialBatch = "N/A",
+                        MaterialDensity = "N/A",
+                        StockNumber = 0,
+                        PlaceCode = wmsPlace.PlaceCode,
+                        ContainerId = wmsContainer.Id,
+                        ContainerCode = wmsContainer.ContainerCode,
+                        AreaId = wmsPlace.AreaId,
+                        Source = RuKuSourceEnum.KONGTUO
+                    };
+                    await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
+                }
+            }
+            //鍑哄簱鍫嗗灈鏈哄畬鎴�,鎵ц搴撳瓨锛屽簱浣嶏紝鎵樼洏瀵瑰簲鍏崇郴杩涜鏇存柊
+            else if (wmsTask.TaskType == TaskType.CHUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_DDJ)
+            {
+
+                if (wmsPlace == null) throw Oops.Oh("搴撲綅涓嶅瓨鍦�!");
+                if (wmsPlace.PlaceStatus != PlaceStatus.DAICHU) throw Oops.Oh("搴撲綅寮傚父璐�!");
+
+                // 鏌ヨ鎵樼洏涓庡簱浣嶇殑鍏崇郴
+                var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == wmsPlace.Id && z.PlaceCode == wmsPlace.PlaceCode
+                && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE);
+                if (wmsContainerPlace == null) throw Oops.Oh("搴撲綅瀹瑰櫒鍏崇郴涓嶅瓨鍦�!");
+
+                // 鏌ヨ搴撳瓨淇℃伅
+                var wmsMaterialStockList = await _wmsMaterialStockRep.DetachedEntities.Where(u => u.ContainerCode == wmsTask.ContainerCode).ToListAsync();
+                if (wmsMaterialStockList.Count <= 0) throw Oops.Oh("搴撳瓨鏁版嵁寮傚父!");
+
+                ////鏌ヨ鐗╂枡涓庢墭鐩樼粍鐩樺叧绯伙紙鐘舵�侊細姝e父锛�
+                var wmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == wmsTask.ContainerCode
+                    && p.BindStatus == CommonStatus.ENABLE && p.OrderNo == wmsTask.OrderNo).ToListAsync();
+                //鍒ゆ柇鐗╂枡鏄惁鏄┖鎵橈紝濡傛灉鏄┖鎵樼洿鎺ュ垹闄わ紝涓嶆槸绌烘墭鏌ヨ鐗╂枡
+                if (wmsMaterialContainerList.Count == 0)
+                {
+                    //鍒犻櫎搴撳瓨
+                    foreach (var item in wmsMaterialStockList)
+                    {
+                        await _wmsMaterialStockRep.DeleteAsync(item);
+                    }
+                    // 鏇存柊鎵樼洏鐘舵�佷负鈥滅┖闂测��
+                    wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+
+                }
+                else
+                {
+                    //鏋勫缓鍑哄簱鐗╂枡鍜屽懆杞鍙峰叧绯�
+                    var orderNo = "N/A";
+                    if (wmsMaterialContainerList.Count > 0) orderNo = YitIdHelper.NextId().ToString();
+                    foreach (var item in wmsMaterialContainerList)
+                    {
+                        //鏇存柊鐘舵�佷负鈥濆垹闄も��
+                        item.BindStatus = CommonStatus.DELETED;
+                        await _wmsMaterialContainerRep.UpdateNowAsync(item);
+
+                        //鏂板缁勭洏缁戝畾璁板綍 姝e父
+                        var wmsMaterialContainer = item;
+                        wmsMaterialContainer.Id = YitIdHelper.NextId();
+                        wmsMaterialContainer.OrderNo = orderNo;
+                        wmsMaterialContainer.BindStatus = CommonStatus.ENABLE;
+                        await _wmsMaterialContainerRep.InsertNowAsync(wmsMaterialContainer);
+                        //鏇存敼搴撳瓨鐨勫簱浣嶅彿涓篘/A
+                        foreach (var stock in wmsMaterialStockList)
+                        {
+                            stock.PlaceCode = "N/A";
+                            await _wmsMaterialStockRep.UpdateAsync(stock);
+                        }
+                    }
+                    wmsContainer.ContainerStatus = ContainerStatus.FENJIAN;
+                }
+                await _wmsContainerRep.UpdateAsync(wmsContainer);
+
+                //鏇存柊搴撲綅鐘舵�佷负鈥滅┖闂测��
+                wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN;
+                wmsPlace.Islock = YesOrNot.N;
+                wmsPlace.EmptyContainer = YesOrNot.N;
+                await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+                //鏇存柊鍛ㄨ浆绠卞彿涓庡簱浣嶅叧绯讳负鈥滃垹闄も��
+                wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED;
+                await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace);
+            }
+            if (wmsTask.TaskType == TaskType.CHUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_CSSX)
+            {
+                wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+                wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+            }
+            else //绉诲簱
+            {
+                if (wmsTask.TaskType == TaskType.YIKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_DDJ)
+                {
+                    wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+                    wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+                    // 璧风偣搴撲綅淇℃伅
+                    var SourcePlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.SourcePlace).FirstOrDefaultAsync();
+                    SourcePlace.PlaceStatus = PlaceStatus.KONGXIAN;
+                    await _wmsPlaceRep.UpdateAsync(SourcePlace);
+                    //鐩爣搴撲綅淇℃伅
+                    var ToPlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.ToPlace).FirstOrDefaultAsync();
+                    ToPlace.PlaceStatus = PlaceStatus.CUNHUO;
+                    await _wmsPlaceRep.UpdateAsync(ToPlace);
+                    //鎵樼洏搴撲綅鍏崇郴琛�
+                    var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == SourcePlace.Id && z.PlaceCode == SourcePlace.PlaceCode
+                    && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE);
+                    wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED;
+                    await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace);
+                    await _wmsContainerPlaceRep.InsertAsync(new WmsContainerPlace()
+                    {
+                        PlaceId = ToPlace.Id,
+                        PlaceCode = ToPlace.PlaceCode,
+                        ContainerId = wmsContainer.Id,
+                        ContainerCode = wmsContainer.ContainerCode,
+                        ContainerPlaceStatus = CommonStatus.ENABLE
+                    });
+                    //搴撳瓨搴撲綅鏇存柊
+                    var stockModel = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsTask.ContainerCode && p.PlaceCode == SourcePlace.PlaceCode).FirstOrDefaultAsync();
+                    if (stockModel != null)
+                    {
+                        stockModel.PlaceCode = ToPlace.PlaceCode;
+                    }
+                }
+            }
+            await _wmsTaskRep.UpdateAsync(wmsTask);
+        }
+
+        /// <summary>
+        /// 鑾峰彇搴撲綅淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("GetPlace")]
+        [AllowAnonymous]
+        public async Task<GetPlaceOutput> GetPlace([FromBody] GetPlaceInput input)
+        {
+            //1.鍒� 浼樺厛1鎺掑拰4鎺� 灞備紭鍏堜粠涓嬪埌涓�
+            //2.淇濈暀10涓唴渚хЩ搴撳簱浣� 
+            var taskModel = await _wmsTaskRep.Where(p => p.TaskNo == input.TaskNo).FirstOrDefaultAsync();
+            if (taskModel == null) return new GetPlaceOutput() { TaskIsExist = false };
+            if (taskModel.TaskStatus == TaskStatusEnum.CHEHUI || taskModel.TaskStatus == TaskStatusEnum.QUXIAO || taskModel.TaskStatus == TaskStatusEnum.WANCHENG || taskModel.TaskStatus == TaskStatusEnum.ZANTING)
+            {
+                throw Oops.Oh("浠诲姟鐘舵�佹湭婊¤冻鑾峰彇鐨勫簱浣嶆潯浠�");
+            }
+            taskModel.TaskStatus = TaskStatusEnum.ZHIXINGZHONG;
+            //瀹氫箟鍏ュ簱瀵硅薄,绉诲簱瀵硅薄
+            var ToPlace = new WmsPlace();
+            var SourcePlace = new WmsPlace();
+            var rowNumber = 0;
+
+            //鍏ュ簱娴佺▼
+            if (taskModel.TaskType == TaskType.RUKU)
+            {
+                //闃查噸鎿嶄綔
+                if (taskModel != null && !string.IsNullOrEmpty(taskModel.ToPlace))
+                {
+                    ToPlace = await _wmsPlaceRep.Where(p => p.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN && p.PlaceCode == taskModel.ToPlace).FirstOrDefaultAsync();
+                    if (ToPlace.RowNo == GetOneRowByAisle(taskModel.Aisle) || ToPlace.RowNo == GetFourRowByAisle(taskModel.Aisle))
+                    {
+                        if (ToPlace.RowNo == GetOneRowByAisle(taskModel.Aisle))
+                            rowNumber = GetTwoRowByAisle(taskModel.Aisle);
+                        else
+                            rowNumber = GetThreeRowByAisle(taskModel.Aisle);
+                        SourcePlace = await _wmsPlaceRep.Where(p => p.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN && p.Aisle == taskModel.Aisle && p.RowNo == rowNumber && p.ColumnNo == ToPlace.ColumnNo && p.LayerNo == ToPlace.LayerNo).FirstOrDefaultAsync();
+                        if (SourcePlace != null && SourcePlace.PlaceStatus == PlaceStatus.CUNHUO)
+                            return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode, SourcePlace = SourcePlace.PlaceCode };
+                    }
+                    return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode };
+                }
+                //鑾峰彇绔嬩綋搴撳彲鐢ㄥ簱浣�
+                var placeList = await _wmsPlaceRep.DetachedEntities.Where(z => z.PlaceStatus == PlaceStatus.KONGXIAN
+                && z.Islock == YesOrNot.N && z.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN
+                && z.WmsArea.AreaType == AreaType.LITIKU && z.Aisle == taskModel.Aisle).ProjectToType<WmsPlace>().ToListAsync();
+
+                //鑾峰彇褰撳墠绔嬩綋搴撻渶瑕佸嚭搴撳簱浣嶉泦鍚�
+                var placeCodeList = await _wmsTaskRep.DetachedEntities.Where(p => p.IsRead == true
+                && p.TaskType == TaskType.CHUKU && p.Aisle == taskModel.Aisle).Select(n => n.SourcePlace).ToListAsync();
+
+                var ckPlaceModelList = await _wmsPlaceRep.DetachedEntities.Where(z => placeCodeList.Contains(z.PlaceCode)
+                && z.Islock == YesOrNot.N && z.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN
+                && z.WmsArea.AreaType == AreaType.LITIKU && z.Aisle == taskModel.Aisle).ToListAsync();
+
+                //閰嶇疆鏂囦欢涓缃槸鍚﹀紑鍚寚瀹氬簱浣嶅叆搴撳拰绉诲簱鎿嶄綔
+                //if (Convert.ToBoolean(App.Configuration["YiKuTestPalce:IsStart"]))
+                //{
+                //    var rukuPoint = App.Configuration["YiKuTestPalce:rukuPoint"].Split('.');  //鍏ュ簱璧风偣
+                //    var yikuPoint = App.Configuration["YiKuTestPalce:yikuPoint"].Split('.');  //绉诲簱璧风偣
+                //    ToPlace = placeList.Where(p => p.RowNo == Convert.ToInt32(rukuPoint[0])
+                //    && p.ColumnNo == Convert.ToInt32(rukuPoint[1]) && p.LayerNo == Convert.ToInt32(rukuPoint[2])).FirstOrDefault();
+                //    if (ToPlace != null)
+                //    {
+                //        ToPlace.PlaceStatus = PlaceStatus.DAIRU;
+                //        await _wmsPlaceRep.UpdateAsync(ToPlace);
+                //        taskModel.ToPlace = ToPlace.PlaceCode;
+                //        taskModel.AreaName = ToPlace.WmsArea.AreaName;
+                //        await _wmsTaskRep.UpdateAsync(taskModel);
+                //        if (yikuPoint.Length > 1)
+                //        {
+                //            SourcePlace = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.RowNo == Convert.ToInt32(yikuPoint[0])
+                //            && p.ColumnNo == Convert.ToInt32(yikuPoint[1]) && p.LayerNo == Convert.ToInt32(yikuPoint[2])
+                //            && p.Aisle == taskModel.Aisle && p.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN
+                //            && p.WmsArea.AreaType == AreaType.LITIKU
+                //            );
+                //        }
+                //        return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode, SourcePlace = SourcePlace.PlaceCode };
+                //    }
+                //}
+                var maxColumn = placeList.Max(selector: n => n.ColumnNo);
+                var maxLayerNo = 0;
+
+                //鍏堜互鍒椾负杩涜寰幆鍒ゆ柇
+                for (int j = 1; j <= maxColumn; j++)
+                {
+                    //鑾峰彇璇ュ垪鐨勬渶澶у眰
+                    if (placeList.Where(p => p.ColumnNo == j).Count() <= 1) continue;
+                    maxLayerNo = placeList.Where(p => p.ColumnNo == j).Max(selector: n => n.LayerNo);
+                    //寰幆姣忓垪姣忓眰鐨勪腑鍒�
+                    //鍒嗛厤搴撲綅闇�瑕佽�冭檻澶栦晶鏄惁鏈夊嚭搴撲换鍔★紝鏈夌殑璇濆氨娌℃湁鎵ц
+                    for (int f = 1; f <= maxLayerNo; f++)
+                    {
+
+                        var model = placeList.FirstOrDefault(p => p.RowNo == GetOneRowByAisle(taskModel.Aisle) && p.ColumnNo == j && p.LayerNo == f);
+                        var ckmodel = ckPlaceModelList.FirstOrDefault(p => p.RowNo == GetTwoRowByAisle(taskModel.Aisle) && p.ColumnNo == j && p.LayerNo == f);
+                        if (model != null && ckmodel == null)
+                        {
+                            ToPlace = model;
+                            break;
+                        }
+                    }
+                    if (!string.IsNullOrEmpty(ToPlace.PlaceCode)) break;
+                }
+                if (string.IsNullOrEmpty(ToPlace.PlaceCode)) throw Oops.Oh("鏆傛棤鍙互搴撲綅!");
+
+                //杩涜搴撲綅鍜屼换鍔$殑鏇存柊
+                ToPlace.PlaceStatus = PlaceStatus.DAIRU;
+                await _wmsPlaceRep.UpdateAsync(ToPlace);
+                taskModel.ToPlace = ToPlace.PlaceCode;
+                taskModel.AreaName = ToPlace.WmsArea.AreaName;
+                await _wmsTaskRep.UpdateAsync(taskModel);
+                if (SourcePlace == null || string.IsNullOrEmpty(SourcePlace.PlaceCode)) return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode };
+                else return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode, SourcePlace = SourcePlace.PlaceCode };
+            }
+            //鍑哄簱娴佺▼
+            if (taskModel.TaskType == TaskType.CHUKU)
+            {
+                //闇�瑕佸垽鏂笅搴撲綅鏄惁宸茬粡杩涜绉诲簱鎿嶄綔锛岄渶瑕侀�氳繃鎵樼洏缂栧彿杩涜閲嶆柊鏌ユ壘
+                var containerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(p => p.ContainerCode == taskModel.ContainerCode
+                && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+                if (containerPlace != null && containerPlace.PlaceCode != taskModel.SourcePlace)
+                {
+                    ToPlace = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.PlaceCode == containerPlace.PlaceCode);
+                    taskModel.SourcePlace = containerPlace.PlaceCode;
+                }
+                else
+                {
+                    ToPlace = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.PlaceCode == taskModel.SourcePlace);
+                }
+                //杩涜搴撲綅鍜屼换鍔$殑鏇存柊
+                ToPlace.PlaceStatus = PlaceStatus.DAICHU;
+                await _wmsPlaceRep.UpdateAsync(ToPlace);
+                taskModel.ToPlace = taskModel.Aisle.ToString();
+                await _wmsTaskRep.UpdateAsync(taskModel);
+                if (SourcePlace == null || string.IsNullOrEmpty(SourcePlace.PlaceCode)) return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode };
+                else return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode, SourcePlace = SourcePlace.PlaceCode };
+            }
+            else
+            {
+                throw Oops.Oh("浠诲姟寮傚父" + taskModel.TaskNo);
+            }
+        }
+
+
+        /// <summary>
+        /// 鍒涘缓绉诲簱浠诲姟
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("CreateYKTask")]
+        [UnitOfWork]
+        [AllowAnonymous]
+        public async Task<GetYiKuPlaceOutput> CreateRelocation(CreateRelocationInput input)
+        {
+            var placeModel = await _wmsPlaceRep.Where(p => p.PlaceCode == input.SourcePlace).ProjectToType<WmsPlace>().FirstOrDefaultAsync();
+            if (placeModel == null) throw Oops.Oh("搴撲綅鏁版嵁寮傚父!");
+            placeModel.PlaceStatus = PlaceStatus.DAICHU;
+            await _wmsPlaceRep.UpdateAsync(placeModel);
+            //鏌ヨ缁勭洏鍗曟嵁
+            var containerPlaceModel = await _wmsContainerPlaceRep.Where(p => p.PlaceCode == input.SourcePlace && p.ContainerPlaceStatus == CommonStatus.ENABLE).FirstOrDefaultAsync();
+            if (containerPlaceModel == null) throw Oops.Oh("绉诲簱搴撲綅鎵樼洏鏁版嵁寮傚父!");
+            var materialContainer = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == containerPlaceModel.ContainerCode && p.BindStatus == CommonStatus.ENABLE).FirstOrDefaultAsync();
+            if (materialContainer == null) throw Oops.Oh("缁勭洏鏁版嵁寮傚父!");
+
+            //鑾峰彇绌洪棽搴撲綅闆嗗悎
+            var placeList = await _wmsPlaceRep.DetachedEntities.Where(z => z.PlaceStatus == PlaceStatus.KONGXIAN
+            && z.Islock == YesOrNot.N && z.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN
+            && z.WmsArea.AreaType == AreaType.LITIKU && z.Aisle == input.Aisle).ToListAsync();
+            if (placeList.Count == 0) throw Oops.Oh("鏃犲彲绉诲簱搴撲綅!");
+
+            //瀹氫箟鐩爣鐐�
+            var ToPlaceModel = new WmsPlace();
+            var rowNumber = 0;
+            //1.鎺ㄨ崘澶栦晶搴撲綅
+            var wcPlaceList = placeList.Where(p => (p.RowNo == GetOneRowByAisle(placeModel.Aisle) || p.RowNo == GetFourRowByAisle(placeModel.Aisle))).ToList();
+            if (placeModel.Aisle == 11)
+            {
+                wcPlaceList = placeList.Where(p => (p.RowNo == GetOneRowByAisle(placeModel.Aisle) || p.RowNo == GetThreeRowByAisle(placeModel.Aisle))).ToList();
+            }
+            //瀹氫箟鏈�浼樺簱浣嶉泦鍚�
+            var zyPlaceList = new List<WmsPlace>();
+            //寰幆鍒ゆ柇瀵瑰簲鐨�2,3鏄湁璐�
+            foreach (var item in wcPlaceList)
+            {
+                if (placeModel.Aisle == 11)
+                {
+                    if (item.RowNo == GetOneRowByAisle(placeModel.Aisle))
+                    {
+                        zyPlaceList.Add(item);
+                    }
+                    if (item.RowNo == GetThreeRowByAisle(placeModel.Aisle))
+                    {
+                        rowNumber = GetTwoRowByAisle(placeModel.Aisle);
+                        var dypalceModel = placeList.Where(p => p.RowNo == rowNumber && p.ColumnNo == item.ColumnNo && p.LayerNo == item.LayerNo).FirstOrDefault();
+                        if (dypalceModel != null)
+                            zyPlaceList.Add(item);
+                    }
+                }
+                else
+                {
+                    if (item.RowNo == GetOneRowByAisle(placeModel.Aisle) || item.RowNo == GetFourRowByAisle(placeModel.Aisle))
+                    {
+                        if (item.RowNo == GetOneRowByAisle(placeModel.Aisle))
+                            rowNumber = GetTwoRowByAisle(placeModel.Aisle);
+                        else
+                            rowNumber = GetThreeRowByAisle(placeModel.Aisle);
+                        var dypalceModel = placeList.Where(p => p.RowNo == rowNumber && p.ColumnNo == item.ColumnNo && p.LayerNo == item.LayerNo).FirstOrDefault();
+                        if (dypalceModel != null)
+                            zyPlaceList.Add(item);
+                    }
+                }
+            }
+            if (zyPlaceList.Count != 0)
+            {
+                //鑾峰彇璺緞鏈�鐭殑搴撲綅 浣跨敤浜屽垎娉�
+                var mindModel = zyPlaceList.Where(p => p.ColumnNo == placeModel.ColumnNo).FirstOrDefault();
+                var leftModel = zyPlaceList.Where(p => p.ColumnNo < placeModel.ColumnNo).OrderByDescending(p => p.ColumnNo).FirstOrDefault();
+                var rightModel = zyPlaceList.Where(p => p.ColumnNo > placeModel.ColumnNo).OrderBy(p => p.ColumnNo).FirstOrDefault();
+
+                if (mindModel != null) ToPlaceModel = mindModel;
+                else if (leftModel == null) ToPlaceModel = rightModel;
+                else if (rightModel == null) ToPlaceModel = leftModel;
+                else if ((placeModel.ColumnNo - leftModel.ColumnNo) > (rightModel.ColumnNo - placeModel.ColumnNo)) ToPlaceModel = rightModel;
+                else ToPlaceModel = leftModel;
+            }
+            if (string.IsNullOrEmpty(ToPlaceModel.PlaceCode))
+            {
+                //2.娆′紭搴撲綅闆嗗悎
+                //娆′紭2,3鎺掑簱浣�
+                var cyPlace = placeList.Where(p => (p.RowNo == GetTwoRowByAisle(placeModel.Aisle) || p.RowNo == GetThreeRowByAisle(placeModel.Aisle))).OrderByDescending(p => p.ColumnNo).OrderBy(p => p.LayerNo).ToList();
+                if (placeModel.Aisle == 11)
+                {
+                    cyPlace = placeList.Where(p => p.RowNo == GetTwoRowByAisle(placeModel.Aisle)).OrderByDescending(p => p.ColumnNo).OrderBy(p => p.LayerNo).ToList();
+                }
+                if (cyPlace.Count > 0)
+                {
+                    //鑾峰彇璺緞鏈�鐭殑搴撲綅 浣跨敤浜屽垎娉�
+                    var mindModel = cyPlace.Where(p => p.ColumnNo == placeModel.ColumnNo).OrderByDescending(p => p.ColumnNo).FirstOrDefault();
+                    var leftModel = cyPlace.Where(p => p.ColumnNo < placeModel.ColumnNo).OrderByDescending(p => p.ColumnNo).FirstOrDefault();
+                    var rightModel = cyPlace.Where(p => p.ColumnNo > placeModel.ColumnNo).OrderBy(p => p.ColumnNo).FirstOrDefault();
+
+                    if (mindModel != null) ToPlaceModel = mindModel;
+                    else if (leftModel == null) ToPlaceModel = rightModel;
+                    else if (rightModel == null) ToPlaceModel = leftModel;
+                    else if ((placeModel.ColumnNo - leftModel.ColumnNo) > (rightModel.ColumnNo - placeModel.ColumnNo)) ToPlaceModel = rightModel;
+                    else ToPlaceModel = leftModel;
+                }
+            }
+            ToPlaceModel.PlaceStatus = PlaceStatus.DAIRU;
+            await _wmsPlaceRep.UpdateAsync(ToPlaceModel);
+
+            //鍒涘缓绉诲簱浠诲姟
+            var newWmsTask = new WmsTask()
+            {
+                //TaskNo = _commonOrderServiceRep.GetFYKOrderNo(),
+                TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
+                TaskModel = TaskModel.QUANZIDONG,
+                TaskType = TaskType.YIKU,
+                TaskLevel = 5,
+                TaskStatus = TaskStatusEnum.WEIZHIXING,
+                OrderNo = materialContainer.OrderNo,
+                OrderDetailsId = materialContainer.OrderDetailsId,
+                ContainerCode = materialContainer.ContainerCode,
+                SourcePlace = placeModel.PlaceCode,
+                ToPlace = ToPlaceModel.PlaceCode,
+                AreaName = placeModel.WmsArea.AreaName,
+                IsRead = true, //WCS鏄惁鍙互璇诲彇
+                SendTimes = 1, //鍙戦�佹鏁�
+                Aisle = placeModel.Aisle,
+                Dodevicetype = DodeviceType.AGV,
+                TaskDodeviceStatus = TaskDodeviceStatusEnum.WZX,
+            };
+            await _wmsTaskRep.InsertAsync(newWmsTask);
+
+            return new GetYiKuPlaceOutput()
+            {
+                ToPlace = ToPlaceModel.PlaceCode,
+                TaskNo = newWmsTask.TaskNo,
+            };
+        }
+
+
+        ///// <summary>
+        ///// 寮哄埗瀹屾垚
+        ///// </summary>
+        ///// <returns></returns>
+        //[HttpPost("Finish")]
+        //[UnitOfWork]
+        //[AllowAnonymous]
+        //public async Task Finish([FromBody] FinishTaskInput input)
+        //{
+        //    var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.TaskNo == input.TaskNo);
+        //    if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+        //    if (wmsTask.TaskStatus == TaskStatusEnum.WANCHENG) throw Oops.Oh("浠诲姟宸插畬鎴愶紝寮哄埗瀹屾垚澶辫触锛�");
+        //    var statusList = new List<TaskStatusEnum> { TaskStatusEnum.WEIZHIXING, TaskStatusEnum.ZHIXINGZHONG };
+        //    if (!statusList.Contains(wmsTask.TaskStatus)) throw Oops.Oh("鍙湁鏈墽琛屽拰鎵ц涓殑浠诲姟鎵嶈兘寮哄埗瀹屾垚锛�");
+
+        //    if (wmsTask.TaskType == TaskType.RUKU) // 鍏ュ簱浠诲姟
+        //    {
+        //        var taskStatusList = new List<TaskDodeviceStatusEnum> { TaskDodeviceStatusEnum.ZX_DDJ, TaskDodeviceStatusEnum.WC_DDJ };
+        //        if (!taskStatusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("鍙湁鍫嗗灈鏈烘墽琛�,鍫嗗灈鏈哄畬鎴愭墠鑳藉己鍒跺畬鎴愶紒");
+        //        //鏌ヨ搴撲綅
+        //        var wmsPlace = await _wmsPlaceRep.DetachedEntities.Where(u => u.PlaceCode == wmsTask.ToPlace
+        //                && u.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN).ProjectToType<WmsPlace>().FirstOrDefaultAsync();
+        //        // 鏌ヨ鎵樼洏
+        //        var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
+        //        if (wmsContainer == null) throw Oops.Oh("鎵樼洏淇℃伅涓嶅瓨鍦�!");
+        //        // 鏇存柊浠诲姟鐘舵��
+        //        wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+        //        wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+        //        wmsTask.IsRead = false;
+        //        await _wmsTaskRep.UpdateAsync(wmsTask);
+
+        //        // 鏇存柊鍗曟嵁鏄庣粏鐘舵�佷负瀹屾垚銆佹洿鏂版墭鐩樼紪鍙枫�佹洿鏂板簱浣嶇紪鍙�
+        //        var wmsOrderDetails = await _wmsOrderDetailsRep.Where(z => z.Id == wmsTask.OrderDetailsId).ProjectToType<WmsOrderDetails>().FirstOrDefaultAsync();
+        //        if (wmsOrderDetails != null)
+        //        {
+        //            wmsOrderDetails.ContainerCode = wmsTask.ContainerCode;
+        //            wmsOrderDetails.PlaceCode = wmsPlace.PlaceCode;
+        //            wmsOrderDetails.OrderStatus = OrderDetailsStatusEnum.WANCHENG;
+        //            await _wmsOrderDetailsRep.UpdateNowAsync(wmsOrderDetails);
+        //        }
+        //        // 鍗曟嵁鏄庣粏瀹屾垚鎬绘暟
+        //        var orderDetailsCount = (await _wmsOrderDetailsRep.DetachedEntities
+        //            .Where(z => z.OrderId == wmsOrderDetails.WareOrder.Id && z.OrderStatus == OrderDetailsStatusEnum.WANCHENG).ToListAsync()).Count;
+
+        //        if (orderDetailsCount == wmsOrderDetails.WareOrder.OrderQuantityTotal)
+        //        {
+        //            wmsOrderDetails.WareOrder.OrderStatus = OrderStatusEnum.WANCHENG;
+        //            await _wmsOrderRep.UpdateAsync(wmsOrderDetails.WareOrder);
+        //        }
+
+        //        // 鏇存柊搴撲綅鐘舵�佷负瀛樿揣
+        //        wmsPlace.PlaceStatus = PlaceStatus.CUNHUO;
+        //        await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+        //        // 鏇存柊鎵樼洏鐘舵�佷负鈥滃簱浣嶁��
+        //        wmsContainer.ContainerStatus = ContainerStatus.KUWEI;
+        //        await _wmsContainerRep.UpdateAsync(wmsContainer);
+
+        //        // 鐗╂枡涓庢墭鐩樺叧绯�
+        //        var wmsMaterialContainer = await _wmsMaterialContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode
+        //        && z.MaterialNo == wmsOrderDetails.MaterialNo && z.BindStatus == CommonStatus.ENABLE);
+
+        //        // 鎵樼洏涓庡簱浣嶅叧绯�
+        //        var wmsContainerPlace = new WmsContainerPlace()
+        //        {
+        //            PlaceId = wmsPlace.Id,
+        //            PlaceCode = wmsPlace.PlaceCode,
+        //            ContainerId = wmsContainer.Id,
+        //            ContainerCode = wmsContainer.ContainerCode,
+        //            ContainerPlaceStatus = CommonStatus.ENABLE
+        //        };
+        //        await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlace);
+
+        //        // 娣诲姞搴撳瓨
+        //        var StockModel = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsTask.ContainerCode
+        //        && p.MaterialNo == wmsOrderDetails.MaterialNo && p.MaterialBatch == wmsOrderDetails.Batch).FirstOrDefaultAsync();
+        //        if (StockModel != null)
+        //        {
+        //            StockModel.MaterialDensity = wmsOrderDetails.MaterialDensity;
+        //            StockModel.PlaceCode = wmsTask.ToPlace;
+        //            StockModel.AreaId = wmsPlace.AreaId;
+        //            StockModel.StockNumber = wmsOrderDetails.OrderQuantity;
+        //            await _wmsMaterialStockRep.UpdateAsync(StockModel);
+        //        }
+        //        else
+        //        {
+        //            StockModel = new WmsMaterialStock()
+        //            {
+        //                MaterialNo = wmsOrderDetails.MaterialNo,
+        //                MaterialType = wmsOrderDetails.MaterialType,
+        //                MaterialName = "N/A",
+        //                Long = wmsOrderDetails.Long,
+        //                Wide = wmsOrderDetails.Wide,
+        //                High = wmsOrderDetails.High,
+        //                MaterialSpec = wmsOrderDetails.Long + "*" + wmsOrderDetails.Wide + "*" + wmsOrderDetails.High,
+        //                MaterialBatch = wmsOrderDetails.Batch,
+        //                MaterialDensity = wmsOrderDetails.MaterialDensity,
+        //                //InspectionMethod = item.WmsMaterial.InspectionMethod,
+        //                //UnitType = item.WmsMaterial.UnitType,
+        //                //UnitNo = item.WmsMaterial.UnitNo,
+        //                StockNumber = wmsOrderDetails.OrderQuantity,
+        //                PlaceCode = wmsTask.ToPlace,
+        //                ContainerId = wmsContainer.Id,
+        //                ContainerCode = wmsContainer.ContainerCode,
+        //                AreaId = wmsPlace.AreaId,
+        //            };
+        //            await _wmsMaterialStockRep.InsertAsync(StockModel);
+        //        }
+        //    }
+        //    else if (wmsTask.TaskType == TaskType.CHUKU) //鍑哄簱浠诲姟
+        //    {
+        //        var taskStatusList = new List<TaskDodeviceStatusEnum> { TaskDodeviceStatusEnum.ZX_DDJ, TaskDodeviceStatusEnum.WC_DDJ };
+        //        if (!taskStatusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("鍙湁鍫嗗灈鏈烘墽琛�,鍫嗗灈鏈哄畬鎴愭墠鑳藉己鍒跺畬鎴愶紒");
+        //        // 鏌ヨ鎵樼洏淇℃伅
+        //        var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
+        //        if (wmsContainer == null) throw Oops.Oh("鎵樼洏淇℃伅涓嶅瓨鍦�!");
+
+        //        // 鏌ヨ搴撲綅淇℃伅
+        //        var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.PlaceCode == wmsTask.SourcePlace);
+        //        if (wmsPlace == null) throw Oops.Oh("搴撲綅淇℃伅涓嶅瓨鍦�!");
+        //        // 鏌ヨ鎵樼洏涓庡簱浣嶇殑鍏崇郴
+        //        var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == wmsPlace.Id && z.PlaceCode == wmsPlace.PlaceCode
+        //        && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE);
+        //        if (wmsContainerPlace != null)
+        //        {
+        //            // 绂佺敤鎵樼洏搴撲綅鍏崇郴
+        //            wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED;
+        //            await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace);
+        //        }
+        //        // 鏍规嵁浠诲姟琛ㄤ腑鐨勫崟鎹槑缁咺d鏌ヨ鍗曟嵁鏄庣粏淇℃伅
+        //        var wmsOrderDetails = await _wmsOrderDetailsRep.FirstOrDefaultAsync(z => z.Id == wmsTask.OrderDetailsId);
+
+        //        wmsTask.TaskStatus = TaskStatusEnum.ZHIXINGZHONG;
+        //        wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.ZX_RGV;
+        //        wmsTask.IsRead = false;
+        //        await _wmsTaskRep.UpdateAsync(wmsTask);
+
+
+        //        // 鏌ヨ鏄惁宸插瓨鍦ㄧ墿鏂欎笌鎵樼洏鍏崇郴
+        //        var wmsMaterialContainer = await _wmsMaterialContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode
+        //        && z.MaterialNo == wmsOrderDetails.MaterialNo && z.BindStatus == CommonStatus.ENABLE);
+        //        //鍏ュ簱鏃剁粍鐩樹俊鎭�昏緫鍒犻櫎
+        //        if (wmsMaterialContainer != null)
+        //        {
+        //            wmsMaterialContainer.BindStatus = CommonStatus.DELETED;
+        //            await _wmsMaterialContainerRep.UpdateAsync(wmsMaterialContainer);
+        //            //鏂板鍑哄簱缁戝畾璁板綍 姝e父
+        //            var enable = new WmsMaterialContainer()
+        //            {
+        //                ContainerId = wmsContainer.Id,
+        //                ContainerCode = wmsContainer.ContainerCode,
+        //                MaterialId = YitIdHelper.NextId(), //绯荤粺鐢熸垚鐨処d
+        //                MaterialName = "N/A",
+        //                MaterialNo = wmsMaterialContainer.MaterialNo,
+        //                MaterialBatch = wmsMaterialContainer.MaterialBatch,
+        //                MaterialDensity = wmsMaterialContainer.MaterialDensity,
+        //                MaterialSpec = wmsOrderDetails.Long + "*" + wmsOrderDetails.Wide + "*" + wmsOrderDetails.High,
+        //                BindQuantity = 1, //涓�涓簱浣嶅彧鏈変竴涓墿鏂�
+        //                OrderNo = wmsMaterialContainer.OrderNo,
+        //                OrderDetailsId = wmsMaterialContainer.OrderDetailsId,
+        //                BindStatus = CommonStatus.ENABLE
+        //            };
+        //            await _wmsMaterialContainerRep.InsertAsync(enable);
+        //        }
+        //        //鏇存柊搴撳瓨
+        //        var stockModel = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsTask.ContainerCode && p.PlaceCode == wmsTask.SourcePlace
+        //        && p.MaterialNo == wmsOrderDetails.MaterialNo && p.MaterialBatch == wmsOrderDetails.Batch).FirstOrDefaultAsync();
+        //        if (stockModel != null)
+        //        {
+        //            await _wmsMaterialStockRep.DeleteAsync(stockModel);
+        //        }
+        //        // 鏇存柊搴撲綅鐘舵�佷负鈥滅┖闂测��
+        //        wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN;
+        //        await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+        //        //鏇存柊鎵樼洏鐘舵�佷负鈥滅┖闂测��
+        //        wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+        //        await _wmsContainerRep.UpdateAsync(wmsContainer);
+        //    }
+        //    else //绉诲簱浠诲姟
+        //    {
+        //        var taskStatusList = new List<TaskDodeviceStatusEnum> { TaskDodeviceStatusEnum.ZX_DDJ, TaskDodeviceStatusEnum.WC_DDJ };
+        //        if (!taskStatusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("鍙湁鍫嗗灈鏈烘墽琛�,鍫嗗灈鏈哄畬鎴愭墠鑳藉己鍒跺畬鎴愶紒");
+        //        // 鏌ヨ鎵樼洏
+        //        var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
+        //        if (wmsContainer == null) throw Oops.Oh("鎵樼洏淇℃伅涓嶅瓨鍦�!");
+
+        //        wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+        //        wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+        //        wmsTask.IsRead = false;
+        //        // 璧风偣搴撲綅淇℃伅
+        //        var SourcePlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.SourcePlace).FirstOrDefaultAsync();
+        //        SourcePlace.PlaceStatus = PlaceStatus.KONGXIAN;
+        //        await _wmsPlaceRep.UpdateAsync(SourcePlace);
+        //        //鐩爣搴撲綅淇℃伅
+        //        var ToPlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.ToPlace).FirstOrDefaultAsync();
+        //        ToPlace.PlaceStatus = PlaceStatus.CUNHUO;
+        //        await _wmsPlaceRep.UpdateAsync(ToPlace);
+        //        //鎵樼洏搴撲綅鍏崇郴琛�
+        //        var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == SourcePlace.Id && z.PlaceCode == SourcePlace.PlaceCode
+        //        && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE);
+        //        wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED;
+        //        await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace);
+        //        await _wmsContainerPlaceRep.InsertAsync(new WmsContainerPlace()
+        //        {
+        //            PlaceId = ToPlace.Id,
+        //            PlaceCode = ToPlace.PlaceCode,
+        //            ContainerId = wmsContainer.Id,
+        //            ContainerCode = wmsContainer.ContainerCode,
+        //            ContainerPlaceStatus = CommonStatus.ENABLE
+        //        });
+        //        //搴撳瓨搴撲綅鏇存柊
+        //        var stockModel = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsTask.ContainerCode && p.PlaceCode == SourcePlace.PlaceCode).FirstOrDefaultAsync();
+        //        if (stockModel != null)
+        //        {
+        //            stockModel.PlaceCode = ToPlace.PlaceCode;
+        //        }
+        //    }
+        //}
+
+
+        /// <summary>
+        /// 鍙栨秷浠诲姟
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("CancelTask")]
+        [UnitOfWork]
+        [AllowAnonymous]
+        public async Task CancelTask([FromBody] FinishTaskInput input)
+        {
+            var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.TaskNo == input.TaskNo);
+            if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+            if (wmsTask.TaskStatus == TaskStatusEnum.WANCHENG) throw Oops.Oh("浠诲姟宸插畬鎴愶紝鍙栨秷澶辫触锛�");
+            if (wmsTask.TaskType == TaskType.RUKU) // 鍏ュ簱浠诲姟
+            {
+                //var statusList = new List<TaskDodeviceStatusEnum> {TaskDodeviceStatusEnum.ZX_RSSX, TaskDodeviceStatusEnum.WC_RSSX,TaskDodeviceStatusEnum.WZX };
+                //if (!statusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("鍙湁鍏ュ簱杈撻�佺嚎鎵ц,鍏ュ簱杈撻�佺嚎瀹屾垚鎴栬�呰澶囨湭鎵ц鎵嶈兘寮哄埗鍙栨秷锛�");
+                //鏇存柊鍗曟嵁鏄庣粏鐘舵�佷负鏈墽琛屻�佹洿鏂版墭鐩樼紪鍙枫�佹洿鏂板簱浣嶇紪鍙�
+                var wmsOrderDetails = await _wmsOrderDetailsRep.Where(z => z.Id == wmsTask.OrderDetailsId).ProjectToType<WmsOrderDetails>().FirstOrDefaultAsync();
+                if (wmsOrderDetails != null)
+                {
+                    wmsOrderDetails.OrderStatus = OrderDetailsStatusEnum.WEIZHIXING;
+                    await _wmsOrderDetailsRep.UpdateNowAsync(wmsOrderDetails);
+                }
+                //鏌ヨ搴撲綅
+                var wmsPlace = await _wmsPlaceRep.DetachedEntities.Where(u => u.PlaceCode == wmsTask.ToPlace && u.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN).ProjectToType<WmsPlace>().FirstOrDefaultAsync();
+                if (wmsPlace != null)
+                {
+                    // 鏇存柊搴撲綅鐘舵�佷负绌洪棽
+                    wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN;
+                    await _wmsPlaceRep.UpdateAsync(wmsPlace);
+                }
+                var materialContainer = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == wmsTask.ContainerCode && p.BindStatus == CommonStatus.ENABLE).FirstOrDefaultAsync();
+                if (materialContainer != null)
+                {
+                    await _wmsMaterialContainerRep.DeleteNowAsync(materialContainer);
+                }
+                // 鏌ヨ鎵樼洏
+                var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
+                if (wmsContainer != null)
+                {
+                    wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+                    await _wmsContainerRep.UpdateAsync(wmsContainer);
+                }
+                // 鏇存柊浠诲姟鐘舵��
+                wmsTask.TaskStatus = TaskStatusEnum.WEIZHIXING;
+                wmsTask.IsRead = false;
+                wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.WZX;
+                wmsTask.ToPlace = "";
+                await _wmsTaskRep.UpdateAsync(wmsTask);
+            }
+            else if (wmsTask.TaskType == TaskType.CHUKU) //鍑哄簱浠诲姟
+            {
+                var statusList = new List<TaskDodeviceStatusEnum> { TaskDodeviceStatusEnum.WZX, TaskDodeviceStatusEnum.ZX_DDJ };
+                if (!statusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("鍙湁鍫嗗灈鏈烘墽琛屼腑鎴栬澶囨湭鎵ц鎵嶈兘寮哄埗鍙栨秷锛�");
+                // 鏌ヨ搴撲綅淇℃伅
+                var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.PlaceCode == wmsTask.SourcePlace);
+                if (wmsPlace == null) throw Oops.Oh("搴撲綅淇℃伅涓嶅瓨鍦�!");
+                // 鏌ヨ鎵樼洏涓庡簱浣嶇殑鍏崇郴
+                var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == wmsPlace.Id && z.PlaceCode == wmsPlace.PlaceCode
+                && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE);
+                if (wmsContainerPlace == null) throw Oops.Oh("搴撲綅瀹瑰櫒鍏崇郴涓嶅瓨鍦�!");
+                // 鏍规嵁浠诲姟琛ㄤ腑鐨勫崟鎹槑缁咺d鏌ヨ鍗曟嵁鏄庣粏淇℃伅
+                var wmsOrderDetails = await _wmsOrderDetailsRep.FirstOrDefaultAsync(z => z.Id == wmsTask.OrderDetailsId);
+                //淇敼鍗曟嵁鏄庣粏,浠诲姟鐘舵��,璁惧浠诲姟鐘舵�佷负鏈墽琛�
+                wmsOrderDetails.OrderStatus = OrderDetailsStatusEnum.WEIZHIXING;
+                await _wmsOrderDetailsRep.UpdateNowAsync(wmsOrderDetails);
+                wmsTask.TaskStatus = TaskStatusEnum.WEIZHIXING;
+                wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.WZX;
+                await _wmsTaskRep.UpdateAsync(wmsTask);
+                // 鏇存柊搴撲綅鐘舵�佷负瀛樿揣
+                wmsPlace.PlaceStatus = PlaceStatus.CUNHUO;
+                await _wmsPlaceRep.UpdateAsync(wmsPlace);
+            }
+            else //绉诲簱浠诲姟
+            {
+                var statusList = new List<TaskDodeviceStatusEnum> { TaskDodeviceStatusEnum.WZX, TaskDodeviceStatusEnum.ZX_DDJ };
+                if (!statusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("鍙湁鍫嗗灈鏈烘墽琛屼腑锛岃澶囨湭鎵ц鎵嶈兘寮哄埗鍙栨秷锛�");
+                // 鏌ヨ鎵樼洏
+                var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
+                if (wmsContainer == null) throw Oops.Oh("鎵樼洏淇℃伅涓嶅瓨鍦�!");
+                //鍒犻櫎浠诲姟
+                await _wmsTaskRep.DeleteAsync(wmsTask);
+                // 璧风偣搴撲綅淇℃伅
+                var SourcePlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.SourcePlace).FirstOrDefaultAsync();
+                SourcePlace.PlaceStatus = PlaceStatus.CUNHUO;
+                await _wmsPlaceRep.UpdateAsync(SourcePlace);
+                //鐩爣搴撲綅淇℃伅
+                var ToPlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.ToPlace).FirstOrDefaultAsync();
+                ToPlace.PlaceStatus = PlaceStatus.KONGXIAN;
+                await _wmsPlaceRep.UpdateAsync(ToPlace);
+            }
+        }
+
+
+        /// <summary>
+        /// wcs璇诲彇鎺ュ彛鍒ゆ柇鐗╂枡鏄惁缁勭洏鍑哄簱 true浠h〃宸茬粡缁勭洏鍑哄簱
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("CheckPack")]
+        [AllowAnonymous]
+        [NonAction]
+        public async Task<bool> CheckPack()
+        {
+            var packList = await _lesPackWarehouseRep.Where(p => p.LesPackState == LesPackState.WEICHUKU).Select(n => n.OrderNo).Distinct().ToListAsync();
+            if (packList.Count >= 2) return false;
+            else return true;
+        }
+
+        /// <summary>
+        /// 璁惧鎶ヨ淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("AddDeviceWaring")]
+        [AllowAnonymous]
+        [NonAction]
+        public async Task AddDeviceWaring(AddDeviceWaringInput input)
+        {
+            //鍒ゆ柇wcsid鏄惁瀛樺湪
+            var lesDeviceWaring = await _lesDeviceWaringRep.FirstOrDefaultAsync(u => u.WcsId == input.WcsId);
+            if (lesDeviceWaring != null)
+            {
+                await _lesDeviceWaringRep.UpdateAsync(lesDeviceWaring);
+            }
+            else
+            {
+                lesDeviceWaring = input.Adapt<LesDeviceWaring>();
+                await _lesDeviceWaringRep.InsertAsync(lesDeviceWaring);
+            }
+        }
+
+        #region  鍏敤鏂规硶
+        /// <summary>
+        /// 鏍规嵁宸烽亾鑾峰彇澶栦晶绗竴鎺�
+        /// </summary>
+        /// <param name="Aisle"></param>
+        /// <returns></returns>
+        [NonAction]
+        public int GetOneRowByAisle(int Aisle)
+        {
+            if (Aisle >= 7)
+            {
+                return 1;
+            }
+            return (Aisle - 1) * 4 + 1;
+        }
+        /// <summary>
+        /// 鏍规嵁宸烽亾鑾峰彇鍐呬晶绗簩鎺�
+        /// </summary>
+        /// <param name="Aisle"></param>
+        /// <returns></returns>
+        [NonAction]
+        public int GetTwoRowByAisle(int Aisle)
+        {
+            if (Aisle >= 7)
+            {
+                return 2;
+            }
+            return (Aisle - 1) * 4 + 2;
+        }
+        /// <summary>
+        /// 鏍规嵁宸烽亾鑾峰彇澶栦晶绗簩鎺�
+        /// </summary>
+        /// <param name="Aisle"></param>
+        /// <returns></returns>
+        [NonAction]
+        public int GetThreeRowByAisle(int Aisle)
+        {
+            if (Aisle >= 7)
+            {
+                return 3;
+            }
+            return (Aisle - 1) * 4 + 3;
+        }
+        /// <summary>
+        /// 鏍规嵁宸烽亾鑾峰彇澶栦晶绗竴鎺�
+        /// </summary>
+        /// <param name="Aisle"></param>
+        /// <returns></returns>
+        [NonAction]
+        public int GetFourRowByAisle(int Aisle)
+        {
+            if (Aisle >= 7)
+            {
+                return 4;
+            }
+            return (Aisle - 1) * 4 + 4;
+        }
+        #endregion
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsDto.cs
new file mode 100644
index 0000000..f5fd610
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsDto.cs
@@ -0,0 +1,90 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍑哄叆搴撹褰曡緭鍑哄弬鏁�
+    /// </summary>
+    public class AccessDetailsDto
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鏂瑰紡
+        /// </summary>
+        public TaskModel TaskModel { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public TaskType TaskType { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟绛夌骇
+        /// </summary>
+        public int TaskLevel { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public TaskStatusEnum TaskStatus { get; set; }
+      
+        /// <summary>
+        /// 鏉ユ簮
+        /// </summary>
+        public string SourcePlace { get; set; }
+        
+        /// <summary>
+        /// 鐩爣
+        /// </summary>
+        public string ToPlace { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏Id
+        /// </summary>
+        public long ContainerId { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string MaterialName { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string MaterialNo { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public string MaterialBatch { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡Id
+        /// </summary>
+        public long MaterialId { get; set; }
+        
+        /// <summary>
+        /// 鎿嶄綔鏁伴噺
+        /// </summary>
+        public decimal BindQuantity { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public CommonStatus BindStatus { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsInput.cs
new file mode 100644
index 0000000..00ffda4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsInput.cs
@@ -0,0 +1,209 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍑哄叆搴撹褰曟煡璇㈠弬鏁�
+    /// </summary>
+    public class View_AccessDetailsSearch : PageInputBase
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public virtual string TaskNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鏂瑰紡
+        /// </summary>
+        public virtual TaskModel? TaskModel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public virtual TaskType? TaskType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绛夌骇
+        /// </summary>
+        public virtual int? TaskLevel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public virtual TaskStatusEnum? TaskStatus { get; set; }
+
+        /// <summary>
+        /// 鏉ユ簮
+        /// </summary>
+        public virtual string SourcePlace { get; set; }
+
+        /// <summary>
+        /// 鐩爣
+        /// </summary>
+        public virtual string ToPlace { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏Id
+        /// </summary>
+        public virtual long? ContainerId { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public virtual string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public virtual string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public virtual string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public virtual string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡Id
+        /// </summary>
+        public virtual long? MaterialId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔鏁伴噺
+        /// </summary>
+        public virtual decimal? BindQuantity { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual CommonStatus? BindStatus { get; set; }
+    }
+
+    /// <summary>
+    /// 鍑哄叆搴撹褰曡緭鍏ュ弬鏁�
+    /// </summary>
+    public class AccessDetailsInput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public virtual string TaskNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鏂瑰紡
+        /// </summary>
+        public virtual TaskModel TaskModel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public virtual TaskType TaskType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绛夌骇
+        /// </summary>
+        public virtual int TaskLevel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public virtual TaskStatusEnum TaskStatus { get; set; }
+
+        /// <summary>
+        /// 鏉ユ簮
+        /// </summary>
+        public virtual string SourcePlace { get; set; }
+
+        /// <summary>
+        /// 鐩爣
+        /// </summary>
+        public virtual string ToPlace { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏Id
+        /// </summary>
+        public virtual long ContainerId { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public virtual string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public virtual string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public virtual string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public virtual string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡Id
+        /// </summary>
+        public virtual long MaterialId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔鏁伴噺
+        /// </summary>
+        public virtual decimal BindQuantity { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual CommonStatus BindStatus { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddAccessDetailsInput : AccessDetailsInput
+    {
+
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteAccessDetailsInput : BaseId
+    {
+
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateAccessDetailsInput : AccessDetailsInput
+    {
+
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryeAccessDetailsInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsOutput.cs
new file mode 100644
index 0000000..cef70eb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsOutput.cs
@@ -0,0 +1,98 @@
+锘縰sing System;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍑哄叆搴撹褰曡緭鍑哄弬鏁�
+    /// </summary>
+    public class View_AccessDetailsOutput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鏂瑰紡
+        /// </summary>
+        public TaskModel? TaskModel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public TaskType? TaskType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绾у埆
+        /// </summary>
+        public int? TaskLevel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵�� 瀛楀吀 鏈墽琛岋紝鎵ц涓紝瀹屾垚
+        /// </summary>
+        public TaskStatusEnum? TaskStatus { get; set; }
+
+        /// <summary>
+        /// 璧峰搴撲綅
+        /// </summary>
+        public string SourcePlace { get; set; }
+
+        /// <summary>
+        /// 鐩爣搴撲綅
+        /// </summary>
+        public string ToPlace { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public string MaterialDensity { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鏉ユ簮
+        /// </summary>
+        public string Description { get; set; }
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        //public string Batch { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset? CreatedTime { get; set; }
+
+        /// <summary>
+        /// 淇敼鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset? UpdatedTime { get; set; }
+
+        //public int? Long { get; set; }
+        //public int? Wide { get; set; }
+        //public int? High { get; set; }
+
+        /// <summary>
+        /// 浠诲姟寮�濮嬫椂闂�
+        /// </summary>
+        public DateTimeOffset? TaskCreatedTime { get; set; }
+
+        /// <summary>
+        /// 浠诲姟缁撴潫鏃堕棿
+        /// </summary>
+        public DateTimeOffset? TaskUpdatedTime { get; set; }
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long? Id { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/WmsAccessDetailsService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/WmsAccessDetailsService.cs
new file mode 100644
index 0000000..0893b1e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/WmsAccessDetailsService.cs
@@ -0,0 +1,56 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Admin.NET.Core.Entity;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍑哄叆搴撹褰曟湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings("浠撳簱浣滀笟", Name = "View_AccessDetails", Order = 105)]
+    [Route("api/[Controller]")]
+    public class AccessDetailsService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<VAccessDetails, MasterDbContextLocator> _vAccessDetailsRep;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="vAccessDetailsRep"></param>
+        public AccessDetailsService(
+            IRepository<VAccessDetails, MasterDbContextLocator> vAccessDetailsRep
+        )
+        {
+            _vAccessDetailsRep = vAccessDetailsRep;
+        }
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鍑哄叆搴撹褰�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<View_AccessDetailsOutput>> Page([FromQuery] View_AccessDetailsSearch input)
+        {
+            var view_AccessDetailss = await _vAccessDetailsRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(input.TaskNo), u => EF.Functions.Like(u.TaskNo, $"%{input.TaskNo.Trim()}%"))
+                .Where(input.TaskModel != null, u => u.TaskModel == input.TaskModel)
+                .Where(input.TaskType != null, u => u.TaskType == input.TaskType)
+                .Where(u => u.TaskStatus == TaskStatusEnum.WANCHENG || u.TaskStatus == TaskStatusEnum.ZHIXINGZHONG)
+                .Where(u => u.TaskNo != null)
+                .Where(!string.IsNullOrEmpty(input.SourcePlace), u => EF.Functions.Like(u.SourcePlace, $"%{input.SourcePlace.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.ToPlace), u => EF.Functions.Like(u.ToPlace, $"%{input.ToPlace.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.MaterialNo), u => EF.Functions.Like(u.MaterialNo, $"%{input.MaterialNo.Trim()}%"))
+                .Where(input.SearchBeginTime != null && input.SearchEndTime != null, u => u.CreatedTime >= DateTime.Parse(input.SearchBeginTime.Trim()) && u.CreatedTime <= DateTime.Parse(input.SearchEndTime.Trim()))
+                .OrderBy(PageInputOrder.OrderBuilder<View_AccessDetailsSearch>(input))
+                .ProjectToType<View_AccessDetailsOutput>()
+                .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return view_AccessDetailss;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringDto.cs
new file mode 100644
index 0000000..4adfb5f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringDto.cs
@@ -0,0 +1,52 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 璁惧鎶ヨ杈撳嚭鍙傛暟
+    /// </summary>
+    public class LesDeviceWaringDto
+    {
+        /// <summary>
+        /// WcsId
+        /// </summary>
+        public int WcsId { get; set; }
+        
+        /// <summary>
+        /// 璁惧鍚嶇О
+        /// </summary>
+        public string DeviceName { get; set; }
+        
+        /// <summary>
+        /// 鏁呴殰鍚嶇О
+        /// </summary>
+        public string FaultName { get; set; }
+        
+        /// <summary>
+        /// 鍙戠敓鏃堕棿
+        /// </summary>
+        public DateTimeOffset StartTime { get; set; }
+        
+        /// <summary>
+        /// 缁撴潫鏃堕棿
+        /// </summary>
+        public DateTimeOffset EndTime { get; set; }
+        
+        /// <summary>
+        /// 鎸佺画鏃堕棿
+        /// </summary>
+        public int RunningTime { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringInput.cs
new file mode 100644
index 0000000..b26954a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringInput.cs
@@ -0,0 +1,156 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 璁惧鎶ヨ鏌ヨ鍙傛暟
+    /// </summary>
+    public class LesDeviceWaringSearch : PageInputBase
+    {
+        /// <summary>
+        /// WcsId
+        /// </summary>
+        public virtual int? WcsId { get; set; }
+        
+        /// <summary>
+        /// 璁惧鍚嶇О
+        /// </summary>
+        public virtual string DeviceName { get; set; }
+        
+        /// <summary>
+        /// 鏁呴殰鍚嶇О
+        /// </summary>
+        public virtual string FaultName { get; set; }
+        
+        /// <summary>
+        /// 鍙戠敓鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset? StartTime { get; set; }
+        
+        /// <summary>
+        /// 缁撴潫鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset? EndTime { get; set; }
+        
+        /// <summary>
+        /// 鎸佺画鏃堕棿
+        /// </summary>
+        public virtual int? RunningTime { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 璁惧鎶ヨ涓嶅垎椤垫煡璇㈠弬鏁�
+    /// </summary>
+    public class LesDeviceWaringSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// WcsId
+        /// </summary>
+        public virtual int? WcsId { get; set; }
+        
+        /// <summary>
+        /// 璁惧鍚嶇О
+        /// </summary>
+        public virtual string? DeviceName { get; set; }
+        
+        /// <summary>
+        /// 鏁呴殰鍚嶇О
+        /// </summary>
+        public virtual string? FaultName { get; set; }
+        
+        /// <summary>
+        /// 鍙戠敓鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset? StartTime { get; set; }
+        
+        /// <summary>
+        /// 缁撴潫鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset? EndTime { get; set; }
+        
+        /// <summary>
+        /// 鎸佺画鏃堕棿
+        /// </summary>
+        public virtual int? RunningTime { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 璁惧鎶ヨ杈撳叆鍙傛暟
+    /// </summary>
+    public class LesDeviceWaringInput
+    {
+        /// <summary>
+        /// WcsId
+        /// </summary>
+        public virtual int WcsId { get; set; }
+        
+        /// <summary>
+        /// 璁惧鍚嶇О
+        /// </summary>
+        public virtual string DeviceName { get; set; }
+        
+        /// <summary>
+        /// 鏁呴殰鍚嶇О
+        /// </summary>
+        public virtual string FaultName { get; set; }
+        
+        /// <summary>
+        /// 鍙戠敓鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset StartTime { get; set; }
+        
+        /// <summary>
+        /// 缁撴潫鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset EndTime { get; set; }
+        
+        /// <summary>
+        /// 鎸佺画鏃堕棿
+        /// </summary>
+        public virtual int RunningTime { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+    public class AddLesDeviceWaringInput : LesDeviceWaringInput
+    {
+    }
+
+    public class DeleteLesDeviceWaringInput : BaseId
+    {
+    }
+
+    public class UpdateLesDeviceWaringInput : LesDeviceWaringInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    public class QueryeLesDeviceWaringInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringOutput.cs
new file mode 100644
index 0000000..114bede
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringOutput.cs
@@ -0,0 +1,52 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 璁惧鎶ヨ杈撳嚭鍙傛暟
+    /// </summary>
+    public class LesDeviceWaringOutput
+    {
+        /// <summary>
+        /// WcsId
+        /// </summary>
+        public int WcsId { get; set; }
+        
+        /// <summary>
+        /// 璁惧鍚嶇О
+        /// </summary>
+        public string DeviceName { get; set; }
+        
+        /// <summary>
+        /// 鏁呴殰鍚嶇О
+        /// </summary>
+        public string FaultName { get; set; }
+        
+        /// <summary>
+        /// 鍙戠敓鏃堕棿
+        /// </summary>
+        public DateTimeOffset StartTime { get; set; }
+        
+        /// <summary>
+        /// 缁撴潫鏃堕棿
+        /// </summary>
+        public DateTimeOffset EndTime { get; set; }
+        
+        /// <summary>
+        /// 鎸佺画鏃堕棿
+        /// </summary>
+        public int RunningTime { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/ILesDeviceWaringService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/ILesDeviceWaringService.cs
new file mode 100644
index 0000000..faf134b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/ILesDeviceWaringService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface ILesDeviceWaringService
+    {
+        Task Add(AddLesDeviceWaringInput input);
+        Task Delete(DeleteLesDeviceWaringInput input);
+        Task<LesDeviceWaringOutput> Get([FromQuery] QueryeLesDeviceWaringInput input);
+        Task<List<LesDeviceWaringOutput>> List([FromQuery] LesDeviceWaringInput input);
+        Task<PageResult<LesDeviceWaringOutput>> Page([FromQuery] LesDeviceWaringSearch input);
+        Task Update(UpdateLesDeviceWaringInput input);
+
+        Task<List<LesDeviceWaringOutput>> ListNonPageAsync([FromQuery] LesDeviceWaringSearchNonPage input);
+
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+        Task<IActionResult> DownloadExcelTemplate(string version);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/LesDeviceWaringService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/LesDeviceWaringService.cs
new file mode 100644
index 0000000..d91b1de
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/LesDeviceWaringService.cs
@@ -0,0 +1,253 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 璁惧鎶ヨ鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("浠撳簱浣滀笟", Name = "LesDeviceWaring", Order = 100)]
+    [Route("api/[Controller]")]
+    public class LesDeviceWaringService : ILesDeviceWaringService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<LesDeviceWaring,MasterDbContextLocator> _lesDeviceWaringRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public LesDeviceWaringService(
+            IRepository<LesDeviceWaring,MasterDbContextLocator> lesDeviceWaringRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+            _lesDeviceWaringRep = lesDeviceWaringRep;
+         _sysDictTypeRep = sysDictTypeRep;
+         _sysDictDataRep = sysDictDataRep;
+         _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ璁惧鎶ヨ
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<LesDeviceWaringOutput>> Page([FromQuery] LesDeviceWaringSearch input)
+        {
+            var lesDeviceWarings = await _lesDeviceWaringRep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.DeviceName), u => EF.Functions.Like(u.DeviceName, $"%{input.DeviceName.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.FaultName), u => EF.Functions.Like(u.FaultName, $"%{input.FaultName.Trim()}%"))
+                                     .Where(input.StartTime != null, u => u.StartTime == input.StartTime)
+                                     .Where(input.EndTime != null, u => u.EndTime == input.EndTime)
+                                     .OrderBy(PageInputOrder.OrderBuilder<LesDeviceWaringSearch>(input))
+                                     .ProjectToType<LesDeviceWaringOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return lesDeviceWarings;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈣澶囨姤璀﹀垪琛�
+        /// </summary>
+        /// <param name="input">璁惧鎶ヨ鏌ヨ鍙傛暟</param>
+        /// <returns>(璁惧鎶ヨ)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<LesDeviceWaringOutput>> ListNonPageAsync([FromQuery] LesDeviceWaringSearchNonPage input)
+        {
+            var pDeviceName = input.DeviceName?.Trim() ?? "";
+            var pFaultName = input.FaultName?.Trim() ?? "";
+            var pStartTime = input.StartTime;
+            var pEndTime = input.EndTime;
+            var lesDeviceWarings = await _lesDeviceWaringRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pDeviceName), u => EF.Functions.Like(u.DeviceName, $"%{pDeviceName}%")) 
+                .Where(!string.IsNullOrEmpty(pFaultName), u => EF.Functions.Like(u.FaultName, $"%{pFaultName}%")) 
+                .Where(pStartTime != null, u => u.StartTime == pStartTime)
+                .Where(pEndTime != null, u => u.EndTime == pEndTime)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<LesDeviceWaringOutput>()
+            .ToListAsync();
+            return lesDeviceWarings;
+        }
+
+
+        /// <summary>
+        /// 澧炲姞璁惧鎶ヨ
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddLesDeviceWaringInput input)
+        {
+            var lesDeviceWaring = input.Adapt<LesDeviceWaring>();
+            await _lesDeviceWaringRep.InsertAsync(lesDeviceWaring);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎璁惧鎶ヨ
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteLesDeviceWaringInput input)
+        {
+            var lesDeviceWaring = await _lesDeviceWaringRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _lesDeviceWaringRep.DeleteAsync(lesDeviceWaring);
+        }
+
+        /// <summary>
+        /// 鏇存柊璁惧鎶ヨ
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateLesDeviceWaringInput input)
+        {
+            var isExist = await _lesDeviceWaringRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var lesDeviceWaring = input.Adapt<LesDeviceWaring>();
+            await _lesDeviceWaringRep.UpdateAsync(lesDeviceWaring,ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇璁惧鎶ヨ
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<LesDeviceWaringOutput> Get([FromQuery] QueryeLesDeviceWaringInput input)
+        {
+            return (await _lesDeviceWaringRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<LesDeviceWaringOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇璁惧鎶ヨ鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<LesDeviceWaringOutput>> List([FromQuery] LesDeviceWaringInput input)
+        {
+            return await _lesDeviceWaringRep.DetachedEntities.ProjectToType<LesDeviceWaringOutput>().ToListAsync();
+        }    
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆璁惧鎶ヨ鍔熻兘
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("LesDeviceWaring", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++) 
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<LesDeviceWaringOutput> lesDeviceWaringList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, LesDeviceWaringOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = lesDeviceWaringList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<LesDeviceWaring>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<LesDeviceWaring, LesDeviceWaringOutput>(selectKeys);
+            List<LesDeviceWaring> updates = new();
+            List<LesDeviceWaring> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var lesDeviceWaringExistSubList = _lesDeviceWaringRep.Where(filter).Select(selector).ToList();
+                    lesDeviceWaringExistSubList.ForEach(x => 
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+                foreach (var lesDeviceWaring in lesDeviceWaringList) 
+                {
+                    if (lesDeviceWaring.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(lesDeviceWaring.Adapt<LesDeviceWaring>());
+                    }
+                    else 
+                    {
+                        adds.Add(lesDeviceWaring.Adapt<LesDeviceWaring>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _lesDeviceWaringRep.Update(x));
+                
+
+                var maxId = _lesDeviceWaringRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);    
+                Db.GetDbContext().Set<LesDeviceWaring>().AddRange(adds);  
+                Db.GetDbContext().SaveChanges();
+               
+            }
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇璁惧鎶ヨ鐨凟xcel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("LesDeviceWaring", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+        /// <summary>
+        /// 鏍规嵁璁惧鎶ヨ鏌ヨ鍙傛暟瀵煎嚭Excel
+        /// </summary>
+        /// <param name="input">璁惧鎶ヨ鏌ヨ鍙傛暟</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] LesDeviceWaringSearchNonPage input)
+        {
+            var lesDeviceWaringList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(lesDeviceWaringList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("LesDeviceWaring", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Map/LesDeviceWaringMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Map/LesDeviceWaringMapper.cs
new file mode 100644
index 0000000..c3936a1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Map/LesDeviceWaringMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class LesDeviceWaringMapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddLesDeviceWaringInput, LesDeviceWaring>()
+            ;
+            config.ForType<UpdateLesDeviceWaringInput, LesDeviceWaring>()
+            ;
+            config.ForType<LesDeviceWaring, LesDeviceWaringOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewInput.cs
new file mode 100644
index 0000000..6806693
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewInput.cs
@@ -0,0 +1,72 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class LocationViewInput
+    {
+    }
+
+    /// <summary>
+    /// 鑾峰彇搴撲綅瀵瑰簲鐨勫贩閬�
+    /// </summary>
+    public class GetPalceAisleInput
+    {
+        /// <summary>
+        /// 搴撳尯Id
+        /// </summary>
+        [Required(ErrorMessage = "搴撳尯Id涓嶈兘涓虹┖")]
+        public long Areaid { get; set; }
+    }
+    /// <summary>
+    /// 鑾峰彇搴撲綅鍜屽贩閬撹幏鍙栧搴旂殑鎺�
+    /// </summary>
+    public class GetPalceAisleRownoInput
+    {
+        /// <summary>
+        /// 搴撳尯Id
+        /// </summary>
+        [Required(ErrorMessage = "搴撳尯Id涓嶈兘涓虹┖")]
+        public long Areaid { get; set; }
+
+        /// <summary>
+        /// 宸烽亾ID
+        /// </summary>
+        [Required(ErrorMessage = "宸烽亾ID涓嶈兘涓虹┖")]
+        public long Aisleid { get; set; }
+    }
+
+    /// <summary>
+    /// 鑾峰彇搴撲綅鍒楄〃
+    /// </summary>
+    public class GetPalceListInput
+    {
+        /// <summary>
+        /// 搴撳尯Id
+        /// </summary>
+        [Required(ErrorMessage = "搴撳尯Id涓嶈兘涓虹┖")]
+        public long Areaid { get; set; }
+
+        /// <summary>
+        /// 宸烽亾Id
+        /// </summary>
+        [Required(ErrorMessage = "搴撳尯Id涓嶈兘涓虹┖")]
+        public long Aisleid { get; set; }
+
+        /// <summary>
+        /// 鎺�
+        /// </summary>
+        [Required(ErrorMessage = "搴撳尯鎺掍笉鑳戒负绌�")]
+        public int Rowno { get; set; }
+    }
+
+    /// <summary>
+    /// 鑾峰彇搴撲綅瀵瑰簲鐨勪俊鎭�
+    /// </summary>
+    public class GetMaterialDetailInput : BaseId
+    {
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewOutput.cs
new file mode 100644
index 0000000..0c856bb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewOutput.cs
@@ -0,0 +1,191 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class PalceInfoOtput
+    {
+        /// <summary>
+        /// 鎬诲簱浣嶆暟
+        /// </summary>
+        public int countNum { get; set; }
+
+        /// <summary>
+        /// 鎬诲瓨璐ф暟
+        /// </summary>
+        public int cunhuoNum { get; set; }
+
+        /// <summary>
+        /// 绌哄簱浣嶆暟
+        /// </summary>
+        public int emptyNum { get; set; }
+
+        /// <summary>
+        /// 绌烘墭鐩樻暟
+        /// </summary>
+        public int emptyContainerNum { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鏁伴噺
+        /// </summary>
+        public int materialNum { get; set; }
+
+        /// <summary>
+        /// 閿佸畾搴撲綅鏁�
+        /// </summary>
+        public int lockNum { get; set; }
+
+        /// <summary>
+        /// 寰呭叆搴撲綅鏁�
+        /// </summary>
+        public int DaiRuNum { get; set; }
+
+        /// <summary>
+        /// 寰呭嚭搴撲綅鏁�
+        /// </summary>
+        public int DaichuNum { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<WareLocationAisleData> PalceDetails { get; set; }
+    }
+    /// <summary>
+    /// 宸�
+    /// </summary>
+    public class WareLocationAisleData
+    {
+        /// <summary>
+        /// 宸�
+        /// </summary>
+        public int Aisle { get; set; }
+
+        /// <summary>
+        /// 宸峰睘鎬ф暟鎹�
+        /// </summary>
+        public List<WareLocationRownoData> wareLocationRownoData { get; set; }
+
+    }
+
+    /// <summary>
+    /// 鎺�
+    /// </summary>
+    public class WareLocationRownoData
+    {
+        /// <summary>
+        /// 鎺�
+        /// </summary>
+        public int Rowno { get; set; }
+
+        /// <summary>
+        /// 鎺掑睘鎬ф暟鎹�
+        /// </summary>
+        public List<WareLocationLayerData> wareLocationLayerData { get; set; }
+    }
+    /// <summary>
+    /// 灞�
+    /// </summary>
+    public class WareLocationLayerData
+    {
+        /// <summary>
+        /// 灞�
+        /// </summary>
+        public int Layer { get; set; }
+
+        /// <summary>
+        /// 灞傚睘鎬ф暟鎹�
+        /// </summary>
+        public List<PalceDetail> wareLocationColumnNoData { get; set; }
+    }
+
+    ///// <summary>
+    ///// 鍒�
+    ///// </summary>
+    //public class WareLocationColumnNoData
+    //{
+    //    /// <summary>
+    //    /// 鍒�
+    //    /// </summary>
+    //    public int ColumnNo { get; set; }
+
+    //    /// <summary>
+    //    /// 鍒楀睘鎬ф暟鎹�
+    //    /// </summary>
+    //    public List<PalceDetail> PalceDetail { get; set; }
+    //}
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class MaterialDetailsOutput
+    {
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public string Containercode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅瀵硅薄
+        /// </summary>
+        public PalceDetail PalceDetails { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡淇℃伅
+        /// </summary>
+        public List<WmsMaterialStock> WmsMaterialStocks { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class PalceDetail
+    {
+        /// <summary>
+        /// 搴撲綅缂栧彿
+        /// </summary>
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅鐘舵��
+        /// </summary>
+        public PlaceStatus PlaceStatus { get; set; }
+
+        /// <summary>
+        /// 鏄惁閿佸畾
+        /// </summary>
+        public YesOrNot Islock { get; set; } = YesOrNot.N;
+
+        /// <summary>
+        /// 鏄惁绌烘墭鐩�
+        /// </summary>
+        public YesOrNot EmptyContainer { get; set; } = YesOrNot.N;
+
+
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鎺�
+        /// </summary>
+        public int RowNo { get; set; }
+
+        /// <summary>
+        /// 鍒�
+        /// </summary>
+        public int ColumnNo { get; set; }
+
+        /// <summary>
+        /// 灞�
+        /// </summary>
+        public int LayerNo { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/LocationViewService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/LocationViewService.cs
new file mode 100644
index 0000000..f6a8355
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/LocationViewService.cs
@@ -0,0 +1,280 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撲綅璇曞浘鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("浠撳簱浣滀笟", Name = "LocationView", Order = 104)]
+    [Route("api/[Controller]")]
+    public class LocationViewService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+        private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep; 
+        private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public LocationViewService(
+            IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+            IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+            IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+            IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRe,
+            IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+            IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainer
+        )
+        {
+            _wmsAreaRep = wmsAreaRep;
+            _wmsPlaceRep = wmsPlaceRep;
+            _wmsMaterialStockRep = wmsMaterialStockRep;
+            _wmsContainerPlaceRep = wmsContainerPlaceRe;
+            _wmsContainerRep = wmsContainerRep;
+            _wmsMaterialContainerRep = wmsMaterialContainer;
+        }
+
+        /// <summary>
+        /// 鑾峰彇搴撳尯淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("GetArea")]
+        public async Task<List<WmsArea>> GetArea()
+        {
+            var areaList = await _wmsAreaRep.Where(n => n.AreaStatus == CommonStatus.ENABLE && n.WorkShopType == LesWorkShopType.FAPAOCHEJIAN).ToListAsync();
+            return areaList;
+        }
+
+        /// <summary>
+        /// 鏍规嵁搴撳尯鑾峰彇宸烽亾
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("GetAisle")]
+        public async Task<object> GetPalceAisle([FromQuery] GetPalceAisleInput input)
+        {
+            
+            var objList=await _wmsPlaceRep.Where(n => n.AreaId == input.Areaid).OrderBy(n=>n.Aisle).Select(n => n.Aisle).Distinct().ToArrayAsync();
+            for (int i = 0; i < objList.Length-1; i++)
+            {
+                for (int j = 0; j < objList.Length-1; j++)
+                {
+                    int k = j + 1;
+                    if (objList[j] >objList[k])
+                    {
+                        var temp = objList[k];
+                        objList[k] = objList[j];
+                        objList[j] = temp;
+                    }
+                }
+            }
+            return objList;
+        }
+
+        /// <summary>
+        /// 鏍规嵁搴撳尯鍜屽贩閬撹幏鍙栨帓
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("GetPalceRowno")]
+        public async Task<object> GetPalceRowno([FromQuery] GetPalceAisleRownoInput input)
+        {
+            var objList=await _wmsPlaceRep.Where(n => n.AreaId == input.Areaid && n.Aisle==input.Aisleid && n.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN).OrderBy(n => n.RowNo).Select(n => n.RowNo).Distinct().ToArrayAsync();
+
+            for (int i = 0; i < objList.Length - 1; i++)
+            {
+                for (int j = 0; j < objList.Length - 1; j++)
+                {
+                    int k = j + 1;
+                    if (objList[j] > objList[k])
+                    {
+                        var temp = objList[k];
+                        objList[k] = objList[j];
+                        objList[j] = temp;
+                    }
+                }
+            }
+            return objList;
+        }
+
+        /// <summary>
+        /// 鏍规嵁搴撳尯 鎺掕幏鍙栧簱浣嶄俊鎭�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("GetPalceList")]
+        public async Task<PalceInfoOtput> GetPalceList([FromQuery] GetPalceListInput input)
+        {
+            var palceList = await _wmsPlaceRep.DetachedEntities
+                .Where(p => p.AreaId == input.Areaid)
+                .Where(input.Aisleid != 0, p => p.Aisle == input.Aisleid)
+                .Where(input.Rowno != 0, p => p.RowNo == input.Rowno)
+                .ToListAsync();
+
+            //鑾峰彇鏈夊灏戝贩,鎺�,鍒�,灞�
+            var Aisles = palceList.OrderBy(n => n.Aisle).Select(n => n.Aisle).Distinct().ToList();
+        
+            var locationDataList = new List<WareLocationAisleData>();
+            //宸烽亾
+            foreach (var aisle in Aisles)
+            {
+                var aisleData = new WareLocationAisleData();
+                aisleData.Aisle = aisle;
+                aisleData.wareLocationRownoData = new List<WareLocationRownoData>();
+                //鎺�
+                var RowNos = palceList.Where(p=>p.Aisle==aisle).OrderBy(n => n.RowNo).Select(n => n.RowNo).Distinct().ToList();
+                foreach (var row in RowNos)
+                {
+                    var rownoData = new WareLocationRownoData();
+                    rownoData.Rowno = row;
+                    rownoData.wareLocationLayerData = new List<WareLocationLayerData>();
+                    //灞�
+                    var LayerNo = palceList.Where(p=>p.Aisle==aisle && p.RowNo==row).OrderByDescending(n => n.LayerNo).Select(n => n.LayerNo).Distinct();
+                    foreach (var lay in LayerNo)
+                    {
+                        var layerData = new WareLocationLayerData();
+                        layerData.Layer = lay;
+                        layerData.wareLocationColumnNoData = new List<PalceDetail>();
+                        //鍒�
+                        var ColumnNos = palceList.Where(p=>p.Aisle==aisle && p.RowNo==row).OrderByDescending(n => n.ColumnNo).Select(n => n.ColumnNo).Distinct();
+                        foreach (var col in ColumnNos)
+                        {
+                            var wareLocationMdoel = palceList.Where(p =>p.Aisle==aisle && p.RowNo == row && p.LayerNo == lay && p.ColumnNo == col).FirstOrDefault();
+                            if (wareLocationMdoel != null)
+                            {
+                                var locationDetail = new PalceDetail()
+                                {
+                                    Id = wareLocationMdoel.Id,
+                                    RowNo = wareLocationMdoel.RowNo,
+                                    ColumnNo = wareLocationMdoel.ColumnNo,
+                                    LayerNo = wareLocationMdoel.LayerNo,
+                                    PlaceCode = wareLocationMdoel.PlaceCode,
+                                    Islock = wareLocationMdoel.Islock,
+                                    EmptyContainer = wareLocationMdoel.EmptyContainer,
+                                    PlaceStatus = wareLocationMdoel.PlaceStatus,
+                                };
+                                layerData.wareLocationColumnNoData.Add(locationDetail);
+                            }
+                            else
+                            {
+                                layerData.wareLocationColumnNoData.Add(null);
+                            }
+                        }
+                        rownoData.wareLocationLayerData.Add(layerData);
+                    }
+                    aisleData.wareLocationRownoData.Add(rownoData);
+                }
+                locationDataList.Add(aisleData);
+            }
+
+            return new PalceInfoOtput()
+            {
+                countNum = palceList.Count,
+                cunhuoNum = palceList.Where(n => n.PlaceStatus == PlaceStatus.CUNHUO).Count(),
+                emptyNum = palceList.Where(n => n.PlaceStatus == PlaceStatus.KONGXIAN).Count(),
+                DaiRuNum = palceList.Where(n => n.PlaceStatus == PlaceStatus.DAIRU).Count(),
+                DaichuNum = palceList.Where(n => n.PlaceStatus == PlaceStatus.DAICHU).Count(),
+                emptyContainerNum = palceList.Where(p => p.EmptyContainer == YesOrNot.Y && p.PlaceStatus == PlaceStatus.CUNHUO).Count(),
+                materialNum = palceList.Where(p => p.EmptyContainer == YesOrNot.N && p.PlaceStatus == PlaceStatus.CUNHUO).Count(),
+                lockNum = palceList.Where(p => p.Islock == YesOrNot.Y).Count(),
+                PalceDetails = locationDataList,
+            };
+        }
+
+        /// <summary>
+        /// 鏍规嵁搴撲綅鑾峰彇瀵瑰簲淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("GetMaterialDetail")]
+        [UnifyResult(typeof(MaterialDetailsOutput))]
+        public async Task<object> GetMaterialDetail([FromQuery] GetMaterialDetailInput input)
+        {
+            var palceModel = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.Id == input.Id);
+            if (palceModel == null) return XnRestfulResultProvider.RESTfulMesaage("搴撲綅淇℃伅涓嶅瓨鍦�!");
+            var MaterialStockList = await _wmsMaterialStockRep.Where(p => p.PlaceCode == palceModel.PlaceCode).ToListAsync();
+            var model = new MaterialDetailsOutput()
+            {
+                PalceDetails = palceModel.Adapt<PalceDetail>()
+            };
+            if (MaterialStockList.Count > 0)
+            {
+                model.Containercode = MaterialStockList.FirstOrDefault().ContainerCode;
+                model.WmsMaterialStocks = MaterialStockList;
+            }
+            return XnRestfulResultProvider.RESTfulResult(model);
+        }
+
+        /// <summary>
+        /// 淇敼搴撲綅閿佸畾淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("UpdatePalceIslock")]
+        [UnifyResult(typeof(object))]
+        public async Task<object> UpdatePalceIslock([FromQuery] GetMaterialDetailInput input)
+        {
+            var palceModel = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.Id == input.Id);
+            if (palceModel == null) return XnRestfulResultProvider.RESTfulMesaage("搴撲綅淇℃伅涓嶅瓨鍦�!");
+            if (palceModel.Islock == YesOrNot.Y)
+            {
+                palceModel.Islock = YesOrNot.N;
+            }
+            else
+            {
+                palceModel.Islock = YesOrNot.Y;
+            }
+            await _wmsPlaceRep.UpdateAsync(palceModel);
+            return XnRestfulResultProvider.RESTfulResult();
+        }
+
+        /// <summary>
+        /// 灏嗗簱浣嶇疆涓虹┖闂�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("UpdatePalceKongXian")]
+        [UnifyResult(typeof(object))]
+        [UnitOfWork]
+        public async Task<object> UpdatePalceKongXian([FromQuery] GetMaterialDetailInput input)
+        {
+            var palceModel = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.Id == input.Id);
+            if (palceModel == null) return XnRestfulResultProvider.RESTfulMesaage("搴撲綅淇℃伅涓嶅瓨鍦�!");
+            palceModel.PlaceStatus = PlaceStatus.KONGXIAN;
+            await _wmsPlaceRep.UpdateAsync(palceModel);
+
+            var materialStockModel = await _wmsMaterialStockRep.Where(p => p.PlaceCode == palceModel.PlaceCode).FirstOrDefaultAsync();
+            if (materialStockModel != null)
+            {
+                await _wmsMaterialStockRep.DeleteAsync(materialStockModel);
+            }
+            var containerPlaceModel = await _wmsContainerPlaceRep.Where(p => p.PlaceCode == palceModel.PlaceCode && p.ContainerPlaceStatus == CommonStatus.ENABLE).FirstOrDefaultAsync();
+            if (containerPlaceModel != null)
+            {
+                containerPlaceModel.ContainerPlaceStatus = CommonStatus.DISABLE;
+                await _wmsContainerPlaceRep.UpdateAsync(containerPlaceModel);
+
+                var wmsMaterialContainerModal = await _wmsMaterialContainerRep.FirstOrDefaultAsync(p => p.ContainerCode == containerPlaceModel.ContainerCode && p.BindStatus == CommonStatus.ENABLE);
+                if (containerPlaceModel != null) return XnRestfulResultProvider.RESTfulMesaage("鐗╂枡鎵樼洏淇℃伅涓嶅瓨鍦�!");
+                containerPlaceModel.ContainerPlaceStatus = CommonStatus.DISABLE;
+                await _wmsMaterialContainerRep.UpdateAsync(wmsMaterialContainerModal);
+
+                var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(p => p.ContainerCode == containerPlaceModel.ContainerCode);
+                if (containerModel != null)
+                {
+                    containerModel.ContainerStatus = ContainerStatus.KOUXIAN;
+                    await _wmsContainerRep.UpdateAsync(containerModel);
+                }
+            }
+            return XnRestfulResultProvider.RESTfulResult();
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockDto.cs
new file mode 100644
index 0000000..9cc5eaf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockDto.cs
@@ -0,0 +1,102 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撳瓨淇℃伅锛堢啛鍖栧簱锛夎緭鍑哄弬鏁�
+    /// </summary>
+    public class MaterialStockDto
+    {
+        /// <summary>
+        /// 搴撳尯鍚嶇О
+        /// </summary>
+        public string WmsAreaAreaName { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡绫诲瀷
+        /// </summary>
+        public MaterialType MaterialType { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public string MaterialBatch { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string MaterialName { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 闀�    
+        /// </summary>
+        public int Long { get; set; }
+
+        /// <summary>
+        /// 瀹�    
+        /// </summary>
+        public int Wide { get; set; }
+
+        /// <summary>
+        /// 楂�    
+        /// </summary>
+        public int High { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public string MaterialDensity { get; set; }
+        
+        /// <summary>
+        /// 妫�楠屾柟寮�
+        /// </summary>
+        public MaterialInspection InspectionMethod { get; set; }
+        
+        /// <summary>
+        /// 鍗曚綅绫诲埆
+        /// </summary>
+        public UnitType UnitType { get; set; }
+        
+        /// <summary>
+        /// 鍗曚綅缂栧彿
+        /// </summary>
+        public UnitNoType UnitNo { get; set; }
+        
+        /// <summary>
+        /// 搴撳瓨鏁�
+        /// </summary>
+        public decimal StockNumber { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public string PlaceCode { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 搴撳尯ID
+        /// </summary>
+        public long AreaId { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockInput.cs
new file mode 100644
index 0000000..43fa24c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockInput.cs
@@ -0,0 +1,294 @@
+锘縰sing Microsoft.AspNetCore.Components.Web.Virtualization;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撳瓨琛ㄦ煡璇㈠弬鏁�
+    /// </summary>
+    public class WmsMaterialStockSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public virtual string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡绫诲瀷
+        /// </summary>
+        public virtual MaterialType? MaterialType { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public virtual string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public virtual string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public virtual string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public virtual string MaterialDensity { get; set; }
+
+        /// <summary>
+        /// 妫�楠屾柟寮�
+        /// </summary>
+        public virtual MaterialInspection InspectionMethod { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅绫诲埆
+        /// </summary>
+        public virtual UnitType UnitType { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅缂栧彿
+        /// </summary>
+        public virtual UnitNoType UnitNo { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨鏁�
+        /// </summary>
+        public virtual decimal? StockNumber { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public virtual string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撳尯Id
+        /// </summary>
+        public virtual long? AreaId { get; set; }
+
+        /// <summary>
+        /// 鍥惧彿
+        /// </summary>
+        public virtual string DrawingNo { get; set; }
+
+        /// <summary>
+        /// 鑸瑰彿
+        /// </summary>
+        public virtual string ShipNo { get; set; }
+
+    }
+    /// <summary>
+    /// 搴撳瓨淇℃伅锛堢啛鍖栧簱锛夋煡璇㈠弬鏁�
+    /// </summary>
+    public class MaterialStockSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public virtual string MaterialNo { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡绫诲瀷
+        /// </summary>
+        public virtual MaterialType? MaterialType { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public virtual string MaterialBatch { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public virtual string MaterialName { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public virtual string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 闀�    
+        /// </summary>
+        public virtual int? Long { get; set; }
+
+        /// <summary>
+        /// 瀹�    
+        /// </summary>
+        public virtual int? Wide { get; set; }
+
+        /// <summary>
+        /// 楂�    
+        /// </summary>
+        public virtual int? High { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public virtual string MaterialDensity { get; set; }
+        
+        /// <summary>
+        /// 妫�楠屾柟寮�
+        /// </summary>
+        public virtual MaterialInspection InspectionMethod { get; set; }
+        
+        /// <summary>
+        /// 鍗曚綅绫诲埆
+        /// </summary>
+        public virtual UnitType UnitType { get; set; }
+        
+        /// <summary>
+        /// 鍗曚綅缂栧彿
+        /// </summary>
+        public virtual UnitNoType UnitNo { get; set; }
+        
+        /// <summary>
+        /// 搴撳瓨鏁�
+        /// </summary>
+        public virtual decimal? StockNumber { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public virtual string PlaceCode { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 搴撳尯Id
+        /// </summary>
+        public virtual long? AreaId { get; set; }
+    }
+
+    /// <summary>
+    /// 搴撳瓨淇℃伅锛堢啛鍖栧簱锛夎緭鍏ュ弬鏁�
+    /// </summary>
+    public class MaterialStockInput
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public virtual string MaterialNo { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡绫诲瀷
+        /// </summary>
+        public virtual MaterialType MaterialType { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public virtual string MaterialBatch { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public virtual string MaterialName { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public virtual string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 闀�    
+        /// </summary>
+        public virtual int? Long { get; set; }
+
+        /// <summary>
+        /// 瀹�    
+        /// </summary>
+        public virtual int? Wide { get; set; }
+
+        /// <summary>
+        /// 楂�    
+        /// </summary>
+        public virtual int? High { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public virtual string MaterialDensity { get; set; }
+        
+        /// <summary>
+        /// 妫�楠屾柟寮�
+        /// </summary>
+        public virtual MaterialInspection InspectionMethod { get; set; }
+        
+        /// <summary>
+        /// 鍗曚綅绫诲埆
+        /// </summary>
+        public virtual UnitType UnitType { get; set; }
+        
+        /// <summary>
+        /// 鍗曚綅缂栧彿
+        /// </summary>
+        public virtual UnitNoType UnitNo { get; set; }
+        
+        /// <summary>
+        /// 搴撳瓨鏁�
+        /// </summary>
+        public virtual decimal StockNumber { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public virtual string PlaceCode { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 搴撳尯Id
+        /// </summary>
+        public virtual long AreaId { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddMaterialStockInput : MaterialStockInput
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteMaterialStockInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateMaterialStockInput : MaterialStockInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryeMaterialStockInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockOutput.cs
new file mode 100644
index 0000000..ffd48be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockOutput.cs
@@ -0,0 +1,120 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+
+    /// <summary>
+    /// 鑾峰彇搴撳彛浠撳簱涓嬫媺妗嗚緭鍑哄弬鏁�
+    /// </summary>
+    public class AreaEntranceListOutput
+    {
+        /// <summary>
+        /// 浠撳簱Id
+        /// </summary>
+        public long AreaId { get; set; }
+
+        /// <summary>
+        /// 浠撳簱鍚嶇О
+        /// </summary>
+        public string AreaName { get; set; }
+    }
+    /// <summary>
+    /// 搴撳瓨淇℃伅锛堢啛鍖栧簱锛夎緭鍑哄弬鏁�
+    /// </summary>
+    public class MaterialStockOutput
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡绫诲瀷
+        /// </summary>
+        public MaterialType MaterialType { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 闀�    
+        /// </summary>
+        public int Long { get; set; }
+
+        /// <summary>
+        /// 瀹�    
+        /// </summary>
+        public int Wide { get; set; }
+
+        /// <summary>
+        /// 楂�    
+        /// </summary>
+        public int High { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public string MaterialDensity { get; set; }
+
+        /// <summary>
+        /// 妫�楠屾柟寮�
+        /// </summary>
+        public MaterialInspection InspectionMethod { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅绫诲埆
+        /// </summary>
+        public UnitType UnitType { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅缂栧彿
+        /// </summary>
+        public UnitNoType UnitNo { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨鏁�
+        /// </summary>
+        public decimal StockNumber { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撳尯Id
+        /// </summary>
+        public long AreaId { get; set; }
+
+        /// <summary>
+        /// 搴撳尯
+        /// </summary>
+        public string AreaName { get; set; }
+
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        /// <summary>
+        /// 鍏ュ簱鏃堕棿
+        /// </summary>
+        public DateTimeOffset? CreatedTime { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/MaterialStockService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/MaterialStockService.cs
new file mode 100644
index 0000000..dc45ba4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/MaterialStockService.cs
@@ -0,0 +1,141 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 搴撳瓨淇℃伅鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("浠撳簱浣滀笟", Name = "WmsMaterialStock", Order = 106)]
+    [Route("api/[Controller]")]
+    public class MaterialStockService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+        private readonly IRepository<WmsArea> _wmsAreaRep;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public MaterialStockService(
+            IRepository<WmsArea> wmsAreaRep,
+            IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep
+        )
+        {
+            _wmsAreaRep = wmsAreaRep;
+            _wmsMaterialStockRep = wmsMaterialStockRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ搴撳瓨琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<MaterialStockOutput>> Page([FromQuery] WmsMaterialStockSearch input)
+        {
+            var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(input.MaterialNo), u => EF.Functions.Like(u.MaterialNo, $"%{input.MaterialNo.Trim()}%"))
+                .Where(input.MaterialType != null, u => u.MaterialType == input.MaterialType)
+                .Where(!string.IsNullOrEmpty(input.MaterialBatch), u => EF.Functions.Like(u.MaterialBatch, $"%{input.MaterialBatch.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.MaterialName), u => EF.Functions.Like(u.MaterialName, $"%{input.MaterialName.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.MaterialSpec), u => EF.Functions.Like(u.MaterialSpec, $"%{input.MaterialSpec.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.MaterialDensity), u => EF.Functions.Like(u.MaterialDensity, $"%{input.MaterialDensity.Trim()}%"))
+                .Where(u => u.StockNumber != 0)
+                .Where(!string.IsNullOrEmpty(input.PlaceCode), u => EF.Functions.Like(u.PlaceCode, $"%{input.PlaceCode.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
+                .Where(input.AreaId > 0, u => u.AreaId == input.AreaId)
+                .Where(input.SearchBeginTime != null && input.SearchEndTime != null, u => u.CreatedTime >= DateTime.Parse(input.SearchBeginTime.Trim()) &&
+                                                                   u.CreatedTime <= DateTime.Parse(input.SearchEndTime.Trim()))
+                .OrderBy(PageInputOrder.OrderBuilder<WmsMaterialStockSearch>(input))
+                .ProjectToType<MaterialStockOutput>()
+                .ToADPagedListAsync(input.PageNo, input.PageSize);
+            //鏍规嵁id鑾峰彇鍚嶇О
+            foreach (var item in wmsMaterialStocks.Rows)
+            {
+                //鏍规嵁搴撳尯id鑾峰彇搴撳尯鍚嶇О
+                var data = await _wmsAreaRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == item.AreaId);
+                if (data != null) item.AreaName = data.AreaName;
+            }
+            return wmsMaterialStocks;
+        }
+
+        /// <summary>
+        /// 澧炲姞搴撳瓨琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddMaterialStockInput input)
+        {
+            var wmsMaterialStock = input.Adapt<WmsMaterialStock>();
+            await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎搴撳瓨琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteMaterialStockInput input)
+        {
+            var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsMaterialStockRep.DeleteAsync(wmsMaterialStock);
+        }
+
+        /// <summary>
+        /// 鏇存柊搴撳瓨琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateMaterialStockInput input)
+        {
+            var isExist = await _wmsMaterialStockRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsMaterialStock = input.Adapt<WmsMaterialStock>();
+            await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock, ignoreNullValues: true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇搴撳瓨琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<MaterialStockOutput> Get([FromQuery] QueryeMaterialStockInput input)
+        {
+            return (await _wmsMaterialStockRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<MaterialStockOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇搴撳瓨琛ㄥ垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<MaterialStockOutput>> List([FromQuery] MaterialStockInput input)
+        {
+            return await _wmsMaterialStockRep.DetachedEntities.ProjectToType<MaterialStockOutput>().ToListAsync();
+        }
+
+        /// <summary>
+        /// 鑾峰彇WmsArea鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("WmsArea")]
+        public async Task<dynamic> FkWmsAreaList()
+        {
+            var list = await _wmsAreaRep.DetachedEntities.ToListAsync();
+            return list.Select(e => new { Code = e.Id, Name = e.AreaName });
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskDto.cs
new file mode 100644
index 0000000..e63e790
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskDto.cs
@@ -0,0 +1,65 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+    /// </summary>
+    public class AgvTaskDto
+    {
+        /// <summary>
+        /// 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+        /// </summary>
+        public string TaskType { get; set; }
+        
+        /// <summary>
+        /// 璧峰浣嶇疆
+        /// </summary>
+        public string StartPlace { get; set; }
+        
+        /// <summary>
+        /// 缁撴潫浣嶇疆
+        /// </summary>
+        public string EndPlace { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public string AgvState { get; set; }
+        
+        /// <summary>
+        /// 褰撳墠鎵ц鐨勪换鍔�
+        /// </summary>
+        public string TransportOrder { get; set; }
+        
+        /// <summary>
+        /// 涓讳换鍔″彿
+        /// </summary>
+        public string TaskNo { get; set; }
+        
+        /// <summary>
+        /// Agv鐖禝d
+        /// </summary>
+        public long Pid { get; set; }
+        
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// </summary>
+        public string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public LesWorkShopType WorkShopType { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public IssueState IssueState { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskInput.cs
new file mode 100644
index 0000000..c44729f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskInput.cs
@@ -0,0 +1,215 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟
+    /// </summary>
+    public class AgvTaskSearch : PageInputBase
+    {
+        /// <summary>
+        /// 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+        /// </summary>
+        public virtual string TaskType { get; set; }
+
+        /// <summary>
+        /// 璧峰浣嶇疆
+        /// </summary>
+        public virtual string StartPlace { get; set; }
+
+        /// <summary>
+        /// 缁撴潫浣嶇疆
+        /// </summary>
+        public virtual string EndPlace { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual string AgvState { get; set; }
+
+        /// <summary>
+        /// 褰撳墠鎵ц鐨勪换鍔�
+        /// </summary>
+        public virtual string TransportOrder { get; set; }
+
+        /// <summary>
+        /// 涓讳换鍔″彿
+        /// </summary>
+        public virtual string TaskNo { get; set; }
+
+        /// <summary>
+        /// Agv鐖禝d
+        /// </summary>
+        public virtual long? Pid { get; set; }
+
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual LesWorkShopType WorkShopType { get; set; }
+
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual IssueState IssueState { get; set; }
+    }
+
+    /// <summary>
+    /// AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級涓嶅垎椤垫煡璇㈠弬鏁�
+    /// </summary>
+    public class AgvTaskSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+        /// </summary>
+        public virtual string? TaskType { get; set; }
+
+        /// <summary>
+        /// 璧峰浣嶇疆
+        /// </summary>
+        public virtual string? StartPlace { get; set; }
+
+        /// <summary>
+        /// 缁撴潫浣嶇疆
+        /// </summary>
+        public virtual string? EndPlace { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual string? AgvState { get; set; }
+
+        /// <summary>
+        /// 褰撳墠鎵ц鐨勪换鍔�
+        /// </summary>
+        public virtual string? TransportOrder { get; set; }
+
+        /// <summary>
+        /// 涓讳换鍔″彿
+        /// </summary>
+        public virtual string? TaskNo { get; set; }
+
+        /// <summary>
+        /// Agv鐖禝d
+        /// </summary>
+        public virtual long? Pid { get; set; }
+
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// </summary>
+        public virtual string? ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual LesWorkShopType? WorkShopType { get; set; }
+
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual IssueState? IssueState { get; set; }
+    }
+
+    /// <summary>
+    /// AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳叆鍙傛暟
+    /// </summary>
+    public class AgvTaskInput
+    {
+        /// <summary>
+        /// 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+        /// </summary>
+        public virtual string TaskType { get; set; }
+
+        /// <summary>
+        /// 璧峰浣嶇疆
+        /// </summary>
+        public virtual string StartPlace { get; set; }
+
+        /// <summary>
+        /// 缁撴潫浣嶇疆
+        /// </summary>
+        public virtual string EndPlace { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual string AgvState { get; set; }
+
+        /// <summary>
+        /// 褰撳墠鎵ц鐨勪换鍔�
+        /// </summary>
+        public virtual string TransportOrder { get; set; }
+
+        /// <summary>
+        /// 涓讳换鍔″彿
+        /// </summary>
+        public virtual string TaskNo { get; set; }
+
+        /// <summary>
+        /// Agv鐖禝d
+        /// </summary>
+        public virtual long Pid { get; set; }
+
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public virtual LesWorkShopType WorkShopType { get; set; }
+
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual IssueState IssueState { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddAgvTaskInput : AgvTaskInput
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteAgvTaskInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateAgvTaskInput : AgvTaskInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryeAgvTaskInput : BaseId
+    {
+
+    }
+
+    /// <summary>
+    /// 寮哄埗瀹屾垚
+    /// </summary>
+    public class AgvTaskFinishInput : BaseId
+    {
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskOutput.cs
new file mode 100644
index 0000000..24ef8ce
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskOutput.cs
@@ -0,0 +1,65 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+    /// </summary>
+    public class AgvTaskOutput
+    {
+        /// <summary>
+        /// 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+        /// </summary>
+        public string TaskType { get; set; }
+        
+        /// <summary>
+        /// 璧峰浣嶇疆
+        /// </summary>
+        public string StartPlace { get; set; }
+        
+        /// <summary>
+        /// 缁撴潫浣嶇疆
+        /// </summary>
+        public string EndPlace { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public string AgvState { get; set; }
+        
+        /// <summary>
+        /// 褰撳墠鎵ц鐨勪换鍔�
+        /// </summary>
+        public string TransportOrder { get; set; }
+        
+        /// <summary>
+        /// 涓讳换鍔″彿
+        /// </summary>
+        public string TaskNo { get; set; }
+        
+        /// <summary>
+        /// Agv鐖禝d
+        /// </summary>
+        public long Pid { get; set; }
+        
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// </summary>
+        public string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public LesWorkShopType WorkShopType { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public IssueState IssueState { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/WmsAgvTaskService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/WmsAgvTaskService.cs
new file mode 100644
index 0000000..aaef017
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/WmsAgvTaskService.cs
@@ -0,0 +1,311 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using System.Text;
+using System.Web;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// AGV鍑哄叆搴撲换鍔$鐞嗘湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings("浠撳簱浣滀笟", Name = "WmsAgvTask", Order = 103)]
+    [Route("api/[Controller]")]
+    public class WmsAgvTaskService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly IRepository<AgvTask, MasterDbContextLocator> _agvTaskRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="sysDictTypeRep"></param>
+        /// <param name="sysDictDataRep"></param>
+        /// <param name="agvTaskRep"></param>
+        /// <param name="wmsTaskRep"></param>
+        /// <param name="sysExcelTemplateService"></param>
+        public WmsAgvTaskService(
+            IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+            IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
+            IRepository<AgvTask, MasterDbContextLocator> agvTaskRep,
+            IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+            ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+            _sysDictTypeRep = sysDictTypeRep;
+            _sysDictDataRep = sysDictDataRep;
+            _agvTaskRep = agvTaskRep;
+            _wmsTaskRep = wmsTaskRep;
+            _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨAGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<AgvTaskOutput>> Page([FromQuery] AgvTaskSearch input)
+        {
+            var agvTasks = await _agvTaskRep.DetachedEntities
+                .Where(u => u.WorkShopType == LesWorkShopType.FAPAOCHEJIAN)
+                .Where(!string.IsNullOrEmpty(input.TaskType), u => u.TaskType == input.TaskType)
+                .Where(!string.IsNullOrEmpty(input.AgvState), u => u.AgvState == input.AgvState)
+                .Where(!string.IsNullOrEmpty(input.TransportOrder), u => EF.Functions.Like(u.TransportOrder, $"%{input.TransportOrder.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.TaskNo), u => EF.Functions.Like(u.TaskNo, $"%{input.TaskNo.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
+                .OrderBy(PageInputOrder.OrderBuilder<AgvTaskSearch>(input))
+                .ProjectToType<AgvTaskOutput>()
+                .ToADPagedListAsync(input.PageNo, input.PageSize);
+
+            foreach (var item in agvTasks.Rows)
+            {
+                if (item.AgvState == "PRISTINE") item.AgvState = "寰呮墽琛�";
+                else if (item.AgvState == "TRAVELLING") item.AgvState = "鎵ц涓�";
+                else item.AgvState = "瀹屾垚";
+            }
+
+            return agvTasks;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇GV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+        /// </summary>
+        /// <param name="input">AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟</param>
+        /// <returns>(AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<AgvTaskOutput>> ListNonPageAsync([FromQuery] AgvTaskSearchNonPage input)
+        {
+            var pTaskType = input.TaskType?.Trim() ?? "";
+            var pAgvState = input.AgvState?.Trim() ?? "";
+            var pTransportOrder = input.TransportOrder?.Trim() ?? "";
+            var pTaskNo = input.TaskNo?.Trim() ?? "";
+            var pContainerCode = input.ContainerCode?.Trim() ?? "";
+            var agvTasks = await _agvTaskRep.DetachedEntities
+                .Where(u => u.WorkShopType == LesWorkShopType.FAPAOCHEJIAN)
+                .Where(!string.IsNullOrEmpty(pTaskType), u => u.TaskType == pTaskType)
+                .Where(!string.IsNullOrEmpty(pAgvState), u => u.AgvState == pAgvState)
+                .Where(!string.IsNullOrEmpty(pTransportOrder), u => EF.Functions.Like(u.TransportOrder, $"%{pTransportOrder}%"))
+                .Where(!string.IsNullOrEmpty(pTaskNo), u => EF.Functions.Like(u.TaskNo, $"%{pTaskNo}%"))
+                .Where(!string.IsNullOrEmpty(pContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{pContainerCode}%"))
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<AgvTaskOutput>()
+            .ToListAsync();
+            return agvTasks;
+        }
+
+        /// <summary>
+        /// 澧炲姞AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddAgvTaskInput input)
+        {
+            var agvTask = input.Adapt<AgvTask>();
+            await _agvTaskRep.InsertAsync(agvTask);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteAgvTaskInput input)
+        {
+            var agvTask = await _agvTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _agvTaskRep.DeleteAsync(agvTask);
+        }
+
+        /// <summary>
+        /// 鏇存柊AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateAgvTaskInput input)
+        {
+            var isExist = await _agvTaskRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var agvTask = input.Adapt<AgvTask>();
+            await _agvTaskRep.UpdateAsync(agvTask, ignoreNullValues: true);
+        }
+
+        /// <summary>
+        /// 寮哄埗瀹屾垚
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("finish")]
+        [UnitOfWork]
+        public async Task Finish([FromBody] AgvTaskFinishInput input)
+        {
+            var wareAgvTask = await _agvTaskRep.FirstOrDefaultAsync(z => z.Id == input.Id);
+            if (wareAgvTask == null) throw Oops.Oh("AGV浠诲姟涓嶅瓨鍦紒");
+            if (wareAgvTask.AgvState == "FINISHED") throw Oops.Oh("AGV浠诲姟宸插畬鎴愶紒");
+
+            if (wareAgvTask.TaskType == "鍏ュ簱") //鍏ュ簱
+            {
+                // 鏇存柊AGV浠诲姟鐘舵��
+                wareAgvTask.AgvState = "FINISHED";
+                await _agvTaskRep.UpdateAsync(wareAgvTask);
+
+                // 鏌ヨ浠诲姟淇℃伅
+                var taskModel = await _wmsTaskRep.FirstOrDefaultAsync(p => p.TaskNo == wareAgvTask.TaskNo);
+                if (taskModel == null) throw Oops.Oh("涓讳换鍔′笉瀛樺湪锛�");
+                if (taskModel.TaskStatus == TaskStatusEnum.WANCHENG) throw Oops.Oh("涓讳换鍔″凡瀹屾垚锛�");
+
+                // 鏇存柊浠诲姟琛╓CS鏄惁鍙互璇诲彇涓篢rue锛岃澶囦换鍔$姸鎬佷负鈥滄墽琛屼腑-AGV鈥�
+                taskModel.IsRead = true;
+                taskModel.TaskDodeviceStatus = TaskDodeviceStatusEnum.ZX_AGV;
+                await _wmsTaskRep.UpdateAsync(taskModel);
+            }
+            else if (wareAgvTask.TaskType == "鍑哄簱") //鍑哄簱
+            {
+
+            }
+            else //绉诲簱
+            {
+
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<AgvTaskOutput> Get([FromQuery] QueryeAgvTaskInput input)
+        {
+            return (await _agvTaskRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<AgvTaskOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<AgvTaskOutput>> List([FromQuery] AgvTaskInput input)
+        {
+            return await _agvTaskRep.DetachedEntities.ProjectToType<AgvTaskOutput>().ToListAsync();
+        }
+
+        /// <summary>
+        /// Excel妯℃澘瀵煎叆AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鍔熻兘
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("AgvTask", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++)
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<AgvTaskOutput> agvTaskList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, AgvTaskOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = agvTaskList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<AgvTask>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if (!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<AgvTask, AgvTaskOutput>(selectKeys);
+            List<AgvTask> updates = new();
+            List<AgvTask> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var agvTaskExistSubList = _agvTaskRep.Where(filter).Select(selector).ToList();
+                    agvTaskExistSubList.ForEach(x =>
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+
+                foreach (var agvTask in agvTaskList)
+                {
+                    if (agvTask.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(agvTask.Adapt<AgvTask>());
+                    }
+                    else
+                    {
+                        adds.Add(agvTask.Adapt<AgvTask>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _agvTaskRep.Update(x));
+                var maxId = _agvTaskRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);
+                Db.GetDbContext().Set<AgvTask>().AddRange(adds);
+                Db.GetDbContext().SaveChanges();
+            }
+
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鐨凟xcel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("AgvTask", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        /// <summary>
+        /// 鏍规嵁AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟瀵煎嚭Excel
+        /// </summary>
+        /// <param name="input">AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] AgvTaskSearchNonPage input)
+        {
+            var agvTaskList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(agvTaskList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("AgvTask", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskDto.cs
new file mode 100644
index 0000000..5f62881
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskDto.cs
@@ -0,0 +1,110 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+    /// </summary>
+    public class TaskDto
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鏂瑰紡
+        /// </summary>
+        public TaskModel TaskModel { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public TaskType TaskType { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟绾у埆
+        /// </summary>
+        public int TaskLevel { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public TaskStatusEnum TaskStatus { get; set; }
+        
+        /// <summary>
+        /// WCS鏄惁鍙互璇诲彇
+        /// </summary>
+        public bool IsRead { get; set; }
+        
+        /// <summary>
+        /// 鎵樼洏缂栧彿
+        /// </summary>
+        public string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 璧峰搴撲綅
+        /// </summary>
+        public string SourcePlace { get; set; }
+        
+        /// <summary>
+        /// 鐩爣搴撲綅
+        /// </summary>
+        public string ToPlace { get; set; }
+        
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        public int Aisle { get; set; }
+        
+        /// <summary>
+        /// 搴撳尯鍚嶇О
+        /// </summary>
+        public string AreaName { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鏄庣粏Id
+        /// </summary>
+        public long OrderDetailsId { get; set; }
+        
+        /// <summary>
+        /// 缁勭洏璁板綍鍗曟嵁鍙�
+        /// </summary>
+        public string OrderNo { get; set; }
+        
+        /// <summary>
+        /// 鍙戦�佹鏁�
+        /// </summary>
+        public int SendTimes { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鎵ц鍫嗗灈鏈篒d
+        /// </summary>
+        public int DodeviceId { get; set; }
+        
+        /// <summary>
+        /// 璁惧鎵ц鑺傜偣Id
+        /// </summary>
+        public string DodevicenodeId { get; set; }
+        
+        /// <summary>
+        /// 璁惧绫诲瀷
+        /// </summary>
+        public DodeviceType Dodevicetype { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟璁惧鐘舵��
+        /// </summary>
+        public TaskDodeviceStatusEnum TaskDodeviceStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public IssueState IssueState { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskInput.cs
new file mode 100644
index 0000000..51b025f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskInput.cs
@@ -0,0 +1,426 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟
+    /// </summary>
+    public class WmsTaskSearch : PageInputBase
+    {
+
+        /// <summary>
+        /// 鎵规    
+        /// </summary>
+        public string Batch { get; set; }
+
+        /// <summary>
+        /// 瀵嗗害
+        /// </summary>
+        public string MaterialDensity { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public virtual string TaskNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鏂瑰紡
+        /// </summary>
+        public virtual TaskModel? TaskModel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public virtual TaskType? TaskType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绾у埆
+        /// </summary>
+        public virtual int? TaskLevel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public virtual TaskStatusEnum? TaskStatus { get; set; }
+
+        /// <summary>
+        /// WCS鏄惁鍙互璇诲彇
+        /// </summary>
+        public virtual bool? IsRead { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栧彿
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 璧峰搴撲綅
+        /// </summary>
+        public virtual string SourcePlace { get; set; }
+
+        /// <summary>
+        /// 鐩爣搴撲綅
+        /// </summary>
+        public virtual string ToPlace { get; set; }
+
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        public virtual int? Aisle { get; set; }
+
+        /// <summary>
+        /// 搴撳尯鍚嶇О
+        /// </summary>
+        public virtual string AreaName { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鏄庣粏Id
+        /// </summary>
+        public virtual long? OrderDetailsId { get; set; }
+
+        /// <summary>
+        /// 缁勭洏璁板綍鍗曟嵁鍙�
+        /// </summary>
+        public virtual string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鍙戦�佹鏁�
+        /// </summary>
+        public virtual int? SendTimes { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鎵ц鍫嗗灈鏈篒d
+        /// </summary>
+        public virtual int? DodeviceId { get; set; }
+
+        /// <summary>
+        /// 璁惧鎵ц鑺傜偣Id
+        /// </summary>
+        public virtual string DodevicenodeId { get; set; }
+
+        /// <summary>
+        /// 璁惧绫诲瀷
+        /// </summary>
+        public virtual DodeviceType? Dodevicetype { get; set; }
+
+        /// <summary>
+        /// 浠诲姟璁惧鐘舵��
+        /// </summary>
+        public virtual TaskDodeviceStatusEnum? TaskDodeviceStatus { get; set; }
+
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual IssueState? IssueState { get; set; }
+    }
+
+    /// <summary>
+    /// 寮哄埗瀹屾垚杈撳叆鍙傛暟
+    /// </summary>
+    public class WmsTaskFinishInput : BaseId
+    {
+
+    }
+
+    /// <summary>
+    /// 鏇存柊浠诲姟浼樺厛绾�
+    /// </summary>
+    public class UpdateTaskLevelInput : BaseId
+    {
+        /// <summary>
+        /// 浠诲姟浼樺厛绾�
+        /// </summary>
+        //public int TaskLevel { get; set; } = 1;
+    }
+
+    /// <summary>
+    /// 鎵归噺鍙栨秷浠诲姟
+    /// </summary>
+    public class CancelInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+    }
+
+    /// <summary>
+    /// 鎵归噺鍙栨秷浠诲姟
+    /// </summary>
+    public class BatchCancelInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public List<long> Id { get; set; }
+    }
+
+    /// <summary>
+    /// 鎵归噺鏆傚仠浠诲姟
+    /// </summary>
+    public class BatchBreakInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public List<long> Id { get; set; }
+    }
+
+    /// <summary>
+    /// 鎵归噺缁х画浠诲姟
+    /// </summary>
+    public class BatchContinueInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public List<long> Id { get; set; }
+    }
+   
+    /// <summary>
+    /// 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級涓嶅垎椤垫煡璇㈠弬鏁�
+    /// </summary>
+    public class WmsTaskSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public virtual string TaskNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鏂瑰紡
+        /// </summary>
+        public virtual TaskModel? TaskModel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public virtual TaskType? TaskType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绾у埆
+        /// </summary>
+        public virtual int? TaskLevel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public virtual TaskStatusEnum? TaskStatus { get; set; }
+
+        /// <summary>
+        /// WCS鏄惁鍙互璇诲彇
+        /// </summary>
+        public virtual bool? IsRead { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栧彿
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 璧峰搴撲綅
+        /// </summary>
+        public virtual string SourcePlace { get; set; }
+
+        /// <summary>
+        /// 鐩爣搴撲綅
+        /// </summary>
+        public virtual string ToPlace { get; set; }
+
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        public virtual int? Aisle { get; set; }
+
+        /// <summary>
+        /// 搴撳尯鍚嶇О
+        /// </summary>
+        public virtual string AreaName { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鏄庣粏Id
+        /// </summary>
+        public virtual long? OrderDetailsId { get; set; }
+
+        /// <summary>
+        /// 缁勭洏璁板綍鍗曟嵁鍙�
+        /// </summary>
+        public virtual string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鍙戦�佹鏁�
+        /// </summary>
+        public virtual int? SendTimes { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鎵ц鍫嗗灈鏈篒d
+        /// </summary>
+        public virtual int? DodeviceId { get; set; }
+
+        /// <summary>
+        /// 璁惧鎵ц鑺傜偣Id
+        /// </summary>
+        public virtual string DodevicenodeId { get; set; }
+
+        /// <summary>
+        /// 璁惧绫诲瀷
+        /// </summary>
+        public virtual DodeviceType? Dodevicetype { get; set; }
+
+        /// <summary>
+        /// 浠诲姟璁惧鐘舵��
+        /// </summary>
+        public virtual TaskDodeviceStatusEnum? TaskDodeviceStatus { get; set; }
+
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual IssueState? IssueState { get; set; }
+    }
+
+    /// <summary>
+    /// 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳叆鍙傛暟
+    /// </summary>
+    public class TaskInput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public virtual string TaskNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鏂瑰紡
+        /// </summary>
+        public virtual TaskModel TaskModel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public virtual TaskType TaskType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绾у埆
+        /// </summary>
+        public virtual int TaskLevel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public virtual TaskStatusEnum TaskStatus { get; set; }
+
+        /// <summary>
+        /// WCS鏄惁鍙互璇诲彇
+        /// </summary>
+        public virtual bool IsRead { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栧彿
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 璧峰搴撲綅
+        /// </summary>
+        public virtual string SourcePlace { get; set; }
+
+        /// <summary>
+        /// 鐩爣搴撲綅
+        /// </summary>
+        public virtual string ToPlace { get; set; }
+
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        public virtual int Aisle { get; set; }
+
+        /// <summary>
+        /// 搴撳尯鍚嶇О
+        /// </summary>
+        public virtual string AreaName { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鏄庣粏Id
+        /// </summary>
+        public virtual long OrderDetailsId { get; set; }
+
+        /// <summary>
+        /// 缁勭洏璁板綍鍗曟嵁鍙�
+        /// </summary>
+        public virtual string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鍙戦�佹鏁�
+        /// </summary>
+        public virtual int SendTimes { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鎵ц鍫嗗灈鏈篒d
+        /// </summary>
+        public virtual int DodeviceId { get; set; }
+
+        /// <summary>
+        /// 璁惧鎵ц鑺傜偣Id
+        /// </summary>
+        public virtual string DodevicenodeId { get; set; }
+
+        /// <summary>
+        /// 璁惧绫诲瀷
+        /// </summary>
+        public virtual DodeviceType Dodevicetype { get; set; }
+
+        /// <summary>
+        /// 浠诲姟璁惧鐘舵��
+        /// </summary>
+        public virtual TaskDodeviceStatusEnum TaskDodeviceStatus { get; set; }
+
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual IssueState IssueState { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class AddWmsTaskInput : TaskInput
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class DeleteWmsTaskInput : BaseId
+    {
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class UpdateWmsTaskInput : TaskInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class QueryeWmsTaskInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskOutput.cs
new file mode 100644
index 0000000..82a3889
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskOutput.cs
@@ -0,0 +1,160 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+    /// </summary>
+    public class TaskOutput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鏂瑰紡
+        /// </summary>
+        public TaskModel TaskModel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public TaskType TaskType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绾у埆
+        /// </summary>
+        public int TaskLevel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public TaskStatusEnum TaskStatus { get; set; }
+
+        /// <summary>
+        /// WCS鏄惁鍙互璇诲彇
+        /// </summary>
+        public bool IsRead { get; set; }
+
+        /// <summary>
+        /// WCS鏄惁鍙互璇诲彇鍚嶇О
+        /// </summary>
+        public string IsReadName { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栧彿
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 璧峰搴撲綅
+        /// </summary>
+        public string SourcePlace { get; set; }
+
+        /// <summary>
+        /// 鐩爣搴撲綅
+        /// </summary>
+        public string ToPlace { get; set; }
+
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        public int Aisle { get; set; }
+
+        /// <summary>
+        /// 搴撳尯鍚嶇О
+        /// </summary>
+        public string AreaName { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鏄庣粏Id
+        /// </summary>
+        public long OrderDetailsId { get; set; }
+
+        /// <summary>
+        /// 缁勭洏璁板綍鍗曟嵁鍙�
+        /// </summary>
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鍙戦�佹鏁�
+        /// </summary>
+        public int SendTimes { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鎵ц鍫嗗灈鏈篒d
+        /// </summary>
+        public int DodeviceId { get; set; }
+
+        /// <summary>
+        /// 璁惧鎵ц鑺傜偣Id
+        /// </summary>
+        public string DodevicenodeId { get; set; }
+
+        /// <summary>
+        /// 璁惧绫诲瀷
+        /// </summary>
+        public DodeviceType Dodevicetype { get; set; }
+
+        /// <summary>
+        /// 浠诲姟璁惧鐘舵��
+        /// </summary>
+        public TaskDodeviceStatusEnum TaskDodeviceStatus { get; set; }
+
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public IssueState IssueState { get; set; }
+
+        /// <summary>
+        /// Agv鐘舵��
+        /// </summary>
+        public string AgvState { get; set; }
+
+        /// <summary>
+        /// 鎵规    
+        /// </summary>
+        public string Batch { get; set; }
+
+        /// <summary>
+        /// 瀵嗗害
+        /// </summary>
+        public string MaterialDensity { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 瑙勬牸
+        /// </summary>
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public DateTimeOffset? CreatedTime { get; set; }
+
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        public DateTimeOffset? UpdatedTime { get; set; }
+
+        /// <summary>
+        /// 涓嬫枡浜х嚎
+        /// </summary>
+        public BlankingProductionLineEnum BlankingProductionLine { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鏉ユ簮
+        /// </summary>
+        public string Description { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/WmsTaskService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/WmsTaskService.cs
new file mode 100644
index 0000000..7a7bccc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/WmsTaskService.cs
@@ -0,0 +1,627 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using System.Text;
+using System.Web;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+using StackExchange.Redis;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 浠诲姟绠$悊鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("浠撳簱浣滀笟", Name = "WmsTask", Order = 102)]
+    [Route("api/[Controller]")]
+    public class WmsTaskService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+        private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+        private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+        private readonly IRepository<AgvTask, MasterDbContextLocator> _agvTaskRep;
+        private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public WmsTaskService(
+            IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+            IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
+            IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+            IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
+            IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
+            IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+            IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+            IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+            IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+            IRepository<AgvTask, MasterDbContextLocator> agvTaskRep,
+            IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+            IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+            IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+            ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+            _sysDictTypeRep = sysDictTypeRep;
+            _sysDictDataRep = sysDictDataRep;
+            _wmsTaskRep = wmsTaskRep;
+            _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
+            _wmsOrderRep = wmsOrderRep;
+            _wmsOrderDetailsRep = wmsOrderDetailsRep;
+            _wmsPlaceRep = wmsPlaceRep;
+            _wmsContainerPlaceRep = wmsContainerPlaceRep;
+            _wmsMaterialStockRep = wmsMaterialStockRep;
+            _agvTaskRep = agvTaskRep;
+            _wmsContainerRep = wmsContainerRep;
+            _wmsMaterialContainerRep = wmsMaterialContainerRep;
+            _wmsAreaRep= wmsAreaRep;
+            _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鍑哄叆搴撲换鍔$鐞�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<TaskOutput>> Page([FromQuery] WmsTaskSearch input)
+        {
+            var wmsTasks = await _wmsTaskRep.DetachedEntities
+                .Where(u => u.AreaName.Contains("缁濈紭绔嬪簱"))
+                .Where(!string.IsNullOrEmpty(input.TaskNo), u => EF.Functions.Like(u.TaskNo, $"%{input.TaskNo.Trim()}%"))
+                .Where(input.TaskModel != null, u => u.TaskModel == input.TaskModel)
+                .Where(input.TaskType != null, u => u.TaskType == input.TaskType)
+                .Where(input.TaskStatus != null, u => u.TaskStatus == input.TaskStatus)
+                .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.AreaName), u => u.AreaName == input.AreaName)
+                .Where(!string.IsNullOrEmpty(input.OrderNo), u => EF.Functions.Like(u.OrderNo, $"%{input.OrderNo.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.SourcePlace), u => EF.Functions.Like(u.SourcePlace, $"%{input.SourcePlace.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.ToPlace), u => EF.Functions.Like(u.ToPlace, $"%{input.ToPlace.Trim()}%"))
+                .Where(input.Aisle != null, u => u.Aisle == input.Aisle)
+                .OrderBy(PageInputOrder.OrderBuilder(input))
+                .ProjectToType<TaskOutput>()
+                .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsTasks;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈠嚭鍏ュ簱浠诲姟绠$悊鍒楄〃
+        /// </summary>
+        /// <param name="input">鍑哄叆搴撲换鍔$鐞嗘煡璇㈠弬鏁�</param>
+        /// <returns>(鍑哄叆搴撲换鍔$鐞�)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<TaskOutput>> ListNonPageAsync([FromQuery] WmsTaskSearchNonPage input)
+        {
+            var pTaskNo = input.TaskNo?.Trim() ?? "";
+            var pTaskModel = input.TaskModel;
+            var pTaskType = input.TaskType;
+            var pTaskLevel = input.TaskLevel;
+            var pTaskStatus = input.TaskStatus;
+            var pIsRead = input.IsRead;
+            var pContainerCode = input.ContainerCode?.Trim() ?? "";
+            var pAreaName = input.AreaName?.Trim() ?? "";
+            var pOrderNo = input.OrderNo?.Trim() ?? "";
+            var pTaskDodeviceStatus = input.TaskDodeviceStatus;
+            var wmsTasks = await _wmsTaskRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pTaskNo), u => EF.Functions.Like(u.TaskNo, $"%{pTaskNo}%"))
+                .Where(pTaskModel != null, u => u.TaskModel == pTaskModel)
+                .Where(pTaskType != null, u => u.TaskType == pTaskType)
+                .Where(pTaskLevel != null, u => u.TaskLevel == pTaskLevel)
+                .Where(pTaskStatus != null, u => u.TaskStatus == pTaskStatus)
+                .Where(pIsRead != null, u => u.IsRead == pIsRead)
+                .Where(!string.IsNullOrEmpty(pContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{pContainerCode}%"))
+                .Where(!string.IsNullOrEmpty(pAreaName), u => u.AreaName == pAreaName)
+                .Where(!string.IsNullOrEmpty(pOrderNo), u => EF.Functions.Like(u.OrderNo, $"%{pOrderNo}%"))
+                .Where(pTaskDodeviceStatus != null, u => u.TaskDodeviceStatus == pTaskDodeviceStatus)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<TaskOutput>()
+            .ToListAsync();
+            return wmsTasks;
+        }
+
+        /// <summary>
+        /// 澧炲姞鍑哄叆搴撲换鍔$鐞�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        [NonAction]
+        public async Task Add(AddWmsTaskInput input)
+        {
+            var wmsTask = input.Adapt<WmsTask>();
+            await _wmsTaskRep.InsertAsync(wmsTask);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鍑哄叆搴撲换鍔$鐞�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWmsTaskInput input)
+        {
+            var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsTaskRep.DeleteAsync(wmsTask);
+        }
+
+        /// <summary>
+        /// 鏇存柊鍑哄叆搴撲换鍔$鐞�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWmsTaskInput input)
+        {
+            var isExist = await _wmsTaskRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsTask = input.Adapt<WmsTask>();
+            await _wmsTaskRep.UpdateAsync(wmsTask, ignoreNullValues: true);
+        }
+
+        /// <summary>
+        /// 寮哄埗瀹屾垚
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("finish")]
+        [UnitOfWork]
+        public async Task Finish([FromBody] WmsTaskFinishInput input)
+        {
+            //鏌ヨ浠诲姟
+            var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+
+            // 鏌ヨ娣峰悎鏂欏簱鍖轰俊鎭�
+            var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.AreaName.Contains("缁濈紭绔嬪簱"));
+            if (wmsArea == null) throw Oops.Oh("搴撳尯涓嶅瓨鍦紒");
+
+            // 鏌ヨ鎵樼洏淇℃伅,鍛兼晳AGV鏃朵細杩涜缁勭洏鎿嶄綔
+            var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
+            if (wmsContainer == null) throw Oops.Oh("鎵樼洏涓嶅瓨鍦紒");
+
+            var statusList = new List<TaskStatusEnum> { TaskStatusEnum.WEIZHIXING, TaskStatusEnum.ZHIXINGZHONG , TaskStatusEnum .DAIZHIXING};
+            if (!statusList.Contains(wmsTask.TaskStatus)) throw Oops.Oh("鍙湁鏈墽琛屽拰鎵ц涓殑浠诲姟鎵嶈兘寮哄埗瀹屾垚锛�");
+
+            if (wmsTask.TaskType == TaskType.RUKU) // 鍏ュ簱浠诲姟
+            {
+                // 鏌ヨ搴撲綅淇℃伅 闅忔満鍒嗛厤搴撲綅
+                var wmsPlace = new WmsPlace();
+                if (string.IsNullOrEmpty(wmsTask.ToPlace))
+                    wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.AreaId == wmsArea.Id && u.Islock == YesOrNot.N && u.PlaceStatus == PlaceStatus.KONGXIAN);
+                else
+                    wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.AreaId == wmsArea.Id && u.PlaceCode == wmsTask.ToPlace);
+                if (wmsPlace == null) throw Oops.Oh("搴撲綅涓嶅瓨鍦�!");
+                if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("搴撲綅琚攣瀹�!");
+                if (wmsPlace.PlaceStatus != PlaceStatus.KONGXIAN) throw Oops.Oh("搴撲綅宸插瓨璐�!");
+                // 鏇存柊搴撲綅鐘舵�佷负鈥滃瓨璐р��
+                wmsPlace.PlaceStatus = PlaceStatus.CUNHUO;
+                if (wmsTask.Description == "绌烘墭") wmsPlace.EmptyContainer = YesOrNot.Y;  //鏄惁绌烘墭
+                else wmsPlace.EmptyContainer = YesOrNot.N;
+
+                // 鍒涘缓鎵樼洏鍙峰簱浣嶅叧绯昏〃
+                var wmsContainerPlaceModel = new WmsContainerPlace()
+                {
+                    PlaceId = wmsPlace.Id,
+                    PlaceCode = wmsPlace.PlaceCode,
+                    ContainerId = wmsContainer.Id,
+                    ContainerCode = wmsContainer.ContainerCode,
+                    ContainerPlaceStatus = CommonStatus.ENABLE
+                };
+                await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlaceModel);
+
+                // 鏇存柊搴撳瓨
+                var wmsMaterialContainerList = await _wmsMaterialContainerRep.DetachedEntities
+                    .Where(p => p.OrderNo ==wmsTask.OrderNo && p.BindStatus == CommonStatus.ENABLE).ProjectToType<WmsMaterialContainer>().ToListAsync();
+
+                foreach (var item in wmsMaterialContainerList)
+                {
+                    var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(p => p.ContainerCode == wmsContainer.ContainerCode
+                    && p.MaterialBatch == item.MaterialBatch);
+                    if (wmsMaterialStock != null)
+                    {
+                        wmsMaterialStock.Source = RuKuSourceEnum.KONGTUO;
+                        wmsMaterialStock.AreaId = wmsPlace.AreaId;
+                        wmsMaterialStock.PlaceCode = wmsPlace.PlaceCode;
+                        wmsMaterialStock.StockNumber += item.BindQuantity;
+                        await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock);
+                    }
+                    else
+                    {
+                        wmsMaterialStock = new WmsMaterialStock()
+                        {
+                            InspectionMethod = MaterialInspection.MIANJIAN,
+                            UnitType = UnitType.ZHONGLIANG,
+                            UnitNo = UnitNoType.T,
+                            MaterialNo = item.MaterialNo,
+                            MaterialType = MaterialType.CHENGPING,
+                            MaterialName = item.MaterialName,
+                            MaterialSpec = item.MaterialSpec,
+                            MaterialBatch = item.MaterialBatch,
+                            MaterialDensity = item.MaterialDensity,
+                            StockNumber = 1,
+                            PlaceCode = wmsPlace.PlaceCode,
+                            ContainerId = wmsContainer.Id,
+                            ContainerCode = wmsContainer.ContainerCode,
+                            AreaId = wmsPlace.AreaId,
+                            Source = RuKuSourceEnum.KONGTUO,
+                        };
+                        await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
+                    }
+                }
+                // 绌烘枡绠卞叆搴�
+                if (wmsTask.OrderNo == "N/A")
+                {
+                    var wmsMaterialStock = new WmsMaterialStock()
+                    {
+                        InspectionMethod = MaterialInspection.MIANJIAN,
+                        UnitType = UnitType.ZHONGLIANG,
+                        UnitNo = UnitNoType.T,
+                        MaterialNo = "N/A",
+                        MaterialType = MaterialType.KONGTUO,
+                        MaterialName = "N/A",
+                        MaterialSpec = "N/A",
+                        MaterialBatch = "N/A",
+                        MaterialDensity = "N/A",
+                        StockNumber = 0,
+                        PlaceCode = wmsPlace.PlaceCode,
+                        ContainerId = wmsContainer.Id,
+                        ContainerCode = wmsContainer.ContainerCode,
+                        AreaId = wmsPlace.AreaId,
+                        Source = RuKuSourceEnum.KONGTUO,
+                    };
+                    await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
+                }
+                // 鏇存柊浠诲姟鐘舵�併�佽澶囦换鍔$姸鎬併�佹墭鐩樼紪鍙枫�佺洰鏍囦綅缃�佸簱鍖哄悕绉�
+                wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+                wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+                wmsTask.ContainerCode = wmsContainer.ContainerCode;
+                wmsTask.ToPlace = wmsPlace.PlaceCode;
+                wmsTask.AreaName = wmsPlace.WmsArea.AreaName;
+                wmsTask.IsRead = true;
+
+                // 鏇存柊搴撲綅鐘舵�佷负瀛樿揣
+                wmsPlace.PlaceStatus = PlaceStatus.CUNHUO;
+                await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+                // 鏇存柊鎵樼洏鐘舵�佷负鈥滃簱浣嶁��
+                wmsContainer.ContainerStatus = ContainerStatus.KUWEI;
+                await _wmsContainerRep.UpdateAsync(wmsContainer);
+            }
+            else if (wmsTask.TaskType == TaskType.CHUKU) //鍑哄簱浠诲姟
+            {
+                var wmsMaterialContainerList = new List<WmsMaterialContainer>();
+                // 鏌ヨ搴撲綅淇℃伅
+                var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.PlaceCode == wmsTask.SourcePlace);
+                if (wmsPlace == null) throw Oops.Oh("搴撲綅淇℃伅涓嶅瓨鍦�!");
+                if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("搴撲綅琚攣瀹�!");
+                //if (wmsPlace != null && wmsPlace.PlaceStatus != PlaceStatus.DAICHU) throw Oops.Oh("搴撲綅寮傚父璐�!");
+
+                // 鏌ヨ鏄惁宸插瓨鍦ㄦ墭鐩樹笌搴撲綅鐨勫叧绯�
+                var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == wmsPlace.Id && z.PlaceCode == wmsPlace.PlaceCode
+                && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE);
+                if (wmsContainerPlace == null) throw Oops.Oh("搴撲綅瀹瑰櫒鍏崇郴涓嶅瓨鍦�!");
+
+                // 涓嶆槸绌烘墭鎵嶄細鏈夌粍鐩樺叧绯�
+                if (wmsPlace.EmptyContainer == YesOrNot.N)
+                {
+                    // 妫�鏌ョ墿鏂欎笌绌烘墭鍙峰叧绯� 
+                    wmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+                    if (wmsMaterialContainerList.Count <= 0) throw Oops.Oh("鎵樼洏鍙蜂笌鐗╂枡鍏崇郴涓嶅瓨鍦�!");
+
+                }
+                else
+                {
+                    // 鏇存柊绌烘枡绠卞簱瀛�
+                    var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(u => u.ContainerCode == wmsContainer.ContainerCode);
+                    if (wmsMaterialStock.Source == RuKuSourceEnum.KONGTUO)
+                    {
+                        await _wmsMaterialStockRep.DeleteAsync(wmsMaterialStock);
+                    }
+                }
+
+                //鏋勫缓鍑哄簱鐗╂枡鍜屽懆杞鍙峰叧绯�
+                var orderNo = "N/A";
+                if (wmsMaterialContainerList.Count > 0) orderNo = YitIdHelper.NextId().ToString();
+
+                foreach (var wmsMaterialContaine in wmsMaterialContainerList)
+                {
+                    //鏇存柊鐘舵�佷负鈥濆垹闄も��
+                    wmsMaterialContaine.BindStatus = CommonStatus.DELETED;
+                    await _wmsMaterialContainerRep.UpdateNowAsync(wmsMaterialContaine);
+
+                    //鏂板缁勭洏缁戝畾璁板綍 姝e父
+                    var addWmsMaterialContainer = wmsMaterialContaine;
+                    addWmsMaterialContainer.Id = YitIdHelper.NextId();
+                    addWmsMaterialContainer.OrderNo = orderNo;
+                    addWmsMaterialContainer.BindStatus = CommonStatus.ENABLE;
+                    await _wmsMaterialContainerRep.InsertNowAsync(addWmsMaterialContainer);
+                    // 杩欓噷娌℃湁鍒嗘嫞鎿嶄綔鐩存帴鏇存柊搴撳瓨淇℃伅
+                    var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(u => u.ContainerCode == wmsMaterialContaine.ContainerCode);
+                    wmsMaterialStock.PlaceCode = "N/A";
+                    wmsMaterialStock.StockNumber -= wmsMaterialContaine.BindQuantity;
+                    await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock);
+                }
+
+                //鏇存柊浠诲姟鐘舵��
+                wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+                wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+                wmsTask.IsRead = true;
+
+                // 绂佺敤鎵樼洏搴撲綅鍏崇郴
+                wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED;
+                await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace);
+
+                // 鏇存柊搴撲綅鐘舵�佷负鈥滅┖闂测��
+                wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN;
+                await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+                // 鏇存柊鎵樼洏鐘舵�佷负鈥滅┖闂测��
+                wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+                await _wmsContainerRep.UpdateAsync(wmsContainer);
+            }
+            else //绉诲簱浠诲姟
+            {
+
+            }
+            await _wmsTaskRep.UpdateAsync(wmsTask);
+        }
+
+        /// <summary>
+        /// 鏇存柊浼樺厛绾�(鍚戜笂)
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("upwardTaskLevel")]
+        public async Task UpwardTaskLevel([FromBody] UpdateTaskLevelInput input)
+        {
+            var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+            if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("鍙湁鏈墽琛岀殑浠诲姟鎵嶈兘鏇存柊浠诲姟浼樺厛绾э紒");
+            if(wmsTask.TaskLevel==5) throw Oops.Oh("浠诲姟宸蹭负鏈�楂樼骇鍒紒");
+            wmsTask.TaskLevel += 1;
+            await _wmsTaskRep.UpdateAsync(wmsTask);
+        }
+
+        /// <summary>
+        /// 鏇存柊浼樺厛绾�(鍚戜笅)
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("downTaskLevel")]
+        public async Task DownTaskLevel([FromBody] UpdateTaskLevelInput input)
+        {
+            var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+            if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("鍙湁鏈墽琛岀殑浠诲姟鎵嶈兘鏇存柊浠诲姟浼樺厛绾э紒");
+            if (wmsTask.TaskLevel == 1) throw Oops.Oh("浠诲姟宸蹭负鏈�浣庣骇鍒紒");
+            wmsTask.TaskLevel -= 1;
+            await _wmsTaskRep.UpdateAsync(wmsTask);
+        }
+
+        /// <summary>
+        /// 鍙栨秷
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("CancelTask")]
+        public async Task CancelTask([FromBody] CancelInput input)
+        {
+            var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+
+            if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("鍙湁鏈墽琛岀殑浠诲姟鎵嶈兘鍙栨秷浠诲姟锛�");
+
+            wmsTask.TaskStatus = TaskStatusEnum.QUXIAO;
+            wmsTask.IsRead=true;
+            await _wmsTaskRep.UpdateAsync(wmsTask);
+        }
+
+
+        /// <summary>
+        /// 鎵归噺鍙栨秷
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("batchCancel")]
+        public async Task BatchCancel([FromBody] BatchCancelInput input)
+        {
+            int length = input.Id.Count;
+            for (int i = 0; i < length; i++)
+            {
+                long Id = input.Id[i];
+                var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == Id);
+                if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+
+                if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("鍙湁鏈墽琛岀殑浠诲姟鎵嶈兘鍙栨秷浠诲姟锛�");
+
+                wmsTask.TaskStatus = TaskStatusEnum.QUXIAO;
+                await _wmsTaskRep.UpdateAsync(wmsTask);
+            }
+        }
+
+        /// <summary>
+        /// 鎵归噺鏆傚仠
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("batchBreak")]
+        public async Task BatchBreak([FromBody] BatchBreakInput input)
+        {
+            int length = input.Id.Count;
+            for (int i = 0; i < length; i++)
+            {
+                long Id = input.Id[i];
+                var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == Id);
+                if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+
+                if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("鍙湁鏈墽琛岀殑浠诲姟鎵嶈兘鏆傚仠浠诲姟锛�");
+
+                wmsTask.TaskStatus = TaskStatusEnum.ZANTING;
+                await _wmsTaskRep.UpdateAsync(wmsTask);
+            }
+        }
+
+        /// <summary>
+        /// 鎵归噺缁х画
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("batchContinue")]
+        public async Task BatchContinue([FromBody] BatchContinueInput input)
+        {
+            int length = input.Id.Count;
+            for (int i = 0; i < length; i++)
+            {
+                long Id = input.Id[i];
+                var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == Id);
+                if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+
+                if (wmsTask.TaskStatus != TaskStatusEnum.ZANTING) throw Oops.Oh("鍙湁鏆傚仠鐨勪换鍔℃墠鑳界户缁换鍔★紒");
+
+                wmsTask.TaskStatus = TaskStatusEnum.WEIZHIXING;
+                await _wmsTaskRep.UpdateAsync(wmsTask);
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍑哄叆搴撲换鍔$鐞�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<TaskOutput> Get([FromQuery] QueryeWmsTaskInput input)
+        {
+            return (await _wmsTaskRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<TaskOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍑哄叆搴撲换鍔$鐞嗗垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<TaskOutput>> List([FromQuery] TaskInput input)
+        {
+            return await _wmsTaskRep.DetachedEntities.ProjectToType<TaskOutput>().ToListAsync();
+        }
+
+        /// <summary>
+        /// Excel妯℃澘瀵煎叆鍑哄叆搴撲换鍔$鐞嗗姛鑳�
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTask", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++)
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<TaskOutput> wmsTaskList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, TaskOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = wmsTaskList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsTask>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if (!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsTask, TaskOutput>(selectKeys);
+            List<WmsTask> updates = new();
+            List<WmsTask> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var wmsTaskExistSubList = _wmsTaskRep.Where(filter).Select(selector).ToList();
+                    wmsTaskExistSubList.ForEach(x =>
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+
+                foreach (var wmsTask in wmsTaskList)
+                {
+                    if (wmsTask.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsTask.Adapt<WmsTask>());
+                    }
+                    else
+                    {
+                        adds.Add(wmsTask.Adapt<WmsTask>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsTaskRep.Update(x));
+
+                var maxId = _wmsTaskRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);
+                Db.GetDbContext().Set<WmsTask>().AddRange(adds);
+                Db.GetDbContext().SaveChanges();
+            }
+
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇鍑哄叆搴撲换鍔$鐞嗙殑Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTask", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        /// <summary>
+        /// 鏍规嵁鍑哄叆搴撲换鍔$鐞嗘煡璇㈠弬鏁板鍑篍xcel
+        /// </summary>
+        /// <param name="input">鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] WmsTaskSearchNonPage input)
+        {
+            var wmsTaskList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(wmsTaskList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTask", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderDto.cs
new file mode 100644
index 0000000..04e4d74
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderDto.cs
@@ -0,0 +1,62 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 杞偍鍗曡緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsDumpOrderDto
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public string Creator { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public string Companyname { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderInput.cs
new file mode 100644
index 0000000..e409537
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderInput.cs
@@ -0,0 +1,197 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 杞偍鍗曟煡璇㈠弬鏁�
+    /// </summary>
+    public class WmsDumpOrderSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long? OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long? OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long? SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public virtual DateTimeOffset? Billdate { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public virtual string Creator { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public virtual string Companyname { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 杞偍鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+    /// </summary>
+    public class WmsDumpOrderSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long? OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long? OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long? SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string? NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public virtual DateTimeOffset? Billdate { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public virtual string? Creator { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public virtual string? Companyname { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 杞偍鍗曡緭鍏ュ弬鏁�
+    /// </summary>
+    public class WmsDumpOrderInput
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public virtual DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public virtual string Creator { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public virtual string Companyname { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+    public class AddWmsDumpOrderInput : WmsDumpOrderInput
+    {
+    }
+
+    public class DeleteWmsDumpOrderInput : BaseId
+    {
+    }
+
+    public class UpdateWmsDumpOrderInput : WmsDumpOrderInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    public class QueryeWmsDumpOrderInput : BaseId
+    {
+
+    }
+
+    /// <summary>
+    /// 鑾峰彇鏄庣粏鍙傛暟
+    /// </summary>
+    public class DumpPageDetailInput : PageInputBase
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long? Id { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderOutput.cs
new file mode 100644
index 0000000..220a10a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderOutput.cs
@@ -0,0 +1,149 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Admin.NET.Core;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 杞偍鍗曡緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsDumpOrderOutput
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public string Creator { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public string Companyname { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+
+        /// <summary>
+        /// 瀵瑰簲YiGo绯荤粺
+        /// </summary>
+        public List<DumpPageDetailOutput> Dtls { get; set; }
+    }
+    /// <summary>
+    /// 杞偍鍗曡鎯呰緭鍑哄弬鏁�
+    /// </summary>
+    public class DumpPageDetailOutput
+    {
+        /// <summary>
+        /// Id  
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 闀垮害 
+        /// </summary>
+        public decimal Length { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        public string Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨椤圭洰缂栫爜    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鏂板簱瀛橀」鐩紪鐮�    
+        /// </summary>
+        public string Projectcode_To { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public OrderDetailsStatusEnum OrderStatus { get; set; }
+    }
+
+    /// <summary>
+    /// yigo杞偍鍗曡幏鍙栧弬鏁�
+    /// </summary>
+    public class WmsDumpOrderOutputByYiGO
+    {
+        public bool Status { get; set; }
+
+        public List<WmsDumpOrderOutput> Data { get; set; }
+
+        public string Result { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/IWmsDumpOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/IWmsDumpOrderService.cs
new file mode 100644
index 0000000..dd5dced
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/IWmsDumpOrderService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface IWmsDumpOrderService
+    {
+        Task Add(AddWmsDumpOrderInput input);
+        Task Delete(DeleteWmsDumpOrderInput input);
+        Task<WmsDumpOrderOutput> Get([FromQuery] QueryeWmsDumpOrderInput input);
+        Task<List<WmsDumpOrderOutput>> List([FromQuery] WmsDumpOrderInput input);
+        Task<PageResult<WmsDumpOrderOutput>> Page([FromQuery] WmsDumpOrderSearch input);
+        Task Update(UpdateWmsDumpOrderInput input);
+
+        Task<List<WmsDumpOrderOutput>> ListNonPageAsync([FromQuery] WmsDumpOrderSearchNonPage input);
+
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+        Task<IActionResult> DownloadExcelTemplate(string version);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Map/WmsDumpOrderMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Map/WmsDumpOrderMapper.cs
new file mode 100644
index 0000000..618bb11
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Map/WmsDumpOrderMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class WmsDumpOrderMapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddWmsDumpOrderInput, WmsDumpOrder>()
+            ;
+            config.ForType<UpdateWmsDumpOrderInput, WmsDumpOrder>()
+            ;
+            config.ForType<WmsDumpOrder, WmsDumpOrderOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/WmsDumpOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/WmsDumpOrderService.cs
new file mode 100644
index 0000000..3e73312
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/WmsDumpOrderService.cs
@@ -0,0 +1,335 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using Furion.RemoteRequest.Extensions;
+using Furion;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 杞偍鍗曟湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings("杞偍鍗�", Name = "WmsDumpOrder", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsDumpOrderService : IWmsDumpOrderService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsDumpOrder,MasterDbContextLocator> _wmsDumpOrderRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly IRepository<WmsDumpOrderDetails, MasterDbContextLocator> _wmsDumpOrderDetailsRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+
+
+        public WmsDumpOrderService(
+            IRepository<WmsDumpOrder,MasterDbContextLocator> wmsDumpOrderRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,IRepository<WmsDumpOrderDetails, MasterDbContextLocator> wmsDumpOrderDetailsRep
+            , ISysExcelTemplateService sysExcelTemplateService
+            , IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+
+        )
+        {
+            _wmsDumpOrderRep = wmsDumpOrderRep;
+         _sysDictTypeRep = sysDictTypeRep;
+         _sysDictDataRep = sysDictDataRep;
+         _sysExcelTemplateService = sysExcelTemplateService;
+            _wmsDumpOrderDetailsRep = wmsDumpOrderDetailsRep;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ杞偍鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsDumpOrderOutput>> Page([FromQuery] WmsDumpOrderSearch input)
+        {
+            var wmsDumpOrders = await _wmsDumpOrderRep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
+                                     .Where(input.Billdate != null, u => u.Billdate == input.Billdate)
+                                     .Where(!string.IsNullOrEmpty(input.Creator), u => EF.Functions.Like(u.Creator, $"%{input.Creator.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
+                                     .Where(input.OrderStatus != null, u => u.OrderStatus == input.OrderStatus)
+                                     .OrderBy(PageInputOrder.OrderBuilder<WmsDumpOrderSearch>(input))
+                                     .ProjectToType<WmsDumpOrderOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsDumpOrders;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曟嵁鏄庣粏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("PageDetail")]
+        public async Task<PageResult<DumpPageDetailOutput>> PageDetail([FromQuery] DumpPageDetailInput input)
+        {
+            var wmsOrders = await _wmsDumpOrderDetailsRep.DetachedEntities
+                                     .Where(input.Id != null, u => u.OrderId == input.Id)
+                                     .ProjectToType<DumpPageDetailOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsOrders;
+        }
+
+        /// <summary>
+        /// 澧炲姞杞偍鍗�(yigo绯荤粺鑾峰彇)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("GetDumpOrder")]
+        [UnitOfWork]
+        public async Task GetDumpOrder()
+        {
+            //鑾峰彇鍏ュ簱閫氱煡鍗�
+            string url = App.Configuration["YiGoWebApi:QueryAllocate"];
+            var Billdate_S = DateTime.Now.AddDays(-15).ToString("yyyy-MM-dd");
+            var Billdate_E = DateTime.Now.AddDays(15).ToString("yyyy-MM-dd");
+            //鍐欐棩蹇楁枃浠�
+            //Log.Error($"[TransferContainerCode][ContainerCode:{input.ContainerCode}][url:{url}]");
+            var response = await url.SetHttpMethod(System.Net.Http.HttpMethod.Post)
+                                    .SetBody(new Dictionary<string, object> {
+                                            { "Billdate_S", Billdate_S },
+                                            { "Billdate_E", Billdate_E},
+                                    }, "application/json").PostAsStringAsync();
+            var Data = response.FromJson<WmsDumpOrderOutputByYiGO>();
+            var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("杞偍"));
+            foreach (var item in Data.Data)
+            {
+                item.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                var wmsDumpOrder = item.Adapt<WmsDumpOrder>();
+                //鍒ゆ柇鏄惁瀛樺湪鐩稿悓鐨勫崟鎹彿
+                var isExcit = await _wmsDumpOrderRep.AnyAsync(x => x.NO == item.NO);
+                if (!isExcit)
+                {
+                    wmsDumpOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+                    wmsDumpOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+                    await _wmsDumpOrderRep.InsertNowAsync(wmsDumpOrder);
+                    foreach (var item1 in item.Dtls)
+                    {
+                        var wmsDumpOrderDeatail = item1.Adapt<WmsDumpOrderDetails>();
+                        wmsDumpOrderDeatail.OrderId = item.Id;
+                        await _wmsDumpOrderDetailsRep.InsertNowAsync(wmsDumpOrderDeatail);
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鎵ц杞偍鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("ExecuteDumpOrder")]
+        public async Task ExecuteDumpOrder([FromQuery] DumpPageDetailInput input)
+        {
+            var wmsOrders = await _wmsDumpOrderDetailsRep.DetachedEntities
+                                     .Where(input.Id != null, u => u.OrderId == input.Id)
+                                     .ProjectToType<DumpPageDetailOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+        }
+    
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈣浆鍌ㄥ崟鍒楄〃
+        /// </summary>
+        /// <param name="input">杞偍鍗曟煡璇㈠弬鏁�</param>
+        /// <returns>(杞偍鍗�)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<WmsDumpOrderOutput>> ListNonPageAsync([FromQuery] WmsDumpOrderSearchNonPage input)
+        {
+            var pNO = input.NO?.Trim() ?? "";
+            var pBilldate = input.Billdate;
+            var pCreator = input.Creator?.Trim() ?? "";
+            var pCompanyname = input.Companyname?.Trim() ?? "";
+            var pOrderStatus = input.OrderStatus;
+            var wmsDumpOrders = await _wmsDumpOrderRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pNO), u => EF.Functions.Like(u.NO, $"%{pNO}%")) 
+                .Where(pBilldate != null, u => u.Billdate == pBilldate)
+                .Where(!string.IsNullOrEmpty(pCreator), u => EF.Functions.Like(u.Creator, $"%{pCreator}%")) 
+                .Where(!string.IsNullOrEmpty(pCompanyname), u => EF.Functions.Like(u.Companyname, $"%{pCompanyname}%")) 
+                .Where(pOrderStatus != null, u => u.OrderStatus == pOrderStatus)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<WmsDumpOrderOutput>()
+            .ToListAsync();
+            return wmsDumpOrders;
+        }
+
+
+        /// <summary>
+        /// 澧炲姞杞偍鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddWmsDumpOrderInput input)
+        {
+            var wmsDumpOrder = input.Adapt<WmsDumpOrder>();
+            await _wmsDumpOrderRep.InsertAsync(wmsDumpOrder);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎杞偍鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWmsDumpOrderInput input)
+        {
+            var wmsDumpOrder = await _wmsDumpOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsDumpOrderRep.DeleteAsync(wmsDumpOrder);
+        }
+
+        /// <summary>
+        /// 鏇存柊杞偍鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWmsDumpOrderInput input)
+        {
+            var isExist = await _wmsDumpOrderRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsDumpOrder = input.Adapt<WmsDumpOrder>();
+            await _wmsDumpOrderRep.UpdateAsync(wmsDumpOrder,ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇杞偍鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WmsDumpOrderOutput> Get([FromQuery] QueryeWmsDumpOrderInput input)
+        {
+            return (await _wmsDumpOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsDumpOrderOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇杞偍鍗曞垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WmsDumpOrderOutput>> List([FromQuery] WmsDumpOrderInput input)
+        {
+            return await _wmsDumpOrderRep.DetachedEntities.ProjectToType<WmsDumpOrderOutput>().ToListAsync();
+        }    
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆杞偍鍗曞姛鑳�
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsDumpOrder", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++) 
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<WmsDumpOrderOutput> wmsDumpOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsDumpOrderOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = wmsDumpOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsDumpOrder>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsDumpOrder, WmsDumpOrderOutput>(selectKeys);
+            List<WmsDumpOrder> updates = new();
+            List<WmsDumpOrder> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var wmsDumpOrderExistSubList = _wmsDumpOrderRep.Where(filter).Select(selector).ToList();
+                    wmsDumpOrderExistSubList.ForEach(x => 
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+                foreach (var wmsDumpOrder in wmsDumpOrderList) 
+                {
+                    if (wmsDumpOrder.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsDumpOrder.Adapt<WmsDumpOrder>());
+                    }
+                    else 
+                    {
+                        adds.Add(wmsDumpOrder.Adapt<WmsDumpOrder>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsDumpOrderRep.Update(x));
+                
+
+                var maxId = _wmsDumpOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);    
+                Db.GetDbContext().Set<WmsDumpOrder>().AddRange(adds);  
+                Db.GetDbContext().SaveChanges();
+               
+            }
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇杞偍鍗曠殑Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsDumpOrder", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+        /// <summary>
+        /// 鏍规嵁杞偍鍗曟煡璇㈠弬鏁板鍑篍xcel
+        /// </summary>
+        /// <param name="input">杞偍鍗曟煡璇㈠弬鏁�</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] WmsDumpOrderSearchNonPage input)
+        {
+            var wmsDumpOrderList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(wmsDumpOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsDumpOrder", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderDto.cs
new file mode 100644
index 0000000..f495273
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderDto.cs
@@ -0,0 +1,77 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 閫�璐у崟杈撳嚭鍙傛暟
+    /// </summary>
+    public class WmsGoodsReturnOrderDto
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public string Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public string Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public string Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public string WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 閫�璐х姸鎬�
+        /// </summary>
+        public Admin.NET.Core.GoodsReturnStatus GoodsReturnStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderInput.cs
new file mode 100644
index 0000000..a11b19d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderInput.cs
@@ -0,0 +1,319 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 閫�璐у崟鏌ヨ鍙傛暟
+    /// </summary>
+    public class WmsGoodsReturnOrderSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long? OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long? OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long? SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public virtual DateTimeOffset? Billdate { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public virtual string Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public virtual string Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public virtual string Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public virtual string WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public virtual string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 閫�璐х姸鎬�
+        /// </summary>
+        public virtual Admin.NET.Core.GoodsReturnStatus? GoodsReturnStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 閫�璐у崟涓嶅垎椤垫煡璇㈠弬鏁�
+    /// </summary>
+    public class WmsGoodsReturnOrderSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long? OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long? OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long? SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string? NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public virtual DateTimeOffset? Billdate { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public virtual string? Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public virtual string? Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public virtual string? Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public virtual string? WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public virtual string? WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 閫�璐х姸鎬�
+        /// </summary>
+        public virtual Admin.NET.Core.GoodsReturnStatus? GoodsReturnStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 閫�璐у崟杈撳叆鍙傛暟
+    /// </summary>
+    public class WmsGoodsReturnOrderInput
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public virtual DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public virtual string Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public virtual string Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public virtual string Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public virtual string WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public virtual string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 閫�璐х姸鎬�
+        /// </summary>
+        public virtual Admin.NET.Core.GoodsReturnStatus GoodsReturnStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+    public class AddWmsGoodsReturnOrderInput : WmsGoodsReturnOrderInput
+    {
+    }
+
+    public class DeleteWmsGoodsReturnOrderInput : BaseId
+    {
+    }
+
+    public class UpdateWmsGoodsReturnOrderInput : WmsGoodsReturnOrderInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    public class QueryeWmsGoodsReturnOrderInput : BaseId
+    {
+
+    }
+
+    /// <summary>
+    /// 閫�璐у崟鑾峰彇鏄庣粏鍙傛暟
+    /// </summary>
+    public class GoodsReturnOrdePageDetailInput : PageInputBase
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long? Id { get; set; }
+    }
+
+    /// <summary>
+    /// 閫�璐т笅鏋剁粰yigo绯荤粺鐨勫弬鏁�
+    /// </summary>
+    public class ReturnGoodsReturnOrderInput
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long? Id { get; set; }
+
+        /// <summary>
+        /// YIGO绯荤粺id
+        /// </summary>
+        public long? SOID { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱閫氱煡鍗曞彿
+        /// </summary>
+        public string NO { get; set; }
+
+        /// <summary>
+        /// WMS閫�璐у崟鍙�
+        /// </summary>
+        public string WMSNO { get; set; }
+
+        /// <summary>
+        ///涓嬫灦鏃堕棿
+        /// </summary>
+        public DateTimeOffset? Billdate { get; set; }
+
+        /// <summary>
+        /// 閫�璐ц鎯�
+        /// </summary>
+        public List<ReturnGoodsReturnOrderInputDetail> Dtls { get; set; }
+    }
+
+    /// <summary>
+    /// 閫�璐т笅鏋剁粰yigo绯荤粺鐨勮鎯呭弬鏁�
+    /// </summary>
+    public class ReturnGoodsReturnOrderInputDetail
+    {
+        /// <summary>
+        /// OID  
+        /// </summary>
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 閲嶉噺    
+        /// </summary>
+        public decimal SumWeight { get; set; }
+
+        /// <summary>
+        /// 搴撳尯    
+        /// </summary>
+        public string DestStoreareacode { get; set; }
+
+        /// <summary>
+        /// 鍌ㄤ綅    
+        /// </summary>
+        public string DestLocationcode { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderOutput.cs
new file mode 100644
index 0000000..703954e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderOutput.cs
@@ -0,0 +1,233 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Admin.NET.Core;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 閫�璐у崟杈撳嚭鍙傛暟
+    /// </summary>
+    public class WmsGoodsReturnOrderOutput
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public string Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public string Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public string Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public string WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 閫�璐х姸鎬�
+        /// </summary>
+        public Admin.NET.Core.GoodsReturnStatus GoodsReturnStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+
+        /// <summary>
+        /// 瀵瑰簲YiGo绯荤粺
+        /// </summary>
+        public List<WmsGoodsReturnOrderDetailOutput> Dtls { get; set; }
+
+    }
+
+    /// <summary>
+    /// 閫�璐у崟璇︽儏杈撳嚭鍙傛暟
+    /// </summary>
+    public class WmsGoodsReturnOrderDetailOutput
+    {
+        /// <summary>
+        /// Id  
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        public decimal SingleLength { get; set; }
+
+        /// <summary>
+        /// 鐞嗚閲嶉噺    
+        /// </summary>
+        public decimal TheoreticalWeight { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�    
+        /// </summary>
+        public string Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 涓嶅惈绋庡崟浠�    
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 鎴愭湰閲戦    
+        /// </summary>
+        public decimal SumPrice { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鍚堝悓缂栧彿
+        /// </summary>
+        public string ContractCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        public string StoreRoomname { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        public string DeclarationCode { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍝佸悕
+        /// </summary>
+        public string TradeName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧椤瑰彿
+        /// </summary>
+        public string ItemNo { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍗曚綅
+        /// </summary>
+        public string CustomsUnitName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鏁伴噺   
+        /// </summary>
+        public decimal CustomsNum { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧閲戦 
+        /// </summary>
+        public decimal CustomsPrices { get; set; }
+
+        /// <summary>
+        /// 閫�璐х姸鎬�
+        /// </summary>
+        public ReceivingStatus ReceivingStatus { get; set; }
+    }
+
+    /// <summary>
+    /// yigo鑾峰彇閫�璐у崟杩斿洖鍙傛暟
+    /// </summary>
+    public class GetGoodsReturnOrderOutputByYiGo
+    {
+        public bool Status { get; set; }
+
+        public List<WmsGoodsReturnOrderOutput> Data { get; set; }
+
+        public string Result { get; set; }
+    }
+
+    /// <summary>
+    /// 閫�璐т笅鏋惰繑鍥炲弬鏁�
+    /// </summary>
+    public class ReturnGoodsReturnOrderOutput
+    {
+
+        /// <summary>
+        /// 缁撴灉鎻忚堪
+        /// </summary>
+        public string Result { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鐘舵��
+        /// </summary>
+        public bool Status { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/IWmsGoodsReturnOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/IWmsGoodsReturnOrderService.cs
new file mode 100644
index 0000000..cc87721
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/IWmsGoodsReturnOrderService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface IWmsGoodsReturnOrderService
+    {
+        Task Add(AddWmsGoodsReturnOrderInput input);
+        Task Delete(DeleteWmsGoodsReturnOrderInput input);
+        Task<WmsGoodsReturnOrderOutput> Get([FromQuery] QueryeWmsGoodsReturnOrderInput input);
+        Task<List<WmsGoodsReturnOrderOutput>> List([FromQuery] WmsGoodsReturnOrderInput input);
+        Task<PageResult<WmsGoodsReturnOrderOutput>> Page([FromQuery] WmsGoodsReturnOrderSearch input);
+        Task Update(UpdateWmsGoodsReturnOrderInput input);
+
+        Task<List<WmsGoodsReturnOrderOutput>> ListNonPageAsync([FromQuery] WmsGoodsReturnOrderSearchNonPage input);
+
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+        Task<IActionResult> DownloadExcelTemplate(string version);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Map/WmsGoodsReturnOrderMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Map/WmsGoodsReturnOrderMapper.cs
new file mode 100644
index 0000000..88ddf2b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Map/WmsGoodsReturnOrderMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class WmsGoodsReturnOrderMapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddWmsGoodsReturnOrderInput, WmsGoodsReturnOrder>()
+            ;
+            config.ForType<UpdateWmsGoodsReturnOrderInput, WmsGoodsReturnOrder>()
+            ;
+            config.ForType<WmsGoodsReturnOrder, WmsGoodsReturnOrderOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/WmsGoodsReturnOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/WmsGoodsReturnOrderService.cs
new file mode 100644
index 0000000..badd3ef
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/WmsGoodsReturnOrderService.cs
@@ -0,0 +1,364 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using Furion.RemoteRequest.Extensions;
+using Furion;
+using Serilog;
+using HttpMethod = System.Net.Http.HttpMethod;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 閫�璐у崟鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("閫�璐у崟", Name = "WmsGoodsReturnOrder", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsGoodsReturnOrderService : IWmsGoodsReturnOrderService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsGoodsReturnOrder,MasterDbContextLocator> _wmsGoodsReturnOrderRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+        private readonly IRepository<WmsGoodsReturnOrderDetails, MasterDbContextLocator> _wmsGoodsReturnOrderDetailsRep;
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+
+
+
+        public WmsGoodsReturnOrderService(
+            IRepository<WmsGoodsReturnOrder,MasterDbContextLocator> wmsGoodsReturnOrderRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+            , IRepository<WmsGoodsReturnOrderDetails, MasterDbContextLocator> wmsGoodsReturnOrderDetailsRep
+            , IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+
+        )
+        {
+            _wmsGoodsReturnOrderRep = wmsGoodsReturnOrderRep;
+         _sysDictTypeRep = sysDictTypeRep;
+         _sysDictDataRep = sysDictDataRep;
+         _sysExcelTemplateService = sysExcelTemplateService;
+            _wmsGoodsReturnOrderDetailsRep = wmsGoodsReturnOrderDetailsRep;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ閫�璐у崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsGoodsReturnOrderOutput>> Page([FromQuery] WmsGoodsReturnOrderSearch input)
+        {
+            var wmsGoodsReturnOrders = await _wmsGoodsReturnOrderRep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Vendorcode), u => EF.Functions.Like(u.Vendorcode, $"%{input.Vendorcode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Vendorname), u => EF.Functions.Like(u.Vendorname, $"%{input.Vendorname.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.WarehouseKeepername), u => EF.Functions.Like(u.WarehouseKeepername, $"%{input.WarehouseKeepername.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.WarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{input.WarehouseCentername.Trim()}%"))
+                                     .Where(input.GoodsReturnStatus != null, u => u.GoodsReturnStatus == input.GoodsReturnStatus)
+                                     .OrderBy(PageInputOrder.OrderBuilder<WmsGoodsReturnOrderSearch>(input))
+                                     .ProjectToType<WmsGoodsReturnOrderOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsGoodsReturnOrders;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曟嵁鏄庣粏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("PageDetail")]
+        public async Task<PageResult<WmsGoodsReturnOrderDetailOutput>> PageDetail([FromQuery] GoodsReturnOrdePageDetailInput input)
+        {
+            var wmsOrders = await _wmsGoodsReturnOrderDetailsRep.DetachedEntities
+                                     .Where(input.Id != null, u => u.OrderId == input.Id)
+                                     .ProjectToType<WmsGoodsReturnOrderDetailOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsOrders;
+        }
+
+        /// <summary>
+        /// 鑾峰彇閫�璐у崟(yigo绯荤粺)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("GetGoodsReturnOrder")]
+        public async Task GetGoodsReturnOrder()
+        {
+            //鑾峰彇閫�搴撳崟
+            string url = App.Configuration["YiGoWebApi:QueryBackNotice"];
+            var Billdate_S = DateTime.Now.AddDays(-15).ToString("yyyy-MM-dd");
+            var Billdate_E = DateTime.Now.AddDays(15).ToString("yyyy-MM-dd");
+            //鍐欐棩蹇楁枃浠�
+            //Log.Error($"[TransferContainerCode][ContainerCode:{input.ContainerCode}][url:{url}]");
+            var response = await url.SetHttpMethod(System.Net.Http.HttpMethod.Post)
+                                    .SetBody(new Dictionary<string, object> {
+                                            { "Billdate_S", Billdate_S },
+                                            { "Billdate_E", Billdate_E},
+                                    }, "application/json").PostAsStringAsync();
+            var Data = response.FromJson<GetGoodsReturnOrderOutputByYiGo>();
+            var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("閫�璐у嚭搴�"));
+            foreach (var item in Data.Data)
+            {
+                item.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                var wmsGoodsReturnOrder = item.Adapt<WmsGoodsReturnOrder>();
+                var isExcit = await _wmsGoodsReturnOrderRep.AnyAsync(x => x.NO == item.NO);
+                if (!isExcit)
+                {
+                    wmsGoodsReturnOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+                    wmsGoodsReturnOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+                    await _wmsGoodsReturnOrderRep.InsertNowAsync(wmsGoodsReturnOrder);
+                    foreach (var item1 in item.Dtls)
+                    {
+                        var WmsGoodsReturnOrderDetail = item1.Adapt<WmsGoodsReturnOrderDetails>();
+                        WmsGoodsReturnOrderDetail.OrderId = item.Id;
+                        await _wmsGoodsReturnOrderDetailsRep.InsertNowAsync(WmsGoodsReturnOrderDetail);
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 閫�璐т笅鏋舵帴鍙�(yigo绯荤粺)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("ReturnGoodsReturnOrder")]
+        [UnifyResult(typeof(object))]
+        [UnitOfWork]
+        public async Task<object> ReturnGoodsReturnOrder([FromBody] ReturnGoodsReturnOrderInput input)
+        {
+            try
+            {
+                //鍒涘缓鎸囧畾鍚嶇О鐨勮鍗曟搷浣�
+                string url = App.Configuration["YiGoWebApi:CreateTXRe211"];
+                //鑾峰彇涓诲崟鎹�
+                var wmsGoodsReturnOrderModal = await _wmsGoodsReturnOrderRep.FirstOrDefaultAsync(x => x.Id == input.Id);
+                if (wmsGoodsReturnOrderModal == null) throw Oops.Oh("鍗曟嵁淇℃伅涓嶅瓨鍦�!");
+                //鏀瑰彉涓诲崟鎹姸鎬�
+                // 鍐欐棩蹇楁枃浠�
+                Log.Error($"[InspectionDeclaration][鍗曟嵁鍙�:{wmsGoodsReturnOrderModal.NO}][url:{url}]");
+
+                var response = await url.SetHttpMethod(HttpMethod.Post)
+                                        .SetBody(input, "application/json")
+                                        .PostAsAsync<ReturnGoodsReturnOrderOutput>();
+                // 鍐欐棩蹇楁枃浠�
+                Log.Error($"[InspectionDeclaration][鍗曟嵁鍙�:{wmsGoodsReturnOrderModal.NO}][response:{response.ToJson()}]");
+
+                return XnRestfulResultProvider.RESTfulResult(response);
+            }
+            catch (Exception ex)
+            {
+                throw Oops.Oh(ex.Message);
+            }
+        }
+
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈤��璐у崟鍒楄〃
+        /// </summary>
+        /// <param name="input">閫�璐у崟鏌ヨ鍙傛暟</param>
+        /// <returns>(閫�璐у崟)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<WmsGoodsReturnOrderOutput>> ListNonPageAsync([FromQuery] WmsGoodsReturnOrderSearchNonPage input)
+        {
+            var pNO = input.NO?.Trim() ?? "";
+            var pVendorcode = input.Vendorcode?.Trim() ?? "";
+            var pVendorname = input.Vendorname?.Trim() ?? "";
+            var pCompanyname = input.Companyname?.Trim() ?? "";
+            var pWarehouseKeepername = input.WarehouseKeepername?.Trim() ?? "";
+            var pWarehouseCentername = input.WarehouseCentername?.Trim() ?? "";
+            var pGoodsReturnStatus = input.GoodsReturnStatus;
+            var wmsGoodsReturnOrders = await _wmsGoodsReturnOrderRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pNO), u => EF.Functions.Like(u.NO, $"%{pNO}%")) 
+                .Where(!string.IsNullOrEmpty(pVendorcode), u => EF.Functions.Like(u.Vendorcode, $"%{pVendorcode}%")) 
+                .Where(!string.IsNullOrEmpty(pVendorname), u => EF.Functions.Like(u.Vendorname, $"%{pVendorname}%")) 
+                .Where(!string.IsNullOrEmpty(pCompanyname), u => EF.Functions.Like(u.Companyname, $"%{pCompanyname}%")) 
+                .Where(!string.IsNullOrEmpty(pWarehouseKeepername), u => EF.Functions.Like(u.WarehouseKeepername, $"%{pWarehouseKeepername}%")) 
+                .Where(!string.IsNullOrEmpty(pWarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{pWarehouseCentername}%")) 
+                .Where(pGoodsReturnStatus != null, u => u.GoodsReturnStatus == pGoodsReturnStatus)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<WmsGoodsReturnOrderOutput>()
+            .ToListAsync();
+            return wmsGoodsReturnOrders;
+        }
+
+
+        /// <summary>
+        /// 澧炲姞閫�璐у崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddWmsGoodsReturnOrderInput input)
+        {
+            var wmsGoodsReturnOrder = input.Adapt<WmsGoodsReturnOrder>();
+            await _wmsGoodsReturnOrderRep.InsertAsync(wmsGoodsReturnOrder);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎閫�璐у崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWmsGoodsReturnOrderInput input)
+        {
+            var wmsGoodsReturnOrder = await _wmsGoodsReturnOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsGoodsReturnOrderRep.DeleteAsync(wmsGoodsReturnOrder);
+        }
+
+        /// <summary>
+        /// 鏇存柊閫�璐у崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWmsGoodsReturnOrderInput input)
+        {
+            var isExist = await _wmsGoodsReturnOrderRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsGoodsReturnOrder = input.Adapt<WmsGoodsReturnOrder>();
+            await _wmsGoodsReturnOrderRep.UpdateAsync(wmsGoodsReturnOrder,ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇閫�璐у崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WmsGoodsReturnOrderOutput> Get([FromQuery] QueryeWmsGoodsReturnOrderInput input)
+        {
+            return (await _wmsGoodsReturnOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsGoodsReturnOrderOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇閫�璐у崟鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WmsGoodsReturnOrderOutput>> List([FromQuery] WmsGoodsReturnOrderInput input)
+        {
+            return await _wmsGoodsReturnOrderRep.DetachedEntities.ProjectToType<WmsGoodsReturnOrderOutput>().ToListAsync();
+        }    
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆閫�璐у崟鍔熻兘
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsGoodsReturnOrder", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++) 
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<WmsGoodsReturnOrderOutput> wmsGoodsReturnOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsGoodsReturnOrderOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = wmsGoodsReturnOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsGoodsReturnOrder>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsGoodsReturnOrder, WmsGoodsReturnOrderOutput>(selectKeys);
+            List<WmsGoodsReturnOrder> updates = new();
+            List<WmsGoodsReturnOrder> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var wmsGoodsReturnOrderExistSubList = _wmsGoodsReturnOrderRep.Where(filter).Select(selector).ToList();
+                    wmsGoodsReturnOrderExistSubList.ForEach(x => 
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+                foreach (var wmsGoodsReturnOrder in wmsGoodsReturnOrderList) 
+                {
+                    if (wmsGoodsReturnOrder.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsGoodsReturnOrder.Adapt<WmsGoodsReturnOrder>());
+                    }
+                    else 
+                    {
+                        adds.Add(wmsGoodsReturnOrder.Adapt<WmsGoodsReturnOrder>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsGoodsReturnOrderRep.Update(x));
+                
+
+                var maxId = _wmsGoodsReturnOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);    
+                Db.GetDbContext().Set<WmsGoodsReturnOrder>().AddRange(adds);  
+                Db.GetDbContext().SaveChanges();
+               
+            }
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇閫�璐у崟鐨凟xcel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsGoodsReturnOrder", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+        /// <summary>
+        /// 鏍规嵁閫�璐у崟鏌ヨ鍙傛暟瀵煎嚭Excel
+        /// </summary>
+        /// <param name="input">閫�璐у崟鏌ヨ鍙傛暟</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] WmsGoodsReturnOrderSearchNonPage input)
+        {
+            var wmsGoodsReturnOrderList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(wmsGoodsReturnOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsGoodsReturnOrder", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderDto.cs
new file mode 100644
index 0000000..e3ae56f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderDto.cs
@@ -0,0 +1,119 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍗曟嵁琛ㄨ緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsOrderDto
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 閫佽揣閫氱煡鍗曞彿
+        /// </summary>
+        public string SourceBillNo { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public string Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public string Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public string Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public string WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 璐告槗鏂瑰紡
+        /// </summary>
+        public Admin.NET.Core.TradeMode TradeMode { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        public string StoreRoomname { get; set; }
+        
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        public string DeclarationCode { get; set; }
+        
+        /// <summary>
+        /// 涓撲笟
+        /// </summary>
+        public string Majorname { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remarks { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鑾峰彇鏄庣粏鍙傛暟
+    /// </summary>
+    public class PageDetailInput : PageInputBase
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long? Id { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderInput.cs
new file mode 100644
index 0000000..f1e0ce8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderInput.cs
@@ -0,0 +1,329 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 鍗曟嵁琛ㄦ煡璇㈠弬鏁�
+    /// </summary>
+    public class WmsOrderSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long? OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long? OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long? SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public virtual DateTimeOffset? Billdate { get; set; }
+        
+        /// <summary>
+        /// 閫佽揣閫氱煡鍗曞彿
+        /// </summary>
+        public virtual string SourceBillNo { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public virtual string Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public virtual string Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public virtual string Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public virtual string WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 璐告槗鏂瑰紡
+        /// </summary>
+        public virtual Admin.NET.Core.TradeMode? TradeMode { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public virtual string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        public virtual string StoreRoomname { get; set; }
+        
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        public virtual string DeclarationCode { get; set; }
+        
+        /// <summary>
+        /// 涓撲笟
+        /// </summary>
+        public virtual string Majorname { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public virtual string Remarks { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 鍗曟嵁琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+    /// </summary>
+    public class WmsOrderSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long? OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long? OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long? SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string? NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public virtual DateTimeOffset? Billdate { get; set; }
+        
+        /// <summary>
+        /// 閫佽揣閫氱煡鍗曞彿
+        /// </summary>
+        public virtual string? SourceBillNo { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public virtual string? Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public virtual string? Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public virtual string? Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public virtual string? WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 璐告槗鏂瑰紡
+        /// </summary>
+        public virtual Admin.NET.Core.TradeMode? TradeMode { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public virtual string? WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        public virtual string? StoreRoomname { get; set; }
+        
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        public virtual string? DeclarationCode { get; set; }
+        
+        /// <summary>
+        /// 涓撲笟
+        /// </summary>
+        public virtual string? Majorname { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public virtual string? Remarks { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鍗曟嵁琛ㄨ緭鍏ュ弬鏁�
+    /// </summary>
+    public class WmsOrderInput
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public virtual DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 閫佽揣閫氱煡鍗曞彿
+        /// </summary>
+        public virtual string SourceBillNo { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public virtual string Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public virtual string Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public virtual string Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public virtual string WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 璐告槗鏂瑰紡
+        /// </summary>
+        public virtual Admin.NET.Core.TradeMode TradeMode { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public virtual string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        public virtual string StoreRoomname { get; set; }
+        
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        public virtual string DeclarationCode { get; set; }
+        
+        /// <summary>
+        /// 涓撲笟
+        /// </summary>
+        public virtual string Majorname { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public virtual string Remarks { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+    public class AddWmsOrderInput : WmsOrderInput
+    {
+    }
+
+    public class DeleteWmsOrderInput : BaseId
+    {
+    }
+
+    public class UpdateWmsOrderInput : WmsOrderInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    public class QueryeWmsOrderInput : BaseId
+    {
+
+    }
+    public class DistributeInOrderInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public List<long> Id { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderOutput.cs
new file mode 100644
index 0000000..bc2a5e4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderOutput.cs
@@ -0,0 +1,224 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍗曟嵁琛ㄨ緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsOrderOutput
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 閫佽揣閫氱煡鍗曞彿
+        /// </summary>
+        public string SourceBillNo { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public string Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public string Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public string Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public string WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 璐告槗鏂瑰紡
+        /// </summary>
+        public Admin.NET.Core.TradeMode TradeMode { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        public string StoreRoomname { get; set; }
+        
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        public string DeclarationCode { get; set; }
+        
+        /// <summary>
+        /// 涓撲笟
+        /// </summary>
+        public string Majorname { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remarks { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鍗曟嵁琛ㄨ鎯呰緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsOrderDetailOutput
+    {
+        /// <summary>
+        /// Id  
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        public decimal SingleLength { get; set; }
+
+        /// <summary>
+        /// 鐞嗚閲嶉噺    
+        /// </summary>
+        public decimal TheoreticalWeight { get; set; }
+
+        /// <summary>
+        /// 涓嶅惈绋庡崟浠�    
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 鎴愭湰閲戦    
+        /// </summary>
+        public decimal SumPrice { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鍚堝悓缂栧彿
+        /// </summary>
+        public string ContractCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍝佸悕
+        /// </summary>
+        public string TradeName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧椤瑰彿
+        /// </summary>
+        public string ItemNo { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍗曚綅
+        /// </summary>
+        public string CustomsUnitName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鏁伴噺   
+        /// </summary>
+        public decimal CustomsNum { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧閲戦 
+        /// </summary>
+        public decimal CustomsPrices { get; set; }
+
+        /// <summary>
+        /// 鐗规畩瑕佹眰
+        /// </summary>
+        public string SpecialNeeds { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public OrderDetailsStatusEnum OrderStatus { get; set; }
+
+        /// <summary>
+        /// 妫�楠岀粨鏋�
+        /// </summary>
+        public InspectionResultsEnum InspectionResults { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/IWmsOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/IWmsOrderService.cs
new file mode 100644
index 0000000..d785b58
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/IWmsOrderService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface IWmsOrderService
+    {
+        Task Add(AddWmsOrderInput input);
+        Task Delete(DeleteWmsOrderInput input);
+        Task<WmsOrderOutput> Get([FromQuery] QueryeWmsOrderInput input);
+        Task<List<WmsOrderOutput>> List([FromQuery] WmsOrderInput input);
+        Task<PageResult<WmsOrderOutput>> Page([FromQuery] WmsOrderSearch input);
+        Task Update(UpdateWmsOrderInput input);
+
+        Task<List<WmsOrderOutput>> ListNonPageAsync([FromQuery] WmsOrderSearchNonPage input);
+
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+        Task<IActionResult> DownloadExcelTemplate(string version);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Map/WmsOrderMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Map/WmsOrderMapper.cs
new file mode 100644
index 0000000..e81c3ca
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Map/WmsOrderMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class WmsOrderMapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddWmsOrderInput, WmsOrder>()
+            ;
+            config.ForType<UpdateWmsOrderInput, WmsOrder>()
+            ;
+            config.ForType<WmsOrder, WmsOrderOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/WmsOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/WmsOrderService.cs
new file mode 100644
index 0000000..17111c9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/WmsOrderService.cs
@@ -0,0 +1,328 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍏ュ簱閫氱煡鍗曟湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings("鍏ュ簱閫氱煡鍗�", Name = "WmsOrder", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsOrderService : IWmsOrderService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsOrder,MasterDbContextLocator> _wmsOrderRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+
+        public WmsOrderService(
+            IRepository<WmsOrder,MasterDbContextLocator> wmsOrderRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+            ,IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+            ,IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep
+            ,IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep
+        )
+        {
+            _wmsOrderRep = wmsOrderRep;
+            _sysDictTypeRep = sysDictTypeRep;
+            _sysDictDataRep = sysDictDataRep;
+            _sysExcelTemplateService = sysExcelTemplateService;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+            _wmsOrderDetailsRep = wmsOrderDetailsRep;
+            _wmsPlaceRep = wmsPlaceRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鍗曟嵁琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsOrderOutput>> Page([FromQuery] WmsOrderSearch input)
+        {
+            var wmsOrders = await _wmsOrderRep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.SourceBillNo), u => EF.Functions.Like(u.SourceBillNo, $"%{input.SourceBillNo.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Vendorcode), u => EF.Functions.Like(u.Vendorcode, $"%{input.Vendorcode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Vendorname), u => EF.Functions.Like(u.Vendorname, $"%{input.Vendorname.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.WarehouseKeepername), u => EF.Functions.Like(u.WarehouseKeepername, $"%{input.WarehouseKeepername.Trim()}%"))
+                                     .Where(input.TradeMode != null, u => u.TradeMode == input.TradeMode)
+                                     .Where(!string.IsNullOrEmpty(input.WarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{input.WarehouseCentername.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.StoreRoomname), u => EF.Functions.Like(u.StoreRoomname, $"%{input.StoreRoomname.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.DeclarationCode), u => EF.Functions.Like(u.DeclarationCode, $"%{input.DeclarationCode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Majorname), u => EF.Functions.Like(u.Majorname, $"%{input.Majorname.Trim()}%"))
+                                     .OrderBy(PageInputOrder.OrderBuilder<WmsOrderSearch>(input))
+                                     .ProjectToType<WmsOrderOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsOrders;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曟嵁鏄庣粏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("PageDetail")]
+        public async Task<PageResult<WmsOrderDetailOutput>> PageDetail([FromQuery] PageDetailInput input)
+        {
+            var wmsOrders = await _wmsOrderDetailsRep.DetachedEntities
+                                     .Where(input.Id != null, u => u.OrderId == input.Id)
+                                     .ProjectToType<WmsOrderDetailOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsOrders;
+        }
+
+        /// <summary>
+        /// 鎵归噺涓嬪彂鍏ュ簱鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("DistributeInOrder")]
+        [UnitOfWork]
+        public async Task DistributeInOrder(DistributeInOrderInput input)
+        {
+            // 鏌ヨ鎵�鏈夊崟鎹姸鎬佷负鈥滄挙鍥炩�濇垨鑰呪�滄湭涓嬪彂鈥濈殑淇℃伅
+            var wmsOrderList = await _wmsOrderRep.DetachedEntities.Where(u => input.Id.Contains(u.Id)
+            && (u.OrderStatus == OrderStatusEnum.CHEHUI || u.OrderStatus == OrderStatusEnum.WEIXIAFA)).ProjectToType<WmsOrder>().ToListAsync();
+            if (wmsOrderList.Count <= 0) throw Oops.Oh(errorMessage: "鏃犱笅鍙戝伐鍗曪紒");
+            //鍥犱负涓嶇煡閬撲笅鍙戝崟鎹椂锛屼竴涓墭鐩樻斁鍑犱釜鏄庣粏锛屾墍浠ユ棤娉曞垽鏂簱浣嶆槸鍚︿笉瓒筹紝鍦ㄥ叆搴撴彁浜ゆ椂鍒ゆ柇
+            lock (_lock)
+            {
+                // 淇敼鍗曟嵁鐘舵��
+                foreach (var order in wmsOrderList)
+                {
+                    // 鏇存柊鍗曟嵁鐘舵�佷负鈥滃凡涓嬪彂鈥�
+                    order.OrderStatus = OrderStatusEnum.YIXIAFA;
+                    _wmsOrderRep.UpdateAsync(order);
+                }
+            }
+        }
+
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈠崟鎹〃鍒楄〃
+        /// </summary>
+        /// <param name="input">鍗曟嵁琛ㄦ煡璇㈠弬鏁�</param>
+        /// <returns>(鍗曟嵁琛�)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<WmsOrderOutput>> ListNonPageAsync([FromQuery] WmsOrderSearchNonPage input)
+        {
+            var pNO = input.NO?.Trim() ?? "";
+            var pSourceBillNo = input.SourceBillNo?.Trim() ?? "";
+            var pVendorcode = input.Vendorcode?.Trim() ?? "";
+            var pVendorname = input.Vendorname?.Trim() ?? "";
+            var pCompanyname = input.Companyname?.Trim() ?? "";
+            var pWarehouseKeepername = input.WarehouseKeepername?.Trim() ?? "";
+            var pTradeMode = input.TradeMode;
+            var pWarehouseCentername = input.WarehouseCentername?.Trim() ?? "";
+            var pStoreRoomname = input.StoreRoomname?.Trim() ?? "";
+            var pDeclarationCode = input.DeclarationCode?.Trim() ?? "";
+            var pMajorname = input.Majorname?.Trim() ?? "";
+            var wmsOrders = await _wmsOrderRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pNO), u => EF.Functions.Like(u.NO, $"%{pNO}%")) 
+                .Where(!string.IsNullOrEmpty(pSourceBillNo), u => EF.Functions.Like(u.SourceBillNo, $"%{pSourceBillNo}%")) 
+                .Where(!string.IsNullOrEmpty(pVendorcode), u => EF.Functions.Like(u.Vendorcode, $"%{pVendorcode}%")) 
+                .Where(!string.IsNullOrEmpty(pVendorname), u => EF.Functions.Like(u.Vendorname, $"%{pVendorname}%")) 
+                .Where(!string.IsNullOrEmpty(pCompanyname), u => EF.Functions.Like(u.Companyname, $"%{pCompanyname}%")) 
+                .Where(!string.IsNullOrEmpty(pWarehouseKeepername), u => EF.Functions.Like(u.WarehouseKeepername, $"%{pWarehouseKeepername}%")) 
+                .Where(pTradeMode != null, u => u.TradeMode == pTradeMode)
+                .Where(!string.IsNullOrEmpty(pWarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{pWarehouseCentername}%")) 
+                .Where(!string.IsNullOrEmpty(pStoreRoomname), u => EF.Functions.Like(u.StoreRoomname, $"%{pStoreRoomname}%")) 
+                .Where(!string.IsNullOrEmpty(pDeclarationCode), u => EF.Functions.Like(u.DeclarationCode, $"%{pDeclarationCode}%")) 
+                .Where(!string.IsNullOrEmpty(pMajorname), u => EF.Functions.Like(u.Majorname, $"%{pMajorname}%")) 
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<WmsOrderOutput>()
+            .ToListAsync();
+            return wmsOrders;
+        }
+
+
+        /// <summary>
+        /// 澧炲姞鍗曟嵁琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddWmsOrderInput input)
+        {
+            // 鏌ヨ鍗曟嵁灏忕被鏄�滅敓浜у叆搴撯�濈殑Id
+            var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("鐢熶骇鍏ュ簱"));
+            var wmsOrder = input.Adapt<WmsOrder>();
+            wmsOrder.SOID = 66666;
+            wmsOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+            wmsOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+            wmsOrder.OrderStatus = OrderStatusEnum.WEIXIAFA;
+            await _wmsOrderRep.InsertAsync(wmsOrder);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鍗曟嵁琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWmsOrderInput input)
+        {
+            var wmsOrder = await _wmsOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsOrderRep.DeleteAsync(wmsOrder);
+        }
+
+        /// <summary>
+        /// 鏇存柊鍗曟嵁琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWmsOrderInput input)
+        {
+            var isExist = await _wmsOrderRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsOrder = input.Adapt<WmsOrder>();
+            await _wmsOrderRep.UpdateAsync(wmsOrder,ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曟嵁琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WmsOrderOutput> Get([FromQuery] QueryeWmsOrderInput input)
+        {
+            return (await _wmsOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsOrderOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曟嵁琛ㄥ垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WmsOrderOutput>> List([FromQuery] WmsOrderInput input)
+        {
+            return await _wmsOrderRep.DetachedEntities.ProjectToType<WmsOrderOutput>().ToListAsync();
+        }    
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆鍗曟嵁琛ㄥ姛鑳�
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsOrder", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++) 
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<WmsOrderOutput> wmsOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsOrderOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = wmsOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsOrder>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsOrder, WmsOrderOutput>(selectKeys);
+            List<WmsOrder> updates = new();
+            List<WmsOrder> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var wmsOrderExistSubList = _wmsOrderRep.Where(filter).Select(selector).ToList();
+                    wmsOrderExistSubList.ForEach(x => 
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+                foreach (var wmsOrder in wmsOrderList) 
+                {
+                    if (wmsOrder.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsOrder.Adapt<WmsOrder>());
+                    }
+                    else 
+                    {
+                        adds.Add(wmsOrder.Adapt<WmsOrder>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsOrderRep.Update(x));
+                
+
+                var maxId = _wmsOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);    
+                Db.GetDbContext().Set<WmsOrder>().AddRange(adds);  
+                Db.GetDbContext().SaveChanges();
+               
+            }
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇鍗曟嵁琛ㄧ殑Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsOrder", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+        /// <summary>
+        /// 鏍规嵁鍗曟嵁琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+        /// </summary>
+        /// <param name="input">鍗曟嵁琛ㄦ煡璇㈠弬鏁�</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] WmsOrderSearchNonPage input)
+        {
+            var wmsOrderList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(wmsOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsOrder", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderInput.cs
new file mode 100644
index 0000000..e466357
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderInput.cs
@@ -0,0 +1,93 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{    
+   
+
+    /// <summary>
+    /// 鎶ユ浼犻�掔粰yigo绯荤粺鐨勮鎯呭弬鏁�
+    /// </summary>
+    public class InspectionDeclarationDetail
+    {
+        /// <summary>
+        /// OID  
+        /// </summary>
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 閲嶉噺    
+        /// </summary>
+        public decimal SumWeight { get; set; }
+
+    }
+
+    /// <summary>
+    /// 鎶ユ浼犻�掔粰yigo绯荤粺鐨勫弬鏁�
+    /// </summary>
+    public class InspectionDeclarationYiGo
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long? Id { get; set; }
+
+        /// <summary>
+        /// YIGO绯荤粺id
+        /// </summary>
+        public virtual long? SOID { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱閫氱煡鍗曞彿
+        /// </summary>
+        public virtual string NO { get; set; }
+
+        /// <summary>
+        /// WMS鏀惰揣鍗曞彿
+        /// </summary>
+        public virtual string WMSNO { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鏃堕棿
+        /// </summary>
+        public virtual string Billdate { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣璇︽儏
+        /// </summary>
+        public ICollection<InspectionDeclarationDetail> Dtls { get; set; }
+    }
+
+    /// <summary>
+    /// 鑾峰彇鎶ユ缁撴灉鍙傛暟
+    /// </summary>
+    public class GetInspectionResultInput
+    {
+        /// <summary>
+        /// 缂栧彿
+        /// </summary>
+        public string NO { get; set; }
+
+        /// <summary>
+        /// SOID  
+        /// </summary>
+        public long SOID { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderOutput.cs
new file mode 100644
index 0000000..c1e0473
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderOutput.cs
@@ -0,0 +1,231 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{    
+    /// <summary>
+    /// 鎶ユ杩斿洖鍙傛暟
+    /// </summary>
+    public class InspectionDeclarationOutput
+    {
+       
+        /// <summary>
+        /// 缁撴灉鎻忚堪
+        /// </summary>
+        public string Result { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鐘舵��
+        /// </summary>
+        public bool Status { get; set; }
+    }
+
+    /// <summary>
+    /// 鑾峰彇鎶ユ缁撴灉杩斿洖鍙傛暟
+    /// </summary>
+    public class GetInspectionResultOutput
+    {
+
+        /// <summary>
+        /// 缁撴灉鎻忚堪
+        /// </summary>
+        public string Result { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鐘舵��
+        /// </summary>
+        public bool Status { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁
+        /// </summary>
+        public GetInspectionResultOutputData Data { get; set; }
+
+    }
+
+    /// <summary>
+    /// 鑾峰彇鎶ユ缁撴灉杩斿洖鏁版嵁
+    /// </summary>
+    public class GetInspectionResultOutputData
+    {
+
+        /// <summary>
+        /// SOID
+        /// </summary>
+        public long SOID { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鍗曞彿
+        /// </summary>
+        public string ON { get; set; }
+
+        /// <summary>
+        /// 璐ㄦ鏃ユ湡
+        /// </summary>
+        public DateTimeOffset Billdate { get; set; }
+
+        /// <summary>
+        /// 璐ㄦ鍗曞彿
+        /// </summary>
+        public string QCNO { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public string Vendorcode { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public string Vendorname { get; set; }
+
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public string Companyname { get; set; }
+
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public string WarehouseKeepername { get; set; }
+
+        /// <summary>
+        /// 璐告槗鏂瑰紡
+        /// </summary>
+        public TradeMode TradeMode { get; set; }
+
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public string WarehouseCentername { get; set; }
+
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        public string StoreRoomname { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        public string DeclarationCode { get; set; }
+
+        /// <summary>
+        /// 涓撲笟
+        /// </summary>
+        public string Majorname { get; set; }
+
+        /// <summary>
+        /// 璇︽儏
+        /// </summary>
+        public List<GetInspectionResultOutputDataDetail> Dtls { get; set; }
+    }
+
+    /// <summary>
+    /// 鑾峰彇鎶ユ缁撴灉杩斿洖鏁版嵁璇︽儏
+    /// </summary>
+    public class GetInspectionResultOutputDataDetail
+    {
+
+        /// <summary>
+        /// OID
+        /// </summary>
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 璐ㄦ鐘舵��
+        /// </summary>
+        public string FATQuality { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅
+        /// </summary>
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害
+        /// </summary>
+        public decimal SingleLength { get; set; }
+
+        /// <summary>
+        /// 鐞嗚閲嶉噺
+        /// </summary>
+        public decimal TheoreticalWeight { get; set; }
+
+        /// <summary>
+        /// 涓嶅惈绋庡崟浠�
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 鎴愭湰閲戦
+        /// </summary>
+        public decimal SumPrice { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栫爜
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鍚堝悓缂栫爜
+        /// </summary>
+        public string ContractCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍝佸悕
+        /// </summary>
+        public string TradeName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧椤瑰彿
+        /// </summary>
+        public string ItemNo { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍗曚綅
+        /// </summary>
+        public string CustomsUnitName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鏁伴噺
+        /// </summary>
+        public decimal CustomsNum { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧閲戦
+        /// </summary>
+        public decimal CustomsPrices { get; set; }
+
+        /// <summary>
+        /// 鐗规畩瑕佹眰
+        /// </summary>
+        public string SpecialNeeds { get; set; }
+
+        /// <summary>
+        /// 渚涘簲閾炬壒娆″彿
+        /// </summary>
+        public string BatchNO_SCM { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/IWmsInspectOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/IWmsInspectOrderService.cs
new file mode 100644
index 0000000..87054b8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/IWmsInspectOrderService.cs
@@ -0,0 +1,13 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface IWmsInspectOrderService
+    {
+        
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/WmsInspectOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/WmsInspectOrderService.cs
new file mode 100644
index 0000000..5bbe480
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/WmsInspectOrderService.cs
@@ -0,0 +1,173 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using Furion.RemoteRequest.Extensions;
+using Microsoft.AspNetCore.Authorization;
+using Serilog;
+using HttpMethod = System.Net.Http.HttpMethod;
+using Furion;
+using NetTopologySuite.Algorithm.Locate;
+using Furion.DataValidation;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鎶ユ鍗�
+    /// </summary>
+    [ApiDescriptionSettings("鎶ユ鍗�", Name = "WmsInspectOrder", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsInspectOrderService : IWmsInspectOrderService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsOrder,MasterDbContextLocator> _wmsOrderRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsReceiptOrder, MasterDbContextLocator> _wmsReceiptOrderRep;
+
+        public WmsInspectOrderService(
+            IRepository<WmsOrder,MasterDbContextLocator> wmsOrderRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+            ,IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+            ,IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep
+            ,IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep
+            ,IRepository<WmsReceiptOrder, MasterDbContextLocator> wmsReceiptOrderRe
+        )
+        {
+            _wmsOrderRep = wmsOrderRep;
+            _sysDictTypeRep = sysDictTypeRep;
+            _sysDictDataRep = sysDictDataRep;
+            _sysExcelTemplateService = sysExcelTemplateService;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+            _wmsOrderDetailsRep = wmsOrderDetailsRep;
+            _wmsPlaceRep = wmsPlaceRep;
+            _wmsReceiptOrderRep = wmsReceiptOrderRe;
+        }
+
+        /// <summary>
+        /// 鎶ユ涓婁紶
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("InspectionDeclaration")]
+        [AllowAnonymous]
+        [UnifyResult(typeof(object))]
+        public async Task<object> InspectionDeclaration([FromBody] InspectionDeclarationYiGo input)
+        {
+            try
+            {
+                
+                //鍒涘缓鎸囧畾鍚嶇О鐨勮鍗曟搷浣�
+                string url = App.Configuration["YiGoWebApi:Qcnotice"];
+                
+                //input.Billdate =Convert.ToDateTime(input.Billdate.ToString("yyy-MM-dd"));
+                //鑾峰彇涓诲崟鎹�
+                //var wmsReceiptOrderModal = await _wmsReceiptOrderRep.FirstOrDefaultAsync(x => x.Id == input.Id);
+                //if (wmsReceiptOrderModal == null) throw Oops.Oh("鍗曟嵁淇℃伅涓嶅瓨鍦�!");
+                input.WMSNO = "505005063098437";
+                input.Billdate = DateTime.Now.ToString("yyyy-MM-dd");
+                // 鍐欐棩蹇楁枃浠�
+                //Log.Error($"[InspectionDeclaration][鍗曟嵁鍙�:{wmsReceiptOrderModal.NO}][url:{url}]");
+
+                var response = await url.SetHttpMethod(HttpMethod.Post)
+                                        .SetBody(input, "application/json")
+                                        .PostAsAsync<InspectionDeclarationOutput>();
+                // 鍐欐棩蹇楁枃浠�
+                //Log.Error($"[InspectionDeclaration][鍗曟嵁鍙�:{wmsReceiptOrderModal.NO}][response:{response.ToJson()}]");
+
+                return XnRestfulResultProvider.RESTfulResult(response);
+            }
+            catch (Exception ex)
+            {
+                throw Oops.Oh(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎶ユ缁撴灉
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("GetInspectionResult")]
+        [AllowAnonymous]
+        [UnifyResult(typeof(object))]
+        [UnitOfWork]
+        public async Task<object> GetInspectionResult([FromBody] GetInspectionResultInput input)
+        {
+            try
+            {
+                //鍒涘缓鎸囧畾鍚嶇О鐨勮鍗曟搷浣�
+                string url = App.Configuration["YiGoWebApi:QueryRQC"];
+                // 鍐欐棩蹇楁枃浠�
+                Log.Error($"[InspectionDeclaration][鍗曟嵁鍙�:{input.NO}][url:{url}]");
+
+                var response = await url.SetHttpMethod(HttpMethod.Post)
+                                        .SetBody(input, "application/json")
+                                        .PostAsAsync<GetInspectionResultOutput>();
+                // 鍐欐棩蹇楁枃浠�
+                Log.Error($"[InspectionDeclaration][鍗曟嵁鍙�:{input.NO}][response:{response.ToJson()}]");
+
+                //鑾峰彇缁撴灉鍚庯紝鍚堟牸鐢熸垚鍏ュ簱鍗曪紝娴嬭瘯闃舵鏀惰揣鍗冲彲鐢熸垚鍏ュ簱鍗�
+                return XnRestfulResultProvider.RESTfulResult();
+            }
+            catch (Exception ex)
+            {
+                throw Oops.Oh(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鍏ュ簱閫氱煡鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsOrderOutput>> Page([FromQuery] WmsOrderSearch input)
+        {
+            var wmsOrders = await _wmsOrderRep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.SourceBillNo), u => EF.Functions.Like(u.SourceBillNo, $"%{input.SourceBillNo.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Vendorcode), u => EF.Functions.Like(u.Vendorcode, $"%{input.Vendorcode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Vendorname), u => EF.Functions.Like(u.Vendorname, $"%{input.Vendorname.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.WarehouseKeepername), u => EF.Functions.Like(u.WarehouseKeepername, $"%{input.WarehouseKeepername.Trim()}%"))
+                                     .Where(input.TradeMode != null, u => u.TradeMode == input.TradeMode)
+                                     .Where(!string.IsNullOrEmpty(input.WarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{input.WarehouseCentername.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.StoreRoomname), u => EF.Functions.Like(u.StoreRoomname, $"%{input.StoreRoomname.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.DeclarationCode), u => EF.Functions.Like(u.DeclarationCode, $"%{input.DeclarationCode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Majorname), u => EF.Functions.Like(u.Majorname, $"%{input.Majorname.Trim()}%"))
+                                     .OrderBy(PageInputOrder.OrderBuilder<WmsOrderSearch>(input))
+                                     .ProjectToType<WmsOrderOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsOrders;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曟嵁鏄庣粏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("PageDetail")]
+        public async Task<PageResult<WmsOrderDetailOutput>> PageDetail([FromQuery] PageDetailInput input)
+        {
+            var wmsOrders = await _wmsOrderDetailsRep.DetachedEntities
+                                     .Where(input.Id != null, u => u.OrderId == input.Id)
+                                     .ProjectToType<WmsOrderDetailOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsOrders;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/TextFile1.txt b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/TextFile1.txt
new file mode 100644
index 0000000..526f8ff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/TextFile1.txt
@@ -0,0 +1 @@
+锘縶"Status":true,"Data":[{"NO":"ZG-IN2024011087","TradeMode":1,"Vendorcode":"913206116744352385","StoreRoomname":"浼熸湰浠撻棿","Companyname":"鎷涘晢灞�閲嶅伐锛堟睙鑻忥級鏈夐檺鍏徃","SOID":435787750,"SourceBillNo":"SHTZ202401160001","Vendorname":"鍗楅�氬垱浼熻埞鑸堕厤浠舵湁闄愬叕鍙�","WarehouseCentername":"浼熸湰WMS","Dtls":[{"tradename":"","CustomsUnitName":"","TheoreticalWeight":0.000,"SumPrice":238.94,"SingleLength":0.000,"OID":435787751,"Materialcode":"10624028","Unit":"EA","Materialname":"FPSO绠″す\\S1鍨� 閫傜敤绠″緞:桅114.3 鏉愯川:45# 琛ㄩ潰澶勭悊:鐑蹈閿� 鍘傚鏍囧噯","TACode":"CMHI-287P00000P00402M","SpecialNeeds":"","ContractCode":"CMHI-287缁煎悎鍚堝悓","Price":79.646018,"Qty":3.000000,"ItemNo":0,"ProjectCode":"00.120199.CMHI-287","CustomsNum":0.00,"CustomsPrices":0.00},{"tradename":"","CustomsUnitName":"","TheoreticalWeight":0.000,"SumPrice":146.90,"SingleLength":0.000,"OID":435787752,"Materialcode":"10564701","Unit":"EA","Materialname":"FPSO绠″す\\S3-B鍨� 閫傜敤绠″緞:桅114.3 鏉愯川:AH36 琛ㄩ潰澶勭悊:鐑蹈閿� 鍘傚鏍囧噯","TACode":"CMHI-287P00000P00402M","SpecialNeeds":"","ContractCode":"CMHI-287缁煎悎鍚堝悓","Price":146.902655,"Qty":1.000000,"ItemNo":0,"ProjectCode":"00.120199.CMHI-287","CustomsNum":0.00,"CustomsPrices":0.00}],"DeclarationCode":"","Majorname":"浼熸湰娴嬭瘯涓撲笟","Billdate":"2024-01-16","WarehouseKeepername":"闄嗘槬涓�"}],"Result":"鎴愬姛"}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderDto.cs
new file mode 100644
index 0000000..c3d95e7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderDto.cs
@@ -0,0 +1,107 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏀惰揣鍗曡緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsReceiptOrderDto
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 閫佽揣閫氱煡鍗曞彿
+        /// </summary>
+        public string SourceBillNo { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public string Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public string Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public string Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public string WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 璐告槗鏂瑰紡
+        /// </summary>
+        public Admin.NET.Core.TradeMode TradeMode { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        public string StoreRoomname { get; set; }
+        
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        public string DeclarationCode { get; set; }
+        
+        /// <summary>
+        /// 涓撲笟
+        /// </summary>
+        public string Majorname { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remarks { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderInput.cs
new file mode 100644
index 0000000..71c8074
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderInput.cs
@@ -0,0 +1,346 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 鏀惰揣鍗曟煡璇㈠弬鏁�
+    /// </summary>
+    public class WmsReceiptOrderSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long? OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long? OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long? SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public virtual DateTimeOffset? Billdate { get; set; }
+        
+        /// <summary>
+        /// 閫佽揣閫氱煡鍗曞彿
+        /// </summary>
+        public virtual string SourceBillNo { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public virtual string Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public virtual string Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public virtual string Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public virtual string WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 璐告槗鏂瑰紡
+        /// </summary>
+        public virtual Admin.NET.Core.TradeMode? TradeMode { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public virtual string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        public virtual string StoreRoomname { get; set; }
+        
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        public virtual string DeclarationCode { get; set; }
+        
+        /// <summary>
+        /// 涓撲笟
+        /// </summary>
+        public virtual string Majorname { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public virtual string Remarks { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 鏀惰揣鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+    /// </summary>
+    public class WmsReceiptOrderSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long? OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long? OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long? SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string? NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public virtual DateTimeOffset? Billdate { get; set; }
+        
+        /// <summary>
+        /// 閫佽揣閫氱煡鍗曞彿
+        /// </summary>
+        public virtual string? SourceBillNo { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public virtual string? Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public virtual string? Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public virtual string? Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public virtual string? WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 璐告槗鏂瑰紡
+        /// </summary>
+        public virtual Admin.NET.Core.TradeMode? TradeMode { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public virtual string? WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        public virtual string? StoreRoomname { get; set; }
+        
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        public virtual string? DeclarationCode { get; set; }
+        
+        /// <summary>
+        /// 涓撲笟
+        /// </summary>
+        public virtual string? Majorname { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public virtual string? Remarks { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鏀惰揣鍗曡緭鍏ュ弬鏁�
+    /// </summary>
+    public class WmsReceiptOrderInput
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public virtual DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 閫佽揣閫氱煡鍗曞彿
+        /// </summary>
+        public virtual string SourceBillNo { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public virtual string Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public virtual string Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public virtual string Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public virtual string WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 璐告槗鏂瑰紡
+        /// </summary>
+        public virtual Admin.NET.Core.TradeMode TradeMode { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public virtual string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        public virtual string StoreRoomname { get; set; }
+        
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        public virtual string DeclarationCode { get; set; }
+        
+        /// <summary>
+        /// 涓撲笟
+        /// </summary>
+        public virtual string Majorname { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public virtual string Remarks { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+
+    public class AddWmsReceiptOrderInput : WmsReceiptOrderInput
+    {
+    }
+
+    public class DeleteWmsReceiptOrderInput : BaseId
+    {
+    }
+
+    public class UpdateWmsReceiptOrderInput : WmsReceiptOrderInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    public class QueryeWmsReceiptOrderInput : BaseId
+    {
+
+    }
+
+    /// <summary>
+    /// 鏀惰揣鍗曡幏鍙栨槑缁嗗弬鏁�
+    /// </summary>
+    public class ReceiptageDetailInput : PageInputBase
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long? Id { get; set; }
+    }
+    public class PcConfirmReceiptInput
+    {
+        /// <summary>
+        /// 鍗曟嵁缂栧彿  
+        /// </summary>
+        public string NO { get; set; }
+
+        /// <summary>
+        /// 璇︽儏鍙傛暟  
+        /// </summary>
+        public List<WmsReceiptOrderDetailOutput> GetOrderDetailOutputList { get; set; }
+    }
+    
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderOutput.cs
new file mode 100644
index 0000000..aa0215f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderOutput.cs
@@ -0,0 +1,278 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Admin.NET.Core;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using SixLabors.ImageSharp;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏀惰揣鍗曡緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsReceiptOrderOutput
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string NO { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡
+        /// </summary>
+        public DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 閫佽揣閫氱煡鍗曞彿
+        /// </summary>
+        public string SourceBillNo { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public string Vendorcode { get; set; }
+        
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�
+        /// </summary>
+        public string Vendorname { get; set; }
+        
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        public string Companyname { get; set; }
+        
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        public string WarehouseKeepername { get; set; }
+        
+        /// <summary>
+        /// 璐告槗鏂瑰紡
+        /// </summary>
+        public Admin.NET.Core.TradeMode TradeMode { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        public string StoreRoomname { get; set; }
+        
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        public string DeclarationCode { get; set; }
+        
+        /// <summary>
+        /// 涓撲笟
+        /// </summary>
+        public string Majorname { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remarks { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+
+        /// <summary>
+        /// 瀵瑰簲YiGo绯荤粺
+        /// </summary>
+        public List<WmsReceiptOrderDetailOutput> Dtls { get; set; }
+
+        /// <summary>
+        /// 閫�璐х姸鎬�
+        /// </summary>
+        public ReceivingStatus ReceivingStatus { get; set; }
+
+        /// <summary>
+        /// 鎶ユ鐘舵��
+        /// </summary>
+        public InspectionStatus InspectionStatus { get; set; }
+    }
+
+
+    /// <summary>
+    /// 鏀惰揣鍗曡鎯呰緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsReceiptOrderDetailOutput
+    {
+        /// <summary>
+        /// Id  
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// SCM鍏ュ簱閫氱煡鍗曟槑缁嗚鍞竴鏍囪瘑
+        /// </summary>
+        public long OID { get; set; }
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        public decimal SingleLength { get; set; }
+
+        /// <summary>
+        /// 鐞嗚閲嶉噺    
+        /// </summary>
+        public decimal TheoreticalWeight { get; set; }
+
+        /// <summary>
+        /// 涓嶅惈绋庡崟浠�    
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 鎴愭湰閲戦    
+        /// </summary>
+        public decimal SumPrice { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鍚堝悓缂栧彿
+        /// </summary>
+        public string ContractCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍝佸悕
+        /// </summary>
+        public string TradeName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧椤瑰彿
+        /// </summary>
+        public string ItemNo { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍗曚綅
+        /// </summary>
+        public string CustomsUnitName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鏁伴噺   
+        /// </summary>
+        public decimal CustomsNum { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧閲戦 
+        /// </summary>
+        public decimal CustomsPrices { get; set; }
+
+        /// <summary>
+        /// 鐗规畩瑕佹眰
+        /// </summary>
+        public string SpecialNeeds { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public OrderDetailsStatusEnum OrderStatus { get; set; }
+
+        /// <summary>
+        /// 閫佽揣鏁伴噺
+        /// </summary>
+        public decimal DeliveryQty { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鏁伴噺
+        /// </summary>
+        public decimal ReceivedQty { get; set; }
+
+
+        /// <summary>
+        /// 閫�璐х姸鎬�
+        /// </summary>
+        public ReceivingStatus ReceivingStatus { get; set; }
+
+        /// <summary>
+        /// 鎶ユ鐘舵��
+        /// </summary>
+        public InspectionStatus InspectionStatus { get; set; }
+
+    }
+
+
+    public class WmsReceiptOrderOutputByYiGO
+    {
+        public bool Status { get; set; }
+
+        public List<WmsReceiptOrderOutput> Data { get; set; }
+
+        public string Result { get; set; }
+    }
+    /// <summary>
+    /// 娴嬭瘯鍙傛暟
+    /// </summary>
+    public class addOrderInput
+    {
+
+        public bool Status { get; set; }
+
+        public List<WmsReceiptOrderOutput> Data { get; set; }
+
+        public string Result { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/IWmsReceiptOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/IWmsReceiptOrderService.cs
new file mode 100644
index 0000000..0222610
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/IWmsReceiptOrderService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface IWmsReceiptOrderService
+    {
+        Task Add();
+        Task Delete(DeleteWmsReceiptOrderInput input);
+        Task<WmsReceiptOrderOutput> Get([FromQuery] QueryeWmsReceiptOrderInput input);
+        Task<List<WmsReceiptOrderOutput>> List([FromQuery] WmsReceiptOrderInput input);
+        Task<PageResult<WmsReceiptOrderOutput>> Page([FromQuery] WmsReceiptOrderSearch input);
+        Task Update(UpdateWmsReceiptOrderInput input);
+
+        Task<List<WmsReceiptOrderOutput>> ListNonPageAsync([FromQuery] WmsReceiptOrderSearchNonPage input);
+
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+        Task<IActionResult> DownloadExcelTemplate(string version);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Map/WmsReceiptOrderMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Map/WmsReceiptOrderMapper.cs
new file mode 100644
index 0000000..038d763
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Map/WmsReceiptOrderMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class WmsReceiptOrderMapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddWmsReceiptOrderInput, WmsReceiptOrder>()
+            ;
+            config.ForType<UpdateWmsReceiptOrderInput, WmsReceiptOrder>()
+            ;
+            config.ForType<WmsReceiptOrder, WmsReceiptOrderOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/WmsReceiptOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/WmsReceiptOrderService.cs
new file mode 100644
index 0000000..1839653
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/WmsReceiptOrderService.cs
@@ -0,0 +1,415 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using Furion.RemoteRequest.Extensions;
+using Furion;
+using Serilog;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏀惰揣鍗曟湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings("鏀惰揣鍗�", Name = "WmsReceiptOrder", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsReceiptOrderService : IWmsReceiptOrderService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsReceiptOrder,MasterDbContextLocator> _wmsReceiptOrderRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+        private readonly IRepository<WmsReceiptOrderDetails, MasterDbContextLocator> _wmsReceiptOrderDetailsRep;
+        private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+
+
+        public WmsReceiptOrderService(
+            IRepository<WmsReceiptOrder,MasterDbContextLocator> wmsReceiptOrderRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+            , IRepository<WmsReceiptOrderDetails, MasterDbContextLocator> wmsReceiptOrderDetailsRep
+            , IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep
+            , IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep
+            , IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+
+        )
+        {
+            _wmsReceiptOrderRep = wmsReceiptOrderRep;
+         _sysDictTypeRep = sysDictTypeRep;
+         _sysDictDataRep = sysDictDataRep;
+         _sysExcelTemplateService = sysExcelTemplateService;
+            _wmsReceiptOrderDetailsRep = wmsReceiptOrderDetailsRep;
+            _wmsOrderRep = wmsOrderRep;
+            _wmsOrderDetailsRep = wmsOrderDetailsRep;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鏀惰揣鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsReceiptOrderOutput>> Page([FromQuery] WmsReceiptOrderSearch input)
+        {
+            var wmsReceiptOrders = await _wmsReceiptOrderRep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.SourceBillNo), u => EF.Functions.Like(u.SourceBillNo, $"%{input.SourceBillNo.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Vendorcode), u => EF.Functions.Like(u.Vendorcode, $"%{input.Vendorcode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Vendorname), u => EF.Functions.Like(u.Vendorname, $"%{input.Vendorname.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.WarehouseKeepername), u => EF.Functions.Like(u.WarehouseKeepername, $"%{input.WarehouseKeepername.Trim()}%"))
+                                     .Where(input.TradeMode != null, u => u.TradeMode == input.TradeMode)
+                                     .Where(!string.IsNullOrEmpty(input.WarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{input.WarehouseCentername.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.StoreRoomname), u => EF.Functions.Like(u.StoreRoomname, $"%{input.StoreRoomname.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.DeclarationCode), u => EF.Functions.Like(u.DeclarationCode, $"%{input.DeclarationCode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Majorname), u => EF.Functions.Like(u.Majorname, $"%{input.Majorname.Trim()}%"))
+                                     //.Where(input.OrderStatus != null, u => u.OrderStatus == input.OrderStatus)
+                                     .OrderBy(PageInputOrder.OrderBuilder<WmsReceiptOrderSearch>(input))
+                                     .ProjectToType<WmsReceiptOrderOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsReceiptOrders;
+        }
+        /// <summary>
+        /// 鑾峰彇鍗曟嵁鏄庣粏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("PageDetail")]
+        public async Task<PageResult<WmsReceiptOrderDetailOutput>> PageDetail([FromQuery] ReceiptageDetailInput input)
+        {
+            var wmsOrders = await _wmsReceiptOrderDetailsRep.DetachedEntities
+                                     .Where(input.Id != null, u => u.OrderId == input.Id)
+                                     .ProjectToType<WmsReceiptOrderDetailOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsOrders;
+        }
+
+        /// <summary>
+        /// pc纭鏀惰揣
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("PcConfirmReceipt")]
+        [UnitOfWork]
+        public async Task PcConfirmReceipt([FromBody] PcConfirmReceiptInput input)
+        {
+            if (input.GetOrderDetailOutputList.Count == 0) throw Oops.Oh("鏀惰揣淇℃伅涓嶈兘涓虹┖锛�");
+            //鑾峰彇涓诲崟鎹�
+            var wmsOrderModal = await _wmsReceiptOrderRep
+                                     .FirstOrDefaultAsync(u => u.NO == input.NO);
+            if (wmsOrderModal == null) throw Oops.Oh("鍗曟嵁涓嶅瓨鍦�!");
+            if (wmsOrderModal.ReceivingStatus == ReceivingStatus.YISHOUHUO) throw Oops.Oh("璇ュ崟鎹凡鏀惰揣!");
+
+            if (input.GetOrderDetailOutputList.Count == 0) throw Oops.Oh("鏀惰揣淇℃伅涓嶈兘涓虹┖锛�");
+            //鏇存柊鏀惰揣鏄庣粏
+            foreach (var item in input.GetOrderDetailOutputList)
+            {
+                var WmsReceiptOrderDetailsModal = item.Adapt<WmsReceiptOrderDetails>();
+                if (WmsReceiptOrderDetailsModal.ReceivedQty < WmsReceiptOrderDetailsModal.DeliveryQty)
+                {
+                    WmsReceiptOrderDetailsModal.ReceivingStatus = ReceivingStatus.SHOUHUOZHONG;
+                }
+                else
+                {
+                    WmsReceiptOrderDetailsModal.ReceivingStatus = ReceivingStatus.YISHOUHUO;
+                    
+                }
+                await _wmsReceiptOrderDetailsRep.UpdateNowAsync(WmsReceiptOrderDetailsModal);
+            }
+            //鑾峰彇璇ユ敹璐у崟鎵�鏈夊崟鎹槑缁嗘暟閲�
+            var allCount = await _wmsReceiptOrderDetailsRep.Where(x => x.OrderId == wmsOrderModal.Id).ToListAsync();
+            //鑾峰彇璇ユ敹璐у崟鎵�鏈夊畬鎴愮殑鍗曟嵁鏄庣粏
+            var wcCount =await _wmsReceiptOrderDetailsRep.Where(x=>x.OrderId == wmsOrderModal.Id && x.ReceivingStatus == ReceivingStatus.YISHOUHUO).ToListAsync();
+            if (allCount.Count == wcCount.Count)
+            {
+                wmsOrderModal.ReceivingStatus = ReceivingStatus.YISHOUHUO;
+            }
+            else if (allCount.Count > wcCount.Count && wcCount.Count>0)
+            {
+                wmsOrderModal.ReceivingStatus = ReceivingStatus.SHOUHUOZHONG;
+            }
+            else
+            {
+                wmsOrderModal.ReceivingStatus = ReceivingStatus.WEISHOUHUO;
+            }
+            await _wmsReceiptOrderRep.UpdateAsync(wmsOrderModal);
+            //姝ゆ楠ゅ簲璇ユ斁鍦ㄨ幏鍙栨姤妫�缁撴灉鍚庝负鍚堟牸浣跨敤锛岀幇娴嬭瘯鍏堝湪鏀惰揣澧炲姞鍏ュ簱鍗�
+            //鏀惰揣瀹屾垚鏃舵坊鍔犺繘鍏ュ簱鍗�
+            //鏌ヨ鍏ュ簱鍗曟槸鍚︽湁鍗曟嵁涓�鑷寸殑锛屽鏋滄病鏈夊垯娣诲姞鍏ュ簱鍗曚富鍗曟嵁
+            var wmsOrdermodal = await _wmsOrderRep.FirstOrDefaultAsync(x => x.NO == input.NO);
+            long Id = Yitter.IdGenerator.YitIdHelper.NextId();
+            if (wmsOrdermodal == null)
+            {
+                var insertModal = wmsOrderModal.Adapt<WmsOrder>();
+                // 鏌ヨ鍗曟嵁灏忕被鏄�滅敓浜у叆搴撯�濈殑Id
+                var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("鐢熶骇鍏ュ簱"));
+                insertModal.Id = Id;
+                insertModal.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+                insertModal.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+                insertModal.OrderStatus = OrderStatusEnum.WEIXIAFA;
+                await _wmsOrderRep.InsertAsync(insertModal);
+            }
+            else
+            {
+                Id = wmsOrdermodal.Id;
+            }
+            //娣诲姞鏄庣粏
+            foreach (var item in input.GetOrderDetailOutputList)
+            {
+                var wmsOrderDetailsModal = item.Adapt<WmsOrderDetails>();
+                wmsOrderDetailsModal.OrderId = Id;
+                wmsOrderDetailsModal.Qty = item.ReceivedQty;
+                await _wmsOrderDetailsRep.InsertAsync(wmsOrderDetailsModal);
+            }
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈡敹璐у崟鍒楄〃
+        /// </summary>
+        /// <param name="input">鏀惰揣鍗曟煡璇㈠弬鏁�</param>
+        /// <returns>(鏀惰揣鍗�)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<WmsReceiptOrderOutput>> ListNonPageAsync([FromQuery] WmsReceiptOrderSearchNonPage input)
+        {
+            var pNO = input.NO?.Trim() ?? "";
+            var pSourceBillNo = input.SourceBillNo?.Trim() ?? "";
+            var pVendorcode = input.Vendorcode?.Trim() ?? "";
+            var pVendorname = input.Vendorname?.Trim() ?? "";
+            var pCompanyname = input.Companyname?.Trim() ?? "";
+            var pWarehouseKeepername = input.WarehouseKeepername?.Trim() ?? "";
+            var pTradeMode = input.TradeMode;
+            var pWarehouseCentername = input.WarehouseCentername?.Trim() ?? "";
+            var pStoreRoomname = input.StoreRoomname?.Trim() ?? "";
+            var pDeclarationCode = input.DeclarationCode?.Trim() ?? "";
+            var pMajorname = input.Majorname?.Trim() ?? "";
+            var pOrderStatus = input.OrderStatus;
+            var wmsReceiptOrders = await _wmsReceiptOrderRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pNO), u => EF.Functions.Like(u.NO, $"%{pNO}%")) 
+                .Where(!string.IsNullOrEmpty(pSourceBillNo), u => EF.Functions.Like(u.SourceBillNo, $"%{pSourceBillNo}%")) 
+                .Where(!string.IsNullOrEmpty(pVendorcode), u => EF.Functions.Like(u.Vendorcode, $"%{pVendorcode}%")) 
+                .Where(!string.IsNullOrEmpty(pVendorname), u => EF.Functions.Like(u.Vendorname, $"%{pVendorname}%")) 
+                .Where(!string.IsNullOrEmpty(pCompanyname), u => EF.Functions.Like(u.Companyname, $"%{pCompanyname}%")) 
+                .Where(!string.IsNullOrEmpty(pWarehouseKeepername), u => EF.Functions.Like(u.WarehouseKeepername, $"%{pWarehouseKeepername}%")) 
+                .Where(pTradeMode != null, u => u.TradeMode == pTradeMode)
+                .Where(!string.IsNullOrEmpty(pWarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{pWarehouseCentername}%")) 
+                .Where(!string.IsNullOrEmpty(pStoreRoomname), u => EF.Functions.Like(u.StoreRoomname, $"%{pStoreRoomname}%")) 
+                .Where(!string.IsNullOrEmpty(pDeclarationCode), u => EF.Functions.Like(u.DeclarationCode, $"%{pDeclarationCode}%")) 
+                .Where(!string.IsNullOrEmpty(pMajorname), u => EF.Functions.Like(u.Majorname, $"%{pMajorname}%")) 
+                //.Where(pOrderStatus != null, u => u.OrderStatus == pOrderStatus)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<WmsReceiptOrderOutput>()
+            .ToListAsync();
+            return wmsReceiptOrders;
+        }
+
+
+        /// <summary>
+        /// 澧炲姞鏀惰揣鍗�(yigo绯荤粺鑾峰彇)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        [UnitOfWork]
+        public async Task Add()
+        {
+            //鑾峰彇鍏ュ簱閫氱煡鍗�
+            string url = App.Configuration["YiGoWebApi:QueryInboundNotice"];
+            var Billdate_S = DateTime.Now.AddDays(-15).ToString("yyyy-MM-dd");
+            var Billdate_E = DateTime.Now.AddDays(15).ToString("yyyy-MM-dd");
+            //鍐欐棩蹇楁枃浠�
+            //Log.Error($"[TransferContainerCode][ContainerCode:{input.ContainerCode}][url:{url}]");
+            var response = await url.SetHttpMethod(System.Net.Http.HttpMethod.Post)
+                                    .SetBody(new Dictionary<string, object> {
+                                            { "Billdate_S", Billdate_S },
+                                            { "Billdate_E", Billdate_E},
+                                    }, "application/json").PostAsStringAsync();
+            var Data = response.FromJson<WmsReceiptOrderOutputByYiGO>();
+            var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("鏀惰揣鍏ュ簱"));
+            foreach (var item in Data.Data)
+            {
+                item.Id= Yitter.IdGenerator.YitIdHelper.NextId();
+                var wmsReceiptOrder = item.Adapt<WmsReceiptOrder>();
+                //鍒ゆ柇鏄惁瀛樺湪鐩稿悓鐨勫崟鎹彿
+                var isExcit = await _wmsReceiptOrderRep.AnyAsync(x => x.NO == item.NO);
+                if (!isExcit)
+                {
+                    wmsReceiptOrder.WMSNO = item.NO;//鏆傛椂浣跨敤yigo鐨勫崟鍙凤紝鍚庣画寰呭畾
+                    wmsReceiptOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+                    wmsReceiptOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+                    await _wmsReceiptOrderRep.InsertNowAsync(wmsReceiptOrder);
+                    foreach (var item1 in item.Dtls)
+                    {
+                        var wmsReceiptOrderDeatail = item1.Adapt<WmsReceiptOrderDetails>();
+                        wmsReceiptOrderDeatail.OrderId = item.Id;
+                        await _wmsReceiptOrderDetailsRep.InsertNowAsync(wmsReceiptOrderDeatail);
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏀惰揣鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWmsReceiptOrderInput input)
+        {
+            var wmsReceiptOrder = await _wmsReceiptOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsReceiptOrderRep.DeleteAsync(wmsReceiptOrder);
+        }
+
+        /// <summary>
+        /// 鏇存柊鏀惰揣鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWmsReceiptOrderInput input)
+        {
+            var isExist = await _wmsReceiptOrderRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsReceiptOrder = input.Adapt<WmsReceiptOrder>();
+            await _wmsReceiptOrderRep.UpdateAsync(wmsReceiptOrder,ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏀惰揣鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WmsReceiptOrderOutput> Get([FromQuery] QueryeWmsReceiptOrderInput input)
+        {
+            return (await _wmsReceiptOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsReceiptOrderOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏀惰揣鍗曞垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WmsReceiptOrderOutput>> List([FromQuery] WmsReceiptOrderInput input)
+        {
+            return await _wmsReceiptOrderRep.DetachedEntities.ProjectToType<WmsReceiptOrderOutput>().ToListAsync();
+        }    
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆鏀惰揣鍗曞姛鑳�
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsReceiptOrder", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++) 
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<WmsReceiptOrderOutput> wmsReceiptOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsReceiptOrderOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = wmsReceiptOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsReceiptOrder>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsReceiptOrder, WmsReceiptOrderOutput>(selectKeys);
+            List<WmsReceiptOrder> updates = new();
+            List<WmsReceiptOrder> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var wmsReceiptOrderExistSubList = _wmsReceiptOrderRep.Where(filter).Select(selector).ToList();
+                    wmsReceiptOrderExistSubList.ForEach(x => 
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+                foreach (var wmsReceiptOrder in wmsReceiptOrderList) 
+                {
+                    if (wmsReceiptOrder.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsReceiptOrder.Adapt<WmsReceiptOrder>());
+                    }
+                    else 
+                    {
+                        adds.Add(wmsReceiptOrder.Adapt<WmsReceiptOrder>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsReceiptOrderRep.Update(x));
+                
+
+                var maxId = _wmsReceiptOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);    
+                Db.GetDbContext().Set<WmsReceiptOrder>().AddRange(adds);  
+                Db.GetDbContext().SaveChanges();
+               
+            }
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇鏀惰揣鍗曠殑Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsReceiptOrder", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+        /// <summary>
+        /// 鏍规嵁鏀惰揣鍗曟煡璇㈠弬鏁板鍑篍xcel
+        /// </summary>
+        /// <param name="input">鏀惰揣鍗曟煡璇㈠弬鏁�</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] WmsReceiptOrderSearchNonPage input)
+        {
+            var wmsReceiptOrderList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(wmsReceiptOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsReceiptOrder", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderDto.cs
new file mode 100644
index 0000000..b87b971
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderDto.cs
@@ -0,0 +1,82 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍒嗘嫞鍗曡緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsSortOrderDto
+    {
+        /// <summary>
+        /// 鏉ユ簮鍗曞彿
+        /// </summary>
+        public string OrderNo { get; set; }
+        
+        /// <summary>
+        /// 
+        /// </summary>
+        public long OrderDetailID { get; set; }
+        
+        /// <summary>
+        /// 鍒嗘嫞缁勭洏鍗曞彿
+        /// </summary>
+        public string ContainerOrderNo { get; set; }
+        
+        /// <summary>
+        /// 椤圭洰缂栧彿
+        /// </summary>
+        public string ProjectCode { get; set; }
+        
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+        
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public string PartCode { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public string PlaceCode { get; set; }
+        
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// </summary>
+        public string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 鍒嗘嫞鏁�
+        /// </summary>
+        public decimal SortQuantity { get; set; }
+        
+        /// <summary>
+        /// 瀹為檯鍒嗘嫞鏁�
+        /// </summary>
+        public decimal ActualQuantity { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remarks { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+        /// </summary>
+        public Admin.NET.Core.SortStatusEnum SortStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderInput.cs
new file mode 100644
index 0000000..1c1a36c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderInput.cs
@@ -0,0 +1,277 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 鍒嗘嫞鍗曟煡璇㈠弬鏁�
+    /// </summary>
+    public class WmsSortOrderSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鏉ユ簮鍗曞彿
+        /// </summary>
+        public virtual string OrderNo { get; set; }
+
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual long? OrderDetailID { get; set; }
+        
+        /// <summary>
+        /// 鍒嗘嫞缁勭洏鍗曞彿
+        /// </summary>
+        public virtual string ContainerOrderNo { get; set; }
+        
+        /// <summary>
+        /// 椤圭洰缂栧彿
+        /// </summary>
+        public virtual string ProjectCode { get; set; }
+        
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public virtual string TACode { get; set; }
+        
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public virtual string PartCode { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public virtual string PlaceCode { get; set; }
+        
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 鍒嗘嫞鏁�
+        /// </summary>
+        public virtual decimal? SortQuantity { get; set; }
+        
+        /// <summary>
+        /// 瀹為檯鍒嗘嫞鏁�
+        /// </summary>
+        public virtual decimal? ActualQuantity { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public virtual string Remarks { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+        /// </summary>
+        public virtual Admin.NET.Core.SortStatusEnum? SortStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 鍒嗘嫞鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+    /// </summary>
+    public class WmsSortOrderSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 鏉ユ簮鍗曞彿
+        /// </summary>
+        public virtual string? OrderNo { get; set; }
+        
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual long? OrderDetailID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍒嗘嫞缁勭洏鍗曞彿
+        /// </summary>
+        public virtual string? ContainerOrderNo { get; set; }
+        
+        /// <summary>
+        /// 椤圭洰缂栧彿
+        /// </summary>
+        public virtual string? ProjectCode { get; set; }
+        
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public virtual string? TACode { get; set; }
+        
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public virtual string? PartCode { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public virtual string? PlaceCode { get; set; }
+        
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// </summary>
+        public virtual string? ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 鍒嗘嫞鏁�
+        /// </summary>
+        public virtual decimal? SortQuantity { get; set; }
+        
+        /// <summary>
+        /// 瀹為檯鍒嗘嫞鏁�
+        /// </summary>
+        public virtual decimal? ActualQuantity { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public virtual string? Remarks { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+        /// </summary>
+        public virtual Admin.NET.Core.SortStatusEnum? SortStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鍒嗘嫞鍗曡緭鍏ュ弬鏁�
+    /// </summary>
+    public class WmsSortOrderInput
+    {
+        /// <summary>
+        /// 鏉ユ簮鍗曞彿
+        /// </summary>
+        public virtual string OrderNo { get; set; }
+        
+        /// <summary>
+        /// 
+        /// </summary>
+        public virtual long OrderDetailID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍒嗘嫞缁勭洏鍗曞彿
+        /// </summary>
+        public virtual string ContainerOrderNo { get; set; }
+        
+        /// <summary>
+        /// 椤圭洰缂栧彿
+        /// </summary>
+        public virtual string ProjectCode { get; set; }
+        
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public virtual string TACode { get; set; }
+        
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public virtual string PartCode { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public virtual string PlaceCode { get; set; }
+        
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// </summary>
+        public virtual string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 鍒嗘嫞鏁�
+        /// </summary>
+        public virtual decimal SortQuantity { get; set; }
+        
+        /// <summary>
+        /// 瀹為檯鍒嗘嫞鏁�
+        /// </summary>
+        public virtual decimal ActualQuantity { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public virtual string Remarks { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+        /// </summary>
+        public virtual Admin.NET.Core.SortStatusEnum SortStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+    public class AddWmsSortOrderInput : WmsSortOrderInput
+    {
+    }
+
+    public class DeleteWmsSortOrderInput : BaseId
+    {
+    }
+
+    public class UpdateWmsSortOrderInput : WmsSortOrderInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    public class QueryeWmsSortOrderInput : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderOutput.cs
new file mode 100644
index 0000000..d8fa2ed
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderOutput.cs
@@ -0,0 +1,94 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍒嗘嫞鍗曡緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsSortOrderOutput
+    {
+        /// <summary>
+        /// 鏉ユ簮鍗曞彿
+        /// </summary>
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public long OrderDetailID { get; set; }
+        
+        /// <summary>
+        /// 鍒嗘嫞缁勭洏鍗曞彿
+        /// </summary>
+        public string ContainerOrderNo { get; set; }
+        
+        /// <summary>
+        /// 椤圭洰缂栧彿
+        /// </summary>
+        public string ProjectCode { get; set; }
+        
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+        
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public string PartCode { get; set; }
+        
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public string PlaceCode { get; set; }
+        
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// </summary>
+        public string ContainerCode { get; set; }
+        
+        /// <summary>
+        /// 鍒嗘嫞鏁�
+        /// </summary>
+        public decimal SortQuantity { get; set; }
+        
+        /// <summary>
+        /// 瀹為檯鍒嗘嫞鏁�
+        /// </summary>
+        public decimal ActualQuantity { get; set; }
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remarks { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+        /// </summary>
+        public Admin.NET.Core.SortStatusEnum SortStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/IWmsSortOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/IWmsSortOrderService.cs
new file mode 100644
index 0000000..a9dedb0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/IWmsSortOrderService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface IWmsSortOrderService
+    {
+        Task Add(AddWmsSortOrderInput input);
+        Task Delete(DeleteWmsSortOrderInput input);
+        Task<WmsSortOrderOutput> Get([FromQuery] QueryeWmsSortOrderInput input);
+        Task<List<WmsSortOrderOutput>> List([FromQuery] WmsSortOrderInput input);
+        Task<PageResult<WmsSortOrderOutput>> Page([FromQuery] WmsSortOrderSearch input);
+        Task Update(UpdateWmsSortOrderInput input);
+
+        Task<List<WmsSortOrderOutput>> ListNonPageAsync([FromQuery] WmsSortOrderSearchNonPage input);
+
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+        Task<IActionResult> DownloadExcelTemplate(string version);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Map/WmsSortOrderMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Map/WmsSortOrderMapper.cs
new file mode 100644
index 0000000..0bcdab3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Map/WmsSortOrderMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class WmsSortOrderMapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddWmsSortOrderInput, WmsSortOrder>()
+            ;
+            config.ForType<UpdateWmsSortOrderInput, WmsSortOrder>()
+            ;
+            config.ForType<WmsSortOrder, WmsSortOrderOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/WmsSortOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/WmsSortOrderService.cs
new file mode 100644
index 0000000..f9bca73
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/WmsSortOrderService.cs
@@ -0,0 +1,259 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍒嗘嫞鍗曟湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings("鍗曟嵁绠$悊", Name = "WmsSortOrder", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsSortOrderService : IWmsSortOrderService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsSortOrder,MasterDbContextLocator> _wmsSortOrderRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+
+        public WmsSortOrderService(
+            IRepository<WmsSortOrder,MasterDbContextLocator> wmsSortOrderRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+            _wmsSortOrderRep = wmsSortOrderRep;
+         _sysDictTypeRep = sysDictTypeRep;
+         _sysDictDataRep = sysDictDataRep;
+         _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鍒嗘嫞鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsSortOrderOutput>> Page([FromQuery] WmsSortOrderSearch input)
+        {
+            var wmsSortOrders = await _wmsSortOrderRep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.OrderNo), u => EF.Functions.Like(u.OrderNo, $"%{input.OrderNo.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.ProjectCode), u => EF.Functions.Like(u.ProjectCode, $"%{input.ProjectCode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.TACode), u => EF.Functions.Like(u.TACode, $"%{input.TACode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.PartCode), u => EF.Functions.Like(u.PartCode, $"%{input.PartCode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.PlaceCode), u => EF.Functions.Like(u.PlaceCode, $"%{input.PlaceCode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
+                                     .Where(input.SortStatus != null, u => u.SortStatus == input.SortStatus)
+                                     .OrderBy(PageInputOrder.OrderBuilder<WmsSortOrderSearch>(input))
+                                     .ProjectToType<WmsSortOrderOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsSortOrders;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈠垎鎷e崟鍒楄〃
+        /// </summary>
+        /// <param name="input">鍒嗘嫞鍗曟煡璇㈠弬鏁�</param>
+        /// <returns>(鍒嗘嫞鍗�)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<WmsSortOrderOutput>> ListNonPageAsync([FromQuery] WmsSortOrderSearchNonPage input)
+        {
+            var pOrderNo = input.OrderNo?.Trim() ?? "";
+            var pProjectCode = input.ProjectCode?.Trim() ?? "";
+            var pTACode = input.TACode?.Trim() ?? "";
+            var pPartCode = input.PartCode?.Trim() ?? "";
+            var pPlaceCode = input.PlaceCode?.Trim() ?? "";
+            var pContainerCode = input.ContainerCode?.Trim() ?? "";
+            var pSortStatus = input.SortStatus;
+            var wmsSortOrders = await _wmsSortOrderRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pOrderNo), u => EF.Functions.Like(u.OrderNo, $"%{pOrderNo}%")) 
+                .Where(!string.IsNullOrEmpty(pProjectCode), u => EF.Functions.Like(u.ProjectCode, $"%{pProjectCode}%")) 
+                .Where(!string.IsNullOrEmpty(pTACode), u => EF.Functions.Like(u.TACode, $"%{pTACode}%")) 
+                .Where(!string.IsNullOrEmpty(pPartCode), u => EF.Functions.Like(u.PartCode, $"%{pPartCode}%")) 
+                .Where(!string.IsNullOrEmpty(pPlaceCode), u => EF.Functions.Like(u.PlaceCode, $"%{pPlaceCode}%")) 
+                .Where(!string.IsNullOrEmpty(pContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{pContainerCode}%")) 
+                .Where(pSortStatus != null, u => u.SortStatus == pSortStatus)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<WmsSortOrderOutput>()
+            .ToListAsync();
+            return wmsSortOrders;
+        }
+
+
+        /// <summary>
+        /// 澧炲姞鍒嗘嫞鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddWmsSortOrderInput input)
+        {
+            var wmsSortOrder = input.Adapt<WmsSortOrder>();
+            await _wmsSortOrderRep.InsertAsync(wmsSortOrder);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鍒嗘嫞鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWmsSortOrderInput input)
+        {
+            var wmsSortOrder = await _wmsSortOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsSortOrderRep.DeleteAsync(wmsSortOrder);
+        }
+
+        /// <summary>
+        /// 鏇存柊鍒嗘嫞鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWmsSortOrderInput input)
+        {
+            var isExist = await _wmsSortOrderRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsSortOrder = input.Adapt<WmsSortOrder>();
+            await _wmsSortOrderRep.UpdateAsync(wmsSortOrder,ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍒嗘嫞鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WmsSortOrderOutput> Get([FromQuery] QueryeWmsSortOrderInput input)
+        {
+            return (await _wmsSortOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsSortOrderOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍒嗘嫞鍗曞垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WmsSortOrderOutput>> List([FromQuery] WmsSortOrderInput input)
+        {
+            return await _wmsSortOrderRep.DetachedEntities.ProjectToType<WmsSortOrderOutput>().ToListAsync();
+        }    
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆鍒嗘嫞鍗曞姛鑳�
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsSortOrder", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++) 
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<WmsSortOrderOutput> wmsSortOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsSortOrderOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = wmsSortOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsSortOrder>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsSortOrder, WmsSortOrderOutput>(selectKeys);
+            List<WmsSortOrder> updates = new();
+            List<WmsSortOrder> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var wmsSortOrderExistSubList = _wmsSortOrderRep.Where(filter).Select(selector).ToList();
+                    wmsSortOrderExistSubList.ForEach(x => 
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+                foreach (var wmsSortOrder in wmsSortOrderList) 
+                {
+                    if (wmsSortOrder.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsSortOrder.Adapt<WmsSortOrder>());
+                    }
+                    else 
+                    {
+                        adds.Add(wmsSortOrder.Adapt<WmsSortOrder>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsSortOrderRep.Update(x));
+                
+
+                var maxId = _wmsSortOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);    
+                Db.GetDbContext().Set<WmsSortOrder>().AddRange(adds);  
+                Db.GetDbContext().SaveChanges();
+               
+            }
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇鍒嗘嫞鍗曠殑Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsSortOrder", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+        /// <summary>
+        /// 鏍规嵁鍒嗘嫞鍗曟煡璇㈠弬鏁板鍑篍xcel
+        /// </summary>
+        /// <param name="input">鍒嗘嫞鍗曟煡璇㈠弬鏁�</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] WmsSortOrderSearchNonPage input)
+        {
+            var wmsSortOrderList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(wmsSortOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsSortOrder", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderDto.cs
new file mode 100644
index 0000000..6c64b05
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderDto.cs
@@ -0,0 +1,92 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 閫�搴撳崟杈撳嚭鍙傛暟
+    /// </summary>
+    public class WmsStockReturnOrderDto
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 浜嬪姟绫诲瀷
+        /// </summary>
+        public Admin.NET.Core.MoveType MoveType { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string NO { get; set; }
+        
+        /// <summary>
+        /// 閫�鏂欑敵璇锋棩鏈�
+        /// </summary>
+        public DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 棰嗙敤椤圭洰鍙�
+        /// </summary>
+        public string WBSElementcode { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡閮ㄩ棬
+        /// </summary>
+        public string BenefitingDepartcode { get; set; }
+        
+        /// <summary>
+        /// 鏀剁泭閮ㄩ棬
+        /// </summary>
+        public string CostCenterID { get; set; }
+        
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        public string FI_Client_Analysis_H { get; set; }
+        
+        /// <summary>
+        /// 棰嗗彇浜�
+        /// </summary>
+        public string PickerID { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public string Companyname { get; set; }
+        
+        /// <summary>
+        /// 鏂藉伐闃�
+        /// </summary>
+        public string ConstructionTeamID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderInput.cs
new file mode 100644
index 0000000..b245e43
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderInput.cs
@@ -0,0 +1,487 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 閫�搴撳崟鏌ヨ鍙傛暟
+    /// </summary>
+    public class WmsStockReturnOrderSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long? OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long? OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 浜嬪姟绫诲瀷
+        /// </summary>
+        public virtual Admin.NET.Core.MoveType? MoveType { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long? SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string NO { get; set; }
+        
+        /// <summary>
+        /// 閫�鏂欑敵璇锋棩鏈�
+        /// </summary>
+        public virtual DateTimeOffset? Billdate { get; set; }
+        
+        /// <summary>
+        /// 棰嗙敤椤圭洰鍙�
+        /// </summary>
+        public virtual string WBSElementcode { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡閮ㄩ棬
+        /// </summary>
+        public virtual string BenefitingDepartcode { get; set; }
+        
+        /// <summary>
+        /// 鏀剁泭閮ㄩ棬
+        /// </summary>
+        public virtual string CostCenterID { get; set; }
+        
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        public virtual string FI_Client_Analysis_H { get; set; }
+        
+        /// <summary>
+        /// 棰嗗彇浜�
+        /// </summary>
+        public virtual string PickerID { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public virtual string Companyname { get; set; }
+        
+        /// <summary>
+        /// 鏂藉伐闃�
+        /// </summary>
+        public virtual string ConstructionTeamID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 閫�搴撳崟涓嶅垎椤垫煡璇㈠弬鏁�
+    /// </summary>
+    public class WmsStockReturnOrderSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long? OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long? OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 浜嬪姟绫诲瀷
+        /// </summary>
+        public virtual Admin.NET.Core.MoveType? MoveType { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long? SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string? NO { get; set; }
+        
+        /// <summary>
+        /// 閫�鏂欑敵璇锋棩鏈�
+        /// </summary>
+        public virtual DateTimeOffset? Billdate { get; set; }
+        
+        /// <summary>
+        /// 棰嗙敤椤圭洰鍙�
+        /// </summary>
+        public virtual string? WBSElementcode { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡閮ㄩ棬
+        /// </summary>
+        public virtual string? BenefitingDepartcode { get; set; }
+        
+        /// <summary>
+        /// 鏀剁泭閮ㄩ棬
+        /// </summary>
+        public virtual string? CostCenterID { get; set; }
+        
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        public virtual string? FI_Client_Analysis_H { get; set; }
+        
+        /// <summary>
+        /// 棰嗗彇浜�
+        /// </summary>
+        public virtual string? PickerID { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public virtual string? Companyname { get; set; }
+        
+        /// <summary>
+        /// 鏂藉伐闃�
+        /// </summary>
+        public virtual string? ConstructionTeamID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 閫�搴撳崟杈撳叆鍙傛暟
+    /// </summary>
+    public class WmsStockReturnOrderInput
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 浜嬪姟绫诲瀷
+        /// </summary>
+        public virtual Admin.NET.Core.MoveType MoveType { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string NO { get; set; }
+        
+        /// <summary>
+        /// 閫�鏂欑敵璇锋棩鏈�
+        /// </summary>
+        public virtual DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 棰嗙敤椤圭洰鍙�
+        /// </summary>
+        public virtual string WBSElementcode { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡閮ㄩ棬
+        /// </summary>
+        public virtual string BenefitingDepartcode { get; set; }
+        
+        /// <summary>
+        /// 鏀剁泭閮ㄩ棬
+        /// </summary>
+        public virtual string CostCenterID { get; set; }
+        
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        public virtual string FI_Client_Analysis_H { get; set; }
+        
+        /// <summary>
+        /// 棰嗗彇浜�
+        /// </summary>
+        public virtual string PickerID { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public virtual string Companyname { get; set; }
+        
+        /// <summary>
+        /// 鏂藉伐闃�
+        /// </summary>
+        public virtual string ConstructionTeamID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+    public class AddWmsStockReturnOrderInput : WmsStockReturnOrderInput
+    {
+        /// <summary>
+        /// 閫�搴撴槑缁�
+        /// </summary>
+        public List<WmsStockReturnOrderDetail> WmsStockReturnOrderDetails { get; set; }
+        
+
+    }
+    /// <summary>
+    /// 閫�搴撴槑缁�
+    /// </summary>
+    public class WmsStockReturnOrderDetail
+    {
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        public decimal Length { get; set; }
+
+        /// <summary>
+        /// 浠舵暟    
+        /// </summary>
+        public decimal Number { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        public string Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public string PartCode { get; set; }
+    }
+
+
+    public class DeleteWmsStockReturnOrderInput : BaseId
+    {
+    }
+
+    public class UpdateWmsStockReturnOrderInput : WmsStockReturnOrderInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    public class QueryeWmsStockReturnOrderInput : BaseId
+    {
+
+    }
+
+    /// <summary>
+    /// 鑾峰彇鏄庣粏鍙傛暟
+    /// </summary>
+    public class PageDetailStockReturnOrderInput : PageInputBase
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long? Id { get; set; }
+    }
+    /// <summary>
+    /// 鑾峰彇鍑哄簱瀹屾垚鏄庣粏鍙傛暟
+    /// </summary>
+    public class GetTakeOrderDetailInput : PageInputBase
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        public string Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public string PartCode { get; set; }
+    }
+
+
+    /// <summary>
+    /// 閫�鏂欎笂鏋剁粰yigo绯荤粺鐨勫弬鏁�
+    /// </summary>
+    public class StockReturnGoodsReturnOrderInput
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long? Id { get; set; }
+
+        /// <summary>
+        /// YIGO绯荤粺id
+        /// </summary>
+        public long? SOID { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欑敵璇峰崟鍙�
+        /// </summary>
+        public string NO { get; set; }
+
+        /// <summary>
+        /// WMS鍏ュ簱鍗曞彿
+        /// </summary>
+        public string WMSNO { get; set; }
+
+        /// <summary>
+        ///鍑哄簱鏃堕棿
+        /// </summary>
+        public DateTimeOffset? Billdate { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欒鎯�
+        /// </summary>
+        public List<StockReturnGoodsReturnOrderInputDetail> Dtls { get; set; }
+    }
+    /// <summary>
+    /// 閫�璐т笅鏋剁粰yigo绯荤粺鐨勮鎯呭弬鏁�
+    /// </summary>
+    public class StockReturnGoodsReturnOrderInputDetail
+    {
+        /// <summary>
+        /// OID  
+        /// </summary>
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 搴撳尯    
+        /// </summary>
+        public string DestStoreareacode { get; set; }
+
+        /// <summary>
+        /// 鍌ㄤ綅    
+        /// </summary>
+        public string DestLocationcode { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        public string Batchno_WMS { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderOutput.cs
new file mode 100644
index 0000000..6796fca
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderOutput.cs
@@ -0,0 +1,204 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 閫�搴撳崟杈撳嚭鍙傛暟
+    /// </summary>
+    public class WmsStockReturnOrderOutput
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 浜嬪姟绫诲瀷
+        /// </summary>
+        public Admin.NET.Core.MoveType MoveType { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string NO { get; set; }
+        
+        /// <summary>
+        /// 閫�鏂欑敵璇锋棩鏈�
+        /// </summary>
+        public DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 棰嗙敤椤圭洰鍙�
+        /// </summary>
+        public string WBSElementcode { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡閮ㄩ棬
+        /// </summary>
+        public string BenefitingDepartcode { get; set; }
+        
+        /// <summary>
+        /// 鏀剁泭閮ㄩ棬
+        /// </summary>
+        public string CostCenterID { get; set; }
+        
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        public string FI_Client_Analysis_H { get; set; }
+        
+        /// <summary>
+        /// 棰嗗彇浜�
+        /// </summary>
+        public string PickerID { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public string Companyname { get; set; }
+        
+        /// <summary>
+        /// 鏂藉伐闃�
+        /// </summary>
+        public string ConstructionTeamID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+
+        /// <summary>
+        /// 瀵瑰簲YiGo绯荤粺
+        /// </summary>
+        public List<WmsStockReturnOrderDetailOutput> Dtls { get; set; }
+
+    }
+
+    /// <summary>
+    /// 閫�搴撳崟鑾峰彇鏄庣粏杩斿洖鍙傛暟
+    /// </summary>
+    public class WmsStockReturnOrderDetailOutput
+    {
+        /// <summary>
+        /// Id  
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        public decimal Length { get; set; }
+
+        /// <summary>
+        /// 浠舵暟    
+        /// </summary>
+        public decimal Number { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        public string Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public string PartCode { get; set; }
+    }
+
+    /// <summary>
+    /// yigo鑾峰彇閫�搴撳崟杩斿洖鍙傛暟
+    /// </summary>
+    public class WmsStockReturnOrderOutputByYiGO
+    {
+        public bool Status { get; set; }
+
+        public List<WmsStockReturnOrderOutput> Data { get; set; }
+
+        public string Result { get; set; }
+    }
+
+    /// <summary>
+    /// 閫�鏂欎笅鏋惰繑鍥炲弬鏁�
+    /// </summary>
+    public class StockReturnGoodsReturnOrderOutput
+    {
+
+        /// <summary>
+        /// 缁撴灉鎻忚堪
+        /// </summary>
+        public string Result { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鐘舵��
+        /// </summary>
+        public bool Status { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/IWmsStockReturnOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/IWmsStockReturnOrderService.cs
new file mode 100644
index 0000000..6190179
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/IWmsStockReturnOrderService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface IWmsStockReturnOrderService
+    {
+        Task Add();
+        Task Delete(DeleteWmsStockReturnOrderInput input);
+        Task<WmsStockReturnOrderOutput> Get([FromQuery] QueryeWmsStockReturnOrderInput input);
+        Task<List<WmsStockReturnOrderOutput>> List([FromQuery] WmsStockReturnOrderInput input);
+        Task<PageResult<WmsStockReturnOrderOutput>> Page([FromQuery] WmsStockReturnOrderSearch input);
+        Task Update(UpdateWmsStockReturnOrderInput input);
+
+        Task<List<WmsStockReturnOrderOutput>> ListNonPageAsync([FromQuery] WmsStockReturnOrderSearchNonPage input);
+
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+        Task<IActionResult> DownloadExcelTemplate(string version);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Map/WmsStockReturnOrderMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Map/WmsStockReturnOrderMapper.cs
new file mode 100644
index 0000000..2308242
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Map/WmsStockReturnOrderMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class WmsStockReturnOrderMapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddWmsStockReturnOrderInput, WmsStockReturnOrder>()
+            ;
+            config.ForType<UpdateWmsStockReturnOrderInput, WmsStockReturnOrder>()
+            ;
+            config.ForType<WmsStockReturnOrder, WmsStockReturnOrderOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/WmsStockReturnOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/WmsStockReturnOrderService.cs
new file mode 100644
index 0000000..aee3b4d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/WmsStockReturnOrderService.cs
@@ -0,0 +1,400 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using Furion;
+using Furion.RemoteRequest.Extensions;
+using Serilog;
+using HttpMethod = System.Net.Http.HttpMethod;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 閫�搴撳崟鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsStockReturnOrder", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsStockReturnOrderService : IWmsStockReturnOrderService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsStockReturnOrder,MasterDbContextLocator> _wmsStockReturnOrderRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+        private readonly IRepository<WmsStockReturnOrderDetails, MasterDbContextLocator> _wmsStockReturnOrderDetailsRep;
+        private readonly IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> _wmsTakeMaterialOrderDetailRep;
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+
+
+        public WmsStockReturnOrderService(
+            IRepository<WmsStockReturnOrder,MasterDbContextLocator> wmsStockReturnOrderRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+            , IRepository<WmsStockReturnOrderDetails, MasterDbContextLocator> wmsStockReturnOrderDetailsRep
+            , IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> wmsTakeMaterialOrderDetailRep
+            , IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+
+        )
+        {
+            _wmsStockReturnOrderRep = wmsStockReturnOrderRep;
+         _sysDictTypeRep = sysDictTypeRep;
+         _sysDictDataRep = sysDictDataRep;
+         _sysExcelTemplateService = sysExcelTemplateService;
+            _wmsStockReturnOrderDetailsRep = wmsStockReturnOrderDetailsRep;
+            _wmsTakeMaterialOrderDetailRep = wmsTakeMaterialOrderDetailRep;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ閫�搴撳崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsStockReturnOrderOutput>> Page([FromQuery] WmsStockReturnOrderSearch input)
+        {
+            var wmsStockReturnOrders = await _wmsStockReturnOrderRep.DetachedEntities
+                                     .Where(input.MoveType != null, u => u.MoveType == input.MoveType)
+                                     .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.WBSElementcode), u => EF.Functions.Like(u.WBSElementcode, $"%{input.WBSElementcode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.BenefitingDepartcode), u => EF.Functions.Like(u.BenefitingDepartcode, $"%{input.BenefitingDepartcode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.CostCenterID), u => EF.Functions.Like(u.CostCenterID, $"%{input.CostCenterID.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.FI_Client_Analysis_H), u => EF.Functions.Like(u.FI_Client_Analysis_H, $"%{input.FI_Client_Analysis_H.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.PickerID), u => EF.Functions.Like(u.PickerID, $"%{input.PickerID.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.ConstructionTeamID), u => EF.Functions.Like(u.ConstructionTeamID, $"%{input.ConstructionTeamID.Trim()}%"))
+                                     .Where(input.OrderStatus != null, u => u.OrderStatus == input.OrderStatus)
+                                     .OrderBy(PageInputOrder.OrderBuilder<WmsStockReturnOrderSearch>(input))
+                                     .ProjectToType<WmsStockReturnOrderOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsStockReturnOrders;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曟嵁鏄庣粏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("PageDetail")]
+        public async Task<PageResult<WmsStockReturnOrderDetailOutput>> PageDetail([FromQuery] PageDetailStockReturnOrderInput input)
+        {
+            var wmsOrders = await _wmsStockReturnOrderDetailsRep.DetachedEntities
+                                     .Where(input.Id != null, u => u.OrderId == input.Id)
+                                     .ProjectToType<WmsStockReturnOrderDetailOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsOrders;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍑哄簱瀹屾垚鐨勬槑缁�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("GetTakeOrderDetail")]
+        public async Task<PageResult<WmsStockReturnOrderDetailOutput>> GetTakeOrderDetail([FromQuery] GetTakeOrderDetailInput input)
+        {
+            var wmsOrders = await _wmsTakeMaterialOrderDetailRep.DetachedEntities
+                                      .Where(!string.IsNullOrEmpty(input.Materialcode), u => EF.Functions.Like(u.Materialcode, $"%{input.Materialcode.Trim()}%"))
+                                      .Where(!string.IsNullOrEmpty(input.Materialname), u => EF.Functions.Like(u.Materialname, $"%{input.Materialname.Trim()}%"))
+                                      .Where(!string.IsNullOrEmpty(input.Batchno_SCM), u => EF.Functions.Like(u.Batchno_SCM, $"%{input.Batchno_SCM.Trim()}%"))
+                                      .Where(!string.IsNullOrEmpty(input.Batchno_WMS), u => EF.Functions.Like(u.Batchno_WMS, $"%{input.Batchno_WMS.Trim()}%"))
+                                      .Where(!string.IsNullOrEmpty(input.ProjectCode), u => EF.Functions.Like(u.ProjectCode, $"%{input.ProjectCode.Trim()}%"))
+                                      .Where(!string.IsNullOrEmpty(input.TACode), u => EF.Functions.Like(u.TACode, $"%{input.TACode.Trim()}%"))
+                                      .Where(!string.IsNullOrEmpty(input.PartCode), u => EF.Functions.Like(u.PartCode, $"%{input.PartCode.Trim()}%"))
+                                      .Where(x=>x.OrderStatus == OrderDetailsStatusEnum.WANCHENG)
+                                     .ProjectToType<WmsStockReturnOrderDetailOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsOrders;
+        }
+
+        /// <summary>
+        /// 澧炲姞閫�搴撳崟(yigo绯荤粺鑾峰彇)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        [UnitOfWork]
+        public async Task Add()
+        {
+            //var wmsStockReturnOrder = input.Adapt<WmsStockReturnOrder>();
+            //var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("閫�搴撶敵璇�"));
+            //wmsStockReturnOrder.SOID = 66666;
+            //wmsStockReturnOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+            //wmsStockReturnOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+            //wmsStockReturnOrder.OrderStatus = OrderStatusEnum.WEIXIAFA;
+            //await _wmsStockReturnOrderRep.InsertNowAsync(wmsStockReturnOrder);
+            //foreach (var item in input.WmsStockReturnOrderDetails)
+            //{
+            //    var WmsStockReturnOrderDetailsModal = item.Adapt<WmsStockReturnOrderDetails>();
+            //    WmsStockReturnOrderDetailsModal.OrderId = wmsStockReturnOrder.Id;
+            //    await _wmsStockReturnOrderDetailsRep.InsertAsync(WmsStockReturnOrderDetailsModal);
+            //}  
+            //鑾峰彇鍏ュ簱閫氱煡鍗�
+            string url = App.Configuration["YiGoWebApi:QueryReturnQuisition"];
+            var Billdate_S = DateTime.Now.AddDays(-15).ToString("yyyy-MM-dd");
+            var Billdate_E = DateTime.Now.AddDays(15).ToString("yyyy-MM-dd");
+            //鍐欐棩蹇楁枃浠�
+            //Log.Error($"[TransferContainerCode][ContainerCode:{input.ContainerCode}][url:{url}]");
+            var response = await url.SetHttpMethod(System.Net.Http.HttpMethod.Post)
+                                    .SetBody(new Dictionary<string, object> {
+                                            { "Billdate_S", Billdate_S },
+                                            { "Billdate_E", Billdate_E},
+                                    }, "application/json").PostAsStringAsync();
+            var Data = response.FromJson<WmsStockReturnOrderOutputByYiGO>();
+            var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("鐗╂枡閫�搴�"));
+            foreach (var item in Data.Data)
+            {
+                item.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                var wmsStockReturnOrder = item.Adapt<WmsStockReturnOrder>();
+                var isExcit = await _wmsStockReturnOrderRep.AnyAsync(x => x.NO == item.NO);
+                if (!isExcit)
+                {
+                    wmsStockReturnOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+                    wmsStockReturnOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+                    await _wmsStockReturnOrderRep.InsertNowAsync(wmsStockReturnOrder);
+                    foreach (var item1 in item.Dtls)
+                    {
+                        var wmsStockReturnOrderDeatail = item1.Adapt<WmsStockReturnOrderDetails>();
+                        wmsStockReturnOrderDeatail.OrderId = item.Id;
+                        await _wmsStockReturnOrderDetailsRep.InsertNowAsync(wmsStockReturnOrderDeatail);
+                    }
+                }
+                
+            }
+        }
+
+        /// <summary>
+        /// 閫�鏂欎笂鏋舵帴鍙�(yigo绯荤粺)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("StockReturnGoodsReturnOrder")]
+        [UnifyResult(typeof(object))]
+        [UnitOfWork]
+        public async Task<object> StockReturnGoodsReturnOrder([FromBody] StockReturnGoodsReturnOrderInput input)
+        {
+            try
+            {
+                //鍒涘缓鎸囧畾鍚嶇О鐨勮鍗曟搷浣�
+                string url = App.Configuration["YiGoWebApi:CreateTXRe111"];
+                //鑾峰彇涓诲崟鎹�
+                var wmsStockReturnOrderModal = await _wmsStockReturnOrderRep.FirstOrDefaultAsync(x => x.Id == input.Id);
+                if (wmsStockReturnOrderModal == null) throw Oops.Oh("鍗曟嵁淇℃伅涓嶅瓨鍦�!");
+                // 鍐欐棩蹇楁枃浠�
+                Log.Error($"[閫�鏂欎笂鏋禲[鍗曟嵁鍙�:{wmsStockReturnOrderModal.NO}][url:{url}]");
+
+                var response = await url.SetHttpMethod(HttpMethod.Post)
+                                        .SetBody(input, "application/json")
+                                        .PostAsAsync<StockReturnGoodsReturnOrderOutput>();
+                // 鍐欐棩蹇楁枃浠�
+                Log.Error($"[閫�鏂欎笂鏋禲[鍗曟嵁鍙�:{wmsStockReturnOrderModal.NO}][response:{response.ToJson()}]");
+
+                return XnRestfulResultProvider.RESTfulResult(response);
+            }
+            catch (Exception ex)
+            {
+                throw Oops.Oh(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈤��搴撳崟鍒楄〃
+        /// </summary>
+        /// <param name="input">閫�搴撳崟鏌ヨ鍙傛暟</param>
+        /// <returns>(閫�搴撳崟)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<WmsStockReturnOrderOutput>> ListNonPageAsync([FromQuery] WmsStockReturnOrderSearchNonPage input)
+        {
+            var pMoveType = input.MoveType;
+            var pNO = input.NO?.Trim() ?? "";
+            var pWBSElementcode = input.WBSElementcode?.Trim() ?? "";
+            var pBenefitingDepartcode = input.BenefitingDepartcode?.Trim() ?? "";
+            var pCostCenterID = input.CostCenterID?.Trim() ?? "";
+            var pFI_Client_Analysis_H = input.FI_Client_Analysis_H?.Trim() ?? "";
+            var pPickerID = input.PickerID?.Trim() ?? "";
+            var pCompanyname = input.Companyname?.Trim() ?? "";
+            var pConstructionTeamID = input.ConstructionTeamID?.Trim() ?? "";
+            var pOrderStatus = input.OrderStatus;
+            var wmsStockReturnOrders = await _wmsStockReturnOrderRep.DetachedEntities
+                .Where(pMoveType != null, u => u.MoveType == pMoveType)
+                .Where(!string.IsNullOrEmpty(pNO), u => EF.Functions.Like(u.NO, $"%{pNO}%")) 
+                .Where(!string.IsNullOrEmpty(pWBSElementcode), u => EF.Functions.Like(u.WBSElementcode, $"%{pWBSElementcode}%")) 
+                .Where(!string.IsNullOrEmpty(pBenefitingDepartcode), u => EF.Functions.Like(u.BenefitingDepartcode, $"%{pBenefitingDepartcode}%")) 
+                .Where(!string.IsNullOrEmpty(pCostCenterID), u => EF.Functions.Like(u.CostCenterID, $"%{pCostCenterID}%")) 
+                .Where(!string.IsNullOrEmpty(pFI_Client_Analysis_H), u => EF.Functions.Like(u.FI_Client_Analysis_H, $"%{pFI_Client_Analysis_H}%")) 
+                .Where(!string.IsNullOrEmpty(pPickerID), u => EF.Functions.Like(u.PickerID, $"%{pPickerID}%")) 
+                .Where(!string.IsNullOrEmpty(pCompanyname), u => EF.Functions.Like(u.Companyname, $"%{pCompanyname}%")) 
+                .Where(!string.IsNullOrEmpty(pConstructionTeamID), u => EF.Functions.Like(u.ConstructionTeamID, $"%{pConstructionTeamID}%")) 
+                .Where(pOrderStatus != null, u => u.OrderStatus == pOrderStatus)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<WmsStockReturnOrderOutput>()
+            .ToListAsync();
+            return wmsStockReturnOrders;
+        }
+
+
+        
+
+        /// <summary>
+        /// 鍒犻櫎閫�搴撳崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWmsStockReturnOrderInput input)
+        {
+            var wmsStockReturnOrder = await _wmsStockReturnOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsStockReturnOrderRep.DeleteAsync(wmsStockReturnOrder);
+        }
+
+        /// <summary>
+        /// 鏇存柊閫�搴撳崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWmsStockReturnOrderInput input)
+        {
+            var isExist = await _wmsStockReturnOrderRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsStockReturnOrder = input.Adapt<WmsStockReturnOrder>();
+            await _wmsStockReturnOrderRep.UpdateAsync(wmsStockReturnOrder,ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇閫�搴撳崟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WmsStockReturnOrderOutput> Get([FromQuery] QueryeWmsStockReturnOrderInput input)
+        {
+            return (await _wmsStockReturnOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsStockReturnOrderOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇閫�搴撳崟鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WmsStockReturnOrderOutput>> List([FromQuery] WmsStockReturnOrderInput input)
+        {
+            return await _wmsStockReturnOrderRep.DetachedEntities.ProjectToType<WmsStockReturnOrderOutput>().ToListAsync();
+        }    
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆閫�搴撳崟鍔熻兘
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsStockReturnOrder", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++) 
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<WmsStockReturnOrderOutput> wmsStockReturnOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsStockReturnOrderOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = wmsStockReturnOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsStockReturnOrder>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsStockReturnOrder, WmsStockReturnOrderOutput>(selectKeys);
+            List<WmsStockReturnOrder> updates = new();
+            List<WmsStockReturnOrder> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var wmsStockReturnOrderExistSubList = _wmsStockReturnOrderRep.Where(filter).Select(selector).ToList();
+                    wmsStockReturnOrderExistSubList.ForEach(x => 
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+                foreach (var wmsStockReturnOrder in wmsStockReturnOrderList) 
+                {
+                    if (wmsStockReturnOrder.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsStockReturnOrder.Adapt<WmsStockReturnOrder>());
+                    }
+                    else 
+                    {
+                        adds.Add(wmsStockReturnOrder.Adapt<WmsStockReturnOrder>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsStockReturnOrderRep.Update(x));
+                
+
+                var maxId = _wmsStockReturnOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);    
+                Db.GetDbContext().Set<WmsStockReturnOrder>().AddRange(adds);  
+                Db.GetDbContext().SaveChanges();
+               
+            }
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇閫�搴撳崟鐨凟xcel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsStockReturnOrder", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+        /// <summary>
+        /// 鏍规嵁閫�搴撳崟鏌ヨ鍙傛暟瀵煎嚭Excel
+        /// </summary>
+        /// <param name="input">閫�搴撳崟鏌ヨ鍙傛暟</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] WmsStockReturnOrderSearchNonPage input)
+        {
+            var wmsStockReturnOrderList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(wmsStockReturnOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsStockReturnOrder", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderDto.cs
new file mode 100644
index 0000000..005dff2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderDto.cs
@@ -0,0 +1,227 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 棰嗘枡鍗曡緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsTakeMaterialOrderDto
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 浜嬪姟绫诲瀷
+        /// </summary>
+        public string MoveType { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string NO { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡鍗曠敵璇锋棩鏈�
+        /// </summary>
+        public DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 棰嗙敤椤圭洰鍙�
+        /// </summary>
+        public string WBSElementcode { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡閮ㄩ棬
+        /// </summary>
+        public string BenefitingDepartcode { get; set; }
+        
+        /// <summary>
+        /// 鍙楃泭閮ㄩ棬
+        /// </summary>
+        public string CostCenterID { get; set; }
+        
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        public string FI_Client_Analysis_H { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍏徃闂翠氦鏄�
+        /// </summary>
+        public long IsInnerCompany { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡浜�
+        /// </summary>
+        public string PickerID { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public string Companyname { get; set; }
+        
+        /// <summary>
+        /// 鏂藉伐闃�
+        /// </summary>
+        public string ConstructionTeamID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鍒嗘嫞搴撳瓨
+    /// </summary>
+    public class FjStock
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+        /// </summary>
+        public MaterialType MaterialType { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 闀�    
+        /// </summary>
+        public int Long { get; set; }
+
+        /// <summary>
+        /// 瀹�    
+        /// </summary>
+        public int Wide { get; set; }
+
+        /// <summary>
+        /// 楂�    
+        /// </summary>
+        public int High { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public string MaterialDensity { get; set; }
+
+        /// <summary>
+        /// 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+        /// </summary>
+        public MaterialInspection InspectionMethod { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅绫诲埆;鏁版嵁瀛楀吀
+        /// </summary>
+        public UnitType UnitType { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅缂栧彿;鏁版嵁瀛楀吀
+        /// </summary>
+        public UnitNoType UnitNo { get; set; }
+
+        /// <summary>
+        /// 瀹炵墿搴撳瓨鏁�
+        /// </summary>
+        public decimal StockNumber { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏Id
+        /// </summary>
+        public long ContainerId { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撳尯Id
+        /// </summary>
+        public long AreaId { get; set; }
+
+        /// <summary>
+        /// 璐﹂潰鏁伴噺
+        /// </summary>
+        public decimal QuantityOfBill { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鏉ユ簮
+        /// </summary>
+        public RuKuSourceEnum Source { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>]
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鍚堝悓缂栧彿
+        /// </summary>
+        public string ContractCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘嫞鏁伴噺
+        /// </summary>
+        public decimal FjQty { get; set; }
+    }
+         
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderInput.cs
new file mode 100644
index 0000000..88d58d8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderInput.cs
@@ -0,0 +1,441 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{    
+    
+    /// <summary>
+    /// 棰嗘枡鍗曟煡璇㈠弬鏁�
+    /// </summary>
+    public class WmsTakeMaterialOrderSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long? OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long? OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 浜嬪姟绫诲瀷
+        /// </summary>
+        public virtual string MoveType { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long? SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string NO { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡鍗曠敵璇锋棩鏈�
+        /// </summary>
+        public virtual DateTimeOffset? Billdate { get; set; }
+        
+        /// <summary>
+        /// 棰嗙敤椤圭洰鍙�
+        /// </summary>
+        public virtual string WBSElementcode { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡閮ㄩ棬
+        /// </summary>
+        public virtual string BenefitingDepartcode { get; set; }
+        
+        /// <summary>
+        /// 鍙楃泭閮ㄩ棬
+        /// </summary>
+        public virtual string CostCenterID { get; set; }
+        
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        public virtual string FI_Client_Analysis_H { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍏徃闂翠氦鏄�
+        /// </summary>
+        public virtual long? IsInnerCompany { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡浜�
+        /// </summary>
+        public virtual string PickerID { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public virtual string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public virtual string Companyname { get; set; }
+        
+        /// <summary>
+        /// 鏂藉伐闃�
+        /// </summary>
+        public virtual string ConstructionTeamID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+        /// <summary>
+    /// 棰嗘枡鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+    /// </summary>
+    public class WmsTakeMaterialOrderSearchNonPage : PageInputNonPageBase
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long? OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long? OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 浜嬪姟绫诲瀷
+        /// </summary>
+        public virtual string? MoveType { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long? SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string? NO { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡鍗曠敵璇锋棩鏈�
+        /// </summary>
+        public virtual DateTimeOffset? Billdate { get; set; }
+        
+        /// <summary>
+        /// 棰嗙敤椤圭洰鍙�
+        /// </summary>
+        public virtual string? WBSElementcode { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡閮ㄩ棬
+        /// </summary>
+        public virtual string? BenefitingDepartcode { get; set; }
+        
+        /// <summary>
+        /// 鍙楃泭閮ㄩ棬
+        /// </summary>
+        public virtual string? CostCenterID { get; set; }
+        
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        public virtual string? FI_Client_Analysis_H { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍏徃闂翠氦鏄�
+        /// </summary>
+        public virtual long? IsInnerCompany { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡浜�
+        /// </summary>
+        public virtual string? PickerID { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public virtual string? WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public virtual string? Companyname { get; set; }
+        
+        /// <summary>
+        /// 鏂藉伐闃�
+        /// </summary>
+        public virtual string? ConstructionTeamID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 棰嗘枡鍗曡緭鍏ュ弬鏁�
+    /// </summary>
+    public class WmsTakeMaterialOrderInput
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public virtual long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public virtual long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 浜嬪姟绫诲瀷
+        /// </summary>
+        public virtual string MoveType { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public virtual long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public virtual string NO { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡鍗曠敵璇锋棩鏈�
+        /// </summary>
+        public virtual DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 棰嗙敤椤圭洰鍙�
+        /// </summary>
+        public virtual string WBSElementcode { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡閮ㄩ棬
+        /// </summary>
+        public virtual string BenefitingDepartcode { get; set; }
+        
+        /// <summary>
+        /// 鍙楃泭閮ㄩ棬
+        /// </summary>
+        public virtual string CostCenterID { get; set; }
+        
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        public virtual string FI_Client_Analysis_H { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍏徃闂翠氦鏄� 1.鏄� 2.鍚�
+        /// </summary>
+        public virtual long IsInnerCompany { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡浜�
+        /// </summary>
+        public virtual string PickerID { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public virtual string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public virtual string Companyname { get; set; }
+        
+        /// <summary>
+        /// 鏂藉伐闃�
+        /// </summary>
+        public virtual string ConstructionTeamID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+        
+    }
+
+    public class AddWmsTakeMaterialOrderInput : WmsTakeMaterialOrderInput
+    {
+    }
+
+    public class DeleteWmsTakeMaterialOrderInput : BaseId
+    {
+    }
+
+    public class UpdateWmsTakeMaterialOrderInput : WmsTakeMaterialOrderInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    public class QueryeWmsTakeMaterialOrderInput : BaseId
+    {
+
+    }
+    /// <summary>
+    /// 鑾峰彇鍗曟嵁鏄庣粏鍙傛暟
+    /// </summary>
+    public class TakePageDetailInput : PageInputBase
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long? Id { get; set; }
+    }
+
+    /// <summary>
+    /// 鏌ヨ搴撳瓨鏄庣粏
+    /// </summary>
+    public class TakeMaterialStockSearch : PageInputBase
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鍚堝悓缂栧彿
+        /// </summary>
+        public string ContractCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+    }
+    /// <summary>
+    /// 涓嬪彂棰嗘枡鍗曞弬鏁�
+    /// </summary>
+    public class DistributeOrderInput
+    {
+        /// <summary>
+        /// 棰嗘枡鍗昳d
+        /// </summary>
+        public long Id { get; set; }
+    }
+
+    /// <summary>
+    /// 棰嗘枡涓嬫灦缁檡igo绯荤粺鐨勫弬鏁�
+    /// </summary>
+    public class ReturnTakeOrderInput
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public long? Id { get; set; }
+
+        /// <summary>
+        /// YIGO绯荤粺id
+        /// </summary>
+        public long? SOID { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱閫氱煡鍗曞彿
+        /// </summary>
+        public string NO { get; set; }
+
+        /// <summary>
+        /// WMS閫�璐у崟鍙�
+        /// </summary>
+        public string WMSNO { get; set; }
+
+        /// <summary>
+        ///鍑哄簱鏃堕棿
+        /// </summary>
+        public DateTimeOffset? Billdate { get; set; }
+
+        /// <summary>
+        /// 鍑哄簱璇︽儏
+        /// </summary>
+        public List<ReturnTakeOrderInputDetail> Dtls { get; set; }
+    }
+
+    /// <summary>
+    /// 棰嗘枡涓嬫灦缁檡igo绯荤粺鐨勮鎯呭弬鏁�
+    /// </summary>
+    public class ReturnTakeOrderInputDetail
+    {
+        /// <summary>
+        /// OID  
+        /// </summary>
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 搴撳尯    
+        /// </summary>
+        public string DestStoreareacode { get; set; }
+
+        /// <summary>
+        /// 鍌ㄤ綅    
+        /// </summary>
+        public string DestLocationcode { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        public string Batchno_WMS { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderOutput.cs
new file mode 100644
index 0000000..88a0ee4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderOutput.cs
@@ -0,0 +1,352 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 棰嗘枡鍗曡緭鍑哄弬鏁�
+    /// </summary>
+    public class WmsTakeMaterialOrderOutput
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public long OrderLargeCategory { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public long OrderSubclass { get; set; }
+        
+        /// <summary>
+        /// 浜嬪姟绫诲瀷
+        /// </summary>
+        public string MoveType { get; set; }
+        
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long SOID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string NO { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡鍗曠敵璇锋棩鏈�
+        /// </summary>
+        public DateTimeOffset Billdate { get; set; }
+        
+        /// <summary>
+        /// 棰嗙敤椤圭洰鍙�
+        /// </summary>
+        public string WBSElementcode { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡閮ㄩ棬
+        /// </summary>
+        public string BenefitingDepartcode { get; set; }
+        
+        /// <summary>
+        /// 鍙楃泭閮ㄩ棬
+        /// </summary>
+        public string CostCenterID { get; set; }
+        
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        public string FI_Client_Analysis_H { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍏徃闂翠氦鏄�
+        /// </summary>
+        public long IsInnerCompany { get; set; }
+        
+        /// <summary>
+        /// 棰嗘枡浜�
+        /// </summary>
+        public string PickerID { get; set; }
+        
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public string WarehouseCentername { get; set; }
+        
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public string Companyname { get; set; }
+        
+        /// <summary>
+        /// 鏂藉伐闃�
+        /// </summary>
+        public string ConstructionTeamID { get; set; }
+        
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// 绛炬牳鐘舵��
+        /// </summary>
+        public Admin.NET.Core.IssueState IssueState { get; set; }
+
+        /// <summary>
+        /// 瀵瑰簲YiGo绯荤粺
+        /// </summary>
+        public List<WmsTakeMaterialOrderDetailOutput> Dtls { get; set; }
+
+    }
+
+
+    /// <summary>
+    /// 鑾峰彇鏄庣粏杩斿洖鍙傛暟
+    /// </summary>
+    public class WmsTakeMaterialOrderDetailOutput
+    {
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑
+        /// </summary>
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 涓嬪彂鏁伴噺
+        /// </summary>
+        public decimal DistributeQty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        public decimal SingleLength { get; set; }
+
+        /// <summary>
+        /// 浠舵暟    
+        /// </summary>
+        public decimal Number { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        public decimal Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public string PartCode { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public OrderDetailsStatusEnum OrderStatus { get; set; } = OrderDetailsStatusEnum.WEIZHIXING;
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁涓昏〃
+        /// </summary>
+        public WmsTakeMaterialOrder WmsTakeMaterialOrder { get; set; }
+    }
+
+    /// <summary>
+    /// 鑾峰彇搴撳瓨杩斿洖鍙傛暟
+    /// </summary>
+    public class TakeMaterialStockOutput
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅绫诲埆;鏁版嵁瀛楀吀
+        /// </summary>
+        public UnitType UnitType { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅缂栧彿;鏁版嵁瀛楀吀
+        /// </summary>
+        public UnitNoType UnitNo { get; set; }
+
+        /// <summary>
+        /// 瀹炵墿搴撳瓨鏁�
+        /// </summary>
+        public decimal StockNumber { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏Id
+        /// </summary>
+        public long ContainerId { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撳尯Id
+        /// </summary>
+        public long AreaId { get; set; }
+
+        /// <summary>
+        /// 璐﹂潰鏁伴噺
+        /// </summary>
+        public decimal QuantityOfBill { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鏉ユ簮
+        /// </summary>
+        public RuKuSourceEnum Source { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鍚堝悓缂栧彿
+        /// </summary>
+        public string ContractCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+    }
+    /// <summary>
+    /// 搴撳瓨鍒嗙粍鐗╂枡鍙疯緭鍑哄弬鏁�
+    /// </summary>
+    public class MaterialNoListOutput
+    {
+        /// <summary>
+        /// Code
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string MaterialNo { get; set; }
+    }
+
+    /// <summary>
+    /// 搴撳瓨鍒嗙粍椤圭洰缂栫爜杈撳嚭鍙傛暟
+    /// </summary>
+    public class ProjectCodeListOutput
+    {
+        /// <summary>
+        /// Code
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string ProjectCode { get; set; }
+    }
+    /// <summary>
+    /// yigo鑾峰彇棰嗘枡鍗曡繑鍥炲弬鏁�
+    /// </summary>
+    public class WmsTakeMaterialOrderOutputByYiGO
+    {
+        public bool Status { get; set; }
+
+        public List<WmsTakeMaterialOrderOutput> Data { get; set; }
+
+        public string Result { get; set; }
+    }
+
+    /// <summary>
+    /// 棰嗘枡涓嬫灦杩斿洖鍙傛暟
+    /// </summary>
+    public class ReturnTakeOrderOutput
+    {
+
+        /// <summary>
+        /// 缁撴灉鎻忚堪
+        /// </summary>
+        public string Result { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鐘舵��
+        /// </summary>
+        public bool Status { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/IWmsTakeMaterialOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/IWmsTakeMaterialOrderService.cs
new file mode 100644
index 0000000..f8288b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/IWmsTakeMaterialOrderService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+    public interface IWmsTakeMaterialOrderService
+    {
+        Task Add(AddWmsTakeMaterialOrderInput input);
+        Task Delete(DeleteWmsTakeMaterialOrderInput input);
+        Task<WmsTakeMaterialOrderOutput> Get([FromQuery] QueryeWmsTakeMaterialOrderInput input);
+        Task<List<WmsTakeMaterialOrderOutput>> List([FromQuery] WmsTakeMaterialOrderInput input);
+        Task<PageResult<WmsTakeMaterialOrderOutput>> Page([FromQuery] WmsTakeMaterialOrderSearch input);
+        Task Update(UpdateWmsTakeMaterialOrderInput input);
+
+        Task<List<WmsTakeMaterialOrderOutput>> ListNonPageAsync([FromQuery] WmsTakeMaterialOrderSearchNonPage input);
+
+        Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+        Task<IActionResult> DownloadExcelTemplate(string version);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Map/WmsTakeMaterialOrderMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Map/WmsTakeMaterialOrderMapper.cs
new file mode 100644
index 0000000..27b59d2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Map/WmsTakeMaterialOrderMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    public class WmsTakeMaterialOrderMapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddWmsTakeMaterialOrderInput, WmsTakeMaterialOrder>()
+            ;
+            config.ForType<UpdateWmsTakeMaterialOrderInput, WmsTakeMaterialOrder>()
+            ;
+            config.ForType<WmsTakeMaterialOrder, WmsTakeMaterialOrderOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/WmsTakeMaterialOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/WmsTakeMaterialOrderService.cs
new file mode 100644
index 0000000..7eff9fe
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/WmsTakeMaterialOrderService.cs
@@ -0,0 +1,613 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using SixLabors.ImageSharp;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
+using Furion;
+using Serilog;
+using Furion.RemoteRequest.Extensions;
+using HttpMethod = System.Net.Http.HttpMethod;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 棰嗘枡鍗曟湇鍔�
+    /// </summary>
+    [ApiDescriptionSettings("鍗曟嵁绠$悊", Name = "WmsTakeMaterialOrder", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsTakeMaterialOrderService : IWmsTakeMaterialOrderService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsTakeMaterialOrder,MasterDbContextLocator> _wmsTakeMaterialOrderRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+        private readonly IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> _wmsTakeMaterialOrderDetailRep;
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+        private readonly IRepository<WmsSortOrder, MasterDbContextLocator> _wmsSortOrderRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+
+        public WmsTakeMaterialOrderService(
+            IRepository<WmsTakeMaterialOrder,MasterDbContextLocator> wmsTakeMaterialOrderRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+            ,IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> wmsTakeMaterialOrderDetailRep
+            , IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+            , IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep
+            , IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep
+            , IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep
+            , IRepository<WmsSortOrder, MasterDbContextLocator> wmsSortOrderRep
+            , IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep
+        )
+        {
+            _wmsTakeMaterialOrderRep = wmsTakeMaterialOrderRep;
+         _sysDictTypeRep = sysDictTypeRep;
+         _sysDictDataRep = sysDictDataRep;
+         _sysExcelTemplateService = sysExcelTemplateService;
+            _wmsTakeMaterialOrderDetailRep = wmsTakeMaterialOrderDetailRep;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+            _wmsPlaceRep = wmsPlaceRep;
+            _wmsMaterialStockRep = wmsMaterialStockRep;
+            _wmsMaterialContainerRep = wmsMaterialContainerRep;
+            _wmsSortOrderRep =  wmsSortOrderRep;
+            _wmsTaskRep = wmsTaskRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ棰嗘枡鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WmsTakeMaterialOrderOutput>> Page([FromQuery] WmsTakeMaterialOrderSearch input)
+        {
+            var wmsTakeMaterialOrders = await _wmsTakeMaterialOrderRep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.MoveType), u => EF.Functions.Like(u.MoveType, $"%{input.MoveType.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.WBSElementcode), u => EF.Functions.Like(u.WBSElementcode, $"%{input.WBSElementcode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.BenefitingDepartcode), u => EF.Functions.Like(u.BenefitingDepartcode, $"%{input.BenefitingDepartcode.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.CostCenterID), u => EF.Functions.Like(u.CostCenterID, $"%{input.CostCenterID.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.FI_Client_Analysis_H), u => EF.Functions.Like(u.FI_Client_Analysis_H, $"%{input.FI_Client_Analysis_H.Trim()}%"))
+                                     .Where(input.IsInnerCompany != null, u => u.IsInnerCompany == input.IsInnerCompany)
+                                     .Where(!string.IsNullOrEmpty(input.PickerID), u => EF.Functions.Like(u.PickerID, $"%{input.PickerID.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.WarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{input.WarehouseCentername.Trim()}%"))
+                                     .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
+                                     .Where(input.OrderStatus != null, u => u.OrderStatus == input.OrderStatus)
+                                     .OrderBy(PageInputOrder.OrderBuilder<WmsTakeMaterialOrderSearch>(input))
+                                     .ProjectToType<WmsTakeMaterialOrderOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsTakeMaterialOrders;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇㈤鏂欏崟鍒楄〃
+        /// </summary>
+        /// <param name="input">棰嗘枡鍗曟煡璇㈠弬鏁�</param>
+        /// <returns>(棰嗘枡鍗�)瀹炰緥鍒楄〃</returns>
+        [HttpGet("listNonPage")]
+        public async Task<List<WmsTakeMaterialOrderOutput>> ListNonPageAsync([FromQuery] WmsTakeMaterialOrderSearchNonPage input)
+        {
+            var pMoveType = input.MoveType?.Trim() ?? "";
+            var pNO = input.NO?.Trim() ?? "";
+            var pWBSElementcode = input.WBSElementcode?.Trim() ?? "";
+            var pBenefitingDepartcode = input.BenefitingDepartcode?.Trim() ?? "";
+            var pCostCenterID = input.CostCenterID?.Trim() ?? "";
+            var pFI_Client_Analysis_H = input.FI_Client_Analysis_H?.Trim() ?? "";
+            var pIsInnerCompany = input.IsInnerCompany;
+            var pPickerID = input.PickerID?.Trim() ?? "";
+            var pWarehouseCentername = input.WarehouseCentername?.Trim() ?? "";
+            var pCompanyname = input.Companyname?.Trim() ?? "";
+            var pOrderStatus = input.OrderStatus;
+            var wmsTakeMaterialOrders = await _wmsTakeMaterialOrderRep.DetachedEntities
+                .Where(!string.IsNullOrEmpty(pMoveType), u => EF.Functions.Like(u.MoveType, $"%{pMoveType}%")) 
+                .Where(!string.IsNullOrEmpty(pNO), u => EF.Functions.Like(u.NO, $"%{pNO}%")) 
+                .Where(!string.IsNullOrEmpty(pWBSElementcode), u => EF.Functions.Like(u.WBSElementcode, $"%{pWBSElementcode}%")) 
+                .Where(!string.IsNullOrEmpty(pBenefitingDepartcode), u => EF.Functions.Like(u.BenefitingDepartcode, $"%{pBenefitingDepartcode}%")) 
+                .Where(!string.IsNullOrEmpty(pCostCenterID), u => EF.Functions.Like(u.CostCenterID, $"%{pCostCenterID}%")) 
+                .Where(!string.IsNullOrEmpty(pFI_Client_Analysis_H), u => EF.Functions.Like(u.FI_Client_Analysis_H, $"%{pFI_Client_Analysis_H}%")) 
+                .Where(pIsInnerCompany != null, u => u.IsInnerCompany == pIsInnerCompany)
+                .Where(!string.IsNullOrEmpty(pPickerID), u => EF.Functions.Like(u.PickerID, $"%{pPickerID}%")) 
+                .Where(!string.IsNullOrEmpty(pWarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{pWarehouseCentername}%")) 
+                .Where(!string.IsNullOrEmpty(pCompanyname), u => EF.Functions.Like(u.Companyname, $"%{pCompanyname}%")) 
+                .Where(pOrderStatus != null, u => u.OrderStatus == pOrderStatus)
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<WmsTakeMaterialOrderOutput>()
+            .ToListAsync();
+            return wmsTakeMaterialOrders;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍗曟嵁鏄庣粏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("PageDetail")]
+        public async Task<PageResult<WmsTakeMaterialOrderDetailOutput>> PageDetail([FromQuery] TakePageDetailInput input)
+        {
+            var wmsOrders = await _wmsTakeMaterialOrderDetailRep.DetachedEntities
+                                     .Where(input.Id != null, u => u.OrderId == input.Id)
+                                     .ProjectToType<WmsTakeMaterialOrderDetailOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsOrders;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鐗╂枡搴撳瓨
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("stockPage")]
+        public async Task<PageResult<TakeMaterialStockOutput>> StockPage([FromQuery] TakeMaterialStockSearch input)
+        {
+            //浠庢湭鎵ц鍜屾墽琛屼腑鐨勪换鍔′腑鑾峰彇搴撲綅杩涜绛涢��(鏈啓)
+
+            //鏌ヨ鎵�鏈夎閿佸畾搴撲綅鍜屽緟鍑虹殑搴撳瓨
+            var lockPlace = await _wmsPlaceRep.DetachedEntities.Where(x => x.Islock == YesOrNot.Y || x.PlaceStatus == PlaceStatus.DAICHU).Select(x => x.PlaceCode).ToListAsync();
+
+            var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities
+                .Where(u => u.StockNumber != 0)
+                .Where(!string.IsNullOrEmpty(input.MaterialNo), u => EF.Functions.Like(u.MaterialNo, $"%{input.MaterialNo.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.MaterialName), u => EF.Functions.Like(u.MaterialName, $"%{input.MaterialName.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.ProjectCode), u => EF.Functions.Like(u.ProjectCode, $"%{input.ProjectCode.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.ContractCode), u => EF.Functions.Like(u.ContractCode, $"%{input.ContractCode.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.TACode), u => EF.Functions.Like(u.TACode, $"%{input.TACode.Trim()}%"))
+                .Where(input.SearchBeginTime != null && input.SearchEndTime != null, u => u.CreatedTime >= DateTime.Parse(input.SearchBeginTime.Trim()) &&
+                                                                   u.CreatedTime <= DateTime.Parse(input.SearchEndTime.Trim()))
+                .Where(u => u.AreaId == 472817877401669)
+                .Where(u => !lockPlace.Contains(u.PlaceCode))
+                .ProjectToType<TakeMaterialStockOutput>()
+                .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsMaterialStocks;
+        }
+
+        /// <summary>
+        /// 鐗╂枡缂栫爜涓嬫媺妗�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("GetMaterialNoList")]
+        public async Task<List<MaterialNoListOutput>> GetMaterialNoList()
+        {
+            // 鏌ヨ搴撲綅琛ㄧ姸鎬佷负瀛樿揣鐨勫簱浣嶄綔涓烘煡璇㈠簱瀛樼殑鏉′欢 鍥哄畾搴撳尯
+            List<string> wmsPlaceCodes = await _wmsPlaceRep.Where(u => u.PlaceStatus == PlaceStatus.CUNHUO && u.AreaId == 472817877401669)
+                .Select(t => t.PlaceCode).ToListAsync();
+            //浠庢湭鎵ц鍜屾墽琛屼腑鐨勪换鍔′腑鑾峰彇搴撲綅杩涜绛涢��(鏈啓)
+            //鏌ヨ鎵�鏈夎閿佸畾搴撲綅鍜屽緟鍑虹殑搴撳瓨
+            var lockPlace = await _wmsPlaceRep.DetachedEntities.Where(x => x.Islock == YesOrNot.Y || x.PlaceStatus == PlaceStatus.DAICHU).Select(x => x.PlaceCode).ToListAsync();
+            //鏌ヨ搴撳瓨
+            var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities
+                .ToListAsync();
+            //鏈墽琛屾垨鎵ц涓殑鏄庣粏鎵樼洏鐩稿叧搴撳瓨涓嶇户缁樉绀�
+            wmsMaterialStocks = wmsMaterialStocks
+                .Where(u => !lockPlace.Contains(u.PlaceCode))
+                .GroupBy(x => x.MaterialNo).Select(x => x.First()).ToList();
+            List<MaterialNoListOutput> MaterialNoListOutputLists = new List<MaterialNoListOutput>();
+            foreach (var item in wmsMaterialStocks)
+            {
+                MaterialNoListOutput MaterialNoListOutput = new MaterialNoListOutput();
+                MaterialNoListOutput.Code = item.MaterialNo;
+                MaterialNoListOutput.MaterialNo = item.MaterialNo;
+                MaterialNoListOutputLists.Add(MaterialNoListOutput);
+            }
+            return MaterialNoListOutputLists;
+        }
+
+        /// <summary>
+        /// 椤圭洰缂栫爜涓嬫媺妗�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("GetProjectCodeList")]
+        public async Task<List<ProjectCodeListOutput>> GetProjectCodeList()
+        {
+            // 鏌ヨ搴撲綅琛ㄧ姸鎬佷负瀛樿揣鐨勫簱浣嶄綔涓烘煡璇㈠簱瀛樼殑鏉′欢 鍥哄畾搴撳尯
+            List<string> wmsPlaceCodes = await _wmsPlaceRep.Where(u => u.PlaceStatus == PlaceStatus.CUNHUO && u.AreaId == 472817877401669)
+                .Select(t => t.PlaceCode).ToListAsync();
+            //浠庢湭鎵ц鍜屾墽琛屼腑鐨勪换鍔′腑鑾峰彇搴撲綅杩涜绛涢��(鏈啓)
+            //鏌ヨ鎵�鏈夎閿佸畾搴撲綅鍜屽緟鍑虹殑搴撳瓨
+            var lockPlace = await _wmsPlaceRep.DetachedEntities.Where(x => x.Islock == YesOrNot.Y || x.PlaceStatus == PlaceStatus.DAICHU).Select(x => x.PlaceCode).ToListAsync();
+            //鏌ヨ搴撳瓨
+            var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities
+                .ToListAsync();
+            //鏈墽琛屾垨鎵ц涓殑鏄庣粏鎵樼洏鐩稿叧搴撳瓨涓嶇户缁樉绀�
+            wmsMaterialStocks = wmsMaterialStocks
+                .Where(u => !lockPlace.Contains(u.PlaceCode))
+                .GroupBy(x => x.ProjectCode).Select(x => x.First()).ToList();
+            List<ProjectCodeListOutput> ProjectCodeListOutputLists = new List<ProjectCodeListOutput>();
+            foreach (var item in wmsMaterialStocks)
+            {
+                ProjectCodeListOutput ProjectCodeListOutput = new ProjectCodeListOutput();
+                ProjectCodeListOutput.Code = item.ProjectCode;
+                ProjectCodeListOutput.ProjectCode = item.ProjectCode;
+                ProjectCodeListOutputLists.Add(ProjectCodeListOutput);
+            }
+            return ProjectCodeListOutputLists;
+        }
+
+        /// <summary>
+        /// 澧炲姞棰嗘枡鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        public async Task Add(AddWmsTakeMaterialOrderInput input)
+        {
+            // 鏌ヨ鍗曟嵁灏忕被鏄�滅敓浜у叆搴撯�濈殑Id
+            var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("棰嗘枡鍑哄簱"));
+            var wmsTakeMaterialOrder = input.Adapt<WmsTakeMaterialOrder>();
+            wmsTakeMaterialOrder.SOID = 66666;
+            wmsTakeMaterialOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+            wmsTakeMaterialOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+            wmsTakeMaterialOrder.OrderStatus = OrderStatusEnum.WEIXIAFA;
+            await _wmsTakeMaterialOrderRep.InsertAsync(wmsTakeMaterialOrder);
+        }
+
+        /// <summary>
+        /// 澧炲姞棰嗘枡鍗�(yigo绯荤粺鑾峰彇)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("TakeOrderAdd")]
+        [UnitOfWork]
+        public async Task TakeOrderAdd()
+        {
+            //鑾峰彇棰嗘枡鐢宠鍗�
+            string url = App.Configuration["YiGoWebApi:QueryOutBoundNotice"];
+            var Billdate_S = DateTime.Now.AddDays(-15).ToString("yyyy-MM-dd");
+            var Billdate_E = DateTime.Now.AddDays(15).ToString("yyyy-MM-dd");
+            //鍐欐棩蹇楁枃浠�
+            //Log.Error($"[TransferContainerCode][ContainerCode:{input.ContainerCode}][url:{url}]");
+            var response = await url.SetHttpMethod(System.Net.Http.HttpMethod.Post)
+                                    .SetBody(new Dictionary<string, object> {
+                                            { "Billdate_S", Billdate_S },
+                                            { "Billdate_E", Billdate_E},
+                                    }, "application/json").PostAsStringAsync();
+            var Data = response.FromJson<WmsTakeMaterialOrderOutputByYiGO>();
+            var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("棰嗘枡鍑哄簱"));
+            foreach (var item in Data.Data)
+            {
+                item.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                var wmsTakeMaterialOrder = item.Adapt<WmsTakeMaterialOrder>();
+                var isExcit = await _wmsTakeMaterialOrderRep.AnyAsync(x => x.NO == item.NO);
+                if (!isExcit)
+                {
+                    wmsTakeMaterialOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+                    wmsTakeMaterialOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+                    await _wmsTakeMaterialOrderRep.InsertNowAsync(wmsTakeMaterialOrder);
+                    foreach (var item1 in item.Dtls)
+                    {
+                        var wmsTakeMaterialDeatail = item1.Adapt<WmsTakeMaterialOrderDetail>();
+                        wmsTakeMaterialDeatail.OrderId = item.Id;
+                        await _wmsTakeMaterialOrderDetailRep.InsertNowAsync(wmsTakeMaterialDeatail);
+                    }
+                }    
+            }
+        }
+        /// <summary>
+        /// 棰嗘枡涓嬫灦鎺ュ彛(yigo绯荤粺)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("ReturnTakeOrder")]
+        [UnifyResult(typeof(object))]
+        [UnitOfWork]
+        public async Task<object> ReturnTakeOrder([FromBody] ReturnTakeOrderInput input)
+        {
+            try
+            {
+                //鍒涘缓鎸囧畾鍚嶇О鐨勮鍗曟搷浣�
+                string url = App.Configuration["YiGoWebApi:CreateTX211"];
+                //鑾峰彇涓诲崟鎹�
+                var wmsTakeMaterialOrderModal = await _wmsTakeMaterialOrderRep.FirstOrDefaultAsync(x => x.Id == input.Id);
+                if (wmsTakeMaterialOrderModal == null) throw Oops.Oh("鍗曟嵁淇℃伅涓嶅瓨鍦�!");
+                // 鍐欐棩蹇楁枃浠�
+                Log.Error($"[棰嗘枡涓嬫灦][鍗曟嵁鍙�:{wmsTakeMaterialOrderModal.NO}][url:{url}]");
+
+                var response = await url.SetHttpMethod(HttpMethod.Post)
+                                        .SetBody(input, "application/json")
+                                        .PostAsAsync<ReturnTakeOrderOutput>();
+                // 鍐欐棩蹇楁枃浠�
+                Log.Error($"[棰嗘枡涓嬫灦][鍗曟嵁鍙�:{wmsTakeMaterialOrderModal.NO}][response:{response.ToJson()}]");
+
+                return XnRestfulResultProvider.RESTfulResult(response);
+            }
+            catch (Exception ex)
+            {
+                throw Oops.Oh(ex.Message);
+            }
+        }
+
+
+        /// <summary>
+        /// 涓嬪彂棰嗘枡鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("DistributeOrder")]
+        [UnitOfWork]
+        public async Task DistributeOrder(DistributeOrderInput input)
+        {
+            // 鏌ヨ鍗曟嵁灏忕被鏄�滅敓浜у叆搴撯�濈殑Id
+            var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("棰嗘枡鍑哄簱"));
+            //鑾峰彇棰嗘枡鍗曟嵁
+            var wmsTakeMaterialOrder = await _wmsTakeMaterialOrderRep
+                .Where(x=>x.Id == input.Id && x.OrderLargeCategory == wmsOrderType.Pid && x.OrderSubclass == wmsOrderType.Id)
+                .ProjectToType<WmsTakeMaterialOrder>()
+                .FirstOrDefaultAsync();
+            if (wmsTakeMaterialOrder == null) throw Oops.Oh("鍗曟嵁涓嶅瓨鍦�!");
+            wmsTakeMaterialOrder.OrderStatus = OrderStatusEnum.YIXIAFA;
+            //鏇存敼鍗曟嵁鐘舵�佷负宸蹭笅鍙�
+            await _wmsTakeMaterialOrderRep.UpdateAsync(wmsTakeMaterialOrder);
+            //鏍规嵁棰嗘枡鍗曟槑缁嗙敓鎴愬垎鎷e崟
+            foreach (var item in wmsTakeMaterialOrder.WmsTakeMaterialOrderDetail)
+            {
+                //鑾峰彇鎵�鏈変负璇ユ槑缁嗙墿鏂欑紪鐮佺殑搴撳瓨(涓嶄负瀹屾垚鐘舵�佺殑鍑哄簱浠诲姟鐨勫簱浣嶈鎺掗櫎锛屽緟寮�鍙�)
+                var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities.Where(x => x.MaterialNo == item.Materialcode)
+                    .OrderBy(n=>n.CreatedTime)
+                    .OrderByDescending(n => n.StockNumber)
+                    .ToListAsync();
+                List<FjStock> FjStockList = new List<FjStock>();
+                //浼樺厛浠庡簱浣嶄负绌虹殑搴撳瓨杩涜鍒嗘嫞
+                var fjstockModel = wmsMaterialStocks.Where(p => p.PlaceCode == "N/A").ToList();
+                if (fjstockModel != null)
+                {
+                    foreach (var a in fjstockModel)
+                    {
+                        var FjStockModal = a.Adapt<FjStock>();
+                        FjStockModal.FjQty = a.StockNumber;
+                        if (item.DistributeQty + a.StockNumber > item.Qty)
+                        {
+                            FjStockModal.FjQty = item.Qty - item.DistributeQty;
+                            item.DistributeQty = item.Qty;
+                            FjStockList.Add(FjStockModal);
+                            break;
+                        }
+                        else
+                        {
+                            item.DistributeQty += a.StockNumber;
+                        };
+                        FjStockList.Add(FjStockModal);
+                    }
+                }
+                if (item.DistributeQty < item.Qty)
+                {
+                    foreach (var b in wmsMaterialStocks.Where(x=>x.PlaceCode!="N/A"))
+                    {
+                        var FjStockModal = b.Adapt<FjStock>();
+                        FjStockModal.FjQty = b.StockNumber;
+                        if (item.DistributeQty + b.StockNumber > item.Qty)
+                        {
+                            FjStockModal.FjQty = item.Qty - item.DistributeQty;
+                            item.DistributeQty = item.Qty;
+                            FjStockList.Add(FjStockModal);
+                            break;
+                        }
+                        else
+                        {
+                            item.DistributeQty += b.StockNumber;
+                        };
+                        FjStockList.Add(FjStockModal);
+                    }
+                }
+                
+                if (item.DistributeQty< item.Qty) throw Oops.Oh(item.Materialname+"搴撳瓨鏁伴噺涓嶈冻!");
+                //寰幆闇�瑕佸嚭搴撶殑搴撳瓨鐢熸垚浠诲姟鍜屽垎鎷e崟
+                foreach (var stock in FjStockList)
+                {
+                    //鑾峰彇搴撲綅淇℃伅
+                    var wmsPlacModal = await _wmsPlaceRep.FirstOrDefaultAsync(x => x.PlaceCode == stock.PlaceCode);
+                    //鐗╂枡鍜屽鍣ㄧ殑鍏崇郴
+                    var fjcvmModelList = await _wmsMaterialContainerRep.Where(z =>
+                      z.ContainerCode == stock.ContainerCode && z.BindStatus == CommonStatus.ENABLE).ToListAsync();
+                    if (wmsPlacModal!=null)
+                    {
+                        //浠诲姟
+                        var takmodel = new WmsTask()
+                        {
+                            TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
+                            TaskModel = TaskModel.QUANZIDONG,
+                            TaskType = TaskType.CHUKU,
+                            TaskLevel = 1,
+                            TaskStatus = TaskStatusEnum.WEIZHIXING,
+                            OrderNo = fjcvmModelList.FirstOrDefault().OrderNo,
+                            OrderDetailsId = item.Id,
+                            ContainerCode = stock.ContainerCode,
+                            SourcePlace = stock.PlaceCode,
+                            ToPlace = wmsPlacModal.Aisle.ToString(), //鐩爣浣�
+                            AreaName = "缁濈紭绔嬪簱",
+                            IsRead = true, //WCS鏄惁鍙互璇诲彇
+                            SendTimes = 1, //鍙戦�佹鏁�
+                            Aisle = wmsPlacModal.Aisle,
+                            TaskDodeviceStatus = TaskDodeviceStatusEnum.W,
+                            Description = "鐗╂枡"
+                        };
+                        await _wmsTaskRep.InsertAsync(takmodel);
+                    }
+                    // 鏂板鍒嗘嫞
+                    var wmsSortOrder = new WmsSortOrder()
+                    {
+                        OrderNo = wmsTakeMaterialOrder.NO,
+                        Materialcode = stock.MaterialNo,
+                        Materialname = stock.MaterialName,
+                        OrderDetailID = item.Id,
+                        ContainerOrderNo = fjcvmModelList.FirstOrDefault().OrderNo,
+                        ProjectCode = item.ProjectCode,
+                        TACode = item.TACode,
+                        PartCode = item.PartCode,
+                        PlaceCode = item.PlaceCode,
+                        ContainerCode = stock.ContainerCode,    
+                        SortQuantity = stock.FjQty,
+                        ActualQuantity = new decimal(0.00),
+                        SortStatus = SortStatusEnum.WEIFENJIAN
+                    };
+                    await _wmsSortOrderRep.InsertNowAsync(wmsSortOrder);
+                }
+            }
+            
+        }
+
+        /// <summary>
+        /// 鍒犻櫎棰嗘枡鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("delete")]
+        public async Task Delete(DeleteWmsTakeMaterialOrderInput input)
+        {
+            var wmsTakeMaterialOrder = await _wmsTakeMaterialOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+            await _wmsTakeMaterialOrderRep.DeleteAsync(wmsTakeMaterialOrder);
+        }
+
+        /// <summary>
+        /// 鏇存柊棰嗘枡鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("edit")]
+        public async Task Update(UpdateWmsTakeMaterialOrderInput input)
+        {
+            var isExist = await _wmsTakeMaterialOrderRep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+            var wmsTakeMaterialOrder = input.Adapt<WmsTakeMaterialOrder>();
+            await _wmsTakeMaterialOrderRep.UpdateAsync(wmsTakeMaterialOrder,ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇棰嗘枡鍗�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WmsTakeMaterialOrderOutput> Get([FromQuery] QueryeWmsTakeMaterialOrderInput input)
+        {
+            return (await _wmsTakeMaterialOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsTakeMaterialOrderOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇棰嗘枡鍗曞垪琛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WmsTakeMaterialOrderOutput>> List([FromQuery] WmsTakeMaterialOrderInput input)
+        {
+            return await _wmsTakeMaterialOrderRep.DetachedEntities.ProjectToType<WmsTakeMaterialOrderOutput>().ToListAsync();
+        }    
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆棰嗘枡鍗曞姛鑳�
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("fromExcel")]
+        public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        {
+            int size = 200;
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTakeMaterialOrder", "v2");
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+            for (var i = 0; i < keys.Length; i++) 
+            {
+                keys[i] = keys[i]?.Trim() ?? string.Empty;
+            }
+            ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+            List<WmsTakeMaterialOrderOutput> wmsTakeMaterialOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsTakeMaterialOrderOutput> dict);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = wmsTakeMaterialOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+            var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsTakeMaterialOrder>(keys.ToList(), uniqueKeyValueDictList, size);
+            var selectKeys = keys.ToList();
+            if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+            var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsTakeMaterialOrder, WmsTakeMaterialOrderOutput>(selectKeys);
+            List<WmsTakeMaterialOrder> updates = new();
+            List<WmsTakeMaterialOrder> adds = new();
+
+            lock (_lock)
+            {
+                foreach (var filter in filters)
+                {
+                    var wmsTakeMaterialOrderExistSubList = _wmsTakeMaterialOrderRep.Where(filter).Select(selector).ToList();
+                    wmsTakeMaterialOrderExistSubList.ForEach(x => 
+                    {
+                        var k = DataConvertUtil.GetKey(x, keys);
+                        if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+                    });
+                }
+                foreach (var wmsTakeMaterialOrder in wmsTakeMaterialOrderList) 
+                {
+                    if (wmsTakeMaterialOrder.Id > 0)
+                    {
+                        if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsTakeMaterialOrder.Adapt<WmsTakeMaterialOrder>());
+                    }
+                    else 
+                    {
+                        adds.Add(wmsTakeMaterialOrder.Adapt<WmsTakeMaterialOrder>());
+                    }
+                }
+
+                if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsTakeMaterialOrderRep.Update(x));
+                
+
+                var maxId = _wmsTakeMaterialOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+                adds.ForEach(x => x.Id = ++maxId);    
+                Db.GetDbContext().Set<WmsTakeMaterialOrder>().AddRange(adds);  
+                Db.GetDbContext().SaveChanges();
+               
+            }
+            await Task.CompletedTask;
+            return adds.Count;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇棰嗘枡鍗曠殑Excel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [HttpGet("downloadExcelTemplate")]
+        public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+        {
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTakeMaterialOrder", version);
+            if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+            var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+            Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+            var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+        /// <summary>
+        /// 鏍规嵁棰嗘枡鍗曟煡璇㈠弬鏁板鍑篍xcel
+        /// </summary>
+        /// <param name="input">棰嗘枡鍗曟煡璇㈠弬鏁�</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] WmsTakeMaterialOrderSearchNonPage input)
+        {
+            var wmsTakeMaterialOrderList = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(wmsTakeMaterialOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTakeMaterialOrder", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/CallEmptyService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/CallEmptyService.cs
new file mode 100644
index 0000000..0f0cb29
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/CallEmptyService.cs
@@ -0,0 +1,107 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+using Microsoft.Extensions.Logging;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using StackExchange.Redis;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// Pda绌烘墭鍑哄簱
+    /// </summary>
+    [ApiDescriptionSettings("Pda绌烘墭鍑哄簱", Name = "CallEmpty", Order = 100)]
+    [Route("api/[Controller]")]
+    public class CallEmptyService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+        private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
+        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+        private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+        private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public CallEmptyService(
+            IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
+            IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+            IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+            IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+            IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+            IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
+            IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+            IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+            IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+            IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+            IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+        )
+        {
+            _wmsOrderRep = wmsOrderRep;
+            _wmsOrderDetailsRep = wmsOrderDetailsRep;
+            _wmsTaskRep = wmsTaskRep;
+            _wmsPlaceRep = wmsPlaceRep;
+            _wmsAreaRep = wmsAreaRep;
+            _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
+            _wmsMaterialContainerRep = wmsMaterialContainerRep;
+            _wmsContainerRep = wmsContainerRep;
+            _wmsContainerPlaceRep = wmsContainerPlaceRep;
+            _wmsMaterialStockRep = wmsMaterialStockRep;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+        }
+
+      
+        /// <summary>
+        /// 鎻愪氦鍑哄簱
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("PdaContainerOut")]
+        [UnitOfWork]
+        public async Task PdaContainerOut([FromBody] PdaContainerOutInput input)
+        {
+            //鏍规嵁杈撳叆鏁伴噺寰幆鍑哄簱鐨勬墭鐩樻暟閲�
+            for (int i = 1; i < input.Qty+1; i++)
+            {
+                //鑾峰彇搴撳瓨涓殑绌烘墭鐩�
+                var wmsMaterialStockModal = await _wmsMaterialStockRep.FirstOrDefaultAsync(x => x.Source == RuKuSourceEnum.KONGTUO);
+                //鑾峰彇搴撲綅淇℃伅
+                var wmsPlacModal = await _wmsPlaceRep.FirstOrDefaultAsync(x => x.PlaceCode == wmsMaterialStockModal.PlaceCode);
+                //浠诲姟
+                var takmodel = new WmsTask()
+                {
+                    TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
+                    TaskModel = TaskModel.QUANZIDONG,
+                    TaskType = TaskType.CHUKU,
+                    TaskLevel = 1,
+                    TaskStatus = TaskStatusEnum.WEIZHIXING,
+                    OrderNo = "N/A",
+                    OrderDetailsId = 0,
+                    ContainerCode = wmsMaterialStockModal.ContainerCode,
+                    SourcePlace = wmsMaterialStockModal.PlaceCode,
+                    ToPlace = wmsPlacModal.Aisle.ToString(), //鐩爣浣�
+                    AreaName = "缁濈紭绔嬪簱",
+                    IsRead = true, //WCS鏄惁鍙互璇诲彇
+                    SendTimes = 1, //鍙戦�佹鏁�
+                    Aisle = wmsPlacModal.Aisle,
+                    TaskDodeviceStatus = TaskDodeviceStatusEnum.W,
+                    Description = "绌烘墭"
+                 };
+                await _wmsTaskRep.InsertAsync(takmodel);
+            }
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/Dto/CallEmptyServiceInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/Dto/CallEmptyServiceInput.cs
new file mode 100644
index 0000000..c0e2ec5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/Dto/CallEmptyServiceInput.cs
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 绌烘墭鍑哄簱鍏ュ弬
+    /// </summary>
+    public class PdaContainerOutInput
+    {
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public int Qty { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceInput.cs
new file mode 100644
index 0000000..d5f38dc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceInput.cs
@@ -0,0 +1,43 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鑾峰彇鎵樼洏鐗╂枡鍒嗘嫞鍙傛暟
+    /// </summary>
+    public class GetSortInfoInput
+    {
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// </summary>
+        public string ContainerCode { get; set; }
+    }
+
+    /// <summary>
+    /// 鍒嗛〉鑾峰彇鍑哄簱鍗�
+    /// </summary>
+    public class SortPdaPageInput : PageInputBase
+    {
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string No { get; set; }
+    }
+    /// <summary>
+    /// 鏍规嵁鍑哄簱鍗曡幏鍙栧垎鎷f槑缁�
+    /// </summary>
+    public class SortPdaDetailPageInput : PageInputBase
+    {
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string No { get; set; }
+    }
+    
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceOutput.cs
new file mode 100644
index 0000000..7804b78
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceOutput.cs
@@ -0,0 +1,204 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鑾峰彇鎵樼洏鐗╂枡鍒嗘嫞鍙傛暟
+    /// </summary>
+    public class GetSortInfoOutput
+    {
+        /// <summary>
+        /// 瀹瑰櫒
+        /// </summary>
+        public WmsContainerDto WmsContainer { get; set; }
+
+        /// <summary>
+        /// 鍒嗘嫞淇℃伅
+        /// </summary>
+        public List<WmsSortOrder> WmsSortOrderList { get; set; }
+    }
+
+    /// <summary>
+    /// 鍒嗛〉鑾峰彇鍒嗘嫞鍗�
+    /// </summary>
+    public class SortPdaPageOutput : PageInputBase
+    {
+        /// <summary>
+        /// 鍗曟嵁澶х被
+        /// </summary>
+        public long OrderLargeCategory { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public long OrderSubclass { get; set; }
+
+        /// <summary>
+        /// 浜嬪姟绫诲瀷
+        /// </summary>
+        public string MoveType { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long SOID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string NO { get; set; }
+
+        /// <summary>
+        /// 棰嗘枡鍗曠敵璇锋棩鏈�
+        /// </summary>
+        public DateTimeOffset Billdate { get; set; }
+
+        /// <summary>
+        /// 棰嗙敤椤圭洰鍙�
+        /// </summary>
+        public string WBSElementcode { get; set; }
+
+        /// <summary>
+        /// 棰嗘枡閮ㄩ棬
+        /// </summary>
+        public string BenefitingDepartcode { get; set; }
+
+        /// <summary>
+        /// 鍙楃泭閮ㄩ棬
+        /// </summary>
+        public string CostCenterID { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        public string FI_Client_Analysis_H { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍏徃闂翠氦鏄�
+        /// </summary>
+        public long IsInnerCompany { get; set; }
+
+        /// <summary>
+        /// 棰嗘枡浜�
+        /// </summary>
+        public string PickerID { get; set; }
+
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        public string WarehouseCentername { get; set; }
+
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        public string Companyname { get; set; }
+
+        /// <summary>
+        /// 鏂藉伐闃�
+        /// </summary>
+        public string ConstructionTeamID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鏃堕棿
+        /// </summary>
+        public DateTimeOffset? CreatedTime { get; set; }
+    }
+
+    /// <summary>
+    /// 鏍规嵁鍑哄簱鍗曡幏鍙栧垎鎷e崟
+    /// </summary>
+    public class SortPdaDetailPageOutput
+    {
+        /// <summary>
+        /// 鏉ユ簮鍗曞彿
+        /// </summary>
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public long OrderDetailID { get; set; }
+
+        /// <summary>
+        /// 鍒嗘嫞缁勭洏鍗曞彿
+        /// </summary>
+        public string ContainerOrderNo { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public string PartCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘嫞鏁�
+        /// </summary>
+        public decimal SortQuantity { get; set; }
+
+        /// <summary>
+        /// 瀹為檯鍒嗘嫞鏁�
+        /// </summary>
+        public decimal ActualQuantity { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remarks { get; set; }
+
+        /// <summary>
+        /// 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+        /// </summary>
+        public Admin.NET.Core.SortStatusEnum SortStatus { get; set; }
+
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/MaterialSortingService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/MaterialSortingService.cs
new file mode 100644
index 0000000..2cf5aa4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/MaterialSortingService.cs
@@ -0,0 +1,216 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+using Microsoft.Extensions.Logging;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鐗╂枡鍒嗘嫞鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("Pda鍒嗘嫞", Name = "MaterialSorting", Order = 100)]
+    [Route("api/[Controller]")]
+    public class MaterialSortingService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+        private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
+        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+        private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+        private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+        private readonly IRepository<WmsSortOrder, MasterDbContextLocator> _wmsSortOrderRep;
+        private readonly IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> _wmsTakeMaterialOrderRep;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public MaterialSortingService(
+            IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
+            IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+            IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+            IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+            IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+            IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
+            IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+            IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+            IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+            IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+            IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep,
+            IRepository<WmsSortOrder, MasterDbContextLocator> wmsSortOrderRep,
+            IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> wmsTakeMaterialOrderRep
+        )
+        {
+            _wmsOrderRep = wmsOrderRep;
+            _wmsOrderDetailsRep = wmsOrderDetailsRep;
+            _wmsTaskRep = wmsTaskRep;
+            _wmsPlaceRep = wmsPlaceRep;
+            _wmsAreaRep = wmsAreaRep;
+            _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
+            _wmsMaterialContainerRep = wmsMaterialContainerRep;
+            _wmsContainerRep = wmsContainerRep;
+            _wmsContainerPlaceRep = wmsContainerPlaceRep;
+            _wmsMaterialStockRep = wmsMaterialStockRep;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+            _wmsSortOrderRep = wmsSortOrderRep;
+            _wmsTakeMaterialOrderRep = wmsTakeMaterialOrderRep;
+        }
+
+        /// <summary>
+        /// 鎵弿鍒嗘嫞鎵樼洏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("GetSortInfo")]
+        public async Task<GetSortInfoOutput> GetSortInfo([FromQuery] GetSortInfoInput input)
+        {
+            //妫�鏌ユ墭鐩�
+            var wareContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == input.ContainerCode);
+            if (wareContainer == null) throw Oops.Oh("瀹瑰櫒淇℃伅涓嶅瓨鍦�!");
+            if (wareContainer.ContainerStatus == ContainerStatus.JINYONG) throw Oops.Oh("瀹瑰櫒宸茬鐢�!");
+            if (wareContainer.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("瀹瑰櫒鍦ㄥ簱浣嶄笉鍙娇鐢�!");
+            if (wareContainer.ContainerStatus != ContainerStatus.FENJIAN) throw Oops.Oh("瀹瑰櫒涓嶅瓨鍦ㄥ垎鎷d俊鎭�!");
+
+            //鍒ゆ柇鏄惁鍦ㄤ换鍔′腑
+            var isExit = await _wmsTaskRep.AnyAsync(n => n.TaskStatus != TaskStatusEnum.WANCHENG && n.ContainerCode == input.ContainerCode);
+            if (isExit) throw Oops.Oh("瀹瑰櫒瀛樺湪鏈畬鎴愪换鍔�!");
+
+            // 鏌ヨ鍒嗘嫞璁板綍
+            var wareSortOrderList = await _wmsSortOrderRep.DetachedEntities
+                .Where(p => p.ContainerCode == input.ContainerCode && p.SortStatus != SortStatusEnum.FENJIANWANCHENG).ToListAsync();
+
+            return new GetSortInfoOutput
+            {
+                WmsContainer = wareContainer.Adapt<WmsContainerDto>(),
+                WmsSortOrderList = wareSortOrderList
+            };
+        }
+
+
+        /// <summary>
+        /// 鍒嗘嫞纭
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("SortSure")]
+        [UnitOfWork]
+        public async Task SortSure(GetSortInfoOutput input)
+        {
+            if (input.WmsContainer == null || input.WmsSortOrderList.Count == 0) throw Oops.Oh("浼犻�掑弬鏁板紓甯�!");
+
+            //妫�鏌ユ墭鐩�
+            var wareContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == input.WmsContainer.ContainerCode);
+            if (wareContainer == null) throw Oops.Oh("瀹瑰櫒淇℃伅涓嶅瓨鍦�!");
+            if (wareContainer.ContainerStatus == ContainerStatus.JINYONG) throw Oops.Oh("瀹瑰櫒宸茬鐢�!");
+            if (wareContainer.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("瀹瑰櫒鍦ㄥ簱浣嶄笉鍙娇鐢�!");
+            if (wareContainer.ContainerStatus != ContainerStatus.FENJIAN) throw Oops.Oh("瀹瑰櫒涓嶅瓨鍦ㄥ垎鎷d俊鎭�!");
+
+            var wmsMaterialContainers = await _wmsMaterialContainerRep
+            .Where(p => p.ContainerCode == input.WmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+            foreach (var item in input.WmsSortOrderList)
+            {
+                var wmsMaterialContainerModel = wmsMaterialContainers.FirstOrDefault(p => p.MaterialNo == item.Materialcode);
+                if (wmsMaterialContainerModel != null)
+                {
+                    if (wmsMaterialContainerModel.BindQuantity < item.ActualQuantity) throw Oops.Oh("鍒嗘嫞缁勭洏寮傚父!");
+                    wmsMaterialContainerModel.BindQuantity -= item.ActualQuantity;
+                    if (wmsMaterialContainerModel.BindQuantity <= 0)
+                    {
+                        wmsMaterialContainers.Remove(wmsMaterialContainerModel);
+                        await _wmsMaterialContainerRep.DeleteAsync(wmsMaterialContainerModel);
+                    }
+                    else
+                    {
+                        await _wmsMaterialContainerRep.UpdateAsync(wmsMaterialContainerModel);
+                    }
+                }
+                var stockModel = await _wmsMaterialStockRep.FirstOrDefaultAsync(p => p.ContainerCode == wareContainer.ContainerCode && p.MaterialNo == item.Materialcode);
+                if (stockModel != null)
+                {
+                    if (stockModel.StockNumber < item.ActualQuantity) throw Oops.Oh("鍒嗘嫞搴撳瓨寮傚父!");
+                    stockModel.StockNumber -= item.ActualQuantity;
+                    if (stockModel.StockNumber <= 0) await _wmsMaterialStockRep.DeleteAsync(stockModel);
+                    else await _wmsMaterialStockRep.UpdateAsync(stockModel);
+                }
+
+                // 杩欓噷杩橀渶瑕佹牴鎹疄闄呬笅鍙戞暟鏉ユ洿鏂板垎鎷g姸鎬�
+                var wareSortOrderModel = await _wmsSortOrderRep.FirstOrDefaultAsync(p => p.ContainerCode == wareContainer.ContainerCode
+                && p.SortStatus != SortStatusEnum.FENJIANWANCHENG && p.Materialcode == item.Materialcode);
+
+                if (wareSortOrderModel != null)
+                {
+                    wareSortOrderModel.ActualQuantity += item.ActualQuantity;
+
+                    if (wareSortOrderModel.ActualQuantity >= wareSortOrderModel.SortQuantity)
+                    {
+                        wareSortOrderModel.SortStatus = SortStatusEnum.FENJIANWANCHENG;
+                        _wmsSortOrderRep.UpdateNow(wareSortOrderModel);
+
+                        // 鍒嗘嫞鍗曞畬鎴愬悗鍒ゆ柇鍑哄簱鏄庣粏鏄惁瀹屾垚         
+                    }
+                    else
+                    {
+                        wareSortOrderModel.SortStatus = SortStatusEnum.FENJIANZHONG;
+                        _wmsSortOrderRep.UpdateNow(wareSortOrderModel);
+                    }
+                }
+            }
+
+            var wareSortOrderCount = await _wmsSortOrderRep
+                .Where(p => p.ContainerCode == input.WmsContainer.ContainerCode && p.SortStatus != SortStatusEnum.FENJIANWANCHENG).CountAsync();
+
+            //鏇存柊鎵樼洏鐘舵�侊紝鍒嗘嫞瀹屾垚
+            if (wareSortOrderCount == 0)
+            {
+                if (wmsMaterialContainers.Count == 0) wareContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+                else wareContainer.ContainerStatus = ContainerStatus.ZUPANG;
+                // 鏇存柊瀹瑰櫒鐘舵��
+                await _wmsContainerRep.UpdateAsync(wareContainer);
+            }
+        }
+
+
+        /// <summary>
+        /// pda鍑哄簱鍗曟煡璇�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("SortPdaPage")]
+        public async Task<PageResult<SortPdaPageOutput>> SortPdaPage([FromQuery] SortPdaPageInput input)
+        {
+            var wmsTakeMaterialOrder = await _wmsTakeMaterialOrderRep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.No), u => EF.Functions.Like(u.NO, $"%{input.No.Trim()}%"))
+                                     .ProjectToType<SortPdaPageOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsTakeMaterialOrder;
+        }
+
+        /// <summary>
+        /// pda鏍规嵁鍑哄簱鍗曡幏鍙栧垎鎷e崟鏄庣粏
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("SortPdaDetailPage")]
+        public async Task<PageResult<SortPdaDetailPageOutput>> SortPdaDetailPage([FromQuery] SortPdaDetailPageInput input)
+        {
+            var wmsTakeMaterialOrder = await _wmsSortOrderRep.DetachedEntities
+                                     .Where(x=>x.OrderNo ==input.No)
+                                     .ProjectToType<SortPdaDetailPageOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return wmsTakeMaterialOrder;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/AutomaticWarehouseService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/AutomaticWarehouseService.cs
new file mode 100644
index 0000000..7ad390a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/AutomaticWarehouseService.cs
@@ -0,0 +1,351 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// Pda鍗婅嚜鍔ㄥ叆搴�
+    /// </summary>
+    [ApiDescriptionSettings("Pda鏈嶅姟", Name = "AutomaticWarehouse", Order = 100)]
+    [Route("api/[Controller]")]
+    public class AutomaticWarehouseService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+        private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
+        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+        private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+        private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public AutomaticWarehouseService(
+            IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
+            IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+            IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+            IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+            IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+            IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
+            IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+            IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+            IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+            IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep
+        )
+        {
+            _wmsOrderRep = wmsOrderRep;
+            _wmsOrderDetailsRep = wmsOrderDetailsRep;
+            _wmsTaskRep = wmsTaskRep;
+            _wmsPlaceRep = wmsPlaceRep;
+            _wmsAreaRep = wmsAreaRep;
+            _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
+            _wmsMaterialContainerRep = wmsMaterialContainerRep;
+            _wmsContainerRep = wmsContainerRep;
+            _wmsContainerPlaceRep = wmsContainerPlaceRep;
+            _wmsMaterialStockRep = wmsMaterialStockRep;
+        }
+
+        ///// <summary>
+        ///// 鏍规嵁鎵规鍙疯幏鍙栨槑缁�
+        ///// </summary>
+        ///// <param name="input"></param>
+        ///// <returns></returns>
+        //[HttpGet("GetDetail")]
+        //public async Task<AutomaticWarehouseOutput> GetDetail([FromQuery] AutomaticWarehouseInput input)
+        //{
+        //    //鏍规嵁鍙疯幏鍙栧崟鎹富琛�
+        //    var wmsOrder =await _wmsOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Batch == input.Batch
+        //    && u.OrderDistributeType == TaskModel.BANZIDONG
+        //    && u.OrderStatus == OrderStatusEnum.YIXIAFA
+        //    );
+        //    if (wmsOrder == null) throw Oops.Oh("鍗曟嵁琚挙鍥炴垨涓嶅瓨鍦�!");
+        //    //鑾峰彇瀹屾垚鍜屾墽琛屼腑鐨勬渶澶х殑娴佹按鍙风殑鏄庣粏
+        //    var modal = await _wmsOrderDetailsRep.DetachedEntities
+        //        .Where(u => u.OrderId == wmsOrder.Id && (u.OrderStatus == OrderDetailsStatusEnum.ZHIXINGZHONG || u.OrderStatus == OrderDetailsStatusEnum.WANCHENG)
+        //        ).OrderByDescending(u=>u.MaterialNo).FirstOrDefaultAsync();
+        //    //涓嶅瓨鍦ㄨ绫诲瀷鐨勬槑缁嗘椂杩斿洖鏈�灏忕殑
+        //    if (modal == null)
+        //    {
+        //        modal = await _wmsOrderDetailsRep.DetachedEntities
+        //            .Where(u => u.OrderId == wmsOrder.Id && u.OrderStatus == OrderDetailsStatusEnum.WEIZHIXING)
+        //            .OrderBy(u => u.MaterialNo).FirstOrDefaultAsync();
+        //        if (modal == null) throw Oops.Oh("鍗曟嵁宸插畬鎴�!");
+        //    }
+        //    else {
+        //        //杩斿洖娴佹按鍙�+1
+        //        modal = await _wmsOrderDetailsRep.FirstOrDefaultAsync
+        //            (u => u.MaterialNo == (Convert.ToInt32(modal.MaterialNo) + 1).ToString());
+        //        if (modal == null)
+        //        {
+        //            modal = await _wmsOrderDetailsRep.DetachedEntities
+        //            .Where(u => u.OrderId == wmsOrder.Id && u.OrderStatus == OrderDetailsStatusEnum.WEIZHIXING)
+        //            .OrderBy(u => u.MaterialNo).FirstOrDefaultAsync();
+        //            if (modal == null) throw Oops.Oh("鍗曟嵁宸插畬鎴�!");
+        //        }
+        //    }
+            
+
+
+
+        //    //娌℃湁涓嬩竴涓槑缁嗘椂鏍规嵁鍗曟嵁涓昏〃鑾峰彇鍗曟嵁鏄庣粏涓祦姘村彿鏈�灏忓苟涓旀湭鎵ц鐨�
+        //    //if (modal == null || Convert.ToDecimal(modal.MaterialNo.Substring(modal.MaterialNo.Length - 2)) == wmsOrder.OrderQuantityTotal)
+        //    //{
+        //    //    modal = await _wmsOrderDetailsRep.DetachedEntities
+        //    //        .Where(u => u.OrderId == wmsOrder.Id && u.OrderStatus == OrderDetailsStatusEnum.WEIZHIXING)
+        //    //        .OrderBy(u => u.MaterialNo).FirstOrDefaultAsync();
+        //    //    if (modal == null) throw Oops.Oh("鍗曟嵁宸插畬鎴�!");
+        //    //}
+        //    //else
+        //    //{
+        //    //    //杩斿洖娴佹按鍙�+1
+        //    //    modal = await _wmsOrderDetailsRep.FirstOrDefaultAsync
+        //    //        (u => u.MaterialNo == (Convert.ToInt32(modal.MaterialNo) + 1).ToString());
+        //    //    if (modal == null) throw Oops.Oh("鍗曟嵁宸插畬鎴�!");
+        //    //}
+
+        //    AutomaticWarehouseOutput output = new AutomaticWarehouseOutput();
+        //    output.MaterialNo = modal.MaterialNo;
+        //    output.Batch = modal.Batch;
+        //    output.SerialNo = modal.MaterialNo.Substring(modal.MaterialNo.Length - 2);
+        //    output.Long = modal.Long;
+        //    output.Wide = modal.Wide;
+        //    output.High = modal.High;
+        //    output.PreferredPort = wmsOrder.PreferredPort;
+        //    output.Id = wmsOrder.Id;
+        //    return output;
+        //}
+
+        ///// <summary>
+        ///// 鑾峰彇鍏ュ簱鍙�
+        ///// </summary>
+        ///// <returns></returns>
+        //[HttpGet("PdaGetWarehouseEntrance")]
+        //public async Task<OutEntranceListDefaultCodeOutput> PdaGetWarehouseEntrance([FromQuery] PdaGetWarehouseEntranceInput input)
+        //{
+        //    OutEntranceListDefaultCodeOutput outEntranceListDefaultCodeOutput = new OutEntranceListDefaultCodeOutput();
+        //    //鏍规嵁鍗曟嵁id鑾峰彇鍏ュ簱鍙�
+        //    var wmsOrder = await _wmsOrderRep.DetachedEntities.Where(x => x.Id == input.Id).ProjectToType<WmsOrder>().FirstOrDefaultAsync();
+        //    List<WmsWarehouseEntrance> wmsWarehouseEntrance = new List<WmsWarehouseEntrance>();
+        //    //鏍规嵁锛屽垎鍓插叆搴撳彛瀛楃涓�
+        //    List<string> entranceList = new List<string>();
+        //    if (wmsOrder.PreferredPort != null)
+        //    {
+        //        entranceList = wmsOrder.PreferredPort.Split(',').ToList();
+        //    }
+        //    //濡傛灉鍏ュ簱鍗曢�夋嫨澶氫釜搴撳彛鍒欒繑鍥炲涓簱鍙o紝鍗曚釜鍒欒繑鍥炴墍鏈�
+        //    if (entranceList.Count>1)
+        //    {
+                
+        //        foreach (var item in entranceList)
+        //        {
+        //          var wmsWarehouseEntranceModal = await _wmsWarehouseEntranceRep
+        //          .FirstOrDefaultAsync(x => x.LesWorkShopType == LesWorkShopType.FAPAOCHEJIAN && x.Type == WarehouseEntranceEnum.RUKUKOU && x.Code == item);
+        //          wmsWarehouseEntrance.Add(wmsWarehouseEntranceModal);
+        //        }
+        //        //鑾峰彇涓婁竴鏉″叆搴撴槑缁�
+        //        var lastWmsOrderDetailsModel = wmsOrder.WareOrderDetails
+        //            .Where(z => z.OrderStatus == OrderDetailsStatusEnum.ZHIXINGZHONG || z.OrderStatus == OrderDetailsStatusEnum.WANCHENG).OrderByDescending(z => z.MaterialNo).FirstOrDefault();
+        //        //濡傛灉涓嶅瓨鍦ㄥ垯榛樿璧嬪�肩涓�涓�
+        //        if (lastWmsOrderDetailsModel == null)
+        //        {
+        //            //杩斿洖绗竴涓�
+        //            outEntranceListDefaultCodeOutput.DefaultCode = entranceList[0];
+        //        }
+        //        else
+        //        {
+        //            //鑾峰彇涓婁竴鏉″叆搴撲换鍔�
+        //            var lastModel = await _wmsTaskRep.DetachedEntities
+        //                    .FirstOrDefaultAsync(z => z.IsRead == false && z.OrderDetailsId == lastWmsOrderDetailsModel.Id);
+
+        //            if (lastModel == null)
+        //            {
+        //                //杩斿洖绗竴涓�
+        //                outEntranceListDefaultCodeOutput.DefaultCode = entranceList[0];
+        //            }
+        //            else
+        //            {
+        //                for (int i = 0; i < entranceList.Count; i++)
+        //                {
+        //                    if (lastModel.SourcePlace == entranceList[i])
+        //                    {
+
+        //                        if (i + 2 > entranceList.Count)
+        //                        {
+        //                            outEntranceListDefaultCodeOutput.DefaultCode = entranceList[0];
+        //                        }
+        //                        else
+        //                        {
+        //                            outEntranceListDefaultCodeOutput.DefaultCode = entranceList[i + 1];
+        //                        }
+        //                    }
+        //                }
+        //            }
+
+        //        }
+        //    }
+        //    else
+        //    {
+        //         wmsWarehouseEntrance = await _wmsWarehouseEntranceRep
+        //        .Where(x => x.LesWorkShopType == LesWorkShopType.FAPAOCHEJIAN && x.Type == WarehouseEntranceEnum.RUKUKOU).ToListAsync();
+        //        outEntranceListDefaultCodeOutput.DefaultCode = entranceList[0];
+        //    }
+            
+        //    List<OutEntranceListOutput> outEntranceListOutputLists = new List<OutEntranceListOutput>();
+        //    foreach (var item in wmsWarehouseEntrance)
+        //    {
+        //        OutEntranceListOutput outEntranceListOutputList = new OutEntranceListOutput();
+        //        outEntranceListOutputList.Code = item.Code;
+        //        outEntranceListOutputList.Name = item.Name;
+        //        outEntranceListOutputLists.Add(outEntranceListOutputList);
+        //    }
+        //    outEntranceListDefaultCodeOutput.OutEntranceListOutputList = outEntranceListOutputLists;
+        //    return outEntranceListDefaultCodeOutput;
+        //}
+
+        public int GetAisle(string PreferredPort)
+        {
+            if (PreferredPort == "101")
+            {
+                return 1;
+            }
+            else if (PreferredPort == "102")
+            {
+                return 2;
+            }
+            else if (PreferredPort == "103")
+            {
+                return 3;
+            }
+            else if (PreferredPort == "104")
+            {
+                return 4;
+            }
+            else if (PreferredPort == "105")
+            {
+                return 5;
+            }
+            else if (PreferredPort == "106")
+            {
+                return 6;
+            }
+            else if (PreferredPort == "107")
+            {
+                return 7;
+            }
+            else if (PreferredPort == "108")
+            {
+                return 8;
+            }
+            else if (PreferredPort == "109")
+            {
+                return 9;
+            }
+            else if (PreferredPort == "110")
+            {
+                return 10;
+            }
+            else if (PreferredPort == "111")
+            {
+                return 11;
+            }
+            else
+            {
+                return 12;
+            }
+
+        }
+
+        ///// <summary>
+        ///// 鎻愪氦鍏ュ簱
+        ///// </summary>
+        ///// <returns></returns>
+        //[HttpPost("PdaAutomaticWarehouse")]
+        //[UnitOfWork]
+        //public async Task PdaAutomaticWarehouse([FromBody] PdaAutomaticWarehouseInput input)
+        //{
+
+        //    var wmsOrderDetails = await _wmsOrderDetailsRep.FirstOrDefaultAsync(u => u.Batch == input.Batch && Convert.ToInt32(u.MaterialNo.Substring(u.MaterialNo.Length - 2)) == input.SerialNo && u.OrderStatus == OrderDetailsStatusEnum.WEIZHIXING);
+        //    if (wmsOrderDetails == null) throw Oops.Oh("鍏ュ簱鍗曟槑缁嗕笉瀛樺湪!");
+        //    //楠岃瘉涓昏〃鍗曟嵁鏄惁涓轰笅鍙戠姸鎬�
+        //    var wmsOrder = await _wmsOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == wmsOrderDetails.OrderId);
+        //    if (wmsOrder == null) throw Oops.Oh("鍗曟嵁琚挙鍥炴垨涓嶅瓨鍦�!");
+        //    //鏍规嵁搴撳彛code鑾峰彇搴撳彛淇℃伅
+        //    var wmsWarehouseEntrance = await _wmsWarehouseEntranceRep.FirstOrDefaultAsync(u => u.Code == input.EntranceCode);
+        //    if (wmsWarehouseEntrance == null) throw Oops.Oh("搴撳彛涓嶅瓨鍦�!");
+        //    //鏍规嵁宸烽亾鑾峰彇绌洪棽搴撲綅
+        //    var wmsPlaceList = await _wmsPlaceRep.DetachedEntities.Where(x => x.AreaId == 416250842476613
+        //    && x.Aisle == GetAisle(wmsWarehouseEntrance.Code)&&x.Islock == YesOrNot.N && x.PlaceStatus == PlaceStatus.KONGXIAN
+        //    ).ToListAsync();
+        //    if (wmsPlaceList.Count<=15) throw Oops.Oh("搴撲綅涓嶈冻!");
+        //    //鏇存敼鏄庣粏琛ㄧ姸鎬�
+        //    wmsOrderDetails.OrderStatus = OrderDetailsStatusEnum.ZHIXINGZHONG;
+        //    await _wmsOrderDetailsRep.UpdateAsync(wmsOrderDetails);
+        //    //搴斿綋鍒ゆ柇鍚屼竴鍏ュ簱鍙d换鍔℃槸鍚︽墽琛屽畬鎴�
+        //    //鍒ゆ柇涓婁竴鏉′换鍔℃槸鍚︽墽琛屽畬(鍚庢湡鏄惁鑰冭檻鍫嗗灈鏈哄彇璐у畬鎴�)
+        //    var lastTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Aisle == GetAisle(wmsWarehouseEntrance.Code)
+        //    && u.TaskType == TaskType.RUKU && u.TaskStatus == TaskStatusEnum.ZHIXINGZHONG && (u.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_RSSX || u.TaskDodeviceStatus == TaskDodeviceStatusEnum.W));
+        //    if (lastTask != null) throw Oops.Oh("涓婃潯浠诲姟鏈畬鎴�,璇风◢鍚庢搷浣�!");
+        //    var wmsContainer = new WmsContainer();
+        //    //鐭鏁版嵁寮傚父
+        //    while (true)
+        //    {
+        //        //鑾峰彇鎵樼洏,瀹為檯涓婃病鏈夋墭鐩�
+        //        wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(u => u.WorkShopType == LesWorkShopType.FAPAOCHEJIAN && u.ContainerStatus == ContainerStatus.KOUXIAN && u.IsVirtually == YesOrNot.Y);
+        //        if (wmsContainer == null) throw Oops.Oh("鏃犺櫄鎷熸墭鐩�!");
+        //        var materialStock = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsContainer.ContainerCode).FirstOrDefaultAsync();
+        //        if (materialStock == null) {
+        //            wmsContainer.ContainerStatus = ContainerStatus.ZUPANG;
+        //            await _wmsContainerRep.UpdateNowAsync(wmsContainer);
+        //            break;
+        //        }
+        //        else
+        //        {
+        //            wmsContainer.ContainerStatus = ContainerStatus.KUWEI;
+        //            await _wmsContainerRep.UpdateNowAsync(wmsContainer);
+        //        };
+        //    }
+        //    //鍒涘缓缁勭洏璁板綍
+        //    WmsMaterialContainer bindentranceModel = new WmsMaterialContainer();
+        //    bindentranceModel.ContainerId = wmsContainer.Id;
+        //    bindentranceModel.ContainerCode = wmsContainer.ContainerCode;
+        //    bindentranceModel.MaterialNo = wmsOrderDetails.MaterialNo;
+        //    bindentranceModel.MaterialBatch = wmsOrderDetails.Batch;
+        //    bindentranceModel.BindQuantity = 1;
+        //    bindentranceModel.OrderDetailsId = wmsOrderDetails.Id;
+        //    bindentranceModel.MaterialDensity = wmsOrderDetails.MaterialDensity;
+        //    bindentranceModel.BindStatus = CommonStatus.ENABLE;
+        //    bindentranceModel.OrderNo = wmsOrder.OrderNo;
+        //    bindentranceModel.MaterialName = "N/A";
+        //    await _wmsMaterialContainerRep.InsertAsync(bindentranceModel);
+            
+        //    //鏍规嵁鏄庣粏id鑾峰彇浠诲姟
+        //    var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.OrderDetailsId == wmsOrderDetails.Id);
+        //    if (wmsTask == null) throw Oops.Oh("璇ヤ换鍔′笉瀛樺湪!");
+
+        //    //鏇存敼浠诲姟
+        //    wmsTask.OrderNo = bindentranceModel.OrderNo;
+        //    wmsTask.TaskLevel = 2;
+        //    wmsTask.ContainerCode = wmsContainer.ContainerCode;
+        //    wmsTask.SourcePlace = wmsWarehouseEntrance.Code;//鍏ュ簱鍙�
+        //    wmsTask.Aisle = GetAisle(wmsWarehouseEntrance.Code);
+        //    wmsTask.TaskStatus = TaskStatusEnum.ZHIXINGZHONG;
+        //    wmsTask.IsRead = true;//wcs鏄惁鍙互璇诲彇
+        //    wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+        //    await _wmsTaskRep.UpdateAsync(wmsTask);
+        //}
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseInput.cs
new file mode 100644
index 0000000..e30830e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseInput.cs
@@ -0,0 +1,82 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏍规嵁鎵规鍙疯幏鍙栦换鍔″弬鏁�
+    /// </summary>
+    public class AutomaticWarehouseInput
+    {
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [Required(ErrorMessage = "鎵规鍙蜂笉鑳戒负绌�")]
+        public virtual string Batch { get; set; }
+    }
+
+    /// <summary>
+    /// 鏍规嵁id鑾峰彇鍏ュ簱鍙d笅鎷夋
+    /// </summary>
+    public class PdaGetWarehouseEntranceInput
+    {
+        /// <summary>
+        /// id
+        /// </summary>
+        public long Id { get; set; }
+    }
+    /// <summary>
+    /// 鏍规嵁鍗曟嵁缂栧彿鑾峰彇浠诲姟鍙傛暟
+    /// </summary>
+    public class PdaAutomaticWarehouseInput
+    {
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        [Required(ErrorMessage = "鎵规鍙蜂笉鑳戒负绌�")]
+        public virtual string Batch { get; set; }
+
+        /// <summary>
+        /// 娴佹按鍙�
+        /// </summary>
+        [Required(ErrorMessage = "娴佹按鍙蜂笉鑳戒负绌�")]
+        public virtual int SerialNo { get; set; }
+        /// <summary>
+        /// 鍏ュ簱鍙�
+        /// </summary>
+        [Required(ErrorMessage = "鍏ュ簱鍙d笉鑳戒负绌�")]
+        public virtual string EntranceCode { get; set; }
+    }
+    /// <summary>
+    /// 鍙嶉浠诲姟鐘舵�佸弬鏁�
+    /// </summary>
+    public class CallBackInput
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        [Required(ErrorMessage = "浠诲姟鍙蜂笉鑳戒负绌�")]
+        public virtual string TaskNo { get; set; }
+        /// <summary>
+        /// 璁惧绫诲瀷
+        /// 杈撻�佺嚎 = 1,
+        /// 鍫嗗灈鏈� = 2,
+        /// </summary>
+        [Required(ErrorMessage = "璁惧绫诲瀷")]
+        public virtual string DeviceType { get; set; }
+
+        ///<summary>
+        ///璁惧鎵ц鐘舵��
+        ///杈撻�佺嚎鎵ц涓� = 1,
+        ///杈撻�佺嚎瀹屾垚 = 2,
+        ///鍫嗗灈鏈烘墽琛屼腑 = 3,
+        ///鍫嗗灈鏈哄畬鎴� = 4,
+        /// </summary>
+        [Required(ErrorMessage = "璁惧绫诲瀷")]
+        public virtual string TaskState { get; set; }
+    } 
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseOutput.cs
new file mode 100644
index 0000000..e8cec59
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseOutput.cs
@@ -0,0 +1,99 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鏍规嵁鍗曟嵁缂栧彿鑾峰彇浠诲姟杩斿洖鍊�
+    /// </summary>
+    public class AutomaticWarehouseOutput
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鎵规    
+        /// </summary>
+        public string Batch { get; set; }
+
+        /// <summary>
+        /// 娴佹按鍙�
+        /// </summary>
+        public string SerialNo { get; set; }
+
+        /// <summary>
+        /// 闀�    
+        /// </summary>
+        public int Long { get; set; }
+
+        /// <summary>
+        /// 瀹�    
+        /// </summary>
+        public int Wide { get; set; }
+
+        /// <summary>
+        /// 楂�    
+        /// </summary>
+        public int High { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鍙�
+        /// </summary>
+        public string PreferredPort { get; set; }
+
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+    }
+
+    
+    /// <summary>
+    /// 杩斿洖鍙傛暟
+    /// </summary>
+    public class OutEntranceListDefaultCodeOutput
+    {
+        /// <summary>
+        /// 榛樿鍏ュ簱鍙�
+        /// </summary>
+        public string DefaultCode { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鍙e悕绉�
+        /// </summary>
+        public List<OutEntranceListOutput> OutEntranceListOutputList { get; set; }
+    }
+
+    /// <summary>
+    /// 鑾峰彇鍏ュ簱鍙d笅鎷夋杈撳嚭鍙傛暟
+    /// </summary>
+    public class OutEntranceListOutput
+    {
+        /// <summary>
+        /// 鍏ュ簱鍙ode
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鍙e悕绉�
+        /// </summary>
+        public string Name { get; set; }
+    }
+
+    /// <summary>
+    /// 鍙嶉浠诲姟鐘舵�佽緭鍑哄弬鏁�
+    /// </summary>
+    public class CallBackOutput
+    {
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public virtual string LocationCode { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseInput.cs
new file mode 100644
index 0000000..d5363e7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseInput.cs
@@ -0,0 +1,69 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鎵撳寘淇℃伅鍙傛暟
+    /// </summary>
+    public class GroupDiskOutWarehouseInput
+    {
+        /// <summary>
+        /// 鍑哄簱鍙�
+        /// </summary>
+        public virtual string OutputEntrance { get; set; }
+
+        /// <summary>
+        /// PLC鐗╂枡缂栫爜
+        /// </summary>
+        public List<MaterialNoList> PlcMaterialNoList { get; set; }
+
+
+        /// <summary>
+        /// WMS鐗╂枡缂栫爜
+        /// </summary>
+        public List<MaterialNoList> WcsMaterialNoList { get; set; }
+    }
+
+    /// <summary>
+    /// 鎵撳寘淇℃伅鍙傛暟
+    /// </summary>
+    public class PackOutWarehouseInput
+    {
+        /// <summary>
+        /// 鎵撳寘鏍囩
+        /// </summary>
+        public virtual string PackCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public List<MaterialNoList> MaterialNoList { get; set; }
+    }
+
+    /// <summary>
+    /// 鐗╂枡缂栫爜list
+    /// </summary>
+    public class MaterialNoList
+    {
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public virtual string MaterialNo { get; set; }
+    }
+    /// <summary>
+    /// 鏍规嵁鍑哄簱鍙h幏鍙栫爜鍨涙暟鎹�
+    /// </summary>
+    public class GetPackInfomationInput
+    {
+        /// <summary>
+        /// 鍑哄簱鍙�
+        /// </summary>
+        [Required(ErrorMessage = "鍑哄簱鍙d笉鑳戒负绌�")]
+        public virtual string OutputEntrance { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseOutput.cs
new file mode 100644
index 0000000..71b4f9b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseOutput.cs
@@ -0,0 +1,56 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鎵撳寘淇℃伅杩斿洖鍙傛暟
+    /// </summary>
+    public class GroupDiskOutWarehouseOutput
+    {
+        /// <summary>
+        /// 鍗曟嵁缂栧彿  
+        /// </summary>
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        public string OrderSubclass { get; set; }
+
+        /// <summary>
+        /// 鎵撳寘淇℃伅list
+        /// </summary>
+        public List<GroupDiskOutWarehouse> GroupDiskOutWarehouseList { get; set; }
+    }
+
+    /// <summary>
+    /// 鎵撳寘淇℃伅
+    /// </summary>
+    public class GroupDiskOutWarehouse
+    {
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public virtual string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 闀�    
+        /// </summary>
+        public int Long { get; set; }
+
+        /// <summary>
+        /// 瀹�    
+        /// </summary>
+        public int Wide { get; set; }
+
+        /// <summary>
+        /// 楂�    
+        /// </summary>
+        public int High { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/GroupDiskOutWarehouseService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/GroupDiskOutWarehouseService.cs
new file mode 100644
index 0000000..da0d554
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/GroupDiskOutWarehouseService.cs
@@ -0,0 +1,236 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// Pda缁勭洏鍑哄簱
+    /// </summary>
+    [ApiDescriptionSettings("Pda鏈嶅姟", Name = "GroupDiskOutWarehouse", Order = 100)]
+    [Route("api/[Controller]")]
+    public class GroupDiskOutWarehouseService : IDynamicApiController, ITransient
+    {
+
+        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+        private readonly IRepository<LesPackWarehouse, MasterDbContextLocator> _lesPackWarehouseRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+        private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+        private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public GroupDiskOutWarehouseService(
+            IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+            IRepository<LesPackWarehouse, MasterDbContextLocator> lesPackWarehouseRep,
+            IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+            IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+            IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+            IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep,
+            IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+            IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+            IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+            IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep
+        )
+        {
+            _wmsOrderDetailsRep = wmsOrderDetailsRep;
+            _lesPackWarehouseRep = lesPackWarehouseRep;
+            _wmsTaskRep = wmsTaskRep;
+            _wmsPlaceRep = wmsPlaceRep;
+            _wmsAreaRep = wmsAreaRep;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+            _wmsMaterialContainerRep = wmsMaterialContainerRep;
+            _wmsContainerRep = wmsContainerRep;
+            _wmsContainerPlaceRep = wmsContainerPlaceRep;
+            _wmsMaterialStockRep = wmsMaterialStockRep;
+        }
+
+        
+        ///// <summary>
+        ///// 鏍规嵁鍑哄簱鍙h幏鍙栫爜鍨涙暟鎹�
+        ///// </summary>
+        ///// <param name="input"></param>
+        ///// <returns></returns>
+        //[HttpGet("GetPackInfomation")]
+        //public async Task<GroupDiskOutWarehouseOutput> GetPackInfomation([FromQuery] GetPackInfomationInput input)
+        //{
+        //    //鏍规嵁鍑哄簱鍙h幏鍙栨墦鍖呰〃鏁版嵁
+        //    var lesPackWarehouseList = await _lesPackWarehouseRep.DetachedEntities
+        //        .Where(u => u.OutputEntrance == input.OutputEntrance && u.LesPackState == LesPackState.WEICHUKU)
+        //        .ToListAsync();
+        //    if (lesPackWarehouseList.Count==0) throw Oops.Oh("鏆傛棤鐮佸灈淇℃伅!");
+
+        //    //if(lesPackWarehouseList.Select(p=>p.OrderNo).Count()>=2) throw Oops.Oh("鐮佸灈淇℃伅瀛樺湪澶氭潯!璇峰埌PC绔繘琛屽鐞�!");
+
+        //    //鑾峰彇褰撳墠鍑哄簱鍗曟嵁涓墽琛屼腑鍗曟嵁鏄庣粏
+        //    var wmsOrderDetailList = await _wmsOrderDetailsRep
+        //        .Where(u=>u.WareOrder.OrderLargeCategory== 408734100951109 && u.WareOrder.ExitPort==input.OutputEntrance
+        //        && lesPackWarehouseList.Select(n=>n.MaterialNo).ToList().Contains(u.MaterialNo)).ProjectToType<WmsOrderDetails>().ToListAsync();
+        //    if (wmsOrderDetailList.Count == 0) throw Oops.Oh("鏆傛棤鍑哄簱鍗曟嵁!");
+
+        //    List<GroupDiskOutWarehouse> groupDiskOutWarehouseList = new List<GroupDiskOutWarehouse>();//鎵撳寘淇℃伅list
+        //    foreach (var item in wmsOrderDetailList)
+        //    {
+        //        GroupDiskOutWarehouse groupDiskOutWarehouse = new GroupDiskOutWarehouse();
+        //        groupDiskOutWarehouse.MaterialNo = item.MaterialNo;
+        //        groupDiskOutWarehouse.Long = item.Long;
+        //        groupDiskOutWarehouse.Wide = item.Wide;
+        //        groupDiskOutWarehouse.High = item.High;
+        //        groupDiskOutWarehouseList.Add(groupDiskOutWarehouse);
+        //    }
+
+        //    return new GroupDiskOutWarehouseOutput()
+        //    {
+        //        OrderNo = wmsOrderDetailList.FirstOrDefault().WareOrder.OrderNo,
+        //        OrderSubclass = (await _wmsOrderTypeRep.FirstOrDefaultAsync(u => u.Id == wmsOrderDetailList.FirstOrDefault().WareOrder.OrderSubclass)).Name,
+        //        GroupDiskOutWarehouseList = groupDiskOutWarehouseList
+        //    };
+        //}
+
+        ///// <summary>
+        ///// 纭鍑哄簱
+        ///// </summary>
+        ///// <param name="input"></param>
+        ///// <returns></returns>
+        //[HttpPost("Pack")]
+        //[UnitOfWork]
+        //public async Task PackOutWarehouse([FromBody] PackOutWarehouseInput input)
+        //{
+        //    if (input.PackCode == null) throw Oops.Oh("鎵撳寘鏍囩涓嶈兘涓虹┖!");
+        //    if (input.MaterialNoList.Count == 0) throw Oops.Oh("鐗╂枡鐮佷笉鑳戒负绌�!");
+        //    //寰幆鐗╂枡鐮�
+        //    foreach (var item in input.MaterialNoList)
+        //    {
+        //        //鏇存敼鎵撳寘琛ㄤ腑鐗╂枡鐘舵��
+        //        var lesPackWarehouse = await _lesPackWarehouseRep.FirstOrDefaultAsync(u => u.MaterialNo == item.MaterialNo && u.LesPackState == LesPackState.WEICHUKU);
+        //        if (lesPackWarehouse == null) throw Oops.Oh("鎵撳寘琛ㄤ腑涓嶅瓨鍦ㄦ鐗╂枡!");
+        //        lesPackWarehouse.PackCode = input.PackCode;
+        //        lesPackWarehouse.LesPackState = LesPackState.ZHUANYIKU;
+        //        await _lesPackWarehouseRep.UpdateAsync(lesPackWarehouse);
+
+        //        //鏇存敼鍗曟嵁鏄庣粏鐨勭姸鎬�
+        //        var wmsOrderDetail = await _wmsOrderDetailsRep.FirstOrDefaultAsync
+        //            (u => u.MaterialNo == item.MaterialNo && u.WareOrder.OrderLargeCategory == 408734100951109);         
+        //        if (wmsOrderDetail == null) throw Oops.Oh("鍗曟嵁鏄庣粏涓笉瀛樺湪姝ょ墿鏂�!");
+        //        wmsOrderDetail.OrderStatus = OrderDetailsStatusEnum.WANCHENG;
+        //        await _lesPackWarehouseRep.UpdateAsync(lesPackWarehouse);
+
+        //        //鏇存敼浠诲姟鐘舵��
+        //        var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync
+        //            (u => u.OrderDetailsId == wmsOrderDetail.Id && u.TaskStatus == TaskStatusEnum.ZHIXINGZHONG 
+        //            && u.TaskType == TaskType.CHUKU);
+        //        if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦�!");
+        //        wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+        //        await _wmsTaskRep.UpdateAsync(wmsTask);
+        //    }
+            
+        //    //鏍囩鐮佸綋鎵樼洏鐮佷娇鐢�
+        //    var oldwmsMaterialContainerList = await _wmsMaterialContainerRep
+        //        .Where(p => p.ContainerCode == input.PackCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+        //    if (oldwmsMaterialContainerList.Count > 0)
+        //    {
+        //        foreach (var item in oldwmsMaterialContainerList)
+        //        {
+        //            await _wmsMaterialContainerRep.DeleteAsync(item);
+        //        }
+        //    }
+        //    //缁勭洏鍗曟嵁 榛樿绌烘墭鍗曟嵁
+        //    var orderNo = "N/A";
+        //    if (input.MaterialNoList.Count > 0) orderNo =YitIdHelper.NextId().ToString();
+
+        //    //鏂板缁勭洏鏁版嵁
+        //    foreach (var item in input.MaterialNoList)
+        //    {
+        //        //鑾峰彇鏄庣粏
+        //        var wmsOrderDetail = await _wmsOrderDetailsRep.FirstOrDefaultAsync
+        //            (u => u.MaterialNo == item.MaterialNo && u.WareOrder.OrderLargeCategory == 408734100951109);
+        //        if (wmsOrderDetail == null) throw Oops.Oh("鍗曟嵁淇℃伅寮傚父!"+item.MaterialNo);
+        //        WmsMaterialContainer bindentranceModel = new WmsMaterialContainer();
+        //        bindentranceModel.ContainerCode = input.PackCode;
+        //        bindentranceModel.ContainerId = 405636578041925;
+        //        bindentranceModel.MaterialNo = item.MaterialNo;
+        //        bindentranceModel.MaterialBatch = wmsOrderDetail.Batch;
+        //        bindentranceModel.MaterialSpec = wmsOrderDetail.Long.ToString() + "*" + wmsOrderDetail.Wide.ToString() + "*" + wmsOrderDetail.High.ToString();
+        //        bindentranceModel.BindQuantity = 1;
+        //        bindentranceModel.OrderDetailsId = wmsOrderDetail.Id;
+        //        bindentranceModel.MaterialDensity = wmsOrderDetail.MaterialDensity;
+        //        bindentranceModel.BindStatus = CommonStatus.ENABLE;
+        //        bindentranceModel.OrderNo = orderNo;
+        //        bindentranceModel.MaterialName = "N/A";
+        //        await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel);
+        //    }
+        //    //鑾峰彇杞Щ搴撳簱浣�
+        //    var zyPlaceModel = await _wmsPlaceRep.DetachedEntities.Where(p => p.WmsArea.AreaType == AreaType.ZHUANYIKU
+        //    && p.Islock == YesOrNot.N && p.PlaceStatus == PlaceStatus.KONGXIAN).FirstOrDefaultAsync();
+
+        //    //鍒涘缓浠诲姟  鐩墠浜哄伐杞Щ鏃犻渶鍒涘缓浠诲姟
+        //    //鍒涘缓鎵樼洏搴撲綅鍏崇郴琛�
+        //    var wmsContainerPlaceModel = new WmsContainerPlace()
+        //    {
+        //        PlaceId = zyPlaceModel.Id,
+        //        PlaceCode = zyPlaceModel.PlaceCode,
+        //        ContainerId = 405636578041925,   //缁欎簣涓�涓壒瀹氱殑鍊�
+        //        ContainerCode = input.PackCode,
+        //        ContainerPlaceStatus = CommonStatus.ENABLE
+        //    };
+        //    await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlaceModel);
+
+        //    //鏇存柊搴撳瓨
+        //    var wmsMaterialContainerList = await _wmsMaterialContainerRep.DetachedEntities
+        //        .Where(p => p.OrderNo == orderNo && p.BindStatus == CommonStatus.ENABLE).ProjectToType<WmsMaterialContainer>().ToListAsync();
+
+        //    //鐗╂枡鍏ュ簱
+        //    foreach (var item in wmsMaterialContainerList)
+        //    {
+        //        var StockModel = await _wmsMaterialStockRep
+        //            .Where(p => p.ContainerCode == input.PackCode
+        //            && p.MaterialName == item.MaterialName && p.MaterialNo == item.MaterialNo && p.MaterialBatch == item.MaterialBatch ).FirstOrDefaultAsync();
+        //        if (StockModel != null)
+        //        {
+        //            StockModel.MaterialDensity = item.MaterialDensity;
+        //            StockModel.PlaceCode = zyPlaceModel.PlaceCode;
+        //            StockModel.AreaId = zyPlaceModel.AreaId;
+        //            StockModel.StockNumber = item.BindQuantity;
+        //            await _wmsMaterialStockRep.UpdateAsync(StockModel);
+        //        }
+        //        else
+        //        {
+        //            StockModel = new WmsMaterialStock()
+        //            {
+        //                MaterialNo = item.MaterialNo,
+        //                //MaterialType = item.MaterialType,
+        //                MaterialName = item.MaterialName,
+        //                MaterialSpec = item.MaterialSpec,
+        //                MaterialBatch = item.MaterialBatch,
+        //                MaterialDensity = item.MaterialDensity,
+        //                //InspectionMethod = item.WmsMaterial.InspectionMethod,
+        //                //UnitType = item.WmsMaterial.UnitType,
+        //                //UnitNo = item.WmsMaterial.UnitNo,
+        //                StockNumber = item.BindQuantity,
+        //                PlaceCode = zyPlaceModel.PlaceCode,
+        //                ContainerCode = input.PackCode,
+        //                AreaId = zyPlaceModel.AreaId,
+        //            };
+        //            await _wmsMaterialStockRep.InsertAsync(StockModel);
+        //        }
+        //    }
+
+        //    //鏇存柊搴撲綅
+        //    zyPlaceModel.PlaceStatus = PlaceStatus.CUNHUO;
+        //    await _wmsPlaceRep.UpdateAsync(zyPlaceModel);
+        //}
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeInput.cs
new file mode 100644
index 0000000..4b63939
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeInput.cs
@@ -0,0 +1,94 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鑾峰彇鎵樼洏鍏ュ弬
+    /// </summary>
+    public class GetContainerInput
+    {
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        [Required(ErrorMessage = "鎵樼洏鍙蜂笉鑳戒负绌�")]
+        public string ContainerCode { get; set; }
+    }
+
+    /// <summary>
+    ///缁勭洏鍏ュ弬
+    /// </summary>
+    public class GroupDiskInput
+    {
+        /// <summary>
+        /// 鎵樼洏
+        /// </summary>
+        [Required(ErrorMessage = "鎵樼洏涓嶈兘涓虹┖")]
+        public String ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡淇℃伅
+        /// </summary>
+        public List<ReceiptMaterialContainerInput> WmsMaterials { get; set; }
+    }
+
+    /// <summary>
+    /// 缁勭洏鐗╂枡淇℃伅
+    /// </summary>
+    public class ReceiptMaterialContainerInput
+    {
+        /// <summary>
+        /// 鏄庣粏id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+    }
+
+    /// <summary>
+    ///鎻愪氦鍏ュ簱鍏ュ弬
+    /// </summary>
+    public class PdaInWarehouseInput
+    {
+        /// <summary>
+        /// 鎵樼洏
+        /// </summary>
+        [Required(ErrorMessage = "鎵樼洏涓嶈兘涓虹┖")]
+        public String ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡淇℃伅
+        /// </summary>
+        public List<ReceiptMaterialContainerInput> WmsMaterials { get; set; }
+    }
+
+    /// <summary>
+    ///鑾峰彇鐗╂枡鍏ュ弬
+    /// </summary>
+    public class PadGetMaterialInput : PageInputBase
+    {
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [Required(ErrorMessage = "鍗曟嵁缂栧彿涓嶈兘涓虹┖")]
+        public String NO { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeOutput.cs
new file mode 100644
index 0000000..15c58c4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeOutput.cs
@@ -0,0 +1,154 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鑾峰彇鎵樼洏鍏ュ弬
+    /// </summary>
+    public class GetContainerOutput
+    {
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        [Required(ErrorMessage = "鎵樼洏鍙蜂笉鑳戒负绌�")]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public WmsContainerDto WmsContainer { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡淇℃伅
+        /// </summary>
+        public List<WmsMaterialContainer> WmsMaterials { get; set; }
+    }
+
+    /// <summary>
+    /// 浠呮敹璐э紙缁勭洏锛夋垚鍔熻緭鍑哄弬鏁�
+    /// </summary>
+    public class GroupDiskOutput
+    {
+        /// <summary>
+        /// 鎵樼洏
+        /// </summary>
+        public string Containercode { get; set; }
+
+        /// <summary>
+        /// 缁勭洏鍗曟嵁
+        /// </summary>
+        public string OrderNo { get; set; }
+    }
+    /// <summary>
+    /// 鐗╂枡杩斿洖鍙傛暟
+    /// </summary>
+    public class PadGetMaterialOutput
+    {
+        /// <summary>
+        /// Id  
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        public decimal SingleLength { get; set; }
+
+        /// <summary>
+        /// 鐞嗚閲嶉噺    
+        /// </summary>
+        public decimal TheoreticalWeight { get; set; }
+
+        /// <summary>
+        /// 涓嶅惈绋庡崟浠�    
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 鎴愭湰閲戦    
+        /// </summary>
+        public decimal SumPrice { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鍚堝悓缂栧彿
+        /// </summary>
+        public string ContractCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍝佸悕
+        /// </summary>
+        public string TradeName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧椤瑰彿
+        /// </summary>
+        public string ItemNo { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍗曚綅
+        /// </summary>
+        public string CustomsUnitName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鏁伴噺   
+        /// </summary>
+        public decimal CustomsNum { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧閲戦 
+        /// </summary>
+        public decimal CustomsPrices { get; set; }
+
+        /// <summary>
+        /// 鐗规畩瑕佹眰
+        /// </summary>
+        public string SpecialNeeds { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public OrderDetailsStatusEnum OrderStatus { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/WmsInWarehouseService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/WmsInWarehouseService.cs
new file mode 100644
index 0000000..5c239eb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/WmsInWarehouseService.cs
@@ -0,0 +1,317 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+using Microsoft.Extensions.Logging;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// Pda鐗╂枡鍏ュ簱
+    /// </summary>
+    [ApiDescriptionSettings("Pda鐗╂枡鍏ュ簱", Name = "WmsInWarehouse", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsInWarehouseService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+        private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
+        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+        private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+        private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public WmsInWarehouseService(
+            IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
+            IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+            IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+            IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+            IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+            IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
+            IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+            IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+            IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+            IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+            IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+        )
+        {
+            _wmsOrderRep = wmsOrderRep;
+            _wmsOrderDetailsRep = wmsOrderDetailsRep;
+            _wmsTaskRep = wmsTaskRep;
+            _wmsPlaceRep = wmsPlaceRep;
+            _wmsAreaRep = wmsAreaRep;
+            _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
+            _wmsMaterialContainerRep = wmsMaterialContainerRep;
+            _wmsContainerRep = wmsContainerRep;
+            _wmsContainerPlaceRep = wmsContainerPlaceRep;
+            _wmsMaterialStockRep = wmsMaterialStockRep;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵樼洏
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("GetContainer")]
+        [UnifyResult(typeof(GetContainerOutput))]
+        public async Task<object> CheckTray([FromQuery] GetContainerInput input)
+        {
+            var containerModel = await _wmsContainerRep.DetachedEntities.Where(z => z.ContainerCode == input.ContainerCode).FirstOrDefaultAsync();
+            //濡傛灉鎵樼洏涓嶅瓨鍦ㄥ垯娣诲姞涓�涓�
+            if (containerModel == null) {
+                var ContainerInfo = input.Adapt<WmsContainer>();
+                ContainerInfo.ContainerStatus = ContainerStatus.KOUXIAN;
+                ContainerInfo.AssetNo = "N/A";
+                ContainerInfo.ContainerCategory = ContainerCategory.GZP;
+                ContainerInfo.ErpNo = "N/A";
+                ContainerInfo.IsVirtually = YesOrNot.N;
+                ContainerInfo.WorkShopType = LesWorkShopType.FAPAOCHEJIAN;
+                await _wmsContainerRep.InsertNowAsync(ContainerInfo);
+                containerModel = ContainerInfo;
+            }
+
+            var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG  && p.TaskStatus != TaskStatusEnum.QUXIAO);
+            if (isExit) return XnRestfulResultProvider.RESTfulMesaage("鎵樼洏瀛樺湪鏈畬鎴愪换鍔�!");
+
+            isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+            if (isExit) return XnRestfulResultProvider.RESTfulMesaage("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+            var GetContainerOutputModel = new GetContainerOutput()
+            {
+                WmsContainer = containerModel.Adapt<WmsContainerDto>(),
+                ContainerCode = containerModel.ContainerCode,
+            };
+            //鑾峰彇缁勭洏鏁版嵁
+            GetContainerOutputModel.WmsMaterials = await _wmsMaterialContainerRep
+                    .Where(p => p.ContainerCode == containerModel.ContainerCode && p.BindStatus == CommonStatus.ENABLE)
+                    .OrderByDescending(p => p.CreatedTime)
+                    .ProjectToType<WmsMaterialContainer>().ToListAsync();
+            return XnRestfulResultProvider.RESTfulResult(GetContainerOutputModel);
+        }
+
+        /// <summary>
+        /// 閫氳繃鍗曟嵁鍙疯幏鍙栨槑缁�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("PadGetMaterial")]
+        [UnifyResult(typeof(List<PadGetMaterialOutput>))]
+        public async Task<object> PadGetMaterial([FromQuery] PadGetMaterialInput input)
+        {
+            // 鏌ヨ鍗曟嵁灏忕被鏄�滅敓浜у叆搴撯�濈殑Id
+            var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("鐢熶骇鍏ュ簱"));
+            //鑾峰彇涓昏〃
+            var wmsOrders = await _wmsOrderRep.DetachedEntities
+                                     .Where(u => u.NO == input.NO && u.OrderStatus == OrderStatusEnum.YIXIAFA && u.OrderLargeCategory == wmsOrderType.Pid && u.OrderSubclass == wmsOrderType.Id)
+                                     .FirstOrDefaultAsync();
+            if (wmsOrders == null) return XnRestfulResultProvider.RESTfulMesaage("鍗曟嵁涓嶅瓨鍦ㄦ垨鏈笅鍙�!");
+            var wmsOrderDetailList =await _wmsOrderDetailsRep.Where(x=>x.OrderId == wmsOrders.Id)
+                                          .ProjectToType<PadGetMaterialOutput>()
+                                          .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return XnRestfulResultProvider.RESTfulResult(wmsOrderDetailList);
+        }
+
+
+        /// <summary>
+        /// 鎵ц浠呮敹璐ф搷浣滐紙缁勭洏锛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("GroupDisk")]
+        [UnitOfWork]
+        public async Task<GroupDiskOutput> GroupDisk(GroupDiskInput input)
+        {
+            //鎵樼洏淇℃伅
+            var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus != ContainerStatus.JINYONG);
+            if (containerModel == null) throw Oops.Oh("鎵樼洏淇℃伅涓嶅瓨鍦�!");
+
+            if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("瀹瑰櫒瀛樺湪鍒嗘嫞淇℃伅!");
+
+            if (containerModel.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+            var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO);
+            if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪鏈畬鎴愪换鍔′腑!");
+
+            isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+            if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+            //缁勭洏淇℃伅
+            var WmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+
+            if (WmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(WmsMaterialContainerList);
+
+            //淇敼鎵樼洏鐘舵��
+            containerModel.ContainerStatus = ContainerStatus.ZUPANG;
+            await _wmsContainerRep.UpdateAsync(containerModel);
+
+            //缁勭洏鍗曟嵁
+            var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString();
+            if (input.WmsMaterials.Count >0)//鏈夌墿鏂欑殑鎯呭喌
+            {
+                foreach (var item in input.WmsMaterials)
+                {
+                    var bindentranceModel = item.Adapt<WmsMaterialContainer>();
+                    bindentranceModel.MaterialName = item.Materialname;
+                    bindentranceModel.MaterialNo = item.Materialcode;
+                    bindentranceModel.MaterialId = 4567;//鏆傚畾
+                    bindentranceModel.ContainerId = containerModel.Id;
+                    bindentranceModel.ContainerCode = containerModel.ContainerCode;
+                    bindentranceModel.MaterialBatch = "N/A";
+                    bindentranceModel.MaterialSpec = "N/A";
+                    bindentranceModel.BindQuantity = item.Qty;
+                    bindentranceModel.BindStatus = CommonStatus.ENABLE;
+                    bindentranceModel.OrderNo = orderNo;
+                    bindentranceModel.MaterialDensity = "N/A";
+                    bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                    await _wmsMaterialContainerRep.InsertAsync(bindentranceModel);
+                }
+            }
+            //else//绌烘墭鍏ュ簱鐨勬儏鍐�
+            //{
+            //    // 鍒涘缓鏂扮粍鐩樿褰�
+            //    var bindentranceModel = new WmsMaterialContainer();
+            //    bindentranceModel.MaterialName = "绌烘墭";
+            //    bindentranceModel.MaterialNo = containerModel.ContainerCode;
+            //    bindentranceModel.MaterialId = 55555;//鏆傚畾
+            //    bindentranceModel.ContainerId = containerModel.Id;
+            //    bindentranceModel.ContainerCode = containerModel.ContainerCode;
+            //    bindentranceModel.MaterialBatch = "N/A";
+            //    bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth;
+            //    bindentranceModel.BindQuantity = 1;
+            //    bindentranceModel.BindStatus = CommonStatus.ENABLE;
+            //    bindentranceModel.OrderNo = orderNo;
+            //    bindentranceModel.MaterialDensity = "N/A";
+            //    bindentranceModel.Id = YitIdHelper.NextId();
+            //    await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel);
+            //}
+            return new GroupDiskOutput()
+            {
+                Containercode = input.ContainerCode,
+                OrderNo = orderNo
+            };
+        }
+
+        /// <summary>
+        /// 鎻愪氦鍏ュ簱
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("PdaInWarehouse")]
+        [UnitOfWork]
+        public async Task PdaInWarehouse([FromBody] PdaInWarehouseInput input)
+        {
+
+            //妫�鏌ユ墭鐩�
+            var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(p => p.ContainerCode == input.ContainerCode && p.ContainerStatus != ContainerStatus.JINYONG);
+            if (containerModel == null) throw Oops.Oh("鎵樼洏涓嶅瓨鍦�!");
+
+            if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("瀹瑰櫒瀛樺湪鍒嗘嫞淇℃伅!");
+
+            var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO);
+            if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪鏈畬鎴愪换鍔′腑!");
+
+            var isInPlace = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus == ContainerStatus.KUWEI);
+            if (isInPlace != null) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+            isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+            if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+            //鍒犻櫎缁勭洏淇℃伅
+            var oldwmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+
+            if (oldwmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(oldwmsMaterialContainerList);
+
+            //缁勭洏鍗曟嵁鍙�
+            var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString();
+            if (input.WmsMaterials!=null || input.WmsMaterials.Count <= 0)//鏈夌墿鏂欑殑鎯呭喌
+            {
+                foreach (var item in input.WmsMaterials)
+                {
+                    var bindentranceModel = item.Adapt<WmsMaterialContainer>();
+                    bindentranceModel.MaterialName = item.Materialname;
+                    bindentranceModel.MaterialNo = item.Materialcode;
+                    bindentranceModel.MaterialId = 4567;
+                    bindentranceModel.ContainerId = containerModel.Id;
+                    bindentranceModel.ContainerCode = containerModel.ContainerCode;
+                    bindentranceModel.MaterialBatch = "N/A";
+                    bindentranceModel.MaterialSpec = "N/A";
+                    bindentranceModel.BindQuantity = item.Qty;
+                    bindentranceModel.BindStatus = CommonStatus.ENABLE;
+                    bindentranceModel.OrderNo = orderNo;
+                    bindentranceModel.MaterialDensity = "N/A";
+                    bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                    await _wmsMaterialContainerRep.InsertAsync(bindentranceModel);
+                    ////鏇存敼鏄庣粏鍏ュ簱鏁伴噺
+                    //var wmsOrderDetailsModal = await _wmsOrderDetailsRep.FirstOrDefaultAsync(x => x.Id == item.Id);
+                    //wmsOrderDetailsModal.InventoryQty += item.Qty; 
+                }
+            }
+            //else//绌烘墭鍏ュ簱鐨勬儏鍐�
+            //{
+            //    // 鍒涘缓鏂扮粍鐩樿褰�
+            //    var bindentranceModel = new WmsMaterialContainer();
+            //    bindentranceModel.MaterialName = "绌烘墭";
+            //    bindentranceModel.MaterialNo = containerModel.ContainerCode;
+            //    bindentranceModel.MaterialId = 55555;//鏆傚畾
+            //    bindentranceModel.ContainerId = containerModel.Id;
+            //    bindentranceModel.ContainerCode = containerModel.ContainerCode;
+            //    bindentranceModel.MaterialBatch = "N/A";//鏍规嵁鐗╂枡鐮佽В鏋�
+            //    bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth;
+            //    bindentranceModel.BindQuantity = 1;
+            //    bindentranceModel.BindStatus = CommonStatus.ENABLE;
+            //    bindentranceModel.OrderNo = orderNo;
+            //    bindentranceModel.MaterialDensity = "N/A";//鏍规嵁鐗╂枡鐮佽В鏋�
+            //    bindentranceModel.Id = YitIdHelper.NextId();
+            //    await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel);
+            //}
+
+            ////淇敼鎵樼洏鐘舵��
+            //containerModel.ContainerStatus = ContainerStatus.ZUPANG;
+            //await _wmsContainerRep.UpdateAsync(containerModel);
+            //鍒嗛厤宸烽亾
+            var Aisle = 1;
+
+            //浠诲姟
+            var takmodel = new WmsTask()
+            {
+                TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
+                TaskModel = TaskModel.QUANZIDONG,
+                TaskType = TaskType.RUKU,
+                TaskLevel = 1,
+                TaskStatus = TaskStatusEnum.ZHIXINGZHONG,
+                OrderNo = orderNo,
+                OrderDetailsId = 0,
+                ContainerCode = input.ContainerCode,
+                SourcePlace = "鍏ュ簱鍙�",//鐜板満鎯呭喌涓虹┖
+                ToPlace = "", //鐩爣浣�
+                AreaName = "缁濈紭绔嬪簱",
+                IsRead = true, //WCS鏄惁鍙互璇诲彇
+                SendTimes = 1, //鍙戦�佹鏁�
+                Aisle = Aisle,// 鏍规嵁搴撳尯id鑾峰彇鍑犲彿鎻愬崌鏈猴紝娴嬭瘯浣跨敤涓�鍙�
+                TaskDodeviceStatus = TaskDodeviceStatusEnum.W 
+            };
+            if (input.WmsMaterials == null || input.WmsMaterials.Count <= 0) {
+                takmodel.Description = "绌烘墭";
+            }
+            else
+            {
+                takmodel.Description = "鐗╂枡";
+            };
+            
+            await _wmsTaskRep.InsertAsync(takmodel);
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderInput.cs
new file mode 100644
index 0000000..cff9b4b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderInput.cs
@@ -0,0 +1,39 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍗曟嵁鍙峰弬鏁�
+    /// </summary>
+    public class GetOrderDetailInput
+    {
+        /// <summary>
+        /// 鍗曟嵁缂栧彿  
+        /// </summary>
+        public string NO { get; set; }
+    }
+    /// <summary>
+    /// 纭鏀惰揣鍙傛暟
+    /// </summary>
+    public class ConfirmReceiptInput
+    {
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿  
+        /// </summary>
+        public string NO { get; set; }
+
+        /// <summary>
+        /// 璇︽儏鍙傛暟  
+        /// </summary>
+        public List<GetOrderDetailOutput> GetOrderDetailOutputList { get; set; }
+    }
+    
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderOutput.cs
new file mode 100644
index 0000000..2763f47
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderOutput.cs
@@ -0,0 +1,125 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍗曟嵁鍙疯繑鍥炲弬鏁�
+    /// </summary>
+    public class GetOrderDetailOutput
+    {
+        /// <summary>
+        /// Id  
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        public decimal SingleLength { get; set; }
+
+        /// <summary>
+        /// 鐞嗚閲嶉噺    
+        /// </summary>
+        public decimal TheoreticalWeight { get; set; }
+
+        /// <summary>
+        /// 涓嶅惈绋庡崟浠�    
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 鎴愭湰閲戦    
+        /// </summary>
+        public decimal SumPrice { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鍚堝悓缂栧彿
+        /// </summary>
+        public string ContractCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍝佸悕
+        /// </summary>
+        public string TradeName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧椤瑰彿
+        /// </summary>
+        public string ItemNo { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍗曚綅
+        /// </summary>
+        public string CustomsUnitName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鏁伴噺   
+        /// </summary>
+        public decimal CustomsNum { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧閲戦 
+        /// </summary>
+        public decimal CustomsPrices { get; set; }
+
+        /// <summary>
+        /// 鐗规畩瑕佹眰
+        /// </summary>
+        public string SpecialNeeds { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        public OrderDetailsStatusEnum OrderStatus { get; set; }
+
+        /// <summary>
+        /// 閫佽揣鏁伴噺
+        /// </summary>
+        public decimal DeliveryQty { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鏁伴噺
+        /// </summary>
+        public decimal ReceivedQty { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/WmsPdaReceiptOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/WmsPdaReceiptOrderService.cs
new file mode 100644
index 0000000..0a39eee
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/WmsPdaReceiptOrderService.cs
@@ -0,0 +1,147 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+using Microsoft.Extensions.Logging;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using StackExchange.Redis;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// Pda鏀惰揣
+    /// </summary>
+    [ApiDescriptionSettings("Pda鏀惰揣", Name = "PdaReceiptOrder", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsPdaReceiptOrderService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+        private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
+        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+        private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+        private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+        private readonly IRepository<WmsReceiptOrderDetails, MasterDbContextLocator> _wmsReceiptOrderDetailsRep;
+        private readonly IRepository<WmsReceiptOrder, MasterDbContextLocator> _wmsReceiptOrderRep;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public WmsPdaReceiptOrderService(
+            IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
+            IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+            IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+            IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+            IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+            IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
+            IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+            IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+            IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+            IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+            IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep,
+            IRepository<WmsReceiptOrderDetails, MasterDbContextLocator> wmsReceiptOrderDetailsRep,
+            IRepository<WmsReceiptOrder, MasterDbContextLocator> wmsReceiptOrderRep
+        )
+        {
+            _wmsOrderRep = wmsOrderRep;
+            _wmsOrderDetailsRep = wmsOrderDetailsRep;
+            _wmsTaskRep = wmsTaskRep;
+            _wmsPlaceRep = wmsPlaceRep;
+            _wmsAreaRep = wmsAreaRep;
+            _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
+            _wmsMaterialContainerRep = wmsMaterialContainerRep;
+            _wmsContainerRep = wmsContainerRep;
+            _wmsContainerPlaceRep = wmsContainerPlaceRep;
+            _wmsMaterialStockRep = wmsMaterialStockRep;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+            _wmsReceiptOrderDetailsRep = wmsReceiptOrderDetailsRep;
+            _wmsReceiptOrderRep = wmsReceiptOrderRep;
+        }
+
+      
+        /// <summary>
+        /// 鏍规嵁鍗曟嵁鍙疯幏鍙栨槑缁�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("GetOrderDetail")]
+        [UnitOfWork]
+        [UnifyResult(typeof(List<GetOrderDetailOutput>))]
+        public async Task<object> GetOrderDetail([FromQuery] GetOrderDetailInput input)
+        {
+            //鑾峰彇涓诲崟鎹�
+            var wmsOrders = await _wmsReceiptOrderRep.DetachedEntities
+                                     .FirstOrDefaultAsync(u => u.NO == input.NO);
+            if (wmsOrders == null) return XnRestfulResultProvider.RESTfulMesaage("鍗曟嵁涓嶅瓨鍦�!");
+            //宸叉敹璐х殑鏄庣粏涓嶆樉绀�
+            var wmsOrderDetails = await _wmsReceiptOrderDetailsRep.DetachedEntities
+                                     .Where(u => u.OrderId == wmsOrders.Id)
+                                     .Where(u=>u.ReceivingStatus != ReceivingStatus.YISHOUHUO)
+                                     .ProjectToType<WmsReceiptOrderDetailOutput>()
+                                     .ToListAsync();     
+            return wmsOrderDetails;
+        }
+
+        /// <summary>
+        /// pda纭鏀惰揣
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("ConfirmReceipt")]
+        [UnitOfWork]
+        public async Task ConfirmReceipt([FromBody] ConfirmReceiptInput input)
+        {
+            if (input.GetOrderDetailOutputList.Count == 0) throw Oops.Oh("鏀惰揣淇℃伅涓嶈兘涓虹┖锛�");
+            //鑾峰彇涓诲崟鎹�
+            var wmsOrderModal = await _wmsReceiptOrderRep.DetachedEntities
+                                     .ProjectToType<WmsReceiptOrder>()
+                                     .FirstOrDefaultAsync(u => u.NO == input.NO);
+            if (wmsOrderModal == null) throw Oops.Oh("鍗曟嵁涓嶅瓨鍦�!");
+            if (wmsOrderModal.ReceivingStatus == ReceivingStatus.YISHOUHUO) throw Oops.Oh("璇ュ崟鎹凡鏀惰揣!");
+
+            if (input.GetOrderDetailOutputList.Count == 0) throw Oops.Oh("鏀惰揣淇℃伅涓嶈兘涓虹┖锛�");
+            //鏇存柊鏀惰揣鏄庣粏
+            foreach (var item in input.GetOrderDetailOutputList)
+            {
+                var WmsReceiptOrderDetailsModal = item.Adapt<WmsReceiptOrderDetails>();
+                if (WmsReceiptOrderDetailsModal.ReceivedQty < WmsReceiptOrderDetailsModal.DeliveryQty)
+                {
+                    WmsReceiptOrderDetailsModal.ReceivingStatus = ReceivingStatus.SHOUHUOZHONG;
+                }
+                else
+                {
+                    WmsReceiptOrderDetailsModal.ReceivingStatus = ReceivingStatus.YISHOUHUO;
+
+                }
+                await _wmsReceiptOrderDetailsRep.UpdateNowAsync(WmsReceiptOrderDetailsModal);
+            }
+            //鑾峰彇璇ユ敹璐у崟鎵�鏈夊崟鎹槑缁嗘暟閲�
+            int allCount = wmsOrderModal.WmsReceiptOrderDetails.Count;
+            //鑾峰彇璇ユ敹璐у崟鎵�鏈夊畬鎴愮殑鍗曟嵁鏄庣粏
+            var wcCount = await _wmsReceiptOrderDetailsRep.Where(x => x.OrderId == wmsOrderModal.Id && x.ReceivingStatus == ReceivingStatus.YISHOUHUO).ToListAsync();
+            if (allCount == wcCount.Count)
+            {
+                wmsOrderModal.ReceivingStatus = ReceivingStatus.YISHOUHUO;
+            }
+            else if (allCount > wcCount.Count && wcCount.Count > 0)
+            {
+                wmsOrderModal.ReceivingStatus = ReceivingStatus.SHOUHUOZHONG;
+            }
+            else
+            {
+                wmsOrderModal.ReceivingStatus = ReceivingStatus.WEISHOUHUO;
+            }
+            await _wmsReceiptOrderRep.UpdateAsync(wmsOrderModal);
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseInput.cs
new file mode 100644
index 0000000..00ab8e9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseInput.cs
@@ -0,0 +1,94 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鑾峰彇鎵樼洏鍏ュ弬
+    /// </summary>
+    public class StockReturnGetContainerInput
+    {
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        [Required(ErrorMessage = "鎵樼洏鍙蜂笉鑳戒负绌�")]
+        public string ContainerCode { get; set; }
+    }
+
+    /// <summary>
+    ///缁勭洏鍏ュ弬
+    /// </summary>
+    public class StockReturnGroupDiskInput
+    {
+        /// <summary>
+        /// 鎵樼洏
+        /// </summary>
+        [Required(ErrorMessage = "鎵樼洏涓嶈兘涓虹┖")]
+        public String ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡淇℃伅
+        /// </summary>
+        public List<ReceiptMaterialContainerInput> WmsMaterials { get; set; }
+    }
+
+    /// <summary>
+    /// 缁勭洏鐗╂枡淇℃伅
+    /// </summary>
+    public class StockReturnReceiptMaterialContainerInput
+    {
+        /// <summary>
+        /// 鏄庣粏id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+    }
+
+    /// <summary>
+    ///鎻愪氦鍏ュ簱鍏ュ弬
+    /// </summary>
+    public class StockReturnPdaInWarehouseInput
+    {
+        /// <summary>
+        /// 鎵樼洏
+        /// </summary>
+        [Required(ErrorMessage = "鎵樼洏涓嶈兘涓虹┖")]
+        public String ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡淇℃伅
+        /// </summary>
+        public List<ReceiptMaterialContainerInput> WmsMaterials { get; set; }
+    }
+
+    /// <summary>
+    ///鑾峰彇鐗╂枡鍏ュ弬
+    /// </summary>
+    public class StockReturnPadGetMaterialInput : PageInputBase
+    {
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [Required(ErrorMessage = "鍗曟嵁缂栧彿涓嶈兘涓虹┖")]
+        public String NO { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseOutput.cs
new file mode 100644
index 0000000..67b0754
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseOutput.cs
@@ -0,0 +1,119 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鑾峰彇鎵樼洏鍏ュ弬
+    /// </summary>
+    public class StockReturnGetContainerOutput
+    {
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        [Required(ErrorMessage = "鎵樼洏鍙蜂笉鑳戒负绌�")]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public WmsContainerDto WmsContainer { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡淇℃伅
+        /// </summary>
+        public List<WmsMaterialContainer> WmsMaterials { get; set; }
+    }
+
+    /// <summary>
+    /// 浠呮敹璐э紙缁勭洏锛夋垚鍔熻緭鍑哄弬鏁�
+    /// </summary>
+    public class StockReturnGroupDiskOutput
+    {
+        /// <summary>
+        /// 鎵樼洏
+        /// </summary>
+        public string Containercode { get; set; }
+
+        /// <summary>
+        /// 缁勭洏鍗曟嵁
+        /// </summary>
+        public string OrderNo { get; set; }
+    }
+    /// <summary>
+    /// 鐗╂枡杩斿洖鍙傛暟
+    /// </summary>
+    public class StockReturnPadGetMaterialOutput
+    {
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+        /// </summary>
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        public decimal Length { get; set; }
+
+        /// <summary>
+        /// 浠舵暟    
+        /// </summary>
+        public decimal Number { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        public string Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public string PartCode { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/WmsStockReturnWarehouseService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/WmsStockReturnWarehouseService.cs
new file mode 100644
index 0000000..23fb9c1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/WmsStockReturnWarehouseService.cs
@@ -0,0 +1,317 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+using Microsoft.Extensions.Logging;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// Pda鐗╂枡閫�搴�
+    /// </summary>
+    [ApiDescriptionSettings("Pda鐗╂枡閫�搴�", Name = "WmsStockReturnWarehouse", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WmsStockReturnWarehouseService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsStockReturnOrder, MasterDbContextLocator> _wmsStockReturnOrderRep;
+        private readonly IRepository<WmsStockReturnOrderDetails, MasterDbContextLocator> _wmsStockReturnOrderDetailsRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+        private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
+        private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+        private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+        private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+        private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public WmsStockReturnWarehouseService(
+            IRepository<WmsStockReturnOrder, MasterDbContextLocator> wmsStockReturnOrderRep,
+            IRepository<WmsStockReturnOrderDetails, MasterDbContextLocator> wmsStockReturnOrderDetailsRep,
+            IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+            IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+            IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+            IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
+            IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+            IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+            IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+            IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+            IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+        )
+        {
+            _wmsStockReturnOrderRep = wmsStockReturnOrderRep;
+            _wmsStockReturnOrderDetailsRep = wmsStockReturnOrderDetailsRep;
+            _wmsTaskRep = wmsTaskRep;
+            _wmsPlaceRep = wmsPlaceRep;
+            _wmsAreaRep = wmsAreaRep;
+            _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
+            _wmsMaterialContainerRep = wmsMaterialContainerRep;
+            _wmsContainerRep = wmsContainerRep;
+            _wmsContainerPlaceRep = wmsContainerPlaceRep;
+            _wmsMaterialStockRep = wmsMaterialStockRep;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵樼洏
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("GetContainer")]
+        [UnifyResult(typeof(StockReturnGetContainerOutput))]
+        public async Task<object> CheckTray([FromQuery] StockReturnGetContainerInput input)
+        {
+            var containerModel = await _wmsContainerRep.DetachedEntities.Where(z => z.ContainerCode == input.ContainerCode).FirstOrDefaultAsync();
+            //濡傛灉鎵樼洏涓嶅瓨鍦ㄥ垯娣诲姞涓�涓�
+            if (containerModel == null) {
+                var ContainerInfo = input.Adapt<WmsContainer>();
+                ContainerInfo.ContainerStatus = ContainerStatus.KOUXIAN;
+                ContainerInfo.AssetNo = "N/A";
+                ContainerInfo.ContainerCategory = ContainerCategory.GZP;
+                ContainerInfo.ErpNo = "N/A";
+                ContainerInfo.IsVirtually = YesOrNot.N;
+                ContainerInfo.WorkShopType = LesWorkShopType.FAPAOCHEJIAN;
+                await _wmsContainerRep.InsertNowAsync(ContainerInfo);
+                containerModel = ContainerInfo;
+            }
+
+            var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG  && p.TaskStatus != TaskStatusEnum.QUXIAO);
+            if (isExit) return XnRestfulResultProvider.RESTfulMesaage("鎵樼洏瀛樺湪鏈畬鎴愪换鍔�!");
+
+            isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+            if (isExit) return XnRestfulResultProvider.RESTfulMesaage("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+            var GetContainerOutputModel = new GetContainerOutput()
+            {
+                WmsContainer = containerModel.Adapt<WmsContainerDto>(),
+                ContainerCode = containerModel.ContainerCode,
+            };
+            //鑾峰彇缁勭洏鏁版嵁
+            GetContainerOutputModel.WmsMaterials = await _wmsMaterialContainerRep
+                    .Where(p => p.ContainerCode == containerModel.ContainerCode && p.BindStatus == CommonStatus.ENABLE)
+                    .OrderByDescending(p => p.CreatedTime)
+                    .ProjectToType<WmsMaterialContainer>().ToListAsync();
+            return XnRestfulResultProvider.RESTfulResult(GetContainerOutputModel);
+        }
+
+        /// <summary>
+        /// 閫氳繃鍗曟嵁鍙疯幏鍙栨槑缁�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("PadGetMaterial")]
+        [UnifyResult(typeof(List<StockReturnPadGetMaterialOutput>))]
+        public async Task<object> PadGetMaterial([FromQuery] StockReturnPadGetMaterialInput input)
+        {
+            // 鏌ヨ鍗曟嵁灏忕被鏄�滅墿鏂欓��搴撯�濈殑Id
+            var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("鐗╂枡閫�搴�"));
+            //鑾峰彇涓昏〃
+            var wmsOrders = await _wmsStockReturnOrderRep.DetachedEntities
+                                     .Where(u => u.NO == input.NO && u.OrderStatus == OrderStatusEnum.YIXIAFA && u.OrderLargeCategory == wmsOrderType.Pid && u.OrderSubclass == wmsOrderType.Id)
+                                     .FirstOrDefaultAsync();
+            if (wmsOrders == null) return XnRestfulResultProvider.RESTfulMesaage("鍗曟嵁涓嶅瓨鍦ㄦ垨鏈笅鍙�!");
+            var wmsOrderDetailList =await _wmsStockReturnOrderDetailsRep.Where(x=>x.OrderId == wmsOrders.Id)
+                                          .ProjectToType<StockReturnPadGetMaterialOutput>()
+                                          .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return XnRestfulResultProvider.RESTfulResult(wmsOrderDetailList);
+        }
+
+
+        /// <summary>
+        /// 鎵ц浠呮敹璐ф搷浣滐紙缁勭洏锛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("GroupDisk")]
+        [UnitOfWork]
+        public async Task<StockReturnGroupDiskOutput> GroupDisk(StockReturnGroupDiskInput input)
+        {
+            //鎵樼洏淇℃伅
+            var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus != ContainerStatus.JINYONG);
+            if (containerModel == null) throw Oops.Oh("鎵樼洏淇℃伅涓嶅瓨鍦�!");
+
+            if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("瀹瑰櫒瀛樺湪鍒嗘嫞淇℃伅!");
+
+            if (containerModel.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+            var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO);
+            if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪鏈畬鎴愪换鍔′腑!");
+
+            isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+            if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+            //缁勭洏淇℃伅
+            var WmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+
+            if (WmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(WmsMaterialContainerList);
+
+            //淇敼鎵樼洏鐘舵��
+            containerModel.ContainerStatus = ContainerStatus.ZUPANG;
+            await _wmsContainerRep.UpdateAsync(containerModel);
+
+            //缁勭洏鍗曟嵁
+            var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString();
+            if (input.WmsMaterials.Count >0)//鏈夌墿鏂欑殑鎯呭喌
+            {
+                foreach (var item in input.WmsMaterials)
+                {
+                    var bindentranceModel = item.Adapt<WmsMaterialContainer>();
+                    bindentranceModel.MaterialName = item.Materialname;
+                    bindentranceModel.MaterialNo = item.Materialcode;
+                    bindentranceModel.MaterialId = 4567;//鏆傚畾
+                    bindentranceModel.ContainerId = containerModel.Id;
+                    bindentranceModel.ContainerCode = containerModel.ContainerCode;
+                    bindentranceModel.MaterialBatch = "N/A";
+                    bindentranceModel.MaterialSpec = "N/A";
+                    bindentranceModel.BindQuantity = item.Qty;
+                    bindentranceModel.BindStatus = CommonStatus.ENABLE;
+                    bindentranceModel.OrderNo = orderNo;
+                    bindentranceModel.MaterialDensity = "N/A";
+                    bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                    await _wmsMaterialContainerRep.InsertAsync(bindentranceModel);
+                }
+            }
+            //else//绌烘墭鍏ュ簱鐨勬儏鍐�
+            //{
+            //    // 鍒涘缓鏂扮粍鐩樿褰�
+            //    var bindentranceModel = new WmsMaterialContainer();
+            //    bindentranceModel.MaterialName = "绌烘墭";
+            //    bindentranceModel.MaterialNo = containerModel.ContainerCode;
+            //    bindentranceModel.MaterialId = 55555;//鏆傚畾
+            //    bindentranceModel.ContainerId = containerModel.Id;
+            //    bindentranceModel.ContainerCode = containerModel.ContainerCode;
+            //    bindentranceModel.MaterialBatch = "N/A";
+            //    bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth;
+            //    bindentranceModel.BindQuantity = 1;
+            //    bindentranceModel.BindStatus = CommonStatus.ENABLE;
+            //    bindentranceModel.OrderNo = orderNo;
+            //    bindentranceModel.MaterialDensity = "N/A";
+            //    bindentranceModel.Id = YitIdHelper.NextId();
+            //    await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel);
+            //}
+            return new StockReturnGroupDiskOutput()
+            {
+                Containercode = input.ContainerCode,
+                OrderNo = orderNo
+            };
+        }
+
+        /// <summary>
+        /// 鎻愪氦鍏ュ簱
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("PdaInWarehouse")]
+        [UnitOfWork]
+        public async Task PdaInWarehouse([FromBody] StockReturnPdaInWarehouseInput input)
+        {
+
+            //妫�鏌ユ墭鐩�
+            var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(p => p.ContainerCode == input.ContainerCode && p.ContainerStatus != ContainerStatus.JINYONG);
+            if (containerModel == null) throw Oops.Oh("鎵樼洏涓嶅瓨鍦�!");
+
+            if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("瀹瑰櫒瀛樺湪鍒嗘嫞淇℃伅!");
+
+            var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO);
+            if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪鏈畬鎴愪换鍔′腑!");
+
+            var isInPlace = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus == ContainerStatus.KUWEI);
+            if (isInPlace != null) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+            isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+            if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+            //鍒犻櫎缁勭洏淇℃伅
+            var oldwmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+
+            if (oldwmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(oldwmsMaterialContainerList);
+
+            //缁勭洏鍗曟嵁鍙�
+            var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString();
+            if (input.WmsMaterials!=null || input.WmsMaterials.Count <= 0)//鏈夌墿鏂欑殑鎯呭喌
+            {
+                foreach (var item in input.WmsMaterials)
+                {
+                    var bindentranceModel = item.Adapt<WmsMaterialContainer>();
+                    bindentranceModel.MaterialName = item.Materialname;
+                    bindentranceModel.MaterialNo = item.Materialcode;
+                    bindentranceModel.MaterialId = 4567;
+                    bindentranceModel.ContainerId = containerModel.Id;
+                    bindentranceModel.ContainerCode = containerModel.ContainerCode;
+                    bindentranceModel.MaterialBatch = "N/A";
+                    bindentranceModel.MaterialSpec = "N/A";
+                    bindentranceModel.BindQuantity = item.Qty;
+                    bindentranceModel.BindStatus = CommonStatus.ENABLE;
+                    bindentranceModel.OrderNo = orderNo;
+                    bindentranceModel.MaterialDensity = "N/A";
+                    bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                    await _wmsMaterialContainerRep.InsertAsync(bindentranceModel);
+                    ////鏇存敼鏄庣粏鍏ュ簱鏁伴噺
+                    //var wmsOrderDetailsModal = await _wmsOrderDetailsRep.FirstOrDefaultAsync(x => x.Id == item.Id);
+                    //wmsOrderDetailsModal.InventoryQty += item.Qty; 
+                }
+            }
+            //else//绌烘墭鍏ュ簱鐨勬儏鍐�
+            //{
+            //    // 鍒涘缓鏂扮粍鐩樿褰�
+            //    var bindentranceModel = new WmsMaterialContainer();
+            //    bindentranceModel.MaterialName = "绌烘墭";
+            //    bindentranceModel.MaterialNo = containerModel.ContainerCode;
+            //    bindentranceModel.MaterialId = 55555;//鏆傚畾
+            //    bindentranceModel.ContainerId = containerModel.Id;
+            //    bindentranceModel.ContainerCode = containerModel.ContainerCode;
+            //    bindentranceModel.MaterialBatch = "N/A";//鏍规嵁鐗╂枡鐮佽В鏋�
+            //    bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth;
+            //    bindentranceModel.BindQuantity = 1;
+            //    bindentranceModel.BindStatus = CommonStatus.ENABLE;
+            //    bindentranceModel.OrderNo = orderNo;
+            //    bindentranceModel.MaterialDensity = "N/A";//鏍规嵁鐗╂枡鐮佽В鏋�
+            //    bindentranceModel.Id = YitIdHelper.NextId();
+            //    await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel);
+            //}
+
+            ////淇敼鎵樼洏鐘舵��
+            //containerModel.ContainerStatus = ContainerStatus.ZUPANG;
+            //await _wmsContainerRep.UpdateAsync(containerModel);
+            //鍒嗛厤宸烽亾
+            var Aisle = 1;
+
+            //浠诲姟
+            var takmodel = new WmsTask()
+            {
+                TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
+                TaskModel = TaskModel.QUANZIDONG,
+                TaskType = TaskType.RUKU,
+                TaskLevel = 1,
+                TaskStatus = TaskStatusEnum.ZHIXINGZHONG,
+                OrderNo = orderNo,
+                OrderDetailsId = 0,
+                ContainerCode = input.ContainerCode,
+                SourcePlace = "鍏ュ簱鍙�",//鐜板満鎯呭喌涓虹┖
+                ToPlace = "", //鐩爣浣�
+                AreaName = "缁濈紭绔嬪簱",
+                IsRead = true, //WCS鏄惁鍙互璇诲彇
+                SendTimes = 1, //鍙戦�佹鏁�
+                Aisle = Aisle,// 鏍规嵁搴撳尯id鑾峰彇鍑犲彿鎻愬崌鏈猴紝娴嬭瘯浣跨敤涓�鍙�
+                TaskDodeviceStatus = TaskDodeviceStatusEnum.W 
+            };
+            if (input.WmsMaterials == null || input.WmsMaterials.Count <= 0) {
+                takmodel.Description = "绌烘墭";
+            }
+            else
+            {
+                takmodel.Description = "鐗╂枡";
+            };
+            
+            await _wmsTaskRep.InsertAsync(takmodel);
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsInput.cs
new file mode 100644
index 0000000..ece90c1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsInput.cs
@@ -0,0 +1,60 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍏ュ簱鎶ヨ〃杈撳叆鍙傛暟
+    /// </summary>
+    public class GetWareHouseInReportFormsInput: PageInputBase
+    {
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        public string Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public string PartCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public string PlaceCode { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsOutput.cs
new file mode 100644
index 0000000..636ad9d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsOutput.cs
@@ -0,0 +1,110 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍏ュ簱鎶ヨ〃杩斿洖鍙傛暟
+    /// </summary>
+    public class GetWareHouseInReportFormsOutput
+    {
+        /// <summary>
+        /// SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑
+        /// </summary>
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 涓嬪彂鏁伴噺
+        /// </summary>
+        public decimal DistributeQty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        public decimal SingleLength { get; set; }
+
+        /// <summary>
+        /// 浠舵暟    
+        /// </summary>
+        public decimal Number { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        public string Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public string PartCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鍑哄簱鏃堕棿
+        /// </summary>
+        public DateTimeOffset? CreatedTime { get; set; }
+
+        /// <summary>
+        /// 鍑哄簱瀹屾垚鏃堕棿
+        /// </summary>
+        public DateTimeOffset? UpdatedTime { get; set; }
+
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        public int Aisle { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁涓昏〃
+        /// </summary>
+        public WmsTakeMaterialOrder WmsTakeMaterialOrder { get; set; }
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/WareHouseInReportFormsService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/WareHouseInReportFormsService.cs
new file mode 100644
index 0000000..a6019c0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/WareHouseInReportFormsService.cs
@@ -0,0 +1,118 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using SixLabors.ImageSharp;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍏ュ簱鎶ヨ〃
+    /// </summary>
+    [ApiDescriptionSettings("鍏ュ簱鎶ヨ〃", Name = "WareHouseInReportForms", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WareHouseInReportFormsService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsOrder,MasterDbContextLocator> _wmsOrderRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+        private readonly IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> _wmsTakeMaterialOrderRep;
+        private readonly IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> _wmsTakeMaterialOrderDetailRep;
+
+        public WareHouseInReportFormsService(
+            IRepository<WmsOrder,MasterDbContextLocator> wmsOrderRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+            ,IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+            ,IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep
+            ,IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep
+            ,IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep
+            ,IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> wmsTakeMaterialOrderRep
+            ,IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> wmsTakeMaterialOrderDetailRep
+        )
+        {
+            _wmsOrderRep = wmsOrderRep;
+            _sysDictTypeRep = sysDictTypeRep;
+            _sysDictDataRep = sysDictDataRep;
+            _sysExcelTemplateService = sysExcelTemplateService;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+            _wmsOrderDetailsRep = wmsOrderDetailsRep;
+            _wmsPlaceRep = wmsPlaceRep;
+            _wmsTaskRep = wmsTaskRep;
+            _wmsTakeMaterialOrderDetailRep = wmsTakeMaterialOrderDetailRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鍏ュ簱鎶ヨ〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("GetWareHouseOutReportForms")]
+        public async Task<PageResult<GetWareHouseInReportFormsOutput>> GetWareHouseOutReportForms([FromQuery] GetWareHouseInReportFormsInput input)
+        {
+            //浠诲姟琛ㄥ叧鑱旈鏂欒〃
+            var pageResult = new PageResult<GetWareHouseInReportFormsOutput>();
+            pageResult.PageNo = input.PageNo;
+            pageResult.PageSize = input.PageSize;
+            var result =from p in _wmsTaskRep.AsQueryable()
+            join d in _wmsTakeMaterialOrderDetailRep.AsQueryable() on p.OrderDetailsId equals d.Id
+            where p.TaskStatus == TaskStatusEnum.WANCHENG
+            select new GetWareHouseInReportFormsOutput
+            {
+                OID = d.OID,
+                Materialcode = d.Materialcode,
+                Materialname = d.Materialname,
+                Unit = d.Unit,
+                Qty = d.Qty,
+                DistributeQty = d.DistributeQty,
+                SingleLength = d.SingleLength,
+                Number = d.Number,
+                Batchno_SCM = d.Batchno_SCM,
+                Batchno_WMS = d.Batchno_WMS,
+                ProjectCode = d.ProjectCode,
+                TACode = d.TACode,
+                PartCode = d.PartCode,
+                ContainerCode = p.ContainerCode,
+                PlaceCode = p.SourcePlace,
+                CreatedTime = p.CreatedTime,
+                Aisle = p.Aisle,
+                UpdatedTime = p.UpdatedTime,
+            };
+            result = result
+                .Where(!string.IsNullOrEmpty(input.Materialcode), u => EF.Functions.Like(u.Materialcode, $"%{input.Materialcode.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.Materialname), u => EF.Functions.Like(u.Materialname, $"%{input.Materialname.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.Batchno_SCM), u => EF.Functions.Like(u.Batchno_SCM, $"%{input.Batchno_SCM.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.Batchno_WMS), u => EF.Functions.Like(u.Batchno_WMS, $"%{input.Batchno_WMS.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.ProjectCode), u => EF.Functions.Like(u.ProjectCode, $"%{input.ProjectCode.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.PlaceCode), u => EF.Functions.Like(u.PlaceCode, $"%{input.PlaceCode.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.TACode), u => EF.Functions.Like(u.TACode, $"%{input.TACode.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.PartCode), u => EF.Functions.Like(u.PartCode, $"%{input.PartCode.Trim()}%"))
+                .Where(input.SearchBeginTime != null && input.SearchEndTime != null, u => u.CreatedTime >= DateTime.Parse(input.SearchBeginTime.Trim()) &&
+                                                                   u.CreatedTime <= DateTime.Parse(input.SearchEndTime.Trim()))
+                .OrderByDescending(u => u.UpdatedTime);
+            pageResult.Rows = result
+                .Skip((input.PageNo - 1) * input.PageSize).Take(input.PageSize).Adapt<List<GetWareHouseInReportFormsOutput>>();
+            pageResult.TotalRows = result.Count();
+            pageResult.TotalPage = (int)Math.Ceiling(pageResult.TotalRows / (double)pageResult.PageSize);
+            return pageResult;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsInput.cs
new file mode 100644
index 0000000..41a0959
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsInput.cs
@@ -0,0 +1,60 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍑哄簱鎶ヨ〃杈撳叆鍙傛暟
+    /// </summary>
+    public class GetWareHouseOutReportFormsInput: PageInputBase
+    {
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        public string Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public string PartCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public string PlaceCode { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsOutput.cs
new file mode 100644
index 0000000..f9c57cd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsOutput.cs
@@ -0,0 +1,110 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍑哄簱鎶ヨ〃杩斿洖鍙傛暟
+    /// </summary>
+    public class GetWareHouseOutReportFormsOutput
+    {
+        /// <summary>
+        /// SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑
+        /// </summary>
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 涓嬪彂鏁伴噺
+        /// </summary>
+        public decimal DistributeQty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        public decimal SingleLength { get; set; }
+
+        /// <summary>
+        /// 浠舵暟    
+        /// </summary>
+        public decimal Number { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        public string Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public string PartCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鍑哄簱鏃堕棿
+        /// </summary>
+        public DateTimeOffset? CreatedTime { get; set; }
+
+        /// <summary>
+        /// 鍑哄簱瀹屾垚鏃堕棿
+        /// </summary>
+        public DateTimeOffset? UpdatedTime { get; set; }
+
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        public int Aisle { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁涓昏〃
+        /// </summary>
+        public WmsTakeMaterialOrder WmsTakeMaterialOrder { get; set; }
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/WareHouseOutReportFormsService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/WareHouseOutReportFormsService.cs
new file mode 100644
index 0000000..9b03f2f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/WareHouseOutReportFormsService.cs
@@ -0,0 +1,118 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using SixLabors.ImageSharp;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 鍑哄簱鎶ヨ〃
+    /// </summary>
+    [ApiDescriptionSettings("鍑哄簱鎶ヨ〃", Name = "WareHouseOutReportForms", Order = 100)]
+    [Route("api/[Controller]")]
+    public class WareHouseOutReportFormsService : IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WmsOrder,MasterDbContextLocator> _wmsOrderRep;
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+        private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+        private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+        private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+        private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+        private readonly IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> _wmsTakeMaterialOrderRep;
+        private readonly IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> _wmsTakeMaterialOrderDetailRep;
+
+        public WareHouseOutReportFormsService(
+            IRepository<WmsOrder,MasterDbContextLocator> wmsOrderRep
+            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+            ,IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+            ,IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep
+            ,IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep
+            ,IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep
+            ,IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> wmsTakeMaterialOrderRep
+            ,IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> wmsTakeMaterialOrderDetailRep
+        )
+        {
+            _wmsOrderRep = wmsOrderRep;
+            _sysDictTypeRep = sysDictTypeRep;
+            _sysDictDataRep = sysDictDataRep;
+            _sysExcelTemplateService = sysExcelTemplateService;
+            _wmsOrderTypeRep = wmsOrderTypeRep;
+            _wmsOrderDetailsRep = wmsOrderDetailsRep;
+            _wmsPlaceRep = wmsPlaceRep;
+            _wmsTaskRep = wmsTaskRep;
+            _wmsTakeMaterialOrderDetailRep = wmsTakeMaterialOrderDetailRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鍑哄簱鎶ヨ〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("GetWareHouseOutReportForms")]
+        public async Task<PageResult<GetWareHouseOutReportFormsOutput>> GetWareHouseOutReportForms([FromQuery] GetWareHouseOutReportFormsInput input)
+        {
+            //浠诲姟琛ㄥ叧鑱旈鏂欒〃
+            var pageResult = new PageResult<GetWareHouseOutReportFormsOutput>();
+            pageResult.PageNo = input.PageNo;
+            pageResult.PageSize = input.PageSize;
+            var result =from p in _wmsTaskRep.AsQueryable()
+            join d in _wmsTakeMaterialOrderDetailRep.AsQueryable() on p.OrderDetailsId equals d.Id
+            where p.TaskStatus == TaskStatusEnum.WANCHENG
+            select new GetWareHouseOutReportFormsOutput
+            {
+                OID = d.OID,
+                Materialcode = d.Materialcode,
+                Materialname = d.Materialname,
+                Unit = d.Unit,
+                Qty = d.Qty,
+                DistributeQty = d.DistributeQty,
+                SingleLength = d.SingleLength,
+                Number = d.Number,
+                Batchno_SCM = d.Batchno_SCM,
+                Batchno_WMS = d.Batchno_WMS,
+                ProjectCode = d.ProjectCode,
+                TACode = d.TACode,
+                PartCode = d.PartCode,
+                ContainerCode = p.ContainerCode,
+                PlaceCode = p.SourcePlace,
+                CreatedTime = p.CreatedTime,
+                Aisle = p.Aisle,
+                UpdatedTime = p.UpdatedTime,
+            };
+            result = result
+                .Where(!string.IsNullOrEmpty(input.Materialcode), u => EF.Functions.Like(u.Materialcode, $"%{input.Materialcode.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.Materialname), u => EF.Functions.Like(u.Materialname, $"%{input.Materialname.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.Batchno_SCM), u => EF.Functions.Like(u.Batchno_SCM, $"%{input.Batchno_SCM.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.Batchno_WMS), u => EF.Functions.Like(u.Batchno_WMS, $"%{input.Batchno_WMS.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.ProjectCode), u => EF.Functions.Like(u.ProjectCode, $"%{input.ProjectCode.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.PlaceCode), u => EF.Functions.Like(u.PlaceCode, $"%{input.PlaceCode.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.TACode), u => EF.Functions.Like(u.TACode, $"%{input.TACode.Trim()}%"))
+                .Where(!string.IsNullOrEmpty(input.PartCode), u => EF.Functions.Like(u.PartCode, $"%{input.PartCode.Trim()}%"))
+                .Where(input.SearchBeginTime != null && input.SearchEndTime != null, u => u.CreatedTime >= DateTime.Parse(input.SearchBeginTime.Trim()) &&
+                                                                   u.CreatedTime <= DateTime.Parse(input.SearchEndTime.Trim()))
+                .OrderByDescending(u => u.UpdatedTime);
+            pageResult.Rows = result
+                .Skip((input.PageNo - 1) * input.PageSize).Take(input.PageSize).Adapt<List<GetWareHouseOutReportFormsOutput>>();
+            pageResult.TotalRows = result.Count();
+            pageResult.TotalPage = (int)Math.Ceiling(pageResult.TotalRows / (double)pageResult.PageSize);
+            return pageResult;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/SpareTimes/SpareTimeDemo.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/SpareTimes/SpareTimeDemo.cs
new file mode 100644
index 0000000..ee21957
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/SpareTimes/SpareTimeDemo.cs
@@ -0,0 +1,36 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.TaskScheduler;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 瀹氭椂浠诲姟demo
+    /// </summary>
+    public class SpareTimeDemo : ISpareTimeWorker
+    {
+        /// <summary>
+        /// 3绉掑悗鍑哄嫟缁熻
+        /// </summary>
+        /// <param name="timer">鍙傛暟</param>
+        /// <param name="count">娆℃暟</param>
+        [SpareTime(3000, "鎵цSql", DoOnce = true, StartNow = true, ExecuteType = SpareTimeExecuteTypes.Serial)]
+        public void ExecSql(SpareTimer timer, long count)
+        {
+            //鍒涘缓浣滅敤鍩�
+            Scoped.Create((factory, scope) =>
+            {
+                var start = DateTime.Now;
+                Console.WriteLine(start.ToString("yyyy-MM-dd HH:mm:ss") + ":浠诲姟寮�濮�-----------");
+                var services = scope.ServiceProvider;
+                // 鏁版嵁搴撴搷浣�
+                var db = Db.GetSqlRepository(services);
+                if (!string.IsNullOrEmpty(timer.Description)) //鍋囪 鍚庡彴浠诲姟 涓妸 sql 璇彞鍐欏埌浜嗗娉ㄩ噷闈�
+                    db.SqlNonQuery(timer.Description);
+                var end = DateTime.Now;
+                Console.WriteLine(end.ToString("yyyy-MM-dd HH:mm:ss") + ":浠诲姟缁撴潫-----------");
+                Console.WriteLine($"SQL鎵ц浜嗭細{count} 娆�,鑰楁椂锛歿(end - start).TotalMilliseconds}ms");
+            });
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Startup.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Startup.cs
new file mode 100644
index 0000000..75b4ed5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Startup.cs
@@ -0,0 +1,30 @@
+锘縰sing Furion;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Admin.NET.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Startup : AppStartup
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="services"></param>
+        public void ConfigureServices(IServiceCollection services)
+        {
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="app"></param>
+        /// <param name="env"></param>
+        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
+        {
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/applicationsettings.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/applicationsettings.json
new file mode 100644
index 0000000..efb099b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/applicationsettings.json
@@ -0,0 +1,4 @@
+锘縶
+  "$schema": "https://gitee.com/dotnetchina/Furion/raw/net6/schemas/v3/furion-schema.json",
+  "DeskUrlPath": "http://10.10.40.4:1181"
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Admin.NET.Core.csproj b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Admin.NET.Core.csproj
new file mode 100644
index 0000000..37797da
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Admin.NET.Core.csproj
@@ -0,0 +1,69 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>disable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Compile Remove="Entity\System\WorkflowEntity\**" />
+    <EmbeddedResource Remove="Entity\System\WorkflowEntity\**" />
+    <None Remove="Entity\System\WorkflowEntity\**" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Compile Remove="Entity\DEntityTenant.cs" />
+    <Compile Remove="Entity\Les\LesAgvsiteStation.cs" />
+    <Compile Remove="Entity\System\SysOauthUser.cs" />
+    <Compile Remove="Entity\System\SysTenant.cs" />
+    <Compile Remove="Entity\WmsBase\iWareWmsInvWareHouse.cs" />
+    <Compile Remove="SeedData\SysRoleMenuSeedData.cs" />
+    <Compile Remove="SeedData\SysTenantSeedData.cs" />
+    <Compile Remove="SeedData\WmsAreaSeedData.cs" />
+    <Compile Remove="SeedData\WmsContainerPlaceSeedData.cs" />
+    <Compile Remove="SeedData\WmsContainerSeedData.cs" />
+    <Compile Remove="SeedData\WmsMaterialContainerSeedData.cs" />
+    <Compile Remove="SeedData\WmsMaterialSeedData.cs" />
+    <Compile Remove="SeedData\WmsMaterialStockSeedData.cs" />
+    <Compile Remove="SeedData\WmsPlaceSeedData.cs" />
+    <Compile Remove="SeedData\WmsTaskSeedData.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Remove="applicationconfig.json" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Content Include="applicationconfig.json">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="Caching.CSRedis" Version="3.8.3" />
+    <PackageReference Include="CSRedisCore" Version="3.8.3" />
+    <PackageReference Include="Furion" Version="4.1.9" />
+    <PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.1.9" />
+    <PackageReference Include="Furion.Extras.Logging.Serilog" Version="4.1.9" />
+    <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.1.9" />
+    <PackageReference Include="Magicodes.IE.Excel" Version="2.6.4" />
+    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.7" />
+    <PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="6.0.7" />
+    <PackageReference Include="NString" Version="2.1.1" />
+    <PackageReference Include="OnceMi.AspNetCore.OSS" Version="1.1.6" />
+    <PackageReference Include="RestSharp" Version="108.0.3" />
+    <PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta14" />
+    <PackageReference Include="System.Linq.Dynamic.Core" Version="1.2.19" />
+    <PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" />
+    <PackageReference Include="UAParser" Version="3.1.47" />
+    <PackageReference Include="WorkflowCore" Version="3.6.4" />
+    <PackageReference Include="WorkflowCore.DSL" Version="3.6.4" />
+    <PackageReference Include="WorkflowCore.Persistence.EntityFramework" Version="3.6.4" />
+    <PackageReference Include="WorkflowCore.Persistence.SqlServer" Version="3.6.4" />
+    <PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
+    <PackageReference Include="Zack.EFCore.Batch.Sqlite_NET6" Version="6.1.3" />
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Enum\System\" />
+  </ItemGroup>
+
+</Project>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/ClaimConst.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/ClaimConst.cs
new file mode 100644
index 0000000..371e87c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/ClaimConst.cs
@@ -0,0 +1,45 @@
+锘縩amespace Admin.NET.Core
+{
+    public class ClaimConst
+    {
+        /// <summary>
+        /// 鐢ㄦ埛Id
+        /// </summary>
+        public const string CLAINM_USERID = "UserId";
+
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        public const string CLAINM_ACCOUNT = "Account";
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public const string CLAINM_NAME = "Name";
+
+        /// <summary>
+        /// 鏄惁瓒呯骇绠$悊
+        /// </summary>
+        public const string CLAINM_SUPERADMIN = "SuperAdmin";
+
+        /// <summary>
+        /// 绉熸埛Id
+        /// </summary>
+        //public const string TENANT_ID = "TenantId";
+
+        /// <summary>
+        /// 鐢ㄦ埛缁勭粐鏈烘瀯Id
+        /// </summary>
+        public const string CLAINM_ORGID = "OrgId";
+
+        /// <summary>
+        /// 鐢ㄦ埛缁勭粐鏈烘瀯鍚嶇О
+        /// </summary>
+        public const string CLAINM_ORGNAME = "OrgName";
+
+        /// <summary>
+        /// 鏁版嵁鏉冮檺
+        /// </summary>
+        public const string DATA_SCOPES = "DataScopes";
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/CommonConst.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/CommonConst.cs
new file mode 100644
index 0000000..6b559a2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/CommonConst.cs
@@ -0,0 +1,55 @@
+锘縩amespace Admin.NET.Core
+{
+    public class CommonConst
+    {
+        /// <summary>
+        /// 榛樿瀵嗙爜
+        /// </summary>
+        public const string DEFAULT_PASSWORD = "123456";
+
+        /// <summary>
+        /// 鐢ㄦ埛缂撳瓨
+        /// </summary>
+        public const string CACHE_KEY_USER = "user_";
+
+        /// <summary>
+        /// 鑿滃崟缂撳瓨
+        /// </summary>
+        public const string CACHE_KEY_MENU = "menu_";
+
+        /// <summary>
+        /// 鏉冮檺缂撳瓨
+        /// </summary>
+        public const string CACHE_KEY_PERMISSION = "permission_";
+
+        /// <summary>
+        /// 鏁版嵁鑼冨洿缂撳瓨
+        /// </summary>
+        public const string CACHE_KEY_DATASCOPE = "datascope_";
+
+        /// <summary>
+        /// 楠岃瘉鐮佺紦瀛�
+        /// </summary>
+        public const string CACHE_KEY_CODE = "vercode_";
+
+        /// <summary>
+        /// 鎵�鏈夌紦瀛樺叧閿瓧闆嗗悎
+        /// </summary>
+        public const string CACHE_KEY_ALL = "allkey";
+
+        /// <summary>
+        /// 瀹氭椂浠诲姟缂撳瓨
+        /// </summary>
+        public const string CACHE_KEY_TIMER_JOB = "timerjob";
+
+        /// <summary>
+        /// 鍦ㄧ嚎鐢ㄦ埛缂撳瓨
+        /// </summary>
+        public const string CACHE_KEY_ONLINE_USER = "onlineuser";
+
+        /// <summary>
+        /// 绯荤粺绠$悊鍛樿鑹茬紪鐮�
+        /// </summary>
+        public const string SYS_MANAGER_ROLE_CODE = "sys_manager_role";
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/DeskDataConst.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/DeskDataConst.cs
new file mode 100644
index 0000000..aae0a81
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/DeskDataConst.cs
@@ -0,0 +1,23 @@
+锘縩amespace Admin.NET.Core
+{
+    /// <summary>
+    /// Desk鏁版嵁鍚屾甯搁噺
+    /// </summary>
+    public class DeskDataConst
+    {
+        /// <summary>
+        /// Desk AccessToken 缂撳瓨
+        /// </summary>
+        public const string DESK_ACCESSTOKEN_CODE = "desk_accesstoken";
+
+        /// <summary>
+        /// 鍚屾瀹㈡埛URL
+        /// </summary>
+        public const string TONGBU_KEHU_URL = "/api/desk/v1.1/deskCustomer/listNonPage";
+
+        /// <summary>
+        /// 鍚屾鐗╂枡URL
+        /// </summary>
+        public const string TONGBU_WULIAO_URL = "/api/desk/v1.1/deskMaterial/listNonPage";
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/QueryTypeConst.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/QueryTypeConst.cs
new file mode 100644
index 0000000..871b7f4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/QueryTypeConst.cs
@@ -0,0 +1,53 @@
+锘縩amespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鏌ヨ鏂瑰紡
+    /// </summary>
+    public class QueryTypeConst
+    {
+        /// <summary>
+        /// 绛変簬
+        /// </summary>
+        public const string 绛変簬 = "==";
+
+        /// <summary>
+        /// 妯$硦
+        /// </summary>
+        public const string 妯$硦 = "like";
+
+        /// <summary>
+        /// 澶т簬
+        /// </summary>
+        public const string 澶т簬 = ">";
+
+        /// <summary>
+        /// 灏忎簬
+        /// </summary>
+        public const string 灏忎簬 = "<";
+
+        /// <summary>
+        /// 	涓嶇瓑浜�
+        /// </summary>
+        public const string 涓嶇瓑浜� = "!=";
+
+        /// <summary>
+        /// 澶т簬绛変簬
+        /// </summary>
+        public const string 澶т簬绛変簬 = ">=";
+
+        /// <summary>
+        /// 灏忎簬绛変簬
+        /// </summary>
+        public const string 灏忎簬绛変簬 = "<=";
+
+        /// <summary>
+        /// 涓嶄负绌�
+        /// </summary>
+        public const string 涓嶄负绌� = "isNotNull";
+
+        /// <summary>
+        /// 浠嬩簬
+        /// </summary>
+        public const string 浠嬩簬 = "between";
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/SysConst.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/SysConst.cs
new file mode 100644
index 0000000..cec3124
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/SysConst.cs
@@ -0,0 +1,12 @@
+锘縩amespace Admin.NET.Core
+{
+    public class SysConst
+    {
+        /// <summary>
+        /// 鐧婚檰淇℃伅鏃犳晥锛岃閲嶆柊鐧婚檰!
+        /// </summary>
+        public const string SYS_SESSION_OUT = "鐧婚檰淇℃伅鏃犳晥锛岃閲嶆柊鐧婚檰!";
+
+        
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/TemplateConst.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/TemplateConst.cs
new file mode 100644
index 0000000..3e57328
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/TemplateConst.cs
@@ -0,0 +1,18 @@
+锘縰sing Furion;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core
+{
+    public class TemplateConst
+    {     
+        /// <summary>
+        /// 鐢熸垚瀵煎叆妯℃澘鐨凟xcel鏂囦欢璺緞(鍏叡)
+        /// </summary>
+        public static string EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 = App.WebHostEnvironment.WebRootPath + @"\ExcelTemplateFile";
+        public static string EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑 = "Import";
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvTask.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvTask.cs
new file mode 100644
index 0000000..9ff7c2c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvTask.cs
@@ -0,0 +1,100 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// Agv浠诲姟琛�
+    /// </summary>
+    [Comment("Agv浠诲姟琛�")]
+    [Table("les_agv_task")]
+    public class AgvTask : DEntityBase
+    {
+        /// <summary>
+        /// 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+        /// </summary>
+        [Comment("浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱")]
+        [MaxLength(10)]
+        public string TaskType { get; set; }
+
+        /// <summary>
+        /// 璧峰浣嶇疆
+        /// </summary>
+        [Comment("璧峰浣嶇疆")]
+        [MaxLength(50)]
+        public string StartPlace { get; set; }
+
+        /// <summary>
+        /// 璧峰鍚嶇О
+        /// </summary>
+        [Comment("璧峰鍚嶇О")]
+        [MaxLength(50)]
+        public string StartName { get; set; }
+
+        /// <summary>
+        /// 缁撴潫浣嶇疆
+        /// </summary>
+        [Comment("缁撴潫浣嶇疆")]
+        [MaxLength(50)]
+        public string EndPlace { get; set; }
+
+        /// <summary>
+        /// 缁撴潫鍚嶇О
+        /// </summary>
+        [Comment("缁撴潫鍚嶇О")]
+        [MaxLength(50)]
+        public string EndName { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// PRISTINE锛氬緟鎵ц
+        /// TRAVELLING锛氭墽琛屼腑
+        /// FINISHED锛氬畬鎴�
+        /// </summary>
+        [Comment("鐘舵��")]
+        [MaxLength(50)]
+        public string AgvState { get; set; }
+
+        /// <summary>
+        /// 褰撳墠鎵ц鐨勪换鍔�
+        /// </summary>
+        [Comment("褰撳墠鎵ц鐨勪换鍔�")]
+        [MaxLength(100)]
+        public string TransportOrder { get; set; }
+
+        /// <summary>
+        /// 涓讳换鍔″彿
+        /// </summary>
+        [Comment("涓讳换鍔″彿")]
+        [MaxLength(50)]
+        public string TaskNo { get; set; }
+
+        /// <summary>
+        /// Agv鐖禝d
+        /// </summary>
+        [Comment("Agv鐖禝d")]
+        public long Pid { get; set; }
+
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿
+        /// </summary>
+        [Comment("瀹瑰櫒缂栧彿")]
+        [MaxLength(50)]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        [Comment("鎵�灞炶溅闂�")]
+        public LesWorkShopType WorkShopType { get; set; }
+
+
+        /// <summary>
+        /// 璧峰搴撲綅鍚嶇О
+        /// </summary>
+        [Comment("璧峰搴撲綅鍚嶇О")]
+        [MaxLength(50)]
+        public string SourcePlaceName { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvWaring.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvWaring.cs
new file mode 100644
index 0000000..7567f21
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvWaring.cs
@@ -0,0 +1,69 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// Agv鎶ヨ
+    /// </summary>
+    [Comment("Agv鎶ヨ")]
+    [Table("les_agv_waring")]
+    public class AgvWaring : DEntityBase
+    {
+        /// <summary>
+        /// 鍞竴缂栫爜
+        /// </summary>
+        [Comment("鍞竴缂栫爜")]
+        [MaxLength(10)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        [Comment("浠诲姟鍙�")]
+        [MaxLength(100)]
+        public string TransportOrder { get; set; }
+
+        /// <summary>
+        /// agv灏忚溅缂栧彿
+        /// </summary>
+        [Comment("agv灏忚溅缂栧彿")]
+        [MaxLength(10)]
+        public string AgvCarCode { get; set; }
+
+        /// <summary>
+        /// 鏁呴殰鍐呭
+        /// </summary>
+        [Comment("鏁呴殰鍐呭")]
+        [MaxLength(50)]
+        public string FaultText { get; set; }
+
+        /// <summary>
+        /// 鏁呴殰鏃堕棿
+        /// </summary>
+        [Comment("鏁呴殰鏃堕棿")]
+        [MaxLength(50)]
+        public DateTimeOffset? StartTime { get; set; }
+
+        /// <summary>
+        /// 鏄惁瑙e喅
+        /// </summary>
+        [Comment("鏄惁瑙e喅")]
+        [MaxLength(50)]
+        public YesOrNot YesOrNot { get; set; }
+
+        /// <summary>
+        /// WCS鏄惁鍙互璇诲彇
+        /// </summary>
+        [Comment("WCS鏄惁鍙互璇诲彇")]
+        [Required]
+        public bool IsRead { get; set; } = true;
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        [Comment("鎵�灞炶溅闂�")]
+        public LesWorkShopType WorkShopType { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/DEntityBase.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/DEntityBase.cs
new file mode 100644
index 0000000..e08de9b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/DEntityBase.cs
@@ -0,0 +1,81 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Text.Json.Serialization;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鑷畾涔夊疄浣撳熀绫�
+    /// </summary>
+    public abstract class DEntityBase : DEntityBase<long, MasterDbContextLocator>
+    {
+        public DEntityBase()
+        {
+            Id = Yitter.IdGenerator.YitIdHelper.NextId();
+        }
+    }
+
+    public abstract class DEntityBase<TKey, TDbContextLocator1> : PrivateDEntityBase<TKey>
+        where TDbContextLocator1 : class, IDbContextLocator
+    {
+    }
+
+    public abstract class PrivateDEntityBase<TKey> : IPrivateEntity
+    {
+        /// <summary>
+        /// 涓婚敭Id
+        /// </summary>
+        [Key]
+        [DatabaseGenerated(DatabaseGeneratedOption.None)]
+        [Comment("Id涓婚敭")]
+        public virtual TKey Id { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        [Comment("鍒涘缓鏃堕棿")]
+        public virtual DateTimeOffset? CreatedTime { get; set; } = DateTime.Now;
+
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        [Comment("鏇存柊鏃堕棿")]
+        public virtual DateTimeOffset? UpdatedTime { get; set; } = DateTime.Now;
+
+        /// <summary>
+        /// 鍒涘缓鑰匢d
+        /// </summary>
+        [Comment("鍒涘缓鑰匢d")]
+        public virtual long? CreatedUserId { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        [Comment("鍒涘缓鑰呭悕绉�")]
+        [MaxLength(50)]
+        public virtual string CreatedUserName { get; set; }
+
+        /// <summary>
+        /// 淇敼鑰匢d
+        /// </summary>
+        [Comment("淇敼鑰匢d")]
+        public virtual long? UpdatedUserId { get; set; }
+
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// </summary>
+        [Comment("淇敼鑰呭悕绉�")]
+        [MaxLength(50)]
+        public virtual string UpdatedUserName { get; set; }
+
+
+        /// <summary>
+        /// 杞垹闄�
+        /// </summary>
+        [JsonIgnore]
+        [Comment("杞垹闄ゆ爣璁�")]
+        public virtual bool IsDeleted { get; set; } = false;
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/IDataPermissions.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/IDataPermissions.cs
new file mode 100644
index 0000000..2eeee86
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/IDataPermissions.cs
@@ -0,0 +1,28 @@
+锘縩amespace Admin.NET.Core.Entity
+{
+    /// <summary>
+    /// 鏁版嵁鏉冮檺鎺ュ彛锛屽疄鐜版暟鎹潈闄愬繀椤荤户鎵挎湰鎺ュ彛
+    /// </summary>
+    public interface IDataPermissions
+    {
+        /// <summary>
+        /// 鍒涘缓鐢ㄦ埛閮ㄩ棬id
+        /// </summary>
+        long? CreatedUserOrgId { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鐢ㄦ埛閮ㄩ棬鍚嶇О
+        /// </summary>
+        string CreatedUserOrgName { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鑰匢d
+        /// </summary>
+        long? CreatedUserId { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// </summary>
+        string CreatedUserName { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesAgvsiteStation.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesAgvsiteStation.cs
new file mode 100644
index 0000000..30650f5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesAgvsiteStation.cs
@@ -0,0 +1,56 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace YaKe.Les.Core
+{
+    /// <summary>
+    /// AGV绔欑偣宸ヤ綅鍏崇郴琛�
+    /// </summary>
+    [Table("les_agvsitestation")]
+    [Comment("AGV绔欑偣宸ヤ綅鍏崇郴琛�")]
+    public class LesAgvsiteStation : DEntityBase
+    {
+        /// <summary>
+        /// AGV绔欑偣Id
+        /// </summary>
+        [Comment("AGV绔欑偣Id")]
+        [Required]
+        [MaxLength(50)]
+        public long SiteId{ get; set; }
+
+        /// <summary>
+        /// AGV绔欑偣Code
+        /// </summary>
+        [Comment("AGV绔欑偣Code")]
+        [Required]
+        [MaxLength(50)]
+        public string SiteCode { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綅Id
+        /// </summary>
+        [Comment("宸ヤ綅Id")]
+        [Required]
+        [MaxLength(50)]
+        public long StationId { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綅缂栫爜
+        /// </summary>
+        [Comment("宸ヤ綅缂栫爜")]
+        [Required]
+        [MaxLength(50)]
+        public string StationCode { get; set; }
+
+        /// <summary>
+        /// AGV绔欑偣琛�
+        /// </summary>
+        public LesAgvsite LesAgvsite { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綅琛�
+        /// </summary>
+        public LesStation LesStation { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesDeviceWaring.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesDeviceWaring.cs
new file mode 100644
index 0000000..39953a5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesDeviceWaring.cs
@@ -0,0 +1,52 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 璁惧鎶ヨ
+    /// </summary>
+    [Table("les_devicewaring")]
+    [Comment("璁惧鎶ヨ")]
+    public class LesDeviceWaring : DEntityBase
+    {
+        /// <summary>
+        /// WcsId
+        /// </summary>
+        [Comment("WcsId")]
+        public int WcsId { get; set; }
+
+        /// <summary>
+        /// 璁惧鍚嶇О
+        /// </summary>
+        [Comment("璁惧鍚嶇О")]
+        [MaxLength(50)]
+        public string DeviceName { get; set; }
+
+        /// <summary>
+        /// 鏁呴殰鍚嶇О
+        /// </summary>
+        [Comment("鏁呴殰鍚嶇О")]
+        [MaxLength(50)]
+        public string FaultName { get; set; }
+
+        /// <summary>
+        /// 鍙戠敓鏃堕棿
+        /// </summary>
+        [Comment("鍙戠敓鏃堕棿")]
+        public DateTimeOffset? StartTime  { get; set; }
+
+        /// <summary>
+        /// 缁撴潫鏃堕棿
+        /// </summary>
+        [Comment("缁撴潫鏃堕棿")]
+        public DateTimeOffset? EndTime { get; set; }
+
+        /// <summary>
+        /// 鎸佺画鏃堕棿
+        /// </summary>
+        [Comment("鎸佺画鏃堕棿")]
+        public int RunningTime { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesEntrance.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesEntrance.cs
new file mode 100644
index 0000000..d53e736
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesEntrance.cs
@@ -0,0 +1,51 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 搴撳彛琛�
+    /// </summary>
+    [Table("les_entrance")]
+    [Comment("搴撳彛琛�")]
+    public class LesEntrance : DEntityBase
+    {
+        /// <summary>
+        /// 搴撳尯Id
+        /// </summary>
+        [Comment("搴撳尯Id")]
+        public long AreaId { get; set; }
+
+        /// <summary>
+        /// 搴撳彛鍚嶇О
+        /// </summary>
+        [Comment("搴撳彛鍚嶇О")]
+        [MaxLength(50)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 搴撳彛缂栫爜
+        /// </summary>
+        [Comment("搴撳彛缂栫爜")]
+        [MaxLength(50)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 搴撳彛绫诲瀷
+        /// </summary>
+        [Comment("搴撳彛绫诲瀷")]
+        public LesEntranceType EntranceType { get; set; }
+
+        /// <summary>
+        /// 搴撳彛鐘舵��
+        /// </summary>
+        [Comment("搴撳彛鐘舵��")]
+        public CommonStatus CommenStatus { get; set; }
+
+        /// <summary>
+        /// 搴撳尯琛�
+        /// </summary>
+        public WmsArea WmsArea { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesPackWarehouse.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesPackWarehouse.cs
new file mode 100644
index 0000000..140667d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesPackWarehouse.cs
@@ -0,0 +1,74 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鎵撳寘琛�
+    /// </summary>
+    [Table("les_packwarehouse")]
+    [Comment("鎵撳寘琛�")]
+    public class LesPackWarehouse : DEntityBase
+    {
+        /// <summary>
+        /// 鏍囩鐮�
+        /// </summary>
+        [Comment("鏍囩鐮�")]
+        [MaxLength(50)]
+        public string PackCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鐮�
+        /// </summary>
+        [Comment("鐗╂枡鐮�")]
+        [MaxLength(50)]
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 闀�    
+        /// </summary>
+        [Comment("闀�")]
+        [Required]
+        public int Long { get; set; }
+
+        /// <summary>
+        /// 瀹�    
+        /// </summary>
+        [Comment("瀹�")]
+        [Required]
+        public int Wide { get; set; }
+
+        /// <summary>
+        /// 楂�    
+        /// </summary>
+        [Comment("楂�")]
+        [Required]
+        public int High { get; set; }
+
+        /// <summary>
+        /// 鍑哄簱鍙�
+        /// </summary>
+        [Comment("鍑哄簱鍙�")]
+        [MaxLength(50)]
+        public string OutputEntrance { get; set; }
+        
+
+        /// <summary>
+        /// 鎵撳寘鐘舵��
+        /// </summary>
+        [Comment("鎵撳寘鐘舵��")]
+        public LesPackState LesPackState { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鍙�
+        /// </summary>
+        [Comment("鍗曟嵁鍙�")]
+        public string OrderNo { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesSerialRuleDetail.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesSerialRuleDetail.cs
new file mode 100644
index 0000000..e2d69c9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesSerialRuleDetail.cs
@@ -0,0 +1,96 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 缂栧彿瑙勫垯
+    /// </summary> 
+    [Table("les_serial_rule_detail")]
+    [Comment("缂栧彿瑙勫垯")]
+    public class LesSerialRuleDetail : DEntityBase
+   {
+        /// <summary>
+        /// 搴忓彿绫诲埆
+        /// </summary>
+        [Comment("搴忓彿绫诲埆")]
+        [MaxLength(50)]
+         public string SerialType { get; set; }
+
+        /// <summary>
+        /// 椤规
+        /// </summary>
+        [Comment("椤规")]
+        public int ItemNo { get; set; }
+
+        /// <summary>
+        /// 璧勬枡鏉ユ簮
+        /// </summary>
+        [Comment("璧勬枡鏉ユ簮")]
+        public string SourceType { get; set; }
+
+        /// <summary>
+        /// 闀垮害
+        /// </summary>
+        [Comment("闀垮害")]
+        public int SerialLength { get; set; }
+
+        /// <summary>
+        /// 鎾峰彇鐮佹暟(璧�)
+        /// </summary>
+        [Comment("鎾峰彇鐮佹暟(璧�)")]
+        public int SearchStart{ get; set; }
+
+        /// <summary>
+        /// 杩涗綅绫诲瀷
+        /// </summary>
+        [Comment("杩涗綅绫诲瀷")]
+        public int DecimalType { get; set; }
+
+        /// <summary>
+        /// 浣跨敤鑰呰嚜瀹氫箟
+        /// </summary>
+        [Comment("浣跨敤鑰呰嚜瀹氫箟"), MaxLength(50)]
+        public string UserDefine { get; set; }
+
+        /// <summary>
+        /// 搴忓彿缂栫爜
+        /// </summary>
+        [Comment("搴忓彿缂栫爜")]
+        public YesOrNot SerialCodeFlag { get; set; } = YesOrNot.N;
+
+        /// <summary>
+        /// 璇存槑
+        /// </summary>
+        [Comment("璇存槑"), MaxLength(300)]
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 搴忓彿绫诲埆缂栧彿
+        /// </summary>
+        [Comment("搴忓彿绫诲埆缂栧彿")]
+        [MaxLength(50)]
+        public string SerialTypeNo { get; set; }
+
+        /// <summary>
+        /// 鎾峰彇
+        /// </summary>
+        [Comment("鎾峰彇")]
+        [MaxLength(50)]
+        public int GetData { get; set; }
+
+        /// <summary>
+        /// 鑷姩琛ラ浂
+        /// </summary>
+        [Comment("鑷姩琛ラ浂")]
+        public int PadLeft { get; set; }   
+
+}
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesStation.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesStation.cs
new file mode 100644
index 0000000..f1644c5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesStation.cs
@@ -0,0 +1,66 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 宸ヤ綅琛�
+    /// </summary>
+    [Table("les_station")]
+    [Comment("宸ヤ綅琛�")]
+    public class LesStation : DEntityBase
+    {
+        /// <summary>
+        /// 浜х嚎Id
+        /// </summary>
+        [Comment("浜х嚎Id")]
+        public long ProductionlineId { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綅鍚嶇О
+        /// </summary>
+        [Comment("宸ヤ綅鍚嶇О")]
+        [MaxLength(50)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綅缂栫爜
+        /// </summary>
+        [Comment("宸ヤ綅缂栫爜")]
+        [MaxLength(50)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綅鐘舵��
+        /// </summary>
+        [Comment("宸ヤ綅鐘舵��")]
+        public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+        /// <summary>
+        /// 杩愯鐘舵��
+        /// </summary>
+        [Comment("杩愯鐘舵��")]
+        public PlaceStatus StataionStatus { get; set; } = PlaceStatus.KONGXIAN;
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        [Comment("搴撲綅缂栫爜")]
+        [MaxLength(50)]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅瑙勬牸
+        /// </summary>
+        [Comment("搴撲綅瑙勬牸")]
+        public decimal PlaceSpec { get; set; }
+
+        /// <summary>
+        /// 浜х嚎琛�
+        /// </summary>
+        //public LesProductionline LesProductionline { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrder.cs
new file mode 100644
index 0000000..e7f996e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrder.cs
@@ -0,0 +1,90 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 杞偍鍗�
+    /// </summary>
+    [Table("wms_dumporder")]
+    [Comment("杞偍鍗�")]
+    public class WmsDumpOrder : DEntityBase, IEntityTypeBuilder<WmsDumpOrder>
+    {
+        /// <summary>
+        ///  Billdate
+        /// </summary>
+        [Comment("鍗曟嵁澶х被")]
+        [Required]
+        public long OrderLargeCategory { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        [Comment("鍗曟嵁灏忕被")]
+        [Required]
+        public long OrderSubclass { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        [Comment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�")]
+        public long SOID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿  
+        /// </summary>
+        [Comment("鍗曟嵁缂栧彿")]
+        [Required]
+        [MaxLength(255)]
+        public string NO { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡    
+        /// </summary>
+        [Comment("鍒涘缓鏃ユ湡")]
+        public DateTimeOffset? Billdate { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        [Comment("鍒涘缓浜�")]
+        [MaxLength(255)]
+        public string Creator { get; set; }
+
+        /// <summary>
+        /// 鍏徃    
+        /// </summary>
+        [Comment("鍏徃")]
+        [MaxLength(255)]
+        public string Companyname { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [Comment("鍗曟嵁鐘舵��")]
+        [Required]
+        public OrderStatusEnum OrderStatus { get; set; } = OrderStatusEnum.WEIXIAFA;
+
+        /// <summary>
+        /// 鍗曟嵁鏄庣粏
+        /// </summary>
+        public ICollection<WmsDumpOrderDetails> WmsDumpOrderDetails { get; set; }
+
+        /// <summary>
+        /// 1瀵瑰閰嶇疆鍏崇郴
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        public void Configure(EntityTypeBuilder<WmsDumpOrder> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            // 涓�瀵瑰閰嶇疆
+            entityBuilder.HasMany(x => x.WmsDumpOrderDetails)
+                .WithOne(x => x.WmsDumpOrder)
+                .HasForeignKey(x => x.OrderId);
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrderDetails.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrderDetails.cs
new file mode 100644
index 0000000..da3456b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrderDetails.cs
@@ -0,0 +1,100 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 杞偍鍗曟槑缁�
+    /// </summary>
+    [Table("wms_dumporder_details")]
+    [Comment("杞偍鍗曟槑缁�")]
+    public class WmsDumpOrderDetails : DEntityBase
+    {
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        [Comment("鍗曟嵁Id")]
+        [MaxLength(50)]
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+        /// </summary>
+        [Comment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�")]
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [Comment("鐗╂枡缂栧彿")]
+        [MaxLength(255)]
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [Comment("鐗╂枡鍚嶇О")]
+        [MaxLength(255)]
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        [Comment("鍩烘湰鍗曚綅")]
+        [MaxLength(255)]
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [Comment("鏁伴噺")]
+        public decimal Qty { get; set; }
+        
+        /// <summary>
+        /// 闀垮害 
+        /// </summary>
+        [Comment("闀垮害")]
+        public decimal Length { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        [Comment("SCM鎵规鍙�")]
+        [MaxLength(255)]
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        [Comment("WMS鎵规鍙�")]
+        [MaxLength(255)]
+        public string Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨椤圭洰缂栫爜    
+        /// </summary>
+        [Comment("搴撳瓨椤圭洰缂栫爜")]
+        [MaxLength(255)]
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鏂板簱瀛橀」鐩紪鐮�    
+        /// </summary>
+        [Comment("鏂板簱瀛橀」鐩紪鐮�")]
+        [MaxLength(255)]
+        public string Projectcode_To { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [Comment("鍗曟嵁鐘舵��")]
+        [Required]
+        public OrderDetailsStatusEnum OrderStatus { get; set; } = OrderDetailsStatusEnum.WEIZHIXING;
+
+        /// <summary>
+        /// 鍗曟嵁涓昏〃
+        /// </summary>
+        public WmsDumpOrder WmsDumpOrder { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrder.cs
new file mode 100644
index 0000000..7a810d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrder.cs
@@ -0,0 +1,111 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 閫�璐у崟
+    /// </summary>
+    [Table("wms_goodsreturnorder")]
+    [Comment("閫�璐у崟")]
+    public class WmsGoodsReturnOrder : DEntityBase, IEntityTypeBuilder<WmsGoodsReturnOrder>
+    {
+        /// <summary>
+        ///  Billdate
+        /// </summary>
+        [Comment("鍗曟嵁澶х被")]
+        [Required]
+        public long OrderLargeCategory { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        [Comment("鍗曟嵁灏忕被")]
+        [Required]
+        public long OrderSubclass { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        [Comment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�")]
+        public long SOID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿  
+        /// </summary>
+        [Comment("鍗曟嵁缂栧彿")]
+        [Required]
+        [MaxLength(255)]
+        public string NO { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡    
+        /// </summary>
+        [Comment("鍒涘缓鏃ユ湡")]
+        public DateTimeOffset? Billdate { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�    
+        /// </summary>
+        [Comment("渚涘簲鍟嗙紪鐮�")]
+        [MaxLength(255)]
+        public string Vendorcode { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�    
+        /// </summary>
+        [Comment("渚涘簲鍟嗗悕绉�")]
+        [MaxLength(255)]
+        public string Vendorname { get; set; }
+
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        [Comment("鍏徃鍚嶇О")]
+        [MaxLength(255)]
+        public string Companyname { get; set; }
+
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        [Comment("浠撶鍛�")]
+        [MaxLength(255)]
+        public string WarehouseKeepername { get; set; }
+
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        [Comment("浠撳偍涓績")]
+        [MaxLength(255)]
+        public string WarehouseCentername { get; set; }
+
+        /// <summary>
+        /// 閫�璐х姸鎬�
+        /// </summary>
+        [Comment("閫�璐х姸鎬�")]
+        [Required]
+        public GoodsReturnStatus GoodsReturnStatus { get; set; } = GoodsReturnStatus.WEITUIHUO;
+
+        /// <summary>
+        /// 鍗曟嵁鏄庣粏
+        /// </summary>
+        public ICollection<WmsGoodsReturnOrderDetails> WmsGoodsReturnOrderDetails { get; set; }
+
+        /// <summary>
+        /// 1瀵瑰閰嶇疆鍏崇郴
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        public void Configure(EntityTypeBuilder<WmsGoodsReturnOrder> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            // 涓�瀵瑰閰嶇疆
+            entityBuilder.HasMany(x => x.WmsGoodsReturnOrderDetails)
+                .WithOne(x => x.WmsGoodsReturnOrder)
+                .HasForeignKey(x => x.OrderId);
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrderDetails.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrderDetails.cs
new file mode 100644
index 0000000..4307384
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrderDetails.cs
@@ -0,0 +1,162 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 閫�璐у崟鎹槑缁嗚〃
+    /// </summary>
+    [Table("wms_goodsreturnorder_details")]
+    [Comment("閫�璐у崟鎹槑缁嗚〃")]
+    public class WmsGoodsReturnOrderDetails : DEntityBase
+    {
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        [Comment("鍗曟嵁Id")]
+        [MaxLength(50)]
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+        /// </summary>
+        [Comment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�")]
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [Comment("鐗╂枡缂栧彿")]
+        [MaxLength(255)]
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [Comment("鐗╂枡鍚嶇О")]
+        [MaxLength(255)]
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        [Comment("鍩烘湰鍗曚綅")]
+        [MaxLength(255)]
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [Comment("鏁伴噺")]
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        [Comment("鍗曟牴闀垮害")]
+        public decimal SingleLength { get; set; }
+
+        /// <summary>
+        /// 鐞嗚閲嶉噺    
+        /// </summary>
+        [Comment("鐞嗚閲嶉噺")]
+        public decimal TheoreticalWeight { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�    
+        /// </summary>
+        [Comment("鎵规鍙�")]
+        public string Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 涓嶅惈绋庡崟浠�    
+        /// </summary>
+        [Comment("涓嶅惈绋庡崟浠�")]
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 鎴愭湰閲戦    
+        /// </summary>
+        [Comment("鎴愭湰閲戦")]
+        public decimal SumPrice { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        [Comment("椤圭洰缂栧彿")]
+        [MaxLength(255)]
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鍚堝悓缂栧彿
+        /// </summary>
+        [Comment("鍚堝悓缂栧彿")]
+        [MaxLength(255)]
+        public string ContractCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        [Comment("TA鍙�")]
+        [MaxLength(255)]
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        [Comment("浠撻棿")]
+        [MaxLength(255)]
+        public string StoreRoomname { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        [Comment("鎶ュ叧鍗曞彿")]
+        [MaxLength(255)]
+        public string DeclarationCode { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍝佸悕
+        /// </summary>
+        [Comment("鎶ュ叧鍝佸悕")]
+        [MaxLength(255)]
+        public string TradeName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧椤瑰彿  
+        /// </summary>
+        [Comment("鎶ュ叧椤瑰彿")]
+        public string ItemNo { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍗曚綅 
+        /// </summary>
+        [Comment("鎶ュ叧鍗曚綅")]
+        public string CustomsUnitName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鏁伴噺
+        /// </summary>
+        [Comment("鎶ュ叧鏁伴噺")]
+        public decimal CustomsNum { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧閲戦
+        /// </summary>
+        [Comment("鎶ュ叧閲戦")]
+        public decimal CustomsPrices { get; set; }
+
+        /// <summary>
+        /// 閫�璐х姸鎬�
+        /// </summary>
+        [Comment("閫�璐х姸鎬�")]
+        [Required]
+        public ReceivingStatus ReceivingStatus { get; set; } = ReceivingStatus.WEISHOUHUO;
+
+        /// <summary>
+        /// 鍗曟嵁涓昏〃
+        /// </summary>
+        public WmsGoodsReturnOrder WmsGoodsReturnOrder { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrder.cs
new file mode 100644
index 0000000..631d89d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrder.cs
@@ -0,0 +1,152 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍗曟嵁琛�
+    /// </summary>
+    [Table("wms_order")]
+    [Comment("鍗曟嵁琛�")]
+    public class WmsOrder : DEntityBase, IEntityTypeBuilder<WmsOrder>
+    {
+        /// <summary>
+        ///  Billdate
+        /// </summary>
+        [Comment("鍗曟嵁澶х被")]
+        [Required]
+        public long OrderLargeCategory { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        [Comment("鍗曟嵁灏忕被")]
+        [Required]
+        public long OrderSubclass { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        [Comment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�")]
+        public long SOID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿  
+        /// </summary>
+        [Comment("鍗曟嵁缂栧彿")]
+        [Required]
+        [MaxLength(255)]
+        public string NO { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡    
+        /// </summary>
+        [Comment("鍒涘缓鏃ユ湡")]
+        public DateTimeOffset? Billdate { get; set; }
+
+        /// <summary>
+        /// 閫佽揣閫氱煡鍗曞彿
+        /// </summary>
+        [Comment("閫佽揣閫氱煡鍗曞彿")]
+        [MaxLength(255)]
+        public string SourceBillNo { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�    
+        /// </summary>
+        [Comment("渚涘簲鍟嗙紪鐮�")]
+        [MaxLength(255)]
+        public string Vendorcode { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�    
+        /// </summary>
+        [Comment("渚涘簲鍟嗗悕绉�")]
+        [MaxLength(255)]
+        public string Vendorname { get; set; }
+
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        [Comment("鍏徃鍚嶇О")]
+        [MaxLength(255)]
+        public string Companyname { get; set; }
+
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        [Comment("浠撶鍛�")]
+        [MaxLength(255)]
+        public string WarehouseKeepername { get; set; }
+
+        /// <summary>
+        /// 璐告槗鏂瑰紡
+        /// </summary>
+        [Comment("璐告槗鏂瑰紡")]
+        public TradeMode TradeMode { get; set; }
+
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        [Comment("浠撳偍涓績")]
+        [MaxLength(255)]
+        public string WarehouseCentername { get; set; }
+
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        [Comment("浠撻棿")]
+        [MaxLength(255)]
+        public string StoreRoomname { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        [Comment("鎶ュ叧鍗曞彿")]
+        [MaxLength(255)]
+        public string DeclarationCode { get; set; }
+
+        /// <summary>
+        /// 涓撲笟
+        /// </summary>
+        [Comment("涓撲笟")]
+        [MaxLength(255)]
+        public string Majorname { get; set; }
+
+        /// <summary>
+        /// 澶囨敞    
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(500)]
+        public string Remarks { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [Comment("鍗曟嵁鐘舵��")]
+        [Required]
+        public OrderStatusEnum OrderStatus { get; set; } = OrderStatusEnum.WEIXIAFA;
+
+        /// <summary>
+        /// 鍗曟嵁鏄庣粏
+        /// </summary>
+        public ICollection<WmsOrderDetails> WareOrderDetails { get; set; }
+
+        /// <summary>
+        /// 1瀵瑰閰嶇疆鍏崇郴
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        public void Configure(EntityTypeBuilder<WmsOrder> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            // 涓�瀵瑰閰嶇疆
+            entityBuilder.HasMany(x => x.WareOrderDetails)
+                .WithOne(x => x.WareOrder)
+                .HasForeignKey(x => x.OrderId);
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrderDetails.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrderDetails.cs
new file mode 100644
index 0000000..bee312f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrderDetails.cs
@@ -0,0 +1,178 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍗曟嵁鏄庣粏琛�
+    /// </summary>
+    [Table("wms_order_details")]
+    [Comment("鍗曟嵁鏄庣粏琛�")]
+    public class WmsOrderDetails : DEntityBase
+    {
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        [Comment("鍗曟嵁Id")]
+        [MaxLength(50)]
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+        /// </summary>
+        [Comment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�")]
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [Comment("鐗╂枡缂栧彿")]
+        [MaxLength(255)]
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [Comment("鐗╂枡鍚嶇О")]
+        [MaxLength(255)]
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        [Comment("鍩烘湰鍗曚綅")]
+        [MaxLength(255)]
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [Comment("鏁伴噺")]
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鏁伴噺
+        /// </summary>
+        [Comment("鍏ュ簱鏁伴噺")]
+        public decimal InventoryQty { get; set; }
+        
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        [Comment("鍗曟牴闀垮害")]
+        public decimal SingleLength { get; set; }
+
+        /// <summary>
+        /// 鐞嗚閲嶉噺    
+        /// </summary>
+        [Comment("鐞嗚閲嶉噺")]
+        public decimal TheoreticalWeight { get; set; }
+
+        /// <summary>
+        /// 涓嶅惈绋庡崟浠�    
+        /// </summary>
+        [Comment("涓嶅惈绋庡崟浠�")]
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 鎴愭湰閲戦    
+        /// </summary>
+        [Comment("鎴愭湰閲戦")]
+        public decimal SumPrice { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        [Comment("椤圭洰缂栧彿")]
+        [MaxLength(255)]
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鍚堝悓缂栧彿
+        /// </summary>
+        [Comment("鍚堝悓缂栧彿")]
+        [MaxLength(255)]
+        public string ContractCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        [Comment("TA鍙�")]
+        [MaxLength(255)]
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍝佸悕
+        /// </summary>
+        [Comment("鎶ュ叧鍝佸悕")]
+        [MaxLength(255)]
+        public string TradeName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧椤瑰彿
+        /// </summary>
+        [Comment("鎶ュ叧椤瑰彿")]
+        [MaxLength(255)]
+        public string ItemNo { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍗曚綅
+        /// </summary>
+        [Comment("鎶ュ叧鍗曚綅")]
+        [MaxLength(255)]
+        public string CustomsUnitName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鏁伴噺   
+        /// </summary>
+        [Comment("鎶ュ叧鏁伴噺")]
+        public decimal CustomsNum { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧閲戦 
+        /// </summary>
+        [Comment("鎶ュ叧閲戦")]
+        public decimal CustomsPrices { get; set; }
+
+        /// <summary>
+        /// 鐗规畩瑕佹眰
+        /// </summary>
+        [Comment("鐗规畩瑕佹眰")]
+        [MaxLength(255)]
+        public string SpecialNeeds { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [Comment("鍗曟嵁鐘舵��")]
+        [Required]
+        public OrderDetailsStatusEnum OrderStatus { get; set; } = OrderDetailsStatusEnum.WEIZHIXING;
+
+        /// <summary>
+        /// 妫�楠岀粨鏋�
+        /// </summary>
+        [Comment("妫�楠岀粨鏋�")]
+        [Required]
+        public InspectionResultsEnum InspectionResults { get; set; } = InspectionResultsEnum.WEIJIANYAN;
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        [Comment("鎵樼洏缂栫爜")]
+        [MaxLength(50)]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        [Comment("搴撲綅缂栫爜")]
+        [MaxLength(50)]
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁涓昏〃
+        /// </summary>
+        public WmsOrder WareOrder { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrder.cs
new file mode 100644
index 0000000..be6edd4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrder.cs
@@ -0,0 +1,166 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鏀惰揣鍗�
+    /// </summary>
+    [Table("wms_receiptorder")]
+    [Comment("鏀惰揣鍗�")]
+    public class WmsReceiptOrder : DEntityBase, IEntityTypeBuilder<WmsReceiptOrder>
+    {
+        /// <summary>
+        ///  Billdate
+        /// </summary>
+        [Comment("鍗曟嵁澶х被")]
+        [Required]
+        public long OrderLargeCategory { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        [Comment("鍗曟嵁灏忕被")]
+        [Required]
+        public long OrderSubclass { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        [Comment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�")]
+        public long SOID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿  
+        /// </summary>
+        [Comment("鍗曟嵁缂栧彿")]
+        [Required]
+        [MaxLength(255)]
+        public string NO { get; set; }
+
+        /// <summary>
+        /// WMS鏀惰揣鍗曞彿
+        /// </summary>
+        [Comment("WMS鏀惰揣鍗曞彿")]
+        [MaxLength(255)]
+        public string WMSNO { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃ユ湡    
+        /// </summary>
+        [Comment("鍒涘缓鏃ユ湡")]
+        public DateTimeOffset? Billdate { get; set; }
+
+        /// <summary>
+        /// 閫佽揣閫氱煡鍗曞彿
+        /// </summary>
+        [Comment("閫佽揣閫氱煡鍗曞彿")]
+        [MaxLength(255)]
+        public string SourceBillNo { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�    
+        /// </summary>
+        [Comment("渚涘簲鍟嗙紪鐮�")]
+        [MaxLength(255)]
+        public string Vendorcode { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟嗗悕绉�    
+        /// </summary>
+        [Comment("渚涘簲鍟嗗悕绉�")]
+        [MaxLength(255)]
+        public string Vendorname { get; set; }
+
+        /// <summary>
+        /// 鍏徃鍚嶇О
+        /// </summary>
+        [Comment("鍏徃鍚嶇О")]
+        [MaxLength(255)]
+        public string Companyname { get; set; }
+
+        /// <summary>
+        /// 浠撶鍛�
+        /// </summary>
+        [Comment("浠撶鍛�")]
+        [MaxLength(255)]
+        public string WarehouseKeepername { get; set; }
+
+        /// <summary>
+        /// 璐告槗鏂瑰紡
+        /// </summary>
+        [Comment("璐告槗鏂瑰紡")]
+        public TradeMode TradeMode { get; set; }
+
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        [Comment("浠撳偍涓績")]
+        [MaxLength(255)]
+        public string WarehouseCentername { get; set; }
+
+        /// <summary>
+        /// 浠撻棿
+        /// </summary>
+        [Comment("浠撻棿")]
+        [MaxLength(255)]
+        public string StoreRoomname { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍗曞彿
+        /// </summary>
+        [Comment("鎶ュ叧鍗曞彿")]
+        [MaxLength(255)]
+        public string DeclarationCode { get; set; }
+
+        /// <summary>
+        /// 涓撲笟
+        /// </summary>
+        [Comment("涓撲笟")]
+        [MaxLength(255)]
+        public string Majorname { get; set; }
+
+        /// <summary>
+        /// 澶囨敞    
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(500)]
+        public string Remarks { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鐘舵��
+        /// </summary>
+        [Comment("鏀惰揣鐘舵��")]
+        [Required]
+        public ReceivingStatus ReceivingStatus { get; set; } = ReceivingStatus.WEISHOUHUO;
+
+        /// <summary>
+        /// 鎶ユ鐘舵��
+        /// </summary>
+        [Comment("鎶ユ鐘舵��")]
+        [Required]
+        public InspectionStatus InspectionStatus { get; set; } = InspectionStatus.WEIBAOJIAN;
+
+        /// <summary>
+        /// 鍗曟嵁鏄庣粏
+        /// </summary>
+        public ICollection<WmsReceiptOrderDetails> WmsReceiptOrderDetails { get; set; }
+
+        /// <summary>
+        /// 1瀵瑰閰嶇疆鍏崇郴
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        public void Configure(EntityTypeBuilder<WmsReceiptOrder> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            // 涓�瀵瑰閰嶇疆
+            entityBuilder.HasMany(x => x.WmsReceiptOrderDetails)
+                .WithOne(x => x.WmsReceiptOrder)
+                .HasForeignKey(x => x.OrderId);
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrderDetails.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrderDetails.cs
new file mode 100644
index 0000000..9c34ec6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrderDetails.cs
@@ -0,0 +1,193 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鏀惰揣鍗曟嵁鏄庣粏琛�
+    /// </summary>
+    [Table("wms_receiptorder_details")]
+    [Comment("鏀惰揣鍗曟嵁鏄庣粏琛�")]
+    public class WmsReceiptOrderDetails : DEntityBase
+    {
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        [Comment("鍗曟嵁Id")]
+        [MaxLength(50)]
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+        /// </summary>
+        [Comment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�")]
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [Comment("鐗╂枡缂栧彿")]
+        [MaxLength(255)]
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [Comment("鐗╂枡鍚嶇О")]
+        [MaxLength(255)]
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        [Comment("鍩烘湰鍗曚綅")]
+        [MaxLength(255)]
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [Comment("鏁伴噺")]
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        [Comment("鍗曟牴闀垮害")]
+        public decimal SingleLength { get; set; }
+
+        /// <summary>
+        /// 鐞嗚閲嶉噺    
+        /// </summary>
+        [Comment("鐞嗚閲嶉噺")]
+        public decimal TheoreticalWeight { get; set; }
+
+        /// <summary>
+        /// 涓嶅惈绋庡崟浠�    
+        /// </summary>
+        [Comment("涓嶅惈绋庡崟浠�")]
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 鎴愭湰閲戦    
+        /// </summary>
+        [Comment("鎴愭湰閲戦")]
+        public decimal SumPrice { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        [Comment("椤圭洰缂栧彿")]
+        [MaxLength(255)]
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鍚堝悓缂栧彿
+        /// </summary>
+        [Comment("鍚堝悓缂栧彿")]
+        [MaxLength(255)]
+        public string ContractCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        [Comment("TA鍙�")]
+        [MaxLength(255)]
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍝佸悕
+        /// </summary>
+        [Comment("鎶ュ叧鍝佸悕")]
+        [MaxLength(255)]
+        public string TradeName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧椤瑰彿
+        /// </summary>
+        [Comment("鎶ュ叧椤瑰彿")]
+        [MaxLength(255)]
+        public string ItemNo { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鍗曚綅
+        /// </summary>
+        [Comment("鎶ュ叧鍗曚綅")]
+        [MaxLength(255)]
+        public string CustomsUnitName { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧鏁伴噺   
+        /// </summary>
+        [Comment("鎶ュ叧鏁伴噺")]
+        public decimal CustomsNum { get; set; }
+
+        /// <summary>
+        /// 鎶ュ叧閲戦 
+        /// </summary>
+        [Comment("鎶ュ叧閲戦")]
+        public decimal CustomsPrices { get; set; }
+
+        /// <summary>
+        /// 鐗规畩瑕佹眰
+        /// </summary>
+        [Comment("鐗规畩瑕佹眰")]
+        [MaxLength(255)]
+        public string SpecialNeeds { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        [Comment("鎵樼洏缂栫爜")]
+        [MaxLength(50)]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        [Comment("搴撲綅缂栫爜")]
+        [MaxLength(50)]
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 閫佽揣鏁伴噺
+        /// </summary>
+        [Comment("閫佽揣鏁伴噺")]
+        [MaxLength(50)]
+        public decimal DeliveryQty { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鏁伴噺
+        /// </summary>
+        [Comment("鏀惰揣鏁伴噺")]
+        [MaxLength(50)]
+        public decimal ReceivedQty { get; set; }
+
+        /// <summary>
+        /// 鏀惰揣鐘舵��
+        /// </summary>
+        [Comment("鏀惰揣鐘舵��")]
+        [Required]
+        public ReceivingStatus ReceivingStatus { get; set; } = ReceivingStatus.WEISHOUHUO;
+
+        /// <summary>
+        /// 鎶ユ鐘舵��
+        /// </summary>
+        [Comment("鎶ユ鐘舵��")]
+        [Required]
+        public InspectionStatus InspectionStatus { get; set; } = InspectionStatus.WEIBAOJIAN;
+
+        /// <summary>
+        /// 鎶ユ缁撴灉
+        /// </summary>
+        [Comment("鎶ユ缁撴灉")]
+        [Required]
+        public InspectionResultsEnum InspectionResultsEnum { get; set; } = InspectionResultsEnum.WEIJIANYAN;
+
+        /// <summary>
+        /// 鍗曟嵁涓昏〃
+        /// </summary>
+        public WmsReceiptOrder WmsReceiptOrder { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsSortOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsSortOrder.cs
new file mode 100644
index 0000000..ad82f9e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsSortOrder.cs
@@ -0,0 +1,109 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍒嗘嫞琛�
+    /// </summary>
+    [Comment("鍒嗘嫞琛�")]
+    [Table("wms_sortorder")]
+    public class WmsSortOrder : DEntityBase
+    {
+        /// <summary>
+        /// 鏉ユ簮鍗曞彿    
+        /// </summary>
+        [Comment("鏉ユ簮鍗曞彿")]
+        [MaxLength(50)]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鍑哄簱鍗曟嵁鏄庣粏Id
+        /// </summary>
+        public long OrderDetailID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [Comment("鐗╂枡缂栧彿")]
+        [MaxLength(255)]
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [Comment("鐗╂枡鍚嶇О")]
+        [MaxLength(255)]
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍒嗘嫞缁勭洏鍗曞彿    
+        /// </summary>
+        [Comment("鍒嗘嫞缁勭洏鍗曞彿")]
+        [MaxLength(50)]
+        public string ContainerOrderNo { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        [Comment("椤圭洰缂栧彿")]
+        [MaxLength(255)]
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        [Comment("TA鍙�")]
+        [MaxLength(255)]
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        [Comment("鍒嗘鍙�")]
+        [MaxLength(255)]
+        public string PartCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        [Comment("搴撲綅缂栫爜")]
+        [MaxLength(20)]
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 瀹瑰櫒缂栧彿    
+        /// </summary>
+        [Comment("瀹瑰櫒缂栧彿")]
+        [MaxLength(50)]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘嫞鏁�    
+        /// </summary>
+        [Comment("鍒嗘嫞鏁�")]
+        public decimal SortQuantity { get; set; }
+
+        /// <summary>
+        /// 瀹為檯鍒嗘嫞鏁�    
+        /// </summary>
+        [Comment("瀹為檯鍒嗘嫞鏁�")]
+        public decimal ActualQuantity { get; set; }
+
+        /// <summary>
+        /// 澶囨敞    
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(500)]
+        public string Remarks { get; set; }
+
+        /// <summary>
+        /// 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+        /// </summary>
+        [Comment("鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2")]
+        public SortStatusEnum SortStatus { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrder.cs
new file mode 100644
index 0000000..44b88d4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrder.cs
@@ -0,0 +1,131 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 閫�鏂欏叆搴撳崟
+    /// </summary>
+    [Table("wms_stockreturn_order")]
+    [Comment("閫�鏂欏叆搴撳崟")]
+    public class WmsStockReturnOrder : DEntityBase, IEntityTypeBuilder<WmsStockReturnOrder>
+    {
+        /// <summary>
+        ///  Billdate
+        /// </summary>
+        [Comment("鍗曟嵁澶х被")]
+        [Required]
+        public long OrderLargeCategory { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        [Comment("鍗曟嵁灏忕被")]
+        [Required]
+        public long OrderSubclass { get; set; }
+
+        /// <summary>
+        /// 浜嬪姟绫诲瀷
+        /// </summary>
+        [Comment("浜嬪姟绫诲瀷")]
+        public MoveType MoveType { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+        /// </summary>
+        [Comment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�")]
+        public long SOID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿  
+        /// </summary>
+        [Comment("鍗曟嵁缂栧彿")]
+        [Required]
+        [MaxLength(255)]
+        public string NO { get; set; }
+
+        /// <summary>
+        /// 閫�鏂欑敵璇锋棩鏈�    
+        /// </summary>
+        [Comment("閫�鏂欑敵璇锋棩鏈�")]
+        public DateTimeOffset? Billdate { get; set; }
+
+        /// <summary>
+        /// 棰嗙敤椤圭洰鍙�
+        /// </summary>
+        [Comment("棰嗙敤椤圭洰鍙�")]
+        [MaxLength(255)]
+        public string WBSElementcode { get; set; }
+
+        /// <summary>
+        /// 棰嗘枡閮ㄩ棬    
+        /// </summary>
+        [Comment("棰嗘枡閮ㄩ棬")]
+        [MaxLength(255)]
+        public string BenefitingDepartcode { get; set; }
+
+        /// <summary>
+        /// 鏀剁泭閮ㄩ棬    
+        /// </summary>
+        [Comment("鏀剁泭閮ㄩ棬")]
+        [MaxLength(255)]
+        public string CostCenterID { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        [Comment("瀹㈡埛")]
+        [MaxLength(255)]
+        public string FI_Client_Analysis_H { get; set; }
+
+        /// <summary>
+        /// 棰嗗彇浜�
+        /// </summary>
+        [Comment("棰嗗彇浜�")]
+        [MaxLength(255)]
+        public string PickerID { get; set; }
+
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        [Comment("鍏徃")]
+        [MaxLength(255)]
+        public string Companyname { get; set; }
+
+        /// <summary>
+        /// 鏂藉伐闃�
+        /// </summary>
+        [Comment("鏂藉伐闃�")]
+        [MaxLength(255)]
+        public string ConstructionTeamID { get; set; }  
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [Comment("鍗曟嵁鐘舵��")]
+        [Required]
+        public OrderStatusEnum OrderStatus { get; set; } = OrderStatusEnum.WEIXIAFA;
+
+        /// <summary>
+        /// 鍗曟嵁鏄庣粏
+        /// </summary>
+        public ICollection<WmsStockReturnOrderDetails> WmsStockReturnOrderDetails { get; set; }
+
+        /// <summary>
+        /// 1瀵瑰閰嶇疆鍏崇郴
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        public void Configure(EntityTypeBuilder<WmsStockReturnOrder> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            // 涓�瀵瑰閰嶇疆
+            entityBuilder.HasMany(x => x.WmsStockReturnOrderDetails)
+                .WithOne(x => x.WmsStockReturnOrder)
+                .HasForeignKey(x => x.OrderId);
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrderDetails.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrderDetails.cs
new file mode 100644
index 0000000..90a3633
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrderDetails.cs
@@ -0,0 +1,108 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 閫�鏂欏叆搴撳崟璇︽儏
+    /// </summary>
+    [Table("wms_stockreturn_order_details")]
+    [Comment("閫�鏂欏叆搴撳崟璇︽儏")]
+    public class WmsStockReturnOrderDetails : DEntityBase
+    {
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        [Comment("鍗曟嵁Id")]
+        [MaxLength(50)]
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+        /// </summary>
+        [Comment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�")]
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [Comment("鐗╂枡缂栧彿")]
+        [MaxLength(255)]
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [Comment("鐗╂枡鍚嶇О")]
+        [MaxLength(255)]
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        [Comment("鍩烘湰鍗曚綅")]
+        [MaxLength(255)]
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [Comment("鏁伴噺")]
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        [Comment("鍗曟牴闀垮害")]
+        public decimal Length { get; set; }
+
+        /// <summary>
+        /// 浠舵暟    
+        /// </summary>
+        [Comment("浠舵暟")]
+        public decimal Number { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        [Comment("SCM鎵规鍙�")]
+        [MaxLength(255)]
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        [Comment("WMS鎵规鍙�")]
+        [MaxLength(255)]
+        public string Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        [Comment("椤圭洰缂栧彿")]
+        [MaxLength(255)]
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        [Comment("TA鍙�")]
+        [MaxLength(255)]
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        [Comment("鍒嗘鍙�")]
+        [MaxLength(255)]
+        public string PartCode { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁涓昏〃
+        /// </summary>
+        public WmsStockReturnOrder WmsStockReturnOrder { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrder.cs
new file mode 100644
index 0000000..b972a1b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrder.cs
@@ -0,0 +1,145 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 棰嗘枡鍗�
+    /// </summary>
+    [Table("wms_takematerialorder")]
+    [Comment("棰嗘枡鍗�")]
+    public class WmsTakeMaterialOrder : DEntityBase, IEntityTypeBuilder<WmsTakeMaterialOrder>
+    {
+        /// <summary>
+        ///  Billdate
+        /// </summary>
+        [Comment("鍗曟嵁澶х被")]
+        [Required]
+        public long OrderLargeCategory { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁灏忕被
+        /// </summary>
+        [Comment("鍗曟嵁灏忕被")]
+        [Required]
+        public long OrderSubclass { get; set; }
+
+        /// <summary>
+        ///浜嬪姟绫诲瀷
+        ///閿�鍞鏂欙細Z201 鐢熶骇棰嗘枡锛歓221
+        /// </summary>
+        [Comment("浜嬪姟绫诲瀷")]
+        public string MoveType { get; set; }
+
+        /// <summary>
+        /// SCM 棰� 鏂� 鐢宠鍗曞ご琛ㄥ敮涓�鏍囪瘑
+        /// </summary>
+        [Comment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�")]
+        public long SOID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿  
+        /// </summary>
+        [Comment("鍗曟嵁缂栧彿")]
+        [Required]
+        [MaxLength(255)]
+        public string NO { get; set; }
+
+        /// <summary>
+        /// 棰嗘枡鍗曠敵璇锋棩鏈�    
+        /// </summary>
+        [Comment("棰嗘枡鍗曠敵璇锋棩鏈�")]
+        public DateTimeOffset? Billdate { get; set; }
+
+        /// <summary>
+        /// 棰嗙敤椤圭洰鍙�
+        /// </summary>
+        [Comment("棰嗙敤椤圭洰鍙�")]
+        [MaxLength(255)]
+        public string WBSElementcode { get; set; }
+
+        /// <summary>
+        /// 棰嗘枡閮ㄩ棬    
+        /// </summary>
+        [Comment("棰嗘枡閮ㄩ棬")]
+        [MaxLength(255)]
+        public string BenefitingDepartcode { get; set; }
+
+        /// <summary>
+        /// 鍙楃泭閮ㄩ棬    
+        /// </summary>
+        [Comment("鍙楃泭閮ㄩ棬")]
+        [MaxLength(255)]
+        public string CostCenterID { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        [Comment("瀹㈡埛")]
+        [MaxLength(255)]
+        public string FI_Client_Analysis_H { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍏徃闂翠氦鏄� 1.鏄� 2.鍚�
+        /// </summary>
+        [Comment("鏄惁鍏徃闂翠氦鏄�")]
+        public long IsInnerCompany { get; set; }
+
+        /// <summary>
+        /// 棰嗘枡浜�
+        /// </summary>
+        [Comment("棰嗘枡浜�")]
+        [MaxLength(255)]
+        public string PickerID { get; set; }
+
+        /// <summary>
+        /// 浠撳偍涓績
+        /// </summary>
+        [Comment("浠撳偍涓績")]
+        [MaxLength(255)]
+        public string WarehouseCentername { get; set; }
+
+        /// <summary>
+        /// 鍏徃
+        /// </summary>
+        [Comment("鍏徃")]
+        [MaxLength(255)]
+        public string Companyname { get; set; }
+
+        /// <summary>
+        /// 鏂藉伐闃�
+        /// </summary>
+        [Comment("鏂藉伐闃�")]
+        [MaxLength(255)]
+        public string ConstructionTeamID { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [Comment("鍗曟嵁鐘舵��")]
+        [Required]
+        public OrderStatusEnum OrderStatus { get; set; } = OrderStatusEnum.WEIXIAFA;
+
+        /// <summary>
+        /// 鍗曟嵁鏄庣粏
+        /// </summary>
+        public ICollection<WmsTakeMaterialOrderDetail> WmsTakeMaterialOrderDetail { get; set; }
+
+        /// <summary>
+        /// 1瀵瑰閰嶇疆鍏崇郴
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        public void Configure(EntityTypeBuilder<WmsTakeMaterialOrder> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            // 涓�瀵瑰閰嶇疆
+            entityBuilder.HasMany(x => x.WmsTakeMaterialOrderDetail)
+                .WithOne(x => x.WmsTakeMaterialOrder)
+                .HasForeignKey(x => x.OrderId);
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrderDetail.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrderDetail.cs
new file mode 100644
index 0000000..4b687f0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrderDetail.cs
@@ -0,0 +1,132 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍗曟嵁鏄庣粏琛�
+    /// </summary>
+    [Table("wms_takematerial_orderdetail")]
+    [Comment("鍗曟嵁鏄庣粏琛�")]
+    public class WmsTakeMaterialOrderDetail : DEntityBase
+    {
+        /// <summary>
+        /// 鍗曟嵁Id  
+        /// </summary>
+        [Comment("鍗曟嵁Id")]
+        [MaxLength(50)]
+        public long OrderId { get; set; }
+
+        /// <summary>
+        /// SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑
+        /// </summary>
+        [Comment("SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑")]
+        public long OID { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [Comment("鐗╂枡缂栧彿")]
+        [MaxLength(255)]
+        public string Materialcode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [Comment("鐗╂枡鍚嶇О")]
+        [MaxLength(255)]
+        public string Materialname { get; set; }
+
+        /// <summary>
+        /// 鍩烘湰鍗曚綅    
+        /// </summary>
+        [Comment("鍩烘湰鍗曚綅")]
+        [MaxLength(255)]
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [Comment("鏁伴噺")]
+        public decimal Qty { get; set; }
+
+        /// <summary>
+        /// 涓嬪彂鏁伴噺
+        /// </summary>
+        [Comment("涓嬪彂鏁伴噺")]
+        public decimal DistributeQty { get; set; }
+
+        /// <summary>
+        /// 鍗曟牴闀垮害 
+        /// </summary>
+        [Comment("鍗曟牴闀垮害")]
+        public decimal SingleLength { get; set; }
+
+        /// <summary>
+        /// 浠舵暟    
+        /// </summary>
+        [Comment("浠舵暟")]
+        public decimal Number { get; set; }
+
+        /// <summary>
+        /// SCM鎵规鍙�    
+        /// </summary>
+        [Comment("SCM鎵规鍙�")]
+        [MaxLength(255)]
+        public string Batchno_SCM { get; set; }
+
+        /// <summary>
+        /// WMS鎵规鍙�    
+        /// </summary>
+        [Comment("WMS鎵规鍙�")]
+        public string Batchno_WMS { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        [Comment("椤圭洰缂栧彿")]
+        [MaxLength(255)]
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        [Comment("TA鍙�")]
+        [MaxLength(255)]
+        public string TACode { get; set; }
+
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        [Comment("鍒嗘鍙�")]
+        [MaxLength(255)]
+        public string PartCode { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鐘舵��
+        /// </summary>
+        [Comment("鍗曟嵁鐘舵��")]
+        [Required]
+        public OrderDetailsStatusEnum OrderStatus { get; set; } = OrderDetailsStatusEnum.WEIZHIXING;
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        [Comment("鎵樼洏缂栫爜")]
+        [MaxLength(50)]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        [Comment("搴撲綅缂栫爜")]
+        [MaxLength(50)]
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁涓昏〃
+        /// </summary>
+        public WmsTakeMaterialOrder WmsTakeMaterialOrder { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysApp.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysApp.cs
new file mode 100644
index 0000000..310f561
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysApp.cs
@@ -0,0 +1,48 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺搴旂敤琛�
+    /// </summary>
+    [Table("sys_app")]
+    [Comment("绯荤粺搴旂敤琛�")]
+    public class SysApp : DEntityBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [Required, MaxLength(20)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Comment("缂栫爜")]
+        [Required, MaxLength(50)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鏄惁榛樿婵�娲伙紙Y-鏄紝N-鍚︼級,鍙兘鏈変竴涓郴缁熼粯璁ゆ縺娲�
+        /// 鐢ㄦ埛鐧诲綍鍚庨粯璁ゅ睍绀烘绯荤粺鑿滃崟
+        /// </summary>
+        [Comment("鏄惁榛樿婵�娲�")]
+        [MaxLength(5)]
+        public string Active { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        [Comment("鐘舵��")]
+        public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        [Comment("鎺掑簭")]
+        public int Sort { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGen.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGen.cs
new file mode 100644
index 0000000..9762451
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGen.cs
@@ -0,0 +1,119 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 浠g爜鐢熸垚琛�
+    /// </summary>
+    [Table("sys_code_gen")]
+    [Comment("浠g爜鐢熸垚琛�")]
+    public class SysCodeGen : DEntityBase
+    {
+        /// <summary>
+        /// 浣滆�呭鍚�
+        /// </summary>
+        [Comment("浣滆�呭鍚�")]
+        [MaxLength(20)]
+        public string AuthorName { get; set; }
+
+        /// <summary>
+        /// 鏄惁绉婚櫎琛ㄥ墠缂�
+        /// </summary>
+        [Comment("鏄惁绉婚櫎琛ㄥ墠缂�")]
+        [MaxLength(5)]
+        public string TablePrefix { get; set; }
+
+        /// <summary>
+        /// 鐢熸垚鏂瑰紡
+        /// </summary>
+        [Comment("鐢熸垚鏂瑰紡")]
+        [MaxLength(20)]
+        public string GenerateType { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撳悕
+        /// </summary>
+        [Comment("鏁版嵁搴撳悕")]
+        [MaxLength(100)]
+        public string DatabaseName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撹〃鍚�
+        /// </summary>
+        [Comment("鏁版嵁搴撹〃鍚�")]
+        [MaxLength(100)]
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 鍛藉悕绌洪棿
+        /// </summary>
+        [Comment("鍛藉悕绌洪棿")]
+        [MaxLength(100)]
+        public string NameSpace { get; set; }
+
+
+        /// <summary>
+        /// 鏄惁鍙槸鏌ヨ
+        /// </summary>
+        [Comment("鏄惁鍙槸鏌ヨ")]
+        public bool IsOnlyQuery { get; set; }
+
+
+        /// <summary>
+        /// 妯″潡璺緞
+        /// </summary>
+        [Comment("妯″潡璺緞")]
+        [MaxLength(100)]
+        public string ModuleName { get; set; }
+
+        /// <summary>
+        /// 鍓嶇椤圭洰鍚�
+        /// </summary>
+        [Comment("鍓嶇椤圭洰鍚�")]
+        [MaxLength(100)]
+        public string FrontProName { get; set; }
+
+
+        /// <summary>
+        /// 绋嬪簭闆�
+        /// </summary>
+        [NotMapped]
+        public string ProName
+        {
+            get { return NameSpace.TrimEnd(new char[] { '.', 'A', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n' }); }
+        }
+
+        /// <summary>
+        /// 涓氬姟鍚�
+        /// </summary>
+        [Comment("涓氬姟鍚�")]
+        [MaxLength(100)]
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        [Comment("鑿滃崟搴旂敤鍒嗙被")]
+        [MaxLength(50)]
+        public string MenuApplication { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟缂栫爜
+        /// </summary>
+        [Comment("鑿滃崟缂栫爜")]
+        public long MenuPid { get; set; }
+
+        /// <summary>
+        /// 浣庝唬鐮佹ā鍧楁潵婧�
+        /// </summary>
+        public long? LowCodeId { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏀寔瀵煎叆
+        /// </summary>
+        [Comment("鏄惁鏀寔瀵煎叆")]
+        public bool IsWhetherImport { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGenConfig.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGenConfig.cs
new file mode 100644
index 0000000..afe057b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGenConfig.cs
@@ -0,0 +1,169 @@
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 浠g爜鐢熸垚瀛楁閰嶇疆琛�
+    /// </summary>
+    [Table("sys_code_gen_config")]
+    [Comment("浠g爜鐢熸垚瀛楁閰嶇疆琛�")]
+    public class SysCodeGenConfig : DEntityBase
+    {
+        /// <summary>
+        /// 浠g爜鐢熸垚涓昏〃ID
+        /// </summary>
+        [Comment("浠g爜鐢熸垚涓昏〃ID")]
+        public long CodeGenId { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撳瓧娈靛悕
+        /// </summary>
+        [Comment("鏁版嵁搴撳瓧娈靛悕")]
+        [Required, MaxLength(100)]
+        public string ColumnName { get; set; }
+
+        /// <summary>
+        /// 瀛楁鎻忚堪
+        /// </summary>
+        [Comment("瀛楁鎻忚堪")]
+        [MaxLength(100)]
+        public string ColumnComment { get; set; }
+
+        /// <summary>
+        /// .NET鏁版嵁绫诲瀷
+        /// </summary>
+        [Comment(".NET鏁版嵁绫诲瀷")]
+        [MaxLength(50)]
+        public string NetType { get; set; }
+
+        /// <summary>
+        /// .NET鏁版嵁绫诲瀷(鎺ュ彛浼犲叆)
+        /// </summary>
+        [Comment(".NET鏁版嵁绫诲瀷(鎺ュ彛浼犲叆)")]
+        [MaxLength(50)]
+        public string DtoNetType { get; set; }
+
+        /// <summary>
+        /// 浣滅敤绫诲瀷锛堝瓧鍏革級
+        /// </summary>
+        [Comment("浣滅敤绫诲瀷")]
+        [MaxLength(50)]
+        public string EffectType { get; set; }
+
+        /// <summary>
+        /// 澶栭敭瀹炰綋鍚嶇О
+        /// </summary>
+        [Comment("澶栭敭瀹炰綋鍚嶇О")]
+        [MaxLength(50)]
+        public string FkEntityName { get; set; }
+
+        /// <summary>
+        /// 澶栭敭鏄剧ず瀛楁
+        /// </summary>
+        [Comment("澶栭敭鏄剧ず瀛楁")]
+        [MaxLength(50)]
+        public string FkColumnName { get; set; }
+
+        /// <summary>
+        /// 澶栭敭鏄剧ず瀛楁.NET绫诲瀷
+        /// </summary>
+        [Comment("澶栭敭鏄剧ず瀛楁.NET绫诲瀷")]
+        [MaxLength(50)]
+        public string FkColumnNetType { get; set; }
+
+        /// <summary>
+        /// 瀛楀吀code
+        /// </summary>
+        [Comment("瀛楀吀Code")]
+        [MaxLength(50)]
+        public string DictTypeCode { get; set; }
+
+        /// <summary>
+        /// 鍒楄〃鏄惁缂╄繘锛堝瓧鍏革級
+        /// </summary>
+        [Comment("鍒楄〃鏄惁缂╄繘")]
+        [MaxLength(5)]
+        public string WhetherRetract { get; set; }
+
+        /// <summary>
+        /// 鏄惁蹇呭~锛堝瓧鍏革級
+        /// </summary>
+        [Comment("鏄惁蹇呭~")]
+        [MaxLength(5)]
+        public string WhetherRequired { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄煡璇㈡潯浠�
+        /// </summary>
+        [Comment("鏄惁鏄煡璇㈡潯浠�")]
+        [MaxLength(5)]
+        public string QueryWhether { get; set; }
+
+        /// <summary>
+        /// 鏌ヨ鏂瑰紡
+        /// </summary>
+        [Comment("鏌ヨ鏂瑰紡")]
+        [MaxLength(10)]
+        public string QueryType { get; set; }
+
+        /// <summary>
+        /// 鍒楄〃鏄剧ず
+        /// </summary>
+        [Comment("鍒楄〃鏄剧ず")]
+        [MaxLength(5)]
+        public string WhetherTable { get; set; }
+
+        /// <summary>
+        /// 鍒楄〃鏄惁鎺掑簭
+        /// </summary>
+        [Comment("鍒楄〃鏄惁鎺掑簭")]
+        [MaxLength(5)]
+        public string WhetherOrderBy { get; set; }
+
+        /// <summary>
+        /// 澧炴敼
+        /// </summary>
+        [Comment("澧炴敼")]
+        [MaxLength(5)]
+        public string WhetherAddUpdate { get; set; }
+
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [Comment("涓婚敭")]
+        [MaxLength(5)]
+        public string ColumnKey { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撲腑绫诲瀷锛堢墿鐞嗙被鍨嬶級
+        /// </summary>
+        [Comment("鏁版嵁搴撲腑绫诲瀷")]
+        [MaxLength(128)]
+        public string DataType { get; set; }
+
+        /// <summary>
+        /// 鏄惁閫氱敤瀛楁
+        /// </summary>
+        [Comment("鏄惁閫氱敤瀛楁")]
+        [MaxLength(5)]
+        public string WhetherCommon { get; set; }
+
+
+        /// <summary>
+        /// 椤甸潰鍒楁樉绀烘渶灏忓搴�
+        /// </summary>
+        [Comment("椤甸潰鍒楁樉绀烘渶灏忓搴�")]
+        [MaxLength(50)]
+        public string ShowTitleMinWidth { get; set; }
+
+
+        /// <summary>
+        /// 鏄惁鑱斿悎涓婚敭
+        /// </summary>
+        [Comment("鏄惁鑱斿悎涓婚敭")]
+        [MaxLength(5)]
+        public string WhetherUnionKey { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeModular.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeModular.cs
new file mode 100644
index 0000000..2001705
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeModular.cs
@@ -0,0 +1,72 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Furion.Extras.Admin.NET
+{
+    /// <summary>
+    /// 浠g爜鐢熸垚琛�
+    /// </summary>
+    [Table("sys_code_modular")]
+    [Comment("鍔ㄦ�佺敓鎴愭ā鍧楃鐞嗚〃")]
+    public class SysCodeModular : DEntityBase
+    {
+        /// <summary>
+        /// 浣滆�呭鍚�
+        /// </summary>
+        [Comment("浣滆�呭鍚�")]
+        [MaxLength(20)]
+        public string AuthorName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撳悕
+        /// </summary>
+        [Comment("鏁版嵁搴撳悕")]
+        [MaxLength(100)]
+        public string DatabaseName { get; set; }
+
+        /// <summary>
+        /// 鍛藉悕绌洪棿
+        /// </summary>
+        [Comment("鍛藉悕绌洪棿")]
+        [MaxLength(100)]
+        public string NameSpace { get; set; }
+
+        /// <summary>
+        /// 绋嬪簭闆�
+        /// </summary>
+        [NotMapped]
+        public string ProName
+        {
+            get { return NameSpace.TrimEnd(new char[] { '.', 'A', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n' }); }
+        }
+
+        /// <summary>
+        /// 涓氬姟鍚�
+        /// </summary>
+        [Comment("涓氬姟鍚�")]
+        [MaxLength(100)]
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        [Comment("鑿滃崟搴旂敤鍒嗙被")]
+        [MaxLength(50)]
+        public string MenuApplication { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟缂栫爜
+        /// </summary>
+        [Comment("鑿滃崟缂栫爜")]
+        public long MenuPid { get; set; }
+
+        /// <summary>
+        /// 鍔ㄦ�佽〃鍗�
+        /// </summary>
+        [Comment("鍔ㄦ�佽〃鍗�")]
+        [MaxLength()]
+        public string FormDesignJson { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysConfig.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysConfig.cs
new file mode 100644
index 0000000..ec57314
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysConfig.cs
@@ -0,0 +1,61 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍙傛暟閰嶇疆琛�
+    /// </summary>
+    [Table("sys_config")]
+    [Comment("鍙傛暟閰嶇疆琛�")]
+    public class SysConfig : DEntityBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [Required, MaxLength(50)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Comment("缂栫爜")]
+        [Required, MaxLength(50)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 灞炴�у��
+        /// </summary>
+        [Comment("灞炴�у��")]
+        public string Value { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄郴缁熷弬鏁帮紙Y-鏄紝N-鍚︼級
+        /// </summary>
+        [Comment("鏄惁鏄郴缁熷弬鏁�")]
+        [MaxLength(5)]
+        public string SysFlag { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(100)]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        [Comment("鐘舵��")]
+        public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+        /// <summary>
+        /// 甯搁噺鎵�灞炲垎绫荤殑缂栫爜锛屾潵鑷簬鈥滃父閲忕殑鍒嗙被鈥濆瓧鍏�
+        /// </summary>
+        [Comment("甯搁噺鎵�灞炲垎绫荤殑缂栫爜")]
+        [MaxLength(50)]
+        public string GroupCode { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictData.cs
new file mode 100644
index 0000000..e2c905f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictData.cs
@@ -0,0 +1,58 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瀛楀吀鍊艰〃
+    /// </summary>
+    [Table("sys_dict_data")]
+    [Comment("瀛楀吀鍊艰〃")]
+    public class SysDictData : DEntityBase
+    {
+        /// <summary>
+        /// 瀛楀吀绫诲瀷Id
+        /// </summary>
+        [Comment("瀛楀吀绫诲瀷Id")]
+        public long TypeId { get; set; }
+
+        /// <summary>
+        /// 鍊�
+        /// </summary>
+        [Comment("鍊�")]
+        [MaxLength(100)]
+        public string Value { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Comment("缂栫爜")]
+        [MaxLength(50)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        [Comment("鎺掑簭")]
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(100)]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        [Comment("鐘舵��")]
+        public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+        /// <summary>
+        /// 鎵�灞炵被鍨�
+        /// </summary>
+        public SysDictType SysDictType { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictType.cs
new file mode 100644
index 0000000..dbd9ff8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictType.cs
@@ -0,0 +1,68 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瀛楀吀绫诲瀷琛�
+    /// </summary>
+    [Table("sys_dict_type")]
+    [Comment("瀛楀吀绫诲瀷琛�")]
+    public class SysDictType : DEntityBase, IEntityTypeBuilder<SysDictType>
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [Required, MaxLength(50)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Comment("缂栫爜")]
+        [Required, MaxLength(50)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        [Comment("鎺掑簭")]
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(100)]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        [Comment("鐘舵��")]
+        public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+        /// <summary>
+        /// 瀵瑰簲鏋氫妇
+        /// </summary>
+        [Comment("瀵瑰簲鏋氫妇")]
+        [MaxLength(200)]
+        public string EnumClassName { get; set; }
+
+        /// <summary>
+        /// 瀛楀吀鏁版嵁
+        /// </summary>
+        public ICollection<SysDictData> SysDictDatas { get; set; }
+
+        public void Configure(EntityTypeBuilder<SysDictType> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            entityBuilder.HasMany(x => x.SysDictDatas)
+                .WithOne(x => x.SysDictType)
+                .HasForeignKey(x => x.TypeId);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmp.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmp.cs
new file mode 100644
index 0000000..365ab36
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmp.cs
@@ -0,0 +1,70 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍛樺伐琛�
+    /// </summary>
+    [Table("sys_emp")]
+    [Comment("鍛樺伐琛�")]
+    public class SysEmp : IEntity, IEntityTypeBuilder<SysEmp>
+    {
+        /// <summary>
+        /// 鐢ㄦ埛Id
+        /// </summary>
+        [DatabaseGenerated(DatabaseGeneratedOption.None)]
+        [Comment("鐢ㄦ埛Id")]
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 宸ュ彿
+        /// </summary>
+        [Comment("宸ュ彿")]
+        [MaxLength(30)]
+        public string JobNum { get; set; }
+
+        /// <summary>
+        /// 鏈烘瀯Id
+        /// </summary>
+        [Comment("鏈烘瀯Id")]
+        public long OrgId { get; set; }
+
+        /// <summary>
+        /// 鏈烘瀯鍚嶇О
+        /// </summary>
+        [Comment("鏈烘瀯鍚嶇О")]
+        [MaxLength(50)]
+        public string OrgName { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氾紙鑱屼綅锛�
+        /// </summary>
+        public ICollection<SysPos> SysPos { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氫腑闂磋〃锛堝憳宸�-鑱屼綅锛�
+        /// </summary>
+        public List<SysEmpPos> SysEmpPos { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氶厤缃叧绯�
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        public void Configure(EntityTypeBuilder<SysEmp> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            entityBuilder.HasMany(p => p.SysPos).WithMany(p => p.SysEmps).UsingEntity<SysEmpPos>(
+                u => u.HasOne(c => c.SysPos).WithMany(c => c.SysEmpPos).HasForeignKey(c => c.SysPosId),
+                u => u.HasOne(c => c.SysEmp).WithMany(c => c.SysEmpPos).HasForeignKey(c => c.SysEmpId),
+                u =>
+                {
+                    u.HasKey(c => new { c.SysEmpId, c.SysPosId });
+                });
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpExtOrgPos.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpExtOrgPos.cs
new file mode 100644
index 0000000..4ab68d1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpExtOrgPos.cs
@@ -0,0 +1,53 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍛樺伐闄勫睘鏈烘瀯鑱屼綅琛�
+    /// </summary>
+    [Table("sys_emp_ext_org_pos")]
+    [Comment("鍛樺伐闄勫睘鏈烘瀯鑱屼綅琛�")]
+    public class SysEmpExtOrgPos : IEntity, IEntityTypeBuilder<SysEmpExtOrgPos>
+    {
+        /// <summary>
+        /// 鍛樺伐Id
+        /// </summary>
+        [Comment("鍛樺伐Id")]
+        public long SysEmpId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堝憳宸ワ級
+        /// </summary>
+        public SysEmp SysEmp { get; set; }
+
+        /// <summary>
+        /// 鏈烘瀯Id
+        /// </summary>
+        [Comment("鏈烘瀯Id")]
+        public long SysOrgId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堟満鏋勶級
+        /// </summary>
+        public SysOrg SysOrg { get; set; }
+
+        /// <summary>
+        /// 鑱屼綅Id
+        /// </summary>
+        [Comment("鑱屼綅Id")]
+        public long SysPosId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堣亴浣嶏級
+        /// </summary>
+        public SysPos SysPos { get; set; }
+
+        public void Configure(EntityTypeBuilder<SysEmpExtOrgPos> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            entityBuilder.HasKey(c => new { c.SysEmpId, c.SysOrgId, c.SysPosId });
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpPos.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpPos.cs
new file mode 100644
index 0000000..09d76c9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpPos.cs
@@ -0,0 +1,36 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍛樺伐鑱屼綅琛�
+    /// </summary>
+    [Table("sys_emp_pos")]
+    [Comment("鍛樺伐鑱屼綅琛�")]
+    public class SysEmpPos : IEntity
+    {
+        /// <summary>
+        /// 鍛樺伐Id
+        /// </summary>
+        [Comment("鍛樺伐Id")]
+        public long SysEmpId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堝憳宸ワ級
+        /// </summary>
+        public SysEmp SysEmp { get; set; }
+
+        /// <summary>
+        /// 鑱屼綅Id
+        /// </summary>
+        [Comment("鑱屼綅Id")]
+        public long SysPosId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堣亴浣嶏級
+        /// </summary>
+        public SysPos SysPos { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysExcelTemplate.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysExcelTemplate.cs
new file mode 100644
index 0000000..51c5c6e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysExcelTemplate.cs
@@ -0,0 +1,89 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// Excel妯℃澘
+    /// </summary>
+    [Table("sys_excel_template")]
+    [Comment("Excel妯℃澘")]
+    public class SysExcelTemplate : DEntityBase, IEntityTypeBuilder<SysExcelTemplate>
+    {
+        /// <summary>
+        /// 妯℃澘鍚嶇О
+        /// </summary>
+        [Comment("妯℃澘鍚嶇О")]
+        [Required, MaxLength(50)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鐗堟湰
+        /// </summary>
+        [Comment("鐗堟湰")]
+        [Required, MaxLength(20)]
+        public string Version { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炲簲鐢�
+        /// </summary>
+        [Comment("鎵�灞炲簲鐢�")]
+        [Required, MaxLength(20)]
+        public string AppName { get; set; }
+
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary> 
+        [Comment("绫诲悕")]
+        [Required, MaxLength(50)]
+        public string ClassName { get; set; }
+
+        /// <summary>
+        /// 妯℃澘鏂囦欢鍚嶇О
+        /// </summary> 
+        [Comment("妯℃澘鏂囦欢鍚嶇О")]
+        [Required, MaxLength(50)]
+        public string TemplateFileName { get; set; }
+
+        /// <summary>
+        /// 鍞竴瀛楁闆�
+        /// </summary> 
+        [Comment("鍞竴瀛楁闆�")]
+        [Required, MaxLength(300)]
+        public string UnionUniqueFields { get; set; }
+
+
+        /// <summary>
+        /// 琛ㄥご寮�濮嬭
+        /// </summary>
+        [Comment("琛ㄥご寮�濮嬭")]
+        public int HeadStartLine { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁寮�濮嬭
+        /// </summary>
+        [Comment("鏁版嵁寮�濮嬭")]
+        public int DataStartLine { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [Comment("鐘舵��")]
+        public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+        /// <summary>
+        /// 閰嶇疆鍞竴閿�
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        public void Configure(EntityTypeBuilder<SysExcelTemplate> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            entityBuilder.HasAlternateKey(x => new { x.ClassName, x.Version, x.AppName });
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysFile.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysFile.cs
new file mode 100644
index 0000000..dcc46b8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysFile.cs
@@ -0,0 +1,69 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鏂囦欢淇℃伅琛�
+    /// </summary>
+    [Table("sys_file")]
+    [Comment("鏂囦欢淇℃伅琛�")]
+    public class SysFile : DEntityBase
+    {
+        /// <summary>
+        /// 鏂囦欢瀛樺偍浣嶇疆锛�1:闃块噷浜戯紝2:鑵捐浜戯紝3:minio锛�4:鏈湴锛�
+        /// </summary>
+        [Comment("鏂囦欢瀛樺偍浣嶇疆")]
+        public int FileLocation { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢浠撳簱
+        /// </summary>
+        [Comment("鏂囦欢浠撳簱")]
+        [MaxLength(100)]
+        public string FileBucket { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢鍚嶇О锛堜笂浼犳椂鍊欑殑鏂囦欢鍚嶏級
+        /// </summary>
+        [Comment("鏂囦欢鍚嶇О")]
+        [MaxLength(100)]
+        public string FileOriginName { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢鍚庣紑
+        /// </summary>
+        [Comment("鏂囦欢鍚庣紑")]
+        [MaxLength(50)]
+        public string FileSuffix { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢澶у皬kb
+        /// </summary>
+        [Comment("鏂囦欢澶у皬kb")]
+        [MaxLength(10)]
+        public string FileSizeKb { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢澶у皬淇℃伅锛岃绠楀悗鐨�
+        /// </summary>
+        [Comment("鏂囦欢澶у皬淇℃伅")]
+        [MaxLength(50)]
+        public string FileSizeInfo { get; set; }
+
+        /// <summary>
+        /// 瀛樺偍鍒癰ucket鐨勫悕绉帮紙鏂囦欢鍞竴鏍囪瘑id锛�
+        /// </summary>
+        [Comment("瀛樺偍鍒癰ucket鐨勫悕绉�")]
+        [MaxLength(100)]
+        public string FileObjectName { get; set; }
+
+        /// <summary>
+        /// 瀛樺偍璺緞
+        /// </summary>
+        [Comment("瀛樺偍璺緞")]
+        [MaxLength(100)]
+        public string FilePath { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysForm.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysForm.cs
new file mode 100644
index 0000000..31ca5c7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysForm.cs
@@ -0,0 +1,47 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 琛ㄥ崟琛�
+    /// </summary>
+    [Table("sys_forms")]
+    [Comment("琛ㄥ崟琛�")]
+    public class SysForm : DEntityBase
+    {
+        /// <summary>
+        ///琛ㄥ崟鏍囬 涓嶅彲閲嶅
+        /// </summary>
+        [Required(ErrorMessage = "鏍囬涓嶅彲涓虹┖")]
+        [Comment("鏍囬")]
+        public string Title { get; set; }
+
+        /// <summary>
+        /// form琛ㄥ崟Json
+        /// </summary>
+        [Required(ErrorMessage = "form琛ㄥ崟Json涓嶅彲涓虹┖")]
+        [Comment("form琛ㄥ崟Json")]
+        public string FormJson { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙戝竷
+        /// </summary>
+        [Comment("鏄惁鍙戝竷")]
+        public bool Publish { get; set; } = false;
+
+        /// <summary>
+        /// 琛ㄥ崟绫诲瀷ID
+        /// </summary>
+        [Required(ErrorMessage = "琛ㄥ崟绫诲瀷ID涓嶅彲涓虹┖")]
+        [Comment("琛ㄥ崟绫诲瀷ID")]
+        public long TypeId { get; set; }
+
+        /// <summary>
+        /// 鐗堟湰
+        /// </summary>
+        [Comment("鐗堟湰")]
+        public int Version { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogAudit.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogAudit.cs
new file mode 100644
index 0000000..c95d597
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogAudit.cs
@@ -0,0 +1,66 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺鎿嶄綔/瀹¤鏃ュ織琛�
+    /// </summary>
+    [Table("sys_log_audit")]
+    [Comment("瀹¤鏃ュ織琛�")]
+    public class SysLogAudit : EntityBase
+    {
+        /// <summary>
+        /// 琛ㄥ悕
+        /// </summary>
+        [Comment("琛ㄥ悕")]
+        [MaxLength(50)]
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 鍒楀悕
+        /// </summary>
+        [Comment("鍒楀悕")]
+        [MaxLength(50)]
+        public string ColumnName { get; set; }
+
+        /// <summary>
+        /// 鏂板��
+        /// </summary>
+        [Comment("鏂板��")]
+        public string NewValue { get; set; }
+
+        /// <summary>
+        /// 鏃у��
+        /// </summary>
+        [Comment("鏃у��")]
+        public string OldValue { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔鏃堕棿
+        /// </summary>
+        [Comment("鎿嶄綔鏃堕棿")]
+        public DateTimeOffset? CreatedTime { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔浜篒d
+        /// </summary>
+        [Comment("鎿嶄綔浜篒d")]
+        public long UserId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔浜哄悕绉�
+        /// </summary>
+        [Comment("鎿嶄綔浜哄悕绉�")]
+        [MaxLength(50)]
+        public string UserName { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔鏂瑰紡锛氭柊澧炪�佹洿鏂般�佸垹闄�
+        /// </summary>
+        [Comment("鎿嶄綔鏂瑰紡")]
+        public DataOpType Operate { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogEx.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogEx.cs
new file mode 100644
index 0000000..c035b74
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogEx.cs
@@ -0,0 +1,79 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 寮傚父鏃ュ織
+    /// </summary>
+    [Table("sys_log_ex")]
+    [Comment("寮傚父鏃ュ織琛�")]
+    public class SysLogEx : EntityBase
+    {
+        /// <summary>
+        /// 鎿嶄綔浜�
+        /// </summary>
+        [Comment("鎿嶄綔浜�")]
+        [MaxLength(50)]
+        public string Account { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [MaxLength(100)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary>
+        [Comment("绫诲悕")]
+        [MaxLength(100)]
+        public string ClassName { get; set; }
+
+        /// <summary>
+        /// 鏂规硶鍚�
+        /// </summary>
+        [Comment("鏂规硶鍚�")]
+        [MaxLength(100)]
+        public string MethodName { get; set; }
+
+        /// <summary>
+        /// 寮傚父鍚嶇О
+        /// </summary>
+        [Comment("寮傚父鍚嶇О")]
+        public string ExceptionName { get; set; }
+
+        /// <summary>
+        /// 寮傚父淇℃伅
+        /// </summary>
+        [Comment("寮傚父淇℃伅")]
+        public string ExceptionMsg { get; set; }
+
+        /// <summary>
+        /// 寮傚父婧�
+        /// </summary>
+        [Comment("寮傚父婧�")]
+        public string ExceptionSource { get; set; }
+
+        /// <summary>
+        /// 鍫嗘爤淇℃伅
+        /// </summary>
+        [Comment("鍫嗘爤淇℃伅")]
+        public string StackTrace { get; set; }
+
+        /// <summary>
+        /// 鍙傛暟瀵硅薄
+        /// </summary>
+        [Comment("鍙傛暟瀵硅薄")]
+        public string ParamsObj { get; set; }
+
+        /// <summary>
+        /// 寮傚父鏃堕棿
+        /// </summary>
+        [Comment("寮傚父鏃堕棿")]
+        public DateTimeOffset? ExceptionTime { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogOp.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogOp.cs
new file mode 100644
index 0000000..4d1058f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogOp.cs
@@ -0,0 +1,121 @@
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鎿嶄綔鏃ュ織琛�
+    /// </summary>
+    [Table("sys_log_op")]
+    [Comment("鎿嶄綔鏃ュ織琛�")]
+    public class SysLogOp : EntityBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [MaxLength(100)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鏄惁鎵ц鎴愬姛锛圷-鏄紝N-鍚︼級
+        /// </summary>
+        [Comment("鏄惁鎵ц鎴愬姛")]
+        public YesOrNot Success { get; set; }
+
+        /// <summary>
+        /// 鍏蜂綋娑堟伅
+        /// </summary>
+        [Comment("鍏蜂綋娑堟伅")]
+        public string Message { get; set; }
+
+        /// <summary>
+        /// IP
+        /// </summary>
+        [Comment("IP")]
+        [MaxLength(20)]
+        public string Ip { get; set; }
+
+        /// <summary>
+        /// 鍦板潃
+        /// </summary>
+        [Comment("鍦板潃")]
+        [MaxLength(1024)]
+        public string Location { get; set; }
+
+        /// <summary>
+        /// 娴忚鍣�
+        /// </summary>
+        [Comment("娴忚鍣�")]
+        [MaxLength(100)]
+        public string Browser { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔绯荤粺
+        /// </summary>
+        [Comment("鎿嶄綔绯荤粺")]
+        [MaxLength(100)]
+        public string Os { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鍦板潃
+        /// </summary>
+        [Comment("璇锋眰鍦板潃")]
+        [MaxLength(100)]
+        public string Url { get; set; }
+
+        /// <summary>
+        /// 绫诲悕绉�
+        /// </summary>
+        [Comment("绫诲悕绉�")]
+        [MaxLength(100)]
+        public string ClassName { get; set; }
+
+        /// <summary>
+        /// 鏂规硶鍚嶇О
+        /// </summary>
+        [Comment("鏂规硶鍚嶇О")]
+        [MaxLength(100)]
+        public string MethodName { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鏂瑰紡锛圙ET POST PUT DELETE)
+        /// </summary>
+        [Comment("璇锋眰鏂瑰紡")]
+        [MaxLength(10)]
+        public string ReqMethod { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鍙傛暟
+        /// </summary>
+        [Comment("璇锋眰鍙傛暟")]
+        public string Param { get; set; }
+
+        /// <summary>
+        /// 杩斿洖缁撴灉
+        /// </summary>
+        [Comment("杩斿洖缁撴灉")]
+        public string Result { get; set; }
+
+        /// <summary>
+        /// 鑰楁椂锛堟绉掞級
+        /// </summary>
+        [Comment("鑰楁椂")]
+        public long ElapsedTime { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔鏃堕棿
+        /// </summary>
+        [Comment("鎿嶄綔鏃堕棿")]
+        public DateTimeOffset? OpTime { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔浜�
+        /// </summary>
+        [Comment("鎿嶄綔浜�")]
+        [MaxLength(50)]
+        public string Account { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogVis.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogVis.cs
new file mode 100644
index 0000000..a67834e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogVis.cs
@@ -0,0 +1,81 @@
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 璁块棶鏃ュ織琛�
+    /// </summary>
+    [Table("sys_log_vis")]
+    [Comment("璁块棶鏃ュ織琛�")]
+    public class SysLogVis : EntityBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [MaxLength(100)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鏄惁鎵ц鎴愬姛锛圷-鏄紝N-鍚︼級
+        /// </summary>
+        [Comment("鏄惁鎵ц鎴愬姛")]
+        public YesOrNot Success { get; set; }
+
+        /// <summary>
+        /// 鍏蜂綋娑堟伅
+        /// </summary>
+        [Comment("鍏蜂綋娑堟伅")]
+        public string Message { get; set; }
+
+        /// <summary>
+        /// IP
+        /// </summary>
+        [Comment("IP")]
+        [MaxLength(20)]
+        public string Ip { get; set; }
+
+        /// <summary>
+        /// 鍦板潃
+        /// </summary>
+        [Comment("鍦板潃")]
+        [MaxLength(1024)]
+        public string Location { get; set; }
+
+        /// <summary>
+        /// 娴忚鍣�
+        /// </summary>
+        [Comment("娴忚鍣�")]
+        [MaxLength(100)]
+        public string Browser { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔绯荤粺
+        /// </summary>
+        [Comment("鎿嶄綔绯荤粺")]
+        [MaxLength(100)]
+        public string Os { get; set; }
+
+        /// <summary>
+        /// 璁块棶绫诲瀷
+        /// </summary>
+        [Comment("璁块棶绫诲瀷")]
+        public LoginType VisType { get; set; }
+
+        /// <summary>
+        /// 璁块棶鏃堕棿
+        /// </summary>
+        [Comment("璁块棶鏃堕棿")]
+        public DateTimeOffset? VisTime { get; set; }
+
+        /// <summary>
+        /// 璁块棶浜�
+        /// </summary>
+        [Comment("璁块棶浜�")]
+        [MaxLength(50)]
+        public string Account { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCode.cs
new file mode 100644
index 0000000..ae3bca9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCode.cs
@@ -0,0 +1,123 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Furion.Extras.Admin.NET.Entity
+{
+    /// <summary>
+    /// 浣庝唬鐮佹ā鍧楃鐞�
+    /// </summary>
+    [Table("sys_low_code_module")]
+    [Comment("浣庝唬鐮佹ā鍧楃鐞�")]
+    public class SysLowCode : DEntityBase
+    {
+        /// <summary>
+        /// 浣滆�呭鍚�
+        /// </summary>
+        [Comment("浣滆�呭鍚�")]
+        [MaxLength(20)]
+        public string AuthorName { get; set; }
+
+        /// <summary>
+        /// 鐢熸垚鏂瑰紡
+        /// </summary>
+        [Comment("鐢熸垚鏂瑰紡")]
+        [MaxLength(20)]
+        public string GenerateType { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撳悕
+        /// </summary>
+        [Comment("鏁版嵁搴撳悕")]
+        [MaxLength(100)]
+        public string DatabaseName { get; set; }
+
+        /// <summary>
+        /// 鍛藉悕绌洪棿
+        /// </summary>
+        [Comment("鍛藉悕绌洪棿")]
+        [MaxLength(100)]
+        public string NameSpace { get; set; }
+
+        /// <summary>
+        /// 妯″潡鍚嶏紝鐢ㄤ簬鐢熸垚鐨勬枃浠跺す鐩綍 銆怑ditby shaocx,2024-04-07銆�
+        /// </summary>
+        [Comment("妯″潡鍚�,鐢ㄤ簬鐢熸垚鐨勬枃浠跺す鐩綍")]
+        [MaxLength(100)]
+        public string ModuleName { get; set; }
+
+        /// <summary>
+        /// 绋嬪簭闆�
+        /// </summary>
+        [NotMapped]
+        public string ProName
+        {
+            get { return NameSpace.TrimEnd(new char[] { '.', 'A', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n' }); }
+        }
+
+        /// <summary>
+        /// 鍏宠仈琛ㄤ俊鎭�
+        /// </summary>
+        [NotMapped]
+        public dynamic Tables
+        {
+            get
+            {
+                if (Databases == null || !Databases.Any()) return null;
+                else return Databases.Select(x => new { x.TableName, x.ClassName, x.TableDesc }).Distinct().ToList();
+            }
+        }
+
+        /// <summary>
+        /// 涓氬姟鍚�
+        /// </summary>
+        [Comment("涓氬姟鍚�")]
+        [MaxLength(100)]
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        [Comment("鑿滃崟搴旂敤鍒嗙被")]
+        [MaxLength(50)]
+        public string MenuApplication { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟缂栫爜
+        /// </summary>
+        [Comment("鑿滃崟缂栫爜")]
+        public long MenuPid { get; set; }
+
+        /// <summary>
+        /// 鍔ㄦ�佽〃鍗曠被鍨�
+        /// </summary>
+        [Comment("鍔ㄦ�佽〃鍗曠被鍨�")]
+        [Column(TypeName = "int")]
+        public FormDesignType FormDesignType { get; set; } = FormDesignType.VueFormDesign;
+
+        /// <summary>
+        /// 鍔ㄦ�佽〃鍗�
+        /// </summary>
+        [Comment("鍔ㄦ�佽〃鍗�")]
+        [Column(TypeName = "text")]
+        public string FormDesign { get; set; }
+
+        public ICollection<SysLowCodeDataBase> Databases { get; set; }
+
+        /// <summary>
+        /// 閰嶇疆澶氬澶氬叧绯�
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        public void Configure(EntityTypeBuilder<SysLowCode> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            entityBuilder.HasMany(p => p.Databases)
+                .WithOne(p => p.SysLowCode)
+                .HasForeignKey(p => p.SysLowCodeId)
+                .HasPrincipalKey(p => p.Id);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCodeDataBase.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCodeDataBase.cs
new file mode 100644
index 0000000..17da9e6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCodeDataBase.cs
@@ -0,0 +1,138 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Furion.Extras.Admin.NET.Entity
+{
+    /// <summary>
+    /// 浣庝唬鐮佹ā鍧楁暟鎹簱閰嶇疆
+    /// </summary>
+    [Table("sys_low_code_module_database")]
+    [Comment("浣庝唬鐮佹ā鍧楃鐞�")]
+    public class SysLowCodeDataBase : DEntityBase<Guid, MasterDbContextLocator>
+    {
+        public long SysLowCodeId { get; set; }
+        public SysLowCode SysLowCode { get; set; }
+
+        /// <summary>
+        /// 缁勪欢Key
+        /// </summary>
+        [Comment("缁勪欢Key")]
+        [MaxLength(200)]
+        public string Control_Key { get; set; }
+
+        /// <summary>
+        /// 缁勪欢鍚嶇О
+        /// </summary>
+        [Comment("缁勪欢鍚嶇О")]
+        [MaxLength(200)]
+        public string Control_Label { get; set; }
+
+        /// <summary>
+        /// 缁勪欢瀛楁
+        /// </summary>
+        [Comment("缁勪欢瀛楁")]
+        [MaxLength(200)]
+        public string Control_Model { get; set; }
+
+        /// <summary>
+        /// 缁勪欢绫诲瀷
+        /// </summary>
+        [Comment("缁勪欢瀛楁")]
+        [MaxLength(200)]
+        public string Control_Type { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ悕
+        /// </summary>
+        [Comment("琛ㄥ悕")]
+        [MaxLength(200)]
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 绫诲悕
+        /// </summary>
+        [Comment("绫诲悕")]
+        [MaxLength(200)]
+        public string ClassName { get; set; }
+
+        /// <summary>
+        /// 琛ㄦ弿杩�
+        /// </summary>
+        [Comment("琛ㄦ弿杩�")]
+        [MaxLength(200)]
+        public string TableDesc { get; set; }
+
+        /// <summary>
+        /// 瀛楁鍚嶇О
+        /// </summary>
+        [Comment("瀛楁鍚嶇О")]
+        [MaxLength(200)]
+        public string FieldName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁绫诲瀷
+        /// </summary>
+        [Comment("鏁版嵁绫诲瀷")]
+        [MaxLength(200)]
+        public string DbTypeName { get; set; }
+
+        /// <summary>
+        /// 浼犲叆鏁版嵁绫诲瀷
+        /// </summary>
+        [Comment("浼犲叆鏁版嵁绫诲瀷")]
+        [MaxLength(200)]
+        public string DtoTypeName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁绫诲瀷琛ュ厖鍙傛暟
+        /// </summary>
+        [Comment("鏁版嵁绫诲瀷琛ュ厖鍙傛暟")]
+        [MaxLength(200)]
+        public string DbParam { get; set; }
+
+        /// <summary>
+        /// 鏄惁蹇呭~
+        /// </summary>
+        [Comment("鏄惁蹇呭~")]
+        public bool? IsRequired { get; set; }
+
+        /// <summary>
+        /// 鍒楄〃鏄剧ず
+        /// </summary>
+        [Comment("鍒楄〃鏄剧ず")]
+        public bool? WhetherTable { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        [Comment("鎺掑簭")]
+        public bool? WhetherOrderBy { get; set; }
+
+        /// <summary>
+        /// 澧炴敼
+        /// </summary>
+        [Comment("澧炴敼")]
+        public bool? WhetherAddUpdate { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄煡璇�
+        /// </summary>
+        [Comment("鏄惁鏄煡璇�")]
+        public bool? QueryWhether { get; set; }
+
+        /// <summary>
+        /// 鏌ヨ鏂瑰紡
+        /// </summary>
+        [Comment("鏌ヨ鏂瑰紡")]
+        public string QueryType { get; set; }
+
+        /// <summary>
+        /// 鏄惁鑱斿悎涓婚敭
+        /// </summary>
+        [Comment("鏄惁鑱斿悎涓婚敭")]
+        public bool? WhetherUnionKey { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysMenu.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysMenu.cs
new file mode 100644
index 0000000..99af6d7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysMenu.cs
@@ -0,0 +1,142 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鑿滃崟琛�
+    /// </summary>
+    [Table("sys_menu")]
+    [Comment("鑿滃崟琛�")]
+    public class SysMenu : DEntityBase
+    {
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        [Comment("鐖禝d")]
+        public long Pid { get; set; }
+
+        /// <summary>
+        /// 鐖禝ds
+        /// </summary>
+        [Comment("鐖禝ds")]
+        public string Pids { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [Required, MaxLength(20)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Comment("缂栫爜")]
+        [Required, MaxLength(50)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+        /// </summary>
+        [Comment("鑿滃崟绫诲瀷")]
+        public MenuType Type { get; set; }
+
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        [Comment("鍥炬爣")]
+        [MaxLength(20)]
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 璺敱鍦板潃
+        /// </summary>
+        [Comment("璺敱鍦板潃")]
+        [MaxLength(100)]
+        public string Router { get; set; }
+
+        /// <summary>
+        /// 缁勪欢鍦板潃
+        /// </summary>
+        [Comment("缁勪欢鍦板潃")]
+        [MaxLength(100)]
+        public string Component { get; set; }
+
+        /// <summary>
+        /// 鏉冮檺鏍囪瘑
+        /// </summary>
+        [Comment("鏉冮檺鏍囪瘑")]
+        [MaxLength(100)]
+        public string Permission { get; set; }
+
+        /// <summary>
+        /// 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+        /// </summary>
+        [Comment("搴旂敤鍒嗙被")]
+        [MaxLength(50)]
+        public string Application { get; set; }
+
+        /// <summary>
+        /// 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+        /// </summary>
+        [Comment("鎵撳紑鏂瑰紡")]
+        public MenuOpenType OpenType { get; set; } = MenuOpenType.NONE;
+
+        /// <summary>
+        /// 鏄惁鍙锛圷-鏄紝N-鍚︼級
+        /// </summary>
+        [Comment("鏄惁鍙")]
+        [MaxLength(5)]
+        public string Visible { get; set; } = "Y";
+
+        /// <summary>
+        /// 鍐呴摼鍦板潃
+        /// </summary>
+        [Comment("鍐呴摼鍦板潃")]
+        [MaxLength(100)]
+        public string Link { get; set; }
+
+        /// <summary>
+        /// 閲嶅畾鍚戝湴鍧�
+        /// </summary>
+        [Comment("閲嶅畾鍚戝湴鍧�")]
+        [MaxLength(100)]
+        public string Redirect { get; set; }
+
+        /// <summary>
+        /// 鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+        /// </summary>
+        [Comment("鏉冮噸")]
+        public MenuWeight Weight { get; set; } = MenuWeight.DEFAULT_WEIGHT;
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        [Comment("鎺掑簭")]
+        public int Sort { get; set; } = 100;
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(100)]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+        /// <summary>
+        /// 澶氬澶氾紙瑙掕壊锛�
+        /// </summary>
+        public ICollection<SysRole> SysRoles { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氫腑闂磋〃锛堢敤鎴疯鑹诧級
+        /// </summary>
+        public List<SysRoleMenu> SysRoleMenus { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNotice.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNotice.cs
new file mode 100644
index 0000000..68b46ff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNotice.cs
@@ -0,0 +1,78 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 閫氱煡鍏憡琛�
+    /// </summary>
+    [Table("sys_notice")]
+    [Comment("閫氱煡鍏憡琛�")]
+    public class SysNotice : DEntityBase
+    {
+        /// <summary>
+        /// 鏍囬
+        /// </summary>
+        [Comment("鏍囬")]
+        [Required, MaxLength(20)]
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 鍐呭
+        /// </summary>
+        [Comment("鍐呭")]
+        [Required]
+        public string Content { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+        /// </summary>
+        [Comment("绫诲瀷")]
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 鍙戝竷浜篒d
+        /// </summary>
+        [Comment("鍙戝竷浜篒d")]
+        public long PublicUserId { get; set; }
+
+        /// <summary>
+        /// 鍙戝竷浜哄鍚�
+        /// </summary>
+        [Comment("鍙戝竷浜哄鍚�")]
+        [MaxLength(20)]
+        public string PublicUserName { get; set; }
+
+        /// <summary>
+        /// 鍙戝竷鏈烘瀯Id
+        /// </summary>
+        [Comment("鍙戝竷鏈烘瀯Id")]
+        public long PublicOrgId { get; set; }
+
+        /// <summary>
+        /// 鍙戝竷鏈烘瀯鍚嶇О
+        /// </summary>
+        [Comment("鍙戝竷鏈烘瀯鍚嶇О")]
+        [MaxLength(50)]
+        public string PublicOrgName { get; set; }
+
+        /// <summary>
+        /// 鍙戝竷鏃堕棿
+        /// </summary>
+        [Comment("鍙戝竷鏃堕棿")]
+        public DateTimeOffset? PublicTime { get; set; }
+
+        /// <summary>
+        /// 鎾ゅ洖鏃堕棿
+        /// </summary>
+        [Comment("鎾ゅ洖鏃堕棿")]
+        public DateTimeOffset? CancelTime { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+        /// </summary>
+        [Comment("鐘舵��")]
+        public NoticeStatus Status { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNoticeUser.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNoticeUser.cs
new file mode 100644
index 0000000..93db4a1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNoticeUser.cs
@@ -0,0 +1,44 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 閫氱煡鍏憡鐢ㄦ埛琛�
+    /// </summary>
+    [Table("sys_notice_user")]
+    [Comment("閫氱煡鍏憡鐢ㄦ埛琛�")]
+    public class SysNoticeUser : IEntity, IEntityTypeBuilder<SysNoticeUser>
+    {
+        /// <summary>
+        /// 閫氱煡鍏憡Id
+        /// </summary>
+        [Comment("閫氱煡鍏憡Id")]
+        public long NoticeId { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛Id
+        /// </summary>
+        [Comment("鐢ㄦ埛Id")]
+        public long UserId { get; set; }
+
+        /// <summary>
+        /// 闃呰鏃堕棿
+        /// </summary>
+        [Comment("闃呰鏃堕棿")]
+        public DateTimeOffset? ReadTime { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0鏈 1宸茶锛�
+        /// </summary>
+        [Comment("鐘舵��")]
+        public NoticeUserStatus ReadStatus { get; set; }
+
+        public void Configure(EntityTypeBuilder<SysNoticeUser> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            entityBuilder.HasKey(c => new { c.NoticeId, c.UserId });
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOnlineUser.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOnlineUser.cs
new file mode 100644
index 0000000..8b808d7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOnlineUser.cs
@@ -0,0 +1,79 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍦ㄧ嚎鐢ㄦ埛琛�
+    /// </summary>
+    [Table("sys_online_user")]
+    [Comment("鍦ㄧ嚎鐢ㄦ埛琛�")]
+    public class OnlineUser //: IEntity, IEntityTypeBuilder<OnlineUser>
+    {
+        /// <summary>
+        /// 杩炴帴Id
+        /// </summary>
+        [Comment("杩炴帴Id")]
+        public string ConnectionId { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛Id
+        /// </summary>
+        [Comment("鐢ㄦ埛Id")]
+        public long UserId { get; set; }
+
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        [Comment("璐﹀彿")]
+        [Required, MaxLength(20)]
+        public string Account { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        [Comment("濮撳悕")]
+        [MaxLength(20)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庤繛鎺ユ椂闂�
+        /// </summary>
+        [Comment("鏈�杩戞椂闂�")]
+        public DateTimeOffset LastTime { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥褰旾P
+        /// </summary>
+        [Comment("鏈�鍚庣櫥褰旾P")]
+        [MaxLength(50)]
+        public string LastLoginIp { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥褰曟墍鐢ㄦ祻瑙堝櫒
+        /// </summary>
+        [Comment("鏈�鍚庣櫥褰曟墍鐢ㄦ祻瑙堝櫒")]
+        [MaxLength(20)]
+        public string LastLoginBrowser { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥褰曟墍鐢ㄧ郴缁�
+        /// </summary>
+        [Comment("鏈�鍚庣櫥褰曟墍鐢ㄧ郴缁�")]
+        [MaxLength(20)]
+        public string LastLoginOs { get; set; }
+
+        /// <summary>
+        /// 绉熸埛id
+        /// </summary>
+        //[Comment("绉熸埛id")]
+        //public long TenantId { get; set; }
+
+        public void Configure(EntityTypeBuilder<OnlineUser> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            entityBuilder.HasKey(c => new { c.UserId });
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOrg.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOrg.cs
new file mode 100644
index 0000000..cb1999e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOrg.cs
@@ -0,0 +1,98 @@
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 缁勭粐鏈烘瀯琛�
+    /// </summary>
+    [Table("sys_org")]
+    [Comment("缁勭粐鏈烘瀯琛�")]
+    public class SysOrg : DEntityBase
+    {
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        [Comment("鐖禝d")]
+        public long Pid { get; set; }
+
+        /// <summary>
+        /// 鐖禝ds
+        /// </summary>
+        [Comment("鐖禝ds")]
+        public string Pids { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [Required, MaxLength(100)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Comment("缂栫爜")]
+        [Required, MaxLength(50)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鑱旂郴浜�
+        /// </summary>
+        [Comment("鑱旂郴浜�")]
+        [MaxLength(20)]
+        public string Contacts { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽
+        /// </summary>
+        [Comment("鐢佃瘽")]
+        [MaxLength(20)]
+        public string Tel { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        [Comment("鎺掑簭")]
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(100)]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        [Comment("鐘舵��")]
+        public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+        /// <summary>
+        /// 鏈烘瀯绫诲瀷
+        /// </summary>
+        public string OrgType { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氾紙鐢ㄦ埛锛�
+        /// </summary>
+        public ICollection<SysUser> SysUsers { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氫腑闂磋〃锛堢敤鎴锋暟鎹寖鍥达級
+        /// </summary>
+        public List<SysUserDataScope> SysUserDataScopes { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氾紙瑙掕壊锛�
+        /// </summary>
+        public ICollection<SysRole> SysRoles { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氫腑闂磋〃锛堣鑹叉暟鎹寖鍥达級
+        /// </summary>
+        public List<SysRoleDataScope> SysRoleDataScopes { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysPos.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysPos.cs
new file mode 100644
index 0000000..b9bd5b6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysPos.cs
@@ -0,0 +1,57 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鑱屼綅琛�
+    /// </summary>
+    [Table("sys_pos")]
+    [Comment("鑱屼綅琛�")]
+    public class SysPos : DEntityBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [Required, MaxLength(20)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Comment("缂栫爜")]
+        [Required, MaxLength(50)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        [Comment("鎺掑簭")]
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(100)]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        [Comment("鐘舵��")]
+        public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+        /// <summary>
+        /// 澶氬澶氾紙鍛樺伐锛�
+        /// </summary>
+        public ICollection<SysEmp> SysEmps { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氫腑闂磋〃锛堝憳宸ヨ亴浣嶏級
+        /// </summary>
+        public List<SysEmpPos> SysEmpPos { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRole.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRole.cs
new file mode 100644
index 0000000..61830ca
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRole.cs
@@ -0,0 +1,142 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Admin.NET.Core.Entity.WmsBase;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瑙掕壊琛�
+    /// </summary>
+    [Table("sys_role")]
+    [Comment("瑙掕壊琛�")]
+    public class SysRole : DEntityBase, IEntityTypeBuilder<SysRole>
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [Required, MaxLength(20)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Comment("缂栫爜")]
+        [Required, MaxLength(50)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        [Comment("鎺掑簭")]
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+        /// </summary>
+        [Comment("鏁版嵁鑼冨洿绫诲瀷")]
+        public DataScopeType DataScopeType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(100)]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        [Comment("鐘舵��")]
+        public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+        /// <summary>
+        /// 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+        /// </summary>
+        [Comment("瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2")]
+        public RoleTypeEnum RoleType { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氾紙鐢ㄦ埛锛�
+        /// </summary>
+        public ICollection<SysUser> SysUsers { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氫腑闂磋〃锛堢敤鎴疯鑹诧級
+        /// </summary>
+        public List<SysUserRole> SysUserRoles { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氾紙鏈烘瀯锛�
+        /// </summary>
+        public ICollection<SysOrg> SysOrgs { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氫腑闂磋〃锛堣鑹�-鏈烘瀯 鏁版嵁鑼冨洿锛�
+        /// </summary>
+        public List<SysRoleDataScope> SysRoleDataScopes { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氾紙鑿滃崟锛�
+        /// </summary>
+        public ICollection<SysMenu> SysMenus { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氫腑闂磋〃锛堣鑹�-鑿滃崟锛�
+        /// </summary>
+        public List<SysRoleMenu> SysRoleMenus { get; set; }
+
+
+        /// <summary>
+        /// 澶氬澶氾紙Pda鑿滃崟锛�
+        /// </summary>
+        public ICollection<WmsPdaPower> WmsPdaPowers { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氫腑闂磋〃锛堣鑹�-Pda鑿滃崟锛�
+        /// </summary>
+        public List<WmsRolePdaMenu> WmsRolePdaMenus { get; set; }
+
+        /// <summary>
+        /// 閰嶇疆澶氬澶氬叧绯�
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        public void Configure(EntityTypeBuilder<SysRole> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            entityBuilder.HasMany(p => p.SysOrgs)
+                .WithMany(p => p.SysRoles)
+                .UsingEntity<SysRoleDataScope>(
+                u => u.HasOne(c => c.SysOrg).WithMany(c => c.SysRoleDataScopes).HasForeignKey(c => c.SysOrgId),
+                u => u.HasOne(c => c.SysRole).WithMany(c => c.SysRoleDataScopes).HasForeignKey(c => c.SysRoleId),
+                u =>
+                {
+                    u.HasKey(c => new { c.SysRoleId, c.SysOrgId });
+                });
+
+            entityBuilder.HasMany(p => p.SysMenus)
+                .WithMany(p => p.SysRoles)
+                .UsingEntity<SysRoleMenu>(
+                u => u.HasOne(c => c.SysMenu).WithMany(c => c.SysRoleMenus).HasForeignKey(c => c.SysMenuId),
+                u => u.HasOne(c => c.SysRole).WithMany(c => c.SysRoleMenus).HasForeignKey(c => c.SysRoleId),
+                u =>
+                {
+                    u.HasKey(c => new { c.SysRoleId, c.SysMenuId });
+                });
+
+            entityBuilder.HasMany(p => p.WmsPdaPowers)
+                .WithMany(p => p.SysRoles)
+                .UsingEntity<WmsRolePdaMenu>(
+                u => u.HasOne(c => c.WmsPdaPower).WithMany(c => c.WmsRolePdaMenus).HasForeignKey(c => c.PdaMenuId),
+                u => u.HasOne(c => c.SysRole).WithMany(c => c.WmsRolePdaMenus).HasForeignKey(c => c.SysRoleId),
+                u =>
+                {
+                    u.HasKey(c => new { c.SysRoleId, c.PdaMenuId });
+                });
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleDataScope.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleDataScope.cs
new file mode 100644
index 0000000..9a04127
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleDataScope.cs
@@ -0,0 +1,36 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瑙掕壊鏁版嵁鑼冨洿琛�
+    /// </summary>
+    [Table("sys_role_data_scope")]
+    [Comment("瑙掕壊鏁版嵁鑼冨洿琛�")]
+    public class SysRoleDataScope : IEntity
+    {
+        /// <summary>
+        /// 瑙掕壊Id
+        /// </summary>
+        [Comment("瑙掕壊Id")]
+        public long SysRoleId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堢郴缁熻鑹诧級
+        /// </summary>
+        public SysRole SysRole { get; set; }
+
+        /// <summary>
+        /// 鏈烘瀯Id
+        /// </summary>
+        [Comment("鏈烘瀯Id")]
+        public long SysOrgId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堢郴缁熸満鏋勶級
+        /// </summary>
+        public SysOrg SysOrg { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleMenu.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleMenu.cs
new file mode 100644
index 0000000..8933f65
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleMenu.cs
@@ -0,0 +1,36 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瑙掕壊鑿滃崟琛�
+    /// </summary>
+    [Table("sys_role_menu")]
+    [Comment("瑙掕壊鑿滃崟琛�")]
+    public class SysRoleMenu : IEntity
+    {
+        /// <summary>
+        /// 瑙掕壊Id
+        /// </summary>
+        [Comment("瑙掕壊Id")]
+        public long SysRoleId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堢郴缁熺敤鎴凤級
+        /// </summary>
+        public SysRole SysRole { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟Id
+        /// </summary>
+        [Comment("鑿滃崟Id")]
+        public long SysMenuId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堢郴缁熻彍鍗曪級
+        /// </summary>
+        public SysMenu SysMenu { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysTimer.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysTimer.cs
new file mode 100644
index 0000000..69f53ce
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysTimer.cs
@@ -0,0 +1,96 @@
+锘縰sing Furion.TaskScheduler;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瀹氭椂浠诲姟
+    /// </summary>
+    [Table("sys_timer")]
+    [Comment("瀹氭椂浠诲姟琛�")]
+    public class SysTimer : DEntityBase
+    {
+        /// <summary>
+        /// 浠诲姟鍚嶇О
+        /// </summary>
+        /// <example>dilon</example>
+        [Comment("浠诲姟鍚嶇О")]
+        [Required, MaxLength(20)]
+        public string JobName { get; set; }
+
+        /// <summary>
+        /// 鍙墽琛屼竴娆�
+        /// </summary>
+        [Comment("鍙墽琛屼竴娆�")]
+        public bool DoOnce { get; set; } = false;
+
+        /// <summary>
+        /// 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+        /// </summary>
+        [Comment("绔嬪嵆鎵ц")]
+        public bool StartNow { get; set; } = false;
+
+        /// <summary>
+        /// 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+        /// </summary>
+        [Comment("鎵ц绫诲瀷")]
+        public SpareTimeExecuteTypes ExecuteType { get; set; } = SpareTimeExecuteTypes.Parallel;
+
+        /// <summary>
+        /// 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+        /// </summary>
+        /// <example>5</example>
+        [Comment("闂撮殧鏃堕棿")]
+        public int? Interval { get; set; } = 5;
+
+        /// <summary>
+        /// Cron琛ㄨ揪寮�
+        /// </summary>
+        /// <example></example>
+        [Comment("Cron琛ㄨ揪寮�")]
+        [MaxLength(200)]
+        public string Cron { get; set; }
+
+        /// <summary>
+        /// 瀹氭椂鍣ㄧ被鍨�
+        /// </summary>
+        [Comment("瀹氭椂鍣ㄧ被鍨�")]
+        public SpareTimeTypes TimerType { get; set; } = SpareTimeTypes.Interval;
+
+        /// <summary>
+        /// 璇锋眰url
+        /// </summary>
+        [Comment("璇锋眰url")]
+        [MaxLength(200)]
+        public string RequestUrl { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鍙傛暟锛圥ost锛孭ut璇锋眰鐢級
+        /// </summary>
+        [Comment("璇锋眰鍙傛暟")]
+        public string RequestParameters { get; set; }
+
+        /// <summary>
+        /// Headers(鍙互鍖呭惈濡傦細Authorization鎺堟潈璁よ瘉)
+        /// 鏍煎紡锛歿"Authorization":"userpassword.."}
+        /// </summary>
+        [Comment("Headers")]
+        public string Headers { get; set; }
+
+        /// <summary>
+        /// 璇锋眰绫诲瀷
+        /// </summary>
+        /// <example>2</example>
+        [Comment("璇锋眰绫诲瀷")]
+        public RequestTypeEnum RequestType { get; set; } = RequestTypeEnum.Post;
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(100)]
+        public string Remark { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUser.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUser.cs
new file mode 100644
index 0000000..03de49e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUser.cs
@@ -0,0 +1,163 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鐢ㄦ埛琛�
+    /// </summary>
+    [Table("sys_user")]
+    [Comment("鐢ㄦ埛琛�")]
+    public class SysUser : DEntityBase, IEntityTypeBuilder<SysUser>
+    {
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        [Comment("璐﹀彿")]
+        [Required, MaxLength(50)]
+        public string Account { get; set; }
+
+        /// <summary>
+        /// 瀵嗙爜锛堥粯璁D5鍔犲瘑锛�
+        /// </summary>
+        [Comment("瀵嗙爜")]
+        [Required, MaxLength(50)]
+        public string Password { get; set; }
+
+        /// <summary>
+        /// 鏄电О
+        /// </summary>
+        [Comment("鏄电О")]
+        [MaxLength(20)]
+        public string NickName { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        [Comment("濮撳悕")]
+        [MaxLength(20)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 澶村儚
+        /// </summary>
+        [Comment("澶村儚")]
+        public string Avatar { get; set; }
+
+        /// <summary>
+        /// 鐢熸棩
+        /// </summary>
+        [Comment("鐢熸棩")]
+        public DateTimeOffset? Birthday { get; set; }
+
+        /// <summary>
+        /// 鎬у埆-鐢穇1銆佸コ_2
+        /// </summary>
+        [Comment("鎬у埆-鐢穇1銆佸コ_2")]
+        public Gender Sex { get; set; }
+
+        /// <summary>
+        /// 閭
+        /// </summary>
+        [Comment("閭")]
+        [MaxLength(50)]
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 鎵嬫満
+        /// </summary>
+        [Comment("鎵嬫満")]
+        [MaxLength(20)]
+        public string Phone { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽
+        /// </summary>
+        [Comment("鐢佃瘽")]
+        [MaxLength(20)]
+        public string Tel { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥褰旾P
+        /// </summary>
+        [Comment("鏈�鍚庣櫥褰旾P")]
+        [MaxLength(20)]
+        public string LastLoginIp { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣櫥褰曟椂闂�
+        /// </summary>
+        [Comment("鏈�鍚庣櫥褰曟椂闂�")]
+        public DateTimeOffset? LastLoginTime { get; set; }
+
+        /// <summary>
+        /// 绠$悊鍛樼被鍨�-瓒呯骇绠$悊鍛榑1銆佺鐞嗗憳_2銆佹櫘閫氳处鍙穇3
+        /// </summary>
+        [Comment("绠$悊鍛樼被鍨�-瓒呯骇绠$悊鍛榑1銆佺鐞嗗憳_2銆佹櫘閫氳处鍙穇3")]
+        public AdminType AdminType { get; set; }
+
+        /// <summary>
+        /// 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+        /// </summary>
+        [Comment("鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2")]
+        public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+        /// <summary>
+        /// 澶氬澶氾紙瑙掕壊锛�
+        /// </summary>
+        public ICollection<SysRole> SysRoles { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氫腑闂磋〃锛堢敤鎴�-瑙掕壊锛�
+        /// </summary>
+        public List<SysUserRole> SysUserRoles { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氾紙鏈烘瀯锛�
+        /// </summary>
+        public ICollection<SysOrg> SysOrgs { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氫腑闂磋〃锛堢敤鎴�-鏈烘瀯 鏁版嵁鑼冨洿锛�
+        /// </summary>
+        public List<SysUserDataScope> SysUserDataScopes { get; set; }
+
+        /// <summary>
+        /// 閰嶇疆澶氬澶氬叧绯�
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        public void Configure(EntityTypeBuilder<SysUser> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            entityBuilder.HasMany(p => p.SysRoles).WithMany(p => p.SysUsers).UsingEntity<SysUserRole>(
+                u => u.HasOne(c => c.SysRole).WithMany(c => c.SysUserRoles).HasForeignKey(c => c.SysRoleId),
+                u => u.HasOne(c => c.SysUser).WithMany(c => c.SysUserRoles).HasForeignKey(c => c.SysUserId),
+                u =>
+                {
+                    u.HasKey(c => new { c.SysUserId, c.SysRoleId });
+                });
+
+            entityBuilder.HasMany(p => p.SysOrgs).WithMany(p => p.SysUsers).UsingEntity<SysUserDataScope>(
+                u => u.HasOne(c => c.SysOrg).WithMany(c => c.SysUserDataScopes).HasForeignKey(c => c.SysOrgId),
+                u => u.HasOne(c => c.SysUser).WithMany(c => c.SysUserDataScopes).HasForeignKey(c => c.SysUserId),
+                u =>
+                {
+                    u.HasKey(c => new { c.SysUserId, c.SysOrgId });
+                });
+        }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        public LesWorkShopType WorkShopType { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂翠骇绾�
+        /// </summary>
+        public long ProductionlineId { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserDataScope.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserDataScope.cs
new file mode 100644
index 0000000..10ecb6e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserDataScope.cs
@@ -0,0 +1,36 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鐢ㄦ埛鏁版嵁鑼冨洿琛�
+    /// </summary>
+    [Table("sys_user_data_scope")]
+    [Comment("鐢ㄦ埛鏁版嵁鑼冨洿琛�")]
+    public class SysUserDataScope : IEntity
+    {
+        /// <summary>
+        /// 鐢ㄦ埛Id
+        /// </summary>
+        [Comment("鐢ㄦ埛Id")]
+        public long SysUserId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堢郴缁熺敤鎴凤級
+        /// </summary>
+        public SysUser SysUser { get; set; }
+
+        /// <summary>
+        /// 鏈烘瀯Id
+        /// </summary>
+        [Comment("鏈烘瀯Id")]
+        public long SysOrgId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堢郴缁熸満鏋勶級
+        /// </summary>
+        public SysOrg SysOrg { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserRole.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserRole.cs
new file mode 100644
index 0000000..08aead9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserRole.cs
@@ -0,0 +1,36 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鐢ㄦ埛瑙掕壊琛�
+    /// </summary>
+    [Table("sys_user_role")]
+    [Comment("鐢ㄦ埛瑙掕壊琛�")]
+    public class SysUserRole : IEntity
+    {
+        /// <summary>
+        /// 鐢ㄦ埛Id
+        /// </summary>
+        [Comment("鐢ㄦ埛Id")]
+        public long SysUserId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堢郴缁熺敤鎴凤級
+        /// </summary>
+        public SysUser SysUser { get; set; }
+
+        /// <summary>
+        /// 绯荤粺瑙掕壊Id
+        /// </summary>
+        [Comment("瑙掕壊Id")]
+        public long SysRoleId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堢郴缁熻鑹诧級
+        /// </summary>
+        public SysRole SysRole { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableColumn.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableColumn.cs
new file mode 100644
index 0000000..7be8a02
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableColumn.cs
@@ -0,0 +1,51 @@
+锘縩amespace Admin.NET.Core
+{ 
+    /// <summary>
+    /// 鏁版嵁搴撹〃鍒�
+    /// </summary>
+    public class TableColumn
+    {
+        /// <summary>
+        /// 瀛楁鍚�
+        /// </summary>
+        public string ColumnName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撲腑绫诲瀷
+        /// </summary>
+        public string DataType { get; set; }
+
+        /// <summary>
+        /// .NET瀛楁绫诲瀷
+        /// </summary>
+        public string NetType { get; set; }
+
+        /// <summary>
+        /// 瀛楁鎻忚堪
+        /// </summary>
+        public string ColumnComment { get; set; }
+
+        /// <summary>
+        /// 涓诲閿�
+        /// </summary>
+        public string ColumnKey { get; set; }
+
+        /// <summary>
+        /// 鏄惁蹇呭~
+        /// </summary>
+        public bool IsRequired { get; set; }
+
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string Remark { get; set; }
+
+
+        /// <summary>
+        /// 瀛楁绫诲瀷
+        /// </summary>
+        public string FieldType { get; set; }
+
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableInfo.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableInfo.cs
new file mode 100644
index 0000000..1c0c44c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableInfo.cs
@@ -0,0 +1,38 @@
+锘縩amespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鏁版嵁搴撹〃鍙傛暟
+    /// </summary>
+    public class TableInfo
+    {
+        /// <summary>
+        /// 搴撳悕锛堝瓧姣嶅舰寮忕殑锛�
+        /// </summary>
+        public string DatabaseName { get; set; }
+
+        /// <summary>
+        /// 搴撳悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+        /// </summary>
+        public string DatabaseComment { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ悕锛堝瓧姣嶅舰寮忕殑锛�
+        /// </summary>
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public string CreateTime { get; set; }
+
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// </summary>
+        public string UpdateTime { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+        /// </summary>
+        public string TableComment { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent.cs
new file mode 100644
index 0000000..f959673
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent.cs
@@ -0,0 +1,55 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�
+    /// </summary>
+    [Comment("瀛︾敓淇℃伅琛�")]
+    [Table("test_students")]
+    public class TestStudent : DEntityBase
+    {
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        [Comment("瀛︾敓濮撳悕")]
+        [MaxLength(10)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        [Comment("瀛︾敓骞撮緞")]
+        public int Age { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        [Comment("鏄惁鍦ㄦ牎")]
+        [MaxLength(50)]
+        public bool StartName { get; set; }
+
+
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        [Comment("鎬у埆")]
+        public GenderChinese Gender { get; set; }
+
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+        [Comment("鍑虹敓鏃ユ湡")]
+        public DateTime BrithDate { get; set; }
+
+
+        /// <summary>
+        /// 鍏宠仈鑰佸笀
+        /// </summary>
+        [Comment("鍏宠仈鑰佸笀")]
+        public long? TeacherId { get; set; }
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent2.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent2.cs
new file mode 100644
index 0000000..f680a93
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent2.cs
@@ -0,0 +1,56 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�
+    /// </summary>
+    [Comment("瀛︾敓淇℃伅琛�")]
+    [Table("test_students2")]
+    public class TestStudent2 : DEntityBase
+    {
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        [Comment("瀛︾敓濮撳悕")]
+        [MaxLength(10)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        [Comment("瀛︾敓骞撮緞")]
+        public int Age { get; set; }
+
+
+        /// <summary>
+        /// 闆惰姳閽�
+        /// </summary>
+        [Comment("闆惰姳閽�")]
+        [Column("HasMoney", TypeName = "decimal(10,3)")]
+        public decimal HasMoney { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        [Comment("鏄惁鍦ㄦ牎")]
+        [MaxLength(50)]
+        public bool StartName { get; set; }
+
+
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        [Comment("鎬у埆")]
+        public GenderChinese Gender { get; set; }
+
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+        [Comment("鍑虹敓鏃ユ湡")]
+        public DateTime BrithDate { get; set; }
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent3.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent3.cs
new file mode 100644
index 0000000..2b0292b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent3.cs
@@ -0,0 +1,56 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瀛︾敓淇℃伅琛�
+    /// </summary>
+    [Comment("瀛︾敓淇℃伅琛�")]
+    [Table("test_students3")]
+    public class TestStudent3 : DEntityBase
+    {
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// </summary>
+        [Comment("瀛︾敓濮撳悕")]
+        [MaxLength(10)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// </summary>
+        [Comment("瀛︾敓骞撮緞")]
+        public int Age { get; set; }
+
+
+        /// <summary>
+        /// 闆惰姳閽�
+        /// </summary>
+        [Comment("闆惰姳閽�")]
+        [Column("HasMoney", TypeName = "decimal(10,3)")]
+        public decimal HasMoney { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// </summary>
+        [Comment("鏄惁鍦ㄦ牎")]
+        [MaxLength(50)]
+        public bool StartName { get; set; }
+
+
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        [Comment("鎬у埆")]
+        public GenderChinese Gender { get; set; }
+
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// </summary>
+        [Comment("鍑虹敓鏃ユ湡")]
+        public DateTime BrithDate { get; set; }
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent5.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent5.cs
new file mode 100644
index 0000000..c0af6f2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent5.cs
@@ -0,0 +1,36 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+/*
+ * @author : shaocx
+ * @date : 2024/4/19涓嬪崍3:13:43
+ * @desc : 娴嬭瘯瀛︾敓琛�
+ */
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 娴嬭瘯瀛︾敓琛�
+    /// </summary>
+    [Table("test_student5")]
+    [Comment("娴嬭瘯瀛︾敓琛�")]
+    public class TestStudent5 : DEntityBase
+    {
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        [Comment("濮撳悕")]
+        [MaxLength(50)]
+        public string Name { get; set; }
+
+
+        /// <summary>
+        /// 骞撮緞
+        /// </summary>
+        [Comment("骞撮緞")]
+
+        public int? Age { get; set; }
+
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestTeacher.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestTeacher.cs
new file mode 100644
index 0000000..c4aa2f9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestTeacher.cs
@@ -0,0 +1,38 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+/*
+ * @author : 鎮ㄧ殑鍚嶅瓧
+ * @date : 2024/4/15涓嬪崍4:23:55
+ * @desc : 娴嬭瘯鑰佸笀琛�
+ */
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 娴嬭瘯鑰佸笀琛�
+    /// </summary>
+    [Table("test_teacher")]
+    [Comment("娴嬭瘯鑰佸笀琛�")]
+    public class TestTeacher : DEntityBase
+    {
+
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [Required]
+        [MaxLength(255)]
+        public string Name { get; set; }
+
+
+
+
+
+
+
+
+
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/View_Materialstock_Material/View_Materialstock_Material.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/View_Materialstock_Material/View_Materialstock_Material.cs
new file mode 100644
index 0000000..004a186
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/View_Materialstock_Material/View_Materialstock_Material.cs
@@ -0,0 +1,51 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    [Comment("搴撳瓨鐗╂枡瑙嗗浘")]
+    [Table("View_Materialstock_Material")]
+    public class View_Materialstock_Material 
+    {
+
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [Comment("鐗╂枡鍚嶇О")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [Comment("鐗╂枡缂栧彿")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        [Comment("鐗╂枡鎵规")]
+        [MaxLength(50)]
+        public string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("鐗╂枡绫诲埆")]
+        public MaterialType MaterialType { get; set; }
+
+        /// <summary>
+        /// 瀹炵墿搴撳瓨鏁�
+        /// </summary>
+        [Comment("瀹炵墿搴撳瓨鏁�")]
+        [Required]
+        public decimal StockNumber { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsArea.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsArea.cs
new file mode 100644
index 0000000..9071135
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsArea.cs
@@ -0,0 +1,83 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 搴撳尯琛�
+    /// </summary>
+    [Table("wms_area")]
+    [Comment("搴撳尯琛�")]
+    public class WmsArea : DEntityBase, IEntityTypeBuilder<WmsArea>
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [Required]
+        [MaxLength(50)]
+        public string AreaName { get; set; }
+
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        [Comment("鎻忚堪")]
+        [MaxLength(250)]
+        public string AreaDesc { get; set; }
+
+        /// <summary>
+        /// 鐘舵��;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("鐘舵��")]
+        [Required]
+        public CommonStatus AreaStatus { get; set; }
+
+        /// <summary>
+        /// 鍒嗙被;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("鍒嗙被")]
+        [Required]
+        public AreaType AreaType { get; set; }
+
+        /// <summary>
+        /// 鏄惁涓洪挗骞冲彴
+        /// </summary>
+        [Comment("鏄惁涓洪挗骞冲彴")]
+        public bool IsSteel { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        [Comment("鎵�灞炶溅闂�")]
+        public LesWorkShopType WorkShopType { get; set; }
+
+        /// <summary>
+        /// 搴撲綅琛�
+        /// </summary>
+        public ICollection<WmsPlace> WmsPlaces { get; set; }
+
+        /// <summary>
+        /// 搴撳彛琛�
+        /// </summary>
+        public ICollection<LesEntrance> LesEntrance { get; set; }
+
+        /// <summary>
+        /// 鏋勫缓涓�瀵瑰鐨勫叧绯�
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        public void Configure(EntityTypeBuilder<WmsArea> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            entityBuilder.HasMany(x => x.WmsPlaces)
+                .WithOne(x => x.WmsArea)
+                .HasForeignKey(x => x.AreaId).IsRequired(true);
+            entityBuilder.HasMany(x => x.LesEntrance)
+                .WithOne(x => x.WmsArea)
+                .HasForeignKey(x => x.AreaId).IsRequired(true);
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsContainer.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsContainer.cs
new file mode 100644
index 0000000..fb9735a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsContainer.cs
@@ -0,0 +1,150 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鎵樼洏淇℃伅琛�
+    /// </summary>
+    [Table("wms_container")]
+    [Comment("鎵樼洏淇℃伅琛�")]
+    public class WmsContainer : DEntityBase //, IEntityTypeBuilder<WmsContainer>
+    {
+        /// <summary>
+        /// 缂栧彿
+        /// </summary>
+        [Comment("缂栧彿")]
+        [Required]
+        [MaxLength(50)]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("绫诲瀷")]
+        [Required]
+        public ContainerType ContainerType { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏鐘舵��;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("鎵樼洏鐘舵��")]
+        [Required]
+        public ContainerStatus ContainerStatus { get; set; }
+
+        /// <summary>
+        /// 闀垮害
+        /// </summary>
+        [Comment("闀垮害")]
+        public decimal SpecLength { get; set; }
+
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        [Comment("瀹藉害")]
+        public decimal SpecWidth { get; set; }
+
+        /// <summary>
+        /// 楂樺害
+        /// </summary>
+        [Comment("楂樺害")]
+        public decimal SpecHeight { get; set; }
+
+        /// <summary>
+        /// 闄愰暱
+        /// </summary>
+        [Comment("闄愰暱")]
+        public decimal LimitLength { get; set; }
+
+        /// <summary>
+        /// 闄愬
+        /// </summary>
+        [Comment("闄愬")]
+        public decimal LimitWidth { get; set; }
+
+        /// <summary>
+        /// 闄愰珮
+        /// </summary>
+        [Comment("闄愰珮")]
+        public decimal LimitHeight { get; set; }
+
+        /// <summary>
+        /// 杞介噸涓婇檺
+        /// </summary>
+        [Comment("杞介噸涓婇檺")]
+        public decimal MaxWeight { get; set; }
+
+        /// <summary>
+        /// 鐖舵墭鐩業d
+        /// </summary>
+        [Comment("鐖舵墭鐩業d")]
+        public long ParentContainerId { get; set; }
+
+        /// <summary>
+        /// 璧勪骇缂栧彿
+        /// </summary>
+        [Comment("璧勪骇缂栧彿")]
+        [Required]
+        [MaxLength(50)]
+        public string AssetNo { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏鍒嗙被
+        /// </summary>
+        [Comment("鎵樼洏鍒嗙被")]
+        [Required]
+        public ContainerCategory ContainerCategory { get; set; } = ContainerCategory.TY;
+
+        /// <summary>
+        /// Erp鍗曞彿
+        /// </summary>
+        [Comment("Erp鍗曞彿")]
+        [Required]
+        [MaxLength(50)]
+        public string ErpNo { get; set; }
+
+        /// <summary>
+        /// 鏄惁铏氭嫙;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("鏄惁铏氭嫙")]
+        [Required]
+        public YesOrNot IsVirtually { get; set; } = YesOrNot.N;
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        [Comment("鎵�灞炶溅闂�")]
+        [Required]
+        public LesWorkShopType WorkShopType { get; set; }
+
+        ///// <summary>
+        ///// 缁勮杞﹂棿鐗╂枡鎵樼洏鍏崇郴琛�
+        ///// </summary>
+        //public ICollection<WmsAssembleMaterialContainer> WmsAssembleMaterialContainer { get; set; }
+
+        ///// <summary>
+        ///// 鐗╂枡鎵樼洏鍘嗗彶琛�
+        ///// </summary>
+        //public ICollection<WmsAssembleHistoryMaterialContainer> WmsAssembleHistoryMaterialContainer { get; set; }
+
+        ///// <summary>
+        ///// 鏋勫缓涓�瀵瑰鐨勫叧绯�
+        ///// </summary>
+        ///// <param name="entityBuilder"></param>
+        ///// <param name="dbContext"></param>
+        ///// <param name="dbContextLocator"></param>
+        //public void Configure(EntityTypeBuilder<WmsContainer> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        //{
+        //    entityBuilder.HasMany(x => x.WmsAssembleMaterialContainer)
+        //        .WithOne(x => x.WmsContainer)
+        //        .HasForeignKey(x => x.ContainerId);
+
+        //    entityBuilder.HasMany(x => x.WmsAssembleHistoryMaterialContainer)
+        //        .WithOne(x => x.WmsContainer)
+        //        .HasForeignKey(x => x.Id).IsRequired(false);
+        //}
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMaterial.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMaterial.cs
new file mode 100644
index 0000000..6cc53d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMaterial.cs
@@ -0,0 +1,174 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鐗╂枡淇℃伅琛�
+    /// </summary>
+    [Table("wms_material")]
+    [Comment("鐗╂枡淇℃伅琛�")]
+    public class WmsMaterial : DEntityBase, IEntityTypeBuilder<WmsMaterial>
+    {
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [Comment("鐗╂枡鍚嶇О")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [Comment("鐗╂枡缂栧彿")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        [Comment("鐗╂枡鎵规")]
+        [MaxLength(50)]
+        public string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("鐗╂枡绫诲埆")]
+        public MaterialType MaterialType { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡妫�楠�
+        /// </summary>
+        [Comment("鐗╂枡妫�楠�")]
+        public MaterialInspection InspectionMethod { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        [Comment("鐗╂枡瑙勬牸")]
+        [MaxLength(50)]
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        [Comment("鐗╂枡瀵嗗害")]
+        [MaxLength(50)]
+        public string MaterialDensity { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍗曚綅
+        /// </summary>
+        [Comment("鐗╂枡鍗曚綅")]
+        [MaxLength(50)]
+        public string MaterialUnit { get; set; }
+
+        /// <summary>
+        /// 搴撳尯Ids
+        /// </summary>
+        [Comment("搴撳尯Ids")]
+        public string AreaIds { get; set; }
+
+        /// <summary>
+        /// 搴撳尯鍙傛暟
+        /// </summary>
+        [Comment("搴撳尯鍙傛暟")]
+        public string AreaNameParameter { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔鍖篒ds
+        /// </summary>
+        [Comment("宸ヤ綔鍖篒ds")]
+        public string StationIds { get; set; }
+
+        /// <summary>
+        /// 宸ヤ綔鍖哄弬鏁�
+        /// </summary>
+        [Comment("宸ヤ綔鍖哄弬鏁�")]
+        public string StationNameParameter { get; set; }
+
+        /// <summary>
+        /// 宸ユ
+        /// </summary>
+        //[Comment("宸ユ")]
+        //[Required]
+        //public LesWorkshopSection LesWorkshopSection { get; set; }
+
+        //1215
+
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        [Comment("鎻忚堪")]
+
+        [MaxLength(500)]
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 瀹夊叏瀛橀噺
+        /// </summary>
+        [Comment("瀹夊叏瀛橀噺")]
+
+        public decimal Safeqty { get; set; }
+
+        /// <summary>
+        /// 鏈�澶у瓨閲�
+        /// </summary>
+        [Comment("鏈�澶у瓨閲�")]
+
+        public decimal MaxImumqty { get; set; }
+
+        /// <summary>
+        /// 鏈�灏忓簱榫�
+        /// </summary>
+        [Comment("鏈�灏忓簱榫�")]
+
+        public decimal MinstorageAge { get; set; }
+
+        /// <summary>
+        /// 鏈�澶у簱榫�
+        /// </summary>
+        [Comment("鏈�澶у簱榫�")]
+
+        public decimal MaxstorageAge { get; set; }
+
+     
+
+
+
+
+        /// <summary>
+        /// 鐗╂枡鎵樼洏鍏崇郴琛�
+        /// </summary>
+        public ICollection<WmsMaterialContainer> WmsFoamingMaterialContainer { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵樼洏鍘嗗彶琛�
+        /// </summary>
+        public ICollection<WmsHistoryMaterialContainer> WmsFoamingHistoryMaterialContainer { get; set; }
+
+        /// <summary>
+        /// 鏋勫缓涓�瀵瑰鐨勫叧绯�
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        public void Configure(EntityTypeBuilder<WmsMaterial> entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            entityBuilder.HasMany(x => x.WmsFoamingMaterialContainer)
+                .WithOne(x => x.WmsMaterial)
+                .HasForeignKey(x => x.MaterialId).IsRequired(false);
+
+            entityBuilder.HasMany(x => x.WmsFoamingHistoryMaterialContainer)
+                .WithOne(x => x.WmsMaterial)
+                .HasForeignKey(x => x.MaterialId).IsRequired(false);
+        }
+    }
+}
+
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMerchantinfo.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMerchantinfo.cs
new file mode 100644
index 0000000..89cbefa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMerchantinfo.cs
@@ -0,0 +1,103 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+/*
+ * @author : http://www.chiner.com.cn
+ * @date : 2023-8-17
+ * @desc : 瀹㈠晢淇℃伅琛�
+ */
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瀹㈠晢淇℃伅琛�
+    /// </summary>
+    [Table("wms_merchantinfo")]
+    [Comment("瀹㈠晢淇℃伅琛�")]
+    public class WmsMerchantinfo : DEntityBase
+    {
+        /// <summary>
+        /// 瀹㈠晢缂栧彿
+        /// </summary>
+        [Comment("瀹㈠晢缂栧彿")]
+        [MaxLength(50)]
+        public string MerchantNo { get; set; }
+
+        /// <summary>
+        /// 瀹㈠晢鍚嶇О
+        /// </summary>
+        [Comment("瀹㈠晢鍚嶇О")]
+        [MaxLength(50)]
+        public string MerchantName { get; set; }
+
+        /// <summary>
+        /// 瀹㈠晢鍒嗙被
+        /// </summary>
+        [Comment("瀹㈠晢鍒嗙被")]
+        public MerchantType MerchantType { get; set; }
+
+        /// <summary>
+        /// 瀹㈠晢绠�绉�
+        /// </summary>
+        [Comment("瀹㈠晢绠�绉�")]
+        [MaxLength(50)]
+        public string MerchantShort { get; set; }
+
+        /// <summary>
+        /// 瀹㈠晢绛夌骇
+        /// </summary>
+        [Comment("瀹㈠晢绛夌骇")]
+        public MerchantGrade MerchantGrade { get; set; }
+
+        /// <summary>
+        /// 瀹㈠晢灞炴��
+        /// </summary>
+        [Comment("瀹㈠晢灞炴��")]
+        [MaxLength(50)]
+        public string MerchantAttribute { get; set; }
+
+        /// <summary>
+        /// 瀹㈠晢琛屼笟
+        /// </summary>
+        [Comment("瀹㈠晢琛屼笟")]
+        [MaxLength(50)]
+        public string MerchantTmt { get; set; }
+
+        /// <summary>
+        /// 瀹㈠晢鑱旂郴浜�
+        /// </summary>
+        [Comment("瀹㈠晢鑱旂郴浜�")]
+        [MaxLength(50)]
+        public string MerchantContact { get; set; }
+
+        /// <summary>
+        /// 瀹㈠晢鐢佃瘽
+        /// </summary>
+        [Comment("瀹㈠晢鐢佃瘽")]
+        [MaxLength(50)]
+        public string MerchantPhone { get; set; }
+
+        /// <summary>
+        /// 瀹㈠晢浼犵湡
+        /// </summary>
+        [Comment("瀹㈠晢浼犵湡")]
+        [MaxLength(50)]
+        public string MerchantFax { get; set; }
+
+        /// <summary>
+        /// 瀹㈠晢閭
+        /// </summary>
+        [Comment("瀹㈠晢閭")]
+        [MaxLength(50)]
+        public string MerchantEmail { get; set; }
+
+        /// <summary>
+        /// 瀹㈠晢鍦板潃
+        /// </summary>
+        [Comment("瀹㈠晢鍦板潃")]
+        [MaxLength(50)]
+        public string MerchantAddress { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsOrderType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsOrderType.cs
new file mode 100644
index 0000000..9b7ee35
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsOrderType.cs
@@ -0,0 +1,65 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍗曟嵁绫诲瀷缁存姢琛�
+    /// </summary>
+    [Table("wms_order_type")]
+    [Comment("鍗曟嵁绫诲瀷缁存姢琛�")]
+    public class WmsOrderType : DEntityBase
+    {
+        /// <summary>
+        /// 鐖禝d
+        /// </summary>
+        [Comment("鐖禝d")]
+        public long Pid { get; set; }
+
+        /// <summary>
+        /// 鐖禝ds
+        /// </summary>
+        [Comment("鐖禝ds")]
+        public string Pids { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [Required, MaxLength(100)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Comment("缂栫爜")]
+        [Required, MaxLength(50)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        [Comment("鎺掑簭")]
+        public int Sort { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        [Comment("鎵�灞炶溅闂�")]
+        public LesWorkShopType LesWorkShopType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(100)]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        [Comment("鐘舵��")]
+        public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPdaPower.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPdaPower.cs
new file mode 100644
index 0000000..6d056c2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPdaPower.cs
@@ -0,0 +1,63 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Admin.NET.Core.Entity.WmsBase;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// PDA鑿滃崟琛�
+    /// </summary>
+    [Table("wms_pdapower")]
+    [Comment("PDA鑿滃崟琛�")]
+    public class WmsPdaPower : DEntityBase
+    {
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        [Comment("鍥炬爣")]
+        [Required]
+        [MaxLength(50)]
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Comment("缂栫爜")]
+        [MaxLength(50)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [Required]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 棰滆壊
+        /// </summary>
+        [Comment("棰滆壊")]
+        [Required]
+        public string Clolor { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        [Comment("鎵�灞炶溅闂�")]
+        public LesWorkShopType WorkShopType { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氾紙瑙掕壊锛�
+        /// </summary>
+        public ICollection<SysRole> SysRoles { get; set; }
+
+        /// <summary>
+        /// 澶氬澶氫腑闂磋〃锛堢敤鎴疯鑹诧級
+        /// </summary>
+        public List<WmsRolePdaMenu> WmsRolePdaMenus { get; set; }
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPlace.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPlace.cs
new file mode 100644
index 0000000..0429a33
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPlace.cs
@@ -0,0 +1,173 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 搴撲綅琛�
+    /// </summary>
+    [Table("wms_place")]
+    [Comment("搴撲綅琛�")]
+    public class WmsPlace : DEntityBase
+    {
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        [Comment("搴撲綅缂栫爜")]
+        [Required]
+        [MaxLength(50)]
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅瀵瑰簲AGV缂栫爜
+        /// </summary>
+        [Comment("搴撲綅瀵瑰簲AGV缂栫爜")]
+        [MaxLength(50)]
+        public string AgvCode { get; set; }
+
+        /// <summary>
+        /// 搴撲綅鐘舵��;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("搴撲綅鐘舵��")]
+        [Required]
+        public PlaceStatus PlaceStatus { get; set; }
+
+        /// <summary>
+        /// 鎵�鍦ㄥ簱鍖�
+        /// </summary>
+        [Comment("鎵�鍦ㄥ簱鍖�")]
+        [Required]
+        public long AreaId { get; set; }
+
+        /// <summary>
+        /// 鎺�
+        /// </summary>
+        [Comment("鎺�")]
+        [Required]
+        public int RowNo { get; set; }
+
+        /// <summary>
+        /// 鍒�
+        /// </summary>
+        [Comment("鍒�")]
+        [Required]
+        public int ColumnNo { get; set; }
+
+        /// <summary>
+        /// 灞�
+        /// </summary>
+        [Comment("灞�")]
+        [Required]
+        public int LayerNo { get; set; }
+
+        /// <summary>
+        /// 杩涙繁鍙�
+        /// </summary>
+        [Comment("杩涙繁鍙�")]
+        [Required]
+        public int DeepcellNo { get; set; }
+
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        [Comment("宸烽亾")]
+        [Required]
+        public int Aisle { get; set; }
+
+        /// <summary>
+        /// 绾垮彿
+        /// </summary>
+        [Comment("绾垮彿")]
+        [Required]
+        public int Line { get; set; }
+
+        /// <summary>
+        /// 鏄惁閿佸畾;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("鏄惁閿佸畾")]
+        [Required]
+        public YesOrNot Islock { get; set; }
+
+        /// <summary>
+        /// 鏄惁绌烘墭;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("鏄惁绌烘墭")]
+        public YesOrNot EmptyContainer { get; set; }
+
+        /// <summary>
+        /// 鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+        /// </summary>
+        [Comment("鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆")]
+        [MaxLength(50)]
+        public string PositionnoForSrm { get; set; }
+
+        /// <summary>
+        /// 搴撲綅X鍧愭爣
+        /// </summary>
+        [Comment("搴撲綅X鍧愭爣")]
+        [MaxLength(50)]
+        public string Xzb { get; set; }
+
+        /// <summary>
+        /// 搴撲綅Y鍧愭爣
+        /// </summary>
+        [Comment("搴撲綅Y鍧愭爣")]
+        [MaxLength(50)]
+        public string Yzb { get; set; }
+
+        /// <summary>
+        /// 搴撲綅Z鍧愭爣
+        /// </summary>
+        [Comment("搴撲綅Z鍧愭爣")]
+        [MaxLength(50)]
+        public string Zzb { get; set; }
+
+        /// <summary>
+        /// 搴撲綅闀垮害
+        /// </summary>
+        [Comment("搴撲綅闀垮害")]
+        public decimal Length { get; set; }
+
+        /// <summary>
+        /// 搴撲綅瀹藉害
+        /// </summary>
+        [Comment("搴撲綅瀹藉害")]
+        public decimal Width { get; set; }
+
+        /// <summary>
+        /// 搴撲綅楂樺害
+        /// </summary>
+        [Comment("搴撲綅楂樺害")]
+        public decimal Height { get; set; }
+
+        /// <summary>
+        /// 鏈�澶ф壙閲�
+        /// </summary>
+        [Comment("鏈�澶ф壙閲�")]
+        public decimal MaxWeight { get; set; }
+
+        /// <summary>
+        /// 搴撲綅楂樺害灞炴��;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("搴撲綅楂樺害灞炴��")]
+        public Heightlevel HeightLevel { get; set; }
+
+        /// <summary>
+        /// 浼樺厛绾�
+        /// </summary>
+        [Comment("浼樺厛绾�")]
+        public int Priority { get; set; }
+
+        /// <summary>
+        /// 閫昏緫鍖哄煙
+        /// </summary>
+        [Comment("閫昏緫鍖哄煙")]
+        public int LogicalName { get; set; }
+
+        /// <summary>
+        /// 搴撳尯琛�
+        /// </summary>
+        public WmsArea WmsArea { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsRolePdaMenu.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsRolePdaMenu.cs
new file mode 100644
index 0000000..228ac54
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsRolePdaMenu.cs
@@ -0,0 +1,36 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core.Entity.WmsBase
+{
+    /// <summary>
+    /// 瑙掕壊鑿滃崟琛�
+    /// </summary>
+    [Table("wms_role_pdamenu")]
+    [Comment("瑙掕壊鑿滃崟琛�")]
+    public class WmsRolePdaMenu : IEntity
+    {
+        /// <summary>
+        /// 瑙掕壊Id
+        /// </summary>
+        [Comment("瑙掕壊Id")]
+        public long SysRoleId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堢郴缁熺敤鎴凤級
+        /// </summary>
+        public SysRole SysRole { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟Id
+        /// </summary>
+        [Comment("鑿滃崟Id")]
+        public long PdaMenuId { get; set; }
+
+        /// <summary>
+        /// 涓�瀵逛竴寮曠敤锛堢郴缁熻彍鍗曪級
+        /// </summary>
+        public WmsPdaPower WmsPdaPower { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseEntrance.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseEntrance.cs
new file mode 100644
index 0000000..587fe09
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseEntrance.cs
@@ -0,0 +1,60 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 搴撳彛琛�
+    /// </summary>
+    [Table("wms_warehouse_entrance")]
+    [Comment("搴撳彛琛�")]
+    public class WmsWarehouseEntrance : DEntityBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [Required, MaxLength(100)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Comment("缂栫爜")]
+        [Required, MaxLength(50)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷-1.鍏ュ簱_2.鍑哄簱
+        /// </summary>
+        [Comment("绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�")]
+        [Required]
+        public WarehouseEntranceEnum Type { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炶溅闂�
+        /// </summary>
+        [Comment("鎵�灞炶溅闂�")]
+        public LesWorkShopType LesWorkShopType { get; set; }
+
+        /// <summary>
+        /// 鎵�灞炲贩閬�
+        /// </summary>
+        [Comment("鎵�灞炲贩閬�")]
+        public int AffiliatedRoadway { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(100)]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+        /// </summary>
+        [Comment("鐘舵��")]
+        public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseManage.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseManage.cs
new file mode 100644
index 0000000..1217a11
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseManage.cs
@@ -0,0 +1,41 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core.Entity.WmsBase
+{
+    /// <summary>
+    /// 浠撳簱绠$悊
+    /// </summary>
+    [Table("wms_warehouse_manage")]
+    [Comment("搴撳彛琛�")]
+    public class WmsWarehouseManage: DEntityBase
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Comment("鍚嶇О")]
+        [Required, MaxLength(100)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        [Comment("缂栫爜")]
+        [Required, MaxLength(50)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷
+        /// </summary>
+        [Comment("绫诲瀷")]
+        public int Type { get; set; }
+
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/VAccessDetails.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/VAccessDetails.cs
new file mode 100644
index 0000000..79c3337
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/VAccessDetails.cs
@@ -0,0 +1,104 @@
+锘縰sing Furion.DatabaseAccessor;
+
+namespace Admin.NET.Core.Entity
+{
+    /// <summary>
+    /// 鍑哄叆搴撴槑缁嗚瘯鍥�
+    /// </summary>
+    public class VAccessDetails : EntityNotKey
+    {
+        /// <summary>
+        /// 閰嶇疆瑙嗗浘鍚�
+        /// </summary>
+        public VAccessDetails() : base("View_AccessDetails") { }
+
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鏂瑰紡
+        /// </summary>
+        public TaskModel TaskModel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public TaskType TaskType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绾у埆
+        /// </summary>
+        public int TaskLevel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵�� 瀛楀吀 鏈墽琛岋紝鎵ц涓紝瀹屾垚
+        /// </summary>
+        public TaskStatusEnum TaskStatus { get; set; }  
+
+        /// <summary>
+        /// 璧峰搴撲綅
+        /// </summary>
+        public string SourcePlace { get; set; }
+
+        /// <summary>
+        /// 鐩爣搴撲綅
+        /// </summary>
+        public string ToPlace { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鏉ユ簮
+        /// </summary>
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        public string MaterialDensity { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        public string Batch { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset? CreatedTime { get; set; }
+
+        /// <summary>
+        /// 淇敼鏃堕棿
+        /// </summary>
+        public virtual DateTimeOffset? UpdatedTime { get; set; }
+
+        /// <summary>
+        /// 浠诲姟寮�濮嬫椂闂�
+        /// </summary>
+        public DateTimeOffset? TaskCreatedTime { get; set; }
+
+        /// <summary>
+        /// 浠诲姟缁撴潫鏃堕棿
+        /// </summary>
+        public DateTimeOffset? TaskUpdatedTime { get; set; }
+
+        public int Long { get; set; }
+        public int Wide { get; set; }
+        public int High { get; set; }
+
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long? Id { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/WmsMaterialStock.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/WmsMaterialStock.cs
new file mode 100644
index 0000000..ce0c36f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/WmsMaterialStock.cs
@@ -0,0 +1,167 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 搴撳瓨琛�
+    /// </summary>
+    [Table("wms_materialstock")]
+    [Comment("搴撳瓨琛�")]
+    public class WmsMaterialStock : DEntityBase
+    {
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [Comment("鐗╂枡缂栧彿")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("鐗╂枡绫诲埆")]
+        [Required]
+        public MaterialType MaterialType { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        [Comment("鐗╂枡鎵规")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [Comment("鐗╂枡鍚嶇О")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        [Comment("鐗╂枡瑙勬牸")]
+        [MaxLength(50)]
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 闀�    
+        /// </summary>
+        [Comment("闀�")]
+        public int Long { get; set; }
+
+        /// <summary>
+        /// 瀹�    
+        /// </summary>
+        [Comment("瀹�")]
+        public int Wide { get; set; }
+
+        /// <summary>
+        /// 楂�    
+        /// </summary>
+        [Comment("楂�")]
+        public int High { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        [Comment("鐗╂枡瀵嗗害")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialDensity { get; set; }
+
+        /// <summary>
+        /// 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("妫�楠屾柟寮�")]
+        public MaterialInspection InspectionMethod { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅绫诲埆;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("鍗曚綅绫诲埆")]
+        public UnitType UnitType { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅缂栧彿;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("鍗曚綅缂栧彿")]
+        public UnitNoType UnitNo { get; set; }
+
+        /// <summary>
+        /// 瀹炵墿搴撳瓨鏁�
+        /// </summary>
+        [Comment("瀹炵墿搴撳瓨鏁�")]
+        [Required]
+        public decimal StockNumber { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        [Comment("搴撲綅缂栫爜")]
+        [Required]
+        [MaxLength(50)]
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏Id
+        /// </summary>
+        [Comment("鎵樼洏Id")]
+        [Required]
+        public long ContainerId{ get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        [Comment("鎵樼洏缂栫爜")]
+        [Required]
+        [MaxLength(50)]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 搴撳尯Id
+        /// </summary>
+        [Comment("搴撳尯Id")]
+        [Required]
+        public long AreaId { get; set; }
+
+        /// <summary>
+        /// 璐﹂潰鏁伴噺
+        /// </summary>
+        [Comment("璐﹂潰鏁伴噺")]
+        [Required]
+        public decimal QuantityOfBill { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鏉ユ簮
+        /// </summary>
+        [Comment("鍏ュ簱鏉ユ簮")]
+        public RuKuSourceEnum Source { get; set; }
+
+        /// <summary>
+        /// 椤圭洰缂栧彿    
+        /// </summary>
+        [Comment("椤圭洰缂栧彿")]
+        [MaxLength(255)]
+        public string ProjectCode { get; set; }
+
+        /// <summary>
+        /// 鍚堝悓缂栧彿
+        /// </summary>
+        [Comment("鍚堝悓缂栧彿")]
+        [MaxLength(255)]
+        public string ContractCode { get; set; }
+
+        /// <summary>
+        /// TA鍙�
+        /// </summary>
+        [Comment("TA鍙�")]
+        [MaxLength(255)]
+        public string TACode { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsContainerPlace.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsContainerPlace.cs
new file mode 100644
index 0000000..c4b37e0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsContainerPlace.cs
@@ -0,0 +1,51 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鎵樼洏搴撲綅鍏崇郴琛�
+    /// </summary>
+    [Table("wms_containerplace")]
+    [Comment("鎵樼洏搴撲綅鍏崇郴琛�")]
+    public class WmsContainerPlace : DEntityBase
+    {
+        /// <summary>
+        /// 搴撲綅Id
+        /// </summary>
+        [Comment("搴撲綅Id")]
+        [Required]
+        public long PlaceId { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        [Comment("搴撲綅缂栫爜")]
+        [Required]
+        [MaxLength(50)]
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏Id
+        /// </summary>
+        [Comment("鎵樼洏Id")]
+        [Required]
+        public long ContainerId { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜
+        /// </summary>
+        [Comment("搴撲綅缂栫爜")]
+        [Required]
+        [MaxLength(50)]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鐘舵��;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("鐘舵��")]
+        [Required]
+        public CommonStatus ContainerPlaceStatus { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsHistoryMaterialContainer .cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsHistoryMaterialContainer .cs
new file mode 100644
index 0000000..ca2d900
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsHistoryMaterialContainer .cs
@@ -0,0 +1,108 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鐗╂枡鎵樼洏鍘嗗彶琛�
+    /// </summary>
+    [Table("wms_history_materialcontainer")]
+    [Comment("鐗╂枡鎵樼洏鍘嗗彶琛�")]
+    public class WmsHistoryMaterialContainer : DEntityBase
+    {
+        /// <summary>
+        /// 鎵樼洏Id
+        /// </summary>
+        [Comment("鎵樼洏Id")]
+        [Required]
+        public long ContainerId { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        [Comment("鎵樼洏缂栫爜")]
+        [Required]
+        [MaxLength(50)]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [Comment("鐗╂枡鍚嶇О")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [Comment("鐗╂枡缂栧彿")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        [Comment("鐗╂枡鎵规")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        [Comment("鐗╂枡瑙勬牸")]
+        [MaxLength(50)]
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡Id
+        /// </summary>
+        [Comment("鐗╂枡Id")]
+        [Required]
+        public long MaterialId { get; set; }
+
+        /// <summary>
+        /// 缁勭洏鏁伴噺
+        /// </summary>
+        [Comment("缁勭洏鏁伴噺")]
+        [Required]
+        public decimal BindQuantity { get; set; }
+
+        /// <summary>
+        /// 缁勭洏鐘舵��;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("缁勭洏鐘舵��")]
+        [Required]
+        public CommonStatus BindStatus { get; set; }
+
+        /// <summary>
+        /// 鎶芥鏁伴噺
+        /// </summary>
+        [Comment("鎶芥鏁伴噺")]
+        public decimal SampleQty { get; set; }
+
+        /// <summary>
+        /// 鍗曞彿
+        /// </summary>
+        [Comment("鍗曞彿")]
+        [Required]
+        [MaxLength(50)]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        [Comment("鐗╂枡瀵嗗害")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialDensity { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡淇℃伅琛�
+        /// </summary>
+        public WmsMaterial WmsMaterial { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsMaterialContainer.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsMaterialContainer.cs
new file mode 100644
index 0000000..dd361f2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsMaterialContainer.cs
@@ -0,0 +1,120 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鐗╂枡鎵樼洏鍏崇郴琛�
+    /// </summary>
+    [Table("wms_materialcontainer")]
+    [Comment("鐗╂枡鎵樼洏鍏崇郴琛�")]
+    public class WmsMaterialContainer : DEntityBase
+    {
+        /// <summary>
+        /// 鎵樼洏Id
+        /// </summary>
+        [Comment("鎵樼洏Id")]
+        [Required]
+        public long ContainerId { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        [Comment("鎵樼洏缂栫爜")]
+        [Required]
+        [MaxLength(50)]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [Comment("鐗╂枡鍚嶇О")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栧彿
+        /// </summary>
+        [Comment("鐗╂枡缂栧彿")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        [Comment("鐗╂枡鎵规")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialBatch { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        [Comment("鐗╂枡瑙勬牸")]
+        [MaxLength(50)]
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡Id
+        /// </summary>
+        [Comment("鐗╂枡Id")]
+        [Required]
+        public long MaterialId { get; set; }
+
+        /// <summary>
+        /// 缁勭洏鏁伴噺
+        /// </summary>
+        [Comment("缁勭洏鏁伴噺")]
+        [Required]
+        public decimal BindQuantity { get; set; }
+
+        /// <summary>
+        /// 缁勭洏鐘舵��;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("缁勭洏鐘舵��")]
+        [Required]
+        public CommonStatus BindStatus { get; set; }
+
+        /// <summary>
+        /// 鎶芥鏁伴噺
+        /// </summary>
+        [Comment("鎶芥鏁伴噺")]
+        public decimal SampleQty { get; set; }
+
+        /// <summary>
+        /// 鍗曞彿
+        /// </summary>
+        [Comment("鍗曞彿")]
+        [Required]
+        [MaxLength(50)]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鏄庣粏Id
+        /// </summary>
+        [Comment("鍗曟嵁鏄庣粏Id")]
+        [Required]
+        public long OrderDetailsId { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瀵嗗害
+        /// </summary>
+        [Comment("鐗╂枡瀵嗗害")]
+        [Required]
+        [MaxLength(50)]
+        public string MaterialDensity { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏淇℃伅琛�
+        /// </summary>
+        public WmsContainer WmsContainer { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡淇℃伅琛�
+        /// </summary>
+        public WmsMaterial WmsMaterial { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsTask.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsTask.cs
new file mode 100644
index 0000000..b0d88ae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsTask.cs
@@ -0,0 +1,157 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 浠诲姟绠$悊琛�
+    /// </summary>
+    [Table("wms_task")]
+    [Comment("浠诲姟绠$悊琛�")]
+    public class WmsTask : DEntityBase
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        [Comment("浠诲姟鍙�")]
+        [Required]
+        [MaxLength(50)]
+        public string TaskNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鏂瑰紡;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("浠诲姟鏂瑰紡")]
+        [Required]
+        public TaskModel TaskModel { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("浠诲姟绫诲瀷")]
+        [Required]
+        public TaskType TaskType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绾у埆
+        /// </summary>
+        [Comment("浠诲姟绾у埆")]
+        [Required]
+        public int TaskLevel { get; set; } = 1;
+
+        /// <summary>
+        /// 浠诲姟鐘舵��;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("浠诲姟鐘舵��")]
+        [Required]
+        public TaskStatusEnum TaskStatus { get; set; }
+
+        /// <summary>
+        /// WCS鏄惁鍙互璇诲彇
+        /// </summary>
+        [Comment("WCS鏄惁鍙互璇诲彇")]
+        [Required]
+        public bool IsRead { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栧彿
+        /// </summary>
+        [Comment("鎵樼洏缂栧彿")]
+        [Required]
+        [MaxLength(50)]
+        public string ContainerCode { get; set; }
+
+        /// <summary>
+        /// 璧峰搴撲綅
+        /// </summary>
+        [Comment("璧峰搴撲綅")]
+        [Required]
+        [MaxLength(50)]
+        public string SourcePlace { get; set; }
+
+        /// <summary>
+        /// 鐩爣搴撲綅
+        /// </summary>
+        [Comment("鐩爣搴撲綅")]
+        [Required]
+        [MaxLength(50)]
+        public string ToPlace { get; set; }
+
+        /// <summary>
+        /// 宸烽亾
+        /// </summary>
+        [Comment("宸烽亾")]
+        [Required]
+        public int Aisle { get; set; }
+
+
+        /// <summary>
+        /// 鏄惁绌烘墭
+        /// </summary>
+        [Comment("鏄惁绌烘墭")]
+        public YesOrNot EmptyContainer { get; set; }
+
+        /// <summary>
+        /// 搴撳尯鍚嶇О
+        /// </summary>
+        [Comment("搴撳尯鍚嶇О")]
+        [Required]
+        [MaxLength(50)]
+        public string AreaName { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁鏄庣粏Id
+        /// </summary>
+        [Comment("鍗曟嵁鏄庣粏Id")]
+        [Required]
+        public long OrderDetailsId { get; set; }
+
+        /// <summary>
+        /// 缁勭洏璁板綍鍗曟嵁鍙�
+        /// </summary>
+        [Comment("缁勭洏璁板綍鍗曟嵁鍙�")]
+        [Required]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鍙戦�佹鏁�
+        /// </summary>
+        [Comment("鍙戦�佹鏁�")]
+        public int SendTimes { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鎵ц鍫嗗灈鏈篒d
+        /// </summary>
+        [Comment("浠诲姟鎵ц鍫嗗灈鏈篒d")]
+        public int DodeviceId { get; set; }
+
+        /// <summary>
+        /// 璁惧鎵ц鑺傜偣Id
+        /// </summary>
+        [Comment("璁惧鎵ц鑺傜偣Id")]
+        [MaxLength(50)]
+        public string DodevicenodeId { get; set; }
+
+        /// <summary>
+        /// 璁惧绫诲瀷
+        /// </summary>
+        [Comment("璁惧绫诲瀷")]
+        [MaxLength(50)]
+        public DodeviceType Dodevicetype { get; set; }
+
+        /// <summary>
+        /// 浠诲姟璁惧鐘舵��;鏁版嵁瀛楀吀
+        /// </summary>
+        [Comment("浠诲姟璁惧鐘舵��")]
+        [Required]
+        public TaskDodeviceStatusEnum TaskDodeviceStatus { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鏉ユ簮
+        /// </summary>
+        [Comment("鍏ュ簱鏉ユ簮")]
+        [MaxLength(50)]
+        public string Description { get; set; }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/AdminType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/AdminType.cs
new file mode 100644
index 0000000..2adffc9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/AdminType.cs
@@ -0,0 +1,28 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 璐﹀彿绫诲瀷
+    /// </summary>
+    public enum AdminType
+    {
+        /// <summary>
+        /// 瓒呯骇绠$悊鍛�
+        /// </summary>
+        [Description("瓒呯骇绠$悊鍛�")]
+        SuperAdmin = 1,
+
+        /// <summary>
+        /// 绠$悊鍛�
+        /// </summary>
+        [Description("绠$悊鍛�")]
+        Admin = 2,
+
+        /// <summary>
+        /// 鏅�氳处鍙�
+        /// </summary>
+        [Description("鏅�氳处鍙�")]
+        None = 3
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Class.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Class.cs
new file mode 100644
index 0000000..1313855
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Class.cs
@@ -0,0 +1,24 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鎬у埆
+    /// </summary>
+    public enum Class
+    {
+        /// <summary>
+        /// 涓�鐝�
+        /// </summary>
+        [Description("涓�鐝�")]
+        涓�鐝� = 1,
+
+        /// <summary>
+        /// 浜岀彮
+        /// </summary>
+        [Description("浜岀彮")]
+        浜岀彮 = 2
+    }
+    
+    
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/CommonStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/CommonStatus.cs
new file mode 100644
index 0000000..26744e5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/CommonStatus.cs
@@ -0,0 +1,28 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍏叡鐘舵��
+    /// </summary>
+    public enum CommonStatus
+    {
+        /// <summary>
+        /// 姝e父
+        /// </summary>
+        [Description("姝e父")]
+        ENABLE = 0,
+
+        /// <summary>
+        /// 鍋滅敤
+        /// </summary>
+        [Description("鍋滅敤")]
+        DISABLE = 1,
+
+        /// <summary>
+        /// 鍒犻櫎
+        /// </summary>
+        [Description("鍒犻櫎")]
+        DELETED = 2
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataOpType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataOpType.cs
new file mode 100644
index 0000000..8df13a3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataOpType.cs
@@ -0,0 +1,78 @@
+锘縩amespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鏁版嵁鎿嶄綔绫诲瀷
+    /// </summary>
+    public enum DataOpType
+    {
+        /// <summary>
+        /// 鍏跺畠
+        /// </summary>
+        OTHER,
+
+        /// <summary>
+        /// 澧炲姞
+        /// </summary>
+        ADD,
+
+        /// <summary>
+        /// 鍒犻櫎
+        /// </summary>
+        DELETE,
+
+        /// <summary>
+        /// 缂栬緫
+        /// </summary>
+        EDIT,
+
+        /// <summary>
+        /// 鏇存柊
+        /// </summary>
+        UPDATE,
+
+        /// <summary>
+        /// 鏌ヨ
+        /// </summary>
+        QUERY,
+
+        /// <summary>
+        /// 璇︽儏
+        /// </summary>
+        DETAIL,
+
+        /// <summary>
+        /// 鏍�
+        /// </summary>
+        TREE,
+
+        /// <summary>
+        /// 瀵煎叆
+        /// </summary>
+        IMPORT,
+
+        /// <summary>
+        /// 瀵煎嚭
+        /// </summary>
+        EXPORT,
+
+        /// <summary>
+        /// 鎺堟潈
+        /// </summary>
+        GRANT,
+
+        /// <summary>
+        /// 寮洪��
+        /// </summary>
+        FORCE,
+
+        /// <summary>
+        /// 娓呯┖
+        /// </summary>
+        CLEAN,
+
+        /// <summary>
+        /// 淇敼鐘舵��
+        /// </summary>
+        CHANGE_STATUS
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataScopeType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataScopeType.cs
new file mode 100644
index 0000000..09afa03
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataScopeType.cs
@@ -0,0 +1,37 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    public enum DataScopeType
+    {
+        /// <summary>
+        /// 鍏ㄩ儴鏁版嵁
+        /// </summary>
+        [Description("鍏ㄩ儴鏁版嵁")]
+        ALL = 1,
+
+        /// <summary>
+        /// 鏈儴闂ㄥ強浠ヤ笅鏁版嵁
+        /// </summary>
+        [Description("鏈儴闂ㄥ強浠ヤ笅鏁版嵁")]
+        DEPT_WITH_CHILD = 2,
+
+        /// <summary>
+        /// 鏈儴闂ㄦ暟鎹�
+        /// </summary>
+        [Description("鏈儴闂ㄦ暟鎹�")]
+        DEPT = 3,
+
+        /// <summary>
+        /// 浠呮湰浜烘暟鎹�
+        /// </summary>
+        [Description("浠呮湰浜烘暟鎹�")]
+        SELF = 4,
+
+        /// <summary>
+        /// 鑷畾涔夋暟鎹�
+        /// </summary>
+        [Description("鑷畾涔夋暟鎹�")]
+        DEFINE = 5
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/EnumAuditStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/EnumAuditStatus.cs
new file mode 100644
index 0000000..4434ef8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/EnumAuditStatus.cs
@@ -0,0 +1,25 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    public enum EnumAuditStatus
+    {
+        /// <summary>
+        /// 寰呭鏍�
+        /// </summary>
+        [Description("鏈鏍�")]
+        UnAudited = 0,
+
+        /// <summary>
+        /// 瀹℃牳閫氳繃
+        /// </summary>
+        [Description("瀹℃牳閫氳繃")]
+        Pass = 1,
+
+        /// <summary>
+        /// 鍥為��
+        /// </summary>
+        [Description("宸插洖閫�")]
+        Backup = 2,
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ErrorCode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ErrorCode.cs
new file mode 100644
index 0000000..d5800aa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ErrorCode.cs
@@ -0,0 +1,497 @@
+锘縰sing Furion.FriendlyException;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺閿欒鐮�
+    /// </summary>
+    [ErrorCodeType]
+    public enum ErrorCode
+    {
+        /// <summary>
+        /// 鐢ㄦ埛鍚嶆垨瀵嗙爜涓嶆纭�
+        /// </summary>
+        [ErrorCodeItemMetadata("鐢ㄦ埛鍚嶆垨瀵嗙爜涓嶆纭�")]
+        D1000,
+
+        /// <summary>
+        /// 闈炴硶鎿嶄綔锛佺姝㈠垹闄よ嚜宸�
+        /// </summary>
+        [ErrorCodeItemMetadata("闈炴硶鎿嶄綔锛岀姝㈠垹闄よ嚜宸�")]
+        D1001,
+
+        /// <summary>
+        /// 璁板綍涓嶅瓨鍦�
+        /// </summary>
+        [ErrorCodeItemMetadata("璁板綍涓嶅瓨鍦�")]
+        D1002,
+
+        /// <summary>
+        /// 璐﹀彿宸插瓨鍦�
+        /// </summary>
+        [ErrorCodeItemMetadata("璐﹀彿宸插瓨鍦�")]
+        D1003,
+
+        /// <summary>
+        /// 鏃у瘑鐮佷笉鍖归厤
+        /// </summary>
+        [ErrorCodeItemMetadata("鏃у瘑鐮佽緭鍏ラ敊璇�")]
+        D1004,
+
+        /// <summary>
+        /// 娴嬭瘯鏁版嵁绂佹鏇存敼admin瀵嗙爜
+        /// </summary>
+        [ErrorCodeItemMetadata("娴嬭瘯鏁版嵁绂佹鏇存敼鐢ㄦ埛銆恆dmin銆戝瘑鐮�")]
+        D1005,
+
+        /// <summary>
+        /// 鏁版嵁宸插瓨鍦�
+        /// </summary>
+        [ErrorCodeItemMetadata("鏁版嵁宸插瓨鍦�")]
+        D1006,
+
+        /// <summary>
+        /// 鏁版嵁涓嶅瓨鍦ㄦ垨鍚湁鍏宠仈寮曠敤锛岀姝㈠垹闄�
+        /// </summary>
+        [ErrorCodeItemMetadata("鏁版嵁涓嶅瓨鍦ㄦ垨鍚湁鍏宠仈寮曠敤锛岀姝㈠垹闄�")]
+        D1007,
+
+        /// <summary>
+        /// 绂佹涓虹鐞嗗憳鍒嗛厤瑙掕壊
+        /// </summary>
+        [ErrorCodeItemMetadata("绂佹涓虹鐞嗗憳鍒嗛厤瑙掕壊")]
+        D1008,
+
+        /// <summary>
+        /// 閲嶅鏁版嵁鎴栬褰曞惈鏈変笉瀛樺湪鏁版嵁
+        /// </summary>
+        [ErrorCodeItemMetadata("閲嶅鏁版嵁鎴栬褰曞惈鏈変笉瀛樺湪鏁版嵁")]
+        D1009,
+
+        /// <summary>
+        /// 绂佹涓鸿秴绾х鐞嗗憳瑙掕壊鍒嗛厤鏉冮檺
+        /// </summary>
+        [ErrorCodeItemMetadata("绂佹涓鸿秴绾х鐞嗗憳瑙掕壊鍒嗛厤鏉冮檺")]
+        D1010,
+
+        /// <summary>
+        /// 闈炴硶鏁版嵁
+        /// </summary>
+        [ErrorCodeItemMetadata("闈炴硶鏁版嵁")]
+        D1011,
+
+        /// <summary>
+        /// Id涓嶈兘涓虹┖
+        /// </summary>
+        [ErrorCodeItemMetadata("Id涓嶈兘涓虹┖")]
+        D1012,
+
+        /// <summary>
+        /// 鎵�灞炴満鏋勪笉鍦ㄨ嚜宸辩殑鏁版嵁鑼冨洿鍐�
+        /// </summary>
+        [ErrorCodeItemMetadata("娌℃湁鏉冮檺鎿嶄綔璇ユ暟鎹�")]
+        D1013,
+
+        /// <summary>
+        /// 绂佹鍒犻櫎瓒呯骇绠$悊鍛�
+        /// </summary>
+        [ErrorCodeItemMetadata("绂佹鍒犻櫎瓒呯骇绠$悊鍛�")]
+        D1014,
+
+        /// <summary>
+        /// 绂佹淇敼瓒呯骇绠$悊鍛樼姸鎬�
+        /// </summary>
+        [ErrorCodeItemMetadata("绂佹淇敼瓒呯骇绠$悊鍛樼姸鎬�")]
+        D1015,
+
+        /// <summary>
+        /// 娌℃湁鏉冮檺
+        /// </summary>
+        [ErrorCodeItemMetadata("娌℃湁鏉冮檺")]
+        D1016,
+
+        /// <summary>
+        /// 璐﹀彿宸插喕缁�
+        /// </summary>
+        [ErrorCodeItemMetadata("璐﹀彿宸插喕缁�")]
+        D1017,
+
+        /// <summary>
+        /// 绂佹鍒犻櫎绠$悊鍛�
+        /// </summary>
+        [ErrorCodeItemMetadata("绂佹鍒犻櫎绠$悊鍛�")]
+        D1018,
+
+        /// <summary>
+        /// 绂佹鍒犻櫎绯荤粺绠$悊鍛樿鑹�(sys_manager_role)
+        /// </summary>
+        [ErrorCodeItemMetadata("绂佹鍒犻櫎绯荤粺绠$悊鍛樿鑹�(sys_manager_role)")]
+        D1019,
+
+        /// <summary>
+        /// 绂佹淇敼绯荤粺绠$悊鍛樿鑹�(sys_manager_role)
+        /// </summary>
+        [ErrorCodeItemMetadata("绂佹淇敼绯荤粺绠$悊鍛樿鑹�(sys_manager_role)")]
+        D1020,
+
+        /// <summary>
+        /// 绂佹涓虹郴缁熺鐞嗗憳瑙掕壊(sys_manager_role)鍒嗛厤鏉冮檺
+        /// </summary>
+        [ErrorCodeItemMetadata("绂佹涓虹郴缁熺鐞嗗憳瑙掕壊(sys_manager_role)鍒嗛厤鏉冮檺")]
+        D1021,
+
+        /// <summary>
+        /// 绂佹涓鸿秴绾х鐞嗗憳鍒嗛厤瑙掕壊
+        /// </summary>
+        [ErrorCodeItemMetadata("绂佹涓鸿秴绾х鐞嗗憳鍒嗛厤瑙掕壊")]
+        D1022,
+
+        /// <summary>
+        /// 绂佹鍒犻櫎榛樿绉熸埛
+        /// </summary>
+        [ErrorCodeItemMetadata("绂佹鍒犻櫎榛樿绉熸埛")]
+        D1023,
+
+        /// <summary>
+        /// 鐖舵満鏋勪笉瀛樺湪
+        /// </summary>
+        [ErrorCodeItemMetadata("鐖舵満鏋勪笉瀛樺湪")]
+        D2000,
+
+        /// <summary>
+        /// 褰撳墠鏈烘瀯Id涓嶈兘涓庣埗鏈烘瀯Id鐩稿悓
+        /// </summary>
+        [ErrorCodeItemMetadata("褰撳墠鏈烘瀯Id涓嶈兘涓庣埗鏈烘瀯Id鐩稿悓")]
+        D2001,
+
+        /// <summary>
+        /// 宸叉湁鐩稿悓缁勭粐鏈烘瀯,缂栫爜鎴栧悕绉扮浉鍚�
+        /// </summary>
+        [ErrorCodeItemMetadata("宸叉湁鐩稿悓缁勭粐鏈烘瀯,缂栫爜鎴栧悕绉扮浉鍚�")]
+        D2002,
+
+        /// <summary>
+        /// 娌℃湁鏉冮檺鎿嶄綔鏈烘瀯
+        /// </summary>
+        [ErrorCodeItemMetadata("娌℃湁鏉冮檺鎿嶄綔鏈烘瀯")]
+        D2003,
+
+        /// <summary>
+        /// 璇ユ満鏋勪笅鏈夊憳宸ョ姝㈠垹闄�
+        /// </summary>
+        [ErrorCodeItemMetadata("璇ユ満鏋勪笅鏈夊憳宸ョ姝㈠垹闄�")]
+        D2004,
+
+        /// <summary>
+        /// 闄勫睘鏈烘瀯涓嬫湁鍛樺伐绂佹鍒犻櫎
+        /// </summary>
+        [ErrorCodeItemMetadata("闄勫睘鏈烘瀯涓嬫湁鍛樺伐绂佹鍒犻櫎")]
+        D2005,
+
+        /// <summary>
+        /// 鍙兘澧炲姞涓嬬骇鏈烘瀯
+        /// </summary>
+        [ErrorCodeItemMetadata("鍙兘澧炲姞涓嬬骇鏈烘瀯")]
+        D2006,
+
+        /// <summary>
+        /// 瀛楀吀绫诲瀷涓嶅瓨鍦�
+        /// </summary>
+        [ErrorCodeItemMetadata("瀛楀吀绫诲瀷涓嶅瓨鍦�")]
+        D3000,
+
+        /// <summary>
+        /// 瀛楀吀绫诲瀷宸插瓨鍦�
+        /// </summary>
+        [ErrorCodeItemMetadata("瀛楀吀绫诲瀷宸插瓨鍦�,鍚嶇О鎴栫紪鐮侀噸澶�")]
+        D3001,
+
+        /// <summary>
+        /// 瀛楀吀绫诲瀷涓嬮潰鏈夊瓧鍏稿�肩姝㈠垹闄�
+        /// </summary>
+        [ErrorCodeItemMetadata("瀛楀吀绫诲瀷涓嬮潰鏈夊瓧鍏稿�肩姝㈠垹闄�")]
+        D3002,
+
+        /// <summary>
+        /// 瀛楀吀鍊煎凡瀛樺湪
+        /// </summary>
+        [ErrorCodeItemMetadata("瀛楀吀鍊煎凡瀛樺湪,鍚嶇О鎴栫紪鐮侀噸澶�")]
+        D3003,
+
+        /// <summary>
+        /// 瀛楀吀鍊间笉瀛樺湪
+        /// </summary>
+        [ErrorCodeItemMetadata("瀛楀吀鍊间笉瀛樺湪")]
+        D3004,
+
+        /// <summary>
+        /// 瀛楀吀鐘舵�侀敊璇�
+        /// </summary>
+        [ErrorCodeItemMetadata("瀛楀吀鐘舵�侀敊璇�")]
+        D3005,
+
+        /// <summary>
+        /// 鑿滃崟宸插瓨鍦�
+        /// </summary>
+        [ErrorCodeItemMetadata("鑿滃崟宸插瓨鍦�")]
+        D4000,
+
+        /// <summary>
+        /// 璺敱鍦板潃涓虹┖
+        /// </summary>
+        [ErrorCodeItemMetadata("璺敱鍦板潃涓虹┖")]
+        D4001,
+
+        /// <summary>
+        /// 鎵撳紑鏂瑰紡涓虹┖
+        /// </summary>
+        [ErrorCodeItemMetadata("鎵撳紑鏂瑰紡涓虹┖")]
+        D4002,
+
+        /// <summary>
+        /// 鏉冮檺鏍囪瘑鏍煎紡涓虹┖
+        /// </summary>
+        [ErrorCodeItemMetadata("鏉冮檺鏍囪瘑鏍煎紡涓虹┖")]
+        D4003,
+
+        /// <summary>
+        /// 鏉冮檺鏍囪瘑鏍煎紡閿欒
+        /// </summary>
+        [ErrorCodeItemMetadata("鏉冮檺鏍囪瘑鏍煎紡閿欒")]
+        D4004,
+
+        /// <summary>
+        /// 鏉冮檺涓嶅瓨鍦�
+        /// </summary>
+        [ErrorCodeItemMetadata("鏉冮檺涓嶅瓨鍦�")]
+        D4005,
+
+        /// <summary>
+        /// 鐖剁骇鑿滃崟涓嶈兘涓哄綋鍓嶈妭鐐癸紝璇烽噸鏂伴�夋嫨鐖剁骇鑿滃崟
+        /// </summary>
+        [ErrorCodeItemMetadata("鐖剁骇鑿滃崟涓嶈兘涓哄綋鍓嶈妭鐐癸紝璇烽噸鏂伴�夋嫨鐖剁骇鑿滃崟")]
+        D4006,
+
+        /// <summary>
+        /// 涓嶈兘绉诲姩鏍硅妭鐐�
+        /// </summary>
+        [ErrorCodeItemMetadata("涓嶈兘绉诲姩鏍硅妭鐐�")]
+        D4007,
+
+        /// <summary>
+        /// 宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佸簲鐢�
+        /// </summary>
+        [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佸簲鐢�")]
+        D5000,
+
+        /// <summary>
+        /// 榛樿婵�娲荤郴缁熷彧鑳芥湁涓�涓�
+        /// </summary>
+        [ErrorCodeItemMetadata("榛樿婵�娲荤郴缁熷彧鑳芥湁涓�涓�")]
+        D5001,
+
+        /// <summary>
+        /// 璇ュ簲鐢ㄤ笅鏈夎彍鍗曠姝㈠垹闄�
+        /// </summary>
+        [ErrorCodeItemMetadata("璇ュ簲鐢ㄤ笅鏈夎彍鍗曠姝㈠垹闄�")]
+        D5002,
+
+        /// <summary>
+        /// 宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佸簲鐢�
+        /// </summary>
+        [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佸簲鐢�")]
+        D5003,
+
+        /// <summary>
+        /// 宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佽亴浣�
+        /// </summary>
+        [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佽亴浣�")]
+        D6000,
+
+        /// <summary>
+        /// 璇ヨ亴浣嶄笅鏈夊憳宸ョ姝㈠垹闄�
+        /// </summary>
+        [ErrorCodeItemMetadata("璇ヨ亴浣嶄笅鏈夊憳宸ョ姝㈠垹闄�")]
+        D6001,
+
+        /// <summary>
+        /// 閫氱煡鍏憡鐘舵�侀敊璇�
+        /// </summary>
+        [ErrorCodeItemMetadata("閫氱煡鍏憡鐘舵�侀敊璇�")]
+        D7000,
+
+        /// <summary>
+        /// 閫氱煡鍏憡鍒犻櫎澶辫触
+        /// </summary>
+        [ErrorCodeItemMetadata("閫氱煡鍏憡鍒犻櫎澶辫触")]
+        D7001,
+
+        /// <summary>
+        /// 閫氱煡鍏憡缂栬緫澶辫触
+        /// </summary>
+        [ErrorCodeItemMetadata("閫氱煡鍏憡缂栬緫澶辫触锛岀被鍨嬪繀椤讳负鑽夌")]
+        D7002,
+
+        /// <summary>
+        /// 閫氱煡鍏憡鎿嶄綔澶辫触锛岄潪鍙戝竷鑰呬笉鑳借繘琛屾搷浣�
+        /// </summary>
+        [ErrorCodeItemMetadata("閫氱煡鍏憡鎿嶄綔澶辫触锛岄潪鍙戝竷鑰呬笉鑳借繘琛屾搷浣�")]
+        D7003,
+
+        /// <summary>
+        /// 鏂囦欢涓嶅瓨鍦�
+        /// </summary>
+        [ErrorCodeItemMetadata("鏂囦欢涓嶅瓨鍦�")]
+        D8000,
+
+        /// <summary>
+        /// 涓嶅厑璁哥殑鏂囦欢绫诲瀷
+        /// </summary>
+        [ErrorCodeItemMetadata("涓嶅厑璁哥殑鏂囦欢绫诲瀷")]
+        D8001,
+
+        /// <summary>
+        /// 鏂囦欢瓒呰繃鍏佽澶у皬
+        /// </summary>
+        [ErrorCodeItemMetadata("鏂囦欢瓒呰繃鍏佽澶у皬")]
+        D8002,
+
+        /// <summary>
+        /// 宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佸弬鏁伴厤缃�
+        /// </summary>
+        [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佸弬鏁伴厤缃�")]
+        D9000,
+
+        /// <summary>
+        /// 绂佹鍒犻櫎绯荤粺鍙傛暟
+        /// </summary>
+        [ErrorCodeItemMetadata("绂佹鍒犻櫎绯荤粺鍙傛暟")]
+        D9001,
+
+        /// <summary>
+        /// 宸插瓨鍦ㄥ悓鍚嶄换鍔¤皟搴�
+        /// </summary>
+        [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶄换鍔¤皟搴�")]
+        D1100,
+
+        /// <summary>
+        /// 浠诲姟璋冨害涓嶅瓨鍦�
+        /// </summary>
+        [ErrorCodeItemMetadata("浠诲姟璋冨害涓嶅瓨鍦�")]
+        D1101,
+
+        /// <summary>
+        /// 婕旂ず鐜绂佹淇敼鏁版嵁
+        /// </summary>
+        [ErrorCodeItemMetadata("婕旂ず鐜绂佹淇敼鏁版嵁")]
+        D1200,
+
+        /// <summary>
+        /// 宸插瓨鍦ㄥ悓鍚嶆垨鍚岀鐞嗗憳鎴栧悓涓绘満绉熸埛
+        /// </summary>
+        [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶆垨鍚屼富鏈虹鎴�")]
+        D1300,
+
+        /// <summary>
+        /// 璇ヨ〃浠g爜妯℃澘宸茬粡鐢熸垚杩�
+        /// </summary>
+        [ErrorCodeItemMetadata("璇ヨ〃浠g爜妯℃澘宸茬粡鐢熸垚杩�")]
+        D1400,
+
+        /// <summary>
+        /// 璇ョ被鍨嬩笉瀛樺湪
+        /// </summary>
+        [ErrorCodeItemMetadata("璇ョ被鍨嬩笉瀛樺湪")]
+        D1501,
+
+        /// <summary>
+        /// 璇ュ瓧娈典笉瀛樺湪
+        /// </summary>
+        [ErrorCodeItemMetadata("璇ュ瓧娈典笉瀛樺湪")]
+        D1502,
+
+        /// <summary>
+        /// 璇ョ被鍨嬩笉鏄灇涓剧被鍨�
+        /// </summary>
+        [ErrorCodeItemMetadata("璇ョ被鍨嬩笉鏄灇涓剧被鍨�")]
+        D1503,
+
+        /// <summary>
+        /// 璇ュ疄浣撲笉瀛樺湪
+        /// </summary>
+        [ErrorCodeItemMetadata("璇ュ疄浣撲笉瀛樺湪")]
+        D1504,
+
+        /// <summary>
+        /// 鐖惰彍鍗曚笉瀛樺湪
+        /// </summary>
+        [ErrorCodeItemMetadata("鐖惰彍鍗曚笉瀛樺湪")]
+        D1505,
+
+        /// <summary>
+        /// 宸插瓨鍦ㄥ悓鍚嶄笟鍔″悕绉�
+        /// </summary>
+        [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶄笟鍔″悕绉�")]
+        D1600,
+
+        /// <summary>
+        /// 宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮侀」鐩�
+        /// </summary>
+        [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮侀」鐩�")]
+        xg1000,
+
+        /// <summary>
+        /// 宸插瓨鍦ㄧ浉鍚岃瘉浠跺彿鐮佷汉鍛�
+        /// </summary>
+        [ErrorCodeItemMetadata("宸插瓨鍦ㄧ浉鍚岃瘉浠跺彿鐮佷汉鍛�")]
+        xg1001,
+
+        /// <summary>
+        /// 妫�娴嬫暟鎹笉瀛樺湪
+        /// </summary>
+        [ErrorCodeItemMetadata("妫�娴嬫暟鎹笉瀛樺湪")]
+        xg1002,
+
+
+        /// <summary>
+        /// 闈炴硶鐨凟xcel鏂囦欢
+        /// </summary>
+        [ErrorCodeItemMetadata("闈炴硶鐨凟xcel鏂囦欢")]
+        Excel001,
+
+
+        /// <summary>
+        /// 鏃犳硶鎵惧埌鐩爣鏂囦欢
+        /// </summary>
+        [ErrorCodeItemMetadata("鏃犳硶鎵惧埌鐩爣鏂囦欢")]
+        Excel002,
+
+        /// <summary>
+        /// Sheet鍚嶇О涓嶅尮閰�
+        /// </summary>
+        [ErrorCodeItemMetadata("Sheet鍚嶇О涓嶅尮閰�")]
+        Excel003,
+
+        /// <summary>
+        /// 鎵句笉鍒扮殑鏋氫妇鎻忚堪
+        /// </summary>
+        [ErrorCodeItemMetadata("鎵句笉鍒扮殑鏋氫妇鎻忚堪")]
+        Enum001,
+
+        /// <summary>
+        /// 鍞竴閿睘鎬ч泦涓虹┖
+        /// </summary>
+        [ErrorCodeItemMetadata("鍞竴閿睘鎬ч泦涓虹┖")]
+        Key001,
+        /// <summary>
+        /// 鏁版嵁宸插瓨鍦�
+        /// </summary>
+        [ErrorCodeItemMetadata("鏁版嵁宸插瓨鍦�")]
+        E0001,
+        /// <summary>
+        /// 宸插瓨鍦ㄧ浉鍚屼俊鎭暟鎹�
+        /// </summary>
+        [ErrorCodeItemMetadata("宸插瓨鍦ㄧ浉鍚屼俊鎭暟鎹�")]
+        E0002,
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FieldType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FieldType.cs
new file mode 100644
index 0000000..b12c6c3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FieldType.cs
@@ -0,0 +1,35 @@
+锘縰sing System.ComponentModel;
+ 
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鏂囦欢瀛樺偍瀛楁
+    /// </summary>
+    [Description("瀛楁绫诲瀷")]
+    public enum FieldType
+    {
+        /// <summary>
+        /// 鏍囬噺绫诲瀷
+        /// </summary>
+        [Description("鏍囬噺绫诲瀷")]
+        SCALAR = 1,
+
+        /// <summary>
+        /// 瀵艰埅绫诲瀷
+        /// </summary>
+        [Description("瀵艰埅绫诲瀷")]
+        NAVIGATION = 2,
+
+        /// <summary>
+        /// 澶栭敭绫诲瀷
+        /// </summary>
+        [Description("澶栭敭绫诲瀷")]
+        FK = 3,
+
+        /// <summary>
+        /// 鎸囩ず绫诲瀷
+        /// </summary>
+        [Description("鎸囩ず绫诲瀷")]
+        NO_MAP = 4
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FileLocation.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FileLocation.cs
new file mode 100644
index 0000000..d9d0c6b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FileLocation.cs
@@ -0,0 +1,34 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鏂囦欢瀛樺偍浣嶇疆
+    /// </summary>
+    public enum FileLocation
+    {
+        /// <summary>
+        /// 闃块噷浜�
+        /// </summary>
+        [Description("闃块噷浜�")]
+        ALIYUN = 1,
+
+        /// <summary>
+        /// 鑵捐浜�
+        /// </summary>
+        [Description("鑵捐浜�")]
+        TENCENT = 2,
+
+        /// <summary>
+        /// minio鏈嶅姟鍣�
+        /// </summary>
+        [Description("minio鏈嶅姟鍣�")]
+        MINIO = 3,
+
+        /// <summary>
+        /// 鏈湴
+        /// </summary>
+        [Description("鏈湴")]
+        LOCAL = 4
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FormDesignType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FormDesignType.cs
new file mode 100644
index 0000000..126c61f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FormDesignType.cs
@@ -0,0 +1,16 @@
+锘縰sing System.ComponentModel;
+
+namespace Furion.Extras.Admin.NET
+{
+    /// <summary>
+    /// 鍔ㄦ�佽〃鍗曠被鍨�
+    /// </summary>
+    public enum FormDesignType
+    {
+        /// <summary>
+        /// vue-form-design
+        /// </summary>
+        [Description("vue-form-design")]
+        VueFormDesign = 1
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Gender.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Gender.cs
new file mode 100644
index 0000000..134f2b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Gender.cs
@@ -0,0 +1,52 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鎬у埆
+    /// </summary>
+    public enum Gender
+    {
+        /// <summary>
+        /// 鐢�
+        /// </summary>
+        [Description("鐢�")]
+        MALE = 1,
+
+        /// <summary>
+        /// 濂�
+        /// </summary>
+        [Description("濂�")]
+        FEMALE = 2,
+
+        /// <summary>
+        /// 鏈煡
+        /// </summary>
+        [Description("鏈煡")]
+        UNKNOWN = 3
+    }
+    /// <summary>
+    /// 鎬у埆
+    /// </summary>
+    public enum GenderChinese
+    {
+        /// <summary>
+        /// 鐢�
+        /// </summary>
+        [Description("鐢�")]
+        鐢� = 1,
+
+        /// <summary>
+        /// 濂�
+        /// </summary>
+        [Description("濂�")]
+        濂� = 2,
+
+        /// <summary>
+        /// 鏈煡
+        /// </summary>
+        [Description("鏈煡")]
+        鏈煡 = 3
+    }
+    
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpMethod.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpMethod.cs
new file mode 100644
index 0000000..5a572b8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpMethod.cs
@@ -0,0 +1,64 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 璇锋眰鏂瑰紡绫诲瀷
+    /// </summary>
+    public enum HttpMethod
+    {
+        /// <summary>
+        /// GET
+        /// </summary>
+        [Description("GET")]
+        GET = 0,
+
+        /// <summary>
+        /// POST
+        /// </summary>
+        [Description("POST")]
+        POST = 1,
+
+        /// <summary>
+        /// PUT
+        /// </summary>
+        [Description("PUT")]
+        PUT = 2,
+
+        /// <summary>
+        /// DELETE
+        /// </summary>
+        [Description("DELETE")]
+        DELETE = 3,
+
+        /// <summary>
+        /// PATCH
+        /// </summary>
+        [Description("PATCH")]
+        PATCH = 4,
+
+        /// <summary>
+        /// HEAD
+        /// </summary>
+        [Description("HEAD")]
+        HEAD = 5,
+
+        /// <summary>
+        /// CONNECT
+        /// </summary>
+        [Description("CONNECT")]
+        CONNECT = 6,
+
+        /// <summary>
+        /// TRACE
+        /// </summary>
+        [Description("TRACE")]
+        TRACE = 7,
+
+        /// <summary>
+        /// OPTIONS
+        /// </summary>
+        [Description("OPTIONS")]
+        OPTIONS = 8
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpStatusCode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpStatusCode.cs
new file mode 100644
index 0000000..0fc6384
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpStatusCode.cs
@@ -0,0 +1,252 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// HTTP鐘舵�佺爜
+    /// </summary>
+    public enum HttpStatusCode
+    {
+        /// <summary>
+        /// 瀹㈡埛绔彲鑳界户缁叾璇锋眰
+        /// </summary>
+        [Description("缁х画")]
+        Continue = 100,
+
+        /// <summary>
+        /// 姝e湪鏇存敼鍗忚鐗堟湰鎴栧崗璁�
+        /// </summary>
+        [Description("浜ゆ崲鍗忚")]
+        SwitchingProtocols = 101,
+
+        /// <summary>
+        /// 璇锋眰鎴愬姛锛屼笖璇锋眰鐨勪俊鎭寘鍚湪鍝嶅簲涓�
+        /// </summary>
+        [Description("OK")]
+        OK = 200,
+
+        /// <summary>
+        /// 璇锋眰瀵艰嚧鍦ㄥ搷搴旇鍙戦�佸墠鍒涘缓鏂拌祫婧�
+        /// </summary>
+        [Description("宸插垱寤�")]
+        Created = 201,
+
+        /// <summary>
+        /// 璇锋眰宸茶鎺ュ彈鍋氳繘涓�姝ュ鐞�
+        /// </summary>
+        [Description("鎺ユ敹")]
+        Accepted = 202,
+
+        /// <summary>
+        /// 杩斿洖鐨勫厓淇℃伅鏉ヨ嚜缂撳瓨鍓湰鑰屼笉鏄師濮嬫湇鍔″櫒锛屽洜姝ゅ彲鑳戒笉姝g‘
+        /// </summary>
+        [Description("闈炶璇佷俊鎭�")]
+        NonAuthoritativeInformation = 203,
+
+        /// <summary>
+        /// 宸叉垚鍔熷鐞嗚姹傚苟涓斿搷搴斿凡琚瀹氫负鏃犲唴瀹�
+        /// </summary>
+        [Description("鏃犲唴瀹�")]
+        NoContent = 204,
+
+        /// <summary>
+        /// 瀹㈡埛绔簲閲嶇疆锛堟垨閲嶆柊鍔犺浇锛夊綋鍓嶈祫婧�
+        /// </summary>
+        [Description("閲嶇疆鍐呭")]
+        ResetContent = 205,
+
+        /// <summary>
+        /// 鍝嶅簲鏄寘鎷瓧鑺傝寖鍥寸殑 GET璇锋眰鎵�璇锋眰鐨勯儴鍒嗗搷搴�
+        /// </summary>
+        [Description("閮ㄥ垎鍐呭")]
+        PartialContent = 206,
+
+        /// <summary>
+        /// 璇锋眰鐨勪俊鎭湁澶氱琛ㄧず褰㈠紡锛岄粯璁ゆ搷浣滄槸灏嗘鐘舵�佽涓洪噸瀹氬悜
+        /// </summary>
+        [Description("澶氳矾閫夋嫨")]
+        MultipleChoices = 300,
+
+        /// <summary>
+        /// 璇锋眰鐨勪俊鎭凡绉诲埌 Location澶翠腑鎸囧畾鐨� URI 澶�
+        /// </summary>
+        [Description("姘镐箙杞Щ")]
+        MovedPermanently = 301,
+
+        /// <summary>
+        /// 璇锋眰鐨勪俊鎭綅浜� Location 澶翠腑鎸囧畾鐨� URI 澶�
+        /// </summary>
+        [Description("鏆傛椂杞Щ")]
+        Found = 302,
+
+        /// <summary>
+        /// 灏嗗鎴风鑷姩閲嶅畾鍚戝埌 Location 澶翠腑鎸囧畾鐨� URI
+        /// </summary>
+        [Description("鍙傝鍏跺畠")]
+        SeeOther = 303,
+
+        /// <summary>
+        /// 瀹㈡埛绔殑缂撳瓨鍓湰鏄渶鏂扮殑
+        /// </summary>
+        [Description("鏈慨鏀�")]
+        NotModified = 304,
+
+        /// <summary>
+        /// 璇锋眰搴斾娇鐢ㄤ綅浜� Location 澶翠腑鎸囧畾鐨� URI 鐨勪唬鐞嗘湇鍔″櫒
+        /// </summary>
+        [Description("浣跨敤浠g悊")]
+        UseProxy = 305,
+
+        /// <summary>
+        /// 鏈嶅姟鍣ㄦ湭鑳借瘑鍒姹�
+        /// </summary>
+        [Description("閿欒璇锋眰")]
+        BadRequest = 400,
+
+        /// <summary>
+        /// 璇锋眰鐨勮祫婧愯姹傝韩浠介獙璇�
+        /// </summary>
+        [Description("鏈璇�")]
+        Unauthorized = 401,
+
+        /// <summary>
+        /// 闇�瑕佷粯璐�
+        /// </summary>
+        [Description("闇�瑕佷粯璐�")]
+        PaymentRequired = 402,
+
+        /// <summary>
+        /// 鏈嶅姟鍣ㄦ嫆缁濇弧瓒宠姹�
+        /// </summary>
+        [Description("绂佹")]
+        Forbidden = 403,
+
+        /// <summary>
+        /// 璇锋眰鐨勮祫婧愪笉鍦ㄦ湇鍔″櫒涓�
+        /// </summary>
+        [Description("鏈壘鍒�")]
+        NotFound = 404,
+
+        /// <summary>
+        /// 璇锋眰鐨勮祫婧愪笂涓嶅厑璁歌姹傛柟娉曪紙POST鎴� GET锛�
+        /// </summary>
+        [Description("璇锋眰鏂规硶涓嶅厑璁�")]
+        MethodNotAllowed = 405,
+
+        /// <summary>
+        /// 瀹㈡埛绔凡鐢� Accept 澶存寚绀哄皢涓嶆帴鍙楄祫婧愮殑浠讳綍鍙敤琛ㄧず褰㈠紡
+        /// </summary>
+        [Description("涓嶆帴鍙�")]
+        NotAcceptable = 406,
+
+        /// <summary>
+        /// 璇锋眰鐨勪唬鐞嗚姹傝韩浠介獙璇�
+        /// Proxy-authenticate 澶村寘鍚浣曟墽琛岃韩浠介獙璇佺殑璇︾粏淇℃伅
+        /// </summary>
+        [Description("闇�瑕佷唬鐞嗚璇�")]
+        ProxyAuthenticationRequired = 407,
+
+        /// <summary>
+        /// 瀹㈡埛绔病鏈夊湪鏈嶅姟鍣ㄦ湡鏈涜姹傜殑鏃堕棿鍐呭彂閫佽姹�
+        /// </summary>
+        [Description("璇锋眰瓒呮椂")]
+        RequestTimeout = 408,
+
+        /// <summary>
+        /// 鐢变簬鏈嶅姟鍣ㄤ笂鐨勫啿绐佽�屾湭鑳芥墽琛岃姹�
+        /// </summary>
+        [Description("鍐茬獊")]
+        Conflict = 409,
+
+        /// <summary>
+        /// 璇锋眰鐨勮祫婧愪笉鍐嶅彲鐢�
+        /// </summary>
+        [Description("澶辫触")]
+        Gone = 410,
+
+        /// <summary>
+        /// 缂哄皯蹇呴渶鐨� Content-length
+        /// </summary>
+        [Description("缂哄皯Content-length澶�")]
+        LengthRequired = 411,
+
+        /// <summary>
+        /// 涓烘璇锋眰璁剧疆鐨勬潯浠跺け璐ワ紝涓旀棤娉曟墽琛屾璇锋眰
+        /// 鏉′欢鏄敤鏉′欢璇锋眰鏍囧ご锛堝 If-Match銆両f-None-Match 鎴� If-Unmodified-Since锛夎缃殑銆�
+        /// </summary>
+        [Description("鏉′欢澶辫触")]
+        PreconditionFailed = 412,
+
+        /// <summary>
+        /// 璇锋眰澶ぇ锛屾湇鍔″櫒鏃犳硶澶勭悊
+        /// </summary>
+        [Description("璇锋眰瀹炰綋澶ぇ")]
+        RequestEntityTooLarge = 413,
+
+        /// <summary>
+        /// URI 澶暱
+        /// </summary>
+        [Description("璇锋眰URI澶暱")]
+        RequestUriTooLong = 414,
+
+        /// <summary>
+        /// 璇锋眰鏄笉鏀寔鐨勭被鍨�
+        /// </summary>
+        [Description("涓嶆敮鎸佺殑濯掍綋绫诲瀷")]
+        UnsupportedMediaType = 415,
+
+        /// <summary>
+        /// 鏃犳硶杩斿洖浠庤祫婧愯姹傜殑鏁版嵁鑼冨洿锛屽洜涓鸿寖鍥寸殑寮�澶村湪璧勬簮鐨勫紑澶翠箣鍓嶏紝鎴栧洜涓鸿寖鍥寸殑缁撳熬鍦ㄨ祫婧愮殑缁撳熬涔嬪悗
+        /// </summary>
+        [Description("鏁版嵁鑼冨洿涓嶅尮閰�")]
+        RequestedRangeNotSatisfiable = 416,
+
+        /// <summary>
+        /// 鏈嶅姟鍣ㄦ湭鑳界鍚圗xpect澶翠腑缁欏畾鐨勯鏈熷��
+        /// </summary>
+        [Description("鏈嶅姟鍣ㄤ笌Expect澶翠笉鍖归厤")]
+        ExpectationFailed = 417,
+
+        /// <summary>
+        /// 鏈嶅姟鍣ㄦ嫆缁濆鐞嗗鎴风浣跨敤褰撳墠鍗忚鍙戦�佺殑璇锋眰锛屼絾鏄彲浠ユ帴鍙楀叾浣跨敤鍗囩骇鍚庣殑鍗忚鍙戦�佺殑璇锋眰
+        /// </summary>
+        [Description("褰撳墠鍗忚涓嶅彈鏀寔")]
+        UpgradeRequired = 426,
+
+        /// <summary>
+        /// 鏈嶅姟鍣ㄤ笂鍙戠敓浜嗕竴鑸敊璇�
+        /// </summary>
+        [Description("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇�")]
+        InternalServerError = 500,
+
+        /// <summary>
+        /// 鏈嶅姟鍣ㄤ笉鏀寔璇锋眰鐨勫嚱鏁�
+        /// </summary>
+        [Description("鏈疄鐜�")]
+        NotImplemented = 501,
+
+        /// <summary>
+        /// 涓棿浠g悊鏈嶅姟鍣ㄤ粠鍙︿竴浠g悊鎴栧師濮嬫湇鍔″櫒鎺ユ敹鍒伴敊璇搷搴�
+        /// </summary>
+        [Description("缃戝叧澶辫触")]
+        BadGateway = 502,
+
+        /// <summary>
+        /// 鏈嶅姟鍣ㄦ殏鏃朵笉鍙敤锛岄�氬父鏄敱浜庤繃澶氬姞杞芥垨缁存姢
+        /// </summary>
+        [Description("鏈嶅姟鍣ㄧ淮鎶�")]
+        ServiceUnavailable = 503,
+
+        /// <summary>
+        /// 涓棿浠g悊鏈嶅姟鍣ㄥ湪绛夊緟鏉ヨ嚜鍙︿竴涓唬鐞嗘垨鍘熷鏈嶅姟鍣ㄧ殑鍝嶅簲鏃跺凡瓒呮椂
+        /// </summary>
+        [Description("缃戝叧瓒呮椂")]
+        GatewayTimeout = 504,
+
+        /// <summary>
+        /// 鏈嶅姟鍣ㄤ笉鏀寔璇锋眰鐨凥TTP鐗堟湰
+        /// </summary>
+        [Description("HTTP鐗堟湰涓嶆敮鎸�")]
+        HttpVersionNotSupported = 505
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ImportExcelType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ImportExcelType.cs
new file mode 100644
index 0000000..eedd659
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ImportExcelType.cs
@@ -0,0 +1,23 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瀵煎叆Excel鏂瑰紡
+    /// </summary>
+    [Description("瀵煎叆Excel鏂瑰紡")]
+    public enum ImportExcelType
+    {
+        /// <summary>
+        /// 浠呮柊澧�
+        /// </summary>
+        [Description("浠呮柊澧�")]
+        ADD_ONLY = 1,
+
+        /// <summary>
+        /// 鏂板骞舵洿鏂�
+        /// </summary>
+        [Description("鏂板骞舵洿鏂�")]
+        ADD_AND_UPDATE = 2
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/InventoryRuleType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/InventoryRuleType.cs
new file mode 100644
index 0000000..92b8272
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/InventoryRuleType.cs
@@ -0,0 +1,94 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鐩樼偣绫诲瀷
+    /// </summary>
+    public enum RuleType
+    {
+        /// <summary>
+        /// 鍔ㄧ洏
+        /// </summary>
+        [Description("鍔ㄧ洏")]
+        DONGPANG = 1,
+
+        /// <summary>
+        /// 闈欑洏
+        /// </summary>
+        [Description("闈欑洏")]
+        JINGPANG = 2
+    }
+
+    /// <summary>
+    /// 鐩樼偣妯″紡
+    /// </summary>
+    public enum RuleMode
+    {
+        /// <summary>
+        /// 闅忔満
+        /// </summary>
+        [Description("闅忔満")]
+        SUIJI = 1,
+
+        /// <summary>
+        /// 鎶芥牱
+        /// </summary>
+        [Description("鎶芥牱")]
+        CHOUYANG = 2,
+
+        /// <summary>
+        /// 鍏ㄧ洏
+        /// </summary>
+        [Description("鍏ㄧ洏")]
+        QUANPANG = 3
+    }
+
+    /// <summary>
+    /// 鐩樼偣鍛ㄦ湡
+    /// </summary>
+    public enum RuleCycle
+    {
+        /// <summary>
+        /// 鏈堝害
+        /// </summary>
+        [Description("鏈堝害")]
+        YUEDU = 1,
+
+        /// <summary>
+        /// 瀛e害
+        /// </summary>
+        [Description("瀛e害")]
+        JIDU = 2,
+
+        /// <summary>
+        /// 骞村害
+        /// </summary>
+        [Description("骞村害")]
+        NIANGDU = 3
+    }
+
+    /// <summary>
+    /// 瀹℃壒鐘舵��
+    /// </summary>
+    public enum ExamineStateEnum
+    {
+        /// <summary>
+        /// 鏈鎵�
+        /// </summary>
+        [Description("鏈鎵�")]
+        WEISHENPI = 1,
+
+        /// <summary>
+        /// 閫氳繃
+        /// </summary>
+        [Description("閫氳繃")]
+        TONGGUO = 2,
+
+        /// <summary>
+        /// 椹冲洖
+        /// </summary>
+        [Description("椹冲洖")]
+        BOHUI = 3
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/IssueState.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/IssueState.cs
new file mode 100644
index 0000000..008c27d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/IssueState.cs
@@ -0,0 +1,34 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绛炬牳鐘舵��
+    /// </summary>
+    public enum IssueState
+    {
+        /// <summary>
+        /// 涓嶄娇鐢�
+        /// </summary>
+        [Description("涓嶄娇鐢�")]
+        Unused = 1,
+
+        /// <summary>
+        /// 鏈鏍�
+        /// </summary>
+        [Description("鏈鏍�")]
+        Unfrozen = 2,
+
+        /// <summary>
+        /// 绛炬牳涓�
+        /// </summary>
+        [Description("绛炬牳涓�")]
+        Pending = 3,
+
+        /// <summary>
+        /// 宸茬鏍�
+        /// </summary>
+        [Description("宸茬鏍�")]
+        Active = 4
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesAisle.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesAisle.cs
new file mode 100644
index 0000000..a6db976
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesAisle.cs
@@ -0,0 +1,46 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 缁勮杞﹂棿鎻愬崌鏈烘灇涓�
+    /// </summary>
+    public enum LesAisle
+    {
+        /// <summary>
+        /// 涓�鍙锋彁鍗囨満
+        /// </summary>
+        [Description("涓�鍙�")]
+        YI = 1,
+
+        /// <summary>
+        /// 浜屽彿鎻愬崌鏈�
+        /// </summary>
+        [Description("浜屽彿")]
+        ER = 2,
+
+        /// <summary>
+        /// 涓夊彿鎻愬崌鏈�
+        /// </summary>
+        [Description("涓夊彿")]
+        SAN = 3,
+
+        /// <summary>
+        /// 鍥涘彿鎻愬崌鏈�
+        /// </summary>
+        [Description("鍥涘彿")]
+        SI = 4,
+
+        /// <summary>
+        /// 浜斿彿鎻愬崌鏈�
+        /// </summary>
+        [Description("浜斿彿")]
+        WU = 5,
+
+        /// <summary>
+        /// 鍏彿鎻愬崌鏈�
+        /// </summary>
+        [Description("鍏彿")]
+        LIU = 6,
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesEntranceType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesEntranceType.cs
new file mode 100644
index 0000000..e4c1920
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesEntranceType.cs
@@ -0,0 +1,22 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 搴撳彛绫诲瀷
+    /// </summary>
+    public enum LesEntranceType
+    {
+        /// <summary>
+        /// 鍏ュ簱鍙�
+        /// </summary>
+        [Description("鍏ュ簱鍙�")]
+        RUKU = 1,
+
+        /// <summary>
+        /// 鍑哄簱鍙�
+        /// </summary>
+        [Description("鍑哄簱鍙�")]
+        CHUKU = 2
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesOrderMode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesOrderMode.cs
new file mode 100644
index 0000000..e98f701
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesOrderMode.cs
@@ -0,0 +1,23 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍗曟嵁妯″紡
+    /// </summary>
+   
+    public enum LesOrderMode
+    {
+        /// <summary>
+        /// 鏍规嵁鐗╂枡
+        /// </summary>
+        [Description("鏍规嵁鐗╂枡")]
+        GENJUWULIAO = 1,
+
+        /// <summary>
+        /// 鏍规嵁搴撲綅
+        /// </summary>
+        [Description("鏍规嵁搴撲綅")]
+        GENJUKUWEI = 2,
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesPackState.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesPackState.cs
new file mode 100644
index 0000000..a1a9723
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesPackState.cs
@@ -0,0 +1,27 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鎵撳寘鐘舵��
+    /// </summary>
+    public enum LesPackState
+    {
+        /// <summary>
+        /// 鍋滅敤
+        /// </summary>
+        [Description("鍋滅敤")]
+        TINGYONG = 0,
+        /// <summary>
+        /// 鏈嚭搴�
+        /// </summary>
+        [Description("鏈嚭搴�")]
+        WEICHUKU = 1,
+
+        /// <summary>
+        /// 杞Щ搴撲腑
+        /// </summary>
+        [Description("杞Щ搴撲腑")]
+        ZHUANYIKU = 2
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesTakeMaterialsStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesTakeMaterialsStatus.cs
new file mode 100644
index 0000000..7e022cc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesTakeMaterialsStatus.cs
@@ -0,0 +1,28 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍙枡鍗曠姸鎬�
+    /// </summary>
+    public enum LesTakeMaterialsStatus
+    {
+        /// <summary>
+        /// 鏈紑濮�
+        /// </summary>
+        [Description("鏈紑濮�")]
+        WEIKAISHI = 0,
+
+        /// <summary>
+        /// 杩愰�佷腑
+        /// </summary>
+        [Description("杩愰�佷腑")]
+        YUNSONGZHONG = 1,
+
+        /// <summary>
+        /// 瀹屾垚
+        /// </summary>
+        [Description("瀹屾垚")]
+        WANCHENG = 2
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkShopType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkShopType.cs
new file mode 100644
index 0000000..268dadb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkShopType.cs
@@ -0,0 +1,48 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鎵�灞炶溅闂存灇涓� /缁勮杞﹂棿
+    /// </summary>
+    
+    ////鎵�灞炶溅闂� /鑳跺悎鏉胯溅闂�/钖勮啘杞﹂棿/缁勮杞﹂棿锛堣�侊級/缁勮杞﹂棿锛堟柊锛�
+    public enum LesWorkShopType
+    {
+        /// <summary>
+        /// 鍏ュ簱
+        /// </summary>
+        [Description("鍏ュ簱")]
+        FAPAOCHEJIAN = 1,
+
+        /// <summary>
+        /// 鍑哄簱
+        /// </summary>
+        [Description("鍑哄簱")]
+        JIAOHEBANCHEJIAN = 2,
+
+        /// <summary>
+        /// 鑳跺悎鏉胯溅闂�
+        /// </summary>
+        [Description("鑳跺悎鏉胯溅闂�")]
+        JHBCJ = 3,
+
+        /// <summary>
+        /// RSB杞﹂棿
+        /// </summary>
+        [Description("RSB杞﹂棿")]
+        RSBCJ = 4,
+
+        /// <summary>
+        /// 鍘熸枡搴撹溅闂�
+        /// </summary>
+        [Description("鍘熸枡搴撹溅闂�")]
+        YLKCJ = 5,
+
+        /// <summary>
+        /// 閫氱敤
+        /// </summary>
+        [Description("閫氱敤")]
+        TY = 6,
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkshopSection.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkshopSection.cs
new file mode 100644
index 0000000..b1e6487
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkshopSection.cs
@@ -0,0 +1,28 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 宸ユ
+    /// </summary>
+    public enum LesWorkshopSection
+    {
+        /// <summary>
+        /// 鍒囧壊
+        /// </summary>
+        [Description("鍒囧壊")]
+        QIEGE = 1,
+
+        /// <summary>
+        /// 鍘嬪悎
+        /// </summary>
+        [Description("鍘嬪悎")]
+        YAHE = 2,
+
+        /// <summary>
+        /// CNC
+        /// </summary>
+        [Description("CNC")]
+        CNC = 3
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/LoginType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/LoginType.cs
new file mode 100644
index 0000000..6f0b59f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/LoginType.cs
@@ -0,0 +1,40 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鐧婚檰绫诲瀷
+    /// </summary>
+    public enum LoginType
+    {
+        /// <summary>
+        /// 鐧婚檰
+        /// </summary>
+        [Description("鐧婚檰")]
+        LOGIN = 0,
+
+        /// <summary>
+        /// 鐧诲嚭
+        /// </summary>
+        [Description("鐧诲嚭")]
+        LOGOUT = 1,
+
+        /// <summary>
+        /// 娉ㄥ唽
+        /// </summary>
+        [Description("娉ㄥ唽")]
+        REGISTER = 2,
+
+        /// <summary>
+        /// 鏀瑰瘑
+        /// </summary>
+        [Description("鏀瑰瘑")]
+        CHANGEPASSWORD = 3,
+
+        /// <summary>
+        /// 涓夋柟鎺堟潈鐧婚檰
+        /// </summary>
+        [Description("鎺堟潈鐧婚檰")]
+        AUTHORIZEDLOGIN = 4
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuOpenType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuOpenType.cs
new file mode 100644
index 0000000..5533fb3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuOpenType.cs
@@ -0,0 +1,34 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺鑿滃崟绫诲瀷
+    /// </summary>
+    public enum MenuOpenType
+    {
+        /// <summary>
+        /// 鏃�
+        /// </summary>
+        [Description("鏃�")]
+        NONE = 0,
+
+        /// <summary>
+        /// 缁勪欢
+        /// </summary>
+        [Description("缁勪欢")]
+        COMPONENT = 1,
+
+        /// <summary>
+        /// 鍐呴摼
+        /// </summary>
+        [Description("鍐呴摼")]
+        INNER = 2,
+
+        /// <summary>
+        /// 澶栭摼
+        /// </summary>
+        [Description("澶栭摼")]
+        OUTER = 3
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuType.cs
new file mode 100644
index 0000000..b6c1cb6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuType.cs
@@ -0,0 +1,28 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺鑿滃崟绫诲瀷
+    /// </summary>
+    public enum MenuType
+    {
+        /// <summary>
+        /// 鐩綍
+        /// </summary>
+        [Description("鐩綍")]
+        DIR = 0,
+
+        /// <summary>
+        /// 鑿滃崟
+        /// </summary>
+        [Description("鑿滃崟")]
+        MENU = 1,
+
+        /// <summary>
+        /// 鎸夐挳
+        /// </summary>
+        [Description("鎸夐挳")]
+        BTN = 2
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuWeight.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuWeight.cs
new file mode 100644
index 0000000..9baeb33
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuWeight.cs
@@ -0,0 +1,22 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鑿滃崟鏉冮噸
+    /// </summary>
+    public enum MenuWeight
+    {
+        /// <summary>
+        /// 绯荤粺鏉冮噸
+        /// </summary>
+        [Description("绯荤粺鏉冮噸")]
+        SUPER_ADMIN_WEIGHT = 1,
+
+        /// <summary>
+        /// 涓氬姟鏉冮噸
+        /// </summary>
+        [Description("涓氬姟鏉冮噸")]
+        DEFAULT_WEIGHT = 2
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MessageType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MessageType.cs
new file mode 100644
index 0000000..4ccfd48
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MessageType.cs
@@ -0,0 +1,31 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    public enum MessageType
+    {
+        /// <summary>
+        /// 鏅�氫俊鎭�
+        /// </summary>
+        [Description("娑堟伅")]
+        Info = 0,
+
+        /// <summary>
+        /// 鎴愬姛鎻愮ず
+        /// </summary>
+        [Description("鎴愬姛")]
+        Success = 1,
+
+        /// <summary>
+        /// 璀﹀憡鎻愮ず
+        /// </summary>
+        [Description("璀﹀憡")]
+        Warning = 2,
+
+        /// <summary>
+        /// 閿欒鎻愮ず
+        /// </summary>
+        [Description("閿欒")]
+        Error = 3
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeStatus.cs
new file mode 100644
index 0000000..f6f8b73
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeStatus.cs
@@ -0,0 +1,34 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 閫氱煡鍏憡鐘舵��
+    /// </summary>
+    public enum NoticeStatus
+    {
+        /// <summary>
+        /// 鑽夌
+        /// </summary>
+        [Description("鑽夌")]
+        DRAFT = 0,
+
+        /// <summary>
+        /// 鍙戝竷
+        /// </summary>
+        [Description("鍙戝竷")]
+        PUBLIC = 1,
+
+        /// <summary>
+        /// 鎾ゅ洖
+        /// </summary>
+        [Description("鎾ゅ洖")]
+        CANCEL = 2,
+
+        /// <summary>
+        /// 鍒犻櫎
+        /// </summary>
+        [Description("鍒犻櫎")]
+        DELETED = 3
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeType.cs
new file mode 100644
index 0000000..4057a4b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeType.cs
@@ -0,0 +1,19 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    public enum NoticeType
+    {
+        /// <summary>
+        /// 閫氱煡
+        /// </summary>
+        [Description("閫氱煡")]
+        NOTICE = 1,
+
+        /// <summary>
+        /// 鍏憡
+        /// </summary>
+        [Description("鍏憡")]
+        ANNOUNCEMENT = 2,
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeUserStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeUserStatus.cs
new file mode 100644
index 0000000..906cf06
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeUserStatus.cs
@@ -0,0 +1,28 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 閫氱煡鍏憡鐢ㄦ埛鐘舵��
+    /// </summary>
+    public enum NoticeUserStatus
+    {
+        /// <summary>
+        /// 鏈
+        /// </summary>
+        [Description("鏈")]
+        UNREAD = 0,
+
+        /// <summary>
+        /// 宸茶
+        /// </summary>
+        [Description("宸茶")]
+        READ = 1,
+
+        /// <summary>
+        /// 鏆備笉閫氱煡
+        /// </summary>
+        [Description("鏆備笉閫氱煡")]
+        NONOTICE = 3
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/QueryTypeEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/QueryTypeEnum.cs
new file mode 100644
index 0000000..c494436
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/QueryTypeEnum.cs
@@ -0,0 +1,82 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鏌ヨ绫诲瀷鏋氫妇
+    /// </summary>
+    public enum QueryTypeEnum
+    {
+        /// <summary>
+        /// 绛変簬
+        /// </summary>
+        [Description("绛変簬")]
+        Equals = 0,
+
+        /// <summary>
+        /// 涓嶇瓑浜�
+        /// </summary>
+        [Description("涓嶇瓑浜�")]
+        NotEquals = 1,
+
+        /// <summary>
+        /// 澶т簬
+        /// </summary>
+        [Description("澶т簬")]
+        GreaterThan = 2,
+
+        /// <summary>
+        /// 澶т簬绛変簬
+        /// </summary>
+        [Description("澶т簬绛変簬")]
+        GreaterThanOrEquals = 3,
+
+        /// <summary>
+        /// 灏忎簬
+        /// </summary>
+        [Description("灏忎簬")]
+        LessThan = 4,
+
+        /// <summary>
+        /// 灏忎簬绛変簬
+        /// </summary>
+        [Description("灏忎簬绛変簬")]
+        LessThanOrEquals = 5,
+
+        /// <summary>
+        /// 鍦ㄥ垪琛ㄤ腑
+        /// </summary>
+        [Description("鍦ㄥ垪琛ㄤ腑")]
+        StdIn = 6,
+
+        /// <summary>
+        /// 涓嶅湪鍒楄〃涓�
+        /// </summary>
+        [Description("涓嶅湪鍒楄〃涓�")]
+        StdNotIn = 7,
+
+        /// <summary>
+        /// 鍖呭惈
+        /// </summary>
+        [Description("鍖呭惈")]
+        Contains = 8,
+
+        /// <summary>
+        /// 涓嶅寘鍚�
+        /// </summary>
+        [Description("涓嶅寘鍚�")]
+        NotContains = 9,
+
+        /// <summary>
+        /// 澶撮儴鍖呭惈
+        /// </summary>
+        [Description("澶撮儴鍖呭惈")]
+        StartsWith = 10,
+
+        /// <summary>
+        /// 灏鹃儴鍖呭惈
+        /// </summary>
+        [Description("灏鹃儴鍖呭惈")]
+        EndsWith = 11
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RequestTypeEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RequestTypeEnum.cs
new file mode 100644
index 0000000..d106452
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RequestTypeEnum.cs
@@ -0,0 +1,33 @@
+锘縩amespace Admin.NET.Core
+{
+    /// <summary>
+    /// http璇锋眰绫诲瀷
+    /// </summary>
+    public enum RequestTypeEnum
+    {
+        /// <summary>
+        /// 鎵ц鍐呴儴鏂规硶
+        /// </summary>
+        Run = 0,
+
+        /// <summary>
+        /// GET璇锋眰
+        /// </summary>
+        Get = 1,
+
+        /// <summary>
+        /// POST璇锋眰
+        /// </summary>
+        Post = 2,
+
+        /// <summary>
+        /// PUT璇锋眰
+        /// </summary>
+        Put = 3,
+
+        /// <summary>
+        /// DELETE璇锋眰
+        /// </summary>
+        Delete = 4
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RoleTypeEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RoleTypeEnum.cs
new file mode 100644
index 0000000..214fa9f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RoleTypeEnum.cs
@@ -0,0 +1,28 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瑙掕壊绫诲瀷
+    /// </summary>
+    public enum RoleTypeEnum
+    {
+        /// <summary>
+        /// 闆嗗洟瑙掕壊
+        /// </summary>
+        [Description("闆嗗洟瑙掕壊")]
+        GROUP = 1,
+
+        /// <summary>
+        /// 鍔犵洘鍟嗚鑹�
+        /// </summary>
+        [Description("鍔犵洘鍟嗚鑹�")]
+        JOIN = 2,
+
+        /// <summary>
+        /// 闂ㄥ簵瑙掕壊
+        /// </summary>
+        [Description("闂ㄥ簵瑙掕壊")]
+        STORE = 3
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/BlankingProductionLineEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/BlankingProductionLineEnum.cs
new file mode 100644
index 0000000..1e88415
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/BlankingProductionLineEnum.cs
@@ -0,0 +1,22 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 涓嬫枡浜х嚎鏋氫妇
+    /// </summary>
+    public  enum BlankingProductionLineEnum
+    {
+        /// <summary>
+        /// 鍙戞场涓�绾�
+        /// </summary>
+        [Description("鍙戞场涓�绾�")]
+        FAPAOYIXIAN = 1,
+
+        /// <summary>
+        /// 鍙戞场浜岀嚎
+        /// </summary>
+        [Description("鍙戞场浜岀嚎")]
+        FAPAOERXIAN = 2
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/DodeviceType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/DodeviceType.cs
new file mode 100644
index 0000000..7c73a37
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/DodeviceType.cs
@@ -0,0 +1,34 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 璁惧绫诲瀷
+    /// </summary>
+    public enum DodeviceType
+    {
+        /// <summary>
+        /// AGV
+        /// </summary>
+        [Description("AGV")]
+        AGV = 1,
+
+        /// <summary>
+        /// 鍫嗗灈鏈�
+        /// </summary>
+        [Description("鍫嗗灈鏈�")]
+        DUIDUOJI = 2,
+
+        /// <summary>
+        /// RGV
+        /// </summary>
+        [Description("RGV")]
+        RGV = 3,
+
+        /// <summary>
+        /// 杈撻�佺嚎
+        /// </summary>
+        [Description("SSX")]
+        SSX = 4
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDetailsStatusEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDetailsStatusEnum.cs
new file mode 100644
index 0000000..09450ec
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDetailsStatusEnum.cs
@@ -0,0 +1,34 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍗曟嵁鏄庣粏琛ㄧ姸鎬佹灇涓�
+    /// </summary>
+    public enum OrderDetailsStatusEnum
+    {
+        /// <summary>
+        /// 鏈墽琛�
+        /// </summary>
+        [Description("鏈墽琛�")]
+        WEIZHIXING = 1,
+
+        /// <summary>
+        /// 鎵ц涓�
+        /// </summary>
+        [Description("鎵ц涓�")]
+        ZHIXINGZHONG = 2,
+
+        /// <summary>
+        /// 瀹屾垚
+        /// </summary>
+        [Description("瀹屾垚")]
+        WANCHENG = 3,
+
+        /// <summary>
+        /// 寮哄埗瀹屾垚
+        /// </summary>
+        [Description("寮哄埗瀹屾垚")]
+        QIANGZHIWANCHENG = 4
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDistributeTypeEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDistributeTypeEnum.cs
new file mode 100644
index 0000000..d0556d8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDistributeTypeEnum.cs
@@ -0,0 +1,22 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍗曟嵁涓嬪彂绫诲瀷-鍏ㄨ嚜鍔紱鍗婅嚜鍔�
+    /// </summary>
+    public enum OrderDistributeTypeEnum
+    {
+        /// <summary>
+        /// 鍏ㄨ嚜鍔�
+        /// </summary>
+        [Description("鍏ㄨ嚜鍔�")]
+        QUANZIDONG = 1,
+
+        /// <summary>
+        /// 鍗婅嚜鍔�
+        /// </summary>
+        [Description("鍗婅嚜鍔�")]
+        BANZIDONG = 2
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderStatusEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderStatusEnum.cs
new file mode 100644
index 0000000..06d9182
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderStatusEnum.cs
@@ -0,0 +1,94 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍗曟嵁涓昏〃鐘舵�佹灇涓�
+    /// </summary>
+    public enum OrderStatusEnum
+    {
+        /// <summary>
+        /// 鏈笅鍙�
+        /// </summary>
+        [Description("鏈笅鍙�")]
+        WEIXIAFA = 1,
+
+        /// <summary>
+        /// 宸蹭笅鍙�
+        /// </summary>
+        [Description("宸蹭笅鍙�")]
+        YIXIAFA = 2,
+
+        /// <summary>
+        /// 瀹屾垚
+        /// </summary>
+        [Description("瀹屾垚")]
+        WANCHENG = 3,
+
+        /// <summary>
+        /// 鎾ゅ洖
+        /// </summary>
+        [Description("鎾ゅ洖")]
+        CHEHUI = 4,
+
+        /// <summary>
+        /// 鍙栨秷
+        /// </summary>
+        [Description("鍙栨秷")]
+        QUXIAO = 5
+    }
+
+    /// <summary>
+    /// 閲囪喘鍗曚富琛ㄨ鍗曠姸鎬佹灇涓�
+    /// </summary>
+    public enum PurchaseOrderStatusEnum
+    {
+        /// <summary>
+        /// 鏈紑濮�
+        /// </summary>
+        [Description("鏈紑濮�")]
+        WEIKAISHI = 1,
+
+        /// <summary>
+        /// 閮ㄥ垎鍙戣揣
+        /// </summary>
+        [Description("閮ㄥ垎鍙戣揣")]
+        BUFENFAHUO = 2,
+
+        /// <summary>
+        /// 鍏ㄩ儴鍙戣揣
+        /// </summary>
+        [Description("鍏ㄩ儴鍙戣揣")]
+        CHEHUI = 3,
+
+        /// <summary>
+        /// 瀹屾垚
+        /// </summary>
+        [Description("瀹屾垚")]
+        WANCHENG = 4
+    }
+
+    /// <summary>
+    /// 閲囪喘鏀惰揣涓昏〃璁㈠崟鐘舵�佹灇涓�
+    /// </summary>
+    public enum PurchaseReceiveOrderEnum
+    {
+        /// <summary>
+        /// 寰呮敹璐�
+        /// </summary>
+        [Description("寰呮敹璐�")]
+        DAISHOUHUO = 1,
+
+        /// <summary>
+        /// 閮ㄥ垎鏀惰揣
+        /// </summary>
+        [Description("閮ㄥ垎鏀惰揣")]
+        BUFENSHOUHUO = 2,
+
+        /// <summary>
+        /// 鏀惰揣瀹屾垚
+        /// </summary>
+        [Description("鏀惰揣瀹屾垚")]
+        SHWANCHENG = 3,
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/RuKuSourceEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/RuKuSourceEnum.cs
new file mode 100644
index 0000000..e80391e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/RuKuSourceEnum.cs
@@ -0,0 +1,26 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍏ュ簱鏉ユ簮
+    /// </summary>
+    public enum RuKuSourceEnum
+    {
+        /// <summary>
+        /// 绌烘墭
+        /// </summary>
+        [Description("绌烘墭")]
+        KONGTUO =1,
+        /// <summary>
+        /// 鐗╂枡
+        /// </summary>
+        [Description("鐗╂枡")]
+        WULIAO =2
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/SortStatusEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/SortStatusEnum.cs
new file mode 100644
index 0000000..60610dc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/SortStatusEnum.cs
@@ -0,0 +1,34 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍒嗘嫞鍗曠姸鎬�
+    /// </summary>
+    public enum SortStatusEnum
+    {
+
+        /// <summary>
+        /// 鏈垎鎷�
+        /// </summary>
+        [Description("鏈垎鎷�")]
+        WEIFENJIAN = 1,
+
+        /// <summary>
+        /// 鍒嗘嫞涓�
+        /// </summary>
+        [Description("鍒嗘嫞涓�")]
+        FENJIANZHONG = 2,
+
+        /// <summary>
+        /// 鍒嗘嫞瀹屾垚
+        /// </summary>
+        [Description("鍒嗘嫞瀹屾垚")]
+        FENJIANWANCHENG = 3,
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WarehouseEntranceEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WarehouseEntranceEnum.cs
new file mode 100644
index 0000000..947f66c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WarehouseEntranceEnum.cs
@@ -0,0 +1,22 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 搴撳彛绫诲瀷鏋氫妇
+    /// </summary>
+    public enum WarehouseEntranceEnum
+    {
+        /// <summary>
+        /// 鍏ュ簱鍙�
+        /// </summary>
+        [Description("鍏ュ簱鍙�")]
+        RUKUKOU = 1,
+
+        /// <summary>
+        /// 鍑哄簱鍙�
+        /// </summary>
+        [Description("鍑哄簱鍙�")]
+        CHUKUKOU = 2,
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsAreaEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsAreaEnum.cs
new file mode 100644
index 0000000..ea0cecc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsAreaEnum.cs
@@ -0,0 +1,99 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 搴撳尯绫诲瀷
+    /// </summary>
+    public enum AreaType
+    {
+        /// <summary>
+        /// 绔嬩綋搴�
+        /// </summary>
+        [Description("绔嬩綋搴�")]
+        LITIKU = 1,
+
+        /// <summary>
+        /// 鏅�氬簱
+        /// </summary>
+        [Description("鏅�氬簱")]
+        PUTONGK = 2,
+
+        /// <summary>
+        /// 鍏叡搴�
+        /// </summary>
+        [Description("澶栧簱")]
+        WAIKU = 3,
+
+        /// <summary>
+        /// 缂撳瓨搴�
+        /// </summary>
+        [Description("缂撳瓨搴�")]
+        HUANCUNKU = 4,
+
+        /// <summary>
+        /// AGV绔欑偣
+        /// </summary>
+        [Description("AGV绔欑偣")]
+        AGV = 5,
+        /// <summary>
+        /// 杞Щ搴�
+        /// </summary>
+        [Description("杞Щ搴�")]
+        ZHUANYIKU = 6
+    }
+
+    /// <summary>
+    /// 搴撲綅鐘舵��
+    /// </summary>
+    public enum PlaceStatus
+    {
+        /// <summary>
+        /// 绌洪棽
+        /// </summary>
+        [Description("绌洪棽")]
+        KONGXIAN = 1,
+
+        /// <summary>
+        /// 寰呭叆
+        /// </summary>
+        [Description("寰呭叆")]
+        DAIRU = 2,
+
+        /// <summary>
+        /// 瀛樿揣
+        /// </summary>
+        [Description("瀛樿揣")]
+        CUNHUO = 3,
+
+        /// <summary>
+        /// 寰呭嚭
+        /// </summary>
+        [Description("寰呭嚭")]
+        DAICHU = 4,
+    }
+
+    /// <summary>
+    /// 搴撲綅楂樺害灞炴��
+    /// </summary>
+    public enum Heightlevel
+    {
+        /// <summary>
+        /// 浣�
+        /// </summary>
+        [Description("浣�")]
+        DI = 1,
+
+        /// <summary>
+        /// 涓�
+        /// </summary>
+        [Description("涓�")]
+        ZHONG = 2,
+
+        /// <summary>
+        /// 楂�
+        /// </summary>
+        [Description("楂�")]
+        GAO = 3
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsContainerEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsContainerEnum.cs
new file mode 100644
index 0000000..359be34
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsContainerEnum.cs
@@ -0,0 +1,112 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鎵樼洏绫诲瀷
+    /// </summary>
+    public enum ContainerType
+    {
+        /// <summary>
+        /// 鍏朵粬
+        /// </summary>
+        [Description("鍏朵粬")]
+        QITA = 0,
+
+        /// <summary>
+        /// 鏈ㄨ川
+        /// </summary>
+        [Description("鏈ㄨ川")]
+        MUZHI = 1,
+
+        /// <summary>
+        /// 閲戝睘
+        /// </summary>
+        [Description("閲戝睘")]
+        JINSHU = 2,
+
+        /// <summary>
+        /// 濉戞枡
+        /// </summary>
+        [Description("濉戞枡")]
+        SULIAO = 3
+    }
+
+    /// <summary>
+    /// 鎵樼洏鐘舵��
+    /// </summary>
+    public enum ContainerStatus
+    {
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        [Description("绂佺敤")]
+        JINYONG = 0,
+
+        /// <summary>
+        /// 绌洪棽
+        /// </summary>
+        [Description("绌洪棽")]
+        KOUXIAN = 1,
+
+        /// <summary>
+        /// 缁勭洏
+        /// </summary>
+        [Description("缁勭洏")]
+        ZUPANG = 2,
+
+        /// <summary>
+        /// 搴撲綅
+        /// </summary>
+        [Description("搴撲綅")]
+        KUWEI = 3,
+
+        /// <summary>
+        /// 鍒嗘嫞
+        /// </summary>
+        [Description("鍒嗘嫞")]
+        FENJIAN =4
+    }
+
+    /// <summary>
+    /// 鎵樼洏鍒嗙被
+    /// </summary>
+    public enum ContainerCategory
+    {
+        /// <summary>
+        /// 閫氱敤
+        /// </summary>
+        [Description("閫氱敤")]
+        TY = 0,
+
+        /// <summary>
+        /// 鍗卞寲鍝�
+        /// </summary>
+        [Description("鍗卞寲鍝�")]
+        WXP = 1,
+
+        /// <summary>
+        /// 娑蹭綋
+        /// </summary>
+        [Description("娑蹭綋")]
+        YT = 2,
+
+        /// <summary>
+        /// 璐甸噸鍝�
+        /// </summary>
+        [Description("璐甸噸鍝�")]
+        GZP = 3,
+
+        /// <summary>
+        /// 姘斾綋
+        /// </summary>
+        [Description("姘斾綋")]
+        QT = 4,
+
+        /// <summary>
+        /// 浣庢俯
+        /// </summary>
+        [Description("浣庢俯")]
+        DW = 5
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsMaterialEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsMaterialEnum.cs
new file mode 100644
index 0000000..7ffd97b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsMaterialEnum.cs
@@ -0,0 +1,142 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鐗╂枡妫�楠�
+    /// </summary>
+    public enum MaterialInspection
+    {
+        /// <summary>
+        /// 鍏嶆
+        /// </summary>
+        [Description("鍏嶆")]
+        MIANJIAN = 1,
+
+        /// <summary>
+        /// 鎶芥
+        /// </summary>
+        [Description("鎶芥")]
+        CHOUJIAN = 2
+    }
+
+    /// <summary>
+    /// 鐗╂枡绫诲埆
+    /// </summary>
+    public enum MaterialType
+    {
+        /// <summary>
+        /// 鍘熸潗鏂�
+        /// </summary>
+        [Description("鍘熸潗鏂�")]
+        YUANCAILIAO = 1,
+
+        /// <summary>
+        /// 鍗婃垚鍝�
+        /// </summary>
+        [Description("鍗婃垚鍝�")]
+        BANCHENGPING = 2,
+
+        /// <summary>
+        /// 鎴愬搧
+        /// </summary>
+        [Description("鎴愬搧")]
+        CHENGPING = 3,
+
+        /// <summary>
+        /// 鏍囧噯浜у搧
+        /// </summary>
+        [Description("鏍囧噯浜у搧")]
+        BIAOZHUANCHANPIN = 4,
+
+        /// <summary>
+        /// 鍖呰鏉愭枡
+        /// </summary>
+        [Description("鍖呰鏉愭枡")]
+        BAOZHUANGCAILIAO = 5,
+
+        /// <summary>
+        /// 杈呭姪鏉愭枡
+        /// </summary>
+        [Description("鍖呰鏉愭枡")]
+        FUZHUCAILIAO = 6,
+
+        /// <summary>
+        /// 宸ラ噺鍏�
+        /// </summary>
+        [Description("宸ラ噺鍏�")]
+        GONGLIANGJU = 7,
+
+        /// <summary>
+        /// 绌烘墭
+        /// </summary>
+        [Description("绌烘墭")]
+        KONGTUO = 8,
+
+        /// <summary>
+        /// 娉℃搏
+        /// </summary>
+        [Description("娉℃搏")]
+        PAOMO = 9,
+
+        /// <summary>
+        /// 鑳跺悎鏉�
+        /// </summary>
+        [Description("鑳跺悎鏉�")]
+        JIAOHEBAN = 10,
+
+        /// <summary>
+        /// 涓绘澘
+        /// </summary>
+        [Description("涓绘澘")]
+        ZHUBAN = 11,
+
+        /// <summary>
+        /// RSB
+        /// </summary>
+        [Description("RSB")]
+        RSB = 12,
+    }
+
+    /// <summary>
+    /// 鍗曚綅绫诲埆
+    /// </summary>
+    public enum UnitType
+    {
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [Description("鏁伴噺")]
+        SHULIANG = 0,
+
+        /// <summary>
+        /// 闀垮害
+        /// </summary>
+        [Description("闀垮害")]
+        CHANGDU = 1,
+
+        /// <summary>
+        /// 閲嶉噺
+        /// </summary>
+        [Description("閲嶉噺")]
+        ZHONGLIANG = 2
+    }
+
+    /// <summary>
+    /// 鍗曚綅缂栧彿
+    /// </summary>
+    public enum UnitNoType
+    {
+        /// <summary>
+        /// cm
+        /// </summary>
+        [Description("cm")]
+        CM = 1,
+
+        /// <summary>
+        /// t
+        /// </summary>
+        [Description("T")]
+        T = 2
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsTaskEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsTaskEnum.cs
new file mode 100644
index 0000000..0dd7678
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsTaskEnum.cs
@@ -0,0 +1,327 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 浠诲姟鍖哄煙
+    /// </summary>
+    public enum TaskArea
+    {
+        /// <summary>
+        /// 涓�妤�
+        /// </summary>
+        [Description("涓�妤�")]
+        YILOU = 1,
+
+        /// <summary>
+        /// 浜屾ゼ
+        /// </summary>
+        [Description("浜屾ゼ")]
+        ERLOU = 2
+    }
+
+    /// <summary>
+    /// 鐔熷寲搴撲换鍔℃柟寮�
+    /// </summary>
+    public enum TaskModel
+    {
+        /// <summary>
+        /// 鎵嬪姩
+        /// </summary>
+        [Description("鎵嬪姩")]
+        SHOUDONG = 1,
+
+        /// <summary>
+        /// 鍏ㄨ嚜鍔�
+        /// </summary>
+        [Description("鍏ㄨ嚜鍔�")]
+        QUANZIDONG = 2,
+
+        /// <summary>
+        /// 鍗婅嚜鍔�
+        /// </summary>
+        [Description("鍗婅嚜鍔�")]
+        BANZIDONG = 3,
+    }
+
+    /// <summary>
+    /// 缁勮搴撲换鍔℃柟寮�
+    /// </summary>
+    public enum AssembleTaskModel
+    {
+        /// <summary>
+        /// 鎵嬪姩
+        /// </summary>
+        [Description("鎵嬪姩")]
+        SHOUDONG = 1,
+
+        /// <summary>
+        /// 鍏ㄨ嚜鍔�
+        /// </summary>
+        [Description("鍏ㄨ嚜鍔�")]
+        QUANZIDONG = 2
+    }
+
+    /// <summary>
+    /// 浠诲姟绫诲瀷
+    /// </summary>
+    public enum TaskType
+    {
+        /// <summary>
+        /// 鍏ュ簱
+        /// </summary>
+        [Description("鍏ュ簱")]
+        RUKU = 1,
+
+        /// <summary>
+        /// 鍑哄簱
+        /// </summary>
+        [Description("鍑哄簱")]
+        CHUKU = 2,
+
+        /// <summary>
+        /// 绉诲簱
+        /// </summary>
+        [Description("绉诲簱")]
+        YIKU = 3,
+
+        /// <summary>
+        /// 鎼繍
+        /// </summary>
+        [Description("鎼繍")]
+        BAIYUN =4
+    }
+
+    /// <summary>
+    /// 浠诲姟鐘舵��
+    /// </summary>
+    public enum TaskStatusEnum
+    {
+        /// <summary>
+        /// 鏈墽琛�
+        /// </summary>
+        [Description("鏈墽琛�")]
+        WEIZHIXING = 1,
+
+        /// <summary>
+        /// 鎵ц涓�
+        /// </summary>
+        [Description("鎵ц涓�")]
+        ZHIXINGZHONG = 2,
+
+        /// <summary>
+        /// 瀹屾垚
+        /// </summary>
+        [Description("瀹屾垚")]
+        WANCHENG = 3,
+
+        /// <summary>
+        /// 鍙栨秷
+        /// </summary>
+        [Description("鍙栨秷")]
+        QUXIAO = 4,
+
+        /// <summary>
+        /// 鏆傚仠
+        /// </summary>
+        [Description("鏆傚仠")]
+        ZANTING = 5,
+
+        /// <summary>
+        /// 鎾ゅ洖
+        /// </summary>
+        [Description("鎾ゅ洖")]
+        CHEHUI = 6,
+
+        /// <summary>
+        /// 寰呮墽琛�
+        /// </summary>
+        [Description("寰呮墽琛�")]
+        DAIZHIXING =7
+    }
+
+    /// <summary>
+    /// 浠诲姟璁惧鐘舵��
+    /// </summary>
+    public enum TaskDodeviceStatusEnum
+    {
+        /// <summary>
+        /// 鏈墽琛�
+        /// </summary>
+        [Description("鏈墽琛�")]
+        WZX= 1,
+
+        /// <summary>
+        /// AGV鎵ц
+        /// </summary>
+        [Description("AGV鎵ц")]
+        ZX_AGV = 2,
+
+        /// <summary>
+        /// AGV瀹屾垚
+        /// </summary>
+        [Description("AGV瀹屾垚")]
+        WC_AGV = 3,
+
+        /// <summary>
+        /// 鍏ュ簱杈撻�佺嚎-鎵ц
+        /// </summary>
+        [Description("鍏ュ簱杈撻�佺嚎-鎵ц")]
+        ZX_RSSX = 4,
+
+        /// <summary>
+        /// 鍏ュ簱杈撻�佺嚎-瀹屾垚
+        /// </summary>
+        [Description("鍏ュ簱杈撻�佺嚎-瀹屾垚")]
+        WC_RSSX = 5,
+
+        /// <summary>
+        /// 鍫嗗灈鏈�-鎵ц
+        /// </summary>
+        [Description("鍫嗗灈鏈�-鎵ц")]
+        ZX_DDJ = 6,
+
+        /// <summary>
+        /// 鍫嗗灈鏈�-瀹屾垚
+        /// </summary>
+        [Description("鍫嗗灈鏈�-瀹屾垚")]
+        WC_DDJ = 7,
+
+        /// <summary>
+        /// 鍑哄簱杈撻�佺嚎-鎵ц
+        /// </summary>
+        [Description("鍑哄簱杈撻�佺嚎-鎵ц")]
+        ZX_CSSX = 8,
+
+        /// <summary>
+        /// 鍑哄簱杈撻�佺嚎-瀹屾垚
+        /// </summary>
+        [Description("鍑哄簱杈撻�佺嚎-瀹屾垚")]
+        WC_CSSX = 9,
+
+
+        /// <summary>
+        /// RGV-鎵ц
+        /// </summary>
+        [Description("RGV-鎵ц")]
+        ZX_RGV = 10,
+
+        /// <summary>
+        /// RGV-瀹屾垚
+        /// </summary>
+        [Description("RGV-瀹屾垚")]
+        WC_RGV = 11,
+
+        /// <summary>
+        /// 绛夊緟
+        /// </summary>
+        [Description("绛夊緟")]
+        DD = 12,
+
+        /// <summary>
+        /// 瀹屾垚
+        /// </summary>
+        [Description("瀹屾垚")]
+        WC = 13,
+
+        /// <summary>
+        /// 鏃�
+        /// </summary>
+        [Description("鏃�")]
+        W = 14,
+
+        /// <summary>
+        /// 鍏ュ簱绉伴噸
+        /// </summary>
+        [Description("鍏ュ簱绉伴噸")]
+        ZX_RKCZ=15
+
+
+    }
+
+    /// <summary>
+    /// AGV浠诲姟璁惧鐘舵��
+    /// </summary>
+    public enum AGVTaskDodeviceStatusEnum
+    {
+        /// <summary>
+        /// 鏈墽琛�
+        /// </summary>
+        [Description("鏈墽琛�")]
+        WZX = 1,
+
+        /// <summary>
+        /// 1-AGV鎵ц
+        /// </summary>
+        [Description("1-AGV鎵ц")]
+        ZX_AGVONE = 2,
+
+        /// <summary>
+        /// 1-AGV瀹屾垚
+        /// </summary>
+        [Description("1-AGV瀹屾垚")]
+        WC_AGVONE = 3,
+
+        /// <summary>
+        /// 2-AGV鎵ц
+        /// </summary>
+        [Description("2-AGV鎵ц")]
+        ZX_AGVTWO = 4,
+
+        /// <summary>
+        /// 2-AGV瀹屾垚
+        /// </summary>
+        [Description("2-AGV瀹屾垚")]
+        WC_AGVTWO = 5,
+
+        /// <summary>
+        /// 鏃�
+        /// </summary>
+        [Description("鏃�")]
+        W = 6
+    }
+
+    /// <summary>
+    /// 缁勮杞﹂棿浠诲姟璁惧鐘舵��
+    /// </summary>
+    public enum TaskAssembleDodeviceStatusEnum
+    {
+        /// <summary>
+        /// 鏈墽琛�
+        /// </summary>
+        [Description("鏈墽琛�")]
+        WZX = 1,
+
+        /// <summary>
+        /// 鎻愬崌鏈烘墽琛�
+        /// </summary>
+        [Description("鎻愬崌鏈烘墽琛�")]
+        ZX_TXJ = 2,
+
+        /// <summary>
+        /// 鎻愬崌鏈哄畬鎴�
+        /// </summary>
+        [Description("鎻愬崌鏈哄畬鎴�")]
+        WC_TXJ = 3,
+
+        /// <summary>
+        /// 鏃�
+        /// </summary>
+        [Description("鏃�")]
+        W = 4,
+
+        /// <summary>
+        /// AGV鎵ц
+        /// </summary>
+        [Description("AGV鎵ц")]
+        ZX_AGV = 5,
+
+        /// <summary>
+        /// AGV瀹屾垚
+        /// </summary>
+        [Description("AGV瀹屾垚")]
+        WC_AGV = 6
+
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/YesOrNot.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/YesOrNot.cs
new file mode 100644
index 0000000..ae7062a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/YesOrNot.cs
@@ -0,0 +1,22 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鏄惁
+    /// </summary>
+    public enum YesOrNot
+    {
+        /// <summary>
+        /// 鏄�
+        /// </summary>
+        [Description("鏄�")]
+        Y = 1,
+
+        /// <summary>
+        /// 鍚�
+        /// </summary>
+        [Description("鍚�")]
+        N = 0
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/GoodsReturnStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/GoodsReturnStatus.cs
new file mode 100644
index 0000000..7f5d6a6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/GoodsReturnStatus.cs
@@ -0,0 +1,23 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 閫�璐х姸鎬�
+    /// </summary>
+    public enum GoodsReturnStatus
+    {
+        /// <summary>
+        /// 鏈��璐�
+        /// </summary>
+        WEITUIHUO = 1,
+        /// <summary>
+        /// 閫�璐т腑
+        /// </summary>
+        TUIHUOZHONG = 2,
+        /// <summary>
+        /// 宸查��璐�
+        /// </summary>
+        YITUIHUO = 3
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionResultsEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionResultsEnum.cs
new file mode 100644
index 0000000..66c4ead
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionResultsEnum.cs
@@ -0,0 +1,27 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 妫�楠岀粨鏋�
+    /// </summary>
+    public enum InspectionResultsEnum
+    {
+        /// <summary>
+        /// 鏈楠�
+        /// </summary>
+        WEIJIANYAN = 1,
+        /// <summary>
+        /// 鍚堟牸
+        /// </summary>
+        HEGE = 2,
+        /// <summary>
+        /// 涓嶅悎鏍�
+        /// </summary>
+        BUHEGE = 3,
+        /// <summary>
+        /// 甯︽剰瑙佹帴鏀�
+        /// </summary>
+        DAIYIJIANJIESHOU = 4
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionStatus.cs
new file mode 100644
index 0000000..7da1d8b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionStatus.cs
@@ -0,0 +1,19 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鎶ユ鐘舵��
+    /// </summary>
+    public enum InspectionStatus
+    {
+        /// <summary>
+        /// 鏈姤妫�
+        /// </summary>
+        WEIBAOJIAN = 1,
+        /// <summary>
+        /// 宸叉姤妫�
+        /// </summary>
+        YIBAOJIAN = 2
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/Merchantinfo.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/Merchantinfo.cs
new file mode 100644
index 0000000..a0aafb4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/Merchantinfo.cs
@@ -0,0 +1,41 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍟嗗鍒嗙被
+    /// </summary>
+    public enum MerchantType
+    {
+        /// <summary>
+        /// 瀹㈠晢
+        /// </summary>
+        GuestConsult = 1,
+        /// <summary>
+        /// 渚涘簲鍟�
+        /// </summary>
+        Supplier = 2,
+        /// <summary>
+        /// 瀹㈡埛
+        /// </summary>
+        Customers = 3
+    }
+    /// <summary>
+    /// 鍟嗗绛夌骇
+    /// </summary>
+    public enum MerchantGrade
+    {
+        /// <summary>
+        /// 涓�绾�
+        /// </summary>
+        YIJI = 1,
+        /// <summary>
+        /// 浜岀骇
+        /// </summary>
+        ERJI = 2,
+        /// <summary>
+        /// 涓夌骇
+        /// </summary>
+        SANJI = 3
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/MoveType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/MoveType.cs
new file mode 100644
index 0000000..37ad02c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/MoveType.cs
@@ -0,0 +1,19 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 浜嬪姟绫诲瀷
+    /// </summary>
+    public enum MoveType
+    {
+        /// <summary>
+        /// 鐢熶骇棰嗘枡:Z221
+        /// </summary>
+        SHENGCHANLINGLIAO = 1,
+        /// <summary>
+        /// 閿�鍞鏂欙細Z201
+        /// </summary>
+        XIAOSHOULINGLIAO = 2
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/ReceivingStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/ReceivingStatus.cs
new file mode 100644
index 0000000..cb4e1d1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/ReceivingStatus.cs
@@ -0,0 +1,23 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鏀惰揣鐘舵��
+    /// </summary>
+    public enum ReceivingStatus
+    {
+        /// <summary>
+        /// 鏈敹璐�
+        /// </summary>
+        WEISHOUHUO = 1,
+        /// <summary>
+        /// 鏀惰揣涓�
+        /// </summary>
+        SHOUHUOZHONG = 2,
+        /// <summary>
+        /// 宸叉敹璐�
+        /// </summary>
+        YISHOUHUO = 3
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/TradeMode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/TradeMode.cs
new file mode 100644
index 0000000..3c8044b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/TradeMode.cs
@@ -0,0 +1,94 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 璐告槗鏂瑰紡
+    /// </summary>
+    public enum TradeMode
+    {
+        /// <summary>
+        /// 鍥戒骇
+        /// </summary>
+        [Description("鍥戒骇")]
+        GUOCHAN = 1,
+
+        /// <summary>
+        /// 杩涙枡瀵瑰彛
+        /// </summary>
+        [Description("杩涙枡瀵瑰彛")]
+        JINLIAODUIKOU = 2,
+
+        /// <summary>
+        /// 涓�鑸锤鏄�
+        /// </summary>
+        [Description("涓�鑸锤鏄�")]
+        YIBANMAOYI = 3,
+
+        /// <summary>
+        /// 鍏朵粬杩涘嚭鍙e厤璐�
+        /// </summary>
+        [Description("鍏朵粬杩涘嚭鍙e厤璐�")]
+        QITAJINCHUKOUMIANFEI = 4,
+
+        /// <summary>
+        /// 淇悊鐗╁搧
+        /// </summary>
+        [Description("淇悊鐗╁搧")]
+        XIULIWUPIN = 5,
+
+        /// <summary>
+        ///杩涙枡鏂欎欢鍐呴攢
+        /// </summary>
+        [Description("杩涙枡鏂欎欢鍐呴攢")]
+        JINLIAOLIAOJIANNEIXIAO = 6,
+
+        /// <summary>
+        ///璐ф牱骞垮憡鍝�
+        /// </summary>
+        [Description("璐ф牱骞垮憡鍝�")]
+        HUOYANGGUANGGAOPIN = 7,
+
+        /// <summary>
+        ///杩涙枡杈硅鏂欏唴閿�
+        /// </summary>
+        [Description("杩涙枡杈硅鏂欏唴閿�")]
+        JINLIAOBIANJIAOLIAONEIXIAO = 8,
+
+        /// <summary>
+        ///杩涙枡浣欐枡缁撹浆
+        /// </summary>
+        [Description("杩涙枡浣欐枡缁撹浆")]
+        JINLIAOYULIAOJIEZHUAN = 9,
+
+        /// <summary>
+        ///杩涙枡娣卞姞宸�
+        /// </summary>
+        [Description("杩涙枡娣卞姞宸�")]
+        JINLIAOSHENJIAOGONG = 10,
+
+        /// <summary>
+        ///淇濈◣浠撳簱璐х墿
+        /// </summary>
+        [Description("淇濈◣浠撳簱璐х墿")]
+        BAOSHUICANGKUHUOWU = 11,
+
+        /// <summary>
+        ///杩涙枡鏂欎欢閫�杩�
+        /// </summary>
+        [Description("杩涙枡鏂欎欢閫�杩�")]
+        JINLIAOLIAOJIANTUIHUAN = 12,
+
+        /// <summary>
+        ///鏆傛椂杩涘嚭璐х墿
+        /// </summary>
+        [Description("鏆傛椂杩涘嚭璐х墿")]
+        ZANSHIJINCHUHUOWU = 13,
+
+        /// <summary>
+        ///杩涙枡鏂欎欢澶嶅嚭
+        /// </summary>
+        [Description("杩涙枡鏂欎欢澶嶅嚭")]
+        JINLIAOLIAOJIANFUCHU = 14,
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/EventSubscriber/LogEventSubscriber.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/EventSubscriber/LogEventSubscriber.cs
new file mode 100644
index 0000000..37a815b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/EventSubscriber/LogEventSubscriber.cs
@@ -0,0 +1,43 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.EventBus;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Admin.NET.Core
+{
+    public class LogEventSubscriber : IEventSubscriber
+    {
+        public IServiceProvider Services { get; }
+
+        public LogEventSubscriber(IServiceProvider services)
+        {
+            Services = services;
+        }
+
+        [EventSubscribe("Create:OpLog")]
+        public async Task CreateOpLog(EventHandlerExecutingContext context)
+        {
+            using var scope = Services.CreateScope();
+            var _repository = scope.ServiceProvider.GetRequiredService<IRepository<SysLogOp>>();
+            var log = (SysLogOp)context.Source.Payload;
+            await _repository.InsertNowAsync(log);
+        }
+
+        [EventSubscribe("Create:ExLog")]
+        public async Task CreateExLog(EventHandlerExecutingContext context)
+        {
+            using var scope = Services.CreateScope();
+            var _repository = scope.ServiceProvider.GetRequiredService<IRepository<SysLogEx>>();
+            var log = (SysLogEx)context.Source.Payload;
+            await _repository.InsertNowAsync(log);
+        }
+
+        [EventSubscribe("Create:VisLog")]
+        public async Task CreateVisLog(EventHandlerExecutingContext context)
+        {
+            using var scope = Services.CreateScope();
+            var _repository = scope.ServiceProvider.GetRequiredService<IRepository<SysLogVis>>();
+            var log = (SysLogVis)context.Source.Payload;
+            await _repository.InsertNowAsync(log);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/CsRedisExtensions.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/CsRedisExtensions.cs
new file mode 100644
index 0000000..d82e10b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/CsRedisExtensions.cs
@@ -0,0 +1,31 @@
+锘縰sing CSRedis;
+using Furion;
+using Microsoft.Extensions.Caching.Distributed;
+using Microsoft.Extensions.Caching.Redis;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Admin.NET.Core.Extension;
+
+/// <summary>
+/// csredis鎵╁睍
+/// </summary>
+public static class CsRedisExtensions
+{
+    /// <summary>
+    /// 浣跨敤缂撳瓨
+    /// </summary>
+    /// <param name="services"></param>
+    /// <returns></returns>
+    public static void UseCsRedis(this IServiceCollection services)
+    {
+        var redisStr = $"{App.Configuration["Cache:RedisConnectionString"]},prefix={App.Configuration["Cache:InstanceName"]}";
+
+        //csredis鐨勪袱绉嶄娇鐢ㄦ柟寮�
+        var csredis = new CSRedisClient(redisStr);
+        services.AddSingleton(csredis);
+        RedisHelper.Initialization(csredis);
+
+        //鍩轰簬redis鍒濆鍖朓DistributedCache
+        services.AddSingleton<IDistributedCache>(new CSRedisCache(csredis));
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/DictionaryExtensions.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/DictionaryExtensions.cs
new file mode 100644
index 0000000..c0a59bd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/DictionaryExtensions.cs
@@ -0,0 +1,47 @@
+锘縰sing System.Text;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瀛楀吀鎵╁睍
+    /// </summary>
+    public static class DictionaryExtensions
+    {
+        /// <summary>
+        /// 灏嗕竴涓瓧鍏歌浆鍖栦负 QueryString
+        /// </summary>
+        /// <param name="dict"></param>
+        /// <param name="urlEncode"></param>
+        /// <returns></returns>
+        public static string ToQueryString(this Dictionary<string, string> dict, bool urlEncode = true)
+        {
+            return string.Join("&", dict.Select(p => $"{(urlEncode ? p.Key?.UrlEncode() : "")}={(urlEncode ? p.Value?.UrlEncode() : "")}"));
+        }
+
+        /// <summary>
+        /// 灏嗕竴涓瓧绗︿覆 URL 缂栫爜
+        /// </summary>
+        /// <param name="str"></param>
+        /// <returns></returns>
+        public static string UrlEncode(this string str)
+        {
+            if (string.IsNullOrEmpty(str))
+            {
+                return "";
+            }
+            return System.Web.HttpUtility.UrlEncode(str, Encoding.UTF8);
+        }
+
+        /// <summary>
+        /// 绉婚櫎绌哄�奸」
+        /// </summary>
+        /// <param name="dict"></param>
+        public static void RemoveEmptyValueItems(this Dictionary<string, string> dict)
+        {
+            dict.Where(item => string.IsNullOrEmpty(item.Value)).Select(item => item.Key).ToList().ForEach(key =>
+            {
+                dict.Remove(key);
+            });
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/FakeDeleteExtensions.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/FakeDeleteExtensions.cs
new file mode 100644
index 0000000..1ca94b7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/FakeDeleteExtensions.cs
@@ -0,0 +1,140 @@
+using Furion.DatabaseAccessor.Extensions;
+
+namespace Furion.DatabaseAccessor
+{
+    public static class FakeDeleteExtensions
+    {
+        /// <summary>
+        /// 涓婚敭鍚嶇О
+        /// </summary>
+        private static string PrimaryKeyName { get; set; } = "Id";
+
+        /// <summary>
+        /// 鍋囧垹闄ゅ垪鍚�
+        /// </summary>
+        private static string FakeDeleteColumnName { get; set; } = "IsDeleted";
+
+        /// <summary>
+        /// 鍋囧垹闄わ紝鏍规嵁id鍒犻櫎
+        /// </summary>
+        public static void FakeDelete<TEntity>(this IPrivateRepository<TEntity> repository, int id)
+            where TEntity : class, IPrivateEntity, new()
+        {
+            // 鍒涘缓瀹炰綋瀵硅薄骞惰缃富閿��
+            var entity = Activator.CreateInstance<TEntity>();
+            var PrimaryKeyProperty = typeof(TEntity).GetProperty(PrimaryKeyName);
+            PrimaryKeyProperty.SetValue(PrimaryKeyName, id);
+            repository.FakeDelete(entity);
+        }
+
+        /// <summary>
+        /// 鍋囧垹闄�
+        /// </summary>
+        public static void FakeDelete<TEntity>(this IPrivateRepository<TEntity> repository, TEntity entity)
+            where TEntity : class, IPrivateEntity, new()
+        {
+            var fakedeleteProperty = repository.EntityType.ClrType.GetProperty(FakeDeleteColumnName);
+            fakedeleteProperty.SetValue(entity, true);
+            repository.UpdateInclude(entity, new[] { fakedeleteProperty.Name });
+        }
+
+        /// <summary>
+        /// 鍋囧垹闄ょ珛鍗虫墽琛岋紝鏍规嵁id鍒犻櫎
+        /// </summary>
+        public static void FakeDeleteNow<TEntity>(this IPrivateRepository<TEntity> repository, long id)
+           where TEntity : class, IPrivateEntity, new()
+        {
+            // 鍒涘缓瀹炰綋瀵硅薄骞惰缃富閿��
+            var entity = Activator.CreateInstance<TEntity>();
+            var PrimaryKeyProperty = typeof(TEntity).GetProperty(PrimaryKeyName);
+            PrimaryKeyProperty.SetValue(entity, id);
+            repository.FakeDeleteNow(entity);
+        }
+
+        /// <summary>
+        /// 鍋囧垹闄ょ珛鍗虫墽琛�
+        /// </summary>
+        public static void FakeDeleteNow<TEntity>(this IPrivateRepository<TEntity> repository, TEntity entity)
+            where TEntity : class, IPrivateEntity, new()
+        {
+            var fakedeleteProperty = repository.EntityType.ClrType.GetProperty(FakeDeleteColumnName);
+            fakedeleteProperty.SetValue(entity, true);
+            repository.UpdateIncludeNow(entity, new[] { fakedeleteProperty.Name });
+        }
+
+        /// <summary>
+        /// 寮傛鍋囧垹闄�
+        /// </summary>
+
+        public static async Task FakeDeleteAsync<TEntity>(this IPrivateRepository<TEntity> repository, long id)
+           where TEntity : class, IPrivateEntity, new()
+        {
+            // 鍒涘缓瀹炰綋瀵硅薄骞惰缃富閿��
+            var entity = Activator.CreateInstance<TEntity>();
+            var PrimaryKeyProperty = typeof(TEntity).GetProperty(PrimaryKeyName);
+            PrimaryKeyProperty.SetValue(entity, id);
+            await repository.FakeDeleteAsync(entity);
+        }
+
+        /// <summary>
+        /// 寮傛鍋囧垹闄�
+        /// </summary>
+        public static async Task FakeDeleteAsync<TEntity>(this IPrivateRepository<TEntity> repository, TEntity entity)
+            where TEntity : class, IPrivateEntity, new()
+        {
+            var fakedeleteProperty = repository.EntityType.ClrType.GetProperty(FakeDeleteColumnName);
+            fakedeleteProperty.SetValue(entity, true);
+            await repository.UpdateIncludeAsync(entity, new[] { fakedeleteProperty.Name });
+        }
+
+        //鎵╁睍鍦╡ntity涓婄殑鍋囧垹闄�
+
+        /// <summary>
+        /// 寮傛鍋囧垹闄�
+        /// </summary>
+        public static async Task FakeDeleteAsync<TEntity>(this TEntity entity)
+            where TEntity : class, IPrivateEntity, new()
+        {
+            var fakedeleteProperty = typeof(TEntity).GetProperty(FakeDeleteColumnName);
+            fakedeleteProperty.SetValue(entity, true);
+            await entity.UpdateIncludeAsync(new[] { fakedeleteProperty.Name });
+        }
+
+        /// <summary>
+        /// 寮傛鍋囧垹闄わ紝绔嬪嵆鎵ц
+        /// </summary>
+        public static async Task FakeDeleteNowAsync<TEntity>(this TEntity entity)
+          where TEntity : class, IPrivateEntity, new()
+        {
+            var fakedeleteProperty = typeof(TEntity).GetProperty(FakeDeleteColumnName);
+            fakedeleteProperty.SetValue(entity, true);
+            await entity.UpdateIncludeNowAsync(new[] { fakedeleteProperty.Name });
+        }
+
+        /// <summary>
+        /// 鍋囧垹闄�
+        /// </summary>
+        /// <typeparam name="TEntity"></typeparam>
+        /// <param name="entity"></param>
+        public static void FakeDelete<TEntity>(this TEntity entity)
+           where TEntity : class, IPrivateEntity, new()
+        {
+            var fakedeleteProperty = typeof(TEntity).GetProperty(FakeDeleteColumnName);
+            fakedeleteProperty.SetValue(entity, true);
+            entity.UpdateInclude(new[] { fakedeleteProperty.Name });
+        }
+
+        /// <summary>
+        /// 鍋囧垹闄ょ珛鍗虫墽琛�
+        /// </summary>
+        /// <typeparam name="TEntity"></typeparam>
+        /// <param name="entity"></param>
+        public static void FakeDeleteNow<TEntity>(this TEntity entity)
+          where TEntity : class, IPrivateEntity, new()
+        {
+            var fakedeleteProperty = typeof(TEntity).GetProperty(FakeDeleteColumnName);
+            fakedeleteProperty.SetValue(entity, true);
+            entity.UpdateIncludeNow(new[] { fakedeleteProperty.Name });
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/LambdaExpressionBuilder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/LambdaExpressionBuilder.cs
new file mode 100644
index 0000000..3ab9fcc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/LambdaExpressionBuilder.cs
@@ -0,0 +1,183 @@
+锘縰sing System.Linq.Expressions;
+using System.Reflection;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍔ㄦ�佺敓鎴愭煡璇㈣〃杈惧紡
+    /// </summary>
+    public static class LambdaExpressionBuilder
+    {
+        private static Expression GetExpression(ParameterExpression parameter, Condition condition)
+        {
+            var propertyParam = Expression.Property(parameter, condition.Field);
+
+            var propertyInfo = propertyParam.Member as PropertyInfo;
+            if (propertyInfo == null)
+                throw new MissingMemberException(nameof(Condition), condition.Field);
+
+            //Support Nullable<>
+            var realPropertyType = Nullable.GetUnderlyingType(propertyInfo.PropertyType) ?? propertyInfo.PropertyType;
+            if (propertyInfo.PropertyType.IsGenericType &&
+                propertyInfo.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
+                propertyParam = Expression.Property(propertyParam, "Value");
+
+            //Support IEnumerable && IEnumerable<T>
+            if (condition.Op != QueryTypeEnum.StdIn && condition.Op != QueryTypeEnum.StdNotIn)
+            {
+                condition.Value = Convert.ChangeType(condition.Value, realPropertyType);
+            }
+            else
+            {
+                var typeOfValue = condition.Value.GetType();
+                var typeOfList = typeof(IEnumerable<>).MakeGenericType(realPropertyType);
+                if (typeOfValue.IsGenericType && typeOfList.IsAssignableFrom(typeOfValue))
+                    condition.Value = typeof(Enumerable)
+                        .GetMethod("ToArray", BindingFlags.Public | BindingFlags.Static)
+                        ?.MakeGenericMethod(realPropertyType)
+                        .Invoke(null, new[] { condition.Value });
+            }
+
+            var constantParam = Expression.Constant(condition.Value);
+            switch (condition.Op)
+            {
+                case QueryTypeEnum.Equals:
+                    return Expression.Equal(propertyParam, constantParam);
+
+                case QueryTypeEnum.NotEquals:
+                    return Expression.NotEqual(propertyParam, constantParam);
+
+                case QueryTypeEnum.Contains:
+                    return Expression.Call(propertyParam, "Contains", null, constantParam);
+
+                case QueryTypeEnum.NotContains:
+                    return Expression.Not(Expression.Call(propertyParam, "Contains", null, constantParam));
+
+                case QueryTypeEnum.StartsWith:
+                    return Expression.Call(propertyParam, "StartsWith", null, constantParam);
+
+                case QueryTypeEnum.EndsWith:
+                    return Expression.Call(propertyParam, "EndsWith", null, constantParam);
+
+                case QueryTypeEnum.GreaterThan:
+                    return Expression.GreaterThan(propertyParam, constantParam);
+
+                case QueryTypeEnum.GreaterThanOrEquals:
+                    return Expression.GreaterThanOrEqual(propertyParam, constantParam);
+
+                case QueryTypeEnum.LessThan:
+                    return Expression.LessThan(propertyParam, constantParam);
+
+                case QueryTypeEnum.LessThanOrEquals:
+                    return Expression.LessThanOrEqual(propertyParam, constantParam);
+
+                case QueryTypeEnum.StdIn:
+                    return Expression.Call(typeof(Enumerable), "Contains", new[] { realPropertyType }, constantParam, propertyParam);
+
+                case QueryTypeEnum.StdNotIn:
+                    return Expression.Not(Expression.Call(typeof(Enumerable), "Contains", new[] { realPropertyType }, constantParam, propertyParam));
+
+                default:
+                    break;
+            }
+
+            return null;
+        }
+
+        private static Expression GetGroupExpression(ParameterExpression parameter, List<Condition> orConditions)
+        {
+            if (orConditions.Count == 0)
+                return null;
+
+            var exps = orConditions.Select(c => GetExpression(parameter, c)).ToList();
+            return exps.Aggregate<Expression, Expression>(null, (left, right) =>
+                left == null ? right : Expression.OrElse(left, right));
+        }
+
+        public static Expression<Func<T, bool>> BuildLambda<T>(IEnumerable<Condition> conditions)
+        {
+            if (conditions == null || !conditions.Any())
+                return x => true;
+
+            var parameter = Expression.Parameter(typeof(T), "x");
+
+            //绠�鍗曟潯浠�
+            var simpleExps = conditions
+                .ToList()
+                .FindAll(c => string.IsNullOrEmpty(c.OrGroup))
+                .Select(c => GetExpression(parameter, c))
+                .ToList();
+
+            //澶嶆潅鏉′欢
+            var complexExps = conditions
+                .ToList()
+                .FindAll(c => !string.IsNullOrEmpty(c.OrGroup))
+                .GroupBy(x => x.OrGroup)
+                .Select(g => GetGroupExpression(parameter, g.ToList()))
+                .ToList();
+
+            var exp = simpleExps.Concat(complexExps).Aggregate<Expression, Expression>(null, (left, right) =>
+                left == null ? right : Expression.AndAlso(left, right));
+            return Expression.Lambda<Func<T, bool>>(exp, parameter);
+        }
+
+        public static Expression<Func<T, bool>> BuildAndAlsoLambda<T>(IEnumerable<Condition> conditions)
+        {
+            if (conditions == null || !conditions.Any())
+                return x => true;
+
+            var parameter = Expression.Parameter(typeof(T), "x");
+            var simpleExps = conditions
+                .ToList()
+                .Select(c => GetExpression(parameter, c))
+                .ToList();
+
+            var exp = simpleExps.Aggregate<Expression, Expression>(null, (left, right) =>
+                left == null ? right : Expression.AndAlso(left, right));
+            return Expression.Lambda<Func<T, bool>>(exp, parameter);
+        }
+
+        public static Expression<Func<T, bool>> BuildOrElseLambda<T>(IEnumerable<Condition> conditions)
+        {
+            if (conditions == null || !conditions.Any())
+                return x => true;
+
+            var parameter = Expression.Parameter(typeof(T), "x");
+            var simpleExps = conditions
+                .ToList()
+                .Select(c => GetExpression(parameter, c))
+                .ToList();
+
+            var exp = simpleExps.Aggregate<Expression, Expression>(null, (left, right) =>
+                left == null ? right : Expression.OrElse(left, right));
+            return Expression.Lambda<Func<T, bool>>(exp, parameter);
+        }
+    }
+
+    /// <summary>
+    /// 鏌ヨ鏉′欢
+    /// </summary>
+    [Serializable]
+    public class Condition
+    {
+        /// <summary>
+        /// 瀛楁鍚�
+        /// </summary>
+        public string Field { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔绗�
+        /// </summary>
+        public QueryTypeEnum Op { get; set; }
+
+        /// <summary>
+        /// 瀛楁鍊�
+        /// </summary>
+        public object Value { get; set; }
+
+        /// <summary>
+        /// 鍒嗙粍鍚嶇О
+        /// </summary>
+        public string OrGroup { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/NewtonsoftJsonSerializerProvider .cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/NewtonsoftJsonSerializerProvider .cs
new file mode 100644
index 0000000..05ad28c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/NewtonsoftJsonSerializerProvider .cs
@@ -0,0 +1,46 @@
+锘縰sing Furion;
+using Furion.DependencyInjection;
+using Furion.JsonSerialization;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+
+namespace Admin.NET.Core.Extension
+{
+    /// <summary>
+    /// 鑷畾涔夊簭鍒楀寲鎻愪緵鍣∟ewtonsoft
+    /// </summary>
+    public class NewtonsoftJsonSerializerProvider : IJsonSerializerProvider, ISingleton
+    {
+        /// <summary>
+        /// 搴忓垪鍖栧璞�
+        /// </summary>
+        /// <param name="value"></param>
+        /// <param name="jsonSerializerOptions"></param>
+        /// <returns></returns>
+        public string Serialize(object value, object jsonSerializerOptions = null)
+        {
+            return JsonConvert.SerializeObject(value, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);
+        }
+
+        /// <summary>
+        /// 鍙嶅簭鍒楀寲瀛楃涓�
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="json"></param>
+        /// <param name="jsonSerializerOptions"></param>
+        /// <returns></returns>
+        public T Deserialize<T>(string json, object jsonSerializerOptions = null)
+        {
+            return JsonConvert.DeserializeObject<T>(json, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);
+        }
+
+        /// <summary>
+        /// 杩斿洖璇诲彇鍏ㄥ眬閰嶇疆鐨� JSON 閫夐」
+        /// </summary>
+        /// <returns></returns>
+        public object GetSerializerOptions()
+        {
+            return App.GetOptions<MvcNewtonsoftJsonOptions>()?.SerializerSettings;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/QueryableExstenstions.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/QueryableExstenstions.cs
new file mode 100644
index 0000000..b4ea251
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/QueryableExstenstions.cs
@@ -0,0 +1,48 @@
+锘縰sing Furion.LinqBuilder;
+using System.Linq.Expressions;
+
+namespace Admin.NET.Core
+{
+    public static class QueryableExstenstions
+    {
+        /// <summary>
+        /// 鏍规嵁鍒嗛〉鏌ヨ鍙傛暟涓篒Queryable闄勫姞杩囨护鏉′欢
+        /// </summary>
+        /// <param name="source"></param>
+        /// <param name="searchParameters"></param>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static IQueryable<T> Search<T>(this IQueryable<T> source, PageInputBase searchParameters)
+        {
+            if (searchParameters.SearchParameters == null)
+                return source;
+
+            var results = source.Where(LambdaExpressionBuilder.BuildLambda<T>(searchParameters.SearchParameters));
+
+            //鏃犳帓搴忓瓧娈�
+            if (searchParameters.SortField.IsNullOrEmpty())
+                return results;
+
+            return results.ApplyOrder(searchParameters.SortField, searchParameters.SortOrder);
+        }
+
+        /// <summary>
+        /// 闄勫姞鎺掑簭
+        /// </summary>
+        /// <param name="source"></param>
+        /// <param name="property"></param>
+        /// <param name="sortMethod"></param>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        private static IOrderedQueryable<T> ApplyOrder<T>(this IQueryable<T> source, string property, string sortMethod)
+        {
+            var type = typeof(T);
+            var parameterExp = Expression.Parameter(type, "x");
+            var propertyInfo = type.GetProperty(property);
+            var propertyExp = Expression.Property(parameterExp, propertyInfo);
+            var lambdaExp = Expression.Lambda<Func<T, dynamic>>(propertyExp, parameterExp);
+
+            return sortMethod == "descend" ? source.OrderByDescending(lambdaExp) : source.OrderBy(lambdaExp);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/DisableOpLogAttribute.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/DisableOpLogAttribute.cs
new file mode 100644
index 0000000..066eae3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/DisableOpLogAttribute.cs
@@ -0,0 +1,10 @@
+锘縩amespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绂佺敤鎿嶄綔鏃ュ織
+    /// </summary>
+    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property)]
+    public class DisableOpLogAttribute : Attribute
+    {
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/LogExceptionHandler.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/LogExceptionHandler.cs
new file mode 100644
index 0000000..eb2d198
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/LogExceptionHandler.cs
@@ -0,0 +1,45 @@
+锘縰sing Furion;
+using Furion.DependencyInjection;
+using Furion.EventBus;
+using Furion.FriendlyException;
+using Microsoft.AspNetCore.Mvc.Filters;
+using Serilog;
+using System.Security.Claims;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍏ㄥ眬寮傚父澶勭悊
+    /// </summary>
+    public class LogExceptionHandler : IGlobalExceptionHandler, ISingleton
+    {
+        private readonly IEventPublisher _eventPublisher;
+
+        public LogExceptionHandler(IEventPublisher eventPublisher)
+        {
+            _eventPublisher = eventPublisher;
+        }
+
+        public async Task OnExceptionAsync(ExceptionContext context)
+        {
+            var userContext = App.User;
+            await _eventPublisher.PublishAsync(new ChannelEventSource("Create:ExLog",
+                new SysLogEx
+                {
+                    Account = userContext?.FindFirstValue(ClaimConst.CLAINM_ACCOUNT),
+                    Name = userContext?.FindFirstValue(ClaimConst.CLAINM_NAME),
+                    ClassName = context.Exception.TargetSite.DeclaringType?.FullName,
+                    MethodName = context.Exception.TargetSite.Name,
+                    ExceptionName = context.Exception.Message,
+                    ExceptionMsg = context.Exception.Message,
+                    ExceptionSource = context.Exception.Source,
+                    StackTrace = context.Exception.StackTrace,
+                    ParamsObj = context.Exception.TargetSite.GetParameters().ToString(),
+                    ExceptionTime = DateTimeOffset.Now
+                }));
+
+            // 鍐欐棩蹇楁枃浠�
+            Log.Error(context.Exception.ToString());
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/RequestActionFilter.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/RequestActionFilter.cs
new file mode 100644
index 0000000..10064e8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/RequestActionFilter.cs
@@ -0,0 +1,105 @@
+using Furion;
+using Furion.EventBus;
+using Furion.FriendlyException;
+using Furion.JsonSerialization;
+using Furion.UnifyResult;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.Controllers;
+using Microsoft.AspNetCore.Mvc.Filters;
+using Serilog;
+using System.Diagnostics;
+using System.Security.Claims;
+using UAParser;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 璇锋眰鏃ュ織鎷︽埅
+    /// </summary>
+    public class RequestActionFilter : IAsyncActionFilter
+    {
+        private readonly IEventPublisher _eventPublisher;
+
+        public RequestActionFilter(IEventPublisher eventPublisher)
+        {
+            _eventPublisher = eventPublisher;
+        }
+
+        public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
+        {
+            var httpContext = context.HttpContext;
+            var httpRequest = httpContext.Request;
+            
+            //鑾峰彇head淇℃伅
+            //
+            //var headrparam= httpContext.head
+
+            var sw = new Stopwatch();
+            sw.Start();
+            var actionContext = await next();
+            sw.Stop();
+
+            // 鍒ゆ柇鏄惁璇锋眰鎴愬姛锛堟病鏈夊紓甯稿氨鏄姹傛垚鍔燂級
+            var isRequestSucceed = actionContext.Exception == null;
+            var headers = httpRequest.Headers;
+            var clientInfo = headers.ContainsKey("User-Agent") ? Parser.GetDefault().Parse(headers["User-Agent"]) : null;
+            var actionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;
+            Log.Error("AppVersion" + headers["AppVersion"].Count + "/" + headers["AppVersion"] + "/"+ headers["IsDevelopment"]+"/"+ App.Configuration["AppVersion:Version"]);
+            //throw Oops.Oh(headers["AppVersion"]);
+            if (headers["AppVersion"].Count ==1 && headers["AppVersion"]!= App.Configuration["AppVersion:Version"] && headers["IsDevelopment"] == "false")
+            {
+                throw Oops.Oh("璇锋洿鏂癙DA鐗堟湰淇℃伅");
+            }
+            var ip = httpContext.GetRequestIPv4();
+
+            //鍒ゆ柇鏄惁闇�鏈夌鐢ㄦ搷浣滄棩蹇楀睘鎬�
+            foreach (var metadata in actionDescriptor.EndpointMetadata)
+            {
+                if (metadata.GetType() == typeof(DisableOpLogAttribute))
+                {
+                    //绂佺敤鎿嶄綔鏃ュ織锛岀洿鎺ヨ繑鍥�
+                    return;
+                }
+            }
+            await _eventPublisher.PublishAsync(new ChannelEventSource("Create:OpLog",
+                new SysLogOp
+                {
+                    Name = httpContext.User?.FindFirstValue(ClaimConst.CLAINM_NAME),
+                    Success = isRequestSucceed ? YesOrNot.Y : YesOrNot.N,
+                    Ip = ip,
+                    Location = httpRequest.GetRequestUrlAddress(),
+                    Browser = clientInfo?.UA.Family + clientInfo?.UA.Major,
+                    Os = clientInfo?.OS.Family + clientInfo?.OS.Major,
+                    Url = httpRequest.Path,
+                    ClassName = context.Controller.ToString(),
+                    MethodName = actionDescriptor?.ActionName,
+                    ReqMethod = httpRequest.Method,
+                    Param = context.ActionArguments.Count < 1 ? string.Empty : JSON.Serialize(context.ActionArguments),
+                    Result = actionContext.Result?.GetType() == typeof(JsonResult) ? JSON.Serialize(actionContext.Result) : string.Empty,
+                    ElapsedTime = sw.ElapsedMilliseconds,
+                    OpTime = DateTimeOffset.Now,
+                    Account = httpContext.User?.FindFirstValue(ClaimConst.CLAINM_ACCOUNT)
+                }));
+        }
+
+        /// <summary>
+        /// 寮傚父杩斿洖鍊�
+        /// </summary>
+        /// <param name="context"></param>
+        /// <param name="metadata"></param>
+        /// <returns></returns>
+        public IActionResult OnException(ExceptionContext context, ExceptionMetadata metadata)
+        {
+            return new JsonResult(new XnRestfulResult<object>
+            {
+                Code = metadata.StatusCode,
+                Success = false,
+                Data = null,
+                Message = metadata.Errors,
+                Extras = UnifyContext.Take(),
+                Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
+            });
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Options/RefreshTokenSettingOptions.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Options/RefreshTokenSettingOptions.cs
new file mode 100644
index 0000000..51a726c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Options/RefreshTokenSettingOptions.cs
@@ -0,0 +1,15 @@
+锘縰sing Furion.ConfigurableOptions;
+
+namespace Admin.NET.Core.Options
+{
+    /// <summary>
+    /// 鍒锋柊浠ょ墝璁剧疆
+    /// </summary>
+    public sealed class RefreshTokenSettingOptions : IConfigurableOptions
+    {
+        /// <summary>
+        /// 浠ょ墝杩囨湡鏃堕棿锛堝垎閽燂級
+        /// </summary>
+        public int ExpiredTime { get; set; } = 4200;
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysAppSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysAppSeedData.cs
new file mode 100644
index 0000000..d56df27
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysAppSeedData.cs
@@ -0,0 +1,30 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺搴旂敤琛ㄧ瀛愭暟鎹�
+    /// </summary>
+    public class SysAppSeedData : IEntitySeedData<SysApp>
+    {
+        /// <summary>
+        /// 绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysApp> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new SysApp{Id=535823141748805, Name="TestDemo", Code="TestDemo", Active="N", Status=0, Sort=100 },
+                new SysApp{Id=142307070898245, Name="寮�鍙戠鐞�", Code="system", Active="Y", Status=0, Sort=100 },
+                new SysApp{Id=142307070902341, Name="绯荤粺绠$悊", Code="manage", Active="N", Status=0, Sort=300 },
+                new SysApp{Id=142307070922869, Name="涓氬姟搴旂敤", Code="busiapp", Active="N", Status=0, Sort=400 },
+                new SysApp{Id=355686432948293, Name="浠撳簱浣滀笟", Code="warejob", Active="N", Status=0, Sort=500 },
+                new SysApp{Id=355686518018117, Name="缁熻鏌ヨ", Code="warecount", Active="N", Status=0, Sort=600 }
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysConfigSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysConfigSeedData.cs
new file mode 100644
index 0000000..80f8a13
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysConfigSeedData.cs
@@ -0,0 +1,57 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺鍙傛暟閰嶇疆琛ㄧ瀛愭暟鎹�
+    /// </summary>
+    public class SysConfigSeedData : IEntitySeedData<SysConfig>
+    {
+        /// <summary>
+        /// 绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysConfig> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new SysConfig{Id=142307070902342, Name="jwt瀵嗛挜", Code="DILON_JWT_SECRET", Value="weiben",SysFlag="Y", Remark="锛堥噸瑕侊級jwt瀵嗛挜锛岄粯璁や负绌猴紝鑷璁剧疆", Status=0, GroupCode="DEFAULT"},
+                new SysConfig{Id=142307070902343, Name="榛樿瀵嗙爜", Code="DILON_DEFAULT_PASSWORD", Value="123456",SysFlag="Y", Remark="榛樿瀵嗙爜", Status=0, GroupCode="DEFAULT"},
+                new SysConfig{Id=142307070902344, Name="token杩囨湡鏃堕棿", Code="DILON_TOKEN_EXPIRE", Value="86400",SysFlag="Y", Remark="token杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級", Status=0, GroupCode="DEFAULT"},
+                new SysConfig{Id=142307070902345, Name="session浼氳瘽杩囨湡鏃堕棿", Code="DILON_SESSION_EXPIRE", Value="7200",SysFlag="Y", Remark="session浼氳瘽杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級", Status=0, GroupCode="DEFAULT"},
+                //new SysConfig{Id=142307070902346, Name="闃块噷浜戠煭淇eyId", Code="DILON_ALIYUN_SMS_ACCESSKEY_ID", Value="浣犵殑keyId",SysFlag="Y", Remark="闃块噷浜戠煭淇eyId", Status=0, GroupCode="ALIYUN_SMS"},
+                //new SysConfig{Id=142307070902347, Name="闃块噷浜戠煭淇ecret", Code="DILON_ALIYUN_SMS_ACCESSKEY_SECRET", Value="浣犵殑secret",SysFlag="Y", Remark="闃块噷浜戠煭淇ecret", Status=0, GroupCode="ALIYUN_SMS"},
+                //new SysConfig{Id=142307070902348, Name="闃块噷浜戠煭淇$鍚�", Code="DILON_ALIYUN_SMS_SIGN_NAME", Value="浣犵殑绛惧悕",SysFlag="Y", Remark="闃块噷浜戠煭淇$鍚�", Status=0, GroupCode="ALIYUN_SMS"},
+                //new SysConfig{Id=142307070902349, Name="闃块噷浜戠煭淇�-鐧诲綍妯℃澘鍙�", Code="DILON_ALIYUN_SMS_LOGIN_TEMPLATE_CODE", Value="SMS_1877123456",SysFlag="Y", Remark="闃块噷浜戠煭淇�-鐧诲綍妯℃澘鍙�", Status=0, GroupCode="ALIYUN_SMS"},
+                //new SysConfig{Id=142307070902350, Name="闃块噷浜戠煭淇¢粯璁ゅけ鏁堟椂闂�", Code="DILON_ALIYUN_SMS_INVALIDATE_MINUTES", Value="5",SysFlag="Y", Remark="闃块噷浜戠煭淇¢粯璁ゅけ鏁堟椂闂达紙鍗曚綅锛氬垎閽燂級", Status=0, GroupCode="ALIYUN_SMS"},
+                //new SysConfig{Id=142307070902351, Name="鑵捐浜戠煭淇ecretId", Code="DILON_TENCENT_SMS_SECRET_ID", Value="浣犵殑secretId",SysFlag="Y", Remark="鑵捐浜戠煭淇ecretId", Status=0, GroupCode="TENCENT_SMS"},
+                //new SysConfig{Id=142307070902352, Name="鑵捐浜戠煭淇ecretKey", Code="DILON_TENCENT_SMS_SECRET_KEY", Value="浣犵殑secretkey",SysFlag="Y", Remark="鑵捐浜戠煭淇ecretKey", Status=0, GroupCode="TENCENT_SMS"},
+                //new SysConfig{Id=142307070902353, Name="鑵捐浜戠煭淇dkAppId", Code="DILON_TENCENT_SMS_SDK_APP_ID", Value="1400375123",SysFlag="Y", Remark="鑵捐浜戠煭淇dkAppId", Status=0, GroupCode="TENCENT_SMS"},
+                //new SysConfig{Id=142307070902354, Name="鑵捐浜戠煭淇$鍚�", Code="DILON_TENCENT_SMS_SIGN", Value="浣犵殑绛惧悕",SysFlag="Y", Remark="鑵捐浜戠煭淇$鍚�", Status=0, GroupCode="TENCENT_SMS"},
+                //new SysConfig{Id=142307070902355, Name="閭host", Code="DILON_EMAIL_HOST", Value="smtp.126.com",SysFlag="Y", Remark="閭host", Status=0, GroupCode="EMAIL"},
+                //new SysConfig{Id=142307070902356, Name="閭鐢ㄦ埛鍚�", Code="DILON_EMAIL_USERNAME", Value="test@126.com",SysFlag="Y", Remark="閭鐢ㄦ埛鍚�", Status=0, GroupCode="EMAIL"},
+                //new SysConfig{Id=142307070902357, Name="閭瀵嗙爜", Code="DILON_EMAIL_PASSWORD", Value="浣犵殑閭瀵嗙爜",SysFlag="Y", Remark="閭瀵嗙爜", Status=0, GroupCode="EMAIL"},
+                //new SysConfig{Id=142307070902358, Name="閭绔彛", Code="DILON_EMAIL_PORT", Value="465",SysFlag="Y", Remark="閭绔彛", Status=0, GroupCode="EMAIL"},
+                //new SysConfig{Id=142307070902359, Name="閭鏄惁寮�鍚痵sl", Code="DILON_EMAIL_SSL", Value="true",SysFlag="Y", Remark="閭鏄惁寮�鍚痵sl", Status=0, GroupCode="EMAIL"},
+                //new SysConfig{Id=142307070902360, Name="閭鍙戜欢浜�", Code="DILON_EMAIL_FROM", Value="test@126.com",SysFlag="Y", Remark="閭鍙戜欢浜�", Status=0, GroupCode="EMAIL"},
+                new SysConfig{Id=142307070902361, Name="Win鏈湴涓婁紶鏂囦欢璺緞", Code="DILON_FILE_UPLOAD_PATH_FOR_WINDOWS", Value="D:/tmp",SysFlag="Y", Remark="Win鏈湴涓婁紶鏂囦欢璺緞", Status=0, GroupCode="FILE_PATH"},
+                //new SysConfig{Id=142307070902362, Name="Linux/Mac鏈湴涓婁紶鏂囦欢璺緞", Code="DILON_FILE_UPLOAD_PATH_FOR_LINUX", Value="/tmp",SysFlag="Y", Remark="Linux/Mac鏈湴涓婁紶鏂囦欢璺緞", Status=0, GroupCode="FILE_PATH"},
+                new SysConfig{Id=142307070902363, Name="鏀惧紑XSS杩囨护鐨勬帴鍙�", Code="DILON_UN_XSS_FILTER_URL", Value="/demo/xssfilter,/demo/unxss",SysFlag="Y", Remark="澶氫釜url鍙互鐢ㄨ嫳鏂囬�楀彿闅斿紑", Status=0, GroupCode="DEFAULT"},
+                new SysConfig{Id=142307070902364, Name="鍗曠敤鎴风櫥闄嗙殑寮�鍏�", Code="DILON_ENABLE_SINGLE_LOGIN", Value="false",SysFlag="Y", Remark="true-鎵撳紑锛宖alse-鍏抽棴锛屽鏋滀竴涓汉鐧诲綍涓ゆ锛屽氨浼氬皢涓婁竴娆$櫥闄嗘尋涓嬪幓", Status=0, GroupCode="DEFAULT"},
+                new SysConfig{Id=142307070902365, Name="鐧诲綍楠岃瘉鐮佺殑寮�鍏�", Code="DILON_CAPTCHA_OPEN", Value="true",SysFlag="Y", Remark="true-鎵撳紑锛宖alse-鍏抽棴", Status=0, GroupCode="DEFAULT"},
+                //new SysConfig{Id=142307070902366, Name="Druid鐩戞帶鐧诲綍璐﹀彿", Code="DILON_DRUID_USERNAME", Value="superAdmin",SysFlag="Y", Remark="Druid鐩戞帶鐧诲綍璐﹀彿", Status=0, GroupCode="DEFAULT"},
+                //new SysConfig{Id=142307070902367, Name="Druid鐩戞帶鐣岄潰鐧诲綍瀵嗙爜", Code="DILON_DRUID_PASSWORD", Value="123456",SysFlag="Y", Remark="Druid鐩戞帶鐣岄潰鐧诲綍瀵嗙爜", Status=0, GroupCode="DEFAULT"},
+                //new SysConfig{Id=142307070902368, Name="闃块噷浜戝畾浣峚pi鎺ュ彛鍦板潃", Code="DILON_IP_GEO_API", Value="http://api01.aliyun.venuscn.com/ip?ip=%s",SysFlag="Y", Remark="闃块噷浜戝畾浣峚pi鎺ュ彛鍦板潃", Status=0, GroupCode="DEFAULT"},
+               // new SysConfig{Id=142307070902369, Name="闃块噷浜戝畾浣峚ppCode", Code="DILON_IP_GEO_APP_CODE", Value="461535aabeae4f34861884d392f5d452",SysFlag="Y", Remark="闃块噷浜戝畾浣峚ppCode", Status=0, GroupCode="DEFAULT"},
+                //new SysConfig{Id=142307070902370, Name="Oauth鐢ㄦ埛鐧诲綍鐨勫紑鍏�", Code="DILON_ENABLE_OAUTH_LOGIN", Value="true",SysFlag="Y", Remark="Oauth鐢ㄦ埛鐧诲綍鐨勫紑鍏�", Status=0, GroupCode="OAUTH"},
+                //new SysConfig{Id=142307070902371, Name="Oauth鐮佷簯鐧诲綍ClientId", Code="DILON_OAUTH_GITEE_CLIENT_ID", Value="浣犵殑clientId",SysFlag="Y", Remark="Oauth鐮佷簯鐧诲綍ClientId", Status=0, GroupCode="OAUTH"},
+                //new SysConfig{Id=142307070902372, Name="Oauth鐮佷簯鐧诲綍ClientSecret", Code="DILON_OAUTH_GITEE_CLIENT_SECRET", Value="浣犵殑clientSecret",SysFlag="Y", Remark="Oauth鐮佷簯鐧诲綍ClientSecret", Status=0, GroupCode="OAUTH"},
+                //new SysConfig{Id=142307070902373, Name="Oauth鐮佷簯鐧诲綍鍥炶皟鍦板潃", Code="DILON_OAUTH_GITEE_REDIRECT_URI", Value="http://127.0.0.1:5566/oauth/callback/gitee",SysFlag="Y", Remark="Oauth鐮佷簯鐧诲綍鍥炶皟鍦板潃", Status=0, GroupCode="OAUTH"},
+                //new SysConfig{Id=142307070902374, Name="婕旂ず鐜", Code="DILON_DEMO_ENV_FLAG", Value="false",SysFlag="Y", Remark="婕旂ず鐜鐨勫紑鍏�,true-鎵撳紑锛宖alse-鍏抽棴锛屽鏋滄紨绀虹幆澧冨紑鍚紝鍒欏彧鑳借鏁版嵁涓嶈兘鍐欐暟鎹�", Status=0, GroupCode="DEFAULT"},
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictDataSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictDataSeedData.cs
new file mode 100644
index 0000000..2e1fca1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictDataSeedData.cs
@@ -0,0 +1,261 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺瀛楀吀鍊肩瀛愭暟鎹�
+    /// </summary>
+    public class SysDictDataSeedData : IEntitySeedData<SysDictData>
+    {
+        /// <summary>
+        /// 绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysDictData> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new SysDictData{Id=142307070902375, TypeId=142307070906484, Value="鐢�", Code="1", Sort=100, Remark="鐢锋��", Status=0 },
+                new SysDictData{Id=142307070902376, TypeId=142307070906484, Value="濂�", Code="2", Sort=100, Remark="濂虫��", Status=0 },
+                new SysDictData{Id=142307070902377, TypeId=142307070906484, Value="鏈煡", Code="3", Sort=100, Remark="鏈煡鎬у埆", Status=0 },
+
+                //new SysDictData{Id=142307070902378, TypeId=142307070906485, Value="榛樿甯搁噺", Code="DEFAULT", Sort=100, Remark="榛樿甯搁噺锛岄兘浠IAONUO_寮�澶寸殑", Status=0 },
+                //new SysDictData{Id=142307070902379, TypeId=142307070906485, Value="闃块噷浜戠煭淇�", Code="ALIYUN_SMS", Sort=100, Remark="闃块噷浜戠煭淇¢厤缃�", Status=0 },
+                //new SysDictData{Id=142307070902380, TypeId=142307070906485, Value="鑵捐浜戠煭淇�", Code="TENCENT_SMS", Sort=100, Remark="鑵捐浜戠煭淇�", Status=0 },
+                //new SysDictData{Id=142307070902381, TypeId=142307070906485, Value="閭欢閰嶇疆", Code="EMAIL", Sort=100, Remark="閭欢閰嶇疆", Status=0 },
+                //new SysDictData{Id=142307070902382, TypeId=142307070906485, Value="鏂囦欢涓婁紶璺緞", Code="FILE_PATH", Sort=100, Remark="鏂囦欢涓婁紶璺緞", Status=0 },
+                //new SysDictData{Id=142307070902383, TypeId=142307070906485, Value="Oauth閰嶇疆", Code="OAUTH", Sort=100, Remark="Oauth閰嶇疆", Status=0 },
+
+                new SysDictData{Id=142307070902384, TypeId=142307070906483, Value="姝e父", Code="0", Sort=100, Remark="姝e父", Status=0 },
+                new SysDictData{Id=142307070902385, TypeId=142307070906483, Value="鍋滅敤", Code="1", Sort=100, Remark="鍋滅敤", Status=0 },
+                new SysDictData{Id=142307070902386, TypeId=142307070906483, Value="鍒犻櫎", Code="2", Sort=100, Remark="鍒犻櫎", Status=0 },
+
+                new SysDictData{Id=142307070902387, TypeId=142307070906486, Value="鍚�", Code="N", Sort=100, Remark="鍚�", Status=0 },
+                new SysDictData{Id=142307070902388, TypeId=142307070906486, Value="鏄�", Code="Y", Sort=100, Remark="鏄�", Status=0 },
+
+                new SysDictData{Id=142307070902389, TypeId=142307070906487, Value="鐧诲綍", Code="1", Sort=100, Remark="鐧诲綍", Status=0 },
+                new SysDictData{Id=142307070902390, TypeId=142307070906487, Value="鐧诲嚭", Code="2", Sort=100, Remark="鐧诲嚭", Status=0 },
+
+                new SysDictData{Id=142307070902391, TypeId=142307070906488, Value="鐩綍", Code="0", Sort=100, Remark="鐩綍", Status=0 },
+                new SysDictData{Id=142307070902392, TypeId=142307070906488, Value="鑿滃崟", Code="1", Sort=100, Remark="鑿滃崟", Status=0 },
+                new SysDictData{Id=142307070902393, TypeId=142307070906488, Value="鎸夐挳", Code="2", Sort=100, Remark="鎸夐挳", Status=0 },
+
+                new SysDictData{Id=142307070902394, TypeId=142307070906489, Value="鏈彂閫�", Code="0", Sort=100, Remark="鏈彂閫�", Status=0 },
+                new SysDictData{Id=142307070902395, TypeId=142307070906489, Value="鍙戦�佹垚鍔�", Code="1", Sort=100, Remark="鍙戦�佹垚鍔�", Status=0 },
+                new SysDictData{Id=142307070902396, TypeId=142307070906489, Value="鍙戦�佸け璐�", Code="2", Sort=100, Remark="鍙戦�佸け璐�", Status=0 },
+                new SysDictData{Id=142307070902397, TypeId=142307070906489, Value="澶辨晥", Code="3", Sort=100, Remark="澶辨晥", Status=0 },
+
+                new SysDictData{Id=142307070902398, TypeId=142307070906490, Value="鏃�", Code="0", Sort=100, Remark="鏃�", Status=0 },
+                new SysDictData{Id=142307070902399, TypeId=142307070906490, Value="缁勪欢", Code="1", Sort=100, Remark="缁勪欢", Status=0 },
+                new SysDictData{Id=142307070906437, TypeId=142307070906490, Value="鍐呴摼", Code="2", Sort=100, Remark="鍐呴摼", Status=0 },
+                new SysDictData{Id=142307070906438, TypeId=142307070906490, Value="澶栭摼", Code="3", Sort=100, Remark="澶栭摼", Status=0 },
+
+                new SysDictData{Id=142307070906439, TypeId=142307070906491, Value="绯荤粺鏉冮噸", Code="1", Sort=100, Remark="绯荤粺鏉冮噸", Status=0 },
+                new SysDictData{Id=142307070906440, TypeId=142307070906491, Value="涓氬姟鏉冮噸", Code="2", Sort=100, Remark="涓氬姟鏉冮噸", Status=0 },
+
+
+                new SysDictData{Id=142307070906441, TypeId=142307070906492, Value="鍏ㄩ儴鏁版嵁", Code="1", Sort=100, Remark="鍏ㄩ儴鏁版嵁", Status=0 },
+                new SysDictData{Id=142307070906442, TypeId=142307070906492, Value="鏈儴闂ㄥ強浠ヤ笅鏁版嵁", Code="2", Sort=100, Remark="鏈儴闂ㄥ強浠ヤ笅鏁版嵁", Status=0 },
+                new SysDictData{Id=142307070906443, TypeId=142307070906492, Value="鏈儴闂ㄦ暟鎹�", Code="3", Sort=100, Remark="鏈儴闂ㄦ暟鎹�", Status=0 },
+
+                new SysDictData{Id=142307070906444, TypeId=142307070906492, Value="浠呮湰浜烘暟鎹�", Code="4", Sort=100, Remark="浠呮湰浜烘暟鎹�", Status=0 },
+                new SysDictData{Id=142307070906445, TypeId=142307070906492, Value="鑷畾涔夋暟鎹�", Code="5", Sort=100, Remark="鑷畾涔夋暟鎹�", Status=0 },
+
+                //new SysDictData{Id=142307070906446, TypeId=142307070906493, Value="app", Code="1", Sort=100, Remark="app", Status=0 },
+                //new SysDictData{Id=142307070906447, TypeId=142307070906493, Value="pc", Code="2", Sort=100, Remark="pc", Status=0 },
+                //new SysDictData{Id=142307070906448, TypeId=142307070906493, Value="鍏朵粬", Code="3", Sort=100, Remark="鍏朵粬", Status=0 },
+
+                new SysDictData{Id=142307070906449, TypeId=142307070906494, Value="鍏跺畠", Code="0", Sort=100, Remark="鍏跺畠", Status=0 },
+                new SysDictData{Id=142307070906450, TypeId=142307070906494, Value="澧炲姞", Code="1", Sort=100, Remark="澧炲姞", Status=0 },
+                new SysDictData{Id=142307070906451, TypeId=142307070906494, Value="鍒犻櫎", Code="2", Sort=100, Remark="鍒犻櫎", Status=0 },
+                new SysDictData{Id=142307070906452, TypeId=142307070906494, Value="缂栬緫", Code="3", Sort=100, Remark="缂栬緫", Status=0 },
+                new SysDictData{Id=142307070906453, TypeId=142307070906494, Value="鏇存柊", Code="4", Sort=100, Remark="鏇存柊", Status=0 },
+                new SysDictData{Id=142307070906454, TypeId=142307070906494, Value="鏌ヨ", Code="5", Sort=100, Remark="鏌ヨ", Status=0 },
+                new SysDictData{Id=142307070906455, TypeId=142307070906494, Value="璇︽儏", Code="6", Sort=100, Remark="璇︽儏", Status=0 },
+                new SysDictData{Id=142307070906456, TypeId=142307070906494, Value="鏍�", Code="7", Sort=100, Remark="鏍�", Status=0 },
+                new SysDictData{Id=142307070906457, TypeId=142307070906494, Value="瀵煎叆", Code="8", Sort=100, Remark="瀵煎叆", Status=0 },
+                new SysDictData{Id=142307070906458, TypeId=142307070906494, Value="瀵煎嚭", Code="9", Sort=100, Remark="瀵煎嚭", Status=0 },
+                new SysDictData{Id=142307070906459, TypeId=142307070906494, Value="鎺堟潈", Code="10", Sort=100, Remark="鎺堟潈", Status=0 },
+                new SysDictData{Id=142307070906460, TypeId=142307070906494, Value="寮洪��", Code="11", Sort=100, Remark="寮洪��", Status=0 },
+                new SysDictData{Id=142307070906461, TypeId=142307070906494, Value="娓呯┖", Code="12", Sort=100, Remark="娓呯┖", Status=0 },
+                new SysDictData{Id=142307070906462, TypeId=142307070906494, Value="淇敼鐘舵��", Code="13", Sort=100, Remark="淇敼鐘舵��", Status=0 },
+
+                new SysDictData{Id=142307070906463, TypeId=142307070906495, Value="闃块噷浜�", Code="1", Sort=100, Remark="闃块噷浜�", Status=0 },
+                new SysDictData{Id=142307070906464, TypeId=142307070906495, Value="鑵捐浜�", Code="2", Sort=100, Remark="鑵捐浜�", Status=0 },
+                new SysDictData{Id=142307070906465, TypeId=142307070906495, Value="minio", Code="3", Sort=100, Remark="minio", Status=0 },
+                new SysDictData{Id=142307070906466, TypeId=142307070906495, Value="鏈湴", Code="4", Sort=100, Remark="鏈湴", Status=0 },
+
+                new SysDictData{Id=142307070906467, TypeId=142307070910533, Value="杩愯", Code="1", Sort=100, Remark="杩愯", Status=0 },
+                new SysDictData{Id=142307070906468, TypeId=142307070910533, Value="鍋滄", Code="2", Sort=100, Remark="鍋滄", Status=0 },
+
+                new SysDictData{Id=142307070906469, TypeId=142307070910534, Value="閫氱煡", Code="1", Sort=100, Remark="閫氱煡", Status=0 },
+                new SysDictData{Id=142307070906470, TypeId=142307070910534, Value="鍏憡", Code="2", Sort=100, Remark="鍏憡", Status=0 },
+
+                new SysDictData{Id=142307070906471, TypeId=142307070910535, Value="鑽夌", Code="0", Sort=100, Remark="鑽夌", Status=0 },
+                new SysDictData{Id=142307070906472, TypeId=142307070910535, Value="鍙戝竷", Code="1", Sort=100, Remark="鍙戝竷", Status=0 },
+
+                new SysDictData{Id=142307070906473, TypeId=142307070910535, Value="鎾ゅ洖", Code="2", Sort=100, Remark="鎾ゅ洖", Status=0 },
+                new SysDictData{Id=142307070906474, TypeId=142307070910535, Value="鍒犻櫎", Code="3", Sort=100, Remark="鍒犻櫎", Status=0 },
+
+                new SysDictData{Id=142307070906475, TypeId=142307070910536, Value="鏄�", Code="true", Sort=100, Remark="鏄�", Status=0 },
+                new SysDictData{Id=142307070906476, TypeId=142307070910536, Value="鍚�", Code="false", Sort=100, Remark="鍚�", Status=0 },
+
+                new SysDictData{Id=142307070906477, TypeId=142307070910537, Value="涓嬭浇鍘嬬缉鍖�", Code="1", Sort=100, Remark="涓嬭浇鍘嬬缉鍖�", Status=0 },
+                new SysDictData{Id=142307070906478, TypeId=142307070910537, Value="鐢熸垚鍒版湰椤圭洰", Code="2", Sort=100, Remark="鐢熸垚鍒版湰椤圭洰", Status=0 },
+
+                new SysDictData{Id=142307070906479, TypeId=142307070910538, Value="GET", Code="1", Sort=100, Remark="GET", Status=0 },
+                new SysDictData{Id=142307070906480, TypeId=142307070910538, Value="POST", Code="2", Sort=100, Remark="POST", Status=0 },
+                new SysDictData{Id=142307070906481, TypeId=142307070910538, Value="PUT", Code="3", Sort=100, Remark="PUT", Status=0 },
+                new SysDictData{Id=142307070906482, TypeId=142307070910538, Value="DELETE", Code="4", Sort=100, Remark="DELETE", Status=0 },
+
+                new SysDictData{Id=142307070922829, TypeId=142307070922827, Value="澶栭敭", Code="fk", Sort=100, Remark="澶栭敭", Status=0 },
+                new SysDictData{Id=142307070922830, TypeId=142307070922827, Value="杈撳叆妗�", Code="input", Sort=100, Remark="杈撳叆妗�", Status=0 },
+                new SysDictData{Id=142307070922831, TypeId=142307070922827, Value="鏃ユ湡閫夋嫨", Code="datepicker", Sort=100, Remark="鏃ユ湡閫夋嫨", Status=0 },
+                new SysDictData{Id=386523071475758, TypeId=142307070922827, Value="鏃ユ湡鏃堕棿閫夋嫨", Code="datetimepicker", Sort=100, Remark="鏃ユ湡鏃堕棿閫夋嫨", Status=0 },
+
+                new SysDictData{Id=142307070922832, TypeId=142307070922827, Value="涓嬫媺妗�", Code="select", Sort=100, Remark="涓嬫媺妗�", Status=0 },
+                new SysDictData{Id=142307070922833, TypeId=142307070922827, Value="鍗曢�夋", Code="radio", Sort=100, Remark="鍗曢�夋", Status=0 },
+                new SysDictData{Id=142307070922834, TypeId=142307070922827, Value="寮�鍏�", Code="switch", Sort=100, Remark="寮�鍏�", Status=0 },
+                new SysDictData{Id=142307070922835, TypeId=142307070922827, Value="澶氶�夋", Code="checkbox", Sort=100, Remark="澶氶�夋", Status=0 },
+                new SysDictData{Id=142307070922836, TypeId=142307070922827, Value="鏁板瓧杈撳叆妗�", Code="inputnumber", Sort=100, Remark="鏁板瓧杈撳叆妗�", Status=0 },
+                new SysDictData{Id=142307070922837, TypeId=142307070922827, Value="鏂囨湰鍩�", Code="textarea", Sort=100, Remark="鏂囨湰鍩�", Status=0 },
+
+                new SysDictData{Id=142307070922838, TypeId=142307070922828, Value="绛変簬", Code="==", Sort=1, Remark="绛変簬", Status=0 },
+                new SysDictData{Id=142307070922839, TypeId=142307070922828, Value="妯$硦", Code="like", Sort=2, Remark="妯$硦", Status=0 },
+                new SysDictData{Id=142307070922840, TypeId=142307070922828, Value="澶т簬", Code=">", Sort=3, Remark="澶т簬", Status=0 },
+                new SysDictData{Id=142307070922841, TypeId=142307070922828, Value="灏忎簬", Code="<", Sort=4, Remark="灏忎簬", Status=0 },
+                new SysDictData{Id=142307070922842, TypeId=142307070922828, Value="涓嶇瓑浜�", Code="!=", Sort=5, Remark="涓嶇瓑浜�", Status=0 },
+                new SysDictData{Id=142307070922843, TypeId=142307070922828, Value="澶т簬绛変簬", Code=">=", Sort=6, Remark="澶т簬绛変簬", Status=0 },
+                new SysDictData{Id=142307070922844, TypeId=142307070922828, Value="灏忎簬绛変簬", Code="<=", Sort=7, Remark="灏忎簬绛変簬", Status=0 },
+                new SysDictData{Id=142307070922845, TypeId=142307070922828, Value="涓嶄负绌�", Code="isNotNull", Sort=8, Remark="涓嶄负绌�", Status=0 },
+                new SysDictData{Id=386523071475759, TypeId=142307070922828, Value="浠嬩簬", Code="between", Sort=9, Remark="浠嬩簬", Status=0 },
+
+                new SysDictData{Id=142307070922851, TypeId=142307070922829, Value="int", Code="int", Sort=100, Remark="int", Status=0 },
+                new SysDictData{Id=142307070922846, TypeId=142307070922829, Value="long", Code="long", Sort=100, Remark="long", Status=0 },
+                new SysDictData{Id=142307070922847, TypeId=142307070922829, Value="string", Code="string", Sort=100, Remark="string", Status=0 },
+                new SysDictData{Id=142307070922850, TypeId=142307070922829, Value="bool", Code="bool", Sort=100, Remark="bool", Status=0 },
+                new SysDictData{Id=142307070922852, TypeId=142307070922829, Value="double", Code="double", Sort=100, Remark="double", Status=0 },
+                new SysDictData{Id=142307070922848, TypeId=142307070922829, Value="DateTime", Code="DateTime", Sort=100, Remark="DateTime", Status=0 },
+                new SysDictData{Id=142307070922861, TypeId=142307070922829, Value="float", Code="float", Sort=100, Remark="float", Status=0 },
+                new SysDictData{Id=142307070922862, TypeId=142307070922829, Value="decimal", Code="decimal", Sort=100, Remark="decimal", Status=0 },
+                new SysDictData{Id=142307070922863, TypeId=142307070922829, Value="Guid", Code="Guid", Sort=100, Remark="Guid", Status=0 },
+                new SysDictData{Id=142307070922864, TypeId=142307070922829, Value="DateTimeOffset", Code="DateTimeOffset", Sort=100, Remark="DateTimeOffset", Status=0 },
+
+                new SysDictData{Id=142307070926943, TypeId=142307070926941, Value="闆嗗洟瑙掕壊", Code="0", Sort=100, Remark="闆嗗洟瑙掕壊", Status=0 },
+                new SysDictData{Id=142307070926944, TypeId=142307070926941, Value="鍔犵洘鍟嗚鑹�", Code="1", Sort=100, Remark="鍔犵洘鍟嗚鑹�", Status=0 },
+                new SysDictData{Id=142307070926945, TypeId=142307070926941, Value="闂ㄥ簵瑙掕壊", Code="2", Sort=100, Remark="闂ㄥ簵瑙掕壊", Status=0 },
+
+                new SysDictData{Id=142307070926946, TypeId=142307070926942, Value="涓�绾�", Code="1", Sort=100, Remark="涓�绾�", Status=0 },
+                new SysDictData{Id=142307070926947, TypeId=142307070926942, Value="浜岀骇", Code="2", Sort=100, Remark="浜岀骇", Status=0 },
+                new SysDictData{Id=142307070926948, TypeId=142307070926942, Value="涓夌骇", Code="3", Sort=100, Remark="涓夌骇", Status=0 },
+                new SysDictData{Id=142307070926949, TypeId=142307070926942, Value="鍥涚骇", Code="4", Sort=100, Remark="鍥涚骇", Status=0 },
+
+                new SysDictData{Id=285605336563781, TypeId=285605149831237, Value="榛樿琛ㄥ崟鍒嗙被", Code="DefaultFormType", Sort=100, Remark="榛樿琛ㄥ崟鍒嗙被", Status=0 },
+
+                new SysDictData{Id=285641495289925, TypeId=285641358889029, Value="榛樿鍒嗙被", Code="DefaultGroup", Sort=100, Remark="榛樿鍒嗙被", Status=0 },
+
+                new SysDictData{Id=355697634480197, TypeId=355694205325381, Value="鍏朵粬", Code="0", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355697676427333, TypeId=355694205325381, Value="鏈ㄨ川", Code="1", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355697726726213, TypeId=355694205325381, Value="閲戝睘", Code="2", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355697755361349, TypeId=355694205325381, Value="濉戞枡", Code="3", Sort=100, Remark="", Status=0 },
+
+                new SysDictData{Id=355697944657989, TypeId=355697881423941, Value="绂佺敤", Code="0", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355697974415429, TypeId=355697881423941, Value="绌洪棽", Code="1", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355698005966917, TypeId=355697881423941, Value="缁勭洏", Code="2", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355698032828485, TypeId=355697881423941, Value="搴撲綅", Code="3", Sort=100, Remark="", Status=0 },
+
+                new SysDictData{Id=355697634480198, TypeId=355697881423942, Value="閫氱敤", Code="0", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355697676427399, TypeId=355697881423942, Value="鍗卞寲鍝�", Code="1", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355697726726200, TypeId=355697881423942, Value="娑蹭綋", Code="2", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355697755361301, TypeId=355697881423942, Value="璐甸噸鍝�", Code="3", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355697755361302, TypeId=355697881423942, Value="姘斾綋", Code="4", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355697755361303, TypeId=355697881423942, Value="浣庢俯", Code="5", Sort=100, Remark="", Status=0 },
+
+                new SysDictData{Id=355698270015557, TypeId=355698224758853, Value="鍏朵粬", Code="0", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355698303508549, TypeId=355698224758853, Value="绔嬩綋搴�", Code="1", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355698328531013, TypeId=355698224758853, Value="鏅�氬簱", Code="2", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355698362712133, TypeId=355698224758853, Value="鍏叡搴�", Code="3", Sort=100, Remark="", Status=0 },
+
+                new SysDictData{Id=355698476777541, TypeId=355698441912389, Value="绌洪棽", Code="1", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355698510786629, TypeId=355698441912389, Value="寰呭叆", Code="2", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355698549424197, TypeId=355698441912389, Value="瀛樿揣", Code="3", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355698576941125, TypeId=355698441912389, Value="寰呭嚭", Code="4", Sort=100, Remark="", Status=0 },
+
+                new SysDictData{Id=355698694561861, TypeId=355698661130309, Value="浣�", Code="1", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355698716401733, TypeId=355698661130309, Value="涓�", Code="2", Sort=100, Remark="", Status=0 },
+                new SysDictData{Id=355698740326469, TypeId=355698661130309, Value="楂�", Code="3", Sort=100, Remark="", Status=0 },
+
+                new SysDictData{Id=355698898735173,TypeId=355698855280709,Value="鍏嶆",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355698924970053,TypeId=355698855280709,Value="鎶芥",Code="2",Sort=100,Remark="",Status=0},
+
+                new SysDictData{Id=355699041800261,TypeId=355699003580485,Value="鍘熸潗鏂�",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699063255109,TypeId=355699003580485,Value="鍗婃垚鍝�",Code="2",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699088330821,TypeId=355699003580485,Value="鎴愬搧",Code="3",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699113156677,TypeId=355699003580485,Value="绌烘墭",Code="4",Sort=100,Remark="",Status=0},
+
+                new SysDictData{Id=355699219353669,TypeId=355699189051461,Value="闀垮害",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699243540549,TypeId=355699189051461,Value="閲嶉噺",Code="2",Sort=100,Remark="",Status=0},
+
+                new SysDictData{Id=355699345645637,TypeId=355699314061381,Value="cm",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699367575621,TypeId=355699314061381,Value="t",Code="2",Sort=100,Remark="",Status=0},
+
+                new SysDictData{Id=355699479236677,TypeId=355699447029829,Value="鎵嬪姩",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699505229893,TypeId=355699447029829,Value="鑷姩",Code="2",Sort=100,Remark="",Status=0},
+
+                new SysDictData{Id=355699615133765,TypeId=355699576467525,Value="鍏ュ簱",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699638476869,TypeId=355699576467525,Value="鍑哄簱",Code="2",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699661889605,TypeId=355699576467525,Value="绉诲簱",Code="3",Sort=100,Remark="",Status=0},
+
+                new SysDictData{Id=355699760455749,TypeId=355699731099717,Value="鏈墽琛�",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699784736837,TypeId=355699731099717,Value="鎵ц涓�",Code="2",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699813859397,TypeId=355699731099717,Value="瀹屾垚",Code="3",Sort=100,Remark="",Status=0},
+
+                new SysDictData{Id=355699760455798,TypeId=355699731099718,Value="鏈墽琛�",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699784736899,TypeId=355699731099718,Value="鎵ц涓�-AGV",Code="2",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699813859300,TypeId=355699731099718,Value="鎵ц涓�-杈撻�佺嚎",Code="3",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699813859301,TypeId=355699731099718,Value="鎵ц涓�-鍫嗗灈鏈�",Code="4",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699813859302,TypeId=355699731099718,Value="绛夊緟",Code="5",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=355699813859303,TypeId=355699731099718,Value="瀹屾垚",Code="6",Sort=100,Remark="",Status=0},
+
+                new SysDictData{Id=383290784104517,TypeId=383290718294085,Value="娉℃搏鍒囧壊",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=383290816860229,TypeId=383290718294085,Value="瑁呴厤杞﹂棿",Code="2",Sort=100,Remark="",Status=0},
+
+                new SysDictData{Id=383317608218693,TypeId=383317542490181,Value="鏈紑濮�",Code="0",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=383317718302789,TypeId=383317542490181,Value="杩愰�佷腑",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=383317751234629,TypeId=383317542490181,Value="瀹屾垚",Code="2",Sort=100,Remark="",Status=0},
+
+                new SysDictData{Id=384394737053765,TypeId=384394636988485,Value="AGV",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=384394851618885,TypeId=384394636988485,Value="鍫嗗灈鏈�",Code="2",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=384394877870149,TypeId=384394636988485,Value="RGV",Code="3",Sort=100,Remark="",Status=0},
+
+                new SysDictData{Id=385412179521605,TypeId=385412129075269,Value="鍒囧壊",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=385412217618501,TypeId=385412129075269,Value="鍘嬪悎",Code="2",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=385412280418373,TypeId=385412129075269,Value="CNC",Code="3",Sort=100,Remark="",Status=0},
+
+                new SysDictData{Id=386523049214021,TypeId=386522984120389,Value="鍏ュ簱鍙�",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=386523071475781,TypeId=386522984120389,Value="鍑哄簱鍙�",Code="2",Sort=100,Remark="",Status=0},
+
+
+                new SysDictData{Id=386523049214025,TypeId=386522984120391,Value="鏈紑濮�",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=386523071475726,TypeId=386522984120391,Value="杩涜涓�",Code="2",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=386523071475727,TypeId=386522984120391,Value="瀹屾垚",Code="3",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=386523071475728,TypeId=386522984120391,Value="鎾ゅ洖",Code="4",Sort=100,Remark="",Status=0},
+
+                new SysDictData{Id=386523049214029,TypeId=386522984120392,Value="鍏ュ簱",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=386523071475730,TypeId=386522984120392,Value="鍑哄簱",Code="2",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=386523071475731,TypeId=386522984120392,Value="璋冩嫧",Code="3",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=386523071475732,TypeId=386522984120392,Value="瓒婂簱",Code="4",Sort=100,Remark="",Status=0},
+
+                new SysDictData{Id=386523049214033,TypeId=386522984120393,Value="鏈笅鍙�",Code="1",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=386523071475734,TypeId=386522984120393,Value="宸蹭笅鍙�",Code="2",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=386523071475735,TypeId=386522984120393,Value="鎵ц涓�",Code="3",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=386523071475736,TypeId=386522984120393,Value="瀹屾垚",Code="4",Sort=100,Remark="",Status=0},
+                new SysDictData{Id=386523071475737,TypeId=386522984120393,Value="鎾ゅ洖",Code="5",Sort=100,Remark="",Status=0},
+
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictTypeSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictTypeSeedData.cs
new file mode 100644
index 0000000..f303a60
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictTypeSeedData.cs
@@ -0,0 +1,86 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺瀛楀吀绫诲瀷绉嶅瓙鏁版嵁
+    /// </summary>
+    public class SysDictTypeSeedData : IEntitySeedData<SysDictType>
+    {
+        /// <summary>
+        /// 绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysDictType> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new SysDictType{Id=142307070906483, Name="閫氱敤鐘舵��", Code="common_status", Sort=100, Remark="閫氱敤鐘舵��", Status=0 },
+                new SysDictType{Id=142307070906484, Name="鎬у埆", Code="sex", Sort=100, Remark="鎬у埆瀛楀吀", Status=0 },
+                new SysDictType{Id=142307070906485, Name="甯搁噺鐨勫垎绫�", Code="consts_type", Sort=100, Remark="甯搁噺鐨勫垎绫伙紝鐢ㄤ簬鍖哄埆涓�缁勯厤缃�", Status=0 },
+                new SysDictType{Id=142307070906486, Name="鏄惁", Code="yes_or_no", Sort=100, Remark="鏄惁", Status=0 },
+                new SysDictType{Id=142307070906487, Name="璁块棶绫诲瀷", Code="vis_type", Sort=100, Remark="璁块棶绫诲瀷", Status=0 },
+                new SysDictType{Id=142307070906488, Name="鑿滃崟绫诲瀷", Code="menu_type", Sort=100, Remark="鑿滃崟绫诲瀷", Status=0 },
+                new SysDictType{Id=142307070906489, Name="鍙戦�佺被鍨�", Code="send_type", Sort=100, Remark="鍙戦�佺被鍨�", Status=0 },
+                new SysDictType{Id=142307070906490, Name="鎵撳紑鏂瑰紡", Code="open_type", Sort=100, Remark="鎵撳紑鏂瑰紡", Status=0 },
+                new SysDictType{Id=142307070906491, Name="鑿滃崟鏉冮噸", Code="menu_weight", Sort=100, Remark="鑿滃崟鏉冮噸", Status=0 },
+                new SysDictType{Id=142307070906492, Name="鏁版嵁鑼冨洿绫诲瀷", Code="data_scope_type", Sort=100, Remark="鏁版嵁鑼冨洿绫诲瀷", Status=0 },
+                //new SysDictType{Id=142307070906493, Name="鐭俊鍙戦�佹潵婧�", Code="sms_send_source", Sort=100, Remark="鐭俊鍙戦�佹潵婧�", Status=0 },
+                new SysDictType{Id=142307070906494, Name="鎿嶄綔绫诲瀷", Code="op_type", Sort=100, Remark="鎿嶄綔绫诲瀷", Status=0 },
+                new SysDictType{Id=142307070906495, Name="鏂囦欢瀛樺偍浣嶇疆", Code="file_storage_location", Sort=100, Remark="鏂囦欢瀛樺偍浣嶇疆", Status=0 },
+                new SysDictType{Id=142307070910533, Name="杩愯鐘舵��", Code="run_status", Sort=100, Remark="瀹氭椂浠诲姟杩愯鐘舵��", Status=0 },
+                new SysDictType{Id=142307070910534, Name="閫氱煡鍏憡绫诲瀷", Code="notice_type", Sort=100, Remark="閫氱煡鍏憡绫诲瀷", Status=0 },
+                new SysDictType{Id=142307070910535, Name="閫氱煡鍏憡鐘舵��", Code="notice_status", Sort=100, Remark="閫氱煡鍏憡鐘舵��", Status=0 },
+                new SysDictType{Id=142307070910536, Name="鏄惁boolean", Code="yes_true_false", Sort=100, Remark="鏄惁boolean", Status=0 },
+                new SysDictType{Id=142307070910537, Name="浠g爜鐢熸垚鏂瑰紡", Code="code_gen_create_type", Sort=100, Remark="浠g爜鐢熸垚鏂瑰紡", Status=0 },
+                new SysDictType{Id=142307070910538, Name="璇锋眰鏂瑰紡", Code="request_type", Sort=100, Remark="璇锋眰鏂瑰紡", Status=0 },
+                new SysDictType{Id=142307070922827, Name="浠g爜鐢熸垚浣滅敤绫诲瀷", Code="code_gen_effect_type", Sort=100, Remark="浠g爜鐢熸垚浣滅敤绫诲瀷", Status=0 },
+                new SysDictType{Id=142307070922828, Name="浠g爜鐢熸垚鏌ヨ绫诲瀷", Code="code_gen_query_type", Sort=100, Remark="浠g爜鐢熸垚鏌ヨ绫诲瀷", Status=0 },
+                new SysDictType{Id=142307070922829, Name="浠g爜鐢熸垚.NET绫诲瀷", Code="code_gen_net_type", Sort=100, Remark="浠g爜鐢熸垚.NET绫诲瀷", Status=0 },
+                new SysDictType{Id=142307070926941, Name="瑙掕壊绫诲瀷", Code="role_type", Sort=100, Remark="瑙掕壊绫诲瀷", Status=0 },
+                new SysDictType{Id=142307070926942, Name="鏈烘瀯绫诲瀷", Code="org_type", Sort=100, Remark="鏈烘瀯绫诲瀷", Status=0 },
+
+                new SysDictType{Id=285605149831237, Name="琛ㄥ崟绫诲瀷", Code="form_type", Sort=100, Remark="琛ㄥ崟绫诲瀷", Status=0 },
+
+                new SysDictType{Id=285641358889029, Name="娴佺▼鍒嗙被", Code="workflow_group", Sort=100, Remark="娴佺▼鍒嗙被", Status=0 },
+
+                new SysDictType{Id=355694205325381, Name="鎵樼洏绫诲瀷", Code="container_type", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=355697881423941, Name="鎵樼洏鐘舵��", Code="container_status", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=355697881423942, Name="鎵樼洏鍒嗙被", Code="container_category", Sort=100, Remark="", Status=0 },
+
+
+                new SysDictType{Id=355698224758853, Name="搴撳尯绫诲瀷", Code="area_type", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=355698441912389, Name="搴撲綅鐘舵��", Code="place_status", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=355698661130309, Name="搴撲綅楂樺害", Code="height_level", Sort=100, Remark="", Status=0 },
+
+                new SysDictType{Id=355698855280709, Name="鐗╂枡妫�楠�", Code="material_inspection", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=355699003580485, Name="鐗╂枡绫诲埆", Code="material_type", Sort=100, Remark="", Status=0 },
+
+                new SysDictType{Id=355699189051461, Name="鍗曚綅绫诲埆", Code="unit_type", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=355699314061381, Name="鍗曚綅缂栧彿", Code="unitno_type", Sort=100, Remark="", Status=0 },
+
+                new SysDictType{Id=355699447029829, Name="浠诲姟鏂瑰紡", Code="task_model", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=355699576467525, Name="浠诲姟绫诲瀷", Code="task_type", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=355699731099717, Name="浠诲姟鐘舵��", Code="task_status", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=355699731099718, Name="浠诲姟璁惧鐘舵��", Code="taskdodevice_statusenum", Sort=100, Remark="", Status=0 },
+
+
+                new SysDictType{Id=383290718294085, Name="鎵�灞炶溅闂�", Code="les_workshop_type", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=383317542490181, Name="鍙枡鍗曠姸鎬�", Code="les_takematerials_status", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=384394636988485, Name="璁惧绫诲瀷", Code="dodevice_type", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=385412129075269, Name="宸ユ", Code="lesworkshop_section", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=386522984120389, Name="搴撳彛绫诲瀷", Code="les_entrance_type", Sort=100, Remark="", Status=0 },
+
+               
+                new SysDictType{Id=386522984120391, Name="鍗曟嵁鏄庣粏琛ㄧ姸鎬�", Code="orderdetails_statusenum", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=386522984120392, Name="鍗曟嵁澶х被", Code="orderlargecategory_Enum", Sort=100, Remark="", Status=0 },
+                new SysDictType{Id=386522984120393, Name="鍗曟嵁涓昏〃鐘舵��", Code="order_statusenum", Sort=100, Remark="", Status=0 },
+               
+
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpExtOrgPos.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpExtOrgPos.cs
new file mode 100644
index 0000000..1a53969
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpExtOrgPos.cs
@@ -0,0 +1,29 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺鍛樺伐闄勫睘鏈烘瀯鑱屼綅琛ㄧ瀛愭暟鎹�
+    /// </summary>
+    public class SysEmpExtOrgPosData : IEntitySeedData<SysEmpExtOrgPos>
+    {
+        /// <summary>
+        /// 绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysEmpExtOrgPos> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new SysEmpExtOrgPos { SysEmpId = 142307070910551, SysOrgId = 142307070910539, SysPosId = 142307070910547 },
+                new SysEmpExtOrgPos { SysEmpId = 142307070910551, SysOrgId = 142307070910540, SysPosId = 142307070910548 },
+                new SysEmpExtOrgPos { SysEmpId = 142307070910551, SysOrgId = 142307070910541, SysPosId = 142307070910549 },
+                new SysEmpExtOrgPos { SysEmpId = 142307070910551, SysOrgId = 142307070910542, SysPosId = 142307070910550 },
+                new SysEmpExtOrgPos { SysEmpId = 142307070910553, SysOrgId = 142307070910542, SysPosId = 142307070910547 }
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpPosSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpPosSeedData.cs
new file mode 100644
index 0000000..4723cd9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpPosSeedData.cs
@@ -0,0 +1,30 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺鍛樺伐鑱屼綅琛ㄧ瀛愭暟鎹�
+    /// </summary>
+    public class SysEmpPosSeedData : IEntitySeedData<SysEmpPos>
+    {
+        /// <summary>
+        /// 鍛樺伐绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysEmpPos> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new SysEmpPos{SysEmpId=142307070910551, SysPosId=142307070910547 },
+                new SysEmpPos{SysEmpId=142307070910551, SysPosId=142307070910548 },
+                new SysEmpPos{SysEmpId=142307070910552, SysPosId=142307070910549 },
+                new SysEmpPos{SysEmpId=142307070910553, SysPosId=142307070910547 },
+                new SysEmpPos{SysEmpId=358533464608837, SysPosId=142307070910550 },
+                new SysEmpPos{SysEmpId=358536045723717, SysPosId=142307070910550 },
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpSeedData.cs
new file mode 100644
index 0000000..fa98046
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpSeedData.cs
@@ -0,0 +1,38 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺鍛樺伐琛ㄧ瀛愭暟鎹�
+    /// </summary>
+    public class SysEmpSeedData : IEntitySeedData<SysEmp>
+    {
+        /// <summary>
+        /// 鍛樺伐绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysEmp> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new SysEmp{Id=142307070910551, JobNum="D1001", OrgId=142307070910539, OrgName="绉熸埛3鍏徃" },
+                new SysEmp{Id=142307070910552, JobNum="D1002", OrgId=142307070910539, OrgName="绉熸埛3鍏徃" },
+                new SysEmp{Id=142307070910553, JobNum="D1003", OrgId=142307070910539, OrgName="绉熸埛3鍏徃" },
+
+                new SysEmp{Id=142307070910554, JobNum="D1001", OrgId=142307070910547, OrgName="绉熸埛1鍏徃" },
+                new SysEmp{Id=142307070910555, JobNum="D1002", OrgId=142307070910547, OrgName="绉熸埛1鍏徃" },
+                new SysEmp{Id=142307070910556, JobNum="D1003", OrgId=142307070910547, OrgName="绉熸埛1鍏徃" },
+
+                new SysEmp{Id=142307070910557, JobNum="D1001", OrgId=142307070910548, OrgName="绉熸埛2鍏徃" },
+                new SysEmp{Id=142307070910558, JobNum="D1002", OrgId=142307070910548, OrgName="绉熸埛2鍏徃" },
+                new SysEmp{Id=142307070910559, JobNum="D1003", OrgId=142307070910548, OrgName="绉熸埛2鍏徃" },
+
+                new SysEmp{Id=358533464608837, JobNum="", OrgId=142307070910539, OrgName="浼熸湰鑲′唤鏈夐檺鍏徃" },
+                new SysEmp{Id=358536045723717, JobNum="", OrgId=142307070910542, OrgName="鐮斿彂閮�" }
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysMenuSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysMenuSeedData.cs
new file mode 100644
index 0000000..432c656
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysMenuSeedData.cs
@@ -0,0 +1,285 @@
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺鑿滃崟琛ㄧ瀛愭暟鎹�
+    /// </summary>
+    public class SysMenuSeedData : IEntitySeedData<SysMenu>
+    {
+        /// <summary>
+        /// 绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysMenu> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new SysMenu{Id=142307000914633, Pid=0, Pids="[0],", Name="缁勭粐鏋舵瀯", Code="sys_mgr", Type=MenuType.DIR, Icon="team", Router="/sys", Component="PageView", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910581, Pid=142307000914633, Pids="[0],[142307000914633],", Name="鏈烘瀯绠$悊", Code="sys_org_mgr", Type=MenuType.MENU, Router="/org", Component="system/org/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910582, Pid=142307070910581, Pids="[0],[142307000914633],[142307070910581],", Name="鏈烘瀯鏌ヨ", Code="sys_org_mgr_page", Type=MenuType.BTN, Permission="sysOrg:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910583, Pid=142307070910581, Pids="[0],[142307000914633],[142307070910581],", Name="鏈烘瀯鍒楄〃", Code="sys_org_mgr_list", Type=MenuType.BTN, Permission="sysOrg:list", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910584, Pid=142307070910581, Pids="[0],[142307000914633],[142307070910581],", Name="鏈烘瀯澧炲姞", Code="sys_org_mgr_add", Type=MenuType.BTN, Permission="sysOrg:add", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910585, Pid=142307070910581, Pids="[0],[142307000914633],[142307070910581],", Name="鏈烘瀯缂栬緫", Code="sys_org_mgr_edit", Type=MenuType.BTN, Permission="sysOrg:edit", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910586, Pid=142307070910581, Pids="[0],[142307000914633],[142307070910581],", Name="鏈烘瀯鍒犻櫎", Code="sys_org_mgr_delete", Type=MenuType.BTN, Permission="sysOrg:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                new SysMenu{Id=142307070910587, Pid=142307070910581, Pids="[0],[142307000914633],[142307070910581],", Name="鏈烘瀯璇︽儏", Code="sys_org_mgr_detail", Type=MenuType.BTN, Permission="sysOrg:detail", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910588, Pid=142307070910581, Pids="[0],[142307000914633],[142307070910581],", Name="鏈烘瀯鏍�", Code="sys_org_mgr_tree", Type=MenuType.BTN, Permission="sysOrg:tree", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                new SysMenu{Id=142307070910589, Pid=142307000914633, Pids="[0],[142307000914633],", Name="鑱屼綅绠$悊", Code="sys_pos_mgr", Type=MenuType.MENU, Router="/pos", Component="system/pos/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                new SysMenu{Id=142307070910590, Pid=142307070910589, Pids="[0],[142307000914633],[142307070910589],", Name="鑱屼綅鏌ヨ", Code="sys_pos_mgr_page", Type=MenuType.BTN, Permission="sysPos:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910591, Pid=142307070910589, Pids="[0],[142307000914633],[142307070910589],", Name="鑱屼綅鍒楄〃", Code="sys_pos_mgr_list", Type=MenuType.BTN, Permission="sysPos:list", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914629, Pid=142307070910589, Pids="[0],[142307000914633],[142307070910589],", Name="鑱屼綅澧炲姞", Code="sys_pos_mgr_add", Type=MenuType.BTN, Permission="sysPos:add", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914630, Pid=142307070910589, Pids="[0],[142307000914633],[142307070910589],", Name="鑱屼綅缂栬緫", Code="sys_pos_mgr_edit", Type=MenuType.BTN, Permission="sysPos:edit", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                new SysMenu{Id=142307070914631, Pid=142307070910589, Pids="[0],[142307000914633],[142307070910589],", Name="鑱屼綅鍒犻櫎", Code="sys_pos_mgr_delete", Type=MenuType.BTN, Permission="sysPos:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914632, Pid=142307070910589, Pids="[0],[142307000914633],[142307070910589],", Name="鑱屼綅璇︽儏", Code="sys_pos_mgr_detail", Type=MenuType.BTN, Permission="sysPos:detail", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                new SysMenu{Id=142307070910563, Pid=0, Pids="[0],", Name="鏉冮檺绠$悊", Code="auth_manager", Type=MenuType.DIR, Icon="safety-certificate", Router="/auth", Component="PageView", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910564, Pid=142307070910563, Pids="[0],[142307070910563],", Name="鐢ㄦ埛绠$悊", Code="sys_user_mgr", Type=MenuType.MENU, Router="/mgr_user", Component="system/user/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910565, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鏌ヨ", Code="sys_user_mgr_page", Type=MenuType.BTN, Permission="sysUser:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910566, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛缂栬緫", Code="sys_user_mgr_edit", Type=MenuType.BTN, Permission="sysUser:edit", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910567, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛澧炲姞", Code="sys_user_mgr_add", Type=MenuType.BTN, Permission="sysUser:add", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                new SysMenu{Id=142307070910568, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鍒犻櫎", Code="sys_user_mgr_delete", Type=MenuType.BTN, Permission="sysUser:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                new SysMenu{Id=142307070910569, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛璇︽儏", Code="sys_user_mgr_detail", Type=MenuType.BTN, Permission="sysUser:detail", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910570, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛瀵煎嚭", Code="sys_user_mgr_export", Type=MenuType.BTN, Permission="sysUser:export", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910571, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛閫夋嫨鍣�", Code="sys_user_mgr_selector", Type=MenuType.BTN, Permission="sysUser:selector", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910572, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鎺堟潈瑙掕壊", Code="sys_user_mgr_grant_role", Type=MenuType.BTN, Permission="sysUser:grantRole", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910573, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鎷ユ湁瑙掕壊", Code="sys_user_mgr_own_role", Type=MenuType.BTN, Permission="sysUser:ownRole", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910574, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鎺堟潈鏁版嵁", Code="sys_user_mgr_grant_data", Type=MenuType.BTN, Permission="sysUser:grantData", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910575, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鎷ユ湁鏁版嵁", Code="sys_user_mgr_own_data", Type=MenuType.BTN, Permission="sysUser:ownData", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910576, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鏇存柊淇℃伅", Code="sys_user_mgr_update_info", Type=MenuType.BTN, Permission="sysUser:updateInfo", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910577, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛淇敼瀵嗙爜", Code="sys_user_mgr_update_pwd", Type=MenuType.BTN, Permission="sysUser:updatePwd", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910578, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛淇敼鐘舵��", Code="sys_user_mgr_change_status", Type=MenuType.BTN, Permission="sysUser:changeStatus", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070910579, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛淇敼澶村儚", Code="sys_user_mgr_update_avatar", Type=MenuType.BTN, Permission="sysUser:updateAvatar", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                new SysMenu{Id=142307070910580, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛閲嶇疆瀵嗙爜", Code="sys_user_mgr_reset_pwd", Type=MenuType.BTN, Permission="sysUser:resetPwd", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918777, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鐧诲綍淇℃伅", Code="sys_user_mgr_login", Type=MenuType.BTN, Permission="getLoginUser", Application="manage", OpenType=MenuOpenType.NONE, Visible="N", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.DISABLE },
+                new SysMenu{Id=142307070914651, Pid=142307070910563, Pids="[0],[142307070910563],", Name="瑙掕壊绠$悊", Code="sys_role_mgr", Type=MenuType.MENU, Router="/role", Component="system/role/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                new SysMenu{Id=142307070914652, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊鏌ヨ", Code="sys_role_mgr_page", Type=MenuType.BTN, Permission="sysRole:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914653, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊澧炲姞", Code="sys_role_mgr_add", Type=MenuType.BTN, Permission="sysRole:add", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914654, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊缂栬緫", Code="sys_role_mgr_edit", Type=MenuType.BTN, Permission="sysRole:edit", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914655, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊鍒犻櫎", Code="sys_role_mgr_delete", Type=MenuType.BTN, Permission="sysRole:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914656, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊璇︽儏", Code="sys_role_mgr_detail", Type=MenuType.BTN, Permission="sysRole:detail", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914657, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊涓嬫媺", Code="sys_role_mgr_drop_down", Type=MenuType.BTN, Permission="sysRole:dropDown", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914658, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊鎺堟潈鑿滃崟", Code="sys_role_mgr_grant_menu", Type=MenuType.BTN, Permission="sysRole:grantMenu", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914659, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊鎷ユ湁鑿滃崟", Code="sys_role_mgr_own_menu", Type=MenuType.BTN, Permission="sysRole:ownMenu", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914660, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊鎺堟潈鏁版嵁", Code="sys_role_mgr_grant_data", Type=MenuType.BTN, Permission="sysRole:grantData", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914661, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊鎷ユ湁鏁版嵁", Code="sys_role_mgr_own_data", Type=MenuType.BTN, Permission="sysRole:ownData", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914648, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="鑿滃崟鎺堟潈鏍�", Code="sys_menu_mgr_grant_tree", Type=MenuType.BTN, Permission="sysMenu:treeForGrant", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914649, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="鑿滃崟鏍�", Code="sys_menu_mgr_tree", Type=MenuType.BTN, Permission="sysMenu:tree", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                new SysMenu{Id=142307070914633, Pid=0, Pids="[0],", Name="骞冲彴绠$悊", Code="sys_platform", Type=MenuType.DIR, Icon="safety-certificate", Router="/platform", Component="PageView", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914634, Pid=142307070914633, Pids="[0],[142307070914633],", Name="搴旂敤绠$悊", Code="sys_app_mgr", Type=MenuType.MENU, Router="/app", Component="system/app/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914635, Pid=142307070914634, Pids="[0],[142307070914633],[142307070914634],", Name="搴旂敤鏌ヨ", Code="sys_app_mgr_page", Type=MenuType.BTN, Permission="sysApp:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914636, Pid=142307070914634, Pids="[0],[142307070914633],[142307070914634],", Name="搴旂敤鍒楄〃", Code="sys_app_mgr_list", Type=MenuType.BTN, Permission="sysApp:list", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914637, Pid=142307070914634, Pids="[0],[142307070914633],[142307070914634],", Name="搴旂敤澧炲姞", Code="sys_app_mgr_add", Type=MenuType.BTN, Permission="sysApp:add", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914638, Pid=142307070914634, Pids="[0],[142307070914633],[142307070914634],", Name="搴旂敤缂栬緫", Code="sys_app_mgr_edit", Type=MenuType.BTN, Permission="sysApp:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914639, Pid=142307070914634, Pids="[0],[142307070914633],[142307070914634],", Name="搴旂敤鍒犻櫎", Code="sys_app_mgr_delete", Type=MenuType.BTN, Permission="sysApp:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914640, Pid=142307070914634, Pids="[0],[142307070914633],[142307070914634],", Name="搴旂敤璇︽儏", Code="sys_app_mgr_detail", Type=MenuType.BTN, Permission="sysApp:detail", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914641, Pid=142307070914634, Pids="[0],[142307070914633],[142307070914634],", Name="璁句负榛樿搴旂敤", Code="sys_app_mgr_set_as_default", Type=MenuType.BTN, Permission="sysApp:setAsDefault", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914642, Pid=142307070914633, Pids="[0],[142307070914633],", Name="鑿滃崟绠$悊", Code="sys_menu_mgr", Type=MenuType.MENU, Router="/menu", Component="system/menu/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                new SysMenu{Id=142307070914643, Pid=142307070914642, Pids="[0],[142307070914633],[142307070914642],", Name="鑿滃崟鍒楄〃", Code="sys_menu_mgr_list", Type=MenuType.BTN, Permission="sysMenu:list", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914644, Pid=142307070914642, Pids="[0],[142307070914633],[142307070914642],", Name="鑿滃崟澧炲姞", Code="sys_menu_mgr_add", Type=MenuType.BTN, Permission="sysMenu:add", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914645, Pid=142307070914642, Pids="[0],[142307070914633],[142307070914642],", Name="鑿滃崟缂栬緫", Code="sys_menu_mgr_edit", Type=MenuType.BTN, Permission="sysMenu:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914646, Pid=142307070914642, Pids="[0],[142307070914633],[142307070914642],", Name="鑿滃崟鍒犻櫎", Code="sys_menu_mgr_delete", Type=MenuType.BTN, Permission="sysMenu:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914647, Pid=142307070914642, Pids="[0],[142307070914633],[142307070914642],", Name="鑿滃崟璇︽儏", Code="sys_menu_mgr_detail", Type=MenuType.BTN, Permission="sysMenu:detail", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914650, Pid=142307070914642, Pids="[0],[142307070914633],[142307070914642],", Name="鑿滃崟鍒囨崲", Code="sys_menu_mgr_change", Type=MenuType.BTN, Permission="sysMenu:change", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                //澧炲姞PDA鑿滃崟椤甸潰 銆怑ditby shaocx,2024-04-07銆�
+                new SysMenu{Id=494834310545477, Pid=142307070914633, Pids="[0],[142307070914633],", Name="Pda鑿滃崟", Code="sys_wmspdapower_mgr", Type=MenuType.MENU, Router="/WmsPdaPower", Component="main/WmsPdaPower/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=101, Status=CommonStatus.ENABLE},
+
+                new SysMenu{Id=142307070914662, Pid=0, Pids="[0],", Name="寮�鍙戠鐞�", Code="system_tools", Type=MenuType.DIR, Icon="euro", Router="/tools", Component="PageView", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914663, Pid=142307070914662, Pids="[0],[142307070914662],", Name="绯荤粺閰嶇疆", Code="system_tools_config", Type=MenuType.MENU, Router="/config", Component="system/config/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914664, Pid=142307070914663, Pids="[0],[142307070914662],[142307070914663],", Name="閰嶇疆鏌ヨ", Code="system_tools_config_page", Type=MenuType.BTN, Permission="sysConfig:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914665, Pid=142307070914663, Pids="[0],[142307070914662],[142307070914663],", Name="閰嶇疆鍒楄〃", Code="system_tools_config_list", Type=MenuType.BTN, Permission="sysConfig:list", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914666, Pid=142307070914663, Pids="[0],[142307070914662],[142307070914663],", Name="閰嶇疆澧炲姞", Code="system_tools_config_add", Type=MenuType.BTN, Permission="sysConfig:add", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914667, Pid=142307070914663, Pids="[0],[142307070914662],[142307070914663],", Name="閰嶇疆缂栬緫", Code="system_tools_config_edit", Type=MenuType.BTN, Permission="sysConfig:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914668, Pid=142307070914663, Pids="[0],[142307070914662],[142307070914663],", Name="閰嶇疆鍒犻櫎", Code="system_tools_config_delete", Type=MenuType.BTN, Permission="sysConfig:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914669, Pid=142307070914663, Pids="[0],[142307070914662],[142307070914663],", Name="閰嶇疆璇︽儏", Code="system_tools_config_detail", Type=MenuType.BTN, Permission="sysConfig:detail", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                //new SysMenu{Id=142307070914671, Pid=142307070914662, Pids="[0],[142307070914662],", Name="閭欢鍙戦��", Code="sys_email_mgr", Type=MenuType.MENU, Router="/email", Component="system/email/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                //new SysMenu{Id=142307070914672, Pid=142307070914671, Pids="[0],[142307070914662],[142307070914671],", Name="鍙戦�佹枃鏈偖浠�", Code="sys_email_mgr_send_email", Type=MenuType.BTN, Permission="email:sendEmail", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                //new SysMenu{Id=142307070914673, Pid=142307070914671, Pids="[0],[142307070914662],[142307070914671],", Name="鍙戦�乭tml閭欢", Code="sys_email_mgr_send_email_html", Type=MenuType.BTN, Permission="email:sendEmailHtml", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                //new SysMenu{Id=142307070914674, Pid=142307070914662, Pids="[0],[142307070914662],", Name="鐭俊绠$悊", Code="sys_sms_mgr", Type=MenuType.MENU, Router="/sms", Component="system/sms/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                //new SysMenu{Id=142307070914675, Pid=142307070914674, Pids="[0],[142307070914662],[142307070914674],", Name="鐭俊鍙戦�佹煡璇�", Code="sys_sms_mgr_page", Type=MenuType.BTN, Permission="sms:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                //new SysMenu{Id=142307070914676, Pid=142307070914674, Pids="[0],[142307070914662],[142307070914674],", Name="鍙戦�侀獙璇佺爜鐭俊", Code="sys_sms_mgr_send_login_message", Type=MenuType.BTN, Permission="sms:sendLoginMessage", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                //new SysMenu{Id=142307070914677, Pid=142307070914674, Pids="[0],[142307070914662],[142307070914674],", Name="楠岃瘉鐭俊楠岃瘉鐮�", Code="sys_sms_mgr_validate_message", Type=MenuType.BTN, Permission="sms:validateMessage", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914678, Pid=142307070914662, Pids="[0],[142307070914662],", Name="瀛楀吀绠$悊", Code="sys_dict_mgr", Type=MenuType.MENU, Router="/dict", Component="system/dict/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                new SysMenu{Id=142307070914679, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷鏌ヨ", Code="sys_dict_mgr_dict_type_page", Type=MenuType.BTN, Permission="sysDictType:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914680, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷鍒楄〃", Code="sys_dict_mgr_dict_type_list", Type=MenuType.BTN, Permission="sysDictType:list", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914681, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷澧炲姞", Code="sys_dict_mgr_dict_type_add", Type=MenuType.BTN, Permission="sysDictType:add", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914682, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷鍒犻櫎", Code="sys_dict_mgr_dict_type_delete", Type=MenuType.BTN, Permission="sysDictType:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914683, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷缂栬緫", Code="sys_dict_mgr_dict_type_edit", Type=MenuType.BTN, Permission="sysDictType:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914684, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷璇︽儏", Code="sys_dict_mgr_dict_type_detail", Type=MenuType.BTN, Permission="sysDictType:detail", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914685, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷涓嬫媺", Code="sys_dict_mgr_dict_type_drop_down", Type=MenuType.BTN, Permission="sysDictType:dropDown", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914686, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷淇敼鐘舵��", Code="sys_dict_mgr_dict_type_change_status", Type=MenuType.BTN, Permission="sysDictType:changeStatus", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070914687, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀鍊兼煡璇�", Code="sys_dict_mgr_dict_page", Type=MenuType.BTN, Permission="sysDictData:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918725, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀鍊煎垪琛�", Code="sys_dict_mgr_dict_list", Type=MenuType.BTN, Permission="sysDictData:list", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918726, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀鍊煎鍔�", Code="sys_dict_mgr_dict_add", Type=MenuType.BTN, Permission="sysDictData:add", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918727, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀鍊煎垹闄�", Code="sys_dict_mgr_dict_delete", Type=MenuType.BTN, Permission="sysDictData:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918728, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀鍊肩紪杈�", Code="sys_dict_mgr_dict_edit", Type=MenuType.BTN, Permission="sysDictData:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918729, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀鍊艰鎯�", Code="sys_dict_mgr_dict_detail", Type=MenuType.BTN, Permission="sysDictData:detail", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918730, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀鍊间慨鏀圭姸鎬�", Code="sys_dict_mgr_dict_change_status", Type=MenuType.BTN, Permission="sysDictData:changeStatus", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918731, Pid=142307070914662, Pids="[0],[142307070914662],", Name="鎺ュ彛鏂囨。", Code="sys_swagger_mgr", Type=MenuType.MENU, Router="/swagger", Component="Iframe", Application="system", OpenType=MenuOpenType.INNER, Visible="Y", Link="http://localhost:6677/swagger/", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+
+                new SysMenu{Id=142307070918732, Pid=0, Pids="[0],", Name="鏃ュ織绠$悊", Code="sys_log_mgr", Type=MenuType.DIR, Icon="read", Router="/log", Component="PageView", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918733, Pid=142307070918732, Pids="[0],[142307070918732],", Name="璁块棶鏃ュ織", Code="sys_log_mgr_vis_log", Type=MenuType.MENU, Router="/vislog", Component="system/log/vislog/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918734, Pid=142307070918733, Pids="[0],[142307070918732],[142307070918733],", Name="璁块棶鏃ュ織鏌ヨ", Code="sys_log_mgr_vis_log_page", Type=MenuType.BTN, Permission="sysVisLog:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918735, Pid=142307070918733, Pids="[0],[142307070918732],[142307070918733],", Name="璁块棶鏃ュ織娓呯┖", Code="sys_log_mgr_vis_log_delete", Type=MenuType.BTN, Permission="sysVisLog:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918736, Pid=142307070918732, Pids="[0],[142307070918732],", Name="鎿嶄綔鏃ュ織", Code="sys_log_mgr_op_log", Type=MenuType.MENU, Router="/oplog", Component="system/log/oplog/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                new SysMenu{Id=142307070918737, Pid=142307070918736, Pids="[0],[142307070918732],[142307070918736],", Name="鎿嶄綔鏃ュ織鏌ヨ", Code="sys_log_mgr_op_log_page", Type=MenuType.BTN, Permission="sysOpLog:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918738, Pid=142307070918736, Pids="[0],[142307070918732],[142307070918736],", Name="鎿嶄綔鏃ュ織娓呯┖", Code="sys_log_mgr_op_log_delete", Type=MenuType.BTN, Permission="sysOpLog:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070911739, Pid=142307070918732, Pids="[0],[142307070918732],", Name="寮傚父鏃ュ織", Code="sys_log_mgr_ex_log", Type=MenuType.MENU, Router="/exlog", Component="system/log/exlog/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                new SysMenu{Id=142307070911740, Pid=142307070911739, Pids="[0],[142307070918732],[142307070911739],", Name="寮傚父鏃ュ織鏌ヨ", Code="sys_log_mgr_ex_log_page", Type=MenuType.BTN, Permission="sysExLog:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070911741, Pid=142307070911739, Pids="[0],[142307070918732],[142307070911739],", Name="寮傚父鏃ュ織娓呯┖", Code="sys_log_mgr_ex_log_delete", Type=MenuType.BTN, Permission="sysExLog:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                new SysMenu{Id=142307070918739, Pid=0, Pids="[0],", Name="绯荤粺鐩戞帶", Code="sys_monitor_mgr", Type=MenuType.DIR, Icon="deployment-unit", Router="/monitor", Component="PageView", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918740, Pid=142307070918739, Pids="[0],[142307070918739],", Name="鏈嶅姟鐩戞帶", Code="sys_monitor_mgr_machine_monitor", Type=MenuType.MENU, Router="/machine", Component="system/machine/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918741, Pid=142307070918740, Pids="[0],[142307070918739],[142307070918740],", Name="鏈嶅姟鐩戞帶鏌ヨ", Code="sys_monitor_mgr_machine_monitor_query", Type=MenuType.BTN, Permission="sysMachine:query", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918742, Pid=142307070918739, Pids="[0],[142307070918739],", Name="鍦ㄧ嚎鐢ㄦ埛", Code="sys_monitor_mgr_online_user", Type=MenuType.MENU, Router="/onlineUser", Component="system/onlineUser/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                new SysMenu{Id=142307070918743, Pid=142307070918742, Pids="[0],[142307070918739],[142307070918742],", Name="鍦ㄧ嚎鐢ㄦ埛鏌ヨ", Code="sys_monitor_mgr_online_user_page", Type=MenuType.BTN, Permission="sysOnlineUser:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918744, Pid=142307070918742, Pids="[0],[142307070918739],[142307070918742],", Name="鍦ㄧ嚎鐢ㄦ埛寮洪��", Code="sys_monitor_mgr_online_user_force_exist", Type=MenuType.BTN, Permission="sysOnlineUser:forceExist", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918745, Pid=142307070918739, Pids="[0],[142307070918739],", Name="鏁版嵁鐩戞帶", Code="sys_monitor_mgr_druid", Type=MenuType.MENU, Router="/druid", Component="Iframe", Application="system", OpenType=MenuOpenType.INNER, Visible="N", Link="http://localhost:82/druid/login.html", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+
+                new SysMenu{Id=142307070918746, Pid=0, Pids="[0],", Name="閫氱煡鍏憡", Code="sys_notice", Type=MenuType.DIR, Icon="sound", Router="/notice", Component="PageView", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918747, Pid=142307070918746, Pids="[0],[142307070918746],", Name="鍏憡绠$悊", Code="sys_notice_mgr", Type=MenuType.MENU, Router="/notice", Component="system/notice/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918748, Pid=142307070918747, Pids="[0],[142307070918746],[142307070918747],", Name="鍏憡鏌ヨ", Code="sys_notice_mgr_page", Type=MenuType.BTN, Permission="sysNotice:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918749, Pid=142307070918747, Pids="[0],[142307070918746],[142307070918747],", Name="鍏憡澧炲姞", Code="sys_notice_mgr_add", Type=MenuType.BTN, Permission="sysNotice:add", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918750, Pid=142307070918747, Pids="[0],[142307070918746],[142307070918747],", Name="鍏憡缂栬緫", Code="sys_notice_mgr_edit", Type=MenuType.BTN, Permission="sysNotice:edit", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918751, Pid=142307070918747, Pids="[0],[142307070918746],[142307070918747],", Name="鍏憡鍒犻櫎", Code="sys_notice_mgr_delete", Type=MenuType.BTN, Permission="sysNotice:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918752, Pid=142307070918747, Pids="[0],[142307070918746],[142307070918747],", Name="鍏憡鏌ョ湅", Code="sys_notice_mgr_detail", Type=MenuType.BTN, Permission="sysNotice:detail", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918753, Pid=142307070918747, Pids="[0],[142307070918746],[142307070918747],", Name="鍏憡淇敼鐘舵��", Code="sys_notice_mgr_changeStatus", Type=MenuType.BTN, Permission="sysNotice:changeStatus", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918754, Pid=142307070918746, Pids="[0],[142307070918746],", Name="宸叉敹鍏憡", Code="sys_notice_mgr_received", Type=MenuType.MENU, Router="/noticeReceived", Component="system/noticeReceived/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+                new SysMenu{Id=142307070918755, Pid=142307070918754, Pids="[0],[142307070918746],[142307070918754],", Name="宸叉敹鍏憡鏌ヨ", Code="sys_notice_mgr_received_page", Type=MenuType.BTN, Permission="sysNotice:received", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                new SysMenu{Id=142307070918756, Pid=0, Pids="[0],", Name="鏂囦欢绠$悊", Code="sys_file_mgr", Type=MenuType.DIR, Icon="file", Router="/file", Component="PageView", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918757, Pid=142307070918756, Pids="[0],[142307070918756],", Name="绯荤粺鏂囦欢", Code="sys_file_mgr_sys_file", Type=MenuType.MENU, Router="/file", Component="system/file/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918758, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鏂囦欢鏌ヨ", Code="sys_file_mgr_sys_file_page", Type=MenuType.BTN, Permission="sysFileInfo:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918759, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鏂囦欢鍒楄〃", Code="sys_file_mgr_sys_file_list", Type=MenuType.BTN, Permission="sysFileInfo:list", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918760, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鏂囦欢鍒犻櫎", Code="sys_file_mgr_sys_file_delete", Type=MenuType.BTN, Permission="sysFileInfo:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918761, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鏂囦欢璇︽儏", Code="sys_file_mgr_sys_file_detail", Type=MenuType.BTN, Permission="sysFileInfo:detail", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918762, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鏂囦欢涓婁紶", Code="sys_file_mgr_sys_file_upload", Type=MenuType.BTN, Permission="sysFileInfo:upload", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918763, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鏂囦欢涓嬭浇", Code="sys_file_mgr_sys_file_download", Type=MenuType.BTN, Permission="sysFileInfo:download", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918764, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鍥剧墖棰勮", Code="sys_file_mgr_sys_file_preview", Type=MenuType.BTN, Permission="sysFileInfo:preview", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070922874, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="澶村儚涓婁紶", Code="sys_file_mgr_sys_file_upload_avatar", Type=MenuType.BTN, Permission="sysFileInfo:uploadAvatar", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070922875, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鏂囨。涓婁紶", Code="sys_file_mgr_sys_file_upload_document", Type=MenuType.BTN, Permission="sysFileInfo:uploadDocument", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070922876, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鍟嗗煄涓婁紶", Code="sys_file_mgr_sys_file_upload_shop", Type=MenuType.BTN, Permission="sysFileInfo:uploadShop", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                new SysMenu{Id=142307070918765, Pid=0, Pids="[0],", Name="浠诲姟璋冨害", Code="sys_timers", Type=MenuType.DIR, Icon="dashboard", Router="/timers", Component="PageView", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918766, Pid=142307070918765, Pids="[0],[142307070918765],", Name="浠诲姟绠$悊", Code="sys_timers_mgr", Type=MenuType.MENU, Router="/timers", Component="system/timers/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918767, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟鏌ヨ", Code="sys_timers_mgr_page", Type=MenuType.BTN, Permission="sysTimers:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918768, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟鍒楄〃", Code="sys_timers_mgr_list", Type=MenuType.BTN, Permission="sysTimers:list", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918769, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟璇︽儏", Code="sys_timers_mgr_detail", Type=MenuType.BTN, Permission="sysTimers:detail", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918770, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟澧炲姞", Code="sys_timers_mgr_add", Type=MenuType.BTN, Permission="sysTimers:add", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918771, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟鍒犻櫎", Code="sys_timers_mgr_delete", Type=MenuType.BTN, Permission="sysTimers:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918772, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟缂栬緫", Code="sys_timers_mgr_edit", Type=MenuType.BTN, Permission="sysTimers:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918773, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟鍙墽琛屽垪琛�", Code="sys_timers_mgr_get_action_classes", Type=MenuType.BTN, Permission="sysTimers:getActionClasses", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918774, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟鍚姩", Code="sys_timers_mgr_start", Type=MenuType.BTN, Permission="sysTimers:start", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918775, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟鍏抽棴", Code="sys_timers_mgr_stop", Type=MenuType.BTN, Permission="sysTimers:stop", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                new SysMenu{Id=142307070918776, Pid=0, Pids="[0],", Name="浠g爜鐢熸垚", Code="code_gen", Type=MenuType.DIR, Icon="thunderbolt", Router="/codeGenerate", Component="PageView", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918778, Pid=142307070918776, Pids="[0],[142307070918776],", Name="琛ㄥ崟璁捐", Code="low_code", Type=MenuType.MENU, Router="/lowCode/index", Component="gen/lowCode/index", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                new SysMenu{Id=142307070918779, Pid=142307070918776, Pids="[0],[142307070918776],", Name="浠g爜鐢熸垚", Code="code_gen_gen", Type=MenuType.MENU, Router="/codeGenerate/index", Component="gen/codeGenerate/index", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                //new SysMenu{Id=142307070918780, Pid=142307070918776, Pids="[0],[142307070918776],", Name="缁勪欢绠$悊", Code="code_gen_assembly", Type=MenuType.MENU, Router="/codeGenerate/assembly", Component="gen/codeGenerate/assembly", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                new SysMenu{Id=142307070922870, Pid=285599875018821, Pids="[0],[285599875018821],", Name="琛ㄥ崟璁捐", Code="form_design", Type=MenuType.MENU, Icon=null, Router="/formDesign/index", Component="system/formDesign/index", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+
+
+                //new SysMenu{Id=142307070910560, Pid=0, Pids="[0],", Name="涓绘帶闈㈡澘", Code="system_index", Type=MenuType.DIR, Icon="home", Router="/", Component="RouteView", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Redirect="/analysis", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=1, Status=CommonStatus.ENABLE },
+                //new SysMenu{Id=142307070910561, Pid=142307070910560, Pids="[0],[142307070910560],", Name="鍒嗘瀽椤�", Code="system_index_dashboard", Type=MenuType.MENU, Router="analysis", Component="system/dashboard/Analysis", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+                //new SysMenu{Id=142307070910562, Pid=142307070910560, Pids="[0],[142307070910560],", Name="宸ヤ綔鍙�", Code="system_index_workplace", Type=MenuType.MENU, Router="workplace", Component="system/dashboard/Workplace", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                //new SysMenu{Id=142307070922877, Pid=0, Pids="[0],", Name="澶у睆鐩戞帶", Code="main_screen_monitor", Type=MenuType.MENU, Icon="desktop", Router="/monitor", Component="main/screenMonitor/index", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                //new SysMenu{Id=142307070922878, Pid=0, Pids="[0],", Name="鍦扮悊淇℃伅", Code="main_map", Type=MenuType.MENU, Icon="global", Router="/map", Component="main/map/index", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                // 宸ヤ綔娴佺鐞嗛〉闈�
+                //new SysMenu{Id=285314199617605, Pid=0, Pids="[0],", Name="宸ヤ綔娴�", Code="sys_workflow", Type=MenuType.DIR, Icon="branches", Router="/workflowmanage", Component="PageView", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                // new SysMenu{Id=285314749218885, Pid=285314199617605, Pids="[0],[285314199617605],", Name="宸ヤ綔娴佸垪琛�", Code="sys_workflow_index", Type=MenuType.MENU, Icon=null, Router="/workflowmanage/index", Component="system/workflow/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                // new SysMenu{Id=285326285971525, Pid=285314199617605, Pids="[0],[285314199617605],", Name="鏂板宸ヤ綔娴�", Code="sys_workflow_create", Type=MenuType.DIR, Icon=null, Router="/workflowmanage/create", Component="system/workflow/create", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="N", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                // new SysMenu{Id=285584465154117, Pid=285314749218885, Pids="[0],[285314199617605],[285314749218885],", Name="鏂板缓宸ヤ綔娴�", Code="btn_workflow_create", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="workflowdefinition:create", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                //new SysMenu{Id=285643962318917, Pid=285314199617605, Pids="[0],[285314199617605],", Name="淇敼娴佺▼", Code="sys_workflow_edit", Type=MenuType.MENU, Icon=null, Router="/workflowmanage/edit", Component="system/workflow/edit", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="N", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                // new SysMenu{Id=285584607641669, Pid=285314749218885, Pids="[0],[285314199617605],[285314749218885],", Name="淇敼宸ヤ綔娴�", Code="btn_workflow_edit", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="workflowdefinition:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                // new SysMenu{Id=285584792772677, Pid=285314749218885, Pids="[0],[285314199617605],[285314749218885],", Name="鍒犻櫎宸ヤ綔娴�", Code="btn_workflow_delete", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="workflowdefinition:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                // new SysMenu{Id=285314199617897, Pid=285314749218885, Pids="[0],[285314199617605],[285314749218885],", Name="鏌ョ湅宸ヤ綔娴�", Code="btn_workflow_view", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="workflowdefinition:entity", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                //new SysMenu{Id=286738138783813, Pid=285314749218885, Pids="[0],[285314199617605],[285314749218885],", Name="寮�濮嬫祦绋�", Code="btn_workflow_start", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="workflowmanager:start", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                // new SysMenu{Id=286737918222405, Pid=285314749218885, Pids="[0],[285314199617605],[285314749218885],", Name="娴佺▼杈撳叆鍙傛暟", Code="worklfow_inputparameter", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="workflowmanager:inputsparameter", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                // new SysMenu{Id=285314199617776, Pid=285314749218885, Pids="[0],[285314199617605],[285314749218885],", Name="宸ヤ綔娴佸垪琛�", Code="btn_workflow_page", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="workflowdefinition:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                 // 琛ㄥ崟绠$悊
+                 new SysMenu{Id=285599875018821, Pid=0, Pids="[0],", Name="琛ㄥ崟绠$悊", Code="sys_formDesign", Type=MenuType.DIR, Icon="snippets", Router="/formDesign", Component="PageView", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                 new SysMenu{Id=285599875018823, Pid=285599875018821, Pids="[0],[285599875018821],", Name="琛ㄥ崟鍒楄〃", Code="sys_formDesign_list", Type=MenuType.MENU, Icon=null, Router="/formDesign/list", Component="system/formDesign/list", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                 new SysMenu{Id=285635743518789, Pid=285599875018821, Pids="[0],[285599875018821],", Name="淇敼琛ㄥ崟", Code="sys_formDesign_edit", Type=MenuType.MENU, Icon=null, Router="/formDesign/edit", Component="system/formDesign/edit", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="N", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                 new SysMenu{Id=285640475689029, Pid=285599875018823, Pids="[0],[285599875018821],[285599875018823],", Name="淇敼琛ㄥ崟", Code="btn_formDesign_edit", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="formmanager:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                 new SysMenu{Id=285640599859269, Pid=285599875018823, Pids="[0],[285599875018821],[285599875018823],", Name="鍒犻櫎琛ㄥ崟", Code="btn_formDesign_delete", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="formmanager:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                 new SysMenu{Id=285640740945989, Pid=285599875018823, Pids="[0],[285599875018821],[285599875018823],", Name="琛ㄥ崟鍒楄〃", Code="btn_formDesign_page", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="formmanager:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                //// 鎴戠殑娴佺▼
+                //new SysMenu{Id=286349479379013, Pid=0, Pids="[0],", Name="鎴戠殑娴佺▼", Code="yw_myworkflow", Type=MenuType.MENU, Icon="branches", Router="/myworkflow", Component="system/myworkflow/index", Application="busiapp", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                //new SysMenu{Id=286737175605317, Pid=286349479379013, Pids="[0],[286349479379013],", Name="瀹℃牳", Code="btn_myworkflow_auditor", Type=MenuType.BTN, Icon="", Router="", Component="", Permission="auditorworkflow:auditor", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                //new SysMenu{Id=286349479379012, Pid=286349479379013, Pids="[0],[286349479379013],", Name="鎴戠殑浠诲姟", Code="myworkflow_auditor", Type=MenuType.BTN, Icon="", Router="", Component="", Permission="auditorworkflow:myworkflowlist", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                //new SysMenu{Id=286349479379014, Pid=286349479379013, Pids="[0],[286349479379013],", Name="鎴戝彂璧风殑娴佺▼", Code="myworkflow_start", Type=MenuType.BTN, Icon="", Router="", Component="", Permission="workflowmanager:page", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+                new SysMenu{Id=355687925174341,Pid=0,Pids="[0],",Name="鎵樼洏淇℃伅",Code="Maste_wmscontainer_mgr",Type=MenuType.MENU,Icon="border",Router="/wmscontainer",Component="main/WmsContainer/index",Application="busiapp",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355687925178437,Pid=355687925174341,Pids="[0],[355687924998213],[355687925174341],",Name="鎵樼洏淇℃伅鏌ヨ",Code="Maste_wmscontainer_mgr_page",Type=MenuType.BTN,Permission="WmsContainer:page",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355687925178438,Pid=355687925174341,Pids="[0],[355687924998213],[355687925174341],",Name="鎵樼洏淇℃伅璇︽儏",Code="Maste_wmscontainer_mgr_detail",Type=MenuType.BTN,Permission="WmsContainer:detail",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355687925178439,Pid=355687925174341,Pids="[0],[355687924998213],[355687925174341],",Name="鎵樼洏淇℃伅澧炲姞",Code="Maste_wmscontainer_mgr_add",Type=MenuType.BTN,Permission="WmsContainer:add",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355687925182533,Pid=355687925174341,Pids="[0],[355687924998213],[355687925174341],",Name="鎵樼洏淇℃伅鍒犻櫎",Code="Maste_wmscontainer_mgr_delete",Type=MenuType.BTN,Permission="WmsContainer:delete",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355687925182534,Pid=355687925174341,Pids="[0],[355687924998213],[355687925174341],",Name="鎵樼洏淇℃伅缂栬緫",Code="Maste_wmscontainer_mgr_edit",Type=MenuType.BTN,Permission="WmsContainer:edit",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+
+                new SysMenu{Id=355688792178757,Pid=0,Pids="[0],",Name="搴撳尯淇℃伅",Code="Maste_wmsarea_mgr",Type=MenuType.MENU,Icon="appstore",Router="/wmsarea",Component="main/WmsArea/index",Application="busiapp",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355688792182853,Pid=355688792178757,Pids="[0],[355688792162373],[355688792178757],",Name="搴撳尯淇℃伅鏌ヨ",Code="Maste_wmsarea_mgr_page",Type=MenuType.BTN,Permission="WmsArea:page",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355688792182854,Pid=355688792178757,Pids="[0],[355688792162373],[355688792178757],",Name="搴撳尯淇℃伅璇︽儏",Code="Maste_wmsarea_mgr_detail",Type=MenuType.BTN,Permission="WmsArea:detail",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355688792186949,Pid=355688792178757,Pids="[0],[355688792162373],[355688792178757],",Name="搴撳尯淇℃伅澧炲姞",Code="Maste_wmsarea_mgr_add",Type=MenuType.BTN,Permission="WmsArea:add",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355688792186950,Pid=355688792178757,Pids="[0],[355688792162373],[355688792178757],",Name="搴撳尯淇℃伅鍒犻櫎",Code="Maste_wmsarea_mgr_delete",Type=MenuType.BTN,Permission="WmsArea:delete",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355688792186951,Pid=355688792178757,Pids="[0],[355688792162373],[355688792178757],",Name="搴撳尯淇℃伅缂栬緫",Code="Maste_wmsarea_mgr_edit",Type=MenuType.BTN,Permission="WmsArea:edit",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+
+                new SysMenu{Id=355689496985669,Pid=0,Pids="[0],",Name="搴撲綅淇℃伅",Code="Maste_wmsplace_mgr",Type=MenuType.MENU,Icon="table",Router="/wmsplace",Component="main/WmsPlace/index",Application="busiapp",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355689496989765,Pid=355689496985669,Pids="[0],[355689496977477],[355689496985669],",Name="搴撲綅淇℃伅鏌ヨ",Code="Maste_wmsplace_mgr_page",Type=MenuType.BTN,Permission="WmsPlace:page",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355689496993861,Pid=355689496985669,Pids="[0],[355689496977477],[355689496985669],",Name="搴撲綅淇℃伅璇︽儏",Code="Maste_wmsplace_mgr_detail",Type=MenuType.BTN,Permission="WmsPlace:detail",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355689496993862,Pid=355689496985669,Pids="[0],[355689496977477],[355689496985669],",Name="搴撲綅淇℃伅澧炲姞",Code="Maste_wmsplace_mgr_add",Type=MenuType.BTN,Permission="WmsPlace:add",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355689496993863,Pid=355689496985669,Pids="[0],[355689496977477],[355689496985669],",Name="搴撲綅淇℃伅鍒犻櫎",Code="Maste_wmsplace_mgr_delete",Type=MenuType.BTN,Permission="WmsPlace:delete",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355689496993864,Pid=355689496985669,Pids="[0],[355689496977477],[355689496985669],",Name="搴撲綅淇℃伅缂栬緫",Code="Maste_wmsplace_mgr_edit",Type=MenuType.BTN,Permission="WmsPlace:edit",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+
+                new SysMenu{Id=355690042511429,Pid=0,Pids="[0],",Name="鐗╂枡淇℃伅",Code="Maste_wmsmaterial_mgr",Type=MenuType.MENU,Icon="barcode",Router="/wmsmaterial",Component="main/WmsMaterial/index",Application="busiapp",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355690042515525,Pid=355690042511429,Pids="[0],[355690042499141],[355690042511429],",Name="鐗╂枡淇℃伅鏌ヨ",Code="Maste_wmsmaterial_mgr_page",Type=MenuType.BTN,Permission="WmsMaterial:page",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355690042519621,Pid=355690042511429,Pids="[0],[355690042499141],[355690042511429],",Name="鐗╂枡淇℃伅璇︽儏",Code="Maste_wmsmaterial_mgr_detail",Type=MenuType.BTN,Permission="WmsMaterial:detail",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355690042519622,Pid=355690042511429,Pids="[0],[355690042499141],[355690042511429],",Name="鐗╂枡淇℃伅澧炲姞",Code="Maste_wmsmaterial_mgr_add",Type=MenuType.BTN,Permission="WmsMaterial:add",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355690042519623,Pid=355690042511429,Pids="[0],[355690042499141],[355690042511429],",Name="鐗╂枡淇℃伅鍒犻櫎",Code="Maste_wmsmaterial_mgr_delete",Type=MenuType.BTN,Permission="WmsMaterial:delete",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355690042519624,Pid=355690042511429,Pids="[0],[355690042499141],[355690042511429],",Name="鐗╂枡淇℃伅缂栬緫",Code="Maste_wmsmaterial_mgr_edit",Type=MenuType.BTN,Permission="WmsMaterial:edit",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+
+                new SysMenu{Id=355690923847749,Pid=0,Pids="[0],",Name="缁勭洏鍏ュ簱",Code="BindEntrance",Type=MenuType.MENU,Icon="logout",Router="/BindEntrance",Component="main/BindEntrance/index",Application="warejob",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355691450822725,Pid=0,Pids="[0],",Name="鍑哄簱绠$悊",Code="ExWarehouse",Type=MenuType.MENU,Icon="login",Router="/ExWarehouse",Component="main/ExWarehouse/index",Application="warejob",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355691891650629,Pid=0,Pids="[0],",Name="浠诲姟绠$悊",Code="WmsTask",Type=MenuType.MENU,Icon="hourglass",Router="/WmsTask",Component="main/WmsTask/index",Application="warejob",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355692253458501,Pid=0,Pids="[0],",Name="搴撲綅瑙嗗浘",Code="LocationView",Type=MenuType.MENU,Icon="hdd",Router="/LocationView",Component="main/LocationView/index",Application="warecount",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=355692487622725,Pid=0,Pids="[0],",Name="鍑哄叆搴撹褰�",Code="View_AccessDetails",Type=MenuType.MENU,Icon="laptop",Router="/View_AccessDetails",Component="main/View_AccessDetails/index",Application="warecount",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+
+               
+               
+                new SysMenu{Id=386851902500933,Pid=0,Pids="[0],",Name="搴撳瓨淇℃伅",Code="Maste_wmsmaterialstock_mgr",Type=MenuType.MENU,Icon="vertical-left",Router="/wmsmaterialstock",Component="main/WmsMaterialStock/index",Application="warecount",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=386851902545989,Pid=386851902500933,Pids="[0],[386851902124101],[386851902500933],",Name="搴撳瓨鏌ヨ",Code="Maste_wmsmaterialstock_mgr_page",Type=MenuType.BTN,Permission="WmsMaterialStock:page",Application="warecount",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=386851902550085,Pid=386851902500933,Pids="[0],[386851902124101],[386851902500933],",Name="搴撳瓨璇︽儏",Code="Maste_wmsmaterialstock_mgr_detail",Type=MenuType.BTN,Permission="WmsMaterialStock:detail",Application="warecount",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=386851902554181,Pid=386851902500933,Pids="[0],[386851902124101],[386851902500933],",Name="搴撳瓨澧炲姞",Code="Maste_wmsmaterialstock_mgr_add",Type=MenuType.BTN,Permission="WmsMaterialStock:add",Application="warecount",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=386851902558277,Pid=386851902500933,Pids="[0],[386851902124101],[386851902500933],",Name="搴撳瓨鍒犻櫎",Code="Maste_wmsmaterialstock_mgr_delete",Type=MenuType.BTN,Permission="WmsMaterialStock:delete",Application="warecount",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+                new SysMenu{Id=386851902558278,Pid=386851902500933,Pids="[0],[386851902124101],[386851902500933],",Name="搴撳瓨缂栬緫",Code="Maste_wmsmaterialstock_mgr_edit",Type=MenuType.BTN,Permission="WmsMaterialStock:edit",Application="warecount",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysOrgSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysOrgSeedData.cs
new file mode 100644
index 0000000..3f64650
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysOrgSeedData.cs
@@ -0,0 +1,32 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺鏈烘瀯琛ㄧ瀛愭暟鎹�
+    /// </summary>
+    public class SysOrgSeedData : IEntitySeedData<SysOrg>
+    {
+        /// <summary>
+        /// 绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysOrg> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new SysOrg{Id=142307070910539, Pid=0, Pids="[0],", Name="浼熸湰鑲′唤鏈夐檺鍏徃", Code="wbgf", Sort=100, Remark="浼熸湰鑲′唤鏈夐檺鍏徃", Status=0 },
+                new SysOrg{Id=142307070910540, Pid=142307070910539, Pids="[0],[142307070910539],", Name="浼熸湰鑲′唤鏈夐檺鍏徃(涓婃捣)", Code="wbgf_sh", Sort=100, Remark="浼熸湰鑲′唤鏈夐檺鍏徃-涓婃捣", Status=0 },
+                new SysOrg{Id=142307070910541, Pid=142307070910539, Pids="[0],[142307070910539],", Name="浼熸湰鑲′唤鏈夐檺鍏徃(閲嶅簡)", Code="wbgf_cq", Sort=100, Remark="浼熸湰鑲′唤鏈夐檺鍏徃-閲嶅簡", Status=0 },
+                new SysOrg{Id=142307070910542, Pid=142307070910540, Pids="[0],[142307070910539],[142307070910540],", Name="鐮斿彂閮�", Code="wbgf_sh_yfb", Sort=100, Remark="", Status=0 },
+                new SysOrg{Id=142307070910543, Pid=142307070910540, Pids="[0],[142307070910539],[142307070910540],", Name="浼佸垝閮�", Code="wbgf_sh_qhb", Sort=100, Remark="", Status=0 },
+                new SysOrg{Id=142307070910544, Pid=142307070910541, Pids="[0],[142307070910539],[142307070910541],", Name="甯傚満閮�", Code="wbgf_cq_scb", Sort=100, Remark="", Status=0 },
+                new SysOrg{Id=142307070910545, Pid=142307070910541, Pids="[0],[142307070910539],[142307070910541],", Name="璐㈠姟閮�", Code="wbgf_cq_cwb", Sort=100, Remark="", Status=0 },
+                new SysOrg{Id=142307070910546, Pid=142307070910544, Pids="[0],[142307070910539],[142307070910541],[142307070910544],", Name="甯傚満閮ㄤ簩閮�", Code="wbgf_cq_scb", Sort=100, Remark="", Status=0 },
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysPosSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysPosSeedData.cs
new file mode 100644
index 0000000..a3a6a83
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysPosSeedData.cs
@@ -0,0 +1,28 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺鑱屼綅琛ㄧ瀛愭暟鎹�
+    /// </summary>
+    public class SysPosSeedData : IEntitySeedData<SysPos>
+    {
+        /// <summary>
+        /// 绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysPos> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new SysPos{Id=142307070910547, Name="鎬荤粡鐞�", Code="zjl", Sort=100, Remark="鎬荤粡鐞�", Status=0 },
+                new SysPos{Id=142307070910548, Name="鍓�荤粡鐞�", Code="fzjl", Sort=101, Remark="鍓�荤粡鐞�", Status=0 },
+                new SysPos{Id=142307070910549, Name="閮ㄩ棬缁忕悊", Code="bmjl", Sort=102, Remark="閮ㄩ棬缁忕悊", Status=0 },
+                new SysPos{Id=142307070910550, Name="宸ヤ綔浜哄憳", Code="gzry", Sort=103, Remark="宸ヤ綔浜哄憳", Status=0 },
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysRoleSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysRoleSeedData.cs
new file mode 100644
index 0000000..430d607
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysRoleSeedData.cs
@@ -0,0 +1,32 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺瑙掕壊琛ㄧ瀛愭暟鎹�
+    /// </summary>
+    public class SysRoleSeedData : IEntitySeedData<SysRole>
+    {
+        /// <summary>
+        /// 绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysRole> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new SysRole{Id=142307070910554, Name="绯荤粺绠$悊鍛�", Code="sys_manager_role", Sort=100, DataScopeType=DataScopeType.ALL, Remark="绯荤粺绠$悊鍛�", Status=0 },
+                //new SysRole{Id=142307070910555, Name="鏅�氱敤鎴�", Code="common_role", Sort=101, DataScopeType=DataScopeType.DEFINE, Remark="鏅�氱敤鎴�", Status=0 },
+                //new SysRole{Id=142307070910556, Name="绯荤粺绠$悊鍛�", Code="sys_manager_role", Sort=100, DataScopeType=DataScopeType.DEFINE, Remark="绯荤粺绠$悊鍛�", Status=0 },
+                //new SysRole{Id=142307070910557, Name="鏅�氱敤鎴�", Code="common_role", Sort=101, DataScopeType=DataScopeType.DEFINE, Remark="鏅�氱敤鎴�", Status=0 },
+
+                new SysRole{Id=356094617575493, Name="绠$悊鍛�", Code="admin", Sort=100, DataScopeType=DataScopeType.ALL, Remark="", Status=0 },
+                new SysRole{Id=358509609758789, Name="浠撳簱鐢ㄦ埛", Code="ware", Sort=100, DataScopeType=DataScopeType.ALL, Remark="", Status=0 },
+                new SysRole{Id=358536344862789, Name="鐮斿彂鐢ㄦ埛", Code="iWare", Sort=100, DataScopeType=DataScopeType.DEFINE, Remark="", Status=0 },
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysTimerSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysTimerSeedData.cs
new file mode 100644
index 0000000..4d7c194
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysTimerSeedData.cs
@@ -0,0 +1,39 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.TaskScheduler;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺浠诲姟璋冨害琛ㄧ瀛愭暟鎹�
+    /// </summary>
+    public class SysTimerSeedData : IEntitySeedData<SysTimer>
+    {
+        /// <summary>
+        /// 绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysTimer> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new SysTimer
+                {
+                    Id = 142307070910556,
+                    JobName = "鐧惧害api",
+                    DoOnce = false,
+                    StartNow = false,
+                    Interval = 5,
+                    TimerType = SpareTimeTypes.Interval,
+                    ExecuteType = SpareTimeExecuteTypes.Serial,
+                    RequestUrl = "https://www.baidu.com",
+                    RequestType = RequestTypeEnum.Post,
+                    IsDeleted =false,
+                    Remark = "鎺ュ彛API"
+                }
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserDataScopeSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserDataScopeSeedData.cs
new file mode 100644
index 0000000..98bfedd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserDataScopeSeedData.cs
@@ -0,0 +1,22 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core.SeedData
+{
+    public class SysUserDataScopeSeedData : IEntitySeedData<SysUserDataScope>
+    {
+        /// <summary>
+        /// 绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysUserDataScope> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new SysUserDataScope{SysUserId=142307070910551, SysOrgId=142307070910540 }
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserRoleSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserRoleSeedData.cs
new file mode 100644
index 0000000..257e136
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserRoleSeedData.cs
@@ -0,0 +1,24 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core.SeedData
+{
+    public class SysUserRoleSeedData : IEntitySeedData<SysUserRole>
+    {
+        /// <summary>
+        /// 绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysUserRole> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                // 绉熸埛绠$悊鍛橀粯璁ょ鐞嗗憳瑙掕壊
+                new SysUserRole {SysUserId = 142307070910552, SysRoleId = 142307070910554},
+                //new SysUserRole {SysUserId = 142307070910554, SysRoleId = 142307070910556}
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserSeedData.cs
new file mode 100644
index 0000000..f851679
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserSeedData.cs
@@ -0,0 +1,32 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺鐢ㄦ埛琛ㄧ瀛愭暟鎹�
+    /// </summary>
+    public class SysUserSeedData : IEntitySeedData<SysUser>
+    {
+        /// <summary>
+        /// 绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<SysUser> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new SysUser{Id=142307070910551, Account="superAdmin", Name="瓒呯骇绠$悊鍛�", NickName="superAdmin", Password="e10adc3949ba59abbe56e057f20f883e", AdminType=AdminType.SuperAdmin, Birthday=DateTimeOffset.Parse("1986-07-26 00:00:00"), Phone="18020030720", Sex=Gender.MALE, IsDeleted=false  },
+                new SysUser{Id=142307070910552, Account="admin", Name="绯荤粺绠$悊鍛�", NickName="admin", Password="e10adc3949ba59abbe56e057f20f883e", AdminType=AdminType.Admin, Birthday=DateTimeOffset.Parse("1986-07-26 00:00:00"), Phone="18020030720", Sex=Gender.MALE,IsDeleted=false  },
+                //new SysUser{Id=142307070910553, Account="zuohuaijun", Name="鏅�氱敤鎴�", NickName="zuohuaijun", Password="e10adc3949ba59abbe56e057f20f883e", AdminType=AdminType.None, Birthday=DateTimeOffset.Parse("1986-07-26 00:00:00"), Phone="18020030720", Sex=Gender.MALE, IsDeleted=false },
+
+                //new SysUser{Id=142307070910554, Account="zuohuaijun@163.com", Name="绯荤粺绠$悊鍛�", NickName="admin", Password="e10adc3949ba59abbe56e057f20f883e", AdminType=AdminType.Admin, Birthday=DateTimeOffset.Parse("1986-07-26 00:00:00"), Phone="18020030720", Sex=Gender.MALE, IsDeleted=false },
+                //new SysUser{Id=142307070910556, Account="dilon@163.com", Name="鏅�氱敤鎴�", NickName="dilon", Password="e10adc3949ba59abbe56e057f20f883e", AdminType=AdminType.None, Birthday=DateTimeOffset.Parse("1986-07-26 00:00:00"), Phone="18020030720", Sex=Gender.MALE, IsDeleted=false },
+                new SysUser{Id=358533464608837, Account="warehouse", Name="浠撳簱鐢ㄦ埛", NickName="warehouse", Password="e10adc3949ba59abbe56e057f20f883e", AdminType=AdminType.None, Birthday=DateTimeOffset.Parse("1986-07-26 00:00:00"), Phone="13869156666", Sex=Gender.MALE,IsDeleted=false  },
+                new SysUser{Id=358536045723717, Account="admin1", Name="鐮斿彂閮�", NickName="admin1", Password="f379eaf3c831b04de153469d1bec345e", AdminType=AdminType.None, Birthday=DateTimeOffset.Parse("1986-07-26 00:00:00"), Phone="13869156666", Sex=Gender.MALE, IsDeleted=false  }
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsAreaSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsAreaSeedData.cs
new file mode 100644
index 0000000..86aa99a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsAreaSeedData.cs
@@ -0,0 +1,24 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace YaKe.Les.Core.SeedData
+{
+    public class WmsAreaSeedData : IEntitySeedData<WmsArea>
+    {
+        /// <summary>
+        /// 搴撳尯绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<WmsArea> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new WmsArea{Id=355701739634757,AreaName="A鍖�",AreaDesc="",AreaType=AreaType.PUTONGK,AreaStatus=CommonStatus.ENABLE},
+                new WmsArea{Id=358851237277765,AreaName="B鍖�",AreaDesc="",AreaType=AreaType.LITIKU,AreaStatus=CommonStatus.ENABLE},
+                new WmsArea{Id=358851309400133,AreaName="C鍖�",AreaDesc="",AreaType=AreaType.GONGGONGKU,AreaStatus=CommonStatus.ENABLE}
+            };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerPlaceSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerPlaceSeedData.cs
new file mode 100644
index 0000000..0a55c80
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerPlaceSeedData.cs
@@ -0,0 +1,27 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace YaKe.Les.Core.SeedData
+{
+    public class WmsContainerPlaceSeedData : IEntitySeedData<WmsContainerPlace>
+    {
+        /// <summary>
+        /// 鎵樼洏搴撲綅鍏崇郴琛ㄧ瀛愭暟鎹�
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<WmsContainerPlace> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new WmsContainerPlace{Id=358853586010181,PlaceId=358852152045637,PlaceCode="1-1-1-1-1",ContainerId=358852634767429,ContainerCode="TM00001",ContainerPlaceStatus=CommonStatus.DELETED},
+                new WmsContainerPlace{Id=358856088039493,PlaceId=358852152119365,PlaceCode="1-1-1-2-1",ContainerId=358852634767429,ContainerCode="TM00001",ContainerPlaceStatus=CommonStatus.DELETED},
+                new WmsContainerPlace{Id=358856888660037,PlaceId=358852152045637,PlaceCode="1-1-1-1-1",ContainerId=358852767887429,ContainerCode="TM00002",ContainerPlaceStatus=CommonStatus.DELETED},
+                new WmsContainerPlace{Id=358857243414597,PlaceId=358852152156229,PlaceCode="1-1-1-5-1",ContainerId=358852831047749,ContainerCode="TM00003",ContainerPlaceStatus=CommonStatus.ENABLE},
+                new WmsContainerPlace{Id=358857693601867,PlaceId=358852152045637,PlaceCode="1-1-1-1-1",ContainerId=358853016055877,ContainerCode="TM00004",ContainerPlaceStatus=CommonStatus.ENABLE},
+                new WmsContainerPlace{Id=358858262188101,PlaceId=358852152143941,PlaceCode="1-1-1-4-1",ContainerId=358853070798917,ContainerCode="TM00005",ContainerPlaceStatus=CommonStatus.ENABLE}
+            };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerSeedData.cs
new file mode 100644
index 0000000..d740814
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerSeedData.cs
@@ -0,0 +1,29 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace YaKe.Les.Core.SeedData
+{
+    public class WmsContainerSeedData : IEntitySeedData<WmsContainer>
+    {
+        /// <summary>
+        /// 鎵樼洏瀹炰綋绉嶅瓙
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<WmsContainer> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new WmsContainer{Id=358852634767429,ContainerCode="TM00001",ContainerType=ContainerType.SULIAO,ContainerStatus=ContainerStatus.KOUXIAN,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+                new WmsContainer{Id=358852767887429,ContainerCode="TM00002",ContainerType=ContainerType.SULIAO,ContainerStatus=ContainerStatus.ZUPANG,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+                new WmsContainer{Id=358852831047749,ContainerCode="TM00003",ContainerType=ContainerType.MUZHI,ContainerStatus=ContainerStatus.KUWEI,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+                new WmsContainer{Id=358853016055877,ContainerCode="TM00004",ContainerType=ContainerType.MUZHI,ContainerStatus=ContainerStatus.KUWEI,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+                new WmsContainer{Id=358853070798917,ContainerCode="TM00005",ContainerType=ContainerType.JINSHU,ContainerStatus=ContainerStatus.KUWEI,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+                new WmsContainer{Id=358853146058821,ContainerCode="TM00006",ContainerType=ContainerType.JINSHU,ContainerStatus=ContainerStatus.KOUXIAN,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+                new WmsContainer{Id=358853199671365,ContainerCode="TM00007",ContainerType=ContainerType.QITA,ContainerStatus=ContainerStatus.KOUXIAN,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+                new WmsContainer{Id=358853255102533,ContainerCode="TM00008",ContainerType=ContainerType.SULIAO,ContainerStatus=ContainerStatus.KOUXIAN,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+            };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialContainerSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialContainerSeedData.cs
new file mode 100644
index 0000000..e284996
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialContainerSeedData.cs
@@ -0,0 +1,29 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace YaKe.Les.Core.SeedData
+{
+    public class WmsMaterialContainerSeedData : IEntitySeedData<WmsMaterialContainer>
+    {
+        /// <summary>
+        /// 鐗╂枡鎵樼洏鍏崇郴鍏崇郴琛ㄧ瀛愭暟鎹�
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<WmsMaterialContainer> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new WmsMaterialContainer{Id=358856845353031,ContainerId=358852767887429,ContainerCode="TM00002",MaterialName="姘斿姩鎷ф澗鏋�",MaterialNo="3070400120",MaterialBatch="3070400120",MaterialSpec="16SUP PRO",MaterialId=358845906632773,BindQuantity=(decimal)100.00,BindStatus=CommonStatus.DELETED,SampleQty=(decimal)0.00,OrderNo="358856845353029"},
+                new WmsMaterialContainer{Id=358856980582469,ContainerId=358852767887429,ContainerCode="TM00002",MaterialName="姘斿姩鎷ф澗鏋�",MaterialNo="3070400120",MaterialBatch="3070400120",MaterialSpec="16SUP PRO",MaterialId=358845906632773,BindQuantity=(decimal)100.00,BindStatus=CommonStatus.DISABLE,SampleQty=(decimal)0.00,OrderNo="358856980553798"},
+                new WmsMaterialContainer{Id=358857030975557,ContainerId=358852767887429,ContainerCode="TM00002",MaterialName="姘斿姩鎷ф澗鏋�",MaterialNo="3070400120",MaterialBatch="3070400120",MaterialSpec="16SUP PRO",MaterialId=358845906632773,BindQuantity=(decimal)100.00,BindStatus=CommonStatus.ENABLE,SampleQty=(decimal)0.00,OrderNo="358857030971461"},
+                new WmsMaterialContainer{Id=358857618075719,ContainerId=358853016055877,ContainerCode="TM00004",MaterialName="姘斿姩鎷ф澗鏋�",MaterialNo="3070400120",MaterialBatch="3070400120",MaterialSpec="16SUP PRO",MaterialId=358845906632773,BindQuantity=(decimal)100.00,BindStatus=CommonStatus.ENABLE,SampleQty=(decimal)0.00,OrderNo="358857618075717"},
+                new WmsMaterialContainer{Id=358857618153542,ContainerId=358853016055877,ContainerCode="TM00004",MaterialName="瀹氫綅閿�",MaterialNo="3110800160",MaterialBatch="3110800160",MaterialSpec="YDL31-D8-P12-L18-B8-X",MaterialId=358847125188677,BindQuantity=(decimal)100.00,BindStatus=CommonStatus.ENABLE,SampleQty=(decimal)0.00,OrderNo="358857618075717"},
+                new WmsMaterialContainer{Id=358858261872714,ContainerId=358853070798917,ContainerCode="TM00005",MaterialName="鐢垫満",MaterialNo="1222202451",MaterialBatch="1222202451",MaterialSpec="LA21038-020.01-01.10",MaterialId=358851158249541,BindQuantity=(decimal)10.00,BindStatus=CommonStatus.ENABLE,SampleQty=(decimal)0.00,OrderNo="358858261872712"},
+                new WmsMaterialContainer{Id=358858262044742,ContainerId=358853070798917,ContainerCode="TM00005",MaterialName="浼犳劅鍣ㄥ畨瑁呮敮鏋�",MaterialNo="2200074102",MaterialBatch="2200074102",MaterialSpec="40488-020-D086",MaterialId=358848226168901,BindQuantity=(decimal)1.00,BindStatus=CommonStatus.ENABLE,SampleQty=(decimal)0.00,OrderNo="358858261872712"},
+                new WmsMaterialContainer{Id=358858262089798,ContainerId=358853070798917,ContainerCode="TM00005",MaterialName="濂楃瓛鏀剁撼鐩掑畨瑁呮澘",MaterialNo="2200074125",MaterialBatch="2200074125",MaterialSpec="4301015-40-110-04-01",MaterialId=358847917588549,BindQuantity=(decimal)10.00,BindStatus=CommonStatus.ENABLE,SampleQty=(decimal)0.00,OrderNo="358858261872712"}
+            };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialSeedData.cs
new file mode 100644
index 0000000..dc572b4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialSeedData.cs
@@ -0,0 +1,28 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace YaKe.Les.Core.SeedData
+{
+    //public class WmsMaterialSeedData : IEntitySeedData<WmsMaterial>
+    //{
+    //    /// <summary>
+    //    /// 鐗╂枡琛ㄧ瀛愭暟鎹�
+    //    /// </summary>
+    //    /// <param name="dbContext"></param>
+    //    /// <param name="dbContextLocator"></param>
+    //    /// <returns></returns>
+    //    public IEnumerable<WmsMaterial> HasData(DbContext dbContext, Type dbContextLocator)
+    //    {
+    //        return new[]
+    //        {
+    //            new WmsMaterial{Id=355707111780421,MaterialName="LAPP鍔ㄥ姏鐢电紗",MaterialNo="3570100022",MaterialBatch="3570100022",InspectionMethod=MaterialInspection.MIANJIAN,MaterialType=MaterialType.YUANCAILIAO,MaterialSpec="OLFLEX CLASSIC 110 5G6",UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,Safeqty=100,Keymaterials=YesOrNot.N,Warranty=(decimal)100,MaxImumqty=(decimal)100,MinstorageAge=(decimal)1,MaxstorageAge=(decimal)1},
+    //            new WmsMaterial{Id=358845906632773,MaterialName="姘斿姩鎷ф澗鏋�",MaterialNo="3070400120",MaterialBatch="3070400120",InspectionMethod=MaterialInspection.MIANJIAN,MaterialType=MaterialType.YUANCAILIAO,MaterialSpec="16SUP PRO",UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,Safeqty=100,Keymaterials=YesOrNot.N,Warranty=(decimal)10,MaxImumqty=(decimal)100,MinstorageAge=(decimal)1,MaxstorageAge=(decimal)1},
+    //            new WmsMaterial{Id=358847125188677,MaterialName="瀹氫綅閿�",MaterialNo="3110800160",MaterialBatch="3110800160",InspectionMethod=MaterialInspection.MIANJIAN,MaterialType=MaterialType.BANCHENGPING,MaterialSpec="YDL31-D8-P12-L18-B8-X",UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,Safeqty=100,Keymaterials=YesOrNot.N,Warranty=(decimal)1,MaxImumqty=(decimal)1,MinstorageAge=(decimal)1,MaxstorageAge=(decimal)1},
+    //            new WmsMaterial{Id=358847583273029,MaterialName="闃茬垎浼犳劅鍣�",MaterialNo="3090200565",MaterialBatch="3090200565",InspectionMethod=MaterialInspection.CHOUJIAN,MaterialType=MaterialType.CHENGPING,MaterialSpec="BND-JA12GT4-24PH-25M-TL",UnitType=UnitType.ZHONGLIANG,UnitNo=UnitnoType.T,Safeqty=1,Keymaterials=YesOrNot.N,Warranty=(decimal)1,MaxImumqty=(decimal)1,MinstorageAge=(decimal)1,MaxstorageAge=(decimal)1},
+    //            new WmsMaterial{Id=358847917588549,MaterialName="濂楃瓛鏀剁撼鐩掑畨瑁呮澘",MaterialNo="2200074125",MaterialBatch="2200074125",InspectionMethod=MaterialInspection.CHOUJIAN,MaterialType=MaterialType.CHENGPING,MaterialSpec="4301015-40-110-04-01",UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,Safeqty=100,Keymaterials=YesOrNot.Y,Warranty=(decimal)1,MaxImumqty=(decimal)1,MinstorageAge=(decimal)1,MaxstorageAge=(decimal)1},
+    //            new WmsMaterial{Id=358848226168901,MaterialName="浼犳劅鍣ㄥ畨瑁呮敮鏋�",MaterialNo="2200074102",MaterialBatch="2200074102",InspectionMethod=MaterialInspection.MIANJIAN,MaterialType=MaterialType.BANCHENGPING,MaterialSpec="40488-020-D086",UnitType=UnitType.ZHONGLIANG,UnitNo=UnitnoType.T,Safeqty=100,Keymaterials=YesOrNot.N,Warranty=(decimal)100,MaxImumqty=(decimal)1,MinstorageAge=(decimal)1,MaxstorageAge=(decimal)1},
+    //            new WmsMaterial{Id=358851158249541,MaterialName="鐢垫満",MaterialNo="1222202451",MaterialBatch="1222202451",InspectionMethod=MaterialInspection.CHOUJIAN,MaterialType=MaterialType.CHENGPING,MaterialSpec="LA21038-020.01-01.10",UnitType=UnitType.ZHONGLIANG,UnitNo=UnitnoType.T,Safeqty=100,Keymaterials=YesOrNot.Y,Warranty=(decimal)1,MaxImumqty=(decimal)100,MinstorageAge=(decimal)1,MaxstorageAge=(decimal)1},
+    //        };
+    //    }
+    //}
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialStockSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialStockSeedData.cs
new file mode 100644
index 0000000..2f562fc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialStockSeedData.cs
@@ -0,0 +1,29 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace YaKe.Les.Core.SeedData
+{
+    public class WmsMaterialStockSeedData : IEntitySeedData<WmsMaterialStock>
+    {
+        /// <summary>
+        /// 搴撳瓨琛ㄧ瀛愭暟鎹�
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<WmsMaterialStock> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new WmsMaterialStock{Id=358853586690117,MaterialNo="N/A",MaterialType=MaterialType.KONGTUO,MaterialBatch="N/A",MaterialName="N/A",MaterialSpec="N/A",InspectionMethod=MaterialInspection.MIANJIAN,UnitType=UnitType.ZHONGLIANG,UnitNo=UnitnoType.T,StockNumber=(decimal)0.00,PlaceCode="N/A",ContainerCode="TM00001",AreaId=0},
+                new WmsMaterialStock{Id=358856888787013,MaterialNo="3070400120",MaterialType=MaterialType.YUANCAILIAO,MaterialBatch="3070400120",MaterialName="姘斿姩鎷ф澗鏋�",MaterialSpec="16SUP PRO",InspectionMethod=MaterialInspection.MIANJIAN,UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,StockNumber=(decimal)0.00,PlaceCode="N/A",ContainerCode="TM00002",AreaId=0},
+                new WmsMaterialStock{Id=358857243504709,MaterialNo="N/A",MaterialType=MaterialType.KONGTUO,MaterialBatch="N/A",MaterialName="N/A",MaterialSpec="N/A",InspectionMethod=MaterialInspection.MIANJIAN,UnitType=UnitType.ZHONGLIANG,UnitNo=UnitnoType.T,StockNumber=(decimal)1.00,PlaceCode="1-1-1-5-1",ContainerCode="TM00003",AreaId=355701739634757},
+                new WmsMaterialStock{Id=358857693638725,MaterialNo="3070400120",MaterialType=MaterialType.YUANCAILIAO,MaterialBatch="3070400120",MaterialName="姘斿姩鎷ф澗鏋�",MaterialSpec="16SUP PRO",InspectionMethod=MaterialInspection.MIANJIAN,UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,StockNumber=(decimal)100.00,PlaceCode="1-1-1-1-1",ContainerCode="TM00004",AreaId=355701739634757},
+                new WmsMaterialStock{Id=358857693646917,MaterialNo="3110800160",MaterialType=MaterialType.BANCHENGPING,MaterialBatch="3110800160",MaterialName="瀹氫綅閿�",MaterialSpec="YDL31-D8-P12-L18-B8-X",InspectionMethod=MaterialInspection.MIANJIAN,UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,StockNumber=(decimal)100.00,PlaceCode="1-1-1-1-1",ContainerCode="TM00004",AreaId=355701739634757},
+                new WmsMaterialStock{Id=358858262392901,MaterialNo="1222202451",MaterialType=MaterialType.CHENGPING,MaterialBatch="1222202451",MaterialName="鐢垫満",MaterialSpec="LA21038-020.01-01.10",InspectionMethod=MaterialInspection.CHOUJIAN,UnitType=UnitType.ZHONGLIANG,UnitNo=UnitnoType.T,StockNumber=(decimal)10.00,PlaceCode="1-1-1-4-1",ContainerCode="TM00005",AreaId=355701739634757},
+                new WmsMaterialStock{Id=358858262401093,MaterialNo="2200074102",MaterialType=MaterialType.BANCHENGPING,MaterialBatch="2200074102",MaterialName="浼犳劅鍣ㄥ畨瑁呮敮鏋�",MaterialSpec="40488-020-D086",InspectionMethod=MaterialInspection.MIANJIAN,UnitType=UnitType.ZHONGLIANG,UnitNo=UnitnoType.T,StockNumber=(decimal)1.00,PlaceCode="1-1-1-4-1",ContainerCode="TM00005",AreaId=355701739634757},
+                new WmsMaterialStock{Id=358858262409285,MaterialNo="2200074125",MaterialType=MaterialType.CHENGPING,MaterialBatch="2200074125",MaterialName="濂楃瓛鏀剁撼鐩掑畨瑁呮澘",MaterialSpec="4301015-40-110-04-01",InspectionMethod=MaterialInspection.CHOUJIAN,UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,StockNumber=(decimal)10.00,PlaceCode="1-1-1-4-1",ContainerCode="TM00005",AreaId=355701739634757}
+            };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsPlaceSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsPlaceSeedData.cs
new file mode 100644
index 0000000..65e97c3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsPlaceSeedData.cs
@@ -0,0 +1,69 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace YaKe.Les.Core.SeedData
+{
+    public class WmsPlaceSeedData : IEntitySeedData<WmsPlace>
+    {
+        /// <summary>
+        /// 搴撲綅琛ㄧ瀛愭暟鎹�
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<WmsPlace> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new WmsPlace{Id=358852152045637,PlaceCode="1-1-1-1-1",PlaceStatus=PlaceStatus.CUNHUO,AreaId=355701739634757,RowNo=1,ColumnNo=1,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152119365,PlaceCode="1-1-1-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=1,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152131653,PlaceCode="1-1-1-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=1,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152143941,PlaceCode="1-1-1-4-1",PlaceStatus=PlaceStatus.CUNHUO,AreaId=355701739634757,RowNo=1,ColumnNo=1,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152156229,PlaceCode="1-1-1-5-1",PlaceStatus=PlaceStatus.CUNHUO,AreaId=355701739634757,RowNo=1,ColumnNo=1,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.Y,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152164421,PlaceCode="1-1-1-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=1,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152172613,PlaceCode="1-1-2-1-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=2,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152180805,PlaceCode="1-1-2-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=2,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152193093,PlaceCode="1-1-2-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=2,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152205381,PlaceCode="1-1-2-4-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=2,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152217669,PlaceCode="1-1-2-5-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=2,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152229957,PlaceCode="1-1-2-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=2,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152238149,PlaceCode="1-1-3-1-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=3,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152246341,PlaceCode="1-1-3-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=3,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.Y,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152258629,PlaceCode="1-1-3-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=3,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152266821,PlaceCode="1-1-3-4-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=3,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152283205,PlaceCode="1-1-3-5-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=3,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152295493,PlaceCode="1-1-3-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=3,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152307781,PlaceCode="1-1-4-1-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=4,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152315973,PlaceCode="1-1-4-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=4,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152328261,PlaceCode="1-1-4-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=4,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152336453,PlaceCode="1-1-4-4-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=4,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152344645,PlaceCode="1-1-4-5-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=4,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152356933,PlaceCode="1-1-4-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=4,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152365125,PlaceCode="1-1-5-1-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=5,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152373317,PlaceCode="1-1-5-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=5,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152381509,PlaceCode="1-1-5-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=5,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152393797,PlaceCode="1-1-5-4-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=5,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152401989,PlaceCode="1-1-5-5-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=5,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152410181,PlaceCode="1-1-5-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=5,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152422469,PlaceCode="1-1-6-1-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=6,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152430661,PlaceCode="1-1-6-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=6,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152442949,PlaceCode="1-1-6-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=6,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152451141,PlaceCode="1-1-6-4-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=6,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152463429,PlaceCode="1-1-6-5-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=6,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152471621,PlaceCode="1-1-6-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=6,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152479813,PlaceCode="1-1-7-1-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=7,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152496197,PlaceCode="1-1-7-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=7,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152504389,PlaceCode="1-1-7-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=7,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152516677,PlaceCode="1-1-7-4-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=7,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152524869,PlaceCode="1-1-7-5-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=7,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152610885,PlaceCode="1-1-7-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=7,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152623173,PlaceCode="1-1-8-1-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=8,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152631365,PlaceCode="1-1-8-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=8,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152639557,PlaceCode="1-1-8-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=8,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152651845,PlaceCode="1-1-8-4-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=8,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152660037,PlaceCode="1-1-8-5-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=8,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+                new WmsPlace{Id=358852152668229,PlaceCode="1-1-8-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=8,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+            };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsTaskSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsTaskSeedData.cs
new file mode 100644
index 0000000..1456986
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsTaskSeedData.cs
@@ -0,0 +1,29 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using Furion.DatabaseAccessor;
+
+namespace YaKe.Les.Core.SeedData
+{
+    public class WmsTaskSeedData : IEntitySeedData<WmsTask>
+    {
+        /// <summary>
+        /// 浠诲姟绠$悊绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        /// <returns></returns>
+        public IEnumerable<WmsTask> HasData(DbContext dbContext, Type dbContextLocator)
+        {
+            return new[]
+            {
+                new WmsTask{Id=358853585506373,TaskNo="358853585506374",TaskModel=TaskModel.SHOUDONG,TaskType=TaskType.RUKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00001",SourcePlace="N/A",ToPlace="1-1-1-1-1",Aisle=1,AreaName="A鍖�",OrderNo="N/A",SendTimes=0},
+                new WmsTask{Id=358856088019013,TaskNo="358856088019014",TaskModel=TaskModel.SHOUDONG,TaskType=TaskType.YIKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00001",SourcePlace="1-1-1-1-1",ToPlace="1-1-1-2-1",Aisle=1,AreaName="A鍖�",OrderNo="N/A",SendTimes=0},
+                new WmsTask{Id=358856349995077,TaskNo="358856349995078",TaskModel=TaskModel.SHOUDONG,TaskType=TaskType.CHUKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00001",SourcePlace="1-1-1-2-1",ToPlace="N/A",Aisle=1,AreaName="A鍖�",OrderNo="N/A",SendTimes=0},
+                new WmsTask{Id=358856845733957,TaskNo="358856845733958",TaskModel=TaskModel.ZIDONG,TaskType=TaskType.RUKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00002",SourcePlace="100",ToPlace="1-1-1-1-1",Aisle=1,AreaName="A鍖�",OrderNo="358856845353029",SendTimes=0},
+                new WmsTask{Id=358856980553799,TaskNo="358856980553800",TaskModel=TaskModel.ZIDONG,TaskType=TaskType.CHUKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00002",SourcePlace="1-1-1-1-1",ToPlace="101",Aisle=1,AreaName="A鍖�",OrderNo="358856980553798",SendTimes=0},
+                new WmsTask{Id=358857243410501,TaskNo="358857243410502",TaskModel=TaskModel.SHOUDONG,TaskType=TaskType.RUKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00003",SourcePlace="N/A",ToPlace="1-1-1-5-1",Aisle=1,AreaName="A鍖�",OrderNo="N/A",SendTimes=0},
+                new WmsTask{Id=358857618247749,TaskNo="358857618247750",TaskModel=TaskModel.ZIDONG,TaskType=TaskType.RUKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00004",SourcePlace="101",ToPlace="1-1-1-1-1",Aisle=1,AreaName="A鍖�",OrderNo="358857618075717",SendTimes=0},
+                new WmsTask{Id=358858262179909,TaskNo="358858262179910",TaskModel=TaskModel.SHOUDONG,TaskType=TaskType.RUKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00005",SourcePlace="N/A",ToPlace="1-1-1-4-1",Aisle=1,AreaName="A鍖�",OrderNo="358858261872712",SendTimes=0}
+            };
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Service/BaseId.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Service/BaseId.cs
new file mode 100644
index 0000000..29f0ef5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Service/BaseId.cs
@@ -0,0 +1,18 @@
+锘縰sing Furion.DataValidation;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Core.Service
+{
+    /// <summary>
+    /// 涓婚敭Id鏄犲皠DTO
+    /// </summary>
+    public class BaseId
+    {
+        /// <summary>
+        /// 涓婚敭Id
+        /// </summary>
+        [Required(ErrorMessage = "Id涓嶈兘涓虹┖")]
+        [DataValidation(ValidationTypes.Numeric)]
+        public long Id { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/CodeGenUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/CodeGenUtil.cs
new file mode 100644
index 0000000..1826377
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/CodeGenUtil.cs
@@ -0,0 +1,85 @@
+锘縰sing System.Text.RegularExpressions;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 浠g爜鐢熸垚甯姪绫�
+    /// </summary>
+    public static class CodeGenUtil
+    {
+        public static string ConvertDataType(string dataType)
+        {
+            if (string.IsNullOrEmpty(dataType)) return "";
+            if (dataType.StartsWith("System.Nullable"))
+                dataType = new Regex(@"(?i)(?<=\[)(.*)(?=\])").Match(dataType).Value; // 涓嫭鍙穂]閲岄潰鍊�
+
+            switch (dataType)
+            {
+                case "System.Guid": return "Guid";
+                case "System.String": return "string";
+                case "System.Int32": return "int";
+                case "System.Int64": return "long";
+                case "System.Single": return "float";
+                case "System.Double": return "double";
+                case "System.Decimal": return "decimal";
+                case "System.Boolean": return "bool";
+                case "System.DateTime": return "DateTime";
+                case "System.DateTimeOffset": return "DateTimeOffset";
+                case "System.Byte": return "byte";
+                case "System.Byte[]": return "byte[]";
+                default:
+                    break;
+            }
+            return dataType;
+        }
+
+        /// <summary>
+        /// 鏁版嵁绫诲瀷杞樉绀虹被鍨�
+        /// </summary>
+        /// <param name="dataType"></param>
+        /// <returns></returns>
+        public static string DataTypeToEff(string dataType)
+        {
+            if (string.IsNullOrEmpty(dataType)) return "";
+            return dataType switch
+            {
+                "string" => "input",
+                "int" => "inputnumber",
+                "long" => "input",
+                "float" => "input",
+                "double" => "input",
+                "decimal" => "input",
+                "bool" => "switch",
+                "Guid" => "input",
+                //"DateTime" => "datepicker",
+                //"DateTimeOffset" => "datepicker",
+                //鏃ユ湡绫诲瀷榛樿涓� 鏃ユ湡鏃堕棿閫夋嫨 銆怑ditby shaocx,2024-04-16銆�
+                "DateTime" => "datetimepicker",
+                "DateTimeOffset" => "datetimepicker",
+                //_ => "input",
+                //鍏朵粬绫诲瀷鏀逛负 select 銆怑ditby shaocx,2024-04-20銆�
+                _ => "select",
+            };
+        }
+
+        //// 鏄惁閫氱敤瀛楁
+        //public static bool IsCommonColumn(string columnName)
+        //{
+        //    var columnList = new List<string>()
+        //    {
+        //        "CreatedTime", "UpdatedTime", "CreatedUserId", "CreatedUserName", "UpdatedUserId", "UpdatedUserName", "IsDeleted"
+        //    };
+        //    return columnList.Contains(columnName);
+        //}
+
+        // 鏄惁閫氱敤瀛楁
+        public static bool IsCommonColumn(string columnName)
+        {
+            var columnList = new List<string>()
+            {
+               "CreatedUserId","UpdatedUserId",  "IsDeleted"
+            };
+            return columnList.Contains(columnName);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/Comm.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/Comm.cs
new file mode 100644
index 0000000..7431f4a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/Comm.cs
@@ -0,0 +1,46 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍏叡鏂规硶
+    /// </summary>
+    public static class Comm
+    {
+        /// <summary>
+        /// 鐢熸垚鍑哄叆搴撳崟鍙锋祦姘�
+        /// </summary>
+        /// <param name="maxInvoiceNumber"></param>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        public static string GenerateNewInvoiceNumber(string maxInvoiceNumber,int type)
+        {
+
+            if (string.IsNullOrEmpty(maxInvoiceNumber))
+            {
+                string today = DateTime.Today.ToString("yyyyMMdd");
+                //鍒ゆ柇鏄叆搴撹繕鏄嚭搴�
+                if (type == 1)
+                {
+                    return "RUKU" + today + "0001";
+                }
+                else
+                {
+                    return "CHUKU" + today + "0001";
+                }
+         
+            }
+            else
+            {
+                var before = maxInvoiceNumber.Substring(0, 12);
+                var queen = maxInvoiceNumber.Substring(12);
+                int maxNumber = int.Parse(queen);
+                return before + (maxNumber+1).ToString("D4");
+            }
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataCompareUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataCompareUtil.cs
new file mode 100644
index 0000000..ff35ba8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataCompareUtil.cs
@@ -0,0 +1,215 @@
+锘縰sing System.Linq.Expressions;
+using System.Reflection;
+
+namespace Furion.Extras.Admin.NET.Util
+{
+    public class DataCompareUtil<T1, T2>
+    {
+        public DataCompareUtil(
+            Expression<Func<T1, object>> SelectorKey_1,
+            Expression<Func<T2, object>> SelectorKey_2
+            )
+        {
+            Propertys = new List<View_Property>();
+            T_1 = typeof(T1);
+            T_2 = typeof(T2);
+
+            KeyProperty = new View_Property()
+            {
+                Property_1 = T_1.GetProperty(GetPropertyName(SelectorKey_1)),
+                Property_2 = T_2.GetProperty(GetPropertyName(SelectorKey_2))
+            };
+        }
+
+        private List<View_Property> Propertys { get; set; }
+
+        private Type T_1 { get; set; }
+        private Type T_2 { get; set; }
+
+        private View_Property KeyProperty { get; set; }
+
+        public void PushCompare(
+            Expression<Func<T1, object>> Selector_1,
+            Expression<Func<T2, object>> Selector_2
+            )
+        {
+            Propertys.Add(new View_Property()
+            {
+                Property_1 = T_1.GetProperty(GetPropertyName(Selector_1)),
+                Property_2 = T_2.GetProperty(GetPropertyName(Selector_2))
+            });
+        }
+
+        public View_DataCompare<T1, T2> Compare(
+            List<T1> Data_1,
+            List<T2> Data_2
+            )
+        {
+            View_DataCompare<T1, T2> data = new View_DataCompare<T1, T2>();
+
+            Dictionary<string, T1> dic_Contain_2 = new Dictionary<string, T1>();
+            Dictionary<string, T2> dic_Contain_1 = new Dictionary<string, T2>();
+
+            foreach (var item_1 in Data_1)
+            {
+                foreach (var item_2 in Data_2)
+                {
+                    bool IsDifferent = false;
+
+                    foreach (var Property_item in Propertys)
+                    {
+                        if (!IsDifferent)
+                        {
+                            if (Property_item.Property_1 == null || Property_item.Property_2 == null)
+                            {
+                                if (Property_item.Property_1 == null && Property_item.Property_2 == null)
+                                {
+                                    break;
+                                }
+                                else
+                                {
+                                    IsDifferent = true;
+                                }
+                            }
+                            else
+                            {
+                                var obj_value1 = Property_item.Property_1.GetValue(item_1);
+                                var obj_value2 = Property_item.Property_2.GetValue(item_2);
+
+                                if (obj_value1 != null && obj_value2 != null)
+                                {
+                                    if (obj_value1 is decimal @decimal && obj_value2 is decimal @decimal2 && @decimal != @decimal2)
+                                    {
+                                        IsDifferent = true;
+                                    }
+                                    else if (obj_value1 is int @intl && obj_value2 is int @int2 && @intl != @int2)
+                                    {
+                                        IsDifferent = true;
+                                    }
+                                    else if (obj_value1 is Guid @Guidl && obj_value2 is Guid @Guid2 && @Guidl != @Guid2)
+                                    {
+                                        IsDifferent = true;
+                                    }
+                                    else if (obj_value1 is DateTime @DateTimel && obj_value2 is DateTime @DateTime2 && @DateTimel != @DateTime2)
+                                    {
+                                        IsDifferent = true;
+                                    }
+                                    else
+                                    {
+                                        if (obj_value1.ToString() != obj_value2.ToString())
+                                            IsDifferent = true;
+                                    }
+                                }
+                                else if (obj_value1 != null || obj_value2 != null)
+                                {
+                                    IsDifferent = true;
+                                }
+                            }
+                        }
+                        else
+                        {
+                            break;
+                        }
+                    }
+
+                    if (!IsDifferent)
+                    {
+                        //item_1涓巌tem_2鐩稿悓
+                        string key_1 = KeyProperty.Property_1.GetValue(item_1).ToString();
+
+                        if (!dic_Contain_2.ContainsKey(key_1))
+                        {
+                            dic_Contain_2.Add(key_1, item_1);
+                            data.Contain_2.Add(item_1);
+                        }
+
+                        string key_2 = KeyProperty.Property_2.GetValue(item_2).ToString();
+
+                        if (!dic_Contain_1.ContainsKey(key_2))
+                        {
+                            dic_Contain_1.Add(key_2, item_2);
+                            data.Contain_1.Add(item_2);
+                        }
+                    }
+                }
+            }
+
+            foreach (var item_1 in Data_1)
+            {
+                string key_1 = KeyProperty.Property_1.GetValue(item_1).ToString();
+
+                if (!dic_Contain_2.ContainsKey(key_1))
+                {
+                    data.NoContain_2.Add(item_1);
+                }
+            }
+
+            foreach (var item_2 in Data_2)
+            {
+                string key_2 = KeyProperty.Property_2.GetValue(item_2).ToString();
+
+                if (!dic_Contain_1.ContainsKey(key_2))
+                {
+                    data.NoContain_1.Add(item_2);
+                }
+            }
+
+            return data;
+        }
+
+        public static string GetPropertyName<T>(Expression<Func<T, object>> expr)
+        {
+            var rtn = "";
+            if (expr.Body is UnaryExpression expression)
+            {
+                rtn = ((MemberExpression)expression.Operand).Member.Name;
+            }
+            else if (expr.Body is MemberExpression expression2)
+            {
+                rtn = expression2.Member.Name;
+            }
+            else if (expr.Body is ParameterExpression expression1)
+            {
+                rtn = expression1.Type.Name;
+            }
+            return rtn;
+        }
+    }
+
+    public class View_DataCompare<T1, T2>
+    {
+        public View_DataCompare()
+        {
+            Contain_2 = new List<T1>();
+            Contain_1 = new List<T2>();
+            NoContain_2 = new List<T1>();
+            NoContain_1 = new List<T2>();
+        }
+
+        /// <summary>
+        /// 2鍙锋暟鎹簮涓瓨鍦�
+        /// </summary>
+        public List<T1> Contain_2 { get; set; }
+
+        /// <summary>
+        /// 1鍙锋暟鎹簮涓瓨鍦�
+        /// </summary>
+        public List<T2> Contain_1 { get; set; }
+
+        /// <summary>
+        /// 2鍙锋暟鎹簮涓笉瀛樺湪
+        /// </summary>
+        public List<T1> NoContain_2 { get; set; }
+
+        /// <summary>
+        /// 1鍙锋暟鎹簮涓笉瀛樺湪
+        /// </summary>
+        public List<T2> NoContain_1 { get; set; }
+    }
+
+    public class View_Property
+    {
+        public PropertyInfo Property_1 { get; set; }
+        public PropertyInfo Property_2 { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataConvertUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataConvertUtil.cs
new file mode 100644
index 0000000..e80a97c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataConvertUtil.cs
@@ -0,0 +1,434 @@
+锘�#nullable enable
+using Furion.DatabaseAccessor;
+using Furion.FriendlyException;
+using System.ComponentModel;
+using System.Linq.Expressions;
+using System.Reflection;
+using System.Security.Cryptography.X509Certificates;
+using System.Xml.Linq;
+
+namespace Admin.NET.Core
+{
+    public static class DataConvertUtil
+    {
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负Excel鏁版嵁
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="source"></param>
+        /// <param name="sysDictTypeRep"></param>
+        /// <param name="sysDictDataRep"></param>
+        /// <param name="headers"></param>
+        /// <param name="data"></param>
+        /// <param name="sheetName"></param>
+        public static void ToExcelData<T>(List<T> source,
+            IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+            IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
+            out List<string> headers, out List<List<object>> data, out string sheetName)
+        {
+            headers = new List<string>();
+            data = new List<List<object>>();
+            var type = typeof(T);
+            sheetName = ((DescriptionAttribute?)type.GetCustomAttribute(typeof(DescriptionAttribute), true))?.Description ?? "鏃�";
+            List<string> enumClassNames = new();
+            foreach (var field in type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
+            {
+                if ("Id".Equals(field.Name)) continue;
+                if (field.Name.EndsWith("Id")) continue;
+                headers.Add(((DescriptionAttribute?)field.GetCustomAttribute(typeof(DescriptionAttribute), true))?.Description ?? "鏃�");
+                var dataType = StringUtil.ParseTrueType2(field.PropertyType.FullName ?? "");
+                if (TypeUtil.GetType(dataType)?.IsEnum ?? false)
+                {
+                    if (!enumClassNames.Contains(dataType))
+                    {
+                        enumClassNames.Add(dataType);
+                    }
+                }
+            }
+
+            var dictTypeList = sysDictTypeRep.DetachedEntities.Where(x => enumClassNames.Contains(x.EnumClassName)).ToList();
+            List<long> dictTypeIds = dictTypeList.Select(x => x.Id).ToList();
+            Dictionary<long, SysDictType> dictTypeDictionary = new();
+            dictTypeList.ForEach(x => dictTypeDictionary.Add(x.Id, x));
+            var dictDataList = sysDictDataRep.DetachedEntities.Where(x => dictTypeIds.Contains(x.TypeId)).ToList();
+            dictDataList.ForEach(x =>
+            {
+                if (dictTypeDictionary.ContainsKey(x.TypeId))
+                {
+                    var dictType = dictTypeDictionary[x.TypeId];
+                    if (dictType?.SysDictDatas == null)
+                    {
+                        if (dictType != null)
+                        {
+                            dictType.SysDictDatas = new List<SysDictData>();
+                        }
+                    }
+                    dictType?.SysDictDatas?.Add(x);
+                }
+            });
+            Dictionary<string, string> map = new();
+            dictTypeList.ForEach(x =>
+            {
+                if (x?.SysDictDatas != null)
+                {
+                    foreach (SysDictData dictData in x.SysDictDatas)
+                    {
+                        if (dictData != null) map.Add(x.EnumClassName + "#" + dictData.Code, dictData.Value);
+                    }
+                }
+            });
+
+            foreach (var t in source)
+            {
+                List<object> objectList = new();
+                foreach (var field in type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
+                {
+                    var fieldName = field.Name;
+                    if ("Id".Equals(fieldName)) continue;
+                    if (field.Name.EndsWith("Id")) continue;
+                    var v = t?.GetType()?.GetProperty(fieldName)?.GetValue(t);
+                    var dataType = StringUtil.ParseTrueType2(field.PropertyType.FullName ?? "");
+                    if (TypeUtil.GetType(dataType)?.IsEnum ?? false)
+                    {
+                        v = Convert.ToInt32(v);
+                        if (map.ContainsKey(dataType + "#" + v)) v = map[dataType + "#" + v];
+                    }
+                    else if ("System.DateTimeOffset".Equals(dataType))
+                    {
+                        v = ExcelDateUtil.ToInt(
+                            new DateTimeOffset(Convert.ToDateTime(((DateTimeOffset?)v)?.ToString("yyyy-MM-dd") ?? "1900-01-01")));
+                    }
+                    else if ("System.DateTime".Equals(dataType))
+                    {
+                        v = ExcelDateUtil.ToInt(
+                            Convert.ToDateTime(((DateTime?)v)?.ToString("yyyy-MM-dd") ?? "1900-01-01"));
+                    }
+                    objectList.Add(v ?? "");
+                }
+                data.Add(objectList);
+            }
+        }
+
+        /// <summary>
+        /// 灏嗗璞¤浆鎹负Excel鏁版嵁
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="source"></param>
+        /// <param name="sysDictTypeRep"></param>
+        /// <param name="sysDictDataRep"></param>
+        /// <param name="headers"></param>
+        /// <param name="data"></param>
+        /// <param name="sheetName"></param>
+        /// <param name="className"></param>
+        public static void ToExcelData<T>(List<T> source,
+            IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+            IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
+            out List<string> headers, out List<List<object>> data, out string sheetName, out string className)
+        {
+            ToExcelData(source, sysDictTypeRep, sysDictDataRep, out headers, out data, out sheetName);
+            var type = typeof(T);
+            className = type.Name ?? "";
+            if (className.EndsWith("Output"))
+            {
+                className = className[..^"Output".Length];
+            }
+        }
+
+
+        /// <summary>
+        /// 鏍规嵁閿暟瀛楃敓鎴愬唴瀹瑰瓧绗︿覆
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="t"></param>
+        /// <param name="keys"></param>
+        /// <returns></returns>
+        public static string ParseStrByKeys<T>(this T t, string[] keys)
+        {
+            var type = typeof(T);
+            Dictionary<string, PropertyInfo> namePropertyInfoDict = new();
+            foreach (var field in type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
+            {
+                var fName = field?.Name ?? "";
+                if (keys.Contains(fName))
+                {
+                    namePropertyInfoDict[fName] = field ?? null!;
+                }
+            }
+            var str = "";
+
+            foreach (var k in keys)
+            {
+                str += StringUtil.SplitChar() + namePropertyInfoDict[k]?.GetValue(t) ?? "";
+            }
+
+            return str;
+        }
+
+        /// <summary>
+        /// 灏咵xcel鏁版嵁杞崲涓哄璞″垪琛�
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="headers"></param>
+        /// <param name="data"></param>
+        /// <param name="sheetName"></param>
+        /// <returns></returns>
+        public static List<T> ToObjectList<T>(List<string> headers, List<List<object?>> data, string sheetName, string[] keys, int dataStartLine, out Dictionary<string, T> dict)
+        {
+            var type = typeof(T);
+            //鍘绘帀姝ら獙璇� 銆怑ditby shaocx,2024-04-15銆�
+            //var sheetName2 = ((DescriptionAttribute?)type.GetCustomAttribute(typeof(DescriptionAttribute), true))?.Description ?? "鏃�";
+            //if (!sheetName2.Equals(sheetName))
+            //{
+            //    throw Oops.Oh(ErrorCode.Excel003);
+            //}
+
+            Dictionary<int, string> indexFieldNameDict = new();
+            Dictionary<int, string> indexFieldTypeDict = new();
+            Dictionary<int, PropertyInfo> indexPropertyInfoDict = new();
+            Dictionary<string, PropertyInfo> namePropertyInfoDict = new();
+            foreach (var field in type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
+            {
+                var desc = ((DescriptionAttribute?)field.GetCustomAttribute(typeof(DescriptionAttribute), true))?.Description ?? "鏃�";
+                var fName = field.Name ?? "";
+                var fType = StringUtil.ParseTrueType2(field.PropertyType.FullName ?? "");
+                for (var i = 0; i < headers.Count; i++)
+                {
+                    var header = headers[i];
+                    if (header.Equals(desc))
+                    {
+                        indexFieldNameDict[i] = fName;
+                        indexFieldTypeDict[i] = fType;
+                        indexPropertyInfoDict[i] = field;
+                        namePropertyInfoDict[fName] = field;
+                        break;
+                    }
+                }
+            }
+
+            List<T> outputs = new();
+            foreach (var record in data)
+            {
+                var output = Activator.CreateInstance(type, true);
+                for (var i = 0; i < record.Count; i++)
+                {
+                    if ("System.String".Equals(indexFieldTypeDict[i]))
+                    {
+                        indexPropertyInfoDict[i].SetValue(output, record[i]?.ToString() ?? "", null);
+                    }
+                    else if ("System.Int32".Equals(indexFieldTypeDict[i]))
+                    {
+                        indexPropertyInfoDict[i].SetValue(output, int.Parse(record[i]?.ToString() ?? "0"), null);
+                    }
+                    else if ("System.Int64".Equals(indexFieldTypeDict[i]))
+                    {
+                        indexPropertyInfoDict[i].SetValue(output, long.Parse(record[i]?.ToString() ?? "0"), null);
+                    }
+                    else if ("System.Single".Equals(indexFieldTypeDict[i]))
+                    {
+                        indexPropertyInfoDict[i].SetValue(output, float.Parse(record[i]?.ToString() ?? "0.0"), null);
+                    }
+                    else if ("System.Double".Equals(indexFieldTypeDict[i]))
+                    {
+                        indexPropertyInfoDict[i].SetValue(output, double.Parse(record[i]?.ToString() ?? "0.0"), null);
+                    }
+                    else if ("System.Decimal".Equals(indexFieldTypeDict[i]))
+                    {
+                        indexPropertyInfoDict[i].SetValue(output, decimal.Parse(record[i]?.ToString() ?? "0.0"), null);
+                    }
+                    else if ("System.Boolean".Equals(indexFieldTypeDict[i]))
+                    {
+                        indexPropertyInfoDict[i].SetValue(output, bool.Parse(record[i]?.ToString() ?? "False"), null);
+                    }
+                    else if ("System.Byte".Equals(indexFieldTypeDict[i]))
+                    {
+                        indexPropertyInfoDict[i].SetValue(output, byte.Parse(record[i]?.ToString() ?? "0"), null);
+                    }
+                    else if (TypeUtil.GetType(indexFieldTypeDict[i])?.IsEnum ?? false)
+                    {
+                        indexPropertyInfoDict[i].SetValue(output,
+                            TypeUtil.GetType(indexFieldTypeDict[i])?.GetEnumByDescription(record[i]?.ToString() ?? ""), null);
+                    }
+                    else if ("System.DateTime".Equals(indexFieldTypeDict[i]))
+                    {
+                        indexPropertyInfoDict[i].SetValue(output,
+                            ExcelDateUtil.ToDateTime(long.Parse(record[i]?.ToString() ?? "1")), null);
+                    }
+                    else if ("System.DateTimeOffset".Equals(indexFieldTypeDict[i]))
+                    {
+                        indexPropertyInfoDict[i].SetValue(output,
+                            ExcelDateUtil.ToDateTimeOffset(long.Parse(record[i]?.ToString() ?? "1")), null);
+                    }
+                }
+                if (output != null)
+                {
+                    outputs.Add((T)output);
+                }
+            }
+
+
+
+            dict = new Dictionary<string, T>();
+            foreach (var x in outputs)
+            {
+                var key = string.Empty;
+                foreach (var k in keys)
+                {
+                    key += StringUtil.SplitChar() + namePropertyInfoDict[k]?.GetValue(x) ?? "";
+                }
+
+                if (!string.IsNullOrEmpty(key))
+                {
+                    if (dict.ContainsKey(key)) throw Oops.Oh($"鍦▄sheetName}椤电殑绗瑊dataStartLine}琛�, 鍞竴閿啿绐�");
+                    dict.Add(key, x);
+                }
+
+                dataStartLine += 1;
+            };
+
+            return outputs;
+        }
+
+
+
+        /// <summary>
+        /// 鑾峰彇宸插瓨鍦ㄧ殑鏁版嵁
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="records"></param>
+        /// <returns></returns>
+        public static List<Dictionary<string, object>> ParseUniqueKeyValueDictList<T>(this List<T> records, List<string> keys, int dataStartLine, string sheetName)
+        {
+
+            if (keys.Count <= 0)
+            {
+                throw Oops.Oh(ErrorCode.Key001);
+            }
+
+            if (records.Count <= 0)
+            {
+                return new List<Dictionary<string, object>>();
+            }
+
+            Type type = typeof(T);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = new();
+            var props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(x => keys.Contains(x.Name)).ToList();
+            Dictionary<string, PropertyInfo> namePropDict = new();
+            props.ForEach(x => namePropDict.Add(x.Name, x));
+
+
+            List<string> keyStrs = new();
+
+            records.ForEach(x =>
+            {
+                Dictionary<string, object> dict = new();
+                string keyStr = string.Empty;
+                keys.ForEach(y =>
+                {
+                    var value = namePropDict[y]?.GetValue(x) ?? "";
+                    if (string.IsNullOrWhiteSpace(value + "")) throw Oops.Oh($"鍦▄sheetName}椤电殑绗瑊dataStartLine}琛�, {y}鐨勫彇鍊间笉鑳戒负绌�");
+                    keyStr += StringUtil.SplitChar() + value;
+                    dict.Add(y, value);
+                });
+                if (keyStrs.Contains(keyStr)) throw Oops.Oh($"鍦▄sheetName}椤电殑绗瑊dataStartLine}琛�, 鍞竴閿啿绐�");
+                keyStrs.Add(keyStr);
+                uniqueKeyValueDictList.Add(dict);
+                dataStartLine++;
+            });
+
+            return uniqueKeyValueDictList;
+        }
+
+        /// <summary>
+        /// 鐢熸垚鍔ㄦ�佹煡璇㈠凡瀛樺湪璁板綍鐨刲amda琛ㄨ揪寮忓垪琛�
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="keys"></param>
+        /// <param name="uniqueKeyValueDictList"></param>
+        /// <param name="size"></param>
+        /// <returns></returns>
+        public static List<Expression<Func<T, bool>>> GetExpressionListByUniqueDict<T>(List<string> keys,
+            List<Dictionary<string, object>> uniqueKeyValueDictList, int size)
+        {
+            if (keys.Count <= 0) throw Oops.Oh(ErrorCode.Key001);
+            var uniqueKeyValueDictListArray = uniqueKeyValueDictList.SplitList(size);
+            Type type = typeof(T);
+            var props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(x => keys.Contains(x.Name)).ToList();
+            Dictionary<string, PropertyInfo> namePropDict = new();
+            props.ForEach(x => namePropDict.Add(x.Name, x));
+            List<Expression<Func<T, bool>>> filters = new();
+            foreach (var dictList in uniqueKeyValueDictListArray)
+            {
+                var parameter = Expression.Parameter(type, "m");
+                Expression? expression = null;
+                foreach (var item in dictList)
+                {
+                    Expression? expressionItem = null;
+                    foreach (var key in keys)
+                    {
+                        Expression expProperty = Expression.Property(parameter, key);
+                        Expression<Func<object?>> valueLamda = () => item[key];
+                        Expression expValue = Expression.Convert(valueLamda.Body, namePropDict[key].PropertyType);
+                        expressionItem = expressionItem == null ? Expression.Equal(expProperty, expValue) :
+                        Expression.AndAlso(expressionItem, Expression.Equal(expProperty, expValue));
+                    }
+                    expression = (expression == null) ? expressionItem : Expression.OrElse(expression, expressionItem ?? null!);
+                }
+
+                Expression<Func<T, bool>> filter = ((Expression<Func<T, bool>>)Expression.Lambda(expression ?? null!, parameter));
+                filters.Add(filter);
+            }
+            return filters;
+        }
+
+        /// <summary>
+        /// 鐢熸垚鍔ㄦ�佹煡璇㈠凡瀛樺湪璁板綍鐨勬姇褰眑amda琛ㄨ揪寮忓垪琛�
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <typeparam name="S"></typeparam>
+        /// <param name="keys"></param>
+        /// <returns></returns>
+        public static Expression<Func<TSource, TResult>> GetSelectExpressionListByUniqueDict<TSource, TResult>(List<string> keys)
+        {
+            if (keys.Count <= 0)
+            {
+                throw Oops.Oh(ErrorCode.Key001);
+            }
+            Type type = typeof(TSource);
+            var left = Expression.Parameter(type, "x");
+            var v0 = Expression.New(typeof(TResult));
+            List<MemberBinding> bindingList = new();
+            foreach (var item in keys)
+            {
+                MemberInfo speciesMember = typeof(TResult).GetMember(item)[0];
+                MemberExpression mem = Expression.Property(left, item);
+                MemberBinding memberBinding = Expression.Bind(speciesMember, mem);
+                bindingList.Add(memberBinding);
+            }
+            Expression body = Expression.MemberInit(v0, bindingList);
+            Expression<Func<TSource, TResult>> selector = (Expression<Func<TSource, TResult>>)Expression.Lambda(body, left);
+            return selector;
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀛楀吀鐢熸垚鐨勯敭瀛楃涓�
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="t"></param>
+        /// <param name="keys"></param>
+        /// <returns></returns>
+        public static string GetKey<T>(T t, string[] keys)
+        {
+            Type type = typeof(T);
+            List<Dictionary<string, object>> uniqueKeyValueDictList = new();
+            var props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(x => keys.Contains(x.Name)).ToList();
+            Dictionary<string, PropertyInfo> namePropDict = new();
+            props.ForEach(x => namePropDict.Add(x.Name, x));
+            string key = "";
+            foreach (var item in keys)
+            {
+                key += StringUtil.SplitChar() + namePropDict[item]?.GetValue(t) ?? "";
+            }
+            return key;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DateTimeOffSetToDateTime.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DateTimeOffSetToDateTime.cs
new file mode 100644
index 0000000..8061bd2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DateTimeOffSetToDateTime.cs
@@ -0,0 +1,18 @@
+锘縩amespace Admin.NET.Core
+{
+    /// <summary>
+    /// DateTimeOffSet杞崲DateTime甯姪绫�
+    /// </summary>
+    public static class DateTimeOffSetToDateTime
+    {
+        public static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime)
+        {
+            if (dateTime.Offset.Equals(TimeSpan.Zero))
+                return dateTime.UtcDateTime;
+            else if (dateTime.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(dateTime.DateTime)))
+                return DateTime.SpecifyKind(dateTime.DateTime, DateTimeKind.Local);
+            else
+                return dateTime.DateTime;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumEntity.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumEntity.cs
new file mode 100644
index 0000000..4183888
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumEntity.cs
@@ -0,0 +1,23 @@
+锘縩amespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鏋氫妇鐨凟ntity绫�
+    /// </summary>
+    public class EnumEntity
+    {
+        /// <summary>
+        /// 鏋氫妇鐨勬弿杩�
+        /// </summary>
+        public string Describe { set; get; }
+
+        /// <summary>
+        /// 鏋氫妇鍚嶇О
+        /// </summary>
+        public string Name { set; get; }
+
+        /// <summary>
+        /// 鏋氫妇瀵硅薄鐨勫��
+        /// </summary>
+        public int Value { set; get; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumUtil.cs
new file mode 100644
index 0000000..423ec5b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumUtil.cs
@@ -0,0 +1,220 @@
+锘縰sing Furion.FriendlyException;
+using System.Collections.Concurrent;
+using System.ComponentModel;
+using System.Reflection;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鏋氫妇鎵╁睍
+    /// </summary>
+    public static class EnumUtil
+    {
+        // 鏋氫妇鏄剧ず瀛楀吀缂撳瓨
+        private static readonly ConcurrentDictionary<Type, Dictionary<int, string>> EnumDisplayValueDict = new();
+
+        // 鏋氫妇鍊煎瓧鍏哥紦瀛�
+        private static readonly ConcurrentDictionary<Type, Dictionary<int, string>> EnumNameValueDict = new();
+
+        // 鏋氫妇绫诲瀷缂撳瓨
+        private static ConcurrentDictionary<string, Type> _enumTypeDict = null;
+
+        /// <summary>
+        /// 鑾峰彇鏋氫妇瀵硅薄Key涓庡悕绉扮殑瀛楀吀锛堢紦瀛橈級
+        /// </summary>
+        /// <param name="enumType"></param>
+        /// <returns></returns>
+        public static Dictionary<int, string> GetEnumDictionary(Type enumType)
+        {
+            if (!enumType.IsEnum)
+                throw Oops.Oh(ErrorCode.D1503);
+
+            // 鏌ヨ缂撳瓨
+            Dictionary<int, string> enumDic = EnumNameValueDict.ContainsKey(enumType) ? EnumNameValueDict[enumType] : new Dictionary<int, string>();
+            if (enumDic.Count == 0)
+            {
+                // 鍙栨灇涓剧被鍨嬬殑Key/Value瀛楀吀闆嗗悎
+                enumDic = GetEnumDictionaryItems(enumType);
+
+                // 缂撳瓨
+                EnumNameValueDict[enumType] = enumDic;
+            }
+            return enumDic;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏋氫妇瀵硅薄Key涓庡悕绉扮殑瀛楀吀
+        /// </summary>
+        /// <param name="enumType"></param>
+        /// <returns></returns>
+        private static Dictionary<int, string> GetEnumDictionaryItems(Type enumType)
+        {
+            // 鑾峰彇绫诲瀷鐨勫瓧娈碉紝鍒濆鍖栦竴涓湁闄愰暱搴︾殑瀛楀吀
+            FieldInfo[] enumFields = enumType.GetFields(BindingFlags.Public | BindingFlags.Static);
+            Dictionary<int, string> enumDic = new(enumFields.Length);
+
+            // 閬嶅巻瀛楁鏁扮粍鑾峰彇key鍜宯ame
+            foreach (FieldInfo enumField in enumFields)
+            {
+                int intValue = (int)enumField.GetValue(enumType);
+                enumDic[intValue] = enumField.Name;
+            }
+            return enumDic;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏋氫妇绫诲瀷key涓庢弿杩扮殑瀛楀吀锛堢紦瀛橈級
+        /// </summary>
+        /// <param name="enumType"></param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        public static Dictionary<int, string> GetEnumDescDictionary(Type enumType)
+        {
+            if (!enumType.IsEnum)
+                throw Oops.Oh(ErrorCode.D1503);
+
+            // 鏌ヨ缂撳瓨
+            Dictionary<int, string> enumDic = EnumDisplayValueDict.ContainsKey(enumType) ? EnumDisplayValueDict[enumType] : new Dictionary<int, string>();
+            if (enumDic.Count == 0)
+            {
+                // 鍙栨灇涓剧被鍨嬬殑Key/Value瀛楀吀闆嗗悎
+                enumDic = GetEnumDescDictionaryItems(enumType);
+
+                // 缂撳瓨
+                EnumDisplayValueDict[enumType] = enumDic;
+            }
+            return enumDic;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏋氫妇绫诲瀷key涓庢弿杩扮殑瀛楀吀锛堟病鏈夋弿杩板垯鑾峰彇name锛�
+        /// </summary>
+        /// <param name="enumType"></param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        private static Dictionary<int, string> GetEnumDescDictionaryItems(Type enumType)
+        {
+            // 鑾峰彇绫诲瀷鐨勫瓧娈碉紝鍒濆鍖栦竴涓湁闄愰暱搴︾殑瀛楀吀
+            FieldInfo[] enumFields = enumType.GetFields(BindingFlags.Public | BindingFlags.Static);
+            Dictionary<int, string> enumDic = new(enumFields.Length);
+
+            // 閬嶅巻瀛楁鏁扮粍鑾峰彇key鍜宯ame
+            foreach (FieldInfo enumField in enumFields)
+            {
+                int intValue = (int)enumField.GetValue(enumType);
+                var desc = enumField.GetDescriptionValue<DescriptionAttribute>();
+                enumDic[intValue] = desc != null && !string.IsNullOrEmpty(desc.Description) ? desc.Description : enumField.Name;
+            }
+            return enumDic;
+        }
+
+        /// <summary>
+        /// 浠庣▼搴忛泦涓煡鎵炬寚瀹氭灇涓剧被鍨�
+        /// </summary>
+        /// <param name="assembly"></param>
+        /// <param name="typeName"></param>
+        /// <returns></returns>
+        public static Type TryToGetEnumType(Assembly assembly, string typeName)
+        {
+            // 鏋氫妇缂撳瓨涓虹┖鍒欓噸鏂板姞杞芥灇涓剧被鍨嬪瓧鍏�
+            _enumTypeDict ??= LoadEnumTypeDict(assembly);
+
+            // 鎸夊悕绉版煡鎵�
+            if (_enumTypeDict.ContainsKey(typeName))
+            {
+                return _enumTypeDict[typeName];
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// 浠庣▼搴忛泦涓姞杞芥墍鏈夋灇涓剧被鍨�
+        /// </summary>
+        /// <param name="assembly"></param>
+        /// <returns></returns>
+        private static ConcurrentDictionary<string, Type> LoadEnumTypeDict(Assembly assembly)
+        {
+            // 鍙栫▼搴忛泦涓墍鏈夌被鍨�
+            Type[] typeArray = assembly.GetTypes();
+
+            // 杩囨护闈炴灇涓剧被鍨嬶紝杞垚瀛楀吀鏍煎紡骞惰繑鍥�
+            Dictionary<string, Type> dict = typeArray.Where(o => o.IsEnum).ToDictionary(o => o.Name, o => o);
+            ConcurrentDictionary<string, Type> enumTypeDict = new(dict);
+            return enumTypeDict;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏋氫妇鐨凞escription
+        /// </summary>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        public static string GetDescription(this System.Enum value)
+        {
+            return value.GetType().GetMember(value.ToString()).FirstOrDefault()?.GetCustomAttribute<DescriptionAttribute>()
+                ?.Description;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏋氫妇鐨凞escription
+        /// </summary>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        public static string GetDescription(this object value)
+        {
+            return value.GetType().GetMember(value.ToString() ?? string.Empty).FirstOrDefault()
+                ?.GetCustomAttribute<DescriptionAttribute>()?.Description;
+        }
+
+        /// <summary>
+        /// 灏嗘灇涓捐浆鎴愭灇涓句俊鎭泦鍚�
+        /// </summary>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        public static List<EnumEntity> EnumToList(this Type type)
+        {
+            if (!type.IsEnum)
+                throw new ArgumentException("Type '" + type.Name + "' is not an enum.");
+            var arr = System.Enum.GetNames(type);
+            return arr.Select(sl =>
+            {
+                var item = System.Enum.Parse(type, sl);
+                return new EnumEntity
+                {
+                    Name = item.ToString(),
+                    Describe = item.GetDescription(),
+                    Value = item.GetHashCode()
+                };
+            }).ToList();
+        }
+
+        /// <summary>
+        /// 鏋氫妇ToList
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        public static List<T> EnumToList<T>(this Type type)
+        {
+            if (!type.IsEnum)
+                throw new ArgumentException("Type '" + type.Name + "' is not an enum.");
+            var arr = System.Enum.GetNames(type);
+            return arr.Select(name => (T)System.Enum.Parse(type, name)).ToList();
+        }
+
+        /// <summary>
+        /// 鏋氫妇ToList
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        public static object GetEnumByDescription(this Type type, string description)
+        {
+            if (!type.IsEnum)
+                throw new ArgumentException("Type '" + type.Name + "' is not an enum.");
+            List<EnumEntity> enumEntities = type.EnumToList();
+            var ts = enumEntities.Where(x => x.Describe == description);
+            if (!ts.Any()) return default;
+            return System.Enum.Parse(type, ts.ElementAt(0).Name);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelDateUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelDateUtil.cs
new file mode 100644
index 0000000..0415c4c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelDateUtil.cs
@@ -0,0 +1,36 @@
+锘縩amespace Admin.NET.Core
+{
+    public static class ExcelDateUtil
+    {
+        public static long ToInt(DateTime date) 
+        {
+            var current = Convert.ToDateTime("1900-01-01") ;         
+            if (date.Ticks <= current.Ticks) return 1;
+            var days = (date - current).Days;
+            return days < 59 ? days + 1 : days + 2;
+        }
+
+        public static long ToInt(DateTimeOffset date)
+        {
+            var current = Convert.ToDateTime("1900-01-01");
+            if (date.Ticks <= current.Ticks) return 1;
+            var days = (date - current).Days;
+            return days < 59 ? days + 1 : days + 2;
+        }
+
+
+        public static DateTime ToDateTime(long days)
+        {
+            var current = Convert.ToDateTime("1900-01-01");
+            if(days <= 1) return current;
+            return current.AddDays(days < 60 ? days -1 : days - 2);
+        }
+
+        public static DateTimeOffset ToDateTimeOffset(long days)
+        {
+            var current = new DateTimeOffset(Convert.ToDateTime("1900-01-01"));
+            if (days <= 1) return current;
+            return current.AddDays(days < 60 ? days - 1 : days - 2);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelUtil.cs
new file mode 100644
index 0000000..1d79209
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelUtil.cs
@@ -0,0 +1,458 @@
+锘�#nullable enable
+using Furion;
+using Furion.FriendlyException;
+using Microsoft.AspNetCore.Http;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using Microsoft.Extensions.Configuration;
+using Microsoft.VisualBasic;
+using OfficeOpenXml;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using OfficeOpenXml.Style;
+using RestSharp;
+using SQLitePCL;
+using StackExchange.Profiling.Internal;
+using System.Collections.Generic;
+using System.Data;
+using System.Reflection.PortableExecutable;
+
+namespace Admin.NET.Core
+{
+    public static class ExcelUtil
+    {
+        /// <summary>
+        /// 鍦╮esponse涓鍑烘爣鍑嗘牸寮忕殑鏁版嵁
+        /// </summary>
+        /// <param name="headers"></param>
+        /// <param name="data"></param>
+        /// <returns></returns>
+        public static void ToExcel(List<string> headers, List<List<object>> data, string sheetName, Stream newStream)
+        {
+            using var package = new ExcelPackage(newStream);
+            var worksheet = package.Workbook.Worksheets.Add(sheetName);
+
+            for (int j = 0; j < headers.Count; j++)
+            {
+                worksheet.Cells[1, j + 1].Value = headers[j];
+                worksheet.Cells[1, j + 1].Style.Font.Bold = true;//鍔犵矖
+                worksheet.Cells[1, j + 1].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;//姘村钩灞呬腑 
+                worksheet.Cells[1, j + 1].Style.VerticalAlignment = ExcelVerticalAlignment.Center;//鍨傜洿灞呬腑 
+                worksheet.Cells[1, j + 1].Style.Border.Bottom.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+                worksheet.Cells[1, j + 1].Style.Border.Left.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+                worksheet.Cells[1, j + 1].Style.Border.Right.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+                worksheet.Cells[1, j + 1].Style.Border.Top.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+            }
+
+            for (int i = 0; i < data.Count; i++)
+            {
+                for (int j = 0; j < data[i].Count; j++)
+                {
+                    worksheet.Cells[2 + i, j + 1].Value = data[i][j];
+                }
+            }
+            package.Save();
+        }
+
+
+
+        /// <summary>
+        /// 鍦╮esponse涓鍑烘爣鍑嗘牸寮忕殑澶氳〃鏁版嵁
+        /// </summary>
+        /// <param name="headersList"></param>
+        /// <param name="dataList"></param>
+        /// <param name="sheetNameList"></param>
+        /// <param name="newStream"></param>
+        public static void ToExcel(List<List<string>> headersList, List<List<List<object>>> dataList, List<string> sheetNameList, Stream newStream)
+        {
+            using var package = new ExcelPackage(newStream);
+            for (var k = 0; k < sheetNameList.Count; k++)
+            {
+                var worksheet = package.Workbook.Worksheets.Add(sheetNameList[k]);
+
+                for (int j = 0; j < headersList[k].Count; j++)
+                {
+                    worksheet.Cells[1, j + 1].Value = headersList[k][j];
+                    worksheet.Cells[1, j + 1].Style.Font.Bold = true;//鍔犵矖
+                    worksheet.Cells[1, j + 1].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;//姘村钩灞呬腑 
+                    worksheet.Cells[1, j + 1].Style.VerticalAlignment = ExcelVerticalAlignment.Center;//鍨傜洿灞呬腑 
+                    worksheet.Cells[1, j + 1].Style.Border.Bottom.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+                    worksheet.Cells[1, j + 1].Style.Border.Left.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+                    worksheet.Cells[1, j + 1].Style.Border.Right.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+                    worksheet.Cells[1, j + 1].Style.Border.Top.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+                }
+
+                for (int i = 0; i < dataList[k].Count; i++)
+                {
+                    for (int j = 0; j < dataList[k][i].Count; j++)
+                    {
+                        worksheet.Cells[2 + i, j + 1].Value = dataList[k][i][j];
+                    }
+                }
+
+
+            }
+
+            package.Save();
+        }
+
+
+
+
+
+        /// <summary>
+        /// 鍦╮esponse涓牴鎹ā鏉垮鍑哄崟琛ㄦ暟鎹�
+        /// </summary>
+        /// <param name="headers"></param>
+        /// <param name="templatePath"></param>
+        /// <param name="data"></param>
+        /// <param name="sheetName"></param>
+        /// <param name="dataStartLine"></param>
+        /// <param name="newStream"></param>
+        /// <returns></returns>
+        public static void ToExcel(string templatePath, List<string> headers, List<List<object>> data, string sheetName, int headStartLine, int dataStartLine, Stream newStream)
+        {
+
+            var options = new RestClientOptions(App.Configuration["FileUrl"])
+            {
+                ThrowOnAnyError = true,
+                MaxTimeout = 2000
+            };
+
+            var client = new RestClient(options);
+            var request = new RestRequest($"/file/download", Method.Get);
+            request?.AddParameter(Parameter.CreateParameter("path", templatePath, ParameterType.QueryString))
+                ?.AddParameter(Parameter.CreateParameter("fileName", "template.xlsx", ParameterType.QueryString));
+
+            var response = client.DownloadData(request ?? null!);
+
+            MemoryStream ms = new(response ?? null!);
+
+
+            using var package = new ExcelPackage(newStream, ms);
+            var worksheet = package.Workbook.Worksheets[0];
+
+            worksheet.Name = sheetName;
+
+            for (int j = 0; j < headers.Count; j++)
+            {
+                worksheet.Cells[headStartLine, j + 1].Value = headers[j];
+            }
+
+            for (int i = 0; i < data.Count; i++)
+            {
+                for (int j = 0; j < data[i].Count; j++)
+                {
+                    worksheet.Cells[dataStartLine + i, j + 1].Value = data[i][j];
+                }
+            }
+            package.Save();
+
+        }
+
+        /// <summary>
+        /// 鍦╮esponse涓牴鎹ā鏉垮鍑哄琛ㄦ暟鎹�
+        /// </summary>
+        /// <param name="templatePath"></param>
+        /// <param name="headersList"></param>
+        /// <param name="dataList"></param>
+        /// <param name="sheetNameList"></param>
+        /// <param name="headStartLineList"></param>
+        /// <param name="dataStartLineList"></param>
+        /// <param name="newStream"></param>
+        public static void ToExcel(string templatePath, List<List<string>> headersList, List<List<List<object>>> dataList, List<string> sheetNameList, List<int> headStartLineList, List<int> dataStartLineList, Stream newStream)
+        {
+            var options = new RestClientOptions(App.Configuration["FileUrl"])
+            {
+                ThrowOnAnyError = true,
+                MaxTimeout = 2000
+            };
+
+            var client = new RestClient(options);
+            var request = new RestRequest($"/file/download", Method.Get);
+            request?.AddParameter(Parameter.CreateParameter("path", templatePath, ParameterType.QueryString))
+                ?.AddParameter(Parameter.CreateParameter("fileName", "template.xlsx", ParameterType.QueryString));
+
+            var response = client.DownloadData(request ?? null!);
+
+            MemoryStream ms = new(response ?? null!);
+
+            using var package = new ExcelPackage(newStream, ms);
+            for (var k = 0; k < sheetNameList.Count; k++)
+            {
+                var worksheet = package.Workbook.Worksheets.FirstOrDefault(x => x.Name == sheetNameList[k]) ?? null!;
+
+                for (int j = 0; j < headersList[k].Count; j++)
+                {
+                    worksheet.Cells[headStartLineList[k], j + 1].Value = headersList[k][j];
+
+                }
+
+                for (int i = 0; i < dataList[k].Count; i++)
+                {
+                    for (int j = 0; j < dataList[k][i].Count; j++)
+                    {
+                        worksheet.Cells[dataStartLineList[k] + i, j + 1].Value = dataList[k][i][j];
+                    }
+                }
+            }
+            package.Save();
+        }
+
+
+        /// <summary>
+        /// 瀵煎叆鏍囧噯鏍煎紡鐨勬暟鎹枃浠�
+        /// </summary>
+        /// <param name="file">涓婁紶鐨勬枃浠�</param>
+        /// <returns></returns>
+        public static void FromExcel(IFormFile file, int headStartLine, int dataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName)
+        {
+            if (file == null) throw Oops.Oh(ErrorCode.D8000);
+
+            //鏆傛椂娉ㄩ噴锛屼互鍚庡啀鏀惧紑 銆怑ditby shaocx,2024-04-15銆�
+            /*
+            string key = "UploadFile:Excel";
+            var allowContentTypes = App.Configuration.GetSection($"{key}:contentType").Get<IEnumerable<string>>();
+            if (!allowContentTypes.Contains(file.ContentType)) throw Oops.Oh(ErrorCode.D8001);
+            //*/
+
+            sheetName = "";
+            headers = new();
+            data = new();
+
+            using var package = new ExcelPackage(file.OpenReadStream());
+            var worksheet = package.Workbook.Worksheets.Count > 0 ? package.Workbook.Worksheets[0] : null;
+
+            sheetName = package.Workbook.Worksheets.Count > 0 ? package.Workbook.Worksheets[0].Name : "";
+            var cellsCount = worksheet?.Cells?.Count() ?? 0;
+
+            int col = 1;
+            string? header = worksheet?.Cells[headStartLine, col++].Value?.ToString();
+
+            while (!string.IsNullOrWhiteSpace(header))
+            {
+                headers.Add(header);
+                header = worksheet?.Cells[headStartLine, col++]?.Value?.ToString();
+            }
+
+            var headersCount = headers.Count;
+
+            if (headersCount == 0) throw Oops.Oh("琛ㄥご鏁伴噺涓嶈兘涓�0");
+
+            var rowsCount = (int)Math.Ceiling(((double)cellsCount) / headersCount) - dataStartLine + 1;
+
+            for (var i = 0; i < rowsCount; i++)
+            {
+                List<object?> row = new();
+                for (var j = 0; j < headersCount; j++)
+                {
+                    row.Add(worksheet?.Cells[i + dataStartLine, j + 1]?.Value);
+                }
+                data.Add(row);
+            }
+        }
+
+
+        /// <summary>
+        /// 瀵煎叆澶氳〃鏍煎紡鐨勬暟鎹枃浠�
+        /// </summary>
+        /// <param name="file">涓婁紶鐨勬枃浠�</param>
+        /// <returns></returns>
+        public static void FromExcel(IFormFile file, Dictionary<string, int> nameHeadStartLineDict, Dictionary<string, int> nameDataStartLineDict,
+            out List<List<string>> headersList, out List<List<List<object?>>> dataList, out List<string> sheetNameList)
+        {
+            if (file == null) throw Oops.Oh(ErrorCode.D8000);
+            string key = "UploadFile:Excel";
+            var allowContentTypes = App.Configuration.GetSection($"{key}:contentType").Get<IEnumerable<string>>();
+            if (!allowContentTypes.Contains(file.ContentType)) throw Oops.Oh(ErrorCode.D8001);
+            sheetNameList = new();
+            headersList = new();
+            dataList = new();
+
+            using var package = new ExcelPackage(file.OpenReadStream());
+
+            foreach (var worksheet in package.Workbook.Worksheets)
+            {
+                if (!nameHeadStartLineDict.ContainsKey(worksheet?.Name ?? "")) throw Oops.Oh("闈炴硶鐨凟xcel鏂囦欢");
+
+                sheetNameList.Add(worksheet?.Name ?? "");
+                var cellsCount = worksheet?.Cells?.Count() ?? 0;
+                var headers = new List<string>();
+                int col = 1;
+                int r = nameHeadStartLineDict[worksheet?.Name ?? ""];
+                string? header = worksheet?.Cells[r, col++].Value?.ToString();
+                while (!string.IsNullOrWhiteSpace(header))
+                {
+                    headers.Add(header);
+                    header = worksheet?.Cells[r, col++]?.Value?.ToString();
+                }
+                headersList.Add(headers);
+                var headersCount = headers.Count;
+                if (headersCount == 0) throw Oops.Oh("琛ㄥご鏁伴噺涓嶈兘涓�0");
+                r = nameDataStartLineDict[worksheet?.Name ?? ""];
+                var rowsCount = (int)Math.Ceiling(((double)cellsCount) / headersCount) - r + 1;
+                List<List<object?>> data = new();
+
+                for (var i = 0; i < rowsCount; i++)
+                {
+                    List<object?> row = new();
+                    for (var j = 0; j < headersCount; j++)
+                    {
+                        row.Add(worksheet?.Cells[i + r, j + 1]?.Value);
+                    }
+                    data.Add(row);
+                }
+                dataList.Add(data);
+
+            }
+
+        }
+
+
+
+        /// <summary>
+        ///   浠ユ枃浠舵祦IFormFile鏂瑰紡瀵煎叆鍒癉ataTable
+        /// </summary>
+        /// <param name="file"></param>
+        /// <param name="headStartLine"></param>
+        /// <param name="dataStartLine"></param>
+        /// <param name="flag"></param>
+        /// <returns></returns>
+        public static DataTable ImportExcelToDataTable(IFormFile file, int headStartLine ,int dataStartLine)
+        {
+
+            if (file == null) throw Oops.Oh(ErrorCode.D8000);
+
+            //鏆傛椂娉ㄩ噴锛屼互鍚庡啀鏀惧紑 銆怑ditby shaocx,2024-04-15銆�
+            /*
+            string key = "UploadFile:Excel";
+            var allowContentTypes = App.Configuration.GetSection($"{key}:contentType").Get<IEnumerable<string>>();
+            if (!allowContentTypes.Contains(file.ContentType)) throw Oops.Oh(ErrorCode.D8001);
+            //*/
+
+            List<string> headers = new List<string>();
+            System.Data.DataTable dataTable = null;
+            ExcelPackage package = null;
+            DataColumn column = null;
+            DataRow dataRow = null;
+            try
+            {
+
+                //璇诲彇Excel鏂囦欢
+                using (package = new ExcelPackage(file.OpenReadStream()))
+                {
+                    var worksheet = package.Workbook.Worksheets.Count > 0 ? package.Workbook.Worksheets[0] : null;
+
+                    dataTable = new System.Data.DataTable();
+
+                    //  var rowsCount = worksheet.Dimension.Rows;//鎬昏鏁�
+                    var cellsCount = worksheet?.Cells?.Count() ?? 0;
+
+
+
+                    int col = 1;
+                    string? header = worksheet?.Cells[headStartLine, col++].Value?.ToString();
+                    //鏋勫缓datatable鐨勫垪
+                    while (!string.IsNullOrWhiteSpace(header))
+                    {
+                        headers.Add(header);
+                        column = new DataColumn(header);
+                        dataTable.Columns.Add(column);
+                        header = worksheet?.Cells[headStartLine, col++]?.Value?.ToString();
+                    }
+                    var headersCount = headers.Count;
+                    if (headersCount == 0) throw Oops.Oh("琛ㄥご鏁伴噺涓嶈兘涓�0");
+                    var rowsCount = (int)Math.Ceiling(((double)cellsCount) / headersCount) - dataStartLine + 1;
+
+                    //濉厖琛�
+                    for (var i = 0; i < rowsCount; i++)
+                    {
+                        dataRow = dataTable.NewRow();
+
+                        for (var j = 0; j < headersCount; j++)
+                        {
+                            var cell = worksheet?.Cells[i + dataStartLine, j + 1];
+
+                            if (cell == null)
+                            {
+                                dataRow[j] = "";
+                            }
+                            else
+                            {
+                                #region 绫诲瀷鍒ゆ柇
+                                //CellType(Unknown = -1,Numeric = 0,String = 1,Formula = 2,Blank = 3,Boolean = 4,Error = 5,)
+                                //switch (cell.GetType())
+                                //{
+                                //    case CellType.Blank:
+                                //        dataRow[j] = "";
+                                //        break;
+
+                                //    case CellType.Numeric:
+                                //        short format = cell.CellStyle.DataFormat;
+                                //        //瀵规椂闂存牸寮忥紙2015.12.5銆�2015/12/5銆�2015-12-5绛夛級鐨勫鐞�
+                                //        if (format == 14 || format == 31 || format == 57 || format == 58)
+                                //        {
+                                //            if (DateUtil.IsCellDateFormatted(cell))
+                                //            {
+                                //                dataRow[j] = cell.DateCellValue.Date.ToString();
+                                //            }
+                                //        }
+                                //        else
+                                //        {
+                                //            dataRow[j] = cell.NumericCellValue;
+                                //        }
+
+                                //        break;
+
+                                //    case CellType.String:
+                                //        dataRow[j] = cell.StringCellValue;
+                                //        break;
+                                //}
+
+                                #endregion
+                                dataRow[j] = cell?.Value;
+                            }
+                        }
+
+                        //鍘婚櫎绌虹櫧琛屾暟鎹�
+                        bool rowdataisnull = true;
+                        for (int k = 0; k <= headersCount - 1; ++k)
+                        {
+                            if (!string.IsNullOrEmpty(dataRow[k] as string))
+                            {
+                                rowdataisnull = false;
+                            }
+                        }
+                        if (!rowdataisnull)
+                        {
+                            dataTable.Rows.Add(dataRow);
+                        }
+
+                    }
+
+
+                };
+
+
+            }
+            catch (Exception ex)
+            {
+
+                throw Oops.Oh("瀵煎叆寮傚父锛岃鑱旂郴绠$悊鍛�");
+            }
+            finally
+            {
+                if(package!=null) package.Dispose();
+
+            }
+            return dataTable;
+
+
+
+        }
+
+       
+
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FieldUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FieldUtil.cs
new file mode 100644
index 0000000..8c04477
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FieldUtil.cs
@@ -0,0 +1,74 @@
+锘�#nullable enable
+
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata;
+using System.ComponentModel.DataAnnotations;
+using System.Reflection;
+
+namespace Admin.NET.Core
+{
+    public static class FieldUtil
+    {
+        /// <summary>
+        /// 鑾峰彇鏍囬噺灞炴�ф槸鍚﹀繀椤�
+        /// </summary>
+        /// <param name="p"></param>
+        /// <param name="dataType"></param>
+        /// <returns></returns>
+        public static bool IsRequired(IProperty p, string dataType)
+        {
+            if (dataType.StartsWith("System.Nullable"))
+            {
+                return false;
+            }
+
+            if ("System.String".Equals(dataType))
+            {
+                return p.PropertyInfo?.IsDefined(typeof(RequiredAttribute), true) ?? false;
+            }
+            
+            return true;
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀵艰埅灞炴�ф槸鍚﹀繀椤�
+        /// </summary>
+        /// <param name="p"></param>
+        /// <param name="dataType"></param>
+        /// <returns></returns>
+        public static bool IsRequired(INavigation p, string dataType)
+        {
+            if (dataType.StartsWith("System.Nullable"))
+            {
+                return false;
+            }          
+            return true;
+        }
+
+        /// <summary>
+        /// 鑾峰彇瀵艰埅灞炴�ф槸鍚︽敞瑙d俊鎭�
+        /// </summary>
+        /// <param name="p"></param>
+        /// <returns></returns>
+        public static string GetComment(this INavigation p)
+        {
+            return ((CommentAttribute?)p?.PropertyInfo?.GetCustomAttribute(typeof(CommentAttribute), true))?.Comment ?? "";
+        }
+
+
+        /// <summary>
+        /// 鑾峰彇绫诲瀷妫�绉�
+        /// </summary>
+        /// <param name="fullName"></param>
+        /// <returns></returns>
+        public static string GetSimpleName(this string fullName) 
+        {
+            var args = fullName.Split(".");
+            if (args == null) return "";
+            return args[^1];
+        }
+
+       
+       
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FileUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FileUtil.cs
new file mode 100644
index 0000000..eb43113
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FileUtil.cs
@@ -0,0 +1,53 @@
+锘縰sing Furion;
+using RestSharp;
+
+namespace Admin.NET.Core
+{
+    public static class FileUtil
+    {
+        /// <summary>
+        /// 寰�鏂囦欢閲岃拷鍔犲唴瀹�
+        /// </summary>
+        /// <param name="folder">鏂囦欢</param>
+        /// <param name="folder">鐩綍</param>
+        /// <param name="fileName">鏂囦欢</param>
+        /// <param name="args">鍐呭鍙傛暟</param>
+        public static void WriteLine(string folder, string fileName,  string content)
+        {
+              
+            if (!Directory.Exists(folder))
+            {
+                Directory.CreateDirectory(folder);
+            }
+                  
+            File.AppendAllText(Path.Combine(folder, fileName), content + "\r\n");
+        }
+
+        /// <summary>
+        /// 涓嬭浇鏂囦欢
+        /// </summary>
+        /// <param name="path"></param>
+        /// <param name="fileName"></param>
+        /// <returns></returns>
+        public static Stream Download(string path, string fileName)
+        {
+            var options = new RestClientOptions(App.Configuration["FileUrl"])
+            {
+                ThrowOnAnyError = true,
+                MaxTimeout = 2000
+            };
+            var client = new RestClient(options);
+            var request = new RestRequest($"/file/download", Method.Get);
+            request?.AddParameter(Parameter.CreateParameter("path", path, ParameterType.QueryString))
+                ?.AddParameter(Parameter.CreateParameter("fileName", fileName, ParameterType.QueryString));
+            var response = client.DownloadData(request ?? null!);
+            MemoryStream ms = new(response ?? null!);
+            return ms;
+        }
+
+
+
+
+
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/IPUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/IPUtil.cs
new file mode 100644
index 0000000..f051ee0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/IPUtil.cs
@@ -0,0 +1,33 @@
+锘縰sing Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Core
+{
+    public static class IPUtil
+    {
+        /// <summary>
+        /// 鑾峰彇璇锋眰鐨刬p4
+        /// </summary>
+        /// <param name="context"></param>
+        /// <returns></returns>
+        public static string GetRequestIPv4(this HttpContext context)
+        {
+            string ip = string.Empty;
+            if (context.Connection.RemoteIpAddress != null)
+            {
+                if (context.Request.Headers.ContainsKey("X-Real-IP"))
+                {
+                    ip = context.Request.Headers["X-Real-IP"].FirstOrDefault();
+                }
+                if (context.Request.Headers.ContainsKey("X-Forwarded-For"))
+                {
+                    ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();
+                }
+                if (string.IsNullOrEmpty(ip))
+                {
+                    ip = context.Connection.RemoteIpAddress?.MapToIPv4()?.ToString();
+                }
+            }
+            return ip;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/JsonUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/JsonUtil.cs
new file mode 100644
index 0000000..03a53b6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/JsonUtil.cs
@@ -0,0 +1,82 @@
+锘縰sing Furion.FriendlyException;
+using Newtonsoft.Json;
+using System.Runtime.Serialization.Json;
+using System.Text;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// Json宸ュ叿绫�
+    /// </summary>
+    public static class JsonUtil
+    {
+        /// <summary>
+        /// Object杞琂osn
+        /// </summary>
+        /// <param name="obj"></param>
+        /// <returns></returns>
+        public static string ToJson(this object obj)
+        {
+            if (obj == null)
+            {
+                return null;
+            }
+            return JsonConvert.SerializeObject(obj);
+        }
+
+        /// <summary>
+        /// Json杞琌bject
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="str"></param>
+        /// <returns></returns>
+        public static T FromJson<T>(this string str)
+        {
+            try
+            {
+                return JsonConvert.DeserializeObject<T>(str);
+            }
+            catch (Exception ex)
+            {
+                throw Oops.Oh(ex.Message);
+                // return default(T);
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇Json鐨凪odel
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="szJson"></param>
+        /// <returns></returns>
+        public static T ParseFromJson<T>(string szJson)
+        {
+            if (typeof(T) == typeof(IEnumerable<>))
+            {
+            }
+            T obj = Activator.CreateInstance<T>();
+            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
+            {
+                DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
+                return (T)serializer.ReadObject(ms);
+            }
+        }
+
+        /// <summary>
+        /// string瀛楀吀
+        /// </summary>
+        /// <typeparam name="TKey"></typeparam>
+        /// <typeparam name="TValue"></typeparam>
+        /// <param name="jsonStr"></param>
+        /// <returns></returns>
+        public static Dictionary<TKey, TValue> DeserializeStringToDictionary<TKey, TValue>(string jsonStr)
+        {
+            if (string.IsNullOrEmpty(jsonStr))
+                return new Dictionary<TKey, TValue>();
+
+            Dictionary<TKey, TValue> jsonDict = JsonConvert.DeserializeObject<Dictionary<TKey, TValue>>(jsonStr);
+
+            return jsonDict;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ListUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ListUtil.cs
new file mode 100644
index 0000000..911241b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ListUtil.cs
@@ -0,0 +1,53 @@
+锘縰sing Furion.FriendlyException;
+using System.Collections.Concurrent;
+using System.ComponentModel;
+using System.Reflection;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍒楄〃鎵╁睍
+    /// </summary>
+    public static class ListUtil
+    {
+        /// <summary>
+        /// 灏嗕竴涓暟瀛楁媶鍒嗘垚鑻ュ共涓寚瀹氬ぇ灏忕殑鏁扮粍
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="list"></param>
+        /// <param name="maxThreadCount"></param>
+        /// <param name="size"></param>
+        /// <returns></returns>
+        public static List<T>[] SplitList<T>(this List<T> list, int size ) 
+        {
+            var count = (int)Math.Ceiling((decimal)list.Count / size);
+            if(count <= 0) return Array.Empty<List < T >> ();
+            List<T>[] listArray = new List<T>[count];
+            for (var i = 0; i < count; i++)
+            {
+                listArray[i] = list.GetRange(i * size, Math.Min(size, list.Count - i * size));
+            }
+            return listArray;
+        }
+
+        /// <summary>
+        /// 灞曠ず鍒楄〃鏁版嵁
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="list"></param>
+        /// <returns></returns>
+        public static string Show<T>(this List<T> list) 
+        {
+            string info = string.Empty;
+            list.ForEach(item => info += item + ",");
+            return info.EndsWith(",") ? info[..^1] : info;
+        }
+        
+
+
+
+
+        
+
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Dto/Front_FileDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Dto/Front_FileDto.cs
new file mode 100644
index 0000000..113f55c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Dto/Front_FileDto.cs
@@ -0,0 +1,11 @@
+锘縩amespace Admin.NET.Core.Util.LowCode.Dto
+{
+    public class Front_FileDto
+    {
+        public string Name { get; set; }
+        public string Status { get; set; }
+        public string Type { get; set; }
+        public string Uid { get; set; }
+        public string Url { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Enum/FieldType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Enum/FieldType.cs
new file mode 100644
index 0000000..8851a9e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Enum/FieldType.cs
@@ -0,0 +1,10 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Enum
+{
+    public enum FieldType
+    {
+        String,
+        Int,
+        Decimal,
+        Date
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/EssentialFactor.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/EssentialFactor.cs
new file mode 100644
index 0000000..27fc2e5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/EssentialFactor.cs
@@ -0,0 +1,20 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Factor.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode
+{
+    /// <summary>
+    /// 瑕佺礌椤�
+    /// </summary>
+    public class EssentialFactor
+    {
+        /// <summary>
+        /// 瑕佺礌鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 瀛楁闆�
+        /// </summary>
+        public IList<IFactor> Factors { get; set; } = new List<IFactor>();
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DateFactor.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DateFactor.cs
new file mode 100644
index 0000000..ed44806
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DateFactor.cs
@@ -0,0 +1,27 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Enum;
+using Furion.Extras.Admin.NET.Util.LowCode.Factor.Interface;
+using System.Reflection;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Factor
+{
+    public class DateFactor : IFactor
+    {
+        public PropertyInfo Field { get; set; }
+        public string Describe { get; set; }
+        public string FieldName { get; set; }
+
+        public FieldType FieldType
+        { get { return FieldType.Date; } }
+
+        public string DbType
+        {
+            get
+            {
+                if (IsDateTime) return "DATETIME";
+                return "DATE";
+            }
+        }
+
+        public bool IsDateTime { get; set; } = true;
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DecimalFactor.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DecimalFactor.cs
new file mode 100644
index 0000000..84f428d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DecimalFactor.cs
@@ -0,0 +1,46 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Enum;
+using Furion.Extras.Admin.NET.Util.LowCode.Factor.Interface;
+using System.Reflection;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Factor
+{
+    public class DecimalFactor : IFactor
+    {
+        /// <summary>
+        /// 瀵硅薄绫诲瀷
+        /// </summary>
+        public FieldType FieldType
+        { get { return FieldType.Decimal; } }
+
+        /// <summary>
+        /// 瀵硅薄鏄犲皠
+        /// </summary>
+        public PropertyInfo Field { get; set; }
+
+        /// <summary>
+        /// 瀛楁鎻忚堪
+        /// </summary>
+        public string Describe { get; set; }
+
+        /// <summary>
+        /// 瀛楁鍚�
+        /// </summary>
+        public string FieldName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撶被鍨�
+        /// </summary>
+        public string DbType
+        { get { return $"DECIMAL({MaxLength},{DecimalLength})"; } }
+
+        /// <summary>
+        /// 鏁板瓧闀垮害
+        /// </summary>
+        public int MaxLength { get; set; }
+
+        /// <summary>
+        /// 灏忔暟闀垮害
+        /// </summary>
+        public int DecimalLength { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/Interface/IFactor.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/Interface/IFactor.cs
new file mode 100644
index 0000000..da94a84
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/Interface/IFactor.cs
@@ -0,0 +1,33 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Enum;
+using System.Reflection;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Factor.Interface
+{
+    public interface IFactor
+    {
+        /// <summary>
+        /// 瀛楁缁戝畾
+        /// </summary>
+        PropertyInfo Field { get; set; }
+
+        /// <summary>
+        /// 瀛楁鎻忚堪
+        /// </summary>
+        string Describe { get; set; }
+
+        /// <summary>
+        /// 瀛楁鍚�
+        /// </summary>
+        string FieldName { get; set; }
+
+        /// <summary>
+        /// 瀛楁绫诲瀷
+        /// </summary>
+        FieldType FieldType { get; }
+
+        /// <summary>
+        /// 鏁版嵁搴撶被鍨�
+        /// </summary>
+        string DbType { get; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/TextFactor.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/TextFactor.cs
new file mode 100644
index 0000000..5c67be8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/TextFactor.cs
@@ -0,0 +1,41 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Enum;
+using Furion.Extras.Admin.NET.Util.LowCode.Factor.Interface;
+using System.Reflection;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Factor
+{
+    public class TextFactor : IFactor
+    {
+        /// <summary>
+        /// 瀵硅薄绫诲瀷
+        /// </summary>
+        public FieldType FieldType
+        { get { return FieldType.String; } }
+
+        /// <summary>
+        /// 瀛楁鎻忚堪
+        /// </summary>
+        public string Describe { get; set; }
+
+        /// <summary>
+        /// 瀛楁鍚�
+        /// </summary>
+        public string FieldName { get; set; }
+
+        /// <summary>
+        /// 瀵硅薄鏄犲皠
+        /// </summary>
+        public PropertyInfo Field { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撶被鍨�
+        /// </summary>
+        public string DbType
+        { get { return $"NVARCHAR({MaxLength})"; } }
+
+        /// <summary>
+        /// 瀛楁鏈�澶ч暱搴�
+        /// </summary>
+        public int MaxLength { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeAttribute.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeAttribute.cs
new file mode 100644
index 0000000..92e8aed
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeAttribute.cs
@@ -0,0 +1,12 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Att
+{
+    public class FrontTypeAttribute : Attribute
+    {
+        public FrontTypeAttribute(string type)
+        {
+            this.Type = type;
+        }
+
+        public string Type { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeBindDatabaseAttribute.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeBindDatabaseAttribute.cs
new file mode 100644
index 0000000..0dcb431
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeBindDatabaseAttribute.cs
@@ -0,0 +1,23 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Att
+{
+    [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
+    public class FrontTypeBindDatabaseAttribute : Attribute
+    {
+        public FrontTypeBindDatabaseAttribute(string providerName, Type dbType, string dbParam = null,
+            Type dtoType = null,
+            string suffix = null)
+        {
+            this.ProviderName = providerName;
+            this.Suffix = suffix;
+            this.DbType = dbType;
+            this.DtoType = dtoType;
+            this.DbParam = dbParam;
+        }
+
+        public string ProviderName { get; set; }
+        public string Suffix { get; set; }
+        public Type DbType { get; set; }
+        public Type DtoType { get; set; }
+        public string DbParam { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Dynamic.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Dynamic.cs
new file mode 100644
index 0000000..47c7f56
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Dynamic.cs
@@ -0,0 +1,23 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+
+namespace Admin.NET.Core.Util.LowCode.Front.Code
+{
+    public static class AutoCode_Dynamic
+    {
+        public static Front_Dynamic GetDynamic(this string DynamicKey)
+        {
+            var index = DynamicKey.IndexOf('$');
+            if (index >= 0)
+            {
+                return new Front_Dynamic()
+                {
+                    Head = DynamicKey.Substring(0, index),
+                    Dynamic = DynamicKey.Substring(index + 1),
+                    DynamicKey = DynamicKey
+                };
+            }
+
+            return null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Front.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Front.cs
new file mode 100644
index 0000000..57aa12f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Front.cs
@@ -0,0 +1,103 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using System.Reflection;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front.Code
+{
+    /// <summary>
+    /// json瑙f瀽涓哄姩鎬佽〃鍗�
+    /// </summary>
+    public static class AutoCode_Front
+    {
+        public static Front_Model ConvertToFront(this string json)
+        {
+            FrontTypes();
+
+            var JData = JsonConvert.DeserializeObject<JObject>(json);
+
+            return new Front_Model()
+            {
+                List = ReadFront(JData["list"].Values<JObject>().ToList()),
+                Config = JsonConvert.DeserializeObject<Front_Config>(JData["config"].ToString())
+            };
+        }
+
+        public static List<IFront> ReadFront(List<JObject> JData)
+        {
+            List<IFront> list = new List<IFront>();
+
+            JData.ForEach(JItem =>
+            {
+                list.Add(ReadFront(JItem));
+            });
+
+            return list;
+        }
+
+        public static List<FrontTypeBindDatabaseAttribute> ReadFront_BindDatabase(this IFront front, string providerName)
+        {
+            var item = List.Where(x => x.Type == front.Type).FirstOrDefault();
+
+            if (item == null || item.BindDatabase == null || !item.BindDatabase.Any()) return new List<FrontTypeBindDatabaseAttribute>();
+
+            if (item.BindDatabase.Where(x => x.ProviderName == providerName).Any())
+                return item.BindDatabase.Where(x => x.ProviderName == providerName).ToList();
+
+            providerName = item.BindDatabase.Select(x => x.ProviderName).FirstOrDefault();
+
+            return item.BindDatabase.Where(x => x.ProviderName == providerName).ToList();
+        }
+
+        private static IFront ReadFront(JObject JData)
+        {
+            var type = JData["type"].Value<string>();
+
+            var item = List.Where(x => x.Type == type).FirstOrDefault();
+
+            if (item == null)
+                throw new NotFoundFrontException($"鏈壘鍒扮粍浠讹細{type}");
+
+            if (item.T.GetInterfaces().Where(x => x == typeof(IFrontLayout)).Any())
+            {
+                IFrontLayout layout = Activator.CreateInstance(item.T) as IFrontLayout;
+                return layout.ConvertFront(JData);
+            }
+            else
+            {
+                return (IFront)JData.ToObject(item.T);
+            }
+        }
+
+        private static List<Front_Convert> List { get; set; }
+
+        private static List<Front_Convert> FrontTypes()
+        {
+            if (List == null)
+            {
+                List = new List<Front_Convert>();
+
+                Assembly.GetExecutingAssembly().GetTypes().Where(o => o.IsClass && o.Namespace == "Furion.Extras.Admin.NET.Util.LowCode.Front").ToList().ForEach(type =>
+                {
+                    var FrontTypeAttribute = type.GetCustomAttribute<FrontTypeAttribute>();
+
+                    if (FrontTypeAttribute != null)
+                    {
+                        List.Add(new Front_Convert()
+                        {
+                            T = type
+                            ,
+                            Type = FrontTypeAttribute.Type
+                            ,
+                            BindDatabase = type.GetCustomAttributes<FrontTypeBindDatabaseAttribute>().ToList()
+                        });
+                    }
+                });
+            }
+
+            return List;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_FrontModel.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_FrontModel.cs
new file mode 100644
index 0000000..ba40641
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_FrontModel.cs
@@ -0,0 +1,43 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front.Code
+{
+    public static class AutoCode_FrontModel
+    {
+        public static List<IFront> AllFront(this Front_Model model)
+        {
+            List<IFront> list = new List<IFront>();
+
+            model.List.ForEach(item =>
+            {
+                if (item is IFrontLayout)
+                {
+                    (item as IFrontLayout).ReadFront(front => { list.Add(front); });
+                }
+                else
+                {
+                    list.Add(item);
+                }
+            });
+
+            return list;
+        }
+
+        public static List<ViewDynamic> AllDynamic(this List<IFront> list)
+        {
+            List<ViewDynamic> data = new List<ViewDynamic>();
+
+            list.ForEach(item =>
+            {
+                if (item.Dynamic != null)
+                {
+                    data.Add(item.Dynamic);
+                }
+            });
+
+            return data;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/FileUrl_Code.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/FileUrl_Code.cs
new file mode 100644
index 0000000..aa4f8ba
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/FileUrl_Code.cs
@@ -0,0 +1,17 @@
+锘縩amespace Admin.NET.Core.Util.LowCode.Front.Code
+{
+    public static class FileUrl_Code
+    {
+        public static string GetFileId(this string Url)
+        {
+            var param = Url.Substring(Url.IndexOf("?") + 1);
+
+            param = param.Substring(param.IndexOf("id=") + 3);
+
+            if (param.IndexOf("?") >= 0)
+                param = param.Substring(0, param.IndexOf("?"));
+
+            return param;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Alert.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Alert.cs
new file mode 100644
index 0000000..76737df
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Alert.cs
@@ -0,0 +1,56 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 璀﹀憡鎻愮ず
+    /// </summary>
+    [FrontType("alert")]
+    public class Front_Alert : IFront
+    {
+        public string Key { get; set; }
+        public string Label { get; set; }
+        public string Type { get; set; }
+        public string Model { get; set; }
+
+        public Front_Alert_Options Options { get; set; }
+
+        public ViewDynamic Dynamic
+        { get { return null; } }
+    }
+
+    public class Front_Alert_Options
+    {
+        /// <summary>
+        /// 绫诲瀷
+        /// </summary>
+        public string Type { get; set; }
+
+        /// <summary>
+        /// 杈呭姪琛ㄨ堪
+        /// </summary>
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 鏄剧ず鍥炬爣
+        /// </summary>
+        public bool ShowIcon { get; set; }
+
+        /// <summary>
+        /// 鏃犺竟妗�
+        /// </summary>
+        public bool Banner { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Batch.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Batch.cs
new file mode 100644
index 0000000..fdad1c9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Batch.cs
@@ -0,0 +1,62 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    [FrontType("batch")]
+    public class Front_Batch : IFront
+    {
+        public string Key { get; set; }
+        public string Label { get; set; }
+        public string Type { get; set; }
+
+        /// <summary>
+        /// 閰嶇疆
+        /// </summary>
+        public Front_Batch_Options Options { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁瀛楁
+        /// </summary>
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 甯姪淇℃伅
+        /// </summary>
+        public string Help { get; set; }
+
+        public ViewDynamic Dynamic
+        { get { return null; } }
+    }
+
+    public class Front_Batch_Options
+    {
+        public int ScrollY { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 鏄剧ずLabel
+        /// </summary>
+        public bool ShowLabel { get; set; }
+
+        /// <summary>
+        /// 闅愯棌搴忓彿
+        /// </summary>
+        public bool HideSequence { get; set; }
+
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public string Width { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Button.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Button.cs
new file mode 100644
index 0000000..b3ed978
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Button.cs
@@ -0,0 +1,48 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    [FrontType("button")]
+    public class Front_Button : IFront
+    {
+        public string Key { get; set; }
+        public string Label { get; set; }
+        public string Type { get; set; }
+        public string Model { get; set; }
+
+        public Front_Button_Options Options { get; set; }
+
+        public ViewDynamic Dynamic
+        { get { return null; } }
+    }
+
+    public class Front_Button_Options
+    {
+        /// <summary>
+        /// 绫诲瀷
+        /// </summary>
+        public string Type { get; set; }
+
+        /// <summary>
+        /// 鎸夐挳鎿嶄綔
+        /// </summary>
+        public string Handle { get; set; }
+
+        /// <summary>
+        /// 鍔ㄦ�佸嚱鏁�
+        /// </summary>
+        public string DynamicFun { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Card.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Card.cs
new file mode 100644
index 0000000..4c965b6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Card.cs
@@ -0,0 +1,51 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Code;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Newtonsoft.Json.Linq;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    [FrontType("card")]
+    public class Front_Card : IFront, IFrontLayout
+    {
+        public string Key { get; set; }
+        public string Label { get; set; }
+        public string Type { get; set; }
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 缁勪欢闆�
+        /// </summary>
+        public List<IFront> List { get; set; }
+
+        public ViewDynamic Dynamic
+        { get { return null; } }
+
+        public IFront ConvertFront(JObject JData)
+        {
+            return new Front_Card()
+            {
+                Key = JData["key"].Value<string>(),
+                Label = JData["label"].Value<string>(),
+                Type = JData["type"].Value<string>(),
+                List = AutoCode_Front.ReadFront(JData["list"].Values<JObject>().ToList())
+            };
+        }
+
+        public void ReadFront(Action<IFront> action)
+        {
+            this.List.ForEach(item =>
+            {
+                if (item is IFrontLayout)
+                {
+                    (item as IFrontLayout).ReadFront(action);
+                }
+                else
+                {
+                    action(item);
+                }
+            });
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Cascader.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Cascader.cs
new file mode 100644
index 0000000..92e38c3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Cascader.cs
@@ -0,0 +1,62 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 绾ц仈閫夋嫨鍣�
+    /// </summary>
+    [FrontType("cascader")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(2000)")]
+    public class Front_Cascader : Front_Base<Front_Cascader_Options>, IFrontDynamic
+    {
+        public override ViewDynamic Dynamic
+        { get { return new ViewDynamic() { Dynamic = this.Options.Dynamic, DynamicKey = this.Options.DynamicKey }; } }
+    }
+
+    public class Front_Cascader_Options : IFrontDynamicOptions
+    {
+        /// <summary>
+        /// 鍔ㄦ�佹暟鎹�
+        /// </summary>
+        public string DynamicKey { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄姩鎬佹暟鎹�
+        /// </summary>
+        public bool Dynamic { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 鍙悳绱�
+        /// </summary>
+        public bool ShowSearch { get; set; }
+
+        /// <summary>
+        /// 鍗犱綅鍐呭
+        /// </summary>
+        public string Placeholder { get; set; }
+
+        /// <summary>
+        /// 鍙竻闄�
+        /// </summary>
+        public bool Clearable { get; set; }
+
+        /// <summary>
+        /// 閫夐」閰嶇疆
+        /// </summary>
+        public Front_Tree_Option[] Options { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Checkbox.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Checkbox.cs
new file mode 100644
index 0000000..1d738db
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Checkbox.cs
@@ -0,0 +1,52 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 澶氶�夋
+    /// </summary>
+    [FrontType("checkbox")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(200)")]
+    public class Front_Checkbox : Front_Base<Front_Checkbox_Options>, IFrontDynamic
+    {
+        public override ViewDynamic Dynamic
+        { get { return new ViewDynamic() { Dynamic = this.Options.Dynamic, DynamicKey = this.Options.DynamicKey }; } }
+    }
+
+    public class Front_Checkbox_Options : IFrontDynamicOptions
+    {
+        /// <summary>
+        /// 鍔ㄦ�佹暟鎹�
+        /// </summary>
+        public string DynamicKey { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄姩鎬佹暟鎹�
+        /// </summary>
+        public bool Dynamic { get; set; }
+
+        /// <summary>
+        /// 閫夐」閰嶇疆
+        /// </summary>
+        public Front_Option[] Options { get; set; }
+
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public string[] DefaultValue { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Date.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Date.cs
new file mode 100644
index 0000000..fe5c07f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Date.cs
@@ -0,0 +1,73 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 鏃ユ湡閫夋嫨妗�
+    /// </summary>
+    [FrontType("date")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(DateTimeOffset))]
+    public class Front_Date : Front_Base<Front_Date_Options>
+    {
+    }
+
+    public class Front_Date_Options
+    {
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public string Width { get; set; }
+
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public DateTime? DefaultValue { get; set; }
+
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public DateTime[] RangeDefaultValue { get; set; }
+
+        /// <summary>
+        /// 鑼冨洿閫夋嫨
+        /// </summary>
+        public bool Range { get; set; }
+
+        /// <summary>
+        /// 鏃堕棿閫夋嫨鍣�
+        /// </summary>
+        public bool ShowTime { get; set; }
+
+        /// <summary>
+        /// 鍙竻闄�
+        /// </summary>
+        public bool Clearable { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 鍗犱綅鍐呭
+        /// </summary>
+        public string Placeholder { get; set; }
+
+        /// <summary>
+        /// 鍗犱綅鍐呭
+        /// </summary>
+        public string[] RangePlaceholder { get; set; }
+
+        /// <summary>
+        /// 鏃堕棿鏍煎紡
+        /// </summary>
+        public string Format { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Divider.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Divider.cs
new file mode 100644
index 0000000..5669d59
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Divider.cs
@@ -0,0 +1,32 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    [FrontType("divider")]
+    public class Front_Divider : IFront
+    {
+        public string Key { get; set; }
+        public string Label { get; set; }
+        public string Type { get; set; }
+        public string Icon { get; set; }
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 鍒嗗壊绾块厤缃�
+        /// </summary>
+        public Front_Divider_Options Options { get; set; }
+
+        public ViewDynamic Dynamic
+        { get { return null; } }
+    }
+
+    public class Front_Divider_Options
+    {
+        /// <summary>
+        /// 鏍囩浣嶇疆
+        /// </summary>
+        public string Orientation { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Editor.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Editor.cs
new file mode 100644
index 0000000..a305e7a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Editor.cs
@@ -0,0 +1,58 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 瀵屾枃鏈
+    /// </summary>
+    [FrontType("editor")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(8000)")]
+    public class Front_Editor : Front_Base<Front_Editor_Options>
+    {
+    }
+
+    public class Front_Editor_Options
+    {
+        /// <summary>
+        /// 楂樺害
+        /// </summary>
+        public int? Height { get; set; }
+
+        /// <summary>
+        /// 鍗犱綅鍐呭
+        /// </summary>
+        public string Placeholder { get; set; }
+
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public string DefaultValue { get; set; }
+
+        /// <summary>
+        /// 姹夊寲
+        /// </summary>
+        public bool Chinesization { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 鏄剧ずLabel
+        /// </summary>
+        public bool ShowLabel { get; set; }
+
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public string Width { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Grid.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Grid.cs
new file mode 100644
index 0000000..12b34c8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Grid.cs
@@ -0,0 +1,108 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Code;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Newtonsoft.Json.Linq;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    [FrontType("grid")]
+    public class Front_Grid : IFront, IFrontLayout
+    {
+        public string Key { get; set; }
+        public string Label { get; set; }
+        public string Type { get; set; }
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 鏍呮牸甯冨眬椤�
+        /// </summary>
+        public List<Front_Grid_Col> Columns { get; set; }
+
+        /// <summary>
+        /// 鏍呮牸閰嶇疆
+        /// </summary>
+        public Front_Grid_Options Options { get; set; }
+
+        public ViewDynamic Dynamic
+        { get { return null; } }
+
+        /// <summary>
+        /// 甯冨眬瀛愮粍浠惰В鏋�
+        /// </summary>
+        /// <param name="JData"></param>
+        /// <returns></returns>
+        public IFront ConvertFront(JObject JData)
+        {
+            List<Front_Grid_Col> front_Grid_Cols = new List<Front_Grid_Col>();
+
+            var columns = JData["columns"].Values<JObject>();
+
+            if (columns != null)
+            {
+                foreach (var column_item in columns)
+                {
+                    front_Grid_Cols.Add(new Front_Grid_Col()
+                    {
+                        Span = column_item["span"].Value<int>(),
+                        List = AutoCode_Front.ReadFront(column_item["list"].Values<JObject>().ToList())
+                    });
+                }
+            }
+
+            return new Front_Grid()
+            {
+                Key = JData["key"].Value<string>(),
+                Label = JData["label"].Value<string>(),
+                Type = JData["type"].Value<string>(),
+                Options = new Front_Grid_Options
+                {
+                    Gutter = JData["options"]["gutter"].Value<int>()
+                },
+                Columns = front_Grid_Cols
+            };
+        }
+
+        public void ReadFront(Action<IFront> action)
+        {
+            this.Columns.SelectMany(x => x.List).ToList().ForEach(item =>
+            {
+                if (item is IFrontLayout)
+                {
+                    (item as IFrontLayout).ReadFront(action);
+                }
+                else
+                {
+                    action(item);
+                }
+            });
+        }
+    }
+
+    /// <summary>
+    /// 鏍呮牸甯冨眬椤�
+    /// </summary>
+    public class Front_Grid_Col
+    {
+        /// <summary>
+        /// 鍒楅厤缃」锛堟渶澶у�硷細24锛�
+        /// </summary>
+        public int Span { get; set; }
+
+        /// <summary>
+        /// 缁勪欢闆�
+        /// </summary>
+        public List<IFront> List { get; set; }
+    }
+
+    /// <summary>
+    /// 鏍呮牸閰嶇疆
+    /// </summary>
+    public class Front_Grid_Options
+    {
+        /// <summary>
+        /// 鏍呮牸闂磋窛
+        /// </summary>
+        public int Gutter { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Html.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Html.cs
new file mode 100644
index 0000000..8b044ef
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Html.cs
@@ -0,0 +1,26 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    [FrontType("html")]
+    public class Front_Html : IFront
+    {
+        public string Key { get; set; }
+        public string Label { get; set; }
+        public string Type { get; set; }
+        public string Model { get; set; }
+
+        public Front_Html_Options Options { get; set; }
+
+        public ViewDynamic Dynamic
+        { get { return null; } }
+    }
+
+    public class Front_Html_Options
+    {
+        public bool Hidden { get; set; }
+        public string DefaultValue { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Input.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Input.cs
new file mode 100644
index 0000000..c235217
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Input.cs
@@ -0,0 +1,68 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 杈撳叆妗�
+    /// </summary>
+    [FrontType("input")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(200)")]
+    public class Front_Input : Front_Base<Front_Input_Options>
+    {
+    }
+
+    public class Front_Input_Options
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        public string Type { get; set; }
+
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public string Width { get; set; }
+
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public string DefaultValue { get; set; }
+
+        /// <summary>
+        /// 鍗犱綅鍐呭
+        /// </summary>
+        public string Placeholder { get; set; }
+
+        /// <summary>
+        /// 鍙竻闄�
+        /// </summary>
+        public bool Clearable { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 鏈�澶ч暱搴�
+        /// </summary>
+        public int? MaxLength { get; set; }
+
+        /// <summary>
+        /// 鍓嶇紑
+        /// </summary>
+        public string AddonBefore { get; set; }
+
+        /// <summary>
+        /// 鍚庣紑
+        /// </summary>
+        public string AddonAfter { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Number.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Number.cs
new file mode 100644
index 0000000..d16edc2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Number.cs
@@ -0,0 +1,63 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 鏁板瓧杈撳叆妗�
+    /// </summary>
+    [FrontType("number")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(decimal), "decimal(25,11)")]
+    public class Front_Number : Front_Base<Front_Number_Options>
+    {
+    }
+
+    public class Front_Number_Options
+    {
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public string Width { get; set; }
+
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public decimal? DefaultValue { get; set; }
+
+        /// <summary>
+        /// 鏈�灏忓��
+        /// </summary>
+        public decimal? Min { get; set; }
+
+        /// <summary>
+        /// 鏈�澶у��
+        /// </summary>
+        public decimal? Max { get; set; }
+
+        /// <summary>
+        /// 鏁板�肩簿搴�
+        /// </summary>
+        public int? Precision { get; set; }
+
+        /// <summary>
+        /// 姝ラ暱
+        /// </summary>
+        public int? Step { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 鍗犱綅鍐呭
+        /// </summary>
+        public string Placeholder { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Radio.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Radio.cs
new file mode 100644
index 0000000..7bd9117
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Radio.cs
@@ -0,0 +1,52 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 鍗曢�夋
+    /// </summary>
+    [FrontType("radio")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(long))]
+    public class Front_Radio : Front_Base<Front_Radio_Options>, IFrontDynamic
+    {
+        public override ViewDynamic Dynamic
+        { get { return new ViewDynamic() { Dynamic = this.Options.Dynamic, DynamicKey = this.Options.DynamicKey }; } }
+    }
+
+    public class Front_Radio_Options : IFrontDynamicOptions
+    {
+        /// <summary>
+        /// 鍔ㄦ�佹暟鎹�
+        /// </summary>
+        public string DynamicKey { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄姩鎬佹暟鎹�
+        /// </summary>
+        public bool Dynamic { get; set; }
+
+        /// <summary>
+        /// 閫夐」閰嶇疆
+        /// </summary>
+        public Front_Option[] Options { get; set; }
+
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public string DefaultValue { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Rate.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Rate.cs
new file mode 100644
index 0000000..24d6ec6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Rate.cs
@@ -0,0 +1,43 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 璇勫垎
+    /// </summary>
+    [FrontType("rate")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(int))]
+    public class Front_Rate : Front_Base<Front_Rate_Options>
+    {
+    }
+
+    public class Front_Rate_Options
+    {
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public int DefaultValue { get; set; }
+
+        /// <summary>
+        /// 鏈�澶у��
+        /// </summary>
+        public int Max { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 鍏佽鍗婇��
+        /// </summary>
+        public bool AllowHalf { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Select.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Select.cs
new file mode 100644
index 0000000..220136e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Select.cs
@@ -0,0 +1,77 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 涓嬫媺閫夋嫨鍣�
+    /// </summary>
+    [FrontType("select")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(200)")]
+    public class Front_Select : Front_Base<Front_Select_Options>, IFrontDynamic
+    {
+        public override ViewDynamic Dynamic
+        { get { return new ViewDynamic() { Dynamic = this.Options.Dynamic, DynamicKey = this.Options.DynamicKey }; } }
+    }
+
+    public class Front_Select_Options : IFrontDynamicOptions
+    {
+        /// <summary>
+        /// 鍔ㄦ�佹暟鎹�
+        /// </summary>
+        public string DynamicKey { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄姩鎬佹暟鎹�
+        /// </summary>
+        public bool Dynamic { get; set; }
+
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public string Width { get; set; }
+
+        /// <summary>
+        /// 澶氶��
+        /// </summary>
+        public bool Multiple { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 鍙竻闄�
+        /// </summary>
+        public bool Clearable { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 鍗犱綅鍐呭
+        /// </summary>
+        public string Placeholder { get; set; }
+
+        /// <summary>
+        /// 閫夐」閰嶇疆
+        /// </summary>
+        public Front_Option[] Options { get; set; }
+
+        /// <summary>
+        /// 鍙悳绱�
+        /// </summary>
+        public bool ShowSearch { get; set; }
+
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public string DefaultValue { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_SelectInputList.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_SelectInputList.cs
new file mode 100644
index 0000000..04a8fc1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_SelectInputList.cs
@@ -0,0 +1,96 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Code;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    [FrontType("selectInputList")]
+    public class Front_SelectInputList : IFront, IFrontLayout
+    {
+        public string Key { get; set; }
+        public string Label { get; set; }
+        public string Type { get; set; }
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 閫夋嫨杈撳叆鍒楅厤缃�
+        /// </summary>
+        public Front_SelectInputList_Options Options { get; set; }
+
+        /// <summary>
+        /// 閫夐」
+        /// </summary>
+        public List<Front_SelectInputList_Column> Columns { get; set; }
+
+        public ViewDynamic Dynamic
+        { get { return null; } }
+
+        public IFront ConvertFront(JObject JData)
+        {
+            var columns_obj = JData["columns"].Values<JObject>();
+
+            List<Front_SelectInputList_Column> columns = new List<Front_SelectInputList_Column>();
+
+            if (columns_obj != null)
+            {
+                foreach (var column_item in columns_obj)
+                {
+                    columns.Add(new Front_SelectInputList_Column()
+                    {
+                        Label = column_item["label"].Value<string>(),
+                        Value = column_item["value"].Value<string>(),
+                        List = AutoCode_Front.ReadFront(column_item["list"].Values<JObject>().ToList())
+                    });
+                }
+            }
+
+            return new Front_SelectInputList()
+            {
+                Key = JData["key"].Value<string>(),
+                Label = JData["label"].Value<string>(),
+                Type = JData["type"].Value<string>(),
+                Options = JsonConvert.DeserializeObject<Front_SelectInputList_Options>(JData["options"].ToString()),
+                Columns = columns
+            };
+        }
+
+        public void ReadFront(Action<IFront> action)
+        {
+            this.Columns.SelectMany(x => x.List).ToList().ForEach(item =>
+            {
+                if (item is IFrontLayout)
+                {
+                    (item as IFrontLayout).ReadFront(action);
+                }
+                else
+                {
+                    action(item);
+                }
+            });
+        }
+    }
+
+    public class Front_SelectInputList_Options
+    {
+        public bool disabled { get; set; }
+        public bool multiple { get; set; }
+        public bool hidden { get; set; }
+        public bool showLabel { get; set; }
+        public string width { get; set; }
+    }
+
+    public class Front_SelectInputList_Column
+    {
+        public string Value { get; set; }
+        public string Label { get; set; }
+
+        /// <summary>
+        /// 缁勪欢闆�
+        /// </summary>
+        public List<IFront> List { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Slider.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Slider.cs
new file mode 100644
index 0000000..f1396e3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Slider.cs
@@ -0,0 +1,58 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 婊戝姩杈撳叆鏉�
+    /// </summary>
+    [FrontType("slider")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(int))]
+    public class Front_Slider : Front_Base<Front_Slider_Options>
+    {
+    }
+
+    public class Front_Slider_Options
+    {
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public string Width { get; set; }
+
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public int DefaultValue { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 鏈�灏忓��
+        /// </summary>
+        public int Min { get; set; }
+
+        /// <summary>
+        /// 鏈�澶у��
+        /// </summary>
+        public int Max { get; set; }
+
+        /// <summary>
+        /// 姝ラ暱
+        /// </summary>
+        public int Step { get; set; }
+
+        /// <summary>
+        /// 鏄剧ず杈撳叆妗�
+        /// </summary>
+        public bool ShowInput { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Switch.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Switch.cs
new file mode 100644
index 0000000..06d9a97
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Switch.cs
@@ -0,0 +1,30 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    [FrontType("switch")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(bool))]
+    public class Front_Switch : Front_Base<Front_Switch_Options>
+    {
+    }
+
+    public class Front_Switch_Options
+    {
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public bool DefaultValue { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Table.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Table.cs
new file mode 100644
index 0000000..ac70d8e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Table.cs
@@ -0,0 +1,128 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Code;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    [FrontType("table")]
+    public class Front_Table : IFront, IFrontLayout
+    {
+        public string Key { get; set; }
+        public string Label { get; set; }
+        public string Type { get; set; }
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 琛ㄦ牸閰嶇疆
+        /// </summary>
+        public Front_Table_Options Options { get; set; }
+
+        /// <summary>
+        /// 琛ㄦ牸鍒�
+        /// </summary>
+        public List<Front_Table_Trs> Trs { get; set; }
+
+        public ViewDynamic Dynamic
+        { get { return null; } }
+
+        public IFront ConvertFront(JObject JData)
+        {
+            List<Front_Table_Trs> trs = new List<Front_Table_Trs>();
+
+            var trs_obj = JData["trs"].Values<JObject>();
+
+            if (trs != null)
+            {
+                foreach (var tr_item in trs_obj)
+                {
+                    var tds_obj = tr_item["tds"].Values<JObject>();
+
+                    if (tds_obj != null)
+                    {
+                        List<Front_Table_Tds> tds = new List<Front_Table_Tds>();
+
+                        foreach (var td_item in tds_obj)
+                        {
+                            tds.Add(new Front_Table_Tds()
+                            {
+                                Colspan = td_item["colspan"].Value<int>(),
+                                Rowspan = td_item["rowspan"].Value<int>(),
+                                List = AutoCode_Front.ReadFront(td_item["list"].Values<JObject>().ToList())
+                            });
+                        }
+
+                        trs.Add(new Front_Table_Trs()
+                        {
+                            Tds = tds
+                        });
+                    }
+                }
+            }
+
+            return new Front_Table()
+            {
+                Key = JData["key"].Value<string>(),
+                Label = JData["label"].Value<string>(),
+                Type = JData["type"].Value<string>(),
+                Options = JsonConvert.DeserializeObject<Front_Table_Options>(JData["options"].ToString()),
+                Trs = trs
+            };
+        }
+
+        public void ReadFront(Action<IFront> action)
+        {
+            this.Trs.SelectMany(x => x.Tds.SelectMany(x_1 => x_1.List)).ToList().ForEach(item =>
+            {
+                if (item is IFrontLayout)
+                {
+                    (item as IFrontLayout).ReadFront(action);
+                }
+                else
+                {
+                    action(item);
+                }
+            });
+        }
+    }
+
+    /// <summary>
+    /// 琛ㄦ牸鍒�
+    /// </summary>
+    public class Front_Table_Trs
+    {
+        public List<Front_Table_Tds> Tds { get; set; }
+    }
+
+    /// <summary>
+    /// 琛ㄦ牸鍗曞厓鏍�
+    /// </summary>
+    public class Front_Table_Tds
+    {
+        /// <summary>
+        /// 璺ㄥ垪
+        /// </summary>
+        public int Colspan { get; set; }
+
+        /// <summary>
+        /// 璺ㄨ
+        /// </summary>
+        public int Rowspan { get; set; }
+
+        /// <summary>
+        /// 缁勪欢闆�
+        /// </summary>
+        public List<IFront> List { get; set; }
+    }
+
+    public class Front_Table_Options
+    {
+        public string Width { get; set; }
+        public bool Bordered { get; set; }
+        public bool Bright { get; set; }
+        public bool Small { get; set; }
+        public string CustomStyle { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Tabs.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Tabs.cs
new file mode 100644
index 0000000..5f8bc9b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Tabs.cs
@@ -0,0 +1,121 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Code;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    [FrontType("tabs")]
+    public class Front_Tabs : IFront, IFrontLayout
+    {
+        public string Key { get; set; }
+        public string Label { get; set; }
+        public string Type { get; set; }
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 琛ㄦ牸閰嶇疆
+        /// </summary>
+        public Front_Tabs_Options Options { get; set; }
+
+        /// <summary>
+        /// Tab閫夐」
+        /// </summary>
+        public List<Front_Tabs_Column> Columns { get; set; }
+
+        public ViewDynamic Dynamic
+        { get { return null; } }
+
+        public IFront ConvertFront(JObject JData)
+        {
+            var columns_obj = JData["columns"].Values<JObject>();
+
+            List<Front_Tabs_Column> columns = new List<Front_Tabs_Column>();
+
+            if (columns_obj != null)
+            {
+                foreach (var column_item in columns_obj)
+                {
+                    columns.Add(new Front_Tabs_Column()
+                    {
+                        Label = column_item["label"].Value<string>(),
+                        Value = column_item["value"].Value<string>(),
+                        List = AutoCode_Front.ReadFront(column_item["list"].Values<JObject>().ToList())
+                    });
+                }
+            }
+
+            return new Front_Tabs()
+            {
+                Key = JData["key"].Value<string>(),
+                Label = JData["label"].Value<string>(),
+                Type = JData["type"].Value<string>(),
+                Options = JsonConvert.DeserializeObject<Front_Tabs_Options>(JData["options"].ToString()),
+                Columns = columns
+            };
+        }
+
+        public void ReadFront(Action<IFront> action)
+        {
+            this.Columns.SelectMany(x => x.List).ToList().ForEach(item =>
+            {
+                if (item is IFrontLayout)
+                {
+                    (item as IFrontLayout).ReadFront(action);
+                }
+                else
+                {
+                    action(item);
+                }
+            });
+        }
+    }
+
+    public class Front_Tabs_Options
+    {
+        /// <summary>
+        /// 鏍囩闂磋窛
+        /// </summary>
+        public int? TabBarGutter { get; set; }
+
+        /// <summary>
+        /// 椤电绫诲瀷
+        /// </summary>
+        public string Type { get; set; }
+
+        /// <summary>
+        /// 椤电浣嶇疆
+        /// </summary>
+        public string TabPosition { get; set; }
+
+        /// <summary>
+        /// 澶у皬
+        /// </summary>
+        public string Size { get; set; }
+
+        /// <summary>
+        /// 鍔ㄧ敾鍒囨崲
+        /// </summary>
+        public bool Animated { get; set; }
+    }
+
+    public class Front_Tabs_Column
+    {
+        /// <summary>
+        /// 椤电ID
+        /// </summary>
+        public string Value { get; set; }
+
+        /// <summary>
+        /// 椤电鏍囩
+        /// </summary>
+        public string Label { get; set; }
+
+        /// <summary>
+        /// 缁勪欢闆�
+        /// </summary>
+        public List<IFront> List { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Text.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Text.cs
new file mode 100644
index 0000000..c51e3e7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Text.cs
@@ -0,0 +1,58 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 鏂囨湰妗�
+    /// </summary>
+    [FrontType("text")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(2000)")]
+    public class Front_Text : IFront
+    {
+        public string Key { get; set; }
+        public string Label { get; set; }
+        public string Type { get; set; }
+        public string Model { get; set; }
+
+        public Front_Text_Options Options { get; set; }
+
+        public ViewDynamic Dynamic
+        { get { return null; } }
+    }
+
+    public class Front_Text_Options
+    {
+        /// <summary>
+        /// 鏂囧瓧瀵归綈鏂瑰紡
+        /// </summary>
+        public string TextAlign { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 鏄剧ず蹇呴�夋爣璁�
+        /// </summary>
+        public bool ShowRequiredMark { get; set; }
+
+        /// <summary>
+        /// 瀛椾綋棰滆壊
+        /// </summary>
+        public string Color { get; set; }
+
+        /// <summary>
+        /// 瀛椾綋绫诲瀷
+        /// </summary>
+        public string FontFamily { get; set; }
+
+        /// <summary>
+        /// 瀛椾綋澶у皬
+        /// </summary>
+        public string FontSize { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Textarea.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Textarea.cs
new file mode 100644
index 0000000..69a7cb4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Textarea.cs
@@ -0,0 +1,60 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    [FrontType("textarea")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(2000)")]
+    public class Front_Textarea : Front_Base<Front_Textarea_Options>
+    {
+    }
+
+    public class Front_Textarea_Options
+    {
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public string Width { get; set; }
+
+        /// <summary>
+        /// 鑷�傚簲鍐呭楂樺害
+        /// </summary>
+        public int? MinRows { get; set; }
+
+        /// <summary>
+        /// 鑷�傚簲鍐呭楂樺害
+        /// </summary>
+        public int? MaxRows { get; set; }
+
+        /// <summary>
+        /// 鏈�澶ч暱搴�
+        /// </summary>
+        public int? MaxLength { get; set; }
+
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public string DefaultValue { get; set; }
+
+        /// <summary>
+        /// 鍙竻闄�
+        /// </summary>
+        public bool Clearable { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 鍗犱綅鍐呭
+        /// </summary>
+        public string Placeholder { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Time.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Time.cs
new file mode 100644
index 0000000..50b2086
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Time.cs
@@ -0,0 +1,53 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 鏃堕棿閫夋嫨妗�
+    /// </summary>
+    [FrontType("time")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(10)")]
+    public class Front_Time : Front_Base<Front_Time_Options>
+    {
+    }
+
+    public class Front_Time_Options
+    {
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public string Width { get; set; }
+
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public string DefaultValue { get; set; }
+
+        /// <summary>
+        /// 鍙竻闄�
+        /// </summary>
+        public bool Clearable { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 鍗犱綅鍐呭
+        /// </summary>
+        public string Placeholder { get; set; }
+
+        /// <summary>
+        /// 鏃堕棿鏍煎紡
+        /// </summary>
+        public string Format { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_TreeSelect.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_TreeSelect.cs
new file mode 100644
index 0000000..dbdeed5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_TreeSelect.cs
@@ -0,0 +1,72 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 鏍戦�夋嫨鍣�
+    /// </summary>
+    [FrontType("treeSelect")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(2000)")]
+    public class Front_TreeSelect : Front_Base<Front_TreeSelect_Options>, IFrontDynamic
+    {
+        public override ViewDynamic Dynamic
+        { get { return new ViewDynamic() { Dynamic = this.Options.Dynamic, DynamicKey = this.Options.DynamicKey }; } }
+    }
+
+    public class Front_TreeSelect_Options : IFrontDynamicOptions
+    {
+        /// <summary>
+        /// 鍔ㄦ�佹暟鎹�
+        /// </summary>
+        public string DynamicKey { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄姩鎬佹暟鎹�
+        /// </summary>
+        public bool Dynamic { get; set; }
+
+        /// <summary>
+        /// 閫夐」閰嶇疆
+        /// </summary>
+        public Front_Tree_Option[] Options { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 澶氶��
+        /// </summary>
+        public bool Multiple { get; set; }
+
+        /// <summary>
+        /// 鍙竻闄�
+        /// </summary>
+        public bool Clearable { get; set; }
+
+        /// <summary>
+        /// 鍙悳绱�
+        /// </summary>
+        public bool ShowSearch { get; set; }
+
+        /// <summary>
+        /// 鍙嬀閫�
+        /// </summary>
+        public bool TreeCheckable { get; set; }
+
+        /// <summary>
+        /// 鍗犱綅鍐呭
+        /// </summary>
+        public string Placeholder { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadFile.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadFile.cs
new file mode 100644
index 0000000..92c7a8c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadFile.cs
@@ -0,0 +1,86 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 涓婁紶鏂囦欢
+    /// </summary>
+    [FrontType("uploadFile")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(2000)", dtoType: typeof(Front_FileDto[]))]
+    public class Front_UploadFile : Front_Base<Front_UploadFile_Options>
+    {
+    }
+
+    public class Front_UploadFile_Options
+    {
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public string DefaultValue { get; set; }
+
+        /// <summary>
+        /// 澶氶��
+        /// </summary>
+        public bool Multiple { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 鍏佽鎷栨嫿
+        /// </summary>
+        public bool Drag { get; set; }
+
+        /// <summary>
+        /// 涓嬭浇鏂瑰紡
+        /// </summary>
+        public string DownloadWay { get; set; }
+
+        /// <summary>
+        /// 鍔ㄦ�佸嚱鏁�
+        /// </summary>
+        public string DynamicFun { get; set; }
+
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public string Width { get; set; }
+
+        /// <summary>
+        /// 鏈�澶т笂浼犳暟閲�
+        /// </summary>
+        public int Limit { get; set; }
+
+        /// <summary>
+        /// 棰濆鍙傛暟锛圝SON鏍煎紡锛�
+        /// </summary>
+        public string Data { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢name
+        /// </summary>
+        public string FileName { get; set; }
+
+        /// <summary>
+        /// 涓婁紶鍦板潃
+        /// </summary>
+        public string Action { get; set; }
+
+        /// <summary>
+        /// 鍗犱綅鍐呭
+        /// </summary>
+        public string Placeholder { get; set; }
+
+        public object Headers { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadImg.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadImg.cs
new file mode 100644
index 0000000..2401398
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadImg.cs
@@ -0,0 +1,73 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+    /// <summary>
+    /// 涓婁紶鍥剧墖
+    /// </summary>
+    [FrontType("uploadImg")]
+    [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(2000)", dtoType: typeof(Front_FileDto[]))]
+    public class Front_UploadImg : Front_Base<Front_UploadImg_Options>
+    {
+    }
+
+    public class Front_UploadImg_Options
+    {
+        /// <summary>
+        /// 榛樿鍊�
+        /// </summary>
+        public string DefaultValue { get; set; }
+
+        /// <summary>
+        /// 澶氶��
+        /// </summary>
+        public bool Multiple { get; set; }
+
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        public bool Disabled { get; set; }
+
+        /// <summary>
+        /// 闅愯棌
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 瀹藉害
+        /// </summary>
+        public string Width { get; set; }
+
+        /// <summary>
+        /// 鏈�澶т笂浼犳暟閲�
+        /// </summary>
+        public int Limit { get; set; }
+
+        /// <summary>
+        /// 棰濆鍙傛暟锛圝SON鏍煎紡锛�
+        /// </summary>
+        public string Data { get; set; }
+
+        /// <summary>
+        /// 鏂囦欢name
+        /// </summary>
+        public string FileName { get; set; }
+
+        /// <summary>
+        /// 涓婁紶鍦板潃
+        /// </summary>
+        public string Action { get; set; }
+
+        /// <summary>
+        /// 鍗犱綅鍐呭
+        /// </summary>
+        public string Placeholder { get; set; }
+
+        public object Headers { get; set; }
+
+        public string ListType { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFront.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFront.cs
new file mode 100644
index 0000000..e04bd27
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFront.cs
@@ -0,0 +1,32 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front.Interface
+{
+    public interface IFront
+    {
+        /// <summary>
+        /// 鍞竴缁勪欢缂栧彿
+        /// </summary>
+        string Key { get; set; }
+
+        /// <summary>
+        /// 鏍囩
+        /// </summary>
+        string Label { get; set; }
+
+        /// <summary>
+        /// 鎺т欢绫诲瀷
+        /// </summary>
+        string Type { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁灞炴��
+        /// </summary>
+        string Model { get; set; }
+
+        /// <summary>
+        /// 鑾峰彇鍔ㄦ�佹暟鎹�
+        /// </summary>
+        public ViewDynamic Dynamic { get; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamic.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamic.cs
new file mode 100644
index 0000000..947adb6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamic.cs
@@ -0,0 +1,6 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Interface
+{
+    public interface IFrontDynamic
+    {
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamicOptions.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamicOptions.cs
new file mode 100644
index 0000000..0a26c5a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamicOptions.cs
@@ -0,0 +1,15 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Interface
+{
+    public interface IFrontDynamicOptions
+    {
+        /// <summary>
+        /// 鍔ㄦ�佹暟鎹�
+        /// </summary>
+        string DynamicKey { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄姩鎬佹暟鎹�
+        /// </summary>
+        bool Dynamic { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontLayout.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontLayout.cs
new file mode 100644
index 0000000..d23f3e9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontLayout.cs
@@ -0,0 +1,20 @@
+锘縰sing Newtonsoft.Json.Linq;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front.Interface
+{
+    public interface IFrontLayout
+    {
+        /// <summary>
+        /// 甯冨眬瀛愮粍浠惰В鏋�
+        /// </summary>
+        /// <param name="JData"></param>
+        /// <returns></returns>
+        IFront ConvertFront(JObject JData);
+
+        /// <summary>
+        /// 鑾峰彇缁勪欢
+        /// </summary>
+        /// <param name="action"></param>
+        void ReadFront(Action<IFront> action);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Base.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Base.cs
new file mode 100644
index 0000000..1aa4365
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Base.cs
@@ -0,0 +1,35 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+    public class Front_Base<T> : IFront
+    {
+        public string Key { get; set; }
+        public string Label { get; set; }
+        public string Type { get; set; }
+
+        /// <summary>
+        /// 閰嶇疆
+        /// </summary>
+        public T Options { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁瀛楁
+        /// </summary>
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 甯姪淇℃伅
+        /// </summary>
+        public string Help { get; set; }
+
+        /// <summary>
+        /// 鏍¢獙
+        /// </summary>
+        public Front_Rule[] Rules { get; set; }
+
+        public virtual ViewDynamic Dynamic
+        { get { return null; } }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Config.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Config.cs
new file mode 100644
index 0000000..ffb0ae8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Config.cs
@@ -0,0 +1,23 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+    public class Front_Config
+    {
+        public string Layout { get; set; }
+        public Front_Config_Col LabelCol { get; set; }
+        public int LabelWidth { get; set; }
+        public string LabelLayout { get; set; }
+        public Front_Config_Col WrapperCol { get; set; }
+        public bool HideRequiredMark { get; set; }
+        public string CustomStyle { get; set; }
+    }
+
+    public class Front_Config_Col
+    {
+        public int Xs { get; set; }
+        public int Sm { get; set; }
+        public int Md { get; set; }
+        public int Lg { get; set; }
+        public int Xl { get; set; }
+        public int Xxl { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Convert.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Convert.cs
new file mode 100644
index 0000000..0259f0a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Convert.cs
@@ -0,0 +1,13 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+    public class Front_Convert
+    {
+        public Type T { get; set; }
+
+        public string Type { get; set; }
+
+        public List<FrontTypeBindDatabaseAttribute> BindDatabase { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Dynamic.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Dynamic.cs
new file mode 100644
index 0000000..13718e3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Dynamic.cs
@@ -0,0 +1,11 @@
+锘縩amespace Admin.NET.Core.Util.LowCode.Front.Model
+{
+    public class Front_Dynamic
+    {
+        public string Head { get; set; }
+
+        public string Dynamic { get; set; }
+
+        public string DynamicKey { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Model.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Model.cs
new file mode 100644
index 0000000..3f712a1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Model.cs
@@ -0,0 +1,11 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+    public class Front_Model
+    {
+        public List<IFront> List { get; set; }
+
+        public Front_Config Config { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Option.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Option.cs
new file mode 100644
index 0000000..db43403
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Option.cs
@@ -0,0 +1,8 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+    public class Front_Option
+    {
+        public string Value { get; set; }
+        public string Label { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Rule.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Rule.cs
new file mode 100644
index 0000000..66dba2f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Rule.cs
@@ -0,0 +1,20 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+    public class Front_Rule
+    {
+        /// <summary>
+        /// 蹇呭~椤�
+        /// </summary>
+        public bool? Required { get; set; }
+
+        /// <summary>
+        /// 鎻愮ず淇℃伅
+        /// </summary>
+        public string Message { get; set; }
+
+        /// <summary>
+        /// 姝e垯琛ㄨ揪寮�
+        /// </summary>
+        public string Pattern { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Tree_Option.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Tree_Option.cs
new file mode 100644
index 0000000..e3a9577
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Tree_Option.cs
@@ -0,0 +1,7 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+    public class Front_Tree_Option : Front_Option
+    {
+        public List<Front_Tree_Option> Children { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/NotFoundFrontException.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/NotFoundFrontException.cs
new file mode 100644
index 0000000..bc54431
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/NotFoundFrontException.cs
@@ -0,0 +1,9 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+    public class NotFoundFrontException : Exception
+    {
+        public NotFoundFrontException(string message) : base(message)
+        {
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/ViewDynamic.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/ViewDynamic.cs
new file mode 100644
index 0000000..5a3f2d4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/ViewDynamic.cs
@@ -0,0 +1,15 @@
+锘縩amespace Admin.NET.Core.Util.LowCode.Front.Model
+{
+    public class ViewDynamic
+    {
+        /// <summary>
+        /// 鍔ㄦ�佹暟鎹�
+        /// </summary>
+        public string DynamicKey { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄姩鎬佹暟鎹�
+        /// </summary>
+        public bool Dynamic { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/SysFileServiceEx.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/SysFileServiceEx.cs
new file mode 100644
index 0000000..fc7e49e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/SysFileServiceEx.cs
@@ -0,0 +1,26 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using Furion.DatabaseAccessor;
+using Mapster;
+
+namespace Admin.NET.Core.Util.LowCode
+{
+    public static class SysFileServiceEx
+    {
+        public static List<Front_FileDto> GetFiles(this string fileid, IRepository<SysFile> repository)
+        {
+            List<Front_FileDto> data = new List<Front_FileDto>();
+
+            if (string.IsNullOrWhiteSpace(fileid)) return data;
+
+            foreach (var id in fileid.Split(','))
+            {
+                if (long.TryParse(id, out long val))
+                {
+                    data.Add(repository.Where(x => x.Id == val).ProjectToType<Front_FileDto>().FirstOrDefault());
+                }
+            }
+
+            return data;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/MachineUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/MachineUtil.cs
new file mode 100644
index 0000000..8e9ad0e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/MachineUtil.cs
@@ -0,0 +1,261 @@
+锘縰sing Furion.RemoteRequest.Extensions;
+using System.Diagnostics;
+using System.Net;
+using System.Net.NetworkInformation;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鑾峰彇鏈嶅姟鍣ㄤ俊鎭�
+    /// </summary>
+    public static class MachineUtil
+    {
+        /// <summary>
+        /// 鑾峰彇璧勬簮浣跨敤淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        public static dynamic GetMachineUseInfo()
+        {
+            var ramInfo = GetRamInfo();
+            return new
+            {
+                TotalRam = Math.Ceiling(ramInfo.Total / 1024).ToString() + " GB", // 鎬诲唴瀛�
+                RamRate = Math.Ceiling(100 * ramInfo.Used / ramInfo.Total), // 鍐呭瓨浣跨敤鐜�
+                CpuRate = Math.Ceiling(double.Parse(GetCPURate())), // cpu浣跨敤鐜�
+                RunTime = GetRunTime()
+            };
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍩烘湰鍙傛暟
+        /// </summary>
+        /// <returns></returns>
+        public static async Task<dynamic> GetMachineBaseInfo()
+        {
+            var assemblyName = typeof(Furion.App).Assembly.GetName();
+            //var networkInfo = NetworkInfo.GetNetworkInfo();
+            //var (Received, Send) = networkInfo.GetInternetSpeed(1000);
+            return new
+            {
+                WanIp = await GetWanIpFromPCOnline(), // 澶栫綉IP
+                SendAndReceived = "",// "涓婅" + Math.Round(networkInfo.SendLength / 1024.0 / 1024 / 1024, 2) + "GB 涓嬭" + Math.Round(networkInfo.ReceivedLength / 1024.0 / 1024 / 1024, 2) + "GB", // 涓婁笅琛屾祦閲忕粺璁�
+                LanIp = "",//networkInfo.AddressIpv4.ToString(), // 灞�鍩熺綉IP
+                IpMac = "",//networkInfo.Mac, // Mac鍦板潃
+                HostName = Environment.MachineName, // HostName
+                SystemOs = RuntimeInformation.OSDescription, // 绯荤粺鍚嶇О
+                OsArchitecture = Environment.OSVersion.Platform.ToString() + " " + RuntimeInformation.OSArchitecture.ToString(), // 绯荤粺鏋舵瀯
+                ProcessorCount = Environment.ProcessorCount.ToString() + "鏍�", // CPU鏍稿績鏁�
+                FrameworkDescription = RuntimeInformation.FrameworkDescription + " + " + assemblyName.Name.ToString() + assemblyName.Version.ToString(), // .NET鍜孎urion鐗堟湰
+                NetworkSpeed = ""//"涓婅" + Send / 1024 + "kb/s 涓嬭" + Received / 1024 + "kb/s" // 缃戠粶閫熷害
+            };
+        }
+
+        /// <summary>
+        /// 鍔ㄦ�佽幏鍙栫綉缁滀俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        public static dynamic GetMachineNetWorkInfo()
+        {
+            //var networkInfo = NetworkInfo.GetNetworkInfo();
+            //var (Received, Send) = networkInfo.GetInternetSpeed(1000);
+            ////int Send, Received;
+            ////while (true)
+            ////{
+            ////    var tmp = networkInfo.GetInternetSpeed(1000);
+            ////    if (tmp.Send > 0 || tmp.Received > 0)
+            ////    {
+            ////        Send = tmp.Send;
+            ////        Received = tmp.Received;
+            ////        break;
+            ////    }
+            ////    Thread.Sleep(500);
+            ////}
+
+            return new
+            {
+                SendAndReceived = "",// "涓婅" + Math.Round(networkInfo.SendLength / 1024.0 / 1024 / 1024, 2) + "GB 涓嬭" + Math.Round(networkInfo.ReceivedLength / 1024.0 / 1024 / 1024, 2) + "GB", // 涓婁笅琛屾祦閲忕粺璁�
+                NetworkSpeed = ""//"涓婅" + Send / 1024 + "kb/s 涓嬭" + Received / 1024 + "kb/s" // 缃戠粶閫熷害
+            };
+        }
+
+        /// <summary>
+        /// 鏄惁Linux
+        /// </summary>
+        /// <returns></returns>
+        private static bool IsUnix()
+        {
+            return RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux);
+        }
+
+        /// <summary>
+        /// 鑾峰彇CPU浣跨敤鐜�
+        /// </summary>
+        /// <returns></returns>
+        private static string GetCPURate()
+        {
+            string cpuRate;
+            if (IsUnix())
+            {
+                var output = ShellUtil.Bash("top -b -n1 | grep \"Cpu(s)\" | awk '{print $2 + $4}'");
+                cpuRate = output.Trim();
+            }
+            else
+            {
+                var output = ShellUtil.Cmd("wmic", "cpu get LoadPercentage");
+                cpuRate = output.Replace("LoadPercentage", string.Empty).Trim();
+            }
+            return cpuRate;
+        }
+
+        /// <summary>
+        /// 鑾峰彇绯荤粺杩愯鏃堕棿
+        /// </summary>
+        /// <returns></returns>
+        private static string GetRunTime()
+        {
+            return FormatTime((long)(DateTimeOffset.Now - Process.GetCurrentProcess().StartTime).TotalMilliseconds);
+            //return DateTimeUtil.FormatTime(Environment.TickCount);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍐呭瓨淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        private static dynamic GetRamInfo()
+        {
+            if (IsUnix())
+            {
+                var output = ShellUtil.Bash("free -m");
+                var lines = output.Split("\n");
+                var memory = lines[1].Split(" ", StringSplitOptions.RemoveEmptyEntries);
+                return new
+                {
+                    Total = double.Parse(memory[1]),
+                    Used = double.Parse(memory[2]),
+                    Free = double.Parse(memory[3])
+                };
+            }
+            else
+            {
+                var output = ShellUtil.Cmd("wmic", "OS get FreePhysicalMemory,TotalVisibleMemorySize /Value");
+                var lines = output.Trim().Split("\n");
+                var freeMemoryParts = lines[0].Split("=", StringSplitOptions.RemoveEmptyEntries);
+                var totalMemoryParts = lines[1].Split("=", StringSplitOptions.RemoveEmptyEntries);
+                var total = Math.Round(double.Parse(totalMemoryParts[1]) / 1024, 2);
+                var free = Math.Round(double.Parse(freeMemoryParts[1]) / 1024, 2);
+                return new
+                {
+                    Total = total,
+                    Free = free,
+                    Used = total - free
+                };
+            }
+        }
+
+        /// <summary>
+        /// 姣杞ぉ鏃跺垎绉�
+        /// </summary>
+        /// <param name="ms"></param>
+        /// <returns></returns>
+        private static string FormatTime(long ms)
+        {
+            int ss = 1000;
+            int mi = ss * 60;
+            int hh = mi * 60;
+            int dd = hh * 24;
+
+            long day = ms / dd;
+            long hour = (ms - day * dd) / hh;
+            long minute = (ms - day * dd - hour * hh) / mi;
+            long second = (ms - day * dd - hour * hh - minute * mi) / ss;
+            //long milliSecond = ms - day * dd - hour * hh - minute * mi - second * ss;
+
+            string sDay = day < 10 ? "0" + day : "" + day; //澶�
+            string sHour = hour < 10 ? "0" + hour : "" + hour;//灏忔椂
+            string sMinute = minute < 10 ? "0" + minute : "" + minute;//鍒嗛挓
+            string sSecond = second < 10 ? "0" + second : "" + second;//绉�
+            //string sMilliSecond = milliSecond < 10 ? "0" + milliSecond : "" + milliSecond;//姣
+            //sMilliSecond = milliSecond < 100 ? "0" + sMilliSecond : "" + sMilliSecond;
+            return string.Format("{0} 澶� {1} 灏忔椂 {2} 鍒� {3} 绉�", sDay, sHour, sMinute, sSecond);
+        }
+
+        /// <summary>
+        /// 鑾峰彇澶栫綉IP鍜屽湴鐞嗕綅缃�
+        /// </summary>
+        /// <returns></returns>
+        private static async Task<string> GetWanIpFromPCOnline()
+        {
+            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
+
+            var url = "http://whois.pconline.com.cn/ipJson.jsp";
+            var stream = await url.GetAsStreamAsync();
+            var streamReader = new StreamReader(stream, Encoding.GetEncoding("GBK"));
+            var html = streamReader.ReadToEnd();
+            var tmp = html[(html.IndexOf("({") + 2)..].Split(",");
+            var ipAddr = tmp[0].Split(":")[1] + "銆�" + tmp[7].Split(":")[1] + "銆�";
+            return ipAddr.Replace("\"", "");
+        }
+    }
+
+    /// <summary>
+    ///
+    /// </summary>
+    public class NetworkInfo
+    {
+        private readonly NetworkInterface _instance;
+        public NetworkInterface NetworkInterface => _instance;
+        private readonly Lazy<IPInterfaceStatistics> _statistics;
+        private readonly Lazy<IPAddress> _addressIpv4;
+
+        public IPAddress AddressIpv4 => _addressIpv4.Value; // IPv4 鍦板潃
+        public string Mac => _instance?.GetPhysicalAddress().ToString(); // Mac鍦板潃
+        public string Id => _instance?.Id; // 缃戠粶閫傞厤鍣ㄧ殑鏍囪瘑绗�
+        public long ReceivedLength => _statistics.Value.BytesReceived; // 缃戠粶涓嬭浇鎬婚噺
+        public long SendLength => _statistics.Value.BytesSent; // 缃戠粶涓婁紶鎬婚噺
+
+        private NetworkInfo(NetworkInterface network)
+        {
+            _instance = network;
+            _statistics = new Lazy<IPInterfaceStatistics>(() => _instance?.GetIPStatistics());
+            //_Ipv4Statistics = new Lazy<IPv4InterfaceStatistics>(() => _instance.GetIPv4Statistics());
+            //_AddressIpv6 = new Lazy<IPAddress>(() => _instance.GetIPProperties().UnicastAddresses
+            // .FirstOrDefault(x => x.IPv4Mask.ToString().Equals("0.0.0.0")).Address);
+            _addressIpv4 = new Lazy<IPAddress>(() => _instance?.GetIPProperties().UnicastAddresses
+            .FirstOrDefault(x => !x.IPv4Mask.ToString().Equals("0.0.0.0")).Address);
+        }
+
+        /// <summary>
+        /// 褰撳墠姝e湪鑱旂綉鐨勭綉鍗′俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        public static NetworkInfo GetNetworkInfo()
+        {
+            if (Environment.OSVersion.Platform == PlatformID.Unix)
+                return new NetworkInfo(NetworkInterface.GetAllNetworkInterfaces()
+                                  .FirstOrDefault(x => x.NetworkInterfaceType != NetworkInterfaceType.Loopback
+                                  && x.NetworkInterfaceType != NetworkInterfaceType.Ethernet));
+
+            return new NetworkInfo(NetworkInterface.GetAllNetworkInterfaces()
+                                              .FirstOrDefault(x => x.OperationalStatus == OperationalStatus.Up
+                                              && x.NetworkInterfaceType != NetworkInterfaceType.Loopback
+                                              && x.NetworkInterfaceType != NetworkInterfaceType.Ethernet));
+        }
+
+        /// <summary>
+        /// 鑾峰彇褰撳墠缃戝崱鐨勭綉缁滈�熷害
+        /// </summary>
+        /// <param name="Milliseconds"></param>
+        /// <returns></returns>
+        public (int Received, int Send) GetInternetSpeed(int Milliseconds)
+        {
+            var newNetwork = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault(x => x.Id == Id).GetIPStatistics();
+
+            long rec = ReceivedLength;
+            long send = SendLength;
+            Thread.Sleep(Milliseconds);
+            return ((int)(newNetwork.BytesReceived - rec), (int)(newNetwork.BytesSent - send));
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PageInputOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PageInputOrder.cs
new file mode 100644
index 0000000..b3760c8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PageInputOrder.cs
@@ -0,0 +1,69 @@
+using Furion.FriendlyException;
+using Mapster;
+using MapsterMapper;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍒楄〃閫氱敤鎺掑簭
+    /// </summary>
+    public static class PageInputOrder
+    {
+        /// <summary>
+        /// 鎺掑簭鏂瑰紡(榛樿闄嶅簭)
+        /// </summary>
+        /// <param name="pageInput"> </param>
+        /// <param name="defualtSortField"> 榛樿鎺掑簭瀛楁 </param>
+        /// <param name="descSort"> 鏄惁闄嶅簭 </param>
+        /// <returns> </returns>
+        public static string OrderBuilder<T>(T pageInput, string defualtSortField = "Id", bool descSort = true)
+        {
+            string orderStr;
+            // 绾﹀畾榛樿姣忓紶琛ㄩ兘鏈塈d鎺掑簭
+            if (!string.IsNullOrWhiteSpace(defualtSortField))
+                orderStr = descSort ? defualtSortField + " Desc" : defualtSortField + " Asc";
+            else
+                throw Oops.Oh("鎺掑簭瀛楁涓嶈兘涓虹┖锛�");
+
+            TypeAdapterConfig config = new();
+            config.ForType<T, PageInputBase>().IgnoreNullValues(true);
+            Mapper mapper = new(config); // 鍔″繀灏唌apper璁句负鍗曞疄渚�
+            PageInputBase nowPagerInput = mapper.Map<PageInputBase>(pageInput);
+            // 鎺掑簭鏄惁鍙敤-鎺掑簭瀛楁涓洪潪绌烘墠鍚敤鎺掑簭
+            if (!string.IsNullOrEmpty(nowPagerInput.SortField))
+            {
+                orderStr = $"{nowPagerInput.SortField} {(nowPagerInput.SortOrder == nowPagerInput.DescStr ? "Desc" : "Asc")}";
+            }
+            return orderStr;
+        }
+
+
+        /// <summary>
+        /// 涓嶅垎椤垫帓搴忔柟寮�(榛樿闄嶅簭)
+        /// </summary>
+        /// <param name="pageInput"> </param>
+        /// <param name="defualtSortField"> 榛樿鎺掑簭瀛楁 </param>
+        /// <param name="descSort"> 鏄惁闄嶅簭 </param>
+        /// <returns> </returns>
+        public static string OrderNonPageBuilder<T>(T pageInput, string defualtSortField = "Id", bool descSort = true)
+        {
+            string orderStr;
+            // 绾﹀畾榛樿姣忓紶琛ㄩ兘鏈塈d鎺掑簭
+            if (!string.IsNullOrWhiteSpace(defualtSortField))
+                orderStr = descSort ? defualtSortField + " Desc" : defualtSortField + " Asc";
+            else
+                throw Oops.Oh("鎺掑簭瀛楁涓嶈兘涓虹┖锛�");
+
+            TypeAdapterConfig config = new();
+            config.ForType<T, PageInputBase>().IgnoreNullValues(true);
+            Mapper mapper = new(config); // 鍔″繀灏唌apper璁句负鍗曞疄渚�
+            PageInputNonPageBase nowPagerInput = mapper.Map<PageInputNonPageBase>(pageInput);
+            // 鎺掑簭鏄惁鍙敤-鎺掑簭瀛楁涓洪潪绌烘墠鍚敤鎺掑簭
+            if (!string.IsNullOrEmpty(nowPagerInput.SortField))
+            {
+                orderStr = $"{nowPagerInput.SortField} {(nowPagerInput.SortOrder == nowPagerInput.DescStr ? "Desc" : "Asc")}";
+            }
+            return orderStr;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PagedUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PagedUtil.cs
new file mode 100644
index 0000000..6560cf1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PagedUtil.cs
@@ -0,0 +1,88 @@
+锘縰sing Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+    [SuppressSniffer]
+    public static class PagedUtil
+    {
+        /// <summary>
+        /// 鍒嗛〉鎷撳睍
+        /// </summary>
+        /// <typeparam name="TEntity"></typeparam>
+        /// <param name="entities"></param>
+        /// <param name="pageIndex">椤电爜锛屽繀椤诲ぇ浜�0</param>
+        /// <param name="pageSize"></param>
+        /// <returns></returns>
+        public static PageResult<TEntity> ToADPagedList<TEntity>(this IQueryable<TEntity> entities, int pageIndex = 1, int pageSize = 20)
+        {
+            if (pageIndex <= 0) throw new InvalidOperationException($"{nameof(pageIndex)} 蹇呴』鏄ぇ浜�0鐨勬鏁存暟銆�");
+
+            var totalCount = entities.Count();
+            var items = entities.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
+            var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
+
+            return new PageResult<TEntity>
+            {
+                PageNo = pageIndex,
+                PageSize = pageSize,
+                Rows = items,
+                TotalRows = totalCount,
+                TotalPage = totalPages
+            };
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鎷撳睍
+        /// </summary>
+        /// <typeparam name="TEntity"></typeparam>
+        /// <param name="entities"></param>
+        /// <param name="pageIndex">椤电爜锛屽繀椤诲ぇ浜�0</param>
+        /// <param name="pageSize"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public static async Task<PageResult<TEntity>> ToADPagedListAsync<TEntity>(this IQueryable<TEntity> entities, int pageIndex = 1, int pageSize = 20, CancellationToken cancellationToken = default)
+        {
+            if (pageIndex <= 0) throw new InvalidOperationException($"{nameof(pageIndex)} 蹇呴』鏄ぇ浜�0鐨勬鏁存暟銆�");
+
+            var totalCount = await entities.CountAsync(cancellationToken);
+            var items = await entities.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync(cancellationToken);
+            var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
+
+            return new PageResult<TEntity>
+            {
+                PageNo = pageIndex,
+                PageSize = pageSize,
+                Rows = items,
+                TotalRows = totalCount,
+                TotalPage = totalPages
+            };
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鎷撳睍
+        /// </summary>
+        /// <typeparam name="TEntity"></typeparam>
+        /// <param name="entities"></param>
+        /// <param name="pageIndex">椤电爜锛屽繀椤诲ぇ浜�0</param>
+        /// <param name="pageSize"></param>
+        /// <returns></returns>
+        public static PageResult<TEntity> ToADPagedList<TEntity>(this IEnumerable<TEntity> entities, int pageIndex = 1, int pageSize = 20)
+        {
+            if (pageIndex <= 0) throw new InvalidOperationException($"{nameof(pageIndex)} 蹇呴』鏄ぇ浜�0鐨勬鏁存暟銆�");
+
+            var totalCount = entities.Count();
+            var items = entities.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
+            var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
+
+            return new PageResult<TEntity>
+            {
+                PageNo = pageIndex,
+                PageSize = pageSize,
+                Rows = items,
+                TotalRows = totalCount,
+                TotalPage = totalPages
+            };
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ReflectionUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ReflectionUtil.cs
new file mode 100644
index 0000000..8fe21ba
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ReflectionUtil.cs
@@ -0,0 +1,40 @@
+锘縰sing System.Reflection;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鍙嶅皠宸ュ叿
+    /// </summary>
+    public static class ReflectionUtil
+    {
+        /// <summary>
+        /// 鑾峰彇瀛楁鐗规��
+        /// </summary>
+        /// <param name="field"></param>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static T GetDescriptionValue<T>(this FieldInfo field) where T : Attribute
+        {
+            // 鑾峰彇瀛楁鐨勬寚瀹氱壒鎬э紝涓嶅寘鍚户鎵夸腑鐨勭壒鎬�
+            object[] customAttributes = field.GetCustomAttributes(typeof(T), false);
+
+            // 濡傛灉娌℃湁鏁版嵁杩斿洖null
+            return customAttributes.Length > 0 ? (T)customAttributes[0] : null;
+        }
+
+        /// <summary>
+        /// 鑾峰彇绫诲瀷鐨勭壒鎬�
+        /// </summary>
+        /// <param name="field"></param>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static T GetDescriptionValue<T>(this Type field) where T : Attribute
+        {
+            // 鑾峰彇瀛楁鐨勬寚瀹氱壒鎬э紝涓嶅寘鍚户鎵夸腑鐨勭壒鎬�
+            object[] customAttributes = field.GetCustomAttributes(typeof(T), false);
+
+            // 濡傛灉娌℃湁鏁版嵁杩斿洖null
+            return customAttributes.Length > 0 ? (T)customAttributes[0] : null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ShellUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ShellUtil.cs
new file mode 100644
index 0000000..3aecadb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ShellUtil.cs
@@ -0,0 +1,58 @@
+锘縰sing System.Diagnostics;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 绯荤粺Shell鍛戒护
+    /// </summary>
+    public class ShellUtil
+    {
+        /// <summary>
+        /// Bash鍛戒护
+        /// </summary>
+        /// <param name="command"></param>
+        /// <returns></returns>
+        public static string Bash(string command)
+        {
+            var escapedArgs = command.Replace("\"", "\\\"");
+            var process = new Process()
+            {
+                StartInfo = new ProcessStartInfo
+                {
+                    FileName = "/bin/bash",
+                    Arguments = $"-c \"{escapedArgs}\"",
+                    RedirectStandardOutput = true,
+                    UseShellExecute = false,
+                    CreateNoWindow = true,
+                }
+            };
+            process.Start();
+            string result = process.StandardOutput.ReadToEnd();
+            process.WaitForExit();
+            process.Dispose();
+            return result;
+        }
+
+        /// <summary>
+        /// cmd鍛戒护
+        /// </summary>
+        /// <param name="fileName"></param>
+        /// <param name="args"></param>
+        /// <returns></returns>
+        public static string Cmd(string fileName, string args)
+        {
+            string output = string.Empty;
+            var info = new ProcessStartInfo
+            {
+                FileName = fileName,
+                Arguments = args,
+                RedirectStandardOutput = true
+            };
+            using (var process = Process.Start(info))
+            {
+                output = process.StandardOutput.ReadToEnd();
+            }
+            return output;
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/StringUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/StringUtil.cs
new file mode 100644
index 0000000..cb98f35
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/StringUtil.cs
@@ -0,0 +1,83 @@
+锘�#nullable enable
+
+using System.Text;
+using System.Text.RegularExpressions;
+
+namespace Admin.NET.Core
+{
+    public static class StringUtil
+    {
+        /// <summary>
+        /// 鑾峰彇涓嬪垝绾胯〃杈惧紡
+        /// </summary>
+        /// <param name="camel"></param>
+        /// <returns></returns>
+        public static string ToUnderLine(this string camel)
+        {
+            return Regex.Replace(camel, "([A-Z])", "_$1").ToLower().TrimStart('_');           
+        }
+
+
+        /// <summary>
+        /// 鑾峰彇涓嬪垝绾胯〃杈惧紡
+        /// </summary>
+        /// <param name="camel"></param>
+        /// <returns></returns>
+        public static string ToUnderLine(this string camel, char trimChar)
+        {
+            return Regex.Replace(camel, "([A-Z])", trimChar + "$1").ToLower().TrimStart(trimChar);
+        }
+
+
+        /// <summary>
+        /// 鑾峰彇椹煎嘲琛ㄨ揪寮�
+        /// </summary>
+        /// <param name="camel"></param>
+        /// <returns></returns>
+        public static string ToCamel(this string str)
+        {
+            if(string.IsNullOrEmpty(str)) return "";
+            return str[..1].ToLower() + str[1..];
+        }
+
+
+        /// <summary>
+        /// 灏嗙被鍨嬭繘琛岃浆鎹�
+        /// </summary>
+        /// <param name="dataType"></param>
+        /// <returns></returns>
+        public static string ParseTrueType(string dataType) 
+        {
+            if(!dataType.StartsWith("System.Nullable")) return dataType;
+
+            return new Regex(@"(?i)(?<=\[)(.*)(?=\])").Match(dataType).Value;    
+        }
+
+        /// <summary>
+        /// 灏嗙被鍨嬭繘琛岃浆鎹�
+        /// </summary>
+        /// <param name="dataType"></param>
+        /// <returns></returns>
+        public static string ParseTrueType2(string dataType)
+        {
+            if (!dataType.StartsWith("System.Nullable")) return dataType;
+
+            var str = new Regex(@"(?i)(?<=\[\[)(.*)(?=\]\])").Match(dataType).Value;
+
+            var args = str.Split(',');
+
+            return args.Length > 0 ? args[0] : "";
+        }
+
+        /// <summary>
+        /// 鍒嗗壊瀛楃
+        /// </summary>
+        /// <returns></returns>
+        public static string SplitChar() 
+        {
+            return new ASCIIEncoding().GetString(new byte[] { 3 });
+        }
+
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TreeBuildUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TreeBuildUtil.cs
new file mode 100644
index 0000000..594c6a3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TreeBuildUtil.cs
@@ -0,0 +1,75 @@
+using System.Collections;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 鏍戝熀绫�
+    /// </summary>
+    public interface ITreeNode
+    {
+        /// <summary>
+        /// 鑾峰彇鑺傜偣id
+        /// </summary>
+        /// <returns></returns>
+        long GetId();
+
+        /// <summary>
+        /// 鑾峰彇鑺傜偣鐖秈d
+        /// </summary>
+        /// <returns></returns>
+        long GetPid();
+
+        /// <summary>
+        /// 璁剧疆Children
+        /// </summary>
+        /// <param name="children"></param>
+        void SetChildren(IList children);
+    }
+
+    /// <summary>
+    /// 閫掑綊宸ュ叿绫伙紝鐢ㄤ簬閬嶅巻鏈夌埗瀛愬叧绯荤殑鑺傜偣锛屼緥濡傝彍鍗曟爲锛屽瓧鍏告爲绛夌瓑
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    public class TreeBuildUtil<T> where T : ITreeNode
+    {
+        /// <summary>
+        /// 椤剁骇鑺傜偣鐨勭埗鑺傜偣Id(榛樿0)
+        /// </summary>
+        private long _rootParentId = 0L;
+
+        /// <summary>
+        /// 璁剧疆鏍硅妭鐐规柟娉�
+        /// 鏌ヨ鏁版嵁鍙互璁剧疆鍏朵粬鑺傜偣涓烘牴鑺傜偣锛岄伩鍏嶇埗鑺傜偣姘歌繙鏄�0锛屾煡璇笉鍒版暟鎹殑闂
+        /// </summary>
+        public void SetRootParentId(long rootParentId)
+        {
+            _rootParentId = rootParentId;
+        }
+
+        /// <summary>
+        /// 鏋勯�犳爲鑺傜偣
+        /// </summary>
+        /// <param name="nodes"></param>
+        /// <returns></returns>
+        public List<T> Build(List<T> nodes)
+        {
+            var result = nodes.Where(i => i.GetPid() == _rootParentId).ToList();
+            result.ForEach(u => BuildChildNodes(nodes, u));
+
+            return result;
+        }
+
+        /// <summary>
+        /// 鏋勯�犲瓙鑺傜偣闆嗗悎
+        /// </summary>
+        /// <param name="totalNodes"></param>
+        /// <param name="node"></param>
+        /// <param name="childNodeList"></param>
+        private void BuildChildNodes(List<T> totalNodes, T node)
+        {
+            var nodeSubList = totalNodes.Where(i => i.GetPid() == node.GetId()).ToList();
+            nodeSubList.ForEach(u => BuildChildNodes(totalNodes, u));
+            node.SetChildren(nodeSubList);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TypeUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TypeUtil.cs
new file mode 100644
index 0000000..5a05030
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TypeUtil.cs
@@ -0,0 +1,211 @@
+锘�#nullable enable
+
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata;
+using System.ComponentModel;
+using System.Reflection;
+
+namespace Admin.NET.Core
+{
+    public static class TypeUtil
+    {
+        /// <summary>
+        /// 鑾峰彇绫诲瀷
+        /// </summary>
+        /// <param name="typeName"></param>
+        /// <returns></returns>
+        public static Type? GetType(string typeName)
+        {
+            return Type.GetType(typeName);
+        }
+
+        /// <summary>
+        /// 鏍规嵁瀹炰綋鑾峰彇鍏跺鑸被鍨�
+        /// </summary>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        public static List<TableColumn> GetNavigationColumns(IEntityType? type)
+        {
+            if (type == null) { return new(); }
+
+            var navigationColumns = type.ClrType.GetProperties()
+                .Select(propertyInfo => type?.FindNavigation(propertyInfo.Name))
+                .Where(p => p != null)
+                .Select(p =>
+                {
+                    var pInfo = p?.PropertyInfo;
+                    var pType = pInfo?.PropertyType;
+                    string dataType = pType?.ToString() ?? "";
+                    return new TableColumn
+                    {
+                        IsRequired = FieldUtil.IsRequired(p??null!, dataType),
+                        ColumnName = p?.Name ?? "",
+                        ColumnKey = false.ToString(),
+                        DataType = dataType,
+                        NetType = CodeGenUtil.ConvertDataType(dataType),
+                        ColumnComment = p?.GetComment() ?? "",
+                        FieldType = FieldType.NAVIGATION.GetDescription()
+                    };
+                }).ToList();
+            return navigationColumns ?? null!;
+        }
+
+        /// <summary>
+        /// 鏍规嵁瀹炰綋鑾峰彇鍏舵寚绀虹被鍨�
+        /// </summary>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        public static List<TableColumn> GetUniqueColumns(IEntityType? type)
+        {
+            if (type == null) { return new(); }
+
+            var propInfos = new List<PropertyInfo>();
+
+            type.ClrType.GetProperties().ToList().ForEach(x => x.GetCustomAttributes(false).ToList().ForEach(y =>
+            {
+                if ("Admin.NET.Core.UniqueAttribute".Equals(y.ToString()))
+                {
+                    propInfos.Add(x);
+                }
+            }));
+
+            var uniqueColumns = propInfos.Select(p => new TableColumn
+            {
+                IsRequired = false,
+                ColumnName = p.Name,
+                ColumnKey = false.ToString(),
+                DataType = p.PropertyType.ToString(),
+                NetType = CodeGenUtil.ConvertDataType(p.PropertyType.ToString()),
+                ColumnComment = p.GetCustomAttribute<CommentAttribute>()?.Comment ?? "",
+                FieldType = FieldType.NO_MAP.GetDescription()
+            }).ToList();
+
+            return uniqueColumns ?? null!;
+        }
+
+
+        /// <summary>
+        /// 鏍规嵁瀹炰綋鑾峰彇鍏舵寚绀虹被鍨�
+        /// </summary>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        public static List<TableColumn> GetNoMapColumns(IEntityType? type)
+        {
+            if (type == null) { return new(); }
+
+            var propInfos = new List<PropertyInfo>();
+
+            type.ClrType.GetProperties().ToList().ForEach(x => x.GetCustomAttributes(false).ToList().ForEach(y =>
+            {
+                if ("System.ComponentModel.DataAnnotations.Schema.NotMappedAttribute".Equals(y.ToString()))
+                {
+                    propInfos.Add(x);
+                }
+            }));
+
+            var noMapColumns = propInfos.Select(p => new TableColumn
+            {
+                IsRequired = false,
+                ColumnName = p.Name,
+                ColumnKey = false.ToString(),
+                DataType = p.PropertyType.ToString(),
+                NetType = CodeGenUtil.ConvertDataType(p.PropertyType.ToString()),
+                ColumnComment = p.GetCustomAttribute<CommentAttribute>()?.Comment ?? "",
+                FieldType = FieldType.NO_MAP.GetDescription()
+            }).ToList();
+
+            return noMapColumns ?? null!;
+        }
+
+
+        /// <summary>
+        /// 鏍规嵁瀹炰綋鑾峰彇鍏舵爣閲忕被鍨�
+        /// </summary>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        public static List<TableColumn> GetScalarColumns(IEntityType? type)
+        {
+            if (type == null) { return new(); }
+
+            var propInfos = new List<PropertyInfo>();
+
+            type.ClrType.GetProperties().ToList().ForEach(x => x.GetCustomAttributes(false).ToList().ForEach(y =>
+            {
+                if ("System.ComponentModel.DataAnnotations.Schema.NotMappedAttribute".Equals(y.ToString()))
+                {
+                    propInfos.Add(x);
+                }
+            }));
+
+            var scalarColumns = type.ClrType.GetProperties()
+                .Select(propertyInfo => type.FindProperty(propertyInfo.Name))
+                .Where(p => p != null)
+                .Select(p =>
+                {
+                    var pInfo = p?.PropertyInfo;
+                    var pType = pInfo?.PropertyType;
+                    string dataType = pType?.ToString() ?? "";
+                    return new TableColumn
+                    {
+
+
+                        IsRequired = FieldUtil.IsRequired(p??null!, dataType),
+                        ColumnName = p?.Name??"",
+                        ColumnKey = ("Id".Equals(p?.Name)).ToString(),
+                        DataType = dataType,
+                        NetType = CodeGenUtil.ConvertDataType(dataType),
+                        ColumnComment = p?.GetComment() ?? "",
+                        FieldType = FieldType.SCALAR.GetDescription()
+                    };
+                }).ToList();
+
+            return scalarColumns ?? null!;
+        }
+
+
+        /// <summary>
+        /// 鏍规嵁绫诲悕鑾峰彇灞炴��
+        /// </summary>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        public static TableInfo? GetTableInfo(IEntityType? type)
+        {
+            if (type == null) return null;
+            return new TableInfo
+            {
+                TableName = type?.GetDefaultTableName(),
+                TableComment = type?.GetComment()
+            };
+        }
+
+
+        /// <summary>
+        /// 鑾峰彇鏋氫妇绫诲瀷鐨勫娉ㄤ俊鎭�
+        /// </summary>
+        /// <returns></returns>
+        public static string GetColumnRemark(this string typeName)
+        {
+            Type? type = TypeUtil.GetType(typeName);
+            if (type == null) return string.Empty;
+            if (!type.IsEnum) return string.Empty;
+            var remark = string.Empty;
+            foreach (var field in type.GetFields())
+            {
+                if (field.IsDefined(typeof(DescriptionAttribute), true))
+                {
+                    var descr = ((DescriptionAttribute?)field.GetCustomAttribute(typeof(DescriptionAttribute), true))?.Description ?? string.Empty;
+                    if (!string.IsNullOrEmpty(descr)) remark += descr + ",";
+                }
+            }
+            if (remark.EndsWith(",")) remark = remark[..^1];
+            return remark;
+        }
+
+
+
+
+
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnInputBase.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnInputBase.cs
new file mode 100644
index 0000000..884f8e8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnInputBase.cs
@@ -0,0 +1,116 @@
+锘縩amespace Admin.NET.Core
+{
+    /// <summary>
+    /// 閫氱敤杈撳叆鎵╁睍鍙傛暟锛堝甫鏉冮檺锛�
+    /// </summary>
+    public interface IXnInputBase
+    {
+        /// <summary>
+        /// 鎺堟潈鑿滃崟
+        /// </summary>
+        public List<long> GrantMenuIdList { get; set; }
+
+        /// <summary>
+        /// 鎺堟潈瑙掕壊
+        /// </summary>
+        public List<long> GrantRoleIdList { get; set; }
+
+        /// <summary>
+        /// 鎺堟潈鏁版嵁
+        /// </summary>
+        public List<long> GrantOrgIdList { get; set; }
+    }
+
+    /// <summary>
+    /// 閫氱敤鍒嗛〉杈撳叆鍙傛暟
+    /// </summary>
+    public class PageInputBase
+    {
+        /// <summary>
+        /// 鎼滅储鍊�
+        /// </summary>
+        public virtual string SearchValue { get; set; }
+
+        /// <summary>
+        /// 褰撳墠椤电爜
+        /// </summary>
+        public virtual int PageNo { get; set; } = 1;
+
+        /// <summary>
+        /// 椤电爜瀹归噺
+        /// </summary>
+        public virtual int PageSize { get; set; } = 20;
+
+        /// <summary>
+        /// 鎼滅储寮�濮嬫椂闂�
+        /// </summary>
+        public virtual string SearchBeginTime { get; set; }
+
+        /// <summary>
+        /// 鎼滅储缁撴潫鏃堕棿
+        /// </summary>
+        public virtual string SearchEndTime { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭瀛楁
+        /// </summary>
+        public virtual string SortField { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭鏂规硶,榛樿鍗囧簭,鍚﹀垯闄嶅簭(閰嶅悎antd鍓嶇,绾﹀畾鍙傛暟涓� Ascend,Dscend)
+        /// </summary>
+        public virtual string SortOrder { get; set; }
+
+        /// <summary>
+        /// 闄嶅簭鎺掑簭(涓嶈闂垜涓轰粈涔堟槸descend涓嶆槸desc锛屽墠绔害瀹氬弬鏁板氨鏄繖鏍�)
+        /// </summary>
+        public virtual string DescStr { get; set; } = "descend";
+
+        /// <summary>
+        /// 澶嶆潅鏌ヨ鏉′欢
+        /// </summary>
+        public virtual List<Condition> SearchParameters { get; set; } = new();
+    }
+
+    /// <summary>
+    /// 閫氱敤涓嶅垎椤佃緭鍏ュ弬鏁�
+    /// </summary>
+    public class PageInputNonPageBase
+    {
+        /// <summary>
+        /// 鎼滅储鍊�
+        /// </summary>
+        public virtual string SearchValue { get; set; }
+
+
+        /// <summary>
+        /// 鎼滅储寮�濮嬫椂闂�
+        /// </summary>
+        public virtual string SearchBeginTime { get; set; }
+
+        /// <summary>
+        /// 鎼滅储缁撴潫鏃堕棿
+        /// </summary>
+        public virtual string SearchEndTime { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭瀛楁
+        /// </summary>
+        public virtual string SortField { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭鏂规硶,榛樿鍗囧簭,鍚﹀垯闄嶅簭(閰嶅悎antd鍓嶇,绾﹀畾鍙傛暟涓� Ascend,Dscend)
+        /// </summary>
+        public virtual string SortOrder { get; set; }
+
+        /// <summary>
+        /// 闄嶅簭鎺掑簭(涓嶈闂垜涓轰粈涔堟槸descend涓嶆槸desc锛屽墠绔害瀹氬弬鏁板氨鏄繖鏍�)
+        /// </summary>
+        public virtual string DescStr { get; set; } = "descend";
+
+        /// <summary>
+        /// 澶嶆潅鏌ヨ鏉′欢
+        /// </summary>
+        public virtual List<Condition> SearchParameters { get; set; } = new();
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnPageResult.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnPageResult.cs
new file mode 100644
index 0000000..945a390
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnPageResult.cs
@@ -0,0 +1,11 @@
+锘縩amespace Admin.NET.Core
+{
+    public class PageResult<T>
+    {
+        public int PageNo { get; set; }
+        public int PageSize { get; set; }
+        public int TotalPage { get; set; }
+        public int TotalRows { get; set; }
+        public ICollection<T> Rows { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnRestfulResultProvider.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnRestfulResultProvider.cs
new file mode 100644
index 0000000..3ca4204
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnRestfulResultProvider.cs
@@ -0,0 +1,167 @@
+锘縰sing Furion;
+using Furion.DataValidation;
+using Furion.FriendlyException;
+using Furion.JsonSerialization;
+using Furion.UnifyResult;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.Filters;
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瑙勮寖鍖朢ESTful椋庢牸杩斿洖鍊�
+    /// </summary>
+    [UnifyModel(typeof(XnRestfulResult<>))]
+    public class XnRestfulResultProvider : IUnifyResultProvider
+    {
+        /// <summary>
+        /// 寮傚父杩斿洖鍊�
+        /// </summary>
+        /// <param name="context"></param>
+        /// <param name="metadata"></param>
+        /// <returns></returns>
+        public IActionResult OnException(ExceptionContext context, ExceptionMetadata metadata)
+        {
+            return new JsonResult(RESTfulResult(metadata.StatusCode, errors: metadata.Errors));
+        }
+
+        /// <summary>
+        /// 鎴愬姛杩斿洖鍊�
+        /// </summary>
+        /// <param name="context"></param>
+        /// <param name="data"></param>
+        /// <returns></returns>
+        public IActionResult OnSucceeded(ActionExecutedContext context, object data)
+        {
+            return new JsonResult(RESTfulResult(StatusCodes.Status200OK, true, data));
+        }
+
+
+
+        /// <summary>
+        /// 楠岃瘉澶辫触杩斿洖鍊�
+        /// </summary>
+        /// <param name="context"></param>
+        /// <param name="metadata"></param>
+        /// <returns></returns>
+        public IActionResult OnValidateFailed(ActionExecutingContext context, ValidationMetadata metadata)
+        {
+            return new JsonResult(RESTfulResult(metadata.StatusCode ?? StatusCodes.Status400BadRequest, errors: metadata.ValidationResult));
+        }
+
+        /// <summary>
+        /// 澶勭悊杈撳嚭鐘舵�佺爜
+        /// </summary>
+        /// <param name="context"></param>
+        /// <param name="statusCode"></param>
+        /// <param name="unifyResultSettings"></param>
+        /// <returns></returns>
+        public async Task OnResponseStatusCodes(HttpContext context, int statusCode, UnifyResultSettingsOptions unifyResultSettings)
+        {
+            // 璁剧疆鍝嶅簲鐘舵�佺爜
+            UnifyContext.SetResponseStatusCodes(context, statusCode, unifyResultSettings);
+
+            switch (statusCode)
+            {
+                // 澶勭悊 401 鐘舵�佺爜
+                case StatusCodes.Status401Unauthorized:
+                    await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "401 鐧诲綍宸茶繃鏈燂紝璇烽噸鏂扮櫥褰�"),
+                        App.GetOptions<JsonOptions>()?.JsonSerializerOptions);
+                    break;
+                // 澶勭悊 403 鐘舵�佺爜
+                case StatusCodes.Status403Forbidden:
+                    await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "403 绂佹璁块棶锛屾病鏈夋潈闄�"),
+                        App.GetOptions<JsonOptions>()?.JsonSerializerOptions);
+                    break;
+
+                default: break;
+            }
+        }
+
+        /// <summary>
+        /// 杩斿洖 RESTful 椋庢牸缁撴灉闆�
+        /// </summary>
+        /// <param name="statusCode"></param>
+        /// <param name="succeeded"></param>
+        /// <param name="data"></param>
+        /// <param name="errors"></param>
+        /// <returns></returns>
+        protected static XnRestfulResult<object> RESTfulResult(int statusCode, bool succeeded = default, object data = default, object errors = default)
+        {
+            return new XnRestfulResult<object>
+            {
+                Success = succeeded,
+                Code = statusCode,
+                Message = JSON.Serialize(errors),
+                Data = data,
+                Extras = UnifyContext.Take(),
+                Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
+            };
+        }
+
+        public static XnRestfulResult<object> RESTfulResult(object data = default)
+        {
+            return new XnRestfulResult<object>
+            {
+                Success = true,
+                Code = StatusCodes.Status200OK,
+                Message = "璇锋眰鎴愬姛",
+                Data = data,
+                Extras = UnifyContext.Take(),
+                Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
+            };
+        }
+        public static XnRestfulResult<object> RESTfulMesaage(object mesaage = default)
+        {
+            return new XnRestfulResult<object>
+            {
+                Success = true,
+                Code = StatusCodes.Status200OK,
+                Message = mesaage,
+                Data = "",
+                Extras = UnifyContext.Take(),
+                Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
+            };
+        }
+    }
+
+    /// <summary>
+    /// RESTful椋庢牸---XIAONUO杩斿洖鏍煎紡
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    public class XnRestfulResult<T>
+    {
+        /// <summary>
+        /// 鎵ц鎴愬姛
+        /// </summary>
+        public bool Success { get; set; }
+
+        /// <summary>
+        /// 鐘舵�佺爜
+        /// </summary>
+        public int? Code { get; set; }
+
+        /// <summary>
+        /// 閿欒淇℃伅
+        /// </summary>
+        public object Message { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁
+        /// </summary>
+        public T Data { get; set; }
+
+        /// <summary>
+        /// 闄勫姞鏁版嵁
+        /// </summary>
+        public object Extras { get; set; }
+
+        /// <summary>
+        /// 鏃堕棿鎴�
+        /// </summary>
+        public long Timestamp { get; set; }
+    }
+
+    
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/View/TestDemo/VStudent.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/View/TestDemo/VStudent.cs
new file mode 100644
index 0000000..3bef931
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/View/TestDemo/VStudent.cs
@@ -0,0 +1,129 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+/*
+ * @author : shaocx
+ * @date : 2024/4/15涓嬪崍4:44:30
+ * @desc : 瀛︾敓瑙嗗浘
+ */
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 瀛︾敓瑙嗗浘
+    /// </summary>
+    [Comment("瀛︾敓瑙嗗浘")]
+    public class VStudent : EntityNotKey
+    {
+        /// <summary>
+        /// 閰嶇疆瑙嗗浘鍚�
+        /// </summary>
+        public VStudent() : base("v_student") { }
+        /// <summary>
+        /// Id涓婚敭
+        /// 琛╰est_students
+        /// </summary>
+
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 瀛︾敓濮撳悕
+        /// 琛╰est_students
+        /// </summary>
+        [MaxLength(50)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 瀛︾敓骞撮緞
+        /// 琛╰est_students
+        /// </summary>
+
+        public int Age { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍦ㄦ牎
+        /// 琛╰est_students
+        /// </summary>
+
+        public bool StartName { get; set; }
+
+        /// <summary>
+        /// 鎬у埆
+        /// 琛╰est_students
+        /// </summary>
+
+        public int Gender { get; set; }
+
+        /// <summary>
+        /// 鍑虹敓鏃ユ湡
+        /// 琛╰est_students
+        /// </summary>
+
+        public DateTime BrithDate { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// 琛╰est_students
+        /// </summary>
+
+        public DateTimeOffset? CreatedTime { get; set; }
+
+        /// <summary>
+        /// 鏇存柊鏃堕棿
+        /// 琛╰est_students
+        /// </summary>
+
+        public DateTimeOffset? UpdatedTime { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鑰匢d
+        /// 琛╰est_students
+        /// </summary>
+
+        public long? CreatedUserId { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鑰呭悕绉�
+        /// 琛╰est_students
+        /// </summary>
+        [MaxLength(255)]
+        public string CreatedUserName { get; set; }
+
+        /// <summary>
+        /// 淇敼鑰匢d
+        /// 琛╰est_students
+        /// </summary>
+
+        public long? UpdatedUserId { get; set; }
+
+        /// <summary>
+        /// 淇敼鑰呭悕绉�
+        /// 琛╰est_students
+        /// </summary>
+        [MaxLength(50)]
+        public string UpdatedUserName { get; set; }
+
+        /// <summary>
+        /// 杞垹闄ゆ爣璁�
+        /// 琛╰est_students
+        /// </summary>
+
+        public bool IsDeleted { get; set; }
+
+        /// <summary>
+        /// 鍏宠仈鑰佸笀
+        /// 琛╰est_students
+        /// </summary>
+
+        public long? TeacherId { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// 琛╰est_teacher
+        /// </summary>
+        [MaxLength(255)]
+        public string teacherName { get; set; }
+
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/applicationconfig.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/applicationconfig.json
new file mode 100644
index 0000000..d59bd79
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/applicationconfig.json
@@ -0,0 +1,111 @@
+{
+  "$schema": "https://gitee.com/dotnetchina/Furion/raw/net6/schemas/v3/furion-schema.json",
+
+  "SpecificationDocumentSettings": {
+    "DocumentTitle": "Admin.NET",
+    "DocExpansionState": "None",
+    "GroupOpenApiInfos": [
+      {
+        "Group": "Default",
+        "Title": "Admin.NET閫氱敤骞冲彴",
+        "Description": "鍓嶅悗绔垎绂绘灦鏋勶紝寮�绠卞嵆鐢紝绱ч殢鍓嶆部鎶�鏈��<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>",
+        "Version": "1.0.0"
+      }
+    ]
+  },
+  "JWTSettings": {
+    "ValidateIssuerSigningKey": true, // 鏄惁楠岃瘉瀵嗛挜锛宐ool 绫诲瀷锛岄粯璁rue
+    "IssuerSigningKey": "3c1cbc3f546eda35168c3aa3cb91780fbe703f0996c6d123ea96dc85c70bbc0a", // 瀵嗛挜锛宻tring 绫诲瀷锛屽繀椤绘槸澶嶆潅瀵嗛挜锛岄暱搴﹀ぇ浜�16
+    "ValidateIssuer": true, // 鏄惁楠岃瘉绛惧彂鏂癸紝bool 绫诲瀷锛岄粯璁rue
+    "ValidIssuer": "dilon", // 绛惧彂鏂癸紝string 绫诲瀷
+    "ValidateAudience": true, // 鏄惁楠岃瘉绛炬敹鏂癸紝bool 绫诲瀷锛岄粯璁rue
+    "ValidAudience": "dilon", // 绛炬敹鏂癸紝string 绫诲瀷
+    "ValidateLifetime": true, // 鏄惁楠岃瘉杩囨湡鏃堕棿锛宐ool 绫诲瀷锛岄粯璁rue锛屽缓璁畉rue
+    "ExpiredTime": 200, // 杩囨湡鏃堕棿锛宭ong 绫诲瀷锛屽崟浣嶅垎閽燂紝榛樿20鍒嗛挓
+    "ClockSkew": 5 // 杩囨湡鏃堕棿瀹归敊鍊硷紝long 绫诲瀷锛屽崟浣嶇锛岄粯璁�5绉�
+  },
+  "RefreshTokenSetting": {
+    "ExpiredTime": 60 // 杩囨湡鏃堕棿锛宨nt 绫诲瀷锛屽崟浣嶅垎閽燂紝榛樿43200鍒嗛挓锛堜竴鑸紝refresh_token 鐨勬湁鏁堟椂闂� > 2 * access_token 鐨勬湁鏁堟椂闂达級
+  },
+  "CorsAccessorSettings": {
+    "WithExposedHeaders": [ "access-token", "x-access-token", "Content-Disposition" ]
+  },
+  "Cache": {
+    "CacheType": "MemoryCache", // RedisCache
+    "RedisConnectionString": "127.0.0.1:6379,password=,defaultDatabase=2",
+    "InstanceName": "dilon_"
+  },
+  "SnowId": {
+    "WorkerId": "1" // 鍙栧�艰寖鍥�0~63,榛樿1
+  },
+  "OAuth": {
+    "Wechat": {
+      "app_id": "wx2959fdd3abc05362",
+      "app_key": "829f65b2be0652bcd50ea8cb820fd7fa",
+      "redirect_uri": "http://127.0.0.1:56868/oauth/wechatcallback",
+      "scope": "snsapi_userinfo"
+    }
+  },
+  "UploadFile": {
+    // 闃块噷浜慜SS閰嶇疆
+    "Aliyun": {
+      "path": "Dilon/Upload",
+      "maxSize": 1048576,
+      "contentType": [ "image/jpg", "image/png", "image/jpeg", "image/gif", "image/bmp", "text/plain", "application/pdf", "application/msword", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.presentationml.presentation" ]
+    },
+    // 澶村儚
+    "Avatar": {
+      "path": "Upload/Avatar",
+      "maxSize": 1048576,
+      "contentType": [ "image/jpg", "image/png", "image/jpeg", "image/gif" ]
+    },
+    // 鏂囨。
+    "Document": {
+      "path": "Upload/Document",
+      "maxSize": 1048576,
+      "contentType": [ "image/jpg", "image/png", "image/jpeg", "image/gif", "image/bmp", "text/plain", "application/pdf", "application/msword", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.presentationml.presentation" ]
+    },
+    // 鍟嗗簵
+    "Shop": {
+      "path": "Upload/Shop",
+      "maxSize": 1048576,
+      "contentType": [ "image/jpg", "image/png", "image/jpeg", "image/gif" ]
+    },
+    // 榛樿
+    "Default": {
+      "path": "Upload/Default",
+      "maxSize": 1048576,
+      "contentType": [ "image/jpg", "image/png", "image/jpeg", "image/gif", "image/bmp", "text/plain", "application/pdf", "application/msword", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.presentationml.presentation" ]
+    }
+  },
+  "OSSProvider": {
+    "Provider": "QCloud",
+    "Endpoint": "AppId",
+    "Region": "ap-chengdu",
+    "AccessKey": "A****************************z",
+    "SecretKey": "g6I***************la",
+    "IsEnableCache": true
+  },
+  "AppVersion": {
+    "Version": "1.5.7"
+  },
+  "YiKuTestPalce": {
+    "IsStart": false,
+    "rukuPoint": "1.10.1",
+    "yikuPoint": "2.10.1"
+  },
+  "YiGoWebApi": {
+    "QueryInboundNotice": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=QueryInboundNotice", //鍏ュ簱閫氱煡
+    "Qcnotice": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=Qcnotice", //璐ㄦ閫氱煡
+    "QueryRQC": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=QueryRQC", //璐ㄦ缁撴灉
+    "CreateTX111": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=CreateTX111", //鍏ュ簱涓婃灦鎺ュ彛
+    "QueryBackNotice": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=QueryBackNotice", //閫�璐ч�氱煡鎺ュ彛
+    "CreateTXRe211": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=CreateTXRe211", //閫�璐т笅鏋舵帴鍙�
+    "QueryOutBoundNotice": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=QueryOutBoundNotice", //棰嗘枡鐢宠
+    "CreateTX211": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=CreateTX211", //棰嗘枡鐢宠
+    "QueryReturnQuisition": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=QueryReturnQuisition", //閫�鏂欑敵璇�
+    "CreateTXRe111": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=CreateTXRe111", //閫�鏂欏叆搴�
+    "QueryAllocate": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=QueryAllocate", //杞偍閫氱煡
+    "MarkReadDocument": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=MarkReadDocument" //鍗曟嵁鏍囪
+  }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Admin.NET.Database.Migrations.csproj b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Admin.NET.Database.Migrations.csproj
new file mode 100644
index 0000000..1cb1977
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Admin.NET.Database.Migrations.csproj
@@ -0,0 +1,42 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>disable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+
+    <Compile Remove="Migrations\20230426014851_v1.0.0.cs" />
+    <Compile Remove="Migrations\20230426014851_v1.0.0.Designer.cs" />
+    <Compile Remove="Migrations\20230426022104_v1.0.1.cs" />
+    <Compile Remove="Migrations\20230426022104_v1.0.1.Designer.cs" />
+    <Compile Remove="Migrations\20230426052404_v1.0.2.cs" />
+    <Compile Remove="Migrations\20230426052404_v1.0.2.Designer.cs" />
+    <Compile Remove="Migrations\20230426083742_v1.0.3.cs" />
+    <Compile Remove="Migrations\20230426083742_v1.0.3.Designer.cs" />
+    <Compile Remove="Migrations\20230427011601_v1.0.4.cs" />
+    <Compile Remove="Migrations\20230427011601_v1.0.4.Designer.cs" />
+    <Compile Remove="Migrations\20230428015458_v1.0.5.cs" />
+    <Compile Remove="Migrations\20230428015458_v1.0.5.Designer.cs" />
+    <Compile Remove="Migrations\20230428033419_v1.0.6.cs" />
+    <Compile Remove="Migrations\20230428033419_v1.0.6.Designer.cs" />
+    <Compile Remove="Migrations\20230506010711_v1.0.7.cs" />
+    <Compile Remove="Migrations\20230506010711_v1.0.7.Designer.cs" />
+    <Compile Remove="Migrations\20230506025517_v1.0.8.cs" />
+    <Compile Remove="Migrations\20230506025517_v1.0.8.Designer.cs" />
+    <Compile Remove="Migrations\20230506043103_v1.0.9.cs" />
+    <Compile Remove="Migrations\20230506043103_v1.0.9.Designer.cs" />
+    <Compile Remove="Migrations\20230506043606_v1.1.0.cs" />
+    <Compile Remove="Migrations\20230506043606_v1.1.0.Designer.cs" />
+    <Compile Remove="Migrations\20230506075406_v1.0.10.cs" />
+    <Compile Remove="Migrations\20230506075406_v1.0.10.Designer.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Admin.NET.EntityFramework.Core\Admin.NET.EntityFramework.Core.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Migrations\" />
+  </ItemGroup>
+</Project>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.Designer.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.Designer.cs
new file mode 100644
index 0000000..8af98b6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.Designer.cs
@@ -0,0 +1,13180 @@
+锘�// <auto-generated />
+using System;
+using Admin.NET.EntityFramework.Core;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace Admin.NET.Database.Migrations.Migrations
+{
+    [DbContext(typeof(DefaultDbContext))]
+    [Migration("20240413040247_v1.0.1")]
+    partial class v101
+    {
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "6.0.9")
+                .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
+
+            modelBuilder.Entity("Admin.NET.Core.AgvTask", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AgvState")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐘舵��");
+
+                    b.Property<string>("ContainerCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹瑰櫒缂栧彿");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("EndName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缁撴潫鍚嶇О");
+
+                    b.Property<string>("EndPlace")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缁撴潫浣嶇疆");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<long>("Pid")
+                        .HasColumnType("bigint")
+                        .HasComment("Agv鐖禝d");
+
+                    b.Property<string>("SourcePlaceName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璧峰搴撲綅鍚嶇О");
+
+                    b.Property<string>("StartName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璧峰鍚嶇О");
+
+                    b.Property<string>("StartPlace")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璧峰浣嶇疆");
+
+                    b.Property<string>("TaskNo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("涓讳换鍔″彿");
+
+                    b.Property<string>("TaskType")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱");
+
+                    b.Property<string>("TransportOrder")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("褰撳墠鎵ц鐨勪换鍔�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("WorkShopType")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炶溅闂�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("les_agv_task");
+
+                    b.HasComment("Agv浠诲姟琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.AgvWaring", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AgvCarCode")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("agv灏忚溅缂栧彿");
+
+                    b.Property<string>("Code")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("鍞竴缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("FaultText")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鏁呴殰鍐呭");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<bool>("IsRead")
+                        .HasColumnType("bit")
+                        .HasComment("WCS鏄惁鍙互璇诲彇");
+
+                    b.Property<DateTimeOffset?>("StartTime")
+                        .HasMaxLength(50)
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏁呴殰鏃堕棿");
+
+                    b.Property<string>("TransportOrder")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("浠诲姟鍙�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("WorkShopType")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炶溅闂�");
+
+                    b.Property<int>("YesOrNot")
+                        .HasMaxLength(50)
+                        .HasColumnType("int")
+                        .HasComment("鏄惁瑙e喅");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("les_agv_waring");
+
+                    b.HasComment("Agv鎶ヨ");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.Entity.VAccessDetails", b =>
+                {
+                    b.Property<string>("Batch")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ContainerCode")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<string>("Description")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("High")
+                        .HasColumnType("int");
+
+                    b.Property<long?>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<int>("Long")
+                        .HasColumnType("int");
+
+                    b.Property<string>("MaterialDensity")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("MaterialNo")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("SourcePlace")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("TaskCreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<int>("TaskLevel")
+                        .HasColumnType("int");
+
+                    b.Property<int>("TaskModel")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TaskNo")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("TaskStatus")
+                        .HasColumnType("int");
+
+                    b.Property<int>("TaskType")
+                        .HasColumnType("int");
+
+                    b.Property<DateTimeOffset?>("TaskUpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<string>("ToPlace")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<int>("Wide")
+                        .HasColumnType("int");
+
+                    b.ToView("View_AccessDetails");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.Entity.WmsBase.WmsRolePdaMenu", b =>
+                {
+                    b.Property<long>("SysRoleId")
+                        .HasColumnType("bigint")
+                        .HasComment("瑙掕壊Id");
+
+                    b.Property<long>("PdaMenuId")
+                        .HasColumnType("bigint")
+                        .HasComment("鑿滃崟Id");
+
+                    b.HasKey("SysRoleId", "PdaMenuId");
+
+                    b.HasIndex("PdaMenuId");
+
+                    b.ToTable("wms_role_pdamenu");
+
+                    b.HasComment("瑙掕壊鑿滃崟琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.Entity.WmsBase.WmsWarehouseManage", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int")
+                        .HasComment("绫诲瀷");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_warehouse_manage");
+
+                    b.HasComment("搴撳彛琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.LesDeviceWaring", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DeviceName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璁惧鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("EndTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("缁撴潫鏃堕棿");
+
+                    b.Property<string>("FaultName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鏁呴殰鍚嶇О");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("RunningTime")
+                        .HasColumnType("int")
+                        .HasComment("鎸佺画鏃堕棿");
+
+                    b.Property<DateTimeOffset?>("StartTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍙戠敓鏃堕棿");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("WcsId")
+                        .HasColumnType("int")
+                        .HasComment("WcsId");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("les_devicewaring");
+
+                    b.HasComment("璁惧鎶ヨ");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.LesEntrance", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<long>("AreaId")
+                        .HasColumnType("bigint")
+                        .HasComment("搴撳尯Id");
+
+                    b.Property<string>("Code")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撳彛缂栫爜");
+
+                    b.Property<int>("CommenStatus")
+                        .HasColumnType("int")
+                        .HasComment("搴撳彛鐘舵��");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("EntranceType")
+                        .HasColumnType("int")
+                        .HasComment("搴撳彛绫诲瀷");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撳彛鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("AreaId");
+
+                    b.ToTable("les_entrance");
+
+                    b.HasComment("搴撳彛琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.LesPackWarehouse", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("High")
+                        .HasColumnType("int")
+                        .HasComment("楂�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("LesPackState")
+                        .HasColumnType("int")
+                        .HasComment("鎵撳寘鐘舵��");
+
+                    b.Property<int>("Long")
+                        .HasColumnType("int")
+                        .HasComment("闀�");
+
+                    b.Property<string>("MaterialNo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鐮�");
+
+                    b.Property<string>("OrderNo")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍗曟嵁鍙�");
+
+                    b.Property<string>("OutputEntrance")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍑哄簱鍙�");
+
+                    b.Property<string>("PackCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鏍囩鐮�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("Wide")
+                        .HasColumnType("int")
+                        .HasComment("瀹�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("les_packwarehouse");
+
+                    b.HasComment("鎵撳寘琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.LesSerialRuleDetail", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("DecimalType")
+                        .HasColumnType("int")
+                        .HasComment("杩涗綅绫诲瀷");
+
+                    b.Property<string>("Description")
+                        .HasMaxLength(300)
+                        .HasColumnType("nvarchar(300)")
+                        .HasComment("璇存槑");
+
+                    b.Property<int>("GetData")
+                        .HasMaxLength(50)
+                        .HasColumnType("int")
+                        .HasComment("鎾峰彇");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("ItemNo")
+                        .HasColumnType("int")
+                        .HasComment("椤规");
+
+                    b.Property<int>("PadLeft")
+                        .HasColumnType("int")
+                        .HasComment("鑷姩琛ラ浂");
+
+                    b.Property<int>("SearchStart")
+                        .HasColumnType("int")
+                        .HasComment("鎾峰彇鐮佹暟(璧�)");
+
+                    b.Property<int>("SerialCodeFlag")
+                        .HasColumnType("int")
+                        .HasComment("搴忓彿缂栫爜");
+
+                    b.Property<int>("SerialLength")
+                        .HasColumnType("int")
+                        .HasComment("闀垮害");
+
+                    b.Property<string>("SerialType")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴忓彿绫诲埆");
+
+                    b.Property<string>("SerialTypeNo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴忓彿绫诲埆缂栧彿");
+
+                    b.Property<string>("SourceType")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璧勬枡鏉ユ簮");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("UserDefine")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("浣跨敤鑰呰嚜瀹氫箟");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("les_serial_rule_detail");
+
+                    b.HasComment("缂栧彿瑙勫垯");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.LesStation", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("宸ヤ綅缂栫爜");
+
+                    b.Property<string>("ContainerCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("宸ヤ綅鍚嶇О");
+
+                    b.Property<decimal>("PlaceSpec")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("搴撲綅瑙勬牸");
+
+                    b.Property<long>("ProductionlineId")
+                        .HasColumnType("bigint")
+                        .HasComment("浜х嚎Id");
+
+                    b.Property<int>("StataionStatus")
+                        .HasColumnType("int")
+                        .HasComment("杩愯鐘舵��");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("宸ヤ綅鐘舵��");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("les_station");
+
+                    b.HasComment("宸ヤ綅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysApp", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Active")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鏄惁榛樿婵�娲�");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_app");
+
+                    b.HasComment("绯荤粺搴旂敤琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070898245L,
+                            Active = "Y",
+                            Code = "system",
+                            IsDeleted = false,
+                            Name = "寮�鍙戠鐞�",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070902341L,
+                            Active = "N",
+                            Code = "manage",
+                            IsDeleted = false,
+                            Name = "绯荤粺绠$悊",
+                            Sort = 300,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070922869L,
+                            Active = "N",
+                            Code = "busiapp",
+                            IsDeleted = false,
+                            Name = "涓氬姟搴旂敤",
+                            Sort = 400,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355686432948293L,
+                            Active = "N",
+                            Code = "warejob",
+                            IsDeleted = false,
+                            Name = "浠撳簱浣滀笟",
+                            Sort = 500,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355686518018117L,
+                            Active = "N",
+                            Code = "warecount",
+                            IsDeleted = false,
+                            Name = "缁熻鏌ヨ",
+                            Sort = 600,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 383337192390725L,
+                            Active = "N",
+                            Code = "xbjl",
+                            IsDeleted = false,
+                            Name = "绾胯竟鍙枡",
+                            Sort = 550,
+                            Status = 0
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysCodeGen", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AuthorName")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("浣滆�呭鍚�");
+
+                    b.Property<string>("BusName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("涓氬姟鍚�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DatabaseName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏁版嵁搴撳悕");
+
+                    b.Property<string>("FrontProName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍓嶇椤圭洰鍚�");
+
+                    b.Property<string>("GenerateType")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鐢熸垚鏂瑰紡");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<long?>("LowCodeId")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("MenuApplication")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鑿滃崟搴旂敤鍒嗙被");
+
+                    b.Property<long>("MenuPid")
+                        .HasColumnType("bigint")
+                        .HasComment("鑿滃崟缂栫爜");
+
+                    b.Property<string>("ModuleName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("妯″潡璺緞");
+
+                    b.Property<string>("NameSpace")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍛藉悕绌洪棿");
+
+                    b.Property<string>("TableName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏁版嵁搴撹〃鍚�");
+
+                    b.Property<string>("TablePrefix")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鏄惁绉婚櫎琛ㄥ墠缂�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_code_gen");
+
+                    b.HasComment("浠g爜鐢熸垚琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysCodeGenConfig", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<long>("CodeGenId")
+                        .HasColumnType("bigint")
+                        .HasComment("浠g爜鐢熸垚涓昏〃ID");
+
+                    b.Property<string>("ColumnComment")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("瀛楁鎻忚堪");
+
+                    b.Property<string>("ColumnKey")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("涓婚敭");
+
+                    b.Property<string>("ColumnName")
+                        .IsRequired()
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏁版嵁搴撳瓧娈靛悕");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DataType")
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)")
+                        .HasComment("鏁版嵁搴撲腑绫诲瀷");
+
+                    b.Property<string>("DictTypeCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀛楀吀Code");
+
+                    b.Property<string>("DtoNetType")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment(".NET鏁版嵁绫诲瀷(鎺ュ彛浼犲叆)");
+
+                    b.Property<string>("EffectType")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("浣滅敤绫诲瀷");
+
+                    b.Property<string>("FkColumnName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("澶栭敭鏄剧ず瀛楁");
+
+                    b.Property<string>("FkColumnNetType")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("澶栭敭鏄剧ず瀛楁.NET绫诲瀷");
+
+                    b.Property<string>("FkEntityName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("澶栭敭瀹炰綋鍚嶇О");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("NetType")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment(".NET鏁版嵁绫诲瀷");
+
+                    b.Property<string>("QueryType")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("鏌ヨ鏂瑰紡");
+
+                    b.Property<string>("QueryWhether")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鏄惁鏄煡璇㈡潯浠�");
+
+                    b.Property<string>("ShowTitleMinWidth")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("椤甸潰鍒楁樉绀烘渶灏忓搴�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("WhetherAddUpdate")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("澧炴敼");
+
+                    b.Property<string>("WhetherCommon")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鏄惁閫氱敤瀛楁");
+
+                    b.Property<string>("WhetherOrderBy")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鍒楄〃鏄惁鎺掑簭");
+
+                    b.Property<string>("WhetherRequired")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鏄惁蹇呭~");
+
+                    b.Property<string>("WhetherRetract")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鍒楄〃鏄惁缂╄繘");
+
+                    b.Property<string>("WhetherTable")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鍒楄〃鏄剧ず");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_code_gen_config");
+
+                    b.HasComment("浠g爜鐢熸垚瀛楁閰嶇疆琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysConfig", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("GroupCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("甯搁噺鎵�灞炲垎绫荤殑缂栫爜");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<string>("SysFlag")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鏄惁鏄郴缁熷弬鏁�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("Value")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("灞炴�у��");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_config");
+
+                    b.HasComment("鍙傛暟閰嶇疆琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070902342L,
+                            Code = "DILON_JWT_SECRET",
+                            GroupCode = "DEFAULT",
+                            IsDeleted = false,
+                            Name = "jwt瀵嗛挜",
+                            Remark = "锛堥噸瑕侊級jwt瀵嗛挜锛岄粯璁や负绌猴紝鑷璁剧疆",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "weiben"
+                        },
+                        new
+                        {
+                            Id = 142307070902343L,
+                            Code = "DILON_DEFAULT_PASSWORD",
+                            GroupCode = "DEFAULT",
+                            IsDeleted = false,
+                            Name = "榛樿瀵嗙爜",
+                            Remark = "榛樿瀵嗙爜",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "123456"
+                        },
+                        new
+                        {
+                            Id = 142307070902344L,
+                            Code = "DILON_TOKEN_EXPIRE",
+                            GroupCode = "DEFAULT",
+                            IsDeleted = false,
+                            Name = "token杩囨湡鏃堕棿",
+                            Remark = "token杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "86400"
+                        },
+                        new
+                        {
+                            Id = 142307070902345L,
+                            Code = "DILON_SESSION_EXPIRE",
+                            GroupCode = "DEFAULT",
+                            IsDeleted = false,
+                            Name = "session浼氳瘽杩囨湡鏃堕棿",
+                            Remark = "session浼氳瘽杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "7200"
+                        },
+                        new
+                        {
+                            Id = 142307070902361L,
+                            Code = "DILON_FILE_UPLOAD_PATH_FOR_WINDOWS",
+                            GroupCode = "FILE_PATH",
+                            IsDeleted = false,
+                            Name = "Win鏈湴涓婁紶鏂囦欢璺緞",
+                            Remark = "Win鏈湴涓婁紶鏂囦欢璺緞",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "D:/tmp"
+                        },
+                        new
+                        {
+                            Id = 142307070902363L,
+                            Code = "DILON_UN_XSS_FILTER_URL",
+                            GroupCode = "DEFAULT",
+                            IsDeleted = false,
+                            Name = "鏀惧紑XSS杩囨护鐨勬帴鍙�",
+                            Remark = "澶氫釜url鍙互鐢ㄨ嫳鏂囬�楀彿闅斿紑",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "/demo/xssfilter,/demo/unxss"
+                        },
+                        new
+                        {
+                            Id = 142307070902364L,
+                            Code = "DILON_ENABLE_SINGLE_LOGIN",
+                            GroupCode = "DEFAULT",
+                            IsDeleted = false,
+                            Name = "鍗曠敤鎴风櫥闄嗙殑寮�鍏�",
+                            Remark = "true-鎵撳紑锛宖alse-鍏抽棴锛屽鏋滀竴涓汉鐧诲綍涓ゆ锛屽氨浼氬皢涓婁竴娆$櫥闄嗘尋涓嬪幓",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "false"
+                        },
+                        new
+                        {
+                            Id = 142307070902365L,
+                            Code = "DILON_CAPTCHA_OPEN",
+                            GroupCode = "DEFAULT",
+                            IsDeleted = false,
+                            Name = "鐧诲綍楠岃瘉鐮佺殑寮�鍏�",
+                            Remark = "true-鎵撳紑锛宖alse-鍏抽棴",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "true"
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysDictData", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<long>("TypeId")
+                        .HasColumnType("bigint")
+                        .HasComment("瀛楀吀绫诲瀷Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("Value")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍊�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("TypeId");
+
+                    b.ToTable("sys_dict_data");
+
+                    b.HasComment("瀛楀吀鍊艰〃");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070902375L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鐢锋��",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906484L,
+                            Value = "鐢�"
+                        },
+                        new
+                        {
+                            Id = 142307070902376L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "濂虫��",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906484L,
+                            Value = "濂�"
+                        },
+                        new
+                        {
+                            Id = 142307070902377L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "鏈煡鎬у埆",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906484L,
+                            Value = "鏈煡"
+                        },
+                        new
+                        {
+                            Id = 142307070902384L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "姝e父",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906483L,
+                            Value = "姝e父"
+                        },
+                        new
+                        {
+                            Id = 142307070902385L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鍋滅敤",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906483L,
+                            Value = "鍋滅敤"
+                        },
+                        new
+                        {
+                            Id = 142307070902386L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鍒犻櫎",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906483L,
+                            Value = "鍒犻櫎"
+                        },
+                        new
+                        {
+                            Id = 142307070902387L,
+                            Code = "N",
+                            IsDeleted = false,
+                            Remark = "鍚�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906486L,
+                            Value = "鍚�"
+                        },
+                        new
+                        {
+                            Id = 142307070902388L,
+                            Code = "Y",
+                            IsDeleted = false,
+                            Remark = "鏄�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906486L,
+                            Value = "鏄�"
+                        },
+                        new
+                        {
+                            Id = 142307070902389L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鐧诲綍",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906487L,
+                            Value = "鐧诲綍"
+                        },
+                        new
+                        {
+                            Id = 142307070902390L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鐧诲嚭",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906487L,
+                            Value = "鐧诲嚭"
+                        },
+                        new
+                        {
+                            Id = 142307070902391L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "鐩綍",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906488L,
+                            Value = "鐩綍"
+                        },
+                        new
+                        {
+                            Id = 142307070902392L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鑿滃崟",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906488L,
+                            Value = "鑿滃崟"
+                        },
+                        new
+                        {
+                            Id = 142307070902393L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鎸夐挳",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906488L,
+                            Value = "鎸夐挳"
+                        },
+                        new
+                        {
+                            Id = 142307070902394L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "鏈彂閫�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906489L,
+                            Value = "鏈彂閫�"
+                        },
+                        new
+                        {
+                            Id = 142307070902395L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鍙戦�佹垚鍔�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906489L,
+                            Value = "鍙戦�佹垚鍔�"
+                        },
+                        new
+                        {
+                            Id = 142307070902396L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鍙戦�佸け璐�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906489L,
+                            Value = "鍙戦�佸け璐�"
+                        },
+                        new
+                        {
+                            Id = 142307070902397L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "澶辨晥",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906489L,
+                            Value = "澶辨晥"
+                        },
+                        new
+                        {
+                            Id = 142307070902398L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "鏃�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906490L,
+                            Value = "鏃�"
+                        },
+                        new
+                        {
+                            Id = 142307070902399L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "缁勪欢",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906490L,
+                            Value = "缁勪欢"
+                        },
+                        new
+                        {
+                            Id = 142307070906437L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鍐呴摼",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906490L,
+                            Value = "鍐呴摼"
+                        },
+                        new
+                        {
+                            Id = 142307070906438L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "澶栭摼",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906490L,
+                            Value = "澶栭摼"
+                        },
+                        new
+                        {
+                            Id = 142307070906439L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "绯荤粺鏉冮噸",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906491L,
+                            Value = "绯荤粺鏉冮噸"
+                        },
+                        new
+                        {
+                            Id = 142307070906440L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "涓氬姟鏉冮噸",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906491L,
+                            Value = "涓氬姟鏉冮噸"
+                        },
+                        new
+                        {
+                            Id = 142307070906441L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鍏ㄩ儴鏁版嵁",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906492L,
+                            Value = "鍏ㄩ儴鏁版嵁"
+                        },
+                        new
+                        {
+                            Id = 142307070906442L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鏈儴闂ㄥ強浠ヤ笅鏁版嵁",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906492L,
+                            Value = "鏈儴闂ㄥ強浠ヤ笅鏁版嵁"
+                        },
+                        new
+                        {
+                            Id = 142307070906443L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "鏈儴闂ㄦ暟鎹�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906492L,
+                            Value = "鏈儴闂ㄦ暟鎹�"
+                        },
+                        new
+                        {
+                            Id = 142307070906444L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "浠呮湰浜烘暟鎹�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906492L,
+                            Value = "浠呮湰浜烘暟鎹�"
+                        },
+                        new
+                        {
+                            Id = 142307070906445L,
+                            Code = "5",
+                            IsDeleted = false,
+                            Remark = "鑷畾涔夋暟鎹�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906492L,
+                            Value = "鑷畾涔夋暟鎹�"
+                        },
+                        new
+                        {
+                            Id = 142307070906449L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "鍏跺畠",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "鍏跺畠"
+                        },
+                        new
+                        {
+                            Id = 142307070906450L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "澧炲姞",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "澧炲姞"
+                        },
+                        new
+                        {
+                            Id = 142307070906451L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鍒犻櫎",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "鍒犻櫎"
+                        },
+                        new
+                        {
+                            Id = 142307070906452L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "缂栬緫",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "缂栬緫"
+                        },
+                        new
+                        {
+                            Id = 142307070906453L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "鏇存柊",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "鏇存柊"
+                        },
+                        new
+                        {
+                            Id = 142307070906454L,
+                            Code = "5",
+                            IsDeleted = false,
+                            Remark = "鏌ヨ",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "鏌ヨ"
+                        },
+                        new
+                        {
+                            Id = 142307070906455L,
+                            Code = "6",
+                            IsDeleted = false,
+                            Remark = "璇︽儏",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "璇︽儏"
+                        },
+                        new
+                        {
+                            Id = 142307070906456L,
+                            Code = "7",
+                            IsDeleted = false,
+                            Remark = "鏍�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "鏍�"
+                        },
+                        new
+                        {
+                            Id = 142307070906457L,
+                            Code = "8",
+                            IsDeleted = false,
+                            Remark = "瀵煎叆",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "瀵煎叆"
+                        },
+                        new
+                        {
+                            Id = 142307070906458L,
+                            Code = "9",
+                            IsDeleted = false,
+                            Remark = "瀵煎嚭",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "瀵煎嚭"
+                        },
+                        new
+                        {
+                            Id = 142307070906459L,
+                            Code = "10",
+                            IsDeleted = false,
+                            Remark = "鎺堟潈",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "鎺堟潈"
+                        },
+                        new
+                        {
+                            Id = 142307070906460L,
+                            Code = "11",
+                            IsDeleted = false,
+                            Remark = "寮洪��",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "寮洪��"
+                        },
+                        new
+                        {
+                            Id = 142307070906461L,
+                            Code = "12",
+                            IsDeleted = false,
+                            Remark = "娓呯┖",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "娓呯┖"
+                        },
+                        new
+                        {
+                            Id = 142307070906462L,
+                            Code = "13",
+                            IsDeleted = false,
+                            Remark = "淇敼鐘舵��",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "淇敼鐘舵��"
+                        },
+                        new
+                        {
+                            Id = 142307070906463L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "闃块噷浜�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906495L,
+                            Value = "闃块噷浜�"
+                        },
+                        new
+                        {
+                            Id = 142307070906464L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鑵捐浜�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906495L,
+                            Value = "鑵捐浜�"
+                        },
+                        new
+                        {
+                            Id = 142307070906465L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "minio",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906495L,
+                            Value = "minio"
+                        },
+                        new
+                        {
+                            Id = 142307070906466L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "鏈湴",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906495L,
+                            Value = "鏈湴"
+                        },
+                        new
+                        {
+                            Id = 142307070906467L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "杩愯",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910533L,
+                            Value = "杩愯"
+                        },
+                        new
+                        {
+                            Id = 142307070906468L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鍋滄",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910533L,
+                            Value = "鍋滄"
+                        },
+                        new
+                        {
+                            Id = 142307070906469L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "閫氱煡",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910534L,
+                            Value = "閫氱煡"
+                        },
+                        new
+                        {
+                            Id = 142307070906470L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鍏憡",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910534L,
+                            Value = "鍏憡"
+                        },
+                        new
+                        {
+                            Id = 142307070906471L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "鑽夌",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910535L,
+                            Value = "鑽夌"
+                        },
+                        new
+                        {
+                            Id = 142307070906472L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鍙戝竷",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910535L,
+                            Value = "鍙戝竷"
+                        },
+                        new
+                        {
+                            Id = 142307070906473L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鎾ゅ洖",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910535L,
+                            Value = "鎾ゅ洖"
+                        },
+                        new
+                        {
+                            Id = 142307070906474L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "鍒犻櫎",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910535L,
+                            Value = "鍒犻櫎"
+                        },
+                        new
+                        {
+                            Id = 142307070906475L,
+                            Code = "true",
+                            IsDeleted = false,
+                            Remark = "鏄�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910536L,
+                            Value = "鏄�"
+                        },
+                        new
+                        {
+                            Id = 142307070906476L,
+                            Code = "false",
+                            IsDeleted = false,
+                            Remark = "鍚�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910536L,
+                            Value = "鍚�"
+                        },
+                        new
+                        {
+                            Id = 142307070906477L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "涓嬭浇鍘嬬缉鍖�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910537L,
+                            Value = "涓嬭浇鍘嬬缉鍖�"
+                        },
+                        new
+                        {
+                            Id = 142307070906478L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鐢熸垚鍒版湰椤圭洰",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910537L,
+                            Value = "鐢熸垚鍒版湰椤圭洰"
+                        },
+                        new
+                        {
+                            Id = 142307070906479L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "GET",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910538L,
+                            Value = "GET"
+                        },
+                        new
+                        {
+                            Id = 142307070906480L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "POST",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910538L,
+                            Value = "POST"
+                        },
+                        new
+                        {
+                            Id = 142307070906481L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "PUT",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910538L,
+                            Value = "PUT"
+                        },
+                        new
+                        {
+                            Id = 142307070906482L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "DELETE",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910538L,
+                            Value = "DELETE"
+                        },
+                        new
+                        {
+                            Id = 142307070922829L,
+                            Code = "fk",
+                            IsDeleted = false,
+                            Remark = "澶栭敭",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "澶栭敭"
+                        },
+                        new
+                        {
+                            Id = 142307070922830L,
+                            Code = "input",
+                            IsDeleted = false,
+                            Remark = "杈撳叆妗�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "杈撳叆妗�"
+                        },
+                        new
+                        {
+                            Id = 142307070922831L,
+                            Code = "datepicker",
+                            IsDeleted = false,
+                            Remark = "鏃ユ湡閫夋嫨",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "鏃ユ湡閫夋嫨"
+                        },
+                        new
+                        {
+                            Id = 386523071475758L,
+                            Code = "datetimepicker",
+                            IsDeleted = false,
+                            Remark = "鏃ユ湡鏃堕棿閫夋嫨",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "鏃ユ湡鏃堕棿閫夋嫨"
+                        },
+                        new
+                        {
+                            Id = 142307070922832L,
+                            Code = "select",
+                            IsDeleted = false,
+                            Remark = "涓嬫媺妗�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "涓嬫媺妗�"
+                        },
+                        new
+                        {
+                            Id = 142307070922833L,
+                            Code = "radio",
+                            IsDeleted = false,
+                            Remark = "鍗曢�夋",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "鍗曢�夋"
+                        },
+                        new
+                        {
+                            Id = 142307070922834L,
+                            Code = "switch",
+                            IsDeleted = false,
+                            Remark = "寮�鍏�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "寮�鍏�"
+                        },
+                        new
+                        {
+                            Id = 142307070922835L,
+                            Code = "checkbox",
+                            IsDeleted = false,
+                            Remark = "澶氶�夋",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "澶氶�夋"
+                        },
+                        new
+                        {
+                            Id = 142307070922836L,
+                            Code = "inputnumber",
+                            IsDeleted = false,
+                            Remark = "鏁板瓧杈撳叆妗�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "鏁板瓧杈撳叆妗�"
+                        },
+                        new
+                        {
+                            Id = 142307070922837L,
+                            Code = "textarea",
+                            IsDeleted = false,
+                            Remark = "鏂囨湰鍩�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "鏂囨湰鍩�"
+                        },
+                        new
+                        {
+                            Id = 142307070922838L,
+                            Code = "==",
+                            IsDeleted = false,
+                            Remark = "绛変簬",
+                            Sort = 1,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "绛変簬"
+                        },
+                        new
+                        {
+                            Id = 142307070922839L,
+                            Code = "like",
+                            IsDeleted = false,
+                            Remark = "妯$硦",
+                            Sort = 2,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "妯$硦"
+                        },
+                        new
+                        {
+                            Id = 142307070922840L,
+                            Code = ">",
+                            IsDeleted = false,
+                            Remark = "澶т簬",
+                            Sort = 3,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "澶т簬"
+                        },
+                        new
+                        {
+                            Id = 142307070922841L,
+                            Code = "<",
+                            IsDeleted = false,
+                            Remark = "灏忎簬",
+                            Sort = 4,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "灏忎簬"
+                        },
+                        new
+                        {
+                            Id = 142307070922842L,
+                            Code = "!=",
+                            IsDeleted = false,
+                            Remark = "涓嶇瓑浜�",
+                            Sort = 5,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "涓嶇瓑浜�"
+                        },
+                        new
+                        {
+                            Id = 142307070922843L,
+                            Code = ">=",
+                            IsDeleted = false,
+                            Remark = "澶т簬绛変簬",
+                            Sort = 6,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "澶т簬绛変簬"
+                        },
+                        new
+                        {
+                            Id = 142307070922844L,
+                            Code = "<=",
+                            IsDeleted = false,
+                            Remark = "灏忎簬绛変簬",
+                            Sort = 7,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "灏忎簬绛変簬"
+                        },
+                        new
+                        {
+                            Id = 142307070922845L,
+                            Code = "isNotNull",
+                            IsDeleted = false,
+                            Remark = "涓嶄负绌�",
+                            Sort = 8,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "涓嶄负绌�"
+                        },
+                        new
+                        {
+                            Id = 386523071475759L,
+                            Code = "between",
+                            IsDeleted = false,
+                            Remark = "浠嬩簬",
+                            Sort = 9,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "浠嬩簬"
+                        },
+                        new
+                        {
+                            Id = 142307070922851L,
+                            Code = "int",
+                            IsDeleted = false,
+                            Remark = "int",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "int"
+                        },
+                        new
+                        {
+                            Id = 142307070922846L,
+                            Code = "long",
+                            IsDeleted = false,
+                            Remark = "long",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "long"
+                        },
+                        new
+                        {
+                            Id = 142307070922847L,
+                            Code = "string",
+                            IsDeleted = false,
+                            Remark = "string",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "string"
+                        },
+                        new
+                        {
+                            Id = 142307070922850L,
+                            Code = "bool",
+                            IsDeleted = false,
+                            Remark = "bool",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "bool"
+                        },
+                        new
+                        {
+                            Id = 142307070922852L,
+                            Code = "double",
+                            IsDeleted = false,
+                            Remark = "double",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "double"
+                        },
+                        new
+                        {
+                            Id = 142307070922848L,
+                            Code = "DateTime",
+                            IsDeleted = false,
+                            Remark = "DateTime",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "DateTime"
+                        },
+                        new
+                        {
+                            Id = 142307070922861L,
+                            Code = "float",
+                            IsDeleted = false,
+                            Remark = "float",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "float"
+                        },
+                        new
+                        {
+                            Id = 142307070922862L,
+                            Code = "decimal",
+                            IsDeleted = false,
+                            Remark = "decimal",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "decimal"
+                        },
+                        new
+                        {
+                            Id = 142307070922863L,
+                            Code = "Guid",
+                            IsDeleted = false,
+                            Remark = "Guid",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "Guid"
+                        },
+                        new
+                        {
+                            Id = 142307070922864L,
+                            Code = "DateTimeOffset",
+                            IsDeleted = false,
+                            Remark = "DateTimeOffset",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "DateTimeOffset"
+                        },
+                        new
+                        {
+                            Id = 142307070926943L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "闆嗗洟瑙掕壊",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070926941L,
+                            Value = "闆嗗洟瑙掕壊"
+                        },
+                        new
+                        {
+                            Id = 142307070926944L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鍔犵洘鍟嗚鑹�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070926941L,
+                            Value = "鍔犵洘鍟嗚鑹�"
+                        },
+                        new
+                        {
+                            Id = 142307070926945L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "闂ㄥ簵瑙掕壊",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070926941L,
+                            Value = "闂ㄥ簵瑙掕壊"
+                        },
+                        new
+                        {
+                            Id = 142307070926946L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "涓�绾�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070926942L,
+                            Value = "涓�绾�"
+                        },
+                        new
+                        {
+                            Id = 142307070926947L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "浜岀骇",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070926942L,
+                            Value = "浜岀骇"
+                        },
+                        new
+                        {
+                            Id = 142307070926948L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "涓夌骇",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070926942L,
+                            Value = "涓夌骇"
+                        },
+                        new
+                        {
+                            Id = 142307070926949L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "鍥涚骇",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070926942L,
+                            Value = "鍥涚骇"
+                        },
+                        new
+                        {
+                            Id = 285605336563781L,
+                            Code = "DefaultFormType",
+                            IsDeleted = false,
+                            Remark = "榛樿琛ㄥ崟鍒嗙被",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 285605149831237L,
+                            Value = "榛樿琛ㄥ崟鍒嗙被"
+                        },
+                        new
+                        {
+                            Id = 285641495289925L,
+                            Code = "DefaultGroup",
+                            IsDeleted = false,
+                            Remark = "榛樿鍒嗙被",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 285641358889029L,
+                            Value = "榛樿鍒嗙被"
+                        },
+                        new
+                        {
+                            Id = 355697634480197L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355694205325381L,
+                            Value = "鍏朵粬"
+                        },
+                        new
+                        {
+                            Id = 355697676427333L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355694205325381L,
+                            Value = "鏈ㄨ川"
+                        },
+                        new
+                        {
+                            Id = 355697726726213L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355694205325381L,
+                            Value = "閲戝睘"
+                        },
+                        new
+                        {
+                            Id = 355697755361349L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355694205325381L,
+                            Value = "濉戞枡"
+                        },
+                        new
+                        {
+                            Id = 355697944657989L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423941L,
+                            Value = "绂佺敤"
+                        },
+                        new
+                        {
+                            Id = 355697974415429L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423941L,
+                            Value = "绌洪棽"
+                        },
+                        new
+                        {
+                            Id = 355698005966917L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423941L,
+                            Value = "缁勭洏"
+                        },
+                        new
+                        {
+                            Id = 355698032828485L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423941L,
+                            Value = "搴撲綅"
+                        },
+                        new
+                        {
+                            Id = 355697634480198L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423942L,
+                            Value = "閫氱敤"
+                        },
+                        new
+                        {
+                            Id = 355697676427399L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423942L,
+                            Value = "鍗卞寲鍝�"
+                        },
+                        new
+                        {
+                            Id = 355697726726200L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423942L,
+                            Value = "娑蹭綋"
+                        },
+                        new
+                        {
+                            Id = 355697755361301L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423942L,
+                            Value = "璐甸噸鍝�"
+                        },
+                        new
+                        {
+                            Id = 355697755361302L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423942L,
+                            Value = "姘斾綋"
+                        },
+                        new
+                        {
+                            Id = 355697755361303L,
+                            Code = "5",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423942L,
+                            Value = "浣庢俯"
+                        },
+                        new
+                        {
+                            Id = 355698270015557L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698224758853L,
+                            Value = "鍏朵粬"
+                        },
+                        new
+                        {
+                            Id = 355698303508549L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698224758853L,
+                            Value = "绔嬩綋搴�"
+                        },
+                        new
+                        {
+                            Id = 355698328531013L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698224758853L,
+                            Value = "鏅�氬簱"
+                        },
+                        new
+                        {
+                            Id = 355698362712133L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698224758853L,
+                            Value = "鍏叡搴�"
+                        },
+                        new
+                        {
+                            Id = 355698476777541L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698441912389L,
+                            Value = "绌洪棽"
+                        },
+                        new
+                        {
+                            Id = 355698510786629L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698441912389L,
+                            Value = "寰呭叆"
+                        },
+                        new
+                        {
+                            Id = 355698549424197L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698441912389L,
+                            Value = "瀛樿揣"
+                        },
+                        new
+                        {
+                            Id = 355698576941125L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698441912389L,
+                            Value = "寰呭嚭"
+                        },
+                        new
+                        {
+                            Id = 355698694561861L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698661130309L,
+                            Value = "浣�"
+                        },
+                        new
+                        {
+                            Id = 355698716401733L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698661130309L,
+                            Value = "涓�"
+                        },
+                        new
+                        {
+                            Id = 355698740326469L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698661130309L,
+                            Value = "楂�"
+                        },
+                        new
+                        {
+                            Id = 355698898735173L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698855280709L,
+                            Value = "鍏嶆"
+                        },
+                        new
+                        {
+                            Id = 355698924970053L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698855280709L,
+                            Value = "鎶芥"
+                        },
+                        new
+                        {
+                            Id = 355699041800261L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699003580485L,
+                            Value = "鍘熸潗鏂�"
+                        },
+                        new
+                        {
+                            Id = 355699063255109L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699003580485L,
+                            Value = "鍗婃垚鍝�"
+                        },
+                        new
+                        {
+                            Id = 355699088330821L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699003580485L,
+                            Value = "鎴愬搧"
+                        },
+                        new
+                        {
+                            Id = 355699113156677L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699003580485L,
+                            Value = "绌烘墭"
+                        },
+                        new
+                        {
+                            Id = 355699219353669L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699189051461L,
+                            Value = "闀垮害"
+                        },
+                        new
+                        {
+                            Id = 355699243540549L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699189051461L,
+                            Value = "閲嶉噺"
+                        },
+                        new
+                        {
+                            Id = 355699345645637L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699314061381L,
+                            Value = "cm"
+                        },
+                        new
+                        {
+                            Id = 355699367575621L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699314061381L,
+                            Value = "t"
+                        },
+                        new
+                        {
+                            Id = 355699479236677L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699447029829L,
+                            Value = "鎵嬪姩"
+                        },
+                        new
+                        {
+                            Id = 355699505229893L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699447029829L,
+                            Value = "鑷姩"
+                        },
+                        new
+                        {
+                            Id = 355699615133765L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699576467525L,
+                            Value = "鍏ュ簱"
+                        },
+                        new
+                        {
+                            Id = 355699638476869L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699576467525L,
+                            Value = "鍑哄簱"
+                        },
+                        new
+                        {
+                            Id = 355699661889605L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699576467525L,
+                            Value = "绉诲簱"
+                        },
+                        new
+                        {
+                            Id = 355699760455749L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099717L,
+                            Value = "鏈墽琛�"
+                        },
+                        new
+                        {
+                            Id = 355699784736837L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099717L,
+                            Value = "鎵ц涓�"
+                        },
+                        new
+                        {
+                            Id = 355699813859397L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099717L,
+                            Value = "瀹屾垚"
+                        },
+                        new
+                        {
+                            Id = 355699760455798L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099718L,
+                            Value = "鏈墽琛�"
+                        },
+                        new
+                        {
+                            Id = 355699784736899L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099718L,
+                            Value = "鎵ц涓�-AGV"
+                        },
+                        new
+                        {
+                            Id = 355699813859300L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099718L,
+                            Value = "鎵ц涓�-杈撻�佺嚎"
+                        },
+                        new
+                        {
+                            Id = 355699813859301L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099718L,
+                            Value = "鎵ц涓�-鍫嗗灈鏈�"
+                        },
+                        new
+                        {
+                            Id = 355699813859302L,
+                            Code = "5",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099718L,
+                            Value = "绛夊緟"
+                        },
+                        new
+                        {
+                            Id = 355699813859303L,
+                            Code = "6",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099718L,
+                            Value = "瀹屾垚"
+                        },
+                        new
+                        {
+                            Id = 383290784104517L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 383290718294085L,
+                            Value = "娉℃搏鍒囧壊"
+                        },
+                        new
+                        {
+                            Id = 383290816860229L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 383290718294085L,
+                            Value = "瑁呴厤杞﹂棿"
+                        },
+                        new
+                        {
+                            Id = 383317608218693L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 383317542490181L,
+                            Value = "鏈紑濮�"
+                        },
+                        new
+                        {
+                            Id = 383317718302789L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 383317542490181L,
+                            Value = "杩愰�佷腑"
+                        },
+                        new
+                        {
+                            Id = 383317751234629L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 383317542490181L,
+                            Value = "瀹屾垚"
+                        },
+                        new
+                        {
+                            Id = 384394737053765L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 384394636988485L,
+                            Value = "AGV"
+                        },
+                        new
+                        {
+                            Id = 384394851618885L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 384394636988485L,
+                            Value = "鍫嗗灈鏈�"
+                        },
+                        new
+                        {
+                            Id = 384394877870149L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 384394636988485L,
+                            Value = "RGV"
+                        },
+                        new
+                        {
+                            Id = 385412179521605L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 385412129075269L,
+                            Value = "鍒囧壊"
+                        },
+                        new
+                        {
+                            Id = 385412217618501L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 385412129075269L,
+                            Value = "鍘嬪悎"
+                        },
+                        new
+                        {
+                            Id = 385412280418373L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 385412129075269L,
+                            Value = "CNC"
+                        },
+                        new
+                        {
+                            Id = 386523049214021L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120389L,
+                            Value = "鍏ュ簱鍙�"
+                        },
+                        new
+                        {
+                            Id = 386523071475781L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120389L,
+                            Value = "鍑哄簱鍙�"
+                        },
+                        new
+                        {
+                            Id = 386523049214022L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120390L,
+                            Value = "鍙戞场涓�绾�"
+                        },
+                        new
+                        {
+                            Id = 386523071475723L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120390L,
+                            Value = "鍙戞场浜岀嚎"
+                        },
+                        new
+                        {
+                            Id = 386523071475724L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120390L,
+                            Value = "鍙戞场涓夌嚎"
+                        },
+                        new
+                        {
+                            Id = 386523049214025L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120391L,
+                            Value = "鏈紑濮�"
+                        },
+                        new
+                        {
+                            Id = 386523071475726L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120391L,
+                            Value = "杩涜涓�"
+                        },
+                        new
+                        {
+                            Id = 386523071475727L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120391L,
+                            Value = "瀹屾垚"
+                        },
+                        new
+                        {
+                            Id = 386523071475728L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120391L,
+                            Value = "鎾ゅ洖"
+                        },
+                        new
+                        {
+                            Id = 386523049214029L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120392L,
+                            Value = "鍏ュ簱"
+                        },
+                        new
+                        {
+                            Id = 386523071475730L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120392L,
+                            Value = "鍑哄簱"
+                        },
+                        new
+                        {
+                            Id = 386523071475731L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120392L,
+                            Value = "璋冩嫧"
+                        },
+                        new
+                        {
+                            Id = 386523071475732L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120392L,
+                            Value = "瓒婂簱"
+                        },
+                        new
+                        {
+                            Id = 386523049214033L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120393L,
+                            Value = "鏈笅鍙�"
+                        },
+                        new
+                        {
+                            Id = 386523071475734L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120393L,
+                            Value = "宸蹭笅鍙�"
+                        },
+                        new
+                        {
+                            Id = 386523071475735L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120393L,
+                            Value = "鎵ц涓�"
+                        },
+                        new
+                        {
+                            Id = 386523071475736L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120393L,
+                            Value = "瀹屾垚"
+                        },
+                        new
+                        {
+                            Id = 386523071475737L,
+                            Code = "5",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120393L,
+                            Value = "鎾ゅ洖"
+                        },
+                        new
+                        {
+                            Id = 386523049214038L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "浜х嚎閫�搴�"
+                        },
+                        new
+                        {
+                            Id = 386523071475739L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "鐢熶骇鍏ュ簱"
+                        },
+                        new
+                        {
+                            Id = 386523071475740L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "浣欐枡鍥炲簱"
+                        },
+                        new
+                        {
+                            Id = 386523071475741L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "閲囪喘鍏ュ簱"
+                        },
+                        new
+                        {
+                            Id = 386523071475742L,
+                            Code = "5",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "鍏朵粬"
+                        },
+                        new
+                        {
+                            Id = 386523071475743L,
+                            Code = "6",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "鍙戣揣鍗�"
+                        },
+                        new
+                        {
+                            Id = 386523071475744L,
+                            Code = "7",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "鐢熶骇棰嗘枡"
+                        },
+                        new
+                        {
+                            Id = 386523071475745L,
+                            Code = "8",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "閿�鍞嚭搴�"
+                        },
+                        new
+                        {
+                            Id = 386523071475746L,
+                            Code = "9",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "渚涘簲鍟嗛��搴�"
+                        },
+                        new
+                        {
+                            Id = 386523071475747L,
+                            Code = "10",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "娉℃搏鍑哄簱"
+                        },
+                        new
+                        {
+                            Id = 386523071475748L,
+                            Code = "11",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "鍑哄簱鍏朵粬"
+                        },
+                        new
+                        {
+                            Id = 386523071475749L,
+                            Code = "12",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "浠撳簱璋冩嫧"
+                        },
+                        new
+                        {
+                            Id = 386523071475750L,
+                            Code = "13",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "搴撳尯璋冩嫧"
+                        },
+                        new
+                        {
+                            Id = 386523071475751L,
+                            Code = "14",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "搴撲綅璋冩嫧"
+                        },
+                        new
+                        {
+                            Id = 386523071475752L,
+                            Code = "15",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "椤圭洰璋冩嫧"
+                        },
+                        new
+                        {
+                            Id = 386523071475753L,
+                            Code = "16",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "璋冩嫧鍏朵粬"
+                        },
+                        new
+                        {
+                            Id = 386523071475754L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120395L,
+                            Value = "涓嶄娇鐢�"
+                        },
+                        new
+                        {
+                            Id = 386523071475755L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120395L,
+                            Value = "鏈鏍�"
+                        },
+                        new
+                        {
+                            Id = 386523071475756L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120395L,
+                            Value = "绛炬牳涓�"
+                        },
+                        new
+                        {
+                            Id = 386523071475757L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120395L,
+                            Value = "宸茬鏍�"
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysDictType", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("EnumClassName")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("瀵瑰簲鏋氫妇");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_dict_type");
+
+                    b.HasComment("瀛楀吀绫诲瀷琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070906483L,
+                            Code = "common_status",
+                            IsDeleted = false,
+                            Name = "閫氱敤鐘舵��",
+                            Remark = "閫氱敤鐘舵��",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906484L,
+                            Code = "sex",
+                            IsDeleted = false,
+                            Name = "鎬у埆",
+                            Remark = "鎬у埆瀛楀吀",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906485L,
+                            Code = "consts_type",
+                            IsDeleted = false,
+                            Name = "甯搁噺鐨勫垎绫�",
+                            Remark = "甯搁噺鐨勫垎绫伙紝鐢ㄤ簬鍖哄埆涓�缁勯厤缃�",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906486L,
+                            Code = "yes_or_no",
+                            IsDeleted = false,
+                            Name = "鏄惁",
+                            Remark = "鏄惁",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906487L,
+                            Code = "vis_type",
+                            IsDeleted = false,
+                            Name = "璁块棶绫诲瀷",
+                            Remark = "璁块棶绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906488L,
+                            Code = "menu_type",
+                            IsDeleted = false,
+                            Name = "鑿滃崟绫诲瀷",
+                            Remark = "鑿滃崟绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906489L,
+                            Code = "send_type",
+                            IsDeleted = false,
+                            Name = "鍙戦�佺被鍨�",
+                            Remark = "鍙戦�佺被鍨�",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906490L,
+                            Code = "open_type",
+                            IsDeleted = false,
+                            Name = "鎵撳紑鏂瑰紡",
+                            Remark = "鎵撳紑鏂瑰紡",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906491L,
+                            Code = "menu_weight",
+                            IsDeleted = false,
+                            Name = "鑿滃崟鏉冮噸",
+                            Remark = "鑿滃崟鏉冮噸",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906492L,
+                            Code = "data_scope_type",
+                            IsDeleted = false,
+                            Name = "鏁版嵁鑼冨洿绫诲瀷",
+                            Remark = "鏁版嵁鑼冨洿绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906494L,
+                            Code = "op_type",
+                            IsDeleted = false,
+                            Name = "鎿嶄綔绫诲瀷",
+                            Remark = "鎿嶄綔绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906495L,
+                            Code = "file_storage_location",
+                            IsDeleted = false,
+                            Name = "鏂囦欢瀛樺偍浣嶇疆",
+                            Remark = "鏂囦欢瀛樺偍浣嶇疆",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910533L,
+                            Code = "run_status",
+                            IsDeleted = false,
+                            Name = "杩愯鐘舵��",
+                            Remark = "瀹氭椂浠诲姟杩愯鐘舵��",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910534L,
+                            Code = "notice_type",
+                            IsDeleted = false,
+                            Name = "閫氱煡鍏憡绫诲瀷",
+                            Remark = "閫氱煡鍏憡绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910535L,
+                            Code = "notice_status",
+                            IsDeleted = false,
+                            Name = "閫氱煡鍏憡鐘舵��",
+                            Remark = "閫氱煡鍏憡鐘舵��",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910536L,
+                            Code = "yes_true_false",
+                            IsDeleted = false,
+                            Name = "鏄惁boolean",
+                            Remark = "鏄惁boolean",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910537L,
+                            Code = "code_gen_create_type",
+                            IsDeleted = false,
+                            Name = "浠g爜鐢熸垚鏂瑰紡",
+                            Remark = "浠g爜鐢熸垚鏂瑰紡",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910538L,
+                            Code = "request_type",
+                            IsDeleted = false,
+                            Name = "璇锋眰鏂瑰紡",
+                            Remark = "璇锋眰鏂瑰紡",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070922827L,
+                            Code = "code_gen_effect_type",
+                            IsDeleted = false,
+                            Name = "浠g爜鐢熸垚浣滅敤绫诲瀷",
+                            Remark = "浠g爜鐢熸垚浣滅敤绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070922828L,
+                            Code = "code_gen_query_type",
+                            IsDeleted = false,
+                            Name = "浠g爜鐢熸垚鏌ヨ绫诲瀷",
+                            Remark = "浠g爜鐢熸垚鏌ヨ绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070922829L,
+                            Code = "code_gen_net_type",
+                            IsDeleted = false,
+                            Name = "浠g爜鐢熸垚.NET绫诲瀷",
+                            Remark = "浠g爜鐢熸垚.NET绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070926941L,
+                            Code = "role_type",
+                            IsDeleted = false,
+                            Name = "瑙掕壊绫诲瀷",
+                            Remark = "瑙掕壊绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070926942L,
+                            Code = "org_type",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯绫诲瀷",
+                            Remark = "鏈烘瀯绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 285605149831237L,
+                            Code = "form_type",
+                            IsDeleted = false,
+                            Name = "琛ㄥ崟绫诲瀷",
+                            Remark = "琛ㄥ崟绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 285641358889029L,
+                            Code = "workflow_group",
+                            IsDeleted = false,
+                            Name = "娴佺▼鍒嗙被",
+                            Remark = "娴佺▼鍒嗙被",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355694205325381L,
+                            Code = "container_type",
+                            IsDeleted = false,
+                            Name = "鎵樼洏绫诲瀷",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355697881423941L,
+                            Code = "container_status",
+                            IsDeleted = false,
+                            Name = "鎵樼洏鐘舵��",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355697881423942L,
+                            Code = "container_category",
+                            IsDeleted = false,
+                            Name = "鎵樼洏鍒嗙被",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355698224758853L,
+                            Code = "area_type",
+                            IsDeleted = false,
+                            Name = "搴撳尯绫诲瀷",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355698441912389L,
+                            Code = "place_status",
+                            IsDeleted = false,
+                            Name = "搴撲綅鐘舵��",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355698661130309L,
+                            Code = "height_level",
+                            IsDeleted = false,
+                            Name = "搴撲綅楂樺害",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355698855280709L,
+                            Code = "material_inspection",
+                            IsDeleted = false,
+                            Name = "鐗╂枡妫�楠�",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355699003580485L,
+                            Code = "material_type",
+                            IsDeleted = false,
+                            Name = "鐗╂枡绫诲埆",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355699189051461L,
+                            Code = "unit_type",
+                            IsDeleted = false,
+                            Name = "鍗曚綅绫诲埆",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355699314061381L,
+                            Code = "unitno_type",
+                            IsDeleted = false,
+                            Name = "鍗曚綅缂栧彿",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355699447029829L,
+                            Code = "task_model",
+                            IsDeleted = false,
+                            Name = "浠诲姟鏂瑰紡",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355699576467525L,
+                            Code = "task_type",
+                            IsDeleted = false,
+                            Name = "浠诲姟绫诲瀷",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355699731099717L,
+                            Code = "task_status",
+                            IsDeleted = false,
+                            Name = "浠诲姟鐘舵��",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355699731099718L,
+                            Code = "taskdodevice_statusenum",
+                            IsDeleted = false,
+                            Name = "浠诲姟璁惧鐘舵��",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 383290718294085L,
+                            Code = "les_workshop_type",
+                            IsDeleted = false,
+                            Name = "鎵�灞炶溅闂�",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 383317542490181L,
+                            Code = "les_takematerials_status",
+                            IsDeleted = false,
+                            Name = "鍙枡鍗曠姸鎬�",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 384394636988485L,
+                            Code = "dodevice_type",
+                            IsDeleted = false,
+                            Name = "璁惧绫诲瀷",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 385412129075269L,
+                            Code = "lesworkshop_section",
+                            IsDeleted = false,
+                            Name = "宸ユ",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 386522984120389L,
+                            Code = "les_entrance_type",
+                            IsDeleted = false,
+                            Name = "搴撳彛绫诲瀷",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 386522984120390L,
+                            Code = "blankingproductionLine_enum",
+                            IsDeleted = false,
+                            Name = "涓嬫枡浜х嚎",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 386522984120391L,
+                            Code = "orderdetails_statusenum",
+                            IsDeleted = false,
+                            Name = "鍗曟嵁鏄庣粏琛ㄧ姸鎬�",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 386522984120392L,
+                            Code = "orderlargecategory_Enum",
+                            IsDeleted = false,
+                            Name = "鍗曟嵁澶х被",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 386522984120393L,
+                            Code = "order_statusenum",
+                            IsDeleted = false,
+                            Name = "鍗曟嵁涓昏〃鐘舵��",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 386522984120394L,
+                            Code = "ordersubclass_enum",
+                            IsDeleted = false,
+                            Name = "鍗曟嵁灏忕被",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 386522984120395L,
+                            Code = "issue_state",
+                            IsDeleted = false,
+                            Name = "绛炬牳鐘舵��",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysEmp", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("鐢ㄦ埛Id");
+
+                    b.Property<string>("JobNum")
+                        .HasMaxLength(30)
+                        .HasColumnType("nvarchar(30)")
+                        .HasComment("宸ュ彿");
+
+                    b.Property<long>("OrgId")
+                        .HasColumnType("bigint")
+                        .HasComment("鏈烘瀯Id");
+
+                    b.Property<string>("OrgName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鏈烘瀯鍚嶇О");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_emp");
+
+                    b.HasComment("鍛樺伐琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070910551L,
+                            JobNum = "D1001",
+                            OrgId = 142307070910539L,
+                            OrgName = "绉熸埛3鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910552L,
+                            JobNum = "D1002",
+                            OrgId = 142307070910539L,
+                            OrgName = "绉熸埛3鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910553L,
+                            JobNum = "D1003",
+                            OrgId = 142307070910539L,
+                            OrgName = "绉熸埛3鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910554L,
+                            JobNum = "D1001",
+                            OrgId = 142307070910547L,
+                            OrgName = "绉熸埛1鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910555L,
+                            JobNum = "D1002",
+                            OrgId = 142307070910547L,
+                            OrgName = "绉熸埛1鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910556L,
+                            JobNum = "D1003",
+                            OrgId = 142307070910547L,
+                            OrgName = "绉熸埛1鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910557L,
+                            JobNum = "D1001",
+                            OrgId = 142307070910548L,
+                            OrgName = "绉熸埛2鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910558L,
+                            JobNum = "D1002",
+                            OrgId = 142307070910548L,
+                            OrgName = "绉熸埛2鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910559L,
+                            JobNum = "D1003",
+                            OrgId = 142307070910548L,
+                            OrgName = "绉熸埛2鍏徃"
+                        },
+                        new
+                        {
+                            Id = 358533464608837L,
+                            JobNum = "",
+                            OrgId = 142307070910539L,
+                            OrgName = "浼熸湰鑲′唤鏈夐檺鍏徃"
+                        },
+                        new
+                        {
+                            Id = 358536045723717L,
+                            JobNum = "",
+                            OrgId = 142307070910542L,
+                            OrgName = "鐮斿彂閮�"
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysEmpExtOrgPos", b =>
+                {
+                    b.Property<long>("SysEmpId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍛樺伐Id");
+
+                    b.Property<long>("SysOrgId")
+                        .HasColumnType("bigint")
+                        .HasComment("鏈烘瀯Id");
+
+                    b.Property<long>("SysPosId")
+                        .HasColumnType("bigint")
+                        .HasComment("鑱屼綅Id");
+
+                    b.HasKey("SysEmpId", "SysOrgId", "SysPosId");
+
+                    b.HasIndex("SysOrgId");
+
+                    b.HasIndex("SysPosId");
+
+                    b.ToTable("sys_emp_ext_org_pos");
+
+                    b.HasComment("鍛樺伐闄勫睘鏈烘瀯鑱屼綅琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            SysEmpId = 142307070910551L,
+                            SysOrgId = 142307070910539L,
+                            SysPosId = 142307070910547L
+                        },
+                        new
+                        {
+                            SysEmpId = 142307070910551L,
+                            SysOrgId = 142307070910540L,
+                            SysPosId = 142307070910548L
+                        },
+                        new
+                        {
+                            SysEmpId = 142307070910551L,
+                            SysOrgId = 142307070910541L,
+                            SysPosId = 142307070910549L
+                        },
+                        new
+                        {
+                            SysEmpId = 142307070910551L,
+                            SysOrgId = 142307070910542L,
+                            SysPosId = 142307070910550L
+                        },
+                        new
+                        {
+                            SysEmpId = 142307070910553L,
+                            SysOrgId = 142307070910542L,
+                            SysPosId = 142307070910547L
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysEmpPos", b =>
+                {
+                    b.Property<long>("SysEmpId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍛樺伐Id");
+
+                    b.Property<long>("SysPosId")
+                        .HasColumnType("bigint")
+                        .HasComment("鑱屼綅Id");
+
+                    b.HasKey("SysEmpId", "SysPosId");
+
+                    b.HasIndex("SysPosId");
+
+                    b.ToTable("sys_emp_pos");
+
+                    b.HasComment("鍛樺伐鑱屼綅琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            SysEmpId = 142307070910551L,
+                            SysPosId = 142307070910547L
+                        },
+                        new
+                        {
+                            SysEmpId = 142307070910551L,
+                            SysPosId = 142307070910548L
+                        },
+                        new
+                        {
+                            SysEmpId = 142307070910552L,
+                            SysPosId = 142307070910549L
+                        },
+                        new
+                        {
+                            SysEmpId = 142307070910553L,
+                            SysPosId = 142307070910547L
+                        },
+                        new
+                        {
+                            SysEmpId = 358533464608837L,
+                            SysPosId = 142307070910550L
+                        },
+                        new
+                        {
+                            SysEmpId = 358536045723717L,
+                            SysPosId = 142307070910550L
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysExcelTemplate", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AppName")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鎵�灞炲簲鐢�");
+
+                    b.Property<string>("ClassName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("绫诲悕");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("DataStartLine")
+                        .HasColumnType("int")
+                        .HasComment("鏁版嵁寮�濮嬭");
+
+                    b.Property<int>("HeadStartLine")
+                        .HasColumnType("int")
+                        .HasComment("琛ㄥご寮�濮嬭");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("妯℃澘鍚嶇О");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<string>("TemplateFileName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("妯℃澘鏂囦欢鍚嶇О");
+
+                    b.Property<string>("UnionUniqueFields")
+                        .IsRequired()
+                        .HasMaxLength(300)
+                        .HasColumnType("nvarchar(300)")
+                        .HasComment("鍞竴瀛楁闆�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("Version")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鐗堟湰");
+
+                    b.HasKey("Id");
+
+                    b.HasAlternateKey("ClassName", "Version", "AppName");
+
+                    b.ToTable("sys_excel_template");
+
+                    b.HasComment("Excel妯℃澘");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysFile", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("FileBucket")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏂囦欢浠撳簱");
+
+                    b.Property<int>("FileLocation")
+                        .HasColumnType("int")
+                        .HasComment("鏂囦欢瀛樺偍浣嶇疆");
+
+                    b.Property<string>("FileObjectName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("瀛樺偍鍒癰ucket鐨勫悕绉�");
+
+                    b.Property<string>("FileOriginName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏂囦欢鍚嶇О");
+
+                    b.Property<string>("FilePath")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("瀛樺偍璺緞");
+
+                    b.Property<string>("FileSizeInfo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鏂囦欢澶у皬淇℃伅");
+
+                    b.Property<string>("FileSizeKb")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("鏂囦欢澶у皬kb");
+
+                    b.Property<string>("FileSuffix")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鏂囦欢鍚庣紑");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_file");
+
+                    b.HasComment("鏂囦欢淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysForm", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("FormJson")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("form琛ㄥ崟Json");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<bool>("Publish")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍙戝竷");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鏍囬");
+
+                    b.Property<long>("TypeId")
+                        .HasColumnType("bigint")
+                        .HasComment("琛ㄥ崟绫诲瀷ID");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("Version")
+                        .HasColumnType("int")
+                        .HasComment("鐗堟湰");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_forms");
+
+                    b.HasComment("琛ㄥ崟琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysLogAudit", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int");
+
+                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+                    b.Property<string>("ColumnName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒楀悕");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鎿嶄綔鏃堕棿");
+
+                    b.Property<string>("NewValue")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鏂板��");
+
+                    b.Property<string>("OldValue")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鏃у��");
+
+                    b.Property<int>("Operate")
+                        .HasColumnType("int")
+                        .HasComment("鎿嶄綔鏂瑰紡");
+
+                    b.Property<string>("TableName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("琛ㄥ悕");
+
+                    b.Property<long>("UserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鎿嶄綔浜篒d");
+
+                    b.Property<string>("UserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎿嶄綔浜哄悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_log_audit");
+
+                    b.HasComment("瀹¤鏃ュ織琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysLogEx", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int");
+
+                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+                    b.Property<string>("Account")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎿嶄綔浜�");
+
+                    b.Property<string>("ClassName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("绫诲悕");
+
+                    b.Property<string>("ExceptionMsg")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("寮傚父淇℃伅");
+
+                    b.Property<string>("ExceptionName")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("寮傚父鍚嶇О");
+
+                    b.Property<string>("ExceptionSource")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("寮傚父婧�");
+
+                    b.Property<DateTimeOffset?>("ExceptionTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("寮傚父鏃堕棿");
+
+                    b.Property<string>("MethodName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏂规硶鍚�");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("ParamsObj")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍙傛暟瀵硅薄");
+
+                    b.Property<string>("StackTrace")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍫嗘爤淇℃伅");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_log_ex");
+
+                    b.HasComment("寮傚父鏃ュ織琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysLogOp", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int");
+
+                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+                    b.Property<string>("Account")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎿嶄綔浜�");
+
+                    b.Property<string>("Browser")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("娴忚鍣�");
+
+                    b.Property<string>("ClassName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("绫诲悕绉�");
+
+                    b.Property<long>("ElapsedTime")
+                        .HasColumnType("bigint")
+                        .HasComment("鑰楁椂");
+
+                    b.Property<string>("Ip")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("IP");
+
+                    b.Property<string>("Location")
+                        .HasMaxLength(1024)
+                        .HasColumnType("nvarchar(1024)")
+                        .HasComment("鍦板潃");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍏蜂綋娑堟伅");
+
+                    b.Property<string>("MethodName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏂规硶鍚嶇О");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("OpTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鎿嶄綔鏃堕棿");
+
+                    b.Property<string>("Os")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鎿嶄綔绯荤粺");
+
+                    b.Property<string>("Param")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璇锋眰鍙傛暟");
+
+                    b.Property<string>("ReqMethod")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("璇锋眰鏂瑰紡");
+
+                    b.Property<string>("Result")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("杩斿洖缁撴灉");
+
+                    b.Property<int>("Success")
+                        .HasColumnType("int")
+                        .HasComment("鏄惁鎵ц鎴愬姛");
+
+                    b.Property<string>("Url")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("璇锋眰鍦板潃");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_log_op");
+
+                    b.HasComment("鎿嶄綔鏃ュ織琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysLogVis", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int");
+
+                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+                    b.Property<string>("Account")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璁块棶浜�");
+
+                    b.Property<string>("Browser")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("娴忚鍣�");
+
+                    b.Property<string>("Ip")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("IP");
+
+                    b.Property<string>("Location")
+                        .HasMaxLength(1024)
+                        .HasColumnType("nvarchar(1024)")
+                        .HasComment("鍦板潃");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍏蜂綋娑堟伅");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("Os")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鎿嶄綔绯荤粺");
+
+                    b.Property<int>("Success")
+                        .HasColumnType("int")
+                        .HasComment("鏄惁鎵ц鎴愬姛");
+
+                    b.Property<DateTimeOffset?>("VisTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("璁块棶鏃堕棿");
+
+                    b.Property<int>("VisType")
+                        .HasColumnType("int")
+                        .HasComment("璁块棶绫诲瀷");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_log_vis");
+
+                    b.HasComment("璁块棶鏃ュ織琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysMenu", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Application")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴旂敤鍒嗙被");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<string>("Component")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("缁勪欢鍦板潃");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("Icon")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鍥炬爣");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Link")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍐呴摼鍦板潃");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<int>("OpenType")
+                        .HasColumnType("int")
+                        .HasComment("鎵撳紑鏂瑰紡");
+
+                    b.Property<string>("Permission")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏉冮檺鏍囪瘑");
+
+                    b.Property<long>("Pid")
+                        .HasColumnType("bigint")
+                        .HasComment("鐖禝d");
+
+                    b.Property<string>("Pids")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鐖禝ds");
+
+                    b.Property<string>("Redirect")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("閲嶅畾鍚戝湴鍧�");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<string>("Router")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("璺敱鍦板潃");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int")
+                        .HasComment("鑿滃崟绫诲瀷");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("Visible")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鏄惁鍙");
+
+                    b.Property<int>("Weight")
+                        .HasColumnType("int")
+                        .HasComment("鏉冮噸");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_menu");
+
+                    b.HasComment("鑿滃崟琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307000914633L,
+                            Application = "manage",
+                            Code = "sys_mgr",
+                            Component = "PageView",
+                            Icon = "team",
+                            IsDeleted = false,
+                            Name = "缁勭粐鏋舵瀯",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/sys",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910581L,
+                            Application = "manage",
+                            Code = "sys_org_mgr",
+                            Component = "system/org/index",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯绠$悊",
+                            OpenType = 1,
+                            Pid = 142307000914633L,
+                            Pids = "[0],[142307000914633],",
+                            Router = "/org",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910582L,
+                            Application = "manage",
+                            Code = "sys_org_mgr_page",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysOrg:page",
+                            Pid = 142307070910581L,
+                            Pids = "[0],[142307000914633],[142307070910581],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910583L,
+                            Application = "manage",
+                            Code = "sys_org_mgr_list",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysOrg:list",
+                            Pid = 142307070910581L,
+                            Pids = "[0],[142307000914633],[142307070910581],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910584L,
+                            Application = "manage",
+                            Code = "sys_org_mgr_add",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysOrg:add",
+                            Pid = 142307070910581L,
+                            Pids = "[0],[142307000914633],[142307070910581],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910585L,
+                            Application = "manage",
+                            Code = "sys_org_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysOrg:edit",
+                            Pid = 142307070910581L,
+                            Pids = "[0],[142307000914633],[142307070910581],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910586L,
+                            Application = "manage",
+                            Code = "sys_org_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysOrg:delete",
+                            Pid = 142307070910581L,
+                            Pids = "[0],[142307000914633],[142307070910581],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910587L,
+                            Application = "manage",
+                            Code = "sys_org_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysOrg:detail",
+                            Pid = 142307070910581L,
+                            Pids = "[0],[142307000914633],[142307070910581],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910588L,
+                            Application = "manage",
+                            Code = "sys_org_mgr_tree",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯鏍�",
+                            OpenType = 0,
+                            Permission = "sysOrg:tree",
+                            Pid = 142307070910581L,
+                            Pids = "[0],[142307000914633],[142307070910581],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910589L,
+                            Application = "manage",
+                            Code = "sys_pos_mgr",
+                            Component = "system/pos/index",
+                            IsDeleted = false,
+                            Name = "鑱屼綅绠$悊",
+                            OpenType = 1,
+                            Pid = 142307000914633L,
+                            Pids = "[0],[142307000914633],",
+                            Router = "/pos",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910590L,
+                            Application = "manage",
+                            Code = "sys_pos_mgr_page",
+                            IsDeleted = false,
+                            Name = "鑱屼綅鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysPos:page",
+                            Pid = 142307070910589L,
+                            Pids = "[0],[142307000914633],[142307070910589],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910591L,
+                            Application = "manage",
+                            Code = "sys_pos_mgr_list",
+                            IsDeleted = false,
+                            Name = "鑱屼綅鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysPos:list",
+                            Pid = 142307070910589L,
+                            Pids = "[0],[142307000914633],[142307070910589],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914629L,
+                            Application = "manage",
+                            Code = "sys_pos_mgr_add",
+                            IsDeleted = false,
+                            Name = "鑱屼綅澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysPos:add",
+                            Pid = 142307070910589L,
+                            Pids = "[0],[142307000914633],[142307070910589],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914630L,
+                            Application = "manage",
+                            Code = "sys_pos_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鑱屼綅缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysPos:edit",
+                            Pid = 142307070910589L,
+                            Pids = "[0],[142307000914633],[142307070910589],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914631L,
+                            Application = "manage",
+                            Code = "sys_pos_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鑱屼綅鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysPos:delete",
+                            Pid = 142307070910589L,
+                            Pids = "[0],[142307000914633],[142307070910589],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914632L,
+                            Application = "manage",
+                            Code = "sys_pos_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鑱屼綅璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysPos:detail",
+                            Pid = 142307070910589L,
+                            Pids = "[0],[142307000914633],[142307070910589],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910563L,
+                            Application = "manage",
+                            Code = "auth_manager",
+                            Component = "PageView",
+                            Icon = "safety-certificate",
+                            IsDeleted = false,
+                            Name = "鏉冮檺绠$悊",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/auth",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910564L,
+                            Application = "manage",
+                            Code = "sys_user_mgr",
+                            Component = "system/user/index",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛绠$悊",
+                            OpenType = 1,
+                            Pid = 142307070910563L,
+                            Pids = "[0],[142307070910563],",
+                            Router = "/mgr_user",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910565L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_page",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysUser:page",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910566L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysUser:edit",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910567L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_add",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysUser:add",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910568L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysUser:delete",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910569L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysUser:detail",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910570L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_export",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛瀵煎嚭",
+                            OpenType = 0,
+                            Permission = "sysUser:export",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910571L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_selector",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛閫夋嫨鍣�",
+                            OpenType = 0,
+                            Permission = "sysUser:selector",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910572L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_grant_role",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鎺堟潈瑙掕壊",
+                            OpenType = 0,
+                            Permission = "sysUser:grantRole",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910573L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_own_role",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鎷ユ湁瑙掕壊",
+                            OpenType = 0,
+                            Permission = "sysUser:ownRole",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910574L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_grant_data",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鎺堟潈鏁版嵁",
+                            OpenType = 0,
+                            Permission = "sysUser:grantData",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910575L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_own_data",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鎷ユ湁鏁版嵁",
+                            OpenType = 0,
+                            Permission = "sysUser:ownData",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910576L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_update_info",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鏇存柊淇℃伅",
+                            OpenType = 0,
+                            Permission = "sysUser:updateInfo",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910577L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_update_pwd",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛淇敼瀵嗙爜",
+                            OpenType = 0,
+                            Permission = "sysUser:updatePwd",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910578L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_change_status",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛淇敼鐘舵��",
+                            OpenType = 0,
+                            Permission = "sysUser:changeStatus",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910579L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_update_avatar",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛淇敼澶村儚",
+                            OpenType = 0,
+                            Permission = "sysUser:updateAvatar",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910580L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_reset_pwd",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛閲嶇疆瀵嗙爜",
+                            OpenType = 0,
+                            Permission = "sysUser:resetPwd",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918777L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_login",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鐧诲綍淇℃伅",
+                            OpenType = 0,
+                            Permission = "getLoginUser",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 1,
+                            Type = 2,
+                            Visible = "N",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914651L,
+                            Application = "manage",
+                            Code = "sys_role_mgr",
+                            Component = "system/role/index",
+                            IsDeleted = false,
+                            Name = "瑙掕壊绠$悊",
+                            OpenType = 1,
+                            Pid = 142307070910563L,
+                            Pids = "[0],[142307070910563],",
+                            Router = "/role",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914652L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_page",
+                            IsDeleted = false,
+                            Name = "瑙掕壊鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysRole:page",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914653L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_add",
+                            IsDeleted = false,
+                            Name = "瑙掕壊澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysRole:add",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914654L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_edit",
+                            IsDeleted = false,
+                            Name = "瑙掕壊缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysRole:edit",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914655L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_delete",
+                            IsDeleted = false,
+                            Name = "瑙掕壊鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysRole:delete",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914656L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_detail",
+                            IsDeleted = false,
+                            Name = "瑙掕壊璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysRole:detail",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914657L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_drop_down",
+                            IsDeleted = false,
+                            Name = "瑙掕壊涓嬫媺",
+                            OpenType = 0,
+                            Permission = "sysRole:dropDown",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914658L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_grant_menu",
+                            IsDeleted = false,
+                            Name = "瑙掕壊鎺堟潈鑿滃崟",
+                            OpenType = 0,
+                            Permission = "sysRole:grantMenu",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914659L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_own_menu",
+                            IsDeleted = false,
+                            Name = "瑙掕壊鎷ユ湁鑿滃崟",
+                            OpenType = 0,
+                            Permission = "sysRole:ownMenu",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914660L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_grant_data",
+                            IsDeleted = false,
+                            Name = "瑙掕壊鎺堟潈鏁版嵁",
+                            OpenType = 0,
+                            Permission = "sysRole:grantData",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914661L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_own_data",
+                            IsDeleted = false,
+                            Name = "瑙掕壊鎷ユ湁鏁版嵁",
+                            OpenType = 0,
+                            Permission = "sysRole:ownData",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914648L,
+                            Application = "manage",
+                            Code = "sys_menu_mgr_grant_tree",
+                            IsDeleted = false,
+                            Name = "鑿滃崟鎺堟潈鏍�",
+                            OpenType = 0,
+                            Permission = "sysMenu:treeForGrant",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914649L,
+                            Application = "manage",
+                            Code = "sys_menu_mgr_tree",
+                            IsDeleted = false,
+                            Name = "鑿滃崟鏍�",
+                            OpenType = 0,
+                            Permission = "sysMenu:tree",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914633L,
+                            Application = "system",
+                            Code = "sys_platform",
+                            Component = "PageView",
+                            Icon = "safety-certificate",
+                            IsDeleted = false,
+                            Name = "骞冲彴绠$悊",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/platform",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914634L,
+                            Application = "system",
+                            Code = "sys_app_mgr",
+                            Component = "system/app/index",
+                            IsDeleted = false,
+                            Name = "搴旂敤绠$悊",
+                            OpenType = 1,
+                            Pid = 142307070914633L,
+                            Pids = "[0],[142307070914633],",
+                            Router = "/app",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914635L,
+                            Application = "system",
+                            Code = "sys_app_mgr_page",
+                            IsDeleted = false,
+                            Name = "搴旂敤鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysApp:page",
+                            Pid = 142307070914634L,
+                            Pids = "[0],[142307070914633],[142307070914634],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914636L,
+                            Application = "system",
+                            Code = "sys_app_mgr_list",
+                            IsDeleted = false,
+                            Name = "搴旂敤鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysApp:list",
+                            Pid = 142307070914634L,
+                            Pids = "[0],[142307070914633],[142307070914634],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914637L,
+                            Application = "system",
+                            Code = "sys_app_mgr_add",
+                            IsDeleted = false,
+                            Name = "搴旂敤澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysApp:add",
+                            Pid = 142307070914634L,
+                            Pids = "[0],[142307070914633],[142307070914634],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914638L,
+                            Application = "system",
+                            Code = "sys_app_mgr_edit",
+                            IsDeleted = false,
+                            Name = "搴旂敤缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysApp:edit",
+                            Pid = 142307070914634L,
+                            Pids = "[0],[142307070914633],[142307070914634],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914639L,
+                            Application = "system",
+                            Code = "sys_app_mgr_delete",
+                            IsDeleted = false,
+                            Name = "搴旂敤鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysApp:delete",
+                            Pid = 142307070914634L,
+                            Pids = "[0],[142307070914633],[142307070914634],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914640L,
+                            Application = "system",
+                            Code = "sys_app_mgr_detail",
+                            IsDeleted = false,
+                            Name = "搴旂敤璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysApp:detail",
+                            Pid = 142307070914634L,
+                            Pids = "[0],[142307070914633],[142307070914634],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914641L,
+                            Application = "system",
+                            Code = "sys_app_mgr_set_as_default",
+                            IsDeleted = false,
+                            Name = "璁句负榛樿搴旂敤",
+                            OpenType = 0,
+                            Permission = "sysApp:setAsDefault",
+                            Pid = 142307070914634L,
+                            Pids = "[0],[142307070914633],[142307070914634],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914642L,
+                            Application = "system",
+                            Code = "sys_menu_mgr",
+                            Component = "system/menu/index",
+                            IsDeleted = false,
+                            Name = "鑿滃崟绠$悊",
+                            OpenType = 1,
+                            Pid = 142307070914633L,
+                            Pids = "[0],[142307070914633],",
+                            Router = "/menu",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914643L,
+                            Application = "system",
+                            Code = "sys_menu_mgr_list",
+                            IsDeleted = false,
+                            Name = "鑿滃崟鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysMenu:list",
+                            Pid = 142307070914642L,
+                            Pids = "[0],[142307070914633],[142307070914642],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914644L,
+                            Application = "system",
+                            Code = "sys_menu_mgr_add",
+                            IsDeleted = false,
+                            Name = "鑿滃崟澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysMenu:add",
+                            Pid = 142307070914642L,
+                            Pids = "[0],[142307070914633],[142307070914642],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914645L,
+                            Application = "system",
+                            Code = "sys_menu_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鑿滃崟缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysMenu:edit",
+                            Pid = 142307070914642L,
+                            Pids = "[0],[142307070914633],[142307070914642],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914646L,
+                            Application = "system",
+                            Code = "sys_menu_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鑿滃崟鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysMenu:delete",
+                            Pid = 142307070914642L,
+                            Pids = "[0],[142307070914633],[142307070914642],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914647L,
+                            Application = "system",
+                            Code = "sys_menu_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鑿滃崟璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysMenu:detail",
+                            Pid = 142307070914642L,
+                            Pids = "[0],[142307070914633],[142307070914642],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914650L,
+                            Application = "system",
+                            Code = "sys_menu_mgr_change",
+                            IsDeleted = false,
+                            Name = "鑿滃崟鍒囨崲",
+                            OpenType = 0,
+                            Permission = "sysMenu:change",
+                            Pid = 142307070914642L,
+                            Pids = "[0],[142307070914633],[142307070914642],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 494834310545477L,
+                            Application = "system",
+                            Code = "sys_wmspdapower_mgr",
+                            Component = "main/WmsPdaPower/index",
+                            IsDeleted = false,
+                            Name = "Pda鑿滃崟",
+                            OpenType = 1,
+                            Pid = 142307070914633L,
+                            Pids = "[0],[142307070914633],",
+                            Router = "/WmsPdaPower",
+                            Sort = 101,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914662L,
+                            Application = "system",
+                            Code = "system_tools",
+                            Component = "PageView",
+                            Icon = "euro",
+                            IsDeleted = false,
+                            Name = "寮�鍙戠鐞�",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/tools",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914663L,
+                            Application = "system",
+                            Code = "system_tools_config",
+                            Component = "system/config/index",
+                            IsDeleted = false,
+                            Name = "绯荤粺閰嶇疆",
+                            OpenType = 1,
+                            Pid = 142307070914662L,
+                            Pids = "[0],[142307070914662],",
+                            Router = "/config",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914664L,
+                            Application = "system",
+                            Code = "system_tools_config_page",
+                            IsDeleted = false,
+                            Name = "閰嶇疆鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysConfig:page",
+                            Pid = 142307070914663L,
+                            Pids = "[0],[142307070914662],[142307070914663],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914665L,
+                            Application = "system",
+                            Code = "system_tools_config_list",
+                            IsDeleted = false,
+                            Name = "閰嶇疆鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysConfig:list",
+                            Pid = 142307070914663L,
+                            Pids = "[0],[142307070914662],[142307070914663],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914666L,
+                            Application = "system",
+                            Code = "system_tools_config_add",
+                            IsDeleted = false,
+                            Name = "閰嶇疆澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysConfig:add",
+                            Pid = 142307070914663L,
+                            Pids = "[0],[142307070914662],[142307070914663],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914667L,
+                            Application = "system",
+                            Code = "system_tools_config_edit",
+                            IsDeleted = false,
+                            Name = "閰嶇疆缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysConfig:edit",
+                            Pid = 142307070914663L,
+                            Pids = "[0],[142307070914662],[142307070914663],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914668L,
+                            Application = "system",
+                            Code = "system_tools_config_delete",
+                            IsDeleted = false,
+                            Name = "閰嶇疆鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysConfig:delete",
+                            Pid = 142307070914663L,
+                            Pids = "[0],[142307070914662],[142307070914663],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914669L,
+                            Application = "system",
+                            Code = "system_tools_config_detail",
+                            IsDeleted = false,
+                            Name = "閰嶇疆璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysConfig:detail",
+                            Pid = 142307070914663L,
+                            Pids = "[0],[142307070914662],[142307070914663],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914678L,
+                            Application = "system",
+                            Code = "sys_dict_mgr",
+                            Component = "system/dict/index",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绠$悊",
+                            OpenType = 1,
+                            Pid = 142307070914662L,
+                            Pids = "[0],[142307070914662],",
+                            Router = "/dict",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914679L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_page",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysDictType:page",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914680L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_list",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysDictType:list",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914681L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_add",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysDictType:add",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914682L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_delete",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysDictType:delete",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914683L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_edit",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysDictType:edit",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914684L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_detail",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysDictType:detail",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914685L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_drop_down",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷涓嬫媺",
+                            OpenType = 0,
+                            Permission = "sysDictType:dropDown",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914686L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_change_status",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷淇敼鐘舵��",
+                            OpenType = 0,
+                            Permission = "sysDictType:changeStatus",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914687L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_page",
+                            IsDeleted = false,
+                            Name = "瀛楀吀鍊兼煡璇�",
+                            OpenType = 0,
+                            Permission = "sysDictData:page",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918725L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_list",
+                            IsDeleted = false,
+                            Name = "瀛楀吀鍊煎垪琛�",
+                            OpenType = 0,
+                            Permission = "sysDictData:list",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918726L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_add",
+                            IsDeleted = false,
+                            Name = "瀛楀吀鍊煎鍔�",
+                            OpenType = 0,
+                            Permission = "sysDictData:add",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918727L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_delete",
+                            IsDeleted = false,
+                            Name = "瀛楀吀鍊煎垹闄�",
+                            OpenType = 0,
+                            Permission = "sysDictData:delete",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918728L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_edit",
+                            IsDeleted = false,
+                            Name = "瀛楀吀鍊肩紪杈�",
+                            OpenType = 0,
+                            Permission = "sysDictData:edit",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918729L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_detail",
+                            IsDeleted = false,
+                            Name = "瀛楀吀鍊艰鎯�",
+                            OpenType = 0,
+                            Permission = "sysDictData:detail",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918730L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_change_status",
+                            IsDeleted = false,
+                            Name = "瀛楀吀鍊间慨鏀圭姸鎬�",
+                            OpenType = 0,
+                            Permission = "sysDictData:changeStatus",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918731L,
+                            Application = "system",
+                            Code = "sys_swagger_mgr",
+                            Component = "Iframe",
+                            IsDeleted = false,
+                            Link = "http://localhost:6677/swagger/",
+                            Name = "鎺ュ彛鏂囨。",
+                            OpenType = 2,
+                            Pid = 142307070914662L,
+                            Pids = "[0],[142307070914662],",
+                            Router = "/swagger",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918732L,
+                            Application = "manage",
+                            Code = "sys_log_mgr",
+                            Component = "PageView",
+                            Icon = "read",
+                            IsDeleted = false,
+                            Name = "鏃ュ織绠$悊",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/log",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918733L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_vis_log",
+                            Component = "system/log/vislog/index",
+                            IsDeleted = false,
+                            Name = "璁块棶鏃ュ織",
+                            OpenType = 1,
+                            Pid = 142307070918732L,
+                            Pids = "[0],[142307070918732],",
+                            Router = "/vislog",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918734L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_vis_log_page",
+                            IsDeleted = false,
+                            Name = "璁块棶鏃ュ織鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysVisLog:page",
+                            Pid = 142307070918733L,
+                            Pids = "[0],[142307070918732],[142307070918733],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918735L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_vis_log_delete",
+                            IsDeleted = false,
+                            Name = "璁块棶鏃ュ織娓呯┖",
+                            OpenType = 0,
+                            Permission = "sysVisLog:delete",
+                            Pid = 142307070918733L,
+                            Pids = "[0],[142307070918732],[142307070918733],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918736L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_op_log",
+                            Component = "system/log/oplog/index",
+                            IsDeleted = false,
+                            Name = "鎿嶄綔鏃ュ織",
+                            OpenType = 1,
+                            Pid = 142307070918732L,
+                            Pids = "[0],[142307070918732],",
+                            Router = "/oplog",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918737L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_op_log_page",
+                            IsDeleted = false,
+                            Name = "鎿嶄綔鏃ュ織鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysOpLog:page",
+                            Pid = 142307070918736L,
+                            Pids = "[0],[142307070918732],[142307070918736],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918738L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_op_log_delete",
+                            IsDeleted = false,
+                            Name = "鎿嶄綔鏃ュ織娓呯┖",
+                            OpenType = 0,
+                            Permission = "sysOpLog:delete",
+                            Pid = 142307070918736L,
+                            Pids = "[0],[142307070918732],[142307070918736],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070911739L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_ex_log",
+                            Component = "system/log/exlog/index",
+                            IsDeleted = false,
+                            Name = "寮傚父鏃ュ織",
+                            OpenType = 1,
+                            Pid = 142307070918732L,
+                            Pids = "[0],[142307070918732],",
+                            Router = "/exlog",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070911740L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_ex_log_page",
+                            IsDeleted = false,
+                            Name = "寮傚父鏃ュ織鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysExLog:page",
+                            Pid = 142307070911739L,
+                            Pids = "[0],[142307070918732],[142307070911739],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070911741L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_ex_log_delete",
+                            IsDeleted = false,
+                            Name = "寮傚父鏃ュ織娓呯┖",
+                            OpenType = 0,
+                            Permission = "sysExLog:delete",
+                            Pid = 142307070911739L,
+                            Pids = "[0],[142307070918732],[142307070911739],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918739L,
+                            Application = "system",
+                            Code = "sys_monitor_mgr",
+                            Component = "PageView",
+                            Icon = "deployment-unit",
+                            IsDeleted = false,
+                            Name = "绯荤粺鐩戞帶",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/monitor",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918740L,
+                            Application = "system",
+                            Code = "sys_monitor_mgr_machine_monitor",
+                            Component = "system/machine/index",
+                            IsDeleted = false,
+                            Name = "鏈嶅姟鐩戞帶",
+                            OpenType = 1,
+                            Pid = 142307070918739L,
+                            Pids = "[0],[142307070918739],",
+                            Router = "/machine",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918741L,
+                            Application = "system",
+                            Code = "sys_monitor_mgr_machine_monitor_query",
+                            IsDeleted = false,
+                            Name = "鏈嶅姟鐩戞帶鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysMachine:query",
+                            Pid = 142307070918740L,
+                            Pids = "[0],[142307070918739],[142307070918740],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918742L,
+                            Application = "system",
+                            Code = "sys_monitor_mgr_online_user",
+                            Component = "system/onlineUser/index",
+                            IsDeleted = false,
+                            Name = "鍦ㄧ嚎鐢ㄦ埛",
+                            OpenType = 1,
+                            Pid = 142307070918739L,
+                            Pids = "[0],[142307070918739],",
+                            Router = "/onlineUser",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918743L,
+                            Application = "system",
+                            Code = "sys_monitor_mgr_online_user_page",
+                            IsDeleted = false,
+                            Name = "鍦ㄧ嚎鐢ㄦ埛鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysOnlineUser:page",
+                            Pid = 142307070918742L,
+                            Pids = "[0],[142307070918739],[142307070918742],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918744L,
+                            Application = "system",
+                            Code = "sys_monitor_mgr_online_user_force_exist",
+                            IsDeleted = false,
+                            Name = "鍦ㄧ嚎鐢ㄦ埛寮洪��",
+                            OpenType = 0,
+                            Permission = "sysOnlineUser:forceExist",
+                            Pid = 142307070918742L,
+                            Pids = "[0],[142307070918739],[142307070918742],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918745L,
+                            Application = "system",
+                            Code = "sys_monitor_mgr_druid",
+                            Component = "Iframe",
+                            IsDeleted = false,
+                            Link = "http://localhost:82/druid/login.html",
+                            Name = "鏁版嵁鐩戞帶",
+                            OpenType = 2,
+                            Pid = 142307070918739L,
+                            Pids = "[0],[142307070918739],",
+                            Router = "/druid",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "N",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918746L,
+                            Application = "manage",
+                            Code = "sys_notice",
+                            Component = "PageView",
+                            Icon = "sound",
+                            IsDeleted = false,
+                            Name = "閫氱煡鍏憡",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/notice",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918747L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr",
+                            Component = "system/notice/index",
+                            IsDeleted = false,
+                            Name = "鍏憡绠$悊",
+                            OpenType = 1,
+                            Pid = 142307070918746L,
+                            Pids = "[0],[142307070918746],",
+                            Router = "/notice",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918748L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_page",
+                            IsDeleted = false,
+                            Name = "鍏憡鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysNotice:page",
+                            Pid = 142307070918747L,
+                            Pids = "[0],[142307070918746],[142307070918747],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918749L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_add",
+                            IsDeleted = false,
+                            Name = "鍏憡澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysNotice:add",
+                            Pid = 142307070918747L,
+                            Pids = "[0],[142307070918746],[142307070918747],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918750L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鍏憡缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysNotice:edit",
+                            Pid = 142307070918747L,
+                            Pids = "[0],[142307070918746],[142307070918747],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918751L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鍏憡鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysNotice:delete",
+                            Pid = 142307070918747L,
+                            Pids = "[0],[142307070918746],[142307070918747],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918752L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鍏憡鏌ョ湅",
+                            OpenType = 0,
+                            Permission = "sysNotice:detail",
+                            Pid = 142307070918747L,
+                            Pids = "[0],[142307070918746],[142307070918747],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918753L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_changeStatus",
+                            IsDeleted = false,
+                            Name = "鍏憡淇敼鐘舵��",
+                            OpenType = 0,
+                            Permission = "sysNotice:changeStatus",
+                            Pid = 142307070918747L,
+                            Pids = "[0],[142307070918746],[142307070918747],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918754L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_received",
+                            Component = "system/noticeReceived/index",
+                            IsDeleted = false,
+                            Name = "宸叉敹鍏憡",
+                            OpenType = 1,
+                            Pid = 142307070918746L,
+                            Pids = "[0],[142307070918746],",
+                            Router = "/noticeReceived",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918755L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_received_page",
+                            IsDeleted = false,
+                            Name = "宸叉敹鍏憡鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysNotice:received",
+                            Pid = 142307070918754L,
+                            Pids = "[0],[142307070918746],[142307070918754],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918756L,
+                            Application = "manage",
+                            Code = "sys_file_mgr",
+                            Component = "PageView",
+                            Icon = "file",
+                            IsDeleted = false,
+                            Name = "鏂囦欢绠$悊",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/file",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918757L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file",
+                            Component = "system/file/index",
+                            IsDeleted = false,
+                            Name = "绯荤粺鏂囦欢",
+                            OpenType = 1,
+                            Pid = 142307070918756L,
+                            Pids = "[0],[142307070918756],",
+                            Router = "/file",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918758L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_page",
+                            IsDeleted = false,
+                            Name = "鏂囦欢鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:page",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918759L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_list",
+                            IsDeleted = false,
+                            Name = "鏂囦欢鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:list",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918760L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_delete",
+                            IsDeleted = false,
+                            Name = "鏂囦欢鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:delete",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918761L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_detail",
+                            IsDeleted = false,
+                            Name = "鏂囦欢璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:detail",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918762L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_upload",
+                            IsDeleted = false,
+                            Name = "鏂囦欢涓婁紶",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:upload",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918763L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_download",
+                            IsDeleted = false,
+                            Name = "鏂囦欢涓嬭浇",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:download",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918764L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_preview",
+                            IsDeleted = false,
+                            Name = "鍥剧墖棰勮",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:preview",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070922874L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_upload_avatar",
+                            IsDeleted = false,
+                            Name = "澶村儚涓婁紶",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:uploadAvatar",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070922875L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_upload_document",
+                            IsDeleted = false,
+                            Name = "鏂囨。涓婁紶",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:uploadDocument",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070922876L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_upload_shop",
+                            IsDeleted = false,
+                            Name = "鍟嗗煄涓婁紶",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:uploadShop",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918765L,
+                            Application = "system",
+                            Code = "sys_timers",
+                            Component = "PageView",
+                            Icon = "dashboard",
+                            IsDeleted = false,
+                            Name = "浠诲姟璋冨害",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/timers",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918766L,
+                            Application = "system",
+                            Code = "sys_timers_mgr",
+                            Component = "system/timers/index",
+                            IsDeleted = false,
+                            Name = "浠诲姟绠$悊",
+                            OpenType = 1,
+                            Pid = 142307070918765L,
+                            Pids = "[0],[142307070918765],",
+                            Router = "/timers",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918767L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_page",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysTimers:page",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918768L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_list",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysTimers:list",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918769L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_detail",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysTimers:detail",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918770L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_add",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysTimers:add",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918771L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_delete",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysTimers:delete",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918772L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_edit",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysTimers:edit",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918773L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_get_action_classes",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟鍙墽琛屽垪琛�",
+                            OpenType = 0,
+                            Permission = "sysTimers:getActionClasses",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918774L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_start",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟鍚姩",
+                            OpenType = 0,
+                            Permission = "sysTimers:start",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918775L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_stop",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟鍏抽棴",
+                            OpenType = 0,
+                            Permission = "sysTimers:stop",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918776L,
+                            Application = "system",
+                            Code = "code_gen",
+                            Component = "PageView",
+                            Icon = "thunderbolt",
+                            IsDeleted = false,
+                            Name = "浠g爜鐢熸垚",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/codeGenerate",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918778L,
+                            Application = "system",
+                            Code = "low_code",
+                            Component = "gen/lowCode/index",
+                            IsDeleted = false,
+                            Name = "琛ㄥ崟璁捐",
+                            OpenType = 0,
+                            Pid = 142307070918776L,
+                            Pids = "[0],[142307070918776],",
+                            Router = "/lowCode/index",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918779L,
+                            Application = "system",
+                            Code = "code_gen_gen",
+                            Component = "gen/codeGenerate/index",
+                            IsDeleted = false,
+                            Name = "浠g爜鐢熸垚",
+                            OpenType = 0,
+                            Pid = 142307070918776L,
+                            Pids = "[0],[142307070918776],",
+                            Router = "/codeGenerate/index",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070922870L,
+                            Application = "system",
+                            Code = "form_design",
+                            Component = "system/formDesign/index",
+                            IsDeleted = false,
+                            Name = "琛ㄥ崟璁捐",
+                            OpenType = 0,
+                            Pid = 285599875018821L,
+                            Pids = "[0],[285599875018821],",
+                            Router = "/formDesign/index",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 285599875018821L,
+                            Application = "system",
+                            Code = "sys_formDesign",
+                            Component = "PageView",
+                            Icon = "snippets",
+                            IsDeleted = false,
+                            Name = "琛ㄥ崟绠$悊",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/formDesign",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 285599875018823L,
+                            Application = "system",
+                            Code = "sys_formDesign_list",
+                            Component = "system/formDesign/list",
+                            IsDeleted = false,
+                            Name = "琛ㄥ崟鍒楄〃",
+                            OpenType = 1,
+                            Pid = 285599875018821L,
+                            Pids = "[0],[285599875018821],",
+                            Router = "/formDesign/list",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 285635743518789L,
+                            Application = "system",
+                            Code = "sys_formDesign_edit",
+                            Component = "system/formDesign/edit",
+                            IsDeleted = false,
+                            Name = "淇敼琛ㄥ崟",
+                            OpenType = 1,
+                            Pid = 285599875018821L,
+                            Pids = "[0],[285599875018821],",
+                            Router = "/formDesign/edit",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "N",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 285640475689029L,
+                            Application = "system",
+                            Code = "btn_formDesign_edit",
+                            Component = "",
+                            IsDeleted = false,
+                            Name = "淇敼琛ㄥ崟",
+                            OpenType = 0,
+                            Permission = "formmanager:edit",
+                            Pid = 285599875018823L,
+                            Pids = "[0],[285599875018821],[285599875018823],",
+                            Router = "",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 285640599859269L,
+                            Application = "system",
+                            Code = "btn_formDesign_delete",
+                            Component = "",
+                            IsDeleted = false,
+                            Name = "鍒犻櫎琛ㄥ崟",
+                            OpenType = 0,
+                            Permission = "formmanager:delete",
+                            Pid = 285599875018823L,
+                            Pids = "[0],[285599875018821],[285599875018823],",
+                            Router = "",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 285640740945989L,
+                            Application = "system",
+                            Code = "btn_formDesign_page",
+                            Component = "",
+                            IsDeleted = false,
+                            Name = "琛ㄥ崟鍒楄〃",
+                            OpenType = 0,
+                            Permission = "formmanager:page",
+                            Pid = 285599875018823L,
+                            Pids = "[0],[285599875018821],[285599875018823],",
+                            Router = "",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 355687925174341L,
+                            Application = "busiapp",
+                            Code = "Maste_wmscontainer_mgr",
+                            Component = "main/WmsContainer/index",
+                            Icon = "border",
+                            IsDeleted = false,
+                            Name = "鎵樼洏淇℃伅",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/wmscontainer",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355687925178437L,
+                            Application = "busiapp",
+                            Code = "Maste_wmscontainer_mgr_page",
+                            IsDeleted = false,
+                            Name = "鎵樼洏淇℃伅鏌ヨ",
+                            OpenType = 0,
+                            Permission = "WmsContainer:page",
+                            Pid = 355687925174341L,
+                            Pids = "[0],[355687924998213],[355687925174341],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355687925178438L,
+                            Application = "busiapp",
+                            Code = "Maste_wmscontainer_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鎵樼洏淇℃伅璇︽儏",
+                            OpenType = 0,
+                            Permission = "WmsContainer:detail",
+                            Pid = 355687925174341L,
+                            Pids = "[0],[355687924998213],[355687925174341],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355687925178439L,
+                            Application = "busiapp",
+                            Code = "Maste_wmscontainer_mgr_add",
+                            IsDeleted = false,
+                            Name = "鎵樼洏淇℃伅澧炲姞",
+                            OpenType = 0,
+                            Permission = "WmsContainer:add",
+                            Pid = 355687925174341L,
+                            Pids = "[0],[355687924998213],[355687925174341],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355687925182533L,
+                            Application = "busiapp",
+                            Code = "Maste_wmscontainer_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鎵樼洏淇℃伅鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "WmsContainer:delete",
+                            Pid = 355687925174341L,
+                            Pids = "[0],[355687924998213],[355687925174341],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355687925182534L,
+                            Application = "busiapp",
+                            Code = "Maste_wmscontainer_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鎵樼洏淇℃伅缂栬緫",
+                            OpenType = 0,
+                            Permission = "WmsContainer:edit",
+                            Pid = 355687925174341L,
+                            Pids = "[0],[355687924998213],[355687925174341],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355688792178757L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsarea_mgr",
+                            Component = "main/WmsArea/index",
+                            Icon = "appstore",
+                            IsDeleted = false,
+                            Name = "搴撳尯淇℃伅",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/wmsarea",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355688792182853L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsarea_mgr_page",
+                            IsDeleted = false,
+                            Name = "搴撳尯淇℃伅鏌ヨ",
+                            OpenType = 0,
+                            Permission = "WmsArea:page",
+                            Pid = 355688792178757L,
+                            Pids = "[0],[355688792162373],[355688792178757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355688792182854L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsarea_mgr_detail",
+                            IsDeleted = false,
+                            Name = "搴撳尯淇℃伅璇︽儏",
+                            OpenType = 0,
+                            Permission = "WmsArea:detail",
+                            Pid = 355688792178757L,
+                            Pids = "[0],[355688792162373],[355688792178757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355688792186949L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsarea_mgr_add",
+                            IsDeleted = false,
+                            Name = "搴撳尯淇℃伅澧炲姞",
+                            OpenType = 0,
+                            Permission = "WmsArea:add",
+                            Pid = 355688792178757L,
+                            Pids = "[0],[355688792162373],[355688792178757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355688792186950L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsarea_mgr_delete",
+                            IsDeleted = false,
+                            Name = "搴撳尯淇℃伅鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "WmsArea:delete",
+                            Pid = 355688792178757L,
+                            Pids = "[0],[355688792162373],[355688792178757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355688792186951L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsarea_mgr_edit",
+                            IsDeleted = false,
+                            Name = "搴撳尯淇℃伅缂栬緫",
+                            OpenType = 0,
+                            Permission = "WmsArea:edit",
+                            Pid = 355688792178757L,
+                            Pids = "[0],[355688792162373],[355688792178757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355689496985669L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsplace_mgr",
+                            Component = "main/WmsPlace/index",
+                            Icon = "table",
+                            IsDeleted = false,
+                            Name = "搴撲綅淇℃伅",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/wmsplace",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355689496989765L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsplace_mgr_page",
+                            IsDeleted = false,
+                            Name = "搴撲綅淇℃伅鏌ヨ",
+                            OpenType = 0,
+                            Permission = "WmsPlace:page",
+                            Pid = 355689496985669L,
+                            Pids = "[0],[355689496977477],[355689496985669],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355689496993861L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsplace_mgr_detail",
+                            IsDeleted = false,
+                            Name = "搴撲綅淇℃伅璇︽儏",
+                            OpenType = 0,
+                            Permission = "WmsPlace:detail",
+                            Pid = 355689496985669L,
+                            Pids = "[0],[355689496977477],[355689496985669],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355689496993862L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsplace_mgr_add",
+                            IsDeleted = false,
+                            Name = "搴撲綅淇℃伅澧炲姞",
+                            OpenType = 0,
+                            Permission = "WmsPlace:add",
+                            Pid = 355689496985669L,
+                            Pids = "[0],[355689496977477],[355689496985669],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355689496993863L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsplace_mgr_delete",
+                            IsDeleted = false,
+                            Name = "搴撲綅淇℃伅鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "WmsPlace:delete",
+                            Pid = 355689496985669L,
+                            Pids = "[0],[355689496977477],[355689496985669],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355689496993864L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsplace_mgr_edit",
+                            IsDeleted = false,
+                            Name = "搴撲綅淇℃伅缂栬緫",
+                            OpenType = 0,
+                            Permission = "WmsPlace:edit",
+                            Pid = 355689496985669L,
+                            Pids = "[0],[355689496977477],[355689496985669],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355690042511429L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsmaterial_mgr",
+                            Component = "main/WmsMaterial/index",
+                            Icon = "barcode",
+                            IsDeleted = false,
+                            Name = "鐗╂枡淇℃伅",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/wmsmaterial",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355690042515525L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsmaterial_mgr_page",
+                            IsDeleted = false,
+                            Name = "鐗╂枡淇℃伅鏌ヨ",
+                            OpenType = 0,
+                            Permission = "WmsMaterial:page",
+                            Pid = 355690042511429L,
+                            Pids = "[0],[355690042499141],[355690042511429],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355690042519621L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsmaterial_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鐗╂枡淇℃伅璇︽儏",
+                            OpenType = 0,
+                            Permission = "WmsMaterial:detail",
+                            Pid = 355690042511429L,
+                            Pids = "[0],[355690042499141],[355690042511429],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355690042519622L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsmaterial_mgr_add",
+                            IsDeleted = false,
+                            Name = "鐗╂枡淇℃伅澧炲姞",
+                            OpenType = 0,
+                            Permission = "WmsMaterial:add",
+                            Pid = 355690042511429L,
+                            Pids = "[0],[355690042499141],[355690042511429],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355690042519623L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsmaterial_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鐗╂枡淇℃伅鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "WmsMaterial:delete",
+                            Pid = 355690042511429L,
+                            Pids = "[0],[355690042499141],[355690042511429],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355690042519624L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsmaterial_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鐗╂枡淇℃伅缂栬緫",
+                            OpenType = 0,
+                            Permission = "WmsMaterial:edit",
+                            Pid = 355690042511429L,
+                            Pids = "[0],[355690042499141],[355690042511429],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355690923847749L,
+                            Application = "warejob",
+                            Code = "BindEntrance",
+                            Component = "main/BindEntrance/index",
+                            Icon = "logout",
+                            IsDeleted = false,
+                            Name = "缁勭洏鍏ュ簱",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/BindEntrance",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355691450822725L,
+                            Application = "warejob",
+                            Code = "ExWarehouse",
+                            Component = "main/ExWarehouse/index",
+                            Icon = "login",
+                            IsDeleted = false,
+                            Name = "鍑哄簱绠$悊",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/ExWarehouse",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355691891650629L,
+                            Application = "warejob",
+                            Code = "WmsTask",
+                            Component = "main/WmsTask/index",
+                            Icon = "hourglass",
+                            IsDeleted = false,
+                            Name = "浠诲姟绠$悊",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/WmsTask",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355692253458501L,
+                            Application = "warecount",
+                            Code = "LocationView",
+                            Component = "main/LocationView/index",
+                            Icon = "hdd",
+                            IsDeleted = false,
+                            Name = "搴撲綅瑙嗗浘",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/LocationView",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355692487622725L,
+                            Application = "warecount",
+                            Code = "View_AccessDetails",
+                            Component = "main/View_AccessDetails/index",
+                            Icon = "laptop",
+                            IsDeleted = false,
+                            Name = "鍑哄叆搴撹褰�",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/View_AccessDetails",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383310358700101L,
+                            Application = "busiapp",
+                            Code = "Maste_lesproductionline_mgr",
+                            Component = "main/LesProductionline/index",
+                            Icon = "gateway",
+                            IsDeleted = false,
+                            Name = "浜х嚎淇℃伅",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/lesproductionline",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383310359138373L,
+                            Application = "busiapp",
+                            Code = "Maste_lesproductionline_mgr_page",
+                            IsDeleted = false,
+                            Name = "浜х嚎淇℃伅鏌ヨ",
+                            OpenType = 0,
+                            Permission = "LesProductionline:page",
+                            Pid = 383310358700101L,
+                            Pids = "[0],[383310357848133],[383310358700101],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383310359146565L,
+                            Application = "busiapp",
+                            Code = "Maste_lesproductionline_mgr_detail",
+                            IsDeleted = false,
+                            Name = "浜х嚎淇℃伅璇︽儏",
+                            OpenType = 0,
+                            Permission = "LesProductionline:detail",
+                            Pid = 383310358700101L,
+                            Pids = "[0],[383310357848133],[383310358700101],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383310359146566L,
+                            Application = "busiapp",
+                            Code = "Maste_lesproductionline_mgr_add",
+                            IsDeleted = false,
+                            Name = "浜х嚎淇℃伅澧炲姞",
+                            OpenType = 0,
+                            Permission = "LesProductionline:add",
+                            Pid = 383310358700101L,
+                            Pids = "[0],[383310357848133],[383310358700101],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383310359150661L,
+                            Application = "busiapp",
+                            Code = "Maste_lesproductionline_mgr_delete",
+                            IsDeleted = false,
+                            Name = "浜х嚎淇℃伅鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "LesProductionline:delete",
+                            Pid = 383310358700101L,
+                            Pids = "[0],[383310357848133],[383310358700101],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383310359154757L,
+                            Application = "busiapp",
+                            Code = "Maste_lesproductionline_mgr_edit",
+                            IsDeleted = false,
+                            Name = "浜х嚎淇℃伅缂栬緫",
+                            OpenType = 0,
+                            Permission = "LesProductionlinel:edit",
+                            Pid = 383310358700101L,
+                            Pids = "[0],[383310357848133],[383310358700101],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383311866703941L,
+                            Application = "busiapp",
+                            Code = "Maste_lesstation_mgr",
+                            Component = "main/LesStation/index",
+                            Icon = "team",
+                            IsDeleted = false,
+                            Name = "宸ヤ綅淇℃伅",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/lesstation",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383311866744901L,
+                            Application = "busiapp",
+                            Code = "Maste_lesstation_mgr_page",
+                            IsDeleted = false,
+                            Name = "宸ヤ綅淇℃伅鏌ヨ",
+                            OpenType = 0,
+                            Permission = "LesStation:page",
+                            Pid = 383311866703941L,
+                            Pids = "[0],[383311866441797],[383311866703941],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383311866748997L,
+                            Application = "busiapp",
+                            Code = "Maste_lesstation_mgr_detail",
+                            IsDeleted = false,
+                            Name = "宸ヤ綅淇℃伅璇︽儏",
+                            OpenType = 0,
+                            Permission = "LesStation:detail",
+                            Pid = 383311866703941L,
+                            Pids = "[0],[383311866441797],[383311866703941],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383311866753093L,
+                            Application = "busiapp",
+                            Code = "Maste_lesstation_mgr_add",
+                            IsDeleted = false,
+                            Name = "宸ヤ綅淇℃伅澧炲姞",
+                            OpenType = 0,
+                            Permission = "LesStation:add",
+                            Pid = 383311866703941L,
+                            Pids = "[0],[383311866441797],[383311866703941],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383311866753094L,
+                            Application = "busiapp",
+                            Code = "Maste_lesstation_mgr_delete",
+                            IsDeleted = false,
+                            Name = "宸ヤ綅淇℃伅鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "LesStation:delete",
+                            Pid = 383311866703941L,
+                            Pids = "[0],[383311866441797],[383311866703941],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383311866753095L,
+                            Application = "busiapp",
+                            Code = "Maste_lesstation_mgr_edit",
+                            IsDeleted = false,
+                            Name = "宸ヤ綅淇℃伅缂栬緫",
+                            OpenType = 0,
+                            Permission = "LesStation:edit",
+                            Pid = 383311866703941L,
+                            Pids = "[0],[383311866441797],[383311866703941],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383328166334533L,
+                            Application = "xbjl",
+                            Code = "Maste_lestakematerials_mgr",
+                            Component = "main/LesTakematerials/index",
+                            Icon = "deployment-unit",
+                            IsDeleted = false,
+                            Name = "鍙枡绠$悊",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/lestakematerials",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383328166449221L,
+                            Application = "xbjl",
+                            Code = "Maste_lestakematerials_mgr_page",
+                            IsDeleted = false,
+                            Name = "鍙枡鏌ヨ",
+                            OpenType = 0,
+                            Permission = "LesTakematerials:page",
+                            Pid = 383328166334533L,
+                            Pids = "[0],[383328165556293],[383328166334533],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383328166457413L,
+                            Application = "xbjl",
+                            Code = "Maste_lestakematerials_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鍙枡璇︽儏",
+                            OpenType = 0,
+                            Permission = "LesTakematerials:detail",
+                            Pid = 383328166334533L,
+                            Pids = "[0],[383328165556293],[383328166334533],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383328166461509L,
+                            Application = "xbjl",
+                            Code = "Maste_lestakematerials_mgr_add",
+                            IsDeleted = false,
+                            Name = "鍙枡澧炲姞",
+                            OpenType = 0,
+                            Permission = "LesTakematerials:add",
+                            Pid = 383328166334533L,
+                            Pids = "[0],[383328165556293],[383328166334533],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383328166461510L,
+                            Application = "xbjl",
+                            Code = "Maste_lestakematerials_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鍙枡鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "LesTakematerials:delete",
+                            Pid = 383328166334533L,
+                            Pids = "[0],[383328165556293],[383328166334533],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383328166461511L,
+                            Application = "xbjl",
+                            Code = "Maste_lestakematerials_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鍙枡缂栬緫",
+                            OpenType = 0,
+                            Permission = "LesTakematerials:edit",
+                            Pid = 383328166334533L,
+                            Pids = "[0],[383328165556293],[383328166334533],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 386851902500933L,
+                            Application = "warecount",
+                            Code = "Maste_wmsmaterialstock_mgr",
+                            Component = "main/WmsMaterialStock/index",
+                            Icon = "vertical-left",
+                            IsDeleted = false,
+                            Name = "搴撳瓨淇℃伅",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/wmsmaterialstock",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 386851902545989L,
+                            Application = "warecount",
+                            Code = "Maste_wmsmaterialstock_mgr_page",
+                            IsDeleted = false,
+                            Name = "搴撳瓨鏌ヨ",
+                            OpenType = 0,
+                            Permission = "WmsMaterialStock:page",
+                            Pid = 386851902500933L,
+                            Pids = "[0],[386851902124101],[386851902500933],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 386851902550085L,
+                            Application = "warecount",
+                            Code = "Maste_wmsmaterialstock_mgr_detail",
+                            IsDeleted = false,
+                            Name = "搴撳瓨璇︽儏",
+                            OpenType = 0,
+                            Permission = "WmsMaterialStock:detail",
+                            Pid = 386851902500933L,
+                            Pids = "[0],[386851902124101],[386851902500933],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 386851902554181L,
+                            Application = "warecount",
+                            Code = "Maste_wmsmaterialstock_mgr_add",
+                            IsDeleted = false,
+                            Name = "搴撳瓨澧炲姞",
+                            OpenType = 0,
+                            Permission = "WmsMaterialStock:add",
+                            Pid = 386851902500933L,
+                            Pids = "[0],[386851902124101],[386851902500933],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 386851902558277L,
+                            Application = "warecount",
+                            Code = "Maste_wmsmaterialstock_mgr_delete",
+                            IsDeleted = false,
+                            Name = "搴撳瓨鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "WmsMaterialStock:delete",
+                            Pid = 386851902500933L,
+                            Pids = "[0],[386851902124101],[386851902500933],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 386851902558278L,
+                            Application = "warecount",
+                            Code = "Maste_wmsmaterialstock_mgr_edit",
+                            IsDeleted = false,
+                            Name = "搴撳瓨缂栬緫",
+                            OpenType = 0,
+                            Permission = "WmsMaterialStock:edit",
+                            Pid = 386851902500933L,
+                            Pids = "[0],[386851902124101],[386851902500933],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysNotice", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CancelTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鎾ゅ洖鏃堕棿");
+
+                    b.Property<string>("Content")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍐呭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<long>("PublicOrgId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍙戝竷鏈烘瀯Id");
+
+                    b.Property<string>("PublicOrgName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍙戝竷鏈烘瀯鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("PublicTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍙戝竷鏃堕棿");
+
+                    b.Property<long>("PublicUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍙戝竷浜篒d");
+
+                    b.Property<string>("PublicUserName")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鍙戝竷浜哄鍚�");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鏍囬");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int")
+                        .HasComment("绫诲瀷");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_notice");
+
+                    b.HasComment("閫氱煡鍏憡琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysNoticeUser", b =>
+                {
+                    b.Property<long>("NoticeId")
+                        .HasColumnType("bigint")
+                        .HasComment("閫氱煡鍏憡Id");
+
+                    b.Property<long>("UserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鐢ㄦ埛Id");
+
+                    b.Property<int>("ReadStatus")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<DateTimeOffset?>("ReadTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("闃呰鏃堕棿");
+
+                    b.HasKey("NoticeId", "UserId");
+
+                    b.ToTable("sys_notice_user");
+
+                    b.HasComment("閫氱煡鍏憡鐢ㄦ埛琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysOrg", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<string>("Contacts")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鑱旂郴浜�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("OrgType")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<long>("Pid")
+                        .HasColumnType("bigint")
+                        .HasComment("鐖禝d");
+
+                    b.Property<string>("Pids")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鐖禝ds");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<string>("Tel")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鐢佃瘽");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_org");
+
+                    b.HasComment("缁勭粐鏈烘瀯琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070910539L,
+                            Code = "wbgf",
+                            IsDeleted = false,
+                            Name = "浼熸湰鑲′唤鏈夐檺鍏徃",
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Remark = "浼熸湰鑲′唤鏈夐檺鍏徃",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910540L,
+                            Code = "wbgf_sh",
+                            IsDeleted = false,
+                            Name = "浼熸湰鑲′唤鏈夐檺鍏徃(涓婃捣)",
+                            Pid = 142307070910539L,
+                            Pids = "[0],[142307070910539],",
+                            Remark = "浼熸湰鑲′唤鏈夐檺鍏徃-涓婃捣",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910541L,
+                            Code = "wbgf_cq",
+                            IsDeleted = false,
+                            Name = "浼熸湰鑲′唤鏈夐檺鍏徃(閲嶅簡)",
+                            Pid = 142307070910539L,
+                            Pids = "[0],[142307070910539],",
+                            Remark = "浼熸湰鑲′唤鏈夐檺鍏徃-閲嶅簡",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910542L,
+                            Code = "wbgf_sh_yfb",
+                            IsDeleted = false,
+                            Name = "鐮斿彂閮�",
+                            Pid = 142307070910540L,
+                            Pids = "[0],[142307070910539],[142307070910540],",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910543L,
+                            Code = "wbgf_sh_qhb",
+                            IsDeleted = false,
+                            Name = "浼佸垝閮�",
+                            Pid = 142307070910540L,
+                            Pids = "[0],[142307070910539],[142307070910540],",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910544L,
+                            Code = "wbgf_cq_scb",
+                            IsDeleted = false,
+                            Name = "甯傚満閮�",
+                            Pid = 142307070910541L,
+                            Pids = "[0],[142307070910539],[142307070910541],",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910545L,
+                            Code = "wbgf_cq_cwb",
+                            IsDeleted = false,
+                            Name = "璐㈠姟閮�",
+                            Pid = 142307070910541L,
+                            Pids = "[0],[142307070910539],[142307070910541],",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910546L,
+                            Code = "wbgf_cq_scb",
+                            IsDeleted = false,
+                            Name = "甯傚満閮ㄤ簩閮�",
+                            Pid = 142307070910544L,
+                            Pids = "[0],[142307070910539],[142307070910541],[142307070910544],",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysPos", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_pos");
+
+                    b.HasComment("鑱屼綅琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070910547L,
+                            Code = "zjl",
+                            IsDeleted = false,
+                            Name = "鎬荤粡鐞�",
+                            Remark = "鎬荤粡鐞�",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910548L,
+                            Code = "fzjl",
+                            IsDeleted = false,
+                            Name = "鍓�荤粡鐞�",
+                            Remark = "鍓�荤粡鐞�",
+                            Sort = 101,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910549L,
+                            Code = "bmjl",
+                            IsDeleted = false,
+                            Name = "閮ㄩ棬缁忕悊",
+                            Remark = "閮ㄩ棬缁忕悊",
+                            Sort = 102,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910550L,
+                            Code = "gzry",
+                            IsDeleted = false,
+                            Name = "宸ヤ綔浜哄憳",
+                            Remark = "宸ヤ綔浜哄憳",
+                            Sort = 103,
+                            Status = 0
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysRole", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("DataScopeType")
+                        .HasColumnType("int")
+                        .HasComment("鏁版嵁鑼冨洿绫诲瀷");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("RoleType")
+                        .HasColumnType("int")
+                        .HasComment("瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_role");
+
+                    b.HasComment("瑙掕壊琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070910554L,
+                            Code = "sys_manager_role",
+                            DataScopeType = 1,
+                            IsDeleted = false,
+                            Name = "绯荤粺绠$悊鍛�",
+                            Remark = "绯荤粺绠$悊鍛�",
+                            RoleType = 0,
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 356094617575493L,
+                            Code = "admin",
+                            DataScopeType = 1,
+                            IsDeleted = false,
+                            Name = "绠$悊鍛�",
+                            Remark = "",
+                            RoleType = 0,
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 358509609758789L,
+                            Code = "ware",
+                            DataScopeType = 1,
+                            IsDeleted = false,
+                            Name = "浠撳簱鐢ㄦ埛",
+                            Remark = "",
+                            RoleType = 0,
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 358536344862789L,
+                            Code = "iWare",
+                            DataScopeType = 5,
+                            IsDeleted = false,
+                            Name = "鐮斿彂鐢ㄦ埛",
+                            Remark = "",
+                            RoleType = 0,
+                            Sort = 100,
+                            Status = 0
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysRoleDataScope", b =>
+                {
+                    b.Property<long>("SysRoleId")
+                        .HasColumnType("bigint")
+                        .HasComment("瑙掕壊Id");
+
+                    b.Property<long>("SysOrgId")
+                        .HasColumnType("bigint")
+                        .HasComment("鏈烘瀯Id");
+
+                    b.HasKey("SysRoleId", "SysOrgId");
+
+                    b.HasIndex("SysOrgId");
+
+                    b.ToTable("sys_role_data_scope");
+
+                    b.HasComment("瑙掕壊鏁版嵁鑼冨洿琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysRoleMenu", b =>
+                {
+                    b.Property<long>("SysRoleId")
+                        .HasColumnType("bigint")
+                        .HasComment("瑙掕壊Id");
+
+                    b.Property<long>("SysMenuId")
+                        .HasColumnType("bigint")
+                        .HasComment("鑿滃崟Id");
+
+                    b.HasKey("SysRoleId", "SysMenuId");
+
+                    b.HasIndex("SysMenuId");
+
+                    b.ToTable("sys_role_menu");
+
+                    b.HasComment("瑙掕壊鑿滃崟琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysTimer", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("Cron")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("Cron琛ㄨ揪寮�");
+
+                    b.Property<bool>("DoOnce")
+                        .HasColumnType("bit")
+                        .HasComment("鍙墽琛屼竴娆�");
+
+                    b.Property<int>("ExecuteType")
+                        .HasColumnType("int")
+                        .HasComment("鎵ц绫诲瀷");
+
+                    b.Property<string>("Headers")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("Headers");
+
+                    b.Property<int?>("Interval")
+                        .HasColumnType("int")
+                        .HasComment("闂撮殧鏃堕棿");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("JobName")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("浠诲姟鍚嶇О");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<string>("RequestParameters")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璇锋眰鍙傛暟");
+
+                    b.Property<int>("RequestType")
+                        .HasColumnType("int")
+                        .HasComment("璇锋眰绫诲瀷");
+
+                    b.Property<string>("RequestUrl")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("璇锋眰url");
+
+                    b.Property<bool>("StartNow")
+                        .HasColumnType("bit")
+                        .HasComment("绔嬪嵆鎵ц");
+
+                    b.Property<int>("TimerType")
+                        .HasColumnType("int")
+                        .HasComment("瀹氭椂鍣ㄧ被鍨�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_timer");
+
+                    b.HasComment("瀹氭椂浠诲姟琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070910556L,
+                            DoOnce = false,
+                            ExecuteType = 1,
+                            Interval = 5,
+                            IsDeleted = false,
+                            JobName = "鐧惧害api",
+                            Remark = "鎺ュ彛API",
+                            RequestType = 2,
+                            RequestUrl = "https://www.baidu.com",
+                            StartNow = false,
+                            TimerType = 0
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysUser", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Account")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璐﹀彿");
+
+                    b.Property<int>("AdminType")
+                        .HasColumnType("int")
+                        .HasComment("绠$悊鍛樼被鍨�-瓒呯骇绠$悊鍛榑1銆佺鐞嗗憳_2銆佹櫘閫氳处鍙穇3");
+
+                    b.Property<string>("Avatar")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("澶村儚");
+
+                    b.Property<DateTimeOffset?>("Birthday")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鐢熸棩");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("Email")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("閭");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("LastLoginIp")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鏈�鍚庣櫥褰旾P");
+
+                    b.Property<DateTimeOffset?>("LastLoginTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏈�鍚庣櫥褰曟椂闂�");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("濮撳悕");
+
+                    b.Property<string>("NickName")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鏄电О");
+
+                    b.Property<string>("Password")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀵嗙爜");
+
+                    b.Property<string>("Phone")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鎵嬫満");
+
+                    b.Property<long>("ProductionlineId")
+                        .HasColumnType("bigint");
+
+                    b.Property<int>("Sex")
+                        .HasColumnType("int")
+                        .HasComment("鎬у埆-鐢穇1銆佸コ_2");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2");
+
+                    b.Property<string>("Tel")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鐢佃瘽");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("WorkShopType")
+                        .HasColumnType("int");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_user");
+
+                    b.HasComment("鐢ㄦ埛琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070910551L,
+                            Account = "superAdmin",
+                            AdminType = 1,
+                            Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+                            IsDeleted = false,
+                            Name = "瓒呯骇绠$悊鍛�",
+                            NickName = "superAdmin",
+                            Password = "e10adc3949ba59abbe56e057f20f883e",
+                            Phone = "18020030720",
+                            ProductionlineId = 0L,
+                            Sex = 1,
+                            Status = 0,
+                            WorkShopType = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910552L,
+                            Account = "admin",
+                            AdminType = 2,
+                            Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+                            IsDeleted = false,
+                            Name = "绯荤粺绠$悊鍛�",
+                            NickName = "admin",
+                            Password = "e10adc3949ba59abbe56e057f20f883e",
+                            Phone = "18020030720",
+                            ProductionlineId = 0L,
+                            Sex = 1,
+                            Status = 0,
+                            WorkShopType = 0
+                        },
+                        new
+                        {
+                            Id = 358533464608837L,
+                            Account = "warehouse",
+                            AdminType = 3,
+                            Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+                            IsDeleted = false,
+                            Name = "浠撳簱鐢ㄦ埛",
+                            NickName = "warehouse",
+                            Password = "e10adc3949ba59abbe56e057f20f883e",
+                            Phone = "13869156666",
+                            ProductionlineId = 0L,
+                            Sex = 1,
+                            Status = 0,
+                            WorkShopType = 0
+                        },
+                        new
+                        {
+                            Id = 358536045723717L,
+                            Account = "admin1",
+                            AdminType = 3,
+                            Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+                            IsDeleted = false,
+                            Name = "鐮斿彂閮�",
+                            NickName = "admin1",
+                            Password = "f379eaf3c831b04de153469d1bec345e",
+                            Phone = "13869156666",
+                            ProductionlineId = 0L,
+                            Sex = 1,
+                            Status = 0,
+                            WorkShopType = 0
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysUserDataScope", b =>
+                {
+                    b.Property<long>("SysUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鐢ㄦ埛Id");
+
+                    b.Property<long>("SysOrgId")
+                        .HasColumnType("bigint")
+                        .HasComment("鏈烘瀯Id");
+
+                    b.HasKey("SysUserId", "SysOrgId");
+
+                    b.HasIndex("SysOrgId");
+
+                    b.ToTable("sys_user_data_scope");
+
+                    b.HasComment("鐢ㄦ埛鏁版嵁鑼冨洿琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            SysUserId = 142307070910551L,
+                            SysOrgId = 142307070910540L
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysUserRole", b =>
+                {
+                    b.Property<long>("SysUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鐢ㄦ埛Id");
+
+                    b.Property<long>("SysRoleId")
+                        .HasColumnType("bigint")
+                        .HasComment("瑙掕壊Id");
+
+                    b.HasKey("SysUserId", "SysRoleId");
+
+                    b.HasIndex("SysRoleId");
+
+                    b.ToTable("sys_user_role");
+
+                    b.HasComment("鐢ㄦ埛瑙掕壊琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            SysUserId = 142307070910552L,
+                            SysRoleId = 142307070910554L
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.TestStudent", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<int>("Age")
+                        .HasColumnType("int")
+                        .HasComment("瀛︾敓骞撮緞");
+
+                    b.Property<DateTime>("BrithDate")
+                        .HasColumnType("datetime2")
+                        .HasComment("鍑虹敓鏃ユ湡");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("Gender")
+                        .HasColumnType("int")
+                        .HasComment("鎬у埆");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("瀛︾敓濮撳悕");
+
+                    b.Property<bool>("StartName")
+                        .HasMaxLength(50)
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍦ㄦ牎");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("test_students");
+
+                    b.HasComment("瀛︾敓淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.TestStudent2", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<int>("Age")
+                        .HasColumnType("int")
+                        .HasComment("瀛︾敓骞撮緞");
+
+                    b.Property<DateTime>("BrithDate")
+                        .HasColumnType("datetime2")
+                        .HasComment("鍑虹敓鏃ユ湡");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("Gender")
+                        .HasColumnType("int")
+                        .HasComment("鎬у埆");
+
+                    b.Property<decimal>("HasMoney")
+                        .HasColumnType("decimal(10,3)")
+                        .HasColumnName("HasMoney")
+                        .HasComment("闆惰姳閽�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("瀛︾敓濮撳悕");
+
+                    b.Property<bool>("StartName")
+                        .HasMaxLength(50)
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍦ㄦ牎");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("test_students2");
+
+                    b.HasComment("瀛︾敓淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.TestStudent3", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<int>("Age")
+                        .HasColumnType("int")
+                        .HasComment("瀛︾敓骞撮緞");
+
+                    b.Property<DateTime>("BrithDate")
+                        .HasColumnType("datetime2")
+                        .HasComment("鍑虹敓鏃ユ湡");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("Gender")
+                        .HasColumnType("int")
+                        .HasComment("鎬у埆");
+
+                    b.Property<decimal>("HasMoney")
+                        .HasColumnType("decimal(10,3)")
+                        .HasColumnName("HasMoney")
+                        .HasComment("闆惰姳閽�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("瀛︾敓濮撳悕");
+
+                    b.Property<bool>("StartName")
+                        .HasMaxLength(50)
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍦ㄦ牎");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("test_students3");
+
+                    b.HasComment("瀛︾敓淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsArea", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AreaDesc")
+                        .HasMaxLength(250)
+                        .HasColumnType("nvarchar(250)")
+                        .HasComment("鎻忚堪");
+
+                    b.Property<string>("AreaName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<int>("AreaStatus")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<int>("AreaType")
+                        .HasColumnType("int")
+                        .HasComment("鍒嗙被");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<bool>("IsSteel")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁涓洪挗骞冲彴");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("WorkShopType")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炶溅闂�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_area");
+
+                    b.HasComment("搴撳尯琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsContainer", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AssetNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璧勪骇缂栧彿");
+
+                    b.Property<int>("ContainerCategory")
+                        .HasColumnType("int")
+                        .HasComment("鎵樼洏鍒嗙被");
+
+                    b.Property<string>("ContainerCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栧彿");
+
+                    b.Property<int>("ContainerStatus")
+                        .HasColumnType("int")
+                        .HasComment("鎵樼洏鐘舵��");
+
+                    b.Property<int>("ContainerType")
+                        .HasColumnType("int")
+                        .HasComment("绫诲瀷");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("ErpNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("Erp鍗曞彿");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("IsVirtually")
+                        .HasColumnType("int")
+                        .HasComment("鏄惁铏氭嫙");
+
+                    b.Property<decimal>("LimitHeight")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("闄愰珮");
+
+                    b.Property<decimal>("LimitLength")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("闄愰暱");
+
+                    b.Property<decimal>("LimitWidth")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("闄愬");
+
+                    b.Property<decimal>("MaxWeight")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("杞介噸涓婇檺");
+
+                    b.Property<long>("ParentContainerId")
+                        .HasColumnType("bigint")
+                        .HasComment("鐖舵墭鐩業d");
+
+                    b.Property<decimal>("SpecHeight")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("楂樺害");
+
+                    b.Property<decimal>("SpecLength")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("闀垮害");
+
+                    b.Property<decimal>("SpecWidth")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("瀹藉害");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("WorkShopType")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炶溅闂�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_container");
+
+                    b.HasComment("鎵樼洏淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsContainerPlace", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("ContainerCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<long>("ContainerId")
+                        .HasColumnType("bigint")
+                        .HasComment("鎵樼洏Id");
+
+                    b.Property<int>("ContainerPlaceStatus")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("PlaceCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<long>("PlaceId")
+                        .HasColumnType("bigint")
+                        .HasComment("搴撲綅Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_containerplace");
+
+                    b.HasComment("鎵樼洏搴撲綅鍏崇郴琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsDumpOrder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("Billdate")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃ユ湡");
+
+                    b.Property<string>("Companyname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍏徃");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("Creator")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍒涘缓浜�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("NO")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍗曟嵁缂栧彿");
+
+                    b.Property<long>("OrderLargeCategory")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁澶х被");
+
+                    b.Property<int>("OrderStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍗曟嵁鐘舵��");
+
+                    b.Property<long>("OrderSubclass")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁灏忕被");
+
+                    b.Property<long>("SOID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_dumporder");
+
+                    b.HasComment("杞偍鍗�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsDumpOrderDetails", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Batchno_SCM")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("SCM鎵规鍙�");
+
+                    b.Property<string>("Batchno_WMS")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("WMS鎵规鍙�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<decimal>("Length")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("闀垮害");
+
+                    b.Property<string>("Materialcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("Materialname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<long>("OID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+                    b.Property<long>("OrderId")
+                        .HasMaxLength(50)
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁Id");
+
+                    b.Property<int>("OrderStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍗曟嵁鐘舵��");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("搴撳瓨椤圭洰缂栫爜");
+
+                    b.Property<string>("Projectcode_To")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鏂板簱瀛橀」鐩紪鐮�");
+
+                    b.Property<decimal>("Qty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏁伴噺");
+
+                    b.Property<string>("Unit")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍩烘湰鍗曚綅");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OrderId");
+
+                    b.ToTable("wms_dumporder_details");
+
+                    b.HasComment("杞偍鍗曟槑缁�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("Billdate")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃ユ湡");
+
+                    b.Property<string>("Companyname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍏徃鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("GoodsReturnStatus")
+                        .HasColumnType("int")
+                        .HasComment("閫�璐х姸鎬�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("NO")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍗曟嵁缂栧彿");
+
+                    b.Property<long>("OrderLargeCategory")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁澶х被");
+
+                    b.Property<long>("OrderSubclass")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁灏忕被");
+
+                    b.Property<long>("SOID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("Vendorcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("渚涘簲鍟嗙紪鐮�");
+
+                    b.Property<string>("Vendorname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("渚涘簲鍟嗗悕绉�");
+
+                    b.Property<string>("WarehouseCentername")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撳偍涓績");
+
+                    b.Property<string>("WarehouseKeepername")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撶鍛�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_goodsreturnorder");
+
+                    b.HasComment("閫�璐у崟");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrderDetails", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Batchno_WMS")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鎵规鍙�");
+
+                    b.Property<string>("ContractCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍚堝悓缂栧彿");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<decimal>("CustomsNum")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶ュ叧鏁伴噺");
+
+                    b.Property<decimal>("CustomsPrices")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶ュ叧閲戦");
+
+                    b.Property<string>("CustomsUnitName")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鎶ュ叧鍗曚綅");
+
+                    b.Property<string>("DeclarationCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍗曞彿");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("ItemNo")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鎶ュ叧椤瑰彿");
+
+                    b.Property<string>("Materialcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("Materialname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<long>("OID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+                    b.Property<long>("OrderId")
+                        .HasMaxLength(50)
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁Id");
+
+                    b.Property<decimal>("Price")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("涓嶅惈绋庡崟浠�");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("椤圭洰缂栧彿");
+
+                    b.Property<decimal>("Qty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏁伴噺");
+
+                    b.Property<int>("ReceivingStatus")
+                        .HasColumnType("int")
+                        .HasComment("閫�璐х姸鎬�");
+
+                    b.Property<decimal>("SingleLength")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍗曟牴闀垮害");
+
+                    b.Property<string>("StoreRoomname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撻棿");
+
+                    b.Property<decimal>("SumPrice")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎴愭湰閲戦");
+
+                    b.Property<string>("TACode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("TA鍙�");
+
+                    b.Property<decimal>("TheoreticalWeight")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鐞嗚閲嶉噺");
+
+                    b.Property<string>("TradeName")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍝佸悕");
+
+                    b.Property<string>("Unit")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍩烘湰鍗曚綅");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OrderId");
+
+                    b.ToTable("wms_goodsreturnorder_details");
+
+                    b.HasComment("閫�璐у崟鎹槑缁嗚〃");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsHistoryMaterialContainer", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<decimal>("BindQuantity")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("缁勭洏鏁伴噺");
+
+                    b.Property<int>("BindStatus")
+                        .HasColumnType("int")
+                        .HasComment("缁勭洏鐘舵��");
+
+                    b.Property<string>("ContainerCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎵樼洏缂栫爜");
+
+                    b.Property<long>("ContainerId")
+                        .HasColumnType("bigint")
+                        .HasComment("鎵樼洏Id");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("MaterialBatch")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鎵规");
+
+                    b.Property<string>("MaterialDensity")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瀵嗗害");
+
+                    b.Property<long>("MaterialId")
+                        .HasColumnType("bigint")
+                        .HasComment("鐗╂枡Id");
+
+                    b.Property<string>("MaterialName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<string>("MaterialNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("MaterialSpec")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瑙勬牸");
+
+                    b.Property<string>("OrderNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍗曞彿");
+
+                    b.Property<decimal>("SampleQty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶芥鏁伴噺");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("MaterialId");
+
+                    b.ToTable("wms_history_materialcontainer");
+
+                    b.HasComment("鐗╂枡鎵樼洏鍘嗗彶琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsMaterial", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AreaIds")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("搴撳尯Ids");
+
+                    b.Property<string>("AreaNameParameter")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("搴撳尯鍙傛暟");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("Description")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("鎻忚堪");
+
+                    b.Property<int>("InspectionMethod")
+                        .HasColumnType("int")
+                        .HasComment("鐗╂枡妫�楠�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("MaterialBatch")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鎵规");
+
+                    b.Property<string>("MaterialDensity")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瀵嗗害");
+
+                    b.Property<string>("MaterialName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<string>("MaterialNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("MaterialSpec")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瑙勬牸");
+
+                    b.Property<int>("MaterialType")
+                        .HasColumnType("int")
+                        .HasComment("鐗╂枡绫诲埆");
+
+                    b.Property<string>("MaterialUnit")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鍗曚綅");
+
+                    b.Property<decimal>("MaxImumqty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏈�澶у瓨閲�");
+
+                    b.Property<decimal>("MaxstorageAge")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏈�澶у簱榫�");
+
+                    b.Property<decimal>("MinstorageAge")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏈�灏忓簱榫�");
+
+                    b.Property<decimal>("Safeqty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("瀹夊叏瀛橀噺");
+
+                    b.Property<string>("StationIds")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("宸ヤ綔鍖篒ds");
+
+                    b.Property<string>("StationNameParameter")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("宸ヤ綔鍖哄弬鏁�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_material");
+
+                    b.HasComment("鐗╂枡淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsMaterialContainer", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<decimal>("BindQuantity")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("缁勭洏鏁伴噺");
+
+                    b.Property<int>("BindStatus")
+                        .HasColumnType("int")
+                        .HasComment("缁勭洏鐘舵��");
+
+                    b.Property<string>("ContainerCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎵樼洏缂栫爜");
+
+                    b.Property<long>("ContainerId")
+                        .HasColumnType("bigint")
+                        .HasComment("鎵樼洏Id");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("MaterialBatch")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鎵规");
+
+                    b.Property<string>("MaterialDensity")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瀵嗗害");
+
+                    b.Property<long>("MaterialId")
+                        .HasColumnType("bigint")
+                        .HasComment("鐗╂枡Id");
+
+                    b.Property<string>("MaterialName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<string>("MaterialNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("MaterialSpec")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瑙勬牸");
+
+                    b.Property<long>("OrderDetailsId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁鏄庣粏Id");
+
+                    b.Property<string>("OrderNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍗曞彿");
+
+                    b.Property<decimal>("SampleQty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶芥鏁伴噺");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<long?>("WmsContainerId")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("MaterialId");
+
+                    b.HasIndex("WmsContainerId");
+
+                    b.ToTable("wms_materialcontainer");
+
+                    b.HasComment("鐗╂枡鎵樼洏鍏崇郴琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsMaterialStock", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<long>("AreaId")
+                        .HasColumnType("bigint")
+                        .HasComment("搴撳尯Id");
+
+                    b.Property<string>("ContainerCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎵樼洏缂栫爜");
+
+                    b.Property<long>("ContainerId")
+                        .HasColumnType("bigint")
+                        .HasComment("鎵樼洏Id");
+
+                    b.Property<string>("ContractCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍚堝悓缂栧彿");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("High")
+                        .HasColumnType("int")
+                        .HasComment("楂�");
+
+                    b.Property<int>("InspectionMethod")
+                        .HasColumnType("int")
+                        .HasComment("妫�楠屾柟寮�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("Long")
+                        .HasColumnType("int")
+                        .HasComment("闀�");
+
+                    b.Property<string>("MaterialBatch")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鎵规");
+
+                    b.Property<string>("MaterialDensity")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瀵嗗害");
+
+                    b.Property<string>("MaterialName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<string>("MaterialNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("MaterialSpec")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瑙勬牸");
+
+                    b.Property<int>("MaterialType")
+                        .HasColumnType("int")
+                        .HasComment("鐗╂枡绫诲埆");
+
+                    b.Property<string>("PlaceCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("椤圭洰缂栧彿");
+
+                    b.Property<decimal>("QuantityOfBill")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("璐﹂潰鏁伴噺");
+
+                    b.Property<int>("Source")
+                        .HasColumnType("int")
+                        .HasComment("鍏ュ簱鏉ユ簮");
+
+                    b.Property<decimal>("StockNumber")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("瀹炵墿搴撳瓨鏁�");
+
+                    b.Property<string>("TACode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("TA鍙�");
+
+                    b.Property<int>("UnitNo")
+                        .HasColumnType("int")
+                        .HasComment("鍗曚綅缂栧彿");
+
+                    b.Property<int>("UnitType")
+                        .HasColumnType("int")
+                        .HasComment("鍗曚綅绫诲埆");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("Wide")
+                        .HasColumnType("int")
+                        .HasComment("瀹�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_materialstock");
+
+                    b.HasComment("搴撳瓨琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsMerchantinfo", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("MerchantAddress")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢鍦板潃");
+
+                    b.Property<string>("MerchantAttribute")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢灞炴��");
+
+                    b.Property<string>("MerchantContact")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢鑱旂郴浜�");
+
+                    b.Property<string>("MerchantEmail")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢閭");
+
+                    b.Property<string>("MerchantFax")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢浼犵湡");
+
+                    b.Property<int>("MerchantGrade")
+                        .HasColumnType("int")
+                        .HasComment("瀹㈠晢绛夌骇");
+
+                    b.Property<string>("MerchantName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢鍚嶇О");
+
+                    b.Property<string>("MerchantNo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢缂栧彿");
+
+                    b.Property<string>("MerchantPhone")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢鐢佃瘽");
+
+                    b.Property<string>("MerchantShort")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢绠�绉�");
+
+                    b.Property<string>("MerchantTmt")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢琛屼笟");
+
+                    b.Property<int>("MerchantType")
+                        .HasColumnType("int")
+                        .HasComment("瀹㈠晢鍒嗙被");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_merchantinfo");
+
+                    b.HasComment("瀹㈠晢淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsOrder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("Billdate")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃ユ湡");
+
+                    b.Property<string>("Companyname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍏徃鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DeclarationCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍗曞彿");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Majorname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("涓撲笟");
+
+                    b.Property<string>("NO")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍗曟嵁缂栧彿");
+
+                    b.Property<long>("OrderLargeCategory")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁澶х被");
+
+                    b.Property<int>("OrderStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍗曟嵁鐘舵��");
+
+                    b.Property<long>("OrderSubclass")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁灏忕被");
+
+                    b.Property<string>("Remarks")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<long>("SOID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+                    b.Property<string>("SourceBillNo")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("閫佽揣閫氱煡鍗曞彿");
+
+                    b.Property<string>("StoreRoomname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撻棿");
+
+                    b.Property<int>("TradeMode")
+                        .HasColumnType("int")
+                        .HasComment("璐告槗鏂瑰紡");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("Vendorcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("渚涘簲鍟嗙紪鐮�");
+
+                    b.Property<string>("Vendorname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("渚涘簲鍟嗗悕绉�");
+
+                    b.Property<string>("WarehouseCentername")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撳偍涓績");
+
+                    b.Property<string>("WarehouseKeepername")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撶鍛�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_order");
+
+                    b.HasComment("鍗曟嵁琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsOrderDetails", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("ContainerCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎵樼洏缂栫爜");
+
+                    b.Property<string>("ContractCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍚堝悓缂栧彿");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<decimal>("CustomsNum")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶ュ叧鏁伴噺");
+
+                    b.Property<decimal>("CustomsPrices")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶ュ叧閲戦");
+
+                    b.Property<string>("CustomsUnitName")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍗曚綅");
+
+                    b.Property<int>("InspectionResults")
+                        .HasColumnType("int")
+                        .HasComment("妫�楠岀粨鏋�");
+
+                    b.Property<decimal>("InventoryQty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍏ュ簱鏁伴噺");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("ItemNo")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧椤瑰彿");
+
+                    b.Property<string>("Materialcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("Materialname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<long>("OID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+                    b.Property<long>("OrderId")
+                        .HasMaxLength(50)
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁Id");
+
+                    b.Property<int>("OrderStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍗曟嵁鐘舵��");
+
+                    b.Property<string>("PlaceCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<decimal>("Price")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("涓嶅惈绋庡崟浠�");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("椤圭洰缂栧彿");
+
+                    b.Property<decimal>("Qty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏁伴噺");
+
+                    b.Property<decimal>("SingleLength")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍗曟牴闀垮害");
+
+                    b.Property<string>("SpecialNeeds")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗规畩瑕佹眰");
+
+                    b.Property<decimal>("SumPrice")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎴愭湰閲戦");
+
+                    b.Property<string>("TACode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("TA鍙�");
+
+                    b.Property<decimal>("TheoreticalWeight")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鐞嗚閲嶉噺");
+
+                    b.Property<string>("TradeName")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍝佸悕");
+
+                    b.Property<string>("Unit")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍩烘湰鍗曚綅");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OrderId");
+
+                    b.ToTable("wms_order_details");
+
+                    b.HasComment("鍗曟嵁鏄庣粏琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsOrderType", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("LesWorkShopType")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炶溅闂�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<long>("Pid")
+                        .HasColumnType("bigint")
+                        .HasComment("鐖禝d");
+
+                    b.Property<string>("Pids")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鐖禝ds");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_order_type");
+
+                    b.HasComment("鍗曟嵁绫诲瀷缁存姢琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsPdaPower", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Clolor")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("棰滆壊");
+
+                    b.Property<string>("Code")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("Icon")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍥炬爣");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("WorkShopType")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炶溅闂�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_pdapower");
+
+                    b.HasComment("PDA鑿滃崟琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsPlace", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AgvCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅瀵瑰簲AGV缂栫爜");
+
+                    b.Property<int>("Aisle")
+                        .HasColumnType("int")
+                        .HasComment("宸烽亾");
+
+                    b.Property<long>("AreaId")
+                        .HasColumnType("bigint")
+                        .HasComment("鎵�鍦ㄥ簱鍖�");
+
+                    b.Property<int>("ColumnNo")
+                        .HasColumnType("int")
+                        .HasComment("鍒�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("DeepcellNo")
+                        .HasColumnType("int")
+                        .HasComment("杩涙繁鍙�");
+
+                    b.Property<int>("EmptyContainer")
+                        .HasColumnType("int")
+                        .HasComment("鏄惁绌烘墭");
+
+                    b.Property<decimal>("Height")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("搴撲綅楂樺害");
+
+                    b.Property<int>("HeightLevel")
+                        .HasColumnType("int")
+                        .HasComment("搴撲綅楂樺害灞炴��");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("Islock")
+                        .HasColumnType("int")
+                        .HasComment("鏄惁閿佸畾");
+
+                    b.Property<int>("LayerNo")
+                        .HasColumnType("int")
+                        .HasComment("灞�");
+
+                    b.Property<decimal>("Length")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("搴撲綅闀垮害");
+
+                    b.Property<int>("Line")
+                        .HasColumnType("int")
+                        .HasComment("绾垮彿");
+
+                    b.Property<int>("LogicalName")
+                        .HasColumnType("int")
+                        .HasComment("閫昏緫鍖哄煙");
+
+                    b.Property<decimal>("MaxWeight")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏈�澶ф壙閲�");
+
+                    b.Property<string>("PlaceCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<int>("PlaceStatus")
+                        .HasColumnType("int")
+                        .HasComment("搴撲綅鐘舵��");
+
+                    b.Property<string>("PositionnoForSrm")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆");
+
+                    b.Property<int>("Priority")
+                        .HasColumnType("int")
+                        .HasComment("浼樺厛绾�");
+
+                    b.Property<int>("RowNo")
+                        .HasColumnType("int")
+                        .HasComment("鎺�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<decimal>("Width")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("搴撲綅瀹藉害");
+
+                    b.Property<string>("Xzb")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅X鍧愭爣");
+
+                    b.Property<string>("Yzb")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅Y鍧愭爣");
+
+                    b.Property<string>("Zzb")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅Z鍧愭爣");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("AreaId");
+
+                    b.ToTable("wms_place");
+
+                    b.HasComment("搴撲綅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("Billdate")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃ユ湡");
+
+                    b.Property<string>("Companyname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍏徃鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DeclarationCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍗曞彿");
+
+                    b.Property<int>("InspectionStatus")
+                        .HasColumnType("int")
+                        .HasComment("鎶ユ鐘舵��");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Majorname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("涓撲笟");
+
+                    b.Property<string>("NO")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍗曟嵁缂栧彿");
+
+                    b.Property<long>("OrderLargeCategory")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁澶х被");
+
+                    b.Property<long>("OrderSubclass")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁灏忕被");
+
+                    b.Property<int>("ReceivingStatus")
+                        .HasColumnType("int")
+                        .HasComment("鏀惰揣鐘舵��");
+
+                    b.Property<string>("Remarks")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<long>("SOID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+                    b.Property<string>("SourceBillNo")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("閫佽揣閫氱煡鍗曞彿");
+
+                    b.Property<string>("StoreRoomname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撻棿");
+
+                    b.Property<int>("TradeMode")
+                        .HasColumnType("int")
+                        .HasComment("璐告槗鏂瑰紡");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("Vendorcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("渚涘簲鍟嗙紪鐮�");
+
+                    b.Property<string>("Vendorname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("渚涘簲鍟嗗悕绉�");
+
+                    b.Property<string>("WMSNO")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("WMS鏀惰揣鍗曞彿");
+
+                    b.Property<string>("WarehouseCentername")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撳偍涓績");
+
+                    b.Property<string>("WarehouseKeepername")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撶鍛�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_receiptorder");
+
+                    b.HasComment("鏀惰揣鍗�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrderDetails", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("ContainerCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎵樼洏缂栫爜");
+
+                    b.Property<string>("ContractCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍚堝悓缂栧彿");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<decimal>("CustomsNum")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶ュ叧鏁伴噺");
+
+                    b.Property<decimal>("CustomsPrices")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶ュ叧閲戦");
+
+                    b.Property<string>("CustomsUnitName")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍗曚綅");
+
+                    b.Property<decimal>("DeliveryQty")
+                        .HasMaxLength(50)
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("閫佽揣鏁伴噺");
+
+                    b.Property<int>("InspectionResultsEnum")
+                        .HasColumnType("int")
+                        .HasComment("鎶ユ缁撴灉");
+
+                    b.Property<int>("InspectionStatus")
+                        .HasColumnType("int")
+                        .HasComment("鎶ユ鐘舵��");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("ItemNo")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧椤瑰彿");
+
+                    b.Property<string>("Materialcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("Materialname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<long>("OID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+                    b.Property<long>("OrderId")
+                        .HasMaxLength(50)
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁Id");
+
+                    b.Property<string>("PlaceCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<decimal>("Price")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("涓嶅惈绋庡崟浠�");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("椤圭洰缂栧彿");
+
+                    b.Property<decimal>("Qty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏁伴噺");
+
+                    b.Property<decimal>("ReceivedQty")
+                        .HasMaxLength(50)
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏀惰揣鏁伴噺");
+
+                    b.Property<int>("ReceivingStatus")
+                        .HasColumnType("int")
+                        .HasComment("鏀惰揣鐘舵��");
+
+                    b.Property<decimal>("SingleLength")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍗曟牴闀垮害");
+
+                    b.Property<string>("SpecialNeeds")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗规畩瑕佹眰");
+
+                    b.Property<decimal>("SumPrice")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎴愭湰閲戦");
+
+                    b.Property<string>("TACode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("TA鍙�");
+
+                    b.Property<decimal>("TheoreticalWeight")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鐞嗚閲嶉噺");
+
+                    b.Property<string>("TradeName")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍝佸悕");
+
+                    b.Property<string>("Unit")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍩烘湰鍗曚綅");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OrderId");
+
+                    b.ToTable("wms_receiptorder_details");
+
+                    b.HasComment("鏀惰揣鍗曟嵁鏄庣粏琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsSortOrder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<decimal>("ActualQuantity")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("瀹為檯鍒嗘嫞鏁�");
+
+                    b.Property<string>("ContainerCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹瑰櫒缂栧彿");
+
+                    b.Property<string>("ContainerOrderNo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒嗘嫞缁勭洏鍗曞彿");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Materialcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("Materialname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<long>("OrderDetailID")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("OrderNo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鏉ユ簮鍗曞彿");
+
+                    b.Property<string>("PartCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍒嗘鍙�");
+
+                    b.Property<string>("PlaceCode")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("椤圭洰缂栧彿");
+
+                    b.Property<string>("Remarks")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<decimal>("SortQuantity")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍒嗘嫞鏁�");
+
+                    b.Property<int>("SortStatus")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2");
+
+                    b.Property<string>("TACode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("TA鍙�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_sortorder");
+
+                    b.HasComment("鍒嗘嫞琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("BenefitingDepartcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("棰嗘枡閮ㄩ棬");
+
+                    b.Property<DateTimeOffset?>("Billdate")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("閫�鏂欑敵璇锋棩鏈�");
+
+                    b.Property<string>("Companyname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍏徃");
+
+                    b.Property<string>("ConstructionTeamID")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鏂藉伐闃�");
+
+                    b.Property<string>("CostCenterID")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鏀剁泭閮ㄩ棬");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("FI_Client_Analysis_H")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("瀹㈡埛");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("MoveType")
+                        .HasColumnType("int")
+                        .HasComment("浜嬪姟绫诲瀷");
+
+                    b.Property<string>("NO")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍗曟嵁缂栧彿");
+
+                    b.Property<long>("OrderLargeCategory")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁澶х被");
+
+                    b.Property<int>("OrderStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍗曟嵁鐘舵��");
+
+                    b.Property<long>("OrderSubclass")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁灏忕被");
+
+                    b.Property<string>("PickerID")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("棰嗗彇浜�");
+
+                    b.Property<long>("SOID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("WBSElementcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("棰嗙敤椤圭洰鍙�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_stockreturn_order");
+
+                    b.HasComment("閫�鏂欏叆搴撳崟");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrderDetails", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Batchno_SCM")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("SCM鎵规鍙�");
+
+                    b.Property<string>("Batchno_WMS")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("WMS鎵规鍙�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<decimal>("Length")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍗曟牴闀垮害");
+
+                    b.Property<string>("Materialcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("Materialname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<decimal>("Number")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("浠舵暟");
+
+                    b.Property<long>("OID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+                    b.Property<long>("OrderId")
+                        .HasMaxLength(50)
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁Id");
+
+                    b.Property<string>("PartCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍒嗘鍙�");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("椤圭洰缂栧彿");
+
+                    b.Property<decimal>("Qty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏁伴噺");
+
+                    b.Property<string>("TACode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("TA鍙�");
+
+                    b.Property<string>("Unit")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍩烘湰鍗曚綅");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OrderId");
+
+                    b.ToTable("wms_stockreturn_order_details");
+
+                    b.HasComment("閫�鏂欏叆搴撳崟璇︽儏");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("BenefitingDepartcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("棰嗘枡閮ㄩ棬");
+
+                    b.Property<DateTimeOffset?>("Billdate")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("棰嗘枡鍗曠敵璇锋棩鏈�");
+
+                    b.Property<string>("Companyname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍏徃");
+
+                    b.Property<string>("ConstructionTeamID")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鏂藉伐闃�");
+
+                    b.Property<string>("CostCenterID")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍙楃泭閮ㄩ棬");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("FI_Client_Analysis_H")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("瀹㈡埛");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<long>("IsInnerCompany")
+                        .HasColumnType("bigint")
+                        .HasComment("鏄惁鍏徃闂翠氦鏄�");
+
+                    b.Property<string>("MoveType")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("浜嬪姟绫诲瀷");
+
+                    b.Property<string>("NO")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍗曟嵁缂栧彿");
+
+                    b.Property<long>("OrderLargeCategory")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁澶х被");
+
+                    b.Property<int>("OrderStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍗曟嵁鐘舵��");
+
+                    b.Property<long>("OrderSubclass")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁灏忕被");
+
+                    b.Property<string>("PickerID")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("棰嗘枡浜�");
+
+                    b.Property<long>("SOID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("WBSElementcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("棰嗙敤椤圭洰鍙�");
+
+                    b.Property<string>("WarehouseCentername")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撳偍涓績");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_takematerialorder");
+
+                    b.HasComment("棰嗘枡鍗�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrderDetail", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Batchno_SCM")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("SCM鎵规鍙�");
+
+                    b.Property<string>("Batchno_WMS")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("WMS鎵规鍙�");
+
+                    b.Property<string>("ContainerCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎵樼洏缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<decimal>("DistributeQty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("涓嬪彂鏁伴噺");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Materialcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("Materialname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<decimal>("Number")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("浠舵暟");
+
+                    b.Property<long>("OID")
+                        .HasColumnType("bigint")
+                        .HasComment("SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑");
+
+                    b.Property<long>("OrderId")
+                        .HasMaxLength(50)
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁Id");
+
+                    b.Property<int>("OrderStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍗曟嵁鐘舵��");
+
+                    b.Property<string>("PartCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍒嗘鍙�");
+
+                    b.Property<string>("PlaceCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("椤圭洰缂栧彿");
+
+                    b.Property<decimal>("Qty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏁伴噺");
+
+                    b.Property<decimal>("SingleLength")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍗曟牴闀垮害");
+
+                    b.Property<string>("TACode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("TA鍙�");
+
+                    b.Property<string>("Unit")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍩烘湰鍗曚綅");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OrderId");
+
+                    b.ToTable("wms_takematerial_orderdetail");
+
+                    b.HasComment("鍗曟嵁鏄庣粏琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsTask", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<int>("Aisle")
+                        .HasColumnType("int")
+                        .HasComment("宸烽亾");
+
+                    b.Property<string>("AreaName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撳尯鍚嶇О");
+
+                    b.Property<string>("ContainerCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎵樼洏缂栧彿");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("Description")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍏ュ簱鏉ユ簮");
+
+                    b.Property<int>("DodeviceId")
+                        .HasColumnType("int")
+                        .HasComment("浠诲姟鎵ц鍫嗗灈鏈篒d");
+
+                    b.Property<string>("DodevicenodeId")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璁惧鎵ц鑺傜偣Id");
+
+                    b.Property<int>("Dodevicetype")
+                        .HasMaxLength(50)
+                        .HasColumnType("int")
+                        .HasComment("璁惧绫诲瀷");
+
+                    b.Property<int>("EmptyContainer")
+                        .HasColumnType("int")
+                        .HasComment("鏄惁绌烘墭");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<bool>("IsRead")
+                        .HasColumnType("bit")
+                        .HasComment("WCS鏄惁鍙互璇诲彇");
+
+                    b.Property<long>("OrderDetailsId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁鏄庣粏Id");
+
+                    b.Property<string>("OrderNo")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("缁勭洏璁板綍鍗曟嵁鍙�");
+
+                    b.Property<int>("SendTimes")
+                        .HasColumnType("int")
+                        .HasComment("鍙戦�佹鏁�");
+
+                    b.Property<string>("SourcePlace")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璧峰搴撲綅");
+
+                    b.Property<int>("TaskDodeviceStatus")
+                        .HasColumnType("int")
+                        .HasComment("浠诲姟璁惧鐘舵��");
+
+                    b.Property<int>("TaskLevel")
+                        .HasColumnType("int")
+                        .HasComment("浠诲姟绾у埆");
+
+                    b.Property<int>("TaskModel")
+                        .HasColumnType("int")
+                        .HasComment("浠诲姟鏂瑰紡");
+
+                    b.Property<string>("TaskNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("浠诲姟鍙�");
+
+                    b.Property<int>("TaskStatus")
+                        .HasColumnType("int")
+                        .HasComment("浠诲姟鐘舵��");
+
+                    b.Property<int>("TaskType")
+                        .HasColumnType("int")
+                        .HasComment("浠诲姟绫诲瀷");
+
+                    b.Property<string>("ToPlace")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐩爣搴撲綅");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_task");
+
+                    b.HasComment("浠诲姟绠$悊琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsWarehouseEntrance", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<int>("AffiliatedRoadway")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炲贩閬�");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("LesWorkShopType")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炶溅闂�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int")
+                        .HasComment("绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_warehouse_entrance");
+
+                    b.HasComment("搴撳彛琛�");
+                });
+
+            modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCode", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AuthorName")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("浣滆�呭鍚�");
+
+                    b.Property<string>("BusName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("涓氬姟鍚�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DatabaseName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏁版嵁搴撳悕");
+
+                    b.Property<string>("FormDesign")
+                        .HasColumnType("text")
+                        .HasComment("鍔ㄦ�佽〃鍗�");
+
+                    b.Property<int>("FormDesignType")
+                        .HasColumnType("int")
+                        .HasComment("鍔ㄦ�佽〃鍗曠被鍨�");
+
+                    b.Property<string>("GenerateType")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鐢熸垚鏂瑰紡");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("MenuApplication")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鑿滃崟搴旂敤鍒嗙被");
+
+                    b.Property<long>("MenuPid")
+                        .HasColumnType("bigint")
+                        .HasComment("鑿滃崟缂栫爜");
+
+                    b.Property<string>("ModuleName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("妯″潡鍚�,鐢ㄤ簬鐢熸垚鐨勬枃浠跺す鐩綍");
+
+                    b.Property<string>("NameSpace")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍛藉悕绌洪棿");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_low_code_module");
+
+                    b.HasComment("浣庝唬鐮佹ā鍧楃鐞�");
+                });
+
+            modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCodeDataBase", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("ClassName")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("绫诲悕");
+
+                    b.Property<string>("Control_Key")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("缁勪欢Key");
+
+                    b.Property<string>("Control_Label")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("缁勪欢鍚嶇О");
+
+                    b.Property<string>("Control_Model")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("缁勪欢瀛楁");
+
+                    b.Property<string>("Control_Type")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("缁勪欢瀛楁");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DbParam")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("鏁版嵁绫诲瀷琛ュ厖鍙傛暟");
+
+                    b.Property<string>("DbTypeName")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("鏁版嵁绫诲瀷");
+
+                    b.Property<string>("DtoTypeName")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("浼犲叆鏁版嵁绫诲瀷");
+
+                    b.Property<string>("FieldName")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("瀛楁鍚嶇О");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<bool?>("IsRequired")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁蹇呭~");
+
+                    b.Property<string>("QueryType")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鏌ヨ鏂瑰紡");
+
+                    b.Property<bool?>("QueryWhether")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鏄煡璇�");
+
+                    b.Property<long>("SysLowCodeId")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("TableDesc")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("琛ㄦ弿杩�");
+
+                    b.Property<string>("TableName")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("琛ㄥ悕");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<bool?>("WhetherAddUpdate")
+                        .HasColumnType("bit")
+                        .HasComment("澧炴敼");
+
+                    b.Property<bool?>("WhetherOrderBy")
+                        .HasColumnType("bit")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<bool?>("WhetherTable")
+                        .HasColumnType("bit")
+                        .HasComment("鍒楄〃鏄剧ず");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("SysLowCodeId");
+
+                    b.ToTable("sys_low_code_module_database");
+
+                    b.HasComment("浣庝唬鐮佹ā鍧楃鐞�");
+                });
+
+            modelBuilder.Entity("Furion.Extras.Admin.NET.SysCodeModular", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AuthorName")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("浣滆�呭鍚�");
+
+                    b.Property<string>("BusName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("涓氬姟鍚�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DatabaseName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏁版嵁搴撳悕");
+
+                    b.Property<string>("FormDesignJson")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍔ㄦ�佽〃鍗�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("MenuApplication")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鑿滃崟搴旂敤鍒嗙被");
+
+                    b.Property<long>("MenuPid")
+                        .HasColumnType("bigint")
+                        .HasComment("鑿滃崟缂栫爜");
+
+                    b.Property<string>("NameSpace")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍛藉悕绌洪棿");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_code_modular");
+
+                    b.HasComment("鍔ㄦ�佺敓鎴愭ā鍧楃鐞嗚〃");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.Entity.WmsBase.WmsRolePdaMenu", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsPdaPower", "WmsPdaPower")
+                        .WithMany("WmsRolePdaMenus")
+                        .HasForeignKey("PdaMenuId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+                        .WithMany("WmsRolePdaMenus")
+                        .HasForeignKey("SysRoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysRole");
+
+                    b.Navigation("WmsPdaPower");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.LesEntrance", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsArea", "WmsArea")
+                        .WithMany("LesEntrance")
+                        .HasForeignKey("AreaId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WmsArea");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysDictData", b =>
+                {
+                    b.HasOne("Admin.NET.Core.SysDictType", "SysDictType")
+                        .WithMany("SysDictDatas")
+                        .HasForeignKey("TypeId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysDictType");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysEmpExtOrgPos", b =>
+                {
+                    b.HasOne("Admin.NET.Core.SysEmp", "SysEmp")
+                        .WithMany()
+                        .HasForeignKey("SysEmpId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysOrg", "SysOrg")
+                        .WithMany()
+                        .HasForeignKey("SysOrgId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysPos", "SysPos")
+                        .WithMany()
+                        .HasForeignKey("SysPosId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysEmp");
+
+                    b.Navigation("SysOrg");
+
+                    b.Navigation("SysPos");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysEmpPos", b =>
+                {
+                    b.HasOne("Admin.NET.Core.SysEmp", "SysEmp")
+                        .WithMany("SysEmpPos")
+                        .HasForeignKey("SysEmpId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysPos", "SysPos")
+                        .WithMany("SysEmpPos")
+                        .HasForeignKey("SysPosId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysEmp");
+
+                    b.Navigation("SysPos");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysRoleDataScope", b =>
+                {
+                    b.HasOne("Admin.NET.Core.SysOrg", "SysOrg")
+                        .WithMany("SysRoleDataScopes")
+                        .HasForeignKey("SysOrgId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+                        .WithMany("SysRoleDataScopes")
+                        .HasForeignKey("SysRoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysOrg");
+
+                    b.Navigation("SysRole");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysRoleMenu", b =>
+                {
+                    b.HasOne("Admin.NET.Core.SysMenu", "SysMenu")
+                        .WithMany("SysRoleMenus")
+                        .HasForeignKey("SysMenuId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+                        .WithMany("SysRoleMenus")
+                        .HasForeignKey("SysRoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysMenu");
+
+                    b.Navigation("SysRole");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysUserDataScope", b =>
+                {
+                    b.HasOne("Admin.NET.Core.SysOrg", "SysOrg")
+                        .WithMany("SysUserDataScopes")
+                        .HasForeignKey("SysOrgId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysUser", "SysUser")
+                        .WithMany("SysUserDataScopes")
+                        .HasForeignKey("SysUserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysOrg");
+
+                    b.Navigation("SysUser");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysUserRole", b =>
+                {
+                    b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+                        .WithMany("SysUserRoles")
+                        .HasForeignKey("SysRoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysUser", "SysUser")
+                        .WithMany("SysUserRoles")
+                        .HasForeignKey("SysUserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysRole");
+
+                    b.Navigation("SysUser");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsDumpOrderDetails", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsDumpOrder", "WmsDumpOrder")
+                        .WithMany("WmsDumpOrderDetails")
+                        .HasForeignKey("OrderId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WmsDumpOrder");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrderDetails", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsGoodsReturnOrder", "WmsGoodsReturnOrder")
+                        .WithMany("WmsGoodsReturnOrderDetails")
+                        .HasForeignKey("OrderId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WmsGoodsReturnOrder");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsHistoryMaterialContainer", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsMaterial", "WmsMaterial")
+                        .WithMany("WmsFoamingHistoryMaterialContainer")
+                        .HasForeignKey("MaterialId");
+
+                    b.Navigation("WmsMaterial");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsMaterialContainer", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsMaterial", "WmsMaterial")
+                        .WithMany("WmsFoamingMaterialContainer")
+                        .HasForeignKey("MaterialId");
+
+                    b.HasOne("Admin.NET.Core.WmsContainer", "WmsContainer")
+                        .WithMany()
+                        .HasForeignKey("WmsContainerId");
+
+                    b.Navigation("WmsContainer");
+
+                    b.Navigation("WmsMaterial");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsOrderDetails", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsOrder", "WareOrder")
+                        .WithMany("WareOrderDetails")
+                        .HasForeignKey("OrderId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WareOrder");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsPlace", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsArea", "WmsArea")
+                        .WithMany("WmsPlaces")
+                        .HasForeignKey("AreaId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WmsArea");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrderDetails", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsReceiptOrder", "WmsReceiptOrder")
+                        .WithMany("WmsReceiptOrderDetails")
+                        .HasForeignKey("OrderId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WmsReceiptOrder");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrderDetails", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsStockReturnOrder", "WmsStockReturnOrder")
+                        .WithMany("WmsStockReturnOrderDetails")
+                        .HasForeignKey("OrderId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WmsStockReturnOrder");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrderDetail", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsTakeMaterialOrder", "WmsTakeMaterialOrder")
+                        .WithMany("WmsTakeMaterialOrderDetail")
+                        .HasForeignKey("OrderId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WmsTakeMaterialOrder");
+                });
+
+            modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCodeDataBase", b =>
+                {
+                    b.HasOne("Furion.Extras.Admin.NET.Entity.SysLowCode", "SysLowCode")
+                        .WithMany("Databases")
+                        .HasForeignKey("SysLowCodeId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysLowCode");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysDictType", b =>
+                {
+                    b.Navigation("SysDictDatas");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysEmp", b =>
+                {
+                    b.Navigation("SysEmpPos");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysMenu", b =>
+                {
+                    b.Navigation("SysRoleMenus");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysOrg", b =>
+                {
+                    b.Navigation("SysRoleDataScopes");
+
+                    b.Navigation("SysUserDataScopes");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysPos", b =>
+                {
+                    b.Navigation("SysEmpPos");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysRole", b =>
+                {
+                    b.Navigation("SysRoleDataScopes");
+
+                    b.Navigation("SysRoleMenus");
+
+                    b.Navigation("SysUserRoles");
+
+                    b.Navigation("WmsRolePdaMenus");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysUser", b =>
+                {
+                    b.Navigation("SysUserDataScopes");
+
+                    b.Navigation("SysUserRoles");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsArea", b =>
+                {
+                    b.Navigation("LesEntrance");
+
+                    b.Navigation("WmsPlaces");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsDumpOrder", b =>
+                {
+                    b.Navigation("WmsDumpOrderDetails");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrder", b =>
+                {
+                    b.Navigation("WmsGoodsReturnOrderDetails");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsMaterial", b =>
+                {
+                    b.Navigation("WmsFoamingHistoryMaterialContainer");
+
+                    b.Navigation("WmsFoamingMaterialContainer");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsOrder", b =>
+                {
+                    b.Navigation("WareOrderDetails");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsPdaPower", b =>
+                {
+                    b.Navigation("WmsRolePdaMenus");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrder", b =>
+                {
+                    b.Navigation("WmsReceiptOrderDetails");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrder", b =>
+                {
+                    b.Navigation("WmsStockReturnOrderDetails");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrder", b =>
+                {
+                    b.Navigation("WmsTakeMaterialOrderDetail");
+                });
+
+            modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCode", b =>
+                {
+                    b.Navigation("Databases");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.cs
new file mode 100644
index 0000000..850c5e0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.cs
@@ -0,0 +1,3102 @@
+锘縰sing System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Admin.NET.Database.Migrations.Migrations
+{
+    public partial class v101 : Migration
+    {
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.CreateTable(
+                name: "les_agv_task",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    TaskType = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱"),
+                    StartPlace = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "璧峰浣嶇疆"),
+                    StartName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "璧峰鍚嶇О"),
+                    EndPlace = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "缁撴潫浣嶇疆"),
+                    EndName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "缁撴潫鍚嶇О"),
+                    AgvState = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐘舵��"),
+                    TransportOrder = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "褰撳墠鎵ц鐨勪换鍔�"),
+                    TaskNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "涓讳换鍔″彿"),
+                    Pid = table.Column<long>(type: "bigint", nullable: false, comment: "Agv鐖禝d"),
+                    ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹瑰櫒缂栧彿"),
+                    WorkShopType = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炶溅闂�"),
+                    SourcePlaceName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "璧峰搴撲綅鍚嶇О"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_les_agv_task", x => x.Id);
+                },
+                comment: "Agv浠诲姟琛�");
+
+            migrationBuilder.CreateTable(
+                name: "les_agv_waring",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Code = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "鍞竴缂栫爜"),
+                    TransportOrder = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "浠诲姟鍙�"),
+                    AgvCarCode = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "agv灏忚溅缂栧彿"),
+                    FaultText = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鏁呴殰鍐呭"),
+                    StartTime = table.Column<DateTimeOffset>(type: "datetimeoffset", maxLength: 50, nullable: true, comment: "鏁呴殰鏃堕棿"),
+                    YesOrNot = table.Column<int>(type: "int", maxLength: 50, nullable: false, comment: "鏄惁瑙e喅"),
+                    IsRead = table.Column<bool>(type: "bit", nullable: false, comment: "WCS鏄惁鍙互璇诲彇"),
+                    WorkShopType = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炶溅闂�"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_les_agv_waring", x => x.Id);
+                },
+                comment: "Agv鎶ヨ");
+
+            migrationBuilder.CreateTable(
+                name: "les_devicewaring",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    WcsId = table.Column<int>(type: "int", nullable: false, comment: "WcsId"),
+                    DeviceName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "璁惧鍚嶇О"),
+                    FaultName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鏁呴殰鍚嶇О"),
+                    StartTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍙戠敓鏃堕棿"),
+                    EndTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "缁撴潫鏃堕棿"),
+                    RunningTime = table.Column<int>(type: "int", nullable: false, comment: "鎸佺画鏃堕棿"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_les_devicewaring", x => x.Id);
+                },
+                comment: "璁惧鎶ヨ");
+
+            migrationBuilder.CreateTable(
+                name: "les_packwarehouse",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    PackCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鏍囩鐮�"),
+                    MaterialNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡鐮�"),
+                    Long = table.Column<int>(type: "int", nullable: false, comment: "闀�"),
+                    Wide = table.Column<int>(type: "int", nullable: false, comment: "瀹�"),
+                    High = table.Column<int>(type: "int", nullable: false, comment: "楂�"),
+                    OutputEntrance = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍑哄簱鍙�"),
+                    LesPackState = table.Column<int>(type: "int", nullable: false, comment: "鎵撳寘鐘舵��"),
+                    OrderNo = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鍗曟嵁鍙�"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_les_packwarehouse", x => x.Id);
+                },
+                comment: "鎵撳寘琛�");
+
+            migrationBuilder.CreateTable(
+                name: "les_serial_rule_detail",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    SerialType = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴忓彿绫诲埆"),
+                    ItemNo = table.Column<int>(type: "int", nullable: false, comment: "椤规"),
+                    SourceType = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "璧勬枡鏉ユ簮"),
+                    SerialLength = table.Column<int>(type: "int", nullable: false, comment: "闀垮害"),
+                    SearchStart = table.Column<int>(type: "int", nullable: false, comment: "鎾峰彇鐮佹暟(璧�)"),
+                    DecimalType = table.Column<int>(type: "int", nullable: false, comment: "杩涗綅绫诲瀷"),
+                    UserDefine = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "浣跨敤鑰呰嚜瀹氫箟"),
+                    SerialCodeFlag = table.Column<int>(type: "int", nullable: false, comment: "搴忓彿缂栫爜"),
+                    Description = table.Column<string>(type: "nvarchar(300)", maxLength: 300, nullable: true, comment: "璇存槑"),
+                    SerialTypeNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴忓彿绫诲埆缂栧彿"),
+                    GetData = table.Column<int>(type: "int", maxLength: 50, nullable: false, comment: "鎾峰彇"),
+                    PadLeft = table.Column<int>(type: "int", nullable: false, comment: "鑷姩琛ラ浂"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_les_serial_rule_detail", x => x.Id);
+                },
+                comment: "缂栧彿瑙勫垯");
+
+            migrationBuilder.CreateTable(
+                name: "les_station",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    ProductionlineId = table.Column<long>(type: "bigint", nullable: false, comment: "浜х嚎Id"),
+                    Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "宸ヤ綅鍚嶇О"),
+                    Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "宸ヤ綅缂栫爜"),
+                    Status = table.Column<int>(type: "int", nullable: false, comment: "宸ヤ綅鐘舵��"),
+                    StataionStatus = table.Column<int>(type: "int", nullable: false, comment: "杩愯鐘舵��"),
+                    ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅缂栫爜"),
+                    PlaceSpec = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "搴撲綅瑙勬牸"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_les_station", x => x.Id);
+                },
+                comment: "宸ヤ綅琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_app",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Name = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "鍚嶇О"),
+                    Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+                    Active = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鏄惁榛樿婵�娲�"),
+                    Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+                    Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_app", x => x.Id);
+                },
+                comment: "绯荤粺搴旂敤琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_code_gen",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    AuthorName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "浣滆�呭鍚�"),
+                    TablePrefix = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鏄惁绉婚櫎琛ㄥ墠缂�"),
+                    GenerateType = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鐢熸垚鏂瑰紡"),
+                    DatabaseName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏁版嵁搴撳悕"),
+                    TableName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏁版嵁搴撹〃鍚�"),
+                    NameSpace = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍛藉悕绌洪棿"),
+                    ModuleName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "妯″潡璺緞"),
+                    FrontProName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍓嶇椤圭洰鍚�"),
+                    BusName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "涓氬姟鍚�"),
+                    MenuApplication = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鑿滃崟搴旂敤鍒嗙被"),
+                    MenuPid = table.Column<long>(type: "bigint", nullable: false, comment: "鑿滃崟缂栫爜"),
+                    LowCodeId = table.Column<long>(type: "bigint", nullable: true),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_code_gen", x => x.Id);
+                },
+                comment: "浠g爜鐢熸垚琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_code_gen_config",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    CodeGenId = table.Column<long>(type: "bigint", nullable: false, comment: "浠g爜鐢熸垚涓昏〃ID"),
+                    ColumnName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false, comment: "鏁版嵁搴撳瓧娈靛悕"),
+                    ColumnComment = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "瀛楁鎻忚堪"),
+                    NetType = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: ".NET鏁版嵁绫诲瀷"),
+                    DtoNetType = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: ".NET鏁版嵁绫诲瀷(鎺ュ彛浼犲叆)"),
+                    EffectType = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "浣滅敤绫诲瀷"),
+                    FkEntityName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "澶栭敭瀹炰綋鍚嶇О"),
+                    FkColumnName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "澶栭敭鏄剧ず瀛楁"),
+                    FkColumnNetType = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "澶栭敭鏄剧ず瀛楁.NET绫诲瀷"),
+                    DictTypeCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀛楀吀Code"),
+                    WhetherRetract = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鍒楄〃鏄惁缂╄繘"),
+                    WhetherRequired = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鏄惁蹇呭~"),
+                    QueryWhether = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鏄惁鏄煡璇㈡潯浠�"),
+                    QueryType = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "鏌ヨ鏂瑰紡"),
+                    WhetherTable = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鍒楄〃鏄剧ず"),
+                    WhetherOrderBy = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鍒楄〃鏄惁鎺掑簭"),
+                    WhetherAddUpdate = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "澧炴敼"),
+                    ColumnKey = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "涓婚敭"),
+                    DataType = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true, comment: "鏁版嵁搴撲腑绫诲瀷"),
+                    WhetherCommon = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鏄惁閫氱敤瀛楁"),
+                    ShowTitleMinWidth = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "椤甸潰鍒楁樉绀烘渶灏忓搴�"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_code_gen_config", x => x.Id);
+                },
+                comment: "浠g爜鐢熸垚瀛楁閰嶇疆琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_code_modular",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    AuthorName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "浣滆�呭鍚�"),
+                    DatabaseName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏁版嵁搴撳悕"),
+                    NameSpace = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍛藉悕绌洪棿"),
+                    BusName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "涓氬姟鍚�"),
+                    MenuApplication = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鑿滃崟搴旂敤鍒嗙被"),
+                    MenuPid = table.Column<long>(type: "bigint", nullable: false, comment: "鑿滃崟缂栫爜"),
+                    FormDesignJson = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鍔ㄦ�佽〃鍗�"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_code_modular", x => x.Id);
+                },
+                comment: "鍔ㄦ�佺敓鎴愭ā鍧楃鐞嗚〃");
+
+            migrationBuilder.CreateTable(
+                name: "sys_config",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鍚嶇О"),
+                    Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+                    Value = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "灞炴�у��"),
+                    SysFlag = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鏄惁鏄郴缁熷弬鏁�"),
+                    Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+                    Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+                    GroupCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "甯搁噺鎵�灞炲垎绫荤殑缂栫爜"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_config", x => x.Id);
+                },
+                comment: "鍙傛暟閰嶇疆琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_dict_type",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鍚嶇О"),
+                    Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+                    Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+                    Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+                    Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+                    EnumClassName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "瀵瑰簲鏋氫妇"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_dict_type", x => x.Id);
+                },
+                comment: "瀛楀吀绫诲瀷琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_emp",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "鐢ㄦ埛Id"),
+                    JobNum = table.Column<string>(type: "nvarchar(30)", maxLength: 30, nullable: true, comment: "宸ュ彿"),
+                    OrgId = table.Column<long>(type: "bigint", nullable: false, comment: "鏈烘瀯Id"),
+                    OrgName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鏈烘瀯鍚嶇О")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_emp", x => x.Id);
+                },
+                comment: "鍛樺伐琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_excel_template",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "妯℃澘鍚嶇О"),
+                    Version = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "鐗堟湰"),
+                    AppName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "鎵�灞炲簲鐢�"),
+                    ClassName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "绫诲悕"),
+                    TemplateFileName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "妯℃澘鏂囦欢鍚嶇О"),
+                    UnionUniqueFields = table.Column<string>(type: "nvarchar(300)", maxLength: 300, nullable: false, comment: "鍞竴瀛楁闆�"),
+                    HeadStartLine = table.Column<int>(type: "int", nullable: false, comment: "琛ㄥご寮�濮嬭"),
+                    DataStartLine = table.Column<int>(type: "int", nullable: false, comment: "鏁版嵁寮�濮嬭"),
+                    Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_excel_template", x => x.Id);
+                    table.UniqueConstraint("AK_sys_excel_template_ClassName_Version_AppName", x => new { x.ClassName, x.Version, x.AppName });
+                },
+                comment: "Excel妯℃澘");
+
+            migrationBuilder.CreateTable(
+                name: "sys_file",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    FileLocation = table.Column<int>(type: "int", nullable: false, comment: "鏂囦欢瀛樺偍浣嶇疆"),
+                    FileBucket = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏂囦欢浠撳簱"),
+                    FileOriginName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏂囦欢鍚嶇О"),
+                    FileSuffix = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鏂囦欢鍚庣紑"),
+                    FileSizeKb = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "鏂囦欢澶у皬kb"),
+                    FileSizeInfo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鏂囦欢澶у皬淇℃伅"),
+                    FileObjectName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "瀛樺偍鍒癰ucket鐨勫悕绉�"),
+                    FilePath = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "瀛樺偍璺緞"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_file", x => x.Id);
+                },
+                comment: "鏂囦欢淇℃伅琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_forms",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Title = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "鏍囬"),
+                    FormJson = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "form琛ㄥ崟Json"),
+                    Publish = table.Column<bool>(type: "bit", nullable: false, comment: "鏄惁鍙戝竷"),
+                    TypeId = table.Column<long>(type: "bigint", nullable: false, comment: "琛ㄥ崟绫诲瀷ID"),
+                    Version = table.Column<int>(type: "int", nullable: false, comment: "鐗堟湰"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_forms", x => x.Id);
+                },
+                comment: "琛ㄥ崟琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_log_audit",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "int", nullable: false)
+                        .Annotation("SqlServer:Identity", "1, 1"),
+                    TableName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "琛ㄥ悕"),
+                    ColumnName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒楀悕"),
+                    NewValue = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鏂板��"),
+                    OldValue = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鏃у��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鎿嶄綔鏃堕棿"),
+                    UserId = table.Column<long>(type: "bigint", nullable: false, comment: "鎿嶄綔浜篒d"),
+                    UserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鎿嶄綔浜哄悕绉�"),
+                    Operate = table.Column<int>(type: "int", nullable: false, comment: "鎿嶄綔鏂瑰紡")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_log_audit", x => x.Id);
+                },
+                comment: "瀹¤鏃ュ織琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_log_ex",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "int", nullable: false)
+                        .Annotation("SqlServer:Identity", "1, 1"),
+                    Account = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鎿嶄綔浜�"),
+                    Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍚嶇О"),
+                    ClassName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "绫诲悕"),
+                    MethodName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏂规硶鍚�"),
+                    ExceptionName = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "寮傚父鍚嶇О"),
+                    ExceptionMsg = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "寮傚父淇℃伅"),
+                    ExceptionSource = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "寮傚父婧�"),
+                    StackTrace = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鍫嗘爤淇℃伅"),
+                    ParamsObj = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鍙傛暟瀵硅薄"),
+                    ExceptionTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "寮傚父鏃堕棿")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_log_ex", x => x.Id);
+                },
+                comment: "寮傚父鏃ュ織琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_log_op",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "int", nullable: false)
+                        .Annotation("SqlServer:Identity", "1, 1"),
+                    Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍚嶇О"),
+                    Success = table.Column<int>(type: "int", nullable: false, comment: "鏄惁鎵ц鎴愬姛"),
+                    Message = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鍏蜂綋娑堟伅"),
+                    Ip = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "IP"),
+                    Location = table.Column<string>(type: "nvarchar(1024)", maxLength: 1024, nullable: true, comment: "鍦板潃"),
+                    Browser = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "娴忚鍣�"),
+                    Os = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鎿嶄綔绯荤粺"),
+                    Url = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "璇锋眰鍦板潃"),
+                    ClassName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "绫诲悕绉�"),
+                    MethodName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏂规硶鍚嶇О"),
+                    ReqMethod = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "璇锋眰鏂瑰紡"),
+                    Param = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "璇锋眰鍙傛暟"),
+                    Result = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "杩斿洖缁撴灉"),
+                    ElapsedTime = table.Column<long>(type: "bigint", nullable: false, comment: "鑰楁椂"),
+                    OpTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鎿嶄綔鏃堕棿"),
+                    Account = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鎿嶄綔浜�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_log_op", x => x.Id);
+                },
+                comment: "鎿嶄綔鏃ュ織琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_log_vis",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "int", nullable: false)
+                        .Annotation("SqlServer:Identity", "1, 1"),
+                    Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍚嶇О"),
+                    Success = table.Column<int>(type: "int", nullable: false, comment: "鏄惁鎵ц鎴愬姛"),
+                    Message = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鍏蜂綋娑堟伅"),
+                    Ip = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "IP"),
+                    Location = table.Column<string>(type: "nvarchar(1024)", maxLength: 1024, nullable: true, comment: "鍦板潃"),
+                    Browser = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "娴忚鍣�"),
+                    Os = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鎿嶄綔绯荤粺"),
+                    VisType = table.Column<int>(type: "int", nullable: false, comment: "璁块棶绫诲瀷"),
+                    VisTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "璁块棶鏃堕棿"),
+                    Account = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "璁块棶浜�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_log_vis", x => x.Id);
+                },
+                comment: "璁块棶鏃ュ織琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_low_code_module",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    AuthorName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "浣滆�呭鍚�"),
+                    GenerateType = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鐢熸垚鏂瑰紡"),
+                    DatabaseName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏁版嵁搴撳悕"),
+                    NameSpace = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍛藉悕绌洪棿"),
+                    ModuleName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "妯″潡鍚�,鐢ㄤ簬鐢熸垚鐨勬枃浠跺す鐩綍"),
+                    BusName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "涓氬姟鍚�"),
+                    MenuApplication = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鑿滃崟搴旂敤鍒嗙被"),
+                    MenuPid = table.Column<long>(type: "bigint", nullable: false, comment: "鑿滃崟缂栫爜"),
+                    FormDesignType = table.Column<int>(type: "int", nullable: false, comment: "鍔ㄦ�佽〃鍗曠被鍨�"),
+                    FormDesign = table.Column<string>(type: "text", nullable: true, comment: "鍔ㄦ�佽〃鍗�"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_low_code_module", x => x.Id);
+                },
+                comment: "浣庝唬鐮佹ā鍧楃鐞�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_menu",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Pid = table.Column<long>(type: "bigint", nullable: false, comment: "鐖禝d"),
+                    Pids = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鐖禝ds"),
+                    Name = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "鍚嶇О"),
+                    Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+                    Type = table.Column<int>(type: "int", nullable: false, comment: "鑿滃崟绫诲瀷"),
+                    Icon = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鍥炬爣"),
+                    Router = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "璺敱鍦板潃"),
+                    Component = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "缁勪欢鍦板潃"),
+                    Permission = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏉冮檺鏍囪瘑"),
+                    Application = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴旂敤鍒嗙被"),
+                    OpenType = table.Column<int>(type: "int", nullable: false, comment: "鎵撳紑鏂瑰紡"),
+                    Visible = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鏄惁鍙"),
+                    Link = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍐呴摼鍦板潃"),
+                    Redirect = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "閲嶅畾鍚戝湴鍧�"),
+                    Weight = table.Column<int>(type: "int", nullable: false, comment: "鏉冮噸"),
+                    Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+                    Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+                    Status = table.Column<int>(type: "int", nullable: false),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_menu", x => x.Id);
+                },
+                comment: "鑿滃崟琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_notice",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Title = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "鏍囬"),
+                    Content = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "鍐呭"),
+                    Type = table.Column<int>(type: "int", nullable: false, comment: "绫诲瀷"),
+                    PublicUserId = table.Column<long>(type: "bigint", nullable: false, comment: "鍙戝竷浜篒d"),
+                    PublicUserName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鍙戝竷浜哄鍚�"),
+                    PublicOrgId = table.Column<long>(type: "bigint", nullable: false, comment: "鍙戝竷鏈烘瀯Id"),
+                    PublicOrgName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍙戝竷鏈烘瀯鍚嶇О"),
+                    PublicTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍙戝竷鏃堕棿"),
+                    CancelTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鎾ゅ洖鏃堕棿"),
+                    Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_notice", x => x.Id);
+                },
+                comment: "閫氱煡鍏憡琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_notice_user",
+                columns: table => new
+                {
+                    NoticeId = table.Column<long>(type: "bigint", nullable: false, comment: "閫氱煡鍏憡Id"),
+                    UserId = table.Column<long>(type: "bigint", nullable: false, comment: "鐢ㄦ埛Id"),
+                    ReadTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "闃呰鏃堕棿"),
+                    ReadStatus = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_notice_user", x => new { x.NoticeId, x.UserId });
+                },
+                comment: "閫氱煡鍏憡鐢ㄦ埛琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_org",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Pid = table.Column<long>(type: "bigint", nullable: false, comment: "鐖禝d"),
+                    Pids = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鐖禝ds"),
+                    Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false, comment: "鍚嶇О"),
+                    Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+                    Contacts = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鑱旂郴浜�"),
+                    Tel = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鐢佃瘽"),
+                    Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+                    Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+                    Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+                    OrgType = table.Column<string>(type: "nvarchar(max)", nullable: true),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_org", x => x.Id);
+                },
+                comment: "缁勭粐鏈烘瀯琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_pos",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Name = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "鍚嶇О"),
+                    Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+                    Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+                    Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+                    Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_pos", x => x.Id);
+                },
+                comment: "鑱屼綅琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_role",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Name = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "鍚嶇О"),
+                    Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+                    Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+                    DataScopeType = table.Column<int>(type: "int", nullable: false, comment: "鏁版嵁鑼冨洿绫诲瀷"),
+                    Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+                    Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+                    RoleType = table.Column<int>(type: "int", nullable: false, comment: "瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_role", x => x.Id);
+                },
+                comment: "瑙掕壊琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_timer",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    JobName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "浠诲姟鍚嶇О"),
+                    DoOnce = table.Column<bool>(type: "bit", nullable: false, comment: "鍙墽琛屼竴娆�"),
+                    StartNow = table.Column<bool>(type: "bit", nullable: false, comment: "绔嬪嵆鎵ц"),
+                    ExecuteType = table.Column<int>(type: "int", nullable: false, comment: "鎵ц绫诲瀷"),
+                    Interval = table.Column<int>(type: "int", nullable: true, comment: "闂撮殧鏃堕棿"),
+                    Cron = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "Cron琛ㄨ揪寮�"),
+                    TimerType = table.Column<int>(type: "int", nullable: false, comment: "瀹氭椂鍣ㄧ被鍨�"),
+                    RequestUrl = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "璇锋眰url"),
+                    RequestParameters = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "璇锋眰鍙傛暟"),
+                    Headers = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "Headers"),
+                    RequestType = table.Column<int>(type: "int", nullable: false, comment: "璇锋眰绫诲瀷"),
+                    Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_timer", x => x.Id);
+                },
+                comment: "瀹氭椂浠诲姟琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_user",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Account = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "璐﹀彿"),
+                    Password = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "瀵嗙爜"),
+                    NickName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鏄电О"),
+                    Name = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "濮撳悕"),
+                    Avatar = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "澶村儚"),
+                    Birthday = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鐢熸棩"),
+                    Sex = table.Column<int>(type: "int", nullable: false, comment: "鎬у埆-鐢穇1銆佸コ_2"),
+                    Email = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "閭"),
+                    Phone = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鎵嬫満"),
+                    Tel = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鐢佃瘽"),
+                    LastLoginIp = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鏈�鍚庣櫥褰旾P"),
+                    LastLoginTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏈�鍚庣櫥褰曟椂闂�"),
+                    AdminType = table.Column<int>(type: "int", nullable: false, comment: "绠$悊鍛樼被鍨�-瓒呯骇绠$悊鍛榑1銆佺鐞嗗憳_2銆佹櫘閫氳处鍙穇3"),
+                    Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2"),
+                    WorkShopType = table.Column<int>(type: "int", nullable: false),
+                    ProductionlineId = table.Column<long>(type: "bigint", nullable: false),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_user", x => x.Id);
+                },
+                comment: "鐢ㄦ埛琛�");
+
+            migrationBuilder.CreateTable(
+                name: "test_students",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Name = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "瀛︾敓濮撳悕"),
+                    Age = table.Column<int>(type: "int", nullable: false, comment: "瀛︾敓骞撮緞"),
+                    StartName = table.Column<bool>(type: "bit", maxLength: 50, nullable: false, comment: "鏄惁鍦ㄦ牎"),
+                    Gender = table.Column<int>(type: "int", nullable: false, comment: "鎬у埆"),
+                    BrithDate = table.Column<DateTime>(type: "datetime2", nullable: false, comment: "鍑虹敓鏃ユ湡"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_test_students", x => x.Id);
+                },
+                comment: "瀛︾敓淇℃伅琛�");
+
+            migrationBuilder.CreateTable(
+                name: "test_students2",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Name = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "瀛︾敓濮撳悕"),
+                    Age = table.Column<int>(type: "int", nullable: false, comment: "瀛︾敓骞撮緞"),
+                    HasMoney = table.Column<decimal>(type: "decimal(10,3)", nullable: false, comment: "闆惰姳閽�"),
+                    StartName = table.Column<bool>(type: "bit", maxLength: 50, nullable: false, comment: "鏄惁鍦ㄦ牎"),
+                    Gender = table.Column<int>(type: "int", nullable: false, comment: "鎬у埆"),
+                    BrithDate = table.Column<DateTime>(type: "datetime2", nullable: false, comment: "鍑虹敓鏃ユ湡"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_test_students2", x => x.Id);
+                },
+                comment: "瀛︾敓淇℃伅琛�");
+
+            migrationBuilder.CreateTable(
+                name: "test_students3",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Name = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "瀛︾敓濮撳悕"),
+                    Age = table.Column<int>(type: "int", nullable: false, comment: "瀛︾敓骞撮緞"),
+                    HasMoney = table.Column<decimal>(type: "decimal(10,3)", nullable: false, comment: "闆惰姳閽�"),
+                    StartName = table.Column<bool>(type: "bit", maxLength: 50, nullable: false, comment: "鏄惁鍦ㄦ牎"),
+                    Gender = table.Column<int>(type: "int", nullable: false, comment: "鎬у埆"),
+                    BrithDate = table.Column<DateTime>(type: "datetime2", nullable: false, comment: "鍑虹敓鏃ユ湡"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_test_students3", x => x.Id);
+                },
+                comment: "瀛︾敓淇℃伅琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_area",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    AreaName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鍚嶇О"),
+                    AreaDesc = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: true, comment: "鎻忚堪"),
+                    AreaStatus = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+                    AreaType = table.Column<int>(type: "int", nullable: false, comment: "鍒嗙被"),
+                    IsSteel = table.Column<bool>(type: "bit", nullable: false, comment: "鏄惁涓洪挗骞冲彴"),
+                    WorkShopType = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炶溅闂�"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_area", x => x.Id);
+                },
+                comment: "搴撳尯琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_container",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栧彿"),
+                    ContainerType = table.Column<int>(type: "int", nullable: false, comment: "绫诲瀷"),
+                    ContainerStatus = table.Column<int>(type: "int", nullable: false, comment: "鎵樼洏鐘舵��"),
+                    SpecLength = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "闀垮害"),
+                    SpecWidth = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "瀹藉害"),
+                    SpecHeight = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "楂樺害"),
+                    LimitLength = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "闄愰暱"),
+                    LimitWidth = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "闄愬"),
+                    LimitHeight = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "闄愰珮"),
+                    MaxWeight = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "杞介噸涓婇檺"),
+                    ParentContainerId = table.Column<long>(type: "bigint", nullable: false, comment: "鐖舵墭鐩業d"),
+                    AssetNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "璧勪骇缂栧彿"),
+                    ContainerCategory = table.Column<int>(type: "int", nullable: false, comment: "鎵樼洏鍒嗙被"),
+                    ErpNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "Erp鍗曞彿"),
+                    IsVirtually = table.Column<int>(type: "int", nullable: false, comment: "鏄惁铏氭嫙"),
+                    WorkShopType = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炶溅闂�"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_container", x => x.Id);
+                },
+                comment: "鎵樼洏淇℃伅琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_containerplace",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    PlaceId = table.Column<long>(type: "bigint", nullable: false, comment: "搴撲綅Id"),
+                    PlaceCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "搴撲綅缂栫爜"),
+                    ContainerId = table.Column<long>(type: "bigint", nullable: false, comment: "鎵樼洏Id"),
+                    ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "搴撲綅缂栫爜"),
+                    ContainerPlaceStatus = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_containerplace", x => x.Id);
+                },
+                comment: "鎵樼洏搴撲綅鍏崇郴琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_dumporder",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    OrderLargeCategory = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁澶х被"),
+                    OrderSubclass = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁灏忕被"),
+                    SOID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�"),
+                    NO = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "鍗曟嵁缂栧彿"),
+                    Billdate = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃ユ湡"),
+                    Creator = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍒涘缓浜�"),
+                    Companyname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍏徃"),
+                    OrderStatus = table.Column<int>(type: "int", nullable: false, comment: "鍗曟嵁鐘舵��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_dumporder", x => x.Id);
+                },
+                comment: "杞偍鍗�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_goodsreturnorder",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    OrderLargeCategory = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁澶х被"),
+                    OrderSubclass = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁灏忕被"),
+                    SOID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�"),
+                    NO = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "鍗曟嵁缂栧彿"),
+                    Billdate = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃ユ湡"),
+                    Vendorcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "渚涘簲鍟嗙紪鐮�"),
+                    Vendorname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "渚涘簲鍟嗗悕绉�"),
+                    Companyname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍏徃鍚嶇О"),
+                    WarehouseKeepername = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撶鍛�"),
+                    WarehouseCentername = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撳偍涓績"),
+                    GoodsReturnStatus = table.Column<int>(type: "int", nullable: false, comment: "閫�璐х姸鎬�"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_goodsreturnorder", x => x.Id);
+                },
+                comment: "閫�璐у崟");
+
+            migrationBuilder.CreateTable(
+                name: "wms_material",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    MaterialName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡鍚嶇О"),
+                    MaterialNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡缂栧彿"),
+                    MaterialBatch = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡鎵规"),
+                    MaterialType = table.Column<int>(type: "int", nullable: false, comment: "鐗╂枡绫诲埆"),
+                    InspectionMethod = table.Column<int>(type: "int", nullable: false, comment: "鐗╂枡妫�楠�"),
+                    MaterialSpec = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡瑙勬牸"),
+                    MaterialDensity = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡瀵嗗害"),
+                    MaterialUnit = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡鍗曚綅"),
+                    AreaIds = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "搴撳尯Ids"),
+                    AreaNameParameter = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "搴撳尯鍙傛暟"),
+                    StationIds = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "宸ヤ綔鍖篒ds"),
+                    StationNameParameter = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "宸ヤ綔鍖哄弬鏁�"),
+                    Description = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true, comment: "鎻忚堪"),
+                    Safeqty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "瀹夊叏瀛橀噺"),
+                    MaxImumqty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏈�澶у瓨閲�"),
+                    MinstorageAge = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏈�灏忓簱榫�"),
+                    MaxstorageAge = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏈�澶у簱榫�"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_material", x => x.Id);
+                },
+                comment: "鐗╂枡淇℃伅琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_materialstock",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    MaterialNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡缂栧彿"),
+                    MaterialType = table.Column<int>(type: "int", nullable: false, comment: "鐗╂枡绫诲埆"),
+                    MaterialBatch = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡鎵规"),
+                    MaterialName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡鍚嶇О"),
+                    MaterialSpec = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡瑙勬牸"),
+                    Long = table.Column<int>(type: "int", nullable: false, comment: "闀�"),
+                    Wide = table.Column<int>(type: "int", nullable: false, comment: "瀹�"),
+                    High = table.Column<int>(type: "int", nullable: false, comment: "楂�"),
+                    MaterialDensity = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡瀵嗗害"),
+                    InspectionMethod = table.Column<int>(type: "int", nullable: false, comment: "妫�楠屾柟寮�"),
+                    UnitType = table.Column<int>(type: "int", nullable: false, comment: "鍗曚綅绫诲埆"),
+                    UnitNo = table.Column<int>(type: "int", nullable: false, comment: "鍗曚綅缂栧彿"),
+                    StockNumber = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "瀹炵墿搴撳瓨鏁�"),
+                    PlaceCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "搴撲綅缂栫爜"),
+                    ContainerId = table.Column<long>(type: "bigint", nullable: false, comment: "鎵樼洏Id"),
+                    ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鎵樼洏缂栫爜"),
+                    AreaId = table.Column<long>(type: "bigint", nullable: false, comment: "搴撳尯Id"),
+                    QuantityOfBill = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "璐﹂潰鏁伴噺"),
+                    Source = table.Column<int>(type: "int", nullable: false, comment: "鍏ュ簱鏉ユ簮"),
+                    ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "椤圭洰缂栧彿"),
+                    ContractCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍚堝悓缂栧彿"),
+                    TACode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "TA鍙�"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_materialstock", x => x.Id);
+                },
+                comment: "搴撳瓨琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_merchantinfo",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    MerchantNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢缂栧彿"),
+                    MerchantName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢鍚嶇О"),
+                    MerchantType = table.Column<int>(type: "int", nullable: false, comment: "瀹㈠晢鍒嗙被"),
+                    MerchantShort = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢绠�绉�"),
+                    MerchantGrade = table.Column<int>(type: "int", nullable: false, comment: "瀹㈠晢绛夌骇"),
+                    MerchantAttribute = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢灞炴��"),
+                    MerchantTmt = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢琛屼笟"),
+                    MerchantContact = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢鑱旂郴浜�"),
+                    MerchantPhone = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢鐢佃瘽"),
+                    MerchantFax = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢浼犵湡"),
+                    MerchantEmail = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢閭"),
+                    MerchantAddress = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢鍦板潃"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_merchantinfo", x => x.Id);
+                },
+                comment: "瀹㈠晢淇℃伅琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_order",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    OrderLargeCategory = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁澶х被"),
+                    OrderSubclass = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁灏忕被"),
+                    SOID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�"),
+                    NO = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "鍗曟嵁缂栧彿"),
+                    Billdate = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃ユ湡"),
+                    SourceBillNo = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "閫佽揣閫氱煡鍗曞彿"),
+                    Vendorcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "渚涘簲鍟嗙紪鐮�"),
+                    Vendorname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "渚涘簲鍟嗗悕绉�"),
+                    Companyname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍏徃鍚嶇О"),
+                    WarehouseKeepername = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撶鍛�"),
+                    TradeMode = table.Column<int>(type: "int", nullable: false, comment: "璐告槗鏂瑰紡"),
+                    WarehouseCentername = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撳偍涓績"),
+                    StoreRoomname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撻棿"),
+                    DeclarationCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍗曞彿"),
+                    Majorname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "涓撲笟"),
+                    Remarks = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true, comment: "澶囨敞"),
+                    OrderStatus = table.Column<int>(type: "int", nullable: false, comment: "鍗曟嵁鐘舵��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_order", x => x.Id);
+                },
+                comment: "鍗曟嵁琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_order_type",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Pid = table.Column<long>(type: "bigint", nullable: false, comment: "鐖禝d"),
+                    Pids = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鐖禝ds"),
+                    Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false, comment: "鍚嶇О"),
+                    Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+                    Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+                    LesWorkShopType = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炶溅闂�"),
+                    Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+                    Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_order_type", x => x.Id);
+                },
+                comment: "鍗曟嵁绫诲瀷缁存姢琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_pdapower",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Icon = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鍥炬爣"),
+                    Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "缂栫爜"),
+                    Name = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "鍚嶇О"),
+                    Clolor = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "棰滆壊"),
+                    WorkShopType = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炶溅闂�"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_pdapower", x => x.Id);
+                },
+                comment: "PDA鑿滃崟琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_receiptorder",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    OrderLargeCategory = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁澶х被"),
+                    OrderSubclass = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁灏忕被"),
+                    SOID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�"),
+                    NO = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "鍗曟嵁缂栧彿"),
+                    WMSNO = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "WMS鏀惰揣鍗曞彿"),
+                    Billdate = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃ユ湡"),
+                    SourceBillNo = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "閫佽揣閫氱煡鍗曞彿"),
+                    Vendorcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "渚涘簲鍟嗙紪鐮�"),
+                    Vendorname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "渚涘簲鍟嗗悕绉�"),
+                    Companyname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍏徃鍚嶇О"),
+                    WarehouseKeepername = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撶鍛�"),
+                    TradeMode = table.Column<int>(type: "int", nullable: false, comment: "璐告槗鏂瑰紡"),
+                    WarehouseCentername = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撳偍涓績"),
+                    StoreRoomname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撻棿"),
+                    DeclarationCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍗曞彿"),
+                    Majorname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "涓撲笟"),
+                    Remarks = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true, comment: "澶囨敞"),
+                    ReceivingStatus = table.Column<int>(type: "int", nullable: false, comment: "鏀惰揣鐘舵��"),
+                    InspectionStatus = table.Column<int>(type: "int", nullable: false, comment: "鎶ユ鐘舵��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_receiptorder", x => x.Id);
+                },
+                comment: "鏀惰揣鍗�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_sortorder",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    OrderNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鏉ユ簮鍗曞彿"),
+                    OrderDetailID = table.Column<long>(type: "bigint", nullable: false),
+                    Materialcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡缂栧彿"),
+                    Materialname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡鍚嶇О"),
+                    ContainerOrderNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒嗘嫞缁勭洏鍗曞彿"),
+                    ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "椤圭洰缂栧彿"),
+                    TACode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "TA鍙�"),
+                    PartCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍒嗘鍙�"),
+                    PlaceCode = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "搴撲綅缂栫爜"),
+                    ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹瑰櫒缂栧彿"),
+                    SortQuantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍒嗘嫞鏁�"),
+                    ActualQuantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "瀹為檯鍒嗘嫞鏁�"),
+                    Remarks = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true, comment: "澶囨敞"),
+                    SortStatus = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_sortorder", x => x.Id);
+                },
+                comment: "鍒嗘嫞琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_stockreturn_order",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    OrderLargeCategory = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁澶х被"),
+                    OrderSubclass = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁灏忕被"),
+                    MoveType = table.Column<int>(type: "int", nullable: false, comment: "浜嬪姟绫诲瀷"),
+                    SOID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�"),
+                    NO = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "鍗曟嵁缂栧彿"),
+                    Billdate = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "閫�鏂欑敵璇锋棩鏈�"),
+                    WBSElementcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "棰嗙敤椤圭洰鍙�"),
+                    BenefitingDepartcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "棰嗘枡閮ㄩ棬"),
+                    CostCenterID = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鏀剁泭閮ㄩ棬"),
+                    FI_Client_Analysis_H = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "瀹㈡埛"),
+                    PickerID = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "棰嗗彇浜�"),
+                    Companyname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍏徃"),
+                    ConstructionTeamID = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鏂藉伐闃�"),
+                    OrderStatus = table.Column<int>(type: "int", nullable: false, comment: "鍗曟嵁鐘舵��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_stockreturn_order", x => x.Id);
+                },
+                comment: "閫�鏂欏叆搴撳崟");
+
+            migrationBuilder.CreateTable(
+                name: "wms_takematerialorder",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    OrderLargeCategory = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁澶х被"),
+                    OrderSubclass = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁灏忕被"),
+                    MoveType = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "浜嬪姟绫诲瀷"),
+                    SOID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�"),
+                    NO = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "鍗曟嵁缂栧彿"),
+                    Billdate = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "棰嗘枡鍗曠敵璇锋棩鏈�"),
+                    WBSElementcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "棰嗙敤椤圭洰鍙�"),
+                    BenefitingDepartcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "棰嗘枡閮ㄩ棬"),
+                    CostCenterID = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍙楃泭閮ㄩ棬"),
+                    FI_Client_Analysis_H = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "瀹㈡埛"),
+                    IsInnerCompany = table.Column<long>(type: "bigint", nullable: false, comment: "鏄惁鍏徃闂翠氦鏄�"),
+                    PickerID = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "棰嗘枡浜�"),
+                    WarehouseCentername = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撳偍涓績"),
+                    Companyname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍏徃"),
+                    ConstructionTeamID = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鏂藉伐闃�"),
+                    OrderStatus = table.Column<int>(type: "int", nullable: false, comment: "鍗曟嵁鐘舵��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_takematerialorder", x => x.Id);
+                },
+                comment: "棰嗘枡鍗�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_task",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    TaskNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "浠诲姟鍙�"),
+                    TaskModel = table.Column<int>(type: "int", nullable: false, comment: "浠诲姟鏂瑰紡"),
+                    TaskType = table.Column<int>(type: "int", nullable: false, comment: "浠诲姟绫诲瀷"),
+                    TaskLevel = table.Column<int>(type: "int", nullable: false, comment: "浠诲姟绾у埆"),
+                    TaskStatus = table.Column<int>(type: "int", nullable: false, comment: "浠诲姟鐘舵��"),
+                    IsRead = table.Column<bool>(type: "bit", nullable: false, comment: "WCS鏄惁鍙互璇诲彇"),
+                    ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鎵樼洏缂栧彿"),
+                    SourcePlace = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "璧峰搴撲綅"),
+                    ToPlace = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐩爣搴撲綅"),
+                    Aisle = table.Column<int>(type: "int", nullable: false, comment: "宸烽亾"),
+                    EmptyContainer = table.Column<int>(type: "int", nullable: false, comment: "鏄惁绌烘墭"),
+                    AreaName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "搴撳尯鍚嶇О"),
+                    OrderDetailsId = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁鏄庣粏Id"),
+                    OrderNo = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "缁勭洏璁板綍鍗曟嵁鍙�"),
+                    SendTimes = table.Column<int>(type: "int", nullable: false, comment: "鍙戦�佹鏁�"),
+                    DodeviceId = table.Column<int>(type: "int", nullable: false, comment: "浠诲姟鎵ц鍫嗗灈鏈篒d"),
+                    DodevicenodeId = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "璁惧鎵ц鑺傜偣Id"),
+                    Dodevicetype = table.Column<int>(type: "int", maxLength: 50, nullable: false, comment: "璁惧绫诲瀷"),
+                    TaskDodeviceStatus = table.Column<int>(type: "int", nullable: false, comment: "浠诲姟璁惧鐘舵��"),
+                    Description = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍏ュ簱鏉ユ簮"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_task", x => x.Id);
+                },
+                comment: "浠诲姟绠$悊琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_warehouse_entrance",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false, comment: "鍚嶇О"),
+                    Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+                    Type = table.Column<int>(type: "int", nullable: false, comment: "绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�"),
+                    LesWorkShopType = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炶溅闂�"),
+                    AffiliatedRoadway = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炲贩閬�"),
+                    Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+                    Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_warehouse_entrance", x => x.Id);
+                },
+                comment: "搴撳彛琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_warehouse_manage",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false, comment: "鍚嶇О"),
+                    Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+                    Type = table.Column<int>(type: "int", nullable: false, comment: "绫诲瀷"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_warehouse_manage", x => x.Id);
+                },
+                comment: "搴撳彛琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_dict_data",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    TypeId = table.Column<long>(type: "bigint", nullable: false, comment: "瀛楀吀绫诲瀷Id"),
+                    Value = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍊�"),
+                    Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "缂栫爜"),
+                    Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+                    Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+                    Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_dict_data", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_sys_dict_data_sys_dict_type_TypeId",
+                        column: x => x.TypeId,
+                        principalTable: "sys_dict_type",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "瀛楀吀鍊艰〃");
+
+            migrationBuilder.CreateTable(
+                name: "sys_low_code_module_database",
+                columns: table => new
+                {
+                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false, comment: "Id涓婚敭"),
+                    SysLowCodeId = table.Column<long>(type: "bigint", nullable: false),
+                    Control_Key = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "缁勪欢Key"),
+                    Control_Label = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "缁勪欢鍚嶇О"),
+                    Control_Model = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "缁勪欢瀛楁"),
+                    Control_Type = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "缁勪欢瀛楁"),
+                    TableName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "琛ㄥ悕"),
+                    ClassName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "绫诲悕"),
+                    TableDesc = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "琛ㄦ弿杩�"),
+                    FieldName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "瀛楁鍚嶇О"),
+                    DbTypeName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "鏁版嵁绫诲瀷"),
+                    DtoTypeName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "浼犲叆鏁版嵁绫诲瀷"),
+                    DbParam = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "鏁版嵁绫诲瀷琛ュ厖鍙傛暟"),
+                    IsRequired = table.Column<bool>(type: "bit", nullable: true, comment: "鏄惁蹇呭~"),
+                    WhetherTable = table.Column<bool>(type: "bit", nullable: true, comment: "鍒楄〃鏄剧ず"),
+                    WhetherOrderBy = table.Column<bool>(type: "bit", nullable: true, comment: "鎺掑簭"),
+                    WhetherAddUpdate = table.Column<bool>(type: "bit", nullable: true, comment: "澧炴敼"),
+                    QueryWhether = table.Column<bool>(type: "bit", nullable: true, comment: "鏄惁鏄煡璇�"),
+                    QueryType = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鏌ヨ鏂瑰紡"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_low_code_module_database", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_sys_low_code_module_database_sys_low_code_module_SysLowCodeId",
+                        column: x => x.SysLowCodeId,
+                        principalTable: "sys_low_code_module",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "浣庝唬鐮佹ā鍧楃鐞�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_emp_ext_org_pos",
+                columns: table => new
+                {
+                    SysEmpId = table.Column<long>(type: "bigint", nullable: false, comment: "鍛樺伐Id"),
+                    SysOrgId = table.Column<long>(type: "bigint", nullable: false, comment: "鏈烘瀯Id"),
+                    SysPosId = table.Column<long>(type: "bigint", nullable: false, comment: "鑱屼綅Id")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_emp_ext_org_pos", x => new { x.SysEmpId, x.SysOrgId, x.SysPosId });
+                    table.ForeignKey(
+                        name: "FK_sys_emp_ext_org_pos_sys_emp_SysEmpId",
+                        column: x => x.SysEmpId,
+                        principalTable: "sys_emp",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_sys_emp_ext_org_pos_sys_org_SysOrgId",
+                        column: x => x.SysOrgId,
+                        principalTable: "sys_org",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_sys_emp_ext_org_pos_sys_pos_SysPosId",
+                        column: x => x.SysPosId,
+                        principalTable: "sys_pos",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "鍛樺伐闄勫睘鏈烘瀯鑱屼綅琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_emp_pos",
+                columns: table => new
+                {
+                    SysEmpId = table.Column<long>(type: "bigint", nullable: false, comment: "鍛樺伐Id"),
+                    SysPosId = table.Column<long>(type: "bigint", nullable: false, comment: "鑱屼綅Id")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_emp_pos", x => new { x.SysEmpId, x.SysPosId });
+                    table.ForeignKey(
+                        name: "FK_sys_emp_pos_sys_emp_SysEmpId",
+                        column: x => x.SysEmpId,
+                        principalTable: "sys_emp",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_sys_emp_pos_sys_pos_SysPosId",
+                        column: x => x.SysPosId,
+                        principalTable: "sys_pos",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "鍛樺伐鑱屼綅琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_role_data_scope",
+                columns: table => new
+                {
+                    SysRoleId = table.Column<long>(type: "bigint", nullable: false, comment: "瑙掕壊Id"),
+                    SysOrgId = table.Column<long>(type: "bigint", nullable: false, comment: "鏈烘瀯Id")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_role_data_scope", x => new { x.SysRoleId, x.SysOrgId });
+                    table.ForeignKey(
+                        name: "FK_sys_role_data_scope_sys_org_SysOrgId",
+                        column: x => x.SysOrgId,
+                        principalTable: "sys_org",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_sys_role_data_scope_sys_role_SysRoleId",
+                        column: x => x.SysRoleId,
+                        principalTable: "sys_role",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "瑙掕壊鏁版嵁鑼冨洿琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_role_menu",
+                columns: table => new
+                {
+                    SysRoleId = table.Column<long>(type: "bigint", nullable: false, comment: "瑙掕壊Id"),
+                    SysMenuId = table.Column<long>(type: "bigint", nullable: false, comment: "鑿滃崟Id")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_role_menu", x => new { x.SysRoleId, x.SysMenuId });
+                    table.ForeignKey(
+                        name: "FK_sys_role_menu_sys_menu_SysMenuId",
+                        column: x => x.SysMenuId,
+                        principalTable: "sys_menu",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_sys_role_menu_sys_role_SysRoleId",
+                        column: x => x.SysRoleId,
+                        principalTable: "sys_role",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "瑙掕壊鑿滃崟琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_user_data_scope",
+                columns: table => new
+                {
+                    SysUserId = table.Column<long>(type: "bigint", nullable: false, comment: "鐢ㄦ埛Id"),
+                    SysOrgId = table.Column<long>(type: "bigint", nullable: false, comment: "鏈烘瀯Id")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_user_data_scope", x => new { x.SysUserId, x.SysOrgId });
+                    table.ForeignKey(
+                        name: "FK_sys_user_data_scope_sys_org_SysOrgId",
+                        column: x => x.SysOrgId,
+                        principalTable: "sys_org",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_sys_user_data_scope_sys_user_SysUserId",
+                        column: x => x.SysUserId,
+                        principalTable: "sys_user",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "鐢ㄦ埛鏁版嵁鑼冨洿琛�");
+
+            migrationBuilder.CreateTable(
+                name: "sys_user_role",
+                columns: table => new
+                {
+                    SysUserId = table.Column<long>(type: "bigint", nullable: false, comment: "鐢ㄦ埛Id"),
+                    SysRoleId = table.Column<long>(type: "bigint", nullable: false, comment: "瑙掕壊Id")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_sys_user_role", x => new { x.SysUserId, x.SysRoleId });
+                    table.ForeignKey(
+                        name: "FK_sys_user_role_sys_role_SysRoleId",
+                        column: x => x.SysRoleId,
+                        principalTable: "sys_role",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_sys_user_role_sys_user_SysUserId",
+                        column: x => x.SysUserId,
+                        principalTable: "sys_user",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "鐢ㄦ埛瑙掕壊琛�");
+
+            migrationBuilder.CreateTable(
+                name: "les_entrance",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    AreaId = table.Column<long>(type: "bigint", nullable: false, comment: "搴撳尯Id"),
+                    Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撳彛鍚嶇О"),
+                    Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撳彛缂栫爜"),
+                    EntranceType = table.Column<int>(type: "int", nullable: false, comment: "搴撳彛绫诲瀷"),
+                    CommenStatus = table.Column<int>(type: "int", nullable: false, comment: "搴撳彛鐘舵��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_les_entrance", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_les_entrance_wms_area_AreaId",
+                        column: x => x.AreaId,
+                        principalTable: "wms_area",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "搴撳彛琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_place",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    PlaceCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "搴撲綅缂栫爜"),
+                    AgvCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅瀵瑰簲AGV缂栫爜"),
+                    PlaceStatus = table.Column<int>(type: "int", nullable: false, comment: "搴撲綅鐘舵��"),
+                    AreaId = table.Column<long>(type: "bigint", nullable: false, comment: "鎵�鍦ㄥ簱鍖�"),
+                    RowNo = table.Column<int>(type: "int", nullable: false, comment: "鎺�"),
+                    ColumnNo = table.Column<int>(type: "int", nullable: false, comment: "鍒�"),
+                    LayerNo = table.Column<int>(type: "int", nullable: false, comment: "灞�"),
+                    DeepcellNo = table.Column<int>(type: "int", nullable: false, comment: "杩涙繁鍙�"),
+                    Aisle = table.Column<int>(type: "int", nullable: false, comment: "宸烽亾"),
+                    Line = table.Column<int>(type: "int", nullable: false, comment: "绾垮彿"),
+                    Islock = table.Column<int>(type: "int", nullable: false, comment: "鏄惁閿佸畾"),
+                    EmptyContainer = table.Column<int>(type: "int", nullable: false, comment: "鏄惁绌烘墭"),
+                    PositionnoForSrm = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆"),
+                    Xzb = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅X鍧愭爣"),
+                    Yzb = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅Y鍧愭爣"),
+                    Zzb = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅Z鍧愭爣"),
+                    Length = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "搴撲綅闀垮害"),
+                    Width = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "搴撲綅瀹藉害"),
+                    Height = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "搴撲綅楂樺害"),
+                    MaxWeight = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏈�澶ф壙閲�"),
+                    HeightLevel = table.Column<int>(type: "int", nullable: false, comment: "搴撲綅楂樺害灞炴��"),
+                    Priority = table.Column<int>(type: "int", nullable: false, comment: "浼樺厛绾�"),
+                    LogicalName = table.Column<int>(type: "int", nullable: false, comment: "閫昏緫鍖哄煙"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_place", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_wms_place_wms_area_AreaId",
+                        column: x => x.AreaId,
+                        principalTable: "wms_area",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "搴撲綅琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_dumporder_details",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    OrderId = table.Column<long>(type: "bigint", maxLength: 50, nullable: false, comment: "鍗曟嵁Id"),
+                    OID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�"),
+                    Materialcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡缂栧彿"),
+                    Materialname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡鍚嶇О"),
+                    Unit = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍩烘湰鍗曚綅"),
+                    Qty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏁伴噺"),
+                    Length = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "闀垮害"),
+                    Batchno_SCM = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "SCM鎵规鍙�"),
+                    Batchno_WMS = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "WMS鎵规鍙�"),
+                    ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "搴撳瓨椤圭洰缂栫爜"),
+                    Projectcode_To = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鏂板簱瀛橀」鐩紪鐮�"),
+                    OrderStatus = table.Column<int>(type: "int", nullable: false, comment: "鍗曟嵁鐘舵��"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_dumporder_details", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_wms_dumporder_details_wms_dumporder_OrderId",
+                        column: x => x.OrderId,
+                        principalTable: "wms_dumporder",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "杞偍鍗曟槑缁�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_goodsreturnorder_details",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    OrderId = table.Column<long>(type: "bigint", maxLength: 50, nullable: false, comment: "鍗曟嵁Id"),
+                    OID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�"),
+                    Materialcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡缂栧彿"),
+                    Materialname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡鍚嶇О"),
+                    Unit = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍩烘湰鍗曚綅"),
+                    Qty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏁伴噺"),
+                    SingleLength = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍗曟牴闀垮害"),
+                    TheoreticalWeight = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鐞嗚閲嶉噺"),
+                    Batchno_WMS = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鎵规鍙�"),
+                    Price = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "涓嶅惈绋庡崟浠�"),
+                    SumPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎴愭湰閲戦"),
+                    ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "椤圭洰缂栧彿"),
+                    ContractCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍚堝悓缂栧彿"),
+                    TACode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "TA鍙�"),
+                    StoreRoomname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撻棿"),
+                    DeclarationCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍗曞彿"),
+                    TradeName = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍝佸悕"),
+                    ItemNo = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鎶ュ叧椤瑰彿"),
+                    CustomsUnitName = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鎶ュ叧鍗曚綅"),
+                    CustomsNum = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶ュ叧鏁伴噺"),
+                    CustomsPrices = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶ュ叧閲戦"),
+                    ReceivingStatus = table.Column<int>(type: "int", nullable: false, comment: "閫�璐х姸鎬�"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_goodsreturnorder_details", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_wms_goodsreturnorder_details_wms_goodsreturnorder_OrderId",
+                        column: x => x.OrderId,
+                        principalTable: "wms_goodsreturnorder",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "閫�璐у崟鎹槑缁嗚〃");
+
+            migrationBuilder.CreateTable(
+                name: "wms_history_materialcontainer",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    ContainerId = table.Column<long>(type: "bigint", nullable: false, comment: "鎵樼洏Id"),
+                    ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鎵樼洏缂栫爜"),
+                    MaterialName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡鍚嶇О"),
+                    MaterialNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡缂栧彿"),
+                    MaterialBatch = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡鎵规"),
+                    MaterialSpec = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡瑙勬牸"),
+                    MaterialId = table.Column<long>(type: "bigint", nullable: false, comment: "鐗╂枡Id"),
+                    BindQuantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "缁勭洏鏁伴噺"),
+                    BindStatus = table.Column<int>(type: "int", nullable: false, comment: "缁勭洏鐘舵��"),
+                    SampleQty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶芥鏁伴噺"),
+                    OrderNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鍗曞彿"),
+                    MaterialDensity = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡瀵嗗害"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_history_materialcontainer", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_wms_history_materialcontainer_wms_material_MaterialId",
+                        column: x => x.MaterialId,
+                        principalTable: "wms_material",
+                        principalColumn: "Id");
+                },
+                comment: "鐗╂枡鎵樼洏鍘嗗彶琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_materialcontainer",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    ContainerId = table.Column<long>(type: "bigint", nullable: false, comment: "鎵樼洏Id"),
+                    ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鎵樼洏缂栫爜"),
+                    MaterialName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡鍚嶇О"),
+                    MaterialNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡缂栧彿"),
+                    MaterialBatch = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡鎵规"),
+                    MaterialSpec = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡瑙勬牸"),
+                    MaterialId = table.Column<long>(type: "bigint", nullable: false, comment: "鐗╂枡Id"),
+                    BindQuantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "缁勭洏鏁伴噺"),
+                    BindStatus = table.Column<int>(type: "int", nullable: false, comment: "缁勭洏鐘舵��"),
+                    SampleQty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶芥鏁伴噺"),
+                    OrderNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鍗曞彿"),
+                    OrderDetailsId = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁鏄庣粏Id"),
+                    MaterialDensity = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡瀵嗗害"),
+                    WmsContainerId = table.Column<long>(type: "bigint", nullable: true),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_materialcontainer", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_wms_materialcontainer_wms_container_WmsContainerId",
+                        column: x => x.WmsContainerId,
+                        principalTable: "wms_container",
+                        principalColumn: "Id");
+                    table.ForeignKey(
+                        name: "FK_wms_materialcontainer_wms_material_MaterialId",
+                        column: x => x.MaterialId,
+                        principalTable: "wms_material",
+                        principalColumn: "Id");
+                },
+                comment: "鐗╂枡鎵樼洏鍏崇郴琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_order_details",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    OrderId = table.Column<long>(type: "bigint", maxLength: 50, nullable: false, comment: "鍗曟嵁Id"),
+                    OID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�"),
+                    Materialcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡缂栧彿"),
+                    Materialname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡鍚嶇О"),
+                    Unit = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍩烘湰鍗曚綅"),
+                    Qty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏁伴噺"),
+                    InventoryQty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍏ュ簱鏁伴噺"),
+                    SingleLength = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍗曟牴闀垮害"),
+                    TheoreticalWeight = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鐞嗚閲嶉噺"),
+                    Price = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "涓嶅惈绋庡崟浠�"),
+                    SumPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎴愭湰閲戦"),
+                    ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "椤圭洰缂栧彿"),
+                    ContractCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍚堝悓缂栧彿"),
+                    TACode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "TA鍙�"),
+                    TradeName = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍝佸悕"),
+                    ItemNo = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧椤瑰彿"),
+                    CustomsUnitName = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍗曚綅"),
+                    CustomsNum = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶ュ叧鏁伴噺"),
+                    CustomsPrices = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶ュ叧閲戦"),
+                    SpecialNeeds = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗规畩瑕佹眰"),
+                    OrderStatus = table.Column<int>(type: "int", nullable: false, comment: "鍗曟嵁鐘舵��"),
+                    InspectionResults = table.Column<int>(type: "int", nullable: false, comment: "妫�楠岀粨鏋�"),
+                    ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鎵樼洏缂栫爜"),
+                    PlaceCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅缂栫爜"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_order_details", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_wms_order_details_wms_order_OrderId",
+                        column: x => x.OrderId,
+                        principalTable: "wms_order",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "鍗曟嵁鏄庣粏琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_role_pdamenu",
+                columns: table => new
+                {
+                    SysRoleId = table.Column<long>(type: "bigint", nullable: false, comment: "瑙掕壊Id"),
+                    PdaMenuId = table.Column<long>(type: "bigint", nullable: false, comment: "鑿滃崟Id")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_role_pdamenu", x => new { x.SysRoleId, x.PdaMenuId });
+                    table.ForeignKey(
+                        name: "FK_wms_role_pdamenu_sys_role_SysRoleId",
+                        column: x => x.SysRoleId,
+                        principalTable: "sys_role",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                    table.ForeignKey(
+                        name: "FK_wms_role_pdamenu_wms_pdapower_PdaMenuId",
+                        column: x => x.PdaMenuId,
+                        principalTable: "wms_pdapower",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "瑙掕壊鑿滃崟琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_receiptorder_details",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    OrderId = table.Column<long>(type: "bigint", maxLength: 50, nullable: false, comment: "鍗曟嵁Id"),
+                    OID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�"),
+                    Materialcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡缂栧彿"),
+                    Materialname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡鍚嶇О"),
+                    Unit = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍩烘湰鍗曚綅"),
+                    Qty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏁伴噺"),
+                    SingleLength = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍗曟牴闀垮害"),
+                    TheoreticalWeight = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鐞嗚閲嶉噺"),
+                    Price = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "涓嶅惈绋庡崟浠�"),
+                    SumPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎴愭湰閲戦"),
+                    ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "椤圭洰缂栧彿"),
+                    ContractCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍚堝悓缂栧彿"),
+                    TACode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "TA鍙�"),
+                    TradeName = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍝佸悕"),
+                    ItemNo = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧椤瑰彿"),
+                    CustomsUnitName = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍗曚綅"),
+                    CustomsNum = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶ュ叧鏁伴噺"),
+                    CustomsPrices = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶ュ叧閲戦"),
+                    SpecialNeeds = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗规畩瑕佹眰"),
+                    ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鎵樼洏缂栫爜"),
+                    PlaceCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅缂栫爜"),
+                    DeliveryQty = table.Column<decimal>(type: "decimal(18,2)", maxLength: 50, nullable: false, comment: "閫佽揣鏁伴噺"),
+                    ReceivedQty = table.Column<decimal>(type: "decimal(18,2)", maxLength: 50, nullable: false, comment: "鏀惰揣鏁伴噺"),
+                    ReceivingStatus = table.Column<int>(type: "int", nullable: false, comment: "鏀惰揣鐘舵��"),
+                    InspectionStatus = table.Column<int>(type: "int", nullable: false, comment: "鎶ユ鐘舵��"),
+                    InspectionResultsEnum = table.Column<int>(type: "int", nullable: false, comment: "鎶ユ缁撴灉"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_receiptorder_details", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_wms_receiptorder_details_wms_receiptorder_OrderId",
+                        column: x => x.OrderId,
+                        principalTable: "wms_receiptorder",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "鏀惰揣鍗曟嵁鏄庣粏琛�");
+
+            migrationBuilder.CreateTable(
+                name: "wms_stockreturn_order_details",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    OrderId = table.Column<long>(type: "bigint", maxLength: 50, nullable: false, comment: "鍗曟嵁Id"),
+                    OID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�"),
+                    Materialcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡缂栧彿"),
+                    Materialname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡鍚嶇О"),
+                    Unit = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍩烘湰鍗曚綅"),
+                    Qty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏁伴噺"),
+                    Length = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍗曟牴闀垮害"),
+                    Number = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "浠舵暟"),
+                    Batchno_SCM = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "SCM鎵规鍙�"),
+                    Batchno_WMS = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "WMS鎵规鍙�"),
+                    ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "椤圭洰缂栧彿"),
+                    TACode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "TA鍙�"),
+                    PartCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍒嗘鍙�"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_stockreturn_order_details", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_wms_stockreturn_order_details_wms_stockreturn_order_OrderId",
+                        column: x => x.OrderId,
+                        principalTable: "wms_stockreturn_order",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "閫�鏂欏叆搴撳崟璇︽儏");
+
+            migrationBuilder.CreateTable(
+                name: "wms_takematerial_orderdetail",
+                columns: table => new
+                {
+                    Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+                    OrderId = table.Column<long>(type: "bigint", maxLength: 50, nullable: false, comment: "鍗曟嵁Id"),
+                    OID = table.Column<long>(type: "bigint", nullable: false, comment: "SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑"),
+                    Materialcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡缂栧彿"),
+                    Materialname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡鍚嶇О"),
+                    Unit = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍩烘湰鍗曚綅"),
+                    Qty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏁伴噺"),
+                    DistributeQty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "涓嬪彂鏁伴噺"),
+                    SingleLength = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍗曟牴闀垮害"),
+                    Number = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "浠舵暟"),
+                    Batchno_SCM = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "SCM鎵规鍙�"),
+                    Batchno_WMS = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "WMS鎵规鍙�"),
+                    ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "椤圭洰缂栧彿"),
+                    TACode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "TA鍙�"),
+                    PartCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍒嗘鍙�"),
+                    OrderStatus = table.Column<int>(type: "int", nullable: false, comment: "鍗曟嵁鐘舵��"),
+                    ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鎵樼洏缂栫爜"),
+                    PlaceCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅缂栫爜"),
+                    CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+                    UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+                    CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+                    CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+                    UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+                    UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+                    IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_wms_takematerial_orderdetail", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_wms_takematerial_orderdetail_wms_takematerialorder_OrderId",
+                        column: x => x.OrderId,
+                        principalTable: "wms_takematerialorder",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "鍗曟嵁鏄庣粏琛�");
+
+            migrationBuilder.InsertData(
+                table: "sys_app",
+                columns: new[] { "Id", "Active", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Name", "Sort", "Status", "UpdatedTime", "UpdatedUserId", "UpdatedUserName" },
+                values: new object[,]
+                {
+                    { 142307070898245L, "Y", "system", null, null, null, false, "寮�鍙戠鐞�", 100, 0, null, null, null },
+                    { 142307070902341L, "N", "manage", null, null, null, false, "绯荤粺绠$悊", 300, 0, null, null, null },
+                    { 142307070922869L, "N", "busiapp", null, null, null, false, "涓氬姟搴旂敤", 400, 0, null, null, null },
+                    { 355686432948293L, "N", "warejob", null, null, null, false, "浠撳簱浣滀笟", 500, 0, null, null, null },
+                    { 355686518018117L, "N", "warecount", null, null, null, false, "缁熻鏌ヨ", 600, 0, null, null, null },
+                    { 383337192390725L, "N", "xbjl", null, null, null, false, "绾胯竟鍙枡", 550, 0, null, null, null }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_config",
+                columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "GroupCode", "IsDeleted", "Name", "Remark", "Status", "SysFlag", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Value" },
+                values: new object[,]
+                {
+                    { 142307070902342L, "DILON_JWT_SECRET", null, null, null, "DEFAULT", false, "jwt瀵嗛挜", "锛堥噸瑕侊級jwt瀵嗛挜锛岄粯璁や负绌猴紝鑷璁剧疆", 0, "Y", null, null, null, "weiben" },
+                    { 142307070902343L, "DILON_DEFAULT_PASSWORD", null, null, null, "DEFAULT", false, "榛樿瀵嗙爜", "榛樿瀵嗙爜", 0, "Y", null, null, null, "123456" },
+                    { 142307070902344L, "DILON_TOKEN_EXPIRE", null, null, null, "DEFAULT", false, "token杩囨湡鏃堕棿", "token杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級", 0, "Y", null, null, null, "86400" },
+                    { 142307070902345L, "DILON_SESSION_EXPIRE", null, null, null, "DEFAULT", false, "session浼氳瘽杩囨湡鏃堕棿", "session浼氳瘽杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級", 0, "Y", null, null, null, "7200" },
+                    { 142307070902361L, "DILON_FILE_UPLOAD_PATH_FOR_WINDOWS", null, null, null, "FILE_PATH", false, "Win鏈湴涓婁紶鏂囦欢璺緞", "Win鏈湴涓婁紶鏂囦欢璺緞", 0, "Y", null, null, null, "D:/tmp" },
+                    { 142307070902363L, "DILON_UN_XSS_FILTER_URL", null, null, null, "DEFAULT", false, "鏀惧紑XSS杩囨护鐨勬帴鍙�", "澶氫釜url鍙互鐢ㄨ嫳鏂囬�楀彿闅斿紑", 0, "Y", null, null, null, "/demo/xssfilter,/demo/unxss" },
+                    { 142307070902364L, "DILON_ENABLE_SINGLE_LOGIN", null, null, null, "DEFAULT", false, "鍗曠敤鎴风櫥闄嗙殑寮�鍏�", "true-鎵撳紑锛宖alse-鍏抽棴锛屽鏋滀竴涓汉鐧诲綍涓ゆ锛屽氨浼氬皢涓婁竴娆$櫥闄嗘尋涓嬪幓", 0, "Y", null, null, null, "false" },
+                    { 142307070902365L, "DILON_CAPTCHA_OPEN", null, null, null, "DEFAULT", false, "鐧诲綍楠岃瘉鐮佺殑寮�鍏�", "true-鎵撳紑锛宖alse-鍏抽棴", 0, "Y", null, null, null, "true" }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_dict_type",
+                columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "EnumClassName", "IsDeleted", "Name", "Remark", "Sort", "Status", "UpdatedTime", "UpdatedUserId", "UpdatedUserName" },
+                values: new object[,]
+                {
+                    { 142307070906483L, "common_status", null, null, null, null, false, "閫氱敤鐘舵��", "閫氱敤鐘舵��", 100, 0, null, null, null },
+                    { 142307070906484L, "sex", null, null, null, null, false, "鎬у埆", "鎬у埆瀛楀吀", 100, 0, null, null, null },
+                    { 142307070906485L, "consts_type", null, null, null, null, false, "甯搁噺鐨勫垎绫�", "甯搁噺鐨勫垎绫伙紝鐢ㄤ簬鍖哄埆涓�缁勯厤缃�", 100, 0, null, null, null },
+                    { 142307070906486L, "yes_or_no", null, null, null, null, false, "鏄惁", "鏄惁", 100, 0, null, null, null },
+                    { 142307070906487L, "vis_type", null, null, null, null, false, "璁块棶绫诲瀷", "璁块棶绫诲瀷", 100, 0, null, null, null },
+                    { 142307070906488L, "menu_type", null, null, null, null, false, "鑿滃崟绫诲瀷", "鑿滃崟绫诲瀷", 100, 0, null, null, null },
+                    { 142307070906489L, "send_type", null, null, null, null, false, "鍙戦�佺被鍨�", "鍙戦�佺被鍨�", 100, 0, null, null, null },
+                    { 142307070906490L, "open_type", null, null, null, null, false, "鎵撳紑鏂瑰紡", "鎵撳紑鏂瑰紡", 100, 0, null, null, null },
+                    { 142307070906491L, "menu_weight", null, null, null, null, false, "鑿滃崟鏉冮噸", "鑿滃崟鏉冮噸", 100, 0, null, null, null },
+                    { 142307070906492L, "data_scope_type", null, null, null, null, false, "鏁版嵁鑼冨洿绫诲瀷", "鏁版嵁鑼冨洿绫诲瀷", 100, 0, null, null, null },
+                    { 142307070906494L, "op_type", null, null, null, null, false, "鎿嶄綔绫诲瀷", "鎿嶄綔绫诲瀷", 100, 0, null, null, null },
+                    { 142307070906495L, "file_storage_location", null, null, null, null, false, "鏂囦欢瀛樺偍浣嶇疆", "鏂囦欢瀛樺偍浣嶇疆", 100, 0, null, null, null },
+                    { 142307070910533L, "run_status", null, null, null, null, false, "杩愯鐘舵��", "瀹氭椂浠诲姟杩愯鐘舵��", 100, 0, null, null, null },
+                    { 142307070910534L, "notice_type", null, null, null, null, false, "閫氱煡鍏憡绫诲瀷", "閫氱煡鍏憡绫诲瀷", 100, 0, null, null, null },
+                    { 142307070910535L, "notice_status", null, null, null, null, false, "閫氱煡鍏憡鐘舵��", "閫氱煡鍏憡鐘舵��", 100, 0, null, null, null },
+                    { 142307070910536L, "yes_true_false", null, null, null, null, false, "鏄惁boolean", "鏄惁boolean", 100, 0, null, null, null },
+                    { 142307070910537L, "code_gen_create_type", null, null, null, null, false, "浠g爜鐢熸垚鏂瑰紡", "浠g爜鐢熸垚鏂瑰紡", 100, 0, null, null, null },
+                    { 142307070910538L, "request_type", null, null, null, null, false, "璇锋眰鏂瑰紡", "璇锋眰鏂瑰紡", 100, 0, null, null, null },
+                    { 142307070922827L, "code_gen_effect_type", null, null, null, null, false, "浠g爜鐢熸垚浣滅敤绫诲瀷", "浠g爜鐢熸垚浣滅敤绫诲瀷", 100, 0, null, null, null },
+                    { 142307070922828L, "code_gen_query_type", null, null, null, null, false, "浠g爜鐢熸垚鏌ヨ绫诲瀷", "浠g爜鐢熸垚鏌ヨ绫诲瀷", 100, 0, null, null, null },
+                    { 142307070922829L, "code_gen_net_type", null, null, null, null, false, "浠g爜鐢熸垚.NET绫诲瀷", "浠g爜鐢熸垚.NET绫诲瀷", 100, 0, null, null, null },
+                    { 142307070926941L, "role_type", null, null, null, null, false, "瑙掕壊绫诲瀷", "瑙掕壊绫诲瀷", 100, 0, null, null, null },
+                    { 142307070926942L, "org_type", null, null, null, null, false, "鏈烘瀯绫诲瀷", "鏈烘瀯绫诲瀷", 100, 0, null, null, null },
+                    { 285605149831237L, "form_type", null, null, null, null, false, "琛ㄥ崟绫诲瀷", "琛ㄥ崟绫诲瀷", 100, 0, null, null, null },
+                    { 285641358889029L, "workflow_group", null, null, null, null, false, "娴佺▼鍒嗙被", "娴佺▼鍒嗙被", 100, 0, null, null, null },
+                    { 355694205325381L, "container_type", null, null, null, null, false, "鎵樼洏绫诲瀷", "", 100, 0, null, null, null },
+                    { 355697881423941L, "container_status", null, null, null, null, false, "鎵樼洏鐘舵��", "", 100, 0, null, null, null },
+                    { 355697881423942L, "container_category", null, null, null, null, false, "鎵樼洏鍒嗙被", "", 100, 0, null, null, null }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_dict_type",
+                columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "EnumClassName", "IsDeleted", "Name", "Remark", "Sort", "Status", "UpdatedTime", "UpdatedUserId", "UpdatedUserName" },
+                values: new object[,]
+                {
+                    { 355698224758853L, "area_type", null, null, null, null, false, "搴撳尯绫诲瀷", "", 100, 0, null, null, null },
+                    { 355698441912389L, "place_status", null, null, null, null, false, "搴撲綅鐘舵��", "", 100, 0, null, null, null },
+                    { 355698661130309L, "height_level", null, null, null, null, false, "搴撲綅楂樺害", "", 100, 0, null, null, null },
+                    { 355698855280709L, "material_inspection", null, null, null, null, false, "鐗╂枡妫�楠�", "", 100, 0, null, null, null },
+                    { 355699003580485L, "material_type", null, null, null, null, false, "鐗╂枡绫诲埆", "", 100, 0, null, null, null },
+                    { 355699189051461L, "unit_type", null, null, null, null, false, "鍗曚綅绫诲埆", "", 100, 0, null, null, null },
+                    { 355699314061381L, "unitno_type", null, null, null, null, false, "鍗曚綅缂栧彿", "", 100, 0, null, null, null },
+                    { 355699447029829L, "task_model", null, null, null, null, false, "浠诲姟鏂瑰紡", "", 100, 0, null, null, null },
+                    { 355699576467525L, "task_type", null, null, null, null, false, "浠诲姟绫诲瀷", "", 100, 0, null, null, null },
+                    { 355699731099717L, "task_status", null, null, null, null, false, "浠诲姟鐘舵��", "", 100, 0, null, null, null },
+                    { 355699731099718L, "taskdodevice_statusenum", null, null, null, null, false, "浠诲姟璁惧鐘舵��", "", 100, 0, null, null, null },
+                    { 383290718294085L, "les_workshop_type", null, null, null, null, false, "鎵�灞炶溅闂�", "", 100, 0, null, null, null },
+                    { 383317542490181L, "les_takematerials_status", null, null, null, null, false, "鍙枡鍗曠姸鎬�", "", 100, 0, null, null, null },
+                    { 384394636988485L, "dodevice_type", null, null, null, null, false, "璁惧绫诲瀷", "", 100, 0, null, null, null },
+                    { 385412129075269L, "lesworkshop_section", null, null, null, null, false, "宸ユ", "", 100, 0, null, null, null },
+                    { 386522984120389L, "les_entrance_type", null, null, null, null, false, "搴撳彛绫诲瀷", "", 100, 0, null, null, null },
+                    { 386522984120390L, "blankingproductionLine_enum", null, null, null, null, false, "涓嬫枡浜х嚎", "", 100, 0, null, null, null },
+                    { 386522984120391L, "orderdetails_statusenum", null, null, null, null, false, "鍗曟嵁鏄庣粏琛ㄧ姸鎬�", "", 100, 0, null, null, null },
+                    { 386522984120392L, "orderlargecategory_Enum", null, null, null, null, false, "鍗曟嵁澶х被", "", 100, 0, null, null, null },
+                    { 386522984120393L, "order_statusenum", null, null, null, null, false, "鍗曟嵁涓昏〃鐘舵��", "", 100, 0, null, null, null },
+                    { 386522984120394L, "ordersubclass_enum", null, null, null, null, false, "鍗曟嵁灏忕被", "", 100, 0, null, null, null },
+                    { 386522984120395L, "issue_state", null, null, null, null, false, "绛炬牳鐘舵��", "", 100, 0, null, null, null }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_emp",
+                columns: new[] { "Id", "JobNum", "OrgId", "OrgName" },
+                values: new object[,]
+                {
+                    { 142307070910551L, "D1001", 142307070910539L, "绉熸埛3鍏徃" },
+                    { 142307070910552L, "D1002", 142307070910539L, "绉熸埛3鍏徃" },
+                    { 142307070910553L, "D1003", 142307070910539L, "绉熸埛3鍏徃" },
+                    { 142307070910554L, "D1001", 142307070910547L, "绉熸埛1鍏徃" },
+                    { 142307070910555L, "D1002", 142307070910547L, "绉熸埛1鍏徃" },
+                    { 142307070910556L, "D1003", 142307070910547L, "绉熸埛1鍏徃" },
+                    { 142307070910557L, "D1001", 142307070910548L, "绉熸埛2鍏徃" },
+                    { 142307070910558L, "D1002", 142307070910548L, "绉熸埛2鍏徃" },
+                    { 142307070910559L, "D1003", 142307070910548L, "绉熸埛2鍏徃" },
+                    { 358533464608837L, "", 142307070910539L, "浼熸湰鑲′唤鏈夐檺鍏徃" },
+                    { 358536045723717L, "", 142307070910542L, "鐮斿彂閮�" }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_menu",
+                columns: new[] { "Id", "Application", "Code", "Component", "CreatedTime", "CreatedUserId", "CreatedUserName", "Icon", "IsDeleted", "Link", "Name", "OpenType", "Permission", "Pid", "Pids", "Redirect", "Remark", "Router", "Sort", "Status", "Type", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Visible", "Weight" },
+                values: new object[,]
+                {
+                    { 142307000914633L, "manage", "sys_mgr", "PageView", null, null, null, "team", false, null, "缁勭粐鏋舵瀯", 0, null, 0L, "[0],", null, null, "/sys", 100, 0, 0, null, null, null, "Y", 1 },
+                    { 142307070910563L, "manage", "auth_manager", "PageView", null, null, null, "safety-certificate", false, null, "鏉冮檺绠$悊", 0, null, 0L, "[0],", null, null, "/auth", 100, 0, 0, null, null, null, "Y", 1 },
+                    { 142307070910564L, "manage", "sys_user_mgr", "system/user/index", null, null, null, null, false, null, "鐢ㄦ埛绠$悊", 1, null, 142307070910563L, "[0],[142307070910563],", null, null, "/mgr_user", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070910565L, "manage", "sys_user_mgr_page", null, null, null, null, null, false, null, "鐢ㄦ埛鏌ヨ", 0, "sysUser:page", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910566L, "manage", "sys_user_mgr_edit", null, null, null, null, null, false, null, "鐢ㄦ埛缂栬緫", 0, "sysUser:edit", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910567L, "manage", "sys_user_mgr_add", null, null, null, null, null, false, null, "鐢ㄦ埛澧炲姞", 0, "sysUser:add", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910568L, "manage", "sys_user_mgr_delete", null, null, null, null, null, false, null, "鐢ㄦ埛鍒犻櫎", 0, "sysUser:delete", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910569L, "manage", "sys_user_mgr_detail", null, null, null, null, null, false, null, "鐢ㄦ埛璇︽儏", 0, "sysUser:detail", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910570L, "manage", "sys_user_mgr_export", null, null, null, null, null, false, null, "鐢ㄦ埛瀵煎嚭", 0, "sysUser:export", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_menu",
+                columns: new[] { "Id", "Application", "Code", "Component", "CreatedTime", "CreatedUserId", "CreatedUserName", "Icon", "IsDeleted", "Link", "Name", "OpenType", "Permission", "Pid", "Pids", "Redirect", "Remark", "Router", "Sort", "Status", "Type", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Visible", "Weight" },
+                values: new object[,]
+                {
+                    { 142307070910571L, "manage", "sys_user_mgr_selector", null, null, null, null, null, false, null, "鐢ㄦ埛閫夋嫨鍣�", 0, "sysUser:selector", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910572L, "manage", "sys_user_mgr_grant_role", null, null, null, null, null, false, null, "鐢ㄦ埛鎺堟潈瑙掕壊", 0, "sysUser:grantRole", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910573L, "manage", "sys_user_mgr_own_role", null, null, null, null, null, false, null, "鐢ㄦ埛鎷ユ湁瑙掕壊", 0, "sysUser:ownRole", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910574L, "manage", "sys_user_mgr_grant_data", null, null, null, null, null, false, null, "鐢ㄦ埛鎺堟潈鏁版嵁", 0, "sysUser:grantData", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910575L, "manage", "sys_user_mgr_own_data", null, null, null, null, null, false, null, "鐢ㄦ埛鎷ユ湁鏁版嵁", 0, "sysUser:ownData", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910576L, "manage", "sys_user_mgr_update_info", null, null, null, null, null, false, null, "鐢ㄦ埛鏇存柊淇℃伅", 0, "sysUser:updateInfo", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910577L, "manage", "sys_user_mgr_update_pwd", null, null, null, null, null, false, null, "鐢ㄦ埛淇敼瀵嗙爜", 0, "sysUser:updatePwd", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910578L, "manage", "sys_user_mgr_change_status", null, null, null, null, null, false, null, "鐢ㄦ埛淇敼鐘舵��", 0, "sysUser:changeStatus", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910579L, "manage", "sys_user_mgr_update_avatar", null, null, null, null, null, false, null, "鐢ㄦ埛淇敼澶村儚", 0, "sysUser:updateAvatar", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910580L, "manage", "sys_user_mgr_reset_pwd", null, null, null, null, null, false, null, "鐢ㄦ埛閲嶇疆瀵嗙爜", 0, "sysUser:resetPwd", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910581L, "manage", "sys_org_mgr", "system/org/index", null, null, null, null, false, null, "鏈烘瀯绠$悊", 1, null, 142307000914633L, "[0],[142307000914633],", null, null, "/org", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070910582L, "manage", "sys_org_mgr_page", null, null, null, null, null, false, null, "鏈烘瀯鏌ヨ", 0, "sysOrg:page", 142307070910581L, "[0],[142307000914633],[142307070910581],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910583L, "manage", "sys_org_mgr_list", null, null, null, null, null, false, null, "鏈烘瀯鍒楄〃", 0, "sysOrg:list", 142307070910581L, "[0],[142307000914633],[142307070910581],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910584L, "manage", "sys_org_mgr_add", null, null, null, null, null, false, null, "鏈烘瀯澧炲姞", 0, "sysOrg:add", 142307070910581L, "[0],[142307000914633],[142307070910581],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910585L, "manage", "sys_org_mgr_edit", null, null, null, null, null, false, null, "鏈烘瀯缂栬緫", 0, "sysOrg:edit", 142307070910581L, "[0],[142307000914633],[142307070910581],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910586L, "manage", "sys_org_mgr_delete", null, null, null, null, null, false, null, "鏈烘瀯鍒犻櫎", 0, "sysOrg:delete", 142307070910581L, "[0],[142307000914633],[142307070910581],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910587L, "manage", "sys_org_mgr_detail", null, null, null, null, null, false, null, "鏈烘瀯璇︽儏", 0, "sysOrg:detail", 142307070910581L, "[0],[142307000914633],[142307070910581],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910588L, "manage", "sys_org_mgr_tree", null, null, null, null, null, false, null, "鏈烘瀯鏍�", 0, "sysOrg:tree", 142307070910581L, "[0],[142307000914633],[142307070910581],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910589L, "manage", "sys_pos_mgr", "system/pos/index", null, null, null, null, false, null, "鑱屼綅绠$悊", 1, null, 142307000914633L, "[0],[142307000914633],", null, null, "/pos", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070910590L, "manage", "sys_pos_mgr_page", null, null, null, null, null, false, null, "鑱屼綅鏌ヨ", 0, "sysPos:page", 142307070910589L, "[0],[142307000914633],[142307070910589],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070910591L, "manage", "sys_pos_mgr_list", null, null, null, null, null, false, null, "鑱屼綅鍒楄〃", 0, "sysPos:list", 142307070910589L, "[0],[142307000914633],[142307070910589],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070911739L, "manage", "sys_log_mgr_ex_log", "system/log/exlog/index", null, null, null, null, false, null, "寮傚父鏃ュ織", 1, null, 142307070918732L, "[0],[142307070918732],", null, null, "/exlog", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070911740L, "manage", "sys_log_mgr_ex_log_page", null, null, null, null, null, false, null, "寮傚父鏃ュ織鏌ヨ", 0, "sysExLog:page", 142307070911739L, "[0],[142307070918732],[142307070911739],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070911741L, "manage", "sys_log_mgr_ex_log_delete", null, null, null, null, null, false, null, "寮傚父鏃ュ織娓呯┖", 0, "sysExLog:delete", 142307070911739L, "[0],[142307070918732],[142307070911739],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914629L, "manage", "sys_pos_mgr_add", null, null, null, null, null, false, null, "鑱屼綅澧炲姞", 0, "sysPos:add", 142307070910589L, "[0],[142307000914633],[142307070910589],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914630L, "manage", "sys_pos_mgr_edit", null, null, null, null, null, false, null, "鑱屼綅缂栬緫", 0, "sysPos:edit", 142307070910589L, "[0],[142307000914633],[142307070910589],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914631L, "manage", "sys_pos_mgr_delete", null, null, null, null, null, false, null, "鑱屼綅鍒犻櫎", 0, "sysPos:delete", 142307070910589L, "[0],[142307000914633],[142307070910589],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914632L, "manage", "sys_pos_mgr_detail", null, null, null, null, null, false, null, "鑱屼綅璇︽儏", 0, "sysPos:detail", 142307070910589L, "[0],[142307000914633],[142307070910589],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914633L, "system", "sys_platform", "PageView", null, null, null, "safety-certificate", false, null, "骞冲彴绠$悊", 0, null, 0L, "[0],", null, null, "/platform", 100, 0, 0, null, null, null, "Y", 1 },
+                    { 142307070914634L, "system", "sys_app_mgr", "system/app/index", null, null, null, null, false, null, "搴旂敤绠$悊", 1, null, 142307070914633L, "[0],[142307070914633],", null, null, "/app", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070914635L, "system", "sys_app_mgr_page", null, null, null, null, null, false, null, "搴旂敤鏌ヨ", 0, "sysApp:page", 142307070914634L, "[0],[142307070914633],[142307070914634],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914636L, "system", "sys_app_mgr_list", null, null, null, null, null, false, null, "搴旂敤鍒楄〃", 0, "sysApp:list", 142307070914634L, "[0],[142307070914633],[142307070914634],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914637L, "system", "sys_app_mgr_add", null, null, null, null, null, false, null, "搴旂敤澧炲姞", 0, "sysApp:add", 142307070914634L, "[0],[142307070914633],[142307070914634],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914638L, "system", "sys_app_mgr_edit", null, null, null, null, null, false, null, "搴旂敤缂栬緫", 0, "sysApp:edit", 142307070914634L, "[0],[142307070914633],[142307070914634],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914639L, "system", "sys_app_mgr_delete", null, null, null, null, null, false, null, "搴旂敤鍒犻櫎", 0, "sysApp:delete", 142307070914634L, "[0],[142307070914633],[142307070914634],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914640L, "system", "sys_app_mgr_detail", null, null, null, null, null, false, null, "搴旂敤璇︽儏", 0, "sysApp:detail", 142307070914634L, "[0],[142307070914633],[142307070914634],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914641L, "system", "sys_app_mgr_set_as_default", null, null, null, null, null, false, null, "璁句负榛樿搴旂敤", 0, "sysApp:setAsDefault", 142307070914634L, "[0],[142307070914633],[142307070914634],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914642L, "system", "sys_menu_mgr", "system/menu/index", null, null, null, null, false, null, "鑿滃崟绠$悊", 1, null, 142307070914633L, "[0],[142307070914633],", null, null, "/menu", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070914643L, "system", "sys_menu_mgr_list", null, null, null, null, null, false, null, "鑿滃崟鍒楄〃", 0, "sysMenu:list", 142307070914642L, "[0],[142307070914633],[142307070914642],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914644L, "system", "sys_menu_mgr_add", null, null, null, null, null, false, null, "鑿滃崟澧炲姞", 0, "sysMenu:add", 142307070914642L, "[0],[142307070914633],[142307070914642],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914645L, "system", "sys_menu_mgr_edit", null, null, null, null, null, false, null, "鑿滃崟缂栬緫", 0, "sysMenu:edit", 142307070914642L, "[0],[142307070914633],[142307070914642],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914646L, "system", "sys_menu_mgr_delete", null, null, null, null, null, false, null, "鑿滃崟鍒犻櫎", 0, "sysMenu:delete", 142307070914642L, "[0],[142307070914633],[142307070914642],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_menu",
+                columns: new[] { "Id", "Application", "Code", "Component", "CreatedTime", "CreatedUserId", "CreatedUserName", "Icon", "IsDeleted", "Link", "Name", "OpenType", "Permission", "Pid", "Pids", "Redirect", "Remark", "Router", "Sort", "Status", "Type", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Visible", "Weight" },
+                values: new object[,]
+                {
+                    { 142307070914647L, "system", "sys_menu_mgr_detail", null, null, null, null, null, false, null, "鑿滃崟璇︽儏", 0, "sysMenu:detail", 142307070914642L, "[0],[142307070914633],[142307070914642],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914648L, "manage", "sys_menu_mgr_grant_tree", null, null, null, null, null, false, null, "鑿滃崟鎺堟潈鏍�", 0, "sysMenu:treeForGrant", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914649L, "manage", "sys_menu_mgr_tree", null, null, null, null, null, false, null, "鑿滃崟鏍�", 0, "sysMenu:tree", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914650L, "system", "sys_menu_mgr_change", null, null, null, null, null, false, null, "鑿滃崟鍒囨崲", 0, "sysMenu:change", 142307070914642L, "[0],[142307070914633],[142307070914642],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914651L, "manage", "sys_role_mgr", "system/role/index", null, null, null, null, false, null, "瑙掕壊绠$悊", 1, null, 142307070910563L, "[0],[142307070910563],", null, null, "/role", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070914652L, "manage", "sys_role_mgr_page", null, null, null, null, null, false, null, "瑙掕壊鏌ヨ", 0, "sysRole:page", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914653L, "manage", "sys_role_mgr_add", null, null, null, null, null, false, null, "瑙掕壊澧炲姞", 0, "sysRole:add", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914654L, "manage", "sys_role_mgr_edit", null, null, null, null, null, false, null, "瑙掕壊缂栬緫", 0, "sysRole:edit", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914655L, "manage", "sys_role_mgr_delete", null, null, null, null, null, false, null, "瑙掕壊鍒犻櫎", 0, "sysRole:delete", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914656L, "manage", "sys_role_mgr_detail", null, null, null, null, null, false, null, "瑙掕壊璇︽儏", 0, "sysRole:detail", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914657L, "manage", "sys_role_mgr_drop_down", null, null, null, null, null, false, null, "瑙掕壊涓嬫媺", 0, "sysRole:dropDown", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914658L, "manage", "sys_role_mgr_grant_menu", null, null, null, null, null, false, null, "瑙掕壊鎺堟潈鑿滃崟", 0, "sysRole:grantMenu", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914659L, "manage", "sys_role_mgr_own_menu", null, null, null, null, null, false, null, "瑙掕壊鎷ユ湁鑿滃崟", 0, "sysRole:ownMenu", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914660L, "manage", "sys_role_mgr_grant_data", null, null, null, null, null, false, null, "瑙掕壊鎺堟潈鏁版嵁", 0, "sysRole:grantData", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914661L, "manage", "sys_role_mgr_own_data", null, null, null, null, null, false, null, "瑙掕壊鎷ユ湁鏁版嵁", 0, "sysRole:ownData", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914662L, "system", "system_tools", "PageView", null, null, null, "euro", false, null, "寮�鍙戠鐞�", 0, null, 0L, "[0],", null, null, "/tools", 100, 0, 0, null, null, null, "Y", 1 },
+                    { 142307070914663L, "system", "system_tools_config", "system/config/index", null, null, null, null, false, null, "绯荤粺閰嶇疆", 1, null, 142307070914662L, "[0],[142307070914662],", null, null, "/config", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070914664L, "system", "system_tools_config_page", null, null, null, null, null, false, null, "閰嶇疆鏌ヨ", 0, "sysConfig:page", 142307070914663L, "[0],[142307070914662],[142307070914663],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914665L, "system", "system_tools_config_list", null, null, null, null, null, false, null, "閰嶇疆鍒楄〃", 0, "sysConfig:list", 142307070914663L, "[0],[142307070914662],[142307070914663],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914666L, "system", "system_tools_config_add", null, null, null, null, null, false, null, "閰嶇疆澧炲姞", 0, "sysConfig:add", 142307070914663L, "[0],[142307070914662],[142307070914663],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914667L, "system", "system_tools_config_edit", null, null, null, null, null, false, null, "閰嶇疆缂栬緫", 0, "sysConfig:edit", 142307070914663L, "[0],[142307070914662],[142307070914663],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914668L, "system", "system_tools_config_delete", null, null, null, null, null, false, null, "閰嶇疆鍒犻櫎", 0, "sysConfig:delete", 142307070914663L, "[0],[142307070914662],[142307070914663],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914669L, "system", "system_tools_config_detail", null, null, null, null, null, false, null, "閰嶇疆璇︽儏", 0, "sysConfig:detail", 142307070914663L, "[0],[142307070914662],[142307070914663],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914678L, "system", "sys_dict_mgr", "system/dict/index", null, null, null, null, false, null, "瀛楀吀绠$悊", 1, null, 142307070914662L, "[0],[142307070914662],", null, null, "/dict", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070914679L, "system", "sys_dict_mgr_dict_type_page", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷鏌ヨ", 0, "sysDictType:page", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914680L, "system", "sys_dict_mgr_dict_type_list", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷鍒楄〃", 0, "sysDictType:list", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914681L, "system", "sys_dict_mgr_dict_type_add", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷澧炲姞", 0, "sysDictType:add", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914682L, "system", "sys_dict_mgr_dict_type_delete", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷鍒犻櫎", 0, "sysDictType:delete", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914683L, "system", "sys_dict_mgr_dict_type_edit", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷缂栬緫", 0, "sysDictType:edit", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914684L, "system", "sys_dict_mgr_dict_type_detail", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷璇︽儏", 0, "sysDictType:detail", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914685L, "system", "sys_dict_mgr_dict_type_drop_down", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷涓嬫媺", 0, "sysDictType:dropDown", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914686L, "system", "sys_dict_mgr_dict_type_change_status", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷淇敼鐘舵��", 0, "sysDictType:changeStatus", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070914687L, "system", "sys_dict_mgr_dict_page", null, null, null, null, null, false, null, "瀛楀吀鍊兼煡璇�", 0, "sysDictData:page", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918725L, "system", "sys_dict_mgr_dict_list", null, null, null, null, null, false, null, "瀛楀吀鍊煎垪琛�", 0, "sysDictData:list", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918726L, "system", "sys_dict_mgr_dict_add", null, null, null, null, null, false, null, "瀛楀吀鍊煎鍔�", 0, "sysDictData:add", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918727L, "system", "sys_dict_mgr_dict_delete", null, null, null, null, null, false, null, "瀛楀吀鍊煎垹闄�", 0, "sysDictData:delete", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918728L, "system", "sys_dict_mgr_dict_edit", null, null, null, null, null, false, null, "瀛楀吀鍊肩紪杈�", 0, "sysDictData:edit", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918729L, "system", "sys_dict_mgr_dict_detail", null, null, null, null, null, false, null, "瀛楀吀鍊艰鎯�", 0, "sysDictData:detail", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918730L, "system", "sys_dict_mgr_dict_change_status", null, null, null, null, null, false, null, "瀛楀吀鍊间慨鏀圭姸鎬�", 0, "sysDictData:changeStatus", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918731L, "system", "sys_swagger_mgr", "Iframe", null, null, null, null, false, "http://localhost:6677/swagger/", "鎺ュ彛鏂囨。", 2, null, 142307070914662L, "[0],[142307070914662],", null, null, "/swagger", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070918732L, "manage", "sys_log_mgr", "PageView", null, null, null, "read", false, null, "鏃ュ織绠$悊", 0, null, 0L, "[0],", null, null, "/log", 100, 0, 0, null, null, null, "Y", 1 },
+                    { 142307070918733L, "manage", "sys_log_mgr_vis_log", "system/log/vislog/index", null, null, null, null, false, null, "璁块棶鏃ュ織", 1, null, 142307070918732L, "[0],[142307070918732],", null, null, "/vislog", 100, 0, 1, null, null, null, "Y", 1 }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_menu",
+                columns: new[] { "Id", "Application", "Code", "Component", "CreatedTime", "CreatedUserId", "CreatedUserName", "Icon", "IsDeleted", "Link", "Name", "OpenType", "Permission", "Pid", "Pids", "Redirect", "Remark", "Router", "Sort", "Status", "Type", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Visible", "Weight" },
+                values: new object[,]
+                {
+                    { 142307070918734L, "manage", "sys_log_mgr_vis_log_page", null, null, null, null, null, false, null, "璁块棶鏃ュ織鏌ヨ", 0, "sysVisLog:page", 142307070918733L, "[0],[142307070918732],[142307070918733],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918735L, "manage", "sys_log_mgr_vis_log_delete", null, null, null, null, null, false, null, "璁块棶鏃ュ織娓呯┖", 0, "sysVisLog:delete", 142307070918733L, "[0],[142307070918732],[142307070918733],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918736L, "manage", "sys_log_mgr_op_log", "system/log/oplog/index", null, null, null, null, false, null, "鎿嶄綔鏃ュ織", 1, null, 142307070918732L, "[0],[142307070918732],", null, null, "/oplog", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070918737L, "manage", "sys_log_mgr_op_log_page", null, null, null, null, null, false, null, "鎿嶄綔鏃ュ織鏌ヨ", 0, "sysOpLog:page", 142307070918736L, "[0],[142307070918732],[142307070918736],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918738L, "manage", "sys_log_mgr_op_log_delete", null, null, null, null, null, false, null, "鎿嶄綔鏃ュ織娓呯┖", 0, "sysOpLog:delete", 142307070918736L, "[0],[142307070918732],[142307070918736],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918739L, "system", "sys_monitor_mgr", "PageView", null, null, null, "deployment-unit", false, null, "绯荤粺鐩戞帶", 0, null, 0L, "[0],", null, null, "/monitor", 100, 0, 0, null, null, null, "Y", 1 },
+                    { 142307070918740L, "system", "sys_monitor_mgr_machine_monitor", "system/machine/index", null, null, null, null, false, null, "鏈嶅姟鐩戞帶", 1, null, 142307070918739L, "[0],[142307070918739],", null, null, "/machine", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070918741L, "system", "sys_monitor_mgr_machine_monitor_query", null, null, null, null, null, false, null, "鏈嶅姟鐩戞帶鏌ヨ", 0, "sysMachine:query", 142307070918740L, "[0],[142307070918739],[142307070918740],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918742L, "system", "sys_monitor_mgr_online_user", "system/onlineUser/index", null, null, null, null, false, null, "鍦ㄧ嚎鐢ㄦ埛", 1, null, 142307070918739L, "[0],[142307070918739],", null, null, "/onlineUser", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070918743L, "system", "sys_monitor_mgr_online_user_page", null, null, null, null, null, false, null, "鍦ㄧ嚎鐢ㄦ埛鏌ヨ", 0, "sysOnlineUser:page", 142307070918742L, "[0],[142307070918739],[142307070918742],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918744L, "system", "sys_monitor_mgr_online_user_force_exist", null, null, null, null, null, false, null, "鍦ㄧ嚎鐢ㄦ埛寮洪��", 0, "sysOnlineUser:forceExist", 142307070918742L, "[0],[142307070918739],[142307070918742],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918745L, "system", "sys_monitor_mgr_druid", "Iframe", null, null, null, null, false, "http://localhost:82/druid/login.html", "鏁版嵁鐩戞帶", 2, null, 142307070918739L, "[0],[142307070918739],", null, null, "/druid", 100, 0, 1, null, null, null, "N", 1 },
+                    { 142307070918746L, "manage", "sys_notice", "PageView", null, null, null, "sound", false, null, "閫氱煡鍏憡", 0, null, 0L, "[0],", null, null, "/notice", 100, 0, 0, null, null, null, "Y", 1 },
+                    { 142307070918747L, "manage", "sys_notice_mgr", "system/notice/index", null, null, null, null, false, null, "鍏憡绠$悊", 1, null, 142307070918746L, "[0],[142307070918746],", null, null, "/notice", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070918748L, "manage", "sys_notice_mgr_page", null, null, null, null, null, false, null, "鍏憡鏌ヨ", 0, "sysNotice:page", 142307070918747L, "[0],[142307070918746],[142307070918747],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918749L, "manage", "sys_notice_mgr_add", null, null, null, null, null, false, null, "鍏憡澧炲姞", 0, "sysNotice:add", 142307070918747L, "[0],[142307070918746],[142307070918747],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918750L, "manage", "sys_notice_mgr_edit", null, null, null, null, null, false, null, "鍏憡缂栬緫", 0, "sysNotice:edit", 142307070918747L, "[0],[142307070918746],[142307070918747],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918751L, "manage", "sys_notice_mgr_delete", null, null, null, null, null, false, null, "鍏憡鍒犻櫎", 0, "sysNotice:delete", 142307070918747L, "[0],[142307070918746],[142307070918747],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918752L, "manage", "sys_notice_mgr_detail", null, null, null, null, null, false, null, "鍏憡鏌ョ湅", 0, "sysNotice:detail", 142307070918747L, "[0],[142307070918746],[142307070918747],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918753L, "manage", "sys_notice_mgr_changeStatus", null, null, null, null, null, false, null, "鍏憡淇敼鐘舵��", 0, "sysNotice:changeStatus", 142307070918747L, "[0],[142307070918746],[142307070918747],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918754L, "manage", "sys_notice_mgr_received", "system/noticeReceived/index", null, null, null, null, false, null, "宸叉敹鍏憡", 1, null, 142307070918746L, "[0],[142307070918746],", null, null, "/noticeReceived", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070918755L, "manage", "sys_notice_mgr_received_page", null, null, null, null, null, false, null, "宸叉敹鍏憡鏌ヨ", 0, "sysNotice:received", 142307070918754L, "[0],[142307070918746],[142307070918754],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918756L, "manage", "sys_file_mgr", "PageView", null, null, null, "file", false, null, "鏂囦欢绠$悊", 0, null, 0L, "[0],", null, null, "/file", 100, 0, 0, null, null, null, "Y", 1 },
+                    { 142307070918757L, "manage", "sys_file_mgr_sys_file", "system/file/index", null, null, null, null, false, null, "绯荤粺鏂囦欢", 1, null, 142307070918756L, "[0],[142307070918756],", null, null, "/file", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070918758L, "manage", "sys_file_mgr_sys_file_page", null, null, null, null, null, false, null, "鏂囦欢鏌ヨ", 0, "sysFileInfo:page", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918759L, "manage", "sys_file_mgr_sys_file_list", null, null, null, null, null, false, null, "鏂囦欢鍒楄〃", 0, "sysFileInfo:list", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918760L, "manage", "sys_file_mgr_sys_file_delete", null, null, null, null, null, false, null, "鏂囦欢鍒犻櫎", 0, "sysFileInfo:delete", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918761L, "manage", "sys_file_mgr_sys_file_detail", null, null, null, null, null, false, null, "鏂囦欢璇︽儏", 0, "sysFileInfo:detail", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918762L, "manage", "sys_file_mgr_sys_file_upload", null, null, null, null, null, false, null, "鏂囦欢涓婁紶", 0, "sysFileInfo:upload", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918763L, "manage", "sys_file_mgr_sys_file_download", null, null, null, null, null, false, null, "鏂囦欢涓嬭浇", 0, "sysFileInfo:download", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918764L, "manage", "sys_file_mgr_sys_file_preview", null, null, null, null, null, false, null, "鍥剧墖棰勮", 0, "sysFileInfo:preview", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918765L, "system", "sys_timers", "PageView", null, null, null, "dashboard", false, null, "浠诲姟璋冨害", 0, null, 0L, "[0],", null, null, "/timers", 100, 0, 0, null, null, null, "Y", 1 },
+                    { 142307070918766L, "system", "sys_timers_mgr", "system/timers/index", null, null, null, null, false, null, "浠诲姟绠$悊", 1, null, 142307070918765L, "[0],[142307070918765],", null, null, "/timers", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070918767L, "system", "sys_timers_mgr_page", null, null, null, null, null, false, null, "瀹氭椂浠诲姟鏌ヨ", 0, "sysTimers:page", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918768L, "system", "sys_timers_mgr_list", null, null, null, null, null, false, null, "瀹氭椂浠诲姟鍒楄〃", 0, "sysTimers:list", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918769L, "system", "sys_timers_mgr_detail", null, null, null, null, null, false, null, "瀹氭椂浠诲姟璇︽儏", 0, "sysTimers:detail", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918770L, "system", "sys_timers_mgr_add", null, null, null, null, null, false, null, "瀹氭椂浠诲姟澧炲姞", 0, "sysTimers:add", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918771L, "system", "sys_timers_mgr_delete", null, null, null, null, null, false, null, "瀹氭椂浠诲姟鍒犻櫎", 0, "sysTimers:delete", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918772L, "system", "sys_timers_mgr_edit", null, null, null, null, null, false, null, "瀹氭椂浠诲姟缂栬緫", 0, "sysTimers:edit", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918773L, "system", "sys_timers_mgr_get_action_classes", null, null, null, null, null, false, null, "瀹氭椂浠诲姟鍙墽琛屽垪琛�", 0, "sysTimers:getActionClasses", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918774L, "system", "sys_timers_mgr_start", null, null, null, null, null, false, null, "瀹氭椂浠诲姟鍚姩", 0, "sysTimers:start", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070918775L, "system", "sys_timers_mgr_stop", null, null, null, null, null, false, null, "瀹氭椂浠诲姟鍏抽棴", 0, "sysTimers:stop", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_menu",
+                columns: new[] { "Id", "Application", "Code", "Component", "CreatedTime", "CreatedUserId", "CreatedUserName", "Icon", "IsDeleted", "Link", "Name", "OpenType", "Permission", "Pid", "Pids", "Redirect", "Remark", "Router", "Sort", "Status", "Type", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Visible", "Weight" },
+                values: new object[,]
+                {
+                    { 142307070918776L, "system", "code_gen", "PageView", null, null, null, "thunderbolt", false, null, "浠g爜鐢熸垚", 0, null, 0L, "[0],", null, null, "/codeGenerate", 100, 0, 0, null, null, null, "Y", 1 },
+                    { 142307070918777L, "manage", "sys_user_mgr_login", null, null, null, null, null, false, null, "鐢ㄦ埛鐧诲綍淇℃伅", 0, "getLoginUser", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 1, 2, null, null, null, "N", 1 },
+                    { 142307070918778L, "system", "low_code", "gen/lowCode/index", null, null, null, null, false, null, "琛ㄥ崟璁捐", 0, null, 142307070918776L, "[0],[142307070918776],", null, null, "/lowCode/index", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070918779L, "system", "code_gen_gen", "gen/codeGenerate/index", null, null, null, null, false, null, "浠g爜鐢熸垚", 0, null, 142307070918776L, "[0],[142307070918776],", null, null, "/codeGenerate/index", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070922870L, "system", "form_design", "system/formDesign/index", null, null, null, null, false, null, "琛ㄥ崟璁捐", 0, null, 285599875018821L, "[0],[285599875018821],", null, null, "/formDesign/index", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 142307070922874L, "manage", "sys_file_mgr_sys_file_upload_avatar", null, null, null, null, null, false, null, "澶村儚涓婁紶", 0, "sysFileInfo:uploadAvatar", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070922875L, "manage", "sys_file_mgr_sys_file_upload_document", null, null, null, null, null, false, null, "鏂囨。涓婁紶", 0, "sysFileInfo:uploadDocument", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 142307070922876L, "manage", "sys_file_mgr_sys_file_upload_shop", null, null, null, null, null, false, null, "鍟嗗煄涓婁紶", 0, "sysFileInfo:uploadShop", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+                    { 285599875018821L, "system", "sys_formDesign", "PageView", null, null, null, "snippets", false, null, "琛ㄥ崟绠$悊", 1, null, 0L, "[0],", null, null, "/formDesign", 100, 0, 0, null, null, null, "Y", 1 },
+                    { 285599875018823L, "system", "sys_formDesign_list", "system/formDesign/list", null, null, null, null, false, null, "琛ㄥ崟鍒楄〃", 1, null, 285599875018821L, "[0],[285599875018821],", null, null, "/formDesign/list", 100, 0, 1, null, null, null, "Y", 1 },
+                    { 285635743518789L, "system", "sys_formDesign_edit", "system/formDesign/edit", null, null, null, null, false, null, "淇敼琛ㄥ崟", 1, null, 285599875018821L, "[0],[285599875018821],", null, null, "/formDesign/edit", 100, 0, 1, null, null, null, "N", 1 },
+                    { 285640475689029L, "system", "btn_formDesign_edit", "", null, null, null, null, false, null, "淇敼琛ㄥ崟", 0, "formmanager:edit", 285599875018823L, "[0],[285599875018821],[285599875018823],", null, null, "", 100, 0, 2, null, null, null, "Y", 1 },
+                    { 285640599859269L, "system", "btn_formDesign_delete", "", null, null, null, null, false, null, "鍒犻櫎琛ㄥ崟", 0, "formmanager:delete", 285599875018823L, "[0],[285599875018821],[285599875018823],", null, null, "", 100, 0, 2, null, null, null, "Y", 1 },
+                    { 285640740945989L, "system", "btn_formDesign_page", "", null, null, null, null, false, null, "琛ㄥ崟鍒楄〃", 0, "formmanager:page", 285599875018823L, "[0],[285599875018821],[285599875018823],", null, null, "", 100, 0, 2, null, null, null, "Y", 1 },
+                    { 355687925174341L, "busiapp", "Maste_wmscontainer_mgr", "main/WmsContainer/index", null, null, null, "border", false, null, "鎵樼洏淇℃伅", 1, null, 0L, "[0],", null, null, "/wmscontainer", 100, 0, 1, null, null, null, "Y", 2 },
+                    { 355687925178437L, "busiapp", "Maste_wmscontainer_mgr_page", null, null, null, null, null, false, null, "鎵樼洏淇℃伅鏌ヨ", 0, "WmsContainer:page", 355687925174341L, "[0],[355687924998213],[355687925174341],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355687925178438L, "busiapp", "Maste_wmscontainer_mgr_detail", null, null, null, null, null, false, null, "鎵樼洏淇℃伅璇︽儏", 0, "WmsContainer:detail", 355687925174341L, "[0],[355687924998213],[355687925174341],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355687925178439L, "busiapp", "Maste_wmscontainer_mgr_add", null, null, null, null, null, false, null, "鎵樼洏淇℃伅澧炲姞", 0, "WmsContainer:add", 355687925174341L, "[0],[355687924998213],[355687925174341],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355687925182533L, "busiapp", "Maste_wmscontainer_mgr_delete", null, null, null, null, null, false, null, "鎵樼洏淇℃伅鍒犻櫎", 0, "WmsContainer:delete", 355687925174341L, "[0],[355687924998213],[355687925174341],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355687925182534L, "busiapp", "Maste_wmscontainer_mgr_edit", null, null, null, null, null, false, null, "鎵樼洏淇℃伅缂栬緫", 0, "WmsContainer:edit", 355687925174341L, "[0],[355687924998213],[355687925174341],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355688792178757L, "busiapp", "Maste_wmsarea_mgr", "main/WmsArea/index", null, null, null, "appstore", false, null, "搴撳尯淇℃伅", 1, null, 0L, "[0],", null, null, "/wmsarea", 100, 0, 1, null, null, null, "Y", 2 },
+                    { 355688792182853L, "busiapp", "Maste_wmsarea_mgr_page", null, null, null, null, null, false, null, "搴撳尯淇℃伅鏌ヨ", 0, "WmsArea:page", 355688792178757L, "[0],[355688792162373],[355688792178757],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355688792182854L, "busiapp", "Maste_wmsarea_mgr_detail", null, null, null, null, null, false, null, "搴撳尯淇℃伅璇︽儏", 0, "WmsArea:detail", 355688792178757L, "[0],[355688792162373],[355688792178757],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355688792186949L, "busiapp", "Maste_wmsarea_mgr_add", null, null, null, null, null, false, null, "搴撳尯淇℃伅澧炲姞", 0, "WmsArea:add", 355688792178757L, "[0],[355688792162373],[355688792178757],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355688792186950L, "busiapp", "Maste_wmsarea_mgr_delete", null, null, null, null, null, false, null, "搴撳尯淇℃伅鍒犻櫎", 0, "WmsArea:delete", 355688792178757L, "[0],[355688792162373],[355688792178757],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355688792186951L, "busiapp", "Maste_wmsarea_mgr_edit", null, null, null, null, null, false, null, "搴撳尯淇℃伅缂栬緫", 0, "WmsArea:edit", 355688792178757L, "[0],[355688792162373],[355688792178757],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355689496985669L, "busiapp", "Maste_wmsplace_mgr", "main/WmsPlace/index", null, null, null, "table", false, null, "搴撲綅淇℃伅", 1, null, 0L, "[0],", null, null, "/wmsplace", 100, 0, 1, null, null, null, "Y", 2 },
+                    { 355689496989765L, "busiapp", "Maste_wmsplace_mgr_page", null, null, null, null, null, false, null, "搴撲綅淇℃伅鏌ヨ", 0, "WmsPlace:page", 355689496985669L, "[0],[355689496977477],[355689496985669],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355689496993861L, "busiapp", "Maste_wmsplace_mgr_detail", null, null, null, null, null, false, null, "搴撲綅淇℃伅璇︽儏", 0, "WmsPlace:detail", 355689496985669L, "[0],[355689496977477],[355689496985669],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355689496993862L, "busiapp", "Maste_wmsplace_mgr_add", null, null, null, null, null, false, null, "搴撲綅淇℃伅澧炲姞", 0, "WmsPlace:add", 355689496985669L, "[0],[355689496977477],[355689496985669],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355689496993863L, "busiapp", "Maste_wmsplace_mgr_delete", null, null, null, null, null, false, null, "搴撲綅淇℃伅鍒犻櫎", 0, "WmsPlace:delete", 355689496985669L, "[0],[355689496977477],[355689496985669],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355689496993864L, "busiapp", "Maste_wmsplace_mgr_edit", null, null, null, null, null, false, null, "搴撲綅淇℃伅缂栬緫", 0, "WmsPlace:edit", 355689496985669L, "[0],[355689496977477],[355689496985669],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355690042511429L, "busiapp", "Maste_wmsmaterial_mgr", "main/WmsMaterial/index", null, null, null, "barcode", false, null, "鐗╂枡淇℃伅", 1, null, 0L, "[0],", null, null, "/wmsmaterial", 100, 0, 1, null, null, null, "Y", 2 },
+                    { 355690042515525L, "busiapp", "Maste_wmsmaterial_mgr_page", null, null, null, null, null, false, null, "鐗╂枡淇℃伅鏌ヨ", 0, "WmsMaterial:page", 355690042511429L, "[0],[355690042499141],[355690042511429],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355690042519621L, "busiapp", "Maste_wmsmaterial_mgr_detail", null, null, null, null, null, false, null, "鐗╂枡淇℃伅璇︽儏", 0, "WmsMaterial:detail", 355690042511429L, "[0],[355690042499141],[355690042511429],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355690042519622L, "busiapp", "Maste_wmsmaterial_mgr_add", null, null, null, null, null, false, null, "鐗╂枡淇℃伅澧炲姞", 0, "WmsMaterial:add", 355690042511429L, "[0],[355690042499141],[355690042511429],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355690042519623L, "busiapp", "Maste_wmsmaterial_mgr_delete", null, null, null, null, null, false, null, "鐗╂枡淇℃伅鍒犻櫎", 0, "WmsMaterial:delete", 355690042511429L, "[0],[355690042499141],[355690042511429],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355690042519624L, "busiapp", "Maste_wmsmaterial_mgr_edit", null, null, null, null, null, false, null, "鐗╂枡淇℃伅缂栬緫", 0, "WmsMaterial:edit", 355690042511429L, "[0],[355690042499141],[355690042511429],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 355690923847749L, "warejob", "BindEntrance", "main/BindEntrance/index", null, null, null, "logout", false, null, "缁勭洏鍏ュ簱", 1, null, 0L, "[0],", null, null, "/BindEntrance", 100, 0, 1, null, null, null, "Y", 2 },
+                    { 355691450822725L, "warejob", "ExWarehouse", "main/ExWarehouse/index", null, null, null, "login", false, null, "鍑哄簱绠$悊", 1, null, 0L, "[0],", null, null, "/ExWarehouse", 100, 0, 1, null, null, null, "Y", 2 },
+                    { 355691891650629L, "warejob", "WmsTask", "main/WmsTask/index", null, null, null, "hourglass", false, null, "浠诲姟绠$悊", 1, null, 0L, "[0],", null, null, "/WmsTask", 100, 0, 1, null, null, null, "Y", 2 },
+                    { 355692253458501L, "warecount", "LocationView", "main/LocationView/index", null, null, null, "hdd", false, null, "搴撲綅瑙嗗浘", 1, null, 0L, "[0],", null, null, "/LocationView", 100, 0, 1, null, null, null, "Y", 2 }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_menu",
+                columns: new[] { "Id", "Application", "Code", "Component", "CreatedTime", "CreatedUserId", "CreatedUserName", "Icon", "IsDeleted", "Link", "Name", "OpenType", "Permission", "Pid", "Pids", "Redirect", "Remark", "Router", "Sort", "Status", "Type", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Visible", "Weight" },
+                values: new object[,]
+                {
+                    { 355692487622725L, "warecount", "View_AccessDetails", "main/View_AccessDetails/index", null, null, null, "laptop", false, null, "鍑哄叆搴撹褰�", 1, null, 0L, "[0],", null, null, "/View_AccessDetails", 100, 0, 1, null, null, null, "Y", 2 },
+                    { 383310358700101L, "busiapp", "Maste_lesproductionline_mgr", "main/LesProductionline/index", null, null, null, "gateway", false, null, "浜х嚎淇℃伅", 1, null, 0L, "[0],", null, null, "/lesproductionline", 100, 0, 1, null, null, null, "Y", 2 },
+                    { 383310359138373L, "busiapp", "Maste_lesproductionline_mgr_page", null, null, null, null, null, false, null, "浜х嚎淇℃伅鏌ヨ", 0, "LesProductionline:page", 383310358700101L, "[0],[383310357848133],[383310358700101],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 383310359146565L, "busiapp", "Maste_lesproductionline_mgr_detail", null, null, null, null, null, false, null, "浜х嚎淇℃伅璇︽儏", 0, "LesProductionline:detail", 383310358700101L, "[0],[383310357848133],[383310358700101],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 383310359146566L, "busiapp", "Maste_lesproductionline_mgr_add", null, null, null, null, null, false, null, "浜х嚎淇℃伅澧炲姞", 0, "LesProductionline:add", 383310358700101L, "[0],[383310357848133],[383310358700101],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 383310359150661L, "busiapp", "Maste_lesproductionline_mgr_delete", null, null, null, null, null, false, null, "浜х嚎淇℃伅鍒犻櫎", 0, "LesProductionline:delete", 383310358700101L, "[0],[383310357848133],[383310358700101],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 383310359154757L, "busiapp", "Maste_lesproductionline_mgr_edit", null, null, null, null, null, false, null, "浜х嚎淇℃伅缂栬緫", 0, "LesProductionlinel:edit", 383310358700101L, "[0],[383310357848133],[383310358700101],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 383311866703941L, "busiapp", "Maste_lesstation_mgr", "main/LesStation/index", null, null, null, "team", false, null, "宸ヤ綅淇℃伅", 1, null, 0L, "[0],", null, null, "/lesstation", 100, 0, 1, null, null, null, "Y", 2 },
+                    { 383311866744901L, "busiapp", "Maste_lesstation_mgr_page", null, null, null, null, null, false, null, "宸ヤ綅淇℃伅鏌ヨ", 0, "LesStation:page", 383311866703941L, "[0],[383311866441797],[383311866703941],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 383311866748997L, "busiapp", "Maste_lesstation_mgr_detail", null, null, null, null, null, false, null, "宸ヤ綅淇℃伅璇︽儏", 0, "LesStation:detail", 383311866703941L, "[0],[383311866441797],[383311866703941],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 383311866753093L, "busiapp", "Maste_lesstation_mgr_add", null, null, null, null, null, false, null, "宸ヤ綅淇℃伅澧炲姞", 0, "LesStation:add", 383311866703941L, "[0],[383311866441797],[383311866703941],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 383311866753094L, "busiapp", "Maste_lesstation_mgr_delete", null, null, null, null, null, false, null, "宸ヤ綅淇℃伅鍒犻櫎", 0, "LesStation:delete", 383311866703941L, "[0],[383311866441797],[383311866703941],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 383311866753095L, "busiapp", "Maste_lesstation_mgr_edit", null, null, null, null, null, false, null, "宸ヤ綅淇℃伅缂栬緫", 0, "LesStation:edit", 383311866703941L, "[0],[383311866441797],[383311866703941],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 383328166334533L, "xbjl", "Maste_lestakematerials_mgr", "main/LesTakematerials/index", null, null, null, "deployment-unit", false, null, "鍙枡绠$悊", 1, null, 0L, "[0],", null, null, "/lestakematerials", 100, 0, 1, null, null, null, "Y", 2 },
+                    { 383328166449221L, "xbjl", "Maste_lestakematerials_mgr_page", null, null, null, null, null, false, null, "鍙枡鏌ヨ", 0, "LesTakematerials:page", 383328166334533L, "[0],[383328165556293],[383328166334533],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 383328166457413L, "xbjl", "Maste_lestakematerials_mgr_detail", null, null, null, null, null, false, null, "鍙枡璇︽儏", 0, "LesTakematerials:detail", 383328166334533L, "[0],[383328165556293],[383328166334533],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 383328166461509L, "xbjl", "Maste_lestakematerials_mgr_add", null, null, null, null, null, false, null, "鍙枡澧炲姞", 0, "LesTakematerials:add", 383328166334533L, "[0],[383328165556293],[383328166334533],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 383328166461510L, "xbjl", "Maste_lestakematerials_mgr_delete", null, null, null, null, null, false, null, "鍙枡鍒犻櫎", 0, "LesTakematerials:delete", 383328166334533L, "[0],[383328165556293],[383328166334533],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 383328166461511L, "xbjl", "Maste_lestakematerials_mgr_edit", null, null, null, null, null, false, null, "鍙枡缂栬緫", 0, "LesTakematerials:edit", 383328166334533L, "[0],[383328165556293],[383328166334533],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 386851902500933L, "warecount", "Maste_wmsmaterialstock_mgr", "main/WmsMaterialStock/index", null, null, null, "vertical-left", false, null, "搴撳瓨淇℃伅", 1, null, 0L, "[0],", null, null, "/wmsmaterialstock", 100, 0, 1, null, null, null, "Y", 2 },
+                    { 386851902545989L, "warecount", "Maste_wmsmaterialstock_mgr_page", null, null, null, null, null, false, null, "搴撳瓨鏌ヨ", 0, "WmsMaterialStock:page", 386851902500933L, "[0],[386851902124101],[386851902500933],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 386851902550085L, "warecount", "Maste_wmsmaterialstock_mgr_detail", null, null, null, null, null, false, null, "搴撳瓨璇︽儏", 0, "WmsMaterialStock:detail", 386851902500933L, "[0],[386851902124101],[386851902500933],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 386851902554181L, "warecount", "Maste_wmsmaterialstock_mgr_add", null, null, null, null, null, false, null, "搴撳瓨澧炲姞", 0, "WmsMaterialStock:add", 386851902500933L, "[0],[386851902124101],[386851902500933],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 386851902558277L, "warecount", "Maste_wmsmaterialstock_mgr_delete", null, null, null, null, null, false, null, "搴撳瓨鍒犻櫎", 0, "WmsMaterialStock:delete", 386851902500933L, "[0],[386851902124101],[386851902500933],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 386851902558278L, "warecount", "Maste_wmsmaterialstock_mgr_edit", null, null, null, null, null, false, null, "搴撳瓨缂栬緫", 0, "WmsMaterialStock:edit", 386851902500933L, "[0],[386851902124101],[386851902500933],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+                    { 494834310545477L, "system", "sys_wmspdapower_mgr", "main/WmsPdaPower/index", null, null, null, null, false, null, "Pda鑿滃崟", 1, null, 142307070914633L, "[0],[142307070914633],", null, null, "/WmsPdaPower", 101, 0, 1, null, null, null, "Y", 1 }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_org",
+                columns: new[] { "Id", "Code", "Contacts", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Name", "OrgType", "Pid", "Pids", "Remark", "Sort", "Status", "Tel", "UpdatedTime", "UpdatedUserId", "UpdatedUserName" },
+                values: new object[,]
+                {
+                    { 142307070910539L, "wbgf", null, null, null, null, false, "浼熸湰鑲′唤鏈夐檺鍏徃", null, 0L, "[0],", "浼熸湰鑲′唤鏈夐檺鍏徃", 100, 0, null, null, null, null },
+                    { 142307070910540L, "wbgf_sh", null, null, null, null, false, "浼熸湰鑲′唤鏈夐檺鍏徃(涓婃捣)", null, 142307070910539L, "[0],[142307070910539],", "浼熸湰鑲′唤鏈夐檺鍏徃-涓婃捣", 100, 0, null, null, null, null },
+                    { 142307070910541L, "wbgf_cq", null, null, null, null, false, "浼熸湰鑲′唤鏈夐檺鍏徃(閲嶅簡)", null, 142307070910539L, "[0],[142307070910539],", "浼熸湰鑲′唤鏈夐檺鍏徃-閲嶅簡", 100, 0, null, null, null, null },
+                    { 142307070910542L, "wbgf_sh_yfb", null, null, null, null, false, "鐮斿彂閮�", null, 142307070910540L, "[0],[142307070910539],[142307070910540],", "", 100, 0, null, null, null, null },
+                    { 142307070910543L, "wbgf_sh_qhb", null, null, null, null, false, "浼佸垝閮�", null, 142307070910540L, "[0],[142307070910539],[142307070910540],", "", 100, 0, null, null, null, null },
+                    { 142307070910544L, "wbgf_cq_scb", null, null, null, null, false, "甯傚満閮�", null, 142307070910541L, "[0],[142307070910539],[142307070910541],", "", 100, 0, null, null, null, null },
+                    { 142307070910545L, "wbgf_cq_cwb", null, null, null, null, false, "璐㈠姟閮�", null, 142307070910541L, "[0],[142307070910539],[142307070910541],", "", 100, 0, null, null, null, null },
+                    { 142307070910546L, "wbgf_cq_scb", null, null, null, null, false, "甯傚満閮ㄤ簩閮�", null, 142307070910544L, "[0],[142307070910539],[142307070910541],[142307070910544],", "", 100, 0, null, null, null, null }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_pos",
+                columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Name", "Remark", "Sort", "Status", "UpdatedTime", "UpdatedUserId", "UpdatedUserName" },
+                values: new object[,]
+                {
+                    { 142307070910547L, "zjl", null, null, null, false, "鎬荤粡鐞�", "鎬荤粡鐞�", 100, 0, null, null, null },
+                    { 142307070910548L, "fzjl", null, null, null, false, "鍓�荤粡鐞�", "鍓�荤粡鐞�", 101, 0, null, null, null },
+                    { 142307070910549L, "bmjl", null, null, null, false, "閮ㄩ棬缁忕悊", "閮ㄩ棬缁忕悊", 102, 0, null, null, null },
+                    { 142307070910550L, "gzry", null, null, null, false, "宸ヤ綔浜哄憳", "宸ヤ綔浜哄憳", 103, 0, null, null, null }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_role",
+                columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "DataScopeType", "IsDeleted", "Name", "Remark", "RoleType", "Sort", "Status", "UpdatedTime", "UpdatedUserId", "UpdatedUserName" },
+                values: new object[,]
+                {
+                    { 142307070910554L, "sys_manager_role", null, null, null, 1, false, "绯荤粺绠$悊鍛�", "绯荤粺绠$悊鍛�", 0, 100, 0, null, null, null },
+                    { 356094617575493L, "admin", null, null, null, 1, false, "绠$悊鍛�", "", 0, 100, 0, null, null, null },
+                    { 358509609758789L, "ware", null, null, null, 1, false, "浠撳簱鐢ㄦ埛", "", 0, 100, 0, null, null, null },
+                    { 358536344862789L, "iWare", null, null, null, 5, false, "鐮斿彂鐢ㄦ埛", "", 0, 100, 0, null, null, null }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_timer",
+                columns: new[] { "Id", "CreatedTime", "CreatedUserId", "CreatedUserName", "Cron", "DoOnce", "ExecuteType", "Headers", "Interval", "IsDeleted", "JobName", "Remark", "RequestParameters", "RequestType", "RequestUrl", "StartNow", "TimerType", "UpdatedTime", "UpdatedUserId", "UpdatedUserName" },
+                values: new object[] { 142307070910556L, null, null, null, null, false, 1, null, 5, false, "鐧惧害api", "鎺ュ彛API", null, 2, "https://www.baidu.com", false, 0, null, null, null });
+
+            migrationBuilder.InsertData(
+                table: "sys_user",
+                columns: new[] { "Id", "Account", "AdminType", "Avatar", "Birthday", "CreatedTime", "CreatedUserId", "CreatedUserName", "Email", "IsDeleted", "LastLoginIp", "LastLoginTime", "Name", "NickName", "Password", "Phone", "ProductionlineId", "Sex", "Status", "Tel", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "WorkShopType" },
+                values: new object[,]
+                {
+                    { 142307070910551L, "superAdmin", 1, null, new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)), null, null, null, null, false, null, null, "瓒呯骇绠$悊鍛�", "superAdmin", "e10adc3949ba59abbe56e057f20f883e", "18020030720", 0L, 1, 0, null, null, null, null, 0 },
+                    { 142307070910552L, "admin", 2, null, new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)), null, null, null, null, false, null, null, "绯荤粺绠$悊鍛�", "admin", "e10adc3949ba59abbe56e057f20f883e", "18020030720", 0L, 1, 0, null, null, null, null, 0 },
+                    { 358533464608837L, "warehouse", 3, null, new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)), null, null, null, null, false, null, null, "浠撳簱鐢ㄦ埛", "warehouse", "e10adc3949ba59abbe56e057f20f883e", "13869156666", 0L, 1, 0, null, null, null, null, 0 },
+                    { 358536045723717L, "admin1", 3, null, new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)), null, null, null, null, false, null, null, "鐮斿彂閮�", "admin1", "f379eaf3c831b04de153469d1bec345e", "13869156666", 0L, 1, 0, null, null, null, null, 0 }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_dict_data",
+                columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Remark", "Sort", "Status", "TypeId", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Value" },
+                values: new object[,]
+                {
+                    { 142307070902375L, "1", null, null, null, false, "鐢锋��", 100, 0, 142307070906484L, null, null, null, "鐢�" },
+                    { 142307070902376L, "2", null, null, null, false, "濂虫��", 100, 0, 142307070906484L, null, null, null, "濂�" },
+                    { 142307070902377L, "3", null, null, null, false, "鏈煡鎬у埆", 100, 0, 142307070906484L, null, null, null, "鏈煡" },
+                    { 142307070902384L, "0", null, null, null, false, "姝e父", 100, 0, 142307070906483L, null, null, null, "姝e父" },
+                    { 142307070902385L, "1", null, null, null, false, "鍋滅敤", 100, 0, 142307070906483L, null, null, null, "鍋滅敤" },
+                    { 142307070902386L, "2", null, null, null, false, "鍒犻櫎", 100, 0, 142307070906483L, null, null, null, "鍒犻櫎" },
+                    { 142307070902387L, "N", null, null, null, false, "鍚�", 100, 0, 142307070906486L, null, null, null, "鍚�" },
+                    { 142307070902388L, "Y", null, null, null, false, "鏄�", 100, 0, 142307070906486L, null, null, null, "鏄�" },
+                    { 142307070902389L, "1", null, null, null, false, "鐧诲綍", 100, 0, 142307070906487L, null, null, null, "鐧诲綍" },
+                    { 142307070902390L, "2", null, null, null, false, "鐧诲嚭", 100, 0, 142307070906487L, null, null, null, "鐧诲嚭" },
+                    { 142307070902391L, "0", null, null, null, false, "鐩綍", 100, 0, 142307070906488L, null, null, null, "鐩綍" },
+                    { 142307070902392L, "1", null, null, null, false, "鑿滃崟", 100, 0, 142307070906488L, null, null, null, "鑿滃崟" },
+                    { 142307070902393L, "2", null, null, null, false, "鎸夐挳", 100, 0, 142307070906488L, null, null, null, "鎸夐挳" },
+                    { 142307070902394L, "0", null, null, null, false, "鏈彂閫�", 100, 0, 142307070906489L, null, null, null, "鏈彂閫�" },
+                    { 142307070902395L, "1", null, null, null, false, "鍙戦�佹垚鍔�", 100, 0, 142307070906489L, null, null, null, "鍙戦�佹垚鍔�" },
+                    { 142307070902396L, "2", null, null, null, false, "鍙戦�佸け璐�", 100, 0, 142307070906489L, null, null, null, "鍙戦�佸け璐�" },
+                    { 142307070902397L, "3", null, null, null, false, "澶辨晥", 100, 0, 142307070906489L, null, null, null, "澶辨晥" },
+                    { 142307070902398L, "0", null, null, null, false, "鏃�", 100, 0, 142307070906490L, null, null, null, "鏃�" },
+                    { 142307070902399L, "1", null, null, null, false, "缁勪欢", 100, 0, 142307070906490L, null, null, null, "缁勪欢" },
+                    { 142307070906437L, "2", null, null, null, false, "鍐呴摼", 100, 0, 142307070906490L, null, null, null, "鍐呴摼" },
+                    { 142307070906438L, "3", null, null, null, false, "澶栭摼", 100, 0, 142307070906490L, null, null, null, "澶栭摼" },
+                    { 142307070906439L, "1", null, null, null, false, "绯荤粺鏉冮噸", 100, 0, 142307070906491L, null, null, null, "绯荤粺鏉冮噸" },
+                    { 142307070906440L, "2", null, null, null, false, "涓氬姟鏉冮噸", 100, 0, 142307070906491L, null, null, null, "涓氬姟鏉冮噸" },
+                    { 142307070906441L, "1", null, null, null, false, "鍏ㄩ儴鏁版嵁", 100, 0, 142307070906492L, null, null, null, "鍏ㄩ儴鏁版嵁" },
+                    { 142307070906442L, "2", null, null, null, false, "鏈儴闂ㄥ強浠ヤ笅鏁版嵁", 100, 0, 142307070906492L, null, null, null, "鏈儴闂ㄥ強浠ヤ笅鏁版嵁" },
+                    { 142307070906443L, "3", null, null, null, false, "鏈儴闂ㄦ暟鎹�", 100, 0, 142307070906492L, null, null, null, "鏈儴闂ㄦ暟鎹�" },
+                    { 142307070906444L, "4", null, null, null, false, "浠呮湰浜烘暟鎹�", 100, 0, 142307070906492L, null, null, null, "浠呮湰浜烘暟鎹�" },
+                    { 142307070906445L, "5", null, null, null, false, "鑷畾涔夋暟鎹�", 100, 0, 142307070906492L, null, null, null, "鑷畾涔夋暟鎹�" },
+                    { 142307070906449L, "0", null, null, null, false, "鍏跺畠", 100, 0, 142307070906494L, null, null, null, "鍏跺畠" },
+                    { 142307070906450L, "1", null, null, null, false, "澧炲姞", 100, 0, 142307070906494L, null, null, null, "澧炲姞" },
+                    { 142307070906451L, "2", null, null, null, false, "鍒犻櫎", 100, 0, 142307070906494L, null, null, null, "鍒犻櫎" },
+                    { 142307070906452L, "3", null, null, null, false, "缂栬緫", 100, 0, 142307070906494L, null, null, null, "缂栬緫" },
+                    { 142307070906453L, "4", null, null, null, false, "鏇存柊", 100, 0, 142307070906494L, null, null, null, "鏇存柊" },
+                    { 142307070906454L, "5", null, null, null, false, "鏌ヨ", 100, 0, 142307070906494L, null, null, null, "鏌ヨ" },
+                    { 142307070906455L, "6", null, null, null, false, "璇︽儏", 100, 0, 142307070906494L, null, null, null, "璇︽儏" },
+                    { 142307070906456L, "7", null, null, null, false, "鏍�", 100, 0, 142307070906494L, null, null, null, "鏍�" },
+                    { 142307070906457L, "8", null, null, null, false, "瀵煎叆", 100, 0, 142307070906494L, null, null, null, "瀵煎叆" },
+                    { 142307070906458L, "9", null, null, null, false, "瀵煎嚭", 100, 0, 142307070906494L, null, null, null, "瀵煎嚭" },
+                    { 142307070906459L, "10", null, null, null, false, "鎺堟潈", 100, 0, 142307070906494L, null, null, null, "鎺堟潈" },
+                    { 142307070906460L, "11", null, null, null, false, "寮洪��", 100, 0, 142307070906494L, null, null, null, "寮洪��" },
+                    { 142307070906461L, "12", null, null, null, false, "娓呯┖", 100, 0, 142307070906494L, null, null, null, "娓呯┖" },
+                    { 142307070906462L, "13", null, null, null, false, "淇敼鐘舵��", 100, 0, 142307070906494L, null, null, null, "淇敼鐘舵��" }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_dict_data",
+                columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Remark", "Sort", "Status", "TypeId", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Value" },
+                values: new object[,]
+                {
+                    { 142307070906463L, "1", null, null, null, false, "闃块噷浜�", 100, 0, 142307070906495L, null, null, null, "闃块噷浜�" },
+                    { 142307070906464L, "2", null, null, null, false, "鑵捐浜�", 100, 0, 142307070906495L, null, null, null, "鑵捐浜�" },
+                    { 142307070906465L, "3", null, null, null, false, "minio", 100, 0, 142307070906495L, null, null, null, "minio" },
+                    { 142307070906466L, "4", null, null, null, false, "鏈湴", 100, 0, 142307070906495L, null, null, null, "鏈湴" },
+                    { 142307070906467L, "1", null, null, null, false, "杩愯", 100, 0, 142307070910533L, null, null, null, "杩愯" },
+                    { 142307070906468L, "2", null, null, null, false, "鍋滄", 100, 0, 142307070910533L, null, null, null, "鍋滄" },
+                    { 142307070906469L, "1", null, null, null, false, "閫氱煡", 100, 0, 142307070910534L, null, null, null, "閫氱煡" },
+                    { 142307070906470L, "2", null, null, null, false, "鍏憡", 100, 0, 142307070910534L, null, null, null, "鍏憡" },
+                    { 142307070906471L, "0", null, null, null, false, "鑽夌", 100, 0, 142307070910535L, null, null, null, "鑽夌" },
+                    { 142307070906472L, "1", null, null, null, false, "鍙戝竷", 100, 0, 142307070910535L, null, null, null, "鍙戝竷" },
+                    { 142307070906473L, "2", null, null, null, false, "鎾ゅ洖", 100, 0, 142307070910535L, null, null, null, "鎾ゅ洖" },
+                    { 142307070906474L, "3", null, null, null, false, "鍒犻櫎", 100, 0, 142307070910535L, null, null, null, "鍒犻櫎" },
+                    { 142307070906475L, "true", null, null, null, false, "鏄�", 100, 0, 142307070910536L, null, null, null, "鏄�" },
+                    { 142307070906476L, "false", null, null, null, false, "鍚�", 100, 0, 142307070910536L, null, null, null, "鍚�" },
+                    { 142307070906477L, "1", null, null, null, false, "涓嬭浇鍘嬬缉鍖�", 100, 0, 142307070910537L, null, null, null, "涓嬭浇鍘嬬缉鍖�" },
+                    { 142307070906478L, "2", null, null, null, false, "鐢熸垚鍒版湰椤圭洰", 100, 0, 142307070910537L, null, null, null, "鐢熸垚鍒版湰椤圭洰" },
+                    { 142307070906479L, "1", null, null, null, false, "GET", 100, 0, 142307070910538L, null, null, null, "GET" },
+                    { 142307070906480L, "2", null, null, null, false, "POST", 100, 0, 142307070910538L, null, null, null, "POST" },
+                    { 142307070906481L, "3", null, null, null, false, "PUT", 100, 0, 142307070910538L, null, null, null, "PUT" },
+                    { 142307070906482L, "4", null, null, null, false, "DELETE", 100, 0, 142307070910538L, null, null, null, "DELETE" },
+                    { 142307070922829L, "fk", null, null, null, false, "澶栭敭", 100, 0, 142307070922827L, null, null, null, "澶栭敭" },
+                    { 142307070922830L, "input", null, null, null, false, "杈撳叆妗�", 100, 0, 142307070922827L, null, null, null, "杈撳叆妗�" },
+                    { 142307070922831L, "datepicker", null, null, null, false, "鏃ユ湡閫夋嫨", 100, 0, 142307070922827L, null, null, null, "鏃ユ湡閫夋嫨" },
+                    { 142307070922832L, "select", null, null, null, false, "涓嬫媺妗�", 100, 0, 142307070922827L, null, null, null, "涓嬫媺妗�" },
+                    { 142307070922833L, "radio", null, null, null, false, "鍗曢�夋", 100, 0, 142307070922827L, null, null, null, "鍗曢�夋" },
+                    { 142307070922834L, "switch", null, null, null, false, "寮�鍏�", 100, 0, 142307070922827L, null, null, null, "寮�鍏�" },
+                    { 142307070922835L, "checkbox", null, null, null, false, "澶氶�夋", 100, 0, 142307070922827L, null, null, null, "澶氶�夋" },
+                    { 142307070922836L, "inputnumber", null, null, null, false, "鏁板瓧杈撳叆妗�", 100, 0, 142307070922827L, null, null, null, "鏁板瓧杈撳叆妗�" },
+                    { 142307070922837L, "textarea", null, null, null, false, "鏂囨湰鍩�", 100, 0, 142307070922827L, null, null, null, "鏂囨湰鍩�" },
+                    { 142307070922838L, "==", null, null, null, false, "绛変簬", 1, 0, 142307070922828L, null, null, null, "绛変簬" },
+                    { 142307070922839L, "like", null, null, null, false, "妯$硦", 2, 0, 142307070922828L, null, null, null, "妯$硦" },
+                    { 142307070922840L, ">", null, null, null, false, "澶т簬", 3, 0, 142307070922828L, null, null, null, "澶т簬" },
+                    { 142307070922841L, "<", null, null, null, false, "灏忎簬", 4, 0, 142307070922828L, null, null, null, "灏忎簬" },
+                    { 142307070922842L, "!=", null, null, null, false, "涓嶇瓑浜�", 5, 0, 142307070922828L, null, null, null, "涓嶇瓑浜�" },
+                    { 142307070922843L, ">=", null, null, null, false, "澶т簬绛変簬", 6, 0, 142307070922828L, null, null, null, "澶т簬绛変簬" },
+                    { 142307070922844L, "<=", null, null, null, false, "灏忎簬绛変簬", 7, 0, 142307070922828L, null, null, null, "灏忎簬绛変簬" },
+                    { 142307070922845L, "isNotNull", null, null, null, false, "涓嶄负绌�", 8, 0, 142307070922828L, null, null, null, "涓嶄负绌�" },
+                    { 142307070922846L, "long", null, null, null, false, "long", 100, 0, 142307070922829L, null, null, null, "long" },
+                    { 142307070922847L, "string", null, null, null, false, "string", 100, 0, 142307070922829L, null, null, null, "string" },
+                    { 142307070922848L, "DateTime", null, null, null, false, "DateTime", 100, 0, 142307070922829L, null, null, null, "DateTime" },
+                    { 142307070922850L, "bool", null, null, null, false, "bool", 100, 0, 142307070922829L, null, null, null, "bool" },
+                    { 142307070922851L, "int", null, null, null, false, "int", 100, 0, 142307070922829L, null, null, null, "int" }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_dict_data",
+                columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Remark", "Sort", "Status", "TypeId", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Value" },
+                values: new object[,]
+                {
+                    { 142307070922852L, "double", null, null, null, false, "double", 100, 0, 142307070922829L, null, null, null, "double" },
+                    { 142307070922861L, "float", null, null, null, false, "float", 100, 0, 142307070922829L, null, null, null, "float" },
+                    { 142307070922862L, "decimal", null, null, null, false, "decimal", 100, 0, 142307070922829L, null, null, null, "decimal" },
+                    { 142307070922863L, "Guid", null, null, null, false, "Guid", 100, 0, 142307070922829L, null, null, null, "Guid" },
+                    { 142307070922864L, "DateTimeOffset", null, null, null, false, "DateTimeOffset", 100, 0, 142307070922829L, null, null, null, "DateTimeOffset" },
+                    { 142307070926943L, "0", null, null, null, false, "闆嗗洟瑙掕壊", 100, 0, 142307070926941L, null, null, null, "闆嗗洟瑙掕壊" },
+                    { 142307070926944L, "1", null, null, null, false, "鍔犵洘鍟嗚鑹�", 100, 0, 142307070926941L, null, null, null, "鍔犵洘鍟嗚鑹�" },
+                    { 142307070926945L, "2", null, null, null, false, "闂ㄥ簵瑙掕壊", 100, 0, 142307070926941L, null, null, null, "闂ㄥ簵瑙掕壊" },
+                    { 142307070926946L, "1", null, null, null, false, "涓�绾�", 100, 0, 142307070926942L, null, null, null, "涓�绾�" },
+                    { 142307070926947L, "2", null, null, null, false, "浜岀骇", 100, 0, 142307070926942L, null, null, null, "浜岀骇" },
+                    { 142307070926948L, "3", null, null, null, false, "涓夌骇", 100, 0, 142307070926942L, null, null, null, "涓夌骇" },
+                    { 142307070926949L, "4", null, null, null, false, "鍥涚骇", 100, 0, 142307070926942L, null, null, null, "鍥涚骇" },
+                    { 285605336563781L, "DefaultFormType", null, null, null, false, "榛樿琛ㄥ崟鍒嗙被", 100, 0, 285605149831237L, null, null, null, "榛樿琛ㄥ崟鍒嗙被" },
+                    { 285641495289925L, "DefaultGroup", null, null, null, false, "榛樿鍒嗙被", 100, 0, 285641358889029L, null, null, null, "榛樿鍒嗙被" },
+                    { 355697634480197L, "0", null, null, null, false, "", 100, 0, 355694205325381L, null, null, null, "鍏朵粬" },
+                    { 355697634480198L, "0", null, null, null, false, "", 100, 0, 355697881423942L, null, null, null, "閫氱敤" },
+                    { 355697676427333L, "1", null, null, null, false, "", 100, 0, 355694205325381L, null, null, null, "鏈ㄨ川" },
+                    { 355697676427399L, "1", null, null, null, false, "", 100, 0, 355697881423942L, null, null, null, "鍗卞寲鍝�" },
+                    { 355697726726200L, "2", null, null, null, false, "", 100, 0, 355697881423942L, null, null, null, "娑蹭綋" },
+                    { 355697726726213L, "2", null, null, null, false, "", 100, 0, 355694205325381L, null, null, null, "閲戝睘" },
+                    { 355697755361301L, "3", null, null, null, false, "", 100, 0, 355697881423942L, null, null, null, "璐甸噸鍝�" },
+                    { 355697755361302L, "4", null, null, null, false, "", 100, 0, 355697881423942L, null, null, null, "姘斾綋" },
+                    { 355697755361303L, "5", null, null, null, false, "", 100, 0, 355697881423942L, null, null, null, "浣庢俯" },
+                    { 355697755361349L, "3", null, null, null, false, "", 100, 0, 355694205325381L, null, null, null, "濉戞枡" },
+                    { 355697944657989L, "0", null, null, null, false, "", 100, 0, 355697881423941L, null, null, null, "绂佺敤" },
+                    { 355697974415429L, "1", null, null, null, false, "", 100, 0, 355697881423941L, null, null, null, "绌洪棽" },
+                    { 355698005966917L, "2", null, null, null, false, "", 100, 0, 355697881423941L, null, null, null, "缁勭洏" },
+                    { 355698032828485L, "3", null, null, null, false, "", 100, 0, 355697881423941L, null, null, null, "搴撲綅" },
+                    { 355698270015557L, "0", null, null, null, false, "", 100, 0, 355698224758853L, null, null, null, "鍏朵粬" },
+                    { 355698303508549L, "1", null, null, null, false, "", 100, 0, 355698224758853L, null, null, null, "绔嬩綋搴�" },
+                    { 355698328531013L, "2", null, null, null, false, "", 100, 0, 355698224758853L, null, null, null, "鏅�氬簱" },
+                    { 355698362712133L, "3", null, null, null, false, "", 100, 0, 355698224758853L, null, null, null, "鍏叡搴�" },
+                    { 355698476777541L, "1", null, null, null, false, "", 100, 0, 355698441912389L, null, null, null, "绌洪棽" },
+                    { 355698510786629L, "2", null, null, null, false, "", 100, 0, 355698441912389L, null, null, null, "寰呭叆" },
+                    { 355698549424197L, "3", null, null, null, false, "", 100, 0, 355698441912389L, null, null, null, "瀛樿揣" },
+                    { 355698576941125L, "4", null, null, null, false, "", 100, 0, 355698441912389L, null, null, null, "寰呭嚭" },
+                    { 355698694561861L, "1", null, null, null, false, "", 100, 0, 355698661130309L, null, null, null, "浣�" },
+                    { 355698716401733L, "2", null, null, null, false, "", 100, 0, 355698661130309L, null, null, null, "涓�" },
+                    { 355698740326469L, "3", null, null, null, false, "", 100, 0, 355698661130309L, null, null, null, "楂�" },
+                    { 355698898735173L, "1", null, null, null, false, "", 100, 0, 355698855280709L, null, null, null, "鍏嶆" },
+                    { 355698924970053L, "2", null, null, null, false, "", 100, 0, 355698855280709L, null, null, null, "鎶芥" },
+                    { 355699041800261L, "1", null, null, null, false, "", 100, 0, 355699003580485L, null, null, null, "鍘熸潗鏂�" }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_dict_data",
+                columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Remark", "Sort", "Status", "TypeId", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Value" },
+                values: new object[,]
+                {
+                    { 355699063255109L, "2", null, null, null, false, "", 100, 0, 355699003580485L, null, null, null, "鍗婃垚鍝�" },
+                    { 355699088330821L, "3", null, null, null, false, "", 100, 0, 355699003580485L, null, null, null, "鎴愬搧" },
+                    { 355699113156677L, "4", null, null, null, false, "", 100, 0, 355699003580485L, null, null, null, "绌烘墭" },
+                    { 355699219353669L, "1", null, null, null, false, "", 100, 0, 355699189051461L, null, null, null, "闀垮害" },
+                    { 355699243540549L, "2", null, null, null, false, "", 100, 0, 355699189051461L, null, null, null, "閲嶉噺" },
+                    { 355699345645637L, "1", null, null, null, false, "", 100, 0, 355699314061381L, null, null, null, "cm" },
+                    { 355699367575621L, "2", null, null, null, false, "", 100, 0, 355699314061381L, null, null, null, "t" },
+                    { 355699479236677L, "1", null, null, null, false, "", 100, 0, 355699447029829L, null, null, null, "鎵嬪姩" },
+                    { 355699505229893L, "2", null, null, null, false, "", 100, 0, 355699447029829L, null, null, null, "鑷姩" },
+                    { 355699615133765L, "1", null, null, null, false, "", 100, 0, 355699576467525L, null, null, null, "鍏ュ簱" },
+                    { 355699638476869L, "2", null, null, null, false, "", 100, 0, 355699576467525L, null, null, null, "鍑哄簱" },
+                    { 355699661889605L, "3", null, null, null, false, "", 100, 0, 355699576467525L, null, null, null, "绉诲簱" },
+                    { 355699760455749L, "1", null, null, null, false, "", 100, 0, 355699731099717L, null, null, null, "鏈墽琛�" },
+                    { 355699760455798L, "1", null, null, null, false, "", 100, 0, 355699731099718L, null, null, null, "鏈墽琛�" },
+                    { 355699784736837L, "2", null, null, null, false, "", 100, 0, 355699731099717L, null, null, null, "鎵ц涓�" },
+                    { 355699784736899L, "2", null, null, null, false, "", 100, 0, 355699731099718L, null, null, null, "鎵ц涓�-AGV" },
+                    { 355699813859300L, "3", null, null, null, false, "", 100, 0, 355699731099718L, null, null, null, "鎵ц涓�-杈撻�佺嚎" },
+                    { 355699813859301L, "4", null, null, null, false, "", 100, 0, 355699731099718L, null, null, null, "鎵ц涓�-鍫嗗灈鏈�" },
+                    { 355699813859302L, "5", null, null, null, false, "", 100, 0, 355699731099718L, null, null, null, "绛夊緟" },
+                    { 355699813859303L, "6", null, null, null, false, "", 100, 0, 355699731099718L, null, null, null, "瀹屾垚" },
+                    { 355699813859397L, "3", null, null, null, false, "", 100, 0, 355699731099717L, null, null, null, "瀹屾垚" },
+                    { 383290784104517L, "1", null, null, null, false, "", 100, 0, 383290718294085L, null, null, null, "娉℃搏鍒囧壊" },
+                    { 383290816860229L, "2", null, null, null, false, "", 100, 0, 383290718294085L, null, null, null, "瑁呴厤杞﹂棿" },
+                    { 383317608218693L, "0", null, null, null, false, "", 100, 0, 383317542490181L, null, null, null, "鏈紑濮�" },
+                    { 383317718302789L, "1", null, null, null, false, "", 100, 0, 383317542490181L, null, null, null, "杩愰�佷腑" },
+                    { 383317751234629L, "2", null, null, null, false, "", 100, 0, 383317542490181L, null, null, null, "瀹屾垚" },
+                    { 384394737053765L, "1", null, null, null, false, "", 100, 0, 384394636988485L, null, null, null, "AGV" },
+                    { 384394851618885L, "2", null, null, null, false, "", 100, 0, 384394636988485L, null, null, null, "鍫嗗灈鏈�" },
+                    { 384394877870149L, "3", null, null, null, false, "", 100, 0, 384394636988485L, null, null, null, "RGV" },
+                    { 385412179521605L, "1", null, null, null, false, "", 100, 0, 385412129075269L, null, null, null, "鍒囧壊" },
+                    { 385412217618501L, "2", null, null, null, false, "", 100, 0, 385412129075269L, null, null, null, "鍘嬪悎" },
+                    { 385412280418373L, "3", null, null, null, false, "", 100, 0, 385412129075269L, null, null, null, "CNC" },
+                    { 386523049214021L, "1", null, null, null, false, "", 100, 0, 386522984120389L, null, null, null, "鍏ュ簱鍙�" },
+                    { 386523049214022L, "1", null, null, null, false, "", 100, 0, 386522984120390L, null, null, null, "鍙戞场涓�绾�" },
+                    { 386523049214025L, "1", null, null, null, false, "", 100, 0, 386522984120391L, null, null, null, "鏈紑濮�" },
+                    { 386523049214029L, "1", null, null, null, false, "", 100, 0, 386522984120392L, null, null, null, "鍏ュ簱" },
+                    { 386523049214033L, "1", null, null, null, false, "", 100, 0, 386522984120393L, null, null, null, "鏈笅鍙�" },
+                    { 386523049214038L, "1", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "浜х嚎閫�搴�" },
+                    { 386523071475723L, "2", null, null, null, false, "", 100, 0, 386522984120390L, null, null, null, "鍙戞场浜岀嚎" },
+                    { 386523071475724L, "3", null, null, null, false, "", 100, 0, 386522984120390L, null, null, null, "鍙戞场涓夌嚎" },
+                    { 386523071475726L, "2", null, null, null, false, "", 100, 0, 386522984120391L, null, null, null, "杩涜涓�" },
+                    { 386523071475727L, "3", null, null, null, false, "", 100, 0, 386522984120391L, null, null, null, "瀹屾垚" }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_dict_data",
+                columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Remark", "Sort", "Status", "TypeId", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Value" },
+                values: new object[,]
+                {
+                    { 386523071475728L, "4", null, null, null, false, "", 100, 0, 386522984120391L, null, null, null, "鎾ゅ洖" },
+                    { 386523071475730L, "2", null, null, null, false, "", 100, 0, 386522984120392L, null, null, null, "鍑哄簱" },
+                    { 386523071475731L, "3", null, null, null, false, "", 100, 0, 386522984120392L, null, null, null, "璋冩嫧" },
+                    { 386523071475732L, "4", null, null, null, false, "", 100, 0, 386522984120392L, null, null, null, "瓒婂簱" },
+                    { 386523071475734L, "2", null, null, null, false, "", 100, 0, 386522984120393L, null, null, null, "宸蹭笅鍙�" },
+                    { 386523071475735L, "3", null, null, null, false, "", 100, 0, 386522984120393L, null, null, null, "鎵ц涓�" },
+                    { 386523071475736L, "4", null, null, null, false, "", 100, 0, 386522984120393L, null, null, null, "瀹屾垚" },
+                    { 386523071475737L, "5", null, null, null, false, "", 100, 0, 386522984120393L, null, null, null, "鎾ゅ洖" },
+                    { 386523071475739L, "2", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "鐢熶骇鍏ュ簱" },
+                    { 386523071475740L, "3", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "浣欐枡鍥炲簱" },
+                    { 386523071475741L, "4", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "閲囪喘鍏ュ簱" },
+                    { 386523071475742L, "5", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "鍏朵粬" },
+                    { 386523071475743L, "6", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "鍙戣揣鍗�" },
+                    { 386523071475744L, "7", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "鐢熶骇棰嗘枡" },
+                    { 386523071475745L, "8", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "閿�鍞嚭搴�" },
+                    { 386523071475746L, "9", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "渚涘簲鍟嗛��搴�" },
+                    { 386523071475747L, "10", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "娉℃搏鍑哄簱" },
+                    { 386523071475748L, "11", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "鍑哄簱鍏朵粬" },
+                    { 386523071475749L, "12", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "浠撳簱璋冩嫧" },
+                    { 386523071475750L, "13", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "搴撳尯璋冩嫧" },
+                    { 386523071475751L, "14", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "搴撲綅璋冩嫧" },
+                    { 386523071475752L, "15", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "椤圭洰璋冩嫧" },
+                    { 386523071475753L, "16", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "璋冩嫧鍏朵粬" },
+                    { 386523071475754L, "1", null, null, null, false, "", 100, 0, 386522984120395L, null, null, null, "涓嶄娇鐢�" },
+                    { 386523071475755L, "2", null, null, null, false, "", 100, 0, 386522984120395L, null, null, null, "鏈鏍�" },
+                    { 386523071475756L, "3", null, null, null, false, "", 100, 0, 386522984120395L, null, null, null, "绛炬牳涓�" },
+                    { 386523071475757L, "4", null, null, null, false, "", 100, 0, 386522984120395L, null, null, null, "宸茬鏍�" },
+                    { 386523071475758L, "datetimepicker", null, null, null, false, "鏃ユ湡鏃堕棿閫夋嫨", 100, 0, 142307070922827L, null, null, null, "鏃ユ湡鏃堕棿閫夋嫨" },
+                    { 386523071475759L, "between", null, null, null, false, "浠嬩簬", 9, 0, 142307070922828L, null, null, null, "浠嬩簬" },
+                    { 386523071475781L, "2", null, null, null, false, "", 100, 0, 386522984120389L, null, null, null, "鍑哄簱鍙�" }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_emp_ext_org_pos",
+                columns: new[] { "SysEmpId", "SysOrgId", "SysPosId" },
+                values: new object[,]
+                {
+                    { 142307070910551L, 142307070910539L, 142307070910547L },
+                    { 142307070910551L, 142307070910540L, 142307070910548L },
+                    { 142307070910551L, 142307070910541L, 142307070910549L },
+                    { 142307070910551L, 142307070910542L, 142307070910550L },
+                    { 142307070910553L, 142307070910542L, 142307070910547L }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_emp_pos",
+                columns: new[] { "SysEmpId", "SysPosId" },
+                values: new object[,]
+                {
+                    { 142307070910551L, 142307070910547L },
+                    { 142307070910551L, 142307070910548L },
+                    { 142307070910552L, 142307070910549L },
+                    { 142307070910553L, 142307070910547L },
+                    { 358533464608837L, 142307070910550L },
+                    { 358536045723717L, 142307070910550L }
+                });
+
+            migrationBuilder.InsertData(
+                table: "sys_user_data_scope",
+                columns: new[] { "SysOrgId", "SysUserId" },
+                values: new object[] { 142307070910540L, 142307070910551L });
+
+            migrationBuilder.InsertData(
+                table: "sys_user_role",
+                columns: new[] { "SysRoleId", "SysUserId" },
+                values: new object[] { 142307070910554L, 142307070910552L });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_les_entrance_AreaId",
+                table: "les_entrance",
+                column: "AreaId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_sys_dict_data_TypeId",
+                table: "sys_dict_data",
+                column: "TypeId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_sys_emp_ext_org_pos_SysOrgId",
+                table: "sys_emp_ext_org_pos",
+                column: "SysOrgId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_sys_emp_ext_org_pos_SysPosId",
+                table: "sys_emp_ext_org_pos",
+                column: "SysPosId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_sys_emp_pos_SysPosId",
+                table: "sys_emp_pos",
+                column: "SysPosId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_sys_low_code_module_database_SysLowCodeId",
+                table: "sys_low_code_module_database",
+                column: "SysLowCodeId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_sys_role_data_scope_SysOrgId",
+                table: "sys_role_data_scope",
+                column: "SysOrgId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_sys_role_menu_SysMenuId",
+                table: "sys_role_menu",
+                column: "SysMenuId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_sys_user_data_scope_SysOrgId",
+                table: "sys_user_data_scope",
+                column: "SysOrgId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_sys_user_role_SysRoleId",
+                table: "sys_user_role",
+                column: "SysRoleId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_wms_dumporder_details_OrderId",
+                table: "wms_dumporder_details",
+                column: "OrderId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_wms_goodsreturnorder_details_OrderId",
+                table: "wms_goodsreturnorder_details",
+                column: "OrderId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_wms_history_materialcontainer_MaterialId",
+                table: "wms_history_materialcontainer",
+                column: "MaterialId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_wms_materialcontainer_MaterialId",
+                table: "wms_materialcontainer",
+                column: "MaterialId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_wms_materialcontainer_WmsContainerId",
+                table: "wms_materialcontainer",
+                column: "WmsContainerId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_wms_order_details_OrderId",
+                table: "wms_order_details",
+                column: "OrderId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_wms_place_AreaId",
+                table: "wms_place",
+                column: "AreaId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_wms_receiptorder_details_OrderId",
+                table: "wms_receiptorder_details",
+                column: "OrderId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_wms_role_pdamenu_PdaMenuId",
+                table: "wms_role_pdamenu",
+                column: "PdaMenuId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_wms_stockreturn_order_details_OrderId",
+                table: "wms_stockreturn_order_details",
+                column: "OrderId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_wms_takematerial_orderdetail_OrderId",
+                table: "wms_takematerial_orderdetail",
+                column: "OrderId");
+        }
+
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "les_agv_task");
+
+            migrationBuilder.DropTable(
+                name: "les_agv_waring");
+
+            migrationBuilder.DropTable(
+                name: "les_devicewaring");
+
+            migrationBuilder.DropTable(
+                name: "les_entrance");
+
+            migrationBuilder.DropTable(
+                name: "les_packwarehouse");
+
+            migrationBuilder.DropTable(
+                name: "les_serial_rule_detail");
+
+            migrationBuilder.DropTable(
+                name: "les_station");
+
+            migrationBuilder.DropTable(
+                name: "sys_app");
+
+            migrationBuilder.DropTable(
+                name: "sys_code_gen");
+
+            migrationBuilder.DropTable(
+                name: "sys_code_gen_config");
+
+            migrationBuilder.DropTable(
+                name: "sys_code_modular");
+
+            migrationBuilder.DropTable(
+                name: "sys_config");
+
+            migrationBuilder.DropTable(
+                name: "sys_dict_data");
+
+            migrationBuilder.DropTable(
+                name: "sys_emp_ext_org_pos");
+
+            migrationBuilder.DropTable(
+                name: "sys_emp_pos");
+
+            migrationBuilder.DropTable(
+                name: "sys_excel_template");
+
+            migrationBuilder.DropTable(
+                name: "sys_file");
+
+            migrationBuilder.DropTable(
+                name: "sys_forms");
+
+            migrationBuilder.DropTable(
+                name: "sys_log_audit");
+
+            migrationBuilder.DropTable(
+                name: "sys_log_ex");
+
+            migrationBuilder.DropTable(
+                name: "sys_log_op");
+
+            migrationBuilder.DropTable(
+                name: "sys_log_vis");
+
+            migrationBuilder.DropTable(
+                name: "sys_low_code_module_database");
+
+            migrationBuilder.DropTable(
+                name: "sys_notice");
+
+            migrationBuilder.DropTable(
+                name: "sys_notice_user");
+
+            migrationBuilder.DropTable(
+                name: "sys_role_data_scope");
+
+            migrationBuilder.DropTable(
+                name: "sys_role_menu");
+
+            migrationBuilder.DropTable(
+                name: "sys_timer");
+
+            migrationBuilder.DropTable(
+                name: "sys_user_data_scope");
+
+            migrationBuilder.DropTable(
+                name: "sys_user_role");
+
+            migrationBuilder.DropTable(
+                name: "test_students");
+
+            migrationBuilder.DropTable(
+                name: "test_students2");
+
+            migrationBuilder.DropTable(
+                name: "test_students3");
+
+            migrationBuilder.DropTable(
+                name: "wms_containerplace");
+
+            migrationBuilder.DropTable(
+                name: "wms_dumporder_details");
+
+            migrationBuilder.DropTable(
+                name: "wms_goodsreturnorder_details");
+
+            migrationBuilder.DropTable(
+                name: "wms_history_materialcontainer");
+
+            migrationBuilder.DropTable(
+                name: "wms_materialcontainer");
+
+            migrationBuilder.DropTable(
+                name: "wms_materialstock");
+
+            migrationBuilder.DropTable(
+                name: "wms_merchantinfo");
+
+            migrationBuilder.DropTable(
+                name: "wms_order_details");
+
+            migrationBuilder.DropTable(
+                name: "wms_order_type");
+
+            migrationBuilder.DropTable(
+                name: "wms_place");
+
+            migrationBuilder.DropTable(
+                name: "wms_receiptorder_details");
+
+            migrationBuilder.DropTable(
+                name: "wms_role_pdamenu");
+
+            migrationBuilder.DropTable(
+                name: "wms_sortorder");
+
+            migrationBuilder.DropTable(
+                name: "wms_stockreturn_order_details");
+
+            migrationBuilder.DropTable(
+                name: "wms_takematerial_orderdetail");
+
+            migrationBuilder.DropTable(
+                name: "wms_task");
+
+            migrationBuilder.DropTable(
+                name: "wms_warehouse_entrance");
+
+            migrationBuilder.DropTable(
+                name: "wms_warehouse_manage");
+
+            migrationBuilder.DropTable(
+                name: "sys_dict_type");
+
+            migrationBuilder.DropTable(
+                name: "sys_emp");
+
+            migrationBuilder.DropTable(
+                name: "sys_pos");
+
+            migrationBuilder.DropTable(
+                name: "sys_low_code_module");
+
+            migrationBuilder.DropTable(
+                name: "sys_menu");
+
+            migrationBuilder.DropTable(
+                name: "sys_org");
+
+            migrationBuilder.DropTable(
+                name: "sys_user");
+
+            migrationBuilder.DropTable(
+                name: "wms_dumporder");
+
+            migrationBuilder.DropTable(
+                name: "wms_goodsreturnorder");
+
+            migrationBuilder.DropTable(
+                name: "wms_container");
+
+            migrationBuilder.DropTable(
+                name: "wms_material");
+
+            migrationBuilder.DropTable(
+                name: "wms_order");
+
+            migrationBuilder.DropTable(
+                name: "wms_area");
+
+            migrationBuilder.DropTable(
+                name: "wms_receiptorder");
+
+            migrationBuilder.DropTable(
+                name: "sys_role");
+
+            migrationBuilder.DropTable(
+                name: "wms_pdapower");
+
+            migrationBuilder.DropTable(
+                name: "wms_stockreturn_order");
+
+            migrationBuilder.DropTable(
+                name: "wms_takematerialorder");
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
new file mode 100644
index 0000000..ed5d221
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
@@ -0,0 +1,13178 @@
+锘�// <auto-generated />
+using System;
+using Admin.NET.EntityFramework.Core;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace Admin.NET.Database.Migrations.Migrations
+{
+    [DbContext(typeof(DefaultDbContext))]
+    partial class DefaultDbContextModelSnapshot : ModelSnapshot
+    {
+        protected override void BuildModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "6.0.9")
+                .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
+
+            modelBuilder.Entity("Admin.NET.Core.AgvTask", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AgvState")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐘舵��");
+
+                    b.Property<string>("ContainerCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹瑰櫒缂栧彿");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("EndName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缁撴潫鍚嶇О");
+
+                    b.Property<string>("EndPlace")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缁撴潫浣嶇疆");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<long>("Pid")
+                        .HasColumnType("bigint")
+                        .HasComment("Agv鐖禝d");
+
+                    b.Property<string>("SourcePlaceName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璧峰搴撲綅鍚嶇О");
+
+                    b.Property<string>("StartName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璧峰鍚嶇О");
+
+                    b.Property<string>("StartPlace")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璧峰浣嶇疆");
+
+                    b.Property<string>("TaskNo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("涓讳换鍔″彿");
+
+                    b.Property<string>("TaskType")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱");
+
+                    b.Property<string>("TransportOrder")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("褰撳墠鎵ц鐨勪换鍔�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("WorkShopType")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炶溅闂�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("les_agv_task");
+
+                    b.HasComment("Agv浠诲姟琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.AgvWaring", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AgvCarCode")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("agv灏忚溅缂栧彿");
+
+                    b.Property<string>("Code")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("鍞竴缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("FaultText")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鏁呴殰鍐呭");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<bool>("IsRead")
+                        .HasColumnType("bit")
+                        .HasComment("WCS鏄惁鍙互璇诲彇");
+
+                    b.Property<DateTimeOffset?>("StartTime")
+                        .HasMaxLength(50)
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏁呴殰鏃堕棿");
+
+                    b.Property<string>("TransportOrder")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("浠诲姟鍙�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("WorkShopType")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炶溅闂�");
+
+                    b.Property<int>("YesOrNot")
+                        .HasMaxLength(50)
+                        .HasColumnType("int")
+                        .HasComment("鏄惁瑙e喅");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("les_agv_waring");
+
+                    b.HasComment("Agv鎶ヨ");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.Entity.VAccessDetails", b =>
+                {
+                    b.Property<string>("Batch")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("ContainerCode")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<string>("Description")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("High")
+                        .HasColumnType("int");
+
+                    b.Property<long?>("Id")
+                        .HasColumnType("bigint");
+
+                    b.Property<int>("Long")
+                        .HasColumnType("int");
+
+                    b.Property<string>("MaterialDensity")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("MaterialNo")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("SourcePlace")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("TaskCreatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<int>("TaskLevel")
+                        .HasColumnType("int");
+
+                    b.Property<int>("TaskModel")
+                        .HasColumnType("int");
+
+                    b.Property<string>("TaskNo")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("TaskStatus")
+                        .HasColumnType("int");
+
+                    b.Property<int>("TaskType")
+                        .HasColumnType("int");
+
+                    b.Property<DateTimeOffset?>("TaskUpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<string>("ToPlace")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset");
+
+                    b.Property<int>("Wide")
+                        .HasColumnType("int");
+
+                    b.ToView("View_AccessDetails");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.Entity.WmsBase.WmsRolePdaMenu", b =>
+                {
+                    b.Property<long>("SysRoleId")
+                        .HasColumnType("bigint")
+                        .HasComment("瑙掕壊Id");
+
+                    b.Property<long>("PdaMenuId")
+                        .HasColumnType("bigint")
+                        .HasComment("鑿滃崟Id");
+
+                    b.HasKey("SysRoleId", "PdaMenuId");
+
+                    b.HasIndex("PdaMenuId");
+
+                    b.ToTable("wms_role_pdamenu");
+
+                    b.HasComment("瑙掕壊鑿滃崟琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.Entity.WmsBase.WmsWarehouseManage", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int")
+                        .HasComment("绫诲瀷");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_warehouse_manage");
+
+                    b.HasComment("搴撳彛琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.LesDeviceWaring", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DeviceName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璁惧鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("EndTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("缁撴潫鏃堕棿");
+
+                    b.Property<string>("FaultName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鏁呴殰鍚嶇О");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("RunningTime")
+                        .HasColumnType("int")
+                        .HasComment("鎸佺画鏃堕棿");
+
+                    b.Property<DateTimeOffset?>("StartTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍙戠敓鏃堕棿");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("WcsId")
+                        .HasColumnType("int")
+                        .HasComment("WcsId");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("les_devicewaring");
+
+                    b.HasComment("璁惧鎶ヨ");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.LesEntrance", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<long>("AreaId")
+                        .HasColumnType("bigint")
+                        .HasComment("搴撳尯Id");
+
+                    b.Property<string>("Code")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撳彛缂栫爜");
+
+                    b.Property<int>("CommenStatus")
+                        .HasColumnType("int")
+                        .HasComment("搴撳彛鐘舵��");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("EntranceType")
+                        .HasColumnType("int")
+                        .HasComment("搴撳彛绫诲瀷");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撳彛鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("AreaId");
+
+                    b.ToTable("les_entrance");
+
+                    b.HasComment("搴撳彛琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.LesPackWarehouse", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("High")
+                        .HasColumnType("int")
+                        .HasComment("楂�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("LesPackState")
+                        .HasColumnType("int")
+                        .HasComment("鎵撳寘鐘舵��");
+
+                    b.Property<int>("Long")
+                        .HasColumnType("int")
+                        .HasComment("闀�");
+
+                    b.Property<string>("MaterialNo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鐮�");
+
+                    b.Property<string>("OrderNo")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍗曟嵁鍙�");
+
+                    b.Property<string>("OutputEntrance")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍑哄簱鍙�");
+
+                    b.Property<string>("PackCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鏍囩鐮�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("Wide")
+                        .HasColumnType("int")
+                        .HasComment("瀹�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("les_packwarehouse");
+
+                    b.HasComment("鎵撳寘琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.LesSerialRuleDetail", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("DecimalType")
+                        .HasColumnType("int")
+                        .HasComment("杩涗綅绫诲瀷");
+
+                    b.Property<string>("Description")
+                        .HasMaxLength(300)
+                        .HasColumnType("nvarchar(300)")
+                        .HasComment("璇存槑");
+
+                    b.Property<int>("GetData")
+                        .HasMaxLength(50)
+                        .HasColumnType("int")
+                        .HasComment("鎾峰彇");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("ItemNo")
+                        .HasColumnType("int")
+                        .HasComment("椤规");
+
+                    b.Property<int>("PadLeft")
+                        .HasColumnType("int")
+                        .HasComment("鑷姩琛ラ浂");
+
+                    b.Property<int>("SearchStart")
+                        .HasColumnType("int")
+                        .HasComment("鎾峰彇鐮佹暟(璧�)");
+
+                    b.Property<int>("SerialCodeFlag")
+                        .HasColumnType("int")
+                        .HasComment("搴忓彿缂栫爜");
+
+                    b.Property<int>("SerialLength")
+                        .HasColumnType("int")
+                        .HasComment("闀垮害");
+
+                    b.Property<string>("SerialType")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴忓彿绫诲埆");
+
+                    b.Property<string>("SerialTypeNo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴忓彿绫诲埆缂栧彿");
+
+                    b.Property<string>("SourceType")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璧勬枡鏉ユ簮");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("UserDefine")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("浣跨敤鑰呰嚜瀹氫箟");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("les_serial_rule_detail");
+
+                    b.HasComment("缂栧彿瑙勫垯");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.LesStation", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("宸ヤ綅缂栫爜");
+
+                    b.Property<string>("ContainerCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("宸ヤ綅鍚嶇О");
+
+                    b.Property<decimal>("PlaceSpec")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("搴撲綅瑙勬牸");
+
+                    b.Property<long>("ProductionlineId")
+                        .HasColumnType("bigint")
+                        .HasComment("浜х嚎Id");
+
+                    b.Property<int>("StataionStatus")
+                        .HasColumnType("int")
+                        .HasComment("杩愯鐘舵��");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("宸ヤ綅鐘舵��");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("les_station");
+
+                    b.HasComment("宸ヤ綅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysApp", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Active")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鏄惁榛樿婵�娲�");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_app");
+
+                    b.HasComment("绯荤粺搴旂敤琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070898245L,
+                            Active = "Y",
+                            Code = "system",
+                            IsDeleted = false,
+                            Name = "寮�鍙戠鐞�",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070902341L,
+                            Active = "N",
+                            Code = "manage",
+                            IsDeleted = false,
+                            Name = "绯荤粺绠$悊",
+                            Sort = 300,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070922869L,
+                            Active = "N",
+                            Code = "busiapp",
+                            IsDeleted = false,
+                            Name = "涓氬姟搴旂敤",
+                            Sort = 400,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355686432948293L,
+                            Active = "N",
+                            Code = "warejob",
+                            IsDeleted = false,
+                            Name = "浠撳簱浣滀笟",
+                            Sort = 500,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355686518018117L,
+                            Active = "N",
+                            Code = "warecount",
+                            IsDeleted = false,
+                            Name = "缁熻鏌ヨ",
+                            Sort = 600,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 383337192390725L,
+                            Active = "N",
+                            Code = "xbjl",
+                            IsDeleted = false,
+                            Name = "绾胯竟鍙枡",
+                            Sort = 550,
+                            Status = 0
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysCodeGen", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AuthorName")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("浣滆�呭鍚�");
+
+                    b.Property<string>("BusName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("涓氬姟鍚�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DatabaseName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏁版嵁搴撳悕");
+
+                    b.Property<string>("FrontProName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍓嶇椤圭洰鍚�");
+
+                    b.Property<string>("GenerateType")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鐢熸垚鏂瑰紡");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<long?>("LowCodeId")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("MenuApplication")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鑿滃崟搴旂敤鍒嗙被");
+
+                    b.Property<long>("MenuPid")
+                        .HasColumnType("bigint")
+                        .HasComment("鑿滃崟缂栫爜");
+
+                    b.Property<string>("ModuleName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("妯″潡璺緞");
+
+                    b.Property<string>("NameSpace")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍛藉悕绌洪棿");
+
+                    b.Property<string>("TableName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏁版嵁搴撹〃鍚�");
+
+                    b.Property<string>("TablePrefix")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鏄惁绉婚櫎琛ㄥ墠缂�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_code_gen");
+
+                    b.HasComment("浠g爜鐢熸垚琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysCodeGenConfig", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<long>("CodeGenId")
+                        .HasColumnType("bigint")
+                        .HasComment("浠g爜鐢熸垚涓昏〃ID");
+
+                    b.Property<string>("ColumnComment")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("瀛楁鎻忚堪");
+
+                    b.Property<string>("ColumnKey")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("涓婚敭");
+
+                    b.Property<string>("ColumnName")
+                        .IsRequired()
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏁版嵁搴撳瓧娈靛悕");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DataType")
+                        .HasMaxLength(128)
+                        .HasColumnType("nvarchar(128)")
+                        .HasComment("鏁版嵁搴撲腑绫诲瀷");
+
+                    b.Property<string>("DictTypeCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀛楀吀Code");
+
+                    b.Property<string>("DtoNetType")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment(".NET鏁版嵁绫诲瀷(鎺ュ彛浼犲叆)");
+
+                    b.Property<string>("EffectType")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("浣滅敤绫诲瀷");
+
+                    b.Property<string>("FkColumnName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("澶栭敭鏄剧ず瀛楁");
+
+                    b.Property<string>("FkColumnNetType")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("澶栭敭鏄剧ず瀛楁.NET绫诲瀷");
+
+                    b.Property<string>("FkEntityName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("澶栭敭瀹炰綋鍚嶇О");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("NetType")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment(".NET鏁版嵁绫诲瀷");
+
+                    b.Property<string>("QueryType")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("鏌ヨ鏂瑰紡");
+
+                    b.Property<string>("QueryWhether")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鏄惁鏄煡璇㈡潯浠�");
+
+                    b.Property<string>("ShowTitleMinWidth")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("椤甸潰鍒楁樉绀烘渶灏忓搴�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("WhetherAddUpdate")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("澧炴敼");
+
+                    b.Property<string>("WhetherCommon")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鏄惁閫氱敤瀛楁");
+
+                    b.Property<string>("WhetherOrderBy")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鍒楄〃鏄惁鎺掑簭");
+
+                    b.Property<string>("WhetherRequired")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鏄惁蹇呭~");
+
+                    b.Property<string>("WhetherRetract")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鍒楄〃鏄惁缂╄繘");
+
+                    b.Property<string>("WhetherTable")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鍒楄〃鏄剧ず");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_code_gen_config");
+
+                    b.HasComment("浠g爜鐢熸垚瀛楁閰嶇疆琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysConfig", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("GroupCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("甯搁噺鎵�灞炲垎绫荤殑缂栫爜");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<string>("SysFlag")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鏄惁鏄郴缁熷弬鏁�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("Value")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("灞炴�у��");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_config");
+
+                    b.HasComment("鍙傛暟閰嶇疆琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070902342L,
+                            Code = "DILON_JWT_SECRET",
+                            GroupCode = "DEFAULT",
+                            IsDeleted = false,
+                            Name = "jwt瀵嗛挜",
+                            Remark = "锛堥噸瑕侊級jwt瀵嗛挜锛岄粯璁や负绌猴紝鑷璁剧疆",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "weiben"
+                        },
+                        new
+                        {
+                            Id = 142307070902343L,
+                            Code = "DILON_DEFAULT_PASSWORD",
+                            GroupCode = "DEFAULT",
+                            IsDeleted = false,
+                            Name = "榛樿瀵嗙爜",
+                            Remark = "榛樿瀵嗙爜",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "123456"
+                        },
+                        new
+                        {
+                            Id = 142307070902344L,
+                            Code = "DILON_TOKEN_EXPIRE",
+                            GroupCode = "DEFAULT",
+                            IsDeleted = false,
+                            Name = "token杩囨湡鏃堕棿",
+                            Remark = "token杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "86400"
+                        },
+                        new
+                        {
+                            Id = 142307070902345L,
+                            Code = "DILON_SESSION_EXPIRE",
+                            GroupCode = "DEFAULT",
+                            IsDeleted = false,
+                            Name = "session浼氳瘽杩囨湡鏃堕棿",
+                            Remark = "session浼氳瘽杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "7200"
+                        },
+                        new
+                        {
+                            Id = 142307070902361L,
+                            Code = "DILON_FILE_UPLOAD_PATH_FOR_WINDOWS",
+                            GroupCode = "FILE_PATH",
+                            IsDeleted = false,
+                            Name = "Win鏈湴涓婁紶鏂囦欢璺緞",
+                            Remark = "Win鏈湴涓婁紶鏂囦欢璺緞",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "D:/tmp"
+                        },
+                        new
+                        {
+                            Id = 142307070902363L,
+                            Code = "DILON_UN_XSS_FILTER_URL",
+                            GroupCode = "DEFAULT",
+                            IsDeleted = false,
+                            Name = "鏀惧紑XSS杩囨护鐨勬帴鍙�",
+                            Remark = "澶氫釜url鍙互鐢ㄨ嫳鏂囬�楀彿闅斿紑",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "/demo/xssfilter,/demo/unxss"
+                        },
+                        new
+                        {
+                            Id = 142307070902364L,
+                            Code = "DILON_ENABLE_SINGLE_LOGIN",
+                            GroupCode = "DEFAULT",
+                            IsDeleted = false,
+                            Name = "鍗曠敤鎴风櫥闄嗙殑寮�鍏�",
+                            Remark = "true-鎵撳紑锛宖alse-鍏抽棴锛屽鏋滀竴涓汉鐧诲綍涓ゆ锛屽氨浼氬皢涓婁竴娆$櫥闄嗘尋涓嬪幓",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "false"
+                        },
+                        new
+                        {
+                            Id = 142307070902365L,
+                            Code = "DILON_CAPTCHA_OPEN",
+                            GroupCode = "DEFAULT",
+                            IsDeleted = false,
+                            Name = "鐧诲綍楠岃瘉鐮佺殑寮�鍏�",
+                            Remark = "true-鎵撳紑锛宖alse-鍏抽棴",
+                            Status = 0,
+                            SysFlag = "Y",
+                            Value = "true"
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysDictData", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<long>("TypeId")
+                        .HasColumnType("bigint")
+                        .HasComment("瀛楀吀绫诲瀷Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("Value")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍊�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("TypeId");
+
+                    b.ToTable("sys_dict_data");
+
+                    b.HasComment("瀛楀吀鍊艰〃");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070902375L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鐢锋��",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906484L,
+                            Value = "鐢�"
+                        },
+                        new
+                        {
+                            Id = 142307070902376L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "濂虫��",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906484L,
+                            Value = "濂�"
+                        },
+                        new
+                        {
+                            Id = 142307070902377L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "鏈煡鎬у埆",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906484L,
+                            Value = "鏈煡"
+                        },
+                        new
+                        {
+                            Id = 142307070902384L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "姝e父",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906483L,
+                            Value = "姝e父"
+                        },
+                        new
+                        {
+                            Id = 142307070902385L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鍋滅敤",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906483L,
+                            Value = "鍋滅敤"
+                        },
+                        new
+                        {
+                            Id = 142307070902386L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鍒犻櫎",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906483L,
+                            Value = "鍒犻櫎"
+                        },
+                        new
+                        {
+                            Id = 142307070902387L,
+                            Code = "N",
+                            IsDeleted = false,
+                            Remark = "鍚�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906486L,
+                            Value = "鍚�"
+                        },
+                        new
+                        {
+                            Id = 142307070902388L,
+                            Code = "Y",
+                            IsDeleted = false,
+                            Remark = "鏄�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906486L,
+                            Value = "鏄�"
+                        },
+                        new
+                        {
+                            Id = 142307070902389L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鐧诲綍",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906487L,
+                            Value = "鐧诲綍"
+                        },
+                        new
+                        {
+                            Id = 142307070902390L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鐧诲嚭",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906487L,
+                            Value = "鐧诲嚭"
+                        },
+                        new
+                        {
+                            Id = 142307070902391L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "鐩綍",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906488L,
+                            Value = "鐩綍"
+                        },
+                        new
+                        {
+                            Id = 142307070902392L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鑿滃崟",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906488L,
+                            Value = "鑿滃崟"
+                        },
+                        new
+                        {
+                            Id = 142307070902393L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鎸夐挳",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906488L,
+                            Value = "鎸夐挳"
+                        },
+                        new
+                        {
+                            Id = 142307070902394L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "鏈彂閫�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906489L,
+                            Value = "鏈彂閫�"
+                        },
+                        new
+                        {
+                            Id = 142307070902395L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鍙戦�佹垚鍔�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906489L,
+                            Value = "鍙戦�佹垚鍔�"
+                        },
+                        new
+                        {
+                            Id = 142307070902396L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鍙戦�佸け璐�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906489L,
+                            Value = "鍙戦�佸け璐�"
+                        },
+                        new
+                        {
+                            Id = 142307070902397L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "澶辨晥",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906489L,
+                            Value = "澶辨晥"
+                        },
+                        new
+                        {
+                            Id = 142307070902398L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "鏃�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906490L,
+                            Value = "鏃�"
+                        },
+                        new
+                        {
+                            Id = 142307070902399L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "缁勪欢",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906490L,
+                            Value = "缁勪欢"
+                        },
+                        new
+                        {
+                            Id = 142307070906437L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鍐呴摼",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906490L,
+                            Value = "鍐呴摼"
+                        },
+                        new
+                        {
+                            Id = 142307070906438L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "澶栭摼",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906490L,
+                            Value = "澶栭摼"
+                        },
+                        new
+                        {
+                            Id = 142307070906439L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "绯荤粺鏉冮噸",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906491L,
+                            Value = "绯荤粺鏉冮噸"
+                        },
+                        new
+                        {
+                            Id = 142307070906440L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "涓氬姟鏉冮噸",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906491L,
+                            Value = "涓氬姟鏉冮噸"
+                        },
+                        new
+                        {
+                            Id = 142307070906441L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鍏ㄩ儴鏁版嵁",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906492L,
+                            Value = "鍏ㄩ儴鏁版嵁"
+                        },
+                        new
+                        {
+                            Id = 142307070906442L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鏈儴闂ㄥ強浠ヤ笅鏁版嵁",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906492L,
+                            Value = "鏈儴闂ㄥ強浠ヤ笅鏁版嵁"
+                        },
+                        new
+                        {
+                            Id = 142307070906443L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "鏈儴闂ㄦ暟鎹�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906492L,
+                            Value = "鏈儴闂ㄦ暟鎹�"
+                        },
+                        new
+                        {
+                            Id = 142307070906444L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "浠呮湰浜烘暟鎹�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906492L,
+                            Value = "浠呮湰浜烘暟鎹�"
+                        },
+                        new
+                        {
+                            Id = 142307070906445L,
+                            Code = "5",
+                            IsDeleted = false,
+                            Remark = "鑷畾涔夋暟鎹�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906492L,
+                            Value = "鑷畾涔夋暟鎹�"
+                        },
+                        new
+                        {
+                            Id = 142307070906449L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "鍏跺畠",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "鍏跺畠"
+                        },
+                        new
+                        {
+                            Id = 142307070906450L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "澧炲姞",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "澧炲姞"
+                        },
+                        new
+                        {
+                            Id = 142307070906451L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鍒犻櫎",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "鍒犻櫎"
+                        },
+                        new
+                        {
+                            Id = 142307070906452L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "缂栬緫",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "缂栬緫"
+                        },
+                        new
+                        {
+                            Id = 142307070906453L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "鏇存柊",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "鏇存柊"
+                        },
+                        new
+                        {
+                            Id = 142307070906454L,
+                            Code = "5",
+                            IsDeleted = false,
+                            Remark = "鏌ヨ",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "鏌ヨ"
+                        },
+                        new
+                        {
+                            Id = 142307070906455L,
+                            Code = "6",
+                            IsDeleted = false,
+                            Remark = "璇︽儏",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "璇︽儏"
+                        },
+                        new
+                        {
+                            Id = 142307070906456L,
+                            Code = "7",
+                            IsDeleted = false,
+                            Remark = "鏍�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "鏍�"
+                        },
+                        new
+                        {
+                            Id = 142307070906457L,
+                            Code = "8",
+                            IsDeleted = false,
+                            Remark = "瀵煎叆",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "瀵煎叆"
+                        },
+                        new
+                        {
+                            Id = 142307070906458L,
+                            Code = "9",
+                            IsDeleted = false,
+                            Remark = "瀵煎嚭",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "瀵煎嚭"
+                        },
+                        new
+                        {
+                            Id = 142307070906459L,
+                            Code = "10",
+                            IsDeleted = false,
+                            Remark = "鎺堟潈",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "鎺堟潈"
+                        },
+                        new
+                        {
+                            Id = 142307070906460L,
+                            Code = "11",
+                            IsDeleted = false,
+                            Remark = "寮洪��",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "寮洪��"
+                        },
+                        new
+                        {
+                            Id = 142307070906461L,
+                            Code = "12",
+                            IsDeleted = false,
+                            Remark = "娓呯┖",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "娓呯┖"
+                        },
+                        new
+                        {
+                            Id = 142307070906462L,
+                            Code = "13",
+                            IsDeleted = false,
+                            Remark = "淇敼鐘舵��",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906494L,
+                            Value = "淇敼鐘舵��"
+                        },
+                        new
+                        {
+                            Id = 142307070906463L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "闃块噷浜�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906495L,
+                            Value = "闃块噷浜�"
+                        },
+                        new
+                        {
+                            Id = 142307070906464L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鑵捐浜�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906495L,
+                            Value = "鑵捐浜�"
+                        },
+                        new
+                        {
+                            Id = 142307070906465L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "minio",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906495L,
+                            Value = "minio"
+                        },
+                        new
+                        {
+                            Id = 142307070906466L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "鏈湴",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070906495L,
+                            Value = "鏈湴"
+                        },
+                        new
+                        {
+                            Id = 142307070906467L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "杩愯",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910533L,
+                            Value = "杩愯"
+                        },
+                        new
+                        {
+                            Id = 142307070906468L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鍋滄",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910533L,
+                            Value = "鍋滄"
+                        },
+                        new
+                        {
+                            Id = 142307070906469L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "閫氱煡",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910534L,
+                            Value = "閫氱煡"
+                        },
+                        new
+                        {
+                            Id = 142307070906470L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鍏憡",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910534L,
+                            Value = "鍏憡"
+                        },
+                        new
+                        {
+                            Id = 142307070906471L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "鑽夌",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910535L,
+                            Value = "鑽夌"
+                        },
+                        new
+                        {
+                            Id = 142307070906472L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鍙戝竷",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910535L,
+                            Value = "鍙戝竷"
+                        },
+                        new
+                        {
+                            Id = 142307070906473L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鎾ゅ洖",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910535L,
+                            Value = "鎾ゅ洖"
+                        },
+                        new
+                        {
+                            Id = 142307070906474L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "鍒犻櫎",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910535L,
+                            Value = "鍒犻櫎"
+                        },
+                        new
+                        {
+                            Id = 142307070906475L,
+                            Code = "true",
+                            IsDeleted = false,
+                            Remark = "鏄�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910536L,
+                            Value = "鏄�"
+                        },
+                        new
+                        {
+                            Id = 142307070906476L,
+                            Code = "false",
+                            IsDeleted = false,
+                            Remark = "鍚�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910536L,
+                            Value = "鍚�"
+                        },
+                        new
+                        {
+                            Id = 142307070906477L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "涓嬭浇鍘嬬缉鍖�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910537L,
+                            Value = "涓嬭浇鍘嬬缉鍖�"
+                        },
+                        new
+                        {
+                            Id = 142307070906478L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "鐢熸垚鍒版湰椤圭洰",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910537L,
+                            Value = "鐢熸垚鍒版湰椤圭洰"
+                        },
+                        new
+                        {
+                            Id = 142307070906479L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "GET",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910538L,
+                            Value = "GET"
+                        },
+                        new
+                        {
+                            Id = 142307070906480L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "POST",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910538L,
+                            Value = "POST"
+                        },
+                        new
+                        {
+                            Id = 142307070906481L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "PUT",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910538L,
+                            Value = "PUT"
+                        },
+                        new
+                        {
+                            Id = 142307070906482L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "DELETE",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070910538L,
+                            Value = "DELETE"
+                        },
+                        new
+                        {
+                            Id = 142307070922829L,
+                            Code = "fk",
+                            IsDeleted = false,
+                            Remark = "澶栭敭",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "澶栭敭"
+                        },
+                        new
+                        {
+                            Id = 142307070922830L,
+                            Code = "input",
+                            IsDeleted = false,
+                            Remark = "杈撳叆妗�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "杈撳叆妗�"
+                        },
+                        new
+                        {
+                            Id = 142307070922831L,
+                            Code = "datepicker",
+                            IsDeleted = false,
+                            Remark = "鏃ユ湡閫夋嫨",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "鏃ユ湡閫夋嫨"
+                        },
+                        new
+                        {
+                            Id = 386523071475758L,
+                            Code = "datetimepicker",
+                            IsDeleted = false,
+                            Remark = "鏃ユ湡鏃堕棿閫夋嫨",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "鏃ユ湡鏃堕棿閫夋嫨"
+                        },
+                        new
+                        {
+                            Id = 142307070922832L,
+                            Code = "select",
+                            IsDeleted = false,
+                            Remark = "涓嬫媺妗�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "涓嬫媺妗�"
+                        },
+                        new
+                        {
+                            Id = 142307070922833L,
+                            Code = "radio",
+                            IsDeleted = false,
+                            Remark = "鍗曢�夋",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "鍗曢�夋"
+                        },
+                        new
+                        {
+                            Id = 142307070922834L,
+                            Code = "switch",
+                            IsDeleted = false,
+                            Remark = "寮�鍏�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "寮�鍏�"
+                        },
+                        new
+                        {
+                            Id = 142307070922835L,
+                            Code = "checkbox",
+                            IsDeleted = false,
+                            Remark = "澶氶�夋",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "澶氶�夋"
+                        },
+                        new
+                        {
+                            Id = 142307070922836L,
+                            Code = "inputnumber",
+                            IsDeleted = false,
+                            Remark = "鏁板瓧杈撳叆妗�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "鏁板瓧杈撳叆妗�"
+                        },
+                        new
+                        {
+                            Id = 142307070922837L,
+                            Code = "textarea",
+                            IsDeleted = false,
+                            Remark = "鏂囨湰鍩�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922827L,
+                            Value = "鏂囨湰鍩�"
+                        },
+                        new
+                        {
+                            Id = 142307070922838L,
+                            Code = "==",
+                            IsDeleted = false,
+                            Remark = "绛変簬",
+                            Sort = 1,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "绛変簬"
+                        },
+                        new
+                        {
+                            Id = 142307070922839L,
+                            Code = "like",
+                            IsDeleted = false,
+                            Remark = "妯$硦",
+                            Sort = 2,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "妯$硦"
+                        },
+                        new
+                        {
+                            Id = 142307070922840L,
+                            Code = ">",
+                            IsDeleted = false,
+                            Remark = "澶т簬",
+                            Sort = 3,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "澶т簬"
+                        },
+                        new
+                        {
+                            Id = 142307070922841L,
+                            Code = "<",
+                            IsDeleted = false,
+                            Remark = "灏忎簬",
+                            Sort = 4,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "灏忎簬"
+                        },
+                        new
+                        {
+                            Id = 142307070922842L,
+                            Code = "!=",
+                            IsDeleted = false,
+                            Remark = "涓嶇瓑浜�",
+                            Sort = 5,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "涓嶇瓑浜�"
+                        },
+                        new
+                        {
+                            Id = 142307070922843L,
+                            Code = ">=",
+                            IsDeleted = false,
+                            Remark = "澶т簬绛変簬",
+                            Sort = 6,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "澶т簬绛変簬"
+                        },
+                        new
+                        {
+                            Id = 142307070922844L,
+                            Code = "<=",
+                            IsDeleted = false,
+                            Remark = "灏忎簬绛変簬",
+                            Sort = 7,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "灏忎簬绛変簬"
+                        },
+                        new
+                        {
+                            Id = 142307070922845L,
+                            Code = "isNotNull",
+                            IsDeleted = false,
+                            Remark = "涓嶄负绌�",
+                            Sort = 8,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "涓嶄负绌�"
+                        },
+                        new
+                        {
+                            Id = 386523071475759L,
+                            Code = "between",
+                            IsDeleted = false,
+                            Remark = "浠嬩簬",
+                            Sort = 9,
+                            Status = 0,
+                            TypeId = 142307070922828L,
+                            Value = "浠嬩簬"
+                        },
+                        new
+                        {
+                            Id = 142307070922851L,
+                            Code = "int",
+                            IsDeleted = false,
+                            Remark = "int",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "int"
+                        },
+                        new
+                        {
+                            Id = 142307070922846L,
+                            Code = "long",
+                            IsDeleted = false,
+                            Remark = "long",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "long"
+                        },
+                        new
+                        {
+                            Id = 142307070922847L,
+                            Code = "string",
+                            IsDeleted = false,
+                            Remark = "string",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "string"
+                        },
+                        new
+                        {
+                            Id = 142307070922850L,
+                            Code = "bool",
+                            IsDeleted = false,
+                            Remark = "bool",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "bool"
+                        },
+                        new
+                        {
+                            Id = 142307070922852L,
+                            Code = "double",
+                            IsDeleted = false,
+                            Remark = "double",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "double"
+                        },
+                        new
+                        {
+                            Id = 142307070922848L,
+                            Code = "DateTime",
+                            IsDeleted = false,
+                            Remark = "DateTime",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "DateTime"
+                        },
+                        new
+                        {
+                            Id = 142307070922861L,
+                            Code = "float",
+                            IsDeleted = false,
+                            Remark = "float",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "float"
+                        },
+                        new
+                        {
+                            Id = 142307070922862L,
+                            Code = "decimal",
+                            IsDeleted = false,
+                            Remark = "decimal",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "decimal"
+                        },
+                        new
+                        {
+                            Id = 142307070922863L,
+                            Code = "Guid",
+                            IsDeleted = false,
+                            Remark = "Guid",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "Guid"
+                        },
+                        new
+                        {
+                            Id = 142307070922864L,
+                            Code = "DateTimeOffset",
+                            IsDeleted = false,
+                            Remark = "DateTimeOffset",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070922829L,
+                            Value = "DateTimeOffset"
+                        },
+                        new
+                        {
+                            Id = 142307070926943L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "闆嗗洟瑙掕壊",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070926941L,
+                            Value = "闆嗗洟瑙掕壊"
+                        },
+                        new
+                        {
+                            Id = 142307070926944L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "鍔犵洘鍟嗚鑹�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070926941L,
+                            Value = "鍔犵洘鍟嗚鑹�"
+                        },
+                        new
+                        {
+                            Id = 142307070926945L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "闂ㄥ簵瑙掕壊",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070926941L,
+                            Value = "闂ㄥ簵瑙掕壊"
+                        },
+                        new
+                        {
+                            Id = 142307070926946L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "涓�绾�",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070926942L,
+                            Value = "涓�绾�"
+                        },
+                        new
+                        {
+                            Id = 142307070926947L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "浜岀骇",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070926942L,
+                            Value = "浜岀骇"
+                        },
+                        new
+                        {
+                            Id = 142307070926948L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "涓夌骇",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070926942L,
+                            Value = "涓夌骇"
+                        },
+                        new
+                        {
+                            Id = 142307070926949L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "鍥涚骇",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 142307070926942L,
+                            Value = "鍥涚骇"
+                        },
+                        new
+                        {
+                            Id = 285605336563781L,
+                            Code = "DefaultFormType",
+                            IsDeleted = false,
+                            Remark = "榛樿琛ㄥ崟鍒嗙被",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 285605149831237L,
+                            Value = "榛樿琛ㄥ崟鍒嗙被"
+                        },
+                        new
+                        {
+                            Id = 285641495289925L,
+                            Code = "DefaultGroup",
+                            IsDeleted = false,
+                            Remark = "榛樿鍒嗙被",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 285641358889029L,
+                            Value = "榛樿鍒嗙被"
+                        },
+                        new
+                        {
+                            Id = 355697634480197L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355694205325381L,
+                            Value = "鍏朵粬"
+                        },
+                        new
+                        {
+                            Id = 355697676427333L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355694205325381L,
+                            Value = "鏈ㄨ川"
+                        },
+                        new
+                        {
+                            Id = 355697726726213L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355694205325381L,
+                            Value = "閲戝睘"
+                        },
+                        new
+                        {
+                            Id = 355697755361349L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355694205325381L,
+                            Value = "濉戞枡"
+                        },
+                        new
+                        {
+                            Id = 355697944657989L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423941L,
+                            Value = "绂佺敤"
+                        },
+                        new
+                        {
+                            Id = 355697974415429L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423941L,
+                            Value = "绌洪棽"
+                        },
+                        new
+                        {
+                            Id = 355698005966917L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423941L,
+                            Value = "缁勭洏"
+                        },
+                        new
+                        {
+                            Id = 355698032828485L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423941L,
+                            Value = "搴撲綅"
+                        },
+                        new
+                        {
+                            Id = 355697634480198L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423942L,
+                            Value = "閫氱敤"
+                        },
+                        new
+                        {
+                            Id = 355697676427399L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423942L,
+                            Value = "鍗卞寲鍝�"
+                        },
+                        new
+                        {
+                            Id = 355697726726200L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423942L,
+                            Value = "娑蹭綋"
+                        },
+                        new
+                        {
+                            Id = 355697755361301L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423942L,
+                            Value = "璐甸噸鍝�"
+                        },
+                        new
+                        {
+                            Id = 355697755361302L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423942L,
+                            Value = "姘斾綋"
+                        },
+                        new
+                        {
+                            Id = 355697755361303L,
+                            Code = "5",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355697881423942L,
+                            Value = "浣庢俯"
+                        },
+                        new
+                        {
+                            Id = 355698270015557L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698224758853L,
+                            Value = "鍏朵粬"
+                        },
+                        new
+                        {
+                            Id = 355698303508549L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698224758853L,
+                            Value = "绔嬩綋搴�"
+                        },
+                        new
+                        {
+                            Id = 355698328531013L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698224758853L,
+                            Value = "鏅�氬簱"
+                        },
+                        new
+                        {
+                            Id = 355698362712133L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698224758853L,
+                            Value = "鍏叡搴�"
+                        },
+                        new
+                        {
+                            Id = 355698476777541L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698441912389L,
+                            Value = "绌洪棽"
+                        },
+                        new
+                        {
+                            Id = 355698510786629L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698441912389L,
+                            Value = "寰呭叆"
+                        },
+                        new
+                        {
+                            Id = 355698549424197L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698441912389L,
+                            Value = "瀛樿揣"
+                        },
+                        new
+                        {
+                            Id = 355698576941125L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698441912389L,
+                            Value = "寰呭嚭"
+                        },
+                        new
+                        {
+                            Id = 355698694561861L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698661130309L,
+                            Value = "浣�"
+                        },
+                        new
+                        {
+                            Id = 355698716401733L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698661130309L,
+                            Value = "涓�"
+                        },
+                        new
+                        {
+                            Id = 355698740326469L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698661130309L,
+                            Value = "楂�"
+                        },
+                        new
+                        {
+                            Id = 355698898735173L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698855280709L,
+                            Value = "鍏嶆"
+                        },
+                        new
+                        {
+                            Id = 355698924970053L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355698855280709L,
+                            Value = "鎶芥"
+                        },
+                        new
+                        {
+                            Id = 355699041800261L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699003580485L,
+                            Value = "鍘熸潗鏂�"
+                        },
+                        new
+                        {
+                            Id = 355699063255109L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699003580485L,
+                            Value = "鍗婃垚鍝�"
+                        },
+                        new
+                        {
+                            Id = 355699088330821L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699003580485L,
+                            Value = "鎴愬搧"
+                        },
+                        new
+                        {
+                            Id = 355699113156677L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699003580485L,
+                            Value = "绌烘墭"
+                        },
+                        new
+                        {
+                            Id = 355699219353669L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699189051461L,
+                            Value = "闀垮害"
+                        },
+                        new
+                        {
+                            Id = 355699243540549L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699189051461L,
+                            Value = "閲嶉噺"
+                        },
+                        new
+                        {
+                            Id = 355699345645637L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699314061381L,
+                            Value = "cm"
+                        },
+                        new
+                        {
+                            Id = 355699367575621L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699314061381L,
+                            Value = "t"
+                        },
+                        new
+                        {
+                            Id = 355699479236677L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699447029829L,
+                            Value = "鎵嬪姩"
+                        },
+                        new
+                        {
+                            Id = 355699505229893L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699447029829L,
+                            Value = "鑷姩"
+                        },
+                        new
+                        {
+                            Id = 355699615133765L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699576467525L,
+                            Value = "鍏ュ簱"
+                        },
+                        new
+                        {
+                            Id = 355699638476869L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699576467525L,
+                            Value = "鍑哄簱"
+                        },
+                        new
+                        {
+                            Id = 355699661889605L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699576467525L,
+                            Value = "绉诲簱"
+                        },
+                        new
+                        {
+                            Id = 355699760455749L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099717L,
+                            Value = "鏈墽琛�"
+                        },
+                        new
+                        {
+                            Id = 355699784736837L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099717L,
+                            Value = "鎵ц涓�"
+                        },
+                        new
+                        {
+                            Id = 355699813859397L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099717L,
+                            Value = "瀹屾垚"
+                        },
+                        new
+                        {
+                            Id = 355699760455798L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099718L,
+                            Value = "鏈墽琛�"
+                        },
+                        new
+                        {
+                            Id = 355699784736899L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099718L,
+                            Value = "鎵ц涓�-AGV"
+                        },
+                        new
+                        {
+                            Id = 355699813859300L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099718L,
+                            Value = "鎵ц涓�-杈撻�佺嚎"
+                        },
+                        new
+                        {
+                            Id = 355699813859301L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099718L,
+                            Value = "鎵ц涓�-鍫嗗灈鏈�"
+                        },
+                        new
+                        {
+                            Id = 355699813859302L,
+                            Code = "5",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099718L,
+                            Value = "绛夊緟"
+                        },
+                        new
+                        {
+                            Id = 355699813859303L,
+                            Code = "6",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 355699731099718L,
+                            Value = "瀹屾垚"
+                        },
+                        new
+                        {
+                            Id = 383290784104517L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 383290718294085L,
+                            Value = "娉℃搏鍒囧壊"
+                        },
+                        new
+                        {
+                            Id = 383290816860229L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 383290718294085L,
+                            Value = "瑁呴厤杞﹂棿"
+                        },
+                        new
+                        {
+                            Id = 383317608218693L,
+                            Code = "0",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 383317542490181L,
+                            Value = "鏈紑濮�"
+                        },
+                        new
+                        {
+                            Id = 383317718302789L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 383317542490181L,
+                            Value = "杩愰�佷腑"
+                        },
+                        new
+                        {
+                            Id = 383317751234629L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 383317542490181L,
+                            Value = "瀹屾垚"
+                        },
+                        new
+                        {
+                            Id = 384394737053765L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 384394636988485L,
+                            Value = "AGV"
+                        },
+                        new
+                        {
+                            Id = 384394851618885L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 384394636988485L,
+                            Value = "鍫嗗灈鏈�"
+                        },
+                        new
+                        {
+                            Id = 384394877870149L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 384394636988485L,
+                            Value = "RGV"
+                        },
+                        new
+                        {
+                            Id = 385412179521605L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 385412129075269L,
+                            Value = "鍒囧壊"
+                        },
+                        new
+                        {
+                            Id = 385412217618501L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 385412129075269L,
+                            Value = "鍘嬪悎"
+                        },
+                        new
+                        {
+                            Id = 385412280418373L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 385412129075269L,
+                            Value = "CNC"
+                        },
+                        new
+                        {
+                            Id = 386523049214021L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120389L,
+                            Value = "鍏ュ簱鍙�"
+                        },
+                        new
+                        {
+                            Id = 386523071475781L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120389L,
+                            Value = "鍑哄簱鍙�"
+                        },
+                        new
+                        {
+                            Id = 386523049214022L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120390L,
+                            Value = "鍙戞场涓�绾�"
+                        },
+                        new
+                        {
+                            Id = 386523071475723L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120390L,
+                            Value = "鍙戞场浜岀嚎"
+                        },
+                        new
+                        {
+                            Id = 386523071475724L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120390L,
+                            Value = "鍙戞场涓夌嚎"
+                        },
+                        new
+                        {
+                            Id = 386523049214025L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120391L,
+                            Value = "鏈紑濮�"
+                        },
+                        new
+                        {
+                            Id = 386523071475726L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120391L,
+                            Value = "杩涜涓�"
+                        },
+                        new
+                        {
+                            Id = 386523071475727L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120391L,
+                            Value = "瀹屾垚"
+                        },
+                        new
+                        {
+                            Id = 386523071475728L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120391L,
+                            Value = "鎾ゅ洖"
+                        },
+                        new
+                        {
+                            Id = 386523049214029L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120392L,
+                            Value = "鍏ュ簱"
+                        },
+                        new
+                        {
+                            Id = 386523071475730L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120392L,
+                            Value = "鍑哄簱"
+                        },
+                        new
+                        {
+                            Id = 386523071475731L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120392L,
+                            Value = "璋冩嫧"
+                        },
+                        new
+                        {
+                            Id = 386523071475732L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120392L,
+                            Value = "瓒婂簱"
+                        },
+                        new
+                        {
+                            Id = 386523049214033L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120393L,
+                            Value = "鏈笅鍙�"
+                        },
+                        new
+                        {
+                            Id = 386523071475734L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120393L,
+                            Value = "宸蹭笅鍙�"
+                        },
+                        new
+                        {
+                            Id = 386523071475735L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120393L,
+                            Value = "鎵ц涓�"
+                        },
+                        new
+                        {
+                            Id = 386523071475736L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120393L,
+                            Value = "瀹屾垚"
+                        },
+                        new
+                        {
+                            Id = 386523071475737L,
+                            Code = "5",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120393L,
+                            Value = "鎾ゅ洖"
+                        },
+                        new
+                        {
+                            Id = 386523049214038L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "浜х嚎閫�搴�"
+                        },
+                        new
+                        {
+                            Id = 386523071475739L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "鐢熶骇鍏ュ簱"
+                        },
+                        new
+                        {
+                            Id = 386523071475740L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "浣欐枡鍥炲簱"
+                        },
+                        new
+                        {
+                            Id = 386523071475741L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "閲囪喘鍏ュ簱"
+                        },
+                        new
+                        {
+                            Id = 386523071475742L,
+                            Code = "5",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "鍏朵粬"
+                        },
+                        new
+                        {
+                            Id = 386523071475743L,
+                            Code = "6",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "鍙戣揣鍗�"
+                        },
+                        new
+                        {
+                            Id = 386523071475744L,
+                            Code = "7",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "鐢熶骇棰嗘枡"
+                        },
+                        new
+                        {
+                            Id = 386523071475745L,
+                            Code = "8",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "閿�鍞嚭搴�"
+                        },
+                        new
+                        {
+                            Id = 386523071475746L,
+                            Code = "9",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "渚涘簲鍟嗛��搴�"
+                        },
+                        new
+                        {
+                            Id = 386523071475747L,
+                            Code = "10",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "娉℃搏鍑哄簱"
+                        },
+                        new
+                        {
+                            Id = 386523071475748L,
+                            Code = "11",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "鍑哄簱鍏朵粬"
+                        },
+                        new
+                        {
+                            Id = 386523071475749L,
+                            Code = "12",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "浠撳簱璋冩嫧"
+                        },
+                        new
+                        {
+                            Id = 386523071475750L,
+                            Code = "13",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "搴撳尯璋冩嫧"
+                        },
+                        new
+                        {
+                            Id = 386523071475751L,
+                            Code = "14",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "搴撲綅璋冩嫧"
+                        },
+                        new
+                        {
+                            Id = 386523071475752L,
+                            Code = "15",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "椤圭洰璋冩嫧"
+                        },
+                        new
+                        {
+                            Id = 386523071475753L,
+                            Code = "16",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120394L,
+                            Value = "璋冩嫧鍏朵粬"
+                        },
+                        new
+                        {
+                            Id = 386523071475754L,
+                            Code = "1",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120395L,
+                            Value = "涓嶄娇鐢�"
+                        },
+                        new
+                        {
+                            Id = 386523071475755L,
+                            Code = "2",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120395L,
+                            Value = "鏈鏍�"
+                        },
+                        new
+                        {
+                            Id = 386523071475756L,
+                            Code = "3",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120395L,
+                            Value = "绛炬牳涓�"
+                        },
+                        new
+                        {
+                            Id = 386523071475757L,
+                            Code = "4",
+                            IsDeleted = false,
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0,
+                            TypeId = 386522984120395L,
+                            Value = "宸茬鏍�"
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysDictType", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("EnumClassName")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("瀵瑰簲鏋氫妇");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_dict_type");
+
+                    b.HasComment("瀛楀吀绫诲瀷琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070906483L,
+                            Code = "common_status",
+                            IsDeleted = false,
+                            Name = "閫氱敤鐘舵��",
+                            Remark = "閫氱敤鐘舵��",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906484L,
+                            Code = "sex",
+                            IsDeleted = false,
+                            Name = "鎬у埆",
+                            Remark = "鎬у埆瀛楀吀",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906485L,
+                            Code = "consts_type",
+                            IsDeleted = false,
+                            Name = "甯搁噺鐨勫垎绫�",
+                            Remark = "甯搁噺鐨勫垎绫伙紝鐢ㄤ簬鍖哄埆涓�缁勯厤缃�",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906486L,
+                            Code = "yes_or_no",
+                            IsDeleted = false,
+                            Name = "鏄惁",
+                            Remark = "鏄惁",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906487L,
+                            Code = "vis_type",
+                            IsDeleted = false,
+                            Name = "璁块棶绫诲瀷",
+                            Remark = "璁块棶绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906488L,
+                            Code = "menu_type",
+                            IsDeleted = false,
+                            Name = "鑿滃崟绫诲瀷",
+                            Remark = "鑿滃崟绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906489L,
+                            Code = "send_type",
+                            IsDeleted = false,
+                            Name = "鍙戦�佺被鍨�",
+                            Remark = "鍙戦�佺被鍨�",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906490L,
+                            Code = "open_type",
+                            IsDeleted = false,
+                            Name = "鎵撳紑鏂瑰紡",
+                            Remark = "鎵撳紑鏂瑰紡",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906491L,
+                            Code = "menu_weight",
+                            IsDeleted = false,
+                            Name = "鑿滃崟鏉冮噸",
+                            Remark = "鑿滃崟鏉冮噸",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906492L,
+                            Code = "data_scope_type",
+                            IsDeleted = false,
+                            Name = "鏁版嵁鑼冨洿绫诲瀷",
+                            Remark = "鏁版嵁鑼冨洿绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906494L,
+                            Code = "op_type",
+                            IsDeleted = false,
+                            Name = "鎿嶄綔绫诲瀷",
+                            Remark = "鎿嶄綔绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070906495L,
+                            Code = "file_storage_location",
+                            IsDeleted = false,
+                            Name = "鏂囦欢瀛樺偍浣嶇疆",
+                            Remark = "鏂囦欢瀛樺偍浣嶇疆",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910533L,
+                            Code = "run_status",
+                            IsDeleted = false,
+                            Name = "杩愯鐘舵��",
+                            Remark = "瀹氭椂浠诲姟杩愯鐘舵��",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910534L,
+                            Code = "notice_type",
+                            IsDeleted = false,
+                            Name = "閫氱煡鍏憡绫诲瀷",
+                            Remark = "閫氱煡鍏憡绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910535L,
+                            Code = "notice_status",
+                            IsDeleted = false,
+                            Name = "閫氱煡鍏憡鐘舵��",
+                            Remark = "閫氱煡鍏憡鐘舵��",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910536L,
+                            Code = "yes_true_false",
+                            IsDeleted = false,
+                            Name = "鏄惁boolean",
+                            Remark = "鏄惁boolean",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910537L,
+                            Code = "code_gen_create_type",
+                            IsDeleted = false,
+                            Name = "浠g爜鐢熸垚鏂瑰紡",
+                            Remark = "浠g爜鐢熸垚鏂瑰紡",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910538L,
+                            Code = "request_type",
+                            IsDeleted = false,
+                            Name = "璇锋眰鏂瑰紡",
+                            Remark = "璇锋眰鏂瑰紡",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070922827L,
+                            Code = "code_gen_effect_type",
+                            IsDeleted = false,
+                            Name = "浠g爜鐢熸垚浣滅敤绫诲瀷",
+                            Remark = "浠g爜鐢熸垚浣滅敤绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070922828L,
+                            Code = "code_gen_query_type",
+                            IsDeleted = false,
+                            Name = "浠g爜鐢熸垚鏌ヨ绫诲瀷",
+                            Remark = "浠g爜鐢熸垚鏌ヨ绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070922829L,
+                            Code = "code_gen_net_type",
+                            IsDeleted = false,
+                            Name = "浠g爜鐢熸垚.NET绫诲瀷",
+                            Remark = "浠g爜鐢熸垚.NET绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070926941L,
+                            Code = "role_type",
+                            IsDeleted = false,
+                            Name = "瑙掕壊绫诲瀷",
+                            Remark = "瑙掕壊绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070926942L,
+                            Code = "org_type",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯绫诲瀷",
+                            Remark = "鏈烘瀯绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 285605149831237L,
+                            Code = "form_type",
+                            IsDeleted = false,
+                            Name = "琛ㄥ崟绫诲瀷",
+                            Remark = "琛ㄥ崟绫诲瀷",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 285641358889029L,
+                            Code = "workflow_group",
+                            IsDeleted = false,
+                            Name = "娴佺▼鍒嗙被",
+                            Remark = "娴佺▼鍒嗙被",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355694205325381L,
+                            Code = "container_type",
+                            IsDeleted = false,
+                            Name = "鎵樼洏绫诲瀷",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355697881423941L,
+                            Code = "container_status",
+                            IsDeleted = false,
+                            Name = "鎵樼洏鐘舵��",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355697881423942L,
+                            Code = "container_category",
+                            IsDeleted = false,
+                            Name = "鎵樼洏鍒嗙被",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355698224758853L,
+                            Code = "area_type",
+                            IsDeleted = false,
+                            Name = "搴撳尯绫诲瀷",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355698441912389L,
+                            Code = "place_status",
+                            IsDeleted = false,
+                            Name = "搴撲綅鐘舵��",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355698661130309L,
+                            Code = "height_level",
+                            IsDeleted = false,
+                            Name = "搴撲綅楂樺害",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355698855280709L,
+                            Code = "material_inspection",
+                            IsDeleted = false,
+                            Name = "鐗╂枡妫�楠�",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355699003580485L,
+                            Code = "material_type",
+                            IsDeleted = false,
+                            Name = "鐗╂枡绫诲埆",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355699189051461L,
+                            Code = "unit_type",
+                            IsDeleted = false,
+                            Name = "鍗曚綅绫诲埆",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355699314061381L,
+                            Code = "unitno_type",
+                            IsDeleted = false,
+                            Name = "鍗曚綅缂栧彿",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355699447029829L,
+                            Code = "task_model",
+                            IsDeleted = false,
+                            Name = "浠诲姟鏂瑰紡",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355699576467525L,
+                            Code = "task_type",
+                            IsDeleted = false,
+                            Name = "浠诲姟绫诲瀷",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355699731099717L,
+                            Code = "task_status",
+                            IsDeleted = false,
+                            Name = "浠诲姟鐘舵��",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 355699731099718L,
+                            Code = "taskdodevice_statusenum",
+                            IsDeleted = false,
+                            Name = "浠诲姟璁惧鐘舵��",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 383290718294085L,
+                            Code = "les_workshop_type",
+                            IsDeleted = false,
+                            Name = "鎵�灞炶溅闂�",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 383317542490181L,
+                            Code = "les_takematerials_status",
+                            IsDeleted = false,
+                            Name = "鍙枡鍗曠姸鎬�",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 384394636988485L,
+                            Code = "dodevice_type",
+                            IsDeleted = false,
+                            Name = "璁惧绫诲瀷",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 385412129075269L,
+                            Code = "lesworkshop_section",
+                            IsDeleted = false,
+                            Name = "宸ユ",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 386522984120389L,
+                            Code = "les_entrance_type",
+                            IsDeleted = false,
+                            Name = "搴撳彛绫诲瀷",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 386522984120390L,
+                            Code = "blankingproductionLine_enum",
+                            IsDeleted = false,
+                            Name = "涓嬫枡浜х嚎",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 386522984120391L,
+                            Code = "orderdetails_statusenum",
+                            IsDeleted = false,
+                            Name = "鍗曟嵁鏄庣粏琛ㄧ姸鎬�",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 386522984120392L,
+                            Code = "orderlargecategory_Enum",
+                            IsDeleted = false,
+                            Name = "鍗曟嵁澶х被",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 386522984120393L,
+                            Code = "order_statusenum",
+                            IsDeleted = false,
+                            Name = "鍗曟嵁涓昏〃鐘舵��",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 386522984120394L,
+                            Code = "ordersubclass_enum",
+                            IsDeleted = false,
+                            Name = "鍗曟嵁灏忕被",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 386522984120395L,
+                            Code = "issue_state",
+                            IsDeleted = false,
+                            Name = "绛炬牳鐘舵��",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysEmp", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("鐢ㄦ埛Id");
+
+                    b.Property<string>("JobNum")
+                        .HasMaxLength(30)
+                        .HasColumnType("nvarchar(30)")
+                        .HasComment("宸ュ彿");
+
+                    b.Property<long>("OrgId")
+                        .HasColumnType("bigint")
+                        .HasComment("鏈烘瀯Id");
+
+                    b.Property<string>("OrgName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鏈烘瀯鍚嶇О");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_emp");
+
+                    b.HasComment("鍛樺伐琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070910551L,
+                            JobNum = "D1001",
+                            OrgId = 142307070910539L,
+                            OrgName = "绉熸埛3鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910552L,
+                            JobNum = "D1002",
+                            OrgId = 142307070910539L,
+                            OrgName = "绉熸埛3鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910553L,
+                            JobNum = "D1003",
+                            OrgId = 142307070910539L,
+                            OrgName = "绉熸埛3鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910554L,
+                            JobNum = "D1001",
+                            OrgId = 142307070910547L,
+                            OrgName = "绉熸埛1鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910555L,
+                            JobNum = "D1002",
+                            OrgId = 142307070910547L,
+                            OrgName = "绉熸埛1鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910556L,
+                            JobNum = "D1003",
+                            OrgId = 142307070910547L,
+                            OrgName = "绉熸埛1鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910557L,
+                            JobNum = "D1001",
+                            OrgId = 142307070910548L,
+                            OrgName = "绉熸埛2鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910558L,
+                            JobNum = "D1002",
+                            OrgId = 142307070910548L,
+                            OrgName = "绉熸埛2鍏徃"
+                        },
+                        new
+                        {
+                            Id = 142307070910559L,
+                            JobNum = "D1003",
+                            OrgId = 142307070910548L,
+                            OrgName = "绉熸埛2鍏徃"
+                        },
+                        new
+                        {
+                            Id = 358533464608837L,
+                            JobNum = "",
+                            OrgId = 142307070910539L,
+                            OrgName = "浼熸湰鑲′唤鏈夐檺鍏徃"
+                        },
+                        new
+                        {
+                            Id = 358536045723717L,
+                            JobNum = "",
+                            OrgId = 142307070910542L,
+                            OrgName = "鐮斿彂閮�"
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysEmpExtOrgPos", b =>
+                {
+                    b.Property<long>("SysEmpId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍛樺伐Id");
+
+                    b.Property<long>("SysOrgId")
+                        .HasColumnType("bigint")
+                        .HasComment("鏈烘瀯Id");
+
+                    b.Property<long>("SysPosId")
+                        .HasColumnType("bigint")
+                        .HasComment("鑱屼綅Id");
+
+                    b.HasKey("SysEmpId", "SysOrgId", "SysPosId");
+
+                    b.HasIndex("SysOrgId");
+
+                    b.HasIndex("SysPosId");
+
+                    b.ToTable("sys_emp_ext_org_pos");
+
+                    b.HasComment("鍛樺伐闄勫睘鏈烘瀯鑱屼綅琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            SysEmpId = 142307070910551L,
+                            SysOrgId = 142307070910539L,
+                            SysPosId = 142307070910547L
+                        },
+                        new
+                        {
+                            SysEmpId = 142307070910551L,
+                            SysOrgId = 142307070910540L,
+                            SysPosId = 142307070910548L
+                        },
+                        new
+                        {
+                            SysEmpId = 142307070910551L,
+                            SysOrgId = 142307070910541L,
+                            SysPosId = 142307070910549L
+                        },
+                        new
+                        {
+                            SysEmpId = 142307070910551L,
+                            SysOrgId = 142307070910542L,
+                            SysPosId = 142307070910550L
+                        },
+                        new
+                        {
+                            SysEmpId = 142307070910553L,
+                            SysOrgId = 142307070910542L,
+                            SysPosId = 142307070910547L
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysEmpPos", b =>
+                {
+                    b.Property<long>("SysEmpId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍛樺伐Id");
+
+                    b.Property<long>("SysPosId")
+                        .HasColumnType("bigint")
+                        .HasComment("鑱屼綅Id");
+
+                    b.HasKey("SysEmpId", "SysPosId");
+
+                    b.HasIndex("SysPosId");
+
+                    b.ToTable("sys_emp_pos");
+
+                    b.HasComment("鍛樺伐鑱屼綅琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            SysEmpId = 142307070910551L,
+                            SysPosId = 142307070910547L
+                        },
+                        new
+                        {
+                            SysEmpId = 142307070910551L,
+                            SysPosId = 142307070910548L
+                        },
+                        new
+                        {
+                            SysEmpId = 142307070910552L,
+                            SysPosId = 142307070910549L
+                        },
+                        new
+                        {
+                            SysEmpId = 142307070910553L,
+                            SysPosId = 142307070910547L
+                        },
+                        new
+                        {
+                            SysEmpId = 358533464608837L,
+                            SysPosId = 142307070910550L
+                        },
+                        new
+                        {
+                            SysEmpId = 358536045723717L,
+                            SysPosId = 142307070910550L
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysExcelTemplate", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AppName")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鎵�灞炲簲鐢�");
+
+                    b.Property<string>("ClassName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("绫诲悕");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("DataStartLine")
+                        .HasColumnType("int")
+                        .HasComment("鏁版嵁寮�濮嬭");
+
+                    b.Property<int>("HeadStartLine")
+                        .HasColumnType("int")
+                        .HasComment("琛ㄥご寮�濮嬭");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("妯℃澘鍚嶇О");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<string>("TemplateFileName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("妯℃澘鏂囦欢鍚嶇О");
+
+                    b.Property<string>("UnionUniqueFields")
+                        .IsRequired()
+                        .HasMaxLength(300)
+                        .HasColumnType("nvarchar(300)")
+                        .HasComment("鍞竴瀛楁闆�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("Version")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鐗堟湰");
+
+                    b.HasKey("Id");
+
+                    b.HasAlternateKey("ClassName", "Version", "AppName");
+
+                    b.ToTable("sys_excel_template");
+
+                    b.HasComment("Excel妯℃澘");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysFile", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("FileBucket")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏂囦欢浠撳簱");
+
+                    b.Property<int>("FileLocation")
+                        .HasColumnType("int")
+                        .HasComment("鏂囦欢瀛樺偍浣嶇疆");
+
+                    b.Property<string>("FileObjectName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("瀛樺偍鍒癰ucket鐨勫悕绉�");
+
+                    b.Property<string>("FileOriginName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏂囦欢鍚嶇О");
+
+                    b.Property<string>("FilePath")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("瀛樺偍璺緞");
+
+                    b.Property<string>("FileSizeInfo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鏂囦欢澶у皬淇℃伅");
+
+                    b.Property<string>("FileSizeKb")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("鏂囦欢澶у皬kb");
+
+                    b.Property<string>("FileSuffix")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鏂囦欢鍚庣紑");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_file");
+
+                    b.HasComment("鏂囦欢淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysForm", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("FormJson")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("form琛ㄥ崟Json");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<bool>("Publish")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍙戝竷");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鏍囬");
+
+                    b.Property<long>("TypeId")
+                        .HasColumnType("bigint")
+                        .HasComment("琛ㄥ崟绫诲瀷ID");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("Version")
+                        .HasColumnType("int")
+                        .HasComment("鐗堟湰");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_forms");
+
+                    b.HasComment("琛ㄥ崟琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysLogAudit", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int");
+
+                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+                    b.Property<string>("ColumnName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒楀悕");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鎿嶄綔鏃堕棿");
+
+                    b.Property<string>("NewValue")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鏂板��");
+
+                    b.Property<string>("OldValue")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鏃у��");
+
+                    b.Property<int>("Operate")
+                        .HasColumnType("int")
+                        .HasComment("鎿嶄綔鏂瑰紡");
+
+                    b.Property<string>("TableName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("琛ㄥ悕");
+
+                    b.Property<long>("UserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鎿嶄綔浜篒d");
+
+                    b.Property<string>("UserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎿嶄綔浜哄悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_log_audit");
+
+                    b.HasComment("瀹¤鏃ュ織琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysLogEx", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int");
+
+                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+                    b.Property<string>("Account")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎿嶄綔浜�");
+
+                    b.Property<string>("ClassName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("绫诲悕");
+
+                    b.Property<string>("ExceptionMsg")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("寮傚父淇℃伅");
+
+                    b.Property<string>("ExceptionName")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("寮傚父鍚嶇О");
+
+                    b.Property<string>("ExceptionSource")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("寮傚父婧�");
+
+                    b.Property<DateTimeOffset?>("ExceptionTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("寮傚父鏃堕棿");
+
+                    b.Property<string>("MethodName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏂规硶鍚�");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("ParamsObj")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍙傛暟瀵硅薄");
+
+                    b.Property<string>("StackTrace")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍫嗘爤淇℃伅");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_log_ex");
+
+                    b.HasComment("寮傚父鏃ュ織琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysLogOp", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int");
+
+                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+                    b.Property<string>("Account")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎿嶄綔浜�");
+
+                    b.Property<string>("Browser")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("娴忚鍣�");
+
+                    b.Property<string>("ClassName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("绫诲悕绉�");
+
+                    b.Property<long>("ElapsedTime")
+                        .HasColumnType("bigint")
+                        .HasComment("鑰楁椂");
+
+                    b.Property<string>("Ip")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("IP");
+
+                    b.Property<string>("Location")
+                        .HasMaxLength(1024)
+                        .HasColumnType("nvarchar(1024)")
+                        .HasComment("鍦板潃");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍏蜂綋娑堟伅");
+
+                    b.Property<string>("MethodName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏂规硶鍚嶇О");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("OpTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鎿嶄綔鏃堕棿");
+
+                    b.Property<string>("Os")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鎿嶄綔绯荤粺");
+
+                    b.Property<string>("Param")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璇锋眰鍙傛暟");
+
+                    b.Property<string>("ReqMethod")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("璇锋眰鏂瑰紡");
+
+                    b.Property<string>("Result")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("杩斿洖缁撴灉");
+
+                    b.Property<int>("Success")
+                        .HasColumnType("int")
+                        .HasComment("鏄惁鎵ц鎴愬姛");
+
+                    b.Property<string>("Url")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("璇锋眰鍦板潃");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_log_op");
+
+                    b.HasComment("鎿嶄綔鏃ュ織琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysLogVis", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("int");
+
+                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+                    b.Property<string>("Account")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璁块棶浜�");
+
+                    b.Property<string>("Browser")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("娴忚鍣�");
+
+                    b.Property<string>("Ip")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("IP");
+
+                    b.Property<string>("Location")
+                        .HasMaxLength(1024)
+                        .HasColumnType("nvarchar(1024)")
+                        .HasComment("鍦板潃");
+
+                    b.Property<string>("Message")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍏蜂綋娑堟伅");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("Os")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鎿嶄綔绯荤粺");
+
+                    b.Property<int>("Success")
+                        .HasColumnType("int")
+                        .HasComment("鏄惁鎵ц鎴愬姛");
+
+                    b.Property<DateTimeOffset?>("VisTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("璁块棶鏃堕棿");
+
+                    b.Property<int>("VisType")
+                        .HasColumnType("int")
+                        .HasComment("璁块棶绫诲瀷");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_log_vis");
+
+                    b.HasComment("璁块棶鏃ュ織琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysMenu", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Application")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴旂敤鍒嗙被");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<string>("Component")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("缁勪欢鍦板潃");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("Icon")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鍥炬爣");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Link")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍐呴摼鍦板潃");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<int>("OpenType")
+                        .HasColumnType("int")
+                        .HasComment("鎵撳紑鏂瑰紡");
+
+                    b.Property<string>("Permission")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏉冮檺鏍囪瘑");
+
+                    b.Property<long>("Pid")
+                        .HasColumnType("bigint")
+                        .HasComment("鐖禝d");
+
+                    b.Property<string>("Pids")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鐖禝ds");
+
+                    b.Property<string>("Redirect")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("閲嶅畾鍚戝湴鍧�");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<string>("Router")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("璺敱鍦板潃");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int")
+                        .HasComment("鑿滃崟绫诲瀷");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("Visible")
+                        .HasMaxLength(5)
+                        .HasColumnType("nvarchar(5)")
+                        .HasComment("鏄惁鍙");
+
+                    b.Property<int>("Weight")
+                        .HasColumnType("int")
+                        .HasComment("鏉冮噸");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_menu");
+
+                    b.HasComment("鑿滃崟琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307000914633L,
+                            Application = "manage",
+                            Code = "sys_mgr",
+                            Component = "PageView",
+                            Icon = "team",
+                            IsDeleted = false,
+                            Name = "缁勭粐鏋舵瀯",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/sys",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910581L,
+                            Application = "manage",
+                            Code = "sys_org_mgr",
+                            Component = "system/org/index",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯绠$悊",
+                            OpenType = 1,
+                            Pid = 142307000914633L,
+                            Pids = "[0],[142307000914633],",
+                            Router = "/org",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910582L,
+                            Application = "manage",
+                            Code = "sys_org_mgr_page",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysOrg:page",
+                            Pid = 142307070910581L,
+                            Pids = "[0],[142307000914633],[142307070910581],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910583L,
+                            Application = "manage",
+                            Code = "sys_org_mgr_list",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysOrg:list",
+                            Pid = 142307070910581L,
+                            Pids = "[0],[142307000914633],[142307070910581],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910584L,
+                            Application = "manage",
+                            Code = "sys_org_mgr_add",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysOrg:add",
+                            Pid = 142307070910581L,
+                            Pids = "[0],[142307000914633],[142307070910581],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910585L,
+                            Application = "manage",
+                            Code = "sys_org_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysOrg:edit",
+                            Pid = 142307070910581L,
+                            Pids = "[0],[142307000914633],[142307070910581],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910586L,
+                            Application = "manage",
+                            Code = "sys_org_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysOrg:delete",
+                            Pid = 142307070910581L,
+                            Pids = "[0],[142307000914633],[142307070910581],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910587L,
+                            Application = "manage",
+                            Code = "sys_org_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysOrg:detail",
+                            Pid = 142307070910581L,
+                            Pids = "[0],[142307000914633],[142307070910581],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910588L,
+                            Application = "manage",
+                            Code = "sys_org_mgr_tree",
+                            IsDeleted = false,
+                            Name = "鏈烘瀯鏍�",
+                            OpenType = 0,
+                            Permission = "sysOrg:tree",
+                            Pid = 142307070910581L,
+                            Pids = "[0],[142307000914633],[142307070910581],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910589L,
+                            Application = "manage",
+                            Code = "sys_pos_mgr",
+                            Component = "system/pos/index",
+                            IsDeleted = false,
+                            Name = "鑱屼綅绠$悊",
+                            OpenType = 1,
+                            Pid = 142307000914633L,
+                            Pids = "[0],[142307000914633],",
+                            Router = "/pos",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910590L,
+                            Application = "manage",
+                            Code = "sys_pos_mgr_page",
+                            IsDeleted = false,
+                            Name = "鑱屼綅鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysPos:page",
+                            Pid = 142307070910589L,
+                            Pids = "[0],[142307000914633],[142307070910589],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910591L,
+                            Application = "manage",
+                            Code = "sys_pos_mgr_list",
+                            IsDeleted = false,
+                            Name = "鑱屼綅鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysPos:list",
+                            Pid = 142307070910589L,
+                            Pids = "[0],[142307000914633],[142307070910589],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914629L,
+                            Application = "manage",
+                            Code = "sys_pos_mgr_add",
+                            IsDeleted = false,
+                            Name = "鑱屼綅澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysPos:add",
+                            Pid = 142307070910589L,
+                            Pids = "[0],[142307000914633],[142307070910589],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914630L,
+                            Application = "manage",
+                            Code = "sys_pos_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鑱屼綅缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysPos:edit",
+                            Pid = 142307070910589L,
+                            Pids = "[0],[142307000914633],[142307070910589],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914631L,
+                            Application = "manage",
+                            Code = "sys_pos_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鑱屼綅鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysPos:delete",
+                            Pid = 142307070910589L,
+                            Pids = "[0],[142307000914633],[142307070910589],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914632L,
+                            Application = "manage",
+                            Code = "sys_pos_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鑱屼綅璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysPos:detail",
+                            Pid = 142307070910589L,
+                            Pids = "[0],[142307000914633],[142307070910589],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910563L,
+                            Application = "manage",
+                            Code = "auth_manager",
+                            Component = "PageView",
+                            Icon = "safety-certificate",
+                            IsDeleted = false,
+                            Name = "鏉冮檺绠$悊",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/auth",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910564L,
+                            Application = "manage",
+                            Code = "sys_user_mgr",
+                            Component = "system/user/index",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛绠$悊",
+                            OpenType = 1,
+                            Pid = 142307070910563L,
+                            Pids = "[0],[142307070910563],",
+                            Router = "/mgr_user",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910565L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_page",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysUser:page",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910566L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysUser:edit",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910567L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_add",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysUser:add",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910568L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysUser:delete",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910569L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysUser:detail",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910570L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_export",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛瀵煎嚭",
+                            OpenType = 0,
+                            Permission = "sysUser:export",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910571L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_selector",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛閫夋嫨鍣�",
+                            OpenType = 0,
+                            Permission = "sysUser:selector",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910572L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_grant_role",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鎺堟潈瑙掕壊",
+                            OpenType = 0,
+                            Permission = "sysUser:grantRole",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910573L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_own_role",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鎷ユ湁瑙掕壊",
+                            OpenType = 0,
+                            Permission = "sysUser:ownRole",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910574L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_grant_data",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鎺堟潈鏁版嵁",
+                            OpenType = 0,
+                            Permission = "sysUser:grantData",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910575L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_own_data",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鎷ユ湁鏁版嵁",
+                            OpenType = 0,
+                            Permission = "sysUser:ownData",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910576L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_update_info",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鏇存柊淇℃伅",
+                            OpenType = 0,
+                            Permission = "sysUser:updateInfo",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910577L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_update_pwd",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛淇敼瀵嗙爜",
+                            OpenType = 0,
+                            Permission = "sysUser:updatePwd",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910578L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_change_status",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛淇敼鐘舵��",
+                            OpenType = 0,
+                            Permission = "sysUser:changeStatus",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910579L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_update_avatar",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛淇敼澶村儚",
+                            OpenType = 0,
+                            Permission = "sysUser:updateAvatar",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070910580L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_reset_pwd",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛閲嶇疆瀵嗙爜",
+                            OpenType = 0,
+                            Permission = "sysUser:resetPwd",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918777L,
+                            Application = "manage",
+                            Code = "sys_user_mgr_login",
+                            IsDeleted = false,
+                            Name = "鐢ㄦ埛鐧诲綍淇℃伅",
+                            OpenType = 0,
+                            Permission = "getLoginUser",
+                            Pid = 142307070910564L,
+                            Pids = "[0],[142307070910563],[142307070910564],",
+                            Sort = 100,
+                            Status = 1,
+                            Type = 2,
+                            Visible = "N",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914651L,
+                            Application = "manage",
+                            Code = "sys_role_mgr",
+                            Component = "system/role/index",
+                            IsDeleted = false,
+                            Name = "瑙掕壊绠$悊",
+                            OpenType = 1,
+                            Pid = 142307070910563L,
+                            Pids = "[0],[142307070910563],",
+                            Router = "/role",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914652L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_page",
+                            IsDeleted = false,
+                            Name = "瑙掕壊鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysRole:page",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914653L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_add",
+                            IsDeleted = false,
+                            Name = "瑙掕壊澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysRole:add",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914654L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_edit",
+                            IsDeleted = false,
+                            Name = "瑙掕壊缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysRole:edit",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914655L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_delete",
+                            IsDeleted = false,
+                            Name = "瑙掕壊鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysRole:delete",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914656L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_detail",
+                            IsDeleted = false,
+                            Name = "瑙掕壊璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysRole:detail",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914657L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_drop_down",
+                            IsDeleted = false,
+                            Name = "瑙掕壊涓嬫媺",
+                            OpenType = 0,
+                            Permission = "sysRole:dropDown",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914658L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_grant_menu",
+                            IsDeleted = false,
+                            Name = "瑙掕壊鎺堟潈鑿滃崟",
+                            OpenType = 0,
+                            Permission = "sysRole:grantMenu",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914659L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_own_menu",
+                            IsDeleted = false,
+                            Name = "瑙掕壊鎷ユ湁鑿滃崟",
+                            OpenType = 0,
+                            Permission = "sysRole:ownMenu",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914660L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_grant_data",
+                            IsDeleted = false,
+                            Name = "瑙掕壊鎺堟潈鏁版嵁",
+                            OpenType = 0,
+                            Permission = "sysRole:grantData",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914661L,
+                            Application = "manage",
+                            Code = "sys_role_mgr_own_data",
+                            IsDeleted = false,
+                            Name = "瑙掕壊鎷ユ湁鏁版嵁",
+                            OpenType = 0,
+                            Permission = "sysRole:ownData",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914648L,
+                            Application = "manage",
+                            Code = "sys_menu_mgr_grant_tree",
+                            IsDeleted = false,
+                            Name = "鑿滃崟鎺堟潈鏍�",
+                            OpenType = 0,
+                            Permission = "sysMenu:treeForGrant",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914649L,
+                            Application = "manage",
+                            Code = "sys_menu_mgr_tree",
+                            IsDeleted = false,
+                            Name = "鑿滃崟鏍�",
+                            OpenType = 0,
+                            Permission = "sysMenu:tree",
+                            Pid = 142307070914651L,
+                            Pids = "[0],[142307070910563],[142307070914651],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914633L,
+                            Application = "system",
+                            Code = "sys_platform",
+                            Component = "PageView",
+                            Icon = "safety-certificate",
+                            IsDeleted = false,
+                            Name = "骞冲彴绠$悊",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/platform",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914634L,
+                            Application = "system",
+                            Code = "sys_app_mgr",
+                            Component = "system/app/index",
+                            IsDeleted = false,
+                            Name = "搴旂敤绠$悊",
+                            OpenType = 1,
+                            Pid = 142307070914633L,
+                            Pids = "[0],[142307070914633],",
+                            Router = "/app",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914635L,
+                            Application = "system",
+                            Code = "sys_app_mgr_page",
+                            IsDeleted = false,
+                            Name = "搴旂敤鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysApp:page",
+                            Pid = 142307070914634L,
+                            Pids = "[0],[142307070914633],[142307070914634],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914636L,
+                            Application = "system",
+                            Code = "sys_app_mgr_list",
+                            IsDeleted = false,
+                            Name = "搴旂敤鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysApp:list",
+                            Pid = 142307070914634L,
+                            Pids = "[0],[142307070914633],[142307070914634],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914637L,
+                            Application = "system",
+                            Code = "sys_app_mgr_add",
+                            IsDeleted = false,
+                            Name = "搴旂敤澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysApp:add",
+                            Pid = 142307070914634L,
+                            Pids = "[0],[142307070914633],[142307070914634],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914638L,
+                            Application = "system",
+                            Code = "sys_app_mgr_edit",
+                            IsDeleted = false,
+                            Name = "搴旂敤缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysApp:edit",
+                            Pid = 142307070914634L,
+                            Pids = "[0],[142307070914633],[142307070914634],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914639L,
+                            Application = "system",
+                            Code = "sys_app_mgr_delete",
+                            IsDeleted = false,
+                            Name = "搴旂敤鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysApp:delete",
+                            Pid = 142307070914634L,
+                            Pids = "[0],[142307070914633],[142307070914634],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914640L,
+                            Application = "system",
+                            Code = "sys_app_mgr_detail",
+                            IsDeleted = false,
+                            Name = "搴旂敤璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysApp:detail",
+                            Pid = 142307070914634L,
+                            Pids = "[0],[142307070914633],[142307070914634],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914641L,
+                            Application = "system",
+                            Code = "sys_app_mgr_set_as_default",
+                            IsDeleted = false,
+                            Name = "璁句负榛樿搴旂敤",
+                            OpenType = 0,
+                            Permission = "sysApp:setAsDefault",
+                            Pid = 142307070914634L,
+                            Pids = "[0],[142307070914633],[142307070914634],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914642L,
+                            Application = "system",
+                            Code = "sys_menu_mgr",
+                            Component = "system/menu/index",
+                            IsDeleted = false,
+                            Name = "鑿滃崟绠$悊",
+                            OpenType = 1,
+                            Pid = 142307070914633L,
+                            Pids = "[0],[142307070914633],",
+                            Router = "/menu",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914643L,
+                            Application = "system",
+                            Code = "sys_menu_mgr_list",
+                            IsDeleted = false,
+                            Name = "鑿滃崟鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysMenu:list",
+                            Pid = 142307070914642L,
+                            Pids = "[0],[142307070914633],[142307070914642],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914644L,
+                            Application = "system",
+                            Code = "sys_menu_mgr_add",
+                            IsDeleted = false,
+                            Name = "鑿滃崟澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysMenu:add",
+                            Pid = 142307070914642L,
+                            Pids = "[0],[142307070914633],[142307070914642],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914645L,
+                            Application = "system",
+                            Code = "sys_menu_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鑿滃崟缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysMenu:edit",
+                            Pid = 142307070914642L,
+                            Pids = "[0],[142307070914633],[142307070914642],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914646L,
+                            Application = "system",
+                            Code = "sys_menu_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鑿滃崟鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysMenu:delete",
+                            Pid = 142307070914642L,
+                            Pids = "[0],[142307070914633],[142307070914642],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914647L,
+                            Application = "system",
+                            Code = "sys_menu_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鑿滃崟璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysMenu:detail",
+                            Pid = 142307070914642L,
+                            Pids = "[0],[142307070914633],[142307070914642],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914650L,
+                            Application = "system",
+                            Code = "sys_menu_mgr_change",
+                            IsDeleted = false,
+                            Name = "鑿滃崟鍒囨崲",
+                            OpenType = 0,
+                            Permission = "sysMenu:change",
+                            Pid = 142307070914642L,
+                            Pids = "[0],[142307070914633],[142307070914642],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 494834310545477L,
+                            Application = "system",
+                            Code = "sys_wmspdapower_mgr",
+                            Component = "main/WmsPdaPower/index",
+                            IsDeleted = false,
+                            Name = "Pda鑿滃崟",
+                            OpenType = 1,
+                            Pid = 142307070914633L,
+                            Pids = "[0],[142307070914633],",
+                            Router = "/WmsPdaPower",
+                            Sort = 101,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914662L,
+                            Application = "system",
+                            Code = "system_tools",
+                            Component = "PageView",
+                            Icon = "euro",
+                            IsDeleted = false,
+                            Name = "寮�鍙戠鐞�",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/tools",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914663L,
+                            Application = "system",
+                            Code = "system_tools_config",
+                            Component = "system/config/index",
+                            IsDeleted = false,
+                            Name = "绯荤粺閰嶇疆",
+                            OpenType = 1,
+                            Pid = 142307070914662L,
+                            Pids = "[0],[142307070914662],",
+                            Router = "/config",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914664L,
+                            Application = "system",
+                            Code = "system_tools_config_page",
+                            IsDeleted = false,
+                            Name = "閰嶇疆鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysConfig:page",
+                            Pid = 142307070914663L,
+                            Pids = "[0],[142307070914662],[142307070914663],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914665L,
+                            Application = "system",
+                            Code = "system_tools_config_list",
+                            IsDeleted = false,
+                            Name = "閰嶇疆鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysConfig:list",
+                            Pid = 142307070914663L,
+                            Pids = "[0],[142307070914662],[142307070914663],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914666L,
+                            Application = "system",
+                            Code = "system_tools_config_add",
+                            IsDeleted = false,
+                            Name = "閰嶇疆澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysConfig:add",
+                            Pid = 142307070914663L,
+                            Pids = "[0],[142307070914662],[142307070914663],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914667L,
+                            Application = "system",
+                            Code = "system_tools_config_edit",
+                            IsDeleted = false,
+                            Name = "閰嶇疆缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysConfig:edit",
+                            Pid = 142307070914663L,
+                            Pids = "[0],[142307070914662],[142307070914663],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914668L,
+                            Application = "system",
+                            Code = "system_tools_config_delete",
+                            IsDeleted = false,
+                            Name = "閰嶇疆鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysConfig:delete",
+                            Pid = 142307070914663L,
+                            Pids = "[0],[142307070914662],[142307070914663],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914669L,
+                            Application = "system",
+                            Code = "system_tools_config_detail",
+                            IsDeleted = false,
+                            Name = "閰嶇疆璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysConfig:detail",
+                            Pid = 142307070914663L,
+                            Pids = "[0],[142307070914662],[142307070914663],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914678L,
+                            Application = "system",
+                            Code = "sys_dict_mgr",
+                            Component = "system/dict/index",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绠$悊",
+                            OpenType = 1,
+                            Pid = 142307070914662L,
+                            Pids = "[0],[142307070914662],",
+                            Router = "/dict",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914679L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_page",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysDictType:page",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914680L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_list",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysDictType:list",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914681L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_add",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysDictType:add",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914682L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_delete",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysDictType:delete",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914683L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_edit",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysDictType:edit",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914684L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_detail",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysDictType:detail",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914685L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_drop_down",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷涓嬫媺",
+                            OpenType = 0,
+                            Permission = "sysDictType:dropDown",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914686L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_type_change_status",
+                            IsDeleted = false,
+                            Name = "瀛楀吀绫诲瀷淇敼鐘舵��",
+                            OpenType = 0,
+                            Permission = "sysDictType:changeStatus",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070914687L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_page",
+                            IsDeleted = false,
+                            Name = "瀛楀吀鍊兼煡璇�",
+                            OpenType = 0,
+                            Permission = "sysDictData:page",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918725L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_list",
+                            IsDeleted = false,
+                            Name = "瀛楀吀鍊煎垪琛�",
+                            OpenType = 0,
+                            Permission = "sysDictData:list",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918726L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_add",
+                            IsDeleted = false,
+                            Name = "瀛楀吀鍊煎鍔�",
+                            OpenType = 0,
+                            Permission = "sysDictData:add",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918727L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_delete",
+                            IsDeleted = false,
+                            Name = "瀛楀吀鍊煎垹闄�",
+                            OpenType = 0,
+                            Permission = "sysDictData:delete",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918728L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_edit",
+                            IsDeleted = false,
+                            Name = "瀛楀吀鍊肩紪杈�",
+                            OpenType = 0,
+                            Permission = "sysDictData:edit",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918729L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_detail",
+                            IsDeleted = false,
+                            Name = "瀛楀吀鍊艰鎯�",
+                            OpenType = 0,
+                            Permission = "sysDictData:detail",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918730L,
+                            Application = "system",
+                            Code = "sys_dict_mgr_dict_change_status",
+                            IsDeleted = false,
+                            Name = "瀛楀吀鍊间慨鏀圭姸鎬�",
+                            OpenType = 0,
+                            Permission = "sysDictData:changeStatus",
+                            Pid = 142307070914678L,
+                            Pids = "[0],[142307070914662],[142307070914678],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918731L,
+                            Application = "system",
+                            Code = "sys_swagger_mgr",
+                            Component = "Iframe",
+                            IsDeleted = false,
+                            Link = "http://localhost:6677/swagger/",
+                            Name = "鎺ュ彛鏂囨。",
+                            OpenType = 2,
+                            Pid = 142307070914662L,
+                            Pids = "[0],[142307070914662],",
+                            Router = "/swagger",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918732L,
+                            Application = "manage",
+                            Code = "sys_log_mgr",
+                            Component = "PageView",
+                            Icon = "read",
+                            IsDeleted = false,
+                            Name = "鏃ュ織绠$悊",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/log",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918733L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_vis_log",
+                            Component = "system/log/vislog/index",
+                            IsDeleted = false,
+                            Name = "璁块棶鏃ュ織",
+                            OpenType = 1,
+                            Pid = 142307070918732L,
+                            Pids = "[0],[142307070918732],",
+                            Router = "/vislog",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918734L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_vis_log_page",
+                            IsDeleted = false,
+                            Name = "璁块棶鏃ュ織鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysVisLog:page",
+                            Pid = 142307070918733L,
+                            Pids = "[0],[142307070918732],[142307070918733],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918735L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_vis_log_delete",
+                            IsDeleted = false,
+                            Name = "璁块棶鏃ュ織娓呯┖",
+                            OpenType = 0,
+                            Permission = "sysVisLog:delete",
+                            Pid = 142307070918733L,
+                            Pids = "[0],[142307070918732],[142307070918733],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918736L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_op_log",
+                            Component = "system/log/oplog/index",
+                            IsDeleted = false,
+                            Name = "鎿嶄綔鏃ュ織",
+                            OpenType = 1,
+                            Pid = 142307070918732L,
+                            Pids = "[0],[142307070918732],",
+                            Router = "/oplog",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918737L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_op_log_page",
+                            IsDeleted = false,
+                            Name = "鎿嶄綔鏃ュ織鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysOpLog:page",
+                            Pid = 142307070918736L,
+                            Pids = "[0],[142307070918732],[142307070918736],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918738L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_op_log_delete",
+                            IsDeleted = false,
+                            Name = "鎿嶄綔鏃ュ織娓呯┖",
+                            OpenType = 0,
+                            Permission = "sysOpLog:delete",
+                            Pid = 142307070918736L,
+                            Pids = "[0],[142307070918732],[142307070918736],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070911739L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_ex_log",
+                            Component = "system/log/exlog/index",
+                            IsDeleted = false,
+                            Name = "寮傚父鏃ュ織",
+                            OpenType = 1,
+                            Pid = 142307070918732L,
+                            Pids = "[0],[142307070918732],",
+                            Router = "/exlog",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070911740L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_ex_log_page",
+                            IsDeleted = false,
+                            Name = "寮傚父鏃ュ織鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysExLog:page",
+                            Pid = 142307070911739L,
+                            Pids = "[0],[142307070918732],[142307070911739],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070911741L,
+                            Application = "manage",
+                            Code = "sys_log_mgr_ex_log_delete",
+                            IsDeleted = false,
+                            Name = "寮傚父鏃ュ織娓呯┖",
+                            OpenType = 0,
+                            Permission = "sysExLog:delete",
+                            Pid = 142307070911739L,
+                            Pids = "[0],[142307070918732],[142307070911739],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918739L,
+                            Application = "system",
+                            Code = "sys_monitor_mgr",
+                            Component = "PageView",
+                            Icon = "deployment-unit",
+                            IsDeleted = false,
+                            Name = "绯荤粺鐩戞帶",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/monitor",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918740L,
+                            Application = "system",
+                            Code = "sys_monitor_mgr_machine_monitor",
+                            Component = "system/machine/index",
+                            IsDeleted = false,
+                            Name = "鏈嶅姟鐩戞帶",
+                            OpenType = 1,
+                            Pid = 142307070918739L,
+                            Pids = "[0],[142307070918739],",
+                            Router = "/machine",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918741L,
+                            Application = "system",
+                            Code = "sys_monitor_mgr_machine_monitor_query",
+                            IsDeleted = false,
+                            Name = "鏈嶅姟鐩戞帶鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysMachine:query",
+                            Pid = 142307070918740L,
+                            Pids = "[0],[142307070918739],[142307070918740],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918742L,
+                            Application = "system",
+                            Code = "sys_monitor_mgr_online_user",
+                            Component = "system/onlineUser/index",
+                            IsDeleted = false,
+                            Name = "鍦ㄧ嚎鐢ㄦ埛",
+                            OpenType = 1,
+                            Pid = 142307070918739L,
+                            Pids = "[0],[142307070918739],",
+                            Router = "/onlineUser",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918743L,
+                            Application = "system",
+                            Code = "sys_monitor_mgr_online_user_page",
+                            IsDeleted = false,
+                            Name = "鍦ㄧ嚎鐢ㄦ埛鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysOnlineUser:page",
+                            Pid = 142307070918742L,
+                            Pids = "[0],[142307070918739],[142307070918742],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918744L,
+                            Application = "system",
+                            Code = "sys_monitor_mgr_online_user_force_exist",
+                            IsDeleted = false,
+                            Name = "鍦ㄧ嚎鐢ㄦ埛寮洪��",
+                            OpenType = 0,
+                            Permission = "sysOnlineUser:forceExist",
+                            Pid = 142307070918742L,
+                            Pids = "[0],[142307070918739],[142307070918742],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918745L,
+                            Application = "system",
+                            Code = "sys_monitor_mgr_druid",
+                            Component = "Iframe",
+                            IsDeleted = false,
+                            Link = "http://localhost:82/druid/login.html",
+                            Name = "鏁版嵁鐩戞帶",
+                            OpenType = 2,
+                            Pid = 142307070918739L,
+                            Pids = "[0],[142307070918739],",
+                            Router = "/druid",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "N",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918746L,
+                            Application = "manage",
+                            Code = "sys_notice",
+                            Component = "PageView",
+                            Icon = "sound",
+                            IsDeleted = false,
+                            Name = "閫氱煡鍏憡",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/notice",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918747L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr",
+                            Component = "system/notice/index",
+                            IsDeleted = false,
+                            Name = "鍏憡绠$悊",
+                            OpenType = 1,
+                            Pid = 142307070918746L,
+                            Pids = "[0],[142307070918746],",
+                            Router = "/notice",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918748L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_page",
+                            IsDeleted = false,
+                            Name = "鍏憡鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysNotice:page",
+                            Pid = 142307070918747L,
+                            Pids = "[0],[142307070918746],[142307070918747],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918749L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_add",
+                            IsDeleted = false,
+                            Name = "鍏憡澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysNotice:add",
+                            Pid = 142307070918747L,
+                            Pids = "[0],[142307070918746],[142307070918747],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918750L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鍏憡缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysNotice:edit",
+                            Pid = 142307070918747L,
+                            Pids = "[0],[142307070918746],[142307070918747],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918751L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鍏憡鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysNotice:delete",
+                            Pid = 142307070918747L,
+                            Pids = "[0],[142307070918746],[142307070918747],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918752L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鍏憡鏌ョ湅",
+                            OpenType = 0,
+                            Permission = "sysNotice:detail",
+                            Pid = 142307070918747L,
+                            Pids = "[0],[142307070918746],[142307070918747],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918753L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_changeStatus",
+                            IsDeleted = false,
+                            Name = "鍏憡淇敼鐘舵��",
+                            OpenType = 0,
+                            Permission = "sysNotice:changeStatus",
+                            Pid = 142307070918747L,
+                            Pids = "[0],[142307070918746],[142307070918747],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918754L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_received",
+                            Component = "system/noticeReceived/index",
+                            IsDeleted = false,
+                            Name = "宸叉敹鍏憡",
+                            OpenType = 1,
+                            Pid = 142307070918746L,
+                            Pids = "[0],[142307070918746],",
+                            Router = "/noticeReceived",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918755L,
+                            Application = "manage",
+                            Code = "sys_notice_mgr_received_page",
+                            IsDeleted = false,
+                            Name = "宸叉敹鍏憡鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysNotice:received",
+                            Pid = 142307070918754L,
+                            Pids = "[0],[142307070918746],[142307070918754],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918756L,
+                            Application = "manage",
+                            Code = "sys_file_mgr",
+                            Component = "PageView",
+                            Icon = "file",
+                            IsDeleted = false,
+                            Name = "鏂囦欢绠$悊",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/file",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918757L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file",
+                            Component = "system/file/index",
+                            IsDeleted = false,
+                            Name = "绯荤粺鏂囦欢",
+                            OpenType = 1,
+                            Pid = 142307070918756L,
+                            Pids = "[0],[142307070918756],",
+                            Router = "/file",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918758L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_page",
+                            IsDeleted = false,
+                            Name = "鏂囦欢鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:page",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918759L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_list",
+                            IsDeleted = false,
+                            Name = "鏂囦欢鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:list",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918760L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_delete",
+                            IsDeleted = false,
+                            Name = "鏂囦欢鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:delete",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918761L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_detail",
+                            IsDeleted = false,
+                            Name = "鏂囦欢璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:detail",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918762L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_upload",
+                            IsDeleted = false,
+                            Name = "鏂囦欢涓婁紶",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:upload",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918763L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_download",
+                            IsDeleted = false,
+                            Name = "鏂囦欢涓嬭浇",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:download",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918764L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_preview",
+                            IsDeleted = false,
+                            Name = "鍥剧墖棰勮",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:preview",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070922874L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_upload_avatar",
+                            IsDeleted = false,
+                            Name = "澶村儚涓婁紶",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:uploadAvatar",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070922875L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_upload_document",
+                            IsDeleted = false,
+                            Name = "鏂囨。涓婁紶",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:uploadDocument",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070922876L,
+                            Application = "manage",
+                            Code = "sys_file_mgr_sys_file_upload_shop",
+                            IsDeleted = false,
+                            Name = "鍟嗗煄涓婁紶",
+                            OpenType = 0,
+                            Permission = "sysFileInfo:uploadShop",
+                            Pid = 142307070918757L,
+                            Pids = "[0],[142307070918756],[142307070918757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918765L,
+                            Application = "system",
+                            Code = "sys_timers",
+                            Component = "PageView",
+                            Icon = "dashboard",
+                            IsDeleted = false,
+                            Name = "浠诲姟璋冨害",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/timers",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918766L,
+                            Application = "system",
+                            Code = "sys_timers_mgr",
+                            Component = "system/timers/index",
+                            IsDeleted = false,
+                            Name = "浠诲姟绠$悊",
+                            OpenType = 1,
+                            Pid = 142307070918765L,
+                            Pids = "[0],[142307070918765],",
+                            Router = "/timers",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918767L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_page",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟鏌ヨ",
+                            OpenType = 0,
+                            Permission = "sysTimers:page",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918768L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_list",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟鍒楄〃",
+                            OpenType = 0,
+                            Permission = "sysTimers:list",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918769L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_detail",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟璇︽儏",
+                            OpenType = 0,
+                            Permission = "sysTimers:detail",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918770L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_add",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟澧炲姞",
+                            OpenType = 0,
+                            Permission = "sysTimers:add",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918771L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_delete",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "sysTimers:delete",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918772L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_edit",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟缂栬緫",
+                            OpenType = 0,
+                            Permission = "sysTimers:edit",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918773L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_get_action_classes",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟鍙墽琛屽垪琛�",
+                            OpenType = 0,
+                            Permission = "sysTimers:getActionClasses",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918774L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_start",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟鍚姩",
+                            OpenType = 0,
+                            Permission = "sysTimers:start",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918775L,
+                            Application = "system",
+                            Code = "sys_timers_mgr_stop",
+                            IsDeleted = false,
+                            Name = "瀹氭椂浠诲姟鍏抽棴",
+                            OpenType = 0,
+                            Permission = "sysTimers:stop",
+                            Pid = 142307070918766L,
+                            Pids = "[0],[142307070918765],[142307070918766],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918776L,
+                            Application = "system",
+                            Code = "code_gen",
+                            Component = "PageView",
+                            Icon = "thunderbolt",
+                            IsDeleted = false,
+                            Name = "浠g爜鐢熸垚",
+                            OpenType = 0,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/codeGenerate",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918778L,
+                            Application = "system",
+                            Code = "low_code",
+                            Component = "gen/lowCode/index",
+                            IsDeleted = false,
+                            Name = "琛ㄥ崟璁捐",
+                            OpenType = 0,
+                            Pid = 142307070918776L,
+                            Pids = "[0],[142307070918776],",
+                            Router = "/lowCode/index",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070918779L,
+                            Application = "system",
+                            Code = "code_gen_gen",
+                            Component = "gen/codeGenerate/index",
+                            IsDeleted = false,
+                            Name = "浠g爜鐢熸垚",
+                            OpenType = 0,
+                            Pid = 142307070918776L,
+                            Pids = "[0],[142307070918776],",
+                            Router = "/codeGenerate/index",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 142307070922870L,
+                            Application = "system",
+                            Code = "form_design",
+                            Component = "system/formDesign/index",
+                            IsDeleted = false,
+                            Name = "琛ㄥ崟璁捐",
+                            OpenType = 0,
+                            Pid = 285599875018821L,
+                            Pids = "[0],[285599875018821],",
+                            Router = "/formDesign/index",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 285599875018821L,
+                            Application = "system",
+                            Code = "sys_formDesign",
+                            Component = "PageView",
+                            Icon = "snippets",
+                            IsDeleted = false,
+                            Name = "琛ㄥ崟绠$悊",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/formDesign",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 0,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 285599875018823L,
+                            Application = "system",
+                            Code = "sys_formDesign_list",
+                            Component = "system/formDesign/list",
+                            IsDeleted = false,
+                            Name = "琛ㄥ崟鍒楄〃",
+                            OpenType = 1,
+                            Pid = 285599875018821L,
+                            Pids = "[0],[285599875018821],",
+                            Router = "/formDesign/list",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 285635743518789L,
+                            Application = "system",
+                            Code = "sys_formDesign_edit",
+                            Component = "system/formDesign/edit",
+                            IsDeleted = false,
+                            Name = "淇敼琛ㄥ崟",
+                            OpenType = 1,
+                            Pid = 285599875018821L,
+                            Pids = "[0],[285599875018821],",
+                            Router = "/formDesign/edit",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "N",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 285640475689029L,
+                            Application = "system",
+                            Code = "btn_formDesign_edit",
+                            Component = "",
+                            IsDeleted = false,
+                            Name = "淇敼琛ㄥ崟",
+                            OpenType = 0,
+                            Permission = "formmanager:edit",
+                            Pid = 285599875018823L,
+                            Pids = "[0],[285599875018821],[285599875018823],",
+                            Router = "",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 285640599859269L,
+                            Application = "system",
+                            Code = "btn_formDesign_delete",
+                            Component = "",
+                            IsDeleted = false,
+                            Name = "鍒犻櫎琛ㄥ崟",
+                            OpenType = 0,
+                            Permission = "formmanager:delete",
+                            Pid = 285599875018823L,
+                            Pids = "[0],[285599875018821],[285599875018823],",
+                            Router = "",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 285640740945989L,
+                            Application = "system",
+                            Code = "btn_formDesign_page",
+                            Component = "",
+                            IsDeleted = false,
+                            Name = "琛ㄥ崟鍒楄〃",
+                            OpenType = 0,
+                            Permission = "formmanager:page",
+                            Pid = 285599875018823L,
+                            Pids = "[0],[285599875018821],[285599875018823],",
+                            Router = "",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 1
+                        },
+                        new
+                        {
+                            Id = 355687925174341L,
+                            Application = "busiapp",
+                            Code = "Maste_wmscontainer_mgr",
+                            Component = "main/WmsContainer/index",
+                            Icon = "border",
+                            IsDeleted = false,
+                            Name = "鎵樼洏淇℃伅",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/wmscontainer",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355687925178437L,
+                            Application = "busiapp",
+                            Code = "Maste_wmscontainer_mgr_page",
+                            IsDeleted = false,
+                            Name = "鎵樼洏淇℃伅鏌ヨ",
+                            OpenType = 0,
+                            Permission = "WmsContainer:page",
+                            Pid = 355687925174341L,
+                            Pids = "[0],[355687924998213],[355687925174341],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355687925178438L,
+                            Application = "busiapp",
+                            Code = "Maste_wmscontainer_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鎵樼洏淇℃伅璇︽儏",
+                            OpenType = 0,
+                            Permission = "WmsContainer:detail",
+                            Pid = 355687925174341L,
+                            Pids = "[0],[355687924998213],[355687925174341],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355687925178439L,
+                            Application = "busiapp",
+                            Code = "Maste_wmscontainer_mgr_add",
+                            IsDeleted = false,
+                            Name = "鎵樼洏淇℃伅澧炲姞",
+                            OpenType = 0,
+                            Permission = "WmsContainer:add",
+                            Pid = 355687925174341L,
+                            Pids = "[0],[355687924998213],[355687925174341],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355687925182533L,
+                            Application = "busiapp",
+                            Code = "Maste_wmscontainer_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鎵樼洏淇℃伅鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "WmsContainer:delete",
+                            Pid = 355687925174341L,
+                            Pids = "[0],[355687924998213],[355687925174341],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355687925182534L,
+                            Application = "busiapp",
+                            Code = "Maste_wmscontainer_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鎵樼洏淇℃伅缂栬緫",
+                            OpenType = 0,
+                            Permission = "WmsContainer:edit",
+                            Pid = 355687925174341L,
+                            Pids = "[0],[355687924998213],[355687925174341],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355688792178757L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsarea_mgr",
+                            Component = "main/WmsArea/index",
+                            Icon = "appstore",
+                            IsDeleted = false,
+                            Name = "搴撳尯淇℃伅",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/wmsarea",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355688792182853L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsarea_mgr_page",
+                            IsDeleted = false,
+                            Name = "搴撳尯淇℃伅鏌ヨ",
+                            OpenType = 0,
+                            Permission = "WmsArea:page",
+                            Pid = 355688792178757L,
+                            Pids = "[0],[355688792162373],[355688792178757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355688792182854L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsarea_mgr_detail",
+                            IsDeleted = false,
+                            Name = "搴撳尯淇℃伅璇︽儏",
+                            OpenType = 0,
+                            Permission = "WmsArea:detail",
+                            Pid = 355688792178757L,
+                            Pids = "[0],[355688792162373],[355688792178757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355688792186949L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsarea_mgr_add",
+                            IsDeleted = false,
+                            Name = "搴撳尯淇℃伅澧炲姞",
+                            OpenType = 0,
+                            Permission = "WmsArea:add",
+                            Pid = 355688792178757L,
+                            Pids = "[0],[355688792162373],[355688792178757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355688792186950L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsarea_mgr_delete",
+                            IsDeleted = false,
+                            Name = "搴撳尯淇℃伅鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "WmsArea:delete",
+                            Pid = 355688792178757L,
+                            Pids = "[0],[355688792162373],[355688792178757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355688792186951L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsarea_mgr_edit",
+                            IsDeleted = false,
+                            Name = "搴撳尯淇℃伅缂栬緫",
+                            OpenType = 0,
+                            Permission = "WmsArea:edit",
+                            Pid = 355688792178757L,
+                            Pids = "[0],[355688792162373],[355688792178757],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355689496985669L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsplace_mgr",
+                            Component = "main/WmsPlace/index",
+                            Icon = "table",
+                            IsDeleted = false,
+                            Name = "搴撲綅淇℃伅",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/wmsplace",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355689496989765L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsplace_mgr_page",
+                            IsDeleted = false,
+                            Name = "搴撲綅淇℃伅鏌ヨ",
+                            OpenType = 0,
+                            Permission = "WmsPlace:page",
+                            Pid = 355689496985669L,
+                            Pids = "[0],[355689496977477],[355689496985669],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355689496993861L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsplace_mgr_detail",
+                            IsDeleted = false,
+                            Name = "搴撲綅淇℃伅璇︽儏",
+                            OpenType = 0,
+                            Permission = "WmsPlace:detail",
+                            Pid = 355689496985669L,
+                            Pids = "[0],[355689496977477],[355689496985669],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355689496993862L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsplace_mgr_add",
+                            IsDeleted = false,
+                            Name = "搴撲綅淇℃伅澧炲姞",
+                            OpenType = 0,
+                            Permission = "WmsPlace:add",
+                            Pid = 355689496985669L,
+                            Pids = "[0],[355689496977477],[355689496985669],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355689496993863L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsplace_mgr_delete",
+                            IsDeleted = false,
+                            Name = "搴撲綅淇℃伅鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "WmsPlace:delete",
+                            Pid = 355689496985669L,
+                            Pids = "[0],[355689496977477],[355689496985669],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355689496993864L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsplace_mgr_edit",
+                            IsDeleted = false,
+                            Name = "搴撲綅淇℃伅缂栬緫",
+                            OpenType = 0,
+                            Permission = "WmsPlace:edit",
+                            Pid = 355689496985669L,
+                            Pids = "[0],[355689496977477],[355689496985669],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355690042511429L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsmaterial_mgr",
+                            Component = "main/WmsMaterial/index",
+                            Icon = "barcode",
+                            IsDeleted = false,
+                            Name = "鐗╂枡淇℃伅",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/wmsmaterial",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355690042515525L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsmaterial_mgr_page",
+                            IsDeleted = false,
+                            Name = "鐗╂枡淇℃伅鏌ヨ",
+                            OpenType = 0,
+                            Permission = "WmsMaterial:page",
+                            Pid = 355690042511429L,
+                            Pids = "[0],[355690042499141],[355690042511429],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355690042519621L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsmaterial_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鐗╂枡淇℃伅璇︽儏",
+                            OpenType = 0,
+                            Permission = "WmsMaterial:detail",
+                            Pid = 355690042511429L,
+                            Pids = "[0],[355690042499141],[355690042511429],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355690042519622L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsmaterial_mgr_add",
+                            IsDeleted = false,
+                            Name = "鐗╂枡淇℃伅澧炲姞",
+                            OpenType = 0,
+                            Permission = "WmsMaterial:add",
+                            Pid = 355690042511429L,
+                            Pids = "[0],[355690042499141],[355690042511429],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355690042519623L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsmaterial_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鐗╂枡淇℃伅鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "WmsMaterial:delete",
+                            Pid = 355690042511429L,
+                            Pids = "[0],[355690042499141],[355690042511429],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355690042519624L,
+                            Application = "busiapp",
+                            Code = "Maste_wmsmaterial_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鐗╂枡淇℃伅缂栬緫",
+                            OpenType = 0,
+                            Permission = "WmsMaterial:edit",
+                            Pid = 355690042511429L,
+                            Pids = "[0],[355690042499141],[355690042511429],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355690923847749L,
+                            Application = "warejob",
+                            Code = "BindEntrance",
+                            Component = "main/BindEntrance/index",
+                            Icon = "logout",
+                            IsDeleted = false,
+                            Name = "缁勭洏鍏ュ簱",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/BindEntrance",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355691450822725L,
+                            Application = "warejob",
+                            Code = "ExWarehouse",
+                            Component = "main/ExWarehouse/index",
+                            Icon = "login",
+                            IsDeleted = false,
+                            Name = "鍑哄簱绠$悊",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/ExWarehouse",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355691891650629L,
+                            Application = "warejob",
+                            Code = "WmsTask",
+                            Component = "main/WmsTask/index",
+                            Icon = "hourglass",
+                            IsDeleted = false,
+                            Name = "浠诲姟绠$悊",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/WmsTask",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355692253458501L,
+                            Application = "warecount",
+                            Code = "LocationView",
+                            Component = "main/LocationView/index",
+                            Icon = "hdd",
+                            IsDeleted = false,
+                            Name = "搴撲綅瑙嗗浘",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/LocationView",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 355692487622725L,
+                            Application = "warecount",
+                            Code = "View_AccessDetails",
+                            Component = "main/View_AccessDetails/index",
+                            Icon = "laptop",
+                            IsDeleted = false,
+                            Name = "鍑哄叆搴撹褰�",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/View_AccessDetails",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383310358700101L,
+                            Application = "busiapp",
+                            Code = "Maste_lesproductionline_mgr",
+                            Component = "main/LesProductionline/index",
+                            Icon = "gateway",
+                            IsDeleted = false,
+                            Name = "浜х嚎淇℃伅",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/lesproductionline",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383310359138373L,
+                            Application = "busiapp",
+                            Code = "Maste_lesproductionline_mgr_page",
+                            IsDeleted = false,
+                            Name = "浜х嚎淇℃伅鏌ヨ",
+                            OpenType = 0,
+                            Permission = "LesProductionline:page",
+                            Pid = 383310358700101L,
+                            Pids = "[0],[383310357848133],[383310358700101],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383310359146565L,
+                            Application = "busiapp",
+                            Code = "Maste_lesproductionline_mgr_detail",
+                            IsDeleted = false,
+                            Name = "浜х嚎淇℃伅璇︽儏",
+                            OpenType = 0,
+                            Permission = "LesProductionline:detail",
+                            Pid = 383310358700101L,
+                            Pids = "[0],[383310357848133],[383310358700101],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383310359146566L,
+                            Application = "busiapp",
+                            Code = "Maste_lesproductionline_mgr_add",
+                            IsDeleted = false,
+                            Name = "浜х嚎淇℃伅澧炲姞",
+                            OpenType = 0,
+                            Permission = "LesProductionline:add",
+                            Pid = 383310358700101L,
+                            Pids = "[0],[383310357848133],[383310358700101],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383310359150661L,
+                            Application = "busiapp",
+                            Code = "Maste_lesproductionline_mgr_delete",
+                            IsDeleted = false,
+                            Name = "浜х嚎淇℃伅鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "LesProductionline:delete",
+                            Pid = 383310358700101L,
+                            Pids = "[0],[383310357848133],[383310358700101],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383310359154757L,
+                            Application = "busiapp",
+                            Code = "Maste_lesproductionline_mgr_edit",
+                            IsDeleted = false,
+                            Name = "浜х嚎淇℃伅缂栬緫",
+                            OpenType = 0,
+                            Permission = "LesProductionlinel:edit",
+                            Pid = 383310358700101L,
+                            Pids = "[0],[383310357848133],[383310358700101],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383311866703941L,
+                            Application = "busiapp",
+                            Code = "Maste_lesstation_mgr",
+                            Component = "main/LesStation/index",
+                            Icon = "team",
+                            IsDeleted = false,
+                            Name = "宸ヤ綅淇℃伅",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/lesstation",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383311866744901L,
+                            Application = "busiapp",
+                            Code = "Maste_lesstation_mgr_page",
+                            IsDeleted = false,
+                            Name = "宸ヤ綅淇℃伅鏌ヨ",
+                            OpenType = 0,
+                            Permission = "LesStation:page",
+                            Pid = 383311866703941L,
+                            Pids = "[0],[383311866441797],[383311866703941],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383311866748997L,
+                            Application = "busiapp",
+                            Code = "Maste_lesstation_mgr_detail",
+                            IsDeleted = false,
+                            Name = "宸ヤ綅淇℃伅璇︽儏",
+                            OpenType = 0,
+                            Permission = "LesStation:detail",
+                            Pid = 383311866703941L,
+                            Pids = "[0],[383311866441797],[383311866703941],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383311866753093L,
+                            Application = "busiapp",
+                            Code = "Maste_lesstation_mgr_add",
+                            IsDeleted = false,
+                            Name = "宸ヤ綅淇℃伅澧炲姞",
+                            OpenType = 0,
+                            Permission = "LesStation:add",
+                            Pid = 383311866703941L,
+                            Pids = "[0],[383311866441797],[383311866703941],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383311866753094L,
+                            Application = "busiapp",
+                            Code = "Maste_lesstation_mgr_delete",
+                            IsDeleted = false,
+                            Name = "宸ヤ綅淇℃伅鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "LesStation:delete",
+                            Pid = 383311866703941L,
+                            Pids = "[0],[383311866441797],[383311866703941],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383311866753095L,
+                            Application = "busiapp",
+                            Code = "Maste_lesstation_mgr_edit",
+                            IsDeleted = false,
+                            Name = "宸ヤ綅淇℃伅缂栬緫",
+                            OpenType = 0,
+                            Permission = "LesStation:edit",
+                            Pid = 383311866703941L,
+                            Pids = "[0],[383311866441797],[383311866703941],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383328166334533L,
+                            Application = "xbjl",
+                            Code = "Maste_lestakematerials_mgr",
+                            Component = "main/LesTakematerials/index",
+                            Icon = "deployment-unit",
+                            IsDeleted = false,
+                            Name = "鍙枡绠$悊",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/lestakematerials",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383328166449221L,
+                            Application = "xbjl",
+                            Code = "Maste_lestakematerials_mgr_page",
+                            IsDeleted = false,
+                            Name = "鍙枡鏌ヨ",
+                            OpenType = 0,
+                            Permission = "LesTakematerials:page",
+                            Pid = 383328166334533L,
+                            Pids = "[0],[383328165556293],[383328166334533],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383328166457413L,
+                            Application = "xbjl",
+                            Code = "Maste_lestakematerials_mgr_detail",
+                            IsDeleted = false,
+                            Name = "鍙枡璇︽儏",
+                            OpenType = 0,
+                            Permission = "LesTakematerials:detail",
+                            Pid = 383328166334533L,
+                            Pids = "[0],[383328165556293],[383328166334533],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383328166461509L,
+                            Application = "xbjl",
+                            Code = "Maste_lestakematerials_mgr_add",
+                            IsDeleted = false,
+                            Name = "鍙枡澧炲姞",
+                            OpenType = 0,
+                            Permission = "LesTakematerials:add",
+                            Pid = 383328166334533L,
+                            Pids = "[0],[383328165556293],[383328166334533],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383328166461510L,
+                            Application = "xbjl",
+                            Code = "Maste_lestakematerials_mgr_delete",
+                            IsDeleted = false,
+                            Name = "鍙枡鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "LesTakematerials:delete",
+                            Pid = 383328166334533L,
+                            Pids = "[0],[383328165556293],[383328166334533],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 383328166461511L,
+                            Application = "xbjl",
+                            Code = "Maste_lestakematerials_mgr_edit",
+                            IsDeleted = false,
+                            Name = "鍙枡缂栬緫",
+                            OpenType = 0,
+                            Permission = "LesTakematerials:edit",
+                            Pid = 383328166334533L,
+                            Pids = "[0],[383328165556293],[383328166334533],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 386851902500933L,
+                            Application = "warecount",
+                            Code = "Maste_wmsmaterialstock_mgr",
+                            Component = "main/WmsMaterialStock/index",
+                            Icon = "vertical-left",
+                            IsDeleted = false,
+                            Name = "搴撳瓨淇℃伅",
+                            OpenType = 1,
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Router = "/wmsmaterialstock",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 1,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 386851902545989L,
+                            Application = "warecount",
+                            Code = "Maste_wmsmaterialstock_mgr_page",
+                            IsDeleted = false,
+                            Name = "搴撳瓨鏌ヨ",
+                            OpenType = 0,
+                            Permission = "WmsMaterialStock:page",
+                            Pid = 386851902500933L,
+                            Pids = "[0],[386851902124101],[386851902500933],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 386851902550085L,
+                            Application = "warecount",
+                            Code = "Maste_wmsmaterialstock_mgr_detail",
+                            IsDeleted = false,
+                            Name = "搴撳瓨璇︽儏",
+                            OpenType = 0,
+                            Permission = "WmsMaterialStock:detail",
+                            Pid = 386851902500933L,
+                            Pids = "[0],[386851902124101],[386851902500933],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 386851902554181L,
+                            Application = "warecount",
+                            Code = "Maste_wmsmaterialstock_mgr_add",
+                            IsDeleted = false,
+                            Name = "搴撳瓨澧炲姞",
+                            OpenType = 0,
+                            Permission = "WmsMaterialStock:add",
+                            Pid = 386851902500933L,
+                            Pids = "[0],[386851902124101],[386851902500933],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 386851902558277L,
+                            Application = "warecount",
+                            Code = "Maste_wmsmaterialstock_mgr_delete",
+                            IsDeleted = false,
+                            Name = "搴撳瓨鍒犻櫎",
+                            OpenType = 0,
+                            Permission = "WmsMaterialStock:delete",
+                            Pid = 386851902500933L,
+                            Pids = "[0],[386851902124101],[386851902500933],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        },
+                        new
+                        {
+                            Id = 386851902558278L,
+                            Application = "warecount",
+                            Code = "Maste_wmsmaterialstock_mgr_edit",
+                            IsDeleted = false,
+                            Name = "搴撳瓨缂栬緫",
+                            OpenType = 0,
+                            Permission = "WmsMaterialStock:edit",
+                            Pid = 386851902500933L,
+                            Pids = "[0],[386851902124101],[386851902500933],",
+                            Sort = 100,
+                            Status = 0,
+                            Type = 2,
+                            Visible = "Y",
+                            Weight = 2
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysNotice", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CancelTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鎾ゅ洖鏃堕棿");
+
+                    b.Property<string>("Content")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍐呭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<long>("PublicOrgId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍙戝竷鏈烘瀯Id");
+
+                    b.Property<string>("PublicOrgName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍙戝竷鏈烘瀯鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("PublicTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍙戝竷鏃堕棿");
+
+                    b.Property<long>("PublicUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍙戝竷浜篒d");
+
+                    b.Property<string>("PublicUserName")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鍙戝竷浜哄鍚�");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鏍囬");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int")
+                        .HasComment("绫诲瀷");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_notice");
+
+                    b.HasComment("閫氱煡鍏憡琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysNoticeUser", b =>
+                {
+                    b.Property<long>("NoticeId")
+                        .HasColumnType("bigint")
+                        .HasComment("閫氱煡鍏憡Id");
+
+                    b.Property<long>("UserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鐢ㄦ埛Id");
+
+                    b.Property<int>("ReadStatus")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<DateTimeOffset?>("ReadTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("闃呰鏃堕棿");
+
+                    b.HasKey("NoticeId", "UserId");
+
+                    b.ToTable("sys_notice_user");
+
+                    b.HasComment("閫氱煡鍏憡鐢ㄦ埛琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysOrg", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<string>("Contacts")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鑱旂郴浜�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("OrgType")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<long>("Pid")
+                        .HasColumnType("bigint")
+                        .HasComment("鐖禝d");
+
+                    b.Property<string>("Pids")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鐖禝ds");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<string>("Tel")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鐢佃瘽");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_org");
+
+                    b.HasComment("缁勭粐鏈烘瀯琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070910539L,
+                            Code = "wbgf",
+                            IsDeleted = false,
+                            Name = "浼熸湰鑲′唤鏈夐檺鍏徃",
+                            Pid = 0L,
+                            Pids = "[0],",
+                            Remark = "浼熸湰鑲′唤鏈夐檺鍏徃",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910540L,
+                            Code = "wbgf_sh",
+                            IsDeleted = false,
+                            Name = "浼熸湰鑲′唤鏈夐檺鍏徃(涓婃捣)",
+                            Pid = 142307070910539L,
+                            Pids = "[0],[142307070910539],",
+                            Remark = "浼熸湰鑲′唤鏈夐檺鍏徃-涓婃捣",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910541L,
+                            Code = "wbgf_cq",
+                            IsDeleted = false,
+                            Name = "浼熸湰鑲′唤鏈夐檺鍏徃(閲嶅簡)",
+                            Pid = 142307070910539L,
+                            Pids = "[0],[142307070910539],",
+                            Remark = "浼熸湰鑲′唤鏈夐檺鍏徃-閲嶅簡",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910542L,
+                            Code = "wbgf_sh_yfb",
+                            IsDeleted = false,
+                            Name = "鐮斿彂閮�",
+                            Pid = 142307070910540L,
+                            Pids = "[0],[142307070910539],[142307070910540],",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910543L,
+                            Code = "wbgf_sh_qhb",
+                            IsDeleted = false,
+                            Name = "浼佸垝閮�",
+                            Pid = 142307070910540L,
+                            Pids = "[0],[142307070910539],[142307070910540],",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910544L,
+                            Code = "wbgf_cq_scb",
+                            IsDeleted = false,
+                            Name = "甯傚満閮�",
+                            Pid = 142307070910541L,
+                            Pids = "[0],[142307070910539],[142307070910541],",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910545L,
+                            Code = "wbgf_cq_cwb",
+                            IsDeleted = false,
+                            Name = "璐㈠姟閮�",
+                            Pid = 142307070910541L,
+                            Pids = "[0],[142307070910539],[142307070910541],",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910546L,
+                            Code = "wbgf_cq_scb",
+                            IsDeleted = false,
+                            Name = "甯傚満閮ㄤ簩閮�",
+                            Pid = 142307070910544L,
+                            Pids = "[0],[142307070910539],[142307070910541],[142307070910544],",
+                            Remark = "",
+                            Sort = 100,
+                            Status = 0
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysPos", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_pos");
+
+                    b.HasComment("鑱屼綅琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070910547L,
+                            Code = "zjl",
+                            IsDeleted = false,
+                            Name = "鎬荤粡鐞�",
+                            Remark = "鎬荤粡鐞�",
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910548L,
+                            Code = "fzjl",
+                            IsDeleted = false,
+                            Name = "鍓�荤粡鐞�",
+                            Remark = "鍓�荤粡鐞�",
+                            Sort = 101,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910549L,
+                            Code = "bmjl",
+                            IsDeleted = false,
+                            Name = "閮ㄩ棬缁忕悊",
+                            Remark = "閮ㄩ棬缁忕悊",
+                            Sort = 102,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910550L,
+                            Code = "gzry",
+                            IsDeleted = false,
+                            Name = "宸ヤ綔浜哄憳",
+                            Remark = "宸ヤ綔浜哄憳",
+                            Sort = 103,
+                            Status = 0
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysRole", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("DataScopeType")
+                        .HasColumnType("int")
+                        .HasComment("鏁版嵁鑼冨洿绫诲瀷");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("RoleType")
+                        .HasColumnType("int")
+                        .HasComment("瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_role");
+
+                    b.HasComment("瑙掕壊琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070910554L,
+                            Code = "sys_manager_role",
+                            DataScopeType = 1,
+                            IsDeleted = false,
+                            Name = "绯荤粺绠$悊鍛�",
+                            Remark = "绯荤粺绠$悊鍛�",
+                            RoleType = 0,
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 356094617575493L,
+                            Code = "admin",
+                            DataScopeType = 1,
+                            IsDeleted = false,
+                            Name = "绠$悊鍛�",
+                            Remark = "",
+                            RoleType = 0,
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 358509609758789L,
+                            Code = "ware",
+                            DataScopeType = 1,
+                            IsDeleted = false,
+                            Name = "浠撳簱鐢ㄦ埛",
+                            Remark = "",
+                            RoleType = 0,
+                            Sort = 100,
+                            Status = 0
+                        },
+                        new
+                        {
+                            Id = 358536344862789L,
+                            Code = "iWare",
+                            DataScopeType = 5,
+                            IsDeleted = false,
+                            Name = "鐮斿彂鐢ㄦ埛",
+                            Remark = "",
+                            RoleType = 0,
+                            Sort = 100,
+                            Status = 0
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysRoleDataScope", b =>
+                {
+                    b.Property<long>("SysRoleId")
+                        .HasColumnType("bigint")
+                        .HasComment("瑙掕壊Id");
+
+                    b.Property<long>("SysOrgId")
+                        .HasColumnType("bigint")
+                        .HasComment("鏈烘瀯Id");
+
+                    b.HasKey("SysRoleId", "SysOrgId");
+
+                    b.HasIndex("SysOrgId");
+
+                    b.ToTable("sys_role_data_scope");
+
+                    b.HasComment("瑙掕壊鏁版嵁鑼冨洿琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysRoleMenu", b =>
+                {
+                    b.Property<long>("SysRoleId")
+                        .HasColumnType("bigint")
+                        .HasComment("瑙掕壊Id");
+
+                    b.Property<long>("SysMenuId")
+                        .HasColumnType("bigint")
+                        .HasComment("鑿滃崟Id");
+
+                    b.HasKey("SysRoleId", "SysMenuId");
+
+                    b.HasIndex("SysMenuId");
+
+                    b.ToTable("sys_role_menu");
+
+                    b.HasComment("瑙掕壊鑿滃崟琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysTimer", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("Cron")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("Cron琛ㄨ揪寮�");
+
+                    b.Property<bool>("DoOnce")
+                        .HasColumnType("bit")
+                        .HasComment("鍙墽琛屼竴娆�");
+
+                    b.Property<int>("ExecuteType")
+                        .HasColumnType("int")
+                        .HasComment("鎵ц绫诲瀷");
+
+                    b.Property<string>("Headers")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("Headers");
+
+                    b.Property<int?>("Interval")
+                        .HasColumnType("int")
+                        .HasComment("闂撮殧鏃堕棿");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("JobName")
+                        .IsRequired()
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("浠诲姟鍚嶇О");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<string>("RequestParameters")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("璇锋眰鍙傛暟");
+
+                    b.Property<int>("RequestType")
+                        .HasColumnType("int")
+                        .HasComment("璇锋眰绫诲瀷");
+
+                    b.Property<string>("RequestUrl")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("璇锋眰url");
+
+                    b.Property<bool>("StartNow")
+                        .HasColumnType("bit")
+                        .HasComment("绔嬪嵆鎵ц");
+
+                    b.Property<int>("TimerType")
+                        .HasColumnType("int")
+                        .HasComment("瀹氭椂鍣ㄧ被鍨�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_timer");
+
+                    b.HasComment("瀹氭椂浠诲姟琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070910556L,
+                            DoOnce = false,
+                            ExecuteType = 1,
+                            Interval = 5,
+                            IsDeleted = false,
+                            JobName = "鐧惧害api",
+                            Remark = "鎺ュ彛API",
+                            RequestType = 2,
+                            RequestUrl = "https://www.baidu.com",
+                            StartNow = false,
+                            TimerType = 0
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysUser", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Account")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璐﹀彿");
+
+                    b.Property<int>("AdminType")
+                        .HasColumnType("int")
+                        .HasComment("绠$悊鍛樼被鍨�-瓒呯骇绠$悊鍛榑1銆佺鐞嗗憳_2銆佹櫘閫氳处鍙穇3");
+
+                    b.Property<string>("Avatar")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("澶村儚");
+
+                    b.Property<DateTimeOffset?>("Birthday")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鐢熸棩");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("Email")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("閭");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("LastLoginIp")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鏈�鍚庣櫥褰旾P");
+
+                    b.Property<DateTimeOffset?>("LastLoginTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏈�鍚庣櫥褰曟椂闂�");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("濮撳悕");
+
+                    b.Property<string>("NickName")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鏄电О");
+
+                    b.Property<string>("Password")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀵嗙爜");
+
+                    b.Property<string>("Phone")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鎵嬫満");
+
+                    b.Property<long>("ProductionlineId")
+                        .HasColumnType("bigint");
+
+                    b.Property<int>("Sex")
+                        .HasColumnType("int")
+                        .HasComment("鎬у埆-鐢穇1銆佸コ_2");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2");
+
+                    b.Property<string>("Tel")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鐢佃瘽");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("WorkShopType")
+                        .HasColumnType("int");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_user");
+
+                    b.HasComment("鐢ㄦ埛琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 142307070910551L,
+                            Account = "superAdmin",
+                            AdminType = 1,
+                            Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+                            IsDeleted = false,
+                            Name = "瓒呯骇绠$悊鍛�",
+                            NickName = "superAdmin",
+                            Password = "e10adc3949ba59abbe56e057f20f883e",
+                            Phone = "18020030720",
+                            ProductionlineId = 0L,
+                            Sex = 1,
+                            Status = 0,
+                            WorkShopType = 0
+                        },
+                        new
+                        {
+                            Id = 142307070910552L,
+                            Account = "admin",
+                            AdminType = 2,
+                            Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+                            IsDeleted = false,
+                            Name = "绯荤粺绠$悊鍛�",
+                            NickName = "admin",
+                            Password = "e10adc3949ba59abbe56e057f20f883e",
+                            Phone = "18020030720",
+                            ProductionlineId = 0L,
+                            Sex = 1,
+                            Status = 0,
+                            WorkShopType = 0
+                        },
+                        new
+                        {
+                            Id = 358533464608837L,
+                            Account = "warehouse",
+                            AdminType = 3,
+                            Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+                            IsDeleted = false,
+                            Name = "浠撳簱鐢ㄦ埛",
+                            NickName = "warehouse",
+                            Password = "e10adc3949ba59abbe56e057f20f883e",
+                            Phone = "13869156666",
+                            ProductionlineId = 0L,
+                            Sex = 1,
+                            Status = 0,
+                            WorkShopType = 0
+                        },
+                        new
+                        {
+                            Id = 358536045723717L,
+                            Account = "admin1",
+                            AdminType = 3,
+                            Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+                            IsDeleted = false,
+                            Name = "鐮斿彂閮�",
+                            NickName = "admin1",
+                            Password = "f379eaf3c831b04de153469d1bec345e",
+                            Phone = "13869156666",
+                            ProductionlineId = 0L,
+                            Sex = 1,
+                            Status = 0,
+                            WorkShopType = 0
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysUserDataScope", b =>
+                {
+                    b.Property<long>("SysUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鐢ㄦ埛Id");
+
+                    b.Property<long>("SysOrgId")
+                        .HasColumnType("bigint")
+                        .HasComment("鏈烘瀯Id");
+
+                    b.HasKey("SysUserId", "SysOrgId");
+
+                    b.HasIndex("SysOrgId");
+
+                    b.ToTable("sys_user_data_scope");
+
+                    b.HasComment("鐢ㄦ埛鏁版嵁鑼冨洿琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            SysUserId = 142307070910551L,
+                            SysOrgId = 142307070910540L
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysUserRole", b =>
+                {
+                    b.Property<long>("SysUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鐢ㄦ埛Id");
+
+                    b.Property<long>("SysRoleId")
+                        .HasColumnType("bigint")
+                        .HasComment("瑙掕壊Id");
+
+                    b.HasKey("SysUserId", "SysRoleId");
+
+                    b.HasIndex("SysRoleId");
+
+                    b.ToTable("sys_user_role");
+
+                    b.HasComment("鐢ㄦ埛瑙掕壊琛�");
+
+                    b.HasData(
+                        new
+                        {
+                            SysUserId = 142307070910552L,
+                            SysRoleId = 142307070910554L
+                        });
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.TestStudent", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<int>("Age")
+                        .HasColumnType("int")
+                        .HasComment("瀛︾敓骞撮緞");
+
+                    b.Property<DateTime>("BrithDate")
+                        .HasColumnType("datetime2")
+                        .HasComment("鍑虹敓鏃ユ湡");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("Gender")
+                        .HasColumnType("int")
+                        .HasComment("鎬у埆");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("瀛︾敓濮撳悕");
+
+                    b.Property<bool>("StartName")
+                        .HasMaxLength(50)
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍦ㄦ牎");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("test_students");
+
+                    b.HasComment("瀛︾敓淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.TestStudent2", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<int>("Age")
+                        .HasColumnType("int")
+                        .HasComment("瀛︾敓骞撮緞");
+
+                    b.Property<DateTime>("BrithDate")
+                        .HasColumnType("datetime2")
+                        .HasComment("鍑虹敓鏃ユ湡");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("Gender")
+                        .HasColumnType("int")
+                        .HasComment("鎬у埆");
+
+                    b.Property<decimal>("HasMoney")
+                        .HasColumnType("decimal(10,3)")
+                        .HasColumnName("HasMoney")
+                        .HasComment("闆惰姳閽�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("瀛︾敓濮撳悕");
+
+                    b.Property<bool>("StartName")
+                        .HasMaxLength(50)
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍦ㄦ牎");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("test_students2");
+
+                    b.HasComment("瀛︾敓淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.TestStudent3", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<int>("Age")
+                        .HasColumnType("int")
+                        .HasComment("瀛︾敓骞撮緞");
+
+                    b.Property<DateTime>("BrithDate")
+                        .HasColumnType("datetime2")
+                        .HasComment("鍑虹敓鏃ユ湡");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("Gender")
+                        .HasColumnType("int")
+                        .HasComment("鎬у埆");
+
+                    b.Property<decimal>("HasMoney")
+                        .HasColumnType("decimal(10,3)")
+                        .HasColumnName("HasMoney")
+                        .HasComment("闆惰姳閽�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(10)
+                        .HasColumnType("nvarchar(10)")
+                        .HasComment("瀛︾敓濮撳悕");
+
+                    b.Property<bool>("StartName")
+                        .HasMaxLength(50)
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍦ㄦ牎");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("test_students3");
+
+                    b.HasComment("瀛︾敓淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsArea", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AreaDesc")
+                        .HasMaxLength(250)
+                        .HasColumnType("nvarchar(250)")
+                        .HasComment("鎻忚堪");
+
+                    b.Property<string>("AreaName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<int>("AreaStatus")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<int>("AreaType")
+                        .HasColumnType("int")
+                        .HasComment("鍒嗙被");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<bool>("IsSteel")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁涓洪挗骞冲彴");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("WorkShopType")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炶溅闂�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_area");
+
+                    b.HasComment("搴撳尯琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsContainer", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AssetNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璧勪骇缂栧彿");
+
+                    b.Property<int>("ContainerCategory")
+                        .HasColumnType("int")
+                        .HasComment("鎵樼洏鍒嗙被");
+
+                    b.Property<string>("ContainerCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栧彿");
+
+                    b.Property<int>("ContainerStatus")
+                        .HasColumnType("int")
+                        .HasComment("鎵樼洏鐘舵��");
+
+                    b.Property<int>("ContainerType")
+                        .HasColumnType("int")
+                        .HasComment("绫诲瀷");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("ErpNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("Erp鍗曞彿");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("IsVirtually")
+                        .HasColumnType("int")
+                        .HasComment("鏄惁铏氭嫙");
+
+                    b.Property<decimal>("LimitHeight")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("闄愰珮");
+
+                    b.Property<decimal>("LimitLength")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("闄愰暱");
+
+                    b.Property<decimal>("LimitWidth")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("闄愬");
+
+                    b.Property<decimal>("MaxWeight")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("杞介噸涓婇檺");
+
+                    b.Property<long>("ParentContainerId")
+                        .HasColumnType("bigint")
+                        .HasComment("鐖舵墭鐩業d");
+
+                    b.Property<decimal>("SpecHeight")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("楂樺害");
+
+                    b.Property<decimal>("SpecLength")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("闀垮害");
+
+                    b.Property<decimal>("SpecWidth")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("瀹藉害");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("WorkShopType")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炶溅闂�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_container");
+
+                    b.HasComment("鎵樼洏淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsContainerPlace", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("ContainerCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<long>("ContainerId")
+                        .HasColumnType("bigint")
+                        .HasComment("鎵樼洏Id");
+
+                    b.Property<int>("ContainerPlaceStatus")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("PlaceCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<long>("PlaceId")
+                        .HasColumnType("bigint")
+                        .HasComment("搴撲綅Id");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_containerplace");
+
+                    b.HasComment("鎵樼洏搴撲綅鍏崇郴琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsDumpOrder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("Billdate")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃ユ湡");
+
+                    b.Property<string>("Companyname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍏徃");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("Creator")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍒涘缓浜�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("NO")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍗曟嵁缂栧彿");
+
+                    b.Property<long>("OrderLargeCategory")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁澶х被");
+
+                    b.Property<int>("OrderStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍗曟嵁鐘舵��");
+
+                    b.Property<long>("OrderSubclass")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁灏忕被");
+
+                    b.Property<long>("SOID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_dumporder");
+
+                    b.HasComment("杞偍鍗�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsDumpOrderDetails", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Batchno_SCM")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("SCM鎵规鍙�");
+
+                    b.Property<string>("Batchno_WMS")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("WMS鎵规鍙�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<decimal>("Length")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("闀垮害");
+
+                    b.Property<string>("Materialcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("Materialname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<long>("OID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+                    b.Property<long>("OrderId")
+                        .HasMaxLength(50)
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁Id");
+
+                    b.Property<int>("OrderStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍗曟嵁鐘舵��");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("搴撳瓨椤圭洰缂栫爜");
+
+                    b.Property<string>("Projectcode_To")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鏂板簱瀛橀」鐩紪鐮�");
+
+                    b.Property<decimal>("Qty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏁伴噺");
+
+                    b.Property<string>("Unit")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍩烘湰鍗曚綅");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OrderId");
+
+                    b.ToTable("wms_dumporder_details");
+
+                    b.HasComment("杞偍鍗曟槑缁�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("Billdate")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃ユ湡");
+
+                    b.Property<string>("Companyname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍏徃鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("GoodsReturnStatus")
+                        .HasColumnType("int")
+                        .HasComment("閫�璐х姸鎬�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("NO")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍗曟嵁缂栧彿");
+
+                    b.Property<long>("OrderLargeCategory")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁澶х被");
+
+                    b.Property<long>("OrderSubclass")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁灏忕被");
+
+                    b.Property<long>("SOID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("Vendorcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("渚涘簲鍟嗙紪鐮�");
+
+                    b.Property<string>("Vendorname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("渚涘簲鍟嗗悕绉�");
+
+                    b.Property<string>("WarehouseCentername")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撳偍涓績");
+
+                    b.Property<string>("WarehouseKeepername")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撶鍛�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_goodsreturnorder");
+
+                    b.HasComment("閫�璐у崟");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrderDetails", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Batchno_WMS")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鎵规鍙�");
+
+                    b.Property<string>("ContractCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍚堝悓缂栧彿");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<decimal>("CustomsNum")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶ュ叧鏁伴噺");
+
+                    b.Property<decimal>("CustomsPrices")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶ュ叧閲戦");
+
+                    b.Property<string>("CustomsUnitName")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鎶ュ叧鍗曚綅");
+
+                    b.Property<string>("DeclarationCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍗曞彿");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("ItemNo")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鎶ュ叧椤瑰彿");
+
+                    b.Property<string>("Materialcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("Materialname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<long>("OID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+                    b.Property<long>("OrderId")
+                        .HasMaxLength(50)
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁Id");
+
+                    b.Property<decimal>("Price")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("涓嶅惈绋庡崟浠�");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("椤圭洰缂栧彿");
+
+                    b.Property<decimal>("Qty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏁伴噺");
+
+                    b.Property<int>("ReceivingStatus")
+                        .HasColumnType("int")
+                        .HasComment("閫�璐х姸鎬�");
+
+                    b.Property<decimal>("SingleLength")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍗曟牴闀垮害");
+
+                    b.Property<string>("StoreRoomname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撻棿");
+
+                    b.Property<decimal>("SumPrice")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎴愭湰閲戦");
+
+                    b.Property<string>("TACode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("TA鍙�");
+
+                    b.Property<decimal>("TheoreticalWeight")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鐞嗚閲嶉噺");
+
+                    b.Property<string>("TradeName")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍝佸悕");
+
+                    b.Property<string>("Unit")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍩烘湰鍗曚綅");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OrderId");
+
+                    b.ToTable("wms_goodsreturnorder_details");
+
+                    b.HasComment("閫�璐у崟鎹槑缁嗚〃");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsHistoryMaterialContainer", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<decimal>("BindQuantity")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("缁勭洏鏁伴噺");
+
+                    b.Property<int>("BindStatus")
+                        .HasColumnType("int")
+                        .HasComment("缁勭洏鐘舵��");
+
+                    b.Property<string>("ContainerCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎵樼洏缂栫爜");
+
+                    b.Property<long>("ContainerId")
+                        .HasColumnType("bigint")
+                        .HasComment("鎵樼洏Id");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("MaterialBatch")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鎵规");
+
+                    b.Property<string>("MaterialDensity")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瀵嗗害");
+
+                    b.Property<long>("MaterialId")
+                        .HasColumnType("bigint")
+                        .HasComment("鐗╂枡Id");
+
+                    b.Property<string>("MaterialName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<string>("MaterialNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("MaterialSpec")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瑙勬牸");
+
+                    b.Property<string>("OrderNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍗曞彿");
+
+                    b.Property<decimal>("SampleQty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶芥鏁伴噺");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("MaterialId");
+
+                    b.ToTable("wms_history_materialcontainer");
+
+                    b.HasComment("鐗╂枡鎵樼洏鍘嗗彶琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsMaterial", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AreaIds")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("搴撳尯Ids");
+
+                    b.Property<string>("AreaNameParameter")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("搴撳尯鍙傛暟");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("Description")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("鎻忚堪");
+
+                    b.Property<int>("InspectionMethod")
+                        .HasColumnType("int")
+                        .HasComment("鐗╂枡妫�楠�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("MaterialBatch")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鎵规");
+
+                    b.Property<string>("MaterialDensity")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瀵嗗害");
+
+                    b.Property<string>("MaterialName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<string>("MaterialNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("MaterialSpec")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瑙勬牸");
+
+                    b.Property<int>("MaterialType")
+                        .HasColumnType("int")
+                        .HasComment("鐗╂枡绫诲埆");
+
+                    b.Property<string>("MaterialUnit")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鍗曚綅");
+
+                    b.Property<decimal>("MaxImumqty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏈�澶у瓨閲�");
+
+                    b.Property<decimal>("MaxstorageAge")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏈�澶у簱榫�");
+
+                    b.Property<decimal>("MinstorageAge")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏈�灏忓簱榫�");
+
+                    b.Property<decimal>("Safeqty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("瀹夊叏瀛橀噺");
+
+                    b.Property<string>("StationIds")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("宸ヤ綔鍖篒ds");
+
+                    b.Property<string>("StationNameParameter")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("宸ヤ綔鍖哄弬鏁�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_material");
+
+                    b.HasComment("鐗╂枡淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsMaterialContainer", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<decimal>("BindQuantity")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("缁勭洏鏁伴噺");
+
+                    b.Property<int>("BindStatus")
+                        .HasColumnType("int")
+                        .HasComment("缁勭洏鐘舵��");
+
+                    b.Property<string>("ContainerCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎵樼洏缂栫爜");
+
+                    b.Property<long>("ContainerId")
+                        .HasColumnType("bigint")
+                        .HasComment("鎵樼洏Id");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("MaterialBatch")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鎵规");
+
+                    b.Property<string>("MaterialDensity")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瀵嗗害");
+
+                    b.Property<long>("MaterialId")
+                        .HasColumnType("bigint")
+                        .HasComment("鐗╂枡Id");
+
+                    b.Property<string>("MaterialName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<string>("MaterialNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("MaterialSpec")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瑙勬牸");
+
+                    b.Property<long>("OrderDetailsId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁鏄庣粏Id");
+
+                    b.Property<string>("OrderNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍗曞彿");
+
+                    b.Property<decimal>("SampleQty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶芥鏁伴噺");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<long?>("WmsContainerId")
+                        .HasColumnType("bigint");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("MaterialId");
+
+                    b.HasIndex("WmsContainerId");
+
+                    b.ToTable("wms_materialcontainer");
+
+                    b.HasComment("鐗╂枡鎵樼洏鍏崇郴琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsMaterialStock", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<long>("AreaId")
+                        .HasColumnType("bigint")
+                        .HasComment("搴撳尯Id");
+
+                    b.Property<string>("ContainerCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎵樼洏缂栫爜");
+
+                    b.Property<long>("ContainerId")
+                        .HasColumnType("bigint")
+                        .HasComment("鎵樼洏Id");
+
+                    b.Property<string>("ContractCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍚堝悓缂栧彿");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("High")
+                        .HasColumnType("int")
+                        .HasComment("楂�");
+
+                    b.Property<int>("InspectionMethod")
+                        .HasColumnType("int")
+                        .HasComment("妫�楠屾柟寮�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("Long")
+                        .HasColumnType("int")
+                        .HasComment("闀�");
+
+                    b.Property<string>("MaterialBatch")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鎵规");
+
+                    b.Property<string>("MaterialDensity")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瀵嗗害");
+
+                    b.Property<string>("MaterialName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<string>("MaterialNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("MaterialSpec")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐗╂枡瑙勬牸");
+
+                    b.Property<int>("MaterialType")
+                        .HasColumnType("int")
+                        .HasComment("鐗╂枡绫诲埆");
+
+                    b.Property<string>("PlaceCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("椤圭洰缂栧彿");
+
+                    b.Property<decimal>("QuantityOfBill")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("璐﹂潰鏁伴噺");
+
+                    b.Property<int>("Source")
+                        .HasColumnType("int")
+                        .HasComment("鍏ュ簱鏉ユ簮");
+
+                    b.Property<decimal>("StockNumber")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("瀹炵墿搴撳瓨鏁�");
+
+                    b.Property<string>("TACode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("TA鍙�");
+
+                    b.Property<int>("UnitNo")
+                        .HasColumnType("int")
+                        .HasComment("鍗曚綅缂栧彿");
+
+                    b.Property<int>("UnitType")
+                        .HasColumnType("int")
+                        .HasComment("鍗曚綅绫诲埆");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("Wide")
+                        .HasColumnType("int")
+                        .HasComment("瀹�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_materialstock");
+
+                    b.HasComment("搴撳瓨琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsMerchantinfo", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("MerchantAddress")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢鍦板潃");
+
+                    b.Property<string>("MerchantAttribute")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢灞炴��");
+
+                    b.Property<string>("MerchantContact")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢鑱旂郴浜�");
+
+                    b.Property<string>("MerchantEmail")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢閭");
+
+                    b.Property<string>("MerchantFax")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢浼犵湡");
+
+                    b.Property<int>("MerchantGrade")
+                        .HasColumnType("int")
+                        .HasComment("瀹㈠晢绛夌骇");
+
+                    b.Property<string>("MerchantName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢鍚嶇О");
+
+                    b.Property<string>("MerchantNo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢缂栧彿");
+
+                    b.Property<string>("MerchantPhone")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢鐢佃瘽");
+
+                    b.Property<string>("MerchantShort")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢绠�绉�");
+
+                    b.Property<string>("MerchantTmt")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹㈠晢琛屼笟");
+
+                    b.Property<int>("MerchantType")
+                        .HasColumnType("int")
+                        .HasComment("瀹㈠晢鍒嗙被");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_merchantinfo");
+
+                    b.HasComment("瀹㈠晢淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsOrder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("Billdate")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃ユ湡");
+
+                    b.Property<string>("Companyname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍏徃鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DeclarationCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍗曞彿");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Majorname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("涓撲笟");
+
+                    b.Property<string>("NO")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍗曟嵁缂栧彿");
+
+                    b.Property<long>("OrderLargeCategory")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁澶х被");
+
+                    b.Property<int>("OrderStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍗曟嵁鐘舵��");
+
+                    b.Property<long>("OrderSubclass")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁灏忕被");
+
+                    b.Property<string>("Remarks")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<long>("SOID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+                    b.Property<string>("SourceBillNo")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("閫佽揣閫氱煡鍗曞彿");
+
+                    b.Property<string>("StoreRoomname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撻棿");
+
+                    b.Property<int>("TradeMode")
+                        .HasColumnType("int")
+                        .HasComment("璐告槗鏂瑰紡");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("Vendorcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("渚涘簲鍟嗙紪鐮�");
+
+                    b.Property<string>("Vendorname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("渚涘簲鍟嗗悕绉�");
+
+                    b.Property<string>("WarehouseCentername")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撳偍涓績");
+
+                    b.Property<string>("WarehouseKeepername")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撶鍛�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_order");
+
+                    b.HasComment("鍗曟嵁琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsOrderDetails", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("ContainerCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎵樼洏缂栫爜");
+
+                    b.Property<string>("ContractCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍚堝悓缂栧彿");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<decimal>("CustomsNum")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶ュ叧鏁伴噺");
+
+                    b.Property<decimal>("CustomsPrices")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶ュ叧閲戦");
+
+                    b.Property<string>("CustomsUnitName")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍗曚綅");
+
+                    b.Property<int>("InspectionResults")
+                        .HasColumnType("int")
+                        .HasComment("妫�楠岀粨鏋�");
+
+                    b.Property<decimal>("InventoryQty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍏ュ簱鏁伴噺");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("ItemNo")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧椤瑰彿");
+
+                    b.Property<string>("Materialcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("Materialname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<long>("OID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+                    b.Property<long>("OrderId")
+                        .HasMaxLength(50)
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁Id");
+
+                    b.Property<int>("OrderStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍗曟嵁鐘舵��");
+
+                    b.Property<string>("PlaceCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<decimal>("Price")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("涓嶅惈绋庡崟浠�");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("椤圭洰缂栧彿");
+
+                    b.Property<decimal>("Qty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏁伴噺");
+
+                    b.Property<decimal>("SingleLength")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍗曟牴闀垮害");
+
+                    b.Property<string>("SpecialNeeds")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗规畩瑕佹眰");
+
+                    b.Property<decimal>("SumPrice")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎴愭湰閲戦");
+
+                    b.Property<string>("TACode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("TA鍙�");
+
+                    b.Property<decimal>("TheoreticalWeight")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鐞嗚閲嶉噺");
+
+                    b.Property<string>("TradeName")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍝佸悕");
+
+                    b.Property<string>("Unit")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍩烘湰鍗曚綅");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OrderId");
+
+                    b.ToTable("wms_order_details");
+
+                    b.HasComment("鍗曟嵁鏄庣粏琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsOrderType", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("LesWorkShopType")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炶溅闂�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<long>("Pid")
+                        .HasColumnType("bigint")
+                        .HasComment("鐖禝d");
+
+                    b.Property<string>("Pids")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鐖禝ds");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Sort")
+                        .HasColumnType("int")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_order_type");
+
+                    b.HasComment("鍗曟嵁绫诲瀷缁存姢琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsPdaPower", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Clolor")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("棰滆壊");
+
+                    b.Property<string>("Code")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("Icon")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍥炬爣");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<int>("WorkShopType")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炶溅闂�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_pdapower");
+
+                    b.HasComment("PDA鑿滃崟琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsPlace", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AgvCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅瀵瑰簲AGV缂栫爜");
+
+                    b.Property<int>("Aisle")
+                        .HasColumnType("int")
+                        .HasComment("宸烽亾");
+
+                    b.Property<long>("AreaId")
+                        .HasColumnType("bigint")
+                        .HasComment("鎵�鍦ㄥ簱鍖�");
+
+                    b.Property<int>("ColumnNo")
+                        .HasColumnType("int")
+                        .HasComment("鍒�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<int>("DeepcellNo")
+                        .HasColumnType("int")
+                        .HasComment("杩涙繁鍙�");
+
+                    b.Property<int>("EmptyContainer")
+                        .HasColumnType("int")
+                        .HasComment("鏄惁绌烘墭");
+
+                    b.Property<decimal>("Height")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("搴撲綅楂樺害");
+
+                    b.Property<int>("HeightLevel")
+                        .HasColumnType("int")
+                        .HasComment("搴撲綅楂樺害灞炴��");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("Islock")
+                        .HasColumnType("int")
+                        .HasComment("鏄惁閿佸畾");
+
+                    b.Property<int>("LayerNo")
+                        .HasColumnType("int")
+                        .HasComment("灞�");
+
+                    b.Property<decimal>("Length")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("搴撲綅闀垮害");
+
+                    b.Property<int>("Line")
+                        .HasColumnType("int")
+                        .HasComment("绾垮彿");
+
+                    b.Property<int>("LogicalName")
+                        .HasColumnType("int")
+                        .HasComment("閫昏緫鍖哄煙");
+
+                    b.Property<decimal>("MaxWeight")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏈�澶ф壙閲�");
+
+                    b.Property<string>("PlaceCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<int>("PlaceStatus")
+                        .HasColumnType("int")
+                        .HasComment("搴撲綅鐘舵��");
+
+                    b.Property<string>("PositionnoForSrm")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆");
+
+                    b.Property<int>("Priority")
+                        .HasColumnType("int")
+                        .HasComment("浼樺厛绾�");
+
+                    b.Property<int>("RowNo")
+                        .HasColumnType("int")
+                        .HasComment("鎺�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<decimal>("Width")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("搴撲綅瀹藉害");
+
+                    b.Property<string>("Xzb")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅X鍧愭爣");
+
+                    b.Property<string>("Yzb")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅Y鍧愭爣");
+
+                    b.Property<string>("Zzb")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅Z鍧愭爣");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("AreaId");
+
+                    b.ToTable("wms_place");
+
+                    b.HasComment("搴撲綅琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("Billdate")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃ユ湡");
+
+                    b.Property<string>("Companyname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍏徃鍚嶇О");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DeclarationCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍗曞彿");
+
+                    b.Property<int>("InspectionStatus")
+                        .HasColumnType("int")
+                        .HasComment("鎶ユ鐘舵��");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Majorname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("涓撲笟");
+
+                    b.Property<string>("NO")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍗曟嵁缂栧彿");
+
+                    b.Property<long>("OrderLargeCategory")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁澶х被");
+
+                    b.Property<long>("OrderSubclass")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁灏忕被");
+
+                    b.Property<int>("ReceivingStatus")
+                        .HasColumnType("int")
+                        .HasComment("鏀惰揣鐘舵��");
+
+                    b.Property<string>("Remarks")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<long>("SOID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+                    b.Property<string>("SourceBillNo")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("閫佽揣閫氱煡鍗曞彿");
+
+                    b.Property<string>("StoreRoomname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撻棿");
+
+                    b.Property<int>("TradeMode")
+                        .HasColumnType("int")
+                        .HasComment("璐告槗鏂瑰紡");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("Vendorcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("渚涘簲鍟嗙紪鐮�");
+
+                    b.Property<string>("Vendorname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("渚涘簲鍟嗗悕绉�");
+
+                    b.Property<string>("WMSNO")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("WMS鏀惰揣鍗曞彿");
+
+                    b.Property<string>("WarehouseCentername")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撳偍涓績");
+
+                    b.Property<string>("WarehouseKeepername")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撶鍛�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_receiptorder");
+
+                    b.HasComment("鏀惰揣鍗�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrderDetails", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("ContainerCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎵樼洏缂栫爜");
+
+                    b.Property<string>("ContractCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍚堝悓缂栧彿");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<decimal>("CustomsNum")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶ュ叧鏁伴噺");
+
+                    b.Property<decimal>("CustomsPrices")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎶ュ叧閲戦");
+
+                    b.Property<string>("CustomsUnitName")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍗曚綅");
+
+                    b.Property<decimal>("DeliveryQty")
+                        .HasMaxLength(50)
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("閫佽揣鏁伴噺");
+
+                    b.Property<int>("InspectionResultsEnum")
+                        .HasColumnType("int")
+                        .HasComment("鎶ユ缁撴灉");
+
+                    b.Property<int>("InspectionStatus")
+                        .HasColumnType("int")
+                        .HasComment("鎶ユ鐘舵��");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("ItemNo")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧椤瑰彿");
+
+                    b.Property<string>("Materialcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("Materialname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<long>("OID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+                    b.Property<long>("OrderId")
+                        .HasMaxLength(50)
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁Id");
+
+                    b.Property<string>("PlaceCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<decimal>("Price")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("涓嶅惈绋庡崟浠�");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("椤圭洰缂栧彿");
+
+                    b.Property<decimal>("Qty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏁伴噺");
+
+                    b.Property<decimal>("ReceivedQty")
+                        .HasMaxLength(50)
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏀惰揣鏁伴噺");
+
+                    b.Property<int>("ReceivingStatus")
+                        .HasColumnType("int")
+                        .HasComment("鏀惰揣鐘舵��");
+
+                    b.Property<decimal>("SingleLength")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍗曟牴闀垮害");
+
+                    b.Property<string>("SpecialNeeds")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗规畩瑕佹眰");
+
+                    b.Property<decimal>("SumPrice")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鎴愭湰閲戦");
+
+                    b.Property<string>("TACode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("TA鍙�");
+
+                    b.Property<decimal>("TheoreticalWeight")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鐞嗚閲嶉噺");
+
+                    b.Property<string>("TradeName")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎶ュ叧鍝佸悕");
+
+                    b.Property<string>("Unit")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍩烘湰鍗曚綅");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OrderId");
+
+                    b.ToTable("wms_receiptorder_details");
+
+                    b.HasComment("鏀惰揣鍗曟嵁鏄庣粏琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsSortOrder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<decimal>("ActualQuantity")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("瀹為檯鍒嗘嫞鏁�");
+
+                    b.Property<string>("ContainerCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("瀹瑰櫒缂栧彿");
+
+                    b.Property<string>("ContainerOrderNo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒嗘嫞缁勭洏鍗曞彿");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Materialcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("Materialname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<long>("OrderDetailID")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("OrderNo")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鏉ユ簮鍗曞彿");
+
+                    b.Property<string>("PartCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍒嗘鍙�");
+
+                    b.Property<string>("PlaceCode")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("椤圭洰缂栧彿");
+
+                    b.Property<string>("Remarks")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<decimal>("SortQuantity")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍒嗘嫞鏁�");
+
+                    b.Property<int>("SortStatus")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2");
+
+                    b.Property<string>("TACode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("TA鍙�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_sortorder");
+
+                    b.HasComment("鍒嗘嫞琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("BenefitingDepartcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("棰嗘枡閮ㄩ棬");
+
+                    b.Property<DateTimeOffset?>("Billdate")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("閫�鏂欑敵璇锋棩鏈�");
+
+                    b.Property<string>("Companyname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍏徃");
+
+                    b.Property<string>("ConstructionTeamID")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鏂藉伐闃�");
+
+                    b.Property<string>("CostCenterID")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鏀剁泭閮ㄩ棬");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("FI_Client_Analysis_H")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("瀹㈡埛");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("MoveType")
+                        .HasColumnType("int")
+                        .HasComment("浜嬪姟绫诲瀷");
+
+                    b.Property<string>("NO")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍗曟嵁缂栧彿");
+
+                    b.Property<long>("OrderLargeCategory")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁澶х被");
+
+                    b.Property<int>("OrderStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍗曟嵁鐘舵��");
+
+                    b.Property<long>("OrderSubclass")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁灏忕被");
+
+                    b.Property<string>("PickerID")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("棰嗗彇浜�");
+
+                    b.Property<long>("SOID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("WBSElementcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("棰嗙敤椤圭洰鍙�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_stockreturn_order");
+
+                    b.HasComment("閫�鏂欏叆搴撳崟");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrderDetails", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Batchno_SCM")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("SCM鎵规鍙�");
+
+                    b.Property<string>("Batchno_WMS")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("WMS鎵规鍙�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<decimal>("Length")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍗曟牴闀垮害");
+
+                    b.Property<string>("Materialcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("Materialname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<decimal>("Number")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("浠舵暟");
+
+                    b.Property<long>("OID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+                    b.Property<long>("OrderId")
+                        .HasMaxLength(50)
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁Id");
+
+                    b.Property<string>("PartCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍒嗘鍙�");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("椤圭洰缂栧彿");
+
+                    b.Property<decimal>("Qty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏁伴噺");
+
+                    b.Property<string>("TACode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("TA鍙�");
+
+                    b.Property<string>("Unit")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍩烘湰鍗曚綅");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OrderId");
+
+                    b.ToTable("wms_stockreturn_order_details");
+
+                    b.HasComment("閫�鏂欏叆搴撳崟璇︽儏");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrder", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("BenefitingDepartcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("棰嗘枡閮ㄩ棬");
+
+                    b.Property<DateTimeOffset?>("Billdate")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("棰嗘枡鍗曠敵璇锋棩鏈�");
+
+                    b.Property<string>("Companyname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍏徃");
+
+                    b.Property<string>("ConstructionTeamID")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鏂藉伐闃�");
+
+                    b.Property<string>("CostCenterID")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍙楃泭閮ㄩ棬");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("FI_Client_Analysis_H")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("瀹㈡埛");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<long>("IsInnerCompany")
+                        .HasColumnType("bigint")
+                        .HasComment("鏄惁鍏徃闂翠氦鏄�");
+
+                    b.Property<string>("MoveType")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("浜嬪姟绫诲瀷");
+
+                    b.Property<string>("NO")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍗曟嵁缂栧彿");
+
+                    b.Property<long>("OrderLargeCategory")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁澶х被");
+
+                    b.Property<int>("OrderStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍗曟嵁鐘舵��");
+
+                    b.Property<long>("OrderSubclass")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁灏忕被");
+
+                    b.Property<string>("PickerID")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("棰嗘枡浜�");
+
+                    b.Property<long>("SOID")
+                        .HasColumnType("bigint")
+                        .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("WBSElementcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("棰嗙敤椤圭洰鍙�");
+
+                    b.Property<string>("WarehouseCentername")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("浠撳偍涓績");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_takematerialorder");
+
+                    b.HasComment("棰嗘枡鍗�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrderDetail", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("Batchno_SCM")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("SCM鎵规鍙�");
+
+                    b.Property<string>("Batchno_WMS")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("WMS鎵规鍙�");
+
+                    b.Property<string>("ContainerCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎵樼洏缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<decimal>("DistributeQty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("涓嬪彂鏁伴噺");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("Materialcode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡缂栧彿");
+
+                    b.Property<string>("Materialname")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鐗╂枡鍚嶇О");
+
+                    b.Property<decimal>("Number")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("浠舵暟");
+
+                    b.Property<long>("OID")
+                        .HasColumnType("bigint")
+                        .HasComment("SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑");
+
+                    b.Property<long>("OrderId")
+                        .HasMaxLength(50)
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁Id");
+
+                    b.Property<int>("OrderStatus")
+                        .HasColumnType("int")
+                        .HasComment("鍗曟嵁鐘舵��");
+
+                    b.Property<string>("PartCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍒嗘鍙�");
+
+                    b.Property<string>("PlaceCode")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撲綅缂栫爜");
+
+                    b.Property<string>("ProjectCode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("椤圭洰缂栧彿");
+
+                    b.Property<decimal>("Qty")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鏁伴噺");
+
+                    b.Property<decimal>("SingleLength")
+                        .HasColumnType("decimal(18,2)")
+                        .HasComment("鍗曟牴闀垮害");
+
+                    b.Property<string>("TACode")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("TA鍙�");
+
+                    b.Property<string>("Unit")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍩烘湰鍗曚綅");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("OrderId");
+
+                    b.ToTable("wms_takematerial_orderdetail");
+
+                    b.HasComment("鍗曟嵁鏄庣粏琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsTask", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<int>("Aisle")
+                        .HasColumnType("int")
+                        .HasComment("宸烽亾");
+
+                    b.Property<string>("AreaName")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("搴撳尯鍚嶇О");
+
+                    b.Property<string>("ContainerCode")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鎵樼洏缂栧彿");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("Description")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍏ュ簱鏉ユ簮");
+
+                    b.Property<int>("DodeviceId")
+                        .HasColumnType("int")
+                        .HasComment("浠诲姟鎵ц鍫嗗灈鏈篒d");
+
+                    b.Property<string>("DodevicenodeId")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璁惧鎵ц鑺傜偣Id");
+
+                    b.Property<int>("Dodevicetype")
+                        .HasMaxLength(50)
+                        .HasColumnType("int")
+                        .HasComment("璁惧绫诲瀷");
+
+                    b.Property<int>("EmptyContainer")
+                        .HasColumnType("int")
+                        .HasComment("鏄惁绌烘墭");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<bool>("IsRead")
+                        .HasColumnType("bit")
+                        .HasComment("WCS鏄惁鍙互璇诲彇");
+
+                    b.Property<long>("OrderDetailsId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍗曟嵁鏄庣粏Id");
+
+                    b.Property<string>("OrderNo")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("缁勭洏璁板綍鍗曟嵁鍙�");
+
+                    b.Property<int>("SendTimes")
+                        .HasColumnType("int")
+                        .HasComment("鍙戦�佹鏁�");
+
+                    b.Property<string>("SourcePlace")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("璧峰搴撲綅");
+
+                    b.Property<int>("TaskDodeviceStatus")
+                        .HasColumnType("int")
+                        .HasComment("浠诲姟璁惧鐘舵��");
+
+                    b.Property<int>("TaskLevel")
+                        .HasColumnType("int")
+                        .HasComment("浠诲姟绾у埆");
+
+                    b.Property<int>("TaskModel")
+                        .HasColumnType("int")
+                        .HasComment("浠诲姟鏂瑰紡");
+
+                    b.Property<string>("TaskNo")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("浠诲姟鍙�");
+
+                    b.Property<int>("TaskStatus")
+                        .HasColumnType("int")
+                        .HasComment("浠诲姟鐘舵��");
+
+                    b.Property<int>("TaskType")
+                        .HasColumnType("int")
+                        .HasComment("浠诲姟绫诲瀷");
+
+                    b.Property<string>("ToPlace")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鐩爣搴撲綅");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_task");
+
+                    b.HasComment("浠诲姟绠$悊琛�");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsWarehouseEntrance", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<int>("AffiliatedRoadway")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炲贩閬�");
+
+                    b.Property<string>("Code")
+                        .IsRequired()
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("缂栫爜");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<int>("LesWorkShopType")
+                        .HasColumnType("int")
+                        .HasComment("鎵�灞炶溅闂�");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍚嶇О");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int>("Status")
+                        .HasColumnType("int")
+                        .HasComment("鐘舵��");
+
+                    b.Property<int>("Type")
+                        .HasColumnType("int")
+                        .HasComment("绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("wms_warehouse_entrance");
+
+                    b.HasComment("搴撳彛琛�");
+                });
+
+            modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCode", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AuthorName")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("浣滆�呭鍚�");
+
+                    b.Property<string>("BusName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("涓氬姟鍚�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DatabaseName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏁版嵁搴撳悕");
+
+                    b.Property<string>("FormDesign")
+                        .HasColumnType("text")
+                        .HasComment("鍔ㄦ�佽〃鍗�");
+
+                    b.Property<int>("FormDesignType")
+                        .HasColumnType("int")
+                        .HasComment("鍔ㄦ�佽〃鍗曠被鍨�");
+
+                    b.Property<string>("GenerateType")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("鐢熸垚鏂瑰紡");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("MenuApplication")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鑿滃崟搴旂敤鍒嗙被");
+
+                    b.Property<long>("MenuPid")
+                        .HasColumnType("bigint")
+                        .HasComment("鑿滃崟缂栫爜");
+
+                    b.Property<string>("ModuleName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("妯″潡鍚�,鐢ㄤ簬鐢熸垚鐨勬枃浠跺す鐩綍");
+
+                    b.Property<string>("NameSpace")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍛藉悕绌洪棿");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_low_code_module");
+
+                    b.HasComment("浣庝唬鐮佹ā鍧楃鐞�");
+                });
+
+            modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCodeDataBase", b =>
+                {
+                    b.Property<Guid>("Id")
+                        .HasColumnType("uniqueidentifier")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("ClassName")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("绫诲悕");
+
+                    b.Property<string>("Control_Key")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("缁勪欢Key");
+
+                    b.Property<string>("Control_Label")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("缁勪欢鍚嶇О");
+
+                    b.Property<string>("Control_Model")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("缁勪欢瀛楁");
+
+                    b.Property<string>("Control_Type")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("缁勪欢瀛楁");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DbParam")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("鏁版嵁绫诲瀷琛ュ厖鍙傛暟");
+
+                    b.Property<string>("DbTypeName")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("鏁版嵁绫诲瀷");
+
+                    b.Property<string>("DtoTypeName")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("浼犲叆鏁版嵁绫诲瀷");
+
+                    b.Property<string>("FieldName")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("瀛楁鍚嶇О");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<bool?>("IsRequired")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁蹇呭~");
+
+                    b.Property<string>("QueryType")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鏌ヨ鏂瑰紡");
+
+                    b.Property<bool?>("QueryWhether")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鏄煡璇�");
+
+                    b.Property<long>("SysLowCodeId")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("TableDesc")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("琛ㄦ弿杩�");
+
+                    b.Property<string>("TableName")
+                        .HasMaxLength(200)
+                        .HasColumnType("nvarchar(200)")
+                        .HasComment("琛ㄥ悕");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<bool?>("WhetherAddUpdate")
+                        .HasColumnType("bit")
+                        .HasComment("澧炴敼");
+
+                    b.Property<bool?>("WhetherOrderBy")
+                        .HasColumnType("bit")
+                        .HasComment("鎺掑簭");
+
+                    b.Property<bool?>("WhetherTable")
+                        .HasColumnType("bit")
+                        .HasComment("鍒楄〃鏄剧ず");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("SysLowCodeId");
+
+                    b.ToTable("sys_low_code_module_database");
+
+                    b.HasComment("浣庝唬鐮佹ā鍧楃鐞�");
+                });
+
+            modelBuilder.Entity("Furion.Extras.Admin.NET.SysCodeModular", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("AuthorName")
+                        .HasMaxLength(20)
+                        .HasColumnType("nvarchar(20)")
+                        .HasComment("浣滆�呭鍚�");
+
+                    b.Property<string>("BusName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("涓氬姟鍚�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<string>("DatabaseName")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鏁版嵁搴撳悕");
+
+                    b.Property<string>("FormDesignJson")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("鍔ㄦ�佽〃鍗�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("MenuApplication")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鑿滃崟搴旂敤鍒嗙被");
+
+                    b.Property<long>("MenuPid")
+                        .HasColumnType("bigint")
+                        .HasComment("鑿滃崟缂栫爜");
+
+                    b.Property<string>("NameSpace")
+                        .HasMaxLength(100)
+                        .HasColumnType("nvarchar(100)")
+                        .HasComment("鍛藉悕绌洪棿");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("sys_code_modular");
+
+                    b.HasComment("鍔ㄦ�佺敓鎴愭ā鍧楃鐞嗚〃");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.Entity.WmsBase.WmsRolePdaMenu", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsPdaPower", "WmsPdaPower")
+                        .WithMany("WmsRolePdaMenus")
+                        .HasForeignKey("PdaMenuId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+                        .WithMany("WmsRolePdaMenus")
+                        .HasForeignKey("SysRoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysRole");
+
+                    b.Navigation("WmsPdaPower");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.LesEntrance", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsArea", "WmsArea")
+                        .WithMany("LesEntrance")
+                        .HasForeignKey("AreaId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WmsArea");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysDictData", b =>
+                {
+                    b.HasOne("Admin.NET.Core.SysDictType", "SysDictType")
+                        .WithMany("SysDictDatas")
+                        .HasForeignKey("TypeId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysDictType");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysEmpExtOrgPos", b =>
+                {
+                    b.HasOne("Admin.NET.Core.SysEmp", "SysEmp")
+                        .WithMany()
+                        .HasForeignKey("SysEmpId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysOrg", "SysOrg")
+                        .WithMany()
+                        .HasForeignKey("SysOrgId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysPos", "SysPos")
+                        .WithMany()
+                        .HasForeignKey("SysPosId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysEmp");
+
+                    b.Navigation("SysOrg");
+
+                    b.Navigation("SysPos");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysEmpPos", b =>
+                {
+                    b.HasOne("Admin.NET.Core.SysEmp", "SysEmp")
+                        .WithMany("SysEmpPos")
+                        .HasForeignKey("SysEmpId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysPos", "SysPos")
+                        .WithMany("SysEmpPos")
+                        .HasForeignKey("SysPosId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysEmp");
+
+                    b.Navigation("SysPos");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysRoleDataScope", b =>
+                {
+                    b.HasOne("Admin.NET.Core.SysOrg", "SysOrg")
+                        .WithMany("SysRoleDataScopes")
+                        .HasForeignKey("SysOrgId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+                        .WithMany("SysRoleDataScopes")
+                        .HasForeignKey("SysRoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysOrg");
+
+                    b.Navigation("SysRole");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysRoleMenu", b =>
+                {
+                    b.HasOne("Admin.NET.Core.SysMenu", "SysMenu")
+                        .WithMany("SysRoleMenus")
+                        .HasForeignKey("SysMenuId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+                        .WithMany("SysRoleMenus")
+                        .HasForeignKey("SysRoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysMenu");
+
+                    b.Navigation("SysRole");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysUserDataScope", b =>
+                {
+                    b.HasOne("Admin.NET.Core.SysOrg", "SysOrg")
+                        .WithMany("SysUserDataScopes")
+                        .HasForeignKey("SysOrgId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysUser", "SysUser")
+                        .WithMany("SysUserDataScopes")
+                        .HasForeignKey("SysUserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysOrg");
+
+                    b.Navigation("SysUser");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysUserRole", b =>
+                {
+                    b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+                        .WithMany("SysUserRoles")
+                        .HasForeignKey("SysRoleId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("Admin.NET.Core.SysUser", "SysUser")
+                        .WithMany("SysUserRoles")
+                        .HasForeignKey("SysUserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysRole");
+
+                    b.Navigation("SysUser");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsDumpOrderDetails", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsDumpOrder", "WmsDumpOrder")
+                        .WithMany("WmsDumpOrderDetails")
+                        .HasForeignKey("OrderId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WmsDumpOrder");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrderDetails", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsGoodsReturnOrder", "WmsGoodsReturnOrder")
+                        .WithMany("WmsGoodsReturnOrderDetails")
+                        .HasForeignKey("OrderId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WmsGoodsReturnOrder");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsHistoryMaterialContainer", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsMaterial", "WmsMaterial")
+                        .WithMany("WmsFoamingHistoryMaterialContainer")
+                        .HasForeignKey("MaterialId");
+
+                    b.Navigation("WmsMaterial");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsMaterialContainer", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsMaterial", "WmsMaterial")
+                        .WithMany("WmsFoamingMaterialContainer")
+                        .HasForeignKey("MaterialId");
+
+                    b.HasOne("Admin.NET.Core.WmsContainer", "WmsContainer")
+                        .WithMany()
+                        .HasForeignKey("WmsContainerId");
+
+                    b.Navigation("WmsContainer");
+
+                    b.Navigation("WmsMaterial");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsOrderDetails", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsOrder", "WareOrder")
+                        .WithMany("WareOrderDetails")
+                        .HasForeignKey("OrderId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WareOrder");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsPlace", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsArea", "WmsArea")
+                        .WithMany("WmsPlaces")
+                        .HasForeignKey("AreaId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WmsArea");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrderDetails", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsReceiptOrder", "WmsReceiptOrder")
+                        .WithMany("WmsReceiptOrderDetails")
+                        .HasForeignKey("OrderId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WmsReceiptOrder");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrderDetails", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsStockReturnOrder", "WmsStockReturnOrder")
+                        .WithMany("WmsStockReturnOrderDetails")
+                        .HasForeignKey("OrderId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WmsStockReturnOrder");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrderDetail", b =>
+                {
+                    b.HasOne("Admin.NET.Core.WmsTakeMaterialOrder", "WmsTakeMaterialOrder")
+                        .WithMany("WmsTakeMaterialOrderDetail")
+                        .HasForeignKey("OrderId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("WmsTakeMaterialOrder");
+                });
+
+            modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCodeDataBase", b =>
+                {
+                    b.HasOne("Furion.Extras.Admin.NET.Entity.SysLowCode", "SysLowCode")
+                        .WithMany("Databases")
+                        .HasForeignKey("SysLowCodeId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SysLowCode");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysDictType", b =>
+                {
+                    b.Navigation("SysDictDatas");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysEmp", b =>
+                {
+                    b.Navigation("SysEmpPos");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysMenu", b =>
+                {
+                    b.Navigation("SysRoleMenus");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysOrg", b =>
+                {
+                    b.Navigation("SysRoleDataScopes");
+
+                    b.Navigation("SysUserDataScopes");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysPos", b =>
+                {
+                    b.Navigation("SysEmpPos");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysRole", b =>
+                {
+                    b.Navigation("SysRoleDataScopes");
+
+                    b.Navigation("SysRoleMenus");
+
+                    b.Navigation("SysUserRoles");
+
+                    b.Navigation("WmsRolePdaMenus");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.SysUser", b =>
+                {
+                    b.Navigation("SysUserDataScopes");
+
+                    b.Navigation("SysUserRoles");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsArea", b =>
+                {
+                    b.Navigation("LesEntrance");
+
+                    b.Navigation("WmsPlaces");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsDumpOrder", b =>
+                {
+                    b.Navigation("WmsDumpOrderDetails");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrder", b =>
+                {
+                    b.Navigation("WmsGoodsReturnOrderDetails");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsMaterial", b =>
+                {
+                    b.Navigation("WmsFoamingHistoryMaterialContainer");
+
+                    b.Navigation("WmsFoamingMaterialContainer");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsOrder", b =>
+                {
+                    b.Navigation("WareOrderDetails");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsPdaPower", b =>
+                {
+                    b.Navigation("WmsRolePdaMenus");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrder", b =>
+                {
+                    b.Navigation("WmsReceiptOrderDetails");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrder", b =>
+                {
+                    b.Navigation("WmsStockReturnOrderDetails");
+                });
+
+            modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrder", b =>
+                {
+                    b.Navigation("WmsTakeMaterialOrderDetail");
+                });
+
+            modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCode", b =>
+                {
+                    b.Navigation("Databases");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/note/note.txt b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/note/note.txt
new file mode 100644
index 0000000..b8bab23
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/note/note.txt
@@ -0,0 +1,16 @@
+锘緼dd-Migration v1.0.0 -Context MultiTenantDbContext
+update-database v1.0.0 -Context MultiTenantDbContext
+
+
+Add-Migration v1.0.1 -Context DefaultDbContext
+update-database v1.0.1 -Context DefaultDbContext
+
+
+Add-Migration v1.0.0 -Context SecondDbContext
+update-database v1.0.0 -Context SecondDbContext
+
+Update-Database -Migration:0  -Context DefaultDbContext
+Remove-Migration -Context DefaultDbContext
+
+Scaffold-DbContext "Server=localhost;Database=yoke_test;User=sa;Password=123abc.com;MultipleActiveResultSets=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models2 -ContextDir Context2  -Context TestDbContext -Force
+Scaffold-DbContext "Server=localhost;Database=yoke_la21010;User=sa;Password=123abc.com;MultipleActiveResultSets=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models2 -ContextDir Models2  -Context  TestDbContext -Force
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Admin.NET.EntityFramework.Core.csproj b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Admin.NET.EntityFramework.Core.csproj
new file mode 100644
index 0000000..143d7bc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Admin.NET.EntityFramework.Core.csproj
@@ -0,0 +1,39 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>disable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <None Remove="dbsettings.Development-166.json" />
+    <None Remove="dbsettings.Development-鏈満.json" />
+  </ItemGroup>
+
+
+  <ItemGroup>
+    <Content Include="dbsettings.Development-鏈満.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="dbsettings.Development-166.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="dbsettings.Development.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="dbsettings.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.9" />
+    <PackageReference Include="Zack.EFCore.Batch.MSSQL_NET6" Version="6.1.3" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\Admin.NET.Core\Admin.NET.Core.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/DefaultDbContext.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/DefaultDbContext.cs
new file mode 100644
index 0000000..71bd224
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/DefaultDbContext.cs
@@ -0,0 +1,307 @@
+using Admin.NET.Core;
+using Admin.NET.Core.Entity;
+using Furion;
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Diagnostics;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using System.Linq.Expressions;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.EntityFramework.Core
+{
+    [AppDbContext("DefaultConnection", DbProvider.SqlServer)]
+    public class DefaultDbContext : AppDbContext<DefaultDbContext>, IModelBuilderFilter
+    {
+        public DefaultDbContext(DbContextOptions<DefaultDbContext> options) : base(options)
+        {
+            // 鍚敤瀹炰綋鏁版嵁鏇存敼鐩戝惉
+            EnabledEntityChangedListener = true;
+
+            // 蹇界暐绌哄�兼洿鏂�
+            InsertOrUpdateIgnoreNullValues = true;
+        }
+
+        /// <summary>
+        /// 鑾峰彇绉熸埛Id
+        /// </summary>
+        /// <returns></returns>
+        //public object GetTenantId()
+        //{
+        //    // 娴佺▼涓病鏈夌敤鍒板绉熸埛 杩欓噷榛樿杩斿洖涓�涓鎴�
+        //    if (App.User == null) return 142307070918780;
+        //    return Convert.ToInt64(App.User.FindFirst(ClaimConst.TENANT_ID)?.Value);
+        //}
+
+        protected override void OnModelCreating(ModelBuilder builder)
+        {
+            if (Database.ProviderName == DbProvider.Sqlite)
+            {
+                // SQLite does not have proper support for DateTimeOffset via Entity Framework Core, see the limitations
+                // here: https://docs.microsoft.com/en-us/ef/core/providers/sqlite/limitations#query-limitations
+                // To work around this, when the Sqlite database provider is used, all model properties of type DateTimeOffset
+                // use the DateTimeOffsetToBinaryConverter
+                // Based on: https://github.com/aspnet/EntityFrameworkCore/issues/10784#issuecomment-415769754
+                // This only supports millisecond precision, but should be sufficient for most use cases.
+                foreach (var entityType in builder.Model.GetEntityTypes())
+                {
+                    var properties = entityType.ClrType.GetProperties().Where(p => p.PropertyType == typeof(DateTimeOffset)
+                                                                                || p.PropertyType == typeof(DateTimeOffset?));
+                    foreach (var property in properties)
+                    {
+                        builder
+                            .Entity(entityType.Name)
+                            .Property(property.Name)
+                            .HasConversion(new DateTimeOffsetToBinaryConverter());
+                    }
+                }
+            }
+            // 澶勭悊mysql鏃跺尯闂 https://gitee.com/dotnetchina/Furion/issues/I3RSCO#note_5685893_link
+            else if (Database.ProviderName == DbProvider.MySql || Database.ProviderName == DbProvider.MySqlOfficial)
+            {
+                var converter = new ValueConverter<DateTimeOffset, DateTime>(v => v.LocalDateTime, v => v);
+
+                // 鎵弿绋嬪簭闆嗭紝鑾峰彇鏁版嵁搴撳疄浣撶浉鍏崇被鍨�
+                var types = App.EffectiveTypes.Where(t => (typeof(IPrivateEntity).IsAssignableFrom(t) || typeof(IPrivateModelBuilder).IsAssignableFrom(t))
+                     && t.IsClass && !t.IsAbstract && !t.IsGenericType && !t.IsInterface && !t.IsDefined(typeof(ManualAttribute), true));
+
+                if (types.Any())
+                {
+                    foreach (var item in types)
+                    {
+                        if (item.IsSubclassOf(typeof(DEntityBase)) || item.IsSubclassOf(typeof(EntityBase)))
+                        {
+                            foreach (var property in item.GetProperties())
+                            {
+                                if (property.PropertyType == typeof(DateTimeOffset?) || property.PropertyType == typeof(DateTimeOffset))
+                                {
+                                    builder.Entity(item).Property(property.Name).HasConversion(converter);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+            base.OnModelCreating(builder);
+        }
+
+        /// <summary>
+        /// 閰嶇疆绉熸埛Id杩囨护鍣�
+        /// </summary>
+        /// <param name="modelBuilder"></param>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="dbContextLocator"></param>
+        public void OnCreating(ModelBuilder modelBuilder, EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)
+        {
+            // 閰嶇疆鍋囧垹闄よ繃婊ゅ櫒
+            LambdaExpression expression = FakeDeleteQueryFilterExpression(entityBuilder, dbContext);
+            if (expression != null)
+                entityBuilder.HasQueryFilter(expression);
+            // 閰嶇疆鏁版嵁鏉冮檺鍔ㄦ�佽〃杈惧紡
+            LambdaExpression dataScopesExpression = DataScopesFilterExpression(entityBuilder, dbContext);
+            if (dataScopesExpression != null)
+                entityBuilder.HasQueryFilter(dataScopesExpression);
+        }
+
+        protected override void SavingChangesEvent(DbContextEventData eventData, InterceptionResult<int> result)
+        {
+            // 鑾峰彇褰撳墠浜嬩欢瀵瑰簲涓婁笅鏂�
+            var dbContext = eventData.Context;
+            // 鑾峰彇鎵�鏈夋洿鏀癸紝鍒犻櫎锛屾柊澧炵殑瀹炰綋锛屼絾鎺掗櫎瀹¤瀹炰綋锛堥伩鍏嶆寰幆锛�
+            var entities = dbContext.ChangeTracker.Entries()
+                  .Where(u => u.Entity.GetType() != typeof(SysLogAudit) && u.Entity.GetType() != typeof(SysLogOp) &&
+                              u.Entity.GetType() != typeof(SysLogVis) && u.Entity.GetType() != typeof(SysLogEx) &&
+                        (u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added)).ToList();
+            if (entities == null || entities.Count < 1) return;
+
+            //// 鍒ゆ柇鏄惁鏄紨绀虹幆澧�
+            //var demoEnvFlag = App.GetService<ISysConfigService>().GetDemoEnvFlag().GetAwaiter().GetResult();
+            //if (demoEnvFlag)
+            //{
+            //    var sysUser = entities.Find(u => u.Entity.GetType() == typeof(SysUser));
+            //    if (sysUser == null || string.IsNullOrEmpty((sysUser.Entity as SysUser).LastLoginTime.ToString())) // 鎺掗櫎鐧诲綍
+            //        throw Oops.Oh(ErrorCode.D1200);
+            //}
+
+            // 褰撳墠鎿嶄綔鑰呬俊鎭�
+            var userId = App.User?.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
+            //璇诲彇鐨勭敤鎴峰悕鏀逛负 鏄电О锛岃�屼笉鏄处鍙� 銆怑ditby shaocx,2024-04-20銆�
+            //var userName = App.User?.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value;
+            var userName = App.User?.FindFirst(ClaimConst.CLAINM_NAME)?.Value;
+            // 褰撳墠鎿嶄綔鑰呮満鏋勪俊鎭�
+            var orgId = App.User?.FindFirst(ClaimConst.CLAINM_ORGID)?.Value;
+            var orgName = App.User?.FindFirst(ClaimConst.CLAINM_ORGNAME)?.Value;
+
+            foreach (var entity in entities)
+            {
+                if (entity.Entity.GetType().IsSubclassOf(typeof(DEntityBase)))
+                {
+                    var obj = entity.Entity as DEntityBase;
+                    if (entity.State == EntityState.Added)
+                    {
+                        obj.Id = obj.Id == 0 ? YitIdHelper.NextId() : obj.Id;
+                        obj.CreatedTime = DateTimeOffset.Now;
+                        if (!string.IsNullOrEmpty(userId))
+                        {
+                            obj.CreatedUserId = long.Parse(userId);
+                            obj.CreatedUserName = userName;
+                            if (entity.Entity.GetType().GetInterface(typeof(IDataPermissions).Name) != null)
+                            {
+                                ((IDataPermissions)obj).CreatedUserOrgId = long.Parse(orgId);
+                                ((IDataPermissions)obj).CreatedUserOrgName = orgName;
+                            }
+                        }
+                    }
+                    else if (entity.State == EntityState.Modified)
+                    {
+                        // 鎺掗櫎鍒涘缓浜�
+                        entity.Property(nameof(DEntityBase.CreatedUserId)).IsModified = false;
+                        entity.Property(nameof(DEntityBase.CreatedUserName)).IsModified = false;
+                        // 鎺掗櫎鍒涘缓鏃ユ湡
+                        entity.Property(nameof(DEntityBase.CreatedTime)).IsModified = false;
+
+                        obj.UpdatedTime = DateTimeOffset.Now;
+                        if (!string.IsNullOrEmpty(userId))
+                        {
+                            obj.UpdatedUserId = long.Parse(userId);
+                            obj.UpdatedUserName = userName;
+                        }
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鏋勫缓绉熸埛Id浠ュ強鍋囧垹闄よ繃婊ゅ櫒
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="isDeletedKey"></param>
+        /// <param name="filterValue"></param>
+        /// <returns></returns>
+        protected static LambdaExpression FakeDeleteQueryFilterExpression(EntityTypeBuilder entityBuilder, DbContext dbContext, string onTableTenantId = null, string isDeletedKey = null, object filterValue = null)
+        {
+            //onTableTenantId ??= "TenantId";
+            isDeletedKey ??= "IsDeleted";
+            IMutableEntityType metadata = entityBuilder.Metadata;
+            //if (metadata.FindProperty(onTableTenantId) == null && metadata.FindProperty(isDeletedKey) == null)
+            //{
+            //    return null;
+            //}
+            //瑙e喅瀹炰綋缁ф壙鎶ラ敊闂锛屽熀绫昏〃鎵嶆湁IsDeleted銆乀enantId瀛楁
+            if (metadata.BaseType != null)
+            {
+                return null;
+            }
+
+            Expression finialExpression = Expression.Constant(true);
+            ParameterExpression parameterExpression = Expression.Parameter(metadata.ClrType, "u");
+
+
+            // 鍋囧垹闄よ繃婊ゅ櫒
+            if (metadata.FindProperty(isDeletedKey) != null)
+            {
+                ConstantExpression constantExpression = Expression.Constant(isDeletedKey);
+                ConstantExpression right = Expression.Constant(filterValue ?? false);
+                var fakeDeleteQueryExpression = Expression.Equal(Expression.Call(typeof(EF), "Property", new Type[1]
+                {
+                    typeof(bool)
+                }, parameterExpression, constantExpression), right);
+                finialExpression = Expression.AndAlso(finialExpression, fakeDeleteQueryExpression);
+            }
+
+            return Expression.Lambda(finialExpression, parameterExpression);
+        }
+
+        #region 鏁版嵁鏉冮檺
+
+        /// <summary>
+        /// 鑾峰彇鐢ㄦ埛Id
+        /// </summary>
+        /// <returns></returns>
+        public object GetUserId()
+        {
+            if (App.User == null) return null;
+            return App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏁版嵁鑼冨洿
+        /// </summary>
+        /// <returns></returns>
+        public List<object> GetDataScopes()
+        {
+            var userId = this.GetUserId();
+            if (userId == null)
+            {
+                return new List<object>();
+            }
+
+            var dataScopes = JsonUtil.FromJson<List<object>>(App.User.FindFirst(ClaimConst.DATA_SCOPES)?.Value);
+            if (dataScopes != null)
+            {
+                return dataScopes;
+            }
+            return new List<object>();
+        }
+
+        /// <summary>
+        /// 鏋勫缓鏁版嵁鑼冨洿杩囨护鍣�
+        /// </summary>
+        /// <param name="entityBuilder"></param>
+        /// <param name="dbContext"></param>
+        /// <param name="onTableCreatedUserId"></param>
+        /// <param name="onTableCreatedUserOrgId"></param>
+        /// <param name="filterValue"></param>
+        /// <returns></returns>
+        protected LambdaExpression DataScopesFilterExpression(EntityTypeBuilder entityBuilder, DbContext dbContext, string onTableCreatedUserId = null, string onTableCreatedUserOrgId = null)
+        {
+            onTableCreatedUserId ??= nameof(IDataPermissions.CreatedUserId);//鐢ㄦ埛id瀛楁
+            onTableCreatedUserOrgId ??= nameof(IDataPermissions.CreatedUserOrgId);//鐢ㄦ埛閮ㄩ棬瀛楁
+
+            IMutableEntityType metadata = entityBuilder.Metadata;
+            if (metadata.FindProperty(onTableCreatedUserId) == null || metadata.FindProperty(onTableCreatedUserOrgId) == null)
+            {
+                return null;
+            }
+
+            Expression finialExpression = Expression.Constant(true);
+            ParameterExpression parameterExpression = Expression.Parameter(metadata.ClrType, "u");
+
+            // 涓汉鐢ㄦ埛鏁版嵁杩囨护鍣�
+            if (metadata.FindProperty(onTableCreatedUserId) != null)
+            {
+                ConstantExpression constantExpression = Expression.Constant(onTableCreatedUserId);
+                MethodCallExpression right = Expression.Call(Expression.Constant(dbContext), dbContext.GetType().GetMethod("GetUserId"));
+                finialExpression = Expression.AndAlso(finialExpression, Expression.Equal(Expression.Call(typeof(EF), "Property", new Type[1]
+                {
+                        typeof(object)
+                }, parameterExpression, constantExpression), right));
+            }
+
+            //鏁版嵁鏉冮檺杩囨护鍣�
+            if (metadata.FindProperty(onTableCreatedUserOrgId) != null)
+            {
+                ConstantExpression constantExpression = Expression.Constant(onTableCreatedUserOrgId);
+
+                MethodCallExpression dataScopesLeft = Expression.Call(Expression.Constant(dbContext), dbContext.GetType().GetMethod("GetDataScopes"));
+                var firstOrDefaultCall = Expression.Call(typeof(EF), "Property", new Type[1]
+                    {
+                        typeof(object)
+                    }, parameterExpression, constantExpression);
+
+                var createdUserOrgIdQueryExpression = Expression.Call(dataScopesLeft, typeof(List<object>).GetMethod("Contains"), firstOrDefaultCall);
+
+                finialExpression = Expression.Or(finialExpression, createdUserOrgIdQueryExpression);
+            }
+
+            return Expression.Lambda(finialExpression, parameterExpression);
+        }
+
+        #endregion 鏁版嵁鏉冮檺
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/MultiTenantDbContext.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/MultiTenantDbContext.cs
new file mode 100644
index 0000000..a2bfa6f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/MultiTenantDbContext.cs
@@ -0,0 +1,62 @@
+using Admin.NET.Core;
+using Furion;
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Diagnostics;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.EntityFramework.Core
+{
+    [AppDbContext("MultiTenantConnection", DbProvider.Sqlite)]
+    public class MultiTenantDbContext : AppDbContext<MultiTenantDbContext, MultiTenantDbContextLocator>
+    {
+        public MultiTenantDbContext(DbContextOptions<MultiTenantDbContext> options) : base(options)
+        {
+        }
+
+        protected override void SavingChangesEvent(DbContextEventData eventData, InterceptionResult<int> result)
+        {
+            // 鑾峰彇鎵�鏈夊凡鏇存敼鐨勫疄浣�
+            var entities = eventData.Context.ChangeTracker.Entries()
+                                    .Where(u => u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added)
+                                    .ToList();
+
+            // 鍒ゆ柇鏄惁鏄紨绀虹幆澧�
+            //var demoEnvFlag = App.GetService<ISysConfigService>().GetDemoEnvFlag().GetAwaiter().GetResult();
+            //if (demoEnvFlag)
+            //{
+            //    var sysUser = entities.Find(u => u.Entity.GetType() == typeof(SysUser));
+            //    if (sysUser == null || string.IsNullOrEmpty((sysUser.Entity as SysUser).LastLoginTime.ToString())) // 鎺掗櫎鐧诲綍
+            //        throw Oops.Oh(ErrorCode.D1200);
+            //}
+
+            // 褰撳墠鎿嶄綔鐢ㄦ埛淇℃伅
+            var userId = App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
+            var userName = App.User.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value;
+
+            foreach (var entity in entities)
+            {
+                if (entity.Entity.GetType().IsSubclassOf(typeof(DEntityBase<long, MultiTenantDbContextLocator>)))
+                {
+                    var obj = entity.Entity as DEntityBase<long, MultiTenantDbContextLocator>;
+                    if (entity.State == EntityState.Added)
+                    {
+                        obj.Id = YitIdHelper.NextId();
+                        obj.CreatedTime = DateTimeOffset.Now;
+                        if (!string.IsNullOrEmpty(userId))
+                        {
+                            obj.CreatedUserId = long.Parse(userId);
+                            obj.CreatedUserName = userName;
+                        }
+                    }
+                    else if (entity.State == EntityState.Modified)
+                    {
+                        obj.UpdatedTime = DateTimeOffset.Now;
+                        obj.UpdatedUserId = long.Parse(userId);
+                        obj.UpdatedUserName = userName;
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Startup.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Startup.cs
new file mode 100644
index 0000000..5fc6a93
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Startup.cs
@@ -0,0 +1,41 @@
+锘縰sing Furion;
+using Furion.DatabaseAccessor;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.EntityFramework.Core
+{
+    public class Startup : AppStartup
+    {
+        public void ConfigureServices(IServiceCollection services)
+        {
+            services.AddDatabaseAccessor(options =>
+            {
+                options.CustomizeMultiTenants(); // 鑷畾涔夌鎴�
+
+                options.AddDbPool<DefaultDbContext>(providerName: default, optionBuilder: (services, opt) =>
+                {
+                    opt.UseBatchEF_MSSQL(); // EF鎵归噺缁勪欢 --- SQlite鏁版嵁搴撳寘
+                });
+                //options.AddDbPool<ZdDbContext,ZdDbContextLocation>(DbProvider.SqlServer);
+                //options.AddDbPool<MultiTenantDbContext, MultiTenantDbContextLocator>();
+            }, "Admin.NET.Database.Migrations");
+        }
+
+        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
+        {
+            //// 鑷姩杩佺Щ鏁版嵁搴擄紙update-database鍛戒护锛�
+            //if (env.IsDevelopment())
+            //{
+            //    Scoped.Create((_, scope) =>
+            //    {
+            //        var context = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
+            //        context.Database.Migrate();
+            //    });
+            //}
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-166.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-166.json
new file mode 100644
index 0000000..bde05be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-166.json
@@ -0,0 +1,8 @@
+{
+  "$schema": "https://gitee.com/dotnetchina/Furion/raw/net6/schemas/v3/furion-schema.json",
+
+  "ConnectionStrings": {
+    //MSSQL杩炴帴瀛楃涓�
+    "DefaultConnection": "Server=10.10.40.166;Database=My_Admin.NET_Template;User=sa;Password=123abc.com;MultipleActiveResultSets=True;"
+  }
+}
\ No newline at end of file
diff --git "a/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-\346\234\254\346\234\272.json" "b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-\346\234\254\346\234\272.json"
new file mode 100644
index 0000000..c5e0380
--- /dev/null
+++ "b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-\346\234\254\346\234\272.json"
@@ -0,0 +1,8 @@
+{
+  "$schema": "https://gitee.com/dotnetchina/Furion/raw/net6/schemas/v3/furion-schema.json",
+
+  "ConnectionStrings": {
+    //MSSQL杩炴帴瀛楃涓�
+    "DefaultConnection": "Server=.;Database=My_Admin.NET_Template;User=sa;Password=123abc.com;MultipleActiveResultSets=True;"
+  }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.json
new file mode 100644
index 0000000..bde05be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.json
@@ -0,0 +1,8 @@
+{
+  "$schema": "https://gitee.com/dotnetchina/Furion/raw/net6/schemas/v3/furion-schema.json",
+
+  "ConnectionStrings": {
+    //MSSQL杩炴帴瀛楃涓�
+    "DefaultConnection": "Server=10.10.40.166;Database=My_Admin.NET_Template;User=sa;Password=123abc.com;MultipleActiveResultSets=True;"
+  }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj
new file mode 100644
index 0000000..3d7660a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj
@@ -0,0 +1,18 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Compile Remove="Handlers\WorkflowRegistHandler.cs" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\Admin.NET.Application\Admin.NET.Application.csproj" />
+    <ProjectReference Include="..\Admin.NET.Database.Migrations\Admin.NET.Database.Migrations.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Handlers/JwtHandler.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Handlers/JwtHandler.cs
new file mode 100644
index 0000000..1976072
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Handlers/JwtHandler.cs
@@ -0,0 +1,86 @@
+锘縰sing Admin.NET.Application;
+using Admin.NET.Core;
+using Admin.NET.Core.Options;
+using Furion;
+using Furion.Authorization;
+using Furion.DataEncryption;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Web.Core
+{
+    public class JwtHandler : AppAuthorizeHandler
+    {
+        /// <summary>
+        /// 閲嶅啓 Handler 娣诲姞鑷姩鍒锋柊
+        /// </summary>
+        /// <param name="context"></param>
+        /// <returns></returns>
+        public override async Task HandleAsync(AuthorizationHandlerContext context)
+        {
+            // 鑷姩鍒锋柊Token
+            if (JWTEncryption.AutoRefreshToken(context, context.GetCurrentHttpContext(),
+                App.GetOptions<JWTSettingsOptions>().ExpiredTime,
+                App.GetOptions<RefreshTokenSettingOptions>().ExpiredTime))
+            {
+                await AuthorizeHandleAsync(context);
+            }
+            else
+            {
+                context.Fail(); // 鎺堟潈澶辫触
+                DefaultHttpContext currentHttpContext = context.GetCurrentHttpContext();
+                if (currentHttpContext == null)
+                    return;
+                currentHttpContext.SignoutToSwagger();
+            }
+        }
+
+        /// <summary>
+        /// 鎺堟潈鍒ゆ柇閫昏緫锛屾巿鏉冮�氳繃杩斿洖 true锛屽惁鍒欒繑鍥� false
+        /// </summary>
+        /// <param name="context"></param>
+        /// <param name="httpContext"></param>
+        /// <returns></returns>
+        public override async Task<bool> PipelineAsync(AuthorizationHandlerContext context, DefaultHttpContext httpContext)
+        {
+            // 姝ゅ宸茬粡鑷姩楠岃瘉 Jwt Token鐨勬湁鏁堟�т簡锛屾棤闇�鎵嬪姩楠岃瘉
+            return await CheckAuthorzieAsync(httpContext);
+        }
+
+        /// <summary>
+        /// 妫�鏌ユ潈闄�
+        /// </summary>
+        /// <param name="httpContext"></param>
+        /// <returns></returns>
+        private static async Task<bool> CheckAuthorzieAsync(DefaultHttpContext httpContext)
+        {
+            // 绠$悊鍛樿烦杩囧垽鏂�
+            if (App.User.FindFirst(ClaimConst.CLAINM_SUPERADMIN)?.Value == ((int)AdminType.SuperAdmin).ToString()) return true;
+
+            // 璺敱鍚嶇О
+            var routeName = httpContext.Request.Path.Value[1..].Replace("/", ":");
+
+            // 榛樿璺敱(鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅)
+            var defalutRoute = new List<string>()
+            {
+                "getLoginUser",     //鐧诲綍
+                "sysMenu:change"    //鍒囨崲椤堕儴鑿滃崟
+            };
+
+            if (defalutRoute.Contains(routeName)) return true;
+
+            // 鑾峰彇鐢ㄦ埛鏉冮檺闆嗗悎锛堟寜閽垨API鎺ュ彛锛�
+            var allPermissionList = await App.GetService<ISysMenuService>().GetAllPermissionList();
+            var currUserId = Convert.ToInt64(App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value);
+            var permissionList = await App.GetService<ISysMenuService>().GetLoginPermissionList(currUserId);
+
+            // 妫�鏌ユ巿鏉�
+            // 鑿滃崟涓病鏈夐厤缃寜閽潈闄愶紝鍒欎笉闄愬埗
+            return allPermissionList.All(u => u != routeName) || permissionList.Contains(routeName);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/BStyleServiceExtension.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/BStyleServiceExtension.cs
new file mode 100644
index 0000000..bec19da
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/BStyleServiceExtension.cs
@@ -0,0 +1,51 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using System;
+
+namespace Admin.NET.Web.Core
+{
+    /// <summary>
+    /// B鏍�
+    /// </summary>
+    internal static class BStyleServiceExtension
+    {
+        public static void AddBStyle(this IServiceCollection services, Action<BStyleServiceBuilder> configure)
+        {
+            var builder = new BStyleServiceBuilder(services);
+            configure(builder);
+        }
+    }
+
+    internal class BStyleServiceBuilder
+    {
+        private IServiceCollection serviceCollection;
+
+        public BStyleServiceBuilder(IServiceCollection services)
+        {
+            serviceCollection = services;
+        }
+
+        public void UseDefault()
+        {
+            Console.ForegroundColor = ConsoleColor.Blue;
+            Console.WriteLine(@"  ___      _           _         _   _  _____ _____
+ / _ \    | |         (_)       | \ | ||  ___|_   _|
+/ /_\ \ __| |_ __ ___  _ _ __   |  \| || |__   | |
+|  _  |/ _` | '_ ` _ \| | '_ \  | . ` ||  __|  | |
+| | | | (_| | | | | | | | | | |_| |\  || |___  | |
+\_| |_/\__,_|_| |_| |_|_|_| |_(_)_| \_/\____/  \_/  ");
+            Console.ForegroundColor = ConsoleColor.Red;
+            Console.WriteLine(@"
+
+gitee: https://gitee.com/zuohuaijun/Admin.NET");
+            Console.ForegroundColor = ConsoleColor.Yellow;
+            Console.WriteLine(@"鏈熷緟鎮ㄧ殑PR锛岃.net鏇村ソ锛�
+
+");
+        }
+
+        public void UseOther()
+        {
+            System.Console.WriteLine(@"鍙︿竴涓狟Style");
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/SnowflakeIdServiceExtension.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/SnowflakeIdServiceExtension.cs
new file mode 100644
index 0000000..3a4b2c8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/SnowflakeIdServiceExtension.cs
@@ -0,0 +1,19 @@
+锘縰sing Furion;
+using Microsoft.Extensions.DependencyInjection;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.Web.Core
+{
+    /// <summary>
+    /// 闆姳id
+    /// </summary>
+    internal static class SnowflakeIdServiceExtension
+    {
+        public static void AddSnowflakeId(this IServiceCollection services)
+        {
+            // 璁剧疆闆姳Id鐨剋orkerId锛岀‘淇濇瘡涓疄渚媤orkerId閮藉簲涓嶅悓
+            var workerId = ushort.Parse(App.Configuration["SnowId:WorkerId"] ?? "1");
+            YitIdHelper.SetIdGenerator(new IdGeneratorOptions { WorkerId = workerId });
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Startup.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Startup.cs
new file mode 100644
index 0000000..c77bfdd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Startup.cs
@@ -0,0 +1,142 @@
+锘縰sing Admin.NET.Application;
+using Admin.NET.Core;
+using Admin.NET.Core.Extension;
+using Admin.NET.Core.Options;
+using Furion;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.HttpOverrides;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
+using OnceMi.AspNetCore.OSS;
+using Serilog;
+
+namespace Admin.NET.Web.Core
+{
+    public class Startup : AppStartup
+    {
+        public void ConfigureServices(IServiceCollection services)
+        {
+            services.AddBStyle(c => c.UseDefault());
+            services.AddConfigurableOptions<RefreshTokenSettingOptions>();
+            services.AddJwt<JwtHandler>(enableGlobalAuthorize: true);
+            services.AddCorsAccessor();
+            services.AddRemoteRequest();
+            services.AddControllersWithViews()
+                .AddNewtonsoftJson(options =>
+                {
+                    // 棣栧瓧姣嶅皬鍐�(椹煎嘲鏍峰紡)
+                    options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
+                    // 鏃堕棿鏍煎紡鍖�
+                    options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
+                    // 蹇界暐寰幆寮曠敤
+                    options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
+                    // 蹇界暐绌哄��
+                    // options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
+                })
+                .AddInjectWithUnifyResult<XnRestfulResultProvider>()
+                .AddMvcFilter<RequestActionFilter>();
+            services.AddViewEngine();
+            services.AddSignalR();
+            services.AddSnowflakeId(); // 闆姳Id
+            // 娉ㄥ唽EventBus鏈嶅姟
+            services.AddEventBus(builder =>
+            {
+                // 娉ㄥ唽 Log 鏃ュ織璁㈤槄鑰�
+                builder.AddSubscriber<LogEventSubscriber>();
+            });
+
+            if (App.Configuration["Cache:CacheType"] == "RedisCache")
+            {
+                //妗嗘灦鍘熸敞鍐孲tackExchangeRedisCache鏈嶅姟
+                //services.AddStackExchangeRedisCache(options =>
+                //{
+                //    options.Configuration = App.Configuration["Cache:RedisConnectionString"]; // redis杩炴帴閰嶇疆
+                //     options.InstanceName = App.Configuration["Cache:InstanceName"]; // 閿悕鍓嶇紑
+                // });
+
+                services.UseCsRedis();
+            }
+
+            //// default minio
+            //// 娣诲姞榛樿瀵硅薄鍌ㄥ瓨閰嶇疆淇℃伅
+            //services.AddOSSService(option =>
+            //{
+            //    option.Provider = OSSProvider.Minio;
+            //    option.Endpoint = "oss.oncemi.com:9000";
+            //    option.AccessKey = "Q*************9";
+            //    option.SecretKey = "A**************************Q";
+            //    option.IsEnableHttps = true;
+            //    option.IsEnableCache = true;
+            //});
+
+            // aliyun oss
+            // 娣诲姞鍚嶇О涓衡�榓liyunoss鈥欑殑OSS瀵硅薄鍌ㄥ瓨閰嶇疆淇℃伅
+            services.AddOSSService("aliyunoss", option =>
+            {
+                option.Provider = OSSProvider.Aliyun;
+                option.Endpoint = "oss-cn-hangzhou.aliyuncs.com";
+                option.AccessKey = "L*******************U";
+                option.SecretKey = "5*******************************T";
+                option.IsEnableCache = true;
+            });
+
+            //// qcloud oss
+            //// 浠庨厤缃枃浠朵腑鍔犺浇鑺傜偣涓衡�極SSProvider鈥欑殑閰嶇疆淇℃伅
+            //services.AddOSSService("QCloud", "OSSProvider");
+
+            //.net6涓嬩娇鐢∟pgsql鏁版嵁搴撴椂浣跨敤浠ヤ笅2琛岄厤缃�
+            //AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);//鍚敤閬楃暀鏃堕棿鎴宠涓�
+            //AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true);//绂佺敤鏃ユ湡鏃堕棿鏃犻檺杞崲
+        }
+
+        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
+        {
+            if (env.IsDevelopment())
+            {
+                app.UseDeveloperExceptionPage();
+            }
+            else
+            {
+                app.UseExceptionHandler("/Home/Error");
+                app.UseHsts();
+            }
+
+            //  NGINX 鍙嶅悜浠g悊鑾峰彇鐪熷疄IP
+            app.UseForwardedHeaders(new ForwardedHeadersOptions
+            {
+                ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
+            });
+
+            // 娣诲姞鐘舵�佺爜鎷︽埅涓棿浠�
+            app.UseUnifyResultStatusCodes();
+
+            app.UseHttpsRedirection(); // 寮哄埗https
+            app.UseStaticFiles();
+
+            // Serilog璇锋眰鏃ュ織涓棿浠�---蹇呴』鍦� UseStaticFiles 鍜� UseRouting 涔嬮棿
+            app.UseSerilogRequestLogging();
+
+            app.UseRouting();
+
+            app.UseCorsAccessor();
+
+            app.UseAuthentication();
+            app.UseAuthorization();
+
+            app.UseInject("swagger");
+
+            app.UseEndpoints(endpoints =>
+            {
+                endpoints.MapHub<ChatHub>("/hubs/chathub");
+
+                endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
+            });
+
+            // 寮�鍚嚜鍚姩瀹氭椂浠诲姟
+            //App.GetService<ISysTimerService>().StartTimerJob();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/.config/dotnet-tools.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/.config/dotnet-tools.json
new file mode 100644
index 0000000..fccc806
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/.config/dotnet-tools.json
@@ -0,0 +1,12 @@
+{
+  "version": 1,
+  "isRoot": true,
+  "tools": {
+    "dotnet-ef": {
+      "version": "7.0.0",
+      "commands": [
+        "dotnet-ef"
+      ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj
new file mode 100644
index 0000000..c35b08a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj
@@ -0,0 +1,58 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>
+  </PropertyGroup>
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <Nullable>disable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <NoWarn>1701;1702;RZ1026;RZ1010;RZ1008</NoWarn>
+    <TreatWarningsAsErrors>True</TreatWarningsAsErrors>
+    <WarningsNotAsErrors>RZ1026;RZ1010;RZ1008</WarningsNotAsErrors>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <NoWarn>1701;1702;RZ1026;RZ1010;RZ1008</NoWarn>
+    <TreatWarningsAsErrors>True</TreatWarningsAsErrors>
+    <WarningsNotAsErrors>RZ1026;RZ1010;RZ1008</WarningsNotAsErrors>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.7">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
+    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.16.1" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\Admin.NET.Web.Core\Admin.NET.Web.Core.csproj" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <!-- Drawing鏀寔linux -->
+    <RuntimeHostConfigurationOption Include="System.Drawing.EnableUnixSupport" Value="true" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Content Update="wwwroot\Template\Service.cs.vm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Folder Include="wwwroot\CodeGen\" />
+  </ItemGroup>
+
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties appsettings_1json__JsonSchema="" />
+    </VisualStudio>
+  </ProjectExtensions>
+
+</Project>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Controllers/HomeController.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Controllers/HomeController.cs
new file mode 100644
index 0000000..69eb120
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Controllers/HomeController.cs
@@ -0,0 +1,23 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Web.Entry.Controllers
+{
+    [AllowAnonymous]
+    public class HomeController : Controller
+    {
+        //private readonly ISystemService _systemService;
+
+        //public HomeController(ISystemService systemService)
+        //{
+        //    _systemService = systemService;
+        //}
+
+        //public IActionResult Index()
+        //{
+        //    ViewBag.Description = _systemService.GetDescription();
+
+        //    return View();
+        //}
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Program.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Program.cs
new file mode 100644
index 0000000..ebdf747
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Program.cs
@@ -0,0 +1,18 @@
+var builder = WebApplication.CreateBuilder(args).Inject();
+builder.Host.UseSerilogDefault().ConfigureAppConfiguration((hostingContext, config) =>
+{
+    config.AddJsonFile("applicationsettings.json", optional: true, reloadOnChange: true);
+});
+
+// 工作流注册
+//builder.Services.AddWorkflow(options =>
+//{
+//    options.UsePersistence(sp => sp.GetService<FurionPersistenceProvider>());
+//});
+// 工作流JSON注册
+//builder.Services.AddWorkflowDSL();
+
+var app = builder.Build();
+// 工作流注入
+//app.UseWorkflow();
+app.Run();
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Properties/launchSettings.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Properties/launchSettings.json
new file mode 100644
index 0000000..2524ee5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Properties/launchSettings.json
@@ -0,0 +1,44 @@
+{
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://localhost:8090",
+      "sslPort": 0
+    }
+  },
+  "profiles": {
+    "IIS Express": {
+      "commandName": "IISExpress",
+      "launchBrowser": true,
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "Development-Admin.NET": {
+      "commandName": "Project",
+      "launchBrowser": true,
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      },
+      "applicationUrl": "http://localhost:8090",
+      "launchUrl": "http://localhost:8090/swagger/",
+      "dotnetRunMessages": "true"
+    },
+    "Production-Admin.NET": {
+      "commandName": "Project",
+      "launchBrowser": true,
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Production"
+      },
+      "applicationUrl": "http://localhost:8090",
+      "dotnetRunMessages": "true"
+    },
+    "Docker": {
+      "commandName": "Docker",
+      "launchBrowser": true,
+      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
+      "publishAllPorts": true
+    }
+  }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Home/Index.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Home/Index.cshtml
new file mode 100644
index 0000000..007173b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Home/Index.cshtml
@@ -0,0 +1,12 @@
+锘緻{
+    ViewData["Title"] = ViewBag.Description;
+}
+
+<div style="text-align:center;margin-top:50px;">
+    <img src="~/images/logo.png" style="height:100px;" />
+    <div align="center">
+        <p><a href="https://gitee.com/dotnetchina/Furion/stargazers"><img src="https://gitee.com/dotnetchina/Furion/badge/star.svg?theme=gvp" alt="star"></a> <a href="https://gitee.com/dotnetchina/Furion/members"><img src="https://gitee.com/dotnetchina/Furion/badge/fork.svg?theme=gvp" alt="fork"></a> <a href="https://github.com/MonkSoul/Furion/stargazers"><img src="https://img.shields.io/github/stars/MonkSoul/Furion?logo=github" alt="GitHub stars"></a> <a href="https://github.com/MonkSoul/Furion/network"><img src="https://img.shields.io/github/forks/MonkSoul/Furion?logo=github" alt="GitHub forks"></a> <a href="https://github.com/MonkSoul/Furion/blob/main/LICENSE"><img src="https://img.shields.io/github/license/MonkSoul/Furion" alt="GitHub license"></a> <a href="https://www.nuget.org/packages/Furion"><img src="https://img.shields.io/nuget/v/Furion.svg?cacheSeconds=10800" alt="nuget"></a></p>
+    </div>
+    <p>@ViewBag.Description</p>
+    <p><a href="/api">API 鎺ュ彛</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://gitee.com/dotnetchina/Furion" target="_blank">婧愮爜鍦板潃</a></p>
+</div>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Shared/_Layout.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Shared/_Layout.cshtml
new file mode 100644
index 0000000..f5f94a0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Shared/_Layout.cshtml
@@ -0,0 +1,11 @@
+锘�<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>@ViewData["Title"] - Furion</title>
+</head>
+<body>
+    @RenderBody()
+</body>
+</html>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewImports.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewImports.cshtml
new file mode 100644
index 0000000..ae2e7b9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewImports.cshtml
@@ -0,0 +1,2 @@
+锘緻using Admin.NET.Web.Entry
+@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewStart.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewStart.cshtml
new file mode 100644
index 0000000..1af6e49
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewStart.cshtml
@@ -0,0 +1,3 @@
+锘緻{
+    Layout = "_Layout";
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/appsettings.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/appsettings.json
new file mode 100644
index 0000000..84ff115
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/appsettings.json
@@ -0,0 +1,161 @@
+{
+  "$schema": "https://gitee.com/dotnetchina/Furion/raw/net6/schemas/v3/furion-schema.json",
+
+  "Serilog": {
+    "MinimumLevel": {
+      "Default": "Information",
+      "Override": {
+        "System": "Warning",
+        "Microsoft": "Warning",
+        "Microsoft.Hosting.Lifetime": "Information",
+        "Microsoft.EntityFrameworkCore": "Information"
+      }
+    },
+    "WriteTo": [
+      {
+        "Name": "Console",
+        "Args": {
+          "outputTemplate": "銆愭椂闂淬�憑Timestamp:yyyy-MM-dd HH:mm:ss,fff}{NewLine}銆愮瓑绾с�憑Level:u3}{NewLine}銆愭秷鎭�憑Message:lj}{NewLine}{NewLine}"
+        }
+      },
+      {
+        "Name": "File",
+        "Args": {
+          "path": "logs/.log",
+          "rollingInterval": "Day",
+          "outputTemplate": "銆愭椂闂淬�憑Timestamp:yyyy-MM-dd HH:mm:ss,fff}{NewLine}銆愮瓑绾с�憑Level:u3}{NewLine}銆愭秷鎭�憑Message:lj}{NewLine}{NewLine}"
+        }
+      }
+    ]
+  },
+  "AllowedHosts": "*",
+  "AppSettings": {
+    //"EnabledReferenceAssemblyScan": true, // 鍚敤妯″潡鍖栫▼搴忛泦鎵弿
+    //"ExternalAssemblies": [ "plugins/Covid19.Plugin" ] //鍔ㄦ�佸姞杞� dll
+  },
+  "LowCodeConfig": [
+    {
+      "Name": "ORM瀵硅薄",
+      "IsFrontend": false,
+      "Source": {
+        "File": "{HostPath}\\Template\\Entity.cs.cshtml"
+      },
+      "Target": {
+        "File": "{ClassName}.cs",
+        "Dir": "{CodePath}\\{NameSpace}\\Entity\\"
+      }
+    },
+    {
+      "Name": "Service",
+      "IsFrontend": false,
+      "Source": {
+        "File": "{HostPath}\\Template\\Service.cs.cshtml"
+      },
+      "Target": {
+        "File": "Service.cs",
+        "Dir": "{CodePath}\\{NameSpace}\\Service\\{ClassName}\\"
+      }
+    },
+    {
+      "Name": "IService",
+      "IsFrontend": false,
+      "Source": {
+        "File": "{HostPath}\\Template\\IService.cs.cshtml"
+      },
+      "Target": {
+        "File": "IService.cs",
+        "Dir": "{CodePath}\\{NameSpace}\\Service\\{ClassName}\\"
+      }
+    },
+    {
+      "Name": "Input",
+      "IsFrontend": false,
+      "Source": {
+        "File": "{HostPath}\\Template\\Input.cs.cshtml"
+      },
+      "Target": {
+        "File": "{ClassName}Input.cs",
+        "Dir": "{CodePath}\\{NameSpace}\\Service\\{ClassName}\\Dto\\"
+      }
+    },
+    {
+      "Name": "Output",
+      "IsFrontend": false,
+      "Source": {
+        "File": "{HostPath}\\Template\\Output.cs.cshtml"
+      },
+      "Target": {
+        "File": "{ClassName}Output.cs",
+        "Dir": "{CodePath}\\{NameSpace}\\Service\\{ClassName}\\Dto\\"
+      }
+    },
+    {
+      "Name": "Dto",
+      "IsFrontend": false,
+      "Source": {
+        "File": "{HostPath}\\Template\\Dto.cs.cshtml"
+      },
+      "Target": {
+        "File": "{ClassName}Dto.cs",
+        "Dir": "{CodePath}\\{NameSpace}\\Service\\{ClassName}\\Dto\\"
+      }
+    },
+    {
+      "Name": "Mapper",
+      "IsFrontend": false,
+      "Source": {
+        "File": "{HostPath}\\Template\\Mapper.cs.cshtml"
+      },
+      "Target": {
+        "File": "Mapper.cs",
+        "Dir": "{CodePath}\\{NameSpace}\\Service\\{ClassName}\\"
+      }
+    },
+    {
+      "Name": "index",
+      "IsFrontend": true,
+      "Source": {
+        "File": "{HostPath}\\Template\\index.vue.cshtml"
+      },
+      "Target": {
+        "File": "index.vue",
+        "Dir": "{FrontendPath}\\{ClassName}\\"
+      }
+    },
+    {
+      "Name": "addForm",
+      "IsFrontend": true,
+      "Source": {
+        "File": "{HostPath}\\Template\\addForm.vue.cshtml"
+      },
+      "Target": {
+        "File": "addForm.vue",
+        "Dir": "{FrontendPath}\\{ClassName}\\"
+      }
+    },
+    {
+      "Name": "editForm",
+      "IsFrontend": true,
+      "Source": {
+        "File": "{HostPath}\\Template\\editForm.vue.cshtml"
+      },
+      "Target": {
+        "File": "editForm.vue",
+        "Dir": "{FrontendPath}\\{ClassName}\\"
+      }
+    },
+    {
+      "Name": "Manage",
+      "IsFrontend": true,
+      "Source": {
+        "File": "{HostPath}\\Template\\Manage.js.cshtml"
+      },
+      "Target": {
+        "File": "{ClassName}Manage.js",
+        "Dir": "{ApiJsPath}\\"
+      }
+    }
+  ]
+
+
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Font/font1559.ttf b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Font/font1559.ttf
new file mode 100644
index 0000000..7814778
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Font/font1559.ttf
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/1.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/1.jpg
new file mode 100644
index 0000000..e77f91e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/1.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/2.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/2.jpg
new file mode 100644
index 0000000..f5c9116
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/2.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/3.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/3.jpg
new file mode 100644
index 0000000..851c312
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/3.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/4.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/4.jpg
new file mode 100644
index 0000000..688e74f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/4.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/5.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/5.jpg
new file mode 100644
index 0000000..07bbdbd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/5.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/6.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/6.jpg
new file mode 100644
index 0000000..1acf701
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/6.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/7.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/7.jpg
new file mode 100644
index 0000000..9906864
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/7.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/8.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/8.jpg
new file mode 100644
index 0000000..def81ae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/8.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/CommonTemplate.xlsx b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/CommonTemplate.xlsx
new file mode 100644
index 0000000..90653fa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/CommonTemplate.xlsx
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Image/logo.png b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Image/logo.png
new file mode 100644
index 0000000..5a014a8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Image/logo.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.cshtml
new file mode 100644
index 0000000..d756972
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.cshtml
@@ -0,0 +1,29 @@
+@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+using Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace @Model.NameSpace
+{
+    /// <summary>
+    /// @(@Model.BusName)杈撳嚭鍙傛暟
+    /// </summary>
+    public class @(@Model.ClassName)Dto
+    {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public @(@column.FkColumnNetType) @(@column.FkEntityName)@(@column.FkColumnName) { get; set; }
+        @:
+}
+}
+@foreach (var column in Model.TableField){
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public @column.DtoNetType @column.ColumnName { get; set; }
+        @:
+}
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.vm
new file mode 100644
index 0000000..db86114
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.vm
@@ -0,0 +1,28 @@
+using Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace @Model.NameSpace
+{
+    /// <summary>
+    /// @(@Model.BusName)杈撳嚭鍙傛暟
+    /// </summary>
+    public class @(@Model.ClassName)Dto
+    {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public @(@column.FkColumnNetType) @(@column.FkEntityName)@(@column.FkColumnName) { get; set; }
+        @:
+}
+}
+@foreach (var column in Model.TableField){
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public @column.DtoNetType @column.ColumnName { get; set; }
+        @:
+}
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.cshtml
new file mode 100644
index 0000000..21e9516
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.cshtml
@@ -0,0 +1,27 @@
+锘緻model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Furion.DatabaseAccessor;
+using Admin.NET.Core;
+using Microsoft.EntityFrameworkCore;
+
+namespace @(@Model.NameSpace).Entity
+{
+    /// <summary>
+    /// @(@Model.TableDesc)
+    /// </summary>
+    [Table("@(@Model.TableName)")]
+    [Comment("@(@Model.TableDesc)")]
+    public class @(@Model.ClassName) : DEntityBase<long, @(@Model.DatabaseName)>
+    {
+
+@foreach (var column in Model.Fields){
+        @:/// <summary>
+        @:/// @(@column.ColumnComment)
+        @:/// </summary>
+        @:[Comment("@(@column.ColumnComment)")]@(@column.IsRequired == true ? "[Required]" : "")@(!string.IsNullOrEmpty(@column.DbParam) ? "[Column(TypeName = \"" + @column.DbParam + "\")]" : "")
+        @:public @(@column.NetType) @(@column.FieldName) { get; set; }
+        @:
+}
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.vm
new file mode 100644
index 0000000..081a8d7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.vm
@@ -0,0 +1,26 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Furion.DatabaseAccessor;
+using Admin.NET.Core;
+using Microsoft.EntityFrameworkCore;
+
+namespace @(@Model.NameSpace).Entity
+{
+    /// <summary>
+    /// @(@Model.TableDesc)
+    /// </summary>
+    [Table("@(@Model.TableName)")]
+    [Comment("@(@Model.TableDesc)")]
+    public class @(@Model.ClassName) : DEntityBase<long, @(@Model.DatabaseName)>
+    {
+
+@foreach (var column in Model.Fields){
+        @:/// <summary>
+        @:/// @(@column.ColumnComment)
+        @:/// </summary>
+        @:[Comment("@(@column.ColumnComment)")]@(@column.IsRequired == true ? "[Required]" : "")@(!string.IsNullOrEmpty(@column.DbParam) ? "[Column(TypeName = \"" + @column.DbParam + "\")]" : "")
+        @:public @(@column.NetType) @(@column.FieldName) { get; set; }
+        @:
+}
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.cshtml
new file mode 100644
index 0000000..95175b7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.cshtml
@@ -0,0 +1,32 @@
+@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+using Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace @Model.NameSpace
+{
+    public interface I@(@Model.ClassName)Service
+    {
+        Task Add(Add@(@Model.ClassName)Input input);
+        Task Delete(Delete@(@Model.ClassName)Input input);
+        Task<@(@Model.ClassName)Output> Get([FromQuery] Querye@(@Model.ClassName)Input input);
+        Task<List<@(@Model.ClassName)Output>> List([FromQuery] @(@Model.ClassName)Input input);
+        Task<PageResult<@(@Model.ClassName)Output>> Page([FromQuery] @(@Model.ClassName)Search input);
+        Task Update(Update@(@Model.ClassName)Input input);
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+        @:Task<dynamic> Fk@(@column.FkEntityName)List();
+
+            }
+        }
+
+        Task<List<@(@Model.ClassName)Output>> ListNonPageAsync([FromQuery] @(@Model.ClassName)SearchNonPage input);
+
+        Task<int> ImportExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+                              
+        Task<IActionResult> DownloadExcelTemplate(string version);
+                             
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.vm
new file mode 100644
index 0000000..741f654
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.vm
@@ -0,0 +1,30 @@
+using Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace @Model.NameSpace
+{
+    public interface I@(@Model.ClassName)Service
+    {
+        Task<@(@Model.ClassName)Output> Get([FromQuery] Querye@(@Model.ClassName)Input input);
+        Task<List<@(@Model.ClassName)Output>> List([FromQuery] @(@Model.ClassName)Input input);
+        Task<PageResult<@(@Model.ClassName)Output>> Page([FromQuery] @(@Model.ClassName)Search input);
+        Task<List<@(@Model.ClassName)Output>> ListNonPageAsync([FromQuery] @(@Model.ClassName)SearchNonPage input);
+        
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+        @:Task<dynamic> Fk@(@column.FkEntityName)List();
+}
+}
+        @if( @Model.IsOnlyQuery != true){
+        @:Task Add(Add@(@Model.ClassName)Input input);
+        @:Task Update(Update@(@Model.ClassName)Input input);
+        @:Task Delete(Delete@(@Model.ClassName)Input input);
+
+        @:Task<int> ImportExcelAsync(IFormFile file);
+        @:IActionResult DownloadExcelTemplate(string version);
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.cshtml
new file mode 100644
index 0000000..593e2e9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.cshtml
@@ -0,0 +1,120 @@
+@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+using Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using System.ComponentModel.DataAnnotations;
+
+namespace @Model.NameSpace
+{    
+    
+    /// <summary>
+    /// @(@Model.BusName)鏌ヨ鍙傛暟
+    /// </summary>
+    public class @(@Model.ClassName)Search : PageInputBase
+    {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey != "True"){
+    if (@column.QueryType != "between"){
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public virtual @(@column.NetType)@(@column.NetTypeIsNullLableForQueryInput) @column.ColumnName { get; set; }
+        @:
+        }
+        else
+        {
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public virtual List<@(@column.NetType)>@(@column.NetTypeIsNullLableForQueryInput) @column.ColumnName { get; set; }
+        @:
+        }
+    }
+}
+    }
+
+    /// <summary>
+    /// @(@Model.BusName)涓嶅垎椤垫煡璇㈠弬鏁�
+    /// </summary>
+    public class @(@Model.ClassName)SearchNonPage : PageInputNonPageBase
+    {
+@foreach (var column in Model.TableField){
+    if (@column.ColumnKey != "True"){
+        if((@column.NetType == "DateTimeOffset" || @column.NetType == "DateTime") && @column.QueryType == "between") 
+        {
+        @:/// <summary>
+        @:/// @(@column.ColumnComment)寮�濮嬫椂闂�
+        @:/// </summary>
+        @:public virtual @(@column.NetType)? @(@column.ColumnName)Begin { get; set; }
+        @:
+        @:/// <summary>
+        @:/// @(@column.ColumnComment)缁撴潫鏃堕棿
+        @:/// </summary>
+        @:public virtual @(@column.NetType)? @(@column.ColumnName)End { get; set; }
+        @:
+        } else {
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public virtual @(@column.NetType)? @column.ColumnName { get; set; }
+        @:
+        }
+    }
+}
+    }
+
+
+    /// <summary>
+    /// @(@Model.BusName)杈撳叆鍙傛暟
+    /// </summary>
+    public class @(@Model.ClassName)Input
+    {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey != "True"){
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public virtual @(@column.DtoNetType) @column.ColumnName { get; set; }
+        @:
+}
+}
+    }
+
+    public class Add@(@Model.ClassName)Input : @(@Model.ClassName)Input
+    {
+@foreach (var column in Model.TableField){
+if (@column.WhetherRequired == "Y"){
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:[Required(ErrorMessage = "@(@column.ColumnComment)涓嶈兘涓虹┖")]
+        @:public override @(@column.DtoNetType) @column.ColumnName { get; set; }
+        @:
+}
+}
+    }
+
+    public class Delete@(@Model.ClassName)Input : BaseId
+    {
+    }
+
+    public class Update@(@Model.ClassName)Input : @(@Model.ClassName)Input
+    {
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "True"){
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:[Required(ErrorMessage = "@(@column.ColumnComment)涓嶈兘涓虹┖")]
+        @:public @column.NetType @column.ColumnName { get; set; }
+        @:
+}
+}
+    }
+
+    public class Querye@(@Model.ClassName)Input : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.vm
new file mode 100644
index 0000000..035ad6e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.vm
@@ -0,0 +1,118 @@
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace @Model.NameSpace
+{    
+    
+    /// <summary>
+    /// @(@Model.BusName)鏌ヨ鍙傛暟
+    /// </summary>
+    public class @(@Model.ClassName)Search : PageInputBase
+    {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey != "True"){
+if (@column.QueryType != "between"){
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public virtual @(@column.NetType)@(@column.NetTypeIsNullLableForQueryInput) @column.ColumnName { get; set; }
+        @:
+}
+  else
+        {
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public virtual List<string> @column.ColumnName { get; set; }
+        @:
+        }
+}
+}
+    }
+
+        /// <summary>
+    /// @(@Model.BusName)涓嶅垎椤垫煡璇㈠弬鏁�
+    /// </summary>
+    public class @(@Model.ClassName)SearchNonPage : PageInputNonPageBase
+    {
+@foreach (var column in Model.TableField){
+    if (@column.ColumnKey != "True"){
+
+        if (@column.QueryType != "between"){
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public virtual @(@column.NetType)@(@column.NetTypeIsNullLableForQueryInput) @column.ColumnName { get; set; }
+        @:
+}
+        
+        else {
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+         @:public virtual List<@(@column.NetType)>@(@column.NetTypeIsNullLableForQueryInput) @column.ColumnName { get; set; }
+        @:
+        }
+    }
+}
+    }
+
+    /// <summary>
+    /// @(@Model.BusName)杈撳叆鍙傛暟
+    /// </summary>
+    public class @(@Model.ClassName)Input
+    {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey != "True" && @column.WhetherAddUpdate == "Y"){
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        if (@column.WhetherRequired == "Y"){
+        @:[Required(ErrorMessage = "@(@column.ColumnComment)涓嶈兘涓虹┖")]
+        }
+        @:public virtual @(@column.DtoNetType)@(@column.NetTypeIsNullLableForAddEditOutParam) @column.ColumnName { get; set; }
+        @:
+}
+}
+    }
+
+    /// <summary>
+    /// @(@Model.BusName)鏂板鍙傛暟
+    /// </summary>
+    public class Add@(@Model.ClassName)Input : @(@Model.ClassName)Input
+    {
+    }
+
+    /// <summary>
+    /// @(@Model.BusName)鍒犻櫎鍙傛暟
+    /// </summary>
+    public class Delete@(@Model.ClassName)Input : BaseId
+    {
+    }
+
+    /// <summary>
+    /// @(@Model.BusName)鏇存柊鍙傛暟
+    /// </summary>
+    public class Update@(@Model.ClassName)Input : @(@Model.ClassName)Input
+    {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey == "True"){
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:[Required(ErrorMessage = "@(@column.ColumnComment)涓嶈兘涓虹┖")]
+        @:public @column.NetType@(@column.NetTypeIsNullLableForAddEditOutParam) @column.ColumnName { get; set; }
+        @:
+}
+}
+    }
+
+    /// <summary>
+    /// @(@Model.BusName)鑾峰彇鍗曚釜鍙傛暟
+    /// </summary>
+    public class Querye@(@Model.ClassName)Input : BaseId
+    {
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.cshtml
new file mode 100644
index 0000000..b880f9e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.cshtml
@@ -0,0 +1,128 @@
+@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+import { axios } from '@@/utils/request'
+
+/**
+ * 鏌ヨ@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Page (parameter) {
+  return axios({
+    url: '/@Model.ClassName/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * @(@Model.BusName)鍒楄〃
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)List (parameter) {
+  return axios({
+    url: '/@Model.ClassName/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Add (parameter) {
+  return axios({
+    url: '/@Model.ClassName/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Edit (parameter) {
+  return axios({
+    url: '/@Model.ClassName/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Delete (parameter) {
+  return axios({
+    url: '/@Model.ClassName/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭@(@Model.BusName)鐨凟xcel鏂囦欢
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)ToExcel (parameter) {
+  return axios({
+    url: '/@Model.ClassName/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆@(@Model.BusName)鐨凟xcel鏂囦欢
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)ImportExcel (data, parameter) {
+  return axios({
+    url: '/@Model.ClassName/importExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇@(@Model.BusName)鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)DownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/@Model.ClassName/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+@:
+@:/**
+@:* 鑾峰彇@(@column.FkEntityName)鍒楄〃
+@:* @@author @Model.AuthorName
+@:*/
+@:export function @(@Model.ClassName)Fk@(@column.FkEntityName)List() {
+@:  return axios({
+@:    url: '/@Model.ClassName/fk@(@column.FkEntityName)',
+@:    method: 'get'
+@:  })
+@:}
+}
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.vm
new file mode 100644
index 0000000..ff2608f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.vm
@@ -0,0 +1,129 @@
+import { axios } from '@@/utils/request'
+
+/**
+ * 鏌ヨ@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Page (parameter) {
+  return axios({
+    url: '/@Model.ClassName/page',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * @(@Model.BusName)鍒楄〃
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)List (parameter) {
+  return axios({
+    url: '/@Model.ClassName/list',
+    method: 'get',
+    params: parameter
+  })
+}
+
+/**
+ * 娣诲姞@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Add (parameter) {
+  return axios({
+    url: '/@Model.ClassName/add',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 缂栬緫@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Edit (parameter) {
+  return axios({
+    url: '/@Model.ClassName/edit',
+    method: 'post',
+    data: parameter
+  })
+}
+
+/**
+ * 鍒犻櫎@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Delete (parameter) {
+  return axios({
+    url: '/@Model.ClassName/delete',
+    method: 'post',
+    data: parameter
+  })
+}
+
+
+/**
+ * 瀵煎嚭@(@Model.BusName)鐨凟xcel鏂囦欢
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)ToExcel (parameter) {
+  return axios({
+    url: '/@Model.ClassName/toExcel',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 瀵煎叆@(@Model.BusName)鐨凟xcel鏂囦欢
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)ImportExcel (data, parameter) {
+  return axios({
+    url: '/@Model.ClassName/importExcel',
+    method: 'post',
+    data: data,
+    params: parameter
+
+  })
+}
+
+
+/**
+ * 涓嬭浇@(@Model.BusName)鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)DownloadExcelTemplate(parameter) {
+  return axios({
+    url: '/@Model.ClassName/downloadExcelTemplate',
+    method: 'get',
+    params: parameter,
+    responseType: 'blob'
+  })
+}
+
+
+
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+@:
+@:/**
+@:* 鑾峰彇@(@column.FkEntityName)鍒楄〃
+@:* @@author @Model.AuthorName
+@:*/
+@:export function @(@Model.ClassName)Fk@(@column.FkEntityName)List() {
+@:  return axios({
+@:    url: '/@Model.ClassName/fk@(@column.FkEntityName)',
+@:    method: 'get'
+@:  })
+@:}
+}
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.cshtml
new file mode 100644
index 0000000..7019be5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.cshtml
@@ -0,0 +1,35 @@
+锘緻model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+using Mapster;
+using Admin.NET.Core;
+
+namespace @Model.NameSpace
+{
+    public class @(@Model.ClassName)Mapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<Add@(@Model.ClassName)Input, @Model.ClassName>()
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+                @:.Map(dest => dest.@(@column.ColumnName), src => string.Join(',', src.@(@column.ColumnName).Select(x => x.Url.GetFileId()).ToList()))
+}
+}
+            ;
+            config.ForType<Update@(@Model.ClassName)Input, @Model.ClassName>()
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+                @:.Map(dest => dest.@(@column.ColumnName), src => string.Join(',', src.@(@column.ColumnName).Select(x => x.Url.GetFileId()).ToList()))
+}
+}
+            ;
+            config.ForType<@(@Model.ClassName), @(@Model.ClassName)Output>()
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+                @:.Map(dest => dest.@(@column.ColumnName)_Str, src => src.@(@column.ColumnName))
+                @:.Map(dest => dest.@(@column.ColumnName), src => new Front_FileDto())
+}
+}
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.vm
new file mode 100644
index 0000000..1194a2d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.vm
@@ -0,0 +1,34 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace @Model.NameSpace
+{
+    public class @(@Model.ClassName)Mapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<Add@(@Model.ClassName)Input, @Model.ClassName>()
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+                @:.Map(dest => dest.@(@column.ColumnName), src => string.Join(',', src.@(@column.ColumnName).Select(x => x.Url.GetFileId()).ToList()))
+}
+}
+            ;
+            config.ForType<Update@(@Model.ClassName)Input, @Model.ClassName>()
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+                @:.Map(dest => dest.@(@column.ColumnName), src => string.Join(',', src.@(@column.ColumnName).Select(x => x.Url.GetFileId()).ToList()))
+}
+}
+            ;
+            config.ForType<@(@Model.ClassName), @(@Model.ClassName)Output>()
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+                @:.Map(dest => dest.@(@column.ColumnName)_Str, src => src.@(@column.ColumnName))
+                @:.Map(dest => dest.@(@column.ColumnName), src => new Front_FileDto())
+}
+}
+            ;
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.cshtml
new file mode 100644
index 0000000..ecf2053
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.cshtml
@@ -0,0 +1,35 @@
+锘緻model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+using Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace @Model.NameSpace
+{
+    /// <summary>
+    /// @(@Model.BusName)杈撳嚭鍙傛暟
+    /// </summary>
+    public class @(@Model.ClassName)Output
+    {
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public ICollection<Front_FileDto> @column.ColumnName { get; set; }
+        @:
+        
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public String @(@column.ColumnName)_Str { get; set; }
+        @:
+}else{
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public @column.NetType @column.ColumnName { get; set; }
+        @:
+}
+
+}
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.vm
new file mode 100644
index 0000000..f7c43d0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.vm
@@ -0,0 +1,34 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace @Model.NameSpace
+{
+    /// <summary>
+    /// @(@Model.BusName)杈撳嚭鍙傛暟
+    /// </summary>
+    public class @(@Model.ClassName)Output
+    {
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public ICollection<Front_FileDto>@(@column.NetTypeIsNullLableForAddEditOutParam) @column.ColumnName { get; set; }
+        @:
+        
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public String @(@column.ColumnName)_Str { get; set; }
+        @:
+}else{
+        @:/// <summary>
+        @:/// @column.ColumnComment
+        @:/// </summary>
+        @:public @column.NetType@(@column.NetTypeIsNullLableForAddEditOutParam) @column.ColumnName { get; set; }
+        @:
+}
+
+}
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.cshtml
new file mode 100644
index 0000000..f97721e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.cshtml
@@ -0,0 +1,558 @@
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace @Model.NameSpace
+{
+    /// <summary>
+    /// @(@Model.BusName)鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("@Model.ModuleName", Name = "@Model.ClassName", Order = 100)]
+    [Route("api/[Controller]")]
+    public class @(@Model.ClassName)Service : I@(@Model.ClassName)Service, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<@(@Model.ClassName),@(@Model.DatabaseName)> _@(@Model.CamelizeClassName)Rep;
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+        @:private readonly IRepository<@(@column.FkEntityName)> _@(@column.LowerFkEntityName)Rep;
+}
+}
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+@if(@Model.IsFile)
+{
+        @:private readonly IRepository<SysFile> _sysFileInfoRep;
+}
+
+        public @(@Model.ClassName)Service(
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+            @:IRepository<@(@column.FkEntityName)> @(@column.LowerFkEntityName)Rep,
+}
+}
+            IRepository<@(@Model.ClassName),@(@Model.DatabaseName)> @(@Model.CamelizeClassName)Rep
+@if(@Model.IsFile)
+{
+            @:,IRepository<SysFile> sysFileInfoRep,
+}
+            ,IRepository<SysDictType, @(@Model.DatabaseName)> sysDictTypeRep
+            ,IRepository<SysDictData, @(@Model.DatabaseName)> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+            @:_@(@column.LowerFkEntityName)Rep = @(@column.LowerFkEntityName)Rep;
+}
+}
+            _@(@Model.CamelizeClassName)Rep = @(@Model.CamelizeClassName)Rep;
+@if(@Model.IsFile)
+{
+        @:_sysFileInfoRep = sysFileInfoRep;
+}
+         _sysDictTypeRep = sysDictTypeRep;
+         _sysDictDataRep = sysDictDataRep;
+         _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ@(@Model.BusName)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("@Model.ClassName/page")]
+        [HttpGet("page")]
+        public async Task<PageResult<@(@Model.ClassName)Output>> Page([FromQuery] @(@Model.ClassName)Search input)
+        {
+            var @(@Model.CamelizeClassName)s = await _@(@Model.CamelizeClassName)Rep.DetachedEntities
+@foreach (var column in Model.TableField){    
+if (@column.QueryWhether == "Y"){
+if (@column.NetType == "string"){
+if (@column.QueryType == "like"){
+                                     @:.Where(!string.IsNullOrEmpty(input.@column.ColumnName), u => EF.Functions.Like(u.@(@column.ColumnName), $"%{input.@(@column.ColumnName).Trim()}%"))
+} else {
+                                     @:.Where(!string.IsNullOrEmpty(input.@column.ColumnName), u => u.@(@column.ColumnName) @column.QueryType input.@(@column.ColumnName))
+}
+} else {
+if (@column.EffectType == "fk"){                
+                                     @:.Where(input.@column.ColumnName > 0, u => u.@(@column.ColumnName) @column.QueryType input.@(@column.ColumnName))
+}
+
+  if (@column.EffectType == "datepicker" && @column.QueryType == "between"){     
+  
+                                     @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>=  Convert.ToDateTime(input.@(@column.ColumnName)[0]+" 00:00:00") && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]+" 23:59:59"))
+        }
+        else  if (@column.EffectType == "datetimepicker" && @column.QueryType == "between"){     
+  
+                                     @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>=  Convert.ToDateTime(input.@(@column.ColumnName)[0]) && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]))
+        }
+
+else {
+                                     @:.Where(input.@column.ColumnName != null, u => u.@(@column.ColumnName) @column.QueryType input.@(@column.ColumnName))
+}
+}
+}
+}
+                                     .OrderBy(PageInputOrder.OrderBuilder<@(@Model.ClassName)Search>(input))
+                                     .ProjectToType<@(@Model.ClassName)Output>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+@if(@Model.IsFile)
+{
+            @:@(@Model.CamelizeClassName)s.Rows.ToList().ForEach(item =>
+            @:{
+foreach (var column in Model.FileTableField){  
+                @:item.@(@column.ColumnName) = item.@(@column.ColumnName)_Str.GetFiles(_sysFileInfoRep);
+}
+            @:});
+}
+            return @(@Model.CamelizeClassName)s;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇(@Model.BusName)鍒楄〃
+        /// </summary>
+        /// <param name="input">@(@Model.BusName)鏌ヨ鍙傛暟</param>
+        /// <returns>(@Model.BusName)瀹炰緥鍒楄〃</returns>
+        [Description("@Model.ClassName/listNonPage")]
+        [HttpGet("listNonPage")]
+        public async Task<List<@(@Model.ClassName)Output>> ListNonPageAsync([FromQuery] @(@Model.ClassName)SearchNonPage input)
+        {
+@foreach (var column in Model.TableField)
+{    
+    if (@column.QueryWhether == "Y")
+    {
+        
+         if(@column.NetType == "string" && @column.QueryType != "isNotNull"){
+            @:var p@(@column.ColumnName) = input.@(@column.ColumnName)?.Trim() ?? "";
+        } else if(@column.QueryType != "isNotNull"){
+            @:var p@(@column.ColumnName) = input.@(@column.ColumnName);
+        }
+    }
+}
+            var @(@Model.CamelizeClassName)s = await _@(@Model.CamelizeClassName)Rep.DetachedEntities
+@foreach (var column in Model.TableField)
+{    
+    if (@column.QueryWhether == "Y") 
+    {
+        if(@column.QueryType == "isNotNull")
+        {
+                @:.Where(u => u.@(@column.ColumnName) != null)
+        }
+        else if (@column.NetType == "string") 
+        {
+            if (@column.QueryType == "like") 
+            {
+                @:.Where(!string.IsNullOrEmpty(p@(@column.ColumnName)), u => EF.Functions.Like(u.@(@column.ColumnName), $"%{p@(@column.ColumnName)}%")) 
+            } else 
+            {
+                @:.Where(!string.IsNullOrEmpty(p@(@column.ColumnName)), u => u.@(@column.ColumnName) @column.QueryType p@(@column.ColumnName))
+            }
+        } else if (@column.EffectType == "datepicker"&&@column.QueryType == "between") 
+        {      
+
+             @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>=  Convert.ToDateTime(input.@(@column.ColumnName)[0]+" 00:00:00") && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]+" 23:59:59"))
+
+        }  else  if (@column.EffectType == "datetimepicker" && @column.QueryType == "between"){     
+  
+           @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>=  Convert.ToDateTime(input.@(@column.ColumnName)[0]) && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]))
+        }else if (@column.EffectType == "fk") 
+        {                
+                @:.Where(p@(@column.ColumnName) > 0, u => u.@(@column.ColumnName) @column.QueryType p@(@column.ColumnName))
+        } else {
+                @:.Where(p@(@column.ColumnName) != null, u => u.@(@column.ColumnName) @column.QueryType p@(@column.ColumnName))
+        }
+    }
+}           
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<@(@Model.ClassName)Output>()
+            .ToListAsync();
+@if(@Model.IsFile)
+{
+            @:@(@Model.CamelizeClassName)s.ForEach(item =>
+            @:{
+    foreach (var column in Model.FileTableField){  
+                @:item.@(@column.ColumnName) = item.@(@column.ColumnName)_Str.GetFiles(_sysFileInfoRep);
+    }
+            @:});
+}
+            return @(@Model.CamelizeClassName)s;
+        }
+
+
+        /// <summary>
+        /// 澧炲姞@(@Model.BusName)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("@Model.ClassName/add")]
+        [HttpPost("add")]
+        public async Task Add(Add@(@Model.ClassName)Input input)
+        {
+            var @(@Model.CamelizeClassName) = input.Adapt<@(@Model.ClassName)>();
+                        //楠岃瘉
+            await CheckExisit(@(@Model.CamelizeClassName));
+            await _@(@Model.CamelizeClassName)Rep.InsertAsync(@(@Model.CamelizeClassName));
+        }
+
+        /// <summary>
+        /// 鍒犻櫎@(@Model.BusName)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("@Model.ClassName/delete")]
+        [HttpPost("delete")]
+        public async Task Delete(Delete@(@Model.ClassName)Input input)
+        {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey == "True"){
+            @:var @(@Model.CamelizeClassName) = await _@(@Model.CamelizeClassName)Rep.FirstOrDefaultAsync(u => u.@(@column.ColumnName) == input.@(@column.ColumnName));
+}
+}
+            await _@(@Model.CamelizeClassName)Rep.DeleteAsync(@(@Model.CamelizeClassName));
+        }
+
+        /// <summary>
+        /// 鏇存柊@(@Model.BusName)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("@Model.ClassName/edit")]
+        [HttpPost("edit")]
+        public async Task Update(Update@(@Model.ClassName)Input input)
+        {
+            var isExist = await _@(@Model.CamelizeClassName)Rep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+            var @(@Model.CamelizeClassName) = input.Adapt<@(@Model.ClassName)>();
+            //楠岃瘉
+            await CheckExisit(@(@Model.CamelizeClassName),true);
+            await _@(@Model.CamelizeClassName)Rep.UpdateAsync(@(@Model.CamelizeClassName),ignoreNullValues:true);
+        }
+
+        /// <summary>
+        /// 鑾峰彇@(@Model.BusName)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("@Model.ClassName/detail")]
+        [HttpGet("detail")]
+        public async Task<@(@Model.ClassName)Output> Get([FromQuery] Querye@(@Model.ClassName)Input input)
+        {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey == "True"){
+            @:return (await _@(@Model.CamelizeClassName)Rep.DetachedEntities.FirstOrDefaultAsync(u => u.@(@column.ColumnName) == input.@(@column.ColumnName))).Adapt<@(@Model.ClassName)Output>();
+}
+}            
+        }
+
+        /// <summary>
+        /// 鑾峰彇@(@Model.BusName)鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("@Model.ClassName/list")]
+        [HttpGet("list")]
+        public async Task<List<@(@Model.ClassName)Output>> List([FromQuery] @(@Model.ClassName)Input input)
+        {
+            return await _@(@Model.CamelizeClassName)Rep.DetachedEntities.ProjectToType<@(@Model.ClassName)Output>().ToListAsync();
+        }    
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+        @:
+        @:/// <summary>
+        @:/// 鑾峰彇@(@column.FkEntityName)鍒楄〃
+        @:/// </summary>
+        @:/// <returns></returns>
+        @:[HttpGet("fk@(@column.FkEntityName)")]
+        @:public async Task<dynamic> Fk@(@column.FkEntityName)List()
+        @:{
+            @:var list = await _@(@column.LowerFkEntityName)Rep.DetachedEntities.ToListAsync();
+            @:return list.Select(e => new {Code = e.Id, Name = e.@(@column.FkColumnName)});
+        @:}
+}
+}
+         /// <summary>
+        /// Excel妯℃澘瀵煎叆@(@Model.BusName)鍔熻兘
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [HttpPost("importExcel")]
+        public async Task<int> ImportExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+        { 
+            int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+            int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+            DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+            var addList =await CommonImport(importDataTable, _DataStartLine);
+
+            lock (_lock)
+            {
+                _@(@Model.CamelizeClassName)Rep.InsertAsync(addList);
+               
+            }
+            await Task.CompletedTask;
+            return addList.Count;
+        }
+
+        /// <summary>
+        ///  DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+        /// </summary>
+        /// <param name="dataTable"></param>
+        /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+        /// <returns></returns>
+          private async Task<List<@(@Model.ClassName)>> CommonImport(DataTable dataTable, int dataStartLine)
+        {
+
+            var details = new List<@(@Model.ClassName)>();
+            int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+            foreach (System.Data.DataRow row in dataTable.Rows)
+            {
+                index++;
+
+               //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+                @Model.ImportExcelCustomizationContent
+             
+                details.Add(addItem);
+            }
+            //楠岃瘉
+            await CheckExisitForImport(details);
+            return details;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇@(@Model.BusName)鐨凟xcel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [Description("@Model.ClassName/downloadExcelTemplate")]
+        [HttpGet("downloadExcelTemplate")]
+        public IActionResult DownloadExcelTemplate([FromQuery] string version)
+        {
+            string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\@Model.ClassName{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+            var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(@Model.BusName).xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        /// <summary>
+        /// 鏍规嵁@(@Model.BusName)鏌ヨ鍙傛暟瀵煎嚭Excel
+        /// </summary>
+        /// <param name="input">@(@Model.BusName)鏌ヨ鍙傛暟</param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [Description("@Model.ClassName/toExcel")]
+        [HttpGet("toExcel")]
+        public async Task<IActionResult> ToExcelAsync([FromQuery] @(@Model.ClassName)SearchNonPage input)
+        {
+            var @(@Model.CamelizeClassName)List = await ListNonPageAsync(input);
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(@(@Model.CamelizeClassName)List, _sysDictTypeRep, _sysDictDataRep, out List<string> headers, 
+                out List<List<object>> data, out string sheetName);
+            var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("@(@Model.ClassName)", "v1");
+            if (excelTemplate != null)
+            {
+                ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+            }
+            else 
+            {
+                ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            }
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+
+
+        
+
+        /// <summary>
+        /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <param name="isEdit"></param>
+        /// <returns></returns>
+        private async Task CheckExisit( @(@Model.ClassName) input,bool isEdit=false)
+        {
+            bool isExist = false;
+
+            @{
+                var columnIndex = 0;
+             }
+            if (!isEdit)//鏂板
+            {
+
+
+                                      @foreach (var column in Model.TableField)
+                                      {
+                                         
+                                      
+                                          if (@column.WhetherUnionKey == "Y")
+                                          {   
+                                              columnIndex++;
+                                              if (@columnIndex == 1)
+                                              {
+                 @://鏁版嵁鏄惁閲嶅
+                 @:isExist = await _@(@Model.CamelizeClassName)Rep.AnyAsync(u => u.@(@column.ColumnName).Equals(input.@column.ColumnName)
+                                              }
+                                              else
+                                              {
+                                                  @:&&u.@(@column.ColumnName).Equals(input.@column.ColumnName)
+                                              }
+                                             
+                                          }
+
+                                         
+                                      }
+                @if(columnIndex>0){
+                           @:,false);
+                           @:if (isExist) throw Oops.Oh(ErrorCode.E0001);
+                 }
+                 else{
+                 @://娌℃湁閰嶇疆鑱斿悎涓婚敭锛屼笉闇�瑕侀獙閲�
+                 }
+
+
+                                                                                                  
+
+            }
+            else//缂栬緫
+            {
+                
+                                      @foreach (var column in Model.TableField)
+                                      {
+                                          if (@column.WhetherUnionKey == "Y")
+                                          {  
+                                              columnIndex++;
+                                              if (@columnIndex == 1)
+                                              {
+                 @://鏁版嵁鏄惁閲嶅
+                 @: isExist = await _@(@Model.CamelizeClassName)Rep.AnyAsync(u => u.Id == input.Id
+                                              }
+                                              else
+                                              {
+                                                  @:&&u.@(@column.ColumnName).Equals(input.@column.ColumnName)
+                                              }
+                                      }
+
+                @if(columnIndex>0)
+                {
+                @:,false);
+                @:if (isExist) throw Oops.Oh(ErrorCode.E0001);
+                }
+                else{
+                @://娌℃湁閰嶇疆鑱斿悎涓婚敭锛屼笉闇�瑕侀獙閲�
+                }
+
+            }
+
+        }
+
+        /// <summary>
+        /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+        /// </summary>
+        /// <param name="inputs"></param>
+        /// <returns></returns>
+        private async Task CheckExisit(List<@(@Model.ClassName)> inputs)
+        {
+            //瀵煎叆鐨勯泦鍚堟槸鍚﹀凡瀛樺湪鐩稿悓鏁版嵁  
+            @{
+                var index = 0;
+                bool isCheck = false;
+                string message = string.Empty;
+            }
+            @foreach (var column in Model.TableField)
+            {
+                if (@column.WhetherUnionKey == "Y")
+                {
+                    isCheck = true;
+                                                                                                                        message += "," + @column.ColumnComment + "[{item." + @column.ColumnName + "}]";
+                                                                                                                    }
+            }
+            @if (isCheck)
+            {
+                 @:if (inputs?.Count <= 0)
+                 @:{
+                 @:    throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
+                 @:}
+
+
+                 @://鏁版嵁鏄惁閲嶅
+                 @:var existExcelItem = inputs.GroupBy(g => new {
+            }
+           @foreach (var column in Model.TableField)
+           {
+
+               if (@column.WhetherUnionKey == "Y")
+               {   
+                   index++;
+                   if (@index == 1)
+                   { 
+                                               @:g.@(@column.ColumnName)
+                   }
+                   else
+                   {
+                                               @:,g.@(@column.ColumnName)
+                   }
+                                       
+                                                                                                                    }
+           }
+           @if (isCheck)
+          {
+                                               @:})
+                                               @:.Where(g => g.Count() > 1)
+                                               @:.Select(s => new {
+           }
+          @foreach (var column in Model.TableField)
+          {
+
+              if (@column.WhetherUnionKey == "Y")
+              {
+                  index++;
+                  if (@index == 1)
+                  {
+                      @:g.@(@column.ColumnName)
+                  }
+                  else
+                  {
+                      @:,g.@(@column.ColumnName)
+                  }
+
+              }
+          }
+           @if (isCheck)
+           {
+                                               @:}).FirstOrDefault();
+                 @:if (existExcelItem != null)
+                 @:{
+                   @:var @(@Model.CamelizeClassName) = existExcelItem.Adapt<@(@Model.ClassName)>();
+                   @:var item= existExcelItem.Adapt<@(@Model.ClassName)>();
+                   @:throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑锛寋message}宸插瓨鍦�");
+                 @:}
+           }
+
+        
+
+
+
+
+
+            
+           
+        }
+
+
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.vm
new file mode 100644
index 0000000..a42d87e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.vm
@@ -0,0 +1,581 @@
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace @Model.NameSpace
+{
+    /// <summary>
+    /// @(@Model.BusName)鏈嶅姟
+    /// </summary>
+    [ApiDescriptionSettings("@Model.ModuleName", Name = "@Model.ClassName", Order = 100)]
+    [Route("api/[Controller]")]
+    public class @(@Model.ClassName)Service : I@(@Model.ClassName)Service, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<@(@Model.ClassName),@(@Model.DatabaseName)> _@(@Model.CamelizeClassName)Rep;
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+        @:private readonly IRepository<@(@column.FkEntityName)> _@(@column.LowerFkEntityName)Rep;
+}
+}
+        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly ISysExcelTemplateService _sysExcelTemplateService;
+        private readonly static object _lock = new();
+@if(@Model.IsFile)
+{
+        @:private readonly IRepository<SysFile> _sysFileInfoRep;
+}
+
+        public @(@Model.ClassName)Service(
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+            @:IRepository<@(@column.FkEntityName)> @(@column.LowerFkEntityName)Rep,
+}
+}
+            IRepository<@(@Model.ClassName),@(@Model.DatabaseName)> @(@Model.CamelizeClassName)Rep
+@if(@Model.IsFile)
+{
+            @:,IRepository<SysFile> sysFileInfoRep,
+}
+            ,IRepository<SysDictType, @(@Model.DatabaseName)> sysDictTypeRep
+            ,IRepository<SysDictData, @(@Model.DatabaseName)> sysDictDataRep
+            ,ISysExcelTemplateService sysExcelTemplateService
+        )
+        {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+            @:_@(@column.LowerFkEntityName)Rep = @(@column.LowerFkEntityName)Rep;
+}
+}
+            _@(@Model.CamelizeClassName)Rep = @(@Model.CamelizeClassName)Rep;
+@if(@Model.IsFile)
+{
+        @:_sysFileInfoRep = sysFileInfoRep;
+}
+         _sysDictTypeRep = sysDictTypeRep;
+         _sysDictDataRep = sysDictDataRep;
+         _sysExcelTemplateService = sysExcelTemplateService;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ@(@Model.BusName)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("@Model.ClassName/page")]
+        [HttpGet("page")]
+        public async Task<PageResult<@(@Model.ClassName)Output>> Page([FromQuery] @(@Model.ClassName)Search input)
+        {
+            var @(@Model.CamelizeClassName)s = await _@(@Model.CamelizeClassName)Rep.DetachedEntities
+@foreach (var column in Model.TableField){    
+if (@column.QueryWhether == "Y"){
+if (@column.NetType == "string"){
+if (@column.QueryType == "like"){
+                                     @:.Where(!string.IsNullOrEmpty(input.@column.ColumnName), u => EF.Functions.Like(u.@(@column.ColumnName), $"%{input.@(@column.ColumnName).Trim()}%"))
+} else {
+                                     @:.Where(!string.IsNullOrEmpty(input.@column.ColumnName), u => u.@(@column.ColumnName) @column.QueryType input.@(@column.ColumnName))
+}
+} else {
+if (@column.EffectType == "fk"){                
+                                     @:.Where(input.@column.ColumnName > 0, u => u.@(@column.ColumnName) @column.QueryType input.@(@column.ColumnName))
+}
+
+  if (@column.EffectType == "datepicker" && @column.QueryType == "between"){     
+  
+                                     @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>=  Convert.ToDateTime(input.@(@column.ColumnName)[0]+" 00:00:00") && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]+" 23:59:59"))
+        }
+        else  if (@column.EffectType == "datetimepicker" && @column.QueryType == "between"){     
+  
+                                     @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>=  Convert.ToDateTime(input.@(@column.ColumnName)[0]) && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]))
+        }
+
+else {
+                                     @:.Where(input.@column.ColumnName != null, u => u.@(@column.ColumnName) @column.QueryType input.@(@column.ColumnName))
+}
+}
+}
+}
+                                     .OrderBy(PageInputOrder.OrderBuilder<@(@Model.ClassName)Search>(input))
+                                     .ProjectToType<@(@Model.ClassName)Output>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+@if(@Model.IsFile)
+{
+            @:@(@Model.CamelizeClassName)s.Rows.ToList().ForEach(item =>
+            @:{
+foreach (var column in Model.FileTableField){  
+                @:item.@(@column.ColumnName) = item.@(@column.ColumnName)_Str.GetFiles(_sysFileInfoRep);
+}
+            @:});
+}
+            return @(@Model.CamelizeClassName)s;
+        }
+
+        /// <summary>
+        /// 涓嶅垎椤垫煡璇(@Model.BusName)鍒楄〃
+        /// </summary>
+        /// <param name="input">@(@Model.BusName)鏌ヨ鍙傛暟</param>
+        /// <returns>(@Model.BusName)瀹炰緥鍒楄〃</returns>
+        [Description("@Model.ClassName/listNonPage")]
+        [HttpGet("listNonPage")]
+        public async Task<List<@(@Model.ClassName)Output>> ListNonPageAsync([FromQuery] @(@Model.ClassName)SearchNonPage input)
+        {
+@foreach (var column in Model.TableField)
+{    
+    if (@column.QueryWhether == "Y")
+    {
+        
+         if(@column.NetType == "string" && @column.QueryType != "isNotNull"){
+            @:var p@(@column.ColumnName) = input.@(@column.ColumnName)?.Trim() ?? "";
+        } else if(@column.QueryType != "isNotNull"){
+            @:var p@(@column.ColumnName) = input.@(@column.ColumnName);
+        }
+    }
+}
+            var @(@Model.CamelizeClassName)s = await _@(@Model.CamelizeClassName)Rep.DetachedEntities
+@foreach (var column in Model.TableField)
+{    
+    if (@column.QueryWhether == "Y") 
+    {
+        if(@column.QueryType == "isNotNull")
+        {
+                @:.Where(u => u.@(@column.ColumnName) != null)
+        }
+        else if (@column.NetType == "string") 
+        {
+            if (@column.QueryType == "like") 
+            {
+                @:.Where(!string.IsNullOrEmpty(p@(@column.ColumnName)), u => EF.Functions.Like(u.@(@column.ColumnName), $"%{p@(@column.ColumnName)}%")) 
+            } else 
+            {
+                @:.Where(!string.IsNullOrEmpty(p@(@column.ColumnName)), u => u.@(@column.ColumnName) @column.QueryType p@(@column.ColumnName))
+            }
+        } else if (@column.EffectType == "datepicker"&&@column.QueryType == "between") 
+        {      
+
+             @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>=  Convert.ToDateTime(input.@(@column.ColumnName)[0]+" 00:00:00") && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]+" 23:59:59"))
+
+        }  else  if (@column.EffectType == "datetimepicker" && @column.QueryType == "between"){     
+  
+           @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>=  Convert.ToDateTime(input.@(@column.ColumnName)[0]) && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]))
+        }else if (@column.EffectType == "fk") 
+        {                
+                @:.Where(p@(@column.ColumnName) > 0, u => u.@(@column.ColumnName) @column.QueryType p@(@column.ColumnName))
+        } else {
+                @:.Where(p@(@column.ColumnName) != null, u => u.@(@column.ColumnName) @column.QueryType p@(@column.ColumnName))
+        }
+    }
+}           
+            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+            .ProjectToType<@(@Model.ClassName)Output>()
+            .ToListAsync();
+@if(@Model.IsFile)
+{
+            @:@(@Model.CamelizeClassName)s.ForEach(item =>
+            @:{
+    foreach (var column in Model.FileTableField){  
+                @:item.@(@column.ColumnName) = item.@(@column.ColumnName)_Str.GetFiles(_sysFileInfoRep);
+    }
+            @:});
+}
+            return @(@Model.CamelizeClassName)s;
+        }
+
+         /// <summary>
+        /// 鑾峰彇@(@Model.BusName)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("@Model.ClassName/detail")]
+        [HttpGet("detail")]
+        public async Task<@(@Model.ClassName)Output> Get([FromQuery] Querye@(@Model.ClassName)Input input)
+        {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey == "True"){
+            @:return (await _@(@Model.CamelizeClassName)Rep.DetachedEntities.FirstOrDefaultAsync(u => u.@(@column.ColumnName) == input.@(@column.ColumnName))).Adapt<@(@Model.ClassName)Output>();
+}else{
+        if (@Model.IsOnlyQuery == true){
+            @:return null;
+        }
+}
+}            
+        }
+
+        /// <summary>
+        /// 鑾峰彇@(@Model.BusName)鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("@Model.ClassName/list")]
+        [HttpGet("list")]
+        public async Task<List<@(@Model.ClassName)Output>> List([FromQuery] @(@Model.ClassName)Input input)
+        {
+            return await _@(@Model.CamelizeClassName)Rep.DetachedEntities.ProjectToType<@(@Model.ClassName)Output>().ToListAsync();
+        }    
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+        @:
+        @:/// <summary>
+        @:/// 鑾峰彇@(@column.FkEntityName)鍒楄〃
+        @:/// </summary>
+        @:/// <returns></returns>
+        @:[HttpGet("fk@(@column.FkEntityName)")]
+        @:public async Task<dynamic> Fk@(@column.FkEntityName)List()
+        @:{
+            @:var list = await _@(@column.LowerFkEntityName)Rep.DetachedEntities.ToListAsync();
+            @:return list.Select(e => new {Code = e.Id, Name = e.@(@column.FkColumnName)});
+        @:}
+}
+}
+
+        #region 澧炪�佸垹銆佹敼
+
+        /// <summary>
+        /// 澧炲姞@(@Model.BusName)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("@Model.ClassName/add")]
+        [HttpPost("add")]
+        public async Task Add(Add@(@Model.ClassName)Input input)
+        {
+            var @(@Model.CamelizeClassName) = input.Adapt<@(@Model.ClassName)>();
+                        //楠岃瘉
+            await CheckExisit(@(@Model.CamelizeClassName));
+
+            @(@Model.CamelizeClassName).CreatedUserId = @(@Model.CamelizeClassName).UpdatedUserId = SysHelper.GetUserId();
+            @(@Model.CamelizeClassName).CreatedUserName = @(@Model.CamelizeClassName).UpdatedUserName = SysHelper.GetUserName();
+            @(@Model.CamelizeClassName).CreatedTime = @(@Model.CamelizeClassName).UpdatedTime = SysHelper.GetNowTime();
+            await _@(@Model.CamelizeClassName)Rep.InsertAsync(@(@Model.CamelizeClassName));
+        }
+
+        /// <summary>
+        /// 鍒犻櫎@(@Model.BusName)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("@Model.ClassName/delete")]
+        [HttpPost("delete")]
+        public async Task Delete(Delete@(@Model.ClassName)Input input)
+        {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey == "True"){
+            @:var @(@Model.CamelizeClassName) = await _@(@Model.CamelizeClassName)Rep.FirstOrDefaultAsync(u => u.@(@column.ColumnName) == input.@(@column.ColumnName));
+            @:await _@(@Model.CamelizeClassName)Rep.DeleteAsync(@(@Model.CamelizeClassName));
+}
+}
+            
+        }
+
+        /// <summary>
+        /// 鏇存柊@(@Model.BusName)
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Description("@Model.ClassName/edit")]
+        [HttpPost("edit")]
+        public async Task Update(Update@(@Model.ClassName)Input input)
+        {
+            var isExist = await _@(@Model.CamelizeClassName)Rep.AnyAsync(u => u.Id == input.Id, false);
+            if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+            var @(@Model.CamelizeClassName) = input.Adapt<@(@Model.ClassName)>();
+            //楠岃瘉
+            await CheckExisit(@(@Model.CamelizeClassName),true);
+
+            @(@Model.CamelizeClassName).UpdatedUserId = SysHelper.GetUserId();
+            @(@Model.CamelizeClassName).UpdatedUserName = SysHelper.GetUserName();
+            @(@Model.CamelizeClassName).UpdatedTime = SysHelper.GetNowTime();
+            await _@(@Model.CamelizeClassName)Rep.UpdateAsync(@(@Model.CamelizeClassName),ignoreNullValues:true);
+        }
+
+        #endregion
+
+        #region 瀵煎叆
+
+        /// <summary>
+        /// Excel妯℃澘瀵煎叆@(@Model.BusName)鍔熻兘
+        /// </summary>
+        /// <param name="file">Excel妯℃澘鏂囦欢</param>
+        /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+        [Description("@Model.ClassName/importExcel")]
+        [HttpPost("importExcel")]
+        public async Task<int> ImportExcelAsync(IFormFile file)
+        { 
+            int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+            int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+            DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+            var addList =await CommonImport(importDataTable, _DataStartLine);
+
+            lock (_lock)
+            {
+                _@(@Model.CamelizeClassName)Rep.InsertAsync(addList);
+               
+            }
+            await Task.CompletedTask;
+            return addList.Count;
+        }
+
+        /// <summary>
+        ///  DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+        /// </summary>
+        /// <param name="dataTable"></param>
+        /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+        /// <returns></returns>
+        private async Task<List<@(@Model.ClassName)>> CommonImport(DataTable dataTable, int dataStartLine)
+        {
+
+            var details = new List<@(@Model.ClassName)>();
+            int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+            foreach (System.Data.DataRow row in dataTable.Rows)
+            {
+                index++;
+
+               //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+                @Model.ImportExcelCustomizationContent
+              
+                details.Add(addItem);
+            }
+              //楠岄噸
+              await CheckExisitForImport(details);
+            
+            return details;
+        }
+
+        /// <summary>
+        /// 鏍规嵁鐗堟湰涓嬭浇@(@Model.BusName)鐨凟xcel瀵煎叆妯℃澘
+        /// </summary>
+        /// <param name="version">妯℃澘鐗堟湰</param>
+        /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+        [Description("@Model.ClassName/downloadExcelTemplate")]
+        [HttpGet("downloadExcelTemplate")]
+        public IActionResult DownloadExcelTemplate([FromQuery] string version)
+        {
+            string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\@Model.ClassName{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+            var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(@Model.BusName).xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        #endregion
+
+        #region 绉佹湁鏂规硶
+
+        /// <summary>
+        /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <param name="isEdit"></param>
+        /// <returns></returns>
+        private async Task CheckExisit( @(@Model.ClassName) input,bool isEdit=false)
+        {
+           
+
+            @{
+                var columnIndex = 0;
+             }
+           
+                                      @foreach (var column in Model.TableField)
+                                      {
+                                          if (@column.WhetherUnionKey == "Y")
+                                          {   
+                                              columnIndex++;
+                                              if (@columnIndex == 1)
+                                              {
+           @:bool isExist = false;
+           @:if (!isEdit)//鏂板
+           @:{
+                   @://鏁版嵁鏄惁瀛樺湪閲嶅
+                   @:isExist = await _@(@Model.CamelizeClassName)Rep.AnyAsync(u =>
+                                   @:u.@(@column.ColumnName).Equals(input.@column.ColumnName)
+                                              }
+                                              else
+                                              {
+                                   @:&&u.@(@column.ColumnName).Equals(input.@column.ColumnName)
+                                              }
+                                          }
+                                      }
+                @if(columnIndex>0){
+                   @:,false);
+          @:}
+           @:else//缂栬緫 
+          @:{
+                 }
+
+                @{
+                  columnIndex=0;//鍒濆鍖栫储寮� 涓嬮潰缂栬緫鐨勯�昏緫浣跨敤
+                }
+          
+                
+                                      @foreach (var column in Model.TableField)
+                                      {
+                                          if (@column.WhetherUnionKey == "Y")
+                                          {  
+                                              columnIndex++;
+                                              if (@columnIndex == 1)
+                                              {
+                 @://褰撳墠缂栬緫鏁版嵁浠ュ鏄惁瀛樺湪閲嶅
+                 @: isExist = await _@(@Model.CamelizeClassName)Rep.AnyAsync(u => 
+                                    @:u.Id != input.Id
+                                    @:&&u.@(@column.ColumnName).Equals(input.@column.ColumnName)
+                                              }
+                                              else
+                                              {
+                                    @:&&u.@(@column.ColumnName).Equals(input.@column.ColumnName)
+                                              }
+                                            }
+                                       }
+                    @if(columnIndex>0)
+                    {
+                    @:,false);
+               @:}
+                    }
+               
+        
+
+      @if(columnIndex>0){
+            @:if (isExist) throw Oops.Oh(ErrorCode.E0001);
+       }else{
+            @://娌℃湁閰嶇疆鑱斿悎涓婚敭锛屼笉闇�瑕侀獙閲�
+       }
+       }
+        
+        /// <summary>
+        /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+        /// </summary>
+        /// <param name="inputs"></param>
+        /// <returns></returns>
+        private async Task CheckExisitForImport(List<@(@Model.ClassName)> inputs)
+        { 
+            //鏍规嵁鑱斿悎涓婚敭楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�  
+            @{
+                var index = 0;
+                bool isCheck = false;
+                string message = string.Empty;
+            }
+            @foreach (var column in Model.TableField)
+            {
+                if (@column.WhetherUnionKey == "Y")
+                {
+                    isCheck = true;
+                    message += "," + @column.ColumnComment + "[{item." + @column.ColumnName + "}]";
+                }
+            }
+            @if (isCheck)
+            {
+                 @:if (inputs?.Count <= 0)
+                 @:{
+                 @:    throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
+                 @:}
+
+
+                 @://鏁版嵁鏄惁閲嶅
+                 @:var existExcelItem = inputs.GroupBy(g => new {
+            }
+           @foreach (var column in Model.TableField)
+           {
+
+               if (@column.WhetherUnionKey == "Y")
+               {   
+                   index++;
+                   if (@index == 1)
+                   { 
+                                               @:g.@(@column.ColumnName)
+                   }
+                   else
+                   {
+                                               @:,g.@(@column.ColumnName)
+                   }
+                                       
+                                                                                                                    }
+           }
+           @if (isCheck)
+          {
+            index=0;
+                                               @:})
+                                               @:.Where(g => g.Count() > 1)
+                                               @:.Select(s => new {
+           }
+          @foreach (var column in Model.TableField)
+          {
+
+              if (@column.WhetherUnionKey == "Y")
+              {
+                  index++;
+                  if (@index == 1)
+                  {
+                                               @:s.Key.@(@column.ColumnName)
+                  }
+                  else
+                  {
+                                               @:,s.Key.@(@column.ColumnName)
+                  }
+
+              }
+          }
+           @if (isCheck)
+           {
+                                               @:}).FirstOrDefault();
+                 @:if (existExcelItem != null)
+                 @:{
+                   @:var @(@Model.CamelizeClassName) = existExcelItem.Adapt<@(@Model.ClassName)>();
+                   @:var item= existExcelItem.Adapt<@(@Model.ClassName)>();
+                   @:throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑@(@message)宸插瓨鍦�");
+                 @:}
+           }
+                      
+
+
+
+             @if (isCheck)
+            {    @://鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+                 @:var existDBItem = await _@(@Model.CamelizeClassName)Rep.DetachedEntities.FirstOrDefaultAsync(w=> 
+                 @:                                                        inputs.Select(s=>""
+            }
+           @foreach (var column in Model.TableField)
+           {
+
+               if (@column.WhetherUnionKey == "Y")
+               {  
+                                                                          @: +s.@(@column.ColumnName)
+                                                                      
+               }
+           }
+           @if (isCheck)
+          {
+                                                                        @:)
+                                                                        @:.Contains(""
+           }
+          @foreach (var column in Model.TableField)
+          {
+              if (@column.WhetherUnionKey == "Y")
+              {
+                                                                        @: +w.@(@column.ColumnName)
+                  
+              }
+          }
+             @if (isCheck)
+           {
+                 @: ));
+                 @: if (existDBItem != null)
+                 @:{
+                   @:var @(@Model.CamelizeClassName) = existExcelItem.Adapt<@(@Model.ClassName)>();
+                   @:var item= existExcelItem.Adapt<@(@Model.ClassName)>();
+                   @:throw Oops.Oh($"绯荤粺涓瑻(@message)宸插瓨鍦�");
+                 @:}
+           }
+        }
+
+        #endregion
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.cshtml
new file mode 100644
index 0000000..01ac49d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.cshtml
@@ -0,0 +1,284 @@
+@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+<template>
+  <a-modal
+    title="鏂板@(@Model.BusName)"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @@ok="handleSubmit"
+    @@cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+@if(@Model.LowCodeId == null){
+		<a-form :form="form">
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey != "True"){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+        @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol">
+} else {
+        @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+}
+if (@column.EffectType == "user"){
+if (@column.WhetherRequired == "Y"){
+          @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "depart"){
+if (@column.WhetherRequired == "Y"){
+          @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "input"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "textarea"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+} else {
+          @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+}
+}
+if (@column.EffectType == "inputnumber"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "select"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+            @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          @:</a-select>
+} else {
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+            @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          @:</a-select>
+}
+}
+if (@column.EffectType == "radio"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+            @:<a-radio v-for="(item,index) in  @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+          @:</a-radio-group>
+} else {
+          @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+            @:<a-radio v-for="(item,index) in  @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+          @:</a-radio-group>
+}
+}
+if (@column.EffectType == "checkbox"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+            @:<a-checkbox v-for="(item,index) in  @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+          @:</a-checkbox-group>
+} else {
+          @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+            @:<a-checkbox v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+          @:</a-checkbox-group>
+}
+}
+if (@column.EffectType == "switch"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-switch v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }], valuePropName: 'checked'}]" />
+} else {
+          @:<a-switch v-decorator="['@column.ColumnName', { valuePropName: 'checked' }]" />
+}
+}
+if (@column.EffectType == "datepicker"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" @@change="onChange@(@column.ColumnName)"/>
+} else {
+          @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" @@change="onChange@(@column.ColumnName)"/>
+}
+}
+if (@column.EffectType == "fk"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+            @:<a-select-option v-for="(item,index) in  @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          @:</a-select>
+} else {
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']">
+            @:<a-select-option v-for="(item,index) in @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          @:</a-select>
+}
+}
+        @:</a-form-item>
+}
+}
+}
+      </a-form>
+}else{
+      <k-form-build ref="kfb" :value="formDesign" :dynamicData="dynamicData" />
+}
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+    @:@(@Model.ClassName)Fk@(@column.FkEntityName)List,
+}
+}
+    @(@Model.ClassName)Add
+  } from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+@if(@Model.LowCodeId != null){
+  @:import 'k-form-design/styles/k-form-design.less'
+  @:import { sysDictDataListbycode } from '@@/api/modular/system/dictDataManage'
+}
+  export default {
+    data () {
+      return {
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.DictTypeCode != ""){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+        @:@(@column.ColumnName)Data: [],
+}
+}
+if (@column.EffectType == "datepicker"){
+        @:@(@column.ColumnName)DateString: '',
+}
+}
+}
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+        @:@(@column.FkEntityName)Data: [],
+}
+}
+        visible: false,
+        confirmLoading: false,
+@if(@Model.LowCodeId == null){
+        @:form: this.$form.createForm(this)
+}else{
+        @:dynamicData: @Model.DynamicData,
+        @:formDesign: @Model.FormDesign
+}
+      }
+    },
+    methods: {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+      @:@(@Model.ClassName)Fk@(@column.FkEntityName)List() {
+          @:@(@Model.ClassName)Fk@(@column.FkEntityName)List().then(res => {
+            @:this.@(@column.FkEntityName)Data = res.data
+          @:})
+      @:},
+}
+}
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+@foreach (var dynamic in Model.DynamicLoad_Dict){
+          @:sysDictDataListbycode({code:"@(dynamic.Dynamic)"}).then((data) => { this.dynamicData.@(dynamic.DynamicKey) = data.data });
+}
+
+        });
+@foreach (var column in Model.TableField){
+if (@column.DictTypeCode != ""){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+        @:const @(@column.ColumnName)Option = this.$options
+        @:this.@(@column.ColumnName)Data = @(@column.ColumnName)Option.filters['dictData']('@column.DictTypeCode')
+}
+}
+}
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+      @:this.@(@Model.ClassName)Fk@(@column.FkEntityName)List()
+}
+}
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+@if(@Model.LowCodeId == null){
+        @:const { form: { validateFields } } = this
+        @:this.confirmLoading = true
+        @:validateFields((errors, values) => {
+          @:if (!errors) {
+            @:for (const key in values) {
+              @:if (typeof (values[key]) === 'object') {
+                @:values[key] = JSON.stringify(values[key])
+              @:}
+            @:}
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+            @:values.@column.ColumnName = this.@(@column.ColumnName)DateString
+}
+}
+}
+            @:@(@Model.ClassName)Add(values).then((res) => {
+              @:if (res.success) {
+                @:this.$message.success('鏂板鎴愬姛')
+                @:this.confirmLoading = false
+                @:this.$emit('ok', values)
+                @:this.handleCancel()
+              @:} else {
+                @:this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              @:}
+            @:}).finally((res) => {
+              @:this.confirmLoading = false
+            @:})
+          @:} else {
+            @:this.confirmLoading = false
+          @:}
+        @:})
+}else{
+        @:this.$refs.kfb.getData().then(values => {
+          @:let data = { ...values };
+            @:@(@Model.ClassName)Add(data).then((res) => {
+              @:if (res.success) {
+                @:this.$message.success('鏂板鎴愬姛')
+                @:this.confirmLoading = false
+                @:this.$emit('ok', values)
+                @:this.handleCancel()
+              @:} else {
+                @:this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              @:}
+            @:}).finally((res) => {
+              @:this.confirmLoading = false
+            @:})
+        @:});
+}
+      },
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+      @:onChange@(@column.ColumnName)(date, dateString) {
+        @:this.@(@column.ColumnName)DateString = dateString
+      @:},
+}
+}
+}
+      handleCancel () {
+@if(@Model.LowCodeId == null){
+        @:this.form.resetFields()
+}else{
+        @:this.$refs.kfb.reset()
+}
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.vm
new file mode 100644
index 0000000..c89c74c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.vm
@@ -0,0 +1,294 @@
+<template>
+  <a-modal
+    title="鏂板@(@Model.BusName)"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @@ok="handleSubmit"
+    @@cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+@if(@Model.LowCodeId == null){
+		<a-form :form="form">
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey != "True"){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+        @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol">
+} else {
+        @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+}
+if (@column.EffectType == "user"){
+if (@column.WhetherRequired == "Y"){
+          @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "depart"){
+if (@column.WhetherRequired == "Y"){
+          @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "input"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "textarea"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+} else {
+          @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+}
+}
+if (@column.EffectType == "inputnumber"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "select"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+            @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          @:</a-select>
+} else {
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']">
+            @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          @:</a-select>
+}
+}
+if (@column.EffectType == "radio"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+            @:<a-radio v-for="(item,index) in  @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+          @:</a-radio-group>
+} else {
+          @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+            @:<a-radio v-for="(item,index) in  @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+          @:</a-radio-group>
+}
+}
+if (@column.EffectType == "checkbox"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+            @:<a-checkbox v-for="(item,index) in  @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+          @:</a-checkbox-group>
+} else {
+          @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+            @:<a-checkbox v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+          @:</a-checkbox-group>
+}
+}
+if (@column.EffectType == "switch"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-switch v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }], valuePropName: 'checked'}]" />
+} else {
+          @:<a-switch v-decorator="['@column.ColumnName', { valuePropName: 'checked' }]" />
+}
+}
+if (@column.EffectType == "datepicker"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" @@change="onChange@(@column.ColumnName)"/>
+} else {
+          @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" @@change="onChange@(@column.ColumnName)"/>
+}
+}
+
+if (@column.EffectType == "datetimepicker"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+} else {
+          @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+}
+}
+
+if (@column.EffectType == "fk"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+            @:<a-select-option v-for="(item,index) in  @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          @:</a-select>
+} else {
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']">
+            @:<a-select-option v-for="(item,index) in @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          @:</a-select>
+}
+}
+        @:</a-form-item>
+}
+}
+}
+      </a-form>
+}else{
+      <k-form-build ref="kfb" :value="formDesign" :dynamicData="dynamicData" />
+}
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import moment from 'moment'
+  import {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+  @:@(@Model.ClassName)Fk@(@column.FkEntityName)List,
+  }
+  }
+  @(@Model.ClassName)Add
+  } from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+  @if(@Model.LowCodeId != null){
+  @:import 'k-form-design/styles/k-form-design.less'
+  @:import { sysDictDataListbycode } from '@@/api/modular/system/dictDataManage'
+  }
+  export default {
+  data () {
+  return {
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  @foreach (var column in Model.TableField){
+  if (@column.WhetherAddUpdate == "Y"){
+  if (@column.DictTypeCode != ""){
+  if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+  @:@(@column.ColumnName)Data: [],
+  }
+  }
+  if (@column.EffectType == "datepicker"){
+  @:@(@column.ColumnName)DateString: '',
+  }
+  }
+  }
+  @foreach (var column in Model.TableField){
+  if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+        @:@(@column.FkEntityName)Data: [],
+}
+}
+        visible: false,
+        confirmLoading: false,
+@if(@Model.LowCodeId == null){
+        @:form: this.$form.createForm(this)
+}else{
+        @:dynamicData: @Model.DynamicData,
+        @:formDesign: @Model.FormDesign
+}
+      }
+    },
+    methods: {
+	moment,
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+      @:@(@Model.ClassName)Fk@(@column.FkEntityName)List() {
+          @:@(@Model.ClassName)Fk@(@column.FkEntityName)List().then(res => {
+            @:this.@(@column.FkEntityName)Data = res.data
+          @:})
+      @:},
+}
+}
+      // 鍒濆鍖栨柟娉�
+      add (record) {
+        this.visible = true
+        this.$nextTick(() => {
+@foreach (var dynamic in Model.DynamicLoad_Dict){
+          @:sysDictDataListbycode({code:"@(dynamic.Dynamic)"}).then((data) => { this.dynamicData.@(dynamic.DynamicKey) = data.data });
+}
+
+        });
+@foreach (var column in Model.TableField){
+if (@column.DictTypeCode != ""){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+        @:const @(@column.ColumnName)Option = this.$options
+        @:this.@(@column.ColumnName)Data = @(@column.ColumnName)Option.filters['dictData']('@column.DictTypeCode')
+}
+}
+}
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+      @:this.@(@Model.ClassName)Fk@(@column.FkEntityName)List()
+}
+}
+      },
+      /**
+       * 鎻愪氦琛ㄥ崟
+       */
+      handleSubmit () {
+@if(@Model.LowCodeId == null){
+        @:const { form: { validateFields } } = this
+        @:this.confirmLoading = true
+        @:validateFields((errors, values) => {
+          @:if (!errors) {
+            @:for (const key in values) {
+              @:if (typeof (values[key]) === 'object') {
+                @:values[key] = JSON.stringify(values[key])
+              @:}
+            @:}
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+            @:values.@column.ColumnName = this.@(@column.ColumnName)DateString
+}
+}
+}
+            @:@(@Model.ClassName)Add(values).then((res) => {
+              @:if (res.success) {
+                @:this.$message.success('鏂板鎴愬姛')
+                @:this.confirmLoading = false
+                @:this.$emit('ok', values)
+                @:this.handleCancel()
+              @:} else {
+                @:this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              @:}
+            @:}).finally((res) => {
+              @:this.confirmLoading = false
+            @:})
+          @:} else {
+            @:this.confirmLoading = false
+          @:}
+        @:})
+}else{
+        @:this.$refs.kfb.getData().then(values => {
+          @:let data = { ...values };
+            @:@(@Model.ClassName)Add(data).then((res) => {
+              @:if (res.success) {
+                @:this.$message.success('鏂板鎴愬姛')
+                @:this.confirmLoading = false
+                @:this.$emit('ok', values)
+                @:this.handleCancel()
+              @:} else {
+                @:this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+              @:}
+            @:}).finally((res) => {
+              @:this.confirmLoading = false
+            @:})
+        @:});
+}
+      },
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+      @:onChange@(@column.ColumnName)(date, dateString) {
+        @:this.@(@column.ColumnName)DateString = dateString
+      @:},
+}
+}
+}
+      handleCancel () {
+@if(@Model.LowCodeId == null){
+        @:this.form.resetFields()
+}else{
+        @:this.$refs.kfb.reset()
+}
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.cshtml
new file mode 100644
index 0000000..5e03a74
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.cshtml
@@ -0,0 +1,277 @@
+@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+<template>
+  <a-modal
+    title="缂栬緫@(@Model.BusName)"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @@ok="handleSubmit"
+    @@cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+@if(@Model.LowCodeId == null){
+      <a-form :form="form">
+@foreach (var column in Model.TableField){
+if(@column.ColumnKey == "True"){
+        @:<a-form-item v-show="false"><a-input v-decorator="['@column.ColumnName']" /></a-form-item>
+} else {
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+        @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol">
+} else {
+        @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+}
+if (@column.EffectType == "user"){
+if (@column.WhetherRequired == "Y"){
+          @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "depart"){
+if (@column.WhetherRequired == "Y"){
+          @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "input"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "textarea"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+} else {
+          @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+}
+}
+if (@column.EffectType == "inputnumber"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "select"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+            @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          @:</a-select>
+} else {
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+            @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          @:</a-select>
+}
+}
+if (@column.EffectType == "radio"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)}" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+            @:<a-radio v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+          @:</a-radio-group>
+} else {
+          @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+            @:<a-radio v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+          @:</a-radio-group>
+}
+}
+if (@column.EffectType == "checkbox"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+            @:<a-checkbox v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+          @:</a-checkbox-group>
+} else {
+          @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+            @:<a-checkbox v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+          @:</a-checkbox-group>
+}
+}
+if (@column.EffectType == "switch"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-switch v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }], valuePropName: 'checked'}]" />
+} else {
+          @:<a-switch v-decorator="['@column.ColumnName', { valuePropName: 'checked' }]" />
+}
+}
+if (@column.EffectType == "datepicker"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" @@change="onChange@(@column.ColumnName)"/>
+} else {
+          @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" @@change="onChange@(@column.ColumnName)"/>
+}
+}
+if (@column.EffectType == "fk"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+            @:<a-select-option v-for="(item,index) in  @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          @:</a-select>
+} else {
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']">
+            @:<a-select-option v-for="(item,index) in @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          @:</a-select>
+}
+}
+        @:</a-form-item>
+}
+}
+}
+      </a-form>
+}else{
+      <k-form-build ref="kfb" :value="formDesign" :dynamicData="dynamicData" />
+}
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+@{
+    var editData = 0;
+    var DateQuery = "N";
+}
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+  DateQuery="Y";
+}
+if(@column.ColumnKey != "True"){
+if(@column.EffectType != "datepicker"){
+  editData++;
+}
+}
+}
+}
+@if(DateQuery == "Y"){
+  @:import moment from 'moment'
+}
+  import {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+    @:@(@Model.ClassName)Fk@(@column.FkEntityName)List,
+}
+}
+    @(@Model.ClassName)Edit
+  } from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+@if(@Model.LowCodeId != null){
+  @:import 'k-form-design/styles/k-form-design.less'
+  @:import { sysDictDataListbycode } from '@@/api/modular/system/dictDataManage'
+}
+  export default {
+    data () {
+      return {
+	    Id: 0,
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        record: {},
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.DictTypeCode != ""){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+        @:@(@column.ColumnName)Data: [],
+}
+}
+if (@column.EffectType == "datepicker"){
+        @:@(@column.ColumnName)DateString: '',
+}
+}
+}
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+        @:@(@column.FkEntityName)Data: [],
+}
+}
+        visible: false,
+        confirmLoading: false,
+        dynamicData: @Model.DynamicData,
+        formDesign: @Model.FormDesign
+      }
+    },
+    methods: {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+      @:@(@Model.ClassName)Fk@(@column.FkEntityName)List() {
+          @:@(@Model.ClassName)Fk@(@column.FkEntityName)List().then(res => {
+            @:this.@(@column.FkEntityName)Data = res.data
+          @:})
+      @:},
+}
+}
+@if(DateQuery == "Y"){
+      @:moment,
+}
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+@foreach (var dynamic in Model.DynamicLoad_Dict){
+          @:sysDictDataListbycode({code:"@(dynamic.Dynamic)"}).then((data) => { this.dynamicData.@(dynamic.DynamicKey) = data.data });
+}
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+@foreach (var column in Model.TableField){
+if (@column.DictTypeCode != ""){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+        @:const @(@column.ColumnName)Option = this.$options
+        @:this.@(@column.ColumnName)Data = @(@column.ColumnName)Option.filters['dictData']('@column.DictTypeCode')
+}
+}
+}
+        this.$nextTick(() => {
+          let data = { ...
+            {
+@foreach (var column in Model.TableField){
+              @:@column.OriginalColumnName: record.@column.ColumnName,
+}
+            }
+          }
+          this.$refs.kfb.setData(data)
+        })
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+      @:this.@(@Model.ClassName)Fk@(@column.FkEntityName)List()
+}
+}
+      },
+      handleSubmit () {
+        this.$refs.kfb.getData().then(values => {
+		  values.Id = this.Id
+          let data = { ...values };
+            @(@Model.ClassName)Edit(data).then((res) => {
+              if (res.success) {
+                this.$message.success('缂栬緫鎴愬姛')
+                this.confirmLoading = false
+                this.$emit('ok', values)
+                this.handleCancel()
+              } else {
+                this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              }
+            }).finally((res) => {
+              this.confirmLoading = false
+            })
+        });
+      },
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+      @:onChange@(@column.ColumnName)(date, dateString) {
+        @:this.@(@column.ColumnName)DateString = dateString
+      @:},
+}
+}
+}
+      handleCancel () {
+        this.$refs.kfb.reset()
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.vm
new file mode 100644
index 0000000..1bc332d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.vm
@@ -0,0 +1,384 @@
+<template>
+  <a-modal
+    title="缂栬緫@(@Model.BusName)"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @@ok="handleSubmit"
+    @@cancel="handleCancel">
+    <a-spin :spinning="confirmLoading">
+@if(@Model.LowCodeId == null){
+      <a-form :form="form">
+@foreach (var column in Model.TableField){
+if(@column.ColumnKey == "True"){
+        @:<a-form-item v-show="false"><a-input v-decorator="['@column.ColumnName']" /></a-form-item>
+} else {
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+        @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol">
+} else {
+        @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+}
+if (@column.EffectType == "user"){
+if (@column.WhetherRequired == "Y"){
+          @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "depart"){
+if (@column.WhetherRequired == "Y"){
+          @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "input"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "textarea"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+} else {
+          @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+}
+}
+if (@column.EffectType == "inputnumber"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+          @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "select"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+            @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+          @:</a-select>
+} else {
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']">
+            @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+          @:</a-select>
+}
+}
+if (@column.EffectType == "radio"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)}" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+            @:<a-radio v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+          @:</a-radio-group>
+} else {
+          @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+            @:<a-radio v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+          @:</a-radio-group>
+}
+}
+if (@column.EffectType == "checkbox"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+            @:<a-checkbox v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+          @:</a-checkbox-group>
+} else {
+          @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+            @:<a-checkbox v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+          @:</a-checkbox-group>
+}
+}
+if (@column.EffectType == "switch"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-switch v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }], valuePropName: 'checked'}]" />
+} else {
+          @:<a-switch v-decorator="['@column.ColumnName', { valuePropName: 'checked' }]" />
+}
+}
+if (@column.EffectType == "datepicker"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" @@change="onChange@(@column.ColumnName)"/>
+} else {
+          @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" @@change="onChange@(@column.ColumnName)"/>
+}
+}
+
+if (@column.EffectType == "datetimepicker"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+} else {
+          @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" :show-time="{format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+}
+}
+
+if (@column.EffectType == "fk"){
+if (@column.WhetherRequired == "Y"){
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+            @:<a-select-option v-for="(item,index) in  @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          @:</a-select>
+} else {
+          @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']">
+            @:<a-select-option v-for="(item,index) in @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+          @:</a-select>
+}
+}
+        @:</a-form-item>
+}
+}
+}
+      </a-form>
+}else{
+      <k-form-build ref="kfb" :value="formDesign" :dynamicData="dynamicData" />
+}
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+@{
+    var editData = 0;
+    var DateQuery = "N";
+}
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+  DateQuery="Y";
+}
+if(@column.ColumnKey != "True"){
+if(@column.EffectType != "datepicker"){
+  editData++;
+}
+}
+}
+}
+  import {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+  @:@(@Model.ClassName)Fk@(@column.FkEntityName)List,
+  }
+  }
+  @(@Model.ClassName)Edit
+  } from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+  @if(@Model.LowCodeId != null){
+  @:import 'k-form-design/styles/k-form-design.less'
+  @:import { sysDictDataListbycode } from '@@/api/modular/system/dictDataManage'
+  }
+  export default {
+  data () {
+  return {
+  Id: 0,
+  labelCol: {
+  xs: { span: 24 },
+  sm: { span: 5 }
+  },
+  wrapperCol: {
+  xs: { span: 24 },
+  sm: { span: 15 }
+  },
+  record: {},
+  @foreach (var column in Model.TableField){
+  if (@column.WhetherAddUpdate == "Y"){
+  if (@column.DictTypeCode != ""){
+  if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+  @:@(@column.ColumnName)Data: [],
+  }
+  }
+  if (@column.EffectType == "datepicker"){
+  @:@(@column.ColumnName)DateString: '',
+  }
+  }
+  }
+  @foreach (var column in Model.TableField){
+  if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+        @:@(@column.FkEntityName)Data: [],
+}
+}
+        visible: false,
+        confirmLoading: false,
+@if(@Model.LowCodeId == null){
+        @:form: this.$form.createForm(this)
+}else{
+        @:dynamicData: @Model.DynamicData,
+        @:formDesign: @Model.FormDesign
+}
+      }
+    },
+    methods: {
+	moment,
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+      @:@(@Model.ClassName)Fk@(@column.FkEntityName)List() {
+          @:@(@Model.ClassName)Fk@(@column.FkEntityName)List().then(res => {
+            @:this.@(@column.FkEntityName)Data = res.data
+          @:})
+      @:},
+}
+}
+@if(DateQuery == "Y"){
+      @:moment,
+}
+      // 鍒濆鍖栨柟娉�
+      edit (record) {
+        this.visible = true;
+		this.Id = record.id;
+        this.$nextTick(() => {
+@foreach (var dynamic in Model.DynamicLoad_Dict){
+          @:sysDictDataListbycode({code:"@(dynamic.Dynamic)"}).then((data) => { this.dynamicData.@(dynamic.DynamicKey) = data.data });
+}
+        });
+        //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+        this.record = JSON.parse(JSON.stringify(record))
+@foreach (var column in Model.TableField){
+if (@column.DictTypeCode != ""){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+        @:const @(@column.ColumnName)Option = this.$options
+        @:this.@(@column.ColumnName)Data = @(@column.ColumnName)Option.filters['dictData']('@column.DictTypeCode')
+}
+}
+}
+        this.$nextTick(() => {
+@if(@Model.LowCodeId != null){
+          @:let data = { ...
+}else{
+          @:this.form.setFieldsValue(
+}
+            {
+@if(@Model.LowCodeId != null){
+@foreach (var column in Model.TableField){
+              @:@column.OriginalColumnName: record.@column.ColumnName,
+}
+}else{
+//灞炴�т紶閫掑紑濮�              
+@{var editDataColumn = 0;}
+@foreach (var column in Model.TableField){
+if(@column.ColumnKey == "True"){
+              @:@column.ColumnName: record.@column.ColumnName,
+}
+}
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey != "True"){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "checkbox"){
+editDataColumn++;
+if(editDataColumn != editData) {
+              @:@column.ColumnName: JSON.parse(record.@column.ColumnName),
+} else {
+              @:@column.ColumnName: JSON.parse(record.@column.ColumnName)
+}
+}else if (@column.EffectType != "datepicker"){
+editDataColumn++;
+if(editDataColumn != editData){
+              @:@column.ColumnName: record.@column.ColumnName,
+} else {
+              @:@column.ColumnName: record.@column.ColumnName
+}
+}
+}
+}
+}
+//灞炴�т紶閫掔粨鏉�
+}
+            }
+@if(@Model.LowCodeId != null){
+          @:}
+          @:this.$refs.kfb.setData(data)
+}else{
+          @:)
+}
+        })
+@if(@Model.LowCodeId == null){
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+        // 鏃堕棿鍗曠嫭澶勭悊
+        //if (record.@column.ColumnName != null) {
+        @:this.form.getFieldDecorator('@column.ColumnName', { initialValue: moment(record.@column.ColumnName, 'YYYY-MM-DD') })
+        //}
+        @:this.@(@column.ColumnName)DateString = moment(record.@column.ColumnName).format('YYYY-MM-DD')
+}
+}
+}
+}
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+      @:this.@(@Model.ClassName)Fk@(@column.FkEntityName)List()
+}
+}
+      },
+      handleSubmit () {
+@if(@Model.LowCodeId == null){
+        @:const { form: { validateFields } } = this
+        @:this.confirmLoading = true
+        @:validateFields((errors, values) => {
+          @:if (!errors) {
+            @:for (const key in values) {
+              @:if (values[key] == null) continue
+              @:if (typeof (values[key]) === 'object') {
+                @:values[key] = JSON.stringify(values[key])
+                 @:this.record[key] = values[key]
+              @:} else {
+                 @:this.record[key] = values[key]
+              @:}
+            @:}
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+            @:values.@column.ColumnName = this.@(@column.ColumnName)DateString
+            @:this.record.@column.ColumnName = this.@(@column.ColumnName)DateString
+}
+}
+}
+            @:@(@Model.ClassName)Edit(this.record).then((res) => {
+              @:if (res.success) {
+                @:this.$message.success('缂栬緫鎴愬姛')
+                @:this.confirmLoading = false
+                @:this.$emit('ok', this.record)
+                @:this.handleCancel()
+              @:} else {
+                @:this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              @:}
+            @:}).finally((res) => {
+              @:this.confirmLoading = false
+            @:})
+          @:}else{
+            @:this.confirmLoading = false
+          @:} 
+}else{
+        @:this.$refs.kfb.getData().then(values => {
+		  @:values.Id = this.Id
+          @:let data = { ...values };
+            @:@(@Model.ClassName)Edit(data).then((res) => {
+              @:if (res.success) {
+                @:this.$message.success('缂栬緫鎴愬姛')
+                @:this.confirmLoading = false
+                @:this.$emit('ok', values)
+                @:this.handleCancel()
+              @:} else {
+                @:this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+              @:}
+            @:}).finally((res) => {
+              @:this.confirmLoading = false
+            @:})
+}
+        });
+      },
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+      @:onChange@(@column.ColumnName)(date, dateString) {
+        @:this.@(@column.ColumnName)DateString = dateString
+      @:},
+}
+}
+}
+      handleCancel () {
+@if(@Model.LowCodeId == null){
+        @:this.form.resetFields()
+}else{
+        @:this.$refs.kfb.reset()
+}
+        this.visible = false
+      }
+    }
+  }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.cs.cshtml
new file mode 100644
index 0000000..c1baf4e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.cs.cshtml
@@ -0,0 +1,180 @@
+<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @@cancel="handleCancel"
+    @@ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @@change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>
+      </a-row>
+      <a-row :span="24">
+        <a-button @@click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @@click="@(@Model.CamelizeClassName)DownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @@click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@@/utils/util'
+    import { @(@Model.ClassName)ImportExcel, @(@Model.ClassName)DownloadExcelTemplate} from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+import { sysExcelTemplateGetColumnList } from '@@/api/modular/system/excelTemplateManage'
+export default {
+  components: {
+  },
+  data() {
+    return {
+      visible: false,
+      detailed: false,
+      confirmLoading: false,
+      fileList: [],
+      importExcelTypeData: [],
+      importExcelType: '1',
+      uploadFile: null,
+      columns: [],
+      dataList: [],
+	  demandText:'',
+      columnText: ''
+    }
+  },
+  methods: {
+    index() {
+      this.visible = true;
+      this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+      this.demandText = parseDemandText("@(@Model.CamelizeClassName)DownloadExcelTemplate")
+      window.downloadFile = this.@(@Model.CamelizeClassName)DownloadExcelTemplate;
+      this.getTable();
+    },
+    showDemand() {
+      this.detailed = !this.detailed;
+    },
+    customRequest(document) {
+      this.uploadFile = document
+    },
+    getTable() {
+      sysExcelTemplateGetColumnList({className: "@(@Model.ClassName)"}).then(res =>
+      {
+        if (res.success) {
+          this.columns =[];
+          this.dataList = [{}];
+          res.data.forEach(x => {
+            this.columns.push({
+              dataIndex: x.columnName,
+              key: x.columnName,
+              title: x.columnComment
+            });
+            this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+          });
+          this.columnText = parseExcelFieldText(res.data);
+        }
+      });
+    },
+    beforeUpload(fileInfo) {
+      let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+      if (!res.success) {
+        this.$message.warning(res.msg)
+        return false
+      }
+      setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+    },
+    handleChange(fileInfo) {
+      if (fileInfo.file.status === 'error') {
+        fileInfo.fileList.splice(0, 1)
+      }
+      if (fileInfo.file.status === 'done') {
+        if (fileInfo.fileList.length > 1) {
+          fileInfo.fileList.splice(0, 1)
+        }
+        this.fileList = fileInfo.file
+      }
+    },
+    handleSubmit() {
+      this.confirmLoading = true
+      const formData = new FormData()
+      formData.append('file', this.uploadFile.file)
+    @(@Model.CamelizeClassName)ImportExcel(formData,  {importExcelType: this.importExcelTy pe}).then(res => {
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.confirmLoading = false
+        this.$emit('ok', [])
+        this.handleCancel()
+      }).finally((res)=>{this.confirmLoading = false})
+    },
+    handleCancel() {
+      this.visible = false
+      this.detailed = false
+    },
+    @(@Model.CamelizeClassName)DownloadExcelTemplate() {
+      @(@Model.CamelizeClassName)DownloadExcelTemplate({version: "v2"}).then((res) => {
+        downloadFile(res);
+      }).catch((err) => {
+        this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.vue.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.vue.vm
new file mode 100644
index 0000000..9438fb9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.vue.vm
@@ -0,0 +1,181 @@
+<template>
+  <a-modal
+    :width="850"
+    :destroyOnClose="true"
+    :visible="visible"
+    :forceRender="true"
+    title="鎵归噺瀵煎叆"
+    cancelText="鍙栨秷涓婁紶"
+    okText="寮�濮嬩笂浼�"
+    @@cancel="handleCancel"
+    @@ok="handleSubmit">
+    <a-spin :spinning="confirmLoading">
+      <a-row :span="24">
+        <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+      </a-row>
+      <p></p>
+      <a-row>
+        <a-col :span="16">
+          <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @@change="handleChange" :beforeUpload="beforeUpload">
+            <a-icon style="font-size: 40px;" type="cloud-upload" />
+          </a-upload-dragger>
+        </a-col>
+        <!--<a-col :span="8">
+          <span>瀵煎叆妯″紡锛�</span>
+          <a-select
+            style="width: 130px"
+            placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+            v-model="importExcelType">
+            <a-select-option
+              v-for="(item,index) in importExcelTypeData"
+              :key="index"
+              :value="item.code">{{ item.name }}
+            </a-select-option>
+          </a-select>
+        </a-col>-->
+      </a-row>
+      <a-row :span="24">
+        <!--<a-button @@click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+          鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+        </a-button>-->
+        <span>銆�</span>
+        <a-button style="width: 90px;text-align: left;" @@click="@(@Model.CamelizeClassName)DownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+        <span>銆�</span>
+        <a-button @@click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+          鏀惰捣
+        </a-button>
+      </a-row>
+      <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+        <a-breadcrumb>
+          <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+        </a-breadcrumb>
+      </a-row>
+      <pre v-show="detailed">
+        <div v-html="demandText"></div>
+      </pre>
+      <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+      <pre v-show="detailed">
+        <div v-html="columnText"></div>
+      </pre>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@@/utils/util'
+
+  import { @(@Model.ClassName)ImportExcel, @(@Model.ClassName)DownloadExcelTemplate} from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+  import { sysExcelTemplateGetColumnList } from '@@/api/modular/system/excelTemplateManage'
+  export default {
+  components: {
+  },
+  data() {
+  return {
+  visible: false,
+  detailed: false,
+  confirmLoading: false,
+  fileList: [],
+  importExcelTypeData: [],
+  importExcelType: '1',
+  uploadFile: null,
+  columns: [],
+  dataList: [],
+  demandText:'',
+  columnText: ''
+  }
+  },
+  methods: {
+  index() {
+  this.visible = true;
+  this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+  this.demandText = parseDemandText("@(@Model.CamelizeClassName)DownloadExcelTemplate")
+  window.downloadFile = this.@(@Model.CamelizeClassName)DownloadExcelTemplate;
+  this.getTable();
+  },
+  showDemand() {
+  this.detailed = !this.detailed;
+  },
+  customRequest(document) {
+  this.uploadFile = document
+  },
+  getTable() {
+  sysExcelTemplateGetColumnList({className: "@(@Model.ClassName)"}).then(res =>
+  {
+  if (res.success) {
+  this.columns =[];
+  this.dataList = [{}];
+  res.data.forEach(x => {
+  this.columns.push({
+  dataIndex: x.columnName,
+  key: x.columnName,
+  title: x.columnComment
+  });
+  this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+  });
+  this.columnText = parseExcelFieldText(res.data);
+  }
+  });
+  },
+  beforeUpload(fileInfo) {
+  let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+  if (!res.success) {
+  this.$message.warning(res.msg)
+  return false
+  }
+  setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+  },
+  handleChange(fileInfo) {
+  if (fileInfo.file.status === 'error') {
+  fileInfo.fileList.splice(0, 1)
+  }
+  if (fileInfo.file.status === 'done') {
+  if (fileInfo.fileList.length > 1) {
+  fileInfo.fileList.splice(0, 1)
+  }
+  this.fileList = fileInfo.file
+  }
+  },
+  handleSubmit() {
+  this.confirmLoading = true
+  const formData = new FormData()
+  formData.append('file', this.uploadFile.file)
+  @(@Model.ClassName)ImportExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+  this.$message.success('鎿嶄綔鎴愬姛')
+  this.confirmLoading = false
+  this.$emit('ok', [])
+  this.handleCancel()
+  }).finally((res)=>{this.confirmLoading = false})
+  },
+  handleCancel() {
+  this.visible = false
+  this.detailed = false
+  },
+  @(@Model.CamelizeClassName)DownloadExcelTemplate() {
+  @(@Model.ClassName)DownloadExcelTemplate({version: "v2"}).then((res) => {
+  downloadFile(res);
+  }).catch((err) => {
+  this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+  })
+  }
+  }
+  }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+  position: relative;
+  width: 140px;
+  height: 135px;
+  text-align: center;
+  background: #fafafa;
+  border: 1px dashed #d9d9d9;
+  border-radius: 2px;
+  cursor: pointer;
+  -webkit-transition: border-color 0.3s;
+  transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+  color: #ffc53d;
+  border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.cshtml
new file mode 100644
index 0000000..ada510d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.cshtml
@@ -0,0 +1,370 @@
+@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+<template>
+  <div>
+    <a-card :bordered="false" :bodyStyle="tstyle">
+@{var index = 0;}
+@if(Model.QueryWhetherList.Count > 0){
+      <text>
+      <div class="table-page-search-wrapper" v-if="hasPerm('@Model.ClassName:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48"></text>      
+foreach (var column in Model.QueryWhetherList){
+index++;
+if(@index == 3){
+      <text><template v-if="advanced"></text>
+}
+if(@column.EffectType == "input" || @column.EffectType == "textarea"){
+if(@index >= 3){
+              <text>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="@column.ColumnComment">
+                  <a-input v-model="queryParam.@column.ColumnName" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+                </a-form-item>
+              </a-col></text>
+} else {
+            <text>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="@column.ColumnComment">
+                <a-input v-model="queryParam.@column.ColumnName" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+              </a-form-item>
+            </a-col></text>
+}
+}else if(@column.EffectType == "inputnumber"){
+if(@index >= 3){
+              <text><a-col :md="8" :sm="24">
+                <a-form-item label="@column.ColumnComment">
+                  <a-input-number v-model="queryParam.@column.ColumnName" style="width: 100%" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+                </a-form-item>
+              </a-col></text>
+} else {
+            <text><a-col :md="8" :sm="24">
+              <a-form-item label="@column.ColumnComment">
+                <a-input-number v-model="queryParam.@column.ColumnName" style="width: 100%" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+              </a-form-item>
+            </a-col></text>
+}
+}else if(@column.EffectType == "select" || @column.EffectType == "radio"){
+if(@index >= 3){
+              <text><a-col :md="8" :sm="24">
+                <a-form-item label="@column.ColumnComment">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.ColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+                    <a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col></text>
+} else {
+            <text><a-col :md="8" :sm="24">
+              <a-form-item label="@column.ColumnComment">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.ColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+                  <a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col></text>
+}
+}else if(@column.EffectType == "switch"){
+      if(@index >= 3){
+      <text>
+        <a-col :md="8" :sm="24">
+          <a-form-item label="@column.ColumnComment">
+            <a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.ColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+              <a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+            </a-select>
+          </a-form-item>
+        </a-col>
+      </text>
+      } else {
+      <text>
+        <a-col :md="8" :sm="24">
+          <a-form-item label="@column.ColumnComment">
+            <a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.ColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+              <a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+            </a-select>
+          </a-form-item>
+        </a-col>
+      </text>
+      }
+}else if(@column.EffectType == "datepicker"){
+if(@index >= 3){
+              <text><a-col :md="8" :sm="24">
+                <a-form-item label="@column.ColumnComment">
+                  <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-model="queryParam.@(@column.ColumnName)Date" @@change="onChange@(@column.ColumnName)"/>
+                </a-form-item>
+              </a-col></text>
+} else {
+            <text><a-col :md="8" :sm="24">
+              <a-form-item label="@column.ColumnComment">
+                <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-model="queryParam.@(@column.ColumnName)Date" @@change="onChange@(@column.ColumnName)"/>
+              </a-form-item>
+            </a-col></text>
+}
+}
+}
+if(Model.QueryWhetherList.Count > 2){
+            </template>
+}if(Model.QueryWhetherList.Count > 2){
+            <text>
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @@click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @@click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @@click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col></text>
+} else {
+            <text><a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @@click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @@click="() => queryParam = {}">閲嶇疆</a-button>
+              </span>
+            </a-col></text>
+}
+<text>
+</text>
+          </a-row>
+        </a-form>
+      </div>
+}
+    </a-card>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey == "True"){
+        @::rowKey="(record) => record.@column.ColumnName"
+}
+}
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('@Model.ClassName:add')" >
+            <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @@click="$refs.excelForm.index()">
+              瀵煎叆
+            </a-button>
+            <a-button type="info" v-if="hasPerm('@Model.CamelizeClassName:exportExcel')" icon="download" @@click="@(@Model.CamelizeClassName)ToExcel()">
+              瀵煎嚭
+            </a-button>
+            <a-button type="primary" v-if="hasPerm('@Model.ClassName:add')" icon="plus" @@click="$refs.addForm.add()">鏂板@(@Model.BusName)</a-button>
+        </template>
+@foreach (var column in Model.TableField){
+if(@column.WhetherTable == "Y"){
+if(@column.WhetherRetract == "Y" || @column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+        @:<span slot="@(@column.ColumnName)scopedSlots" slot-scope="text">
+if(@column.WhetherRetract == "Y" && (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox")){
+          @:<ellipsis :length="10" tooltip>{{ '@column.DictTypeCode' | dictType(text) }}</ellipsis>
+}else if(@column.WhetherRetract == "Y"){
+          @:<ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+}else if(@column.EffectType == "checkbox"){
+          @:<a-tag v-for="textData in JSON.parse(text)" :key="textData.code" color="green">{{ '@column.DictTypeCode' | dictType(textData) }}</a-tag>
+} else {
+          @:{{ '@column.DictTypeCode' | dictType(text) }}
+}
+        @:</span>
+}
+}
+}
+        <span slot="action" slot-scope="text, record">
+          <a v-if="hasPerm('@Model.ClassName:edit')" @@click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('@Model.ClassName:edit') & hasPerm('@Model.ClassName:delete')"/>
+          <a-popconfirm v-if="hasPerm('@Model.ClassName:delete')" placement="topRight" title="纭鍒犻櫎锛�" @@confirm="() => @(@Model.ClassName)Delete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+      </s-table>
+      <add-form ref="addForm" @@ok="handleOk" />
+      <edit-form ref="editForm" @@ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+@{
+    var columnData = 0;
+    var Ellipsis = "N";
+    var DateQuery = "N";
+}
+@foreach (var column in Model.TableField){
+if(@column.WhetherTable == "Y"){
+if(@column.WhetherRetract == "Y")
+Ellipsis="Y";
+columnData++;
+}
+if(@column.QueryWhether == "Y"){
+if(@column.EffectType == "datepicker")
+ DateQuery="Y";
+}
+}
+@if(Ellipsis == "Y"){
+  @:import { STable, Ellipsis } from '@@/components'
+} else {
+  @:import { STable } from '@@/components'
+}
+@if(DateQuery == "Y"){
+  @:import moment from 'moment'
+}
+  import { @(@Model.ClassName)Page, @(@Model.ClassName)Delete } from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+  import addForm from './addForm.vue'
+  import editForm from './editForm.vue'
+  export default {
+    components: {
+@if(Ellipsis == "Y")
+      @:Ellipsis,
+      STable,
+      addForm,
+      editForm
+    },
+    data () {
+      return {
+@if(Model.QueryWhetherList.Count > 2){
+        @:advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+}
+        queryParam: {},
+        columns: [
+@{var columnDataColumns = 0;}
+@foreach (var column in Model.TableField){
+if (@column.WhetherTable == "Y"){
+columnDataColumns++;
+          @:{
+            @:title: '@column.ColumnComment',
+            @:align: 'center',
+if (@column.WhetherOrderBy == "Y"){
+@:sorter: true,
+}			
+if(@column.EffectType == "switch"){
+            @:customRender: (value) => (value ? <a-tag color="green">True</a-tag> : <a-tag color="volcano">False</a-tag>),
+}
+if(@column.EffectType == "fk"){
+            @:customRender: (value, record) => record.@(@column.LowerFkEntityName).@(@column.LowerFkColumnName),
+}
+if(@column.WhetherRetract == "Y" || @column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+            @:dataIndex: '@column.ColumnName',
+            @:scopedSlots: { customRender: '@(@column.ColumnName)scopedSlots' }
+} else {
+            @:dataIndex: '@column.ColumnName'
+}
+if(columnDataColumns != columnData){
+          @:},
+} else {
+          @:}
+}
+}
+}
+        ],
+        tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+        // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+        loadData: parameter => {
+@if(DateQuery == "Y"){
+          @:return @(@Model.ClassName)Page(Object.assign(parameter, this.switchingDate())).then((res) => {
+} else {
+          @:return @(@Model.ClassName)Page(Object.assign(parameter, this.queryParam)).then((res) => {
+}
+            return res.data
+          })
+        },
+@foreach (var column in Model.TableField){
+if(@column.QueryWhether == "Y"){
+if(@column.EffectType == "select" || @column.EffectType == "radio"){
+if(@column.DictTypeCode != "")
+@:        @(@column.ColumnName)Data: [],
+}
+}
+}
+        selectedRowKeys: [],
+        selectedRows: []
+      }
+    },
+    created () {
+      if (this.hasPerm('@Model.ClassName:edit') || this.hasPerm('@Model.ClassName:delete')) {
+        this.columns.push({
+          title: '鎿嶄綔',
+          width: '150px',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' }
+        })
+      }
+      const path = this.$route.path
+      const columnStr = window.localStorage.getItem(path)
+      if(columnStr) {
+          this.columns = JSON.parse(columnStr)
+      }
+@foreach (var column in Model.TableField){
+if(@column.QueryWhether == "Y"){
+if(@column.EffectType == "select" || @column.EffectType == "radio"){
+if(@column.DictTypeCode != ""){
+      @:const @(@column.ColumnName)Option = this.$options
+      @:this.@(@column.ColumnName)Data = @(@column.ColumnName)Option.filters['dictData']('@column.DictTypeCode')
+}
+}
+}
+}
+    },
+    methods: {
+@if(DateQuery == "Y"){
+      @:moment,
+}
+      /**
+       * 鏌ヨ鍙傛暟缁勮
+       */
+      switchingDate () {
+@foreach (var column in Model.TableField){
+if(@column.QueryWhether == "Y"){
+if(@column.EffectType == "datepicker"){
+        @:const queryParam@(@column.ColumnName) = this.queryParam.@(@column.ColumnName)Date
+        @:if (queryParam@(@column.ColumnName) != null) {
+        @:    this.queryParam.@column.ColumnName = moment(queryParam@(@column.ColumnName)).format('YYYY-MM-DD')
+        @:    if (queryParam@(@column.ColumnName).length < 1) {
+        @:        delete this.queryParam.@(@column.ColumnName)
+        @:    }
+        @:}else
+        @:{
+        @:  delete this.queryParam.@(@column.ColumnName)
+        @:}
+}
+}
+}
+        const obj = JSON.parse(JSON.stringify(this.queryParam))
+        return obj
+      },
+      @(@Model.ClassName)Delete (record) {
+        @(@Model.ClassName)Delete(record).then((res) => {
+          if (res.success) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.$refs.table.refresh()
+          } else {
+            this.$message.error('鍒犻櫎澶辫触') // + res.message
+          }
+        })
+      },
+@if(Model.QueryWhetherList.Count > 2){
+      @:toggleAdvanced () {
+        @:this.advanced = !this.advanced
+      @:},
+}
+@foreach (var column in Model.QueryWhetherList){
+if(@column.QueryWhether == "Y"){
+if(@column.EffectType == "datepicker"){
+      @:onChange@(@column.ColumnName)(date, dateString) {
+      @:  this.@(@column.ColumnName) = dateString
+      @:},
+}
+}
+}
+      handleOk () {
+        this.$refs.table.refresh()
+      },
+      onSelectChange (selectedRowKeys, selectedRows) {
+        this.selectedRowKeys = selectedRowKeys
+        this.selectedRows = selectedRows
+      }
+    }
+  }
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.vm
new file mode 100644
index 0000000..34fe553
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.vm
@@ -0,0 +1,574 @@
+<template>
+  <div ref="boxOutWrap" class="boxOutWrap">
+	<div ref="boxForm" class="boxForm">  
+    <a-card :bordered="false" :bodyStyle="tstyle">
+@{var index = 0;}
+@if(Model.QueryWhetherList.Count > 0){
+      <text>
+      <div class="table-page-search-wrapper" v-if="hasPerm('@Model.ClassName:page')">
+        <a-form layout="inline">
+          <a-row :gutter="48"></text>      
+foreach (var column in Model.QueryWhetherList){
+index++;
+if(@index == 3){
+      <text><template v-if="advanced"></text>
+}
+if(@column.EffectType == "input" || @column.EffectType == "textarea"){
+if(@index >= 3){
+              <text>
+              <a-col :md="8" :sm="24">
+                <a-form-item label="@column.ColumnComment">
+                  <a-input v-model="queryParam.@column.LowerColumnName" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+                </a-form-item>
+              </a-col></text>
+} else {
+            <text>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="@column.ColumnComment">
+                <a-input v-model="queryParam.@column.LowerColumnName" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+              </a-form-item>
+            </a-col></text>
+}
+}else if(@column.EffectType == "inputnumber"){
+if(@index >= 3){
+              <text><a-col :md="8" :sm="24">
+                <a-form-item label="@column.ColumnComment">
+                  <a-input-number v-model="queryParam.@column.LowerColumnName" style="width: 100%" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+                </a-form-item>
+              </a-col></text>
+} else {
+            <text><a-col :md="8" :sm="24">
+              <a-form-item label="@column.ColumnComment">
+                <a-input-number v-model="queryParam.@column.LowerColumnName" style="width: 100%" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+              </a-form-item>
+            </a-col></text>
+}
+}else if(@column.EffectType == "select" || @column.EffectType == "radio"){
+if(@index >= 3){
+              <text><a-col :md="8" :sm="24">
+                <a-form-item label="@column.ColumnComment">
+                  <a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.LowerColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+                    <a-select-option v-for="(item,index) in @(@column.LowerColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col></text>
+} else {
+            <text><a-col :md="8" :sm="24">
+              <a-form-item label="@column.ColumnComment">
+                <a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.LowerColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+                  <a-select-option v-for="(item,index) in @(@column.LowerColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col></text>
+		}
+		}else if(@column.EffectType == "switch"){
+		if(@index >= 3){
+		<text>
+			<a-col :md="8" :sm="24">
+				<a-form-item label="@column.ColumnComment">
+					<a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.LowerColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+						<a-select-option v-for="(item,index) in @(@column.LowerColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+					</a-select>
+				</a-form-item>
+			</a-col>
+		</text>
+		} else {
+		<text>
+			<a-col :md="8" :sm="24">
+				<a-form-item label="@column.ColumnComment">
+					<a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.LowerColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+						<a-select-option v-for="(item,index) in @(@column.LowerColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+					</a-select>
+				</a-form-item>
+			</a-col>
+		</text>
+		}
+		}
+
+		else if(@column.EffectType == "datetimepicker"){
+          <!--骞存湀鏃ユ椂鍒嗙-->
+		if(@column.QueryType != "between"){
+				if(@index >= 3){
+				<text>
+					<a-col :md="8" :sm="24">
+						<a-form-item label="@column.ColumnComment">
+							<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-model="queryParam.@(@column.LowerColumnName)"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @@change="onChange@(@column.LowerColumnName)"/>
+						</a-form-item>
+					</a-col>
+				</text>
+				} else {
+				<text>
+					<a-col :md="8" :sm="24">
+						<a-form-item label="@column.ColumnComment">
+							<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.@(@column.LowerColumnName)"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"  @@change="onChange@(@column.LowerColumnName)"/>
+						</a-form-item>
+					</a-col>
+				</text>
+		}
+		}else{
+			<!--鏃堕棿鑼冨洿-->
+			if(@index >= 3){
+			<text>
+				<a-col :md="8" :sm="24">
+					<a-form-item label="@column.ColumnComment">
+						<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.@(@column.LowerColumnName)"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"   @@change="onChange@(@column.LowerColumnName)"/>
+
+					</a-form-item>
+				</a-col>
+			</text>
+			} else {
+			<text>
+				<a-col :md="8" :sm="24">
+					<a-form-item label="@column.ColumnComment">
+						<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']"  :show-time="{
+format: 'HH:mm:ss',  defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.@(@column.LowerColumnName)"  value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"  @@change="onChange@(@column.LowerColumnName)"/>
+					</a-form-item>
+				</a-col>
+			</text>
+			}
+		}
+
+	
+		}
+		else if(@column.EffectType == "datepicker"){
+
+		if(@column.QueryType != "between"){
+		if(@index >= 3){
+		<text>
+			        <a-col :md="8" :sm="24">
+				        <a-form-item label="@column.ColumnComment">
+					        <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-model="queryParam.@(@column.LowerColumnName)" @@change="onChange@(@column.LowerColumnName)"/>
+				        </a-form-item>
+			        </a-col>
+		        </text>
+		        } else {
+		        <text>
+			        <a-col :md="8" :sm="24">
+				        <a-form-item label="@column.ColumnComment">
+					        <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-model="queryParam.@(@column.LowerColumnName)" @@change="onChange@(@column.LowerColumnName)"/>
+				        </a-form-item>
+			        </a-col>
+		        </text>
+		        }
+		    }else{
+                 <!--鏃堕棿鑼冨洿-->
+		        if(@index >= 3){
+		        <text>
+			        <a-col :md="8" :sm="24">
+				        <a-form-item label="@column.ColumnComment">
+							<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" v-model="queryParam.@(@column.LowerColumnName)" @@change="onChange@(@column.LowerColumnName)"/>
+
+						</a-form-item>
+			        </a-col>
+		        </text>
+		        } else {
+		        <text>
+			        <a-col :md="8" :sm="24">
+				        <a-form-item label="@column.ColumnComment">
+							<a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" v-model="queryParam.@(@column.LowerColumnName)" @@change="onChange@(@column.LowerColumnName)"/>
+						</a-form-item>
+			        </a-col>
+		        </text>
+		        }
+
+		}
+		}
+		}
+		if(Model.QueryWhetherList.Count > 2){
+	</template>
+}if(Model.QueryWhetherList.Count > 2){
+            <text>
+            <a-col :md="8" :sm="24" >
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @@click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @@click="() => queryParam = {}">閲嶇疆</a-button>
+                <a @@click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+                  <a-icon :type="advanced ? 'up' : 'down'"/>
+                </a>
+              </span>
+            </a-col></text>
+} else {
+            <text><a-col :md="8" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @@click="$refs.table.refresh(true)">鏌ヨ</a-button>
+                <a-button style="margin-left: 8px" @@click="() => queryParam = {}">閲嶇疆</a-button>
+              </span>
+            </a-col></text>
+}
+<text>
+</text>
+          </a-row>
+        </a-form>
+      </div>
+}
+    </a-card>
+	</div>
+    <a-card :bordered="false">
+      <s-table
+        ref="table"
+        :columns="columns"
+        :data="loadData"
+        :alert="true"
+		@@changeTablePage="pageInfo = $event"
+		:scroll="{x: true,y:tableHeight}"
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey == "True"){
+        @::rowKey="(record) => record.@column.LowerColumnName"
+}
+}
+        :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+        <template class="table-operator" slot="operator" v-if="hasPerm('@Model.ClassName:add')" >
+		<div ref="actionBar" class="actionBar">
+			@if(@Model.IsWhetherImport == true && @Model.IsOnlyQuery !=true){
+			<a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @@click="$refs.excelForm.index()">
+            瀵煎叆
+          </a-button>
+			}
+          <a-button type="info" v-if="hasPerm('@Model.ClassName:exportExcel')" icon="download" @@click="@(@Model.ClassName)ToExcel()">
+            瀵煎嚭
+          </a-button>
+			@if( @Model.IsOnlyQuery !=true){
+			<a-button type="primary" v-if="hasPerm('@Model.ClassName:add')" icon="plus" @@click="$refs.addForm.add()">鏂板@(@Model.BusName)</a-button>
+			}
+		</div>
+		</template>
+		  @foreach (var column in Model.TableField){
+		  if(@column.WhetherTable == "Y"){
+		  if(@column.WhetherRetract == "Y" || @column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox" ||@column.EffectType == "switch"){
+		  @:<span slot="@(@column.LowerColumnName)scopedSlots" slot-scope="text">
+if(@column.WhetherRetract == "Y" && (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox")){
+          @:<ellipsis :length="10" tooltip>{{ '@column.DictTypeCode' | dictType(text) }}</ellipsis>
+}else if(@column.WhetherRetract == "Y"){
+          @:<ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+}else if(@column.EffectType == "checkbox"){
+          @:<a-tag v-for="textData in JSON.parse(text)" :key="textData.code" color="green">{{ '@column.DictTypeCode' | dictType(textData) }}</a-tag>
+			}
+			else if (@column.EffectType == "switch"){
+			<div v-if="text===true ">
+				<a-tag color="green">鏄�</a-tag>
+			</div>
+			<div v-else-if="text==false">
+				<a-tag color="volcano">鍚�</a-tag>
+			</div>
+			<div v-else=""></div>
+			}
+			else {
+			@:{{ '@column.DictTypeCode' | dictType(text) }}
+			}
+			@:</span>
+		  }
+		  }
+		  }
+		  @if( @Model.IsOnlyQuery !=true){
+		  <span slot="action" slot-scope="text, record">
+			
+			<a v-if="hasPerm('@Model.ClassName:edit')" @@click="$refs.editForm.edit(record)">缂栬緫</a>
+          <a-divider type="vertical" v-if="hasPerm('@Model.ClassName:edit') & hasPerm('@Model.ClassName:delete')"/>
+          <a-popconfirm v-if="hasPerm('@Model.ClassName:delete')" placement="topRight" title="纭鍒犻櫎锛�" @@confirm="() => @(@Model.ClassName)Delete(record)">
+            <a>鍒犻櫎</a>
+          </a-popconfirm>
+        </span>
+		 }
+      </s-table>
+      <add-form ref="addForm" @@ok="handleOk" />
+      <edit-form ref="editForm" @@ok="handleOk" />
+	  <excel-form ref="excelForm" @@ok="handleOk" />
+    </a-card>
+  </div>
+</template>
+<script>
+	@{
+	var columnData = 0;
+	var Ellipsis = "N";
+	var DateQuery = "N";
+	}
+	@foreach (var column in Model.TableField){
+	if(@column.WhetherTable == "Y"){
+	if(@column.WhetherRetract == "Y")
+	Ellipsis="Y";
+	columnData++;
+	}
+	if(@column.QueryWhether == "Y"){
+	if(@column.EffectType == "datepicker"||@column.EffectType == "datetimepicker")
+	DateQuery="Y";
+	}
+	}
+	@if(Ellipsis == "Y"){
+	@:import { STable, Ellipsis } from '@@/components'
+	} else {
+	@:import { STable } from '@@/components'
+	}
+	@if(DateQuery == "Y"){
+	@:import moment from 'moment'
+	}
+	import { @(@Model.ClassName)Page, @(@Model.ClassName)Delete, @(@Model.ClassName)ToExcel } from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+	//鑷畾涔塼able楂樺害
+	import setTableHtMixin from '@@/mixins/handleTableHt.js'
+	import addForm from './addForm.vue'
+	import { exportExcel } from '@@/utils/exportToExcel'
+	import { downloadFile } from '@@/utils/util'
+	import editForm from './editForm.vue'
+	import excelForm from './excelForm.vue'
+	export default {
+	mixins: [setTableHtMixin],
+	components: {
+	@if(Ellipsis == "Y")
+	@:Ellipsis,
+	STable,
+	addForm,
+	editForm,
+	excelForm
+	},
+	data () {
+	return {
+	@if(Model.QueryWhetherList.Count > 2){
+	@:advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+	}
+	queryParam: {},
+	 pageInfo: {
+        current: 1,
+        pageSize: 10
+      },
+	columns: [
+	{
+	title:'搴忓彿',
+	width: '60px',
+	align: 'center',
+	customRender: (text, record, index) => `${index + 1 + (this.pageInfo.current - 1) * this.pageInfo.pageSize}`
+	},
+	@{var columnDataColumns = 0;}
+	@foreach (var column in Model.TableField){
+	if (@column.WhetherTable == "Y"){
+	columnDataColumns++;
+	@:{
+	@:title: '@column.ColumnComment',
+	@:align: 'center',
+
+	@:customHeaderCell: () => {
+	@:return {
+	@: style: {
+	@:'min-width': '@column.ShowTitleMinWidth'//鏈�灏忓垪瀹借缃�
+	@: }
+	@: }
+	@:},
+
+	@:customCell: () => {
+	@:return {
+	@:style: {
+	@:'min-width': '@column.ShowTitleMinWidth'//鏈�灏忓垪瀹借缃�
+	@:}
+	@:}
+	@:},
+
+	if (@column.WhetherOrderBy == "Y"){
+	@:sorter: true,
+	}
+
+	if(@column.EffectType == "datepicker"){
+	@:customRender: (value) => (value ? value.split(" ")[0] : value),//鏃堕棿鎴彇 涓嶈鏃跺垎绉�
+	@:customCutout:true,//鏃堕棿鎴彇 涓嶈鏃跺垎绉�
+	}
+
+	if(@column.EffectType == "fk"){
+	@:customRender: (value, record) => record.@(@column.LowerFkEntityName).@(@column.LowerFkLowerColumnName),
+	}
+
+	if(@column.WhetherRetract == "Y" || @column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox" || @column.EffectType == "switch"){
+	@:dataIndex: '@column.LowerColumnName',
+	@:scopedSlots: { customRender: '@(@column.LowerColumnName)scopedSlots' }
+	} else {
+	@:dataIndex: '@column.LowerColumnName'
+	}
+	if(columnDataColumns != columnData){
+	@:},
+	} else {
+	@:}
+	}
+	}
+	}
+	],
+	tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+	// 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+	loadData: parameter => {
+	@if(DateQuery == "Y"){
+	@:return @(@Model.ClassName)Page(Object.assign(parameter, this.switchingDate())).then((res) => {
+	} else {
+	@:return @(@Model.ClassName)Page(Object.assign(parameter, this.queryParam)).then((res) => {
+	}
+	return res.data
+	})
+	},
+	@foreach (var column in Model.TableField){
+	if(@column.QueryWhether == "Y"){
+	if(@column.EffectType == "select" || @column.EffectType == "radio"){
+	if(@column.DictTypeCode != "")
+	@:        @(@column.LowerColumnName)Data: [],
+	}
+	}
+	}
+	selectedRowKeys: [],
+	selectedRows: []
+	}
+	},
+	created () {
+	@if(Model.IsOnlyQuery !=true){
+	@:if (this.hasPerm('@Model.ClassName:edit') || this.hasPerm('@Model.ClassName:delete')) {
+	@:this.columns.push({
+	@:title: '鎿嶄綔',
+	@:width: '150px',
+	@:dataIndex: 'action',
+	@:scopedSlots: { customRender: 'action' }
+	@:})
+	@:}
+	}
+	const path = this.$route.path
+	const columnStr = window.localStorage.getItem(path)
+	if(columnStr) {
+	var _columns = JSON.parse(columnStr)
+	this.columns.forEach(element => {
+	var fObj = _columns.find((item, index) => {
+	return item.dataIndex === element.dataIndex;
+	})
+	if(fObj!=undefined && fObj!=null){
+	element.checked=fObj.checked;
+	}
+	});
+	}
+	@foreach (var column in Model.TableField){
+	if(@column.QueryWhether == "Y"){
+
+	if(@column.EffectType == "select" || @column.EffectType == "radio"){
+	if(@column.DictTypeCode != ""){
+	@:const @(@column.LowerColumnName)Option = this.$options
+	@:this.@(@column.LowerColumnName)Data = @(@column.LowerColumnName)Option.filters['dictData']('@column.DictTypeCode')
+	}
+	}
+
+	if(@column.EffectType == "switch"){
+	@:const @(@column.LowerColumnName)Option = this.$options
+	@:this.@(@column.LowerColumnName)Data = @(@column.LowerColumnName)Option.filters['dictData']('yes_true_false')
+	}
+
+	}
+	}
+
+	this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+	window.addEventListener(
+	'resize',
+	() => {
+	this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+	},
+	false
+	)
+	
+	},
+	methods: {
+	@if(DateQuery == "Y"){
+	@:moment,
+	}
+	/**
+	* 鏌ヨ鍙傛暟缁勮
+	*/
+	switchingDate () {
+	const obj = JSON.parse(JSON.stringify(this.queryParam))
+	return obj
+	},
+	@(@Model.ClassName)Delete (record) {
+	@(@Model.ClassName)Delete(record).then((res) => {
+	if (res.success) {
+	this.$message.success('鍒犻櫎鎴愬姛')
+	this.$refs.table.refresh()
+	} else {
+	this.$message.error('鍒犻櫎澶辫触') // + res.message
+	}
+	})
+	},
+
+
+	@(@Model.ClassName)ToExcel() {
+	this.loading = true
+	let entozh = {};
+	const path = this.$route.path;
+	if (window.localStorage.getItem(path)) {
+	JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+	if (item.dataIndex != 'action' && item.checked) {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	} else { //鐩存帴鐐瑰鍑�
+	this.columns.forEach(item => {
+	if (item.dataIndex != 'action') {
+	entozh[item.dataIndex] = item.title
+	}
+	})
+	}
+	@(@Model.ClassName)Page(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+	this.loading = false;
+	//闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+	var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+	res.data.rows.forEach(item => {
+	var arrKeys = Object.keys(item);
+	arrKeys.forEach(key => {
+	var strFieldDic = key + 'Data';
+	//鏋氫妇杞��
+	if (this[strFieldDic] && this[strFieldDic].length > 0) {
+	let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+	if (arrFieldDic.length > 0) {
+	item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+	}
+	}
+	// 鏃ユ湡鎴彇
+	if (arrDataCutout.length > 0) {
+	arrDataCutout.forEach(itemIn => {
+	if (key == itemIn.dataIndex && item[key]) {
+	item[key] = item[key].split(" ")[0]
+	}
+	})
+	}
+	});
+	})
+	exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+	}).catch((err) => {
+	this.loading = false
+	this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+	})
+	},
+
+
+	@if(Model.QueryWhetherList.Count > 2){
+	@:toggleAdvanced () {
+	@:this.advanced = !this.advanced
+	@:this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+	@:},
+	}
+	@foreach (var column in Model.QueryWhetherList){
+	if(@column.QueryWhether == "Y"){
+	if(@column.EffectType == "datepicker" || @column.EffectType == "datetimepicker"){
+	@:onChange@(@column.LowerColumnName)(date, dateString) {
+	@:  this.queryParam.@(@column.LowerColumnName) = dateString
+	@:},
+
+	}
+	}
+	}
+	handleOk () {
+	this.$refs.table.refresh()
+	},
+	onSelectChange (selectedRowKeys, selectedRows) {
+	this.selectedRowKeys = selectedRowKeys
+	this.selectedRows = selectedRows
+	}
+	}
+	}
+</script>
+<style lang="less">
+  .table-operator {
+    margin-bottom: 18px;
+  }
+  button {
+    margin-right: 8px;
+  }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/avatar2.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/avatar2.jpg
new file mode 100644
index 0000000..9adb2d1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/avatar2.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css
new file mode 100644
index 0000000..b25478f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css
@@ -0,0 +1,16465 @@
+.app {
+    overflow: auto;
+    border: none
+}
+
+.scrollbar {
+    margin: 0 auto
+}
+
+.app1::-webkit-scrollbar {
+    width: 8px
+}
+
+.app1::-webkit-scrollbar-thumb {
+    border-radius: 6px;
+    background: #aaa
+}
+
+.app1::-webkit-scrollbar-track {
+    border-radius: 8px;
+    background: #fff
+}
+
+#userLayout.user-layout-wrapper[data-v-4322b080] {
+    height: 100%
+}
+
+#userLayout.user-layout-wrapper.mobile .container .main[data-v-4322b080] {
+    max-width: 368px;
+    width: 98%
+}
+
+#userLayout.user-layout-wrapper .container[data-v-4322b080] {
+    width: 100%;
+    min-height: 100%;
+    background-color: #fff;
+    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='800' height='800' viewBox='0 0 200 200'%3E%3Cdefs%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='88' y1='88' x2='0' y2='0'%3E%3Cstop offset='0' stop-color='%23064e77'/%3E%3Cstop offset='1' stop-color='%230a7dbe'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='75' y1='76' x2='168' y2='160'%3E%3Cstop offset='0' stop-color='%238f8f8f'/%3E%3Cstop offset='.09' stop-color='%23b3b3b3'/%3E%3Cstop offset='.18' stop-color='%23c9c9c9'/%3E%3Cstop offset='.31' stop-color='%23dbdbdb'/%3E%3Cstop offset='.44' stop-color='%23e8e8e8'/%3E%3Cstop offset='.59' stop-color='%23f2f2f2'/%3E%3Cstop offset='.75' stop-color='%23fafafa'/%3E%3Cstop offset='1' stop-color='%23FFF'/%3E%3C/linearGradient%3E%3Cfilter id='b' x='0' y='0' width='200%25' height='200%25'%3E%3CfeGaussianBlur in='SourceGraphic' stdDeviation='12'/%3E%3C/filter%3E%3C/defs%3E%3Cpath fill='url(%23a)' d='M0 174V0h174z'/%3E%3Cpath fill-opacity='.5' filter='url(%23b)' d='M121.8 174C59.2 153.1 0 174 0 174s63.5-73.8 87-94c24.4-20.9 87-80 87-80s-66.1 104.4-52.2 174z'/%3E%3Cpath fill='url(%23c)' d='M142.7 142.7C59.2 142.7 0 174 0 174s42-66.3 74.9-99.3S174 0 174 0s-31.3 62.6-31.3 142.7z'/%3E%3C/svg%3E");
+    background-attachment: fixed;
+    background-repeat: no-repeat;
+    background-position: 0 0;
+    padding: 110px 0 144px;
+    position: relative
+}
+
+#userLayout.user-layout-wrapper .container a[data-v-4322b080] {
+    text-decoration: none
+}
+
+#userLayout.user-layout-wrapper .container .top[data-v-4322b080] {
+    text-align: center
+}
+
+#userLayout.user-layout-wrapper .container .top .header[data-v-4322b080] {
+    height: 44px;
+    line-height: 44px
+}
+
+#userLayout.user-layout-wrapper .container .top .header .badge[data-v-4322b080] {
+    position: absolute;
+    display: inline-block;
+    line-height: 1;
+    vertical-align: middle;
+    margin-left: -12px;
+    margin-top: -10px;
+    opacity: .8
+}
+
+#userLayout.user-layout-wrapper .container .top .header .logo[data-v-4322b080] {
+    height: 44px;
+    vertical-align: top;
+    margin-right: 16px;
+    border-style: none
+}
+
+#userLayout.user-layout-wrapper .container .top .header .title[data-v-4322b080] {
+    font-size: 33px;
+    color: rgba(0,0,0,.85);
+    font-family: Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;
+    font-weight: 600;
+    position: relative;
+    top: 2px
+}
+
+#userLayout.user-layout-wrapper .container .top .desc[data-v-4322b080] {
+    font-size: 14px;
+    color: rgba(0,0,0,.45);
+    margin-top: 12px;
+    margin-bottom: 40px
+}
+
+#userLayout.user-layout-wrapper .container .main[data-v-4322b080] {
+    min-width: 260px;
+    width: 368px;
+    margin: 0 auto
+}
+
+#userLayout.user-layout-wrapper .container .footer[data-v-4322b080] {
+    position: absolute;
+    width: 100%;
+    bottom: 0;
+    padding: 0 16px;
+    margin: 48px 0 24px;
+    text-align: center
+}
+
+#userLayout.user-layout-wrapper .container .footer .links[data-v-4322b080] {
+    margin-bottom: 8px;
+    font-size: 14px
+}
+
+#userLayout.user-layout-wrapper .container .footer .links a[data-v-4322b080] {
+    color: rgba(0,0,0,.45);
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    #userLayout.user-layout-wrapper .container .footer .links a[data-v-4322b080]:not(:last-child) {
+        margin-right: 40px
+    }
+
+#userLayout.user-layout-wrapper .container .footer .copyright[data-v-4322b080] {
+    color: rgba(0,0,0,.45);
+    font-size: 14px
+}
+
+.header-notice-wrapper {
+    top: 50px !important
+}
+
+.header-notice[data-v-1c6fb671] {
+    display: inline-block;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+.header-notice span[data-v-1c6fb671] {
+    vertical-align: initial
+}
+
+.appRedio[data-v-49b88a94] {
+    border: 1px solid #91d5ff;
+    padding: 10px 20px;
+    background: #e6f7ff;
+    border-radius: 2px;
+    margin-bottom: 10px;
+    color: #91d5ff
+}
+
+.header-animat {
+    position: relative;
+    z-index: 105
+}
+
+.showHeader-enter-active {
+    -webkit-transition: all .25s ease;
+    transition: all .25s ease
+}
+
+.showHeader-leave-active {
+    -webkit-transition: all .5s ease;
+    transition: all .5s ease
+}
+
+.showHeader-enter, .showHeader-leave-to {
+    opacity: 0
+}
+
+.footer[data-v-3e04ba72] {
+    padding: 0 16px;
+    margin: 0 0 10px;
+    text-align: center
+}
+
+.footer .links[data-v-3e04ba72] {
+    margin-bottom: 8px
+}
+
+.footer .links a[data-v-3e04ba72] {
+    color: rgba(0,0,0,.45)
+}
+
+    .footer .links a[data-v-3e04ba72]:hover {
+        color: rgba(0,0,0,.65)
+    }
+
+    .footer .links a[data-v-3e04ba72]:not(:last-child) {
+        margin-right: 40px
+    }
+
+.footer .copyright[data-v-3e04ba72] {
+    color: rgba(0,0,0,.45);
+    font-size: 14px
+}
+
+.setting-drawer-index-content .setting-drawer-index-blockChecbox[data-v-0cdce0f5] {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex
+}
+
+.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item[data-v-0cdce0f5] {
+    margin-right: 16px;
+    position: relative;
+    border-radius: 4px;
+    cursor: pointer
+}
+
+.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item img[data-v-0cdce0f5] {
+    width: 48px
+}
+
+.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-0cdce0f5] {
+    position: absolute;
+    top: 0;
+    right: 0;
+    width: 100%;
+    padding-top: 15px;
+    padding-left: 24px;
+    height: 100%;
+    color: #1890ff;
+    font-size: 14px;
+    font-weight: 700
+}
+
+.setting-drawer-index-content .setting-drawer-theme-color-colorBlock[data-v-0cdce0f5] {
+    width: 20px;
+    height: 20px;
+    border-radius: 2px;
+    float: left;
+    cursor: pointer;
+    margin-right: 8px;
+    padding-left: 0;
+    padding-right: 0;
+    text-align: center;
+    color: #fff;
+    font-weight: 700
+}
+
+.setting-drawer-index-content .setting-drawer-theme-color-colorBlock i[data-v-0cdce0f5] {
+    font-size: 14px
+}
+
+.setting-drawer-index-handle[data-v-0cdce0f5] {
+    position: absolute;
+    top: 240px;
+    background: #1890ff;
+    width: 48px;
+    height: 48px;
+    right: 300px;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    cursor: pointer;
+    pointer-events: auto;
+    z-index: 1001;
+    text-align: center;
+    font-size: 16px;
+    border-radius: 4px 0 0 4px
+}
+
+.setting-drawer-index-handle i[data-v-0cdce0f5] {
+    color: #fff;
+    font-size: 20px
+}
+
+.page-transition-enter, .page-transition-leave-active {
+    opacity: 0
+}
+
+    .page-transition-enter .page-transition-container, .page-transition-leave-active .page-transition-container {
+        -webkit-transform: scale(1.1);
+        transform: scale(1.1)
+    }
+
+.page-header[data-v-300f978a] {
+    background: #fff;
+    padding: 10px 32px 0;
+    border-bottom: 0 solid #e8e8e8
+}
+
+.page-header .breadcrumb[data-v-300f978a] {
+    margin-bottom: 10px
+}
+
+.page-header .detail[data-v-300f978a] {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex
+}
+
+.page-header .detail .avatar[data-v-300f978a] {
+    -webkit-box-flex: 0;
+    -ms-flex: 0 1 72px;
+    flex: 0 1 72px;
+    margin: 0 24px 8px 0
+}
+
+.page-header .detail .avatar > span[data-v-300f978a] {
+    border-radius: 72px;
+    display: block;
+    width: 72px;
+    height: 72px
+}
+
+.page-header .detail .main[data-v-300f978a] {
+    width: 100%;
+    -webkit-box-flex: 0;
+    -ms-flex: 0 1 auto;
+    flex: 0 1 auto
+}
+
+.page-header .detail .main .row[data-v-300f978a] {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    width: 100%
+}
+
+.page-header .detail .main .row .avatar[data-v-300f978a] {
+    margin-bottom: 10px
+}
+
+.page-header .detail .main .title[data-v-300f978a] {
+    font-size: 20px;
+    line-height: 28px;
+    font-weight: 500;
+    color: rgba(0,0,0,.85);
+    margin-bottom: 16px;
+    -webkit-box-flex: 1;
+    -ms-flex: auto;
+    flex: auto
+}
+
+.page-header .detail .main .logo[data-v-300f978a] {
+    width: 28px;
+    height: 28px;
+    border-radius: 4px;
+    margin-right: 16px
+}
+
+.page-header .detail .main .content[data-v-300f978a], .page-header .detail .main .headerContent[data-v-300f978a] {
+    -webkit-box-flex: 1;
+    -ms-flex: auto;
+    flex: auto;
+    color: rgba(0,0,0,.45);
+    line-height: 22px
+}
+
+.page-header .detail .main .content .link[data-v-300f978a], .page-header .detail .main .headerContent .link[data-v-300f978a] {
+    margin-top: 16px;
+    line-height: 24px
+}
+
+.page-header .detail .main .content .link a[data-v-300f978a], .page-header .detail .main .headerContent .link a[data-v-300f978a] {
+    font-size: 14px;
+    margin-right: 32px
+}
+
+.page-header .detail .main .extra[data-v-300f978a] {
+    -webkit-box-flex: 0;
+    -ms-flex: 0 1 auto;
+    flex: 0 1 auto;
+    margin-left: 88px;
+    min-width: 242px;
+    text-align: right
+}
+
+.page-header .detail .main .action[data-v-300f978a] {
+    margin-left: 56px;
+    min-width: 266px;
+    -webkit-box-flex: 0;
+    -ms-flex: 0 1 auto;
+    flex: 0 1 auto;
+    text-align: right
+}
+
+    .page-header .detail .main .action[data-v-300f978a]:empty {
+        display: none
+    }
+
+.mobile .page-header .main .row[data-v-300f978a] {
+    -ms-flex-wrap: wrap;
+    flex-wrap: wrap
+}
+
+.mobile .page-header .main .row .avatar[data-v-300f978a] {
+    -webkit-box-flex: 0;
+    -ms-flex: 0 1 25%;
+    flex: 0 1 25%;
+    margin: 0 2% 8px 0
+}
+
+.mobile .page-header .main .row .content[data-v-300f978a], .mobile .page-header .main .row .headerContent[data-v-300f978a] {
+    -webkit-box-flex: 0;
+    -ms-flex: 0 1 70%;
+    flex: 0 1 70%
+}
+
+.mobile .page-header .main .row .content .link[data-v-300f978a], .mobile .page-header .main .row .headerContent .link[data-v-300f978a] {
+    margin-top: 16px;
+    line-height: 24px
+}
+
+.mobile .page-header .main .row .content .link a[data-v-300f978a], .mobile .page-header .main .row .headerContent .link a[data-v-300f978a] {
+    font-size: 14px;
+    margin-right: 10px
+}
+
+.mobile .page-header .main .row .extra[data-v-300f978a] {
+    -webkit-box-flex: 1;
+    -ms-flex: 1 1 auto;
+    flex: 1 1 auto;
+    margin-left: 0;
+    min-width: 0;
+    text-align: right
+}
+
+.mobile .page-header .main .row .action[data-v-300f978a] {
+    margin-left: unset;
+    min-width: 266px;
+    -webkit-box-flex: 0;
+    -ms-flex: 0 1 auto;
+    flex: 0 1 auto;
+    text-align: left;
+    margin-bottom: 12px
+}
+
+    .mobile .page-header .main .row .action[data-v-300f978a]:empty {
+        display: none
+    }
+
+.content[data-v-d6c73dd6] {
+    margin: 24px 24px 0
+}
+
+.content .link[data-v-d6c73dd6] {
+    margin-top: 16px
+}
+
+    .content .link[data-v-d6c73dd6]:not(:empty) {
+        margin-bottom: 16px
+    }
+
+.content .link a[data-v-d6c73dd6] {
+    margin-right: 32px;
+    height: 24px;
+    line-height: 24px;
+    display: inline-block
+}
+
+.content .link a i[data-v-d6c73dd6] {
+    font-size: 24px;
+    margin-right: 8px;
+    vertical-align: middle
+}
+
+.content .link a span[data-v-d6c73dd6] {
+    height: 24px;
+    line-height: 24px;
+    display: inline-block;
+    vertical-align: middle
+}
+
+.page-menu-search[data-v-d6c73dd6] {
+    text-align: center;
+    margin-bottom: 16px
+}
+
+.page-menu-tabs[data-v-d6c73dd6] {
+    margin-top: 48px
+}
+
+.extra-img[data-v-d6c73dd6] {
+    margin-top: -60px;
+    text-align: center;
+    width: 195px
+}
+
+.extra-img img[data-v-d6c73dd6] {
+    width: 100%
+}
+
+.mobile .extra-img[data-v-d6c73dd6] {
+    margin-top: 0;
+    text-align: center;
+    width: 96px
+}
+
+.mobile .extra-img img[data-v-d6c73dd6] {
+    width: 100%
+}
+
+.ant-pro-multi-tab {
+    margin: -23px -24px 24px -24px;
+    background: #fff
+}
+
+.topmenu .ant-pro-multi-tab-wrapper {
+    max-width: 1200px;
+    margin: 0 auto
+}
+
+.topmenu.content-width-Fluid .ant-pro-multi-tab-wrapper {
+    max-width: 100%;
+    margin: 0 auto
+}
+
+#nprogress {
+    pointer-events: none
+}
+
+    #nprogress .bar {
+        background: #fa541c;
+        position: fixed;
+        z-index: 1031;
+        top: 0;
+        left: 0;
+        width: 100%;
+        height: 2px
+    }
+
+    #nprogress .peg {
+        display: block;
+        position: absolute;
+        right: 0;
+        width: 100px;
+        height: 100%;
+        -webkit-box-shadow: 0 0 10px #fa541c,0 0 5px #fa541c;
+        box-shadow: 0 0 10px #fa541c,0 0 5px #fa541c;
+        opacity: 1;
+        -webkit-transform: rotate(3deg) translateY(-4px);
+        transform: rotate(3deg) translateY(-4px)
+    }
+
+    #nprogress .spinner {
+        display: block;
+        position: fixed;
+        z-index: 1031;
+        top: 15px;
+        right: 15px
+    }
+
+    #nprogress .spinner-icon {
+        width: 18px;
+        height: 18px;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        border: 2px solid transparent;
+        border-top-color: #fa541c;
+        border-left-color: #fa541c;
+        border-radius: 50%;
+        -webkit-animation: nprogress-spinner .4s linear infinite;
+        animation: nprogress-spinner .4s linear infinite
+    }
+
+.nprogress-custom-parent {
+    overflow: hidden;
+    position: relative
+}
+
+    .nprogress-custom-parent #nprogress .bar, .nprogress-custom-parent #nprogress .spinner {
+        position: absolute
+    }
+
+@-webkit-keyframes nprogress-spinner {
+    0% {
+        -webkit-transform: rotate(0deg)
+    }
+
+    to {
+        -webkit-transform: rotate(1turn)
+    }
+}
+
+@keyframes nprogress-spinner {
+    0% {
+        -webkit-transform: rotate(0deg);
+        transform: rotate(0deg)
+    }
+
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+#app {
+    height: 100%
+}
+
+    #app.colorWeak {
+        -webkit-filter: invert(80%);
+        filter: invert(80%)
+    }
+
+    #app.userLayout {
+        overflow: auto
+    }
+
+.layout.ant-layout {
+    height: auto;
+    overflow-x: hidden
+}
+
+    .layout.ant-layout.mobile .ant-layout-content .content, .layout.ant-layout.tablet .ant-layout-content .content {
+        margin: 24px 0 0
+    }
+
+    .layout.ant-layout.mobile .ant-table-wrapper .ant-table-content, .layout.ant-layout.tablet .ant-table-wrapper .ant-table-content {
+        overflow-y: auto
+    }
+
+    .layout.ant-layout.mobile .ant-table-wrapper .ant-table-body, .layout.ant-layout.tablet .ant-table-wrapper .ant-table-body {
+        min-width: 800px
+    }
+
+    .layout.ant-layout.mobile .topmenu.content-width-Fluid .header-index-wide, .layout.ant-layout.tablet .topmenu.content-width-Fluid .header-index-wide {
+        margin-left: 0
+    }
+
+    .layout.ant-layout.mobile .sidemenu .ant-header-fixedHeader.ant-header-side-closed, .layout.ant-layout.mobile .sidemenu .ant-header-fixedHeader.ant-header-side-opened {
+        width: 100%
+    }
+
+    .layout.ant-layout.ant-layout-has-sider {
+        -webkit-box-orient: horizontal;
+        -webkit-box-direction: normal;
+        -ms-flex-direction: row;
+        flex-direction: row
+    }
+
+    .layout.ant-layout .trigger {
+        font-size: 20px;
+        line-height: 55px;
+        padding: 0 24px;
+        cursor: pointer;
+        -webkit-transition: color .3s;
+        transition: color .3s
+    }
+
+        .layout.ant-layout .trigger:hover {
+            background: rgba(0,0,0,.025)
+        }
+
+    .layout.ant-layout .topmenu .ant-header-fixedHeader {
+        position: fixed;
+        top: 0;
+        right: 0;
+        z-index: 9;
+        width: 100%;
+        -webkit-transition: width .2s;
+        transition: width .2s
+    }
+
+        .layout.ant-layout .topmenu .ant-header-fixedHeader.ant-header-side-closed, .layout.ant-layout .topmenu .ant-header-fixedHeader.ant-header-side-opened {
+            width: 100%
+        }
+
+    .layout.ant-layout .topmenu.content-width-Fluid .header-index-wide {
+        max-width: unset
+    }
+
+        .layout.ant-layout .topmenu.content-width-Fluid .header-index-wide .header-index-left {
+            -webkit-box-flex: 1;
+            -ms-flex: 1 1 1000px;
+            flex: 1 1 1000px
+        }
+
+            .layout.ant-layout .topmenu.content-width-Fluid .header-index-wide .header-index-left .logo {
+                margin-left: 25px
+            }
+
+            .layout.ant-layout .topmenu.content-width-Fluid .header-index-wide .header-index-left .ant-menu.ant-menu-horizontal {
+                max-width: calc(100vw - 453px);
+                -webkit-box-flex: 1;
+                -ms-flex: 1 1 calc(100vw - 453px);
+                flex: 1 1 calc(100vw - 453px)
+            }
+
+        .layout.ant-layout .topmenu.content-width-Fluid .header-index-wide .header-index-right {
+            margin-right: 25px
+        }
+
+    .layout.ant-layout .topmenu.content-width-Fluid .page-header-index-wide {
+        max-width: unset
+    }
+
+    .layout.ant-layout .sidemenu .ant-header-fixedHeader {
+        position: fixed;
+        top: 0;
+        right: 0;
+        z-index: 9;
+        width: 100%;
+        -webkit-transition: width .2s;
+        transition: width .2s
+    }
+
+        .layout.ant-layout .sidemenu .ant-header-fixedHeader.ant-header-side-opened {
+            width: calc(100% - 230px)
+        }
+
+        .layout.ant-layout .sidemenu .ant-header-fixedHeader.ant-header-side-closed {
+            width: calc(100% - 80px)
+        }
+
+    .layout.ant-layout .header {
+        height: 55px;
+        background: #fff;
+        -webkit-box-shadow: 0 1px 4px rgba(0,21,41,.08);
+        box-shadow: 0 1px 4px rgba(0,21,41,.08);
+        position: relative
+    }
+
+        .layout.ant-layout .header .user-wrapper, .layout.ant-layout .top-nav-header-index .user-wrapper {
+            float: right;
+            height: 100%
+        }
+
+            .layout.ant-layout .header .user-wrapper .action, .layout.ant-layout .top-nav-header-index .user-wrapper .action {
+                line-height: 55px;
+                cursor: pointer;
+                padding: 0 12px;
+                display: inline-block;
+                -webkit-transition: all .3s;
+                transition: all .3s;
+                height: 100%;
+                color: rgba(0,0,0,.65)
+            }
+
+                .layout.ant-layout .header .user-wrapper .action:hover, .layout.ant-layout .top-nav-header-index .user-wrapper .action:hover {
+                    background: rgba(0,0,0,.025)
+                }
+
+                .layout.ant-layout .header .user-wrapper .action .avatar, .layout.ant-layout .top-nav-header-index .user-wrapper .action .avatar {
+                    margin: 15px 8px 15px 0;
+                    color: #1890ff;
+                    background: hsla(0,0%,100%,.85);
+                    vertical-align: middle
+                }
+
+                .layout.ant-layout .header .user-wrapper .action .icon, .layout.ant-layout .top-nav-header-index .user-wrapper .action .icon {
+                    font-size: 16px;
+                    padding: 4px
+                }
+
+        .layout.ant-layout .header.dark .user-wrapper .action, .layout.ant-layout .header.dark .user-wrapper .action a, .layout.ant-layout .top-nav-header-index.dark .user-wrapper .action, .layout.ant-layout .top-nav-header-index.dark .user-wrapper .action a {
+            color: hsla(0,0%,100%,.85)
+        }
+
+            .layout.ant-layout .header.dark .user-wrapper .action:hover, .layout.ant-layout .top-nav-header-index.dark .user-wrapper .action:hover {
+                background: hsla(0,0%,100%,.16)
+            }
+
+    .layout.ant-layout.mobile .top-nav-header-index .header-index-wide .header-index-left .trigger, .layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .trigger {
+        color: hsla(0,0%,100%,.85);
+        padding: 0 12px
+    }
+
+    .layout.ant-layout.mobile .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header, .layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header {
+        -webkit-box-flex: 0;
+        -ms-flex: 0 0 56px;
+        flex: 0 0 56px;
+        text-align: center;
+        line-height: 58px
+    }
+
+        .layout.ant-layout.mobile .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header h1, .layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header h1 {
+            display: none
+        }
+
+    .layout.ant-layout.mobile .top-nav-header-index.light .header-index-wide .header-index-left .trigger, .layout.ant-layout.tablet .top-nav-header-index.light .header-index-wide .header-index-left .trigger {
+        color: rgba(0,0,0,.65)
+    }
+
+    .layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .logo > a {
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap
+    }
+
+    .layout.ant-layout.tablet .top-nav-header-index .header-index-wide .ant-menu.ant-menu-horizontal {
+        -webkit-box-flex: 1;
+        -ms-flex: 1 1 auto;
+        flex: 1 1 auto;
+        white-space: normal
+    }
+
+    .layout.ant-layout .top-nav-header-index {
+        -webkit-box-shadow: 0 1px 4px rgba(0,21,41,.08);
+        box-shadow: 0 1px 4px rgba(0,21,41,.08);
+        position: relative;
+        -webkit-transition: background .3s,width .2s;
+        transition: background .3s,width .2s
+    }
+
+        .layout.ant-layout .top-nav-header-index .header-index-wide {
+            max-width: 1200px;
+            margin: auto;
+            padding-left: 0;
+            display: -webkit-box;
+            display: -ms-flexbox;
+            display: flex;
+            height: 55px
+        }
+
+            .layout.ant-layout .top-nav-header-index .header-index-wide .ant-menu.ant-menu-horizontal {
+                max-width: 835px;
+                -webkit-box-flex: 0;
+                -ms-flex: 0 1 835px;
+                flex: 0 1 835px;
+                border: none;
+                height: 55px;
+                line-height: 55px
+            }
+
+            .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left {
+                -webkit-box-flex: 0;
+                -ms-flex: 0 1 1000px;
+                flex: 0 1 1000px;
+                display: -webkit-box;
+                display: -ms-flexbox;
+                display: flex
+            }
+
+                .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header {
+                    -webkit-box-flex: 0;
+                    -ms-flex: 0 0 165px;
+                    flex: 0 0 165px;
+                    width: 165px;
+                    height: 55px;
+                    position: relative;
+                    line-height: 55px;
+                    -webkit-transition: all .3s;
+                    transition: all .3s;
+                    overflow: hidden
+                }
+
+                    .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header img, .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header svg {
+                        display: inline-block;
+                        vertical-align: middle;
+                        height: 32px;
+                        width: 32px
+                    }
+
+                    .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header h1 {
+                        color: #fff;
+                        display: inline-block;
+                        vertical-align: top;
+                        font-size: 16px;
+                        margin: 0 0 0 12px;
+                        font-weight: 400
+                    }
+
+            .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-right {
+                -webkit-box-flex: 0;
+                -ms-flex: 0 0 238px;
+                flex: 0 0 238px;
+                -ms-flex-item-align: end;
+                align-self: flex-end;
+                height: 55px;
+                overflow: hidden
+            }
+
+                .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-right .content-box {
+                    float: right
+                }
+
+                    .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-right .content-box .action {
+                        max-width: 140px;
+                        overflow: hidden;
+                        text-overflow: ellipsis;
+                        white-space: nowrap
+                    }
+
+        .layout.ant-layout .top-nav-header-index.light {
+            background-color: #fff
+        }
+
+            .layout.ant-layout .top-nav-header-index.light .header-index-wide .header-index-left .logo h1 {
+                color: #002140
+            }
+
+    .layout.ant-layout .layout-content {
+        margin: 24px 24px 0;
+        padding: 0 12px 0 0
+    }
+
+    .layout.ant-layout .ant-layout-footer {
+        padding: 0
+    }
+
+.topmenu .page-header-index-wide {
+    max-width: 1200px;
+    margin: 0 auto
+}
+
+.ant-drawer.drawer-sider .sider {
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+.ant-drawer.drawer-sider.dark .ant-drawer-content {
+    background-color: #001529
+}
+
+.ant-drawer.drawer-sider.light {
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+    .ant-drawer.drawer-sider.light .ant-drawer-content {
+        background-color: #fff
+    }
+
+.ant-drawer.drawer-sider .ant-drawer-body {
+    padding: 0
+}
+
+.sider {
+    -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35);
+    box-shadow: 2px 0 6px rgba(0,21,41,.35);
+    position: relative;
+    z-index: 106;
+    min-height: 100vh
+}
+
+    .sider .ant-layout-sider-children {
+        overflow-y: hidden
+    }
+
+        .sider .ant-layout-sider-children:hover {
+            overflow-y: auto
+        }
+
+    .sider.ant-fixed-sidemenu {
+        position: fixed;
+        height: 100%
+    }
+
+    .sider .logo {
+        position: relative;
+        height: 55px;
+        padding-left: 24px;
+        overflow: hidden;
+        line-height: 55px;
+        background: #002140;
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+        .sider .logo h1, .sider .logo img, .sider .logo svg {
+            display: inline-block;
+            vertical-align: middle
+        }
+
+        .sider .logo img, .sider .logo svg {
+            height: 32px;
+            width: 32px
+        }
+
+        .sider .logo h1 {
+            color: #fff;
+            font-size: 20px;
+            margin: 0 0 0 12px;
+            font-family: Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;
+            font-weight: 600;
+            vertical-align: middle
+        }
+
+    .sider.light {
+        background-color: #fff;
+        -webkit-box-shadow: 2px 0 8px 0 rgba(29,35,41,.05);
+        box-shadow: 2px 0 8px 0 rgba(29,35,41,.05)
+    }
+
+        .sider.light .logo {
+            background: #fff;
+            -webkit-box-shadow: 1px 1px 0 0 #e8e8e8;
+            box-shadow: 1px 1px 0 0 #e8e8e8
+        }
+
+            .sider.light .logo h1 {
+                color: unset
+            }
+
+        .sider.light .ant-menu-light {
+            border-right-color: transparent
+        }
+
+.user-dropdown-menu span {
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+.user-dropdown-menu-wrapper.ant-dropdown-menu {
+    padding: 4px 0
+}
+
+    .user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-item {
+        width: 160px
+    }
+
+        .user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-item > .anticon:first-child, .user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-item > a > .anticon:first-child, .user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-submenu-title > .anticon:first-child .ant-dropdown-menu-submenu-title > a > .anticon:first-child {
+            min-width: 12px;
+            margin-right: 8px
+        }
+
+.table-alert {
+    margin-bottom: 16px
+}
+
+.table-page-search-wrapper .ant-form-inline .ant-form-item {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    margin-bottom: 24px;
+    margin-right: 0
+}
+
+    .table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control-wrapper {
+        -webkit-box-flex: 1;
+        -ms-flex: 1 1;
+        flex: 1 1;
+        display: inline-block;
+        vertical-align: middle
+    }
+
+    .table-page-search-wrapper .ant-form-inline .ant-form-item > .ant-form-item-label {
+        line-height: 32px;
+        padding-right: 8px;
+        width: auto
+    }
+
+    .table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control {
+        height: 32px;
+        line-height: 32px
+    }
+
+.table-page-search-wrapper .table-page-search-submitButtons {
+    display: block;
+    margin-bottom: 24px;
+    white-space: nowrap
+}
+
+.content .table-operator {
+    margin-bottom: 18px
+}
+
+    .content .table-operator button {
+        margin-right: 8px
+    }
+
+.chart-card-header .meta[data-v-2ec411fc], .chart-card-header[data-v-2ec411fc] {
+    position: relative;
+    overflow: hidden;
+    width: 100%
+}
+
+.chart-card-header .meta[data-v-2ec411fc] {
+    color: rgba(0,0,0,.45);
+    font-size: 14px;
+    line-height: 22px
+}
+
+.chart-card-action[data-v-2ec411fc] {
+    cursor: pointer;
+    position: absolute;
+    top: 0;
+    right: 0
+}
+
+.chart-card-footer[data-v-2ec411fc] {
+    border-top: 1px solid #e8e8e8;
+    padding-top: 9px;
+    margin-top: 8px
+}
+
+.chart-card-footer > [data-v-2ec411fc] {
+    position: relative
+}
+
+.chart-card-footer .field[data-v-2ec411fc] {
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    margin: 0
+}
+
+.chart-card-content[data-v-2ec411fc] {
+    margin-bottom: 12px;
+    position: relative;
+    height: 46px;
+    width: 100%
+}
+
+.chart-card-content .content-fix[data-v-2ec411fc] {
+    position: absolute;
+    left: 0;
+    bottom: 0;
+    width: 100%
+}
+
+.total[data-v-2ec411fc] {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    word-break: break-all;
+    white-space: nowrap;
+    color: #000;
+    margin-top: 4px;
+    margin-bottom: 0;
+    font-size: 30px;
+    line-height: 38px;
+    height: 38px
+}
+
+.antv-chart-mini[data-v-30aaf0d9] {
+    position: relative;
+    width: 100%
+}
+
+.antv-chart-mini .chart-wrapper[data-v-30aaf0d9] {
+    position: absolute;
+    bottom: -28px;
+    width: 100%
+}
+
+body[data-v-1cd0b9b6], html[data-v-1cd0b9b6] {
+    width: 100%;
+    height: 100%
+}
+
+input[data-v-1cd0b9b6]::-ms-clear, input[data-v-1cd0b9b6]::-ms-reveal {
+    display: none
+}
+
+[data-v-1cd0b9b6], [data-v-1cd0b9b6]:after, [data-v-1cd0b9b6]:before {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+html[data-v-1cd0b9b6] {
+    font-family: sans-serif;
+    line-height: 1.15;
+    -webkit-text-size-adjust: 100%;
+    -ms-text-size-adjust: 100%;
+    -ms-overflow-style: scrollbar;
+    -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+article[data-v-1cd0b9b6], aside[data-v-1cd0b9b6], dialog[data-v-1cd0b9b6], figcaption[data-v-1cd0b9b6], figure[data-v-1cd0b9b6], footer[data-v-1cd0b9b6], header[data-v-1cd0b9b6], hgroup[data-v-1cd0b9b6], main[data-v-1cd0b9b6], nav[data-v-1cd0b9b6], section[data-v-1cd0b9b6] {
+    display: block
+}
+
+body[data-v-1cd0b9b6] {
+    margin: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    background-color: #fff;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+[tabindex="-1"][data-v-1cd0b9b6]:focus {
+    outline: none !important
+}
+
+hr[data-v-1cd0b9b6] {
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+    overflow: visible
+}
+
+h1[data-v-1cd0b9b6], h2[data-v-1cd0b9b6], h3[data-v-1cd0b9b6], h4[data-v-1cd0b9b6], h5[data-v-1cd0b9b6], h6[data-v-1cd0b9b6] {
+    margin-top: 0;
+    margin-bottom: .5em;
+    color: rgba(0,0,0,.85);
+    font-weight: 500
+}
+
+p[data-v-1cd0b9b6] {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+abbr[data-original-title][data-v-1cd0b9b6], abbr[title][data-v-1cd0b9b6] {
+    text-decoration: underline;
+    -webkit-text-decoration: underline dotted;
+    text-decoration: underline dotted;
+    border-bottom: 0;
+    cursor: help
+}
+
+address[data-v-1cd0b9b6] {
+    margin-bottom: 1em;
+    font-style: normal;
+    line-height: inherit
+}
+
+input[type=number][data-v-1cd0b9b6], input[type=password][data-v-1cd0b9b6], input[type=text][data-v-1cd0b9b6], textarea[data-v-1cd0b9b6] {
+    -webkit-appearance: none
+}
+
+dl[data-v-1cd0b9b6], ol[data-v-1cd0b9b6], ul[data-v-1cd0b9b6] {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+ol ol[data-v-1cd0b9b6], ol ul[data-v-1cd0b9b6], ul ol[data-v-1cd0b9b6], ul ul[data-v-1cd0b9b6] {
+    margin-bottom: 0
+}
+
+dt[data-v-1cd0b9b6] {
+    font-weight: 500
+}
+
+dd[data-v-1cd0b9b6] {
+    margin-bottom: .5em;
+    margin-left: 0
+}
+
+blockquote[data-v-1cd0b9b6] {
+    margin: 0 0 1em
+}
+
+dfn[data-v-1cd0b9b6] {
+    font-style: italic
+}
+
+b[data-v-1cd0b9b6], strong[data-v-1cd0b9b6] {
+    font-weight: bolder
+}
+
+small[data-v-1cd0b9b6] {
+    font-size: 80%
+}
+
+sub[data-v-1cd0b9b6], sup[data-v-1cd0b9b6] {
+    position: relative;
+    font-size: 75%;
+    line-height: 0;
+    vertical-align: baseline
+}
+
+sub[data-v-1cd0b9b6] {
+    bottom: -.25em
+}
+
+sup[data-v-1cd0b9b6] {
+    top: -.5em
+}
+
+a[data-v-1cd0b9b6] {
+    color: #fa541c;
+    text-decoration: none;
+    background-color: transparent;
+    outline: none;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s;
+    -webkit-text-decoration-skip: objects
+}
+
+    a[data-v-1cd0b9b6]:hover {
+        color: #ff7a45
+    }
+
+    a[data-v-1cd0b9b6]:active {
+        color: #d4380d
+    }
+
+    a[data-v-1cd0b9b6]:active, a[data-v-1cd0b9b6]:hover {
+        text-decoration: none;
+        outline: 0
+    }
+
+a[disabled][data-v-1cd0b9b6] {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed;
+    pointer-events: none
+}
+
+code[data-v-1cd0b9b6], kbd[data-v-1cd0b9b6], pre[data-v-1cd0b9b6], samp[data-v-1cd0b9b6] {
+    font-size: 1em;
+    font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre[data-v-1cd0b9b6] {
+    margin-top: 0;
+    margin-bottom: 1em;
+    overflow: auto
+}
+
+figure[data-v-1cd0b9b6] {
+    margin: 0 0 1em
+}
+
+img[data-v-1cd0b9b6] {
+    vertical-align: middle;
+    border-style: none
+}
+
+svg[data-v-1cd0b9b6]:not(:root) {
+    overflow: hidden
+}
+
+[role=button][data-v-1cd0b9b6], a[data-v-1cd0b9b6], area[data-v-1cd0b9b6], button[data-v-1cd0b9b6], input[data-v-1cd0b9b6]:not([type=range]), label[data-v-1cd0b9b6], select[data-v-1cd0b9b6], summary[data-v-1cd0b9b6], textarea[data-v-1cd0b9b6] {
+    -ms-touch-action: manipulation;
+    touch-action: manipulation
+}
+
+table[data-v-1cd0b9b6] {
+    border-collapse: collapse
+}
+
+caption[data-v-1cd0b9b6] {
+    padding-top: .75em;
+    padding-bottom: .3em;
+    color: rgba(0,0,0,.45);
+    text-align: left;
+    caption-side: bottom
+}
+
+th[data-v-1cd0b9b6] {
+    text-align: inherit
+}
+
+button[data-v-1cd0b9b6], input[data-v-1cd0b9b6], optgroup[data-v-1cd0b9b6], select[data-v-1cd0b9b6], textarea[data-v-1cd0b9b6] {
+    margin: 0;
+    color: inherit;
+    font-size: inherit;
+    font-family: inherit;
+    line-height: inherit
+}
+
+button[data-v-1cd0b9b6], input[data-v-1cd0b9b6] {
+    overflow: visible
+}
+
+button[data-v-1cd0b9b6], select[data-v-1cd0b9b6] {
+    text-transform: none
+}
+
+[type=reset][data-v-1cd0b9b6], [type=submit][data-v-1cd0b9b6], button[data-v-1cd0b9b6], html [type=button][data-v-1cd0b9b6] {
+    -webkit-appearance: button
+}
+
+    [type=button][data-v-1cd0b9b6]::-moz-focus-inner, [type=reset][data-v-1cd0b9b6]::-moz-focus-inner, [type=submit][data-v-1cd0b9b6]::-moz-focus-inner, button[data-v-1cd0b9b6]::-moz-focus-inner {
+        padding: 0;
+        border-style: none
+    }
+
+input[type=checkbox][data-v-1cd0b9b6], input[type=radio][data-v-1cd0b9b6] {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding: 0
+}
+
+input[type=date][data-v-1cd0b9b6], input[type=datetime-local][data-v-1cd0b9b6], input[type=month][data-v-1cd0b9b6], input[type=time][data-v-1cd0b9b6] {
+    -webkit-appearance: listbox
+}
+
+textarea[data-v-1cd0b9b6] {
+    overflow: auto;
+    resize: vertical
+}
+
+fieldset[data-v-1cd0b9b6] {
+    min-width: 0;
+    margin: 0;
+    padding: 0;
+    border: 0
+}
+
+legend[data-v-1cd0b9b6] {
+    display: block;
+    width: 100%;
+    max-width: 100%;
+    margin-bottom: .5em;
+    padding: 0;
+    color: inherit;
+    font-size: 1.5em;
+    line-height: inherit;
+    white-space: normal
+}
+
+progress[data-v-1cd0b9b6] {
+    vertical-align: baseline
+}
+
+[type=number][data-v-1cd0b9b6]::-webkit-inner-spin-button, [type=number][data-v-1cd0b9b6]::-webkit-outer-spin-button {
+    height: auto
+}
+
+[type=search][data-v-1cd0b9b6] {
+    outline-offset: -2px;
+    -webkit-appearance: none
+}
+
+    [type=search][data-v-1cd0b9b6]::-webkit-search-cancel-button, [type=search][data-v-1cd0b9b6]::-webkit-search-decoration {
+        -webkit-appearance: none
+    }
+
+[data-v-1cd0b9b6]::-webkit-file-upload-button {
+    font: inherit;
+    -webkit-appearance: button
+}
+
+output[data-v-1cd0b9b6] {
+    display: inline-block
+}
+
+summary[data-v-1cd0b9b6] {
+    display: list-item
+}
+
+template[data-v-1cd0b9b6] {
+    display: none
+}
+
+[hidden][data-v-1cd0b9b6] {
+    display: none !important
+}
+
+mark[data-v-1cd0b9b6] {
+    padding: .2em;
+    background-color: #feffe6
+}
+
+[data-v-1cd0b9b6]::-moz-selection {
+    color: #fff;
+    background: #fa541c
+}
+
+[data-v-1cd0b9b6]::selection {
+    color: #fff;
+    background: #fa541c
+}
+
+.clearfix[data-v-1cd0b9b6] {
+    zoom: 1
+}
+
+    .clearfix[data-v-1cd0b9b6]:after, .clearfix[data-v-1cd0b9b6]:before {
+        display: table;
+        content: ""
+    }
+
+    .clearfix[data-v-1cd0b9b6]:after {
+        clear: both
+    }
+
+.anticon[data-v-1cd0b9b6] {
+    display: inline-block;
+    color: inherit;
+    font-style: normal;
+    line-height: 0;
+    text-align: center;
+    text-transform: none;
+    vertical-align: -.125em;
+    text-rendering: optimizeLegibility;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale
+}
+
+.anticon > [data-v-1cd0b9b6] {
+    line-height: 1
+}
+
+.anticon svg[data-v-1cd0b9b6] {
+    display: inline-block
+}
+
+.anticon[data-v-1cd0b9b6]:before {
+    display: none
+}
+
+.anticon .anticon-icon[data-v-1cd0b9b6] {
+    display: block
+}
+
+.anticon[tabindex][data-v-1cd0b9b6] {
+    cursor: pointer
+}
+
+.anticon-spin[data-v-1cd0b9b6], .anticon-spin[data-v-1cd0b9b6]:before {
+    display: inline-block;
+    -webkit-animation: loadingCircle-data-v-1cd0b9b6 1s linear infinite;
+    animation: loadingCircle-data-v-1cd0b9b6 1s linear infinite
+}
+
+.fade-appear[data-v-1cd0b9b6], .fade-enter[data-v-1cd0b9b6], .fade-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.fade-appear.fade-appear-active[data-v-1cd0b9b6], .fade-enter.fade-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antFadeIn-data-v-1cd0b9b6;
+    animation-name: antFadeIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.fade-leave.fade-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antFadeOut-data-v-1cd0b9b6;
+    animation-name: antFadeOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.fade-appear[data-v-1cd0b9b6], .fade-enter[data-v-1cd0b9b6] {
+    opacity: 0
+}
+
+.fade-appear[data-v-1cd0b9b6], .fade-enter[data-v-1cd0b9b6], .fade-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: linear;
+    animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn-data-v-1cd0b9b6 {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@keyframes antFadeIn-data-v-1cd0b9b6 {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antFadeOut-data-v-1cd0b9b6 {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes antFadeOut-data-v-1cd0b9b6 {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+.move-up-appear[data-v-1cd0b9b6], .move-up-enter[data-v-1cd0b9b6], .move-up-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-up-appear.move-up-appear-active[data-v-1cd0b9b6], .move-up-enter.move-up-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antMoveUpIn-data-v-1cd0b9b6;
+    animation-name: antMoveUpIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-up-leave.move-up-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antMoveUpOut-data-v-1cd0b9b6;
+    animation-name: antMoveUpOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-up-appear[data-v-1cd0b9b6], .move-up-enter[data-v-1cd0b9b6] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear[data-v-1cd0b9b6], .move-down-enter[data-v-1cd0b9b6], .move-down-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-down-appear.move-down-appear-active[data-v-1cd0b9b6], .move-down-enter.move-down-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antMoveDownIn-data-v-1cd0b9b6;
+    animation-name: antMoveDownIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-down-leave.move-down-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antMoveDownOut-data-v-1cd0b9b6;
+    animation-name: antMoveDownOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-down-appear[data-v-1cd0b9b6], .move-down-enter[data-v-1cd0b9b6] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear[data-v-1cd0b9b6], .move-left-enter[data-v-1cd0b9b6], .move-left-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-left-appear.move-left-appear-active[data-v-1cd0b9b6], .move-left-enter.move-left-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antMoveLeftIn-data-v-1cd0b9b6;
+    animation-name: antMoveLeftIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-left-leave.move-left-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antMoveLeftOut-data-v-1cd0b9b6;
+    animation-name: antMoveLeftOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-left-appear[data-v-1cd0b9b6], .move-left-enter[data-v-1cd0b9b6] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear[data-v-1cd0b9b6], .move-right-enter[data-v-1cd0b9b6], .move-right-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-right-appear.move-right-appear-active[data-v-1cd0b9b6], .move-right-enter.move-right-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antMoveRightIn-data-v-1cd0b9b6;
+    animation-name: antMoveRightIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-right-leave.move-right-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antMoveRightOut-data-v-1cd0b9b6;
+    animation-name: antMoveRightOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-right-appear[data-v-1cd0b9b6], .move-right-enter[data-v-1cd0b9b6] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveDownIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveDownOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveDownOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveLeftIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveLeftIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveLeftOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveLeftOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveRightIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveRightIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveRightOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveRightOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveUpIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveUpIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveUpOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveUpOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes loadingCircle-data-v-1cd0b9b6 {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+@keyframes loadingCircle-data-v-1cd0b9b6 {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+[ant-click-animating-without-extra-node=true][data-v-1cd0b9b6], [ant-click-animating=true][data-v-1cd0b9b6] {
+    position: relative
+}
+
+html[data-v-1cd0b9b6] {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-1cd0b9b6], [ant-click-animating-without-extra-node=true][data-v-1cd0b9b6]:after {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    display: block;
+    border-radius: inherit;
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c;
+    -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    opacity: .2;
+    -webkit-animation: fadeEffect-data-v-1cd0b9b6 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-1cd0b9b6 .4s cubic-bezier(.08,.82,.17,1);
+    animation: fadeEffect-data-v-1cd0b9b6 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-1cd0b9b6 .4s cubic-bezier(.08,.82,.17,1);
+    -webkit-animation-fill-mode: forwards;
+    animation-fill-mode: forwards;
+    content: "";
+    pointer-events: none
+}
+
+@-webkit-keyframes waveEffect-data-v-1cd0b9b6 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@keyframes waveEffect-data-v-1cd0b9b6 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@-webkit-keyframes fadeEffect-data-v-1cd0b9b6 {
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes fadeEffect-data-v-1cd0b9b6 {
+    to {
+        opacity: 0
+    }
+}
+
+.slide-up-appear[data-v-1cd0b9b6], .slide-up-enter[data-v-1cd0b9b6], .slide-up-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-up-appear.slide-up-appear-active[data-v-1cd0b9b6], .slide-up-enter.slide-up-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antSlideUpIn-data-v-1cd0b9b6;
+    animation-name: antSlideUpIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-up-leave.slide-up-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antSlideUpOut-data-v-1cd0b9b6;
+    animation-name: antSlideUpOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-up-appear[data-v-1cd0b9b6], .slide-up-enter[data-v-1cd0b9b6] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear[data-v-1cd0b9b6], .slide-down-enter[data-v-1cd0b9b6], .slide-down-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-down-appear.slide-down-appear-active[data-v-1cd0b9b6], .slide-down-enter.slide-down-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antSlideDownIn-data-v-1cd0b9b6;
+    animation-name: antSlideDownIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-down-leave.slide-down-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antSlideDownOut-data-v-1cd0b9b6;
+    animation-name: antSlideDownOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-down-appear[data-v-1cd0b9b6], .slide-down-enter[data-v-1cd0b9b6] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear[data-v-1cd0b9b6], .slide-left-enter[data-v-1cd0b9b6], .slide-left-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-left-appear.slide-left-appear-active[data-v-1cd0b9b6], .slide-left-enter.slide-left-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antSlideLeftIn-data-v-1cd0b9b6;
+    animation-name: antSlideLeftIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-left-leave.slide-left-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antSlideLeftOut-data-v-1cd0b9b6;
+    animation-name: antSlideLeftOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-left-appear[data-v-1cd0b9b6], .slide-left-enter[data-v-1cd0b9b6] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear[data-v-1cd0b9b6], .slide-right-enter[data-v-1cd0b9b6], .slide-right-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-right-appear.slide-right-appear-active[data-v-1cd0b9b6], .slide-right-enter.slide-right-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antSlideRightIn-data-v-1cd0b9b6;
+    animation-name: antSlideRightIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-right-leave.slide-right-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antSlideRightOut-data-v-1cd0b9b6;
+    animation-name: antSlideRightOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-right-appear[data-v-1cd0b9b6], .slide-right-enter[data-v-1cd0b9b6] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideUpIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideUpOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideUpOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideDownIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideDownIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideDownOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideDownOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideLeftIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideLeftIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideLeftOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideLeftOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideRightIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideRightIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideRightOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideRightOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+.swing-appear[data-v-1cd0b9b6], .swing-enter[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.swing-appear.swing-appear-active[data-v-1cd0b9b6], .swing-enter.swing-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antSwingIn-data-v-1cd0b9b6;
+    animation-name: antSwingIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+@-webkit-keyframes antSwingIn-data-v-1cd0b9b6 {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+@keyframes antSwingIn-data-v-1cd0b9b6 {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+.zoom-appear[data-v-1cd0b9b6], .zoom-enter[data-v-1cd0b9b6], .zoom-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-appear.zoom-appear-active[data-v-1cd0b9b6], .zoom-enter.zoom-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antZoomIn-data-v-1cd0b9b6;
+    animation-name: antZoomIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-leave.zoom-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antZoomOut-data-v-1cd0b9b6;
+    animation-name: antZoomOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-appear[data-v-1cd0b9b6], .zoom-enter[data-v-1cd0b9b6] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear[data-v-1cd0b9b6], .zoom-big-enter[data-v-1cd0b9b6], .zoom-big-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-big-appear.zoom-big-appear-active[data-v-1cd0b9b6], .zoom-big-enter.zoom-big-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antZoomBigIn-data-v-1cd0b9b6;
+    animation-name: antZoomBigIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-big-leave.zoom-big-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antZoomBigOut-data-v-1cd0b9b6;
+    animation-name: antZoomBigOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-big-appear[data-v-1cd0b9b6], .zoom-big-enter[data-v-1cd0b9b6] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear[data-v-1cd0b9b6], .zoom-big-fast-enter[data-v-1cd0b9b6], .zoom-big-fast-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .1s;
+    animation-duration: .1s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-big-fast-appear.zoom-big-fast-appear-active[data-v-1cd0b9b6], .zoom-big-fast-enter.zoom-big-fast-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antZoomBigIn-data-v-1cd0b9b6;
+    animation-name: antZoomBigIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-big-fast-leave.zoom-big-fast-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antZoomBigOut-data-v-1cd0b9b6;
+    animation-name: antZoomBigOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-big-fast-appear[data-v-1cd0b9b6], .zoom-big-fast-enter[data-v-1cd0b9b6] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear[data-v-1cd0b9b6], .zoom-up-enter[data-v-1cd0b9b6], .zoom-up-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-up-appear.zoom-up-appear-active[data-v-1cd0b9b6], .zoom-up-enter.zoom-up-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antZoomUpIn-data-v-1cd0b9b6;
+    animation-name: antZoomUpIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-up-leave.zoom-up-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antZoomUpOut-data-v-1cd0b9b6;
+    animation-name: antZoomUpOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-up-appear[data-v-1cd0b9b6], .zoom-up-enter[data-v-1cd0b9b6] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear[data-v-1cd0b9b6], .zoom-down-enter[data-v-1cd0b9b6], .zoom-down-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-down-appear.zoom-down-appear-active[data-v-1cd0b9b6], .zoom-down-enter.zoom-down-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antZoomDownIn-data-v-1cd0b9b6;
+    animation-name: antZoomDownIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-down-leave.zoom-down-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antZoomDownOut-data-v-1cd0b9b6;
+    animation-name: antZoomDownOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-down-appear[data-v-1cd0b9b6], .zoom-down-enter[data-v-1cd0b9b6] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear[data-v-1cd0b9b6], .zoom-left-enter[data-v-1cd0b9b6], .zoom-left-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-left-appear.zoom-left-appear-active[data-v-1cd0b9b6], .zoom-left-enter.zoom-left-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antZoomLeftIn-data-v-1cd0b9b6;
+    animation-name: antZoomLeftIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-left-leave.zoom-left-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antZoomLeftOut-data-v-1cd0b9b6;
+    animation-name: antZoomLeftOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-left-appear[data-v-1cd0b9b6], .zoom-left-enter[data-v-1cd0b9b6] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear[data-v-1cd0b9b6], .zoom-right-enter[data-v-1cd0b9b6], .zoom-right-leave[data-v-1cd0b9b6] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-right-appear.zoom-right-appear-active[data-v-1cd0b9b6], .zoom-right-enter.zoom-right-enter-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antZoomRightIn-data-v-1cd0b9b6;
+    animation-name: antZoomRightIn-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-right-leave.zoom-right-leave-active[data-v-1cd0b9b6] {
+    -webkit-animation-name: antZoomRightOut-data-v-1cd0b9b6;
+    animation-name: antZoomRightOut-data-v-1cd0b9b6;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-right-appear[data-v-1cd0b9b6], .zoom-right-enter[data-v-1cd0b9b6] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave[data-v-1cd0b9b6] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomBigIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomBigIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomBigOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomBigOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomUpIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@keyframes antZoomUpIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@-webkit-keyframes antZoomUpOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomUpOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomLeftIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@keyframes antZoomLeftIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@-webkit-keyframes antZoomLeftOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomLeftOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomRightIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@keyframes antZoomRightIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@-webkit-keyframes antZoomRightOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomRightOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomDownIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@keyframes antZoomDownIn-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@-webkit-keyframes antZoomDownOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomDownOut-data-v-1cd0b9b6 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+.ant-motion-collapse-legacy[data-v-1cd0b9b6] {
+    overflow: hidden
+}
+
+.ant-motion-collapse-legacy-active[data-v-1cd0b9b6], .ant-motion-collapse[data-v-1cd0b9b6] {
+    -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+    transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse[data-v-1cd0b9b6] {
+    overflow: hidden
+}
+
+.ant-pro-smooth-area[data-v-1cd0b9b6] {
+    position: relative;
+    width: 100%
+}
+
+.ant-pro-smooth-area .chart-wrapper[data-v-1cd0b9b6] {
+    position: absolute;
+    bottom: -28px;
+    width: 100%
+}
+
+.antv-chart-mini[data-v-1ff3f2b1] {
+    position: relative;
+    width: 100%
+}
+
+.antv-chart-mini .chart-wrapper[data-v-1ff3f2b1] {
+    position: absolute;
+    bottom: -28px;
+    width: 100%
+}
+
+.chart-mini-progress[data-v-430bb431] {
+    padding: 5px 0;
+    position: relative;
+    width: 100%
+}
+
+.chart-mini-progress .target[data-v-430bb431] {
+    position: absolute;
+    top: 0;
+    bottom: 0
+}
+
+.chart-mini-progress .target span[data-v-430bb431] {
+    border-radius: 100px;
+    position: absolute;
+    top: 0;
+    left: 0;
+    height: 4px;
+    width: 2px
+}
+
+    .chart-mini-progress .target span[data-v-430bb431]:last-child {
+        top: auto;
+        bottom: 0
+    }
+
+.chart-mini-progress .progress-wrapper[data-v-430bb431] {
+    background-color: #f5f5f5;
+    position: relative
+}
+
+.chart-mini-progress .progress-wrapper .progress[data-v-430bb431] {
+    -webkit-transition: all .4s cubic-bezier(.08,.82,.17,1) 0s;
+    transition: all .4s cubic-bezier(.08,.82,.17,1) 0s;
+    border-radius: 1px 0 0 1px;
+    background-color: #1890ff;
+    width: 0;
+    height: 100%
+}
+
+.rank[data-v-e1fcea82] {
+    padding: 0 32px 32px 72px
+}
+
+.rank .list[data-v-e1fcea82] {
+    margin: 25px 0 0;
+    padding: 0;
+    list-style: none
+}
+
+.rank .list li[data-v-e1fcea82] {
+    margin-top: 16px
+}
+
+.rank .list li span[data-v-e1fcea82] {
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    line-height: 22px
+}
+
+    .rank .list li span[data-v-e1fcea82]:first-child {
+        background-color: #f5f5f5;
+        border-radius: 20px;
+        display: inline-block;
+        font-size: 12px;
+        font-weight: 600;
+        margin-right: 24px;
+        height: 20px;
+        line-height: 20px;
+        width: 20px;
+        text-align: center
+    }
+
+.rank .list li span.active[data-v-e1fcea82] {
+    background-color: #314659;
+    color: #fff
+}
+
+.rank .list li span[data-v-e1fcea82]:last-child {
+    float: right
+}
+
+.mobile .rank[data-v-e1fcea82] {
+    padding: 0 32px 32px 32px
+}
+
+.ant-pro-avatar-list {
+    display: inline-block
+}
+
+    .ant-pro-avatar-list ul {
+        list-style: none;
+        display: inline-block;
+        padding: 0;
+        margin: 0 0 0 8px;
+        font-size: 0
+    }
+
+.ant-pro-avatar-list-item {
+    display: inline-block;
+    font-size: 14px;
+    margin-left: -8px;
+    width: 32px;
+    height: 32px
+}
+
+    .ant-pro-avatar-list-item :global .ant-avatar {
+        border: 1px solid #fff;
+        cursor: pointer
+    }
+
+    .ant-pro-avatar-list-item.large {
+        width: 40px;
+        height: 40px
+    }
+
+    .ant-pro-avatar-list-item.small {
+        width: 24px;
+        height: 24px
+    }
+
+    .ant-pro-avatar-list-item.mini {
+        width: 20px;
+        height: 20px
+    }
+
+        .ant-pro-avatar-list-item.mini :global .ant-avatar {
+            width: 20px;
+            height: 20px;
+            line-height: 20px
+        }
+
+            .ant-pro-avatar-list-item.mini :global .ant-avatar .ant-avatar-string {
+                font-size: 12px;
+                line-height: 18px
+            }
+
+.ant-pro-footer-toolbar {
+    position: fixed;
+    width: 100%;
+    bottom: 0;
+    right: 0;
+    height: 56px;
+    line-height: 56px;
+    -webkit-box-shadow: 0 -1px 2px rgba(0,0,0,.03);
+    box-shadow: 0 -1px 2px rgba(0,0,0,.03);
+    background: #fff;
+    border-top: 1px solid #e8e8e8;
+    padding: 0 24px;
+    z-index: 9
+}
+
+    .ant-pro-footer-toolbar:after {
+        content: "";
+        display: block;
+        clear: both
+    }
+
+body[data-v-a16f84d8], html[data-v-a16f84d8] {
+    width: 100%;
+    height: 100%
+}
+
+input[data-v-a16f84d8]::-ms-clear, input[data-v-a16f84d8]::-ms-reveal {
+    display: none
+}
+
+[data-v-a16f84d8], [data-v-a16f84d8]:after, [data-v-a16f84d8]:before {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+html[data-v-a16f84d8] {
+    font-family: sans-serif;
+    line-height: 1.15;
+    -webkit-text-size-adjust: 100%;
+    -ms-text-size-adjust: 100%;
+    -ms-overflow-style: scrollbar;
+    -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+article[data-v-a16f84d8], aside[data-v-a16f84d8], dialog[data-v-a16f84d8], figcaption[data-v-a16f84d8], figure[data-v-a16f84d8], footer[data-v-a16f84d8], header[data-v-a16f84d8], hgroup[data-v-a16f84d8], main[data-v-a16f84d8], nav[data-v-a16f84d8], section[data-v-a16f84d8] {
+    display: block
+}
+
+body[data-v-a16f84d8] {
+    margin: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    background-color: #fff;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+[tabindex="-1"][data-v-a16f84d8]:focus {
+    outline: none !important
+}
+
+hr[data-v-a16f84d8] {
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+    overflow: visible
+}
+
+h1[data-v-a16f84d8], h2[data-v-a16f84d8], h3[data-v-a16f84d8], h4[data-v-a16f84d8], h5[data-v-a16f84d8], h6[data-v-a16f84d8] {
+    margin-top: 0;
+    margin-bottom: .5em;
+    color: rgba(0,0,0,.85);
+    font-weight: 500
+}
+
+p[data-v-a16f84d8] {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+abbr[data-original-title][data-v-a16f84d8], abbr[title][data-v-a16f84d8] {
+    text-decoration: underline;
+    -webkit-text-decoration: underline dotted;
+    text-decoration: underline dotted;
+    border-bottom: 0;
+    cursor: help
+}
+
+address[data-v-a16f84d8] {
+    margin-bottom: 1em;
+    font-style: normal;
+    line-height: inherit
+}
+
+input[type=number][data-v-a16f84d8], input[type=password][data-v-a16f84d8], input[type=text][data-v-a16f84d8], textarea[data-v-a16f84d8] {
+    -webkit-appearance: none
+}
+
+dl[data-v-a16f84d8], ol[data-v-a16f84d8], ul[data-v-a16f84d8] {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+ol ol[data-v-a16f84d8], ol ul[data-v-a16f84d8], ul ol[data-v-a16f84d8], ul ul[data-v-a16f84d8] {
+    margin-bottom: 0
+}
+
+dt[data-v-a16f84d8] {
+    font-weight: 500
+}
+
+dd[data-v-a16f84d8] {
+    margin-bottom: .5em;
+    margin-left: 0
+}
+
+blockquote[data-v-a16f84d8] {
+    margin: 0 0 1em
+}
+
+dfn[data-v-a16f84d8] {
+    font-style: italic
+}
+
+b[data-v-a16f84d8], strong[data-v-a16f84d8] {
+    font-weight: bolder
+}
+
+small[data-v-a16f84d8] {
+    font-size: 80%
+}
+
+sub[data-v-a16f84d8], sup[data-v-a16f84d8] {
+    position: relative;
+    font-size: 75%;
+    line-height: 0;
+    vertical-align: baseline
+}
+
+sub[data-v-a16f84d8] {
+    bottom: -.25em
+}
+
+sup[data-v-a16f84d8] {
+    top: -.5em
+}
+
+a[data-v-a16f84d8] {
+    color: #fa541c;
+    text-decoration: none;
+    background-color: transparent;
+    outline: none;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s;
+    -webkit-text-decoration-skip: objects
+}
+
+    a[data-v-a16f84d8]:hover {
+        color: #ff7a45
+    }
+
+    a[data-v-a16f84d8]:active {
+        color: #d4380d
+    }
+
+    a[data-v-a16f84d8]:active, a[data-v-a16f84d8]:hover {
+        text-decoration: none;
+        outline: 0
+    }
+
+a[disabled][data-v-a16f84d8] {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed;
+    pointer-events: none
+}
+
+code[data-v-a16f84d8], kbd[data-v-a16f84d8], pre[data-v-a16f84d8], samp[data-v-a16f84d8] {
+    font-size: 1em;
+    font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre[data-v-a16f84d8] {
+    margin-top: 0;
+    margin-bottom: 1em;
+    overflow: auto
+}
+
+figure[data-v-a16f84d8] {
+    margin: 0 0 1em
+}
+
+img[data-v-a16f84d8] {
+    vertical-align: middle;
+    border-style: none
+}
+
+svg[data-v-a16f84d8]:not(:root) {
+    overflow: hidden
+}
+
+[role=button][data-v-a16f84d8], a[data-v-a16f84d8], area[data-v-a16f84d8], button[data-v-a16f84d8], input[data-v-a16f84d8]:not([type=range]), label[data-v-a16f84d8], select[data-v-a16f84d8], summary[data-v-a16f84d8], textarea[data-v-a16f84d8] {
+    -ms-touch-action: manipulation;
+    touch-action: manipulation
+}
+
+table[data-v-a16f84d8] {
+    border-collapse: collapse
+}
+
+caption[data-v-a16f84d8] {
+    padding-top: .75em;
+    padding-bottom: .3em;
+    color: rgba(0,0,0,.45);
+    text-align: left;
+    caption-side: bottom
+}
+
+th[data-v-a16f84d8] {
+    text-align: inherit
+}
+
+button[data-v-a16f84d8], input[data-v-a16f84d8], optgroup[data-v-a16f84d8], select[data-v-a16f84d8], textarea[data-v-a16f84d8] {
+    margin: 0;
+    color: inherit;
+    font-size: inherit;
+    font-family: inherit;
+    line-height: inherit
+}
+
+button[data-v-a16f84d8], input[data-v-a16f84d8] {
+    overflow: visible
+}
+
+button[data-v-a16f84d8], select[data-v-a16f84d8] {
+    text-transform: none
+}
+
+[type=reset][data-v-a16f84d8], [type=submit][data-v-a16f84d8], button[data-v-a16f84d8], html [type=button][data-v-a16f84d8] {
+    -webkit-appearance: button
+}
+
+    [type=button][data-v-a16f84d8]::-moz-focus-inner, [type=reset][data-v-a16f84d8]::-moz-focus-inner, [type=submit][data-v-a16f84d8]::-moz-focus-inner, button[data-v-a16f84d8]::-moz-focus-inner {
+        padding: 0;
+        border-style: none
+    }
+
+input[type=checkbox][data-v-a16f84d8], input[type=radio][data-v-a16f84d8] {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding: 0
+}
+
+input[type=date][data-v-a16f84d8], input[type=datetime-local][data-v-a16f84d8], input[type=month][data-v-a16f84d8], input[type=time][data-v-a16f84d8] {
+    -webkit-appearance: listbox
+}
+
+textarea[data-v-a16f84d8] {
+    overflow: auto;
+    resize: vertical
+}
+
+fieldset[data-v-a16f84d8] {
+    min-width: 0;
+    margin: 0;
+    padding: 0;
+    border: 0
+}
+
+legend[data-v-a16f84d8] {
+    display: block;
+    width: 100%;
+    max-width: 100%;
+    margin-bottom: .5em;
+    padding: 0;
+    color: inherit;
+    font-size: 1.5em;
+    line-height: inherit;
+    white-space: normal
+}
+
+progress[data-v-a16f84d8] {
+    vertical-align: baseline
+}
+
+[type=number][data-v-a16f84d8]::-webkit-inner-spin-button, [type=number][data-v-a16f84d8]::-webkit-outer-spin-button {
+    height: auto
+}
+
+[type=search][data-v-a16f84d8] {
+    outline-offset: -2px;
+    -webkit-appearance: none
+}
+
+    [type=search][data-v-a16f84d8]::-webkit-search-cancel-button, [type=search][data-v-a16f84d8]::-webkit-search-decoration {
+        -webkit-appearance: none
+    }
+
+[data-v-a16f84d8]::-webkit-file-upload-button {
+    font: inherit;
+    -webkit-appearance: button
+}
+
+output[data-v-a16f84d8] {
+    display: inline-block
+}
+
+summary[data-v-a16f84d8] {
+    display: list-item
+}
+
+template[data-v-a16f84d8] {
+    display: none
+}
+
+[hidden][data-v-a16f84d8] {
+    display: none !important
+}
+
+mark[data-v-a16f84d8] {
+    padding: .2em;
+    background-color: #feffe6
+}
+
+[data-v-a16f84d8]::-moz-selection {
+    color: #fff;
+    background: #fa541c
+}
+
+[data-v-a16f84d8]::selection {
+    color: #fff;
+    background: #fa541c
+}
+
+.clearfix[data-v-a16f84d8] {
+    zoom: 1
+}
+
+    .clearfix[data-v-a16f84d8]:after, .clearfix[data-v-a16f84d8]:before {
+        display: table;
+        content: ""
+    }
+
+    .clearfix[data-v-a16f84d8]:after {
+        clear: both
+    }
+
+.anticon[data-v-a16f84d8] {
+    display: inline-block;
+    color: inherit;
+    font-style: normal;
+    line-height: 0;
+    text-align: center;
+    text-transform: none;
+    vertical-align: -.125em;
+    text-rendering: optimizeLegibility;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale
+}
+
+.anticon > [data-v-a16f84d8] {
+    line-height: 1
+}
+
+.anticon svg[data-v-a16f84d8] {
+    display: inline-block
+}
+
+.anticon[data-v-a16f84d8]:before {
+    display: none
+}
+
+.anticon .anticon-icon[data-v-a16f84d8] {
+    display: block
+}
+
+.anticon[tabindex][data-v-a16f84d8] {
+    cursor: pointer
+}
+
+.anticon-spin[data-v-a16f84d8], .anticon-spin[data-v-a16f84d8]:before {
+    display: inline-block;
+    -webkit-animation: loadingCircle-data-v-a16f84d8 1s linear infinite;
+    animation: loadingCircle-data-v-a16f84d8 1s linear infinite
+}
+
+.fade-appear[data-v-a16f84d8], .fade-enter[data-v-a16f84d8], .fade-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.fade-appear.fade-appear-active[data-v-a16f84d8], .fade-enter.fade-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antFadeIn-data-v-a16f84d8;
+    animation-name: antFadeIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.fade-leave.fade-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antFadeOut-data-v-a16f84d8;
+    animation-name: antFadeOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.fade-appear[data-v-a16f84d8], .fade-enter[data-v-a16f84d8] {
+    opacity: 0
+}
+
+.fade-appear[data-v-a16f84d8], .fade-enter[data-v-a16f84d8], .fade-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: linear;
+    animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn-data-v-a16f84d8 {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@keyframes antFadeIn-data-v-a16f84d8 {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antFadeOut-data-v-a16f84d8 {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes antFadeOut-data-v-a16f84d8 {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+.move-up-appear[data-v-a16f84d8], .move-up-enter[data-v-a16f84d8], .move-up-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-up-appear.move-up-appear-active[data-v-a16f84d8], .move-up-enter.move-up-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antMoveUpIn-data-v-a16f84d8;
+    animation-name: antMoveUpIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-up-leave.move-up-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antMoveUpOut-data-v-a16f84d8;
+    animation-name: antMoveUpOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-up-appear[data-v-a16f84d8], .move-up-enter[data-v-a16f84d8] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear[data-v-a16f84d8], .move-down-enter[data-v-a16f84d8], .move-down-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-down-appear.move-down-appear-active[data-v-a16f84d8], .move-down-enter.move-down-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antMoveDownIn-data-v-a16f84d8;
+    animation-name: antMoveDownIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-down-leave.move-down-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antMoveDownOut-data-v-a16f84d8;
+    animation-name: antMoveDownOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-down-appear[data-v-a16f84d8], .move-down-enter[data-v-a16f84d8] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear[data-v-a16f84d8], .move-left-enter[data-v-a16f84d8], .move-left-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-left-appear.move-left-appear-active[data-v-a16f84d8], .move-left-enter.move-left-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antMoveLeftIn-data-v-a16f84d8;
+    animation-name: antMoveLeftIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-left-leave.move-left-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antMoveLeftOut-data-v-a16f84d8;
+    animation-name: antMoveLeftOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-left-appear[data-v-a16f84d8], .move-left-enter[data-v-a16f84d8] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear[data-v-a16f84d8], .move-right-enter[data-v-a16f84d8], .move-right-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-right-appear.move-right-appear-active[data-v-a16f84d8], .move-right-enter.move-right-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antMoveRightIn-data-v-a16f84d8;
+    animation-name: antMoveRightIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-right-leave.move-right-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antMoveRightOut-data-v-a16f84d8;
+    animation-name: antMoveRightOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-right-appear[data-v-a16f84d8], .move-right-enter[data-v-a16f84d8] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveDownIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveDownOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveDownOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveLeftIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveLeftIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveLeftOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveLeftOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveRightIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveRightIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveRightOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveRightOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveUpIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveUpIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveUpOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveUpOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes loadingCircle-data-v-a16f84d8 {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+@keyframes loadingCircle-data-v-a16f84d8 {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+[ant-click-animating-without-extra-node=true][data-v-a16f84d8], [ant-click-animating=true][data-v-a16f84d8] {
+    position: relative
+}
+
+html[data-v-a16f84d8] {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-a16f84d8], [ant-click-animating-without-extra-node=true][data-v-a16f84d8]:after {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    display: block;
+    border-radius: inherit;
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c;
+    -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    opacity: .2;
+    -webkit-animation: fadeEffect-data-v-a16f84d8 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-a16f84d8 .4s cubic-bezier(.08,.82,.17,1);
+    animation: fadeEffect-data-v-a16f84d8 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-a16f84d8 .4s cubic-bezier(.08,.82,.17,1);
+    -webkit-animation-fill-mode: forwards;
+    animation-fill-mode: forwards;
+    content: "";
+    pointer-events: none
+}
+
+@-webkit-keyframes waveEffect-data-v-a16f84d8 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@keyframes waveEffect-data-v-a16f84d8 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@-webkit-keyframes fadeEffect-data-v-a16f84d8 {
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes fadeEffect-data-v-a16f84d8 {
+    to {
+        opacity: 0
+    }
+}
+
+.slide-up-appear[data-v-a16f84d8], .slide-up-enter[data-v-a16f84d8], .slide-up-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-up-appear.slide-up-appear-active[data-v-a16f84d8], .slide-up-enter.slide-up-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antSlideUpIn-data-v-a16f84d8;
+    animation-name: antSlideUpIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-up-leave.slide-up-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antSlideUpOut-data-v-a16f84d8;
+    animation-name: antSlideUpOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-up-appear[data-v-a16f84d8], .slide-up-enter[data-v-a16f84d8] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear[data-v-a16f84d8], .slide-down-enter[data-v-a16f84d8], .slide-down-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-down-appear.slide-down-appear-active[data-v-a16f84d8], .slide-down-enter.slide-down-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antSlideDownIn-data-v-a16f84d8;
+    animation-name: antSlideDownIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-down-leave.slide-down-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antSlideDownOut-data-v-a16f84d8;
+    animation-name: antSlideDownOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-down-appear[data-v-a16f84d8], .slide-down-enter[data-v-a16f84d8] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear[data-v-a16f84d8], .slide-left-enter[data-v-a16f84d8], .slide-left-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-left-appear.slide-left-appear-active[data-v-a16f84d8], .slide-left-enter.slide-left-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antSlideLeftIn-data-v-a16f84d8;
+    animation-name: antSlideLeftIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-left-leave.slide-left-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antSlideLeftOut-data-v-a16f84d8;
+    animation-name: antSlideLeftOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-left-appear[data-v-a16f84d8], .slide-left-enter[data-v-a16f84d8] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear[data-v-a16f84d8], .slide-right-enter[data-v-a16f84d8], .slide-right-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-right-appear.slide-right-appear-active[data-v-a16f84d8], .slide-right-enter.slide-right-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antSlideRightIn-data-v-a16f84d8;
+    animation-name: antSlideRightIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-right-leave.slide-right-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antSlideRightOut-data-v-a16f84d8;
+    animation-name: antSlideRightOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-right-appear[data-v-a16f84d8], .slide-right-enter[data-v-a16f84d8] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideUpIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideUpOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideUpOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideDownIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideDownIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideDownOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideDownOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideLeftIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideLeftIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideLeftOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideLeftOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideRightIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideRightIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideRightOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideRightOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+.swing-appear[data-v-a16f84d8], .swing-enter[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.swing-appear.swing-appear-active[data-v-a16f84d8], .swing-enter.swing-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antSwingIn-data-v-a16f84d8;
+    animation-name: antSwingIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+@-webkit-keyframes antSwingIn-data-v-a16f84d8 {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+@keyframes antSwingIn-data-v-a16f84d8 {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+.zoom-appear[data-v-a16f84d8], .zoom-enter[data-v-a16f84d8], .zoom-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-appear.zoom-appear-active[data-v-a16f84d8], .zoom-enter.zoom-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antZoomIn-data-v-a16f84d8;
+    animation-name: antZoomIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-leave.zoom-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antZoomOut-data-v-a16f84d8;
+    animation-name: antZoomOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-appear[data-v-a16f84d8], .zoom-enter[data-v-a16f84d8] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear[data-v-a16f84d8], .zoom-big-enter[data-v-a16f84d8], .zoom-big-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-big-appear.zoom-big-appear-active[data-v-a16f84d8], .zoom-big-enter.zoom-big-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antZoomBigIn-data-v-a16f84d8;
+    animation-name: antZoomBigIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-big-leave.zoom-big-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antZoomBigOut-data-v-a16f84d8;
+    animation-name: antZoomBigOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-big-appear[data-v-a16f84d8], .zoom-big-enter[data-v-a16f84d8] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear[data-v-a16f84d8], .zoom-big-fast-enter[data-v-a16f84d8], .zoom-big-fast-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .1s;
+    animation-duration: .1s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-big-fast-appear.zoom-big-fast-appear-active[data-v-a16f84d8], .zoom-big-fast-enter.zoom-big-fast-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antZoomBigIn-data-v-a16f84d8;
+    animation-name: antZoomBigIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-big-fast-leave.zoom-big-fast-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antZoomBigOut-data-v-a16f84d8;
+    animation-name: antZoomBigOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-big-fast-appear[data-v-a16f84d8], .zoom-big-fast-enter[data-v-a16f84d8] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear[data-v-a16f84d8], .zoom-up-enter[data-v-a16f84d8], .zoom-up-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-up-appear.zoom-up-appear-active[data-v-a16f84d8], .zoom-up-enter.zoom-up-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antZoomUpIn-data-v-a16f84d8;
+    animation-name: antZoomUpIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-up-leave.zoom-up-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antZoomUpOut-data-v-a16f84d8;
+    animation-name: antZoomUpOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-up-appear[data-v-a16f84d8], .zoom-up-enter[data-v-a16f84d8] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear[data-v-a16f84d8], .zoom-down-enter[data-v-a16f84d8], .zoom-down-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-down-appear.zoom-down-appear-active[data-v-a16f84d8], .zoom-down-enter.zoom-down-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antZoomDownIn-data-v-a16f84d8;
+    animation-name: antZoomDownIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-down-leave.zoom-down-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antZoomDownOut-data-v-a16f84d8;
+    animation-name: antZoomDownOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-down-appear[data-v-a16f84d8], .zoom-down-enter[data-v-a16f84d8] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear[data-v-a16f84d8], .zoom-left-enter[data-v-a16f84d8], .zoom-left-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-left-appear.zoom-left-appear-active[data-v-a16f84d8], .zoom-left-enter.zoom-left-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antZoomLeftIn-data-v-a16f84d8;
+    animation-name: antZoomLeftIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-left-leave.zoom-left-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antZoomLeftOut-data-v-a16f84d8;
+    animation-name: antZoomLeftOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-left-appear[data-v-a16f84d8], .zoom-left-enter[data-v-a16f84d8] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear[data-v-a16f84d8], .zoom-right-enter[data-v-a16f84d8], .zoom-right-leave[data-v-a16f84d8] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-right-appear.zoom-right-appear-active[data-v-a16f84d8], .zoom-right-enter.zoom-right-enter-active[data-v-a16f84d8] {
+    -webkit-animation-name: antZoomRightIn-data-v-a16f84d8;
+    animation-name: antZoomRightIn-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-right-leave.zoom-right-leave-active[data-v-a16f84d8] {
+    -webkit-animation-name: antZoomRightOut-data-v-a16f84d8;
+    animation-name: antZoomRightOut-data-v-a16f84d8;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-right-appear[data-v-a16f84d8], .zoom-right-enter[data-v-a16f84d8] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave[data-v-a16f84d8] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomBigIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomBigIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomBigOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomBigOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomUpIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@keyframes antZoomUpIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@-webkit-keyframes antZoomUpOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomUpOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomLeftIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@keyframes antZoomLeftIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@-webkit-keyframes antZoomLeftOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomLeftOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomRightIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@keyframes antZoomRightIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@-webkit-keyframes antZoomRightOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomRightOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomDownIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@keyframes antZoomDownIn-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@-webkit-keyframes antZoomDownOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomDownOut-data-v-a16f84d8 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+.ant-motion-collapse-legacy[data-v-a16f84d8] {
+    overflow: hidden
+}
+
+.ant-motion-collapse-legacy-active[data-v-a16f84d8], .ant-motion-collapse[data-v-a16f84d8] {
+    -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+    transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse[data-v-a16f84d8] {
+    overflow: hidden
+}
+
+.ant-pro-number-info .ant-pro-number-info-subtitle[data-v-a16f84d8] {
+    color: rgba(0,0,0,.45);
+    font-size: 14px;
+    height: 22px;
+    line-height: 22px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    word-break: break-all;
+    white-space: nowrap
+}
+
+.ant-pro-number-info .number-info-value[data-v-a16f84d8] {
+    margin-top: 4px;
+    font-size: 0;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    word-break: break-all;
+    white-space: nowrap
+}
+
+.ant-pro-number-info .number-info-value > span[data-v-a16f84d8] {
+    color: rgba(0,0,0,.85);
+    display: inline-block;
+    line-height: 32px;
+    height: 32px;
+    font-size: 24px;
+    margin-right: 32px
+}
+
+.ant-pro-number-info .number-info-value .sub-total[data-v-a16f84d8] {
+    color: rgba(0,0,0,.45);
+    font-size: 16px;
+    vertical-align: top;
+    margin-right: 0
+}
+
+.ant-pro-number-info .number-info-value .sub-total i[data-v-a16f84d8] {
+    font-size: 12px;
+    -webkit-transform: scale(.82);
+    transform: scale(.82);
+    margin-left: 4px
+}
+
+.ant-pro-number-info .number-info-value .sub-total :global .anticon-caret-up[data-v-a16f84d8] {
+    color: #f5222d
+}
+
+.ant-pro-number-info .number-info-value .sub-total :global .anticon-caret-down[data-v-a16f84d8] {
+    color: #52c41a
+}
+
+.description-list .title[data-v-745c64a4] {
+    color: rgba(0,0,0,.85);
+    font-size: 14px;
+    font-weight: 500;
+    margin-bottom: 16px
+}
+
+.description-list[data-v-745c64a4] .term {
+    color: rgba(0,0,0,.85);
+    display: table-cell;
+    line-height: 20px;
+    margin-right: 8px;
+    padding-bottom: 16px;
+    white-space: nowrap
+}
+
+    .description-list[data-v-745c64a4] .term:not(:empty):after {
+        content: ":";
+        margin: 0 8px 0 2px;
+        position: relative;
+        top: -.5px
+    }
+
+.description-list[data-v-745c64a4] .content {
+    color: rgba(0,0,0,.65);
+    display: table-cell;
+    min-height: 22px;
+    line-height: 22px;
+    padding-bottom: 16px;
+    width: 100%
+}
+
+    .description-list[data-v-745c64a4] .content:empty {
+        content: " ";
+        height: 38px;
+        padding-bottom: 16px
+    }
+
+.description-list.small .title[data-v-745c64a4] {
+    font-size: 14px;
+    color: rgba(0,0,0,.65);
+    font-weight: 400;
+    margin-bottom: 12px
+}
+
+.description-list.small .content[data-v-745c64a4], .description-list.small[data-v-745c64a4] .term {
+    padding-bottom: 8px
+}
+
+.description-list.large .content[data-v-745c64a4], .description-list.large[data-v-745c64a4] .term {
+    padding-bottom: 16px
+}
+
+.description-list.large .title[data-v-745c64a4] {
+    font-size: 16px
+}
+
+.description-list.vertical .term[data-v-745c64a4] {
+    padding-bottom: 8px
+}
+
+.description-list.vertical .content[data-v-745c64a4], .description-list.vertical[data-v-745c64a4] .term {
+    display: block
+}
+
+body[data-v-9f28f096], html[data-v-9f28f096] {
+    width: 100%;
+    height: 100%
+}
+
+input[data-v-9f28f096]::-ms-clear, input[data-v-9f28f096]::-ms-reveal {
+    display: none
+}
+
+[data-v-9f28f096], [data-v-9f28f096]:after, [data-v-9f28f096]:before {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+html[data-v-9f28f096] {
+    font-family: sans-serif;
+    line-height: 1.15;
+    -webkit-text-size-adjust: 100%;
+    -ms-text-size-adjust: 100%;
+    -ms-overflow-style: scrollbar;
+    -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+article[data-v-9f28f096], aside[data-v-9f28f096], dialog[data-v-9f28f096], figcaption[data-v-9f28f096], figure[data-v-9f28f096], footer[data-v-9f28f096], header[data-v-9f28f096], hgroup[data-v-9f28f096], main[data-v-9f28f096], nav[data-v-9f28f096], section[data-v-9f28f096] {
+    display: block
+}
+
+body[data-v-9f28f096] {
+    margin: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    background-color: #fff;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+[tabindex="-1"][data-v-9f28f096]:focus {
+    outline: none !important
+}
+
+hr[data-v-9f28f096] {
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+    overflow: visible
+}
+
+h1[data-v-9f28f096], h2[data-v-9f28f096], h3[data-v-9f28f096], h4[data-v-9f28f096], h5[data-v-9f28f096], h6[data-v-9f28f096] {
+    margin-top: 0;
+    margin-bottom: .5em;
+    color: rgba(0,0,0,.85);
+    font-weight: 500
+}
+
+p[data-v-9f28f096] {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+abbr[data-original-title][data-v-9f28f096], abbr[title][data-v-9f28f096] {
+    text-decoration: underline;
+    -webkit-text-decoration: underline dotted;
+    text-decoration: underline dotted;
+    border-bottom: 0;
+    cursor: help
+}
+
+address[data-v-9f28f096] {
+    margin-bottom: 1em;
+    font-style: normal;
+    line-height: inherit
+}
+
+input[type=number][data-v-9f28f096], input[type=password][data-v-9f28f096], input[type=text][data-v-9f28f096], textarea[data-v-9f28f096] {
+    -webkit-appearance: none
+}
+
+dl[data-v-9f28f096], ol[data-v-9f28f096], ul[data-v-9f28f096] {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+ol ol[data-v-9f28f096], ol ul[data-v-9f28f096], ul ol[data-v-9f28f096], ul ul[data-v-9f28f096] {
+    margin-bottom: 0
+}
+
+dt[data-v-9f28f096] {
+    font-weight: 500
+}
+
+dd[data-v-9f28f096] {
+    margin-bottom: .5em;
+    margin-left: 0
+}
+
+blockquote[data-v-9f28f096] {
+    margin: 0 0 1em
+}
+
+dfn[data-v-9f28f096] {
+    font-style: italic
+}
+
+b[data-v-9f28f096], strong[data-v-9f28f096] {
+    font-weight: bolder
+}
+
+small[data-v-9f28f096] {
+    font-size: 80%
+}
+
+sub[data-v-9f28f096], sup[data-v-9f28f096] {
+    position: relative;
+    font-size: 75%;
+    line-height: 0;
+    vertical-align: baseline
+}
+
+sub[data-v-9f28f096] {
+    bottom: -.25em
+}
+
+sup[data-v-9f28f096] {
+    top: -.5em
+}
+
+a[data-v-9f28f096] {
+    color: #fa541c;
+    text-decoration: none;
+    background-color: transparent;
+    outline: none;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s;
+    -webkit-text-decoration-skip: objects
+}
+
+    a[data-v-9f28f096]:hover {
+        color: #ff7a45
+    }
+
+    a[data-v-9f28f096]:active {
+        color: #d4380d
+    }
+
+    a[data-v-9f28f096]:active, a[data-v-9f28f096]:hover {
+        text-decoration: none;
+        outline: 0
+    }
+
+a[disabled][data-v-9f28f096] {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed;
+    pointer-events: none
+}
+
+code[data-v-9f28f096], kbd[data-v-9f28f096], pre[data-v-9f28f096], samp[data-v-9f28f096] {
+    font-size: 1em;
+    font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre[data-v-9f28f096] {
+    margin-top: 0;
+    margin-bottom: 1em;
+    overflow: auto
+}
+
+figure[data-v-9f28f096] {
+    margin: 0 0 1em
+}
+
+img[data-v-9f28f096] {
+    vertical-align: middle;
+    border-style: none
+}
+
+svg[data-v-9f28f096]:not(:root) {
+    overflow: hidden
+}
+
+[role=button][data-v-9f28f096], a[data-v-9f28f096], area[data-v-9f28f096], button[data-v-9f28f096], input[data-v-9f28f096]:not([type=range]), label[data-v-9f28f096], select[data-v-9f28f096], summary[data-v-9f28f096], textarea[data-v-9f28f096] {
+    -ms-touch-action: manipulation;
+    touch-action: manipulation
+}
+
+table[data-v-9f28f096] {
+    border-collapse: collapse
+}
+
+caption[data-v-9f28f096] {
+    padding-top: .75em;
+    padding-bottom: .3em;
+    color: rgba(0,0,0,.45);
+    text-align: left;
+    caption-side: bottom
+}
+
+th[data-v-9f28f096] {
+    text-align: inherit
+}
+
+button[data-v-9f28f096], input[data-v-9f28f096], optgroup[data-v-9f28f096], select[data-v-9f28f096], textarea[data-v-9f28f096] {
+    margin: 0;
+    color: inherit;
+    font-size: inherit;
+    font-family: inherit;
+    line-height: inherit
+}
+
+button[data-v-9f28f096], input[data-v-9f28f096] {
+    overflow: visible
+}
+
+button[data-v-9f28f096], select[data-v-9f28f096] {
+    text-transform: none
+}
+
+[type=reset][data-v-9f28f096], [type=submit][data-v-9f28f096], button[data-v-9f28f096], html [type=button][data-v-9f28f096] {
+    -webkit-appearance: button
+}
+
+    [type=button][data-v-9f28f096]::-moz-focus-inner, [type=reset][data-v-9f28f096]::-moz-focus-inner, [type=submit][data-v-9f28f096]::-moz-focus-inner, button[data-v-9f28f096]::-moz-focus-inner {
+        padding: 0;
+        border-style: none
+    }
+
+input[type=checkbox][data-v-9f28f096], input[type=radio][data-v-9f28f096] {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding: 0
+}
+
+input[type=date][data-v-9f28f096], input[type=datetime-local][data-v-9f28f096], input[type=month][data-v-9f28f096], input[type=time][data-v-9f28f096] {
+    -webkit-appearance: listbox
+}
+
+textarea[data-v-9f28f096] {
+    overflow: auto;
+    resize: vertical
+}
+
+fieldset[data-v-9f28f096] {
+    min-width: 0;
+    margin: 0;
+    padding: 0;
+    border: 0
+}
+
+legend[data-v-9f28f096] {
+    display: block;
+    width: 100%;
+    max-width: 100%;
+    margin-bottom: .5em;
+    padding: 0;
+    color: inherit;
+    font-size: 1.5em;
+    line-height: inherit;
+    white-space: normal
+}
+
+progress[data-v-9f28f096] {
+    vertical-align: baseline
+}
+
+[type=number][data-v-9f28f096]::-webkit-inner-spin-button, [type=number][data-v-9f28f096]::-webkit-outer-spin-button {
+    height: auto
+}
+
+[type=search][data-v-9f28f096] {
+    outline-offset: -2px;
+    -webkit-appearance: none
+}
+
+    [type=search][data-v-9f28f096]::-webkit-search-cancel-button, [type=search][data-v-9f28f096]::-webkit-search-decoration {
+        -webkit-appearance: none
+    }
+
+[data-v-9f28f096]::-webkit-file-upload-button {
+    font: inherit;
+    -webkit-appearance: button
+}
+
+output[data-v-9f28f096] {
+    display: inline-block
+}
+
+summary[data-v-9f28f096] {
+    display: list-item
+}
+
+template[data-v-9f28f096] {
+    display: none
+}
+
+[hidden][data-v-9f28f096] {
+    display: none !important
+}
+
+mark[data-v-9f28f096] {
+    padding: .2em;
+    background-color: #feffe6
+}
+
+[data-v-9f28f096]::-moz-selection {
+    color: #fff;
+    background: #fa541c
+}
+
+[data-v-9f28f096]::selection {
+    color: #fff;
+    background: #fa541c
+}
+
+.clearfix[data-v-9f28f096] {
+    zoom: 1
+}
+
+    .clearfix[data-v-9f28f096]:after, .clearfix[data-v-9f28f096]:before {
+        display: table;
+        content: ""
+    }
+
+    .clearfix[data-v-9f28f096]:after {
+        clear: both
+    }
+
+.anticon[data-v-9f28f096] {
+    display: inline-block;
+    color: inherit;
+    font-style: normal;
+    line-height: 0;
+    text-align: center;
+    text-transform: none;
+    vertical-align: -.125em;
+    text-rendering: optimizeLegibility;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale
+}
+
+.anticon > [data-v-9f28f096] {
+    line-height: 1
+}
+
+.anticon svg[data-v-9f28f096] {
+    display: inline-block
+}
+
+.anticon[data-v-9f28f096]:before {
+    display: none
+}
+
+.anticon .anticon-icon[data-v-9f28f096] {
+    display: block
+}
+
+.anticon[tabindex][data-v-9f28f096] {
+    cursor: pointer
+}
+
+.anticon-spin[data-v-9f28f096], .anticon-spin[data-v-9f28f096]:before {
+    display: inline-block;
+    -webkit-animation: loadingCircle-data-v-9f28f096 1s linear infinite;
+    animation: loadingCircle-data-v-9f28f096 1s linear infinite
+}
+
+.fade-appear[data-v-9f28f096], .fade-enter[data-v-9f28f096], .fade-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.fade-appear.fade-appear-active[data-v-9f28f096], .fade-enter.fade-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antFadeIn-data-v-9f28f096;
+    animation-name: antFadeIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.fade-leave.fade-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antFadeOut-data-v-9f28f096;
+    animation-name: antFadeOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.fade-appear[data-v-9f28f096], .fade-enter[data-v-9f28f096] {
+    opacity: 0
+}
+
+.fade-appear[data-v-9f28f096], .fade-enter[data-v-9f28f096], .fade-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: linear;
+    animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn-data-v-9f28f096 {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@keyframes antFadeIn-data-v-9f28f096 {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antFadeOut-data-v-9f28f096 {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes antFadeOut-data-v-9f28f096 {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+.move-up-appear[data-v-9f28f096], .move-up-enter[data-v-9f28f096], .move-up-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-up-appear.move-up-appear-active[data-v-9f28f096], .move-up-enter.move-up-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antMoveUpIn-data-v-9f28f096;
+    animation-name: antMoveUpIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-up-leave.move-up-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antMoveUpOut-data-v-9f28f096;
+    animation-name: antMoveUpOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-up-appear[data-v-9f28f096], .move-up-enter[data-v-9f28f096] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear[data-v-9f28f096], .move-down-enter[data-v-9f28f096], .move-down-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-down-appear.move-down-appear-active[data-v-9f28f096], .move-down-enter.move-down-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antMoveDownIn-data-v-9f28f096;
+    animation-name: antMoveDownIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-down-leave.move-down-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antMoveDownOut-data-v-9f28f096;
+    animation-name: antMoveDownOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-down-appear[data-v-9f28f096], .move-down-enter[data-v-9f28f096] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear[data-v-9f28f096], .move-left-enter[data-v-9f28f096], .move-left-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-left-appear.move-left-appear-active[data-v-9f28f096], .move-left-enter.move-left-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antMoveLeftIn-data-v-9f28f096;
+    animation-name: antMoveLeftIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-left-leave.move-left-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antMoveLeftOut-data-v-9f28f096;
+    animation-name: antMoveLeftOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-left-appear[data-v-9f28f096], .move-left-enter[data-v-9f28f096] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear[data-v-9f28f096], .move-right-enter[data-v-9f28f096], .move-right-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-right-appear.move-right-appear-active[data-v-9f28f096], .move-right-enter.move-right-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antMoveRightIn-data-v-9f28f096;
+    animation-name: antMoveRightIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-right-leave.move-right-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antMoveRightOut-data-v-9f28f096;
+    animation-name: antMoveRightOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-right-appear[data-v-9f28f096], .move-right-enter[data-v-9f28f096] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveDownIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveDownOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveDownOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveLeftIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveLeftIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveLeftOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveLeftOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveRightIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveRightIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveRightOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveRightOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveUpIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveUpIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveUpOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveUpOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes loadingCircle-data-v-9f28f096 {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+@keyframes loadingCircle-data-v-9f28f096 {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+[ant-click-animating-without-extra-node=true][data-v-9f28f096], [ant-click-animating=true][data-v-9f28f096] {
+    position: relative
+}
+
+html[data-v-9f28f096] {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-9f28f096], [ant-click-animating-without-extra-node=true][data-v-9f28f096]:after {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    display: block;
+    border-radius: inherit;
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c;
+    -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    opacity: .2;
+    -webkit-animation: fadeEffect-data-v-9f28f096 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-9f28f096 .4s cubic-bezier(.08,.82,.17,1);
+    animation: fadeEffect-data-v-9f28f096 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-9f28f096 .4s cubic-bezier(.08,.82,.17,1);
+    -webkit-animation-fill-mode: forwards;
+    animation-fill-mode: forwards;
+    content: "";
+    pointer-events: none
+}
+
+@-webkit-keyframes waveEffect-data-v-9f28f096 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@keyframes waveEffect-data-v-9f28f096 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@-webkit-keyframes fadeEffect-data-v-9f28f096 {
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes fadeEffect-data-v-9f28f096 {
+    to {
+        opacity: 0
+    }
+}
+
+.slide-up-appear[data-v-9f28f096], .slide-up-enter[data-v-9f28f096], .slide-up-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-up-appear.slide-up-appear-active[data-v-9f28f096], .slide-up-enter.slide-up-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antSlideUpIn-data-v-9f28f096;
+    animation-name: antSlideUpIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-up-leave.slide-up-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antSlideUpOut-data-v-9f28f096;
+    animation-name: antSlideUpOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-up-appear[data-v-9f28f096], .slide-up-enter[data-v-9f28f096] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear[data-v-9f28f096], .slide-down-enter[data-v-9f28f096], .slide-down-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-down-appear.slide-down-appear-active[data-v-9f28f096], .slide-down-enter.slide-down-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antSlideDownIn-data-v-9f28f096;
+    animation-name: antSlideDownIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-down-leave.slide-down-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antSlideDownOut-data-v-9f28f096;
+    animation-name: antSlideDownOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-down-appear[data-v-9f28f096], .slide-down-enter[data-v-9f28f096] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear[data-v-9f28f096], .slide-left-enter[data-v-9f28f096], .slide-left-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-left-appear.slide-left-appear-active[data-v-9f28f096], .slide-left-enter.slide-left-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antSlideLeftIn-data-v-9f28f096;
+    animation-name: antSlideLeftIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-left-leave.slide-left-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antSlideLeftOut-data-v-9f28f096;
+    animation-name: antSlideLeftOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-left-appear[data-v-9f28f096], .slide-left-enter[data-v-9f28f096] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear[data-v-9f28f096], .slide-right-enter[data-v-9f28f096], .slide-right-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-right-appear.slide-right-appear-active[data-v-9f28f096], .slide-right-enter.slide-right-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antSlideRightIn-data-v-9f28f096;
+    animation-name: antSlideRightIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-right-leave.slide-right-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antSlideRightOut-data-v-9f28f096;
+    animation-name: antSlideRightOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-right-appear[data-v-9f28f096], .slide-right-enter[data-v-9f28f096] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideUpIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideUpOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideUpOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideDownIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideDownIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideDownOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideDownOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideLeftIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideLeftIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideLeftOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideLeftOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideRightIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideRightIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideRightOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideRightOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+.swing-appear[data-v-9f28f096], .swing-enter[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.swing-appear.swing-appear-active[data-v-9f28f096], .swing-enter.swing-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antSwingIn-data-v-9f28f096;
+    animation-name: antSwingIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+@-webkit-keyframes antSwingIn-data-v-9f28f096 {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+@keyframes antSwingIn-data-v-9f28f096 {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+.zoom-appear[data-v-9f28f096], .zoom-enter[data-v-9f28f096], .zoom-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-appear.zoom-appear-active[data-v-9f28f096], .zoom-enter.zoom-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antZoomIn-data-v-9f28f096;
+    animation-name: antZoomIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-leave.zoom-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antZoomOut-data-v-9f28f096;
+    animation-name: antZoomOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-appear[data-v-9f28f096], .zoom-enter[data-v-9f28f096] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear[data-v-9f28f096], .zoom-big-enter[data-v-9f28f096], .zoom-big-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-big-appear.zoom-big-appear-active[data-v-9f28f096], .zoom-big-enter.zoom-big-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antZoomBigIn-data-v-9f28f096;
+    animation-name: antZoomBigIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-big-leave.zoom-big-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antZoomBigOut-data-v-9f28f096;
+    animation-name: antZoomBigOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-big-appear[data-v-9f28f096], .zoom-big-enter[data-v-9f28f096] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear[data-v-9f28f096], .zoom-big-fast-enter[data-v-9f28f096], .zoom-big-fast-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .1s;
+    animation-duration: .1s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-big-fast-appear.zoom-big-fast-appear-active[data-v-9f28f096], .zoom-big-fast-enter.zoom-big-fast-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antZoomBigIn-data-v-9f28f096;
+    animation-name: antZoomBigIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-big-fast-leave.zoom-big-fast-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antZoomBigOut-data-v-9f28f096;
+    animation-name: antZoomBigOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-big-fast-appear[data-v-9f28f096], .zoom-big-fast-enter[data-v-9f28f096] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear[data-v-9f28f096], .zoom-up-enter[data-v-9f28f096], .zoom-up-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-up-appear.zoom-up-appear-active[data-v-9f28f096], .zoom-up-enter.zoom-up-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antZoomUpIn-data-v-9f28f096;
+    animation-name: antZoomUpIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-up-leave.zoom-up-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antZoomUpOut-data-v-9f28f096;
+    animation-name: antZoomUpOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-up-appear[data-v-9f28f096], .zoom-up-enter[data-v-9f28f096] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear[data-v-9f28f096], .zoom-down-enter[data-v-9f28f096], .zoom-down-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-down-appear.zoom-down-appear-active[data-v-9f28f096], .zoom-down-enter.zoom-down-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antZoomDownIn-data-v-9f28f096;
+    animation-name: antZoomDownIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-down-leave.zoom-down-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antZoomDownOut-data-v-9f28f096;
+    animation-name: antZoomDownOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-down-appear[data-v-9f28f096], .zoom-down-enter[data-v-9f28f096] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear[data-v-9f28f096], .zoom-left-enter[data-v-9f28f096], .zoom-left-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-left-appear.zoom-left-appear-active[data-v-9f28f096], .zoom-left-enter.zoom-left-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antZoomLeftIn-data-v-9f28f096;
+    animation-name: antZoomLeftIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-left-leave.zoom-left-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antZoomLeftOut-data-v-9f28f096;
+    animation-name: antZoomLeftOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-left-appear[data-v-9f28f096], .zoom-left-enter[data-v-9f28f096] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear[data-v-9f28f096], .zoom-right-enter[data-v-9f28f096], .zoom-right-leave[data-v-9f28f096] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-right-appear.zoom-right-appear-active[data-v-9f28f096], .zoom-right-enter.zoom-right-enter-active[data-v-9f28f096] {
+    -webkit-animation-name: antZoomRightIn-data-v-9f28f096;
+    animation-name: antZoomRightIn-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-right-leave.zoom-right-leave-active[data-v-9f28f096] {
+    -webkit-animation-name: antZoomRightOut-data-v-9f28f096;
+    animation-name: antZoomRightOut-data-v-9f28f096;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-right-appear[data-v-9f28f096], .zoom-right-enter[data-v-9f28f096] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave[data-v-9f28f096] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomBigIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomBigIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomBigOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomBigOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomUpIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@keyframes antZoomUpIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@-webkit-keyframes antZoomUpOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomUpOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomLeftIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@keyframes antZoomLeftIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@-webkit-keyframes antZoomLeftOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomLeftOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomRightIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@keyframes antZoomRightIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@-webkit-keyframes antZoomRightOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomRightOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomDownIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@keyframes antZoomDownIn-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@-webkit-keyframes antZoomDownOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomDownOut-data-v-9f28f096 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+.ant-motion-collapse-legacy[data-v-9f28f096] {
+    overflow: hidden
+}
+
+.ant-motion-collapse-legacy-active[data-v-9f28f096], .ant-motion-collapse[data-v-9f28f096] {
+    -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+    transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse[data-v-9f28f096] {
+    overflow: hidden
+}
+
+.ant-pro-trend[data-v-9f28f096] {
+    display: inline-block;
+    font-size: 14px;
+    line-height: 22px
+}
+
+.ant-pro-trend .down[data-v-9f28f096], .ant-pro-trend .up[data-v-9f28f096] {
+    margin-left: 4px;
+    position: relative;
+    top: 1px
+}
+
+.ant-pro-trend .down i[data-v-9f28f096], .ant-pro-trend .up i[data-v-9f28f096] {
+    font-size: 12px;
+    -webkit-transform: scale(.83);
+    transform: scale(.83)
+}
+
+.ant-pro-trend .item-text[data-v-9f28f096] {
+    display: inline-block;
+    margin-left: 8px;
+    color: rgba(0,0,0,.85)
+}
+
+.ant-pro-trend .up[data-v-9f28f096] {
+    color: #f5222d
+}
+
+.ant-pro-trend .down[data-v-9f28f096] {
+    color: #52c41a;
+    top: -1px
+}
+
+.ant-pro-trend.reverse-color .up[data-v-9f28f096] {
+    color: #52c41a
+}
+
+.ant-pro-trend.reverse-color .down[data-v-9f28f096] {
+    color: #f5222d
+}
+
+.table-wrapper {
+    background: #fff
+}
+
+.s-table-tool {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    margin-bottom: 16px
+}
+
+    .s-table-tool .s-table-tool-left {
+        -webkit-box-flex: 1;
+        -ms-flex: 1;
+        flex: 1
+    }
+
+    .s-table-tool .s-table-tool-right {
+        display: -webkit-inline-box;
+        display: -ms-inline-flexbox;
+        display: inline-flex;
+        -webkit-box-align: center;
+        -ms-flex-align: center;
+        align-items: center
+    }
+
+        .s-table-tool .s-table-tool-right .s-tool-item {
+            font-size: 16px;
+            margin-left: 16px;
+            cursor: pointer
+        }
+
+.s-tool-column-item {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    padding: 4px 16px 4px 4px
+}
+
+    .s-tool-column-item .ant-checkbox-wrapper {
+        -webkit-box-flex: 1;
+        -ms-flex: 1;
+        flex: 1
+    }
+
+    .s-tool-column-item .s-tool-column-handle {
+        opacity: .8;
+        cursor: move
+    }
+
+        .s-tool-column-item .s-tool-column-handle .anticon-more {
+            font-size: 12px;
+            margin-top: 2px
+        }
+
+            .s-tool-column-item .s-tool-column-handle .anticon-more + .anticon-more {
+                margin: 2px 4px 0 -8px
+            }
+
+.s-tool-column-header {
+    padding: 5px 16px 10px 24px;
+    min-width: 180px
+}
+
+.s-tool-column .ant-divider {
+    margin: 0
+}
+
+.s-tool-column .ant-checkbox-group {
+    padding: 4px 0;
+    display: block
+}
+
+.result[data-v-4aa70533] {
+    text-align: center;
+    width: 72%;
+    margin: 0 auto;
+    padding: 24px 0 8px
+}
+
+.result .icon[data-v-4aa70533] {
+    font-size: 72px;
+    line-height: 72px;
+    margin-bottom: 24px
+}
+
+.result .success[data-v-4aa70533] {
+    color: #52c41a
+}
+
+.result .error[data-v-4aa70533] {
+    color: red
+}
+
+.result .title[data-v-4aa70533] {
+    font-size: 24px;
+    color: rgba(0,0,0,.85);
+    font-weight: 500;
+    line-height: 32px;
+    margin-bottom: 16px
+}
+
+.result .description[data-v-4aa70533] {
+    font-size: 14px;
+    line-height: 22px;
+    color: rgba(0,0,0,.45);
+    margin-bottom: 24px
+}
+
+.result .extra[data-v-4aa70533] {
+    background: #fafafa;
+    padding: 24px 40px;
+    border-radius: 2px;
+    text-align: left
+}
+
+.result .action[data-v-4aa70533] {
+    margin-top: 32px
+}
+
+.mobile .result[data-v-4aa70533] {
+    width: 100%;
+    margin: 0 auto;
+    padding: unset
+}
+
+body[data-v-74e4dc71], html[data-v-74e4dc71] {
+    width: 100%;
+    height: 100%
+}
+
+input[data-v-74e4dc71]::-ms-clear, input[data-v-74e4dc71]::-ms-reveal {
+    display: none
+}
+
+[data-v-74e4dc71], [data-v-74e4dc71]:after, [data-v-74e4dc71]:before {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+html[data-v-74e4dc71] {
+    font-family: sans-serif;
+    line-height: 1.15;
+    -webkit-text-size-adjust: 100%;
+    -ms-text-size-adjust: 100%;
+    -ms-overflow-style: scrollbar;
+    -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+article[data-v-74e4dc71], aside[data-v-74e4dc71], dialog[data-v-74e4dc71], figcaption[data-v-74e4dc71], figure[data-v-74e4dc71], footer[data-v-74e4dc71], header[data-v-74e4dc71], hgroup[data-v-74e4dc71], main[data-v-74e4dc71], nav[data-v-74e4dc71], section[data-v-74e4dc71] {
+    display: block
+}
+
+body[data-v-74e4dc71] {
+    margin: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    background-color: #fff;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+[tabindex="-1"][data-v-74e4dc71]:focus {
+    outline: none !important
+}
+
+hr[data-v-74e4dc71] {
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+    overflow: visible
+}
+
+h1[data-v-74e4dc71], h2[data-v-74e4dc71], h3[data-v-74e4dc71], h4[data-v-74e4dc71], h5[data-v-74e4dc71], h6[data-v-74e4dc71] {
+    margin-top: 0;
+    margin-bottom: .5em;
+    color: rgba(0,0,0,.85);
+    font-weight: 500
+}
+
+p[data-v-74e4dc71] {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+abbr[data-original-title][data-v-74e4dc71], abbr[title][data-v-74e4dc71] {
+    text-decoration: underline;
+    -webkit-text-decoration: underline dotted;
+    text-decoration: underline dotted;
+    border-bottom: 0;
+    cursor: help
+}
+
+address[data-v-74e4dc71] {
+    margin-bottom: 1em;
+    font-style: normal;
+    line-height: inherit
+}
+
+input[type=number][data-v-74e4dc71], input[type=password][data-v-74e4dc71], input[type=text][data-v-74e4dc71], textarea[data-v-74e4dc71] {
+    -webkit-appearance: none
+}
+
+dl[data-v-74e4dc71], ol[data-v-74e4dc71], ul[data-v-74e4dc71] {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+ol ol[data-v-74e4dc71], ol ul[data-v-74e4dc71], ul ol[data-v-74e4dc71], ul ul[data-v-74e4dc71] {
+    margin-bottom: 0
+}
+
+dt[data-v-74e4dc71] {
+    font-weight: 500
+}
+
+dd[data-v-74e4dc71] {
+    margin-bottom: .5em;
+    margin-left: 0
+}
+
+blockquote[data-v-74e4dc71] {
+    margin: 0 0 1em
+}
+
+dfn[data-v-74e4dc71] {
+    font-style: italic
+}
+
+b[data-v-74e4dc71], strong[data-v-74e4dc71] {
+    font-weight: bolder
+}
+
+small[data-v-74e4dc71] {
+    font-size: 80%
+}
+
+sub[data-v-74e4dc71], sup[data-v-74e4dc71] {
+    position: relative;
+    font-size: 75%;
+    line-height: 0;
+    vertical-align: baseline
+}
+
+sub[data-v-74e4dc71] {
+    bottom: -.25em
+}
+
+sup[data-v-74e4dc71] {
+    top: -.5em
+}
+
+a[data-v-74e4dc71] {
+    color: #fa541c;
+    text-decoration: none;
+    background-color: transparent;
+    outline: none;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s;
+    -webkit-text-decoration-skip: objects
+}
+
+    a[data-v-74e4dc71]:hover {
+        color: #ff7a45
+    }
+
+    a[data-v-74e4dc71]:active {
+        color: #d4380d
+    }
+
+    a[data-v-74e4dc71]:active, a[data-v-74e4dc71]:hover {
+        text-decoration: none;
+        outline: 0
+    }
+
+a[disabled][data-v-74e4dc71] {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed;
+    pointer-events: none
+}
+
+code[data-v-74e4dc71], kbd[data-v-74e4dc71], pre[data-v-74e4dc71], samp[data-v-74e4dc71] {
+    font-size: 1em;
+    font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre[data-v-74e4dc71] {
+    margin-top: 0;
+    margin-bottom: 1em;
+    overflow: auto
+}
+
+figure[data-v-74e4dc71] {
+    margin: 0 0 1em
+}
+
+img[data-v-74e4dc71] {
+    vertical-align: middle;
+    border-style: none
+}
+
+svg[data-v-74e4dc71]:not(:root) {
+    overflow: hidden
+}
+
+[role=button][data-v-74e4dc71], a[data-v-74e4dc71], area[data-v-74e4dc71], button[data-v-74e4dc71], input[data-v-74e4dc71]:not([type=range]), label[data-v-74e4dc71], select[data-v-74e4dc71], summary[data-v-74e4dc71], textarea[data-v-74e4dc71] {
+    -ms-touch-action: manipulation;
+    touch-action: manipulation
+}
+
+table[data-v-74e4dc71] {
+    border-collapse: collapse
+}
+
+caption[data-v-74e4dc71] {
+    padding-top: .75em;
+    padding-bottom: .3em;
+    color: rgba(0,0,0,.45);
+    text-align: left;
+    caption-side: bottom
+}
+
+th[data-v-74e4dc71] {
+    text-align: inherit
+}
+
+button[data-v-74e4dc71], input[data-v-74e4dc71], optgroup[data-v-74e4dc71], select[data-v-74e4dc71], textarea[data-v-74e4dc71] {
+    margin: 0;
+    color: inherit;
+    font-size: inherit;
+    font-family: inherit;
+    line-height: inherit
+}
+
+button[data-v-74e4dc71], input[data-v-74e4dc71] {
+    overflow: visible
+}
+
+button[data-v-74e4dc71], select[data-v-74e4dc71] {
+    text-transform: none
+}
+
+[type=reset][data-v-74e4dc71], [type=submit][data-v-74e4dc71], button[data-v-74e4dc71], html [type=button][data-v-74e4dc71] {
+    -webkit-appearance: button
+}
+
+    [type=button][data-v-74e4dc71]::-moz-focus-inner, [type=reset][data-v-74e4dc71]::-moz-focus-inner, [type=submit][data-v-74e4dc71]::-moz-focus-inner, button[data-v-74e4dc71]::-moz-focus-inner {
+        padding: 0;
+        border-style: none
+    }
+
+input[type=checkbox][data-v-74e4dc71], input[type=radio][data-v-74e4dc71] {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding: 0
+}
+
+input[type=date][data-v-74e4dc71], input[type=datetime-local][data-v-74e4dc71], input[type=month][data-v-74e4dc71], input[type=time][data-v-74e4dc71] {
+    -webkit-appearance: listbox
+}
+
+textarea[data-v-74e4dc71] {
+    overflow: auto;
+    resize: vertical
+}
+
+fieldset[data-v-74e4dc71] {
+    min-width: 0;
+    margin: 0;
+    padding: 0;
+    border: 0
+}
+
+legend[data-v-74e4dc71] {
+    display: block;
+    width: 100%;
+    max-width: 100%;
+    margin-bottom: .5em;
+    padding: 0;
+    color: inherit;
+    font-size: 1.5em;
+    line-height: inherit;
+    white-space: normal
+}
+
+progress[data-v-74e4dc71] {
+    vertical-align: baseline
+}
+
+[type=number][data-v-74e4dc71]::-webkit-inner-spin-button, [type=number][data-v-74e4dc71]::-webkit-outer-spin-button {
+    height: auto
+}
+
+[type=search][data-v-74e4dc71] {
+    outline-offset: -2px;
+    -webkit-appearance: none
+}
+
+    [type=search][data-v-74e4dc71]::-webkit-search-cancel-button, [type=search][data-v-74e4dc71]::-webkit-search-decoration {
+        -webkit-appearance: none
+    }
+
+[data-v-74e4dc71]::-webkit-file-upload-button {
+    font: inherit;
+    -webkit-appearance: button
+}
+
+output[data-v-74e4dc71] {
+    display: inline-block
+}
+
+summary[data-v-74e4dc71] {
+    display: list-item
+}
+
+template[data-v-74e4dc71] {
+    display: none
+}
+
+[hidden][data-v-74e4dc71] {
+    display: none !important
+}
+
+mark[data-v-74e4dc71] {
+    padding: .2em;
+    background-color: #feffe6
+}
+
+[data-v-74e4dc71]::-moz-selection {
+    color: #fff;
+    background: #fa541c
+}
+
+[data-v-74e4dc71]::selection {
+    color: #fff;
+    background: #fa541c
+}
+
+.clearfix[data-v-74e4dc71] {
+    zoom: 1
+}
+
+    .clearfix[data-v-74e4dc71]:after, .clearfix[data-v-74e4dc71]:before {
+        display: table;
+        content: ""
+    }
+
+    .clearfix[data-v-74e4dc71]:after {
+        clear: both
+    }
+
+.anticon[data-v-74e4dc71] {
+    display: inline-block;
+    color: inherit;
+    font-style: normal;
+    line-height: 0;
+    text-align: center;
+    text-transform: none;
+    vertical-align: -.125em;
+    text-rendering: optimizeLegibility;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale
+}
+
+.anticon > [data-v-74e4dc71] {
+    line-height: 1
+}
+
+.anticon svg[data-v-74e4dc71] {
+    display: inline-block
+}
+
+.anticon[data-v-74e4dc71]:before {
+    display: none
+}
+
+.anticon .anticon-icon[data-v-74e4dc71] {
+    display: block
+}
+
+.anticon[tabindex][data-v-74e4dc71] {
+    cursor: pointer
+}
+
+.anticon-spin[data-v-74e4dc71], .anticon-spin[data-v-74e4dc71]:before {
+    display: inline-block;
+    -webkit-animation: loadingCircle-data-v-74e4dc71 1s linear infinite;
+    animation: loadingCircle-data-v-74e4dc71 1s linear infinite
+}
+
+.fade-appear[data-v-74e4dc71], .fade-enter[data-v-74e4dc71], .fade-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.fade-appear.fade-appear-active[data-v-74e4dc71], .fade-enter.fade-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antFadeIn-data-v-74e4dc71;
+    animation-name: antFadeIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.fade-leave.fade-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antFadeOut-data-v-74e4dc71;
+    animation-name: antFadeOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.fade-appear[data-v-74e4dc71], .fade-enter[data-v-74e4dc71] {
+    opacity: 0
+}
+
+.fade-appear[data-v-74e4dc71], .fade-enter[data-v-74e4dc71], .fade-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: linear;
+    animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn-data-v-74e4dc71 {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@keyframes antFadeIn-data-v-74e4dc71 {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antFadeOut-data-v-74e4dc71 {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes antFadeOut-data-v-74e4dc71 {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+.move-up-appear[data-v-74e4dc71], .move-up-enter[data-v-74e4dc71], .move-up-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-up-appear.move-up-appear-active[data-v-74e4dc71], .move-up-enter.move-up-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antMoveUpIn-data-v-74e4dc71;
+    animation-name: antMoveUpIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-up-leave.move-up-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antMoveUpOut-data-v-74e4dc71;
+    animation-name: antMoveUpOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-up-appear[data-v-74e4dc71], .move-up-enter[data-v-74e4dc71] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear[data-v-74e4dc71], .move-down-enter[data-v-74e4dc71], .move-down-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-down-appear.move-down-appear-active[data-v-74e4dc71], .move-down-enter.move-down-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antMoveDownIn-data-v-74e4dc71;
+    animation-name: antMoveDownIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-down-leave.move-down-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antMoveDownOut-data-v-74e4dc71;
+    animation-name: antMoveDownOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-down-appear[data-v-74e4dc71], .move-down-enter[data-v-74e4dc71] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear[data-v-74e4dc71], .move-left-enter[data-v-74e4dc71], .move-left-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-left-appear.move-left-appear-active[data-v-74e4dc71], .move-left-enter.move-left-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antMoveLeftIn-data-v-74e4dc71;
+    animation-name: antMoveLeftIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-left-leave.move-left-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antMoveLeftOut-data-v-74e4dc71;
+    animation-name: antMoveLeftOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-left-appear[data-v-74e4dc71], .move-left-enter[data-v-74e4dc71] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear[data-v-74e4dc71], .move-right-enter[data-v-74e4dc71], .move-right-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-right-appear.move-right-appear-active[data-v-74e4dc71], .move-right-enter.move-right-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antMoveRightIn-data-v-74e4dc71;
+    animation-name: antMoveRightIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-right-leave.move-right-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antMoveRightOut-data-v-74e4dc71;
+    animation-name: antMoveRightOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-right-appear[data-v-74e4dc71], .move-right-enter[data-v-74e4dc71] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveDownIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveDownOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveDownOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveLeftIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveLeftIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveLeftOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveLeftOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveRightIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveRightIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveRightOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveRightOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveUpIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveUpIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveUpOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveUpOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes loadingCircle-data-v-74e4dc71 {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+@keyframes loadingCircle-data-v-74e4dc71 {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+[ant-click-animating-without-extra-node=true][data-v-74e4dc71], [ant-click-animating=true][data-v-74e4dc71] {
+    position: relative
+}
+
+html[data-v-74e4dc71] {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-74e4dc71], [ant-click-animating-without-extra-node=true][data-v-74e4dc71]:after {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    display: block;
+    border-radius: inherit;
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c;
+    -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    opacity: .2;
+    -webkit-animation: fadeEffect-data-v-74e4dc71 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-74e4dc71 .4s cubic-bezier(.08,.82,.17,1);
+    animation: fadeEffect-data-v-74e4dc71 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-74e4dc71 .4s cubic-bezier(.08,.82,.17,1);
+    -webkit-animation-fill-mode: forwards;
+    animation-fill-mode: forwards;
+    content: "";
+    pointer-events: none
+}
+
+@-webkit-keyframes waveEffect-data-v-74e4dc71 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@keyframes waveEffect-data-v-74e4dc71 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@-webkit-keyframes fadeEffect-data-v-74e4dc71 {
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes fadeEffect-data-v-74e4dc71 {
+    to {
+        opacity: 0
+    }
+}
+
+.slide-up-appear[data-v-74e4dc71], .slide-up-enter[data-v-74e4dc71], .slide-up-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-up-appear.slide-up-appear-active[data-v-74e4dc71], .slide-up-enter.slide-up-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antSlideUpIn-data-v-74e4dc71;
+    animation-name: antSlideUpIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-up-leave.slide-up-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antSlideUpOut-data-v-74e4dc71;
+    animation-name: antSlideUpOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-up-appear[data-v-74e4dc71], .slide-up-enter[data-v-74e4dc71] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear[data-v-74e4dc71], .slide-down-enter[data-v-74e4dc71], .slide-down-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-down-appear.slide-down-appear-active[data-v-74e4dc71], .slide-down-enter.slide-down-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antSlideDownIn-data-v-74e4dc71;
+    animation-name: antSlideDownIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-down-leave.slide-down-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antSlideDownOut-data-v-74e4dc71;
+    animation-name: antSlideDownOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-down-appear[data-v-74e4dc71], .slide-down-enter[data-v-74e4dc71] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear[data-v-74e4dc71], .slide-left-enter[data-v-74e4dc71], .slide-left-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-left-appear.slide-left-appear-active[data-v-74e4dc71], .slide-left-enter.slide-left-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antSlideLeftIn-data-v-74e4dc71;
+    animation-name: antSlideLeftIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-left-leave.slide-left-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antSlideLeftOut-data-v-74e4dc71;
+    animation-name: antSlideLeftOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-left-appear[data-v-74e4dc71], .slide-left-enter[data-v-74e4dc71] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear[data-v-74e4dc71], .slide-right-enter[data-v-74e4dc71], .slide-right-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-right-appear.slide-right-appear-active[data-v-74e4dc71], .slide-right-enter.slide-right-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antSlideRightIn-data-v-74e4dc71;
+    animation-name: antSlideRightIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-right-leave.slide-right-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antSlideRightOut-data-v-74e4dc71;
+    animation-name: antSlideRightOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-right-appear[data-v-74e4dc71], .slide-right-enter[data-v-74e4dc71] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideUpIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideUpOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideUpOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideDownIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideDownIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideDownOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideDownOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideLeftIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideLeftIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideLeftOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideLeftOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideRightIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideRightIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideRightOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideRightOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+.swing-appear[data-v-74e4dc71], .swing-enter[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.swing-appear.swing-appear-active[data-v-74e4dc71], .swing-enter.swing-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antSwingIn-data-v-74e4dc71;
+    animation-name: antSwingIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+@-webkit-keyframes antSwingIn-data-v-74e4dc71 {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+@keyframes antSwingIn-data-v-74e4dc71 {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+.zoom-appear[data-v-74e4dc71], .zoom-enter[data-v-74e4dc71], .zoom-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-appear.zoom-appear-active[data-v-74e4dc71], .zoom-enter.zoom-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antZoomIn-data-v-74e4dc71;
+    animation-name: antZoomIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-leave.zoom-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antZoomOut-data-v-74e4dc71;
+    animation-name: antZoomOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-appear[data-v-74e4dc71], .zoom-enter[data-v-74e4dc71] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear[data-v-74e4dc71], .zoom-big-enter[data-v-74e4dc71], .zoom-big-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-big-appear.zoom-big-appear-active[data-v-74e4dc71], .zoom-big-enter.zoom-big-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antZoomBigIn-data-v-74e4dc71;
+    animation-name: antZoomBigIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-big-leave.zoom-big-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antZoomBigOut-data-v-74e4dc71;
+    animation-name: antZoomBigOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-big-appear[data-v-74e4dc71], .zoom-big-enter[data-v-74e4dc71] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear[data-v-74e4dc71], .zoom-big-fast-enter[data-v-74e4dc71], .zoom-big-fast-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .1s;
+    animation-duration: .1s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-big-fast-appear.zoom-big-fast-appear-active[data-v-74e4dc71], .zoom-big-fast-enter.zoom-big-fast-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antZoomBigIn-data-v-74e4dc71;
+    animation-name: antZoomBigIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-big-fast-leave.zoom-big-fast-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antZoomBigOut-data-v-74e4dc71;
+    animation-name: antZoomBigOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-big-fast-appear[data-v-74e4dc71], .zoom-big-fast-enter[data-v-74e4dc71] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear[data-v-74e4dc71], .zoom-up-enter[data-v-74e4dc71], .zoom-up-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-up-appear.zoom-up-appear-active[data-v-74e4dc71], .zoom-up-enter.zoom-up-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antZoomUpIn-data-v-74e4dc71;
+    animation-name: antZoomUpIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-up-leave.zoom-up-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antZoomUpOut-data-v-74e4dc71;
+    animation-name: antZoomUpOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-up-appear[data-v-74e4dc71], .zoom-up-enter[data-v-74e4dc71] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear[data-v-74e4dc71], .zoom-down-enter[data-v-74e4dc71], .zoom-down-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-down-appear.zoom-down-appear-active[data-v-74e4dc71], .zoom-down-enter.zoom-down-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antZoomDownIn-data-v-74e4dc71;
+    animation-name: antZoomDownIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-down-leave.zoom-down-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antZoomDownOut-data-v-74e4dc71;
+    animation-name: antZoomDownOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-down-appear[data-v-74e4dc71], .zoom-down-enter[data-v-74e4dc71] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear[data-v-74e4dc71], .zoom-left-enter[data-v-74e4dc71], .zoom-left-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-left-appear.zoom-left-appear-active[data-v-74e4dc71], .zoom-left-enter.zoom-left-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antZoomLeftIn-data-v-74e4dc71;
+    animation-name: antZoomLeftIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-left-leave.zoom-left-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antZoomLeftOut-data-v-74e4dc71;
+    animation-name: antZoomLeftOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-left-appear[data-v-74e4dc71], .zoom-left-enter[data-v-74e4dc71] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear[data-v-74e4dc71], .zoom-right-enter[data-v-74e4dc71], .zoom-right-leave[data-v-74e4dc71] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-right-appear.zoom-right-appear-active[data-v-74e4dc71], .zoom-right-enter.zoom-right-enter-active[data-v-74e4dc71] {
+    -webkit-animation-name: antZoomRightIn-data-v-74e4dc71;
+    animation-name: antZoomRightIn-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-right-leave.zoom-right-leave-active[data-v-74e4dc71] {
+    -webkit-animation-name: antZoomRightOut-data-v-74e4dc71;
+    animation-name: antZoomRightOut-data-v-74e4dc71;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-right-appear[data-v-74e4dc71], .zoom-right-enter[data-v-74e4dc71] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave[data-v-74e4dc71] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomBigIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomBigIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomBigOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomBigOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomUpIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@keyframes antZoomUpIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@-webkit-keyframes antZoomUpOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomUpOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomLeftIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@keyframes antZoomLeftIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@-webkit-keyframes antZoomLeftOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomLeftOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomRightIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@keyframes antZoomRightIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@-webkit-keyframes antZoomRightOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomRightOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomDownIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@keyframes antZoomDownIn-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@-webkit-keyframes antZoomDownOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomDownOut-data-v-74e4dc71 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+.ant-motion-collapse-legacy[data-v-74e4dc71] {
+    overflow: hidden
+}
+
+.ant-motion-collapse-legacy-active[data-v-74e4dc71], .ant-motion-collapse[data-v-74e4dc71] {
+    -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+    transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse[data-v-74e4dc71] {
+    overflow: hidden
+}
+
+ul[data-v-74e4dc71] {
+    list-style: none;
+    padding: 0;
+    overflow-y: scroll;
+    height: 250px
+}
+
+ul li[data-v-74e4dc71] {
+    display: inline-block;
+    padding: 12px;
+    margin: 3px 0;
+    border-radius: 2px
+}
+
+    ul li.active[data-v-74e4dc71], ul li[data-v-74e4dc71]:hover {
+        cursor: pointer;
+        color: #fff;
+        background-color: #fa541c
+    }
+
+body, html {
+    width: 100%;
+    height: 100%
+}
+
+input::-ms-clear, input::-ms-reveal {
+    display: none
+}
+
+*, :after, :before {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+html {
+    font-family: sans-serif;
+    line-height: 1.15;
+    -webkit-text-size-adjust: 100%;
+    -ms-text-size-adjust: 100%;
+    -ms-overflow-style: scrollbar;
+    -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {
+    display: block
+}
+
+body {
+    margin: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    background-color: #fff;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+[tabindex="-1"]:focus {
+    outline: none !important
+}
+
+hr {
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+    overflow: visible
+}
+
+h1, h2, h3, h4, h5, h6 {
+    margin-top: 0;
+    margin-bottom: .5em;
+    color: rgba(0,0,0,.85);
+    font-weight: 500
+}
+
+p {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+abbr[data-original-title], abbr[title] {
+    text-decoration: underline;
+    -webkit-text-decoration: underline dotted;
+    text-decoration: underline dotted;
+    border-bottom: 0;
+    cursor: help
+}
+
+address {
+    margin-bottom: 1em;
+    font-style: normal;
+    line-height: inherit
+}
+
+input[type=number], input[type=password], input[type=text], textarea {
+    -webkit-appearance: none
+}
+
+dl, ol, ul {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+    ol ol, ol ul, ul ol, ul ul {
+        margin-bottom: 0
+    }
+
+dt {
+    font-weight: 500
+}
+
+dd {
+    margin-bottom: .5em;
+    margin-left: 0
+}
+
+blockquote {
+    margin: 0 0 1em
+}
+
+dfn {
+    font-style: italic
+}
+
+b, strong {
+    font-weight: bolder
+}
+
+small {
+    font-size: 80%
+}
+
+sub, sup {
+    position: relative;
+    font-size: 75%;
+    line-height: 0;
+    vertical-align: baseline
+}
+
+sub {
+    bottom: -.25em
+}
+
+sup {
+    top: -.5em
+}
+
+a {
+    color: #fa541c;
+    text-decoration: none;
+    background-color: transparent;
+    outline: none;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s;
+    -webkit-text-decoration-skip: objects
+}
+
+    a:hover {
+        color: #ff7a45
+    }
+
+    a:active {
+        color: #d4380d
+    }
+
+    a:active, a:hover {
+        text-decoration: none;
+        outline: 0
+    }
+
+    a[disabled] {
+        color: rgba(0,0,0,.25);
+        cursor: not-allowed;
+        pointer-events: none
+    }
+
+code, kbd, pre, samp {
+    font-size: 1em;
+    font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre {
+    margin-top: 0;
+    margin-bottom: 1em;
+    overflow: auto
+}
+
+figure {
+    margin: 0 0 1em
+}
+
+img {
+    vertical-align: middle;
+    border-style: none
+}
+
+svg:not(:root) {
+    overflow: hidden
+}
+
+[role=button], a, area, button, input:not([type=range]), label, select, summary, textarea {
+    -ms-touch-action: manipulation;
+    touch-action: manipulation
+}
+
+table {
+    border-collapse: collapse
+}
+
+caption {
+    padding-top: .75em;
+    padding-bottom: .3em;
+    color: rgba(0,0,0,.45);
+    text-align: left;
+    caption-side: bottom
+}
+
+th {
+    text-align: inherit
+}
+
+button, input, optgroup, select, textarea {
+    margin: 0;
+    color: inherit;
+    font-size: inherit;
+    font-family: inherit;
+    line-height: inherit
+}
+
+button, input {
+    overflow: visible
+}
+
+button, select {
+    text-transform: none
+}
+
+[type=reset], [type=submit], button, html [type=button] {
+    -webkit-appearance: button
+}
+
+    [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner, button::-moz-focus-inner {
+        padding: 0;
+        border-style: none
+    }
+
+input[type=checkbox], input[type=radio] {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding: 0
+}
+
+input[type=date], input[type=datetime-local], input[type=month], input[type=time] {
+    -webkit-appearance: listbox
+}
+
+textarea {
+    overflow: auto;
+    resize: vertical
+}
+
+fieldset {
+    min-width: 0;
+    margin: 0;
+    padding: 0;
+    border: 0
+}
+
+legend {
+    display: block;
+    width: 100%;
+    max-width: 100%;
+    margin-bottom: .5em;
+    padding: 0;
+    color: inherit;
+    font-size: 1.5em;
+    line-height: inherit;
+    white-space: normal
+}
+
+progress {
+    vertical-align: baseline
+}
+
+[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button {
+    height: auto
+}
+
+[type=search] {
+    outline-offset: -2px;
+    -webkit-appearance: none
+}
+
+    [type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration {
+        -webkit-appearance: none
+    }
+
+::-webkit-file-upload-button {
+    font: inherit;
+    -webkit-appearance: button
+}
+
+output {
+    display: inline-block
+}
+
+summary {
+    display: list-item
+}
+
+template {
+    display: none
+}
+
+[hidden] {
+    display: none !important
+}
+
+mark {
+    padding: .2em;
+    background-color: #feffe6
+}
+
+::-moz-selection {
+    color: #fff;
+    background: #fa541c
+}
+
+::selection {
+    color: #fff;
+    background: #fa541c
+}
+
+.clearfix {
+    zoom: 1
+}
+
+    .clearfix:after, .clearfix:before {
+        display: table;
+        content: ""
+    }
+
+    .clearfix:after {
+        clear: both
+    }
+
+.anticon {
+    display: inline-block;
+    color: inherit;
+    font-style: normal;
+    line-height: 0;
+    text-align: center;
+    text-transform: none;
+    vertical-align: -.125em;
+    text-rendering: optimizeLegibility;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale
+}
+
+    .anticon > * {
+        line-height: 1
+    }
+
+    .anticon svg {
+        display: inline-block
+    }
+
+    .anticon:before {
+        display: none
+    }
+
+    .anticon .anticon-icon {
+        display: block
+    }
+
+    .anticon[tabindex] {
+        cursor: pointer
+    }
+
+.anticon-spin, .anticon-spin:before {
+    display: inline-block;
+    -webkit-animation: loadingCircle 1s linear infinite;
+    animation: loadingCircle 1s linear infinite
+}
+
+.fade-appear, .fade-enter, .fade-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .fade-appear.fade-appear-active, .fade-enter.fade-enter-active {
+        -webkit-animation-name: antFadeIn;
+        animation-name: antFadeIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .fade-leave.fade-leave-active {
+        -webkit-animation-name: antFadeOut;
+        animation-name: antFadeOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.fade-appear, .fade-enter {
+    opacity: 0
+}
+
+.fade-appear, .fade-enter, .fade-leave {
+    -webkit-animation-timing-function: linear;
+    animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@keyframes antFadeIn {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antFadeOut {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes antFadeOut {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+.move-up-appear, .move-up-enter, .move-up-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .move-up-appear.move-up-appear-active, .move-up-enter.move-up-enter-active {
+        -webkit-animation-name: antMoveUpIn;
+        animation-name: antMoveUpIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .move-up-leave.move-up-leave-active {
+        -webkit-animation-name: antMoveUpOut;
+        animation-name: antMoveUpOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.move-up-appear, .move-up-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear, .move-down-enter, .move-down-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .move-down-appear.move-down-appear-active, .move-down-enter.move-down-enter-active {
+        -webkit-animation-name: antMoveDownIn;
+        animation-name: antMoveDownIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .move-down-leave.move-down-leave-active {
+        -webkit-animation-name: antMoveDownOut;
+        animation-name: antMoveDownOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.move-down-appear, .move-down-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear, .move-left-enter, .move-left-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .move-left-appear.move-left-appear-active, .move-left-enter.move-left-enter-active {
+        -webkit-animation-name: antMoveLeftIn;
+        animation-name: antMoveLeftIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .move-left-leave.move-left-leave-active {
+        -webkit-animation-name: antMoveLeftOut;
+        animation-name: antMoveLeftOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.move-left-appear, .move-left-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear, .move-right-enter, .move-right-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .move-right-appear.move-right-appear-active, .move-right-enter.move-right-enter-active {
+        -webkit-animation-name: antMoveRightIn;
+        animation-name: antMoveRightIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .move-right-leave.move-right-leave-active {
+        -webkit-animation-name: antMoveRightOut;
+        animation-name: antMoveRightOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.move-right-appear, .move-right-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveDownIn {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveDownOut {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveDownOut {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveLeftIn {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveLeftIn {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveLeftOut {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveLeftOut {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveRightIn {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveRightIn {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveRightOut {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveRightOut {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveUpIn {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveUpIn {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveUpOut {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveUpOut {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes loadingCircle {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+@keyframes loadingCircle {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+[ant-click-animating-without-extra-node=true], [ant-click-animating=true] {
+    position: relative
+}
+
+html {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node, [ant-click-animating-without-extra-node=true]:after {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    display: block;
+    border-radius: inherit;
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c;
+    -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    opacity: .2;
+    -webkit-animation: fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);
+    animation: fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);
+    -webkit-animation-fill-mode: forwards;
+    animation-fill-mode: forwards;
+    content: "";
+    pointer-events: none
+}
+
+@-webkit-keyframes waveEffect {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@keyframes waveEffect {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@-webkit-keyframes fadeEffect {
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes fadeEffect {
+    to {
+        opacity: 0
+    }
+}
+
+.slide-up-appear, .slide-up-enter, .slide-up-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .slide-up-appear.slide-up-appear-active, .slide-up-enter.slide-up-enter-active {
+        -webkit-animation-name: antSlideUpIn;
+        animation-name: antSlideUpIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .slide-up-leave.slide-up-leave-active {
+        -webkit-animation-name: antSlideUpOut;
+        animation-name: antSlideUpOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.slide-up-appear, .slide-up-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear, .slide-down-enter, .slide-down-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .slide-down-appear.slide-down-appear-active, .slide-down-enter.slide-down-enter-active {
+        -webkit-animation-name: antSlideDownIn;
+        animation-name: antSlideDownIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .slide-down-leave.slide-down-leave-active {
+        -webkit-animation-name: antSlideDownOut;
+        animation-name: antSlideDownOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.slide-down-appear, .slide-down-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear, .slide-left-enter, .slide-left-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .slide-left-appear.slide-left-appear-active, .slide-left-enter.slide-left-enter-active {
+        -webkit-animation-name: antSlideLeftIn;
+        animation-name: antSlideLeftIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .slide-left-leave.slide-left-leave-active {
+        -webkit-animation-name: antSlideLeftOut;
+        animation-name: antSlideLeftOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.slide-left-appear, .slide-left-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear, .slide-right-enter, .slide-right-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .slide-right-appear.slide-right-appear-active, .slide-right-enter.slide-right-enter-active {
+        -webkit-animation-name: antSlideRightIn;
+        animation-name: antSlideRightIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .slide-right-leave.slide-right-leave-active {
+        -webkit-animation-name: antSlideRightOut;
+        animation-name: antSlideRightOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.slide-right-appear, .slide-right-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideUpIn {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideUpOut {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideUpOut {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideDownIn {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideDownIn {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideDownOut {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideDownOut {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideLeftIn {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideLeftIn {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideLeftOut {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideLeftOut {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideRightIn {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideRightIn {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideRightOut {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideRightOut {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+.swing-appear, .swing-enter {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .swing-appear.swing-appear-active, .swing-enter.swing-enter-active {
+        -webkit-animation-name: antSwingIn;
+        animation-name: antSwingIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+@-webkit-keyframes antSwingIn {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+@keyframes antSwingIn {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+.zoom-appear, .zoom-enter, .zoom-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .zoom-appear.zoom-appear-active, .zoom-enter.zoom-enter-active {
+        -webkit-animation-name: antZoomIn;
+        animation-name: antZoomIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .zoom-leave.zoom-leave-active {
+        -webkit-animation-name: antZoomOut;
+        animation-name: antZoomOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.zoom-appear, .zoom-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear, .zoom-big-enter, .zoom-big-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .zoom-big-appear.zoom-big-appear-active, .zoom-big-enter.zoom-big-enter-active {
+        -webkit-animation-name: antZoomBigIn;
+        animation-name: antZoomBigIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .zoom-big-leave.zoom-big-leave-active {
+        -webkit-animation-name: antZoomBigOut;
+        animation-name: antZoomBigOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.zoom-big-appear, .zoom-big-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear, .zoom-big-fast-enter, .zoom-big-fast-leave {
+    -webkit-animation-duration: .1s;
+    animation-duration: .1s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .zoom-big-fast-appear.zoom-big-fast-appear-active, .zoom-big-fast-enter.zoom-big-fast-enter-active {
+        -webkit-animation-name: antZoomBigIn;
+        animation-name: antZoomBigIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .zoom-big-fast-leave.zoom-big-fast-leave-active {
+        -webkit-animation-name: antZoomBigOut;
+        animation-name: antZoomBigOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.zoom-big-fast-appear, .zoom-big-fast-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear, .zoom-up-enter, .zoom-up-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .zoom-up-appear.zoom-up-appear-active, .zoom-up-enter.zoom-up-enter-active {
+        -webkit-animation-name: antZoomUpIn;
+        animation-name: antZoomUpIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .zoom-up-leave.zoom-up-leave-active {
+        -webkit-animation-name: antZoomUpOut;
+        animation-name: antZoomUpOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.zoom-up-appear, .zoom-up-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear, .zoom-down-enter, .zoom-down-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .zoom-down-appear.zoom-down-appear-active, .zoom-down-enter.zoom-down-enter-active {
+        -webkit-animation-name: antZoomDownIn;
+        animation-name: antZoomDownIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .zoom-down-leave.zoom-down-leave-active {
+        -webkit-animation-name: antZoomDownOut;
+        animation-name: antZoomDownOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.zoom-down-appear, .zoom-down-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear, .zoom-left-enter, .zoom-left-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .zoom-left-appear.zoom-left-appear-active, .zoom-left-enter.zoom-left-enter-active {
+        -webkit-animation-name: antZoomLeftIn;
+        animation-name: antZoomLeftIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .zoom-left-leave.zoom-left-leave-active {
+        -webkit-animation-name: antZoomLeftOut;
+        animation-name: antZoomLeftOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.zoom-left-appear, .zoom-left-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear, .zoom-right-enter, .zoom-right-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .zoom-right-appear.zoom-right-appear-active, .zoom-right-enter.zoom-right-enter-active {
+        -webkit-animation-name: antZoomRightIn;
+        animation-name: antZoomRightIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .zoom-right-leave.zoom-right-leave-active {
+        -webkit-animation-name: antZoomRightOut;
+        animation-name: antZoomRightOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.zoom-right-appear, .zoom-right-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomIn {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomBigIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomBigIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomBigOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomBigOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomUpIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@keyframes antZoomUpIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@-webkit-keyframes antZoomUpOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomUpOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomLeftIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@keyframes antZoomLeftIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@-webkit-keyframes antZoomLeftOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomLeftOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomRightIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@keyframes antZoomRightIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@-webkit-keyframes antZoomRightOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomRightOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomDownIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@keyframes antZoomDownIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@-webkit-keyframes antZoomDownOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomDownOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+.ant-motion-collapse-legacy {
+    overflow: hidden
+}
+
+.ant-motion-collapse, .ant-motion-collapse-legacy-active {
+    -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+    transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse {
+    overflow: hidden
+}
+
+.exception {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    height: 80%;
+    min-height: 500px
+}
+
+    .exception .imgBlock {
+        -webkit-box-flex: 0;
+        -ms-flex: 0 0 62.5%;
+        flex: 0 0 62.5%;
+        width: 62.5%;
+        padding-right: 152px;
+        zoom: 1
+    }
+
+        .exception .imgBlock:after, .exception .imgBlock:before {
+            content: " ";
+            display: table
+        }
+
+        .exception .imgBlock:after {
+            clear: both;
+            height: 0;
+            font-size: 0;
+            visibility: hidden
+        }
+
+    .exception .imgEle {
+        float: right;
+        width: 100%;
+        max-width: 430px;
+        height: 360px;
+        background-repeat: no-repeat;
+        background-position: 50% 50%;
+        background-size: contain
+    }
+
+    .exception .content {
+        -webkit-box-flex: 1;
+        -ms-flex: auto;
+        flex: auto
+    }
+
+        .exception .content h1 {
+            margin-bottom: 24px;
+            color: #434e59;
+            font-weight: 600;
+            font-size: 72px;
+            line-height: 72px
+        }
+
+        .exception .content .desc {
+            margin-bottom: 16px;
+            color: rgba(0,0,0,.45);
+            font-size: 20px;
+            line-height: 28px
+        }
+
+        .exception .content .actions button:not(:last-child) {
+            margin-right: 8px
+        }
+
+@media screen and (max-width:1200px) {
+    .exception .imgBlock {
+        padding-right: 88px
+    }
+}
+
+@media screen and (max-width:576px) {
+    .exception {
+        display: block;
+        text-align: center
+    }
+
+        .exception .imgBlock {
+            margin: 0 auto 24px;
+            padding-right: 0
+        }
+}
+
+@media screen and (max-width:480px) {
+    .exception .imgBlock {
+        margin-bottom: -24px;
+        overflow: hidden
+    }
+}
+
+body[data-v-400fd39c], html[data-v-400fd39c] {
+    width: 100%;
+    height: 100%
+}
+
+input[data-v-400fd39c]::-ms-clear, input[data-v-400fd39c]::-ms-reveal {
+    display: none
+}
+
+[data-v-400fd39c], [data-v-400fd39c]:after, [data-v-400fd39c]:before {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+html[data-v-400fd39c] {
+    font-family: sans-serif;
+    line-height: 1.15;
+    -webkit-text-size-adjust: 100%;
+    -ms-text-size-adjust: 100%;
+    -ms-overflow-style: scrollbar;
+    -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+article[data-v-400fd39c], aside[data-v-400fd39c], dialog[data-v-400fd39c], figcaption[data-v-400fd39c], figure[data-v-400fd39c], footer[data-v-400fd39c], header[data-v-400fd39c], hgroup[data-v-400fd39c], main[data-v-400fd39c], nav[data-v-400fd39c], section[data-v-400fd39c] {
+    display: block
+}
+
+body[data-v-400fd39c] {
+    margin: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    background-color: #fff;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+[tabindex="-1"][data-v-400fd39c]:focus {
+    outline: none !important
+}
+
+hr[data-v-400fd39c] {
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+    overflow: visible
+}
+
+h1[data-v-400fd39c], h2[data-v-400fd39c], h3[data-v-400fd39c], h4[data-v-400fd39c], h5[data-v-400fd39c], h6[data-v-400fd39c] {
+    margin-top: 0;
+    margin-bottom: .5em;
+    color: rgba(0,0,0,.85);
+    font-weight: 500
+}
+
+p[data-v-400fd39c] {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+abbr[data-original-title][data-v-400fd39c], abbr[title][data-v-400fd39c] {
+    text-decoration: underline;
+    -webkit-text-decoration: underline dotted;
+    text-decoration: underline dotted;
+    border-bottom: 0;
+    cursor: help
+}
+
+address[data-v-400fd39c] {
+    margin-bottom: 1em;
+    font-style: normal;
+    line-height: inherit
+}
+
+input[type=number][data-v-400fd39c], input[type=password][data-v-400fd39c], input[type=text][data-v-400fd39c], textarea[data-v-400fd39c] {
+    -webkit-appearance: none
+}
+
+dl[data-v-400fd39c], ol[data-v-400fd39c], ul[data-v-400fd39c] {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+ol ol[data-v-400fd39c], ol ul[data-v-400fd39c], ul ol[data-v-400fd39c], ul ul[data-v-400fd39c] {
+    margin-bottom: 0
+}
+
+dt[data-v-400fd39c] {
+    font-weight: 500
+}
+
+dd[data-v-400fd39c] {
+    margin-bottom: .5em;
+    margin-left: 0
+}
+
+blockquote[data-v-400fd39c] {
+    margin: 0 0 1em
+}
+
+dfn[data-v-400fd39c] {
+    font-style: italic
+}
+
+b[data-v-400fd39c], strong[data-v-400fd39c] {
+    font-weight: bolder
+}
+
+small[data-v-400fd39c] {
+    font-size: 80%
+}
+
+sub[data-v-400fd39c], sup[data-v-400fd39c] {
+    position: relative;
+    font-size: 75%;
+    line-height: 0;
+    vertical-align: baseline
+}
+
+sub[data-v-400fd39c] {
+    bottom: -.25em
+}
+
+sup[data-v-400fd39c] {
+    top: -.5em
+}
+
+a[data-v-400fd39c] {
+    color: #fa541c;
+    text-decoration: none;
+    background-color: transparent;
+    outline: none;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s;
+    -webkit-text-decoration-skip: objects
+}
+
+    a[data-v-400fd39c]:hover {
+        color: #ff7a45
+    }
+
+    a[data-v-400fd39c]:active {
+        color: #d4380d
+    }
+
+    a[data-v-400fd39c]:active, a[data-v-400fd39c]:hover {
+        text-decoration: none;
+        outline: 0
+    }
+
+a[disabled][data-v-400fd39c] {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed;
+    pointer-events: none
+}
+
+code[data-v-400fd39c], kbd[data-v-400fd39c], pre[data-v-400fd39c], samp[data-v-400fd39c] {
+    font-size: 1em;
+    font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre[data-v-400fd39c] {
+    margin-top: 0;
+    margin-bottom: 1em;
+    overflow: auto
+}
+
+figure[data-v-400fd39c] {
+    margin: 0 0 1em
+}
+
+img[data-v-400fd39c] {
+    vertical-align: middle;
+    border-style: none
+}
+
+svg[data-v-400fd39c]:not(:root) {
+    overflow: hidden
+}
+
+[role=button][data-v-400fd39c], a[data-v-400fd39c], area[data-v-400fd39c], button[data-v-400fd39c], input[data-v-400fd39c]:not([type=range]), label[data-v-400fd39c], select[data-v-400fd39c], summary[data-v-400fd39c], textarea[data-v-400fd39c] {
+    -ms-touch-action: manipulation;
+    touch-action: manipulation
+}
+
+table[data-v-400fd39c] {
+    border-collapse: collapse
+}
+
+caption[data-v-400fd39c] {
+    padding-top: .75em;
+    padding-bottom: .3em;
+    color: rgba(0,0,0,.45);
+    text-align: left;
+    caption-side: bottom
+}
+
+th[data-v-400fd39c] {
+    text-align: inherit
+}
+
+button[data-v-400fd39c], input[data-v-400fd39c], optgroup[data-v-400fd39c], select[data-v-400fd39c], textarea[data-v-400fd39c] {
+    margin: 0;
+    color: inherit;
+    font-size: inherit;
+    font-family: inherit;
+    line-height: inherit
+}
+
+button[data-v-400fd39c], input[data-v-400fd39c] {
+    overflow: visible
+}
+
+button[data-v-400fd39c], select[data-v-400fd39c] {
+    text-transform: none
+}
+
+[type=reset][data-v-400fd39c], [type=submit][data-v-400fd39c], button[data-v-400fd39c], html [type=button][data-v-400fd39c] {
+    -webkit-appearance: button
+}
+
+    [type=button][data-v-400fd39c]::-moz-focus-inner, [type=reset][data-v-400fd39c]::-moz-focus-inner, [type=submit][data-v-400fd39c]::-moz-focus-inner, button[data-v-400fd39c]::-moz-focus-inner {
+        padding: 0;
+        border-style: none
+    }
+
+input[type=checkbox][data-v-400fd39c], input[type=radio][data-v-400fd39c] {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding: 0
+}
+
+input[type=date][data-v-400fd39c], input[type=datetime-local][data-v-400fd39c], input[type=month][data-v-400fd39c], input[type=time][data-v-400fd39c] {
+    -webkit-appearance: listbox
+}
+
+textarea[data-v-400fd39c] {
+    overflow: auto;
+    resize: vertical
+}
+
+fieldset[data-v-400fd39c] {
+    min-width: 0;
+    margin: 0;
+    padding: 0;
+    border: 0
+}
+
+legend[data-v-400fd39c] {
+    display: block;
+    width: 100%;
+    max-width: 100%;
+    margin-bottom: .5em;
+    padding: 0;
+    color: inherit;
+    font-size: 1.5em;
+    line-height: inherit;
+    white-space: normal
+}
+
+progress[data-v-400fd39c] {
+    vertical-align: baseline
+}
+
+[type=number][data-v-400fd39c]::-webkit-inner-spin-button, [type=number][data-v-400fd39c]::-webkit-outer-spin-button {
+    height: auto
+}
+
+[type=search][data-v-400fd39c] {
+    outline-offset: -2px;
+    -webkit-appearance: none
+}
+
+    [type=search][data-v-400fd39c]::-webkit-search-cancel-button, [type=search][data-v-400fd39c]::-webkit-search-decoration {
+        -webkit-appearance: none
+    }
+
+[data-v-400fd39c]::-webkit-file-upload-button {
+    font: inherit;
+    -webkit-appearance: button
+}
+
+output[data-v-400fd39c] {
+    display: inline-block
+}
+
+summary[data-v-400fd39c] {
+    display: list-item
+}
+
+template[data-v-400fd39c] {
+    display: none
+}
+
+[hidden][data-v-400fd39c] {
+    display: none !important
+}
+
+mark[data-v-400fd39c] {
+    padding: .2em;
+    background-color: #feffe6
+}
+
+[data-v-400fd39c]::-moz-selection {
+    color: #fff;
+    background: #fa541c
+}
+
+[data-v-400fd39c]::selection {
+    color: #fff;
+    background: #fa541c
+}
+
+.clearfix[data-v-400fd39c] {
+    zoom: 1
+}
+
+    .clearfix[data-v-400fd39c]:after, .clearfix[data-v-400fd39c]:before {
+        display: table;
+        content: ""
+    }
+
+    .clearfix[data-v-400fd39c]:after {
+        clear: both
+    }
+
+.anticon[data-v-400fd39c] {
+    display: inline-block;
+    color: inherit;
+    font-style: normal;
+    line-height: 0;
+    text-align: center;
+    text-transform: none;
+    vertical-align: -.125em;
+    text-rendering: optimizeLegibility;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale
+}
+
+.anticon > [data-v-400fd39c] {
+    line-height: 1
+}
+
+.anticon svg[data-v-400fd39c] {
+    display: inline-block
+}
+
+.anticon[data-v-400fd39c]:before {
+    display: none
+}
+
+.anticon .anticon-icon[data-v-400fd39c] {
+    display: block
+}
+
+.anticon[tabindex][data-v-400fd39c] {
+    cursor: pointer
+}
+
+.anticon-spin[data-v-400fd39c], .anticon-spin[data-v-400fd39c]:before {
+    display: inline-block;
+    -webkit-animation: loadingCircle-data-v-400fd39c 1s linear infinite;
+    animation: loadingCircle-data-v-400fd39c 1s linear infinite
+}
+
+.fade-appear[data-v-400fd39c], .fade-enter[data-v-400fd39c], .fade-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.fade-appear.fade-appear-active[data-v-400fd39c], .fade-enter.fade-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antFadeIn-data-v-400fd39c;
+    animation-name: antFadeIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.fade-leave.fade-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antFadeOut-data-v-400fd39c;
+    animation-name: antFadeOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.fade-appear[data-v-400fd39c], .fade-enter[data-v-400fd39c] {
+    opacity: 0
+}
+
+.fade-appear[data-v-400fd39c], .fade-enter[data-v-400fd39c], .fade-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: linear;
+    animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn-data-v-400fd39c {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@keyframes antFadeIn-data-v-400fd39c {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antFadeOut-data-v-400fd39c {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes antFadeOut-data-v-400fd39c {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+.move-up-appear[data-v-400fd39c], .move-up-enter[data-v-400fd39c], .move-up-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-up-appear.move-up-appear-active[data-v-400fd39c], .move-up-enter.move-up-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antMoveUpIn-data-v-400fd39c;
+    animation-name: antMoveUpIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-up-leave.move-up-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antMoveUpOut-data-v-400fd39c;
+    animation-name: antMoveUpOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-up-appear[data-v-400fd39c], .move-up-enter[data-v-400fd39c] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear[data-v-400fd39c], .move-down-enter[data-v-400fd39c], .move-down-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-down-appear.move-down-appear-active[data-v-400fd39c], .move-down-enter.move-down-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antMoveDownIn-data-v-400fd39c;
+    animation-name: antMoveDownIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-down-leave.move-down-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antMoveDownOut-data-v-400fd39c;
+    animation-name: antMoveDownOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-down-appear[data-v-400fd39c], .move-down-enter[data-v-400fd39c] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear[data-v-400fd39c], .move-left-enter[data-v-400fd39c], .move-left-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-left-appear.move-left-appear-active[data-v-400fd39c], .move-left-enter.move-left-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antMoveLeftIn-data-v-400fd39c;
+    animation-name: antMoveLeftIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-left-leave.move-left-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antMoveLeftOut-data-v-400fd39c;
+    animation-name: antMoveLeftOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-left-appear[data-v-400fd39c], .move-left-enter[data-v-400fd39c] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear[data-v-400fd39c], .move-right-enter[data-v-400fd39c], .move-right-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-right-appear.move-right-appear-active[data-v-400fd39c], .move-right-enter.move-right-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antMoveRightIn-data-v-400fd39c;
+    animation-name: antMoveRightIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-right-leave.move-right-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antMoveRightOut-data-v-400fd39c;
+    animation-name: antMoveRightOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-right-appear[data-v-400fd39c], .move-right-enter[data-v-400fd39c] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveDownIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveDownOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveDownOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveLeftIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveLeftIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveLeftOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveLeftOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveRightIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveRightIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveRightOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveRightOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveUpIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveUpIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveUpOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveUpOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes loadingCircle-data-v-400fd39c {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+@keyframes loadingCircle-data-v-400fd39c {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+[ant-click-animating-without-extra-node=true][data-v-400fd39c], [ant-click-animating=true][data-v-400fd39c] {
+    position: relative
+}
+
+html[data-v-400fd39c] {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-400fd39c], [ant-click-animating-without-extra-node=true][data-v-400fd39c]:after {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    display: block;
+    border-radius: inherit;
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c;
+    -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    opacity: .2;
+    -webkit-animation: fadeEffect-data-v-400fd39c 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-400fd39c .4s cubic-bezier(.08,.82,.17,1);
+    animation: fadeEffect-data-v-400fd39c 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-400fd39c .4s cubic-bezier(.08,.82,.17,1);
+    -webkit-animation-fill-mode: forwards;
+    animation-fill-mode: forwards;
+    content: "";
+    pointer-events: none
+}
+
+@-webkit-keyframes waveEffect-data-v-400fd39c {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@keyframes waveEffect-data-v-400fd39c {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@-webkit-keyframes fadeEffect-data-v-400fd39c {
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes fadeEffect-data-v-400fd39c {
+    to {
+        opacity: 0
+    }
+}
+
+.slide-up-appear[data-v-400fd39c], .slide-up-enter[data-v-400fd39c], .slide-up-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-up-appear.slide-up-appear-active[data-v-400fd39c], .slide-up-enter.slide-up-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antSlideUpIn-data-v-400fd39c;
+    animation-name: antSlideUpIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-up-leave.slide-up-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antSlideUpOut-data-v-400fd39c;
+    animation-name: antSlideUpOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-up-appear[data-v-400fd39c], .slide-up-enter[data-v-400fd39c] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear[data-v-400fd39c], .slide-down-enter[data-v-400fd39c], .slide-down-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-down-appear.slide-down-appear-active[data-v-400fd39c], .slide-down-enter.slide-down-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antSlideDownIn-data-v-400fd39c;
+    animation-name: antSlideDownIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-down-leave.slide-down-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antSlideDownOut-data-v-400fd39c;
+    animation-name: antSlideDownOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-down-appear[data-v-400fd39c], .slide-down-enter[data-v-400fd39c] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear[data-v-400fd39c], .slide-left-enter[data-v-400fd39c], .slide-left-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-left-appear.slide-left-appear-active[data-v-400fd39c], .slide-left-enter.slide-left-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antSlideLeftIn-data-v-400fd39c;
+    animation-name: antSlideLeftIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-left-leave.slide-left-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antSlideLeftOut-data-v-400fd39c;
+    animation-name: antSlideLeftOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-left-appear[data-v-400fd39c], .slide-left-enter[data-v-400fd39c] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear[data-v-400fd39c], .slide-right-enter[data-v-400fd39c], .slide-right-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-right-appear.slide-right-appear-active[data-v-400fd39c], .slide-right-enter.slide-right-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antSlideRightIn-data-v-400fd39c;
+    animation-name: antSlideRightIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-right-leave.slide-right-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antSlideRightOut-data-v-400fd39c;
+    animation-name: antSlideRightOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-right-appear[data-v-400fd39c], .slide-right-enter[data-v-400fd39c] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideUpIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideUpOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideUpOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideDownIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideDownIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideDownOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideDownOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideLeftIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideLeftIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideLeftOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideLeftOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideRightIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideRightIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideRightOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideRightOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+.swing-appear[data-v-400fd39c], .swing-enter[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.swing-appear.swing-appear-active[data-v-400fd39c], .swing-enter.swing-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antSwingIn-data-v-400fd39c;
+    animation-name: antSwingIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+@-webkit-keyframes antSwingIn-data-v-400fd39c {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+@keyframes antSwingIn-data-v-400fd39c {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+.zoom-appear[data-v-400fd39c], .zoom-enter[data-v-400fd39c], .zoom-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-appear.zoom-appear-active[data-v-400fd39c], .zoom-enter.zoom-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antZoomIn-data-v-400fd39c;
+    animation-name: antZoomIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-leave.zoom-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antZoomOut-data-v-400fd39c;
+    animation-name: antZoomOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-appear[data-v-400fd39c], .zoom-enter[data-v-400fd39c] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear[data-v-400fd39c], .zoom-big-enter[data-v-400fd39c], .zoom-big-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-big-appear.zoom-big-appear-active[data-v-400fd39c], .zoom-big-enter.zoom-big-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antZoomBigIn-data-v-400fd39c;
+    animation-name: antZoomBigIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-big-leave.zoom-big-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antZoomBigOut-data-v-400fd39c;
+    animation-name: antZoomBigOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-big-appear[data-v-400fd39c], .zoom-big-enter[data-v-400fd39c] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear[data-v-400fd39c], .zoom-big-fast-enter[data-v-400fd39c], .zoom-big-fast-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .1s;
+    animation-duration: .1s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-big-fast-appear.zoom-big-fast-appear-active[data-v-400fd39c], .zoom-big-fast-enter.zoom-big-fast-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antZoomBigIn-data-v-400fd39c;
+    animation-name: antZoomBigIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-big-fast-leave.zoom-big-fast-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antZoomBigOut-data-v-400fd39c;
+    animation-name: antZoomBigOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-big-fast-appear[data-v-400fd39c], .zoom-big-fast-enter[data-v-400fd39c] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear[data-v-400fd39c], .zoom-up-enter[data-v-400fd39c], .zoom-up-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-up-appear.zoom-up-appear-active[data-v-400fd39c], .zoom-up-enter.zoom-up-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antZoomUpIn-data-v-400fd39c;
+    animation-name: antZoomUpIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-up-leave.zoom-up-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antZoomUpOut-data-v-400fd39c;
+    animation-name: antZoomUpOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-up-appear[data-v-400fd39c], .zoom-up-enter[data-v-400fd39c] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear[data-v-400fd39c], .zoom-down-enter[data-v-400fd39c], .zoom-down-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-down-appear.zoom-down-appear-active[data-v-400fd39c], .zoom-down-enter.zoom-down-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antZoomDownIn-data-v-400fd39c;
+    animation-name: antZoomDownIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-down-leave.zoom-down-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antZoomDownOut-data-v-400fd39c;
+    animation-name: antZoomDownOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-down-appear[data-v-400fd39c], .zoom-down-enter[data-v-400fd39c] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear[data-v-400fd39c], .zoom-left-enter[data-v-400fd39c], .zoom-left-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-left-appear.zoom-left-appear-active[data-v-400fd39c], .zoom-left-enter.zoom-left-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antZoomLeftIn-data-v-400fd39c;
+    animation-name: antZoomLeftIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-left-leave.zoom-left-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antZoomLeftOut-data-v-400fd39c;
+    animation-name: antZoomLeftOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-left-appear[data-v-400fd39c], .zoom-left-enter[data-v-400fd39c] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear[data-v-400fd39c], .zoom-right-enter[data-v-400fd39c], .zoom-right-leave[data-v-400fd39c] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-right-appear.zoom-right-appear-active[data-v-400fd39c], .zoom-right-enter.zoom-right-enter-active[data-v-400fd39c] {
+    -webkit-animation-name: antZoomRightIn-data-v-400fd39c;
+    animation-name: antZoomRightIn-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-right-leave.zoom-right-leave-active[data-v-400fd39c] {
+    -webkit-animation-name: antZoomRightOut-data-v-400fd39c;
+    animation-name: antZoomRightOut-data-v-400fd39c;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-right-appear[data-v-400fd39c], .zoom-right-enter[data-v-400fd39c] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave[data-v-400fd39c] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomBigIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomBigIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomBigOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomBigOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomUpIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@keyframes antZoomUpIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@-webkit-keyframes antZoomUpOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomUpOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomLeftIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@keyframes antZoomLeftIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@-webkit-keyframes antZoomLeftOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomLeftOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomRightIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@keyframes antZoomRightIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@-webkit-keyframes antZoomRightOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomRightOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomDownIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@keyframes antZoomDownIn-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@-webkit-keyframes antZoomDownOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomDownOut-data-v-400fd39c {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+.ant-motion-collapse-legacy[data-v-400fd39c] {
+    overflow: hidden
+}
+
+.ant-motion-collapse-legacy-active[data-v-400fd39c], .ant-motion-collapse[data-v-400fd39c] {
+    -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+    transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse[data-v-400fd39c] {
+    overflow: hidden
+}
+
+.antd-pro-components-standard-form-row-index-standardFormRow[data-v-400fd39c] {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    margin-bottom: 16px;
+    padding-bottom: 16px;
+    border-bottom: 1px dashed #e8e8e8
+}
+
+    .antd-pro-components-standard-form-row-index-standardFormRow[data-v-400fd39c] .ant-form-item {
+        margin-right: 24px
+    }
+
+    .antd-pro-components-standard-form-row-index-standardFormRow[data-v-400fd39c] .ant-form-item-label label {
+        margin-right: 0;
+        color: rgba(0,0,0,.65)
+    }
+
+    .antd-pro-components-standard-form-row-index-standardFormRow .ant-form-item-control[data-v-400fd39c], .antd-pro-components-standard-form-row-index-standardFormRow[data-v-400fd39c] .ant-form-item-label {
+        padding: 0;
+        line-height: 32px
+    }
+
+.antd-pro-components-standard-form-row-index-standardFormRow .antd-pro-components-standard-form-row-index-label[data-v-400fd39c] {
+    -webkit-box-flex: 0;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    margin-right: 24px;
+    color: rgba(0,0,0,.85);
+    font-size: 14px;
+    text-align: right
+}
+
+.antd-pro-components-standard-form-row-index-standardFormRow .antd-pro-components-standard-form-row-index-label > span[data-v-400fd39c] {
+    display: inline-block;
+    height: 32px;
+    line-height: 32px
+}
+
+    .antd-pro-components-standard-form-row-index-standardFormRow .antd-pro-components-standard-form-row-index-label > span[data-v-400fd39c]:after {
+        content: "锛�"
+    }
+
+.antd-pro-components-standard-form-row-index-standardFormRow .antd-pro-components-standard-form-row-index-content[data-v-400fd39c] {
+    -webkit-box-flex: 1;
+    -ms-flex: 1 1 0px;
+    flex: 1 1 0
+}
+
+    .antd-pro-components-standard-form-row-index-standardFormRow .antd-pro-components-standard-form-row-index-content[data-v-400fd39c] .ant-form-item:last-child {
+        margin-right: 0
+    }
+
+.antd-pro-components-standard-form-row-index-standardFormRow.antd-pro-components-standard-form-row-index-standardFormRowLast[data-v-400fd39c] {
+    margin-bottom: 0;
+    padding-bottom: 0;
+    border: none
+}
+
+.antd-pro-components-standard-form-row-index-standardFormRow.antd-pro-components-standard-form-row-index-standardFormRowBlock[data-v-400fd39c] .ant-form-item, .antd-pro-components-standard-form-row-index-standardFormRow.antd-pro-components-standard-form-row-index-standardFormRowBlock div.ant-form-item-control-wrapper[data-v-400fd39c], .antd-pro-components-standard-form-row-index-standardFormRow.antd-pro-components-standard-form-row-index-standardFormRowGrid[data-v-400fd39c] .ant-form-item, .antd-pro-components-standard-form-row-index-standardFormRow.antd-pro-components-standard-form-row-index-standardFormRowGrid div.ant-form-item-control-wrapper[data-v-400fd39c] {
+    display: block
+}
+
+.antd-pro-components-standard-form-row-index-standardFormRow.antd-pro-components-standard-form-row-index-standardFormRowGrid[data-v-400fd39c] .ant-form-item-label {
+    float: left
+}
+
+body[data-v-0d752822], html[data-v-0d752822] {
+    width: 100%;
+    height: 100%
+}
+
+input[data-v-0d752822]::-ms-clear, input[data-v-0d752822]::-ms-reveal {
+    display: none
+}
+
+[data-v-0d752822], [data-v-0d752822]:after, [data-v-0d752822]:before {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+html[data-v-0d752822] {
+    font-family: sans-serif;
+    line-height: 1.15;
+    -webkit-text-size-adjust: 100%;
+    -ms-text-size-adjust: 100%;
+    -ms-overflow-style: scrollbar;
+    -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+@-ms-viewport {
+    width: device-width
+}
+
+article[data-v-0d752822], aside[data-v-0d752822], dialog[data-v-0d752822], figcaption[data-v-0d752822], figure[data-v-0d752822], footer[data-v-0d752822], header[data-v-0d752822], hgroup[data-v-0d752822], main[data-v-0d752822], nav[data-v-0d752822], section[data-v-0d752822] {
+    display: block
+}
+
+body[data-v-0d752822] {
+    margin: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    background-color: #fff;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+[tabindex="-1"][data-v-0d752822]:focus {
+    outline: none !important
+}
+
+hr[data-v-0d752822] {
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+    overflow: visible
+}
+
+h1[data-v-0d752822], h2[data-v-0d752822], h3[data-v-0d752822], h4[data-v-0d752822], h5[data-v-0d752822], h6[data-v-0d752822] {
+    margin-top: 0;
+    margin-bottom: .5em;
+    color: rgba(0,0,0,.85);
+    font-weight: 500
+}
+
+p[data-v-0d752822] {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+abbr[data-original-title][data-v-0d752822], abbr[title][data-v-0d752822] {
+    text-decoration: underline;
+    -webkit-text-decoration: underline dotted;
+    text-decoration: underline dotted;
+    border-bottom: 0;
+    cursor: help
+}
+
+address[data-v-0d752822] {
+    margin-bottom: 1em;
+    font-style: normal;
+    line-height: inherit
+}
+
+input[type=number][data-v-0d752822], input[type=password][data-v-0d752822], input[type=text][data-v-0d752822], textarea[data-v-0d752822] {
+    -webkit-appearance: none
+}
+
+dl[data-v-0d752822], ol[data-v-0d752822], ul[data-v-0d752822] {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+ol ol[data-v-0d752822], ol ul[data-v-0d752822], ul ol[data-v-0d752822], ul ul[data-v-0d752822] {
+    margin-bottom: 0
+}
+
+dt[data-v-0d752822] {
+    font-weight: 500
+}
+
+dd[data-v-0d752822] {
+    margin-bottom: .5em;
+    margin-left: 0
+}
+
+blockquote[data-v-0d752822] {
+    margin: 0 0 1em
+}
+
+dfn[data-v-0d752822] {
+    font-style: italic
+}
+
+b[data-v-0d752822], strong[data-v-0d752822] {
+    font-weight: bolder
+}
+
+small[data-v-0d752822] {
+    font-size: 80%
+}
+
+sub[data-v-0d752822], sup[data-v-0d752822] {
+    position: relative;
+    font-size: 75%;
+    line-height: 0;
+    vertical-align: baseline
+}
+
+sub[data-v-0d752822] {
+    bottom: -.25em
+}
+
+sup[data-v-0d752822] {
+    top: -.5em
+}
+
+a[data-v-0d752822] {
+    color: #fa541c;
+    text-decoration: none;
+    background-color: transparent;
+    outline: none;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s;
+    -webkit-text-decoration-skip: objects
+}
+
+    a[data-v-0d752822]:hover {
+        color: #ff7a45
+    }
+
+    a[data-v-0d752822]:active {
+        color: #d4380d
+    }
+
+    a[data-v-0d752822]:active, a[data-v-0d752822]:hover {
+        text-decoration: none;
+        outline: 0
+    }
+
+a[disabled][data-v-0d752822] {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed;
+    pointer-events: none
+}
+
+code[data-v-0d752822], kbd[data-v-0d752822], pre[data-v-0d752822], samp[data-v-0d752822] {
+    font-size: 1em;
+    font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre[data-v-0d752822] {
+    margin-top: 0;
+    margin-bottom: 1em;
+    overflow: auto
+}
+
+figure[data-v-0d752822] {
+    margin: 0 0 1em
+}
+
+img[data-v-0d752822] {
+    vertical-align: middle;
+    border-style: none
+}
+
+svg[data-v-0d752822]:not(:root) {
+    overflow: hidden
+}
+
+[role=button][data-v-0d752822], a[data-v-0d752822], area[data-v-0d752822], button[data-v-0d752822], input[data-v-0d752822]:not([type=range]), label[data-v-0d752822], select[data-v-0d752822], summary[data-v-0d752822], textarea[data-v-0d752822] {
+    -ms-touch-action: manipulation;
+    touch-action: manipulation
+}
+
+table[data-v-0d752822] {
+    border-collapse: collapse
+}
+
+caption[data-v-0d752822] {
+    padding-top: .75em;
+    padding-bottom: .3em;
+    color: rgba(0,0,0,.45);
+    text-align: left;
+    caption-side: bottom
+}
+
+th[data-v-0d752822] {
+    text-align: inherit
+}
+
+button[data-v-0d752822], input[data-v-0d752822], optgroup[data-v-0d752822], select[data-v-0d752822], textarea[data-v-0d752822] {
+    margin: 0;
+    color: inherit;
+    font-size: inherit;
+    font-family: inherit;
+    line-height: inherit
+}
+
+button[data-v-0d752822], input[data-v-0d752822] {
+    overflow: visible
+}
+
+button[data-v-0d752822], select[data-v-0d752822] {
+    text-transform: none
+}
+
+[type=reset][data-v-0d752822], [type=submit][data-v-0d752822], button[data-v-0d752822], html [type=button][data-v-0d752822] {
+    -webkit-appearance: button
+}
+
+    [type=button][data-v-0d752822]::-moz-focus-inner, [type=reset][data-v-0d752822]::-moz-focus-inner, [type=submit][data-v-0d752822]::-moz-focus-inner, button[data-v-0d752822]::-moz-focus-inner {
+        padding: 0;
+        border-style: none
+    }
+
+input[type=checkbox][data-v-0d752822], input[type=radio][data-v-0d752822] {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding: 0
+}
+
+input[type=date][data-v-0d752822], input[type=datetime-local][data-v-0d752822], input[type=month][data-v-0d752822], input[type=time][data-v-0d752822] {
+    -webkit-appearance: listbox
+}
+
+textarea[data-v-0d752822] {
+    overflow: auto;
+    resize: vertical
+}
+
+fieldset[data-v-0d752822] {
+    min-width: 0;
+    margin: 0;
+    padding: 0;
+    border: 0
+}
+
+legend[data-v-0d752822] {
+    display: block;
+    width: 100%;
+    max-width: 100%;
+    margin-bottom: .5em;
+    padding: 0;
+    color: inherit;
+    font-size: 1.5em;
+    line-height: inherit;
+    white-space: normal
+}
+
+progress[data-v-0d752822] {
+    vertical-align: baseline
+}
+
+[type=number][data-v-0d752822]::-webkit-inner-spin-button, [type=number][data-v-0d752822]::-webkit-outer-spin-button {
+    height: auto
+}
+
+[type=search][data-v-0d752822] {
+    outline-offset: -2px;
+    -webkit-appearance: none
+}
+
+    [type=search][data-v-0d752822]::-webkit-search-cancel-button, [type=search][data-v-0d752822]::-webkit-search-decoration {
+        -webkit-appearance: none
+    }
+
+[data-v-0d752822]::-webkit-file-upload-button {
+    font: inherit;
+    -webkit-appearance: button
+}
+
+output[data-v-0d752822] {
+    display: inline-block
+}
+
+summary[data-v-0d752822] {
+    display: list-item
+}
+
+template[data-v-0d752822] {
+    display: none
+}
+
+[hidden][data-v-0d752822] {
+    display: none !important
+}
+
+mark[data-v-0d752822] {
+    padding: .2em;
+    background-color: #feffe6
+}
+
+[data-v-0d752822]::-moz-selection {
+    color: #fff;
+    background: #fa541c
+}
+
+[data-v-0d752822]::selection {
+    color: #fff;
+    background: #fa541c
+}
+
+.clearfix[data-v-0d752822] {
+    zoom: 1
+}
+
+    .clearfix[data-v-0d752822]:after, .clearfix[data-v-0d752822]:before {
+        display: table;
+        content: ""
+    }
+
+    .clearfix[data-v-0d752822]:after {
+        clear: both
+    }
+
+.anticon[data-v-0d752822] {
+    display: inline-block;
+    color: inherit;
+    font-style: normal;
+    line-height: 0;
+    text-align: center;
+    text-transform: none;
+    vertical-align: -.125em;
+    text-rendering: optimizeLegibility;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale
+}
+
+.anticon > [data-v-0d752822] {
+    line-height: 1
+}
+
+.anticon svg[data-v-0d752822] {
+    display: inline-block
+}
+
+.anticon[data-v-0d752822]:before {
+    display: none
+}
+
+.anticon .anticon-icon[data-v-0d752822] {
+    display: block
+}
+
+.anticon[tabindex][data-v-0d752822] {
+    cursor: pointer
+}
+
+.anticon-spin[data-v-0d752822], .anticon-spin[data-v-0d752822]:before {
+    display: inline-block;
+    -webkit-animation: loadingCircle-data-v-0d752822 1s linear infinite;
+    animation: loadingCircle-data-v-0d752822 1s linear infinite
+}
+
+.fade-appear[data-v-0d752822], .fade-enter[data-v-0d752822], .fade-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.fade-appear.fade-appear-active[data-v-0d752822], .fade-enter.fade-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antFadeIn-data-v-0d752822;
+    animation-name: antFadeIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.fade-leave.fade-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antFadeOut-data-v-0d752822;
+    animation-name: antFadeOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.fade-appear[data-v-0d752822], .fade-enter[data-v-0d752822] {
+    opacity: 0
+}
+
+.fade-appear[data-v-0d752822], .fade-enter[data-v-0d752822], .fade-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: linear;
+    animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn-data-v-0d752822 {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@keyframes antFadeIn-data-v-0d752822 {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antFadeOut-data-v-0d752822 {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes antFadeOut-data-v-0d752822 {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+.move-up-appear[data-v-0d752822], .move-up-enter[data-v-0d752822], .move-up-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-up-appear.move-up-appear-active[data-v-0d752822], .move-up-enter.move-up-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antMoveUpIn-data-v-0d752822;
+    animation-name: antMoveUpIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-up-leave.move-up-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antMoveUpOut-data-v-0d752822;
+    animation-name: antMoveUpOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-up-appear[data-v-0d752822], .move-up-enter[data-v-0d752822] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear[data-v-0d752822], .move-down-enter[data-v-0d752822], .move-down-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-down-appear.move-down-appear-active[data-v-0d752822], .move-down-enter.move-down-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antMoveDownIn-data-v-0d752822;
+    animation-name: antMoveDownIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-down-leave.move-down-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antMoveDownOut-data-v-0d752822;
+    animation-name: antMoveDownOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-down-appear[data-v-0d752822], .move-down-enter[data-v-0d752822] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear[data-v-0d752822], .move-left-enter[data-v-0d752822], .move-left-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-left-appear.move-left-appear-active[data-v-0d752822], .move-left-enter.move-left-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antMoveLeftIn-data-v-0d752822;
+    animation-name: antMoveLeftIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-left-leave.move-left-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antMoveLeftOut-data-v-0d752822;
+    animation-name: antMoveLeftOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-left-appear[data-v-0d752822], .move-left-enter[data-v-0d752822] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear[data-v-0d752822], .move-right-enter[data-v-0d752822], .move-right-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.move-right-appear.move-right-appear-active[data-v-0d752822], .move-right-enter.move-right-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antMoveRightIn-data-v-0d752822;
+    animation-name: antMoveRightIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.move-right-leave.move-right-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antMoveRightOut-data-v-0d752822;
+    animation-name: antMoveRightOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.move-right-appear[data-v-0d752822], .move-right-enter[data-v-0d752822] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveDownIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveDownOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveDownOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveLeftIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveLeftIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveLeftOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveLeftOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveRightIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveRightIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveRightOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveRightOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveUpIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveUpIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveUpOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveUpOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes loadingCircle-data-v-0d752822 {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+@keyframes loadingCircle-data-v-0d752822 {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+[ant-click-animating-without-extra-node=true][data-v-0d752822], [ant-click-animating=true][data-v-0d752822] {
+    position: relative
+}
+
+html[data-v-0d752822] {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-0d752822], [ant-click-animating-without-extra-node=true][data-v-0d752822]:after {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    display: block;
+    border-radius: inherit;
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c;
+    -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    opacity: .2;
+    -webkit-animation: fadeEffect-data-v-0d752822 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-0d752822 .4s cubic-bezier(.08,.82,.17,1);
+    animation: fadeEffect-data-v-0d752822 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-0d752822 .4s cubic-bezier(.08,.82,.17,1);
+    -webkit-animation-fill-mode: forwards;
+    animation-fill-mode: forwards;
+    content: "";
+    pointer-events: none
+}
+
+@-webkit-keyframes waveEffect-data-v-0d752822 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@keyframes waveEffect-data-v-0d752822 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@-webkit-keyframes fadeEffect-data-v-0d752822 {
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes fadeEffect-data-v-0d752822 {
+    to {
+        opacity: 0
+    }
+}
+
+.slide-up-appear[data-v-0d752822], .slide-up-enter[data-v-0d752822], .slide-up-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-up-appear.slide-up-appear-active[data-v-0d752822], .slide-up-enter.slide-up-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antSlideUpIn-data-v-0d752822;
+    animation-name: antSlideUpIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-up-leave.slide-up-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antSlideUpOut-data-v-0d752822;
+    animation-name: antSlideUpOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-up-appear[data-v-0d752822], .slide-up-enter[data-v-0d752822] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear[data-v-0d752822], .slide-down-enter[data-v-0d752822], .slide-down-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-down-appear.slide-down-appear-active[data-v-0d752822], .slide-down-enter.slide-down-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antSlideDownIn-data-v-0d752822;
+    animation-name: antSlideDownIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-down-leave.slide-down-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antSlideDownOut-data-v-0d752822;
+    animation-name: antSlideDownOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-down-appear[data-v-0d752822], .slide-down-enter[data-v-0d752822] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear[data-v-0d752822], .slide-left-enter[data-v-0d752822], .slide-left-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-left-appear.slide-left-appear-active[data-v-0d752822], .slide-left-enter.slide-left-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antSlideLeftIn-data-v-0d752822;
+    animation-name: antSlideLeftIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-left-leave.slide-left-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antSlideLeftOut-data-v-0d752822;
+    animation-name: antSlideLeftOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-left-appear[data-v-0d752822], .slide-left-enter[data-v-0d752822] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear[data-v-0d752822], .slide-right-enter[data-v-0d752822], .slide-right-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.slide-right-appear.slide-right-appear-active[data-v-0d752822], .slide-right-enter.slide-right-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antSlideRightIn-data-v-0d752822;
+    animation-name: antSlideRightIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.slide-right-leave.slide-right-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antSlideRightOut-data-v-0d752822;
+    animation-name: antSlideRightOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.slide-right-appear[data-v-0d752822], .slide-right-enter[data-v-0d752822] {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideUpIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideUpOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideUpOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideDownIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideDownIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideDownOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideDownOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideLeftIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideLeftIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideLeftOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideLeftOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideRightIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideRightIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideRightOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideRightOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+.swing-appear[data-v-0d752822], .swing-enter[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.swing-appear.swing-appear-active[data-v-0d752822], .swing-enter.swing-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antSwingIn-data-v-0d752822;
+    animation-name: antSwingIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+@-webkit-keyframes antSwingIn-data-v-0d752822 {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+@keyframes antSwingIn-data-v-0d752822 {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+.zoom-appear[data-v-0d752822], .zoom-enter[data-v-0d752822], .zoom-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-appear.zoom-appear-active[data-v-0d752822], .zoom-enter.zoom-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antZoomIn-data-v-0d752822;
+    animation-name: antZoomIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-leave.zoom-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antZoomOut-data-v-0d752822;
+    animation-name: antZoomOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-appear[data-v-0d752822], .zoom-enter[data-v-0d752822] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear[data-v-0d752822], .zoom-big-enter[data-v-0d752822], .zoom-big-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-big-appear.zoom-big-appear-active[data-v-0d752822], .zoom-big-enter.zoom-big-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antZoomBigIn-data-v-0d752822;
+    animation-name: antZoomBigIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-big-leave.zoom-big-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antZoomBigOut-data-v-0d752822;
+    animation-name: antZoomBigOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-big-appear[data-v-0d752822], .zoom-big-enter[data-v-0d752822] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear[data-v-0d752822], .zoom-big-fast-enter[data-v-0d752822], .zoom-big-fast-leave[data-v-0d752822] {
+    -webkit-animation-duration: .1s;
+    animation-duration: .1s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-big-fast-appear.zoom-big-fast-appear-active[data-v-0d752822], .zoom-big-fast-enter.zoom-big-fast-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antZoomBigIn-data-v-0d752822;
+    animation-name: antZoomBigIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-big-fast-leave.zoom-big-fast-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antZoomBigOut-data-v-0d752822;
+    animation-name: antZoomBigOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-big-fast-appear[data-v-0d752822], .zoom-big-fast-enter[data-v-0d752822] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear[data-v-0d752822], .zoom-up-enter[data-v-0d752822], .zoom-up-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-up-appear.zoom-up-appear-active[data-v-0d752822], .zoom-up-enter.zoom-up-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antZoomUpIn-data-v-0d752822;
+    animation-name: antZoomUpIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-up-leave.zoom-up-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antZoomUpOut-data-v-0d752822;
+    animation-name: antZoomUpOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-up-appear[data-v-0d752822], .zoom-up-enter[data-v-0d752822] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear[data-v-0d752822], .zoom-down-enter[data-v-0d752822], .zoom-down-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-down-appear.zoom-down-appear-active[data-v-0d752822], .zoom-down-enter.zoom-down-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antZoomDownIn-data-v-0d752822;
+    animation-name: antZoomDownIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-down-leave.zoom-down-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antZoomDownOut-data-v-0d752822;
+    animation-name: antZoomDownOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-down-appear[data-v-0d752822], .zoom-down-enter[data-v-0d752822] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear[data-v-0d752822], .zoom-left-enter[data-v-0d752822], .zoom-left-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-left-appear.zoom-left-appear-active[data-v-0d752822], .zoom-left-enter.zoom-left-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antZoomLeftIn-data-v-0d752822;
+    animation-name: antZoomLeftIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-left-leave.zoom-left-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antZoomLeftOut-data-v-0d752822;
+    animation-name: antZoomLeftOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-left-appear[data-v-0d752822], .zoom-left-enter[data-v-0d752822] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear[data-v-0d752822], .zoom-right-enter[data-v-0d752822], .zoom-right-leave[data-v-0d752822] {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-right-appear.zoom-right-appear-active[data-v-0d752822], .zoom-right-enter.zoom-right-enter-active[data-v-0d752822] {
+    -webkit-animation-name: antZoomRightIn-data-v-0d752822;
+    animation-name: antZoomRightIn-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.zoom-right-leave.zoom-right-leave-active[data-v-0d752822] {
+    -webkit-animation-name: antZoomRightOut-data-v-0d752822;
+    animation-name: antZoomRightOut-data-v-0d752822;
+    -webkit-animation-play-state: running;
+    animation-play-state: running;
+    pointer-events: none
+}
+
+.zoom-right-appear[data-v-0d752822], .zoom-right-enter[data-v-0d752822] {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave[data-v-0d752822] {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomBigIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomBigIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomBigOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomBigOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomUpIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@keyframes antZoomUpIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@-webkit-keyframes antZoomUpOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomUpOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomLeftIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@keyframes antZoomLeftIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@-webkit-keyframes antZoomLeftOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomLeftOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomRightIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@keyframes antZoomRightIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@-webkit-keyframes antZoomRightOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomRightOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomDownIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@keyframes antZoomDownIn-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@-webkit-keyframes antZoomDownOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomDownOut-data-v-0d752822 {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+.ant-motion-collapse-legacy[data-v-0d752822] {
+    overflow: hidden
+}
+
+.ant-motion-collapse-legacy-active[data-v-0d752822], .ant-motion-collapse[data-v-0d752822] {
+    -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+    transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse[data-v-0d752822] {
+    overflow: hidden
+}
+
+.antd-pro-components-article-list-content-index-listContent .description[data-v-0d752822] {
+    max-width: 720px;
+    line-height: 22px
+}
+
+.antd-pro-components-article-list-content-index-listContent .extra[data-v-0d752822] {
+    margin-top: 16px;
+    color: rgba(0,0,0,.45);
+    line-height: 22px
+}
+
+    .antd-pro-components-article-list-content-index-listContent .extra[data-v-0d752822] .ant-avatar {
+        position: relative;
+        top: 1px;
+        width: 20px;
+        height: 20px;
+        margin-right: 8px;
+        vertical-align: top
+    }
+
+.antd-pro-components-article-list-content-index-listContent .extra > em[data-v-0d752822] {
+    margin-left: 16px;
+    color: rgba(0,0,0,.25);
+    font-style: normal
+}
+
+@media screen and (max-width:480px) {
+    .antd-pro-components-article-list-content-index-listContent .extra > em[data-v-0d752822] {
+        display: block;
+        margin-top: 8px;
+        margin-left: 0
+    }
+}
+
+.w-e-toolbar {
+    -ms-flex-wrap: wrap;
+    flex-wrap: wrap
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css.gz b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css.gz
new file mode 100644
index 0000000..8f5f25f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css.gz
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css
new file mode 100644
index 0000000..73014bb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css
@@ -0,0 +1,845 @@
+.leaflet-image-layer, .leaflet-layer, .leaflet-marker-icon, .leaflet-marker-shadow, .leaflet-pane, .leaflet-pane > canvas, .leaflet-pane > svg, .leaflet-tile, .leaflet-tile-container, .leaflet-zoom-box {
+    position: absolute;
+    left: 0;
+    top: 0
+}
+
+.leaflet-container {
+    overflow: hidden
+}
+
+.leaflet-marker-icon, .leaflet-marker-shadow, .leaflet-tile {
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    -webkit-user-drag: none
+}
+
+    .leaflet-tile::-moz-selection {
+        background: transparent
+    }
+
+    .leaflet-tile::selection {
+        background: transparent
+    }
+
+.leaflet-safari .leaflet-tile {
+    image-rendering: -webkit-optimize-contrast
+}
+
+.leaflet-safari .leaflet-tile-container {
+    width: 1600px;
+    height: 1600px;
+    -webkit-transform-origin: 0 0
+}
+
+.leaflet-marker-icon, .leaflet-marker-shadow {
+    display: block
+}
+
+.leaflet-container .leaflet-marker-pane img, .leaflet-container .leaflet-overlay-pane svg, .leaflet-container .leaflet-shadow-pane img, .leaflet-container .leaflet-tile, .leaflet-container .leaflet-tile-pane img, .leaflet-container img.leaflet-image-layer {
+    max-width: none !important;
+    max-height: none !important
+}
+
+.leaflet-container.leaflet-touch-zoom {
+    -ms-touch-action: pan-x pan-y;
+    touch-action: pan-x pan-y
+}
+
+.leaflet-container.leaflet-touch-drag {
+    -ms-touch-action: pinch-zoom;
+    touch-action: none;
+    touch-action: pinch-zoom
+}
+
+    .leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
+        -ms-touch-action: none;
+        touch-action: none
+    }
+
+.leaflet-container {
+    -webkit-tap-highlight-color: transparent
+}
+
+    .leaflet-container a {
+        -webkit-tap-highlight-color: rgba(51,181,229,.4)
+    }
+
+.leaflet-tile {
+    -webkit-filter: inherit;
+    filter: inherit;
+    visibility: hidden
+}
+
+.leaflet-tile-loaded {
+    visibility: inherit
+}
+
+.leaflet-zoom-box {
+    width: 0;
+    height: 0;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    z-index: 800
+}
+
+.leaflet-overlay-pane svg {
+    -moz-user-select: none
+}
+
+.leaflet-pane {
+    z-index: 400
+}
+
+.leaflet-tile-pane {
+    z-index: 200
+}
+
+.leaflet-overlay-pane {
+    z-index: 400
+}
+
+.leaflet-shadow-pane {
+    z-index: 500
+}
+
+.leaflet-marker-pane {
+    z-index: 600
+}
+
+.leaflet-tooltip-pane {
+    z-index: 650
+}
+
+.leaflet-popup-pane {
+    z-index: 700
+}
+
+.leaflet-map-pane canvas {
+    z-index: 100
+}
+
+.leaflet-map-pane svg {
+    z-index: 200
+}
+
+.leaflet-vml-shape {
+    width: 1px;
+    height: 1px
+}
+
+.lvml {
+    behavior: url(#default#VML);
+    display: inline-block;
+    position: absolute
+}
+
+.leaflet-control {
+    position: relative;
+    z-index: 800;
+    pointer-events: visiblePainted;
+    pointer-events: auto
+}
+
+.leaflet-bottom, .leaflet-top {
+    position: absolute;
+    z-index: 1000;
+    pointer-events: none
+}
+
+.leaflet-top {
+    top: 0
+}
+
+.leaflet-right {
+    right: 0
+}
+
+.leaflet-bottom {
+    bottom: 0
+}
+
+.leaflet-left {
+    left: 0
+}
+
+.leaflet-control {
+    float: left;
+    clear: both
+}
+
+.leaflet-right .leaflet-control {
+    float: right
+}
+
+.leaflet-top .leaflet-control {
+    margin-top: 10px
+}
+
+.leaflet-bottom .leaflet-control {
+    margin-bottom: 10px
+}
+
+.leaflet-left .leaflet-control {
+    margin-left: 10px
+}
+
+.leaflet-right .leaflet-control {
+    margin-right: 10px
+}
+
+.leaflet-fade-anim .leaflet-tile {
+    will-change: opacity
+}
+
+.leaflet-fade-anim .leaflet-popup {
+    opacity: 0;
+    -webkit-transition: opacity .2s linear;
+    transition: opacity .2s linear
+}
+
+.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
+    opacity: 1
+}
+
+.leaflet-zoom-animated {
+    -webkit-transform-origin: 0 0;
+    transform-origin: 0 0
+}
+
+.leaflet-zoom-anim .leaflet-zoom-animated {
+    will-change: transform;
+    -webkit-transition: -webkit-transform .25s cubic-bezier(0,0,.25,1);
+    transition: -webkit-transform .25s cubic-bezier(0,0,.25,1);
+    transition: transform .25s cubic-bezier(0,0,.25,1);
+    transition: transform .25s cubic-bezier(0,0,.25,1),-webkit-transform .25s cubic-bezier(0,0,.25,1)
+}
+
+.leaflet-pan-anim .leaflet-tile, .leaflet-zoom-anim .leaflet-tile {
+    -webkit-transition: none;
+    transition: none
+}
+
+.leaflet-zoom-anim .leaflet-zoom-hide {
+    visibility: hidden
+}
+
+.leaflet-interactive {
+    cursor: pointer
+}
+
+.leaflet-grab {
+    cursor: -webkit-grab;
+    cursor: grab
+}
+
+.leaflet-crosshair, .leaflet-crosshair .leaflet-interactive {
+    cursor: crosshair
+}
+
+.leaflet-control, .leaflet-popup-pane {
+    cursor: auto
+}
+
+.leaflet-dragging .leaflet-grab, .leaflet-dragging .leaflet-grab .leaflet-interactive, .leaflet-dragging .leaflet-marker-draggable {
+    cursor: move;
+    cursor: -webkit-grabbing;
+    cursor: grabbing
+}
+
+.leaflet-image-layer, .leaflet-marker-icon, .leaflet-marker-shadow, .leaflet-pane > svg path, .leaflet-tile-container {
+    pointer-events: none
+}
+
+    .leaflet-image-layer.leaflet-interactive, .leaflet-marker-icon.leaflet-interactive, .leaflet-pane > svg path.leaflet-interactive, svg.leaflet-image-layer.leaflet-interactive path {
+        pointer-events: visiblePainted;
+        pointer-events: auto
+    }
+
+.leaflet-container {
+    background: #ddd;
+    outline: 0
+}
+
+    .leaflet-container a {
+        color: #0078a8
+    }
+
+        .leaflet-container a.leaflet-active {
+            outline: 2px solid orange
+        }
+
+.leaflet-zoom-box {
+    border: 2px dotted #38f;
+    background: hsla(0,0%,100%,.5)
+}
+
+.leaflet-container {
+    font: 12px/1.5 Helvetica Neue,Arial,Helvetica,sans-serif
+}
+
+.leaflet-bar {
+    -webkit-box-shadow: 0 1px 5px rgba(0,0,0,.65);
+    box-shadow: 0 1px 5px rgba(0,0,0,.65);
+    border-radius: 4px
+}
+
+    .leaflet-bar a, .leaflet-bar a:hover {
+        background-color: #fff;
+        border-bottom: 1px solid #ccc;
+        width: 26px;
+        height: 26px;
+        line-height: 26px;
+        display: block;
+        text-align: center;
+        text-decoration: none;
+        color: #000
+    }
+
+    .leaflet-bar a, .leaflet-control-layers-toggle {
+        background-position: 50% 50%;
+        background-repeat: no-repeat;
+        display: block
+    }
+
+        .leaflet-bar a:hover {
+            background-color: #f4f4f4
+        }
+
+        .leaflet-bar a:first-child {
+            border-top-left-radius: 4px;
+            border-top-right-radius: 4px
+        }
+
+        .leaflet-bar a:last-child {
+            border-bottom-left-radius: 4px;
+            border-bottom-right-radius: 4px;
+            border-bottom: none
+        }
+
+        .leaflet-bar a.leaflet-disabled {
+            cursor: default;
+            background-color: #f4f4f4;
+            color: #bbb
+        }
+
+.leaflet-touch .leaflet-bar a {
+    width: 30px;
+    height: 30px;
+    line-height: 30px
+}
+
+    .leaflet-touch .leaflet-bar a:first-child {
+        border-top-left-radius: 2px;
+        border-top-right-radius: 2px
+    }
+
+    .leaflet-touch .leaflet-bar a:last-child {
+        border-bottom-left-radius: 2px;
+        border-bottom-right-radius: 2px
+    }
+
+.leaflet-control-zoom-in, .leaflet-control-zoom-out {
+    font: 700 18px Lucida Console,Monaco,monospace;
+    text-indent: 1px
+}
+
+.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {
+    font-size: 22px
+}
+
+.leaflet-control-layers {
+    -webkit-box-shadow: 0 1px 5px rgba(0,0,0,.4);
+    box-shadow: 0 1px 5px rgba(0,0,0,.4);
+    background: #fff;
+    border-radius: 5px
+}
+
+.leaflet-control-layers-toggle {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);
+    width: 36px;
+    height: 36px
+}
+
+.leaflet-retina .leaflet-control-layers-toggle {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);
+    background-size: 26px 26px
+}
+
+.leaflet-touch .leaflet-control-layers-toggle {
+    width: 44px;
+    height: 44px
+}
+
+.leaflet-control-layers-expanded .leaflet-control-layers-toggle, .leaflet-control-layers .leaflet-control-layers-list {
+    display: none
+}
+
+.leaflet-control-layers-expanded .leaflet-control-layers-list {
+    display: block;
+    position: relative
+}
+
+.leaflet-control-layers-expanded {
+    padding: 6px 10px 6px 6px;
+    color: #333;
+    background: #fff
+}
+
+.leaflet-control-layers-scrollbar {
+    overflow-y: scroll;
+    overflow-x: hidden;
+    padding-right: 5px
+}
+
+.leaflet-control-layers-selector {
+    margin-top: 2px;
+    position: relative;
+    top: 1px
+}
+
+.leaflet-control-layers label {
+    display: block
+}
+
+.leaflet-control-layers-separator {
+    height: 0;
+    border-top: 1px solid #ddd;
+    margin: 5px -10px 5px -6px
+}
+
+.leaflet-default-icon-path {
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)
+}
+
+.leaflet-container .leaflet-control-attribution {
+    background: #fff;
+    background: hsla(0,0%,100%,.7);
+    margin: 0
+}
+
+.leaflet-control-attribution, .leaflet-control-scale-line {
+    padding: 0 5px;
+    color: #333
+}
+
+    .leaflet-control-attribution a {
+        text-decoration: none
+    }
+
+        .leaflet-control-attribution a:hover {
+            text-decoration: underline
+        }
+
+.leaflet-container .leaflet-control-attribution, .leaflet-container .leaflet-control-scale {
+    font-size: 11px
+}
+
+.leaflet-left .leaflet-control-scale {
+    margin-left: 5px
+}
+
+.leaflet-bottom .leaflet-control-scale {
+    margin-bottom: 5px
+}
+
+.leaflet-control-scale-line {
+    border: 2px solid #777;
+    border-top: none;
+    line-height: 1.1;
+    padding: 2px 5px 1px;
+    font-size: 11px;
+    white-space: nowrap;
+    overflow: hidden;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    background: #fff;
+    background: hsla(0,0%,100%,.5)
+}
+
+    .leaflet-control-scale-line:not(:first-child) {
+        border-top: 2px solid #777;
+        border-bottom: none;
+        margin-top: -2px
+    }
+
+        .leaflet-control-scale-line:not(:first-child):not(:last-child) {
+            border-bottom: 2px solid #777
+        }
+
+.leaflet-touch .leaflet-bar, .leaflet-touch .leaflet-control-attribution, .leaflet-touch .leaflet-control-layers {
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+.leaflet-touch .leaflet-bar, .leaflet-touch .leaflet-control-layers {
+    border: 2px solid rgba(0,0,0,.2);
+    background-clip: padding-box
+}
+
+.leaflet-popup {
+    position: absolute;
+    text-align: center;
+    margin-bottom: 20px
+}
+
+.leaflet-popup-content-wrapper {
+    padding: 1px;
+    text-align: left;
+    border-radius: 12px
+}
+
+.leaflet-popup-content {
+    margin: 13px 19px;
+    line-height: 1.4
+}
+
+    .leaflet-popup-content p {
+        margin: 18px 0
+    }
+
+.leaflet-popup-tip-container {
+    width: 40px;
+    height: 20px;
+    position: absolute;
+    left: 50%;
+    margin-left: -20px;
+    overflow: hidden;
+    pointer-events: none
+}
+
+.leaflet-popup-tip {
+    width: 17px;
+    height: 17px;
+    padding: 1px;
+    margin: -10px auto 0;
+    -webkit-transform: rotate(45deg);
+    transform: rotate(45deg)
+}
+
+.leaflet-popup-content-wrapper, .leaflet-popup-tip {
+    background: #fff;
+    color: #333;
+    -webkit-box-shadow: 0 3px 14px rgba(0,0,0,.4);
+    box-shadow: 0 3px 14px rgba(0,0,0,.4)
+}
+
+.leaflet-container a.leaflet-popup-close-button {
+    position: absolute;
+    top: 0;
+    right: 0;
+    padding: 4px 4px 0 0;
+    border: none;
+    text-align: center;
+    width: 18px;
+    height: 14px;
+    font: 16px/14px Tahoma,Verdana,sans-serif;
+    color: #c3c3c3;
+    text-decoration: none;
+    font-weight: 700;
+    background: transparent
+}
+
+    .leaflet-container a.leaflet-popup-close-button:hover {
+        color: #999
+    }
+
+.leaflet-popup-scrolled {
+    overflow: auto;
+    border-bottom: 1px solid #ddd;
+    border-top: 1px solid #ddd
+}
+
+.leaflet-oldie .leaflet-popup-content-wrapper {
+    -ms-zoom: 1
+}
+
+.leaflet-oldie .leaflet-popup-tip {
+    width: 24px;
+    margin: 0 auto;
+    -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
+    filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678,M12=0.70710678,M21=-0.70710678,M22=0.70710678)
+}
+
+.leaflet-oldie .leaflet-popup-tip-container {
+    margin-top: -1px
+}
+
+.leaflet-oldie .leaflet-control-layers, .leaflet-oldie .leaflet-control-zoom, .leaflet-oldie .leaflet-popup-content-wrapper, .leaflet-oldie .leaflet-popup-tip {
+    border: 1px solid #999
+}
+
+.leaflet-div-icon {
+    background: #fff;
+    border: 1px solid #666
+}
+
+.leaflet-tooltip {
+    position: absolute;
+    padding: 6px;
+    background-color: #fff;
+    border: 1px solid #fff;
+    border-radius: 3px;
+    color: #222;
+    white-space: nowrap;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    pointer-events: none;
+    -webkit-box-shadow: 0 1px 3px rgba(0,0,0,.4);
+    box-shadow: 0 1px 3px rgba(0,0,0,.4)
+}
+
+    .leaflet-tooltip.leaflet-clickable {
+        cursor: pointer;
+        pointer-events: auto
+    }
+
+.leaflet-tooltip-bottom:before, .leaflet-tooltip-left:before, .leaflet-tooltip-right:before, .leaflet-tooltip-top:before {
+    position: absolute;
+    pointer-events: none;
+    border: 6px solid transparent;
+    background: transparent;
+    content: ""
+}
+
+.leaflet-tooltip-bottom {
+    margin-top: 6px
+}
+
+.leaflet-tooltip-top {
+    margin-top: -6px
+}
+
+    .leaflet-tooltip-bottom:before, .leaflet-tooltip-top:before {
+        left: 50%;
+        margin-left: -6px
+    }
+
+    .leaflet-tooltip-top:before {
+        bottom: 0;
+        margin-bottom: -12px;
+        border-top-color: #fff
+    }
+
+.leaflet-tooltip-bottom:before {
+    top: 0;
+    margin-top: -12px;
+    margin-left: -6px;
+    border-bottom-color: #fff
+}
+
+.leaflet-tooltip-left {
+    margin-left: -6px
+}
+
+.leaflet-tooltip-right {
+    margin-left: 6px
+}
+
+    .leaflet-tooltip-left:before, .leaflet-tooltip-right:before {
+        top: 50%;
+        margin-top: -6px
+    }
+
+.leaflet-tooltip-left:before {
+    right: 0;
+    margin-right: -12px;
+    border-left-color: #fff
+}
+
+.leaflet-tooltip-right:before {
+    left: 0;
+    margin-left: -12px;
+    border-right-color: #fff
+}
+
+.marker-icon, .marker-icon:focus {
+    background-color: #fff;
+    border: 1px solid #38f;
+    border-radius: 50%;
+    margin: -8px 0 0 -8px !important;
+    width: 14px !important;
+    height: 14px !important;
+    outline: 0;
+    -webkit-transition: opacity .3s ease;
+    transition: opacity .3s ease
+}
+
+.marker-icon-middle, .marker-icon-middle:focus {
+    opacity: .7;
+    margin: -6px 0 0 -6px !important;
+    width: 10px !important;
+    height: 10px !important
+}
+
+.leaflet-pm-draggable {
+    cursor: move !important
+}
+
+.cursor-marker {
+    cursor: crosshair;
+    pointer-events: none;
+    display: none
+}
+
+    .cursor-marker.visible {
+        display: block !important
+    }
+
+.leaflet-pm-invalid {
+    stroke: red;
+    -webkit-transition: fill 0s ease,stroke 0s ease;
+    transition: fill 0s ease,stroke 0s ease
+}
+
+.rect-start-marker, .rect-style-marker {
+    opacity: 0
+}
+
+    .rect-start-marker.visible, .rect-style-marker.visible {
+        opacity: 1 !important
+    }
+
+.hidden {
+    display: none
+}
+
+.leaflet-pm-toolbar .leaflet-buttons-control-button {
+    padding: 5px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    position: relative;
+    z-index: 3
+}
+
+.leaflet-pm-toolbar .control-fa-icon {
+    font-size: 19px;
+    line-height: 24px
+}
+
+.leaflet-pm-toolbar .control-icon {
+    width: 100%;
+    height: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    background-size: contain;
+    background-repeat: no-repeat;
+    background-position: 50%
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-marker {
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik0xNS41IDI0Ljg3OGMtLjIxIDAtLjMyNi0uMDMxLS44NC0uNjQzQzEwLjIyIDE5LjQxMiA4IDE1LjUwMSA4IDEyLjUwNUE3LjUwMiA3LjUwMiAwIDAxMTUuNSA1YzQuMTQyIDAgNy41IDMuMzYgNy41IDcuNTA0IDAgNC40OTYtNC43MTIgOS40MjMtNi42NjYgMTEuNzQtLjUxMi42MDYtLjYyNS42MzUtLjgzNC42MzR6bTAtOS4zNDVjMS43NzUgMCAzLjIxNC0xLjQxNSAzLjIxNC0zLjE2cy0xLjQzOS0zLjE2LTMuMjE0LTMuMTYtMy4yMTQgMS40MTUtMy4yMTQgMy4xNiAxLjQzOSAzLjE2IDMuMjE0IDMuMTZ6IiBpZD0iYSIvPjwvZGVmcz48dXNlIGZpbGw9IiM1QjVCNUIiIGZpbGwtcnVsZT0ibm9uemVybyIgeGxpbms6aHJlZj0iI2EiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zIC0zKSIvPjwvc3ZnPg==)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-polygon {
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNMTkuNDIgOS4xNjVhMy41IDMuNSAwIDExMy41OCAxLjh2OC4wN0EzLjUgMy41IDAgMTExOS4wMzUgMjNoLTguMDdhMy41IDMuNSAwIDExLTEuOC0zLjU4TDE5LjQyMSA5LjE2NnptMS40MTUgMS40MTRMMTAuNTc5IDIwLjgzNWMuMDMuMDU0LjA1OC4xMS4wODQuMTY1aDguNjc0QTMuNTE0IDMuNTE0IDAgMDEyMSAxOS4zMzd2LTguNjc0YTMuNDg4IDMuNDg4IDAgMDEtLjE2NS0uMDg0ek0yMi41IDlhMS41IDEuNSAwIDEwMC0zIDEuNSAxLjUgMCAwMDAgM3ptMCAxNWExLjUgMS41IDAgMTAwLTMgMS41IDEuNSAwIDAwMCAzem0tMTUgMGExLjUgMS41IDAgMTAwLTMgMS41IDEuNSAwIDAwMCAzeiIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zIC0zKSI+PG1hc2sgaWQ9ImIiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48L21hc2s+PHVzZSBmaWxsPSIjNUI1QjVCIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHhsaW5rOmhyZWY9IiNhIi8+PGcgZmlsbD0iIzVCNUI1QiIgbWFzaz0idXJsKCNiKSI+PHBhdGggZD0iTTAgMGgzMHYzMEgweiIvPjwvZz48L2c+PC9zdmc+)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-polyline {
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNOS4xNjUgMTkuNDJsOS4yNTYtOS4yNTVhMy41IDMuNSAwIDExMS40MTQgMS40MTRsLTkuMjU2IDkuMjU2YTMuNSAzLjUgMCAxMS0xLjQxNC0xLjQxNHpNMjEuNSAxMGExLjUgMS41IDAgMTAwLTMgMS41IDEuNSAwIDAwMCAzem0tMTQgMTRhMS41IDEuNSAwIDEwMC0zIDEuNSAxLjUgMCAwMDAgM3oiLz48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMyAtMykiPjxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj48dXNlIHhsaW5rOmhyZWY9IiNhIi8+PC9tYXNrPjx1c2UgZmlsbD0iIzVCNUI1QiIgZmlsbC1ydWxlPSJub256ZXJvIiB4bGluazpocmVmPSIjYSIvPjxnIGZpbGw9IiM1QjVCNUIiIG1hc2s9InVybCgjYikiPjxwYXRoIGQ9Ik0wIDBoMzB2MzBIMHoiLz48L2c+PC9nPjwvc3ZnPg==)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-circle {
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik0xOC4yOSA2Ljc4NmEzLjUgMy41IDAgMDE0LjkyNCA0LjkyNEE5LjQ2OCA5LjQ2OCAwIDAxMjQgMTUuNSA5LjUgOS41IDAgMTExNC41IDZjMS4zNDcgMCAyLjYyOS4yOCAzLjc5Ljc4NnptLTEuMTQgMS42OTZhNy41IDcuNSAwIDEwNC4zNjggNC4zNjggMy41IDMuNSAwIDAxLTQuMzY4LTQuMzY4ek0xNC41IDE3YTEuNSAxLjUgMCAxMTAtMyAxLjUgMS41IDAgMDEwIDN6bTYtNmExLjUgMS41IDAgMTAwLTMgMS41IDEuNSAwIDAwMCAzeiIgaWQ9ImEiLz48L2RlZnM+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMgLTMpIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj48dXNlIHhsaW5rOmhyZWY9IiNhIi8+PC9tYXNrPjx1c2UgZmlsbD0iIzVCNUI1QiIgZmlsbC1ydWxlPSJub256ZXJvIiB4bGluazpocmVmPSIjYSIvPjxnIG1hc2s9InVybCgjYikiIGZpbGw9IiM1QjVCNUIiPjxwYXRoIGQ9Ik0wIDBoMzB2MzBIMHoiLz48L2c+PC9nPjwvc3ZnPg==)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-circle-marker {
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBzdHJva2U9IiM1QjVCNUIiIHN0cm9rZS13aWR0aD0iOCIgZmlsbD0ibm9uZSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iMzUiLz48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSIzIiBmaWxsPSIjNUI1QjVCIi8+PC9zdmc+)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-rectangle {
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNMjMgMTAuOTY1djguMDdBMy41IDMuNSAwIDExMTkuMDM1IDIzaC04LjA3QTMuNSAzLjUgMCAxMTcgMTkuMDM1di04LjA3QTMuNSAzLjUgMCAxMTEwLjk2NSA3aDguMDdBMy41IDMuNSAwIDExMjMgMTAuOTY1em0tMi0uMzAyQTMuNTE0IDMuNTE0IDAgMDExOS4zMzcgOWgtOC42NzRBMy41MTQgMy41MTQgMCAwMTkgMTAuNjYzdjguNjc0QTMuNTE0IDMuNTE0IDAgMDExMC42NjMgMjFoOC42NzRBMy41MTQgMy41MTQgMCAwMTIxIDE5LjMzN3YtOC42NzR6TTcuNSA5YTEuNSAxLjUgMCAxMDAtMyAxLjUgMS41IDAgMDAwIDN6bTE1IDBhMS41IDEuNSAwIDEwMC0zIDEuNSAxLjUgMCAwMDAgM3ptMCAxNWExLjUgMS41IDAgMTAwLTMgMS41IDEuNSAwIDAwMCAzem0tMTUgMGExLjUgMS41IDAgMTAwLTMgMS41IDEuNSAwIDAwMCAzeiIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zIC0zKSI+PG1hc2sgaWQ9ImIiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48L21hc2s+PHVzZSBmaWxsPSIjNUI1QjVCIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHhsaW5rOmhyZWY9IiNhIi8+PGcgZmlsbD0iIzVCNUI1QiIgbWFzaz0idXJsKCNiKSI+PHBhdGggZD0iTTAgMGgzMHYzMEgweiIvPjwvZz48L2c+PC9zdmc+)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-delete {
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik0xNy43ODcgMTguNDgxbC02LjEzOS01LjEzMS01LjI0MyA2LjAzMiA0LjE0OSAzLjYwNmgzLjMxNWwzLjkxOC00LjUwN3ptLTEuMjggNC41MDdIMjZ2Mkg5LjgwN2wtNC43MTQtNC4wOTdhMiAyIDAgMDEtLjE5OC0yLjgyMkwxNi4wNDggNS4yNGEyIDIgMCAwMTIuODIyLS4xOTdsNi4wMzcgNS4yNDlhMiAyIDAgMDEuMTk4IDIuODIxbC04LjU5OCA5Ljg3NnoiIGlkPSJhIi8+PC9kZWZzPjx1c2UgZmlsbD0iIzVCNUI1QiIgZmlsbC1ydWxlPSJub256ZXJvIiB4bGluazpocmVmPSIjYSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMgLTMpIi8+PC9zdmc+)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-edit {
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNMTMuNSAxMWEzLjUgMy41IDAgMTEwLTcgMy41IDMuNSAwIDAxMCA3em0wLTJhMS41IDEuNSAwIDEwMC0zIDEuNSAxLjUgMCAwMDAgM3pNMTIgNy41M2ExLjUgMS41IDAgMDAuOTggMS4zNzhMMyAxNXYtMmw5LTUuNDd6bTIuMjE3LTEuMzQ4TDE5LjQ1MyAzaDMuMjA2bC03LjY3IDQuNjgyYTEuNSAxLjUgMCAwMC0uNzcyLTEuNXptOS4yMjYgMTMuMTAzaC0zLjMxNWwxLjc0NSA0LjI1YS41OC41OCAwIDAxLS4yOTUuNzVsLTEuNTM3LjY3YS41NTMuNTUzIDAgMDEtLjcyOS0uMzA0bC0xLjY1OC00LjAzNi0yLjcwOCAyLjc4NmMtLjM2LjM3MS0uOTQ2LjA4NS0uOTQ2LS40MDJWOS41NzJjMC0uNTEzLjYyMy0uNzYzLjk0Ni0uNDAybDguODg4IDkuMTQyYy4zNTkuMzUuMDk0Ljk3My0uMzkuOTczeiIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zIC0zKSI+PG1hc2sgaWQ9ImIiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48L21hc2s+PHVzZSBmaWxsPSIjNUI1QjVCIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHhsaW5rOmhyZWY9IiNhIi8+PGcgZmlsbD0iIzVCNUI1QiIgbWFzaz0idXJsKCNiKSI+PHBhdGggZD0iTTAgMGgzMHYzMEgweiIvPjwvZz48L2c+PC9zdmc+)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-drag {
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNMjEgMTR2LTRsNiA1LTYgNXYtNGgtNXY1aDRsLTUgNi01LTZoNHYtNUg5djRsLTYtNSA2LTV2NGg1VjloLTRsNS02IDUgNmgtNHY1aDV6Ii8+PC9kZWZzPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMgLTMpIj48bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjYSIvPjwvbWFzaz48dXNlIGZpbGw9IiNEOEQ4RDgiIHhsaW5rOmhyZWY9IiNhIi8+PGcgZmlsbD0iIzVCNUI1QiIgbWFzaz0idXJsKCNiKSI+PHBhdGggZD0iTTAgMGgzMHYzMEgweiIvPjwvZz48L2c+PC9zdmc+)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-cut {
+    background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik0xMi45NyAxMy40OTRsOC4wNjItNy45NTIgMi40MzMuMTM1LTYuNDE4IDguODM0IDEwLjUxOSAyLjYyMi0xLjc3NyAxLjY2OC0xMS4yMDQtLjkwMi0uOTM2IDEuMjg5YTMuNSAzLjUgMCAxMS0yLjIxNS0uMzU0bDEuMjQ3LTEuNzE2LS4xNTctLjc0My0uNTczLTEuMDc0LTIuMDU4LS41MTNhMy41IDMuNSAwIDExMS40NjktMS42OTVsMS42MDcuNHptLTUuMjEyLS4yNjlhMS41IDEuNSAwIDEwLjcyNi0yLjkxIDEuNSAxLjUgMCAwMC0uNzI2IDIuOTF6bTMuMDQ1IDguMTc4YTEuNSAxLjUgMCAxMDIuNDI3IDEuNzYzIDEuNSAxLjUgMCAwMC0yLjQyNy0xLjc2M3oiIGlkPSJhIi8+PC9kZWZzPjx1c2UgZmlsbD0iIzVCNUI1QiIgZmlsbC1ydWxlPSJub256ZXJvIiB0cmFuc2Zvcm09InJvdGF0ZSgtMzIgOS4zNjIgMTkuMzk0KSIgeGxpbms6aHJlZj0iI2EiLz48L3N2Zz4=)
+}
+
+.leaflet-buttons-control-button:hover {
+    cursor: pointer;
+    background-color: #f4f4f4
+}
+
+.active .leaflet-buttons-control-button {
+    -webkit-box-shadow: inset 0 -1px 5px 2px rgba(81,77,77,.31);
+    box-shadow: inset 0 -1px 5px 2px rgba(81,77,77,.31)
+}
+
+.leaflet-buttons-control-text-hide {
+    display: none
+}
+
+.button-container {
+    position: relative
+}
+
+    .button-container .leaflet-pm-actions-container {
+        z-index: 2;
+        position: absolute;
+        top: 0;
+        left: 31px;
+        display: none;
+        white-space: nowrap
+    }
+
+.leaflet-right .leaflet-pm-toolbar .button-container .leaflet-pm-actions-container {
+    right: 31px;
+    left: auto
+}
+
+.button-container.active .leaflet-pm-actions-container {
+    display: block
+}
+
+.button-container .leaflet-pm-actions-container .leaflet-pm-action:last-child {
+    border-radius: 0 3px 3px 0;
+    border-right: 0
+}
+
+.button-container .leaflet-pm-actions-container .leaflet-pm-action {
+    padding: 0 10px;
+    background-color: #666;
+    color: #fff;
+    display: inline-block;
+    width: auto;
+    border-right: 1px solid #eee;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+    .button-container .leaflet-pm-actions-container .leaflet-pm-action:hover {
+        cursor: pointer;
+        background-color: #777
+    }
+
+#map {
+    width: 100%;
+    height: 100vh;
+    z-index: 1;
+    margin-left: -24px;
+    margin-top: -24px;
+    position: fixed
+}
+
+.leaflet-right .leaflet-control {
+    position: fixed;
+    right: -5px
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css.gz b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css.gz
new file mode 100644
index 0000000..9166682
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css.gz
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-vendors.4659697d.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-vendors.4659697d.css
new file mode 100644
index 0000000..3ed1a5a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-vendors.4659697d.css
@@ -0,0 +1,30745 @@
+a {
+    color: #13c2c2
+}
+
+    a:hover {
+        color: #36cfc9
+    }
+
+    a:active {
+        color: #08979c
+    }
+
+::-moz-selection {
+    background: #13c2c2
+}
+
+::selection {
+    background: #13c2c2
+}
+
+.anticon-spin, .anticon-spin:before {
+    display: inline-block;
+    -webkit-animation: loadingCircle 1s linear infinite;
+    animation: loadingCircle 1s linear infinite
+}
+
+.fade-appear, .fade-enter, .fade-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused;
+    -webkit-animation-timing-function: linear;
+    animation-timing-function: linear
+}
+
+.move-down-appear, .move-down-enter, .move-down-leave, .move-left-appear, .move-left-enter, .move-left-leave, .move-right-appear, .move-right-enter, .move-right-leave, .move-up-appear, .move-up-enter, .move-up-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+html {
+    --antd-wave-shadow-color: #13c2c2
+}
+
+.ant-click-animating-node, [ant-click-animating-without-extra-node=true]:after {
+    -webkit-box-shadow: 0 0 0 0 #13c2c2;
+    box-shadow: 0 0 0 0 #13c2c2
+}
+
+.slide-down-appear, .slide-down-enter, .slide-down-leave, .slide-left-appear, .slide-left-enter, .slide-left-leave, .slide-right-appear, .slide-right-enter, .slide-right-leave, .slide-up-appear, .slide-up-enter, .slide-up-leave, .zoom-appear, .zoom-big-appear, .zoom-big-enter, .zoom-big-leave, .zoom-enter, .zoom-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-big-fast-appear, .zoom-big-fast-enter, .zoom-big-fast-leave {
+    -webkit-animation-duration: .1s;
+    animation-duration: .1s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.zoom-down-appear, .zoom-down-enter, .zoom-down-leave, .zoom-left-appear, .zoom-left-enter, .zoom-left-leave, .zoom-right-appear, .zoom-right-enter, .zoom-right-leave, .zoom-up-appear, .zoom-up-enter, .zoom-up-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.ant-motion-collapse, .ant-motion-collapse-legacy-active {
+    -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+    transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-message-notice-content, .ant-upload.ant-upload-select-picture-card {
+    border-radius: 4px
+}
+
+    .ant-upload.ant-upload-select-picture-card:hover {
+        border-color: #13c2c2
+    }
+
+.ant-upload.ant-upload-drag {
+    border-radius: 4px
+}
+
+    .ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled) {
+        border-color: #08979c
+    }
+
+    .ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover {
+        border-color: #36cfc9
+    }
+
+    .ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon {
+        color: #36cfc9
+    }
+
+    .ant-upload.ant-upload-drag .anticon-plus:hover, .ant-upload.ant-upload-drag:hover .anticon-plus {
+        color: rgba(0,0,0,.45)
+    }
+
+.ant-upload-list-item:hover .ant-upload-list-item-info {
+    background-color: #e6fffb
+}
+
+.ant-upload-list-item:hover .ant-upload-list-item-card-actions, .ant-upload-list-item:hover .anticon-close {
+    opacity: 1
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item, .ant-upload-list-picture .ant-upload-list-item {
+    border-radius: 4px
+}
+
+.ant-upload-list-picture-card-container, .ant-upload-list-picture-card .ant-upload-list-item {
+    float: left;
+    width: 104px;
+    height: 104px;
+    margin: 0 8px 8px 0
+}
+
+.ant-time-picker-panel-inner, .ant-tooltip-inner {
+    border-radius: 4px
+}
+
+.ant-time-picker-panel-select li:focus {
+    color: #13c2c2
+}
+
+.ant-time-picker-panel-select li:hover {
+    background: #e6fffb
+}
+
+.ant-time-picker, .ant-time-picker-input {
+    color: rgba(0,0,0,.65);
+    line-height: 1.5;
+    position: relative;
+    display: inline-block
+}
+
+.ant-time-picker-input {
+    border-radius: 4px
+}
+
+    .ant-time-picker-input:focus, .ant-time-picker-input:hover {
+        border-color: #36cfc9;
+        border-right-width: 1px !important
+    }
+
+    .ant-time-picker-input:focus {
+        -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+        box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+    }
+
+.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled) {
+    border-color: #36cfc9
+}
+
+.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled) {
+    border-color: #36cfc9;
+    -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+    box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+}
+
+.ant-calendar {
+    border-radius: 4px
+}
+
+.ant-calendar-header a:hover {
+    color: #36cfc9
+}
+
+.ant-calendar-date:hover {
+    background: #e6fffb
+}
+
+.ant-calendar-date:active {
+    background: #36cfc9
+}
+
+.ant-calendar-today .ant-calendar-date {
+    color: #13c2c2;
+    border-color: #13c2c2
+}
+
+.ant-calendar-selected-day .ant-calendar-date {
+    background: #b5f5ec
+}
+
+.ant-calendar .ant-calendar-ok-btn {
+    background-color: #13c2c2;
+    border-color: #13c2c2;
+    border-radius: 4px
+}
+
+.ant-calendar .ant-calendar-ok-btn-lg, .ant-calendar .ant-calendar-ok-btn-sm {
+    border-radius: 4px
+}
+
+.ant-calendar .ant-calendar-ok-btn:focus, .ant-calendar .ant-calendar-ok-btn:hover {
+    background-color: #36cfc9;
+    border-color: #36cfc9
+}
+
+.ant-calendar .ant-calendar-ok-btn.active, .ant-calendar .ant-calendar-ok-btn:active {
+    background-color: #08979c;
+    border-color: #08979c
+}
+
+.ant-calendar-range .ant-calendar-today :not(.ant-calendar-disabled-cell) :not(.ant-calendar-last-month-cell) :not(.ant-calendar-next-month-btn-day) .ant-calendar-date {
+    color: #13c2c2;
+    background: #b5f5ec;
+    border-color: #13c2c2
+}
+
+.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date, .ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date:hover, .ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date, .ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date:hover {
+    background: #13c2c2
+}
+
+.ant-calendar-range .ant-calendar-input, .ant-calendar-range .ant-calendar-time-picker-input {
+    border-radius: 4px
+}
+
+    .ant-calendar-range .ant-calendar-input:hover, .ant-calendar-range .ant-calendar-time-picker-input:hover {
+        border-color: #36cfc9
+    }
+
+    .ant-calendar-range .ant-calendar-input:focus, .ant-calendar-range .ant-calendar-time-picker-input:focus {
+        border-color: #36cfc9;
+        -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+        box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+    }
+
+.ant-calendar-range .ant-calendar-in-range-cell:before {
+    background: #e6fffb
+}
+
+.ant-calendar-time-picker-column-1, .ant-calendar-time-picker-column-1 .ant-calendar-time-picker-select, .ant-calendar-time-picker-combobox {
+    width: 100%
+}
+
+.ant-calendar-time-picker-select li:hover {
+    background: #e6fffb
+}
+
+.ant-calendar-time-picker-select li:focus {
+    color: #13c2c2
+}
+
+.ant-calendar-month-panel {
+    border-radius: 4px
+}
+
+.ant-calendar-month-panel-header a:hover {
+    color: #36cfc9
+}
+
+.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month, .ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover {
+    color: #fff;
+    background: #13c2c2
+}
+
+.ant-calendar-month-panel-month:hover {
+    background: #e6fffb
+}
+
+.ant-calendar-year-panel {
+    border-radius: 4px
+}
+
+.ant-calendar-year-panel-header a:hover {
+    color: #36cfc9
+}
+
+.ant-calendar-year-panel-year:hover {
+    background: #e6fffb
+}
+
+.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year, .ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover {
+    color: #fff;
+    background: #13c2c2
+}
+
+.ant-calendar-decade-panel {
+    border-radius: 4px
+}
+
+.ant-calendar-decade-panel-header a:hover {
+    color: #36cfc9
+}
+
+.ant-calendar-decade-panel-decade:hover {
+    background: #e6fffb
+}
+
+.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade, .ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover {
+    color: #fff;
+    background: #13c2c2
+}
+
+.ant-calendar-week-number .ant-calendar-body tr:hover {
+    background: #e6fffb
+}
+
+.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week {
+    background: #b5f5ec
+}
+
+.ant-input {
+    border-radius: 4px
+}
+
+    .ant-input:focus, .ant-input:hover {
+        border-color: #36cfc9;
+        border-right-width: 1px !important
+    }
+
+    .ant-input:focus {
+        -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+        box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+    }
+
+.ant-input-group .ant-input:focus, .ant-input-group .ant-input:hover {
+    z-index: 1;
+    border-right-width: 1px
+}
+
+.ant-input-group-addon {
+    border-radius: 4px
+}
+
+    .ant-input-group-addon .ant-select-focused .ant-select-selection, .ant-input-group-addon .ant-select-open .ant-select-selection {
+        color: #13c2c2
+    }
+
+    .ant-input-group-addon:first-child, .ant-input-group-addon:first-child .ant-select .ant-select-selection, .ant-input-group > .ant-input:first-child, .ant-input-group > .ant-input:first-child .ant-select .ant-select-selection {
+        border-top-right-radius: 0;
+        border-bottom-right-radius: 0
+    }
+
+    .ant-input-group-addon:last-child, .ant-input-group-addon:last-child .ant-select .ant-select-selection, .ant-input-group > .ant-input:last-child, .ant-input-group > .ant-input:last-child .ant-select .ant-select-selection {
+        border-top-left-radius: 0;
+        border-bottom-left-radius: 0
+    }
+
+.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):focus, .ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):hover, .ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):focus, .ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):hover, .ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):focus, .ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):hover, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:focus, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:hover, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-select-focused, .ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:focus, .ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:hover, .ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:focus, .ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:hover {
+    z-index: 1
+}
+
+.ant-input-group.ant-input-group-compact > .ant-calendar-picker:first-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper:first-child .ant-mention-editor, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selection, .ant-input-group.ant-input-group-compact > .ant-time-picker:first-child .ant-time-picker-input, .ant-input-group.ant-input-group-compact > :first-child {
+    border-top-left-radius: 4px;
+    border-bottom-left-radius: 4px
+}
+
+.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection, .ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input, .ant-input-group.ant-input-group-compact > :last-child {
+    border-right-width: 1px;
+    border-top-right-radius: 4px;
+    border-bottom-right-radius: 4px
+}
+
+.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {
+    border-color: #36cfc9
+}
+
+.ant-btn, .ant-btn-lg, .ant-btn-sm {
+    border-radius: 4px
+}
+
+    .ant-btn:focus, .ant-btn:hover {
+        color: #36cfc9;
+        border-color: #36cfc9
+    }
+
+    .ant-btn.active, .ant-btn:active {
+        color: #08979c;
+        border-color: #08979c
+    }
+
+.ant-btn-primary {
+    background-color: #13c2c2;
+    border-color: #13c2c2
+}
+
+    .ant-btn-primary:focus, .ant-btn-primary:hover {
+        background-color: #36cfc9;
+        border-color: #36cfc9
+    }
+
+    .ant-btn-primary.active, .ant-btn-primary:active {
+        background-color: #08979c;
+        border-color: #08979c
+    }
+
+.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) {
+    border-right-color: #36cfc9;
+    border-left-color: #36cfc9
+}
+
+.ant-btn-group .ant-btn-primary:first-child:not(:last-child) {
+    border-right-color: #36cfc9
+}
+
+.ant-btn-group .ant-btn-primary + .ant-btn-primary, .ant-btn-group .ant-btn-primary:last-child:not(:first-child) {
+    border-left-color: #36cfc9
+}
+
+.ant-btn-ghost:focus, .ant-btn-ghost:hover {
+    color: #36cfc9;
+    border-color: #36cfc9
+}
+
+.ant-btn-ghost.active, .ant-btn-ghost:active {
+    color: #08979c;
+    border-color: #08979c
+}
+
+.ant-btn-dashed:focus, .ant-btn-dashed:hover {
+    color: #36cfc9;
+    border-color: #36cfc9
+}
+
+.ant-btn-dashed.active, .ant-btn-dashed:active {
+    color: #08979c;
+    border-color: #08979c
+}
+
+.ant-btn-link {
+    color: #13c2c2
+}
+
+    .ant-btn-link:focus, .ant-btn-link:hover {
+        color: #36cfc9;
+        border-color: #36cfc9
+    }
+
+    .ant-btn-link.active, .ant-btn-link:active {
+        color: #08979c;
+        border-color: #08979c
+    }
+
+.ant-btn-icon-only, .ant-btn-icon-only.ant-btn-lg, .ant-btn-icon-only.ant-btn-sm {
+    border-radius: 4px
+}
+
+.ant-btn-group, .ant-btn-group > .ant-btn, .ant-btn-group > span > .ant-btn {
+    position: relative
+}
+
+    .ant-btn-group > .ant-btn:only-child, .ant-btn-group > span:only-child > .ant-btn {
+        border-radius: 4px
+    }
+
+    .ant-btn-group > .ant-btn:first-child:not(:last-child), .ant-btn-group > span:first-child:not(:last-child) > .ant-btn {
+        border-top-left-radius: 4px;
+        border-bottom-left-radius: 4px
+    }
+
+    .ant-btn-group > .ant-btn:last-child:not(:first-child), .ant-btn-group > span:last-child:not(:first-child) > .ant-btn {
+        border-top-right-radius: 4px;
+        border-bottom-right-radius: 4px
+    }
+
+.ant-btn-group-sm > .ant-btn:only-child, .ant-btn-group-sm > span:only-child > .ant-btn {
+    border-radius: 4px
+}
+
+.ant-btn-group-sm > .ant-btn:first-child:not(:last-child), .ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {
+    border-top-left-radius: 4px;
+    border-bottom-left-radius: 4px
+}
+
+.ant-btn-group-sm > .ant-btn:last-child:not(:first-child), .ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {
+    border-top-right-radius: 4px;
+    border-bottom-right-radius: 4px
+}
+
+.ant-btn-background-ghost.ant-btn-primary {
+    color: #13c2c2;
+    border-color: #13c2c2
+}
+
+    .ant-btn-background-ghost.ant-btn-primary:focus, .ant-btn-background-ghost.ant-btn-primary:hover {
+        color: #36cfc9;
+        border-color: #36cfc9
+    }
+
+    .ant-btn-background-ghost.ant-btn-primary.active, .ant-btn-background-ghost.ant-btn-primary:active {
+        color: #08979c;
+        border-color: #08979c
+    }
+
+.ant-btn-background-ghost.ant-btn-link {
+    color: #13c2c2
+}
+
+    .ant-btn-background-ghost.ant-btn-link:focus, .ant-btn-background-ghost.ant-btn-link:hover {
+        color: #36cfc9
+    }
+
+    .ant-btn-background-ghost.ant-btn-link.active, .ant-btn-background-ghost.ant-btn-link:active {
+        color: #08979c
+    }
+
+.ant-tag {
+    border-radius: 4px
+}
+
+.ant-tag-checkable:not(.ant-tag-checkable-checked):hover {
+    color: #13c2c2
+}
+
+.ant-tag-checkable-checked {
+    background-color: #13c2c2
+}
+
+.ant-tag-checkable:active {
+    background-color: #08979c
+}
+
+.ant-divider-horizontal.ant-divider-with-text-left:after, .ant-divider-horizontal.ant-divider-with-text-right:before {
+    top: 50%;
+    width: 95%
+}
+
+.ant-alert, .ant-alert-with-description {
+    border-radius: 4px
+}
+
+.ant-steps-item-icon > .ant-steps-icon {
+    color: #13c2c2
+}
+
+.ant-steps-item-description, .ant-steps-item-subtitle {
+    color: rgba(0,0,0,.45);
+    font-size: 14px
+}
+
+.ant-steps-item-process .ant-steps-item-icon {
+    border-color: #13c2c2
+}
+
+    .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
+        color: #13c2c2
+    }
+
+        .ant-steps-item-process .ant-steps-item-icon, .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+            background: #13c2c2
+        }
+
+.ant-steps-item-finish .ant-steps-item-icon {
+    border-color: #13c2c2
+}
+
+    .ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon {
+        color: #13c2c2
+    }
+
+        .ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+            background: #13c2c2
+        }
+
+.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after, .ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail:after {
+    background-color: #13c2c2
+}
+
+.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-description, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-subtitle, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-title {
+    color: #13c2c2
+}
+
+.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role=button]:hover .ant-steps-item-icon {
+    border-color: #13c2c2
+}
+
+    .ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon, .ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role=button]:hover .ant-steps-item-icon .ant-steps-icon {
+        color: #13c2c2
+    }
+
+.ant-steps-navigation .ant-steps-item:before {
+    background-color: #13c2c2
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab {
+    border-radius: 4px 4px 0 0
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active, .ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-disabled {
+    color: #13c2c2
+}
+
+.ant-tabs-extra-content .ant-tabs-new-tab:hover {
+    color: #13c2c2;
+    border-color: #13c2c2
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab {
+    border-radius: 4px 0 0 4px
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab {
+    border-radius: 0 4px 4px 0
+}
+
+.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab {
+    border-radius: 0 0 4px 4px
+}
+
+.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active {
+    color: #13c2c2
+}
+
+.ant-tabs-ink-bar {
+    background-color: #13c2c2
+}
+
+.ant-tabs-bar, .ant-tabs-nav-container {
+    -webkit-transition: padding .3s cubic-bezier(.645,.045,.355,1);
+    transition: padding .3s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-tabs-nav .ant-tabs-tab:before {
+    border-radius: 4px 4px 0 0
+}
+
+.ant-tabs-nav .ant-tabs-tab:hover {
+    color: #36cfc9
+}
+
+.ant-tabs-nav .ant-tabs-tab:active {
+    color: #08979c
+}
+
+.ant-tabs-nav .ant-tabs-tab-active {
+    color: #13c2c2
+}
+
+.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container, .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-wrap {
+    margin-right: -1px
+}
+
+.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-wrap {
+    margin-left: -1px
+}
+
+.ant-table table {
+    border-radius: 4px 4px 0 0
+}
+
+.ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on, .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on, .ant-table-thead > tr > th .ant-table-filter-selected.anticon {
+    color: #13c2c2
+}
+
+.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters .ant-table-filter-icon.ant-table-filter-open, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters .anticon-filter.ant-table-filter-open, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .ant-table-filter-icon:hover, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .anticon-filter:hover {
+    color: rgba(0,0,0,.45);
+    background: #e5e5e5
+}
+
+.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover .ant-table-filter-icon, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover .anticon-filter {
+    background: #f2f2f2
+}
+
+.ant-table-thead > tr:first-child > th:first-child {
+    border-top-left-radius: 4px
+}
+
+.ant-table-thead > tr:first-child > th:last-child {
+    border-top-right-radius: 4px
+}
+
+.ant-table-tbody > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-thead > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-thead > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {
+    background: #e6fffb
+}
+
+.ant-table-tbody > tr.ant-table-row-selected > td.ant-table-column-sort, .ant-table-tbody > tr:hover.ant-table-row-selected > td, .ant-table-tbody > tr:hover.ant-table-row-selected > td.ant-table-column-sort, .ant-table-thead > tr.ant-table-row-selected > td.ant-table-column-sort, .ant-table-thead > tr:hover.ant-table-row-selected > td, .ant-table-thead > tr:hover.ant-table-row-selected > td.ant-table-column-sort {
+    background: #fafafa
+}
+
+.ant-table-footer {
+    border-radius: 0 0 4px 4px
+}
+
+.ant-table-title, .ant-table-title + .ant-table-content {
+    border-radius: 4px 4px 0 0
+}
+
+.ant-table-bordered .ant-table-title + .ant-table-content, .ant-table-bordered .ant-table-title + .ant-table-content .ant-table-thead > tr:first-child > th, .ant-table-bordered .ant-table-title + .ant-table-content table, .ant-table-without-column-header .ant-table-title + .ant-table-content, .ant-table-without-column-header table {
+    border-radius: 0
+}
+
+.ant-table-without-column-header.ant-table-bordered.ant-table-empty .ant-table-placeholder {
+    border-radius: 4px
+}
+
+.ant-table-header table {
+    border-radius: 4px 4px 0 0
+}
+
+.ant-table-placeholder {
+    border-radius: 0 0 4px 4px
+}
+
+.ant-table-filter-dropdown {
+    border-radius: 4px
+}
+
+    .ant-table-filter-dropdown .ant-dropdown-menu {
+        border-radius: 4px 4px 0 0
+    }
+
+    .ant-table-filter-dropdown .ant-dropdown-menu-sub {
+        border-radius: 4px
+    }
+
+    .ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after {
+        color: #13c2c2;
+        text-shadow: 0 0 2px #b5f5ec
+    }
+
+.ant-table-filter-dropdown-link {
+    color: #13c2c2
+}
+
+    .ant-table-filter-dropdown-link:hover {
+        color: #36cfc9
+    }
+
+    .ant-table-filter-dropdown-link:active {
+        color: #08979c
+    }
+
+.ant-table-selection-menu {
+    border-radius: 4px
+}
+
+.ant-table-row-expand-icon {
+    color: #13c2c2
+}
+
+    .ant-table-row-expand-icon:focus, .ant-table-row-expand-icon:hover {
+        color: #36cfc9
+    }
+
+    .ant-table-row-expand-icon:active {
+        color: #08979c
+    }
+
+.ant-table-fixed-left, .ant-table-fixed-left table {
+    border-radius: 4px 0 0 0
+}
+
+.ant-table-fixed-right, .ant-table-fixed-right table {
+    border-radius: 0 4px 0 0
+}
+
+.ant-table.ant-table-scroll-position-left .ant-table-fixed-left, .ant-table.ant-table-scroll-position-right .ant-table-fixed-right {
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+.ant-table-middle > .ant-table-content > .ant-table-body > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-footer, .ant-table-middle > .ant-table-content > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-title {
+    padding: 12px 8px
+}
+
+.ant-table-small {
+    border-radius: 4px
+}
+
+    .ant-table-small > .ant-table-content .ant-table-header {
+        border-radius: 4px 4px 0 0
+    }
+
+    .ant-table-small.ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body {
+        border-radius: 0 0 4px 4px
+    }
+
+.ant-radio, .ant-radio-wrapper {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    display: inline-block;
+    white-space: nowrap;
+    cursor: pointer
+}
+
+    .ant-radio-input:focus + .ant-radio-inner, .ant-radio-wrapper:hover .ant-radio, .ant-radio:hover .ant-radio-inner {
+        border-color: #13c2c2
+    }
+
+.ant-radio-input:focus + .ant-radio-inner {
+    -webkit-box-shadow: 0 0 0 3px rgba(19,194,194,.08);
+    box-shadow: 0 0 0 3px rgba(19,194,194,.08)
+}
+
+.ant-radio-checked:after {
+    border: 1px solid #13c2c2
+}
+
+.ant-radio-inner:after {
+    background-color: #13c2c2
+}
+
+.ant-radio-checked .ant-radio-inner {
+    border-color: #13c2c2
+}
+
+.ant-radio-button-wrapper:first-child {
+    border-radius: 4px 0 0 4px
+}
+
+.ant-radio-button-wrapper:last-child {
+    border-radius: 0 4px 4px 0
+}
+
+.ant-radio-button-wrapper:first-child:last-child {
+    border-radius: 4px
+}
+
+.ant-radio-button-wrapper:hover {
+    color: #13c2c2
+}
+
+.ant-radio-button-wrapper:focus-within {
+    outline: 3px solid rgba(19,194,194,.06)
+}
+
+.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
+    color: #13c2c2;
+    border-color: #13c2c2;
+    -webkit-box-shadow: -1px 0 0 0 #13c2c2;
+    box-shadow: -1px 0 0 0 #13c2c2
+}
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before {
+        background-color: #13c2c2 !important
+    }
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child {
+        border-color: #13c2c2
+    }
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
+        color: #36cfc9;
+        border-color: #36cfc9;
+        -webkit-box-shadow: -1px 0 0 0 #36cfc9;
+        box-shadow: -1px 0 0 0 #36cfc9
+    }
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {
+        color: #08979c;
+        border-color: #08979c;
+        -webkit-box-shadow: -1px 0 0 0 #08979c;
+        box-shadow: -1px 0 0 0 #08979c
+    }
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {
+        outline: 3px solid rgba(19,194,194,.06)
+    }
+
+.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
+    background: #13c2c2;
+    border-color: #13c2c2
+}
+
+    .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
+        background: #36cfc9;
+        border-color: #36cfc9
+    }
+
+    .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {
+        background: #08979c;
+        border-color: #08979c
+    }
+
+    .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {
+        outline: 3px solid rgba(19,194,194,.06)
+    }
+
+.ant-radio-button-wrapper-disabled, .ant-radio-button-wrapper-disabled:first-child, .ant-radio-button-wrapper-disabled:hover {
+    color: rgba(0,0,0,.25);
+    background-color: #f5f5f5;
+    border-color: #d9d9d9
+}
+
+.ant-checkbox-input:focus + .ant-checkbox-inner, .ant-checkbox-wrapper:hover .ant-checkbox-inner, .ant-checkbox:hover .ant-checkbox-inner {
+    border-color: #13c2c2
+}
+
+.ant-checkbox-checked:after {
+    border: 1px solid #13c2c2
+}
+
+.ant-checkbox-checked .ant-checkbox-inner {
+    background-color: #13c2c2;
+    border-color: #13c2c2
+}
+
+.ant-checkbox-indeterminate .ant-checkbox-inner:after {
+    background-color: #13c2c2
+}
+
+.ant-dropdown-menu {
+    border-radius: 4px
+}
+
+.ant-dropdown-menu-item-selected, .ant-dropdown-menu-item-selected > a, .ant-dropdown-menu-submenu-title-selected, .ant-dropdown-menu-submenu-title-selected > a {
+    color: #13c2c2;
+    background-color: #e6fffb
+}
+
+.ant-dropdown-menu-item:hover, .ant-dropdown-menu-submenu-title:hover {
+    background-color: #e6fffb
+}
+
+.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title {
+    color: #13c2c2
+}
+
+.ant-dropdown-menu-dark .ant-dropdown-menu-item, .ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow:after, .ant-dropdown-menu-dark .ant-dropdown-menu-item > a, .ant-dropdown-menu-dark .ant-dropdown-menu-item > a .ant-dropdown-menu-submenu-arrow:after, .ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title, .ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow:after {
+    color: hsla(0,0%,100%,.65)
+}
+
+.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected, .ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover, .ant-dropdown-menu-dark .ant-dropdown-menu-item-selected > a {
+    background: #13c2c2
+}
+
+.ant-spin {
+    color: #13c2c2
+}
+
+.ant-spin-dot-item {
+    background-color: #13c2c2
+}
+
+.ant-pagination, .ant-pagination ol, .ant-pagination ul {
+    margin: 0;
+    padding: 0;
+    list-style: none
+}
+
+.ant-pagination-item, .ant-pagination-total-text {
+    display: inline-block;
+    height: 32px;
+    margin-right: 8px;
+    line-height: 30px;
+    vertical-align: middle
+}
+
+.ant-pagination-item {
+    border-radius: 4px
+}
+
+    .ant-pagination-item:focus, .ant-pagination-item:hover {
+        border-color: #13c2c2
+    }
+
+        .ant-pagination-item:focus a, .ant-pagination-item:hover a {
+            color: #13c2c2
+        }
+
+.ant-pagination-item-active {
+    border-color: #13c2c2
+}
+
+    .ant-pagination-item-active a {
+        color: #13c2c2
+    }
+
+    .ant-pagination-item-active:focus, .ant-pagination-item-active:hover {
+        border-color: #36cfc9
+    }
+
+        .ant-pagination-item-active:focus a, .ant-pagination-item-active:hover a {
+            color: #36cfc9
+        }
+
+.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon, .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon {
+    color: #13c2c2
+}
+
+.ant-pagination-jump-next, .ant-pagination-jump-prev, .ant-pagination-next, .ant-pagination-prev {
+    border-radius: 4px
+}
+
+    .ant-pagination-next:hover a, .ant-pagination-prev:hover a {
+        border-color: #36cfc9
+    }
+
+    .ant-pagination-next .ant-pagination-item-link, .ant-pagination-prev .ant-pagination-item-link {
+        border-radius: 4px
+    }
+
+    .ant-pagination-next:focus .ant-pagination-item-link, .ant-pagination-next:hover .ant-pagination-item-link, .ant-pagination-prev:focus .ant-pagination-item-link, .ant-pagination-prev:hover .ant-pagination-item-link {
+        color: #13c2c2;
+        border-color: #13c2c2
+    }
+
+.ant-pagination-options-quick-jumper input {
+    border-radius: 4px
+}
+
+    .ant-pagination-options-quick-jumper input:focus, .ant-pagination-options-quick-jumper input:hover {
+        border-color: #36cfc9;
+        border-right-width: 1px !important
+    }
+
+    .ant-pagination-options-quick-jumper input:focus {
+        -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+        box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+    }
+
+.ant-pagination-simple .ant-pagination-simple-pager input {
+    border-radius: 4px
+}
+
+    .ant-pagination-simple .ant-pagination-simple-pager input:hover {
+        border-color: #13c2c2
+    }
+
+.ant-select, .ant-select ol, .ant-select ul {
+    margin: 0;
+    padding: 0;
+    list-style: none
+}
+
+.ant-select-selection {
+    border-radius: 4px
+}
+
+    .ant-select-selection:hover {
+        border-color: #36cfc9
+    }
+
+    .ant-select-focused .ant-select-selection, .ant-select-selection:active, .ant-select-selection:focus {
+        border-color: #36cfc9;
+        -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+        box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+    }
+
+.ant-select-search--inline .ant-select-search__field {
+    border-radius: 4px
+}
+
+.ant-select-open .ant-select-selection {
+    border-color: #36cfc9;
+    -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+    box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+}
+
+.ant-select-dropdown {
+    border-radius: 4px
+}
+
+.ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled) {
+    background-color: #e6fffb
+}
+
+.ant-select-dropdown-menu-item-disabled, .ant-select-dropdown-menu-item-disabled:hover {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed
+}
+
+.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled) {
+    background-color: #e6fffb
+}
+
+.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon, .ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon {
+    color: #13c2c2
+}
+
+.ant-modal-content {
+    border-radius: 4px
+}
+
+.ant-modal-header {
+    border-radius: 4px 4px 0 0
+}
+
+.ant-modal-footer {
+    border-radius: 0 0 4px 4px
+}
+
+.ant-row + .ant-row:before, .ant-row:after {
+    clear: both
+}
+
+.ant-row-flex, .ant-row-flex:after, .ant-row-flex:before {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex
+}
+
+.ant-card-actions > li > span:hover, .ant-card-actions > li > span > .anticon:hover, .ant-card-actions > li > span a:not(.ant-btn):hover {
+    color: #13c2c2
+}
+
+.ant-layout-sider-zero-width-trigger {
+    border-radius: 0 4px 4px 0
+}
+
+.ant-layout-sider-zero-width-trigger-right {
+    border-radius: 4px 0 0 4px
+}
+
+.ant-layout-sider-light .ant-layout-sider-trigger, .ant-layout-sider-light .ant-layout-sider-zero-width-trigger {
+    color: rgba(0,0,0,.65);
+    background: #fff
+}
+
+.ant-collapse {
+    border-radius: 4px
+}
+
+    .ant-collapse-item:last-child > .ant-collapse-content, .ant-collapse > .ant-collapse-item:last-child, .ant-collapse > .ant-collapse-item:last-child > .ant-collapse-header {
+        border-radius: 0 0 4px 4px
+    }
+
+form .has-feedback .ant-calendar-picker-clear, form .has-feedback .ant-calendar-picker-icon, form .has-feedback .ant-cascader-picker-clear, form .has-feedback .ant-input-search:not(.ant-input-search-enter-button) .ant-input-suffix, form .has-feedback .ant-time-picker-clear, form .has-feedback .ant-time-picker-icon {
+    right: 28px
+}
+
+.ant-form-inline .ant-form-text, .ant-form-inline .has-feedback {
+    display: inline-block
+}
+
+.has-warning .ant-select-selection, .has-warning .ant-select-selection:hover {
+    border-color: #faad14
+}
+
+.has-error .ant-input-number:not([disabled]):hover, .has-error .ant-mention-wrapper .ant-mention-editor, .has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):hover, .has-error .ant-select-selection, .has-error .ant-select-selection:hover, .has-error .ant-time-picker-input:not([disabled]):hover {
+    border-color: #f5222d
+}
+
+    .has-error .ant-cascader-picker:focus .ant-cascader-input, .has-error .ant-mention-wrapper.ant-mention-active:not([disabled]) .ant-mention-editor, .has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):focus {
+        border-color: #ff4d4f;
+        border-right-width: 1px !important;
+        outline: 0;
+        -webkit-box-shadow: 0 0 0 2px rgba(245,34,45,.2);
+        box-shadow: 0 0 0 2px rgba(245,34,45,.2)
+    }
+
+.has-error .ant-cascader-picker:hover .ant-cascader-input, .has-error .ant-transfer-list {
+    border-color: #f5222d
+}
+
+.has-error .ant-transfer-list-search:not([disabled]):hover {
+    border-color: #36cfc9
+}
+
+.has-error .ant-transfer-list-search:not([disabled]):focus {
+    border-color: #36cfc9;
+    -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+    box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+}
+
+.is-validating.has-feedback .ant-form-item-children-icon {
+    color: #13c2c2
+}
+
+.show-help-appear, .show-help-enter, .show-help-leave {
+    -webkit-animation-duration: .3s;
+    animation-duration: .3s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused;
+    -webkit-animation-timing-function: cubic-bezier(.645,.045,.355,1);
+    animation-timing-function: cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-cascader-picker {
+    border-radius: 4px
+}
+
+    .ant-cascader-picker:focus .ant-cascader-input {
+        border-color: #36cfc9;
+        -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+        box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+    }
+
+.ant-cascader-picker-label:hover + .ant-cascader-input {
+    border-color: #36cfc9
+}
+
+.ant-cascader-menus {
+    border-radius: 4px
+}
+
+.ant-cascader-menu:first-child {
+    border-radius: 4px 0 0 4px
+}
+
+.ant-cascader-menu:last-child {
+    border-radius: 0 4px 4px 0
+}
+
+.ant-cascader-menu:only-child {
+    border-radius: 4px
+}
+
+.ant-cascader-menu-item:hover {
+    background: #e6fffb
+}
+
+.ant-select-tree-checkbox-input:focus + .ant-select-tree-checkbox-inner, .ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-inner, .ant-select-tree-checkbox:hover .ant-select-tree-checkbox-inner {
+    border-color: #13c2c2
+}
+
+.ant-select-tree-checkbox-checked:after {
+    border: 1px solid #13c2c2
+}
+
+.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner {
+    background-color: #13c2c2;
+    border-color: #13c2c2
+}
+
+.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner:after {
+    background-color: #13c2c2
+}
+
+.ant-select-tree li .ant-select-tree-node-content-wrapper:hover {
+    background-color: #e6fffb
+}
+
+.ant-select-tree li .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected {
+    background-color: #b5f5ec
+}
+
+.ant-select-tree li span.ant-select-icon_loading .ant-select-switcher-loading-icon, .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-loading-icon, .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-loading-icon {
+    color: #13c2c2
+}
+
+.ant-select-tree-child-tree, .ant-select-tree .ant-select-tree-treenode-loading .ant-select-tree-iconEle {
+    display: none
+}
+
+.ant-select-tree-icon__close, .ant-select-tree-icon__open {
+    margin-right: 2px;
+    vertical-align: top
+}
+
+.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon {
+    color: #13c2c2
+}
+
+.ant-switch:focus {
+    -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+    box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+}
+
+.ant-switch-checked {
+    background-color: #13c2c2
+}
+
+.ant-switch-disabled *, .ant-switch-disabled:after, .ant-switch-disabled:before, .ant-switch-loading *, .ant-switch-loading:after, .ant-switch-loading:before {
+    cursor: not-allowed
+}
+
+.ant-slider-rail, .ant-slider-track {
+    position: absolute;
+    height: 4px;
+    -webkit-transition: background-color .3s;
+    transition: background-color .3s
+}
+
+.ant-slider-track {
+    background-color: #87e8de;
+    border-radius: 4px
+}
+
+.ant-slider-handle {
+    border: 2px solid #87e8de
+}
+
+    .ant-slider-handle:focus {
+        border-color: #42cece;
+        -webkit-box-shadow: 0 0 0 5px rgba(19,194,194,.2);
+        box-shadow: 0 0 0 5px rgba(19,194,194,.2)
+    }
+
+    .ant-slider-handle.ant-tooltip-open {
+        border-color: #13c2c2
+    }
+
+.ant-slider:hover .ant-slider-track {
+    background-color: #5cdbd3
+}
+
+.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) {
+    border-color: #5cdbd3
+}
+
+.ant-slider-dot, .ant-slider-dot:first-child, .ant-slider-dot:last-child {
+    margin-left: -4px
+}
+
+.ant-slider-dot-active {
+    border-color: #89e1e1
+}
+
+.ant-input-number {
+    border-radius: 4px
+}
+
+    .ant-input-number:focus {
+        border-color: #36cfc9;
+        -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+        box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+    }
+
+.ant-input-number-handler:hover .ant-input-number-handler-down-inner, .ant-input-number-handler:hover .ant-input-number-handler-up-inner {
+    color: #36cfc9
+}
+
+.ant-input-number-focused, .ant-input-number:hover {
+    border-color: #36cfc9;
+    border-right-width: 1px !important
+}
+
+.ant-input-number-focused {
+    -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+    box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+}
+
+.ant-input-number-input {
+    border-radius: 4px
+}
+
+.ant-input-number-handler-wrap {
+    border-radius: 0 4px 4px 0
+}
+
+.ant-input-number-handler-up {
+    border-top-right-radius: 4px
+}
+
+.ant-input-number-handler-down {
+    border-bottom-right-radius: 4px
+}
+
+.upload-img-box-9136076486841527 .ant-upload-select-picture-card i {
+    font-size: 32px;
+    color: #999
+}
+
+.upload-img-box-9136076486841527 .ant-upload-select-picture-card .ant-upload-text {
+    margin-top: 8px;
+    color: #666
+}
+
+.slider-box[data-v-6f1c9c0c] {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex
+}
+
+.slider-box > .slider[data-v-6f1c9c0c] {
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    margin-right: 16px
+}
+
+.slider-box > .number[data-v-6f1c9c0c] {
+    width: 70px
+}
+
+.dynamic-opr-button[data-v-3c514c7c]:last {
+    margin-left: 0
+}
+
+.dynamic-opr-button[data-v-3c514c7c] {
+    cursor: pointer;
+    position: relative;
+    top: 4px;
+    font-size: 16px;
+    color: #999;
+    -webkit-transition: all .3s;
+    transition: all .3s;
+    margin-left: 6px
+}
+
+    .dynamic-opr-button[data-v-3c514c7c]:hover {
+        color: #e89
+    }
+
+.dynamic-opr-button[disabled][data-v-3c514c7c] {
+    cursor: not-allowed;
+    opacity: .5
+}
+
+.slider-box[data-v-c2f27656] {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex
+}
+
+.slider-box > .slider[data-v-c2f27656] {
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    margin-right: 16px
+}
+
+.slider-box > .number[data-v-c2f27656] {
+    width: 70px
+}
+
+/*!
+ * Quill Editor v1.3.7
+ * https://quilljs.com/
+ * Copyright (c) 2014, Jason Chen
+ * Copyright (c) 2013, salesforce.com
+ */
+
+/*!
+ * Quill Editor v1.3.7
+ * https://quilljs.com/
+ * Copyright (c) 2014, Jason Chen
+ * Copyright (c) 2013, salesforce.com
+ */ .ql-snow.ql-toolbar:after, .ql-snow .ql-toolbar:after {
+    clear: both;
+    content: "";
+    display: table
+}
+
+.ql-snow.ql-toolbar button, .ql-snow .ql-toolbar button {
+    background: none;
+    border: none;
+    cursor: pointer;
+    display: inline-block;
+    float: left;
+    height: 24px;
+    padding: 3px 5px;
+    width: 28px
+}
+
+    .ql-snow.ql-toolbar button svg, .ql-snow .ql-toolbar button svg {
+        float: left;
+        height: 100%
+    }
+
+    .ql-snow.ql-toolbar button:active:hover, .ql-snow .ql-toolbar button:active:hover {
+        outline: none
+    }
+
+.ql-snow.ql-toolbar input.ql-image[type=file], .ql-snow .ql-toolbar input.ql-image[type=file] {
+    display: none
+}
+
+.ql-snow.ql-toolbar .ql-picker-item.ql-selected, .ql-snow .ql-toolbar .ql-picker-item.ql-selected, .ql-snow.ql-toolbar .ql-picker-item:hover, .ql-snow .ql-toolbar .ql-picker-item:hover, .ql-snow.ql-toolbar .ql-picker-label.ql-active, .ql-snow .ql-toolbar .ql-picker-label.ql-active, .ql-snow.ql-toolbar .ql-picker-label:hover, .ql-snow .ql-toolbar .ql-picker-label:hover, .ql-snow.ql-toolbar button.ql-active, .ql-snow .ql-toolbar button.ql-active, .ql-snow.ql-toolbar button:focus, .ql-snow .ql-toolbar button:focus, .ql-snow.ql-toolbar button:hover, .ql-snow .ql-toolbar button:hover {
+    color: #06c
+}
+
+    .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill, .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, .ql-snow.ql-toolbar button.ql-active .ql-fill, .ql-snow .ql-toolbar button.ql-active .ql-fill, .ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill, .ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill, .ql-snow.ql-toolbar button:focus .ql-fill, .ql-snow .ql-toolbar button:focus .ql-fill, .ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill, .ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill, .ql-snow.ql-toolbar button:hover .ql-fill, .ql-snow .ql-toolbar button:hover .ql-fill, .ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill, .ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill {
+        fill: #06c
+    }
+
+    .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke, .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter, .ql-snow.ql-toolbar button.ql-active .ql-stroke, .ql-snow .ql-toolbar button.ql-active .ql-stroke, .ql-snow.ql-toolbar button.ql-active .ql-stroke-miter, .ql-snow .ql-toolbar button.ql-active .ql-stroke-miter, .ql-snow.ql-toolbar button:focus .ql-stroke, .ql-snow .ql-toolbar button:focus .ql-stroke, .ql-snow.ql-toolbar button:focus .ql-stroke-miter, .ql-snow .ql-toolbar button:focus .ql-stroke-miter, .ql-snow.ql-toolbar button:hover .ql-stroke, .ql-snow .ql-toolbar button:hover .ql-stroke, .ql-snow.ql-toolbar button:hover .ql-stroke-miter, .ql-snow .ql-toolbar button:hover .ql-stroke-miter {
+        stroke: #06c
+    }
+
+@media (pointer:coarse) {
+    .ql-snow.ql-toolbar button:hover:not(.ql-active), .ql-snow .ql-toolbar button:hover:not(.ql-active) {
+        color: #444
+    }
+
+        .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill, .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill, .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill, .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill {
+            fill: #444
+        }
+
+        .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke, .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke, .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter, .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter {
+            stroke: #444
+        }
+}
+
+.ql-snow, .ql-snow * {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+    .ql-snow .ql-hidden {
+        display: none
+    }
+
+    .ql-snow .ql-out-bottom, .ql-snow .ql-out-top {
+        visibility: hidden
+    }
+
+    .ql-snow .ql-tooltip {
+        position: absolute;
+        -webkit-transform: translateY(10px);
+        transform: translateY(10px)
+    }
+
+        .ql-snow .ql-tooltip a {
+            cursor: pointer;
+            text-decoration: none
+        }
+
+        .ql-snow .ql-tooltip.ql-flip {
+            -webkit-transform: translateY(-10px);
+            transform: translateY(-10px)
+        }
+
+    .ql-snow .ql-formats {
+        display: inline-block;
+        vertical-align: middle
+    }
+
+        .ql-snow .ql-formats:after {
+            clear: both;
+            content: "";
+            display: table
+        }
+
+    .ql-snow .ql-stroke {
+        fill: none;
+        stroke: #444;
+        stroke-linecap: round;
+        stroke-linejoin: round;
+        stroke-width: 2
+    }
+
+    .ql-snow .ql-stroke-miter {
+        fill: none;
+        stroke: #444;
+        stroke-miterlimit: 10;
+        stroke-width: 2
+    }
+
+    .ql-snow .ql-fill, .ql-snow .ql-stroke.ql-fill {
+        fill: #444
+    }
+
+    .ql-snow .ql-empty {
+        fill: none
+    }
+
+    .ql-snow .ql-even {
+        fill-rule: evenodd
+    }
+
+    .ql-snow .ql-stroke.ql-thin, .ql-snow .ql-thin {
+        stroke-width: 1
+    }
+
+    .ql-snow .ql-transparent {
+        opacity: .4
+    }
+
+    .ql-snow .ql-direction svg:last-child {
+        display: none
+    }
+
+    .ql-snow .ql-direction.ql-active svg:last-child {
+        display: inline
+    }
+
+    .ql-snow .ql-direction.ql-active svg:first-child {
+        display: none
+    }
+
+    .ql-snow .ql-editor h1 {
+        font-size: 2em
+    }
+
+    .ql-snow .ql-editor h2 {
+        font-size: 1.5em
+    }
+
+    .ql-snow .ql-editor h3 {
+        font-size: 1.17em
+    }
+
+    .ql-snow .ql-editor h4 {
+        font-size: 1em
+    }
+
+    .ql-snow .ql-editor h5 {
+        font-size: .83em
+    }
+
+    .ql-snow .ql-editor h6 {
+        font-size: .67em
+    }
+
+    .ql-snow .ql-editor a {
+        text-decoration: underline
+    }
+
+    .ql-snow .ql-editor blockquote {
+        border-left: 4px solid #ccc;
+        margin-bottom: 5px;
+        margin-top: 5px;
+        padding-left: 16px
+    }
+
+    .ql-snow .ql-editor code, .ql-snow .ql-editor pre {
+        background-color: #f0f0f0;
+        border-radius: 3px
+    }
+
+    .ql-snow .ql-editor pre {
+        white-space: pre-wrap;
+        margin-bottom: 5px;
+        margin-top: 5px;
+        padding: 5px 10px
+    }
+
+    .ql-snow .ql-editor code {
+        font-size: 85%;
+        padding: 2px 4px
+    }
+
+    .ql-snow .ql-editor pre.ql-syntax {
+        background-color: #23241f;
+        color: #f8f8f2;
+        overflow: visible
+    }
+
+    .ql-snow .ql-editor img {
+        max-width: 100%
+    }
+
+    .ql-snow .ql-picker {
+        color: #444;
+        display: inline-block;
+        float: left;
+        font-size: 14px;
+        font-weight: 500;
+        height: 24px;
+        position: relative;
+        vertical-align: middle
+    }
+
+    .ql-snow .ql-picker-label {
+        cursor: pointer;
+        display: inline-block;
+        height: 100%;
+        padding-left: 8px;
+        padding-right: 2px;
+        position: relative;
+        width: 100%
+    }
+
+        .ql-snow .ql-picker-label:before {
+            display: inline-block;
+            line-height: 22px
+        }
+
+    .ql-snow .ql-picker-options {
+        background-color: #fff;
+        display: none;
+        min-width: 100%;
+        padding: 4px 8px;
+        position: absolute;
+        white-space: nowrap
+    }
+
+        .ql-snow .ql-picker-options .ql-picker-item {
+            cursor: pointer;
+            display: block;
+            padding-bottom: 5px;
+            padding-top: 5px
+        }
+
+    .ql-snow .ql-picker.ql-expanded .ql-picker-label {
+        color: #ccc;
+        z-index: 2
+    }
+
+        .ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
+            fill: #ccc
+        }
+
+        .ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
+            stroke: #ccc
+        }
+
+    .ql-snow .ql-picker.ql-expanded .ql-picker-options {
+        display: block;
+        margin-top: -1px;
+        top: 100%;
+        z-index: 1
+    }
+
+    .ql-snow .ql-color-picker, .ql-snow .ql-icon-picker {
+        width: 28px
+    }
+
+        .ql-snow .ql-color-picker .ql-picker-label, .ql-snow .ql-icon-picker .ql-picker-label {
+            padding: 2px 4px
+        }
+
+            .ql-snow .ql-color-picker .ql-picker-label svg, .ql-snow .ql-icon-picker .ql-picker-label svg {
+                right: 4px
+            }
+
+        .ql-snow .ql-icon-picker .ql-picker-options {
+            padding: 4px 0
+        }
+
+        .ql-snow .ql-icon-picker .ql-picker-item {
+            height: 24px;
+            width: 24px;
+            padding: 2px 4px
+        }
+
+        .ql-snow .ql-color-picker .ql-picker-options {
+            padding: 3px 5px;
+            width: 152px
+        }
+
+        .ql-snow .ql-color-picker .ql-picker-item {
+            border: 1px solid transparent;
+            float: left;
+            height: 16px;
+            margin: 2px;
+            padding: 0;
+            width: 16px
+        }
+
+    .ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {
+        position: absolute;
+        margin-top: -9px;
+        right: 0;
+        top: 50%;
+        width: 18px
+    }
+
+    .ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before, .ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before, .ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before {
+        content: attr(data-label)
+    }
+
+    .ql-snow .ql-picker.ql-header {
+        width: 98px
+    }
+
+        .ql-snow .ql-picker.ql-header .ql-picker-item:before, .ql-snow .ql-picker.ql-header .ql-picker-label:before {
+            content: "Normal"
+        }
+
+        .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before {
+            content: "Heading 1"
+        }
+
+        .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before {
+            content: "Heading 2"
+        }
+
+        .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before {
+            content: "Heading 3"
+        }
+
+        .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before {
+            content: "Heading 4"
+        }
+
+        .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before {
+            content: "Heading 5"
+        }
+
+        .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before {
+            content: "Heading 6"
+        }
+
+        .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before {
+            font-size: 2em
+        }
+
+        .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before {
+            font-size: 1.5em
+        }
+
+        .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before {
+            font-size: 1.17em
+        }
+
+        .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before {
+            font-size: 1em
+        }
+
+        .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before {
+            font-size: .83em
+        }
+
+        .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before {
+            font-size: .67em
+        }
+
+    .ql-snow .ql-picker.ql-font {
+        width: 108px
+    }
+
+        .ql-snow .ql-picker.ql-font .ql-picker-item:before, .ql-snow .ql-picker.ql-font .ql-picker-label:before {
+            content: "Sans Serif"
+        }
+
+        .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before, .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before {
+            content: "Serif"
+        }
+
+        .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before, .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before {
+            content: "Monospace"
+        }
+
+        .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before {
+            font-family: Georgia,Times New Roman,serif
+        }
+
+        .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before {
+            font-family: Monaco,Courier New,monospace
+        }
+
+    .ql-snow .ql-picker.ql-size {
+        width: 98px
+    }
+
+        .ql-snow .ql-picker.ql-size .ql-picker-item:before, .ql-snow .ql-picker.ql-size .ql-picker-label:before {
+            content: "Normal"
+        }
+
+        .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before, .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before {
+            content: "Small"
+        }
+
+        .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before, .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before {
+            content: "Large"
+        }
+
+        .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before, .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before {
+            content: "Huge"
+        }
+
+        .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before {
+            font-size: 10px
+        }
+
+        .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before {
+            font-size: 18px
+        }
+
+        .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before {
+            font-size: 32px
+        }
+
+    .ql-snow .ql-color-picker.ql-background .ql-picker-item {
+        background-color: #fff
+    }
+
+    .ql-snow .ql-color-picker.ql-color .ql-picker-item {
+        background-color: #000
+    }
+
+.ql-toolbar.ql-snow {
+    border: 1px solid #ccc;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    font-family: Helvetica Neue,Helvetica,Arial,sans-serif;
+    padding: 8px
+}
+
+    .ql-toolbar.ql-snow .ql-formats {
+        margin-right: 15px
+    }
+
+    .ql-toolbar.ql-snow .ql-picker-label {
+        border: 1px solid transparent
+    }
+
+    .ql-toolbar.ql-snow .ql-picker-options {
+        border: 1px solid transparent;
+        -webkit-box-shadow: rgba(0,0,0,.2) 0 2px 8px;
+        box-shadow: 0 2px 8px rgba(0,0,0,.2)
+    }
+
+    .ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label, .ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
+        border-color: #ccc
+    }
+
+    .ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected, .ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover {
+        border-color: #000
+    }
+
+    .ql-toolbar.ql-snow + .ql-container.ql-snow {
+        border-top: 0
+    }
+
+.ql-snow .ql-tooltip {
+    background-color: #fff;
+    border: 1px solid #ccc;
+    -webkit-box-shadow: 0 0 5px #ddd;
+    box-shadow: 0 0 5px #ddd;
+    color: #444;
+    padding: 5px 12px;
+    white-space: nowrap
+}
+
+    .ql-snow .ql-tooltip:before {
+        content: "Visit URL:";
+        line-height: 26px;
+        margin-right: 8px
+    }
+
+    .ql-snow .ql-tooltip input[type=text] {
+        display: none;
+        border: 1px solid #ccc;
+        font-size: 13px;
+        height: 26px;
+        margin: 0;
+        padding: 3px 5px;
+        width: 170px
+    }
+
+    .ql-snow .ql-tooltip a.ql-preview {
+        display: inline-block;
+        max-width: 200px;
+        overflow-x: hidden;
+        text-overflow: ellipsis;
+        vertical-align: top
+    }
+
+    .ql-snow .ql-tooltip a.ql-action:after {
+        border-right: 1px solid #ccc;
+        content: "Edit";
+        margin-left: 16px;
+        padding-right: 8px
+    }
+
+    .ql-snow .ql-tooltip a.ql-remove:before {
+        content: "Remove";
+        margin-left: 8px
+    }
+
+    .ql-snow .ql-tooltip a {
+        line-height: 26px
+    }
+
+    .ql-snow .ql-tooltip.ql-editing a.ql-preview, .ql-snow .ql-tooltip.ql-editing a.ql-remove {
+        display: none
+    }
+
+    .ql-snow .ql-tooltip.ql-editing input[type=text] {
+        display: inline-block
+    }
+
+    .ql-snow .ql-tooltip.ql-editing a.ql-action:after {
+        border-right: 0;
+        content: "Save";
+        padding-right: 0
+    }
+
+    .ql-snow .ql-tooltip[data-mode=link]:before {
+        content: "Enter link:"
+    }
+
+    .ql-snow .ql-tooltip[data-mode=formula]:before {
+        content: "Enter formula:"
+    }
+
+    .ql-snow .ql-tooltip[data-mode=video]:before {
+        content: "Enter video:"
+    }
+
+.ql-snow a {
+    color: #06c
+}
+
+.ql-container.ql-snow {
+    border: 1px solid #ccc
+}
+
+/*!
+ * Quill Editor v1.3.7
+ * https://quilljs.com/
+ * Copyright (c) 2014, Jason Chen
+ * Copyright (c) 2013, salesforce.com
+ */ .ql-container {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    font-family: Helvetica,Arial,sans-serif;
+    font-size: 13px;
+    height: 100%;
+    margin: 0;
+    position: relative
+}
+
+    .ql-container.ql-disabled .ql-tooltip {
+        visibility: hidden
+    }
+
+    .ql-container.ql-disabled .ql-editor ul[data-checked] > li:before {
+        pointer-events: none
+    }
+
+.ql-clipboard {
+    left: -100000px;
+    height: 1px;
+    overflow-y: hidden;
+    position: absolute;
+    top: 50%
+}
+
+    .ql-clipboard p {
+        margin: 0;
+        padding: 0
+    }
+
+.ql-editor {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    line-height: 1.42;
+    height: 100%;
+    outline: none;
+    overflow-y: auto;
+    padding: 12px 15px;
+    -o-tab-size: 4;
+    tab-size: 4;
+    -moz-tab-size: 4;
+    text-align: left;
+    white-space: pre-wrap;
+    word-wrap: break-word
+}
+
+    .ql-editor > * {
+        cursor: text
+    }
+
+    .ql-editor blockquote, .ql-editor h1, .ql-editor h2, .ql-editor h3, .ql-editor h4, .ql-editor h5, .ql-editor h6, .ql-editor ol, .ql-editor p, .ql-editor pre, .ql-editor ul {
+        margin: 0;
+        padding: 0;
+        counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9
+    }
+
+    .ql-editor ol, .ql-editor ul {
+        padding-left: 1.5em
+    }
+
+        .ql-editor ol > li, .ql-editor ul > li {
+            list-style-type: none
+        }
+
+            .ql-editor ul > li:before {
+                content: "\2022"
+            }
+
+        .ql-editor ul[data-checked=false], .ql-editor ul[data-checked=true] {
+            pointer-events: none
+        }
+
+            .ql-editor ul[data-checked=false] > li *, .ql-editor ul[data-checked=true] > li * {
+                pointer-events: all
+            }
+
+            .ql-editor ul[data-checked=false] > li:before, .ql-editor ul[data-checked=true] > li:before {
+                color: #777;
+                cursor: pointer;
+                pointer-events: all
+            }
+
+            .ql-editor ul[data-checked=true] > li:before {
+                content: "\2611"
+            }
+
+            .ql-editor ul[data-checked=false] > li:before {
+                content: "\2610"
+            }
+
+    .ql-editor li:before {
+        display: inline-block;
+        white-space: nowrap;
+        width: 1.2em
+    }
+
+    .ql-editor li:not(.ql-direction-rtl):before {
+        margin-left: -1.5em;
+        margin-right: .3em;
+        text-align: right
+    }
+
+    .ql-editor li.ql-direction-rtl:before {
+        margin-left: .3em;
+        margin-right: -1.5em
+    }
+
+    .ql-editor ol li:not(.ql-direction-rtl), .ql-editor ul li:not(.ql-direction-rtl) {
+        padding-left: 1.5em
+    }
+
+    .ql-editor ol li.ql-direction-rtl, .ql-editor ul li.ql-direction-rtl {
+        padding-right: 1.5em
+    }
+
+    .ql-editor ol li {
+        counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
+        counter-increment: list-0
+    }
+
+        .ql-editor ol li:before {
+            content: counter(list-0,decimal) ". "
+        }
+
+        .ql-editor ol li.ql-indent-1 {
+            counter-increment: list-1
+        }
+
+            .ql-editor ol li.ql-indent-1:before {
+                content: counter(list-1,lower-alpha) ". "
+            }
+
+        .ql-editor ol li.ql-indent-1 {
+            counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9
+        }
+
+        .ql-editor ol li.ql-indent-2 {
+            counter-increment: list-2
+        }
+
+            .ql-editor ol li.ql-indent-2:before {
+                content: counter(list-2,lower-roman) ". "
+            }
+
+        .ql-editor ol li.ql-indent-2 {
+            counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9
+        }
+
+        .ql-editor ol li.ql-indent-3 {
+            counter-increment: list-3
+        }
+
+            .ql-editor ol li.ql-indent-3:before {
+                content: counter(list-3,decimal) ". "
+            }
+
+        .ql-editor ol li.ql-indent-3 {
+            counter-reset: list-4 list-5 list-6 list-7 list-8 list-9
+        }
+
+        .ql-editor ol li.ql-indent-4 {
+            counter-increment: list-4
+        }
+
+            .ql-editor ol li.ql-indent-4:before {
+                content: counter(list-4,lower-alpha) ". "
+            }
+
+        .ql-editor ol li.ql-indent-4 {
+            counter-reset: list-5 list-6 list-7 list-8 list-9
+        }
+
+        .ql-editor ol li.ql-indent-5 {
+            counter-increment: list-5
+        }
+
+            .ql-editor ol li.ql-indent-5:before {
+                content: counter(list-5,lower-roman) ". "
+            }
+
+        .ql-editor ol li.ql-indent-5 {
+            counter-reset: list-6 list-7 list-8 list-9
+        }
+
+        .ql-editor ol li.ql-indent-6 {
+            counter-increment: list-6
+        }
+
+            .ql-editor ol li.ql-indent-6:before {
+                content: counter(list-6,decimal) ". "
+            }
+
+        .ql-editor ol li.ql-indent-6 {
+            counter-reset: list-7 list-8 list-9
+        }
+
+        .ql-editor ol li.ql-indent-7 {
+            counter-increment: list-7
+        }
+
+            .ql-editor ol li.ql-indent-7:before {
+                content: counter(list-7,lower-alpha) ". "
+            }
+
+        .ql-editor ol li.ql-indent-7 {
+            counter-reset: list-8 list-9
+        }
+
+        .ql-editor ol li.ql-indent-8 {
+            counter-increment: list-8
+        }
+
+            .ql-editor ol li.ql-indent-8:before {
+                content: counter(list-8,lower-roman) ". "
+            }
+
+        .ql-editor ol li.ql-indent-8 {
+            counter-reset: list-9
+        }
+
+        .ql-editor ol li.ql-indent-9 {
+            counter-increment: list-9
+        }
+
+            .ql-editor ol li.ql-indent-9:before {
+                content: counter(list-9,decimal) ". "
+            }
+
+    .ql-editor .ql-indent-1:not(.ql-direction-rtl) {
+        padding-left: 3em
+    }
+
+    .ql-editor li.ql-indent-1:not(.ql-direction-rtl) {
+        padding-left: 4.5em
+    }
+
+    .ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {
+        padding-right: 3em
+    }
+
+    .ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {
+        padding-right: 4.5em
+    }
+
+    .ql-editor .ql-indent-2:not(.ql-direction-rtl) {
+        padding-left: 6em
+    }
+
+    .ql-editor li.ql-indent-2:not(.ql-direction-rtl) {
+        padding-left: 7.5em
+    }
+
+    .ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {
+        padding-right: 6em
+    }
+
+    .ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {
+        padding-right: 7.5em
+    }
+
+    .ql-editor .ql-indent-3:not(.ql-direction-rtl) {
+        padding-left: 9em
+    }
+
+    .ql-editor li.ql-indent-3:not(.ql-direction-rtl) {
+        padding-left: 10.5em
+    }
+
+    .ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {
+        padding-right: 9em
+    }
+
+    .ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {
+        padding-right: 10.5em
+    }
+
+    .ql-editor .ql-indent-4:not(.ql-direction-rtl) {
+        padding-left: 12em
+    }
+
+    .ql-editor li.ql-indent-4:not(.ql-direction-rtl) {
+        padding-left: 13.5em
+    }
+
+    .ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {
+        padding-right: 12em
+    }
+
+    .ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {
+        padding-right: 13.5em
+    }
+
+    .ql-editor .ql-indent-5:not(.ql-direction-rtl) {
+        padding-left: 15em
+    }
+
+    .ql-editor li.ql-indent-5:not(.ql-direction-rtl) {
+        padding-left: 16.5em
+    }
+
+    .ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {
+        padding-right: 15em
+    }
+
+    .ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {
+        padding-right: 16.5em
+    }
+
+    .ql-editor .ql-indent-6:not(.ql-direction-rtl) {
+        padding-left: 18em
+    }
+
+    .ql-editor li.ql-indent-6:not(.ql-direction-rtl) {
+        padding-left: 19.5em
+    }
+
+    .ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {
+        padding-right: 18em
+    }
+
+    .ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {
+        padding-right: 19.5em
+    }
+
+    .ql-editor .ql-indent-7:not(.ql-direction-rtl) {
+        padding-left: 21em
+    }
+
+    .ql-editor li.ql-indent-7:not(.ql-direction-rtl) {
+        padding-left: 22.5em
+    }
+
+    .ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {
+        padding-right: 21em
+    }
+
+    .ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {
+        padding-right: 22.5em
+    }
+
+    .ql-editor .ql-indent-8:not(.ql-direction-rtl) {
+        padding-left: 24em
+    }
+
+    .ql-editor li.ql-indent-8:not(.ql-direction-rtl) {
+        padding-left: 25.5em
+    }
+
+    .ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {
+        padding-right: 24em
+    }
+
+    .ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {
+        padding-right: 25.5em
+    }
+
+    .ql-editor .ql-indent-9:not(.ql-direction-rtl) {
+        padding-left: 27em
+    }
+
+    .ql-editor li.ql-indent-9:not(.ql-direction-rtl) {
+        padding-left: 28.5em
+    }
+
+    .ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {
+        padding-right: 27em
+    }
+
+    .ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {
+        padding-right: 28.5em
+    }
+
+    .ql-editor .ql-video {
+        display: block;
+        max-width: 100%
+    }
+
+        .ql-editor .ql-video.ql-align-center {
+            margin: 0 auto
+        }
+
+        .ql-editor .ql-video.ql-align-right {
+            margin: 0 0 0 auto
+        }
+
+    .ql-editor .ql-bg-black {
+        background-color: #000
+    }
+
+    .ql-editor .ql-bg-red {
+        background-color: #e60000
+    }
+
+    .ql-editor .ql-bg-orange {
+        background-color: #f90
+    }
+
+    .ql-editor .ql-bg-yellow {
+        background-color: #ff0
+    }
+
+    .ql-editor .ql-bg-green {
+        background-color: #008a00
+    }
+
+    .ql-editor .ql-bg-blue {
+        background-color: #06c
+    }
+
+    .ql-editor .ql-bg-purple {
+        background-color: #93f
+    }
+
+    .ql-editor .ql-color-white {
+        color: #fff
+    }
+
+    .ql-editor .ql-color-red {
+        color: #e60000
+    }
+
+    .ql-editor .ql-color-orange {
+        color: #f90
+    }
+
+    .ql-editor .ql-color-yellow {
+        color: #ff0
+    }
+
+    .ql-editor .ql-color-green {
+        color: #008a00
+    }
+
+    .ql-editor .ql-color-blue {
+        color: #06c
+    }
+
+    .ql-editor .ql-color-purple {
+        color: #93f
+    }
+
+    .ql-editor .ql-font-serif {
+        font-family: Georgia,Times New Roman,serif
+    }
+
+    .ql-editor .ql-font-monospace {
+        font-family: Monaco,Courier New,monospace
+    }
+
+    .ql-editor .ql-size-small {
+        font-size: .75em
+    }
+
+    .ql-editor .ql-size-large {
+        font-size: 1.5em
+    }
+
+    .ql-editor .ql-size-huge {
+        font-size: 2.5em
+    }
+
+    .ql-editor .ql-direction-rtl {
+        direction: rtl;
+        text-align: inherit
+    }
+
+    .ql-editor .ql-align-center {
+        text-align: center
+    }
+
+    .ql-editor .ql-align-justify {
+        text-align: justify
+    }
+
+    .ql-editor .ql-align-right {
+        text-align: right
+    }
+
+    .ql-editor.ql-blank:before {
+        color: rgba(0,0,0,.6);
+        content: attr(data-placeholder);
+        font-style: italic;
+        left: 15px;
+        pointer-events: none;
+        position: absolute;
+        right: 15px
+    }
+
+.ql-bubble.ql-toolbar:after, .ql-bubble .ql-toolbar:after {
+    clear: both;
+    content: "";
+    display: table
+}
+
+.ql-bubble.ql-toolbar button, .ql-bubble .ql-toolbar button {
+    background: none;
+    border: none;
+    cursor: pointer;
+    display: inline-block;
+    float: left;
+    height: 24px;
+    padding: 3px 5px;
+    width: 28px
+}
+
+    .ql-bubble.ql-toolbar button svg, .ql-bubble .ql-toolbar button svg {
+        float: left;
+        height: 100%
+    }
+
+    .ql-bubble.ql-toolbar button:active:hover, .ql-bubble .ql-toolbar button:active:hover {
+        outline: none
+    }
+
+.ql-bubble.ql-toolbar input.ql-image[type=file], .ql-bubble .ql-toolbar input.ql-image[type=file] {
+    display: none
+}
+
+.ql-bubble.ql-toolbar .ql-picker-item.ql-selected, .ql-bubble .ql-toolbar .ql-picker-item.ql-selected, .ql-bubble.ql-toolbar .ql-picker-item:hover, .ql-bubble .ql-toolbar .ql-picker-item:hover, .ql-bubble.ql-toolbar .ql-picker-label.ql-active, .ql-bubble .ql-toolbar .ql-picker-label.ql-active, .ql-bubble.ql-toolbar .ql-picker-label:hover, .ql-bubble .ql-toolbar .ql-picker-label:hover, .ql-bubble.ql-toolbar button.ql-active, .ql-bubble .ql-toolbar button.ql-active, .ql-bubble.ql-toolbar button:focus, .ql-bubble .ql-toolbar button:focus, .ql-bubble.ql-toolbar button:hover, .ql-bubble .ql-toolbar button:hover {
+    color: #fff
+}
+
+    .ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-fill, .ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-fill, .ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, .ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, .ql-bubble.ql-toolbar .ql-picker-item:hover .ql-fill, .ql-bubble .ql-toolbar .ql-picker-item:hover .ql-fill, .ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, .ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, .ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-fill, .ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-fill, .ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, .ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, .ql-bubble.ql-toolbar .ql-picker-label:hover .ql-fill, .ql-bubble .ql-toolbar .ql-picker-label:hover .ql-fill, .ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, .ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, .ql-bubble.ql-toolbar button.ql-active .ql-fill, .ql-bubble .ql-toolbar button.ql-active .ql-fill, .ql-bubble.ql-toolbar button.ql-active .ql-stroke.ql-fill, .ql-bubble .ql-toolbar button.ql-active .ql-stroke.ql-fill, .ql-bubble.ql-toolbar button:focus .ql-fill, .ql-bubble .ql-toolbar button:focus .ql-fill, .ql-bubble.ql-toolbar button:focus .ql-stroke.ql-fill, .ql-bubble .ql-toolbar button:focus .ql-stroke.ql-fill, .ql-bubble.ql-toolbar button:hover .ql-fill, .ql-bubble .ql-toolbar button:hover .ql-fill, .ql-bubble.ql-toolbar button:hover .ql-stroke.ql-fill, .ql-bubble .ql-toolbar button:hover .ql-stroke.ql-fill {
+        fill: #fff
+    }
+
+    .ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, .ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke, .ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, .ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, .ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke, .ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke, .ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke-miter, .ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke-miter, .ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke, .ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke, .ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, .ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, .ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke, .ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke, .ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke-miter, .ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke-miter, .ql-bubble.ql-toolbar button.ql-active .ql-stroke, .ql-bubble .ql-toolbar button.ql-active .ql-stroke, .ql-bubble.ql-toolbar button.ql-active .ql-stroke-miter, .ql-bubble .ql-toolbar button.ql-active .ql-stroke-miter, .ql-bubble.ql-toolbar button:focus .ql-stroke, .ql-bubble .ql-toolbar button:focus .ql-stroke, .ql-bubble.ql-toolbar button:focus .ql-stroke-miter, .ql-bubble .ql-toolbar button:focus .ql-stroke-miter, .ql-bubble.ql-toolbar button:hover .ql-stroke, .ql-bubble .ql-toolbar button:hover .ql-stroke, .ql-bubble.ql-toolbar button:hover .ql-stroke-miter, .ql-bubble .ql-toolbar button:hover .ql-stroke-miter {
+        stroke: #fff
+    }
+
+@media (pointer:coarse) {
+    .ql-bubble.ql-toolbar button:hover:not(.ql-active), .ql-bubble .ql-toolbar button:hover:not(.ql-active) {
+        color: #ccc
+    }
+
+        .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-fill, .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-fill, .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill, .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill {
+            fill: #ccc
+        }
+
+        .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke, .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke, .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter, .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter {
+            stroke: #ccc
+        }
+}
+
+.ql-bubble, .ql-bubble * {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+    .ql-bubble .ql-hidden {
+        display: none
+    }
+
+    .ql-bubble .ql-out-bottom, .ql-bubble .ql-out-top {
+        visibility: hidden
+    }
+
+    .ql-bubble .ql-tooltip {
+        position: absolute;
+        -webkit-transform: translateY(10px);
+        transform: translateY(10px)
+    }
+
+        .ql-bubble .ql-tooltip a {
+            cursor: pointer;
+            text-decoration: none
+        }
+
+        .ql-bubble .ql-tooltip.ql-flip {
+            -webkit-transform: translateY(-10px);
+            transform: translateY(-10px)
+        }
+
+    .ql-bubble .ql-formats {
+        display: inline-block;
+        vertical-align: middle
+    }
+
+        .ql-bubble .ql-formats:after {
+            clear: both;
+            content: "";
+            display: table
+        }
+
+    .ql-bubble .ql-stroke {
+        fill: none;
+        stroke: #ccc;
+        stroke-linecap: round;
+        stroke-linejoin: round;
+        stroke-width: 2
+    }
+
+    .ql-bubble .ql-stroke-miter {
+        fill: none;
+        stroke: #ccc;
+        stroke-miterlimit: 10;
+        stroke-width: 2
+    }
+
+    .ql-bubble .ql-fill, .ql-bubble .ql-stroke.ql-fill {
+        fill: #ccc
+    }
+
+    .ql-bubble .ql-empty {
+        fill: none
+    }
+
+    .ql-bubble .ql-even {
+        fill-rule: evenodd
+    }
+
+    .ql-bubble .ql-stroke.ql-thin, .ql-bubble .ql-thin {
+        stroke-width: 1
+    }
+
+    .ql-bubble .ql-transparent {
+        opacity: .4
+    }
+
+    .ql-bubble .ql-direction svg:last-child {
+        display: none
+    }
+
+    .ql-bubble .ql-direction.ql-active svg:last-child {
+        display: inline
+    }
+
+    .ql-bubble .ql-direction.ql-active svg:first-child {
+        display: none
+    }
+
+    .ql-bubble .ql-editor h1 {
+        font-size: 2em
+    }
+
+    .ql-bubble .ql-editor h2 {
+        font-size: 1.5em
+    }
+
+    .ql-bubble .ql-editor h3 {
+        font-size: 1.17em
+    }
+
+    .ql-bubble .ql-editor h4 {
+        font-size: 1em
+    }
+
+    .ql-bubble .ql-editor h5 {
+        font-size: .83em
+    }
+
+    .ql-bubble .ql-editor h6 {
+        font-size: .67em
+    }
+
+    .ql-bubble .ql-editor a {
+        text-decoration: underline
+    }
+
+    .ql-bubble .ql-editor blockquote {
+        border-left: 4px solid #ccc;
+        margin-bottom: 5px;
+        margin-top: 5px;
+        padding-left: 16px
+    }
+
+    .ql-bubble .ql-editor code, .ql-bubble .ql-editor pre {
+        background-color: #f0f0f0;
+        border-radius: 3px
+    }
+
+    .ql-bubble .ql-editor pre {
+        white-space: pre-wrap;
+        margin-bottom: 5px;
+        margin-top: 5px;
+        padding: 5px 10px
+    }
+
+    .ql-bubble .ql-editor code {
+        font-size: 85%;
+        padding: 2px 4px
+    }
+
+    .ql-bubble .ql-editor pre.ql-syntax {
+        background-color: #23241f;
+        color: #f8f8f2;
+        overflow: visible
+    }
+
+    .ql-bubble .ql-editor img {
+        max-width: 100%
+    }
+
+    .ql-bubble .ql-picker {
+        color: #ccc;
+        display: inline-block;
+        float: left;
+        font-size: 14px;
+        font-weight: 500;
+        height: 24px;
+        position: relative;
+        vertical-align: middle
+    }
+
+    .ql-bubble .ql-picker-label {
+        cursor: pointer;
+        display: inline-block;
+        height: 100%;
+        padding-left: 8px;
+        padding-right: 2px;
+        position: relative;
+        width: 100%
+    }
+
+        .ql-bubble .ql-picker-label:before {
+            display: inline-block;
+            line-height: 22px
+        }
+
+    .ql-bubble .ql-picker-options {
+        background-color: #444;
+        display: none;
+        min-width: 100%;
+        padding: 4px 8px;
+        position: absolute;
+        white-space: nowrap
+    }
+
+        .ql-bubble .ql-picker-options .ql-picker-item {
+            cursor: pointer;
+            display: block;
+            padding-bottom: 5px;
+            padding-top: 5px
+        }
+
+    .ql-bubble .ql-picker.ql-expanded .ql-picker-label {
+        color: #777;
+        z-index: 2
+    }
+
+        .ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-fill {
+            fill: #777
+        }
+
+        .ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
+            stroke: #777
+        }
+
+    .ql-bubble .ql-picker.ql-expanded .ql-picker-options {
+        display: block;
+        margin-top: -1px;
+        top: 100%;
+        z-index: 1
+    }
+
+    .ql-bubble .ql-color-picker, .ql-bubble .ql-icon-picker {
+        width: 28px
+    }
+
+        .ql-bubble .ql-color-picker .ql-picker-label, .ql-bubble .ql-icon-picker .ql-picker-label {
+            padding: 2px 4px
+        }
+
+            .ql-bubble .ql-color-picker .ql-picker-label svg, .ql-bubble .ql-icon-picker .ql-picker-label svg {
+                right: 4px
+            }
+
+        .ql-bubble .ql-icon-picker .ql-picker-options {
+            padding: 4px 0
+        }
+
+        .ql-bubble .ql-icon-picker .ql-picker-item {
+            height: 24px;
+            width: 24px;
+            padding: 2px 4px
+        }
+
+        .ql-bubble .ql-color-picker .ql-picker-options {
+            padding: 3px 5px;
+            width: 152px
+        }
+
+        .ql-bubble .ql-color-picker .ql-picker-item {
+            border: 1px solid transparent;
+            float: left;
+            height: 16px;
+            margin: 2px;
+            padding: 0;
+            width: 16px
+        }
+
+    .ql-bubble .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {
+        position: absolute;
+        margin-top: -9px;
+        right: 0;
+        top: 50%;
+        width: 18px
+    }
+
+    .ql-bubble .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before, .ql-bubble .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before, .ql-bubble .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before, .ql-bubble .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before, .ql-bubble .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before, .ql-bubble .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before {
+        content: attr(data-label)
+    }
+
+    .ql-bubble .ql-picker.ql-header {
+        width: 98px
+    }
+
+        .ql-bubble .ql-picker.ql-header .ql-picker-item:before, .ql-bubble .ql-picker.ql-header .ql-picker-label:before {
+            content: "Normal"
+        }
+
+        .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]:before, .ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="1"]:before {
+            content: "Heading 1"
+        }
+
+        .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]:before, .ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="2"]:before {
+            content: "Heading 2"
+        }
+
+        .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]:before, .ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="3"]:before {
+            content: "Heading 3"
+        }
+
+        .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]:before, .ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="4"]:before {
+            content: "Heading 4"
+        }
+
+        .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]:before, .ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="5"]:before {
+            content: "Heading 5"
+        }
+
+        .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]:before, .ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="6"]:before {
+            content: "Heading 6"
+        }
+
+        .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]:before {
+            font-size: 2em
+        }
+
+        .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]:before {
+            font-size: 1.5em
+        }
+
+        .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]:before {
+            font-size: 1.17em
+        }
+
+        .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]:before {
+            font-size: 1em
+        }
+
+        .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]:before {
+            font-size: .83em
+        }
+
+        .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]:before {
+            font-size: .67em
+        }
+
+    .ql-bubble .ql-picker.ql-font {
+        width: 108px
+    }
+
+        .ql-bubble .ql-picker.ql-font .ql-picker-item:before, .ql-bubble .ql-picker.ql-font .ql-picker-label:before {
+            content: "Sans Serif"
+        }
+
+        .ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]:before, .ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=serif]:before {
+            content: "Serif"
+        }
+
+        .ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before, .ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before {
+            content: "Monospace"
+        }
+
+        .ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]:before {
+            font-family: Georgia,Times New Roman,serif
+        }
+
+        .ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before {
+            font-family: Monaco,Courier New,monospace
+        }
+
+    .ql-bubble .ql-picker.ql-size {
+        width: 98px
+    }
+
+        .ql-bubble .ql-picker.ql-size .ql-picker-item:before, .ql-bubble .ql-picker.ql-size .ql-picker-label:before {
+            content: "Normal"
+        }
+
+        .ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]:before, .ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=small]:before {
+            content: "Small"
+        }
+
+        .ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]:before, .ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=large]:before {
+            content: "Large"
+        }
+
+        .ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]:before, .ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=huge]:before {
+            content: "Huge"
+        }
+
+        .ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]:before {
+            font-size: 10px
+        }
+
+        .ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]:before {
+            font-size: 18px
+        }
+
+        .ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]:before {
+            font-size: 32px
+        }
+
+    .ql-bubble .ql-color-picker.ql-background .ql-picker-item {
+        background-color: #fff
+    }
+
+    .ql-bubble .ql-color-picker.ql-color .ql-picker-item {
+        background-color: #000
+    }
+
+    .ql-bubble .ql-toolbar .ql-formats {
+        margin: 8px 12px 8px 0
+    }
+
+        .ql-bubble .ql-toolbar .ql-formats:first-child {
+            margin-left: 12px
+        }
+
+    .ql-bubble .ql-color-picker svg {
+        margin: 1px
+    }
+
+    .ql-bubble .ql-color-picker .ql-picker-item.ql-selected, .ql-bubble .ql-color-picker .ql-picker-item:hover {
+        border-color: #fff
+    }
+
+    .ql-bubble .ql-tooltip {
+        background-color: #444;
+        border-radius: 25px;
+        color: #fff
+    }
+
+    .ql-bubble .ql-tooltip-arrow {
+        border-left: 6px solid transparent;
+        border-right: 6px solid transparent;
+        content: " ";
+        display: block;
+        left: 50%;
+        margin-left: -6px;
+        position: absolute
+    }
+
+    .ql-bubble .ql-tooltip:not(.ql-flip) .ql-tooltip-arrow {
+        border-bottom: 6px solid #444;
+        top: -6px
+    }
+
+    .ql-bubble .ql-tooltip.ql-flip .ql-tooltip-arrow {
+        border-top: 6px solid #444;
+        bottom: -6px
+    }
+
+    .ql-bubble .ql-tooltip.ql-editing .ql-tooltip-editor {
+        display: block
+    }
+
+    .ql-bubble .ql-tooltip.ql-editing .ql-formats {
+        visibility: hidden
+    }
+
+    .ql-bubble .ql-tooltip-editor {
+        display: none
+    }
+
+        .ql-bubble .ql-tooltip-editor input[type=text] {
+            background: transparent;
+            border: none;
+            color: #fff;
+            font-size: 13px;
+            height: 100%;
+            outline: none;
+            padding: 10px 20px;
+            position: absolute;
+            width: 100%
+        }
+
+        .ql-bubble .ql-tooltip-editor a {
+            top: 10px;
+            position: absolute;
+            right: 20px
+        }
+
+            .ql-bubble .ql-tooltip-editor a:before {
+                color: #ccc;
+                content: "\D7";
+                font-size: 16px;
+                font-weight: 700
+            }
+
+.ql-container.ql-bubble:not(.ql-disabled) a {
+    position: relative;
+    white-space: nowrap
+}
+
+    .ql-container.ql-bubble:not(.ql-disabled) a:before {
+        background-color: #444;
+        border-radius: 15px;
+        top: -5px;
+        font-size: 12px;
+        color: #fff;
+        content: attr(href);
+        font-weight: 400;
+        overflow: hidden;
+        padding: 5px 15px;
+        text-decoration: none;
+        z-index: 1
+    }
+
+    .ql-container.ql-bubble:not(.ql-disabled) a:after {
+        border-top: 6px solid #444;
+        border-left: 6px solid transparent;
+        border-right: 6px solid transparent;
+        top: 0;
+        content: " ";
+        height: 0;
+        width: 0
+    }
+
+    .ql-container.ql-bubble:not(.ql-disabled) a:after, .ql-container.ql-bubble:not(.ql-disabled) a:before {
+        left: 0;
+        margin-left: 50%;
+        position: absolute;
+        -webkit-transform: translate(-50%,-100%);
+        transform: translate(-50%,-100%);
+        -webkit-transition: visibility 0s ease .2s;
+        transition: visibility 0s ease .2s;
+        visibility: hidden
+    }
+
+    .ql-container.ql-bubble:not(.ql-disabled) a:hover:after, .ql-container.ql-bubble:not(.ql-disabled) a:hover:before {
+        visibility: visible
+    }
+
+.ql-editor-class[data-v-a8cc5f22] {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    line-height: 1.42;
+    height: 100%;
+    outline: none;
+    padding: 0 0 66px;
+    -o-tab-size: 4;
+    tab-size: 4;
+    -moz-tab-size: 4;
+    text-align: left;
+    word-wrap: break-word
+}
+
+.kk-table-9136076486841527 {
+    width: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+    .kk-table-9136076486841527, .kk-table-9136076486841527 tr, .kk-table-9136076486841527 tr td {
+        -webkit-transition: all .3s;
+        transition: all .3s;
+        border-collapse: collapse
+    }
+
+        .kk-table-9136076486841527 tr td {
+            -webkit-box-sizing: border-box;
+            box-sizing: border-box;
+            padding: 12px 12px;
+            vertical-align: top
+        }
+
+        .kk-table-9136076486841527.bordered tr td {
+            border: 1px solid #e8e8e8 !important
+        }
+
+        .kk-table-9136076486841527.bright tr:hover > td {
+            background: #e6f7ff
+        }
+
+        .kk-table-9136076486841527.small tr td {
+            padding: 8px 8px
+        }
+
+        .kk-table-9136076486841527 .ant-row.ant-form-item {
+            margin: 0 !important
+        }
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-tooltip[data-mode=link]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-tooltip[data-mode=link]:before {
+    content: "璇疯緭鍏ラ摼鎺ュ湴鍧�:"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-tooltip.ql-editing a.ql-action:after, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-tooltip.ql-editing a.ql-action:after {
+    border-right: 0;
+    content: "淇濆瓨";
+    padding-right: 0
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-tooltip[data-mode=video]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-tooltip[data-mode=video]:before {
+    content: "璇疯緭鍏ヨ棰戝湴鍧�:"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label:before {
+    content: "14px"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before {
+    content: "10px"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before {
+    content: "18px"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before {
+    content: "32px"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label:before {
+    content: "鏂囨湰"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before {
+    content: "鏍囬1"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before {
+    content: "鏍囬2"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before {
+    content: "鏍囬3"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before {
+    content: "鏍囬4"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before {
+    content: "鏍囬5"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before {
+    content: "鏍囬6"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label:before {
+    content: "鏍囧噯瀛椾綋"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before {
+    content: "琛嚎瀛椾綋"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before {
+    content: "绛夊瀛椾綋"
+}
+
+.form-designer-container-9136076486841527 {
+    height: 100vh;
+    width: 100%;
+    overflow: hidden
+}
+
+    .form-designer-container-9136076486841527 .header {
+        width: 100%;
+        height: 56px;
+        text-align: center;
+        background: #13c2c2;
+        color: #fff;
+        line-height: 56px;
+        font-size: 18px;
+        font-weight: 700
+    }
+
+    .form-designer-container-9136076486841527 .operating-area {
+        border-bottom: 2px solid #ccc;
+        font-size: 16px;
+        text-align: left;
+        height: 45px;
+        line-height: 45px;
+        padding: 0 12px;
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-pack: justify;
+        -ms-flex-pack: justify;
+        justify-content: space-between;
+        -ms-flex-line-pack: center;
+        align-content: center
+    }
+
+        .form-designer-container-9136076486841527 .operating-area a {
+            color: #666;
+            margin: 0 5px
+        }
+
+            .form-designer-container-9136076486841527 .operating-area a.disabled, .form-designer-container-9136076486841527 .operating-area a.disabled:hover {
+                color: #ccc
+            }
+
+            .form-designer-container-9136076486841527 .operating-area a:hover {
+                color: #13c2c2
+            }
+
+            .form-designer-container-9136076486841527 .operating-area a > span {
+                font-size: 14px;
+                padding-left: 2px
+            }
+
+    .form-designer-container-9136076486841527 .icon {
+        width: 1em;
+        height: 1em;
+        vertical-align: -.15em;
+        fill: currentColor;
+        overflow: hidden
+    }
+
+    .form-designer-container-9136076486841527 .content {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        height: 100%;
+        -webkit-box-flex: 1;
+        -ms-flex: 1;
+        flex: 1
+    }
+
+        .form-designer-container-9136076486841527 .content.show-head {
+            margin-top: 6px;
+            height: calc(100% - 62px)
+        }
+
+        .form-designer-container-9136076486841527 .content.toolbars-top {
+            margin-top: 6px;
+            height: calc(100% - 51px)
+        }
+
+        .form-designer-container-9136076486841527 .content.show-head-and-toolbars-top {
+            margin-top: 6px;
+            height: calc(100% - 107px)
+        }
+
+        .form-designer-container-9136076486841527 .content aside {
+            -webkit-box-shadow: 0 0 1px 1px #ccc;
+            box-shadow: 0 0 1px 1px #ccc;
+            width: 270px;
+            height: 100%
+        }
+
+            .form-designer-container-9136076486841527 .content aside.left {
+                height: 100%;
+                overflow: auto;
+                -webkit-user-select: none;
+                -moz-user-select: none;
+                -ms-user-select: none;
+                user-select: none
+            }
+
+                .form-designer-container-9136076486841527 .content aside.left .ant-collapse-content-box {
+                    padding: 0
+                }
+
+                .form-designer-container-9136076486841527 .content aside.left .ant-collapse {
+                    border: 0
+                }
+
+                    .form-designer-container-9136076486841527 .content aside.left .ant-collapse > .ant-collapse-item {
+                        border-color: #ccc
+                    }
+
+                        .form-designer-container-9136076486841527 .content aside.left .ant-collapse > .ant-collapse-item > .ant-collapse-header {
+                            padding: 7px 0 7px 40px
+                        }
+
+                        .form-designer-container-9136076486841527 .content aside.left .ant-collapse > .ant-collapse-item > .ant-collapse-content {
+                            border-color: #ccc
+                        }
+
+                .form-designer-container-9136076486841527 .content aside.left ul {
+                    padding: 5px;
+                    list-style: none;
+                    display: -webkit-box;
+                    display: -ms-flexbox;
+                    display: flex;
+                    margin-bottom: 0;
+                    -ms-flex-wrap: wrap;
+                    flex-wrap: wrap
+                }
+
+                    .form-designer-container-9136076486841527 .content aside.left ul li {
+                        border-radius: 0;
+                        border: 0;
+                        -webkit-box-shadow: 1px 0 0 0 #ccc,0 1px 0 0 #ccc,1px 1px 0 0 #ccc,1px 0 0 0 #ccc inset,0 1px 0 0 #ccc inset;
+                        box-shadow: 1px 0 0 0 #ccc,0 1px 0 0 #ccc,1px 1px 0 0 #ccc,inset 1px 0 0 0 #ccc,inset 0 1px 0 0 #ccc;
+                        padding: 8px 12px;
+                        width: calc(50% - 6px);
+                        margin: 2.7px;
+                        height: 36px;
+                        line-height: 20px;
+                        cursor: move;
+                        border: 1px solid transparent;
+                        border-radius: 3px;
+                        -webkit-transition: all .3s;
+                        transition: all .3s
+                    }
+
+                        .form-designer-container-9136076486841527 .content aside.left ul li:hover {
+                            color: #13c2c2;
+                            border: 1px solid #13c2c2;
+                            position: relative;
+                            z-index: 1;
+                            -webkit-box-shadow: 0 2px 6px #13c2c2;
+                            box-shadow: 0 2px 6px #13c2c2
+                        }
+
+            .form-designer-container-9136076486841527 .content aside.right {
+                height: 100%;
+                color: #fff;
+                overflow: hidden;
+                position: relative
+            }
+
+                .form-designer-container-9136076486841527 .content aside.right .form-item-properties {
+                    width: 100%;
+                    height: 100%
+                }
+
+                .form-designer-container-9136076486841527 .content aside.right .ant-tabs, .form-designer-container-9136076486841527 .content aside.right .ant-tabs .ant-tabs-content {
+                    height: 100%
+                }
+
+                    .form-designer-container-9136076486841527 .content aside.right .ant-tabs .ant-tabs-content .ant-tabs-tabpane {
+                        height: calc(100% - 45px);
+                        overflow: auto
+                    }
+
+                .form-designer-container-9136076486841527 .content aside.right .properties-centent {
+                    height: 100%;
+                    overflow: hidden;
+                    background: #fff
+                }
+
+                    .form-designer-container-9136076486841527 .content aside.right .properties-centent .properties-body {
+                        overflow: auto;
+                        height: 100%;
+                        padding: 8px 16px
+                    }
+
+                    .form-designer-container-9136076486841527 .content aside.right .properties-centent .ant-form-item {
+                        margin-bottom: 0;
+                        padding: 6px 0;
+                        border-bottom: 1px solid #ccc
+                    }
+
+                        .form-designer-container-9136076486841527 .content aside.right .properties-centent .ant-form-item .ant-form-item-label {
+                            line-height: 2
+                        }
+
+                .form-designer-container-9136076486841527 .content aside.right .hint-box {
+                    margin-top: 120px
+                }
+
+        .form-designer-container-9136076486841527 .content section {
+            -webkit-box-flex: 1;
+            -ms-flex: 1;
+            flex: 1;
+            max-width: calc(100% - 540px);
+            -webkit-user-select: none;
+            -moz-user-select: none;
+            -ms-user-select: none;
+            user-select: none;
+            margin: 0 8px 0;
+            -webkit-box-shadow: 0 0 1px 1px #ccc;
+            box-shadow: 0 0 1px 1px #ccc
+        }
+
+            .form-designer-container-9136076486841527 .content section .form-panel {
+                height: 100%;
+                background: #eee;
+                position: relative
+            }
+
+                .form-designer-container-9136076486841527 .content section .form-panel.no-toolbars-top {
+                    height: calc(100% - 50px)
+                }
+
+                .form-designer-container-9136076486841527 .content section .form-panel > .hint-text {
+                    position: absolute;
+                    left: 0;
+                    top: 50%;
+                    width: 100%;
+                    -webkit-transform: translateY(-50%);
+                    transform: translateY(-50%);
+                    font-size: 20px;
+                    color: #aaa;
+                    z-index: 16
+                }
+
+                .form-designer-container-9136076486841527 .content section .form-panel .a-form-box {
+                    height: 100%
+                }
+
+                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box {
+                    height: 100%;
+                    overflow: auto
+                }
+
+                    .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main {
+                        min-height: 100%;
+                        padding: 5px;
+                        position: relative;
+                        background: #fafafa
+                    }
+
+                        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .moving {
+                            min-height: 35px;
+                            -webkit-box-sizing: border-box;
+                            box-sizing: border-box;
+                            overflow: hidden;
+                            padding: 0 !important;
+                            position: relative
+                        }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .moving:before {
+                                content: "";
+                                height: 5px;
+                                width: 100%;
+                                background: #13c2c2;
+                                position: absolute;
+                                top: 0;
+                                right: 0
+                            }
+
+                        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box {
+                            position: relative;
+                            -webkit-box-sizing: border-box;
+                            box-sizing: border-box;
+                            padding: 8px;
+                            overflow: hidden;
+                            -webkit-transition: all .3s;
+                            transition: all .3s;
+                            min-height: 36px
+                        }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box:hover {
+                                background: rgba(19,194,194,.2)
+                            }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box:before {
+                                content: "";
+                                height: 5px;
+                                width: 100%;
+                                background: #13c2c2;
+                                position: absolute;
+                                top: 0;
+                                right: -100%;
+                                -webkit-transition: all .3s;
+                                transition: all .3s
+                            }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box.active {
+                                background: rgba(19,194,194,.2);
+                                outline-offset: 0
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box.active:before {
+                                    right: 0
+                                }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box .form-item-box {
+                                position: relative;
+                                -webkit-box-sizing: border-box;
+                                box-sizing: border-box;
+                                word-wrap: break-word
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box .form-item-box:before {
+                                    content: "";
+                                    position: absolute;
+                                    width: 100%;
+                                    height: 100%;
+                                    top: 0;
+                                    left: 0;
+                                    z-index: 888
+                                }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box .form-item-box .ant-form-item {
+                                    margin: 0;
+                                    padding-bottom: 6px
+                                }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box .show-key-box {
+                                position: absolute;
+                                bottom: 2px;
+                                right: 5px;
+                                font-size: 14px;
+                                z-index: 999;
+                                color: #13c2c2
+                            }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .delete {
+                                position: absolute;
+                                top: 0;
+                                width: 30px;
+                                height: 30px;
+                                line-height: 30px;
+                                text-align: center;
+                                color: #fff;
+                                z-index: 989;
+                                -webkit-transition: all .3s;
+                                transition: all .3s
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .delete.unactivated {
+                                    opacity: 0 !important;
+                                    pointer-events: none
+                                }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .delete.active {
+                                    opacity: 1 !important
+                                }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .copy {
+                                border-radius: 0 0 0 8px;
+                                right: 30px;
+                                background: #13c2c2
+                            }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .delete {
+                                right: 0;
+                                background: #13c2c2
+                            }
+
+                        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .batch-label, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .batch-label {
+                            font-size: 16px;
+                            font-weight: 500;
+                            padding: 10px 10px
+                        }
+
+                        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box {
+                            min-height: 60px;
+                            width: 100%;
+                            border: 1px dashed #ccc;
+                            background: #fff
+                        }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main {
+                                min-height: 60px;
+                                position: relative;
+                                border: 1px dashed #ccc;
+                                overflow-x: auto;
+                                overflow-y: auto;
+                                white-space: nowrap
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main .moving, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main .moving {
+                                    width: 175px;
+                                    min-height: 94px;
+                                    display: inline-block
+                                }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main > div, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main > div {
+                                    min-width: 185px;
+                                    display: inline-block;
+                                    vertical-align: top
+                                }
+
+                                    .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main > div .ant-form-item > .ant-form-item-control-wrapper, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main > div .ant-form-item > .ant-form-item-label, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main > div .ant-form-item > .ant-form-item-control-wrapper, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main > div .ant-form-item > .ant-form-item-label {
+                                        text-align: left;
+                                        display: block
+                                    }
+
+                                    .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main > div .ant-col, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main > div .ant-col {
+                                        width: 100%
+                                    }
+
+                        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .column-box {
+                            display: -webkit-box;
+                            display: -ms-flexbox;
+                            display: flex;
+                            width: 100%
+                        }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .column-box .check-box {
+                                width: 80px
+                            }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .column-box .draggable-box {
+                                -webkit-box-flex: 1;
+                                -ms-flex: 1;
+                                flex: 1
+                            }
+
+                        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .ant-form-item-label {
+                            display: none !important
+                        }
+
+                        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box {
+                            position: relative;
+                            -webkit-box-sizing: border-box;
+                            box-sizing: border-box;
+                            padding: 5px;
+                            background: rgba(152,103,247,.12);
+                            width: 100%;
+                            -webkit-transition: all .3s;
+                            transition: all .3s;
+                            overflow: hidden
+                        }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .form-item-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .form-item-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .form-item-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .form-item-box {
+                                position: relative;
+                                -webkit-box-sizing: border-box;
+                                box-sizing: border-box
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .form-item-box .ant-form-item, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .form-item-box .ant-form-item, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .form-item-box .ant-form-item, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .form-item-box .ant-form-item {
+                                    margin: 0;
+                                    padding-bottom: 15px
+                                }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout {
+                                background: rgba(152,103,247,.12)
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout .table-td .draggable-box {
+                                    min-height: 60px;
+                                    min-width: 50px;
+                                    border: 1px dashed #ccc;
+                                    background: #fff
+                                }
+
+                                    .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout .table-td .draggable-box .list-main {
+                                        min-height: 60px;
+                                        position: relative;
+                                        border: 1px dashed #ccc
+                                    }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box:before {
+                                content: "";
+                                height: 5px;
+                                width: 100%;
+                                background: transparent;
+                                position: absolute;
+                                top: 0;
+                                right: -100%;
+                                -webkit-transition: all .3s;
+                                transition: all .3s
+                            }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box.active {
+                                background: rgba(152,103,247,.24);
+                                outline-offset: 0
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box.active:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box.active:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box.active:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box.active:before {
+                                    background: #9867f7;
+                                    right: 0
+                                }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .delete {
+                                position: absolute;
+                                top: 0;
+                                width: 30px;
+                                height: 30px;
+                                line-height: 30px;
+                                text-align: center;
+                                color: #fff;
+                                z-index: 989;
+                                -webkit-transition: all .3s;
+                                transition: all .3s
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .delete.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .delete.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .delete.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .delete.unactivated {
+                                    opacity: 0 !important;
+                                    pointer-events: none
+                                }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .delete.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .delete.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .delete.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .delete.active {
+                                    opacity: 1 !important
+                                }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .copy {
+                                border-radius: 0 0 0 8px;
+                                right: 30px;
+                                background: #9867f7
+                            }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .delete {
+                                right: 0;
+                                background: #9867f7
+                            }
+
+    .form-designer-container-9136076486841527 .right-menu {
+        width: 160px;
+        background: #fff;
+        border: 1px solid #ccc;
+        position: fixed;
+        -webkit-transition: all 0s;
+        transition: all 0s;
+        -webkit-box-shadow: 3px 3px 8px #999;
+        box-shadow: 3px 3px 8px #999;
+        border-radius: 3px;
+        padding: 8px 0;
+        z-index: 2199
+    }
+
+        .form-designer-container-9136076486841527 .right-menu ul {
+            padding: 0;
+            margin: 0;
+            list-style: none
+        }
+
+            .form-designer-container-9136076486841527 .right-menu ul li {
+                cursor: pointer;
+                -webkit-user-select: none;
+                -moz-user-select: none;
+                -ms-user-select: none;
+                user-select: none;
+                padding: 0 15px;
+                height: 30px;
+                line-height: 30px;
+                font-size: 14px
+            }
+
+                .form-designer-container-9136076486841527 .right-menu ul li i {
+                    margin-right: 4px
+                }
+
+                .form-designer-container-9136076486841527 .right-menu ul li:hover {
+                    background: #eee
+                }
+
+    .form-designer-container-9136076486841527 .kk-checkbox .ant-checkbox-wrapper {
+        margin-left: 0 !important;
+        margin-right: 8px
+    }
+
+    .form-designer-container-9136076486841527 .list-enter-active {
+        -webkit-transition: all .5s;
+        transition: all .5s
+    }
+
+    .form-designer-container-9136076486841527 .list-leave-active {
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+    .form-designer-container-9136076486841527 .list-enter, .form-designer-container-9136076486841527 .list-leave-to {
+        opacity: 0;
+        -webkit-transform: translateX(-100px);
+        transform: translateX(-100px)
+    }
+
+    .form-designer-container-9136076486841527 .list-enter {
+        height: 30px
+    }
+
+    .form-designer-container-9136076486841527 ::-webkit-scrollbar {
+        width: 6px;
+        height: 6px;
+        scrollbar-arrow-color: red
+    }
+
+    .form-designer-container-9136076486841527 ::-webkit-scrollbar-thumb {
+        border-radius: 5px;
+        -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,.2);
+        box-shadow: inset 0 0 5px rgba(0,0,0,.2);
+        background: rgba(0,0,0,.2);
+        scrollbar-arrow-color: red
+    }
+
+    .form-designer-container-9136076486841527 ::-webkit-scrollbar-track {
+        -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,.2);
+        box-shadow: inset 0 0 5px rgba(0,0,0,.2);
+        border-radius: 0;
+        background: rgba(0,0,0,.1)
+    }
+
+    .form-designer-container-9136076486841527 .ant-form-inline .list-main {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -ms-flex-wrap: wrap;
+        flex-wrap: wrap;
+        -webkit-box-pack: start;
+        -ms-flex-pack: start;
+        justify-content: flex-start;
+        -ms-flex-line-pack: start;
+        align-content: flex-start
+    }
+
+        .form-designer-container-9136076486841527 .ant-form-inline .list-main .layout-width {
+            width: 100%
+        }
+
+    .form-designer-container-9136076486841527 .ant-form-inline .ant-form-item-control-wrapper {
+        width: 175px !important
+    }
+
+.json-box-9136076486841527 {
+    height: 570px;
+    overflow: auto
+}
+
+    .json-box-9136076486841527 .vue-codemirror-wrap {
+        height: 100%
+    }
+
+        .json-box-9136076486841527 .vue-codemirror-wrap .CodeMirror-wrap {
+            height: 100%;
+            background: #f6f6f6
+        }
+
+            .json-box-9136076486841527 .vue-codemirror-wrap .CodeMirror-wrap .CodeMirror-scroll {
+                height: 100%;
+                width: 100%
+            }
+
+            .json-box-9136076486841527 .vue-codemirror-wrap .CodeMirror-wrap .CodeMirror-linenumber, .json-box-9136076486841527 .vue-codemirror-wrap .CodeMirror-wrap pre.CodeMirror-line {
+                min-height: 21px;
+                line-height: 21px
+            }
+
+.code-modal-9136076486841527 .ant-modal-body {
+    padding: 12px
+}
+
+.copy-btn-box-9136076486841527 {
+    padding-top: 8px;
+    text-align: center
+}
+
+    .copy-btn-box-9136076486841527 .copy-btn {
+        margin-right: 8px
+    }
+
+.k-form-build-9136076486841527 .select-input-list-box {
+    color: rgba(0,0,0,.65);
+    font-size: 14px
+}
+
+    .k-form-build-9136076486841527 .select-input-list-box .ant-form-item {
+        margin-bottom: 2px;
+        margin-right: 8px
+    }
+
+    .k-form-build-9136076486841527 .select-input-list-box.ant-form-horizontal .ant-col.ant-form-item-control-wrapper {
+        height: 30px;
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-align: center;
+        -ms-flex-align: center;
+        align-items: center
+    }
+
+    .k-form-build-9136076486841527 .select-input-list-box.ant-form-horizontal .text-box {
+        height: 30px;
+        line-height: 30px
+    }
+
+.k-form-build-9136076486841527 .ant-form-item {
+    margin-bottom: 16px
+}
+
+.k-form-build-9136076486841527 .ant-form-item-control {
+    position: relative
+}
+
+    .k-form-build-9136076486841527 .ant-form-item-control .ant-form-explain {
+        bottom: -16px;
+        position: absolute;
+        z-index: 10
+    }
+
+.k-form-build-9136076486841527.ant-form-inline .ant-form-item-control-wrapper {
+    width: 175px !important
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-form-item {
+    margin: 0
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-form-item-control-wrapper {
+    width: 170px !important
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-table-thead > tr > th {
+    padding: 12px
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-table-tbody > tr > td {
+    padding: 8px
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-form-inline .ant-form-item-with-help {
+    margin: 0
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-table-placeholder {
+    padding: 0
+}
+
+.k-form-build-9136076486841527 .hide-upload-drag .ant-upload.ant-upload-drag {
+    display: none
+}
+
+.m-colorPicker {
+    width: 25%;
+    vertical-align: bottom;
+    padding: 5px;
+    border: 1px solid #e6e6e6;
+    border-radius: 4px;
+    font-size: 0
+}
+
+    .m-colorPicker .colorBtn {
+        height: 22px !important;
+        width: 100% !important
+    }
+
+.slider-box[data-v-1e330349] {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex
+}
+
+.slider-box > .slider[data-v-1e330349] {
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    margin-right: 16px
+}
+
+.slider-box > .number[data-v-1e330349] {
+    width: 70px
+}
+
+.anticon.anticon-question-circle-o[data-v-1e330349] {
+    margin-left: 5px
+}
+
+.CodeMirror {
+    font-family: monospace;
+    height: 300px;
+    color: #000;
+    direction: ltr
+}
+
+.CodeMirror-lines {
+    padding: 4px 0
+}
+
+.CodeMirror pre.CodeMirror-line, .CodeMirror pre.CodeMirror-line-like {
+    padding: 0 4px
+}
+
+.CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler {
+    background-color: #fff
+}
+
+.CodeMirror-gutters {
+    border-right: 1px solid #ddd;
+    background-color: #f7f7f7;
+    white-space: nowrap
+}
+
+.CodeMirror-linenumber {
+    padding: 0 3px 0 5px;
+    min-width: 20px;
+    text-align: right;
+    color: #999;
+    white-space: nowrap
+}
+
+.CodeMirror-guttermarker {
+    color: #000
+}
+
+.CodeMirror-guttermarker-subtle {
+    color: #999
+}
+
+.CodeMirror-cursor {
+    border-left: 1px solid #000;
+    border-right: none;
+    width: 0
+}
+
+.CodeMirror div.CodeMirror-secondarycursor {
+    border-left: 1px solid silver
+}
+
+.cm-fat-cursor .CodeMirror-cursor {
+    width: auto;
+    border: 0 !important;
+    background: #7e7
+}
+
+.cm-fat-cursor div.CodeMirror-cursors {
+    z-index: 1
+}
+
+.cm-fat-cursor-mark {
+    background-color: rgba(20,255,20,.5)
+}
+
+.cm-animate-fat-cursor, .cm-fat-cursor-mark {
+    -webkit-animation: blink 1.06s steps(1) infinite;
+    animation: blink 1.06s steps(1) infinite
+}
+
+.cm-animate-fat-cursor {
+    width: auto;
+    border: 0;
+    background-color: #7e7
+}
+
+@-webkit-keyframes blink {
+    50% {
+        background-color: transparent
+    }
+}
+
+@keyframes blink {
+    50% {
+        background-color: transparent
+    }
+}
+
+.cm-tab {
+    display: inline-block;
+    text-decoration: inherit
+}
+
+.CodeMirror-rulers {
+    position: absolute;
+    left: 0;
+    right: 0;
+    top: -50px;
+    bottom: 0;
+    overflow: hidden
+}
+
+.CodeMirror-ruler {
+    border-left: 1px solid #ccc;
+    top: 0;
+    bottom: 0;
+    position: absolute
+}
+
+.cm-s-default .cm-header {
+    color: #00f
+}
+
+.cm-s-default .cm-quote {
+    color: #090
+}
+
+.cm-negative {
+    color: #d44
+}
+
+.cm-positive {
+    color: #292
+}
+
+.cm-header, .cm-strong {
+    font-weight: 700
+}
+
+.cm-em {
+    font-style: italic
+}
+
+.cm-link {
+    text-decoration: underline
+}
+
+.cm-strikethrough {
+    text-decoration: line-through
+}
+
+.cm-s-default .cm-keyword {
+    color: #708
+}
+
+.cm-s-default .cm-atom {
+    color: #219
+}
+
+.cm-s-default .cm-number {
+    color: #164
+}
+
+.cm-s-default .cm-def {
+    color: #00f
+}
+
+.cm-s-default .cm-variable-2 {
+    color: #05a
+}
+
+.cm-s-default .cm-type, .cm-s-default .cm-variable-3 {
+    color: #085
+}
+
+.cm-s-default .cm-comment {
+    color: #a50
+}
+
+.cm-s-default .cm-string {
+    color: #a11
+}
+
+.cm-s-default .cm-string-2 {
+    color: #f50
+}
+
+.cm-s-default .cm-meta, .cm-s-default .cm-qualifier {
+    color: #555
+}
+
+.cm-s-default .cm-builtin {
+    color: #30a
+}
+
+.cm-s-default .cm-bracket {
+    color: #997
+}
+
+.cm-s-default .cm-tag {
+    color: #170
+}
+
+.cm-s-default .cm-attribute {
+    color: #00c
+}
+
+.cm-s-default .cm-hr {
+    color: #999
+}
+
+.cm-s-default .cm-link {
+    color: #00c
+}
+
+.cm-invalidchar, .cm-s-default .cm-error {
+    color: red
+}
+
+.CodeMirror-composing {
+    border-bottom: 2px solid
+}
+
+div.CodeMirror span.CodeMirror-matchingbracket {
+    color: #0b0
+}
+
+div.CodeMirror span.CodeMirror-nonmatchingbracket {
+    color: #a22
+}
+
+.CodeMirror-matchingtag {
+    background: rgba(255,150,0,.3)
+}
+
+.CodeMirror-activeline-background {
+    background: #e8f2ff
+}
+
+.CodeMirror {
+    position: relative;
+    overflow: hidden;
+    background: #fff
+}
+
+.CodeMirror-scroll {
+    overflow: scroll !important;
+    margin-bottom: -50px;
+    margin-right: -50px;
+    padding-bottom: 50px;
+    height: 100%;
+    outline: none;
+    position: relative
+}
+
+.CodeMirror-sizer {
+    position: relative;
+    border-right: 50px solid transparent
+}
+
+.CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar {
+    position: absolute;
+    z-index: 6;
+    display: none;
+    outline: none
+}
+
+.CodeMirror-vscrollbar {
+    right: 0;
+    top: 0;
+    overflow-x: hidden;
+    overflow-y: scroll
+}
+
+.CodeMirror-hscrollbar {
+    bottom: 0;
+    left: 0;
+    overflow-y: hidden;
+    overflow-x: scroll
+}
+
+.CodeMirror-scrollbar-filler {
+    right: 0;
+    bottom: 0
+}
+
+.CodeMirror-gutter-filler {
+    left: 0;
+    bottom: 0
+}
+
+.CodeMirror-gutters {
+    position: absolute;
+    left: 0;
+    top: 0;
+    min-height: 100%;
+    z-index: 3
+}
+
+.CodeMirror-gutter {
+    white-space: normal;
+    height: 100%;
+    display: inline-block;
+    vertical-align: top;
+    margin-bottom: -50px
+}
+
+.CodeMirror-gutter-wrapper {
+    position: absolute;
+    z-index: 4;
+    background: none !important;
+    border: none !important
+}
+
+.CodeMirror-gutter-background {
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    z-index: 4
+}
+
+.CodeMirror-gutter-elt {
+    position: absolute;
+    cursor: default;
+    z-index: 4
+}
+
+.CodeMirror-gutter-wrapper ::selection {
+    background-color: transparent
+}
+
+.CodeMirror-gutter-wrapper ::-moz-selection {
+    background-color: transparent
+}
+
+.CodeMirror-lines {
+    cursor: text;
+    min-height: 1px
+}
+
+.CodeMirror pre.CodeMirror-line, .CodeMirror pre.CodeMirror-line-like {
+    border-radius: 0;
+    border-width: 0;
+    background: transparent;
+    font-family: inherit;
+    font-size: inherit;
+    margin: 0;
+    white-space: pre;
+    word-wrap: normal;
+    line-height: inherit;
+    color: inherit;
+    z-index: 2;
+    position: relative;
+    overflow: visible;
+    -webkit-tap-highlight-color: transparent;
+    -webkit-font-variant-ligatures: contextual;
+    font-variant-ligatures: contextual
+}
+
+.CodeMirror-wrap pre.CodeMirror-line, .CodeMirror-wrap pre.CodeMirror-line-like {
+    word-wrap: break-word;
+    white-space: pre-wrap;
+    word-break: normal
+}
+
+.CodeMirror-linebackground {
+    position: absolute;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    z-index: 0
+}
+
+.CodeMirror-linewidget {
+    position: relative;
+    z-index: 2;
+    padding: .1px
+}
+
+.CodeMirror-rtl pre {
+    direction: rtl
+}
+
+.CodeMirror-code {
+    outline: none
+}
+
+.CodeMirror-gutter, .CodeMirror-gutters, .CodeMirror-linenumber, .CodeMirror-scroll, .CodeMirror-sizer {
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box
+}
+
+.CodeMirror-measure {
+    position: absolute;
+    width: 100%;
+    height: 0;
+    overflow: hidden;
+    visibility: hidden
+}
+
+.CodeMirror-cursor {
+    position: absolute;
+    pointer-events: none
+}
+
+.CodeMirror-measure pre {
+    position: static
+}
+
+div.CodeMirror-cursors {
+    visibility: hidden;
+    position: relative;
+    z-index: 3
+}
+
+.CodeMirror-focused div.CodeMirror-cursors, div.CodeMirror-dragcursors {
+    visibility: visible
+}
+
+.CodeMirror-selected {
+    background: #d9d9d9
+}
+
+.CodeMirror-focused .CodeMirror-selected {
+    background: #d7d4f0
+}
+
+.CodeMirror-crosshair {
+    cursor: crosshair
+}
+
+.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection {
+    background: #d7d4f0
+}
+
+.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection {
+    background: #d7d4f0
+}
+
+.cm-searching {
+    background-color: #ffa;
+    background-color: rgba(255,255,0,.4)
+}
+
+.cm-force-border {
+    padding-right: .1px
+}
+
+@media print {
+    .CodeMirror div.CodeMirror-cursors {
+        visibility: hidden
+    }
+}
+
+.cm-tab-wrap-hack:after {
+    content: ""
+}
+
+span.CodeMirror-selectedtext {
+    background: none
+}
+
+.CodeMirror-code {
+    font-family: Menlo,Monaco,Consolas,Courier New,monospace
+}
+
+.hint-box[data-v-2ccc7242] {
+    background: #e9e9e9;
+    margin: 0;
+    border-bottom: 2px solid #fff
+}
+
+.option-change-container[data-v-5270f08a] {
+    width: calc(100% - 8px)
+}
+
+.option-change-box[data-v-5270f08a] {
+    height: 38px;
+    padding-bottom: 6px
+}
+
+.option-change-box .option-delete-box[data-v-5270f08a] {
+    margin-top: 3px;
+    background: #ffe9e9;
+    color: #f22;
+    width: 32px;
+    height: 32px;
+    line-height: 32px;
+    text-align: center;
+    border-radius: 50%;
+    overflow: hidden;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .option-change-box .option-delete-box[data-v-5270f08a]:hover {
+        background: #f22;
+        color: #fff
+    }
+
+.change-col-box > div[data-v-0e18ad9a] {
+    padding: 5px;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex
+}
+
+.change-col-box > div > label[data-v-0e18ad9a] {
+    text-align: right;
+    padding-right: 8px;
+    display: block;
+    font-size: 16px;
+    width: 45px
+}
+
+body, html {
+    width: 100%;
+    height: 100%
+}
+
+input::-ms-clear, input::-ms-reveal {
+    display: none
+}
+
+*, :after, :before {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+html {
+    font-family: sans-serif;
+    line-height: 1.15;
+    -webkit-text-size-adjust: 100%;
+    -ms-text-size-adjust: 100%;
+    -ms-overflow-style: scrollbar;
+    -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+@-ms-viewport {
+    width: device-width
+}
+
+article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {
+    display: block
+}
+
+body {
+    margin: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    background-color: #fff;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+[tabindex="-1"]:focus {
+    outline: none !important
+}
+
+hr {
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+    overflow: visible
+}
+
+h1, h2, h3, h4, h5, h6 {
+    margin-top: 0;
+    margin-bottom: .5em;
+    color: rgba(0,0,0,.85);
+    font-weight: 500
+}
+
+p {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+abbr[data-original-title], abbr[title] {
+    text-decoration: underline;
+    -webkit-text-decoration: underline dotted;
+    text-decoration: underline dotted;
+    border-bottom: 0;
+    cursor: help
+}
+
+address {
+    margin-bottom: 1em;
+    font-style: normal;
+    line-height: inherit
+}
+
+input[type=number], input[type=password], input[type=text], textarea {
+    -webkit-appearance: none
+}
+
+dl, ol, ul {
+    margin-top: 0;
+    margin-bottom: 1em
+}
+
+    ol ol, ol ul, ul ol, ul ul {
+        margin-bottom: 0
+    }
+
+dt {
+    font-weight: 500
+}
+
+dd {
+    margin-bottom: .5em;
+    margin-left: 0
+}
+
+blockquote {
+    margin: 0 0 1em
+}
+
+dfn {
+    font-style: italic
+}
+
+b, strong {
+    font-weight: bolder
+}
+
+small {
+    font-size: 80%
+}
+
+sub, sup {
+    position: relative;
+    font-size: 75%;
+    line-height: 0;
+    vertical-align: baseline
+}
+
+sub {
+    bottom: -.25em
+}
+
+sup {
+    top: -.5em
+}
+
+a {
+    color: #fa541c;
+    text-decoration: none;
+    background-color: transparent;
+    outline: none;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s;
+    -webkit-text-decoration-skip: objects
+}
+
+    a:hover {
+        color: #ff7a45
+    }
+
+    a:active {
+        color: #d4380d
+    }
+
+    a:active, a:hover {
+        text-decoration: none;
+        outline: 0
+    }
+
+    a[disabled] {
+        color: rgba(0,0,0,.25);
+        cursor: not-allowed;
+        pointer-events: none
+    }
+
+code, kbd, pre, samp {
+    font-size: 1em;
+    font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre {
+    margin-top: 0;
+    margin-bottom: 1em;
+    overflow: auto
+}
+
+figure {
+    margin: 0 0 1em
+}
+
+img {
+    vertical-align: middle;
+    border-style: none
+}
+
+svg:not(:root) {
+    overflow: hidden
+}
+
+[role=button], a, area, button, input:not([type=range]), label, select, summary, textarea {
+    -ms-touch-action: manipulation;
+    touch-action: manipulation
+}
+
+table {
+    border-collapse: collapse
+}
+
+caption {
+    padding-top: .75em;
+    padding-bottom: .3em;
+    color: rgba(0,0,0,.45);
+    text-align: left;
+    caption-side: bottom
+}
+
+th {
+    text-align: inherit
+}
+
+button, input, optgroup, select, textarea {
+    margin: 0;
+    color: inherit;
+    font-size: inherit;
+    font-family: inherit;
+    line-height: inherit
+}
+
+button, input {
+    overflow: visible
+}
+
+button, select {
+    text-transform: none
+}
+
+[type=reset], [type=submit], button, html [type=button] {
+    -webkit-appearance: button
+}
+
+    [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner, button::-moz-focus-inner {
+        padding: 0;
+        border-style: none
+    }
+
+input[type=checkbox], input[type=radio] {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding: 0
+}
+
+input[type=date], input[type=datetime-local], input[type=month], input[type=time] {
+    -webkit-appearance: listbox
+}
+
+textarea {
+    overflow: auto;
+    resize: vertical
+}
+
+fieldset {
+    min-width: 0;
+    margin: 0;
+    padding: 0;
+    border: 0
+}
+
+legend {
+    display: block;
+    width: 100%;
+    max-width: 100%;
+    margin-bottom: .5em;
+    padding: 0;
+    color: inherit;
+    font-size: 1.5em;
+    line-height: inherit;
+    white-space: normal
+}
+
+progress {
+    vertical-align: baseline
+}
+
+[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button {
+    height: auto
+}
+
+[type=search] {
+    outline-offset: -2px;
+    -webkit-appearance: none
+}
+
+    [type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration {
+        -webkit-appearance: none
+    }
+
+::-webkit-file-upload-button {
+    font: inherit;
+    -webkit-appearance: button
+}
+
+output {
+    display: inline-block
+}
+
+summary {
+    display: list-item
+}
+
+template {
+    display: none
+}
+
+[hidden] {
+    display: none !important
+}
+
+mark {
+    padding: .2em;
+    background-color: #feffe6
+}
+
+::-moz-selection {
+    color: #fff;
+    background: #fa541c
+}
+
+::selection {
+    color: #fff;
+    background: #fa541c
+}
+
+.clearfix {
+    zoom: 1
+}
+
+    .clearfix:after, .clearfix:before {
+        display: table;
+        content: ""
+    }
+
+    .clearfix:after {
+        clear: both
+    }
+
+.anticon {
+    display: inline-block;
+    color: inherit;
+    font-style: normal;
+    line-height: 0;
+    text-align: center;
+    text-transform: none;
+    vertical-align: -.125em;
+    text-rendering: optimizeLegibility;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale
+}
+
+    .anticon > * {
+        line-height: 1
+    }
+
+    .anticon svg {
+        display: inline-block
+    }
+
+    .anticon:before {
+        display: none
+    }
+
+    .anticon .anticon-icon {
+        display: block
+    }
+
+    .anticon[tabindex] {
+        cursor: pointer
+    }
+
+.anticon-spin, .anticon-spin:before {
+    display: inline-block;
+    -webkit-animation: loadingCircle 1s linear infinite;
+    animation: loadingCircle 1s linear infinite
+}
+
+.fade-appear, .fade-enter, .fade-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .fade-appear.fade-appear-active, .fade-enter.fade-enter-active {
+        -webkit-animation-name: antFadeIn;
+        animation-name: antFadeIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .fade-leave.fade-leave-active {
+        -webkit-animation-name: antFadeOut;
+        animation-name: antFadeOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.fade-appear, .fade-enter {
+    opacity: 0
+}
+
+.fade-appear, .fade-enter, .fade-leave {
+    -webkit-animation-timing-function: linear;
+    animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@keyframes antFadeIn {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antFadeOut {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes antFadeOut {
+    0% {
+        opacity: 1
+    }
+
+    to {
+        opacity: 0
+    }
+}
+
+.move-up-appear, .move-up-enter, .move-up-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .move-up-appear.move-up-appear-active, .move-up-enter.move-up-enter-active {
+        -webkit-animation-name: antMoveUpIn;
+        animation-name: antMoveUpIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .move-up-leave.move-up-leave-active {
+        -webkit-animation-name: antMoveUpOut;
+        animation-name: antMoveUpOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.move-up-appear, .move-up-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear, .move-down-enter, .move-down-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .move-down-appear.move-down-appear-active, .move-down-enter.move-down-enter-active {
+        -webkit-animation-name: antMoveDownIn;
+        animation-name: antMoveDownIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .move-down-leave.move-down-leave-active {
+        -webkit-animation-name: antMoveDownOut;
+        animation-name: antMoveDownOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.move-down-appear, .move-down-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear, .move-left-enter, .move-left-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .move-left-appear.move-left-appear-active, .move-left-enter.move-left-enter-active {
+        -webkit-animation-name: antMoveLeftIn;
+        animation-name: antMoveLeftIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .move-left-leave.move-left-leave-active {
+        -webkit-animation-name: antMoveLeftOut;
+        animation-name: antMoveLeftOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.move-left-appear, .move-left-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear, .move-right-enter, .move-right-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .move-right-appear.move-right-appear-active, .move-right-enter.move-right-enter-active {
+        -webkit-animation-name: antMoveRightIn;
+        animation-name: antMoveRightIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .move-right-leave.move-right-leave-active {
+        -webkit-animation-name: antMoveRightOut;
+        animation-name: antMoveRightOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.move-right-appear, .move-right-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave {
+    -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+    animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveDownIn {
+    0% {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveDownOut {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveDownOut {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(100%);
+        transform: translateY(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveLeftIn {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveLeftIn {
+    0% {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveLeftOut {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveLeftOut {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveRightIn {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveRightIn {
+    0% {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveRightOut {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveRightOut {
+    0% {
+        -webkit-transform: translateX(0);
+        transform: translateX(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateX(100%);
+        transform: translateX(100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antMoveUpIn {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antMoveUpIn {
+    0% {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antMoveUpOut {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antMoveUpOut {
+    0% {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: translateY(-100%);
+        transform: translateY(-100%);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes loadingCircle {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+@keyframes loadingCircle {
+    to {
+        -webkit-transform: rotate(1turn);
+        transform: rotate(1turn)
+    }
+}
+
+[ant-click-animating-without-extra-node=true], [ant-click-animating=true] {
+    position: relative
+}
+
+html {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node, [ant-click-animating-without-extra-node=true]:after {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    display: block;
+    border-radius: inherit;
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c;
+    -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+    opacity: .2;
+    -webkit-animation: fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);
+    animation: fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);
+    -webkit-animation-fill-mode: forwards;
+    animation-fill-mode: forwards;
+    content: "";
+    pointer-events: none
+}
+
+@-webkit-keyframes waveEffect {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@keyframes waveEffect {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c;
+        -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+        box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+    }
+}
+
+@-webkit-keyframes fadeEffect {
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes fadeEffect {
+    to {
+        opacity: 0
+    }
+}
+
+.slide-up-appear, .slide-up-enter, .slide-up-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .slide-up-appear.slide-up-appear-active, .slide-up-enter.slide-up-enter-active {
+        -webkit-animation-name: antSlideUpIn;
+        animation-name: antSlideUpIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .slide-up-leave.slide-up-leave-active {
+        -webkit-animation-name: antSlideUpOut;
+        animation-name: antSlideUpOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.slide-up-appear, .slide-up-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear, .slide-down-enter, .slide-down-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .slide-down-appear.slide-down-appear-active, .slide-down-enter.slide-down-enter-active {
+        -webkit-animation-name: antSlideDownIn;
+        animation-name: antSlideDownIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .slide-down-leave.slide-down-leave-active {
+        -webkit-animation-name: antSlideDownOut;
+        animation-name: antSlideDownOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.slide-down-appear, .slide-down-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear, .slide-left-enter, .slide-left-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .slide-left-appear.slide-left-appear-active, .slide-left-enter.slide-left-enter-active {
+        -webkit-animation-name: antSlideLeftIn;
+        animation-name: antSlideLeftIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .slide-left-leave.slide-left-leave-active {
+        -webkit-animation-name: antSlideLeftOut;
+        animation-name: antSlideLeftOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.slide-left-appear, .slide-left-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear, .slide-right-enter, .slide-right-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .slide-right-appear.slide-right-appear-active, .slide-right-enter.slide-right-enter-active {
+        -webkit-animation-name: antSlideRightIn;
+        animation-name: antSlideRightIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .slide-right-leave.slide-right-leave-active {
+        -webkit-animation-name: antSlideRightOut;
+        animation-name: antSlideRightOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.slide-right-appear, .slide-right-enter {
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+    animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave {
+    -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+    animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideUpIn {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideUpOut {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideUpOut {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideDownIn {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideDownIn {
+    0% {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideDownOut {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideDownOut {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(.8);
+        transform: scaleY(.8);
+        -webkit-transform-origin: 100% 100%;
+        transform-origin: 100% 100%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideLeftIn {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideLeftIn {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideLeftOut {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideLeftOut {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antSlideRightIn {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@keyframes antSlideRightIn {
+    0% {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antSlideRightOut {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antSlideRightOut {
+    0% {
+        -webkit-transform: scaleX(1);
+        transform: scaleX(1);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleX(.8);
+        transform: scaleX(.8);
+        -webkit-transform-origin: 100% 0;
+        transform-origin: 100% 0;
+        opacity: 0
+    }
+}
+
+.swing-appear, .swing-enter {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .swing-appear.swing-appear-active, .swing-enter.swing-enter-active {
+        -webkit-animation-name: antSwingIn;
+        animation-name: antSwingIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+@-webkit-keyframes antSwingIn {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+@keyframes antSwingIn {
+    0%,to {
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+
+    20% {
+        -webkit-transform: translateX(-10px);
+        transform: translateX(-10px)
+    }
+
+    40% {
+        -webkit-transform: translateX(10px);
+        transform: translateX(10px)
+    }
+
+    60% {
+        -webkit-transform: translateX(-5px);
+        transform: translateX(-5px)
+    }
+
+    80% {
+        -webkit-transform: translateX(5px);
+        transform: translateX(5px)
+    }
+}
+
+.zoom-appear, .zoom-enter, .zoom-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .zoom-appear.zoom-appear-active, .zoom-enter.zoom-enter-active {
+        -webkit-animation-name: antZoomIn;
+        animation-name: antZoomIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .zoom-leave.zoom-leave-active {
+        -webkit-animation-name: antZoomOut;
+        animation-name: antZoomOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.zoom-appear, .zoom-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear, .zoom-big-enter, .zoom-big-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .zoom-big-appear.zoom-big-appear-active, .zoom-big-enter.zoom-big-enter-active {
+        -webkit-animation-name: antZoomBigIn;
+        animation-name: antZoomBigIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .zoom-big-leave.zoom-big-leave-active {
+        -webkit-animation-name: antZoomBigOut;
+        animation-name: antZoomBigOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.zoom-big-appear, .zoom-big-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear, .zoom-big-fast-enter, .zoom-big-fast-leave {
+    -webkit-animation-duration: .1s;
+    animation-duration: .1s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .zoom-big-fast-appear.zoom-big-fast-appear-active, .zoom-big-fast-enter.zoom-big-fast-enter-active {
+        -webkit-animation-name: antZoomBigIn;
+        animation-name: antZoomBigIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .zoom-big-fast-leave.zoom-big-fast-leave-active {
+        -webkit-animation-name: antZoomBigOut;
+        animation-name: antZoomBigOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.zoom-big-fast-appear, .zoom-big-fast-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear, .zoom-up-enter, .zoom-up-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .zoom-up-appear.zoom-up-appear-active, .zoom-up-enter.zoom-up-enter-active {
+        -webkit-animation-name: antZoomUpIn;
+        animation-name: antZoomUpIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .zoom-up-leave.zoom-up-leave-active {
+        -webkit-animation-name: antZoomUpOut;
+        animation-name: antZoomUpOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.zoom-up-appear, .zoom-up-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear, .zoom-down-enter, .zoom-down-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .zoom-down-appear.zoom-down-appear-active, .zoom-down-enter.zoom-down-enter-active {
+        -webkit-animation-name: antZoomDownIn;
+        animation-name: antZoomDownIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .zoom-down-leave.zoom-down-leave-active {
+        -webkit-animation-name: antZoomDownOut;
+        animation-name: antZoomDownOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.zoom-down-appear, .zoom-down-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear, .zoom-left-enter, .zoom-left-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .zoom-left-appear.zoom-left-appear-active, .zoom-left-enter.zoom-left-enter-active {
+        -webkit-animation-name: antZoomLeftIn;
+        animation-name: antZoomLeftIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .zoom-left-leave.zoom-left-leave-active {
+        -webkit-animation-name: antZoomLeftOut;
+        animation-name: antZoomLeftOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.zoom-left-appear, .zoom-left-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear, .zoom-right-enter, .zoom-right-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .zoom-right-appear.zoom-right-appear-active, .zoom-right-enter.zoom-right-enter-active {
+        -webkit-animation-name: antZoomRightIn;
+        animation-name: antZoomRightIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .zoom-right-leave.zoom-right-leave-active {
+        -webkit-animation-name: antZoomRightOut;
+        animation-name: antZoomRightOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.zoom-right-appear, .zoom-right-enter {
+    -webkit-transform: scale(0);
+    transform: scale(0);
+    opacity: 0;
+    -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+    animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave {
+    -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+    animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomIn {
+    0% {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.2);
+        transform: scale(.2);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomBigIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@keyframes antZoomBigIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antZoomBigOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomBigOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomUpIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@keyframes antZoomUpIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+}
+
+@-webkit-keyframes antZoomUpOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomUpOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 0;
+        transform-origin: 50% 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomLeftIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@keyframes antZoomLeftIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+}
+
+@-webkit-keyframes antZoomLeftOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomLeftOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 0 50%;
+        transform-origin: 0 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomRightIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@keyframes antZoomRightIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+}
+
+@-webkit-keyframes antZoomRightOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomRightOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 100% 50%;
+        transform-origin: 100% 50%;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes antZoomDownIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@keyframes antZoomDownIn {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+}
+
+@-webkit-keyframes antZoomDownOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+@keyframes antZoomDownOut {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%
+    }
+
+    to {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        -webkit-transform-origin: 50% 100%;
+        transform-origin: 50% 100%;
+        opacity: 0
+    }
+}
+
+.ant-motion-collapse-legacy {
+    overflow: hidden
+}
+
+.ant-motion-collapse, .ant-motion-collapse-legacy-active {
+    -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+    transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse {
+    overflow: hidden
+}
+
+.ant-affix {
+    position: fixed;
+    z-index: 10
+}
+
+.ant-alert {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    padding: 8px 15px 8px 37px;
+    word-wrap: break-word;
+    border-radius: 2px
+}
+
+    .ant-alert.ant-alert-no-icon {
+        padding: 8px 15px
+    }
+
+    .ant-alert.ant-alert-closable {
+        padding-right: 30px
+    }
+
+.ant-alert-icon {
+    position: absolute;
+    top: 11.5px;
+    left: 16px
+}
+
+.ant-alert-description {
+    display: none;
+    font-size: 14px;
+    line-height: 22px
+}
+
+.ant-alert-success {
+    background-color: #f6ffed;
+    border: 1px solid #b7eb8f
+}
+
+    .ant-alert-success .ant-alert-icon {
+        color: #52c41a
+    }
+
+.ant-alert-info {
+    background-color: #e6f7ff;
+    border: 1px solid #91d5ff
+}
+
+    .ant-alert-info .ant-alert-icon {
+        color: #1890ff
+    }
+
+.ant-alert-warning {
+    background-color: #fffbe6;
+    border: 1px solid #ffe58f
+}
+
+    .ant-alert-warning .ant-alert-icon {
+        color: #faad14
+    }
+
+.ant-alert-error {
+    background-color: #fff1f0;
+    border: 1px solid #ffa39e
+}
+
+    .ant-alert-error .ant-alert-icon {
+        color: #f5222d
+    }
+
+.ant-alert-close-icon {
+    position: absolute;
+    top: 8px;
+    right: 16px;
+    padding: 0;
+    overflow: hidden;
+    font-size: 12px;
+    line-height: 22px;
+    background-color: transparent;
+    border: none;
+    outline: none;
+    cursor: pointer
+}
+
+    .ant-alert-close-icon .anticon-close {
+        color: rgba(0,0,0,.45);
+        -webkit-transition: color .3s;
+        transition: color .3s
+    }
+
+        .ant-alert-close-icon .anticon-close:hover {
+            color: rgba(0,0,0,.75)
+        }
+
+.ant-alert-close-text {
+    color: rgba(0,0,0,.45);
+    -webkit-transition: color .3s;
+    transition: color .3s
+}
+
+    .ant-alert-close-text:hover {
+        color: rgba(0,0,0,.75)
+    }
+
+.ant-alert-with-description {
+    position: relative;
+    padding: 15px 15px 15px 64px;
+    color: rgba(0,0,0,.65);
+    line-height: 1.5;
+    border-radius: 2px
+}
+
+    .ant-alert-with-description.ant-alert-no-icon {
+        padding: 15px
+    }
+
+    .ant-alert-with-description .ant-alert-icon {
+        position: absolute;
+        top: 16px;
+        left: 24px;
+        font-size: 24px
+    }
+
+    .ant-alert-with-description .ant-alert-close-icon {
+        position: absolute;
+        top: 16px;
+        right: 16px;
+        font-size: 14px;
+        cursor: pointer
+    }
+
+    .ant-alert-with-description .ant-alert-message {
+        display: block;
+        margin-bottom: 4px;
+        color: rgba(0,0,0,.85);
+        font-size: 16px
+    }
+
+.ant-alert-message {
+    color: rgba(0,0,0,.85)
+}
+
+.ant-alert-with-description .ant-alert-description {
+    display: block
+}
+
+.ant-alert.ant-alert-closing {
+    height: 0 !important;
+    margin: 0;
+    padding-top: 0;
+    padding-bottom: 0;
+    -webkit-transform-origin: 50% 0;
+    transform-origin: 50% 0;
+    -webkit-transition: all .3s cubic-bezier(.78,.14,.15,.86);
+    transition: all .3s cubic-bezier(.78,.14,.15,.86)
+}
+
+.ant-alert-slide-up-leave {
+    -webkit-animation: antAlertSlideUpOut .3s cubic-bezier(.78,.14,.15,.86);
+    animation: antAlertSlideUpOut .3s cubic-bezier(.78,.14,.15,.86);
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both
+}
+
+.ant-alert-banner {
+    margin-bottom: 0;
+    border: 0;
+    border-radius: 0
+}
+
+@-webkit-keyframes antAlertSlideUpIn {
+    0% {
+        -webkit-transform: scaleY(0);
+        transform: scaleY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@keyframes antAlertSlideUpIn {
+    0% {
+        -webkit-transform: scaleY(0);
+        transform: scaleY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antAlertSlideUpOut {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(0);
+        transform: scaleY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+@keyframes antAlertSlideUpOut {
+    0% {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 1
+    }
+
+    to {
+        -webkit-transform: scaleY(0);
+        transform: scaleY(0);
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0;
+        opacity: 0
+    }
+}
+
+.ant-anchor {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    padding-left: 2px
+}
+
+.ant-anchor-wrapper {
+    margin-left: -4px;
+    padding-left: 4px;
+    overflow: auto;
+    background-color: #fff
+}
+
+.ant-anchor-ink {
+    position: absolute;
+    top: 0;
+    left: 0;
+    height: 100%
+}
+
+    .ant-anchor-ink:before {
+        position: relative;
+        display: block;
+        width: 2px;
+        height: 100%;
+        margin: 0 auto;
+        background-color: #e8e8e8;
+        content: " "
+    }
+
+.ant-anchor-ink-ball {
+    position: absolute;
+    left: 50%;
+    display: none;
+    width: 8px;
+    height: 8px;
+    background-color: #fff;
+    border: 2px solid #fa541c;
+    border-radius: 8px;
+    -webkit-transform: translateX(-50%);
+    transform: translateX(-50%);
+    -webkit-transition: top .3s ease-in-out;
+    transition: top .3s ease-in-out
+}
+
+    .ant-anchor-ink-ball.visible {
+        display: inline-block
+    }
+
+.ant-anchor.fixed .ant-anchor-ink .ant-anchor-ink-ball {
+    display: none
+}
+
+.ant-anchor-link {
+    padding: 7px 0 7px 16px;
+    line-height: 1.143
+}
+
+.ant-anchor-link-title {
+    position: relative;
+    display: block;
+    margin-bottom: 6px;
+    overflow: hidden;
+    color: rgba(0,0,0,.65);
+    white-space: nowrap;
+    text-overflow: ellipsis;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-anchor-link-title:only-child {
+        margin-bottom: 0
+    }
+
+.ant-anchor-link-active > .ant-anchor-link-title {
+    color: #fa541c
+}
+
+.ant-anchor-link .ant-anchor-link {
+    padding-top: 5px;
+    padding-bottom: 5px
+}
+
+.ant-select-auto-complete {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+    .ant-select-auto-complete.ant-select .ant-select-selection {
+        border: 0;
+        -webkit-box-shadow: none;
+        box-shadow: none
+    }
+
+    .ant-select-auto-complete.ant-select .ant-select-selection__rendered {
+        height: 100%;
+        margin-right: 0;
+        margin-left: 0;
+        line-height: 32px
+    }
+
+    .ant-select-auto-complete.ant-select .ant-select-selection__placeholder {
+        margin-right: 12px;
+        margin-left: 12px
+    }
+
+    .ant-select-auto-complete.ant-select .ant-select-selection--single {
+        height: auto
+    }
+
+    .ant-select-auto-complete.ant-select .ant-select-search--inline {
+        position: static;
+        float: left
+    }
+
+    .ant-select-auto-complete.ant-select-allow-clear .ant-select-selection:hover .ant-select-selection__rendered {
+        margin-right: 0 !important
+    }
+
+    .ant-select-auto-complete.ant-select .ant-input {
+        height: 32px;
+        line-height: 1.5;
+        background: transparent;
+        border-width: 1px
+    }
+
+        .ant-select-auto-complete.ant-select .ant-input:focus, .ant-select-auto-complete.ant-select .ant-input:hover {
+            border-color: #ff7a45;
+            border-right-width: 1px !important
+        }
+
+        .ant-select-auto-complete.ant-select .ant-input[disabled] {
+            color: rgba(0,0,0,.25);
+            background-color: #f5f5f5;
+            cursor: not-allowed;
+            opacity: 1
+        }
+
+            .ant-select-auto-complete.ant-select .ant-input[disabled]:hover {
+                border-color: #d9d9d9;
+                border-right-width: 1px !important
+            }
+
+    .ant-select-auto-complete.ant-select-lg .ant-select-selection__rendered {
+        line-height: 40px
+    }
+
+    .ant-select-auto-complete.ant-select-lg .ant-input {
+        height: 40px;
+        padding-top: 6px;
+        padding-bottom: 6px
+    }
+
+    .ant-select-auto-complete.ant-select-sm .ant-select-selection__rendered {
+        line-height: 24px
+    }
+
+    .ant-select-auto-complete.ant-select-sm .ant-input {
+        height: 24px;
+        padding-top: 1px;
+        padding-bottom: 1px
+    }
+
+.ant-input-group > .ant-select-auto-complete .ant-select-search__field.ant-input-affix-wrapper {
+    display: inline;
+    float: none
+}
+
+.ant-avatar {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    display: inline-block;
+    overflow: hidden;
+    color: #fff;
+    white-space: nowrap;
+    text-align: center;
+    vertical-align: middle;
+    background: #ccc;
+    width: 32px;
+    height: 32px;
+    line-height: 32px;
+    border-radius: 50%
+}
+
+.ant-avatar-image {
+    background: transparent
+}
+
+.ant-avatar-string {
+    position: absolute;
+    left: 50%;
+    -webkit-transform-origin: 0 center;
+    transform-origin: 0 center
+}
+
+.ant-avatar.ant-avatar-icon {
+    font-size: 18px
+}
+
+.ant-avatar-lg {
+    width: 40px;
+    height: 40px;
+    line-height: 40px;
+    border-radius: 50%
+}
+
+.ant-avatar-lg-string {
+    position: absolute;
+    left: 50%;
+    -webkit-transform-origin: 0 center;
+    transform-origin: 0 center
+}
+
+.ant-avatar-lg.ant-avatar-icon {
+    font-size: 24px
+}
+
+.ant-avatar-sm {
+    width: 24px;
+    height: 24px;
+    line-height: 24px;
+    border-radius: 50%
+}
+
+.ant-avatar-sm-string {
+    position: absolute;
+    left: 50%;
+    -webkit-transform-origin: 0 center;
+    transform-origin: 0 center
+}
+
+.ant-avatar-sm.ant-avatar-icon {
+    font-size: 14px
+}
+
+.ant-avatar-square {
+    border-radius: 2px
+}
+
+.ant-avatar > img {
+    display: block;
+    width: 100%;
+    height: 100%;
+    -o-object-fit: cover;
+    object-fit: cover
+}
+
+.ant-back-top {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: fixed;
+    right: 100px;
+    bottom: 50px;
+    z-index: 10;
+    width: 40px;
+    height: 40px;
+    cursor: pointer
+}
+
+.ant-back-top-content {
+    width: 40px;
+    height: 40px;
+    overflow: hidden;
+    color: #fff;
+    text-align: center;
+    background-color: rgba(0,0,0,.45);
+    border-radius: 20px
+}
+
+    .ant-back-top-content, .ant-back-top-content:hover {
+        -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1);
+        transition: all .3s cubic-bezier(.645,.045,.355,1)
+    }
+
+        .ant-back-top-content:hover {
+            background-color: rgba(0,0,0,.65)
+        }
+
+.ant-back-top-icon {
+    width: 14px;
+    height: 16px;
+    margin: 12px auto;
+    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAoCAYAAACWwljjAAAABGdBTUEAALGPC/xhBQAAAbtJREFUWAntmMtKw0AUhhMvS5cuxILgQlRUpIggIoKIIoigG1eC+AA+jo+i6FIXBfeuXIgoeKVeitVWJX5HWhhDksnUpp3FDPyZk3Nm5nycmZKkXhAEOXSA3lG7muTeRzmfy6HneUvIhnYkQK+Q9NhAA0Opg0vBEhjBKHiyb8iGMyQMOYuK41BcBSypAL+MYXSKjtFAW7EAGEO3qN4uMQbbAkXiSfRQJ1H6a+yhlkKRcAoVFYiweYNjtCVQJJpBz2GCiPt7fBOZQpFgDpUikse5HgnkM4Fi4QX0Fpc5wf9EbLqpUCy4jMoJSXWhFwbMNgWKhVbRhy5jirhs9fy/oFhgHVVTJEs7RLZ8sSEoJm6iz7SZDMbJ+/OKERQTttCXQRLToRUmrKWCYuA2+jbN0MB4OQobYShfdTCgn/sL1K36M7TLrN3n+758aPy2rrpR6+/od5E8tf/A1uLS9aId5T7J3CNYihkQ4D9PiMdMC7mp4rjB9kjFjZp8BlnVHJBuO1yFXIV0FdDF3RlyFdJVQBdv5AxVdIsq8apiZ2PyYO1EVykesGfZEESsCkweyR8MUW+V8uJ1gkYipmpdP1pm2aJVPEGzAAAAAElFTkSuQmCC) 100%/100% no-repeat
+}
+
+@media screen and (max-width:768px) {
+    .ant-back-top {
+        right: 60px
+    }
+}
+
+@media screen and (max-width:480px) {
+    .ant-back-top {
+        right: 20px
+    }
+}
+
+.ant-badge {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    display: inline-block;
+    color: unset;
+    line-height: 1
+}
+
+.ant-badge-count {
+    min-width: 20px;
+    height: 20px;
+    padding: 0 6px;
+    color: #fff;
+    font-weight: 400;
+    font-size: 12px;
+    line-height: 20px;
+    white-space: nowrap;
+    text-align: center;
+    background: #f5222d;
+    border-radius: 10px;
+    -webkit-box-shadow: 0 0 0 1px #fff;
+    box-shadow: 0 0 0 1px #fff
+}
+
+    .ant-badge-count a, .ant-badge-count a:hover {
+        color: #fff
+    }
+
+.ant-badge-multiple-words {
+    padding: 0 8px
+}
+
+.ant-badge-dot {
+    width: 6px;
+    height: 6px;
+    background: #f5222d;
+    border-radius: 100%;
+    -webkit-box-shadow: 0 0 0 1px #fff;
+    box-shadow: 0 0 0 1px #fff
+}
+
+.ant-badge-count, .ant-badge-dot, .ant-badge .ant-scroll-number-custom-component {
+    position: absolute;
+    top: 0;
+    right: 0;
+    z-index: 1;
+    -webkit-transform: translate(50%,-50%);
+    transform: translate(50%,-50%);
+    -webkit-transform-origin: 100% 0;
+    transform-origin: 100% 0
+}
+
+.ant-badge-status {
+    line-height: inherit;
+    vertical-align: baseline
+}
+
+.ant-badge-status-dot {
+    position: relative;
+    top: -1px;
+    display: inline-block;
+    width: 6px;
+    height: 6px;
+    vertical-align: middle;
+    border-radius: 50%
+}
+
+.ant-badge-status-success {
+    background-color: #52c41a
+}
+
+.ant-badge-status-processing {
+    position: relative;
+    background-color: #1890ff
+}
+
+    .ant-badge-status-processing:after {
+        position: absolute;
+        top: 0;
+        left: 0;
+        width: 100%;
+        height: 100%;
+        border: 1px solid #1890ff;
+        border-radius: 50%;
+        -webkit-animation: antStatusProcessing 1.2s ease-in-out infinite;
+        animation: antStatusProcessing 1.2s ease-in-out infinite;
+        content: ""
+    }
+
+.ant-badge-status-default {
+    background-color: #d9d9d9
+}
+
+.ant-badge-status-error {
+    background-color: #f5222d
+}
+
+.ant-badge-status-warning {
+    background-color: #faad14
+}
+
+.ant-badge-status-magenta, .ant-badge-status-pink {
+    background: #eb2f96
+}
+
+.ant-badge-status-red {
+    background: #f5222d
+}
+
+.ant-badge-status-volcano {
+    background: #fa541c
+}
+
+.ant-badge-status-orange {
+    background: #fa8c16
+}
+
+.ant-badge-status-yellow {
+    background: #fadb14
+}
+
+.ant-badge-status-gold {
+    background: #faad14
+}
+
+.ant-badge-status-cyan {
+    background: #13c2c2
+}
+
+.ant-badge-status-lime {
+    background: #a0d911
+}
+
+.ant-badge-status-green {
+    background: #52c41a
+}
+
+.ant-badge-status-blue {
+    background: #1890ff
+}
+
+.ant-badge-status-geekblue {
+    background: #2f54eb
+}
+
+.ant-badge-status-purple {
+    background: #722ed1
+}
+
+.ant-badge-status-text {
+    margin-left: 8px;
+    color: rgba(0,0,0,.65);
+    font-size: 14px
+}
+
+.ant-badge-zoom-appear, .ant-badge-zoom-enter {
+    -webkit-animation: antZoomBadgeIn .3s cubic-bezier(.12,.4,.29,1.46);
+    animation: antZoomBadgeIn .3s cubic-bezier(.12,.4,.29,1.46);
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both
+}
+
+.ant-badge-zoom-leave {
+    -webkit-animation: antZoomBadgeOut .3s cubic-bezier(.71,-.46,.88,.6);
+    animation: antZoomBadgeOut .3s cubic-bezier(.71,-.46,.88,.6);
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both
+}
+
+.ant-badge-not-a-wrapper:not(.ant-badge-status) {
+    vertical-align: middle
+}
+
+.ant-badge-not-a-wrapper .ant-scroll-number {
+    position: relative;
+    top: auto;
+    display: block
+}
+
+.ant-badge-not-a-wrapper .ant-badge-count {
+    -webkit-transform: none;
+    transform: none
+}
+
+@-webkit-keyframes antStatusProcessing {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: .5
+    }
+
+    to {
+        -webkit-transform: scale(2.4);
+        transform: scale(2.4);
+        opacity: 0
+    }
+}
+
+@keyframes antStatusProcessing {
+    0% {
+        -webkit-transform: scale(.8);
+        transform: scale(.8);
+        opacity: .5
+    }
+
+    to {
+        -webkit-transform: scale(2.4);
+        transform: scale(2.4);
+        opacity: 0
+    }
+}
+
+.ant-scroll-number {
+    overflow: hidden
+}
+
+.ant-scroll-number-only {
+    display: inline-block;
+    height: 20px;
+    -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1);
+    transition: all .3s cubic-bezier(.645,.045,.355,1)
+}
+
+    .ant-scroll-number-only > p.ant-scroll-number-only-unit {
+        height: 20px;
+        margin: 0
+    }
+
+.ant-scroll-number-symbol {
+    vertical-align: top
+}
+
+@-webkit-keyframes antZoomBadgeIn {
+    0% {
+        -webkit-transform: scale(0) translate(50%,-50%);
+        transform: scale(0) translate(50%,-50%);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1) translate(50%,-50%);
+        transform: scale(1) translate(50%,-50%)
+    }
+}
+
+@keyframes antZoomBadgeIn {
+    0% {
+        -webkit-transform: scale(0) translate(50%,-50%);
+        transform: scale(0) translate(50%,-50%);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: scale(1) translate(50%,-50%);
+        transform: scale(1) translate(50%,-50%)
+    }
+}
+
+@-webkit-keyframes antZoomBadgeOut {
+    0% {
+        -webkit-transform: scale(1) translate(50%,-50%);
+        transform: scale(1) translate(50%,-50%)
+    }
+
+    to {
+        -webkit-transform: scale(0) translate(50%,-50%);
+        transform: scale(0) translate(50%,-50%);
+        opacity: 0
+    }
+}
+
+@keyframes antZoomBadgeOut {
+    0% {
+        -webkit-transform: scale(1) translate(50%,-50%);
+        transform: scale(1) translate(50%,-50%)
+    }
+
+    to {
+        -webkit-transform: scale(0) translate(50%,-50%);
+        transform: scale(0) translate(50%,-50%);
+        opacity: 0
+    }
+}
+
+.ant-breadcrumb {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    color: rgba(0,0,0,.45);
+    font-size: 14px
+}
+
+    .ant-breadcrumb .anticon {
+        font-size: 14px
+    }
+
+    .ant-breadcrumb a {
+        color: rgba(0,0,0,.45);
+        -webkit-transition: color .3s;
+        transition: color .3s
+    }
+
+        .ant-breadcrumb a:hover {
+            color: #ff7a45
+        }
+
+    .ant-breadcrumb > span:last-child, .ant-breadcrumb > span:last-child a {
+        color: rgba(0,0,0,.65)
+    }
+
+        .ant-breadcrumb > span:last-child .ant-breadcrumb-separator {
+            display: none
+        }
+
+.ant-breadcrumb-separator {
+    margin: 0 8px;
+    color: rgba(0,0,0,.45)
+}
+
+.ant-breadcrumb-link > .anticon + span, .ant-breadcrumb-overlay-link > .anticon {
+    margin-left: 4px
+}
+
+.ant-btn {
+    line-height: 1.499;
+    position: relative;
+    display: inline-block;
+    font-weight: 400;
+    white-space: nowrap;
+    text-align: center;
+    background-image: none;
+    border: 1px solid transparent;
+    -webkit-box-shadow: 0 2px 0 rgba(0,0,0,.015);
+    box-shadow: 0 2px 0 rgba(0,0,0,.015);
+    cursor: pointer;
+    -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1);
+    transition: all .3s cubic-bezier(.645,.045,.355,1);
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    -ms-touch-action: manipulation;
+    touch-action: manipulation;
+    height: 32px;
+    padding: 0 15px;
+    font-size: 14px;
+    border-radius: 2px;
+    color: rgba(0,0,0,.65);
+    background-color: #fff;
+    border-color: #d9d9d9
+}
+
+    .ant-btn > .anticon {
+        line-height: 1
+    }
+
+    .ant-btn, .ant-btn:active, .ant-btn:focus {
+        outline: 0
+    }
+
+        .ant-btn:not([disabled]):hover {
+            text-decoration: none
+        }
+
+        .ant-btn:not([disabled]):active {
+            outline: 0;
+            -webkit-box-shadow: none;
+            box-shadow: none
+        }
+
+        .ant-btn.disabled, .ant-btn[disabled] {
+            cursor: not-allowed
+        }
+
+            .ant-btn.disabled > *, .ant-btn[disabled] > * {
+                pointer-events: none
+            }
+
+.ant-btn-lg {
+    height: 40px;
+    padding: 0 15px;
+    font-size: 16px;
+    border-radius: 2px
+}
+
+.ant-btn-sm {
+    height: 24px;
+    padding: 0 7px;
+    font-size: 14px;
+    border-radius: 2px
+}
+
+.ant-btn > a:only-child {
+    color: currentColor
+}
+
+    .ant-btn > a:only-child:after {
+        position: absolute;
+        top: 0;
+        right: 0;
+        bottom: 0;
+        left: 0;
+        background: transparent;
+        content: ""
+    }
+
+.ant-btn:focus, .ant-btn:hover {
+    color: #ff7a45;
+    background-color: #fff;
+    border-color: #ff7a45
+}
+
+    .ant-btn:focus > a:only-child, .ant-btn:hover > a:only-child {
+        color: currentColor
+    }
+
+        .ant-btn:focus > a:only-child:after, .ant-btn:hover > a:only-child:after {
+            position: absolute;
+            top: 0;
+            right: 0;
+            bottom: 0;
+            left: 0;
+            background: transparent;
+            content: ""
+        }
+
+.ant-btn.active, .ant-btn:active {
+    color: #d4380d;
+    background-color: #fff;
+    border-color: #d4380d
+}
+
+    .ant-btn.active > a:only-child, .ant-btn:active > a:only-child {
+        color: currentColor
+    }
+
+        .ant-btn.active > a:only-child:after, .ant-btn:active > a:only-child:after {
+            position: absolute;
+            top: 0;
+            right: 0;
+            bottom: 0;
+            left: 0;
+            background: transparent;
+            content: ""
+        }
+
+.ant-btn-disabled, .ant-btn-disabled.active, .ant-btn-disabled:active, .ant-btn-disabled:focus, .ant-btn-disabled:hover, .ant-btn.disabled, .ant-btn.disabled.active, .ant-btn.disabled:active, .ant-btn.disabled:focus, .ant-btn.disabled:hover, .ant-btn[disabled], .ant-btn[disabled].active, .ant-btn[disabled]:active, .ant-btn[disabled]:focus, .ant-btn[disabled]:hover {
+    color: rgba(0,0,0,.25);
+    background-color: #f5f5f5;
+    border-color: #d9d9d9;
+    text-shadow: none;
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+    .ant-btn-disabled.active > a:only-child, .ant-btn-disabled:active > a:only-child, .ant-btn-disabled:focus > a:only-child, .ant-btn-disabled:hover > a:only-child, .ant-btn-disabled > a:only-child, .ant-btn.disabled.active > a:only-child, .ant-btn.disabled:active > a:only-child, .ant-btn.disabled:focus > a:only-child, .ant-btn.disabled:hover > a:only-child, .ant-btn.disabled > a:only-child, .ant-btn[disabled].active > a:only-child, .ant-btn[disabled]:active > a:only-child, .ant-btn[disabled]:focus > a:only-child, .ant-btn[disabled]:hover > a:only-child, .ant-btn[disabled] > a:only-child {
+        color: currentColor
+    }
+
+        .ant-btn-disabled.active > a:only-child:after, .ant-btn-disabled:active > a:only-child:after, .ant-btn-disabled:focus > a:only-child:after, .ant-btn-disabled:hover > a:only-child:after, .ant-btn-disabled > a:only-child:after, .ant-btn.disabled.active > a:only-child:after, .ant-btn.disabled:active > a:only-child:after, .ant-btn.disabled:focus > a:only-child:after, .ant-btn.disabled:hover > a:only-child:after, .ant-btn.disabled > a:only-child:after, .ant-btn[disabled].active > a:only-child:after, .ant-btn[disabled]:active > a:only-child:after, .ant-btn[disabled]:focus > a:only-child:after, .ant-btn[disabled]:hover > a:only-child:after, .ant-btn[disabled] > a:only-child:after {
+            position: absolute;
+            top: 0;
+            right: 0;
+            bottom: 0;
+            left: 0;
+            background: transparent;
+            content: ""
+        }
+
+.ant-btn.active, .ant-btn:active, .ant-btn:focus, .ant-btn:hover {
+    text-decoration: none;
+    background: #fff
+}
+
+.ant-btn > i, .ant-btn > span {
+    display: inline-block;
+    -webkit-transition: margin-left .3s cubic-bezier(.645,.045,.355,1);
+    transition: margin-left .3s cubic-bezier(.645,.045,.355,1);
+    pointer-events: none
+}
+
+.ant-btn-primary {
+    color: #fff;
+    background-color: #fa541c;
+    border-color: #fa541c;
+    text-shadow: 0 -1px 0 rgba(0,0,0,.12);
+    -webkit-box-shadow: 0 2px 0 rgba(0,0,0,.045);
+    box-shadow: 0 2px 0 rgba(0,0,0,.045)
+}
+
+    .ant-btn-primary > a:only-child {
+        color: currentColor
+    }
+
+        .ant-btn-primary > a:only-child:after {
+            position: absolute;
+            top: 0;
+            right: 0;
+            bottom: 0;
+            left: 0;
+            background: transparent;
+            content: ""
+        }
+
+    .ant-btn-primary:focus, .ant-btn-primary:hover {
+        color: #fff;
+        background-color: #ff7a45;
+        border-color: #ff7a45
+    }
+
+        .ant-btn-primary:focus > a:only-child, .ant-btn-primary:hover > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-primary:focus > a:only-child:after, .ant-btn-primary:hover > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+    .ant-btn-primary.active, .ant-btn-primary:active {
+        color: #fff;
+        background-color: #d4380d;
+        border-color: #d4380d
+    }
+
+        .ant-btn-primary.active > a:only-child, .ant-btn-primary:active > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-primary.active > a:only-child:after, .ant-btn-primary:active > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+    .ant-btn-primary-disabled, .ant-btn-primary-disabled.active, .ant-btn-primary-disabled:active, .ant-btn-primary-disabled:focus, .ant-btn-primary-disabled:hover, .ant-btn-primary.disabled, .ant-btn-primary.disabled.active, .ant-btn-primary.disabled:active, .ant-btn-primary.disabled:focus, .ant-btn-primary.disabled:hover, .ant-btn-primary[disabled], .ant-btn-primary[disabled].active, .ant-btn-primary[disabled]:active, .ant-btn-primary[disabled]:focus, .ant-btn-primary[disabled]:hover {
+        color: rgba(0,0,0,.25);
+        background-color: #f5f5f5;
+        border-color: #d9d9d9;
+        text-shadow: none;
+        -webkit-box-shadow: none;
+        box-shadow: none
+    }
+
+        .ant-btn-primary-disabled.active > a:only-child, .ant-btn-primary-disabled:active > a:only-child, .ant-btn-primary-disabled:focus > a:only-child, .ant-btn-primary-disabled:hover > a:only-child, .ant-btn-primary-disabled > a:only-child, .ant-btn-primary.disabled.active > a:only-child, .ant-btn-primary.disabled:active > a:only-child, .ant-btn-primary.disabled:focus > a:only-child, .ant-btn-primary.disabled:hover > a:only-child, .ant-btn-primary.disabled > a:only-child, .ant-btn-primary[disabled].active > a:only-child, .ant-btn-primary[disabled]:active > a:only-child, .ant-btn-primary[disabled]:focus > a:only-child, .ant-btn-primary[disabled]:hover > a:only-child, .ant-btn-primary[disabled] > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-primary-disabled.active > a:only-child:after, .ant-btn-primary-disabled:active > a:only-child:after, .ant-btn-primary-disabled:focus > a:only-child:after, .ant-btn-primary-disabled:hover > a:only-child:after, .ant-btn-primary-disabled > a:only-child:after, .ant-btn-primary.disabled.active > a:only-child:after, .ant-btn-primary.disabled:active > a:only-child:after, .ant-btn-primary.disabled:focus > a:only-child:after, .ant-btn-primary.disabled:hover > a:only-child:after, .ant-btn-primary.disabled > a:only-child:after, .ant-btn-primary[disabled].active > a:only-child:after, .ant-btn-primary[disabled]:active > a:only-child:after, .ant-btn-primary[disabled]:focus > a:only-child:after, .ant-btn-primary[disabled]:hover > a:only-child:after, .ant-btn-primary[disabled] > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) {
+    border-right-color: #ff7a45;
+    border-left-color: #ff7a45
+}
+
+    .ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled {
+        border-color: #d9d9d9
+    }
+
+.ant-btn-group .ant-btn-primary:first-child:not(:last-child) {
+    border-right-color: #ff7a45
+}
+
+    .ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled] {
+        border-right-color: #d9d9d9
+    }
+
+.ant-btn-group .ant-btn-primary + .ant-btn-primary, .ant-btn-group .ant-btn-primary:last-child:not(:first-child) {
+    border-left-color: #ff7a45
+}
+
+    .ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled], .ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled] {
+        border-left-color: #d9d9d9
+    }
+
+.ant-btn-ghost {
+    color: rgba(0,0,0,.65);
+    background-color: transparent;
+    border-color: #d9d9d9
+}
+
+    .ant-btn-ghost > a:only-child {
+        color: currentColor
+    }
+
+        .ant-btn-ghost > a:only-child:after {
+            position: absolute;
+            top: 0;
+            right: 0;
+            bottom: 0;
+            left: 0;
+            background: transparent;
+            content: ""
+        }
+
+    .ant-btn-ghost:focus, .ant-btn-ghost:hover {
+        color: #ff7a45;
+        background-color: transparent;
+        border-color: #ff7a45
+    }
+
+        .ant-btn-ghost:focus > a:only-child, .ant-btn-ghost:hover > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-ghost:focus > a:only-child:after, .ant-btn-ghost:hover > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+    .ant-btn-ghost.active, .ant-btn-ghost:active {
+        color: #d4380d;
+        background-color: transparent;
+        border-color: #d4380d
+    }
+
+        .ant-btn-ghost.active > a:only-child, .ant-btn-ghost:active > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-ghost.active > a:only-child:after, .ant-btn-ghost:active > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+    .ant-btn-ghost-disabled, .ant-btn-ghost-disabled.active, .ant-btn-ghost-disabled:active, .ant-btn-ghost-disabled:focus, .ant-btn-ghost-disabled:hover, .ant-btn-ghost.disabled, .ant-btn-ghost.disabled.active, .ant-btn-ghost.disabled:active, .ant-btn-ghost.disabled:focus, .ant-btn-ghost.disabled:hover, .ant-btn-ghost[disabled], .ant-btn-ghost[disabled].active, .ant-btn-ghost[disabled]:active, .ant-btn-ghost[disabled]:focus, .ant-btn-ghost[disabled]:hover {
+        color: rgba(0,0,0,.25);
+        background-color: #f5f5f5;
+        border-color: #d9d9d9;
+        text-shadow: none;
+        -webkit-box-shadow: none;
+        box-shadow: none
+    }
+
+        .ant-btn-ghost-disabled.active > a:only-child, .ant-btn-ghost-disabled:active > a:only-child, .ant-btn-ghost-disabled:focus > a:only-child, .ant-btn-ghost-disabled:hover > a:only-child, .ant-btn-ghost-disabled > a:only-child, .ant-btn-ghost.disabled.active > a:only-child, .ant-btn-ghost.disabled:active > a:only-child, .ant-btn-ghost.disabled:focus > a:only-child, .ant-btn-ghost.disabled:hover > a:only-child, .ant-btn-ghost.disabled > a:only-child, .ant-btn-ghost[disabled].active > a:only-child, .ant-btn-ghost[disabled]:active > a:only-child, .ant-btn-ghost[disabled]:focus > a:only-child, .ant-btn-ghost[disabled]:hover > a:only-child, .ant-btn-ghost[disabled] > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-ghost-disabled.active > a:only-child:after, .ant-btn-ghost-disabled:active > a:only-child:after, .ant-btn-ghost-disabled:focus > a:only-child:after, .ant-btn-ghost-disabled:hover > a:only-child:after, .ant-btn-ghost-disabled > a:only-child:after, .ant-btn-ghost.disabled.active > a:only-child:after, .ant-btn-ghost.disabled:active > a:only-child:after, .ant-btn-ghost.disabled:focus > a:only-child:after, .ant-btn-ghost.disabled:hover > a:only-child:after, .ant-btn-ghost.disabled > a:only-child:after, .ant-btn-ghost[disabled].active > a:only-child:after, .ant-btn-ghost[disabled]:active > a:only-child:after, .ant-btn-ghost[disabled]:focus > a:only-child:after, .ant-btn-ghost[disabled]:hover > a:only-child:after, .ant-btn-ghost[disabled] > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+.ant-btn-dashed {
+    color: rgba(0,0,0,.65);
+    background-color: #fff;
+    border-color: #d9d9d9;
+    border-style: dashed
+}
+
+    .ant-btn-dashed > a:only-child {
+        color: currentColor
+    }
+
+        .ant-btn-dashed > a:only-child:after {
+            position: absolute;
+            top: 0;
+            right: 0;
+            bottom: 0;
+            left: 0;
+            background: transparent;
+            content: ""
+        }
+
+    .ant-btn-dashed:focus, .ant-btn-dashed:hover {
+        color: #ff7a45;
+        background-color: #fff;
+        border-color: #ff7a45
+    }
+
+        .ant-btn-dashed:focus > a:only-child, .ant-btn-dashed:hover > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-dashed:focus > a:only-child:after, .ant-btn-dashed:hover > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+    .ant-btn-dashed.active, .ant-btn-dashed:active {
+        color: #d4380d;
+        background-color: #fff;
+        border-color: #d4380d
+    }
+
+        .ant-btn-dashed.active > a:only-child, .ant-btn-dashed:active > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-dashed.active > a:only-child:after, .ant-btn-dashed:active > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+    .ant-btn-dashed-disabled, .ant-btn-dashed-disabled.active, .ant-btn-dashed-disabled:active, .ant-btn-dashed-disabled:focus, .ant-btn-dashed-disabled:hover, .ant-btn-dashed.disabled, .ant-btn-dashed.disabled.active, .ant-btn-dashed.disabled:active, .ant-btn-dashed.disabled:focus, .ant-btn-dashed.disabled:hover, .ant-btn-dashed[disabled], .ant-btn-dashed[disabled].active, .ant-btn-dashed[disabled]:active, .ant-btn-dashed[disabled]:focus, .ant-btn-dashed[disabled]:hover {
+        color: rgba(0,0,0,.25);
+        background-color: #f5f5f5;
+        border-color: #d9d9d9;
+        text-shadow: none;
+        -webkit-box-shadow: none;
+        box-shadow: none
+    }
+
+        .ant-btn-dashed-disabled.active > a:only-child, .ant-btn-dashed-disabled:active > a:only-child, .ant-btn-dashed-disabled:focus > a:only-child, .ant-btn-dashed-disabled:hover > a:only-child, .ant-btn-dashed-disabled > a:only-child, .ant-btn-dashed.disabled.active > a:only-child, .ant-btn-dashed.disabled:active > a:only-child, .ant-btn-dashed.disabled:focus > a:only-child, .ant-btn-dashed.disabled:hover > a:only-child, .ant-btn-dashed.disabled > a:only-child, .ant-btn-dashed[disabled].active > a:only-child, .ant-btn-dashed[disabled]:active > a:only-child, .ant-btn-dashed[disabled]:focus > a:only-child, .ant-btn-dashed[disabled]:hover > a:only-child, .ant-btn-dashed[disabled] > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-dashed-disabled.active > a:only-child:after, .ant-btn-dashed-disabled:active > a:only-child:after, .ant-btn-dashed-disabled:focus > a:only-child:after, .ant-btn-dashed-disabled:hover > a:only-child:after, .ant-btn-dashed-disabled > a:only-child:after, .ant-btn-dashed.disabled.active > a:only-child:after, .ant-btn-dashed.disabled:active > a:only-child:after, .ant-btn-dashed.disabled:focus > a:only-child:after, .ant-btn-dashed.disabled:hover > a:only-child:after, .ant-btn-dashed.disabled > a:only-child:after, .ant-btn-dashed[disabled].active > a:only-child:after, .ant-btn-dashed[disabled]:active > a:only-child:after, .ant-btn-dashed[disabled]:focus > a:only-child:after, .ant-btn-dashed[disabled]:hover > a:only-child:after, .ant-btn-dashed[disabled] > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+.ant-btn-danger {
+    color: #fff;
+    background-color: #ff4d4f;
+    border-color: #ff4d4f;
+    text-shadow: 0 -1px 0 rgba(0,0,0,.12);
+    -webkit-box-shadow: 0 2px 0 rgba(0,0,0,.045);
+    box-shadow: 0 2px 0 rgba(0,0,0,.045)
+}
+
+    .ant-btn-danger > a:only-child {
+        color: currentColor
+    }
+
+        .ant-btn-danger > a:only-child:after {
+            position: absolute;
+            top: 0;
+            right: 0;
+            bottom: 0;
+            left: 0;
+            background: transparent;
+            content: ""
+        }
+
+    .ant-btn-danger:focus, .ant-btn-danger:hover {
+        color: #fff;
+        background-color: #ff7875;
+        border-color: #ff7875
+    }
+
+        .ant-btn-danger:focus > a:only-child, .ant-btn-danger:hover > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-danger:focus > a:only-child:after, .ant-btn-danger:hover > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+    .ant-btn-danger.active, .ant-btn-danger:active {
+        color: #fff;
+        background-color: #d9363e;
+        border-color: #d9363e
+    }
+
+        .ant-btn-danger.active > a:only-child, .ant-btn-danger:active > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-danger.active > a:only-child:after, .ant-btn-danger:active > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+    .ant-btn-danger-disabled, .ant-btn-danger-disabled.active, .ant-btn-danger-disabled:active, .ant-btn-danger-disabled:focus, .ant-btn-danger-disabled:hover, .ant-btn-danger.disabled, .ant-btn-danger.disabled.active, .ant-btn-danger.disabled:active, .ant-btn-danger.disabled:focus, .ant-btn-danger.disabled:hover, .ant-btn-danger[disabled], .ant-btn-danger[disabled].active, .ant-btn-danger[disabled]:active, .ant-btn-danger[disabled]:focus, .ant-btn-danger[disabled]:hover {
+        color: rgba(0,0,0,.25);
+        background-color: #f5f5f5;
+        border-color: #d9d9d9;
+        text-shadow: none;
+        -webkit-box-shadow: none;
+        box-shadow: none
+    }
+
+        .ant-btn-danger-disabled.active > a:only-child, .ant-btn-danger-disabled:active > a:only-child, .ant-btn-danger-disabled:focus > a:only-child, .ant-btn-danger-disabled:hover > a:only-child, .ant-btn-danger-disabled > a:only-child, .ant-btn-danger.disabled.active > a:only-child, .ant-btn-danger.disabled:active > a:only-child, .ant-btn-danger.disabled:focus > a:only-child, .ant-btn-danger.disabled:hover > a:only-child, .ant-btn-danger.disabled > a:only-child, .ant-btn-danger[disabled].active > a:only-child, .ant-btn-danger[disabled]:active > a:only-child, .ant-btn-danger[disabled]:focus > a:only-child, .ant-btn-danger[disabled]:hover > a:only-child, .ant-btn-danger[disabled] > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-danger-disabled.active > a:only-child:after, .ant-btn-danger-disabled:active > a:only-child:after, .ant-btn-danger-disabled:focus > a:only-child:after, .ant-btn-danger-disabled:hover > a:only-child:after, .ant-btn-danger-disabled > a:only-child:after, .ant-btn-danger.disabled.active > a:only-child:after, .ant-btn-danger.disabled:active > a:only-child:after, .ant-btn-danger.disabled:focus > a:only-child:after, .ant-btn-danger.disabled:hover > a:only-child:after, .ant-btn-danger.disabled > a:only-child:after, .ant-btn-danger[disabled].active > a:only-child:after, .ant-btn-danger[disabled]:active > a:only-child:after, .ant-btn-danger[disabled]:focus > a:only-child:after, .ant-btn-danger[disabled]:hover > a:only-child:after, .ant-btn-danger[disabled] > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+.ant-btn-link {
+    color: #fa541c;
+    background-color: transparent;
+    border-color: transparent;
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+    .ant-btn-link > a:only-child {
+        color: currentColor
+    }
+
+        .ant-btn-link > a:only-child:after {
+            position: absolute;
+            top: 0;
+            right: 0;
+            bottom: 0;
+            left: 0;
+            background: transparent;
+            content: ""
+        }
+
+    .ant-btn-link:focus, .ant-btn-link:hover {
+        color: #ff7a45;
+        background-color: transparent;
+        border-color: #ff7a45
+    }
+
+        .ant-btn-link:focus > a:only-child, .ant-btn-link:hover > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-link:focus > a:only-child:after, .ant-btn-link:hover > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+    .ant-btn-link.active, .ant-btn-link:active {
+        color: #d4380d;
+        background-color: transparent;
+        border-color: #d4380d
+    }
+
+        .ant-btn-link.active > a:only-child, .ant-btn-link:active > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-link.active > a:only-child:after, .ant-btn-link:active > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+    .ant-btn-link-disabled, .ant-btn-link-disabled.active, .ant-btn-link-disabled:active, .ant-btn-link-disabled:focus, .ant-btn-link-disabled:hover, .ant-btn-link.disabled, .ant-btn-link.disabled.active, .ant-btn-link.disabled:active, .ant-btn-link.disabled:focus, .ant-btn-link.disabled:hover, .ant-btn-link[disabled], .ant-btn-link[disabled].active, .ant-btn-link[disabled]:active, .ant-btn-link[disabled]:focus, .ant-btn-link[disabled]:hover {
+        background-color: #f5f5f5;
+        border-color: #d9d9d9
+    }
+
+    .ant-btn-link:active, .ant-btn-link:focus, .ant-btn-link:hover {
+        border-color: transparent
+    }
+
+    .ant-btn-link-disabled, .ant-btn-link-disabled.active, .ant-btn-link-disabled:active, .ant-btn-link-disabled:focus, .ant-btn-link-disabled:hover, .ant-btn-link.disabled, .ant-btn-link.disabled.active, .ant-btn-link.disabled:active, .ant-btn-link.disabled:focus, .ant-btn-link.disabled:hover, .ant-btn-link[disabled], .ant-btn-link[disabled].active, .ant-btn-link[disabled]:active, .ant-btn-link[disabled]:focus, .ant-btn-link[disabled]:hover {
+        color: rgba(0,0,0,.25);
+        background-color: transparent;
+        border-color: transparent;
+        text-shadow: none;
+        -webkit-box-shadow: none;
+        box-shadow: none
+    }
+
+        .ant-btn-link-disabled.active > a:only-child, .ant-btn-link-disabled:active > a:only-child, .ant-btn-link-disabled:focus > a:only-child, .ant-btn-link-disabled:hover > a:only-child, .ant-btn-link-disabled > a:only-child, .ant-btn-link.disabled.active > a:only-child, .ant-btn-link.disabled:active > a:only-child, .ant-btn-link.disabled:focus > a:only-child, .ant-btn-link.disabled:hover > a:only-child, .ant-btn-link.disabled > a:only-child, .ant-btn-link[disabled].active > a:only-child, .ant-btn-link[disabled]:active > a:only-child, .ant-btn-link[disabled]:focus > a:only-child, .ant-btn-link[disabled]:hover > a:only-child, .ant-btn-link[disabled] > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-link-disabled.active > a:only-child:after, .ant-btn-link-disabled:active > a:only-child:after, .ant-btn-link-disabled:focus > a:only-child:after, .ant-btn-link-disabled:hover > a:only-child:after, .ant-btn-link-disabled > a:only-child:after, .ant-btn-link.disabled.active > a:only-child:after, .ant-btn-link.disabled:active > a:only-child:after, .ant-btn-link.disabled:focus > a:only-child:after, .ant-btn-link.disabled:hover > a:only-child:after, .ant-btn-link.disabled > a:only-child:after, .ant-btn-link[disabled].active > a:only-child:after, .ant-btn-link[disabled]:active > a:only-child:after, .ant-btn-link[disabled]:focus > a:only-child:after, .ant-btn-link[disabled]:hover > a:only-child:after, .ant-btn-link[disabled] > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+.ant-btn-icon-only {
+    width: 32px;
+    height: 32px;
+    padding: 0;
+    font-size: 16px;
+    border-radius: 2px
+}
+
+    .ant-btn-icon-only.ant-btn-lg {
+        width: 40px;
+        height: 40px;
+        padding: 0;
+        font-size: 18px;
+        border-radius: 2px
+    }
+
+    .ant-btn-icon-only.ant-btn-sm {
+        width: 24px;
+        height: 24px;
+        padding: 0;
+        font-size: 14px;
+        border-radius: 2px
+    }
+
+    .ant-btn-icon-only > i {
+        vertical-align: middle
+    }
+
+.ant-btn-round {
+    height: 32px;
+    padding: 0 16px;
+    font-size: 14px;
+    border-radius: 32px
+}
+
+    .ant-btn-round.ant-btn-lg {
+        height: 40px;
+        padding: 0 20px;
+        font-size: 16px;
+        border-radius: 40px
+    }
+
+    .ant-btn-round.ant-btn-sm {
+        height: 24px;
+        padding: 0 12px;
+        font-size: 14px;
+        border-radius: 24px
+    }
+
+    .ant-btn-round.ant-btn-icon-only {
+        width: auto
+    }
+
+.ant-btn-circle, .ant-btn-circle-outline {
+    min-width: 32px;
+    padding-right: 0;
+    padding-left: 0;
+    text-align: center;
+    border-radius: 50%
+}
+
+    .ant-btn-circle-outline.ant-btn-lg, .ant-btn-circle.ant-btn-lg {
+        min-width: 40px;
+        border-radius: 50%
+    }
+
+    .ant-btn-circle-outline.ant-btn-sm, .ant-btn-circle.ant-btn-sm {
+        min-width: 24px;
+        border-radius: 50%
+    }
+
+.ant-btn:before {
+    position: absolute;
+    top: -1px;
+    right: -1px;
+    bottom: -1px;
+    left: -1px;
+    z-index: 1;
+    display: none;
+    background: #fff;
+    border-radius: inherit;
+    opacity: .35;
+    -webkit-transition: opacity .2s;
+    transition: opacity .2s;
+    content: "";
+    pointer-events: none
+}
+
+.ant-btn .anticon {
+    -webkit-transition: margin-left .3s cubic-bezier(.645,.045,.355,1);
+    transition: margin-left .3s cubic-bezier(.645,.045,.355,1)
+}
+
+    .ant-btn .anticon.anticon-minus > svg, .ant-btn .anticon.anticon-plus > svg {
+        shape-rendering: optimizeSpeed
+    }
+
+.ant-btn.ant-btn-loading {
+    position: relative
+}
+
+    .ant-btn.ant-btn-loading:not([disabled]) {
+        pointer-events: none
+    }
+
+    .ant-btn.ant-btn-loading:before {
+        display: block
+    }
+
+    .ant-btn.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) {
+        padding-left: 29px
+    }
+
+        .ant-btn.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) .anticon:not(:last-child) {
+            margin-left: -14px
+        }
+
+.ant-btn-sm.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) {
+    padding-left: 24px
+}
+
+    .ant-btn-sm.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) .anticon {
+        margin-left: -17px
+    }
+
+.ant-btn-group {
+    display: -webkit-inline-box;
+    display: -ms-inline-flexbox;
+    display: inline-flex
+}
+
+    .ant-btn-group, .ant-btn-group > .ant-btn, .ant-btn-group > span > .ant-btn {
+        position: relative
+    }
+
+        .ant-btn-group > .ant-btn.active, .ant-btn-group > .ant-btn:active, .ant-btn-group > .ant-btn:focus, .ant-btn-group > .ant-btn:hover, .ant-btn-group > span > .ant-btn.active, .ant-btn-group > span > .ant-btn:active, .ant-btn-group > span > .ant-btn:focus, .ant-btn-group > span > .ant-btn:hover {
+            z-index: 2
+        }
+
+        .ant-btn-group > .ant-btn:disabled, .ant-btn-group > span > .ant-btn:disabled {
+            z-index: 0
+        }
+
+        .ant-btn-group > .ant-btn-icon-only {
+            font-size: 14px
+        }
+
+.ant-btn-group-lg > .ant-btn, .ant-btn-group-lg > span > .ant-btn {
+    height: 40px;
+    padding: 0 15px;
+    font-size: 16px;
+    border-radius: 0;
+    line-height: 38px
+}
+
+    .ant-btn-group-lg > .ant-btn.ant-btn-icon-only {
+        width: 40px;
+        height: 40px;
+        padding-right: 0;
+        padding-left: 0
+    }
+
+.ant-btn-group-sm > .ant-btn, .ant-btn-group-sm > span > .ant-btn {
+    height: 24px;
+    padding: 0 7px;
+    font-size: 14px;
+    border-radius: 0;
+    line-height: 22px
+}
+
+    .ant-btn-group-sm > .ant-btn > .anticon, .ant-btn-group-sm > span > .ant-btn > .anticon {
+        font-size: 14px
+    }
+
+    .ant-btn-group-sm > .ant-btn.ant-btn-icon-only {
+        width: 24px;
+        height: 24px;
+        padding-right: 0;
+        padding-left: 0
+    }
+
+.ant-btn + .ant-btn-group, .ant-btn-group + .ant-btn, .ant-btn-group + .ant-btn-group, .ant-btn-group .ant-btn + .ant-btn, .ant-btn-group .ant-btn + span, .ant-btn-group > span + span, .ant-btn-group span + .ant-btn {
+    margin-left: -1px
+}
+
+.ant-btn-group .ant-btn-primary + .ant-btn:not(.ant-btn-primary):not([disabled]) {
+    border-left-color: transparent
+}
+
+.ant-btn-group .ant-btn {
+    border-radius: 0
+}
+
+.ant-btn-group > .ant-btn:first-child, .ant-btn-group > span:first-child > .ant-btn {
+    margin-left: 0
+}
+
+.ant-btn-group > .ant-btn:only-child, .ant-btn-group > span:only-child > .ant-btn {
+    border-radius: 2px
+}
+
+.ant-btn-group > .ant-btn:first-child:not(:last-child), .ant-btn-group > span:first-child:not(:last-child) > .ant-btn {
+    border-top-left-radius: 2px;
+    border-bottom-left-radius: 2px
+}
+
+.ant-btn-group > .ant-btn:last-child:not(:first-child), .ant-btn-group > span:last-child:not(:first-child) > .ant-btn {
+    border-top-right-radius: 2px;
+    border-bottom-right-radius: 2px
+}
+
+.ant-btn-group-sm > .ant-btn:only-child, .ant-btn-group-sm > span:only-child > .ant-btn {
+    border-radius: 2px
+}
+
+.ant-btn-group-sm > .ant-btn:first-child:not(:last-child), .ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {
+    border-top-left-radius: 2px;
+    border-bottom-left-radius: 2px
+}
+
+.ant-btn-group-sm > .ant-btn:last-child:not(:first-child), .ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {
+    border-top-right-radius: 2px;
+    border-bottom-right-radius: 2px
+}
+
+.ant-btn-group > .ant-btn-group {
+    float: left
+}
+
+    .ant-btn-group > .ant-btn-group:not(:first-child):not(:last-child) > .ant-btn {
+        border-radius: 0
+    }
+
+    .ant-btn-group > .ant-btn-group:first-child:not(:last-child) > .ant-btn:last-child {
+        padding-right: 8px;
+        border-top-right-radius: 0;
+        border-bottom-right-radius: 0
+    }
+
+    .ant-btn-group > .ant-btn-group:last-child:not(:first-child) > .ant-btn:first-child {
+        padding-left: 8px;
+        border-top-left-radius: 0;
+        border-bottom-left-radius: 0
+    }
+
+.ant-btn:active > span, .ant-btn:focus > span {
+    position: relative
+}
+
+.ant-btn > .anticon + span, .ant-btn > span + .anticon {
+    margin-left: 8px
+}
+
+.ant-btn-background-ghost {
+    color: #fff;
+    background: transparent !important;
+    border-color: #fff
+}
+
+    .ant-btn-background-ghost.ant-btn-primary {
+        color: #fa541c;
+        background-color: transparent;
+        border-color: #fa541c;
+        text-shadow: none
+    }
+
+        .ant-btn-background-ghost.ant-btn-primary > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-background-ghost.ant-btn-primary > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+        .ant-btn-background-ghost.ant-btn-primary:focus, .ant-btn-background-ghost.ant-btn-primary:hover {
+            color: #ff7a45;
+            background-color: transparent;
+            border-color: #ff7a45
+        }
+
+            .ant-btn-background-ghost.ant-btn-primary:focus > a:only-child, .ant-btn-background-ghost.ant-btn-primary:hover > a:only-child {
+                color: currentColor
+            }
+
+                .ant-btn-background-ghost.ant-btn-primary:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary:hover > a:only-child:after {
+                    position: absolute;
+                    top: 0;
+                    right: 0;
+                    bottom: 0;
+                    left: 0;
+                    background: transparent;
+                    content: ""
+                }
+
+        .ant-btn-background-ghost.ant-btn-primary.active, .ant-btn-background-ghost.ant-btn-primary:active {
+            color: #d4380d;
+            background-color: transparent;
+            border-color: #d4380d
+        }
+
+            .ant-btn-background-ghost.ant-btn-primary.active > a:only-child, .ant-btn-background-ghost.ant-btn-primary:active > a:only-child {
+                color: currentColor
+            }
+
+                .ant-btn-background-ghost.ant-btn-primary.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary:active > a:only-child:after {
+                    position: absolute;
+                    top: 0;
+                    right: 0;
+                    bottom: 0;
+                    left: 0;
+                    background: transparent;
+                    content: ""
+                }
+
+        .ant-btn-background-ghost.ant-btn-primary-disabled, .ant-btn-background-ghost.ant-btn-primary-disabled.active, .ant-btn-background-ghost.ant-btn-primary-disabled:active, .ant-btn-background-ghost.ant-btn-primary-disabled:focus, .ant-btn-background-ghost.ant-btn-primary-disabled:hover, .ant-btn-background-ghost.ant-btn-primary.disabled, .ant-btn-background-ghost.ant-btn-primary.disabled.active, .ant-btn-background-ghost.ant-btn-primary.disabled:active, .ant-btn-background-ghost.ant-btn-primary.disabled:focus, .ant-btn-background-ghost.ant-btn-primary.disabled:hover, .ant-btn-background-ghost.ant-btn-primary[disabled], .ant-btn-background-ghost.ant-btn-primary[disabled].active, .ant-btn-background-ghost.ant-btn-primary[disabled]:active, .ant-btn-background-ghost.ant-btn-primary[disabled]:focus, .ant-btn-background-ghost.ant-btn-primary[disabled]:hover {
+            color: rgba(0,0,0,.25);
+            background-color: #f5f5f5;
+            border-color: #d9d9d9;
+            text-shadow: none;
+            -webkit-box-shadow: none;
+            box-shadow: none
+        }
+
+            .ant-btn-background-ghost.ant-btn-primary-disabled.active > a:only-child, .ant-btn-background-ghost.ant-btn-primary-disabled:active > a:only-child, .ant-btn-background-ghost.ant-btn-primary-disabled:focus > a:only-child, .ant-btn-background-ghost.ant-btn-primary-disabled:hover > a:only-child, .ant-btn-background-ghost.ant-btn-primary-disabled > a:only-child, .ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child, .ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child, .ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child, .ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child, .ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child, .ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child, .ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child, .ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child, .ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child, .ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child {
+                color: currentColor
+            }
+
+                .ant-btn-background-ghost.ant-btn-primary-disabled.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary-disabled:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary-disabled:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary-disabled:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary-disabled > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child:after {
+                    position: absolute;
+                    top: 0;
+                    right: 0;
+                    bottom: 0;
+                    left: 0;
+                    background: transparent;
+                    content: ""
+                }
+
+    .ant-btn-background-ghost.ant-btn-danger {
+        color: #ff4d4f;
+        background-color: transparent;
+        border-color: #ff4d4f;
+        text-shadow: none
+    }
+
+        .ant-btn-background-ghost.ant-btn-danger > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-background-ghost.ant-btn-danger > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+        .ant-btn-background-ghost.ant-btn-danger:focus, .ant-btn-background-ghost.ant-btn-danger:hover {
+            color: #ff7875;
+            background-color: transparent;
+            border-color: #ff7875
+        }
+
+            .ant-btn-background-ghost.ant-btn-danger:focus > a:only-child, .ant-btn-background-ghost.ant-btn-danger:hover > a:only-child {
+                color: currentColor
+            }
+
+                .ant-btn-background-ghost.ant-btn-danger:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger:hover > a:only-child:after {
+                    position: absolute;
+                    top: 0;
+                    right: 0;
+                    bottom: 0;
+                    left: 0;
+                    background: transparent;
+                    content: ""
+                }
+
+        .ant-btn-background-ghost.ant-btn-danger.active, .ant-btn-background-ghost.ant-btn-danger:active {
+            color: #d9363e;
+            background-color: transparent;
+            border-color: #d9363e
+        }
+
+            .ant-btn-background-ghost.ant-btn-danger.active > a:only-child, .ant-btn-background-ghost.ant-btn-danger:active > a:only-child {
+                color: currentColor
+            }
+
+                .ant-btn-background-ghost.ant-btn-danger.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger:active > a:only-child:after {
+                    position: absolute;
+                    top: 0;
+                    right: 0;
+                    bottom: 0;
+                    left: 0;
+                    background: transparent;
+                    content: ""
+                }
+
+        .ant-btn-background-ghost.ant-btn-danger-disabled, .ant-btn-background-ghost.ant-btn-danger-disabled.active, .ant-btn-background-ghost.ant-btn-danger-disabled:active, .ant-btn-background-ghost.ant-btn-danger-disabled:focus, .ant-btn-background-ghost.ant-btn-danger-disabled:hover, .ant-btn-background-ghost.ant-btn-danger.disabled, .ant-btn-background-ghost.ant-btn-danger.disabled.active, .ant-btn-background-ghost.ant-btn-danger.disabled:active, .ant-btn-background-ghost.ant-btn-danger.disabled:focus, .ant-btn-background-ghost.ant-btn-danger.disabled:hover, .ant-btn-background-ghost.ant-btn-danger[disabled], .ant-btn-background-ghost.ant-btn-danger[disabled].active, .ant-btn-background-ghost.ant-btn-danger[disabled]:active, .ant-btn-background-ghost.ant-btn-danger[disabled]:focus, .ant-btn-background-ghost.ant-btn-danger[disabled]:hover {
+            color: rgba(0,0,0,.25);
+            background-color: #f5f5f5;
+            border-color: #d9d9d9;
+            text-shadow: none;
+            -webkit-box-shadow: none;
+            box-shadow: none
+        }
+
+            .ant-btn-background-ghost.ant-btn-danger-disabled.active > a:only-child, .ant-btn-background-ghost.ant-btn-danger-disabled:active > a:only-child, .ant-btn-background-ghost.ant-btn-danger-disabled:focus > a:only-child, .ant-btn-background-ghost.ant-btn-danger-disabled:hover > a:only-child, .ant-btn-background-ghost.ant-btn-danger-disabled > a:only-child, .ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child, .ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child, .ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child, .ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child, .ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child, .ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child, .ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child, .ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child, .ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child, .ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child {
+                color: currentColor
+            }
+
+                .ant-btn-background-ghost.ant-btn-danger-disabled.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger-disabled:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger-disabled:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger-disabled:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger-disabled > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child:after {
+                    position: absolute;
+                    top: 0;
+                    right: 0;
+                    bottom: 0;
+                    left: 0;
+                    background: transparent;
+                    content: ""
+                }
+
+    .ant-btn-background-ghost.ant-btn-link {
+        color: #fa541c;
+        background-color: transparent;
+        border-color: transparent;
+        text-shadow: none;
+        color: #fff
+    }
+
+        .ant-btn-background-ghost.ant-btn-link > a:only-child {
+            color: currentColor
+        }
+
+            .ant-btn-background-ghost.ant-btn-link > a:only-child:after {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                background: transparent;
+                content: ""
+            }
+
+        .ant-btn-background-ghost.ant-btn-link:focus, .ant-btn-background-ghost.ant-btn-link:hover {
+            color: #ff7a45;
+            background-color: transparent;
+            border-color: transparent
+        }
+
+            .ant-btn-background-ghost.ant-btn-link:focus > a:only-child, .ant-btn-background-ghost.ant-btn-link:hover > a:only-child {
+                color: currentColor
+            }
+
+                .ant-btn-background-ghost.ant-btn-link:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-link:hover > a:only-child:after {
+                    position: absolute;
+                    top: 0;
+                    right: 0;
+                    bottom: 0;
+                    left: 0;
+                    background: transparent;
+                    content: ""
+                }
+
+        .ant-btn-background-ghost.ant-btn-link.active, .ant-btn-background-ghost.ant-btn-link:active {
+            color: #d4380d;
+            background-color: transparent;
+            border-color: transparent
+        }
+
+            .ant-btn-background-ghost.ant-btn-link.active > a:only-child, .ant-btn-background-ghost.ant-btn-link:active > a:only-child {
+                color: currentColor
+            }
+
+                .ant-btn-background-ghost.ant-btn-link.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-link:active > a:only-child:after {
+                    position: absolute;
+                    top: 0;
+                    right: 0;
+                    bottom: 0;
+                    left: 0;
+                    background: transparent;
+                    content: ""
+                }
+
+        .ant-btn-background-ghost.ant-btn-link-disabled, .ant-btn-background-ghost.ant-btn-link-disabled.active, .ant-btn-background-ghost.ant-btn-link-disabled:active, .ant-btn-background-ghost.ant-btn-link-disabled:focus, .ant-btn-background-ghost.ant-btn-link-disabled:hover, .ant-btn-background-ghost.ant-btn-link.disabled, .ant-btn-background-ghost.ant-btn-link.disabled.active, .ant-btn-background-ghost.ant-btn-link.disabled:active, .ant-btn-background-ghost.ant-btn-link.disabled:focus, .ant-btn-background-ghost.ant-btn-link.disabled:hover, .ant-btn-background-ghost.ant-btn-link[disabled], .ant-btn-background-ghost.ant-btn-link[disabled].active, .ant-btn-background-ghost.ant-btn-link[disabled]:active, .ant-btn-background-ghost.ant-btn-link[disabled]:focus, .ant-btn-background-ghost.ant-btn-link[disabled]:hover {
+            color: rgba(0,0,0,.25);
+            background-color: #f5f5f5;
+            border-color: #d9d9d9;
+            text-shadow: none;
+            -webkit-box-shadow: none;
+            box-shadow: none
+        }
+
+            .ant-btn-background-ghost.ant-btn-link-disabled.active > a:only-child, .ant-btn-background-ghost.ant-btn-link-disabled:active > a:only-child, .ant-btn-background-ghost.ant-btn-link-disabled:focus > a:only-child, .ant-btn-background-ghost.ant-btn-link-disabled:hover > a:only-child, .ant-btn-background-ghost.ant-btn-link-disabled > a:only-child, .ant-btn-background-ghost.ant-btn-link.disabled.active > a:only-child, .ant-btn-background-ghost.ant-btn-link.disabled:active > a:only-child, .ant-btn-background-ghost.ant-btn-link.disabled:focus > a:only-child, .ant-btn-background-ghost.ant-btn-link.disabled:hover > a:only-child, .ant-btn-background-ghost.ant-btn-link.disabled > a:only-child, .ant-btn-background-ghost.ant-btn-link[disabled].active > a:only-child, .ant-btn-background-ghost.ant-btn-link[disabled]:active > a:only-child, .ant-btn-background-ghost.ant-btn-link[disabled]:focus > a:only-child, .ant-btn-background-ghost.ant-btn-link[disabled]:hover > a:only-child, .ant-btn-background-ghost.ant-btn-link[disabled] > a:only-child {
+                color: currentColor
+            }
+
+                .ant-btn-background-ghost.ant-btn-link-disabled.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-link-disabled:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-link-disabled:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-link-disabled:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-link-disabled > a:only-child:after, .ant-btn-background-ghost.ant-btn-link.disabled.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-link.disabled:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-link.disabled:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-link.disabled:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-link.disabled > a:only-child:after, .ant-btn-background-ghost.ant-btn-link[disabled].active > a:only-child:after, .ant-btn-background-ghost.ant-btn-link[disabled]:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-link[disabled]:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-link[disabled]:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-link[disabled] > a:only-child:after {
+                    position: absolute;
+                    top: 0;
+                    right: 0;
+                    bottom: 0;
+                    left: 0;
+                    background: transparent;
+                    content: ""
+                }
+
+.ant-btn-two-chinese-chars:first-letter {
+    letter-spacing: .34em
+}
+
+.ant-btn-two-chinese-chars > :not(.anticon) {
+    margin-right: -.34em;
+    letter-spacing: .34em
+}
+
+.ant-btn-block {
+    width: 100%
+}
+
+.ant-btn:empty {
+    vertical-align: top
+}
+
+a.ant-btn {
+    padding-top: .1px;
+    line-height: 30px
+}
+
+a.ant-btn-lg {
+    line-height: 38px
+}
+
+a.ant-btn-sm {
+    line-height: 22px
+}
+
+.ant-fullcalendar {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    border-top: 1px solid #d9d9d9;
+    outline: none
+}
+
+.ant-select.ant-fullcalendar-year-select {
+    min-width: 90px
+}
+
+    .ant-select.ant-fullcalendar-year-select.ant-select-sm {
+        min-width: 70px
+    }
+
+.ant-select.ant-fullcalendar-month-select {
+    min-width: 80px;
+    margin-left: 8px
+}
+
+    .ant-select.ant-fullcalendar-month-select.ant-select-sm {
+        min-width: 70px
+    }
+
+.ant-fullcalendar-header {
+    padding: 11px 16px 11px 0;
+    text-align: right
+}
+
+    .ant-fullcalendar-header .ant-select-dropdown {
+        text-align: left
+    }
+
+    .ant-fullcalendar-header .ant-radio-group {
+        margin-left: 8px;
+        text-align: left
+    }
+
+    .ant-fullcalendar-header label.ant-radio-button {
+        height: 22px;
+        padding: 0 10px;
+        line-height: 20px
+    }
+
+.ant-fullcalendar-date-panel {
+    position: relative;
+    outline: none
+}
+
+.ant-fullcalendar-calendar-body {
+    padding: 8px 12px
+}
+
+.ant-fullcalendar table {
+    width: 100%;
+    max-width: 100%;
+    height: 256px;
+    background-color: transparent;
+    border-collapse: collapse
+}
+
+.ant-fullcalendar table, .ant-fullcalendar td, .ant-fullcalendar th {
+    border: 0
+}
+
+.ant-fullcalendar td {
+    position: relative
+}
+
+.ant-fullcalendar-calendar-table {
+    margin-bottom: 0;
+    border-spacing: 0
+}
+
+.ant-fullcalendar-column-header {
+    width: 33px;
+    padding: 0;
+    line-height: 18px;
+    text-align: center
+}
+
+    .ant-fullcalendar-column-header .ant-fullcalendar-column-header-inner {
+        display: block;
+        font-weight: 400
+    }
+
+.ant-fullcalendar-week-number-header .ant-fullcalendar-column-header-inner {
+    display: none
+}
+
+.ant-fullcalendar-date, .ant-fullcalendar-month {
+    text-align: center;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+.ant-fullcalendar-value {
+    display: block;
+    width: 24px;
+    height: 24px;
+    margin: 0 auto;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    line-height: 24px;
+    background: transparent;
+    border-radius: 2px;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-fullcalendar-value:hover {
+        background: #fff2e8;
+        cursor: pointer
+    }
+
+    .ant-fullcalendar-value:active {
+        color: #fff;
+        background: #fa541c
+    }
+
+.ant-fullcalendar-month-panel-cell .ant-fullcalendar-value {
+    width: 48px
+}
+
+.ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value, .ant-fullcalendar-today .ant-fullcalendar-value {
+    -webkit-box-shadow: 0 0 0 1px #fa541c inset;
+    box-shadow: inset 0 0 0 1px #fa541c
+}
+
+.ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value, .ant-fullcalendar-selected-day .ant-fullcalendar-value {
+    color: #fff;
+    background: #fa541c
+}
+
+.ant-fullcalendar-disabled-cell-first-of-row .ant-fullcalendar-value {
+    border-top-left-radius: 2px;
+    border-bottom-left-radius: 2px
+}
+
+.ant-fullcalendar-disabled-cell-last-of-row .ant-fullcalendar-value {
+    border-top-right-radius: 2px;
+    border-bottom-right-radius: 2px
+}
+
+.ant-fullcalendar-last-month-cell .ant-fullcalendar-value, .ant-fullcalendar-next-month-btn-day .ant-fullcalendar-value {
+    color: rgba(0,0,0,.25)
+}
+
+.ant-fullcalendar-month-panel-table {
+    width: 100%;
+    table-layout: fixed;
+    border-collapse: separate
+}
+
+.ant-fullcalendar-content {
+    position: absolute;
+    bottom: -9px;
+    left: 0;
+    width: 100%
+}
+
+.ant-fullcalendar-fullscreen {
+    border-top: 0
+}
+
+    .ant-fullcalendar-fullscreen .ant-fullcalendar-table {
+        table-layout: fixed
+    }
+
+    .ant-fullcalendar-fullscreen .ant-fullcalendar-header .ant-radio-group {
+        margin-left: 16px
+    }
+
+    .ant-fullcalendar-fullscreen .ant-fullcalendar-header label.ant-radio-button {
+        height: 32px;
+        line-height: 30px
+    }
+
+    .ant-fullcalendar-fullscreen .ant-fullcalendar-date, .ant-fullcalendar-fullscreen .ant-fullcalendar-month {
+        display: block;
+        height: 116px;
+        margin: 0 4px;
+        padding: 4px 8px;
+        color: rgba(0,0,0,.65);
+        text-align: left;
+        border-top: 2px solid #e8e8e8;
+        -webkit-transition: background .3s;
+        transition: background .3s
+    }
+
+        .ant-fullcalendar-fullscreen .ant-fullcalendar-date:hover, .ant-fullcalendar-fullscreen .ant-fullcalendar-month:hover {
+            background: #fff2e8;
+            cursor: pointer
+        }
+
+        .ant-fullcalendar-fullscreen .ant-fullcalendar-date:active, .ant-fullcalendar-fullscreen .ant-fullcalendar-month:active {
+            background: #ffd8bf
+        }
+
+    .ant-fullcalendar-fullscreen .ant-fullcalendar-column-header {
+        padding-right: 12px;
+        padding-bottom: 5px;
+        text-align: right
+    }
+
+    .ant-fullcalendar-fullscreen .ant-fullcalendar-value {
+        width: auto;
+        text-align: right;
+        background: transparent
+    }
+
+    .ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value {
+        color: rgba(0,0,0,.65)
+    }
+
+    .ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-month, .ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-date {
+        background: transparent;
+        border-top-color: #fa541c
+    }
+
+    .ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value, .ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value {
+        -webkit-box-shadow: none;
+        box-shadow: none
+    }
+
+    .ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-month, .ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-date {
+        background: #fff2e8
+    }
+
+    .ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value, .ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-value {
+        color: #fa541c
+    }
+
+    .ant-fullcalendar-fullscreen .ant-fullcalendar-last-month-cell .ant-fullcalendar-date, .ant-fullcalendar-fullscreen .ant-fullcalendar-next-month-btn-day .ant-fullcalendar-date {
+        color: rgba(0,0,0,.25)
+    }
+
+    .ant-fullcalendar-fullscreen .ant-fullcalendar-content {
+        position: static;
+        width: auto;
+        height: 88px;
+        overflow-y: auto
+    }
+
+.ant-fullcalendar-disabled-cell .ant-fullcalendar-date, .ant-fullcalendar-disabled-cell .ant-fullcalendar-date:hover {
+    cursor: not-allowed
+}
+
+.ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date, .ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date:hover {
+    background: transparent
+}
+
+.ant-fullcalendar-disabled-cell .ant-fullcalendar-value {
+    width: auto;
+    color: rgba(0,0,0,.25);
+    border-radius: 0;
+    cursor: not-allowed
+}
+
+.ant-card {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    background: #fff;
+    border-radius: 2px;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+.ant-card-hoverable {
+    cursor: pointer
+}
+
+    .ant-card-hoverable:hover {
+        border-color: rgba(0,0,0,.09);
+        -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.09);
+        box-shadow: 0 2px 8px rgba(0,0,0,.09)
+    }
+
+.ant-card-bordered {
+    border: 1px solid #e8e8e8
+}
+
+.ant-card-head {
+    min-height: 48px;
+    margin-bottom: -1px;
+    padding: 0 24px;
+    color: rgba(0,0,0,.85);
+    font-weight: 500;
+    font-size: 16px;
+    background: transparent;
+    border-bottom: 1px solid #e8e8e8;
+    border-radius: 2px 2px 0 0;
+    zoom: 1
+}
+
+    .ant-card-head:after, .ant-card-head:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-card-head:after {
+        clear: both
+    }
+
+.ant-card-head-wrapper {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center
+}
+
+.ant-card-head-title {
+    display: inline-block;
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    padding: 16px 0;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis
+}
+
+.ant-card-head .ant-tabs {
+    clear: both;
+    margin-bottom: -17px;
+    color: rgba(0,0,0,.65);
+    font-weight: 400;
+    font-size: 14px
+}
+
+.ant-card-head .ant-tabs-bar {
+    border-bottom: 1px solid #e8e8e8
+}
+
+.ant-card-extra {
+    float: right;
+    margin-left: auto;
+    padding: 16px 0;
+    color: rgba(0,0,0,.65);
+    font-weight: 400;
+    font-size: 14px
+}
+
+.ant-card-body {
+    padding: 24px;
+    zoom: 1
+}
+
+    .ant-card-body:after, .ant-card-body:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-card-body:after {
+        clear: both
+    }
+
+.ant-card-contain-grid:not(.ant-card-loading) .ant-card-body {
+    margin: -1px 0 0 -1px;
+    padding: 0
+}
+
+.ant-card-grid {
+    float: left;
+    width: 33.33%;
+    padding: 24px;
+    border: 0;
+    border-radius: 0;
+    -webkit-box-shadow: 1px 0 0 0 #e8e8e8,0 1px 0 0 #e8e8e8,1px 1px 0 0 #e8e8e8,1px 0 0 0 #e8e8e8 inset,0 1px 0 0 #e8e8e8 inset;
+    box-shadow: 1px 0 0 0 #e8e8e8,0 1px 0 0 #e8e8e8,1px 1px 0 0 #e8e8e8,inset 1px 0 0 0 #e8e8e8,inset 0 1px 0 0 #e8e8e8;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+.ant-card-grid-hoverable:hover {
+    position: relative;
+    z-index: 1;
+    -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+.ant-card-contain-tabs > .ant-card-head .ant-card-head-title {
+    min-height: 32px;
+    padding-bottom: 0
+}
+
+.ant-card-contain-tabs > .ant-card-head .ant-card-extra {
+    padding-bottom: 0
+}
+
+.ant-card-cover > * {
+    display: block;
+    width: 100%
+}
+
+.ant-card-cover img {
+    border-radius: 2px 2px 0 0
+}
+
+.ant-card-actions {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+    background: #fafafa;
+    border-top: 1px solid #e8e8e8;
+    zoom: 1
+}
+
+    .ant-card-actions:after, .ant-card-actions:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-card-actions:after {
+        clear: both
+    }
+
+    .ant-card-actions > li {
+        float: left;
+        margin: 12px 0;
+        color: rgba(0,0,0,.45);
+        text-align: center
+    }
+
+        .ant-card-actions > li > span {
+            position: relative;
+            display: block;
+            min-width: 32px;
+            font-size: 14px;
+            line-height: 22px;
+            cursor: pointer
+        }
+
+            .ant-card-actions > li > span:hover {
+                color: #fa541c;
+                -webkit-transition: color .3s;
+                transition: color .3s
+            }
+
+            .ant-card-actions > li > span > .anticon, .ant-card-actions > li > span a:not(.ant-btn) {
+                display: inline-block;
+                width: 100%;
+                color: rgba(0,0,0,.45);
+                line-height: 22px;
+                -webkit-transition: color .3s;
+                transition: color .3s
+            }
+
+                .ant-card-actions > li > span > .anticon:hover, .ant-card-actions > li > span a:not(.ant-btn):hover {
+                    color: #fa541c
+                }
+
+            .ant-card-actions > li > span > .anticon {
+                font-size: 16px;
+                line-height: 22px
+            }
+
+        .ant-card-actions > li:not(:last-child) {
+            border-right: 1px solid #e8e8e8
+        }
+
+.ant-card-type-inner .ant-card-head {
+    padding: 0 24px;
+    background: #fafafa
+}
+
+.ant-card-type-inner .ant-card-head-title {
+    padding: 12px 0;
+    font-size: 14px
+}
+
+.ant-card-type-inner .ant-card-body {
+    padding: 16px 24px
+}
+
+.ant-card-type-inner .ant-card-extra {
+    padding: 13.5px 0
+}
+
+.ant-card-meta {
+    margin: -4px 0;
+    zoom: 1
+}
+
+    .ant-card-meta:after, .ant-card-meta:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-card-meta:after {
+        clear: both
+    }
+
+.ant-card-meta-avatar {
+    float: left;
+    padding-right: 16px
+}
+
+.ant-card-meta-detail {
+    overflow: hidden
+}
+
+    .ant-card-meta-detail > div:not(:last-child) {
+        margin-bottom: 8px
+    }
+
+.ant-card-meta-title {
+    overflow: hidden;
+    color: rgba(0,0,0,.85);
+    font-weight: 500;
+    font-size: 16px;
+    white-space: nowrap;
+    text-overflow: ellipsis
+}
+
+.ant-card-meta-description {
+    color: rgba(0,0,0,.45)
+}
+
+.ant-card-loading {
+    overflow: hidden
+}
+
+    .ant-card-loading .ant-card-body {
+        -webkit-user-select: none;
+        -moz-user-select: none;
+        -ms-user-select: none;
+        user-select: none
+    }
+
+.ant-card-loading-content p {
+    margin: 0
+}
+
+.ant-card-loading-block {
+    height: 14px;
+    margin: 4px 0;
+    background: -webkit-gradient(linear,left top,right top,from(rgba(207,216,220,.2)),color-stop(rgba(207,216,220,.4)),to(rgba(207,216,220,.2)));
+    background: linear-gradient(90deg,rgba(207,216,220,.2),rgba(207,216,220,.4),rgba(207,216,220,.2));
+    background-size: 600% 600%;
+    border-radius: 2px;
+    -webkit-animation: card-loading 1.4s ease infinite;
+    animation: card-loading 1.4s ease infinite
+}
+
+@-webkit-keyframes card-loading {
+    0%,to {
+        background-position: 0 50%
+    }
+
+    50% {
+        background-position: 100% 50%
+    }
+}
+
+@keyframes card-loading {
+    0%,to {
+        background-position: 0 50%
+    }
+
+    50% {
+        background-position: 100% 50%
+    }
+}
+
+.ant-card-small > .ant-card-head {
+    min-height: 36px;
+    padding: 0 12px;
+    font-size: 14px
+}
+
+    .ant-card-small > .ant-card-head > .ant-card-head-wrapper > .ant-card-head-title {
+        padding: 8px 0
+    }
+
+    .ant-card-small > .ant-card-head > .ant-card-head-wrapper > .ant-card-extra {
+        padding: 8px 0;
+        font-size: 14px
+    }
+
+.ant-card-small > .ant-card-body {
+    padding: 12px
+}
+
+.ant-carousel {
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+    .ant-carousel, .ant-carousel .slick-slider {
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box
+    }
+
+        .ant-carousel .slick-slider {
+            position: relative;
+            display: block;
+            -webkit-touch-callout: none;
+            -ms-touch-action: pan-y;
+            touch-action: pan-y;
+            -webkit-tap-highlight-color: transparent
+        }
+
+        .ant-carousel .slick-list {
+            position: relative;
+            display: block;
+            margin: 0;
+            padding: 0;
+            overflow: hidden
+        }
+
+            .ant-carousel .slick-list:focus {
+                outline: none
+            }
+
+            .ant-carousel .slick-list.dragging {
+                cursor: pointer
+            }
+
+            .ant-carousel .slick-list .slick-slide {
+                pointer-events: none
+            }
+
+                .ant-carousel .slick-list .slick-slide input.ant-checkbox-input, .ant-carousel .slick-list .slick-slide input.ant-radio-input {
+                    visibility: hidden
+                }
+
+                .ant-carousel .slick-list .slick-slide.slick-active {
+                    pointer-events: auto
+                }
+
+                    .ant-carousel .slick-list .slick-slide.slick-active input.ant-checkbox-input, .ant-carousel .slick-list .slick-slide.slick-active input.ant-radio-input {
+                        visibility: visible
+                    }
+
+        .ant-carousel .slick-slider .slick-list, .ant-carousel .slick-slider .slick-track {
+            -webkit-transform: translateZ(0);
+            transform: translateZ(0)
+        }
+
+        .ant-carousel .slick-track {
+            position: relative;
+            top: 0;
+            left: 0;
+            display: block
+        }
+
+            .ant-carousel .slick-track:after, .ant-carousel .slick-track:before {
+                display: table;
+                content: ""
+            }
+
+            .ant-carousel .slick-track:after {
+                clear: both
+            }
+
+.slick-loading .ant-carousel .slick-track {
+    visibility: hidden
+}
+
+.ant-carousel .slick-slide {
+    display: none;
+    float: left;
+    height: 100%;
+    min-height: 1px
+}
+
+[dir=rtl] .ant-carousel .slick-slide {
+    float: right
+}
+
+.ant-carousel .slick-slide img {
+    display: block
+}
+
+.ant-carousel .slick-slide.slick-loading img {
+    display: none
+}
+
+.ant-carousel .slick-slide.dragging img {
+    pointer-events: none
+}
+
+.ant-carousel .slick-initialized .slick-slide {
+    display: block
+}
+
+.ant-carousel .slick-loading .slick-slide {
+    visibility: hidden
+}
+
+.ant-carousel .slick-vertical .slick-slide {
+    display: block;
+    height: auto;
+    border: 1px solid transparent
+}
+
+.ant-carousel .slick-arrow.slick-hidden {
+    display: none
+}
+
+.ant-carousel .slick-next, .ant-carousel .slick-prev {
+    position: absolute;
+    top: 50%;
+    display: block;
+    width: 20px;
+    height: 20px;
+    margin-top: -10px;
+    padding: 0;
+    font-size: 0;
+    line-height: 0;
+    border: 0;
+    cursor: pointer
+}
+
+    .ant-carousel .slick-next, .ant-carousel .slick-next:focus, .ant-carousel .slick-next:hover, .ant-carousel .slick-prev, .ant-carousel .slick-prev:focus, .ant-carousel .slick-prev:hover {
+        color: transparent;
+        background: transparent;
+        outline: none
+    }
+
+        .ant-carousel .slick-next:focus:before, .ant-carousel .slick-next:hover:before, .ant-carousel .slick-prev:focus:before, .ant-carousel .slick-prev:hover:before {
+            opacity: 1
+        }
+
+        .ant-carousel .slick-next.slick-disabled:before, .ant-carousel .slick-prev.slick-disabled:before {
+            opacity: .25
+        }
+
+.ant-carousel .slick-prev {
+    left: -25px
+}
+
+    .ant-carousel .slick-prev:before {
+        content: "鈫�"
+    }
+
+.ant-carousel .slick-next {
+    right: -25px
+}
+
+    .ant-carousel .slick-next:before {
+        content: "鈫�"
+    }
+
+.ant-carousel .slick-dots {
+    position: absolute;
+    display: block;
+    width: 100%;
+    height: 3px;
+    margin: 0;
+    padding: 0;
+    text-align: center;
+    list-style: none
+}
+
+.ant-carousel .slick-dots-bottom {
+    bottom: 12px
+}
+
+.ant-carousel .slick-dots-top {
+    top: 12px
+}
+
+.ant-carousel .slick-dots li {
+    position: relative;
+    display: inline-block;
+    margin: 0 2px;
+    padding: 0;
+    text-align: center;
+    vertical-align: top
+}
+
+    .ant-carousel .slick-dots li button {
+        display: block;
+        width: 16px;
+        height: 3px;
+        padding: 0;
+        color: transparent;
+        font-size: 0;
+        background: #fff;
+        border: 0;
+        border-radius: 1px;
+        outline: none;
+        cursor: pointer;
+        opacity: .3;
+        -webkit-transition: all .5s;
+        transition: all .5s
+    }
+
+        .ant-carousel .slick-dots li button:focus, .ant-carousel .slick-dots li button:hover {
+            opacity: .75
+        }
+
+    .ant-carousel .slick-dots li.slick-active button {
+        width: 24px;
+        background: #fff;
+        opacity: 1
+    }
+
+        .ant-carousel .slick-dots li.slick-active button:focus, .ant-carousel .slick-dots li.slick-active button:hover {
+            opacity: 1
+        }
+
+.ant-carousel-vertical .slick-dots {
+    top: 50%;
+    bottom: auto;
+    width: 3px;
+    height: auto;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%)
+}
+
+.ant-carousel-vertical .slick-dots-left {
+    left: 12px
+}
+
+.ant-carousel-vertical .slick-dots-right {
+    right: 12px
+}
+
+.ant-carousel-vertical .slick-dots li {
+    margin: 0 2px;
+    vertical-align: baseline
+}
+
+    .ant-carousel-vertical .slick-dots li button {
+        width: 3px;
+        height: 16px
+    }
+
+    .ant-carousel-vertical .slick-dots li.slick-active button {
+        width: 3px;
+        height: 24px
+    }
+
+.ant-cascader {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+.ant-cascader-input.ant-input {
+    position: static;
+    width: 100%;
+    padding-right: 24px;
+    background-color: transparent !important;
+    cursor: pointer
+}
+
+.ant-cascader-picker-show-search .ant-cascader-input.ant-input {
+    position: relative
+}
+
+.ant-cascader-picker {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    display: inline-block;
+    background-color: #fff;
+    border-radius: 2px;
+    outline: 0;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s
+}
+
+.ant-cascader-picker-with-value .ant-cascader-picker-label {
+    color: transparent
+}
+
+.ant-cascader-picker-disabled {
+    color: rgba(0,0,0,.25);
+    background: #f5f5f5;
+    cursor: not-allowed
+}
+
+    .ant-cascader-picker-disabled .ant-cascader-input {
+        cursor: not-allowed
+    }
+
+.ant-cascader-picker:focus .ant-cascader-input {
+    border-color: #ff7a45;
+    border-right-width: 1px !important;
+    outline: 0;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-cascader-picker-show-search.ant-cascader-picker-focused {
+    color: rgba(0,0,0,.25)
+}
+
+.ant-cascader-picker-label {
+    position: absolute;
+    top: 50%;
+    left: 0;
+    width: 100%;
+    height: 20px;
+    margin-top: -10px;
+    padding: 0 20px 0 12px;
+    overflow: hidden;
+    line-height: 20px;
+    white-space: nowrap;
+    text-overflow: ellipsis
+}
+
+.ant-cascader-picker-clear {
+    position: absolute;
+    top: 50%;
+    right: 12px;
+    z-index: 2;
+    width: 12px;
+    height: 12px;
+    margin-top: -6px;
+    color: rgba(0,0,0,.25);
+    font-size: 12px;
+    line-height: 12px;
+    background: #fff;
+    cursor: pointer;
+    opacity: 0;
+    -webkit-transition: color .3s ease,opacity .15s ease;
+    transition: color .3s ease,opacity .15s ease
+}
+
+    .ant-cascader-picker-clear:hover {
+        color: rgba(0,0,0,.45)
+    }
+
+.ant-cascader-picker:hover .ant-cascader-picker-clear {
+    opacity: 1
+}
+
+.ant-cascader-picker-arrow {
+    position: absolute;
+    top: 50%;
+    right: 12px;
+    z-index: 1;
+    width: 12px;
+    height: 12px;
+    margin-top: -6px;
+    color: rgba(0,0,0,.25);
+    font-size: 12px;
+    line-height: 12px;
+    -webkit-transition: -webkit-transform .2s;
+    transition: -webkit-transform .2s;
+    transition: transform .2s;
+    transition: transform .2s,-webkit-transform .2s
+}
+
+    .ant-cascader-picker-arrow.ant-cascader-picker-arrow-expand {
+        -webkit-transform: rotate(180deg);
+        transform: rotate(180deg)
+    }
+
+.ant-cascader-picker-label:hover + .ant-cascader-input {
+    border-color: #ff7a45;
+    border-right-width: 1px !important
+}
+
+.ant-cascader-picker-small .ant-cascader-picker-arrow, .ant-cascader-picker-small .ant-cascader-picker-clear {
+    right: 8px
+}
+
+.ant-cascader-menus {
+    position: absolute;
+    z-index: 1050;
+    font-size: 14px;
+    white-space: nowrap;
+    background: #fff;
+    border-radius: 2px;
+    -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+    .ant-cascader-menus ol, .ant-cascader-menus ul {
+        margin: 0;
+        list-style: none
+    }
+
+.ant-cascader-menus-empty, .ant-cascader-menus-hidden {
+    display: none
+}
+
+.ant-cascader-menus.slide-up-appear.slide-up-appear-active.ant-cascader-menus-placement-bottomLeft, .ant-cascader-menus.slide-up-enter.slide-up-enter-active.ant-cascader-menus-placement-bottomLeft {
+    -webkit-animation-name: antSlideUpIn;
+    animation-name: antSlideUpIn
+}
+
+.ant-cascader-menus.slide-up-appear.slide-up-appear-active.ant-cascader-menus-placement-topLeft, .ant-cascader-menus.slide-up-enter.slide-up-enter-active.ant-cascader-menus-placement-topLeft {
+    -webkit-animation-name: antSlideDownIn;
+    animation-name: antSlideDownIn
+}
+
+.ant-cascader-menus.slide-up-leave.slide-up-leave-active.ant-cascader-menus-placement-bottomLeft {
+    -webkit-animation-name: antSlideUpOut;
+    animation-name: antSlideUpOut
+}
+
+.ant-cascader-menus.slide-up-leave.slide-up-leave-active.ant-cascader-menus-placement-topLeft {
+    -webkit-animation-name: antSlideDownOut;
+    animation-name: antSlideDownOut
+}
+
+.ant-cascader-menu {
+    display: inline-block;
+    min-width: 111px;
+    height: 180px;
+    margin: 0;
+    padding: 4px 0;
+    overflow: auto;
+    vertical-align: top;
+    list-style: none;
+    border-right: 1px solid #e8e8e8;
+    -ms-overflow-style: -ms-autohiding-scrollbar
+}
+
+    .ant-cascader-menu:first-child {
+        border-radius: 2px 0 0 2px
+    }
+
+    .ant-cascader-menu:last-child {
+        margin-right: -1px;
+        border-right-color: transparent;
+        border-radius: 0 2px 2px 0
+    }
+
+    .ant-cascader-menu:only-child {
+        border-radius: 2px
+    }
+
+.ant-cascader-menu-item {
+    padding: 5px 12px;
+    line-height: 22px;
+    white-space: nowrap;
+    cursor: pointer;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-cascader-menu-item:hover {
+        background: #fff2e8
+    }
+
+.ant-cascader-menu-item-disabled {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed
+}
+
+    .ant-cascader-menu-item-disabled:hover {
+        background: transparent
+    }
+
+.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled), .ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover {
+    font-weight: 600;
+    background-color: #fafafa
+}
+
+.ant-cascader-menu-item-expand {
+    position: relative;
+    padding-right: 24px
+}
+
+    .ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon, .ant-cascader-menu-item-loading-icon {
+        display: inline-block;
+        font-size: 12px;
+        font-size: 10px\9;
+        -webkit-transform: scale(.83333333) rotate(0deg);
+        transform: scale(.83333333) rotate(0deg);
+        position: absolute;
+        right: 12px;
+        color: rgba(0,0,0,.45)
+    }
+
+:root .ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon, :root .ant-cascader-menu-item-loading-icon {
+    font-size: 12px
+}
+
+.ant-cascader-menu-item-disabled.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon, .ant-cascader-menu-item-disabled.ant-cascader-menu-item-loading-icon {
+    color: rgba(0,0,0,.25)
+}
+
+.ant-cascader-menu-item .ant-cascader-menu-item-keyword {
+    color: #f5222d
+}
+
+@-webkit-keyframes antCheckboxEffect {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: .5
+    }
+
+    to {
+        -webkit-transform: scale(1.6);
+        transform: scale(1.6);
+        opacity: 0
+    }
+}
+
+@keyframes antCheckboxEffect {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: .5
+    }
+
+    to {
+        -webkit-transform: scale(1.6);
+        transform: scale(1.6);
+        opacity: 0
+    }
+}
+
+.ant-checkbox {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    top: -.09em;
+    display: inline-block;
+    line-height: 1;
+    white-space: nowrap;
+    vertical-align: middle;
+    outline: none;
+    cursor: pointer
+}
+
+    .ant-checkbox-input:focus + .ant-checkbox-inner, .ant-checkbox-wrapper:hover .ant-checkbox-inner, .ant-checkbox:hover .ant-checkbox-inner {
+        border-color: #fa541c
+    }
+
+.ant-checkbox-checked:after {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    border: 1px solid #fa541c;
+    border-radius: 2px;
+    visibility: hidden;
+    -webkit-animation: antCheckboxEffect .36s ease-in-out;
+    animation: antCheckboxEffect .36s ease-in-out;
+    -webkit-animation-fill-mode: backwards;
+    animation-fill-mode: backwards;
+    content: ""
+}
+
+.ant-checkbox-wrapper:hover .ant-checkbox:after, .ant-checkbox:hover:after {
+    visibility: visible
+}
+
+.ant-checkbox-inner {
+    position: relative;
+    top: 0;
+    left: 0;
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-color: #fff;
+    border: 1px solid #d9d9d9;
+    border-radius: 2px;
+    border-collapse: separate;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-checkbox-inner:after {
+        position: absolute;
+        top: 50%;
+        left: 22%;
+        display: table;
+        width: 5.71428571px;
+        height: 9.14285714px;
+        border: 2px solid #fff;
+        border-top: 0;
+        border-left: 0;
+        -webkit-transform: rotate(45deg) scale(0) translate(-50%,-50%);
+        transform: rotate(45deg) scale(0) translate(-50%,-50%);
+        opacity: 0;
+        -webkit-transition: all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;
+        transition: all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;
+        content: " "
+    }
+
+.ant-checkbox-input {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 1;
+    width: 100%;
+    height: 100%;
+    cursor: pointer;
+    opacity: 0
+}
+
+.ant-checkbox-checked .ant-checkbox-inner:after {
+    position: absolute;
+    display: table;
+    border: 2px solid #fff;
+    border-top: 0;
+    border-left: 0;
+    -webkit-transform: rotate(45deg) scale(1) translate(-50%,-50%);
+    transform: rotate(45deg) scale(1) translate(-50%,-50%);
+    opacity: 1;
+    -webkit-transition: all .2s cubic-bezier(.12,.4,.29,1.46) .1s;
+    transition: all .2s cubic-bezier(.12,.4,.29,1.46) .1s;
+    content: " "
+}
+
+.ant-checkbox-checked .ant-checkbox-inner {
+    background-color: #fa541c;
+    border-color: #fa541c
+}
+
+.ant-checkbox-disabled {
+    cursor: not-allowed
+}
+
+    .ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner:after {
+        border-color: rgba(0,0,0,.25);
+        -webkit-animation-name: none;
+        animation-name: none
+    }
+
+    .ant-checkbox-disabled .ant-checkbox-input {
+        cursor: not-allowed
+    }
+
+    .ant-checkbox-disabled .ant-checkbox-inner {
+        background-color: #f5f5f5;
+        border-color: #d9d9d9 !important
+    }
+
+        .ant-checkbox-disabled .ant-checkbox-inner:after {
+            border-color: #f5f5f5;
+            border-collapse: separate;
+            -webkit-animation-name: none;
+            animation-name: none
+        }
+
+    .ant-checkbox-disabled + span {
+        color: rgba(0,0,0,.25);
+        cursor: not-allowed
+    }
+
+    .ant-checkbox-disabled:hover:after, .ant-checkbox-wrapper:hover .ant-checkbox-disabled:after {
+        visibility: hidden
+    }
+
+.ant-checkbox-wrapper {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    display: inline-block;
+    line-height: unset;
+    cursor: pointer
+}
+
+    .ant-checkbox-wrapper.ant-checkbox-wrapper-disabled {
+        cursor: not-allowed
+    }
+
+    .ant-checkbox-wrapper + .ant-checkbox-wrapper {
+        margin-left: 8px
+    }
+
+.ant-checkbox + span {
+    padding-right: 8px;
+    padding-left: 8px
+}
+
+.ant-checkbox-group {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    display: inline-block
+}
+
+.ant-checkbox-group-item {
+    display: inline-block;
+    margin-right: 8px
+}
+
+    .ant-checkbox-group-item:last-child {
+        margin-right: 0
+    }
+
+    .ant-checkbox-group-item + .ant-checkbox-group-item {
+        margin-left: 0
+    }
+
+.ant-checkbox-indeterminate .ant-checkbox-inner {
+    background-color: #fff;
+    border-color: #d9d9d9
+}
+
+    .ant-checkbox-indeterminate .ant-checkbox-inner:after {
+        top: 50%;
+        left: 50%;
+        width: 8px;
+        height: 8px;
+        background-color: #fa541c;
+        border: 0;
+        -webkit-transform: translate(-50%,-50%) scale(1);
+        transform: translate(-50%,-50%) scale(1);
+        opacity: 1;
+        content: " "
+    }
+
+.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner:after {
+    background-color: rgba(0,0,0,.25);
+    border-color: rgba(0,0,0,.25)
+}
+
+.ant-collapse {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    background-color: #fafafa;
+    border: 1px solid #d9d9d9;
+    border-bottom: 0;
+    border-radius: 2px
+}
+
+    .ant-collapse > .ant-collapse-item {
+        border-bottom: 1px solid #d9d9d9
+    }
+
+        .ant-collapse > .ant-collapse-item:last-child, .ant-collapse > .ant-collapse-item:last-child > .ant-collapse-header {
+            border-radius: 0 0 2px 2px
+        }
+
+        .ant-collapse > .ant-collapse-item > .ant-collapse-header {
+            position: relative;
+            padding: 12px 16px;
+            padding-left: 40px;
+            color: rgba(0,0,0,.85);
+            line-height: 22px;
+            cursor: pointer;
+            -webkit-transition: all .3s;
+            transition: all .3s
+        }
+
+            .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow {
+                color: inherit;
+                font-style: normal;
+                line-height: 0;
+                text-align: center;
+                text-transform: none;
+                vertical-align: -.125em;
+                text-rendering: optimizeLegibility;
+                -webkit-font-smoothing: antialiased;
+                -moz-osx-font-smoothing: grayscale;
+                position: absolute;
+                top: 50%;
+                left: 16px;
+                display: inline-block;
+                font-size: 12px;
+                -webkit-transform: translateY(-50%);
+                transform: translateY(-50%)
+            }
+
+                .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow > * {
+                    line-height: 1
+                }
+
+                .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow svg {
+                    display: inline-block
+                }
+
+                .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow:before {
+                    display: none
+                }
+
+                .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow-icon {
+                    display: block
+                }
+
+                .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow svg {
+                    -webkit-transition: -webkit-transform .24s;
+                    transition: -webkit-transform .24s;
+                    transition: transform .24s;
+                    transition: transform .24s,-webkit-transform .24s
+                }
+
+            .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-extra {
+                float: right
+            }
+
+            .ant-collapse > .ant-collapse-item > .ant-collapse-header:focus {
+                outline: none
+            }
+
+        .ant-collapse > .ant-collapse-item.ant-collapse-no-arrow > .ant-collapse-header {
+            padding-left: 12px
+        }
+
+.ant-collapse-icon-position-right > .ant-collapse-item > .ant-collapse-header {
+    padding: 12px 16px;
+    padding-right: 40px
+}
+
+    .ant-collapse-icon-position-right > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow {
+        right: 16px;
+        left: auto
+    }
+
+.ant-collapse-anim-active {
+    -webkit-transition: height .2s cubic-bezier(.215,.61,.355,1);
+    transition: height .2s cubic-bezier(.215,.61,.355,1)
+}
+
+.ant-collapse-content {
+    overflow: hidden;
+    color: rgba(0,0,0,.65);
+    background-color: #fff;
+    border-top: 1px solid #d9d9d9
+}
+
+    .ant-collapse-content > .ant-collapse-content-box {
+        padding: 16px
+    }
+
+.ant-collapse-content-inactive {
+    display: none
+}
+
+.ant-collapse-item:last-child > .ant-collapse-content {
+    border-radius: 0 0 2px 2px
+}
+
+.ant-collapse-borderless {
+    background-color: #fafafa;
+    border: 0
+}
+
+    .ant-collapse-borderless > .ant-collapse-item {
+        border-bottom: 1px solid #d9d9d9
+    }
+
+        .ant-collapse-borderless > .ant-collapse-item:last-child, .ant-collapse-borderless > .ant-collapse-item:last-child .ant-collapse-header {
+            border-radius: 0
+        }
+
+        .ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content {
+            background-color: transparent;
+            border-top: 0
+        }
+
+            .ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content > .ant-collapse-content-box {
+                padding-top: 4px
+            }
+
+.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header, .ant-collapse .ant-collapse-item-disabled > .ant-collapse-header > .arrow {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed
+}
+
+.ant-comment {
+    position: relative
+}
+
+.ant-comment-inner {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    padding: 16px 0
+}
+
+.ant-comment-avatar {
+    position: relative;
+    -ms-flex-negative: 0;
+    flex-shrink: 0;
+    margin-right: 12px;
+    cursor: pointer
+}
+
+    .ant-comment-avatar img {
+        width: 32px;
+        height: 32px;
+        border-radius: 50%
+    }
+
+.ant-comment-content {
+    position: relative;
+    -webkit-box-flex: 1;
+    -ms-flex: 1 1 auto;
+    flex: 1 1 auto;
+    min-width: 1px;
+    font-size: 14px;
+    word-wrap: break-word
+}
+
+.ant-comment-content-author {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -ms-flex-wrap: wrap;
+    flex-wrap: wrap;
+    -webkit-box-pack: start;
+    -ms-flex-pack: start;
+    justify-content: flex-start;
+    margin-bottom: 4px;
+    font-size: 14px
+}
+
+    .ant-comment-content-author > a, .ant-comment-content-author > span {
+        padding-right: 8px;
+        font-size: 12px;
+        line-height: 18px
+    }
+
+.ant-comment-content-author-name {
+    color: rgba(0,0,0,.45);
+    font-size: 14px;
+    -webkit-transition: color .3s;
+    transition: color .3s
+}
+
+    .ant-comment-content-author-name > *, .ant-comment-content-author-name > :hover {
+        color: rgba(0,0,0,.45)
+    }
+
+.ant-comment-content-author-time {
+    color: #ccc;
+    white-space: nowrap;
+    cursor: auto
+}
+
+.ant-comment-content-detail p {
+    white-space: pre-wrap
+}
+
+.ant-comment-actions {
+    margin-top: 12px;
+    padding-left: 0
+}
+
+    .ant-comment-actions > li {
+        display: inline-block;
+        color: rgba(0,0,0,.45)
+    }
+
+        .ant-comment-actions > li > span {
+            padding-right: 10px;
+            color: rgba(0,0,0,.45);
+            font-size: 12px;
+            cursor: pointer;
+            -webkit-transition: color .3s;
+            transition: color .3s;
+            -webkit-user-select: none;
+            -moz-user-select: none;
+            -ms-user-select: none;
+            user-select: none
+        }
+
+            .ant-comment-actions > li > span:hover {
+                color: #595959
+            }
+
+.ant-comment-nested {
+    margin-left: 44px
+}
+
+.ant-calendar-picker-container {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: absolute;
+    z-index: 1050;
+    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol
+}
+
+    .ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-topLeft, .ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-topRight, .ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-topLeft, .ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-topRight {
+        -webkit-animation-name: antSlideDownIn;
+        animation-name: antSlideDownIn
+    }
+
+    .ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-bottomLeft, .ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-bottomRight, .ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-bottomLeft, .ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-bottomRight {
+        -webkit-animation-name: antSlideUpIn;
+        animation-name: antSlideUpIn
+    }
+
+    .ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-topLeft, .ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-topRight {
+        -webkit-animation-name: antSlideDownOut;
+        animation-name: antSlideDownOut
+    }
+
+    .ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-bottomLeft, .ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-bottomRight {
+        -webkit-animation-name: antSlideUpOut;
+        animation-name: antSlideUpOut
+    }
+
+.ant-calendar-picker {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    display: inline-block;
+    outline: none;
+    cursor: text;
+    -webkit-transition: opacity .3s;
+    transition: opacity .3s
+}
+
+.ant-calendar-picker-input {
+    outline: none
+}
+
+    .ant-calendar-picker-input.ant-input {
+        line-height: 1.5
+    }
+
+    .ant-calendar-picker-input.ant-input-sm {
+        padding-top: 0;
+        padding-bottom: 0
+    }
+
+.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled) {
+    border-color: #ff7a45
+}
+
+.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled) {
+    border-color: #ff7a45;
+    border-right-width: 1px !important;
+    outline: 0;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-calendar-picker-clear, .ant-calendar-picker-icon {
+    position: absolute;
+    top: 50%;
+    right: 12px;
+    z-index: 1;
+    width: 14px;
+    height: 14px;
+    margin-top: -7px;
+    font-size: 12px;
+    line-height: 14px;
+    -webkit-transition: all .3s;
+    transition: all .3s;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+.ant-calendar-picker-clear {
+    z-index: 2;
+    color: rgba(0,0,0,.25);
+    font-size: 14px;
+    background: #fff;
+    cursor: pointer;
+    opacity: 0;
+    pointer-events: none
+}
+
+    .ant-calendar-picker-clear:hover {
+        color: rgba(0,0,0,.45)
+    }
+
+.ant-calendar-picker:hover .ant-calendar-picker-clear {
+    opacity: 1;
+    pointer-events: auto
+}
+
+.ant-calendar-picker-icon {
+    display: inline-block;
+    color: rgba(0,0,0,.25);
+    font-size: 14px;
+    line-height: 1
+}
+
+.ant-input-disabled + .ant-calendar-picker-icon {
+    cursor: not-allowed
+}
+
+.ant-calendar-picker-small .ant-calendar-picker-clear, .ant-calendar-picker-small .ant-calendar-picker-icon {
+    right: 8px
+}
+
+.ant-calendar {
+    position: relative;
+    width: 280px;
+    font-size: 14px;
+    line-height: 1.5;
+    text-align: left;
+    list-style: none;
+    background-color: #fff;
+    background-clip: padding-box;
+    border: 1px solid #fff;
+    border-radius: 2px;
+    outline: none;
+    -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+.ant-calendar-input-wrap {
+    height: 34px;
+    padding: 6px 10px;
+    border-bottom: 1px solid #e8e8e8
+}
+
+.ant-calendar-input {
+    width: 100%;
+    height: 22px;
+    color: rgba(0,0,0,.65);
+    background: #fff;
+    border: 0;
+    outline: 0;
+    cursor: auto
+}
+
+    .ant-calendar-input::-moz-placeholder {
+        color: #bfbfbf;
+        opacity: 1
+    }
+
+    .ant-calendar-input:-ms-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-calendar-input::-webkit-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-calendar-input:-moz-placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-calendar-input:-ms-input-placeholder {
+        text-overflow: ellipsis
+    }
+
+    .ant-calendar-input:placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+.ant-calendar-week-number {
+    width: 286px
+}
+
+.ant-calendar-week-number-cell {
+    text-align: center
+}
+
+.ant-calendar-header {
+    height: 40px;
+    line-height: 40px;
+    text-align: center;
+    border-bottom: 1px solid #e8e8e8;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+    .ant-calendar-header a:hover {
+        color: #ff7a45
+    }
+
+    .ant-calendar-header .ant-calendar-century-select, .ant-calendar-header .ant-calendar-decade-select, .ant-calendar-header .ant-calendar-month-select, .ant-calendar-header .ant-calendar-year-select {
+        display: inline-block;
+        padding: 0 2px;
+        color: rgba(0,0,0,.85);
+        font-weight: 500;
+        line-height: 40px
+    }
+
+    .ant-calendar-header .ant-calendar-century-select-arrow, .ant-calendar-header .ant-calendar-decade-select-arrow, .ant-calendar-header .ant-calendar-month-select-arrow, .ant-calendar-header .ant-calendar-year-select-arrow {
+        display: none
+    }
+
+    .ant-calendar-header .ant-calendar-next-century-btn, .ant-calendar-header .ant-calendar-next-decade-btn, .ant-calendar-header .ant-calendar-next-month-btn, .ant-calendar-header .ant-calendar-next-year-btn, .ant-calendar-header .ant-calendar-prev-century-btn, .ant-calendar-header .ant-calendar-prev-decade-btn, .ant-calendar-header .ant-calendar-prev-month-btn, .ant-calendar-header .ant-calendar-prev-year-btn {
+        position: absolute;
+        top: 0;
+        display: inline-block;
+        padding: 0 5px;
+        color: rgba(0,0,0,.45);
+        font-size: 16px;
+        font-family: Arial,Hiragino Sans GB,Microsoft Yahei,"Microsoft Sans Serif",sans-serif;
+        line-height: 40px
+    }
+
+    .ant-calendar-header .ant-calendar-prev-century-btn, .ant-calendar-header .ant-calendar-prev-decade-btn, .ant-calendar-header .ant-calendar-prev-year-btn {
+        left: 7px;
+        height: 100%
+    }
+
+        .ant-calendar-header .ant-calendar-prev-century-btn:after, .ant-calendar-header .ant-calendar-prev-century-btn:before, .ant-calendar-header .ant-calendar-prev-decade-btn:after, .ant-calendar-header .ant-calendar-prev-decade-btn:before, .ant-calendar-header .ant-calendar-prev-year-btn:after, .ant-calendar-header .ant-calendar-prev-year-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-header .ant-calendar-prev-century-btn:hover:after, .ant-calendar-header .ant-calendar-prev-century-btn:hover:before, .ant-calendar-header .ant-calendar-prev-decade-btn:hover:after, .ant-calendar-header .ant-calendar-prev-decade-btn:hover:before, .ant-calendar-header .ant-calendar-prev-year-btn:hover:after, .ant-calendar-header .ant-calendar-prev-year-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-header .ant-calendar-prev-century-btn:after, .ant-calendar-header .ant-calendar-prev-decade-btn:after, .ant-calendar-header .ant-calendar-prev-year-btn:after {
+            display: none;
+            position: relative;
+            left: -3px;
+            display: inline-block
+        }
+
+    .ant-calendar-header .ant-calendar-next-century-btn, .ant-calendar-header .ant-calendar-next-decade-btn, .ant-calendar-header .ant-calendar-next-year-btn {
+        right: 7px;
+        height: 100%
+    }
+
+        .ant-calendar-header .ant-calendar-next-century-btn:after, .ant-calendar-header .ant-calendar-next-century-btn:before, .ant-calendar-header .ant-calendar-next-decade-btn:after, .ant-calendar-header .ant-calendar-next-decade-btn:before, .ant-calendar-header .ant-calendar-next-year-btn:after, .ant-calendar-header .ant-calendar-next-year-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-header .ant-calendar-next-century-btn:hover:after, .ant-calendar-header .ant-calendar-next-century-btn:hover:before, .ant-calendar-header .ant-calendar-next-decade-btn:hover:after, .ant-calendar-header .ant-calendar-next-decade-btn:hover:before, .ant-calendar-header .ant-calendar-next-year-btn:hover:after, .ant-calendar-header .ant-calendar-next-year-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-header .ant-calendar-next-century-btn:after, .ant-calendar-header .ant-calendar-next-decade-btn:after, .ant-calendar-header .ant-calendar-next-year-btn:after {
+            display: none
+        }
+
+        .ant-calendar-header .ant-calendar-next-century-btn:after, .ant-calendar-header .ant-calendar-next-century-btn:before, .ant-calendar-header .ant-calendar-next-decade-btn:after, .ant-calendar-header .ant-calendar-next-decade-btn:before, .ant-calendar-header .ant-calendar-next-year-btn:after, .ant-calendar-header .ant-calendar-next-year-btn:before {
+            -webkit-transform: rotate(135deg) scale(.8);
+            transform: rotate(135deg) scale(.8)
+        }
+
+        .ant-calendar-header .ant-calendar-next-century-btn:before, .ant-calendar-header .ant-calendar-next-decade-btn:before, .ant-calendar-header .ant-calendar-next-year-btn:before {
+            position: relative;
+            left: 3px
+        }
+
+        .ant-calendar-header .ant-calendar-next-century-btn:after, .ant-calendar-header .ant-calendar-next-decade-btn:after, .ant-calendar-header .ant-calendar-next-year-btn:after {
+            display: inline-block
+        }
+
+    .ant-calendar-header .ant-calendar-prev-month-btn {
+        left: 29px;
+        height: 100%
+    }
+
+        .ant-calendar-header .ant-calendar-prev-month-btn:after, .ant-calendar-header .ant-calendar-prev-month-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-header .ant-calendar-prev-month-btn:hover:after, .ant-calendar-header .ant-calendar-prev-month-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-header .ant-calendar-prev-month-btn:after {
+            display: none
+        }
+
+    .ant-calendar-header .ant-calendar-next-month-btn {
+        right: 29px;
+        height: 100%
+    }
+
+        .ant-calendar-header .ant-calendar-next-month-btn:after, .ant-calendar-header .ant-calendar-next-month-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-header .ant-calendar-next-month-btn:hover:after, .ant-calendar-header .ant-calendar-next-month-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-header .ant-calendar-next-month-btn:after {
+            display: none
+        }
+
+        .ant-calendar-header .ant-calendar-next-month-btn:after, .ant-calendar-header .ant-calendar-next-month-btn:before {
+            -webkit-transform: rotate(135deg) scale(.8);
+            transform: rotate(135deg) scale(.8)
+        }
+
+.ant-calendar-body {
+    padding: 8px 12px
+}
+
+.ant-calendar table {
+    width: 100%;
+    max-width: 100%;
+    background-color: transparent;
+    border-collapse: collapse
+}
+
+.ant-calendar table, .ant-calendar td, .ant-calendar th {
+    text-align: center;
+    border: 0
+}
+
+.ant-calendar-calendar-table {
+    margin-bottom: 0;
+    border-spacing: 0
+}
+
+.ant-calendar-column-header {
+    width: 33px;
+    padding: 6px 0;
+    line-height: 18px;
+    text-align: center
+}
+
+    .ant-calendar-column-header .ant-calendar-column-header-inner {
+        display: block;
+        font-weight: 400
+    }
+
+.ant-calendar-week-number-header .ant-calendar-column-header-inner {
+    display: none
+}
+
+.ant-calendar-cell {
+    height: 30px;
+    padding: 3px 0
+}
+
+.ant-calendar-date {
+    display: block;
+    width: 24px;
+    height: 24px;
+    margin: 0 auto;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    line-height: 22px;
+    text-align: center;
+    background: transparent;
+    border: 1px solid transparent;
+    border-radius: 2px;
+    -webkit-transition: background .3s ease;
+    transition: background .3s ease
+}
+
+.ant-calendar-date-panel {
+    position: relative;
+    outline: none
+}
+
+.ant-calendar-date:hover {
+    background: #fff2e8;
+    cursor: pointer
+}
+
+.ant-calendar-date:active {
+    color: #fff;
+    background: #ff7a45
+}
+
+.ant-calendar-today .ant-calendar-date {
+    color: #fa541c;
+    font-weight: 700;
+    border-color: #fa541c
+}
+
+.ant-calendar-selected-day .ant-calendar-date {
+    background: #ffd8bf
+}
+
+.ant-calendar-last-month-cell .ant-calendar-date, .ant-calendar-last-month-cell .ant-calendar-date:hover, .ant-calendar-next-month-btn-day .ant-calendar-date, .ant-calendar-next-month-btn-day .ant-calendar-date:hover {
+    color: rgba(0,0,0,.25);
+    background: transparent;
+    border-color: transparent
+}
+
+.ant-calendar-disabled-cell .ant-calendar-date {
+    position: relative;
+    width: auto;
+    color: rgba(0,0,0,.25);
+    background: #f5f5f5;
+    border: 1px solid transparent;
+    border-radius: 0;
+    cursor: not-allowed
+}
+
+    .ant-calendar-disabled-cell .ant-calendar-date:hover {
+        background: #f5f5f5
+    }
+
+.ant-calendar-disabled-cell.ant-calendar-selected-day .ant-calendar-date:before {
+    position: absolute;
+    top: -1px;
+    left: 5px;
+    width: 24px;
+    height: 24px;
+    background: rgba(0,0,0,.1);
+    border-radius: 2px;
+    content: ""
+}
+
+.ant-calendar-disabled-cell.ant-calendar-today .ant-calendar-date {
+    position: relative;
+    padding-right: 5px;
+    padding-left: 5px
+}
+
+    .ant-calendar-disabled-cell.ant-calendar-today .ant-calendar-date:before {
+        position: absolute;
+        top: -1px;
+        left: 5px;
+        width: 24px;
+        height: 24px;
+        border: 1px solid rgba(0,0,0,.25);
+        border-radius: 2px;
+        content: " "
+    }
+
+.ant-calendar-disabled-cell-first-of-row .ant-calendar-date {
+    border-top-left-radius: 4px;
+    border-bottom-left-radius: 4px
+}
+
+.ant-calendar-disabled-cell-last-of-row .ant-calendar-date {
+    border-top-right-radius: 4px;
+    border-bottom-right-radius: 4px
+}
+
+.ant-calendar-footer {
+    padding: 0 12px;
+    line-height: 38px;
+    border-top: 1px solid #e8e8e8
+}
+
+    .ant-calendar-footer:empty {
+        border-top: 0
+    }
+
+.ant-calendar-footer-btn {
+    display: block;
+    text-align: center
+}
+
+.ant-calendar-footer-extra {
+    text-align: left
+}
+
+.ant-calendar .ant-calendar-clear-btn, .ant-calendar .ant-calendar-today-btn {
+    display: inline-block;
+    margin: 0 0 0 8px;
+    text-align: center
+}
+
+.ant-calendar .ant-calendar-clear-btn-disabled, .ant-calendar .ant-calendar-today-btn-disabled {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed
+}
+
+.ant-calendar .ant-calendar-clear-btn:only-child, .ant-calendar .ant-calendar-today-btn:only-child {
+    margin: 0
+}
+
+.ant-calendar .ant-calendar-clear-btn {
+    position: absolute;
+    top: 7px;
+    right: 5px;
+    display: none;
+    width: 20px;
+    height: 20px;
+    margin: 0;
+    overflow: hidden;
+    line-height: 20px;
+    text-align: center;
+    text-indent: -76px
+}
+
+    .ant-calendar .ant-calendar-clear-btn:after {
+        display: inline-block;
+        width: 20px;
+        color: rgba(0,0,0,.25);
+        font-size: 14px;
+        line-height: 1;
+        text-indent: 43px;
+        -webkit-transition: color .3s ease;
+        transition: color .3s ease
+    }
+
+    .ant-calendar .ant-calendar-clear-btn:hover:after {
+        color: rgba(0,0,0,.45)
+    }
+
+.ant-calendar .ant-calendar-ok-btn {
+    position: relative;
+    display: inline-block;
+    font-weight: 400;
+    white-space: nowrap;
+    text-align: center;
+    background-image: none;
+    border: 1px solid transparent;
+    -webkit-box-shadow: 0 2px 0 rgba(0,0,0,.015);
+    box-shadow: 0 2px 0 rgba(0,0,0,.015);
+    cursor: pointer;
+    -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1);
+    transition: all .3s cubic-bezier(.645,.045,.355,1);
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    -ms-touch-action: manipulation;
+    touch-action: manipulation;
+    height: 32px;
+    padding: 0 15px;
+    color: #fff;
+    background-color: #fa541c;
+    border-color: #fa541c;
+    text-shadow: 0 -1px 0 rgba(0,0,0,.12);
+    -webkit-box-shadow: 0 2px 0 rgba(0,0,0,.045);
+    box-shadow: 0 2px 0 rgba(0,0,0,.045);
+    height: 24px;
+    padding: 0 7px;
+    font-size: 14px;
+    border-radius: 2px;
+    line-height: 22px
+}
+
+    .ant-calendar .ant-calendar-ok-btn > .anticon {
+        line-height: 1
+    }
+
+    .ant-calendar .ant-calendar-ok-btn, .ant-calendar .ant-calendar-ok-btn:active, .ant-calendar .ant-calendar-ok-btn:focus {
+        outline: 0
+    }
+
+        .ant-calendar .ant-calendar-ok-btn:not([disabled]):hover {
+            text-decoration: none
+        }
+
+        .ant-calendar .ant-calendar-ok-btn:not([disabled]):active {
+            outline: 0;
+            -webkit-box-shadow: none;
+            box-shadow: none
+        }
+
+        .ant-calendar .ant-calendar-ok-btn.disabled, .ant-calendar .ant-calendar-ok-btn[disabled] {
+            cursor: not-allowed
+        }
+
+            .ant-calendar .ant-calendar-ok-btn.disabled > *, .ant-calendar .ant-calendar-ok-btn[disabled] > * {
+                pointer-events: none
+            }
+
+.ant-calendar .ant-calendar-ok-btn-lg {
+    height: 40px;
+    padding: 0 15px;
+    font-size: 16px;
+    border-radius: 2px
+}
+
+.ant-calendar .ant-calendar-ok-btn-sm {
+    height: 24px;
+    padding: 0 7px;
+    font-size: 14px;
+    border-radius: 2px
+}
+
+.ant-calendar .ant-calendar-ok-btn > a:only-child {
+    color: currentColor
+}
+
+    .ant-calendar .ant-calendar-ok-btn > a:only-child:after {
+        position: absolute;
+        top: 0;
+        right: 0;
+        bottom: 0;
+        left: 0;
+        background: transparent;
+        content: ""
+    }
+
+.ant-calendar .ant-calendar-ok-btn:focus, .ant-calendar .ant-calendar-ok-btn:hover {
+    color: #fff;
+    background-color: #ff7a45;
+    border-color: #ff7a45
+}
+
+    .ant-calendar .ant-calendar-ok-btn:focus > a:only-child, .ant-calendar .ant-calendar-ok-btn:hover > a:only-child {
+        color: currentColor
+    }
+
+        .ant-calendar .ant-calendar-ok-btn:focus > a:only-child:after, .ant-calendar .ant-calendar-ok-btn:hover > a:only-child:after {
+            position: absolute;
+            top: 0;
+            right: 0;
+            bottom: 0;
+            left: 0;
+            background: transparent;
+            content: ""
+        }
+
+.ant-calendar .ant-calendar-ok-btn.active, .ant-calendar .ant-calendar-ok-btn:active {
+    color: #fff;
+    background-color: #d4380d;
+    border-color: #d4380d
+}
+
+    .ant-calendar .ant-calendar-ok-btn.active > a:only-child, .ant-calendar .ant-calendar-ok-btn:active > a:only-child {
+        color: currentColor
+    }
+
+        .ant-calendar .ant-calendar-ok-btn.active > a:only-child:after, .ant-calendar .ant-calendar-ok-btn:active > a:only-child:after {
+            position: absolute;
+            top: 0;
+            right: 0;
+            bottom: 0;
+            left: 0;
+            background: transparent;
+            content: ""
+        }
+
+.ant-calendar .ant-calendar-ok-btn-disabled, .ant-calendar .ant-calendar-ok-btn-disabled.active, .ant-calendar .ant-calendar-ok-btn-disabled:active, .ant-calendar .ant-calendar-ok-btn-disabled:focus, .ant-calendar .ant-calendar-ok-btn-disabled:hover, .ant-calendar .ant-calendar-ok-btn.disabled, .ant-calendar .ant-calendar-ok-btn.disabled.active, .ant-calendar .ant-calendar-ok-btn.disabled:active, .ant-calendar .ant-calendar-ok-btn.disabled:focus, .ant-calendar .ant-calendar-ok-btn.disabled:hover, .ant-calendar .ant-calendar-ok-btn[disabled], .ant-calendar .ant-calendar-ok-btn[disabled].active, .ant-calendar .ant-calendar-ok-btn[disabled]:active, .ant-calendar .ant-calendar-ok-btn[disabled]:focus, .ant-calendar .ant-calendar-ok-btn[disabled]:hover {
+    color: rgba(0,0,0,.25);
+    background-color: #f5f5f5;
+    border-color: #d9d9d9;
+    text-shadow: none;
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+    .ant-calendar .ant-calendar-ok-btn-disabled.active > a:only-child, .ant-calendar .ant-calendar-ok-btn-disabled:active > a:only-child, .ant-calendar .ant-calendar-ok-btn-disabled:focus > a:only-child, .ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child, .ant-calendar .ant-calendar-ok-btn-disabled > a:only-child, .ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child, .ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child, .ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child, .ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child, .ant-calendar .ant-calendar-ok-btn.disabled > a:only-child, .ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child, .ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child, .ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child, .ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child, .ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child {
+        color: currentColor
+    }
+
+        .ant-calendar .ant-calendar-ok-btn-disabled.active > a:only-child:after, .ant-calendar .ant-calendar-ok-btn-disabled:active > a:only-child:after, .ant-calendar .ant-calendar-ok-btn-disabled:focus > a:only-child:after, .ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child:after, .ant-calendar .ant-calendar-ok-btn-disabled > a:only-child:after, .ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child:after, .ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child:after, .ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child:after, .ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child:after, .ant-calendar .ant-calendar-ok-btn.disabled > a:only-child:after, .ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child:after, .ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child:after, .ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child:after, .ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child:after, .ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child:after {
+            position: absolute;
+            top: 0;
+            right: 0;
+            bottom: 0;
+            left: 0;
+            background: transparent;
+            content: ""
+        }
+
+.ant-calendar-range-picker-input {
+    width: 44%;
+    height: 99%;
+    text-align: center;
+    background-color: transparent;
+    border: 0;
+    outline: 0
+}
+
+    .ant-calendar-range-picker-input::-moz-placeholder {
+        color: #bfbfbf;
+        opacity: 1
+    }
+
+    .ant-calendar-range-picker-input:-ms-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-calendar-range-picker-input::-webkit-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-calendar-range-picker-input:-moz-placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-calendar-range-picker-input:-ms-input-placeholder {
+        text-overflow: ellipsis
+    }
+
+    .ant-calendar-range-picker-input:placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-calendar-range-picker-input[disabled] {
+        cursor: not-allowed
+    }
+
+.ant-calendar-range-picker-separator {
+    display: inline-block;
+    min-width: 10px;
+    height: 100%;
+    color: rgba(0,0,0,.45);
+    white-space: nowrap;
+    text-align: center;
+    vertical-align: top;
+    pointer-events: none
+}
+
+.ant-input-disabled .ant-calendar-range-picker-separator {
+    color: rgba(0,0,0,.25)
+}
+
+.ant-calendar-range {
+    width: 552px;
+    overflow: hidden
+}
+
+    .ant-calendar-range .ant-calendar-date-panel:after {
+        display: block;
+        clear: both;
+        height: 0;
+        visibility: hidden;
+        content: "."
+    }
+
+.ant-calendar-range-part {
+    position: relative;
+    width: 50%
+}
+
+.ant-calendar-range-left {
+    float: left
+}
+
+    .ant-calendar-range-left .ant-calendar-time-picker-inner {
+        border-right: 1px solid #e8e8e8
+    }
+
+.ant-calendar-range-right {
+    float: right
+}
+
+    .ant-calendar-range-right .ant-calendar-time-picker-inner {
+        border-left: 1px solid #e8e8e8
+    }
+
+.ant-calendar-range-middle {
+    position: absolute;
+    left: 50%;
+    z-index: 1;
+    height: 34px;
+    margin: 1px 0 0 0;
+    padding: 0 200px 0 0;
+    color: rgba(0,0,0,.45);
+    line-height: 34px;
+    text-align: center;
+    -webkit-transform: translateX(-50%);
+    transform: translateX(-50%);
+    pointer-events: none
+}
+
+.ant-calendar-range-right .ant-calendar-date-input-wrap {
+    margin-left: -90px
+}
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-range-middle {
+    padding: 0 10px 0 0;
+    -webkit-transform: translateX(-50%);
+    transform: translateX(-50%)
+}
+
+.ant-calendar-range .ant-calendar-today :not(.ant-calendar-disabled-cell) :not(.ant-calendar-last-month-cell) :not(.ant-calendar-next-month-btn-day) .ant-calendar-date {
+    color: #fa541c;
+    background: #ffd8bf;
+    border-color: #fa541c
+}
+
+.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date, .ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date {
+    color: #fff;
+    background: #fa541c;
+    border: 1px solid transparent
+}
+
+    .ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date:hover, .ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date:hover {
+        background: #fa541c
+    }
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-range-right .ant-calendar-date-input-wrap {
+    margin-left: 0
+}
+
+.ant-calendar-range .ant-calendar-input-wrap {
+    position: relative;
+    height: 34px
+}
+
+.ant-calendar-range .ant-calendar-input, .ant-calendar-range .ant-calendar-time-picker-input {
+    position: relative;
+    display: inline-block;
+    width: 100%;
+    height: 32px;
+    padding: 4px 11px;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    line-height: 1.5;
+    background-color: #fff;
+    background-image: none;
+    border: 1px solid #d9d9d9;
+    border-radius: 2px;
+    -webkit-transition: all .3s;
+    transition: all .3s;
+    height: 24px;
+    padding-right: 0;
+    padding-left: 0;
+    line-height: 24px;
+    border: 0;
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+    .ant-calendar-range .ant-calendar-input::-moz-placeholder, .ant-calendar-range .ant-calendar-time-picker-input::-moz-placeholder {
+        color: #bfbfbf;
+        opacity: 1
+    }
+
+    .ant-calendar-range .ant-calendar-input:-ms-input-placeholder, .ant-calendar-range .ant-calendar-time-picker-input:-ms-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-calendar-range .ant-calendar-input::-webkit-input-placeholder, .ant-calendar-range .ant-calendar-time-picker-input::-webkit-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-calendar-range .ant-calendar-input:-moz-placeholder-shown, .ant-calendar-range .ant-calendar-time-picker-input:-moz-placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-calendar-range .ant-calendar-input:-ms-input-placeholder, .ant-calendar-range .ant-calendar-time-picker-input:-ms-input-placeholder {
+        text-overflow: ellipsis
+    }
+
+    .ant-calendar-range .ant-calendar-input:placeholder-shown, .ant-calendar-range .ant-calendar-time-picker-input:placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-calendar-range .ant-calendar-input:hover, .ant-calendar-range .ant-calendar-time-picker-input:hover {
+        border-color: #ff7a45;
+        border-right-width: 1px !important
+    }
+
+    .ant-calendar-range .ant-calendar-input:focus, .ant-calendar-range .ant-calendar-time-picker-input:focus {
+        border-color: #ff7a45;
+        border-right-width: 1px !important;
+        outline: 0;
+        -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+        box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+    }
+
+.ant-calendar-range .ant-calendar-input-disabled, .ant-calendar-range .ant-calendar-time-picker-input-disabled {
+    color: rgba(0,0,0,.25);
+    background-color: #f5f5f5;
+    cursor: not-allowed;
+    opacity: 1
+}
+
+    .ant-calendar-range .ant-calendar-input-disabled:hover, .ant-calendar-range .ant-calendar-time-picker-input-disabled:hover {
+        border-color: #d9d9d9;
+        border-right-width: 1px !important
+    }
+
+.ant-calendar-range .ant-calendar-input[disabled], .ant-calendar-range .ant-calendar-time-picker-input[disabled] {
+    color: rgba(0,0,0,.25);
+    background-color: #f5f5f5;
+    cursor: not-allowed;
+    opacity: 1
+}
+
+    .ant-calendar-range .ant-calendar-input[disabled]:hover, .ant-calendar-range .ant-calendar-time-picker-input[disabled]:hover {
+        border-color: #d9d9d9;
+        border-right-width: 1px !important
+    }
+
+textarea.ant-calendar-range .ant-calendar-input, textarea.ant-calendar-range .ant-calendar-time-picker-input {
+    max-width: 100%;
+    height: auto;
+    min-height: 32px;
+    line-height: 1.5;
+    vertical-align: bottom;
+    -webkit-transition: all .3s,height 0s;
+    transition: all .3s,height 0s
+}
+
+.ant-calendar-range .ant-calendar-input-lg, .ant-calendar-range .ant-calendar-time-picker-input-lg {
+    height: 40px;
+    padding: 6px 11px;
+    font-size: 16px
+}
+
+.ant-calendar-range .ant-calendar-input-sm, .ant-calendar-range .ant-calendar-time-picker-input-sm {
+    height: 24px;
+    padding: 1px 7px
+}
+
+.ant-calendar-range .ant-calendar-input:focus, .ant-calendar-range .ant-calendar-time-picker-input:focus {
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+.ant-calendar-range .ant-calendar-time-picker-icon {
+    display: none
+}
+
+.ant-calendar-range.ant-calendar-week-number {
+    width: 574px
+}
+
+    .ant-calendar-range.ant-calendar-week-number .ant-calendar-range-part {
+        width: 286px
+    }
+
+.ant-calendar-range .ant-calendar-decade-panel, .ant-calendar-range .ant-calendar-month-panel, .ant-calendar-range .ant-calendar-year-panel {
+    top: 34px
+}
+
+    .ant-calendar-range .ant-calendar-month-panel .ant-calendar-year-panel {
+        top: 0
+    }
+
+.ant-calendar-range .ant-calendar-decade-panel-table, .ant-calendar-range .ant-calendar-month-panel-table, .ant-calendar-range .ant-calendar-year-panel-table {
+    height: 208px
+}
+
+.ant-calendar-range .ant-calendar-in-range-cell {
+    position: relative;
+    border-radius: 0
+}
+
+    .ant-calendar-range .ant-calendar-in-range-cell > div {
+        position: relative;
+        z-index: 1
+    }
+
+    .ant-calendar-range .ant-calendar-in-range-cell:before {
+        position: absolute;
+        top: 4px;
+        right: 0;
+        bottom: 4px;
+        left: 0;
+        display: block;
+        background: #fff2e8;
+        border: 0;
+        border-radius: 0;
+        content: ""
+    }
+
+.ant-calendar-range .ant-calendar-footer-extra {
+    float: left
+}
+
+div.ant-calendar-range-quick-selector {
+    text-align: left
+}
+
+    div.ant-calendar-range-quick-selector > a {
+        margin-right: 8px
+    }
+
+.ant-calendar-range .ant-calendar-decade-panel-header, .ant-calendar-range .ant-calendar-header, .ant-calendar-range .ant-calendar-month-panel-header, .ant-calendar-range .ant-calendar-year-panel-header {
+    border-bottom: 0
+}
+
+.ant-calendar-range .ant-calendar-body, .ant-calendar-range .ant-calendar-decade-panel-body, .ant-calendar-range .ant-calendar-month-panel-body, .ant-calendar-range .ant-calendar-year-panel-body {
+    border-top: 1px solid #e8e8e8
+}
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker {
+    top: 68px;
+    z-index: 2;
+    width: 100%;
+    height: 207px
+}
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-panel {
+    height: 267px;
+    margin-top: -34px
+}
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-inner {
+    height: 100%;
+    padding-top: 40px;
+    background: none
+}
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-combobox {
+    display: inline-block;
+    height: 100%;
+    background-color: #fff;
+    border-top: 1px solid #e8e8e8
+}
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-select {
+    height: 100%
+}
+
+    .ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-select ul {
+        max-height: 100%
+    }
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn {
+    margin-right: 8px
+}
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-today-btn {
+    height: 22px;
+    margin: 8px 12px;
+    line-height: 22px
+}
+
+.ant-calendar-range-with-ranges.ant-calendar-time .ant-calendar-time-picker {
+    height: 233px
+}
+
+.ant-calendar-range.ant-calendar-show-time-picker .ant-calendar-body {
+    border-top-color: transparent
+}
+
+.ant-calendar-time-picker {
+    position: absolute;
+    top: 40px;
+    width: 100%;
+    background-color: #fff
+}
+
+.ant-calendar-time-picker-panel {
+    position: absolute;
+    z-index: 1050;
+    width: 100%
+}
+
+.ant-calendar-time-picker-inner {
+    position: relative;
+    display: inline-block;
+    width: 100%;
+    overflow: hidden;
+    font-size: 14px;
+    line-height: 1.5;
+    text-align: left;
+    list-style: none;
+    background-color: #fff;
+    background-clip: padding-box;
+    outline: none
+}
+
+.ant-calendar-time-picker-column-1, .ant-calendar-time-picker-column-1 .ant-calendar-time-picker-select, .ant-calendar-time-picker-combobox {
+    width: 100%
+}
+
+.ant-calendar-time-picker-column-2 .ant-calendar-time-picker-select {
+    width: 50%
+}
+
+.ant-calendar-time-picker-column-3 .ant-calendar-time-picker-select {
+    width: 33.33%
+}
+
+.ant-calendar-time-picker-column-4 .ant-calendar-time-picker-select {
+    width: 25%
+}
+
+.ant-calendar-time-picker-input-wrap {
+    display: none
+}
+
+.ant-calendar-time-picker-select {
+    position: relative;
+    float: left;
+    height: 226px;
+    overflow: hidden;
+    font-size: 14px;
+    border-right: 1px solid #e8e8e8
+}
+
+    .ant-calendar-time-picker-select:hover {
+        overflow-y: auto
+    }
+
+    .ant-calendar-time-picker-select:first-child {
+        margin-left: 0;
+        border-left: 0
+    }
+
+    .ant-calendar-time-picker-select:last-child {
+        border-right: 0
+    }
+
+    .ant-calendar-time-picker-select ul {
+        width: 100%;
+        max-height: 206px;
+        margin: 0;
+        padding: 0;
+        list-style: none
+    }
+
+    .ant-calendar-time-picker-select li {
+        width: 100%;
+        height: 24px;
+        margin: 0;
+        line-height: 24px;
+        text-align: center;
+        list-style: none;
+        cursor: pointer;
+        -webkit-transition: all .3s;
+        transition: all .3s;
+        -webkit-user-select: none;
+        -moz-user-select: none;
+        -ms-user-select: none;
+        user-select: none
+    }
+
+        .ant-calendar-time-picker-select li:last-child:after {
+            display: block;
+            height: 202px;
+            content: ""
+        }
+
+        .ant-calendar-time-picker-select li:hover {
+            background: #fff2e8
+        }
+
+        .ant-calendar-time-picker-select li:focus {
+            color: #fa541c;
+            font-weight: 600;
+            outline: none
+        }
+
+li.ant-calendar-time-picker-select-option-selected {
+    font-weight: 600;
+    background: #f5f5f5
+}
+
+li.ant-calendar-time-picker-select-option-disabled {
+    color: rgba(0,0,0,.25)
+}
+
+    li.ant-calendar-time-picker-select-option-disabled:hover {
+        background: transparent;
+        cursor: not-allowed
+    }
+
+.ant-calendar-time .ant-calendar-day-select {
+    display: inline-block;
+    padding: 0 2px;
+    color: rgba(0,0,0,.85);
+    font-weight: 500;
+    line-height: 34px
+}
+
+.ant-calendar-time .ant-calendar-footer {
+    position: relative;
+    height: auto
+}
+
+.ant-calendar-time .ant-calendar-footer-btn {
+    text-align: right
+}
+
+.ant-calendar-time .ant-calendar-footer .ant-calendar-today-btn {
+    float: left;
+    margin: 0
+}
+
+.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn {
+    display: inline-block;
+    margin-right: 8px
+}
+
+.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn-disabled {
+    color: rgba(0,0,0,.25)
+}
+
+.ant-calendar-month-panel {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 10;
+    background: #fff;
+    border-radius: 2px;
+    outline: none
+}
+
+    .ant-calendar-month-panel > div {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-orient: vertical;
+        -webkit-box-direction: normal;
+        -ms-flex-direction: column;
+        flex-direction: column;
+        height: 100%
+    }
+
+.ant-calendar-month-panel-hidden {
+    display: none
+}
+
+.ant-calendar-month-panel-header {
+    height: 40px;
+    line-height: 40px;
+    text-align: center;
+    border-bottom: 1px solid #e8e8e8;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    position: relative
+}
+
+    .ant-calendar-month-panel-header a:hover {
+        color: #ff7a45
+    }
+
+    .ant-calendar-month-panel-header .ant-calendar-month-panel-century-select, .ant-calendar-month-panel-header .ant-calendar-month-panel-decade-select, .ant-calendar-month-panel-header .ant-calendar-month-panel-month-select, .ant-calendar-month-panel-header .ant-calendar-month-panel-year-select {
+        display: inline-block;
+        padding: 0 2px;
+        color: rgba(0,0,0,.85);
+        font-weight: 500;
+        line-height: 40px
+    }
+
+    .ant-calendar-month-panel-header .ant-calendar-month-panel-century-select-arrow, .ant-calendar-month-panel-header .ant-calendar-month-panel-decade-select-arrow, .ant-calendar-month-panel-header .ant-calendar-month-panel-month-select-arrow, .ant-calendar-month-panel-header .ant-calendar-month-panel-year-select-arrow {
+        display: none
+    }
+
+    .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn {
+        position: absolute;
+        top: 0;
+        display: inline-block;
+        padding: 0 5px;
+        color: rgba(0,0,0,.45);
+        font-size: 16px;
+        font-family: Arial,Hiragino Sans GB,Microsoft Yahei,"Microsoft Sans Serif",sans-serif;
+        line-height: 40px
+    }
+
+    .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn {
+        left: 7px;
+        height: 100%
+    }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn:hover:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn:hover:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn:after {
+            display: none;
+            position: relative;
+            left: -3px;
+            display: inline-block
+        }
+
+    .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn {
+        right: 7px;
+        height: 100%
+    }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:hover:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:hover:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:after {
+            display: none
+        }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:before {
+            -webkit-transform: rotate(135deg) scale(.8);
+            transform: rotate(135deg) scale(.8)
+        }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:before {
+            position: relative;
+            left: 3px
+        }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:after {
+            display: inline-block
+        }
+
+    .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn {
+        left: 29px;
+        height: 100%
+    }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn:after {
+            display: none
+        }
+
+    .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn {
+        right: 29px;
+        height: 100%
+    }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:after {
+            display: none
+        }
+
+        .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:before {
+            -webkit-transform: rotate(135deg) scale(.8);
+            transform: rotate(135deg) scale(.8)
+        }
+
+.ant-calendar-month-panel-body {
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1
+}
+
+.ant-calendar-month-panel-footer {
+    border-top: 1px solid #e8e8e8
+}
+
+    .ant-calendar-month-panel-footer .ant-calendar-footer-extra {
+        padding: 0 12px
+    }
+
+.ant-calendar-month-panel-table {
+    width: 100%;
+    height: 100%;
+    table-layout: fixed;
+    border-collapse: separate
+}
+
+.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month, .ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover {
+    color: #fff;
+    background: #fa541c
+}
+
+.ant-calendar-month-panel-cell {
+    text-align: center
+}
+
+.ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month, .ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month:hover {
+    color: rgba(0,0,0,.25);
+    background: #f5f5f5;
+    cursor: not-allowed
+}
+
+.ant-calendar-month-panel-month {
+    display: inline-block;
+    height: 24px;
+    margin: 0 auto;
+    padding: 0 8px;
+    color: rgba(0,0,0,.65);
+    line-height: 24px;
+    text-align: center;
+    background: transparent;
+    border-radius: 2px;
+    -webkit-transition: background .3s ease;
+    transition: background .3s ease
+}
+
+    .ant-calendar-month-panel-month:hover {
+        background: #fff2e8;
+        cursor: pointer
+    }
+
+.ant-calendar-year-panel {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 10;
+    background: #fff;
+    border-radius: 2px;
+    outline: none
+}
+
+    .ant-calendar-year-panel > div {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-orient: vertical;
+        -webkit-box-direction: normal;
+        -ms-flex-direction: column;
+        flex-direction: column;
+        height: 100%
+    }
+
+.ant-calendar-year-panel-hidden {
+    display: none
+}
+
+.ant-calendar-year-panel-header {
+    height: 40px;
+    line-height: 40px;
+    text-align: center;
+    border-bottom: 1px solid #e8e8e8;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    position: relative
+}
+
+    .ant-calendar-year-panel-header a:hover {
+        color: #ff7a45
+    }
+
+    .ant-calendar-year-panel-header .ant-calendar-year-panel-century-select, .ant-calendar-year-panel-header .ant-calendar-year-panel-decade-select, .ant-calendar-year-panel-header .ant-calendar-year-panel-month-select, .ant-calendar-year-panel-header .ant-calendar-year-panel-year-select {
+        display: inline-block;
+        padding: 0 2px;
+        color: rgba(0,0,0,.85);
+        font-weight: 500;
+        line-height: 40px
+    }
+
+    .ant-calendar-year-panel-header .ant-calendar-year-panel-century-select-arrow, .ant-calendar-year-panel-header .ant-calendar-year-panel-decade-select-arrow, .ant-calendar-year-panel-header .ant-calendar-year-panel-month-select-arrow, .ant-calendar-year-panel-header .ant-calendar-year-panel-year-select-arrow {
+        display: none
+    }
+
+    .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn {
+        position: absolute;
+        top: 0;
+        display: inline-block;
+        padding: 0 5px;
+        color: rgba(0,0,0,.45);
+        font-size: 16px;
+        font-family: Arial,Hiragino Sans GB,Microsoft Yahei,"Microsoft Sans Serif",sans-serif;
+        line-height: 40px
+    }
+
+    .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn {
+        left: 7px;
+        height: 100%
+    }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn:hover:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn:hover:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn:after {
+            display: none;
+            position: relative;
+            left: -3px;
+            display: inline-block
+        }
+
+    .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn {
+        right: 7px;
+        height: 100%
+    }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:hover:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:hover:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:after {
+            display: none
+        }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:before {
+            -webkit-transform: rotate(135deg) scale(.8);
+            transform: rotate(135deg) scale(.8)
+        }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:before {
+            position: relative;
+            left: 3px
+        }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:after {
+            display: inline-block
+        }
+
+    .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn {
+        left: 29px;
+        height: 100%
+    }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn:after {
+            display: none
+        }
+
+    .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn {
+        right: 29px;
+        height: 100%
+    }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:after {
+            display: none
+        }
+
+        .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:before {
+            -webkit-transform: rotate(135deg) scale(.8);
+            transform: rotate(135deg) scale(.8)
+        }
+
+.ant-calendar-year-panel-body {
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1
+}
+
+.ant-calendar-year-panel-footer {
+    border-top: 1px solid #e8e8e8
+}
+
+    .ant-calendar-year-panel-footer .ant-calendar-footer-extra {
+        padding: 0 12px
+    }
+
+.ant-calendar-year-panel-table {
+    width: 100%;
+    height: 100%;
+    table-layout: fixed;
+    border-collapse: separate
+}
+
+.ant-calendar-year-panel-cell {
+    text-align: center
+}
+
+.ant-calendar-year-panel-year {
+    display: inline-block;
+    height: 24px;
+    margin: 0 auto;
+    padding: 0 8px;
+    color: rgba(0,0,0,.65);
+    line-height: 24px;
+    text-align: center;
+    background: transparent;
+    border-radius: 2px;
+    -webkit-transition: background .3s ease;
+    transition: background .3s ease
+}
+
+    .ant-calendar-year-panel-year:hover {
+        background: #fff2e8;
+        cursor: pointer
+    }
+
+.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year, .ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover {
+    color: #fff;
+    background: #fa541c
+}
+
+.ant-calendar-year-panel-last-decade-cell .ant-calendar-year-panel-year, .ant-calendar-year-panel-next-decade-cell .ant-calendar-year-panel-year {
+    color: rgba(0,0,0,.25);
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+.ant-calendar-decade-panel {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 10;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    background: #fff;
+    border-radius: 2px;
+    outline: none
+}
+
+.ant-calendar-decade-panel-hidden {
+    display: none
+}
+
+.ant-calendar-decade-panel-header {
+    height: 40px;
+    line-height: 40px;
+    text-align: center;
+    border-bottom: 1px solid #e8e8e8;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    position: relative
+}
+
+    .ant-calendar-decade-panel-header a:hover {
+        color: #ff7a45
+    }
+
+    .ant-calendar-decade-panel-header .ant-calendar-decade-panel-century-select, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-decade-select, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-month-select, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-year-select {
+        display: inline-block;
+        padding: 0 2px;
+        color: rgba(0,0,0,.85);
+        font-weight: 500;
+        line-height: 40px
+    }
+
+    .ant-calendar-decade-panel-header .ant-calendar-decade-panel-century-select-arrow, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-decade-select-arrow, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-month-select-arrow, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-year-select-arrow {
+        display: none
+    }
+
+    .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn {
+        position: absolute;
+        top: 0;
+        display: inline-block;
+        padding: 0 5px;
+        color: rgba(0,0,0,.45);
+        font-size: 16px;
+        font-family: Arial,Hiragino Sans GB,Microsoft Yahei,"Microsoft Sans Serif",sans-serif;
+        line-height: 40px
+    }
+
+    .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn {
+        left: 7px;
+        height: 100%
+    }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn:hover:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn:hover:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn:after {
+            display: none;
+            position: relative;
+            left: -3px;
+            display: inline-block
+        }
+
+    .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn {
+        right: 7px;
+        height: 100%
+    }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:hover:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:hover:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:after {
+            display: none
+        }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:before {
+            -webkit-transform: rotate(135deg) scale(.8);
+            transform: rotate(135deg) scale(.8)
+        }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:before {
+            position: relative;
+            left: 3px
+        }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:after {
+            display: inline-block
+        }
+
+    .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn {
+        left: 29px;
+        height: 100%
+    }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn:after {
+            display: none
+        }
+
+    .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn {
+        right: 29px;
+        height: 100%
+    }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:before {
+            position: relative;
+            top: -1px;
+            display: inline-block;
+            width: 8px;
+            height: 8px;
+            vertical-align: middle;
+            border: 0 solid #aaa;
+            border-width: 1.5px 0 0 1.5px;
+            border-radius: 1px;
+            -webkit-transform: rotate(-45deg) scale(.8);
+            transform: rotate(-45deg) scale(.8);
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:hover:before {
+            border-color: rgba(0,0,0,.65)
+        }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:after {
+            display: none
+        }
+
+        .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:before {
+            -webkit-transform: rotate(135deg) scale(.8);
+            transform: rotate(135deg) scale(.8)
+        }
+
+.ant-calendar-decade-panel-body {
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1
+}
+
+.ant-calendar-decade-panel-footer {
+    border-top: 1px solid #e8e8e8
+}
+
+    .ant-calendar-decade-panel-footer .ant-calendar-footer-extra {
+        padding: 0 12px
+    }
+
+.ant-calendar-decade-panel-table {
+    width: 100%;
+    height: 100%;
+    table-layout: fixed;
+    border-collapse: separate
+}
+
+.ant-calendar-decade-panel-cell {
+    white-space: nowrap;
+    text-align: center
+}
+
+.ant-calendar-decade-panel-decade {
+    display: inline-block;
+    height: 24px;
+    margin: 0 auto;
+    padding: 0 6px;
+    color: rgba(0,0,0,.65);
+    line-height: 24px;
+    text-align: center;
+    background: transparent;
+    border-radius: 2px;
+    -webkit-transition: background .3s ease;
+    transition: background .3s ease
+}
+
+    .ant-calendar-decade-panel-decade:hover {
+        background: #fff2e8;
+        cursor: pointer
+    }
+
+.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade, .ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover {
+    color: #fff;
+    background: #fa541c
+}
+
+.ant-calendar-decade-panel-last-century-cell .ant-calendar-decade-panel-decade, .ant-calendar-decade-panel-next-century-cell .ant-calendar-decade-panel-decade {
+    color: rgba(0,0,0,.25);
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+.ant-calendar-month .ant-calendar-month-header-wrap {
+    position: relative;
+    height: 288px
+}
+
+.ant-calendar-month .ant-calendar-month-panel, .ant-calendar-month .ant-calendar-year-panel {
+    top: 0;
+    height: 100%
+}
+
+.ant-calendar-week-number-cell {
+    opacity: .5
+}
+
+.ant-calendar-week-number .ant-calendar-body tr {
+    cursor: pointer;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-calendar-week-number .ant-calendar-body tr:hover {
+        background: #fff2e8
+    }
+
+    .ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week {
+        font-weight: 700;
+        background: #ffd8bf
+    }
+
+    .ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day .ant-calendar-date, .ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day:hover .ant-calendar-date {
+        color: rgba(0,0,0,.65);
+        background: transparent
+    }
+
+.ant-descriptions-title {
+    margin-bottom: 20px;
+    color: rgba(0,0,0,.85);
+    font-weight: 700;
+    font-size: 16px;
+    line-height: 1.5
+}
+
+.ant-descriptions-view {
+    width: 100%;
+    overflow: hidden;
+    border-radius: 2px
+}
+
+    .ant-descriptions-view table {
+        width: 100%;
+        table-layout: fixed
+    }
+
+.ant-descriptions-row > td, .ant-descriptions-row > th {
+    padding-bottom: 16px
+}
+
+.ant-descriptions-row:last-child {
+    border-bottom: none
+}
+
+.ant-descriptions-item-label {
+    color: rgba(0,0,0,.85);
+    font-weight: 400;
+    font-size: 14px;
+    line-height: 1.5
+}
+
+    .ant-descriptions-item-label:after {
+        position: relative;
+        top: -.5px;
+        margin: 0 8px 0 2px;
+        content: " "
+    }
+
+.ant-descriptions-item-colon:after {
+    content: ":"
+}
+
+.ant-descriptions-item-no-label:after {
+    margin: 0;
+    content: ""
+}
+
+.ant-descriptions-item-content {
+    display: table-cell;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    line-height: 1.5
+}
+
+.ant-descriptions-item {
+    padding-bottom: 0
+}
+
+    .ant-descriptions-item > span {
+        display: inline-block
+    }
+
+.ant-descriptions-middle .ant-descriptions-row > td, .ant-descriptions-middle .ant-descriptions-row > th {
+    padding-bottom: 12px
+}
+
+.ant-descriptions-small .ant-descriptions-row > td, .ant-descriptions-small .ant-descriptions-row > th {
+    padding-bottom: 8px
+}
+
+.ant-descriptions-bordered .ant-descriptions-view {
+    border: 1px solid #e8e8e8
+}
+
+    .ant-descriptions-bordered .ant-descriptions-view > table {
+        table-layout: auto
+    }
+
+.ant-descriptions-bordered .ant-descriptions-item-content, .ant-descriptions-bordered .ant-descriptions-item-label {
+    padding: 16px 24px;
+    border-right: 1px solid #e8e8e8
+}
+
+    .ant-descriptions-bordered .ant-descriptions-item-content:last-child, .ant-descriptions-bordered .ant-descriptions-item-label:last-child {
+        border-right: none
+    }
+
+.ant-descriptions-bordered .ant-descriptions-item-label {
+    background-color: #fafafa
+}
+
+    .ant-descriptions-bordered .ant-descriptions-item-label:after {
+        display: none
+    }
+
+.ant-descriptions-bordered .ant-descriptions-row {
+    border-bottom: 1px solid #e8e8e8
+}
+
+    .ant-descriptions-bordered .ant-descriptions-row:last-child {
+        border-bottom: none
+    }
+
+.ant-descriptions-bordered.ant-descriptions-middle .ant-descriptions-item-content, .ant-descriptions-bordered.ant-descriptions-middle .ant-descriptions-item-label {
+    padding: 12px 24px
+}
+
+.ant-descriptions-bordered.ant-descriptions-small .ant-descriptions-item-content, .ant-descriptions-bordered.ant-descriptions-small .ant-descriptions-item-label {
+    padding: 8px 16px
+}
+
+.ant-divider {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    background: #e8e8e8
+}
+
+.ant-divider, .ant-divider-vertical {
+    position: relative;
+    top: -.06em;
+    display: inline-block;
+    width: 1px;
+    height: .9em;
+    margin: 0 8px;
+    vertical-align: middle
+}
+
+.ant-divider-horizontal {
+    display: block;
+    clear: both;
+    width: 100%;
+    min-width: 100%;
+    height: 1px;
+    margin: 24px 0
+}
+
+    .ant-divider-horizontal.ant-divider-with-text-center, .ant-divider-horizontal.ant-divider-with-text-left, .ant-divider-horizontal.ant-divider-with-text-right {
+        display: table;
+        margin: 16px 0;
+        color: rgba(0,0,0,.85);
+        font-weight: 500;
+        font-size: 16px;
+        white-space: nowrap;
+        text-align: center;
+        background: transparent
+    }
+
+        .ant-divider-horizontal.ant-divider-with-text-center:after, .ant-divider-horizontal.ant-divider-with-text-center:before, .ant-divider-horizontal.ant-divider-with-text-left:after, .ant-divider-horizontal.ant-divider-with-text-left:before, .ant-divider-horizontal.ant-divider-with-text-right:after, .ant-divider-horizontal.ant-divider-with-text-right:before {
+            position: relative;
+            top: 50%;
+            display: table-cell;
+            width: 50%;
+            border-top: 1px solid #e8e8e8;
+            -webkit-transform: translateY(50%);
+            transform: translateY(50%);
+            content: ""
+        }
+
+        .ant-divider-horizontal.ant-divider-with-text-left .ant-divider-inner-text, .ant-divider-horizontal.ant-divider-with-text-right .ant-divider-inner-text {
+            display: inline-block;
+            padding: 0 10px
+        }
+
+        .ant-divider-horizontal.ant-divider-with-text-left:before {
+            top: 50%;
+            width: 5%
+        }
+
+        .ant-divider-horizontal.ant-divider-with-text-left:after, .ant-divider-horizontal.ant-divider-with-text-right:before {
+            top: 50%;
+            width: 95%
+        }
+
+        .ant-divider-horizontal.ant-divider-with-text-right:after {
+            top: 50%;
+            width: 5%
+        }
+
+.ant-divider-inner-text {
+    display: inline-block;
+    padding: 0 24px
+}
+
+.ant-divider-dashed {
+    background: none;
+    border-color: #e8e8e8;
+    border-style: dashed;
+    border-width: 1px 0 0
+}
+
+.ant-divider-horizontal.ant-divider-with-text-center.ant-divider-dashed, .ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed, .ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed {
+    border-top: 0
+}
+
+    .ant-divider-horizontal.ant-divider-with-text-center.ant-divider-dashed:after, .ant-divider-horizontal.ant-divider-with-text-center.ant-divider-dashed:before, .ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed:after, .ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed:before, .ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed:after, .ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed:before {
+        border-style: dashed none none
+    }
+
+.ant-divider-vertical.ant-divider-dashed {
+    border-width: 0 0 0 1px
+}
+
+.ant-drawer {
+    position: fixed;
+    z-index: 1000;
+    width: 0;
+    height: 100%;
+    -webkit-transition: height 0s ease .3s,width 0s ease .3s,-webkit-transform .3s cubic-bezier(.7,.3,.1,1);
+    transition: height 0s ease .3s,width 0s ease .3s,-webkit-transform .3s cubic-bezier(.7,.3,.1,1);
+    transition: transform .3s cubic-bezier(.7,.3,.1,1),height 0s ease .3s,width 0s ease .3s;
+    transition: transform .3s cubic-bezier(.7,.3,.1,1),height 0s ease .3s,width 0s ease .3s,-webkit-transform .3s cubic-bezier(.7,.3,.1,1)
+}
+
+    .ant-drawer > * {
+        -webkit-transition: -webkit-transform .3s cubic-bezier(.7,.3,.1,1),-webkit-box-shadow .3s cubic-bezier(.7,.3,.1,1);
+        transition: -webkit-transform .3s cubic-bezier(.7,.3,.1,1),-webkit-box-shadow .3s cubic-bezier(.7,.3,.1,1);
+        transition: transform .3s cubic-bezier(.7,.3,.1,1),box-shadow .3s cubic-bezier(.7,.3,.1,1);
+        transition: transform .3s cubic-bezier(.7,.3,.1,1),box-shadow .3s cubic-bezier(.7,.3,.1,1),-webkit-transform .3s cubic-bezier(.7,.3,.1,1),-webkit-box-shadow .3s cubic-bezier(.7,.3,.1,1)
+    }
+
+.ant-drawer-content-wrapper {
+    position: absolute
+}
+
+.ant-drawer .ant-drawer-content {
+    width: 100%;
+    height: 100%
+}
+
+.ant-drawer-left, .ant-drawer-right {
+    top: 0;
+    width: 0;
+    height: 100%
+}
+
+    .ant-drawer-left .ant-drawer-content-wrapper, .ant-drawer-right .ant-drawer-content-wrapper {
+        height: 100%
+    }
+
+    .ant-drawer-left.ant-drawer-open, .ant-drawer-right.ant-drawer-open {
+        width: 100%;
+        -webkit-transition: -webkit-transform .3s cubic-bezier(.7,.3,.1,1);
+        transition: -webkit-transform .3s cubic-bezier(.7,.3,.1,1);
+        transition: transform .3s cubic-bezier(.7,.3,.1,1);
+        transition: transform .3s cubic-bezier(.7,.3,.1,1),-webkit-transform .3s cubic-bezier(.7,.3,.1,1)
+    }
+
+        .ant-drawer-left.ant-drawer-open.no-mask, .ant-drawer-right.ant-drawer-open.no-mask {
+            width: 0
+        }
+
+        .ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper {
+            -webkit-box-shadow: 2px 0 8px rgba(0,0,0,.15);
+            box-shadow: 2px 0 8px rgba(0,0,0,.15)
+        }
+
+    .ant-drawer-right, .ant-drawer-right .ant-drawer-content-wrapper {
+        right: 0
+    }
+
+        .ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper {
+            -webkit-box-shadow: -2px 0 8px rgba(0,0,0,.15);
+            box-shadow: -2px 0 8px rgba(0,0,0,.15)
+        }
+
+        .ant-drawer-right.ant-drawer-open.no-mask {
+            right: 1px;
+            -webkit-transform: translateX(1px);
+            transform: translateX(1px)
+        }
+
+.ant-drawer-bottom, .ant-drawer-top {
+    left: 0;
+    width: 100%;
+    height: 0%
+}
+
+    .ant-drawer-bottom .ant-drawer-content-wrapper, .ant-drawer-top .ant-drawer-content-wrapper {
+        width: 100%
+    }
+
+    .ant-drawer-bottom.ant-drawer-open, .ant-drawer-top.ant-drawer-open {
+        height: 100%;
+        -webkit-transition: -webkit-transform .3s cubic-bezier(.7,.3,.1,1);
+        transition: -webkit-transform .3s cubic-bezier(.7,.3,.1,1);
+        transition: transform .3s cubic-bezier(.7,.3,.1,1);
+        transition: transform .3s cubic-bezier(.7,.3,.1,1),-webkit-transform .3s cubic-bezier(.7,.3,.1,1)
+    }
+
+        .ant-drawer-bottom.ant-drawer-open.no-mask, .ant-drawer-top.ant-drawer-open.no-mask {
+            height: 0%
+        }
+
+.ant-drawer-top {
+    top: 0
+}
+
+    .ant-drawer-top.ant-drawer-open .ant-drawer-content-wrapper {
+        -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+        box-shadow: 0 2px 8px rgba(0,0,0,.15)
+    }
+
+.ant-drawer-bottom, .ant-drawer-bottom .ant-drawer-content-wrapper {
+    bottom: 0
+}
+
+    .ant-drawer-bottom.ant-drawer-open .ant-drawer-content-wrapper {
+        -webkit-box-shadow: 0 -2px 8px rgba(0,0,0,.15);
+        box-shadow: 0 -2px 8px rgba(0,0,0,.15)
+    }
+
+    .ant-drawer-bottom.ant-drawer-open.no-mask {
+        bottom: 1px;
+        -webkit-transform: translateY(1px);
+        transform: translateY(1px)
+    }
+
+.ant-drawer.ant-drawer-open .ant-drawer-mask {
+    height: 100%;
+    opacity: 1;
+    -webkit-transition: none;
+    transition: none;
+    -webkit-animation: antdDrawerFadeIn .3s cubic-bezier(.7,.3,.1,1);
+    animation: antdDrawerFadeIn .3s cubic-bezier(.7,.3,.1,1)
+}
+
+.ant-drawer-title {
+    margin: 0;
+    color: rgba(0,0,0,.85);
+    font-weight: 500;
+    font-size: 16px;
+    line-height: 22px
+}
+
+.ant-drawer-content {
+    position: relative;
+    z-index: 1;
+    overflow: auto;
+    background-color: #fff;
+    background-clip: padding-box;
+    border: 0
+}
+
+.ant-drawer-close {
+    position: absolute;
+    top: 0;
+    right: 0;
+    z-index: 10;
+    display: block;
+    width: 56px;
+    height: 56px;
+    padding: 0;
+    color: rgba(0,0,0,.45);
+    font-weight: 700;
+    font-size: 16px;
+    font-style: normal;
+    line-height: 56px;
+    text-align: center;
+    text-transform: none;
+    text-decoration: none;
+    background: transparent;
+    border: 0;
+    outline: 0;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s;
+    text-rendering: auto
+}
+
+    .ant-drawer-close:focus, .ant-drawer-close:hover {
+        color: rgba(0,0,0,.75);
+        text-decoration: none
+    }
+
+.ant-drawer-header {
+    position: relative;
+    padding: 16px 24px;
+    border-bottom: 1px solid #e8e8e8;
+    border-radius: 2px 2px 0 0
+}
+
+.ant-drawer-header, .ant-drawer-header-no-title {
+    color: rgba(0,0,0,.65);
+    background: #fff
+}
+
+.ant-drawer-body {
+    padding: 24px;
+    font-size: 14px;
+    line-height: 1.5;
+    word-wrap: break-word
+}
+
+.ant-drawer-wrapper-body {
+    height: 100%;
+    overflow: auto
+}
+
+.ant-drawer-mask {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 0;
+    background-color: rgba(0,0,0,.45);
+    opacity: 0;
+    filter: alpha(opacity=45);
+    -webkit-transition: opacity .3s linear,height 0s ease .3s;
+    transition: opacity .3s linear,height 0s ease .3s
+}
+
+.ant-drawer-open-content {
+    -webkit-box-shadow: 0 4px 12px rgba(0,0,0,.15);
+    box-shadow: 0 4px 12px rgba(0,0,0,.15)
+}
+
+@-webkit-keyframes antdDrawerFadeIn {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+@keyframes antdDrawerFadeIn {
+    0% {
+        opacity: 0
+    }
+
+    to {
+        opacity: 1
+    }
+}
+
+.ant-dropdown {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: absolute;
+    top: -9999px;
+    left: -9999px;
+    z-index: 1050;
+    display: block
+}
+
+    .ant-dropdown:before {
+        position: absolute;
+        top: -7px;
+        right: 0;
+        bottom: -7px;
+        left: -7px;
+        z-index: -9999;
+        opacity: .0001;
+        content: " "
+    }
+
+.ant-dropdown-wrap {
+    position: relative
+}
+
+    .ant-dropdown-wrap .ant-btn > .anticon-down {
+        display: inline-block;
+        font-size: 12px;
+        font-size: 10px\9;
+        -webkit-transform: scale(.83333333) rotate(0deg);
+        transform: scale(.83333333) rotate(0deg)
+    }
+
+:root .ant-dropdown-wrap .ant-btn > .anticon-down {
+    font-size: 12px
+}
+
+.ant-dropdown-wrap .anticon-down:before {
+    -webkit-transition: -webkit-transform .2s;
+    transition: -webkit-transform .2s;
+    transition: transform .2s;
+    transition: transform .2s,-webkit-transform .2s
+}
+
+.ant-dropdown-wrap-open .anticon-down:before {
+    -webkit-transform: rotate(180deg);
+    transform: rotate(180deg)
+}
+
+.ant-dropdown-hidden, .ant-dropdown-menu-hidden {
+    display: none
+}
+
+.ant-dropdown-menu {
+    position: relative;
+    margin: 0;
+    padding: 4px 0;
+    text-align: left;
+    list-style-type: none;
+    background-color: #fff;
+    background-clip: padding-box;
+    border-radius: 2px;
+    outline: none;
+    -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    -webkit-transform: translateZ(0)
+}
+
+.ant-dropdown-menu-item-group-title {
+    padding: 5px 12px;
+    color: rgba(0,0,0,.45);
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+.ant-dropdown-menu-submenu-popup {
+    position: absolute;
+    z-index: 1050
+}
+
+    .ant-dropdown-menu-submenu-popup > .ant-dropdown-menu {
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0
+    }
+
+    .ant-dropdown-menu-submenu-popup li, .ant-dropdown-menu-submenu-popup ul {
+        list-style: none
+    }
+
+    .ant-dropdown-menu-submenu-popup ul {
+        margin-right: .3em;
+        margin-left: .3em;
+        padding: 0
+    }
+
+.ant-dropdown-menu-item, .ant-dropdown-menu-submenu-title {
+    clear: both;
+    margin: 0;
+    padding: 5px 12px;
+    color: rgba(0,0,0,.65);
+    font-weight: 400;
+    font-size: 14px;
+    line-height: 22px;
+    white-space: nowrap;
+    cursor: pointer;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-dropdown-menu-item > .anticon:first-child, .ant-dropdown-menu-item > span > .anticon:first-child, .ant-dropdown-menu-submenu-title > .anticon:first-child, .ant-dropdown-menu-submenu-title > span > .anticon:first-child {
+        min-width: 12px;
+        margin-right: 8px;
+        font-size: 12px
+    }
+
+    .ant-dropdown-menu-item > a, .ant-dropdown-menu-submenu-title > a {
+        display: block;
+        margin: -5px -12px;
+        padding: 5px 12px;
+        color: rgba(0,0,0,.65);
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+.ant-dropdown-menu-item-selected, .ant-dropdown-menu-item-selected > a, .ant-dropdown-menu-submenu-title-selected, .ant-dropdown-menu-submenu-title-selected > a {
+    color: #fa541c;
+    background-color: #fff2e8
+}
+
+.ant-dropdown-menu-item:hover, .ant-dropdown-menu-submenu-title:hover {
+    background-color: #fff2e8
+}
+
+.ant-dropdown-menu-item-disabled, .ant-dropdown-menu-submenu-title-disabled {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed
+}
+
+    .ant-dropdown-menu-item-disabled:hover, .ant-dropdown-menu-submenu-title-disabled:hover {
+        color: rgba(0,0,0,.25);
+        background-color: #fff;
+        cursor: not-allowed
+    }
+
+.ant-dropdown-menu-item-divider, .ant-dropdown-menu-submenu-title-divider {
+    height: 1px;
+    margin: 4px 0;
+    overflow: hidden;
+    line-height: 0;
+    background-color: #e8e8e8
+}
+
+.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow, .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow {
+    position: absolute;
+    right: 8px
+}
+
+.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon, .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {
+    color: rgba(0,0,0,.45);
+    font-style: normal;
+    display: inline-block;
+    font-size: 12px;
+    font-size: 10px\9;
+    -webkit-transform: scale(.83333333) rotate(0deg);
+    transform: scale(.83333333) rotate(0deg)
+}
+
+:root .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon, :root .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {
+    font-size: 12px
+}
+
+.ant-dropdown-menu-item-group-list {
+    margin: 0 8px;
+    padding: 0;
+    list-style: none
+}
+
+.ant-dropdown-menu-submenu-title {
+    padding-right: 26px
+}
+
+.ant-dropdown-menu-submenu-vertical {
+    position: relative
+}
+
+    .ant-dropdown-menu-submenu-vertical > .ant-dropdown-menu {
+        position: absolute;
+        top: 0;
+        left: 100%;
+        min-width: 100%;
+        margin-left: 4px;
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0
+    }
+
+.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title, .ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {
+    color: rgba(0,0,0,.25);
+    background-color: #fff;
+    cursor: not-allowed
+}
+
+.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title {
+    color: #fa541c
+}
+
+.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomCenter, .ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomLeft, .ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomRight, .ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomCenter, .ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomLeft, .ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomRight {
+    -webkit-animation-name: antSlideUpIn;
+    animation-name: antSlideUpIn
+}
+
+.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topCenter, .ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topLeft, .ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topRight, .ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topCenter, .ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topLeft, .ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topRight {
+    -webkit-animation-name: antSlideDownIn;
+    animation-name: antSlideDownIn
+}
+
+.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomCenter, .ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomLeft, .ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomRight {
+    -webkit-animation-name: antSlideUpOut;
+    animation-name: antSlideUpOut
+}
+
+.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topCenter, .ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topLeft, .ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topRight {
+    -webkit-animation-name: antSlideDownOut;
+    animation-name: antSlideDownOut
+}
+
+.ant-dropdown-link > .anticon.anticon-down, .ant-dropdown-trigger > .anticon.anticon-down {
+    display: inline-block;
+    font-size: 12px;
+    font-size: 10px\9;
+    -webkit-transform: scale(.83333333) rotate(0deg);
+    transform: scale(.83333333) rotate(0deg)
+}
+
+:root .ant-dropdown-link > .anticon.anticon-down, :root .ant-dropdown-trigger > .anticon.anticon-down {
+    font-size: 12px
+}
+
+.ant-dropdown-button {
+    white-space: nowrap
+}
+
+    .ant-dropdown-button.ant-btn-group > .ant-btn:last-child:not(:first-child) {
+        padding-right: 8px;
+        padding-left: 8px
+    }
+
+    .ant-dropdown-button .anticon.anticon-down {
+        display: inline-block;
+        font-size: 12px;
+        font-size: 10px\9;
+        -webkit-transform: scale(.83333333) rotate(0deg);
+        transform: scale(.83333333) rotate(0deg)
+    }
+
+:root .ant-dropdown-button .anticon.anticon-down {
+    font-size: 12px
+}
+
+.ant-dropdown-menu-dark, .ant-dropdown-menu-dark .ant-dropdown-menu {
+    background: #001529
+}
+
+    .ant-dropdown-menu-dark .ant-dropdown-menu-item, .ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow:after, .ant-dropdown-menu-dark .ant-dropdown-menu-item > a, .ant-dropdown-menu-dark .ant-dropdown-menu-item > a .ant-dropdown-menu-submenu-arrow:after, .ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title, .ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow:after {
+        color: hsla(0,0%,100%,.65)
+    }
+
+        .ant-dropdown-menu-dark .ant-dropdown-menu-item:hover, .ant-dropdown-menu-dark .ant-dropdown-menu-item > a:hover, .ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title:hover {
+            color: #fff;
+            background: transparent
+        }
+
+    .ant-dropdown-menu-dark .ant-dropdown-menu-item-selected, .ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover, .ant-dropdown-menu-dark .ant-dropdown-menu-item-selected > a {
+        color: #fff;
+        background: #fa541c
+    }
+
+.ant-empty {
+    margin: 0 8px;
+    font-size: 14px;
+    line-height: 22px;
+    text-align: center
+}
+
+.ant-empty-image {
+    height: 100px;
+    margin-bottom: 8px
+}
+
+    .ant-empty-image img {
+        height: 100%
+    }
+
+    .ant-empty-image svg {
+        height: 100%;
+        margin: auto
+    }
+
+.ant-empty-description {
+    margin: 0
+}
+
+.ant-empty-footer {
+    margin-top: 16px
+}
+
+.ant-empty-normal {
+    margin: 32px 0;
+    color: rgba(0,0,0,.25)
+}
+
+    .ant-empty-normal .ant-empty-image {
+        height: 40px
+    }
+
+.ant-empty-small {
+    margin: 8px 0;
+    color: rgba(0,0,0,.25)
+}
+
+    .ant-empty-small .ant-empty-image {
+        height: 35px
+    }
+
+@media (max-width:575px) {
+    .ant-form-item-control-wrapper, .ant-form-item-label {
+        display: block;
+        width: 100%
+    }
+
+    .ant-form-item-label {
+        display: block;
+        margin: 0;
+        padding: 0 0 8px;
+        line-height: 1.5;
+        white-space: normal;
+        text-align: left
+    }
+
+        .ant-form-item-label label:after {
+            display: none
+        }
+
+    .ant-col-xs-24.ant-form-item-label {
+        display: block;
+        margin: 0;
+        padding: 0 0 8px;
+        line-height: 1.5;
+        white-space: normal;
+        text-align: left
+    }
+
+        .ant-col-xs-24.ant-form-item-label label:after {
+            display: none
+        }
+}
+
+@media (max-width:767px) {
+    .ant-col-sm-24.ant-form-item-label {
+        display: block;
+        margin: 0;
+        padding: 0 0 8px;
+        line-height: 1.5;
+        white-space: normal;
+        text-align: left
+    }
+
+        .ant-col-sm-24.ant-form-item-label label:after {
+            display: none
+        }
+}
+
+@media (max-width:991px) {
+    .ant-col-md-24.ant-form-item-label {
+        display: block;
+        margin: 0;
+        padding: 0 0 8px;
+        line-height: 1.5;
+        white-space: normal;
+        text-align: left
+    }
+
+        .ant-col-md-24.ant-form-item-label label:after {
+            display: none
+        }
+}
+
+@media (max-width:1199px) {
+    .ant-col-lg-24.ant-form-item-label {
+        display: block;
+        margin: 0;
+        padding: 0 0 8px;
+        line-height: 1.5;
+        white-space: normal;
+        text-align: left
+    }
+
+        .ant-col-lg-24.ant-form-item-label label:after {
+            display: none
+        }
+}
+
+@media (max-width:1599px) {
+    .ant-col-xl-24.ant-form-item-label {
+        display: block;
+        margin: 0;
+        padding: 0 0 8px;
+        line-height: 1.5;
+        white-space: normal;
+        text-align: left
+    }
+
+        .ant-col-xl-24.ant-form-item-label label:after {
+            display: none
+        }
+}
+
+@-webkit-keyframes antShowHelpIn {
+    0% {
+        -webkit-transform: translateY(-5px);
+        transform: translateY(-5px);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antShowHelpOut {
+    to {
+        -webkit-transform: translateY(-5px);
+        transform: translateY(-5px);
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes diffZoomIn1 {
+    0% {
+        -webkit-transform: scale(0);
+        transform: scale(0)
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+}
+
+@-webkit-keyframes diffZoomIn2 {
+    0% {
+        -webkit-transform: scale(0);
+        transform: scale(0)
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+}
+
+@-webkit-keyframes diffZoomIn3 {
+    0% {
+        -webkit-transform: scale(0);
+        transform: scale(0)
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+}
+
+.ant-form {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+    .ant-form legend {
+        display: block;
+        width: 100%;
+        margin-bottom: 20px;
+        padding: 0;
+        color: rgba(0,0,0,.45);
+        font-size: 16px;
+        line-height: inherit;
+        border: 0;
+        border-bottom: 1px solid #d9d9d9
+    }
+
+    .ant-form label {
+        font-size: 14px
+    }
+
+    .ant-form input[type=search] {
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box
+    }
+
+    .ant-form input[type=checkbox], .ant-form input[type=radio] {
+        line-height: normal
+    }
+
+    .ant-form input[type=file] {
+        display: block
+    }
+
+    .ant-form input[type=range] {
+        display: block;
+        width: 100%
+    }
+
+    .ant-form select[multiple], .ant-form select[size] {
+        height: auto
+    }
+
+    .ant-form input[type=checkbox]:focus, .ant-form input[type=file]:focus, .ant-form input[type=radio]:focus {
+        outline: thin dotted;
+        outline: 5px auto -webkit-focus-ring-color;
+        outline-offset: -2px
+    }
+
+    .ant-form output {
+        display: block;
+        padding-top: 15px;
+        color: rgba(0,0,0,.65);
+        font-size: 14px;
+        line-height: 1.5
+    }
+
+.ant-form-item-required:before {
+    display: inline-block;
+    margin-right: 4px;
+    color: #f5222d;
+    font-size: 14px;
+    font-family: SimSun,sans-serif;
+    line-height: 1;
+    content: "*"
+}
+
+.ant-form-hide-required-mark .ant-form-item-required:before {
+    display: none
+}
+
+.ant-form-item-label > label {
+    color: rgba(0,0,0,.85)
+}
+
+    .ant-form-item-label > label:after {
+        content: ":";
+        position: relative;
+        top: -.5px;
+        margin: 0 8px 0 2px
+    }
+
+    .ant-form-item-label > label.ant-form-item-no-colon:after {
+        content: " "
+    }
+
+.ant-form-item {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    margin-bottom: 24px;
+    vertical-align: top
+}
+
+    .ant-form-item label {
+        position: relative
+    }
+
+        .ant-form-item label > .anticon {
+            font-size: 14px;
+            vertical-align: top
+        }
+
+.ant-form-item-control {
+    position: relative;
+    line-height: 40px;
+    zoom: 1
+}
+
+    .ant-form-item-control:after, .ant-form-item-control:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-form-item-control:after {
+        clear: both
+    }
+
+.ant-form-item-children {
+    position: relative
+}
+
+.ant-form-item-with-help {
+    margin-bottom: 5px
+}
+
+.ant-form-item-label {
+    display: inline-block;
+    overflow: hidden;
+    line-height: 39.9999px;
+    white-space: nowrap;
+    text-align: right;
+    vertical-align: middle
+}
+
+.ant-form-item-label-left {
+    text-align: left
+}
+
+.ant-form-item .ant-switch {
+    margin: 2px 0 4px
+}
+
+.ant-form-explain, .ant-form-extra {
+    clear: both;
+    min-height: 22px;
+    margin-top: -2px;
+    color: rgba(0,0,0,.45);
+    font-size: 14px;
+    line-height: 1.5;
+    -webkit-transition: color .3s cubic-bezier(.215,.61,.355,1);
+    transition: color .3s cubic-bezier(.215,.61,.355,1)
+}
+
+.ant-form-explain {
+    margin-bottom: -1px
+}
+
+.ant-form-extra {
+    padding-top: 4px
+}
+
+.ant-form-text {
+    display: inline-block;
+    padding-right: 8px
+}
+
+.ant-form-split {
+    display: block;
+    text-align: center
+}
+
+form .has-feedback .ant-input {
+    padding-right: 30px
+}
+
+form .has-feedback .ant-input-affix-wrapper .ant-input-suffix {
+    padding-right: 18px
+}
+
+form .has-feedback .ant-input-affix-wrapper .ant-input {
+    padding-right: 49px
+}
+
+form .has-feedback .ant-input-affix-wrapper.ant-input-affix-wrapper-input-with-clear-btn .ant-input {
+    padding-right: 68px
+}
+
+form .has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-arrow, form .has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-selection__clear, form .has-feedback > .ant-select .ant-select-arrow, form .has-feedback > .ant-select .ant-select-selection__clear {
+    right: 28px
+}
+
+form .has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-selection-selected-value, form .has-feedback > .ant-select .ant-select-selection-selected-value {
+    padding-right: 42px
+}
+
+form .has-feedback .ant-cascader-picker-arrow {
+    margin-right: 17px
+}
+
+form .has-feedback .ant-calendar-picker-clear, form .has-feedback .ant-calendar-picker-icon, form .has-feedback .ant-cascader-picker-clear, form .has-feedback .ant-input-search:not(.ant-input-search-enter-button) .ant-input-suffix, form .has-feedback .ant-time-picker-clear, form .has-feedback .ant-time-picker-icon {
+    right: 28px
+}
+
+form .ant-mentions, form textarea.ant-input {
+    height: auto;
+    margin-bottom: 4px
+}
+
+form .ant-upload {
+    background: transparent
+}
+
+form input[type=checkbox], form input[type=radio] {
+    width: 14px;
+    height: 14px
+}
+
+form .ant-checkbox-inline, form .ant-radio-inline {
+    display: inline-block;
+    margin-left: 8px;
+    font-weight: 400;
+    vertical-align: middle;
+    cursor: pointer
+}
+
+    form .ant-checkbox-inline:first-child, form .ant-radio-inline:first-child {
+        margin-left: 0
+    }
+
+form .ant-checkbox-vertical, form .ant-radio-vertical {
+    display: block
+}
+
+    form .ant-checkbox-vertical + .ant-checkbox-vertical, form .ant-radio-vertical + .ant-radio-vertical {
+        margin-left: 0
+    }
+
+form .ant-input-number + .ant-form-text {
+    margin-left: 8px
+}
+
+form .ant-input-number-handler-wrap {
+    z-index: 2
+}
+
+form .ant-cascader-picker, form .ant-select {
+    width: 100%
+}
+
+form .ant-input-group .ant-cascader-picker, form .ant-input-group .ant-select {
+    width: auto
+}
+
+form .ant-input-group-wrapper, form :not(.ant-input-group-wrapper) > .ant-input-group {
+    display: inline-block;
+    vertical-align: middle
+}
+
+form:not(.ant-form-vertical) .ant-input-group-wrapper, form:not(.ant-form-vertical) :not(.ant-input-group-wrapper) > .ant-input-group {
+    position: relative;
+    top: -1px
+}
+
+.ant-col-24.ant-form-item-label, .ant-col-xl-24.ant-form-item-label, .ant-form-vertical .ant-form-item-label {
+    display: block;
+    margin: 0;
+    padding: 0 0 8px;
+    line-height: 1.5;
+    white-space: normal;
+    text-align: left
+}
+
+    .ant-col-24.ant-form-item-label label:after, .ant-col-xl-24.ant-form-item-label label:after, .ant-form-vertical .ant-form-item-label label:after {
+        display: none
+    }
+
+.ant-form-vertical .ant-form-item {
+    padding-bottom: 8px
+}
+
+.ant-form-vertical .ant-form-item-control {
+    line-height: 1.5
+}
+
+.ant-form-vertical .ant-form-explain {
+    margin-top: 2px;
+    margin-bottom: -5px
+}
+
+.ant-form-vertical .ant-form-extra {
+    margin-top: 2px;
+    margin-bottom: -4px
+}
+
+@media (max-width:575px) {
+    .ant-form-item-control-wrapper, .ant-form-item-label {
+        display: block;
+        width: 100%
+    }
+
+    .ant-form-item-label {
+        display: block;
+        margin: 0;
+        padding: 0 0 8px;
+        line-height: 1.5;
+        white-space: normal;
+        text-align: left
+    }
+
+        .ant-form-item-label label:after {
+            display: none
+        }
+
+    .ant-col-xs-24.ant-form-item-label {
+        display: block;
+        margin: 0;
+        padding: 0 0 8px;
+        line-height: 1.5;
+        white-space: normal;
+        text-align: left
+    }
+
+        .ant-col-xs-24.ant-form-item-label label:after {
+            display: none
+        }
+}
+
+@media (max-width:767px) {
+    .ant-col-sm-24.ant-form-item-label {
+        display: block;
+        margin: 0;
+        padding: 0 0 8px;
+        line-height: 1.5;
+        white-space: normal;
+        text-align: left
+    }
+
+        .ant-col-sm-24.ant-form-item-label label:after {
+            display: none
+        }
+}
+
+@media (max-width:991px) {
+    .ant-col-md-24.ant-form-item-label {
+        display: block;
+        margin: 0;
+        padding: 0 0 8px;
+        line-height: 1.5;
+        white-space: normal;
+        text-align: left
+    }
+
+        .ant-col-md-24.ant-form-item-label label:after {
+            display: none
+        }
+}
+
+@media (max-width:1199px) {
+    .ant-col-lg-24.ant-form-item-label {
+        display: block;
+        margin: 0;
+        padding: 0 0 8px;
+        line-height: 1.5;
+        white-space: normal;
+        text-align: left
+    }
+
+        .ant-col-lg-24.ant-form-item-label label:after {
+            display: none
+        }
+}
+
+@media (max-width:1599px) {
+    .ant-col-xl-24.ant-form-item-label {
+        display: block;
+        margin: 0;
+        padding: 0 0 8px;
+        line-height: 1.5;
+        white-space: normal;
+        text-align: left
+    }
+
+        .ant-col-xl-24.ant-form-item-label label:after {
+            display: none
+        }
+}
+
+.ant-form-inline .ant-form-item {
+    display: inline-block;
+    margin-right: 16px;
+    margin-bottom: 0
+}
+
+.ant-form-inline .ant-form-item-with-help {
+    margin-bottom: 24px
+}
+
+.ant-form-inline .ant-form-item > .ant-form-item-control-wrapper, .ant-form-inline .ant-form-item > .ant-form-item-label {
+    display: inline-block;
+    vertical-align: top
+}
+
+.ant-form-inline .ant-form-text, .ant-form-inline .has-feedback {
+    display: inline-block
+}
+
+.has-error.has-feedback .ant-form-item-children-icon, .has-success.has-feedback .ant-form-item-children-icon, .has-warning.has-feedback .ant-form-item-children-icon, .is-validating.has-feedback .ant-form-item-children-icon {
+    position: absolute;
+    top: 50%;
+    right: 0;
+    z-index: 1;
+    width: 32px;
+    height: 20px;
+    margin-top: -10px;
+    font-size: 14px;
+    line-height: 20px;
+    text-align: center;
+    visibility: visible;
+    -webkit-animation: zoomIn .3s cubic-bezier(.12,.4,.29,1.46);
+    animation: zoomIn .3s cubic-bezier(.12,.4,.29,1.46);
+    pointer-events: none
+}
+
+    .has-error.has-feedback .ant-form-item-children-icon svg, .has-success.has-feedback .ant-form-item-children-icon svg, .has-warning.has-feedback .ant-form-item-children-icon svg, .is-validating.has-feedback .ant-form-item-children-icon svg {
+        position: absolute;
+        top: 0;
+        right: 0;
+        bottom: 0;
+        left: 0;
+        margin: auto
+    }
+
+.has-success.has-feedback .ant-form-item-children-icon {
+    color: #52c41a;
+    -webkit-animation-name: diffZoomIn1 !important;
+    animation-name: diffZoomIn1 !important
+}
+
+.has-warning .ant-form-explain, .has-warning .ant-form-split {
+    color: #faad14
+}
+
+.has-warning .ant-input, .has-warning .ant-input:hover {
+    background-color: #fff;
+    border-color: #faad14
+}
+
+    .has-warning .ant-input:focus {
+        border-color: #ffc53d;
+        border-right-width: 1px !important;
+        outline: 0;
+        -webkit-box-shadow: 0 0 0 2px rgba(250,173,20,.2);
+        box-shadow: 0 0 0 2px rgba(250,173,20,.2)
+    }
+
+    .has-warning .ant-input:not([disabled]):hover {
+        border-color: #faad14
+    }
+
+.has-warning .ant-calendar-picker-open .ant-calendar-picker-input {
+    border-color: #ffc53d;
+    border-right-width: 1px !important;
+    outline: 0;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,173,20,.2);
+    box-shadow: 0 0 0 2px rgba(250,173,20,.2)
+}
+
+.has-warning .ant-input-affix-wrapper .ant-input, .has-warning .ant-input-affix-wrapper .ant-input:hover {
+    background-color: #fff;
+    border-color: #faad14
+}
+
+    .has-warning .ant-input-affix-wrapper .ant-input:focus {
+        border-color: #ffc53d;
+        border-right-width: 1px !important;
+        outline: 0;
+        -webkit-box-shadow: 0 0 0 2px rgba(250,173,20,.2);
+        box-shadow: 0 0 0 2px rgba(250,173,20,.2)
+    }
+
+.has-warning .ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {
+    border-color: #faad14
+}
+
+.has-warning .ant-input-prefix {
+    color: #faad14
+}
+
+.has-warning .ant-input-group-addon {
+    color: #faad14;
+    background-color: #fff;
+    border-color: #faad14
+}
+
+.has-warning .has-feedback {
+    color: #faad14
+}
+
+    .has-warning.has-feedback .ant-form-item-children-icon {
+        color: #faad14;
+        -webkit-animation-name: diffZoomIn3 !important;
+        animation-name: diffZoomIn3 !important
+    }
+
+.has-warning .ant-select-selection, .has-warning .ant-select-selection:hover {
+    border-color: #faad14
+}
+
+.has-warning .ant-select-focused .ant-select-selection, .has-warning .ant-select-open .ant-select-selection {
+    border-color: #ffc53d;
+    border-right-width: 1px !important;
+    outline: 0;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,173,20,.2);
+    box-shadow: 0 0 0 2px rgba(250,173,20,.2)
+}
+
+.has-warning .ant-calendar-picker-icon:after, .has-warning .ant-cascader-picker-arrow, .has-warning .ant-picker-icon:after, .has-warning .ant-select-arrow, .has-warning .ant-time-picker-icon:after {
+    color: #faad14
+}
+
+.has-warning .ant-input-number, .has-warning .ant-time-picker-input {
+    border-color: #faad14
+}
+
+    .has-warning .ant-input-number-focused, .has-warning .ant-input-number:focus, .has-warning .ant-time-picker-input-focused, .has-warning .ant-time-picker-input:focus {
+        border-color: #ffc53d;
+        border-right-width: 1px !important;
+        outline: 0;
+        -webkit-box-shadow: 0 0 0 2px rgba(250,173,20,.2);
+        box-shadow: 0 0 0 2px rgba(250,173,20,.2)
+    }
+
+    .has-warning .ant-input-number:not([disabled]):hover, .has-warning .ant-time-picker-input:not([disabled]):hover {
+        border-color: #faad14
+    }
+
+.has-warning .ant-cascader-picker:focus .ant-cascader-input {
+    border-color: #ffc53d;
+    border-right-width: 1px !important;
+    outline: 0;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,173,20,.2);
+    box-shadow: 0 0 0 2px rgba(250,173,20,.2)
+}
+
+.has-warning .ant-cascader-picker:hover .ant-cascader-input {
+    border-color: #faad14
+}
+
+.has-error .ant-form-explain, .has-error .ant-form-split {
+    color: #f5222d
+}
+
+.has-error .ant-input, .has-error .ant-input:hover {
+    background-color: #fff;
+    border-color: #f5222d
+}
+
+    .has-error .ant-input:focus {
+        border-color: #ff4d4f;
+        border-right-width: 1px !important;
+        outline: 0;
+        -webkit-box-shadow: 0 0 0 2px rgba(245,34,45,.2);
+        box-shadow: 0 0 0 2px rgba(245,34,45,.2)
+    }
+
+    .has-error .ant-input:not([disabled]):hover {
+        border-color: #f5222d
+    }
+
+.has-error .ant-calendar-picker-open .ant-calendar-picker-input {
+    border-color: #ff4d4f;
+    border-right-width: 1px !important;
+    outline: 0;
+    -webkit-box-shadow: 0 0 0 2px rgba(245,34,45,.2);
+    box-shadow: 0 0 0 2px rgba(245,34,45,.2)
+}
+
+.has-error .ant-input-affix-wrapper .ant-input, .has-error .ant-input-affix-wrapper .ant-input:hover {
+    background-color: #fff;
+    border-color: #f5222d
+}
+
+    .has-error .ant-input-affix-wrapper .ant-input:focus {
+        border-color: #ff4d4f;
+        border-right-width: 1px !important;
+        outline: 0;
+        -webkit-box-shadow: 0 0 0 2px rgba(245,34,45,.2);
+        box-shadow: 0 0 0 2px rgba(245,34,45,.2)
+    }
+
+.has-error .ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {
+    border-color: #f5222d
+}
+
+.has-error .ant-input-prefix {
+    color: #f5222d
+}
+
+.has-error .ant-input-group-addon {
+    color: #f5222d;
+    background-color: #fff;
+    border-color: #f5222d
+}
+
+.has-error .has-feedback {
+    color: #f5222d
+}
+
+    .has-error.has-feedback .ant-form-item-children-icon {
+        color: #f5222d;
+        -webkit-animation-name: diffZoomIn2 !important;
+        animation-name: diffZoomIn2 !important
+    }
+
+.has-error .ant-select-selection, .has-error .ant-select-selection:hover {
+    border-color: #f5222d
+}
+
+.has-error .ant-select-focused .ant-select-selection, .has-error .ant-select-open .ant-select-selection {
+    border-color: #ff4d4f;
+    border-right-width: 1px !important;
+    outline: 0;
+    -webkit-box-shadow: 0 0 0 2px rgba(245,34,45,.2);
+    box-shadow: 0 0 0 2px rgba(245,34,45,.2)
+}
+
+.has-error .ant-select.ant-select-auto-complete .ant-input:focus {
+    border-color: #f5222d
+}
+
+.has-error .ant-input-group-addon .ant-select-selection {
+    border-color: transparent;
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+.has-error .ant-calendar-picker-icon:after, .has-error .ant-cascader-picker-arrow, .has-error .ant-picker-icon:after, .has-error .ant-select-arrow, .has-error .ant-time-picker-icon:after {
+    color: #f5222d
+}
+
+.has-error .ant-input-number, .has-error .ant-time-picker-input {
+    border-color: #f5222d
+}
+
+    .has-error .ant-input-number-focused, .has-error .ant-input-number:focus, .has-error .ant-time-picker-input-focused, .has-error .ant-time-picker-input:focus {
+        border-color: #ff4d4f;
+        border-right-width: 1px !important;
+        outline: 0;
+        -webkit-box-shadow: 0 0 0 2px rgba(245,34,45,.2);
+        box-shadow: 0 0 0 2px rgba(245,34,45,.2)
+    }
+
+    .has-error .ant-input-number:not([disabled]):hover, .has-error .ant-mention-wrapper .ant-mention-editor, .has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):hover, .has-error .ant-time-picker-input:not([disabled]):hover {
+        border-color: #f5222d
+    }
+
+        .has-error .ant-cascader-picker:focus .ant-cascader-input, .has-error .ant-mention-wrapper.ant-mention-active:not([disabled]) .ant-mention-editor, .has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):focus {
+            border-color: #ff4d4f;
+            border-right-width: 1px !important;
+            outline: 0;
+            -webkit-box-shadow: 0 0 0 2px rgba(245,34,45,.2);
+            box-shadow: 0 0 0 2px rgba(245,34,45,.2)
+        }
+
+.has-error .ant-cascader-picker:hover .ant-cascader-input, .has-error .ant-transfer-list {
+    border-color: #f5222d
+}
+
+.has-error .ant-transfer-list-search:not([disabled]) {
+    border-color: #d9d9d9
+}
+
+    .has-error .ant-transfer-list-search:not([disabled]):hover {
+        border-color: #ff7a45;
+        border-right-width: 1px !important
+    }
+
+    .has-error .ant-transfer-list-search:not([disabled]):focus {
+        border-color: #ff7a45;
+        border-right-width: 1px !important;
+        outline: 0;
+        -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+        box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+    }
+
+.is-validating.has-feedback .ant-form-item-children-icon {
+    display: inline-block;
+    color: #fa541c
+}
+
+.ant-advanced-search-form .ant-form-item {
+    margin-bottom: 24px
+}
+
+.ant-advanced-search-form .ant-form-item-with-help {
+    margin-bottom: 5px
+}
+
+.show-help-appear, .show-help-enter, .show-help-leave {
+    -webkit-animation-duration: .3s;
+    animation-duration: .3s;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+    .show-help-appear.show-help-appear-active, .show-help-enter.show-help-enter-active {
+        -webkit-animation-name: antShowHelpIn;
+        animation-name: antShowHelpIn;
+        -webkit-animation-play-state: running;
+        animation-play-state: running
+    }
+
+    .show-help-leave.show-help-leave-active {
+        -webkit-animation-name: antShowHelpOut;
+        animation-name: antShowHelpOut;
+        -webkit-animation-play-state: running;
+        animation-play-state: running;
+        pointer-events: none
+    }
+
+.show-help-appear, .show-help-enter {
+    opacity: 0
+}
+
+.show-help-appear, .show-help-enter, .show-help-leave {
+    -webkit-animation-timing-function: cubic-bezier(.645,.045,.355,1);
+    animation-timing-function: cubic-bezier(.645,.045,.355,1)
+}
+
+@keyframes antShowHelpIn {
+    0% {
+        -webkit-transform: translateY(-5px);
+        transform: translateY(-5px);
+        opacity: 0
+    }
+
+    to {
+        -webkit-transform: translateY(0);
+        transform: translateY(0);
+        opacity: 1
+    }
+}
+
+@keyframes antShowHelpOut {
+    to {
+        -webkit-transform: translateY(-5px);
+        transform: translateY(-5px);
+        opacity: 0
+    }
+}
+
+@keyframes diffZoomIn1 {
+    0% {
+        -webkit-transform: scale(0);
+        transform: scale(0)
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+}
+
+@keyframes diffZoomIn2 {
+    0% {
+        -webkit-transform: scale(0);
+        transform: scale(0)
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+}
+
+@keyframes diffZoomIn3 {
+    0% {
+        -webkit-transform: scale(0);
+        transform: scale(0)
+    }
+
+    to {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+}
+
+.ant-row {
+    position: relative;
+    height: auto;
+    margin-right: 0;
+    margin-left: 0;
+    zoom: 1;
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+    .ant-row:after, .ant-row:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-row + .ant-row:before, .ant-row:after {
+        clear: both
+    }
+
+.ant-row-flex {
+    -webkit-box-orient: horizontal;
+    -webkit-box-direction: normal;
+    -ms-flex-flow: row wrap;
+    flex-flow: row wrap
+}
+
+    .ant-row-flex, .ant-row-flex:after, .ant-row-flex:before {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex
+    }
+
+.ant-row-flex-start {
+    -webkit-box-pack: start;
+    -ms-flex-pack: start;
+    justify-content: flex-start
+}
+
+.ant-row-flex-center {
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center
+}
+
+.ant-row-flex-end {
+    -webkit-box-pack: end;
+    -ms-flex-pack: end;
+    justify-content: flex-end
+}
+
+.ant-row-flex-space-between {
+    -webkit-box-pack: justify;
+    -ms-flex-pack: justify;
+    justify-content: space-between
+}
+
+.ant-row-flex-space-around {
+    -ms-flex-pack: distribute;
+    justify-content: space-around
+}
+
+.ant-row-flex-top {
+    -webkit-box-align: start;
+    -ms-flex-align: start;
+    align-items: flex-start
+}
+
+.ant-row-flex-middle {
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center
+}
+
+.ant-row-flex-bottom {
+    -webkit-box-align: end;
+    -ms-flex-align: end;
+    align-items: flex-end
+}
+
+.ant-col {
+    position: relative;
+    min-height: 1px
+}
+
+.ant-col-1, .ant-col-2, .ant-col-3, .ant-col-4, .ant-col-5, .ant-col-6, .ant-col-7, .ant-col-8, .ant-col-9, .ant-col-10, .ant-col-11, .ant-col-12, .ant-col-13, .ant-col-14, .ant-col-15, .ant-col-16, .ant-col-17, .ant-col-18, .ant-col-19, .ant-col-20, .ant-col-21, .ant-col-22, .ant-col-23, .ant-col-24, .ant-col-lg-1, .ant-col-lg-2, .ant-col-lg-3, .ant-col-lg-4, .ant-col-lg-5, .ant-col-lg-6, .ant-col-lg-7, .ant-col-lg-8, .ant-col-lg-9, .ant-col-lg-10, .ant-col-lg-11, .ant-col-lg-12, .ant-col-lg-13, .ant-col-lg-14, .ant-col-lg-15, .ant-col-lg-16, .ant-col-lg-17, .ant-col-lg-18, .ant-col-lg-19, .ant-col-lg-20, .ant-col-lg-21, .ant-col-lg-22, .ant-col-lg-23, .ant-col-lg-24, .ant-col-md-1, .ant-col-md-2, .ant-col-md-3, .ant-col-md-4, .ant-col-md-5, .ant-col-md-6, .ant-col-md-7, .ant-col-md-8, .ant-col-md-9, .ant-col-md-10, .ant-col-md-11, .ant-col-md-12, .ant-col-md-13, .ant-col-md-14, .ant-col-md-15, .ant-col-md-16, .ant-col-md-17, .ant-col-md-18, .ant-col-md-19, .ant-col-md-20, .ant-col-md-21, .ant-col-md-22, .ant-col-md-23, .ant-col-md-24, .ant-col-sm-1, .ant-col-sm-2, .ant-col-sm-3, .ant-col-sm-4, .ant-col-sm-5, .ant-col-sm-6, .ant-col-sm-7, .ant-col-sm-8, .ant-col-sm-9, .ant-col-sm-10, .ant-col-sm-11, .ant-col-sm-12, .ant-col-sm-13, .ant-col-sm-14, .ant-col-sm-15, .ant-col-sm-16, .ant-col-sm-17, .ant-col-sm-18, .ant-col-sm-19, .ant-col-sm-20, .ant-col-sm-21, .ant-col-sm-22, .ant-col-sm-23, .ant-col-sm-24, .ant-col-xs-1, .ant-col-xs-2, .ant-col-xs-3, .ant-col-xs-4, .ant-col-xs-5, .ant-col-xs-6, .ant-col-xs-7, .ant-col-xs-8, .ant-col-xs-9, .ant-col-xs-10, .ant-col-xs-11, .ant-col-xs-12, .ant-col-xs-13, .ant-col-xs-14, .ant-col-xs-15, .ant-col-xs-16, .ant-col-xs-17, .ant-col-xs-18, .ant-col-xs-19, .ant-col-xs-20, .ant-col-xs-21, .ant-col-xs-22, .ant-col-xs-23, .ant-col-xs-24 {
+    position: relative;
+    padding-right: 0;
+    padding-left: 0
+}
+
+.ant-col-1, .ant-col-2, .ant-col-3, .ant-col-4, .ant-col-5, .ant-col-6, .ant-col-7, .ant-col-8, .ant-col-9, .ant-col-10, .ant-col-11, .ant-col-12, .ant-col-13, .ant-col-14, .ant-col-15, .ant-col-16, .ant-col-17, .ant-col-18, .ant-col-19, .ant-col-20, .ant-col-21, .ant-col-22, .ant-col-23, .ant-col-24 {
+    -webkit-box-flex: 0;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    float: left
+}
+
+.ant-col-24 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 100%
+}
+
+.ant-col-push-24 {
+    left: 100%
+}
+
+.ant-col-pull-24 {
+    right: 100%
+}
+
+.ant-col-offset-24 {
+    margin-left: 100%
+}
+
+.ant-col-order-24 {
+    -webkit-box-ordinal-group: 25;
+    -ms-flex-order: 24;
+    order: 24
+}
+
+.ant-col-23 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 95.83333333%
+}
+
+.ant-col-push-23 {
+    left: 95.83333333%
+}
+
+.ant-col-pull-23 {
+    right: 95.83333333%
+}
+
+.ant-col-offset-23 {
+    margin-left: 95.83333333%
+}
+
+.ant-col-order-23 {
+    -webkit-box-ordinal-group: 24;
+    -ms-flex-order: 23;
+    order: 23
+}
+
+.ant-col-22 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 91.66666667%
+}
+
+.ant-col-push-22 {
+    left: 91.66666667%
+}
+
+.ant-col-pull-22 {
+    right: 91.66666667%
+}
+
+.ant-col-offset-22 {
+    margin-left: 91.66666667%
+}
+
+.ant-col-order-22 {
+    -webkit-box-ordinal-group: 23;
+    -ms-flex-order: 22;
+    order: 22
+}
+
+.ant-col-21 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 87.5%
+}
+
+.ant-col-push-21 {
+    left: 87.5%
+}
+
+.ant-col-pull-21 {
+    right: 87.5%
+}
+
+.ant-col-offset-21 {
+    margin-left: 87.5%
+}
+
+.ant-col-order-21 {
+    -webkit-box-ordinal-group: 22;
+    -ms-flex-order: 21;
+    order: 21
+}
+
+.ant-col-20 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 83.33333333%
+}
+
+.ant-col-push-20 {
+    left: 83.33333333%
+}
+
+.ant-col-pull-20 {
+    right: 83.33333333%
+}
+
+.ant-col-offset-20 {
+    margin-left: 83.33333333%
+}
+
+.ant-col-order-20 {
+    -webkit-box-ordinal-group: 21;
+    -ms-flex-order: 20;
+    order: 20
+}
+
+.ant-col-19 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 79.16666667%
+}
+
+.ant-col-push-19 {
+    left: 79.16666667%
+}
+
+.ant-col-pull-19 {
+    right: 79.16666667%
+}
+
+.ant-col-offset-19 {
+    margin-left: 79.16666667%
+}
+
+.ant-col-order-19 {
+    -webkit-box-ordinal-group: 20;
+    -ms-flex-order: 19;
+    order: 19
+}
+
+.ant-col-18 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 75%
+}
+
+.ant-col-push-18 {
+    left: 75%
+}
+
+.ant-col-pull-18 {
+    right: 75%
+}
+
+.ant-col-offset-18 {
+    margin-left: 75%
+}
+
+.ant-col-order-18 {
+    -webkit-box-ordinal-group: 19;
+    -ms-flex-order: 18;
+    order: 18
+}
+
+.ant-col-17 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 70.83333333%
+}
+
+.ant-col-push-17 {
+    left: 70.83333333%
+}
+
+.ant-col-pull-17 {
+    right: 70.83333333%
+}
+
+.ant-col-offset-17 {
+    margin-left: 70.83333333%
+}
+
+.ant-col-order-17 {
+    -webkit-box-ordinal-group: 18;
+    -ms-flex-order: 17;
+    order: 17
+}
+
+.ant-col-16 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 66.66666667%
+}
+
+.ant-col-push-16 {
+    left: 66.66666667%
+}
+
+.ant-col-pull-16 {
+    right: 66.66666667%
+}
+
+.ant-col-offset-16 {
+    margin-left: 66.66666667%
+}
+
+.ant-col-order-16 {
+    -webkit-box-ordinal-group: 17;
+    -ms-flex-order: 16;
+    order: 16
+}
+
+.ant-col-15 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 62.5%
+}
+
+.ant-col-push-15 {
+    left: 62.5%
+}
+
+.ant-col-pull-15 {
+    right: 62.5%
+}
+
+.ant-col-offset-15 {
+    margin-left: 62.5%
+}
+
+.ant-col-order-15 {
+    -webkit-box-ordinal-group: 16;
+    -ms-flex-order: 15;
+    order: 15
+}
+
+.ant-col-14 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 58.33333333%
+}
+
+.ant-col-push-14 {
+    left: 58.33333333%
+}
+
+.ant-col-pull-14 {
+    right: 58.33333333%
+}
+
+.ant-col-offset-14 {
+    margin-left: 58.33333333%
+}
+
+.ant-col-order-14 {
+    -webkit-box-ordinal-group: 15;
+    -ms-flex-order: 14;
+    order: 14
+}
+
+.ant-col-13 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 54.16666667%
+}
+
+.ant-col-push-13 {
+    left: 54.16666667%
+}
+
+.ant-col-pull-13 {
+    right: 54.16666667%
+}
+
+.ant-col-offset-13 {
+    margin-left: 54.16666667%
+}
+
+.ant-col-order-13 {
+    -webkit-box-ordinal-group: 14;
+    -ms-flex-order: 13;
+    order: 13
+}
+
+.ant-col-12 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 50%
+}
+
+.ant-col-push-12 {
+    left: 50%
+}
+
+.ant-col-pull-12 {
+    right: 50%
+}
+
+.ant-col-offset-12 {
+    margin-left: 50%
+}
+
+.ant-col-order-12 {
+    -webkit-box-ordinal-group: 13;
+    -ms-flex-order: 12;
+    order: 12
+}
+
+.ant-col-11 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 45.83333333%
+}
+
+.ant-col-push-11 {
+    left: 45.83333333%
+}
+
+.ant-col-pull-11 {
+    right: 45.83333333%
+}
+
+.ant-col-offset-11 {
+    margin-left: 45.83333333%
+}
+
+.ant-col-order-11 {
+    -webkit-box-ordinal-group: 12;
+    -ms-flex-order: 11;
+    order: 11
+}
+
+.ant-col-10 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 41.66666667%
+}
+
+.ant-col-push-10 {
+    left: 41.66666667%
+}
+
+.ant-col-pull-10 {
+    right: 41.66666667%
+}
+
+.ant-col-offset-10 {
+    margin-left: 41.66666667%
+}
+
+.ant-col-order-10 {
+    -webkit-box-ordinal-group: 11;
+    -ms-flex-order: 10;
+    order: 10
+}
+
+.ant-col-9 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 37.5%
+}
+
+.ant-col-push-9 {
+    left: 37.5%
+}
+
+.ant-col-pull-9 {
+    right: 37.5%
+}
+
+.ant-col-offset-9 {
+    margin-left: 37.5%
+}
+
+.ant-col-order-9 {
+    -webkit-box-ordinal-group: 10;
+    -ms-flex-order: 9;
+    order: 9
+}
+
+.ant-col-8 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 33.33333333%
+}
+
+.ant-col-push-8 {
+    left: 33.33333333%
+}
+
+.ant-col-pull-8 {
+    right: 33.33333333%
+}
+
+.ant-col-offset-8 {
+    margin-left: 33.33333333%
+}
+
+.ant-col-order-8 {
+    -webkit-box-ordinal-group: 9;
+    -ms-flex-order: 8;
+    order: 8
+}
+
+.ant-col-7 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 29.16666667%
+}
+
+.ant-col-push-7 {
+    left: 29.16666667%
+}
+
+.ant-col-pull-7 {
+    right: 29.16666667%
+}
+
+.ant-col-offset-7 {
+    margin-left: 29.16666667%
+}
+
+.ant-col-order-7 {
+    -webkit-box-ordinal-group: 8;
+    -ms-flex-order: 7;
+    order: 7
+}
+
+.ant-col-6 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 25%
+}
+
+.ant-col-push-6 {
+    left: 25%
+}
+
+.ant-col-pull-6 {
+    right: 25%
+}
+
+.ant-col-offset-6 {
+    margin-left: 25%
+}
+
+.ant-col-order-6 {
+    -webkit-box-ordinal-group: 7;
+    -ms-flex-order: 6;
+    order: 6
+}
+
+.ant-col-5 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 20.83333333%
+}
+
+.ant-col-push-5 {
+    left: 20.83333333%
+}
+
+.ant-col-pull-5 {
+    right: 20.83333333%
+}
+
+.ant-col-offset-5 {
+    margin-left: 20.83333333%
+}
+
+.ant-col-order-5 {
+    -webkit-box-ordinal-group: 6;
+    -ms-flex-order: 5;
+    order: 5
+}
+
+.ant-col-4 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 16.66666667%
+}
+
+.ant-col-push-4 {
+    left: 16.66666667%
+}
+
+.ant-col-pull-4 {
+    right: 16.66666667%
+}
+
+.ant-col-offset-4 {
+    margin-left: 16.66666667%
+}
+
+.ant-col-order-4 {
+    -webkit-box-ordinal-group: 5;
+    -ms-flex-order: 4;
+    order: 4
+}
+
+.ant-col-3 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 12.5%
+}
+
+.ant-col-push-3 {
+    left: 12.5%
+}
+
+.ant-col-pull-3 {
+    right: 12.5%
+}
+
+.ant-col-offset-3 {
+    margin-left: 12.5%
+}
+
+.ant-col-order-3 {
+    -webkit-box-ordinal-group: 4;
+    -ms-flex-order: 3;
+    order: 3
+}
+
+.ant-col-2 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 8.33333333%
+}
+
+.ant-col-push-2 {
+    left: 8.33333333%
+}
+
+.ant-col-pull-2 {
+    right: 8.33333333%
+}
+
+.ant-col-offset-2 {
+    margin-left: 8.33333333%
+}
+
+.ant-col-order-2 {
+    -webkit-box-ordinal-group: 3;
+    -ms-flex-order: 2;
+    order: 2
+}
+
+.ant-col-1 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 4.16666667%
+}
+
+.ant-col-push-1 {
+    left: 4.16666667%
+}
+
+.ant-col-pull-1 {
+    right: 4.16666667%
+}
+
+.ant-col-offset-1 {
+    margin-left: 4.16666667%
+}
+
+.ant-col-order-1 {
+    -webkit-box-ordinal-group: 2;
+    -ms-flex-order: 1;
+    order: 1
+}
+
+.ant-col-0 {
+    display: none
+}
+
+.ant-col-offset-0 {
+    margin-left: 0
+}
+
+.ant-col-order-0 {
+    -webkit-box-ordinal-group: 1;
+    -ms-flex-order: 0;
+    order: 0
+}
+
+.ant-col-xs-1, .ant-col-xs-2, .ant-col-xs-3, .ant-col-xs-4, .ant-col-xs-5, .ant-col-xs-6, .ant-col-xs-7, .ant-col-xs-8, .ant-col-xs-9, .ant-col-xs-10, .ant-col-xs-11, .ant-col-xs-12, .ant-col-xs-13, .ant-col-xs-14, .ant-col-xs-15, .ant-col-xs-16, .ant-col-xs-17, .ant-col-xs-18, .ant-col-xs-19, .ant-col-xs-20, .ant-col-xs-21, .ant-col-xs-22, .ant-col-xs-23, .ant-col-xs-24 {
+    -webkit-box-flex: 0;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    float: left
+}
+
+.ant-col-xs-24 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 100%
+}
+
+.ant-col-xs-push-24 {
+    left: 100%
+}
+
+.ant-col-xs-pull-24 {
+    right: 100%
+}
+
+.ant-col-xs-offset-24 {
+    margin-left: 100%
+}
+
+.ant-col-xs-order-24 {
+    -webkit-box-ordinal-group: 25;
+    -ms-flex-order: 24;
+    order: 24
+}
+
+.ant-col-xs-23 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 95.83333333%
+}
+
+.ant-col-xs-push-23 {
+    left: 95.83333333%
+}
+
+.ant-col-xs-pull-23 {
+    right: 95.83333333%
+}
+
+.ant-col-xs-offset-23 {
+    margin-left: 95.83333333%
+}
+
+.ant-col-xs-order-23 {
+    -webkit-box-ordinal-group: 24;
+    -ms-flex-order: 23;
+    order: 23
+}
+
+.ant-col-xs-22 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 91.66666667%
+}
+
+.ant-col-xs-push-22 {
+    left: 91.66666667%
+}
+
+.ant-col-xs-pull-22 {
+    right: 91.66666667%
+}
+
+.ant-col-xs-offset-22 {
+    margin-left: 91.66666667%
+}
+
+.ant-col-xs-order-22 {
+    -webkit-box-ordinal-group: 23;
+    -ms-flex-order: 22;
+    order: 22
+}
+
+.ant-col-xs-21 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 87.5%
+}
+
+.ant-col-xs-push-21 {
+    left: 87.5%
+}
+
+.ant-col-xs-pull-21 {
+    right: 87.5%
+}
+
+.ant-col-xs-offset-21 {
+    margin-left: 87.5%
+}
+
+.ant-col-xs-order-21 {
+    -webkit-box-ordinal-group: 22;
+    -ms-flex-order: 21;
+    order: 21
+}
+
+.ant-col-xs-20 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 83.33333333%
+}
+
+.ant-col-xs-push-20 {
+    left: 83.33333333%
+}
+
+.ant-col-xs-pull-20 {
+    right: 83.33333333%
+}
+
+.ant-col-xs-offset-20 {
+    margin-left: 83.33333333%
+}
+
+.ant-col-xs-order-20 {
+    -webkit-box-ordinal-group: 21;
+    -ms-flex-order: 20;
+    order: 20
+}
+
+.ant-col-xs-19 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 79.16666667%
+}
+
+.ant-col-xs-push-19 {
+    left: 79.16666667%
+}
+
+.ant-col-xs-pull-19 {
+    right: 79.16666667%
+}
+
+.ant-col-xs-offset-19 {
+    margin-left: 79.16666667%
+}
+
+.ant-col-xs-order-19 {
+    -webkit-box-ordinal-group: 20;
+    -ms-flex-order: 19;
+    order: 19
+}
+
+.ant-col-xs-18 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 75%
+}
+
+.ant-col-xs-push-18 {
+    left: 75%
+}
+
+.ant-col-xs-pull-18 {
+    right: 75%
+}
+
+.ant-col-xs-offset-18 {
+    margin-left: 75%
+}
+
+.ant-col-xs-order-18 {
+    -webkit-box-ordinal-group: 19;
+    -ms-flex-order: 18;
+    order: 18
+}
+
+.ant-col-xs-17 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 70.83333333%
+}
+
+.ant-col-xs-push-17 {
+    left: 70.83333333%
+}
+
+.ant-col-xs-pull-17 {
+    right: 70.83333333%
+}
+
+.ant-col-xs-offset-17 {
+    margin-left: 70.83333333%
+}
+
+.ant-col-xs-order-17 {
+    -webkit-box-ordinal-group: 18;
+    -ms-flex-order: 17;
+    order: 17
+}
+
+.ant-col-xs-16 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 66.66666667%
+}
+
+.ant-col-xs-push-16 {
+    left: 66.66666667%
+}
+
+.ant-col-xs-pull-16 {
+    right: 66.66666667%
+}
+
+.ant-col-xs-offset-16 {
+    margin-left: 66.66666667%
+}
+
+.ant-col-xs-order-16 {
+    -webkit-box-ordinal-group: 17;
+    -ms-flex-order: 16;
+    order: 16
+}
+
+.ant-col-xs-15 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 62.5%
+}
+
+.ant-col-xs-push-15 {
+    left: 62.5%
+}
+
+.ant-col-xs-pull-15 {
+    right: 62.5%
+}
+
+.ant-col-xs-offset-15 {
+    margin-left: 62.5%
+}
+
+.ant-col-xs-order-15 {
+    -webkit-box-ordinal-group: 16;
+    -ms-flex-order: 15;
+    order: 15
+}
+
+.ant-col-xs-14 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 58.33333333%
+}
+
+.ant-col-xs-push-14 {
+    left: 58.33333333%
+}
+
+.ant-col-xs-pull-14 {
+    right: 58.33333333%
+}
+
+.ant-col-xs-offset-14 {
+    margin-left: 58.33333333%
+}
+
+.ant-col-xs-order-14 {
+    -webkit-box-ordinal-group: 15;
+    -ms-flex-order: 14;
+    order: 14
+}
+
+.ant-col-xs-13 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 54.16666667%
+}
+
+.ant-col-xs-push-13 {
+    left: 54.16666667%
+}
+
+.ant-col-xs-pull-13 {
+    right: 54.16666667%
+}
+
+.ant-col-xs-offset-13 {
+    margin-left: 54.16666667%
+}
+
+.ant-col-xs-order-13 {
+    -webkit-box-ordinal-group: 14;
+    -ms-flex-order: 13;
+    order: 13
+}
+
+.ant-col-xs-12 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 50%
+}
+
+.ant-col-xs-push-12 {
+    left: 50%
+}
+
+.ant-col-xs-pull-12 {
+    right: 50%
+}
+
+.ant-col-xs-offset-12 {
+    margin-left: 50%
+}
+
+.ant-col-xs-order-12 {
+    -webkit-box-ordinal-group: 13;
+    -ms-flex-order: 12;
+    order: 12
+}
+
+.ant-col-xs-11 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 45.83333333%
+}
+
+.ant-col-xs-push-11 {
+    left: 45.83333333%
+}
+
+.ant-col-xs-pull-11 {
+    right: 45.83333333%
+}
+
+.ant-col-xs-offset-11 {
+    margin-left: 45.83333333%
+}
+
+.ant-col-xs-order-11 {
+    -webkit-box-ordinal-group: 12;
+    -ms-flex-order: 11;
+    order: 11
+}
+
+.ant-col-xs-10 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 41.66666667%
+}
+
+.ant-col-xs-push-10 {
+    left: 41.66666667%
+}
+
+.ant-col-xs-pull-10 {
+    right: 41.66666667%
+}
+
+.ant-col-xs-offset-10 {
+    margin-left: 41.66666667%
+}
+
+.ant-col-xs-order-10 {
+    -webkit-box-ordinal-group: 11;
+    -ms-flex-order: 10;
+    order: 10
+}
+
+.ant-col-xs-9 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 37.5%
+}
+
+.ant-col-xs-push-9 {
+    left: 37.5%
+}
+
+.ant-col-xs-pull-9 {
+    right: 37.5%
+}
+
+.ant-col-xs-offset-9 {
+    margin-left: 37.5%
+}
+
+.ant-col-xs-order-9 {
+    -webkit-box-ordinal-group: 10;
+    -ms-flex-order: 9;
+    order: 9
+}
+
+.ant-col-xs-8 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 33.33333333%
+}
+
+.ant-col-xs-push-8 {
+    left: 33.33333333%
+}
+
+.ant-col-xs-pull-8 {
+    right: 33.33333333%
+}
+
+.ant-col-xs-offset-8 {
+    margin-left: 33.33333333%
+}
+
+.ant-col-xs-order-8 {
+    -webkit-box-ordinal-group: 9;
+    -ms-flex-order: 8;
+    order: 8
+}
+
+.ant-col-xs-7 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 29.16666667%
+}
+
+.ant-col-xs-push-7 {
+    left: 29.16666667%
+}
+
+.ant-col-xs-pull-7 {
+    right: 29.16666667%
+}
+
+.ant-col-xs-offset-7 {
+    margin-left: 29.16666667%
+}
+
+.ant-col-xs-order-7 {
+    -webkit-box-ordinal-group: 8;
+    -ms-flex-order: 7;
+    order: 7
+}
+
+.ant-col-xs-6 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 25%
+}
+
+.ant-col-xs-push-6 {
+    left: 25%
+}
+
+.ant-col-xs-pull-6 {
+    right: 25%
+}
+
+.ant-col-xs-offset-6 {
+    margin-left: 25%
+}
+
+.ant-col-xs-order-6 {
+    -webkit-box-ordinal-group: 7;
+    -ms-flex-order: 6;
+    order: 6
+}
+
+.ant-col-xs-5 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 20.83333333%
+}
+
+.ant-col-xs-push-5 {
+    left: 20.83333333%
+}
+
+.ant-col-xs-pull-5 {
+    right: 20.83333333%
+}
+
+.ant-col-xs-offset-5 {
+    margin-left: 20.83333333%
+}
+
+.ant-col-xs-order-5 {
+    -webkit-box-ordinal-group: 6;
+    -ms-flex-order: 5;
+    order: 5
+}
+
+.ant-col-xs-4 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 16.66666667%
+}
+
+.ant-col-xs-push-4 {
+    left: 16.66666667%
+}
+
+.ant-col-xs-pull-4 {
+    right: 16.66666667%
+}
+
+.ant-col-xs-offset-4 {
+    margin-left: 16.66666667%
+}
+
+.ant-col-xs-order-4 {
+    -webkit-box-ordinal-group: 5;
+    -ms-flex-order: 4;
+    order: 4
+}
+
+.ant-col-xs-3 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 12.5%
+}
+
+.ant-col-xs-push-3 {
+    left: 12.5%
+}
+
+.ant-col-xs-pull-3 {
+    right: 12.5%
+}
+
+.ant-col-xs-offset-3 {
+    margin-left: 12.5%
+}
+
+.ant-col-xs-order-3 {
+    -webkit-box-ordinal-group: 4;
+    -ms-flex-order: 3;
+    order: 3
+}
+
+.ant-col-xs-2 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 8.33333333%
+}
+
+.ant-col-xs-push-2 {
+    left: 8.33333333%
+}
+
+.ant-col-xs-pull-2 {
+    right: 8.33333333%
+}
+
+.ant-col-xs-offset-2 {
+    margin-left: 8.33333333%
+}
+
+.ant-col-xs-order-2 {
+    -webkit-box-ordinal-group: 3;
+    -ms-flex-order: 2;
+    order: 2
+}
+
+.ant-col-xs-1 {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 4.16666667%
+}
+
+.ant-col-xs-push-1 {
+    left: 4.16666667%
+}
+
+.ant-col-xs-pull-1 {
+    right: 4.16666667%
+}
+
+.ant-col-xs-offset-1 {
+    margin-left: 4.16666667%
+}
+
+.ant-col-xs-order-1 {
+    -webkit-box-ordinal-group: 2;
+    -ms-flex-order: 1;
+    order: 1
+}
+
+.ant-col-xs-0 {
+    display: none
+}
+
+.ant-col-push-0 {
+    left: auto
+}
+
+.ant-col-pull-0 {
+    right: auto
+}
+
+.ant-col-xs-push-0 {
+    left: auto
+}
+
+.ant-col-xs-pull-0 {
+    right: auto
+}
+
+.ant-col-xs-offset-0 {
+    margin-left: 0
+}
+
+.ant-col-xs-order-0 {
+    -webkit-box-ordinal-group: 1;
+    -ms-flex-order: 0;
+    order: 0
+}
+
+@media (min-width:576px) {
+    .ant-col-sm-1, .ant-col-sm-2, .ant-col-sm-3, .ant-col-sm-4, .ant-col-sm-5, .ant-col-sm-6, .ant-col-sm-7, .ant-col-sm-8, .ant-col-sm-9, .ant-col-sm-10, .ant-col-sm-11, .ant-col-sm-12, .ant-col-sm-13, .ant-col-sm-14, .ant-col-sm-15, .ant-col-sm-16, .ant-col-sm-17, .ant-col-sm-18, .ant-col-sm-19, .ant-col-sm-20, .ant-col-sm-21, .ant-col-sm-22, .ant-col-sm-23, .ant-col-sm-24 {
+        -webkit-box-flex: 0;
+        -ms-flex: 0 0 auto;
+        flex: 0 0 auto;
+        float: left
+    }
+
+    .ant-col-sm-24 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 100%
+    }
+
+    .ant-col-sm-push-24 {
+        left: 100%
+    }
+
+    .ant-col-sm-pull-24 {
+        right: 100%
+    }
+
+    .ant-col-sm-offset-24 {
+        margin-left: 100%
+    }
+
+    .ant-col-sm-order-24 {
+        -webkit-box-ordinal-group: 25;
+        -ms-flex-order: 24;
+        order: 24
+    }
+
+    .ant-col-sm-23 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 95.83333333%
+    }
+
+    .ant-col-sm-push-23 {
+        left: 95.83333333%
+    }
+
+    .ant-col-sm-pull-23 {
+        right: 95.83333333%
+    }
+
+    .ant-col-sm-offset-23 {
+        margin-left: 95.83333333%
+    }
+
+    .ant-col-sm-order-23 {
+        -webkit-box-ordinal-group: 24;
+        -ms-flex-order: 23;
+        order: 23
+    }
+
+    .ant-col-sm-22 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 91.66666667%
+    }
+
+    .ant-col-sm-push-22 {
+        left: 91.66666667%
+    }
+
+    .ant-col-sm-pull-22 {
+        right: 91.66666667%
+    }
+
+    .ant-col-sm-offset-22 {
+        margin-left: 91.66666667%
+    }
+
+    .ant-col-sm-order-22 {
+        -webkit-box-ordinal-group: 23;
+        -ms-flex-order: 22;
+        order: 22
+    }
+
+    .ant-col-sm-21 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 87.5%
+    }
+
+    .ant-col-sm-push-21 {
+        left: 87.5%
+    }
+
+    .ant-col-sm-pull-21 {
+        right: 87.5%
+    }
+
+    .ant-col-sm-offset-21 {
+        margin-left: 87.5%
+    }
+
+    .ant-col-sm-order-21 {
+        -webkit-box-ordinal-group: 22;
+        -ms-flex-order: 21;
+        order: 21
+    }
+
+    .ant-col-sm-20 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 83.33333333%
+    }
+
+    .ant-col-sm-push-20 {
+        left: 83.33333333%
+    }
+
+    .ant-col-sm-pull-20 {
+        right: 83.33333333%
+    }
+
+    .ant-col-sm-offset-20 {
+        margin-left: 83.33333333%
+    }
+
+    .ant-col-sm-order-20 {
+        -webkit-box-ordinal-group: 21;
+        -ms-flex-order: 20;
+        order: 20
+    }
+
+    .ant-col-sm-19 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 79.16666667%
+    }
+
+    .ant-col-sm-push-19 {
+        left: 79.16666667%
+    }
+
+    .ant-col-sm-pull-19 {
+        right: 79.16666667%
+    }
+
+    .ant-col-sm-offset-19 {
+        margin-left: 79.16666667%
+    }
+
+    .ant-col-sm-order-19 {
+        -webkit-box-ordinal-group: 20;
+        -ms-flex-order: 19;
+        order: 19
+    }
+
+    .ant-col-sm-18 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 75%
+    }
+
+    .ant-col-sm-push-18 {
+        left: 75%
+    }
+
+    .ant-col-sm-pull-18 {
+        right: 75%
+    }
+
+    .ant-col-sm-offset-18 {
+        margin-left: 75%
+    }
+
+    .ant-col-sm-order-18 {
+        -webkit-box-ordinal-group: 19;
+        -ms-flex-order: 18;
+        order: 18
+    }
+
+    .ant-col-sm-17 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 70.83333333%
+    }
+
+    .ant-col-sm-push-17 {
+        left: 70.83333333%
+    }
+
+    .ant-col-sm-pull-17 {
+        right: 70.83333333%
+    }
+
+    .ant-col-sm-offset-17 {
+        margin-left: 70.83333333%
+    }
+
+    .ant-col-sm-order-17 {
+        -webkit-box-ordinal-group: 18;
+        -ms-flex-order: 17;
+        order: 17
+    }
+
+    .ant-col-sm-16 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 66.66666667%
+    }
+
+    .ant-col-sm-push-16 {
+        left: 66.66666667%
+    }
+
+    .ant-col-sm-pull-16 {
+        right: 66.66666667%
+    }
+
+    .ant-col-sm-offset-16 {
+        margin-left: 66.66666667%
+    }
+
+    .ant-col-sm-order-16 {
+        -webkit-box-ordinal-group: 17;
+        -ms-flex-order: 16;
+        order: 16
+    }
+
+    .ant-col-sm-15 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 62.5%
+    }
+
+    .ant-col-sm-push-15 {
+        left: 62.5%
+    }
+
+    .ant-col-sm-pull-15 {
+        right: 62.5%
+    }
+
+    .ant-col-sm-offset-15 {
+        margin-left: 62.5%
+    }
+
+    .ant-col-sm-order-15 {
+        -webkit-box-ordinal-group: 16;
+        -ms-flex-order: 15;
+        order: 15
+    }
+
+    .ant-col-sm-14 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 58.33333333%
+    }
+
+    .ant-col-sm-push-14 {
+        left: 58.33333333%
+    }
+
+    .ant-col-sm-pull-14 {
+        right: 58.33333333%
+    }
+
+    .ant-col-sm-offset-14 {
+        margin-left: 58.33333333%
+    }
+
+    .ant-col-sm-order-14 {
+        -webkit-box-ordinal-group: 15;
+        -ms-flex-order: 14;
+        order: 14
+    }
+
+    .ant-col-sm-13 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 54.16666667%
+    }
+
+    .ant-col-sm-push-13 {
+        left: 54.16666667%
+    }
+
+    .ant-col-sm-pull-13 {
+        right: 54.16666667%
+    }
+
+    .ant-col-sm-offset-13 {
+        margin-left: 54.16666667%
+    }
+
+    .ant-col-sm-order-13 {
+        -webkit-box-ordinal-group: 14;
+        -ms-flex-order: 13;
+        order: 13
+    }
+
+    .ant-col-sm-12 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 50%
+    }
+
+    .ant-col-sm-push-12 {
+        left: 50%
+    }
+
+    .ant-col-sm-pull-12 {
+        right: 50%
+    }
+
+    .ant-col-sm-offset-12 {
+        margin-left: 50%
+    }
+
+    .ant-col-sm-order-12 {
+        -webkit-box-ordinal-group: 13;
+        -ms-flex-order: 12;
+        order: 12
+    }
+
+    .ant-col-sm-11 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 45.83333333%
+    }
+
+    .ant-col-sm-push-11 {
+        left: 45.83333333%
+    }
+
+    .ant-col-sm-pull-11 {
+        right: 45.83333333%
+    }
+
+    .ant-col-sm-offset-11 {
+        margin-left: 45.83333333%
+    }
+
+    .ant-col-sm-order-11 {
+        -webkit-box-ordinal-group: 12;
+        -ms-flex-order: 11;
+        order: 11
+    }
+
+    .ant-col-sm-10 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 41.66666667%
+    }
+
+    .ant-col-sm-push-10 {
+        left: 41.66666667%
+    }
+
+    .ant-col-sm-pull-10 {
+        right: 41.66666667%
+    }
+
+    .ant-col-sm-offset-10 {
+        margin-left: 41.66666667%
+    }
+
+    .ant-col-sm-order-10 {
+        -webkit-box-ordinal-group: 11;
+        -ms-flex-order: 10;
+        order: 10
+    }
+
+    .ant-col-sm-9 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 37.5%
+    }
+
+    .ant-col-sm-push-9 {
+        left: 37.5%
+    }
+
+    .ant-col-sm-pull-9 {
+        right: 37.5%
+    }
+
+    .ant-col-sm-offset-9 {
+        margin-left: 37.5%
+    }
+
+    .ant-col-sm-order-9 {
+        -webkit-box-ordinal-group: 10;
+        -ms-flex-order: 9;
+        order: 9
+    }
+
+    .ant-col-sm-8 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 33.33333333%
+    }
+
+    .ant-col-sm-push-8 {
+        left: 33.33333333%
+    }
+
+    .ant-col-sm-pull-8 {
+        right: 33.33333333%
+    }
+
+    .ant-col-sm-offset-8 {
+        margin-left: 33.33333333%
+    }
+
+    .ant-col-sm-order-8 {
+        -webkit-box-ordinal-group: 9;
+        -ms-flex-order: 8;
+        order: 8
+    }
+
+    .ant-col-sm-7 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 29.16666667%
+    }
+
+    .ant-col-sm-push-7 {
+        left: 29.16666667%
+    }
+
+    .ant-col-sm-pull-7 {
+        right: 29.16666667%
+    }
+
+    .ant-col-sm-offset-7 {
+        margin-left: 29.16666667%
+    }
+
+    .ant-col-sm-order-7 {
+        -webkit-box-ordinal-group: 8;
+        -ms-flex-order: 7;
+        order: 7
+    }
+
+    .ant-col-sm-6 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 25%
+    }
+
+    .ant-col-sm-push-6 {
+        left: 25%
+    }
+
+    .ant-col-sm-pull-6 {
+        right: 25%
+    }
+
+    .ant-col-sm-offset-6 {
+        margin-left: 25%
+    }
+
+    .ant-col-sm-order-6 {
+        -webkit-box-ordinal-group: 7;
+        -ms-flex-order: 6;
+        order: 6
+    }
+
+    .ant-col-sm-5 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 20.83333333%
+    }
+
+    .ant-col-sm-push-5 {
+        left: 20.83333333%
+    }
+
+    .ant-col-sm-pull-5 {
+        right: 20.83333333%
+    }
+
+    .ant-col-sm-offset-5 {
+        margin-left: 20.83333333%
+    }
+
+    .ant-col-sm-order-5 {
+        -webkit-box-ordinal-group: 6;
+        -ms-flex-order: 5;
+        order: 5
+    }
+
+    .ant-col-sm-4 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 16.66666667%
+    }
+
+    .ant-col-sm-push-4 {
+        left: 16.66666667%
+    }
+
+    .ant-col-sm-pull-4 {
+        right: 16.66666667%
+    }
+
+    .ant-col-sm-offset-4 {
+        margin-left: 16.66666667%
+    }
+
+    .ant-col-sm-order-4 {
+        -webkit-box-ordinal-group: 5;
+        -ms-flex-order: 4;
+        order: 4
+    }
+
+    .ant-col-sm-3 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 12.5%
+    }
+
+    .ant-col-sm-push-3 {
+        left: 12.5%
+    }
+
+    .ant-col-sm-pull-3 {
+        right: 12.5%
+    }
+
+    .ant-col-sm-offset-3 {
+        margin-left: 12.5%
+    }
+
+    .ant-col-sm-order-3 {
+        -webkit-box-ordinal-group: 4;
+        -ms-flex-order: 3;
+        order: 3
+    }
+
+    .ant-col-sm-2 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 8.33333333%
+    }
+
+    .ant-col-sm-push-2 {
+        left: 8.33333333%
+    }
+
+    .ant-col-sm-pull-2 {
+        right: 8.33333333%
+    }
+
+    .ant-col-sm-offset-2 {
+        margin-left: 8.33333333%
+    }
+
+    .ant-col-sm-order-2 {
+        -webkit-box-ordinal-group: 3;
+        -ms-flex-order: 2;
+        order: 2
+    }
+
+    .ant-col-sm-1 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 4.16666667%
+    }
+
+    .ant-col-sm-push-1 {
+        left: 4.16666667%
+    }
+
+    .ant-col-sm-pull-1 {
+        right: 4.16666667%
+    }
+
+    .ant-col-sm-offset-1 {
+        margin-left: 4.16666667%
+    }
+
+    .ant-col-sm-order-1 {
+        -webkit-box-ordinal-group: 2;
+        -ms-flex-order: 1;
+        order: 1
+    }
+
+    .ant-col-sm-0 {
+        display: none
+    }
+
+    .ant-col-push-0 {
+        left: auto
+    }
+
+    .ant-col-pull-0 {
+        right: auto
+    }
+
+    .ant-col-sm-push-0 {
+        left: auto
+    }
+
+    .ant-col-sm-pull-0 {
+        right: auto
+    }
+
+    .ant-col-sm-offset-0 {
+        margin-left: 0
+    }
+
+    .ant-col-sm-order-0 {
+        -webkit-box-ordinal-group: 1;
+        -ms-flex-order: 0;
+        order: 0
+    }
+}
+
+@media (min-width:768px) {
+    .ant-col-md-1, .ant-col-md-2, .ant-col-md-3, .ant-col-md-4, .ant-col-md-5, .ant-col-md-6, .ant-col-md-7, .ant-col-md-8, .ant-col-md-9, .ant-col-md-10, .ant-col-md-11, .ant-col-md-12, .ant-col-md-13, .ant-col-md-14, .ant-col-md-15, .ant-col-md-16, .ant-col-md-17, .ant-col-md-18, .ant-col-md-19, .ant-col-md-20, .ant-col-md-21, .ant-col-md-22, .ant-col-md-23, .ant-col-md-24 {
+        -webkit-box-flex: 0;
+        -ms-flex: 0 0 auto;
+        flex: 0 0 auto;
+        float: left
+    }
+
+    .ant-col-md-24 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 100%
+    }
+
+    .ant-col-md-push-24 {
+        left: 100%
+    }
+
+    .ant-col-md-pull-24 {
+        right: 100%
+    }
+
+    .ant-col-md-offset-24 {
+        margin-left: 100%
+    }
+
+    .ant-col-md-order-24 {
+        -webkit-box-ordinal-group: 25;
+        -ms-flex-order: 24;
+        order: 24
+    }
+
+    .ant-col-md-23 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 95.83333333%
+    }
+
+    .ant-col-md-push-23 {
+        left: 95.83333333%
+    }
+
+    .ant-col-md-pull-23 {
+        right: 95.83333333%
+    }
+
+    .ant-col-md-offset-23 {
+        margin-left: 95.83333333%
+    }
+
+    .ant-col-md-order-23 {
+        -webkit-box-ordinal-group: 24;
+        -ms-flex-order: 23;
+        order: 23
+    }
+
+    .ant-col-md-22 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 91.66666667%
+    }
+
+    .ant-col-md-push-22 {
+        left: 91.66666667%
+    }
+
+    .ant-col-md-pull-22 {
+        right: 91.66666667%
+    }
+
+    .ant-col-md-offset-22 {
+        margin-left: 91.66666667%
+    }
+
+    .ant-col-md-order-22 {
+        -webkit-box-ordinal-group: 23;
+        -ms-flex-order: 22;
+        order: 22
+    }
+
+    .ant-col-md-21 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 87.5%
+    }
+
+    .ant-col-md-push-21 {
+        left: 87.5%
+    }
+
+    .ant-col-md-pull-21 {
+        right: 87.5%
+    }
+
+    .ant-col-md-offset-21 {
+        margin-left: 87.5%
+    }
+
+    .ant-col-md-order-21 {
+        -webkit-box-ordinal-group: 22;
+        -ms-flex-order: 21;
+        order: 21
+    }
+
+    .ant-col-md-20 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 83.33333333%
+    }
+
+    .ant-col-md-push-20 {
+        left: 83.33333333%
+    }
+
+    .ant-col-md-pull-20 {
+        right: 83.33333333%
+    }
+
+    .ant-col-md-offset-20 {
+        margin-left: 83.33333333%
+    }
+
+    .ant-col-md-order-20 {
+        -webkit-box-ordinal-group: 21;
+        -ms-flex-order: 20;
+        order: 20
+    }
+
+    .ant-col-md-19 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 79.16666667%
+    }
+
+    .ant-col-md-push-19 {
+        left: 79.16666667%
+    }
+
+    .ant-col-md-pull-19 {
+        right: 79.16666667%
+    }
+
+    .ant-col-md-offset-19 {
+        margin-left: 79.16666667%
+    }
+
+    .ant-col-md-order-19 {
+        -webkit-box-ordinal-group: 20;
+        -ms-flex-order: 19;
+        order: 19
+    }
+
+    .ant-col-md-18 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 75%
+    }
+
+    .ant-col-md-push-18 {
+        left: 75%
+    }
+
+    .ant-col-md-pull-18 {
+        right: 75%
+    }
+
+    .ant-col-md-offset-18 {
+        margin-left: 75%
+    }
+
+    .ant-col-md-order-18 {
+        -webkit-box-ordinal-group: 19;
+        -ms-flex-order: 18;
+        order: 18
+    }
+
+    .ant-col-md-17 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 70.83333333%
+    }
+
+    .ant-col-md-push-17 {
+        left: 70.83333333%
+    }
+
+    .ant-col-md-pull-17 {
+        right: 70.83333333%
+    }
+
+    .ant-col-md-offset-17 {
+        margin-left: 70.83333333%
+    }
+
+    .ant-col-md-order-17 {
+        -webkit-box-ordinal-group: 18;
+        -ms-flex-order: 17;
+        order: 17
+    }
+
+    .ant-col-md-16 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 66.66666667%
+    }
+
+    .ant-col-md-push-16 {
+        left: 66.66666667%
+    }
+
+    .ant-col-md-pull-16 {
+        right: 66.66666667%
+    }
+
+    .ant-col-md-offset-16 {
+        margin-left: 66.66666667%
+    }
+
+    .ant-col-md-order-16 {
+        -webkit-box-ordinal-group: 17;
+        -ms-flex-order: 16;
+        order: 16
+    }
+
+    .ant-col-md-15 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 62.5%
+    }
+
+    .ant-col-md-push-15 {
+        left: 62.5%
+    }
+
+    .ant-col-md-pull-15 {
+        right: 62.5%
+    }
+
+    .ant-col-md-offset-15 {
+        margin-left: 62.5%
+    }
+
+    .ant-col-md-order-15 {
+        -webkit-box-ordinal-group: 16;
+        -ms-flex-order: 15;
+        order: 15
+    }
+
+    .ant-col-md-14 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 58.33333333%
+    }
+
+    .ant-col-md-push-14 {
+        left: 58.33333333%
+    }
+
+    .ant-col-md-pull-14 {
+        right: 58.33333333%
+    }
+
+    .ant-col-md-offset-14 {
+        margin-left: 58.33333333%
+    }
+
+    .ant-col-md-order-14 {
+        -webkit-box-ordinal-group: 15;
+        -ms-flex-order: 14;
+        order: 14
+    }
+
+    .ant-col-md-13 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 54.16666667%
+    }
+
+    .ant-col-md-push-13 {
+        left: 54.16666667%
+    }
+
+    .ant-col-md-pull-13 {
+        right: 54.16666667%
+    }
+
+    .ant-col-md-offset-13 {
+        margin-left: 54.16666667%
+    }
+
+    .ant-col-md-order-13 {
+        -webkit-box-ordinal-group: 14;
+        -ms-flex-order: 13;
+        order: 13
+    }
+
+    .ant-col-md-12 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 50%
+    }
+
+    .ant-col-md-push-12 {
+        left: 50%
+    }
+
+    .ant-col-md-pull-12 {
+        right: 50%
+    }
+
+    .ant-col-md-offset-12 {
+        margin-left: 50%
+    }
+
+    .ant-col-md-order-12 {
+        -webkit-box-ordinal-group: 13;
+        -ms-flex-order: 12;
+        order: 12
+    }
+
+    .ant-col-md-11 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 45.83333333%
+    }
+
+    .ant-col-md-push-11 {
+        left: 45.83333333%
+    }
+
+    .ant-col-md-pull-11 {
+        right: 45.83333333%
+    }
+
+    .ant-col-md-offset-11 {
+        margin-left: 45.83333333%
+    }
+
+    .ant-col-md-order-11 {
+        -webkit-box-ordinal-group: 12;
+        -ms-flex-order: 11;
+        order: 11
+    }
+
+    .ant-col-md-10 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 41.66666667%
+    }
+
+    .ant-col-md-push-10 {
+        left: 41.66666667%
+    }
+
+    .ant-col-md-pull-10 {
+        right: 41.66666667%
+    }
+
+    .ant-col-md-offset-10 {
+        margin-left: 41.66666667%
+    }
+
+    .ant-col-md-order-10 {
+        -webkit-box-ordinal-group: 11;
+        -ms-flex-order: 10;
+        order: 10
+    }
+
+    .ant-col-md-9 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 37.5%
+    }
+
+    .ant-col-md-push-9 {
+        left: 37.5%
+    }
+
+    .ant-col-md-pull-9 {
+        right: 37.5%
+    }
+
+    .ant-col-md-offset-9 {
+        margin-left: 37.5%
+    }
+
+    .ant-col-md-order-9 {
+        -webkit-box-ordinal-group: 10;
+        -ms-flex-order: 9;
+        order: 9
+    }
+
+    .ant-col-md-8 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 33.33333333%
+    }
+
+    .ant-col-md-push-8 {
+        left: 33.33333333%
+    }
+
+    .ant-col-md-pull-8 {
+        right: 33.33333333%
+    }
+
+    .ant-col-md-offset-8 {
+        margin-left: 33.33333333%
+    }
+
+    .ant-col-md-order-8 {
+        -webkit-box-ordinal-group: 9;
+        -ms-flex-order: 8;
+        order: 8
+    }
+
+    .ant-col-md-7 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 29.16666667%
+    }
+
+    .ant-col-md-push-7 {
+        left: 29.16666667%
+    }
+
+    .ant-col-md-pull-7 {
+        right: 29.16666667%
+    }
+
+    .ant-col-md-offset-7 {
+        margin-left: 29.16666667%
+    }
+
+    .ant-col-md-order-7 {
+        -webkit-box-ordinal-group: 8;
+        -ms-flex-order: 7;
+        order: 7
+    }
+
+    .ant-col-md-6 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 25%
+    }
+
+    .ant-col-md-push-6 {
+        left: 25%
+    }
+
+    .ant-col-md-pull-6 {
+        right: 25%
+    }
+
+    .ant-col-md-offset-6 {
+        margin-left: 25%
+    }
+
+    .ant-col-md-order-6 {
+        -webkit-box-ordinal-group: 7;
+        -ms-flex-order: 6;
+        order: 6
+    }
+
+    .ant-col-md-5 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 20.83333333%
+    }
+
+    .ant-col-md-push-5 {
+        left: 20.83333333%
+    }
+
+    .ant-col-md-pull-5 {
+        right: 20.83333333%
+    }
+
+    .ant-col-md-offset-5 {
+        margin-left: 20.83333333%
+    }
+
+    .ant-col-md-order-5 {
+        -webkit-box-ordinal-group: 6;
+        -ms-flex-order: 5;
+        order: 5
+    }
+
+    .ant-col-md-4 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 16.66666667%
+    }
+
+    .ant-col-md-push-4 {
+        left: 16.66666667%
+    }
+
+    .ant-col-md-pull-4 {
+        right: 16.66666667%
+    }
+
+    .ant-col-md-offset-4 {
+        margin-left: 16.66666667%
+    }
+
+    .ant-col-md-order-4 {
+        -webkit-box-ordinal-group: 5;
+        -ms-flex-order: 4;
+        order: 4
+    }
+
+    .ant-col-md-3 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 12.5%
+    }
+
+    .ant-col-md-push-3 {
+        left: 12.5%
+    }
+
+    .ant-col-md-pull-3 {
+        right: 12.5%
+    }
+
+    .ant-col-md-offset-3 {
+        margin-left: 12.5%
+    }
+
+    .ant-col-md-order-3 {
+        -webkit-box-ordinal-group: 4;
+        -ms-flex-order: 3;
+        order: 3
+    }
+
+    .ant-col-md-2 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 8.33333333%
+    }
+
+    .ant-col-md-push-2 {
+        left: 8.33333333%
+    }
+
+    .ant-col-md-pull-2 {
+        right: 8.33333333%
+    }
+
+    .ant-col-md-offset-2 {
+        margin-left: 8.33333333%
+    }
+
+    .ant-col-md-order-2 {
+        -webkit-box-ordinal-group: 3;
+        -ms-flex-order: 2;
+        order: 2
+    }
+
+    .ant-col-md-1 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 4.16666667%
+    }
+
+    .ant-col-md-push-1 {
+        left: 4.16666667%
+    }
+
+    .ant-col-md-pull-1 {
+        right: 4.16666667%
+    }
+
+    .ant-col-md-offset-1 {
+        margin-left: 4.16666667%
+    }
+
+    .ant-col-md-order-1 {
+        -webkit-box-ordinal-group: 2;
+        -ms-flex-order: 1;
+        order: 1
+    }
+
+    .ant-col-md-0 {
+        display: none
+    }
+
+    .ant-col-push-0 {
+        left: auto
+    }
+
+    .ant-col-pull-0 {
+        right: auto
+    }
+
+    .ant-col-md-push-0 {
+        left: auto
+    }
+
+    .ant-col-md-pull-0 {
+        right: auto
+    }
+
+    .ant-col-md-offset-0 {
+        margin-left: 0
+    }
+
+    .ant-col-md-order-0 {
+        -webkit-box-ordinal-group: 1;
+        -ms-flex-order: 0;
+        order: 0
+    }
+}
+
+@media (min-width:992px) {
+    .ant-col-lg-1, .ant-col-lg-2, .ant-col-lg-3, .ant-col-lg-4, .ant-col-lg-5, .ant-col-lg-6, .ant-col-lg-7, .ant-col-lg-8, .ant-col-lg-9, .ant-col-lg-10, .ant-col-lg-11, .ant-col-lg-12, .ant-col-lg-13, .ant-col-lg-14, .ant-col-lg-15, .ant-col-lg-16, .ant-col-lg-17, .ant-col-lg-18, .ant-col-lg-19, .ant-col-lg-20, .ant-col-lg-21, .ant-col-lg-22, .ant-col-lg-23, .ant-col-lg-24 {
+        -webkit-box-flex: 0;
+        -ms-flex: 0 0 auto;
+        flex: 0 0 auto;
+        float: left
+    }
+
+    .ant-col-lg-24 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 100%
+    }
+
+    .ant-col-lg-push-24 {
+        left: 100%
+    }
+
+    .ant-col-lg-pull-24 {
+        right: 100%
+    }
+
+    .ant-col-lg-offset-24 {
+        margin-left: 100%
+    }
+
+    .ant-col-lg-order-24 {
+        -webkit-box-ordinal-group: 25;
+        -ms-flex-order: 24;
+        order: 24
+    }
+
+    .ant-col-lg-23 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 95.83333333%
+    }
+
+    .ant-col-lg-push-23 {
+        left: 95.83333333%
+    }
+
+    .ant-col-lg-pull-23 {
+        right: 95.83333333%
+    }
+
+    .ant-col-lg-offset-23 {
+        margin-left: 95.83333333%
+    }
+
+    .ant-col-lg-order-23 {
+        -webkit-box-ordinal-group: 24;
+        -ms-flex-order: 23;
+        order: 23
+    }
+
+    .ant-col-lg-22 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 91.66666667%
+    }
+
+    .ant-col-lg-push-22 {
+        left: 91.66666667%
+    }
+
+    .ant-col-lg-pull-22 {
+        right: 91.66666667%
+    }
+
+    .ant-col-lg-offset-22 {
+        margin-left: 91.66666667%
+    }
+
+    .ant-col-lg-order-22 {
+        -webkit-box-ordinal-group: 23;
+        -ms-flex-order: 22;
+        order: 22
+    }
+
+    .ant-col-lg-21 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 87.5%
+    }
+
+    .ant-col-lg-push-21 {
+        left: 87.5%
+    }
+
+    .ant-col-lg-pull-21 {
+        right: 87.5%
+    }
+
+    .ant-col-lg-offset-21 {
+        margin-left: 87.5%
+    }
+
+    .ant-col-lg-order-21 {
+        -webkit-box-ordinal-group: 22;
+        -ms-flex-order: 21;
+        order: 21
+    }
+
+    .ant-col-lg-20 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 83.33333333%
+    }
+
+    .ant-col-lg-push-20 {
+        left: 83.33333333%
+    }
+
+    .ant-col-lg-pull-20 {
+        right: 83.33333333%
+    }
+
+    .ant-col-lg-offset-20 {
+        margin-left: 83.33333333%
+    }
+
+    .ant-col-lg-order-20 {
+        -webkit-box-ordinal-group: 21;
+        -ms-flex-order: 20;
+        order: 20
+    }
+
+    .ant-col-lg-19 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 79.16666667%
+    }
+
+    .ant-col-lg-push-19 {
+        left: 79.16666667%
+    }
+
+    .ant-col-lg-pull-19 {
+        right: 79.16666667%
+    }
+
+    .ant-col-lg-offset-19 {
+        margin-left: 79.16666667%
+    }
+
+    .ant-col-lg-order-19 {
+        -webkit-box-ordinal-group: 20;
+        -ms-flex-order: 19;
+        order: 19
+    }
+
+    .ant-col-lg-18 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 75%
+    }
+
+    .ant-col-lg-push-18 {
+        left: 75%
+    }
+
+    .ant-col-lg-pull-18 {
+        right: 75%
+    }
+
+    .ant-col-lg-offset-18 {
+        margin-left: 75%
+    }
+
+    .ant-col-lg-order-18 {
+        -webkit-box-ordinal-group: 19;
+        -ms-flex-order: 18;
+        order: 18
+    }
+
+    .ant-col-lg-17 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 70.83333333%
+    }
+
+    .ant-col-lg-push-17 {
+        left: 70.83333333%
+    }
+
+    .ant-col-lg-pull-17 {
+        right: 70.83333333%
+    }
+
+    .ant-col-lg-offset-17 {
+        margin-left: 70.83333333%
+    }
+
+    .ant-col-lg-order-17 {
+        -webkit-box-ordinal-group: 18;
+        -ms-flex-order: 17;
+        order: 17
+    }
+
+    .ant-col-lg-16 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 66.66666667%
+    }
+
+    .ant-col-lg-push-16 {
+        left: 66.66666667%
+    }
+
+    .ant-col-lg-pull-16 {
+        right: 66.66666667%
+    }
+
+    .ant-col-lg-offset-16 {
+        margin-left: 66.66666667%
+    }
+
+    .ant-col-lg-order-16 {
+        -webkit-box-ordinal-group: 17;
+        -ms-flex-order: 16;
+        order: 16
+    }
+
+    .ant-col-lg-15 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 62.5%
+    }
+
+    .ant-col-lg-push-15 {
+        left: 62.5%
+    }
+
+    .ant-col-lg-pull-15 {
+        right: 62.5%
+    }
+
+    .ant-col-lg-offset-15 {
+        margin-left: 62.5%
+    }
+
+    .ant-col-lg-order-15 {
+        -webkit-box-ordinal-group: 16;
+        -ms-flex-order: 15;
+        order: 15
+    }
+
+    .ant-col-lg-14 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 58.33333333%
+    }
+
+    .ant-col-lg-push-14 {
+        left: 58.33333333%
+    }
+
+    .ant-col-lg-pull-14 {
+        right: 58.33333333%
+    }
+
+    .ant-col-lg-offset-14 {
+        margin-left: 58.33333333%
+    }
+
+    .ant-col-lg-order-14 {
+        -webkit-box-ordinal-group: 15;
+        -ms-flex-order: 14;
+        order: 14
+    }
+
+    .ant-col-lg-13 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 54.16666667%
+    }
+
+    .ant-col-lg-push-13 {
+        left: 54.16666667%
+    }
+
+    .ant-col-lg-pull-13 {
+        right: 54.16666667%
+    }
+
+    .ant-col-lg-offset-13 {
+        margin-left: 54.16666667%
+    }
+
+    .ant-col-lg-order-13 {
+        -webkit-box-ordinal-group: 14;
+        -ms-flex-order: 13;
+        order: 13
+    }
+
+    .ant-col-lg-12 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 50%
+    }
+
+    .ant-col-lg-push-12 {
+        left: 50%
+    }
+
+    .ant-col-lg-pull-12 {
+        right: 50%
+    }
+
+    .ant-col-lg-offset-12 {
+        margin-left: 50%
+    }
+
+    .ant-col-lg-order-12 {
+        -webkit-box-ordinal-group: 13;
+        -ms-flex-order: 12;
+        order: 12
+    }
+
+    .ant-col-lg-11 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 45.83333333%
+    }
+
+    .ant-col-lg-push-11 {
+        left: 45.83333333%
+    }
+
+    .ant-col-lg-pull-11 {
+        right: 45.83333333%
+    }
+
+    .ant-col-lg-offset-11 {
+        margin-left: 45.83333333%
+    }
+
+    .ant-col-lg-order-11 {
+        -webkit-box-ordinal-group: 12;
+        -ms-flex-order: 11;
+        order: 11
+    }
+
+    .ant-col-lg-10 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 41.66666667%
+    }
+
+    .ant-col-lg-push-10 {
+        left: 41.66666667%
+    }
+
+    .ant-col-lg-pull-10 {
+        right: 41.66666667%
+    }
+
+    .ant-col-lg-offset-10 {
+        margin-left: 41.66666667%
+    }
+
+    .ant-col-lg-order-10 {
+        -webkit-box-ordinal-group: 11;
+        -ms-flex-order: 10;
+        order: 10
+    }
+
+    .ant-col-lg-9 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 37.5%
+    }
+
+    .ant-col-lg-push-9 {
+        left: 37.5%
+    }
+
+    .ant-col-lg-pull-9 {
+        right: 37.5%
+    }
+
+    .ant-col-lg-offset-9 {
+        margin-left: 37.5%
+    }
+
+    .ant-col-lg-order-9 {
+        -webkit-box-ordinal-group: 10;
+        -ms-flex-order: 9;
+        order: 9
+    }
+
+    .ant-col-lg-8 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 33.33333333%
+    }
+
+    .ant-col-lg-push-8 {
+        left: 33.33333333%
+    }
+
+    .ant-col-lg-pull-8 {
+        right: 33.33333333%
+    }
+
+    .ant-col-lg-offset-8 {
+        margin-left: 33.33333333%
+    }
+
+    .ant-col-lg-order-8 {
+        -webkit-box-ordinal-group: 9;
+        -ms-flex-order: 8;
+        order: 8
+    }
+
+    .ant-col-lg-7 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 29.16666667%
+    }
+
+    .ant-col-lg-push-7 {
+        left: 29.16666667%
+    }
+
+    .ant-col-lg-pull-7 {
+        right: 29.16666667%
+    }
+
+    .ant-col-lg-offset-7 {
+        margin-left: 29.16666667%
+    }
+
+    .ant-col-lg-order-7 {
+        -webkit-box-ordinal-group: 8;
+        -ms-flex-order: 7;
+        order: 7
+    }
+
+    .ant-col-lg-6 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 25%
+    }
+
+    .ant-col-lg-push-6 {
+        left: 25%
+    }
+
+    .ant-col-lg-pull-6 {
+        right: 25%
+    }
+
+    .ant-col-lg-offset-6 {
+        margin-left: 25%
+    }
+
+    .ant-col-lg-order-6 {
+        -webkit-box-ordinal-group: 7;
+        -ms-flex-order: 6;
+        order: 6
+    }
+
+    .ant-col-lg-5 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 20.83333333%
+    }
+
+    .ant-col-lg-push-5 {
+        left: 20.83333333%
+    }
+
+    .ant-col-lg-pull-5 {
+        right: 20.83333333%
+    }
+
+    .ant-col-lg-offset-5 {
+        margin-left: 20.83333333%
+    }
+
+    .ant-col-lg-order-5 {
+        -webkit-box-ordinal-group: 6;
+        -ms-flex-order: 5;
+        order: 5
+    }
+
+    .ant-col-lg-4 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 16.66666667%
+    }
+
+    .ant-col-lg-push-4 {
+        left: 16.66666667%
+    }
+
+    .ant-col-lg-pull-4 {
+        right: 16.66666667%
+    }
+
+    .ant-col-lg-offset-4 {
+        margin-left: 16.66666667%
+    }
+
+    .ant-col-lg-order-4 {
+        -webkit-box-ordinal-group: 5;
+        -ms-flex-order: 4;
+        order: 4
+    }
+
+    .ant-col-lg-3 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 12.5%
+    }
+
+    .ant-col-lg-push-3 {
+        left: 12.5%
+    }
+
+    .ant-col-lg-pull-3 {
+        right: 12.5%
+    }
+
+    .ant-col-lg-offset-3 {
+        margin-left: 12.5%
+    }
+
+    .ant-col-lg-order-3 {
+        -webkit-box-ordinal-group: 4;
+        -ms-flex-order: 3;
+        order: 3
+    }
+
+    .ant-col-lg-2 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 8.33333333%
+    }
+
+    .ant-col-lg-push-2 {
+        left: 8.33333333%
+    }
+
+    .ant-col-lg-pull-2 {
+        right: 8.33333333%
+    }
+
+    .ant-col-lg-offset-2 {
+        margin-left: 8.33333333%
+    }
+
+    .ant-col-lg-order-2 {
+        -webkit-box-ordinal-group: 3;
+        -ms-flex-order: 2;
+        order: 2
+    }
+
+    .ant-col-lg-1 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 4.16666667%
+    }
+
+    .ant-col-lg-push-1 {
+        left: 4.16666667%
+    }
+
+    .ant-col-lg-pull-1 {
+        right: 4.16666667%
+    }
+
+    .ant-col-lg-offset-1 {
+        margin-left: 4.16666667%
+    }
+
+    .ant-col-lg-order-1 {
+        -webkit-box-ordinal-group: 2;
+        -ms-flex-order: 1;
+        order: 1
+    }
+
+    .ant-col-lg-0 {
+        display: none
+    }
+
+    .ant-col-push-0 {
+        left: auto
+    }
+
+    .ant-col-pull-0 {
+        right: auto
+    }
+
+    .ant-col-lg-push-0 {
+        left: auto
+    }
+
+    .ant-col-lg-pull-0 {
+        right: auto
+    }
+
+    .ant-col-lg-offset-0 {
+        margin-left: 0
+    }
+
+    .ant-col-lg-order-0 {
+        -webkit-box-ordinal-group: 1;
+        -ms-flex-order: 0;
+        order: 0
+    }
+}
+
+@media (min-width:1200px) {
+    .ant-col-xl-1, .ant-col-xl-2, .ant-col-xl-3, .ant-col-xl-4, .ant-col-xl-5, .ant-col-xl-6, .ant-col-xl-7, .ant-col-xl-8, .ant-col-xl-9, .ant-col-xl-10, .ant-col-xl-11, .ant-col-xl-12, .ant-col-xl-13, .ant-col-xl-14, .ant-col-xl-15, .ant-col-xl-16, .ant-col-xl-17, .ant-col-xl-18, .ant-col-xl-19, .ant-col-xl-20, .ant-col-xl-21, .ant-col-xl-22, .ant-col-xl-23, .ant-col-xl-24 {
+        -webkit-box-flex: 0;
+        -ms-flex: 0 0 auto;
+        flex: 0 0 auto;
+        float: left
+    }
+
+    .ant-col-xl-24 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 100%
+    }
+
+    .ant-col-xl-push-24 {
+        left: 100%
+    }
+
+    .ant-col-xl-pull-24 {
+        right: 100%
+    }
+
+    .ant-col-xl-offset-24 {
+        margin-left: 100%
+    }
+
+    .ant-col-xl-order-24 {
+        -webkit-box-ordinal-group: 25;
+        -ms-flex-order: 24;
+        order: 24
+    }
+
+    .ant-col-xl-23 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 95.83333333%
+    }
+
+    .ant-col-xl-push-23 {
+        left: 95.83333333%
+    }
+
+    .ant-col-xl-pull-23 {
+        right: 95.83333333%
+    }
+
+    .ant-col-xl-offset-23 {
+        margin-left: 95.83333333%
+    }
+
+    .ant-col-xl-order-23 {
+        -webkit-box-ordinal-group: 24;
+        -ms-flex-order: 23;
+        order: 23
+    }
+
+    .ant-col-xl-22 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 91.66666667%
+    }
+
+    .ant-col-xl-push-22 {
+        left: 91.66666667%
+    }
+
+    .ant-col-xl-pull-22 {
+        right: 91.66666667%
+    }
+
+    .ant-col-xl-offset-22 {
+        margin-left: 91.66666667%
+    }
+
+    .ant-col-xl-order-22 {
+        -webkit-box-ordinal-group: 23;
+        -ms-flex-order: 22;
+        order: 22
+    }
+
+    .ant-col-xl-21 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 87.5%
+    }
+
+    .ant-col-xl-push-21 {
+        left: 87.5%
+    }
+
+    .ant-col-xl-pull-21 {
+        right: 87.5%
+    }
+
+    .ant-col-xl-offset-21 {
+        margin-left: 87.5%
+    }
+
+    .ant-col-xl-order-21 {
+        -webkit-box-ordinal-group: 22;
+        -ms-flex-order: 21;
+        order: 21
+    }
+
+    .ant-col-xl-20 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 83.33333333%
+    }
+
+    .ant-col-xl-push-20 {
+        left: 83.33333333%
+    }
+
+    .ant-col-xl-pull-20 {
+        right: 83.33333333%
+    }
+
+    .ant-col-xl-offset-20 {
+        margin-left: 83.33333333%
+    }
+
+    .ant-col-xl-order-20 {
+        -webkit-box-ordinal-group: 21;
+        -ms-flex-order: 20;
+        order: 20
+    }
+
+    .ant-col-xl-19 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 79.16666667%
+    }
+
+    .ant-col-xl-push-19 {
+        left: 79.16666667%
+    }
+
+    .ant-col-xl-pull-19 {
+        right: 79.16666667%
+    }
+
+    .ant-col-xl-offset-19 {
+        margin-left: 79.16666667%
+    }
+
+    .ant-col-xl-order-19 {
+        -webkit-box-ordinal-group: 20;
+        -ms-flex-order: 19;
+        order: 19
+    }
+
+    .ant-col-xl-18 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 75%
+    }
+
+    .ant-col-xl-push-18 {
+        left: 75%
+    }
+
+    .ant-col-xl-pull-18 {
+        right: 75%
+    }
+
+    .ant-col-xl-offset-18 {
+        margin-left: 75%
+    }
+
+    .ant-col-xl-order-18 {
+        -webkit-box-ordinal-group: 19;
+        -ms-flex-order: 18;
+        order: 18
+    }
+
+    .ant-col-xl-17 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 70.83333333%
+    }
+
+    .ant-col-xl-push-17 {
+        left: 70.83333333%
+    }
+
+    .ant-col-xl-pull-17 {
+        right: 70.83333333%
+    }
+
+    .ant-col-xl-offset-17 {
+        margin-left: 70.83333333%
+    }
+
+    .ant-col-xl-order-17 {
+        -webkit-box-ordinal-group: 18;
+        -ms-flex-order: 17;
+        order: 17
+    }
+
+    .ant-col-xl-16 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 66.66666667%
+    }
+
+    .ant-col-xl-push-16 {
+        left: 66.66666667%
+    }
+
+    .ant-col-xl-pull-16 {
+        right: 66.66666667%
+    }
+
+    .ant-col-xl-offset-16 {
+        margin-left: 66.66666667%
+    }
+
+    .ant-col-xl-order-16 {
+        -webkit-box-ordinal-group: 17;
+        -ms-flex-order: 16;
+        order: 16
+    }
+
+    .ant-col-xl-15 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 62.5%
+    }
+
+    .ant-col-xl-push-15 {
+        left: 62.5%
+    }
+
+    .ant-col-xl-pull-15 {
+        right: 62.5%
+    }
+
+    .ant-col-xl-offset-15 {
+        margin-left: 62.5%
+    }
+
+    .ant-col-xl-order-15 {
+        -webkit-box-ordinal-group: 16;
+        -ms-flex-order: 15;
+        order: 15
+    }
+
+    .ant-col-xl-14 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 58.33333333%
+    }
+
+    .ant-col-xl-push-14 {
+        left: 58.33333333%
+    }
+
+    .ant-col-xl-pull-14 {
+        right: 58.33333333%
+    }
+
+    .ant-col-xl-offset-14 {
+        margin-left: 58.33333333%
+    }
+
+    .ant-col-xl-order-14 {
+        -webkit-box-ordinal-group: 15;
+        -ms-flex-order: 14;
+        order: 14
+    }
+
+    .ant-col-xl-13 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 54.16666667%
+    }
+
+    .ant-col-xl-push-13 {
+        left: 54.16666667%
+    }
+
+    .ant-col-xl-pull-13 {
+        right: 54.16666667%
+    }
+
+    .ant-col-xl-offset-13 {
+        margin-left: 54.16666667%
+    }
+
+    .ant-col-xl-order-13 {
+        -webkit-box-ordinal-group: 14;
+        -ms-flex-order: 13;
+        order: 13
+    }
+
+    .ant-col-xl-12 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 50%
+    }
+
+    .ant-col-xl-push-12 {
+        left: 50%
+    }
+
+    .ant-col-xl-pull-12 {
+        right: 50%
+    }
+
+    .ant-col-xl-offset-12 {
+        margin-left: 50%
+    }
+
+    .ant-col-xl-order-12 {
+        -webkit-box-ordinal-group: 13;
+        -ms-flex-order: 12;
+        order: 12
+    }
+
+    .ant-col-xl-11 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 45.83333333%
+    }
+
+    .ant-col-xl-push-11 {
+        left: 45.83333333%
+    }
+
+    .ant-col-xl-pull-11 {
+        right: 45.83333333%
+    }
+
+    .ant-col-xl-offset-11 {
+        margin-left: 45.83333333%
+    }
+
+    .ant-col-xl-order-11 {
+        -webkit-box-ordinal-group: 12;
+        -ms-flex-order: 11;
+        order: 11
+    }
+
+    .ant-col-xl-10 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 41.66666667%
+    }
+
+    .ant-col-xl-push-10 {
+        left: 41.66666667%
+    }
+
+    .ant-col-xl-pull-10 {
+        right: 41.66666667%
+    }
+
+    .ant-col-xl-offset-10 {
+        margin-left: 41.66666667%
+    }
+
+    .ant-col-xl-order-10 {
+        -webkit-box-ordinal-group: 11;
+        -ms-flex-order: 10;
+        order: 10
+    }
+
+    .ant-col-xl-9 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 37.5%
+    }
+
+    .ant-col-xl-push-9 {
+        left: 37.5%
+    }
+
+    .ant-col-xl-pull-9 {
+        right: 37.5%
+    }
+
+    .ant-col-xl-offset-9 {
+        margin-left: 37.5%
+    }
+
+    .ant-col-xl-order-9 {
+        -webkit-box-ordinal-group: 10;
+        -ms-flex-order: 9;
+        order: 9
+    }
+
+    .ant-col-xl-8 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 33.33333333%
+    }
+
+    .ant-col-xl-push-8 {
+        left: 33.33333333%
+    }
+
+    .ant-col-xl-pull-8 {
+        right: 33.33333333%
+    }
+
+    .ant-col-xl-offset-8 {
+        margin-left: 33.33333333%
+    }
+
+    .ant-col-xl-order-8 {
+        -webkit-box-ordinal-group: 9;
+        -ms-flex-order: 8;
+        order: 8
+    }
+
+    .ant-col-xl-7 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 29.16666667%
+    }
+
+    .ant-col-xl-push-7 {
+        left: 29.16666667%
+    }
+
+    .ant-col-xl-pull-7 {
+        right: 29.16666667%
+    }
+
+    .ant-col-xl-offset-7 {
+        margin-left: 29.16666667%
+    }
+
+    .ant-col-xl-order-7 {
+        -webkit-box-ordinal-group: 8;
+        -ms-flex-order: 7;
+        order: 7
+    }
+
+    .ant-col-xl-6 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 25%
+    }
+
+    .ant-col-xl-push-6 {
+        left: 25%
+    }
+
+    .ant-col-xl-pull-6 {
+        right: 25%
+    }
+
+    .ant-col-xl-offset-6 {
+        margin-left: 25%
+    }
+
+    .ant-col-xl-order-6 {
+        -webkit-box-ordinal-group: 7;
+        -ms-flex-order: 6;
+        order: 6
+    }
+
+    .ant-col-xl-5 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 20.83333333%
+    }
+
+    .ant-col-xl-push-5 {
+        left: 20.83333333%
+    }
+
+    .ant-col-xl-pull-5 {
+        right: 20.83333333%
+    }
+
+    .ant-col-xl-offset-5 {
+        margin-left: 20.83333333%
+    }
+
+    .ant-col-xl-order-5 {
+        -webkit-box-ordinal-group: 6;
+        -ms-flex-order: 5;
+        order: 5
+    }
+
+    .ant-col-xl-4 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 16.66666667%
+    }
+
+    .ant-col-xl-push-4 {
+        left: 16.66666667%
+    }
+
+    .ant-col-xl-pull-4 {
+        right: 16.66666667%
+    }
+
+    .ant-col-xl-offset-4 {
+        margin-left: 16.66666667%
+    }
+
+    .ant-col-xl-order-4 {
+        -webkit-box-ordinal-group: 5;
+        -ms-flex-order: 4;
+        order: 4
+    }
+
+    .ant-col-xl-3 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 12.5%
+    }
+
+    .ant-col-xl-push-3 {
+        left: 12.5%
+    }
+
+    .ant-col-xl-pull-3 {
+        right: 12.5%
+    }
+
+    .ant-col-xl-offset-3 {
+        margin-left: 12.5%
+    }
+
+    .ant-col-xl-order-3 {
+        -webkit-box-ordinal-group: 4;
+        -ms-flex-order: 3;
+        order: 3
+    }
+
+    .ant-col-xl-2 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 8.33333333%
+    }
+
+    .ant-col-xl-push-2 {
+        left: 8.33333333%
+    }
+
+    .ant-col-xl-pull-2 {
+        right: 8.33333333%
+    }
+
+    .ant-col-xl-offset-2 {
+        margin-left: 8.33333333%
+    }
+
+    .ant-col-xl-order-2 {
+        -webkit-box-ordinal-group: 3;
+        -ms-flex-order: 2;
+        order: 2
+    }
+
+    .ant-col-xl-1 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 4.16666667%
+    }
+
+    .ant-col-xl-push-1 {
+        left: 4.16666667%
+    }
+
+    .ant-col-xl-pull-1 {
+        right: 4.16666667%
+    }
+
+    .ant-col-xl-offset-1 {
+        margin-left: 4.16666667%
+    }
+
+    .ant-col-xl-order-1 {
+        -webkit-box-ordinal-group: 2;
+        -ms-flex-order: 1;
+        order: 1
+    }
+
+    .ant-col-xl-0 {
+        display: none
+    }
+
+    .ant-col-push-0 {
+        left: auto
+    }
+
+    .ant-col-pull-0 {
+        right: auto
+    }
+
+    .ant-col-xl-push-0 {
+        left: auto
+    }
+
+    .ant-col-xl-pull-0 {
+        right: auto
+    }
+
+    .ant-col-xl-offset-0 {
+        margin-left: 0
+    }
+
+    .ant-col-xl-order-0 {
+        -webkit-box-ordinal-group: 1;
+        -ms-flex-order: 0;
+        order: 0
+    }
+}
+
+@media (min-width:1600px) {
+    .ant-col-xxl-1, .ant-col-xxl-2, .ant-col-xxl-3, .ant-col-xxl-4, .ant-col-xxl-5, .ant-col-xxl-6, .ant-col-xxl-7, .ant-col-xxl-8, .ant-col-xxl-9, .ant-col-xxl-10, .ant-col-xxl-11, .ant-col-xxl-12, .ant-col-xxl-13, .ant-col-xxl-14, .ant-col-xxl-15, .ant-col-xxl-16, .ant-col-xxl-17, .ant-col-xxl-18, .ant-col-xxl-19, .ant-col-xxl-20, .ant-col-xxl-21, .ant-col-xxl-22, .ant-col-xxl-23, .ant-col-xxl-24 {
+        -webkit-box-flex: 0;
+        -ms-flex: 0 0 auto;
+        flex: 0 0 auto;
+        float: left
+    }
+
+    .ant-col-xxl-24 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 100%
+    }
+
+    .ant-col-xxl-push-24 {
+        left: 100%
+    }
+
+    .ant-col-xxl-pull-24 {
+        right: 100%
+    }
+
+    .ant-col-xxl-offset-24 {
+        margin-left: 100%
+    }
+
+    .ant-col-xxl-order-24 {
+        -webkit-box-ordinal-group: 25;
+        -ms-flex-order: 24;
+        order: 24
+    }
+
+    .ant-col-xxl-23 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 95.83333333%
+    }
+
+    .ant-col-xxl-push-23 {
+        left: 95.83333333%
+    }
+
+    .ant-col-xxl-pull-23 {
+        right: 95.83333333%
+    }
+
+    .ant-col-xxl-offset-23 {
+        margin-left: 95.83333333%
+    }
+
+    .ant-col-xxl-order-23 {
+        -webkit-box-ordinal-group: 24;
+        -ms-flex-order: 23;
+        order: 23
+    }
+
+    .ant-col-xxl-22 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 91.66666667%
+    }
+
+    .ant-col-xxl-push-22 {
+        left: 91.66666667%
+    }
+
+    .ant-col-xxl-pull-22 {
+        right: 91.66666667%
+    }
+
+    .ant-col-xxl-offset-22 {
+        margin-left: 91.66666667%
+    }
+
+    .ant-col-xxl-order-22 {
+        -webkit-box-ordinal-group: 23;
+        -ms-flex-order: 22;
+        order: 22
+    }
+
+    .ant-col-xxl-21 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 87.5%
+    }
+
+    .ant-col-xxl-push-21 {
+        left: 87.5%
+    }
+
+    .ant-col-xxl-pull-21 {
+        right: 87.5%
+    }
+
+    .ant-col-xxl-offset-21 {
+        margin-left: 87.5%
+    }
+
+    .ant-col-xxl-order-21 {
+        -webkit-box-ordinal-group: 22;
+        -ms-flex-order: 21;
+        order: 21
+    }
+
+    .ant-col-xxl-20 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 83.33333333%
+    }
+
+    .ant-col-xxl-push-20 {
+        left: 83.33333333%
+    }
+
+    .ant-col-xxl-pull-20 {
+        right: 83.33333333%
+    }
+
+    .ant-col-xxl-offset-20 {
+        margin-left: 83.33333333%
+    }
+
+    .ant-col-xxl-order-20 {
+        -webkit-box-ordinal-group: 21;
+        -ms-flex-order: 20;
+        order: 20
+    }
+
+    .ant-col-xxl-19 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 79.16666667%
+    }
+
+    .ant-col-xxl-push-19 {
+        left: 79.16666667%
+    }
+
+    .ant-col-xxl-pull-19 {
+        right: 79.16666667%
+    }
+
+    .ant-col-xxl-offset-19 {
+        margin-left: 79.16666667%
+    }
+
+    .ant-col-xxl-order-19 {
+        -webkit-box-ordinal-group: 20;
+        -ms-flex-order: 19;
+        order: 19
+    }
+
+    .ant-col-xxl-18 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 75%
+    }
+
+    .ant-col-xxl-push-18 {
+        left: 75%
+    }
+
+    .ant-col-xxl-pull-18 {
+        right: 75%
+    }
+
+    .ant-col-xxl-offset-18 {
+        margin-left: 75%
+    }
+
+    .ant-col-xxl-order-18 {
+        -webkit-box-ordinal-group: 19;
+        -ms-flex-order: 18;
+        order: 18
+    }
+
+    .ant-col-xxl-17 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 70.83333333%
+    }
+
+    .ant-col-xxl-push-17 {
+        left: 70.83333333%
+    }
+
+    .ant-col-xxl-pull-17 {
+        right: 70.83333333%
+    }
+
+    .ant-col-xxl-offset-17 {
+        margin-left: 70.83333333%
+    }
+
+    .ant-col-xxl-order-17 {
+        -webkit-box-ordinal-group: 18;
+        -ms-flex-order: 17;
+        order: 17
+    }
+
+    .ant-col-xxl-16 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 66.66666667%
+    }
+
+    .ant-col-xxl-push-16 {
+        left: 66.66666667%
+    }
+
+    .ant-col-xxl-pull-16 {
+        right: 66.66666667%
+    }
+
+    .ant-col-xxl-offset-16 {
+        margin-left: 66.66666667%
+    }
+
+    .ant-col-xxl-order-16 {
+        -webkit-box-ordinal-group: 17;
+        -ms-flex-order: 16;
+        order: 16
+    }
+
+    .ant-col-xxl-15 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 62.5%
+    }
+
+    .ant-col-xxl-push-15 {
+        left: 62.5%
+    }
+
+    .ant-col-xxl-pull-15 {
+        right: 62.5%
+    }
+
+    .ant-col-xxl-offset-15 {
+        margin-left: 62.5%
+    }
+
+    .ant-col-xxl-order-15 {
+        -webkit-box-ordinal-group: 16;
+        -ms-flex-order: 15;
+        order: 15
+    }
+
+    .ant-col-xxl-14 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 58.33333333%
+    }
+
+    .ant-col-xxl-push-14 {
+        left: 58.33333333%
+    }
+
+    .ant-col-xxl-pull-14 {
+        right: 58.33333333%
+    }
+
+    .ant-col-xxl-offset-14 {
+        margin-left: 58.33333333%
+    }
+
+    .ant-col-xxl-order-14 {
+        -webkit-box-ordinal-group: 15;
+        -ms-flex-order: 14;
+        order: 14
+    }
+
+    .ant-col-xxl-13 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 54.16666667%
+    }
+
+    .ant-col-xxl-push-13 {
+        left: 54.16666667%
+    }
+
+    .ant-col-xxl-pull-13 {
+        right: 54.16666667%
+    }
+
+    .ant-col-xxl-offset-13 {
+        margin-left: 54.16666667%
+    }
+
+    .ant-col-xxl-order-13 {
+        -webkit-box-ordinal-group: 14;
+        -ms-flex-order: 13;
+        order: 13
+    }
+
+    .ant-col-xxl-12 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 50%
+    }
+
+    .ant-col-xxl-push-12 {
+        left: 50%
+    }
+
+    .ant-col-xxl-pull-12 {
+        right: 50%
+    }
+
+    .ant-col-xxl-offset-12 {
+        margin-left: 50%
+    }
+
+    .ant-col-xxl-order-12 {
+        -webkit-box-ordinal-group: 13;
+        -ms-flex-order: 12;
+        order: 12
+    }
+
+    .ant-col-xxl-11 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 45.83333333%
+    }
+
+    .ant-col-xxl-push-11 {
+        left: 45.83333333%
+    }
+
+    .ant-col-xxl-pull-11 {
+        right: 45.83333333%
+    }
+
+    .ant-col-xxl-offset-11 {
+        margin-left: 45.83333333%
+    }
+
+    .ant-col-xxl-order-11 {
+        -webkit-box-ordinal-group: 12;
+        -ms-flex-order: 11;
+        order: 11
+    }
+
+    .ant-col-xxl-10 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 41.66666667%
+    }
+
+    .ant-col-xxl-push-10 {
+        left: 41.66666667%
+    }
+
+    .ant-col-xxl-pull-10 {
+        right: 41.66666667%
+    }
+
+    .ant-col-xxl-offset-10 {
+        margin-left: 41.66666667%
+    }
+
+    .ant-col-xxl-order-10 {
+        -webkit-box-ordinal-group: 11;
+        -ms-flex-order: 10;
+        order: 10
+    }
+
+    .ant-col-xxl-9 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 37.5%
+    }
+
+    .ant-col-xxl-push-9 {
+        left: 37.5%
+    }
+
+    .ant-col-xxl-pull-9 {
+        right: 37.5%
+    }
+
+    .ant-col-xxl-offset-9 {
+        margin-left: 37.5%
+    }
+
+    .ant-col-xxl-order-9 {
+        -webkit-box-ordinal-group: 10;
+        -ms-flex-order: 9;
+        order: 9
+    }
+
+    .ant-col-xxl-8 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 33.33333333%
+    }
+
+    .ant-col-xxl-push-8 {
+        left: 33.33333333%
+    }
+
+    .ant-col-xxl-pull-8 {
+        right: 33.33333333%
+    }
+
+    .ant-col-xxl-offset-8 {
+        margin-left: 33.33333333%
+    }
+
+    .ant-col-xxl-order-8 {
+        -webkit-box-ordinal-group: 9;
+        -ms-flex-order: 8;
+        order: 8
+    }
+
+    .ant-col-xxl-7 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 29.16666667%
+    }
+
+    .ant-col-xxl-push-7 {
+        left: 29.16666667%
+    }
+
+    .ant-col-xxl-pull-7 {
+        right: 29.16666667%
+    }
+
+    .ant-col-xxl-offset-7 {
+        margin-left: 29.16666667%
+    }
+
+    .ant-col-xxl-order-7 {
+        -webkit-box-ordinal-group: 8;
+        -ms-flex-order: 7;
+        order: 7
+    }
+
+    .ant-col-xxl-6 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 25%
+    }
+
+    .ant-col-xxl-push-6 {
+        left: 25%
+    }
+
+    .ant-col-xxl-pull-6 {
+        right: 25%
+    }
+
+    .ant-col-xxl-offset-6 {
+        margin-left: 25%
+    }
+
+    .ant-col-xxl-order-6 {
+        -webkit-box-ordinal-group: 7;
+        -ms-flex-order: 6;
+        order: 6
+    }
+
+    .ant-col-xxl-5 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 20.83333333%
+    }
+
+    .ant-col-xxl-push-5 {
+        left: 20.83333333%
+    }
+
+    .ant-col-xxl-pull-5 {
+        right: 20.83333333%
+    }
+
+    .ant-col-xxl-offset-5 {
+        margin-left: 20.83333333%
+    }
+
+    .ant-col-xxl-order-5 {
+        -webkit-box-ordinal-group: 6;
+        -ms-flex-order: 5;
+        order: 5
+    }
+
+    .ant-col-xxl-4 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 16.66666667%
+    }
+
+    .ant-col-xxl-push-4 {
+        left: 16.66666667%
+    }
+
+    .ant-col-xxl-pull-4 {
+        right: 16.66666667%
+    }
+
+    .ant-col-xxl-offset-4 {
+        margin-left: 16.66666667%
+    }
+
+    .ant-col-xxl-order-4 {
+        -webkit-box-ordinal-group: 5;
+        -ms-flex-order: 4;
+        order: 4
+    }
+
+    .ant-col-xxl-3 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 12.5%
+    }
+
+    .ant-col-xxl-push-3 {
+        left: 12.5%
+    }
+
+    .ant-col-xxl-pull-3 {
+        right: 12.5%
+    }
+
+    .ant-col-xxl-offset-3 {
+        margin-left: 12.5%
+    }
+
+    .ant-col-xxl-order-3 {
+        -webkit-box-ordinal-group: 4;
+        -ms-flex-order: 3;
+        order: 3
+    }
+
+    .ant-col-xxl-2 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 8.33333333%
+    }
+
+    .ant-col-xxl-push-2 {
+        left: 8.33333333%
+    }
+
+    .ant-col-xxl-pull-2 {
+        right: 8.33333333%
+    }
+
+    .ant-col-xxl-offset-2 {
+        margin-left: 8.33333333%
+    }
+
+    .ant-col-xxl-order-2 {
+        -webkit-box-ordinal-group: 3;
+        -ms-flex-order: 2;
+        order: 2
+    }
+
+    .ant-col-xxl-1 {
+        display: block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        width: 4.16666667%
+    }
+
+    .ant-col-xxl-push-1 {
+        left: 4.16666667%
+    }
+
+    .ant-col-xxl-pull-1 {
+        right: 4.16666667%
+    }
+
+    .ant-col-xxl-offset-1 {
+        margin-left: 4.16666667%
+    }
+
+    .ant-col-xxl-order-1 {
+        -webkit-box-ordinal-group: 2;
+        -ms-flex-order: 1;
+        order: 1
+    }
+
+    .ant-col-xxl-0 {
+        display: none
+    }
+
+    .ant-col-push-0 {
+        left: auto
+    }
+
+    .ant-col-pull-0 {
+        right: auto
+    }
+
+    .ant-col-xxl-push-0 {
+        left: auto
+    }
+
+    .ant-col-xxl-pull-0 {
+        right: auto
+    }
+
+    .ant-col-xxl-offset-0 {
+        margin-left: 0
+    }
+
+    .ant-col-xxl-order-0 {
+        -webkit-box-ordinal-group: 1;
+        -ms-flex-order: 0;
+        order: 0
+    }
+}
+
+.ant-input {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    font-variant: tabular-nums;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    display: inline-block;
+    width: 100%;
+    height: 32px;
+    padding: 4px 11px;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    line-height: 1.5;
+    background-color: #fff;
+    background-image: none;
+    border: 1px solid #d9d9d9;
+    border-radius: 2px;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-input::-moz-placeholder {
+        color: #bfbfbf;
+        opacity: 1
+    }
+
+    .ant-input:-ms-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-input::-webkit-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-input:-moz-placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-input:-ms-input-placeholder {
+        text-overflow: ellipsis
+    }
+
+    .ant-input:placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-input:focus, .ant-input:hover {
+        border-color: #ff7a45;
+        border-right-width: 1px !important
+    }
+
+    .ant-input:focus {
+        outline: 0;
+        -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+        box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+    }
+
+.ant-input-disabled {
+    color: rgba(0,0,0,.25);
+    background-color: #f5f5f5;
+    cursor: not-allowed;
+    opacity: 1
+}
+
+    .ant-input-disabled:hover {
+        border-color: #d9d9d9;
+        border-right-width: 1px !important
+    }
+
+.ant-input[disabled] {
+    color: rgba(0,0,0,.25);
+    background-color: #f5f5f5;
+    cursor: not-allowed;
+    opacity: 1
+}
+
+    .ant-input[disabled]:hover {
+        border-color: #d9d9d9;
+        border-right-width: 1px !important
+    }
+
+textarea.ant-input {
+    max-width: 100%;
+    height: auto;
+    min-height: 32px;
+    line-height: 1.5;
+    vertical-align: bottom;
+    -webkit-transition: all .3s,height 0s;
+    transition: all .3s,height 0s
+}
+
+.ant-input-lg {
+    height: 40px;
+    padding: 6px 11px;
+    font-size: 16px
+}
+
+.ant-input-sm {
+    height: 24px;
+    padding: 1px 7px
+}
+
+.ant-input-group {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    display: table;
+    width: 100%;
+    border-collapse: separate;
+    border-spacing: 0
+}
+
+    .ant-input-group[class*=col-] {
+        float: none;
+        padding-right: 0;
+        padding-left: 0
+    }
+
+    .ant-input-group > [class*=col-] {
+        padding-right: 8px
+    }
+
+        .ant-input-group > [class*=col-]:last-child {
+            padding-right: 0
+        }
+
+    .ant-input-group-addon, .ant-input-group-wrap, .ant-input-group > .ant-input {
+        display: table-cell
+    }
+
+        .ant-input-group-addon:not(:first-child):not(:last-child), .ant-input-group-wrap:not(:first-child):not(:last-child), .ant-input-group > .ant-input:not(:first-child):not(:last-child) {
+            border-radius: 0
+        }
+
+.ant-input-group-addon, .ant-input-group-wrap {
+    width: 1px;
+    white-space: nowrap;
+    vertical-align: middle
+}
+
+    .ant-input-group-wrap > * {
+        display: block !important
+    }
+
+.ant-input-group .ant-input {
+    float: left;
+    width: 100%;
+    margin-bottom: 0;
+    text-align: inherit
+}
+
+    .ant-input-group .ant-input:focus, .ant-input-group .ant-input:hover {
+        z-index: 1;
+        border-right-width: 1px
+    }
+
+.ant-input-group-addon {
+    position: relative;
+    padding: 0 11px;
+    color: rgba(0,0,0,.65);
+    font-weight: 400;
+    font-size: 14px;
+    text-align: center;
+    background-color: #fafafa;
+    border: 1px solid #d9d9d9;
+    border-radius: 2px;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-input-group-addon .ant-select {
+        margin: -5px -11px
+    }
+
+        .ant-input-group-addon .ant-select .ant-select-selection {
+            margin: -1px;
+            background-color: inherit;
+            border: 1px solid transparent;
+            -webkit-box-shadow: none;
+            box-shadow: none
+        }
+
+    .ant-input-group-addon .ant-select-focused .ant-select-selection, .ant-input-group-addon .ant-select-open .ant-select-selection {
+        color: #fa541c
+    }
+
+    .ant-input-group-addon > i:only-child:after {
+        position: absolute;
+        top: 0;
+        right: 0;
+        bottom: 0;
+        left: 0;
+        content: ""
+    }
+
+    .ant-input-group-addon:first-child, .ant-input-group-addon:first-child .ant-select .ant-select-selection, .ant-input-group > .ant-input:first-child, .ant-input-group > .ant-input:first-child .ant-select .ant-select-selection {
+        border-top-right-radius: 0;
+        border-bottom-right-radius: 0
+    }
+
+.ant-input-group > .ant-input-affix-wrapper:not(:first-child) .ant-input {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0
+}
+
+.ant-input-group > .ant-input-affix-wrapper:not(:last-child) .ant-input {
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0
+}
+
+.ant-input-group-addon:first-child {
+    border-right: 0
+}
+
+.ant-input-group-addon:last-child {
+    border-left: 0
+}
+
+    .ant-input-group-addon:last-child, .ant-input-group-addon:last-child .ant-select .ant-select-selection, .ant-input-group > .ant-input:last-child, .ant-input-group > .ant-input:last-child .ant-select .ant-select-selection {
+        border-top-left-radius: 0;
+        border-bottom-left-radius: 0
+    }
+
+.ant-input-group-lg .ant-input, .ant-input-group-lg > .ant-input-group-addon {
+    height: 40px;
+    padding: 6px 11px;
+    font-size: 16px
+}
+
+.ant-input-group-sm .ant-input, .ant-input-group-sm > .ant-input-group-addon {
+    height: 24px;
+    padding: 1px 7px
+}
+
+.ant-input-group-lg .ant-select-selection--single {
+    height: 40px
+}
+
+.ant-input-group-sm .ant-select-selection--single {
+    height: 24px
+}
+
+.ant-input-group .ant-input-affix-wrapper {
+    display: table-cell;
+    float: left;
+    width: 100%
+}
+
+.ant-input-group.ant-input-group-compact {
+    display: block;
+    zoom: 1
+}
+
+    .ant-input-group.ant-input-group-compact:after, .ant-input-group.ant-input-group-compact:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-input-group.ant-input-group-compact:after {
+        clear: both
+    }
+
+    .ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child), .ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child), .ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child) {
+        border-right-width: 1px
+    }
+
+        .ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):focus, .ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):hover, .ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):focus, .ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):hover, .ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):focus, .ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):hover {
+            z-index: 1
+        }
+
+    .ant-input-group.ant-input-group-compact > * {
+        display: inline-block;
+        float: none;
+        vertical-align: top;
+        border-radius: 0
+    }
+
+    .ant-input-group.ant-input-group-compact > :not(:last-child) {
+        margin-right: -1px;
+        border-right-width: 1px
+    }
+
+    .ant-input-group.ant-input-group-compact .ant-input {
+        float: none
+    }
+
+    .ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input, .ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input, .ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection, .ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input {
+        border-right-width: 1px;
+        border-radius: 0
+    }
+
+        .ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:focus, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:hover, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-select-focused, .ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:focus, .ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:hover, .ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:focus, .ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:hover {
+            z-index: 1
+        }
+
+    .ant-input-group.ant-input-group-compact > .ant-calendar-picker:first-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper:first-child .ant-mention-editor, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selection, .ant-input-group.ant-input-group-compact > .ant-time-picker:first-child .ant-time-picker-input, .ant-input-group.ant-input-group-compact > :first-child {
+        border-top-left-radius: 2px;
+        border-bottom-left-radius: 2px
+    }
+
+    .ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection, .ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input, .ant-input-group.ant-input-group-compact > :last-child {
+        border-right-width: 1px;
+        border-top-right-radius: 2px;
+        border-bottom-right-radius: 2px
+    }
+
+    .ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input {
+        vertical-align: top
+    }
+
+.ant-input-group-wrapper {
+    display: inline-block;
+    width: 100%;
+    text-align: start;
+    vertical-align: top
+}
+
+.ant-input-affix-wrapper {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    display: inline-block;
+    width: 100%;
+    text-align: start
+}
+
+    .ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {
+        border-color: #ff7a45;
+        border-right-width: 1px !important
+    }
+
+    .ant-input-affix-wrapper .ant-input {
+        position: relative;
+        text-align: inherit
+    }
+
+    .ant-input-affix-wrapper .ant-input-prefix, .ant-input-affix-wrapper .ant-input-suffix {
+        position: absolute;
+        top: 50%;
+        z-index: 2;
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-align: center;
+        -ms-flex-align: center;
+        align-items: center;
+        color: rgba(0,0,0,.65);
+        line-height: 0;
+        -webkit-transform: translateY(-50%);
+        transform: translateY(-50%)
+    }
+
+        .ant-input-affix-wrapper .ant-input-prefix :not(.anticon), .ant-input-affix-wrapper .ant-input-suffix :not(.anticon) {
+            line-height: 1.5
+        }
+
+    .ant-input-affix-wrapper .ant-input-disabled ~ .ant-input-suffix .anticon {
+        color: rgba(0,0,0,.25);
+        cursor: not-allowed
+    }
+
+    .ant-input-affix-wrapper .ant-input-prefix {
+        left: 12px
+    }
+
+    .ant-input-affix-wrapper .ant-input-suffix {
+        right: 12px
+    }
+
+    .ant-input-affix-wrapper .ant-input:not(:first-child) {
+        padding-left: 30px
+    }
+
+    .ant-input-affix-wrapper .ant-input:not(:last-child) {
+        padding-right: 30px
+    }
+
+    .ant-input-affix-wrapper.ant-input-affix-wrapper-input-with-clear-btn .ant-input:not(:last-child) {
+        padding-right: 49px
+    }
+
+    .ant-input-affix-wrapper.ant-input-affix-wrapper-textarea-with-clear-btn .ant-input {
+        padding-right: 22px
+    }
+
+.ant-input-password-icon {
+    color: rgba(0,0,0,.45);
+    cursor: pointer;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-input-password-icon:hover {
+        color: #333
+    }
+
+.ant-input-clear-icon {
+    color: rgba(0,0,0,.25);
+    font-size: 12px;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s;
+    vertical-align: 0
+}
+
+    .ant-input-clear-icon:hover {
+        color: rgba(0,0,0,.45)
+    }
+
+    .ant-input-clear-icon:active {
+        color: rgba(0,0,0,.65)
+    }
+
+    .ant-input-clear-icon + i {
+        margin-left: 6px
+    }
+
+.ant-input-textarea-clear-icon {
+    color: rgba(0,0,0,.25);
+    font-size: 12px;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s;
+    position: absolute;
+    top: 0;
+    right: 0;
+    margin: 8px 8px 0 0
+}
+
+    .ant-input-textarea-clear-icon:hover {
+        color: rgba(0,0,0,.45)
+    }
+
+    .ant-input-textarea-clear-icon:active {
+        color: rgba(0,0,0,.65)
+    }
+
+    .ant-input-textarea-clear-icon + i {
+        margin-left: 6px
+    }
+
+.ant-input-search-icon {
+    color: rgba(0,0,0,.45);
+    cursor: pointer;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-input-search-icon:hover {
+        color: rgba(0,0,0,.8)
+    }
+
+.ant-input-search-enter-button input {
+    border-right: 0
+}
+
+    .ant-input-search-enter-button + .ant-input-group-addon, .ant-input-search-enter-button input + .ant-input-group-addon {
+        padding: 0;
+        border: 0
+    }
+
+        .ant-input-search-enter-button + .ant-input-group-addon .ant-input-search-button, .ant-input-search-enter-button input + .ant-input-group-addon .ant-input-search-button {
+            border-top-left-radius: 0;
+            border-bottom-left-radius: 0
+        }
+
+.ant-input-number {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    font-variant: tabular-nums;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    width: 100%;
+    height: 32px;
+    padding: 4px 11px;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    line-height: 1.5;
+    background-color: #fff;
+    background-image: none;
+    -webkit-transition: all .3s;
+    transition: all .3s;
+    display: inline-block;
+    width: 90px;
+    margin: 0;
+    padding: 0;
+    border: 1px solid #d9d9d9;
+    border-radius: 2px
+}
+
+    .ant-input-number::-moz-placeholder {
+        color: #bfbfbf;
+        opacity: 1
+    }
+
+    .ant-input-number:-ms-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-input-number::-webkit-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-input-number:-moz-placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-input-number:-ms-input-placeholder {
+        text-overflow: ellipsis
+    }
+
+    .ant-input-number:placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-input-number:focus {
+        border-color: #ff7a45;
+        border-right-width: 1px !important;
+        outline: 0;
+        -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+        box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+    }
+
+    .ant-input-number[disabled] {
+        color: rgba(0,0,0,.25);
+        background-color: #f5f5f5;
+        cursor: not-allowed;
+        opacity: 1
+    }
+
+        .ant-input-number[disabled]:hover {
+            border-color: #d9d9d9;
+            border-right-width: 1px !important
+        }
+
+textarea.ant-input-number {
+    max-width: 100%;
+    height: auto;
+    min-height: 32px;
+    line-height: 1.5;
+    vertical-align: bottom;
+    -webkit-transition: all .3s,height 0s;
+    transition: all .3s,height 0s
+}
+
+.ant-input-number-lg {
+    height: 40px;
+    padding: 6px 11px
+}
+
+.ant-input-number-sm {
+    height: 24px;
+    padding: 1px 7px
+}
+
+.ant-input-number-handler {
+    position: relative;
+    display: block;
+    width: 100%;
+    height: 50%;
+    overflow: hidden;
+    color: rgba(0,0,0,.45);
+    font-weight: 700;
+    line-height: 0;
+    text-align: center;
+    -webkit-transition: all .1s linear;
+    transition: all .1s linear
+}
+
+    .ant-input-number-handler:active {
+        background: #f4f4f4
+    }
+
+    .ant-input-number-handler:hover .ant-input-number-handler-down-inner, .ant-input-number-handler:hover .ant-input-number-handler-up-inner {
+        color: #ff7a45
+    }
+
+.ant-input-number-handler-down-inner, .ant-input-number-handler-up-inner {
+    display: inline-block;
+    color: inherit;
+    font-style: normal;
+    line-height: 0;
+    text-align: center;
+    text-transform: none;
+    vertical-align: -.125em;
+    text-rendering: optimizeLegibility;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+    position: absolute;
+    right: 4px;
+    width: 12px;
+    height: 12px;
+    color: rgba(0,0,0,.45);
+    line-height: 12px;
+    -webkit-transition: all .1s linear;
+    transition: all .1s linear;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+    .ant-input-number-handler-down-inner > *, .ant-input-number-handler-up-inner > * {
+        line-height: 1
+    }
+
+    .ant-input-number-handler-down-inner svg, .ant-input-number-handler-up-inner svg {
+        display: inline-block
+    }
+
+    .ant-input-number-handler-down-inner:before, .ant-input-number-handler-up-inner:before {
+        display: none
+    }
+
+    .ant-input-number-handler-down-inner .ant-input-number-handler-down-inner-icon, .ant-input-number-handler-down-inner .ant-input-number-handler-up-inner-icon, .ant-input-number-handler-up-inner .ant-input-number-handler-down-inner-icon, .ant-input-number-handler-up-inner .ant-input-number-handler-up-inner-icon {
+        display: block
+    }
+
+.ant-input-number-focused, .ant-input-number:hover {
+    border-color: #ff7a45;
+    border-right-width: 1px !important
+}
+
+.ant-input-number-focused {
+    outline: 0;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-input-number-disabled {
+    color: rgba(0,0,0,.25);
+    background-color: #f5f5f5;
+    cursor: not-allowed;
+    opacity: 1
+}
+
+    .ant-input-number-disabled:hover {
+        border-color: #d9d9d9;
+        border-right-width: 1px !important
+    }
+
+    .ant-input-number-disabled .ant-input-number-input {
+        cursor: not-allowed
+    }
+
+    .ant-input-number-disabled .ant-input-number-handler-wrap {
+        display: none
+    }
+
+.ant-input-number-input {
+    width: 100%;
+    height: 30px;
+    padding: 0 11px;
+    text-align: left;
+    background-color: transparent;
+    border: 0;
+    border-radius: 2px;
+    outline: 0;
+    -webkit-transition: all .3s linear;
+    transition: all .3s linear;
+    -moz-appearance: textfield !important
+}
+
+    .ant-input-number-input::-moz-placeholder {
+        color: #bfbfbf;
+        opacity: 1
+    }
+
+    .ant-input-number-input:-ms-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-input-number-input::-webkit-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-input-number-input:-moz-placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-input-number-input:-ms-input-placeholder {
+        text-overflow: ellipsis
+    }
+
+    .ant-input-number-input:placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-input-number-input[type=number]::-webkit-inner-spin-button, .ant-input-number-input[type=number]::-webkit-outer-spin-button {
+        margin: 0;
+        -webkit-appearance: none
+    }
+
+.ant-input-number-lg {
+    padding: 0;
+    font-size: 16px
+}
+
+    .ant-input-number-lg input {
+        height: 38px
+    }
+
+.ant-input-number-sm {
+    padding: 0
+}
+
+    .ant-input-number-sm input {
+        height: 22px;
+        padding: 0 7px
+    }
+
+.ant-input-number-handler-wrap {
+    position: absolute;
+    top: 0;
+    right: 0;
+    width: 22px;
+    height: 100%;
+    background: #fff;
+    border-left: 1px solid #d9d9d9;
+    border-radius: 0 2px 2px 0;
+    opacity: 0;
+    -webkit-transition: opacity .24s linear .1s;
+    transition: opacity .24s linear .1s
+}
+
+    .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner, .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner {
+        display: inline-block;
+        font-size: 12px;
+        font-size: 7px\9;
+        -webkit-transform: scale(.58333333) rotate(0deg);
+        transform: scale(.58333333) rotate(0deg);
+        min-width: auto;
+        margin-right: 0
+    }
+
+:root .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner, :root .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner {
+    font-size: 12px
+}
+
+.ant-input-number-handler-wrap:hover .ant-input-number-handler {
+    height: 40%
+}
+
+.ant-input-number:hover .ant-input-number-handler-wrap {
+    opacity: 1
+}
+
+.ant-input-number-handler-up {
+    border-top-right-radius: 2px;
+    cursor: pointer
+}
+
+.ant-input-number-handler-up-inner {
+    top: 50%;
+    margin-top: -5px;
+    text-align: center
+}
+
+.ant-input-number-handler-up:hover {
+    height: 60% !important
+}
+
+.ant-input-number-handler-down {
+    top: 0;
+    border-top: 1px solid #d9d9d9;
+    border-bottom-right-radius: 2px;
+    cursor: pointer
+}
+
+.ant-input-number-handler-down-inner {
+    top: 50%;
+    margin-top: -6px;
+    text-align: center
+}
+
+.ant-input-number-handler-down:hover {
+    height: 60% !important
+}
+
+.ant-input-number-handler-down-disabled, .ant-input-number-handler-up-disabled {
+    cursor: not-allowed
+}
+
+    .ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner, .ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner {
+        color: rgba(0,0,0,.25)
+    }
+
+.ant-layout {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-flex: 1;
+    -ms-flex: auto;
+    flex: auto;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    min-height: 0;
+    background: #f0f2f5
+}
+
+    .ant-layout, .ant-layout * {
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box
+    }
+
+        .ant-layout.ant-layout-has-sider {
+            -webkit-box-orient: horizontal;
+            -webkit-box-direction: normal;
+            -ms-flex-direction: row;
+            flex-direction: row
+        }
+
+            .ant-layout.ant-layout-has-sider > .ant-layout, .ant-layout.ant-layout-has-sider > .ant-layout-content {
+                overflow-x: hidden
+            }
+
+.ant-layout-footer, .ant-layout-header {
+    -webkit-box-flex: 0;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto
+}
+
+.ant-layout-header {
+    height: 64px;
+    padding: 0 50px;
+    line-height: 64px;
+    background: #001529
+}
+
+.ant-layout-footer {
+    padding: 24px 50px;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    background: #f0f2f5
+}
+
+.ant-layout-content {
+    -webkit-box-flex: 1;
+    -ms-flex: auto;
+    flex: auto;
+    min-height: 0
+}
+
+.ant-layout-sider {
+    position: relative;
+    min-width: 0;
+    background: #001529;
+    -webkit-transition: all .2s;
+    transition: all .2s
+}
+
+.ant-layout-sider-children {
+    height: 100%;
+    margin-top: -.1px;
+    padding-top: .1px
+}
+
+.ant-layout-sider-has-trigger {
+    padding-bottom: 48px
+}
+
+.ant-layout-sider-right {
+    -webkit-box-ordinal-group: 2;
+    -ms-flex-order: 1;
+    order: 1
+}
+
+.ant-layout-sider-trigger {
+    position: fixed;
+    bottom: 0;
+    z-index: 1;
+    height: 48px;
+    color: #fff;
+    line-height: 48px;
+    text-align: center;
+    background: #002140;
+    cursor: pointer;
+    -webkit-transition: all .2s;
+    transition: all .2s
+}
+
+.ant-layout-sider-zero-width > * {
+    overflow: hidden
+}
+
+.ant-layout-sider-zero-width-trigger {
+    position: absolute;
+    top: 64px;
+    right: -36px;
+    z-index: 1;
+    width: 36px;
+    height: 42px;
+    color: #fff;
+    font-size: 18px;
+    line-height: 42px;
+    text-align: center;
+    background: #001529;
+    border-radius: 0 2px 2px 0;
+    cursor: pointer;
+    -webkit-transition: background .3s ease;
+    transition: background .3s ease
+}
+
+    .ant-layout-sider-zero-width-trigger:hover {
+        background: #192c3e
+    }
+
+.ant-layout-sider-zero-width-trigger-right {
+    left: -36px;
+    border-radius: 2px 0 0 2px
+}
+
+.ant-layout-sider-light {
+    background: #fff
+}
+
+    .ant-layout-sider-light .ant-layout-sider-trigger, .ant-layout-sider-light .ant-layout-sider-zero-width-trigger {
+        color: rgba(0,0,0,.65);
+        background: #fff
+    }
+
+.ant-list {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative
+}
+
+    .ant-list * {
+        outline: none
+    }
+
+.ant-list-pagination {
+    margin-top: 24px;
+    text-align: right
+}
+
+    .ant-list-pagination .ant-pagination-options {
+        text-align: left
+    }
+
+.ant-list-more {
+    margin-top: 12px;
+    text-align: center
+}
+
+    .ant-list-more button {
+        padding-right: 32px;
+        padding-left: 32px
+    }
+
+.ant-list-spin {
+    min-height: 40px;
+    text-align: center
+}
+
+.ant-list-empty-text {
+    padding: 16px;
+    color: rgba(0,0,0,.25);
+    font-size: 14px;
+    text-align: center
+}
+
+.ant-list-items {
+    margin: 0;
+    padding: 0;
+    list-style: none
+}
+
+.ant-list-item {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    -webkit-box-pack: justify;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+    padding: 12px 0
+}
+
+.ant-list-item-content {
+    color: rgba(0,0,0,.65)
+}
+
+.ant-list-item-meta {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    -webkit-box-align: start;
+    -ms-flex-align: start;
+    align-items: flex-start;
+    font-size: 0
+}
+
+.ant-list-item-meta-avatar {
+    margin-right: 16px
+}
+
+.ant-list-item-meta-content {
+    -webkit-box-flex: 1;
+    -ms-flex: 1 0;
+    flex: 1 0
+}
+
+.ant-list-item-meta-title {
+    margin-bottom: 4px;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    line-height: 22px
+}
+
+    .ant-list-item-meta-title > a {
+        color: rgba(0,0,0,.65);
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+        .ant-list-item-meta-title > a:hover {
+            color: #fa541c
+        }
+
+.ant-list-item-meta-description {
+    color: rgba(0,0,0,.45);
+    font-size: 14px;
+    line-height: 22px
+}
+
+.ant-list-item-action {
+    -webkit-box-flex: 0;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    margin-left: 48px;
+    padding: 0;
+    font-size: 0;
+    list-style: none
+}
+
+    .ant-list-item-action > li {
+        position: relative;
+        display: inline-block;
+        padding: 0 8px;
+        color: rgba(0,0,0,.45);
+        font-size: 14px;
+        line-height: 22px;
+        text-align: center;
+        cursor: pointer
+    }
+
+        .ant-list-item-action > li:first-child {
+            padding-left: 0
+        }
+
+.ant-list-item-action-split {
+    position: absolute;
+    top: 50%;
+    right: 0;
+    width: 1px;
+    height: 14px;
+    margin-top: -7px;
+    background-color: #e8e8e8
+}
+
+.ant-list-footer, .ant-list-header {
+    background: transparent
+}
+
+.ant-list-footer, .ant-list-header {
+    padding-top: 12px;
+    padding-bottom: 12px
+}
+
+.ant-list-empty {
+    padding: 16px 0;
+    color: rgba(0,0,0,.45);
+    font-size: 12px;
+    text-align: center
+}
+
+.ant-list-split .ant-list-item {
+    border-bottom: 1px solid #e8e8e8
+}
+
+    .ant-list-split .ant-list-item:last-child {
+        border-bottom: none
+    }
+
+.ant-list-split .ant-list-header {
+    border-bottom: 1px solid #e8e8e8
+}
+
+.ant-list-loading .ant-list-spin-nested-loading {
+    min-height: 32px
+}
+
+.ant-list-something-after-last-item .ant-spin-container > .ant-list-items > .ant-list-item:last-child {
+    border-bottom: 1px solid #e8e8e8
+}
+
+.ant-list-lg .ant-list-item {
+    padding-top: 16px;
+    padding-bottom: 16px
+}
+
+.ant-list-sm .ant-list-item {
+    padding-top: 8px;
+    padding-bottom: 8px
+}
+
+.ant-list-vertical .ant-list-item {
+    -webkit-box-align: initial;
+    -ms-flex-align: initial;
+    align-items: normal
+}
+
+.ant-list-vertical .ant-list-item-main {
+    display: block;
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1
+}
+
+.ant-list-vertical .ant-list-item-extra {
+    margin-left: 40px
+}
+
+.ant-list-vertical .ant-list-item-meta {
+    margin-bottom: 16px
+}
+
+.ant-list-vertical .ant-list-item-meta-title {
+    margin-bottom: 12px;
+    color: rgba(0,0,0,.85);
+    font-size: 16px;
+    line-height: 24px
+}
+
+.ant-list-vertical .ant-list-item-action {
+    margin-top: 16px;
+    margin-left: auto
+}
+
+    .ant-list-vertical .ant-list-item-action > li {
+        padding: 0 16px
+    }
+
+        .ant-list-vertical .ant-list-item-action > li:first-child {
+            padding-left: 0
+        }
+
+.ant-list-grid .ant-col > .ant-list-item {
+    display: block;
+    max-width: 100%;
+    margin-bottom: 16px;
+    padding-top: 0;
+    padding-bottom: 0;
+    border-bottom: none
+}
+
+.ant-list-item-no-flex {
+    display: block
+}
+
+.ant-list:not(.ant-list-vertical) .ant-list-item-no-flex .ant-list-item-action {
+    float: right
+}
+
+.ant-list-bordered {
+    border: 1px solid #d9d9d9;
+    border-radius: 2px
+}
+
+    .ant-list-bordered .ant-list-footer, .ant-list-bordered .ant-list-header, .ant-list-bordered .ant-list-item {
+        padding-right: 24px;
+        padding-left: 24px
+    }
+
+    .ant-list-bordered .ant-list-item {
+        border-bottom: 1px solid #e8e8e8
+    }
+
+    .ant-list-bordered .ant-list-pagination {
+        margin: 16px 24px
+    }
+
+    .ant-list-bordered.ant-list-sm .ant-list-item {
+        padding-right: 16px;
+        padding-left: 16px
+    }
+
+    .ant-list-bordered.ant-list-sm .ant-list-footer, .ant-list-bordered.ant-list-sm .ant-list-header {
+        padding: 8px 16px
+    }
+
+    .ant-list-bordered.ant-list-lg .ant-list-footer, .ant-list-bordered.ant-list-lg .ant-list-header {
+        padding: 16px 24px
+    }
+
+@media screen and (max-width:768px) {
+    .ant-list-item-action, .ant-list-vertical .ant-list-item-extra {
+        margin-left: 24px
+    }
+}
+
+@media screen and (max-width:576px) {
+    .ant-list-item {
+        -ms-flex-wrap: wrap;
+        flex-wrap: wrap
+    }
+
+    .ant-list-item-action {
+        margin-left: 12px
+    }
+
+    .ant-list-vertical .ant-list-item {
+        -ms-flex-wrap: wrap-reverse;
+        flex-wrap: wrap-reverse
+    }
+
+    .ant-list-vertical .ant-list-item-main {
+        min-width: 220px
+    }
+
+    .ant-list-vertical .ant-list-item-extra {
+        margin: auto auto 16px
+    }
+}
+
+.ant-mentions {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    font-variant: tabular-nums;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    width: 100%;
+    height: 32px;
+    padding: 4px 11px;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    background-color: #fff;
+    background-image: none;
+    border: 1px solid #d9d9d9;
+    border-radius: 2px;
+    -webkit-transition: all .3s;
+    transition: all .3s;
+    position: relative;
+    display: inline-block;
+    height: auto;
+    padding: 0;
+    overflow: hidden;
+    line-height: 1.5;
+    white-space: pre-wrap;
+    vertical-align: bottom
+}
+
+    .ant-mentions::-moz-placeholder {
+        color: #bfbfbf;
+        opacity: 1
+    }
+
+    .ant-mentions:-ms-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-mentions::-webkit-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-mentions:-moz-placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-mentions:-ms-input-placeholder {
+        text-overflow: ellipsis
+    }
+
+    .ant-mentions:placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-mentions:focus, .ant-mentions:hover {
+        border-color: #ff7a45;
+        border-right-width: 1px !important
+    }
+
+    .ant-mentions:focus {
+        outline: 0;
+        -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+        box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+    }
+
+.ant-mentions-disabled {
+    color: rgba(0,0,0,.25);
+    background-color: #f5f5f5;
+    cursor: not-allowed;
+    opacity: 1
+}
+
+    .ant-mentions-disabled:hover {
+        border-color: #d9d9d9;
+        border-right-width: 1px !important
+    }
+
+.ant-mentions[disabled] {
+    color: rgba(0,0,0,.25);
+    background-color: #f5f5f5;
+    cursor: not-allowed;
+    opacity: 1
+}
+
+    .ant-mentions[disabled]:hover {
+        border-color: #d9d9d9;
+        border-right-width: 1px !important
+    }
+
+textarea.ant-mentions {
+    max-width: 100%;
+    height: auto;
+    min-height: 32px;
+    line-height: 1.5;
+    vertical-align: bottom;
+    -webkit-transition: all .3s,height 0s;
+    transition: all .3s,height 0s
+}
+
+.ant-mentions-lg {
+    height: 40px;
+    padding: 6px 11px;
+    font-size: 16px
+}
+
+.ant-mentions-sm {
+    height: 24px;
+    padding: 1px 7px
+}
+
+.ant-mentions-disabled > textarea {
+    color: rgba(0,0,0,.25);
+    background-color: #f5f5f5;
+    cursor: not-allowed;
+    opacity: 1
+}
+
+    .ant-mentions-disabled > textarea:hover {
+        border-color: #d9d9d9;
+        border-right-width: 1px !important
+    }
+
+.ant-mentions-focused {
+    border-color: #ff7a45;
+    border-right-width: 1px !important;
+    outline: 0;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-mentions-measure, .ant-mentions > textarea {
+    min-height: 30px;
+    margin: 0;
+    padding: 4px 11px;
+    overflow: inherit;
+    overflow-x: hidden;
+    overflow-y: auto;
+    font-weight: inherit;
+    font-size: inherit;
+    font-family: inherit;
+    font-style: inherit;
+    font-variant: inherit;
+    font-size-adjust: inherit;
+    font-stretch: inherit;
+    line-height: inherit;
+    direction: inherit;
+    letter-spacing: inherit;
+    white-space: inherit;
+    text-align: inherit;
+    vertical-align: top;
+    word-wrap: break-word;
+    word-break: inherit;
+    -moz-tab-size: inherit;
+    -o-tab-size: inherit;
+    tab-size: inherit
+}
+
+.ant-mentions > textarea {
+    width: 100%;
+    border: none;
+    outline: none;
+    resize: none
+}
+
+    .ant-mentions > textarea::-moz-placeholder {
+        color: #bfbfbf;
+        opacity: 1
+    }
+
+    .ant-mentions > textarea:-ms-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-mentions > textarea::-webkit-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-mentions > textarea:-moz-placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-mentions > textarea:-ms-input-placeholder {
+        text-overflow: ellipsis
+    }
+
+    .ant-mentions > textarea:placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-mentions > textarea:-moz-read-only {
+        cursor: default
+    }
+
+    .ant-mentions > textarea:read-only {
+        cursor: default
+    }
+
+.ant-mentions-measure {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: -1;
+    color: transparent;
+    pointer-events: none
+}
+
+    .ant-mentions-measure > span {
+        display: inline-block;
+        min-height: 1em
+    }
+
+.ant-mentions-dropdown {
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: absolute;
+    top: -9999px;
+    left: -9999px;
+    z-index: 1050;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    font-size: 14px;
+    font-variant: normal;
+    background-color: #fff;
+    border-radius: 2px;
+    outline: none;
+    -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+.ant-mentions-dropdown-hidden {
+    display: none
+}
+
+.ant-mentions-dropdown-menu {
+    max-height: 250px;
+    margin-bottom: 0;
+    padding-left: 0;
+    overflow: auto;
+    list-style: none;
+    outline: none
+}
+
+.ant-mentions-dropdown-menu-item {
+    position: relative;
+    display: block;
+    min-width: 100px;
+    padding: 5px 12px;
+    overflow: hidden;
+    color: rgba(0,0,0,.65);
+    font-weight: 400;
+    line-height: 22px;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+    cursor: pointer;
+    -webkit-transition: background .3s ease;
+    transition: background .3s ease
+}
+
+    .ant-mentions-dropdown-menu-item:hover {
+        background-color: #fff2e8
+    }
+
+    .ant-mentions-dropdown-menu-item:first-child {
+        border-radius: 2px 2px 0 0
+    }
+
+    .ant-mentions-dropdown-menu-item:last-child {
+        border-radius: 0 0 2px 2px
+    }
+
+.ant-mentions-dropdown-menu-item-disabled {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed
+}
+
+    .ant-mentions-dropdown-menu-item-disabled:hover {
+        color: rgba(0,0,0,.25);
+        background-color: #fff;
+        cursor: not-allowed
+    }
+
+.ant-mentions-dropdown-menu-item-selected {
+    color: rgba(0,0,0,.65);
+    font-weight: 600;
+    background-color: #fafafa
+}
+
+.ant-mentions-dropdown-menu-item-active {
+    background-color: #fff2e8
+}
+
+.ant-menu {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    margin-bottom: 0;
+    padding-left: 0;
+    color: rgba(0,0,0,.65);
+    line-height: 0;
+    list-style: none;
+    background: #fff;
+    outline: none;
+    -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    -webkit-transition: background .3s,width .3s cubic-bezier(.2,0,0,1) 0s;
+    transition: background .3s,width .3s cubic-bezier(.2,0,0,1) 0s;
+    zoom: 1
+}
+
+    .ant-menu:after, .ant-menu:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-menu:after {
+        clear: both
+    }
+
+    .ant-menu ol, .ant-menu ul {
+        margin: 0;
+        padding: 0;
+        list-style: none
+    }
+
+.ant-menu-hidden {
+    display: none
+}
+
+.ant-menu-item-group-title {
+    padding: 8px 16px;
+    color: rgba(0,0,0,.45);
+    font-size: 14px;
+    line-height: 1.5;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+.ant-menu-submenu, .ant-menu-submenu-inline {
+    -webkit-transition: border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1);
+    transition: border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-menu-submenu-selected {
+    color: #fa541c
+}
+
+.ant-menu-item:active, .ant-menu-submenu-title:active {
+    background: #fff2e8
+}
+
+.ant-menu-submenu .ant-menu-sub {
+    cursor: auto;
+    -webkit-transition: background .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);
+    transition: background .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-menu-item > a {
+    display: block;
+    color: rgba(0,0,0,.65)
+}
+
+    .ant-menu-item > a:hover {
+        color: #fa541c
+    }
+
+    .ant-menu-item > a:before {
+        position: absolute;
+        top: 0;
+        right: 0;
+        bottom: 0;
+        left: 0;
+        background-color: transparent;
+        content: ""
+    }
+
+.ant-menu-item > .ant-badge > a {
+    color: rgba(0,0,0,.65)
+}
+
+    .ant-menu-item > .ant-badge > a:hover {
+        color: #fa541c
+    }
+
+.ant-menu-item-divider {
+    height: 1px;
+    overflow: hidden;
+    line-height: 0;
+    background-color: #e8e8e8
+}
+
+.ant-menu-item-active, .ant-menu-item:hover, .ant-menu-submenu-active, .ant-menu-submenu-title:hover, .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open {
+    color: #fa541c
+}
+
+.ant-menu-horizontal .ant-menu-item, .ant-menu-horizontal .ant-menu-submenu {
+    margin-top: -1px
+}
+
+.ant-menu-horizontal > .ant-menu-item-active, .ant-menu-horizontal > .ant-menu-item:hover, .ant-menu-horizontal > .ant-menu-submenu .ant-menu-submenu-title:hover {
+    background-color: transparent
+}
+
+.ant-menu-item-selected, .ant-menu-item-selected > a, .ant-menu-item-selected > a:hover {
+    color: #fa541c
+}
+
+.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
+    background-color: #fff2e8
+}
+
+.ant-menu-inline, .ant-menu-vertical, .ant-menu-vertical-left {
+    border-right: 1px solid #e8e8e8
+}
+
+.ant-menu-vertical-right {
+    border-left: 1px solid #e8e8e8
+}
+
+    .ant-menu-vertical-left.ant-menu-sub, .ant-menu-vertical-right.ant-menu-sub, .ant-menu-vertical.ant-menu-sub {
+        min-width: 160px;
+        padding: 0;
+        border-right: 0;
+        -webkit-transform-origin: 0 0;
+        transform-origin: 0 0
+    }
+
+        .ant-menu-vertical-left.ant-menu-sub .ant-menu-item, .ant-menu-vertical-right.ant-menu-sub .ant-menu-item, .ant-menu-vertical.ant-menu-sub .ant-menu-item {
+            left: 0;
+            margin-left: 0;
+            border-right: 0
+        }
+
+            .ant-menu-vertical-left.ant-menu-sub .ant-menu-item:after, .ant-menu-vertical-right.ant-menu-sub .ant-menu-item:after, .ant-menu-vertical.ant-menu-sub .ant-menu-item:after {
+                border-right: 0
+            }
+
+        .ant-menu-vertical-left.ant-menu-sub > .ant-menu-item, .ant-menu-vertical-left.ant-menu-sub > .ant-menu-submenu, .ant-menu-vertical-right.ant-menu-sub > .ant-menu-item, .ant-menu-vertical-right.ant-menu-sub > .ant-menu-submenu, .ant-menu-vertical.ant-menu-sub > .ant-menu-item, .ant-menu-vertical.ant-menu-sub > .ant-menu-submenu {
+            -webkit-transform-origin: 0 0;
+            transform-origin: 0 0
+        }
+
+.ant-menu-horizontal.ant-menu-sub {
+    min-width: 114px
+}
+
+.ant-menu-item, .ant-menu-submenu-title {
+    position: relative;
+    display: block;
+    margin: 0;
+    padding: 0 20px;
+    white-space: nowrap;
+    cursor: pointer;
+    -webkit-transition: color .3s cubic-bezier(.645,.045,.355,1),border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1);
+    transition: color .3s cubic-bezier(.645,.045,.355,1),border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1)
+}
+
+    .ant-menu-item .anticon, .ant-menu-submenu-title .anticon {
+        min-width: 14px;
+        margin-right: 10px;
+        font-size: 14px;
+        -webkit-transition: font-size .15s cubic-bezier(.215,.61,.355,1),margin .3s cubic-bezier(.645,.045,.355,1);
+        transition: font-size .15s cubic-bezier(.215,.61,.355,1),margin .3s cubic-bezier(.645,.045,.355,1)
+    }
+
+        .ant-menu-item .anticon + span, .ant-menu-submenu-title .anticon + span {
+            opacity: 1;
+            -webkit-transition: opacity .3s cubic-bezier(.645,.045,.355,1),width .3s cubic-bezier(.645,.045,.355,1);
+            transition: opacity .3s cubic-bezier(.645,.045,.355,1),width .3s cubic-bezier(.645,.045,.355,1)
+        }
+
+.ant-menu > .ant-menu-item-divider {
+    height: 1px;
+    margin: 1px 0;
+    padding: 0;
+    overflow: hidden;
+    line-height: 0;
+    background-color: #e8e8e8
+}
+
+.ant-menu-submenu-popup {
+    position: absolute;
+    z-index: 1050;
+    background: #fff;
+    border-radius: 2px
+}
+
+    .ant-menu-submenu-popup .submenu-title-wrapper {
+        padding-right: 20px
+    }
+
+    .ant-menu-submenu-popup:before {
+        position: absolute;
+        top: -7px;
+        right: 0;
+        bottom: 0;
+        left: 0;
+        opacity: .0001;
+        content: " "
+    }
+
+.ant-menu-submenu > .ant-menu {
+    background-color: #fff;
+    border-radius: 2px
+}
+
+.ant-menu-submenu > .ant-menu-submenu-title:after {
+    -webkit-transition: -webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+    transition: -webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+    transition: transform .3s cubic-bezier(.645,.045,.355,1);
+    transition: transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow, .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow {
+    position: absolute;
+    top: 50%;
+    right: 16px;
+    width: 10px;
+    -webkit-transition: -webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+    transition: -webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+    transition: transform .3s cubic-bezier(.645,.045,.355,1);
+    transition: transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1)
+}
+
+    .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
+        position: absolute;
+        width: 6px;
+        height: 1.5px;
+        background: #fff;
+        background: rgba(0,0,0,.65)\9;
+        background-image: -webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.65)),to(rgba(0,0,0,.65)));
+        background-image: linear-gradient(90deg,rgba(0,0,0,.65),rgba(0,0,0,.65));
+        background-image: none\9;
+        border-radius: 2px;
+        -webkit-transition: background .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+        transition: background .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+        transition: background .3s cubic-bezier(.645,.045,.355,1),transform .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1);
+        transition: background .3s cubic-bezier(.645,.045,.355,1),transform .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+        content: ""
+    }
+
+    .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
+        -webkit-transform: rotate(45deg) translateY(-2px);
+        transform: rotate(45deg) translateY(-2px)
+    }
+
+    .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:after {
+        -webkit-transform: rotate(-45deg) translateY(2px);
+        transform: rotate(-45deg) translateY(2px)
+    }
+
+.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before {
+    background: -webkit-gradient(linear,left top,right top,from(#fa541c),to(#fa541c));
+    background: linear-gradient(90deg,#fa541c,#fa541c)
+}
+
+.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
+    -webkit-transform: rotate(-45deg) translateX(2px);
+    transform: rotate(-45deg) translateX(2px)
+}
+
+.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after {
+    -webkit-transform: rotate(45deg) translateX(-2px);
+    transform: rotate(45deg) translateX(-2px)
+}
+
+.ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow {
+    -webkit-transform: translateY(-2px);
+    transform: translateY(-2px)
+}
+
+    .ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after {
+        -webkit-transform: rotate(-45deg) translateX(-2px);
+        transform: rotate(-45deg) translateX(-2px)
+    }
+
+    .ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
+        -webkit-transform: rotate(45deg) translateX(2px);
+        transform: rotate(45deg) translateX(2px)
+    }
+
+.ant-menu-vertical-left .ant-menu-submenu-selected, .ant-menu-vertical-left .ant-menu-submenu-selected > a, .ant-menu-vertical-right .ant-menu-submenu-selected, .ant-menu-vertical-right .ant-menu-submenu-selected > a, .ant-menu-vertical .ant-menu-submenu-selected, .ant-menu-vertical .ant-menu-submenu-selected > a {
+    color: #fa541c
+}
+
+.ant-menu-horizontal {
+    line-height: 46px;
+    white-space: nowrap;
+    border: 0;
+    border-bottom: 1px solid #e8e8e8;
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+    .ant-menu-horizontal > .ant-menu-item, .ant-menu-horizontal > .ant-menu-submenu {
+        position: relative;
+        top: 1px;
+        display: inline-block;
+        vertical-align: bottom;
+        border-bottom: 2px solid transparent
+    }
+
+        .ant-menu-horizontal > .ant-menu-item-active, .ant-menu-horizontal > .ant-menu-item-open, .ant-menu-horizontal > .ant-menu-item-selected, .ant-menu-horizontal > .ant-menu-item:hover, .ant-menu-horizontal > .ant-menu-submenu-active, .ant-menu-horizontal > .ant-menu-submenu-open, .ant-menu-horizontal > .ant-menu-submenu-selected, .ant-menu-horizontal > .ant-menu-submenu:hover {
+            color: #fa541c;
+            border-bottom: 2px solid #fa541c
+        }
+
+        .ant-menu-horizontal > .ant-menu-item > a {
+            display: block;
+            color: rgba(0,0,0,.65)
+        }
+
+            .ant-menu-horizontal > .ant-menu-item > a:hover {
+                color: #fa541c
+            }
+
+            .ant-menu-horizontal > .ant-menu-item > a:before {
+                bottom: -2px
+            }
+
+    .ant-menu-horizontal > .ant-menu-item-selected > a {
+        color: #fa541c
+    }
+
+    .ant-menu-horizontal:after {
+        display: block;
+        clear: both;
+        height: 0;
+        content: "\20"
+    }
+
+.ant-menu-inline .ant-menu-item, .ant-menu-vertical-left .ant-menu-item, .ant-menu-vertical-right .ant-menu-item, .ant-menu-vertical .ant-menu-item {
+    position: relative
+}
+
+    .ant-menu-inline .ant-menu-item:after, .ant-menu-vertical-left .ant-menu-item:after, .ant-menu-vertical-right .ant-menu-item:after, .ant-menu-vertical .ant-menu-item:after {
+        position: absolute;
+        top: 0;
+        right: 0;
+        bottom: 0;
+        border-right: 3px solid #fa541c;
+        -webkit-transform: scaleY(.0001);
+        transform: scaleY(.0001);
+        opacity: 0;
+        -webkit-transition: opacity .15s cubic-bezier(.215,.61,.355,1),-webkit-transform .15s cubic-bezier(.215,.61,.355,1);
+        transition: opacity .15s cubic-bezier(.215,.61,.355,1),-webkit-transform .15s cubic-bezier(.215,.61,.355,1);
+        transition: transform .15s cubic-bezier(.215,.61,.355,1),opacity .15s cubic-bezier(.215,.61,.355,1);
+        transition: transform .15s cubic-bezier(.215,.61,.355,1),opacity .15s cubic-bezier(.215,.61,.355,1),-webkit-transform .15s cubic-bezier(.215,.61,.355,1);
+        content: ""
+    }
+
+.ant-menu-inline .ant-menu-item, .ant-menu-inline .ant-menu-submenu-title, .ant-menu-vertical-left .ant-menu-item, .ant-menu-vertical-left .ant-menu-submenu-title, .ant-menu-vertical-right .ant-menu-item, .ant-menu-vertical-right .ant-menu-submenu-title, .ant-menu-vertical .ant-menu-item, .ant-menu-vertical .ant-menu-submenu-title {
+    height: 40px;
+    margin-top: 4px;
+    margin-bottom: 4px;
+    padding: 0 16px;
+    overflow: hidden;
+    font-size: 14px;
+    line-height: 40px;
+    text-overflow: ellipsis
+}
+
+.ant-menu-inline .ant-menu-submenu, .ant-menu-vertical-left .ant-menu-submenu, .ant-menu-vertical-right .ant-menu-submenu, .ant-menu-vertical .ant-menu-submenu {
+    padding-bottom: .02px
+}
+
+.ant-menu-inline .ant-menu-item:not(:last-child), .ant-menu-vertical-left .ant-menu-item:not(:last-child), .ant-menu-vertical-right .ant-menu-item:not(:last-child), .ant-menu-vertical .ant-menu-item:not(:last-child) {
+    margin-bottom: 8px
+}
+
+.ant-menu-inline > .ant-menu-item, .ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title, .ant-menu-vertical-left > .ant-menu-item, .ant-menu-vertical-left > .ant-menu-submenu > .ant-menu-submenu-title, .ant-menu-vertical-right > .ant-menu-item, .ant-menu-vertical-right > .ant-menu-submenu > .ant-menu-submenu-title, .ant-menu-vertical > .ant-menu-item, .ant-menu-vertical > .ant-menu-submenu > .ant-menu-submenu-title {
+    height: 40px;
+    line-height: 40px
+}
+
+.ant-menu-inline {
+    width: 100%
+}
+
+    .ant-menu-inline .ant-menu-item-selected:after, .ant-menu-inline .ant-menu-selected:after {
+        -webkit-transform: scaleY(1);
+        transform: scaleY(1);
+        opacity: 1;
+        -webkit-transition: opacity .15s cubic-bezier(.645,.045,.355,1),-webkit-transform .15s cubic-bezier(.645,.045,.355,1);
+        transition: opacity .15s cubic-bezier(.645,.045,.355,1),-webkit-transform .15s cubic-bezier(.645,.045,.355,1);
+        transition: transform .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1);
+        transition: transform .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1),-webkit-transform .15s cubic-bezier(.645,.045,.355,1)
+    }
+
+    .ant-menu-inline .ant-menu-item, .ant-menu-inline .ant-menu-submenu-title {
+        width: calc(100% + 1px)
+    }
+
+    .ant-menu-inline .ant-menu-submenu-title {
+        padding-right: 34px
+    }
+
+.ant-menu-inline-collapsed {
+    width: 80px
+}
+
+    .ant-menu-inline-collapsed > .ant-menu-item, .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item, .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title, .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title {
+        left: 0;
+        padding: 0 32px !important;
+        text-overflow: clip
+    }
+
+        .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .ant-menu-submenu-arrow, .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-submenu-arrow, .ant-menu-inline-collapsed > .ant-menu-item .ant-menu-submenu-arrow, .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-submenu-arrow {
+            display: none
+        }
+
+        .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon, .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .anticon, .ant-menu-inline-collapsed > .ant-menu-item .anticon, .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon {
+            margin: 0;
+            font-size: 16px;
+            line-height: 40px
+        }
+
+            .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon + span, .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span, .ant-menu-inline-collapsed > .ant-menu-item .anticon + span, .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span {
+                display: inline-block;
+                max-width: 0;
+                opacity: 0
+            }
+
+.ant-menu-inline-collapsed-tooltip {
+    pointer-events: none
+}
+
+    .ant-menu-inline-collapsed-tooltip .anticon {
+        display: none
+    }
+
+    .ant-menu-inline-collapsed-tooltip a {
+        color: hsla(0,0%,100%,.85)
+    }
+
+.ant-menu-inline-collapsed .ant-menu-item-group-title {
+    padding-right: 4px;
+    padding-left: 4px;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis
+}
+
+.ant-menu-item-group-list {
+    margin: 0;
+    padding: 0
+}
+
+    .ant-menu-item-group-list .ant-menu-item, .ant-menu-item-group-list .ant-menu-submenu-title {
+        padding: 0 16px 0 28px
+    }
+
+.ant-menu-root.ant-menu-inline, .ant-menu-root.ant-menu-vertical, .ant-menu-root.ant-menu-vertical-left, .ant-menu-root.ant-menu-vertical-right, .ant-menu-sub.ant-menu-inline {
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+.ant-menu-sub.ant-menu-inline {
+    padding: 0;
+    border: 0;
+    border-radius: 0
+}
+
+    .ant-menu-sub.ant-menu-inline > .ant-menu-item, .ant-menu-sub.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title {
+        height: 40px;
+        line-height: 40px;
+        list-style-position: inside;
+        list-style-type: disc
+    }
+
+    .ant-menu-sub.ant-menu-inline .ant-menu-item-group-title {
+        padding-left: 32px
+    }
+
+.ant-menu-item-disabled, .ant-menu-submenu-disabled {
+    color: rgba(0,0,0,.25) !important;
+    background: none;
+    border-color: transparent !important;
+    cursor: not-allowed
+}
+
+    .ant-menu-item-disabled > a, .ant-menu-submenu-disabled > a {
+        color: rgba(0,0,0,.25) !important;
+        pointer-events: none
+    }
+
+    .ant-menu-item-disabled > .ant-menu-submenu-title, .ant-menu-submenu-disabled > .ant-menu-submenu-title {
+        color: rgba(0,0,0,.25) !important;
+        cursor: not-allowed
+    }
+
+        .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before {
+            background: rgba(0,0,0,.25) !important
+        }
+
+.ant-menu-dark, .ant-menu-dark .ant-menu-sub {
+    color: hsla(0,0%,100%,.65);
+    background: #001529
+}
+
+    .ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow {
+        opacity: .45;
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+        .ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
+            background: #fff
+        }
+
+    .ant-menu-dark.ant-menu-submenu-popup {
+        background: transparent
+    }
+
+    .ant-menu-dark .ant-menu-inline.ant-menu-sub {
+        background: #000c17;
+        -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.45) inset;
+        box-shadow: inset 0 2px 8px rgba(0,0,0,.45)
+    }
+
+    .ant-menu-dark.ant-menu-horizontal {
+        border-bottom: 0
+    }
+
+        .ant-menu-dark.ant-menu-horizontal > .ant-menu-item, .ant-menu-dark.ant-menu-horizontal > .ant-menu-submenu {
+            top: 0;
+            margin-top: 0;
+            border-color: #001529;
+            border-bottom: 0
+        }
+
+            .ant-menu-dark.ant-menu-horizontal > .ant-menu-item > a:before {
+                bottom: 0
+            }
+
+    .ant-menu-dark .ant-menu-item, .ant-menu-dark .ant-menu-item-group-title, .ant-menu-dark .ant-menu-item > a {
+        color: hsla(0,0%,100%,.65)
+    }
+
+    .ant-menu-dark.ant-menu-inline, .ant-menu-dark.ant-menu-vertical, .ant-menu-dark.ant-menu-vertical-left, .ant-menu-dark.ant-menu-vertical-right {
+        border-right: 0
+    }
+
+        .ant-menu-dark.ant-menu-inline .ant-menu-item, .ant-menu-dark.ant-menu-vertical-left .ant-menu-item, .ant-menu-dark.ant-menu-vertical-right .ant-menu-item, .ant-menu-dark.ant-menu-vertical .ant-menu-item {
+            left: 0;
+            margin-left: 0;
+            border-right: 0
+        }
+
+            .ant-menu-dark.ant-menu-inline .ant-menu-item:after, .ant-menu-dark.ant-menu-vertical-left .ant-menu-item:after, .ant-menu-dark.ant-menu-vertical-right .ant-menu-item:after, .ant-menu-dark.ant-menu-vertical .ant-menu-item:after {
+                border-right: 0
+            }
+
+        .ant-menu-dark.ant-menu-inline .ant-menu-item, .ant-menu-dark.ant-menu-inline .ant-menu-submenu-title {
+            width: 100%
+        }
+
+    .ant-menu-dark .ant-menu-item-active, .ant-menu-dark .ant-menu-item:hover, .ant-menu-dark .ant-menu-submenu-active, .ant-menu-dark .ant-menu-submenu-open, .ant-menu-dark .ant-menu-submenu-selected, .ant-menu-dark .ant-menu-submenu-title:hover {
+        color: #fff;
+        background-color: transparent
+    }
+
+        .ant-menu-dark .ant-menu-item-active > a, .ant-menu-dark .ant-menu-item:hover > a, .ant-menu-dark .ant-menu-submenu-active > a, .ant-menu-dark .ant-menu-submenu-open > a, .ant-menu-dark .ant-menu-submenu-selected > a, .ant-menu-dark .ant-menu-submenu-title:hover > a {
+            color: #fff
+        }
+
+        .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow {
+            opacity: 1
+        }
+
+            .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before {
+                background: #fff
+            }
+
+    .ant-menu-dark .ant-menu-item:hover {
+        background-color: transparent
+    }
+
+    .ant-menu-dark .ant-menu-item-selected {
+        color: #fff;
+        border-right: 0
+    }
+
+        .ant-menu-dark .ant-menu-item-selected:after {
+            border-right: 0
+        }
+
+        .ant-menu-dark .ant-menu-item-selected .anticon, .ant-menu-dark .ant-menu-item-selected .anticon + span, .ant-menu-dark .ant-menu-item-selected > a, .ant-menu-dark .ant-menu-item-selected > a:hover {
+            color: #fff
+        }
+
+.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected, .ant-menu.ant-menu-dark .ant-menu-item-selected {
+    background-color: #fa541c
+}
+
+.ant-menu-dark .ant-menu-item-disabled, .ant-menu-dark .ant-menu-item-disabled > a, .ant-menu-dark .ant-menu-submenu-disabled, .ant-menu-dark .ant-menu-submenu-disabled > a {
+    color: hsla(0,0%,100%,.35) !important;
+    opacity: .8
+}
+
+    .ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title, .ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title {
+        color: hsla(0,0%,100%,.35) !important
+    }
+
+        .ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before {
+            background: hsla(0,0%,100%,.35) !important
+        }
+
+.ant-message {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: fixed;
+    top: 16px;
+    left: 0;
+    z-index: 1010;
+    width: 100%;
+    pointer-events: none
+}
+
+.ant-message-notice {
+    padding: 8px;
+    text-align: center
+}
+
+    .ant-message-notice:first-child {
+        margin-top: -8px
+    }
+
+.ant-message-notice-content {
+    display: inline-block;
+    padding: 10px 16px;
+    background: #fff;
+    border-radius: 2px;
+    -webkit-box-shadow: 0 4px 12px rgba(0,0,0,.15);
+    box-shadow: 0 4px 12px rgba(0,0,0,.15);
+    pointer-events: all
+}
+
+.ant-message-success .anticon {
+    color: #52c41a
+}
+
+.ant-message-error .anticon {
+    color: #f5222d
+}
+
+.ant-message-warning .anticon {
+    color: #faad14
+}
+
+.ant-message-info .anticon, .ant-message-loading .anticon {
+    color: #1890ff
+}
+
+.ant-message .anticon {
+    position: relative;
+    top: 1px;
+    margin-right: 8px;
+    font-size: 16px
+}
+
+.ant-message-notice.move-up-leave.move-up-leave-active {
+    overflow: hidden;
+    -webkit-animation-name: MessageMoveOut;
+    animation-name: MessageMoveOut;
+    -webkit-animation-duration: .3s;
+    animation-duration: .3s
+}
+
+@-webkit-keyframes MessageMoveOut {
+    0% {
+        max-height: 150px;
+        padding: 8px;
+        opacity: 1
+    }
+
+    to {
+        max-height: 0;
+        padding: 0;
+        opacity: 0
+    }
+}
+
+@keyframes MessageMoveOut {
+    0% {
+        max-height: 150px;
+        padding: 8px;
+        opacity: 1
+    }
+
+    to {
+        max-height: 0;
+        padding: 0;
+        opacity: 0
+    }
+}
+
+.ant-modal {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    top: 100px;
+    width: auto;
+    margin: 0 auto;
+    padding-bottom: 24px;
+    pointer-events: none
+}
+
+.ant-modal-wrap {
+    position: fixed;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 1000;
+    overflow: auto;
+    outline: 0;
+    -webkit-overflow-scrolling: touch
+}
+
+.ant-modal-title {
+    margin: 0;
+    color: rgba(0,0,0,.85);
+    font-weight: 500;
+    font-size: 16px;
+    line-height: 22px;
+    word-wrap: break-word
+}
+
+.ant-modal-content {
+    position: relative;
+    background-color: #fff;
+    background-clip: padding-box;
+    border: 0;
+    border-radius: 2px;
+    -webkit-box-shadow: 0 4px 12px rgba(0,0,0,.15);
+    box-shadow: 0 4px 12px rgba(0,0,0,.15);
+    pointer-events: auto
+}
+
+.ant-modal-close {
+    position: absolute;
+    top: 0;
+    right: 0;
+    z-index: 10;
+    padding: 0;
+    color: rgba(0,0,0,.45);
+    font-weight: 700;
+    line-height: 1;
+    text-decoration: none;
+    background: transparent;
+    border: 0;
+    outline: 0;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s
+}
+
+.ant-modal-close-x {
+    display: block;
+    width: 56px;
+    height: 56px;
+    font-size: 16px;
+    font-style: normal;
+    line-height: 56px;
+    text-align: center;
+    text-transform: none;
+    text-rendering: auto
+}
+
+.ant-modal-close:focus, .ant-modal-close:hover {
+    color: rgba(0,0,0,.75);
+    text-decoration: none
+}
+
+.ant-modal-header {
+    padding: 16px 24px;
+    color: rgba(0,0,0,.65);
+    background: #fff;
+    border-bottom: 1px solid #e8e8e8;
+    border-radius: 2px 2px 0 0
+}
+
+.ant-modal-body {
+    padding: 24px;
+    font-size: 14px;
+    line-height: 1.5;
+    word-wrap: break-word
+}
+
+.ant-modal-footer {
+    padding: 10px 16px;
+    text-align: right;
+    background: transparent;
+    border-top: 1px solid #e8e8e8;
+    border-radius: 0 0 2px 2px
+}
+
+    .ant-modal-footer button + button {
+        margin-bottom: 0;
+        margin-left: 8px
+    }
+
+.ant-modal.zoom-appear, .ant-modal.zoom-enter {
+    -webkit-transform: none;
+    transform: none;
+    opacity: 0;
+    -webkit-animation-duration: .3s;
+    animation-duration: .3s;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+.ant-modal-mask {
+    position: fixed;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 1000;
+    height: 100%;
+    background-color: rgba(0,0,0,.45);
+    filter: alpha(opacity=50)
+}
+
+.ant-modal-mask-hidden {
+    display: none
+}
+
+.ant-modal-open {
+    overflow: hidden
+}
+
+.ant-modal-centered {
+    text-align: center
+}
+
+    .ant-modal-centered:before {
+        display: inline-block;
+        width: 0;
+        height: 100%;
+        vertical-align: middle;
+        content: ""
+    }
+
+    .ant-modal-centered .ant-modal {
+        top: 0;
+        display: inline-block;
+        text-align: left;
+        vertical-align: middle
+    }
+
+@media (max-width:767px) {
+    .ant-modal {
+        max-width: calc(100vw - 16px);
+        margin: 8px auto
+    }
+
+    .ant-modal-centered .ant-modal {
+        -webkit-box-flex: 1;
+        -ms-flex: 1;
+        flex: 1
+    }
+}
+
+.ant-modal-confirm .ant-modal-header {
+    display: none
+}
+
+.ant-modal-confirm .ant-modal-body {
+    padding: 32px 32px 24px
+}
+
+.ant-modal-confirm-body-wrapper {
+    zoom: 1
+}
+
+    .ant-modal-confirm-body-wrapper:after, .ant-modal-confirm-body-wrapper:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-modal-confirm-body-wrapper:after {
+        clear: both
+    }
+
+.ant-modal-confirm-body .ant-modal-confirm-title {
+    display: block;
+    overflow: hidden;
+    color: rgba(0,0,0,.85);
+    font-weight: 500;
+    font-size: 16px;
+    line-height: 1.4
+}
+
+.ant-modal-confirm-body .ant-modal-confirm-content {
+    margin-top: 8px;
+    color: rgba(0,0,0,.65);
+    font-size: 14px
+}
+
+.ant-modal-confirm-body > .anticon {
+    float: left;
+    margin-right: 16px;
+    font-size: 22px
+}
+
+    .ant-modal-confirm-body > .anticon + .ant-modal-confirm-title + .ant-modal-confirm-content {
+        margin-left: 38px
+    }
+
+.ant-modal-confirm .ant-modal-confirm-btns {
+    float: right;
+    margin-top: 24px
+}
+
+    .ant-modal-confirm .ant-modal-confirm-btns button + button {
+        margin-bottom: 0;
+        margin-left: 8px
+    }
+
+.ant-modal-confirm-error .ant-modal-confirm-body > .anticon {
+    color: #f5222d
+}
+
+.ant-modal-confirm-confirm .ant-modal-confirm-body > .anticon, .ant-modal-confirm-warning .ant-modal-confirm-body > .anticon {
+    color: #faad14
+}
+
+.ant-modal-confirm-info .ant-modal-confirm-body > .anticon {
+    color: #1890ff
+}
+
+.ant-modal-confirm-success .ant-modal-confirm-body > .anticon {
+    color: #52c41a
+}
+
+.ant-notification {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: fixed;
+    z-index: 1010;
+    width: 384px;
+    max-width: calc(100vw - 32px);
+    margin-right: 24px
+}
+
+.ant-notification-bottomLeft, .ant-notification-topLeft {
+    margin-right: 0;
+    margin-left: 24px
+}
+
+    .ant-notification-bottomLeft .ant-notification-fade-appear.ant-notification-fade-appear-active, .ant-notification-bottomLeft .ant-notification-fade-enter.ant-notification-fade-enter-active, .ant-notification-topLeft .ant-notification-fade-appear.ant-notification-fade-appear-active, .ant-notification-topLeft .ant-notification-fade-enter.ant-notification-fade-enter-active {
+        -webkit-animation-name: NotificationLeftFadeIn;
+        animation-name: NotificationLeftFadeIn
+    }
+
+.ant-notification-close-icon {
+    font-size: 14px;
+    cursor: pointer
+}
+
+.ant-notification-notice {
+    position: relative;
+    margin-bottom: 16px;
+    padding: 16px 24px;
+    overflow: hidden;
+    line-height: 1.5;
+    background: #fff;
+    border-radius: 2px;
+    -webkit-box-shadow: 0 4px 12px rgba(0,0,0,.15);
+    box-shadow: 0 4px 12px rgba(0,0,0,.15)
+}
+
+.ant-notification-notice-message {
+    display: inline-block;
+    margin-bottom: 8px;
+    color: rgba(0,0,0,.85);
+    font-size: 16px;
+    line-height: 24px
+}
+
+.ant-notification-notice-message-single-line-auto-margin {
+    display: block;
+    width: calc(264px - 100%);
+    max-width: 4px;
+    background-color: transparent;
+    pointer-events: none
+}
+
+    .ant-notification-notice-message-single-line-auto-margin:before {
+        display: block;
+        content: ""
+    }
+
+.ant-notification-notice-description {
+    font-size: 14px
+}
+
+.ant-notification-notice-closable .ant-notification-notice-message {
+    padding-right: 24px
+}
+
+.ant-notification-notice-with-icon .ant-notification-notice-message {
+    margin-bottom: 4px;
+    margin-left: 48px;
+    font-size: 16px
+}
+
+.ant-notification-notice-with-icon .ant-notification-notice-description {
+    margin-left: 48px;
+    font-size: 14px
+}
+
+.ant-notification-notice-icon {
+    position: absolute;
+    margin-left: 4px;
+    font-size: 24px;
+    line-height: 24px
+}
+
+.anticon.ant-notification-notice-icon-success {
+    color: #52c41a
+}
+
+.anticon.ant-notification-notice-icon-info {
+    color: #1890ff
+}
+
+.anticon.ant-notification-notice-icon-warning {
+    color: #faad14
+}
+
+.anticon.ant-notification-notice-icon-error {
+    color: #f5222d
+}
+
+.ant-notification-notice-close {
+    position: absolute;
+    top: 16px;
+    right: 22px;
+    color: rgba(0,0,0,.45);
+    outline: none
+}
+
+    .ant-notification-notice-close:hover {
+        color: rgba(0,0,0,.67)
+    }
+
+.ant-notification-notice-btn {
+    float: right;
+    margin-top: 16px
+}
+
+.ant-notification .notification-fade-effect {
+    -webkit-animation-duration: .24s;
+    animation-duration: .24s;
+    -webkit-animation-timing-function: cubic-bezier(.645,.045,.355,1);
+    animation-timing-function: cubic-bezier(.645,.045,.355,1);
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both
+}
+
+.ant-notification-fade-appear, .ant-notification-fade-enter {
+    opacity: 0;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.ant-notification-fade-appear, .ant-notification-fade-enter, .ant-notification-fade-leave {
+    -webkit-animation-duration: .24s;
+    animation-duration: .24s;
+    -webkit-animation-timing-function: cubic-bezier(.645,.045,.355,1);
+    animation-timing-function: cubic-bezier(.645,.045,.355,1);
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both
+}
+
+.ant-notification-fade-leave {
+    -webkit-animation-duration: .2s;
+    animation-duration: .2s;
+    -webkit-animation-play-state: paused;
+    animation-play-state: paused
+}
+
+.ant-notification-fade-appear.ant-notification-fade-appear-active, .ant-notification-fade-enter.ant-notification-fade-enter-active {
+    -webkit-animation-name: NotificationFadeIn;
+    animation-name: NotificationFadeIn;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+.ant-notification-fade-leave.ant-notification-fade-leave-active {
+    -webkit-animation-name: NotificationFadeOut;
+    animation-name: NotificationFadeOut;
+    -webkit-animation-play-state: running;
+    animation-play-state: running
+}
+
+@-webkit-keyframes NotificationFadeIn {
+    0% {
+        left: 384px;
+        opacity: 0
+    }
+
+    to {
+        left: 0;
+        opacity: 1
+    }
+}
+
+@keyframes NotificationFadeIn {
+    0% {
+        left: 384px;
+        opacity: 0
+    }
+
+    to {
+        left: 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes NotificationLeftFadeIn {
+    0% {
+        right: 384px;
+        opacity: 0
+    }
+
+    to {
+        right: 0;
+        opacity: 1
+    }
+}
+
+@keyframes NotificationLeftFadeIn {
+    0% {
+        right: 384px;
+        opacity: 0
+    }
+
+    to {
+        right: 0;
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes NotificationFadeOut {
+    0% {
+        max-height: 150px;
+        margin-bottom: 16px;
+        padding-top: 16px 24px;
+        padding-bottom: 16px 24px;
+        opacity: 1
+    }
+
+    to {
+        max-height: 0;
+        margin-bottom: 0;
+        padding-top: 0;
+        padding-bottom: 0;
+        opacity: 0
+    }
+}
+
+@keyframes NotificationFadeOut {
+    0% {
+        max-height: 150px;
+        margin-bottom: 16px;
+        padding-top: 16px 24px;
+        padding-bottom: 16px 24px;
+        opacity: 1
+    }
+
+    to {
+        max-height: 0;
+        margin-bottom: 0;
+        padding-top: 0;
+        padding-bottom: 0;
+        opacity: 0
+    }
+}
+
+.ant-page-header {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    padding: 16px 24px;
+    background-color: #fff
+}
+
+.ant-page-header-ghost {
+    background-color: inherit
+}
+
+.ant-page-header.has-breadcrumb {
+    padding-top: 12px
+}
+
+.ant-page-header.has-footer {
+    padding-bottom: 0
+}
+
+.ant-page-header-back {
+    float: left;
+    margin: 8px 0;
+    margin-right: 16px;
+    font-size: 16px;
+    line-height: 1
+}
+
+.ant-page-header-back-button {
+    color: #fa541c;
+    text-decoration: none;
+    outline: none;
+    -webkit-transition: color .3s;
+    transition: color .3s;
+    color: #000;
+    cursor: pointer
+}
+
+    .ant-page-header-back-button:focus, .ant-page-header-back-button:hover {
+        color: #ff7a45
+    }
+
+    .ant-page-header-back-button:active {
+        color: #d4380d
+    }
+
+.ant-page-header .ant-divider-vertical {
+    height: 14px;
+    margin: 0 12px;
+    vertical-align: middle
+}
+
+.ant-breadcrumb + .ant-page-header-heading {
+    margin-top: 8px
+}
+
+.ant-page-header-heading {
+    width: 100%;
+    overflow: hidden
+}
+
+.ant-page-header-heading-title {
+    display: block;
+    float: left;
+    margin-bottom: 0;
+    padding-right: 12px;
+    color: rgba(0,0,0,.85);
+    font-weight: 600;
+    font-size: 20px;
+    line-height: 32px
+}
+
+.ant-page-header-heading .ant-avatar {
+    float: left;
+    margin-right: 12px
+}
+
+.ant-page-header-heading-sub-title {
+    float: left;
+    margin: 5px 0;
+    margin-right: 12px;
+    color: rgba(0,0,0,.45);
+    font-size: 14px;
+    line-height: 22px
+}
+
+.ant-page-header-heading-tags {
+    float: left;
+    margin: 4px 0
+}
+
+.ant-page-header-heading-extra {
+    float: right
+}
+
+    .ant-page-header-heading-extra > * {
+        margin-left: 8px
+    }
+
+    .ant-page-header-heading-extra > :first-child {
+        margin-left: 0
+    }
+
+.ant-page-header-content {
+    padding-top: 12px;
+    overflow: hidden
+}
+
+.ant-page-header-footer {
+    margin-top: 16px
+}
+
+    .ant-page-header-footer .ant-tabs-bar {
+        margin-bottom: 1px;
+        border-bottom: 0
+    }
+
+        .ant-page-header-footer .ant-tabs-bar .ant-tabs-nav .ant-tabs-tab {
+            padding: 8px;
+            font-size: 16px
+        }
+
+@media (max-width:576px) {
+    .ant-page-header-heading-extra {
+        display: block;
+        float: unset;
+        width: 100%;
+        padding-top: 12px;
+        overflow: hidden
+    }
+}
+
+.ant-pagination {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+    .ant-pagination, .ant-pagination ol, .ant-pagination ul {
+        margin: 0;
+        padding: 0;
+        list-style: none
+    }
+
+        .ant-pagination:after {
+            display: block;
+            clear: both;
+            height: 0;
+            overflow: hidden;
+            visibility: hidden;
+            content: " "
+        }
+
+.ant-pagination-item, .ant-pagination-total-text {
+    display: inline-block;
+    height: 32px;
+    margin-right: 8px;
+    line-height: 30px;
+    vertical-align: middle
+}
+
+.ant-pagination-item {
+    min-width: 32px;
+    font-family: Arial;
+    text-align: center;
+    list-style: none;
+    background-color: #fff;
+    border: 1px solid #d9d9d9;
+    border-radius: 2px;
+    outline: 0;
+    cursor: pointer;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+    .ant-pagination-item a {
+        display: block;
+        padding: 0 6px;
+        color: rgba(0,0,0,.65);
+        -webkit-transition: none;
+        transition: none
+    }
+
+        .ant-pagination-item a:hover {
+            text-decoration: none
+        }
+
+    .ant-pagination-item:focus, .ant-pagination-item:hover {
+        border-color: #fa541c;
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+        .ant-pagination-item:focus a, .ant-pagination-item:hover a {
+            color: #fa541c
+        }
+
+.ant-pagination-item-active {
+    font-weight: 500;
+    background: #fff;
+    border-color: #fa541c
+}
+
+    .ant-pagination-item-active a {
+        color: #fa541c
+    }
+
+    .ant-pagination-item-active:focus, .ant-pagination-item-active:hover {
+        border-color: #ff7a45
+    }
+
+        .ant-pagination-item-active:focus a, .ant-pagination-item-active:hover a {
+            color: #ff7a45
+        }
+
+.ant-pagination-jump-next, .ant-pagination-jump-prev {
+    outline: 0
+}
+
+    .ant-pagination-jump-next .ant-pagination-item-container, .ant-pagination-jump-prev .ant-pagination-item-container {
+        position: relative
+    }
+
+        .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon, .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon {
+            display: inline-block;
+            font-size: 12px;
+            font-size: 12px\9;
+            -webkit-transform: scale(1) rotate(0deg);
+            transform: scale(1) rotate(0deg);
+            color: #fa541c;
+            letter-spacing: -1px;
+            opacity: 0;
+            -webkit-transition: all .2s;
+            transition: all .2s
+        }
+
+:root .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon, :root .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon {
+    font-size: 12px
+}
+
+.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon-svg, .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon-svg {
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    margin: auto
+}
+
+.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis, .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    display: block;
+    margin: auto;
+    color: rgba(0,0,0,.25);
+    letter-spacing: 2px;
+    text-align: center;
+    text-indent: .13em;
+    opacity: 1;
+    -webkit-transition: all .2s;
+    transition: all .2s
+}
+
+.ant-pagination-jump-next:focus .ant-pagination-item-link-icon, .ant-pagination-jump-next:hover .ant-pagination-item-link-icon, .ant-pagination-jump-prev:focus .ant-pagination-item-link-icon, .ant-pagination-jump-prev:hover .ant-pagination-item-link-icon {
+    opacity: 1
+}
+
+.ant-pagination-jump-next:focus .ant-pagination-item-ellipsis, .ant-pagination-jump-next:hover .ant-pagination-item-ellipsis, .ant-pagination-jump-prev:focus .ant-pagination-item-ellipsis, .ant-pagination-jump-prev:hover .ant-pagination-item-ellipsis {
+    opacity: 0
+}
+
+.ant-pagination-jump-next, .ant-pagination-jump-prev, .ant-pagination-prev {
+    margin-right: 8px
+}
+
+.ant-pagination-jump-next, .ant-pagination-jump-prev, .ant-pagination-next, .ant-pagination-prev {
+    display: inline-block;
+    min-width: 32px;
+    height: 32px;
+    color: rgba(0,0,0,.65);
+    font-family: Arial;
+    line-height: 32px;
+    text-align: center;
+    vertical-align: middle;
+    list-style: none;
+    border-radius: 2px;
+    cursor: pointer;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+.ant-pagination-next, .ant-pagination-prev {
+    outline: 0
+}
+
+    .ant-pagination-next a, .ant-pagination-prev a {
+        color: rgba(0,0,0,.65);
+        -webkit-user-select: none;
+        -moz-user-select: none;
+        -ms-user-select: none;
+        user-select: none
+    }
+
+    .ant-pagination-next:hover a, .ant-pagination-prev:hover a {
+        border-color: #ff7a45
+    }
+
+    .ant-pagination-next .ant-pagination-item-link, .ant-pagination-prev .ant-pagination-item-link {
+        display: block;
+        height: 100%;
+        font-size: 12px;
+        text-align: center;
+        background-color: #fff;
+        border: 1px solid #d9d9d9;
+        border-radius: 2px;
+        outline: none;
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+    .ant-pagination-next:focus .ant-pagination-item-link, .ant-pagination-next:hover .ant-pagination-item-link, .ant-pagination-prev:focus .ant-pagination-item-link, .ant-pagination-prev:hover .ant-pagination-item-link {
+        color: #fa541c;
+        border-color: #fa541c
+    }
+
+.ant-pagination-disabled, .ant-pagination-disabled:focus, .ant-pagination-disabled:hover {
+    cursor: not-allowed
+}
+
+    .ant-pagination-disabled .ant-pagination-item-link, .ant-pagination-disabled:focus .ant-pagination-item-link, .ant-pagination-disabled:focus a, .ant-pagination-disabled:hover .ant-pagination-item-link, .ant-pagination-disabled:hover a, .ant-pagination-disabled a {
+        color: rgba(0,0,0,.25);
+        border-color: #d9d9d9;
+        cursor: not-allowed
+    }
+
+.ant-pagination-slash {
+    margin: 0 10px 0 5px
+}
+
+.ant-pagination-options {
+    display: inline-block;
+    margin-left: 16px;
+    vertical-align: middle
+}
+
+.ant-pagination-options-size-changer.ant-select {
+    display: inline-block;
+    width: auto;
+    margin-right: 8px
+}
+
+.ant-pagination-options-quick-jumper {
+    display: inline-block;
+    height: 32px;
+    line-height: 32px;
+    vertical-align: top
+}
+
+    .ant-pagination-options-quick-jumper input {
+        position: relative;
+        display: inline-block;
+        width: 100%;
+        height: 32px;
+        padding: 4px 11px;
+        color: rgba(0,0,0,.65);
+        font-size: 14px;
+        line-height: 1.5;
+        background-color: #fff;
+        background-image: none;
+        border: 1px solid #d9d9d9;
+        border-radius: 2px;
+        -webkit-transition: all .3s;
+        transition: all .3s;
+        width: 50px;
+        margin: 0 8px
+    }
+
+        .ant-pagination-options-quick-jumper input::-moz-placeholder {
+            color: #bfbfbf;
+            opacity: 1
+        }
+
+        .ant-pagination-options-quick-jumper input:-ms-input-placeholder {
+            color: #bfbfbf
+        }
+
+        .ant-pagination-options-quick-jumper input::-webkit-input-placeholder {
+            color: #bfbfbf
+        }
+
+        .ant-pagination-options-quick-jumper input:-moz-placeholder-shown {
+            text-overflow: ellipsis
+        }
+
+        .ant-pagination-options-quick-jumper input:-ms-input-placeholder {
+            text-overflow: ellipsis
+        }
+
+        .ant-pagination-options-quick-jumper input:placeholder-shown {
+            text-overflow: ellipsis
+        }
+
+        .ant-pagination-options-quick-jumper input:focus, .ant-pagination-options-quick-jumper input:hover {
+            border-color: #ff7a45;
+            border-right-width: 1px !important
+        }
+
+        .ant-pagination-options-quick-jumper input:focus {
+            outline: 0;
+            -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+            box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+        }
+
+    .ant-pagination-options-quick-jumper input-disabled {
+        color: rgba(0,0,0,.25);
+        background-color: #f5f5f5;
+        cursor: not-allowed;
+        opacity: 1
+    }
+
+        .ant-pagination-options-quick-jumper input-disabled:hover {
+            border-color: #d9d9d9;
+            border-right-width: 1px !important
+        }
+
+    .ant-pagination-options-quick-jumper input[disabled] {
+        color: rgba(0,0,0,.25);
+        background-color: #f5f5f5;
+        cursor: not-allowed;
+        opacity: 1
+    }
+
+        .ant-pagination-options-quick-jumper input[disabled]:hover {
+            border-color: #d9d9d9;
+            border-right-width: 1px !important
+        }
+
+textarea.ant-pagination-options-quick-jumper input {
+    max-width: 100%;
+    height: auto;
+    min-height: 32px;
+    line-height: 1.5;
+    vertical-align: bottom;
+    -webkit-transition: all .3s,height 0s;
+    transition: all .3s,height 0s
+}
+
+.ant-pagination-options-quick-jumper input-lg {
+    height: 40px;
+    padding: 6px 11px;
+    font-size: 16px
+}
+
+.ant-pagination-options-quick-jumper input-sm {
+    height: 24px;
+    padding: 1px 7px
+}
+
+.ant-pagination-simple .ant-pagination-next, .ant-pagination-simple .ant-pagination-prev {
+    height: 24px;
+    line-height: 24px;
+    vertical-align: top
+}
+
+    .ant-pagination-simple .ant-pagination-next .ant-pagination-item-link, .ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link {
+        height: 24px;
+        border: 0
+    }
+
+        .ant-pagination-simple .ant-pagination-next .ant-pagination-item-link:after, .ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link:after {
+            height: 24px;
+            line-height: 24px
+        }
+
+.ant-pagination-simple .ant-pagination-simple-pager {
+    display: inline-block;
+    height: 24px;
+    margin-right: 8px
+}
+
+    .ant-pagination-simple .ant-pagination-simple-pager input {
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        height: 100%;
+        margin-right: 8px;
+        padding: 0 6px;
+        text-align: center;
+        background-color: #fff;
+        border: 1px solid #d9d9d9;
+        border-radius: 2px;
+        outline: none;
+        -webkit-transition: border-color .3s;
+        transition: border-color .3s
+    }
+
+        .ant-pagination-simple .ant-pagination-simple-pager input:hover {
+            border-color: #fa541c
+        }
+
+.ant-pagination.mini .ant-pagination-simple-pager, .ant-pagination.mini .ant-pagination-total-text {
+    height: 24px;
+    line-height: 24px
+}
+
+.ant-pagination.mini .ant-pagination-item {
+    min-width: 24px;
+    height: 24px;
+    margin: 0;
+    line-height: 22px
+}
+
+    .ant-pagination.mini .ant-pagination-item:not(.ant-pagination-item-active) {
+        background: transparent;
+        border-color: transparent
+    }
+
+.ant-pagination.mini .ant-pagination-next, .ant-pagination.mini .ant-pagination-prev {
+    min-width: 24px;
+    height: 24px;
+    margin: 0;
+    line-height: 24px
+}
+
+    .ant-pagination.mini .ant-pagination-next .ant-pagination-item-link, .ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link {
+        background: transparent;
+        border-color: transparent
+    }
+
+        .ant-pagination.mini .ant-pagination-next .ant-pagination-item-link:after, .ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link:after {
+            height: 24px;
+            line-height: 24px
+        }
+
+.ant-pagination.mini .ant-pagination-jump-next, .ant-pagination.mini .ant-pagination-jump-prev {
+    height: 24px;
+    margin-right: 0;
+    line-height: 24px
+}
+
+.ant-pagination.mini .ant-pagination-options {
+    margin-left: 2px
+}
+
+.ant-pagination.mini .ant-pagination-options-quick-jumper {
+    height: 24px;
+    line-height: 24px
+}
+
+    .ant-pagination.mini .ant-pagination-options-quick-jumper input {
+        height: 24px;
+        padding: 1px 7px;
+        width: 44px
+    }
+
+.ant-pagination.ant-pagination-disabled {
+    cursor: not-allowed
+}
+
+    .ant-pagination.ant-pagination-disabled .ant-pagination-item {
+        background: #f5f5f5;
+        border-color: #d9d9d9;
+        cursor: not-allowed
+    }
+
+        .ant-pagination.ant-pagination-disabled .ant-pagination-item a {
+            color: rgba(0,0,0,.25);
+            background: transparent;
+            border: none;
+            cursor: not-allowed
+        }
+
+    .ant-pagination.ant-pagination-disabled .ant-pagination-item-active {
+        background: #dbdbdb;
+        border-color: transparent
+    }
+
+        .ant-pagination.ant-pagination-disabled .ant-pagination-item-active a {
+            color: #fff
+        }
+
+    .ant-pagination.ant-pagination-disabled .ant-pagination-item-link, .ant-pagination.ant-pagination-disabled .ant-pagination-item-link:focus, .ant-pagination.ant-pagination-disabled .ant-pagination-item-link:hover {
+        color: rgba(0,0,0,.45);
+        background: #f5f5f5;
+        border-color: #d9d9d9;
+        cursor: not-allowed
+    }
+
+    .ant-pagination.ant-pagination-disabled .ant-pagination-jump-next:focus .ant-pagination-item-link-icon, .ant-pagination.ant-pagination-disabled .ant-pagination-jump-next:hover .ant-pagination-item-link-icon, .ant-pagination.ant-pagination-disabled .ant-pagination-jump-prev:focus .ant-pagination-item-link-icon, .ant-pagination.ant-pagination-disabled .ant-pagination-jump-prev:hover .ant-pagination-item-link-icon {
+        opacity: 0
+    }
+
+    .ant-pagination.ant-pagination-disabled .ant-pagination-jump-next:focus .ant-pagination-item-ellipsis, .ant-pagination.ant-pagination-disabled .ant-pagination-jump-next:hover .ant-pagination-item-ellipsis, .ant-pagination.ant-pagination-disabled .ant-pagination-jump-prev:focus .ant-pagination-item-ellipsis, .ant-pagination.ant-pagination-disabled .ant-pagination-jump-prev:hover .ant-pagination-item-ellipsis {
+        opacity: 1
+    }
+
+@media only screen and (max-width:992px) {
+    .ant-pagination-item-after-jump-prev, .ant-pagination-item-before-jump-next {
+        display: none
+    }
+}
+
+@media only screen and (max-width:576px) {
+    .ant-pagination-options {
+        display: none
+    }
+}
+
+.ant-popover {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: absolute;
+    top: 0;
+    left: 0;
+    z-index: 1030;
+    font-weight: 400;
+    white-space: normal;
+    text-align: left;
+    cursor: auto;
+    -webkit-user-select: text;
+    -moz-user-select: text;
+    -ms-user-select: text;
+    user-select: text
+}
+
+    .ant-popover:after {
+        position: absolute;
+        background: hsla(0,0%,100%,.01);
+        content: ""
+    }
+
+.ant-popover-hidden {
+    display: none
+}
+
+.ant-popover-placement-top, .ant-popover-placement-topLeft, .ant-popover-placement-topRight {
+    padding-bottom: 10px
+}
+
+.ant-popover-placement-right, .ant-popover-placement-rightBottom, .ant-popover-placement-rightTop {
+    padding-left: 10px
+}
+
+.ant-popover-placement-bottom, .ant-popover-placement-bottomLeft, .ant-popover-placement-bottomRight {
+    padding-top: 10px
+}
+
+.ant-popover-placement-left, .ant-popover-placement-leftBottom, .ant-popover-placement-leftTop {
+    padding-right: 10px
+}
+
+.ant-popover-inner {
+    background-color: #fff;
+    background-clip: padding-box;
+    border-radius: 2px;
+    -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    -webkit-box-shadow: 0 0 8px rgba(0,0,0,.15)\9;
+    box-shadow: 0 0 8px rgba(0,0,0,.15)\9
+}
+
+@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active) {
+    .ant-popover-inner {
+        -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+        box-shadow: 0 2px 8px rgba(0,0,0,.15)
+    }
+}
+
+.ant-popover-title {
+    min-width: 177px;
+    min-height: 32px;
+    margin: 0;
+    padding: 5px 16px 4px;
+    color: rgba(0,0,0,.85);
+    font-weight: 500;
+    border-bottom: 1px solid #e8e8e8
+}
+
+.ant-popover-inner-content {
+    padding: 12px 16px;
+    color: rgba(0,0,0,.65)
+}
+
+.ant-popover-message {
+    position: relative;
+    padding: 4px 0 12px;
+    color: rgba(0,0,0,.65);
+    font-size: 14px
+}
+
+    .ant-popover-message > .anticon {
+        position: absolute;
+        top: 8px;
+        color: #faad14;
+        font-size: 14px
+    }
+
+.ant-popover-message-title {
+    padding-left: 22px
+}
+
+.ant-popover-buttons {
+    margin-bottom: 4px;
+    text-align: right
+}
+
+    .ant-popover-buttons button {
+        margin-left: 8px
+    }
+
+.ant-popover-arrow {
+    position: absolute;
+    display: block;
+    width: 8.48528137px;
+    height: 8.48528137px;
+    background: transparent;
+    border-style: solid;
+    border-width: 4.24264069px;
+    -webkit-transform: rotate(45deg);
+    transform: rotate(45deg)
+}
+
+.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow {
+    bottom: 6.2px;
+    border-top-color: transparent;
+    border-right-color: #fff;
+    border-bottom-color: #fff;
+    border-left-color: transparent;
+    -webkit-box-shadow: 3px 3px 7px rgba(0,0,0,.07);
+    box-shadow: 3px 3px 7px rgba(0,0,0,.07)
+}
+
+.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow {
+    left: 50%;
+    -webkit-transform: translateX(-50%) rotate(45deg);
+    transform: translateX(-50%) rotate(45deg)
+}
+
+.ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow {
+    left: 16px
+}
+
+.ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow {
+    right: 16px
+}
+
+.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow {
+    left: 6px;
+    border-top-color: transparent;
+    border-right-color: transparent;
+    border-bottom-color: #fff;
+    border-left-color: #fff;
+    -webkit-box-shadow: -3px 3px 7px rgba(0,0,0,.07);
+    box-shadow: -3px 3px 7px rgba(0,0,0,.07)
+}
+
+.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow {
+    top: 50%;
+    -webkit-transform: translateY(-50%) rotate(45deg);
+    transform: translateY(-50%) rotate(45deg)
+}
+
+.ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow {
+    top: 12px
+}
+
+.ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow {
+    bottom: 12px
+}
+
+.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow {
+    top: 6px;
+    border-top-color: #fff;
+    border-right-color: transparent;
+    border-bottom-color: transparent;
+    border-left-color: #fff;
+    -webkit-box-shadow: -2px -2px 5px rgba(0,0,0,.06);
+    box-shadow: -2px -2px 5px rgba(0,0,0,.06)
+}
+
+.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow {
+    left: 50%;
+    -webkit-transform: translateX(-50%) rotate(45deg);
+    transform: translateX(-50%) rotate(45deg)
+}
+
+.ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow {
+    left: 16px
+}
+
+.ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow {
+    right: 16px
+}
+
+.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow {
+    right: 6px;
+    border-top-color: #fff;
+    border-right-color: #fff;
+    border-bottom-color: transparent;
+    border-left-color: transparent;
+    -webkit-box-shadow: 3px -3px 7px rgba(0,0,0,.07);
+    box-shadow: 3px -3px 7px rgba(0,0,0,.07)
+}
+
+.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow {
+    top: 50%;
+    -webkit-transform: translateY(-50%) rotate(45deg);
+    transform: translateY(-50%) rotate(45deg)
+}
+
+.ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow {
+    top: 12px
+}
+
+.ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow {
+    bottom: 12px
+}
+
+.ant-progress {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    display: inline-block
+}
+
+.ant-progress-line {
+    position: relative;
+    width: 100%;
+    font-size: 14px
+}
+
+.ant-progress-small.ant-progress-line, .ant-progress-small.ant-progress-line .ant-progress-text .anticon {
+    font-size: 12px
+}
+
+.ant-progress-outer {
+    display: inline-block;
+    width: 100%;
+    margin-right: 0;
+    padding-right: 0
+}
+
+.ant-progress-show-info .ant-progress-outer {
+    margin-right: calc(-2em - 8px);
+    padding-right: calc(2em + 8px)
+}
+
+.ant-progress-inner {
+    position: relative;
+    display: inline-block;
+    width: 100%;
+    overflow: hidden;
+    vertical-align: middle;
+    background-color: #f5f5f5;
+    border-radius: 100px
+}
+
+.ant-progress-circle-trail {
+    stroke: #f5f5f5
+}
+
+.ant-progress-circle-path {
+    -webkit-animation: ant-progress-appear .3s;
+    animation: ant-progress-appear .3s
+}
+
+.ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path {
+    stroke: #1890ff
+}
+
+.ant-progress-bg, .ant-progress-success-bg {
+    position: relative;
+    background-color: #1890ff;
+    border-radius: 100px;
+    -webkit-transition: all .4s cubic-bezier(.08,.82,.17,1) 0s;
+    transition: all .4s cubic-bezier(.08,.82,.17,1) 0s
+}
+
+.ant-progress-success-bg {
+    position: absolute;
+    top: 0;
+    left: 0;
+    background-color: #52c41a
+}
+
+.ant-progress-text {
+    display: inline-block;
+    width: 2em;
+    margin-left: 8px;
+    color: rgba(0,0,0,.45);
+    font-size: 1em;
+    line-height: 1;
+    white-space: nowrap;
+    text-align: left;
+    vertical-align: middle;
+    word-break: normal
+}
+
+    .ant-progress-text .anticon {
+        font-size: 14px
+    }
+
+.ant-progress-status-active .ant-progress-bg:before {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    background: #fff;
+    border-radius: 10px;
+    opacity: 0;
+    -webkit-animation: ant-progress-active 2.4s cubic-bezier(.23,1,.32,1) infinite;
+    animation: ant-progress-active 2.4s cubic-bezier(.23,1,.32,1) infinite;
+    content: ""
+}
+
+.ant-progress-status-exception .ant-progress-bg {
+    background-color: #f5222d
+}
+
+.ant-progress-status-exception .ant-progress-text {
+    color: #f5222d
+}
+
+.ant-progress-status-exception .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path {
+    stroke: #f5222d
+}
+
+.ant-progress-status-success .ant-progress-bg {
+    background-color: #52c41a
+}
+
+.ant-progress-status-success .ant-progress-text {
+    color: #52c41a
+}
+
+.ant-progress-status-success .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path {
+    stroke: #52c41a
+}
+
+.ant-progress-circle .ant-progress-inner {
+    position: relative;
+    line-height: 1;
+    background-color: transparent
+}
+
+.ant-progress-circle .ant-progress-text {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    width: 100%;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    line-height: 1;
+    white-space: normal;
+    text-align: center;
+    -webkit-transform: translate(-50%,-50%);
+    transform: translate(-50%,-50%)
+}
+
+    .ant-progress-circle .ant-progress-text .anticon {
+        font-size: 1.16666667em
+    }
+
+.ant-progress-circle.ant-progress-status-exception .ant-progress-text {
+    color: #f5222d
+}
+
+.ant-progress-circle.ant-progress-status-success .ant-progress-text {
+    color: #52c41a
+}
+
+@-webkit-keyframes ant-progress-active {
+    0% {
+        width: 0;
+        opacity: .1
+    }
+
+    20% {
+        width: 0;
+        opacity: .5
+    }
+
+    to {
+        width: 100%;
+        opacity: 0
+    }
+}
+
+@keyframes ant-progress-active {
+    0% {
+        width: 0;
+        opacity: .1
+    }
+
+    20% {
+        width: 0;
+        opacity: .5
+    }
+
+    to {
+        width: 100%;
+        opacity: 0
+    }
+}
+
+.ant-radio-group {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    display: inline-block
+}
+
+.ant-radio-wrapper {
+    margin: 0;
+    margin-right: 8px
+}
+
+.ant-radio, .ant-radio-wrapper {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    display: inline-block;
+    white-space: nowrap;
+    cursor: pointer
+}
+
+.ant-radio {
+    margin: 0;
+    line-height: 1;
+    vertical-align: sub;
+    outline: none
+}
+
+    .ant-radio-input:focus + .ant-radio-inner, .ant-radio-wrapper:hover .ant-radio, .ant-radio:hover .ant-radio-inner {
+        border-color: #fa541c
+    }
+
+.ant-radio-input:focus + .ant-radio-inner {
+    -webkit-box-shadow: 0 0 0 3px rgba(250,84,28,.08);
+    box-shadow: 0 0 0 3px rgba(250,84,28,.08)
+}
+
+.ant-radio-checked:after {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    border: 1px solid #fa541c;
+    border-radius: 50%;
+    visibility: hidden;
+    -webkit-animation: antRadioEffect .36s ease-in-out;
+    animation: antRadioEffect .36s ease-in-out;
+    -webkit-animation-fill-mode: both;
+    animation-fill-mode: both;
+    content: ""
+}
+
+.ant-radio-wrapper:hover .ant-radio:after, .ant-radio:hover:after {
+    visibility: visible
+}
+
+.ant-radio-inner {
+    position: relative;
+    top: 0;
+    left: 0;
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-color: #fff;
+    border-color: #d9d9d9;
+    border-style: solid;
+    border-width: 1px;
+    border-radius: 100px;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-radio-inner:after {
+        position: absolute;
+        top: 3px;
+        left: 3px;
+        display: table;
+        width: 8px;
+        height: 8px;
+        background-color: #fa541c;
+        border-top: 0;
+        border-left: 0;
+        border-radius: 8px;
+        -webkit-transform: scale(0);
+        transform: scale(0);
+        opacity: 0;
+        -webkit-transition: all .3s cubic-bezier(.78,.14,.15,.86);
+        transition: all .3s cubic-bezier(.78,.14,.15,.86);
+        content: " "
+    }
+
+.ant-radio-input {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 1;
+    cursor: pointer;
+    opacity: 0
+}
+
+.ant-radio-checked .ant-radio-inner {
+    border-color: #fa541c
+}
+
+    .ant-radio-checked .ant-radio-inner:after {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: 1;
+        -webkit-transition: all .3s cubic-bezier(.78,.14,.15,.86);
+        transition: all .3s cubic-bezier(.78,.14,.15,.86)
+    }
+
+.ant-radio-disabled .ant-radio-inner {
+    background-color: #f5f5f5;
+    border-color: #d9d9d9 !important;
+    cursor: not-allowed
+}
+
+    .ant-radio-disabled .ant-radio-inner:after {
+        background-color: rgba(0,0,0,.2)
+    }
+
+.ant-radio-disabled .ant-radio-input {
+    cursor: not-allowed
+}
+
+.ant-radio-disabled + span {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed
+}
+
+span.ant-radio + * {
+    padding-right: 8px;
+    padding-left: 8px
+}
+
+.ant-radio-button-wrapper {
+    position: relative;
+    display: inline-block;
+    height: 32px;
+    margin: 0;
+    padding: 0 15px;
+    color: rgba(0,0,0,.65);
+    line-height: 30px;
+    background: #fff;
+    border: 1px solid #d9d9d9;
+    border-top-width: 1.02px;
+    border-left: 0;
+    cursor: pointer;
+    -webkit-transition: color .3s,background .3s,border-color .3s;
+    transition: color .3s,background .3s,border-color .3s
+}
+
+    .ant-radio-button-wrapper a {
+        color: rgba(0,0,0,.65)
+    }
+
+    .ant-radio-button-wrapper > .ant-radio-button {
+        display: block;
+        width: 0;
+        height: 0;
+        margin-left: 0
+    }
+
+.ant-radio-group-large .ant-radio-button-wrapper {
+    height: 40px;
+    font-size: 16px;
+    line-height: 38px
+}
+
+.ant-radio-group-small .ant-radio-button-wrapper {
+    height: 24px;
+    padding: 0 7px;
+    line-height: 22px
+}
+
+.ant-radio-button-wrapper:not(:first-child):before {
+    position: absolute;
+    top: 0;
+    left: -1px;
+    display: block;
+    width: 1px;
+    height: 100%;
+    background-color: #d9d9d9;
+    content: ""
+}
+
+.ant-radio-button-wrapper:first-child {
+    border-left: 1px solid #d9d9d9;
+    border-radius: 2px 0 0 2px
+}
+
+.ant-radio-button-wrapper:last-child {
+    border-radius: 0 2px 2px 0
+}
+
+.ant-radio-button-wrapper:first-child:last-child {
+    border-radius: 2px
+}
+
+.ant-radio-button-wrapper:hover {
+    position: relative;
+    color: #fa541c
+}
+
+.ant-radio-button-wrapper:focus-within {
+    outline: 3px solid rgba(250,84,28,.06)
+}
+
+.ant-radio-button-wrapper .ant-radio-inner, .ant-radio-button-wrapper input[type=checkbox], .ant-radio-button-wrapper input[type=radio] {
+    width: 0;
+    height: 0;
+    opacity: 0;
+    pointer-events: none
+}
+
+.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
+    z-index: 1;
+    color: #fa541c;
+    background: #fff;
+    border-color: #fa541c;
+    -webkit-box-shadow: -1px 0 0 0 #fa541c;
+    box-shadow: -1px 0 0 0 #fa541c
+}
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before {
+        background-color: #fa541c !important;
+        opacity: .1
+    }
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child {
+        border-color: #fa541c;
+        -webkit-box-shadow: none !important;
+        box-shadow: none !important
+    }
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
+        color: #ff7a45;
+        border-color: #ff7a45;
+        -webkit-box-shadow: -1px 0 0 0 #ff7a45;
+        box-shadow: -1px 0 0 0 #ff7a45
+    }
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {
+        color: #d4380d;
+        border-color: #d4380d;
+        -webkit-box-shadow: -1px 0 0 0 #d4380d;
+        box-shadow: -1px 0 0 0 #d4380d
+    }
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {
+        outline: 3px solid rgba(250,84,28,.06)
+    }
+
+.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
+    color: #fff;
+    background: #fa541c;
+    border-color: #fa541c
+}
+
+    .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
+        color: #fff;
+        background: #ff7a45;
+        border-color: #ff7a45
+    }
+
+    .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {
+        color: #fff;
+        background: #d4380d;
+        border-color: #d4380d
+    }
+
+    .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {
+        outline: 3px solid rgba(250,84,28,.06)
+    }
+
+.ant-radio-button-wrapper-disabled {
+    cursor: not-allowed
+}
+
+    .ant-radio-button-wrapper-disabled, .ant-radio-button-wrapper-disabled:first-child, .ant-radio-button-wrapper-disabled:hover {
+        color: rgba(0,0,0,.25);
+        background-color: #f5f5f5;
+        border-color: #d9d9d9
+    }
+
+        .ant-radio-button-wrapper-disabled:first-child {
+            border-left-color: #d9d9d9
+        }
+
+        .ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked {
+            color: #fff;
+            background-color: #e6e6e6;
+            border-color: #d9d9d9;
+            -webkit-box-shadow: none;
+            box-shadow: none
+        }
+
+@-webkit-keyframes antRadioEffect {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: .5
+    }
+
+    to {
+        -webkit-transform: scale(1.6);
+        transform: scale(1.6);
+        opacity: 0
+    }
+}
+
+@keyframes antRadioEffect {
+    0% {
+        -webkit-transform: scale(1);
+        transform: scale(1);
+        opacity: .5
+    }
+
+    to {
+        -webkit-transform: scale(1.6);
+        transform: scale(1.6);
+        opacity: 0
+    }
+}
+
+@supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {
+    .ant-radio {
+        vertical-align: text-bottom
+    }
+}
+
+.ant-rate {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    display: inline-block;
+    margin: 0;
+    padding: 0;
+    color: #fadb14;
+    font-size: 20px;
+    line-height: unset;
+    list-style: none;
+    outline: none
+}
+
+.ant-rate-disabled .ant-rate-star {
+    cursor: default
+}
+
+    .ant-rate-disabled .ant-rate-star:hover {
+        -webkit-transform: scale(1);
+        transform: scale(1)
+    }
+
+.ant-rate-star {
+    position: relative;
+    display: inline-block;
+    margin: 0;
+    padding: 0;
+    color: inherit;
+    cursor: pointer;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-rate-star:not(:last-child) {
+        margin-right: 8px
+    }
+
+    .ant-rate-star > div:focus {
+        outline: 0
+    }
+
+    .ant-rate-star > div:focus, .ant-rate-star > div:hover {
+        -webkit-transform: scale(1.1);
+        transform: scale(1.1)
+    }
+
+.ant-rate-star-first, .ant-rate-star-second {
+    color: #e8e8e8;
+    -webkit-transition: all .3s;
+    transition: all .3s;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+    .ant-rate-star-first .anticon, .ant-rate-star-second .anticon {
+        vertical-align: middle
+    }
+
+.ant-rate-star-first {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 50%;
+    height: 100%;
+    overflow: hidden;
+    opacity: 0
+}
+
+.ant-rate-star-half .ant-rate-star-first, .ant-rate-star-half .ant-rate-star-second {
+    opacity: 1
+}
+
+.ant-rate-star-full .ant-rate-star-second, .ant-rate-star-half .ant-rate-star-first {
+    color: inherit
+}
+
+.ant-rate-text {
+    display: inline-block;
+    margin-left: 8px;
+    font-size: 14px
+}
+
+.ant-result {
+    padding: 48px 32px
+}
+
+.ant-result-success .ant-result-icon > .anticon {
+    color: #52c41a
+}
+
+.ant-result-error .ant-result-icon > .anticon {
+    color: #f5222d
+}
+
+.ant-result-info .ant-result-icon > .anticon {
+    color: #1890ff
+}
+
+.ant-result-warning .ant-result-icon > .anticon {
+    color: #faad14
+}
+
+.ant-result-image {
+    width: 250px;
+    height: 295px;
+    margin: auto
+}
+
+.ant-result-icon {
+    margin-bottom: 24px;
+    text-align: center
+}
+
+    .ant-result-icon > .anticon {
+        font-size: 72px
+    }
+
+.ant-result-title {
+    color: rgba(0,0,0,.85);
+    font-size: 24px;
+    line-height: 1.8;
+    text-align: center
+}
+
+.ant-result-subtitle {
+    color: rgba(0,0,0,.45);
+    font-size: 14px;
+    line-height: 1.6;
+    text-align: center
+}
+
+.ant-result-extra {
+    margin-top: 32px;
+    text-align: center
+}
+
+    .ant-result-extra > * {
+        margin-right: 8px
+    }
+
+    .ant-result-extra > :last-child {
+        margin-right: 0
+    }
+
+.ant-result-content {
+    margin-top: 24px;
+    padding: 24px 40px;
+    background-color: #fafafa
+}
+
+.ant-select {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    display: inline-block;
+    outline: 0
+}
+
+    .ant-select, .ant-select ol, .ant-select ul {
+        margin: 0;
+        padding: 0;
+        list-style: none
+    }
+
+        .ant-select > ul > li > a {
+            padding: 0;
+            background-color: #fff
+        }
+
+.ant-select-arrow {
+    display: inline-block;
+    color: inherit;
+    font-style: normal;
+    line-height: 0;
+    text-align: center;
+    text-transform: none;
+    vertical-align: -.125em;
+    text-rendering: optimizeLegibility;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+    position: absolute;
+    top: 50%;
+    right: 11px;
+    margin-top: -6px;
+    color: rgba(0,0,0,.25);
+    font-size: 12px;
+    line-height: 1;
+    -webkit-transform-origin: 50% 50%;
+    transform-origin: 50% 50%
+}
+
+    .ant-select-arrow > * {
+        line-height: 1
+    }
+
+    .ant-select-arrow svg {
+        display: inline-block
+    }
+
+    .ant-select-arrow:before {
+        display: none
+    }
+
+    .ant-select-arrow .ant-select-arrow-icon {
+        display: block
+    }
+
+        .ant-select-arrow .ant-select-arrow-icon svg {
+            -webkit-transition: -webkit-transform .3s;
+            transition: -webkit-transform .3s;
+            transition: transform .3s;
+            transition: transform .3s,-webkit-transform .3s
+        }
+
+.ant-select-selection {
+    display: block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    background-color: #fff;
+    border: 1px solid #d9d9d9;
+    border-top-width: 1.02px;
+    border-radius: 2px;
+    outline: none;
+    -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1);
+    transition: all .3s cubic-bezier(.645,.045,.355,1);
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+    .ant-select-selection:hover {
+        border-color: #ff7a45;
+        border-right-width: 1px !important
+    }
+
+    .ant-select-focused .ant-select-selection, .ant-select-selection:active, .ant-select-selection:focus {
+        border-color: #ff7a45;
+        border-right-width: 1px !important;
+        outline: 0;
+        -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+        box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+    }
+
+.ant-select-selection__clear {
+    position: absolute;
+    top: 50%;
+    right: 11px;
+    z-index: 1;
+    display: inline-block;
+    width: 12px;
+    height: 12px;
+    margin-top: -6px;
+    color: rgba(0,0,0,.25);
+    font-size: 12px;
+    font-style: normal;
+    line-height: 12px;
+    text-align: center;
+    text-transform: none;
+    background: #fff;
+    cursor: pointer;
+    opacity: 0;
+    -webkit-transition: color .3s ease,opacity .15s ease;
+    transition: color .3s ease,opacity .15s ease;
+    text-rendering: auto
+}
+
+    .ant-select-selection__clear:before {
+        display: block
+    }
+
+    .ant-select-selection__clear:hover {
+        color: rgba(0,0,0,.45)
+    }
+
+.ant-select-selection:hover .ant-select-selection__clear {
+    opacity: 1
+}
+
+.ant-select-selection-selected-value {
+    float: left;
+    max-width: 100%;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis
+}
+
+.ant-select-no-arrow .ant-select-selection-selected-value {
+    padding-right: 0
+}
+
+.ant-select-disabled {
+    color: rgba(0,0,0,.25)
+}
+
+    .ant-select-disabled .ant-select-selection {
+        background: #f5f5f5;
+        cursor: not-allowed
+    }
+
+        .ant-select-disabled .ant-select-selection:active, .ant-select-disabled .ant-select-selection:focus, .ant-select-disabled .ant-select-selection:hover {
+            border-color: #d9d9d9;
+            -webkit-box-shadow: none;
+            box-shadow: none
+        }
+
+    .ant-select-disabled .ant-select-selection__clear {
+        display: none;
+        visibility: hidden;
+        pointer-events: none
+    }
+
+    .ant-select-disabled .ant-select-selection--multiple .ant-select-selection__choice {
+        padding-right: 10px;
+        color: rgba(0,0,0,.33);
+        background: #f5f5f5
+    }
+
+    .ant-select-disabled .ant-select-selection--multiple .ant-select-selection__choice__remove {
+        display: none
+    }
+
+.ant-select-selection--single {
+    position: relative;
+    height: 32px;
+    cursor: pointer
+}
+
+    .ant-select-selection--single .ant-select-selection__rendered {
+        margin-right: 24px
+    }
+
+.ant-select-no-arrow .ant-select-selection__rendered {
+    margin-right: 11px
+}
+
+.ant-select-selection__rendered {
+    position: relative;
+    display: block;
+    margin-right: 11px;
+    margin-left: 11px;
+    line-height: 30px
+}
+
+    .ant-select-selection__rendered:after {
+        display: inline-block;
+        width: 0;
+        visibility: hidden;
+        content: ".";
+        pointer-events: none
+    }
+
+.ant-select-lg {
+    font-size: 16px
+}
+
+    .ant-select-lg .ant-select-selection--single {
+        height: 40px
+    }
+
+    .ant-select-lg .ant-select-selection__rendered {
+        line-height: 38px
+    }
+
+    .ant-select-lg .ant-select-selection--multiple {
+        min-height: 40px
+    }
+
+        .ant-select-lg .ant-select-selection--multiple .ant-select-selection__rendered li {
+            height: 32px;
+            line-height: 32px
+        }
+
+        .ant-select-lg .ant-select-selection--multiple .ant-select-arrow, .ant-select-lg .ant-select-selection--multiple .ant-select-selection__clear {
+            top: 20px
+        }
+
+.ant-select-sm .ant-select-selection--single {
+    height: 24px
+}
+
+.ant-select-sm .ant-select-selection__rendered {
+    margin-left: 7px;
+    line-height: 22px
+}
+
+.ant-select-sm .ant-select-selection--multiple {
+    min-height: 24px
+}
+
+    .ant-select-sm .ant-select-selection--multiple .ant-select-selection__rendered li {
+        height: 16px;
+        line-height: 14px
+    }
+
+    .ant-select-sm .ant-select-selection--multiple .ant-select-arrow, .ant-select-sm .ant-select-selection--multiple .ant-select-selection__clear {
+        top: 12px
+    }
+
+.ant-select-sm .ant-select-arrow, .ant-select-sm .ant-select-selection__clear {
+    right: 8px
+}
+
+.ant-select-disabled .ant-select-selection__choice__remove {
+    color: rgba(0,0,0,.25);
+    cursor: default
+}
+
+    .ant-select-disabled .ant-select-selection__choice__remove:hover {
+        color: rgba(0,0,0,.25)
+    }
+
+.ant-select-search__field__wrap {
+    position: relative;
+    display: inline-block
+}
+
+.ant-select-search__field__placeholder, .ant-select-selection__placeholder {
+    position: absolute;
+    top: 50%;
+    right: 9px;
+    left: 0;
+    max-width: 100%;
+    height: 20px;
+    margin-top: -10px;
+    overflow: hidden;
+    color: #bfbfbf;
+    line-height: 20px;
+    white-space: nowrap;
+    text-align: left;
+    text-overflow: ellipsis
+}
+
+.ant-select-search__field__placeholder {
+    left: 12px
+}
+
+.ant-select-search__field__mirror {
+    position: absolute;
+    top: 0;
+    left: 0;
+    white-space: pre;
+    opacity: 0;
+    pointer-events: none
+}
+
+.ant-select-search--inline {
+    position: absolute;
+    width: 100%;
+    height: 100%
+}
+
+    .ant-select-search--inline .ant-select-search__field__wrap {
+        width: 100%;
+        height: 100%
+    }
+
+    .ant-select-search--inline .ant-select-search__field {
+        width: 100%;
+        height: 100%;
+        font-size: 100%;
+        line-height: 1;
+        background: transparent;
+        border-width: 0;
+        border-radius: 2px;
+        outline: 0
+    }
+
+    .ant-select-search--inline > i {
+        float: right
+    }
+
+.ant-select-selection--multiple {
+    min-height: 32px;
+    padding-bottom: 3px;
+    cursor: text;
+    zoom: 1
+}
+
+    .ant-select-selection--multiple:after, .ant-select-selection--multiple:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-select-selection--multiple:after {
+        clear: both
+    }
+
+    .ant-select-selection--multiple .ant-select-search--inline {
+        position: static;
+        float: left;
+        width: auto;
+        max-width: 100%;
+        padding: 0
+    }
+
+        .ant-select-selection--multiple .ant-select-search--inline .ant-select-search__field {
+            width: .75em;
+            max-width: 100%;
+            padding: 1px
+        }
+
+    .ant-select-selection--multiple .ant-select-selection__rendered {
+        height: auto;
+        margin-bottom: -3px;
+        margin-left: 5px
+    }
+
+    .ant-select-selection--multiple .ant-select-selection__placeholder {
+        margin-left: 6px
+    }
+
+    .ant-select-selection--multiple .ant-select-selection__rendered > ul > li, .ant-select-selection--multiple > ul > li {
+        height: 24px;
+        margin-top: 3px;
+        line-height: 22px
+    }
+
+    .ant-select-selection--multiple .ant-select-selection__choice {
+        position: relative;
+        float: left;
+        max-width: 99%;
+        margin-right: 4px;
+        padding: 0 20px 0 10px;
+        overflow: hidden;
+        color: rgba(0,0,0,.65);
+        background-color: #fafafa;
+        border: 1px solid #e8e8e8;
+        border-radius: 2px;
+        cursor: default;
+        -webkit-transition: padding .3s cubic-bezier(.645,.045,.355,1);
+        transition: padding .3s cubic-bezier(.645,.045,.355,1)
+    }
+
+    .ant-select-selection--multiple .ant-select-selection__choice__disabled {
+        padding: 0 10px
+    }
+
+    .ant-select-selection--multiple .ant-select-selection__choice__content {
+        display: inline-block;
+        max-width: 100%;
+        overflow: hidden;
+        white-space: nowrap;
+        text-overflow: ellipsis;
+        -webkit-transition: margin .3s cubic-bezier(.645,.045,.355,1);
+        transition: margin .3s cubic-bezier(.645,.045,.355,1)
+    }
+
+    .ant-select-selection--multiple .ant-select-selection__choice__remove {
+        color: inherit;
+        font-style: normal;
+        line-height: 0;
+        text-align: center;
+        text-transform: none;
+        vertical-align: -.125em;
+        text-rendering: optimizeLegibility;
+        -webkit-font-smoothing: antialiased;
+        -moz-osx-font-smoothing: grayscale;
+        position: absolute;
+        right: 4px;
+        color: rgba(0,0,0,.45);
+        font-weight: 700;
+        line-height: inherit;
+        cursor: pointer;
+        -webkit-transition: all .3s;
+        transition: all .3s;
+        display: inline-block;
+        font-size: 12px;
+        font-size: 10px\9;
+        -webkit-transform: scale(.83333333) rotate(0deg);
+        transform: scale(.83333333) rotate(0deg)
+    }
+
+        .ant-select-selection--multiple .ant-select-selection__choice__remove > * {
+            line-height: 1
+        }
+
+        .ant-select-selection--multiple .ant-select-selection__choice__remove svg {
+            display: inline-block
+        }
+
+        .ant-select-selection--multiple .ant-select-selection__choice__remove:before {
+            display: none
+        }
+
+        .ant-select-selection--multiple .ant-select-selection__choice__remove .ant-select-selection--multiple .ant-select-selection__choice__remove-icon {
+            display: block
+        }
+
+:root .ant-select-selection--multiple .ant-select-selection__choice__remove {
+    font-size: 12px
+}
+
+.ant-select-selection--multiple .ant-select-selection__choice__remove:hover {
+    color: rgba(0,0,0,.75)
+}
+
+.ant-select-selection--multiple .ant-select-arrow, .ant-select-selection--multiple .ant-select-selection__clear {
+    top: 16px
+}
+
+.ant-select-allow-clear .ant-select-selection--multiple .ant-select-selection__rendered, .ant-select-show-arrow .ant-select-selection--multiple .ant-select-selection__rendered {
+    margin-right: 20px
+}
+
+.ant-select-open .ant-select-arrow-icon svg {
+    -webkit-transform: rotate(180deg);
+    transform: rotate(180deg)
+}
+
+.ant-select-open .ant-select-selection {
+    border-color: #ff7a45;
+    border-right-width: 1px !important;
+    outline: 0;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-select-combobox .ant-select-arrow {
+    display: none
+}
+
+.ant-select-combobox .ant-select-search--inline {
+    float: none;
+    width: 100%;
+    height: 100%
+}
+
+.ant-select-combobox .ant-select-search__field__wrap {
+    width: 100%;
+    height: 100%
+}
+
+.ant-select-combobox .ant-select-search__field {
+    position: relative;
+    z-index: 1;
+    width: 100%;
+    height: 100%;
+    -webkit-box-shadow: none;
+    box-shadow: none;
+    -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1),height 0s;
+    transition: all .3s cubic-bezier(.645,.045,.355,1),height 0s
+}
+
+.ant-select-combobox.ant-select-allow-clear .ant-select-selection:hover .ant-select-selection__rendered, .ant-select-combobox.ant-select-show-arrow .ant-select-selection:hover .ant-select-selection__rendered {
+    margin-right: 20px
+}
+
+.ant-select-dropdown {
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: absolute;
+    top: -9999px;
+    left: -9999px;
+    z-index: 1050;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    font-size: 14px;
+    font-variant: normal;
+    background-color: #fff;
+    border-radius: 2px;
+    outline: none;
+    -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+    .ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-bottomLeft, .ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-bottomLeft {
+        -webkit-animation-name: antSlideUpIn;
+        animation-name: antSlideUpIn
+    }
+
+    .ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-topLeft, .ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-topLeft {
+        -webkit-animation-name: antSlideDownIn;
+        animation-name: antSlideDownIn
+    }
+
+    .ant-select-dropdown.slide-up-leave.slide-up-leave-active.ant-select-dropdown-placement-bottomLeft {
+        -webkit-animation-name: antSlideUpOut;
+        animation-name: antSlideUpOut
+    }
+
+    .ant-select-dropdown.slide-up-leave.slide-up-leave-active.ant-select-dropdown-placement-topLeft {
+        -webkit-animation-name: antSlideDownOut;
+        animation-name: antSlideDownOut
+    }
+
+.ant-select-dropdown-hidden {
+    display: none
+}
+
+.ant-select-dropdown-menu {
+    max-height: 250px;
+    margin-bottom: 0;
+    padding: 4px 0;
+    padding-left: 0;
+    overflow: auto;
+    list-style: none;
+    outline: none
+}
+
+.ant-select-dropdown-menu-item-group-list {
+    margin: 0;
+    padding: 0
+}
+
+    .ant-select-dropdown-menu-item-group-list > .ant-select-dropdown-menu-item {
+        padding-left: 20px
+    }
+
+.ant-select-dropdown-menu-item-group-title {
+    height: 32px;
+    padding: 0 12px;
+    color: rgba(0,0,0,.45);
+    font-size: 12px;
+    line-height: 32px
+}
+
+.ant-select-dropdown-menu-item-group-list .ant-select-dropdown-menu-item:first-child:not(:last-child), .ant-select-dropdown-menu-item-group:not(:last-child) .ant-select-dropdown-menu-item-group-list .ant-select-dropdown-menu-item:last-child {
+    border-radius: 0
+}
+
+.ant-select-dropdown-menu-item {
+    position: relative;
+    display: block;
+    padding: 5px 12px;
+    overflow: hidden;
+    color: rgba(0,0,0,.65);
+    font-weight: 400;
+    font-size: 14px;
+    line-height: 22px;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+    cursor: pointer;
+    -webkit-transition: background .3s ease;
+    transition: background .3s ease
+}
+
+    .ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled) {
+        background-color: #fff2e8
+    }
+
+.ant-select-dropdown-menu-item-selected {
+    color: rgba(0,0,0,.65);
+    font-weight: 600;
+    background-color: #fafafa
+}
+
+.ant-select-dropdown-menu-item-disabled, .ant-select-dropdown-menu-item-disabled:hover {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed
+}
+
+.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled) {
+    background-color: #fff2e8
+}
+
+.ant-select-dropdown-menu-item-divider {
+    height: 1px;
+    margin: 1px 0;
+    overflow: hidden;
+    line-height: 0;
+    background-color: #e8e8e8
+}
+
+.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item {
+    padding-right: 32px
+}
+
+    .ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item .ant-select-selected-icon {
+        position: absolute;
+        top: 50%;
+        right: 12px;
+        color: transparent;
+        font-weight: 700;
+        font-size: 12px;
+        text-shadow: 0 .1px 0,.1px 0 0,0 -.1px 0,-.1px 0;
+        -webkit-transform: translateY(-50%);
+        transform: translateY(-50%);
+        -webkit-transition: all .2s;
+        transition: all .2s
+    }
+
+    .ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item:hover .ant-select-selected-icon {
+        color: rgba(0,0,0,.87)
+    }
+
+.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-disabled .ant-select-selected-icon {
+    display: none
+}
+
+.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon, .ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon {
+    display: inline-block;
+    color: #fa541c
+}
+
+.ant-select-dropdown--empty.ant-select-dropdown--multiple .ant-select-dropdown-menu-item {
+    padding-right: 12px
+}
+
+.ant-select-dropdown-container-open .ant-select-dropdown, .ant-select-dropdown-open .ant-select-dropdown {
+    display: block
+}
+
+.ant-skeleton {
+    display: table;
+    width: 100%
+}
+
+.ant-skeleton-header {
+    display: table-cell;
+    padding-right: 16px;
+    vertical-align: top
+}
+
+    .ant-skeleton-header .ant-skeleton-avatar {
+        display: inline-block;
+        vertical-align: top;
+        background: #f2f2f2;
+        width: 32px;
+        height: 32px;
+        line-height: 32px
+    }
+
+        .ant-skeleton-header .ant-skeleton-avatar.ant-skeleton-avatar-circle {
+            border-radius: 50%
+        }
+
+    .ant-skeleton-header .ant-skeleton-avatar-lg {
+        width: 40px;
+        height: 40px;
+        line-height: 40px
+    }
+
+        .ant-skeleton-header .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle {
+            border-radius: 50%
+        }
+
+    .ant-skeleton-header .ant-skeleton-avatar-sm {
+        width: 24px;
+        height: 24px;
+        line-height: 24px
+    }
+
+        .ant-skeleton-header .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle {
+            border-radius: 50%
+        }
+
+.ant-skeleton-content {
+    display: table-cell;
+    width: 100%;
+    vertical-align: top
+}
+
+    .ant-skeleton-content .ant-skeleton-title {
+        width: 100%;
+        height: 16px;
+        margin-top: 16px;
+        background: #f2f2f2
+    }
+
+        .ant-skeleton-content .ant-skeleton-title + .ant-skeleton-paragraph {
+            margin-top: 24px
+        }
+
+    .ant-skeleton-content .ant-skeleton-paragraph {
+        padding: 0
+    }
+
+        .ant-skeleton-content .ant-skeleton-paragraph > li {
+            width: 100%;
+            height: 16px;
+            list-style: none;
+            background: #f2f2f2
+        }
+
+            .ant-skeleton-content .ant-skeleton-paragraph > li:last-child:not(:first-child):not(:nth-child(2)) {
+                width: 61%
+            }
+
+            .ant-skeleton-content .ant-skeleton-paragraph > li + li {
+                margin-top: 16px
+            }
+
+.ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title {
+    margin-top: 12px
+}
+
+    .ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title + .ant-skeleton-paragraph {
+        margin-top: 28px
+    }
+
+.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar, .ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li, .ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title {
+    background: -webkit-gradient(linear,left top,right top,color-stop(25%,#f2f2f2),color-stop(37%,#e6e6e6),color-stop(63%,#f2f2f2));
+    background: linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);
+    background-size: 400% 100%;
+    -webkit-animation: ant-skeleton-loading 1.4s ease infinite;
+    animation: ant-skeleton-loading 1.4s ease infinite
+}
+
+@-webkit-keyframes ant-skeleton-loading {
+    0% {
+        background-position: 100% 50%
+    }
+
+    to {
+        background-position: 0 50%
+    }
+}
+
+@keyframes ant-skeleton-loading {
+    0% {
+        background-position: 100% 50%
+    }
+
+    to {
+        background-position: 0 50%
+    }
+}
+
+.ant-slider {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    height: 12px;
+    margin: 14px 6px 10px;
+    padding: 4px 0;
+    cursor: pointer;
+    -ms-touch-action: none;
+    touch-action: none
+}
+
+.ant-slider-vertical {
+    width: 12px;
+    height: 100%;
+    margin: 6px 10px;
+    padding: 0 4px
+}
+
+    .ant-slider-vertical .ant-slider-rail {
+        width: 4px;
+        height: 100%
+    }
+
+    .ant-slider-vertical .ant-slider-track {
+        width: 4px
+    }
+
+    .ant-slider-vertical .ant-slider-handle {
+        margin-top: -6px;
+        margin-left: -5px
+    }
+
+    .ant-slider-vertical .ant-slider-mark {
+        top: 0;
+        left: 12px;
+        width: 18px;
+        height: 100%
+    }
+
+    .ant-slider-vertical .ant-slider-mark-text {
+        left: 4px;
+        white-space: nowrap
+    }
+
+    .ant-slider-vertical .ant-slider-step {
+        width: 4px;
+        height: 100%
+    }
+
+    .ant-slider-vertical .ant-slider-dot {
+        top: auto;
+        left: 2px;
+        margin-bottom: -4px
+    }
+
+.ant-slider-tooltip .ant-tooltip-inner {
+    min-width: unset
+}
+
+.ant-slider-with-marks {
+    margin-bottom: 28px
+}
+
+.ant-slider-rail {
+    width: 100%;
+    background-color: #f5f5f5
+}
+
+.ant-slider-rail, .ant-slider-track {
+    position: absolute;
+    height: 4px;
+    border-radius: 2px;
+    -webkit-transition: background-color .3s;
+    transition: background-color .3s
+}
+
+.ant-slider-track {
+    background-color: #ffbb96
+}
+
+.ant-slider-handle {
+    position: absolute;
+    width: 14px;
+    height: 14px;
+    margin-top: -5px;
+    background-color: #fff;
+    border: 2px solid #ffbb96;
+    border-radius: 50%;
+    -webkit-box-shadow: 0;
+    box-shadow: 0;
+    cursor: pointer;
+    -webkit-transition: border-color .3s,-webkit-box-shadow .6s,-webkit-transform .3s cubic-bezier(.18,.89,.32,1.28);
+    transition: border-color .3s,-webkit-box-shadow .6s,-webkit-transform .3s cubic-bezier(.18,.89,.32,1.28);
+    transition: border-color .3s,box-shadow .6s,transform .3s cubic-bezier(.18,.89,.32,1.28);
+    transition: border-color .3s,box-shadow .6s,transform .3s cubic-bezier(.18,.89,.32,1.28),-webkit-box-shadow .6s,-webkit-transform .3s cubic-bezier(.18,.89,.32,1.28)
+}
+
+    .ant-slider-handle:focus {
+        border-color: #fb7649;
+        outline: none;
+        -webkit-box-shadow: 0 0 0 5px rgba(250,84,28,.2);
+        box-shadow: 0 0 0 5px rgba(250,84,28,.2)
+    }
+
+    .ant-slider-handle.ant-tooltip-open {
+        border-color: #fa541c
+    }
+
+.ant-slider:hover .ant-slider-rail {
+    background-color: #e1e1e1
+}
+
+.ant-slider:hover .ant-slider-track {
+    background-color: #ff9c6e
+}
+
+.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) {
+    border-color: #ff9c6e
+}
+
+.ant-slider-mark {
+    position: absolute;
+    top: 14px;
+    left: 0;
+    width: 100%;
+    font-size: 14px
+}
+
+.ant-slider-mark-text {
+    position: absolute;
+    display: inline-block;
+    color: rgba(0,0,0,.45);
+    text-align: center;
+    word-break: keep-all;
+    cursor: pointer
+}
+
+.ant-slider-mark-text-active {
+    color: rgba(0,0,0,.65)
+}
+
+.ant-slider-step {
+    position: absolute;
+    width: 100%;
+    height: 4px;
+    background: transparent
+}
+
+.ant-slider-dot {
+    position: absolute;
+    top: -2px;
+    width: 8px;
+    height: 8px;
+    background-color: #fff;
+    border: 2px solid #e8e8e8;
+    border-radius: 50%;
+    cursor: pointer
+}
+
+    .ant-slider-dot, .ant-slider-dot:first-child, .ant-slider-dot:last-child {
+        margin-left: -4px
+    }
+
+.ant-slider-dot-active {
+    border-color: #fdaa8e
+}
+
+.ant-slider-disabled {
+    cursor: not-allowed
+}
+
+    .ant-slider-disabled .ant-slider-track {
+        background-color: rgba(0,0,0,.25) !important
+    }
+
+    .ant-slider-disabled .ant-slider-dot, .ant-slider-disabled .ant-slider-handle {
+        background-color: #fff;
+        border-color: rgba(0,0,0,.25) !important;
+        -webkit-box-shadow: none;
+        box-shadow: none;
+        cursor: not-allowed
+    }
+
+    .ant-slider-disabled .ant-slider-dot, .ant-slider-disabled .ant-slider-mark-text {
+        cursor: not-allowed !important
+    }
+
+.ant-space {
+    display: -webkit-inline-box;
+    display: -ms-inline-flexbox;
+    display: inline-flex
+}
+
+.ant-space-vertical {
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column
+}
+
+.ant-space-align-center {
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center
+}
+
+.ant-space-align-start {
+    -webkit-box-align: start;
+    -ms-flex-align: start;
+    align-items: flex-start
+}
+
+.ant-space-align-end {
+    -webkit-box-align: end;
+    -ms-flex-align: end;
+    align-items: flex-end
+}
+
+.ant-space-align-baseline {
+    -webkit-box-align: baseline;
+    -ms-flex-align: baseline;
+    align-items: baseline
+}
+
+.ant-spin {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: absolute;
+    display: none;
+    color: #fa541c;
+    text-align: center;
+    vertical-align: middle;
+    opacity: 0;
+    -webkit-transition: -webkit-transform .3s cubic-bezier(.78,.14,.15,.86);
+    transition: -webkit-transform .3s cubic-bezier(.78,.14,.15,.86);
+    transition: transform .3s cubic-bezier(.78,.14,.15,.86);
+    transition: transform .3s cubic-bezier(.78,.14,.15,.86),-webkit-transform .3s cubic-bezier(.78,.14,.15,.86)
+}
+
+.ant-spin-spinning {
+    position: static;
+    display: inline-block;
+    opacity: 1
+}
+
+.ant-spin-nested-loading {
+    position: relative
+}
+
+    .ant-spin-nested-loading > div > .ant-spin {
+        position: absolute;
+        top: 0;
+        left: 0;
+        z-index: 4;
+        display: block;
+        width: 100%;
+        height: 100%;
+        max-height: 400px
+    }
+
+        .ant-spin-nested-loading > div > .ant-spin .ant-spin-dot {
+            position: absolute;
+            top: 50%;
+            left: 50%;
+            margin: -10px
+        }
+
+        .ant-spin-nested-loading > div > .ant-spin .ant-spin-text {
+            position: absolute;
+            top: 50%;
+            width: 100%;
+            padding-top: 5px;
+            text-shadow: 0 1px 2px #fff
+        }
+
+        .ant-spin-nested-loading > div > .ant-spin.ant-spin-show-text .ant-spin-dot {
+            margin-top: -20px
+        }
+
+    .ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-dot {
+        margin: -7px
+    }
+
+    .ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-text {
+        padding-top: 2px
+    }
+
+    .ant-spin-nested-loading > div > .ant-spin-sm.ant-spin-show-text .ant-spin-dot {
+        margin-top: -17px
+    }
+
+    .ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-dot {
+        margin: -16px
+    }
+
+    .ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-text {
+        padding-top: 11px
+    }
+
+    .ant-spin-nested-loading > div > .ant-spin-lg.ant-spin-show-text .ant-spin-dot {
+        margin-top: -26px
+    }
+
+.ant-spin-container {
+    position: relative;
+    -webkit-transition: opacity .3s;
+    transition: opacity .3s
+}
+
+    .ant-spin-container:after {
+        position: absolute;
+        top: 0;
+        right: 0;
+        bottom: 0;
+        left: 0;
+        z-index: 10;
+        display: none\9;
+        width: 100%;
+        height: 100%;
+        background: #fff;
+        opacity: 0;
+        -webkit-transition: all .3s;
+        transition: all .3s;
+        content: "";
+        pointer-events: none
+    }
+
+.ant-spin-blur {
+    clear: both;
+    overflow: hidden;
+    opacity: .5;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    pointer-events: none
+}
+
+    .ant-spin-blur:after {
+        opacity: .4;
+        pointer-events: auto
+    }
+
+.ant-spin-tip {
+    color: rgba(0,0,0,.45)
+}
+
+.ant-spin-dot {
+    position: relative;
+    display: inline-block;
+    font-size: 20px;
+    width: 1em;
+    height: 1em
+}
+
+.ant-spin-dot-item {
+    position: absolute;
+    display: block;
+    width: 9px;
+    height: 9px;
+    background-color: #fa541c;
+    border-radius: 100%;
+    -webkit-transform: scale(.75);
+    transform: scale(.75);
+    -webkit-transform-origin: 50% 50%;
+    transform-origin: 50% 50%;
+    opacity: .3;
+    -webkit-animation: antSpinMove 1s linear infinite alternate;
+    animation: antSpinMove 1s linear infinite alternate
+}
+
+    .ant-spin-dot-item:first-child {
+        top: 0;
+        left: 0
+    }
+
+    .ant-spin-dot-item:nth-child(2) {
+        top: 0;
+        right: 0;
+        -webkit-animation-delay: .4s;
+        animation-delay: .4s
+    }
+
+    .ant-spin-dot-item:nth-child(3) {
+        right: 0;
+        bottom: 0;
+        -webkit-animation-delay: .8s;
+        animation-delay: .8s
+    }
+
+    .ant-spin-dot-item:nth-child(4) {
+        bottom: 0;
+        left: 0;
+        -webkit-animation-delay: 1.2s;
+        animation-delay: 1.2s
+    }
+
+.ant-spin-dot-spin {
+    -webkit-transform: rotate(45deg);
+    transform: rotate(45deg);
+    -webkit-animation: antRotate 1.2s linear infinite;
+    animation: antRotate 1.2s linear infinite
+}
+
+.ant-spin-sm .ant-spin-dot {
+    font-size: 14px
+}
+
+    .ant-spin-sm .ant-spin-dot i {
+        width: 6px;
+        height: 6px
+    }
+
+.ant-spin-lg .ant-spin-dot {
+    font-size: 32px
+}
+
+    .ant-spin-lg .ant-spin-dot i {
+        width: 14px;
+        height: 14px
+    }
+
+.ant-spin.ant-spin-show-text .ant-spin-text {
+    display: block
+}
+
+@media (-ms-high-contrast:active),(-ms-high-contrast:none) {
+    .ant-spin-blur {
+        background: #fff;
+        opacity: .5
+    }
+}
+
+@-webkit-keyframes antSpinMove {
+    to {
+        opacity: 1
+    }
+}
+
+@keyframes antSpinMove {
+    to {
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes antRotate {
+    to {
+        -webkit-transform: rotate(405deg);
+        transform: rotate(405deg)
+    }
+}
+
+@keyframes antRotate {
+    to {
+        -webkit-transform: rotate(405deg);
+        transform: rotate(405deg)
+    }
+}
+
+.ant-statistic {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+.ant-statistic-title {
+    margin-bottom: 4px;
+    color: rgba(0,0,0,.45);
+    font-size: 14px
+}
+
+.ant-statistic-content {
+    color: rgba(0,0,0,.85);
+    font-size: 24px;
+    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol
+}
+
+.ant-statistic-content-value-decimal {
+    font-size: 16px
+}
+
+.ant-statistic-content-prefix, .ant-statistic-content-suffix {
+    display: inline-block
+}
+
+.ant-statistic-content-prefix {
+    margin-right: 4px
+}
+
+.ant-statistic-content-suffix {
+    margin-left: 4px;
+    font-size: 16px
+}
+
+.ant-steps {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    width: 100%;
+    font-size: 0
+}
+
+.ant-steps-item {
+    position: relative;
+    display: inline-block;
+    -webkit-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+    overflow: hidden;
+    vertical-align: top
+}
+
+.ant-steps-item-container {
+    outline: none
+}
+
+.ant-steps-item:last-child {
+    -webkit-box-flex: 0;
+    -ms-flex: none;
+    flex: none
+}
+
+    .ant-steps-item:last-child > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after, .ant-steps-item:last-child > .ant-steps-item-container > .ant-steps-item-tail {
+        display: none
+    }
+
+.ant-steps-item-content, .ant-steps-item-icon {
+    display: inline-block;
+    vertical-align: top
+}
+
+.ant-steps-item-icon {
+    width: 32px;
+    height: 32px;
+    margin-right: 8px;
+    font-size: 16px;
+    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+    line-height: 32px;
+    text-align: center;
+    border: 1px solid rgba(0,0,0,.25);
+    border-radius: 32px;
+    -webkit-transition: background-color .3s,border-color .3s;
+    transition: background-color .3s,border-color .3s
+}
+
+    .ant-steps-item-icon > .ant-steps-icon {
+        position: relative;
+        top: -1px;
+        color: #fa541c;
+        line-height: 1
+    }
+
+.ant-steps-item-tail {
+    position: absolute;
+    top: 12px;
+    left: 0;
+    width: 100%;
+    padding: 0 10px
+}
+
+    .ant-steps-item-tail:after {
+        display: inline-block;
+        width: 100%;
+        height: 1px;
+        background: #e8e8e8;
+        border-radius: 1px;
+        -webkit-transition: background .3s;
+        transition: background .3s;
+        content: ""
+    }
+
+.ant-steps-item-title {
+    position: relative;
+    display: inline-block;
+    padding-right: 16px;
+    color: rgba(0,0,0,.65);
+    font-size: 16px;
+    line-height: 32px
+}
+
+    .ant-steps-item-title:after {
+        position: absolute;
+        top: 16px;
+        left: 100%;
+        display: block;
+        width: 9999px;
+        height: 1px;
+        background: #e8e8e8;
+        content: ""
+    }
+
+.ant-steps-item-subtitle {
+    display: inline;
+    margin-left: 8px;
+    font-weight: 400
+}
+
+.ant-steps-item-description, .ant-steps-item-subtitle {
+    color: rgba(0,0,0,.45);
+    font-size: 14px
+}
+
+.ant-steps-item-wait .ant-steps-item-icon {
+    background-color: #fff;
+    border-color: rgba(0,0,0,.25)
+}
+
+    .ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon {
+        color: rgba(0,0,0,.25)
+    }
+
+        .ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+            background: rgba(0,0,0,.25)
+        }
+
+.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {
+    color: rgba(0,0,0,.45)
+}
+
+    .ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after {
+        background-color: #e8e8e8
+    }
+
+.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {
+    color: rgba(0,0,0,.45)
+}
+
+.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-tail:after {
+    background-color: #e8e8e8
+}
+
+.ant-steps-item-process .ant-steps-item-icon {
+    background-color: #fff;
+    border-color: #fa541c
+}
+
+    .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
+        color: #fa541c
+    }
+
+        .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+            background: #fa541c
+        }
+
+.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {
+    color: rgba(0,0,0,.85)
+}
+
+    .ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after {
+        background-color: #e8e8e8
+    }
+
+.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {
+    color: rgba(0,0,0,.65)
+}
+
+.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-tail:after {
+    background-color: #e8e8e8
+}
+
+.ant-steps-item-process .ant-steps-item-icon {
+    background: #fa541c
+}
+
+    .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
+        color: #fff
+    }
+
+.ant-steps-item-process .ant-steps-item-title {
+    font-weight: 500
+}
+
+.ant-steps-item-finish .ant-steps-item-icon {
+    background-color: #fff;
+    border-color: #fa541c
+}
+
+    .ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon {
+        color: #fa541c
+    }
+
+        .ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+            background: #fa541c
+        }
+
+.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {
+    color: rgba(0,0,0,.65)
+}
+
+    .ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after {
+        background-color: #fa541c
+    }
+
+.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {
+    color: rgba(0,0,0,.45)
+}
+
+.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail:after {
+    background-color: #fa541c
+}
+
+.ant-steps-item-error .ant-steps-item-icon {
+    background-color: #fff;
+    border-color: #f5222d
+}
+
+    .ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon {
+        color: #f5222d
+    }
+
+        .ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+            background: #f5222d
+        }
+
+.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {
+    color: #f5222d
+}
+
+    .ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after {
+        background-color: #e8e8e8
+    }
+
+.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {
+    color: #f5222d
+}
+
+.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-tail:after {
+    background-color: #e8e8e8
+}
+
+.ant-steps-item.ant-steps-next-error .ant-steps-item-title:after {
+    background: #f5222d
+}
+
+.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button] {
+    cursor: pointer
+}
+
+    .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button] .ant-steps-item-description, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button] .ant-steps-item-icon .ant-steps-icon, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button] .ant-steps-item-title {
+        -webkit-transition: color .3s;
+        transition: color .3s
+    }
+
+    .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-description, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-subtitle, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-title {
+        color: #fa541c
+    }
+
+.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role=button]:hover .ant-steps-item-icon {
+    border-color: #fa541c
+}
+
+    .ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role=button]:hover .ant-steps-item-icon .ant-steps-icon {
+        color: #fa541c
+    }
+
+.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item {
+    margin-right: 16px;
+    white-space: nowrap
+}
+
+    .ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child {
+        margin-right: 0
+    }
+
+        .ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title {
+            padding-right: 0
+        }
+
+.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-tail {
+    display: none
+}
+
+.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-description {
+    max-width: 140px;
+    white-space: normal
+}
+
+.ant-steps-item-custom .ant-steps-item-icon {
+    height: auto;
+    background: none;
+    border: 0
+}
+
+    .ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon {
+        top: 0;
+        left: .5px;
+        width: 32px;
+        height: 32px;
+        font-size: 24px;
+        line-height: 32px
+    }
+
+.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
+    color: #fa541c
+}
+
+.ant-steps:not(.ant-steps-vertical) .ant-steps-item-custom .ant-steps-item-icon {
+    width: auto
+}
+
+.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item {
+    margin-right: 12px
+}
+
+    .ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child {
+        margin-right: 0
+    }
+
+.ant-steps-small .ant-steps-item-icon {
+    width: 24px;
+    height: 24px;
+    font-size: 12px;
+    line-height: 24px;
+    text-align: center;
+    border-radius: 24px
+}
+
+.ant-steps-small .ant-steps-item-title {
+    padding-right: 12px;
+    font-size: 14px;
+    line-height: 24px
+}
+
+    .ant-steps-small .ant-steps-item-title:after {
+        top: 12px
+    }
+
+.ant-steps-small .ant-steps-item-description {
+    color: rgba(0,0,0,.45);
+    font-size: 14px
+}
+
+.ant-steps-small .ant-steps-item-tail {
+    top: 8px
+}
+
+.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon {
+    width: inherit;
+    height: inherit;
+    line-height: inherit;
+    background: none;
+    border: 0;
+    border-radius: 0
+}
+
+    .ant-steps-small .ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon {
+        font-size: 24px;
+        line-height: 24px;
+        -webkit-transform: none;
+        transform: none
+    }
+
+.ant-steps-vertical {
+    display: block
+}
+
+    .ant-steps-vertical .ant-steps-item {
+        display: block;
+        overflow: visible
+    }
+
+    .ant-steps-vertical .ant-steps-item-icon {
+        float: left;
+        margin-right: 16px
+    }
+
+    .ant-steps-vertical .ant-steps-item-content {
+        display: block;
+        min-height: 48px;
+        overflow: hidden
+    }
+
+    .ant-steps-vertical .ant-steps-item-title {
+        line-height: 32px
+    }
+
+    .ant-steps-vertical .ant-steps-item-description {
+        padding-bottom: 12px
+    }
+
+    .ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail {
+        position: absolute;
+        top: 0;
+        left: 16px;
+        width: 1px;
+        height: 100%;
+        padding: 38px 0 6px
+    }
+
+        .ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail:after {
+            width: 1px;
+            height: 100%
+        }
+
+    .ant-steps-vertical > .ant-steps-item:not(:last-child) > .ant-steps-item-container > .ant-steps-item-tail {
+        display: block
+    }
+
+    .ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after {
+        display: none
+    }
+
+    .ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-tail {
+        position: absolute;
+        top: 0;
+        left: 12px;
+        padding: 30px 0 6px
+    }
+
+    .ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-title {
+        line-height: 24px
+    }
+
+@media (max-width:480px) {
+    .ant-steps-horizontal.ant-steps-label-horizontal {
+        display: block
+    }
+
+        .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item {
+            display: block;
+            overflow: visible
+        }
+
+        .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-icon {
+            float: left;
+            margin-right: 16px
+        }
+
+        .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-content {
+            display: block;
+            min-height: 48px;
+            overflow: hidden
+        }
+
+        .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-title {
+            line-height: 32px
+        }
+
+        .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-description {
+            padding-bottom: 12px
+        }
+
+        .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail {
+            position: absolute;
+            top: 0;
+            left: 16px;
+            width: 1px;
+            height: 100%;
+            padding: 38px 0 6px
+        }
+
+            .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail:after {
+                width: 1px;
+                height: 100%
+            }
+
+        .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item:not(:last-child) > .ant-steps-item-container > .ant-steps-item-tail {
+            display: block
+        }
+
+        .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after {
+            display: none
+        }
+
+        .ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item-container .ant-steps-item-tail {
+            position: absolute;
+            top: 0;
+            left: 12px;
+            padding: 30px 0 6px
+        }
+
+        .ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item-container .ant-steps-item-title {
+            line-height: 24px
+        }
+}
+
+.ant-steps-label-vertical .ant-steps-item {
+    overflow: visible
+}
+
+.ant-steps-label-vertical .ant-steps-item-tail {
+    margin-left: 58px;
+    padding: 3.5px 24px
+}
+
+.ant-steps-label-vertical .ant-steps-item-content {
+    display: block;
+    width: 116px;
+    margin-top: 8px;
+    text-align: center
+}
+
+.ant-steps-label-vertical .ant-steps-item-icon {
+    display: inline-block;
+    margin-left: 42px
+}
+
+.ant-steps-label-vertical .ant-steps-item-title {
+    padding-right: 0
+}
+
+    .ant-steps-label-vertical .ant-steps-item-title:after {
+        display: none
+    }
+
+.ant-steps-label-vertical .ant-steps-item-subtitle {
+    display: block;
+    margin-bottom: 4px;
+    margin-left: 0;
+    line-height: 1.5
+}
+
+.ant-steps-label-vertical.ant-steps-small:not(.ant-steps-dot) .ant-steps-item-icon {
+    margin-left: 46px
+}
+
+.ant-steps-dot .ant-steps-item-title, .ant-steps-dot.ant-steps-small .ant-steps-item-title {
+    line-height: 1.5
+}
+
+.ant-steps-dot .ant-steps-item-tail, .ant-steps-dot.ant-steps-small .ant-steps-item-tail {
+    top: 2px;
+    width: 100%;
+    margin: 0 0 0 70px;
+    padding: 0
+}
+
+    .ant-steps-dot .ant-steps-item-tail:after, .ant-steps-dot.ant-steps-small .ant-steps-item-tail:after {
+        width: calc(100% - 20px);
+        height: 3px;
+        margin-left: 12px
+    }
+
+.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot, .ant-steps-dot.ant-steps-small .ant-steps-item:first-child .ant-steps-icon-dot {
+    left: 2px
+}
+
+.ant-steps-dot .ant-steps-item-icon, .ant-steps-dot.ant-steps-small .ant-steps-item-icon {
+    width: 8px;
+    height: 8px;
+    margin-left: 67px;
+    padding-right: 0;
+    line-height: 8px;
+    background: transparent;
+    border: 0
+}
+
+    .ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot, .ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot {
+        position: relative;
+        float: left;
+        width: 100%;
+        height: 100%;
+        border-radius: 100px;
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+        .ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot:after, .ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot:after {
+            position: absolute;
+            top: -12px;
+            left: -26px;
+            width: 60px;
+            height: 32px;
+            background: rgba(0,0,0,.001);
+            content: ""
+        }
+
+.ant-steps-dot .ant-steps-item-content, .ant-steps-dot.ant-steps-small .ant-steps-item-content {
+    width: 140px
+}
+
+.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon, .ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-item-icon {
+    width: 10px;
+    height: 10px;
+    line-height: 10px
+}
+
+    .ant-steps-dot .ant-steps-item-process .ant-steps-item-icon .ant-steps-icon-dot, .ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-item-icon .ant-steps-icon-dot {
+        top: -1px
+    }
+
+.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon {
+    margin-top: 8px;
+    margin-left: 0
+}
+
+.ant-steps-vertical.ant-steps-dot .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail {
+    top: 2px;
+    left: -9px;
+    margin: 0;
+    padding: 22px 0 4px
+}
+
+.ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot {
+    left: 0
+}
+
+.ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-icon-dot {
+    left: -2px
+}
+
+.ant-steps-navigation {
+    padding-top: 12px
+}
+
+    .ant-steps-navigation.ant-steps-small .ant-steps-item-container {
+        margin-left: -12px
+    }
+
+    .ant-steps-navigation .ant-steps-item {
+        overflow: visible;
+        text-align: center
+    }
+
+    .ant-steps-navigation .ant-steps-item-container {
+        display: inline-block;
+        height: 100%;
+        margin-left: -16px;
+        padding-bottom: 12px;
+        text-align: left;
+        -webkit-transition: opacity .3s;
+        transition: opacity .3s
+    }
+
+        .ant-steps-navigation .ant-steps-item-container .ant-steps-item-content {
+            max-width: auto
+        }
+
+        .ant-steps-navigation .ant-steps-item-container .ant-steps-item-title {
+            max-width: 100%;
+            padding-right: 0;
+            overflow: hidden;
+            white-space: nowrap;
+            text-overflow: ellipsis
+        }
+
+            .ant-steps-navigation .ant-steps-item-container .ant-steps-item-title:after {
+                display: none
+            }
+
+    .ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role=button] {
+        cursor: pointer
+    }
+
+        .ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role=button]:hover {
+            opacity: .85
+        }
+
+    .ant-steps-navigation .ant-steps-item:last-child {
+        -webkit-box-flex: 1;
+        -ms-flex: 1;
+        flex: 1
+    }
+
+        .ant-steps-navigation .ant-steps-item:last-child:after {
+            display: none
+        }
+
+    .ant-steps-navigation .ant-steps-item:after {
+        position: absolute;
+        top: 50%;
+        left: 100%;
+        display: inline-block;
+        width: 12px;
+        height: 12px;
+        margin-top: -14px;
+        margin-left: -2px;
+        border: 1px solid rgba(0,0,0,.25);
+        border-bottom: none;
+        border-left: none;
+        -webkit-transform: rotate(45deg);
+        transform: rotate(45deg);
+        content: ""
+    }
+
+    .ant-steps-navigation .ant-steps-item:before {
+        position: absolute;
+        bottom: 0;
+        left: 50%;
+        display: inline-block;
+        width: 0;
+        height: 3px;
+        background-color: #fa541c;
+        -webkit-transition: width .3s,left .3s;
+        transition: width .3s,left .3s;
+        -webkit-transition-timing-function: ease-out;
+        transition-timing-function: ease-out;
+        content: ""
+    }
+
+    .ant-steps-navigation .ant-steps-item.ant-steps-item-active:before {
+        left: 0;
+        width: 100%
+    }
+
+@media (max-width:480px) {
+    .ant-steps-navigation > .ant-steps-item {
+        margin-right: 0 !important
+    }
+
+        .ant-steps-navigation > .ant-steps-item:before {
+            display: none
+        }
+
+        .ant-steps-navigation > .ant-steps-item.ant-steps-item-active:before {
+            top: 0;
+            right: 0;
+            left: unset;
+            display: block;
+            width: 3px;
+            height: calc(100% - 24px)
+        }
+
+        .ant-steps-navigation > .ant-steps-item:after {
+            position: relative;
+            top: -2px;
+            left: 50%;
+            display: block;
+            width: 8px;
+            height: 8px;
+            margin-bottom: 8px;
+            text-align: center;
+            -webkit-transform: rotate(135deg);
+            transform: rotate(135deg)
+        }
+
+        .ant-steps-navigation > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail {
+            visibility: hidden
+        }
+}
+
+.ant-steps-flex-not-supported.ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item {
+    margin-left: -16px;
+    padding-left: 16px;
+    background: #fff
+}
+
+.ant-steps-flex-not-supported.ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item {
+    margin-left: -12px;
+    padding-left: 12px
+}
+
+.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item:last-child {
+    overflow: hidden
+}
+
+    .ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item:last-child .ant-steps-icon-dot:after {
+        right: -200px;
+        width: 200px
+    }
+
+.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item .ant-steps-icon-dot:after, .ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item .ant-steps-icon-dot:before {
+    position: absolute;
+    top: 0;
+    left: -10px;
+    width: 10px;
+    height: 8px;
+    background: #fff;
+    content: ""
+}
+
+.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item .ant-steps-icon-dot:after {
+    right: -10px;
+    left: auto
+}
+
+.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+    background: #ccc
+}
+
+.ant-switch {
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    display: inline-block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    min-width: 44px;
+    height: 22px;
+    line-height: 20px;
+    vertical-align: middle;
+    background-color: rgba(0,0,0,.25);
+    border: 1px solid transparent;
+    border-radius: 100px;
+    cursor: pointer;
+    -webkit-transition: all .36s;
+    transition: all .36s;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+.ant-switch-inner {
+    display: block;
+    margin-right: 6px;
+    margin-left: 24px;
+    color: #fff;
+    font-size: 12px
+}
+
+.ant-switch-loading-icon, .ant-switch:after {
+    position: absolute;
+    top: 1px;
+    left: 1px;
+    width: 18px;
+    height: 18px;
+    background-color: #fff;
+    border-radius: 18px;
+    cursor: pointer;
+    -webkit-transition: all .36s cubic-bezier(.78,.14,.15,.86);
+    transition: all .36s cubic-bezier(.78,.14,.15,.86);
+    content: " "
+}
+
+.ant-switch:after {
+    -webkit-box-shadow: 0 2px 4px 0 rgba(0,35,11,.2);
+    box-shadow: 0 2px 4px 0 rgba(0,35,11,.2)
+}
+
+.ant-switch:not(.ant-switch-disabled):active:after, .ant-switch:not(.ant-switch-disabled):active:before {
+    width: 24px
+}
+
+.ant-switch-loading-icon {
+    z-index: 1;
+    display: none;
+    font-size: 12px;
+    background: transparent
+}
+
+    .ant-switch-loading-icon svg {
+        position: absolute;
+        top: 0;
+        right: 0;
+        bottom: 0;
+        left: 0;
+        margin: auto
+    }
+
+.ant-switch-loading .ant-switch-loading-icon {
+    display: inline-block;
+    color: rgba(0,0,0,.65)
+}
+
+.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon {
+    color: #fa541c
+}
+
+.ant-switch:focus {
+    outline: 0;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+    .ant-switch:focus:hover {
+        -webkit-box-shadow: none;
+        box-shadow: none
+    }
+
+.ant-switch-small {
+    min-width: 28px;
+    height: 16px;
+    line-height: 14px
+}
+
+    .ant-switch-small .ant-switch-inner {
+        margin-right: 3px;
+        margin-left: 18px;
+        font-size: 12px
+    }
+
+    .ant-switch-small:after {
+        width: 12px;
+        height: 12px
+    }
+
+    .ant-switch-small:active:after, .ant-switch-small:active:before {
+        width: 16px
+    }
+
+    .ant-switch-small .ant-switch-loading-icon {
+        width: 12px;
+        height: 12px
+    }
+
+    .ant-switch-small.ant-switch-checked .ant-switch-inner {
+        margin-right: 18px;
+        margin-left: 3px
+    }
+
+    .ant-switch-small.ant-switch-checked .ant-switch-loading-icon {
+        left: 100%;
+        margin-left: -13px
+    }
+
+    .ant-switch-small.ant-switch-loading .ant-switch-loading-icon {
+        font-weight: 700;
+        -webkit-transform: scale(.66667);
+        transform: scale(.66667)
+    }
+
+.ant-switch-checked {
+    background-color: #fa541c
+}
+
+    .ant-switch-checked .ant-switch-inner {
+        margin-right: 24px;
+        margin-left: 6px
+    }
+
+    .ant-switch-checked:after {
+        left: 100%;
+        margin-left: -1px;
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%)
+    }
+
+    .ant-switch-checked .ant-switch-loading-icon {
+        left: 100%;
+        margin-left: -19px
+    }
+
+.ant-switch-disabled, .ant-switch-loading {
+    cursor: not-allowed;
+    opacity: .4
+}
+
+    .ant-switch-disabled *, .ant-switch-disabled:after, .ant-switch-disabled:before, .ant-switch-loading *, .ant-switch-loading:after, .ant-switch-loading:before {
+        cursor: not-allowed
+    }
+
+@-webkit-keyframes AntSwitchSmallLoadingCircle {
+    0% {
+        -webkit-transform: rotate(0deg) scale(.66667);
+        transform: rotate(0deg) scale(.66667);
+        -webkit-transform-origin: 50% 50%;
+        transform-origin: 50% 50%
+    }
+
+    to {
+        -webkit-transform: rotate(1turn) scale(.66667);
+        transform: rotate(1turn) scale(.66667);
+        -webkit-transform-origin: 50% 50%;
+        transform-origin: 50% 50%
+    }
+}
+
+@keyframes AntSwitchSmallLoadingCircle {
+    0% {
+        -webkit-transform: rotate(0deg) scale(.66667);
+        transform: rotate(0deg) scale(.66667);
+        -webkit-transform-origin: 50% 50%;
+        transform-origin: 50% 50%
+    }
+
+    to {
+        -webkit-transform: rotate(1turn) scale(.66667);
+        transform: rotate(1turn) scale(.66667);
+        -webkit-transform-origin: 50% 50%;
+        transform-origin: 50% 50%
+    }
+}
+
+.ant-table-wrapper {
+    zoom: 1
+}
+
+    .ant-table-wrapper:after, .ant-table-wrapper:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-table-wrapper:after {
+        clear: both
+    }
+
+.ant-table {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    clear: both
+}
+
+.ant-table-body {
+    -webkit-transition: opacity .3s;
+    transition: opacity .3s
+}
+
+.ant-table-empty .ant-table-body {
+    overflow-x: auto !important;
+    overflow-y: hidden !important
+}
+
+.ant-table table {
+    width: 100%;
+    text-align: left;
+    border-radius: 2px 2px 0 0;
+    border-collapse: separate;
+    border-spacing: 0
+}
+
+.ant-table-layout-fixed table {
+    table-layout: fixed
+}
+
+.ant-table-thead > tr > th {
+    color: rgba(0,0,0,.85);
+    font-weight: 500;
+    text-align: left;
+    background: #fafafa;
+    border-bottom: 1px solid #e8e8e8;
+    -webkit-transition: background .3s ease;
+    transition: background .3s ease
+}
+
+    .ant-table-thead > tr > th[colspan]:not([colspan="1"]) {
+        text-align: center
+    }
+
+    .ant-table-thead > tr > th .ant-table-filter-icon, .ant-table-thead > tr > th .anticon-filter {
+        position: absolute;
+        top: 0;
+        right: 0;
+        width: 28px;
+        height: 100%;
+        color: #bfbfbf;
+        font-size: 12px;
+        text-align: center;
+        cursor: pointer;
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+        .ant-table-thead > tr > th .ant-table-filter-icon > svg, .ant-table-thead > tr > th .anticon-filter > svg {
+            position: absolute;
+            top: 50%;
+            left: 50%;
+            margin-top: -5px;
+            margin-left: -6px
+        }
+
+    .ant-table-thead > tr > th .ant-table-filter-selected.anticon {
+        color: #fa541c
+    }
+
+    .ant-table-thead > tr > th .ant-table-column-sorter {
+        display: table-cell;
+        vertical-align: middle
+    }
+
+        .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner {
+            height: 1em;
+            margin-top: .35em;
+            margin-left: .57142857em;
+            color: #bfbfbf;
+            line-height: 1em;
+            text-align: center;
+            -webkit-transition: all .3s;
+            transition: all .3s
+        }
+
+            .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down, .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up {
+                display: inline-block;
+                font-size: 12px;
+                font-size: 11px\9;
+                -webkit-transform: scale(.91666667) rotate(0deg);
+                transform: scale(.91666667) rotate(0deg);
+                display: block;
+                height: 1em;
+                line-height: 1em;
+                -webkit-transition: all .3s;
+                transition: all .3s
+            }
+
+:root .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down, :root .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up {
+    font-size: 12px
+}
+
+.ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on, .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on {
+    color: #fa541c
+}
+
+.ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner-full {
+    margin-top: -.15em
+}
+
+    .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner-full .ant-table-column-sorter-down, .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner-full .ant-table-column-sorter-up {
+        height: .5em;
+        line-height: .5em
+    }
+
+    .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner-full .ant-table-column-sorter-down {
+        margin-top: .125em
+    }
+
+.ant-table-thead > tr > th.ant-table-column-has-actions {
+    position: relative;
+    background-clip: padding-box;
+    -webkit-background-clip: border-box
+}
+
+    .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters {
+        padding-right: 30px !important
+    }
+
+        .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters .ant-table-filter-icon.ant-table-filter-open, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters .anticon-filter.ant-table-filter-open, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .ant-table-filter-icon:hover, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .anticon-filter:hover {
+            color: rgba(0,0,0,.45);
+            background: #e5e5e5
+        }
+
+        .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .ant-table-filter-icon:active, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .anticon-filter:active {
+            color: rgba(0,0,0,.65)
+        }
+
+    .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters {
+        cursor: pointer
+    }
+
+        .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover .ant-table-filter-icon, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover .anticon-filter {
+            background: #f2f2f2
+        }
+
+        .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:active .ant-table-column-sorter-down:not(.on), .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:active .ant-table-column-sorter-up:not(.on) {
+            color: rgba(0,0,0,.45)
+        }
+
+.ant-table-thead > tr > th .ant-table-header-column {
+    display: inline-block;
+    max-width: 100%;
+    vertical-align: top
+}
+
+    .ant-table-thead > tr > th .ant-table-header-column .ant-table-column-sorters {
+        display: table
+    }
+
+        .ant-table-thead > tr > th .ant-table-header-column .ant-table-column-sorters > .ant-table-column-title {
+            display: table-cell;
+            vertical-align: middle
+        }
+
+        .ant-table-thead > tr > th .ant-table-header-column .ant-table-column-sorters > :not(.ant-table-column-sorter) {
+            position: relative
+        }
+
+        .ant-table-thead > tr > th .ant-table-header-column .ant-table-column-sorters:before {
+            position: absolute;
+            top: 0;
+            right: 0;
+            bottom: 0;
+            left: 0;
+            background: transparent;
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-table-thead > tr > th .ant-table-header-column .ant-table-column-sorters:hover:before {
+            background: rgba(0,0,0,.04)
+        }
+
+.ant-table-thead > tr > th.ant-table-column-has-sorters {
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+.ant-table-thead > tr:first-child > th:first-child {
+    border-top-left-radius: 2px
+}
+
+.ant-table-thead > tr:first-child > th:last-child {
+    border-top-right-radius: 2px
+}
+
+.ant-table-thead > tr:not(:last-child) > th[colspan] {
+    border-bottom: 0
+}
+
+.ant-table-tbody > tr > td {
+    border-bottom: 1px solid #e8e8e8;
+    -webkit-transition: background .3s;
+    transition: background .3s
+}
+
+.ant-table-tbody > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-thead > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-thead > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {
+    background: #fff2e8
+}
+
+.ant-table-tbody > tr.ant-table-row-selected > td.ant-table-column-sort, .ant-table-tbody > tr:hover.ant-table-row-selected > td, .ant-table-tbody > tr:hover.ant-table-row-selected > td.ant-table-column-sort, .ant-table-thead > tr.ant-table-row-selected > td.ant-table-column-sort, .ant-table-thead > tr:hover.ant-table-row-selected > td, .ant-table-thead > tr:hover.ant-table-row-selected > td.ant-table-column-sort {
+    background: #fafafa
+}
+
+.ant-table-thead > tr:hover {
+    background: none
+}
+
+.ant-table-footer {
+    position: relative;
+    padding: 16px 16px;
+    color: rgba(0,0,0,.85);
+    background: #fafafa;
+    border-top: 1px solid #e8e8e8;
+    border-radius: 0 0 2px 2px
+}
+
+    .ant-table-footer:before {
+        position: absolute;
+        top: -1px;
+        left: 0;
+        width: 100%;
+        height: 1px;
+        background: #fafafa;
+        content: ""
+    }
+
+.ant-table.ant-table-bordered .ant-table-footer {
+    border: 1px solid #e8e8e8
+}
+
+.ant-table-title {
+    position: relative;
+    top: 1px;
+    padding: 16px 0;
+    border-radius: 2px 2px 0 0
+}
+
+.ant-table.ant-table-bordered .ant-table-title {
+    padding-right: 16px;
+    padding-left: 16px;
+    border: 1px solid #e8e8e8
+}
+
+.ant-table-title + .ant-table-content {
+    position: relative;
+    border-radius: 2px 2px 0 0
+}
+
+.ant-table-bordered .ant-table-title + .ant-table-content, .ant-table-bordered .ant-table-title + .ant-table-content .ant-table-thead > tr:first-child > th, .ant-table-bordered .ant-table-title + .ant-table-content table, .ant-table-without-column-header .ant-table-title + .ant-table-content, .ant-table-without-column-header table {
+    border-radius: 0
+}
+
+.ant-table-without-column-header.ant-table-bordered.ant-table-empty .ant-table-placeholder {
+    border-top: 1px solid #e8e8e8;
+    border-radius: 2px
+}
+
+.ant-table-tbody > tr.ant-table-row-selected td {
+    color: inherit;
+    background: #fafafa
+}
+
+.ant-table-thead > tr > th.ant-table-column-sort {
+    background: #f5f5f5
+}
+
+.ant-table-tbody > tr > td.ant-table-column-sort {
+    background: rgba(0,0,0,.01)
+}
+
+.ant-table-tbody > tr > td, .ant-table-thead > tr > th {
+    padding: 16px 16px;
+    overflow-wrap: break-word
+}
+
+.ant-table-expand-icon-th, .ant-table-row-expand-icon-cell {
+    width: 50px;
+    min-width: 50px;
+    text-align: center
+}
+
+.ant-table-header {
+    overflow: hidden;
+    background: #fafafa
+}
+
+    .ant-table-header table {
+        border-radius: 2px 2px 0 0
+    }
+
+.ant-table-loading {
+    position: relative
+}
+
+    .ant-table-loading .ant-table-body {
+        background: #fff;
+        opacity: .5
+    }
+
+    .ant-table-loading .ant-table-spin-holder {
+        position: absolute;
+        top: 50%;
+        left: 50%;
+        height: 20px;
+        margin-left: -30px;
+        line-height: 20px
+    }
+
+    .ant-table-loading .ant-table-with-pagination {
+        margin-top: -20px
+    }
+
+    .ant-table-loading .ant-table-without-pagination {
+        margin-top: 10px
+    }
+
+.ant-table-bordered .ant-table-body > table, .ant-table-bordered .ant-table-fixed-left table, .ant-table-bordered .ant-table-fixed-right table, .ant-table-bordered .ant-table-header > table {
+    border: 1px solid #e8e8e8;
+    border-right: 0;
+    border-bottom: 0
+}
+
+.ant-table-bordered.ant-table-empty .ant-table-placeholder {
+    border-right: 1px solid #e8e8e8;
+    border-left: 1px solid #e8e8e8
+}
+
+.ant-table-bordered.ant-table-fixed-header .ant-table-header > table {
+    border-bottom: 0
+}
+
+.ant-table-bordered.ant-table-fixed-header .ant-table-body > table {
+    border-top-left-radius: 0;
+    border-top-right-radius: 0
+}
+
+.ant-table-bordered.ant-table-fixed-header .ant-table-body-inner > table, .ant-table-bordered.ant-table-fixed-header .ant-table-header + .ant-table-body > table {
+    border-top: 0
+}
+
+.ant-table-bordered .ant-table-thead > tr:not(:last-child) > th {
+    border-bottom: 1px solid #e8e8e8
+}
+
+.ant-table-bordered .ant-table-tbody > tr > td, .ant-table-bordered .ant-table-thead > tr > th {
+    border-right: 1px solid #e8e8e8
+}
+
+.ant-table-placeholder {
+    position: relative;
+    z-index: 1;
+    margin-top: -1px;
+    padding: 16px 16px;
+    color: rgba(0,0,0,.25);
+    font-size: 14px;
+    text-align: center;
+    background: #fff;
+    border-top: 1px solid #e8e8e8;
+    border-bottom: 1px solid #e8e8e8;
+    border-radius: 0 0 2px 2px
+}
+
+.ant-table-pagination.ant-pagination {
+    float: right;
+    margin: 16px 0
+}
+
+.ant-table-filter-dropdown {
+    position: relative;
+    min-width: 96px;
+    margin-left: -8px;
+    background: #fff;
+    border-radius: 2px;
+    -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+    .ant-table-filter-dropdown .ant-dropdown-menu {
+        max-height: calc(100vh - 130px);
+        overflow-x: hidden;
+        border: 0;
+        border-radius: 2px 2px 0 0;
+        -webkit-box-shadow: none;
+        box-shadow: none
+    }
+
+    .ant-table-filter-dropdown .ant-dropdown-menu-item > label + span {
+        padding-right: 0
+    }
+
+    .ant-table-filter-dropdown .ant-dropdown-menu-sub {
+        border-radius: 2px;
+        -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+        box-shadow: 0 2px 8px rgba(0,0,0,.15)
+    }
+
+    .ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after {
+        color: #fa541c;
+        font-weight: 700;
+        text-shadow: 0 0 2px #ffd8bf
+    }
+
+    .ant-table-filter-dropdown .ant-dropdown-menu-item {
+        overflow: hidden
+    }
+
+    .ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-item:last-child, .ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-submenu:last-child .ant-dropdown-menu-submenu-title {
+        border-radius: 0
+    }
+
+.ant-table-filter-dropdown-btns {
+    padding: 7px 8px;
+    overflow: hidden;
+    border-top: 1px solid #e8e8e8
+}
+
+.ant-table-filter-dropdown-link {
+    color: #fa541c
+}
+
+    .ant-table-filter-dropdown-link:hover {
+        color: #ff7a45
+    }
+
+    .ant-table-filter-dropdown-link:active {
+        color: #d4380d
+    }
+
+    .ant-table-filter-dropdown-link.confirm {
+        float: left
+    }
+
+    .ant-table-filter-dropdown-link.clear {
+        float: right
+    }
+
+.ant-table-selection {
+    white-space: nowrap
+}
+
+.ant-table-selection-select-all-custom {
+    margin-right: 4px !important
+}
+
+.ant-table-selection .anticon-down {
+    color: #bfbfbf;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+.ant-table-selection-menu {
+    min-width: 96px;
+    margin-top: 5px;
+    margin-left: -30px;
+    background: #fff;
+    border-radius: 2px;
+    -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+    .ant-table-selection-menu .ant-action-down {
+        color: #bfbfbf
+    }
+
+.ant-table-selection-down {
+    display: inline-block;
+    padding: 0;
+    line-height: 1;
+    cursor: pointer
+}
+
+    .ant-table-selection-down:hover .anticon-down {
+        color: rgba(0,0,0,.6)
+    }
+
+.ant-table-row-expand-icon {
+    color: #fa541c;
+    text-decoration: none;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s;
+    display: inline-block;
+    width: 17px;
+    height: 17px;
+    color: inherit;
+    line-height: 13px;
+    text-align: center;
+    background: #fff;
+    border: 1px solid #e8e8e8;
+    border-radius: 2px;
+    outline: none;
+    -webkit-transition: all .3s;
+    transition: all .3s;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+    .ant-table-row-expand-icon:focus, .ant-table-row-expand-icon:hover {
+        color: #ff7a45
+    }
+
+    .ant-table-row-expand-icon:active {
+        color: #d4380d
+    }
+
+    .ant-table-row-expand-icon:active, .ant-table-row-expand-icon:focus, .ant-table-row-expand-icon:hover {
+        border-color: currentColor
+    }
+
+.ant-table-row-expanded:after {
+    content: "-"
+}
+
+.ant-table-row-collapsed:after {
+    content: "+"
+}
+
+.ant-table-row-spaced {
+    visibility: hidden
+}
+
+    .ant-table-row-spaced:after {
+        content: "."
+    }
+
+.ant-table-row-cell-ellipsis, .ant-table-row-cell-ellipsis .ant-table-column-title {
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis
+}
+
+    .ant-table-row-cell-ellipsis .ant-table-column-title {
+        display: block
+    }
+
+.ant-table-row-cell-break-word {
+    word-wrap: break-word;
+    word-break: break-word
+}
+
+tr.ant-table-expanded-row, tr.ant-table-expanded-row:hover {
+    background: #fbfbfb
+}
+
+    tr.ant-table-expanded-row td > .ant-table-wrapper {
+        margin: -16px -16px -17px
+    }
+
+.ant-table .ant-table-row-indent + .ant-table-row-expand-icon {
+    margin-right: 8px
+}
+
+.ant-table-scroll {
+    overflow: auto;
+    overflow-x: hidden
+}
+
+    .ant-table-scroll table {
+        min-width: 100%
+    }
+
+        .ant-table-scroll table .ant-table-fixed-columns-in-body:not([colspan]) {
+            color: transparent
+        }
+
+            .ant-table-scroll table .ant-table-fixed-columns-in-body:not([colspan]) > * {
+                visibility: hidden
+            }
+
+.ant-table-body-inner {
+    height: 100%
+}
+
+.ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body {
+    position: relative;
+    background: #fff
+}
+
+.ant-table-fixed-header .ant-table-body-inner {
+    overflow: scroll
+}
+
+.ant-table-fixed-header .ant-table-scroll .ant-table-header {
+    margin-bottom: -20px;
+    padding-bottom: 20px;
+    overflow: scroll;
+    opacity: .9999
+}
+
+    .ant-table-fixed-header .ant-table-scroll .ant-table-header::-webkit-scrollbar {
+        border: 1px solid #e8e8e8;
+        border-width: 0 0 1px 0
+    }
+
+.ant-table-hide-scrollbar {
+    scrollbar-color: transparent transparent;
+    min-width: unset
+}
+
+    .ant-table-hide-scrollbar::-webkit-scrollbar {
+        min-width: inherit;
+        background-color: transparent
+    }
+
+.ant-table-bordered.ant-table-fixed-header .ant-table-scroll .ant-table-header::-webkit-scrollbar {
+    border: 1px solid #e8e8e8;
+    border-width: 1px 1px 1px 0
+}
+
+.ant-table-bordered.ant-table-fixed-header .ant-table-scroll .ant-table-header.ant-table-hide-scrollbar .ant-table-thead > tr:only-child > th:last-child {
+    border-right-color: transparent
+}
+
+.ant-table-fixed-left, .ant-table-fixed-right {
+    position: absolute;
+    top: 0;
+    z-index: 1;
+    overflow: hidden;
+    border-radius: 0;
+    -webkit-transition: -webkit-box-shadow .3s ease;
+    transition: -webkit-box-shadow .3s ease;
+    transition: box-shadow .3s ease;
+    transition: box-shadow .3s ease,-webkit-box-shadow .3s ease
+}
+
+    .ant-table-fixed-left table, .ant-table-fixed-right table {
+        width: auto;
+        background: #fff
+    }
+
+.ant-table-fixed-header .ant-table-fixed-left .ant-table-body-outer .ant-table-fixed, .ant-table-fixed-header .ant-table-fixed-right .ant-table-body-outer .ant-table-fixed {
+    border-radius: 0
+}
+
+.ant-table-fixed-left {
+    left: 0;
+    -webkit-box-shadow: 6px 0 6px -4px rgba(0,0,0,.15);
+    box-shadow: 6px 0 6px -4px rgba(0,0,0,.15)
+}
+
+    .ant-table-fixed-left .ant-table-header {
+        overflow-y: hidden
+    }
+
+    .ant-table-fixed-left .ant-table-body-inner {
+        margin-right: -20px;
+        padding-right: 20px
+    }
+
+.ant-table-fixed-header .ant-table-fixed-left .ant-table-body-inner {
+    padding-right: 0
+}
+
+.ant-table-fixed-left, .ant-table-fixed-left table {
+    border-radius: 2px 0 0 0
+}
+
+    .ant-table-fixed-left .ant-table-thead > tr > th:last-child {
+        border-top-right-radius: 0
+    }
+
+.ant-table-fixed-right {
+    right: 0;
+    -webkit-box-shadow: -6px 0 6px -4px rgba(0,0,0,.15);
+    box-shadow: -6px 0 6px -4px rgba(0,0,0,.15)
+}
+
+    .ant-table-fixed-right, .ant-table-fixed-right table {
+        border-radius: 0 2px 0 0
+    }
+
+        .ant-table-fixed-right .ant-table-expanded-row {
+            color: transparent;
+            pointer-events: none
+        }
+
+        .ant-table-fixed-right .ant-table-thead > tr > th:first-child {
+            border-top-left-radius: 0
+        }
+
+.ant-table.ant-table-scroll-position-left .ant-table-fixed-left, .ant-table.ant-table-scroll-position-right .ant-table-fixed-right {
+    -webkit-box-shadow: none;
+    box-shadow: none
+}
+
+.ant-table colgroup > col.ant-table-selection-col {
+    width: 60px
+}
+
+.ant-table-thead > tr > th.ant-table-selection-column-custom .ant-table-selection {
+    margin-right: -15px
+}
+
+.ant-table-tbody > tr > td.ant-table-selection-column, .ant-table-thead > tr > th.ant-table-selection-column {
+    text-align: center
+}
+
+    .ant-table-tbody > tr > td.ant-table-selection-column .ant-radio-wrapper, .ant-table-thead > tr > th.ant-table-selection-column .ant-radio-wrapper {
+        margin-right: 0
+    }
+
+.ant-table-row[class*=ant-table-row-level-0] .ant-table-selection-column > span {
+    display: inline-block
+}
+
+.ant-table-filter-dropdown-submenu .ant-checkbox-wrapper + span, .ant-table-filter-dropdown .ant-checkbox-wrapper + span {
+    padding-left: 8px
+}
+
+@supports (-moz-appearance:meterbar) {
+    .ant-table-thead > tr > th.ant-table-column-has-actions {
+        background-clip: padding-box
+    }
+}
+
+.ant-table-middle > .ant-table-content > .ant-table-body > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-footer, .ant-table-middle > .ant-table-content > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-title {
+    padding: 12px 8px
+}
+
+.ant-table-middle tr.ant-table-expanded-row td > .ant-table-wrapper {
+    margin: -12px -8px -13px
+}
+
+.ant-table-small {
+    border: 1px solid #e8e8e8;
+    border-radius: 2px
+}
+
+    .ant-table-small > .ant-table-content > .ant-table-footer, .ant-table-small > .ant-table-title {
+        padding: 8px 8px
+    }
+
+    .ant-table-small > .ant-table-title {
+        top: 0;
+        border-bottom: 1px solid #e8e8e8
+    }
+
+    .ant-table-small > .ant-table-content > .ant-table-footer {
+        background-color: transparent;
+        border-top: 1px solid #e8e8e8
+    }
+
+        .ant-table-small > .ant-table-content > .ant-table-footer:before {
+            background-color: transparent
+        }
+
+    .ant-table-small > .ant-table-content > .ant-table-body {
+        margin: 0 8px
+    }
+
+        .ant-table-small > .ant-table-content > .ant-table-body > table, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table, .ant-table-small > .ant-table-content > .ant-table-header > table, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table {
+            border: 0
+        }
+
+            .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th {
+                padding: 8px 8px
+            }
+
+            .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th {
+                background-color: transparent
+            }
+
+            .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr, .ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr {
+                border-bottom: 1px solid #e8e8e8
+            }
+
+                .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th.ant-table-column-sort, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th.ant-table-column-sort, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th.ant-table-column-sort, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort, .ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th.ant-table-column-sort, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort {
+                    background-color: rgba(0,0,0,.01)
+                }
+
+    .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table {
+        padding: 0
+    }
+
+    .ant-table-small > .ant-table-content .ant-table-header {
+        background-color: transparent;
+        border-radius: 2px 2px 0 0
+    }
+
+    .ant-table-small > .ant-table-content .ant-table-placeholder, .ant-table-small > .ant-table-content .ant-table-row:last-child td {
+        border-bottom: 0
+    }
+
+    .ant-table-small.ant-table-bordered {
+        border-right: 0
+    }
+
+        .ant-table-small.ant-table-bordered .ant-table-title {
+            border: 0;
+            border-right: 1px solid #e8e8e8;
+            border-bottom: 1px solid #e8e8e8
+        }
+
+        .ant-table-small.ant-table-bordered .ant-table-content {
+            border-right: 1px solid #e8e8e8
+        }
+
+        .ant-table-small.ant-table-bordered .ant-table-footer {
+            border: 0;
+            border-top: 1px solid #e8e8e8
+        }
+
+            .ant-table-small.ant-table-bordered .ant-table-footer:before {
+                display: none
+            }
+
+        .ant-table-small.ant-table-bordered .ant-table-placeholder {
+            border-right: 0;
+            border-bottom: 0;
+            border-left: 0
+        }
+
+        .ant-table-small.ant-table-bordered .ant-table-tbody > tr > td:last-child, .ant-table-small.ant-table-bordered .ant-table-thead > tr > th.ant-table-row-cell-last {
+            border-right: none
+        }
+
+        .ant-table-small.ant-table-bordered .ant-table-fixed-left .ant-table-tbody > tr > td:last-child, .ant-table-small.ant-table-bordered .ant-table-fixed-left .ant-table-thead > tr > th:last-child {
+            border-right: 1px solid #e8e8e8
+        }
+
+        .ant-table-small.ant-table-bordered .ant-table-fixed-right {
+            border-right: 1px solid #e8e8e8;
+            border-left: 1px solid #e8e8e8
+        }
+
+    .ant-table-small tr.ant-table-expanded-row td > .ant-table-wrapper {
+        margin: -8px -8px -9px
+    }
+
+    .ant-table-small.ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body {
+        border-radius: 0 0 2px 2px
+    }
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-nav-container {
+    height: 40px
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-ink-bar {
+    visibility: hidden
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab {
+    height: 40px;
+    margin: 0;
+    margin-right: 2px;
+    padding: 0 16px;
+    line-height: 38px;
+    background: #fafafa;
+    border: 1px solid #e8e8e8;
+    border-radius: 2px 2px 0 0;
+    -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1);
+    transition: all .3s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active {
+    height: 40px;
+    color: #fa541c;
+    background: #fff;
+    border-color: #e8e8e8;
+    border-bottom: 1px solid #fff
+}
+
+    .ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active:before {
+        border-top: 2px solid transparent
+    }
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-disabled {
+    color: #fa541c;
+    color: rgba(0,0,0,.25)
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-inactive {
+    padding: 0
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-nav-wrap {
+    margin-bottom: 0
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab .ant-tabs-close-x {
+    width: 16px;
+    height: 16px;
+    height: 14px;
+    margin-right: -5px;
+    margin-left: 3px;
+    overflow: hidden;
+    color: rgba(0,0,0,.45);
+    font-size: 12px;
+    vertical-align: middle;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab .ant-tabs-close-x:hover {
+        color: rgba(0,0,0,.85)
+    }
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-content > .ant-tabs-tabpane, .ant-tabs.ant-tabs-editable-card .ant-tabs-card-content > .ant-tabs-tabpane {
+    -webkit-transition: none !important;
+    transition: none !important
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-content > .ant-tabs-tabpane-inactive, .ant-tabs.ant-tabs-editable-card .ant-tabs-card-content > .ant-tabs-tabpane-inactive {
+    overflow: hidden
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab:hover .anticon-close {
+    opacity: 1
+}
+
+.ant-tabs-extra-content {
+    line-height: 45px
+}
+
+    .ant-tabs-extra-content .ant-tabs-new-tab {
+        position: relative;
+        width: 20px;
+        height: 20px;
+        color: rgba(0,0,0,.65);
+        font-size: 12px;
+        line-height: 20px;
+        text-align: center;
+        border: 1px solid #e8e8e8;
+        border-radius: 2px;
+        cursor: pointer;
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+        .ant-tabs-extra-content .ant-tabs-new-tab:hover {
+            color: #fa541c;
+            border-color: #fa541c
+        }
+
+        .ant-tabs-extra-content .ant-tabs-new-tab svg {
+            position: absolute;
+            top: 0;
+            right: 0;
+            bottom: 0;
+            left: 0;
+            margin: auto
+        }
+
+.ant-tabs.ant-tabs-large .ant-tabs-extra-content {
+    line-height: 56px
+}
+
+.ant-tabs.ant-tabs-small .ant-tabs-extra-content {
+    line-height: 37px
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-extra-content {
+    line-height: 40px
+}
+
+.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-nav-container, .ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-nav-container {
+    height: 100%
+}
+
+.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab, .ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab {
+    margin-bottom: 8px;
+    border-bottom: 1px solid #e8e8e8
+}
+
+.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab-active, .ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab-active {
+    padding-bottom: 4px
+}
+
+.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab:last-child, .ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab:last-child {
+    margin-bottom: 8px
+}
+
+.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-new-tab, .ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-new-tab {
+    width: 90%
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-nav-wrap {
+    margin-right: 0
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab {
+    margin-right: 1px;
+    border-right: 0;
+    border-radius: 2px 0 0 2px
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab-active {
+    margin-right: -1px;
+    padding-right: 18px
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-nav-wrap {
+    margin-left: 0
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab {
+    margin-left: 1px;
+    border-left: 0;
+    border-radius: 0 2px 2px 0
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab-active {
+    margin-left: -1px;
+    padding-left: 18px
+}
+
+.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab {
+    height: auto;
+    border-top: 0;
+    border-bottom: 1px solid #e8e8e8;
+    border-radius: 0 0 2px 2px
+}
+
+.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active {
+    padding-top: 1px;
+    padding-bottom: 0;
+    color: #fa541c
+}
+
+.ant-tabs {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    overflow: hidden;
+    zoom: 1
+}
+
+    .ant-tabs:after, .ant-tabs:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-tabs:after {
+        clear: both
+    }
+
+.ant-tabs-ink-bar {
+    position: absolute;
+    bottom: 1px;
+    left: 0;
+    z-index: 1;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    width: 0;
+    height: 2px;
+    background-color: #fa541c;
+    -webkit-transform-origin: 0 0;
+    transform-origin: 0 0
+}
+
+.ant-tabs-bar {
+    margin: 0 0 16px 0;
+    border-bottom: 1px solid #e8e8e8;
+    outline: none
+}
+
+.ant-tabs-bar, .ant-tabs-nav-container {
+    -webkit-transition: padding .3s cubic-bezier(.645,.045,.355,1);
+    transition: padding .3s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-tabs-nav-container {
+    position: relative;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin-bottom: -1px;
+    overflow: hidden;
+    font-size: 14px;
+    line-height: 1.5;
+    white-space: nowrap;
+    zoom: 1
+}
+
+    .ant-tabs-nav-container:after, .ant-tabs-nav-container:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-tabs-nav-container:after {
+        clear: both
+    }
+
+.ant-tabs-nav-container-scrolling {
+    padding-right: 32px;
+    padding-left: 32px
+}
+
+.ant-tabs-bottom .ant-tabs-bottom-bar {
+    margin-top: 16px;
+    margin-bottom: 0;
+    border-top: 1px solid #e8e8e8;
+    border-bottom: none
+}
+
+    .ant-tabs-bottom .ant-tabs-bottom-bar .ant-tabs-ink-bar {
+        top: 1px;
+        bottom: auto
+    }
+
+    .ant-tabs-bottom .ant-tabs-bottom-bar .ant-tabs-nav-container {
+        margin-top: -1px;
+        margin-bottom: 0
+    }
+
+.ant-tabs-tab-next, .ant-tabs-tab-prev {
+    position: absolute;
+    z-index: 2;
+    width: 0;
+    height: 100%;
+    color: rgba(0,0,0,.45);
+    text-align: center;
+    background-color: transparent;
+    border: 0;
+    cursor: pointer;
+    opacity: 0;
+    -webkit-transition: width .3s cubic-bezier(.645,.045,.355,1),opacity .3s cubic-bezier(.645,.045,.355,1),color .3s cubic-bezier(.645,.045,.355,1);
+    transition: width .3s cubic-bezier(.645,.045,.355,1),opacity .3s cubic-bezier(.645,.045,.355,1),color .3s cubic-bezier(.645,.045,.355,1);
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    pointer-events: none
+}
+
+    .ant-tabs-tab-next.ant-tabs-tab-arrow-show, .ant-tabs-tab-prev.ant-tabs-tab-arrow-show {
+        width: 32px;
+        height: 100%;
+        opacity: 1;
+        pointer-events: auto
+    }
+
+    .ant-tabs-tab-next:hover, .ant-tabs-tab-prev:hover {
+        color: rgba(0,0,0,.65)
+    }
+
+.ant-tabs-tab-next-icon, .ant-tabs-tab-prev-icon {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    font-weight: 700;
+    font-style: normal;
+    font-variant: normal;
+    line-height: inherit;
+    text-align: center;
+    text-transform: none;
+    -webkit-transform: translate(-50%,-50%);
+    transform: translate(-50%,-50%)
+}
+
+.ant-tabs-tab-next-icon-target, .ant-tabs-tab-prev-icon-target {
+    display: block;
+    display: inline-block;
+    font-size: 12px;
+    font-size: 10px\9;
+    -webkit-transform: scale(.83333333) rotate(0deg);
+    transform: scale(.83333333) rotate(0deg)
+}
+
+:root .ant-tabs-tab-next-icon-target, :root .ant-tabs-tab-prev-icon-target {
+    font-size: 12px
+}
+
+.ant-tabs-tab-btn-disabled {
+    cursor: not-allowed
+}
+
+    .ant-tabs-tab-btn-disabled, .ant-tabs-tab-btn-disabled:hover {
+        color: rgba(0,0,0,.25)
+    }
+
+.ant-tabs-tab-next {
+    right: 2px
+}
+
+.ant-tabs-tab-prev {
+    left: 0
+}
+
+:root .ant-tabs-tab-prev {
+    -webkit-filter: none;
+    filter: none
+}
+
+.ant-tabs-nav-wrap {
+    margin-bottom: -1px;
+    overflow: hidden
+}
+
+.ant-tabs-nav-scroll {
+    overflow: hidden;
+    white-space: nowrap
+}
+
+.ant-tabs-nav {
+    position: relative;
+    display: inline-block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding-left: 0;
+    list-style: none;
+    -webkit-transition: -webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+    transition: -webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+    transition: transform .3s cubic-bezier(.645,.045,.355,1);
+    transition: transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1)
+}
+
+    .ant-tabs-nav:after, .ant-tabs-nav:before {
+        display: table;
+        content: " "
+    }
+
+    .ant-tabs-nav:after {
+        clear: both
+    }
+
+    .ant-tabs-nav .ant-tabs-tab {
+        position: relative;
+        display: inline-block;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        height: 100%;
+        margin: 0 32px 0 0;
+        padding: 12px 16px;
+        text-decoration: none;
+        cursor: pointer;
+        -webkit-transition: color .3s cubic-bezier(.645,.045,.355,1);
+        transition: color .3s cubic-bezier(.645,.045,.355,1)
+    }
+
+        .ant-tabs-nav .ant-tabs-tab:before {
+            position: absolute;
+            top: -1px;
+            left: 0;
+            width: 100%;
+            border-top: 2px solid transparent;
+            border-radius: 2px 2px 0 0;
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: "";
+            pointer-events: none
+        }
+
+        .ant-tabs-nav .ant-tabs-tab:last-child {
+            margin-right: 0
+        }
+
+        .ant-tabs-nav .ant-tabs-tab:hover {
+            color: #ff7a45
+        }
+
+        .ant-tabs-nav .ant-tabs-tab:active {
+            color: #d4380d
+        }
+
+        .ant-tabs-nav .ant-tabs-tab .anticon {
+            margin-right: 8px
+        }
+
+    .ant-tabs-nav .ant-tabs-tab-active {
+        color: #fa541c;
+        font-weight: 500
+    }
+
+    .ant-tabs-nav .ant-tabs-tab-disabled, .ant-tabs-nav .ant-tabs-tab-disabled:hover {
+        color: rgba(0,0,0,.25);
+        cursor: not-allowed
+    }
+
+.ant-tabs .ant-tabs-large-bar .ant-tabs-nav-container {
+    font-size: 16px
+}
+
+.ant-tabs .ant-tabs-large-bar .ant-tabs-tab {
+    padding: 16px
+}
+
+.ant-tabs .ant-tabs-small-bar .ant-tabs-nav-container {
+    font-size: 14px
+}
+
+.ant-tabs .ant-tabs-small-bar .ant-tabs-tab {
+    padding: 8px 16px
+}
+
+.ant-tabs-content:before {
+    display: block;
+    overflow: hidden;
+    content: ""
+}
+
+.ant-tabs .ant-tabs-bottom-content, .ant-tabs .ant-tabs-top-content {
+    width: 100%
+}
+
+    .ant-tabs .ant-tabs-bottom-content > .ant-tabs-tabpane, .ant-tabs .ant-tabs-top-content > .ant-tabs-tabpane {
+        -ms-flex-negative: 0;
+        flex-shrink: 0;
+        width: 100%;
+        -webkit-backface-visibility: hidden;
+        opacity: 1;
+        -webkit-transition: opacity .45s;
+        transition: opacity .45s
+    }
+
+    .ant-tabs .ant-tabs-bottom-content > .ant-tabs-tabpane-inactive, .ant-tabs .ant-tabs-top-content > .ant-tabs-tabpane-inactive {
+        height: 0;
+        padding: 0 !important;
+        overflow: hidden;
+        opacity: 0;
+        pointer-events: none
+    }
+
+        .ant-tabs .ant-tabs-bottom-content > .ant-tabs-tabpane-inactive input, .ant-tabs .ant-tabs-top-content > .ant-tabs-tabpane-inactive input {
+            visibility: hidden
+        }
+
+    .ant-tabs .ant-tabs-bottom-content.ant-tabs-content-animated, .ant-tabs .ant-tabs-top-content.ant-tabs-content-animated {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-orient: horizontal;
+        -webkit-box-direction: normal;
+        -ms-flex-direction: row;
+        flex-direction: row;
+        -webkit-transition: margin-left .3s cubic-bezier(.645,.045,.355,1);
+        transition: margin-left .3s cubic-bezier(.645,.045,.355,1);
+        will-change: margin-left
+    }
+
+.ant-tabs .ant-tabs-left-bar, .ant-tabs .ant-tabs-right-bar {
+    height: 100%;
+    border-bottom: 0
+}
+
+    .ant-tabs .ant-tabs-left-bar .ant-tabs-tab-arrow-show, .ant-tabs .ant-tabs-right-bar .ant-tabs-tab-arrow-show {
+        width: 100%;
+        height: 32px
+    }
+
+    .ant-tabs .ant-tabs-left-bar .ant-tabs-tab, .ant-tabs .ant-tabs-right-bar .ant-tabs-tab {
+        display: block;
+        float: none;
+        margin: 0 0 16px 0;
+        padding: 8px 24px
+    }
+
+        .ant-tabs .ant-tabs-left-bar .ant-tabs-tab:last-child, .ant-tabs .ant-tabs-right-bar .ant-tabs-tab:last-child {
+            margin-bottom: 0
+        }
+
+    .ant-tabs .ant-tabs-left-bar .ant-tabs-extra-content, .ant-tabs .ant-tabs-right-bar .ant-tabs-extra-content {
+        text-align: center
+    }
+
+    .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-scroll, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-scroll {
+        width: auto
+    }
+
+    .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container, .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-wrap, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-wrap {
+        height: 100%
+    }
+
+    .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container {
+        margin-bottom: 0
+    }
+
+        .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container.ant-tabs-nav-container-scrolling, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container.ant-tabs-nav-container-scrolling {
+            padding: 32px 0
+        }
+
+    .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-wrap, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-wrap {
+        margin-bottom: 0
+    }
+
+    .ant-tabs .ant-tabs-left-bar .ant-tabs-nav, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav {
+        width: 100%
+    }
+
+    .ant-tabs .ant-tabs-left-bar .ant-tabs-ink-bar, .ant-tabs .ant-tabs-right-bar .ant-tabs-ink-bar {
+        top: 0;
+        bottom: auto;
+        left: auto;
+        width: 2px;
+        height: 0
+    }
+
+    .ant-tabs .ant-tabs-left-bar .ant-tabs-tab-next, .ant-tabs .ant-tabs-right-bar .ant-tabs-tab-next {
+        right: 0;
+        bottom: 0;
+        width: 100%;
+        height: 32px
+    }
+
+    .ant-tabs .ant-tabs-left-bar .ant-tabs-tab-prev, .ant-tabs .ant-tabs-right-bar .ant-tabs-tab-prev {
+        top: 0;
+        width: 100%;
+        height: 32px
+    }
+
+.ant-tabs .ant-tabs-left-content, .ant-tabs .ant-tabs-right-content {
+    width: auto;
+    margin-top: 0 !important;
+    overflow: hidden
+}
+
+.ant-tabs .ant-tabs-left-bar {
+    float: left;
+    margin-right: -1px;
+    margin-bottom: 0;
+    border-right: 1px solid #e8e8e8
+}
+
+    .ant-tabs .ant-tabs-left-bar .ant-tabs-tab {
+        text-align: right
+    }
+
+    .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container, .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-wrap {
+        margin-right: -1px
+    }
+
+    .ant-tabs .ant-tabs-left-bar .ant-tabs-ink-bar {
+        right: 1px
+    }
+
+.ant-tabs .ant-tabs-left-content {
+    padding-left: 24px;
+    border-left: 1px solid #e8e8e8
+}
+
+.ant-tabs .ant-tabs-right-bar {
+    float: right;
+    margin-bottom: 0;
+    margin-left: -1px;
+    border-left: 1px solid #e8e8e8
+}
+
+    .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-wrap {
+        margin-left: -1px
+    }
+
+    .ant-tabs .ant-tabs-right-bar .ant-tabs-ink-bar {
+        left: 1px
+    }
+
+.ant-tabs .ant-tabs-right-content {
+    padding-right: 24px;
+    border-right: 1px solid #e8e8e8
+}
+
+.ant-tabs-bottom .ant-tabs-ink-bar-animated, .ant-tabs-top .ant-tabs-ink-bar-animated {
+    -webkit-transition: width .2s cubic-bezier(.645,.045,.355,1),left .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+    transition: width .2s cubic-bezier(.645,.045,.355,1),left .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+    transition: transform .3s cubic-bezier(.645,.045,.355,1),width .2s cubic-bezier(.645,.045,.355,1),left .3s cubic-bezier(.645,.045,.355,1);
+    transition: transform .3s cubic-bezier(.645,.045,.355,1),width .2s cubic-bezier(.645,.045,.355,1),left .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-tabs-left .ant-tabs-ink-bar-animated, .ant-tabs-right .ant-tabs-ink-bar-animated {
+    -webkit-transition: height .2s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+    transition: height .2s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+    transition: transform .3s cubic-bezier(.645,.045,.355,1),height .2s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1);
+    transition: transform .3s cubic-bezier(.645,.045,.355,1),height .2s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-tabs-no-animation > .ant-tabs-content > .ant-tabs-content-animated, .no-flex > .ant-tabs-content > .ant-tabs-content-animated {
+    margin-left: 0 !important;
+    -webkit-transform: none !important;
+    transform: none !important
+}
+
+.ant-tabs-no-animation > .ant-tabs-content > .ant-tabs-tabpane-inactive, .no-flex > .ant-tabs-content > .ant-tabs-tabpane-inactive {
+    height: 0;
+    padding: 0 !important;
+    overflow: hidden;
+    opacity: 0;
+    pointer-events: none
+}
+
+    .ant-tabs-no-animation > .ant-tabs-content > .ant-tabs-tabpane-inactive input, .no-flex > .ant-tabs-content > .ant-tabs-tabpane-inactive input {
+        visibility: hidden
+    }
+
+.ant-tabs-left-content > .ant-tabs-content-animated, .ant-tabs-right-content > .ant-tabs-content-animated {
+    margin-left: 0 !important;
+    -webkit-transform: none !important;
+    transform: none !important
+}
+
+.ant-tabs-left-content > .ant-tabs-tabpane-inactive, .ant-tabs-right-content > .ant-tabs-tabpane-inactive {
+    height: 0;
+    padding: 0 !important;
+    overflow: hidden;
+    opacity: 0;
+    pointer-events: none
+}
+
+    .ant-tabs-left-content > .ant-tabs-tabpane-inactive input, .ant-tabs-right-content > .ant-tabs-tabpane-inactive input {
+        visibility: hidden
+    }
+
+.ant-tag {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    display: inline-block;
+    height: auto;
+    margin-right: 8px;
+    padding: 0 7px;
+    font-size: 12px;
+    line-height: 20px;
+    white-space: nowrap;
+    background: #fafafa;
+    border: 1px solid #d9d9d9;
+    border-radius: 2px;
+    cursor: default;
+    opacity: 1;
+    -webkit-transition: all .3s cubic-bezier(.78,.14,.15,.86);
+    transition: all .3s cubic-bezier(.78,.14,.15,.86)
+}
+
+    .ant-tag:hover {
+        opacity: .85
+    }
+
+    .ant-tag, .ant-tag a, .ant-tag a:hover {
+        color: rgba(0,0,0,.65)
+    }
+
+        .ant-tag > a:first-child:last-child {
+            display: inline-block;
+            margin: 0 -8px;
+            padding: 0 8px
+        }
+
+        .ant-tag .anticon-close {
+            display: inline-block;
+            font-size: 12px;
+            font-size: 10px\9;
+            -webkit-transform: scale(.83333333) rotate(0deg);
+            transform: scale(.83333333) rotate(0deg);
+            margin-left: 3px;
+            color: rgba(0,0,0,.45);
+            font-weight: 700;
+            cursor: pointer;
+            -webkit-transition: all .3s cubic-bezier(.78,.14,.15,.86);
+            transition: all .3s cubic-bezier(.78,.14,.15,.86)
+        }
+
+:root .ant-tag .anticon-close {
+    font-size: 12px
+}
+
+.ant-tag .anticon-close:hover {
+    color: rgba(0,0,0,.85)
+}
+
+.ant-tag-has-color {
+    border-color: transparent
+}
+
+    .ant-tag-has-color, .ant-tag-has-color .anticon-close, .ant-tag-has-color .anticon-close:hover, .ant-tag-has-color a, .ant-tag-has-color a:hover {
+        color: #fff
+    }
+
+.ant-tag-checkable {
+    background-color: transparent;
+    border-color: transparent
+}
+
+    .ant-tag-checkable:not(.ant-tag-checkable-checked):hover {
+        color: #fa541c
+    }
+
+    .ant-tag-checkable-checked, .ant-tag-checkable:active {
+        color: #fff
+    }
+
+.ant-tag-checkable-checked {
+    background-color: #fa541c
+}
+
+.ant-tag-checkable:active {
+    background-color: #d4380d
+}
+
+.ant-tag-hidden {
+    display: none
+}
+
+.ant-tag-pink {
+    color: #eb2f96;
+    background: #fff0f6;
+    border-color: #ffadd2
+}
+
+.ant-tag-pink-inverse {
+    color: #fff;
+    background: #eb2f96;
+    border-color: #eb2f96
+}
+
+.ant-tag-magenta {
+    color: #eb2f96;
+    background: #fff0f6;
+    border-color: #ffadd2
+}
+
+.ant-tag-magenta-inverse {
+    color: #fff;
+    background: #eb2f96;
+    border-color: #eb2f96
+}
+
+.ant-tag-red {
+    color: #f5222d;
+    background: #fff1f0;
+    border-color: #ffa39e
+}
+
+.ant-tag-red-inverse {
+    color: #fff;
+    background: #f5222d;
+    border-color: #f5222d
+}
+
+.ant-tag-volcano {
+    color: #fa541c;
+    background: #fff2e8;
+    border-color: #ffbb96
+}
+
+.ant-tag-volcano-inverse {
+    color: #fff;
+    background: #fa541c;
+    border-color: #fa541c
+}
+
+.ant-tag-orange {
+    color: #fa8c16;
+    background: #fff7e6;
+    border-color: #ffd591
+}
+
+.ant-tag-orange-inverse {
+    color: #fff;
+    background: #fa8c16;
+    border-color: #fa8c16
+}
+
+.ant-tag-yellow {
+    color: #fadb14;
+    background: #feffe6;
+    border-color: #fffb8f
+}
+
+.ant-tag-yellow-inverse {
+    color: #fff;
+    background: #fadb14;
+    border-color: #fadb14
+}
+
+.ant-tag-gold {
+    color: #faad14;
+    background: #fffbe6;
+    border-color: #ffe58f
+}
+
+.ant-tag-gold-inverse {
+    color: #fff;
+    background: #faad14;
+    border-color: #faad14
+}
+
+.ant-tag-cyan {
+    color: #13c2c2;
+    background: #e6fffb;
+    border-color: #87e8de
+}
+
+.ant-tag-cyan-inverse {
+    color: #fff;
+    background: #13c2c2;
+    border-color: #13c2c2
+}
+
+.ant-tag-lime {
+    color: #a0d911;
+    background: #fcffe6;
+    border-color: #eaff8f
+}
+
+.ant-tag-lime-inverse {
+    color: #fff;
+    background: #a0d911;
+    border-color: #a0d911
+}
+
+.ant-tag-green {
+    color: #52c41a;
+    background: #f6ffed;
+    border-color: #b7eb8f
+}
+
+.ant-tag-green-inverse {
+    color: #fff;
+    background: #52c41a;
+    border-color: #52c41a
+}
+
+.ant-tag-blue {
+    color: #1890ff;
+    background: #e6f7ff;
+    border-color: #91d5ff
+}
+
+.ant-tag-blue-inverse {
+    color: #fff;
+    background: #1890ff;
+    border-color: #1890ff
+}
+
+.ant-tag-geekblue {
+    color: #2f54eb;
+    background: #f0f5ff;
+    border-color: #adc6ff
+}
+
+.ant-tag-geekblue-inverse {
+    color: #fff;
+    background: #2f54eb;
+    border-color: #2f54eb
+}
+
+.ant-tag-purple {
+    color: #722ed1;
+    background: #f9f0ff;
+    border-color: #d3adf7
+}
+
+.ant-tag-purple-inverse {
+    color: #fff;
+    background: #722ed1;
+    border-color: #722ed1
+}
+
+.ant-time-picker-panel {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: absolute;
+    z-index: 1050;
+    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol
+}
+
+.ant-time-picker-panel-inner {
+    position: relative;
+    left: -2px;
+    font-size: 14px;
+    text-align: left;
+    list-style: none;
+    background-color: #fff;
+    background-clip: padding-box;
+    border-radius: 2px;
+    outline: none;
+    -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+.ant-time-picker-panel-input {
+    width: 100%;
+    max-width: 154px;
+    margin: 0;
+    padding: 0;
+    line-height: normal;
+    border: 0;
+    outline: 0;
+    cursor: auto
+}
+
+    .ant-time-picker-panel-input::-moz-placeholder {
+        color: #bfbfbf;
+        opacity: 1
+    }
+
+    .ant-time-picker-panel-input:-ms-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-time-picker-panel-input::-webkit-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-time-picker-panel-input:-moz-placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-time-picker-panel-input:-ms-input-placeholder {
+        text-overflow: ellipsis
+    }
+
+    .ant-time-picker-panel-input:placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+.ant-time-picker-panel-input-wrap {
+    position: relative;
+    padding: 7px 2px 7px 12px;
+    border-bottom: 1px solid #e8e8e8
+}
+
+.ant-time-picker-panel-input-invalid {
+    border-color: #f5222d
+}
+
+.ant-time-picker-panel-narrow .ant-time-picker-panel-input-wrap {
+    max-width: 112px
+}
+
+.ant-time-picker-panel-select {
+    position: relative;
+    float: left;
+    width: 56px;
+    max-height: 192px;
+    overflow: hidden;
+    font-size: 14px;
+    border-left: 1px solid #e8e8e8
+}
+
+    .ant-time-picker-panel-select:hover {
+        overflow-y: auto
+    }
+
+    .ant-time-picker-panel-select:first-child {
+        margin-left: 0;
+        border-left: 0
+    }
+
+    .ant-time-picker-panel-select:last-child {
+        border-right: 0
+    }
+
+    .ant-time-picker-panel-select:only-child {
+        width: 100%
+    }
+
+    .ant-time-picker-panel-select ul {
+        width: 56px;
+        margin: 0;
+        padding: 0 0 160px;
+        list-style: none
+    }
+
+    .ant-time-picker-panel-select li {
+        width: 100%;
+        height: 32px;
+        margin: 0;
+        padding: 0 0 0 12px;
+        line-height: 32px;
+        text-align: left;
+        list-style: none;
+        cursor: pointer;
+        -webkit-transition: all .3s;
+        transition: all .3s;
+        -webkit-user-select: none;
+        -moz-user-select: none;
+        -ms-user-select: none;
+        user-select: none
+    }
+
+        .ant-time-picker-panel-select li:focus {
+            color: #fa541c;
+            font-weight: 600;
+            outline: none
+        }
+
+        .ant-time-picker-panel-select li:hover {
+            background: #fff2e8
+        }
+
+li.ant-time-picker-panel-select-option-selected {
+    font-weight: 600;
+    background: #f5f5f5
+}
+
+    li.ant-time-picker-panel-select-option-selected:hover {
+        background: #f5f5f5
+    }
+
+li.ant-time-picker-panel-select-option-disabled {
+    color: rgba(0,0,0,.25)
+}
+
+    li.ant-time-picker-panel-select-option-disabled:hover {
+        background: transparent;
+        cursor: not-allowed
+    }
+
+    li.ant-time-picker-panel-select-option-disabled:focus {
+        color: rgba(0,0,0,.25);
+        font-weight: inherit
+    }
+
+.ant-time-picker-panel-combobox {
+    zoom: 1
+}
+
+    .ant-time-picker-panel-combobox:after, .ant-time-picker-panel-combobox:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-time-picker-panel-combobox:after {
+        clear: both
+    }
+
+.ant-time-picker-panel-addon {
+    padding: 8px;
+    border-top: 1px solid #e8e8e8
+}
+
+.ant-time-picker-panel.slide-up-appear.slide-up-appear-active.ant-time-picker-panel-placement-topLeft, .ant-time-picker-panel.slide-up-appear.slide-up-appear-active.ant-time-picker-panel-placement-topRight, .ant-time-picker-panel.slide-up-enter.slide-up-enter-active.ant-time-picker-panel-placement-topLeft, .ant-time-picker-panel.slide-up-enter.slide-up-enter-active.ant-time-picker-panel-placement-topRight {
+    -webkit-animation-name: antSlideDownIn;
+    animation-name: antSlideDownIn
+}
+
+.ant-time-picker-panel.slide-up-appear.slide-up-appear-active.ant-time-picker-panel-placement-bottomLeft, .ant-time-picker-panel.slide-up-appear.slide-up-appear-active.ant-time-picker-panel-placement-bottomRight, .ant-time-picker-panel.slide-up-enter.slide-up-enter-active.ant-time-picker-panel-placement-bottomLeft, .ant-time-picker-panel.slide-up-enter.slide-up-enter-active.ant-time-picker-panel-placement-bottomRight {
+    -webkit-animation-name: antSlideUpIn;
+    animation-name: antSlideUpIn
+}
+
+.ant-time-picker-panel.slide-up-leave.slide-up-leave-active.ant-time-picker-panel-placement-topLeft, .ant-time-picker-panel.slide-up-leave.slide-up-leave-active.ant-time-picker-panel-placement-topRight {
+    -webkit-animation-name: antSlideDownOut;
+    animation-name: antSlideDownOut
+}
+
+.ant-time-picker-panel.slide-up-leave.slide-up-leave-active.ant-time-picker-panel-placement-bottomLeft, .ant-time-picker-panel.slide-up-leave.slide-up-leave-active.ant-time-picker-panel-placement-bottomRight {
+    -webkit-animation-name: antSlideUpOut;
+    animation-name: antSlideUpOut
+}
+
+.ant-time-picker {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    font-size: 14px;
+    font-variant: tabular-nums;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    width: 128px;
+    outline: none;
+    cursor: text;
+    -webkit-transition: opacity .3s;
+    transition: opacity .3s
+}
+
+.ant-time-picker, .ant-time-picker-input {
+    color: rgba(0,0,0,.65);
+    line-height: 1.5;
+    position: relative;
+    display: inline-block
+}
+
+.ant-time-picker-input {
+    width: 100%;
+    height: 32px;
+    padding: 4px 11px;
+    font-size: 14px;
+    background-color: #fff;
+    background-image: none;
+    border: 1px solid #d9d9d9;
+    border-radius: 2px;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-time-picker-input::-moz-placeholder {
+        color: #bfbfbf;
+        opacity: 1
+    }
+
+    .ant-time-picker-input:-ms-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-time-picker-input::-webkit-input-placeholder {
+        color: #bfbfbf
+    }
+
+    .ant-time-picker-input:-moz-placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-time-picker-input:-ms-input-placeholder {
+        text-overflow: ellipsis
+    }
+
+    .ant-time-picker-input:placeholder-shown {
+        text-overflow: ellipsis
+    }
+
+    .ant-time-picker-input:focus, .ant-time-picker-input:hover {
+        border-color: #ff7a45;
+        border-right-width: 1px !important
+    }
+
+    .ant-time-picker-input:focus {
+        outline: 0;
+        -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+        box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+    }
+
+.ant-time-picker-input-disabled {
+    color: rgba(0,0,0,.25);
+    background-color: #f5f5f5;
+    cursor: not-allowed;
+    opacity: 1
+}
+
+    .ant-time-picker-input-disabled:hover {
+        border-color: #d9d9d9;
+        border-right-width: 1px !important
+    }
+
+textarea.ant-time-picker-input {
+    max-width: 100%;
+    height: auto;
+    min-height: 32px;
+    line-height: 1.5;
+    vertical-align: bottom;
+    -webkit-transition: all .3s,height 0s;
+    transition: all .3s,height 0s
+}
+
+.ant-time-picker-input-lg {
+    height: 40px;
+    padding: 6px 11px;
+    font-size: 16px
+}
+
+.ant-time-picker-input-sm {
+    height: 24px;
+    padding: 1px 7px
+}
+
+.ant-time-picker-input[disabled] {
+    color: rgba(0,0,0,.25);
+    background-color: #f5f5f5;
+    cursor: not-allowed;
+    opacity: 1
+}
+
+    .ant-time-picker-input[disabled]:hover {
+        border-color: #d9d9d9;
+        border-right-width: 1px !important
+    }
+
+.ant-time-picker-open {
+    opacity: 0
+}
+
+.ant-time-picker-clear, .ant-time-picker-icon {
+    position: absolute;
+    top: 50%;
+    right: 11px;
+    z-index: 1;
+    width: 14px;
+    height: 14px;
+    margin-top: -7px;
+    color: rgba(0,0,0,.25);
+    line-height: 14px;
+    -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1);
+    transition: all .3s cubic-bezier(.645,.045,.355,1);
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none
+}
+
+    .ant-time-picker-clear .ant-time-picker-clock-icon, .ant-time-picker-icon .ant-time-picker-clock-icon {
+        display: block;
+        color: rgba(0,0,0,.25);
+        line-height: 1
+    }
+
+.ant-time-picker-clear {
+    z-index: 2;
+    background: #fff;
+    opacity: 0;
+    pointer-events: none
+}
+
+    .ant-time-picker-clear:hover {
+        color: rgba(0,0,0,.45)
+    }
+
+.ant-time-picker:hover .ant-time-picker-clear {
+    opacity: 1;
+    pointer-events: auto
+}
+
+.ant-time-picker-large .ant-time-picker-input {
+    height: 40px;
+    padding: 6px 11px;
+    font-size: 16px
+}
+
+.ant-time-picker-small .ant-time-picker-input {
+    height: 24px;
+    padding: 1px 7px
+}
+
+.ant-time-picker-small .ant-time-picker-clear, .ant-time-picker-small .ant-time-picker-icon {
+    right: 7px
+}
+
+@media not all and (min-resolution:0.001dpcm) {
+    @supports (-webkit-appearance:none) and (stroke-color:transparent) {
+        .ant-input {
+            line-height: 1.5
+        }
+    }
+}
+
+.ant-timeline {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    margin: 0;
+    padding: 0;
+    list-style: none
+}
+
+.ant-timeline-item {
+    position: relative;
+    margin: 0;
+    padding: 0 0 20px;
+    font-size: 14px;
+    list-style: none
+}
+
+.ant-timeline-item-tail {
+    position: absolute;
+    top: 10px;
+    left: 4px;
+    height: calc(100% - 10px);
+    border-left: 2px solid #e8e8e8
+}
+
+.ant-timeline-item-pending .ant-timeline-item-head {
+    font-size: 12px;
+    background-color: transparent
+}
+
+.ant-timeline-item-pending .ant-timeline-item-tail {
+    display: none
+}
+
+.ant-timeline-item-head {
+    position: absolute;
+    width: 10px;
+    height: 10px;
+    background-color: #fff;
+    border: 2px solid transparent;
+    border-radius: 100px
+}
+
+.ant-timeline-item-head-blue {
+    color: #fa541c;
+    border-color: #fa541c
+}
+
+.ant-timeline-item-head-red {
+    color: #f5222d;
+    border-color: #f5222d
+}
+
+.ant-timeline-item-head-green {
+    color: #52c41a;
+    border-color: #52c41a
+}
+
+.ant-timeline-item-head-gray {
+    color: rgba(0,0,0,.25);
+    border-color: rgba(0,0,0,.25)
+}
+
+.ant-timeline-item-head-custom {
+    position: absolute;
+    top: 5.5px;
+    left: 5px;
+    width: auto;
+    height: auto;
+    margin-top: 0;
+    padding: 3px 1px;
+    line-height: 1;
+    text-align: center;
+    border: 0;
+    border-radius: 0;
+    -webkit-transform: translate(-50%,-50%);
+    transform: translate(-50%,-50%)
+}
+
+.ant-timeline-item-content {
+    position: relative;
+    top: -6px;
+    margin: 0 0 0 18px;
+    word-break: break-word
+}
+
+.ant-timeline-item-last > .ant-timeline-item-tail {
+    display: none
+}
+
+.ant-timeline-item-last > .ant-timeline-item-content {
+    min-height: 48px
+}
+
+.ant-timeline.ant-timeline-alternate .ant-timeline-item-head, .ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom, .ant-timeline.ant-timeline-alternate .ant-timeline-item-tail, .ant-timeline.ant-timeline-right .ant-timeline-item-head, .ant-timeline.ant-timeline-right .ant-timeline-item-head-custom, .ant-timeline.ant-timeline-right .ant-timeline-item-tail {
+    left: 50%
+}
+
+.ant-timeline.ant-timeline-alternate .ant-timeline-item-head, .ant-timeline.ant-timeline-right .ant-timeline-item-head {
+    margin-left: -4px
+}
+
+.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom, .ant-timeline.ant-timeline-right .ant-timeline-item-head-custom {
+    margin-left: 1px
+}
+
+.ant-timeline.ant-timeline-alternate .ant-timeline-item-left .ant-timeline-item-content, .ant-timeline.ant-timeline-right .ant-timeline-item-left .ant-timeline-item-content {
+    left: calc(50% - 4px);
+    width: calc(50% - 14px);
+    text-align: left
+}
+
+.ant-timeline.ant-timeline-alternate .ant-timeline-item-right .ant-timeline-item-content, .ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content {
+    width: calc(50% - 12px);
+    margin: 0;
+    text-align: right
+}
+
+.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head, .ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head-custom, .ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-tail {
+    left: calc(100% - 6px)
+}
+
+.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content {
+    width: calc(100% - 18px)
+}
+
+.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail {
+    display: block;
+    height: calc(100% - 14px);
+    border-left: 2px dotted #e8e8e8
+}
+
+.ant-timeline.ant-timeline-reverse .ant-timeline-item-last .ant-timeline-item-tail {
+    display: none
+}
+
+.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-tail {
+    top: 15px;
+    display: block;
+    height: calc(100% - 15px);
+    border-left: 2px dotted #e8e8e8
+}
+
+.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-content {
+    min-height: 48px
+}
+
+.ant-tooltip {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: absolute;
+    z-index: 1060;
+    display: block;
+    max-width: 250px;
+    visibility: visible
+}
+
+.ant-tooltip-hidden {
+    display: none
+}
+
+.ant-tooltip-placement-top, .ant-tooltip-placement-topLeft, .ant-tooltip-placement-topRight {
+    padding-bottom: 8px
+}
+
+.ant-tooltip-placement-right, .ant-tooltip-placement-rightBottom, .ant-tooltip-placement-rightTop {
+    padding-left: 8px
+}
+
+.ant-tooltip-placement-bottom, .ant-tooltip-placement-bottomLeft, .ant-tooltip-placement-bottomRight {
+    padding-top: 8px
+}
+
+.ant-tooltip-placement-left, .ant-tooltip-placement-leftBottom, .ant-tooltip-placement-leftTop {
+    padding-right: 8px
+}
+
+.ant-tooltip-inner {
+    min-width: 30px;
+    min-height: 32px;
+    padding: 6px 8px;
+    color: #fff;
+    text-align: left;
+    text-decoration: none;
+    word-wrap: break-word;
+    background-color: rgba(0,0,0,.75);
+    border-radius: 2px;
+    -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+    box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+.ant-tooltip-arrow {
+    position: absolute;
+    display: block;
+    width: 13.07106781px;
+    height: 13.07106781px;
+    overflow: hidden;
+    background: transparent;
+    pointer-events: none
+}
+
+    .ant-tooltip-arrow:before {
+        position: absolute;
+        top: 0;
+        right: 0;
+        bottom: 0;
+        left: 0;
+        display: block;
+        width: 5px;
+        height: 5px;
+        margin: auto;
+        background-color: rgba(0,0,0,.75);
+        content: "";
+        pointer-events: auto
+    }
+
+.ant-tooltip-placement-top .ant-tooltip-arrow, .ant-tooltip-placement-topLeft .ant-tooltip-arrow, .ant-tooltip-placement-topRight .ant-tooltip-arrow {
+    bottom: -5.07106781px
+}
+
+    .ant-tooltip-placement-top .ant-tooltip-arrow:before, .ant-tooltip-placement-topLeft .ant-tooltip-arrow:before, .ant-tooltip-placement-topRight .ant-tooltip-arrow:before {
+        -webkit-box-shadow: 3px 3px 7px rgba(0,0,0,.07);
+        box-shadow: 3px 3px 7px rgba(0,0,0,.07);
+        -webkit-transform: translateY(-6.53553391px) rotate(45deg);
+        transform: translateY(-6.53553391px) rotate(45deg)
+    }
+
+.ant-tooltip-placement-top .ant-tooltip-arrow {
+    left: 50%;
+    -webkit-transform: translateX(-50%);
+    transform: translateX(-50%)
+}
+
+.ant-tooltip-placement-topLeft .ant-tooltip-arrow {
+    left: 13px
+}
+
+.ant-tooltip-placement-topRight .ant-tooltip-arrow {
+    right: 13px
+}
+
+.ant-tooltip-placement-right .ant-tooltip-arrow, .ant-tooltip-placement-rightBottom .ant-tooltip-arrow, .ant-tooltip-placement-rightTop .ant-tooltip-arrow {
+    left: -5.07106781px
+}
+
+    .ant-tooltip-placement-right .ant-tooltip-arrow:before, .ant-tooltip-placement-rightBottom .ant-tooltip-arrow:before, .ant-tooltip-placement-rightTop .ant-tooltip-arrow:before {
+        -webkit-box-shadow: -3px 3px 7px rgba(0,0,0,.07);
+        box-shadow: -3px 3px 7px rgba(0,0,0,.07);
+        -webkit-transform: translateX(6.53553391px) rotate(45deg);
+        transform: translateX(6.53553391px) rotate(45deg)
+    }
+
+.ant-tooltip-placement-right .ant-tooltip-arrow {
+    top: 50%;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%)
+}
+
+.ant-tooltip-placement-rightTop .ant-tooltip-arrow {
+    top: 5px
+}
+
+.ant-tooltip-placement-rightBottom .ant-tooltip-arrow {
+    bottom: 5px
+}
+
+.ant-tooltip-placement-left .ant-tooltip-arrow, .ant-tooltip-placement-leftBottom .ant-tooltip-arrow, .ant-tooltip-placement-leftTop .ant-tooltip-arrow {
+    right: -5.07106781px
+}
+
+    .ant-tooltip-placement-left .ant-tooltip-arrow:before, .ant-tooltip-placement-leftBottom .ant-tooltip-arrow:before, .ant-tooltip-placement-leftTop .ant-tooltip-arrow:before {
+        -webkit-box-shadow: 3px -3px 7px rgba(0,0,0,.07);
+        box-shadow: 3px -3px 7px rgba(0,0,0,.07);
+        -webkit-transform: translateX(-6.53553391px) rotate(45deg);
+        transform: translateX(-6.53553391px) rotate(45deg)
+    }
+
+.ant-tooltip-placement-left .ant-tooltip-arrow {
+    top: 50%;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%)
+}
+
+.ant-tooltip-placement-leftTop .ant-tooltip-arrow {
+    top: 5px
+}
+
+.ant-tooltip-placement-leftBottom .ant-tooltip-arrow {
+    bottom: 5px
+}
+
+.ant-tooltip-placement-bottom .ant-tooltip-arrow, .ant-tooltip-placement-bottomLeft .ant-tooltip-arrow, .ant-tooltip-placement-bottomRight .ant-tooltip-arrow {
+    top: -5.07106781px
+}
+
+    .ant-tooltip-placement-bottom .ant-tooltip-arrow:before, .ant-tooltip-placement-bottomLeft .ant-tooltip-arrow:before, .ant-tooltip-placement-bottomRight .ant-tooltip-arrow:before {
+        -webkit-box-shadow: -3px -3px 7px rgba(0,0,0,.07);
+        box-shadow: -3px -3px 7px rgba(0,0,0,.07);
+        -webkit-transform: translateY(6.53553391px) rotate(45deg);
+        transform: translateY(6.53553391px) rotate(45deg)
+    }
+
+.ant-tooltip-placement-bottom .ant-tooltip-arrow {
+    left: 50%;
+    -webkit-transform: translateX(-50%);
+    transform: translateX(-50%)
+}
+
+.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow {
+    left: 13px
+}
+
+.ant-tooltip-placement-bottomRight .ant-tooltip-arrow {
+    right: 13px
+}
+
+.ant-transfer-customize-list {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex
+}
+
+    .ant-transfer-customize-list .ant-transfer-operation {
+        -webkit-box-flex: 0;
+        -ms-flex: none;
+        flex: none;
+        -ms-flex-item-align: center;
+        align-self: center
+    }
+
+    .ant-transfer-customize-list .ant-transfer-list {
+        -webkit-box-flex: 1;
+        -ms-flex: auto;
+        flex: auto;
+        width: auto;
+        height: auto;
+        min-height: 200px
+    }
+
+    .ant-transfer-customize-list .ant-transfer-list-body-with-search {
+        padding-top: 0
+    }
+
+    .ant-transfer-customize-list .ant-transfer-list-body-search-wrapper {
+        position: relative;
+        padding-bottom: 0
+    }
+
+    .ant-transfer-customize-list .ant-transfer-list-body-customize-wrapper {
+        padding: 12px
+    }
+
+    .ant-transfer-customize-list .ant-table-wrapper .ant-table-small {
+        border: 0;
+        border-radius: 0
+    }
+
+        .ant-transfer-customize-list .ant-table-wrapper .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th {
+            background: #fafafa
+        }
+
+        .ant-transfer-customize-list .ant-table-wrapper .ant-table-small > .ant-table-content .ant-table-row:last-child td {
+            border-bottom: 1px solid #e8e8e8
+        }
+
+        .ant-transfer-customize-list .ant-table-wrapper .ant-table-small .ant-table-body {
+            margin: 0
+        }
+
+    .ant-transfer-customize-list .ant-table-wrapper .ant-table-pagination.ant-pagination {
+        margin: 16px 0 4px
+    }
+
+.ant-transfer {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative
+}
+
+.ant-transfer-disabled .ant-transfer-list {
+    background: #f5f5f5
+}
+
+.ant-transfer-list {
+    position: relative;
+    display: inline-block;
+    width: 180px;
+    height: 200px;
+    padding-top: 40px;
+    vertical-align: middle;
+    border: 1px solid #d9d9d9;
+    border-radius: 2px
+}
+
+.ant-transfer-list-with-footer {
+    padding-bottom: 34px
+}
+
+.ant-transfer-list-search {
+    padding: 0 24px 0 8px
+}
+
+.ant-transfer-list-search-action {
+    position: absolute;
+    top: 12px;
+    right: 12px;
+    bottom: 12px;
+    width: 28px;
+    color: rgba(0,0,0,.25);
+    line-height: 32px;
+    text-align: center
+}
+
+    .ant-transfer-list-search-action .anticon {
+        color: rgba(0,0,0,.25);
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+        .ant-transfer-list-search-action .anticon:hover {
+            color: rgba(0,0,0,.45)
+        }
+
+span.ant-transfer-list-search-action {
+    pointer-events: none
+}
+
+.ant-transfer-list-header {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    padding: 8px 12px 9px;
+    overflow: hidden;
+    color: rgba(0,0,0,.65);
+    background: #fff;
+    border-bottom: 1px solid #e8e8e8;
+    border-radius: 2px 2px 0 0
+}
+
+.ant-transfer-list-header-title {
+    position: absolute;
+    right: 12px
+}
+
+.ant-transfer-list-header .ant-checkbox-wrapper + span {
+    padding-left: 8px
+}
+
+.ant-transfer-list-body {
+    position: relative;
+    height: 100%;
+    font-size: 14px
+}
+
+.ant-transfer-list-body-search-wrapper {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    padding: 12px
+}
+
+.ant-transfer-list-body-with-search {
+    padding-top: 56px
+}
+
+.ant-transfer-list-content {
+    height: 100%;
+    margin: 0;
+    padding: 0;
+    overflow: auto;
+    list-style: none
+}
+
+    .ant-transfer-list-content > .LazyLoad {
+        -webkit-animation: transferHighlightIn 1s;
+        animation: transferHighlightIn 1s
+    }
+
+.ant-transfer-list-content-item {
+    min-height: 32px;
+    padding: 6px 12px;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-transfer-list-content-item > span {
+        padding-right: 0
+    }
+
+.ant-transfer-list-content-item-text {
+    padding-left: 8px
+}
+
+.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover {
+    background-color: #fff2e8;
+    cursor: pointer
+}
+
+.ant-transfer-list-content-item-disabled {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed
+}
+
+.ant-transfer-list-body-not-found {
+    position: absolute;
+    top: 50%;
+    width: 100%;
+    padding-top: 0;
+    color: rgba(0,0,0,.25);
+    text-align: center;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%)
+}
+
+.ant-transfer-list-body-with-search .ant-transfer-list-body-not-found {
+    margin-top: 16px
+}
+
+.ant-transfer-list-footer {
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    border-radius: 0 0 2px 2px
+}
+
+.ant-transfer-operation {
+    display: inline-block;
+    margin: 0 8px;
+    overflow: hidden;
+    vertical-align: middle
+}
+
+    .ant-transfer-operation .ant-btn {
+        display: block
+    }
+
+        .ant-transfer-operation .ant-btn:first-child {
+            margin-bottom: 4px
+        }
+
+        .ant-transfer-operation .ant-btn .anticon {
+            font-size: 12px
+        }
+
+@-webkit-keyframes transferHighlightIn {
+    0% {
+        background: #ffd8bf
+    }
+
+    to {
+        background: transparent
+    }
+}
+
+@keyframes transferHighlightIn {
+    0% {
+        background: #ffd8bf
+    }
+
+    to {
+        background: transparent
+    }
+}
+
+.ant-tree.ant-tree-directory {
+    position: relative
+}
+
+    .ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-switcher, .ant-tree.ant-tree-directory > li span.ant-tree-switcher {
+        position: relative;
+        z-index: 1
+    }
+
+        .ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-switcher.ant-tree-switcher-noop, .ant-tree.ant-tree-directory > li span.ant-tree-switcher.ant-tree-switcher-noop {
+            pointer-events: none
+        }
+
+    .ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-checkbox, .ant-tree.ant-tree-directory > li span.ant-tree-checkbox {
+        position: relative;
+        z-index: 1
+    }
+
+    .ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper, .ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper {
+        border-radius: 0;
+        -webkit-user-select: none;
+        -moz-user-select: none;
+        -ms-user-select: none;
+        user-select: none
+    }
+
+        .ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover, .ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover {
+            background: transparent
+        }
+
+            .ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover:before, .ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover:before {
+                background: #fff2e8
+            }
+
+        .ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper.ant-tree-node-selected, .ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper.ant-tree-node-selected {
+            color: #fff;
+            background: transparent
+        }
+
+        .ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:before, .ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:before {
+            position: absolute;
+            right: 0;
+            left: 0;
+            height: 24px;
+            -webkit-transition: all .3s;
+            transition: all .3s;
+            content: ""
+        }
+
+        .ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper > span, .ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper > span {
+            position: relative;
+            z-index: 1
+        }
+
+    .ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-switcher, .ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-switcher {
+        color: #fff
+    }
+
+    .ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner, .ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner {
+        border-color: #fa541c
+    }
+
+    .ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked:after, .ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked:after {
+        border-color: #fff
+    }
+
+    .ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner, .ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner {
+        background: #fff
+    }
+
+        .ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after, .ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after {
+            border-color: #fa541c
+        }
+
+    .ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper:before, .ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper:before {
+        background: #fa541c
+    }
+
+.ant-tree-checkbox {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    top: -.09em;
+    display: inline-block;
+    line-height: 1;
+    white-space: nowrap;
+    vertical-align: middle;
+    outline: none;
+    cursor: pointer
+}
+
+    .ant-tree-checkbox-input:focus + .ant-tree-checkbox-inner, .ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner, .ant-tree-checkbox:hover .ant-tree-checkbox-inner {
+        border-color: #fa541c
+    }
+
+.ant-tree-checkbox-checked:after {
+    top: 0;
+    height: 100%;
+    border: 1px solid #fa541c;
+    border-radius: 2px;
+    visibility: hidden;
+    -webkit-animation: antCheckboxEffect .36s ease-in-out;
+    animation: antCheckboxEffect .36s ease-in-out;
+    -webkit-animation-fill-mode: backwards;
+    animation-fill-mode: backwards;
+    content: ""
+}
+
+.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox:after, .ant-tree-checkbox:hover:after {
+    visibility: visible
+}
+
+.ant-tree-checkbox-inner {
+    position: relative;
+    top: 0;
+    left: 0;
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-color: #fff;
+    border: 1px solid #d9d9d9;
+    border-radius: 2px;
+    border-collapse: separate;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-tree-checkbox-inner:after {
+        position: absolute;
+        top: 50%;
+        left: 22%;
+        display: table;
+        width: 5.71428571px;
+        height: 9.14285714px;
+        border: 2px solid #fff;
+        border-top: 0;
+        border-left: 0;
+        -webkit-transform: rotate(45deg) scale(0) translate(-50%,-50%);
+        transform: rotate(45deg) scale(0) translate(-50%,-50%);
+        opacity: 0;
+        -webkit-transition: all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;
+        transition: all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;
+        content: " "
+    }
+
+.ant-tree-checkbox-input {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 1;
+    width: 100%;
+    height: 100%;
+    cursor: pointer;
+    opacity: 0
+}
+
+.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after {
+    position: absolute;
+    display: table;
+    border: 2px solid #fff;
+    border-top: 0;
+    border-left: 0;
+    -webkit-transform: rotate(45deg) scale(1) translate(-50%,-50%);
+    transform: rotate(45deg) scale(1) translate(-50%,-50%);
+    opacity: 1;
+    -webkit-transition: all .2s cubic-bezier(.12,.4,.29,1.46) .1s;
+    transition: all .2s cubic-bezier(.12,.4,.29,1.46) .1s;
+    content: " "
+}
+
+.ant-tree-checkbox-checked .ant-tree-checkbox-inner {
+    background-color: #fa541c;
+    border-color: #fa541c
+}
+
+.ant-tree-checkbox-disabled {
+    cursor: not-allowed
+}
+
+    .ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after {
+        border-color: rgba(0,0,0,.25);
+        -webkit-animation-name: none;
+        animation-name: none
+    }
+
+    .ant-tree-checkbox-disabled .ant-tree-checkbox-input {
+        cursor: not-allowed
+    }
+
+    .ant-tree-checkbox-disabled .ant-tree-checkbox-inner {
+        background-color: #f5f5f5;
+        border-color: #d9d9d9 !important
+    }
+
+        .ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after {
+            border-color: #f5f5f5;
+            border-collapse: separate;
+            -webkit-animation-name: none;
+            animation-name: none
+        }
+
+    .ant-tree-checkbox-disabled + span {
+        color: rgba(0,0,0,.25);
+        cursor: not-allowed
+    }
+
+    .ant-tree-checkbox-disabled:hover:after, .ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-disabled:after {
+        visibility: hidden
+    }
+
+.ant-tree-checkbox-wrapper {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    display: inline-block;
+    line-height: unset;
+    cursor: pointer
+}
+
+    .ant-tree-checkbox-wrapper.ant-tree-checkbox-wrapper-disabled {
+        cursor: not-allowed
+    }
+
+    .ant-tree-checkbox-wrapper + .ant-tree-checkbox-wrapper {
+        margin-left: 8px
+    }
+
+.ant-tree-checkbox + span {
+    padding-right: 8px;
+    padding-left: 8px
+}
+
+.ant-tree-checkbox-group {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    display: inline-block
+}
+
+.ant-tree-checkbox-group-item {
+    display: inline-block;
+    margin-right: 8px
+}
+
+    .ant-tree-checkbox-group-item:last-child {
+        margin-right: 0
+    }
+
+    .ant-tree-checkbox-group-item + .ant-tree-checkbox-group-item {
+        margin-left: 0
+    }
+
+.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner {
+    background-color: #fff;
+    border-color: #d9d9d9
+}
+
+    .ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner:after {
+        top: 50%;
+        left: 50%;
+        width: 8px;
+        height: 8px;
+        background-color: #fa541c;
+        border: 0;
+        -webkit-transform: translate(-50%,-50%) scale(1);
+        transform: translate(-50%,-50%) scale(1);
+        opacity: 1;
+        content: " "
+    }
+
+.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after {
+    background-color: rgba(0,0,0,.25);
+    border-color: rgba(0,0,0,.25)
+}
+
+.ant-tree {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    margin: 0;
+    padding: 0
+}
+
+.ant-tree-checkbox-checked:after {
+    position: absolute;
+    top: 16.67%;
+    left: 0;
+    width: 100%;
+    height: 66.67%
+}
+
+.ant-tree ol, .ant-tree ul {
+    margin: 0;
+    padding: 0;
+    list-style: none
+}
+
+.ant-tree li {
+    margin: 0;
+    padding: 4px 0;
+    white-space: nowrap;
+    list-style: none;
+    outline: 0
+}
+
+    .ant-tree li span[draggable=true], .ant-tree li span[draggable] {
+        line-height: 20px;
+        border-top: 2px solid transparent;
+        border-bottom: 2px solid transparent;
+        -webkit-user-select: none;
+        -moz-user-select: none;
+        -ms-user-select: none;
+        user-select: none;
+        -khtml-user-drag: element;
+        -webkit-user-drag: element
+    }
+
+    .ant-tree li.drag-over > span[draggable] {
+        color: #fff;
+        background-color: #fa541c;
+        opacity: .8
+    }
+
+    .ant-tree li.drag-over-gap-top > span[draggable] {
+        border-top-color: #fa541c
+    }
+
+    .ant-tree li.drag-over-gap-bottom > span[draggable] {
+        border-bottom-color: #fa541c
+    }
+
+    .ant-tree li.filter-node > span {
+        color: #f5222d !important;
+        font-weight: 500 !important
+    }
+
+    .ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-loading-icon, .ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-loading-icon {
+        position: absolute;
+        left: 0;
+        display: inline-block;
+        width: 24px;
+        height: 24px;
+        color: #fa541c;
+        font-size: 14px;
+        -webkit-transform: none;
+        transform: none
+    }
+
+        .ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-loading-icon svg, .ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-loading-icon svg {
+            position: absolute;
+            top: 0;
+            right: 0;
+            bottom: 0;
+            left: 0;
+            margin: auto
+        }
+
+:root .ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_close:after, :root .ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_open:after {
+    opacity: 0
+}
+
+.ant-tree li ul {
+    margin: 0;
+    padding: 0 0 0 18px
+}
+
+.ant-tree li .ant-tree-node-content-wrapper {
+    display: inline-block;
+    height: 24px;
+    margin: 0;
+    padding: 0 5px;
+    color: rgba(0,0,0,.65);
+    line-height: 24px;
+    text-decoration: none;
+    vertical-align: top;
+    border-radius: 2px;
+    cursor: pointer;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-tree li .ant-tree-node-content-wrapper:hover {
+        background-color: #fff2e8
+    }
+
+    .ant-tree li .ant-tree-node-content-wrapper.ant-tree-node-selected {
+        background-color: #ffd8bf
+    }
+
+.ant-tree li span.ant-tree-checkbox {
+    top: auto;
+    height: 24px;
+    margin: 0 4px 0 2px;
+    padding: 4px 0
+}
+
+.ant-tree li span.ant-tree-iconEle, .ant-tree li span.ant-tree-switcher {
+    display: inline-block;
+    width: 24px;
+    height: 24px;
+    margin: 0;
+    line-height: 24px;
+    text-align: center;
+    vertical-align: top;
+    border: 0 none;
+    outline: none;
+    cursor: pointer
+}
+
+    .ant-tree li span.ant-tree-iconEle:empty {
+        display: none
+    }
+
+.ant-tree li span.ant-tree-switcher {
+    position: relative
+}
+
+    .ant-tree li span.ant-tree-switcher.ant-tree-switcher-noop {
+        cursor: default
+    }
+
+    .ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon, .ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon {
+        font-size: 12px;
+        font-size: 10px\9;
+        -webkit-transform: scale(.83333333) rotate(0deg);
+        transform: scale(.83333333) rotate(0deg);
+        display: inline-block;
+        font-weight: 700
+    }
+
+:root .ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon, :root .ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon {
+    font-size: 12px
+}
+
+.ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon svg, .ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon svg {
+    -webkit-transition: -webkit-transform .3s;
+    transition: -webkit-transform .3s;
+    transition: transform .3s;
+    transition: transform .3s,-webkit-transform .3s
+}
+
+.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon, .ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon {
+    font-size: 12px;
+    font-size: 10px\9;
+    -webkit-transform: scale(.83333333) rotate(0deg);
+    transform: scale(.83333333) rotate(0deg);
+    display: inline-block;
+    font-weight: 700
+}
+
+:root .ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon, :root .ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon {
+    font-size: 12px
+}
+
+.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon svg, .ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon svg {
+    -webkit-transition: -webkit-transform .3s;
+    transition: -webkit-transform .3s;
+    transition: transform .3s;
+    transition: transform .3s,-webkit-transform .3s
+}
+
+.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon svg {
+    -webkit-transform: rotate(-90deg);
+    transform: rotate(-90deg)
+}
+
+.ant-tree li:last-child > span.ant-tree-iconEle:before, .ant-tree li:last-child > span.ant-tree-switcher:before {
+    display: none
+}
+
+.ant-tree > li:first-child {
+    padding-top: 7px
+}
+
+.ant-tree > li:last-child {
+    padding-bottom: 7px
+}
+
+.ant-tree-child-tree > li:first-child {
+    padding-top: 8px
+}
+
+.ant-tree-child-tree > li:last-child {
+    padding-bottom: 0
+}
+
+li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper, li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper span, li.ant-tree-treenode-disabled > span:not(.ant-tree-switcher) {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed
+}
+
+    li.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper:hover {
+        background: transparent
+    }
+
+.ant-tree-icon__close, .ant-tree-icon__open {
+    margin-right: 2px;
+    vertical-align: top
+}
+
+.ant-tree.ant-tree-show-line li {
+    position: relative
+}
+
+    .ant-tree.ant-tree-show-line li span.ant-tree-switcher {
+        color: rgba(0,0,0,.45);
+        background: #fff
+    }
+
+        .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher-noop .ant-select-switcher-icon, .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher-noop .ant-tree-switcher-icon {
+            display: inline-block;
+            font-weight: 400;
+            font-size: 12px
+        }
+
+            .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher-noop .ant-select-switcher-icon svg, .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher-noop .ant-tree-switcher-icon svg {
+                -webkit-transition: -webkit-transform .3s;
+                transition: -webkit-transform .3s;
+                transition: transform .3s;
+                transition: transform .3s,-webkit-transform .3s
+            }
+
+        .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon, .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon {
+            display: inline-block;
+            font-weight: 400;
+            font-size: 12px
+        }
+
+            .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon svg, .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon svg {
+                -webkit-transition: -webkit-transform .3s;
+                transition: -webkit-transform .3s;
+                transition: transform .3s;
+                transition: transform .3s,-webkit-transform .3s
+            }
+
+        .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon, .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon {
+            display: inline-block;
+            font-weight: 400;
+            font-size: 12px
+        }
+
+            .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon svg, .ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon svg {
+                -webkit-transition: -webkit-transform .3s;
+                transition: -webkit-transform .3s;
+                transition: transform .3s;
+                transition: transform .3s,-webkit-transform .3s
+            }
+
+    .ant-tree.ant-tree-show-line li:not(:last-child):before {
+        position: absolute;
+        left: 12px;
+        width: 1px;
+        height: 100%;
+        height: calc(100% - 22px);
+        margin: 22px 0 0;
+        border-left: 1px solid #d9d9d9;
+        content: " "
+    }
+
+.ant-tree.ant-tree-icon-hide .ant-tree-treenode-loading .ant-tree-iconEle {
+    display: none
+}
+
+.ant-tree.ant-tree-block-node li .ant-tree-node-content-wrapper {
+    width: calc(100% - 24px)
+}
+
+.ant-tree.ant-tree-block-node li span.ant-tree-checkbox + .ant-tree-node-content-wrapper {
+    width: calc(100% - 46px)
+}
+
+.ant-select-tree-checkbox {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    position: relative;
+    top: -.09em;
+    display: inline-block;
+    line-height: 1;
+    white-space: nowrap;
+    vertical-align: middle;
+    outline: none;
+    cursor: pointer
+}
+
+    .ant-select-tree-checkbox-input:focus + .ant-select-tree-checkbox-inner, .ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-inner, .ant-select-tree-checkbox:hover .ant-select-tree-checkbox-inner {
+        border-color: #fa541c
+    }
+
+.ant-select-tree-checkbox-checked:after {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    border: 1px solid #fa541c;
+    border-radius: 2px;
+    visibility: hidden;
+    -webkit-animation: antCheckboxEffect .36s ease-in-out;
+    animation: antCheckboxEffect .36s ease-in-out;
+    -webkit-animation-fill-mode: backwards;
+    animation-fill-mode: backwards;
+    content: ""
+}
+
+.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox:after, .ant-select-tree-checkbox:hover:after {
+    visibility: visible
+}
+
+.ant-select-tree-checkbox-inner {
+    position: relative;
+    top: 0;
+    left: 0;
+    display: block;
+    width: 16px;
+    height: 16px;
+    background-color: #fff;
+    border: 1px solid #d9d9d9;
+    border-radius: 2px;
+    border-collapse: separate;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-select-tree-checkbox-inner:after {
+        position: absolute;
+        top: 50%;
+        left: 22%;
+        display: table;
+        width: 5.71428571px;
+        height: 9.14285714px;
+        border: 2px solid #fff;
+        border-top: 0;
+        border-left: 0;
+        -webkit-transform: rotate(45deg) scale(0) translate(-50%,-50%);
+        transform: rotate(45deg) scale(0) translate(-50%,-50%);
+        opacity: 0;
+        -webkit-transition: all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;
+        transition: all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;
+        content: " "
+    }
+
+.ant-select-tree-checkbox-input {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 1;
+    width: 100%;
+    height: 100%;
+    cursor: pointer;
+    opacity: 0
+}
+
+.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:after {
+    position: absolute;
+    display: table;
+    border: 2px solid #fff;
+    border-top: 0;
+    border-left: 0;
+    -webkit-transform: rotate(45deg) scale(1) translate(-50%,-50%);
+    transform: rotate(45deg) scale(1) translate(-50%,-50%);
+    opacity: 1;
+    -webkit-transition: all .2s cubic-bezier(.12,.4,.29,1.46) .1s;
+    transition: all .2s cubic-bezier(.12,.4,.29,1.46) .1s;
+    content: " "
+}
+
+.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner {
+    background-color: #fa541c;
+    border-color: #fa541c
+}
+
+.ant-select-tree-checkbox-disabled {
+    cursor: not-allowed
+}
+
+    .ant-select-tree-checkbox-disabled.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner:after {
+        border-color: rgba(0,0,0,.25);
+        -webkit-animation-name: none;
+        animation-name: none
+    }
+
+    .ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-input {
+        cursor: not-allowed
+    }
+
+    .ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner {
+        background-color: #f5f5f5;
+        border-color: #d9d9d9 !important
+    }
+
+        .ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner:after {
+            border-color: #f5f5f5;
+            border-collapse: separate;
+            -webkit-animation-name: none;
+            animation-name: none
+        }
+
+    .ant-select-tree-checkbox-disabled + span {
+        color: rgba(0,0,0,.25);
+        cursor: not-allowed
+    }
+
+    .ant-select-tree-checkbox-disabled:hover:after, .ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-disabled:after {
+        visibility: hidden
+    }
+
+.ant-select-tree-checkbox-wrapper {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    display: inline-block;
+    line-height: unset;
+    cursor: pointer
+}
+
+    .ant-select-tree-checkbox-wrapper.ant-select-tree-checkbox-wrapper-disabled {
+        cursor: not-allowed
+    }
+
+    .ant-select-tree-checkbox-wrapper + .ant-select-tree-checkbox-wrapper {
+        margin-left: 8px
+    }
+
+.ant-select-tree-checkbox + span {
+    padding-right: 8px;
+    padding-left: 8px
+}
+
+.ant-select-tree-checkbox-group {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    display: inline-block
+}
+
+.ant-select-tree-checkbox-group-item {
+    display: inline-block;
+    margin-right: 8px
+}
+
+    .ant-select-tree-checkbox-group-item:last-child {
+        margin-right: 0
+    }
+
+    .ant-select-tree-checkbox-group-item + .ant-select-tree-checkbox-group-item {
+        margin-left: 0
+    }
+
+.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner {
+    background-color: #fff;
+    border-color: #d9d9d9
+}
+
+    .ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner:after {
+        top: 50%;
+        left: 50%;
+        width: 8px;
+        height: 8px;
+        background-color: #fa541c;
+        border: 0;
+        -webkit-transform: translate(-50%,-50%) scale(1);
+        transform: translate(-50%,-50%) scale(1);
+        opacity: 1;
+        content: " "
+    }
+
+.ant-select-tree-checkbox-indeterminate.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner:after {
+    background-color: rgba(0,0,0,.25);
+    border-color: rgba(0,0,0,.25)
+}
+
+.ant-select-tree {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    margin: 0;
+    margin-top: -4px;
+    padding: 0 4px
+}
+
+    .ant-select-tree li {
+        margin: 8px 0;
+        padding: 0;
+        white-space: nowrap;
+        list-style: none;
+        outline: 0
+    }
+
+        .ant-select-tree li.filter-node > span {
+            font-weight: 500
+        }
+
+        .ant-select-tree li ul {
+            margin: 0;
+            padding: 0 0 0 18px
+        }
+
+        .ant-select-tree li .ant-select-tree-node-content-wrapper {
+            display: inline-block;
+            width: calc(100% - 24px);
+            margin: 0;
+            padding: 3px 5px;
+            color: rgba(0,0,0,.65);
+            text-decoration: none;
+            border-radius: 2px;
+            cursor: pointer;
+            -webkit-transition: all .3s;
+            transition: all .3s
+        }
+
+            .ant-select-tree li .ant-select-tree-node-content-wrapper:hover {
+                background-color: #fff2e8
+            }
+
+            .ant-select-tree li .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected {
+                background-color: #ffd8bf
+            }
+
+        .ant-select-tree li span.ant-select-tree-checkbox {
+            margin: 0 4px 0 0
+        }
+
+            .ant-select-tree li span.ant-select-tree-checkbox + .ant-select-tree-node-content-wrapper {
+                width: calc(100% - 46px)
+            }
+
+        .ant-select-tree li span.ant-select-tree-iconEle, .ant-select-tree li span.ant-select-tree-switcher {
+            display: inline-block;
+            width: 24px;
+            height: 24px;
+            margin: 0;
+            line-height: 22px;
+            text-align: center;
+            vertical-align: middle;
+            border: 0 none;
+            outline: none;
+            cursor: pointer
+        }
+
+        .ant-select-tree li span.ant-select-icon_loading .ant-select-switcher-loading-icon {
+            position: absolute;
+            left: 0;
+            display: inline-block;
+            color: #fa541c;
+            font-size: 14px;
+            -webkit-transform: none;
+            transform: none
+        }
+
+            .ant-select-tree li span.ant-select-icon_loading .ant-select-switcher-loading-icon svg {
+                position: absolute;
+                top: 0;
+                right: 0;
+                bottom: 0;
+                left: 0;
+                margin: auto
+            }
+
+        .ant-select-tree li span.ant-select-tree-switcher {
+            position: relative
+        }
+
+            .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher-noop {
+                cursor: auto
+            }
+
+            .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-icon, .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-tree-switcher-icon {
+                font-size: 12px;
+                font-size: 10px\9;
+                -webkit-transform: scale(.83333333) rotate(0deg);
+                transform: scale(.83333333) rotate(0deg);
+                display: inline-block;
+                font-weight: 700
+            }
+
+:root .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-icon, :root .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-tree-switcher-icon {
+    font-size: 12px
+}
+
+.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-icon svg, .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-tree-switcher-icon svg {
+    -webkit-transition: -webkit-transform .3s;
+    transition: -webkit-transform .3s;
+    transition: transform .3s;
+    transition: transform .3s,-webkit-transform .3s
+}
+
+.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-icon, .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-tree-switcher-icon {
+    font-size: 12px;
+    font-size: 10px\9;
+    -webkit-transform: scale(.83333333) rotate(0deg);
+    transform: scale(.83333333) rotate(0deg);
+    display: inline-block;
+    font-weight: 700
+}
+
+:root .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-icon, :root .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-tree-switcher-icon {
+    font-size: 12px
+}
+
+.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-icon svg, .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-tree-switcher-icon svg {
+    -webkit-transition: -webkit-transform .3s;
+    transition: -webkit-transform .3s;
+    transition: transform .3s;
+    transition: transform .3s,-webkit-transform .3s
+}
+
+.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-icon svg {
+    -webkit-transform: rotate(-90deg);
+    transform: rotate(-90deg)
+}
+
+.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-loading-icon, .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-loading-icon {
+    position: absolute;
+    left: 0;
+    display: inline-block;
+    width: 24px;
+    height: 24px;
+    color: #fa541c;
+    font-size: 14px;
+    -webkit-transform: none;
+    transform: none
+}
+
+    .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-loading-icon svg, .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-loading-icon svg {
+        position: absolute;
+        top: 0;
+        right: 0;
+        bottom: 0;
+        left: 0;
+        margin: auto
+    }
+
+.ant-select-tree-child-tree, .ant-select-tree .ant-select-tree-treenode-loading .ant-select-tree-iconEle {
+    display: none
+}
+
+.ant-select-tree-child-tree-open {
+    display: block
+}
+
+li.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper, li.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper span, li.ant-select-tree-treenode-disabled > span:not(.ant-select-tree-switcher) {
+    color: rgba(0,0,0,.25);
+    cursor: not-allowed
+}
+
+    li.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper:hover {
+        background: transparent
+    }
+
+.ant-select-tree-icon__close, .ant-select-tree-icon__open {
+    margin-right: 2px;
+    vertical-align: top
+}
+
+.ant-select-tree-dropdown {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum"
+}
+
+    .ant-select-tree-dropdown .ant-select-dropdown-search {
+        position: sticky;
+        top: 0;
+        z-index: 1;
+        display: block;
+        padding: 4px;
+        background: #fff
+    }
+
+        .ant-select-tree-dropdown .ant-select-dropdown-search .ant-select-search__field__wrap {
+            width: 100%
+        }
+
+        .ant-select-tree-dropdown .ant-select-dropdown-search .ant-select-search__field {
+            -webkit-box-sizing: border-box;
+            box-sizing: border-box;
+            width: 100%;
+            padding: 4px 7px;
+            border: 1px solid #d9d9d9;
+            border-radius: 4px;
+            outline: none
+        }
+
+        .ant-select-tree-dropdown .ant-select-dropdown-search.ant-select-search--hide {
+            display: none
+        }
+
+    .ant-select-tree-dropdown .ant-select-not-found {
+        display: block;
+        padding: 7px 16px;
+        color: rgba(0,0,0,.25);
+        cursor: not-allowed
+    }
+
+.ant-upload {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    outline: 0
+}
+
+    .ant-upload p {
+        margin: 0
+    }
+
+.ant-upload-btn {
+    display: block;
+    width: 100%;
+    outline: none
+}
+
+.ant-upload input[type=file] {
+    cursor: pointer
+}
+
+.ant-upload.ant-upload-select {
+    display: inline-block
+}
+
+.ant-upload.ant-upload-disabled {
+    cursor: not-allowed
+}
+
+.ant-upload.ant-upload-select-picture-card {
+    display: table;
+    float: left;
+    width: 104px;
+    height: 104px;
+    margin-right: 8px;
+    margin-bottom: 8px;
+    text-align: center;
+    vertical-align: top;
+    background-color: #fafafa;
+    border: 1px dashed #d9d9d9;
+    border-radius: 2px;
+    cursor: pointer;
+    -webkit-transition: border-color .3s ease;
+    transition: border-color .3s ease
+}
+
+    .ant-upload.ant-upload-select-picture-card > .ant-upload {
+        display: table-cell;
+        width: 100%;
+        height: 100%;
+        padding: 8px;
+        text-align: center;
+        vertical-align: middle
+    }
+
+    .ant-upload.ant-upload-select-picture-card:hover {
+        border-color: #fa541c
+    }
+
+.ant-upload.ant-upload-drag {
+    position: relative;
+    width: 100%;
+    height: 100%;
+    text-align: center;
+    background: #fafafa;
+    border: 1px dashed #d9d9d9;
+    border-radius: 2px;
+    cursor: pointer;
+    -webkit-transition: border-color .3s;
+    transition: border-color .3s
+}
+
+    .ant-upload.ant-upload-drag .ant-upload {
+        padding: 16px 0
+    }
+
+    .ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled) {
+        border-color: #d4380d
+    }
+
+    .ant-upload.ant-upload-drag.ant-upload-disabled {
+        cursor: not-allowed
+    }
+
+    .ant-upload.ant-upload-drag .ant-upload-btn {
+        display: table;
+        height: 100%
+    }
+
+    .ant-upload.ant-upload-drag .ant-upload-drag-container {
+        display: table-cell;
+        vertical-align: middle
+    }
+
+    .ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover {
+        border-color: #ff7a45
+    }
+
+    .ant-upload.ant-upload-drag p.ant-upload-drag-icon {
+        margin-bottom: 20px
+    }
+
+        .ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon {
+            color: #ff7a45;
+            font-size: 48px
+        }
+
+    .ant-upload.ant-upload-drag p.ant-upload-text {
+        margin: 0 0 4px;
+        color: rgba(0,0,0,.85);
+        font-size: 16px
+    }
+
+    .ant-upload.ant-upload-drag p.ant-upload-hint {
+        color: rgba(0,0,0,.45);
+        font-size: 14px
+    }
+
+    .ant-upload.ant-upload-drag .anticon-plus {
+        color: rgba(0,0,0,.25);
+        font-size: 30px;
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+        .ant-upload.ant-upload-drag .anticon-plus:hover, .ant-upload.ant-upload-drag:hover .anticon-plus {
+            color: rgba(0,0,0,.45)
+        }
+
+.ant-upload-picture-card-wrapper {
+    zoom: 1;
+    display: inline-block;
+    width: 100%
+}
+
+    .ant-upload-picture-card-wrapper:after, .ant-upload-picture-card-wrapper:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-upload-picture-card-wrapper:after {
+        clear: both
+    }
+
+.ant-upload-list {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin: 0;
+    padding: 0;
+    color: rgba(0,0,0,.65);
+    font-size: 14px;
+    font-variant: tabular-nums;
+    line-height: 1.5;
+    list-style: none;
+    -webkit-font-feature-settings: "tnum";
+    font-feature-settings: "tnum";
+    zoom: 1
+}
+
+    .ant-upload-list:after, .ant-upload-list:before {
+        display: table;
+        content: ""
+    }
+
+    .ant-upload-list:after {
+        clear: both
+    }
+
+.ant-upload-list-item-list-type-text:hover .ant-upload-list-item-name-icon-count-1 {
+    padding-right: 14px
+}
+
+.ant-upload-list-item-list-type-text:hover .ant-upload-list-item-name-icon-count-2 {
+    padding-right: 28px
+}
+
+.ant-upload-list-item {
+    position: relative;
+    height: 22px;
+    margin-top: 8px;
+    font-size: 14px
+}
+
+.ant-upload-list-item-name {
+    display: inline-block;
+    width: 100%;
+    padding-left: 22px;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis
+}
+
+.ant-upload-list-item-name-icon-count-1 {
+    padding-right: 14px
+}
+
+.ant-upload-list-item-card-actions {
+    position: absolute;
+    right: 0;
+    opacity: 0
+}
+
+    .ant-upload-list-item-card-actions.picture {
+        top: 25px;
+        line-height: 1;
+        opacity: 1
+    }
+
+    .ant-upload-list-item-card-actions .anticon {
+        padding-right: 6px;
+        color: rgba(0,0,0,.45)
+    }
+
+.ant-upload-list-item-info {
+    height: 100%;
+    padding: 0 12px 0 4px;
+    -webkit-transition: background-color .3s;
+    transition: background-color .3s
+}
+
+    .ant-upload-list-item-info > span {
+        display: block;
+        width: 100%;
+        height: 100%
+    }
+
+    .ant-upload-list-item-info .anticon-loading, .ant-upload-list-item-info .anticon-paper-clip {
+        position: absolute;
+        top: 5px;
+        color: rgba(0,0,0,.45);
+        font-size: 14px
+    }
+
+.ant-upload-list-item .anticon-close {
+    display: inline-block;
+    font-size: 12px;
+    font-size: 10px\9;
+    -webkit-transform: scale(.83333333) rotate(0deg);
+    transform: scale(.83333333) rotate(0deg);
+    position: absolute;
+    top: 6px;
+    right: 4px;
+    color: rgba(0,0,0,.45);
+    line-height: 0;
+    cursor: pointer;
+    opacity: 0;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+:root .ant-upload-list-item .anticon-close {
+    font-size: 12px
+}
+
+.ant-upload-list-item .anticon-close:hover {
+    color: rgba(0,0,0,.65)
+}
+
+.ant-upload-list-item:hover .ant-upload-list-item-info {
+    background-color: #fff2e8
+}
+
+.ant-upload-list-item:hover .ant-upload-list-item-card-actions, .ant-upload-list-item:hover .anticon-close {
+    opacity: 1
+}
+
+.ant-upload-list-item-error, .ant-upload-list-item-error .ant-upload-list-item-name, .ant-upload-list-item-error .anticon-paper-clip {
+    color: #f5222d
+}
+
+    .ant-upload-list-item-error .ant-upload-list-item-card-actions {
+        opacity: 1
+    }
+
+        .ant-upload-list-item-error .ant-upload-list-item-card-actions .anticon {
+            color: #f5222d
+        }
+
+.ant-upload-list-item-progress {
+    position: absolute;
+    bottom: -12px;
+    width: 100%;
+    padding-left: 26px;
+    font-size: 14px;
+    line-height: 0
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item, .ant-upload-list-picture .ant-upload-list-item {
+    position: relative;
+    height: 66px;
+    padding: 8px;
+    border: 1px solid #d9d9d9;
+    border-radius: 2px
+}
+
+    .ant-upload-list-picture-card .ant-upload-list-item:hover, .ant-upload-list-picture .ant-upload-list-item:hover {
+        background: transparent
+    }
+
+.ant-upload-list-picture-card .ant-upload-list-item-error, .ant-upload-list-picture .ant-upload-list-item-error {
+    border-color: #f5222d
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-info, .ant-upload-list-picture .ant-upload-list-item-info {
+    padding: 0
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info, .ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info {
+    background: transparent
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-uploading, .ant-upload-list-picture .ant-upload-list-item-uploading {
+    border-style: dashed
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-thumbnail, .ant-upload-list-picture .ant-upload-list-item-thumbnail {
+    position: absolute;
+    top: 8px;
+    left: 8px;
+    width: 48px;
+    height: 48px;
+    font-size: 26px;
+    line-height: 54px;
+    text-align: center;
+    opacity: .8
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-icon, .ant-upload-list-picture .ant-upload-list-item-icon {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    font-size: 26px;
+    -webkit-transform: translate(-50%,-50%);
+    transform: translate(-50%,-50%)
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-image, .ant-upload-list-picture .ant-upload-list-item-image {
+    max-width: 100%
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-thumbnail img, .ant-upload-list-picture .ant-upload-list-item-thumbnail img {
+    display: block;
+    width: 48px;
+    height: 48px;
+    overflow: hidden
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-name, .ant-upload-list-picture .ant-upload-list-item-name {
+    display: inline-block;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    max-width: 100%;
+    margin: 0 0 0 8px;
+    padding-right: 8px;
+    padding-left: 48px;
+    overflow: hidden;
+    line-height: 44px;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-name-icon-count-1, .ant-upload-list-picture .ant-upload-list-item-name-icon-count-1 {
+    padding-right: 18px
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-name-icon-count-2, .ant-upload-list-picture .ant-upload-list-item-name-icon-count-2 {
+    padding-right: 36px
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-name, .ant-upload-list-picture .ant-upload-list-item-uploading .ant-upload-list-item-name {
+    line-height: 28px
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-progress, .ant-upload-list-picture .ant-upload-list-item-progress {
+    bottom: 14px;
+    width: calc(100% - 24px);
+    margin-top: 0;
+    padding-left: 56px
+}
+
+.ant-upload-list-picture-card .anticon-close, .ant-upload-list-picture .anticon-close {
+    position: absolute;
+    top: 8px;
+    right: 8px;
+    line-height: 1;
+    opacity: 1
+}
+
+.ant-upload-list-picture-card.ant-upload-list:after {
+    display: none
+}
+
+.ant-upload-list-picture-card-container, .ant-upload-list-picture-card .ant-upload-list-item {
+    float: left;
+    width: 104px;
+    height: 104px;
+    margin: 0 8px 8px 0
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-info {
+    position: relative;
+    height: 100%;
+    overflow: hidden
+}
+
+    .ant-upload-list-picture-card .ant-upload-list-item-info:before {
+        position: absolute;
+        z-index: 1;
+        width: 100%;
+        height: 100%;
+        background-color: rgba(0,0,0,.5);
+        opacity: 0;
+        -webkit-transition: all .3s;
+        transition: all .3s;
+        content: " "
+    }
+
+.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info:before {
+    opacity: 1
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-actions {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    z-index: 10;
+    white-space: nowrap;
+    -webkit-transform: translate(-50%,-50%);
+    transform: translate(-50%,-50%);
+    opacity: 0;
+    -webkit-transition: all .3s;
+    transition: all .3s
+}
+
+    .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye-o {
+        z-index: 10;
+        width: 16px;
+        margin: 0 4px;
+        color: hsla(0,0%,100%,.85);
+        font-size: 16px;
+        cursor: pointer;
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+        .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download:hover, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye-o:hover {
+            color: #fff
+        }
+
+    .ant-upload-list-picture-card .ant-upload-list-item-actions:hover, .ant-upload-list-picture-card .ant-upload-list-item-info:hover + .ant-upload-list-item-actions {
+        opacity: 1
+    }
+
+.ant-upload-list-picture-card .ant-upload-list-item-thumbnail, .ant-upload-list-picture-card .ant-upload-list-item-thumbnail img {
+    position: static;
+    display: block;
+    width: 100%;
+    height: 100%;
+    -o-object-fit: cover;
+    object-fit: cover
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-name {
+    display: none;
+    margin: 8px 0 0;
+    padding: 0;
+    line-height: 1.5;
+    text-align: center
+}
+
+.ant-upload-list-picture-card .anticon-picture + .ant-upload-list-item-name {
+    position: absolute;
+    bottom: 10px;
+    display: block
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item {
+    background-color: #fafafa
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info {
+    height: auto
+}
+
+    .ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info .anticon-delete, .ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info .anticon-eye-o, .ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info:before {
+        display: none
+    }
+
+.ant-upload-list-picture-card .ant-upload-list-item-uploading-text {
+    margin-top: 18px;
+    color: rgba(0,0,0,.45)
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item-progress {
+    bottom: 32px;
+    padding-left: 0
+}
+
+.ant-upload-list .ant-upload-success-icon {
+    color: #52c41a;
+    font-weight: 700
+}
+
+.ant-upload-list .ant-upload-animate-enter, .ant-upload-list .ant-upload-animate-inline-enter, .ant-upload-list .ant-upload-animate-inline-leave, .ant-upload-list .ant-upload-animate-leave {
+    -webkit-animation-duration: .3s;
+    animation-duration: .3s;
+    -webkit-animation-fill-mode: cubic-bezier(.78,.14,.15,.86);
+    animation-fill-mode: cubic-bezier(.78,.14,.15,.86)
+}
+
+.ant-upload-list .ant-upload-animate-enter {
+    -webkit-animation-name: uploadAnimateIn;
+    animation-name: uploadAnimateIn
+}
+
+.ant-upload-list .ant-upload-animate-leave {
+    -webkit-animation-name: uploadAnimateOut;
+    animation-name: uploadAnimateOut
+}
+
+.ant-upload-list .ant-upload-animate-inline-enter {
+    -webkit-animation-name: uploadAnimateInlineIn;
+    animation-name: uploadAnimateInlineIn
+}
+
+.ant-upload-list .ant-upload-animate-inline-leave {
+    -webkit-animation-name: uploadAnimateInlineOut;
+    animation-name: uploadAnimateInlineOut
+}
+
+@-webkit-keyframes uploadAnimateIn {
+    0% {
+        height: 0;
+        margin: 0;
+        padding: 0;
+        opacity: 0
+    }
+}
+
+@keyframes uploadAnimateIn {
+    0% {
+        height: 0;
+        margin: 0;
+        padding: 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes uploadAnimateOut {
+    to {
+        height: 0;
+        margin: 0;
+        padding: 0;
+        opacity: 0
+    }
+}
+
+@keyframes uploadAnimateOut {
+    to {
+        height: 0;
+        margin: 0;
+        padding: 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes uploadAnimateInlineIn {
+    0% {
+        width: 0;
+        height: 0;
+        margin: 0;
+        padding: 0;
+        opacity: 0
+    }
+}
+
+@keyframes uploadAnimateInlineIn {
+    0% {
+        width: 0;
+        height: 0;
+        margin: 0;
+        padding: 0;
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes uploadAnimateInlineOut {
+    to {
+        width: 0;
+        height: 0;
+        margin: 0;
+        padding: 0;
+        opacity: 0
+    }
+}
+
+@keyframes uploadAnimateInlineOut {
+    to {
+        width: 0;
+        height: 0;
+        margin: 0;
+        padding: 0;
+        opacity: 0
+    }
+}
+
+.dv-active-ring-chart {
+    position: relative
+}
+
+    .dv-active-ring-chart .active-ring-chart-container {
+        width: 100%;
+        height: 100%
+    }
+
+    .dv-active-ring-chart .active-ring-info {
+        position: absolute;
+        width: 100%;
+        height: 100%;
+        left: 0;
+        top: 0;
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-orient: vertical;
+        -webkit-box-direction: normal;
+        -ms-flex-direction: column;
+        flex-direction: column;
+        -webkit-box-pack: center;
+        -ms-flex-pack: center;
+        justify-content: center;
+        -webkit-box-align: center;
+        -ms-flex-align: center;
+        align-items: center
+    }
+
+        .dv-active-ring-chart .active-ring-info .dv-digital-flop {
+            width: 100px;
+            height: 30px
+        }
+
+        .dv-active-ring-chart .active-ring-info .active-ring-name {
+            width: 100px;
+            height: 30px;
+            color: #fff;
+            text-align: center;
+            vertical-align: middle;
+            text-overflow: ellipsis;
+            overflow: hidden;
+            white-space: nowrap
+        }
+
+.dv-border-box-1 {
+    position: relative;
+    width: 100%;
+    height: 100%
+}
+
+    .dv-border-box-1 .border {
+        position: absolute;
+        display: block
+    }
+
+    .dv-border-box-1 .right-top {
+        right: 0;
+        -webkit-transform: rotateY(180deg);
+        transform: rotateY(180deg)
+    }
+
+    .dv-border-box-1 .left-bottom {
+        bottom: 0;
+        -webkit-transform: rotateX(180deg);
+        transform: rotateX(180deg)
+    }
+
+    .dv-border-box-1 .right-bottom {
+        right: 0;
+        bottom: 0;
+        -webkit-transform: rotateX(180deg) rotateY(180deg);
+        transform: rotateX(180deg) rotateY(180deg)
+    }
+
+    .dv-border-box-1 .border-box-content, .dv-border-box-10 {
+        position: relative;
+        width: 100%;
+        height: 100%
+    }
+
+.dv-border-box-10 {
+    border-radius: 6px
+}
+
+    .dv-border-box-10 .dv-border-svg-container {
+        position: absolute;
+        display: block
+    }
+
+    .dv-border-box-10 .right-top {
+        right: 0;
+        -webkit-transform: rotateY(180deg);
+        transform: rotateY(180deg)
+    }
+
+    .dv-border-box-10 .left-bottom {
+        bottom: 0;
+        -webkit-transform: rotateX(180deg);
+        transform: rotateX(180deg)
+    }
+
+    .dv-border-box-10 .right-bottom {
+        right: 0;
+        bottom: 0;
+        -webkit-transform: rotateX(180deg) rotateY(180deg);
+        transform: rotateX(180deg) rotateY(180deg)
+    }
+
+    .dv-border-box-10 .border-box-content, .dv-border-box-11 {
+        position: relative;
+        width: 100%;
+        height: 100%
+    }
+
+        .dv-border-box-11 .dv-border-svg-container {
+            position: absolute;
+            width: 100%;
+            height: 100%;
+            top: 0;
+            left: 0
+        }
+
+            .dv-border-box-11 .dv-border-svg-container > polyline {
+                fill: none;
+                stroke-width: 1
+            }
+
+        .dv-border-box-11 .border-box-content, .dv-border-box-12 {
+            position: relative;
+            width: 100%;
+            height: 100%
+        }
+
+            .dv-border-box-12 .dv-border-svg-container {
+                position: absolute;
+                width: 100%;
+                height: 100%;
+                top: 0;
+                left: 0
+            }
+
+            .dv-border-box-12 .border-box-content, .dv-border-box-13 {
+                position: relative;
+                width: 100%;
+                height: 100%
+            }
+
+                .dv-border-box-13 .dv-border-svg-container {
+                    position: absolute;
+                    width: 100%;
+                    height: 100%;
+                    top: 0;
+                    left: 0
+                }
+
+                .dv-border-box-2, .dv-border-box-13 .border-box-content {
+                    position: relative;
+                    width: 100%;
+                    height: 100%
+                }
+
+                    .dv-border-box-2 .dv-border-svg-container {
+                        position: absolute;
+                        width: 100%;
+                        height: 100%;
+                        top: 0;
+                        left: 0
+                    }
+
+                        .dv-border-box-2 .dv-border-svg-container > polyline {
+                            fill: none;
+                            stroke-width: 1
+                        }
+
+                    .dv-border-box-2 .border-box-content, .dv-border-box-3 {
+                        position: relative;
+                        width: 100%;
+                        height: 100%
+                    }
+
+                        .dv-border-box-3 .dv-border-svg-container {
+                            position: absolute;
+                            width: 100%;
+                            height: 100%;
+                            top: 0;
+                            left: 0
+                        }
+
+                            .dv-border-box-3 .dv-border-svg-container > polyline {
+                                fill: none
+                            }
+
+                        .dv-border-box-3 .dv-bb3-line1 {
+                            stroke-width: 3
+                        }
+
+                        .dv-border-box-3 .dv-bb3-line2 {
+                            stroke-width: 1
+                        }
+
+                        .dv-border-box-3 .border-box-content, .dv-border-box-4 {
+                            position: relative;
+                            width: 100%;
+                            height: 100%
+                        }
+
+                            .dv-border-box-4 .dv-reverse {
+                                -webkit-transform: rotate(180deg);
+                                transform: rotate(180deg)
+                            }
+
+                            .dv-border-box-4 .dv-border-svg-container {
+                                position: absolute;
+                                width: 100%;
+                                height: 100%;
+                                top: 0;
+                                left: 0
+                            }
+
+                                .dv-border-box-4 .dv-border-svg-container > polyline {
+                                    fill: none
+                                }
+
+                            .dv-border-box-4 .sw1 {
+                                stroke-width: 1
+                            }
+
+                            .dv-border-box-4 .sw3 {
+                                stroke-width: 3px;
+                                stroke-linecap: round
+                            }
+
+                            .dv-border-box-4 .dv-bb4-line-1, .dv-border-box-4 .dv-bb4-line-2 {
+                                stroke-width: 1
+                            }
+
+                            .dv-border-box-4 .dv-bb4-line-3, .dv-border-box-4 .dv-bb4-line-4 {
+                                stroke-width: 3px;
+                                stroke-linecap: round
+                            }
+
+                            .dv-border-box-4 .dv-bb4-line-5, .dv-border-box-4 .dv-bb4-line-6, .dv-border-box-4 .dv-bb4-line-7 {
+                                stroke-width: 1
+                            }
+
+                            .dv-border-box-4 .dv-bb4-line-8, .dv-border-box-4 .dv-bb4-line-9 {
+                                stroke-width: 3px;
+                                stroke-linecap: round
+                            }
+
+                            .dv-border-box-4 .dv-bb4-line-9 {
+                                stroke-dasharray: 100 250
+                            }
+
+                            .dv-border-box-4 .dv-bb4-line-10 {
+                                stroke-width: 1;
+                                stroke-dasharray: 80 270
+                            }
+
+                            .dv-border-box-4 .border-box-content, .dv-border-box-5 {
+                                position: relative;
+                                width: 100%;
+                                height: 100%
+                            }
+
+                                .dv-border-box-5 .dv-reverse {
+                                    -webkit-transform: rotate(180deg);
+                                    transform: rotate(180deg)
+                                }
+
+                                .dv-border-box-5 .dv-border-svg-container {
+                                    position: absolute;
+                                    top: 0;
+                                    left: 0;
+                                    width: 100%;
+                                    height: 100%
+                                }
+
+                                    .dv-border-box-5 .dv-border-svg-container > polyline {
+                                        fill: none
+                                    }
+
+                                .dv-border-box-5 .dv-bb5-line-1, .dv-border-box-5 .dv-bb5-line-2 {
+                                    stroke-width: 1
+                                }
+
+                                .dv-border-box-5 .dv-bb5-line-3, .dv-border-box-5 .dv-bb5-line-6 {
+                                    stroke-width: 5
+                                }
+
+                                .dv-border-box-5 .dv-bb5-line-4, .dv-border-box-5 .dv-bb5-line-5 {
+                                    stroke-width: 2
+                                }
+
+                                .dv-border-box-5 .border-box-content, .dv-border-box-6 {
+                                    position: relative;
+                                    width: 100%;
+                                    height: 100%
+                                }
+
+                                    .dv-border-box-6 .dv-border-svg-container {
+                                        position: absolute;
+                                        top: 0;
+                                        left: 0;
+                                        width: 100%;
+                                        height: 100%
+                                    }
+
+                                        .dv-border-box-6 .dv-border-svg-container > polyline {
+                                            fill: none;
+                                            stroke-width: 1
+                                        }
+
+                                    .dv-border-box-6 .border-box-content, .dv-border-box-7 {
+                                        position: relative;
+                                        width: 100%;
+                                        height: 100%
+                                    }
+
+                                        .dv-border-box-7 .dv-border-svg-container {
+                                            position: absolute;
+                                            top: 0;
+                                            left: 0;
+                                            width: 100%;
+                                            height: 100%
+                                        }
+
+                                            .dv-border-box-7 .dv-border-svg-container > polyline {
+                                                fill: none;
+                                                stroke-linecap: round
+                                            }
+
+                                        .dv-border-box-7 .dv-bb7-line-width-2 {
+                                            stroke-width: 2
+                                        }
+
+                                        .dv-border-box-7 .dv-bb7-line-width-5 {
+                                            stroke-width: 5
+                                        }
+
+                                        .dv-border-box-7 .border-box-content, .dv-border-box-8 {
+                                            position: relative;
+                                            width: 100%;
+                                            height: 100%
+                                        }
+
+                                            .dv-border-box-8 .dv-border-svg-container {
+                                                position: absolute;
+                                                width: 100%;
+                                                height: 100%;
+                                                left: 0;
+                                                top: 0
+                                            }
+
+                                            .dv-border-box-8 .border-box-content, .dv-border-box-9 {
+                                                position: relative;
+                                                width: 100%;
+                                                height: 100%
+                                            }
+
+                                                .dv-border-box-9 .dv-border-svg-container {
+                                                    position: absolute;
+                                                    width: 100%;
+                                                    height: 100%;
+                                                    left: 0;
+                                                    top: 0
+                                                }
+
+                                                .dv-border-box-9 .border-box-content {
+                                                    position: relative;
+                                                    width: 100%;
+                                                    height: 100%
+                                                }
+
+.dv-capsule-chart {
+    position: relative;
+    -webkit-box-orient: horizontal;
+    -ms-flex-direction: row;
+    flex-direction: row;
+    padding: 10px;
+    color: #fff
+}
+
+    .dv-capsule-chart, .dv-capsule-chart .label-column {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-direction: normal;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box
+    }
+
+        .dv-capsule-chart .label-column {
+            -webkit-box-orient: vertical;
+            -ms-flex-direction: column;
+            flex-direction: column;
+            -webkit-box-pack: justify;
+            -ms-flex-pack: justify;
+            justify-content: space-between;
+            padding-right: 10px;
+            text-align: right;
+            font-size: 12px
+        }
+
+            .dv-capsule-chart .label-column div {
+                height: 20px;
+                line-height: 20px
+            }
+
+        .dv-capsule-chart .capsule-container {
+            -webkit-box-flex: 1;
+            -ms-flex: 1;
+            flex: 1;
+            display: -webkit-box;
+            display: -ms-flexbox;
+            display: flex;
+            -webkit-box-orient: vertical;
+            -webkit-box-direction: normal;
+            -ms-flex-direction: column;
+            flex-direction: column;
+            -webkit-box-pack: justify;
+            -ms-flex-pack: justify;
+            justify-content: space-between
+        }
+
+        .dv-capsule-chart .capsule-item {
+            -webkit-box-shadow: 0 0 3px #999;
+            box-shadow: 0 0 3px #999;
+            height: 10px;
+            margin: 5px 0;
+            border-radius: 5px
+        }
+
+            .dv-capsule-chart .capsule-item .capsule-item-column {
+                position: relative;
+                height: 8px;
+                margin-top: 1px;
+                border-radius: 5px;
+                -webkit-transition: all .3s;
+                transition: all .3s;
+                display: -webkit-box;
+                display: -ms-flexbox;
+                display: flex;
+                -webkit-box-pack: end;
+                -ms-flex-pack: end;
+                justify-content: flex-end;
+                -webkit-box-align: center;
+                -ms-flex-align: center;
+                align-items: center
+            }
+
+                .dv-capsule-chart .capsule-item .capsule-item-column .capsule-item-value {
+                    font-size: 12px;
+                    -webkit-transform: translateX(100%);
+                    transform: translateX(100%)
+                }
+
+        .dv-capsule-chart .unit-label {
+            height: 20px;
+            position: relative;
+            -webkit-box-pack: justify;
+            -ms-flex-pack: justify;
+            justify-content: space-between;
+            -webkit-box-align: center;
+            -ms-flex-align: center;
+            align-items: center
+        }
+
+        .dv-capsule-chart .unit-label, .dv-capsule-chart .unit-text {
+            font-size: 12px;
+            display: -webkit-box;
+            display: -ms-flexbox;
+            display: flex
+        }
+
+        .dv-capsule-chart .unit-text {
+            text-align: right;
+            -webkit-box-align: end;
+            -ms-flex-align: end;
+            align-items: flex-end;
+            line-height: 20px;
+            margin-left: 10px
+        }
+
+.dv-charts-container {
+    position: relative
+}
+
+    .dv-charts-container, .dv-charts-container .charts-canvas-container, .dv-conical-column-chart {
+        width: 100%;
+        height: 100%
+    }
+
+        .dv-conical-column-chart text {
+            text-anchor: middle
+        }
+
+.dv-decoration-1 {
+    width: 100%;
+    height: 100%
+}
+
+    .dv-decoration-1 svg {
+        -webkit-transform-origin: left top;
+        transform-origin: left top
+    }
+
+.dv-decoration-10, .dv-decoration-11 {
+    width: 100%;
+    height: 100%;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex
+}
+
+.dv-decoration-11 {
+    position: relative
+}
+
+    .dv-decoration-11 .decoration-content {
+        position: absolute;
+        top: 0;
+        left: 0;
+        -webkit-box-align: center;
+        -ms-flex-align: center;
+        align-items: center;
+        -webkit-box-pack: center;
+        -ms-flex-pack: center;
+        justify-content: center
+    }
+
+    .dv-decoration-11 .decoration-content, .dv-decoration-12 {
+        width: 100%;
+        height: 100%;
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex
+    }
+
+.dv-decoration-12 {
+    position: relative
+}
+
+    .dv-decoration-12 .decoration-content {
+        position: absolute;
+        top: 0;
+        left: 0
+    }
+
+    .dv-decoration-2, .dv-decoration-12 .decoration-content {
+        width: 100%;
+        height: 100%;
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-align: center;
+        -ms-flex-align: center;
+        align-items: center;
+        -webkit-box-pack: center;
+        -ms-flex-pack: center;
+        justify-content: center
+    }
+
+.dv-decoration-3 {
+    width: 100%;
+    height: 100%
+}
+
+    .dv-decoration-3 svg {
+        -webkit-transform-origin: left top;
+        transform-origin: left top
+    }
+
+.dv-decoration-4 {
+    position: relative;
+    width: 100%;
+    height: 100%
+}
+
+    .dv-decoration-4 .container {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        overflow: hidden;
+        position: absolute;
+        -webkit-box-flex: 1;
+        -ms-flex: 1;
+        flex: 1
+    }
+
+    .dv-decoration-4 .normal {
+        -webkit-animation: ani-height ease-in-out infinite;
+        animation: ani-height ease-in-out infinite;
+        left: 50%;
+        margin-left: -2px
+    }
+
+    .dv-decoration-4 .reverse {
+        -webkit-animation: ani-width ease-in-out infinite;
+        animation: ani-width ease-in-out infinite;
+        top: 50%;
+        margin-top: -2px
+    }
+
+@-webkit-keyframes ani-height {
+    0% {
+        height: 0%
+    }
+
+    70% {
+        height: 100%
+    }
+
+    to {
+        height: 100%
+    }
+}
+
+@keyframes ani-height {
+    0% {
+        height: 0%
+    }
+
+    70% {
+        height: 100%
+    }
+
+    to {
+        height: 100%
+    }
+}
+
+@-webkit-keyframes ani-width {
+    0% {
+        width: 0
+    }
+
+    70% {
+        width: 100%
+    }
+
+    to {
+        width: 100%
+    }
+}
+
+@keyframes ani-width {
+    0% {
+        width: 0
+    }
+
+    70% {
+        width: 100%
+    }
+
+    to {
+        width: 100%
+    }
+}
+
+.dv-decoration-5, .dv-decoration-6 {
+    width: 100%;
+    height: 100%
+}
+
+    .dv-decoration-6 svg {
+        -webkit-transform-origin: left top;
+        transform-origin: left top
+    }
+
+.dv-decoration-7 {
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center
+}
+
+.dv-decoration-7, .dv-decoration-8, .dv-decoration-9 {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    width: 100%;
+    height: 100%
+}
+
+.dv-decoration-9 {
+    position: relative;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center
+}
+
+    .dv-decoration-9 svg {
+        position: absolute;
+        left: 0;
+        top: 0;
+        -webkit-transform-origin: left top;
+        transform-origin: left top
+    }
+
+.dv-digital-flop canvas {
+    width: 100%;
+    height: 100%
+}
+
+.dv-flyline-chart {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    background-size: 100% 100%
+}
+
+    .dv-flyline-chart polyline {
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+    .dv-flyline-chart text {
+        text-anchor: middle;
+        dominant-baseline: middle
+    }
+
+.dv-flyline-chart-enhanced {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    background-size: 100% 100%
+}
+
+    .dv-flyline-chart-enhanced text {
+        text-anchor: middle;
+        dominant-baseline: middle
+    }
+
+#dv-full-screen-container {
+    position: fixed;
+    top: 0;
+    left: 0;
+    overflow: hidden;
+    -webkit-transform-origin: left top;
+    transform-origin: left top;
+    z-index: 999
+}
+
+.dv-loading {
+    width: 100%;
+    height: 100%;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center
+}
+
+    .dv-loading .loading-tip {
+        font-size: 15px
+    }
+
+.dv-percent-pond {
+    position: relative;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column
+}
+
+    .dv-percent-pond svg {
+        position: absolute;
+        left: 0;
+        top: 0;
+        width: 100%;
+        height: 100%
+    }
+
+    .dv-percent-pond polyline {
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+    .dv-percent-pond text {
+        font-size: 25px;
+        font-weight: 700;
+        text-anchor: middle;
+        dominant-baseline: middle
+    }
+
+.dv-scroll-board {
+    position: relative;
+    width: 100%;
+    height: 100%;
+    color: #fff
+}
+
+    .dv-scroll-board .text {
+        padding: 0 10px;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis
+    }
+
+    .dv-scroll-board .header {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-orient: horizontal;
+        -webkit-box-direction: normal;
+        -ms-flex-direction: row;
+        flex-direction: row;
+        font-size: 15px
+    }
+
+        .dv-scroll-board .header .header-item {
+            padding: 0 10px;
+            -webkit-box-sizing: border-box;
+            box-sizing: border-box;
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            -webkit-transition: all .3s;
+            transition: all .3s
+        }
+
+    .dv-scroll-board .rows {
+        overflow: hidden
+    }
+
+        .dv-scroll-board .rows .row-item {
+            display: -webkit-box;
+            display: -ms-flexbox;
+            display: flex;
+            font-size: 14px;
+            -webkit-transition: all .3s;
+            transition: all .3s
+        }
+
+        .dv-scroll-board .rows .ceil {
+            padding: 0 10px;
+            -webkit-box-sizing: border-box;
+            box-sizing: border-box;
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis
+        }
+
+        .dv-scroll-board .rows .index {
+            border-radius: 3px;
+            padding: 0 3px
+        }
+
+.dv-scroll-ranking-board {
+    width: 100%;
+    height: 100%;
+    color: #fff;
+    overflow: hidden
+}
+
+    .dv-scroll-ranking-board .row-item {
+        -webkit-transition: all .3s;
+        transition: all .3s;
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-orient: vertical;
+        -webkit-box-direction: normal;
+        -ms-flex-direction: column;
+        flex-direction: column;
+        -webkit-box-pack: center;
+        -ms-flex-pack: center;
+        justify-content: center;
+        overflow: hidden
+    }
+
+    .dv-scroll-ranking-board .ranking-info {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        width: 100%;
+        font-size: 13px
+    }
+
+        .dv-scroll-ranking-board .ranking-info .rank {
+            width: 40px;
+            color: #1370fb
+        }
+
+        .dv-scroll-ranking-board .ranking-info .info-name {
+            -webkit-box-flex: 1;
+            -ms-flex: 1;
+            flex: 1
+        }
+
+    .dv-scroll-ranking-board .ranking-column {
+        border-bottom: 2px solid rgba(19,112,251,.5);
+        margin-top: 5px
+    }
+
+        .dv-scroll-ranking-board .ranking-column .inside-column {
+            position: relative;
+            height: 6px;
+            background-color: #1370fb;
+            margin-bottom: 2px;
+            border-radius: 1px;
+            overflow: hidden
+        }
+
+        .dv-scroll-ranking-board .ranking-column .shine {
+            position: absolute;
+            left: 0;
+            top: 2px;
+            height: 2px;
+            width: 50px;
+            -webkit-transform: translateX(-100%);
+            transform: translateX(-100%);
+            background: radial-gradient(#28f8ff 5%,transparent 80%);
+            -webkit-animation: shine 3s ease-in-out infinite alternate;
+            animation: shine 3s ease-in-out infinite alternate
+        }
+
+@-webkit-keyframes shine {
+    80% {
+        left: 0;
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%)
+    }
+
+    to {
+        left: 100%;
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+}
+
+@keyframes shine {
+    80% {
+        left: 0;
+        -webkit-transform: translateX(-100%);
+        transform: translateX(-100%)
+    }
+
+    to {
+        left: 100%;
+        -webkit-transform: translateX(0);
+        transform: translateX(0)
+    }
+}
+
+.dv-water-pond-level {
+    position: relative
+}
+
+    .dv-water-pond-level svg {
+        position: absolute;
+        width: 100%;
+        height: 100%;
+        top: 0;
+        left: 0
+    }
+
+    .dv-water-pond-level text {
+        font-size: 25px;
+        font-weight: 700;
+        text-anchor: middle;
+        dominant-baseline: middle
+    }
+
+    .dv-water-pond-level ellipse, .dv-water-pond-level rect {
+        fill: none;
+        stroke-width: 3
+    }
+
+    .dv-water-pond-level canvas {
+        margin-top: 8px;
+        margin-left: 8px;
+        width: calc(100% - 16px);
+        height: calc(100% - 16px);
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box
+    }
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-vendors.4659697d.css.gz b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-vendors.4659697d.css.gz
new file mode 100644
index 0000000..824a305
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-vendors.4659697d.css.gz
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/fail.8d6df989.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/fail.8d6df989.css
new file mode 100644
index 0000000..8ac562c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/fail.8d6df989.css
@@ -0,0 +1,1703 @@
+#scroll-board {
+    width: 50%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    margin-left: 20px;
+    height: 100%;
+    overflow: hidden
+}
+
+#cards {
+    -webkit-box-pack: justify;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+    height: 45%
+}
+
+    #cards, #cards .card-item {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex
+    }
+
+        #cards .card-item {
+            background-color: rgba(6,30,93,.5);
+            border-top: 2px solid rgba(1,153,209,.5);
+            width: 19%;
+            -webkit-box-orient: vertical;
+            -webkit-box-direction: normal;
+            -ms-flex-direction: column;
+            flex-direction: column
+        }
+
+        #cards .card-header {
+            display: -webkit-box;
+            display: -ms-flexbox;
+            display: flex;
+            height: 20%;
+            -webkit-box-align: center;
+            -ms-flex-align: center;
+            align-items: center;
+            -webkit-box-pack: justify;
+            -ms-flex-pack: justify;
+            justify-content: space-between
+        }
+
+            #cards .card-header .card-header-left {
+                font-size: 18px;
+                font-weight: 700;
+                padding-left: 20px
+            }
+
+            #cards .card-header .card-header-right {
+                padding-right: 20px;
+                font-size: 40px;
+                color: #03d3ec
+            }
+
+        #cards .ring-charts {
+            height: 55%
+        }
+
+        #cards .card-footer {
+            height: 25%;
+            display: -webkit-box;
+            display: -ms-flexbox;
+            display: flex;
+            -webkit-box-align: center;
+            -ms-flex-align: center;
+            align-items: center;
+            -ms-flex-pack: distribute;
+            justify-content: space-around
+        }
+
+        #cards .card-footer-item {
+            padding: 5px 10px 0 10px;
+            -webkit-box-sizing: border-box;
+            box-sizing: border-box;
+            width: 40%;
+            background-color: rgba(6,30,93,.7);
+            border-radius: 3px
+        }
+
+            #cards .card-footer-item .footer-title {
+                font-size: 15px;
+                margin-bottom: 5px
+            }
+
+            #cards .card-footer-item .footer-detail {
+                font-size: 20px;
+                color: #1294fb;
+                display: -webkit-box;
+                display: -ms-flexbox;
+                display: flex;
+                font-size: 18px;
+                -webkit-box-align: center;
+                -ms-flex-align: center;
+                align-items: center
+            }
+
+                #cards .card-footer-item .footer-detail .dv-digital-flop {
+                    margin-right: 5px
+                }
+
+#ranking-board {
+    width: 20%;
+    -webkit-box-shadow: 0 0 3px #00f;
+    box-shadow: 0 0 3px #00f;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    background-color: rgba(6,30,93,.5);
+    border-top: 2px solid rgba(1,153,209,.5);
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    padding: 0 30px
+}
+
+    #ranking-board, #ranking-board .ranking-board-title {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex
+    }
+
+        #ranking-board .ranking-board-title {
+            font-weight: 700;
+            height: 50px;
+            -webkit-box-align: center;
+            -ms-flex-align: center;
+            align-items: center;
+            font-size: 20px
+        }
+
+        #ranking-board .dv-scroll-ranking-board {
+            -webkit-box-flex: 1;
+            -ms-flex: 1;
+            flex: 1
+        }
+
+.app-list .meta-cardInfo[data-v-3641be70] {
+    zoom: 1;
+    margin-top: 16px
+}
+
+.app-list .meta-cardInfo > div[data-v-3641be70] {
+    position: relative;
+    text-align: left;
+    float: left;
+    width: 50%
+}
+
+.app-list .meta-cardInfo > div p[data-v-3641be70] {
+    line-height: 32px;
+    font-size: 24px;
+    margin: 0
+}
+
+    .app-list .meta-cardInfo > div p[data-v-3641be70]:first-child {
+        color: rgba(0,0,0,.45);
+        font-size: 12px;
+        line-height: 20px;
+        margin-bottom: 4px
+    }
+
+.ant-pro-pages-account-projects-cardList[data-v-29afc0d2] {
+    margin-top: 24px
+}
+
+    .ant-pro-pages-account-projects-cardList[data-v-29afc0d2] .ant-card-meta-title {
+        margin-bottom: 4px
+    }
+
+    .ant-pro-pages-account-projects-cardList[data-v-29afc0d2] .ant-card-meta-description {
+        height: 44px;
+        overflow: hidden;
+        line-height: 22px
+    }
+
+.ant-pro-pages-account-projects-cardList .cardItemContent[data-v-29afc0d2] {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    height: 20px;
+    margin-top: 16px;
+    margin-bottom: -4px;
+    line-height: 20px
+}
+
+.ant-pro-pages-account-projects-cardList .cardItemContent > span[data-v-29afc0d2] {
+    -webkit-box-flex: 1;
+    -ms-flex: 1 1;
+    flex: 1 1;
+    color: rgba(0,0,0,.45);
+    font-size: 12px
+}
+
+.ant-pro-pages-account-projects-cardList .cardItemContent[data-v-29afc0d2] .ant-pro-avatar-list {
+    -webkit-box-flex: 0;
+    -ms-flex: 0 1 auto;
+    flex: 0 1 auto
+}
+
+.page-header-wrapper-grid-content-main[data-v-db6471d8] {
+    width: 100%;
+    height: 100%;
+    min-height: 100%;
+    -webkit-transition: .3s;
+    transition: .3s
+}
+
+.page-header-wrapper-grid-content-main .account-center-avatarHolder[data-v-db6471d8] {
+    text-align: center;
+    margin-bottom: 24px
+}
+
+.page-header-wrapper-grid-content-main .account-center-avatarHolder > .avatar[data-v-db6471d8] {
+    margin: 0 auto;
+    width: 104px;
+    height: 104px;
+    margin-bottom: 20px;
+    border-radius: 50%;
+    overflow: hidden
+}
+
+.page-header-wrapper-grid-content-main .account-center-avatarHolder > .avatar img[data-v-db6471d8] {
+    height: 100%;
+    width: 100%
+}
+
+.page-header-wrapper-grid-content-main .account-center-avatarHolder .username[data-v-db6471d8] {
+    color: rgba(0,0,0,.85);
+    font-size: 20px;
+    line-height: 28px;
+    font-weight: 500;
+    margin-bottom: 4px
+}
+
+.page-header-wrapper-grid-content-main .account-center-detail p[data-v-db6471d8] {
+    margin-bottom: 8px;
+    padding-left: 26px;
+    position: relative
+}
+
+.page-header-wrapper-grid-content-main .account-center-detail i[data-v-db6471d8] {
+    position: absolute;
+    height: 14px;
+    width: 14px;
+    left: 0;
+    top: 4px;
+    background: url(https://gw.alipayobjects.com/zos/rmsportal/pBjWzVAHnOOtAUvZmZfy.svg)
+}
+
+.page-header-wrapper-grid-content-main .account-center-detail .title[data-v-db6471d8] {
+    background-position: 0 0
+}
+
+.page-header-wrapper-grid-content-main .account-center-detail .group[data-v-db6471d8] {
+    background-position: 0 -22px
+}
+
+.page-header-wrapper-grid-content-main .account-center-detail .address[data-v-db6471d8] {
+    background-position: 0 -44px
+}
+
+.page-header-wrapper-grid-content-main .account-center-tags .ant-tag[data-v-db6471d8] {
+    margin-bottom: 8px
+}
+
+.page-header-wrapper-grid-content-main .account-center-team .members a[data-v-db6471d8] {
+    display: block;
+    margin: 12px 0;
+    line-height: 24px;
+    height: 24px
+}
+
+.page-header-wrapper-grid-content-main .account-center-team .members a .member[data-v-db6471d8] {
+    font-size: 14px;
+    color: rgba(0,0,0,.65);
+    line-height: 24px;
+    max-width: 100px;
+    vertical-align: top;
+    margin-left: 12px;
+    -webkit-transition: all .3s;
+    transition: all .3s;
+    display: inline-block
+}
+
+.page-header-wrapper-grid-content-main .account-center-team .members a:hover span[data-v-db6471d8] {
+    color: #1890ff
+}
+
+.page-header-wrapper-grid-content-main .tagsTitle[data-v-db6471d8], .page-header-wrapper-grid-content-main .teamTitle[data-v-db6471d8] {
+    font-weight: 500;
+    color: rgba(0,0,0,.85);
+    margin-bottom: 12px
+}
+
+.sysInfo_table {
+    width: 100%;
+    min-height: 45px;
+    line-height: 45px;
+    text-align: center
+}
+
+.sysInfo_td {
+    border-bottom: 1px solid #e8e8e8
+}
+
+#digital-flop {
+    position: relative;
+    height: 15%;
+    -ms-flex-negative: 0;
+    flex-shrink: 0;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-pack: justify;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    background-color: rgba(6,30,93,.5)
+}
+
+    #digital-flop .dv-decoration-10 {
+        position: absolute;
+        width: 95%;
+        left: 2.5%;
+        height: 5px;
+        bottom: 0
+    }
+
+    #digital-flop .digital-flop-item {
+        width: 11%;
+        height: 80%;
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-orient: vertical;
+        -webkit-box-direction: normal;
+        -ms-flex-direction: column;
+        flex-direction: column;
+        -webkit-box-pack: center;
+        -ms-flex-pack: center;
+        justify-content: center;
+        -webkit-box-align: center;
+        -ms-flex-align: center;
+        align-items: center;
+        border-left: 3px solid #061e5d;
+        border-right: 3px solid #061e5d
+    }
+
+    #digital-flop .digital-flop-title {
+        font-size: 20px;
+        margin-bottom: 20px
+    }
+
+    #digital-flop .digital-flop, #digital-flop .unit {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex
+    }
+
+    #digital-flop .unit {
+        margin-left: 10px;
+        -webkit-box-align: end;
+        -ms-flex-align: end;
+        align-items: flex-end;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        padding-bottom: 13px
+    }
+
+.extra-wrapper[data-v-5bb5082a] {
+    line-height: 55px;
+    padding-right: 24px
+}
+
+.extra-wrapper .extra-item[data-v-5bb5082a] {
+    display: inline-block;
+    margin-right: 24px
+}
+
+.extra-wrapper .extra-item a[data-v-5bb5082a] {
+    margin-left: 24px
+}
+
+.antd-pro-pages-dashboard-analysis-twoColLayout[data-v-5bb5082a] {
+    position: relative;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    display: block;
+    -webkit-box-orient: horizontal;
+    -webkit-box-direction: normal;
+    -ms-flex-flow: row wrap;
+    flex-flow: row wrap
+}
+
+.antd-pro-pages-dashboard-analysis-salesCard[data-v-5bb5082a] {
+    height: calc(100% - 24px)
+}
+
+    .antd-pro-pages-dashboard-analysis-salesCard[data-v-5bb5082a] .ant-card-head {
+        position: relative
+    }
+
+.dashboard-analysis-iconGroup i[data-v-5bb5082a] {
+    margin-left: 16px;
+    color: rgba(0,0,0,.45);
+    cursor: pointer;
+    -webkit-transition: color .32s;
+    transition: color .32s;
+    color: #000
+}
+
+.analysis-salesTypeRadio[data-v-5bb5082a] {
+    position: absolute;
+    right: 54px;
+    bottom: 12px
+}
+
+.top-middle-cmp {
+    width: 100%;
+    height: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    background-color: rgba(6,30,93,.5)
+}
+
+    .top-middle-cmp .chart-name {
+        position: absolute;
+        left: 10px;
+        font-size: 20px;
+        top: 10px
+    }
+
+.account-settings-info-main[data-v-32e1680d] {
+    width: 100%;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    height: 100%;
+    overflow: auto
+}
+
+.account-settings-info-main.mobile[data-v-32e1680d] {
+    display: block
+}
+
+.account-settings-info-main.mobile .account-settings-info-left[data-v-32e1680d] {
+    border-right: unset;
+    border-bottom: 1px solid #e8e8e8;
+    width: 100%;
+    height: 50px;
+    overflow-x: auto;
+    overflow-y: scroll
+}
+
+.account-settings-info-main.mobile .account-settings-info-right[data-v-32e1680d] {
+    padding: 20px 40px
+}
+
+.account-settings-info-main .account-settings-info-left[data-v-32e1680d] {
+    border-right: 1px solid #e8e8e8;
+    width: 224px
+}
+
+.account-settings-info-main .account-settings-info-right[data-v-32e1680d] {
+    -webkit-box-flex: 1;
+    -ms-flex: 1 1;
+    flex: 1 1;
+    padding: 8px 40px
+}
+
+.account-settings-info-main .account-settings-info-right .account-settings-info-title[data-v-32e1680d] {
+    color: rgba(0,0,0,.85);
+    font-size: 20px;
+    font-weight: 500;
+    line-height: 28px;
+    margin-bottom: 12px
+}
+
+.account-settings-info-main .account-settings-info-right .account-settings-info-view[data-v-32e1680d] {
+    padding-top: 12px
+}
+
+.kk-table-9136076486841527 {
+    width: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+    .kk-table-9136076486841527, .kk-table-9136076486841527 tr, .kk-table-9136076486841527 tr td {
+        -webkit-transition: all .3s;
+        transition: all .3s;
+        border-collapse: collapse
+    }
+
+        .kk-table-9136076486841527 tr td {
+            -webkit-box-sizing: border-box;
+            box-sizing: border-box;
+            padding: 12px 12px;
+            vertical-align: top
+        }
+
+        .kk-table-9136076486841527.bordered tr td {
+            border: 1px solid #e8e8e8 !important
+        }
+
+        .kk-table-9136076486841527.bright tr:hover > td {
+            background: #e6f7ff
+        }
+
+        .kk-table-9136076486841527.small tr td {
+            padding: 8px 8px
+        }
+
+        .kk-table-9136076486841527 .ant-row.ant-form-item {
+            margin: 0 !important
+        }
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-tooltip[data-mode=link]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-tooltip[data-mode=link]:before {
+    content: "璇疯緭鍏ラ摼鎺ュ湴鍧�:"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-tooltip.ql-editing a.ql-action:after, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-tooltip.ql-editing a.ql-action:after {
+    border-right: 0;
+    content: "淇濆瓨";
+    padding-right: 0
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-tooltip[data-mode=video]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-tooltip[data-mode=video]:before {
+    content: "璇疯緭鍏ヨ棰戝湴鍧�:"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label:before {
+    content: "14px"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before {
+    content: "10px"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before {
+    content: "18px"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before {
+    content: "32px"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label:before {
+    content: "鏂囨湰"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before {
+    content: "鏍囬1"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before {
+    content: "鏍囬2"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before {
+    content: "鏍囬3"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before {
+    content: "鏍囬4"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before {
+    content: "鏍囬5"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before {
+    content: "鏍囬6"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label:before {
+    content: "鏍囧噯瀛椾綋"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before {
+    content: "琛嚎瀛椾綋"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before {
+    content: "绛夊瀛椾綋"
+}
+
+.form-designer-container-9136076486841527 {
+    height: 100vh;
+    width: 100%;
+    overflow: hidden
+}
+
+    .form-designer-container-9136076486841527 .header {
+        width: 100%;
+        height: 56px;
+        text-align: center;
+        background: #fa541c;
+        color: #fff;
+        line-height: 56px;
+        font-size: 18px;
+        font-weight: 700
+    }
+
+    .form-designer-container-9136076486841527 .operating-area {
+        border-bottom: 2px solid #ccc;
+        font-size: 16px;
+        text-align: left;
+        height: 45px;
+        line-height: 45px;
+        padding: 0 12px;
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-pack: justify;
+        -ms-flex-pack: justify;
+        justify-content: space-between;
+        -ms-flex-line-pack: center;
+        align-content: center
+    }
+
+        .form-designer-container-9136076486841527 .operating-area a {
+            color: #666;
+            margin: 0 5px
+        }
+
+            .form-designer-container-9136076486841527 .operating-area a.disabled, .form-designer-container-9136076486841527 .operating-area a.disabled:hover {
+                color: #ccc
+            }
+
+            .form-designer-container-9136076486841527 .operating-area a:hover {
+                color: #fa541c
+            }
+
+            .form-designer-container-9136076486841527 .operating-area a > span {
+                font-size: 14px;
+                padding-left: 2px
+            }
+
+    .form-designer-container-9136076486841527 .icon {
+        width: 1em;
+        height: 1em;
+        vertical-align: -.15em;
+        fill: currentColor;
+        overflow: hidden
+    }
+
+    .form-designer-container-9136076486841527 .content {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        height: 100%;
+        -webkit-box-flex: 1;
+        -ms-flex: 1;
+        flex: 1
+    }
+
+        .form-designer-container-9136076486841527 .content.show-head {
+            margin-top: 6px;
+            height: calc(100% - 62px)
+        }
+
+        .form-designer-container-9136076486841527 .content.toolbars-top {
+            margin-top: 6px;
+            height: calc(100% - 51px)
+        }
+
+        .form-designer-container-9136076486841527 .content.show-head-and-toolbars-top {
+            margin-top: 6px;
+            height: calc(100% - 107px)
+        }
+
+        .form-designer-container-9136076486841527 .content aside {
+            -webkit-box-shadow: 0 0 1px 1px #ccc;
+            box-shadow: 0 0 1px 1px #ccc;
+            width: 270px;
+            height: 100%
+        }
+
+            .form-designer-container-9136076486841527 .content aside.left {
+                height: 100%;
+                overflow: auto;
+                -webkit-user-select: none;
+                -moz-user-select: none;
+                -ms-user-select: none;
+                user-select: none
+            }
+
+                .form-designer-container-9136076486841527 .content aside.left .ant-collapse-content-box {
+                    padding: 0
+                }
+
+                .form-designer-container-9136076486841527 .content aside.left .ant-collapse {
+                    border: 0
+                }
+
+                    .form-designer-container-9136076486841527 .content aside.left .ant-collapse > .ant-collapse-item {
+                        border-color: #ccc
+                    }
+
+                        .form-designer-container-9136076486841527 .content aside.left .ant-collapse > .ant-collapse-item > .ant-collapse-header {
+                            padding: 7px 0 7px 40px
+                        }
+
+                        .form-designer-container-9136076486841527 .content aside.left .ant-collapse > .ant-collapse-item > .ant-collapse-content {
+                            border-color: #ccc
+                        }
+
+                .form-designer-container-9136076486841527 .content aside.left ul {
+                    padding: 5px;
+                    list-style: none;
+                    display: -webkit-box;
+                    display: -ms-flexbox;
+                    display: flex;
+                    margin-bottom: 0;
+                    -ms-flex-wrap: wrap;
+                    flex-wrap: wrap
+                }
+
+                    .form-designer-container-9136076486841527 .content aside.left ul li {
+                        border-radius: 0;
+                        border: 0;
+                        -webkit-box-shadow: 1px 0 0 0 #ccc,0 1px 0 0 #ccc,1px 1px 0 0 #ccc,1px 0 0 0 #ccc inset,0 1px 0 0 #ccc inset;
+                        box-shadow: 1px 0 0 0 #ccc,0 1px 0 0 #ccc,1px 1px 0 0 #ccc,inset 1px 0 0 0 #ccc,inset 0 1px 0 0 #ccc;
+                        padding: 8px 12px;
+                        width: calc(50% - 6px);
+                        margin: 2.7px;
+                        height: 36px;
+                        line-height: 20px;
+                        cursor: move;
+                        border: 1px solid transparent;
+                        border-radius: 3px;
+                        -webkit-transition: all .3s;
+                        transition: all .3s
+                    }
+
+                        .form-designer-container-9136076486841527 .content aside.left ul li:hover {
+                            color: #fa541c;
+                            border: 1px solid #fa541c;
+                            position: relative;
+                            z-index: 1;
+                            -webkit-box-shadow: 0 2px 6px #fa541c;
+                            box-shadow: 0 2px 6px #fa541c
+                        }
+
+            .form-designer-container-9136076486841527 .content aside.right {
+                height: 100%;
+                color: #fff;
+                overflow: hidden;
+                position: relative
+            }
+
+                .form-designer-container-9136076486841527 .content aside.right .form-item-properties {
+                    width: 100%;
+                    height: 100%
+                }
+
+                .form-designer-container-9136076486841527 .content aside.right .ant-tabs, .form-designer-container-9136076486841527 .content aside.right .ant-tabs .ant-tabs-content {
+                    height: 100%
+                }
+
+                    .form-designer-container-9136076486841527 .content aside.right .ant-tabs .ant-tabs-content .ant-tabs-tabpane {
+                        height: calc(100% - 45px);
+                        overflow: auto
+                    }
+
+                .form-designer-container-9136076486841527 .content aside.right .properties-centent {
+                    height: 100%;
+                    overflow: hidden;
+                    background: #fff
+                }
+
+                    .form-designer-container-9136076486841527 .content aside.right .properties-centent .properties-body {
+                        overflow: auto;
+                        height: 100%;
+                        padding: 8px 16px
+                    }
+
+                    .form-designer-container-9136076486841527 .content aside.right .properties-centent .ant-form-item {
+                        margin-bottom: 0;
+                        padding: 6px 0;
+                        border-bottom: 1px solid #ccc
+                    }
+
+                        .form-designer-container-9136076486841527 .content aside.right .properties-centent .ant-form-item .ant-form-item-label {
+                            line-height: 2
+                        }
+
+                .form-designer-container-9136076486841527 .content aside.right .hint-box {
+                    margin-top: 120px
+                }
+
+        .form-designer-container-9136076486841527 .content section {
+            -webkit-box-flex: 1;
+            -ms-flex: 1;
+            flex: 1;
+            max-width: calc(100% - 540px);
+            -webkit-user-select: none;
+            -moz-user-select: none;
+            -ms-user-select: none;
+            user-select: none;
+            margin: 0 8px 0;
+            -webkit-box-shadow: 0 0 1px 1px #ccc;
+            box-shadow: 0 0 1px 1px #ccc
+        }
+
+            .form-designer-container-9136076486841527 .content section .form-panel {
+                height: 100%;
+                background: #eee;
+                position: relative
+            }
+
+                .form-designer-container-9136076486841527 .content section .form-panel.no-toolbars-top {
+                    height: calc(100% - 50px)
+                }
+
+                .form-designer-container-9136076486841527 .content section .form-panel > .hint-text {
+                    position: absolute;
+                    left: 0;
+                    top: 50%;
+                    width: 100%;
+                    -webkit-transform: translateY(-50%);
+                    transform: translateY(-50%);
+                    font-size: 20px;
+                    color: #aaa;
+                    z-index: 16
+                }
+
+                .form-designer-container-9136076486841527 .content section .form-panel .a-form-box {
+                    height: 100%
+                }
+
+                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box {
+                    height: 100%;
+                    overflow: auto
+                }
+
+                    .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main {
+                        min-height: 100%;
+                        padding: 5px;
+                        position: relative;
+                        background: #fafafa
+                    }
+
+                        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .moving {
+                            min-height: 35px;
+                            -webkit-box-sizing: border-box;
+                            box-sizing: border-box;
+                            overflow: hidden;
+                            padding: 0 !important;
+                            position: relative
+                        }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .moving:before {
+                                content: "";
+                                height: 5px;
+                                width: 100%;
+                                background: #fa541c;
+                                position: absolute;
+                                top: 0;
+                                right: 0
+                            }
+
+                        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box {
+                            position: relative;
+                            -webkit-box-sizing: border-box;
+                            box-sizing: border-box;
+                            padding: 8px;
+                            overflow: hidden;
+                            -webkit-transition: all .3s;
+                            transition: all .3s;
+                            min-height: 36px
+                        }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box:hover {
+                                background: rgba(250,84,28,.2)
+                            }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box:before {
+                                content: "";
+                                height: 5px;
+                                width: 100%;
+                                background: #fa541c;
+                                position: absolute;
+                                top: 0;
+                                right: -100%;
+                                -webkit-transition: all .3s;
+                                transition: all .3s
+                            }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box.active {
+                                background: rgba(250,84,28,.2);
+                                outline-offset: 0
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box.active:before {
+                                    right: 0
+                                }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box .form-item-box {
+                                position: relative;
+                                -webkit-box-sizing: border-box;
+                                box-sizing: border-box;
+                                word-wrap: break-word
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box .form-item-box:before {
+                                    content: "";
+                                    position: absolute;
+                                    width: 100%;
+                                    height: 100%;
+                                    top: 0;
+                                    left: 0;
+                                    z-index: 888
+                                }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box .form-item-box .ant-form-item {
+                                    margin: 0;
+                                    padding-bottom: 6px
+                                }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box .show-key-box {
+                                position: absolute;
+                                bottom: 2px;
+                                right: 5px;
+                                font-size: 14px;
+                                z-index: 999;
+                                color: #fa541c
+                            }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .delete {
+                                position: absolute;
+                                top: 0;
+                                width: 30px;
+                                height: 30px;
+                                line-height: 30px;
+                                text-align: center;
+                                color: #fff;
+                                z-index: 989;
+                                -webkit-transition: all .3s;
+                                transition: all .3s
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .delete.unactivated {
+                                    opacity: 0 !important;
+                                    pointer-events: none
+                                }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .delete.active {
+                                    opacity: 1 !important
+                                }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .copy {
+                                border-radius: 0 0 0 8px;
+                                right: 30px;
+                                background: #fa541c
+                            }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .delete {
+                                right: 0;
+                                background: #fa541c
+                            }
+
+                        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .batch-label, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .batch-label {
+                            font-size: 16px;
+                            font-weight: 500;
+                            padding: 10px 10px
+                        }
+
+                        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box {
+                            min-height: 60px;
+                            width: 100%;
+                            border: 1px dashed #ccc;
+                            background: #fff
+                        }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main {
+                                min-height: 60px;
+                                position: relative;
+                                border: 1px dashed #ccc;
+                                overflow-x: auto;
+                                overflow-y: auto;
+                                white-space: nowrap
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main .moving, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main .moving {
+                                    width: 175px;
+                                    min-height: 94px;
+                                    display: inline-block
+                                }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main > div, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main > div {
+                                    min-width: 185px;
+                                    display: inline-block;
+                                    vertical-align: top
+                                }
+
+                                    .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main > div .ant-form-item > .ant-form-item-control-wrapper, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main > div .ant-form-item > .ant-form-item-label, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main > div .ant-form-item > .ant-form-item-control-wrapper, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main > div .ant-form-item > .ant-form-item-label {
+                                        text-align: left;
+                                        display: block
+                                    }
+
+                                    .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main > div .ant-col, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main > div .ant-col {
+                                        width: 100%
+                                    }
+
+                        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .column-box {
+                            display: -webkit-box;
+                            display: -ms-flexbox;
+                            display: flex;
+                            width: 100%
+                        }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .column-box .check-box {
+                                width: 80px
+                            }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .column-box .draggable-box {
+                                -webkit-box-flex: 1;
+                                -ms-flex: 1;
+                                flex: 1
+                            }
+
+                        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .ant-form-item-label {
+                            display: none !important
+                        }
+
+                        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box {
+                            position: relative;
+                            -webkit-box-sizing: border-box;
+                            box-sizing: border-box;
+                            padding: 5px;
+                            background: rgba(250,84,28,.12);
+                            width: 100%;
+                            -webkit-transition: all .3s;
+                            transition: all .3s;
+                            overflow: hidden
+                        }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .form-item-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .form-item-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .form-item-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .form-item-box {
+                                position: relative;
+                                -webkit-box-sizing: border-box;
+                                box-sizing: border-box
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .form-item-box .ant-form-item, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .form-item-box .ant-form-item, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .form-item-box .ant-form-item, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .form-item-box .ant-form-item {
+                                    margin: 0;
+                                    padding-bottom: 15px
+                                }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout {
+                                background: rgba(250,84,28,.12)
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout .table-td .draggable-box {
+                                    min-height: 60px;
+                                    min-width: 50px;
+                                    border: 1px dashed #ccc;
+                                    background: #fff
+                                }
+
+                                    .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout .table-td .draggable-box .list-main {
+                                        min-height: 60px;
+                                        position: relative;
+                                        border: 1px dashed #ccc
+                                    }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box:before {
+                                content: "";
+                                height: 5px;
+                                width: 100%;
+                                background: transparent;
+                                position: absolute;
+                                top: 0;
+                                right: -100%;
+                                -webkit-transition: all .3s;
+                                transition: all .3s
+                            }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box.active {
+                                background: rgba(250,84,28,.24);
+                                outline-offset: 0
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box.active:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box.active:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box.active:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box.active:before {
+                                    background: #fa541c;
+                                    right: 0
+                                }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .delete {
+                                position: absolute;
+                                top: 0;
+                                width: 30px;
+                                height: 30px;
+                                line-height: 30px;
+                                text-align: center;
+                                color: #fff;
+                                z-index: 989;
+                                -webkit-transition: all .3s;
+                                transition: all .3s
+                            }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .delete.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .delete.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .delete.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .delete.unactivated {
+                                    opacity: 0 !important;
+                                    pointer-events: none
+                                }
+
+                                .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .delete.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .delete.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .delete.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .delete.active {
+                                    opacity: 1 !important
+                                }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .copy {
+                                border-radius: 0 0 0 8px;
+                                right: 30px;
+                                background: #fa541c
+                            }
+
+                            .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .delete {
+                                right: 0;
+                                background: #fa541c
+                            }
+
+    .form-designer-container-9136076486841527 .right-menu {
+        width: 160px;
+        background: #fff;
+        border: 1px solid #ccc;
+        position: fixed;
+        -webkit-transition: all 0s;
+        transition: all 0s;
+        -webkit-box-shadow: 3px 3px 8px #999;
+        box-shadow: 3px 3px 8px #999;
+        border-radius: 3px;
+        padding: 8px 0;
+        z-index: 2199
+    }
+
+        .form-designer-container-9136076486841527 .right-menu ul {
+            padding: 0;
+            margin: 0;
+            list-style: none
+        }
+
+            .form-designer-container-9136076486841527 .right-menu ul li {
+                cursor: pointer;
+                -webkit-user-select: none;
+                -moz-user-select: none;
+                -ms-user-select: none;
+                user-select: none;
+                padding: 0 15px;
+                height: 30px;
+                line-height: 30px;
+                font-size: 14px
+            }
+
+                .form-designer-container-9136076486841527 .right-menu ul li i {
+                    margin-right: 4px
+                }
+
+                .form-designer-container-9136076486841527 .right-menu ul li:hover {
+                    background: #eee
+                }
+
+    .form-designer-container-9136076486841527 .kk-checkbox .ant-checkbox-wrapper {
+        margin-left: 0 !important;
+        margin-right: 8px
+    }
+
+    .form-designer-container-9136076486841527 .list-enter-active {
+        -webkit-transition: all .5s;
+        transition: all .5s
+    }
+
+    .form-designer-container-9136076486841527 .list-leave-active {
+        -webkit-transition: all .3s;
+        transition: all .3s
+    }
+
+    .form-designer-container-9136076486841527 .list-enter, .form-designer-container-9136076486841527 .list-leave-to {
+        opacity: 0;
+        -webkit-transform: translateX(-100px);
+        transform: translateX(-100px)
+    }
+
+    .form-designer-container-9136076486841527 .list-enter {
+        height: 30px
+    }
+
+    .form-designer-container-9136076486841527 ::-webkit-scrollbar {
+        width: 6px;
+        height: 6px;
+        scrollbar-arrow-color: red
+    }
+
+    .form-designer-container-9136076486841527 ::-webkit-scrollbar-thumb {
+        border-radius: 5px;
+        -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,.2);
+        box-shadow: inset 0 0 5px rgba(0,0,0,.2);
+        background: rgba(0,0,0,.2);
+        scrollbar-arrow-color: red
+    }
+
+    .form-designer-container-9136076486841527 ::-webkit-scrollbar-track {
+        -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,.2);
+        box-shadow: inset 0 0 5px rgba(0,0,0,.2);
+        border-radius: 0;
+        background: rgba(0,0,0,.1)
+    }
+
+    .form-designer-container-9136076486841527 .ant-form-inline .list-main {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -ms-flex-wrap: wrap;
+        flex-wrap: wrap;
+        -webkit-box-pack: start;
+        -ms-flex-pack: start;
+        justify-content: flex-start;
+        -ms-flex-line-pack: start;
+        align-content: flex-start
+    }
+
+        .form-designer-container-9136076486841527 .ant-form-inline .list-main .layout-width {
+            width: 100%
+        }
+
+    .form-designer-container-9136076486841527 .ant-form-inline .ant-form-item-control-wrapper {
+        width: 175px !important
+    }
+
+.json-box-9136076486841527 {
+    height: 570px;
+    overflow: auto
+}
+
+    .json-box-9136076486841527 .vue-codemirror-wrap {
+        height: 100%
+    }
+
+        .json-box-9136076486841527 .vue-codemirror-wrap .CodeMirror-wrap {
+            height: 100%;
+            background: #f6f6f6
+        }
+
+            .json-box-9136076486841527 .vue-codemirror-wrap .CodeMirror-wrap .CodeMirror-scroll {
+                height: 100%;
+                width: 100%
+            }
+
+            .json-box-9136076486841527 .vue-codemirror-wrap .CodeMirror-wrap .CodeMirror-linenumber, .json-box-9136076486841527 .vue-codemirror-wrap .CodeMirror-wrap pre.CodeMirror-line {
+                min-height: 21px;
+                line-height: 21px
+            }
+
+.code-modal-9136076486841527 .ant-modal-body {
+    padding: 12px
+}
+
+.copy-btn-box-9136076486841527 {
+    padding-top: 8px;
+    text-align: center
+}
+
+    .copy-btn-box-9136076486841527 .copy-btn {
+        margin-right: 8px
+    }
+
+.k-form-build-9136076486841527 .select-input-list-box {
+    color: rgba(0,0,0,.65);
+    font-size: 14px
+}
+
+    .k-form-build-9136076486841527 .select-input-list-box .ant-form-item {
+        margin-bottom: 2px;
+        margin-right: 8px
+    }
+
+    .k-form-build-9136076486841527 .select-input-list-box.ant-form-horizontal .ant-col.ant-form-item-control-wrapper {
+        height: 30px;
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-align: center;
+        -ms-flex-align: center;
+        align-items: center
+    }
+
+    .k-form-build-9136076486841527 .select-input-list-box.ant-form-horizontal .text-box {
+        height: 30px;
+        line-height: 30px
+    }
+
+.k-form-build-9136076486841527 .ant-form-item {
+    margin-bottom: 16px
+}
+
+.k-form-build-9136076486841527 .ant-form-item-control {
+    position: relative
+}
+
+    .k-form-build-9136076486841527 .ant-form-item-control .ant-form-explain {
+        bottom: -16px;
+        position: absolute;
+        z-index: 10
+    }
+
+.k-form-build-9136076486841527.ant-form-inline .ant-form-item-control-wrapper {
+    width: 175px !important
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-form-item {
+    margin: 0
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-form-item-control-wrapper {
+    width: 170px !important
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-table-thead > tr > th {
+    padding: 12px
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-table-tbody > tr > td {
+    padding: 8px
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-form-inline .ant-form-item-with-help {
+    margin: 0
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-table-placeholder {
+    padding: 0
+}
+
+.k-form-build-9136076486841527 .hide-upload-drag .ant-upload.ant-upload-drag {
+    display: none
+}
+
+.m-colorPicker {
+    width: 25%;
+    vertical-align: bottom;
+    padding: 5px;
+    border: 1px solid #e6e6e6;
+    border-radius: 4px;
+    font-size: 0
+}
+
+    .m-colorPicker .colorBtn {
+        height: 22px !important;
+        width: 100% !important
+    }
+
+.home[data-v-2a92492a] {
+    width: 900px;
+    margin: 0 auto;
+    padding: 25px 0
+}
+
+.home > .banner[data-v-2a92492a] {
+    text-align: center;
+    padding: 25px 0;
+    margin: 25px 0
+}
+
+.table-operator {
+    margin-bottom: 18px
+}
+
+button {
+    margin-right: 8px
+}
+
+.step-form-wrapper[data-v-21ef0e56] {
+    margin: 0 auto;
+    width: 80%;
+    max-width: 400px
+}
+
+.verifybox {
+    position: relative;
+    border-radius: 2px;
+    border: 1px solid #e4e7eb;
+    background-color: #fff;
+    -webkit-box-shadow: 0 0 10px rgba(0,0,0,.3);
+    box-shadow: 0 0 10px rgba(0,0,0,.3);
+    left: 50%;
+    top: 50%;
+    -webkit-transform: translate(-50%,-50%);
+    transform: translate(-50%,-50%)
+}
+
+.verifybox, .verifybox-top {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.verifybox-top {
+    padding: 0 15px;
+    height: 50px;
+    line-height: 50px;
+    text-align: left;
+    font-size: 16px;
+    color: #45494c;
+    border-bottom: 1px solid #e4e7eb
+}
+
+.verifybox-bottom {
+    padding: 15px;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box
+}
+
+.verifybox-close {
+    position: absolute;
+    top: 13px;
+    right: 9px;
+    width: 24px;
+    height: 24px;
+    text-align: center;
+    cursor: pointer
+}
+
+.mask {
+    position: fixed;
+    top: 0;
+    left: 0;
+    z-index: 1001;
+    width: 100%;
+    height: 100vh;
+    background: rgba(0,0,0,.3);
+    -webkit-transition: all .5s;
+    transition: all .5s
+}
+
+.verify-tips {
+    position: absolute;
+    left: 0;
+    bottom: 0;
+    width: 100%;
+    height: 30px;
+    line-height: 30px;
+    color: #fff
+}
+
+.suc-bg {
+    background-color: rgba(92,184,92,.5);
+    filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7f5CB85C,endcolorstr=#7f5CB85C)
+}
+
+.err-bg {
+    background-color: rgba(217,83,79,.5);
+    filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7fD9534F,endcolorstr=#7fD9534F)
+}
+
+.tips-enter, .tips-leave-to {
+    bottom: -30px
+}
+
+.tips-enter-active, .tips-leave-active {
+    -webkit-transition: bottom .5s;
+    transition: bottom .5s
+}
+
+.verify-code {
+    font-size: 20px;
+    text-align: center;
+    cursor: pointer;
+    margin-bottom: 5px;
+    border: 1px solid #ddd
+}
+
+.cerify-code-panel {
+    height: 100%;
+    overflow: hidden
+}
+
+.verify-code-area {
+    float: left
+}
+
+.verify-input-area {
+    float: left;
+    width: 60%;
+    padding-right: 10px
+}
+
+.verify-change-area {
+    line-height: 30px;
+    float: left
+}
+
+.varify-input-code {
+    display: inline-block;
+    width: 100%;
+    height: 25px
+}
+
+.verify-change-code {
+    color: #337ab7;
+    cursor: pointer
+}
+
+.verify-btn {
+    width: 200px;
+    height: 30px;
+    background-color: #337ab7;
+    color: #fff;
+    border: none;
+    margin-top: 10px
+}
+
+.verify-bar-area {
+    position: relative;
+    text-align: center;
+    border: 1px solid #ddd;
+    -webkit-border-radius: 4px
+}
+
+    .verify-bar-area, .verify-bar-area .verify-move-block {
+        background: #fff;
+        -webkit-box-sizing: content-box;
+        box-sizing: content-box
+    }
+
+        .verify-bar-area .verify-move-block {
+            position: absolute;
+            top: 0;
+            left: 0;
+            cursor: pointer;
+            -webkit-box-shadow: 0 0 2px #888;
+            box-shadow: 0 0 2px #888;
+            -webkit-border-radius: 1px
+        }
+
+            .verify-bar-area .verify-move-block:hover {
+                background-color: #337ab7;
+                color: #fff
+            }
+
+        .verify-bar-area .verify-left-bar {
+            position: absolute;
+            top: -1px;
+            left: -1px;
+            background: #f0fff0;
+            cursor: pointer;
+            border: 1px solid #ddd
+        }
+
+        .verify-bar-area .verify-left-bar, .verify-img-panel {
+            -webkit-box-sizing: content-box;
+            box-sizing: content-box
+        }
+
+.verify-img-panel {
+    margin: 0;
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    border-radius: 3px;
+    position: relative
+}
+
+    .verify-img-panel .verify-refresh {
+        width: 25px;
+        height: 25px;
+        text-align: center;
+        padding: 5px;
+        cursor: pointer;
+        position: absolute;
+        top: 0;
+        right: 0;
+        z-index: 2
+    }
+
+    .verify-img-panel .icon-refresh {
+        font-size: 20px;
+        color: #fff
+    }
+
+    .verify-img-panel .verify-gap {
+        background-color: #fff;
+        position: relative;
+        z-index: 2;
+        border: 1px solid #fff
+    }
+
+.verify-bar-area .verify-move-block .verify-sub-block {
+    position: absolute;
+    text-align: center;
+    z-index: 3
+}
+
+.verify-bar-area .verify-move-block .verify-icon {
+    font-size: 18px
+}
+
+.verify-bar-area .verify-msg {
+    z-index: 3
+}
+
+.iconfont {
+    font-family: iconfont !important;
+    font-size: 16px;
+    font-style: normal;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale
+}
+
+.icon-check:before {
+    background-image: url("data:image/png;base64,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")
+}
+
+.icon-check:before, .icon-close:before {
+    content: " ";
+    display: block;
+    width: 16px;
+    height: 16px;
+    position: absolute;
+    margin: auto;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    z-index: 9999;
+    background-size: contain
+}
+
+.icon-close:before {
+    background-image: url("data:image/png;base64,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")
+}
+
+.icon-right:before {
+    background-size: cover;
+    background-image: url("data:image/png;base64,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")
+}
+
+.icon-refresh:before, .icon-right:before {
+    content: " ";
+    display: block;
+    width: 16px;
+    height: 16px;
+    position: absolute;
+    margin: auto;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    z-index: 9999;
+    background-size: contain
+}
+
+.icon-refresh:before {
+    background-image: url("data:image/png;base64,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")
+}
+
+.user-layout-login label[data-v-8b185380] {
+    font-size: 14px
+}
+
+.user-layout-login .getCaptcha[data-v-8b185380] {
+    display: block;
+    width: 100%;
+    height: 40px
+}
+
+.user-layout-login .forge-password[data-v-8b185380] {
+    font-size: 14px
+}
+
+.user-layout-login button.login-button[data-v-8b185380] {
+    padding: 0 15px;
+    font-size: 16px;
+    height: 40px;
+    width: 100%
+}
+
+.user-layout-login .user-login-other[data-v-8b185380] {
+    text-align: left;
+    margin-top: 24px;
+    line-height: 22px
+}
+
+.user-layout-login .user-login-other .item-icon[data-v-8b185380] {
+    font-size: 24px;
+    color: rgba(0,0,0,.2);
+    margin-left: 16px;
+    vertical-align: middle;
+    cursor: pointer;
+    -webkit-transition: color .3s;
+    transition: color .3s
+}
+
+    .user-layout-login .user-login-other .item-icon[data-v-8b185380]:hover {
+        color: #1890ff
+    }
+
+.user-layout-login .user-login-other .register[data-v-8b185380] {
+    float: right
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/fail.8d6df989.css.gz b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/fail.8d6df989.css.gz
new file mode 100644
index 0000000..2a8e7ac
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/fail.8d6df989.css.gz
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/site.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/site.css
new file mode 100644
index 0000000..f27e5ad
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/site.css
@@ -0,0 +1,18 @@
+html {
+  font-size: 14px;
+}
+
+@media (min-width: 768px) {
+  html {
+    font-size: 16px;
+  }
+}
+
+html {
+  position: relative;
+  min-height: 100%;
+}
+
+body {
+  margin-bottom: 60px;
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/theme-colors-ef7df4e0.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/theme-colors-ef7df4e0.css
new file mode 100644
index 0000000..3cd7abd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/theme-colors-ef7df4e0.css
@@ -0,0 +1,1385 @@
+#nprogress .bar {
+    background: #fa541c
+}
+
+#nprogress .peg {
+    -webkit-box-shadow: 0 0 10px #fa541c,0 0 5px #fa541c;
+    box-shadow: 0 0 10px #fa541c,0 0 5px #fa541c
+}
+
+#nprogress .spinner-icon {
+    border-top-color: #fa541c;
+    border-left-color: #fa541c
+}
+
+a[data-v-1cd0b9b6] {
+    color: #fa541c
+}
+
+    a[data-v-1cd0b9b6]:hover {
+        color: #ff7a45
+    }
+
+    a[data-v-1cd0b9b6]:active {
+        color: #d4380d
+    }
+
+[data-v-1cd0b9b6]::-moz-selection {
+    background: #fa541c
+}
+
+[data-v-1cd0b9b6]::selection {
+    background: #fa541c
+}
+
+html[data-v-1cd0b9b6] {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-1cd0b9b6], [ant-click-animating-without-extra-node=true][data-v-1cd0b9b6]:after {
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c
+}
+
+@-webkit-keyframes waveEffect-data-v-1cd0b9b6 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c
+    }
+}
+
+@keyframes waveEffect-data-v-1cd0b9b6 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c
+    }
+}
+
+a[data-v-a16f84d8] {
+    color: #fa541c
+}
+
+    a[data-v-a16f84d8]:hover {
+        color: #ff7a45
+    }
+
+    a[data-v-a16f84d8]:active {
+        color: #d4380d
+    }
+
+[data-v-a16f84d8]::-moz-selection {
+    background: #fa541c
+}
+
+[data-v-a16f84d8]::selection {
+    background: #fa541c
+}
+
+html[data-v-a16f84d8] {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-a16f84d8], [ant-click-animating-without-extra-node=true][data-v-a16f84d8]:after {
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c
+}
+
+@-webkit-keyframes waveEffect-data-v-a16f84d8 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c
+    }
+}
+
+@keyframes waveEffect-data-v-a16f84d8 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c
+    }
+}
+
+a[data-v-9f28f096] {
+    color: #fa541c
+}
+
+    a[data-v-9f28f096]:hover {
+        color: #ff7a45
+    }
+
+    a[data-v-9f28f096]:active {
+        color: #d4380d
+    }
+
+[data-v-9f28f096]::-moz-selection {
+    background: #fa541c
+}
+
+[data-v-9f28f096]::selection {
+    background: #fa541c
+}
+
+html[data-v-9f28f096] {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-9f28f096], [ant-click-animating-without-extra-node=true][data-v-9f28f096]:after {
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c
+}
+
+@-webkit-keyframes waveEffect-data-v-9f28f096 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c
+    }
+}
+
+@keyframes waveEffect-data-v-9f28f096 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c
+    }
+}
+
+a[data-v-74e4dc71] {
+    color: #fa541c
+}
+
+    a[data-v-74e4dc71]:hover {
+        color: #ff7a45
+    }
+
+    a[data-v-74e4dc71]:active {
+        color: #d4380d
+    }
+
+[data-v-74e4dc71]::-moz-selection {
+    background: #fa541c
+}
+
+[data-v-74e4dc71]::selection {
+    background: #fa541c
+}
+
+html[data-v-74e4dc71] {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-74e4dc71], [ant-click-animating-without-extra-node=true][data-v-74e4dc71]:after {
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c
+}
+
+@-webkit-keyframes waveEffect-data-v-74e4dc71 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c
+    }
+}
+
+@keyframes waveEffect-data-v-74e4dc71 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c
+    }
+}
+
+ul li.active[data-v-74e4dc71], ul li[data-v-74e4dc71]:hover {
+    background-color: #fa541c
+}
+
+a {
+    color: #fa541c
+}
+
+    a:hover {
+        color: #ff7a45
+    }
+
+    a:active {
+        color: #d4380d
+    }
+
+::-moz-selection {
+    background: #fa541c
+}
+
+::selection {
+    background: #fa541c
+}
+
+html {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node, [ant-click-animating-without-extra-node=true]:after {
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c
+}
+
+@-webkit-keyframes waveEffect {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c
+    }
+}
+
+@keyframes waveEffect {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c
+    }
+}
+
+a[data-v-400fd39c] {
+    color: #fa541c
+}
+
+    a[data-v-400fd39c]:hover {
+        color: #ff7a45
+    }
+
+    a[data-v-400fd39c]:active {
+        color: #d4380d
+    }
+
+[data-v-400fd39c]::-moz-selection {
+    background: #fa541c
+}
+
+[data-v-400fd39c]::selection {
+    background: #fa541c
+}
+
+html[data-v-400fd39c] {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-400fd39c], [ant-click-animating-without-extra-node=true][data-v-400fd39c]:after {
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c
+}
+
+@-webkit-keyframes waveEffect-data-v-400fd39c {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c
+    }
+}
+
+@keyframes waveEffect-data-v-400fd39c {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c
+    }
+}
+
+a[data-v-0d752822] {
+    color: #fa541c
+}
+
+    a[data-v-0d752822]:hover {
+        color: #ff7a45
+    }
+
+    a[data-v-0d752822]:active {
+        color: #d4380d
+    }
+
+[data-v-0d752822]::-moz-selection {
+    background: #fa541c
+}
+
+[data-v-0d752822]::selection {
+    background: #fa541c
+}
+
+html[data-v-0d752822] {
+    --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-0d752822], [ant-click-animating-without-extra-node=true][data-v-0d752822]:after {
+    -webkit-box-shadow: 0 0 0 0 #fa541c;
+    box-shadow: 0 0 0 0 #fa541c
+}
+
+@-webkit-keyframes waveEffect-data-v-0d752822 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c
+    }
+}
+
+@keyframes waveEffect-data-v-0d752822 {
+    to {
+        -webkit-box-shadow: 0 0 0 #fa541c;
+        box-shadow: 0 0 0 #fa541c
+    }
+}
+
+.ant-anchor-ink-ball {
+    border: 2px solid #fa541c
+}
+
+.ant-anchor-link-active > .ant-anchor-link-title {
+    color: #fa541c
+}
+
+.ant-select-auto-complete.ant-select .ant-input:focus, .ant-select-auto-complete.ant-select .ant-input:hover {
+    border-color: #ff7a45
+}
+
+.ant-badge-status-volcano {
+    background: #fa541c
+}
+
+.ant-breadcrumb a:hover {
+    color: #ff7a45
+}
+
+.ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+    color: #ff7a45;
+    border-color: #ff7a45
+}
+
+.ant-btn.active:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:active:not(.ant-btn-primary):not(.ant-btn-danger) {
+    color: #d4380d;
+    border-color: #d4380d
+}
+
+.ant-btn-primary {
+    background-color: #fa541c;
+    border-color: #fa541c
+}
+
+    .ant-btn-primary:focus, .ant-btn-primary:hover {
+        background-color: #ff7a45;
+        border-color: #ff7a45
+    }
+
+    .ant-btn-primary.active, .ant-btn-primary:active {
+        background-color: #d4380d;
+        border-color: #d4380d
+    }
+
+.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) {
+    border-right-color: #ff7a45;
+    border-left-color: #ff7a45
+}
+
+.ant-btn-group .ant-btn-primary:first-child:not(:last-child) {
+    border-right-color: #ff7a45
+}
+
+.ant-btn-group .ant-btn-primary + .ant-btn-primary, .ant-btn-group .ant-btn-primary:last-child:not(:first-child) {
+    border-left-color: #ff7a45
+}
+
+.ant-btn-ghost:focus, .ant-btn-ghost:hover {
+    color: #ff7a45;
+    border-color: #ff7a45
+}
+
+.ant-btn-ghost.active, .ant-btn-ghost:active {
+    color: #d4380d;
+    border-color: #d4380d
+}
+
+.ant-btn-dashed:focus, .ant-btn-dashed:hover {
+    color: #ff7a45;
+    border-color: #ff7a45
+}
+
+.ant-btn-dashed.active, .ant-btn-dashed:active {
+    color: #d4380d;
+    border-color: #d4380d
+}
+
+.ant-btn-link {
+    color: #fa541c
+}
+
+    .ant-btn-link:focus, .ant-btn-link:hover {
+        color: #ff7a45;
+        border-color: #ff7a45
+    }
+
+    .ant-btn-link.active, .ant-btn-link:active {
+        color: #d4380d;
+        border-color: #d4380d
+    }
+
+.ant-btn-background-ghost.ant-btn-primary {
+    color: #fa541c;
+    border-color: #fa541c
+}
+
+    .ant-btn-background-ghost.ant-btn-primary:focus, .ant-btn-background-ghost.ant-btn-primary:hover {
+        color: #ff7a45;
+        border-color: #ff7a45
+    }
+
+    .ant-btn-background-ghost.ant-btn-primary.active, .ant-btn-background-ghost.ant-btn-primary:active {
+        color: #d4380d;
+        border-color: #d4380d
+    }
+
+.ant-btn-background-ghost.ant-btn-link {
+    color: #fa541c
+}
+
+    .ant-btn-background-ghost.ant-btn-link:focus, .ant-btn-background-ghost.ant-btn-link:hover {
+        color: #ff7a45
+    }
+
+    .ant-btn-background-ghost.ant-btn-link.active, .ant-btn-background-ghost.ant-btn-link:active {
+        color: #d4380d
+    }
+
+.ant-fullcalendar-value:hover {
+    background: #fff2e8
+}
+
+.ant-fullcalendar-value:active {
+    background: #fa541c
+}
+
+.ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value, .ant-fullcalendar-today .ant-fullcalendar-value {
+    -webkit-box-shadow: 0 0 0 1px #fa541c inset;
+    box-shadow: inset 0 0 0 1px #fa541c
+}
+
+.ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value, .ant-fullcalendar-selected-day .ant-fullcalendar-value {
+    background: #fa541c
+}
+
+.ant-fullcalendar-fullscreen .ant-fullcalendar-date:hover, .ant-fullcalendar-fullscreen .ant-fullcalendar-month:hover {
+    background: #fff2e8
+}
+
+.ant-fullcalendar-fullscreen .ant-fullcalendar-date:active, .ant-fullcalendar-fullscreen .ant-fullcalendar-month:active {
+    background: #ffd8bf
+}
+
+.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-month, .ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-date {
+    border-top-color: #fa541c
+}
+
+.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-month, .ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-date {
+    background: #fff2e8
+}
+
+.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value, .ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-value {
+    color: #fa541c
+}
+
+.ant-card-actions > li > span:hover {
+    color: #fa541c
+}
+
+.ant-card-actions > li > span a:not(.ant-btn):hover, .ant-card-actions > li > span > .anticon:hover {
+    color: #fa541c
+}
+
+.ant-cascader-picker:focus .ant-cascader-input {
+    border-color: #ff7a45;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-cascader-picker-label:hover + .ant-cascader-input {
+    border-color: #ff7a45
+}
+
+.ant-cascader-menu-item:hover {
+    background: #fff2e8
+}
+
+.ant-checkbox-input:focus + .ant-checkbox-inner, .ant-checkbox-wrapper:hover .ant-checkbox-inner, .ant-checkbox:hover .ant-checkbox-inner {
+    border-color: #fa541c
+}
+
+.ant-checkbox-checked:after {
+    border: 1px solid #fa541c
+}
+
+.ant-checkbox-checked .ant-checkbox-inner {
+    background-color: #fa541c;
+    border-color: #fa541c
+}
+
+.ant-checkbox-indeterminate .ant-checkbox-inner:after {
+    background-color: #fa541c
+}
+
+.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled) {
+    border-color: #ff7a45
+}
+
+.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled) {
+    border-color: #ff7a45;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-calendar-header a:hover {
+    color: #ff7a45
+}
+
+.ant-calendar-date:hover {
+    background: #fff2e8
+}
+
+.ant-calendar-date:active {
+    background: #ff7a45
+}
+
+:not(.ant-calendar-selected-date):not(.ant-calendar-selected-day).ant-calendar-today .ant-calendar-date {
+    color: #fa541c;
+    border-color: #fa541c
+}
+
+.ant-calendar-selected-day .ant-calendar-date {
+    background: #ffd8bf
+}
+
+.ant-calendar .ant-calendar-ok-btn {
+    background-color: #fa541c;
+    border-color: #fa541c
+}
+
+    .ant-calendar .ant-calendar-ok-btn:focus, .ant-calendar .ant-calendar-ok-btn:hover {
+        background-color: #ff7a45;
+        border-color: #ff7a45
+    }
+
+    .ant-calendar .ant-calendar-ok-btn.active, .ant-calendar .ant-calendar-ok-btn:active {
+        background-color: #d4380d;
+        border-color: #d4380d
+    }
+
+.ant-calendar-range .ant-calendar-today :not(.ant-calendar-disabled-cell) :not(.ant-calendar-last-month-cell) :not(.ant-calendar-next-month-btn-day) .ant-calendar-date {
+    color: #fa541c;
+    background: #ffd8bf;
+    border-color: #fa541c
+}
+
+.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date, .ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date {
+    background: #fa541c
+}
+
+    .ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date:hover, .ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date:hover {
+        background: #fa541c
+    }
+
+.ant-calendar-range .ant-calendar-input:hover, .ant-calendar-range .ant-calendar-time-picker-input:hover {
+    border-color: #ff7a45
+}
+
+.ant-calendar-range .ant-calendar-input:focus, .ant-calendar-range .ant-calendar-time-picker-input:focus {
+    border-color: #ff7a45;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-calendar-range .ant-calendar-in-range-cell:before {
+    background: #fff2e8
+}
+
+.ant-calendar-time-picker-select li:hover {
+    background: #fff2e8
+}
+
+.ant-calendar-time-picker-select li:focus {
+    color: #fa541c
+}
+
+.ant-calendar-month-panel-header a:hover {
+    color: #ff7a45
+}
+
+.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month, .ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover {
+    background: #fa541c
+}
+
+.ant-calendar-month-panel-month:hover {
+    background: #fff2e8
+}
+
+.ant-calendar-year-panel-header a:hover {
+    color: #ff7a45
+}
+
+.ant-calendar-year-panel-year:hover {
+    background: #fff2e8
+}
+
+.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year, .ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover {
+    background: #fa541c
+}
+
+.ant-calendar-decade-panel-header a:hover {
+    color: #ff7a45
+}
+
+.ant-calendar-decade-panel-decade:hover {
+    background: #fff2e8
+}
+
+.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade, .ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover {
+    background: #fa541c
+}
+
+.ant-calendar-week-number .ant-calendar-body tr:hover {
+    background: #fff2e8
+}
+
+.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week {
+    background: #ffd8bf
+}
+
+.ant-dropdown-menu-item-selected, .ant-dropdown-menu-item-selected > a, .ant-dropdown-menu-submenu-title-selected, .ant-dropdown-menu-submenu-title-selected > a {
+    color: #fa541c;
+    background-color: #fff2e8
+}
+
+.ant-dropdown-menu-item:hover, .ant-dropdown-menu-submenu-title:hover {
+    background-color: #fff2e8
+}
+
+.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title {
+    color: #fa541c
+}
+
+.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected, .ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover, .ant-dropdown-menu-dark .ant-dropdown-menu-item-selected > a {
+    background: #fa541c
+}
+
+.has-error .ant-transfer-list-search:not([disabled]):hover {
+    border-color: #ff7a45
+}
+
+.has-error .ant-transfer-list-search:not([disabled]):focus {
+    border-color: #ff7a45;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.is-validating.has-feedback .ant-form-item-children-icon {
+    color: #fa541c
+}
+
+.ant-input:focus, .ant-input:hover {
+    border-color: #ff7a45
+}
+
+.ant-input:focus {
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-input-group-addon .ant-select-focused .ant-select-selection, .ant-input-group-addon .ant-select-open .ant-select-selection {
+    color: #fa541c
+}
+
+.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {
+    border-color: #ff7a45
+}
+
+.ant-input-number:focus {
+    border-color: #ff7a45;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-input-number-handler:hover .ant-input-number-handler-down-inner, .ant-input-number-handler:hover .ant-input-number-handler-up-inner {
+    color: #ff7a45
+}
+
+.ant-input-number-focused, .ant-input-number:hover {
+    border-color: #ff7a45
+}
+
+.ant-input-number-focused {
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-list-item-meta-title > a:hover {
+    color: #fa541c
+}
+
+.ant-mentions:focus, .ant-mentions:hover {
+    border-color: #ff7a45
+}
+
+.ant-mentions:focus {
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-mentions-focused {
+    border-color: #ff7a45;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-mentions-dropdown-menu-item:hover {
+    background-color: #fff2e8
+}
+
+.ant-mentions-dropdown-menu-item-active {
+    background-color: #fff2e8
+}
+
+.ant-menu-submenu-selected {
+    color: #fa541c
+}
+
+.ant-menu-item:active, .ant-menu-submenu-title:active {
+    background: #fff2e8
+}
+
+.ant-menu-item > a:hover {
+    color: #fa541c
+}
+
+.ant-menu-item > .ant-badge > a:hover {
+    color: #fa541c
+}
+
+.ant-menu-item-active, .ant-menu-item:hover, .ant-menu-submenu-active, .ant-menu-submenu-title:hover, .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open {
+    color: #fa541c
+}
+
+.ant-menu-item-selected, .ant-menu-item-selected > a, .ant-menu-item-selected > a:hover {
+    color: #fa541c
+}
+
+.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
+    background-color: #fff2e8
+}
+
+.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before {
+    background: -webkit-gradient(linear,left top,right top,from(#fa541c),to(#fa541c));
+    background: linear-gradient(90deg,#fa541c,#fa541c)
+}
+
+.ant-menu-vertical .ant-menu-submenu-selected, .ant-menu-vertical .ant-menu-submenu-selected > a, .ant-menu-vertical-left .ant-menu-submenu-selected, .ant-menu-vertical-left .ant-menu-submenu-selected > a, .ant-menu-vertical-right .ant-menu-submenu-selected, .ant-menu-vertical-right .ant-menu-submenu-selected > a {
+    color: #fa541c
+}
+
+.ant-menu-horizontal > .ant-menu-item-active, .ant-menu-horizontal > .ant-menu-item-open, .ant-menu-horizontal > .ant-menu-item-selected, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover, .ant-menu-horizontal > .ant-menu-submenu-active, .ant-menu-horizontal > .ant-menu-submenu-open, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected, .ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover {
+    color: #fa541c;
+    border-bottom: 2px solid #fa541c
+}
+
+.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item > a:hover {
+    color: #fa541c
+}
+
+.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item-selected > a {
+    color: #fa541c
+}
+
+.ant-menu-inline .ant-menu-item:after, .ant-menu-vertical .ant-menu-item:after, .ant-menu-vertical-left .ant-menu-item:after, .ant-menu-vertical-right .ant-menu-item:after {
+    border-right: 3px solid #fa541c
+}
+
+.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected, .ant-menu.ant-menu-dark .ant-menu-item-selected {
+    background-color: #fa541c
+}
+
+.ant-page-header-back-button {
+    color: #fa541c
+}
+
+    .ant-page-header-back-button:focus, .ant-page-header-back-button:hover {
+        color: #ff7a45
+    }
+
+    .ant-page-header-back-button:active {
+        color: #d4380d
+    }
+
+.ant-pagination-item:focus, .ant-pagination-item:hover {
+    border-color: #fa541c
+}
+
+    .ant-pagination-item:focus a, .ant-pagination-item:hover a {
+        color: #fa541c
+    }
+
+.ant-pagination-item-active {
+    border-color: #fa541c
+}
+
+    .ant-pagination-item-active a {
+        color: #fa541c
+    }
+
+    .ant-pagination-item-active:focus, .ant-pagination-item-active:hover {
+        border-color: #ff7a45
+    }
+
+        .ant-pagination-item-active:focus a, .ant-pagination-item-active:hover a {
+            color: #ff7a45
+        }
+
+.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon, .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon {
+    color: #fa541c
+}
+
+.ant-pagination-next:hover a, .ant-pagination-prev:hover a {
+    border-color: #ff7a45
+}
+
+.ant-pagination-next:focus .ant-pagination-item-link, .ant-pagination-next:hover .ant-pagination-item-link, .ant-pagination-prev:focus .ant-pagination-item-link, .ant-pagination-prev:hover .ant-pagination-item-link {
+    color: #fa541c;
+    border-color: #fa541c
+}
+
+.ant-pagination-options-quick-jumper input:focus, .ant-pagination-options-quick-jumper input:hover {
+    border-color: #ff7a45
+}
+
+.ant-pagination-options-quick-jumper input:focus {
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-pagination-simple .ant-pagination-simple-pager input:hover {
+    border-color: #fa541c
+}
+
+.ant-radio-input:focus + .ant-radio-inner, .ant-radio-wrapper:hover .ant-radio, .ant-radio:hover .ant-radio-inner {
+    border-color: #fa541c
+}
+
+.ant-radio-input:focus + .ant-radio-inner {
+    -webkit-box-shadow: 0 0 0 3px rgba(250,84,28,.08);
+    box-shadow: 0 0 0 3px rgba(250,84,28,.08)
+}
+
+.ant-radio-checked:after {
+    border: 1px solid #fa541c
+}
+
+.ant-radio-inner:after {
+    background-color: #fa541c
+}
+
+.ant-radio-checked .ant-radio-inner {
+    border-color: #fa541c
+}
+
+.ant-radio-button-wrapper:hover {
+    color: #fa541c
+}
+
+.ant-radio-button-wrapper:focus-within {
+    outline: 3px solid rgba(250,84,28,.06)
+}
+
+.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
+    color: #fa541c;
+    border-color: #fa541c;
+    -webkit-box-shadow: -1px 0 0 0 #fa541c;
+    box-shadow: -1px 0 0 0 #fa541c
+}
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before {
+        background-color: #fa541c !important
+    }
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child {
+        border-color: #fa541c
+    }
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
+        color: #ff7a45;
+        border-color: #ff7a45;
+        -webkit-box-shadow: -1px 0 0 0 #ff7a45;
+        box-shadow: -1px 0 0 0 #ff7a45
+    }
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {
+        color: #d4380d;
+        border-color: #d4380d;
+        -webkit-box-shadow: -1px 0 0 0 #d4380d;
+        box-shadow: -1px 0 0 0 #d4380d
+    }
+
+    .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {
+        outline: 3px solid rgba(250,84,28,.06)
+    }
+
+.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
+    background: #fa541c;
+    border-color: #fa541c
+}
+
+    .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
+        background: #ff7a45;
+        border-color: #ff7a45
+    }
+
+    .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {
+        background: #d4380d;
+        border-color: #d4380d
+    }
+
+    .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {
+        outline: 3px solid rgba(250,84,28,.06)
+    }
+
+.ant-select-selection:hover {
+    border-color: #ff7a45
+}
+
+.ant-select-focused .ant-select-selection, .ant-select-selection:active, .ant-select-selection:focus {
+    border-color: #ff7a45;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-select-open .ant-select-selection {
+    border-color: #ff7a45;
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled) {
+    background-color: #fff2e8
+}
+
+.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled) {
+    background-color: #fff2e8
+}
+
+.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon, .ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon {
+    color: #fa541c
+}
+
+.ant-slider-track {
+    background-color: #ffbb96
+}
+
+.ant-slider-handle {
+    border: 2px solid #ffbb96
+}
+
+    .ant-slider-handle:focus {
+        border-color: #fb7649;
+        -webkit-box-shadow: 0 0 0 5px rgba(250,84,28,.2);
+        box-shadow: 0 0 0 5px rgba(250,84,28,.2)
+    }
+
+    .ant-slider-handle.ant-tooltip-open {
+        border-color: #fa541c
+    }
+
+.ant-slider:hover .ant-slider-track {
+    background-color: #ff9c6e
+}
+
+.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) {
+    border-color: #ff9c6e
+}
+
+.ant-slider-dot-active {
+    border-color: #fdaa8e
+}
+
+.ant-spin {
+    color: #fa541c
+}
+
+.ant-spin-dot-item {
+    background-color: #fa541c
+}
+
+.ant-steps-item-icon > .ant-steps-icon {
+    color: #fa541c
+}
+
+.ant-steps-item-process .ant-steps-item-icon {
+    border-color: #fa541c
+}
+
+:not(.ant-steps-item-process).ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
+    color: #fa541c
+}
+
+.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+    background: #fa541c
+}
+
+.ant-steps-item-process .ant-steps-item-icon {
+    background: #fa541c
+}
+
+.ant-steps-item-finish .ant-steps-item-icon {
+    border-color: #fa541c
+}
+
+    .ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon {
+        color: #fa541c
+    }
+
+        .ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+            background: #fa541c
+        }
+
+.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after {
+    background-color: #fa541c
+}
+
+.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail:after {
+    background-color: #fa541c
+}
+
+.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-description, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-subtitle, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-title {
+    color: #fa541c
+}
+
+.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role=button]:hover .ant-steps-item-icon {
+    border-color: #fa541c
+}
+
+    .ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role=button]:hover .ant-steps-item-icon .ant-steps-icon {
+        color: #fa541c
+    }
+
+.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
+    color: #fa541c
+}
+
+.ant-steps-navigation .ant-steps-item:before {
+    background-color: #fa541c
+}
+
+.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon {
+    color: #fa541c
+}
+
+.ant-switch:focus {
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-switch-checked {
+    background-color: #fa541c
+}
+
+.ant-table-thead > tr > th .ant-table-filter-selected.anticon {
+    color: #fa541c
+}
+
+.ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on, .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on {
+    color: #fa541c
+}
+
+.ant-table-tbody > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-thead > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-thead > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {
+    background: #fff2e8
+}
+
+.ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after {
+    color: #fa541c;
+    text-shadow: 0 0 2px #ffd8bf
+}
+
+.ant-table-filter-dropdown-link {
+    color: #fa541c
+}
+
+    .ant-table-filter-dropdown-link:hover {
+        color: #ff7a45
+    }
+
+    .ant-table-filter-dropdown-link:active {
+        color: #d4380d
+    }
+
+.ant-table-row-expand-icon {
+    color: #fa541c
+}
+
+    .ant-table-row-expand-icon:focus, .ant-table-row-expand-icon:hover {
+        color: #ff7a45
+    }
+
+    .ant-table-row-expand-icon:active {
+        color: #d4380d
+    }
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active {
+    color: #fa541c
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-disabled {
+    color: #fa541c
+}
+
+.ant-tabs-extra-content .ant-tabs-new-tab:hover {
+    color: #fa541c;
+    border-color: #fa541c
+}
+
+.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active {
+    color: #fa541c
+}
+
+.ant-tabs-ink-bar {
+    background-color: #fa541c
+}
+
+.ant-tabs-nav .ant-tabs-tab:hover {
+    color: #ff7a45
+}
+
+.ant-tabs-nav .ant-tabs-tab:active {
+    color: #d4380d
+}
+
+.ant-tabs-nav .ant-tabs-tab-active {
+    color: #fa541c
+}
+
+.ant-tag-checkable:not(.ant-tag-checkable-checked):hover {
+    color: #fa541c
+}
+
+.ant-tag-checkable-checked {
+    background-color: #fa541c
+}
+
+.ant-tag-checkable:active {
+    background-color: #d4380d
+}
+
+.ant-tag-volcano {
+    color: #fa541c;
+    background: #fff2e8;
+    border-color: #ffbb96
+}
+
+.ant-tag-volcano-inverse {
+    background: #fa541c;
+    border-color: #fa541c
+}
+
+.ant-time-picker-panel-select li:focus {
+    color: #fa541c
+}
+
+.ant-time-picker-panel-select li:hover {
+    background: #fff2e8
+}
+
+.ant-time-picker-input:focus, .ant-time-picker-input:hover {
+    border-color: #ff7a45
+}
+
+.ant-time-picker-input:focus {
+    -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+    box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-timeline-item-head-blue {
+    color: #fa541c;
+    border-color: #fa541c
+}
+
+.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover {
+    background-color: #fff2e8
+}
+
+@-webkit-keyframes transferHighlightIn {
+    0% {
+        background: #ffd8bf
+    }
+}
+
+@keyframes transferHighlightIn {
+    0% {
+        background: #ffd8bf
+    }
+}
+
+.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover:before, .ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover:before {
+    background: #fff2e8
+}
+
+.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner, .ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner {
+    border-color: #fa541c
+}
+
+.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after, .ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after {
+    border-color: #fa541c
+}
+
+.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper:before, .ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper:before {
+    background: #fa541c
+}
+
+.ant-tree-checkbox-input:focus + .ant-tree-checkbox-inner, .ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner, .ant-tree-checkbox:hover .ant-tree-checkbox-inner {
+    border-color: #fa541c
+}
+
+.ant-tree-checkbox-checked:after {
+    border: 1px solid #fa541c
+}
+
+.ant-tree-checkbox-checked .ant-tree-checkbox-inner {
+    background-color: #fa541c;
+    border-color: #fa541c
+}
+
+.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner:after {
+    background-color: #fa541c
+}
+
+.ant-tree li.drag-over > span[draggable] {
+    background-color: #fa541c
+}
+
+.ant-tree li.drag-over-gap-top > span[draggable] {
+    border-top-color: #fa541c
+}
+
+.ant-tree li.drag-over-gap-bottom > span[draggable] {
+    border-bottom-color: #fa541c
+}
+
+.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-loading-icon, .ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-loading-icon {
+    color: #fa541c
+}
+
+.ant-tree li .ant-tree-node-content-wrapper:hover {
+    background-color: #fff2e8
+}
+
+.ant-tree li .ant-tree-node-content-wrapper.ant-tree-node-selected {
+    background-color: #ffd8bf
+}
+
+.ant-select-tree-checkbox-input:focus + .ant-select-tree-checkbox-inner, .ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-inner, .ant-select-tree-checkbox:hover .ant-select-tree-checkbox-inner {
+    border-color: #fa541c
+}
+
+.ant-select-tree-checkbox-checked:after {
+    border: 1px solid #fa541c
+}
+
+.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner {
+    background-color: #fa541c;
+    border-color: #fa541c
+}
+
+.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner:after {
+    background-color: #fa541c
+}
+
+.ant-select-tree li .ant-select-tree-node-content-wrapper:hover {
+    background-color: #fff2e8
+}
+
+.ant-select-tree li .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected {
+    background-color: #ffd8bf
+}
+
+.ant-select-tree li span.ant-select-icon_loading .ant-select-switcher-loading-icon {
+    color: #fa541c
+}
+
+.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-loading-icon, .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-loading-icon {
+    color: #fa541c
+}
+
+.ant-upload.ant-upload-select-picture-card:hover {
+    border-color: #fa541c
+}
+
+.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled) {
+    border-color: #d4380d
+}
+
+.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover {
+    border-color: #ff7a45
+}
+
+.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon {
+    color: #ff7a45
+}
+
+.ant-upload-list-item:hover .ant-upload-list-item-info {
+    background-color: #fff2e8
+}
+
+.form-designer-container-9136076486841527 .header {
+    background: #fa541c
+}
+
+.form-designer-container-9136076486841527 .operating-area a:hover {
+    color: #fa541c
+}
+
+.form-designer-container-9136076486841527 .content aside.left ul li:hover {
+    color: #fa541c;
+    border: 1px solid #fa541c;
+    -webkit-box-shadow: 0 2px 6px #fa541c;
+    box-shadow: 0 2px 6px #fa541c
+}
+
+.form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .moving:before {
+    background: #fa541c
+}
+
+.form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box:hover {
+    background: rgba(250,84,28,.2)
+}
+
+.form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box:before {
+    background: #fa541c
+}
+
+.form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box.active {
+    background: rgba(250,84,28,.2)
+}
+
+.form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box .show-key-box {
+    color: #fa541c
+}
+
+.form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .copy {
+    background: #fa541c
+}
+
+.form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .delete {
+    background: #fa541c
+}
+
+.form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box {
+    background: rgba(250,84,28,.12)
+}
+
+    .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout {
+        background: rgba(250,84,28,.12)
+    }
+
+    .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box.active {
+        background: rgba(250,84,28,.24)
+    }
+
+        .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box.active:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box.active:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box.active:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box.active:before {
+            background: #fa541c
+        }
+
+    .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .copy {
+        background: #fa541c
+    }
+
+    .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .delete {
+        background: #fa541c
+    }
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/user.fa7ae686.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/user.fa7ae686.css
new file mode 100644
index 0000000..9287628
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/user.fa7ae686.css
@@ -0,0 +1,723 @@
+.user-register.error {
+    color: red
+}
+
+.user-register.warning {
+    color: #ff7e05
+}
+
+.user-register.success {
+    color: #52c41a
+}
+
+.user-layout-register .ant-input-group-addon:first-child {
+    background-color: #fff
+}
+
+.user-layout-register > h3[data-v-0a77d414] {
+    font-size: 16px;
+    margin-bottom: 20px
+}
+
+.user-layout-register .getCaptcha[data-v-0a77d414] {
+    display: block;
+    width: 100%;
+    height: 40px
+}
+
+.user-layout-register .register-button[data-v-0a77d414] {
+    width: 50%
+}
+
+.user-layout-register .login[data-v-0a77d414] {
+    float: right;
+    line-height: 40px
+}
+
+.head-info[data-v-432d5786] {
+    position: relative;
+    text-align: left;
+    padding: 0 32px 0 0;
+    min-width: 125px
+}
+
+.head-info.center[data-v-432d5786] {
+    text-align: center;
+    padding: 0 32px
+}
+
+.head-info span[data-v-432d5786] {
+    color: rgba(0,0,0,.45);
+    display: inline-block;
+    font-size: 14px;
+    line-height: 22px;
+    margin-bottom: 4px
+}
+
+.head-info p[data-v-432d5786] {
+    color: rgba(0,0,0,.85);
+    font-size: 24px;
+    line-height: 32px;
+    margin: 0
+}
+
+.head-info em[data-v-432d5786] {
+    background-color: #e8e8e8;
+    position: absolute;
+    height: 56px;
+    width: 1px;
+    top: 0;
+    right: 0
+}
+
+.project-list .card-title[data-v-bc6946c6] {
+    font-size: 0
+}
+
+.project-list .card-title a[data-v-bc6946c6] {
+    color: rgba(0,0,0,.85);
+    margin-left: 12px;
+    line-height: 24px;
+    height: 24px;
+    display: inline-block;
+    vertical-align: top;
+    font-size: 14px
+}
+
+    .project-list .card-title a[data-v-bc6946c6]:hover {
+        color: #1890ff
+    }
+
+.project-list .card-description[data-v-bc6946c6] {
+    color: rgba(0,0,0,.45);
+    height: 44px;
+    line-height: 22px;
+    overflow: hidden
+}
+
+.project-list .project-item[data-v-bc6946c6] {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    margin-top: 8px;
+    overflow: hidden;
+    font-size: 12px;
+    height: 20px;
+    line-height: 20px
+}
+
+.project-list .project-item a[data-v-bc6946c6] {
+    color: rgba(0,0,0,.45);
+    display: inline-block;
+    -webkit-box-flex: 1;
+    -ms-flex: 1 1 0px;
+    flex: 1 1 0
+}
+
+    .project-list .project-item a[data-v-bc6946c6]:hover {
+        color: #1890ff
+    }
+
+.project-list .project-item .datetime[data-v-bc6946c6] {
+    color: rgba(0,0,0,.25);
+    -webkit-box-flex: 0;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    float: right
+}
+
+.project-list .ant-card-meta-description[data-v-bc6946c6] {
+    color: rgba(0,0,0,.45);
+    height: 44px;
+    line-height: 22px;
+    overflow: hidden
+}
+
+.item-group[data-v-bc6946c6] {
+    padding: 20px 0 8px 24px;
+    font-size: 0
+}
+
+.item-group a[data-v-bc6946c6] {
+    color: rgba(0,0,0,.65);
+    display: inline-block;
+    font-size: 14px;
+    margin-bottom: 13px;
+    width: 25%
+}
+
+.members a[data-v-bc6946c6] {
+    display: block;
+    margin: 12px 0;
+    line-height: 24px;
+    height: 24px
+}
+
+.members a .member[data-v-bc6946c6] {
+    font-size: 14px;
+    color: rgba(0,0,0,.65);
+    line-height: 24px;
+    max-width: 100px;
+    vertical-align: top;
+    margin-left: 12px;
+    -webkit-transition: all .3s;
+    transition: all .3s;
+    display: inline-block
+}
+
+.members a:hover span[data-v-bc6946c6] {
+    color: #1890ff
+}
+
+.mobile .project-list .project-card-grid[data-v-bc6946c6] {
+    width: 100%
+}
+
+.mobile .more-info[data-v-bc6946c6] {
+    border: 0;
+    padding-top: 16px;
+    margin: 16px 0 16px
+}
+
+.mobile .headerContent .title .welcome-text[data-v-bc6946c6] {
+    display: none
+}
+
+.label-tag {
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    justify-content: center
+}
+
+    .label-tag, .label-tag .label-item {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-align: center;
+        -ms-flex-align: center;
+        align-items: center
+    }
+
+        .label-tag .label-item {
+            margin: 5px;
+            font-size: 5px
+        }
+
+            .label-tag .label-item div {
+                width: 12px;
+                height: 12px;
+                margin-left: 5px
+            }
+
+#top-header {
+    position: relative;
+    width: 100%;
+    height: 100px;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-pack: justify;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+    -ms-flex-negative: 0;
+    flex-shrink: 0
+}
+
+    #top-header .header-center-decoration {
+        width: 40%;
+        height: 80px;
+        margin-top: 30px
+    }
+
+    #top-header .header-left-decoration, #top-header .header-right-decoration {
+        width: 25%;
+        height: 60px
+    }
+
+    #top-header .center-title {
+        font-size: 28px;
+        font-weight: 700;
+        top: 15px;
+        color: #40faee
+    }
+
+    #top-header .center-title, #top-header .title-time {
+        position: absolute;
+        left: 50%;
+        -webkit-transform: translateX(-50%);
+        transform: translateX(-50%)
+    }
+
+    #top-header .title-time {
+        font-size: 10px;
+        top: 55px;
+        color: #6bd4e0
+    }
+
+#left1 {
+    width: 100%;
+    height: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    background-color: rgba(6,30,93,.5)
+}
+
+    #left1 .dv-scroll-board {
+        position: absolute;
+        top: 1%;
+        bottom: 0
+    }
+
+#left12 {
+    width: 100%;
+    height: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    background-color: rgba(6,30,93,.5)
+}
+
+    #left12 .ranking-board-title {
+        position: absolute;
+        left: 10px;
+        font-size: 14px;
+        top: 10px;
+        color: #6bd4e0
+    }
+
+    #left12 .board {
+        width: 90%;
+        position: absolute;
+        top: 50px;
+        bottom: 40px;
+        padding: 0 15px
+    }
+
+.left2 {
+    width: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    background-color: rgba(6,30,93,.5)
+}
+
+    .left2 .lc1-header {
+        position: absolute;
+        left: 10px;
+        font-size: 14px;
+        top: 10px;
+        color: #6bd4e0
+    }
+
+    .left2 .lc1-chart {
+        width: 98%;
+        position: absolute;
+        top: 20%;
+        left: 1%;
+        bottom: 0
+    }
+
+.left22 {
+    width: 100%;
+    height: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    background-color: rgba(6,30,93,.5)
+}
+
+    .left22 .chart-name {
+        position: absolute;
+        left: 10px;
+        font-size: 14px;
+        top: 10px;
+        color: #6bd4e0
+    }
+
+    .left22 .dv-charts-container {
+        width: 98%;
+        position: absolute;
+        top: 1%;
+        left: 1%;
+        bottom: 0
+    }
+
+#left23 {
+    width: 100%;
+    height: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    background-color: rgba(6,30,93,.5);
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column
+}
+
+    #left23 .water-level-chart-title {
+        position: absolute;
+        left: 10px;
+        font-size: 14px;
+        top: 10px;
+        color: #6bd4e0
+    }
+
+    #left23 .dv-decoration-9 {
+        width: 80%;
+        height: 80%;
+        position: absolute;
+        left: 50%;
+        top: 52%;
+        -webkit-transform: translate(-50%,-48%);
+        transform: translate(-50%,-48%);
+        color: #6bd4e0;
+        font-weight: 700;
+        font-size: 40px
+    }
+
+#right1 {
+    width: 100%;
+    height: 100%;
+    background-color: rgba(6,30,93,.5)
+}
+
+    #right1 .rose-chart-title {
+        position: absolute;
+        left: 10px;
+        font-size: 14px;
+        top: 10px;
+        color: #6bd4e0
+    }
+
+    #right1 .dv-charts-container {
+        height: calc(100% - 50px);
+        padding-top: 13%
+    }
+
+.right2 {
+    width: 100%;
+    height: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    background-color: rgba(6,30,93,.5)
+}
+
+    .right2 .chart-name {
+        position: absolute;
+        left: 10px;
+        font-size: 14px;
+        top: 10px;
+        color: #6bd4e0
+    }
+
+.right3 {
+    width: 100%;
+    height: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    background-color: rgba(6,30,93,.5)
+}
+
+    .right3 .lc1-header {
+        position: absolute;
+        left: 10px;
+        font-size: 14px;
+        top: 10px;
+        color: #6bd4e0
+    }
+
+    .right3 .lc1-chart {
+        width: 98%;
+        position: absolute;
+        top: 20%;
+        left: 1%;
+        bottom: 0
+    }
+
+.right4 {
+    width: 100%;
+    height: 100%;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    background-color: rgba(6,30,93,.5)
+}
+
+    .right4 .chart-name {
+        position: absolute;
+        left: 10px;
+        font-size: 14px;
+        top: 10px;
+        color: #6bd4e0
+    }
+
+    .right4 .dv-charts-container {
+        height: 100%;
+        top: 10%;
+        left: 4%;
+        position: absolute
+    }
+
+#middle1 {
+    height: 100%;
+    padding: 5px 20px 5px 20px;
+    -ms-flex-negative: 0;
+    flex-shrink: 0;
+    -webkit-box-pack: justify;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+    background-color: rgba(6,30,93,.5)
+}
+
+    #middle1, #middle1 .digital-flop-item {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-align: center;
+        -ms-flex-align: center;
+        align-items: center
+    }
+
+        #middle1 .digital-flop-item {
+            width: 100%;
+            -webkit-box-orient: vertical;
+            -webkit-box-direction: normal;
+            -ms-flex-direction: column;
+            flex-direction: column;
+            -webkit-box-pack: center;
+            -ms-flex-pack: center;
+            justify-content: center;
+            border-left: 3px solid #061e5d;
+            border-right: 3px solid #061e5d
+        }
+
+        #middle1 .digital-flop-title {
+            font-size: 10px;
+            margin-bottom: 10px;
+            color: #40faee;
+            margin-top: -20px;
+            font-family: 寰蒋闆呴粦
+        }
+
+        #middle1 .digital-flop {
+            display: -webkit-box;
+            display: -ms-flexbox;
+            display: flex;
+            font-family: 榛戜綋
+        }
+
+#middle2 {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    background-color: rgba(6,30,93,.5)
+}
+
+    #middle2, #middle2 .dv-flyline-chart-enhanced, .middle3 {
+        width: 100%;
+        height: 100%
+    }
+
+.middle3 {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    position: relative;
+    background-color: rgba(6,30,93,.5)
+}
+
+    .middle3 .bc-chart-item {
+        width: 25%;
+        height: 100%;
+        padding-top: 20px;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box
+    }
+
+    .middle3 .bcci-header {
+        height: 50px;
+        text-align: center;
+        line-height: 50px;
+        font-size: 14px;
+        color: #6bd4e0
+    }
+
+    .middle3 .dv-active-ring-chart {
+        height: calc(100% - 80px);
+        font-size: 5px
+    }
+
+    .middle3 .label-tag {
+        height: 30px
+    }
+
+    .middle3 .active-ring-name {
+        color: #6bd4e0 !important;
+        font-size: 3px !important
+    }
+
+    .middle3 .decoration-1, .middle3 .decoration-2, .middle3 .decoration-3 {
+        display: absolute;
+        left: 0
+    }
+
+#data-view {
+    width: 100%;
+    height: 100%;
+    background-color: #030409;
+    color: #fff
+}
+
+    #data-view #dv-full-screen-container {
+        background-image: url(../img/bg.110420cf.png);
+        background-size: 100% 100%;
+        -webkit-box-shadow: 0 0 3px #00f;
+        box-shadow: 0 0 3px #00f;
+        -webkit-box-orient: vertical;
+        -ms-flex-direction: column;
+        flex-direction: column
+    }
+
+    #data-view #dv-full-screen-container, #data-view .main-container {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        -webkit-box-direction: normal
+    }
+
+    #data-view .main-container {
+        height: 100%;
+        padding: 5px;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        -webkit-box-orient: horizontal;
+        -ms-flex-direction: row;
+        flex-direction: row
+    }
+
+.table-operator[data-v-4944d898] {
+    margin-bottom: 18px
+}
+
+button[data-v-4944d898] {
+    margin-right: 8px
+}
+
+.table-operator[data-v-53b42a43] {
+    margin-bottom: 18px
+}
+
+button[data-v-53b42a43] {
+    margin-right: 8px
+}
+
+.avatar-upload-preview[data-v-b221788c] {
+    position: absolute;
+    top: 50%;
+    -webkit-transform: translate(50%,-50%);
+    transform: translate(50%,-50%);
+    width: 200px;
+    height: 200px;
+    border-radius: 50%;
+    -webkit-box-shadow: 0 0 4px #ccc;
+    box-shadow: 0 0 4px #ccc;
+    overflow: hidden
+}
+
+.avatar-upload-preview img[data-v-b221788c] {
+    width: 100%;
+    height: 100%
+}
+
+.avatar-upload-wrapper[data-v-49f8567c] {
+    height: 200px;
+    width: 100%
+}
+
+.ant-upload-preview[data-v-49f8567c] {
+    position: relative;
+    margin: 0 auto;
+    width: 100%;
+    max-width: 180px;
+    height: 180px;
+    border-radius: 50%;
+    -webkit-box-shadow: 0 0 4px #ccc;
+    box-shadow: 0 0 4px #ccc
+}
+
+.ant-upload-preview .upload-icon[data-v-49f8567c] {
+    position: absolute;
+    top: 0;
+    right: 10px;
+    font-size: 1.4rem;
+    padding: .5rem;
+    background: rgba(222,221,221,.7);
+    border-radius: 50%;
+    border: 1px solid rgba(0,0,0,.2)
+}
+
+.ant-upload-preview .mask[data-v-49f8567c] {
+    opacity: 0;
+    position: absolute;
+    background: rgba(0,0,0,.4);
+    cursor: pointer;
+    -webkit-transition: opacity .4s;
+    transition: opacity .4s
+}
+
+    .ant-upload-preview .mask[data-v-49f8567c]:hover {
+        opacity: 1
+    }
+
+.ant-upload-preview .mask i[data-v-49f8567c] {
+    font-size: 2rem;
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    margin-left: -1rem;
+    margin-top: -1rem;
+    color: #d6d6d6
+}
+
+.ant-upload-preview .mask[data-v-49f8567c], .ant-upload-preview img[data-v-49f8567c] {
+    width: 100%;
+    max-width: 180px;
+    height: 100%;
+    border-radius: 50%;
+    overflow: hidden
+}
+
+.subButton {
+    float: right
+}
+
+.subForm-item {
+    margin-bottom: 0
+}
+
+.table-operator {
+    margin-bottom: 18px
+}
+
+button {
+    margin-right: 8px
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/user.fa7ae686.css.gz b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/user.fa7ae686.css.gz
new file mode 100644
index 0000000..4b7b936
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/user.fa7ae686.css.gz
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/favicon.ico b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/favicon.ico
new file mode 100644
index 0000000..63e859b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/favicon.ico
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/bg.110420cf.png b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/bg.110420cf.png
new file mode 100644
index 0000000..dbcebae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/bg.110420cf.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/logo.a0cbaad2.png b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/logo.a0cbaad2.png
new file mode 100644
index 0000000..5a014a8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/logo.a0cbaad2.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map.3425b845.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map.3425b845.jpg
new file mode 100644
index 0000000..8e1c4f7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map.3425b845.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map.ae82c867.png b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map.ae82c867.png
new file mode 100644
index 0000000..dfbc8ff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map.ae82c867.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map2.48889afd.png b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map2.48889afd.png
new file mode 100644
index 0000000..5e40905
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map2.48889afd.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/welcome.164ddad4.png b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/welcome.164ddad4.png
new file mode 100644
index 0000000..94abec2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/welcome.164ddad4.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/index.html b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/index.html
new file mode 100644
index 0000000..d9044ed
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/index.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html>
+<html lang="zh-cmn-Hans">
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <link rel="icon" href="/logo.png">
+    <title>Admin.NET</title>
+    <style>
+        .first-loading-wrp {
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            flex-direction: column;
+            min-height: 420px;
+            height: 100%
+        }
+
+            .first-loading-wrp > h1 {
+                font-size: 128px
+            }
+
+            .first-loading-wrp .loading-wrp {
+                padding: 98px;
+                display: flex;
+                justify-content: center;
+                align-items: center
+            }
+
+        .dot {
+            animation: antRotate 1.2s infinite linear;
+            transform: rotate(45deg);
+            position: relative;
+            display: inline-block;
+            font-size: 32px;
+            width: 32px;
+            height: 32px;
+            box-sizing: border-box
+        }
+
+            .dot i {
+                width: 14px;
+                height: 14px;
+                position: absolute;
+                display: block;
+                background-color: #1890ff;
+                border-radius: 100%;
+                transform: scale(.75);
+                transform-origin: 50% 50%;
+                opacity: .3;
+                animation: antSpinMove 1s infinite linear alternate
+            }
+
+                .dot i:nth-child(1) {
+                    top: 0;
+                    left: 0
+                }
+
+                .dot i:nth-child(2) {
+                    top: 0;
+                    right: 0;
+                    -webkit-animation-delay: .4s;
+                    animation-delay: .4s
+                }
+
+                .dot i:nth-child(3) {
+                    right: 0;
+                    bottom: 0;
+                    -webkit-animation-delay: .8s;
+                    animation-delay: .8s
+                }
+
+                .dot i:nth-child(4) {
+                    bottom: 0;
+                    left: 0;
+                    -webkit-animation-delay: 1.2s;
+                    animation-delay: 1.2s
+                }
+
+        @keyframes antRotate {
+            to {
+                -webkit-transform: rotate(405deg);
+                transform: rotate(405deg)
+            }
+        }
+
+        @-webkit-keyframes antRotate {
+            to {
+                -webkit-transform: rotate(405deg);
+                transform: rotate(405deg)
+            }
+        }
+
+        @keyframes antSpinMove {
+            to {
+                opacity: 1
+            }
+        }
+
+        @-webkit-keyframes antSpinMove {
+            to {
+                opacity: 1
+            }
+        }
+    </style>
+    <link href="/css/chunk-b7a16696.677134ab.css" rel="prefetch">
+    <link href="/css/fail.8d6df989.css" rel="prefetch">
+    <link href="/css/user.fa7ae686.css" rel="prefetch">
+    <link href="/js/chunk-b7a16696.e8717d8b.js" rel="prefetch">
+    <link href="/js/fail.c1daacfd.js" rel="prefetch">
+    <link href="/js/user.6ca40864.js" rel="prefetch">
+    <link href="/css/app.7633af46.css" rel="preload" as="style">
+    <link href="/css/chunk-vendors.4659697d.css" rel="preload" as="style">
+    <link href="/js/app.413ecdbc.js" rel="preload" as="script">
+    <link href="/js/chunk-vendors.c9111d8d.js" rel="preload" as="script">
+    <link href="/css/chunk-vendors.4659697d.css" rel="stylesheet">
+    <link href="/css/app.7633af46.css" rel="stylesheet">
+</head>
+<body>
+    <noscript><strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"><div class="first-loading-wrp"><div class="loading-wrp"><span class="dot dot-spin"><i></i><i></i><i></i><i></i></span></div><div style="display: flex; justify-content: center; align-items: center;">Admin.NET</div></div></div>
+    <script src="//cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js"></script>
+    <script src="//cdn.jsdelivr.net/npm/vue-router@3.1.3/dist/vue-router.min.js"></script>
+    <script src="//cdn.jsdelivr.net/npm/vuex@3.1.1/dist/vuex.min.js"></script>
+    <script src="//cdn.jsdelivr.net/npm/axios@0.19.0/dist/axios.min.js"></script>
+    <script src="/js/chunk-vendors.c9111d8d.js"></script>
+    <script src="/js/app.413ecdbc.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/app.413ecdbc.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/app.413ecdbc.js
new file mode 100644
index 0000000..6a23689
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/app.413ecdbc.js
@@ -0,0 +1 @@
+(function (e) { function t(t) { for (var a, i, o = t[0], c = t[1], l = t[2], u = 0, d = []; u < o.length; u++)i = o[u], Object.prototype.hasOwnProperty.call(r, i) && r[i] && d.push(r[i][0]), r[i] = 0; for (a in c) Object.prototype.hasOwnProperty.call(c, a) && (e[a] = c[a]); f && f(t); while (d.length) d.shift()(); return s.push.apply(s, l || []), n() } function n() { for (var e, t = 0; t < s.length; t++) { for (var n = s[t], a = !0, i = 1; i < n.length; i++) { var o = n[i]; 0 !== r[o] && (a = !1) } a && (s.splice(t--, 1), e = c(c.s = n[0])) } return e } var a = {}, i = { app: 0 }, r = { app: 0 }, s = []; function o(e) { return c.p + "js/" + ({ fail: "fail", user: "user" }[e] || e) + "." + { "chunk-b7a16696": "e8717d8b", fail: "c1daacfd", user: "6ca40864" }[e] + ".js" } function c(t) { if (a[t]) return a[t].exports; var n = a[t] = { i: t, l: !1, exports: {} }; return e[t].call(n.exports, n, n.exports, c), n.l = !0, n.exports } c.e = function (e) { var t = [], n = { "chunk-b7a16696": 1, fail: 1, user: 1 }; i[e] ? t.push(i[e]) : 0 !== i[e] && n[e] && t.push(i[e] = new Promise((function (t, n) { for (var a = "css/" + ({ fail: "fail", user: "user" }[e] || e) + "." + { "chunk-b7a16696": "677134ab", fail: "8d6df989", user: "fa7ae686" }[e] + ".css", r = c.p + a, s = document.getElementsByTagName("link"), o = 0; o < s.length; o++) { var l = s[o], u = l.getAttribute("data-href") || l.getAttribute("href"); if ("stylesheet" === l.rel && (u === a || u === r)) return t() } var d = document.getElementsByTagName("style"); for (o = 0; o < d.length; o++) { l = d[o], u = l.getAttribute("data-href"); if (u === a || u === r) return t() } var f = document.createElement("link"); f.rel = "stylesheet", f.type = "text/css", f.onload = t, f.onerror = function (t) { var a = t && t.target && t.target.src || r, s = new Error("Loading CSS chunk " + e + " failed.\n(" + a + ")"); s.code = "CSS_CHUNK_LOAD_FAILED", s.request = a, delete i[e], f.parentNode.removeChild(f), n(s) }, f.href = r; var m = document.getElementsByTagName("head")[0]; m.appendChild(f) })).then((function () { i[e] = 0 }))); var a = r[e]; if (0 !== a) if (a) t.push(a[2]); else { var s = new Promise((function (t, n) { a = r[e] = [t, n] })); t.push(a[2] = s); var l, u = document.createElement("script"); u.charset = "utf-8", u.timeout = 120, c.nc && u.setAttribute("nonce", c.nc), u.src = o(e); var d = new Error; l = function (t) { u.onerror = u.onload = null, clearTimeout(f); var n = r[e]; if (0 !== n) { if (n) { var a = t && ("load" === t.type ? "missing" : t.type), i = t && t.target && t.target.src; d.message = "Loading chunk " + e + " failed.\n(" + a + ": " + i + ")", d.name = "ChunkLoadError", d.type = a, d.request = i, n[1](d) } r[e] = void 0 } }; var f = setTimeout((function () { l({ type: "timeout", target: u }) }), 12e4); u.onerror = u.onload = l, document.head.appendChild(u) } return Promise.all(t) }, c.m = e, c.c = a, c.d = function (e, t, n) { c.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: n }) }, c.r = function (e) { "undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }) }, c.t = function (e, t) { if (1 & t && (e = c(e)), 8 & t) return e; if (4 & t && "object" === typeof e && e && e.__esModule) return e; var n = Object.create(null); if (c.r(n), Object.defineProperty(n, "default", { enumerable: !0, value: e }), 2 & t && "string" != typeof e) for (var a in e) c.d(n, a, function (t) { return e[t] }.bind(null, a)); return n }, c.n = function (e) { var t = e && e.__esModule ? function () { return e["default"] } : function () { return e }; return c.d(t, "a", t), t }, c.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, c.p = "/", c.oe = function (e) { throw console.error(e), e }; var l = window["webpackJsonp"] = window["webpackJsonp"] || [], u = l.push.bind(l); l.push = t, l = l.slice(); for (var d = 0; d < l.length; d++)t(l[d]); var f = u; s.push([0, "chunk-vendors"]), n() })({ 0: function (e, t, n) { e.exports = n("56d7") }, "034f": function (e, t, n) { "use strict"; n("85ec") }, "04b7": function (e, t, n) { }, "05fe": function (e, t, n) { "use strict"; n("0ba0") }, "0650": function (e, t, n) { "use strict"; n("e56a") }, "0ba0": function (e, t, n) { }, "0bfe": function (e, t, n) { "use strict"; n.d(t, "b", (function () { return i })), n.d(t, "c", (function () { return r })), n.d(t, "d", (function () { return s })), n.d(t, "f", (function () { return o })), n.d(t, "g", (function () { return c })), n.d(t, "a", (function () { return l })), n.d(t, "e", (function () { return u })); var a = n("b775"); function i(e) { return Object(a["b"])({ url: "/sysMenu/list", method: "get", params: e }) } function r(e) { return Object(a["b"])({ url: "/sysMenu/tree", method: "get", params: e }) } function s(e) { return Object(a["b"])({ url: "/sysMenu/add", method: "post", data: e }) } function o(e) { return Object(a["b"])({ url: "/sysMenu/delete", method: "post", data: e }) } function c(e) { return Object(a["b"])({ url: "/sysMenu/edit", method: "post", data: e }) } function l(e) { return Object(a["b"])({ url: "/sysMenu/treeForGrant", method: "get", params: e }) } function u(e) { return Object(a["b"])({ url: "/sysMenu/change", method: "post", data: e }) } }, "0dbd": function (e, t, n) { var a = n("b2b7"); e.exports = { __esModule: !0, default: a.svgComponent({ tag: "svg", attrsMap: { t: "1551058675966", class: "icon", style: "", viewBox: "0 0 1024 1024", version: "1.1", xmlns: "http://www.w3.org/2000/svg", "p-id": "7872", "xmlns:xlink": "http://www.w3.org/1999/xlink", width: "200", height: "200" }, children: [{ tag: "defs" }, { tag: "path", attrsMap: { d: "M85.333333 512h85.333334a340.736 340.736 0 0 1 99.712-241.621333 337.493333 337.493333 0 0 1 108.458666-72.96 346.453333 346.453333 0 0 1 261.546667-1.749334A106.154667 106.154667 0 0 0 746.666667 298.666667C805.802667 298.666667 853.333333 251.136 853.333333 192S805.802667 85.333333 746.666667 85.333333c-29.397333 0-55.978667 11.776-75.221334 30.933334-103.722667-41.514667-222.848-40.874667-325.76 2.517333a423.594667 423.594667 0 0 0-135.68 91.264 423.253333 423.253333 0 0 0-91.306666 135.637333A426.88 426.88 0 0 0 85.333333 512z m741.248 133.205333c-17.109333 40.618667-41.685333 77.141333-72.96 108.416s-67.797333 55.850667-108.458666 72.96a346.453333 346.453333 0 0 1-261.546667 1.749334A106.154667 106.154667 0 0 0 277.333333 725.333333C218.197333 725.333333 170.666667 772.864 170.666667 832S218.197333 938.666667 277.333333 938.666667c29.397333 0 55.978667-11.776 75.221334-30.933334A425.173333 425.173333 0 0 0 512 938.666667a425.941333 425.941333 0 0 0 393.258667-260.352A426.325333 426.325333 0 0 0 938.666667 512h-85.333334a341.034667 341.034667 0 0 1-26.752 133.205333z", "p-id": "7873" } }, { tag: "path", attrsMap: { d: "M512 318.378667c-106.752 0-193.621333 86.869333-193.621333 193.621333S405.248 705.621333 512 705.621333s193.621333-86.869333 193.621333-193.621333S618.752 318.378667 512 318.378667z m0 301.909333c-59.690667 0-108.288-48.597333-108.288-108.288S452.309333 403.712 512 403.712s108.288 48.597333 108.288 108.288-48.597333 108.288-108.288 108.288z", "p-id": "7874" } }] }) } }, 1158: function (e, t, n) { }, "126f": function (e, t, n) { "use strict"; n.d(t, "f", (function () { return i })), n.d(t, "a", (function () { return r })), n.d(t, "e", (function () { return s })), n.d(t, "c", (function () { return o })), n.d(t, "d", (function () { return c })), n.d(t, "g", (function () { return l })), n.d(t, "b", (function () { return u })); var a = n("b775"); function i(e) { return Object(a["b"])({ url: "/sysDictType/page", method: "get", params: e }) } function r(e) { return Object(a["b"])({ url: "/sysDictType/add", method: "post", data: e }) } function s(e) { return Object(a["b"])({ url: "/sysDictType/edit", method: "post", data: e }) } function o(e) { return Object(a["b"])({ url: "/sysDictType/delete", method: "post", data: e }) } function c(e) { return Object(a["b"])({ url: "/sysDictType/dropDown", method: "get", params: e }) } function l(e) { return Object(a["b"])({ url: "/sysDictType/tree", method: "get", params: e }) } function u(e) { return Object(a["b"])({ url: "/sysDictType/changeStatus", method: "post", data: e }) } }, 1335: function (e, t, n) { "use strict"; n.r(t); var a = n("411c"), i = n.n(a), r = n("8add"), s = function () { return Object(r["a"])([{ value: 9, name: "AntV" }, { value: 8, name: "F2" }, { value: 8, name: "G2" }, { value: 8, name: "G6" }, { value: 8, name: "DataSet" }, { value: 8, name: "澧ㄨ�呭闄�" }, { value: 6, name: "Analysis" }, { value: 6, name: "Data Mining" }, { value: 6, name: "Data Vis" }, { value: 6, name: "Design" }, { value: 6, name: "Grammar" }, { value: 6, name: "Graphics" }, { value: 6, name: "Graph" }, { value: 6, name: "Hierarchy" }, { value: 6, name: "Labeling" }, { value: 6, name: "Layout" }, { value: 6, name: "Quantitative" }, { value: 6, name: "Relation" }, { value: 6, name: "Statistics" }, { value: 6, name: "鍙鍖�" }, { value: 6, name: "鏁版嵁" }, { value: 6, name: "鏁版嵁鍙鍖�" }, { value: 4, name: "Arc Diagram" }, { value: 4, name: "Bar Chart" }, { value: 4, name: "Canvas" }, { value: 4, name: "Chart" }, { value: 4, name: "DAG" }, { value: 4, name: "DG" }, { value: 4, name: "Facet" }, { value: 4, name: "Geo" }, { value: 4, name: "Line" }, { value: 4, name: "MindMap" }, { value: 4, name: "Pie" }, { value: 4, name: "Pizza Chart" }, { value: 4, name: "Punch Card" }, { value: 4, name: "SVG" }, { value: 4, name: "Sunburst" }, { value: 4, name: "Tree" }, { value: 4, name: "UML" }, { value: 3, name: "Chart" }, { value: 3, name: "View" }, { value: 3, name: "Geom" }, { value: 3, name: "Shape" }, { value: 3, name: "Scale" }, { value: 3, name: "Animate" }, { value: 3, name: "Global" }, { value: 3, name: "Slider" }, { value: 3, name: "Connector" }, { value: 3, name: "Transform" }, { value: 3, name: "Util" }, { value: 3, name: "DomUtil" }, { value: 3, name: "MatrixUtil" }, { value: 3, name: "PathUtil" }, { value: 3, name: "G" }, { value: 3, name: "2D" }, { value: 3, name: "3D" }, { value: 3, name: "Line" }, { value: 3, name: "Area" }, { value: 3, name: "Interval" }, { value: 3, name: "Schema" }, { value: 3, name: "Edge" }, { value: 3, name: "Polygon" }, { value: 3, name: "Heatmap" }, { value: 3, name: "Render" }, { value: 3, name: "Tooltip" }, { value: 3, name: "Axis" }, { value: 3, name: "Guide" }, { value: 3, name: "Coord" }, { value: 3, name: "Legend" }, { value: 3, name: "Path" }, { value: 3, name: "Helix" }, { value: 3, name: "Theta" }, { value: 3, name: "Rect" }, { value: 3, name: "Polar" }, { value: 3, name: "Dsv" }, { value: 3, name: "Csv" }, { value: 3, name: "Tsv" }, { value: 3, name: "GeoJSON" }, { value: 3, name: "TopoJSON" }, { value: 3, name: "Filter" }, { value: 3, name: "Map" }, { value: 3, name: "Pick" }, { value: 3, name: "Rename" }, { value: 3, name: "Filter" }, { value: 3, name: "Map" }, { value: 3, name: "Pick" }, { value: 3, name: "Rename" }, { value: 3, name: "Reverse" }, { value: 3, name: "sort" }, { value: 3, name: "Subset" }, { value: 3, name: "Partition" }, { value: 3, name: "Imputation" }, { value: 3, name: "Fold" }, { value: 3, name: "Aggregate" }, { value: 3, name: "Proportion" }, { value: 3, name: "Histogram" }, { value: 3, name: "Quantile" }, { value: 3, name: "Treemap" }, { value: 3, name: "Hexagon" }, { value: 3, name: "Binning" }, { value: 3, name: "kernel" }, { value: 3, name: "Regression" }, { value: 3, name: "Density" }, { value: 3, name: "Sankey" }, { value: 3, name: "Voronoi" }, { value: 3, name: "Projection" }, { value: 3, name: "Centroid" }, { value: 3, name: "H5" }, { value: 3, name: "Mobile" }, { value: 3, name: "K绾垮浘" }, { value: 3, name: "鍏崇郴鍥�" }, { value: 3, name: "鐑涘舰鍥�" }, { value: 3, name: "鑲$エ鍥�" }, { value: 3, name: "鐩存柟鍥�" }, { value: 3, name: "閲戝瓧濉斿浘" }, { value: 3, name: "鍒嗛潰" }, { value: 3, name: "鍗椾竵鏍煎皵鐜懓鍥�" }, { value: 3, name: "楗煎浘" }, { value: 3, name: "绾垮浘" }, { value: 3, name: "鐐瑰浘" }, { value: 3, name: "鏁g偣鍥�" }, { value: 3, name: "瀛愬脊鍥�" }, { value: 3, name: "鏌辩姸鍥�" }, { value: 3, name: "浠〃鐩�" }, { value: 3, name: "姘旀场鍥�" }, { value: 3, name: "婕忔枟鍥�" }, { value: 3, name: "鐑姏鍥�" }, { value: 3, name: "鐜夌帵鍥�" }, { value: 3, name: "鐩存柟鍥�" }, { value: 3, name: "鐭╁舰鏍戝浘" }, { value: 3, name: "绠卞舰鍥�" }, { value: 3, name: "鑹插潡鍥�" }, { value: 3, name: "铻烘棆鍥�" }, { value: 3, name: "璇嶄簯" }, { value: 3, name: "璇嶄簯鍥�" }, { value: 3, name: "闆疯揪鍥�" }, { value: 3, name: "闈㈢Н鍥�" }, { value: 3, name: "椹禌鍏嬪浘" }, { value: 3, name: "鐩掗』鍥�" }, { value: 3, name: "鍧愭爣杞�" }, { value: 3, name: "" }, { value: 3, name: "Jacques Bertin" }, { value: 3, name: "Leland Wilkinson" }, { value: 3, name: "William Playfair" }, { value: 3, name: "鍏宠仈" }, { value: 3, name: "鍒嗗竷" }, { value: 3, name: "鍖洪棿" }, { value: 3, name: "鍗犳瘮" }, { value: 3, name: "鍦板浘" }, { value: 3, name: "鏃堕棿" }, { value: 3, name: "姣旇緝" }, { value: 3, name: "娴佺▼" }, { value: 3, name: "瓒嬪娍" }, { value: 2, name: "浜﹀彾" }, { value: 2, name: "鍐嶉" }, { value: 2, name: "瀹岀櫧" }, { value: 2, name: "宸存��" }, { value: 2, name: "寮犲垵灏�" }, { value: 2, name: "寰℃湳" }, { value: 2, name: "鏈夌敯" }, { value: 2, name: "娌夐奔" }, { value: 2, name: "鐜変集" }, { value: 2, name: "鐢诲悍" }, { value: 2, name: "绁��" }, { value: 2, name: "缁濅簯" }, { value: 2, name: "缃楀" }, { value: 2, name: "钀у簡" }, { value: 2, name: "钁g強鐝�" }, { value: 2, name: "闄嗘矇" }, { value: 2, name: "椤惧��" }, { value: 2, name: "Domo" }, { value: 2, name: "GPL" }, { value: 2, name: "PAI" }, { value: 2, name: "SPSS" }, { value: 2, name: "SYSTAT" }, { value: 2, name: "Tableau" }, { value: 2, name: "D3" }, { value: 2, name: "Vega" }, { value: 2, name: "缁熻鍥捐〃" }]) }; i.a.mock(/\/data\/antv\/tag-cloud/, "get", s) }, "13bb": function (e, t, n) { "use strict"; var a = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { class: e.prefixCls }, [n("a-tabs", { on: { change: e.handleTabChange }, model: { value: e.currentTab, callback: function (t) { e.currentTab = t }, expression: "currentTab" } }, e._l(e.icons, (function (t) { return n("a-tab-pane", { key: t.key, attrs: { tab: t.title } }, [n("ul", e._l(t.icons, (function (a, i) { return n("li", { key: t.key + "-" + i, class: { active: e.selectedIcon == a }, on: { click: function (t) { return e.handleSelectedIcon(a) } } }, [n("a-icon", { style: { fontSize: "36px" }, attrs: { type: a } })], 1) })), 0)]) })), 1)], 1) }, i = [], r = [{ key: "directional", title: "鏂瑰悜鎬у浘鏍�", icons: ["step-backward", "step-forward", "fast-backward", "fast-forward", "shrink", "arrows-alt", "down", "up", "left", "right", "caret-up", "caret-down", "caret-left", "caret-right", "up-circle", "down-circle", "left-circle", "right-circle", "double-right", "double-left", "vertical-left", "vertical-right", "forward", "backward", "rollback", "enter", "retweet", "swap", "swap-left", "swap-right", "arrow-up", "arrow-down", "arrow-left", "arrow-right", "play-circle", "up-square", "down-square", "left-square", "right-square", "login", "logout", "menu-fold", "menu-unfold", "border-bottom", "border-horizontal", "border-inner", "border-left", "border-right", "border-top", "border-verticle", "pic-center", "pic-left", "pic-right", "radius-bottomleft", "radius-bottomright", "radius-upleft", "fullscreen", "fullscreen-exit"] }, { key: "suggested", title: "鎻愮ず寤鸿鎬у浘鏍�", icons: ["question", "question-circle", "plus", "plus-circle", "pause", "pause-circle", "minus", "minus-circle", "plus-square", "minus-square", "info", "info-circle", "exclamation", "exclamation-circle", "close", "close-circle", "close-square", "check", "check-circle", "check-square", "clock-circle", "warning", "issues-close", "stop"] }, { key: "editor", title: "缂栬緫绫诲浘鏍�", icons: ["edit", "form.vue", "copy", "scissor", "delete", "snippets", "diff", "highlight", "align-center", "align-left", "align-right", "bg-colors", "bold", "italic", "underline", "strikethrough", "redo", "undo", "zoom-in", "zoom-out", "font-colors", "font-size", "line-height", "column-height", "dash", "small-dash", "sort-ascending", "sort-descending", "drag", "ordered-list", "radius-setting"] }, { key: "data", title: "鏁版嵁绫诲浘鏍�", icons: ["area-chart", "pie-chart", "bar-chart", "dot-chart", "line-chart", "radar-chart", "heat-map", "fall", "rise", "stock", "box-plot", "fund", "sliders"] }, { key: "brand_logo", title: "缃戠珯閫氱敤鍥炬爣", icons: ["lock", "unlock", "bars", "book", "calendar", "cloud", "cloud-download", "code", "copy", "credit-card", "delete", "desktop", "download", "ellipsis", "file", "file-text", "file-unknown", "file-pdf", "file-word", "file-excel", "file-jpg", "file-ppt", "file-markdown", "file-add", "folder", "folder-open", "folder-add", "hdd", "frown", "meh", "smile", "inbox", "laptop", "appstore", "link", "mail", "mobile", "notification", "paper-clip", "picture", "poweroff", "reload", "search", "setting", "share-alt", "shopping-cart", "tablet", "tag", "tags", "to-top", "upload", "user", "video-camera", "home", "loading", "loading-3-quarters", "cloud-upload", "star", "heart", "environment", "eye", "camera", "save", "team", "solution", "phone", "filter", "exception", "export", "customer-service", "qrcode", "scan", "like", "dislike", "message", "pay-circle", "calculator", "pushpin", "bulb", "select", "switcher", "rocket", "bell", "disconnect", "database", "compass", "barcode", "hourglass", "key", "flag", "layout", "printer", "sound", "usb", "skin", "tool", "sync", "wifi", "car", "schedule", "user-add", "user-delete", "usergroup-add", "usergroup-delete", "man", "woman", "shop", "gift", "idcard", "medicine-box", "red-envelope", "coffee", "copyright", "trademark", "safety", "wallet", "bank", "trophy", "contacts", "global", "shake", "api", "fork", "dashboard", "table", "profile", "alert", "audit", "branches", "build", "border", "crown", "experiment", "fire", "money-collect", "property-safety", "read", "reconciliation", "rest", "security-scan", "insurance", "interaction", "safety-certificate", "project", "thunderbolt", "block", "cluster", "deployment-unit", "dollar", "euro", "pound", "file-done", "file-exclamation", "file-protect", "file-search", "file-sync", "gateway", "gold", "robot", "shopping"] }, { key: "application", title: "鍝佺墝鍜屾爣璇�", icons: ["android", "apple", "windows", "ie", "chrome", "github", "aliwangwang", "dingding", "weibo-square", "weibo-circle", "taobao-circle", "html5", "weibo", "twitter", "wechat", "youtube", "alipay-circle", "taobao", "skype", "qq", "medium-workmark", "gitlab", "medium", "linkedin", "google-plus", "dropbox", "facebook", "codepen", "code-sandbox", "amazon", "google", "codepen-circle", "alipay", "ant-design", "aliyun", "zhihu", "slack", "slack-square", "behance", "behance-square", "dribbble", "dribbble-square", "instagram", "yuque", "alibaba", "yahoo"] }], s = { name: "IconSelect", props: { prefixCls: { type: String, default: "ant-pro-icon-selector" }, value: { type: String } }, data: function () { return { selectedIcon: this.value || "", currentTab: "directional", icons: r } }, watch: { value: function (e) { this.selectedIcon = e, this.autoSwitchTab() } }, created: function () { this.value && this.autoSwitchTab() }, methods: { handleSelectedIcon: function (e) { this.selectedIcon = e, this.$emit("change", e) }, handleTabChange: function (e) { this.currentTab = e }, autoSwitchTab: function () { var e = this; r.some((function (t) { return t.icons.some((function (t) { return t === e.value })) && (e.currentTab = t.key) })) } } }, o = s, c = (n("71a8"), n("2877")), l = Object(c["a"])(o, a, i, !1, null, "74e4dc71", null), u = l.exports; t["a"] = u }, "1b19": function (e, t, n) { }, "22b0": function (e, t, n) { "use strict"; n("27fe") }, 2432: function (e, t, n) { }, "27fe": function (e, t, n) { }, 2802: function (e, t, n) { }, "295a": function (e, t, n) { "use strict"; n("04b7") }, "2af9": function (e, t, n) { "use strict"; n.d(t, "c", (function () { return Ne["a"] })), n.d(t, "d", (function () { return l })), n.d(t, "e", (function () { return h })), n.d(t, "j", (function () { return D })), n.d(t, "m", (function () { return R })), n.d(t, "k", (function () { return X })), n.d(t, "l", (function () { return ne })), n.d(t, "o", (function () { return de })), n.d(t, "t", (function () { return Fe })), n.d(t, "p", (function () { return be })), n.d(t, "v", (function () { return ct["a"] })), n.d(t, "h", (function () { return ze["a"] })), n.d(t, "n", (function () { return qe["a"] })), n.d(t, "f", (function () { return et })), n.d(t, "r", (function () { return xt })), n.d(t, "q", (function () { return Lt })), n.d(t, "i", (function () { return Ht })), n.d(t, "u", (function () { return Mt["a"] })), n.d(t, "s", (function () { return Yt })), n.d(t, "b", (function () { return nn })), n.d(t, "a", (function () { return dn })), n.d(t, "g", (function () { return mn })), n.d(t, "w", (function () { return yn })); for (var a = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { style: { padding: "0 0 32px 32px" } }, [n("h4", { style: { marginBottom: "20px" } }, [e._v(e._s(e.title))]), n("v-chart", { attrs: { height: "254", data: e.data, forceFit: !0, padding: ["auto", "auto", "40", "50"] } }, [n("v-tooltip"), n("v-axis"), n("v-bar", { attrs: { position: "x*y" } })], 1)], 1) }, i = [], r = { name: "Bar", props: { title: { type: String, default: "" }, data: { type: Array, default: function () { return [] } }, scale: { type: Array, default: function () { return [{ dataKey: "x", min: 2 }, { dataKey: "y", title: "鏃堕棿", min: 1, max: 22 }] } }, tooltip: { type: Array, default: function () { return ["x*y", function (e, t) { return { name: e, value: t } }] } } }, data: function () { return {} } }, s = r, o = n("2877"), c = Object(o["a"])(s, a, i, !1, null, null, null), l = c.exports, u = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-card", { attrs: { loading: e.loading, "body-style": { padding: "20px 24px 8px" }, bordered: !1 } }, [n("div", { staticClass: "chart-card-header" }, [n("div", { staticClass: "meta" }, [n("span", { staticClass: "chart-card-title" }, [e._t("title", (function () { return [e._v(" " + e._s(e.title) + " ")] }))], 2), n("span", { staticClass: "chart-card-action" }, [e._t("action")], 2)]), n("div", { staticClass: "total" }, [e._t("total", (function () { return [n("span", [e._v(e._s("function" === typeof e.total && e.total() || e.total))])] }))], 2)]), n("div", { staticClass: "chart-card-content" }, [n("div", { staticClass: "content-fix" }, [e._t("default")], 2)]), n("div", { staticClass: "chart-card-footer" }, [n("div", { staticClass: "field" }, [e._t("footer")], 2)])]) }, d = [], f = (n("a9e3"), { name: "ChartCard", props: { title: { type: String, default: "" }, total: { type: [Function, Number, String], required: !1, default: null }, loading: { type: Boolean, default: !1 } } }), m = f, p = (n("79fb"), Object(o["a"])(m, u, d, !1, null, "2ec411fc", null)), h = p.exports, g = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", [n("v-chart", { attrs: { forceFit: !0, height: e.height, width: e.width, data: e.data, scale: e.scale, padding: 0 } }, [n("v-tooltip"), n("v-interval", { attrs: { shape: ["liquid-fill-gauge"], position: "transfer*value", color: "", "v-style": { lineWidth: 10, opacity: .75 }, tooltip: ["transfer*value", function (e, t) { return { name: e, value: t } }] } }), e._l(e.data, (function (e, t) { return n("v-guide", { key: t, attrs: { type: "text", top: !0, position: { gender: e.transfer, value: 45 }, content: e.value + "%", "v-style": { fontSize: 100, textAlign: "center", opacity: .75 } } }) }))], 2)], 1) }, b = [], v = { name: "Liquid", props: { height: { type: Number, default: 0 }, width: { type: Number, default: 0 } } }, y = v, k = Object(o["a"])(y, g, b, !1, null, "36e7a13c", null), C = (k.exports, function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "antv-chart-mini" }, [n("div", { staticClass: "chart-wrapper", style: { height: 46 } }, [n("v-chart", { attrs: { "force-fit": !0, height: e.height, data: e.data, padding: [36, 0, 18, 0] } }, [n("v-tooltip"), n("v-smooth-area", { attrs: { position: "x*y" } })], 1)], 1)]) }), A = [], x = n("c1df"), S = n.n(x), w = [], O = (new Date).getTime(), E = 0; E < 10; E++)w.push({ x: S()(new Date(O + 864e5 * E)).format("YYYY-MM-DD"), y: Math.round(10 * Math.random()) }); for (var T = ["x*y", function (e, t) { return { name: e, value: t } }], j = [{ dataKey: "x", min: 2 }, { dataKey: "y", title: "鏃堕棿", min: 1, max: 22 }], I = { name: "MiniArea", data: function () { return { data: w, tooltip: T, scale: j, height: 100 } } }, L = I, M = (n("f8cc"), Object(o["a"])(L, C, A, !1, null, "30aaf0d9", null)), D = M.exports, B = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { class: e.prefixCls }, [n("div", { staticClass: "chart-wrapper", style: { height: 46 } }, [n("v-chart", { attrs: { "force-fit": !0, height: 100, data: e.dataSource, scale: e.scale, padding: [36, 0, 18, 0] } }, [n("v-tooltip"), n("v-smooth-line", { attrs: { position: "x*y", size: 2 } }), n("v-smooth-area", { attrs: { position: "x*y" } })], 1)], 1)]) }, F = [], N = { name: "MiniSmoothArea", props: { prefixCls: { type: String, default: "ant-pro-smooth-area" }, scale: { type: [Object, Array], required: !0 }, dataSource: { type: Array, required: !0 } }, data: function () { return { height: 100 } } }, P = N, z = (n("bfb7"), Object(o["a"])(P, B, F, !1, null, "1cd0b9b6", null)), R = z.exports, G = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "antv-chart-mini" }, [n("div", { staticClass: "chart-wrapper", style: { height: 46 } }, [n("v-chart", { attrs: { "force-fit": !0, height: e.height, data: e.data, padding: [36, 5, 18, 5] } }, [n("v-tooltip"), n("v-bar", { attrs: { position: "x*y" } })], 1)], 1)]) }, H = [], K = [], U = (new Date).getTime(), q = 0; q < 10; q++)K.push({ x: S()(new Date(U + 864e5 * q)).format("YYYY-MM-DD"), y: Math.round(10 * Math.random()) }); var Q = ["x*y", function (e, t) { return { name: e, value: t } }], W = [{ dataKey: "x", min: 2 }, { dataKey: "y", title: "鏃堕棿", min: 1, max: 30 }], J = { name: "MiniBar", data: function () { return { data: K, tooltip: Q, scale: W, height: 100 } } }, V = J, Y = (n("dfa3"), Object(o["a"])(V, G, H, !1, null, "1ff3f2b1", null)), X = Y.exports, Z = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "chart-mini-progress" }, [n("div", { staticClass: "target", style: { left: e.target + "%" } }, [n("span", { style: { backgroundColor: e.color } }), n("span", { style: { backgroundColor: e.color } })]), n("div", { staticClass: "progress-wrapper" }, [n("div", { staticClass: "progress", style: { backgroundColor: e.color, width: e.percentage + "%", height: e.height } })])]) }, _ = [], $ = { name: "MiniProgress", props: { target: { type: Number, default: 0 }, height: { type: String, default: "10px" }, color: { type: String, default: "#13C2C2" }, percentage: { type: Number, default: 0 } } }, ee = $, te = (n("db89"), Object(o["a"])(ee, Z, _, !1, null, "430bb431", null)), ne = te.exports, ae = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("v-chart", { attrs: { forceFit: !0, height: "400", data: e.data, padding: [20, 20, 95, 20], scale: e.scale } }, [n("v-tooltip"), n("v-axis", { attrs: { dataKey: e.axis1Opts.dataKey, line: e.axis1Opts.line, tickLine: e.axis1Opts.tickLine, grid: e.axis1Opts.grid } }), n("v-axis", { attrs: { dataKey: e.axis2Opts.dataKey, line: e.axis2Opts.line, tickLine: e.axis2Opts.tickLine, grid: e.axis2Opts.grid } }), n("v-legend", { attrs: { dataKey: "user", marker: "circle", offset: 30 } }), n("v-coord", { attrs: { type: "polar", radius: "0.8" } }), n("v-line", { attrs: { position: "item*score", color: "user", size: 2 } }), n("v-point", { attrs: { position: "item*score", color: "user", size: 4, shape: "circle" } })], 1) }, ie = [], re = { dataKey: "item", line: null, tickLine: null, grid: { lineStyle: { lineDash: null }, hideFirstLine: !1 } }, se = { dataKey: "score", line: null, tickLine: null, grid: { type: "polygon", lineStyle: { lineDash: null } } }, oe = [{ dataKey: "score", min: 0, max: 80 }, { dataKey: "user", alias: "绫诲瀷" }], ce = { name: "Radar", props: { data: { type: Array, default: null } }, data: function () { return { axis1Opts: re, axis2Opts: se, scale: oe } } }, le = ce, ue = Object(o["a"])(le, ae, ie, !1, null, "36c217f8", null), de = ue.exports, fe = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "rank" }, [n("h4", { staticClass: "title" }, [e._v(e._s(e.title))]), n("ul", { staticClass: "list" }, e._l(e.list, (function (t, a) { return n("li", { key: a }, [n("span", { class: a < 3 ? "active" : null }, [e._v(e._s(a + 1))]), n("span", [e._v(e._s(t.name))]), n("span", [e._v(e._s(t.total))])]) })), 0)]) }, me = [], pe = { name: "RankList", props: { title: { type: String, default: "" }, list: { type: Array, default: null } } }, he = pe, ge = (n("9138"), Object(o["a"])(he, fe, me, !1, null, "e1fcea82", null)), be = ge.exports, ve = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { style: { padding: "0 0 32px 32px" } }, [n("h4", { style: { marginBottom: "20px" } }, [e._v(e._s(e.title))]), n("v-chart", { attrs: { height: "254", data: e.data, scale: e.scale, forceFit: !0, padding: ["auto", "auto", "40", "50"] } }, [n("v-tooltip"), n("v-axis"), n("v-bar", { attrs: { position: "x*y" } })], 1)], 1) }, ye = [], ke = ["x*y", function (e, t) { return { name: e, value: t } }], Ce = [{ dataKey: "x", title: "鏃ユ湡(澶�)", alias: "鏃ユ湡(澶�)", min: 2 }, { dataKey: "y", title: "娴侀噺(Gb)", alias: "娴侀噺(Gb)", min: 1 }], Ae = { name: "Bar", props: { title: { type: String, default: "" } }, data: function () { return { data: [], scale: Ce, tooltip: ke } }, created: function () { this.getMonthBar() }, methods: { getMonthBar: function () { var e = this; this.$http.get("/analysis/month-bar").then((function (t) { e.data = t.result })) } } }, xe = Ae, Se = Object(o["a"])(xe, ve, ye, !1, null, null, null), we = (Se.exports, function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("v-chart", { attrs: { width: e.width, height: e.height, padding: [0], data: e.data, scale: e.scale } }, [n("v-tooltip", { attrs: { "show-title": !1 } }), n("v-coord", { attrs: { type: "rect", direction: "TL" } }), n("v-point", { attrs: { position: "x*y", color: "category", shape: "cloud", tooltip: "value*category" } })], 1) }), Oe = [], Ee = n("5530"), Te = n("3654"), je = n("7104"), Ie = "https://gw.alipayobjects.com/zos/rmsportal/gWyeGLCdFFRavBGIDzWk.png", Le = [{ dataKey: "x", nice: !1 }, { dataKey: "y", nice: !1 }]; Object(Te["b"])("point", "cloud", { draw: function (e, t) { return t.addShape("text", { attrs: Object(Ee["a"])(Object(Ee["a"])({ fillOpacity: e.opacity, fontSize: e.origin._origin.size, rotate: e.origin._origin.rotate, text: e.origin._origin.text, textAlign: "center", fontFamily: e.origin._origin.font, fill: e.color, textBaseline: "Alphabetic" }, e.style), {}, { x: e.x, y: e.y }) }) } }); var Me = { name: "TagCloud", props: { tagList: { type: Array, required: !0 }, height: { type: Number, default: 400 }, width: { type: Number, default: 640 } }, data: function () { return { data: [], scale: Le } }, watch: { tagList: function (e) { e.length > 0 && this.initTagCloud(e) } }, mounted: function () { this.tagList.length > 0 && this.initTagCloud(this.tagList) }, methods: { initTagCloud: function (e) { var t = this, n = this.height, a = this.width, i = (new je.View).source(e), r = i.range("value"), s = r[0], o = r[1], c = new Image; c.crossOrigin = "", c.src = Ie, c.onload = function () { i.transform({ type: "tag-cloud", fields: ["name", "value"], size: [a, n], imageMask: c, font: "Verdana", padding: 0, timeInterval: 5e3, rotate: function () { var e = ~~(4 * Math.random()) % 4; return 2 === e && (e = 0), 90 * e }, fontSize: function (e) { return e.value ? (e.value - s) / (o - s) * 24 + 8 : 0 } }), t.data = i.rows } } } }, De = Me, Be = Object(o["a"])(De, we, Oe, !1, null, null, null), Fe = Be.exports, Ne = n("a545"), Pe = n("6a2a"), ze = (Pe["a"], n("c4db")), Re = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { class: e.prefixCls }, [n("div", { staticStyle: { float: "left" } }, [e._t("extra", (function () { return [e._v(e._s(e.extra))] }))], 2), n("div", { staticStyle: { float: "right" } }, [e._t("default")], 2)]) }, Ge = [], He = { name: "FooterToolBar", props: { prefixCls: { type: String, default: "ant-pro-footer-toolbar" }, extra: { type: [String, Object], default: "" } } }, Ke = He, Ue = Object(o["a"])(Ke, Re, Ge, !1, null, "4ea7eeef", null), qe = (Ue.exports, n("2432"), n("2ce4")), Qe = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { class: ["description-list", e.size, "vertical" === e.layout ? "vertical" : "horizontal"] }, [e.title ? n("div", { staticClass: "title" }, [e._v(e._s(e.title))]) : e._e(), n("a-row", [e._t("default")], 2)], 1) }, We = [], Je = n("da05"), Ve = { name: "DetailListItem", props: { term: { type: String, default: "", required: !1 } }, inject: { col: { type: Number } }, render: function () { var e = arguments[0]; return e(Je["b"], { props: Object(Ee["a"])({}, Ye[this.col]) }, [e("div", { class: "term" }, [this.$props.term]), e("div", { class: "content" }, [this.$slots.default])]) } }, Ye = { 1: { xs: 24 }, 2: { xs: 24, sm: 12 }, 3: { xs: 24, sm: 12, md: 8 }, 4: { xs: 24, sm: 12, md: 6 } }, Xe = { name: "DetailList", Item: Ve, components: { Col: Je["b"] }, props: { title: { type: String, default: "", required: !1 }, col: { type: Number, required: !1, default: 3 }, size: { type: String, required: !1, default: "large" }, layout: { type: String, required: !1, default: "horizontal" } }, provide: function () { return { col: this.col > 4 ? 4 : this.col } } }, Ze = Xe, _e = (n("295a"), Object(o["a"])(Ze, Qe, We, !1, null, "745c64a4", null)), $e = _e.exports, et = $e, tt = (n("8fb1"), n("0c63")), nt = (n("5704"), n("b558")), at = (n("fbd8"), n("55f1")), it = (n("fb6a"), n("d81d"), n("ac1f"), n("841c"), at["a"].Item), rt = at["a"].ItemGroup, st = at["a"].SubMenu, ot = nt["a"].Search, ct = (Boolean, n("611e")), lt = n("2638"), ut = n.n(lt), dt = n("53ca"), ft = (n("b0c0"), n("caad"), n("159b"), n("99af"), n("b64b"), n("2532"), n("4de4"), n("372e")), mt = n("c832"), pt = n.n(mt), ht = n("b76a"), gt = n.n(ht), bt = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "ant-dropdown-menu s-tool-column ant-dropdown-content", attrs: { slot: "overlay" }, slot: "overlay" }, [n("div", { staticClass: "s-tool-column-header s-tool-column-item" }, [n("a-checkbox", { attrs: { indeterminate: e.indeterminate, checked: e.checkAll }, on: { change: e.onCheckAllChange } }, [e._v(" 鍒楀睍绀� ")]), n("a", { on: { click: e.reset } }, [e._v("閲嶇疆")])], 1), n("a-divider"), n("div", { staticClass: "ant-checkbox-group" }, [n("div", [n("draggable", { attrs: { animation: "300" }, on: { end: e.emitColumnChange }, model: { value: e.columnsSetting, callback: function (t) { e.columnsSetting = t }, expression: "columnsSetting" } }, e._l(e.columnsSetting, (function (t) { return n("div", { key: t.title, staticClass: "s-tool-column-item" }, [n("div", { staticClass: "s-tool-column-handle" }, [n("a-icon", { attrs: { type: "more" } }), n("a-icon", { attrs: { type: "more" } })], 1), n("a-checkbox", { on: { change: e.onChange }, model: { value: t.checked, callback: function (n) { e.$set(t, "checked", n) }, expression: "item.checked" } }, [e._v(e._s(t.title))])], 1) })), 0)], 1)])], 1) }, vt = [], yt = { props: { columns: { type: Array, default: function () { return [] } } }, components: { draggable: gt.a }, data: function () { return { indeterminate: !1, checkAll: !0, columnsSetting: [], originColumns: [] } }, methods: { reset: function () { this.columnsSetting = JSON.parse(JSON.stringify(this.originColumns)), this.indeterminate = !1, this.checkAll = !0, this.emitColumnChange() }, onChange: function () { var e = this.columnsSetting.filter((function (e) { return e.checked })); this.indeterminate = !!e.length && e.length < this.columnsSetting.length, this.checkAll = e.length === this.columnsSetting.length, this.emitColumnChange() }, onCheckAllChange: function (e) { var t = e.target.checked; Object.assign(this, { indeterminate: !1, checkAll: t, columnsSetting: this.columns.map((function (e) { return Object(Ee["a"])(Object(Ee["a"])({}, e), {}, { checked: t }) })) }), this.emitColumnChange() }, emitColumnChange: function () { this.$emit("columnChange", this.columnsSetting) } }, mounted: function () { this.columnsSetting = this.columns.map((function (e) { return Object(Ee["a"])(Object(Ee["a"])({}, e), {}, { checked: !0 }) })), this.originColumns = JSON.parse(JSON.stringify(this.columnsSetting)) } }, kt = yt, Ct = Object(o["a"])(kt, bt, vt, !1, null, "a303cf1a", null), At = Ct.exports, xt = (n("e040"), { components: { draggable: gt.a, columnSetting: At }, data: function () { return { needTotalList: [], selectedRows: [], selectedRowKeys: [], localLoading: !1, localDataSource: [], localPagination: Object.assign({}, this.pagination), isFullscreen: !1, customSize: this.size, columnsSetting: [] } }, props: Object.assign({}, ft["a"].props, { rowKey: { type: [String, Function], default: "key" }, data: { type: Function, required: !0 }, pageNum: { type: Number, default: 1 }, pageSize: { type: Number, default: 10 }, showSizeChanger: { type: Boolean, default: !0 }, size: { type: String, default: "middle" }, alert: { type: [Object, Boolean], default: null }, rowSelection: { type: Object, default: null }, showAlertInfo: { type: Boolean, default: !1 }, showPagination: { type: String | Boolean, default: "auto" }, pageURI: { type: Boolean, default: !1 }, extraTool: { type: Array, default: function () { return [] } } }), watch: { "localPagination.current": function (e) { this.pageURI && this.$router.push(Object(Ee["a"])(Object(Ee["a"])({}, this.$route), {}, { name: this.$route.name, params: Object.assign({}, this.$route.params, { pageNo: e }) })) }, pageNum: function (e) { Object.assign(this.localPagination, { current: e }) }, pageSize: function (e) { Object.assign(this.localPagination, { pageSize: e }) }, showSizeChanger: function (e) { Object.assign(this.localPagination, { showSizeChanger: e }) } }, created: function () { var e = this.$route.params.pageNo, t = this.pageURI && e && parseInt(e) || this.pageNum; this.localPagination = ["auto", !0].includes(this.showPagination) && Object.assign({}, this.localPagination, { current: t, pageSize: this.pageSize, showSizeChanger: this.showSizeChanger, showTotal: function (e, t) { return t[0] + "-" + t[1] + "鍏�" + e + "鏉�" } }) || !1, this.needTotalList = this.initTotalList(this.columns), this.loadData(), this.columnsSetting = this.columns }, methods: { refresh: function () { var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]; e && (this.localPagination = Object.assign({}, { current: 1, pageSize: this.pageSize })), this.loadData() }, loadData: function (e, t, n) { var a = this; this.localLoading = !0; var i = Object.assign({ pageNo: e && e.current || this.showPagination && this.localPagination.current || this.pageNum, pageSize: e && e.pageSize || this.showPagination && this.localPagination.pageSize || this.pageSize }, n && n.field && { sortField: n.field } || {}, n && n.order && { sortOrder: n.order } || {}, Object(Ee["a"])({}, t)), r = this.data(i); "object" !== Object(dt["a"])(r) && "function" !== typeof r || "function" !== typeof r.then || r.then((function (t) { if (null != t) { if (a.localPagination = a.showPagination && Object.assign({}, a.localPagination, { current: t.pageNo, total: t.totalRows, showSizeChanger: a.showSizeChanger, pageSize: e && e.pageSize || a.localPagination.pageSize }) || !1, null == t.rows && (t.rows = []), 0 === t.rows.length && a.showPagination && a.localPagination.current > 1) return a.localPagination.current--, void a.loadData(); try { ["auto", !0].includes(a.showPagination) && t.totalCount <= t.totalPage * a.localPagination.pageSize && (a.localPagination.hideOnSinglePage = !0) } catch (n) { a.localPagination = !1 } a.localDataSource = t.rows, a.localLoading = !1 } else a.localLoading = !1 })) }, initTotalList: function (e) { var t = []; return e && e instanceof Array && e.forEach((function (e) { e.needTotal && t.push(Object(Ee["a"])(Object(Ee["a"])({}, e), {}, { total: 0 })) })), t }, updateSelect: function (e, t) { this.selectedRows = t, this.selectedRowKeys = e; var n = this.needTotalList; this.needTotalList = n.map((function (e) { return Object(Ee["a"])(Object(Ee["a"])({}, e), {}, { total: t.reduce((function (t, n) { var a = t + parseInt(pt()(n, e.dataIndex)); return isNaN(a) ? 0 : a }), 0) }) })) }, clearSelected: function () { this.rowSelection && (this.rowSelection.onChange([], []), this.updateSelect([], [])) }, renderClear: function (e) { var t = this, n = this.$createElement; return this.selectedRowKeys.length <= 0 ? null : n("a", { style: "margin-left: 24px", on: { click: function () { e(), t.clearSelected() } } }, ["娓呯┖"]) }, renderAlert: function () { var e = this.$createElement; this.needTotalList.map((function (t) { return e("span", { style: "margin-right: 12px" }, [t.title, "鎬昏 ", e("a", { style: "font-weight: 600" }, [t.customRender ? t.customRender(t.total) : t.total])]) })), "boolean" === typeof this.alert.clear && this.alert.clear ? this.renderClear(this.clearSelected) : null !== this.alert && "function" === typeof this.alert.clear && this.renderClear(this.alert.clear); return "" }, columnChange: function (e) { this.columnsSetting = e }, renderHeader: function () { var e = this, t = this.$createElement, n = [{ icon: "reload", title: "鍒锋柊", onClick: function () { e.refresh() } }, { icon: "column-height", title: "瀵嗗害", isDropdown: !0, menu: function () { var n = function (t) { var n = t.key; e.customSize = n }; return t("a-menu", { slot: "overlay", on: { click: n }, attrs: { selectable: !0, defaultSelectedKeys: [e.customSize] } }, [t("a-menu-item", { key: "default" }, ["榛樿"]), t("a-menu-item", { key: "middle" }, ["涓瓑"]), t("a-menu-item", { key: "small" }, ["绱у噾"])]) }, onClick: function () { } }, { icon: "setting", title: "鍒楄缃�", isDropdown: !0, menu: function () { return t(At, { slot: "overlay", attrs: { columns: e.columns }, on: { columnChange: e.columnChange } }) }, onClick: function () { } }]; return this.extraTool.length && (n = n.concat(this.extraTool)), t("div", { class: "s-table-tool" }, [t("div", { class: "s-table-tool-left" }, [this.$scopedSlots.operator && this.$scopedSlots.operator()]), t("div", { class: "s-table-tool-right" }, [n.map((function (e) { return e.isDropdown ? t("a-dropdown", { attrs: { trigger: ["click"] } }, [t("a-tooltip", { attrs: { title: e.title }, class: "s-tool-item", on: { click: e.onClick } }, [t("a-icon", { attrs: { type: e.icon } })]), e.menu()]) : t("a-tooltip", { attrs: { title: e.title }, class: "s-tool-item", on: { click: e.onClick } }, [t("a-icon", { attrs: { type: e.icon } })]) }))])]) } }, render: function () { var e = this, t = arguments[0], n = {}, a = Object.keys(this.$data), i = "object" === Object(dt["a"])(this.alert) && null !== this.alert && this.alert.show && "undefined" !== typeof this.rowSelection.selectedRowKeys || this.alert; Object.keys(ft["a"].props).forEach((function (t) { var r = "local".concat(t.substring(0, 1).toUpperCase()).concat(t.substring(1)); if (a.includes(r)) return n[t] = e[r], n[t]; if ("rowSelection" === t) { if (i && e.rowSelection) return n[t] = Object(Ee["a"])(Object(Ee["a"])({}, e.rowSelection), {}, { selectedRows: e.selectedRows, selectedRowKeys: e.selectedRowKeys, onChange: function (n, a) { e.updateSelect(n, a), "undefined" !== typeof e[t].onChange && e[t].onChange(n, a) } }), n[t]; if (!e.rowSelection) return n[t] = null, n[t] } return e[t] && (n[t] = e[t]), n = Object(Ee["a"])(Object(Ee["a"])({}, n), {}, { size: e.customSize, columns: e.columnsSetting.filter((function (e) { return void 0 === e.checked || e.checked })) }), n[t] })); var r = t("a-table", ut()([{}, { props: n, scopedSlots: Object(Ee["a"])({}, this.$scopedSlots) }, { on: { change: this.loadData, expand: function (t, n) { e.$emit("expand", t, n) } } }]), [Object.keys(this.$slots).map((function (n) { return t("template", { slot: n }, [e.$slots[n]]) }))]); return t("div", { class: "table-wrapper" }, [this.renderHeader(), i ? this.renderAlert() : null, r]) } }), St = (n("31fc"), function () { var e, t = this, n = t.$createElement, a = t._self._c || n; return a("div", { staticClass: "result" }, [a("div", [a("a-icon", { class: (e = { icon: !0 }, e["" + t.type] = !0, e), attrs: { type: t.localIsSuccess ? "check-circle" : "close-circle" } })], 1), a("div", { staticClass: "title" }, [t._t("title", (function () { return [t._v(" " + t._s(t.title) + " ")] }))], 2), a("div", { staticClass: "description" }, [t._t("description", (function () { return [t._v(" " + t._s(t.description) + " ")] }))], 2), t.$slots.default ? a("div", { staticClass: "extra" }, [t._t("default")], 2) : t._e(), t.$slots.action ? a("div", { staticClass: "action" }, [t._t("action")], 2) : t._e()]) }), wt = [], Ot = ["success", "error"], Et = { name: "Result", props: { isSuccess: { type: Boolean, default: !1 }, type: { type: String, default: Ot[0], validator: function (e) { return function (e) { return Ot.includes(e) } } }, title: { type: String, default: "" }, description: { type: String, default: "" } }, computed: { localIsSuccess: function () { return this.type === Ot[0] } } }, Tt = Et, jt = (n("0650"), Object(o["a"])(Tt, St, wt, !1, null, "4aa70533", null)), It = jt.exports, Lt = It, Mt = (n("13bb"), n("ac94")), Dt = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "exception" }, [n("div", { staticClass: "imgBlock" }, [n("div", { staticClass: "imgEle", style: { backgroundImage: "url(" + e.config[e.type].img + ")" } })]), n("div", { staticClass: "content" }, [n("h1", [e._v(e._s(e.config[e.type].title))]), n("div", { staticClass: "desc" }, [e._v(e._s(e.config[e.type].desc))]), n("div", { staticClass: "actions" }, [n("a-button", { attrs: { type: "primary" }, on: { click: e.handleToHome } }, [e._v("杩斿洖棣栭〉")])], 1)])]) }, Bt = [], Ft = { 403: { img: "https://gw.alipayobjects.com/zos/rmsportal/wZcnGqRDyhPOEYFcZDnb.svg", title: "403", desc: "鎶辨瓑锛屼綘鏃犳潈璁块棶璇ラ〉闈�" }, 404: { img: "https://gw.alipayobjects.com/zos/rmsportal/KpnpchXsobRgLElEozzI.svg", title: "404", desc: "鎶辨瓑锛屼綘璁块棶鐨勯〉闈笉瀛樺湪鎴栦粛鍦ㄥ紑鍙戜腑" }, 500: { img: "https://gw.alipayobjects.com/zos/rmsportal/RVRUAYdCGeYNBWoKiIwB.svg", title: "500", desc: "鎶辨瓑锛屾湇鍔″櫒鍑洪敊浜�" } }, Nt = Ft, Pt = { name: "Exception", props: { type: { type: String, default: "404" } }, data: function () { return { config: Nt } }, methods: { handleToHome: function () { this.$router.push({ name: "Console" }) } } }, zt = Pt, Rt = (n("22b0"), Object(o["a"])(zt, Dt, Bt, !1, null, null, null)), Gt = Rt.exports, Ht = Gt, Kt = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { class: [e.prefixCls, e.lastCls, e.blockCls, e.gridCls] }, [e.title ? n("div", { staticClass: "antd-pro-components-standard-form-row-index-label" }, [n("span", [e._v(e._s(e.title))])]) : e._e(), n("div", { staticClass: "antd-pro-components-standard-form-row-index-content" }, [e._t("default")], 2)]) }, Ut = [], qt = ["antd-pro-components-standard-form-row-index-standardFormRowBlock", "antd-pro-components-standard-form-row-index-standardFormRowGrid", "antd-pro-components-standard-form-row-index-standardFormRowLast"], Qt = { name: "StandardFormRow", props: { prefixCls: { type: String, default: "antd-pro-components-standard-form-row-index-standardFormRow" }, title: { type: String, default: void 0 }, last: { type: Boolean }, block: { type: Boolean }, grid: { type: Boolean } }, computed: { lastCls: function () { return this.last ? qt[2] : null }, blockCls: function () { return this.block ? qt[0] : null }, gridCls: function () { return this.grid ? qt[1] : null } } }, Wt = Qt, Jt = (n("ee2a"), Object(o["a"])(Wt, Kt, Ut, !1, null, "400fd39c", null)), Vt = Jt.exports, Yt = Vt, Xt = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "antd-pro-components-article-list-content-index-listContent" }, [n("div", { staticClass: "description" }, [e._t("default", (function () { return [e._v(" " + e._s(e.description) + " ")] }))], 2), n("div", { staticClass: "extra" }, [n("a-avatar", { attrs: { src: e.avatar, size: "small" } }), n("a", { attrs: { href: e.href } }, [e._v(e._s(e.owner))]), e._v(" 鍙戝竷鍦� "), n("a", { attrs: { href: e.href } }, [e._v(e._s(e.href))]), n("em", [e._v(e._s(e._f("moment")(e.updateAt)))])], 1)]) }, Zt = [], _t = { name: "ArticleListContent", props: { prefixCls: { type: String, default: "antd-pro-components-article-list-content-index-listContent" }, description: { type: String, default: "" }, owner: { type: String, required: !0 }, avatar: { type: String, required: !0 }, href: { type: String, required: !0 }, updateAt: { type: String, required: !0 } } }, $t = _t, en = (n("e46d"), Object(o["a"])($t, Xt, Zt, !1, null, "0d752822", null)), tn = en.exports, nn = tn, an = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", [n("div", { ref: "myEditor", attrs: { id: "editor" } }), e._t("default")], 2) }, rn = [], sn = (n("d3b7"), n("3ca3"), n("ddb0"), n("2b3d"), n("1a0b")), on = n.n(sn), cn = { name: "ComponentWangeditor", data: function () { return { edit: "" } }, props: { value: { type: String, default: "" }, config: { type: Object, default: function () { return {} } }, uploadConfig: { type: Object, default: function () { return { method: "http", url: "/" } } } }, computed: { customConfig: function () { return Object(Ee["a"])({ pasteFilterStyle: !1, pasteIgnoreImg: !1 }, this.config) } }, watch: {}, components: {}, methods: { readBlobAsDataURL: function (e, t) { var n = new FileReader; n.onload = function (e) { t(e.target.result) }, n.readAsDataURL(e) }, initEditor: function () { var e = this; this.editor = new on.a(this.$refs.myEditor), this.editor.customConfig = this.customConfig, this.editor.customConfig.uploadImgMaxLength = 5, this.editor.change = function () { e.$emit("input", this.txt.html()), e.$emit("onchange", this.txt.html(), this.txt) }, this.editor.customConfig.customUploadImg = function (t, n) { if ("custom" === e.uploadConfig.method && t.forEach((function (e) { var t = URL.createObjectURL(e); n(t) })), "base64" === e.uploadConfig.method && t.forEach((function (t) { e.readBlobAsDataURL(t, (function (e) { n(e) })) })), "http" === e.uploadConfig.method) if (e.uploadConfig.callback) e.uploadConfig.callback(t, n); else { var a = new FormData; t.forEach((function (e) { a.append("file", e) })), e.$axios.post(e.uploadConfig.url, a).then((function (e) { var t = e.data; "success" === t.status && n(t.url) })) } }, this.editor.create(), this.editor.txt.text(this.value), this.$emit("oninit", this.editor) } }, beforeCreate: function () { }, created: function () { }, beforeMount: function () { }, mounted: function () { this.initEditor() } }, ln = cn, un = (n("676c"), Object(o["a"])(ln, an, rn, !1, null, null, null)), dn = un.exports, fn = n("ed3b"), mn = function (e) { function t(t, n, a) { var i = this; if (a = a || {}, i && i._isVue) { var r = document.querySelector("body>div[type=dialog]"); r || (r = document.createElement("div"), r.setAttribute("type", "dialog"), document.body.appendChild(r)); var s = function (e, t) { if (e instanceof Function) { var n = e(); n instanceof Promise ? n.then((function (e) { e && t() })) : n && t() } else e || t() }, o = new e({ data: function () { return { visible: !0 } }, router: i.$router, store: i.$store, mounted: function () { var e = this; this.$on("close", (function (t) { e.handleClose() })) }, methods: { handleClose: function () { var e = this; s(this.$refs._component.onCancel, (function () { e.visible = !1, e.$refs._component.$emit("close"), e.$refs._component.$emit("cancel"), o.$destroy() })) }, handleOk: function () { var e = this; s(this.$refs._component.onOK || this.$refs._component.onOk, (function () { e.visible = !1, e.$refs._component.$emit("close"), e.$refs._component.$emit("ok"), o.$destroy() })) } }, render: function (e) { var i = this, r = a && a.model; r && delete a.model; var s = Object.assign({}, r && { model: r } || {}, { attrs: Object.assign({}, Object(Ee["a"])({}, a.attrs || a), { visible: this.visible }), on: Object.assign({}, Object(Ee["a"])({}, a.on || a), { ok: function () { i.handleOk() }, cancel: function () { i.handleClose() } }) }), o = n && n.model; o && delete n.model; var c = Object.assign({}, o && { model: o } || {}, { ref: "_component", attrs: Object.assign({}, Object(Ee["a"])({}, n && n.attrs || n)), on: Object.assign({}, Object(Ee["a"])({}, n && n.on || n)) }); return e(fn["a"], s, [e(t, c)]) } }).$mount(r) } } Object.defineProperty(e.prototype, "$dialog", { get: function () { return function () { t.apply(this, arguments) } } }) }, pn = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-card", { attrs: { bordered: !1, bodyStyle: e.tstyle } }, [e._t("content")], 2) }, hn = [], gn = { name: "XCard", data: function () { return { tstyle: { "padding-bottom": "0px", "margin-bottom": "10px" } } } }, bn = gn, vn = Object(o["a"])(bn, pn, hn, !1, null, null, null), yn = vn.exports }, "2bd7": function (e, t, n) { }, "2c87": function (e, t, n) { }, "2ce4": function (e, t, n) { "use strict"; var a = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { class: [e.prefixCls] }, [e._t("subtitle", (function () { return [n("div", { class: [e.prefixCls + "-subtitle"] }, [e._v(e._s("string" === typeof e.subTitle ? e.subTitle : e.subTitle()))])] })), n("div", { staticClass: "number-info-value" }, [n("span", [e._v(e._s(e.total))]), n("span", { staticClass: "sub-total" }, [e._v(" " + e._s(e.subTotal) + " "), n("icon", { attrs: { type: "caret-" + e.status } })], 1)])], 2) }, i = [], r = (n("a9e3"), n("0c63")), s = { name: "NumberInfo", props: { prefixCls: { type: String, default: "ant-pro-number-info" }, total: { type: Number, required: !0 }, subTotal: { type: Number, required: !0 }, subTitle: { type: [String, Function], default: "" }, status: { type: String, default: "up" } }, components: { Icon: r["a"] }, data: function () { return {} } }, o = s, c = (n("e763"), n("2877")), l = Object(c["a"])(o, a, i, !1, null, "a16f84d8", null), u = l.exports; t["a"] = u }, "2cef": function (e, t, n) { }, "2d0f": function (e, t, n) { "use strict"; n("1b19") }, "31fc": function (e, t, n) { "use strict"; var a, i, r = n("8bbf"), s = n.n(r), o = new s.a, c = n("5530"), l = (n("b0c0"), n("7db0"), n("4de4"), n("caad"), n("2532"), n("159b"), n("d81d"), { name: "MultiTab", data: function () { return { fullPathList: [], pages: [], activeKey: "", newTabIndex: 0 } }, created: function () { var e = this; o.$on("open", (function (t) { if (!t) throw new Error("multi-tab: open tab ".concat(t, " err")); e.activeKey = t })).$on("close", (function (t) { t ? e.closeThat(t) : e.closeThat(e.activeKey) })).$on("rename", (function (t) { var n = t.key, a = t.name; try { var i = e.pages.find((function (e) { return e.path === n })); i.meta.customTitle = a, e.$forceUpdate() } catch (r) { } })), this.pages.push(this.$route), this.fullPathList.push(this.$route.fullPath), this.selectedLastPath() }, methods: { onEdit: function (e, t) { this[t](e) }, remove: function (e) { this.pages = this.pages.filter((function (t) { return t.fullPath !== e })), this.fullPathList = this.fullPathList.filter((function (t) { return t !== e })), this.fullPathList.includes(this.activeKey) || this.selectedLastPath() }, selectedLastPath: function () { this.activeKey = this.fullPathList[this.fullPathList.length - 1] }, closeThat: function (e) { this.fullPathList.length > 1 ? this.remove(e) : this.$message.info("杩欐槸鏈�鍚庝竴涓爣绛句簡, 鏃犳硶琚叧闂�") }, closeLeft: function (e) { var t = this, n = this.fullPathList.indexOf(e); n > 0 ? this.fullPathList.forEach((function (e, a) { a < n && t.remove(e) })) : this.$message.info("宸︿晶娌℃湁鏍囩") }, closeRight: function (e) { var t = this, n = this.fullPathList.indexOf(e); n < this.fullPathList.length - 1 ? this.fullPathList.forEach((function (e, a) { a > n && t.remove(e) })) : this.$message.info("鍙充晶娌℃湁鏍囩") }, closeAll: function (e) { var t = this, n = this.fullPathList.indexOf(e); this.fullPathList.forEach((function (e, a) { a !== n && t.remove(e) })) }, closeMenuClick: function (e, t) { this[e](t) }, renderTabPaneMenu: function (e) { var t = this, n = this.$createElement; return n("a-menu", { on: Object(c["a"])({}, { click: function (n) { var a = n.key; n.item, n.domEvent; t.closeMenuClick(a, e) } }) }, [n("a-menu-item", { key: "closeThat" }, ["鍏抽棴褰撳墠鏍囩"]), n("a-menu-item", { key: "closeRight" }, ["鍏抽棴鍙充晶"]), n("a-menu-item", { key: "closeLeft" }, ["鍏抽棴宸︿晶"]), n("a-menu-item", { key: "closeAll" }, ["鍏抽棴鍏ㄩ儴"])]) }, renderTabPane: function (e, t) { var n = this.$createElement, a = this.renderTabPaneMenu(t); return n("a-dropdown", { attrs: { overlay: a, trigger: ["contextmenu"] } }, [n("span", { style: { userSelect: "none" } }, [e])]) } }, watch: { $route: function (e) { this.activeKey = e.fullPath, this.fullPathList.indexOf(e.fullPath) < 0 && (this.fullPathList.push(e.fullPath), this.pages.push(e)) }, activeKey: function (e) { this.$router.push({ path: e }) } }, render: function () { var e = this, t = arguments[0], n = this.onEdit, a = this.$data.pages, i = a.map((function (n) { return t("a-tab-pane", { style: { height: 0, background: "#8999ee", color: "#899ee" }, attrs: { tab: e.renderTabPane(n.meta.customTitle || n.meta.title, n.fullPath), closable: a.length > 1 }, key: n.fullPath }) })); return t("div", { class: "ant-pro-multi-tab" }, [t("div", { class: "ant-pro-multi-tab-wrapper" }, [t("a-tabs", { attrs: { hideAdd: !0, tabBarGutter: -1, type: "editable-card", tabBarStyle: { background: "#FFF", margin: 0, paddingLeft: "0px", paddingTop: "0px" } }, on: Object(c["a"])({}, { edit: n }), model: { value: e.activeKey, callback: function (t) { e.activeKey = t } } }, [i])])]) } }), u = l, d = n("2877"), f = Object(d["a"])(u, a, i, !1, null, null, null), m = f.exports, p = (n("3489"), { open: function (e) { o.$emit("open", e) }, rename: function (e, t) { o.$emit("rename", { key: e, name: t }) }, closeCurrentPage: function () { this.close() }, close: function (e) { o.$emit("close", e) } }); m.install = function (e) { e.prototype.$multiTab || (p.instance = o, e.prototype.$multiTab = p, e.component("multi-tab", m)) }; t["a"] = m }, 3489: function (e, t, n) { }, "37c2": function (e, t, n) { }, "3c71": function (e, t, n) { }, 4360: function (e, t, n) { "use strict"; var a = n("8bbf"), i = n.n(a), r = n("5880"), s = n.n(r), o = n("9fb0"), c = { state: { sidebar: !0, device: "desktop", theme: "", layout: "", contentWidth: "", fixedHeader: !1, fixSiderbar: !1, autoHideHeader: !1, color: null, weak: !1, multiTab: !0, crumbsState: !0, hasError: !1 }, mutations: { SET_SIDEBAR_TYPE: function (e, t) { e.sidebar = t, i.a.ls.set(o["n"], t) }, CLOSE_SIDEBAR: function (e) { i.a.ls.set(o["n"], !0), e.sidebar = !1 }, TOGGLE_DEVICE: function (e, t) { e.device = t }, TOGGLE_THEME: function (e, t) { i.a.ls.set(o["l"], t), e.theme = t }, TOGGLE_LAYOUT_MODE: function (e, t) { i.a.ls.set(o["j"], t), e.layout = t }, TOGGLE_FIXED_HEADER: function (e, t) { i.a.ls.set(o["g"], t), e.fixedHeader = t }, TOGGLE_FIXED_SIDERBAR: function (e, t) { i.a.ls.set(o["i"], t), e.fixSiderbar = t }, TOGGLE_FIXED_HEADER_HIDDEN: function (e, t) { i.a.ls.set(o["h"], t), e.autoHideHeader = t }, TOGGLE_CONTENT_WIDTH: function (e, t) { i.a.ls.set(o["e"], t), e.contentWidth = t }, TOGGLE_COLOR: function (e, t) { i.a.ls.set(o["c"], t), e.color = t }, TOGGLE_WEAK: function (e, t) { i.a.ls.set(o["d"], t), e.weak = t }, TOGGLE_MULTI_TAB: function (e, t) { i.a.ls.set(o["k"], t), e.multiTab = t }, TOGGLE_CRUMBS_STATE: function (e, t) { i.a.ls.set(o["f"], t), e.crumbsState = t }, SET_HAS_ERROR: function (e, t) { e.hasError = t } }, actions: { setSidebar: function (e, t) { var n = e.commit; n("SET_SIDEBAR_TYPE", t) }, CloseSidebar: function (e) { var t = e.commit; t("CLOSE_SIDEBAR") }, ToggleDevice: function (e, t) { var n = e.commit; n("TOGGLE_DEVICE", t) }, ToggleTheme: function (e, t) { var n = e.commit; n("TOGGLE_THEME", t) }, ToggleLayoutMode: function (e, t) { var n = e.commit; n("TOGGLE_LAYOUT_MODE", t) }, ToggleFixedHeader: function (e, t) { var n = e.commit; t || n("TOGGLE_FIXED_HEADER_HIDDEN", !1), n("TOGGLE_FIXED_HEADER", t) }, ToggleFixSiderbar: function (e, t) { var n = e.commit; n("TOGGLE_FIXED_SIDERBAR", t) }, ToggleFixedHeaderHidden: function (e, t) { var n = e.commit; n("TOGGLE_FIXED_HEADER_HIDDEN", t) }, ToggleContentWidth: function (e, t) { var n = e.commit; n("TOGGLE_CONTENT_WIDTH", t) }, ToggleColor: function (e, t) { var n = e.commit; n("TOGGLE_COLOR", t) }, ToggleWeak: function (e, t) { var n = e.commit; n("TOGGLE_WEAK", t) }, ToggleMultiTab: function (e, t) { var n = e.commit; n("TOGGLE_MULTI_TAB", t) }, ToggleCrumbsState: function (e, t) { var n = e.commit; n("TOGGLE_CRUMBS_STATE", t) }, SetHasError: function (e, t) { var n = e.commit; n("SET_HAS_ERROR", t) } } }, l = c, u = (n("b0c0"), n("4de4"), n("4e82"), n("d3b7"), n("3ca3"), n("ddb0"), n("2b3d"), n("159b"), n("6135")), d = n("126f"), f = n("0bfe"), m = n("6597"), p = n("f045"), h = n("ca00"), g = n("a18c"), b = { state: { token: "", name: "", welcome: "", avatar: "", buttons: [], allButtons: [], admintype: "", roles: [], info: {}, notices: [] }, mutations: { SET_TOKEN: function (e, t) { e.token = t }, SET_NAME: function (e, t) { var n = t.name, a = t.welcome; e.name = n, e.welcome = a }, SET_AVATAR: function (e, t) { e.avatar = t }, SET_ROLES: function (e, t) { e.roles = t }, SET_INFO: function (e, t) { e.info = t }, SET_BUTTONS: function (e, t) { e.buttons = t }, SET_ALL_BUTTONS: function (e, t) { e.allButtons = t }, SET_ADMINTYPE: function (e, t) { e.admintype = t }, SET_NOTICES: function (e, t) { e.notices = t }, APPEND_NOTICE: function (e, t) { t.publicTime = Object(h["a"])(t.publicTime, "YYYY-mm-dd HH:MM:SS"); var n = e.notices, a = n.rows.filter((function (e) { return e.value === t.type }))[0], i = n.rows.filter((function (e) { return e.value !== t.type })); a.noticeData.unshift(t), n.totalRows++, a.noticeData.length > 6 && a.noticeData.pop(), n.rows = [], n.rows.push(a), n.rows.push.apply(n.rows, i), n.rows.sort((function (e, t) { return e.index - t.index })), e.notices = n }, SUBTRACT_NOTICE: function (e, t) { var n = e.notices, a = n.rows.filter((function (e) { return e.value === t.type }))[0], i = n.rows.filter((function (e) { return e.value !== t.type })); a.noticeData.shift(t), n.totalRows--, a.noticeData.length > 6 && a.noticeData.pop(), n.rows = [], n.rows.pop(a), n.rows.pop.apply(n.rows, i), n.rows.sort((function (e, t) { return e.index - t.index })), e.notices = n } }, actions: { Login: function (e, t) { e.commit; return i.a.ls.remove(o["b"]), new Promise((function (e, n) { Object(u["d"])(t).then((function (t) { t.success ? e() : n(t.message) })).catch((function (e) { n("鍚庣鏈惎鍔ㄦ垨浠g悊閿欒") })) })) }, GetInfo: function (e) { var t = this, n = e.commit; return new Promise((function (e, a) { Object(u["b"])().then((function (i) { if (i.success) { var r = i.data; n("SET_ADMINTYPE", r.adminType), n("SET_ROLES", 1), n("SET_BUTTONS", r.permissions), n("SET_ALL_BUTTONS", r.allPermissions), n("SET_INFO", r), n("SET_NAME", { name: r.name, welcome: Object(h["e"])() }), null != r.avatar ? Object(m["d"])({ id: r.avatar }).then((function (e) { n("SET_AVATAR", window.URL.createObjectURL(new Blob([e]))) })).catch((function (e) { t.$message.error("棰勮閿欒锛�" + e.message) })) : n("SET_AVATAR", "/avatar2.jpg"), e(r) } else a(new Error(i.message)) })) })) }, Logout: function (e) { var t = e.commit, n = e.state; return new Promise((function (e) { Object(u["e"])(n.token).then((function () { e() })).catch((function () { e() })).finally((function () { t("SET_TOKEN", ""), t("SET_ROLES", []), t("SET_BUTTONS", []), t("SET_ALL_BUTTONS", []), t("SET_ADMINTYPE", ""), i.a.ls.remove(o["a"]), i.a.ls.remove(o["b"]), i.a.ls.remove(o["m"]), i.a.ls.remove("X-Access-Token") })) })) }, dictTypeData: function () { return new Promise((function (e, t) { Object(d["g"])().then((function (n) { if (n.success) { var a = n.data; i.a.ls.set(o["m"], a), e() } else t(new Error(n.message)) })).catch((function (e) { t(e) })) })) }, MenuChange: function (e, t) { e.commit; return new Promise((function (e) { Object(f["e"])({ application: t.code }).then((function (n) { var a = { code: "", name: "", active: "", menu: "" }; a.active = !0, a.menu = n.data; var r = i.a.ls.get(o["b"]), s = []; r.forEach((function (e) { e.active && (e.active = !1), s.push(e) })), i.a.ls.set(o["b"], s), a.name = t.name, a.code = t.code; var c = []; c.push(a), i.a.ls.set(o["b"], c), e(n); var l = n.data; D.dispatch("GenerateRoutes", { antDesignmenus: l }).then((function () { g["a"].addRoutes(D.getters.addRouters) })) })).catch((function () { e() })) })) }, getNoticReceiveList: function (e) { var t = e.commit; return new Promise((function (e, n) { Object(p["b"])({ pageSize: 6 }).then((function (a) { if (a.success) { var i = a.data; t("SET_NOTICES", i), e() } else n(new Error(a.message)) })).catch((function (e) { n(e) })) })) } } }, v = b, y = (n("99af"), n("d73b")), k = n("5530"), C = (n("d81d"), n("9911"), n("2ca0"), n("ac1f"), n("5319"), n("680a")), A = { BasicLayout: C["a"], BlankLayout: C["b"], RouteView: C["e"], PageView: C["d"], Iframe: C["c"], 403: function () { return n.e("fail").then(n.bind(null, "097e")) }, 404: function () { return n.e("fail").then(n.bind(null, "d250")) }, 500: function () { return n.e("fail").then(n.bind(null, "656f")) }, Workplace: function () { return n.e("user").then(n.bind(null, "d3bc")) }, AccountCenter: function () { return n.e("fail").then(n.bind(null, "8b8b")) }, AccountSettings: function () { return n.e("fail").then(n.bind(null, "90aa")) }, BaseSettings: function () { return n.e("user").then(n.bind(null, "dd26")) }, SecuritySettings: function () { return n.e("user").then(n.bind(null, "7203")) }, CustomSettings: function () { return n.e("fail").then(n.bind(null, "7320f")) }, BindingSettings: function () { return n.e("fail").then(n.bind(null, "4f23")) }, NotificationSettings: function () { return n.e("fail").then(n.bind(null, "0ca5")) }, Console: function () { return n.e("user").then(n.bind(null, "c5e0")) } }, x = { path: "*", redirect: "/welcome", hidden: !0 }, S = [{ name: "account", pid: 0, id: 10028, meta: { title: "涓汉椤�", icon: "user", show: !1 }, redirect: "/account/center", component: "RouteView" }, { name: "center", pid: 10028, id: 10029, meta: { title: "涓汉涓績", show: !1 }, component: "AccountCenter" }, { name: "settings", pid: "10028", id: "10030", meta: { title: "涓汉璁剧疆", hideHeader: !0, hideChildren: !0, show: !1 }, redirect: "/account/settings/base", component: "AccountSettings" }, { name: "BaseSettings", path: "/account/settings/base", pid: 10030, id: 10031, meta: { title: "鍩烘湰璁剧疆", show: !1 }, component: "BaseSettings" }, { name: "SecuritySettings", path: "/account/settings/security", pid: 10030, id: 10032, meta: { title: "瀹夊叏璁剧疆", show: !1 }, component: "SecuritySettings" }, { name: "CustomSettings", path: "/account/settings/custom", pid: 10030, id: 10033, meta: { title: "涓�у寲璁剧疆", show: !1 }, component: "CustomSettings" }, { name: "BindingSettings", path: "/account/settings/binding", pid: 10030, id: 10034, meta: { title: "璐︽埛缁戝畾", show: !1 }, component: "BindingSettings" }, { name: "NotificationSettings", path: "/account/settings/notification", pid: 10030, id: 10034, meta: { title: "鏂版秷鎭�氱煡", show: !1 }, component: "NotificationSettings" }, { name: "Console", path: "/welcome", pid: 0, id: 183183, meta: { title: "棣栭〉", show: !1 }, component: "Console" }], w = { key: "", name: "MenuIndex.vue", path: "", component: "BasicLayout", redirect: "/welcome", meta: { title: "棣栭〉" }, children: [] }, O = function (e) { return new Promise((function (t, n) { var a = e.antDesignmenus, i = [], r = []; T(a, r, 0), T(S, r, 0), w.children = r, i.push(w); var s = E(i); s.push(x), t(s) })).catch((function (e) { return Promise.reject(e) })) }, E = function e(t, a) { return t.map((function (t) { var i = t.meta || {}, r = i.title, s = i.show, o = i.hideChildren, c = (i.hiddenHeaderContent, i.target), l = i.icon, u = i.link, d = { path: t.path || "".concat(a && a.path || "", "/").concat(t.key), name: t.name || t.key || "", component: A[t.component || t.key] || function () { return n("9dac")("./".concat(t.component)) }, meta: { title: r, icon: l || void 0, target: c, link: u } }; return !1 === s && (d.hidden = !0), o && (d.hideChildrenInMenu = !0), d.path.startsWith("http") || (d.path = d.path.replace("//", "/")), t.redirect && (d.redirect = t.redirect), t.children && t.children.length > 0 && (d.children = e(t.children, d)), d })) }, T = function e(t, n, a) { t && t.forEach((function (i) { if (i.pid == a) { var r = Object(k["a"])(Object(k["a"])({}, i), {}, { key: i.key || i.name, children: [] }); e(t, r.children, i.id), r.children.length <= 0 && delete r.children, n.push(r) } })) }, j = { state: { routers: y["a"], addRouters: [] }, mutations: { SET_ROUTERS: function (e, t) { e.addRouters = t, e.routers = y["a"].concat(t) } }, actions: { GenerateRoutes: function (e, t) { var n = e.commit; return new Promise((function (e) { O(t).then((function (t) { n("SET_ROUTERS", t), e() })) })).catch((function (e) { reject(e) })) } } }, I = j, L = { device: function (e) { return e.app.device }, theme: function (e) { return e.app.theme }, color: function (e) { return e.app.color }, token: function (e) { return e.user.token }, avatar: function (e) { return e.user.avatar }, nickname: function (e) { return e.user.name }, welcome: function (e) { return e.user.welcome }, roles: function (e) { return e.user.roles }, buttons: function (e) { return e.user.buttons }, allButtons: function (e) { return e.user.allButtons }, admintype: function (e) { return e.user.admintype }, userInfo: function (e) { return e.user.info }, userNotices: function (e) { return e.user.notices }, addRouters: function (e) { return e.permission.addRouters }, multiTab: function (e) { return e.app.multiTab }, lang: function (e) { return e.i18n.lang } }, M = L; i.a.use(s.a); var D = t["a"] = new s.a.Store({ modules: { app: l, user: v, permission: I }, state: {}, mutations: {}, actions: {}, getters: M }) }, "4be9": function (e, t, n) { }, "523c": function (e, t, n) { }, "56d7": function (e, t, n) { "use strict"; n.r(t); n("e260"), n("e6cf"), n("cca6"), n("a79d"), n("a4d3"), n("e01a"), n("b636"), n("dc8d"), n("efe9"), n("d28b"), n("2a1b"), n("80e0"), n("6b9e"), n("197b"), n("2351"), n("8172"), n("944a"), n("81b8"), n("99af"), n("a874"), n("cb29"), n("4de4"), n("7db0"), n("c740"), n("0481"), n("5db7"), n("a630"), n("caad"), n("a15b"), n("d81d"), n("5ded"), n("fb6a"), n("4e82"), n("f785"), n("a434"), n("4069"), n("73d9"), n("c19f"), n("82da"), n("ace4"), n("efec"), n("b56e"), n("b0c0"), n("0c47"), n("4ec9"), n("5327"), n("79a8"), n("9ff9"), n("3ea3"), n("40d9"), n("ff9c"), n("0ac8"), n("f664"), n("4057"), n("bc01"), n("6b93"), n("ca21"), n("90d7"), n("2af1"), n("0261"), n("7898"), n("23dc"), n("b65f"), n("a9e3"), n("35b3"), n("f00c"), n("8ba4"), n("9129"), n("583b"), n("aff5"), n("e6e1"), n("c35a"), n("25eb"), n("b680"), n("12a8"), n("e71b"), n("4fad"), n("dca8"), n("c1f9"), n("e439"), n("dbb4"), n("7039"), n("3410"), n("2b19"), n("c906"), n("e21d"), n("e43e"), n("b64b"), n("bf96"), n("5bf7"), n("cee8"), n("af93"), n("131a"), n("d3b7"), n("07ac"), n("a6fd"), n("4ae1"), n("3f3a"), n("ac16"), n("5d41"), n("9e4a"), n("7f78"), n("c760"), n("db96"), n("1bf2"), n("d6dd"), n("7ed3"), n("8b9a"), n("4d63"), n("ac1f"), n("5377"), n("25f0"), n("6062"), n("f5b2"), n("8a79"), n("f6d6"), n("2532"), n("3ca3"), n("466d"), n("843c"), n("4d90"), n("d80f"), n("38cf"), n("5319"), n("841c"), n("1276"), n("2ca0"), n("498a"), n("1e25"), n("eee7"), n("18a5"), n("1393"), n("04d3"), n("cc71"), n("c7cd"), n("9767"), n("1913"), n("c5d0"), n("9911"), n("c96a"), n("2315"), n("4c53"), n("664f"), n("cfc3"), n("4a9b"), n("fd87"), n("8b09"), n("143c"), n("5cc6"), n("8a59"), n("84c3"), n("fb2c"), n("9a8c"), n("a975"), n("735e"), n("c1ac"), n("d139"), n("3a7b"), n("d5d6"), n("20bf"), n("82f8"), n("e91f"), n("60bd"), n("5f96"), n("3280"), n("3fcc"), n("ec97"), n("ca91"), n("25a1"), n("cd26"), n("3c5d"), n("2954"), n("649e"), n("219c"), n("170b"), n("b39a"), n("72f7"), n("10d1"), n("1fe2"), n("159b"), n("ddb0"), n("130f"), n("9f96"), n("2b3d"), n("bf19"), n("9861"), n("96cf"); var a = n("8bbf"), i = n.n(a), r = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-config-provider", { attrs: { locale: e.locale } }, [n("div", { staticClass: "app app1", attrs: { id: "app" } }, [n("router-view", { staticClass: "scrollbar" })], 1)]) }, s = [], o = n("677e"), c = n.n(o), l = n("ac0d"), u = { mixins: [l["a"]], data: function () { return { locale: c.a } }, mounted: function () { } }, d = u, f = (n("034f"), n("2877")), m = Object(f["a"])(d, r, s, !1, null, null, null), p = m.exports, h = n("a18c"), g = n("4360"), b = n("b775"), v = n("ca00"); Object(v["b"])(); var y = n("411c"); n("e951"), n("a660"), n("923a"), n("da7d"), n("1335"), n("fff4"), y.setup({ timeout: 800 }); var k = n("9fb0"), C = n("e819"); function A() { g["a"].commit("SET_SIDEBAR_TYPE", i.a.ls.get(k["n"], !0)), g["a"].commit("TOGGLE_THEME", i.a.ls.get(k["l"], C["a"].navTheme)), g["a"].commit("TOGGLE_LAYOUT_MODE", i.a.ls.get(k["j"], C["a"].layout)), g["a"].commit("TOGGLE_FIXED_HEADER", i.a.ls.get(k["g"], C["a"].fixedHeader)), g["a"].commit("TOGGLE_FIXED_SIDERBAR", i.a.ls.get(k["i"], C["a"].fixSiderbar)), g["a"].commit("TOGGLE_CONTENT_WIDTH", i.a.ls.get(k["e"], C["a"].contentWidth)), g["a"].commit("TOGGLE_FIXED_HEADER_HIDDEN", i.a.ls.get(k["h"], C["a"].autoHideHeader)), g["a"].commit("TOGGLE_WEAK", i.a.ls.get(k["d"], C["a"].colorWeak)), g["a"].commit("TOGGLE_COLOR", i.a.ls.get(k["c"], C["a"].primaryColor)), g["a"].commit("TOGGLE_MULTI_TAB", i.a.ls.get(k["k"], C["a"].multiTab)), g["a"].commit("TOGGLE_CRUMBS_STATE", i.a.ls.get(k["f"], C["a"].crumbsSate)), g["a"].commit("SET_TOKEN", i.a.ls.get(k["a"])) } var x = n("c16e"), S = n.n(x), w = (n("3b18"), n("f64c")), O = (n("3c1f"), n("2f50")), E = (n("dd98"), n("3779")), T = (n("bffa"), n("6634")), j = (n("34c0"), n("9fd0")), I = (n("06f4"), n("fc25")), L = (n("5cad"), n("7b2d")), M = (n("c119"), n("d865")), D = (n("98a7"), n("7bec")), B = (n("dc5a"), n("56cd")), F = (n("2a26"), n("768f")), N = (n("cc70"), n("1fd5")), P = (n("1273"), n("f2ca")), z = (n("eb14"), n("39ab")), R = (n("0025"), n("27ab")), G = (n("9980"), n("0bb7")), H = (n("55ec"), n("a79d8")), K = (n("b97c"), n("7571")), U = (n("ab9e"), n("2c92")), q = (n("9a33"), n("f933")), Q = (n("6d2a"), n("9571")), W = (n("fbd8"), n("55f1")), J = (n("7f6b"), n("8592")), V = (n("b380"), n("bf7b")), Y = (n("dd48"), n("2fc4")), X = (n("af3d"), n("27fd")), Z = (n("d88f"), n("fe2b")), _ = (n("9d5c"), n("a600")), $ = (n("5136"), n("681b")), ee = (n("4a96"), n("a071")), te = (n("8fb1"), n("0c63")), ne = (n("d13f"), n("ccb9")), ae = (n("c68a"), n("0020")), ie = (n("cd17"), n("ed3b")), re = (n("0032"), n("e32c")), se = (n("de6a"), n("9a63")), oe = (n("f2ef"), n("3af3")), ce = (n("288f"), n("cdeb")), le = (n("2ef0f"), n("9839")), ue = (n("ee00"), n("bb76")), de = (n("5783"), n("59a5")), fe = (n("fbd6"), n("160c")), me = (n("6ba6"), n("5efb")), pe = (n("922d"), n("09d9")), he = (n("5704"), n("b558")), ge = (n("1a62"), n("98c5")), be = (n("d2a3"), n("4df5")); i.a.use(be["a"]), i.a.use(ge["a"]), i.a.use(he["a"]), i.a.use(pe["a"]), i.a.use(me["a"]), i.a.use(fe["a"]), i.a.use(de["a"]), i.a.use(ue["a"]), i.a.use(le["c"]), i.a.use(ce["a"]), i.a.use(oe["a"]), i.a.use(se["a"]), i.a.use(re["a"]), i.a.use(ie["a"]), i.a.use(ae["a"]), i.a.use(ne["a"]), i.a.use(te["a"]), i.a.use(ee["a"]), i.a.use($["a"]), i.a.use(_["a"]), i.a.use(Z["b"]), i.a.use(X["a"]), i.a.use(Y["a"]), i.a.use(V["a"]), i.a.use(J["a"]), i.a.use(W["a"]), i.a.use(Q["a"]), i.a.use(q["a"]), i.a.use(U["a"]), i.a.use(K["a"]), i.a.use(H["a"]), i.a.use(G["a"]), i.a.use(R["a"]), i.a.use(z["a"]), i.a.use(P["a"]), i.a.use(N["a"]), i.a.use(F["a"]), i.a.use(B["a"]), i.a.use(D["a"]), i.a.use(M["a"]), i.a.use(L["a"]), i.a.use(I["a"]), i.a.use(j["a"]), i.a.use(T["a"]), i.a.use(E["a"]), i.a.use(O["a"]), i.a.prototype.$confirm = ie["a"].confirm, i.a.prototype.$message = w["a"], i.a.prototype.$notification = B["a"], i.a.prototype.$info = ie["a"].info, i.a.prototype.$success = ie["a"].success, i.a.prototype.$error = ie["a"].error, i.a.prototype.$warning = ie["a"].warning; var ve = n("3654"), ye = n("4eb5"), ke = n.n(ye), Ce = n("7e79"), Ae = n.n(Ce), xe = n("31fc"), Se = n("5530"), we = { name: "PageLoading", props: { tip: { type: String, default: "Loading.." }, size: { type: String, default: "large" } }, render: function () { var e = arguments[0], t = { textAlign: "center", background: "rgba(0,0,0,0.6)", position: "fixed", top: 0, bottom: 0, left: 0, right: 0, zIndex: 1100 }, n = { position: "absolute", left: "50%", top: "40%", transform: "translate(-50%, -50%)" }; return e("div", { style: t }, [e(J["a"], { attrs: { size: this.size, tip: this.tip }, style: n })]) } }, Oe = "0.0.1", Ee = { newInstance: function (e, t) { var n = document.querySelector("body>div[type=loading]"); n || (n = document.createElement("div"), n.setAttribute("type", "loading"), n.setAttribute("class", "ant-loading-wrapper"), document.body.appendChild(n)); var a = Object.assign({ visible: !1, size: "large", tip: "Loading..." }, t), i = new e({ data: function () { return Object(Se["a"])({}, a) }, render: function () { var e = arguments[0], t = this.tip, n = {}; return this.tip && (n.tip = t), this.visible ? e(we, { props: Object(Se["a"])({}, n) }) : null } }).$mount(n); function r(e) { var t = Object(Se["a"])(Object(Se["a"])({}, a), e), n = t.visible, r = t.size, s = t.tip; i.$set(i, "visible", n), s && i.$set(i, "tip", s), r && i.$set(i, "size", r) } return { instance: i, update: r } } }, Te = { show: function (e) { this.instance.update(Object(Se["a"])(Object(Se["a"])({}, e), {}, { visible: !0 })) }, hide: function () { this.instance.update({ visible: !1 }) } }, je = function (e, t) { e.prototype.$loading || (Te.instance = Ee.newInstance(e, t), e.prototype.$loading = Te) }, Ie = { version: Oe, install: je }, Le = n("3835"), Me = { add: { key: "add", label: "鏂板" }, delete: { key: "delete", label: "鍒犻櫎" }, edit: { key: "edit", label: "淇敼" }, query: { key: "query", label: "鏌ヨ" }, get: { key: "get", label: "璇︽儏" }, enable: { key: "enable", label: "鍚敤" }, disable: { key: "disable", label: "绂佺敤" }, import: { key: "import", label: "瀵煎叆" }, export: { key: "export", label: "瀵煎嚭" } }; function De(e) { De.installed || (!e.prototype.$auth && Object.defineProperties(e.prototype, { $auth: { get: function () { var e = this; return function (t) { var n = t.split("."), a = Object(Le["a"])(n, 2), i = a[0], r = a[1], s = e.$store.getters.roles.permissions; return s.find((function (e) { return e.permissionId === i })).actionList.findIndex((function (e) { return e === r })) > -1 } } } }), !e.prototype.$enum && Object.defineProperties(e.prototype, { $enum: { get: function () { return function (e) { var t = Me; return e && e.split(".").forEach((function (e) { t = t && t[e] || null })), t } } } })) } var Be = De; i.a.directive("action", { inserted: function (e, t, n) { var a = t.arg, i = g["a"].getters.roles, r = n.context.$route.meta.permission, s = r instanceof String && [r] || r; i.permissions.forEach((function (t) { s.includes(t.permissionId) && t.actionList && !t.actionList.includes(a) && (e.parentNode && e.parentNode.removeChild(e) || (e.style.display = "none")) })) } }); ke.a.config.autoSetContainer = !0, i.a.use(ve["a"]), i.a.use(xe["a"]), i.a.use(Ie), i.a.use(S.a, C["a"].storageOptions), i.a.use(ke.a), i.a.use(Be), i.a.use(Ae.a); var Fe = n("323e"), Ne = n.n(Fe), Pe = (n("fddb"), function (e) { document.title = e; var t = navigator.userAgent, n = /\bMicroMessenger\/([\d\.]+)/; if (n.test(t) && /ip(hone|od|ad)/i.test(t)) { var a = document.createElement("iframe"); a.src = "/favicon.ico", a.style.display = "none", a.onload = function () { setTimeout((function () { a.remove() }), 9) }, document.body.appendChild(a) } }), ze = "Admin.NET", Re = n("0063"), Ge = n.n(Re); Ne.a.configure({ showSpinner: !1 }); var He = ["login", "register", "registerResult", "wechat"]; h["a"].beforeEach((function (e, t, n) { Ne.a.start(), e.meta && "undefined" !== typeof e.meta.title && Pe("".concat(e.meta.title, " - ").concat(ze)), i.a.ls.get(k["a"]) ? "/user/login" === e.path ? Ne.a.done() : 0 === g["a"].getters.roles.length ? (g["a"].dispatch("GetInfo").then((function (a) { if (a.menus.length < 1) ie["a"].error({ title: "鎻愮ず锛�", content: "鏃犺彍鍗曟潈闄愶紝璇疯仈绯荤鐞嗗憳", okText: "纭畾", onOk: function () { g["a"].dispatch("Logout").then((function () { window.location.reload() })) } }); else { var r, s = i.a.ls.get(k["b"]); if (null == s) { var o = []; if (a.apps.forEach((function (e) { var t = { code: "", name: "", active: "", menu: "" }; e.active ? (t.code = e.code, t.name = e.name, t.active = e.active, t.menu = a.menus, r = a.menus) : (t.code = e.code, t.name = e.name, t.active = e.active, t.menu = ""), o.push(t) })), void 0 === r) { var c = Ge.a.from(o).first(); c.active = "Y", c.menu = a.menus, r = a.menus } i.a.ls.set(k["b"], o, 6048e5), setTimeout((function () { B["a"].success({ message: "娆㈣繋", description: "".concat(Object(v["c"])(), "锛屾杩庡洖鏉�") }) }), 1e3) } else r = i.a.ls.get(k["b"])[0].menu; g["a"].dispatch("GenerateRoutes", { antDesignmenus: r }).then((function () { h["a"].addRoutes(g["a"].getters.addRouters); var a = decodeURIComponent(t.query.redirect || e.path); e.path === a ? (n({ path: a }), n(Object(Se["a"])(Object(Se["a"])({}, e), {}, { replace: !0 }))) : n({ path: a }) })) } })).catch((function () { g["a"].dispatch("Logout").then((function () { n({ path: "/user/login", query: { redirect: e.fullPath } }) })) })), g["a"].dispatch("getNoticReceiveList").then((function (e) { }))) : n() : He.includes(e.name) ? n() : (n({ path: "/user/login", query: { redirect: e.fullPath } }), Ne.a.done()) })), h["a"].afterEach((function () { Ne.a.done() })); var Ke = n("c1df"), Ue = n.n(Ke); n("5c3a"); Ue.a.locale("zh-cn"), i.a.filter("NumberFormat", (function (e) { if (!e) return "0"; var t = e.toString().replace(/(\d)(?=(?:\d{3})+$)/g, "$1,"); return t })), i.a.filter("moment", (function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "YYYY-MM-DD HH:mm:ss"; return Ue()(e).format(t) })), i.a.filter("Fmoney", (function (e) { e = e.toString().replace(/\$|\,/g, ""), isNaN(e) && (e = "0"); var t = e == (e = Math.abs(e)); e = Math.floor(100 * e + .50000000001); var n = e % 100; e = Math.floor(e / 100).toString(), n < 10 && (n = "0" + n); for (var a = 0; a < Math.floor((e.length - (1 + a)) / 3); a++)e = e.substring(0, e.length - (4 * a + 3)) + "," + e.substring(e.length - (4 * a + 3)); return (t ? "" : "-") + e + "." + n })), i.a.filter("dictType", (function (e, t) { var n = i.a.ls.get(k["m"]); if (void 0 === n) return "闇�閲嶆柊鐧诲綍"; var a = n.filter((function (t) { return t.code == e }))[0].children; if (void 0 === a || 0 === a.length) return "鏃犳瀛楀吀"; var r = a.filter((function (e) { return e.code == t })); return void 0 === r.length || 0 === r.length ? "鏃犳瀛楀吀" : r[0].name })), i.a.filter("dictData", (function (e) { var t = i.a.ls.get(k["m"]); if (void 0 === t) return []; var n = t.filter((function (t) { return t.code == e }))[0].children; return void 0 === n ? [] : n })), i.a.filter("dictDataAll", (function () { return i.a.ls.get(k["m"]) })); n("4be9"); var qe = n("1da1"), Qe = n("d4ec"), We = n("bee2"), Je = n("262e"), Ve = n("2caf"), Ye = n("e87a"), Xe = n("faa1"), Ze = { log: !1 }, _e = function (e) { Object(Je["a"])(n, e); var t = Object(Ve["a"])(n); function n(e) { var a, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return Object(Qe["a"])(this, n), a = t.call(this), a.connection = e, a.options = Object.assign(Ze, i), a.listened = [], a.toSend = [], a.offline = !1, a.socket = void 0, a } return Object(We["a"])(n, [{ key: "one", value: function (e, t) { 0 === this.listeners(e).length && this.on(e, t) } }, { key: "_initialize", value: function () { var e = Object(qe["a"])(regeneratorRuntime.mark((function e() { var t = this; return regeneratorRuntime.wrap((function (e) { while (1) switch (e.prev = e.next) { case 0: return e.prev = 0, e.next = 3, this.socket.start(); case 3: this.emit("onstart"), this.offline && this.emit("onrestart"), this.offline = !1, e.next = 11; break; case 8: e.prev = 8, e.t0 = e["catch"](0), setTimeout(Object(qe["a"])(regeneratorRuntime.mark((function e() { return regeneratorRuntime.wrap((function (e) { while (1) switch (e.prev = e.next) { case 0: return e.next = 2, t._initialize(); case 2: case "end": return e.stop() } }), e) }))), 5e3); case 11: case "end": return e.stop() } }), e, this, [[0, 8]]) }))); function t() { return e.apply(this, arguments) } return t }() }, { key: "start", value: function () { var e = Object(qe["a"])(regeneratorRuntime.mark((function e(t) { var n = this; return regeneratorRuntime.wrap((function (e) { while (1) switch (e.prev = e.next) { case 0: if (this.socket) { e.next = 6; break } return this.socket = (new Ye["HubConnectionBuilder"]).configureLogging(Ye["LogLevel"].Information).withUrl("/hubs/chathub", { accessTokenFactory: function () { return t }, skipNegotiation: !0, transport: Ye["HttpTransportType"].WebSockets }).build(), this.socket.onclose(Object(qe["a"])(regeneratorRuntime.mark((function e() { return regeneratorRuntime.wrap((function (e) { while (1) switch (e.prev = e.next) { case 0: return n.offline = !0, n.emit("onclose"), e.next = 4, n._initialize(); case 4: case "end": return e.stop() } }), e) })))), this.socket.on("ForceExist", (function () { n.socket.stop(), g["a"].dispatch("Logout").then((function () { ie["a"].success({ title: "娑堟伅", content: "浣犲凡琚己鍒朵笅绾�", keyboard: !1, onOk: function () { window.location.reload() } }) })).catch((function (e) { w["a"].error({ title: "閿欒", description: e.message }) })) })), e.next = 6, this._initialize(); case 6: case "end": return e.stop() } }), e, this) }))); function t(t) { return e.apply(this, arguments) } return t }() }, { key: "authenticate", value: function () { var e = Object(qe["a"])(regeneratorRuntime.mark((function e(t) { return regeneratorRuntime.wrap((function (e) { while (1) switch (e.prev = e.next) { case 0: return e.next = 2, this.start(t); case 2: case "end": return e.stop() } }), e, this) }))); function t(t) { return e.apply(this, arguments) } return t }() }, { key: "listen", value: function (e) { var t = this; this.offline || this.listened.some((function (t) { return t === e })) || (this.listened.push(e), this.one("onstart", (function () { t.listened.forEach((function (e) { t.socket.on(e, (function (n) { t.options.log, t.emit(e, n) })) })) }))) } }, { key: "send", value: function (e) { for (var t, n = this, a = arguments.length, i = new Array(a > 1 ? a - 1 : 0), r = 1; r < a; r++)i[r - 1] = arguments[r]; (this.options.log, this.offline) || (this.socket ? (t = this.socket).send.apply(t, [e].concat(i)) : this.one("onstart", (function () { var t; return (t = n.socket).send.apply(t, [e].concat(i)) }))) } }, { key: "invoke", value: function () { var e = Object(qe["a"])(regeneratorRuntime.mark((function e(t) { var n, a, i, r, s = this, o = arguments; return regeneratorRuntime.wrap((function (e) { while (1) switch (e.prev = e.next) { case 0: for (n = o.length, a = new Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++)a[i - 1] = o[i]; if (this.options.log, !this.offline) { e.next = 4; break } return e.abrupt("return", !1); case 4: if (!this.socket) { e.next = 6; break } return e.abrupt("return", (r = this.socket).invoke.apply(r, [t].concat(a))); case 6: return e.abrupt("return", new Promise(function () { var e = Object(qe["a"])(regeneratorRuntime.mark((function e(n) { return regeneratorRuntime.wrap((function (e) { while (1) switch (e.prev = e.next) { case 0: return e.abrupt("return", s.one("onstart", (function () { var e; return n((e = s.socket).invoke.apply(e, [t].concat(a))) }))); case 1: case "end": return e.stop() } }), e) }))); return function (t) { return e.apply(this, arguments) } }())); case 7: case "end": return e.stop() } }), e, this) }))); function t(t) { return e.apply(this, arguments) } return t }() }]), n }(Xe); if (!Ye) throw new Error("[Vue-SignalR] Cannot locate signalr-client"); function $e(e, t) { if (!t) throw new Error("[Vue-SignalR] Cannot locate connection"); var n = new _e(t); e.socket = n, Object.defineProperties(e.prototype, { $socket: { get: function () { return n } } }), e.mixin({ created: function () { var e = this; if (this.$options.sockets) { var t = Object.getOwnPropertyNames(this.$options.sockets); t.forEach((function (t) { n.listen(t), n.one(t, (function (n) { return e.$options.sockets[t].call(e, n) })) })) } this.$options.subscribe && n.one("authenticated", (function () { e.$options.subscribe.forEach((function (e) { n.invoke("join", e) })) })) } }) } var et = $e, tt = n("2af9"); function nt(e) { var t = g["a"].getters.buttons, n = g["a"].getters.allButtons, a = g["a"].getters.admintype; return "1" == a || (-1 === n.indexOf(e) || t.indexOf(e) > -1) } function at() { return g["a"].getters.applocation } var it = n("568e"), rt = n.n(it), st = (n("21d8"), n("3aed"), n("6c29")); i.a.use(rt.a), i.a.use(st["a"]), i.a.use(et, "/hubs/chatHub"), i.a.use(b["a"]), i.a.use(tt["g"]), i.a.prototype.hasPerm = nt, i.a.prototype.applocation = at, i.a.config.productionTip = !1, new i.a({ router: h["a"], store: g["a"], created: A, render: function (e) { return e(p) } }).$mount("#app") }, 5880: function (e, t) { e.exports = Vuex }, "611e": function (e, t, n) { "use strict"; var a = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { class: [e.prefixCls, e.reverseColor && "reverse-color"] }, [n("span", [e._t("term"), n("span", { staticClass: "item-text" }, [e._t("default")], 2)], 2), n("span", { class: [e.flag] }, [n("a-icon", { attrs: { type: "caret-" + e.flag } })], 1)]) }, i = [], r = { name: "Trend", props: { prefixCls: { type: String, default: "ant-pro-trend" }, flag: { type: String, required: !0 }, reverseColor: { type: Boolean, default: !1 } } }, s = r, o = (n("2d0f"), n("2877")), c = Object(o["a"])(s, a, i, !1, null, "9f28f096", null), l = c.exports; t["a"] = l }, "612e": function (e, t, n) { "use strict"; n("b656") }, 6135: function (e, t, n) { "use strict"; n.d(t, "d", (function () { return i })), n.d(t, "e", (function () { return r })), n.d(t, "b", (function () { return s })), n.d(t, "c", (function () { return o })), n.d(t, "a", (function () { return c })), n.d(t, "g", (function () { return l })), n.d(t, "f", (function () { return u })); var a = n("b775"); function i(e) { return Object(a["b"])({ url: "/login", method: "post", data: e }) } function r(e) { return Object(a["b"])({ url: "/logout", method: "get", params: e }) } function s(e) { return Object(a["b"])({ url: "/getLoginUser", method: "get", params: e }) } function o(e) { return Object(a["b"])({ url: "/getSmsCaptcha", method: "get", params: e }) } function c(e) { return Object(a["b"])({ url: "/getCaptchaOpen", method: "get", params: e }) } function l(e) { return Object(a["b"])({ url: "/captcha/get", method: "post", data: e }) } function u(e) { return Object(a["b"])({ url: "/captcha/check", method: "post", data: e }) } }, "61d9": function (e, t, n) { "use strict"; n("37c2") }, 6389: function (e, t) { e.exports = VueRouter }, "63ca": function (e, t, n) { }, 6597: function (e, t, n) { "use strict"; n.d(t, "c", (function () { return i })), n.d(t, "e", (function () { return r })), n.d(t, "b", (function () { return s })), n.d(t, "d", (function () { return o })), n.d(t, "a", (function () { return c })), n.d(t, "f", (function () { return l })); var a = n("b775"); function i(e) { return Object(a["b"])({ url: "/sysFileInfo/page", method: "get", params: e }) } function r(e) { return Object(a["b"])({ url: "/sysFileInfo/upload", method: "post", data: e }) } function s(e) { return Object(a["b"])({ url: "/sysFileInfo/download", method: "get", params: e, responseType: "blob" }) } function o(e) { return Object(a["b"])({ url: "/sysFileInfo/preview", method: "get", params: e, responseType: "arraybuffer" }) } function c(e) { return Object(a["b"])({ url: "/sysFileInfo/delete", method: "post", data: e }) } function l(e) { return Object(a["b"])({ url: "/sysFileInfo/uploadAvatar", method: "post", data: e }) } }, 6692: function (e, t, n) { "use strict"; n("63ca") }, "676c": function (e, t, n) { "use strict"; n("a3a0") }, "680a": function (e, t, n) { "use strict"; n.d(t, "f", (function () { return g })), n.d(t, "a", (function () { return Ze })), n.d(t, "b", (function () { return A })), n.d(t, "e", (function () { return d })), n.d(t, "d", (function () { return gt })), n.d(t, "c", (function () { return kt })); var a, i, r = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { class: ["user-layout-wrapper", e.device], attrs: { id: "userLayout" } }, [n("div", { staticClass: "container" }, [e._m(0), n("route-view"), e._m(1)], 1)]) }, s = [function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "top" }, [a("div", { staticClass: "header" }, [a("a", { attrs: { href: "/" } }, [a("img", { staticClass: "logo", attrs: { src: n("cf05"), alt: "logo" } }), a("span", { staticClass: "title" }, [e._v("Admin.NET")])])]), a("div", { staticClass: "desc" })]) }, function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "footer" }, [n("div", { staticClass: "links" }, [n("a", { attrs: { href: "_self" } }, [e._v("甯姪")]), n("a", { attrs: { href: "_self" } }, [e._v("闅愮")]), n("a", { attrs: { href: "_self" } }, [e._v("鏉℃")])]), n("div", { staticClass: "copyright" }, [e._v(" Copyright 漏 2021 "), n("a", { attrs: { target: "_blank", href: "https://gitee.com/zuohuaijun/Admin.NET" } }, [e._v("Admin.NET")]), e._v(" All rights reserved. v1.5.2 ")])]) }], o = { name: "RouteView", props: { keepAlive: { type: Boolean, default: !0 } }, data: function () { return {} }, render: function () { var e = arguments[0], t = this.$route.meta, n = this.$store.getters, a = e("keep-alive", [e("router-view")]), i = e("router-view"); return (n.multiTab || t.keepAlive) && (this.keepAlive || n.multiTab || t.keepAlive) ? a : i } }, c = o, l = n("2877"), u = Object(l["a"])(c, a, i, !1, null, null, null), d = u.exports, f = n("ac0d"), m = { name: "UserLayout", components: { RouteView: d }, mixins: [f["c"]], data: function () { return {} }, mounted: function () { document.body.classList.add("userLayout") }, beforeDestroy: function () { document.body.classList.remove("userLayout") } }, p = m, h = (n("612e"), Object(l["a"])(p, r, s, !1, null, "4322b080", null)), g = h.exports, b = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", [n("router-view")], 1) }, v = [], y = { name: "BlankLayout" }, k = y, C = Object(l["a"])(k, b, v, !1, null, "7f25f9eb", null), A = C.exports, x = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-layout", { class: ["layout", e.device] }, [e.isMobile() ? n("a-drawer", { attrs: { placement: "left", wrapClassName: "drawer-sider " + e.navTheme, closable: !1, visible: e.collapsed }, on: { close: e.drawerClose } }, [n("side-menu", { attrs: { mode: "inline", menus: e.menus, theme: e.navTheme, collapsed: !1, collapsible: !0 }, on: { menuSelect: e.menuSelect } })], 1) : e.isSideMenu() ? n("side-menu", { attrs: { mode: "inline", menus: e.menus, theme: e.navTheme, collapsed: e.collapsed, collapsible: !0 } }) : e._e(), n("a-layout", { class: [e.layoutMode, "content-width-" + e.contentWidth], style: { paddingLeft: e.contentPaddingLeft, minHeight: "100vh" } }, [n("global-header", { attrs: { mode: e.layoutMode, menus: e.menus, theme: e.navTheme, collapsed: e.collapsed, device: e.device }, on: { toggle: e.toggle } }), n("a-layout-content", { style: { height: "100%", margin: "24px 24px 0", paddingTop: e.fixedHeader ? "55px" : "0" } }, [e.multiTab ? n("multi-tab") : e._e(), n("transition", { attrs: { name: "page-transition" } }, [n("route-view")], 1)], 1), n("a-layout-footer", [n("global-footer")], 1), e.production ? e._e() : n("setting-drawer")], 1)], 1) }, S = [], w = n("5530"), O = (n("7db0"), n("ca00")), E = n("5880"), T = n("e819"), j = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-layout-sider", { class: ["sider", e.isDesktop() ? null : "shadow", e.theme, e.fixSiderbar ? "ant-fixed-sidemenu" : null], attrs: { width: "230px", collapsible: e.collapsible, trigger: null }, model: { value: e.collapsed, callback: function (t) { e.collapsed = t }, expression: "collapsed" } }, [n("logo"), n("s-menu", { attrs: { collapsed: e.collapsed, menu: e.menus, theme: e.theme, mode: e.mode }, on: { select: e.onSelect } })], 1) }, I = [], L = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "logo" }, [n("router-link", { attrs: { to: { name: "Console" } } }, [n("LogoSvg", { attrs: { alt: "logo" } }), e.showTitle ? n("h1", [e._v(e._s(this.titles))]) : e._e()], 1)], 1) }, M = [], D = n("8eeb4"), B = n.n(D), F = { name: "Logo", components: { LogoSvg: B.a }, mixins: [f["b"], f["c"]], data: function () { return { titles: "" } }, props: { title: { type: String, default: "Admin.NET", required: !1 }, showTitle: { type: Boolean, default: !0, required: !1 } }, created: function () { "topmenu" === this.layoutMode ? this.title.length > 8 ? this.titles = this.title.substring(0, 8) + "..." : this.titles = this.title : this.title.length > 10 ? this.titles = this.title.substring(0, 8) + "..." : this.titles = this.title } }, N = F, P = Object(l["a"])(N, L, M, !1, null, null, null), z = P.exports, R = n("2638"), G = n.n(R), H = n("53ca"), K = (n("159b"), n("99af"), n("caad"), n("2532"), n("b0c0"), n("d81d"), n("55f1")), U = n("0c63"), q = { name: "SMenu", props: { menu: { type: Array, required: !0 }, theme: { type: String, required: !1, default: "dark" }, mode: { type: String, required: !1, default: "inline" }, collapsed: { type: Boolean, required: !1, default: !1 } }, data: function () { return { openKeys: [], selectedKeys: [], cachedOpenKeys: [] } }, computed: { rootSubmenuKeys: function (e) { var t = []; return e.menu.forEach((function (e) { return t.push(e.path) })), t } }, mounted: function () { this.updateMenu() }, watch: { collapsed: function (e) { e ? (this.cachedOpenKeys = this.openKeys.concat(), this.openKeys = []) : this.openKeys = this.cachedOpenKeys }, $route: function () { this.updateMenu() } }, methods: { onOpenChange: function (e) { var t = this; if ("horizontal" !== this.mode) { var n = e.find((function (e) { return !t.openKeys.includes(e) })); this.rootSubmenuKeys.includes(n) ? this.openKeys = n ? [n] : [] : this.openKeys = e } else this.openKeys = e }, onSelect: function (e) { var t = e.item, n = e.key, a = e.selectedKeys; this.selectedKeys = a, this.$emit("select", { item: t, key: n, selectedKeys: a }) }, updateMenu: function () { var e = this.$route.matched.concat(), t = this.$route.meta.hidden; e.length >= 3 && t ? (e.pop(), this.selectedKeys = [e[e.length - 1].path]) : this.selectedKeys = [e.pop().path]; var n = []; "inline" === this.mode && e.forEach((function (e) { n.push(e.path) })), this.collapsed ? this.cachedOpenKeys = n : this.openKeys = n }, renderItem: function (e) { return e.hidden ? null : e.children && !e.hideChildrenInMenu ? this.renderSubMenu(e) : this.renderMenuItem(e) }, renderMenuItem: function (e) { var t = this.$createElement, n = e.meta.target || null, a = n ? "a" : "router-link", i = { to: { name: e.name } }, r = { href: e.path, target: e.meta.target }; return e.children && e.hideChildrenInMenu && e.children.forEach((function (e) { e.meta = Object.assign(e.meta, { hidden: !0 }) })), t(K["a"].Item, G()([{}, { key: e.path }]), [t(a, { props: Object(w["a"])({}, i), attrs: Object(w["a"])({}, r) }, [this.renderIcon(e.meta.icon), t("span", [e.meta.title])])]) }, renderSubMenu: function (e) { var t = this, n = this.$createElement, a = []; return e.hideChildrenInMenu || e.children.forEach((function (e) { return a.push(t.renderItem(e)) })), n(K["a"].SubMenu, G()([{}, { key: e.path }]), [n("span", { slot: "title" }, [this.renderIcon(e.meta.icon), n("span", [e.meta.title])]), a]) }, renderIcon: function (e) { var t = this.$createElement; if ("none" === e || void 0 === e) return null; var n = {}; return "object" === Object(H["a"])(e) ? n.component = e : n.type = e, t(U["a"], { props: Object(w["a"])({}, n) }) } }, render: function () { var e = this, t = arguments[0], n = { props: { mode: this.mode, theme: this.theme, openKeys: this.openKeys, selectedKeys: this.selectedKeys }, on: { openChange: this.onOpenChange, select: this.onSelect } }, a = this.menu.map((function (t) { return t.hidden ? null : e.renderItem(t) })); return t(K["a"], G()([{}, n]), [a]) } }, Q = q, W = { name: "SideMenu", components: { Logo: z, SMenu: Q }, mixins: [f["b"], f["c"]], props: { mode: { type: String, required: !1, default: "inline" }, theme: { type: String, required: !1, default: "dark" }, collapsible: { type: Boolean, required: !1, default: !1 }, collapsed: { type: Boolean, required: !1, default: !1 }, menus: { type: Array, required: !0 } }, methods: { onSelect: function (e) { this.$emit("menuSelect", e) } } }, J = W, V = Object(l["a"])(J, j, I, !1, null, null, null), Y = V.exports, X = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("transition", { attrs: { name: "showHeader" } }, [e.visible ? n("div", { staticClass: "header-animat" }, [e.visible ? n("a-layout-header", { class: [e.fixedHeader && "ant-header-fixedHeader", e.sidebarOpened ? "ant-header-side-opened" : "ant-header-side-closed"], style: { padding: "0", height: "55px" } }, ["sidemenu" === e.mode ? n("div", { staticClass: "header" }, [n("a-menu", { staticStyle: { height: "55px", "border-bottom": "0px" }, attrs: { mode: "horizontal", "default-selected-keys": this.defApp } }, ["mobile" === e.device ? n("a-icon", { staticClass: "trigger", attrs: { type: e.collapsed ? "menu-fold" : "menu-unfold" }, on: { click: e.toggle } }) : n("a-icon", { staticClass: "trigger", staticStyle: { "padding-left": "20px", "padding-right": "20px" }, attrs: { type: e.collapsed ? "menu-unfold" : "menu-fold" }, on: { click: e.toggle } }), e._l(e.userInfo.apps, (function (t) { return n("a-menu-item", { key: t.code, staticStyle: { top: "0px", "line-height": "55px", "padding-left": "10px", "padding-right": "10px" }, on: { click: function (n) { return e.switchApp(t.code) } } }, [e._v(" " + e._s(t.name) + " ")]) })), n("user-menu")], 2)], 1) : n("div", { class: ["top-nav-header-index", e.theme] }, [n("div", { staticClass: "header-index-wide" }, [n("div", { staticClass: "header-index-left" }, [n("logo", { staticClass: "top-nav-header", attrs: { "show-title": "mobile" !== e.device } }), "mobile" !== e.device ? n("s-menu", { attrs: { mode: "horizontal", menu: e.menus, theme: e.theme } }) : n("a-icon", { staticClass: "trigger", attrs: { type: e.collapsed ? "menu-fold" : "menu-unfold" }, on: { click: e.toggle } })], 1), n("user-menu", { staticClass: "header-index-right" })], 1)])]) : e._e()], 1) : e._e()]) }, Z = [], _ = (n("4de4"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "user-wrapper" }, [n("div", { staticClass: "content-box" }, [n("span", { staticClass: "action", on: { click: e.toggleFullscreen } }, [e.isFullscreen ? n("a-icon", { attrs: { type: "fullscreen-exit" } }) : n("a-icon", { attrs: { type: "fullscreen" } })], 1), e.hasPerm("sysNotice:received") ? n("notice-icon", { staticClass: "action" }) : e._e(), n("a-dropdown", [n("span", { staticClass: "action ant-dropdown-link user-dropdown-menu" }, [n("a-avatar", { staticClass: "avatar", attrs: { size: "small", src: e.avatar } }), n("span", [e._v(e._s(e.nickname))])], 1), n("a-menu", { staticClass: "user-dropdown-menu-wrapper", attrs: { slot: "overlay" }, slot: "overlay" }, ["sidemenu" === e.mode ? n("a-menu-item", { key: "4" }, [n("a", { on: { click: function (t) { return e.appToggled() } } }, [n("a-icon", { attrs: { type: "swap" } }), n("span", [e._v("鍒囨崲搴旂敤")])], 1)]) : e._e(), n("a-menu-item", { key: "1" }, [n("router-link", { attrs: { to: { name: "settings" } } }, [n("a-icon", { attrs: { type: "setting" } }), n("span", [e._v("璐︽埛璁剧疆")])], 1)], 1), n("a-menu-item", { key: "2" }, [n("a", { on: { click: function (t) { return e.sendMessage() } } }, [n("a-icon", { attrs: { type: "message" } }), n("span", [e._v("娑堟伅鍙戦�佹祴璇�")])], 1)]), n("a-menu-divider"), n("a-menu-item", { key: "3" }, [n("a", { attrs: { href: "javascript:;" }, on: { click: e.handleLogout } }, [n("a-icon", { attrs: { type: "logout" } }), n("span", [e._v("閫�鍑虹櫥褰�")])], 1)])], 1)], 1)], 1), n("a-modal", { attrs: { title: "鍒囨崲搴旂敤", visible: e.visible, footer: null, "confirm-loading": e.confirmLoading }, on: { cancel: e.handleCancel } }, [n("a-form", { attrs: { form: e.form1 } }, [n("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "閫夋嫨搴旂敤" } }, [n("a-menu", { staticStyle: { "border-bottom": "0px", lineHeight: "55px" }, attrs: { mode: "inline", "default-selected-keys": this.defApp } }, e._l(e.userInfo.apps, (function (t) { return n("a-menu-item", { key: t.code, staticStyle: { top: "0px" }, on: { click: function (n) { return e.switchApp(t.code) } } }, [e._v(" " + e._s(t.name) + " ")]) })), 1)], 1)], 1)], 1)], 1) }), $ = [], ee = n("1da1"), te = (n("96cf"), n("93bf")), ne = n.n(te), ae = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-popover", { attrs: { trigger: "click", placement: "bottomRight", overlayClassName: "header-notice-wrapper", getPopupContainer: function () { return e.$refs.noticeRef.parentElement }, autoAdjustOverflow: !0, arrowPointAtCenter: !0, overlayStyle: { width: "300px", top: "50px" } }, model: { value: e.visible, callback: function (t) { e.visible = t }, expression: "visible" } }, [n("template", { slot: "content" }, [n("a-spin", { attrs: { spinning: e.loading } }, [n("a-tabs", e._l(e.userNotices.rows, (function (t) { return n("a-tab-pane", { key: t.key, attrs: { tab: t.key } }, [n("a-list", [e._l(t.noticeData.filter((function (e) { return e.type == t.value })), (function (t, a) { return n("a-list-item", { key: a }, [n("a-list-item-meta", { attrs: { title: t.title, description: t.publicTime } }, [n("a-avatar", { staticStyle: { "background-color": "white" }, attrs: { slot: "avatar", src: e.noticeImg }, slot: "avatar" })], 1)], 1) })), t.noticeData.filter((function (e) { return e.type == t.value })).length > 0 ? n("a-list-item", { staticStyle: { display: "block", "text-align": "center" } }, [n("a-button", { attrs: { type: "link" }, on: { click: function (t) { return e.goMore() } } }, [e._v("鍘诲鐞�")])], 1) : e._e()], 2)], 1) })), 1)], 1)], 1), n("span", { ref: "noticeRef", staticClass: "header-notice", staticStyle: { padding: "0 18px" }, on: { click: e.fetchNotice } }, [n("a-badge", { attrs: { count: e.userNotices.totalRows } }, [n("a-icon", { staticStyle: { "font-size": "16px", padding: "4px" }, attrs: { type: "bell" } })], 1)], 1)], 2) }, ie = [], re = n("818f"), se = n.n(re), oe = { name: "HeaderNotice", data: function () { return { loading: !1, visible: !1, noticeImg: se.a } }, mounted: function () { }, computed: Object(w["a"])({}, Object(E["mapGetters"])(["userNotices"])), methods: { fetchNotice: function () { this.visible = !this.visible }, goMore: function () { this.visible = !this.visible, this.$router.push("/noticeReceived") } } }, ce = oe, le = (n("ca17"), n("b408"), Object(l["a"])(ce, ae, ie, !1, null, "1c6fb671", null)), ue = le.exports, de = ue, fe = n("9fb0"), me = n("8bbf"), pe = n.n(me), he = n("f64c"); function ge(e) { pe.a.socket.invoke("ClientsSendMessagetoAll", { title: e.title, message: e.message, messagetype: e.messagetype }).then((function (e) { })) } var be = { name: "UserMenu", components: { NoticeIcon: de, screenfull: ne.a }, props: { mode: { type: String, default: "sidemenu" } }, data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }, visible: !1, confirmLoading: !1, form1: this.$form.createForm(this), defApp: [], isFullscreen: !1 } }, computed: Object(w["a"])({}, Object(E["mapGetters"])(["token", "nickname", "avatar", "userInfo"])), mounted: function () { var e = this; return Object(ee["a"])(regeneratorRuntime.mark((function t() { return regeneratorRuntime.wrap((function (t) { while (1) switch (t.prev = t.next) { case 0: return t.next = 2, e.$socket.authenticate(e.token); case 2: case "end": return t.stop() } }), t) })))() }, methods: Object(w["a"])(Object(w["a"])({}, Object(E["mapActions"])(["Logout", "MenuChange"])), {}, { handleLogout: function () { var e = this; this.$confirm({ title: "鎻愮ず", content: "鐪熺殑瑕佹敞閿�鐧诲綍鍚� ?", okText: "纭畾", cancelText: "鍙栨秷", onOk: function () { return e.Logout({}).then((function () { setTimeout((function () { window.location.reload() }), 16) })).catch((function (t) { e.$message.error({ title: "閿欒", description: t.message }) })) }, onCancel: function () { } }) }, appToggled: function () { this.visible = !0, this.defApp.push(pe.a.ls.get(fe["b"])[0].code) }, switchApp: function (e) { this.visible = !1, this.defApp = []; var t = this.userInfo.apps.filter((function (t) { return t.code === e })), n = he["a"].loading("姝e湪鍒囨崲搴旂敤锛�", 0); this.MenuChange(t[0]).then((function (e) { n() })).catch((function (e) { he["a"].error("搴旂敤鍒囨崲寮傚父" + e) })) }, handleCancel: function () { this.form1.resetFields(), this.visible = !1 }, toggleFullscreen: function () { ne.a.isEnabled ? (ne.a.toggle(), ne.a.isFullscreen ? this.isFullscreen = !1 : this.isFullscreen = !0) : he["a"].error("鎮ㄧ殑娴忚鍣ㄤ笉鏀寔鍏ㄥ睆妯″紡") }, sendMessage: function () { ge(Object.assign({ title: "娴嬭瘯鏍囬", message: "杩欐槸娑堟伅鍐呭", messagetype: 1 })) } }), sockets: { ReceiveMessage: function (e) { switch (e.messagetype) { case 0: this.$notification.info({ message: e.title, description: e.message, placement: "bottomRight", duration: null }); break; case 1: this.$notification.success({ message: e.title, description: e.message, placement: "bottomRight", duration: null }); break; case 2: this.$notification.warning({ message: e.title, description: e.message, placement: "bottomRight", duration: null }); break; case 3: this.$notification.error({ message: e.title, description: e.message, placement: "bottomRight", duration: null }); break } } } }, ve = be, ye = (n("61d9"), Object(l["a"])(ve, _, $, !1, null, "49b88a94", null)), ke = ye.exports, Ce = n("0063"), Ae = n.n(Ce), xe = { name: "GlobalHeader", components: { UserMenu: ke, SMenu: Q, Logo: z }, computed: Object(w["a"])({}, Object(E["mapGetters"])(["userInfo"])), created: function () { var e = Ae.a.from(pe.a.ls.get(fe["b"])).firstOrDefault((function (e) { return "Y" === e.active })); void 0 !== e && this.defApp.push(e.code) }, mixins: [f["b"]], props: { mode: { type: String, default: "sidemenu" }, menus: { type: Array, required: !0 }, theme: { type: String, required: !1, default: "dark" }, collapsed: { type: Boolean, required: !1, default: !1 }, device: { type: String, required: !1, default: "desktop" } }, data: function () { return { visible: !0, oldScrollTop: 0, defApp: [] } }, mounted: function () { document.addEventListener("scroll", this.handleScroll, { passive: !0 }) }, methods: Object(w["a"])(Object(w["a"])({}, Object(E["mapActions"])(["MenuChange"])), {}, { switchApp: function (e) { this.defApp = []; var t = this.userInfo.apps.filter((function (t) { return t.code === e })), n = he["a"].loading("姝e湪鍒囨崲搴旂敤锛�", 0); this.MenuChange(t[0]).then((function (e) { n() })).catch((function (e) { he["a"].error("搴旂敤鍒囨崲寮傚父") })) }, handleScroll: function () { var e = this; if (this.autoHideHeader) { var t = document.body.scrollTop + document.documentElement.scrollTop; this.ticking || (this.ticking = !0, requestAnimationFrame((function () { e.oldScrollTop > t ? e.visible = !0 : t > 300 && e.visible ? e.visible = !1 : t < 300 && !e.visible && (e.visible = !0), e.oldScrollTop = t, e.ticking = !1 }))) } }, toggle: function () { this.$emit("toggle") } }), beforeDestroy: function () { document.body.removeEventListener("scroll", this.handleScroll, !0) } }, Se = xe, we = (n("05fe"), Object(l["a"])(Se, X, Z, !1, null, null, null)), Oe = we.exports, Ee = Oe, Te = function () { var e = this, t = e.$createElement; e._self._c; return e._m(0) }, je = [function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "footer" }, [n("div", { staticClass: "links" }), n("div", { staticClass: "copyright" }, [e._v(" Copyright 漏 2021 "), n("a", { attrs: { target: "_blank", href: "https://gitee.com/zuohuaijun/Admin.NET" } }, [e._v("Admin.NET")]), e._v(" All rights reserved. v1.5.2 ")])]) }], Ie = { name: "GlobalFooter", data: function () { return {} } }, Le = Ie, Me = (n("7993"), Object(l["a"])(Le, Te, je, !1, null, "3e04ba72", null)), De = Me.exports, Be = De, Fe = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "setting-drawer" }, [n("a-drawer", { staticStyle: { "z-index": "999" }, attrs: { width: "300", placement: "right", closable: !1, visible: e.visible, "drawer-style": { position: "absolute" } }, on: { close: e.onClose } }, [n("div", { staticClass: "setting-drawer-index-content" }, [n("div", { style: { marginBottom: "24px" } }, [n("h3", { staticClass: "setting-drawer-index-title" }, [e._v("鏁翠綋椋庢牸璁剧疆")]), n("div", { staticClass: "setting-drawer-index-blockChecbox" }, [n("a-tooltip", [n("template", { slot: "title" }, [e._v(" 鏆楄壊鑿滃崟椋庢牸 ")]), n("div", { staticClass: "setting-drawer-index-item", on: { click: function (t) { return e.handleMenuTheme("dark") } } }, [n("img", { attrs: { src: "https://gw.alipayobjects.com/zos/rmsportal/LCkqqYNmvBEbokSDscrm.svg", alt: "dark" } }), "dark" === e.navTheme ? n("div", { staticClass: "setting-drawer-index-selectIcon" }, [n("a-icon", { attrs: { type: "check" } })], 1) : e._e()])], 2), n("a-tooltip", [n("template", { slot: "title" }, [e._v(" 浜壊鑿滃崟椋庢牸 ")]), n("div", { staticClass: "setting-drawer-index-item", on: { click: function (t) { return e.handleMenuTheme("light") } } }, [n("img", { attrs: { src: "https://gw.alipayobjects.com/zos/rmsportal/jpRkZQMyYRryryPNtyIC.svg", alt: "light" } }), "dark" !== e.navTheme ? n("div", { staticClass: "setting-drawer-index-selectIcon" }, [n("a-icon", { attrs: { type: "check" } })], 1) : e._e()])], 2)], 1)]), n("div", { style: { marginBottom: "24px" } }, [n("h3", { staticClass: "setting-drawer-index-title" }, [e._v("涓婚鑹�")]), n("div", { staticStyle: { height: "20px" } }, e._l(e.colorList, (function (t, a) { return n("a-tooltip", { key: a, staticClass: "setting-drawer-theme-color-colorBlock" }, [n("template", { slot: "title" }, [e._v(" " + e._s(t.key) + " ")]), n("a-tag", { attrs: { color: t.color }, on: { click: function (n) { return e.changeColor(t.color) } } }, [t.color === e.primaryColor ? n("a-icon", { attrs: { type: "check" } }) : e._e()], 1)], 2) })), 1)]), n("a-divider"), n("div", { style: { marginBottom: "24px" } }, [n("h3", { staticClass: "setting-drawer-index-title" }, [e._v("瀵艰埅妯″紡")]), n("div", { staticClass: "setting-drawer-index-blockChecbox" }, [n("a-tooltip", [n("template", { slot: "title" }, [e._v(" 渚ц竟鏍忓鑸� ")]), n("div", { staticClass: "setting-drawer-index-item", on: { click: function (t) { return e.handleLayout("sidemenu") } } }, [n("img", { attrs: { src: "https://gw.alipayobjects.com/zos/rmsportal/JopDzEhOqwOjeNTXkoje.svg", alt: "sidemenu" } }), "sidemenu" === e.layoutMode ? n("div", { staticClass: "setting-drawer-index-selectIcon" }, [n("a-icon", { attrs: { type: "check" } })], 1) : e._e()])], 2), n("a-tooltip", [n("template", { slot: "title" }, [e._v(" 椤堕儴鏍忓鑸� ")]), n("div", { staticClass: "setting-drawer-index-item", on: { click: function (t) { return e.handleLayout("topmenu") } } }, [n("img", { attrs: { src: "https://gw.alipayobjects.com/zos/rmsportal/KDNDBbriJhLwuqMoxcAr.svg", alt: "topmenu" } }), "sidemenu" !== e.layoutMode ? n("div", { staticClass: "setting-drawer-index-selectIcon" }, [n("a-icon", { attrs: { type: "check" } })], 1) : e._e()])], 2)], 1), n("div", { style: { marginTop: "24px" } }, [n("a-list", { attrs: { split: !1 } }, [n("a-list-item", [n("a-tooltip", { attrs: { slot: "actions" }, slot: "actions" }, [n("template", { slot: "title" }, [e._v(" 璇ヨ瀹氫粎 [椤堕儴鏍忓鑸猐 鏃舵湁鏁� ")]), n("a-select", { staticStyle: { width: "80px" }, attrs: { size: "small", defaultValue: e.contentWidth }, on: { change: e.handleContentWidthChange } }, [n("a-select-option", { attrs: { value: "Fixed" } }, [e._v("鍥哄畾")]), "sidemenu" !== e.layoutMode ? n("a-select-option", { attrs: { value: "Fluid" } }, [e._v("娴佸紡")]) : e._e()], 1)], 2), n("a-list-item-meta", [n("div", { attrs: { slot: "title" }, slot: "title" }, [e._v("鍐呭鍖哄煙瀹藉害")])])], 1), n("a-list-item", [n("a-switch", { attrs: { slot: "actions", size: "small", defaultChecked: e.fixedHeader }, on: { change: e.handleFixedHeader }, slot: "actions" }), n("a-list-item-meta", [n("div", { attrs: { slot: "title" }, slot: "title" }, [e._v("鍥哄畾 Header")])])], 1), n("a-list-item", [n("a-switch", { attrs: { slot: "actions", size: "small", disabled: !e.fixedHeader, defaultChecked: e.autoHideHeader }, on: { change: e.handleFixedHeaderHidden }, slot: "actions" }), n("a-list-item-meta", [n("a-tooltip", { attrs: { slot: "title", placement: "left" }, slot: "title" }, [n("template", { slot: "title" }, [e._v("鍥哄畾 Header 鏃跺彲閰嶇疆")]), n("div", { style: { opacity: e.fixedHeader ? "1" : "0.5" } }, [e._v("涓嬫粦鏃堕殣钘� Header")])], 2)], 1)], 1), n("a-list-item", [n("a-switch", { attrs: { slot: "actions", size: "small", disabled: "topmenu" === e.layoutMode, defaultChecked: e.fixSiderbar }, on: { change: e.handleFixSiderbar }, slot: "actions" }), n("a-list-item-meta", [n("div", { style: { textDecoration: "topmenu" === e.layoutMode ? "line-through" : "unset" }, attrs: { slot: "title" }, slot: "title" }, [e._v("鍥哄畾渚ц竟鑿滃崟")])])], 1)], 1)], 1)]), n("a-divider"), n("div", { style: { marginBottom: "24px" } }, [n("h3", { staticClass: "setting-drawer-index-title" }, [e._v("鍏朵粬璁剧疆")]), n("div", [n("a-list", { attrs: { split: !1 } }, [n("a-list-item", [n("a-switch", { attrs: { slot: "actions", size: "small", defaultChecked: e.colorWeak }, on: { change: e.onColorWeak }, slot: "actions" }), n("a-list-item-meta", [n("div", { attrs: { slot: "title" }, slot: "title" }, [e._v("鑹插急妯″紡")])])], 1), n("a-list-item", [n("a-switch", { attrs: { slot: "actions", size: "small", defaultChecked: e.multiTab }, on: { change: e.onMultiTab }, slot: "actions" }), n("a-list-item-meta", [n("div", { attrs: { slot: "title" }, slot: "title" }, [e._v("澶氶〉绛炬ā寮�")])])], 1), n("a-list-item", [n("a-switch", { attrs: { slot: "actions", size: "small", defaultChecked: e.crumbsState }, on: { change: e.onCrumbs }, slot: "actions" }), n("a-list-item-meta", [n("div", { attrs: { slot: "title" }, slot: "title" }, [e._v("鏄剧ず闈㈠寘灞�")])])], 1)], 1)], 1)]), n("a-divider"), n("div", { style: { marginBottom: "24px" } }, [n("a-button", { attrs: { icon: "copy", block: "" }, on: { click: e.doCopy } }, [e._v("鎷疯礉璁剧疆")]), n("a-alert", { style: { marginTop: "24px" }, attrs: { type: "warning" } }, [n("span", { attrs: { slot: "message" }, slot: "message" }, [e._v(" 閰嶇疆鏍忓彧鍦ㄥ紑鍙戠幆澧冪敤浜庨瑙堬紝鐢熶骇鐜涓嶄細灞曠幇锛岃鎵嬪姩淇敼閰嶇疆鏂囦欢銆備慨鏀归厤缃枃浠跺悗锛岄渶瑕佹竻绌烘湰鍦扮紦瀛樺拰LocalStorage "), n("a", { attrs: { href: "https://github.com/sendya/ant-design-pro-vue/blob/master/src/config/defaultSettings.js", target: "_blank" } }, [e._v("src/config/defaultSettings.js")])])])], 1)], 1), n("div", { staticClass: "setting-drawer-index-handle", attrs: { slot: "handle" }, on: { click: e.toggle }, slot: "handle" }, [e.visible ? n("a-icon", { attrs: { type: "close" } }) : n("a-icon", { attrs: { type: "setting" } })], 1)])], 1) }, Ne = [], Pe = n("c4ef"), ze = { components: {}, mixins: [f["b"], f["c"]], data: function () { return { visible: !1, colorList: Pe["a"] } }, watch: {}, mounted: function () { Object(Pe["c"])(this.primaryColor), this.colorWeak !== T["a"].colorWeak && Object(Pe["b"])(this.colorWeak) }, methods: { showDrawer: function () { this.visible = !0 }, onClose: function () { this.visible = !1 }, toggle: function () { this.visible = !this.visible }, onColorWeak: function (e) { this.$store.dispatch("ToggleWeak", e), Object(Pe["b"])(e) }, onMultiTab: function (e) { this.$store.dispatch("ToggleMultiTab", e) }, onCrumbs: function (e) { this.$store.dispatch("ToggleCrumbsState", e) }, handleMenuTheme: function (e) { this.$store.dispatch("ToggleTheme", e) }, doCopy: function () { var e = this, t = "export default {\n  primaryColor: '".concat(this.primaryColor, "', // primary color of ant design\n  navTheme: '").concat(this.navTheme, "', // theme for nav menu\n  layout: '").concat(this.layoutMode, "', // nav menu position: sidemenu or topmenu\n  contentWidth: '").concat(this.contentWidth, "', // layout of content: Fluid or Fixed, only works when layout is topmenu\n  fixedHeader: ").concat(this.fixedHeader, ", // sticky header\n  fixSiderbar: ").concat(this.fixSiderbar, ", // sticky siderbar\n  autoHideHeader: ").concat(this.autoHideHeader, ", //  auto hide header\n  colorWeak: ").concat(this.colorWeak, ",\n  multiTab: ").concat(this.multiTab, ",\n  crumbsState: ").concat(this.crumbsState, ",\n  production: process.env.NODE_ENV === 'production' && process.env.VUE_APP_PREVIEW !== 'true',\n  // vue-ls options\n  storageOptions: {\n    namespace: 'pro__',\n    name: 'ls',\n    storage: 'local',\n  }\n}"); this.$copyText(t).then((function (t) { e.$message.success("澶嶅埗瀹屾瘯") })).catch((function (t) { e.$message.error("澶嶅埗澶辫触") })) }, handleLayout: function (e) { this.$store.dispatch("ToggleLayoutMode", e), this.handleFixSiderbar(!1) }, handleContentWidthChange: function (e) { this.$store.dispatch("ToggleContentWidth", e) }, changeColor: function (e) { this.primaryColor !== e && (this.$store.dispatch("ToggleColor", e), Object(Pe["c"])(e)) }, handleFixedHeader: function (e) { this.$store.dispatch("ToggleFixedHeader", e) }, handleFixedHeaderHidden: function (e) { this.$store.dispatch("ToggleFixedHeaderHidden", e) }, handleFixSiderbar: function (e) { "topmenu" !== this.layoutMode ? this.$store.dispatch("ToggleFixSiderbar", e) : this.$store.dispatch("ToggleFixSiderbar", !1) } } }, Re = ze, Ge = (n("e6c5"), Object(l["a"])(Re, Fe, Ne, !1, null, "0cdce0f5", null)), He = Ge.exports, Ke = He, Ue = (n("2ca0"), n("ac1f"), n("5319"), n("cd3f")), qe = n.n(Ue); function Qe(e) { if (!e) return null; e = qe()(e); var t = Array.isArray(e) ? e.concat() : [e]; while (t.length) for (var n = t.length, a = function (e) { var n = t.shift(); if (!n.children || !n.children.length) return "continue"; n.children.forEach((function (e) { "/" === e.path[0] || e.path.startsWith("http") || (e.path = n.path.replace(/(\w*)[/]*$/, "$1/".concat(e.path))) })), t = t.concat(n.children) }, i = 0; i < n; i++)a(i); return e } var We, Je, Ve = { name: "BasicLayout", mixins: [f["b"], f["c"]], components: { RouteView: d, SideMenu: Y, GlobalHeader: Ee, GlobalFooter: Be, SettingDrawer: Ke }, data: function () { return { production: T["a"].production, collapsed: !1, menus: [] } }, computed: Object(w["a"])(Object(w["a"])({}, Object(E["mapState"])({ mainMenu: function (e) { return e.permission.addRouters } })), {}, { contentPaddingLeft: function () { return !this.fixSidebar || this.isMobile() ? "0" : this.sidebarOpened ? "230px" : "80px" } }), watch: { sidebarOpened: function (e) { this.collapsed = !e }, mainMenu: function (e) { this.setMenus() } }, created: function () { this.setMenus(), this.collapsed = !this.sidebarOpened }, mounted: function () { var e = this, t = navigator.userAgent; t.indexOf("Edge") > -1 && this.$nextTick((function () { e.collapsed = !e.collapsed, setTimeout((function () { e.collapsed = !e.collapsed }), 16) })) }, methods: Object(w["a"])(Object(w["a"])({}, Object(E["mapActions"])(["setSidebar"])), {}, { setMenus: function () { var e = Qe(this.mainMenu.find((function (e) { return "/" === e.path }))); this.menus = e && e.children || [] }, toggle: function () { this.collapsed = !this.collapsed, this.setSidebar(!this.collapsed), Object(O["d"])() }, paddingCalc: function () { var e = ""; return e = this.sidebarOpened ? this.isDesktop() ? "230px" : "80px" : (this.isMobile() ? "0" : this.fixSidebar && "80px") || "0", e }, menuSelect: function () { }, drawerClose: function () { this.collapsed = !1 } }) }, Ye = Ve, Xe = (n("6692"), Object(l["a"])(Ye, x, S, !1, null, null, null)), Ze = Xe.exports, _e = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { style: e.$route.meta.hiddenHeaderContent ? null : "margin: -24px -24px 0px;" }, [e.$route.meta.hiddenHeaderContent ? e._e() : n("page-header", { attrs: { title: e.pageTitle, logo: e.logo, avatar: e.avatar } }, [e._t("action", null, { slot: "action" }), e._t("headerContent", null, { slot: "content" }), !this.$slots.headerContent && e.description ? n("div", { attrs: { slot: "content" }, slot: "content" }, [n("p", { staticStyle: { "font-size": "14px", color: "rgba(0,0,0,.65)" } }, [e._v(e._s(e.description))]), n("div", { staticClass: "link" })]) : e._e(), e._t("extra", (function () { return [n("div", { staticClass: "extra-img" }, ["undefined" !== typeof e.extraImage ? n("img", { attrs: { src: e.extraImage } }) : e._e()])] }), { slot: "extra" }), n("div", { attrs: { slot: "pageMenu" }, slot: "pageMenu" }, [e.search ? n("div", { staticClass: "page-menu-search" }, [n("a-input-search", { staticStyle: { width: "80%", "max-width": "522px" }, attrs: { placeholder: "璇疯緭鍏�...", size: "large", enterButton: "鎼滅储" } })], 1) : e._e(), e.tabs && e.tabs.items ? n("div", { staticClass: "page-menu-tabs" }, [n("a-tabs", { attrs: { tabBarStyle: { margin: 0 }, activeKey: e.tabs.active() }, on: { change: e.tabs.callback } }, e._l(e.tabs.items, (function (e) { return n("a-tab-pane", { key: e.key, attrs: { tab: e.title } }) })), 1)], 1) : e._e()])], 2), n("div", { staticClass: "content" }, [n("div", { staticClass: "page-header-index-wide" }, [e._t("default", (function () { return [e.multiTab ? n("keep-alive", [n("router-view", { ref: "content" })], 1) : n("router-view", { ref: "content", staticStyle: { margin: "-12px -14px 0" } })] }))], 2)])], 1) }, $e = [], et = (n("a4d3"), n("e01a"), n("841c"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "page-header" }, [n("div", { staticClass: "page-header-index-wide" }, [e.crumbsState ? n("s-breadcrumb") : e._e(), n("div", { staticClass: "detail" }, [e.$route.meta.hiddenHeaderContent ? e._e() : n("div", { staticClass: "main" }, [n("div", { staticClass: "row" }, [e.logo ? n("img", { staticClass: "logo", attrs: { src: e.logo } }) : e._e(), e.title ? n("h1", { staticClass: "title" }, [e._v(e._s(e.title))]) : e._e(), n("div", { staticClass: "action" }, [e._t("action")], 2)]), n("div", { staticClass: "row" }, [e.avatar ? n("div", { staticClass: "avatar" }, [n("a-avatar", { attrs: { src: e.avatar } })], 1) : e._e(), this.$slots.content ? n("div", { staticClass: "headerContent" }, [e._t("content")], 2) : e._e(), this.$slots.extra ? n("div", { staticClass: "extra" }, [e._t("extra")], 2) : e._e()]), n("div", [e._t("pageMenu")], 2)])])], 1)]) }), tt = [], nt = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-breadcrumb", { staticClass: "breadcrumb" }, e._l(e.breadList, (function (t, a) { return n("a-breadcrumb-item", { key: t.name }, [t.name != e.name && 1 != a ? n("router-link", { attrs: { to: { path: "" === t.path ? "/" : t.path } } }, [e._v(e._s(t.meta.title))]) : n("span", [e._v(e._s(t.meta.title))])], 1) })), 1) }, at = [], it = { data: function () { return { name: "", breadList: [] } }, created: function () { this.getBreadcrumb() }, methods: { getBreadcrumb: function () { var e = this; this.breadList = [], this.name = this.$route.name, this.$route.matched.forEach((function (t) { e.breadList.push(t) })) } }, watch: { $route: function () { this.getBreadcrumb() } } }, rt = it, st = Object(l["a"])(rt, nt, at, !1, null, "553e219d", null), ot = st.exports, ct = { name: "PageHeader", components: { "s-breadcrumb": ot }, props: { title: { type: [String, Boolean], default: !0, required: !1 }, logo: { type: String, default: "", required: !1 }, avatar: { type: String, default: "", required: !1 } }, data: function () { return { crumbsState: this.$store.state.app.crumbsState } }, computed: { getCrumbsState: function () { return this.$store.state.app.crumbsState } }, watch: { getCrumbsState: function (e, t) { this.crumbsState = e } } }, lt = ct, ut = (n("8306"), Object(l["a"])(lt, et, tt, !1, null, "300f978a", null)), dt = ut.exports, ft = dt, mt = { name: "PageView", components: { PageHeader: ft }, props: { avatar: { type: String, default: null }, title: { type: [String, Boolean], default: !0 }, logo: { type: String, default: null }, directTabs: { type: Object, default: null } }, data: function () { return { pageTitle: null, description: null, linkList: [], extraImage: "", search: !1, tabs: {} } }, computed: Object(w["a"])({}, Object(E["mapState"])({ multiTab: function (e) { return e.app.multiTab } })), mounted: function () { this.tabs = this.directTabs, this.getPageMeta() }, updated: function () { this.getPageMeta() }, methods: { getPageMeta: function () { this.pageTitle = ""; var e = this.$refs.content; e && (e.pageMeta ? Object.assign(this, e.pageMeta) : (this.description = e.description, this.linkList = e.linkList, this.extraImage = e.extraImage, this.search = !0 === e.search, this.tabs = e.tabs)) } } }, pt = mt, ht = (n("8ac7"), Object(l["a"])(pt, _e, $e, !1, null, "d6c73dd6", null)), gt = ht.exports, bt = (n("9911"), n("a9e3"), { name: "Iframe", data: function () { return {} }, render: function () { var e = arguments[0], t = this.$route.meta.link; if ("" === { link: t }.link) return "404"; var n = ""; n = { link: t }.link.indexOf("token=") > -1 ? { link: t }.link + pe.a.ls.get(fe["a"]) : { link: t }.link; var a = "", i = document.documentElement.clientHeight; return a = Number(i) - 260 + "px", e("iframe", { attrs: { id: "iframe", height: a, src: n, frameBorder: "0" }, style: "width:100%;overflow:hidden;" }) } }), vt = bt, yt = Object(l["a"])(vt, We, Je, !1, null, null, null), kt = yt.exports }, 6861: function (e, t, n) { }, "6a2a": function (e, t, n) { "use strict"; var a = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("span", [e._v(" " + e._s(e._f("format")(e.lastTime)) + " ")]) }, i = []; n("a9e3"), n("99af"), n("d3b7"); function r(e) { return 1 * e < 10 ? "0".concat(e) : e } var s = { name: "CountDown", props: { format: { type: Function, default: void 0 }, target: { type: [Date, Number], required: !0 }, onEnd: { type: Function, default: function () { return {} } } }, data: function () { return { dateTime: "0", originTargetTime: 0, lastTime: 0, timer: 0, interval: 1e3 } }, filters: { format: function (e) { var t = 36e5, n = 6e4, a = Math.floor(e / t), i = Math.floor((e - a * t) / n), s = Math.floor((e - a * t - i * n) / 1e3); return "".concat(r(a), ":").concat(r(i), ":").concat(r(s)) } }, created: function () { this.initTime(), this.tick() }, methods: { initTime: function () { var e = 0, t = 0; this.originTargetTime = this.target; try { t = "[object Date]" === Object.prototype.toString.call(this.target) ? this.target : new Date(this.target).getTime() } catch (n) { throw new Error("invalid target prop") } e = t - (new Date).getTime(), this.lastTime = e < 0 ? 0 : e }, tick: function () { var e = this, t = this.onEnd; this.timer = setTimeout((function () { e.lastTime < e.interval ? (clearTimeout(e.timer), e.lastTime = 0, "function" === typeof t && t()) : (e.lastTime -= e.interval, e.tick()) }), this.interval) } }, beforeUpdate: function () { this.originTargetTime !== this.target && this.initTime() }, beforeDestroy: function () { clearTimeout(this.timer) } }, o = s, c = n("2877"), l = Object(c["a"])(o, a, i, !1, null, "6751714a", null); t["a"] = l.exports }, "71a8": function (e, t, n) { "use strict"; n("db07") }, 7993: function (e, t, n) { "use strict"; n("1158") }, "79fb": function (e, t, n) { "use strict"; n("f3f8") }, "818f": function (e, t) { e.exports = "data:image/png;base64,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" }, 8306: function (e, t, n) { "use strict"; n("2cef") }, 84962: function (e, t, n) { }, "84cc": function (e, t, n) { }, "85ec": function (e, t, n) { }, "8ac7": function (e, t, n) { "use strict"; n("930b") }, "8add": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return r })), n.d(t, "c", (function () { return s })), n.d(t, "b", (function () { return o })); var a = n("53ca"), i = (n("b64b"), n("ac1f"), n("1276"), n("5319"), { message: "", timestamp: 0, result: null, code: 0 }), r = function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}; return i.result = e, void 0 !== t && null !== t && (i.message = t), void 0 !== n && 0 !== n && (i.code = n, i._status = n), null !== r && "object" === Object(a["a"])(r) && Object.keys(r).length > 0 && (i._headers = r), i.timestamp = (new Date).getTime(), i }, s = function (e) { var t = e.url, n = t.split("?")[1]; return n ? JSON.parse('{"' + decodeURIComponent(n).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}') : {} }, o = function (e) { return e.body && JSON.parse(e.body) } }, "8bbf": function (e, t) { e.exports = Vue }, "8eeb4": function (e, t, n) { var a = n("b2b7"); e.exports = { __esModule: !0, default: a.svgComponent({ tag: "svg", attrsMap: { version: "1.1", id: "Layer_1", xmlns: "http://www.w3.org/2000/svg", "xmlns:xlink": "http://www.w3.org/1999/xlink", x: "0px", y: "0px", width: "200px", height: "200px", viewBox: "0 0 200 200", "enable-background": "new 0 0 200 200", "xml:space": "preserve" }, children: [{ tag: "image", attrsMap: { id: "image0", width: "200", height: "200", x: "0", y: "0", href: "data:image/png;base64,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\r\nQGqIEFBEGAZQCrDWQikiCEJsWMMXOEkj0CXL/v3go2N/feX3jwTQqbnXopGIAHwI4B34bmLzAEQk\r\nm73kalNih2eQ+on6jJ1WANoD+BqA0wAcC6BrYat2Qy/63q+WnHfWia327NW+7249e/QpKS4KAHQE\r\nEDoLEIIg0PAFMQVaaWzUiSIW0CE+HD/tw+9887KaRbMmnt3ca9BAzAfwEXy5ppHwvV9quZMQzk7D\r\nIF+atFIJ+AStvgCOhzcPHwAgWdy24/CzLv5W7cknHN75oD336XDggfsUh2HQBkB3/9sEaEAEPpNw\r\nQ7ACIAOErcZf9Zu/rLj3lhvPau55bwGWA5gEL0qNADAXwHI2Y+prc2GnZJAvLYBSrQH0AtAbXgTb\r\nG0B/AL333/+g90484aS4Z6+e7Tt268OvHXdC1LdrSXcAe669ggDiUJ+KrjUIDWsAzTSCZJvq518f\r\n+uqVV3xnr+ryVYdBBStBaQ8wsWVP2uRYCK90T4cXoRYCWESyurkfrDmx0zPIulBKFQPolx+Hw4ex\r\n9ATQM0wUfH7I8Wel99qjd9vWhbpfn179Zh559Okr9tunZ5tWBboN/AlUABgQgEOIkNl8k53Cxd+4\r\n/Mo5zz/54CFQQaaFMEgNfD/JxfBm2tHw6c5zSLa4lt7NhV0MshEopfaAP032hWeW3eF1mHbJwpKV\r\nXfvsVbHbbr1LStsX17Rr37HigMNPqjrkyKOCPt1aF3VJoRBejNsPAO544MlXf3n1Vf0kqt23GaYi\r\n8LpDRf7PefBMMRXADJKzm3utWyp2MchmIq+37AUvXvWDZ5z+8AxTDMC1ate5tnO3HkFJq+JEYSqB\r\nQAerC4uKqvr0339NeW084+0XHv5mpmrN3k38qDn4vJkMvK+iHF50mgF/QswCMHNn1Ccagl0M0ggo\r\npdrBM00/+NNlN3hdpg+8aTkEEECHURCEgbi4NUUCePPXJsxgX4KsM9x6o64RegSfb7EQ3vI0D54h\r\nZpKsaO612l6xi0G2MvLh+F3grV7d8j93gfeDlAJoBx8n1gZAUX4UwDs110WML58GVfCduirgi1ms\r\nArASwAoAy+AtT8u4vYWTt3D8P2RNhTy+FLnBAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAzLTIz\r\nVDAwOjE2OjE3KzA4OjAwRT8Z1gAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wMy0yM1QwMDoxNjox\r\nNyswODowMDRioWoAAAAgdEVYdHNvZnR3YXJlAGh0dHBzOi8vaW1hZ2VtYWdpY2sub3JnvM8dnQAA\r\nABh0RVh0VGh1bWI6OkRvY3VtZW50OjpQYWdlcwAxp/+7LwAAABh0RVh0VGh1bWI6OkltYWdlOjpI\r\nZWlnaHQAMjAwfdcVaQAAABd0RVh0VGh1bWI6OkltYWdlOjpXaWR0aAAyMDDuJkU0AAAAGXRFWHRU\r\naHVtYjo6TWltZXR5cGUAaW1hZ2UvcG5nP7JWTgAAABd0RVh0VGh1bWI6Ok1UaW1lADE2MTY0Mjk3\r\nNzflRgHaAAAAE3RFWHRUaHVtYjo6U2l6ZQAyNjIzMUJCmx8L0gAAAEZ0RVh0VGh1bWI6OlVSSQBm\r\naWxlOi8vL2FwcC90bXAvaW1hZ2VsYy9pbWd2aWV3Ml85XzE2MDk5MDM1MTIwMjM1NTYwXzIwX1sw\r\nXcveen0AAAAASUVORK5CYII=" } }] }) } }, 9138: function (e, t, n) { "use strict"; n("2bd7") }, "923a": function (e, t, n) { "use strict"; n.r(t); var a = n("411c"), i = n.n(a), r = n("8add"), s = 5701, o = function (e) { for (var t = Object(r["c"])(e), n = [], a = parseInt(t.pageNo), o = parseInt(t.pageSize), c = Math.ceil(s / o), l = (a - 1) * o, u = (a >= c ? s % o : o) + 1, d = 1; d < u; d++) { var f = l + d; n.push({ key: f, id: f, no: "No " + f, description: "杩欐槸涓�娈垫弿杩�", callNo: i.a.mock("@integer(1, 999)"), status: i.a.mock("@integer(0, 3)"), updatedAt: i.a.mock("@datetime"), editable: !1 }) } return Object(r["a"])({ pageSize: o, pageNo: a, totalCount: s, totalPage: c, data: n }) }, c = function () { return Object(r["a"])({ data: [{ id: 1, cover: "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png", title: "Alipay", description: "閭f槸涓�绉嶅唴鍦ㄧ殑涓滆タ锛� 浠栦滑鍒拌揪涓嶄簡锛屼篃鏃犳硶瑙﹀強鐨�", status: 1, updatedAt: "2018-07-26 00:00:00" }, { id: 2, cover: "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png", title: "Angular", description: "甯屾湜鏄竴涓ソ涓滆タ锛屼篃璁告槸鏈�濂界殑锛屽ソ涓滆タ鏄笉浼氭秷浜$殑", status: 1, updatedAt: "2018-07-26 00:00:00" }, { id: 3, cover: "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png", title: "Ant Design", description: "鍩庨晣涓湁閭d箞澶氱殑閰掗锛屽ス鍗村亸鍋忚蛋杩涗簡鎴戠殑閰掗", status: 1, updatedAt: "2018-07-26 00:00:00" }, { id: 4, cover: "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png", title: "Admin.NET", description: "閭f椂鍊欐垜鍙細鎯宠嚜宸辨兂瑕佷粈涔堬紝浠庝笉鎯宠嚜宸辨嫢鏈変粈涔�", status: 1, updatedAt: "2018-07-26 00:00:00" }, { id: 5, cover: "https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png", title: "Bootstrap", description: "鍑涘啲灏嗚嚦", status: 1, updatedAt: "2018-07-26 00:00:00" }, { id: 6, cover: "https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png", title: "Vue", description: "鐢熷懡灏卞儚涓�鐩掑阀鍏嬪姏锛岀粨鏋滃線寰�鍑轰汉鎰忔枡", status: 1, updatedAt: "2018-07-26 00:00:00" }], pageSize: 10, pageNo: 0, totalPage: 6, totalCount: 57 }) }, l = function () { return Object(r["a"])([{ id: 1, user: { nickname: "@name", avatar: "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png" }, project: { name: "鐧介弓閰辨补寮�鍙戠粍", action: "鏇存柊", event: "鐣粍璁″垝" }, time: "2018-08-23 14:47:00" }, { id: 1, user: { nickname: "钃濊帗閰�", avatar: "https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png" }, project: { name: "鐧介弓閰辨补寮�鍙戠粍", action: "鏇存柊", event: "鐣粍璁″垝" }, time: "2018-08-23 09:35:37" }, { id: 1, user: { nickname: "@name", avatar: "@image(64x64)" }, project: { name: "鐧介弓閰辨补寮�鍙戠粍", action: "鍒涘缓", event: "鐣粍璁″垝" }, time: "2017-05-27 00:00:00" }, { id: 1, user: { nickname: "鏇蹭附涓�", avatar: "@image(64x64)" }, project: { name: "楂橀�兼牸璁捐澶╁洟", action: "鏇存柊", event: "鍏湀杩唬" }, time: "2018-08-23 14:47:00" }, { id: 1, user: { nickname: "@name", avatar: "@image(64x64)" }, project: { name: "楂橀�兼牸璁捐澶╁洟", action: "created", event: "鍏湀杩唬" }, time: "2018-08-23 14:47:00" }, { id: 1, user: { nickname: "鏇蹭附涓�", avatar: "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png" }, project: { name: "楂橀�兼牸璁捐澶╁洟", action: "created", event: "鍏湀杩唬" }, time: "2018-08-23 14:47:00" }]) }, u = function () { return Object(r["a"])([{ id: 1, name: "绉戝鎼爾缁�", avatar: "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png" }, { id: 2, name: "绋嬪簭鍛樻棩甯�", avatar: "https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png" }, { id: 1, name: "璁捐澶╁洟", avatar: "https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png" }, { id: 1, name: "涓簩灏戝コ鍥�", avatar: "https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png" }, { id: 1, name: "楠椾綘瀛﹁绠楁満", avatar: "https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png" }]) }, d = function () { return Object(r["a"])([{ item: "寮曠敤", "涓汉": 70, "鍥㈤槦": 30, "閮ㄩ棬": 40 }, { item: "鍙g", "涓汉": 60, "鍥㈤槦": 70, "閮ㄩ棬": 40 }, { item: "浜ч噺", "涓汉": 50, "鍥㈤槦": 60, "閮ㄩ棬": 40 }, { item: "璐$尞", "涓汉": 40, "鍥㈤槦": 50, "閮ㄩ棬": 40 }, { item: "鐑害", "涓汉": 60, "鍥㈤槦": 70, "閮ㄩ棬": 40 }, { item: "寮曠敤", "涓汉": 70, "鍥㈤槦": 50, "閮ㄩ棬": 40 }]) }; i.a.mock(/\/service/, "get", o), i.a.mock(/\/list\/search\/projects/, "get", c), i.a.mock(/\/workplace\/activity/, "get", l), i.a.mock(/\/workplace\/teams/, "get", u), i.a.mock(/\/workplace\/radar/, "get", d) }, "930b": function (e, t, n) { }, "9dac": function (e, t, n) { var a = { "./404": ["8cdb", 9, "user"], "./404.vue": ["8cdb", 9, "user"], "./Home": ["bb51", 9, "fail"], "./Home.vue": ["bb51", 9, "fail"], "./gen/codeGenerate": ["afd0", 9, "user"], "./gen/codeGenerate/": ["afd0", 9, "user"], "./gen/codeGenerate/addForm": ["b237", 9, "user"], "./gen/codeGenerate/addForm.vue": ["b237", 9, "user"], "./gen/codeGenerate/editForm": ["2f01", 9, "user"], "./gen/codeGenerate/editForm.vue": ["2f01", 9, "user"], "./gen/codeGenerate/fkModal": ["79e7", 9, "user"], "./gen/codeGenerate/fkModal.vue": ["79e7", 9, "user"], "./gen/codeGenerate/index": ["afd0", 9, "user"], "./gen/codeGenerate/index.vue": ["afd0", 9, "user"], "./gen/codeGenerate/indexConfig": ["ee23", 9, "user"], "./gen/codeGenerate/indexConfig.vue": ["ee23", 9, "user"], "./main/Car": ["c8d8", 9, "user"], "./main/Car/": ["c8d8", 9, "user"], "./main/Car/addForm": ["99c3", 9, "user"], "./main/Car/addForm.vue": ["99c3", 9, "user"], "./main/Car/editForm": ["7b51", 9, "user"], "./main/Car/editForm.vue": ["7b51", 9, "user"], "./main/Car/index": ["c8d8", 9, "user"], "./main/Car/index.vue": ["c8d8", 9, "user"], "./main/README.md": ["894d", 7, "user"], "./main/map": ["16ac", 9, "chunk-b7a16696"], "./main/map/": ["16ac", 9, "chunk-b7a16696"], "./main/map/index": ["16ac", 9, "chunk-b7a16696"], "./main/map/index.vue": ["16ac", 9, "chunk-b7a16696"], "./main/screenMonitor": ["73d6", 9, "user"], "./main/screenMonitor/": ["73d6", 9, "user"], "./main/screenMonitor/LabelTag": ["9ed6", 9, "user"], "./main/screenMonitor/LabelTag.vue": ["9ed6", 9, "user"], "./main/screenMonitor/TopMiddleCmp": ["ae3f", 9, "fail"], "./main/screenMonitor/TopMiddleCmp.vue": ["ae3f", 9, "fail"], "./main/screenMonitor/cards": ["f061", 9, "fail"], "./main/screenMonitor/cards.vue": ["f061", 9, "fail"], "./main/screenMonitor/digitalFlop": ["3573", 9, "fail"], "./main/screenMonitor/digitalFlop.vue": ["3573", 9, "fail"], "./main/screenMonitor/img/bg.png": ["6344", 7, "user"], "./main/screenMonitor/img/map.jpg": ["0135", 7, "user"], "./main/screenMonitor/img/map.png": ["525a", 7, "user"], "./main/screenMonitor/img/map2.png": ["dd57", 7, "user"], "./main/screenMonitor/img/mapCenterPoint.png": ["a268", 7, "user"], "./main/screenMonitor/img/mapPoint.png": ["69c0", 7, "user"], "./main/screenMonitor/index": ["73d6", 9, "user"], "./main/screenMonitor/index.vue": ["73d6", 9, "user"], "./main/screenMonitor/left1": ["c045", 9, "user"], "./main/screenMonitor/left1.vue": ["c045", 9, "user"], "./main/screenMonitor/left12": ["a897", 9, "user"], "./main/screenMonitor/left12.vue": ["a897", 9, "user"], "./main/screenMonitor/left2": ["2564", 9, "user"], "./main/screenMonitor/left2.vue": ["2564", 9, "user"], "./main/screenMonitor/left22": ["af5d", 9, "user"], "./main/screenMonitor/left22.vue": ["af5d", 9, "user"], "./main/screenMonitor/left23": ["7984", 9, "user"], "./main/screenMonitor/left23.vue": ["7984", 9, "user"], "./main/screenMonitor/middle1": ["55c6", 9, "user"], "./main/screenMonitor/middle1.vue": ["55c6", 9, "user"], "./main/screenMonitor/middle2": ["c1bb", 9, "user"], "./main/screenMonitor/middle2.vue": ["c1bb", 9, "user"], "./main/screenMonitor/middle3": ["7e19", 9, "user"], "./main/screenMonitor/middle3.vue": ["7e19", 9, "user"], "./main/screenMonitor/rankingBoard": ["e7f9", 9, "fail"], "./main/screenMonitor/rankingBoard.vue": ["e7f9", 9, "fail"], "./main/screenMonitor/right1": ["5202", 9, "user"], "./main/screenMonitor/right1.vue": ["5202", 9, "user"], "./main/screenMonitor/right2": ["dfe2", 9, "user"], "./main/screenMonitor/right2.vue": ["dfe2", 9, "user"], "./main/screenMonitor/right3": ["dbf4", 9, "user"], "./main/screenMonitor/right3.vue": ["dbf4", 9, "user"], "./main/screenMonitor/right4": ["4b73", 9, "user"], "./main/screenMonitor/right4.vue": ["4b73", 9, "user"], "./main/screenMonitor/scrollBoard": ["6d36", 9, "fail"], "./main/screenMonitor/scrollBoard.vue": ["6d36", 9, "fail"], "./main/screenMonitor/topHeader": ["625d", 9, "user"], "./main/screenMonitor/topHeader.vue": ["625d", 9, "user"], "./system/README.md": ["f2de", 7, "user"], "./system/account/center/Index": ["8b8b", 9, "fail"], "./system/account/center/Index.vue": ["8b8b", 9, "fail"], "./system/account/center/page": ["d91d", 9, "fail"], "./system/account/center/page/": ["d91d", 9, "fail"], "./system/account/center/page/App": ["0bad6", 9, "fail"], "./system/account/center/page/App.vue": ["0bad6", 9, "fail"], "./system/account/center/page/Article": ["55c7", 9, "fail"], "./system/account/center/page/Article.vue": ["55c7", 9, "fail"], "./system/account/center/page/Project": ["30b2", 9, "fail"], "./system/account/center/page/Project.vue": ["30b2", 9, "fail"], "./system/account/center/page/index": ["d91d", 9, "fail"], "./system/account/center/page/index.js": ["d91d", 9, "fail"], "./system/account/settings/AvatarModal": ["5e4e", 9, "user"], "./system/account/settings/AvatarModal.vue": ["5e4e", 9, "user"], "./system/account/settings/BaseSetting": ["dd26", 9, "user"], "./system/account/settings/BaseSetting.vue": ["dd26", 9, "user"], "./system/account/settings/Binding": ["4f23", 9, "fail"], "./system/account/settings/Binding.vue": ["4f23", 9, "fail"], "./system/account/settings/Custom": ["7320f", 9, "fail"], "./system/account/settings/Custom.vue": ["7320f", 9, "fail"], "./system/account/settings/Index": ["90aa", 9, "fail"], "./system/account/settings/Index.vue": ["90aa", 9, "fail"], "./system/account/settings/Notification": ["0ca5", 9, "fail"], "./system/account/settings/Notification.vue": ["0ca5", 9, "fail"], "./system/account/settings/Security": ["7203", 9, "user"], "./system/account/settings/Security.vue": ["7203", 9, "user"], "./system/account/settings/securityItem/updPwd": ["a784", 9, "user"], "./system/account/settings/securityItem/updPwd.vue": ["a784", 9, "user"], "./system/app": ["4fb0", 9, "user"], "./system/app/": ["4fb0", 9, "user"], "./system/app/addForm": ["316e", 9, "user"], "./system/app/addForm.vue": ["316e", 9, "user"], "./system/app/editForm": ["6b52", 9, "user"], "./system/app/editForm.vue": ["6b52", 9, "user"], "./system/app/index": ["4fb0", 9, "user"], "./system/app/index.vue": ["4fb0", 9, "user"], "./system/config": ["cdb7", 9, "fail"], "./system/config/": ["cdb7", 9, "fail"], "./system/config/addForm": ["a6f9", 9, "fail"], "./system/config/addForm.vue": ["a6f9", 9, "fail"], "./system/config/editForm": ["d68c", 9, "fail"], "./system/config/editForm.vue": ["d68c", 9, "fail"], "./system/config/index": ["cdb7", 9, "fail"], "./system/config/index.vue": ["cdb7", 9, "fail"], "./system/dashboard/Analysis": ["28a9", 9, "fail"], "./system/dashboard/Analysis.vue": ["28a9", 9, "fail"], "./system/dashboard/Monitor": ["1c15", 9, "fail"], "./system/dashboard/Monitor.vue": ["1c15", 9, "fail"], "./system/dashboard/TestWork": ["e746", 9, "fail"], "./system/dashboard/TestWork.vue": ["e746", 9, "fail"], "./system/dashboard/Workplace": ["d3bc", 9, "user"], "./system/dashboard/Workplace.vue": ["d3bc", 9, "user"], "./system/dict": ["046a", 9, "fail"], "./system/dict/": ["046a", 9, "fail"], "./system/dict/addForm": ["5da6", 9, "fail"], "./system/dict/addForm.vue": ["5da6", 9, "fail"], "./system/dict/dictdata": ["72f4", 9, "fail"], "./system/dict/dictdata/": ["72f4", 9, "fail"], "./system/dict/dictdata/addForm": ["5321", 9, "fail"], "./system/dict/dictdata/addForm.vue": ["5321", 9, "fail"], "./system/dict/dictdata/editForm": ["8142", 9, "fail"], "./system/dict/dictdata/editForm.vue": ["8142", 9, "fail"], "./system/dict/dictdata/index": ["72f4", 9, "fail"], "./system/dict/dictdata/index.vue": ["72f4", 9, "fail"], "./system/dict/editForm": ["8f60", 9, "fail"], "./system/dict/editForm.vue": ["8f60", 9, "fail"], "./system/dict/index": ["046a", 9, "fail"], "./system/dict/index.vue": ["046a", 9, "fail"], "./system/email": ["af4d", 9, "fail"], "./system/email/": ["af4d", 9, "fail"], "./system/email/index": ["af4d", 9, "fail"], "./system/email/index.vue": ["af4d", 9, "fail"], "./system/exception/403": ["097e", 9, "fail"], "./system/exception/403.vue": ["097e", 9, "fail"], "./system/exception/404": ["d250", 9, "fail"], "./system/exception/404.vue": ["d250", 9, "fail"], "./system/exception/500": ["656f", 9, "fail"], "./system/exception/500.vue": ["656f", 9, "fail"], "./system/file": ["cbf1", 9, "fail"], "./system/file/": ["cbf1", 9, "fail"], "./system/file/detailForm": ["7e37", 9, "fail"], "./system/file/detailForm.vue": ["7e37", 9, "fail"], "./system/file/index": ["cbf1", 9, "fail"], "./system/file/index.vue": ["cbf1", 9, "fail"], "./system/file/previewForm": ["f66a", 9, "fail"], "./system/file/previewForm.vue": ["f66a", 9, "fail"], "./system/formDesign": ["0707", 9, "fail"], "./system/formDesign/": ["0707", 9, "fail"], "./system/formDesign/index": ["0707", 9, "fail"], "./system/formDesign/index.vue": ["0707", 9, "fail"], "./system/index/welcome": ["c5e0", 9, "user"], "./system/index/welcome.vue": ["c5e0", 9, "user"], "./system/log/exlog": ["99111", 9, "fail"], "./system/log/exlog/": ["99111", 9, "fail"], "./system/log/exlog/details": ["fad9", 9, "fail"], "./system/log/exlog/details.vue": ["fad9", 9, "fail"], "./system/log/exlog/index": ["99111", 9, "fail"], "./system/log/exlog/index.vue": ["99111", 9, "fail"], "./system/log/oplog": ["8147", 9, "fail"], "./system/log/oplog/": ["8147", 9, "fail"], "./system/log/oplog/details": ["06c2", 9, "fail"], "./system/log/oplog/details.vue": ["06c2", 9, "fail"], "./system/log/oplog/index": ["8147", 9, "fail"], "./system/log/oplog/index.vue": ["8147", 9, "fail"], "./system/log/vislog": ["e85f", 9, "fail"], "./system/log/vislog/": ["e85f", 9, "fail"], "./system/log/vislog/details": ["fed3", 9, "fail"], "./system/log/vislog/details.vue": ["fed3", 9, "fail"], "./system/log/vislog/index": ["e85f", 9, "fail"], "./system/log/vislog/index.vue": ["e85f", 9, "fail"], "./system/machine": ["2537", 9, "fail"], "./system/machine/": ["2537", 9, "fail"], "./system/machine/index": ["2537", 9, "fail"], "./system/machine/index.vue": ["2537", 9, "fail"], "./system/menu": ["f794", 9, "user"], "./system/menu/": ["f794", 9, "user"], "./system/menu/addForm": ["b89a", 9, "user"], "./system/menu/addForm.vue": ["b89a", 9, "user"], "./system/menu/editForm": ["c8d5", 9, "user"], "./system/menu/editForm.vue": ["c8d5", 9, "user"], "./system/menu/index": ["f794", 9, "user"], "./system/menu/index.vue": ["f794", 9, "user"], "./system/notice": ["202d", 9, "user"], "./system/notice/": ["202d", 9, "user"], "./system/notice/addForm": ["26bb", 9, "user"], "./system/notice/addForm.vue": ["26bb", 9, "user"], "./system/notice/detailForm": ["08fd", 9, "user"], "./system/notice/detailForm.vue": ["08fd", 9, "user"], "./system/notice/editForm": ["58cb", 9, "user"], "./system/notice/editForm.vue": ["58cb", 9, "user"], "./system/notice/index": ["202d", 9, "user"], "./system/notice/index.vue": ["202d", 9, "user"], "./system/noticeReceived": ["3e23", 9, "user"], "./system/noticeReceived/": ["3e23", 9, "user"], "./system/noticeReceived/detailForm": ["cbd8", 9, "user"], "./system/noticeReceived/detailForm.vue": ["cbd8", 9, "user"], "./system/noticeReceived/index": ["3e23", 9, "user"], "./system/noticeReceived/index.vue": ["3e23", 9, "user"], "./system/onlineUser": ["4015", 9, "fail"], "./system/onlineUser/": ["4015", 9, "fail"], "./system/onlineUser/index": ["4015", 9, "fail"], "./system/onlineUser/index.vue": ["4015", 9, "fail"], "./system/org": ["3d8b", 9, "user"], "./system/org/": ["3d8b", 9, "user"], "./system/org/addForm": ["4f46", 9, "user"], "./system/org/addForm.vue": ["4f46", 9, "user"], "./system/org/editForm": ["a09c", 9, "user"], "./system/org/editForm.vue": ["a09c", 9, "user"], "./system/org/index": ["3d8b", 9, "user"], "./system/org/index.vue": ["3d8b", 9, "user"], "./system/pos": ["83b8", 9, "user"], "./system/pos/": ["83b8", 9, "user"], "./system/pos/addForm": ["7f86", 9, "user"], "./system/pos/addForm.vue": ["7f86", 9, "user"], "./system/pos/editForm": ["a468", 9, "user"], "./system/pos/editForm.vue": ["a468", 9, "user"], "./system/pos/index": ["83b8", 9, "user"], "./system/pos/index.vue": ["83b8", 9, "user"], "./system/role": ["70eb", 9, "user"], "./system/role/": ["70eb", 9, "user"], "./system/role/addForm": ["a49c", 9, "user"], "./system/role/addForm.vue": ["a49c", 9, "user"], "./system/role/editForm": ["9888", 9, "user"], "./system/role/editForm.vue": ["9888", 9, "user"], "./system/role/index": ["70eb", 9, "user"], "./system/role/index.vue": ["70eb", 9, "user"], "./system/role/roleMenuForm": ["985f", 9, "user"], "./system/role/roleMenuForm.vue": ["985f", 9, "user"], "./system/role/roleOrgForm": ["e35e", 9, "user"], "./system/role/roleOrgForm.vue": ["e35e", 9, "user"], "./system/sms": ["9431", 9, "user"], "./system/sms/": ["9431", 9, "user"], "./system/sms/index": ["9431", 9, "user"], "./system/sms/index.vue": ["9431", 9, "user"], "./system/tenant": ["0194", 9, "fail"], "./system/tenant/": ["0194", 9, "fail"], "./system/tenant/addForm": ["d80a", 9, "fail"], "./system/tenant/addForm.vue": ["d80a", 9, "fail"], "./system/tenant/editForm": ["3266", 9, "fail"], "./system/tenant/editForm.vue": ["3266", 9, "fail"], "./system/tenant/index": ["0194", 9, "fail"], "./system/tenant/index.vue": ["0194", 9, "fail"], "./system/tenant/tenantMenuForm": ["e581", 9, "fail"], "./system/tenant/tenantMenuForm.vue": ["e581", 9, "fail"], "./system/timers": ["1cfd", 9, "fail"], "./system/timers/": ["1cfd", 9, "fail"], "./system/timers/addForm": ["40b1", 9, "fail"], "./system/timers/addForm.vue": ["40b1", 9, "fail"], "./system/timers/editForm": ["de71", 9, "fail"], "./system/timers/editForm.vue": ["de71", 9, "fail"], "./system/timers/index": ["1cfd", 9, "fail"], "./system/timers/index.vue": ["1cfd", 9, "fail"], "./system/user": ["1f34", 9, "user"], "./system/user/": ["1f34", 9, "user"], "./system/user/addForm": ["d264", 9, "user"], "./system/user/addForm.vue": ["d264", 9, "user"], "./system/user/editForm": ["ef60", 9, "user"], "./system/user/editForm.vue": ["ef60", 9, "user"], "./system/user/index": ["1f34", 9, "user"], "./system/user/index.vue": ["1f34", 9, "user"], "./system/user/userOrgForm": ["c880", 9, "user"], "./system/user/userOrgForm.vue": ["c880", 9, "user"], "./system/user/userRoleForm": ["4e4a", 9, "user"], "./system/user/userRoleForm.vue": ["4e4a", 9, "user"], "./userLoginReg/Login": ["1d8a", 9, "fail"], "./userLoginReg/Login.vue": ["1d8a", 9, "fail"], "./userLoginReg/Register": ["4b0a", 9, "user"], "./userLoginReg/Register.vue": ["4b0a", 9, "user"], "./userLoginReg/RegisterResult": ["56d1", 9, "user"], "./userLoginReg/RegisterResult.vue": ["56d1", 9, "user"] }; function i(e) { if (!n.o(a, e)) return Promise.resolve().then((function () { var t = new Error("Cannot find module '" + e + "'"); throw t.code = "MODULE_NOT_FOUND", t })); var t = a[e], i = t[0]; return n.e(t[2]).then((function () { return n.t(i, t[1]) })) } i.keys = function () { return Object.keys(a) }, i.id = "9dac", e.exports = i }, "9fb0": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return a })), n.d(t, "n", (function () { return i })), n.d(t, "b", (function () { return r })), n.d(t, "l", (function () { return s })), n.d(t, "j", (function () { return o })), n.d(t, "c", (function () { return c })), n.d(t, "d", (function () { return l })), n.d(t, "g", (function () { return u })), n.d(t, "i", (function () { return d })), n.d(t, "h", (function () { return f })), n.d(t, "e", (function () { return m })), n.d(t, "k", (function () { return p })), n.d(t, "f", (function () { return h })), n.d(t, "m", (function () { return g })); var a = "Access-Token", i = "SIDEBAR_TYPE", r = "ALL_APPS_MENU", s = "DEFAULT_THEME", o = "DEFAULT_LAYOUT_MODE", c = "DEFAULT_COLOR", l = "DEFAULT_COLOR_WEAK", u = "DEFAULT_FIXED_HEADER", d = "DEFAULT_FIXED_SIDEMENU", f = "DEFAULT_FIXED_HEADER_HIDDEN", m = "DEFAULT_CONTENT_WIDTH_TYPE", p = "DEFAULT_MULTI_TAB", h = "DEFAULT_CRUMBS_STATE", g = "DICT_TYPE_TREE_DATA" }, a18c: function (e, t, n) { "use strict"; var a = n("8bbf"), i = n.n(a), r = n("6389"), s = n.n(r), o = n("d73b"), c = s.a.prototype.push; s.a.prototype.push = function (e, t, n) { return t || n ? c.call(this, e, t, n) : c.call(this, e).catch((function (e) { return e })) }, i.a.use(s.a), t["a"] = new s.a({ mode: "history", base: "/", scrollBehavior: function () { return { y: 0 } }, routes: o["a"] }) }, a3a0: function (e, t, n) { }, a545: function (e, t, n) { "use strict"; var a, i, r = n("ade3"), s = (n("a9e3"), n("fb6a"), n("d81d"), n("27fd")), o = function () { var e = this, t = e.$createElement, n = e._self._c || t; return "" !== e.tips ? n("tooltip", [n("template", { slot: "title" }, [e._v(e._s(e.tips))]), n("avatar", { attrs: { size: e.avatarSize, src: e.src } })], 2) : n("avatar", { attrs: { size: e.avatarSize, src: e.src } }) }, c = [], l = n("f933"), u = { name: "AvatarItem", components: { Avatar: s["a"], Tooltip: l["a"] }, props: { tips: { type: String, default: "", required: !1 }, src: { type: String, default: "" } }, data: function () { return { size: this.$parent.size } }, computed: { avatarSize: function () { return "mini" !== this.size && this.size || 20 } }, watch: { "$parent.size": function (e) { this.size = e } } }, d = u, f = n("2877"), m = Object(f["a"])(d, o, c, !1, null, null, null), p = m.exports, h = n("d988"), g = { AvatarItem: p, name: "AvatarList", components: { Avatar: s["a"], AvatarItem: p }, props: { prefixCls: { type: String, default: "ant-pro-avatar-list" }, size: { type: [String, Number], default: "default" }, maxLength: { type: Number, default: 0 }, excessItemsStyle: { type: Object, default: function () { return { color: "#f56a00", backgroundColor: "#fde3cf" } } } }, data: function () { return {} }, methods: { getItems: function (e) { var t, n = this.$createElement, a = (t = {}, Object(r["a"])(t, "".concat(this.prefixCls, "-item"), !0), Object(r["a"])(t, "".concat(this.size), !0), t); this.maxLength > 0 && (e = e.slice(0, this.maxLength), e.push(n(s["a"], { attrs: { size: this.size }, style: this.excessItemsStyle }, ["+".concat(this.maxLength)]))); var i = e.map((function (e) { return n("li", { class: a }, [e]) })); return i } }, render: function () { var e, t = arguments[0], n = this.$props, a = n.prefixCls, i = n.size, s = (e = {}, Object(r["a"])(e, "".concat(a), !0), Object(r["a"])(e, "".concat(i), !0), e), o = Object(h["b"])(this.$slots.default), c = o && o.length ? t("ul", { class: "".concat(a, "-items") }, [this.getItems(o)]) : null; return t("div", { class: s }, [c]) } }, b = g, v = Object(f["a"])(b, a, i, !1, null, null, null), y = v.exports; n("84962"), t["a"] = y }, a660: function (e, t, n) { "use strict"; n.r(t); var a = n("411c"), i = n.n(a), r = n("8add"), s = function (e) { var t = { id: "4291d7da9005377ec9aec4a71ea837f", name: "澶╅噹杩滃瓙", username: "admin", password: "", avatar: "/avatar2.jpg", status: 1, telephone: "", lastLoginIp: "27.154.74.117", lastLoginTime: 1534837621348, creatorId: "admin", createTime: 1497160610259, merchantCode: "TLif2btpzg079h15bk", deleted: 0, roleId: "admin", role: {} }, n = { id: "admin", name: "绠$悊鍛�", describe: "鎷ユ湁鎵�鏈夋潈闄�", status: 1, creatorId: "system", createTime: 1497160610259, deleted: 0, permissions: [{ roleId: "admin", permissionId: "dashboard", permissionName: "浠〃鐩�", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "update", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: null, dataAccess: null }, { roleId: "admin", permissionId: "exception", permissionName: "寮傚父椤甸潰鏉冮檺", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "update", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: null, dataAccess: null }, { roleId: "admin", permissionId: "result", permissionName: "缁撴灉鏉冮檺", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "update", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: null, dataAccess: null }, { roleId: "admin", permissionId: "profile", permissionName: "璇︾粏椤垫潈闄�", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "update", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: null, dataAccess: null }, { roleId: "admin", permissionId: "table", permissionName: "琛ㄦ牸鏉冮檺", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "import", describe: "瀵煎叆", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "update", describe: "淇敼", defaultCheck: !1 }], actionList: null, dataAccess: null }, { roleId: "admin", permissionId: "form.vue", permissionName: "琛ㄥ崟鏉冮檺", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "update", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: null, dataAccess: null }, { roleId: "admin", permissionId: "order", permissionName: "璁㈠崟绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "update", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: null, dataAccess: null }, { roleId: "admin", permissionId: "permission", permissionName: "鏉冮檺绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "update", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: null, dataAccess: null }, { roleId: "admin", permissionId: "role", permissionName: "瑙掕壊绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "update", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: null, dataAccess: null }, { roleId: "admin", permissionId: "table", permissionName: "妗屽瓙绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "update", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: null, dataAccess: null }, { roleId: "admin", permissionId: "user", permissionName: "鐢ㄦ埛绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "import", describe: "瀵煎叆", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "update", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }, { action: "export", describe: "瀵煎嚭", defaultCheck: !1 }], actionList: null, dataAccess: null }] }; return n.permissions.push({ roleId: "admin", permissionId: "support", permissionName: "瓒呯骇妯″潡", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "import", describe: "瀵煎叆", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "update", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }, { action: "export", describe: "瀵煎嚭", defaultCheck: !1 }], actionList: null, dataAccess: null }), t.role = n, Object(r["a"])(t) }, o = function (e) { var t = [{ name: "dashboard", parentId: 0, id: 1, meta: { icon: "dashboard", title: "浠〃鐩�77", show: !0 }, component: "RouteView", redirect: "/dashboard/workplace" }, { name: "workplace", parentId: 1, id: 7, meta: { title: "宸ヤ綔鍙�", show: !0 }, component: "Workplace" }, { name: "monitor", path: "https://www.baidu.com/", parentId: 1, id: 3, meta: { title: "鐩戞帶椤碉紙澶栭儴锛�", target: "_blank", show: !0 } }, { name: "Analysis", parentId: 1, id: 2, meta: { title: "鍒嗘瀽椤�", show: !0 }, component: "Analysis", path: "/dashboard/analysis" }, { name: "tests", parentId: 1, id: 8, meta: { title: "娴嬭瘯鍔熻兘", show: !0 }, component: "TestWork" }, { name: "form.vue", parentId: 0, id: 10, meta: { icon: "form.vue", title: "琛ㄥ崟椤�" }, redirect: "/form/base-form", component: "PageView" }, { name: "basic-form", parentId: 10, id: 6, meta: { title: "鍩虹琛ㄥ崟" }, component: "BasicForm" }, { name: "step-form", parentId: 10, id: 5, meta: { title: "鍒嗘琛ㄥ崟" }, component: "StepForm" }, { name: "advanced-form", parentId: 10, id: 4, meta: { title: "楂樼骇琛ㄥ崟" }, component: "AdvanceForm" }, { name: "list", parentId: 0, id: 10010, meta: { icon: "table", title: "鍒楄〃椤�", show: !0 }, redirect: "/list/table-list", component: "PageView" }, { name: "table-list", parentId: 10010, id: 10011, path: "/list/table-list/:pageNo([1-9]\\d*)?", meta: { title: "鏌ヨ琛ㄦ牸", show: !0 }, component: "TableList" }, { name: "basic-list", parentId: 10010, id: 10012, meta: { title: "鏍囧噯鍒楄〃", show: !0 }, component: "StandardList" }, { name: "card", parentId: 10010, id: 10013, meta: { title: "鍗$墖鍒楄〃", show: !0 }, component: "CardList" }, { name: "search", parentId: 10010, id: 10014, meta: { title: "鎼滅储鍒楄〃", show: !0 }, redirect: "/list/search/article", component: "SearchLayout" }, { name: "article", parentId: 10014, id: 10015, meta: { title: "鎼滅储鍒楄〃锛堟枃绔狅級", show: !0 }, component: "SearchArticles" }, { name: "project", parentId: 10014, id: 10016, meta: { title: "鎼滅储鍒楄〃锛堥」鐩級", show: !0 }, component: "SearchProjects" }, { name: "application", parentId: 10014, id: 10017, meta: { title: "鎼滅储鍒楄〃锛堝簲鐢級", show: !0 }, component: "SearchApplications" }, { name: "profile", parentId: 0, id: 10018, meta: { title: "璇︽儏椤�", icon: "profile", show: !0 }, redirect: "/profile/basic", component: "RouteView" }, { name: "basic", parentId: 10018, id: 10019, meta: { title: "鍩虹璇︽儏椤�", show: !0 }, component: "ProfileBasic" }, { name: "advanced", parentId: 10018, id: 10020, meta: { title: "楂樼骇璇︽儏椤�", show: !0 }, component: "ProfileAdvanced" }, { name: "result", parentId: 0, id: 10021, meta: { title: "缁撴灉椤�", icon: "check-circle-o", show: !0 }, redirect: "/result/success", component: "PageView" }, { name: "success", parentId: 10021, id: 10022, meta: { title: "鎴愬姛", hiddenHeaderContent: !0, show: !0 }, component: "ResultSuccess" }, { name: "fail", parentId: 10021, id: 10023, meta: { title: "澶辫触", hiddenHeaderContent: !0, show: !0 }, component: "ResultFail" }, { name: "exception", parentId: 0, id: 10024, meta: { title: "寮傚父椤�", icon: "warning", show: !0 }, redirect: "/exception/403", component: "RouteView" }, { name: "403", parentId: 10024, id: 10025, meta: { title: "403", show: !0 }, component: "Exception403" }, { name: "404", parentId: 10024, id: 10026, meta: { title: "404", show: !0 }, component: "Exception404" }, { name: "500", parentId: 10024, id: 10027, meta: { title: "500", show: !0 }, component: "Exception500" }, { name: "account", parentId: 0, id: 10028, meta: { title: "涓汉椤�", icon: "user", show: !0 }, redirect: "/account/center", component: "RouteView" }, { name: "center", parentId: 10028, id: 10029, meta: { title: "涓汉涓績", show: !0 }, component: "AccountCenter" }, { name: "settings", parentId: 10028, id: 10030, meta: { title: "涓汉璁剧疆", hideHeader: !0, hideChildren: !0, show: !0 }, redirect: "/account/settings/base", component: "AccountSettings" }, { name: "BaseSettings", path: "/account/settings/base", parentId: 10030, id: 10031, meta: { title: "鍩烘湰璁剧疆", show: !1 }, component: "BaseSettings" }, { name: "SecuritySettings", path: "/account/settings/security", parentId: 10030, id: 10032, meta: { title: "瀹夊叏璁剧疆", show: !1 }, component: "SecuritySettings" }, { name: "CustomSettings", path: "/account/settings/custom", parentId: 10030, id: 10033, meta: { title: "涓�у寲璁剧疆", show: !1 }, component: "CustomSettings" }, { name: "BindingSettings", path: "/account/settings/binding", parentId: 10030, id: 10034, meta: { title: "璐︽埛缁戝畾", show: !1 }, component: "BindingSettings" }, { name: "NotificationSettings", path: "/account/settings/notification", parentId: 10030, id: 10034, meta: { title: "鏂版秷鎭�氱煡", show: !1 }, component: "NotificationSettings" }], n = Object(r["a"])(t); return n }; i.a.mock(/\/api\/user\/info/, "get", s), i.a.mock(/\/api\/user\/nav/, "get", o) }, ac0d: function (e, t, n) { "use strict"; n.d(t, "b", (function () { return l })), n.d(t, "a", (function () { return d })), n.d(t, "c", (function () { return u })); var a = n("5530"), i = n("8e95"), r = n.n(i), s = { DESKTOP: "desktop", TABLET: "tablet", MOBILE: "mobile" }, o = function (e) { var t = { match: function () { e && e(s.DESKTOP) } }, n = { match: function () { e && e(s.TABLET) } }, a = { match: function () { e && e(s.MOBILE) } }; r.a.register("screen and (max-width: 576px)", a).register("screen and (min-width: 576px) and (max-width: 1199px)", n).register("screen and (min-width: 1200px)", t) }, c = n("5880"), l = { computed: Object(a["a"])({}, Object(c["mapState"])({ layoutMode: function (e) { return e.app.layout }, navTheme: function (e) { return e.app.theme }, primaryColor: function (e) { return e.app.color }, colorWeak: function (e) { return e.app.weak }, fixedHeader: function (e) { return e.app.fixedHeader }, fixSiderbar: function (e) { return e.app.fixSiderbar }, fixSidebar: function (e) { return e.app.fixSiderbar }, contentWidth: function (e) { return e.app.contentWidth }, autoHideHeader: function (e) { return e.app.autoHideHeader }, sidebarOpened: function (e) { return e.app.sidebar }, multiTab: function (e) { return e.app.multiTab }, crumbsState: function (e) { return e.app.crumbsState } })), methods: { isTopMenu: function () { return "topmenu" === this.layoutMode }, isSideMenu: function () { return !this.isTopMenu() } } }, u = { computed: Object(a["a"])({}, Object(c["mapState"])({ device: function (e) { return e.app.device } })), methods: { isMobile: function () { return this.device === s.MOBILE }, isDesktop: function () { return this.device === s.DESKTOP }, isTablet: function () { return this.device === s.TABLET } } }, d = { mounted: function () { var e = this.$store; o((function (t) { switch (t) { case s.DESKTOP: e.commit("TOGGLE_DEVICE", "desktop"), e.dispatch("setSidebar", !0); break; case s.TABLET: e.commit("TOGGLE_DEVICE", "tablet"), e.dispatch("setSidebar", !1); break; case s.MOBILE: default: e.commit("TOGGLE_DEVICE", "mobile"), e.dispatch("setSidebar", !0); break } })) } } }, ac94: function (e, t, n) { "use strict"; var a = n("ade3"), i = n("2638"), r = n.n(i), s = (n("4de4"), n("b64b"), n("07ac"), n("159b"), n("d81d"), n("4d91")), o = (n("b97c"), n("7571")), c = (n("a9e3"), o["a"].CheckableTag), l = { name: "TagSelectOption", props: { prefixCls: { type: String, default: "ant-pro-tag-select-option" }, value: { type: [String, Number, Object], default: "" }, checked: { type: Boolean, default: !1 } }, data: function () { return { localChecked: this.checked || !1 } }, watch: { checked: function (e) { this.localChecked = e }, "$parent.items": { handler: function (e) { this.value && e.hasOwnProperty(this.value) && (this.localChecked = e[this.value]) }, deep: !0 } }, render: function () { var e = this, t = arguments[0], n = this.$slots, a = this.value, i = function (t) { e.$emit("change", { value: a, checked: t }) }; return t(c, { key: a, on: { change: i }, model: { value: e.localChecked, callback: function (t) { e.localChecked = t } } }, [n.default]) } }, u = n("d988"); t["a"] = { Option: l, name: "TagSelect", model: { prop: "checked", event: "change" }, props: { prefixCls: { type: String, default: "ant-pro-tag-select" }, defaultValue: { type: s["a"].array, default: null }, value: { type: s["a"].array, default: null }, expandable: { type: Boolean, default: !1 }, hideCheckAll: { type: Boolean, default: !1 } }, data: function () { return { expand: !1, localCheckAll: !1, items: this.getItemsKey(Object(u["b"])(this.$slots.default)), val: this.value || this.defaultValue || [] } }, methods: { onChange: function (e) { var t = Object.keys(this.items).filter((function (t) { return t === e.value })); this.items[t] = e.checked; var n = Object.values(this.items).lastIndexOf(!1); this.localCheckAll = -1 === n }, onCheckAll: function (e) { var t = this; Object.keys(this.items).forEach((function (n) { t.items[n] = e.checked })), this.localCheckAll = e.checked }, getItemsKey: function (e) { var t = {}; return e.forEach((function (e) { t[e.componentOptions.propsData && e.componentOptions.propsData.value] = !1 })), t }, renderCheckAll: function () { var e = this, t = this.$createElement, n = { on: { change: function (t) { e.onCheckAll(t), t.value = "total", e.$emit("change", t) } } }, a = t(l, r()([{ key: "total", attrs: { checked: this.localCheckAll } }, n]), ["All"]); return !this.hideCheckAll && a || null }, renderExpandable: function () { }, renderTags: function (e) { var t = this, n = { change: function (e) { t.onChange(e), t.$emit("change", e) } }; return e.map((function (e) { var t = e.componentOptions; return t.listeners = n, e })) } }, render: function () { var e = arguments[0], t = this.$props.prefixCls, n = Object(a["a"])({}, "".concat(t), !0), i = Object(u["b"])(this.$slots.default); return e("div", { class: n }, [this.renderCheckAll(), this.renderTags(i)]) } } }, b408: function (e, t, n) { "use strict"; n("2802") }, b656: function (e, t, n) { }, b775: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return h })), n.d(t, "b", (function () { return m })); n("cd17"); var a = n("ed3b"), i = (n("3b18"), n("f64c")), r = (n("dc5a"), n("56cd")), s = (n("d3b7"), n("8bbf")), o = n.n(s), c = n("cebe"), l = n.n(c), u = n("4360"), d = { vm: {}, install: function (e, t) { this.installed || (this.installed = !0, t && (e.axios = t, Object.defineProperties(e.prototype, { axios: { get: function () { return t } }, $http: { get: function () { return t } } }))) } }, f = n("9fb0"), m = l.a.create({ baseURL: "/api", timeout: 6e3 }), p = function (e) { if (e.response) { var t = e.response.data, n = o.a.ls.get(f["a"]); 403 === e.response.status && r["a"].error({ message: "Forbidden", description: t.message }), 500 === e.response.status && t.message.length > 0 && i["a"].error(t.message), 401 !== e.response.status || t.result && t.result.isLogin || (r["a"].error({ message: "Unauthorized", description: "Authorization verification failed" }), n && u["a"].dispatch("Logout").then((function () { setTimeout((function () { window.location.reload() }), 1500) }))) } return Promise.reject(e) }; m.interceptors.request.use((function (e) { var t = o.a.ls.get(f["a"]), n = o.a.ls.get("X-Access-Token"); return t && (e.headers["Authorization"] = "Bearer " + t), n && (e.headers["X-Authorization"] = "Bearer " + n), e }), p), m.interceptors.response.use((function (e) { if (e.headers["access-token"] && "invalid_token" !== e.headers["access-token"] && (o.a.ls.set(f["a"], e.headers["access-token"]), u["a"].commit("SET_TOKEN", e.headers["access-token"])), e.headers["x-access-token"] && o.a.ls.set("X-Access-Token", e.headers["x-access-token"]), "blob" === e.request.responseType) return e; var t = e.data, n = e.data.code; return u["a"].state.app.hasError || 401 === n && (a["a"].error({ title: "鎻愮ず锛�", content: t.message, keyboard: !1, okText: "閲嶆柊鐧诲綍", onOk: function () { u["a"].dispatch("SetHasError", !1), window.location.reload() } }), o.a.ls.remove(f["a"]), o.a.ls.remove("X-Access-Token"), u["a"].dispatch("SetHasError", !0)), t }), p); var h = { vm: {}, install: function (e) { e.use(d, m) } } }, bfb7: function (e, t, n) { "use strict"; n("da48") }, c4db: function (e, t, n) { "use strict"; n("a9e3"), n("a15b"), n("d81d"); var a, i, r = n("f933"), s = n("d988"), o = { name: "Ellipsis", components: { Tooltip: r["a"] }, props: { prefixCls: { type: String, default: "ant-pro-ellipsis" }, tooltip: { type: Boolean }, length: { type: Number, required: !0 }, lines: { type: Number, default: 1 }, fullWidthRecognition: { type: Boolean, default: !1 } }, methods: { getStrDom: function (e, t) { var n = this.$createElement; return n("span", [Object(s["a"])(e, this.length) + (t > this.length ? "..." : "")]) }, getTooltip: function (e, t) { var n = this.$createElement; return n(r["a"], [n("template", { slot: "title" }, [e]), this.getStrDom(e, t)]) } }, render: function () { var e = this.$props, t = e.tooltip, n = e.length, a = this.$slots.default.map((function (e) { return e.text })).join(""), i = Object(s["c"])(a), r = t && i > n ? this.getTooltip(a, i) : this.getStrDom(a, i); return r } }, c = o, l = n("2877"), u = Object(l["a"])(c, a, i, !1, null, null, null), d = u.exports; t["a"] = d }, c4ef: function (e, t, n) { "use strict"; n.d(t, "c", (function () { return u })), n.d(t, "a", (function () { return l })), n.d(t, "b", (function () { return d })); n("d3b7"); var a = n("f64c"), i = (n("d81d"), n("cb29"), n("a15b"), n("ac1f"), n("5319"), n("99af"), n("6a71")), r = n.n(i), s = n("7746"), o = n.n(s), c = { getAntdSerials: function (e) { var t = new Array(9).fill().map((function (t, n) { return r.a.varyColor.lighten(e, n / 10) })), n = o()(e), a = r.a.varyColor.toNum3(e.replace("#", "")).join(","); return t.concat(n).concat(a) }, changeColor: function (e) { var t = { newColors: this.getAntdSerials(e), changeUrl: function (e) { return "/".concat(e) } }; return r.a.changer.changeColor(t, Promise) } }, l = [{ key: "钖勬毊", color: "#F5222D" }, { key: "鐏北", color: "#FA541C" }, { key: "鏃ユ毊", color: "#FAAD14" }, { key: "鏄庨潚", color: "#13C2C2" }, { key: "鏋佸厜缁�", color: "#52C41A" }, { key: "鎷傛檽钃濓紙榛樿锛�", color: "#1890FF" }, { key: "鏋佸钃�", color: "#2F54EB" }, { key: "閰辩传", color: "#722ED1" }], u = function (e) { var t = a["a"].loading("姝e湪鍒囨崲涓婚锛�", 0); c.changeColor(e).finally((function (e) { setTimeout((function () { t() }), 10) })) }, d = function (e) { var t = document.body.querySelector("#app"); e ? t.classList.add("colorWeak") : t.classList.remove("colorWeak") } }, ca00: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return a })), n.d(t, "c", (function () { return i })), n.d(t, "e", (function () { return r })), n.d(t, "d", (function () { return s })), n.d(t, "b", (function () { return o })); n("d3b7"), n("25f0"), n("ac1f"), n("4d63"), n("5319"), n("4d90"); function a(e, t) { var n, a = new Date(e), i = { "Y+": a.getFullYear().toString(), "m+": (a.getMonth() + 1).toString(), "d+": a.getDate().toString(), "H+": a.getHours().toString(), "M+": a.getMinutes().toString(), "S+": a.getSeconds().toString() }; for (var r in i) n = new RegExp("(" + r + ")").exec(t), n && (t = t.replace(n[1], 1 == n[1].length ? i[r] : i[r].padStart(n[1].length, "0"))); return t } function i() { var e = new Date, t = e.getHours(); return t < 9 ? "鏃╀笂濂�" : t <= 11 ? "涓婂崍濂�" : t <= 13 ? "涓崍濂�" : t < 20 ? "涓嬪崍濂�" : "鏅氫笂濂�" } function r() { var e = ["浼戞伅涓�浼氬効鍚�", "鍑嗗鍚冧粈涔堝憿?", "瑕佷笉瑕佹墦涓�鎶� LOL", "鎴戠寽浣犲彲鑳界疮浜�"], t = Math.floor(Math.random() * e.length); return e[t] } function s() { var e = document.createEvent("HTMLEvents"); e.initEvent("resize", !0, !0), e.eventType = "message", window.dispatchEvent(e) } function o() { var e = window.navigator.userAgent, t = function (t) { return e.indexOf(t) >= 0 }, n = function () { return "ActiveXObject" in window }(); return t("MSIE") || n } }, ca005: function (e, t, n) { }, ca17: function (e, t, n) { "use strict"; n("2c87") }, cebe: function (e, t) { e.exports = axios }, cf05: function (e, t, n) { e.exports = n.p + "img/logo.a0cbaad2.png" }, d73b: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return s })); n("d3b7"), n("3ca3"), n("ddb0"); var a = n("680a"), i = n("0dbd"), r = n.n(i), s = (a["a"], a["e"], r.a, [{ path: "/user", component: a["f"], redirect: "/user/login", hidden: !0, children: [{ path: "login", name: "login", component: function () { return Promise.all([n.e("fail"), n.e("user")]).then(n.bind(null, "1d8a")) } }, { path: "register", name: "register", component: function () { return Promise.all([n.e("fail"), n.e("user")]).then(n.bind(null, "4b0a")) } }, { path: "register-result", name: "registerResult", component: function () { return Promise.all([n.e("fail"), n.e("user")]).then(n.bind(null, "56d1")) } }, { path: "recover", name: "recover", component: void 0 }] }, { path: "/test", component: a["b"], redirect: "/test/home", children: [{ path: "home", name: "TestHome", component: function () { return n.e("fail").then(n.bind(null, "bb51")) } }] }, { path: "/404", component: function () { return n.e("fail").then(n.bind(null, "d250")) } }]) }, d988: function (e, t, n) { "use strict"; n.d(t, "b", (function () { return a })), n.d(t, "c", (function () { return i })), n.d(t, "a", (function () { return r })); n("4de4"), n("498a"), n("ac1f"), n("1276"); function a() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; return e.filter((function (e) { return e.tag || e.text && "" !== e.text.trim() })) } var i = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ""; return e.split("").reduce((function (e, t) { var n = t.charCodeAt(0); return n >= 0 && n <= 128 ? e + 1 : e + 2 }), 0) }, r = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", t = arguments.length > 1 ? arguments[1] : void 0, n = 0; return e.split("").reduce((function (e, a) { var i = a.charCodeAt(0); return n += i >= 0 && i <= 128 ? 1 : 2, n <= t ? e + a : e }), "") } }, da48: function (e, t, n) { }, da7d: function (e, t, n) { "use strict"; n.r(t); var a = n("411c"), i = n.n(a), r = n("8add"), s = function () { return Object(r["a"])([{ key: "key-01", title: "鐮斿彂涓績", icon: "mail", children: [{ key: "key-01-01", title: "鍚庣缁�", icon: null, group: !0, children: [{ key: "key-01-01-01", title: "JAVA", icon: null }, { key: "key-01-01-02", title: "PHP", icon: null }, { key: "key-01-01-03", title: "Golang", icon: null }] }, { key: "key-01-02", title: "鍓嶇缁�", icon: null, group: !0, children: [{ key: "key-01-02-01", title: "React", icon: null }, { key: "key-01-02-02", title: "Vue", icon: null }, { key: "key-01-02-03", title: "Angular", icon: null }] }] }, { key: "key-02", title: "璐㈠姟閮�", icon: "dollar", children: [{ key: "key-02-01", title: "浼氳鏍哥畻", icon: null }, { key: "key-02-02", title: "鎴愭湰鎺у埗", icon: null }, { key: "key-02-03", title: "鍐呴儴鎺у埗", icon: null, children: [{ key: "key-02-03-01", title: "璐㈠姟鍒跺害寤鸿", icon: null }, { key: "key-02-03-02", title: "浼氳鏍哥畻", icon: null }] }] }]) }, o = function () { return Object(r["a"])({ data: [{ id: "admin", name: "绠$悊鍛�", describe: "鎷ユ湁鎵�鏈夋潈闄�", status: 1, creatorId: "system", createTime: 1497160610259, deleted: 0, permissions: [{ roleId: "admin", permissionId: "comment", permissionName: "璇勮绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "edit", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: ["delete", "edit"], dataAccess: null }, { roleId: "admin", permissionId: "member", permissionName: "浼氬憳绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "edit", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: ["query", "get", "edit", "delete"], dataAccess: null }, { roleId: "admin", permissionId: "menu", permissionName: "鑿滃崟绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "import", describe: "瀵煎叆", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "edit", describe: "淇敼", defaultCheck: !1 }], actionList: ["add", "import"], dataAccess: null }, { roleId: "admin", permissionId: "order", permissionName: "璁㈠崟绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "edit", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: ["query", "add", "get"], dataAccess: null }, { roleId: "admin", permissionId: "permission", permissionName: "鏉冮檺绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "edit", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: ["add", "get", "edit", "delete"], dataAccess: null }, { roleId: "admin", permissionId: "role", permissionName: "瑙掕壊绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "edit", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: null, dataAccess: null }, { roleId: "admin", permissionId: "test", permissionName: "娴嬭瘯鏉冮檺", actions: "[]", actionEntitySet: [], actionList: null, dataAccess: null }, { roleId: "admin", permissionId: "user", permissionName: "鐢ㄦ埛绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "import", describe: "瀵煎叆", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "edit", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }, { action: "export", describe: "瀵煎嚭", defaultCheck: !1 }], actionList: ["add", "get"], dataAccess: null }] }, { id: "svip", name: "SVIP", describe: "瓒呯骇浼氬憳", status: 1, creatorId: "system", createTime: 1532417744846, deleted: 0, permissions: [{ roleId: "admin", permissionId: "comment", permissionName: "璇勮绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "edit", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: ["add", "get", "delete"], dataAccess: null }, { roleId: "admin", permissionId: "member", permissionName: "浼氬憳绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }], actionList: ["add", "query", "get"], dataAccess: null }, { roleId: "admin", permissionId: "menu", permissionName: "鑿滃崟绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "import", describe: "瀵煎叆", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }], actionList: ["add", "get"], dataAccess: null }, { roleId: "admin", permissionId: "order", permissionName: "璁㈠崟绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "edit", describe: "淇敼", defaultCheck: !1 }], actionList: ["add", "query"], dataAccess: null }, { roleId: "admin", permissionId: "permission", permissionName: "鏉冮檺绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "edit", describe: "淇敼", defaultCheck: !1 }], actionList: ["add", "get", "edit"], dataAccess: null }, { roleId: "admin", permissionId: "role", permissionName: "瑙掕壊绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "edit", describe: "淇敼", defaultCheck: !1 }, { action: "delete", describe: "鍒犻櫎", defaultCheck: !1 }], actionList: null, dataAccess: null }, { roleId: "admin", permissionId: "test", permissionName: "娴嬭瘯鏉冮檺", actions: "[]", actionEntitySet: [], actionList: ["add", "edit"], dataAccess: null }, { roleId: "admin", permissionId: "user", permissionName: "鐢ㄦ埛绠$悊", actions: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]', actionEntitySet: [{ action: "add", describe: "鏂板", defaultCheck: !1 }, { action: "import", describe: "瀵煎叆", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }, { action: "edit", describe: "淇敼", defaultCheck: !1 }], actionList: ["add"], dataAccess: null }] }, { id: "user", name: "鏅�氫細鍛�", describe: "鏅�氱敤鎴凤紝鍙兘鏌ヨ", status: 1, creatorId: "system", createTime: 1497160610259, deleted: 0, permissions: [{ roleId: "user", permissionId: "comment", permissionName: "璇勮绠$悊", actions: '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]', actionEntitySet: [{ action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }], actionList: ["query"], dataAccess: null }, { roleId: "user", permissionId: "marketing", permissionName: "钀ラ攢绠$悊", actions: "[]", actionEntitySet: [], actionList: null, dataAccess: null }, { roleId: "user", permissionId: "member", permissionName: "浼氬憳绠$悊", actions: '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]', actionEntitySet: [{ action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }], actionList: null, dataAccess: null }, { roleId: "user", permissionId: "menu", permissionName: "鑿滃崟绠$悊", actions: "[]", actionEntitySet: [], actionList: null, dataAccess: null }, { roleId: "user", permissionId: "order", permissionName: "璁㈠崟绠$悊", actions: '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]', actionEntitySet: [{ action: "query", describe: "鏌ヨ", defaultCheck: !1 }, { action: "get", describe: "璇︽儏", defaultCheck: !1 }], actionList: null, dataAccess: null }, { roleId: "user", permissionId: "permission", permissionName: "鏉冮檺绠$悊", actions: "[]", actionEntitySet: [], actionList: null, dataAccess: null }, { roleId: "user", permissionId: "role", permissionName: "瑙掕壊绠$悊", actions: "[]", actionEntitySet: [], actionList: null, dataAccess: null }, { roleId: "user", permissionId: "test", permissionName: "娴嬭瘯鏉冮檺", actions: "[]", actionEntitySet: [], actionList: null, dataAccess: null }, { roleId: "user", permissionId: "user", permissionName: "鐢ㄦ埛绠$悊", actions: "[]", actionEntitySet: [], actionList: null, dataAccess: null }] }], pageSize: 10, pageNo: 0, totalPage: 1, totalCount: 5 }) }, c = function () { return Object(r["a"])([{ id: "marketing", name: "钀ラ攢绠$悊", describe: null, status: 1, actionData: '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', sptDaTypes: null, optionalFields: null, parents: null, type: null, deleted: 0, actions: ["add", "query", "get", "edit", "delete"] }, { id: "member", name: "浼氬憳绠$悊", describe: null, status: 1, actionData: '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', sptDaTypes: null, optionalFields: "[]", parents: null, type: "default", deleted: 0, actions: ["add", "query", "get", "edit", "delete"] }, { id: "menu", name: "鑿滃崟绠$悊", describe: null, status: 1, actionData: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"}]', sptDaTypes: null, optionalFields: "[]", parents: null, type: "default", deleted: 0, actions: ["add", "import", "get", "edit"] }, { id: "order", name: "璁㈠崟绠$悊", describe: null, status: 1, actionData: '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', sptDaTypes: null, optionalFields: "[]", parents: null, type: "default", deleted: 0, actions: ["add", "query", "get", "edit", "delete"] }, { id: "permission", name: "鏉冮檺绠$悊", describe: null, status: 1, actionData: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', sptDaTypes: null, optionalFields: "[]", parents: null, type: "default", deleted: 0, actions: ["add", "get", "edit", "delete"] }, { id: "role", name: "瑙掕壊绠$悊", describe: null, status: 1, actionData: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', sptDaTypes: null, optionalFields: "[]", parents: null, type: "default", deleted: 0, actions: ["add", "get", "edit", "delete"] }, { id: "test", name: "娴嬭瘯鏉冮檺", describe: null, status: 1, actionData: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]', sptDaTypes: null, optionalFields: "[]", parents: null, type: "default", deleted: 0, actions: ["add", "get"] }, { id: "user", name: "鐢ㄦ埛绠$悊", describe: null, status: 1, actionData: '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]', sptDaTypes: null, optionalFields: "[]", parents: null, type: "default", deleted: 0, actions: ["add", "get"] }]) }, l = function () { return Object(r["a"])({ data: [{ id: "marketing", name: "钀ラ攢绠$悊", describe: null, status: 1, actionData: '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', sptDaTypes: null, optionalFields: null, parents: null, type: null, deleted: 0, actions: ["add", "query", "get", "edit", "delete"] }, { id: "member", name: "浼氬憳绠$悊", describe: null, status: 1, actionData: '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', sptDaTypes: null, optionalFields: "[]", parents: null, type: "default", deleted: 0, actions: ["add", "query", "get", "edit", "delete"] }, { id: "menu", name: "鑿滃崟绠$悊", describe: null, status: 1, actionData: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"}]', sptDaTypes: null, optionalFields: "[]", parents: null, type: "default", deleted: 0, actions: ["add", "import", "get", "edit"] }, { id: "order", name: "璁㈠崟绠$悊", describe: null, status: 1, actionData: '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', sptDaTypes: null, optionalFields: "[]", parents: null, type: "default", deleted: 0, actions: ["add", "query", "get", "edit", "delete"] }, { id: "permission", name: "鏉冮檺绠$悊", describe: null, status: 1, actionData: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', sptDaTypes: null, optionalFields: "[]", parents: null, type: "default", deleted: 0, actions: ["add", "get", "edit", "delete"] }, { id: "role", name: "瑙掕壊绠$悊", describe: null, status: 1, actionData: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]', sptDaTypes: null, optionalFields: "[]", parents: null, type: "default", deleted: 0, actions: ["add", "get", "edit", "delete"] }, { id: "test", name: "娴嬭瘯鏉冮檺", describe: null, status: 1, actionData: '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]', sptDaTypes: null, optionalFields: "[]", parents: null, type: "default", deleted: 0, actions: ["add", "get"] }, { id: "user", name: "鐢ㄦ埛绠$悊", describe: null, status: 1, actionData: '[{"action":"add","describe":"鏂板","defaultCheck":false},{"action":"get","describe":"鏌ヨ","defaultCheck":false}]', sptDaTypes: null, optionalFields: "[]", parents: null, type: "default", deleted: 0, actions: ["add", "get"] }], pageSize: 10, pageNo: 0, totalPage: 1, totalCount: 5 }) }; i.a.mock(/\/org\/tree/, "get", s), i.a.mock(/\/role/, "get", o), i.a.mock(/\/permission\/no-pager/, "get", c), i.a.mock(/\/permission/, "get", l) }, db07: function (e, t, n) { }, db89: function (e, t, n) { "use strict"; n("3c71") }, dfa3: function (e, t, n) { "use strict"; n("84cc") }, e040: function (e, t, n) { }, e46d: function (e, t, n) { "use strict"; n("523c") }, e56a: function (e, t, n) { }, e6c5: function (e, t, n) { "use strict"; n("f14c") }, e763: function (e, t, n) { "use strict"; n("ff4c") }, e819: function (e, t, n) { "use strict"; t["a"] = { primaryColor: "#FA541C", navTheme: "light", layout: "sidemenu", contentWidth: "Fixed", fixedHeader: !0, fixSiderbar: !0, autoHideHeader: !1, colorWeak: !1, multiTab: !1, crumbsSate: !1, production: !1, storageOptions: { namespace: "pro__", name: "ls", storage: "local" } } }, e951: function (e, t, n) { "use strict"; n.r(t); n("caad"); var a = n("411c"), i = n.n(a), r = n("8add"), s = ["admin", "super"], o = ["8914de686ab28dc22f30d3d8e107ff6c"], c = function (e) { var t = Object(r["b"])(e); return s.includes(t.username) && o.includes(t.password) ? Object(r["a"])({ id: i.a.mock("@guid"), name: i.a.mock("@name"), username: "admin", password: "", avatar: "https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png", status: 1, telephone: "", lastLoginIp: "27.154.74.117", lastLoginTime: 1534837621348, creatorId: "admin", createTime: 1497160610259, deleted: 0, roleId: "admin", lang: "zh-CN", token: "4291d7da9005377ec9aec4a71ea837f" }, "", 200, { "Custom-Header": i.a.mock("@guid") }) : Object(r["a"])({ isLogin: !0 }, "璐︽埛鎴栧瘑鐮侀敊璇�", 401) }, l = function () { return Object(r["a"])({}, "[娴嬭瘯鎺ュ彛] 娉ㄩ攢鎴愬姛") }, u = function () { return Object(r["a"])({ captcha: i.a.mock("@integer(10000, 99999)") }) }, d = function () { return Object(r["a"])({ stepCode: i.a.mock("@integer(0, 1)") }) }; i.a.mock(/\/auth\/login/, "post", c), i.a.mock(/\/auth\/logout/, "post", l), i.a.mock(/\/account\/sms/, "post", u), i.a.mock(/\/auth\/2step-code/, "post", d) }, ee2a: function (e, t, n) { "use strict"; n("ca005") }, f045: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return i })), n.d(t, "b", (function () { return r })); var a = n("b775"); function i(e) { return Object(a["b"])({ url: "/sysNotice/received", method: "get", params: e }) } function r(e) { return Object(a["b"])({ url: "/sysNotice/unread", method: "get", params: e }) } }, f14c: function (e, t, n) { }, f3f8: function (e, t, n) { }, f8cc: function (e, t, n) { "use strict"; n("6861") }, fddb: function (e, t, n) { }, ff4c: function (e, t, n) { }, fff4: function (e, t, n) { "use strict"; n.r(t); var a = n("411c"), i = n.n(a), r = n("8add"), s = ["Alipay", "Angular", "Ant Design", "Admin.NET", "Bootstrap", "React", "Vue", "Webpack"], o = ["https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png", "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png", "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png", "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png", "https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png"], c = ["https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png", "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png", "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png", "https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png"], l = ["浠樺皬灏�", "鍚村姞濂�", "鍛ㄦ槦鏄�", "鏋椾笢涓�", "鏇蹭附涓�"], u = "娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆傝殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�", d = "鍦ㄤ腑鍙颁骇鍝佺殑鐮斿彂杩囩▼涓紝浼氬嚭鐜颁笉鍚岀殑璁捐瑙勮寖鍜屽疄鐜版柟寮忥紝浣嗗叾涓線寰�瀛樺湪寰堝绫讳技鐨勯〉闈㈠拰缁勪欢锛岃繖浜涚被浼肩殑缁勪欢浼氳鎶界鎴愪竴濂楁爣鍑嗚鑼冦��", f = "https://ant.design", m = function (e) { var t = Object(r["c"])(e); t && !t.count && (t.count = 5); for (var n = [], a = 0; a < t.count; a++) { var m = a + 1, p = parseInt(5 * Math.random(), 10); n.push({ id: m, avatar: o[p], owner: l[p], content: u, star: i.a.mock("@integer(1, 999)"), percent: i.a.mock("@integer(1, 999)"), like: i.a.mock("@integer(1, 999)"), message: i.a.mock("@integer(1, 999)"), description: d, href: f, title: s[a % 8], updatedAt: i.a.mock("@datetime"), members: [{ avatar: "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", name: "鏇蹭附涓�", id: "member1" }, { avatar: "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", name: "鐜嬫槶鍚�", id: "member2" }, { avatar: "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", name: "钁e濞�", id: "member3" }], activeUser: Math.ceil(1e5 * Math.random()) + 1e5, newUser: Math.ceil(1e3 * Math.random()) + 1e3, cover: parseInt(a / 4, 10) % 2 === 0 ? c[a % 4] : c[3 - a % 4] }) } return Object(r["a"])(n) }; i.a.mock(/\/list\/article/, "get", m) } });
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/app.413ecdbc.js.gz b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/app.413ecdbc.js.gz
new file mode 100644
index 0000000..a1ef475
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/app.413ecdbc.js.gz
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-b7a16696.e8717d8b.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-b7a16696.e8717d8b.js
new file mode 100644
index 0000000..5a754bb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-b7a16696.e8717d8b.js
@@ -0,0 +1,9 @@
+(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["chunk-b7a16696"], {
+    "16ac": function (t, e, i) { "use strict"; i.r(e); var n = function () { var t = this, e = t.$createElement, i = t._self._c || e; return i("div", [i("div", { attrs: { id: "map" } }, [i("a-drawer", { attrs: { title: "鍥惧厓灞炴��", placement: "right", width: 600, closable: !1, visible: t.drawerVisible, "get-container": !1, "wrap-style": { position: "absolute" } }, on: { close: t.onCloseDrawer } }, [i("p", [t._v(t._s(t.geosjonData))])])], 1)]) }, o = [], r = (i("d81d"), i("a434"), i("e11e")), a = i.n(r), s = function (t, e) { var i, n = function () { var n = [], o = arguments.length; while (o--) n[o] = arguments[o]; var r = this; i && clearTimeout(i), i = setTimeout((function () { t.apply(r, n), i = null }), e) }; return n.cancel = function () { i && clearTimeout(i) }, n }, h = function (t) { return t && "function" === typeof t.charAt ? t.charAt(0).toUpperCase() + t.slice(1) : t }, l = function (t, e, i, n) { var o = function (n) { var o = "set" + h(n), a = i[n].type === Object || i[n].type === Array || Array.isArray(i[n].type); i[n].custom && t[o] ? t.$watch(n, (function (e, i) { t[o](e, i) }), { deep: a }) : "setOptions" === o ? t.$watch(n, (function (t, i) { Object(r["setOptions"])(e, t) }), { deep: a }) : e[o] && t.$watch(n, (function (t, i) { e[o](t) }), { deep: a }) }; for (var a in i) o(a) }, u = function (t) { var e = {}; for (var i in t) { var n = t[i]; null !== n && void 0 !== n && (e[i] = n) } return e }, c = function (t, e) { var i = e.options && e.options.constructor === Object ? e.options : {}; t = t && t.constructor === Object ? t : {}; var n = u(i); t = u(t); var o = e.$options.props; for (var r in t) { var a = o[r] ? o[r].default && "function" === typeof o[r].default ? o[r].default.call() : o[r].default : Symbol("unique"), s = !1; s = Array.isArray(a) ? JSON.stringify(a) === JSON.stringify(t[r]) : a === t[r], n[r] && !s ? (console.warn(r + " props is overriding the value passed in the options props"), n[r] = t[r]) : n[r] || (n[r] = t[r]) } return n }, p = { props: { options: { type: Object, default: function () { return {} } } } }, d = { name: "LMap", mixins: [p], props: { center: { type: [Object, Array], custom: !0, default: function () { return [0, 0] } }, bounds: { type: [Array, Object], custom: !0, default: null }, maxBounds: { type: [Array, Object], default: null }, zoom: { type: Number, custom: !0, default: 0 }, minZoom: { type: Number, default: null }, maxZoom: { type: Number, default: null }, paddingBottomRight: { type: Array, custom: !0, default: null }, paddingTopLeft: { type: Array, custom: !0, default: null }, padding: { type: Array, custom: !0, default: null }, worldCopyJump: { type: Boolean, default: !1 }, crs: { type: Object, custom: !0, default: function () { return r["CRS"].EPSG3857 } }, maxBoundsViscosity: { type: Number, default: null }, inertia: { type: Boolean, default: null }, inertiaDeceleration: { type: Number, default: null }, inertiaMaxSpeed: { type: Number, default: null }, easeLinearity: { type: Number, default: null }, zoomAnimation: { type: Boolean, default: null }, zoomAnimationThreshold: { type: Number, default: null }, fadeAnimation: { type: Boolean, default: null }, markerZoomAnimation: { type: Boolean, default: null }, noBlockingAnimations: { type: Boolean, default: !1 } }, data: function () { return { ready: !1, lastSetCenter: this.center ? Object(r["latLng"])(this.center) : null, lastSetBounds: this.bounds ? Object(r["latLngBounds"])(this.bounds) : null, layerControl: void 0, layersToAdd: [], layersInControl: [] } }, computed: { fitBoundsOptions: function () { var t = { animate: !this.noBlockingAnimations && null }; return this.padding ? t.padding = this.padding : (this.paddingBottomRight && (t.paddingBottomRight = this.paddingBottomRight), this.paddingTopLeft && (t.paddingTopLeft = this.paddingTopLeft)), t } }, beforeDestroy: function () { this.debouncedMoveEndHandler && this.debouncedMoveEndHandler.cancel(), this.mapObject && this.mapObject.remove() }, mounted: function () { var t = this, e = c({ minZoom: this.minZoom, maxZoom: this.maxZoom, maxBounds: this.maxBounds, maxBoundsViscosity: this.maxBoundsViscosity, worldCopyJump: this.worldCopyJump, crs: this.crs, center: this.center, zoom: this.zoom, inertia: this.inertia, inertiaDeceleration: this.inertiaDeceleration, inertiaMaxSpeed: this.inertiaMaxSpeed, easeLinearity: this.easeLinearity, zoomAnimation: this.zoomAnimation, zoomAnimationThreshold: this.zoomAnimationThreshold, fadeAnimation: this.fadeAnimation, markerZoomAnimation: this.markerZoomAnimation }, this); this.mapObject = Object(r["map"])(this.$el, e), this.bounds && this.fitBounds(this.bounds), this.debouncedMoveEndHandler = s(this.moveEndHandler, 100), this.mapObject.on("moveend", this.debouncedMoveEndHandler), this.mapObject.on("overlayadd", this.overlayAddHandler), this.mapObject.on("overlayremove", this.overlayRemoveHandler), r["DomEvent"].on(this.mapObject, this.$listeners), l(this, this.mapObject, this.$options.props), this.ready = !0, this.$emit("leaflet:load"), this.$nextTick((function () { t.$emit("ready", t.mapObject) })) }, methods: { registerLayerControl: function (t) { var e = this; this.layerControl = t, this.mapObject.addControl(t.mapObject), this.layersToAdd.forEach((function (t) { e.layerControl.addLayer(t) })), this.layersToAdd = [] }, addLayer: function (t, e) { if (void 0 !== t.layerType) if (void 0 === this.layerControl) this.layersToAdd.push(t); else { var i = this.layersInControl.find((function (e) { return e.mapObject._leaflet_id === t.mapObject._leaflet_id })); i || (this.layerControl.addLayer(t), this.layersInControl.push(t)) } e || !1 === t.visible || this.mapObject.addLayer(t.mapObject) }, hideLayer: function (t) { this.mapObject.removeLayer(t.mapObject) }, removeLayer: function (t, e) { void 0 !== t.layerType && (void 0 === this.layerControl ? this.layersToAdd = this.layersToAdd.filter((function (e) { return e.name !== t.name })) : (this.layerControl.removeLayer(t), this.layersInControl = this.layersInControl.filter((function (e) { return e.mapObject._leaflet_id !== t.mapObject._leaflet_id })))), e || this.mapObject.removeLayer(t.mapObject) }, setZoom: function (t, e) { void 0 !== t && null !== t && (this.mapObject.setZoom(t, { animate: !this.noBlockingAnimations && null }), this.cacheMapView()) }, setCenter: function (t, e) { if (null != t) { var i = Object(r["latLng"])(t), n = this.lastSetCenter || this.mapObject.getCenter(); n.lat === i.lat && n.lng === i.lng || (this.lastSetCenter = i, this.mapObject.panTo(i, { animate: !this.noBlockingAnimations && null }), this.cacheMapView(void 0, i)) } }, setBounds: function (t, e) { if (t) { var i = Object(r["latLngBounds"])(t); if (i.isValid()) { var n = this.lastSetBounds || this.mapObject.getBounds(), o = !n.equals(i, 0); o && (this.fitBounds(i), this.cacheMapView(i)) } } }, setPaddingBottomRight: function (t, e) { this.paddingBottomRight = t }, setPaddingTopLeft: function (t, e) { this.paddingTopLeft = t }, setPadding: function (t, e) { this.padding = t }, setCrs: function (t, e) { var i = this.mapObject, n = i.getBounds(); i.options.crs = t, this.fitBounds(n, { animate: !1 }) }, fitBounds: function (t, e) { this.mapObject.fitBounds(t, Object.assign({}, this.fitBoundsOptions, e)) }, moveEndHandler: function () { this.$emit("update:zoom", this.mapObject.getZoom()); var t = this.mapObject.getCenter(); this.$emit("update:center", t); var e = this.mapObject.getBounds(); this.$emit("update:bounds", e) }, overlayAddHandler: function (t) { var e = this.layersInControl.find((function (e) { return e.name === t.name })); e && e.updateVisibleProp(!0) }, overlayRemoveHandler: function (t) { var e = this.layersInControl.find((function (e) { return e.name === t.name })); e && e.updateVisibleProp(!1) }, cacheMapView: function (t, e) { this.lastSetBounds = t || this.mapObject.getBounds(), this.lastSetCenter = e || this.lastSetBounds.getCenter() } } }; function f(t, e, i, n, o, r, a, s, h, l) { "boolean" !== typeof a && (h = s, s = a, a = !1); var u, c = "function" === typeof i ? i.options : i; if (t && t.render && (c.render = t.render, c.staticRenderFns = t.staticRenderFns, c._compiled = !0, o && (c.functional = !0)), n && (c._scopeId = n), r ? (u = function (t) { t = t || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext, t || "undefined" === typeof __VUE_SSR_CONTEXT__ || (t = __VUE_SSR_CONTEXT__), e && e.call(this, h(t)), t && t._registeredComponents && t._registeredComponents.add(r) }, c._ssrRegister = u) : e && (u = a ? function (t) { e.call(this, l(t, this.$root.$options.shadowRoot)) } : function (t) { e.call(this, s(t)) }), u) if (c.functional) { var p = c.render; c.render = function (t, e) { return u.call(e), p(t, e) } } else { var d = c.beforeCreate; c.beforeCreate = d ? [].concat(d, u) : [u] } return i } var _, m = "undefined" !== typeof navigator && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase()); function g(t) { return function (t, e) { return y(t, e) } } var v = {}; function y(t, e) { var i = m ? e.media || "default" : t, n = v[i] || (v[i] = { ids: new Set, styles: [] }); if (!n.ids.has(t)) { n.ids.add(t); var o = e.source; if (e.map && (o += "\n/*# sourceURL=" + e.map.sources[0] + " */", o += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(e.map)))) + " */"), n.element || (n.element = document.createElement("style"), n.element.type = "text/css", e.media && n.element.setAttribute("media", e.media), void 0 === _ && (_ = document.head || document.getElementsByTagName("head")[0]), _.appendChild(n.element)), "styleSheet" in n.element) n.styles.push(o), n.element.styleSheet.cssText = n.styles.filter(Boolean).join("\n"); else { var r = n.ids.size - 1, a = document.createTextNode(o), s = n.element.childNodes; s[r] && n.element.removeChild(s[r]), s.length ? n.element.insertBefore(a, s[r]) : n.element.appendChild(a) } } } var b = d, L = function () { var t = this, e = t.$createElement, i = t._self._c || e; return i("div", { staticClass: "vue2leaflet-map" }, [t.ready ? t._t("default") : t._e()], 2) }, w = [], x = function (t) { t && t("data-v-09f270aa_0", { source: ".vue2leaflet-map{height:100%;width:100%}", map: void 0, media: void 0 }) }, k = void 0, M = void 0, P = !1, C = f({ render: L, staticRenderFns: w }, x, b, k, P, M, !1, g, void 0, void 0), T = C, S = function (t) { return t && "function" === typeof t.charAt ? t.charAt(0).toUpperCase() + t.slice(1) : t }, O = function (t, e, i, n) { var o = function (n) { var o = "set" + S(n), a = i[n].type === Object || i[n].type === Array || Array.isArray(i[n].type); i[n].custom && t[o] ? t.$watch(n, (function (e, i) { t[o](e, i) }), { deep: a }) : "setOptions" === o ? t.$watch(n, (function (t, i) { Object(r["setOptions"])(e, t) }), { deep: a }) : e[o] && t.$watch(n, (function (t, i) { e[o](t) }), { deep: a }) }; for (var a in i) o(a) }, E = function (t) { var e = {}; for (var i in t) { var n = t[i]; null !== n && void 0 !== n && (e[i] = n) } return e }, B = function (t, e) { var i = e.options && e.options.constructor === Object ? e.options : {}; t = t && t.constructor === Object ? t : {}; var n = E(i); t = E(t); var o = e.$options.props; for (var r in t) { var a = o[r] ? o[r].default && "function" === typeof o[r].default ? o[r].default.call() : o[r].default : Symbol("unique"), s = !1; s = Array.isArray(a) ? JSON.stringify(a) === JSON.stringify(t[r]) : a === t[r], n[r] && !s ? (console.warn(r + " props is overriding the value passed in the options props"), n[r] = t[r]) : n[r] || (n[r] = t[r]) } return n }, z = function (t) { var e = !1; while (t && !e) void 0 === t.mapObject ? t = t.$parent : e = !0; return t }, j = { props: { pane: { type: String, default: "overlayPane" }, attribution: { type: String, default: null, custom: !0 }, name: { type: String, custom: !0, default: void 0 }, layerType: { type: String, custom: !0, default: void 0 }, visible: { type: Boolean, custom: !0, default: !0 } }, mounted: function () { this.layerOptions = { attribution: this.attribution, pane: this.pane } }, beforeDestroy: function () { this.unbindPopup(), this.unbindTooltip(), this.parentContainer.removeLayer(this) }, methods: { setAttribution: function (t, e) { var i = this.$parent.mapObject.attributionControl; i.removeAttribution(e).addAttribution(t) }, setName: function () { this.parentContainer.removeLayer(this), this.visible && this.parentContainer.addLayer(this) }, setLayerType: function () { this.parentContainer.removeLayer(this), this.visible && this.parentContainer.addLayer(this) }, setVisible: function (t) { this.mapObject && (t ? this.parentContainer.addLayer(this) : this.parentContainer.hideLayer ? this.parentContainer.hideLayer(this) : this.parentContainer.removeLayer(this)) }, unbindTooltip: function () { var t = this.mapObject ? this.mapObject.getTooltip() : null; t && t.unbindTooltip() }, unbindPopup: function () { var t = this.mapObject ? this.mapObject.getPopup() : null; t && t.unbindPopup() }, updateVisibleProp: function (t) { this.$emit("update:visible", t) } } }, I = { mixins: [j], props: { pane: { type: String, default: "tilePane" }, opacity: { type: Number, custom: !1, default: 1 }, zIndex: { type: Number, default: 1 }, tileSize: { type: Number, default: 256 }, noWrap: { type: Boolean, default: !1 } }, mounted: function () { this.gridLayerOptions = Object.assign({}, this.layerOptions, { pane: this.pane, opacity: this.opacity, zIndex: this.zIndex, tileSize: this.tileSize, noWrap: this.noWrap }) } }, A = { mixins: [I], props: { tms: { type: Boolean, default: !1 }, subdomains: { type: [String, Array], default: "abc", validator: function (t) { return "string" === typeof t || !!Array.isArray(t) && t.every((function (t) { return "string" === typeof t })) } }, detectRetina: { type: Boolean, default: !1 } }, mounted: function () { this.tileLayerOptions = Object.assign({}, this.gridLayerOptions, { tms: this.tms, subdomains: this.subdomains, detectRetina: this.detectRetina }) }, render: function () { return null } }, R = { props: { options: { type: Object, default: function () { return {} } } } }, D = { name: "LTileLayer", mixins: [A, R], props: { url: { type: String, default: null }, tileLayerClass: { type: Function, default: r["tileLayer"] } }, mounted: function () { var t = this, e = B(this.tileLayerOptions, this); this.mapObject = this.tileLayerClass(this.url, e), r["DomEvent"].on(this.mapObject, this.$listeners), O(this, this.mapObject, this.$options.props), this.parentContainer = z(this.$parent), this.parentContainer.addLayer(this, !this.visible), this.$nextTick((function () { t.$emit("ready", t.mapObject) })) } }; function Z(t, e, i, n, o, r, a, s, h, l) { "boolean" !== typeof a && (h = s, s = a, a = !1); var u, c = "function" === typeof i ? i.options : i; if (t && t.render && (c.render = t.render, c.staticRenderFns = t.staticRenderFns, c._compiled = !0, o && (c.functional = !0)), n && (c._scopeId = n), r ? (u = function (t) { t = t || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext, t || "undefined" === typeof __VUE_SSR_CONTEXT__ || (t = __VUE_SSR_CONTEXT__), e && e.call(this, h(t)), t && t._registeredComponents && t._registeredComponents.add(r) }, c._ssrRegister = u) : e && (u = a ? function (t) { e.call(this, l(t, this.$root.$options.shadowRoot)) } : function (t) { e.call(this, s(t)) }), u) if (c.functional) { var p = c.render; c.render = function (t, e) { return u.call(e), p(t, e) } } else { var d = c.beforeCreate; c.beforeCreate = d ? [].concat(d, u) : [u] } return i } var N = D, G = function () { var t = this, e = t.$createElement, i = t._self._c || e; return i("div") }, F = [], H = void 0, V = void 0, U = void 0, q = !1, W = Z({ render: G, staticRenderFns: F }, H, N, V, q, U, !1, void 0, void 0, void 0), $ = W, K = function (t, e) { var i, n = function () { var n = [], o = arguments.length; while (o--) n[o] = arguments[o]; var r = this; i && clearTimeout(i), i = setTimeout((function () { t.apply(r, n), i = null }), e) }; return n.cancel = function () { i && clearTimeout(i) }, n }, J = function (t) { return t && "function" === typeof t.charAt ? t.charAt(0).toUpperCase() + t.slice(1) : t }, Y = function (t, e, i, n) { var o = function (n) { var o = "set" + J(n), a = i[n].type === Object || i[n].type === Array || Array.isArray(i[n].type); i[n].custom && t[o] ? t.$watch(n, (function (e, i) { t[o](e, i) }), { deep: a }) : "setOptions" === o ? t.$watch(n, (function (t, i) { Object(r["setOptions"])(e, t) }), { deep: a }) : e[o] && t.$watch(n, (function (t, i) { e[o](t) }), { deep: a }) }; for (var a in i) o(a) }, X = function (t) { var e = {}; for (var i in t) { var n = t[i]; null !== n && void 0 !== n && (e[i] = n) } return e }, Q = function (t, e) { var i = e.options && e.options.constructor === Object ? e.options : {}; t = t && t.constructor === Object ? t : {}; var n = X(i); t = X(t); var o = e.$options.props; for (var r in t) { var a = o[r] ? o[r].default && "function" === typeof o[r].default ? o[r].default.call() : o[r].default : Symbol("unique"), s = !1; s = Array.isArray(a) ? JSON.stringify(a) === JSON.stringify(t[r]) : a === t[r], n[r] && !s ? (console.warn(r + " props is overriding the value passed in the options props"), n[r] = t[r]) : n[r] || (n[r] = t[r]) } return n }, tt = function (t) { var e = !1; while (t && !e) void 0 === t.mapObject ? t = t.$parent : e = !0; return t }, et = { props: { pane: { type: String, default: "overlayPane" }, attribution: { type: String, default: null, custom: !0 }, name: { type: String, custom: !0, default: void 0 }, layerType: { type: String, custom: !0, default: void 0 }, visible: { type: Boolean, custom: !0, default: !0 } }, mounted: function () { this.layerOptions = { attribution: this.attribution, pane: this.pane } }, beforeDestroy: function () { this.unbindPopup(), this.unbindTooltip(), this.parentContainer.removeLayer(this) }, methods: { setAttribution: function (t, e) { var i = this.$parent.mapObject.attributionControl; i.removeAttribution(e).addAttribution(t) }, setName: function () { this.parentContainer.removeLayer(this), this.visible && this.parentContainer.addLayer(this) }, setLayerType: function () { this.parentContainer.removeLayer(this), this.visible && this.parentContainer.addLayer(this) }, setVisible: function (t) { this.mapObject && (t ? this.parentContainer.addLayer(this) : this.parentContainer.hideLayer ? this.parentContainer.hideLayer(this) : this.parentContainer.removeLayer(this)) }, unbindTooltip: function () { var t = this.mapObject ? this.mapObject.getTooltip() : null; t && t.unbindTooltip() }, unbindPopup: function () { var t = this.mapObject ? this.mapObject.getPopup() : null; t && t.unbindPopup() }, updateVisibleProp: function (t) { this.$emit("update:visible", t) } } }, it = { props: { options: { type: Object, default: function () { return {} } } } }, nt = { name: "LMarker", mixins: [et, it], props: { pane: { type: String, default: "markerPane" }, draggable: { type: Boolean, custom: !0, default: !1 }, latLng: { type: [Object, Array], custom: !0, default: null }, icon: { type: [Object], custom: !1, default: function () { return new r["Icon"].Default } }, opacity: { type: Number, custom: !1, default: 1 }, zIndexOffset: { type: Number, custom: !1, default: null } }, data: function () { return { ready: !1 } }, beforeDestroy: function () { this.debouncedLatLngSync && this.debouncedLatLngSync.cancel() }, mounted: function () { var t = this, e = Q(Object.assign({}, this.layerOptions, { icon: this.icon, zIndexOffset: this.zIndexOffset, draggable: this.draggable, opacity: this.opacity }), this); this.mapObject = Object(r["marker"])(this.latLng, e), r["DomEvent"].on(this.mapObject, this.$listeners), this.debouncedLatLngSync = K(this.latLngSync, 100), this.mapObject.on("move", this.debouncedLatLngSync), Y(this, this.mapObject, this.$options.props), this.parentContainer = tt(this.$parent), this.parentContainer.addLayer(this, !this.visible), this.ready = !0, this.$nextTick((function () { t.$emit("ready", t.mapObject) })) }, methods: { setDraggable: function (t, e) { this.mapObject.dragging && (t ? this.mapObject.dragging.enable() : this.mapObject.dragging.disable()) }, setLatLng: function (t) { if (null != t && this.mapObject) { var e = this.mapObject.getLatLng(), i = Object(r["latLng"])(t); i.lat === e.lat && i.lng === e.lng || this.mapObject.setLatLng(i) } }, latLngSync: function (t) { this.$emit("update:latLng", t.latlng), this.$emit("update:lat-lng", t.latlng) } }, render: function (t) { return this.ready && this.$slots.default ? t("div", { style: { display: "none" } }, this.$slots.default) : null } }; function ot(t, e, i, n, o, r, a, s, h, l) { "boolean" !== typeof a && (h = s, s = a, a = !1); var u, c = "function" === typeof i ? i.options : i; if (t && t.render && (c.render = t.render, c.staticRenderFns = t.staticRenderFns, c._compiled = !0, o && (c.functional = !0)), n && (c._scopeId = n), r ? (u = function (t) { t = t || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext, t || "undefined" === typeof __VUE_SSR_CONTEXT__ || (t = __VUE_SSR_CONTEXT__), e && e.call(this, h(t)), t && t._registeredComponents && t._registeredComponents.add(r) }, c._ssrRegister = u) : e && (u = a ? function (t) { e.call(this, l(t, this.$root.$options.shadowRoot)) } : function (t) { e.call(this, s(t)) }), u) if (c.functional) { var p = c.render; c.render = function (t, e) { return u.call(e), p(t, e) } } else { var d = c.beforeCreate; c.beforeCreate = d ? [].concat(d, u) : [u] } return i } var rt = nt, at = void 0, st = void 0, ht = void 0, lt = void 0, ut = ot({}, at, rt, st, lt, ht, !1, void 0, void 0, void 0), ct = ut, pt = function (t) { return t && "function" === typeof t.charAt ? t.charAt(0).toUpperCase() + t.slice(1) : t }, dt = function (t, e, i, n) { var o = function (n) { var o = "set" + pt(n), a = i[n].type === Object || i[n].type === Array || Array.isArray(i[n].type); i[n].custom && t[o] ? t.$watch(n, (function (e, i) { t[o](e, i) }), { deep: a }) : "setOptions" === o ? t.$watch(n, (function (t, i) { Object(r["setOptions"])(e, t) }), { deep: a }) : e[o] && t.$watch(n, (function (t, i) { e[o](t) }), { deep: a }) }; for (var a in i) o(a) }, ft = function (t) { var e = {}; for (var i in t) { var n = t[i]; null !== n && void 0 !== n && (e[i] = n) } return e }, _t = function (t, e) { var i = e.options && e.options.constructor === Object ? e.options : {}; t = t && t.constructor === Object ? t : {}; var n = ft(i); t = ft(t); var o = e.$options.props; for (var r in t) { var a = o[r] ? o[r].default && "function" === typeof o[r].default ? o[r].default.call() : o[r].default : Symbol("unique"), s = !1; s = Array.isArray(a) ? JSON.stringify(a) === JSON.stringify(t[r]) : a === t[r], n[r] && !s ? (console.warn(r + " props is overriding the value passed in the options props"), n[r] = t[r]) : n[r] || (n[r] = t[r]) } return n }, mt = { props: { position: { type: String, default: "topright" } }, mounted: function () { this.controlOptions = { position: this.position } }, beforeDestroy: function () { this.mapObject && this.mapObject.remove() } }, gt = { props: { options: { type: Object, default: function () { return {} } } } }, vt = { name: "LControlLayers", mixins: [mt, gt], props: { collapsed: { type: Boolean, default: !0 }, autoZIndex: { type: Boolean, default: !0 }, hideSingleBase: { type: Boolean, default: !1 }, sortLayers: { type: Boolean, default: !1 }, sortFunction: { type: Function, default: void 0 } }, mounted: function () { var t = this, e = _t(Object.assign({}, this.controlOptions, { collapsed: this.collapsed, autoZIndex: this.autoZIndex, hideSingleBase: this.hideSingleBase, sortLayers: this.sortLayers, sortFunction: this.sortFunction }), this); this.mapObject = r["control"].layers(null, null, e), dt(this, this.mapObject, this.$options.props), this.$parent.registerLayerControl(this), this.$nextTick((function () { t.$emit("ready", t.mapObject) })) }, methods: { addLayer: function (t) { "base" === t.layerType ? this.mapObject.addBaseLayer(t.mapObject, t.name) : "overlay" === t.layerType && this.mapObject.addOverlay(t.mapObject, t.name) }, removeLayer: function (t) { this.mapObject.removeLayer(t.mapObject) } }, render: function () { return null } }; function yt(t, e, i, n, o, r, a, s, h, l) { "boolean" !== typeof a && (h = s, s = a, a = !1); var u, c = "function" === typeof i ? i.options : i; if (t && t.render && (c.render = t.render, c.staticRenderFns = t.staticRenderFns, c._compiled = !0, o && (c.functional = !0)), n && (c._scopeId = n), r ? (u = function (t) { t = t || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext, t || "undefined" === typeof __VUE_SSR_CONTEXT__ || (t = __VUE_SSR_CONTEXT__), e && e.call(this, h(t)), t && t._registeredComponents && t._registeredComponents.add(r) }, c._ssrRegister = u) : e && (u = a ? function (t) { e.call(this, l(t, this.$root.$options.shadowRoot)) } : function (t) { e.call(this, s(t)) }), u) if (c.functional) { var p = c.render; c.render = function (t, e) { return u.call(e), p(t, e) } } else { var d = c.beforeCreate; c.beforeCreate = d ? [].concat(d, u) : [u] } return i } var bt = vt, Lt = void 0, wt = void 0, xt = void 0, kt = void 0, Mt = yt({}, Lt, bt, wt, kt, xt, !1, void 0, void 0, void 0), Pt = Mt, Ct = (i("6cc5"), i("5092"), i("9a51"), { name: "Map", components: { LMap: T, LTileLayer: $, LMarker: ct, LControlLayers: Pt }, data: function () { return { map: "", drawerVisible: !1, geosjonData: "" } }, mounted: function () { this.initMap(), this.initMapPm(), this.getlatLngs() }, methods: { initMap: function () { this.map = a.a.map("map", { center: [39.064576, 117.06969], zoom: 15, zoomControl: !0, doubleClickZoom: !0, attributionControl: !1 }); var t = { "楂樺痉/鍗槦": a.a.layerGroup([a.a.tileLayer("https://webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}", { maxZoom: 20, maxNativeZoom: 18, minZoom: 3, attribution: "楂樺痉鍦板浘 AutoNavi.com", subdomains: "1234" }), a.a.tileLayer("https://webst0{s}.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}", { maxZoom: 20, maxNativeZoom: 18, minZoom: 3, attribution: "楂樺痉鍦板浘 AutoNavi.com", subdomains: "1234", opacity: .5 })]).addTo(this.map), "楂樺痉/琛楅亾": a.a.tileLayer("https://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}", { maxZoom: 20, maxNativeZoom: 18, minZoom: 3, attribution: "楂樺痉鍦板浘 AutoNavi.com", subdomains: "1234" }), "鏅哄浘/琛楅亾": a.a.tileLayer("https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}", { maxZoom: 20, maxNativeZoom: 16, minZoom: 3, attribution: "鏅哄浘 GeoQ.cn" }) }; a.a.control.layers(t, {}, { position: "topright", collapsed: !0 }).addTo(this.map) }, initMapPm: function () { this.map.pm.addControls({ position: "topleft", drawPolygon: !0, drawMarker: !0, drawCircleMarker: !0, drawPolyline: !0, drawRectangle: !0, drawCircle: !0, editMode: !0, dragMode: !0, cutPolygon: !0, removalMode: !0 }), this.map.pm.setPathOptions({ color: "orange", fillColor: "green", fillOpacity: .4 }), this.map.pm.setLang("zh") }, getlatLngs: function () { var t = this; this.map.on("pm:drawstart", (function (t) { })), this.map.on("pm:drawend", (function (t) { })), this.map.on("pm:create", (function (e) { t.GetGeoJson() })) }, GetGeoJson: function () { var t = []; this.map.eachLayer((function (e) { "undefined" !== e.pm && null != e.pm && "" !== e.pm && !1 === e.pm._enabled && !0 === e.pm.options.draggable && t.push(e) })); for (var e = a.a.layerGroup(t).toGeoJSON(), i = 0; i < e.features.length; i++)for (var n = JSON.stringify(e.features[i]), o = i + 1; o < e.features.length; o++) { var r = JSON.stringify(e.features[o]); n === r && e.features.splice(i, 1) } return this.drawerVisible = !0, this.geosjonData = e, e }, onCloseDrawer: function () { this.drawerVisible = !1 } } }), Tt = Ct, St = (i("3d2d"), i("2877")), Ot = Object(St["a"])(Tt, n, o, !1, null, null, null); e["default"] = Ot.exports }, "3d2d": function (t, e, i) { "use strict"; i("a3cb") }, 5092: function (t, e) { !function (t) { var e = {}; function i(n) { if (e[n]) return e[n].exports; var o = e[n] = { i: n, l: !1, exports: {} }; return t[n].call(o.exports, o, o.exports, i), o.l = !0, o.exports } i.m = t, i.c = e, i.d = function (t, e, n) { i.o(t, e) || Object.defineProperty(t, e, { configurable: !1, enumerable: !0, get: n }) }, i.n = function (t) { var e = t && t.__esModule ? function () { return t["default"] } : function () { return t }; return i.d(e, "a", e), e }, i.o = function (t, e) { return Object.prototype.hasOwnProperty.call(t, e) }, i.p = "", i(i.s = 46) }([function (t, e, i) { "use strict"; e.a = function (t) { var e = L.PM.activeLang; return a()(s.a, e) || (e = "en"), o()(s.a[e], t) }, e.b = function (t) { return !function t(e) { return e.filter((function (t) { return ![null, "", void 0].includes(t) })).reduce((function (e, i) { return e.concat(Array.isArray(i) ? t(i) : i) }), []) }(t).length }; var n = i(37), o = i.n(n), r = i(138), a = i.n(r), s = i(36) }, function (t, e, i) { "use strict"; var n = i(40), o = L.Class.extend({ includes: [n.a], options: { snappable: !0, snapDistance: 20, tooltips: !0, cursorMarker: !0, finishOnDoubleClick: !1, finishOn: null, allowSelfIntersection: !0, templineStyle: {}, hintlineStyle: { color: "#3388ff", dashArray: "5,5" }, markerStyle: { draggable: !0 } }, initialize: function (t) { var e = this; this._map = t, this.shapes = ["Marker", "CircleMarker", "Line", "Polygon", "Rectangle", "Circle", "Cut"], this.shapes.forEach((function (t) { e[t] = new L.PM.Draw[t](e._map) })) }, setPathOptions: function (t) { this.options.pathOptions = t }, getShapes: function () { return this.shapes }, enable: function (t, e) { if (!t) throw new Error("Error: Please pass a shape as a parameter. Possible shapes are: ".concat(this.getShapes().join(","))); this.disable(), this[t].enable(e) }, disable: function () { var t = this; this.shapes.forEach((function (e) { t[e].disable() })) }, addControls: function () { var t = this; this.shapes.forEach((function (e) { t[e].addButton() })) } }); e.a = o }, function (t, e, i) { "use strict"; var n = i(40), o = i(151), r = L.Class.extend({ includes: [o.a, n.a], options: { snappable: !0, snapDistance: 20, allowSelfIntersection: !0, draggable: !0 }, isPolygon: function () { return this._layer instanceof L.Polygon } }); e.a = r }, function (t, e) { t.exports = function (t) { var e = typeof t; return null != t && ("object" == e || "function" == e) } }, function (t, e, i) { var n = i(25), o = "object" == typeof self && self && self.Object === Object && self, r = n || o || Function("return this")(); t.exports = r }, function (t, e) { t.exports = function (t) { return null != t && "object" == typeof t } }, function (t, e) { var i = Array.isArray; t.exports = i }, function (t, e, i) { var n = i(16), o = i(66), r = i(67), a = "[object Null]", s = "[object Undefined]", h = n ? n.toStringTag : void 0; t.exports = function (t) { return null == t ? void 0 === t ? s : a : h && h in Object(t) ? o(t) : r(t) } }, function (t, e, i) { "use strict"; function n(t, e, i) { void 0 === i && (i = {}); var n = { type: "Feature" }; return (0 === i.id || i.id) && (n.id = i.id), i.bbox && (n.bbox = i.bbox), n.properties = e || {}, n.geometry = t, n } function o(t, e, i) { return void 0 === i && (i = {}), n({ type: "Point", coordinates: t }, e, i) } function r(t, e, i) { void 0 === i && (i = {}); for (var o = 0, r = t; o < r.length; o++) { var a = r[o]; if (a.length < 4) throw new Error("Each LinearRing of a Polygon must have 4 or more Positions."); for (var s = 0; s < a[a.length - 1].length; s++)if (a[a.length - 1][s] !== a[0][s]) throw new Error("First and last Position are not equivalent.") } return n({ type: "Polygon", coordinates: t }, e, i) } function a(t, e, i) { if (void 0 === i && (i = {}), t.length < 2) throw new Error("coordinates must be an array of two or more positions"); return n({ type: "LineString", coordinates: t }, e, i) } function s(t, e) { void 0 === e && (e = {}); var i = { type: "FeatureCollection" }; return e.id && (i.id = e.id), e.bbox && (i.bbox = e.bbox), i.features = t, i } function h(t, e, i) { return void 0 === i && (i = {}), n({ type: "MultiLineString", coordinates: t }, e, i) } function l(t, e, i) { return void 0 === i && (i = {}), n({ type: "MultiPoint", coordinates: t }, e, i) } function u(t, e, i) { return void 0 === i && (i = {}), n({ type: "MultiPolygon", coordinates: t }, e, i) } function c(t, i) { void 0 === i && (i = "kilometers"); var n = e.factors[i]; if (!n) throw new Error(i + " units is invalid"); return t * n } function p(t, i) { void 0 === i && (i = "kilometers"); var n = e.factors[i]; if (!n) throw new Error(i + " units is invalid"); return t / n } function d(t) { return t % (2 * Math.PI) * 180 / Math.PI } function f(t) { return !isNaN(t) && null !== t && !Array.isArray(t) && !/^\s*$/.test(t) } Object.defineProperty(e, "__esModule", { value: !0 }), e.earthRadius = 6371008.8, e.factors = { centimeters: 100 * e.earthRadius, centimetres: 100 * e.earthRadius, degrees: e.earthRadius / 111325, feet: 3.28084 * e.earthRadius, inches: 39.37 * e.earthRadius, kilometers: e.earthRadius / 1e3, kilometres: e.earthRadius / 1e3, meters: e.earthRadius, metres: e.earthRadius, miles: e.earthRadius / 1609.344, millimeters: 1e3 * e.earthRadius, millimetres: 1e3 * e.earthRadius, nauticalmiles: e.earthRadius / 1852, radians: 1, yards: e.earthRadius / 1.0936 }, e.unitsFactors = { centimeters: 100, centimetres: 100, degrees: 1 / 111325, feet: 3.28084, inches: 39.37, kilometers: .001, kilometres: .001, meters: 1, metres: 1, miles: 1 / 1609.344, millimeters: 1e3, millimetres: 1e3, nauticalmiles: 1 / 1852, radians: 1 / e.earthRadius, yards: 1 / 1.0936 }, e.areaFactors = { acres: 247105e-9, centimeters: 1e4, centimetres: 1e4, feet: 10.763910417, inches: 1550.003100006, kilometers: 1e-6, kilometres: 1e-6, meters: 1, metres: 1, miles: 386e-9, millimeters: 1e6, millimetres: 1e6, yards: 1.195990046 }, e.feature = n, e.geometry = function (t, e, i) { switch (void 0 === i && (i = {}), t) { case "Point": return o(e).geometry; case "LineString": return a(e).geometry; case "Polygon": return r(e).geometry; case "MultiPoint": return l(e).geometry; case "MultiLineString": return h(e).geometry; case "MultiPolygon": return u(e).geometry; default: throw new Error(t + " is invalid") } }, e.point = o, e.points = function (t, e, i) { return void 0 === i && (i = {}), s(t.map((function (t) { return o(t, e) })), i) }, e.polygon = r, e.polygons = function (t, e, i) { return void 0 === i && (i = {}), s(t.map((function (t) { return r(t, e) })), i) }, e.lineString = a, e.lineStrings = function (t, e, i) { return void 0 === i && (i = {}), s(t.map((function (t) { return a(t, e) })), i) }, e.featureCollection = s, e.multiLineString = h, e.multiPoint = l, e.multiPolygon = u, e.geometryCollection = function (t, e, i) { return void 0 === i && (i = {}), n({ type: "GeometryCollection", geometries: t }, e, i) }, e.round = function (t, e) { if (void 0 === e && (e = 0), e && !(e >= 0)) throw new Error("precision must be a positive number"); var i = Math.pow(10, e || 0); return Math.round(t * i) / i }, e.radiansToLength = c, e.lengthToRadians = p, e.lengthToDegrees = function (t, e) { return d(p(t, e)) }, e.bearingToAzimuth = function (t) { var e = t % 360; return e < 0 && (e += 360), e }, e.radiansToDegrees = d, e.degreesToRadians = function (t) { return t % 360 * Math.PI / 180 }, e.convertLength = function (t, e, i) { if (void 0 === e && (e = "kilometers"), void 0 === i && (i = "kilometers"), !(t >= 0)) throw new Error("length must be a positive number"); return c(p(t, e), i) }, e.convertArea = function (t, i, n) { if (void 0 === i && (i = "meters"), void 0 === n && (n = "kilometers"), !(t >= 0)) throw new Error("area must be a positive number"); var o = e.areaFactors[i]; if (!o) throw new Error("invalid original units"); var r = e.areaFactors[n]; if (!r) throw new Error("invalid final units"); return t / o * r }, e.isNumber = f, e.isObject = function (t) { return !!t && t.constructor === Object }, e.validateBBox = function (t) { if (!t) throw new Error("bbox is required"); if (!Array.isArray(t)) throw new Error("bbox must be an Array"); if (4 !== t.length && 6 !== t.length) throw new Error("bbox must be an Array of 4 or 6 numbers"); t.forEach((function (t) { if (!f(t)) throw new Error("bbox must only contain numbers") })) }, e.validateId = function (t) { if (!t) throw new Error("id is required"); if (-1 === ["string", "number"].indexOf(typeof t)) throw new Error("id must be a number or a string") }, e.radians2degrees = function () { throw new Error("method has been renamed to `radiansToDegrees`") }, e.degrees2radians = function () { throw new Error("method has been renamed to `degreesToRadians`") }, e.distanceToDegrees = function () { throw new Error("method has been renamed to `lengthToDegrees`") }, e.distanceToRadians = function () { throw new Error("method has been renamed to `lengthToRadians`") }, e.radiansToDistance = function () { throw new Error("method has been renamed to `radiansToLength`") }, e.bearingToAngle = function () { throw new Error("method has been renamed to `bearingToAzimuth`") }, e.convertDistance = function () { throw new Error("method has been renamed to `convertLength`") } }, function (t, e, i) { var n = i(54), o = i(55), r = i(56), a = i(57), s = i(58); function h(t) { var e = -1, i = null == t ? 0 : t.length; for (this.clear(); ++e < i;) { var n = t[e]; this.set(n[0], n[1]) } } h.prototype.clear = n, h.prototype["delete"] = o, h.prototype.get = r, h.prototype.has = a, h.prototype.set = s, t.exports = h }, function (t, e, i) { var n = i(11); t.exports = function (t, e) { for (var i = t.length; i--;)if (n(t[i][0], e)) return i; return -1 } }, function (t, e) { t.exports = function (t, e) { return t === e || t != t && e != e } }, function (t, e, i) { var n = i(14)(Object, "create"); t.exports = n }, function (t, e, i) { var n = i(80); t.exports = function (t, e) { var i = t.__data__; return n(e) ? i["string" == typeof e ? "string" : "hash"] : i.map } }, function (t, e, i) { var n = i(64), o = i(71); t.exports = function (t, e) { var i = o(t, e); return n(i) ? i : void 0 } }, function (t, e, i) { var n = i(7), o = i(3), r = "[object AsyncFunction]", a = "[object Function]", s = "[object GeneratorFunction]", h = "[object Proxy]"; t.exports = function (t) { if (!o(t)) return !1; var e = n(t); return e == a || e == s || e == r || e == h } }, function (t, e, i) { var n = i(4).Symbol; t.exports = n }, function (t, e, i) { var n = i(28); t.exports = function (t, e, i) { "__proto__" == e && n ? n(t, e, { configurable: !0, enumerable: !0, value: i, writable: !0 }) : t[e] = i } }, function (t, e) { t.exports = function (t) { return t.webpackPolyfill || (t.deprecate = function () { }, t.paths = [], t.children || (t.children = []), Object.defineProperty(t, "loaded", { enumerable: !0, get: function () { return t.l } }), Object.defineProperty(t, "id", { enumerable: !0, get: function () { return t.i } }), t.webpackPolyfill = 1), t } }, function (t, e, i) { var n = i(95), o = i(5), r = Object.prototype, a = r.hasOwnProperty, s = r.propertyIsEnumerable, h = n(function () { return arguments }()) ? n : function (t) { return o(t) && a.call(t, "callee") && !s.call(t, "callee") }; t.exports = h }, function (t, e, i) { var n = i(15), o = i(21); t.exports = function (t) { return null != t && o(t.length) && !n(t) } }, function (t, e) { var i = 9007199254740991; t.exports = function (t) { return "number" == typeof t && t > -1 && t % 1 == 0 && t <= i } }, function (t, e) { var i = 9007199254740991, n = /^(?:0|[1-9]\d*)$/; t.exports = function (t, e) { var o = typeof t; return !!(e = null == e ? i : e) && ("number" == o || "symbol" != o && n.test(t)) && t > -1 && t % 1 == 0 && t < e } }, function (t, e, i) { var n = i(7), o = i(5), r = "[object Symbol]"; t.exports = function (t) { return "symbol" == typeof t || o(t) && n(t) == r } }, function (t, e, i) { var n = i(14)(i(4), "Map"); t.exports = n }, function (t, e, i) { (function (e) { var i = "object" == typeof e && e && e.Object === Object && e; t.exports = i }).call(e, i(65)) }, function (t, e, i) { var n = i(72), o = i(79), r = i(81), a = i(82), s = i(83); function h(t) { var e = -1, i = null == t ? 0 : t.length; for (this.clear(); ++e < i;) { var n = t[e]; this.set(n[0], n[1]) } } h.prototype.clear = n, h.prototype["delete"] = o, h.prototype.get = r, h.prototype.has = a, h.prototype.set = s, t.exports = h }, function (t, e, i) { var n = i(17), o = i(11); t.exports = function (t, e, i) { (void 0 === i || o(t[e], i)) && (void 0 !== i || e in t) || n(t, e, i) } }, function (t, e, i) { var n = i(14), o = function () { try { var t = n(Object, "defineProperty"); return t({}, "", {}), t } catch (e) { } }(); t.exports = o }, function (t, e, i) { var n = i(94)(Object.getPrototypeOf, Object); t.exports = n }, function (t, e) { var i = Object.prototype; t.exports = function (t) { var e = t && t.constructor; return t === ("function" == typeof e && e.prototype || i) } }, function (t, e, i) { (function (t) { var n = i(4), o = i(97), r = "object" == typeof e && e && !e.nodeType && e, a = r && "object" == typeof t && t && !t.nodeType && t, s = a && a.exports === r ? n.Buffer : void 0, h = (s ? s.isBuffer : void 0) || o; t.exports = h }).call(e, i(18)(t)) }, function (t, e, i) { var n = i(99), o = i(100), r = i(101), a = r && r.isTypedArray, s = a ? o(a) : n; t.exports = s }, function (t, e) { t.exports = function (t, e) { if (("constructor" !== e || "function" != typeof t[e]) && "__proto__" != e) return t[e] } }, function (t, e, i) { var n = i(105), o = i(107), r = i(20); t.exports = function (t) { return r(t) ? n(t, !0) : o(t) } }, function (t, e) { t.exports = function (t) { return t } }, function (t, e, i) { "use strict"; var n = i(118), o = i.n(n), r = i(119), a = i.n(r), s = i(120), h = i.n(s), l = i(121), u = i.n(l), c = i(122), p = i.n(c), d = i(123), f = i.n(d), _ = i(124), m = i.n(_), g = i(125), v = i.n(g), y = i(126), b = i.n(y), L = i(127), w = i.n(L); e.a = { en: o.a, de: a.a, it: h.a, ro: u.a, ru: p.a, es: f.a, nl: m.a, fr: v.a, pt_br: w.a, zh: b.a } }, function (t, e, i) { var n = i(130); t.exports = function (t, e, i) { var o = null == t ? void 0 : n(t, e); return void 0 === o ? i : o } }, function (t, e, i) { var n = i(6), o = i(131), r = i(132), a = i(135); t.exports = function (t, e) { return n(t) ? t : o(t, e) ? [t] : r(a(t)) } }, function (t, e, i) { var n = i(23), o = 1 / 0; t.exports = function (t) { if ("string" == typeof t || n(t)) return t; var e = t + ""; return "0" == e && 1 / t == -o ? "-0" : e } }, function (t, e, i) { "use strict"; var n = i(41), o = { _initSnappableMarkers: function () { this.options.snapDistance = this.options.snapDistance || 30, this._assignEvents(this._markers), this._layer.off("pm:dragstart", this._unsnap, this), this._layer.on("pm:dragstart", this._unsnap, this) }, _assignEvents: function (t) { var e = this; t.forEach((function (t) { Array.isArray(t) ? e._assignEvents(t) : (t.off("drag", e._handleSnapping, e), t.on("drag", e._handleSnapping, e), t.off("dragend", e._cleanupSnapping, e), t.on("dragend", e._cleanupSnapping, e)) })) }, _unsnap: function () { delete this._snapLatLng }, _cleanupSnapping: function () { delete this._snapList, this._map.off("pm:remove", this._handleSnapLayerRemoval, this), this.debugIndicatorLines && this.debugIndicatorLines.forEach((function (t) { t.remove() })) }, _handleSnapLayerRemoval: function (t) { var e = t.layer, i = this._snapList.findIndex((function (t) { return t._leaflet_id === e._leaflet_id })); this._snapList.splice(i, 1) }, _handleSnapping: function (t) { var e = this; if (t.originalEvent.altKey) return !1; if (void 0 === this._snapList && this._createSnapList(t), this._snapList.length <= 0) return !1; var i, n = t.target, o = this._calcClosestLayer(n.getLatLng(), this._snapList), r = o.layer instanceof L.Marker || o.layer instanceof L.CircleMarker; i = r ? o.latlng : this._checkPrioritiySnapping(o); var a = this.options.snapDistance, s = { marker: n, snapLatLng: i, segment: o.segment, layer: this._layer, layerInteractedWith: o.layer, distance: o.distance }; if (s.marker.fire("pm:snapdrag", s), this._layer.fire("pm:snapdrag", s), o.distance < a) { n.setLatLng(i), n._snapped = !0; var h = this._snapLatLng || {}, l = i || {}; h.lat === l.lat && h.lng === l.lng || (e._snapLatLng = i, n.fire("pm:snap", s), e._layer.fire("pm:snap", s)) } else this._snapLatLng && (this._unsnap(s), n._snapped = !1, s.marker.fire("pm:unsnap", s), this._layer.fire("pm:unsnap", s)); return !0 }, _checkPrioritiySnapping: function (t) { var e, i = this._map, o = t.segment[0], r = t.segment[1], a = t.latlng, s = this._getDistance(i, o, a), h = this._getDistance(i, r, a), l = s < h ? o : r, u = s < h ? s : h; if (this.options.snapMiddle) { var c = n.a.calcMiddleLatLng(i, o, r), p = this._getDistance(i, c, a); p < s && p < h && (l = c, u = p) } return e = u < this.options.snapDistance ? l : a, Object.assign({}, e) }, _createSnapList: function () { var t = this, e = [], i = [], n = this._map; n.off("pm:remove", this._handleSnapLayerRemoval, this), n.on("pm:remove", this._handleSnapLayerRemoval, this), n.eachLayer((function (t) { if ((t instanceof L.Polyline || t instanceof L.Marker || t instanceof L.CircleMarker) && !0 !== t.options.snapIgnore) { e.push(t); var n = L.polyline([], { color: "red", pmIgnore: !0 }); n._pmTempLayer = !0, i.push(n) } })), e = (e = (e = e.filter((function (e) { return t._layer !== e }))).filter((function (t) { return t._latlng || t._latlngs && t._latlngs.length > 0 }))).filter((function (t) { return !t._pmTempLayer })), this._otherSnapLayers ? this._snapList = e.concat(this._otherSnapLayers) : this._snapList = e, this.debugIndicatorLines = i }, _calcClosestLayer: function (t, e) { var i = this, n = {}; return e.forEach((function (e, o) { var r = i._calcLayerDistances(t, e); i.debugIndicatorLines[o].setLatLngs([t, r.latlng]), (void 0 === n.distance || r.distance < n.distance) && ((n = r).layer = e) })), n }, _calcLayerDistances: function (t, e) { var i, n, o = this, r = this._map, a = e instanceof L.Marker || e instanceof L.CircleMarker, s = e instanceof L.Polygon, h = t, l = a ? e.getLatLng() : e.getLatLngs(); if (a) return { latlng: Object.assign({}, l), distance: this._getDistance(r, l, h) }; !function t(e) { e.forEach((function (a, l) { if (Array.isArray(a)) t(a); else { var u, c = a; u = s ? l + 1 === e.length ? 0 : l + 1 : l + 1 === e.length ? void 0 : l + 1; var p = e[u]; if (p) { var d = o._getDistanceToSegment(r, h, c, p); (void 0 === n || d < n) && (n = d, i = [c, p]) } } })) }(l); var u = this._getClosestPointOnSegment(r, t, i[0], i[1]); return { latlng: Object.assign({}, u), segment: i, distance: n } }, _getClosestPointOnSegment: function (t, e, i, n) { var o = t.getMaxZoom(); o === 1 / 0 && (o = t.getZoom()); var r = t.project(e, o), a = t.project(i, o), s = t.project(n, o), h = L.LineUtil.closestPointOnSegment(r, a, s); return t.unproject(h, o) }, _getDistanceToSegment: function (t, e, i, n) { var o = t.latLngToLayerPoint(e), r = t.latLngToLayerPoint(i), a = t.latLngToLayerPoint(n); return L.LineUtil.pointToSegmentDistance(o, r, a) }, _getDistance: function (t, e, i) { return t.latLngToLayerPoint(e).distanceTo(t.latLngToLayerPoint(i)) } }; e.a = o }, function (t, e, i) { "use strict"; e.a = { calcMiddleLatLng: function (t, e, i) { var n = t.project(e), o = t.project(i); return t.unproject(n._add(o)._divideBy(2)) } } }, function (t, e, i) { "use strict"; Object.defineProperty(e, "__esModule", { value: !0 }); var n = i(8); function o(t, e, i, n, o, r, a, s) { var h, l, u, c, p = { x: null, y: null, onLine1: !1, onLine2: !1 }; return 0 === (h = (s - r) * (i - t) - (a - o) * (n - e)) ? null !== p.x && null !== p.y && p : (c = (i - t) * (l = e - r) - (n - e) * (u = t - o), l = ((a - o) * l - (s - r) * u) / h, u = c / h, p.x = t + l * (i - t), p.y = e + l * (n - e), l >= 0 && l <= 1 && (p.onLine1 = !0), u >= 0 && u <= 1 && (p.onLine2 = !0), !(!p.onLine1 || !p.onLine2) && [p.x, p.y]) } e["default"] = function (t) { var e, i, r = { type: "FeatureCollection", features: [] }; if ("LineString" === (i = "Feature" === t.type ? t.geometry : t).type) e = [i.coordinates]; else if ("MultiLineString" === i.type) e = i.coordinates; else if ("MultiPolygon" === i.type) e = [].concat.apply([], i.coordinates); else { if ("Polygon" !== i.type) throw new Error("Input must be a LineString, MultiLineString, Polygon, or MultiPolygon Feature or Geometry"); e = i.coordinates } return e.forEach((function (t) { e.forEach((function (e) { for (var i = 0; i < t.length - 1; i++)for (var a = i; a < e.length - 1; a++) { if (t === e) { if (1 === Math.abs(i - a)) continue; if (0 === i && a === t.length - 2 && t[i][0] === t[t.length - 1][0] && t[i][1] === t[t.length - 1][1]) continue } var s = o(t[i][0], t[i][1], t[i + 1][0], t[i + 1][1], e[a][0], e[a][1], e[a + 1][0], e[a + 1][1]); s && r.features.push(n.point([s[0], s[1]])) } })) })), r } }, function (t, e, i) { "use strict"; Object.defineProperty(e, "__esModule", { value: !0 }); var n = i(8); e.getCoord = function (t) { if (!t) throw new Error("coord is required"); if (!Array.isArray(t)) { if ("Feature" === t.type && null !== t.geometry && "Point" === t.geometry.type) return t.geometry.coordinates; if ("Point" === t.type) return t.coordinates } if (Array.isArray(t) && t.length >= 2 && !Array.isArray(t[0]) && !Array.isArray(t[1])) return t; throw new Error("coord must be GeoJSON Point or an Array of numbers") }, e.getCoords = function (t) { if (Array.isArray(t)) return t; if ("Feature" === t.type) { if (null !== t.geometry) return t.geometry.coordinates } else if (t.coordinates) return t.coordinates; throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array") }, e.containsNumber = function t(e) { if (e.length > 1 && n.isNumber(e[0]) && n.isNumber(e[1])) return !0; if (Array.isArray(e[0]) && e[0].length) return t(e[0]); throw new Error("coordinates must only contain numbers") }, e.geojsonType = function (t, e, i) { if (!e || !i) throw new Error("type and name required"); if (!t || t.type !== e) throw new Error("Invalid input to " + i + ": must be a " + e + ", given " + t.type) }, e.featureOf = function (t, e, i) { if (!t) throw new Error("No feature passed"); if (!i) throw new Error(".featureOf() requires a name"); if (!t || "Feature" !== t.type || !t.geometry) throw new Error("Invalid input to " + i + ", Feature with geometry required"); if (!t.geometry || t.geometry.type !== e) throw new Error("Invalid input to " + i + ": must be a " + e + ", given " + t.geometry.type) }, e.collectionOf = function (t, e, i) { if (!t) throw new Error("No featureCollection passed"); if (!i) throw new Error(".collectionOf() requires a name"); if (!t || "FeatureCollection" !== t.type) throw new Error("Invalid input to " + i + ", FeatureCollection required"); for (var n = 0, o = t.features; n < o.length; n++) { var r = o[n]; if (!r || "Feature" !== r.type || !r.geometry) throw new Error("Invalid input to " + i + ", Feature with geometry required"); if (!r.geometry || r.geometry.type !== e) throw new Error("Invalid input to " + i + ": must be a " + e + ", given " + r.geometry.type) } }, e.getGeom = function (t) { return "Feature" === t.type ? t.geometry : t }, e.getType = function (t, e) { return "FeatureCollection" === t.type ? "FeatureCollection" : "GeometryCollection" === t.type ? "GeometryCollection" : "Feature" === t.type && null !== t.geometry ? t.geometry.type : t.type } }, function (t, e, i) { !function (t, i) { i(e) }(0, (function (t) { "use strict"; function e(t, e) { return t > e ? 1 : t < e ? -1 : 0 } var i = function (t, i) { void 0 === t && (t = e), void 0 === i && (i = !1), this._compare = t, this._root = null, this._size = 0, this._noDuplicates = !!i }, n = { size: { configurable: !0 } }; i.prototype.rotateLeft = function (t) { var e = t.right; e && (t.right = e.left, e.left && (e.left.parent = t), e.parent = t.parent), t.parent ? t === t.parent.left ? t.parent.left = e : t.parent.right = e : this._root = e, e && (e.left = t), t.parent = e }, i.prototype.rotateRight = function (t) { var e = t.left; e && (t.left = e.right, e.right && (e.right.parent = t), e.parent = t.parent), t.parent ? t === t.parent.left ? t.parent.left = e : t.parent.right = e : this._root = e, e && (e.right = t), t.parent = e }, i.prototype._splay = function (t) { for (; t.parent;) { var e = t.parent; e.parent ? e.left === t && e.parent.left === e ? (this.rotateRight(e.parent), this.rotateRight(e)) : e.right === t && e.parent.right === e ? (this.rotateLeft(e.parent), this.rotateLeft(e)) : e.left === t && e.parent.right === e ? (this.rotateRight(e), this.rotateLeft(e)) : (this.rotateLeft(e), this.rotateRight(e)) : e.left === t ? this.rotateRight(e) : this.rotateLeft(e) } }, i.prototype.splay = function (t) { for (var e, i, n, o, r; t.parent;)(i = (e = t.parent).parent) && i.parent ? ((n = i.parent).left === i ? n.left = t : n.right = t, t.parent = n) : (t.parent = null, this._root = t), o = t.left, r = t.right, t === e.left ? (i && (i.left === e ? (e.right ? (i.left = e.right, i.left.parent = i) : i.left = null, e.right = i, i.parent = e) : (o ? (i.right = o, o.parent = i) : i.right = null, t.left = i, i.parent = t)), r ? (e.left = r, r.parent = e) : e.left = null, t.right = e, e.parent = t) : (i && (i.right === e ? (e.left ? (i.right = e.left, i.right.parent = i) : i.right = null, e.left = i, i.parent = e) : (r ? (i.left = r, r.parent = i) : i.left = null, t.right = i, i.parent = t)), o ? (e.right = o, o.parent = e) : e.right = null, t.left = e, e.parent = t) }, i.prototype.replace = function (t, e) { t.parent ? t === t.parent.left ? t.parent.left = e : t.parent.right = e : this._root = e, e && (e.parent = t.parent) }, i.prototype.minNode = function (t) { if (void 0 === t && (t = this._root), t) for (; t.left;)t = t.left; return t }, i.prototype.maxNode = function (t) { if (void 0 === t && (t = this._root), t) for (; t.right;)t = t.right; return t }, i.prototype.insert = function (t, e) { var i = this._root, n = null, o = this._compare; if (this._noDuplicates) for (; i;) { if (n = i, 0 === o(i.key, t)) return; i = o(i.key, t) < 0 ? i.right : i.left } else for (; i;)n = i, i = o(i.key, t) < 0 ? i.right : i.left; return i = { key: t, data: e, left: null, right: null, parent: n }, n ? o(n.key, i.key) < 0 ? n.right = i : n.left = i : this._root = i, this.splay(i), this._size++, i }, i.prototype.find = function (t) { for (var e = this._root, i = this._compare; e;) { var n = i(e.key, t); if (n < 0) e = e.right; else { if (!(n > 0)) return e; e = e.left } } return null }, i.prototype.contains = function (t) { for (var e = this._root, i = this._compare; e;) { var n = i(t, e.key); if (0 === n) return !0; e = n < 0 ? e.left : e.right } return !1 }, i.prototype.remove = function (t) { var e = this.find(t); if (!e) return !1; if (this.splay(e), e.left) if (e.right) { var i = this.minNode(e.right); i.parent !== e && (this.replace(i, i.right), i.right = e.right, i.right.parent = i), this.replace(e, i), i.left = e.left, i.left.parent = i } else this.replace(e, e.left); else this.replace(e, e.right); return this._size--, !0 }, i.prototype.removeNode = function (t) { if (!t) return !1; if (this.splay(t), t.left) if (t.right) { var e = this.minNode(t.right); e.parent !== t && (this.replace(e, e.right), e.right = t.right, e.right.parent = e), this.replace(t, e), e.left = t.left, e.left.parent = e } else this.replace(t, t.left); else this.replace(t, t.right); return this._size--, !0 }, i.prototype.erase = function (t) { var e = this.find(t); if (e) { this.splay(e); var i = e.left, n = e.right, o = null; i && (i.parent = null, o = this.maxNode(i), this.splay(o), this._root = o), n && (i ? o.right = n : this._root = n, n.parent = o), this._size-- } }, i.prototype.pop = function () { var t = this._root, e = null; if (t) { for (; t.left;)t = t.left; e = { key: t.key, data: t.data }, this.remove(t.key) } return e }, i.prototype.next = function (t) { var e = t; if (e) if (e.right) for (e = e.right; e && e.left;)e = e.left; else for (e = t.parent; e && e.right === t;)t = e, e = e.parent; return e }, i.prototype.prev = function (t) { var e = t; if (e) if (e.left) for (e = e.left; e && e.right;)e = e.right; else for (e = t.parent; e && e.left === t;)t = e, e = e.parent; return e }, i.prototype.forEach = function (t) { for (var e = this._root, i = [], n = !1, o = 0; !n;)e ? (i.push(e), e = e.left) : i.length > 0 ? (t(e = i.pop(), o++), e = e.right) : n = !0; return this }, i.prototype.range = function (t, e, i, n) { for (var o = [], r = this._compare, a = this._root; 0 !== o.length || a;)if (a) o.push(a), a = a.left; else { if (r((a = o.pop()).key, e) > 0) break; if (r(a.key, t) >= 0 && i.call(n, a)) return this; a = a.right } return this }, i.prototype.keys = function () { for (var t = this._root, e = [], i = [], n = !1; !n;)t ? (e.push(t), t = t.left) : e.length > 0 ? (t = e.pop(), i.push(t.key), t = t.right) : n = !0; return i }, i.prototype.values = function () { for (var t = this._root, e = [], i = [], n = !1; !n;)t ? (e.push(t), t = t.left) : e.length > 0 ? (t = e.pop(), i.push(t.data), t = t.right) : n = !0; return i }, i.prototype.at = function (t) { for (var e = this._root, i = [], n = !1, o = 0; !n;)if (e) i.push(e), e = e.left; else if (i.length > 0) { if (e = i.pop(), o === t) return e; o++, e = e.right } else n = !0; return null }, i.prototype.load = function (t, e, i) { if (void 0 === t && (t = []), void 0 === e && (e = []), void 0 === i && (i = !1), 0 !== this._size) throw new Error("bulk-load: tree is not empty"); var n = t.length; return i && function t(e, i, n, o, r) { if (!(n >= o)) { for (var a = e[n + o >> 1], s = n - 1, h = o + 1; ;) { do { s++ } while (r(e[s], a) < 0); do { h-- } while (r(e[h], a) > 0); if (s >= h) break; var l = e[s]; e[s] = e[h], e[h] = l, l = i[s], i[s] = i[h], i[h] = l } t(e, i, n, h, r), t(e, i, h + 1, o, r) } }(t, e, 0, n - 1, this._compare), this._root = function t(e, i, n, o, r) { var a = r - o; if (a > 0) { var s = o + Math.floor(a / 2), h = i[s], l = n[s], u = { key: h, data: l, parent: e }; return u.left = t(u, i, n, o, s), u.right = t(u, i, n, s + 1, r), u } return null }(null, t, e, 0, n), this._size = n, this }, i.prototype.min = function () { var t = this.minNode(this._root); return t ? t.key : null }, i.prototype.max = function () { var t = this.maxNode(this._root); return t ? t.key : null }, i.prototype.isEmpty = function () { return null === this._root }, n.size.get = function () { return this._size }, i.createTree = function (t, e, n, o, r) { return new i(n, r).load(t, e, o) }, Object.defineProperties(i.prototype, n); var o = 0, r = 1, a = 2, s = 3, h = 0, l = 1, u = 2, c = 3; function p(t, e, i) { null === e ? (t.inOut = !1, t.otherInOut = !0) : (t.isSubject === e.isSubject ? (t.inOut = !e.inOut, t.otherInOut = e.otherInOut) : (t.inOut = !e.otherInOut, t.otherInOut = e.isVertical() ? !e.inOut : e.inOut), e && (t.prevInResult = !d(e, i) || e.isVertical() ? e.prevInResult : e)), t.inResult = d(t, i) } function d(t, e) { switch (t.type) { case o: switch (e) { case h: return !t.otherInOut; case l: return t.otherInOut; case u: return t.isSubject && t.otherInOut || !t.isSubject && !t.otherInOut; case c: return !0 }break; case a: return e === h || e === l; case s: return e === u; case r: return !1 }return !1 } var f = function (t, e, i, n, r) { this.left = e, this.point = t, this.otherEvent = i, this.isSubject = n, this.type = r || o, this.inOut = !1, this.otherInOut = !1, this.prevInResult = null, this.inResult = !1, this.resultInOut = !1, this.isExteriorRing = !0 }; function _(t, e) { return t[0] === e[0] && t[1] === e[1] } function m(t, e, i) { return (t[0] - i[0]) * (e[1] - i[1]) - (e[0] - i[0]) * (t[1] - i[1]) } function g(t, e) { var i = t.point, n = e.point; return i[0] > n[0] ? 1 : i[0] < n[0] ? -1 : i[1] !== n[1] ? i[1] > n[1] ? 1 : -1 : function (t, e, i, n) { return t.left !== e.left ? t.left ? 1 : -1 : 0 !== m(i, t.otherEvent.point, e.otherEvent.point) ? t.isBelow(e.otherEvent.point) ? -1 : 1 : !t.isSubject && e.isSubject ? 1 : -1 }(t, e, i) } function v(t, e, i) { var n = new f(e, !1, t, t.isSubject), o = new f(e, !0, t.otherEvent, t.isSubject); return _(t.point, t.otherEvent.point) && console.warn("what is that, a collapsed segment?", t), n.contourId = o.contourId = t.contourId, g(o, t.otherEvent) > 0 && (t.otherEvent.left = !0, o.left = !1), t.otherEvent.otherEvent = o, t.otherEvent = n, i.push(o), i.push(n), i } function y(t, e) { return t[0] * e[1] - t[1] * e[0] } function b(t, e) { return t[0] * e[0] + t[1] * e[1] } function L(t, e, i) { var n = function (t, e, i, n, o) { var r = [e[0] - t[0], e[1] - t[1]], a = [n[0] - i[0], n[1] - i[1]]; function s(t, e, i) { return [t[0] + e * i[0], t[1] + e * i[1]] } var h = [i[0] - t[0], i[1] - t[1]], l = y(r, a), u = l * l, c = b(r, r); if (u > 0) { var p = y(h, a) / l; if (p < 0 || p > 1) return null; var d = y(h, r) / l; return d < 0 || d > 1 ? null : 0 === p || 1 === p ? o ? null : [s(t, p, r)] : 0 === d || 1 === d ? o ? null : [s(i, d, a)] : [s(t, p, r)] } if ((u = (l = y(h, r)) * l) > 0) return null; var f = b(r, h) / c, _ = f + b(r, a) / c, m = Math.min(f, _), g = Math.max(f, _); return m <= 1 && g >= 0 ? 1 === m ? o ? null : [s(t, m > 0 ? m : 0, r)] : 0 === g ? o ? null : [s(t, g < 1 ? g : 1, r)] : o && 0 === m && 1 === g ? null : [s(t, m > 0 ? m : 0, r), s(t, g < 1 ? g : 1, r)] : null }(t.point, t.otherEvent.point, e.point, e.otherEvent.point), o = n ? n.length : 0; if (0 === o) return 0; if (1 === o && (_(t.point, e.point) || _(t.otherEvent.point, e.otherEvent.point))) return 0; if (2 === o && t.isSubject === e.isSubject) return 0; if (1 === o) return _(t.point, n[0]) || _(t.otherEvent.point, n[0]) || v(t, n[0], i), _(e.point, n[0]) || _(e.otherEvent.point, n[0]) || v(e, n[0], i), 1; var h = [], l = !1, u = !1; return _(t.point, e.point) ? l = !0 : 1 === g(t, e) ? h.push(e, t) : h.push(t, e), _(t.otherEvent.point, e.otherEvent.point) ? u = !0 : 1 === g(t.otherEvent, e.otherEvent) ? h.push(e.otherEvent, t.otherEvent) : h.push(t.otherEvent, e.otherEvent), l && u || l ? (e.type = r, t.type = e.inOut === t.inOut ? a : s, l && !u && v(h[1].otherEvent, h[0].point, i), 2) : u ? (v(h[0], h[1].point, i), 3) : h[0] !== h[3].otherEvent ? (v(h[0], h[1].point, i), v(h[1], h[2].point, i), 3) : (v(h[0], h[1].point, i), v(h[3].otherEvent, h[2].point, i), 3) } function w(t, e) { if (t === e) return 0; if (0 !== m(t.point, t.otherEvent.point, e.point) || 0 !== m(t.point, t.otherEvent.point, e.otherEvent.point)) return _(t.point, e.point) ? t.isBelow(e.otherEvent.point) ? -1 : 1 : t.point[0] === e.point[0] ? t.point[1] < e.point[1] ? -1 : 1 : 1 === g(t, e) ? e.isAbove(t.point) ? -1 : 1 : t.isBelow(e.point) ? -1 : 1; if (t.isSubject !== e.isSubject) return t.isSubject ? -1 : 1; var i = t.point, n = e.point; return i[0] === n[0] && i[1] === n[1] ? (i = t.otherEvent.point, n = e.otherEvent.point, i[0] === n[0] && i[1] === n[1] ? 0 : t.contourId > e.contourId ? 1 : -1) : 1 === g(t, e) ? 1 : -1 } function x(t, e, i, n) { var o = t + 1, r = e.length; if (o > r - 1) return t - 1; for (var a = e[t].point, s = e[o].point; o < r && s[0] === a[0] && s[1] === a[1];) { if (!i[o]) return o; s = e[++o].point } for (o = t - 1; i[o] && o >= n;)o--; return o } function k(t, e) { var i, n, o, r = function (t) { var e, i, n, o, r = []; for (i = 0, n = t.length; i < n; i++)((e = t[i]).left && e.inResult || !e.left && e.otherEvent.inResult) && r.push(e); for (var a = !1; !a;)for (a = !0, i = 0, n = r.length; i < n; i++)i + 1 < n && 1 === g(r[i], r[i + 1]) && (o = r[i], r[i] = r[i + 1], r[i + 1] = o, a = !1); for (i = 0, n = r.length; i < n; i++)(e = r[i]).pos = i; for (i = 0, n = r.length; i < n; i++)(e = r[i]).left || (o = e.pos, e.pos = e.otherEvent.pos, e.otherEvent.pos = o); return r }(t), a = {}, s = []; for (i = 0, n = r.length; i < n; i++)if (!a[i]) { var h = [[]]; r[i].isExteriorRing ? e === u && !r[i].isSubject && s.length > 1 ? s[s.length - 1].push(h[0]) : s.push(h) : e !== u || r[i].isSubject || 0 !== s.length ? 0 === s.length ? s.push([[h]]) : s[s.length - 1].push(h[0]) : s.push(h); var l = s.length - 1, c = i, p = r[i].point; for (h[0].push(p); c >= i;)o = r[c], a[c] = !0, o.left ? (o.resultInOut = !1, o.contourId = l) : (o.otherEvent.resultInOut = !0, o.otherEvent.contourId = l), a[c = o.pos] = !0, h[0].push(r[c].point), c = x(c, r, a, i); o = r[c = -1 === c ? i : c], a[c] = a[o.pos] = !0, o.otherEvent.resultInOut = !0, o.otherEvent.contourId = l } return s } f.prototype.isBelow = function (t) { var e = this.point, i = this.otherEvent.point; return this.left ? (e[0] - t[0]) * (i[1] - t[1]) - (i[0] - t[0]) * (e[1] - t[1]) > 0 : (i[0] - t[0]) * (e[1] - t[1]) - (e[0] - t[0]) * (i[1] - t[1]) > 0 }, f.prototype.isAbove = function (t) { return !this.isBelow(t) }, f.prototype.isVertical = function () { return this.point[0] === this.otherEvent.point[0] }, f.prototype.clone = function () { var t = new f(this.point, this.left, this.otherEvent, this.isSubject, this.type); return t.inResult = this.inResult, t.prevInResult = this.prevInResult, t.isExteriorRing = this.isExteriorRing, t.inOut = this.inOut, t.otherInOut = this.otherInOut, t }; var M = C, P = C; function C(t, e) { if (!(this instanceof C)) return new C(t, e); if (this.data = t || [], this.length = this.data.length, this.compare = e || T, this.length > 0) for (var i = (this.length >> 1) - 1; i >= 0; i--)this._down(i) } function T(t, e) { return t < e ? -1 : t > e ? 1 : 0 } C.prototype = { push: function (t) { this.data.push(t), this.length++, this._up(this.length - 1) }, pop: function () { if (0 !== this.length) { var t = this.data[0]; return this.length--, this.length > 0 && (this.data[0] = this.data[this.length], this._down(0)), this.data.pop(), t } }, peek: function () { return this.data[0] }, _up: function (t) { for (var e = this.data, i = this.compare, n = e[t]; t > 0;) { var o = t - 1 >> 1, r = e[o]; if (i(n, r) >= 0) break; e[t] = r, t = o } e[t] = n }, _down: function (t) { for (var e = this.data, i = this.compare, n = this.length >> 1, o = e[t]; t < n;) { var r = 1 + (t << 1), a = r + 1, s = e[r]; if (a < this.length && i(e[a], s) < 0 && (r = a, s = e[a]), i(s, o) >= 0) break; e[t] = s, t = r } e[t] = o } }, M["default"] = P; var S = Math.max, O = Math.min, E = 0; function B(t, e, i, n, o, r) { var a, s, h, l, u, c; for (a = 0, s = t.length - 1; a < s; a++)if (h = t[a], l = t[a + 1], u = new f(h, !1, void 0, e), c = new f(l, !1, u, e), u.otherEvent = c, h[0] !== l[0] || h[1] !== l[1]) { u.contourId = c.contourId = i, r || (u.isExteriorRing = !1, c.isExteriorRing = !1), g(u, c) > 0 ? c.left = !0 : u.left = !0; var p = h[0], d = h[1]; o[0] = O(o[0], p), o[1] = O(o[1], d), o[2] = S(o[2], p), o[3] = S(o[3], d), n.push(u), n.push(c) } } var z = []; function j(t, e, n) { "number" == typeof t[0][0][0] && (t = [t]), "number" == typeof e[0][0][0] && (e = [e]); var o = function (t, e, i) { var n = null; return t.length * e.length == 0 && (i === h ? n = z : i === u ? n = t : i !== l && i !== c || (n = 0 === t.length ? e : t)), n }(t, e, n); if (o) return o === z ? null : o; var r = [1 / 0, 1 / 0, -1 / 0, -1 / 0], a = [1 / 0, 1 / 0, -1 / 0, -1 / 0], s = function (t, e, i, n, o) { var r, a, s, h, l, c, p = new M(null, g); for (s = 0, h = t.length; s < h; s++)for (l = 0, c = (r = t[s]).length; l < c; l++)(a = 0 === l) && E++, B(r[l], !0, E, p, i, a); for (s = 0, h = e.length; s < h; s++)for (l = 0, c = (r = e[s]).length; l < c; l++)a = 0 === l, o === u && (a = !1), a && E++, B(r[l], !1, E, p, n, a); return p }(t, e, r, a, n); return (o = function (t, e, i, n, o) { var r = null; return (i[0] > n[2] || n[0] > i[2] || i[1] > n[3] || n[1] > i[3]) && (o === h ? r = z : o === u ? r = t : o !== l && o !== c || (r = t.concat(e))), r }(t, e, r, a, n)) ? o === z ? null : o : k(function (t, e, n, o, r, a) { for (var s, l, c, d = new i(w), f = [], _ = Math.min(o[2], r[2]); 0 !== t.length;) { var m = t.pop(); if (f.push(m), a === h && m.point[0] > _ || a === u && m.point[0] > o[2]) break; if (m.left) { l = s = d.insert(m), s = s !== (c = d.minNode()) ? d.prev(s) : null, l = d.next(l); var g = s ? s.key : null; if (p(m, g, a), l && 2 === L(m, l.key, t) && (p(m, g, a), p(m, l.key, a)), s && 2 === L(s.key, m, t)) { var v = s; p(g, (v = v !== c ? d.prev(v) : null) ? v.key : null, a), p(m, g, a) } } else m = m.otherEvent, l = s = d.find(m), s && l && (s = s !== c ? d.prev(s) : null, l = d.next(l), d.remove(m), l && s && L(s.key, l.key, t)) } return f }(s, 0, 0, r, a, n), n) } var I = { UNION: l, DIFFERENCE: u, INTERSECTION: h, XOR: c }; t.union = function (t, e) { return j(t, e, l) }, t.diff = function (t, e) { return j(t, e, u) }, t.xor = function (t, e) { return j(t, e, c) }, t.intersection = function (t, e) { return j(t, e, h) }, t.operations = I, Object.defineProperty(t, "__esModule", { value: !0 }) })) }, function (t, e, i) { "use strict"; Object.defineProperty(e, "__esModule", { value: !0 }); var n = i(8); function o(t, e, i) { if (null !== t) for (var n, r, a, s, h, l, u, c, p = 0, d = 0, f = t.type, _ = "FeatureCollection" === f, m = "Feature" === f, g = _ ? t.features.length : 1, v = 0; v < g; v++) { h = (c = !!(u = _ ? t.features[v].geometry : m ? t.geometry : t) && "GeometryCollection" === u.type) ? u.geometries.length : 1; for (var y = 0; y < h; y++) { var b = 0, L = 0; if (null !== (s = c ? u.geometries[y] : u)) { l = s.coordinates; var w = s.type; switch (p = !i || "Polygon" !== w && "MultiPolygon" !== w ? 0 : 1, w) { case null: break; case "Point": if (!1 === e(l, d, v, b, L)) return !1; d++, b++; break; case "LineString": case "MultiPoint": for (n = 0; n < l.length; n++) { if (!1 === e(l[n], d, v, b, L)) return !1; d++, "MultiPoint" === w && b++ } "LineString" === w && b++; break; case "Polygon": case "MultiLineString": for (n = 0; n < l.length; n++) { for (r = 0; r < l[n].length - p; r++) { if (!1 === e(l[n][r], d, v, b, L)) return !1; d++ } "MultiLineString" === w && b++, "Polygon" === w && L++ } "Polygon" === w && b++; break; case "MultiPolygon": for (n = 0; n < l.length; n++) { for (L = 0, r = 0; r < l[n].length; r++) { for (a = 0; a < l[n][r].length - p; a++) { if (!1 === e(l[n][r][a], d, v, b, L)) return !1; d++ } L++ } b++ } break; case "GeometryCollection": for (n = 0; n < s.geometries.length; n++)if (!1 === o(s.geometries[n], e, i)) return !1; break; default: throw new Error("Unknown Geometry Type") } } } } } function r(t, e) { var i; switch (t.type) { case "FeatureCollection": for (i = 0; i < t.features.length && !1 !== e(t.features[i].properties, i); i++); break; case "Feature": e(t.properties, 0) } } function a(t, e) { if ("Feature" === t.type) e(t, 0); else if ("FeatureCollection" === t.type) for (var i = 0; i < t.features.length && !1 !== e(t.features[i], i); i++); } function s(t, e) { var i, n, o, r, a, s, h, l, u, c, p = 0, d = "FeatureCollection" === t.type, f = "Feature" === t.type, _ = d ? t.features.length : 1; for (i = 0; i < _; i++) { for (s = d ? t.features[i].geometry : f ? t.geometry : t, l = d ? t.features[i].properties : f ? t.properties : {}, u = d ? t.features[i].bbox : f ? t.bbox : void 0, c = d ? t.features[i].id : f ? t.id : void 0, a = (h = !!s && "GeometryCollection" === s.type) ? s.geometries.length : 1, o = 0; o < a; o++)if (null !== (r = h ? s.geometries[o] : s)) switch (r.type) { case "Point": case "LineString": case "MultiPoint": case "Polygon": case "MultiLineString": case "MultiPolygon": if (!1 === e(r, p, l, u, c)) return !1; break; case "GeometryCollection": for (n = 0; n < r.geometries.length; n++)if (!1 === e(r.geometries[n], p, l, u, c)) return !1; break; default: throw new Error("Unknown Geometry Type") } else if (!1 === e(null, p, l, u, c)) return !1; p++ } } function h(t, e) { s(t, (function (t, i, o, r, a) { var s, h = null === t ? null : t.type; switch (h) { case null: case "Point": case "LineString": case "Polygon": return !1 !== e(n.feature(t, o, { bbox: r, id: a }), i, 0) && void 0 }switch (h) { case "MultiPoint": s = "Point"; break; case "MultiLineString": s = "LineString"; break; case "MultiPolygon": s = "Polygon" }for (var l = 0; l < t.coordinates.length; l++) { var u = { type: s, coordinates: t.coordinates[l] }; if (!1 === e(n.feature(u, o), i, l)) return !1 } })) } function l(t, e) { h(t, (function (t, i, r) { var a = 0; if (t.geometry) { var s = t.geometry.type; if ("Point" !== s && "MultiPoint" !== s) { var h, l = 0, u = 0, c = 0; return !1 !== o(t, (function (o, s, p, d, f) { if (void 0 === h || i > l || d > u || f > c) return h = o, l = i, u = d, c = f, void (a = 0); var _ = n.lineString([h, o], t.properties); if (!1 === e(_, i, r, f, a)) return !1; a++, h = o })) && void 0 } } })) } function u(t, e) { if (!t) throw new Error("geojson is required"); h(t, (function (t, i, o) { if (null !== t.geometry) { var r = t.geometry.type, a = t.geometry.coordinates; switch (r) { case "LineString": if (!1 === e(t, i, o, 0, 0)) return !1; break; case "Polygon": for (var s = 0; s < a.length; s++)if (!1 === e(n.lineString(a[s], t.properties), i, o, s)) return !1 } } })) } e.coordEach = o, e.coordReduce = function (t, e, i, n) { var r = i; return o(t, (function (t, n, o, a, s) { r = 0 === n && void 0 === i ? t : e(r, t, n, o, a, s) }), n), r }, e.propEach = r, e.propReduce = function (t, e, i) { var n = i; return r(t, (function (t, o) { n = 0 === o && void 0 === i ? t : e(n, t, o) })), n }, e.featureEach = a, e.featureReduce = function (t, e, i) { var n = i; return a(t, (function (t, o) { n = 0 === o && void 0 === i ? t : e(n, t, o) })), n }, e.coordAll = function (t) { var e = []; return o(t, (function (t) { e.push(t) })), e }, e.geomEach = s, e.geomReduce = function (t, e, i) { var n = i; return s(t, (function (t, o, r, a, s) { n = 0 === o && void 0 === i ? t : e(n, t, o, r, a, s) })), n }, e.flattenEach = h, e.flattenReduce = function (t, e, i) { var n = i; return h(t, (function (t, o, r) { n = 0 === o && 0 === r && void 0 === i ? t : e(n, t, o, r) })), n }, e.segmentEach = l, e.segmentReduce = function (t, e, i) { var n = i, o = !1; return l(t, (function (t, r, a, s, h) { n = !1 === o && void 0 === i ? t : e(n, t, r, a, s, h), o = !0 })), n }, e.lineEach = u, e.lineReduce = function (t, e, i) { var n = i; return u(t, (function (t, o, r, a) { n = 0 === o && void 0 === i ? t : e(n, t, o, r, a) })), n }, e.findSegment = function (t, e) { if (e = e || {}, !n.isObject(e)) throw new Error("options is invalid"); var i, o = e.featureIndex || 0, r = e.multiFeatureIndex || 0, a = e.geometryIndex || 0, s = e.segmentIndex || 0, h = e.properties; switch (t.type) { case "FeatureCollection": o < 0 && (o = t.features.length + o), h = h || t.features[o].properties, i = t.features[o].geometry; break; case "Feature": h = h || t.properties, i = t.geometry; break; case "Point": case "MultiPoint": return null; case "LineString": case "Polygon": case "MultiLineString": case "MultiPolygon": i = t; break; default: throw new Error("geojson is invalid") }if (null === i) return null; var l = i.coordinates; switch (i.type) { case "Point": case "MultiPoint": return null; case "LineString": return s < 0 && (s = l.length + s - 1), n.lineString([l[s], l[s + 1]], h, e); case "Polygon": return a < 0 && (a = l.length + a), s < 0 && (s = l[a].length + s - 1), n.lineString([l[a][s], l[a][s + 1]], h, e); case "MultiLineString": return r < 0 && (r = l.length + r), s < 0 && (s = l[r].length + s - 1), n.lineString([l[r][s], l[r][s + 1]], h, e); case "MultiPolygon": return r < 0 && (r = l.length + r), a < 0 && (a = l[r].length + a), s < 0 && (s = l[r][a].length - s - 1), n.lineString([l[r][a][s], l[r][a][s + 1]], h, e) }throw new Error("geojson is invalid") }, e.findPoint = function (t, e) { if (e = e || {}, !n.isObject(e)) throw new Error("options is invalid"); var i, o = e.featureIndex || 0, r = e.multiFeatureIndex || 0, a = e.geometryIndex || 0, s = e.coordIndex || 0, h = e.properties; switch (t.type) { case "FeatureCollection": o < 0 && (o = t.features.length + o), h = h || t.features[o].properties, i = t.features[o].geometry; break; case "Feature": h = h || t.properties, i = t.geometry; break; case "Point": case "MultiPoint": return null; case "LineString": case "Polygon": case "MultiLineString": case "MultiPolygon": i = t; break; default: throw new Error("geojson is invalid") }if (null === i) return null; var l = i.coordinates; switch (i.type) { case "Point": return n.point(l, h, e); case "MultiPoint": return r < 0 && (r = l.length + r), n.point(l[r], h, e); case "LineString": return s < 0 && (s = l.length + s), n.point(l[s], h, e); case "Polygon": return a < 0 && (a = l.length + a), s < 0 && (s = l[a].length + s), n.point(l[a][s], h, e); case "MultiLineString": return r < 0 && (r = l.length + r), s < 0 && (s = l[r].length + s), n.point(l[r][s], h, e); case "MultiPolygon": return r < 0 && (r = l.length + r), a < 0 && (a = l[r].length + a), s < 0 && (s = l[r][a].length - s), n.point(l[r][a][s], h, e) }throw new Error("geojson is invalid") } }, function (t, e, i) { t.exports = i(47) }, function (t, e, i) { "use strict"; Object.defineProperty(e, "__esModule", { value: !0 }); var n = i(48), o = (i.n(n), i(49)), r = (i.n(o), i(50)), a = i(128), s = i(1), h = (i(141), i(142), i(143), i(144), i(145), i(146), i(147), i(2)), l = (i(152), i(153), i(154), i(155), i(156), i(157), i(158), i(159)), u = (i.n(l), i(160)); i.n(u), L.PM = L.PM || { version: o.version, Map: r.a, Toolbar: a.a, Draw: s.a, Edit: h.a, activeLang: "en", initialize: function () { this.addInitHooks() }, addInitHooks: function () { L.Map.addInitHook((function () { this.options.pmIgnore || (this.pm = new L.PM.Map(this)) })), L.LayerGroup.addInitHook((function () { this.pm = new L.PM.Edit.LayerGroup(this) })), L.Marker.addInitHook((function () { this.options.pmIgnore || (this.pm = new L.PM.Edit.Marker(this)) })), L.CircleMarker.addInitHook((function () { this.options.pmIgnore || (this.pm = new L.PM.Edit.CircleMarker(this)) })), L.Polyline.addInitHook((function () { this.options.pmIgnore || (this.pm = new L.PM.Edit.Line(this)) })), L.Polygon.addInitHook((function () { this.options.pmIgnore || (this.pm = new L.PM.Edit.Polygon(this)) })), L.Rectangle.addInitHook((function () { this.options.pmIgnore || (this.pm = new L.PM.Edit.Rectangle(this)) })), L.Circle.addInitHook((function () { this.options.pmIgnore || (this.pm = new L.PM.Edit.Circle(this)) })) } }, L.PM.initialize() }, function (t, e) { Array.prototype.findIndex = Array.prototype.findIndex || function (t) { if (null === this) throw new TypeError("Array.prototype.findIndex called on null or undefined"); if ("function" != typeof t) throw new TypeError("callback must be a function"); for (var e = Object(this), i = e.length >>> 0, n = arguments[1], o = 0; o < i; o++)if (t.call(n, e[o], o, e)) return o; return -1 }, Array.prototype.find = Array.prototype.find || function (t) { if (null === this) throw new TypeError("Array.prototype.find called on null or undefined"); if ("function" != typeof t) throw new TypeError("callback must be a function"); for (var e = Object(this), i = e.length >>> 0, n = arguments[1], o = 0; o < i; o++) { var r = e[o]; if (t.call(n, r, o, e)) return r } }, "function" != typeof Object.assign && (Object.assign = function (t) { "use strict"; if (null == t) throw new TypeError("Cannot convert undefined or null to object"); t = Object(t); for (var e = 1; e < arguments.length; e++) { var i = arguments[e]; if (null != i) for (var n in i) Object.prototype.hasOwnProperty.call(i, n) && (t[n] = i[n]) } return t }), [Element.prototype, CharacterData.prototype, DocumentType.prototype].forEach((function (t) { t.hasOwnProperty("remove") || Object.defineProperty(t, "remove", { configurable: !0, enumerable: !0, writable: !0, value: function () { this.parentNode.removeChild(this) } }) })) }, function (t, e) { t.exports = { name: "leaflet.pm", version: "2.2.0", description: "A Leaflet Plugin For Editing Geometry Layers in Leaflet 1.0", keywords: ["leaflet", "polygon management", "geometry editing", "map data", "map overlay", "polygon", "geojson", "leaflet-draw", "data-field-geojson", "ui-leaflet-draw"], files: ["dist"], main: "dist/leaflet.pm.min.js", dependencies: { "@turf/difference": "^6.0.2", "@turf/intersect": "^6.1.3", "@turf/kinks": "6.x", lodash: "^4.17.15" }, devDependencies: { "@babel/core": "^7.5.5", "@babel/preset-env": "^7.5.5", "babel-loader": "^8.0.6", "css-loader": "^2.1.1", cypress: "^3.4.1", eslint: "^4.19.1", "eslint-config-airbnb-base": "^12.1.0", "eslint-config-prettier": "^3.6.0", "eslint-plugin-cypress": "^2.6.1", "eslint-plugin-import": "^2.18.2", "extract-text-webpack-plugin": "^3.0.2", "file-loader": "^0.11.1", leaflet: "^1.5.1", prettier: "1.16.1", "style-loader": "^0.19.0", "uglifyjs-webpack-plugin": "^1.3.0", "url-loader": "^0.6.2", webpack: "^3.12.0" }, peerDependencies: { leaflet: "^1.2.0" }, scripts: { start: "npm run dev", dev: "./node_modules/.bin/webpack --config=webpack.dev.js", test: "$(npm bin)/cypress run", cypress: "$(npm bin)/cypress open", build: "./node_modules/.bin/webpack --config=webpack.build.js", prepare: "npm run build", "eslint-check": "eslint --print-config . | eslint-config-prettier-check", eslint: "eslint src/ --fix", prettier: "prettier --write '{src,cypress}/**/*.{js,css}'", lint: "npm run eslint && npm run prettier" }, repository: { type: "git", url: "git://github.com/codeofsumit/leaflet.pm.git" }, author: { name: "Sumit Kumar", email: "sk@outlook.com", url: "http://twitter.com/TweetsOfSumit" }, license: "MIT", bugs: { url: "https://github.com/codeofsumit/leaflet.pm/issues" }, homepage: "https://leafletpm.now.sh", prettier: { trailingComma: "es5", tabWidth: 2, semi: !0, singleQuote: !0 } } }, function (t, e, i) { "use strict"; var n = i(51), o = i.n(n), r = i(36), a = L.Class.extend({ initialize: function (t) { this.map = t, this.Draw = new L.PM.Draw(t), this.Toolbar = new L.PM.Toolbar(t), this._globalRemovalMode = !1 }, setLang: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "en", e = arguments.length > 1 ? arguments[1] : void 0, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "en"; e && (r.a[t] = o()(r.a[i], e)), L.PM.activeLang = t, this.map.pm.Toolbar.reinit() }, addControls: function (t) { this.Toolbar.addControls(t) }, removeControls: function () { this.Toolbar.removeControls() }, toggleControls: function () { this.Toolbar.toggleControls() }, controlsVisible: function () { return this.Toolbar.isVisible }, enableDraw: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "Polygon", e = arguments.length > 1 ? arguments[1] : void 0; "Poly" === t && (t = "Polygon"), this.Draw.enable(t, e) }, disableDraw: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "Polygon"; "Poly" === t && (t = "Polygon"), this.Draw.disable(t) }, setPathOptions: function (t) { this.Draw.setPathOptions(t) }, findLayers: function () { var t = []; return this.map.eachLayer((function (e) { (e instanceof L.Polyline || e instanceof L.Marker || e instanceof L.Circle || e instanceof L.CircleMarker) && t.push(e) })), t = (t = t.filter((function (t) { return !!t.pm }))).filter((function (t) { return !t._pmTempLayer })) }, removeLayer: function (t) { var e = t.target; !(e._pmTempLayer || e.pm && e.pm.dragging()) && (e.remove(), this.map.fire("pm:remove", { layer: e })) }, globalDragModeEnabled: function () { return !!this._globalDragMode }, enableGlobalDragMode: function () { var t = this.findLayers(); this._globalDragMode = !0, t.forEach((function (t) { t.pm.enableLayerDrag() })), this.map.on("layeradd", this.layerAddHandler, this), this.Toolbar.toggleButton("dragMode", this._globalDragMode), this._fireDragModeEvent(!0) }, disableGlobalDragMode: function () { var t = this.findLayers(); this._globalDragMode = !1, t.forEach((function (t) { t.pm.disableLayerDrag() })), this.map.off("layeradd", this.layerAddHandler, this), this.Toolbar.toggleButton("dragMode", this._globalDragMode), this._fireDragModeEvent(!1) }, _fireDragModeEvent: function (t) { this.map.fire("pm:globaldragmodetoggled", { enabled: t, map: this.map }) }, toggleGlobalDragMode: function () { this.globalDragModeEnabled() ? this.disableGlobalDragMode() : this.enableGlobalDragMode() }, layerAddHandler: function (t) { var e = t.layer; e.pm && !e._pmTempLayer && (this.globalRemovalEnabled() && (this.disableGlobalRemovalMode(), this.enableGlobalRemovalMode()), this.globalEditEnabled() && (this.disableGlobalEditMode(), this.enableGlobalEditMode()), this.globalDragModeEnabled() && (this.disableGlobalDragMode(), this.enableGlobalDragMode())) }, disableGlobalRemovalMode: function () { var t = this; this._globalRemovalMode = !1, this.map.eachLayer((function (e) { e.off("click", t.removeLayer, t) })), this.map.off("layeradd", this.layerAddHandler, this), this.Toolbar.toggleButton("deleteLayer", this._globalRemovalMode), this._fireRemovalModeEvent(!1) }, enableGlobalRemovalMode: function () { var t = this; this._globalRemovalMode = !0, this.map.eachLayer((function (e) { (function (t) { return t.pm && !(t.pm.options && t.pm.options.preventMarkerRemoval) && !(t instanceof L.LayerGroup) })(e) && e.on("click", t.removeLayer, t) })), this.map.on("layeradd", this.layerAddHandler, this), this.Toolbar.toggleButton("deleteLayer", this._globalRemovalMode), this._fireRemovalModeEvent(!0) }, _fireRemovalModeEvent: function (t) { this.map.fire("pm:globalremovalmodetoggled", { enabled: t, map: this.map }) }, toggleGlobalRemovalMode: function () { this.globalRemovalEnabled() ? this.disableGlobalRemovalMode() : this.enableGlobalRemovalMode() }, globalRemovalEnabled: function () { return !!this._globalRemovalMode }, globalEditEnabled: function () { return this._globalEditMode }, enableGlobalEditMode: function (t) { var e = this.findLayers(); this._globalEditMode = !0, e.forEach((function (e) { e.pm.enable(t) })), this.map.on("layeradd", this.layerAddHandler, this), this.Toolbar.toggleButton("editPolygon", this._globalEditMode), this._fireEditModeEvent(!0) }, disableGlobalEditMode: function () { var t = this.findLayers(); this._globalEditMode = !1, t.forEach((function (t) { t.pm.disable() })), this.map.on("layeroff", this.layerAddHandler, this), this.Toolbar.toggleButton("editPolygon", this._globalEditMode), this._fireEditModeEvent(!1) }, _fireEditModeEvent: function (t) { this.map.fire("pm:globaleditmodetoggled", { enabled: t, map: this.map }) }, toggleGlobalEditMode: function (t) { this.globalEditEnabled() ? this.disableGlobalEditMode() : this.enableGlobalEditMode(t) } }); e.a = a }, function (t, e, i) { var n = i(52), o = i(109)((function (t, e, i) { n(t, e, i) })); t.exports = o }, function (t, e, i) { var n = i(53), o = i(27), r = i(84), a = i(86), s = i(3), h = i(34), l = i(33); t.exports = function t(e, i, u, c, p) { e !== i && r(i, (function (r, h) { if (p || (p = new n), s(r)) a(e, i, h, u, t, c, p); else { var d = c ? c(l(e, h), r, h + "", e, i, p) : void 0; void 0 === d && (d = r), o(e, h, d) } }), h) } }, function (t, e, i) { var n = i(9), o = i(59), r = i(60), a = i(61), s = i(62), h = i(63); function l(t) { var e = this.__data__ = new n(t); this.size = e.size } l.prototype.clear = o, l.prototype["delete"] = r, l.prototype.get = a, l.prototype.has = s, l.prototype.set = h, t.exports = l }, function (t, e) { t.exports = function () { this.__data__ = [], this.size = 0 } }, function (t, e, i) { var n = i(10), o = Array.prototype.splice; t.exports = function (t) { var e = this.__data__, i = n(e, t); return !(i < 0 || (i == e.length - 1 ? e.pop() : o.call(e, i, 1), --this.size, 0)) } }, function (t, e, i) { var n = i(10); t.exports = function (t) { var e = this.__data__, i = n(e, t); return i < 0 ? void 0 : e[i][1] } }, function (t, e, i) { var n = i(10); t.exports = function (t) { return n(this.__data__, t) > -1 } }, function (t, e, i) { var n = i(10); t.exports = function (t, e) { var i = this.__data__, o = n(i, t); return o < 0 ? (++this.size, i.push([t, e])) : i[o][1] = e, this } }, function (t, e, i) { var n = i(9); t.exports = function () { this.__data__ = new n, this.size = 0 } }, function (t, e) { t.exports = function (t) { var e = this.__data__, i = e["delete"](t); return this.size = e.size, i } }, function (t, e) { t.exports = function (t) { return this.__data__.get(t) } }, function (t, e) { t.exports = function (t) { return this.__data__.has(t) } }, function (t, e, i) { var n = i(9), o = i(24), r = i(26), a = 200; t.exports = function (t, e) { var i = this.__data__; if (i instanceof n) { var s = i.__data__; if (!o || s.length < a - 1) return s.push([t, e]), this.size = ++i.size, this; i = this.__data__ = new r(s) } return i.set(t, e), this.size = i.size, this } }, function (t, e, i) { var n = i(15), o = i(68), r = i(3), a = i(70), s = /^\[object .+?Constructor\]$/, h = Function.prototype, l = Object.prototype, u = h.toString, c = l.hasOwnProperty, p = RegExp("^" + u.call(c).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"); t.exports = function (t) { return !(!r(t) || o(t)) && (n(t) ? p : s).test(a(t)) } }, function (t, e) { var i; i = function () { return this }(); try { i = i || Function("return this")() || (0, eval)("this") } catch (n) { "object" == typeof window && (i = window) } t.exports = i }, function (t, e, i) { var n = i(16), o = Object.prototype, r = o.hasOwnProperty, a = o.toString, s = n ? n.toStringTag : void 0; t.exports = function (t) { var e = r.call(t, s), i = t[s]; try { t[s] = void 0; var n = !0 } catch (h) { } var o = a.call(t); return n && (e ? t[s] = i : delete t[s]), o } }, function (t, e) { var i = Object.prototype.toString; t.exports = function (t) { return i.call(t) } }, function (t, e, i) { var n = i(69), o = function () { var t = /[^.]+$/.exec(n && n.keys && n.keys.IE_PROTO || ""); return t ? "Symbol(src)_1." + t : "" }(); t.exports = function (t) { return !!o && o in t } }, function (t, e, i) { var n = i(4)["__core-js_shared__"]; t.exports = n }, function (t, e) { var i = Function.prototype.toString; t.exports = function (t) { if (null != t) { try { return i.call(t) } catch (e) { } try { return t + "" } catch (e) { } } return "" } }, function (t, e) { t.exports = function (t, e) { return null == t ? void 0 : t[e] } }, function (t, e, i) { var n = i(73), o = i(9), r = i(24); t.exports = function () { this.size = 0, this.__data__ = { hash: new n, map: new (r || o), string: new n } } }, function (t, e, i) { var n = i(74), o = i(75), r = i(76), a = i(77), s = i(78); function h(t) { var e = -1, i = null == t ? 0 : t.length; for (this.clear(); ++e < i;) { var n = t[e]; this.set(n[0], n[1]) } } h.prototype.clear = n, h.prototype["delete"] = o, h.prototype.get = r, h.prototype.has = a, h.prototype.set = s, t.exports = h }, function (t, e, i) { var n = i(12); t.exports = function () { this.__data__ = n ? n(null) : {}, this.size = 0 } }, function (t, e) { t.exports = function (t) { var e = this.has(t) && delete this.__data__[t]; return this.size -= e ? 1 : 0, e } }, function (t, e, i) { var n = i(12), o = "__lodash_hash_undefined__", r = Object.prototype.hasOwnProperty; t.exports = function (t) { var e = this.__data__; if (n) { var i = e[t]; return i === o ? void 0 : i } return r.call(e, t) ? e[t] : void 0 } }, function (t, e, i) { var n = i(12), o = Object.prototype.hasOwnProperty; t.exports = function (t) { var e = this.__data__; return n ? void 0 !== e[t] : o.call(e, t) } }, function (t, e, i) { var n = i(12), o = "__lodash_hash_undefined__"; t.exports = function (t, e) { var i = this.__data__; return this.size += this.has(t) ? 0 : 1, i[t] = n && void 0 === e ? o : e, this } }, function (t, e, i) { var n = i(13); t.exports = function (t) { var e = n(this, t)["delete"](t); return this.size -= e ? 1 : 0, e } }, function (t, e) { t.exports = function (t) { var e = typeof t; return "string" == e || "number" == e || "symbol" == e || "boolean" == e ? "__proto__" !== t : null === t } }, function (t, e, i) { var n = i(13); t.exports = function (t) { return n(this, t).get(t) } }, function (t, e, i) { var n = i(13); t.exports = function (t) { return n(this, t).has(t) } }, function (t, e, i) { var n = i(13); t.exports = function (t, e) { var i = n(this, t), o = i.size; return i.set(t, e), this.size += i.size == o ? 0 : 1, this } }, function (t, e, i) { var n = i(85)(); t.exports = n }, function (t, e) { t.exports = function (t) { return function (e, i, n) { for (var o = -1, r = Object(e), a = n(e), s = a.length; s--;) { var h = a[t ? s : ++o]; if (!1 === i(r[h], h, r)) break } return e } } }, function (t, e, i) { var n = i(27), o = i(87), r = i(88), a = i(91), s = i(92), h = i(19), l = i(6), u = i(96), c = i(31), p = i(15), d = i(3), f = i(98), _ = i(32), m = i(33), g = i(102); t.exports = function (t, e, i, v, y, b, L) { var w = m(t, i), x = m(e, i), k = L.get(x); if (k) n(t, i, k); else { var M = b ? b(w, x, i + "", t, e, L) : void 0, P = void 0 === M; if (P) { var C = l(x), T = !C && c(x), S = !C && !T && _(x); M = x, C || T || S ? l(w) ? M = w : u(w) ? M = a(w) : T ? (P = !1, M = o(x, !0)) : S ? (P = !1, M = r(x, !0)) : M = [] : f(x) || h(x) ? (M = w, h(w) ? M = g(w) : d(w) && !p(w) || (M = s(x))) : P = !1 } P && (L.set(x, M), y(M, x, v, b, L), L["delete"](x)), n(t, i, M) } } }, function (t, e, i) { (function (t) { var n = i(4), o = "object" == typeof e && e && !e.nodeType && e, r = o && "object" == typeof t && t && !t.nodeType && t, a = r && r.exports === o ? n.Buffer : void 0, s = a ? a.allocUnsafe : void 0; t.exports = function (t, e) { if (e) return t.slice(); var i = t.length, n = s ? s(i) : new t.constructor(i); return t.copy(n), n } }).call(e, i(18)(t)) }, function (t, e, i) { var n = i(89); t.exports = function (t, e) { var i = e ? n(t.buffer) : t.buffer; return new t.constructor(i, t.byteOffset, t.length) } }, function (t, e, i) { var n = i(90); t.exports = function (t) { var e = new t.constructor(t.byteLength); return new n(e).set(new n(t)), e } }, function (t, e, i) { var n = i(4).Uint8Array; t.exports = n }, function (t, e) { t.exports = function (t, e) { var i = -1, n = t.length; for (e || (e = Array(n)); ++i < n;)e[i] = t[i]; return e } }, function (t, e, i) { var n = i(93), o = i(29), r = i(30); t.exports = function (t) { return "function" != typeof t.constructor || r(t) ? {} : n(o(t)) } }, function (t, e, i) { var n = i(3), o = Object.create, r = function () { function t() { } return function (e) { if (!n(e)) return {}; if (o) return o(e); t.prototype = e; var i = new t; return t.prototype = void 0, i } }(); t.exports = r }, function (t, e) { t.exports = function (t, e) { return function (i) { return t(e(i)) } } }, function (t, e, i) { var n = i(7), o = i(5), r = "[object Arguments]"; t.exports = function (t) { return o(t) && n(t) == r } }, function (t, e, i) { var n = i(20), o = i(5); t.exports = function (t) { return o(t) && n(t) } }, function (t, e) { t.exports = function () { return !1 } }, function (t, e, i) { var n = i(7), o = i(29), r = i(5), a = "[object Object]", s = Function.prototype, h = Object.prototype, l = s.toString, u = h.hasOwnProperty, c = l.call(Object); t.exports = function (t) { if (!r(t) || n(t) != a) return !1; var e = o(t); if (null === e) return !0; var i = u.call(e, "constructor") && e.constructor; return "function" == typeof i && i instanceof i && l.call(i) == c } }, function (t, e, i) { var n = i(7), o = i(21), r = i(5), a = {}; a["[object Float32Array]"] = a["[object Float64Array]"] = a["[object Int8Array]"] = a["[object Int16Array]"] = a["[object Int32Array]"] = a["[object Uint8Array]"] = a["[object Uint8ClampedArray]"] = a["[object Uint16Array]"] = a["[object Uint32Array]"] = !0, a["[object Arguments]"] = a["[object Array]"] = a["[object ArrayBuffer]"] = a["[object Boolean]"] = a["[object DataView]"] = a["[object Date]"] = a["[object Error]"] = a["[object Function]"] = a["[object Map]"] = a["[object Number]"] = a["[object Object]"] = a["[object RegExp]"] = a["[object Set]"] = a["[object String]"] = a["[object WeakMap]"] = !1, t.exports = function (t) { return r(t) && o(t.length) && !!a[n(t)] } }, function (t, e) { t.exports = function (t) { return function (e) { return t(e) } } }, function (t, e, i) { (function (t) { var n = i(25), o = "object" == typeof e && e && !e.nodeType && e, r = o && "object" == typeof t && t && !t.nodeType && t, a = r && r.exports === o && n.process, s = function () { try { var t = r && r.require && r.require("util").types; return t || a && a.binding && a.binding("util") } catch (e) { } }(); t.exports = s }).call(e, i(18)(t)) }, function (t, e, i) { var n = i(103), o = i(34); t.exports = function (t) { return n(t, o(t)) } }, function (t, e, i) { var n = i(104), o = i(17); t.exports = function (t, e, i, r) { var a = !i; i || (i = {}); for (var s = -1, h = e.length; ++s < h;) { var l = e[s], u = r ? r(i[l], t[l], l, i, t) : void 0; void 0 === u && (u = t[l]), a ? o(i, l, u) : n(i, l, u) } return i } }, function (t, e, i) { var n = i(17), o = i(11), r = Object.prototype.hasOwnProperty; t.exports = function (t, e, i) { var a = t[e]; r.call(t, e) && o(a, i) && (void 0 !== i || e in t) || n(t, e, i) } }, function (t, e, i) { var n = i(106), o = i(19), r = i(6), a = i(31), s = i(22), h = i(32), l = Object.prototype.hasOwnProperty; t.exports = function (t, e) { var i = r(t), u = !i && o(t), c = !i && !u && a(t), p = !i && !u && !c && h(t), d = i || u || c || p, f = d ? n(t.length, String) : [], _ = f.length; for (var m in t) !e && !l.call(t, m) || d && ("length" == m || c && ("offset" == m || "parent" == m) || p && ("buffer" == m || "byteLength" == m || "byteOffset" == m) || s(m, _)) || f.push(m); return f } }, function (t, e) { t.exports = function (t, e) { for (var i = -1, n = Array(t); ++i < t;)n[i] = e(i); return n } }, function (t, e, i) { var n = i(3), o = i(30), r = i(108), a = Object.prototype.hasOwnProperty; t.exports = function (t) { if (!n(t)) return r(t); var e = o(t), i = []; for (var s in t) ("constructor" != s || !e && a.call(t, s)) && i.push(s); return i } }, function (t, e) { t.exports = function (t) { var e = []; if (null != t) for (var i in Object(t)) e.push(i); return e } }, function (t, e, i) { var n = i(110), o = i(117); t.exports = function (t) { return n((function (e, i) { var n = -1, r = i.length, a = r > 1 ? i[r - 1] : void 0, s = r > 2 ? i[2] : void 0; for (a = t.length > 3 && "function" == typeof a ? (r--, a) : void 0, s && o(i[0], i[1], s) && (a = r < 3 ? void 0 : a, r = 1), e = Object(e); ++n < r;) { var h = i[n]; h && t(e, h, n, a) } return e })) } }, function (t, e, i) { var n = i(35), o = i(111), r = i(113); t.exports = function (t, e) { return r(o(t, e, n), t + "") } }, function (t, e, i) { var n = i(112), o = Math.max; t.exports = function (t, e, i) { return e = o(void 0 === e ? t.length - 1 : e, 0), function () { for (var r = arguments, a = -1, s = o(r.length - e, 0), h = Array(s); ++a < s;)h[a] = r[e + a]; a = -1; for (var l = Array(e + 1); ++a < e;)l[a] = r[a]; return l[e] = i(h), n(t, this, l) } } }, function (t, e) { t.exports = function (t, e, i) { switch (i.length) { case 0: return t.call(e); case 1: return t.call(e, i[0]); case 2: return t.call(e, i[0], i[1]); case 3: return t.call(e, i[0], i[1], i[2]) }return t.apply(e, i) } }, function (t, e, i) { var n = i(114), o = i(116)(n); t.exports = o }, function (t, e, i) { var n = i(115), o = i(28), r = i(35), a = o ? function (t, e) { return o(t, "toString", { configurable: !0, enumerable: !1, value: n(e), writable: !0 }) } : r; t.exports = a }, function (t, e) { t.exports = function (t) { return function () { return t } } }, function (t, e) { var i = 800, n = 16, o = Date.now; t.exports = function (t) { var e = 0, r = 0; return function () { var a = o(), s = n - (a - r); if (r = a, s > 0) { if (++e >= i) return arguments[0] } else e = 0; return t.apply(void 0, arguments) } } }, function (t, e, i) { var n = i(11), o = i(20), r = i(22), a = i(3); t.exports = function (t, e, i) { if (!a(i)) return !1; var s = typeof e; return !!("number" == s ? o(i) && r(e, i.length) : "string" == s && e in i) && n(i[e], t) } }, function (t, e) { t.exports = { tooltips: { placeMarker: "Click to place marker", firstVertex: "Click to place first vertex", continueLine: "Click to continue drawing", finishLine: "Click any existing marker to finish", finishPoly: "Click first marker to finish", finishRect: "Click to finish", startCircle: "Click to place circle center", finishCircle: "Click to finish circle", placeCircleMarker: "Click to place circle marker" }, actions: { finish: "Finish", cancel: "Cancel", removeLastVertex: "Remove Last Vertex" }, buttonTitles: { drawMarkerButton: "Draw Marker", drawPolyButton: "Draw Polygons", drawLineButton: "Draw Polyline", drawCircleButton: "Draw Circle", drawRectButton: "Draw Rectangle", editButton: "Edit Layers", dragButton: "Drag Layers", cutButton: "Cut Layers", deleteButton: "Remove Layers", drawCircleMarkerButton: "Draw Circle Marker" } } }, function (t, e) { t.exports = { tooltips: { placeMarker: "Platziere den Marker mit Klick", firstVertex: "Platziere den ersten Marker mit Klick", continueLine: "Klicke, um weiter zu zeichnen", finishLine: "Beende mit Klick auf existierenden Marker", finishPoly: "Beende mit Klick auf ersten Marker", finishRect: "Beende mit Klick", startCircle: "Platziere das Kreiszentrum mit Klick", finishCircle: "Beende den Kreis mit Klick", placeCircleMarker: "Platziere den Kreismarker mit Klick" }, actions: { finish: "Beenden", cancel: "Abbrechen", removeLastVertex: "Letzten Vertex l枚schen" }, buttonTitles: { drawMarkerButton: "Marker zeichnen", drawPolyButton: "Polygon zeichnen", drawLineButton: "Polyline zeichnen", drawCircleButton: "Kreis zeichnen", drawRectButton: "Rechteck zeichnen", editButton: "Layer editieren", dragButton: "Layer bewegen", cutButton: "Layer schneiden", deleteButton: "Layer l枚schen", drawCircleMarkerButton: "Kreismarker zeichnen" } } }, function (t, e) { t.exports = { tooltips: { placeMarker: "Clicca per posizionare un Marker", firstVertex: "Clicca per posizionare il primo vertice", continueLine: "Clicca per continuare a disegnare", finishLine: "Clicca qualsiasi marker esistente per terminare", finishPoly: "Clicca il primo marker per terminare", finishRect: "Clicca per terminare", startCircle: "Clicca per posizionare il punto centrale del cerchio", finishCircle: "Clicca per terminare il cerchio", placeCircleMarker: "Clicca per posizionare un Marker del cherchio" }, actions: { finish: "Termina", cancel: "Annulla", removeLastVertex: "Rimuovi l'ultimo vertice" }, buttonTitles: { drawMarkerButton: "Disegna Marker", drawPolyButton: "Disegna Poligoni", drawLineButton: "Disegna Polilinea", drawCircleButton: "Disegna Cerchio", drawRectButton: "Disegna Rettangolo", editButton: "Modifica Livelli", dragButton: "Sposta Livelli", cutButton: "Ritaglia Livelli", deleteButton: "Elimina Livelli", drawCircleMarkerButton: "Disegna Marker del Cherchio" } } }, function (t, e) { t.exports = { tooltips: { placeMarker: "Adaug膬 un punct", firstVertex: "Apas膬 aici pentru a ad膬uga primul Vertex", continueLine: "Apas膬 aici pentru a continua desenul", finishLine: "Apas膬 pe orice obiect pentru a finisa desenul", finishPoly: "Apas膬 pe primul obiect pentru a finisa", finishRect: "Apas膬 pentru a finisa", startCircle: "Apas膬 pentru a desena un cerc", finishCircle: "Apas膬 pentru a finisa un cerc", placeCircleMarker: "Adaug膬 un punct" }, actions: { finish: "Termin膬", cancel: "Anuleaz膬", removeLastVertex: "葮terge ultimul Vertex" }, buttonTitles: { drawMarkerButton: "Adaug膬 o bulin膬", drawPolyButton: "Deseneaz膬 un poligon", drawLineButton: "Deseneaz膬 o linie", drawCircleButton: "Deseneaz膬 un cerc", drawRectButton: "Deseneaz膬 un dreptunghi", editButton: "Editeaz膬 straturile", dragButton: "Mut膬 straturile", cutButton: "Taie straturile", deleteButton: "葮terge straturile", placeCircleMarker: "Adaug膬 o bulin膬" } } }, function (t, e) { t.exports = { tooltips: { placeMarker: "些械谢泻薪懈褌械, 褔褌芯斜褘 锌芯屑械褋褌懈褌褜 屑邪褉泻械褉", firstVertex: "袧邪卸屑懈褌械, 褔褌芯斜褘 锌芯屑械褋褌懈褌褜 锌械褉胁褘泄 芯斜褗械泻褌", continueLine: "袧邪卸屑懈褌械, 褔褌芯斜褘 锌褉芯写芯谢卸懈褌褜 褉懈褋芯胁邪薪懈械", finishLine: "些械谢泻薪懈褌械 谢褞斜芯泄 褋褍褖械褋褌胁褍褞褖懈泄 屑邪褉泻械褉 写谢褟 蟹邪胁械褉褕械薪懈褟", finishPoly: "袙褘斜械褉懈褌械 锌械褉胁褍褞 褌芯褔泻褍, 褔褌芯斜褘 蟹邪泻芯薪褔懈褌褜", finishRect: "袧邪卸屑懈褌械, 褔褌芯斜褘 蟹邪泻芯薪褔懈褌褜", startCircle: "袧邪卸屑懈褌械 褔褌芯斜褘 写芯斜邪胁懈褌褜 泻褉褍谐", finishCircle: "袧邪卸屑懈褌械 褔褌芯斜褘 蟹邪泻芯薪褔懈褌褜 泻褉褍谐", placeCircleMarker: "Click to place circle marker" }, actions: { finish: "袟邪泻邪薪褔懈胁邪褌褜", cancel: "袨褌屑械薪邪", removeLastVertex: "校写邪谢懈褌褜 锌芯褋谢械写薪懈泄 芯斜褗械泻褌 薪邪 泻邪褉褌械" }, buttonTitles: { drawMarkerButton: "袛芯斜邪胁懈褌褜 屑邪褉泻械褉", drawPolyButton: "袪懈褋芯胁邪褌褜 锌芯谢懈谐芯薪", drawLineButton: "袪懈褋芯胁邪褌褜 袩芯谢懈谢懈薪懈褞", drawCircleButton: "袪懈褋芯胁邪褌褜 泻褉褍谐", drawRectButton: "袪懈褋芯胁邪褌褜 袩褉褟屑芯褍谐芯谢褜薪懈泻", editButton: "袪械写邪泻褌懈褉芯胁邪褌褜 褋谢芯泄", dragButton: "袩械褉械褌邪褋泻懈胁邪褌褜 褋谢芯泄", cutButton: "袙褘褉械蟹邪褌褜 褋谢芯泄", deleteButton: "校写邪谢懈褌褜 褋谢芯泄", placeCircleMarker: "些械谢泻薪懈褌械, 褔褌芯斜褘 锌芯屑械褋褌懈褌褜 屑邪褉泻械褉" } } }, function (t, e) { t.exports = { tooltips: { placeMarker: "Presiona para colocar un marcador", firstVertex: "Presiona para colocar el primer v茅rtice", continueLine: "Presiona para continuar dibujando", finishLine: "Presiona cualquier marcador existente para finalizar", finishPoly: "Presiona el primer marcador para finalizar", finishRect: "Presiona para finalizar", startCircle: "Presiona para colocar el centro del circulo", finishCircle: "Presiona para finalizar el circulo", placeCircleMarker: "Presiona para colocar un marcador de circulo" }, actions: { finish: "Finalizar", cancel: "Cancelar", removeLastVertex: "Remover ultimo v茅rtice" }, buttonTitles: { drawMarkerButton: "Dibujar Marcador", drawPolyButton: "Dibujar Pol铆gono", drawLineButton: "Dibujar L铆nea", drawCircleButton: "Dibujar Circulo", drawRectButton: "Dibujar Rect谩ngulo", editButton: "Editar Capas", dragButton: "Arrastrar Capas", cutButton: "Cortar Capas", deleteButton: "Remover Capas", drawCircleMarkerButton: "Dibujar Marcador de Circulo" } } }, function (t, e) { t.exports = { tooltips: { placeMarker: "Klik om een marker te plaatsen", firstVertex: "Klik om het eerste punt te plaatsen", continueLine: "Klik om te blijven tekenen", finishLine: "Klik op een bestaand punt om te be毛indigen", finishPoly: "Klik op het eerst punt om te be毛indigen", finishRect: "Klik om te be毛indigen", startCircle: "Klik om het middelpunt te plaatsen", finishCircle: "Klik om de cirkel te be毛indigen", placeCircleMarker: "Klik om een marker te plaatsen" }, actions: { finish: "Bewaar", cancel: "Annuleer", removeLastVertex: "Verwijder laatste punt" }, buttonTitles: { drawMarkerButton: "Plaats Marker", drawPolyButton: "Teken een vlak", drawLineButton: "Teken een lijn", drawCircleButton: "Teken een cirkel", drawRectButton: "Teken een vierkant", editButton: "Bewerk", dragButton: "Verplaats", cutButton: "Knip", deleteButton: "Verwijder", drawCircleMarkerButton: "Plaats Marker" } } }, function (t, e) { t.exports = { tooltips: { placeMarker: "Cliquez pour placer un marqueur", firstVertex: "Cliquez pour placer le premier sommet", continueLine: "Cliquez pour continuer 脿 dessiner", finishLine: "Cliquez sur n'importe quel marqueur pour terminer", finishPoly: "Cliquez sur le premier marqueur pour terminer", finishRect: "Cliquez pour terminer", startCircle: "Cliquez pour placer le centre du cercle", finishCircle: "Cliquez pour finir le cercle" }, actions: { finish: "Terminer", cancel: "Annuler", removeLastVertex: "Retirer le dernier sommet" }, buttonTitles: { drawMarkerButton: "Placer des marqueurs", drawPolyButton: "Dessiner des polygones", drawLineButton: "Dessiner des polylignes", drawCircleButton: "Dessiner un cercle", drawRectButton: "Dessiner un rectangle", editButton: "脡diter des calques", dragButton: "D茅placer des calques", cutButton: "Couper des calques", deleteButton: "Supprimer des calques" } } }, function (t, e) { t.exports = { tooltips: { placeMarker: "鍗曞嚮鏀剧疆鏍囪", firstVertex: "鍗曞嚮鏀剧疆棣栦釜椤剁偣", continueLine: "鍗曞嚮缁х画缁樺埗", finishLine: "鍗曞嚮浠讳綍瀛樺湪鐨勬爣璁颁互瀹屾垚", finishPoly: "鍗曞嚮绗竴涓爣璁颁互瀹屾垚", finishRect: "鍗曞嚮瀹屾垚", startCircle: "鍗曞嚮鏀剧疆鍦嗗績", finishCircle: "鍗曞嚮瀹屾垚鍦嗗舰" }, actions: { finish: "瀹屾垚", cancel: "鍙栨秷", removeLastVertex: "绉婚櫎鏈�鍚庣殑椤剁偣" }, buttonTitles: { drawMarkerButton: "缁樺埗鏍囪", drawPolyButton: "缁樺埗澶氳竟褰�", drawLineButton: "缁樺埗绾挎", drawCircleButton: "缁樺埗鍦嗗舰", drawRectButton: "缁樺埗闀挎柟褰�", editButton: "缂栬緫鍥惧眰", dragButton: "鎷栨嫿鍥惧眰", cutButton: "鍓垏鍥惧眰", deleteButton: "鍒犻櫎鍥惧眰" } } }, function (t, e) { t.exports = { tooltips: { placeMarker: "Clique para posicionar o marcador", firstVertex: "Clique para posicionar o primeiro v茅rtice", continueLine: "Clique para continuar desenhando", finishLine: "Clique em qualquer marcador existente para finalizar", finishPoly: "Clique no primeiro ponto para fechar o pol铆gono", finishRect: "Clique para finalizar", startCircle: "Clique para posicionar o centro do c铆rculo", finishCircle: "Clique para fechar o c铆rculo" }, actions: { finish: "Finalizar", cancel: "Cancelar", removeLastVertex: "Remover 煤ltimo v茅rtice" }, buttonTitles: { drawMarkerButton: "Desenhar um marcador", drawPolyButton: "Desenhar um pol铆gono", drawLineButton: "Desenhar uma polilinha", drawCircleButton: "Desenhar um c铆rculo", drawRectButton: "Desenhar um ret芒ngulo", editButton: "Editar camada(s)", dragButton: "Mover camada(s)", cutButton: "Recortar camada(s)", deleteButton: "Remover camada(s)" } } }, function (t, e, i) { "use strict"; var n = i(129), o = i(0); L.Control.PMButton = n.a; var r = L.Class.extend({ options: { drawMarker: !0, drawRectangle: !0, drawPolyline: !0, drawPolygon: !0, drawCircle: !0, drawCircleMarker: !0, editMode: !0, dragMode: !0, cutPolygon: !0, removalMode: !0, position: "topleft" }, initialize: function (t) { this.init(t) }, reinit: function () { var t = this.isVisible; this.removeControls(), this._defineButtons(), t && this.addControls() }, init: function (t) { this.map = t, this.buttons = {}, this.isVisible = !1, this.drawContainer = L.DomUtil.create("div", "leaflet-pm-toolbar leaflet-pm-draw leaflet-bar leaflet-control"), this.editContainer = L.DomUtil.create("div", "leaflet-pm-toolbar leaflet-pm-edit leaflet-bar leaflet-control"), this._defineButtons() }, getButtons: function () { return this.buttons }, addControls: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.options; "undefined" != typeof t.editPolygon && (t.editMode = t.editPolygon), "undefined" != typeof t.deleteLayer && (t.removalMode = t.deleteLayer), L.Util.setOptions(this, t), this.applyIconStyle(), this._showHideButtons(), this.isVisible = !0 }, applyIconStyle: function () { var t = this.getButtons(), e = { geomanIcons: { drawMarker: "control-icon leaflet-pm-icon-marker", drawPolyline: "control-icon leaflet-pm-icon-polyline", drawRectangle: "control-icon leaflet-pm-icon-rectangle", drawPolygon: "control-icon leaflet-pm-icon-polygon", drawCircle: "control-icon leaflet-pm-icon-circle", drawCircleMarker: "control-icon leaflet-pm-icon-circle-marker", editMode: "control-icon leaflet-pm-icon-edit", dragMode: "control-icon leaflet-pm-icon-drag", cutPolygon: "control-icon leaflet-pm-icon-cut", removalMode: "control-icon leaflet-pm-icon-delete" } }; for (var i in t) { var n = t[i]; L.Util.setOptions(n, { className: e.geomanIcons[i] }) } }, removeControls: function () { var t = this.getButtons(); for (var e in t) t[e].remove(); this.isVisible = !1 }, toggleControls: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.options; this.isVisible ? this.removeControls() : this.addControls(t) }, _addButton: function (t, e) { return this.buttons[t] = e, this.options[t] = this.options[t] || !1, this.buttons[t] }, triggerClickOnToggledButtons: function (t) { for (var e in this.buttons) this.buttons[e] !== t && this.buttons[e].toggled() && this.buttons[e]._triggerClick() }, toggleButton: function (t, e) { return "editPolygon" === t && (t = "editMode"), "deleteLayer" === t && (t = "removalMode"), this.triggerClickOnToggledButtons(this.buttons[t]), this.buttons[t].toggle(e) }, _defineButtons: function () { var t = this, e = { className: "control-icon leaflet-pm-icon-marker", title: Object(o.a)("buttonTitles.drawMarkerButton"), jsClass: "Marker", onClick: function () { }, afterClick: function () { t.map.pm.Draw.Marker.toggle() }, doToggle: !0, toggleStatus: !1, disableOtherButtons: !0, position: this.options.position, actions: ["cancel"] }, i = { title: Object(o.a)("buttonTitles.drawPolyButton"), className: "control-icon leaflet-pm-icon-polygon", jsClass: "Polygon", onClick: function () { }, afterClick: function () { t.map.pm.Draw.Polygon.toggle() }, doToggle: !0, toggleStatus: !1, disableOtherButtons: !0, position: this.options.position, actions: ["finish", "removeLastVertex", "cancel"] }, n = { className: "control-icon leaflet-pm-icon-polyline", title: Object(o.a)("buttonTitles.drawLineButton"), jsClass: "Line", onClick: function () { }, afterClick: function () { t.map.pm.Draw.Line.toggle() }, doToggle: !0, toggleStatus: !1, disableOtherButtons: !0, position: this.options.position, actions: ["finish", "removeLastVertex", "cancel"] }, r = { title: Object(o.a)("buttonTitles.drawCircleButton"), className: "control-icon leaflet-pm-icon-circle", jsClass: "Circle", onClick: function () { }, afterClick: function () { t.map.pm.Draw.Circle.toggle() }, doToggle: !0, toggleStatus: !1, disableOtherButtons: !0, position: this.options.position, actions: ["cancel"] }, a = { title: Object(o.a)("buttonTitles.drawCircleMarkerButton"), className: "control-icon leaflet-pm-icon-circle-marker", jsClass: "CircleMarker", onClick: function () { }, afterClick: function () { t.map.pm.Draw.CircleMarker.toggle() }, doToggle: !0, toggleStatus: !1, disableOtherButtons: !0, position: this.options.position, actions: ["cancel"] }, s = { title: Object(o.a)("buttonTitles.drawRectButton"), className: "control-icon leaflet-pm-icon-rectangle", jsClass: "Rectangle", onClick: function () { }, afterClick: function () { t.map.pm.Draw.Rectangle.toggle() }, doToggle: !0, toggleStatus: !1, disableOtherButtons: !0, position: this.options.position, actions: ["cancel"] }, h = { title: Object(o.a)("buttonTitles.editButton"), className: "control-icon leaflet-pm-icon-edit", onClick: function () { }, afterClick: function () { t.map.pm.toggleGlobalEditMode() }, doToggle: !0, toggleStatus: !1, disableOtherButtons: !0, position: this.options.position, tool: "edit", actions: ["cancel"] }, l = { title: Object(o.a)("buttonTitles.dragButton"), className: "control-icon leaflet-pm-icon-drag", onClick: function () { }, afterClick: function () { t.map.pm.toggleGlobalDragMode() }, doToggle: !0, toggleStatus: !1, disableOtherButtons: !0, position: this.options.position, tool: "edit", actions: ["cancel"] }, u = { title: Object(o.a)("buttonTitles.cutButton"), className: "control-icon leaflet-pm-icon-cut", jsClass: "Cut", onClick: function () { }, afterClick: function () { t.map.pm.Draw.Cut.toggle({ snappable: !0, cursorMarker: !0, allowSelfIntersection: !1 }) }, doToggle: !0, toggleStatus: !1, disableOtherButtons: !0, position: this.options.position, tool: "edit", actions: ["finish", "removeLastVertex", "cancel"] }, c = { title: Object(o.a)("buttonTitles.deleteButton"), className: "control-icon leaflet-pm-icon-delete", onClick: function () { }, afterClick: function () { t.map.pm.toggleGlobalRemovalMode() }, doToggle: !0, toggleStatus: !1, disableOtherButtons: !0, position: this.options.position, tool: "edit", actions: ["cancel"] }; this._addButton("drawMarker", new L.Control.PMButton(e)), this._addButton("drawPolyline", new L.Control.PMButton(n)), this._addButton("drawRectangle", new L.Control.PMButton(s)), this._addButton("drawPolygon", new L.Control.PMButton(i)), this._addButton("drawCircle", new L.Control.PMButton(r)), this._addButton("drawCircleMarker", new L.Control.PMButton(a)), this._addButton("editMode", new L.Control.PMButton(h)), this._addButton("dragMode", new L.Control.PMButton(l)), this._addButton("cutPolygon", new L.Control.PMButton(u)), this._addButton("removalMode", new L.Control.PMButton(c)) }, _showHideButtons: function () { this.removeControls(); var t = this.getButtons(); for (var e in t) this.options[e] && (t[e].setPosition(this.options.position), t[e].addTo(this.map)) } }); e.a = r }, function (t, e, i) { "use strict"; var n = i(0), o = L.Control.extend({ options: { position: "topleft" }, initialize: function (t) { this._button = L.Util.setOptions(this, t) }, onAdd: function (t) { return this._map = t, this._container = "edit" === this._button.tool ? this._map.pm.Toolbar.editContainer : this._map.pm.Toolbar.drawContainer, this.buttonsDomNode = this._makeButton(this._button), this._container.appendChild(this.buttonsDomNode), this._container }, onRemove: function () { return this.buttonsDomNode.remove(), this._container }, getText: function () { return this._button.text }, getIconUrl: function () { return this._button.iconUrl }, destroy: function () { this._button = {}, this._update() }, toggle: function (t) { return this._button.toggleStatus = "boolean" == typeof t ? t : !this._button.toggleStatus, this._applyStyleClasses(), this._button.toggleStatus }, toggled: function () { return this._button.toggleStatus }, onCreate: function () { this.toggle(!1) }, _triggerClick: function (t) { this._button.onClick(t), this._clicked(t), this._button.afterClick(t) }, _makeButton: function (t) { var e = this, i = L.DomUtil.create("div", "button-container", this._container), o = L.DomUtil.create("a", "leaflet-buttons-control-button", i), r = L.DomUtil.create("div", "leaflet-pm-actions-container", i), a = t.actions, s = { cancel: { text: Object(n.a)("actions.cancel"), onClick: function () { this._triggerClick() } }, removeLastVertex: { text: Object(n.a)("actions.removeLastVertex"), onClick: function () { this._map.pm.Draw[t.jsClass]._removeLastVertex() } }, finish: { text: Object(n.a)("actions.finish"), onClick: function (e) { this._map.pm.Draw[t.jsClass]._finishShape(e) } } }; a.forEach((function (t) { var i = s[t], n = L.DomUtil.create("a", "leaflet-pm-action action-".concat(t), r); n.innerHTML = i.text, L.DomEvent.addListener(n, "click", i.onClick, e), L.DomEvent.disableClickPropagation(n) })), t.toggleStatus && L.DomUtil.addClass(o, "active"); var h = L.DomUtil.create("div", "control-icon", o); return t.title && h.setAttribute("title", t.title), t.iconUrl && h.setAttribute("src", t.iconUrl), t.className && L.DomUtil.addClass(h, t.className), L.DomEvent.addListener(o, "click", (function () { e._button.disableOtherButtons && e._map.pm.Toolbar.triggerClickOnToggledButtons(e) })), L.DomEvent.addListener(o, "click", this._triggerClick, this), L.DomEvent.disableClickPropagation(o), i }, _applyStyleClasses: function () { this._container && (this._button.toggleStatus ? L.DomUtil.addClass(this.buttonsDomNode, "active") : L.DomUtil.removeClass(this.buttonsDomNode, "active")) }, _clicked: function () { this._button.doToggle && this.toggle() } }); e.a = o }, function (t, e, i) { var n = i(38), o = i(39); t.exports = function (t, e) { for (var i = 0, r = (e = n(e, t)).length; null != t && i < r;)t = t[o(e[i++])]; return i && i == r ? t : void 0 } }, function (t, e, i) { var n = i(6), o = i(23), r = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, a = /^\w*$/; t.exports = function (t, e) { if (n(t)) return !1; var i = typeof t; return !("number" != i && "symbol" != i && "boolean" != i && null != t && !o(t)) || a.test(t) || !r.test(t) || null != e && t in Object(e) } }, function (t, e, i) { var n = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, o = /\\(\\)?/g, r = i(133)((function (t) { var e = []; return 46 === t.charCodeAt(0) && e.push(""), t.replace(n, (function (t, i, n, r) { e.push(n ? r.replace(o, "$1") : i || t) })), e })); t.exports = r }, function (t, e, i) { var n = i(134), o = 500; t.exports = function (t) { var e = n(t, (function (t) { return i.size === o && i.clear(), t })), i = e.cache; return e } }, function (t, e, i) { var n = i(26), o = "Expected a function"; function r(t, e) { if ("function" != typeof t || null != e && "function" != typeof e) throw new TypeError(o); var i = function () { var n = arguments, o = e ? e.apply(this, n) : n[0], r = i.cache; if (r.has(o)) return r.get(o); var a = t.apply(this, n); return i.cache = r.set(o, a) || r, a }; return i.cache = new (r.Cache || n), i } r.Cache = n, t.exports = r }, function (t, e, i) { var n = i(136); t.exports = function (t) { return null == t ? "" : n(t) } }, function (t, e, i) { var n = i(16), o = i(137), r = i(6), a = i(23), s = 1 / 0, h = n ? n.prototype : void 0, l = h ? h.toString : void 0; t.exports = function t(e) { if ("string" == typeof e) return e; if (r(e)) return o(e, t) + ""; if (a(e)) return l ? l.call(e) : ""; var i = e + ""; return "0" == i && 1 / e == -s ? "-0" : i } }, function (t, e) { t.exports = function (t, e) { for (var i = -1, n = null == t ? 0 : t.length, o = Array(n); ++i < n;)o[i] = e(t[i], i, t); return o } }, function (t, e, i) { var n = i(139), o = i(140); t.exports = function (t, e) { return null != t && o(t, e, n) } }, function (t, e) { var i = Object.prototype.hasOwnProperty; t.exports = function (t, e) { return null != t && i.call(t, e) } }, function (t, e, i) { var n = i(38), o = i(19), r = i(6), a = i(22), s = i(21), h = i(39); t.exports = function (t, e, i) { for (var l = -1, u = (e = n(e, t)).length, c = !1; ++l < u;) { var p = h(e[l]); if (!(c = null != t && i(t, p))) break; t = t[p] } return c || ++l != u ? c : !!(u = null == t ? 0 : t.length) && s(u) && a(p, u) && (r(t) || o(t)) } }, function (t, e, i) { "use strict"; var n = i(1), o = i(0); n.a.Marker = n.a.extend({ initialize: function (t) { this._map = t, this._shape = "Marker", this.toolbarButtonName = "drawMarker" }, enable: function (t) { var e = this; L.Util.setOptions(this, t), this._enabled = !0, this._map.on("click", this._createMarker, this), this._map.pm.Toolbar.toggleButton(this.toolbarButtonName, !0), this._hintMarker = L.marker([0, 0], this.options.markerStyle), this._hintMarker._pmTempLayer = !0, this._hintMarker.addTo(this._map), this.options.tooltips && this._hintMarker.bindTooltip(Object(o.a)("tooltips.placeMarker"), { permanent: !0, offset: L.point(0, 10), direction: "bottom", opacity: .8 }).openTooltip(), this._layer = this._hintMarker, this._map.on("mousemove", this._syncHintMarker, this), this._map.fire("pm:drawstart", { shape: this._shape, workingLayer: this._layer }), this._map.eachLayer((function (t) { e.isRelevantMarker(t) && t.pm.enable() })) }, disable: function () { var t = this; this._enabled && (this._map.off("click", this._createMarker, this), this._hintMarker.remove(), this._map.off("mousemove", this._syncHintMarker, this), this._map.eachLayer((function (e) { t.isRelevantMarker(e) && e.pm.disable() })), this._map.fire("pm:drawend", { shape: this._shape }), this._map.pm.Toolbar.toggleButton(this.toolbarButtonName, !1), this.options.snappable && this._cleanupSnapping(), this._enabled = !1) }, isRelevantMarker: function (t) { return t instanceof L.Marker && t.pm && !t._pmTempLayer }, enabled: function () { return this._enabled }, toggle: function (t) { this.enabled() ? this.disable() : this.enable(t) }, _createMarker: function (t) { if (t.latlng) { this._hintMarker._snapped || this._hintMarker.setLatLng(t.latlng); var e = this._hintMarker.getLatLng(), i = new L.Marker(e, this.options.markerStyle); i.addTo(this._map), i.pm.enable(), this._map.fire("pm:create", { shape: this._shape, marker: i, layer: i }), this._cleanupSnapping() } }, _syncHintMarker: function (t) { if (this._hintMarker.setLatLng(t.latlng), this.options.snappable) { var e = t; e.target = this._hintMarker, this._handleSnapping(e) } } }) }, function (t, e, i) { "use strict"; var n = i(42), o = i.n(n), r = i(1), a = i(0); r.a.Line = r.a.extend({ initialize: function (t) { this._map = t, this._shape = "Line", this.toolbarButtonName = "drawPolyline", this._doesSelfIntersect = !1 }, enable: function (t) { L.Util.setOptions(this, t), this.options.finishOnDoubleClick && !this.options.finishOn && (this.options.finishOn = "dblclick"), this._enabled = !0, this._layerGroup = new L.LayerGroup, this._layerGroup._pmTempLayer = !0, this._layerGroup.addTo(this._map), this._layer = L.polyline([], this.options.templineStyle), this._layer._pmTempLayer = !0, this._layerGroup.addLayer(this._layer), this._hintline = L.polyline([], this.options.hintlineStyle), this._hintline._pmTempLayer = !0, this._layerGroup.addLayer(this._hintline), this._hintMarker = L.marker(this._map.getCenter(), { icon: L.divIcon({ className: "marker-icon cursor-marker" }) }), this._hintMarker._pmTempLayer = !0, this._layerGroup.addLayer(this._hintMarker), this.options.cursorMarker && L.DomUtil.addClass(this._hintMarker._icon, "visible"), this.options.tooltips && this._hintMarker.bindTooltip(Object(a.a)("tooltips.firstVertex"), { permanent: !0, offset: L.point(0, 10), direction: "bottom", opacity: .8 }).openTooltip(), this._map._container.style.cursor = "crosshair", this._map.on("click", this._createVertex, this), this.options.finishOn && this._map.on(this.options.finishOn, this._finishShape, this), "dblclick" === this.options.finishOn && (this.tempMapDoubleClickZoomState = this._map.doubleClickZoom._enabled, this.tempMapDoubleClickZoomState && this._map.doubleClickZoom.disable()), this._map.on("mousemove", this._syncHintMarker, this), this._hintMarker.on("move", this._syncHintLine, this), this._map.fire("pm:drawstart", { shape: this._shape, workingLayer: this._layer }), this._map.pm.Toolbar.toggleButton(this.toolbarButtonName, !0), this._otherSnapLayers = [] }, disable: function () { this._enabled && (this._enabled = !1, this._map._container.style.cursor = "", this._map.off("click", this._createVertex, this), this._map.off("mousemove", this._syncHintMarker, this), this.options.finishOn && this._map.off(this.options.finishOn, this._finishShape, this), this.tempMapDoubleClickZoomState && this._map.doubleClickZoom.enable(), this._map.removeLayer(this._layerGroup), this._map.fire("pm:drawend", { shape: this._shape }), this._map.pm.Toolbar.toggleButton(this.toolbarButtonName, !1), this.options.snappable && this._cleanupSnapping()) }, enabled: function () { return this._enabled }, toggle: function (t) { this.enabled() ? this.disable() : this.enable(t) }, hasSelfIntersection: function () { return o()(this._layer.toGeoJSON(15)).features.length > 0 }, _syncHintLine: function () { var t = this._layer.getLatLngs(); if (t.length > 0) { var e = t[t.length - 1]; this._hintline.setLatLngs([e, this._hintMarker.getLatLng()]) } }, _syncHintMarker: function (t) { if (this._hintMarker.setLatLng(t.latlng), this.options.snappable) { var e = t; e.target = this._hintMarker, this._handleSnapping(e) } this.options.allowSelfIntersection || this._handleSelfIntersection(!0, t.latlng) }, _handleSelfIntersection: function (t, e) { var i = L.polyline(this._layer.getLatLngs()); t && (e || (e = this._hintMarker.getLatLng()), i.addLatLng(e)); var n = o()(i.toGeoJSON(15)); this._doesSelfIntersect = n.features.length > 0, this._doesSelfIntersect ? this._hintline.setStyle({ color: "red" }) : this._hintline.setStyle(this.options.hintlineStyle) }, _removeLastVertex: function () { var t = this._layer.getLatLngs(), e = t.pop(); if (t.length < 1) this.disable(); else { var i = this._layerGroup.getLayers().filter((function (t) { return t instanceof L.Marker })).filter((function (t) { return !L.DomUtil.hasClass(t._icon, "cursor-marker") })).find((function (t) { return t.getLatLng() === e })); this._layerGroup.removeLayer(i), this._layer.setLatLngs(t), this._syncHintLine() } }, _createVertex: function (t) { if (this.options.allowSelfIntersection || (this._handleSelfIntersection(!0, t.latlng), !this._doesSelfIntersect)) { this._hintMarker._snapped || this._hintMarker.setLatLng(t.latlng); var e = this._hintMarker.getLatLng(); if (e.equals(this._layer.getLatLngs()[0])) this._finishShape(t); else { var i = 0 === this._layer.getLatLngs().length; this._layer.addLatLng(e); var n = this._createMarker(e, i); this._hintline.setLatLngs([e, e]), this._layer.fire("pm:vertexadded", { shape: this._shape, workingLayer: this._layer, marker: n, latlng: e }) } } }, _finishShape: function () { if (this.options.allowSelfIntersection || (this._handleSelfIntersection(!1), !this._doesSelfIntersect)) { var t = this._layer.getLatLngs(); if (!(t.length <= 1)) { var e = L.polyline(t, this.options.pathOptions).addTo(this._map); this.disable(), this._map.fire("pm:create", { shape: this._shape, layer: e }), this.options.snappable && this._cleanupSnapping() } } }, _createMarker: function (t, e) { var i = new L.Marker(t, { draggable: !1, icon: L.divIcon({ className: "marker-icon" }) }); return i._pmTempLayer = !0, this._layerGroup.addLayer(i), i.on("click", this._finishShape, this), e && this._hintMarker.setTooltipContent(Object(a.a)("tooltips.continueLine")), 2 === this._layer.getLatLngs().length && this._hintMarker.setTooltipContent(Object(a.a)("tooltips.finishLine")), i } }) }, function (t, e, i) { "use strict"; var n = i(1), o = i(0); n.a.Polygon = n.a.Line.extend({ initialize: function (t) { this._map = t, this._shape = "Polygon", this.toolbarButtonName = "drawPolygon" }, _finishShape: function (t) { if (this.options.allowSelfIntersection || (this._handleSelfIntersection(!1), !this._doesSelfIntersect)) { var e = this._layer.getLatLngs(); if (console.log(e), !(e.length <= 2)) { t && "dblclick" === t.type && e.splice(e.length - 1, 1); var i = L.polygon(e, this.options.pathOptions).addTo(this._map); this.disable(), this._map.fire("pm:create", { shape: this._shape, layer: i }), this._cleanupSnapping(), this._otherSnapLayers.splice(this._tempSnapLayerIndex, 1), delete this._tempSnapLayerIndex } } }, _createMarker: function (t, e) { var i = new L.Marker(t, { draggable: !1, icon: L.divIcon({ className: "marker-icon" }) }); return i._pmTempLayer = !0, this._layerGroup.addLayer(i), e && (i.on("click", this._finishShape, this), this._tempSnapLayerIndex = this._otherSnapLayers.push(i) - 1, this.options.snappable && this._cleanupSnapping()), e && this._hintMarker.setTooltipContent(Object(o.a)("tooltips.continueLine")), 3 === this._layer.getLatLngs().length && this._hintMarker.setTooltipContent(Object(o.a)("tooltips.finishPoly")), i } }) }, function (t, e, i) { "use strict"; var n = i(1), o = i(0); n.a.Rectangle = n.a.extend({ initialize: function (t) { this._map = t, this._shape = "Rectangle", this.toolbarButtonName = "drawRectangle" }, enable: function (t) { if (L.Util.setOptions(this, t), this._enabled = !0, this._layerGroup = new L.LayerGroup, this._layerGroup._pmTempLayer = !0, this._layerGroup.addTo(this._map), this._layer = L.rectangle([[0, 0], [0, 0]], this.options.pathOptions), this._layer._pmTempLayer = !0, this._startMarker = L.marker([0, 0], { icon: L.divIcon({ className: "marker-icon rect-start-marker" }), draggable: !0, zIndexOffset: 100, opacity: this.options.cursorMarker ? 1 : 0 }), this._startMarker._pmTempLayer = !0, this._layerGroup.addLayer(this._startMarker), this._hintMarker = L.marker([0, 0], { icon: L.divIcon({ className: "marker-icon cursor-marker" }) }), this._hintMarker._pmTempLayer = !0, this._layerGroup.addLayer(this._hintMarker), this.options.tooltips && this._hintMarker.bindTooltip(Object(o.a)("tooltips.firstVertex"), { permanent: !0, offset: L.point(0, 10), direction: "bottom", opacity: .8 }).openTooltip(), this.options.cursorMarker) { L.DomUtil.addClass(this._hintMarker._icon, "visible"), this._styleMarkers = []; for (var e = 0; e < 2; e += 1) { var i = L.marker([0, 0], { icon: L.divIcon({ className: "marker-icon rect-style-marker" }), draggable: !0, zIndexOffset: 100 }); i._pmTempLayer = !0, this._layerGroup.addLayer(i), this._styleMarkers.push(i) } } this._map._container.style.cursor = "crosshair", this._map.on("click", this._placeStartingMarkers, this), this._map.on("mousemove", this._syncHintMarker, this), this._map.fire("pm:drawstart", { shape: this._shape, workingLayer: this._layer }), this._map.pm.Toolbar.toggleButton(this.toolbarButtonName, !0), this._otherSnapLayers = [] }, disable: function () { this._enabled && (this._enabled = !1, this._map._container.style.cursor = "", this._map.off("click", this._finishShape, this), this._map.off("click", this._placeStartingMarkers, this), this._map.off("mousemove", this._syncHintMarker, this), this._map.removeLayer(this._layerGroup), this._map.fire("pm:drawend", { shape: this._shape }), this._map.pm.Toolbar.toggleButton(this.toolbarButtonName, !1), this.options.snappable && this._cleanupSnapping()) }, enabled: function () { return this._enabled }, toggle: function (t) { this.enabled() ? this.disable() : this.enable(t) }, _placeStartingMarkers: function (t) { this._hintMarker._snapped || this._hintMarker.setLatLng(t.latlng); var e = this._hintMarker.getLatLng(); L.DomUtil.addClass(this._startMarker._icon, "visible"), this._startMarker.setLatLng(e), this.options.cursorMarker && this._styleMarkers && this._styleMarkers.forEach((function (t) { L.DomUtil.addClass(t._icon, "visible"), t.setLatLng(e) })), this._map.off("click", this._placeStartingMarkers, this), this._map.on("click", this._finishShape, this), this._hintMarker.setTooltipContent(Object(o.a)("tooltips.finishRect")), this._setRectangleOrigin() }, _setRectangleOrigin: function () { var t = this._startMarker.getLatLng(); t && (this._layerGroup.addLayer(this._layer), this._layer.setLatLngs([t, t]), this._hintMarker.on("move", this._syncRectangleSize, this)) }, _syncHintMarker: function (t) { if (this._hintMarker.setLatLng(t.latlng), this.options.snappable) { var e = t; e.target = this._hintMarker, this._handleSnapping(e) } }, _syncRectangleSize: function () { var t = this, e = this._startMarker.getLatLng(), i = this._hintMarker.getLatLng(); if (this._layer.setBounds([e, i]), this.options.cursorMarker && this._styleMarkers) { var n = []; this._findCorners().forEach((function (e) { e.equals(t._startMarker.getLatLng()) || e.equals(t._hintMarker.getLatLng()) || n.push(e) })), n.forEach((function (e, i) { t._styleMarkers[i].setLatLng(e) })) } }, _finishShape: function (t) { var e = this._startMarker.getLatLng(), i = t.latlng, n = L.rectangle([e, i], this.options.pathOptions).addTo(this._map); this.disable(), this._map.fire("pm:create", { shape: this._shape, layer: n }) }, _findCorners: function () { var t = this._layer.getBounds(); return [t.getNorthWest(), t.getNorthEast(), t.getSouthEast(), t.getSouthWest()] } }) }, function (t, e, i) { "use strict"; var n = i(1), o = i(0); n.a.Circle = n.a.extend({ initialize: function (t) { this._map = t, this._shape = "Circle", this.toolbarButtonName = "drawCircle" }, enable: function (t) { L.Util.setOptions(this, t), this.options.radius = 0, this._enabled = !0, this._layerGroup = new L.LayerGroup, this._layerGroup._pmTempLayer = !0, this._layerGroup.addTo(this._map), this._layer = L.circle([0, 0], this.options.templineStyle), this._layer._pmTempLayer = !0, this._layerGroup.addLayer(this._layer), this._centerMarker = L.marker([0, 0], { icon: L.divIcon({ className: "marker-icon" }), draggable: !1, zIndexOffset: 100 }), this._centerMarker._pmTempLayer = !0, this._layerGroup.addLayer(this._centerMarker), this._hintMarker = L.marker([0, 0], { icon: L.divIcon({ className: "marker-icon cursor-marker" }) }), this._hintMarker._pmTempLayer = !0, this._layerGroup.addLayer(this._hintMarker), this.options.cursorMarker && L.DomUtil.addClass(this._hintMarker._icon, "visible"), this.options.tooltips && this._hintMarker.bindTooltip(Object(o.a)("tooltips.startCircle"), { permanent: !0, offset: L.point(0, 10), direction: "bottom", opacity: .8 }).openTooltip(), this._hintline = L.polyline([], this.options.hintlineStyle), this._hintline._pmTempLayer = !0, this._layerGroup.addLayer(this._hintline), this._map._container.style.cursor = "crosshair", this._map.on("click", this._placeCenterMarker, this), this._map.on("mousemove", this._syncHintMarker, this), this._map.fire("pm:drawstart", { shape: this._shape, workingLayer: this._layer }), this._map.pm.Toolbar.toggleButton(this.toolbarButtonName, !0), this._otherSnapLayers = [] }, disable: function () { this._enabled && (this._enabled = !1, this._map._container.style.cursor = "", this._map.off("click", this._finishShape, this), this._map.off("click", this._placeCenterMarker, this), this._map.off("mousemove", this._syncHintMarker, this), this._map.removeLayer(this._layerGroup), this._map.fire("pm:drawend", { shape: this._shape }), this._map.pm.Toolbar.toggleButton(this.toolbarButtonName, !1), this.options.snappable && this._cleanupSnapping()) }, enabled: function () { return this._enabled }, toggle: function (t) { this.enabled() ? this.disable() : this.enable(t) }, _syncHintLine: function () { var t = this._centerMarker.getLatLng(); this._hintline.setLatLngs([t, this._hintMarker.getLatLng()]) }, _syncCircleRadius: function () { var t = this._centerMarker.getLatLng(), e = this._hintMarker.getLatLng(), i = t.distanceTo(e); this._layer.setRadius(i) }, _syncHintMarker: function (t) { if (this._hintMarker.setLatLng(t.latlng), this.options.snappable) { var e = t; e.target = this._hintMarker, this._handleSnapping(e) } }, _placeCenterMarker: function (t) { this._hintMarker._snapped || this._hintMarker.setLatLng(t.latlng); var e = this._hintMarker.getLatLng(); this._centerMarker.setLatLng(e), this._map.off("click", this._placeCenterMarker, this), this._map.on("click", this._finishShape, this), this._placeCircleCenter() }, _placeCircleCenter: function () { var t = this._centerMarker.getLatLng(); t && (this._layer.setLatLng(t), this._hintMarker.on("move", this._syncHintLine, this), this._hintMarker.on("move", this._syncCircleRadius, this), this._hintMarker.setTooltipContent(Object(o.a)("tooltips.finishCircle")), this._layer.fire("pm:centerplaced", { shape: this._shape, workingLayer: this._layer, latlng: t })) }, _finishShape: function (t) { var e = this._centerMarker.getLatLng(), i = t.latlng, n = e.distanceTo(i), o = Object.assign({}, this.options.pathOptions, { radius: n }), r = L.circle(e, o).addTo(this._map); this.disable(), this._map.fire("pm:create", { shape: this._shape, layer: r }) }, _createMarker: function (t) { var e = new L.Marker(t, { draggable: !1, icon: L.divIcon({ className: "marker-icon" }) }); return e._pmTempLayer = !0, this._layerGroup.addLayer(e), e } }) }, function (t, e, i) { "use strict"; var n = i(1), o = i(0); n.a.CircleMarker = n.a.Marker.extend({ initialize: function (t) { this._map = t, this._shape = "CircleMarker", this.toolbarButtonName = "drawCircleMarker" }, enable: function (t) { var e = this; L.Util.setOptions(this, t), this._enabled = !0, this._map.on("click", this._createMarker, this), this._map.pm.Toolbar.toggleButton(this.toolbarButtonName, !0), this._hintMarker = L.circleMarker([0, 0], this.options.templineStyle), this._hintMarker._pmTempLayer = !0, this._hintMarker.addTo(this._map), this.options.tooltips && this._hintMarker.bindTooltip(Object(o.a)("tooltips.placeCircleMarker"), { permanent: !0, offset: L.point(0, 10), direction: "bottom", opacity: .8 }).openTooltip(), this._layer = this._hintMarker, this._map.on("mousemove", this._syncHintMarker, this), this._map.fire("pm:drawstart", { shape: this._shape, workingLayer: this._layer }), this._map.eachLayer((function (t) { e.isRelevantMarker(t) && t.pm.enable() })) }, isRelevantMarker: function (t) { return t instanceof L.CircleMarker && !(t instanceof L.Circle) && t.pm && !t._pmTempLayer }, _createMarker: function (t) { if (t.latlng) { this._hintMarker._snapped || this._hintMarker.setLatLng(t.latlng); var e = this._hintMarker.getLatLng(), i = L.circleMarker(e, this.options.pathOptions); i.addTo(this._map), i.pm.enable(), this._map.fire("pm:create", { shape: this._shape, marker: i, layer: i }), this._cleanupSnapping() } } }) }, function (t, e, i) { "use strict"; var n = i(148), o = i.n(n), r = i(149), a = i(1); a.a.Cut = a.a.Polygon.extend({ initialize: function (t) { this._map = t, this._shape = "Cut", this.toolbarButtonName = "cutPolygon" }, _cut: function (t) { var e = this, i = this._map._layers; Object.keys(i).map((function (t) { return i[t] })).filter((function (t) { return t.pm })).filter((function (t) { return t instanceof L.Polygon })).filter((function (e) { return e !== t })).filter((function (e) { try { return !!o()(t.toGeoJSON(15), e.toGeoJSON(15)) } catch (i) { return console.error("You cant cut polygons with self-intersections"), !1 } })).forEach((function (i) { var n = Object(r.a)(i.toGeoJSON(15), t.toGeoJSON(15)), o = L.geoJSON(n, i.options).addTo(e._map); o.addTo(e._map), o.pm.enable(e.options), o.pm.disable(), i.fire("pm:cut", { shape: e._shape, layer: o, originalLayer: i }), e._map.fire("pm:cut", { shape: e._shape, layer: o, originalLayer: i }), i._pmTempLayer = !0, t._pmTempLayer = !0, i.remove(), t.remove(), 0 === o.getLayers().length && e._map.pm.removeLayer({ target: o }) })) }, _finishShape: function () { if (this.options.allowSelfIntersection || (this._handleSelfIntersection(!1), !this._doesSelfIntersect)) { var t = this._layer.getLatLngs(), e = L.polygon(t, this.options.pathOptions); this._cut(e), this.disable(), this._cleanupSnapping(), this._otherSnapLayers.splice(this._tempSnapLayerIndex, 1), delete this._tempSnapLayerIndex } } }) }, function (t, e, i) { "use strict"; var n = this && this.__importStar || function (t) { if (t && t.__esModule) return t; var e = {}; if (null != t) for (var i in t) Object.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e["default"] = t, e }; Object.defineProperty(e, "__esModule", { value: !0 }); var o = i(8), r = i(43), a = n(i(44)); e["default"] = function t(e, i, n) { void 0 === n && (n = {}); var s = r.getGeom(e), h = r.getGeom(i); if ("Polygon" === s.type && "Polygon" === h.type) { var l = a.intersection(s.coordinates, h.coordinates); if (null === l || 0 === l.length) return null; if (1 === l.length) { var u = l[0][0][0], c = l[0][0][l[0][0].length - 1]; return u[0] === c[0] && u[1] === c[1] ? o.polygon(l[0], n.properties) : null } return o.multiPolygon(l, n.properties) } if ("MultiPolygon" === s.type) { for (var p = [], d = 0, f = s.coordinates; d < f.length; d++) { var _ = f[d], m = t(r.getGeom(o.polygon(_)), h); if (m) { var g = r.getGeom(m); if ("Polygon" === g.type) p.push(g.coordinates); else { if ("MultiPolygon" !== g.type) throw new Error("intersection is invalid"); p = p.concat(g.coordinates) } } } return 0 === p.length ? null : 1 === p.length ? o.polygon(p[0], n.properties) : o.multiPolygon(p, n.properties) } if ("MultiPolygon" === h.type) return t(h, s); throw new Error("poly1 and poly2 must be either polygons or multiPolygons") } }, function (t, e, i) { "use strict"; var n = i(44), o = (i.n(n), i(150)), r = i.n(o), a = i(8), s = (i.n(a), i(43)), h = (i.n(s), i(45)); function l(t) { switch (t.type) { case "Polygon": return r()(t) > 1 ? t : null; case "MultiPolygon": var e = []; if (Object(h.flattenEach)(t, (function (t) { r()(t) > 1 && e.push(t.geometry.coordinates) })), e.length) return { type: "MultiPolygon", coordinates: e } } } i.n(h), e.a = function (t, e) { var i = Object(s.getGeom)(t), o = Object(s.getGeom)(e), r = t.properties || {}; if (i = l(i), o = l(o), !i) return null; if (!o) return Object(a.feature)(i, r); var h = n.diff(i.coordinates, o.coordinates); return 0 === h.length ? null : 1 === h.length ? Object(a.polygon)(h[0], r) : Object(a.multiPolygon)(h, r) } }, function (t, e, i) { "use strict"; Object.defineProperty(e, "__esModule", { value: !0 }); var n = i(45), o = 6378137; function r(t) { var e = 0; if (t && t.length > 0) { e += Math.abs(a(t[0])); for (var i = 1; i < t.length; i++)e -= Math.abs(a(t[i])) } return e } function a(t) { var e, i, n, r, a, h, l = 0, u = t.length; if (u > 2) { for (h = 0; h < u; h++)h === u - 2 ? (n = u - 2, r = u - 1, a = 0) : h === u - 1 ? (n = u - 1, r = 0, a = 1) : (n = h, r = h + 1, a = h + 2), e = t[n], i = t[r], l += (s(t[a][0]) - s(e[0])) * Math.sin(s(i[1])); l = l * o * o / 2 } return l } function s(t) { return t * Math.PI / 180 } e["default"] = function (t) { return n.geomReduce(t, (function (t, e) { return t + function (t) { var e, i = 0; switch (t.type) { case "Polygon": return r(t.coordinates); case "MultiPolygon": for (e = 0; e < t.coordinates.length; e++)i += r(t.coordinates[e]); return i; case "Point": case "MultiPoint": case "LineString": case "MultiLineString": return 0 }return 0 }(e) }), 0) } }, function (t, e, i) { "use strict"; var n = { enableLayerDrag: function () { if (this._layer instanceof L.Marker) this._layer.dragging.enable(); else { this._tempDragCoord = null; var t = this._layer._path ? this._layer._path : this._layer._renderer._container; L.DomUtil.addClass(t, "leaflet-pm-draggable"), this._originalMapDragState = this._layer._map.dragging._enabled, this._safeToCacheDragState = !0, this._layer.on("mousedown", this._dragMixinOnMouseDown, this) } }, disableLayerDrag: function () { if (this._layer instanceof L.Marker) this._layer.dragging.disable(); else { var t = this._layer._path ? this._layer._path : this._layer._renderer._container; L.DomUtil.removeClass(t, "leaflet-pm-draggable"), this._safeToCacheDragState = !1, this._layer.off("mousedown", this._dragMixinOnMouseDown, this) } }, _dragMixinOnMouseUp: function () { var t = this, e = this._layer._path ? this._layer._path : this._layer._renderer._container; return this._originalMapDragState && this._layer._map.dragging.enable(), this._safeToCacheDragState = !0, this._layer._map.off("mousemove", this._dragMixinOnMouseMove, this), this._layer._map.off("mouseup", this._dragMixinOnMouseUp, this), !!this._dragging && (window.setTimeout((function () { t._dragging = !1, L.DomUtil.removeClass(e, "leaflet-pm-dragging"), t._layer.fire("pm:dragend"), t._fireEdit() }), 10), !0) }, _dragMixinOnMouseMove: function (t) { var e = this._layer._path ? this._layer._path : this._layer._renderer._container; this._dragging || (this._dragging = !0, L.DomUtil.addClass(e, "leaflet-pm-dragging"), this._layer.bringToFront(), this._originalMapDragState && this._layer._map.dragging.disable(), this._layer.fire("pm:dragstart")), this._onLayerDrag(t) }, _dragMixinOnMouseDown: function (t) { t.originalEvent.button > 0 || (this._safeToCacheDragState && (this._originalMapDragState = this._layer._map.dragging._enabled, this._safeToCacheDragState = !1), this._tempDragCoord = t.latlng, this._layer._map.on("mouseup", this._dragMixinOnMouseUp, this), this._layer._map.on("mousemove", this._dragMixinOnMouseMove, this)) }, dragging: function () { return this._dragging }, _onLayerDrag: function (t) { var e = t.latlng, i = e.lat - this._tempDragCoord.lat, n = e.lng - this._tempDragCoord.lng; if (this._layer instanceof L.CircleMarker) this._layer.setLatLng(e); else { var o = function t(e) { return e.map((function (e) { return Array.isArray(e) ? t(e) : { lat: e.lat + i, lng: e.lng + n } })) }(this._layer.getLatLngs()); this._layer.setLatLngs(o) } this._tempDragCoord = e, this._layer.fire("pm:drag", t) } }; e.a = n }, function (t, e, i) { "use strict"; i(2).a.LayerGroup = L.Class.extend({ initialize: function (t) { var e = this; this._layerGroup = t, this._layers = this.findLayers(), this._layers.forEach((function (t) { return e._initLayer(t) })), this._layerGroup.on("layeradd", (function (t) { t.target._pmTempLayer || (e._layers = e.findLayers(), t.layer.pm && e._initLayer(t.layer), t.target.pm.enabled() && e.enable(e.getOptions())) })) }, findLayers: function () { var t = this._layerGroup.getLayers(); return (t = (t = t.filter((function (t) { return !(t instanceof L.LayerGroup) }))).filter((function (t) { return !!t.pm }))).filter((function (t) { return !t._pmTempLayer })) }, _initLayer: function (t) { var e = this;["pm:edit", "pm:update", "pm:remove", "pm:dragstart", "pm:drag", "pm:dragend", "pm:snap", "pm:unsnap", "pm:cut", "pm:intersect", "pm:raiseMarkers", "pm:markerdragend", "pm:markerdragstart", "pm:vertexadded", "pm:vertexremoved", "pm:centerplaced"].forEach((function (i) { t.on(i, e._fireEvent, e) })), t.pm._layerGroup = this._layerGroup }, _fireEvent: function (t) { this._layerGroup.fireEvent(t.type, t) }, toggleEdit: function (t) { this._options = t, this._layers.forEach((function (e) { e.pm.toggleEdit(t) })) }, enable: function (t) { this._options = t, this._layers.forEach((function (e) { e.pm.enable(t) })) }, disable: function () { this._layers.forEach((function (t) { t.pm.disable() })) }, enabled: function () { var t = this._layers.find((function (t) { return t.pm.enabled() })); return !!t }, dragging: function () { var t = this._layers.find((function (t) { return t.pm.dragging() })); return !!t }, getOptions: function () { return this._options } }) }, function (t, e, i) { "use strict"; var n = i(2); n.a.Marker = n.a.extend({ initialize: function (t) { this._layer = t, this._enabled = !1, this._layer.on("dragend", this._onDragEnd, this) }, toggleEdit: function (t) { this.enabled() ? this.disable() : this.enable(t) }, enable: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : { draggable: !0, snappable: !0 }; L.Util.setOptions(this, t), this._map = this._layer._map, this.enabled() || (this._enabled = !0, this.options.preventMarkerRemoval || this._layer.on("contextmenu", this._removeMarker, this), this.options.draggable && this._layer.dragging.enable(), this.options.snappable && this._initSnappableMarkers()) }, enabled: function () { return this._enabled }, disable: function () { this._enabled = !1, this._layer.dragging && this._layer.dragging.disable(), this._layer.off("contextmenu", this._removeMarker, this), this._layerEdited && this._layer.fire("pm:update", {}), this._layerEdited = !1 }, _removeMarker: function (t) { var e = t.target; e.remove(), e.fire("pm:remove") }, _onDragEnd: function (t) { t.target.fire("pm:edit"), this._layerEdited = !0 }, _initSnappableMarkers: function () { var t = this._layer; this.options.snapDistance = this.options.snapDistance || 30, t.off("drag", this._handleSnapping, this), t.on("drag", this._handleSnapping, this), t.off("dragend", this._cleanupSnapping, this), t.on("dragend", this._cleanupSnapping, this), t.off("pm:dragstart", this._unsnap, this), t.on("pm:dragstart", this._unsnap, this) } }) }, function (t, e, i) { "use strict"; var n = i(42), o = i.n(n), r = i(37), a = i.n(r), s = i(2), h = i(41), l = i(0); s.a.Line = s.a.extend({ initialize: function (t) { this._layer = t, this._enabled = !1 }, toggleEdit: function (t) { return this.enabled() ? this.disable() : this.enable(t), this.enabled() }, enable: function (t) { L.Util.setOptions(this, t), this._map = this._layer._map, this._map && (this.enabled() || this.disable(), this._enabled = !0, this._initMarkers(), this._layer.on("remove", this._onLayerRemove, this), this.options.allowSelfIntersection || this._layer.on("pm:vertexremoved", this._handleSelfIntersectionOnVertexRemoval, this), this.options.allowSelfIntersection || (this.cachedColor || (this.cachedColor = this._layer.options.color), this.isRed = !1, this._handleLayerStyle())) }, _onLayerRemove: function (t) { this.disable(t.target) }, enabled: function () { return this._enabled }, disable: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._layer; if (!this.enabled()) return !1; if (t.pm._dragging) return !1; t.pm._enabled = !1, t.pm._markerGroup.clearLayers(), t.off("mousedown"), t.off("mouseup"), this._layer.off("remove", this._onLayerRemove, this), this.options.allowSelfIntersection || this._layer.off("pm:vertexremoved", this._handleSelfIntersectionOnVertexRemoval); var e = t._path ? t._path : this._layer._renderer._container; return L.DomUtil.removeClass(e, "leaflet-pm-draggable"), this.hasSelfIntersection() && L.DomUtil.removeClass(e, "leaflet-pm-invalid"), this._layerEdited && this._layer.fire("pm:update", {}), this._layerEdited = !1, !0 }, hasSelfIntersection: function () { return o()(this._layer.toGeoJSON(15)).features.length > 0 }, _handleSelfIntersectionOnVertexRemoval: function () { this._handleLayerStyle(!0), this.hasSelfIntersection() && (this._layer.setLatLngs(this._coordsBeforeEdit), this._coordsBeforeEdit = null, this._initMarkers()) }, _handleLayerStyle: function (t) { var e = this, i = this._layer; if (this.hasSelfIntersection()) { if (this.isRed) return; t ? (i.setStyle({ color: "red" }), this.isRed = !0, window.setTimeout((function () { i.setStyle({ color: e.cachedColor }), e.isRed = !1 }), 200)) : (i.setStyle({ color: "red" }), this.isRed = !0), this._layer.fire("pm:intersect", { intersection: o()(this._layer.toGeoJSON(15)) }) } else i.setStyle({ color: this.cachedColor }), this.isRed = !1 }, _initMarkers: function () { var t = this, e = this._map, i = this._layer.getLatLngs(); this._markerGroup && this._markerGroup.clearLayers(), this._markerGroup = new L.LayerGroup, this._markerGroup._pmTempLayer = !0, e.addLayer(this._markerGroup), this._markers = function e(i) { if (Array.isArray(i[0])) return i.map(e, t); var n = i.map(t._createMarker, t); return i.map((function (e, o) { var r = t.isPolygon() ? (o + 1) % i.length : o + 1; return t._createMiddleMarker(n[o], n[r]) })), n }(i), this.options.snappable && this._initSnappableMarkers() }, _createMarker: function (t) { var e = new L.Marker(t, { draggable: !0, icon: L.divIcon({ className: "marker-icon" }) }); return e._pmTempLayer = !0, e.on("dragstart", this._onMarkerDragStart, this), e.on("move", this._onMarkerDrag, this), e.on("dragend", this._onMarkerDragEnd, this), this.options.preventMarkerRemoval || e.on("contextmenu", this._removeMarker, this), this._markerGroup.addLayer(e), e }, _createMiddleMarker: function (t, e) { var i = this; if (!t || !e) return !1; var n = h.a.calcMiddleLatLng(this._map, t.getLatLng(), e.getLatLng()), o = this._createMarker(n), r = L.divIcon({ className: "marker-icon marker-icon-middle" }); return o.setIcon(r), t._middleMarkerNext = o, e._middleMarkerPrev = o, o.on("click", (function () { var n = L.divIcon({ className: "marker-icon" }); o.setIcon(n), i._addMarker(o, t, e) })), o.on("movestart", (function () { o.on("moveend", (function () { var t = L.divIcon({ className: "marker-icon" }); o.setIcon(t), o.off("moveend") })), i._addMarker(o, t, e) })), o }, _addMarker: function (t, e, i) { t.off("movestart"), t.off("click"); var n = t.getLatLng(), o = this._layer._latlngs, r = this.findDeepMarkerIndex(this._markers, e), s = r.indexPath, h = r.index, l = r.parentPath, u = s.length > 1 ? a()(o, l) : o, c = s.length > 1 ? a()(this._markers, l) : this._markers; u.splice(h + 1, 0, n), c.splice(h + 1, 0, t), this._layer.setLatLngs(o), this._createMiddleMarker(e, t), this._createMiddleMarker(t, i), this._fireEdit(), this._layer.fire("pm:vertexadded", { layer: this._layer, marker: t, indexPath: this.findDeepMarkerIndex(this._markers, t).indexPath, latlng: n }), this.options.snappable && this._initSnappableMarkers() }, _removeMarker: function (t) { if (!this.options.allowSelfIntersection) { var e = this._layer.getLatLngs(); this._coordsBeforeEdit = JSON.parse(JSON.stringify(e)) } var i = t.target, n = this._layer.getLatLngs(), o = this.findDeepMarkerIndex(this._markers, i), r = o.indexPath, s = o.index, h = o.parentPath; if (r) { var u, c, p = r.length > 1 ? a()(n, h) : n, d = r.length > 1 ? a()(this._markers, h) : this._markers; if (p.splice(s, 1), this._layer.setLatLngs(n), p.length <= 1 && (p.splice(0, p.length), this._layer.setLatLngs(n), this.disable(), this.enable(this.options)), Object(l.b)(n) && this._layer.remove(), i._middleMarkerPrev && this._markerGroup.removeLayer(i._middleMarkerPrev), i._middleMarkerNext && this._markerGroup.removeLayer(i._middleMarkerNext), this._markerGroup.removeLayer(i), this.isPolygon() ? (u = (s + 1) % d.length, c = (s + (d.length - 1)) % d.length) : (c = s - 1 < 0 ? void 0 : s - 1, u = s + 1 >= d.length ? void 0 : s + 1), u !== c) { var f = d[c], _ = d[u]; this._createMiddleMarker(f, _) } d.splice(s, 1), this._fireEdit(), this._layer.fire("pm:vertexremoved", { layer: this._layer, marker: i, indexPath: r }) } }, findDeepMarkerIndex: function (t, e) { var i; t.some(function t(n) { return function (o, r) { var a = n.concat(r); return o._leaflet_id === e._leaflet_id ? (i = a, !0) : Array.isArray(o) && o.some(t(a)) } }([])); var n = {}; return i && (n = { indexPath: i, index: i[i.length - 1], parentPath: i.slice(0, i.length - 1) }), n }, updatePolygonCoordsFromMarkerDrag: function (t) { var e = this._layer.getLatLngs(), i = t.getLatLng(), n = this.findDeepMarkerIndex(this._markers, t), o = n.indexPath, r = n.index, s = n.parentPath; (o.length > 1 ? a()(e, s) : e).splice(r, 1, i), this._layer.setLatLngs(e) }, _onMarkerDrag: function (t) { var e = t.target, i = this.findDeepMarkerIndex(this._markers, e), n = i.indexPath, o = i.index, r = i.parentPath; if (n) { this.updatePolygonCoordsFromMarkerDrag(e); var s = n.length > 1 ? a()(this._markers, r) : this._markers, l = (o + 1) % s.length, u = (o + (s.length - 1)) % s.length, c = e.getLatLng(), p = s[u].getLatLng(), d = s[l].getLatLng(); if (e._middleMarkerNext) { var f = h.a.calcMiddleLatLng(this._map, c, d); e._middleMarkerNext.setLatLng(f) } if (e._middleMarkerPrev) { var _ = h.a.calcMiddleLatLng(this._map, c, p); e._middleMarkerPrev.setLatLng(_) } this.options.allowSelfIntersection || this._handleLayerStyle() } }, _onMarkerDragEnd: function (t) { var e = t.target, i = this.findDeepMarkerIndex(this._markers, e).indexPath; if (!this.options.allowSelfIntersection && this.hasSelfIntersection()) return this._layer.setLatLngs(this._coordsBeforeEdit), this._coordsBeforeEdit = null, this._initMarkers(), void this._handleLayerStyle(); this._layer.fire("pm:markerdragend", { markerEvent: t, indexPath: i }), this._fireEdit() }, _onMarkerDragStart: function (t) { var e = t.target, i = this.findDeepMarkerIndex(this._markers, e).indexPath; this._layer.fire("pm:markerdragstart", { markerEvent: t, indexPath: i }), this.options.allowSelfIntersection || (this._coordsBeforeEdit = this._layer.getLatLngs()) }, _fireEdit: function () { this._layerEdited = !0, this._layer.fire("pm:edit") } }) }, function (t, e, i) { "use strict"; var n = i(2); n.a.Polygon = n.a.Line.extend({}) }, function (t, e, i) { "use strict"; var n = i(2); function o(t, e) { return function (t) { if (Array.isArray(t)) return t }(t) || function (t, e) { var i = [], n = !0, o = !1, r = void 0; try { for (var a, s = t[Symbol.iterator](); !(n = (a = s.next()).done) && (i.push(a.value), !e || i.length !== e); n = !0); } catch (h) { o = !0, r = h } finally { try { n || null == s["return"] || s["return"]() } finally { if (o) throw r } } return i }(t, e) || function () { throw new TypeError("Invalid attempt to destructure non-iterable instance") }() } n.a.Rectangle = n.a.Polygon.extend({ _initMarkers: function () { var t = this._map, e = this._findCorners(); this._markerGroup && this._markerGroup.clearLayers(), this._markerGroup = new L.LayerGroup, this._markerGroup._pmTempLayer = !0, t.addLayer(this._markerGroup), this._markers = [], this._markers[0] = e.map(this._createMarker, this); var i = o(this._markers, 1); this._cornerMarkers = i[0], this.options.snappable && this._initSnappableMarkers() }, _createMarker: function (t, e) { var i = new L.Marker(t, { draggable: !0, icon: L.divIcon({ className: "marker-icon" }) }); return i._origLatLng = t, i._index = e, i._pmTempLayer = !0, i.on("dragstart", this._onMarkerDragStart, this), i.on("drag", this._onMarkerDrag, this), i.on("dragend", this._onMarkerDragEnd, this), i.on("pm:snap", this._adjustRectangleForMarkerSnap, this), this.options.preventMarkerRemoval || i.on("contextmenu", this._removeMarker, this), this._markerGroup.addLayer(i), i }, _removeMarker: function () { return null }, _onMarkerDragStart: function (t) { var e = t.target, i = this._findCorners(); e._oppositeCornerLatLng = i[(e._index + 2) % 4], e._snapped = !1, this._layer.fire("pm:markerdragstart", { markerEvent: t }) }, _onMarkerDrag: function (t) { var e = t.target; void 0 !== e._index && (e._snapped || this._adjustRectangleForMarkerMove(e)) }, _onMarkerDragEnd: function (t) { var e = this._findCorners(); this._adjustAllMarkers(e), this._cornerMarkers.forEach((function (t) { delete t._oppositeCornerLatLng })), this._layer.setLatLngs(e), this._layer.fire("pm:markerdragend", { markerEvent: t }), this._fireEdit() }, _adjustRectangleForMarkerMove: function (t) { L.extend(t._origLatLng, t._latlng); var e = t.getLatLng(); this._layer.setBounds(L.latLngBounds(e, t._oppositeCornerLatLng)), this._adjustAdjacentMarkers(t), this._layer.redraw() }, _adjustRectangleForMarkerSnap: function (t) { if (this.options.snappable) { var e = t.target; this._adjustRectangleForMarkerMove(e) } }, _adjustAllMarkers: function (t) { t.length && 4 === t.length ? this._cornerMarkers.forEach((function (e, i) { e.setLatLng(t[i]) })) : console.error("_adjustAllMarkers() requires an array of EXACTLY 4 LatLng coordinates") }, _adjustAdjacentMarkers: function (t) { if (t && t.getLatLng && t._oppositeCornerLatLng) { var e = t.getLatLng(), i = t._oppositeCornerLatLng, n = []; this._findCorners().forEach((function (t) { t.equals(e) || t.equals(i) || n.push(t) })); var o = 0; 2 === n.length && this._cornerMarkers.forEach((function (t) { var r = t.getLatLng(); r.equals(e) || r.equals(i) || (t.setLatLng(n[o]), o += 1) })) } else console.error("_adjustAdjacentMarkers() requires a valid Marker object") }, _findCorners: function () { var t = this._layer.getBounds(); return [t.getNorthWest(), t.getNorthEast(), t.getSouthEast(), t.getSouthWest()] } }) }, function (t, e, i) { "use strict"; var n = i(2); n.a.Circle = n.a.extend({ initialize: function (t) { this._layer = t, this._enabled = !1 }, toggleEdit: function (t) { this.enabled() ? this.disable() : this.enable(t) }, enabled: function () { return this._enabled }, enable: function (t) { var e = this; L.Util.setOptions(this, t), this._map = this._layer._map, this.enabled() || this.disable(), this._enabled = !0, this._initMarkers(), this._layer.on("remove", (function (t) { e.disable(t.target) })) }, disable: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._layer; if (!this.enabled()) return !1; if (t.pm._dragging) return !1; t.pm._enabled = !1, t.pm._helperLayers.clearLayers(), t.off("mousedown"), t.off("mouseup"); var e = t._path ? t._path : this._layer._renderer._container; return L.DomUtil.removeClass(e, "leaflet-pm-draggable"), this._layerEdited && this._layer.fire("pm:update", {}), this._layerEdited = !1, !0 }, _initMarkers: function () { var t = this._map; this._helperLayers && this._helperLayers.clearLayers(), this._helperLayers = new L.LayerGroup, this._helperLayers._pmTempLayer = !0, this._helperLayers.addTo(t); var e = this._layer.getLatLng(), i = this._layer._radius, n = this._getLatLngOnCircle(e, i); this._centerMarker = this._createCenterMarker(e), this._outerMarker = this._createOuterMarker(n), this._markers = [this._centerMarker, this._outerMarker], this._createHintLine(this._centerMarker, this._outerMarker), this.options.snappable && this._initSnappableMarkers() }, _getLatLngOnCircle: function (t, e) { var i = this._map.project(t), n = L.point(i.x + e, i.y); return this._map.unproject(n) }, _resizeCircle: function () { this._syncHintLine(), this._syncCircleRadius() }, _moveCircle: function (t) { var e = t.latlng; this._layer.setLatLng(e); var i = this._layer._radius, n = this._getLatLngOnCircle(e, i); this._outerMarker.setLatLng(n), this._syncHintLine(), this._layer.fire("pm:centerplaced", { layer: this._layer, latlng: e }) }, _onMarkerDragStart: function (t) { this._layer.fire("pm:markerdragstart", { markerEvent: t }) }, _onMarkerDragEnd: function (t) { this._fireEdit(), this._layer.fire("pm:markerdragend", { markerEvent: t }) }, _syncCircleRadius: function () { var t = this._centerMarker.getLatLng(), e = this._outerMarker.getLatLng(), i = t.distanceTo(e); this._layer.setRadius(i) }, _syncHintLine: function () { var t = this._centerMarker.getLatLng(), e = this._outerMarker.getLatLng(); this._hintline.setLatLngs([t, e]) }, _createHintLine: function (t, e) { var i = t.getLatLng(), n = e.getLatLng(); this._hintline = L.polyline([i, n], this.options.hintlineStyle), this._hintline._pmTempLayer = !0, this._helperLayers.addLayer(this._hintline) }, _createCenterMarker: function (t) { var e = this._createMarker(t); return L.DomUtil.addClass(e._icon, "leaflet-pm-draggable"), e.on("drag", this._moveCircle, this), e }, _createOuterMarker: function (t) { var e = this._createMarker(t); return e.on("drag", this._resizeCircle, this), e }, _createMarker: function (t) { var e = new L.Marker(t, { draggable: !0, icon: L.divIcon({ className: "marker-icon" }) }); return e._origLatLng = t, e._pmTempLayer = !0, e.on("dragstart", this._onMarkerDragStart, this), e.on("dragend", this._onMarkerDragEnd, this), this._helperLayers.addLayer(e), e }, _fireEdit: function () { this._layer.fire("pm:edit"), this._layerEdited = !0 } }) }, function (t, e, i) { "use strict"; var n = i(2); n.a.CircleMarker = n.a.extend({ initialize: function (t) { this._layer = t, this._enabled = !1 }, toggleEdit: function (t) { this.enabled() ? this.disable() : this.enable(t) }, enabled: function () { return this._enabled }, enable: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : { draggable: !0, snappable: !0 }; L.Util.setOptions(this, t), this._map = this._layer._map, this._map && (this.enabled() || this.disable(), this._enabled = !0, this.options.preventMarkerRemoval || this._layer.on("contextmenu", this._removeMarker, this), this.options.draggable && this.enableLayerDrag(), this.options.snappable && this._initSnappableMarkers(), this._layer.on("pm:dragend", this._onMarkerDragEnd, this)) }, disable: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._layer; if (!this.enabled()) return !1; if (t.pm._dragging) return !1; if (t.pm._enabled = !1, t._path) { var e = t._path; L.DomUtil.removeClass(e, "leaflet-pm-draggable") } return this._layerEdited && this._layer.fire("pm:update", {}), this._layerEdited = !1, !0 }, _moveMarker: function (t) { var e = t.latlng; this._layer.setLatLng(e).redraw() }, _removeMarker: function () { this._layer.fire("pm:remove"), this._layer.remove() }, _fireEdit: function () { this._layer.fire("pm:edit"), this._layerEdited = !0 }, _onMarkerDragEnd: function (t) { this._layer.fire("pm:markerdragend", { markerEvent: t }), this._fireEdit() }, _initSnappableMarkers: function () { var t = this._layer; this.options.snapDistance = this.options.snapDistance || 30, t.off("pm:drag", this._handleSnapping, this), t.on("pm:drag", this._handleSnapping, this), t.off("pm:dragend", this._cleanupSnapping, this), t.on("pm:dragend", this._cleanupSnapping, this), t.off("pm:dragstart", this._unsnap, this), t.on("pm:dragstart", this._unsnap, this) } }) }, function (t, e) { }, function (t, e) { }]) }, "6cc5": function (t, e, i) { }, "9a51": function (t, e, i) { }, a3cb: function (t, e, i) { }, e11e: function (t, e, i) {
+        /* @preserve
+         * Leaflet 1.7.1, a JS library for interactive maps. http://leafletjs.com
+         * (c) 2010-2019 Vladimir Agafonkin, (c) 2010-2011 CloudMade
+         */
+        (function (t, i) { i(e) })(0, (function (t) { "use strict"; var e = "1.7.1"; function i(t) { var e, i, n, o; for (i = 1, n = arguments.length; i < n; i++)for (e in o = arguments[i], o) t[e] = o[e]; return t } var n = Object.create || function () { function t() { } return function (e) { return t.prototype = e, new t } }(); function o(t, e) { var i = Array.prototype.slice; if (t.bind) return t.bind.apply(t, i.call(arguments, 1)); var n = i.call(arguments, 2); return function () { return t.apply(e, n.length ? n.concat(i.call(arguments)) : arguments) } } var r = 0; function a(t) { return t._leaflet_id = t._leaflet_id || ++r, t._leaflet_id } function s(t, e, i) { var n, o, r, a; return a = function () { n = !1, o && (r.apply(i, o), o = !1) }, r = function () { n ? o = arguments : (t.apply(i, arguments), setTimeout(a, e), n = !0) }, r } function h(t, e, i) { var n = e[1], o = e[0], r = n - o; return t === n && i ? t : ((t - o) % r + r) % r + o } function l() { return !1 } function u(t, e) { var i = Math.pow(10, void 0 === e ? 6 : e); return Math.round(t * i) / i } function c(t) { return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, "") } function p(t) { return c(t).split(/\s+/) } function d(t, e) { for (var i in Object.prototype.hasOwnProperty.call(t, "options") || (t.options = t.options ? n(t.options) : {}), e) t.options[i] = e[i]; return t.options } function f(t, e, i) { var n = []; for (var o in t) n.push(encodeURIComponent(i ? o.toUpperCase() : o) + "=" + encodeURIComponent(t[o])); return (e && -1 !== e.indexOf("?") ? "&" : "?") + n.join("&") } var _ = /\{ *([\w_-]+) *\}/g; function m(t, e) { return t.replace(_, (function (t, i) { var n = e[i]; if (void 0 === n) throw new Error("No value provided for variable " + t); return "function" === typeof n && (n = n(e)), n })) } var g = Array.isArray || function (t) { return "[object Array]" === Object.prototype.toString.call(t) }; function v(t, e) { for (var i = 0; i < t.length; i++)if (t[i] === e) return i; return -1 } var y = "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="; function b(t) { return window["webkit" + t] || window["moz" + t] || window["ms" + t] } var w = 0; function x(t) { var e = +new Date, i = Math.max(0, 16 - (e - w)); return w = e + i, window.setTimeout(t, i) } var k = window.requestAnimationFrame || b("RequestAnimationFrame") || x, M = window.cancelAnimationFrame || b("CancelAnimationFrame") || b("CancelRequestAnimationFrame") || function (t) { window.clearTimeout(t) }; function P(t, e, i) { if (!i || k !== x) return k.call(window, o(t, e)); t.call(e) } function C(t) { t && M.call(window, t) } var T = { extend: i, create: n, bind: o, lastId: r, stamp: a, throttle: s, wrapNum: h, falseFn: l, formatNum: u, trim: c, splitWords: p, setOptions: d, getParamString: f, template: m, isArray: g, indexOf: v, emptyImageUrl: y, requestFn: k, cancelFn: M, requestAnimFrame: P, cancelAnimFrame: C }; function S() { } function O(t) { if ("undefined" !== typeof L && L && L.Mixin) { t = g(t) ? t : [t]; for (var e = 0; e < t.length; e++)t[e] === L.Mixin.Events && console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.", (new Error).stack) } } S.extend = function (t) { var e = function () { this.initialize && this.initialize.apply(this, arguments), this.callInitHooks() }, o = e.__super__ = this.prototype, r = n(o); for (var a in r.constructor = e, e.prototype = r, this) Object.prototype.hasOwnProperty.call(this, a) && "prototype" !== a && "__super__" !== a && (e[a] = this[a]); return t.statics && (i(e, t.statics), delete t.statics), t.includes && (O(t.includes), i.apply(null, [r].concat(t.includes)), delete t.includes), r.options && (t.options = i(n(r.options), t.options)), i(r, t), r._initHooks = [], r.callInitHooks = function () { if (!this._initHooksCalled) { o.callInitHooks && o.callInitHooks.call(this), this._initHooksCalled = !0; for (var t = 0, e = r._initHooks.length; t < e; t++)r._initHooks[t].call(this) } }, e }, S.include = function (t) { return i(this.prototype, t), this }, S.mergeOptions = function (t) { return i(this.prototype.options, t), this }, S.addInitHook = function (t) { var e = Array.prototype.slice.call(arguments, 1), i = "function" === typeof t ? t : function () { this[t].apply(this, e) }; return this.prototype._initHooks = this.prototype._initHooks || [], this.prototype._initHooks.push(i), this }; var E = { on: function (t, e, i) { if ("object" === typeof t) for (var n in t) this._on(n, t[n], e); else { t = p(t); for (var o = 0, r = t.length; o < r; o++)this._on(t[o], e, i) } return this }, off: function (t, e, i) { if (t) if ("object" === typeof t) for (var n in t) this._off(n, t[n], e); else { t = p(t); for (var o = 0, r = t.length; o < r; o++)this._off(t[o], e, i) } else delete this._events; return this }, _on: function (t, e, i) { this._events = this._events || {}; var n = this._events[t]; n || (n = [], this._events[t] = n), i === this && (i = void 0); for (var o = { fn: e, ctx: i }, r = n, a = 0, s = r.length; a < s; a++)if (r[a].fn === e && r[a].ctx === i) return; r.push(o) }, _off: function (t, e, i) { var n, o, r; if (this._events && (n = this._events[t], n)) if (e) { if (i === this && (i = void 0), n) for (o = 0, r = n.length; o < r; o++) { var a = n[o]; if (a.ctx === i && a.fn === e) return a.fn = l, this._firingCount && (this._events[t] = n = n.slice()), void n.splice(o, 1) } } else { for (o = 0, r = n.length; o < r; o++)n[o].fn = l; delete this._events[t] } }, fire: function (t, e, n) { if (!this.listens(t, n)) return this; var o = i({}, e, { type: t, target: this, sourceTarget: e && e.sourceTarget || this }); if (this._events) { var r = this._events[t]; if (r) { this._firingCount = this._firingCount + 1 || 1; for (var a = 0, s = r.length; a < s; a++) { var h = r[a]; h.fn.call(h.ctx || this, o) } this._firingCount-- } } return n && this._propagateEvent(o), this }, listens: function (t, e) { var i = this._events && this._events[t]; if (i && i.length) return !0; if (e) for (var n in this._eventParents) if (this._eventParents[n].listens(t, e)) return !0; return !1 }, once: function (t, e, i) { if ("object" === typeof t) { for (var n in t) this.once(n, t[n], e); return this } var r = o((function () { this.off(t, e, i).off(t, r, i) }), this); return this.on(t, e, i).on(t, r, i) }, addEventParent: function (t) { return this._eventParents = this._eventParents || {}, this._eventParents[a(t)] = t, this }, removeEventParent: function (t) { return this._eventParents && delete this._eventParents[a(t)], this }, _propagateEvent: function (t) { for (var e in this._eventParents) this._eventParents[e].fire(t.type, i({ layer: t.target, propagatedFrom: t.target }, t), !0) } }; E.addEventListener = E.on, E.removeEventListener = E.clearAllEventListeners = E.off, E.addOneTimeEventListener = E.once, E.fireEvent = E.fire, E.hasEventListeners = E.listens; var B = S.extend(E); function z(t, e, i) { this.x = i ? Math.round(t) : t, this.y = i ? Math.round(e) : e } var j = Math.trunc || function (t) { return t > 0 ? Math.floor(t) : Math.ceil(t) }; function I(t, e, i) { return t instanceof z ? t : g(t) ? new z(t[0], t[1]) : void 0 === t || null === t ? t : "object" === typeof t && "x" in t && "y" in t ? new z(t.x, t.y) : new z(t, e, i) } function A(t, e) { if (t) for (var i = e ? [t, e] : t, n = 0, o = i.length; n < o; n++)this.extend(i[n]) } function R(t, e) { return !t || t instanceof A ? t : new A(t, e) } function D(t, e) { if (t) for (var i = e ? [t, e] : t, n = 0, o = i.length; n < o; n++)this.extend(i[n]) } function Z(t, e) { return t instanceof D ? t : new D(t, e) } function N(t, e, i) { if (isNaN(t) || isNaN(e)) throw new Error("Invalid LatLng object: (" + t + ", " + e + ")"); this.lat = +t, this.lng = +e, void 0 !== i && (this.alt = +i) } function G(t, e, i) { return t instanceof N ? t : g(t) && "object" !== typeof t[0] ? 3 === t.length ? new N(t[0], t[1], t[2]) : 2 === t.length ? new N(t[0], t[1]) : null : void 0 === t || null === t ? t : "object" === typeof t && "lat" in t ? new N(t.lat, "lng" in t ? t.lng : t.lon, t.alt) : void 0 === e ? null : new N(t, e, i) } z.prototype = { clone: function () { return new z(this.x, this.y) }, add: function (t) { return this.clone()._add(I(t)) }, _add: function (t) { return this.x += t.x, this.y += t.y, this }, subtract: function (t) { return this.clone()._subtract(I(t)) }, _subtract: function (t) { return this.x -= t.x, this.y -= t.y, this }, divideBy: function (t) { return this.clone()._divideBy(t) }, _divideBy: function (t) { return this.x /= t, this.y /= t, this }, multiplyBy: function (t) { return this.clone()._multiplyBy(t) }, _multiplyBy: function (t) { return this.x *= t, this.y *= t, this }, scaleBy: function (t) { return new z(this.x * t.x, this.y * t.y) }, unscaleBy: function (t) { return new z(this.x / t.x, this.y / t.y) }, round: function () { return this.clone()._round() }, _round: function () { return this.x = Math.round(this.x), this.y = Math.round(this.y), this }, floor: function () { return this.clone()._floor() }, _floor: function () { return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this }, ceil: function () { return this.clone()._ceil() }, _ceil: function () { return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this }, trunc: function () { return this.clone()._trunc() }, _trunc: function () { return this.x = j(this.x), this.y = j(this.y), this }, distanceTo: function (t) { t = I(t); var e = t.x - this.x, i = t.y - this.y; return Math.sqrt(e * e + i * i) }, equals: function (t) { return t = I(t), t.x === this.x && t.y === this.y }, contains: function (t) { return t = I(t), Math.abs(t.x) <= Math.abs(this.x) && Math.abs(t.y) <= Math.abs(this.y) }, toString: function () { return "Point(" + u(this.x) + ", " + u(this.y) + ")" } }, A.prototype = { extend: function (t) { return t = I(t), this.min || this.max ? (this.min.x = Math.min(t.x, this.min.x), this.max.x = Math.max(t.x, this.max.x), this.min.y = Math.min(t.y, this.min.y), this.max.y = Math.max(t.y, this.max.y)) : (this.min = t.clone(), this.max = t.clone()), this }, getCenter: function (t) { return new z((this.min.x + this.max.x) / 2, (this.min.y + this.max.y) / 2, t) }, getBottomLeft: function () { return new z(this.min.x, this.max.y) }, getTopRight: function () { return new z(this.max.x, this.min.y) }, getTopLeft: function () { return this.min }, getBottomRight: function () { return this.max }, getSize: function () { return this.max.subtract(this.min) }, contains: function (t) { var e, i; return t = "number" === typeof t[0] || t instanceof z ? I(t) : R(t), t instanceof A ? (e = t.min, i = t.max) : e = i = t, e.x >= this.min.x && i.x <= this.max.x && e.y >= this.min.y && i.y <= this.max.y }, intersects: function (t) { t = R(t); var e = this.min, i = this.max, n = t.min, o = t.max, r = o.x >= e.x && n.x <= i.x, a = o.y >= e.y && n.y <= i.y; return r && a }, overlaps: function (t) { t = R(t); var e = this.min, i = this.max, n = t.min, o = t.max, r = o.x > e.x && n.x < i.x, a = o.y > e.y && n.y < i.y; return r && a }, isValid: function () { return !(!this.min || !this.max) } }, D.prototype = { extend: function (t) { var e, i, n = this._southWest, o = this._northEast; if (t instanceof N) e = t, i = t; else { if (!(t instanceof D)) return t ? this.extend(G(t) || Z(t)) : this; if (e = t._southWest, i = t._northEast, !e || !i) return this } return n || o ? (n.lat = Math.min(e.lat, n.lat), n.lng = Math.min(e.lng, n.lng), o.lat = Math.max(i.lat, o.lat), o.lng = Math.max(i.lng, o.lng)) : (this._southWest = new N(e.lat, e.lng), this._northEast = new N(i.lat, i.lng)), this }, pad: function (t) { var e = this._southWest, i = this._northEast, n = Math.abs(e.lat - i.lat) * t, o = Math.abs(e.lng - i.lng) * t; return new D(new N(e.lat - n, e.lng - o), new N(i.lat + n, i.lng + o)) }, getCenter: function () { return new N((this._southWest.lat + this._northEast.lat) / 2, (this._southWest.lng + this._northEast.lng) / 2) }, getSouthWest: function () { return this._southWest }, getNorthEast: function () { return this._northEast }, getNorthWest: function () { return new N(this.getNorth(), this.getWest()) }, getSouthEast: function () { return new N(this.getSouth(), this.getEast()) }, getWest: function () { return this._southWest.lng }, getSouth: function () { return this._southWest.lat }, getEast: function () { return this._northEast.lng }, getNorth: function () { return this._northEast.lat }, contains: function (t) { t = "number" === typeof t[0] || t instanceof N || "lat" in t ? G(t) : Z(t); var e, i, n = this._southWest, o = this._northEast; return t instanceof D ? (e = t.getSouthWest(), i = t.getNorthEast()) : e = i = t, e.lat >= n.lat && i.lat <= o.lat && e.lng >= n.lng && i.lng <= o.lng }, intersects: function (t) { t = Z(t); var e = this._southWest, i = this._northEast, n = t.getSouthWest(), o = t.getNorthEast(), r = o.lat >= e.lat && n.lat <= i.lat, a = o.lng >= e.lng && n.lng <= i.lng; return r && a }, overlaps: function (t) { t = Z(t); var e = this._southWest, i = this._northEast, n = t.getSouthWest(), o = t.getNorthEast(), r = o.lat > e.lat && n.lat < i.lat, a = o.lng > e.lng && n.lng < i.lng; return r && a }, toBBoxString: function () { return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(",") }, equals: function (t, e) { return !!t && (t = Z(t), this._southWest.equals(t.getSouthWest(), e) && this._northEast.equals(t.getNorthEast(), e)) }, isValid: function () { return !(!this._southWest || !this._northEast) } }, N.prototype = { equals: function (t, e) { if (!t) return !1; t = G(t); var i = Math.max(Math.abs(this.lat - t.lat), Math.abs(this.lng - t.lng)); return i <= (void 0 === e ? 1e-9 : e) }, toString: function (t) { return "LatLng(" + u(this.lat, t) + ", " + u(this.lng, t) + ")" }, distanceTo: function (t) { return H.distance(this, G(t)) }, wrap: function () { return H.wrapLatLng(this) }, toBounds: function (t) { var e = 180 * t / 40075017, i = e / Math.cos(Math.PI / 180 * this.lat); return Z([this.lat - e, this.lng - i], [this.lat + e, this.lng + i]) }, clone: function () { return new N(this.lat, this.lng, this.alt) } }; var F = { latLngToPoint: function (t, e) { var i = this.projection.project(t), n = this.scale(e); return this.transformation._transform(i, n) }, pointToLatLng: function (t, e) { var i = this.scale(e), n = this.transformation.untransform(t, i); return this.projection.unproject(n) }, project: function (t) { return this.projection.project(t) }, unproject: function (t) { return this.projection.unproject(t) }, scale: function (t) { return 256 * Math.pow(2, t) }, zoom: function (t) { return Math.log(t / 256) / Math.LN2 }, getProjectedBounds: function (t) { if (this.infinite) return null; var e = this.projection.bounds, i = this.scale(t), n = this.transformation.transform(e.min, i), o = this.transformation.transform(e.max, i); return new A(n, o) }, infinite: !1, wrapLatLng: function (t) { var e = this.wrapLng ? h(t.lng, this.wrapLng, !0) : t.lng, i = this.wrapLat ? h(t.lat, this.wrapLat, !0) : t.lat, n = t.alt; return new N(i, e, n) }, wrapLatLngBounds: function (t) { var e = t.getCenter(), i = this.wrapLatLng(e), n = e.lat - i.lat, o = e.lng - i.lng; if (0 === n && 0 === o) return t; var r = t.getSouthWest(), a = t.getNorthEast(), s = new N(r.lat - n, r.lng - o), h = new N(a.lat - n, a.lng - o); return new D(s, h) } }, H = i({}, F, { wrapLng: [-180, 180], R: 6371e3, distance: function (t, e) { var i = Math.PI / 180, n = t.lat * i, o = e.lat * i, r = Math.sin((e.lat - t.lat) * i / 2), a = Math.sin((e.lng - t.lng) * i / 2), s = r * r + Math.cos(n) * Math.cos(o) * a * a, h = 2 * Math.atan2(Math.sqrt(s), Math.sqrt(1 - s)); return this.R * h } }), V = 6378137, U = { R: V, MAX_LATITUDE: 85.0511287798, project: function (t) { var e = Math.PI / 180, i = this.MAX_LATITUDE, n = Math.max(Math.min(i, t.lat), -i), o = Math.sin(n * e); return new z(this.R * t.lng * e, this.R * Math.log((1 + o) / (1 - o)) / 2) }, unproject: function (t) { var e = 180 / Math.PI; return new N((2 * Math.atan(Math.exp(t.y / this.R)) - Math.PI / 2) * e, t.x * e / this.R) }, bounds: function () { var t = V * Math.PI; return new A([-t, -t], [t, t]) }() }; function q(t, e, i, n) { if (g(t)) return this._a = t[0], this._b = t[1], this._c = t[2], void (this._d = t[3]); this._a = t, this._b = e, this._c = i, this._d = n } function W(t, e, i, n) { return new q(t, e, i, n) } q.prototype = { transform: function (t, e) { return this._transform(t.clone(), e) }, _transform: function (t, e) { return e = e || 1, t.x = e * (this._a * t.x + this._b), t.y = e * (this._c * t.y + this._d), t }, untransform: function (t, e) { return e = e || 1, new z((t.x / e - this._b) / this._a, (t.y / e - this._d) / this._c) } }; var $ = i({}, H, { code: "EPSG:3857", projection: U, transformation: function () { var t = .5 / (Math.PI * U.R); return W(t, .5, -t, .5) }() }), K = i({}, $, { code: "EPSG:900913" }); function J(t) { return document.createElementNS("http://www.w3.org/2000/svg", t) } function Y(t, e) { var i, n, o, r, a, s, h = ""; for (i = 0, o = t.length; i < o; i++) { for (a = t[i], n = 0, r = a.length; n < r; n++)s = a[n], h += (n ? "L" : "M") + s.x + " " + s.y; h += e ? St ? "z" : "x" : "" } return h || "M0 0" } var X = document.documentElement.style, Q = "ActiveXObject" in window, tt = Q && !document.addEventListener, et = "msLaunchUri" in navigator && !("documentMode" in document), it = Et("webkit"), nt = Et("android"), ot = Et("android 2") || Et("android 3"), rt = parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10), at = nt && Et("Google") && rt < 537 && !("AudioNode" in window), st = !!window.opera, ht = !et && Et("chrome"), lt = Et("gecko") && !it && !st && !Q, ut = !ht && Et("safari"), ct = Et("phantom"), pt = "OTransition" in X, dt = 0 === navigator.platform.indexOf("Win"), ft = Q && "transition" in X, _t = "WebKitCSSMatrix" in window && "m11" in new window.WebKitCSSMatrix && !ot, mt = "MozPerspective" in X, gt = !window.L_DISABLE_3D && (ft || _t || mt) && !pt && !ct, vt = "undefined" !== typeof orientation || Et("mobile"), yt = vt && it, bt = vt && _t, Lt = !window.PointerEvent && window.MSPointerEvent, wt = !(!window.PointerEvent && !Lt), xt = !window.L_NO_TOUCH && (wt || "ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch), kt = vt && st, Mt = vt && lt, Pt = (window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI) > 1, Ct = function () { var t = !1; try { var e = Object.defineProperty({}, "passive", { get: function () { t = !0 } }); window.addEventListener("testPassiveEventSupport", l, e), window.removeEventListener("testPassiveEventSupport", l, e) } catch (i) { } return t }(), Tt = function () { return !!document.createElement("canvas").getContext }(), St = !(!document.createElementNS || !J("svg").createSVGRect), Ot = !St && function () { try { var t = document.createElement("div"); t.innerHTML = '<v:shape adj="1"/>'; var e = t.firstChild; return e.style.behavior = "url(#default#VML)", e && "object" === typeof e.adj } catch (i) { return !1 } }(); function Et(t) { return navigator.userAgent.toLowerCase().indexOf(t) >= 0 } var Bt = { ie: Q, ielt9: tt, edge: et, webkit: it, android: nt, android23: ot, androidStock: at, opera: st, chrome: ht, gecko: lt, safari: ut, phantom: ct, opera12: pt, win: dt, ie3d: ft, webkit3d: _t, gecko3d: mt, any3d: gt, mobile: vt, mobileWebkit: yt, mobileWebkit3d: bt, msPointer: Lt, pointer: wt, touch: xt, mobileOpera: kt, mobileGecko: Mt, retina: Pt, passiveEvents: Ct, canvas: Tt, svg: St, vml: Ot }, zt = Lt ? "MSPointerDown" : "pointerdown", jt = Lt ? "MSPointerMove" : "pointermove", It = Lt ? "MSPointerUp" : "pointerup", At = Lt ? "MSPointerCancel" : "pointercancel", Rt = {}, Dt = !1; function Zt(t, e, i, n) { return "touchstart" === e ? Gt(t, i, n) : "touchmove" === e ? qt(t, i, n) : "touchend" === e && Wt(t, i, n), this } function Nt(t, e, i) { var n = t["_leaflet_" + e + i]; return "touchstart" === e ? t.removeEventListener(zt, n, !1) : "touchmove" === e ? t.removeEventListener(jt, n, !1) : "touchend" === e && (t.removeEventListener(It, n, !1), t.removeEventListener(At, n, !1)), this } function Gt(t, e, i) { var n = o((function (t) { t.MSPOINTER_TYPE_TOUCH && t.pointerType === t.MSPOINTER_TYPE_TOUCH && He(t), Ut(t, e) })); t["_leaflet_touchstart" + i] = n, t.addEventListener(zt, n, !1), Dt || (document.addEventListener(zt, Ft, !0), document.addEventListener(jt, Ht, !0), document.addEventListener(It, Vt, !0), document.addEventListener(At, Vt, !0), Dt = !0) } function Ft(t) { Rt[t.pointerId] = t } function Ht(t) { Rt[t.pointerId] && (Rt[t.pointerId] = t) } function Vt(t) { delete Rt[t.pointerId] } function Ut(t, e) { for (var i in t.touches = [], Rt) t.touches.push(Rt[i]); t.changedTouches = [t], e(t) } function qt(t, e, i) { var n = function (t) { t.pointerType === (t.MSPOINTER_TYPE_MOUSE || "mouse") && 0 === t.buttons || Ut(t, e) }; t["_leaflet_touchmove" + i] = n, t.addEventListener(jt, n, !1) } function Wt(t, e, i) { var n = function (t) { Ut(t, e) }; t["_leaflet_touchend" + i] = n, t.addEventListener(It, n, !1), t.addEventListener(At, n, !1) } var $t = Lt ? "MSPointerDown" : wt ? "pointerdown" : "touchstart", Kt = Lt ? "MSPointerUp" : wt ? "pointerup" : "touchend", Jt = "_leaflet_"; function Yt(t, e, i) { var n, o, r = !1, a = 250; function s(t) { if (wt) { if (!t.isPrimary) return; if ("mouse" === t.pointerType) return } else if (t.touches.length > 1) return; var e = Date.now(), i = e - (n || e); o = t.touches ? t.touches[0] : t, r = i > 0 && i <= a, n = e } function h(t) { if (r && !o.cancelBubble) { if (wt) { if ("mouse" === t.pointerType) return; var i, a, s = {}; for (a in o) i = o[a], s[a] = i && i.bind ? i.bind(o) : i; o = s } o.type = "dblclick", o.button = 0, e(o), n = null } } return t[Jt + $t + i] = s, t[Jt + Kt + i] = h, t[Jt + "dblclick" + i] = e, t.addEventListener($t, s, !!Ct && { passive: !1 }), t.addEventListener(Kt, h, !!Ct && { passive: !1 }), t.addEventListener("dblclick", e, !1), this } function Xt(t, e) { var i = t[Jt + $t + e], n = t[Jt + Kt + e], o = t[Jt + "dblclick" + e]; return t.removeEventListener($t, i, !!Ct && { passive: !1 }), t.removeEventListener(Kt, n, !!Ct && { passive: !1 }), t.removeEventListener("dblclick", o, !1), this } var Qt, te, ee, ie, ne, oe = Le(["transform", "webkitTransform", "OTransform", "MozTransform", "msTransform"]), re = Le(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]), ae = "webkitTransition" === re || "OTransition" === re ? re + "End" : "transitionend"; function se(t) { return "string" === typeof t ? document.getElementById(t) : t } function he(t, e) { var i = t.style[e] || t.currentStyle && t.currentStyle[e]; if ((!i || "auto" === i) && document.defaultView) { var n = document.defaultView.getComputedStyle(t, null); i = n ? n[e] : null } return "auto" === i ? null : i } function le(t, e, i) { var n = document.createElement(t); return n.className = e || "", i && i.appendChild(n), n } function ue(t) { var e = t.parentNode; e && e.removeChild(t) } function ce(t) { while (t.firstChild) t.removeChild(t.firstChild) } function pe(t) { var e = t.parentNode; e && e.lastChild !== t && e.appendChild(t) } function de(t) { var e = t.parentNode; e && e.firstChild !== t && e.insertBefore(t, e.firstChild) } function fe(t, e) { if (void 0 !== t.classList) return t.classList.contains(e); var i = ve(t); return i.length > 0 && new RegExp("(^|\\s)" + e + "(\\s|$)").test(i) } function _e(t, e) { if (void 0 !== t.classList) for (var i = p(e), n = 0, o = i.length; n < o; n++)t.classList.add(i[n]); else if (!fe(t, e)) { var r = ve(t); ge(t, (r ? r + " " : "") + e) } } function me(t, e) { void 0 !== t.classList ? t.classList.remove(e) : ge(t, c((" " + ve(t) + " ").replace(" " + e + " ", " "))) } function ge(t, e) { void 0 === t.className.baseVal ? t.className = e : t.className.baseVal = e } function ve(t) { return t.correspondingElement && (t = t.correspondingElement), void 0 === t.className.baseVal ? t.className : t.className.baseVal } function ye(t, e) { "opacity" in t.style ? t.style.opacity = e : "filter" in t.style && be(t, e) } function be(t, e) { var i = !1, n = "DXImageTransform.Microsoft.Alpha"; try { i = t.filters.item(n) } catch (o) { if (1 === e) return } e = Math.round(100 * e), i ? (i.Enabled = 100 !== e, i.Opacity = e) : t.style.filter += " progid:" + n + "(opacity=" + e + ")" } function Le(t) { for (var e = document.documentElement.style, i = 0; i < t.length; i++)if (t[i] in e) return t[i]; return !1 } function we(t, e, i) { var n = e || new z(0, 0); t.style[oe] = (ft ? "translate(" + n.x + "px," + n.y + "px)" : "translate3d(" + n.x + "px," + n.y + "px,0)") + (i ? " scale(" + i + ")" : "") } function xe(t, e) { t._leaflet_pos = e, gt ? we(t, e) : (t.style.left = e.x + "px", t.style.top = e.y + "px") } function ke(t) { return t._leaflet_pos || new z(0, 0) } if ("onselectstart" in document) Qt = function () { ze(window, "selectstart", He) }, te = function () { Ie(window, "selectstart", He) }; else { var Me = Le(["userSelect", "WebkitUserSelect", "OUserSelect", "MozUserSelect", "msUserSelect"]); Qt = function () { if (Me) { var t = document.documentElement.style; ee = t[Me], t[Me] = "none" } }, te = function () { Me && (document.documentElement.style[Me] = ee, ee = void 0) } } function Pe() { ze(window, "dragstart", He) } function Ce() { Ie(window, "dragstart", He) } function Te(t) { while (-1 === t.tabIndex) t = t.parentNode; t.style && (Se(), ie = t, ne = t.style.outline, t.style.outline = "none", ze(window, "keydown", Se)) } function Se() { ie && (ie.style.outline = ne, ie = void 0, ne = void 0, Ie(window, "keydown", Se)) } function Oe(t) { do { t = t.parentNode } while ((!t.offsetWidth || !t.offsetHeight) && t !== document.body); return t } function Ee(t) { var e = t.getBoundingClientRect(); return { x: e.width / t.offsetWidth || 1, y: e.height / t.offsetHeight || 1, boundingClientRect: e } } var Be = { TRANSFORM: oe, TRANSITION: re, TRANSITION_END: ae, get: se, getStyle: he, create: le, remove: ue, empty: ce, toFront: pe, toBack: de, hasClass: fe, addClass: _e, removeClass: me, setClass: ge, getClass: ve, setOpacity: ye, testProp: Le, setTransform: we, setPosition: xe, getPosition: ke, disableTextSelection: Qt, enableTextSelection: te, disableImageDrag: Pe, enableImageDrag: Ce, preventOutline: Te, restoreOutline: Se, getSizedParentNode: Oe, getScale: Ee }; function ze(t, e, i, n) { if ("object" === typeof e) for (var o in e) De(t, o, e[o], i); else { e = p(e); for (var r = 0, a = e.length; r < a; r++)De(t, e[r], i, n) } return this } var je = "_leaflet_events"; function Ie(t, e, i, n) { if ("object" === typeof e) for (var o in e) Ze(t, o, e[o], i); else if (e) { e = p(e); for (var r = 0, a = e.length; r < a; r++)Ze(t, e[r], i, n) } else { for (var s in t[je]) Ze(t, s, t[je][s]); delete t[je] } return this } function Ae() { if (wt) return !(et || ut) } var Re = { mouseenter: "mouseover", mouseleave: "mouseout", wheel: !("onwheel" in window) && "mousewheel" }; function De(t, e, i, n) { var o = e + a(i) + (n ? "_" + a(n) : ""); if (t[je] && t[je][o]) return this; var r = function (e) { return i.call(n || t, e || window.event) }, s = r; wt && 0 === e.indexOf("touch") ? Zt(t, e, r, o) : xt && "dblclick" === e && !Ae() ? Yt(t, r, o) : "addEventListener" in t ? "touchstart" === e || "touchmove" === e || "wheel" === e || "mousewheel" === e ? t.addEventListener(Re[e] || e, r, !!Ct && { passive: !1 }) : "mouseenter" === e || "mouseleave" === e ? (r = function (e) { e = e || window.event, Ye(t, e) && s(e) }, t.addEventListener(Re[e], r, !1)) : t.addEventListener(e, s, !1) : "attachEvent" in t && t.attachEvent("on" + e, r), t[je] = t[je] || {}, t[je][o] = r } function Ze(t, e, i, n) { var o = e + a(i) + (n ? "_" + a(n) : ""), r = t[je] && t[je][o]; if (!r) return this; wt && 0 === e.indexOf("touch") ? Nt(t, e, o) : xt && "dblclick" === e && !Ae() ? Xt(t, o) : "removeEventListener" in t ? t.removeEventListener(Re[e] || e, r, !1) : "detachEvent" in t && t.detachEvent("on" + e, r), t[je][o] = null } function Ne(t) { return t.stopPropagation ? t.stopPropagation() : t.originalEvent ? t.originalEvent._stopped = !0 : t.cancelBubble = !0, Je(t), this } function Ge(t) { return De(t, "wheel", Ne), this } function Fe(t) { return ze(t, "mousedown touchstart dblclick", Ne), De(t, "click", Ke), this } function He(t) { return t.preventDefault ? t.preventDefault() : t.returnValue = !1, this } function Ve(t) { return He(t), Ne(t), this } function Ue(t, e) { if (!e) return new z(t.clientX, t.clientY); var i = Ee(e), n = i.boundingClientRect; return new z((t.clientX - n.left) / i.x - e.clientLeft, (t.clientY - n.top) / i.y - e.clientTop) } var qe = dt && ht ? 2 * window.devicePixelRatio : lt ? window.devicePixelRatio : 1; function We(t) { return et ? t.wheelDeltaY / 2 : t.deltaY && 0 === t.deltaMode ? -t.deltaY / qe : t.deltaY && 1 === t.deltaMode ? 20 * -t.deltaY : t.deltaY && 2 === t.deltaMode ? 60 * -t.deltaY : t.deltaX || t.deltaZ ? 0 : t.wheelDelta ? (t.wheelDeltaY || t.wheelDelta) / 2 : t.detail && Math.abs(t.detail) < 32765 ? 20 * -t.detail : t.detail ? t.detail / -32765 * 60 : 0 } var $e = {}; function Ke(t) { $e[t.type] = !0 } function Je(t) { var e = $e[t.type]; return $e[t.type] = !1, e } function Ye(t, e) { var i = e.relatedTarget; if (!i) return !0; try { while (i && i !== t) i = i.parentNode } catch (n) { return !1 } return i !== t } var Xe = { on: ze, off: Ie, stopPropagation: Ne, disableScrollPropagation: Ge, disableClickPropagation: Fe, preventDefault: He, stop: Ve, getMousePosition: Ue, getWheelDelta: We, fakeStop: Ke, skipped: Je, isExternalTarget: Ye, addListener: ze, removeListener: Ie }, Qe = B.extend({ run: function (t, e, i, n) { this.stop(), this._el = t, this._inProgress = !0, this._duration = i || .25, this._easeOutPower = 1 / Math.max(n || .5, .2), this._startPos = ke(t), this._offset = e.subtract(this._startPos), this._startTime = +new Date, this.fire("start"), this._animate() }, stop: function () { this._inProgress && (this._step(!0), this._complete()) }, _animate: function () { this._animId = P(this._animate, this), this._step() }, _step: function (t) { var e = +new Date - this._startTime, i = 1e3 * this._duration; e < i ? this._runFrame(this._easeOut(e / i), t) : (this._runFrame(1), this._complete()) }, _runFrame: function (t, e) { var i = this._startPos.add(this._offset.multiplyBy(t)); e && i._round(), xe(this._el, i), this.fire("step") }, _complete: function () { C(this._animId), this._inProgress = !1, this.fire("end") }, _easeOut: function (t) { return 1 - Math.pow(1 - t, this._easeOutPower) } }), ti = B.extend({ options: { crs: $, center: void 0, zoom: void 0, minZoom: void 0, maxZoom: void 0, layers: [], maxBounds: void 0, renderer: void 0, zoomAnimation: !0, zoomAnimationThreshold: 4, fadeAnimation: !0, markerZoomAnimation: !0, transform3DLimit: 8388608, zoomSnap: 1, zoomDelta: 1, trackResize: !0 }, initialize: function (t, e) { e = d(this, e), this._handlers = [], this._layers = {}, this._zoomBoundLayers = {}, this._sizeChanged = !0, this._initContainer(t), this._initLayout(), this._onResize = o(this._onResize, this), this._initEvents(), e.maxBounds && this.setMaxBounds(e.maxBounds), void 0 !== e.zoom && (this._zoom = this._limitZoom(e.zoom)), e.center && void 0 !== e.zoom && this.setView(G(e.center), e.zoom, { reset: !0 }), this.callInitHooks(), this._zoomAnimated = re && gt && !kt && this.options.zoomAnimation, this._zoomAnimated && (this._createAnimProxy(), ze(this._proxy, ae, this._catchTransitionEnd, this)), this._addLayers(this.options.layers) }, setView: function (t, e, n) { if (e = void 0 === e ? this._zoom : this._limitZoom(e), t = this._limitCenter(G(t), e, this.options.maxBounds), n = n || {}, this._stop(), this._loaded && !n.reset && !0 !== n) { void 0 !== n.animate && (n.zoom = i({ animate: n.animate }, n.zoom), n.pan = i({ animate: n.animate, duration: n.duration }, n.pan)); var o = this._zoom !== e ? this._tryAnimatedZoom && this._tryAnimatedZoom(t, e, n.zoom) : this._tryAnimatedPan(t, n.pan); if (o) return clearTimeout(this._sizeTimer), this } return this._resetView(t, e), this }, setZoom: function (t, e) { return this._loaded ? this.setView(this.getCenter(), t, { zoom: e }) : (this._zoom = t, this) }, zoomIn: function (t, e) { return t = t || (gt ? this.options.zoomDelta : 1), this.setZoom(this._zoom + t, e) }, zoomOut: function (t, e) { return t = t || (gt ? this.options.zoomDelta : 1), this.setZoom(this._zoom - t, e) }, setZoomAround: function (t, e, i) { var n = this.getZoomScale(e), o = this.getSize().divideBy(2), r = t instanceof z ? t : this.latLngToContainerPoint(t), a = r.subtract(o).multiplyBy(1 - 1 / n), s = this.containerPointToLatLng(o.add(a)); return this.setView(s, e, { zoom: i }) }, _getBoundsCenterZoom: function (t, e) { e = e || {}, t = t.getBounds ? t.getBounds() : Z(t); var i = I(e.paddingTopLeft || e.padding || [0, 0]), n = I(e.paddingBottomRight || e.padding || [0, 0]), o = this.getBoundsZoom(t, !1, i.add(n)); if (o = "number" === typeof e.maxZoom ? Math.min(e.maxZoom, o) : o, o === 1 / 0) return { center: t.getCenter(), zoom: o }; var r = n.subtract(i).divideBy(2), a = this.project(t.getSouthWest(), o), s = this.project(t.getNorthEast(), o), h = this.unproject(a.add(s).divideBy(2).add(r), o); return { center: h, zoom: o } }, fitBounds: function (t, e) { if (t = Z(t), !t.isValid()) throw new Error("Bounds are not valid."); var i = this._getBoundsCenterZoom(t, e); return this.setView(i.center, i.zoom, e) }, fitWorld: function (t) { return this.fitBounds([[-90, -180], [90, 180]], t) }, panTo: function (t, e) { return this.setView(t, this._zoom, { pan: e }) }, panBy: function (t, e) { if (t = I(t).round(), e = e || {}, !t.x && !t.y) return this.fire("moveend"); if (!0 !== e.animate && !this.getSize().contains(t)) return this._resetView(this.unproject(this.project(this.getCenter()).add(t)), this.getZoom()), this; if (this._panAnim || (this._panAnim = new Qe, this._panAnim.on({ step: this._onPanTransitionStep, end: this._onPanTransitionEnd }, this)), e.noMoveStart || this.fire("movestart"), !1 !== e.animate) { _e(this._mapPane, "leaflet-pan-anim"); var i = this._getMapPanePos().subtract(t).round(); this._panAnim.run(this._mapPane, i, e.duration || .25, e.easeLinearity) } else this._rawPanBy(t), this.fire("move").fire("moveend"); return this }, flyTo: function (t, e, i) { if (i = i || {}, !1 === i.animate || !gt) return this.setView(t, e, i); this._stop(); var n = this.project(this.getCenter()), o = this.project(t), r = this.getSize(), a = this._zoom; t = G(t), e = void 0 === e ? a : e; var s = Math.max(r.x, r.y), h = s * this.getZoomScale(a, e), l = o.distanceTo(n) || 1, u = 1.42, c = u * u; function p(t) { var e = t ? -1 : 1, i = t ? h : s, n = h * h - s * s + e * c * c * l * l, o = 2 * i * c * l, r = n / o, a = Math.sqrt(r * r + 1) - r, u = a < 1e-9 ? -18 : Math.log(a); return u } function d(t) { return (Math.exp(t) - Math.exp(-t)) / 2 } function f(t) { return (Math.exp(t) + Math.exp(-t)) / 2 } function _(t) { return d(t) / f(t) } var m = p(0); function g(t) { return s * (f(m) / f(m + u * t)) } function v(t) { return s * (f(m) * _(m + u * t) - d(m)) / c } function y(t) { return 1 - Math.pow(1 - t, 1.5) } var b = Date.now(), L = (p(1) - m) / u, w = i.duration ? 1e3 * i.duration : 1e3 * L * .8; function x() { var i = (Date.now() - b) / w, r = y(i) * L; i <= 1 ? (this._flyToFrame = P(x, this), this._move(this.unproject(n.add(o.subtract(n).multiplyBy(v(r) / l)), a), this.getScaleZoom(s / g(r), a), { flyTo: !0 })) : this._move(t, e)._moveEnd(!0) } return this._moveStart(!0, i.noMoveStart), x.call(this), this }, flyToBounds: function (t, e) { var i = this._getBoundsCenterZoom(t, e); return this.flyTo(i.center, i.zoom, e) }, setMaxBounds: function (t) { return t = Z(t), t.isValid() ? (this.options.maxBounds && this.off("moveend", this._panInsideMaxBounds), this.options.maxBounds = t, this._loaded && this._panInsideMaxBounds(), this.on("moveend", this._panInsideMaxBounds)) : (this.options.maxBounds = null, this.off("moveend", this._panInsideMaxBounds)) }, setMinZoom: function (t) { var e = this.options.minZoom; return this.options.minZoom = t, this._loaded && e !== t && (this.fire("zoomlevelschange"), this.getZoom() < this.options.minZoom) ? this.setZoom(t) : this }, setMaxZoom: function (t) { var e = this.options.maxZoom; return this.options.maxZoom = t, this._loaded && e !== t && (this.fire("zoomlevelschange"), this.getZoom() > this.options.maxZoom) ? this.setZoom(t) : this }, panInsideBounds: function (t, e) { this._enforcingBounds = !0; var i = this.getCenter(), n = this._limitCenter(i, this._zoom, Z(t)); return i.equals(n) || this.panTo(n, e), this._enforcingBounds = !1, this }, panInside: function (t, e) { e = e || {}; var i = I(e.paddingTopLeft || e.padding || [0, 0]), n = I(e.paddingBottomRight || e.padding || [0, 0]), o = this.getCenter(), r = this.project(o), a = this.project(t), s = this.getPixelBounds(), h = s.getSize().divideBy(2), l = R([s.min.add(i), s.max.subtract(n)]); if (!l.contains(a)) { this._enforcingBounds = !0; var u = r.subtract(a), c = I(a.x + u.x, a.y + u.y); (a.x < l.min.x || a.x > l.max.x) && (c.x = r.x - u.x, u.x > 0 ? c.x += h.x - i.x : c.x -= h.x - n.x), (a.y < l.min.y || a.y > l.max.y) && (c.y = r.y - u.y, u.y > 0 ? c.y += h.y - i.y : c.y -= h.y - n.y), this.panTo(this.unproject(c), e), this._enforcingBounds = !1 } return this }, invalidateSize: function (t) { if (!this._loaded) return this; t = i({ animate: !1, pan: !0 }, !0 === t ? { animate: !0 } : t); var e = this.getSize(); this._sizeChanged = !0, this._lastCenter = null; var n = this.getSize(), r = e.divideBy(2).round(), a = n.divideBy(2).round(), s = r.subtract(a); return s.x || s.y ? (t.animate && t.pan ? this.panBy(s) : (t.pan && this._rawPanBy(s), this.fire("move"), t.debounceMoveend ? (clearTimeout(this._sizeTimer), this._sizeTimer = setTimeout(o(this.fire, this, "moveend"), 200)) : this.fire("moveend")), this.fire("resize", { oldSize: e, newSize: n })) : this }, stop: function () { return this.setZoom(this._limitZoom(this._zoom)), this.options.zoomSnap || this.fire("viewreset"), this._stop() }, locate: function (t) { if (t = this._locateOptions = i({ timeout: 1e4, watch: !1 }, t), !("geolocation" in navigator)) return this._handleGeolocationError({ code: 0, message: "Geolocation not supported." }), this; var e = o(this._handleGeolocationResponse, this), n = o(this._handleGeolocationError, this); return t.watch ? this._locationWatchId = navigator.geolocation.watchPosition(e, n, t) : navigator.geolocation.getCurrentPosition(e, n, t), this }, stopLocate: function () { return navigator.geolocation && navigator.geolocation.clearWatch && navigator.geolocation.clearWatch(this._locationWatchId), this._locateOptions && (this._locateOptions.setView = !1), this }, _handleGeolocationError: function (t) { var e = t.code, i = t.message || (1 === e ? "permission denied" : 2 === e ? "position unavailable" : "timeout"); this._locateOptions.setView && !this._loaded && this.fitWorld(), this.fire("locationerror", { code: e, message: "Geolocation error: " + i + "." }) }, _handleGeolocationResponse: function (t) { var e = t.coords.latitude, i = t.coords.longitude, n = new N(e, i), o = n.toBounds(2 * t.coords.accuracy), r = this._locateOptions; if (r.setView) { var a = this.getBoundsZoom(o); this.setView(n, r.maxZoom ? Math.min(a, r.maxZoom) : a) } var s = { latlng: n, bounds: o, timestamp: t.timestamp }; for (var h in t.coords) "number" === typeof t.coords[h] && (s[h] = t.coords[h]); this.fire("locationfound", s) }, addHandler: function (t, e) { if (!e) return this; var i = this[t] = new e(this); return this._handlers.push(i), this.options[t] && i.enable(), this }, remove: function () { if (this._initEvents(!0), this.off("moveend", this._panInsideMaxBounds), this._containerId !== this._container._leaflet_id) throw new Error("Map container is being reused by another instance"); try { delete this._container._leaflet_id, delete this._containerId } catch (e) { this._container._leaflet_id = void 0, this._containerId = void 0 } var t; for (t in void 0 !== this._locationWatchId && this.stopLocate(), this._stop(), ue(this._mapPane), this._clearControlPos && this._clearControlPos(), this._resizeRequest && (C(this._resizeRequest), this._resizeRequest = null), this._clearHandlers(), this._loaded && this.fire("unload"), this._layers) this._layers[t].remove(); for (t in this._panes) ue(this._panes[t]); return this._layers = [], this._panes = [], delete this._mapPane, delete this._renderer, this }, createPane: function (t, e) { var i = "leaflet-pane" + (t ? " leaflet-" + t.replace("Pane", "") + "-pane" : ""), n = le("div", i, e || this._mapPane); return t && (this._panes[t] = n), n }, getCenter: function () { return this._checkIfLoaded(), this._lastCenter && !this._moved() ? this._lastCenter : this.layerPointToLatLng(this._getCenterLayerPoint()) }, getZoom: function () { return this._zoom }, getBounds: function () { var t = this.getPixelBounds(), e = this.unproject(t.getBottomLeft()), i = this.unproject(t.getTopRight()); return new D(e, i) }, getMinZoom: function () { return void 0 === this.options.minZoom ? this._layersMinZoom || 0 : this.options.minZoom }, getMaxZoom: function () { return void 0 === this.options.maxZoom ? void 0 === this._layersMaxZoom ? 1 / 0 : this._layersMaxZoom : this.options.maxZoom }, getBoundsZoom: function (t, e, i) { t = Z(t), i = I(i || [0, 0]); var n = this.getZoom() || 0, o = this.getMinZoom(), r = this.getMaxZoom(), a = t.getNorthWest(), s = t.getSouthEast(), h = this.getSize().subtract(i), l = R(this.project(s, n), this.project(a, n)).getSize(), u = gt ? this.options.zoomSnap : 1, c = h.x / l.x, p = h.y / l.y, d = e ? Math.max(c, p) : Math.min(c, p); return n = this.getScaleZoom(d, n), u && (n = Math.round(n / (u / 100)) * (u / 100), n = e ? Math.ceil(n / u) * u : Math.floor(n / u) * u), Math.max(o, Math.min(r, n)) }, getSize: function () { return this._size && !this._sizeChanged || (this._size = new z(this._container.clientWidth || 0, this._container.clientHeight || 0), this._sizeChanged = !1), this._size.clone() }, getPixelBounds: function (t, e) { var i = this._getTopLeftPoint(t, e); return new A(i, i.add(this.getSize())) }, getPixelOrigin: function () { return this._checkIfLoaded(), this._pixelOrigin }, getPixelWorldBounds: function (t) { return this.options.crs.getProjectedBounds(void 0 === t ? this.getZoom() : t) }, getPane: function (t) { return "string" === typeof t ? this._panes[t] : t }, getPanes: function () { return this._panes }, getContainer: function () { return this._container }, getZoomScale: function (t, e) { var i = this.options.crs; return e = void 0 === e ? this._zoom : e, i.scale(t) / i.scale(e) }, getScaleZoom: function (t, e) { var i = this.options.crs; e = void 0 === e ? this._zoom : e; var n = i.zoom(t * i.scale(e)); return isNaN(n) ? 1 / 0 : n }, project: function (t, e) { return e = void 0 === e ? this._zoom : e, this.options.crs.latLngToPoint(G(t), e) }, unproject: function (t, e) { return e = void 0 === e ? this._zoom : e, this.options.crs.pointToLatLng(I(t), e) }, layerPointToLatLng: function (t) { var e = I(t).add(this.getPixelOrigin()); return this.unproject(e) }, latLngToLayerPoint: function (t) { var e = this.project(G(t))._round(); return e._subtract(this.getPixelOrigin()) }, wrapLatLng: function (t) { return this.options.crs.wrapLatLng(G(t)) }, wrapLatLngBounds: function (t) { return this.options.crs.wrapLatLngBounds(Z(t)) }, distance: function (t, e) { return this.options.crs.distance(G(t), G(e)) }, containerPointToLayerPoint: function (t) { return I(t).subtract(this._getMapPanePos()) }, layerPointToContainerPoint: function (t) { return I(t).add(this._getMapPanePos()) }, containerPointToLatLng: function (t) { var e = this.containerPointToLayerPoint(I(t)); return this.layerPointToLatLng(e) }, latLngToContainerPoint: function (t) { return this.layerPointToContainerPoint(this.latLngToLayerPoint(G(t))) }, mouseEventToContainerPoint: function (t) { return Ue(t, this._container) }, mouseEventToLayerPoint: function (t) { return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t)) }, mouseEventToLatLng: function (t) { return this.layerPointToLatLng(this.mouseEventToLayerPoint(t)) }, _initContainer: function (t) { var e = this._container = se(t); if (!e) throw new Error("Map container not found."); if (e._leaflet_id) throw new Error("Map container is already initialized."); ze(e, "scroll", this._onScroll, this), this._containerId = a(e) }, _initLayout: function () { var t = this._container; this._fadeAnimated = this.options.fadeAnimation && gt, _e(t, "leaflet-container" + (xt ? " leaflet-touch" : "") + (Pt ? " leaflet-retina" : "") + (tt ? " leaflet-oldie" : "") + (ut ? " leaflet-safari" : "") + (this._fadeAnimated ? " leaflet-fade-anim" : "")); var e = he(t, "position"); "absolute" !== e && "relative" !== e && "fixed" !== e && (t.style.position = "relative"), this._initPanes(), this._initControlPos && this._initControlPos() }, _initPanes: function () { var t = this._panes = {}; this._paneRenderers = {}, this._mapPane = this.createPane("mapPane", this._container), xe(this._mapPane, new z(0, 0)), this.createPane("tilePane"), this.createPane("shadowPane"), this.createPane("overlayPane"), this.createPane("markerPane"), this.createPane("tooltipPane"), this.createPane("popupPane"), this.options.markerZoomAnimation || (_e(t.markerPane, "leaflet-zoom-hide"), _e(t.shadowPane, "leaflet-zoom-hide")) }, _resetView: function (t, e) { xe(this._mapPane, new z(0, 0)); var i = !this._loaded; this._loaded = !0, e = this._limitZoom(e), this.fire("viewprereset"); var n = this._zoom !== e; this._moveStart(n, !1)._move(t, e)._moveEnd(n), this.fire("viewreset"), i && this.fire("load") }, _moveStart: function (t, e) { return t && this.fire("zoomstart"), e || this.fire("movestart"), this }, _move: function (t, e, i) { void 0 === e && (e = this._zoom); var n = this._zoom !== e; return this._zoom = e, this._lastCenter = t, this._pixelOrigin = this._getNewPixelOrigin(t), (n || i && i.pinch) && this.fire("zoom", i), this.fire("move", i) }, _moveEnd: function (t) { return t && this.fire("zoomend"), this.fire("moveend") }, _stop: function () { return C(this._flyToFrame), this._panAnim && this._panAnim.stop(), this }, _rawPanBy: function (t) { xe(this._mapPane, this._getMapPanePos().subtract(t)) }, _getZoomSpan: function () { return this.getMaxZoom() - this.getMinZoom() }, _panInsideMaxBounds: function () { this._enforcingBounds || this.panInsideBounds(this.options.maxBounds) }, _checkIfLoaded: function () { if (!this._loaded) throw new Error("Set map center and zoom first.") }, _initEvents: function (t) { this._targets = {}, this._targets[a(this._container)] = this; var e = t ? Ie : ze; e(this._container, "click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup", this._handleDOMEvent, this), this.options.trackResize && e(window, "resize", this._onResize, this), gt && this.options.transform3DLimit && (t ? this.off : this.on).call(this, "moveend", this._onMoveEnd) }, _onResize: function () { C(this._resizeRequest), this._resizeRequest = P((function () { this.invalidateSize({ debounceMoveend: !0 }) }), this) }, _onScroll: function () { this._container.scrollTop = 0, this._container.scrollLeft = 0 }, _onMoveEnd: function () { var t = this._getMapPanePos(); Math.max(Math.abs(t.x), Math.abs(t.y)) >= this.options.transform3DLimit && this._resetView(this.getCenter(), this.getZoom()) }, _findEventTargets: function (t, e) { var i, n = [], o = "mouseout" === e || "mouseover" === e, r = t.target || t.srcElement, s = !1; while (r) { if (i = this._targets[a(r)], i && ("click" === e || "preclick" === e) && !t._simulated && this._draggableMoved(i)) { s = !0; break } if (i && i.listens(e, !0)) { if (o && !Ye(r, t)) break; if (n.push(i), o) break } if (r === this._container) break; r = r.parentNode } return n.length || s || o || !Ye(r, t) || (n = [this]), n }, _handleDOMEvent: function (t) { if (this._loaded && !Je(t)) { var e = t.type; "mousedown" !== e && "keypress" !== e && "keyup" !== e && "keydown" !== e || Te(t.target || t.srcElement), this._fireDOMEvent(t, e) } }, _mouseEvents: ["click", "dblclick", "mouseover", "mouseout", "contextmenu"], _fireDOMEvent: function (t, e, n) { if ("click" === t.type) { var o = i({}, t); o.type = "preclick", this._fireDOMEvent(o, o.type, n) } if (!t._stopped && (n = (n || []).concat(this._findEventTargets(t, e)), n.length)) { var r = n[0]; "contextmenu" === e && r.listens(e, !0) && He(t); var a = { originalEvent: t }; if ("keypress" !== t.type && "keydown" !== t.type && "keyup" !== t.type) { var s = r.getLatLng && (!r._radius || r._radius <= 10); a.containerPoint = s ? this.latLngToContainerPoint(r.getLatLng()) : this.mouseEventToContainerPoint(t), a.layerPoint = this.containerPointToLayerPoint(a.containerPoint), a.latlng = s ? r.getLatLng() : this.layerPointToLatLng(a.layerPoint) } for (var h = 0; h < n.length; h++)if (n[h].fire(e, a, !0), a.originalEvent._stopped || !1 === n[h].options.bubblingMouseEvents && -1 !== v(this._mouseEvents, e)) return } }, _draggableMoved: function (t) { return t = t.dragging && t.dragging.enabled() ? t : this, t.dragging && t.dragging.moved() || this.boxZoom && this.boxZoom.moved() }, _clearHandlers: function () { for (var t = 0, e = this._handlers.length; t < e; t++)this._handlers[t].disable() }, whenReady: function (t, e) { return this._loaded ? t.call(e || this, { target: this }) : this.on("load", t, e), this }, _getMapPanePos: function () { return ke(this._mapPane) || new z(0, 0) }, _moved: function () { var t = this._getMapPanePos(); return t && !t.equals([0, 0]) }, _getTopLeftPoint: function (t, e) { var i = t && void 0 !== e ? this._getNewPixelOrigin(t, e) : this.getPixelOrigin(); return i.subtract(this._getMapPanePos()) }, _getNewPixelOrigin: function (t, e) { var i = this.getSize()._divideBy(2); return this.project(t, e)._subtract(i)._add(this._getMapPanePos())._round() }, _latLngToNewLayerPoint: function (t, e, i) { var n = this._getNewPixelOrigin(i, e); return this.project(t, e)._subtract(n) }, _latLngBoundsToNewLayerBounds: function (t, e, i) { var n = this._getNewPixelOrigin(i, e); return R([this.project(t.getSouthWest(), e)._subtract(n), this.project(t.getNorthWest(), e)._subtract(n), this.project(t.getSouthEast(), e)._subtract(n), this.project(t.getNorthEast(), e)._subtract(n)]) }, _getCenterLayerPoint: function () { return this.containerPointToLayerPoint(this.getSize()._divideBy(2)) }, _getCenterOffset: function (t) { return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint()) }, _limitCenter: function (t, e, i) { if (!i) return t; var n = this.project(t, e), o = this.getSize().divideBy(2), r = new A(n.subtract(o), n.add(o)), a = this._getBoundsOffset(r, i, e); return a.round().equals([0, 0]) ? t : this.unproject(n.add(a), e) }, _limitOffset: function (t, e) { if (!e) return t; var i = this.getPixelBounds(), n = new A(i.min.add(t), i.max.add(t)); return t.add(this._getBoundsOffset(n, e)) }, _getBoundsOffset: function (t, e, i) { var n = R(this.project(e.getNorthEast(), i), this.project(e.getSouthWest(), i)), o = n.min.subtract(t.min), r = n.max.subtract(t.max), a = this._rebound(o.x, -r.x), s = this._rebound(o.y, -r.y); return new z(a, s) }, _rebound: function (t, e) { return t + e > 0 ? Math.round(t - e) / 2 : Math.max(0, Math.ceil(t)) - Math.max(0, Math.floor(e)) }, _limitZoom: function (t) { var e = this.getMinZoom(), i = this.getMaxZoom(), n = gt ? this.options.zoomSnap : 1; return n && (t = Math.round(t / n) * n), Math.max(e, Math.min(i, t)) }, _onPanTransitionStep: function () { this.fire("move") }, _onPanTransitionEnd: function () { me(this._mapPane, "leaflet-pan-anim"), this.fire("moveend") }, _tryAnimatedPan: function (t, e) { var i = this._getCenterOffset(t)._trunc(); return !(!0 !== (e && e.animate) && !this.getSize().contains(i)) && (this.panBy(i, e), !0) }, _createAnimProxy: function () { var t = this._proxy = le("div", "leaflet-proxy leaflet-zoom-animated"); this._panes.mapPane.appendChild(t), this.on("zoomanim", (function (t) { var e = oe, i = this._proxy.style[e]; we(this._proxy, this.project(t.center, t.zoom), this.getZoomScale(t.zoom, 1)), i === this._proxy.style[e] && this._animatingZoom && this._onZoomTransitionEnd() }), this), this.on("load moveend", this._animMoveEnd, this), this._on("unload", this._destroyAnimProxy, this) }, _destroyAnimProxy: function () { ue(this._proxy), this.off("load moveend", this._animMoveEnd, this), delete this._proxy }, _animMoveEnd: function () { var t = this.getCenter(), e = this.getZoom(); we(this._proxy, this.project(t, e), this.getZoomScale(e, 1)) }, _catchTransitionEnd: function (t) { this._animatingZoom && t.propertyName.indexOf("transform") >= 0 && this._onZoomTransitionEnd() }, _nothingToAnimate: function () { return !this._container.getElementsByClassName("leaflet-zoom-animated").length }, _tryAnimatedZoom: function (t, e, i) { if (this._animatingZoom) return !0; if (i = i || {}, !this._zoomAnimated || !1 === i.animate || this._nothingToAnimate() || Math.abs(e - this._zoom) > this.options.zoomAnimationThreshold) return !1; var n = this.getZoomScale(e), o = this._getCenterOffset(t)._divideBy(1 - 1 / n); return !(!0 !== i.animate && !this.getSize().contains(o)) && (P((function () { this._moveStart(!0, !1)._animateZoom(t, e, !0) }), this), !0) }, _animateZoom: function (t, e, i, n) { this._mapPane && (i && (this._animatingZoom = !0, this._animateToCenter = t, this._animateToZoom = e, _e(this._mapPane, "leaflet-zoom-anim")), this.fire("zoomanim", { center: t, zoom: e, noUpdate: n }), setTimeout(o(this._onZoomTransitionEnd, this), 250)) }, _onZoomTransitionEnd: function () { this._animatingZoom && (this._mapPane && me(this._mapPane, "leaflet-zoom-anim"), this._animatingZoom = !1, this._move(this._animateToCenter, this._animateToZoom), P((function () { this._moveEnd(!0) }), this)) } }); function ei(t, e) { return new ti(t, e) } var ii = S.extend({ options: { position: "topright" }, initialize: function (t) { d(this, t) }, getPosition: function () { return this.options.position }, setPosition: function (t) { var e = this._map; return e && e.removeControl(this), this.options.position = t, e && e.addControl(this), this }, getContainer: function () { return this._container }, addTo: function (t) { this.remove(), this._map = t; var e = this._container = this.onAdd(t), i = this.getPosition(), n = t._controlCorners[i]; return _e(e, "leaflet-control"), -1 !== i.indexOf("bottom") ? n.insertBefore(e, n.firstChild) : n.appendChild(e), this._map.on("unload", this.remove, this), this }, remove: function () { return this._map ? (ue(this._container), this.onRemove && this.onRemove(this._map), this._map.off("unload", this.remove, this), this._map = null, this) : this }, _refocusOnMap: function (t) { this._map && t && t.screenX > 0 && t.screenY > 0 && this._map.getContainer().focus() } }), ni = function (t) { return new ii(t) }; ti.include({ addControl: function (t) { return t.addTo(this), this }, removeControl: function (t) { return t.remove(), this }, _initControlPos: function () { var t = this._controlCorners = {}, e = "leaflet-", i = this._controlContainer = le("div", e + "control-container", this._container); function n(n, o) { var r = e + n + " " + e + o; t[n + o] = le("div", r, i) } n("top", "left"), n("top", "right"), n("bottom", "left"), n("bottom", "right") }, _clearControlPos: function () { for (var t in this._controlCorners) ue(this._controlCorners[t]); ue(this._controlContainer), delete this._controlCorners, delete this._controlContainer } }); var oi = ii.extend({ options: { collapsed: !0, position: "topright", autoZIndex: !0, hideSingleBase: !1, sortLayers: !1, sortFunction: function (t, e, i, n) { return i < n ? -1 : n < i ? 1 : 0 } }, initialize: function (t, e, i) { for (var n in d(this, i), this._layerControlInputs = [], this._layers = [], this._lastZIndex = 0, this._handlingClick = !1, t) this._addLayer(t[n], n); for (n in e) this._addLayer(e[n], n, !0) }, onAdd: function (t) { this._initLayout(), this._update(), this._map = t, t.on("zoomend", this._checkDisabledLayers, this); for (var e = 0; e < this._layers.length; e++)this._layers[e].layer.on("add remove", this._onLayerChange, this); return this._container }, addTo: function (t) { return ii.prototype.addTo.call(this, t), this._expandIfNotCollapsed() }, onRemove: function () { this._map.off("zoomend", this._checkDisabledLayers, this); for (var t = 0; t < this._layers.length; t++)this._layers[t].layer.off("add remove", this._onLayerChange, this) }, addBaseLayer: function (t, e) { return this._addLayer(t, e), this._map ? this._update() : this }, addOverlay: function (t, e) { return this._addLayer(t, e, !0), this._map ? this._update() : this }, removeLayer: function (t) { t.off("add remove", this._onLayerChange, this); var e = this._getLayer(a(t)); return e && this._layers.splice(this._layers.indexOf(e), 1), this._map ? this._update() : this }, expand: function () { _e(this._container, "leaflet-control-layers-expanded"), this._section.style.height = null; var t = this._map.getSize().y - (this._container.offsetTop + 50); return t < this._section.clientHeight ? (_e(this._section, "leaflet-control-layers-scrollbar"), this._section.style.height = t + "px") : me(this._section, "leaflet-control-layers-scrollbar"), this._checkDisabledLayers(), this }, collapse: function () { return me(this._container, "leaflet-control-layers-expanded"), this }, _initLayout: function () { var t = "leaflet-control-layers", e = this._container = le("div", t), i = this.options.collapsed; e.setAttribute("aria-haspopup", !0), Fe(e), Ge(e); var n = this._section = le("section", t + "-list"); i && (this._map.on("click", this.collapse, this), nt || ze(e, { mouseenter: this.expand, mouseleave: this.collapse }, this)); var o = this._layersLink = le("a", t + "-toggle", e); o.href = "#", o.title = "Layers", xt ? (ze(o, "click", Ve), ze(o, "click", this.expand, this)) : ze(o, "focus", this.expand, this), i || this.expand(), this._baseLayersList = le("div", t + "-base", n), this._separator = le("div", t + "-separator", n), this._overlaysList = le("div", t + "-overlays", n), e.appendChild(n) }, _getLayer: function (t) { for (var e = 0; e < this._layers.length; e++)if (this._layers[e] && a(this._layers[e].layer) === t) return this._layers[e] }, _addLayer: function (t, e, i) { this._map && t.on("add remove", this._onLayerChange, this), this._layers.push({ layer: t, name: e, overlay: i }), this.options.sortLayers && this._layers.sort(o((function (t, e) { return this.options.sortFunction(t.layer, e.layer, t.name, e.name) }), this)), this.options.autoZIndex && t.setZIndex && (this._lastZIndex++, t.setZIndex(this._lastZIndex)), this._expandIfNotCollapsed() }, _update: function () { if (!this._container) return this; ce(this._baseLayersList), ce(this._overlaysList), this._layerControlInputs = []; var t, e, i, n, o = 0; for (i = 0; i < this._layers.length; i++)n = this._layers[i], this._addItem(n), e = e || n.overlay, t = t || !n.overlay, o += n.overlay ? 0 : 1; return this.options.hideSingleBase && (t = t && o > 1, this._baseLayersList.style.display = t ? "" : "none"), this._separator.style.display = e && t ? "" : "none", this }, _onLayerChange: function (t) { this._handlingClick || this._update(); var e = this._getLayer(a(t.target)), i = e.overlay ? "add" === t.type ? "overlayadd" : "overlayremove" : "add" === t.type ? "baselayerchange" : null; i && this._map.fire(i, e) }, _createRadioElement: function (t, e) { var i = '<input type="radio" class="leaflet-control-layers-selector" name="' + t + '"' + (e ? ' checked="checked"' : "") + "/>", n = document.createElement("div"); return n.innerHTML = i, n.firstChild }, _addItem: function (t) { var e, i = document.createElement("label"), n = this._map.hasLayer(t.layer); t.overlay ? (e = document.createElement("input"), e.type = "checkbox", e.className = "leaflet-control-layers-selector", e.defaultChecked = n) : e = this._createRadioElement("leaflet-base-layers_" + a(this), n), this._layerControlInputs.push(e), e.layerId = a(t.layer), ze(e, "click", this._onInputClick, this); var o = document.createElement("span"); o.innerHTML = " " + t.name; var r = document.createElement("div"); i.appendChild(r), r.appendChild(e), r.appendChild(o); var s = t.overlay ? this._overlaysList : this._baseLayersList; return s.appendChild(i), this._checkDisabledLayers(), i }, _onInputClick: function () { var t, e, i = this._layerControlInputs, n = [], o = []; this._handlingClick = !0; for (var r = i.length - 1; r >= 0; r--)t = i[r], e = this._getLayer(t.layerId).layer, t.checked ? n.push(e) : t.checked || o.push(e); for (r = 0; r < o.length; r++)this._map.hasLayer(o[r]) && this._map.removeLayer(o[r]); for (r = 0; r < n.length; r++)this._map.hasLayer(n[r]) || this._map.addLayer(n[r]); this._handlingClick = !1, this._refocusOnMap() }, _checkDisabledLayers: function () { for (var t, e, i = this._layerControlInputs, n = this._map.getZoom(), o = i.length - 1; o >= 0; o--)t = i[o], e = this._getLayer(t.layerId).layer, t.disabled = void 0 !== e.options.minZoom && n < e.options.minZoom || void 0 !== e.options.maxZoom && n > e.options.maxZoom }, _expandIfNotCollapsed: function () { return this._map && !this.options.collapsed && this.expand(), this }, _expand: function () { return this.expand() }, _collapse: function () { return this.collapse() } }), ri = function (t, e, i) { return new oi(t, e, i) }, ai = ii.extend({ options: { position: "topleft", zoomInText: "+", zoomInTitle: "Zoom in", zoomOutText: "&#x2212;", zoomOutTitle: "Zoom out" }, onAdd: function (t) { var e = "leaflet-control-zoom", i = le("div", e + " leaflet-bar"), n = this.options; return this._zoomInButton = this._createButton(n.zoomInText, n.zoomInTitle, e + "-in", i, this._zoomIn), this._zoomOutButton = this._createButton(n.zoomOutText, n.zoomOutTitle, e + "-out", i, this._zoomOut), this._updateDisabled(), t.on("zoomend zoomlevelschange", this._updateDisabled, this), i }, onRemove: function (t) { t.off("zoomend zoomlevelschange", this._updateDisabled, this) }, disable: function () { return this._disabled = !0, this._updateDisabled(), this }, enable: function () { return this._disabled = !1, this._updateDisabled(), this }, _zoomIn: function (t) { !this._disabled && this._map._zoom < this._map.getMaxZoom() && this._map.zoomIn(this._map.options.zoomDelta * (t.shiftKey ? 3 : 1)) }, _zoomOut: function (t) { !this._disabled && this._map._zoom > this._map.getMinZoom() && this._map.zoomOut(this._map.options.zoomDelta * (t.shiftKey ? 3 : 1)) }, _createButton: function (t, e, i, n, o) { var r = le("a", i, n); return r.innerHTML = t, r.href = "#", r.title = e, r.setAttribute("role", "button"), r.setAttribute("aria-label", e), Fe(r), ze(r, "click", Ve), ze(r, "click", o, this), ze(r, "click", this._refocusOnMap, this), r }, _updateDisabled: function () { var t = this._map, e = "leaflet-disabled"; me(this._zoomInButton, e), me(this._zoomOutButton, e), (this._disabled || t._zoom === t.getMinZoom()) && _e(this._zoomOutButton, e), (this._disabled || t._zoom === t.getMaxZoom()) && _e(this._zoomInButton, e) } }); ti.mergeOptions({ zoomControl: !0 }), ti.addInitHook((function () { this.options.zoomControl && (this.zoomControl = new ai, this.addControl(this.zoomControl)) })); var si = function (t) { return new ai(t) }, hi = ii.extend({ options: { position: "bottomleft", maxWidth: 100, metric: !0, imperial: !0 }, onAdd: function (t) { var e = "leaflet-control-scale", i = le("div", e), n = this.options; return this._addScales(n, e + "-line", i), t.on(n.updateWhenIdle ? "moveend" : "move", this._update, this), t.whenReady(this._update, this), i }, onRemove: function (t) { t.off(this.options.updateWhenIdle ? "moveend" : "move", this._update, this) }, _addScales: function (t, e, i) { t.metric && (this._mScale = le("div", e, i)), t.imperial && (this._iScale = le("div", e, i)) }, _update: function () { var t = this._map, e = t.getSize().y / 2, i = t.distance(t.containerPointToLatLng([0, e]), t.containerPointToLatLng([this.options.maxWidth, e])); this._updateScales(i) }, _updateScales: function (t) { this.options.metric && t && this._updateMetric(t), this.options.imperial && t && this._updateImperial(t) }, _updateMetric: function (t) { var e = this._getRoundNum(t), i = e < 1e3 ? e + " m" : e / 1e3 + " km"; this._updateScale(this._mScale, i, e / t) }, _updateImperial: function (t) { var e, i, n, o = 3.2808399 * t; o > 5280 ? (e = o / 5280, i = this._getRoundNum(e), this._updateScale(this._iScale, i + " mi", i / e)) : (n = this._getRoundNum(o), this._updateScale(this._iScale, n + " ft", n / o)) }, _updateScale: function (t, e, i) { t.style.width = Math.round(this.options.maxWidth * i) + "px", t.innerHTML = e }, _getRoundNum: function (t) { var e = Math.pow(10, (Math.floor(t) + "").length - 1), i = t / e; return i = i >= 10 ? 10 : i >= 5 ? 5 : i >= 3 ? 3 : i >= 2 ? 2 : 1, e * i } }), li = function (t) { return new hi(t) }, ui = ii.extend({ options: { position: "bottomright", prefix: '<a href="https://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>' }, initialize: function (t) { d(this, t), this._attributions = {} }, onAdd: function (t) { for (var e in t.attributionControl = this, this._container = le("div", "leaflet-control-attribution"), Fe(this._container), t._layers) t._layers[e].getAttribution && this.addAttribution(t._layers[e].getAttribution()); return this._update(), this._container }, setPrefix: function (t) { return this.options.prefix = t, this._update(), this }, addAttribution: function (t) { return t ? (this._attributions[t] || (this._attributions[t] = 0), this._attributions[t]++, this._update(), this) : this }, removeAttribution: function (t) { return t ? (this._attributions[t] && (this._attributions[t]--, this._update()), this) : this }, _update: function () { if (this._map) { var t = []; for (var e in this._attributions) this._attributions[e] && t.push(e); var i = []; this.options.prefix && i.push(this.options.prefix), t.length && i.push(t.join(", ")), this._container.innerHTML = i.join(" | ") } } }); ti.mergeOptions({ attributionControl: !0 }), ti.addInitHook((function () { this.options.attributionControl && (new ui).addTo(this) })); var ci = function (t) { return new ui(t) }; ii.Layers = oi, ii.Zoom = ai, ii.Scale = hi, ii.Attribution = ui, ni.layers = ri, ni.zoom = si, ni.scale = li, ni.attribution = ci; var pi = S.extend({ initialize: function (t) { this._map = t }, enable: function () { return this._enabled || (this._enabled = !0, this.addHooks()), this }, disable: function () { return this._enabled ? (this._enabled = !1, this.removeHooks(), this) : this }, enabled: function () { return !!this._enabled } }); pi.addTo = function (t, e) { return t.addHandler(e, this), this }; var di, fi = { Events: E }, _i = xt ? "touchstart mousedown" : "mousedown", mi = { mousedown: "mouseup", touchstart: "touchend", pointerdown: "touchend", MSPointerDown: "touchend" }, gi = { mousedown: "mousemove", touchstart: "touchmove", pointerdown: "touchmove", MSPointerDown: "touchmove" }, vi = B.extend({ options: { clickTolerance: 3 }, initialize: function (t, e, i, n) { d(this, n), this._element = t, this._dragStartTarget = e || t, this._preventOutline = i }, enable: function () { this._enabled || (ze(this._dragStartTarget, _i, this._onDown, this), this._enabled = !0) }, disable: function () { this._enabled && (vi._dragging === this && this.finishDrag(), Ie(this._dragStartTarget, _i, this._onDown, this), this._enabled = !1, this._moved = !1) }, _onDown: function (t) { if (!t._simulated && this._enabled && (this._moved = !1, !fe(this._element, "leaflet-zoom-anim") && !(vi._dragging || t.shiftKey || 1 !== t.which && 1 !== t.button && !t.touches) && (vi._dragging = this, this._preventOutline && Te(this._element), Pe(), Qt(), !this._moving))) { this.fire("down"); var e = t.touches ? t.touches[0] : t, i = Oe(this._element); this._startPoint = new z(e.clientX, e.clientY), this._parentScale = Ee(i), ze(document, gi[t.type], this._onMove, this), ze(document, mi[t.type], this._onUp, this) } }, _onMove: function (t) { if (!t._simulated && this._enabled) if (t.touches && t.touches.length > 1) this._moved = !0; else { var e = t.touches && 1 === t.touches.length ? t.touches[0] : t, i = new z(e.clientX, e.clientY)._subtract(this._startPoint); (i.x || i.y) && (Math.abs(i.x) + Math.abs(i.y) < this.options.clickTolerance || (i.x /= this._parentScale.x, i.y /= this._parentScale.y, He(t), this._moved || (this.fire("dragstart"), this._moved = !0, this._startPos = ke(this._element).subtract(i), _e(document.body, "leaflet-dragging"), this._lastTarget = t.target || t.srcElement, window.SVGElementInstance && this._lastTarget instanceof window.SVGElementInstance && (this._lastTarget = this._lastTarget.correspondingUseElement), _e(this._lastTarget, "leaflet-drag-target")), this._newPos = this._startPos.add(i), this._moving = !0, C(this._animRequest), this._lastEvent = t, this._animRequest = P(this._updatePosition, this, !0))) } }, _updatePosition: function () { var t = { originalEvent: this._lastEvent }; this.fire("predrag", t), xe(this._element, this._newPos), this.fire("drag", t) }, _onUp: function (t) { !t._simulated && this._enabled && this.finishDrag() }, finishDrag: function () { for (var t in me(document.body, "leaflet-dragging"), this._lastTarget && (me(this._lastTarget, "leaflet-drag-target"), this._lastTarget = null), gi) Ie(document, gi[t], this._onMove, this), Ie(document, mi[t], this._onUp, this); Ce(), te(), this._moved && this._moving && (C(this._animRequest), this.fire("dragend", { distance: this._newPos.distanceTo(this._startPos) })), this._moving = !1, vi._dragging = !1 } }); function yi(t, e) { if (!e || !t.length) return t.slice(); var i = e * e; return t = ki(t, i), t = wi(t, i), t } function bi(t, e, i) { return Math.sqrt(Si(t, e, i, !0)) } function Li(t, e, i) { return Si(t, e, i) } function wi(t, e) { var i = t.length, n = typeof Uint8Array !== void 0 + "" ? Uint8Array : Array, o = new n(i); o[0] = o[i - 1] = 1, xi(t, o, e, 0, i - 1); var r, a = []; for (r = 0; r < i; r++)o[r] && a.push(t[r]); return a } function xi(t, e, i, n, o) { var r, a, s, h = 0; for (a = n + 1; a <= o - 1; a++)s = Si(t[a], t[n], t[o], !0), s > h && (r = a, h = s); h > i && (e[r] = 1, xi(t, e, i, n, r), xi(t, e, i, r, o)) } function ki(t, e) { for (var i = [t[0]], n = 1, o = 0, r = t.length; n < r; n++)Ti(t[n], t[o]) > e && (i.push(t[n]), o = n); return o < r - 1 && i.push(t[r - 1]), i } function Mi(t, e, i, n, o) { var r, a, s, h = n ? di : Ci(t, i), l = Ci(e, i); di = l; while (1) { if (!(h | l)) return [t, e]; if (h & l) return !1; r = h || l, a = Pi(t, e, r, i, o), s = Ci(a, i), r === h ? (t = a, h = s) : (e = a, l = s) } } function Pi(t, e, i, n, o) { var r, a, s = e.x - t.x, h = e.y - t.y, l = n.min, u = n.max; return 8 & i ? (r = t.x + s * (u.y - t.y) / h, a = u.y) : 4 & i ? (r = t.x + s * (l.y - t.y) / h, a = l.y) : 2 & i ? (r = u.x, a = t.y + h * (u.x - t.x) / s) : 1 & i && (r = l.x, a = t.y + h * (l.x - t.x) / s), new z(r, a, o) } function Ci(t, e) { var i = 0; return t.x < e.min.x ? i |= 1 : t.x > e.max.x && (i |= 2), t.y < e.min.y ? i |= 4 : t.y > e.max.y && (i |= 8), i } function Ti(t, e) { var i = e.x - t.x, n = e.y - t.y; return i * i + n * n } function Si(t, e, i, n) { var o, r = e.x, a = e.y, s = i.x - r, h = i.y - a, l = s * s + h * h; return l > 0 && (o = ((t.x - r) * s + (t.y - a) * h) / l, o > 1 ? (r = i.x, a = i.y) : o > 0 && (r += s * o, a += h * o)), s = t.x - r, h = t.y - a, n ? s * s + h * h : new z(r, a) } function Oi(t) { return !g(t[0]) || "object" !== typeof t[0][0] && "undefined" !== typeof t[0][0] } function Ei(t) { return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."), Oi(t) } var Bi = { simplify: yi, pointToSegmentDistance: bi, closestPointOnSegment: Li, clipSegment: Mi, _getEdgeIntersection: Pi, _getBitCode: Ci, _sqClosestPointOnSegment: Si, isFlat: Oi, _flat: Ei }; function zi(t, e, i) { var n, o, r, a, s, h, l, u, c, p = [1, 4, 2, 8]; for (o = 0, l = t.length; o < l; o++)t[o]._code = Ci(t[o], e); for (a = 0; a < 4; a++) { for (u = p[a], n = [], o = 0, l = t.length, r = l - 1; o < l; r = o++)s = t[o], h = t[r], s._code & u ? h._code & u || (c = Pi(h, s, u, e, i), c._code = Ci(c, e), n.push(c)) : (h._code & u && (c = Pi(h, s, u, e, i), c._code = Ci(c, e), n.push(c)), n.push(s)); t = n } return t } var ji = { clipPolygon: zi }, Ii = { project: function (t) { return new z(t.lng, t.lat) }, unproject: function (t) { return new N(t.y, t.x) }, bounds: new A([-180, -90], [180, 90]) }, Ai = { R: 6378137, R_MINOR: 6356752.314245179, bounds: new A([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]), project: function (t) { var e = Math.PI / 180, i = this.R, n = t.lat * e, o = this.R_MINOR / i, r = Math.sqrt(1 - o * o), a = r * Math.sin(n), s = Math.tan(Math.PI / 4 - n / 2) / Math.pow((1 - a) / (1 + a), r / 2); return n = -i * Math.log(Math.max(s, 1e-10)), new z(t.lng * e * i, n) }, unproject: function (t) { for (var e, i = 180 / Math.PI, n = this.R, o = this.R_MINOR / n, r = Math.sqrt(1 - o * o), a = Math.exp(-t.y / n), s = Math.PI / 2 - 2 * Math.atan(a), h = 0, l = .1; h < 15 && Math.abs(l) > 1e-7; h++)e = r * Math.sin(s), e = Math.pow((1 - e) / (1 + e), r / 2), l = Math.PI / 2 - 2 * Math.atan(a * e) - s, s += l; return new N(s * i, t.x * i / n) } }, Ri = { LonLat: Ii, Mercator: Ai, SphericalMercator: U }, Di = i({}, H, { code: "EPSG:3395", projection: Ai, transformation: function () { var t = .5 / (Math.PI * Ai.R); return W(t, .5, -t, .5) }() }), Zi = i({}, H, { code: "EPSG:4326", projection: Ii, transformation: W(1 / 180, 1, -1 / 180, .5) }), Ni = i({}, F, { projection: Ii, transformation: W(1, 0, -1, 0), scale: function (t) { return Math.pow(2, t) }, zoom: function (t) { return Math.log(t) / Math.LN2 }, distance: function (t, e) { var i = e.lng - t.lng, n = e.lat - t.lat; return Math.sqrt(i * i + n * n) }, infinite: !0 }); F.Earth = H, F.EPSG3395 = Di, F.EPSG3857 = $, F.EPSG900913 = K, F.EPSG4326 = Zi, F.Simple = Ni; var Gi = B.extend({ options: { pane: "overlayPane", attribution: null, bubblingMouseEvents: !0 }, addTo: function (t) { return t.addLayer(this), this }, remove: function () { return this.removeFrom(this._map || this._mapToAdd) }, removeFrom: function (t) { return t && t.removeLayer(this), this }, getPane: function (t) { return this._map.getPane(t ? this.options[t] || t : this.options.pane) }, addInteractiveTarget: function (t) { return this._map._targets[a(t)] = this, this }, removeInteractiveTarget: function (t) { return delete this._map._targets[a(t)], this }, getAttribution: function () { return this.options.attribution }, _layerAdd: function (t) { var e = t.target; if (e.hasLayer(this)) { if (this._map = e, this._zoomAnimated = e._zoomAnimated, this.getEvents) { var i = this.getEvents(); e.on(i, this), this.once("remove", (function () { e.off(i, this) }), this) } this.onAdd(e), this.getAttribution && e.attributionControl && e.attributionControl.addAttribution(this.getAttribution()), this.fire("add"), e.fire("layeradd", { layer: this }) } } }); ti.include({ addLayer: function (t) { if (!t._layerAdd) throw new Error("The provided object is not a Layer."); var e = a(t); return this._layers[e] || (this._layers[e] = t, t._mapToAdd = this, t.beforeAdd && t.beforeAdd(this), this.whenReady(t._layerAdd, t)), this }, removeLayer: function (t) { var e = a(t); return this._layers[e] ? (this._loaded && t.onRemove(this), t.getAttribution && this.attributionControl && this.attributionControl.removeAttribution(t.getAttribution()), delete this._layers[e], this._loaded && (this.fire("layerremove", { layer: t }), t.fire("remove")), t._map = t._mapToAdd = null, this) : this }, hasLayer: function (t) { return !!t && a(t) in this._layers }, eachLayer: function (t, e) { for (var i in this._layers) t.call(e, this._layers[i]); return this }, _addLayers: function (t) { t = t ? g(t) ? t : [t] : []; for (var e = 0, i = t.length; e < i; e++)this.addLayer(t[e]) }, _addZoomLimit: function (t) { !isNaN(t.options.maxZoom) && isNaN(t.options.minZoom) || (this._zoomBoundLayers[a(t)] = t, this._updateZoomLevels()) }, _removeZoomLimit: function (t) { var e = a(t); this._zoomBoundLayers[e] && (delete this._zoomBoundLayers[e], this._updateZoomLevels()) }, _updateZoomLevels: function () { var t = 1 / 0, e = -1 / 0, i = this._getZoomSpan(); for (var n in this._zoomBoundLayers) { var o = this._zoomBoundLayers[n].options; t = void 0 === o.minZoom ? t : Math.min(t, o.minZoom), e = void 0 === o.maxZoom ? e : Math.max(e, o.maxZoom) } this._layersMaxZoom = e === -1 / 0 ? void 0 : e, this._layersMinZoom = t === 1 / 0 ? void 0 : t, i !== this._getZoomSpan() && this.fire("zoomlevelschange"), void 0 === this.options.maxZoom && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom && this.setZoom(this._layersMaxZoom), void 0 === this.options.minZoom && this._layersMinZoom && this.getZoom() < this._layersMinZoom && this.setZoom(this._layersMinZoom) } }); var Fi = Gi.extend({ initialize: function (t, e) { var i, n; if (d(this, e), this._layers = {}, t) for (i = 0, n = t.length; i < n; i++)this.addLayer(t[i]) }, addLayer: function (t) { var e = this.getLayerId(t); return this._layers[e] = t, this._map && this._map.addLayer(t), this }, removeLayer: function (t) { var e = t in this._layers ? t : this.getLayerId(t); return this._map && this._layers[e] && this._map.removeLayer(this._layers[e]), delete this._layers[e], this }, hasLayer: function (t) { if (!t) return !1; var e = "number" === typeof t ? t : this.getLayerId(t); return e in this._layers }, clearLayers: function () { return this.eachLayer(this.removeLayer, this) }, invoke: function (t) { var e, i, n = Array.prototype.slice.call(arguments, 1); for (e in this._layers) i = this._layers[e], i[t] && i[t].apply(i, n); return this }, onAdd: function (t) { this.eachLayer(t.addLayer, t) }, onRemove: function (t) { this.eachLayer(t.removeLayer, t) }, eachLayer: function (t, e) { for (var i in this._layers) t.call(e, this._layers[i]); return this }, getLayer: function (t) { return this._layers[t] }, getLayers: function () { var t = []; return this.eachLayer(t.push, t), t }, setZIndex: function (t) { return this.invoke("setZIndex", t) }, getLayerId: function (t) { return a(t) } }), Hi = function (t, e) { return new Fi(t, e) }, Vi = Fi.extend({ addLayer: function (t) { return this.hasLayer(t) ? this : (t.addEventParent(this), Fi.prototype.addLayer.call(this, t), this.fire("layeradd", { layer: t })) }, removeLayer: function (t) { return this.hasLayer(t) ? (t in this._layers && (t = this._layers[t]), t.removeEventParent(this), Fi.prototype.removeLayer.call(this, t), this.fire("layerremove", { layer: t })) : this }, setStyle: function (t) { return this.invoke("setStyle", t) }, bringToFront: function () { return this.invoke("bringToFront") }, bringToBack: function () { return this.invoke("bringToBack") }, getBounds: function () { var t = new D; for (var e in this._layers) { var i = this._layers[e]; t.extend(i.getBounds ? i.getBounds() : i.getLatLng()) } return t } }), Ui = function (t, e) { return new Vi(t, e) }, qi = S.extend({ options: { popupAnchor: [0, 0], tooltipAnchor: [0, 0] }, initialize: function (t) { d(this, t) }, createIcon: function (t) { return this._createIcon("icon", t) }, createShadow: function (t) { return this._createIcon("shadow", t) }, _createIcon: function (t, e) { var i = this._getIconUrl(t); if (!i) { if ("icon" === t) throw new Error("iconUrl not set in Icon options (see the docs)."); return null } var n = this._createImg(i, e && "IMG" === e.tagName ? e : null); return this._setIconStyles(n, t), n }, _setIconStyles: function (t, e) { var i = this.options, n = i[e + "Size"]; "number" === typeof n && (n = [n, n]); var o = I(n), r = I("shadow" === e && i.shadowAnchor || i.iconAnchor || o && o.divideBy(2, !0)); t.className = "leaflet-marker-" + e + " " + (i.className || ""), r && (t.style.marginLeft = -r.x + "px", t.style.marginTop = -r.y + "px"), o && (t.style.width = o.x + "px", t.style.height = o.y + "px") }, _createImg: function (t, e) { return e = e || document.createElement("img"), e.src = t, e }, _getIconUrl: function (t) { return Pt && this.options[t + "RetinaUrl"] || this.options[t + "Url"] } }); function Wi(t) { return new qi(t) } var $i = qi.extend({ options: { iconUrl: "marker-icon.png", iconRetinaUrl: "marker-icon-2x.png", shadowUrl: "marker-shadow.png", iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], tooltipAnchor: [16, -28], shadowSize: [41, 41] }, _getIconUrl: function (t) { return $i.imagePath || ($i.imagePath = this._detectIconPath()), (this.options.imagePath || $i.imagePath) + qi.prototype._getIconUrl.call(this, t) }, _detectIconPath: function () { var t = le("div", "leaflet-default-icon-path", document.body), e = he(t, "background-image") || he(t, "backgroundImage"); return document.body.removeChild(t), e = null === e || 0 !== e.indexOf("url") ? "" : e.replace(/^url\(["']?/, "").replace(/marker-icon\.png["']?\)$/, ""), e } }), Ki = pi.extend({ initialize: function (t) { this._marker = t }, addHooks: function () { var t = this._marker._icon; this._draggable || (this._draggable = new vi(t, t, !0)), this._draggable.on({ dragstart: this._onDragStart, predrag: this._onPreDrag, drag: this._onDrag, dragend: this._onDragEnd }, this).enable(), _e(t, "leaflet-marker-draggable") }, removeHooks: function () { this._draggable.off({ dragstart: this._onDragStart, predrag: this._onPreDrag, drag: this._onDrag, dragend: this._onDragEnd }, this).disable(), this._marker._icon && me(this._marker._icon, "leaflet-marker-draggable") }, moved: function () { return this._draggable && this._draggable._moved }, _adjustPan: function (t) { var e = this._marker, i = e._map, n = this._marker.options.autoPanSpeed, o = this._marker.options.autoPanPadding, r = ke(e._icon), a = i.getPixelBounds(), s = i.getPixelOrigin(), h = R(a.min._subtract(s).add(o), a.max._subtract(s).subtract(o)); if (!h.contains(r)) { var l = I((Math.max(h.max.x, r.x) - h.max.x) / (a.max.x - h.max.x) - (Math.min(h.min.x, r.x) - h.min.x) / (a.min.x - h.min.x), (Math.max(h.max.y, r.y) - h.max.y) / (a.max.y - h.max.y) - (Math.min(h.min.y, r.y) - h.min.y) / (a.min.y - h.min.y)).multiplyBy(n); i.panBy(l, { animate: !1 }), this._draggable._newPos._add(l), this._draggable._startPos._add(l), xe(e._icon, this._draggable._newPos), this._onDrag(t), this._panRequest = P(this._adjustPan.bind(this, t)) } }, _onDragStart: function () { this._oldLatLng = this._marker.getLatLng(), this._marker.closePopup && this._marker.closePopup(), this._marker.fire("movestart").fire("dragstart") }, _onPreDrag: function (t) { this._marker.options.autoPan && (C(this._panRequest), this._panRequest = P(this._adjustPan.bind(this, t))) }, _onDrag: function (t) { var e = this._marker, i = e._shadow, n = ke(e._icon), o = e._map.layerPointToLatLng(n); i && xe(i, n), e._latlng = o, t.latlng = o, t.oldLatLng = this._oldLatLng, e.fire("move", t).fire("drag", t) }, _onDragEnd: function (t) { C(this._panRequest), delete this._oldLatLng, this._marker.fire("moveend").fire("dragend", t) } }), Ji = Gi.extend({ options: { icon: new $i, interactive: !0, keyboard: !0, title: "", alt: "", zIndexOffset: 0, opacity: 1, riseOnHover: !1, riseOffset: 250, pane: "markerPane", shadowPane: "shadowPane", bubblingMouseEvents: !1, draggable: !1, autoPan: !1, autoPanPadding: [50, 50], autoPanSpeed: 10 }, initialize: function (t, e) { d(this, e), this._latlng = G(t) }, onAdd: function (t) { this._zoomAnimated = this._zoomAnimated && t.options.markerZoomAnimation, this._zoomAnimated && t.on("zoomanim", this._animateZoom, this), this._initIcon(), this.update() }, onRemove: function (t) { this.dragging && this.dragging.enabled() && (this.options.draggable = !0, this.dragging.removeHooks()), delete this.dragging, this._zoomAnimated && t.off("zoomanim", this._animateZoom, this), this._removeIcon(), this._removeShadow() }, getEvents: function () { return { zoom: this.update, viewreset: this.update } }, getLatLng: function () { return this._latlng }, setLatLng: function (t) { var e = this._latlng; return this._latlng = G(t), this.update(), this.fire("move", { oldLatLng: e, latlng: this._latlng }) }, setZIndexOffset: function (t) { return this.options.zIndexOffset = t, this.update() }, getIcon: function () { return this.options.icon }, setIcon: function (t) { return this.options.icon = t, this._map && (this._initIcon(), this.update()), this._popup && this.bindPopup(this._popup, this._popup.options), this }, getElement: function () { return this._icon }, update: function () { if (this._icon && this._map) { var t = this._map.latLngToLayerPoint(this._latlng).round(); this._setPos(t) } return this }, _initIcon: function () { var t = this.options, e = "leaflet-zoom-" + (this._zoomAnimated ? "animated" : "hide"), i = t.icon.createIcon(this._icon), n = !1; i !== this._icon && (this._icon && this._removeIcon(), n = !0, t.title && (i.title = t.title), "IMG" === i.tagName && (i.alt = t.alt || "")), _e(i, e), t.keyboard && (i.tabIndex = "0"), this._icon = i, t.riseOnHover && this.on({ mouseover: this._bringToFront, mouseout: this._resetZIndex }); var o = t.icon.createShadow(this._shadow), r = !1; o !== this._shadow && (this._removeShadow(), r = !0), o && (_e(o, e), o.alt = ""), this._shadow = o, t.opacity < 1 && this._updateOpacity(), n && this.getPane().appendChild(this._icon), this._initInteraction(), o && r && this.getPane(t.shadowPane).appendChild(this._shadow) }, _removeIcon: function () { this.options.riseOnHover && this.off({ mouseover: this._bringToFront, mouseout: this._resetZIndex }), ue(this._icon), this.removeInteractiveTarget(this._icon), this._icon = null }, _removeShadow: function () { this._shadow && ue(this._shadow), this._shadow = null }, _setPos: function (t) { this._icon && xe(this._icon, t), this._shadow && xe(this._shadow, t), this._zIndex = t.y + this.options.zIndexOffset, this._resetZIndex() }, _updateZIndex: function (t) { this._icon && (this._icon.style.zIndex = this._zIndex + t) }, _animateZoom: function (t) { var e = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center).round(); this._setPos(e) }, _initInteraction: function () { if (this.options.interactive && (_e(this._icon, "leaflet-interactive"), this.addInteractiveTarget(this._icon), Ki)) { var t = this.options.draggable; this.dragging && (t = this.dragging.enabled(), this.dragging.disable()), this.dragging = new Ki(this), t && this.dragging.enable() } }, setOpacity: function (t) { return this.options.opacity = t, this._map && this._updateOpacity(), this }, _updateOpacity: function () { var t = this.options.opacity; this._icon && ye(this._icon, t), this._shadow && ye(this._shadow, t) }, _bringToFront: function () { this._updateZIndex(this.options.riseOffset) }, _resetZIndex: function () { this._updateZIndex(0) }, _getPopupAnchor: function () { return this.options.icon.options.popupAnchor }, _getTooltipAnchor: function () { return this.options.icon.options.tooltipAnchor } }); function Yi(t, e) { return new Ji(t, e) } var Xi = Gi.extend({ options: { stroke: !0, color: "#3388ff", weight: 3, opacity: 1, lineCap: "round", lineJoin: "round", dashArray: null, dashOffset: null, fill: !1, fillColor: null, fillOpacity: .2, fillRule: "evenodd", interactive: !0, bubblingMouseEvents: !0 }, beforeAdd: function (t) { this._renderer = t.getRenderer(this) }, onAdd: function () { this._renderer._initPath(this), this._reset(), this._renderer._addPath(this) }, onRemove: function () { this._renderer._removePath(this) }, redraw: function () { return this._map && this._renderer._updatePath(this), this }, setStyle: function (t) { return d(this, t), this._renderer && (this._renderer._updateStyle(this), this.options.stroke && t && Object.prototype.hasOwnProperty.call(t, "weight") && this._updateBounds()), this }, bringToFront: function () { return this._renderer && this._renderer._bringToFront(this), this }, bringToBack: function () { return this._renderer && this._renderer._bringToBack(this), this }, getElement: function () { return this._path }, _reset: function () { this._project(), this._update() }, _clickTolerance: function () { return (this.options.stroke ? this.options.weight / 2 : 0) + this._renderer.options.tolerance } }), Qi = Xi.extend({ options: { fill: !0, radius: 10 }, initialize: function (t, e) { d(this, e), this._latlng = G(t), this._radius = this.options.radius }, setLatLng: function (t) { var e = this._latlng; return this._latlng = G(t), this.redraw(), this.fire("move", { oldLatLng: e, latlng: this._latlng }) }, getLatLng: function () { return this._latlng }, setRadius: function (t) { return this.options.radius = this._radius = t, this.redraw() }, getRadius: function () { return this._radius }, setStyle: function (t) { var e = t && t.radius || this._radius; return Xi.prototype.setStyle.call(this, t), this.setRadius(e), this }, _project: function () { this._point = this._map.latLngToLayerPoint(this._latlng), this._updateBounds() }, _updateBounds: function () { var t = this._radius, e = this._radiusY || t, i = this._clickTolerance(), n = [t + i, e + i]; this._pxBounds = new A(this._point.subtract(n), this._point.add(n)) }, _update: function () { this._map && this._updatePath() }, _updatePath: function () { this._renderer._updateCircle(this) }, _empty: function () { return this._radius && !this._renderer._bounds.intersects(this._pxBounds) }, _containsPoint: function (t) { return t.distanceTo(this._point) <= this._radius + this._clickTolerance() } }); function tn(t, e) { return new Qi(t, e) } var en = Qi.extend({ initialize: function (t, e, n) { if ("number" === typeof e && (e = i({}, n, { radius: e })), d(this, e), this._latlng = G(t), isNaN(this.options.radius)) throw new Error("Circle radius cannot be NaN"); this._mRadius = this.options.radius }, setRadius: function (t) { return this._mRadius = t, this.redraw() }, getRadius: function () { return this._mRadius }, getBounds: function () { var t = [this._radius, this._radiusY || this._radius]; return new D(this._map.layerPointToLatLng(this._point.subtract(t)), this._map.layerPointToLatLng(this._point.add(t))) }, setStyle: Xi.prototype.setStyle, _project: function () { var t = this._latlng.lng, e = this._latlng.lat, i = this._map, n = i.options.crs; if (n.distance === H.distance) { var o = Math.PI / 180, r = this._mRadius / H.R / o, a = i.project([e + r, t]), s = i.project([e - r, t]), h = a.add(s).divideBy(2), l = i.unproject(h).lat, u = Math.acos((Math.cos(r * o) - Math.sin(e * o) * Math.sin(l * o)) / (Math.cos(e * o) * Math.cos(l * o))) / o; (isNaN(u) || 0 === u) && (u = r / Math.cos(Math.PI / 180 * e)), this._point = h.subtract(i.getPixelOrigin()), this._radius = isNaN(u) ? 0 : h.x - i.project([l, t - u]).x, this._radiusY = h.y - a.y } else { var c = n.unproject(n.project(this._latlng).subtract([this._mRadius, 0])); this._point = i.latLngToLayerPoint(this._latlng), this._radius = this._point.x - i.latLngToLayerPoint(c).x } this._updateBounds() } }); function nn(t, e, i) { return new en(t, e, i) } var on = Xi.extend({ options: { smoothFactor: 1, noClip: !1 }, initialize: function (t, e) { d(this, e), this._setLatLngs(t) }, getLatLngs: function () { return this._latlngs }, setLatLngs: function (t) { return this._setLatLngs(t), this.redraw() }, isEmpty: function () { return !this._latlngs.length }, closestLayerPoint: function (t) { for (var e, i, n = 1 / 0, o = null, r = Si, a = 0, s = this._parts.length; a < s; a++)for (var h = this._parts[a], l = 1, u = h.length; l < u; l++) { e = h[l - 1], i = h[l]; var c = r(t, e, i, !0); c < n && (n = c, o = r(t, e, i)) } return o && (o.distance = Math.sqrt(n)), o }, getCenter: function () { if (!this._map) throw new Error("Must add layer to map before using getCenter()"); var t, e, i, n, o, r, a, s = this._rings[0], h = s.length; if (!h) return null; for (t = 0, e = 0; t < h - 1; t++)e += s[t].distanceTo(s[t + 1]) / 2; if (0 === e) return this._map.layerPointToLatLng(s[0]); for (t = 0, n = 0; t < h - 1; t++)if (o = s[t], r = s[t + 1], i = o.distanceTo(r), n += i, n > e) return a = (n - e) / i, this._map.layerPointToLatLng([r.x - a * (r.x - o.x), r.y - a * (r.y - o.y)]) }, getBounds: function () { return this._bounds }, addLatLng: function (t, e) { return e = e || this._defaultShape(), t = G(t), e.push(t), this._bounds.extend(t), this.redraw() }, _setLatLngs: function (t) { this._bounds = new D, this._latlngs = this._convertLatLngs(t) }, _defaultShape: function () { return Oi(this._latlngs) ? this._latlngs : this._latlngs[0] }, _convertLatLngs: function (t) { for (var e = [], i = Oi(t), n = 0, o = t.length; n < o; n++)i ? (e[n] = G(t[n]), this._bounds.extend(e[n])) : e[n] = this._convertLatLngs(t[n]); return e }, _project: function () { var t = new A; this._rings = [], this._projectLatlngs(this._latlngs, this._rings, t), this._bounds.isValid() && t.isValid() && (this._rawPxBounds = t, this._updateBounds()) }, _updateBounds: function () { var t = this._clickTolerance(), e = new z(t, t); this._pxBounds = new A([this._rawPxBounds.min.subtract(e), this._rawPxBounds.max.add(e)]) }, _projectLatlngs: function (t, e, i) { var n, o, r = t[0] instanceof N, a = t.length; if (r) { for (o = [], n = 0; n < a; n++)o[n] = this._map.latLngToLayerPoint(t[n]), i.extend(o[n]); e.push(o) } else for (n = 0; n < a; n++)this._projectLatlngs(t[n], e, i) }, _clipPoints: function () { var t = this._renderer._bounds; if (this._parts = [], this._pxBounds && this._pxBounds.intersects(t)) if (this.options.noClip) this._parts = this._rings; else { var e, i, n, o, r, a, s, h = this._parts; for (e = 0, n = 0, o = this._rings.length; e < o; e++)for (s = this._rings[e], i = 0, r = s.length; i < r - 1; i++)a = Mi(s[i], s[i + 1], t, i, !0), a && (h[n] = h[n] || [], h[n].push(a[0]), a[1] === s[i + 1] && i !== r - 2 || (h[n].push(a[1]), n++)) } }, _simplifyPoints: function () { for (var t = this._parts, e = this.options.smoothFactor, i = 0, n = t.length; i < n; i++)t[i] = yi(t[i], e) }, _update: function () { this._map && (this._clipPoints(), this._simplifyPoints(), this._updatePath()) }, _updatePath: function () { this._renderer._updatePoly(this) }, _containsPoint: function (t, e) { var i, n, o, r, a, s, h = this._clickTolerance(); if (!this._pxBounds || !this._pxBounds.contains(t)) return !1; for (i = 0, r = this._parts.length; i < r; i++)for (s = this._parts[i], n = 0, a = s.length, o = a - 1; n < a; o = n++)if ((e || 0 !== n) && bi(t, s[o], s[n]) <= h) return !0; return !1 } }); function rn(t, e) { return new on(t, e) } on._flat = Ei; var an = on.extend({ options: { fill: !0 }, isEmpty: function () { return !this._latlngs.length || !this._latlngs[0].length }, getCenter: function () { if (!this._map) throw new Error("Must add layer to map before using getCenter()"); var t, e, i, n, o, r, a, s, h, l = this._rings[0], u = l.length; if (!u) return null; for (r = a = s = 0, t = 0, e = u - 1; t < u; e = t++)i = l[t], n = l[e], o = i.y * n.x - n.y * i.x, a += (i.x + n.x) * o, s += (i.y + n.y) * o, r += 3 * o; return h = 0 === r ? l[0] : [a / r, s / r], this._map.layerPointToLatLng(h) }, _convertLatLngs: function (t) { var e = on.prototype._convertLatLngs.call(this, t), i = e.length; return i >= 2 && e[0] instanceof N && e[0].equals(e[i - 1]) && e.pop(), e }, _setLatLngs: function (t) { on.prototype._setLatLngs.call(this, t), Oi(this._latlngs) && (this._latlngs = [this._latlngs]) }, _defaultShape: function () { return Oi(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0] }, _clipPoints: function () { var t = this._renderer._bounds, e = this.options.weight, i = new z(e, e); if (t = new A(t.min.subtract(i), t.max.add(i)), this._parts = [], this._pxBounds && this._pxBounds.intersects(t)) if (this.options.noClip) this._parts = this._rings; else for (var n, o = 0, r = this._rings.length; o < r; o++)n = zi(this._rings[o], t, !0), n.length && this._parts.push(n) }, _updatePath: function () { this._renderer._updatePoly(this, !0) }, _containsPoint: function (t) { var e, i, n, o, r, a, s, h, l = !1; if (!this._pxBounds || !this._pxBounds.contains(t)) return !1; for (o = 0, s = this._parts.length; o < s; o++)for (e = this._parts[o], r = 0, h = e.length, a = h - 1; r < h; a = r++)i = e[r], n = e[a], i.y > t.y !== n.y > t.y && t.x < (n.x - i.x) * (t.y - i.y) / (n.y - i.y) + i.x && (l = !l); return l || on.prototype._containsPoint.call(this, t, !0) } }); function sn(t, e) { return new an(t, e) } var hn = Vi.extend({ initialize: function (t, e) { d(this, e), this._layers = {}, t && this.addData(t) }, addData: function (t) { var e, i, n, o = g(t) ? t : t.features; if (o) { for (e = 0, i = o.length; e < i; e++)n = o[e], (n.geometries || n.geometry || n.features || n.coordinates) && this.addData(n); return this } var r = this.options; if (r.filter && !r.filter(t)) return this; var a = ln(t, r); return a ? (a.feature = mn(t), a.defaultOptions = a.options, this.resetStyle(a), r.onEachFeature && r.onEachFeature(t, a), this.addLayer(a)) : this }, resetStyle: function (t) { return void 0 === t ? this.eachLayer(this.resetStyle, this) : (t.options = i({}, t.defaultOptions), this._setLayerStyle(t, this.options.style), this) }, setStyle: function (t) { return this.eachLayer((function (e) { this._setLayerStyle(e, t) }), this) }, _setLayerStyle: function (t, e) { t.setStyle && ("function" === typeof e && (e = e(t.feature)), t.setStyle(e)) } }); function ln(t, e) { var i, n, o, r, a = "Feature" === t.type ? t.geometry : t, s = a ? a.coordinates : null, h = [], l = e && e.pointToLayer, u = e && e.coordsToLatLng || cn; if (!s && !a) return null; switch (a.type) { case "Point": return i = u(s), un(l, t, i, e); case "MultiPoint": for (o = 0, r = s.length; o < r; o++)i = u(s[o]), h.push(un(l, t, i, e)); return new Vi(h); case "LineString": case "MultiLineString": return n = pn(s, "LineString" === a.type ? 0 : 1, u), new on(n, e); case "Polygon": case "MultiPolygon": return n = pn(s, "Polygon" === a.type ? 1 : 2, u), new an(n, e); case "GeometryCollection": for (o = 0, r = a.geometries.length; o < r; o++) { var c = ln({ geometry: a.geometries[o], type: "Feature", properties: t.properties }, e); c && h.push(c) } return new Vi(h); default: throw new Error("Invalid GeoJSON object.") } } function un(t, e, i, n) { return t ? t(e, i) : new Ji(i, n && n.markersInheritOptions && n) } function cn(t) { return new N(t[1], t[0], t[2]) } function pn(t, e, i) { for (var n, o = [], r = 0, a = t.length; r < a; r++)n = e ? pn(t[r], e - 1, i) : (i || cn)(t[r]), o.push(n); return o } function dn(t, e) { return e = "number" === typeof e ? e : 6, void 0 !== t.alt ? [u(t.lng, e), u(t.lat, e), u(t.alt, e)] : [u(t.lng, e), u(t.lat, e)] } function fn(t, e, i, n) { for (var o = [], r = 0, a = t.length; r < a; r++)o.push(e ? fn(t[r], e - 1, i, n) : dn(t[r], n)); return !e && i && o.push(o[0]), o } function _n(t, e) { return t.feature ? i({}, t.feature, { geometry: e }) : mn(e) } function mn(t) { return "Feature" === t.type || "FeatureCollection" === t.type ? t : { type: "Feature", properties: {}, geometry: t } } var gn = { toGeoJSON: function (t) { return _n(this, { type: "Point", coordinates: dn(this.getLatLng(), t) }) } }; function vn(t, e) { return new hn(t, e) } Ji.include(gn), en.include(gn), Qi.include(gn), on.include({ toGeoJSON: function (t) { var e = !Oi(this._latlngs), i = fn(this._latlngs, e ? 1 : 0, !1, t); return _n(this, { type: (e ? "Multi" : "") + "LineString", coordinates: i }) } }), an.include({ toGeoJSON: function (t) { var e = !Oi(this._latlngs), i = e && !Oi(this._latlngs[0]), n = fn(this._latlngs, i ? 2 : e ? 1 : 0, !0, t); return e || (n = [n]), _n(this, { type: (i ? "Multi" : "") + "Polygon", coordinates: n }) } }), Fi.include({ toMultiPoint: function (t) { var e = []; return this.eachLayer((function (i) { e.push(i.toGeoJSON(t).geometry.coordinates) })), _n(this, { type: "MultiPoint", coordinates: e }) }, toGeoJSON: function (t) { var e = this.feature && this.feature.geometry && this.feature.geometry.type; if ("MultiPoint" === e) return this.toMultiPoint(t); var i = "GeometryCollection" === e, n = []; return this.eachLayer((function (e) { if (e.toGeoJSON) { var o = e.toGeoJSON(t); if (i) n.push(o.geometry); else { var r = mn(o); "FeatureCollection" === r.type ? n.push.apply(n, r.features) : n.push(r) } } })), i ? _n(this, { geometries: n, type: "GeometryCollection" }) : { type: "FeatureCollection", features: n } } }); var yn = vn, bn = Gi.extend({ options: { opacity: 1, alt: "", interactive: !1, crossOrigin: !1, errorOverlayUrl: "", zIndex: 1, className: "" }, initialize: function (t, e, i) { this._url = t, this._bounds = Z(e), d(this, i) }, onAdd: function () { this._image || (this._initImage(), this.options.opacity < 1 && this._updateOpacity()), this.options.interactive && (_e(this._image, "leaflet-interactive"), this.addInteractiveTarget(this._image)), this.getPane().appendChild(this._image), this._reset() }, onRemove: function () { ue(this._image), this.options.interactive && this.removeInteractiveTarget(this._image) }, setOpacity: function (t) { return this.options.opacity = t, this._image && this._updateOpacity(), this }, setStyle: function (t) { return t.opacity && this.setOpacity(t.opacity), this }, bringToFront: function () { return this._map && pe(this._image), this }, bringToBack: function () { return this._map && de(this._image), this }, setUrl: function (t) { return this._url = t, this._image && (this._image.src = t), this }, setBounds: function (t) { return this._bounds = Z(t), this._map && this._reset(), this }, getEvents: function () { var t = { zoom: this._reset, viewreset: this._reset }; return this._zoomAnimated && (t.zoomanim = this._animateZoom), t }, setZIndex: function (t) { return this.options.zIndex = t, this._updateZIndex(), this }, getBounds: function () { return this._bounds }, getElement: function () { return this._image }, _initImage: function () { var t = "IMG" === this._url.tagName, e = this._image = t ? this._url : le("img"); _e(e, "leaflet-image-layer"), this._zoomAnimated && _e(e, "leaflet-zoom-animated"), this.options.className && _e(e, this.options.className), e.onselectstart = l, e.onmousemove = l, e.onload = o(this.fire, this, "load"), e.onerror = o(this._overlayOnError, this, "error"), (this.options.crossOrigin || "" === this.options.crossOrigin) && (e.crossOrigin = !0 === this.options.crossOrigin ? "" : this.options.crossOrigin), this.options.zIndex && this._updateZIndex(), t ? this._url = e.src : (e.src = this._url, e.alt = this.options.alt) }, _animateZoom: function (t) { var e = this._map.getZoomScale(t.zoom), i = this._map._latLngBoundsToNewLayerBounds(this._bounds, t.zoom, t.center).min; we(this._image, i, e) }, _reset: function () { var t = this._image, e = new A(this._map.latLngToLayerPoint(this._bounds.getNorthWest()), this._map.latLngToLayerPoint(this._bounds.getSouthEast())), i = e.getSize(); xe(t, e.min), t.style.width = i.x + "px", t.style.height = i.y + "px" }, _updateOpacity: function () { ye(this._image, this.options.opacity) }, _updateZIndex: function () { this._image && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this._image.style.zIndex = this.options.zIndex) }, _overlayOnError: function () { this.fire("error"); var t = this.options.errorOverlayUrl; t && this._url !== t && (this._url = t, this._image.src = t) } }), Ln = function (t, e, i) { return new bn(t, e, i) }, wn = bn.extend({ options: { autoplay: !0, loop: !0, keepAspectRatio: !0, muted: !1 }, _initImage: function () { var t = "VIDEO" === this._url.tagName, e = this._image = t ? this._url : le("video"); if (_e(e, "leaflet-image-layer"), this._zoomAnimated && _e(e, "leaflet-zoom-animated"), this.options.className && _e(e, this.options.className), e.onselectstart = l, e.onmousemove = l, e.onloadeddata = o(this.fire, this, "load"), t) { for (var i = e.getElementsByTagName("source"), n = [], r = 0; r < i.length; r++)n.push(i[r].src); this._url = i.length > 0 ? n : [e.src] } else { g(this._url) || (this._url = [this._url]), !this.options.keepAspectRatio && Object.prototype.hasOwnProperty.call(e.style, "objectFit") && (e.style["objectFit"] = "fill"), e.autoplay = !!this.options.autoplay, e.loop = !!this.options.loop, e.muted = !!this.options.muted; for (var a = 0; a < this._url.length; a++) { var s = le("source"); s.src = this._url[a], e.appendChild(s) } } } }); function xn(t, e, i) { return new wn(t, e, i) } var kn = bn.extend({ _initImage: function () { var t = this._image = this._url; _e(t, "leaflet-image-layer"), this._zoomAnimated && _e(t, "leaflet-zoom-animated"), this.options.className && _e(t, this.options.className), t.onselectstart = l, t.onmousemove = l } }); function Mn(t, e, i) { return new kn(t, e, i) } var Pn = Gi.extend({ options: { offset: [0, 7], className: "", pane: "popupPane" }, initialize: function (t, e) { d(this, t), this._source = e }, onAdd: function (t) { this._zoomAnimated = t._zoomAnimated, this._container || this._initLayout(), t._fadeAnimated && ye(this._container, 0), clearTimeout(this._removeTimeout), this.getPane().appendChild(this._container), this.update(), t._fadeAnimated && ye(this._container, 1), this.bringToFront() }, onRemove: function (t) { t._fadeAnimated ? (ye(this._container, 0), this._removeTimeout = setTimeout(o(ue, void 0, this._container), 200)) : ue(this._container) }, getLatLng: function () { return this._latlng }, setLatLng: function (t) { return this._latlng = G(t), this._map && (this._updatePosition(), this._adjustPan()), this }, getContent: function () { return this._content }, setContent: function (t) { return this._content = t, this.update(), this }, getElement: function () { return this._container }, update: function () { this._map && (this._container.style.visibility = "hidden", this._updateContent(), this._updateLayout(), this._updatePosition(), this._container.style.visibility = "", this._adjustPan()) }, getEvents: function () { var t = { zoom: this._updatePosition, viewreset: this._updatePosition }; return this._zoomAnimated && (t.zoomanim = this._animateZoom), t }, isOpen: function () { return !!this._map && this._map.hasLayer(this) }, bringToFront: function () { return this._map && pe(this._container), this }, bringToBack: function () { return this._map && de(this._container), this }, _prepareOpen: function (t, e, i) { if (e instanceof Gi || (i = e, e = t), e instanceof Vi) for (var n in t._layers) { e = t._layers[n]; break } if (!i) if (e.getCenter) i = e.getCenter(); else { if (!e.getLatLng) throw new Error("Unable to get source layer LatLng."); i = e.getLatLng() } return this._source = e, this.update(), i }, _updateContent: function () { if (this._content) { var t = this._contentNode, e = "function" === typeof this._content ? this._content(this._source || this) : this._content; if ("string" === typeof e) t.innerHTML = e; else { while (t.hasChildNodes()) t.removeChild(t.firstChild); t.appendChild(e) } this.fire("contentupdate") } }, _updatePosition: function () { if (this._map) { var t = this._map.latLngToLayerPoint(this._latlng), e = I(this.options.offset), i = this._getAnchor(); this._zoomAnimated ? xe(this._container, t.add(i)) : e = e.add(t).add(i); var n = this._containerBottom = -e.y, o = this._containerLeft = -Math.round(this._containerWidth / 2) + e.x; this._container.style.bottom = n + "px", this._container.style.left = o + "px" } }, _getAnchor: function () { return [0, 0] } }), Cn = Pn.extend({ options: { maxWidth: 300, minWidth: 50, maxHeight: null, autoPan: !0, autoPanPaddingTopLeft: null, autoPanPaddingBottomRight: null, autoPanPadding: [5, 5], keepInView: !1, closeButton: !0, autoClose: !0, closeOnEscapeKey: !0, className: "" }, openOn: function (t) { return t.openPopup(this), this }, onAdd: function (t) { Pn.prototype.onAdd.call(this, t), t.fire("popupopen", { popup: this }), this._source && (this._source.fire("popupopen", { popup: this }, !0), this._source instanceof Xi || this._source.on("preclick", Ne)) }, onRemove: function (t) { Pn.prototype.onRemove.call(this, t), t.fire("popupclose", { popup: this }), this._source && (this._source.fire("popupclose", { popup: this }, !0), this._source instanceof Xi || this._source.off("preclick", Ne)) }, getEvents: function () { var t = Pn.prototype.getEvents.call(this); return (void 0 !== this.options.closeOnClick ? this.options.closeOnClick : this._map.options.closePopupOnClick) && (t.preclick = this._close), this.options.keepInView && (t.moveend = this._adjustPan), t }, _close: function () { this._map && this._map.closePopup(this) }, _initLayout: function () { var t = "leaflet-popup", e = this._container = le("div", t + " " + (this.options.className || "") + " leaflet-zoom-animated"), i = this._wrapper = le("div", t + "-content-wrapper", e); if (this._contentNode = le("div", t + "-content", i), Fe(e), Ge(this._contentNode), ze(e, "contextmenu", Ne), this._tipContainer = le("div", t + "-tip-container", e), this._tip = le("div", t + "-tip", this._tipContainer), this.options.closeButton) { var n = this._closeButton = le("a", t + "-close-button", e); n.href = "#close", n.innerHTML = "&#215;", ze(n, "click", this._onCloseButtonClick, this) } }, _updateLayout: function () { var t = this._contentNode, e = t.style; e.width = "", e.whiteSpace = "nowrap"; var i = t.offsetWidth; i = Math.min(i, this.options.maxWidth), i = Math.max(i, this.options.minWidth), e.width = i + 1 + "px", e.whiteSpace = "", e.height = ""; var n = t.offsetHeight, o = this.options.maxHeight, r = "leaflet-popup-scrolled"; o && n > o ? (e.height = o + "px", _e(t, r)) : me(t, r), this._containerWidth = this._container.offsetWidth }, _animateZoom: function (t) { var e = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center), i = this._getAnchor(); xe(this._container, e.add(i)) }, _adjustPan: function () { if (this.options.autoPan) { this._map._panAnim && this._map._panAnim.stop(); var t = this._map, e = parseInt(he(this._container, "marginBottom"), 10) || 0, i = this._container.offsetHeight + e, n = this._containerWidth, o = new z(this._containerLeft, -i - this._containerBottom); o._add(ke(this._container)); var r = t.layerPointToContainerPoint(o), a = I(this.options.autoPanPadding), s = I(this.options.autoPanPaddingTopLeft || a), h = I(this.options.autoPanPaddingBottomRight || a), l = t.getSize(), u = 0, c = 0; r.x + n + h.x > l.x && (u = r.x + n - l.x + h.x), r.x - u - s.x < 0 && (u = r.x - s.x), r.y + i + h.y > l.y && (c = r.y + i - l.y + h.y), r.y - c - s.y < 0 && (c = r.y - s.y), (u || c) && t.fire("autopanstart").panBy([u, c]) } }, _onCloseButtonClick: function (t) { this._close(), Ve(t) }, _getAnchor: function () { return I(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0, 0]) } }), Tn = function (t, e) { return new Cn(t, e) }; ti.mergeOptions({ closePopupOnClick: !0 }), ti.include({ openPopup: function (t, e, i) { return t instanceof Cn || (t = new Cn(i).setContent(t)), e && t.setLatLng(e), this.hasLayer(t) ? this : (this._popup && this._popup.options.autoClose && this.closePopup(), this._popup = t, this.addLayer(t)) }, closePopup: function (t) { return t && t !== this._popup || (t = this._popup, this._popup = null), t && this.removeLayer(t), this } }), Gi.include({ bindPopup: function (t, e) { return t instanceof Cn ? (d(t, e), this._popup = t, t._source = this) : (this._popup && !e || (this._popup = new Cn(e, this)), this._popup.setContent(t)), this._popupHandlersAdded || (this.on({ click: this._openPopup, keypress: this._onKeyPress, remove: this.closePopup, move: this._movePopup }), this._popupHandlersAdded = !0), this }, unbindPopup: function () { return this._popup && (this.off({ click: this._openPopup, keypress: this._onKeyPress, remove: this.closePopup, move: this._movePopup }), this._popupHandlersAdded = !1, this._popup = null), this }, openPopup: function (t, e) { return this._popup && this._map && (e = this._popup._prepareOpen(this, t, e), this._map.openPopup(this._popup, e)), this }, closePopup: function () { return this._popup && this._popup._close(), this }, togglePopup: function (t) { return this._popup && (this._popup._map ? this.closePopup() : this.openPopup(t)), this }, isPopupOpen: function () { return !!this._popup && this._popup.isOpen() }, setPopupContent: function (t) { return this._popup && this._popup.setContent(t), this }, getPopup: function () { return this._popup }, _openPopup: function (t) { var e = t.layer || t.target; this._popup && this._map && (Ve(t), e instanceof Xi ? this.openPopup(t.layer || t.target, t.latlng) : this._map.hasLayer(this._popup) && this._popup._source === e ? this.closePopup() : this.openPopup(e, t.latlng)) }, _movePopup: function (t) { this._popup.setLatLng(t.latlng) }, _onKeyPress: function (t) { 13 === t.originalEvent.keyCode && this._openPopup(t) } }); var Sn = Pn.extend({ options: { pane: "tooltipPane", offset: [0, 0], direction: "auto", permanent: !1, sticky: !1, interactive: !1, opacity: .9 }, onAdd: function (t) { Pn.prototype.onAdd.call(this, t), this.setOpacity(this.options.opacity), t.fire("tooltipopen", { tooltip: this }), this._source && this._source.fire("tooltipopen", { tooltip: this }, !0) }, onRemove: function (t) { Pn.prototype.onRemove.call(this, t), t.fire("tooltipclose", { tooltip: this }), this._source && this._source.fire("tooltipclose", { tooltip: this }, !0) }, getEvents: function () { var t = Pn.prototype.getEvents.call(this); return xt && !this.options.permanent && (t.preclick = this._close), t }, _close: function () { this._map && this._map.closeTooltip(this) }, _initLayout: function () { var t = "leaflet-tooltip", e = t + " " + (this.options.className || "") + " leaflet-zoom-" + (this._zoomAnimated ? "animated" : "hide"); this._contentNode = this._container = le("div", e) }, _updateLayout: function () { }, _adjustPan: function () { }, _setPosition: function (t) { var e, i, n = this._map, o = this._container, r = n.latLngToContainerPoint(n.getCenter()), a = n.layerPointToContainerPoint(t), s = this.options.direction, h = o.offsetWidth, l = o.offsetHeight, u = I(this.options.offset), c = this._getAnchor(); "top" === s ? (e = h / 2, i = l) : "bottom" === s ? (e = h / 2, i = 0) : "center" === s ? (e = h / 2, i = l / 2) : "right" === s ? (e = 0, i = l / 2) : "left" === s ? (e = h, i = l / 2) : a.x < r.x ? (s = "right", e = 0, i = l / 2) : (s = "left", e = h + 2 * (u.x + c.x), i = l / 2), t = t.subtract(I(e, i, !0)).add(u).add(c), me(o, "leaflet-tooltip-right"), me(o, "leaflet-tooltip-left"), me(o, "leaflet-tooltip-top"), me(o, "leaflet-tooltip-bottom"), _e(o, "leaflet-tooltip-" + s), xe(o, t) }, _updatePosition: function () { var t = this._map.latLngToLayerPoint(this._latlng); this._setPosition(t) }, setOpacity: function (t) { this.options.opacity = t, this._container && ye(this._container, t) }, _animateZoom: function (t) { var e = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center); this._setPosition(e) }, _getAnchor: function () { return I(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this._source._getTooltipAnchor() : [0, 0]) } }), On = function (t, e) { return new Sn(t, e) }; ti.include({ openTooltip: function (t, e, i) { return t instanceof Sn || (t = new Sn(i).setContent(t)), e && t.setLatLng(e), this.hasLayer(t) ? this : this.addLayer(t) }, closeTooltip: function (t) { return t && this.removeLayer(t), this } }), Gi.include({ bindTooltip: function (t, e) { return t instanceof Sn ? (d(t, e), this._tooltip = t, t._source = this) : (this._tooltip && !e || (this._tooltip = new Sn(e, this)), this._tooltip.setContent(t)), this._initTooltipInteractions(), this._tooltip.options.permanent && this._map && this._map.hasLayer(this) && this.openTooltip(), this }, unbindTooltip: function () { return this._tooltip && (this._initTooltipInteractions(!0), this.closeTooltip(), this._tooltip = null), this }, _initTooltipInteractions: function (t) { if (t || !this._tooltipHandlersAdded) { var e = t ? "off" : "on", i = { remove: this.closeTooltip, move: this._moveTooltip }; this._tooltip.options.permanent ? i.add = this._openTooltip : (i.mouseover = this._openTooltip, i.mouseout = this.closeTooltip, this._tooltip.options.sticky && (i.mousemove = this._moveTooltip), xt && (i.click = this._openTooltip)), this[e](i), this._tooltipHandlersAdded = !t } }, openTooltip: function (t, e) { return this._tooltip && this._map && (e = this._tooltip._prepareOpen(this, t, e), this._map.openTooltip(this._tooltip, e), this._tooltip.options.interactive && this._tooltip._container && (_e(this._tooltip._container, "leaflet-clickable"), this.addInteractiveTarget(this._tooltip._container))), this }, closeTooltip: function () { return this._tooltip && (this._tooltip._close(), this._tooltip.options.interactive && this._tooltip._container && (me(this._tooltip._container, "leaflet-clickable"), this.removeInteractiveTarget(this._tooltip._container))), this }, toggleTooltip: function (t) { return this._tooltip && (this._tooltip._map ? this.closeTooltip() : this.openTooltip(t)), this }, isTooltipOpen: function () { return this._tooltip.isOpen() }, setTooltipContent: function (t) { return this._tooltip && this._tooltip.setContent(t), this }, getTooltip: function () { return this._tooltip }, _openTooltip: function (t) { var e = t.layer || t.target; this._tooltip && this._map && this.openTooltip(e, this._tooltip.options.sticky ? t.latlng : void 0) }, _moveTooltip: function (t) { var e, i, n = t.latlng; this._tooltip.options.sticky && t.originalEvent && (e = this._map.mouseEventToContainerPoint(t.originalEvent), i = this._map.containerPointToLayerPoint(e), n = this._map.layerPointToLatLng(i)), this._tooltip.setLatLng(n) } }); var En = qi.extend({ options: { iconSize: [12, 12], html: !1, bgPos: null, className: "leaflet-div-icon" }, createIcon: function (t) { var e = t && "DIV" === t.tagName ? t : document.createElement("div"), i = this.options; if (i.html instanceof Element ? (ce(e), e.appendChild(i.html)) : e.innerHTML = !1 !== i.html ? i.html : "", i.bgPos) { var n = I(i.bgPos); e.style.backgroundPosition = -n.x + "px " + -n.y + "px" } return this._setIconStyles(e, "icon"), e }, createShadow: function () { return null } }); function Bn(t) { return new En(t) } qi.Default = $i; var zn = Gi.extend({ options: { tileSize: 256, opacity: 1, updateWhenIdle: vt, updateWhenZooming: !0, updateInterval: 200, zIndex: 1, bounds: null, minZoom: 0, maxZoom: void 0, maxNativeZoom: void 0, minNativeZoom: void 0, noWrap: !1, pane: "tilePane", className: "", keepBuffer: 2 }, initialize: function (t) { d(this, t) }, onAdd: function () { this._initContainer(), this._levels = {}, this._tiles = {}, this._resetView(), this._update() }, beforeAdd: function (t) { t._addZoomLimit(this) }, onRemove: function (t) { this._removeAllTiles(), ue(this._container), t._removeZoomLimit(this), this._container = null, this._tileZoom = void 0 }, bringToFront: function () { return this._map && (pe(this._container), this._setAutoZIndex(Math.max)), this }, bringToBack: function () { return this._map && (de(this._container), this._setAutoZIndex(Math.min)), this }, getContainer: function () { return this._container }, setOpacity: function (t) { return this.options.opacity = t, this._updateOpacity(), this }, setZIndex: function (t) { return this.options.zIndex = t, this._updateZIndex(), this }, isLoading: function () { return this._loading }, redraw: function () { return this._map && (this._removeAllTiles(), this._update()), this }, getEvents: function () { var t = { viewprereset: this._invalidateAll, viewreset: this._resetView, zoom: this._resetView, moveend: this._onMoveEnd }; return this.options.updateWhenIdle || (this._onMove || (this._onMove = s(this._onMoveEnd, this.options.updateInterval, this)), t.move = this._onMove), this._zoomAnimated && (t.zoomanim = this._animateZoom), t }, createTile: function () { return document.createElement("div") }, getTileSize: function () { var t = this.options.tileSize; return t instanceof z ? t : new z(t, t) }, _updateZIndex: function () { this._container && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this._container.style.zIndex = this.options.zIndex) }, _setAutoZIndex: function (t) { for (var e, i = this.getPane().children, n = -t(-1 / 0, 1 / 0), o = 0, r = i.length; o < r; o++)e = i[o].style.zIndex, i[o] !== this._container && e && (n = t(n, +e)); isFinite(n) && (this.options.zIndex = n + t(-1, 1), this._updateZIndex()) }, _updateOpacity: function () { if (this._map && !tt) { ye(this._container, this.options.opacity); var t = +new Date, e = !1, i = !1; for (var n in this._tiles) { var o = this._tiles[n]; if (o.current && o.loaded) { var r = Math.min(1, (t - o.loaded) / 200); ye(o.el, r), r < 1 ? e = !0 : (o.active ? i = !0 : this._onOpaqueTile(o), o.active = !0) } } i && !this._noPrune && this._pruneTiles(), e && (C(this._fadeFrame), this._fadeFrame = P(this._updateOpacity, this)) } }, _onOpaqueTile: l, _initContainer: function () { this._container || (this._container = le("div", "leaflet-layer " + (this.options.className || "")), this._updateZIndex(), this.options.opacity < 1 && this._updateOpacity(), this.getPane().appendChild(this._container)) }, _updateLevels: function () { var t = this._tileZoom, e = this.options.maxZoom; if (void 0 !== t) { for (var i in this._levels) i = Number(i), this._levels[i].el.children.length || i === t ? (this._levels[i].el.style.zIndex = e - Math.abs(t - i), this._onUpdateLevel(i)) : (ue(this._levels[i].el), this._removeTilesAtZoom(i), this._onRemoveLevel(i), delete this._levels[i]); var n = this._levels[t], o = this._map; return n || (n = this._levels[t] = {}, n.el = le("div", "leaflet-tile-container leaflet-zoom-animated", this._container), n.el.style.zIndex = e, n.origin = o.project(o.unproject(o.getPixelOrigin()), t).round(), n.zoom = t, this._setZoomTransform(n, o.getCenter(), o.getZoom()), l(n.el.offsetWidth), this._onCreateLevel(n)), this._level = n, n } }, _onUpdateLevel: l, _onRemoveLevel: l, _onCreateLevel: l, _pruneTiles: function () { if (this._map) { var t, e, i = this._map.getZoom(); if (i > this.options.maxZoom || i < this.options.minZoom) this._removeAllTiles(); else { for (t in this._tiles) e = this._tiles[t], e.retain = e.current; for (t in this._tiles) if (e = this._tiles[t], e.current && !e.active) { var n = e.coords; this._retainParent(n.x, n.y, n.z, n.z - 5) || this._retainChildren(n.x, n.y, n.z, n.z + 2) } for (t in this._tiles) this._tiles[t].retain || this._removeTile(t) } } }, _removeTilesAtZoom: function (t) { for (var e in this._tiles) this._tiles[e].coords.z === t && this._removeTile(e) }, _removeAllTiles: function () { for (var t in this._tiles) this._removeTile(t) }, _invalidateAll: function () { for (var t in this._levels) ue(this._levels[t].el), this._onRemoveLevel(Number(t)), delete this._levels[t]; this._removeAllTiles(), this._tileZoom = void 0 }, _retainParent: function (t, e, i, n) { var o = Math.floor(t / 2), r = Math.floor(e / 2), a = i - 1, s = new z(+o, +r); s.z = +a; var h = this._tileCoordsToKey(s), l = this._tiles[h]; return l && l.active ? (l.retain = !0, !0) : (l && l.loaded && (l.retain = !0), a > n && this._retainParent(o, r, a, n)) }, _retainChildren: function (t, e, i, n) { for (var o = 2 * t; o < 2 * t + 2; o++)for (var r = 2 * e; r < 2 * e + 2; r++) { var a = new z(o, r); a.z = i + 1; var s = this._tileCoordsToKey(a), h = this._tiles[s]; h && h.active ? h.retain = !0 : (h && h.loaded && (h.retain = !0), i + 1 < n && this._retainChildren(o, r, i + 1, n)) } }, _resetView: function (t) { var e = t && (t.pinch || t.flyTo); this._setView(this._map.getCenter(), this._map.getZoom(), e, e) }, _animateZoom: function (t) { this._setView(t.center, t.zoom, !0, t.noUpdate) }, _clampZoom: function (t) { var e = this.options; return void 0 !== e.minNativeZoom && t < e.minNativeZoom ? e.minNativeZoom : void 0 !== e.maxNativeZoom && e.maxNativeZoom < t ? e.maxNativeZoom : t }, _setView: function (t, e, i, n) { var o = Math.round(e); o = void 0 !== this.options.maxZoom && o > this.options.maxZoom || void 0 !== this.options.minZoom && o < this.options.minZoom ? void 0 : this._clampZoom(o); var r = this.options.updateWhenZooming && o !== this._tileZoom; n && !r || (this._tileZoom = o, this._abortLoading && this._abortLoading(), this._updateLevels(), this._resetGrid(), void 0 !== o && this._update(t), i || this._pruneTiles(), this._noPrune = !!i), this._setZoomTransforms(t, e) }, _setZoomTransforms: function (t, e) { for (var i in this._levels) this._setZoomTransform(this._levels[i], t, e) }, _setZoomTransform: function (t, e, i) { var n = this._map.getZoomScale(i, t.zoom), o = t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(e, i)).round(); gt ? we(t.el, o, n) : xe(t.el, o) }, _resetGrid: function () { var t = this._map, e = t.options.crs, i = this._tileSize = this.getTileSize(), n = this._tileZoom, o = this._map.getPixelWorldBounds(this._tileZoom); o && (this._globalTileRange = this._pxBoundsToTileRange(o)), this._wrapX = e.wrapLng && !this.options.noWrap && [Math.floor(t.project([0, e.wrapLng[0]], n).x / i.x), Math.ceil(t.project([0, e.wrapLng[1]], n).x / i.y)], this._wrapY = e.wrapLat && !this.options.noWrap && [Math.floor(t.project([e.wrapLat[0], 0], n).y / i.x), Math.ceil(t.project([e.wrapLat[1], 0], n).y / i.y)] }, _onMoveEnd: function () { this._map && !this._map._animatingZoom && this._update() }, _getTiledPixelBounds: function (t) { var e = this._map, i = e._animatingZoom ? Math.max(e._animateToZoom, e.getZoom()) : e.getZoom(), n = e.getZoomScale(i, this._tileZoom), o = e.project(t, this._tileZoom).floor(), r = e.getSize().divideBy(2 * n); return new A(o.subtract(r), o.add(r)) }, _update: function (t) { var e = this._map; if (e) { var i = this._clampZoom(e.getZoom()); if (void 0 === t && (t = e.getCenter()), void 0 !== this._tileZoom) { var n = this._getTiledPixelBounds(t), o = this._pxBoundsToTileRange(n), r = o.getCenter(), a = [], s = this.options.keepBuffer, h = new A(o.getBottomLeft().subtract([s, -s]), o.getTopRight().add([s, -s])); if (!(isFinite(o.min.x) && isFinite(o.min.y) && isFinite(o.max.x) && isFinite(o.max.y))) throw new Error("Attempted to load an infinite number of tiles"); for (var l in this._tiles) { var u = this._tiles[l].coords; u.z === this._tileZoom && h.contains(new z(u.x, u.y)) || (this._tiles[l].current = !1) } if (Math.abs(i - this._tileZoom) > 1) this._setView(t, i); else { for (var c = o.min.y; c <= o.max.y; c++)for (var p = o.min.x; p <= o.max.x; p++) { var d = new z(p, c); if (d.z = this._tileZoom, this._isValidTile(d)) { var f = this._tiles[this._tileCoordsToKey(d)]; f ? f.current = !0 : a.push(d) } } if (a.sort((function (t, e) { return t.distanceTo(r) - e.distanceTo(r) })), 0 !== a.length) { this._loading || (this._loading = !0, this.fire("loading")); var _ = document.createDocumentFragment(); for (p = 0; p < a.length; p++)this._addTile(a[p], _); this._level.el.appendChild(_) } } } } }, _isValidTile: function (t) { var e = this._map.options.crs; if (!e.infinite) { var i = this._globalTileRange; if (!e.wrapLng && (t.x < i.min.x || t.x > i.max.x) || !e.wrapLat && (t.y < i.min.y || t.y > i.max.y)) return !1 } if (!this.options.bounds) return !0; var n = this._tileCoordsToBounds(t); return Z(this.options.bounds).overlaps(n) }, _keyToBounds: function (t) { return this._tileCoordsToBounds(this._keyToTileCoords(t)) }, _tileCoordsToNwSe: function (t) { var e = this._map, i = this.getTileSize(), n = t.scaleBy(i), o = n.add(i), r = e.unproject(n, t.z), a = e.unproject(o, t.z); return [r, a] }, _tileCoordsToBounds: function (t) { var e = this._tileCoordsToNwSe(t), i = new D(e[0], e[1]); return this.options.noWrap || (i = this._map.wrapLatLngBounds(i)), i }, _tileCoordsToKey: function (t) { return t.x + ":" + t.y + ":" + t.z }, _keyToTileCoords: function (t) { var e = t.split(":"), i = new z(+e[0], +e[1]); return i.z = +e[2], i }, _removeTile: function (t) { var e = this._tiles[t]; e && (ue(e.el), delete this._tiles[t], this.fire("tileunload", { tile: e.el, coords: this._keyToTileCoords(t) })) }, _initTile: function (t) { _e(t, "leaflet-tile"); var e = this.getTileSize(); t.style.width = e.x + "px", t.style.height = e.y + "px", t.onselectstart = l, t.onmousemove = l, tt && this.options.opacity < 1 && ye(t, this.options.opacity), nt && !ot && (t.style.WebkitBackfaceVisibility = "hidden") }, _addTile: function (t, e) { var i = this._getTilePos(t), n = this._tileCoordsToKey(t), r = this.createTile(this._wrapCoords(t), o(this._tileReady, this, t)); this._initTile(r), this.createTile.length < 2 && P(o(this._tileReady, this, t, null, r)), xe(r, i), this._tiles[n] = { el: r, coords: t, current: !0 }, e.appendChild(r), this.fire("tileloadstart", { tile: r, coords: t }) }, _tileReady: function (t, e, i) { e && this.fire("tileerror", { error: e, tile: i, coords: t }); var n = this._tileCoordsToKey(t); i = this._tiles[n], i && (i.loaded = +new Date, this._map._fadeAnimated ? (ye(i.el, 0), C(this._fadeFrame), this._fadeFrame = P(this._updateOpacity, this)) : (i.active = !0, this._pruneTiles()), e || (_e(i.el, "leaflet-tile-loaded"), this.fire("tileload", { tile: i.el, coords: t })), this._noTilesToLoad() && (this._loading = !1, this.fire("load"), tt || !this._map._fadeAnimated ? P(this._pruneTiles, this) : setTimeout(o(this._pruneTiles, this), 250))) }, _getTilePos: function (t) { return t.scaleBy(this.getTileSize()).subtract(this._level.origin) }, _wrapCoords: function (t) { var e = new z(this._wrapX ? h(t.x, this._wrapX) : t.x, this._wrapY ? h(t.y, this._wrapY) : t.y); return e.z = t.z, e }, _pxBoundsToTileRange: function (t) { var e = this.getTileSize(); return new A(t.min.unscaleBy(e).floor(), t.max.unscaleBy(e).ceil().subtract([1, 1])) }, _noTilesToLoad: function () { for (var t in this._tiles) if (!this._tiles[t].loaded) return !1; return !0 } }); function jn(t) { return new zn(t) } var In = zn.extend({ options: { minZoom: 0, maxZoom: 18, subdomains: "abc", errorTileUrl: "", zoomOffset: 0, tms: !1, zoomReverse: !1, detectRetina: !1, crossOrigin: !1 }, initialize: function (t, e) { this._url = t, e = d(this, e), e.detectRetina && Pt && e.maxZoom > 0 && (e.tileSize = Math.floor(e.tileSize / 2), e.zoomReverse ? (e.zoomOffset--, e.minZoom++) : (e.zoomOffset++, e.maxZoom--), e.minZoom = Math.max(0, e.minZoom)), "string" === typeof e.subdomains && (e.subdomains = e.subdomains.split("")), nt || this.on("tileunload", this._onTileRemove) }, setUrl: function (t, e) { return this._url === t && void 0 === e && (e = !0), this._url = t, e || this.redraw(), this }, createTile: function (t, e) { var i = document.createElement("img"); return ze(i, "load", o(this._tileOnLoad, this, e, i)), ze(i, "error", o(this._tileOnError, this, e, i)), (this.options.crossOrigin || "" === this.options.crossOrigin) && (i.crossOrigin = !0 === this.options.crossOrigin ? "" : this.options.crossOrigin), i.alt = "", i.setAttribute("role", "presentation"), i.src = this.getTileUrl(t), i }, getTileUrl: function (t) { var e = { r: Pt ? "@2x" : "", s: this._getSubdomain(t), x: t.x, y: t.y, z: this._getZoomForUrl() }; if (this._map && !this._map.options.crs.infinite) { var n = this._globalTileRange.max.y - t.y; this.options.tms && (e["y"] = n), e["-y"] = n } return m(this._url, i(e, this.options)) }, _tileOnLoad: function (t, e) { tt ? setTimeout(o(t, this, null, e), 0) : t(null, e) }, _tileOnError: function (t, e, i) { var n = this.options.errorTileUrl; n && e.getAttribute("src") !== n && (e.src = n), t(i, e) }, _onTileRemove: function (t) { t.tile.onload = null }, _getZoomForUrl: function () { var t = this._tileZoom, e = this.options.maxZoom, i = this.options.zoomReverse, n = this.options.zoomOffset; return i && (t = e - t), t + n }, _getSubdomain: function (t) { var e = Math.abs(t.x + t.y) % this.options.subdomains.length; return this.options.subdomains[e] }, _abortLoading: function () { var t, e; for (t in this._tiles) this._tiles[t].coords.z !== this._tileZoom && (e = this._tiles[t].el, e.onload = l, e.onerror = l, e.complete || (e.src = y, ue(e), delete this._tiles[t])) }, _removeTile: function (t) { var e = this._tiles[t]; if (e) return at || e.el.setAttribute("src", y), zn.prototype._removeTile.call(this, t) }, _tileReady: function (t, e, i) { if (this._map && (!i || i.getAttribute("src") !== y)) return zn.prototype._tileReady.call(this, t, e, i) } }); function An(t, e) { return new In(t, e) } var Rn = In.extend({ defaultWmsParams: { service: "WMS", request: "GetMap", layers: "", styles: "", format: "image/jpeg", transparent: !1, version: "1.1.1" }, options: { crs: null, uppercase: !1 }, initialize: function (t, e) { this._url = t; var n = i({}, this.defaultWmsParams); for (var o in e) o in this.options || (n[o] = e[o]); e = d(this, e); var r = e.detectRetina && Pt ? 2 : 1, a = this.getTileSize(); n.width = a.x * r, n.height = a.y * r, this.wmsParams = n }, onAdd: function (t) { this._crs = this.options.crs || t.options.crs, this._wmsVersion = parseFloat(this.wmsParams.version); var e = this._wmsVersion >= 1.3 ? "crs" : "srs"; this.wmsParams[e] = this._crs.code, In.prototype.onAdd.call(this, t) }, getTileUrl: function (t) { var e = this._tileCoordsToNwSe(t), i = this._crs, n = R(i.project(e[0]), i.project(e[1])), o = n.min, r = n.max, a = (this._wmsVersion >= 1.3 && this._crs === Zi ? [o.y, o.x, r.y, r.x] : [o.x, o.y, r.x, r.y]).join(","), s = In.prototype.getTileUrl.call(this, t); return s + f(this.wmsParams, s, this.options.uppercase) + (this.options.uppercase ? "&BBOX=" : "&bbox=") + a }, setParams: function (t, e) { return i(this.wmsParams, t), e || this.redraw(), this } }); function Dn(t, e) { return new Rn(t, e) } In.WMS = Rn, An.wms = Dn; var Zn = Gi.extend({ options: { padding: .1, tolerance: 0 }, initialize: function (t) { d(this, t), a(this), this._layers = this._layers || {} }, onAdd: function () { this._container || (this._initContainer(), this._zoomAnimated && _e(this._container, "leaflet-zoom-animated")), this.getPane().appendChild(this._container), this._update(), this.on("update", this._updatePaths, this) }, onRemove: function () { this.off("update", this._updatePaths, this), this._destroyContainer() }, getEvents: function () { var t = { viewreset: this._reset, zoom: this._onZoom, moveend: this._update, zoomend: this._onZoomEnd }; return this._zoomAnimated && (t.zoomanim = this._onAnimZoom), t }, _onAnimZoom: function (t) { this._updateTransform(t.center, t.zoom) }, _onZoom: function () { this._updateTransform(this._map.getCenter(), this._map.getZoom()) }, _updateTransform: function (t, e) { var i = this._map.getZoomScale(e, this._zoom), n = ke(this._container), o = this._map.getSize().multiplyBy(.5 + this.options.padding), r = this._map.project(this._center, e), a = this._map.project(t, e), s = a.subtract(r), h = o.multiplyBy(-i).add(n).add(o).subtract(s); gt ? we(this._container, h, i) : xe(this._container, h) }, _reset: function () { for (var t in this._update(), this._updateTransform(this._center, this._zoom), this._layers) this._layers[t]._reset() }, _onZoomEnd: function () { for (var t in this._layers) this._layers[t]._project() }, _updatePaths: function () { for (var t in this._layers) this._layers[t]._update() }, _update: function () { var t = this.options.padding, e = this._map.getSize(), i = this._map.containerPointToLayerPoint(e.multiplyBy(-t)).round(); this._bounds = new A(i, i.add(e.multiplyBy(1 + 2 * t)).round()), this._center = this._map.getCenter(), this._zoom = this._map.getZoom() } }), Nn = Zn.extend({ getEvents: function () { var t = Zn.prototype.getEvents.call(this); return t.viewprereset = this._onViewPreReset, t }, _onViewPreReset: function () { this._postponeUpdatePaths = !0 }, onAdd: function () { Zn.prototype.onAdd.call(this), this._draw() }, _initContainer: function () { var t = this._container = document.createElement("canvas"); ze(t, "mousemove", this._onMouseMove, this), ze(t, "click dblclick mousedown mouseup contextmenu", this._onClick, this), ze(t, "mouseout", this._handleMouseOut, this), this._ctx = t.getContext("2d") }, _destroyContainer: function () { C(this._redrawRequest), delete this._ctx, ue(this._container), Ie(this._container), delete this._container }, _updatePaths: function () { if (!this._postponeUpdatePaths) { var t; for (var e in this._redrawBounds = null, this._layers) t = this._layers[e], t._update(); this._redraw() } }, _update: function () { if (!this._map._animatingZoom || !this._bounds) { Zn.prototype._update.call(this); var t = this._bounds, e = this._container, i = t.getSize(), n = Pt ? 2 : 1; xe(e, t.min), e.width = n * i.x, e.height = n * i.y, e.style.width = i.x + "px", e.style.height = i.y + "px", Pt && this._ctx.scale(2, 2), this._ctx.translate(-t.min.x, -t.min.y), this.fire("update") } }, _reset: function () { Zn.prototype._reset.call(this), this._postponeUpdatePaths && (this._postponeUpdatePaths = !1, this._updatePaths()) }, _initPath: function (t) { this._updateDashArray(t), this._layers[a(t)] = t; var e = t._order = { layer: t, prev: this._drawLast, next: null }; this._drawLast && (this._drawLast.next = e), this._drawLast = e, this._drawFirst = this._drawFirst || this._drawLast }, _addPath: function (t) { this._requestRedraw(t) }, _removePath: function (t) { var e = t._order, i = e.next, n = e.prev; i ? i.prev = n : this._drawLast = n, n ? n.next = i : this._drawFirst = i, delete t._order, delete this._layers[a(t)], this._requestRedraw(t) }, _updatePath: function (t) { this._extendRedrawBounds(t), t._project(), t._update(), this._requestRedraw(t) }, _updateStyle: function (t) { this._updateDashArray(t), this._requestRedraw(t) }, _updateDashArray: function (t) { if ("string" === typeof t.options.dashArray) { var e, i, n = t.options.dashArray.split(/[, ]+/), o = []; for (i = 0; i < n.length; i++) { if (e = Number(n[i]), isNaN(e)) return; o.push(e) } t.options._dashArray = o } else t.options._dashArray = t.options.dashArray }, _requestRedraw: function (t) { this._map && (this._extendRedrawBounds(t), this._redrawRequest = this._redrawRequest || P(this._redraw, this)) }, _extendRedrawBounds: function (t) { if (t._pxBounds) { var e = (t.options.weight || 0) + 1; this._redrawBounds = this._redrawBounds || new A, this._redrawBounds.extend(t._pxBounds.min.subtract([e, e])), this._redrawBounds.extend(t._pxBounds.max.add([e, e])) } }, _redraw: function () { this._redrawRequest = null, this._redrawBounds && (this._redrawBounds.min._floor(), this._redrawBounds.max._ceil()), this._clear(), this._draw(), this._redrawBounds = null }, _clear: function () { var t = this._redrawBounds; if (t) { var e = t.getSize(); this._ctx.clearRect(t.min.x, t.min.y, e.x, e.y) } else this._ctx.save(), this._ctx.setTransform(1, 0, 0, 1, 0, 0), this._ctx.clearRect(0, 0, this._container.width, this._container.height), this._ctx.restore() }, _draw: function () { var t, e = this._redrawBounds; if (this._ctx.save(), e) { var i = e.getSize(); this._ctx.beginPath(), this._ctx.rect(e.min.x, e.min.y, i.x, i.y), this._ctx.clip() } this._drawing = !0; for (var n = this._drawFirst; n; n = n.next)t = n.layer, (!e || t._pxBounds && t._pxBounds.intersects(e)) && t._updatePath(); this._drawing = !1, this._ctx.restore() }, _updatePoly: function (t, e) { if (this._drawing) { var i, n, o, r, a = t._parts, s = a.length, h = this._ctx; if (s) { for (h.beginPath(), i = 0; i < s; i++) { for (n = 0, o = a[i].length; n < o; n++)r = a[i][n], h[n ? "lineTo" : "moveTo"](r.x, r.y); e && h.closePath() } this._fillStroke(h, t) } } }, _updateCircle: function (t) { if (this._drawing && !t._empty()) { var e = t._point, i = this._ctx, n = Math.max(Math.round(t._radius), 1), o = (Math.max(Math.round(t._radiusY), 1) || n) / n; 1 !== o && (i.save(), i.scale(1, o)), i.beginPath(), i.arc(e.x, e.y / o, n, 0, 2 * Math.PI, !1), 1 !== o && i.restore(), this._fillStroke(i, t) } }, _fillStroke: function (t, e) { var i = e.options; i.fill && (t.globalAlpha = i.fillOpacity, t.fillStyle = i.fillColor || i.color, t.fill(i.fillRule || "evenodd")), i.stroke && 0 !== i.weight && (t.setLineDash && t.setLineDash(e.options && e.options._dashArray || []), t.globalAlpha = i.opacity, t.lineWidth = i.weight, t.strokeStyle = i.color, t.lineCap = i.lineCap, t.lineJoin = i.lineJoin, t.stroke()) }, _onClick: function (t) { for (var e, i, n = this._map.mouseEventToLayerPoint(t), o = this._drawFirst; o; o = o.next)e = o.layer, e.options.interactive && e._containsPoint(n) && ("click" !== t.type && "preclick" === t.type || !this._map._draggableMoved(e)) && (i = e); i && (Ke(t), this._fireEvent([i], t)) }, _onMouseMove: function (t) { if (this._map && !this._map.dragging.moving() && !this._map._animatingZoom) { var e = this._map.mouseEventToLayerPoint(t); this._handleMouseHover(t, e) } }, _handleMouseOut: function (t) { var e = this._hoveredLayer; e && (me(this._container, "leaflet-interactive"), this._fireEvent([e], t, "mouseout"), this._hoveredLayer = null, this._mouseHoverThrottled = !1) }, _handleMouseHover: function (t, e) { if (!this._mouseHoverThrottled) { for (var i, n, r = this._drawFirst; r; r = r.next)i = r.layer, i.options.interactive && i._containsPoint(e) && (n = i); n !== this._hoveredLayer && (this._handleMouseOut(t), n && (_e(this._container, "leaflet-interactive"), this._fireEvent([n], t, "mouseover"), this._hoveredLayer = n)), this._hoveredLayer && this._fireEvent([this._hoveredLayer], t), this._mouseHoverThrottled = !0, setTimeout(o((function () { this._mouseHoverThrottled = !1 }), this), 32) } }, _fireEvent: function (t, e, i) { this._map._fireDOMEvent(e, i || e.type, t) }, _bringToFront: function (t) { var e = t._order; if (e) { var i = e.next, n = e.prev; i && (i.prev = n, n ? n.next = i : i && (this._drawFirst = i), e.prev = this._drawLast, this._drawLast.next = e, e.next = null, this._drawLast = e, this._requestRedraw(t)) } }, _bringToBack: function (t) { var e = t._order; if (e) { var i = e.next, n = e.prev; n && (n.next = i, i ? i.prev = n : n && (this._drawLast = n), e.prev = null, e.next = this._drawFirst, this._drawFirst.prev = e, this._drawFirst = e, this._requestRedraw(t)) } } }); function Gn(t) { return Tt ? new Nn(t) : null } var Fn = function () { try { return document.namespaces.add("lvml", "urn:schemas-microsoft-com:vml"), function (t) { return document.createElement("<lvml:" + t + ' class="lvml">') } } catch (t) { return function (t) { return document.createElement("<" + t + ' xmlns="urn:schemas-microsoft.com:vml" class="lvml">') } } }(), Hn = { _initContainer: function () { this._container = le("div", "leaflet-vml-container") }, _update: function () { this._map._animatingZoom || (Zn.prototype._update.call(this), this.fire("update")) }, _initPath: function (t) { var e = t._container = Fn("shape"); _e(e, "leaflet-vml-shape " + (this.options.className || "")), e.coordsize = "1 1", t._path = Fn("path"), e.appendChild(t._path), this._updateStyle(t), this._layers[a(t)] = t }, _addPath: function (t) { var e = t._container; this._container.appendChild(e), t.options.interactive && t.addInteractiveTarget(e) }, _removePath: function (t) { var e = t._container; ue(e), t.removeInteractiveTarget(e), delete this._layers[a(t)] }, _updateStyle: function (t) { var e = t._stroke, i = t._fill, n = t.options, o = t._container; o.stroked = !!n.stroke, o.filled = !!n.fill, n.stroke ? (e || (e = t._stroke = Fn("stroke")), o.appendChild(e), e.weight = n.weight + "px", e.color = n.color, e.opacity = n.opacity, n.dashArray ? e.dashStyle = g(n.dashArray) ? n.dashArray.join(" ") : n.dashArray.replace(/( *, *)/g, " ") : e.dashStyle = "", e.endcap = n.lineCap.replace("butt", "flat"), e.joinstyle = n.lineJoin) : e && (o.removeChild(e), t._stroke = null), n.fill ? (i || (i = t._fill = Fn("fill")), o.appendChild(i), i.color = n.fillColor || n.color, i.opacity = n.fillOpacity) : i && (o.removeChild(i), t._fill = null) }, _updateCircle: function (t) { var e = t._point.round(), i = Math.round(t._radius), n = Math.round(t._radiusY || i); this._setPath(t, t._empty() ? "M0 0" : "AL " + e.x + "," + e.y + " " + i + "," + n + " 0,23592600") }, _setPath: function (t, e) { t._path.v = e }, _bringToFront: function (t) { pe(t._container) }, _bringToBack: function (t) { de(t._container) } }, Vn = Ot ? Fn : J, Un = Zn.extend({ getEvents: function () { var t = Zn.prototype.getEvents.call(this); return t.zoomstart = this._onZoomStart, t }, _initContainer: function () { this._container = Vn("svg"), this._container.setAttribute("pointer-events", "none"), this._rootGroup = Vn("g"), this._container.appendChild(this._rootGroup) }, _destroyContainer: function () { ue(this._container), Ie(this._container), delete this._container, delete this._rootGroup, delete this._svgSize }, _onZoomStart: function () { this._update() }, _update: function () { if (!this._map._animatingZoom || !this._bounds) { Zn.prototype._update.call(this); var t = this._bounds, e = t.getSize(), i = this._container; this._svgSize && this._svgSize.equals(e) || (this._svgSize = e, i.setAttribute("width", e.x), i.setAttribute("height", e.y)), xe(i, t.min), i.setAttribute("viewBox", [t.min.x, t.min.y, e.x, e.y].join(" ")), this.fire("update") } }, _initPath: function (t) { var e = t._path = Vn("path"); t.options.className && _e(e, t.options.className), t.options.interactive && _e(e, "leaflet-interactive"), this._updateStyle(t), this._layers[a(t)] = t }, _addPath: function (t) { this._rootGroup || this._initContainer(), this._rootGroup.appendChild(t._path), t.addInteractiveTarget(t._path) }, _removePath: function (t) { ue(t._path), t.removeInteractiveTarget(t._path), delete this._layers[a(t)] }, _updatePath: function (t) { t._project(), t._update() }, _updateStyle: function (t) { var e = t._path, i = t.options; e && (i.stroke ? (e.setAttribute("stroke", i.color), e.setAttribute("stroke-opacity", i.opacity), e.setAttribute("stroke-width", i.weight), e.setAttribute("stroke-linecap", i.lineCap), e.setAttribute("stroke-linejoin", i.lineJoin), i.dashArray ? e.setAttribute("stroke-dasharray", i.dashArray) : e.removeAttribute("stroke-dasharray"), i.dashOffset ? e.setAttribute("stroke-dashoffset", i.dashOffset) : e.removeAttribute("stroke-dashoffset")) : e.setAttribute("stroke", "none"), i.fill ? (e.setAttribute("fill", i.fillColor || i.color), e.setAttribute("fill-opacity", i.fillOpacity), e.setAttribute("fill-rule", i.fillRule || "evenodd")) : e.setAttribute("fill", "none")) }, _updatePoly: function (t, e) { this._setPath(t, Y(t._parts, e)) }, _updateCircle: function (t) { var e = t._point, i = Math.max(Math.round(t._radius), 1), n = Math.max(Math.round(t._radiusY), 1) || i, o = "a" + i + "," + n + " 0 1,0 ", r = t._empty() ? "M0 0" : "M" + (e.x - i) + "," + e.y + o + 2 * i + ",0 " + o + 2 * -i + ",0 "; this._setPath(t, r) }, _setPath: function (t, e) { t._path.setAttribute("d", e) }, _bringToFront: function (t) { pe(t._path) }, _bringToBack: function (t) { de(t._path) } }); function qn(t) { return St || Ot ? new Un(t) : null } Ot && Un.include(Hn), ti.include({ getRenderer: function (t) { var e = t.options.renderer || this._getPaneRenderer(t.options.pane) || this.options.renderer || this._renderer; return e || (e = this._renderer = this._createRenderer()), this.hasLayer(e) || this.addLayer(e), e }, _getPaneRenderer: function (t) { if ("overlayPane" === t || void 0 === t) return !1; var e = this._paneRenderers[t]; return void 0 === e && (e = this._createRenderer({ pane: t }), this._paneRenderers[t] = e), e }, _createRenderer: function (t) { return this.options.preferCanvas && Gn(t) || qn(t) } }); var Wn = an.extend({ initialize: function (t, e) { an.prototype.initialize.call(this, this._boundsToLatLngs(t), e) }, setBounds: function (t) { return this.setLatLngs(this._boundsToLatLngs(t)) }, _boundsToLatLngs: function (t) { return t = Z(t), [t.getSouthWest(), t.getNorthWest(), t.getNorthEast(), t.getSouthEast()] } }); function $n(t, e) { return new Wn(t, e) } Un.create = Vn, Un.pointsToPath = Y, hn.geometryToLayer = ln, hn.coordsToLatLng = cn, hn.coordsToLatLngs = pn, hn.latLngToCoords = dn, hn.latLngsToCoords = fn, hn.getFeature = _n, hn.asFeature = mn, ti.mergeOptions({ boxZoom: !0 }); var Kn = pi.extend({ initialize: function (t) { this._map = t, this._container = t._container, this._pane = t._panes.overlayPane, this._resetStateTimeout = 0, t.on("unload", this._destroy, this) }, addHooks: function () { ze(this._container, "mousedown", this._onMouseDown, this) }, removeHooks: function () { Ie(this._container, "mousedown", this._onMouseDown, this) }, moved: function () { return this._moved }, _destroy: function () { ue(this._pane), delete this._pane }, _resetState: function () { this._resetStateTimeout = 0, this._moved = !1 }, _clearDeferredResetState: function () { 0 !== this._resetStateTimeout && (clearTimeout(this._resetStateTimeout), this._resetStateTimeout = 0) }, _onMouseDown: function (t) { if (!t.shiftKey || 1 !== t.which && 1 !== t.button) return !1; this._clearDeferredResetState(), this._resetState(), Qt(), Pe(), this._startPoint = this._map.mouseEventToContainerPoint(t), ze(document, { contextmenu: Ve, mousemove: this._onMouseMove, mouseup: this._onMouseUp, keydown: this._onKeyDown }, this) }, _onMouseMove: function (t) { this._moved || (this._moved = !0, this._box = le("div", "leaflet-zoom-box", this._container), _e(this._container, "leaflet-crosshair"), this._map.fire("boxzoomstart")), this._point = this._map.mouseEventToContainerPoint(t); var e = new A(this._point, this._startPoint), i = e.getSize(); xe(this._box, e.min), this._box.style.width = i.x + "px", this._box.style.height = i.y + "px" }, _finish: function () { this._moved && (ue(this._box), me(this._container, "leaflet-crosshair")), te(), Ce(), Ie(document, { contextmenu: Ve, mousemove: this._onMouseMove, mouseup: this._onMouseUp, keydown: this._onKeyDown }, this) }, _onMouseUp: function (t) { if ((1 === t.which || 1 === t.button) && (this._finish(), this._moved)) { this._clearDeferredResetState(), this._resetStateTimeout = setTimeout(o(this._resetState, this), 0); var e = new D(this._map.containerPointToLatLng(this._startPoint), this._map.containerPointToLatLng(this._point)); this._map.fitBounds(e).fire("boxzoomend", { boxZoomBounds: e }) } }, _onKeyDown: function (t) { 27 === t.keyCode && this._finish() } }); ti.addInitHook("addHandler", "boxZoom", Kn), ti.mergeOptions({ doubleClickZoom: !0 }); var Jn = pi.extend({ addHooks: function () { this._map.on("dblclick", this._onDoubleClick, this) }, removeHooks: function () { this._map.off("dblclick", this._onDoubleClick, this) }, _onDoubleClick: function (t) { var e = this._map, i = e.getZoom(), n = e.options.zoomDelta, o = t.originalEvent.shiftKey ? i - n : i + n; "center" === e.options.doubleClickZoom ? e.setZoom(o) : e.setZoomAround(t.containerPoint, o) } }); ti.addInitHook("addHandler", "doubleClickZoom", Jn), ti.mergeOptions({ dragging: !0, inertia: !ot, inertiaDeceleration: 3400, inertiaMaxSpeed: 1 / 0, easeLinearity: .2, worldCopyJump: !1, maxBoundsViscosity: 0 }); var Yn = pi.extend({ addHooks: function () { if (!this._draggable) { var t = this._map; this._draggable = new vi(t._mapPane, t._container), this._draggable.on({ dragstart: this._onDragStart, drag: this._onDrag, dragend: this._onDragEnd }, this), this._draggable.on("predrag", this._onPreDragLimit, this), t.options.worldCopyJump && (this._draggable.on("predrag", this._onPreDragWrap, this), t.on("zoomend", this._onZoomEnd, this), t.whenReady(this._onZoomEnd, this)) } _e(this._map._container, "leaflet-grab leaflet-touch-drag"), this._draggable.enable(), this._positions = [], this._times = [] }, removeHooks: function () { me(this._map._container, "leaflet-grab"), me(this._map._container, "leaflet-touch-drag"), this._draggable.disable() }, moved: function () { return this._draggable && this._draggable._moved }, moving: function () { return this._draggable && this._draggable._moving }, _onDragStart: function () { var t = this._map; if (t._stop(), this._map.options.maxBounds && this._map.options.maxBoundsViscosity) { var e = Z(this._map.options.maxBounds); this._offsetLimit = R(this._map.latLngToContainerPoint(e.getNorthWest()).multiplyBy(-1), this._map.latLngToContainerPoint(e.getSouthEast()).multiplyBy(-1).add(this._map.getSize())), this._viscosity = Math.min(1, Math.max(0, this._map.options.maxBoundsViscosity)) } else this._offsetLimit = null; t.fire("movestart").fire("dragstart"), t.options.inertia && (this._positions = [], this._times = []) }, _onDrag: function (t) { if (this._map.options.inertia) { var e = this._lastTime = +new Date, i = this._lastPos = this._draggable._absPos || this._draggable._newPos; this._positions.push(i), this._times.push(e), this._prunePositions(e) } this._map.fire("move", t).fire("drag", t) }, _prunePositions: function (t) { while (this._positions.length > 1 && t - this._times[0] > 50) this._positions.shift(), this._times.shift() }, _onZoomEnd: function () { var t = this._map.getSize().divideBy(2), e = this._map.latLngToLayerPoint([0, 0]); this._initialWorldOffset = e.subtract(t).x, this._worldWidth = this._map.getPixelWorldBounds().getSize().x }, _viscousLimit: function (t, e) { return t - (t - e) * this._viscosity }, _onPreDragLimit: function () { if (this._viscosity && this._offsetLimit) { var t = this._draggable._newPos.subtract(this._draggable._startPos), e = this._offsetLimit; t.x < e.min.x && (t.x = this._viscousLimit(t.x, e.min.x)), t.y < e.min.y && (t.y = this._viscousLimit(t.y, e.min.y)), t.x > e.max.x && (t.x = this._viscousLimit(t.x, e.max.x)), t.y > e.max.y && (t.y = this._viscousLimit(t.y, e.max.y)), this._draggable._newPos = this._draggable._startPos.add(t) } }, _onPreDragWrap: function () { var t = this._worldWidth, e = Math.round(t / 2), i = this._initialWorldOffset, n = this._draggable._newPos.x, o = (n - e + i) % t + e - i, r = (n + e + i) % t - e - i, a = Math.abs(o + i) < Math.abs(r + i) ? o : r; this._draggable._absPos = this._draggable._newPos.clone(), this._draggable._newPos.x = a }, _onDragEnd: function (t) { var e = this._map, i = e.options, n = !i.inertia || this._times.length < 2; if (e.fire("dragend", t), n) e.fire("moveend"); else { this._prunePositions(+new Date); var o = this._lastPos.subtract(this._positions[0]), r = (this._lastTime - this._times[0]) / 1e3, a = i.easeLinearity, s = o.multiplyBy(a / r), h = s.distanceTo([0, 0]), l = Math.min(i.inertiaMaxSpeed, h), u = s.multiplyBy(l / h), c = l / (i.inertiaDeceleration * a), p = u.multiplyBy(-c / 2).round(); p.x || p.y ? (p = e._limitOffset(p, e.options.maxBounds), P((function () { e.panBy(p, { duration: c, easeLinearity: a, noMoveStart: !0, animate: !0 }) }))) : e.fire("moveend") } } }); ti.addInitHook("addHandler", "dragging", Yn), ti.mergeOptions({ keyboard: !0, keyboardPanDelta: 80 }); var Xn = pi.extend({ keyCodes: { left: [37], right: [39], down: [40], up: [38], zoomIn: [187, 107, 61, 171], zoomOut: [189, 109, 54, 173] }, initialize: function (t) { this._map = t, this._setPanDelta(t.options.keyboardPanDelta), this._setZoomDelta(t.options.zoomDelta) }, addHooks: function () { var t = this._map._container; t.tabIndex <= 0 && (t.tabIndex = "0"), ze(t, { focus: this._onFocus, blur: this._onBlur, mousedown: this._onMouseDown }, this), this._map.on({ focus: this._addHooks, blur: this._removeHooks }, this) }, removeHooks: function () { this._removeHooks(), Ie(this._map._container, { focus: this._onFocus, blur: this._onBlur, mousedown: this._onMouseDown }, this), this._map.off({ focus: this._addHooks, blur: this._removeHooks }, this) }, _onMouseDown: function () { if (!this._focused) { var t = document.body, e = document.documentElement, i = t.scrollTop || e.scrollTop, n = t.scrollLeft || e.scrollLeft; this._map._container.focus(), window.scrollTo(n, i) } }, _onFocus: function () { this._focused = !0, this._map.fire("focus") }, _onBlur: function () { this._focused = !1, this._map.fire("blur") }, _setPanDelta: function (t) { var e, i, n = this._panKeys = {}, o = this.keyCodes; for (e = 0, i = o.left.length; e < i; e++)n[o.left[e]] = [-1 * t, 0]; for (e = 0, i = o.right.length; e < i; e++)n[o.right[e]] = [t, 0]; for (e = 0, i = o.down.length; e < i; e++)n[o.down[e]] = [0, t]; for (e = 0, i = o.up.length; e < i; e++)n[o.up[e]] = [0, -1 * t] }, _setZoomDelta: function (t) { var e, i, n = this._zoomKeys = {}, o = this.keyCodes; for (e = 0, i = o.zoomIn.length; e < i; e++)n[o.zoomIn[e]] = t; for (e = 0, i = o.zoomOut.length; e < i; e++)n[o.zoomOut[e]] = -t }, _addHooks: function () { ze(document, "keydown", this._onKeyDown, this) }, _removeHooks: function () { Ie(document, "keydown", this._onKeyDown, this) }, _onKeyDown: function (t) { if (!(t.altKey || t.ctrlKey || t.metaKey)) { var e, i = t.keyCode, n = this._map; if (i in this._panKeys) n._panAnim && n._panAnim._inProgress || (e = this._panKeys[i], t.shiftKey && (e = I(e).multiplyBy(3)), n.panBy(e), n.options.maxBounds && n.panInsideBounds(n.options.maxBounds)); else if (i in this._zoomKeys) n.setZoom(n.getZoom() + (t.shiftKey ? 3 : 1) * this._zoomKeys[i]); else { if (27 !== i || !n._popup || !n._popup.options.closeOnEscapeKey) return; n.closePopup() } Ve(t) } } }); ti.addInitHook("addHandler", "keyboard", Xn), ti.mergeOptions({ scrollWheelZoom: !0, wheelDebounceTime: 40, wheelPxPerZoomLevel: 60 }); var Qn = pi.extend({ addHooks: function () { ze(this._map._container, "wheel", this._onWheelScroll, this), this._delta = 0 }, removeHooks: function () { Ie(this._map._container, "wheel", this._onWheelScroll, this) }, _onWheelScroll: function (t) { var e = We(t), i = this._map.options.wheelDebounceTime; this._delta += e, this._lastMousePos = this._map.mouseEventToContainerPoint(t), this._startTime || (this._startTime = +new Date); var n = Math.max(i - (+new Date - this._startTime), 0); clearTimeout(this._timer), this._timer = setTimeout(o(this._performZoom, this), n), Ve(t) }, _performZoom: function () { var t = this._map, e = t.getZoom(), i = this._map.options.zoomSnap || 0; t._stop(); var n = this._delta / (4 * this._map.options.wheelPxPerZoomLevel), o = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(n)))) / Math.LN2, r = i ? Math.ceil(o / i) * i : o, a = t._limitZoom(e + (this._delta > 0 ? r : -r)) - e; this._delta = 0, this._startTime = null, a && ("center" === t.options.scrollWheelZoom ? t.setZoom(e + a) : t.setZoomAround(this._lastMousePos, e + a)) } }); ti.addInitHook("addHandler", "scrollWheelZoom", Qn), ti.mergeOptions({ tap: !0, tapTolerance: 15 }); var to = pi.extend({ addHooks: function () { ze(this._map._container, "touchstart", this._onDown, this) }, removeHooks: function () { Ie(this._map._container, "touchstart", this._onDown, this) }, _onDown: function (t) { if (t.touches) { if (He(t), this._fireClick = !0, t.touches.length > 1) return this._fireClick = !1, void clearTimeout(this._holdTimeout); var e = t.touches[0], i = e.target; this._startPos = this._newPos = new z(e.clientX, e.clientY), i.tagName && "a" === i.tagName.toLowerCase() && _e(i, "leaflet-active"), this._holdTimeout = setTimeout(o((function () { this._isTapValid() && (this._fireClick = !1, this._onUp(), this._simulateEvent("contextmenu", e)) }), this), 1e3), this._simulateEvent("mousedown", e), ze(document, { touchmove: this._onMove, touchend: this._onUp }, this) } }, _onUp: function (t) { if (clearTimeout(this._holdTimeout), Ie(document, { touchmove: this._onMove, touchend: this._onUp }, this), this._fireClick && t && t.changedTouches) { var e = t.changedTouches[0], i = e.target; i && i.tagName && "a" === i.tagName.toLowerCase() && me(i, "leaflet-active"), this._simulateEvent("mouseup", e), this._isTapValid() && this._simulateEvent("click", e) } }, _isTapValid: function () { return this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance }, _onMove: function (t) { var e = t.touches[0]; this._newPos = new z(e.clientX, e.clientY), this._simulateEvent("mousemove", e) }, _simulateEvent: function (t, e) { var i = document.createEvent("MouseEvents"); i._simulated = !0, e.target._simulatedClick = !0, i.initMouseEvent(t, !0, !0, window, 1, e.screenX, e.screenY, e.clientX, e.clientY, !1, !1, !1, !1, 0, null), e.target.dispatchEvent(i) } }); !xt || wt && !ut || ti.addInitHook("addHandler", "tap", to), ti.mergeOptions({ touchZoom: xt && !ot, bounceAtZoomLimits: !0 }); var eo = pi.extend({ addHooks: function () { _e(this._map._container, "leaflet-touch-zoom"), ze(this._map._container, "touchstart", this._onTouchStart, this) }, removeHooks: function () { me(this._map._container, "leaflet-touch-zoom"), Ie(this._map._container, "touchstart", this._onTouchStart, this) }, _onTouchStart: function (t) { var e = this._map; if (t.touches && 2 === t.touches.length && !e._animatingZoom && !this._zooming) { var i = e.mouseEventToContainerPoint(t.touches[0]), n = e.mouseEventToContainerPoint(t.touches[1]); this._centerPoint = e.getSize()._divideBy(2), this._startLatLng = e.containerPointToLatLng(this._centerPoint), "center" !== e.options.touchZoom && (this._pinchStartLatLng = e.containerPointToLatLng(i.add(n)._divideBy(2))), this._startDist = i.distanceTo(n), this._startZoom = e.getZoom(), this._moved = !1, this._zooming = !0, e._stop(), ze(document, "touchmove", this._onTouchMove, this), ze(document, "touchend", this._onTouchEnd, this), He(t) } }, _onTouchMove: function (t) { if (t.touches && 2 === t.touches.length && this._zooming) { var e = this._map, i = e.mouseEventToContainerPoint(t.touches[0]), n = e.mouseEventToContainerPoint(t.touches[1]), r = i.distanceTo(n) / this._startDist; if (this._zoom = e.getScaleZoom(r, this._startZoom), !e.options.bounceAtZoomLimits && (this._zoom < e.getMinZoom() && r < 1 || this._zoom > e.getMaxZoom() && r > 1) && (this._zoom = e._limitZoom(this._zoom)), "center" === e.options.touchZoom) { if (this._center = this._startLatLng, 1 === r) return } else { var a = i._add(n)._divideBy(2)._subtract(this._centerPoint); if (1 === r && 0 === a.x && 0 === a.y) return; this._center = e.unproject(e.project(this._pinchStartLatLng, this._zoom).subtract(a), this._zoom) } this._moved || (e._moveStart(!0, !1), this._moved = !0), C(this._animRequest); var s = o(e._move, e, this._center, this._zoom, { pinch: !0, round: !1 }); this._animRequest = P(s, this, !0), He(t) } }, _onTouchEnd: function () { this._moved && this._zooming ? (this._zooming = !1, C(this._animRequest), Ie(document, "touchmove", this._onTouchMove, this), Ie(document, "touchend", this._onTouchEnd, this), this._map.options.zoomAnimation ? this._map._animateZoom(this._center, this._map._limitZoom(this._zoom), !0, this._map.options.zoomSnap) : this._map._resetView(this._center, this._map._limitZoom(this._zoom))) : this._zooming = !1 } }); ti.addInitHook("addHandler", "touchZoom", eo), ti.BoxZoom = Kn, ti.DoubleClickZoom = Jn, ti.Drag = Yn, ti.Keyboard = Xn, ti.ScrollWheelZoom = Qn, ti.Tap = to, ti.TouchZoom = eo, t.version = e, t.Control = ii, t.control = ni, t.Browser = Bt, t.Evented = B, t.Mixin = fi, t.Util = T, t.Class = S, t.Handler = pi, t.extend = i, t.bind = o, t.stamp = a, t.setOptions = d, t.DomEvent = Xe, t.DomUtil = Be, t.PosAnimation = Qe, t.Draggable = vi, t.LineUtil = Bi, t.PolyUtil = ji, t.Point = z, t.point = I, t.Bounds = A, t.bounds = R, t.Transformation = q, t.transformation = W, t.Projection = Ri, t.LatLng = N, t.latLng = G, t.LatLngBounds = D, t.latLngBounds = Z, t.CRS = F, t.GeoJSON = hn, t.geoJSON = vn, t.geoJson = yn, t.Layer = Gi, t.LayerGroup = Fi, t.layerGroup = Hi, t.FeatureGroup = Vi, t.featureGroup = Ui, t.ImageOverlay = bn, t.imageOverlay = Ln, t.VideoOverlay = wn, t.videoOverlay = xn, t.SVGOverlay = kn, t.svgOverlay = Mn, t.DivOverlay = Pn, t.Popup = Cn, t.popup = Tn, t.Tooltip = Sn, t.tooltip = On, t.Icon = qi, t.icon = Wi, t.DivIcon = En, t.divIcon = Bn, t.Marker = Ji, t.marker = Yi, t.TileLayer = In, t.tileLayer = An, t.GridLayer = zn, t.gridLayer = jn, t.SVG = Un, t.svg = qn, t.Renderer = Zn, t.Canvas = Nn, t.canvas = Gn, t.Path = Xi, t.CircleMarker = Qi, t.circleMarker = tn, t.Circle = en, t.circle = nn, t.Polyline = on, t.polyline = rn, t.Polygon = an, t.polygon = sn, t.Rectangle = Wn, t.rectangle = $n, t.Map = ti, t.map = ei; var io = window.L; t.noConflict = function () { return window.L = io, this }, window.L = t }))
+    }
+}]);
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-b7a16696.e8717d8b.js.gz b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-b7a16696.e8717d8b.js.gz
new file mode 100644
index 0000000..713b152
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-b7a16696.e8717d8b.js.gz
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-vendors.c9111d8d.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-vendors.c9111d8d.js
new file mode 100644
index 0000000..5dd42fc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-vendors.c9111d8d.js
@@ -0,0 +1,1003 @@
+(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["chunk-vendors"], {
+    "0020": function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("8e8e"), a = n.n(o), s = n("372e"), c = n("46cf"), l = n.n(c), u = n("8bbf"), h = n.n(u), f = n("daa3"), d = n("db14"); h.a.use(l.a, { name: "ant-ref" }); var p = { name: "ATable", Column: s["a"].Column, ColumnGroup: s["a"].ColumnGroup, props: s["a"].props, methods: { normalize: function () { var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], n = []; return t.forEach((function (t) { if (t.tag) { var r = Object(f["j"])(t), o = Object(f["q"])(t), s = Object(f["f"])(t), c = Object(f["l"])(t), l = Object(f["i"])(t), u = {}; Object.keys(l).forEach((function (e) { var t = "on-" + e; u[Object(f["a"])(t)] = l[e] })); var h = Object(f["p"])(t), d = h["default"], p = a()(h, ["default"]), v = i()({}, p, c, { style: o, class: s }, u); if (r && (v.key = r), Object(f["o"])(t).__ANT_TABLE_COLUMN_GROUP) v.children = e.normalize("function" === typeof d ? d() : d); else { var m = t.data && t.data.scopedSlots && t.data.scopedSlots["default"]; v.customRender = v.customRender || m } n.push(v) } })), n }, updateColumns: function () { var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], n = [], r = this.$slots, o = this.$scopedSlots; return t.forEach((function (t) { var s = t.slots, c = void 0 === s ? {} : s, l = t.scopedSlots, u = void 0 === l ? {} : l, h = a()(t, ["slots", "scopedSlots"]), f = i()({}, h); Object.keys(c).forEach((function (e) { var t = c[e]; void 0 === f[e] && r[t] && (f[e] = 1 === r[t].length ? r[t][0] : r[t]) })), Object.keys(u).forEach((function (e) { var t = u[e]; void 0 === f[e] && o[t] && (f[e] = o[t]) })), t.children && (f.children = e.updateColumns(f.children)), n.push(f) })), n } }, render: function () { var e = arguments[0], t = this.$slots, n = this.normalize, r = this.$scopedSlots, o = Object(f["l"])(this), a = o.columns ? this.updateColumns(o.columns) : n(t["default"]), c = o.title, l = o.footer, u = r.title, h = r.footer, d = r.expandedRowRender, p = void 0 === d ? o.expandedRowRender : d; c = c || u, l = l || h; var v = { props: i()({}, o, { columns: a, title: c, footer: l, expandedRowRender: p }), on: Object(f["k"])(this) }; return e(s["a"], v) }, install: function (e) { e.use(d["a"]), e.component(p.name, p), e.component(p.Column.name, p.Column), e.component(p.ColumnGroup.name, p.ColumnGroup) } }; t["a"] = p }, "0025": function (e, t, n) { "use strict"; n("b2a3"), n("8c3f") }, "0032": function (e, t, n) { "use strict"; n("b2a3"), n("1efe") }, "0063": function (e, t, n) { var r, i; (function (o, a) { var s = { Identity: function (e) { return e }, True: function () { return !0 }, Blank: function () { } }, c = { Boolean: "boolean", Number: "number", String: "string", Object: typeof {}, Undefined: typeof a, Function: typeof function () { } }, l = { "": s.Identity }, u = { createLambda: function (e) { if (null == e) return s.Identity; if (typeof e === c.String) { var t = l[e]; if (null != t) return t; if (-1 === e.indexOf("=>")) { var n, r = new RegExp("[$]+", "g"), i = 0; while (null != (n = r.exec(e))) { var o = n[0].length; o > i && (i = o) } for (var a = [], u = 1; u <= i; u++) { for (var h = "", f = 0; f < u; f++)h += "$"; a.push(h) } var d = Array.prototype.join.call(a, ","); return t = new Function(d, "return " + e), l[e] = t, t } var p = e.match(/^[(\s]*([^()]*?)[)\s]*=>(.*)/); return t = new Function(p[1], p[2].match(/\breturn\b/) ? p[2] : "return " + p[2]), l[e] = t, t } return e }, isIEnumerable: function (e) { if (typeof Enumerator !== c.Undefined) try { return new Enumerator(e), !0 } catch (t) { } return !1 }, defineProperty: null != Object.defineProperties ? function (e, t, n) { Object.defineProperty(e, t, { enumerable: !1, configurable: !0, writable: !0, value: n }) } : function (e, t, n) { e[t] = n }, compare: function (e, t) { return e === t ? 0 : e > t ? 1 : -1 }, dispose: function (e) { null != e && e.dispose() }, hasNativeIteratorSupport: function () { return "undefined" !== typeof Symbol && "undefined" !== typeof Symbol.iterator } }, h = { Before: 0, Running: 1, After: 2 }, f = function (e, t, n) { var r = new d, i = h.Before; this.current = r.current, this.moveNext = function () { try { switch (i) { case h.Before: i = h.Running, e(); case h.Running: return !!t.apply(r) || (this.dispose(), !1); case h.After: return !1 } } catch (n) { throw this.dispose(), n } }, this.dispose = function () { if (i == h.Running) try { n() } finally { i = h.After } } }, d = function () { var e = null; this.current = function () { return e }, this.yieldReturn = function (t) { return e = t, !0 }, this.yieldBreak = function () { return !1 } }, p = function (e) { this.getEnumerator = e }; p.Utils = {}, p.Utils.createLambda = function (e) { return u.createLambda(e) }, p.Utils.createEnumerable = function (e) { return new p(e) }, p.Utils.createEnumerator = function (e, t, n) { return new f(e, t, n) }, p.Utils.extendTo = function (e) { var t, n = e.prototype; for (var r in e === Array ? (t = y.prototype, u.defineProperty(n, "getSource", (function () { return this }))) : (t = p.prototype, u.defineProperty(n, "getEnumerator", (function () { return p.from(this).getEnumerator() }))), t) { var i = t[r]; n[r] != i && (null != n[r] && (r += "ByLinq", n[r] == i) || i instanceof Function && u.defineProperty(n, r, i)) } }, p.Utils.recallFrom = function (e) { var t, n = e.prototype; for (var r in e === Array ? (t = y.prototype, delete n.getSource) : (t = p.prototype, delete n.getEnumerator), t) { var i = t[r]; n[r + "ByLinq"] ? delete n[r + "ByLinq"] : n[r] == i && i instanceof Function && delete n[r] } }, p.choice = function () { var e = arguments; return new p((function () { return new f((function () { e = e[0] instanceof Array ? e[0] : null != e[0].getEnumerator ? e[0].toArray() : e }), (function () { return this.yieldReturn(e[Math.floor(Math.random() * e.length)]) }), s.Blank) })) }, p.cycle = function () { var e = arguments; return new p((function () { var t = 0; return new f((function () { e = e[0] instanceof Array ? e[0] : null != e[0].getEnumerator ? e[0].toArray() : e }), (function () { return t >= e.length && (t = 0), this.yieldReturn(e[t++]) }), s.Blank) })) }, p.empty = function () { return new p((function () { return new f(s.Blank, (function () { return !1 }), s.Blank) })) }, p.from = function (e) { if (null == e) return p.empty(); if (e instanceof p) return e; if (typeof e == c.Number || typeof e == c.Boolean) return p.repeat(e, 1); if (typeof e == c.String) return new p((function () { var t = 0; return new f(s.Blank, (function () { return t < e.length && this.yieldReturn(e.charAt(t++)) }), s.Blank) })); if (typeof e != c.Function) { if (typeof e.length == c.Number) return new y(e); if ("undefined" !== typeof Symbol && "undefined" !== typeof e[Symbol.iterator]) return new p((function () { return new f(s.Blank, (function () { var t = e.next(); return !t.done && this.yieldReturn(t.value) }), s.Blank) })); if (!(e instanceof Object) && u.isIEnumerable(e)) return new p((function () { var t, n = !0; return new f((function () { t = new Enumerator(e) }), (function () { return n ? n = !1 : t.moveNext(), !t.atEnd() && this.yieldReturn(t.item()) }), s.Blank) })); if (typeof Windows === c.Object && typeof e.first === c.Function) return new p((function () { var t, n = !0; return new f((function () { t = e.first() }), (function () { return n ? n = !1 : t.moveNext(), t.hasCurrent ? this.yieldReturn(t.current) : this.yieldBreak() }), s.Blank) })) } return new p((function () { var t = [], n = 0; return new f((function () { for (var n in e) { var r = e[n]; r instanceof Function || !Object.prototype.hasOwnProperty.call(e, n) || t.push({ key: n, value: r }) } }), (function () { return n < t.length && this.yieldReturn(t[n++]) }), s.Blank) })) }, p.make = function (e) { return p.repeat(e, 1) }, p.matches = function (e, t, n) { return null == n && (n = ""), t instanceof RegExp && (n += t.ignoreCase ? "i" : "", n += t.multiline ? "m" : "", t = t.source), -1 === n.indexOf("g") && (n += "g"), new p((function () { var r; return new f((function () { r = new RegExp(t, n) }), (function () { var t = r.exec(e); return !!t && this.yieldReturn(t) }), s.Blank) })) }, p.range = function (e, t, n) { return null == n && (n = 1), new p((function () { var r, i = 0; return new f((function () { r = e - n }), (function () { return i++ < t ? this.yieldReturn(r += n) : this.yieldBreak() }), s.Blank) })) }, p.rangeDown = function (e, t, n) { return null == n && (n = 1), new p((function () { var r, i = 0; return new f((function () { r = e + n }), (function () { return i++ < t ? this.yieldReturn(r -= n) : this.yieldBreak() }), s.Blank) })) }, p.rangeTo = function (e, t, n) { return null == n && (n = 1), new p(e < t ? function () { var r; return new f((function () { r = e - n }), (function () { var e = r += n; return e <= t ? this.yieldReturn(e) : this.yieldBreak() }), s.Blank) } : function () { var r; return new f((function () { r = e + n }), (function () { var e = r -= n; return e >= t ? this.yieldReturn(e) : this.yieldBreak() }), s.Blank) }) }, p.repeat = function (e, t) { return null != t ? p.repeat(e).take(t) : new p((function () { return new f(s.Blank, (function () { return this.yieldReturn(e) }), s.Blank) })) }, p.repeatWithFinalize = function (e, t) { return e = u.createLambda(e), t = u.createLambda(t), new p((function () { var n; return new f((function () { n = e() }), (function () { return this.yieldReturn(n) }), (function () { null != n && (t(n), n = null) })) })) }, p.generate = function (e, t) { return null != t ? p.generate(e).take(t) : (e = u.createLambda(e), new p((function () { return new f(s.Blank, (function () { return this.yieldReturn(e()) }), s.Blank) }))) }, p.toInfinity = function (e, t) { return null == e && (e = 0), null == t && (t = 1), new p((function () { var n; return new f((function () { n = e - t }), (function () { return this.yieldReturn(n += t) }), s.Blank) })) }, p.toNegativeInfinity = function (e, t) { return null == e && (e = 0), null == t && (t = 1), new p((function () { var n; return new f((function () { n = e + t }), (function () { return this.yieldReturn(n -= t) }), s.Blank) })) }, p.unfold = function (e, t) { return t = u.createLambda(t), new p((function () { var n, r = !0; return new f(s.Blank, (function () { return r ? (r = !1, n = e, this.yieldReturn(n)) : (n = t(n), this.yieldReturn(n)) }), s.Blank) })) }, p.defer = function (e) { return new p((function () { var t; return new f((function () { t = p.from(e()).getEnumerator() }), (function () { return t.moveNext() ? this.yieldReturn(t.current()) : this.yieldBreak() }), (function () { u.dispose(t) })) })) }, p.prototype.traverseBreadthFirst = function (e, t) { var n = this; return e = u.createLambda(e), t = u.createLambda(t), new p((function () { var r, i = 0, o = []; return new f((function () { r = n.getEnumerator() }), (function () { while (1) { if (r.moveNext()) return o.push(r.current()), this.yieldReturn(t(r.current(), i)); var n = p.from(o).selectMany((function (t) { return e(t) })); if (!n.any()) return !1; i++, o = [], u.dispose(r), r = n.getEnumerator() } }), (function () { u.dispose(r) })) })) }, p.prototype.traverseDepthFirst = function (e, t) { var n = this; return e = u.createLambda(e), t = u.createLambda(t), new p((function () { var r, i = []; return new f((function () { r = n.getEnumerator() }), (function () { while (1) { if (r.moveNext()) { var n = t(r.current(), i.length); return i.push(r), r = p.from(e(r.current())).getEnumerator(), this.yieldReturn(n) } if (i.length <= 0) return !1; u.dispose(r), r = i.pop() } }), (function () { try { u.dispose(r) } finally { p.from(i).forEach((function (e) { e.dispose() })) } })) })) }, p.prototype.flatten = function () { var e = this; return new p((function () { var t, n = null; return new f((function () { t = e.getEnumerator() }), (function () { while (1) { if (null != n) { if (n.moveNext()) return this.yieldReturn(n.current()); n = null } if (t.moveNext()) { if (t.current() instanceof Array) { u.dispose(n), n = p.from(t.current()).selectMany(s.Identity).flatten().getEnumerator(); continue } return this.yieldReturn(t.current()) } return !1 } }), (function () { try { u.dispose(t) } finally { u.dispose(n) } })) })) }, p.prototype.pairwise = function (e) { var t = this; return e = u.createLambda(e), new p((function () { var n; return new f((function () { n = t.getEnumerator(), n.moveNext() }), (function () { var t = n.current(); return !!n.moveNext() && this.yieldReturn(e(t, n.current())) }), (function () { u.dispose(n) })) })) }, p.prototype.scan = function (e, t) { var n; null == t ? (t = u.createLambda(e), n = !1) : (t = u.createLambda(t), n = !0); var r = this; return new p((function () { var i, o, a = !0; return new f((function () { i = r.getEnumerator() }), (function () { if (a) { if (a = !1, n) return this.yieldReturn(o = e); if (i.moveNext()) return this.yieldReturn(o = i.current()) } return !!i.moveNext() && this.yieldReturn(o = t(o, i.current())) }), (function () { u.dispose(i) })) })) }, p.prototype.select = function (e) { if (e = u.createLambda(e), e.length <= 1) return new x(this, null, e); var t = this; return new p((function () { var n, r = 0; return new f((function () { n = t.getEnumerator() }), (function () { return !!n.moveNext() && this.yieldReturn(e(n.current(), r++)) }), (function () { u.dispose(n) })) })) }, p.prototype.selectMany = function (e, t) { var n = this; return e = u.createLambda(e), null == t && (t = function (e, t) { return t }), t = u.createLambda(t), new p((function () { var r, i = a, o = 0; return new f((function () { r = n.getEnumerator() }), (function () { if (i === a && !r.moveNext()) return !1; do { if (null == i) { var n = e(r.current(), o++); i = p.from(n).getEnumerator() } if (i.moveNext()) return this.yieldReturn(t(r.current(), i.current())); u.dispose(i), i = null } while (r.moveNext()); return !1 }), (function () { try { u.dispose(r) } finally { u.dispose(i) } })) })) }, p.prototype.where = function (e) { if (e = u.createLambda(e), e.length <= 1) return new b(this, e); var t = this; return new p((function () { var n, r = 0; return new f((function () { n = t.getEnumerator() }), (function () { while (n.moveNext()) if (e(n.current(), r++)) return this.yieldReturn(n.current()); return !1 }), (function () { u.dispose(n) })) })) }, p.prototype.choose = function (e) { e = u.createLambda(e); var t = this; return new p((function () { var n, r = 0; return new f((function () { n = t.getEnumerator() }), (function () { while (n.moveNext()) { var t = e(n.current(), r++); if (null != t) return this.yieldReturn(t) } return this.yieldBreak() }), (function () { u.dispose(n) })) })) }, p.prototype.ofType = function (e) { var t; switch (e) { case Number: t = c.Number; break; case String: t = c.String; break; case Boolean: t = c.Boolean; break; case Function: t = c.Function; break; default: t = null; break }return null === t ? this.where((function (t) { return t instanceof e })) : this.where((function (e) { return typeof e === t })) }, p.prototype.zip = function () { var e = arguments, t = u.createLambda(arguments[arguments.length - 1]), n = this; if (2 == arguments.length) { var r = arguments[0]; return new p((function () { var e, i, o = 0; return new f((function () { e = n.getEnumerator(), i = p.from(r).getEnumerator() }), (function () { return !(!e.moveNext() || !i.moveNext()) && this.yieldReturn(t(e.current(), i.current(), o++)) }), (function () { try { u.dispose(e) } finally { u.dispose(i) } })) })) } return new p((function () { var r, i = 0; return new f((function () { var t = p.make(n).concat(p.from(e).takeExceptLast().select(p.from)).select((function (e) { return e.getEnumerator() })).toArray(); r = p.from(t) }), (function () { if (r.all((function (e) { return e.moveNext() }))) { var e = r.select((function (e) { return e.current() })).toArray(); return e.push(i++), this.yieldReturn(t.apply(null, e)) } return this.yieldBreak() }), (function () { p.from(r).forEach(u.dispose) })) })) }, p.prototype.merge = function () { var e = arguments, t = this; return new p((function () { var n, r = -1; return new f((function () { n = p.make(t).concat(p.from(e).select(p.from)).select((function (e) { return e.getEnumerator() })).toArray() }), (function () { while (n.length > 0) { r = r >= n.length - 1 ? 0 : r + 1; var e = n[r]; if (e.moveNext()) return this.yieldReturn(e.current()); e.dispose(), n.splice(r--, 1) } return this.yieldBreak() }), (function () { p.from(n).forEach(u.dispose) })) })) }, p.prototype.join = function (e, t, n, r, i) { t = u.createLambda(t), n = u.createLambda(n), r = u.createLambda(r), i = u.createLambda(i); var o = this; return new p((function () { var c, l, h = null, d = 0; return new f((function () { c = o.getEnumerator(), l = p.from(e).toLookup(n, s.Identity, i) }), (function () { while (1) { if (null != h) { var e = h[d++]; if (e !== a) return this.yieldReturn(r(c.current(), e)); e = null, d = 0 } if (!c.moveNext()) return !1; var n = t(c.current()); h = l.get(n).toArray() } }), (function () { u.dispose(c) })) })) }, p.prototype.groupJoin = function (e, t, n, r, i) { t = u.createLambda(t), n = u.createLambda(n), r = u.createLambda(r), i = u.createLambda(i); var o = this; return new p((function () { var a = o.getEnumerator(), c = null; return new f((function () { a = o.getEnumerator(), c = p.from(e).toLookup(n, s.Identity, i) }), (function () { if (a.moveNext()) { var e = c.get(t(a.current())); return this.yieldReturn(r(a.current(), e)) } return !1 }), (function () { u.dispose(a) })) })) }, p.prototype.all = function (e) { e = u.createLambda(e); var t = !0; return this.forEach((function (n) { if (!e(n)) return t = !1, !1 })), t }, p.prototype.any = function (e) { e = u.createLambda(e); var t = this.getEnumerator(); try { if (0 == arguments.length) return t.moveNext(); while (t.moveNext()) if (e(t.current())) return !0; return !1 } finally { u.dispose(t) } }, p.prototype.isEmpty = function () { return !this.any() }, p.prototype.concat = function () { var e = this; if (1 == arguments.length) { var t = arguments[0]; return new p((function () { var n, r; return new f((function () { n = e.getEnumerator() }), (function () { if (null == r) { if (n.moveNext()) return this.yieldReturn(n.current()); r = p.from(t).getEnumerator() } return !!r.moveNext() && this.yieldReturn(r.current()) }), (function () { try { u.dispose(n) } finally { u.dispose(r) } })) })) } var n = arguments; return new p((function () { var t; return new f((function () { t = p.make(e).concat(p.from(n).select(p.from)).select((function (e) { return e.getEnumerator() })).toArray() }), (function () { while (t.length > 0) { var e = t[0]; if (e.moveNext()) return this.yieldReturn(e.current()); e.dispose(), t.splice(0, 1) } return this.yieldBreak() }), (function () { p.from(t).forEach(u.dispose) })) })) }, p.prototype.insert = function (e, t) { var n = this; return new p((function () { var r, i, o = 0, a = !1; return new f((function () { r = n.getEnumerator(), i = p.from(t).getEnumerator() }), (function () { return o == e && i.moveNext() ? (a = !0, this.yieldReturn(i.current())) : r.moveNext() ? (o++, this.yieldReturn(r.current())) : !(a || !i.moveNext()) && this.yieldReturn(i.current()) }), (function () { try { u.dispose(r) } finally { u.dispose(i) } })) })) }, p.prototype.alternate = function (e) { var t = this; return new p((function () { var n, r, i, o; return new f((function () { i = e instanceof Array || null != e.getEnumerator ? p.from(p.from(e).toArray()) : p.make(e), r = t.getEnumerator(), r.moveNext() && (n = r.current()) }), (function () { while (1) { if (null != o) { if (o.moveNext()) return this.yieldReturn(o.current()); o = null } if (null != n || !r.moveNext()) { if (null != n) { var e = n; return n = null, this.yieldReturn(e) } return this.yieldBreak() } n = r.current(), o = i.getEnumerator() } }), (function () { try { u.dispose(r) } finally { u.dispose(o) } })) })) }, p.prototype.contains = function (e, t) { t = u.createLambda(t); var n = this.getEnumerator(); try { while (n.moveNext()) if (t(n.current()) === e) return !0; return !1 } finally { u.dispose(n) } }, p.prototype.defaultIfEmpty = function (e) { var t = this; return e === a && (e = null), new p((function () { var n, r = !0; return new f((function () { n = t.getEnumerator() }), (function () { return n.moveNext() ? (r = !1, this.yieldReturn(n.current())) : !!r && (r = !1, this.yieldReturn(e)) }), (function () { u.dispose(n) })) })) }, p.prototype.distinct = function (e) { return this.except(p.empty(), e) }, p.prototype.distinctUntilChanged = function (e) { e = u.createLambda(e); var t = this; return new p((function () { var n, r, i; return new f((function () { n = t.getEnumerator() }), (function () { while (n.moveNext()) { var t = e(n.current()); if (i) return i = !1, r = t, this.yieldReturn(n.current()); if (r !== t) return r = t, this.yieldReturn(n.current()) } return this.yieldBreak() }), (function () { u.dispose(n) })) })) }, p.prototype.except = function (e, t) { t = u.createLambda(t); var n = this; return new p((function () { var r, i; return new f((function () { r = n.getEnumerator(), i = new w(t), p.from(e).forEach((function (e) { i.add(e) })) }), (function () { while (r.moveNext()) { var e = r.current(); if (!i.contains(e)) return i.add(e), this.yieldReturn(e) } return !1 }), (function () { u.dispose(r) })) })) }, p.prototype.intersect = function (e, t) { t = u.createLambda(t); var n = this; return new p((function () { var r, i, o; return new f((function () { r = n.getEnumerator(), i = new w(t), p.from(e).forEach((function (e) { i.add(e) })), o = new w(t) }), (function () { while (r.moveNext()) { var e = r.current(); if (!o.contains(e) && i.contains(e)) return o.add(e), this.yieldReturn(e) } return !1 }), (function () { u.dispose(r) })) })) }, p.prototype.sequenceEqual = function (e, t) { t = u.createLambda(t); var n = this.getEnumerator(); try { var r = p.from(e).getEnumerator(); try { while (n.moveNext()) if (!r.moveNext() || t(n.current()) !== t(r.current())) return !1; return !r.moveNext() } finally { u.dispose(r) } } finally { u.dispose(n) } }, p.prototype.union = function (e, t) { t = u.createLambda(t); var n = this; return new p((function () { var r, i, o; return new f((function () { r = n.getEnumerator(), o = new w(t) }), (function () { var t; if (i === a) { while (r.moveNext()) if (t = r.current(), !o.contains(t)) return o.add(t), this.yieldReturn(t); i = p.from(e).getEnumerator() } while (i.moveNext()) if (t = i.current(), !o.contains(t)) return o.add(t), this.yieldReturn(t); return !1 }), (function () { try { u.dispose(r) } finally { u.dispose(i) } })) })) }, p.prototype.orderBy = function (e, t) { return new v(this, e, t, !1) }, p.prototype.orderByDescending = function (e, t) { return new v(this, e, t, !0) }, p.prototype.reverse = function () { var e = this; return new p((function () { var t, n; return new f((function () { t = e.toArray(), n = t.length }), (function () { return n > 0 && this.yieldReturn(t[--n]) }), s.Blank) })) }, p.prototype.shuffle = function () { var e = this; return new p((function () { var t; return new f((function () { t = e.toArray() }), (function () { if (t.length > 0) { var e = Math.floor(Math.random() * t.length); return this.yieldReturn(t.splice(e, 1)[0]) } return !1 }), s.Blank) })) }, p.prototype.weightedSample = function (e) { e = u.createLambda(e); var t = this; return new p((function () { var n, r = 0; return new f((function () { n = t.choose((function (t) { var n = e(t); return n <= 0 ? null : (r += n, { value: t, bound: r }) })).toArray() }), (function () { if (n.length > 0) { var e = Math.floor(Math.random() * r) + 1, t = -1, i = n.length; while (i - t > 1) { var o = Math.floor((t + i) / 2); n[o].bound >= e ? i = o : t = o } return this.yieldReturn(n[i].value) } return this.yieldBreak() }), s.Blank) })) }, p.prototype.groupBy = function (e, t, n, r) { var i = this; return e = u.createLambda(e), t = u.createLambda(t), null != n && (n = u.createLambda(n)), r = u.createLambda(r), new p((function () { var o; return new f((function () { o = i.toLookup(e, t, r).toEnumerable().getEnumerator() }), (function () { while (o.moveNext()) return null == n ? this.yieldReturn(o.current()) : this.yieldReturn(n(o.current().key(), o.current())); return !1 }), (function () { u.dispose(o) })) })) }, p.prototype.partitionBy = function (e, t, n, r) { var i, o = this; return e = u.createLambda(e), t = u.createLambda(t), r = u.createLambda(r), null == n ? (i = !1, n = function (e, t) { return new C(e, t) }) : (i = !0, n = u.createLambda(n)), new p((function () { var a, s, c, l = []; return new f((function () { a = o.getEnumerator(), a.moveNext() && (s = e(a.current()), c = r(s), l.push(t(a.current()))) }), (function () { var o; while (1 == (o = a.moveNext())) { if (c !== r(e(a.current()))) break; l.push(t(a.current())) } if (l.length > 0) { var u = n(s, i ? p.from(l) : l); return o ? (s = e(a.current()), c = r(s), l = [t(a.current())]) : l = [], this.yieldReturn(u) } return !1 }), (function () { u.dispose(a) })) })) }, p.prototype.buffer = function (e) { var t = this; return new p((function () { var n; return new f((function () { n = t.getEnumerator() }), (function () { var t = [], r = 0; while (n.moveNext()) if (t.push(n.current()), ++r >= e) return this.yieldReturn(t); return t.length > 0 && this.yieldReturn(t) }), (function () { u.dispose(n) })) })) }, p.prototype.aggregate = function (e, t, n) { return n = u.createLambda(n), n(this.scan(e, t, n).last()) }, p.prototype.average = function (e) { e = u.createLambda(e); var t = 0, n = 0; return this.forEach((function (r) { t += e(r), ++n })), t / n }, p.prototype.count = function (e) { e = null == e ? s.True : u.createLambda(e); var t = 0; return this.forEach((function (n, r) { e(n, r) && ++t })), t }, p.prototype.max = function (e) { return null == e && (e = s.Identity), this.select(e).aggregate((function (e, t) { return e > t ? e : t })) }, p.prototype.min = function (e) { return null == e && (e = s.Identity), this.select(e).aggregate((function (e, t) { return e < t ? e : t })) }, p.prototype.maxBy = function (e) { return e = u.createLambda(e), this.aggregate((function (t, n) { return e(t) > e(n) ? t : n })) }, p.prototype.minBy = function (e) { return e = u.createLambda(e), this.aggregate((function (t, n) { return e(t) < e(n) ? t : n })) }, p.prototype.sum = function (e) { return null == e && (e = s.Identity), this.select(e).aggregate(0, (function (e, t) { return e + t })) }, p.prototype.elementAt = function (e) { var t, n = !1; if (this.forEach((function (r, i) { if (i == e) return t = r, n = !0, !1 })), !n) throw new Error("index is less than 0 or greater than or equal to the number of elements in source."); return t }, p.prototype.elementAtOrDefault = function (e, t) { var n; t === a && (t = null); var r = !1; return this.forEach((function (t, i) { if (i == e) return n = t, r = !0, !1 })), r ? n : t }, p.prototype.first = function (e) { if (null != e) return this.where(e).first(); var t, n = !1; if (this.forEach((function (e) { return t = e, n = !0, !1 })), !n) throw new Error("first:No element satisfies the condition."); return t }, p.prototype.firstOrDefault = function (e, t) { if (e !== a) { if (typeof e === c.Function || typeof u.createLambda(e) === c.Function) return this.where(e).firstOrDefault(a, t); t = e } var n, r = !1; return this.forEach((function (e) { return n = e, r = !0, !1 })), r ? n : t }, p.prototype.last = function (e) { if (null != e) return this.where(e).last(); var t, n = !1; if (this.forEach((function (e) { n = !0, t = e })), !n) throw new Error("last:No element satisfies the condition."); return t }, p.prototype.lastOrDefault = function (e, t) { if (e !== a) { if (typeof e === c.Function || typeof u.createLambda(e) === c.Function) return this.where(e).lastOrDefault(a, t); t = e } var n, r = !1; return this.forEach((function (e) { r = !0, n = e })), r ? n : t }, p.prototype.single = function (e) { if (null != e) return this.where(e).single(); var t, n = !1; if (this.forEach((function (e) { if (n) throw new Error("single:sequence contains more than one element."); n = !0, t = e })), !n) throw new Error("single:No element satisfies the condition."); return t }, p.prototype.singleOrDefault = function (e, t) { if (t === a && (t = null), null != e) return this.where(e).singleOrDefault(null, t); var n, r = !1; return this.forEach((function (e) { if (r) throw new Error("single:sequence contains more than one element."); r = !0, n = e })), r ? n : t }, p.prototype.skip = function (e) { var t = this; return new p((function () { var n, r = 0; return new f((function () { n = t.getEnumerator(); while (r++ < e && n.moveNext()); }), (function () { return !!n.moveNext() && this.yieldReturn(n.current()) }), (function () { u.dispose(n) })) })) }, p.prototype.skipWhile = function (e) { e = u.createLambda(e); var t = this; return new p((function () { var n, r = 0, i = !1; return new f((function () { n = t.getEnumerator() }), (function () { while (!i) { if (!n.moveNext()) return !1; if (!e(n.current(), r++)) return i = !0, this.yieldReturn(n.current()) } return !!n.moveNext() && this.yieldReturn(n.current()) }), (function () { u.dispose(n) })) })) }, p.prototype.take = function (e) { var t = this; return new p((function () { var n, r = 0; return new f((function () { n = t.getEnumerator() }), (function () { return !!(r++ < e && n.moveNext()) && this.yieldReturn(n.current()) }), (function () { u.dispose(n) })) })) }, p.prototype.takeWhile = function (e) { e = u.createLambda(e); var t = this; return new p((function () { var n, r = 0; return new f((function () { n = t.getEnumerator() }), (function () { return !(!n.moveNext() || !e(n.current(), r++)) && this.yieldReturn(n.current()) }), (function () { u.dispose(n) })) })) }, p.prototype.takeExceptLast = function (e) { null == e && (e = 1); var t = this; return new p((function () { if (e <= 0) return t.getEnumerator(); var n, r = []; return new f((function () { n = t.getEnumerator() }), (function () { while (n.moveNext()) { if (r.length == e) return r.push(n.current()), this.yieldReturn(r.shift()); r.push(n.current()) } return !1 }), (function () { u.dispose(n) })) })) }, p.prototype.takeFromLast = function (e) { if (e <= 0 || null == e) return p.empty(); var t = this; return new p((function () { var n, r, i = []; return new f((function () { n = t.getEnumerator() }), (function () { while (n.moveNext()) i.length == e && i.shift(), i.push(n.current()); return null == r && (r = p.from(i).getEnumerator()), !!r.moveNext() && this.yieldReturn(r.current()) }), (function () { u.dispose(r) })) })) }, p.prototype.indexOf = function (e) { var t = null; return typeof e === c.Function ? this.forEach((function (n, r) { if (e(n, r)) return t = r, !1 })) : this.forEach((function (n, r) { if (n === e) return t = r, !1 })), null !== t ? t : -1 }, p.prototype.lastIndexOf = function (e) { var t = -1; return typeof e === c.Function ? this.forEach((function (n, r) { e(n, r) && (t = r) })) : this.forEach((function (n, r) { n === e && (t = r) })), t }, p.prototype.cast = function () { return this }, p.prototype.asEnumerable = function () { return p.from(this) }, p.prototype.toArray = function () { var e = []; return this.forEach((function (t) { e.push(t) })), e }, p.prototype.toLookup = function (e, t, n) { e = u.createLambda(e), t = u.createLambda(t), n = u.createLambda(n); var r = new w(n); return this.forEach((function (n) { var i = e(n), o = t(n), s = r.get(i); s !== a ? s.push(o) : r.add(i, [o]) })), new _(r) }, p.prototype.toObject = function (e, t) { e = u.createLambda(e), t = u.createLambda(t); var n = {}; return this.forEach((function (r) { n[e(r)] = t(r) })), n }, p.prototype.toDictionary = function (e, t, n) { e = u.createLambda(e), t = u.createLambda(t), n = u.createLambda(n); var r = new w(n); return this.forEach((function (n) { r.add(e(n), t(n)) })), r }, p.prototype.toJSONString = function (e, t) { if (typeof JSON === c.Undefined || null == JSON.stringify) throw new Error("toJSONString can't find JSON.stringify. This works native JSON support Browser or include json2.js"); return JSON.stringify(this.toArray(), e, t) }, p.prototype.toJoinedString = function (e, t) { return null == e && (e = ""), null == t && (t = s.Identity), this.select(t).toArray().join(e) }, p.prototype.doAction = function (e) { var t = this; return e = u.createLambda(e), new p((function () { var n, r = 0; return new f((function () { n = t.getEnumerator() }), (function () { return !!n.moveNext() && (e(n.current(), r++), this.yieldReturn(n.current())) }), (function () { u.dispose(n) })) })) }, p.prototype.forEach = function (e) { e = u.createLambda(e); var t = 0, n = this.getEnumerator(); try { while (n.moveNext()) if (!1 === e(n.current(), t++)) break } finally { u.dispose(n) } }, p.prototype.write = function (e, t) { null == e && (e = ""), t = u.createLambda(t); var n = !0; this.forEach((function (r) { n ? n = !1 : document.write(e), document.write(t(r)) })) }, p.prototype.writeLine = function (e) { e = u.createLambda(e), this.forEach((function (t) { document.writeln(e(t) + "<br />") })) }, p.prototype.force = function () { var e = this.getEnumerator(); try { while (e.moveNext()); } finally { u.dispose(e) } }, p.prototype.letBind = function (e) { e = u.createLambda(e); var t = this; return new p((function () { var n; return new f((function () { n = p.from(e(t)).getEnumerator() }), (function () { return !!n.moveNext() && this.yieldReturn(n.current()) }), (function () { u.dispose(n) })) })) }, p.prototype.share = function () { var e, t = this, n = !1; return new g((function () { return new f((function () { null == e && (e = t.getEnumerator()) }), (function () { if (n) throw new Error("enumerator is disposed"); return !!e.moveNext() && this.yieldReturn(e.current()) }), s.Blank) }), (function () { n = !0, u.dispose(e) })) }, p.prototype.memoize = function () { var e, t, n = this, r = !1; return new g((function () { var i = -1; return new f((function () { null == t && (t = n.getEnumerator(), e = []) }), (function () { if (r) throw new Error("enumerator is disposed"); return i++, e.length <= i ? !!t.moveNext() && this.yieldReturn(e[i] = t.current()) : this.yieldReturn(e[i]) }), s.Blank) }), (function () { r = !0, u.dispose(t), e = null })) }, u.hasNativeIteratorSupport() && (p.prototype[Symbol.iterator] = function () { return { enumerator: this.getEnumerator(), next: function () { return this.enumerator.moveNext() ? { done: !1, value: this.enumerator.current() } : { done: !0 } } } }), p.prototype.catchError = function (e) { e = u.createLambda(e); var t = this; return new p((function () { var n; return new f((function () { n = t.getEnumerator() }), (function () { try { return !!n.moveNext() && this.yieldReturn(n.current()) } catch (t) { return e(t), !1 } }), (function () { u.dispose(n) })) })) }, p.prototype.finallyAction = function (e) { e = u.createLambda(e); var t = this; return new p((function () { var n; return new f((function () { n = t.getEnumerator() }), (function () { return !!n.moveNext() && this.yieldReturn(n.current()) }), (function () { try { u.dispose(n) } finally { e() } })) })) }, p.prototype.log = function (e) { return e = u.createLambda(e), this.doAction((function (t) { typeof console !== c.Undefined && console.log(e(t)) })) }, p.prototype.trace = function (e, t) { return null == e && (e = "Trace"), t = u.createLambda(t), this.doAction((function (n) { typeof console !== c.Undefined && console.log(e, t(n)) })) }; var v = function (e, t, n, r, i) { this.source = e, this.keySelector = u.createLambda(t), this.descending = r, this.parent = i, n && (this.comparer = u.createLambda(n)) }; v.prototype = new p, v.prototype.createOrderedEnumerable = function (e, t, n) { return new v(this.source, e, t, n, this) }, v.prototype.thenBy = function (e, t) { return this.createOrderedEnumerable(e, t, !1) }, v.prototype.thenByDescending = function (e, t) { return this.createOrderedEnumerable(e, t, !0) }, v.prototype.getEnumerator = function () { var e, t, n = this, r = 0; return new f((function () { e = [], t = [], n.source.forEach((function (n, r) { e.push(n), t.push(r) })); var r = m.create(n, null); r.GenerateKeys(e), t.sort((function (e, t) { return r.compare(e, t) })) }), (function () { return r < t.length && this.yieldReturn(e[t[r++]]) }), s.Blank) }; var m = function (e, t, n, r) { this.keySelector = e, this.descending = n, this.child = r, this.comparer = t, this.keys = null }; m.create = function (e, t) { var n = new m(e.keySelector, e.comparer, e.descending, t); return null != e.parent ? m.create(e.parent, n) : n }, m.prototype.GenerateKeys = function (e) { for (var t = e.length, n = this.keySelector, r = new Array(t), i = 0; i < t; i++)r[i] = n(e[i]); this.keys = r, null != this.child && this.child.GenerateKeys(e) }, m.prototype.compare = function (e, t) { var n = this.comparer ? this.comparer(this.keys[e], this.keys[t]) : u.compare(this.keys[e], this.keys[t]); return 0 == n ? null != this.child ? this.child.compare(e, t) : u.compare(e, t) : this.descending ? -n : n }; var g = function (e, t) { this.dispose = t, p.call(this, e) }; g.prototype = new p; var y = function (e) { this.getSource = function () { return e } }; y.prototype = new p, y.prototype.any = function (e) { return null == e ? this.getSource().length > 0 : p.prototype.any.apply(this, arguments) }, y.prototype.count = function (e) { return null == e ? this.getSource().length : p.prototype.count.apply(this, arguments) }, y.prototype.elementAt = function (e) { var t = this.getSource(); return 0 <= e && e < t.length ? t[e] : p.prototype.elementAt.apply(this, arguments) }, y.prototype.elementAtOrDefault = function (e, t) { t === a && (t = null); var n = this.getSource(); return 0 <= e && e < n.length ? n[e] : t }, y.prototype.first = function (e) { var t = this.getSource(); return null == e && t.length > 0 ? t[0] : p.prototype.first.apply(this, arguments) }, y.prototype.firstOrDefault = function (e, t) { if (e !== a) return p.prototype.firstOrDefault.apply(this, arguments); t = e; var n = this.getSource(); return n.length > 0 ? n[0] : t }, y.prototype.last = function (e) { var t = this.getSource(); return null == e && t.length > 0 ? t[t.length - 1] : p.prototype.last.apply(this, arguments) }, y.prototype.lastOrDefault = function (e, t) { if (e !== a) return p.prototype.lastOrDefault.apply(this, arguments); t = e; var n = this.getSource(); return n.length > 0 ? n[n.length - 1] : t }, y.prototype.skip = function (e) { var t = this.getSource(); return new p((function () { var n; return new f((function () { n = e < 0 ? 0 : e }), (function () { return n < t.length && this.yieldReturn(t[n++]) }), s.Blank) })) }, y.prototype.takeExceptLast = function (e) { return null == e && (e = 1), this.take(this.getSource().length - e) }, y.prototype.takeFromLast = function (e) { return this.skip(this.getSource().length - e) }, y.prototype.reverse = function () { var e = this.getSource(); return new p((function () { var t; return new f((function () { t = e.length }), (function () { return t > 0 && this.yieldReturn(e[--t]) }), s.Blank) })) }, y.prototype.sequenceEqual = function (e, t) { return (!(e instanceof y || e instanceof Array) || null != t || p.from(e).count() == this.count()) && p.prototype.sequenceEqual.apply(this, arguments) }, y.prototype.toJoinedString = function (e, t) { var n = this.getSource(); return null == t && n instanceof Array ? (null == e && (e = ""), n.join(e)) : p.prototype.toJoinedString.apply(this, arguments) }, y.prototype.getEnumerator = function () { var e = this.getSource(), t = -1; return { current: function () { return e[t] }, moveNext: function () { return ++t < e.length }, dispose: s.Blank } }; var b = function (e, t) { this.prevSource = e, this.prevPredicate = t }; b.prototype = new p, b.prototype.where = function (e) { if (e = u.createLambda(e), e.length <= 1) { var t = this.prevPredicate, n = function (n) { return t(n) && e(n) }; return new b(this.prevSource, n) } return p.prototype.where.call(this, e) }, b.prototype.select = function (e) { return e = u.createLambda(e), e.length <= 1 ? new x(this.prevSource, this.prevPredicate, e) : p.prototype.select.call(this, e) }, b.prototype.getEnumerator = function () { var e, t = this.prevPredicate, n = this.prevSource; return new f((function () { e = n.getEnumerator() }), (function () { while (e.moveNext()) if (t(e.current())) return this.yieldReturn(e.current()); return !1 }), (function () { u.dispose(e) })) }; var x = function (e, t, n) { this.prevSource = e, this.prevPredicate = t, this.prevSelector = n }; x.prototype = new p, x.prototype.where = function (e) { return e = u.createLambda(e), e.length <= 1 ? new b(this, e) : p.prototype.where.call(this, e) }, x.prototype.select = function (e) { if (e = u.createLambda(e), e.length <= 1) { var t = this.prevSelector, n = function (n) { return e(t(n)) }; return new x(this.prevSource, this.prevPredicate, n) } return p.prototype.select.call(this, e) }, x.prototype.getEnumerator = function () { var e, t = this.prevPredicate, n = this.prevSelector, r = this.prevSource; return new f((function () { e = r.getEnumerator() }), (function () { while (e.moveNext()) if (null == t || t(e.current())) return this.yieldReturn(n(e.current())); return !1 }), (function () { u.dispose(e) })) }; var w = function () { var e = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, t = function (e) { return null === e ? "null" : e === a ? "undefined" : typeof e.toString === c.Function ? e.toString() : Object.prototype.toString.call(e) }, n = function (e, t) { this.key = e, this.value = t, this.prev = null, this.next = null }, r = function () { this.first = null, this.last = null }; r.prototype = { addLast: function (e) { null != this.last ? (this.last.next = e, e.prev = this.last, this.last = e) : this.first = this.last = e }, replace: function (e, t) { null != e.prev ? (e.prev.next = t, t.prev = e.prev) : this.first = t, null != e.next ? (e.next.prev = t, t.next = e.next) : this.last = t }, remove: function (e) { null != e.prev ? e.prev.next = e.next : this.first = e.next, null != e.next ? e.next.prev = e.prev : this.last = e.prev } }; var i = function (e) { this.countField = 0, this.entryList = new r, this.buckets = {}, this.compareSelector = null == e ? s.Identity : e }; return i.prototype = { add: function (r, i) { var o = this.compareSelector(r), a = t(o), s = new n(r, i); if (e(this.buckets, a)) { for (var c = this.buckets[a], l = 0; l < c.length; l++)if (this.compareSelector(c[l].key) === o) return this.entryList.replace(c[l], s), void (c[l] = s); c.push(s) } else this.buckets[a] = [s]; this.countField++, this.entryList.addLast(s) }, get: function (n) { var r = this.compareSelector(n), i = t(r); if (!e(this.buckets, i)) return a; for (var o = this.buckets[i], s = 0; s < o.length; s++) { var c = o[s]; if (this.compareSelector(c.key) === r) return c.value } return a }, set: function (r, i) { var o = this.compareSelector(r), a = t(o); if (e(this.buckets, a)) for (var s = this.buckets[a], c = 0; c < s.length; c++)if (this.compareSelector(s[c].key) === o) { var l = new n(r, i); return this.entryList.replace(s[c], l), s[c] = l, !0 } return !1 }, contains: function (n) { var r = this.compareSelector(n), i = t(r); if (!e(this.buckets, i)) return !1; for (var o = this.buckets[i], a = 0; a < o.length; a++)if (this.compareSelector(o[a].key) === r) return !0; return !1 }, clear: function () { this.countField = 0, this.buckets = {}, this.entryList = new r }, remove: function (n) { var r = this.compareSelector(n), i = t(r); if (e(this.buckets, i)) for (var o = this.buckets[i], a = 0; a < o.length; a++)if (this.compareSelector(o[a].key) === r) return this.entryList.remove(o[a]), o.splice(a, 1), 0 == o.length && delete this.buckets[i], void this.countField-- }, count: function () { return this.countField }, toEnumerable: function () { var e = this; return new p((function () { var t; return new f((function () { t = e.entryList.first }), (function () { if (null != t) { var e = { key: t.key, value: t.value }; return t = t.next, this.yieldReturn(e) } return !1 }), s.Blank) })) } }, i }(), _ = function (e) { this.count = function () { return e.count() }, this.get = function (t) { return p.from(e.get(t)) }, this.contains = function (t) { return e.contains(t) }, this.toEnumerable = function () { return e.toEnumerable().select((function (e) { return new C(e.key, e.value) })) } }, C = function (e, t) { this.key = function () { return e }, y.call(this, t) }; C.prototype = new y, "function" === c.Function && n("3c35") ? (r = [], i = function () { return p }.apply(t, r), i === a || (e.exports = i)) : typeof e !== c.Undefined && e.exports ? e.exports = p : o.Enumerable = p })(this) }, "00ee": function (e, t, n) { var r = n("b622"), i = r("toStringTag"), o = {}; o[i] = "z", e.exports = "[object z]" === String(o) }, "00fd": function (e, t, n) { var r = n("9e69"), i = Object.prototype, o = i.hasOwnProperty, a = i.toString, s = r ? r.toStringTag : void 0; function c(e) { var t = o.call(e, s), n = e[s]; try { e[s] = void 0; var r = !0 } catch (c) { } var i = a.call(e); return r && (t ? e[s] = n : delete e[s]), i } e.exports = c }, "01c2": function (e, t, n) { "use strict"; var r = { placeholder: "Select time" }; t["a"] = r }, "0242": function (e, t, n) { }, "0261": function (e, t, n) { var r = n("23e7"), i = n("d039"), o = n("8eb5"), a = Math.abs, s = Math.exp, c = Math.E, l = i((function () { return -2e-17 != Math.sinh(-2e-17) })); r({ target: "Math", stat: !0, forced: l }, { sinh: function (e) { return a(e = +e) < 1 ? (o(e) - o(-e)) / 2 : (s(e - 1) - s(-e - 1)) * (c / 2) } }) }, "02ea": function (e, t, n) { "use strict"; var r = n("7320"); t["a"] = r["a"] }, "0366": function (e, t, n) { var r = n("1c0b"); e.exports = function (e, t, n) { if (r(e), void 0 === t) return e; switch (n) { case 0: return function () { return e.call(t) }; case 1: return function (n) { return e.call(t, n) }; case 2: return function (n, r) { return e.call(t, n, r) }; case 3: return function (n, r, i) { return e.call(t, n, r, i) } }return function () { return e.apply(t, arguments) } } }, "037e": function (e, t, n) { }, "03d6": function (e, t, n) { var r = n("9c0e"), i = n("6ca1"), o = n("39ad")(!1), a = n("5a94")("IE_PROTO"); e.exports = function (e, t) { var n, s = i(e), c = 0, l = []; for (n in s) n != a && r(s, n) && l.push(n); while (t.length > c) r(s, n = t[c++]) && (~o(l, n) || l.push(n)); return l } }, "03dd": function (e, t, n) { var r = n("eac5"), i = n("57a5"), o = Object.prototype, a = o.hasOwnProperty; function s(e) { if (!r(e)) return i(e); var t = []; for (var n in Object(e)) a.call(e, n) && "constructor" != n && t.push(n); return t } e.exports = s }, "03fa": function (e, t, n) { }, "042d": function (e, t, n) { }, "0464": function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r); function o(e, t) { for (var n = i()({}, e), r = 0; r < t.length; r++) { var o = t[r]; delete n[o] } return n } t["a"] = o }, "0481": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("a2bf"), o = n("7b0b"), a = n("50c4"), s = n("a691"), c = n("65f0"); r({ target: "Array", proto: !0 }, { flat: function () { var e = arguments.length ? arguments[0] : void 0, t = o(this), n = a(t.length), r = c(t, 0); return r.length = i(r, t, t, n, 0, void 0 === e ? 1 : s(e)), r } }) }, "04a9": function (e, t, n) { }, "04d1": function (e, t, n) { var r = n("342f"), i = r.match(/firefox\/(\d+)/i); e.exports = !!i && +i[1] }, "04d3": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("857a"), o = n("af03"); r({ target: "String", proto: !0, forced: o("blink") }, { blink: function () { return i(this, "blink", "", "") } }) }, "04fb": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t["default"] = void 0; var i = r(n("7037")), o = r(n("970b")); n("0ca1"); var a = r(n("9886")), s = n("5557"), c = n("a736"), l = function e(t) { if ((0, o["default"])(this, e), !t) return console.error("Charts Missing parameters!"), !1; var n = t.clientWidth, r = t.clientHeight, i = document.createElement("canvas"); i.setAttribute("width", n), i.setAttribute("height", r), t.appendChild(i); var s = { container: t, canvas: i, render: new a["default"](i), option: null }; Object.assign(this, s) }; t["default"] = l, l.prototype.setOption = function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; if (!e || "object" !== (0, i["default"])(e)) return console.error("setOption Missing parameters!"), !1; t && this.render.graphs.forEach((function (e) { return e.animationEnd() })); var n = (0, s.deepClone)(e, !0); (0, c.mergeColor)(this, n), (0, c.grid)(this, n), (0, c.axis)(this, n), (0, c.radarAxis)(this, n), (0, c.title)(this, n), (0, c.bar)(this, n), (0, c.line)(this, n), (0, c.pie)(this, n), (0, c.radar)(this, n), (0, c.gauge)(this, n), (0, c.legend)(this, n), this.option = e, this.render.launchAnimation() }, l.prototype.resize = function () { var e = this.container, t = this.canvas, n = this.render, r = this.option, i = e.clientWidth, o = e.clientHeight; t.setAttribute("width", i), t.setAttribute("height", o), n.area = [i, o], this.setOption(r) } }, "050c": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), Object.defineProperty(t, "bezierCurveToPolyline", { enumerable: !0, get: function () { return i.bezierCurveToPolyline } }), Object.defineProperty(t, "getBezierCurveLength", { enumerable: !0, get: function () { return i.getBezierCurveLength } }), Object.defineProperty(t, "polylineToBezierCurve", { enumerable: !0, get: function () { return o["default"] } }), t["default"] = void 0; var i = n("2db9"), o = r(n("ae10")), a = { bezierCurveToPolyline: i.bezierCurveToPolyline, getBezierCurveLength: i.getBezierCurveLength, polylineToBezierCurve: o["default"] }; t["default"] = a }, "051b": function (e, t, n) { var r = n("1a14"), i = n("10db"); e.exports = n("0bad") ? function (e, t, n) { return r.f(e, t, i(1, n)) } : function (e, t, n) { return e[t] = n, e } }, "0538": function (e, t, n) { "use strict"; var r = n("1c0b"), i = n("861d"), o = [].slice, a = {}, s = function (e, t, n) { if (!(t in a)) { for (var r = [], i = 0; i < t; i++)r[i] = "a[" + i + "]"; a[t] = Function("C,a", "return new C(" + r.join(",") + ")") } return a[t](e, n) }; e.exports = Function.bind || function (e) { var t = r(this), n = o.call(arguments, 1), a = function () { var r = n.concat(o.call(arguments)); return this instanceof a ? s(t, r.length, r) : t.apply(e, r) }; return i(t.prototype) && (a.prototype = t.prototype), a } }, "057f": function (e, t, n) { var r = n("fc6a"), i = n("241c").f, o = {}.toString, a = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [], s = function (e) { try { return i(e) } catch (t) { return a.slice() } }; e.exports.f = function (e) { return a && "[object Window]" == o.call(e) ? s(e) : i(r(e)) } }, "05f5": function (e, t, n) { var r = n("7a41"), i = n("ef08").document, o = r(i) && r(i.createElement); e.exports = function (e) { return o ? i.createElement(e) : {} } }, "0621": function (e, t, n) { var r = n("9e69"), i = n("d370"), o = n("6747"), a = r ? r.isConcatSpreadable : void 0; function s(e) { return o(e) || i(e) || !!(a && e && e[a]) } e.exports = s }, "0644": function (e, t, n) { var r = n("3818"), i = 1, o = 4; function a(e) { return r(e, i | o) } e.exports = a }, "0676": function (e, t) { function n() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") } e.exports = n, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, "0680": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.axis = g; var i = r(n("7037")), o = r(n("278c")), a = r(n("9523")), s = r(n("448a")), c = n("18ad"), l = n("9d85"), u = n("becb"), h = n("5557"); function f(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function d(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? f(Object(n), !0).forEach((function (t) { (0, a["default"])(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : f(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } var p = { xAxisConfig: l.xAxisConfig, yAxisConfig: l.yAxisConfig }, v = (Math.min, Math.max, Math.abs), m = Math.pow; function g(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.xAxis, r = t.yAxis, i = t.series, o = []; n && r && i && (o = y(n, r), o = b(o), o = o.filter((function (e) { var t = e.show; return t })), o = x(o), o = w(o, i), o = P(o), o = D(o, e), o = H(o, e), o = I(o, e), o = N(o, e)), (0, c.doUpdate)({ chart: e, series: o, key: "axisLine", getGraphConfig: R }), (0, c.doUpdate)({ chart: e, series: o, key: "axisTick", getGraphConfig: $ }), (0, c.doUpdate)({ chart: e, series: o, key: "axisLabel", getGraphConfig: q }), (0, c.doUpdate)({ chart: e, series: o, key: "axisName", getGraphConfig: J }), (0, c.doUpdate)({ chart: e, series: o, key: "splitLine", getGraphConfig: te }), e.axisData = o } function y(e, t) { var n, r, i = [], o = []; e instanceof Array ? (n = i).push.apply(n, (0, s["default"])(e)) : i.push(e); t instanceof Array ? (r = o).push.apply(r, (0, s["default"])(t)) : o.push(t); return i.splice(2), o.splice(2), i = i.map((function (e, t) { return d(d({}, e), {}, { index: t, axis: "x" }) })), o = o.map((function (e, t) { return d(d({}, e), {}, { index: t, axis: "y" }) })), [].concat((0, s["default"])(i), (0, s["default"])(o)) } function b(e) { var t = e.filter((function (e) { var t = e.axis; return "x" === t })), n = e.filter((function (e) { var t = e.axis; return "y" === t })); return t = t.map((function (e) { return (0, u.deepMerge)((0, h.deepClone)(l.xAxisConfig), e) })), n = n.map((function (e) { return (0, u.deepMerge)((0, h.deepClone)(l.yAxisConfig), e) })), [].concat((0, s["default"])(t), (0, s["default"])(n)) } function x(e) { var t = e.filter((function (e) { var t = e.data; return "value" === t })), n = e.filter((function (e) { var t = e.data; return "value" !== t })); return t.forEach((function (e) { "boolean" !== typeof e.boundaryGap && (e.boundaryGap = !1) })), n.forEach((function (e) { "boolean" !== typeof e.boundaryGap && (e.boundaryGap = !0) })), [].concat((0, s["default"])(t), (0, s["default"])(n)) } function w(e, t) { var n = e.filter((function (e) { var t = e.data; return "value" === t })), r = e.filter((function (e) { var t = e.data; return t instanceof Array })); return n = _(n, t), r = z(r), [].concat((0, s["default"])(n), (0, s["default"])(r)) } function _(e, t) { return e.map((function (e) { var n = C(e, t), r = k(e, n), i = (0, o["default"])(r, 2), a = i[0], s = i[1], c = E(a, s, e), l = e.axisLabel.formatter, u = []; return u = a < 0 && s > 0 ? A(a, s, c) : L(a, s, c), u = u.map((function (e) { return parseFloat(e.toFixed(2)) })), d(d({}, e), {}, { maxValue: u.slice(-1)[0], minValue: u[0], label: j(u, l) }) })) } function C(e, t) { if (t = t.filter((function (e) { var t = e.show, n = e.type; return !1 !== t && "pie" !== n })), 0 === t.length) return [0, 0]; var n = e.index, r = e.axis; t = O(t); var i = r + "Axis", o = t.filter((function (e) { return e[i] === n })); return o.length || (o = t), M(o) } function M(e) { if (e) { var t = Math.min.apply(Math, (0, s["default"])(e.map((function (e) { var t = e.data; return Math.min.apply(Math, (0, s["default"])((0, u.filterNonNumber)(t))) })))), n = Math.max.apply(Math, (0, s["default"])(e.map((function (e) { var t = e.data; return Math.max.apply(Math, (0, s["default"])((0, u.filterNonNumber)(t))) })))); return [t, n] } } function O(e) { var t = (0, h.deepClone)(e, !0); return e.forEach((function (n, r) { var i = (0, u.mergeSameStackData)(n, e); t[r].data = i })), t } function k(e, t) { var n = e.min, r = e.max, a = e.axis, s = (0, o["default"])(t, 2), c = s[0], l = s[1], u = (0, i["default"])(n), h = (0, i["default"])(r); if (T(n) || (n = p[a + "AxisConfig"].min, u = "string"), T(r) || (r = p[a + "AxisConfig"].max, h = "string"), "string" === u) { n = parseInt(c - v(c * parseFloat(n) / 100)); var f = S(n); n = parseFloat((n / f - .1).toFixed(1)) * f } if ("string" === h) { r = parseInt(l + v(l * parseFloat(r) / 100)); var d = S(r); r = parseFloat((r / d + .1).toFixed(1)) * d } return [n, r] } function S(e) { var t = v(e).toString(), n = t.length, r = t.replace(/0*$/g, "").indexOf("0"), i = n - 1; return -1 !== r && (i -= r), m(10, i) } function T(e) { var t = (0, i["default"])(e), n = "string" === t && /^\d+%$/.test(e), r = "number" === t; return n || r } function A(e, t, n) { var r = [], i = [], o = 0, a = 0; do { r.push(o -= n) } while (o > e); do { i.push(a += n) } while (a < t); return [].concat((0, s["default"])(r.reverse()), [0], (0, s["default"])(i)) } function L(e, t, n) { var r = [e], i = e; do { r.push(i += n) } while (i < t); return r } function j(e, t) { return t ? ("string" === typeof t && (e = e.map((function (e) { return t.replace("{value}", e) }))), "function" === typeof t && (e = e.map((function (e, n) { return t({ value: e, index: n }) }))), e) : e } function z(e) { return e.map((function (e) { var t = e.data, n = e.axisLabel.formatter; return d(d({}, e), {}, { label: j(t, n) }) })) } function E(e, t, n) { var r = n.interval, i = n.minInterval, o = n.maxInterval, a = n.splitNumber, s = n.axis, c = p[s + "AxisConfig"]; if ("number" !== typeof r && (r = c.interval), "number" !== typeof i && (i = c.minInterval), "number" !== typeof o && (o = c.maxInterval), "number" !== typeof a && (a = c.splitNumber), "number" === typeof r) return r; var l = parseInt((t - e) / (a - 1)); return l.toString().length > 1 && (l = parseInt(l.toString().replace(/\d$/, "0"))), 0 === l && (l = 1), "number" === typeof i && l < i ? i : "number" === typeof o && l > o ? o : l } function P(e) { var t = e.filter((function (e) { var t = e.axis; return "x" === t })), n = e.filter((function (e) { var t = e.axis; return "y" === t })); return t[0] && !t[0].position && (t[0].position = l.xAxisConfig.position), t[1] && !t[1].position && (t[1].position = "bottom" === t[0].position ? "top" : "bottom"), n[0] && !n[0].position && (n[0].position = l.yAxisConfig.position), n[1] && !n[1].position && (n[1].position = "left" === n[0].position ? "right" : "left"), [].concat((0, s["default"])(t), (0, s["default"])(n)) } function D(e, t) { var n = t.gridArea, r = n.x, i = n.y, o = n.w, a = n.h; return e = e.map((function (e) { var t = e.position, n = []; return "left" === t ? n = [[r, i], [r, i + a]].reverse() : "right" === t ? n = [[r + o, i], [r + o, i + a]].reverse() : "top" === t ? n = [[r, i], [r + o, i]] : "bottom" === t && (n = [[r, i + a], [r + o, i + a]]), d(d({}, e), {}, { linePosition: n }) })), e } function H(e, t) { return e.map((function (e) { var t = e.axis, n = e.linePosition, r = e.position, i = e.label, a = e.boundaryGap; "boolean" !== typeof a && (a = p[t + "AxisConfig"].boundaryGap); var s = i.length, c = (0, o["default"])(n, 2), l = (0, o["default"])(c[0], 2), u = l[0], h = l[1], f = (0, o["default"])(c[1], 2), v = f[0], m = f[1], g = "x" === t ? v - u : m - h, y = g / (a ? s : s - 1), b = new Array(s).fill(0).map((function (e, n) { return "x" === t ? [u + y * (a ? n + .5 : n), h] : [u, h + y * (a ? n + .5 : n)] })), x = V(t, a, r, b, y); return d(d({}, e), {}, { tickPosition: b, tickLinePosition: x, tickGap: y }) })) } function V(e, t, n, r, i) { var a = "x" === e ? 1 : 0, s = 5; "x" === e && "top" === n && (s = -5), "y" === e && "left" === n && (s = -5); var c = r.map((function (e) { var t = (0, h.deepClone)(e); return t[a] += s, [(0, h.deepClone)(e), t] })); return t ? (a = "x" === e ? 0 : 1, s = i / 2, c.forEach((function (e) { var t = (0, o["default"])(e, 2), n = t[0], r = t[1]; n[a] += s, r[a] += s })), c) : c } function I(e, t) { return e.map((function (e) { var t = e.nameGap, n = e.nameLocation, r = e.position, i = e.linePosition, a = (0, o["default"])(i, 2), c = a[0], l = a[1], u = (0, s["default"])(c); "end" === n && (u = (0, s["default"])(l)), "center" === n && (u[0] = (c[0] + l[0]) / 2, u[1] = (c[1] + l[1]) / 2); var h = 0; "top" === r && "center" === n && (h = 1), "bottom" === r && "center" === n && (h = 1), "left" === r && "center" !== n && (h = 1), "right" === r && "center" !== n && (h = 1); var f = t; return "top" === r && "end" !== n && (f *= -1), "left" === r && "start" !== n && (f *= -1), "bottom" === r && "start" === n && (f *= -1), "right" === r && "end" === n && (f *= -1), u[h] += f, d(d({}, e), {}, { namePosition: u }) })) } function N(e, t) { var n = t.gridArea, r = n.w, i = n.h; return e.map((function (e) { var t = e.tickLinePosition, n = e.position, a = e.boundaryGap, c = 0, l = r; "top" !== n && "bottom" !== n || (c = 1), "top" !== n && "bottom" !== n || (l = i), "right" !== n && "bottom" !== n || (l *= -1); var u = t.map((function (e) { var t = (0, o["default"])(e, 1), n = t[0], r = (0, s["default"])(n); return r[c] += l, [(0, s["default"])(n), r] })); return a || u.shift(), d(d({}, e), {}, { splitLinePosition: u }) })) } function R(e) { var t = e.animationCurve, n = e.animationFrame, r = e.rLevel; return [{ name: "polyline", index: r, visible: e.axisLine.show, animationCurve: t, animationFrame: n, shape: F(e), style: Y(e) }] } function F(e) { var t = e.linePosition; return { points: t } } function Y(e) { return e.axisLine.style } function $(e) { var t = e.animationCurve, n = e.animationFrame, r = e.rLevel, i = B(e), o = W(e); return i.map((function (i) { return { name: "polyline", index: r, visible: e.axisTick.show, animationCurve: t, animationFrame: n, shape: i, style: o } })) } function B(e) { var t = e.tickLinePosition; return t.map((function (e) { return { points: e } })) } function W(e) { return e.axisTick.style } function q(e) { var t = e.animationCurve, n = e.animationFrame, r = e.rLevel, i = U(e), o = G(e, i); return i.map((function (i, a) { return { name: "text", index: r, visible: e.axisLabel.show, animationCurve: t, animationFrame: n, shape: i, style: o[a], setGraphCenter: function () { } } })) } function U(e) { var t = e.label, n = e.tickPosition, r = e.position; return n.map((function (e, n) { return { position: K(e, r), content: t[n].toString() } })) } function K(e, t) { var n = 0, r = 10; return "top" !== t && "bottom" !== t || (n = 1), "top" !== t && "left" !== t || (r = -10), e = (0, h.deepClone)(e), e[n] += r, e } function G(e, t) { var n = e.position, r = e.axisLabel.style, i = X(n); r = (0, u.deepMerge)(i, r); var o = t.map((function (e) { var t = e.position; return d(d({}, r), {}, { graphCenter: t }) })); return o } function X(e) { return "left" === e ? { textAlign: "right", textBaseline: "middle" } : "right" === e ? { textAlign: "left", textBaseline: "middle" } : "top" === e ? { textAlign: "center", textBaseline: "bottom" } : "bottom" === e ? { textAlign: "center", textBaseline: "top" } : void 0 } function J(e) { var t = e.animationCurve, n = e.animationFrame, r = e.rLevel; return [{ name: "text", index: r, animationCurve: t, animationFrame: n, shape: Q(e), style: Z(e) }] } function Q(e) { var t = e.name, n = e.namePosition; return { content: t, position: n } } function Z(e) { var t = e.nameLocation, n = e.position, r = e.nameTextStyle, i = ee(n, t); return (0, u.deepMerge)(i, r) } function ee(e, t) { return "top" === e && "start" === t || "bottom" === e && "start" === t || "left" === e && "center" === t ? { textAlign: "right", textBaseline: "middle" } : "top" === e && "end" === t || "bottom" === e && "end" === t || "right" === e && "center" === t ? { textAlign: "left", textBaseline: "middle" } : "top" === e && "center" === t || "left" === e && "end" === t || "right" === e && "end" === t ? { textAlign: "center", textBaseline: "bottom" } : "bottom" === e && "center" === t || "left" === e && "start" === t || "right" === e && "start" === t ? { textAlign: "center", textBaseline: "top" } : void 0 } function te(e) { var t = e.animationCurve, n = e.animationFrame, r = e.rLevel, i = ne(e), o = re(e); return i.map((function (i) { return { name: "polyline", index: r, visible: e.splitLine.show, animationCurve: t, animationFrame: n, shape: i, style: o } })) } function ne(e) { var t = e.splitLinePosition; return t.map((function (e) { return { points: e } })) } function re(e) { return e.splitLine.style } }, "06c5": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return i })); n("fb6a"), n("d3b7"), n("b0c0"), n("a630"), n("3ca3"); var r = n("6b75"); function i(e, t) { if (e) { if ("string" === typeof e) return Object(r["a"])(e, t); var n = Object.prototype.toString.call(e).slice(8, -1); return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Object(r["a"])(e, t) : void 0 } } }, "06cf": function (e, t, n) { var r = n("83ab"), i = n("d1e7"), o = n("5c6c"), a = n("fc6a"), s = n("a04b"), c = n("5135"), l = n("0cfb"), u = Object.getOwnPropertyDescriptor; t.f = r ? u : function (e, t) { if (e = a(e), t = s(t), l) try { return u(e, t) } catch (n) { } if (c(e, t)) return o(!i.f.call(e, t), e[t]) } }, "06f4": function (e, t, n) { "use strict"; n("b2a3"), n("2ee9") }, "072d": function (e, t, n) { "use strict"; var r = n("0bad"), i = n("9876"), o = n("fed5"), a = n("1917"), s = n("0983"), c = n("9fbb"), l = Object.assign; e.exports = !l || n("4b8b")((function () { var e = {}, t = {}, n = Symbol(), r = "abcdefghijklmnopqrst"; return e[n] = 7, r.split("").forEach((function (e) { t[e] = e })), 7 != l({}, e)[n] || Object.keys(l({}, t)).join("") != r })) ? function (e, t) { var n = s(e), l = arguments.length, u = 1, h = o.f, f = a.f; while (l > u) { var d, p = c(arguments[u++]), v = h ? i(p).concat(h(p)) : i(p), m = v.length, g = 0; while (m > g) d = v[g++], r && !f.call(p, d) || (n[d] = p[d]) } return n } : l }, "078a": function (e, t, n) { }, "07ac": function (e, t, n) { var r = n("23e7"), i = n("6f53").values; r({ target: "Object", stat: !0 }, { values: function (e) { return i(e) } }) }, "07c7": function (e, t) { function n() { return !1 } e.exports = n }, "084e": function (e, t, n) { "use strict"; var r = n("9c0c"), i = n("512c"), o = n("0983"), a = n("c4c1"), s = n("6d2f"), c = n("d16a"), l = n("4a47"), u = n("23dd"); i(i.S + i.F * !n("8771")((function (e) { Array.from(e) })), "Array", { from: function (e) { var t, n, i, h, f = o(e), d = "function" == typeof this ? this : Array, p = arguments.length, v = p > 1 ? arguments[1] : void 0, m = void 0 !== v, g = 0, y = u(f); if (m && (v = r(v, p > 2 ? arguments[2] : void 0, 2)), void 0 == y || d == Array && s(y)) for (t = c(f.length), n = new d(t); t > g; g++)l(n, g, m ? v(f[g], g) : f[g]); else for (h = y.call(f), n = new d; !(i = h.next()).done; g++)l(n, g, m ? a(h, v, [i.value, g], !0) : i.value); return n.length = g, n } }) }, "087d": function (e, t) { function n(e, t) { var n = -1, r = t.length, i = e.length; while (++n < r) e[i + n] = t[n]; return e } e.exports = n }, "08cc": function (e, t, n) { var r = n("1a8c"); function i(e) { return e === e && !r(e) } e.exports = i }, "0983": function (e, t, n) { var r = n("c901"); e.exports = function (e) { return Object(r(e)) } }, "099a": function (e, t) { function n(e, t, n) { var r = n - 1, i = e.length; while (++r < i) if (e[r] === t) return r; return -1 } e.exports = n }, "09d9": function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("8e8e"), c = n.n(s), l = n("4d91"), u = n("daa3"), h = n("4d26"), f = n.n(h), d = n("0c63"), p = n("9b57"), v = n.n(p), m = n("b488"), g = n("18a7"), y = n("7b05"), b = n("6a21"), x = { disabled: l["a"].bool, activeClassName: l["a"].string, activeStyle: l["a"].any }, w = { name: "TouchFeedback", mixins: [m["a"]], props: Object(u["t"])(x, { disabled: !1 }), data: function () { return { active: !1 } }, mounted: function () { var e = this; this.$nextTick((function () { e.disabled && e.active && e.setState({ active: !1 }) })) }, methods: { triggerEvent: function (e, t, n) { this.$emit(e, n), t !== this.active && this.setState({ active: t }) }, onTouchStart: function (e) { this.triggerEvent("touchstart", !0, e) }, onTouchMove: function (e) { this.triggerEvent("touchmove", !1, e) }, onTouchEnd: function (e) { this.triggerEvent("touchend", !1, e) }, onTouchCancel: function (e) { this.triggerEvent("touchcancel", !1, e) }, onMouseDown: function (e) { this.triggerEvent("mousedown", !0, e) }, onMouseUp: function (e) { this.triggerEvent("mouseup", !1, e) }, onMouseLeave: function (e) { this.triggerEvent("mouseleave", !1, e) } }, render: function () { var e = this.$props, t = e.disabled, n = e.activeClassName, r = void 0 === n ? "" : n, o = e.activeStyle, a = void 0 === o ? {} : o, s = this.$slots["default"]; if (1 !== s.length) return Object(b["a"])(!1, "m-feedback缁勪欢鍙兘鍖呭惈涓�涓瓙鍏冪礌"), null; var c = { on: t ? {} : { touchstart: this.onTouchStart, touchmove: this.onTouchMove, touchend: this.onTouchEnd, touchcancel: this.onTouchCancel, mousedown: this.onMouseDown, mouseup: this.onMouseUp, mouseleave: this.onMouseLeave } }; return !t && this.active && (c = i()({}, c, { style: a, class: r })), Object(y["a"])(s, c) } }, _ = w, C = { name: "InputHandler", props: { prefixCls: l["a"].string, disabled: l["a"].bool }, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.disabled, i = { props: { disabled: r, activeClassName: n + "-handler-active" }, on: Object(u["k"])(this) }; return e(_, i, [e("span", [this.$slots["default"]])]) } }, M = C; function O() { } function k(e) { e.preventDefault() } function S(e) { return e.replace(/[^\w\.-]+/g, "") } var T = 200, A = 600, L = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1, j = function (e) { return void 0 !== e && null !== e }, z = function (e, t) { return t === e || "number" === typeof t && "number" === typeof e && isNaN(t) && isNaN(e) }, E = { value: l["a"].oneOfType([l["a"].number, l["a"].string]), defaultValue: l["a"].oneOfType([l["a"].number, l["a"].string]), focusOnUpDown: l["a"].bool, autoFocus: l["a"].bool, prefixCls: l["a"].string, tabIndex: l["a"].oneOfType([l["a"].string, l["a"].number]), placeholder: l["a"].string, disabled: l["a"].bool, readOnly: l["a"].bool, max: l["a"].number, min: l["a"].number, step: l["a"].oneOfType([l["a"].number, l["a"].string]), upHandler: l["a"].any, downHandler: l["a"].any, useTouch: l["a"].bool, formatter: l["a"].func, parser: l["a"].func, precision: l["a"].number, required: l["a"].bool, pattern: l["a"].string, decimalSeparator: l["a"].string, autoComplete: l["a"].string, title: l["a"].string, name: l["a"].string, id: l["a"].string }, P = { name: "VCInputNumber", mixins: [m["a"]], model: { prop: "value", event: "change" }, props: Object(u["t"])(E, { focusOnUpDown: !0, useTouch: !1, prefixCls: "rc-input-number", min: -L, step: 1, parser: S, required: !1, autoComplete: "off" }), data: function () { var e = Object(u["l"])(this); this.prevProps = i()({}, e); var t = void 0; t = "value" in e ? this.value : this.defaultValue; var n = this.getValidValue(this.toNumber(t)); return { inputValue: this.toPrecisionAsStep(n), sValue: n, focused: this.autoFocus } }, mounted: function () { var e = this; this.$nextTick((function () { e.autoFocus && !e.disabled && e.focus(), e.updatedFunc() })) }, updated: function () { var e = this, t = this.$props, n = t.value, r = t.max, o = t.min, a = this.$data.focused, s = this.prevProps, c = Object(u["l"])(this); if (s) { if (!z(s.value, n) || !z(s.max, r) || !z(s.min, o)) { var l = a ? n : this.getValidValue(n), h = void 0; h = this.pressingUpOrDown ? l : this.inputting ? this.rawInput : this.toPrecisionAsStep(l), this.setState({ sValue: l, inputValue: h }) } var f = "value" in c ? n : this.sValue; "max" in c && s.max !== r && "number" === typeof f && f > r && this.$emit("change", r), "min" in c && s.min !== o && "number" === typeof f && f < o && this.$emit("change", o) } this.prevProps = i()({}, c), this.$nextTick((function () { e.updatedFunc() })) }, beforeDestroy: function () { this.stop() }, methods: { updatedFunc: function () { var e = this.$refs.inputRef; try { if (void 0 !== this.cursorStart && this.focused) if (this.partRestoreByAfter(this.cursorAfter) || this.sValue === this.value) { if (this.currentValue === e.value) switch (this.lastKeyCode) { case g["a"].BACKSPACE: this.fixCaret(this.cursorStart - 1, this.cursorStart - 1); break; case g["a"].DELETE: this.fixCaret(this.cursorStart + 1, this.cursorStart + 1); break; default: } } else { var t = this.cursorStart + 1; this.cursorAfter ? this.lastKeyCode === g["a"].BACKSPACE ? t = this.cursorStart - 1 : this.lastKeyCode === g["a"].DELETE && (t = this.cursorStart) : t = e.value.length, this.fixCaret(t, t) } } catch (n) { } this.lastKeyCode = null, this.pressingUpOrDown && (this.focusOnUpDown && this.focused && document.activeElement !== e && this.focus(), this.pressingUpOrDown = !1) }, onKeyDown: function (e) { if (e.keyCode === g["a"].UP) { var t = this.getRatio(e); this.up(e, t), this.stop() } else if (e.keyCode === g["a"].DOWN) { var n = this.getRatio(e); this.down(e, n), this.stop() } else e.keyCode === g["a"].ENTER && this.$emit("pressEnter", e); this.recordCursorPosition(), this.lastKeyCode = e.keyCode; for (var r = arguments.length, i = Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++)i[o - 1] = arguments[o]; this.$emit.apply(this, ["keydown", e].concat(v()(i))) }, onKeyUp: function (e) { this.stop(), this.recordCursorPosition(); for (var t = arguments.length, n = Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++)n[r - 1] = arguments[r]; this.$emit.apply(this, ["keyup", e].concat(v()(n))) }, onChange: function (e) { this.focused && (this.inputting = !0), this.rawInput = this.parser(this.getValueFromEvent(e)), this.setState({ inputValue: this.rawInput }), this.$emit("change", this.toNumber(this.rawInput)) }, onFocus: function () { this.setState({ focused: !0 }); for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; this.$emit.apply(this, ["focus"].concat(v()(t))) }, onBlur: function () { this.inputting = !1, this.setState({ focused: !1 }); var e = this.getCurrentValidValue(this.inputValue), t = this.setValue(e); if (this.$listeners.blur) { var n = this.$refs.inputRef.value, r = this.getInputDisplayValue({ focused: !1, sValue: t }); this.$refs.inputRef.value = r; for (var i = arguments.length, o = Array(i), a = 0; a < i; a++)o[a] = arguments[a]; this.$emit.apply(this, ["blur"].concat(v()(o))), this.$refs.inputRef.value = n } }, getCurrentValidValue: function (e) { var t = e; return t = "" === t ? "" : this.isNotCompleteNumber(parseFloat(t, 10)) ? this.sValue : this.getValidValue(t), this.toNumber(t) }, getRatio: function (e) { var t = 1; return e.metaKey || e.ctrlKey ? t = .1 : e.shiftKey && (t = 10), t }, getValueFromEvent: function (e) { var t = e.target.value.trim().replace(/銆�/g, "."); return j(this.decimalSeparator) && (t = t.replace(this.decimalSeparator, ".")), t }, getValidValue: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.min, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.max, r = parseFloat(e, 10); return isNaN(r) ? e : (r < t && (r = t), r > n && (r = n), r) }, setValue: function (e, t) { var n = this.$props.precision, r = this.isNotCompleteNumber(parseFloat(e, 10)) ? null : parseFloat(e, 10), i = this.$data, o = i.sValue, a = void 0 === o ? null : o, s = i.inputValue, c = void 0 === s ? null : s, l = "number" === typeof r ? r.toFixed(n) : "" + r, h = r !== a || l !== "" + c; return Object(u["s"])(this, "value") ? this.setState({ inputValue: this.toPrecisionAsStep(this.sValue) }, t) : this.setState({ sValue: r, inputValue: this.toPrecisionAsStep(e) }, t), h && this.$emit("change", r), r }, getPrecision: function (e) { if (j(this.precision)) return this.precision; var t = e.toString(); if (t.indexOf("e-") >= 0) return parseInt(t.slice(t.indexOf("e-") + 2), 10); var n = 0; return t.indexOf(".") >= 0 && (n = t.length - t.indexOf(".") - 1), n }, getMaxPrecision: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1; if (j(this.precision)) return this.precision; var n = this.step, r = this.getPrecision(t), i = this.getPrecision(n), o = this.getPrecision(e); return e ? Math.max(o, r + i) : r + i }, getPrecisionFactor: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1, n = this.getMaxPrecision(e, t); return Math.pow(10, n) }, getInputDisplayValue: function (e) { var t = e || this.$data, n = t.focused, r = t.inputValue, i = t.sValue, o = void 0; o = n ? r : this.toPrecisionAsStep(i), void 0 !== o && null !== o || (o = ""); var a = this.formatWrapper(o); return j(this.$props.decimalSeparator) && (a = a.toString().replace(".", this.$props.decimalSeparator)), a }, recordCursorPosition: function () { try { var e = this.$refs.inputRef; this.cursorStart = e.selectionStart, this.cursorEnd = e.selectionEnd, this.currentValue = e.value, this.cursorBefore = e.value.substring(0, this.cursorStart), this.cursorAfter = e.value.substring(this.cursorEnd) } catch (t) { } }, fixCaret: function (e, t) { if (void 0 !== e && void 0 !== t && this.$refs.inputRef && this.$refs.inputRef.value) try { var n = this.$refs.inputRef, r = n.selectionStart, i = n.selectionEnd; e === r && t === i || n.setSelectionRange(e, t) } catch (o) { } }, restoreByAfter: function (e) { if (void 0 === e) return !1; var t = this.$refs.inputRef.value, n = t.lastIndexOf(e); if (-1 === n) return !1; var r = this.cursorBefore.length; return this.lastKeyCode === g["a"].DELETE && this.cursorBefore.charAt(r - 1) === e[0] ? (this.fixCaret(r, r), !0) : n + e.length === t.length && (this.fixCaret(n, n), !0) }, partRestoreByAfter: function (e) { var t = this; return void 0 !== e && Array.prototype.some.call(e, (function (n, r) { var i = e.substring(r); return t.restoreByAfter(i) })) }, focus: function () { this.$refs.inputRef.focus(), this.recordCursorPosition() }, blur: function () { this.$refs.inputRef.blur() }, formatWrapper: function (e) { return this.formatter ? this.formatter(e) : e }, toPrecisionAsStep: function (e) { if (this.isNotCompleteNumber(e) || "" === e) return e; var t = Math.abs(this.getMaxPrecision(e)); return isNaN(t) ? e.toString() : Number(e).toFixed(t) }, isNotCompleteNumber: function (e) { return isNaN(e) || "" === e || null === e || e && e.toString().indexOf(".") === e.toString().length - 1 }, toNumber: function (e) { var t = this.$props, n = t.precision, r = t.autoFocus, i = this.focused, o = void 0 === i ? r : i, a = e && e.length > 16 && o; return this.isNotCompleteNumber(e) || a ? e : j(n) ? Math.round(e * Math.pow(10, n)) / Math.pow(10, n) : Number(e) }, upStep: function (e, t) { var n = this.step, r = this.getPrecisionFactor(e, t), i = Math.abs(this.getMaxPrecision(e, t)), o = ((r * e + r * n * t) / r).toFixed(i); return this.toNumber(o) }, downStep: function (e, t) { var n = this.step, r = this.getPrecisionFactor(e, t), i = Math.abs(this.getMaxPrecision(e, t)), o = ((r * e - r * n * t) / r).toFixed(i); return this.toNumber(o) }, stepFn: function (e, t) { var n = this, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1, i = arguments[3]; if (this.stop(), t && t.preventDefault(), !this.disabled) { var o = this.max, a = this.min, s = this.getCurrentValidValue(this.inputValue) || 0; if (!this.isNotCompleteNumber(s)) { var c = this[e + "Step"](s, r), l = c > o || c < a; c > o ? c = o : c < a && (c = a), this.setValue(c), this.setState({ focused: !0 }), l || (this.autoStepTimer = setTimeout((function () { n[e](t, r, !0) }), i ? T : A)) } } }, stop: function () { this.autoStepTimer && clearTimeout(this.autoStepTimer) }, down: function (e, t, n) { this.pressingUpOrDown = !0, this.stepFn("down", e, t, n) }, up: function (e, t, n) { this.pressingUpOrDown = !0, this.stepFn("up", e, t, n) }, handleInputClick: function () { this.$emit("click") } }, render: function () { var e, t = arguments[0], n = this.$props, r = n.prefixCls, i = n.disabled, o = n.readOnly, s = n.useTouch, c = n.autoComplete, l = n.upHandler, h = n.downHandler, d = f()((e = {}, a()(e, r, !0), a()(e, r + "-disabled", i), a()(e, r + "-focused", this.focused), e)), p = "", v = "", m = this.sValue; if (m || 0 === m) if (isNaN(m)) p = r + "-handler-up-disabled", v = r + "-handler-down-disabled"; else { var g = Number(m); g >= this.max && (p = r + "-handler-up-disabled"), g <= this.min && (v = r + "-handler-down-disabled") } var y = !this.readOnly && !this.disabled, b = this.getInputDisplayValue(), x = void 0, w = void 0; s ? (x = { touchstart: y && !p ? this.up : O, touchend: this.stop }, w = { touchstart: y && !v ? this.down : O, touchend: this.stop }) : (x = { mousedown: y && !p ? this.up : O, mouseup: this.stop, mouseleave: this.stop }, w = { mousedown: y && !v ? this.down : O, mouseup: this.stop, mouseleave: this.stop }); var _ = !!p || i || o, C = !!v || i || o, S = Object(u["k"])(this), T = S.mouseenter, A = void 0 === T ? O : T, L = S.mouseleave, j = void 0 === L ? O : L, z = S.mouseover, E = void 0 === z ? O : z, P = S.mouseout, D = void 0 === P ? O : P, H = { on: { mouseenter: A, mouseleave: j, mouseover: E, mouseout: D }, class: d, attrs: { title: this.$props.title } }, V = { props: { disabled: _, prefixCls: r }, attrs: { unselectable: "unselectable", role: "button", "aria-label": "Increase Value", "aria-disabled": !!_ }, class: r + "-handler " + r + "-handler-up " + p, on: x, ref: "up" }, I = { props: { disabled: C, prefixCls: r }, attrs: { unselectable: "unselectable", role: "button", "aria-label": "Decrease Value", "aria-disabled": !!C }, class: r + "-handler " + r + "-handler-down " + v, on: w, ref: "down" }; return t("div", H, [t("div", { class: r + "-handler-wrap" }, [t(M, V, [l || t("span", { attrs: { unselectable: "unselectable" }, class: r + "-handler-up-inner", on: { click: k } })]), t(M, I, [h || t("span", { attrs: { unselectable: "unselectable" }, class: r + "-handler-down-inner", on: { click: k } })])]), t("div", { class: r + "-input-wrap" }, [t("input", { attrs: { role: "spinbutton", "aria-valuemin": this.min, "aria-valuemax": this.max, "aria-valuenow": m, required: this.required, type: this.type, placeholder: this.placeholder, tabIndex: this.tabIndex, autoComplete: c, readOnly: this.readOnly, disabled: this.disabled, max: this.max, min: this.min, step: this.step, name: this.name, title: this.title, id: this.id, pattern: this.pattern }, on: { click: this.handleInputClick, focus: this.onFocus, blur: this.onBlur, keydown: y ? this.onKeyDown : O, keyup: y ? this.onKeyUp : O, input: this.onChange }, class: r + "-input", ref: "inputRef", domProps: { value: b } })])]) } }, D = n("9cba"), H = n("db14"), V = { prefixCls: l["a"].string, min: l["a"].number, max: l["a"].number, value: l["a"].oneOfType([l["a"].number, l["a"].string]), step: l["a"].oneOfType([l["a"].number, l["a"].string]), defaultValue: l["a"].oneOfType([l["a"].number, l["a"].string]), tabIndex: l["a"].number, disabled: l["a"].bool, size: l["a"].oneOf(["large", "small", "default"]), formatter: l["a"].func, parser: l["a"].func, decimalSeparator: l["a"].string, placeholder: l["a"].string, name: l["a"].string, id: l["a"].string, precision: l["a"].number, autoFocus: l["a"].bool }, I = { name: "AInputNumber", model: { prop: "value", event: "change" }, props: Object(u["t"])(V, { step: 1 }), inject: { configProvider: { default: function () { return D["a"] } } }, methods: { focus: function () { this.$refs.inputNumberRef.focus() }, blur: function () { this.$refs.inputNumberRef.blur() } }, render: function () { var e, t = arguments[0], n = Object(u["l"])(this), r = n.prefixCls, o = n.size, s = c()(n, ["prefixCls", "size"]), l = this.configProvider.getPrefixCls, h = l("input-number", r), p = f()((e = {}, a()(e, h + "-lg", "large" === o), a()(e, h + "-sm", "small" === o), e)), v = t(d["a"], { attrs: { type: "up" }, class: h + "-handler-up-inner" }), m = t(d["a"], { attrs: { type: "down" }, class: h + "-handler-down-inner" }), g = { props: i()({ prefixCls: h, upHandler: v, downHandler: m }, s), class: p, ref: "inputNumberRef", on: Object(u["k"])(this) }; return t(P, g) }, install: function (e) { e.use(H["a"]), e.component(I.name, I) } }; t["a"] = I }, "0ac8": function (e, t, n) { var r = n("23e7"), i = n("8eb5"); r({ target: "Math", stat: !0, forced: i != Math.expm1 }, { expm1: i }) }, "0ad5": function (e, t, n) { }, "0ae2": function (e, t, n) { var r = n("9876"), i = n("fed5"), o = n("1917"); e.exports = function (e) { var t = r(e), n = i.f; if (n) { var a, s = n(e), c = o.f, l = 0; while (s.length > l) c.call(e, a = s[l++]) && t.push(a) } return t } }, "0b07": function (e, t, n) { var r = n("34ac"), i = n("3698"); function o(e, t) { var n = i(e, t); return r(n) ? n : void 0 } e.exports = o }, "0b25": function (e, t, n) { var r = n("a691"), i = n("50c4"); e.exports = function (e) { if (void 0 === e) return 0; var t = r(e), n = i(t); if (t !== n) throw RangeError("Wrong length or index"); return n } }, "0b42": function (e, t, n) { var r = n("861d"), i = n("e8b5"), o = n("b622"), a = o("species"); e.exports = function (e) { var t; return i(e) && (t = e.constructor, "function" != typeof t || t !== Array && !i(t.prototype) ? r(t) && (t = t[a], null === t && (t = void 0)) : t = void 0), void 0 === t ? Array : t } }, "0b99": function (e, t, n) { "use strict"; var r = n("19fa")(!0); n("393a")(String, "String", (function (e) { this._t = String(e), this._i = 0 }), (function () { var e, t = this._t, n = this._i; return n >= t.length ? { value: void 0, done: !0 } : (e = r(t, n), this._i += e.length, { value: e, done: !1 }) })) }, "0bad": function (e, t, n) { e.exports = !n("4b8b")((function () { return 7 != Object.defineProperty({}, "a", { get: function () { return 7 } }).a })) }, "0bb7": function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("8bbf"), a = n.n(o), s = n("46cf"), c = n.n(s), l = n("4d91"), u = n("b488"), h = n("daa3"), f = n("7b05"), d = n("18a7"), p = n("c1df"), v = n.n(p), m = { DATE_ROW_COUNT: 6, DATE_COL_COUNT: 7 }, g = { functional: !0, render: function (e, t) { for (var n = arguments[0], r = t.props, i = r.value, o = i.localeData(), a = r.prefixCls, s = [], c = [], l = o.firstDayOfWeek(), u = void 0, h = v()(), f = 0; f < m.DATE_COL_COUNT; f++) { var d = (l + f) % m.DATE_COL_COUNT; h.day(d), s[f] = o.weekdaysMin(h), c[f] = o.weekdaysShort(h) } r.showWeekNumber && (u = n("th", { attrs: { role: "columnheader" }, class: a + "-column-header " + a + "-week-number-header" }, [n("span", { class: a + "-column-header-inner" }, ["x"])])); var p = c.map((function (e, t) { return n("th", { key: t, attrs: { role: "columnheader", title: e }, class: a + "-column-header" }, [n("span", { class: a + "-column-header-inner" }, [s[t]])]) })); return n("thead", [n("tr", { attrs: { role: "row" } }, [u, p])]) } }, y = n("6042"), b = n.n(y), x = n("4d26"), w = n.n(x), _ = { disabledHours: function () { return [] }, disabledMinutes: function () { return [] }, disabledSeconds: function () { return [] } }; function C(e) { var t = v()(); return t.locale(e.locale()).utcOffset(e.utcOffset()), t } function M(e) { return e.format("LL") } function O(e) { var t = C(e); return M(t) } function k(e) { var t = e.locale(), n = e.localeData(); return n["zh-cn" === t ? "months" : "monthsShort"](e) } function S(e, t) { v.a.isMoment(e) && v.a.isMoment(t) && (t.hour(e.hour()), t.minute(e.minute()), t.second(e.second()), t.millisecond(e.millisecond())) } function T(e, t) { var n = t ? t(e) : {}; return n = i()({}, _, n), n } function A(e, t) { var n = !1; if (e) { var r = e.hour(), i = e.minute(), o = e.second(), a = t.disabledHours(); if (-1 === a.indexOf(r)) { var s = t.disabledMinutes(r); if (-1 === s.indexOf(i)) { var c = t.disabledSeconds(r, i); n = -1 !== c.indexOf(o) } else n = !0 } else n = !0 } return !n } function L(e, t) { var n = T(e, t); return A(e, n) } function j(e, t, n) { return (!t || !t(e)) && !(n && !L(e, n)) } function z(e, t) { if (!e) return ""; if (Array.isArray(t) && (t = t[0]), "function" === typeof t) { var n = t(e); if ("string" === typeof n) return n; throw new Error("The function of format does not return a string") } return e.format(t) } function E() { } function P(e, t) { return e && t && e.isSame(t, "day") } function D(e, t) { return e.year() < t.year() ? 1 : e.year() === t.year() && e.month() < t.month() } function H(e, t) { return e.year() > t.year() ? 1 : e.year() === t.year() && e.month() > t.month() } function V(e) { return "rc-calendar-" + e.year() + "-" + e.month() + "-" + e.date() } var I = { props: { contentRender: l["a"].func, dateRender: l["a"].func, disabledDate: l["a"].func, prefixCls: l["a"].string, selectedValue: l["a"].oneOfType([l["a"].any, l["a"].arrayOf(l["a"].any)]), value: l["a"].object, hoverValue: l["a"].any.def([]), showWeekNumber: l["a"].bool }, render: function () { var e = arguments[0], t = Object(h["l"])(this), n = t.contentRender, r = t.prefixCls, i = t.selectedValue, o = t.value, a = t.showWeekNumber, s = t.dateRender, c = t.disabledDate, l = t.hoverValue, u = Object(h["k"])(this), f = u.select, d = void 0 === f ? E : f, p = u.dayHover, v = void 0 === p ? E : p, g = void 0, y = void 0, x = void 0, _ = [], O = C(o), k = r + "-cell", S = r + "-week-number-cell", T = r + "-date", A = r + "-today", L = r + "-selected-day", j = r + "-selected-date", z = r + "-selected-start-date", I = r + "-selected-end-date", N = r + "-in-range-cell", R = r + "-last-month-cell", F = r + "-next-month-btn-day", Y = r + "-disabled-cell", $ = r + "-disabled-cell-first-of-row", B = r + "-disabled-cell-last-of-row", W = r + "-last-day-of-month", q = o.clone(); q.date(1); var U = q.day(), K = (U + 7 - o.localeData().firstDayOfWeek()) % 7, G = q.clone(); G.add(0 - K, "days"); var X = 0; for (g = 0; g < m.DATE_ROW_COUNT; g++)for (y = 0; y < m.DATE_COL_COUNT; y++)x = G, X && (x = x.clone(), x.add(X, "days")), _.push(x), X++; var J = []; for (X = 0, g = 0; g < m.DATE_ROW_COUNT; g++) { var Q, Z = void 0, ee = void 0, te = !1, ne = []; for (a && (ee = e("td", { key: "week-" + _[X].week(), attrs: { role: "gridcell" }, class: S }, [_[X].week()])), y = 0; y < m.DATE_COL_COUNT; y++) { var re = null, ie = null; x = _[X], y < m.DATE_COL_COUNT - 1 && (re = _[X + 1]), y > 0 && (ie = _[X - 1]); var oe = k, ae = !1, se = !1; P(x, O) && (oe += " " + A, Z = !0); var ce = D(x, o), le = H(x, o); if (i && Array.isArray(i)) { var ue = l.length ? l : i; if (!ce && !le) { var he = ue[0], fe = ue[1]; he && P(x, he) && (se = !0, te = !0, oe += " " + z), (he || fe) && (P(x, fe) ? (se = !0, te = !0, oe += " " + I) : (null !== he && void 0 !== he || !x.isBefore(fe, "day")) && (null !== fe && void 0 !== fe || !x.isAfter(he, "day")) ? x.isAfter(he, "day") && x.isBefore(fe, "day") && (oe += " " + N) : oe += " " + N) } } else P(x, o) && (se = !0, te = !0); P(x, i) && (oe += " " + j), ce && (oe += " " + R), le && (oe += " " + F), x.clone().endOf("month").date() === x.date() && (oe += " " + W), c && c(x, o) && (ae = !0, ie && c(ie, o) || (oe += " " + $), re && c(re, o) || (oe += " " + B)), se && (oe += " " + L), ae && (oe += " " + Y); var de = void 0; if (s) de = s(x, o); else { var pe = n ? n(x, o) : x.date(); de = e("div", { key: V(x), class: T, attrs: { "aria-selected": se, "aria-disabled": ae } }, [pe]) } ne.push(e("td", { key: X, on: { click: ae ? E : d.bind(null, x), mouseenter: ae ? E : v.bind(null, x) }, attrs: { role: "gridcell", title: M(x) }, class: oe }, [de])), X++ } J.push(e("tr", { key: g, attrs: { role: "row" }, class: w()((Q = {}, b()(Q, r + "-current-week", Z), b()(Q, r + "-active-week", te), Q)) }, [ee, ne])) } return e("tbody", { class: r + "-tbody" }, [J]) } }, N = I, R = { functional: !0, render: function (e, t) { var n = arguments[0], r = t.props, i = t.listeners, o = void 0 === i ? {} : i, a = r.prefixCls, s = { props: r, on: o }; return n("table", { class: a + "-table", attrs: { cellSpacing: "0", role: "grid" } }, [n(g, s), n(N, s)]) } }, F = 4, Y = 3; function $() { } var B = { name: "MonthTable", mixins: [u["a"]], props: { cellRender: l["a"].func, prefixCls: l["a"].string, value: l["a"].object, locale: l["a"].any, contentRender: l["a"].any, disabledDate: l["a"].func }, data: function () { return { sValue: this.value } }, watch: { value: function (e) { this.setState({ sValue: e }) } }, methods: { setAndSelectValue: function (e) { this.setState({ sValue: e }), this.__emit("select", e) }, chooseMonth: function (e) { var t = this.sValue.clone(); t.month(e), this.setAndSelectValue(t) }, months: function () { for (var e = this.sValue, t = e.clone(), n = [], r = 0, i = 0; i < F; i++) { n[i] = []; for (var o = 0; o < Y; o++) { t.month(r); var a = k(t); n[i][o] = { value: r, content: a, title: a }, r++ } } return n } }, render: function () { var e = this, t = arguments[0], n = this.$props, r = this.sValue, i = C(r), o = this.months(), a = r.month(), s = n.prefixCls, c = n.locale, l = n.contentRender, u = n.cellRender, h = n.disabledDate, f = o.map((function (n, o) { var f = n.map((function (n) { var o, f = !1; if (h) { var d = r.clone(); d.month(n.value), f = h(d) } var p = (o = {}, b()(o, s + "-cell", 1), b()(o, s + "-cell-disabled", f), b()(o, s + "-selected-cell", n.value === a), b()(o, s + "-current-cell", i.year() === r.year() && n.value === i.month()), o), v = void 0; if (u) { var m = r.clone(); m.month(n.value), v = u(m, c) } else { var g = void 0; if (l) { var y = r.clone(); y.month(n.value), g = l(y, c) } else g = n.content; v = t("a", { class: s + "-month" }, [g]) } return t("td", { attrs: { role: "gridcell", title: n.title }, key: n.value, on: { click: f ? $ : function () { return e.chooseMonth(n.value) } }, class: p }, [v]) })); return t("tr", { key: o, attrs: { role: "row" } }, [f]) })); return t("table", { class: s + "-table", attrs: { cellSpacing: "0", role: "grid" } }, [t("tbody", { class: s + "-tbody" }, [f])]) } }, W = B; function q(e) { this.changeYear(e) } function U() { } var K = { name: "MonthPanel", mixins: [u["a"]], props: { value: l["a"].any, defaultValue: l["a"].any, cellRender: l["a"].any, contentRender: l["a"].any, locale: l["a"].any, rootPrefixCls: l["a"].string, disabledDate: l["a"].func, renderFooter: l["a"].func, changeYear: l["a"].func.def(U) }, data: function () { var e = this.value, t = this.defaultValue; return this.nextYear = q.bind(this, 1), this.previousYear = q.bind(this, -1), { sValue: e || t } }, watch: { value: function (e) { this.setState({ sValue: e }) } }, methods: { setAndSelectValue: function (e) { this.setValue(e), this.__emit("select", e) }, setValue: function (e) { Object(h["s"])(this, "value") && this.setState({ sValue: e }) } }, render: function () { var e = arguments[0], t = this.sValue, n = this.cellRender, r = this.contentRender, i = this.locale, o = this.rootPrefixCls, a = this.disabledDate, s = this.renderFooter, c = t.year(), l = o + "-month-panel", u = s && s("month"); return e("div", { class: l }, [e("div", [e("div", { class: l + "-header" }, [e("a", { class: l + "-prev-year-btn", attrs: { role: "button", title: i.previousYear }, on: { click: this.previousYear } }), e("a", { class: l + "-year-select", attrs: { role: "button", title: i.yearSelect }, on: { click: Object(h["k"])(this).yearPanelShow || U } }, [e("span", { class: l + "-year-select-content" }, [c]), e("span", { class: l + "-year-select-arrow" }, ["x"])]), e("a", { class: l + "-next-year-btn", attrs: { role: "button", title: i.nextYear }, on: { click: this.nextYear } })]), e("div", { class: l + "-body" }, [e(W, { attrs: { disabledDate: a, locale: i, value: t, cellRender: n, contentRender: r, prefixCls: l }, on: { select: this.setAndSelectValue } })]), u && e("div", { class: l + "-footer" }, [u])])]) } }, G = K, X = 4, J = 3; function Q() { } function Z(e) { var t = this.sValue.clone(); t.add(e, "year"), this.setState({ sValue: t }) } function ee(e) { var t = this.sValue.clone(); t.year(e), t.month(this.sValue.month()), this.sValue = t, this.__emit("select", t) } var te = { mixins: [u["a"]], props: { rootPrefixCls: l["a"].string, value: l["a"].object, defaultValue: l["a"].object, locale: l["a"].object, renderFooter: l["a"].func }, data: function () { return this.nextDecade = Z.bind(this, 10), this.previousDecade = Z.bind(this, -10), { sValue: this.value || this.defaultValue } }, watch: { value: function (e) { this.sValue = e } }, methods: { years: function () { for (var e = this.sValue, t = e.year(), n = 10 * parseInt(t / 10, 10), r = n - 1, i = [], o = 0, a = 0; a < X; a++) { i[a] = []; for (var s = 0; s < J; s++) { var c = r + o, l = String(c); i[a][s] = { content: l, year: c, title: l }, o++ } } return i } }, render: function () { var e = this, t = arguments[0], n = this.sValue, r = this.locale, i = this.renderFooter, o = Object(h["k"])(this).decadePanelShow || Q, a = this.years(), s = n.year(), c = 10 * parseInt(s / 10, 10), l = c + 9, u = this.rootPrefixCls + "-year-panel", f = a.map((function (n, r) { var i = n.map((function (n) { var r, i = (r = {}, b()(r, u + "-cell", 1), b()(r, u + "-selected-cell", n.year === s), b()(r, u + "-last-decade-cell", n.year < c), b()(r, u + "-next-decade-cell", n.year > l), r), o = Q; return o = n.year < c ? e.previousDecade : n.year > l ? e.nextDecade : ee.bind(e, n.year), t("td", { attrs: { role: "gridcell", title: n.title }, key: n.content, on: { click: o }, class: i }, [t("a", { class: u + "-year" }, [n.content])]) })); return t("tr", { key: r, attrs: { role: "row" } }, [i]) })), d = i && i("year"); return t("div", { class: u }, [t("div", [t("div", { class: u + "-header" }, [t("a", { class: u + "-prev-decade-btn", attrs: { role: "button", title: r.previousDecade }, on: { click: this.previousDecade } }), t("a", { class: u + "-decade-select", attrs: { role: "button", title: r.decadeSelect }, on: { click: o } }, [t("span", { class: u + "-decade-select-content" }, [c, "-", l]), t("span", { class: u + "-decade-select-arrow" }, ["x"])]), t("a", { class: u + "-next-decade-btn", attrs: { role: "button", title: r.nextDecade }, on: { click: this.nextDecade } })]), t("div", { class: u + "-body" }, [t("table", { class: u + "-table", attrs: { cellSpacing: "0", role: "grid" } }, [t("tbody", { class: u + "-tbody" }, [f])])]), d && t("div", { class: u + "-footer" }, [d])])]) } }, ne = 4, re = 3; function ie() { } function oe(e) { var t = this.sValue.clone(); t.add(e, "years"), this.setState({ sValue: t }) } function ae(e, t) { var n = this.sValue.clone(); n.year(e), n.month(this.sValue.month()), this.__emit("select", n), t.preventDefault() } var se = { mixins: [u["a"]], props: { locale: l["a"].object, value: l["a"].object, defaultValue: l["a"].object, rootPrefixCls: l["a"].string, renderFooter: l["a"].func }, data: function () { return this.nextCentury = oe.bind(this, 100), this.previousCentury = oe.bind(this, -100), { sValue: this.value || this.defaultValue } }, watch: { value: function (e) { this.sValue = e } }, render: function () { for (var e = this, t = arguments[0], n = this.sValue, r = this.$props, i = r.locale, o = r.renderFooter, a = n.year(), s = 100 * parseInt(a / 100, 10), c = s - 10, l = s + 99, u = [], h = 0, f = this.rootPrefixCls + "-decade-panel", d = 0; d < ne; d++) { u[d] = []; for (var p = 0; p < re; p++) { var v = c + 10 * h, m = c + 10 * h + 9; u[d][p] = { startDecade: v, endDecade: m }, h++ } } var g = o && o("decade"), y = u.map((function (n, r) { var i = n.map((function (n) { var r, i = n.startDecade, o = n.endDecade, c = i < s, u = o > l, h = (r = {}, b()(r, f + "-cell", 1), b()(r, f + "-selected-cell", i <= a && a <= o), b()(r, f + "-last-century-cell", c), b()(r, f + "-next-century-cell", u), r), d = i + "-" + o, p = ie; return p = c ? e.previousCentury : u ? e.nextCentury : ae.bind(e, i), t("td", { key: i, on: { click: p }, attrs: { role: "gridcell" }, class: h }, [t("a", { class: f + "-decade" }, [d])]) })); return t("tr", { key: r, attrs: { role: "row" } }, [i]) })); return t("div", { class: f }, [t("div", { class: f + "-header" }, [t("a", { class: f + "-prev-century-btn", attrs: { role: "button", title: i.previousCentury }, on: { click: this.previousCentury } }), t("div", { class: f + "-century" }, [s, "-", l]), t("a", { class: f + "-next-century-btn", attrs: { role: "button", title: i.nextCentury }, on: { click: this.nextCentury } })]), t("div", { class: f + "-body" }, [t("table", { class: f + "-table", attrs: { cellSpacing: "0", role: "grid" } }, [t("tbody", { class: f + "-tbody" }, [y])])]), g && t("div", { class: f + "-footer" }, [g])]) } }; function ce() { } function le(e) { var t = this.value.clone(); t.add(e, "months"), this.__emit("valueChange", t) } function ue(e) { var t = this.value.clone(); t.add(e, "years"), this.__emit("valueChange", t) } function he(e, t) { return e ? t : null } var fe = { name: "CalendarHeader", mixins: [u["a"]], props: { prefixCls: l["a"].string, value: l["a"].object, showTimePicker: l["a"].bool, locale: l["a"].object, enablePrev: l["a"].any.def(1), enableNext: l["a"].any.def(1), disabledMonth: l["a"].func, mode: l["a"].any, monthCellRender: l["a"].func, monthCellContentRender: l["a"].func, renderFooter: l["a"].func }, data: function () { return this.nextMonth = le.bind(this, 1), this.previousMonth = le.bind(this, -1), this.nextYear = ue.bind(this, 1), this.previousYear = ue.bind(this, -1), { yearPanelReferer: null } }, methods: { onMonthSelect: function (e) { this.__emit("panelChange", e, "date"), Object(h["k"])(this).monthSelect ? this.__emit("monthSelect", e) : this.__emit("valueChange", e) }, onYearSelect: function (e) { var t = this.yearPanelReferer; this.setState({ yearPanelReferer: null }), this.__emit("panelChange", e, t), this.__emit("valueChange", e) }, onDecadeSelect: function (e) { this.__emit("panelChange", e, "year"), this.__emit("valueChange", e) }, changeYear: function (e) { e > 0 ? this.nextYear() : this.previousYear() }, monthYearElement: function (e) { var t = this, n = this.$createElement, r = this.$props, i = r.prefixCls, o = r.locale, a = r.value, s = a.localeData(), c = o.monthBeforeYear, l = i + "-" + (c ? "my-select" : "ym-select"), u = e ? " " + i + "-time-status" : "", h = n("a", { class: i + "-year-select" + u, attrs: { role: "button", title: e ? null : o.yearSelect }, on: { click: e ? ce : function () { return t.showYearPanel("date") } } }, [a.format(o.yearFormat)]), f = n("a", { class: i + "-month-select" + u, attrs: { role: "button", title: e ? null : o.monthSelect }, on: { click: e ? ce : this.showMonthPanel } }, [o.monthFormat ? a.format(o.monthFormat) : s.monthsShort(a)]), d = void 0; e && (d = n("a", { class: i + "-day-select" + u, attrs: { role: "button" } }, [a.format(o.dayFormat)])); var p = []; return p = c ? [f, d, h] : [h, f, d], n("span", { class: l }, [p]) }, showMonthPanel: function () { this.__emit("panelChange", null, "month") }, showYearPanel: function (e) { this.setState({ yearPanelReferer: e }), this.__emit("panelChange", null, "year") }, showDecadePanel: function () { this.__emit("panelChange", null, "decade") } }, render: function () { var e = this, t = arguments[0], n = Object(h["l"])(this), r = n.prefixCls, i = n.locale, o = n.mode, a = n.value, s = n.showTimePicker, c = n.enableNext, l = n.enablePrev, u = n.disabledMonth, f = n.renderFooter, d = null; return "month" === o && (d = t(G, { attrs: { locale: i, value: a, rootPrefixCls: r, disabledDate: u, cellRender: n.monthCellRender, contentRender: n.monthCellContentRender, renderFooter: f, changeYear: this.changeYear }, on: { select: this.onMonthSelect, yearPanelShow: function () { return e.showYearPanel("month") } } })), "year" === o && (d = t(te, { attrs: { locale: i, value: a, rootPrefixCls: r, renderFooter: f }, on: { select: this.onYearSelect, decadePanelShow: this.showDecadePanel } })), "decade" === o && (d = t(se, { attrs: { locale: i, value: a, rootPrefixCls: r, renderFooter: f }, on: { select: this.onDecadeSelect } })), t("div", { class: r + "-header" }, [t("div", { style: { position: "relative" } }, [he(l && !s, t("a", { class: r + "-prev-year-btn", attrs: { role: "button", title: i.previousYear }, on: { click: this.previousYear } })), he(l && !s, t("a", { class: r + "-prev-month-btn", attrs: { role: "button", title: i.previousMonth }, on: { click: this.previousMonth } })), this.monthYearElement(s), he(c && !s, t("a", { class: r + "-next-month-btn", on: { click: this.nextMonth }, attrs: { title: i.nextMonth } })), he(c && !s, t("a", { class: r + "-next-year-btn", on: { click: this.nextYear }, attrs: { title: i.nextYear } }))]), d]) } }, de = fe, pe = n("92fa"), ve = n.n(pe); function me() { } var ge = { functional: !0, render: function (e, t) { var n = arguments[0], r = t.props, i = t.listeners, o = void 0 === i ? {} : i, a = r.prefixCls, s = r.locale, c = r.value, l = r.timePicker, u = r.disabled, h = r.disabledDate, f = r.text, d = o.today, p = void 0 === d ? me : d, v = (!f && l ? s.now : f) || s.today, m = h && !j(C(c), h), g = m || u, y = g ? a + "-today-btn-disabled" : ""; return n("a", { class: a + "-today-btn " + y, attrs: { role: "button", title: O(c) }, on: { click: g ? me : p } }, [v]) } }; function ye() { } var be = { functional: !0, render: function (e, t) { var n = arguments[0], r = t.props, i = t.listeners, o = void 0 === i ? {} : i, a = r.prefixCls, s = r.locale, c = r.okDisabled, l = o.ok, u = void 0 === l ? ye : l, h = a + "-ok-btn"; return c && (h += " " + a + "-ok-btn-disabled"), n("a", { class: h, attrs: { role: "button" }, on: { click: c ? ye : u } }, [s.ok]) } }; function xe() { } var we = { functional: !0, render: function (e, t) { var n, r = t.props, i = t.listeners, o = void 0 === i ? {} : i, a = r.prefixCls, s = r.locale, c = r.showTimePicker, l = r.timePickerDisabled, u = o.closeTimePicker, h = void 0 === u ? xe : u, f = o.openTimePicker, d = void 0 === f ? xe : f, p = (n = {}, b()(n, a + "-time-picker-btn", !0), b()(n, a + "-time-picker-btn-disabled", l), n), v = xe; return l || (v = c ? h : d), e("a", { class: p, attrs: { role: "button" }, on: { click: v } }, [c ? s.dateSelect : s.timeSelect]) } }, _e = { mixins: [u["a"]], props: { prefixCls: l["a"].string, showDateInput: l["a"].bool, disabledTime: l["a"].any, timePicker: l["a"].any, selectedValue: l["a"].any, showOk: l["a"].bool, value: l["a"].object, renderFooter: l["a"].func, defaultValue: l["a"].object, locale: l["a"].object, showToday: l["a"].bool, disabledDate: l["a"].func, showTimePicker: l["a"].bool, okDisabled: l["a"].bool, mode: l["a"].string }, methods: { onSelect: function (e) { this.__emit("select", e) }, getRootDOMNode: function () { return this.$el } }, render: function () { var e = arguments[0], t = Object(h["l"])(this), n = t.value, r = t.prefixCls, o = t.showOk, a = t.timePicker, s = t.renderFooter, c = t.showToday, l = t.mode, u = null, f = s && s(l); if (c || a || f) { var d, p = { props: i()({}, t, { value: n }), on: Object(h["k"])(this) }, v = null; c && (v = e(ge, ve()([{ key: "todayButton" }, p]))), delete p.props.value; var m = null; (!0 === o || !1 !== o && a) && (m = e(be, ve()([{ key: "okButton" }, p]))); var g = null; a && (g = e(we, ve()([{ key: "timePickerButton" }, p]))); var y = void 0; (v || g || m || f) && (y = e("span", { class: r + "-footer-btn" }, [f, v, g, m])); var x = (d = {}, b()(d, r + "-footer", !0), b()(d, r + "-footer-show-ok", !!m), d); u = e("div", { class: x }, [y]) } return u } }, Ce = _e; function Me() { } function Oe(e) { var t = void 0; return t = e ? C(e) : v()(), t } function ke(e) { return Array.isArray(e) ? 0 === e.length || -1 !== e.findIndex((function (e) { return void 0 === e || v.a.isMoment(e) })) : void 0 === e || v.a.isMoment(e) } var Se = l["a"].custom(ke), Te = { mixins: [u["a"]], name: "CalendarMixinWrapper", props: { value: Se, defaultValue: Se }, data: function () { var e = this.$props, t = e.value || e.defaultValue || Oe(); return { sValue: t, sSelectedValue: e.selectedValue || e.defaultSelectedValue } }, watch: { value: function (e) { var t = e || this.defaultValue || Oe(this.sValue); this.setState({ sValue: t }) }, selectedValue: function (e) { this.setState({ sSelectedValue: e }) } }, methods: { onSelect: function (e, t) { e && this.setValue(e), this.setSelectedValue(e, t) }, renderRoot: function (e) { var t, n = this.$createElement, r = this.$props, i = r.prefixCls, o = (t = {}, b()(t, i, 1), b()(t, i + "-hidden", !r.visible), b()(t, e["class"], !!e["class"]), t); return n("div", { ref: "rootInstance", class: o, attrs: { tabIndex: "0" }, on: { keydown: this.onKeyDown || Me, blur: this.onBlur || Me } }, [e.children]) }, setSelectedValue: function (e, t) { Object(h["s"])(this, "selectedValue") || this.setState({ sSelectedValue: e }), this.__emit("select", e, t) }, setValue: function (e) { var t = this.sValue; Object(h["s"])(this, "value") || this.setState({ sValue: e }), (t && e && !t.isSame(e) || !t && e || t && !e) && this.__emit("change", e) }, isAllowedDate: function (e) { var t = this.disabledDate, n = this.disabledTime; return j(e, t, n) } } }, Ae = Te, Le = { methods: { getFormat: function () { var e = this.format, t = this.locale, n = this.timePicker; return e || (e = n ? t.dateTimeFormat : t.dateFormat), e }, focus: function () { this.focusElement ? this.focusElement.focus() : this.$refs.rootInstance && this.$refs.rootInstance.focus() }, saveFocusElement: function (e) { this.focusElement = e } } }, je = void 0, ze = void 0, Ee = void 0, Pe = { mixins: [u["a"]], props: { prefixCls: l["a"].string, timePicker: l["a"].object, value: l["a"].object, disabledTime: l["a"].any, format: l["a"].oneOfType([l["a"].string, l["a"].arrayOf(l["a"].string), l["a"].func]), locale: l["a"].object, disabledDate: l["a"].func, placeholder: l["a"].string, selectedValue: l["a"].object, clearIcon: l["a"].any, inputMode: l["a"].string, inputReadOnly: l["a"].bool }, data: function () { var e = this.selectedValue; return { str: z(e, this.format), invalid: !1, hasFocus: !1 } }, watch: { selectedValue: function () { this.setState() }, format: function () { this.setState() } }, updated: function () { var e = this; this.$nextTick((function () { !Ee || !e.$data.hasFocus || e.invalid || 0 === je && 0 === ze || Ee.setSelectionRange(je, ze) })) }, getInstance: function () { return Ee }, methods: { getDerivedStateFromProps: function (e, t) { var n = {}; Ee && (je = Ee.selectionStart, ze = Ee.selectionEnd); var r = e.selectedValue; return t.hasFocus || (n = { str: z(r, this.format), invalid: !1 }), n }, onClear: function () { this.setState({ str: "" }), this.__emit("clear", null) }, onInputChange: function (e) { var t = e.target, n = t.value, r = t.composing, i = this.str, o = void 0 === i ? "" : i; if (!e.isComposing && !r && o !== n) { var a = this.$props, s = a.disabledDate, c = a.format, l = a.selectedValue; if (!n) return this.__emit("change", null), void this.setState({ invalid: !1, str: n }); var u = v()(n, c, !0); if (u.isValid()) { var h = this.value.clone(); h.year(u.year()).month(u.month()).date(u.date()).hour(u.hour()).minute(u.minute()).second(u.second()), !h || s && s(h) ? this.setState({ invalid: !0, str: n }) : (l !== h || l && h && !l.isSame(h)) && (this.setState({ invalid: !1, str: n }), this.__emit("change", h)) } else this.setState({ invalid: !0, str: n }) } }, onFocus: function () { this.setState({ hasFocus: !0 }) }, onBlur: function () { this.setState((function (e, t) { return { hasFocus: !1, str: z(t.value, t.format) } })) }, onKeyDown: function (e) { var t = e.keyCode, n = this.$props, r = n.value, i = n.disabledDate; if (t === d["a"].ENTER) { var o = !i || !i(r); o && this.__emit("select", r.clone()), e.preventDefault() } }, getRootDOMNode: function () { return this.$el }, focus: function () { Ee && Ee.focus() }, saveDateInput: function (e) { Ee = e } }, render: function () { var e = arguments[0], t = this.invalid, n = this.str, r = this.locale, i = this.prefixCls, o = this.placeholder, a = this.disabled, s = this.showClear, c = this.inputMode, l = this.inputReadOnly, u = Object(h["g"])(this, "clearIcon"), f = t ? i + "-input-invalid" : ""; return e("div", { class: i + "-input-wrap" }, [e("div", { class: i + "-date-input-wrap" }, [e("input", ve()([{ directives: [{ name: "ant-ref", value: this.saveDateInput }, { name: "ant-input" }] }, { class: i + "-input " + f, domProps: { value: n }, attrs: { disabled: a, placeholder: o, inputMode: c, readOnly: l }, on: { input: this.onInputChange, keydown: this.onKeyDown, focus: this.onFocus, blur: this.onBlur } }]))]), s ? e("a", { attrs: { role: "button", title: r.clear }, on: { click: this.onClear } }, [u || e("span", { class: i + "-clear-btn" })]) : null]) } }, De = Pe, He = n("f8d5"); function Ve(e) { return e.clone().startOf("month") } function Ie(e) { return e.clone().endOf("month") } function Ne(e, t, n) { return e.clone().add(t, n) } function Re() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = arguments[1], n = arguments[2]; return e.some((function (e) { return e.isSame(t, n) })) } var Fe = function (e) { return !(!v.a.isMoment(e) || !e.isValid()) && e }, Ye = { name: "Calendar", props: { locale: l["a"].object.def(He["a"]), format: l["a"].oneOfType([l["a"].string, l["a"].arrayOf(l["a"].string), l["a"].func]), visible: l["a"].bool.def(!0), prefixCls: l["a"].string.def("rc-calendar"), defaultValue: l["a"].object, value: l["a"].object, selectedValue: l["a"].object, defaultSelectedValue: l["a"].object, mode: l["a"].oneOf(["time", "date", "month", "year", "decade"]), showDateInput: l["a"].bool.def(!0), showWeekNumber: l["a"].bool, showToday: l["a"].bool.def(!0), showOk: l["a"].bool, timePicker: l["a"].any, dateInputPlaceholder: l["a"].any, disabledDate: l["a"].func, disabledTime: l["a"].any, dateRender: l["a"].func, renderFooter: l["a"].func.def((function () { return null })), renderSidebar: l["a"].func.def((function () { return null })), clearIcon: l["a"].any, focusablePanel: l["a"].bool.def(!0), inputMode: l["a"].string, inputReadOnly: l["a"].bool }, mixins: [u["a"], Le, Ae], data: function () { var e = this.$props; return { sMode: this.mode || "date", sValue: Fe(e.value) || Fe(e.defaultValue) || v()(), sSelectedValue: e.selectedValue || e.defaultSelectedValue } }, watch: { mode: function (e) { this.setState({ sMode: e }) }, value: function (e) { this.setState({ sValue: Fe(e) || Fe(this.defaultValue) || Oe(this.sValue) }) }, selectedValue: function (e) { this.setState({ sSelectedValue: e }) } }, mounted: function () { var e = this; this.$nextTick((function () { e.saveFocusElement(De.getInstance()) })) }, methods: { onPanelChange: function (e, t) { var n = this.sValue; Object(h["s"])(this, "mode") || this.setState({ sMode: t }), this.__emit("panelChange", e || n, t) }, onKeyDown: function (e) { if ("input" !== e.target.nodeName.toLowerCase()) { var t = e.keyCode, n = e.ctrlKey || e.metaKey, r = this.disabledDate, i = this.sValue; switch (t) { case d["a"].DOWN: return this.goTime(1, "weeks"), e.preventDefault(), 1; case d["a"].UP: return this.goTime(-1, "weeks"), e.preventDefault(), 1; case d["a"].LEFT: return n ? this.goTime(-1, "years") : this.goTime(-1, "days"), e.preventDefault(), 1; case d["a"].RIGHT: return n ? this.goTime(1, "years") : this.goTime(1, "days"), e.preventDefault(), 1; case d["a"].HOME: return this.setValue(Ve(i)), e.preventDefault(), 1; case d["a"].END: return this.setValue(Ie(i)), e.preventDefault(), 1; case d["a"].PAGE_DOWN: return this.goTime(1, "month"), e.preventDefault(), 1; case d["a"].PAGE_UP: return this.goTime(-1, "month"), e.preventDefault(), 1; case d["a"].ENTER: return r && r(i) || this.onSelect(i, { source: "keyboard" }), e.preventDefault(), 1; default: return this.__emit("keydown", e), 1 } } }, onClear: function () { this.onSelect(null), this.__emit("clear") }, onOk: function () { var e = this.sSelectedValue; this.isAllowedDate(e) && this.__emit("ok", e) }, onDateInputChange: function (e) { this.onSelect(e, { source: "dateInput" }) }, onDateInputSelect: function (e) { this.onSelect(e, { source: "dateInputSelect" }) }, onDateTableSelect: function (e) { var t = this.timePicker, n = this.sSelectedValue; if (!n && t) { var r = Object(h["l"])(t), i = r.defaultValue; i && S(i, e) } this.onSelect(e) }, onToday: function () { var e = this.sValue, t = C(e); this.onSelect(t, { source: "todayButton" }) }, onBlur: function (e) { var t = this; setTimeout((function () { var n = De.getInstance(), r = t.rootInstance; !r || r.contains(document.activeElement) || n && n.contains(document.activeElement) || t.$emit("blur", e) }), 0) }, getRootDOMNode: function () { return this.$el }, openTimePicker: function () { this.onPanelChange(null, "time") }, closeTimePicker: function () { this.onPanelChange(null, "date") }, goTime: function (e, t) { this.setValue(Ne(this.sValue, e, t)) } }, render: function () { var e = arguments[0], t = this.locale, n = this.prefixCls, r = this.disabledDate, o = this.dateInputPlaceholder, a = this.timePicker, s = this.disabledTime, c = this.showDateInput, l = this.sValue, u = this.sSelectedValue, d = this.sMode, p = this.renderFooter, v = this.inputMode, m = this.inputReadOnly, g = this.monthCellRender, y = this.monthCellContentRender, b = this.$props, x = Object(h["g"])(this, "clearIcon"), w = "time" === d, _ = w && s && a ? T(u, s) : null, C = null; if (a && w) { var M = Object(h["l"])(a), O = { props: i()({ showHour: !0, showSecond: !0, showMinute: !0 }, M, _, { value: u, disabledTime: s }), on: { change: this.onDateInputChange } }; void 0 !== M.defaultValue && (O.props.defaultOpenValue = M.defaultValue), C = Object(f["a"])(a, O) } var k = c ? e(De, { attrs: { format: this.getFormat(), value: l, locale: t, placeholder: o, showClear: !0, disabledTime: s, disabledDate: r, prefixCls: n, selectedValue: u, clearIcon: x, inputMode: v, inputReadOnly: m }, key: "date-input", on: { clear: this.onClear, change: this.onDateInputChange, select: this.onDateInputSelect } }) : null, S = []; return b.renderSidebar && S.push(b.renderSidebar()), S.push(e("div", { class: n + "-panel", key: "panel" }, [k, e("div", { attrs: { tabIndex: b.focusablePanel ? 0 : void 0 }, class: n + "-date-panel" }, [e(de, { attrs: { locale: t, mode: d, value: l, renderFooter: p, showTimePicker: w, prefixCls: n, monthCellRender: g, monthCellContentRender: y }, on: { valueChange: this.setValue, panelChange: this.onPanelChange } }), a && w ? e("div", { class: n + "-time-picker" }, [e("div", { class: n + "-time-picker-panel" }, [C])]) : null, e("div", { class: n + "-body" }, [e(R, { attrs: { locale: t, value: l, selectedValue: u, prefixCls: n, dateRender: b.dateRender, disabledDate: r, showWeekNumber: b.showWeekNumber }, on: { select: this.onDateTableSelect } })]), e(Ce, { attrs: { showOk: b.showOk, mode: d, renderFooter: b.renderFooter, locale: t, prefixCls: n, showToday: b.showToday, disabledTime: s, showTimePicker: w, showDateInput: b.showDateInput, timePicker: a, selectedValue: u, timePickerDisabled: !u, value: l, disabledDate: r, okDisabled: !1 !== b.showOk && (!u || !this.isAllowedDate(u)) }, on: { ok: this.onOk, select: this.onSelect, today: this.onToday, openTimePicker: this.openTimePicker, closeTimePicker: this.closeTimePicker } })])])), this.renderRoot({ children: S, class: b.showWeekNumber ? n + "-week-number" : "" }) } }, $e = Ye, Be = $e; a.a.use(c.a, { name: "ant-ref" }); var We = Be, qe = { name: "MonthCalendar", props: { locale: l["a"].object.def(He["a"]), format: l["a"].string, visible: l["a"].bool.def(!0), prefixCls: l["a"].string.def("rc-calendar"), monthCellRender: l["a"].func, value: l["a"].object, defaultValue: l["a"].object, selectedValue: l["a"].object, defaultSelectedValue: l["a"].object, disabledDate: l["a"].func, monthCellContentRender: l["a"].func, renderFooter: l["a"].func.def((function () { return null })), renderSidebar: l["a"].func.def((function () { return null })) }, mixins: [u["a"], Le, Ae], data: function () { var e = this.$props; return { mode: "month", sValue: e.value || e.defaultValue || v()(), sSelectedValue: e.selectedValue || e.defaultSelectedValue } }, methods: { onKeyDown: function (e) { var t = e.keyCode, n = e.ctrlKey || e.metaKey, r = this.sValue, i = this.disabledDate, o = r; switch (t) { case d["a"].DOWN: o = r.clone(), o.add(3, "months"); break; case d["a"].UP: o = r.clone(), o.add(-3, "months"); break; case d["a"].LEFT: o = r.clone(), n ? o.add(-1, "years") : o.add(-1, "months"); break; case d["a"].RIGHT: o = r.clone(), n ? o.add(1, "years") : o.add(1, "months"); break; case d["a"].ENTER: return i && i(r) || this.onSelect(r), e.preventDefault(), 1; default: return }if (o !== r) return this.setValue(o), e.preventDefault(), 1 }, handlePanelChange: function (e, t) { "date" !== t && this.setState({ mode: t }) } }, render: function () { var e = arguments[0], t = this.mode, n = this.sValue, r = this.$props, i = this.$scopedSlots, o = r.prefixCls, a = r.locale, s = r.disabledDate, c = this.monthCellRender || i.monthCellRender, l = this.monthCellContentRender || i.monthCellContentRender, u = this.renderFooter || i.renderFooter, h = e("div", { class: o + "-month-calendar-content" }, [e("div", { class: o + "-month-header-wrap" }, [e(de, { attrs: { prefixCls: o, mode: t, value: n, locale: a, disabledMonth: s, monthCellRender: c, monthCellContentRender: l }, on: { monthSelect: this.onSelect, valueChange: this.setValue, panelChange: this.handlePanelChange } })]), e(Ce, { attrs: { prefixCls: o, renderFooter: u } })]); return this.renderRoot({ class: r.prefixCls + "-month-calendar", children: h }) } }, Ue = qe, Ke = n("3eea"), Ge = n.n(Ke), Xe = n("3f50"), Je = { adjustX: 1, adjustY: 1 }, Qe = [0, 0], Ze = { bottomLeft: { points: ["tl", "tl"], overflow: Je, offset: [0, -3], targetOffset: Qe }, bottomRight: { points: ["tr", "tr"], overflow: Je, offset: [0, -3], targetOffset: Qe }, topRight: { points: ["br", "br"], overflow: Je, offset: [0, 3], targetOffset: Qe }, topLeft: { points: ["bl", "bl"], overflow: Je, offset: [0, 3], targetOffset: Qe } }, et = Ze, tt = n("8496"), nt = n("2768"), rt = n.n(nt), it = { validator: function (e) { return Array.isArray(e) ? 0 === e.length || -1 === e.findIndex((function (e) { return !rt()(e) && !v.a.isMoment(e) })) : rt()(e) || v.a.isMoment(e) } }, ot = { name: "Picker", props: { animation: l["a"].oneOfType([l["a"].func, l["a"].string]), disabled: l["a"].bool, transitionName: l["a"].string, format: l["a"].oneOfType([l["a"].string, l["a"].array, l["a"].func]), children: l["a"].func, getCalendarContainer: l["a"].func, calendar: l["a"].any, open: l["a"].bool, defaultOpen: l["a"].bool.def(!1), prefixCls: l["a"].string.def("rc-calendar-picker"), placement: l["a"].any.def("bottomLeft"), value: it, defaultValue: it, align: l["a"].object.def((function () { return {} })), dropdownClassName: l["a"].string, dateRender: l["a"].func }, mixins: [u["a"]], data: function () { var e = this.$props, t = void 0; t = Object(h["s"])(this, "open") ? e.open : e.defaultOpen; var n = e.value || e.defaultValue; return { sOpen: t, sValue: n } }, watch: { value: function (e) { this.setState({ sValue: e }) }, open: function (e) { this.setState({ sOpen: e }) } }, mounted: function () { this.preSOpen = this.sOpen }, updated: function () { !this.preSOpen && this.sOpen && (this.focusTimeout = setTimeout(this.focusCalendar, 0)), this.preSOpen = this.sOpen }, beforeDestroy: function () { clearTimeout(this.focusTimeout) }, methods: { onCalendarKeyDown: function (e) { e.keyCode === d["a"].ESC && (e.stopPropagation(), this.closeCalendar(this.focus)) }, onCalendarSelect: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = this.$props; Object(h["s"])(this, "value") || this.setState({ sValue: e }); var r = Object(h["l"])(n.calendar); ("keyboard" === t.source || "dateInputSelect" === t.source || !r.timePicker && "dateInput" !== t.source || "todayButton" === t.source) && this.closeCalendar(this.focus), this.__emit("change", e) }, onKeyDown: function (e) { this.sOpen || e.keyCode !== d["a"].DOWN && e.keyCode !== d["a"].ENTER || (this.openCalendar(), e.preventDefault()) }, onCalendarOk: function () { this.closeCalendar(this.focus) }, onCalendarClear: function () { this.closeCalendar(this.focus) }, onCalendarBlur: function () { this.setOpen(!1) }, onVisibleChange: function (e) { this.setOpen(e) }, getCalendarElement: function () { var e = this.$props, t = Object(h["l"])(e.calendar), n = Object(h["i"])(e.calendar), r = this.sValue, i = r, o = { ref: "calendarInstance", props: { defaultValue: i || t.defaultValue, selectedValue: r }, on: { keydown: this.onCalendarKeyDown, ok: Object(Xe["a"])(n.ok, this.onCalendarOk), select: Object(Xe["a"])(n.select, this.onCalendarSelect), clear: Object(Xe["a"])(n.clear, this.onCalendarClear), blur: Object(Xe["a"])(n.blur, this.onCalendarBlur) } }; return Object(f["a"])(e.calendar, o) }, setOpen: function (e, t) { this.sOpen !== e && (Object(h["s"])(this, "open") || this.setState({ sOpen: e }, t), this.__emit("openChange", e)) }, openCalendar: function (e) { this.setOpen(!0, e) }, closeCalendar: function (e) { this.setOpen(!1, e) }, focus: function () { this.sOpen || this.$el.focus() }, focusCalendar: function () { this.sOpen && this.calendarInstance && this.calendarInstance.componentInstance && this.calendarInstance.componentInstance.focus() } }, render: function () { var e = arguments[0], t = Object(h["l"])(this), n = Object(h["q"])(this), r = t.prefixCls, i = t.placement, o = t.getCalendarContainer, a = t.align, s = t.animation, c = t.disabled, l = t.dropdownClassName, u = t.transitionName, d = this.sValue, p = this.sOpen, v = this.$scopedSlots["default"], m = { value: d, open: p }; return !this.sOpen && this.calendarInstance || (this.calendarInstance = this.getCalendarElement()), e(tt["a"], { attrs: { popupAlign: a, builtinPlacements: et, popupPlacement: i, action: c && !p ? [] : ["click"], destroyPopupOnHide: !0, getPopupContainer: o, popupStyle: n, popupAnimation: s, popupTransitionName: u, popupVisible: p, prefixCls: r, popupClassName: l }, on: { popupVisibleChange: this.onVisibleChange } }, [e("template", { slot: "popup" }, [this.calendarInstance]), Object(f["a"])(v(m, t), { on: { keydown: this.onKeyDown } })]) } }, at = ot, st = n("0c63"), ct = n("9cba"), lt = n("2cf8"); function ut(e, t) { if (!e) return ""; if (Array.isArray(t) && (t = t[0]), "function" === typeof t) { var n = t(e); if ("string" === typeof n) return n; throw new Error("The function of format does not return a string") } return e.format(t) } function ht() { } function ft(e, t) { return { props: Object(h["t"])(t, { allowClear: !0, showToday: !0 }), mixins: [u["a"]], model: { prop: "value", event: "change" }, inject: { configProvider: { default: function () { return ct["a"] } } }, data: function () { var e = this.value || this.defaultValue; if (e && !Object(lt["a"])(p).isMoment(e)) throw new Error("The value/defaultValue of DatePicker or MonthPicker must be a moment object"); return { sValue: e, showDate: e, _open: !!this.open } }, watch: { open: function (e) { var t = Object(h["l"])(this), n = {}; n._open = e, "value" in t && !e && t.value !== this.showDate && (n.showDate = t.value), this.setState(n) }, value: function (e) { var t = {}; t.sValue = e, e !== this.sValue && (t.showDate = e), this.setState(t) }, _open: function (e, t) { var n = this; this.$nextTick((function () { Object(h["s"])(n, "open") || !t || e || n.focus() })) } }, methods: { clearSelection: function (e) { e.preventDefault(), e.stopPropagation(), this.handleChange(null) }, handleChange: function (e) { Object(h["s"])(this, "value") || this.setState({ sValue: e, showDate: e }), this.$emit("change", e, ut(e, this.format)) }, handleCalendarChange: function (e) { this.setState({ showDate: e }) }, handleOpenChange: function (e) { var t = Object(h["l"])(this); "open" in t || this.setState({ _open: e }), this.$emit("openChange", e) }, focus: function () { this.$refs.input.focus() }, blur: function () { this.$refs.input.blur() }, renderFooter: function () { var e = this.$createElement, t = this.$scopedSlots, n = this.$slots, r = this._prefixCls, i = this.renderExtraFooter || t.renderExtraFooter || n.renderExtraFooter; return i ? e("div", { class: r + "-footer-extra" }, ["function" === typeof i ? i.apply(void 0, arguments) : i]) : null }, onMouseEnter: function (e) { this.$emit("mouseenter", e) }, onMouseLeave: function (e) { this.$emit("mouseleave", e) } }, render: function () { var t, n = this, r = arguments[0], o = this.$scopedSlots, a = this.$data, s = a.sValue, c = a.showDate, l = a._open, u = Object(h["g"])(this, "suffixIcon"); u = Array.isArray(u) ? u[0] : u; var d = Object(h["k"])(this), v = d.panelChange, m = void 0 === v ? ht : v, g = d.focus, y = void 0 === g ? ht : g, x = d.blur, _ = void 0 === x ? ht : x, C = d.ok, M = void 0 === C ? ht : C, O = Object(h["l"])(this), k = O.prefixCls, S = O.locale, T = O.localeCode, A = O.inputReadOnly, L = this.configProvider.getPrefixCls, j = L("calendar", k); this._prefixCls = j; var z = O.dateRender || o.dateRender, E = O.monthCellContentRender || o.monthCellContentRender, P = "placeholder" in O ? O.placeholder : S.lang.placeholder, D = O.showTime ? O.disabledTime : null, H = w()((t = {}, b()(t, j + "-time", O.showTime), b()(t, j + "-month", Ue === e), t)); s && T && s.locale(T); var V = { props: {}, on: {} }, I = { props: {}, on: {} }, N = {}; O.showTime ? (I.on.select = this.handleChange, N.minWidth = "195px") : V.on.change = this.handleChange, "mode" in O && (I.props.mode = O.mode); var R = Object(h["x"])(I, { props: { disabledDate: O.disabledDate, disabledTime: D, locale: S.lang, timePicker: O.timePicker, defaultValue: O.defaultPickerValue || Object(lt["a"])(p)(), dateInputPlaceholder: P, prefixCls: j, dateRender: z, format: O.format, showToday: O.showToday, monthCellContentRender: E, renderFooter: this.renderFooter, value: c, inputReadOnly: A }, on: { ok: M, panelChange: m, change: this.handleCalendarChange }, class: H, scopedSlots: o }), F = r(e, R), Y = !O.disabled && O.allowClear && s ? r(st["a"], { attrs: { type: "close-circle", theme: "filled" }, class: j + "-picker-clear", on: { click: this.clearSelection } }) : null, $ = u && (Object(h["w"])(u) ? Object(f["a"])(u, { class: j + "-picker-icon" }) : r("span", { class: j + "-picker-icon" }, [u])) || r(st["a"], { attrs: { type: "calendar" }, class: j + "-picker-icon" }), B = function (e) { var t = e.value; return r("div", [r("input", { ref: "input", attrs: { disabled: O.disabled, readOnly: !0, placeholder: P, tabIndex: O.tabIndex, name: n.name }, on: { focus: y, blur: _ }, domProps: { value: ut(t, n.format) }, class: O.pickerInputClass }), Y, $]) }, W = { props: i()({}, O, V.props, { calendar: F, value: s, prefixCls: j + "-picker-container" }), on: i()({}, Ge()(d, "change"), V.on, { open: l, onOpenChange: this.handleOpenChange }), style: O.popupStyle, scopedSlots: i()({ default: B }, o) }; return r("span", { class: O.pickerClass, style: N, on: { mouseenter: this.onMouseEnter, mouseleave: this.onMouseLeave } }, [r(at, W)]) } } } var dt = n("9a16"), pt = n("e5cd"), vt = n("27ab"), mt = n("b4a0"), gt = n("1501"), yt = { date: "YYYY-MM-DD", dateTime: "YYYY-MM-DD HH:mm:ss", week: "gggg-wo", month: "YYYY-MM" }, bt = { date: "dateFormat", dateTime: "dateTimeFormat", week: "weekFormat", month: "monthFormat" }; function xt(e) { var t = e.showHour, n = e.showMinute, r = e.showSecond, i = e.use12Hours, o = 0; return t && (o += 1), n && (o += 1), r && (o += 1), i && (o += 1), o } function wt(e, t, n) { return { name: e.name, props: Object(h["t"])(t, { transitionName: "slide-up", popupStyle: {}, locale: {} }), model: { prop: "value", event: "change" }, inject: { configProvider: { default: function () { return ct["a"] } } }, provide: function () { return { savePopupRef: this.savePopupRef } }, mounted: function () { var e = this, t = this.autoFocus, n = this.disabled, r = this.value, i = this.defaultValue, o = this.valueFormat; Object(gt["d"])("DatePicker", i, "defaultValue", o), Object(gt["d"])("DatePicker", r, "value", o), t && !n && this.$nextTick((function () { e.focus() })) }, watch: { value: function (e) { Object(gt["d"])("DatePicker", e, "value", this.valueFormat) } }, methods: { getDefaultLocale: function () { var e = i()({}, mt["a"], this.locale); return e.lang = i()({}, e.lang, (this.locale || {}).lang), e }, savePopupRef: function (e) { this.popupRef = e }, handleOpenChange: function (e) { this.$emit("openChange", e) }, handleFocus: function (e) { this.$emit("focus", e) }, handleBlur: function (e) { this.$emit("blur", e) }, handleMouseEnter: function (e) { this.$emit("mouseenter", e) }, handleMouseLeave: function (e) { this.$emit("mouseleave", e) }, handleChange: function (e, t) { this.$emit("change", this.valueFormat ? Object(gt["e"])(e, this.valueFormat) : e, t) }, handleOk: function (e) { this.$emit("ok", this.valueFormat ? Object(gt["e"])(e, this.valueFormat) : e) }, handleCalendarChange: function (e, t) { this.$emit("calendarChange", this.valueFormat ? Object(gt["e"])(e, this.valueFormat) : e, t) }, focus: function () { this.$refs.picker.focus() }, blur: function () { this.$refs.picker.blur() }, transformValue: function (e) { "value" in e && (e.value = Object(gt["f"])(e.value, this.valueFormat)), "defaultValue" in e && (e.defaultValue = Object(gt["f"])(e.defaultValue, this.valueFormat)), "defaultPickerValue" in e && (e.defaultPickerValue = Object(gt["f"])(e.defaultPickerValue, this.valueFormat)) }, renderPicker: function (t, r) { var o, a = this, s = this.$createElement, c = Object(h["l"])(this); this.transformValue(c); var l = c.prefixCls, u = c.inputPrefixCls, f = c.getCalendarContainer, d = c.size, p = c.showTime, v = c.disabled, m = c.format, g = p ? n + "Time" : n, y = m || t[bt[g]] || yt[g], x = this.configProvider, _ = x.getPrefixCls, C = x.getPopupContainer, M = f || C, O = _("calendar", l), k = _("input", u), S = w()(O + "-picker", b()({}, O + "-picker-" + d, !!d)), T = w()(O + "-picker-input", k, (o = {}, b()(o, k + "-lg", "large" === d), b()(o, k + "-sm", "small" === d), b()(o, k + "-disabled", v), o)), A = p && p.format || "HH:mm:ss", L = i()({}, Object(vt["b"])(A), { format: A, use12Hours: p && p.use12Hours }), j = xt(L), z = O + "-time-picker-column-" + j, E = { props: i()({}, L, p, { prefixCls: O + "-time-picker", placeholder: t.timePickerLocale.placeholder, transitionName: "slide-up" }), class: z, on: { esc: function () { } } }, P = p ? s(dt["a"], E) : null, D = { props: i()({}, c, { getCalendarContainer: M, format: y, pickerClass: S, pickerInputClass: T, locale: t, localeCode: r, timePicker: P }), on: i()({}, Object(h["k"])(this), { openChange: this.handleOpenChange, focus: this.handleFocus, blur: this.handleBlur, mouseenter: this.handleMouseEnter, mouseleave: this.handleMouseLeave, change: this.handleChange, ok: this.handleOk, calendarChange: this.handleCalendarChange }), ref: "picker", scopedSlots: this.$scopedSlots || {} }; return s(e, D, [this.$slots && Object.keys(this.$slots).map((function (e) { return s("template", { slot: e, key: e }, [a.$slots[e]]) }))]) } }, render: function () { var e = arguments[0]; return e(pt["a"], { attrs: { componentName: "DatePicker", defaultLocale: this.getDefaultLocale }, scopedSlots: { default: this.renderPicker } }) } } } var _t = n("b24f"), Ct = n.n(_t), Mt = n("9b57"), Ot = n.n(Mt); function kt() { } var St = { mixins: [u["a"]], props: { prefixCls: l["a"].string, value: l["a"].any, hoverValue: l["a"].any, selectedValue: l["a"].any, direction: l["a"].any, locale: l["a"].any, showDateInput: l["a"].bool, showTimePicker: l["a"].bool, showWeekNumber: l["a"].bool, format: l["a"].any, placeholder: l["a"].any, disabledDate: l["a"].any, timePicker: l["a"].any, disabledTime: l["a"].any, disabledMonth: l["a"].any, mode: l["a"].any, timePickerDisabledTime: l["a"].object, enableNext: l["a"].any, enablePrev: l["a"].any, clearIcon: l["a"].any, dateRender: l["a"].func, inputMode: l["a"].string, inputReadOnly: l["a"].bool }, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.value, o = t.hoverValue, a = t.selectedValue, s = t.mode, c = t.direction, l = t.locale, u = t.format, d = t.placeholder, p = t.disabledDate, v = t.timePicker, m = t.disabledTime, g = t.timePickerDisabledTime, y = t.showTimePicker, b = t.enablePrev, x = t.enableNext, w = t.disabledMonth, _ = t.showDateInput, C = t.dateRender, M = t.showWeekNumber, O = t.showClear, k = t.inputMode, S = t.inputReadOnly, A = Object(h["g"])(this, "clearIcon"), L = Object(h["k"])(this), j = L.inputChange, z = void 0 === j ? kt : j, E = L.inputSelect, P = void 0 === E ? kt : E, D = L.valueChange, H = void 0 === D ? kt : D, V = L.panelChange, I = void 0 === V ? kt : V, N = L.select, F = void 0 === N ? kt : N, Y = L.dayHover, $ = void 0 === Y ? kt : Y, B = y && v, W = B && m ? T(a, m) : null, q = n + "-range", U = { locale: l, value: r, prefixCls: n, showTimePicker: y }, K = "left" === c ? 0 : 1, G = null; if (B) { var X = Object(h["l"])(v); G = Object(f["a"])(v, { props: i()({ showHour: !0, showMinute: !0, showSecond: !0 }, X, W, g, { defaultOpenValue: r, value: a[K] }), on: { change: z } }) } var J = _ && e(De, { attrs: { format: u, locale: l, prefixCls: n, timePicker: v, disabledDate: p, placeholder: d, disabledTime: m, value: r, showClear: O || !1, selectedValue: a[K], clearIcon: A, inputMode: k, inputReadOnly: S }, on: { change: z, select: P } }), Q = { props: i()({}, U, { mode: s, enableNext: x, enablePrev: b, disabledMonth: w }), on: { valueChange: H, panelChange: I } }, Z = { props: i()({}, U, { hoverValue: o, selectedValue: a, dateRender: C, disabledDate: p, showWeekNumber: M }), on: { select: F, dayHover: $ } }; return e("div", { class: q + "-part " + q + "-" + c }, [J, e("div", { style: { outline: "none" } }, [e(de, Q), y ? e("div", { class: n + "-time-picker" }, [e("div", { class: n + "-time-picker-panel" }, [G])]) : null, e("div", { class: n + "-body" }, [e(R, Z)])])]) } }, Tt = St; function At() { } function Lt(e) { return Array.isArray(e) && (0 === e.length || e.every((function (e) { return !e }))) } function jt(e, t) { if (e === t) return !0; if (null === e || "undefined" === typeof e || null === t || "undefined" === typeof t) return !1; if (e.length !== t.length) return !1; for (var n = 0; n < e.length; ++n)if (e[n] !== t[n]) return !1; return !0 } function zt(e) { var t = Ct()(e, 2), n = t[0], r = t[1]; return !r || void 0 !== n && null !== n || (n = r.clone().subtract(1, "month")), !n || void 0 !== r && null !== r || (r = n.clone().add(1, "month")), [n, r] } function Et(e, t) { var n = e.selectedValue || t && e.defaultSelectedValue, r = e.value || t && e.defaultValue, i = zt(r || n); return Lt(i) ? t && [v()(), v()().add(1, "months")] : i } function Pt(e, t) { for (var n = t ? t().concat() : [], r = 0; r < e; r++)-1 === n.indexOf(r) && n.push(r); return n } function Dt(e, t, n) { if (t) { var r = this.sSelectedValue, i = r.concat(), o = "left" === e ? 0 : 1; i[o] = t, i[0] && this.compare(i[0], i[1]) > 0 && (i[1 - o] = this.sShowTimePicker ? i[o] : void 0), this.__emit("inputSelect", i), this.fireSelectValueChange(i, null, n || { source: "dateInput" }) } } var Ht = { props: { locale: l["a"].object.def(He["a"]), visible: l["a"].bool.def(!0), prefixCls: l["a"].string.def("rc-calendar"), dateInputPlaceholder: l["a"].any, seperator: l["a"].string.def("~"), defaultValue: l["a"].any, value: l["a"].any, hoverValue: l["a"].any, mode: l["a"].arrayOf(l["a"].oneOf(["time", "date", "month", "year", "decade"])), showDateInput: l["a"].bool.def(!0), timePicker: l["a"].any, showOk: l["a"].bool, showToday: l["a"].bool.def(!0), defaultSelectedValue: l["a"].array.def([]), selectedValue: l["a"].array, showClear: l["a"].bool, showWeekNumber: l["a"].bool, format: l["a"].oneOfType([l["a"].string, l["a"].arrayOf(l["a"].string), l["a"].func]), type: l["a"].any.def("both"), disabledDate: l["a"].func, disabledTime: l["a"].func.def(At), renderFooter: l["a"].func.def((function () { return null })), renderSidebar: l["a"].func.def((function () { return null })), dateRender: l["a"].func, clearIcon: l["a"].any, inputReadOnly: l["a"].bool }, mixins: [u["a"], Le], data: function () { var e = this.$props, t = e.selectedValue || e.defaultSelectedValue, n = Et(e, 1); return { sSelectedValue: t, prevSelectedValue: t, firstSelectedValue: null, sHoverValue: e.hoverValue || [], sValue: n, sShowTimePicker: !1, sMode: e.mode || ["date", "date"], sPanelTriggerSource: "" } }, watch: { value: function () { var e = {}; e.sValue = Et(this.$props, 0), this.setState(e) }, hoverValue: function (e) { jt(this.sHoverValue, e) || this.setState({ sHoverValue: e }) }, selectedValue: function (e) { var t = {}; t.sSelectedValue = e, t.prevSelectedValue = e, this.setState(t) }, mode: function (e) { jt(this.sMode, e) || this.setState({ sMode: e }) } }, methods: { onDatePanelEnter: function () { this.hasSelectedValue() && this.fireHoverValueChange(this.sSelectedValue.concat()) }, onDatePanelLeave: function () { this.hasSelectedValue() && this.fireHoverValueChange([]) }, onSelect: function (e) { var t = this.type, n = this.sSelectedValue, r = this.prevSelectedValue, i = this.firstSelectedValue, o = void 0; if ("both" === t) i ? this.compare(i, e) < 0 ? (S(r[1], e), o = [i, e]) : (S(r[0], e), S(r[1], i), o = [e, i]) : (S(r[0], e), o = [e]); else if ("start" === t) { S(r[0], e); var a = n[1]; o = a && this.compare(a, e) > 0 ? [e, a] : [e] } else { var s = n[0]; s && this.compare(s, e) <= 0 ? (S(r[1], e), o = [s, e]) : (S(r[0], e), o = [e]) } this.fireSelectValueChange(o) }, onKeyDown: function (e) { var t = this; if ("input" !== e.target.nodeName.toLowerCase()) { var n = e.keyCode, r = e.ctrlKey || e.metaKey, i = this.$data, o = i.sSelectedValue, a = i.sHoverValue, s = i.firstSelectedValue, c = i.sValue, l = this.$props.disabledDate, u = function (n) { var r = void 0, i = void 0, l = void 0; if (s ? 1 === a.length ? (r = a[0].clone(), i = n(r), l = t.onDayHover(i)) : (r = a[0].isSame(s, "day") ? a[1] : a[0], i = n(r), l = t.onDayHover(i)) : (r = a[0] || o[0] || c[0] || v()(), i = n(r), l = [i], t.fireHoverValueChange(l)), l.length >= 2) { var u = l.some((function (e) { return !Re(c, e, "month") })); if (u) { var h = l.slice().sort((function (e, t) { return e.valueOf() - t.valueOf() })); h[0].isSame(h[1], "month") && (h[1] = h[0].clone().add(1, "month")), t.fireValueChange(h) } } else if (1 === l.length) { var f = c.findIndex((function (e) { return e.isSame(r, "month") })); if (-1 === f && (f = 0), c.every((function (e) { return !e.isSame(i, "month") }))) { var d = c.slice(); d[f] = i.clone(), t.fireValueChange(d) } } return e.preventDefault(), i }; switch (n) { case d["a"].DOWN: return void u((function (e) { return Ne(e, 1, "weeks") })); case d["a"].UP: return void u((function (e) { return Ne(e, -1, "weeks") })); case d["a"].LEFT: return void u(r ? function (e) { return Ne(e, -1, "years") } : function (e) { return Ne(e, -1, "days") }); case d["a"].RIGHT: return void u(r ? function (e) { return Ne(e, 1, "years") } : function (e) { return Ne(e, 1, "days") }); case d["a"].HOME: return void u((function (e) { return Ve(e) })); case d["a"].END: return void u((function (e) { return Ie(e) })); case d["a"].PAGE_DOWN: return void u((function (e) { return Ne(e, 1, "month") })); case d["a"].PAGE_UP: return void u((function (e) { return Ne(e, -1, "month") })); case d["a"].ENTER: var h = void 0; return h = 0 === a.length ? u((function (e) { return e })) : 1 === a.length ? a[0] : a[0].isSame(s, "day") ? a[1] : a[0], !h || l && l(h) || this.onSelect(h), void e.preventDefault(); default: this.__emit("keydown", e) } } }, onDayHover: function (e) { var t = [], n = this.sSelectedValue, r = this.firstSelectedValue, i = this.type; if ("start" === i && n[1]) t = this.compare(e, n[1]) < 0 ? [e, n[1]] : [e]; else if ("end" === i && n[0]) t = this.compare(e, n[0]) > 0 ? [n[0], e] : []; else { if (!r) return this.sHoverValue.length && this.setState({ sHoverValue: [] }), t; t = this.compare(e, r) < 0 ? [e, r] : [r, e] } return this.fireHoverValueChange(t), t }, onToday: function () { var e = C(this.sValue[0]), t = e.clone().add(1, "months"); this.setState({ sValue: [e, t] }) }, onOpenTimePicker: function () { this.setState({ sShowTimePicker: !0 }) }, onCloseTimePicker: function () { this.setState({ sShowTimePicker: !1 }) }, onOk: function () { var e = this.sSelectedValue; this.isAllowedDateAndTime(e) && this.__emit("ok", e) }, onStartInputChange: function () { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; var r = ["left"].concat(t); return Dt.apply(this, r) }, onEndInputChange: function () { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; var r = ["right"].concat(t); return Dt.apply(this, r) }, onStartInputSelect: function (e) { var t = ["left", e, { source: "dateInputSelect" }]; return Dt.apply(this, t) }, onEndInputSelect: function (e) { var t = ["right", e, { source: "dateInputSelect" }]; return Dt.apply(this, t) }, onStartValueChange: function (e) { var t = [].concat(Ot()(this.sValue)); return t[0] = e, this.fireValueChange(t) }, onEndValueChange: function (e) { var t = [].concat(Ot()(this.sValue)); return t[1] = e, this.fireValueChange(t) }, onStartPanelChange: function (e, t) { var n = this.sMode, r = this.sValue, i = [t, n[1]], o = [e || r[0], r[1]]; this.__emit("panelChange", o, i); var a = { sPanelTriggerSource: "start" }; Object(h["s"])(this, "mode") || (a.sMode = i), this.setState(a) }, onEndPanelChange: function (e, t) { var n = this.sMode, r = this.sValue, i = [n[0], t], o = [r[0], e || r[1]]; this.__emit("panelChange", o, i); var a = { sPanelTriggerSource: "end" }; Object(h["s"])(this, "mode") || (a.sMode = i), this.setState(a) }, getStartValue: function () { var e = this.$data, t = e.sSelectedValue, n = e.sShowTimePicker, r = e.sValue, i = e.sMode, o = e.sPanelTriggerSource, a = r[0]; return t[0] && this.$props.timePicker && (a = a.clone(), S(t[0], a)), n && t[0] && (a = t[0]), "end" === o && "date" === i[0] && "date" === i[1] && a.isSame(r[1], "month") && (a = a.clone().subtract(1, "month")), a }, getEndValue: function () { var e = this.$data, t = e.sSelectedValue, n = e.sShowTimePicker, r = e.sValue, i = e.sMode, o = e.sPanelTriggerSource, a = r[1] ? r[1].clone() : r[0].clone().add(1, "month"); return t[1] && this.$props.timePicker && S(t[1], a), n && (a = t[1] ? t[1] : this.getStartValue()), !n && "end" !== o && "date" === i[0] && "date" === i[1] && a.isSame(r[0], "month") && (a = a.clone().add(1, "month")), a }, getEndDisableTime: function () { var e = this.sSelectedValue, t = this.sValue, n = this.disabledTime, r = n(e, "end") || {}, i = e && e[0] || t[0].clone(); if (!e[1] || i.isSame(e[1], "day")) { var o = i.hour(), a = i.minute(), s = i.second(), c = r.disabledHours, l = r.disabledMinutes, u = r.disabledSeconds, h = l ? l() : [], f = u ? u() : []; return c = Pt(o, c), l = Pt(a, l), u = Pt(s, u), { disabledHours: function () { return c }, disabledMinutes: function (e) { return e === o ? l : h }, disabledSeconds: function (e, t) { return e === o && t === a ? u : f } } } return r }, isAllowedDateAndTime: function (e) { return j(e[0], this.disabledDate, this.disabledStartTime) && j(e[1], this.disabledDate, this.disabledEndTime) }, isMonthYearPanelShow: function (e) { return ["month", "year", "decade"].indexOf(e) > -1 }, hasSelectedValue: function () { var e = this.sSelectedValue; return !!e[1] && !!e[0] }, compare: function (e, t) { return this.timePicker ? e.diff(t) : e.diff(t, "days") }, fireSelectValueChange: function (e, t, n) { var r = this.timePicker, i = this.prevSelectedValue; if (r) { var o = Object(h["l"])(r); if (o.defaultValue) { var a = o.defaultValue; !i[0] && e[0] && S(a[0], e[0]), !i[1] && e[1] && S(a[1], e[1]) } } if (!this.sSelectedValue[0] || !this.sSelectedValue[1]) { var s = e[0] || v()(), c = e[1] || s.clone().add(1, "months"); this.setState({ sSelectedValue: e, sValue: e && 2 === e.length ? zt([s, c]) : this.sValue }) } e[0] && !e[1] && (this.setState({ firstSelectedValue: e[0] }), this.fireHoverValueChange(e.concat())), this.__emit("change", e), (t || e[0] && e[1]) && (this.setState({ prevSelectedValue: e, firstSelectedValue: null }), this.fireHoverValueChange([]), this.__emit("select", e, n)), Object(h["s"])(this, "selectedValue") || this.setState({ sSelectedValue: e }) }, fireValueChange: function (e) { Object(h["s"])(this, "value") || this.setState({ sValue: e }), this.__emit("valueChange", e) }, fireHoverValueChange: function (e) { Object(h["s"])(this, "hoverValue") || this.setState({ sHoverValue: e }), this.__emit("hoverChange", e) }, clear: function () { this.fireSelectValueChange([], !0), this.__emit("clear") }, disabledStartTime: function (e) { return this.disabledTime(e, "start") }, disabledEndTime: function (e) { return this.disabledTime(e, "end") }, disabledStartMonth: function (e) { var t = this.sValue; return e.isAfter(t[1], "month") }, disabledEndMonth: function (e) { var t = this.sValue; return e.isBefore(t[0], "month") } }, render: function () { var e, t, n = arguments[0], r = Object(h["l"])(this), i = r.prefixCls, o = r.dateInputPlaceholder, a = r.timePicker, s = r.showOk, c = r.locale, l = r.showClear, u = r.showToday, f = r.type, d = r.seperator, p = Object(h["g"])(this, "clearIcon"), v = this.sHoverValue, m = this.sSelectedValue, g = this.sMode, y = this.sShowTimePicker, x = this.sValue, w = (e = {}, b()(e, i, 1), b()(e, i + "-hidden", !r.visible), b()(e, i + "-range", 1), b()(e, i + "-show-time-picker", y), b()(e, i + "-week-number", r.showWeekNumber), e), _ = { props: r, on: Object(h["k"])(this) }, M = { props: { selectedValue: m }, on: { select: this.onSelect, dayHover: "start" === f && m[1] || "end" === f && m[0] || v.length ? this.onDayHover : At } }, O = void 0, k = void 0; if (o) if (Array.isArray(o)) { var S = Ct()(o, 2); O = S[0], k = S[1] } else O = k = o; var T = !0 === s || !1 !== s && !!a, A = (t = {}, b()(t, i + "-footer", !0), b()(t, i + "-range-bottom", !0), b()(t, i + "-footer-show-ok", T), t), L = this.getStartValue(), j = this.getEndValue(), z = C(L), E = z.month(), P = z.year(), D = L.year() === P && L.month() === E || j.year() === P && j.month() === E, H = L.clone().add(1, "months"), V = H.year() === j.year() && H.month() === j.month(), I = Object(h["x"])(_, M, { props: { hoverValue: v, direction: "left", disabledTime: this.disabledStartTime, disabledMonth: this.disabledStartMonth, format: this.getFormat(), value: L, mode: g[0], placeholder: O, showDateInput: this.showDateInput, timePicker: a, showTimePicker: y || "time" === g[0], enablePrev: !0, enableNext: !V || this.isMonthYearPanelShow(g[1]), clearIcon: p }, on: { inputChange: this.onStartInputChange, inputSelect: this.onStartInputSelect, valueChange: this.onStartValueChange, panelChange: this.onStartPanelChange } }), N = Object(h["x"])(_, M, { props: { hoverValue: v, direction: "right", format: this.getFormat(), timePickerDisabledTime: this.getEndDisableTime(), placeholder: k, value: j, mode: g[1], showDateInput: this.showDateInput, timePicker: a, showTimePicker: y || "time" === g[1], disabledTime: this.disabledEndTime, disabledMonth: this.disabledEndMonth, enablePrev: !V || this.isMonthYearPanelShow(g[0]), enableNext: !0, clearIcon: p }, on: { inputChange: this.onEndInputChange, inputSelect: this.onEndInputSelect, valueChange: this.onEndValueChange, panelChange: this.onEndPanelChange } }), R = null; if (u) { var F = Object(h["x"])(_, { props: { disabled: D, value: x[0], text: c.backToToday }, on: { today: this.onToday } }); R = n(ge, ve()([{ key: "todayButton" }, F])) } var Y = null; if (r.timePicker) { var $ = Object(h["x"])(_, { props: { showTimePicker: y || "time" === g[0] && "time" === g[1], timePickerDisabled: !this.hasSelectedValue() || v.length }, on: { openTimePicker: this.onOpenTimePicker, closeTimePicker: this.onCloseTimePicker } }); Y = n(we, ve()([{ key: "timePickerButton" }, $])) } var B = null; if (T) { var W = Object(h["x"])(_, { props: { okDisabled: !this.isAllowedDateAndTime(m) || !this.hasSelectedValue() || v.length }, on: { ok: this.onOk } }); B = n(be, ve()([{ key: "okButtonNode" }, W])) } var q = this.renderFooter(g); return n("div", { ref: "rootInstance", class: w, attrs: { tabIndex: "0" }, on: { keydown: this.onKeyDown } }, [r.renderSidebar(), n("div", { class: i + "-panel" }, [l && m[0] && m[1] ? n("a", { attrs: { role: "button", title: c.clear }, on: { click: this.clear } }, [p || n("span", { class: i + "-clear-btn" })]) : null, n("div", { class: i + "-date-panel", on: { mouseleave: "both" !== f ? this.onDatePanelLeave : At, mouseenter: "both" !== f ? this.onDatePanelEnter : At } }, [n(Tt, I), n("span", { class: i + "-range-middle" }, [d]), n(Tt, N)]), n("div", { class: A }, [u || r.timePicker || T || q ? n("div", { class: i + "-footer-btn" }, [q, R, Y, B]) : null])])]) } }, Vt = Ht, It = n("1b2b"), Nt = n.n(It), Rt = n("7571"), Ft = function () { return { name: l["a"].string, transitionName: l["a"].string, prefixCls: l["a"].string, inputPrefixCls: l["a"].string, format: l["a"].oneOfType([l["a"].string, l["a"].array, l["a"].func]), disabled: l["a"].bool, allowClear: l["a"].bool, suffixIcon: l["a"].any, popupStyle: l["a"].object, dropdownClassName: l["a"].string, locale: l["a"].any, localeCode: l["a"].string, size: l["a"].oneOf(["large", "small", "default"]), getCalendarContainer: l["a"].func, open: l["a"].bool, disabledDate: l["a"].func, showToday: l["a"].bool, dateRender: l["a"].any, pickerClass: l["a"].string, pickerInputClass: l["a"].string, timePicker: l["a"].any, autoFocus: l["a"].bool, tagPrefixCls: l["a"].string, tabIndex: l["a"].oneOfType([l["a"].string, l["a"].number]), align: l["a"].object.def((function () { return {} })), inputReadOnly: l["a"].bool, valueFormat: l["a"].string } }, Yt = function () { return { value: gt["b"], defaultValue: gt["b"], defaultPickerValue: gt["b"], renderExtraFooter: l["a"].any, placeholder: l["a"].string } }, $t = function () { return i()({}, Ft(), Yt(), { showTime: l["a"].oneOfType([l["a"].object, l["a"].bool]), open: l["a"].bool, disabledTime: l["a"].func, mode: l["a"].oneOf(["time", "date", "month", "year", "decade"]) }) }, Bt = function () { return i()({}, Ft(), Yt(), { placeholder: l["a"].string, monthCellContentRender: l["a"].func }) }, Wt = function () { return i()({}, Ft(), { tagPrefixCls: l["a"].string, value: gt["c"], defaultValue: gt["c"], defaultPickerValue: gt["c"], timePicker: l["a"].any, showTime: l["a"].oneOfType([l["a"].object, l["a"].bool]), ranges: l["a"].object, placeholder: l["a"].arrayOf(String), mode: l["a"].oneOfType([l["a"].string, l["a"].arrayOf(String)]), separator: l["a"].any, disabledTime: l["a"].func, showToday: l["a"].bool, renderExtraFooter: l["a"].any }) }, qt = function () { return i()({}, Ft(), Yt(), { placeholder: l["a"].string }) }, Ut = { functional: !0, render: function (e, t) { var n = t.props, r = n.suffixIcon, i = n.prefixCls; return (r && Object(h["w"])(r) ? Object(f["a"])(r, { class: i + "-picker-icon" }) : e("span", { class: i + "-picker-icon" }, [r])) || e(st["a"], { attrs: { type: "calendar" }, class: i + "-picker-icon" }) } }; function Kt() { } function Gt(e, t) { var n = Ct()(e, 2), r = n[0], i = n[1]; if (r || i) { if (t && "month" === t[0]) return [r, i]; var o = i && i.isSame(r, "month") ? i.clone().add(1, "month") : i; return [r, o] } } function Xt(e) { if (e) return Array.isArray(e) ? e : [e, e.clone().add(1, "month")] } function Jt(e) { return !!Array.isArray(e) && (0 === e.length || e.every((function (e) { return !e }))) } function Qt(e, t) { if (t && e && 0 !== e.length) { var n = Ct()(e, 2), r = n[0], i = n[1]; r && r.locale(t), i && i.locale(t) } } var Zt = { name: "ARangePicker", mixins: [u["a"]], model: { prop: "value", event: "change" }, props: Object(h["t"])(Wt(), { allowClear: !0, showToday: !1, separator: "~" }), inject: { configProvider: { default: function () { return ct["a"] } } }, data: function () { var e = this.value || this.defaultValue || [], t = Ct()(e, 2), n = t[0], r = t[1]; if (n && !Object(lt["a"])(p).isMoment(n) || r && !Object(lt["a"])(p).isMoment(r)) throw new Error("The value/defaultValue of RangePicker must be a moment object array after `antd@2.0`, see: https://u.ant.design/date-picker-value"); var i = !e || Jt(e) ? this.defaultPickerValue : e; return { sValue: e, sShowDate: Xt(i || Object(lt["a"])(p)()), sOpen: this.open, sHoverValue: [] } }, watch: { value: function (e) { var t = e || [], n = { sValue: t }; Nt()(e, this.sValue) || (n = i()({}, n, { sShowDate: Gt(t, this.mode) || this.sShowDate })), this.setState(n) }, open: function (e) { var t = { sOpen: e }; this.setState(t) }, sOpen: function (e, t) { var n = this; this.$nextTick((function () { Object(h["s"])(n, "open") || !t || e || n.focus() })) } }, methods: { setValue: function (e, t) { this.handleChange(e), !t && this.showTime || Object(h["s"])(this, "open") || this.setState({ sOpen: !1 }) }, clearSelection: function (e) { e.preventDefault(), e.stopPropagation(), this.setState({ sValue: [] }), this.handleChange([]) }, clearHoverValue: function () { this.setState({ sHoverValue: [] }) }, handleChange: function (e) { Object(h["s"])(this, "value") || this.setState((function (t) { var n = t.sShowDate; return { sValue: e, sShowDate: Gt(e) || n } })), e[0] && e[1] && e[0].diff(e[1]) > 0 && (e[1] = void 0); var t = Ct()(e, 2), n = t[0], r = t[1]; this.$emit("change", e, [ut(n, this.format), ut(r, this.format)]) }, handleOpenChange: function (e) { Object(h["s"])(this, "open") || this.setState({ sOpen: e }), !1 === e && this.clearHoverValue(), this.$emit("openChange", e) }, handleShowDateChange: function (e) { this.setState({ sShowDate: e }) }, handleHoverChange: function (e) { this.setState({ sHoverValue: e }) }, handleRangeMouseLeave: function () { this.sOpen && this.clearHoverValue() }, handleCalendarInputSelect: function (e) { var t = Ct()(e, 1), n = t[0]; n && this.setState((function (t) { var n = t.sShowDate; return { sValue: e, sShowDate: Gt(e) || n } })) }, handleRangeClick: function (e) { "function" === typeof e && (e = e()), this.setValue(e, !0), this.$emit("ok", e), this.$emit("openChange", !1) }, onMouseEnter: function (e) { this.$emit("mouseenter", e) }, onMouseLeave: function (e) { this.$emit("mouseleave", e) }, focus: function () { this.$refs.picker.focus() }, blur: function () { this.$refs.picker.blur() }, renderFooter: function () { var e = this, t = this.$createElement, n = this.ranges, r = this.$scopedSlots, i = this.$slots, o = this._prefixCls, a = this._tagPrefixCls, s = this.renderExtraFooter || r.renderExtraFooter || i.renderExtraFooter; if (!n && !s) return null; var c = s ? t("div", { class: o + "-footer-extra", key: "extra" }, ["function" === typeof s ? s() : s]) : null, l = n && Object.keys(n).map((function (r) { var i = n[r], o = "function" === typeof i ? i.call(e) : i; return t(Rt["a"], { key: r, attrs: { prefixCls: a, color: "blue" }, on: { click: function () { return e.handleRangeClick(i) }, mouseenter: function () { return e.setState({ sHoverValue: o }) }, mouseleave: e.handleRangeMouseLeave } }, [r]) })), u = l && l.length > 0 ? t("div", { class: o + "-footer-extra " + o + "-range-quick-selector", key: "range" }, [l]) : null; return [u, c] } }, render: function () { var e, t = this, n = arguments[0], r = Object(h["l"])(this), o = Object(h["g"])(this, "suffixIcon"); o = Array.isArray(o) ? o[0] : o; var a = this.sValue, s = this.sShowDate, c = this.sHoverValue, l = this.sOpen, u = this.$scopedSlots, f = Object(h["k"])(this), d = f.calendarChange, p = void 0 === d ? Kt : d, v = f.ok, m = void 0 === v ? Kt : v, g = f.focus, y = void 0 === g ? Kt : g, x = f.blur, _ = void 0 === x ? Kt : x, C = f.panelChange, M = void 0 === C ? Kt : C, O = r.prefixCls, k = r.tagPrefixCls, S = r.popupStyle, T = r.disabledDate, A = r.disabledTime, L = r.showTime, j = r.showToday, z = r.ranges, E = r.locale, P = r.localeCode, D = r.format, H = r.separator, V = r.inputReadOnly, I = this.configProvider.getPrefixCls, N = I("calendar", O), R = I("tag", k); this._prefixCls = N, this._tagPrefixCls = R; var F = r.dateRender || u.dateRender; Qt(a, P), Qt(s, P); var Y = w()((e = {}, b()(e, N + "-time", L), b()(e, N + "-range-with-ranges", z), e)), $ = { on: { change: this.handleChange } }, B = { on: { ok: this.handleChange }, props: {} }; r.timePicker ? $.on.change = function (e) { return t.handleChange(e) } : B = { on: {}, props: {} }, "mode" in r && (B.props.mode = r.mode); var W = Array.isArray(r.placeholder) ? r.placeholder[0] : E.lang.rangePlaceholder[0], q = Array.isArray(r.placeholder) ? r.placeholder[1] : E.lang.rangePlaceholder[1], U = Object(h["x"])(B, { props: { separator: H, format: D, prefixCls: N, renderFooter: this.renderFooter, timePicker: r.timePicker, disabledDate: T, disabledTime: A, dateInputPlaceholder: [W, q], locale: E.lang, dateRender: F, value: s, hoverValue: c, showToday: j, inputReadOnly: V }, on: { change: p, ok: m, valueChange: this.handleShowDateChange, hoverChange: this.handleHoverChange, panelChange: M, inputSelect: this.handleCalendarInputSelect }, class: Y, scopedSlots: u }), K = n(Vt, U), G = {}; r.showTime && (G.width = "350px"); var X = Ct()(a, 2), J = X[0], Q = X[1], Z = !r.disabled && r.allowClear && a && (J || Q) ? n(st["a"], { attrs: { type: "close-circle", theme: "filled" }, class: N + "-picker-clear", on: { click: this.clearSelection } }) : null, ee = n(Ut, { attrs: { suffixIcon: o, prefixCls: N } }), te = function (e) { var t = e.value, i = Ct()(t, 2), o = i[0], a = i[1]; return n("span", { class: r.pickerInputClass }, [n("input", { attrs: { disabled: r.disabled, readOnly: !0, placeholder: W, tabIndex: -1 }, domProps: { value: ut(o, r.format) }, class: N + "-range-picker-input" }), n("span", { class: N + "-range-picker-separator" }, [" ", H, " "]), n("input", { attrs: { disabled: r.disabled, readOnly: !0, placeholder: q, tabIndex: -1 }, domProps: { value: ut(a, r.format) }, class: N + "-range-picker-input" }), Z, ee]) }, ne = Object(h["x"])({ props: r, on: f }, $, { props: { calendar: K, value: a, open: l, prefixCls: N + "-picker-container" }, on: { openChange: this.handleOpenChange }, style: S, scopedSlots: i()({ default: te }, u) }); return n("span", { ref: "picker", class: r.pickerClass, style: G, attrs: { tabIndex: r.disabled ? -1 : 0 }, on: { focus: y, blur: _, mouseenter: this.onMouseEnter, mouseleave: this.onMouseLeave } }, [n(at, ne)]) } }; function en(e, t) { return e && e.format(t) || "" } function tn() { } var nn = { name: "AWeekPicker", mixins: [u["a"]], model: { prop: "value", event: "change" }, props: Object(h["t"])(qt(), { format: "gggg-wo", allowClear: !0 }), inject: { configProvider: { default: function () { return ct["a"] } } }, data: function () { var e = this.value || this.defaultValue; if (e && !Object(lt["a"])(p).isMoment(e)) throw new Error("The value/defaultValue of WeekPicker or MonthPicker must be a moment object"); return { _value: e, _open: this.open } }, watch: { value: function (e) { var t = { _value: e }; this.setState(t), this.prevState = i()({}, this.$data, t) }, open: function (e) { var t = { _open: e }; this.setState(t), this.prevState = i()({}, this.$data, t) }, _open: function (e, t) { var n = this; this.$nextTick((function () { Object(h["s"])(n, "open") || !t || e || n.focus() })) } }, mounted: function () { this.prevState = i()({}, this.$data) }, updated: function () { var e = this; this.$nextTick((function () { Object(h["s"])(e, "open") || !e.prevState._open || e._open || e.focus() })) }, methods: { weekDateRender: function (e) { var t = this.$createElement, n = this.$data._value, r = this._prefixCls, i = this.$scopedSlots, o = this.dateRender || i.dateRender, a = o ? o(e) : e.date(); return n && e.year() === n.year() && e.week() === n.week() ? t("div", { class: r + "-selected-day" }, [t("div", { class: r + "-date" }, [a])]) : t("div", { class: r + "-date" }, [a]) }, handleChange: function (e) { Object(h["s"])(this, "value") || this.setState({ _value: e }), this.$emit("change", e, en(e, this.format)) }, handleOpenChange: function (e) { Object(h["s"])(this, "open") || this.setState({ _open: e }), this.$emit("openChange", e) }, clearSelection: function (e) { e.preventDefault(), e.stopPropagation(), this.handleChange(null) }, focus: function () { this.$refs.input.focus() }, blur: function () { this.$refs.input.blur() }, renderFooter: function () { var e = this.$createElement, t = this._prefixCls, n = this.$scopedSlots, r = this.renderExtraFooter || n.renderExtraFooter; return r ? e("div", { class: t + "-footer-extra" }, [r.apply(void 0, arguments)]) : null } }, render: function () { var e = arguments[0], t = Object(h["l"])(this), n = Object(h["g"])(this, "suffixIcon"); n = Array.isArray(n) ? n[0] : n; var r = this.prefixCls, o = this.disabled, a = this.pickerClass, s = this.popupStyle, c = this.pickerInputClass, l = this.format, u = this.allowClear, f = this.locale, d = this.localeCode, p = this.disabledDate, v = this.defaultPickerValue, m = this.$data, g = this.$scopedSlots, y = Object(h["k"])(this), b = this.configProvider.getPrefixCls, x = b("calendar", r); this._prefixCls = x; var w = m._value, _ = m._open, C = y.focus, M = void 0 === C ? tn : C, O = y.blur, k = void 0 === O ? tn : O; w && d && w.locale(d); var S = Object(h["s"])(this, "placeholder") ? this.placeholder : f.lang.placeholder, T = this.dateRender || g.dateRender || this.weekDateRender, A = e(We, { attrs: { showWeekNumber: !0, dateRender: T, prefixCls: x, format: l, locale: f.lang, showDateInput: !1, showToday: !1, disabledDate: p, renderFooter: this.renderFooter, defaultValue: v } }), L = !o && u && m._value ? e(st["a"], { attrs: { type: "close-circle", theme: "filled" }, class: x + "-picker-clear", on: { click: this.clearSelection } }) : null, j = e(Ut, { attrs: { suffixIcon: n, prefixCls: x } }), z = function (t) { var n = t.value; return e("span", { style: { display: "inline-block", width: "100%" } }, [e("input", { ref: "input", attrs: { disabled: o, readOnly: !0, placeholder: S }, domProps: { value: n && n.format(l) || "" }, class: c, on: { focus: M, blur: k } }), L, j]) }, E = { props: i()({}, t, { calendar: A, prefixCls: x + "-picker-container", value: w, open: _ }), on: i()({}, y, { change: this.handleChange, openChange: this.handleOpenChange }), style: s, scopedSlots: i()({ default: z }, g) }; return e("span", { class: a }, [e(at, E)]) } }, rn = n("db14"), on = wt(i()({}, ft(We, $t()), { name: "ADatePicker" }), $t(), "date"), an = wt(i()({}, ft(Ue, Bt()), { name: "AMonthPicker" }), Bt(), "month"); i()(on, { RangePicker: wt(Zt, Wt(), "date"), MonthPicker: an, WeekPicker: wt(nn, qt(), "week") }), on.install = function (e) { e.use(rn["a"]), e.component(on.name, on), e.component(on.RangePicker.name, on.RangePicker), e.component(on.MonthPicker.name, on.MonthPicker), e.component(on.WeekPicker.name, on.WeekPicker) }; t["a"] = on }, "0c47": function (e, t, n) { var r = n("da84"), i = n("d44e"); i(r.JSON, "JSON", !0) }, "0c63": function (e, t, n) { "use strict"; var r = n("92fa"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("6042"), c = n.n(s), l = n("9b57"), u = n.n(l), h = n("4d26"), f = n.n(h), d = n("3a9b"), p = n("2adb"), v = { primaryColor: "#333", secondaryColor: "#E6E6E6" }, m = { name: "AntdIcon", props: ["type", "primaryColor", "secondaryColor"], displayName: "IconVue", definitions: new p["a"], data: function () { return { twoToneColorPalette: v } }, add: function () { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; t.forEach((function (e) { m.definitions.set(Object(p["f"])(e.name, e.theme), e) })) }, clear: function () { m.definitions.clear() }, get: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : v; if (e) { var n = m.definitions.get(e); return n && "function" === typeof n.icon && (n = a()({}, n, { icon: n.icon(t.primaryColor, t.secondaryColor) })), n } }, setTwoToneColors: function (e) { var t = e.primaryColor, n = e.secondaryColor; v.primaryColor = t, v.secondaryColor = n || Object(p["c"])(t) }, getTwoToneColors: function () { return a()({}, v) }, render: function (e) { var t = this.$props, n = t.type, r = t.primaryColor, i = t.secondaryColor, o = void 0, s = v; if (r && (s = { primaryColor: r, secondaryColor: i || Object(p["c"])(r) }), Object(p["d"])(n)) o = n; else if ("string" === typeof n && (o = m.get(n, s), !o)) return null; return o ? (o && "function" === typeof o.icon && (o = a()({}, o, { icon: o.icon(s.primaryColor, s.secondaryColor) })), Object(p["b"])(e, o.icon, "svg-" + o.name, { attrs: { "data-icon": o.name, width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, on: this.$listeners })) : (Object(p["e"])("type should be string or icon definiton, but got " + n), null) }, install: function (e) { e.component(m.name, m) } }, g = m, y = g, b = n("4d91"), x = n("8e8e"), w = n.n(x), _ = n("daa3"), C = new Set; function M(e) { var t = e.scriptUrl, n = e.extraCommonProps, r = void 0 === n ? {} : n; if ("undefined" !== typeof document && "undefined" !== typeof window && "function" === typeof document.createElement && "string" === typeof t && t.length && !C.has(t)) { var i = document.createElement("script"); i.setAttribute("src", t), i.setAttribute("data-namespace", t), C.add(t), document.body.appendChild(i) } var o = { functional: !0, name: "AIconfont", props: Y.props, render: function (e, t) { var n = t.props, i = t.slots, o = t.listeners, a = t.data, s = n.type, c = w()(n, ["type"]), l = i(), u = l["default"], h = null; s && (h = e("use", { attrs: { "xlink:href": "#" + s } })), u && (h = u); var f = Object(_["x"])(r, a, { props: c, on: o }); return e(Y, f, [h]) } }; return o } var O = n("6a21"), k = { width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true", focusable: "false" }, S = /-fill$/, T = /-o$/, A = /-twotone$/; function L(e) { var t = null; return S.test(e) ? t = "filled" : T.test(e) ? t = "outlined" : A.test(e) && (t = "twoTone"), t } function j(e) { return e.replace(S, "").replace(T, "").replace(A, "") } function z(e, t) { var n = e; return "filled" === t ? n += "-fill" : "outlined" === t ? n += "-o" : "twoTone" === t ? n += "-twotone" : Object(O["a"])(!1, "Icon", "This icon '" + e + "' has unknown theme '" + t + "'"), n } function E(e) { var t = e; switch (e) { case "cross": t = "close"; break; case "interation": t = "interaction"; break; case "canlendar": t = "calendar"; break; case "colum-height": t = "column-height"; break; default: }return Object(O["a"])(t === e, "Icon", "Icon '" + e + "' was a typo and is now deprecated, please use '" + t + "' instead."), t } var P = n("e5cd"); function D(e) { return y.setTwoToneColors({ primaryColor: e }) } function H() { var e = y.getTwoToneColors(); return e.primaryColor } var V = n("db14"); y.add.apply(y, u()(Object.keys(d).map((function (e) { return d[e] })))), D("#1890ff"); var I = "outlined", N = void 0; function R(e, t, n) { var r, o = n.$props, s = n.$slots, l = Object(_["k"])(n), u = o.type, h = o.component, d = o.viewBox, p = o.spin, v = o.theme, m = o.twoToneColor, g = o.rotate, b = o.tabIndex, x = Object(_["c"])(s["default"]); x = 0 === x.length ? void 0 : x, Object(O["a"])(Boolean(u || h || x), "Icon", "Icon should have `type` prop or `component` prop or `children`."); var w = f()((r = {}, c()(r, "anticon", !0), c()(r, "anticon-" + u, !!u), r)), C = f()(c()({}, "anticon-spin", !!p || "loading" === u)), M = g ? { msTransform: "rotate(" + g + "deg)", transform: "rotate(" + g + "deg)" } : void 0, S = { attrs: a()({}, k, { viewBox: d }), class: C, style: M }; d || delete S.attrs.viewBox; var T = function () { if (h) return e(h, S, [x]); if (x) { Object(O["a"])(Boolean(d) || 1 === x.length && "use" === x[0].tag, "Icon", "Make sure that you provide correct `viewBox` prop (default `0 0 1024 1024`) to the icon."); var t = { attrs: a()({}, k), class: C, style: M }; return e("svg", i()([t, { attrs: { viewBox: d } }]), [x]) } if ("string" === typeof u) { var n = u; if (v) { var r = L(u); Object(O["a"])(!r || v === r, "Icon", "The icon name '" + u + "' already specify a theme '" + r + "', the 'theme' prop '" + v + "' will be ignored.") } return n = z(j(E(n)), N || v || I), e(y, { attrs: { focusable: "false", type: n, primaryColor: m }, class: C, style: M }) } }, A = b; void 0 === A && "click" in l && (A = -1); var P = { attrs: { "aria-label": u && t.icon + ": " + u, tabIndex: A }, on: l, class: w, staticClass: "" }; return e("i", P, [T()]) } var F = { name: "AIcon", props: { tabIndex: b["a"].number, type: b["a"].string, component: b["a"].any, viewBox: b["a"].any, spin: b["a"].bool.def(!1), rotate: b["a"].number, theme: b["a"].oneOf(["filled", "outlined", "twoTone"]), twoToneColor: b["a"].string, role: b["a"].string }, render: function (e) { var t = this; return e(P["a"], { attrs: { componentName: "Icon" }, scopedSlots: { default: function (n) { return R(e, n, t) } } }) } }; F.createFromIconfontCN = M, F.getTwoToneColor = H, F.setTwoToneColor = D, F.install = function (e) { e.use(V["a"]), e.component(F.name, F) }; var Y = t["a"] = F }, "0ca1": function (e, t, n) { "use strict"; var r = n("4ea4"), i = r(n("9523")), o = r(n("448a")), a = n("9886"), s = n("b06d"), c = n("5557"), l = n("53b8"), u = n("becb"); function h(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function f(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? h(Object(n), !0).forEach((function (t) { (0, i["default"])(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : h(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } var d = { shape: { rx: 0, ry: 0, ir: 0, or: 0, startAngle: 0, endAngle: 0, clockWise: !0 }, validator: function (e) { var t = e.shape, n = ["rx", "ry", "ir", "or", "startAngle", "endAngle"]; return !n.find((function (e) { return "number" !== typeof t[e] })) || (console.error("Pie shape configuration is abnormal!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape; n.beginPath(); var i = r.rx, a = r.ry, s = r.ir, l = r.or, u = r.startAngle, h = r.endAngle, f = r.clockWise; i = parseInt(i) + .5, a = parseInt(a) + .5, n.arc(i, a, s > 0 ? s : 0, u, h, !f); var d = (0, c.getCircleRadianPoint)(i, a, l, h).map((function (e) { return parseInt(e) + .5 })), p = (0, c.getCircleRadianPoint)(i, a, s, u).map((function (e) { return parseInt(e) + .5 })); n.lineTo.apply(n, (0, o["default"])(d)), n.arc(i, a, l > 0 ? l : 0, h, u, f), n.lineTo.apply(n, (0, o["default"])(p)), n.closePath(), n.stroke(), n.fill() } }, p = { shape: { rx: 0, ry: 0, r: 0, startAngle: 0, endAngle: 0, gradientStartAngle: null, gradientEndAngle: null }, validator: function (e) { var t = e.shape, n = ["rx", "ry", "r", "startAngle", "endAngle"]; return !n.find((function (e) { return "number" !== typeof t[e] })) || (console.error("AgArc shape configuration is abnormal!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape, i = t.style, o = i.gradient; o = o.map((function (e) { return (0, l.getColorFromRgbValue)(e) })), 1 === o.length && (o = [o[0], o[0]]); var a = o.length - 1, s = r.gradientStartAngle, h = r.gradientEndAngle, f = r.startAngle, d = r.endAngle, p = r.r, v = r.rx, m = r.ry; null === s && (s = f), null === h && (h = d); var g = (h - s) / a; g === 2 * Math.PI && (g = 2 * Math.PI - .001); for (var y = 0; y < a; y++) { n.beginPath(); var b = (0, c.getCircleRadianPoint)(v, m, p, f + g * y), x = (0, c.getCircleRadianPoint)(v, m, p, f + g * (y + 1)), w = (0, u.getLinearGradientColor)(n, b, x, [o[y], o[y + 1]]), _ = f + g * y, C = f + g * (y + 1), M = !1; if (C > d && (C = d, M = !0), n.arc(v, m, p, _, C), n.strokeStyle = w, n.stroke(), M) break } } }, v = { shape: { number: [], content: "", position: [0, 0], toFixed: 0, rowGap: 0, formatter: null }, validator: function (e) { var t = e.shape, n = t.number, r = t.content, i = t.position; return n instanceof Array && "string" === typeof r && i instanceof Array || (console.error("NumberText shape configuration is abnormal!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape, i = r.number, o = r.content, a = r.toFixed, c = r.rowGap, l = r.formatter, u = o.split("{nt}"), h = ""; u.forEach((function (e, t) { var n = i[t]; "number" !== typeof n && (n = ""), "number" === typeof n && (n = n.toFixed(a), "function" === typeof l && (n = l(n))), h += e + (n || "") })), s.text.draw({ ctx: n }, { shape: f(f({}, r), {}, { content: h, rowGap: c }) }) } }, m = { shape: { x: 0, y: 0, w: 0, h: 0 }, validator: function (e) { var t = e.shape, n = t.x, r = t.y, i = t.w, o = t.h; return "number" === typeof n && "number" === typeof r && "number" === typeof i && "number" === typeof o || (console.error("lineIcon shape configuration is abnormal!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape; n.beginPath(); var i = r.x, o = r.y, a = r.w, s = r.h, c = s / 2; n.strokeStyle = n.fillStyle, n.moveTo(i, o + c), n.lineTo(i + a, o + c), n.lineWidth = 1, n.stroke(), n.beginPath(); var l = c - 10; l <= 0 && (l = 3), n.arc(i + a / 2, o + c, l, 0, 2 * Math.PI), n.lineWidth = 5, n.stroke(), n.fillStyle = "#fff", n.fill() }, hoverCheck: function (e, t) { var n = t.shape, r = n.x, i = n.y, o = n.w, a = n.h; return (0, c.checkPointIsInRect)(e, r, i, o, a) }, setGraphCenter: function (e, t) { var n = t.shape, r = t.style, i = n.x, o = n.y, a = n.w, s = n.h; r.graphCenter = [i + a / 2, o + s / 2] } }; (0, a.extendNewGraph)("pie", d), (0, a.extendNewGraph)("agArc", p), (0, a.extendNewGraph)("numberText", v), (0, a.extendNewGraph)("lineIcon", m) }, "0cb2": function (e, t, n) { var r = n("7b0b"), i = Math.floor, o = "".replace, a = /\$([$&'`]|\d{1,2}|<[^>]*>)/g, s = /\$([$&'`]|\d{1,2})/g; e.exports = function (e, t, n, c, l, u) { var h = n + e.length, f = c.length, d = s; return void 0 !== l && (l = r(l), d = a), o.call(u, d, (function (r, o) { var a; switch (o.charAt(0)) { case "$": return "$"; case "&": return e; case "`": return t.slice(0, n); case "'": return t.slice(h); case "<": a = l[o.slice(1, -1)]; break; default: var s = +o; if (0 === s) return r; if (s > f) { var u = i(s / 10); return 0 === u ? r : u <= f ? void 0 === c[u - 1] ? o.charAt(1) : c[u - 1] + o.charAt(1) : r } a = c[s - 1] }return void 0 === a ? "" : a })) } }, "0ccb": function (e, t, n) { var r = n("50c4"), i = n("577e"), o = n("1148"), a = n("1d80"), s = Math.ceil, c = function (e) { return function (t, n, c) { var l, u, h = i(a(t)), f = h.length, d = void 0 === c ? " " : i(c), p = r(n); return p <= f || "" == d ? h : (l = p - f, u = o.call(d, s(l / d.length)), u.length > l && (u = u.slice(0, l)), e ? h + u : u + h) } }; e.exports = { start: c(!1), end: c(!0) } }, "0cd4": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.radarAxisConfig = void 0; var r = { show: !0, center: ["50%", "50%"], radius: "65%", startAngle: -Math.PI / 2, splitNum: 5, polygon: !1, axisLabel: { show: !0, labelGap: 15, color: [], style: { fill: "#333" } }, axisLine: { show: !0, color: [], style: { stroke: "#999", lineWidth: 1 } }, splitLine: { show: !0, color: [], style: { stroke: "#d4d4d4", lineWidth: 1 } }, splitArea: { show: !1, color: ["#f5f5f5", "#e6e6e6"], style: {} }, rLevel: -10, animationCurve: "easeOutCubic", animationFrane: 50 }; t.radarAxisConfig = r }, "0cdd": function (e, t) { window.MutationObserver || (window.MutationObserver = function (e) { function t(e) { this.i = [], this.m = e } function n(e) { (function n() { var r = e.takeRecords(); r.length && e.m(r, e), e.h = setTimeout(n, t._period) })() } function r(t) { var n, r = { type: null, target: null, addedNodes: [], removedNodes: [], previousSibling: null, nextSibling: null, attributeName: null, attributeNamespace: null, oldValue: null }; for (n in t) r[n] !== e && t[n] !== e && (r[n] = t[n]); return r } function i(e, t) { var n = l(e, t); return function (i) { var o = i.length; if (t.a && 3 === e.nodeType && e.nodeValue !== n.a && i.push(new r({ type: "characterData", target: e, oldValue: n.a })), t.b && n.b && s(i, e, n.b, t.f), t.c || t.g) var a = c(i, e, n, t); (a || i.length !== o) && (n = l(e, t)) } } function o(e, t) { return t.value } function a(e, t) { return "style" !== t.name ? t.value : e.style.cssText } function s(t, n, i, o) { for (var a, s, c = {}, l = n.attributes, u = l.length; u--;)a = l[u], s = a.name, o && o[s] === e || (v(n, a) !== i[s] && t.push(r({ type: "attributes", target: n, attributeName: s, oldValue: i[s], attributeNamespace: a.namespaceURI })), c[s] = !0); for (s in i) c[s] || t.push(r({ target: n, type: "attributes", attributeName: s, oldValue: i[s] })) } function c(t, n, i, o) { function a(e, n, i, a, l) { var u, h, f, d = e.length - 1; for (l = -~((d - l) / 2); f = e.pop();)u = i[f.j], h = a[f.l], o.c && l && Math.abs(f.j - f.l) >= d && (t.push(r({ type: "childList", target: n, addedNodes: [u], removedNodes: [u], nextSibling: u.nextSibling, previousSibling: u.previousSibling })), l--), o.b && h.b && s(t, u, h.b, o.f), o.a && 3 === u.nodeType && u.nodeValue !== h.a && t.push(r({ type: "characterData", target: u, oldValue: h.a })), o.g && c(u, h) } function c(n, i) { for (var h, f, p, v, m, g = n.childNodes, y = i.c, b = g.length, x = y ? y.length : 0, w = 0, _ = 0, C = 0; _ < b || C < x;)v = g[_], m = (p = y[C]) && p.node, v === m ? (o.b && p.b && s(t, v, p.b, o.f), o.a && p.a !== e && v.nodeValue !== p.a && t.push(r({ type: "characterData", target: v, oldValue: p.a })), f && a(f, n, g, y, w), o.g && (v.childNodes.length || p.c && p.c.length) && c(v, p), _++, C++) : (l = !0, h || (h = {}, f = []), v && (h[p = u(v)] || (h[p] = !0, -1 === (p = d(y, v, C, "node")) ? o.c && (t.push(r({ type: "childList", target: n, addedNodes: [v], nextSibling: v.nextSibling, previousSibling: v.previousSibling })), w++) : f.push({ j: _, l: p })), _++), m && m !== g[_] && (h[p = u(m)] || (h[p] = !0, -1 === (p = d(g, m, _)) ? o.c && (t.push(r({ type: "childList", target: i.node, removedNodes: [m], nextSibling: y[C + 1], previousSibling: y[C - 1] })), w--) : f.push({ j: p, l: C })), C++)); f && a(f, n, g, y, w) } var l; return c(n, i), l } function l(e, t) { var n = !0; return function e(r) { var i = { node: r }; return !t.a || 3 !== r.nodeType && 8 !== r.nodeType ? (t.b && n && 1 === r.nodeType && (i.b = f(r.attributes, (function (e, n) { return t.f && !t.f[n.name] || (e[n.name] = v(r, n)), e }), {})), n && (t.c || t.a || t.b && t.g) && (i.c = h(r.childNodes, e)), n = t.g) : i.a = r.nodeValue, i }(e) } function u(e) { try { return e.id || (e.mo_id = e.mo_id || m++) } catch (t) { try { return e.nodeValue } catch (n) { return m++ } } } function h(e, t) { for (var n = [], r = 0; r < e.length; r++)n[r] = t(e[r], r, e); return n } function f(e, t, n) { for (var r = 0; r < e.length; r++)n = t(n, e[r], r, e); return n } function d(e, t, n, r) { for (; n < e.length; n++)if ((r ? e[n][r] : e[n]) === t) return n; return -1 } t._period = 30, t.prototype = { observe: function (e, t) { for (var r = { b: !!(t.attributes || t.attributeFilter || t.attributeOldValue), c: !!t.childList, g: !!t.subtree, a: !(!t.characterData && !t.characterDataOldValue) }, o = this.i, a = 0; a < o.length; a++)o[a].s === e && o.splice(a, 1); t.attributeFilter && (r.f = f(t.attributeFilter, (function (e, t) { return e[t] = !0, e }), {})), o.push({ s: e, o: i(e, r) }), this.h || n(this) }, takeRecords: function () { for (var e = [], t = this.i, n = 0; n < t.length; n++)t[n].o(e); return e }, disconnect: function () { this.i = [], clearTimeout(this.h), this.h = null } }; var p = document.createElement("i"); p.style.top = 0; var v = (p = "null" != p.attributes.style.value) ? o : a, m = 1; return t }(void 0)) }, "0cfb": function (e, t, n) { var r = n("83ab"), i = n("d039"), o = n("cc12"); e.exports = !r && !i((function () { return 7 != Object.defineProperty(o("div"), "a", { get: function () { return 7 } }).a })) }, "0d24": function (e, t, n) { (function (e) { var r = n("2b3e"), i = n("07c7"), o = t && !t.nodeType && t, a = o && "object" == typeof e && e && !e.nodeType && e, s = a && a.exports === o, c = s ? r.Buffer : void 0, l = c ? c.isBuffer : void 0, u = l || i; e.exports = u }).call(this, n("62e4")(e)) }, "0d3b": function (e, t, n) { var r = n("d039"), i = n("b622"), o = n("c430"), a = i("iterator"); e.exports = !r((function () { var e = new URL("b?a=1&b=2&c=3", "http://a"), t = e.searchParams, n = ""; return e.pathname = "c%20d", t.forEach((function (e, r) { t["delete"]("b"), n += r + e })), o && !e.toJSON || !t.sort || "http://a/c%20d?a=1&c=3" !== e.href || "3" !== t.get("c") || "a=1" !== String(new URLSearchParams("?a=1")) || !t[a] || "a" !== new URL("https://a@b").username || "b" !== new URLSearchParams(new URLSearchParams("a=b")).get("a") || "xn--e1aybc" !== new URL("http://褌械褋褌").host || "#%D0%B1" !== new URL("http://a#斜").hash || "a1c3" !== n || "x" !== new URL("http://x", void 0).host })) }, "0f0f": function (e, t, n) { var r = n("8eeb"), i = n("9934"); function o(e, t) { return e && r(t, i(t), e) } e.exports = o }, "0f32": function (e, t, n) { var r = n("b047"), i = n("1a8c"), o = "Expected a function"; function a(e, t, n) { var a = !0, s = !0; if ("function" != typeof e) throw new TypeError(o); return i(n) && (a = "leading" in n ? !!n.leading : a, s = "trailing" in n ? !!n.trailing : s), r(e, t, { leading: a, maxWait: t, trailing: s }) } e.exports = a }, "0f5c": function (e, t, n) { var r = n("159a"); function i(e, t, n) { return null == e ? e : r(e, t, n) } e.exports = i }, "100e": function (e, t, n) { var r = n("cd9d"), i = n("2286"), o = n("c1c9"); function a(e, t) { return o(i(e, t, r), e + "") } e.exports = a }, 1041: function (e, t, n) { var r = n("8eeb"), i = n("a029"); function o(e, t) { return r(e, i(e), t) } e.exports = o }, "107c": function (e, t, n) { var r = n("d039"), i = n("da84"), o = i.RegExp; e.exports = r((function () { var e = o("(?<a>b)", "g"); return "b" !== e.exec("b").groups.a || "bc" !== "b".replace(e, "$<a>c") })) }, 1098: function (e, t, n) { "use strict"; t.__esModule = !0; var r = n("17ed"), i = c(r), o = n("f893"), a = c(o), s = "function" === typeof a.default && "symbol" === typeof i.default ? function (e) { return typeof e } : function (e) { return e && "function" === typeof a.default && e.constructor === a.default && e !== a.default.prototype ? "symbol" : typeof e }; function c(e) { return e && e.__esModule ? e : { default: e } } t.default = "function" === typeof a.default && "symbol" === s(i.default) ? function (e) { return "undefined" === typeof e ? "undefined" : s(e) } : function (e) { return e && "function" === typeof a.default && e.constructor === a.default && e !== a.default.prototype ? "symbol" : "undefined" === typeof e ? "undefined" : s(e) } }, "10d1": function (e, t, n) { "use strict"; var r, i = n("da84"), o = n("e2cc"), a = n("f183"), s = n("6d61"), c = n("acac"), l = n("861d"), u = n("69f3").enforce, h = n("7f9a"), f = !i.ActiveXObject && "ActiveXObject" in i, d = Object.isExtensible, p = function (e) { return function () { return e(this, arguments.length ? arguments[0] : void 0) } }, v = e.exports = s("WeakMap", p, c); if (h && f) { r = c.getConstructor(p, "WeakMap", !0), a.enable(); var m = v.prototype, g = m["delete"], y = m.has, b = m.get, x = m.set; o(m, { delete: function (e) { if (l(e) && !d(e)) { var t = u(this); return t.frozen || (t.frozen = new r), g.call(this, e) || t.frozen["delete"](e) } return g.call(this, e) }, has: function (e) { if (l(e) && !d(e)) { var t = u(this); return t.frozen || (t.frozen = new r), y.call(this, e) || t.frozen.has(e) } return y.call(this, e) }, get: function (e) { if (l(e) && !d(e)) { var t = u(this); return t.frozen || (t.frozen = new r), y.call(this, e) ? b.call(this, e) : t.frozen.get(e) } return b.call(this, e) }, set: function (e, t) { if (l(e) && !d(e)) { var n = u(this); n.frozen || (n.frozen = new r), y.call(this, e) ? x.call(this, e, t) : n.frozen.set(e, t) } else x.call(this, e, t); return this } }) } }, "10db": function (e, t) { e.exports = function (e, t) { return { enumerable: !(1 & e), configurable: !(2 & e), writable: !(4 & e), value: t } } }, 1148: function (e, t, n) { "use strict"; var r = n("a691"), i = n("577e"), o = n("1d80"); e.exports = function (e) { var t = i(o(this)), n = "", a = r(e); if (a < 0 || a == 1 / 0) throw RangeError("Wrong number of repetitions"); for (; a > 0; (a >>>= 1) && (t += t))1 & a && (n += t); return n } }, "11b0": function (e, t, n) { function r(e) { if ("undefined" !== typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"]) return Array.from(e) } n("a4d3"), n("e01a"), n("d3b7"), n("d28b"), n("3ca3"), n("ddb0"), n("a630"), e.exports = r, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, "11b09": function (e, t, n) { }, 1273: function (e, t, n) { "use strict"; n("b2a3"), n("1b98") }, 1276: function (e, t, n) { "use strict"; var r = n("d784"), i = n("44e7"), o = n("825a"), a = n("1d80"), s = n("4840"), c = n("8aa5"), l = n("50c4"), u = n("577e"), h = n("14c3"), f = n("9263"), d = n("9f7f"), p = n("d039"), v = d.UNSUPPORTED_Y, m = [].push, g = Math.min, y = 4294967295, b = !p((function () { var e = /(?:)/, t = e.exec; e.exec = function () { return t.apply(this, arguments) }; var n = "ab".split(e); return 2 !== n.length || "a" !== n[0] || "b" !== n[1] })); r("split", (function (e, t, n) { var r; return r = "c" == "abbc".split(/(b)*/)[1] || 4 != "test".split(/(?:)/, -1).length || 2 != "ab".split(/(?:ab)*/).length || 4 != ".".split(/(.?)(.?)/).length || ".".split(/()()/).length > 1 || "".split(/.?/).length ? function (e, n) { var r = u(a(this)), o = void 0 === n ? y : n >>> 0; if (0 === o) return []; if (void 0 === e) return [r]; if (!i(e)) return t.call(r, e, o); var s, c, l, h = [], d = (e.ignoreCase ? "i" : "") + (e.multiline ? "m" : "") + (e.unicode ? "u" : "") + (e.sticky ? "y" : ""), p = 0, v = new RegExp(e.source, d + "g"); while (s = f.call(v, r)) { if (c = v.lastIndex, c > p && (h.push(r.slice(p, s.index)), s.length > 1 && s.index < r.length && m.apply(h, s.slice(1)), l = s[0].length, p = c, h.length >= o)) break; v.lastIndex === s.index && v.lastIndex++ } return p === r.length ? !l && v.test("") || h.push("") : h.push(r.slice(p)), h.length > o ? h.slice(0, o) : h } : "0".split(void 0, 0).length ? function (e, n) { return void 0 === e && 0 === n ? [] : t.call(this, e, n) } : t, [function (t, n) { var i = a(this), o = void 0 == t ? void 0 : t[e]; return void 0 !== o ? o.call(t, i, n) : r.call(u(i), t, n) }, function (e, i) { var a = o(this), f = u(e), d = n(r, a, f, i, r !== t); if (d.done) return d.value; var p = s(a, RegExp), m = a.unicode, b = (a.ignoreCase ? "i" : "") + (a.multiline ? "m" : "") + (a.unicode ? "u" : "") + (v ? "g" : "y"), x = new p(v ? "^(?:" + a.source + ")" : a, b), w = void 0 === i ? y : i >>> 0; if (0 === w) return []; if (0 === f.length) return null === h(x, f) ? [f] : []; var _ = 0, C = 0, M = []; while (C < f.length) { x.lastIndex = v ? 0 : C; var O, k = h(x, v ? f.slice(C) : f); if (null === k || (O = g(l(x.lastIndex + (v ? C : 0)), f.length)) === _) C = c(f, C, m); else { if (M.push(f.slice(_, C)), M.length === w) return M; for (var S = 1; S <= k.length - 1; S++)if (M.push(k[S]), M.length === w) return M; C = _ = O } } return M.push(f.slice(_)), M }] }), !b, v) }, 1290: function (e, t) { function n(e) { var t = typeof e; return "string" == t || "number" == t || "symbol" == t || "boolean" == t ? "__proto__" !== e : null === e } e.exports = n }, "129d": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return h })); var r = "undefined" !== typeof window, i = r && window.navigator.userAgent.toLowerCase(), o = i && i.indexOf("msie 9.0") > 0; function a(e, t) { for (var n = Object.create(null), r = e.split(","), i = 0; i < r.length; i++)n[r[i]] = !0; return t ? function (e) { return n[e.toLowerCase()] } : function (e) { return n[e] } } var s = a("text,number,password,search,email,tel,url"); function c(e) { e.target.composing = !0 } function l(e) { e.target.composing && (e.target.composing = !1, u(e.target, "input")) } function u(e, t) { var n = document.createEvent("HTMLEvents"); n.initEvent(t, !0, !0), e.dispatchEvent(n) } function h(e) { return e.directive("ant-input", { inserted: function (e, t, n) { ("textarea" === n.tag || s(e.type)) && (t.modifiers && t.modifiers.lazy || (e.addEventListener("compositionstart", c), e.addEventListener("compositionend", l), e.addEventListener("change", l), o && (e.vmodel = !0))) } }) } o && document.addEventListener("selectionchange", (function () { var e = document.activeElement; e && e.vmodel && u(e, "input") })), t["b"] = { install: function (e) { h(e) } } }, "129f": function (e, t) { e.exports = Object.is || function (e, t) { return e === t ? 0 !== e || 1 / e === 1 / t : e != e && t != t } }, "12a8": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("83ab"), o = n("eb1d"), a = n("7b0b"), s = n("1c0b"), c = n("9bf2"); i && r({ target: "Object", proto: !0, forced: o }, { __defineGetter__: function (e, t) { c.f(a(this), e, { get: s(t), enumerable: !0, configurable: !0 }) } }) }, "130f": function (e, t, n) { var r = n("23e7"), i = n("da84"), o = n("2cf4"), a = !i.setImmediate || !i.clearImmediate; r({ global: !0, bind: !0, enumerable: !0, forced: a }, { setImmediate: o.set, clearImmediate: o.clear }) }, 1310: function (e, t) { function n(e) { return null != e && "object" == typeof e } e.exports = n }, "131a": function (e, t, n) { var r = n("23e7"), i = n("d2bb"); r({ target: "Object", stat: !0 }, { setPrototypeOf: i }) }, "134b": function (e, t, n) { "use strict"; function r(e) { return e && e.__esModule ? e : { default: e } } Object.defineProperty(t, "__esModule", { value: !0 }); var i = n("4039"), o = r(i), a = n("320c"), s = r(a), c = !0, l = !1, u = ["altKey", "bubbles", "cancelable", "ctrlKey", "currentTarget", "eventPhase", "metaKey", "shiftKey", "target", "timeStamp", "view", "type"]; function h(e) { return null === e || void 0 === e } var f = [{ reg: /^key/, props: ["char", "charCode", "key", "keyCode", "which"], fix: function (e, t) { h(e.which) && (e.which = h(t.charCode) ? t.keyCode : t.charCode), void 0 === e.metaKey && (e.metaKey = e.ctrlKey) } }, { reg: /^touch/, props: ["touches", "changedTouches", "targetTouches"] }, { reg: /^hashchange$/, props: ["newURL", "oldURL"] }, { reg: /^gesturechange$/i, props: ["rotation", "scale"] }, { reg: /^(mousewheel|DOMMouseScroll)$/, props: [], fix: function (e, t) { var n = void 0, r = void 0, i = void 0, o = t.wheelDelta, a = t.axis, s = t.wheelDeltaY, c = t.wheelDeltaX, l = t.detail; o && (i = o / 120), l && (i = 0 - (l % 3 === 0 ? l / 3 : l)), void 0 !== a && (a === e.HORIZONTAL_AXIS ? (r = 0, n = 0 - i) : a === e.VERTICAL_AXIS && (n = 0, r = i)), void 0 !== s && (r = s / 120), void 0 !== c && (n = -1 * c / 120), n || r || (r = i), void 0 !== n && (e.deltaX = n), void 0 !== r && (e.deltaY = r), void 0 !== i && (e.delta = i) } }, { reg: /^mouse|contextmenu|click|mspointer|(^DOMMouseScroll$)/i, props: ["buttons", "clientX", "clientY", "button", "offsetX", "relatedTarget", "which", "fromElement", "toElement", "offsetY", "pageX", "pageY", "screenX", "screenY"], fix: function (e, t) { var n = void 0, r = void 0, i = void 0, o = e.target, a = t.button; return o && h(e.pageX) && !h(t.clientX) && (n = o.ownerDocument || document, r = n.documentElement, i = n.body, e.pageX = t.clientX + (r && r.scrollLeft || i && i.scrollLeft || 0) - (r && r.clientLeft || i && i.clientLeft || 0), e.pageY = t.clientY + (r && r.scrollTop || i && i.scrollTop || 0) - (r && r.clientTop || i && i.clientTop || 0)), e.which || void 0 === a || (e.which = 1 & a ? 1 : 2 & a ? 3 : 4 & a ? 2 : 0), !e.relatedTarget && e.fromElement && (e.relatedTarget = e.fromElement === o ? e.toElement : e.fromElement), e } }]; function d() { return c } function p() { return l } function v(e) { var t = e.type, n = "function" === typeof e.stopPropagation || "boolean" === typeof e.cancelBubble; o["default"].call(this), this.nativeEvent = e; var r = p; "defaultPrevented" in e ? r = e.defaultPrevented ? d : p : "getPreventDefault" in e ? r = e.getPreventDefault() ? d : p : "returnValue" in e && (r = e.returnValue === l ? d : p), this.isDefaultPrevented = r; var i = [], a = void 0, s = void 0, c = void 0, h = u.concat(); f.forEach((function (e) { t.match(e.reg) && (h = h.concat(e.props), e.fix && i.push(e.fix)) })), s = h.length; while (s) c = h[--s], this[c] = e[c]; !this.target && n && (this.target = e.srcElement || document), this.target && 3 === this.target.nodeType && (this.target = this.target.parentNode), s = i.length; while (s) a = i[--s], a(this, e); this.timeStamp = e.timeStamp || Date.now() } var m = o["default"].prototype; (0, s["default"])(v.prototype, m, { constructor: v, preventDefault: function () { var e = this.nativeEvent; e.preventDefault ? e.preventDefault() : e.returnValue = l, m.preventDefault.call(this) }, stopPropagation: function () { var e = this.nativeEvent; e.stopPropagation ? e.stopPropagation() : e.cancelBubble = c, m.stopPropagation.call(this) } }), t["default"] = v, e.exports = t["default"] }, 1368: function (e, t, n) { var r = n("da03"), i = function () { var e = /[^.]+$/.exec(r && r.keys && r.keys.IE_PROTO || ""); return e ? "Symbol(src)_1." + e : "" }(); function o(e) { return !!i && i in e } e.exports = o }, 1393: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("857a"), o = n("af03"); r({ target: "String", proto: !0, forced: o("big") }, { big: function () { return i(this, "big", "", "") } }) }, "13d0": function (e, t, n) { }, "13e8": function (e, t) { function n(e) { var t = e.toString(16); return 1 === t.length && (t = "0" + t), t } function r(e, t) { return o("fff", e, t) } function i(e, t) { return o("000", e, t) } function o(e, t, r, i, o) { e = c(e), t = c(t), void 0 === r && (r = .5), void 0 === i && (i = 1), void 0 === o && (o = 1); var a = 2 * r - 1, l = i - o, u = ((a * l === -1 ? a : (a + l) / (1 + a * l)) + 1) / 2, h = 1 - u, f = s(e), d = s(t), p = Math.round(u * f[0] + h * d[0]), v = Math.round(u * f[1] + h * d[1]), m = Math.round(u * f[2] + h * d[2]); return "#" + n(p) + n(v) + n(m) } function a(e, t, n) { return o(e, n || "fff", .5, t, 1 - t) } function s(e) { e = c(e), 3 === e.length && (e = e[0] + e[0] + e[1] + e[1] + e[2] + e[2]); var t = parseInt(e.slice(0, 2), 16), n = parseInt(e.slice(2, 4), 16), r = parseInt(e.slice(4, 6), 16); return [t, n, r] } function c(e) { return e.replace("#", "") } function l(e) { var t = s(e), n = u.apply(0, t); return [n[0].toFixed(0), (100 * n[1]).toFixed(3) + "%", (100 * n[2]).toFixed(3) + "%"].join(",") } function u(e, t, n) { var r = e / 255, i = t / 255, o = n / 255, a = Math.max(r, i, o), s = Math.min(r, i, o), c = a - s, l = (a + s) / 2, u = 0, h = 0; if (Math.abs(c) > 1e-5) { h = l <= .5 ? c / (a + s) : c / (2 - a - s); var f = (a - r) / c, d = (a - i) / c, p = (a - o) / c; u = r == a ? p - d : i == a ? 2 + f - p : 4 + d - f, u *= 60, u < 0 && (u += 360) } return [u, h, l] } e.exports = { lighten: r, darken: i, mix: o, toNum3: s, rgb: a, rgbaToRgb: a, pad2: n, rgbToHsl: u, rrggbbToHsl: l } }, "143c": function (e, t, n) { var r = n("74e8"); r("Int32", (function (e) { return function (t, n, r) { return e(this, t, n, r) } })) }, 1448: function (e, t, n) { var r = n("dfb9"), i = n("b6b7"); e.exports = function (e, t) { return r(i(e), t) } }, "145e": function (e, t, n) { "use strict"; var r = n("7b0b"), i = n("23cb"), o = n("50c4"), a = Math.min; e.exports = [].copyWithin || function (e, t) { var n = r(this), s = o(n.length), c = i(e, s), l = i(t, s), u = arguments.length > 2 ? arguments[2] : void 0, h = a((void 0 === u ? s : i(u, s)) - l, s - c), f = 1; l < c && c < l + h && (f = -1, l += h - 1, c += h - 1); while (h-- > 0) l in n ? n[c] = n[l] : delete n[c], c += f, l += f; return n } }, 1462: function (e, t, n) { "use strict"; n.d(t, "b", (function () { return z })); var r = n("8e8e"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("0464"), u = n("4d91"), h = n("e90a"), f = n("b488"), d = n("18a7"), p = n("4d26"), v = n.n(p), m = n("2b89"), g = n("9b57"), y = n.n(g), b = n("6dd8"), x = n("a3a2"), w = n("7b05"), _ = n("daa3"), C = !("undefined" === typeof window || !window.document || !window.document.createElement), M = "menuitem-overflowed", O = .5; C && n("0cdd"); var k = { name: "DOMWrap", mixins: [f["a"]], data: function () { return this.resizeObserver = null, this.mutationObserver = null, this.originalTotalWidth = 0, this.overflowedItems = [], this.menuItemSizes = [], { lastVisibleIndex: void 0 } }, mounted: function () { var e = this; this.$nextTick((function () { if (e.setChildrenWidthAndResize(), 1 === e.level && "horizontal" === e.mode) { var t = e.$el; if (!t) return; e.resizeObserver = new b["a"]((function (t) { t.forEach(e.setChildrenWidthAndResize) })), [].slice.call(t.children).concat(t).forEach((function (t) { e.resizeObserver.observe(t) })), "undefined" !== typeof MutationObserver && (e.mutationObserver = new MutationObserver((function () { e.resizeObserver.disconnect(), [].slice.call(t.children).concat(t).forEach((function (t) { e.resizeObserver.observe(t) })), e.setChildrenWidthAndResize() })), e.mutationObserver.observe(t, { attributes: !1, childList: !0, subTree: !1 })) } })) }, beforeDestroy: function () { this.resizeObserver && this.resizeObserver.disconnect(), this.mutationObserver && this.mutationObserver.disconnect() }, methods: { getMenuItemNodes: function () { var e = this.$props.prefixCls, t = this.$el; return t ? [].slice.call(t.children).filter((function (t) { return t.className.split(" ").indexOf(e + "-overflowed-submenu") < 0 })) : [] }, getOverflowedSubMenuItem: function (e, t, n) { var r = this.$createElement, o = this.$props, a = o.overflowedIndicator, s = o.level, l = o.mode, u = o.prefixCls, h = o.theme; if (1 !== s || "horizontal" !== l) return null; var f = this.$slots["default"][0], d = Object(_["m"])(f), p = (d.title, i()(d, ["title"])), v = Object(_["i"])(f), g = {}, y = e + "-overflowed-indicator", b = e + "-overflowed-indicator"; 0 === t.length && !0 !== n ? g = { display: "none" } : n && (g = { visibility: "hidden", position: "absolute" }, y += "-placeholder", b += "-placeholder"); var w = h ? u + "-" + h : "", C = {}, M = {}; m["g"].props.forEach((function (e) { void 0 !== p[e] && (C[e] = p[e]) })), m["g"].on.forEach((function (e) { void 0 !== v[e] && (M[e] = v[e]) })); var O = { props: c()({ title: a, popupClassName: w }, C, { eventKey: b, disabled: !1 }), class: u + "-overflowed-submenu", key: y, style: g, on: M }; return r(x["a"], O, [t]) }, setChildrenWidthAndResize: function () { if ("horizontal" === this.mode) { var e = this.$el; if (e) { var t = e.children; if (t && 0 !== t.length) { var n = e.children[t.length - 1]; Object(m["i"])(n, "display", "inline-block"); var r = this.getMenuItemNodes(), i = r.filter((function (e) { return e.className.split(" ").indexOf(M) >= 0 })); i.forEach((function (e) { Object(m["i"])(e, "display", "inline-block") })), this.menuItemSizes = r.map((function (e) { return Object(m["c"])(e) })), i.forEach((function (e) { Object(m["i"])(e, "display", "none") })), this.overflowedIndicatorWidth = Object(m["c"])(e.children[e.children.length - 1]), this.originalTotalWidth = this.menuItemSizes.reduce((function (e, t) { return e + t }), 0), this.handleResize(), Object(m["i"])(n, "display", "none") } } } }, handleResize: function () { var e = this; if ("horizontal" === this.mode) { var t = this.$el; if (t) { var n = Object(m["c"])(t); this.overflowedItems = []; var r = 0, i = void 0; this.originalTotalWidth > n + O && (i = -1, this.menuItemSizes.forEach((function (t) { r += t, r + e.overflowedIndicatorWidth <= n && (i += 1) }))), this.setState({ lastVisibleIndex: i }) } } }, renderChildren: function (e) { var t = this, n = this.$data.lastVisibleIndex, r = Object(_["f"])(this); return (e || []).reduce((function (i, o, a) { var s = o, c = Object(_["m"])(o).eventKey; if ("horizontal" === t.mode) { var l = t.getOverflowedSubMenuItem(c, []); void 0 !== n && -1 !== r[t.prefixCls + "-root"] && (a > n && (s = Object(w["a"])(o, { style: { display: "none" }, props: { eventKey: c + "-hidden" }, class: M })), a === n + 1 && (t.overflowedItems = e.slice(n + 1).map((function (e) { return Object(w["a"])(e, { key: Object(_["m"])(e).eventKey, props: { mode: "vertical-left" } }) })), l = t.getOverflowedSubMenuItem(c, t.overflowedItems))); var u = [].concat(y()(i), [l, s]); return a === e.length - 1 && u.push(t.getOverflowedSubMenuItem(c, [], !0)), u } return [].concat(y()(i), [s]) }), []) } }, render: function () { var e = arguments[0], t = this.$props.tag, n = { on: Object(_["k"])(this) }; return e(t, n, [this.renderChildren(this.$slots["default"])]) } }; k.props = { mode: u["a"].oneOf(["horizontal", "vertical", "vertical-left", "vertical-right", "inline"]), prefixCls: u["a"].string, level: u["a"].number, theme: u["a"].string, overflowedIndicator: u["a"].node, visible: u["a"].bool, hiddenClassName: u["a"].string, tag: u["a"].string.def("div") }; var S = k; function T(e) { return !e.length || e.every((function (e) { return !!e.disabled })) } function A(e, t, n) { var r = e.getState(); e.setState({ activeKey: c()({}, r.activeKey, a()({}, t, n)) }) } function L(e) { return e.eventKey || "0-menu-" } function j(e, t) { if (t) { var n = this.instanceArrayKeyIndexMap[e]; this.instanceArray[n] = t } } function z(e, t) { var n = t, r = e.eventKey, i = e.defaultActiveFirst, o = e.children; if (void 0 !== n && null !== n) { var a = void 0; if (Object(m["e"])(o, (function (e, t) { var i = e.componentOptions.propsData || {}; e && !i.disabled && n === Object(m["a"])(e, r, t) && (a = !0) })), a) return n } return n = null, i ? (Object(m["e"])(o, (function (e, t) { var i = e.componentOptions.propsData || {}, o = null === n || void 0 === n; o && e && !i.disabled && (n = Object(m["a"])(e, r, t)) })), n) : n } var E = { name: "SubPopupMenu", props: Object(_["t"])({ prefixCls: u["a"].string, openTransitionName: u["a"].string, openAnimation: u["a"].oneOfType([u["a"].string, u["a"].object]), openKeys: u["a"].arrayOf(u["a"].oneOfType([u["a"].string, u["a"].number])), visible: u["a"].bool, parentMenu: u["a"].object, eventKey: u["a"].string, store: u["a"].object, forceSubMenuRender: u["a"].bool, focusable: u["a"].bool, multiple: u["a"].bool, defaultActiveFirst: u["a"].bool, activeKey: u["a"].oneOfType([u["a"].string, u["a"].number]), selectedKeys: u["a"].arrayOf(u["a"].oneOfType([u["a"].string, u["a"].number])), defaultSelectedKeys: u["a"].arrayOf(u["a"].oneOfType([u["a"].string, u["a"].number])), defaultOpenKeys: u["a"].arrayOf(u["a"].oneOfType([u["a"].string, u["a"].number])), level: u["a"].number, mode: u["a"].oneOf(["horizontal", "vertical", "vertical-left", "vertical-right", "inline"]), triggerSubMenuAction: u["a"].oneOf(["click", "hover"]), inlineIndent: u["a"].oneOfType([u["a"].number, u["a"].string]), manualRef: u["a"].func, itemIcon: u["a"].any, expandIcon: u["a"].any, overflowedIndicator: u["a"].any, children: u["a"].any.def([]), __propsSymbol__: u["a"].any }, { prefixCls: "rc-menu", mode: "vertical", level: 1, inlineIndent: 24, visible: !0, focusable: !0, manualRef: m["h"] }), mixins: [f["a"]], created: function () { var e = Object(_["l"])(this); this.prevProps = c()({}, e), e.store.setState({ activeKey: c()({}, e.store.getState().activeKey, a()({}, e.eventKey, z(e, e.activeKey))) }), this.instanceArray = [] }, mounted: function () { this.manualRef && this.manualRef(this) }, updated: function () { var e = Object(_["l"])(this), t = this.prevProps, n = "activeKey" in e ? e.activeKey : e.store.getState().activeKey[L(e)], r = z(e, n); if (r !== n) A(e.store, L(e), r); else if ("activeKey" in t) { var i = z(t, t.activeKey); r !== i && A(e.store, L(e), r) } this.prevProps = c()({}, e) }, methods: { onKeyDown: function (e, t) { var n = e.keyCode, r = void 0; if (this.getFlatInstanceArray().forEach((function (t) { t && t.active && t.onKeyDown && (r = t.onKeyDown(e)) })), r) return 1; var i = null; return n !== d["a"].UP && n !== d["a"].DOWN || (i = this.step(n === d["a"].UP ? -1 : 1)), i ? (e.preventDefault(), A(this.$props.store, L(this.$props), i.eventKey), "function" === typeof t && t(i), 1) : void 0 }, onItemHover: function (e) { var t = e.key, n = e.hover; A(this.$props.store, L(this.$props), n ? t : null) }, onDeselect: function (e) { this.__emit("deselect", e) }, onSelect: function (e) { this.__emit("select", e) }, onClick: function (e) { this.__emit("click", e) }, onOpenChange: function (e) { this.__emit("openChange", e) }, onDestroy: function (e) { this.__emit("destroy", e) }, getFlatInstanceArray: function () { return this.instanceArray }, getOpenTransitionName: function () { return this.$props.openTransitionName }, step: function (e) { var t = this.getFlatInstanceArray(), n = this.$props.store.getState().activeKey[L(this.$props)], r = t.length; if (!r) return null; e < 0 && (t = t.concat().reverse()); var i = -1; if (t.every((function (e, t) { return !e || e.eventKey !== n || (i = t, !1) })), this.defaultActiveFirst || -1 === i || !T(t.slice(i, r - 1))) { var o = (i + 1) % r, a = o; do { var s = t[a]; if (s && !s.disabled) return s; a = (a + 1) % r } while (a !== o); return null } }, getIcon: function (e, t) { if (e.$createElement) { var n = e[t]; return void 0 !== n ? n : e.$slots[t] || e.$scopedSlots[t] } var r = Object(_["m"])(e)[t]; if (void 0 !== r) return r; var i = [], o = e.componentOptions || {}; return (o.children || []).forEach((function (e) { e.data && e.data.slot === t && ("template" === e.tag ? i.push(e.children) : i.push(e)) })), i.length ? i : void 0 }, renderCommonMenuItem: function (e, t, n) { var r = this; if (void 0 === e.tag) return e; var i = this.$props.store.getState(), o = this.$props, a = Object(m["a"])(e, o.eventKey, t), s = e.componentOptions.propsData || {}, l = a === i.activeKey[L(this.$props)]; s.disabled || (this.instanceArrayKeyIndexMap[a] = Object.keys(this.instanceArrayKeyIndexMap).length); var u = Object(_["i"])(e), h = { props: c()({ mode: s.mode || o.mode, level: o.level, inlineIndent: o.inlineIndent, renderMenuItem: this.renderMenuItem, rootPrefixCls: o.prefixCls, index: t, parentMenu: o.parentMenu, manualRef: s.disabled ? m["h"] : j.bind(this, a), eventKey: a, active: !s.disabled && l, multiple: o.multiple, openTransitionName: this.getOpenTransitionName(), openAnimation: o.openAnimation, subMenuOpenDelay: o.subMenuOpenDelay, subMenuCloseDelay: o.subMenuCloseDelay, forceSubMenuRender: o.forceSubMenuRender, builtinPlacements: o.builtinPlacements, itemIcon: this.getIcon(e, "itemIcon") || this.getIcon(this, "itemIcon"), expandIcon: this.getIcon(e, "expandIcon") || this.getIcon(this, "expandIcon") }, n), on: { click: function (e) { (u.click || m["h"])(e), r.onClick(e) }, itemHover: this.onItemHover, openChange: this.onOpenChange, deselect: this.onDeselect, select: this.onSelect } }; return ("inline" === o.mode || Object(m["d"])()) && (h.props.triggerSubMenuAction = "click"), Object(w["a"])(e, h) }, renderMenuItem: function (e, t, n) { if (!e) return null; var r = this.$props.store.getState(), i = { openKeys: r.openKeys, selectedKeys: r.selectedKeys, triggerSubMenuAction: this.triggerSubMenuAction, isRootMenu: !1, subMenuKey: n }; return this.renderCommonMenuItem(e, t, i) } }, render: function () { var e = this, t = arguments[0], n = i()(this.$props, []), r = n.eventKey, o = n.prefixCls, a = n.visible, s = n.level, c = n.mode, u = n.theme; this.instanceArray = [], this.instanceArrayKeyIndexMap = {}; var h = v()(n.prefixCls, n.prefixCls + "-" + n.mode), f = { props: { tag: "ul", visible: a, prefixCls: o, level: s, mode: c, theme: u, overflowedIndicator: Object(_["g"])(this, "overflowedIndicator") }, attrs: { role: n.role || "menu" }, class: h, on: Object(l["a"])(Object(_["k"])(this), ["click"]) }; return n.focusable && (f.attrs.tabIndex = "0", f.on.keydown = this.onKeyDown), t(S, f, [n.children.map((function (t, n) { return e.renderMenuItem(t, n, r || "0-menu-") }))]) } }; t["a"] = Object(h["a"])()(E) }, "14c3": function (e, t, n) { var r = n("c6b6"), i = n("9263"); e.exports = function (e, t) { var n = e.exec; if ("function" === typeof n) { var o = n.call(e, t); if ("object" !== typeof o) throw TypeError("RegExp exec method returned something other than an Object or null"); return o } if ("RegExp" !== r(e)) throw TypeError("RegExp#exec called on incompatible receiver"); return i.call(e, t) } }, 1501: function (e, t, n) { "use strict"; n.d(t, "b", (function () { return c })), n.d(t, "c", (function () { return l })), n.d(t, "a", (function () { return u })), n.d(t, "d", (function () { return h })), n.d(t, "f", (function () { return f })), n.d(t, "e", (function () { return d })); var r = n("2cf8"), i = n("c1df"), o = n("6a21"), a = n("2768"), s = n.n(a), c = { validator: function (e) { return "string" === typeof e || s()(e) || i["isMoment"](e) } }, l = { validator: function (e) { return !!Array.isArray(e) && (0 === e.length || -1 === e.findIndex((function (e) { return "string" !== typeof e })) || -1 === e.findIndex((function (e) { return !s()(e) && !i["isMoment"](e) }))) } }, u = { validator: function (e) { return Array.isArray(e) ? 0 === e.length || -1 === e.findIndex((function (e) { return "string" !== typeof e })) || -1 === e.findIndex((function (e) { return !s()(e) && !i["isMoment"](e) })) : "string" === typeof e || s()(e) || i["isMoment"](e) } }; function h(e, t, n, a) { var s = Array.isArray(t) ? t : [t]; s.forEach((function (t) { t && (a && Object(o["a"])(Object(r["a"])(i)(t, a).isValid(), e, "When set `valueFormat`, `" + n + "` should provides invalidate string time. "), !a && Object(o["a"])(Object(r["a"])(i).isMoment(t) && t.isValid(), e, "`" + n + "` provides invalidate moment time. If you want to set empty value, use `null` instead.")) })) } var f = function (e, t) { return Array.isArray(e) ? e.map((function (e) { return "string" === typeof e && e ? Object(r["a"])(i)(e, t) : e || null })) : "string" === typeof e && e ? Object(r["a"])(i)(e, t) : e || null }, d = function (e, t) { return Array.isArray(e) ? e.map((function (e) { return Object(r["a"])(i).isMoment(e) ? e.format(t) : e })) : Object(r["a"])(i).isMoment(e) ? e.format(t) : e } }, "159a": function (e, t, n) { var r = n("32b3"), i = n("e2e4"), o = n("c098"), a = n("1a8c"), s = n("f4d6"); function c(e, t, n, c) { if (!a(e)) return e; t = i(t, e); var l = -1, u = t.length, h = u - 1, f = e; while (null != f && ++l < u) { var d = s(t[l]), p = n; if ("__proto__" === d || "constructor" === d || "prototype" === d) return e; if (l != h) { var v = f[d]; p = c ? c(v, d, f) : void 0, void 0 === p && (p = a(v) ? v : o(t[l + 1]) ? [] : {}) } r(f, d, p), f = f[d] } return e } e.exports = c }, "159b": function (e, t, n) { var r = n("da84"), i = n("fdbc"), o = n("17c2"), a = n("9112"); for (var s in i) { var c = r[s], l = c && c.prototype; if (l && l.forEach !== o) try { a(l, "forEach", o) } catch (u) { l.forEach = o } } }, "15aa": function (e, t, n) { }, "15f3": function (e, t, n) { var r = n("89d9"), i = n("8604"); function o(e, t) { return r(e, t, (function (t, n) { return i(e, n) })) } e.exports = o }, 1609: function (e, t) { e.exports = function (e) { if ("function" != typeof e) throw TypeError(e + " is not a function!"); return e } }, "160c": function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("8e8e"), c = n.n(s), l = n("4d91"), u = n("daa3"), h = { prefixCls: l["a"].string, disabled: l["a"].bool.def(!1), checkedChildren: l["a"].any, unCheckedChildren: l["a"].any, tabIndex: l["a"].oneOfType([l["a"].string, l["a"].number]), checked: l["a"].bool.def(!1), defaultChecked: l["a"].bool.def(!1), autoFocus: l["a"].bool.def(!1), loadingIcon: l["a"].any }, f = n("b488"), d = { name: "VcSwitch", mixins: [f["a"]], model: { prop: "checked", event: "change" }, props: i()({}, h, { prefixCls: h.prefixCls.def("rc-switch") }), data: function () { var e = !1; return e = Object(u["s"])(this, "checked") ? !!this.checked : !!this.defaultChecked, { stateChecked: e } }, watch: { checked: function (e) { this.stateChecked = e } }, mounted: function () { var e = this; this.$nextTick((function () { var t = e.autoFocus, n = e.disabled; t && !n && e.focus() })) }, methods: { setChecked: function (e, t) { this.disabled || (Object(u["s"])(this, "checked") || (this.stateChecked = e), this.$emit("change", e, t)) }, handleClick: function (e) { var t = !this.stateChecked; this.setChecked(t, e), this.$emit("click", t, e) }, handleKeyDown: function (e) { 37 === e.keyCode ? this.setChecked(!1, e) : 39 === e.keyCode && this.setChecked(!0, e) }, handleMouseUp: function (e) { this.$refs.refSwitchNode && this.$refs.refSwitchNode.blur(), this.$emit("mouseup", e) }, focus: function () { this.$refs.refSwitchNode.focus() }, blur: function () { this.$refs.refSwitchNode.blur() } }, render: function () { var e, t = arguments[0], n = Object(u["l"])(this), r = n.prefixCls, o = n.disabled, s = n.loadingIcon, l = n.tabIndex, h = c()(n, ["prefixCls", "disabled", "loadingIcon", "tabIndex"]), f = this.stateChecked, d = (e = {}, a()(e, r, !0), a()(e, r + "-checked", f), a()(e, r + "-disabled", o), e), p = { props: i()({}, h), on: i()({}, Object(u["k"])(this), { keydown: this.handleKeyDown, click: this.handleClick, mouseup: this.handleMouseUp }), attrs: { type: "button", role: "switch", "aria-checked": f, disabled: o, tabIndex: l }, class: d, ref: "refSwitchNode" }; return t("button", p, [s, t("span", { class: r + "-inner" }, [f ? Object(u["g"])(this, "checkedChildren") : Object(u["g"])(this, "unCheckedChildren")])]) } }, p = d, v = n("a9d4"), m = n("0c63"), g = n("9cba"), y = n("db14"), b = n("6a21"), x = { name: "ASwitch", __ANT_SWITCH: !0, model: { prop: "checked", event: "change" }, props: { prefixCls: l["a"].string, size: l["a"].oneOf(["small", "default", "large"]), disabled: l["a"].bool, checkedChildren: l["a"].any, unCheckedChildren: l["a"].any, tabIndex: l["a"].oneOfType([l["a"].string, l["a"].number]), checked: l["a"].bool, defaultChecked: l["a"].bool, autoFocus: l["a"].bool, loading: l["a"].bool }, inject: { configProvider: { default: function () { return g["a"] } } }, methods: { focus: function () { this.$refs.refSwitchNode.focus() }, blur: function () { this.$refs.refSwitchNode.blur() } }, created: function () { Object(b["a"])(Object(u["b"])(this, "checked") || !Object(u["b"])(this, "value"), "Switch", "`value` is not validate prop, do you mean `checked`?") }, render: function () { var e, t = arguments[0], n = Object(u["l"])(this), r = n.prefixCls, o = n.size, s = n.loading, l = n.disabled, h = c()(n, ["prefixCls", "size", "loading", "disabled"]), f = this.configProvider.getPrefixCls, d = f("switch", r), g = (e = {}, a()(e, d + "-small", "small" === o), a()(e, d + "-loading", s), e), y = s ? t(m["a"], { attrs: { type: "loading" }, class: d + "-loading-icon" }) : null, b = { props: i()({}, h, { prefixCls: d, loadingIcon: y, checkedChildren: Object(u["g"])(this, "checkedChildren"), unCheckedChildren: Object(u["g"])(this, "unCheckedChildren"), disabled: l || s }), on: Object(u["k"])(this), class: g, ref: "refSwitchNode" }; return t(v["a"], { attrs: { insertExtraNode: !0 } }, [t(p, b)]) }, install: function (e) { e.use(y["a"]), e.component(x.name, x) } }; t["a"] = x }, "170b": function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("50c4"), o = n("23cb"), a = n("b6b7"), s = r.aTypedArray, c = r.exportTypedArrayMethod; c("subarray", (function (e, t) { var n = s(this), r = n.length, c = o(e, r), l = a(n); return new l(n.buffer, n.byteOffset + c * n.BYTES_PER_ELEMENT, i((void 0 === t ? r : o(t, r)) - c)) })) }, 1727: function (e, t, n) { e.exports = { default: n("7d42"), __esModule: !0 } }, "17c2": function (e, t, n) { "use strict"; var r = n("b727").forEach, i = n("a640"), o = i("forEach"); e.exports = o ? [].forEach : function (e) { return r(this, e, arguments.length > 1 ? arguments[1] : void 0) } }, "17ed": function (e, t, n) { e.exports = { default: n("511f"), __esModule: !0 } }, "182d": function (e, t, n) { var r = n("f8cd"); e.exports = function (e, t) { var n = r(e); if (n % t) throw RangeError("Wrong offset"); return n } }, 1836: function (e, t, n) { var r = n("6ca1"), i = n("6438").f, o = {}.toString, a = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [], s = function (e) { try { return i(e) } catch (t) { return a.slice() } }; e.exports.f = function (e) { return a && "[object Window]" == o.call(e) ? s(e) : i(r(e)) } }, 1838: function (e, t, n) { var r = n("c05f"), i = n("9b02"), o = n("8604"), a = n("f608"), s = n("08cc"), c = n("20ec"), l = n("f4d6"), u = 1, h = 2; function f(e, t) { return a(e) && s(t) ? c(l(e), t) : function (n) { var a = i(n, e); return void 0 === a && a === t ? o(n, e) : r(t, a, u | h) } } e.exports = f }, "18a5": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("857a"), o = n("af03"); r({ target: "String", proto: !0, forced: o("anchor") }, { anchor: function (e) { return i(this, "a", "name", e) } }) }, "18a7": function (e, t, n) { "use strict"; var r = { MAC_ENTER: 3, BACKSPACE: 8, TAB: 9, NUM_CENTER: 12, ENTER: 13, SHIFT: 16, CTRL: 17, ALT: 18, PAUSE: 19, CAPS_LOCK: 20, ESC: 27, SPACE: 32, PAGE_UP: 33, PAGE_DOWN: 34, END: 35, HOME: 36, LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, PRINT_SCREEN: 44, INSERT: 45, DELETE: 46, ZERO: 48, ONE: 49, TWO: 50, THREE: 51, FOUR: 52, FIVE: 53, SIX: 54, SEVEN: 55, EIGHT: 56, NINE: 57, QUESTION_MARK: 63, A: 65, B: 66, C: 67, D: 68, E: 69, F: 70, G: 71, H: 72, I: 73, J: 74, K: 75, L: 76, M: 77, N: 78, O: 79, P: 80, Q: 81, R: 82, S: 83, T: 84, U: 85, V: 86, W: 87, X: 88, Y: 89, Z: 90, META: 91, WIN_KEY_RIGHT: 92, CONTEXT_MENU: 93, NUM_ZERO: 96, NUM_ONE: 97, NUM_TWO: 98, NUM_THREE: 99, NUM_FOUR: 100, NUM_FIVE: 101, NUM_SIX: 102, NUM_SEVEN: 103, NUM_EIGHT: 104, NUM_NINE: 105, NUM_MULTIPLY: 106, NUM_PLUS: 107, NUM_MINUS: 109, NUM_PERIOD: 110, NUM_DIVISION: 111, F1: 112, F2: 113, F3: 114, F4: 115, F5: 116, F6: 117, F7: 118, F8: 119, F9: 120, F10: 121, F11: 122, F12: 123, NUMLOCK: 144, SEMICOLON: 186, DASH: 189, EQUALS: 187, COMMA: 188, PERIOD: 190, SLASH: 191, APOSTROPHE: 192, SINGLE_QUOTE: 222, OPEN_SQUARE_BRACKET: 219, BACKSLASH: 220, CLOSE_SQUARE_BRACKET: 221, WIN_KEY: 224, MAC_FF_META: 224, WIN_IME: 229, isTextModifyingKeyEvent: function (e) { var t = e.keyCode; if (e.altKey && !e.ctrlKey || e.metaKey || t >= r.F1 && t <= r.F12) return !1; switch (t) { case r.ALT: case r.CAPS_LOCK: case r.CONTEXT_MENU: case r.CTRL: case r.DOWN: case r.END: case r.ESC: case r.HOME: case r.INSERT: case r.LEFT: case r.MAC_FF_META: case r.META: case r.NUMLOCK: case r.NUM_CENTER: case r.PAGE_DOWN: case r.PAGE_UP: case r.PAUSE: case r.PRINT_SCREEN: case r.RIGHT: case r.SHIFT: case r.UP: case r.WIN_KEY: case r.WIN_KEY_RIGHT: return !1; default: return !0 } }, isCharacterKey: function (e) { if (e >= r.ZERO && e <= r.NINE) return !0; if (e >= r.NUM_ZERO && e <= r.NUM_MULTIPLY) return !0; if (e >= r.A && e <= r.Z) return !0; if (-1 !== window.navigation.userAgent.indexOf("WebKit") && 0 === e) return !0; switch (e) { case r.SPACE: case r.QUESTION_MARK: case r.NUM_PLUS: case r.NUM_MINUS: case r.NUM_PERIOD: case r.NUM_DIVISION: case r.SEMICOLON: case r.DASH: case r.EQUALS: case r.COMMA: case r.PERIOD: case r.SLASH: case r.APOSTROPHE: case r.SINGLE_QUOTE: case r.OPEN_SQUARE_BRACKET: case r.BACKSLASH: case r.CLOSE_SQUARE_BRACKET: return !0; default: return !1 } } }; t["a"] = r }, "18ad": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.doUpdate = d, t.Updater = void 0; var i = r(n("448a")), o = r(n("7037")), a = r(n("970b")), s = function e(t, n) { (0, a["default"])(this, e); var r = t.chart, i = t.key, o = t.getGraphConfig; "function" === typeof o ? (r[i] || (this.graphs = r[i] = []), Object.assign(this, t), this.update(n)) : console.warn("Updater need function getGraphConfig!") }; function c(e, t) { var n = e.graphs, r = e.chart.render, i = n.length, o = t.length; if (i > o) { var a = n.splice(o); a.forEach((function (e) { return e.forEach((function (e) { return r.delGraph(e) })) })) } } function l(e, t, n, r) { var i = r.getGraphConfig, o = r.chart.render, a = r.beforeChange, s = i(t, r); u(e, s, o), e.forEach((function (e, t) { var n = s[t]; "function" === typeof a && a(e, n), f(e, n) })) } function u(e, t, n) { var r = e.length, o = t.length; if (o > r) { var a = e.slice(-1)[0], s = o - r, c = new Array(s).fill(0).map((function (e) { return n.clone(a) })); e.push.apply(e, (0, i["default"])(c)) } else if (o < r) { var l = e.splice(o); l.forEach((function (e) { return n.delGraph(e) })) } } function h(e, t, n, r) { var i = r.getGraphConfig, o = r.getStartGraphConfig, a = r.chart, s = a.render, c = null; "function" === typeof o && (c = o(t, r)); var l = i(t, r); if (l.length) { c ? (e[n] = c.map((function (e) { return s.add(e) })), e[n].forEach((function (e, t) { var n = l[t]; f(e, n) }))) : e[n] = l.map((function (e) { return s.add(e) })); var u = r.afterAddGraph; "function" === typeof u && u(e[n]) } } function f(e, t) { var n = Object.keys(t); n.forEach((function (n) { "shape" === n || "style" === n ? e.animation(n, t[n], !0) : e[n] = t[n] })) } function d() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = e.chart, n = e.series, r = e.key, i = e.getGraphConfig, o = e.getStartGraphConfig, a = e.beforeChange, c = e.beforeUpdate, l = e.afterAddGraph; t[r] ? t[r].update(n) : t[r] = new s({ chart: t, key: r, getGraphConfig: i, getStartGraphConfig: o, beforeChange: a, beforeUpdate: c, afterAddGraph: l }, n) } t.Updater = s, s.prototype.update = function (e) { var t = this, n = this.graphs, r = this.beforeUpdate; if (c(this, e), e.length) { var i = (0, o["default"])(r); e.forEach((function (e, o) { "function" === i && r(n, e, o, t); var a = n[o]; a ? l(a, e, o, t) : h(n, e, o, t) })) } } }, "18ce": function (e, t, n) { "use strict"; var r = n("1098"), i = n.n(r), o = n("c544"), a = n("3c55"), s = n.n(a), c = n("d41d"), l = 0 !== o["a"].endEvents.length, u = ["Webkit", "Moz", "O", "ms"], h = ["-webkit-", "-moz-", "-o-", "ms-", ""]; function f(e, t) { for (var n = window.getComputedStyle(e, null), r = "", i = 0; i < h.length; i++)if (r = n.getPropertyValue(h[i] + t), r) break; return r } function d(e) { if (l) { var t = parseFloat(f(e, "transition-delay")) || 0, n = parseFloat(f(e, "transition-duration")) || 0, r = parseFloat(f(e, "animation-delay")) || 0, i = parseFloat(f(e, "animation-duration")) || 0, o = Math.max(n + t, i + r); e.rcEndAnimTimeout = setTimeout((function () { e.rcEndAnimTimeout = null, e.rcEndListener && e.rcEndListener() }), 1e3 * o + 200) } } function p(e) { e.rcEndAnimTimeout && (clearTimeout(e.rcEndAnimTimeout), e.rcEndAnimTimeout = null) } var v = function (e, t, n) { var r = "object" === ("undefined" === typeof t ? "undefined" : i()(t)), a = r ? t.name : t, l = r ? t.active : t + "-active", u = n, h = void 0, f = void 0, v = s()(e); return n && "[object Object]" === Object.prototype.toString.call(n) && (u = n.end, h = n.start, f = n.active), e.rcEndListener && e.rcEndListener(), e.rcEndListener = function (t) { t && t.target !== e || (e.rcAnimTimeout && (Object(c["a"])(e.rcAnimTimeout), e.rcAnimTimeout = null), p(e), v.remove(a), v.remove(l), o["a"].removeEndEventListener(e, e.rcEndListener), e.rcEndListener = null, u && u()) }, o["a"].addEndEventListener(e, e.rcEndListener), h && h(), v.add(a), e.rcAnimTimeout = Object(c["b"])((function () { e.rcAnimTimeout = null, v.add(a), v.add(l), f && Object(c["b"])(f, 0), d(e) }), 30), { stop: function () { e.rcEndListener && e.rcEndListener() } } }; v.style = function (e, t, n) { e.rcEndListener && e.rcEndListener(), e.rcEndListener = function (t) { t && t.target !== e || (e.rcAnimTimeout && (Object(c["a"])(e.rcAnimTimeout), e.rcAnimTimeout = null), p(e), o["a"].removeEndEventListener(e, e.rcEndListener), e.rcEndListener = null, n && n()) }, o["a"].addEndEventListener(e, e.rcEndListener), e.rcAnimTimeout = Object(c["b"])((function () { for (var n in t) t.hasOwnProperty(n) && (e.style[n] = t[n]); e.rcAnimTimeout = null, d(e) }), 0) }, v.setTransition = function (e, t, n) { var r = t, i = n; void 0 === n && (i = r, r = ""), r = r || "", u.forEach((function (t) { e.style[t + "Transition" + r] = i })) }, v.isCssAnimationSupported = l, t["a"] = v }, "18d8": function (e, t, n) { var r = n("234d"), i = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, o = /\\(\\)?/g, a = r((function (e) { var t = []; return 46 === e.charCodeAt(0) && t.push(""), e.replace(i, (function (e, n, r, i) { t.push(r ? i.replace(o, "$1") : n || e) })), t })); e.exports = a }, 1913: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("857a"), o = n("af03"); r({ target: "String", proto: !0, forced: o("fontsize") }, { fontsize: function (e) { return i(this, "font", "size", e) } }) }, 1917: function (e, t) { t.f = {}.propertyIsEnumerable }, "197b": function (e, t, n) { var r = n("746f"); r("species") }, "19aa": function (e, t) { e.exports = function (e, t, n) { if (!(e instanceof t)) throw TypeError("Incorrect " + (n ? n + " " : "") + "invocation"); return e } }, "19fa": function (e, t, n) { var r = n("fc5e"), i = n("c901"); e.exports = function (e) { return function (t, n) { var o, a, s = String(i(t)), c = r(n), l = s.length; return c < 0 || c >= l ? e ? "" : void 0 : (o = s.charCodeAt(c), o < 55296 || o > 56319 || c + 1 === l || (a = s.charCodeAt(c + 1)) < 56320 || a > 57343 ? e ? s.charAt(c) : o : e ? s.slice(c, c + 2) : a - 56320 + (o - 55296 << 10) + 65536) } } }, "1a0b": function (e, t, n) { (function (t, n) { e.exports = n() })(0, (function () { "use strict"; var e = function () { "function" != typeof Object.assign && (Object.assign = function (e, t) { if (null == e) throw new TypeError("Cannot convert undefined or null to object"); for (var n = Object(e), r = 1; r < arguments.length; r++) { var i = arguments[r]; if (null != i) for (var o in i) Object.prototype.hasOwnProperty.call(i, o) && (n[o] = i[o]) } return n }), Element.prototype.matches || (Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (e) { var t = (this.document || this.ownerDocument).querySelectorAll(e), n = t.length; while (--n >= 0 && t.item(n) !== this); return n > -1 }) }; function t(e) { var t = void 0; return t = document.createElement("div"), t.innerHTML = e, t.children } function n(e) { return !!e && (e instanceof HTMLCollection || e instanceof NodeList) } function r(e) { var t = document.querySelectorAll(e); return n(t) ? t : [t] } var i = []; function o(e) { if (e) { if (e instanceof o) return e; this.selector = e; var i = e.nodeType, a = []; 9 === i || 1 === i ? a = [e] : n(e) || e instanceof Array ? a = e : "string" === typeof e && (e = e.replace("/\n/mg", "").trim(), a = 0 === e.indexOf("<") ? t(e) : r(e)); var s = a.length; if (!s) return this; var c = void 0; for (c = 0; c < s; c++)this[c] = a[c]; this.length = s } } function a(e) { return new o(e) } o.prototype = { constructor: o, forEach: function (e) { var t = void 0; for (t = 0; t < this.length; t++) { var n = this[t], r = e.call(n, n, t); if (!1 === r) break } return this }, clone: function (e) { var t = []; return this.forEach((function (n) { t.push(n.cloneNode(!!e)) })), a(t) }, get: function (e) { var t = this.length; return e >= t && (e %= t), a(this[e]) }, first: function () { return this.get(0) }, last: function () { var e = this.length; return this.get(e - 1) }, on: function (e, t, n) { n || (n = t, t = null); var r = []; return r = e.split(/\s+/), this.forEach((function (e) { r.forEach((function (r) { r && (i.push({ elem: e, type: r, fn: n }), t ? e.addEventListener(r, (function (e) { var r = e.target; r.matches(t) && n.call(r, e) })) : e.addEventListener(r, n)) })) })) }, off: function (e, t) { return this.forEach((function (n) { n.removeEventListener(e, t) })) }, attr: function (e, t) { return null == t ? this[0].getAttribute(e) : this.forEach((function (n) { n.setAttribute(e, t) })) }, addClass: function (e) { return e ? this.forEach((function (t) { var n = void 0; t.className ? (n = t.className.split(/\s/), n = n.filter((function (e) { return !!e.trim() })), n.indexOf(e) < 0 && n.push(e), t.className = n.join(" ")) : t.className = e })) : this }, removeClass: function (e) { return e ? this.forEach((function (t) { var n = void 0; t.className && (n = t.className.split(/\s/), n = n.filter((function (t) { return t = t.trim(), !(!t || t === e) })), t.className = n.join(" ")) })) : this }, css: function (e, t) { var n = e + ":" + t + ";"; return this.forEach((function (t) { var r = (t.getAttribute("style") || "").trim(), i = void 0, o = []; r ? (i = r.split(";"), i.forEach((function (e) { var t = e.split(":").map((function (e) { return e.trim() })); 2 === t.length && o.push(t[0] + ":" + t[1]) })), o = o.map((function (t) { return 0 === t.indexOf(e) ? n : t })), o.indexOf(n) < 0 && o.push(n), t.setAttribute("style", o.join("; "))) : t.setAttribute("style", n) })) }, show: function () { return this.css("display", "block") }, hide: function () { return this.css("display", "none") }, children: function () { var e = this[0]; return e ? a(e.children) : null }, childNodes: function () { var e = this[0]; return e ? a(e.childNodes) : null }, append: function (e) { return this.forEach((function (t) { e.forEach((function (e) { t.appendChild(e) })) })) }, remove: function () { return this.forEach((function (e) { if (e.remove) e.remove(); else { var t = e.parentElement; t && t.removeChild(e) } })) }, isContain: function (e) { var t = this[0], n = e[0]; return t.contains(n) }, getSizeData: function () { var e = this[0]; return e.getBoundingClientRect() }, getNodeName: function () { var e = this[0]; return e.nodeName }, find: function (e) { var t = this[0]; return a(t.querySelectorAll(e)) }, text: function (e) { if (e) return this.forEach((function (t) { t.innerHTML = e })); var t = this[0]; return t.innerHTML.replace(/<.*?>/g, (function () { return "" })) }, html: function (e) { var t = this[0]; return null == e ? t.innerHTML : (t.innerHTML = e, this) }, val: function () { var e = this[0]; return e.value.trim() }, focus: function () { return this.forEach((function (e) { e.focus() })) }, parent: function () { var e = this[0]; return a(e.parentElement) }, parentUntil: function (e, t) { var n = document.querySelectorAll(e), r = n.length; if (!r) return null; var i = t || this[0]; if ("BODY" === i.nodeName) return null; var o = i.parentElement, s = void 0; for (s = 0; s < r; s++)if (o === n[s]) return a(o); return this.parentUntil(e, o) }, equal: function (e) { return 1 === e.nodeType ? this[0] === e : this[0] === e[0] }, insertBefore: function (e) { var t = a(e), n = t[0]; return n ? this.forEach((function (e) { var t = n.parentNode; t.insertBefore(e, n) })) : this }, insertAfter: function (e) { var t = a(e), n = t[0]; return n ? this.forEach((function (e) { var t = n.parentNode; t.lastChild === n ? t.appendChild(e) : t.insertBefore(e, n.nextSibling) })) : this } }, a.offAll = function () { i.forEach((function (e) { var t = e.elem, n = e.type, r = e.fn; t.removeEventListener(n, r) })) }; var s = { menus: ["head", "bold", "fontSize", "fontName", "italic", "underline", "strikeThrough", "foreColor", "backColor", "link", "list", "justify", "quote", "emoticon", "image", "table", "video", "code", "undo", "redo"], fontNames: ["瀹嬩綋", "寰蒋闆呴粦", "Arial", "Tahoma", "Verdana"], colors: ["#000000", "#eeece0", "#1c487f", "#4d80bf", "#c24f4a", "#8baa4a", "#7b5ba1", "#46acc8", "#f9963b", "#ffffff"], emotions: [{ title: "榛樿", type: "image", content: [{ alt: "[鍧忕瑧]", src: "http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/50/pcmoren_huaixiao_org.png" }, { alt: "[鑸斿睆]", src: "http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/40/pcmoren_tian_org.png" }, { alt: "[姹", src: "http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/3c/pcmoren_wu_org.png" }] }, { title: "鏂版氮", type: "image", content: [{ src: "http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/7a/shenshou_thumb.gif", alt: "[鑽夋偿椹琞" }, { src: "http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/60/horse2_thumb.gif", alt: "[绁為┈]" }, { src: "http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/bc/fuyun_thumb.gif", alt: "[娴簯]" }] }, { title: "emoji", type: "emoji", content: "馃榾 馃槂 馃槃 馃榿 馃槅 馃槄 馃槀 馃槉 馃槆 馃檪 馃檭 馃槈 馃槗 馃槳 馃槾 馃檮 馃 馃槵 馃".split(/\s/) }], zIndex: 1e4, debug: !1, linkCheck: function (e, t) { return !0 }, linkImgCheck: function (e) { return !0 }, pasteFilterStyle: !0, pasteIgnoreImg: !1, pasteTextHandle: function (e) { return e }, showLinkImg: !0, linkImgCallback: function (e) { }, uploadImgMaxSize: 5242880, uploadImgShowBase64: !1, uploadFileName: "", uploadImgParams: {}, uploadImgHeaders: {}, withCredentials: !1, uploadImgTimeout: 1e4, uploadImgHooks: { before: function (e, t, n) { }, success: function (e, t, n) { }, fail: function (e, t, n) { }, error: function (e, t) { }, timeout: function (e, t) { } }, qiniu: !1 }, c = { _ua: navigator.userAgent, isWebkit: function () { var e = /webkit/i; return e.test(this._ua) }, isIE: function () { return "ActiveXObject" in window } }; function l(e, t) { var n = void 0, r = void 0; for (n in e) if (e.hasOwnProperty(n) && (r = t.call(e, n, e[n]), !1 === r)) break } function u(e, t) { var n = void 0, r = void 0, i = void 0, o = e.length || 0; for (n = 0; n < o; n++)if (r = e[n], i = t.call(e, r, n), !1 === i) break } function h(e) { return e + Math.random().toString().slice(2) } function f(e) { return null == e ? "" : e.replace(/</gm, "&lt;").replace(/>/gm, "&gt;").replace(/"/gm, "&quot;").replace(/(\r\n|\r|\n)/g, "<br/>") } function d(e) { return "function" === typeof e } function p(e) { this.editor = e, this.$elem = a('<div class="w-e-menu">\n            <i class="w-e-icon-bold"></i>\n        </div>'), this.type = "click", this._active = !1 } p.prototype = { constructor: p, onClick: function (e) { var t = this.editor, n = t.selection.isSelectionEmpty(); n && t.selection.createEmptyRange(), t.cmd.do("bold"), n && (t.selection.collapseRange(), t.selection.restoreSelection()) }, tryChangeActive: function (e) { var t = this.editor, n = this.$elem; t.cmd.queryCommandState("bold") ? (this._active = !0, n.addClass("w-e-active")) : (this._active = !1, n.removeClass("w-e-active")) } }; var v = function (e, t) { var n = e.config.langArgs || [], r = t; return n.forEach((function (e) { var t = e.reg, n = e.val; t.test(r) && (r = r.replace(t, (function () { return n }))) })), r }, m = function () { }; function g(e, t) { var n = this, r = e.editor; this.menu = e, this.opt = t; var i = a('<div class="w-e-droplist"></div>'), o = t.$title, s = void 0; o && (s = o.html(), s = v(r, s), o.html(s), o.addClass("w-e-dp-title"), i.append(o)); var c = t.list || [], l = t.type || "list", u = t.onClick || m, h = a('<ul class="' + ("list" === l ? "w-e-list" : "w-e-block") + '"></ul>'); i.append(h), c.forEach((function (e) { var t = e.$elem, i = t.html(); i = v(r, i), t.html(i); var o = e.value, s = a('<li class="w-e-item"></li>'); t && (s.append(t), h.append(s), s.on("click", (function (e) { u(o), n.hideTimeoutId = setTimeout((function () { n.hide() }), 0) }))) })), i.on("mouseleave", (function (e) { n.hideTimeoutId = setTimeout((function () { n.hide() }), 0) })), this.$container = i, this._rendered = !1, this._show = !1 } function y(e) { var t = this; this.editor = e, this.$elem = a('<div class="w-e-menu"><i class="w-e-icon-header"></i></div>'), this.type = "droplist", this._active = !1, this.droplist = new g(this, { width: 100, $title: a("<p>璁剧疆鏍囬</p>"), type: "list", list: [{ $elem: a("<h1>H1</h1>"), value: "<h1>" }, { $elem: a("<h2>H2</h2>"), value: "<h2>" }, { $elem: a("<h3>H3</h3>"), value: "<h3>" }, { $elem: a("<h4>H4</h4>"), value: "<h4>" }, { $elem: a("<h5>H5</h5>"), value: "<h5>" }, { $elem: a("<p>姝f枃</p>"), value: "<p>" }], onClick: function (e) { t._command(e) } }) } function b(e) { var t = this; this.editor = e, this.$elem = a('<div class="w-e-menu"><i class="w-e-icon-text-heigh"></i></div>'), this.type = "droplist", this._active = !1, this.droplist = new g(this, { width: 160, $title: a("<p>瀛楀彿</p>"), type: "list", list: [{ $elem: a('<span style="font-size: x-small;">x-small</span>'), value: "1" }, { $elem: a('<span style="font-size: small;">small</span>'), value: "2" }, { $elem: a("<span>normal</span>"), value: "3" }, { $elem: a('<span style="font-size: large;">large</span>'), value: "4" }, { $elem: a('<span style="font-size: x-large;">x-large</span>'), value: "5" }, { $elem: a('<span style="font-size: xx-large;">xx-large</span>'), value: "6" }], onClick: function (e) { t._command(e) } }) } function x(e) { var t = this; this.editor = e, this.$elem = a('<div class="w-e-menu"><i class="w-e-icon-font"></i></div>'), this.type = "droplist", this._active = !1; var n = e.config, r = n.fontNames || []; this.droplist = new g(this, { width: 100, $title: a("<p>瀛椾綋</p>"), type: "list", list: r.map((function (e) { return { $elem: a('<span style="font-family: ' + e + ';">' + e + "</span>"), value: e } })), onClick: function (e) { t._command(e) } }) } g.prototype = { constructor: g, show: function () { this.hideTimeoutId && clearTimeout(this.hideTimeoutId); var e = this.menu, t = e.$elem, n = this.$container; if (!this._show) { if (this._rendered) n.show(); else { var r = t.getSizeData().height || 0, i = this.opt.width || 100; n.css("margin-top", r + "px").css("width", i + "px"), t.append(n), this._rendered = !0 } this._show = !0 } }, hide: function () { this.showTimeoutId && clearTimeout(this.showTimeoutId); var e = this.$container; this._show && (e.hide(), this._show = !1) } }, y.prototype = { constructor: y, _command: function (e) { var t = this.editor, n = t.selection.getSelectionContainerElem(); t.$textElem.equal(n) || t.cmd.do("formatBlock", e) }, tryChangeActive: function (e) { var t = this.editor, n = this.$elem, r = /^h/i, i = t.cmd.queryCommandValue("formatBlock"); r.test(i) ? (this._active = !0, n.addClass("w-e-active")) : (this._active = !1, n.removeClass("w-e-active")) } }, b.prototype = { constructor: b, _command: function (e) { var t = this.editor; t.cmd.do("fontSize", e) } }, x.prototype = { constructor: x, _command: function (e) { var t = this.editor; t.cmd.do("fontName", e) } }; var w = function () { }, _ = []; function C(e, t) { this.menu = e, this.opt = t } function M(e) { this.editor = e, this.$elem = a('<div class="w-e-menu"><i class="w-e-icon-link"></i></div>'), this.type = "panel", this._active = !1 } function O(e) { this.editor = e, this.$elem = a('<div class="w-e-menu">\n            <i class="w-e-icon-italic"></i>\n        </div>'), this.type = "click", this._active = !1 } function k(e) { this.editor = e, this.$elem = a('<div class="w-e-menu">\n            <i class="w-e-icon-redo"></i>\n        </div>'), this.type = "click", this._active = !1 } function S(e) { this.editor = e, this.$elem = a('<div class="w-e-menu">\n            <i class="w-e-icon-strikethrough"></i>\n        </div>'), this.type = "click", this._active = !1 } function T(e) { this.editor = e, this.$elem = a('<div class="w-e-menu">\n            <i class="w-e-icon-underline"></i>\n        </div>'), this.type = "click", this._active = !1 } function A(e) { this.editor = e, this.$elem = a('<div class="w-e-menu">\n            <i class="w-e-icon-undo"></i>\n        </div>'), this.type = "click", this._active = !1 } function L(e) { var t = this; this.editor = e, this.$elem = a('<div class="w-e-menu"><i class="w-e-icon-list2"></i></div>'), this.type = "droplist", this._active = !1, this.droplist = new g(this, { width: 120, $title: a("<p>璁剧疆鍒楄〃</p>"), type: "list", list: [{ $elem: a('<span><i class="w-e-icon-list-numbered"></i> 鏈夊簭鍒楄〃</span>'), value: "insertOrderedList" }, { $elem: a('<span><i class="w-e-icon-list2"></i> 鏃犲簭鍒楄〃</span>'), value: "insertUnorderedList" }], onClick: function (e) { t._command(e) } }) } function j(e) { var t = this; this.editor = e, this.$elem = a('<div class="w-e-menu"><i class="w-e-icon-paragraph-left"></i></div>'), this.type = "droplist", this._active = !1, this.droplist = new g(this, { width: 100, $title: a("<p>瀵归綈鏂瑰紡</p>"), type: "list", list: [{ $elem: a('<span><i class="w-e-icon-paragraph-left"></i> 闈犲乏</span>'), value: "justifyLeft" }, { $elem: a('<span><i class="w-e-icon-paragraph-center"></i> 灞呬腑</span>'), value: "justifyCenter" }, { $elem: a('<span><i class="w-e-icon-paragraph-right"></i> 闈犲彸</span>'), value: "justifyRight" }], onClick: function (e) { t._command(e) } }) } function z(e) { var t = this; this.editor = e, this.$elem = a('<div class="w-e-menu"><i class="w-e-icon-pencil2"></i></div>'), this.type = "droplist"; var n = e.config, r = n.colors || []; this._active = !1, this.droplist = new g(this, { width: 120, $title: a("<p>鏂囧瓧棰滆壊</p>"), type: "inline-block", list: r.map((function (e) { return { $elem: a('<i style="color:' + e + ';" class="w-e-icon-pencil2"></i>'), value: e } })), onClick: function (e) { t._command(e) } }) } function E(e) { var t = this; this.editor = e, this.$elem = a('<div class="w-e-menu"><i class="w-e-icon-paint-brush"></i></div>'), this.type = "droplist"; var n = e.config, r = n.colors || []; this._active = !1, this.droplist = new g(this, { width: 120, $title: a("<p>鑳屾櫙鑹�</p>"), type: "inline-block", list: r.map((function (e) { return { $elem: a('<i style="color:' + e + ';" class="w-e-icon-paint-brush"></i>'), value: e } })), onClick: function (e) { t._command(e) } }) } function P(e) { this.editor = e, this.$elem = a('<div class="w-e-menu">\n            <i class="w-e-icon-quotes-left"></i>\n        </div>'), this.type = "click", this._active = !1 } function D(e) { this.editor = e, this.$elem = a('<div class="w-e-menu">\n            <i class="w-e-icon-terminal"></i>\n        </div>'), this.type = "panel", this._active = !1 } function H(e) { this.editor = e, this.$elem = a('<div class="w-e-menu">\n            <i class="w-e-icon-happy"></i>\n        </div>'), this.type = "panel", this._active = !1 } function V(e) { this.editor = e, this.$elem = a('<div class="w-e-menu"><i class="w-e-icon-table2"></i></div>'), this.type = "panel", this._active = !1 } function I(e) { this.editor = e, this.$elem = a('<div class="w-e-menu"><i class="w-e-icon-play"></i></div>'), this.type = "panel", this._active = !1 } function N(e) { this.editor = e; var t = h("w-e-img"); this.$elem = a('<div class="w-e-menu" id="' + t + '"><i class="w-e-icon-image"></i></div>'), e.imgMenuId = t, this.type = "panel", this._active = !1 } C.prototype = { constructor: C, show: function () { var e = this, t = this.menu; if (!(_.indexOf(t) >= 0)) { var n = t.editor, r = a("body"), i = n.$textContainerElem, o = this.opt, s = a('<div class="w-e-panel-container"></div>'), c = o.width || 300; s.css("width", c + "px").css("margin-left", (0 - c) / 2 + "px"); var l = a('<i class="w-e-icon-close w-e-panel-close"></i>'); s.append(l), l.on("click", (function () { e.hide() })); var u = a('<ul class="w-e-panel-tab-title"></ul>'), h = a('<div class="w-e-panel-tab-content"></div>'); s.append(u).append(h); var f = o.height; f && h.css("height", f + "px").css("overflow-y", "auto"); var d = o.tabs || [], p = [], m = []; d.forEach((function (e, t) { if (e) { var r = e.title || "", i = e.tpl || ""; r = v(n, r), i = v(n, i); var o = a('<li class="w-e-item">' + r + "</li>"); u.append(o); var s = a(i); h.append(s), o._index = t, p.push(o), m.push(s), 0 === t ? (o._active = !0, o.addClass("w-e-active")) : s.hide(), o.on("click", (function (e) { o._active || (p.forEach((function (e) { e._active = !1, e.removeClass("w-e-active") })), m.forEach((function (e) { e.hide() })), o._active = !0, o.addClass("w-e-active"), s.show()) })) } })), s.on("click", (function (e) { e.stopPropagation() })), r.on("click", (function (t) { e.hide() })), i.append(s), d.forEach((function (t, n) { if (t) { var r = t.events || []; r.forEach((function (t) { var r = t.selector, i = t.type, o = t.fn || w, a = m[n]; a.find(r).on(i, (function (t) { t.stopPropagation(); var n = o(t); n && e.hide() })) })) } })); var g = s.find("input[type=text],textarea"); g.length && g.get(0).focus(), this.$container = s, this._hideOtherPanels(), _.push(t) } }, hide: function () { var e = this.menu, t = this.$container; t && t.remove(), _ = _.filter((function (t) { return t !== e })) }, _hideOtherPanels: function () { _.length && _.forEach((function (e) { var t = e.panel || {}; t.hide && t.hide() })) } }, M.prototype = { constructor: M, onClick: function (e) { var t = this.editor, n = void 0; if (this._active) { if (n = t.selection.getSelectionContainerElem(), !n) return; t.selection.createRangeByElem(n), t.selection.restoreSelection(), this._createPanel(n.text(), n.attr("href")) } else t.selection.isSelectionEmpty() ? this._createPanel("", "") : this._createPanel(t.selection.getSelectionText(), "") }, _createPanel: function (e, t) { var n = this, r = h("input-link"), i = h("input-text"), o = h("btn-ok"), s = h("btn-del"), c = this._active ? "inline-block" : "none", l = new C(this, { width: 300, tabs: [{ title: "閾炬帴", tpl: '<div>\n                            <input id="' + i + '" type="text" class="block" value="' + e + '" placeholder="閾炬帴鏂囧瓧"/></td>\n                            <input id="' + r + '" type="text" class="block" value="' + t + '" placeholder="http://..."/></td>\n                            <div class="w-e-button-container">\n                                <button id="' + o + '" class="right">鎻掑叆</button>\n                                <button id="' + s + '" class="gray right" style="display:' + c + '">鍒犻櫎閾炬帴</button>\n                            </div>\n                        </div>', events: [{ selector: "#" + o, type: "click", fn: function () { var e = a("#" + r), t = a("#" + i), o = e.val(), s = t.val(); return n._insertLink(s, o), !0 } }, { selector: "#" + s, type: "click", fn: function () { return n._delLink(), !0 } }] }] }); l.show(), this.panel = l }, _delLink: function () { if (this._active) { var e = this.editor, t = e.selection.getSelectionContainerElem(); if (t) { var n = e.selection.getSelectionText(); e.cmd.do("insertHTML", "<span>" + n + "</span>") } } }, _insertLink: function (e, t) { var n = this.editor, r = n.config, i = r.linkCheck, o = !0; i && "function" === typeof i && (o = i(e, t)), !0 === o ? n.cmd.do("insertHTML", '<a href="' + t + '" target="_blank">' + e + "</a>") : alert(o) }, tryChangeActive: function (e) { var t = this.editor, n = this.$elem, r = t.selection.getSelectionContainerElem(); r && ("A" === r.getNodeName() ? (this._active = !0, n.addClass("w-e-active")) : (this._active = !1, n.removeClass("w-e-active"))) } }, O.prototype = { constructor: O, onClick: function (e) { var t = this.editor, n = t.selection.isSelectionEmpty(); n && t.selection.createEmptyRange(), t.cmd.do("italic"), n && (t.selection.collapseRange(), t.selection.restoreSelection()) }, tryChangeActive: function (e) { var t = this.editor, n = this.$elem; t.cmd.queryCommandState("italic") ? (this._active = !0, n.addClass("w-e-active")) : (this._active = !1, n.removeClass("w-e-active")) } }, k.prototype = { constructor: k, onClick: function (e) { var t = this.editor; t.cmd.do("redo") } }, S.prototype = { constructor: S, onClick: function (e) { var t = this.editor, n = t.selection.isSelectionEmpty(); n && t.selection.createEmptyRange(), t.cmd.do("strikeThrough"), n && (t.selection.collapseRange(), t.selection.restoreSelection()) }, tryChangeActive: function (e) { var t = this.editor, n = this.$elem; t.cmd.queryCommandState("strikeThrough") ? (this._active = !0, n.addClass("w-e-active")) : (this._active = !1, n.removeClass("w-e-active")) } }, T.prototype = { constructor: T, onClick: function (e) { var t = this.editor, n = t.selection.isSelectionEmpty(); n && t.selection.createEmptyRange(), t.cmd.do("underline"), n && (t.selection.collapseRange(), t.selection.restoreSelection()) }, tryChangeActive: function (e) { var t = this.editor, n = this.$elem; t.cmd.queryCommandState("underline") ? (this._active = !0, n.addClass("w-e-active")) : (this._active = !1, n.removeClass("w-e-active")) } }, A.prototype = { constructor: A, onClick: function (e) { var t = this.editor; t.cmd.do("undo") } }, L.prototype = { constructor: L, _command: function (e) { var t = this.editor, n = t.$textElem; if (t.selection.restoreSelection(), !t.cmd.queryCommandState(e)) { t.cmd.do(e); var r = t.selection.getSelectionContainerElem(); if ("LI" === r.getNodeName() && (r = r.parent()), !1 !== /^ol|ul$/i.test(r.getNodeName()) && !r.equal(n)) { var i = r.parent(); i.equal(n) || (r.insertAfter(i), i.remove()) } } }, tryChangeActive: function (e) { var t = this.editor, n = this.$elem; t.cmd.queryCommandState("insertUnOrderedList") || t.cmd.queryCommandState("insertOrderedList") ? (this._active = !0, n.addClass("w-e-active")) : (this._active = !1, n.removeClass("w-e-active")) } }, j.prototype = { constructor: j, _command: function (e) { var t = this.editor; t.cmd.do(e) } }, z.prototype = { constructor: z, _command: function (e) { var t = this.editor; t.cmd.do("foreColor", e) } }, E.prototype = { constructor: E, _command: function (e) { var t = this.editor; t.cmd.do("backColor", e) } }, P.prototype = { constructor: P, onClick: function (e) { var t = this.editor, n = t.selection.getSelectionContainerElem(), r = n.getNodeName(); if (c.isIE()) { var i = void 0, o = void 0; if ("P" === r) return i = n.text(), o = a("<blockquote>" + i + "</blockquote>"), o.insertAfter(n), void n.remove(); "BLOCKQUOTE" === r && (i = n.text(), o = a("<p>" + i + "</p>"), o.insertAfter(n), n.remove()) } else "BLOCKQUOTE" === r ? t.cmd.do("formatBlock", "<P>") : t.cmd.do("formatBlock", "<BLOCKQUOTE>") }, tryChangeActive: function (e) { var t = this.editor, n = this.$elem, r = /^BLOCKQUOTE$/i, i = t.cmd.queryCommandValue("formatBlock"); r.test(i) ? (this._active = !0, n.addClass("w-e-active")) : (this._active = !1, n.removeClass("w-e-active")) } }, D.prototype = { constructor: D, onClick: function (e) { var t = this.editor, n = t.selection.getSelectionStartElem(), r = t.selection.getSelectionEndElem(), i = t.selection.isSelectionEmpty(), o = t.selection.getSelectionText(), s = void 0; if (n.equal(r)) return i ? void (this._active ? this._createPanel(n.html()) : this._createPanel()) : (s = a("<code>" + o + "</code>"), t.cmd.do("insertElem", s), t.selection.createRangeByElem(s, !1), void t.selection.restoreSelection()); t.selection.restoreSelection() }, _createPanel: function (e) { var t = this; e = e || ""; var n = e ? "edit" : "new", r = h("texxt"), i = h("btn"), o = new C(this, { width: 500, tabs: [{ title: "鎻掑叆浠g爜", tpl: '<div>\n                        <textarea id="' + r + '" style="height:145px;;">' + e + '</textarea>\n                        <div class="w-e-button-container">\n                            <button id="' + i + '" class="right">鎻掑叆</button>\n                        </div>\n                    <div>', events: [{ selector: "#" + i, type: "click", fn: function () { var e = a("#" + r), i = e.val() || e.html(); return i = f(i), "new" === n ? t._insertCode(i) : t._updateCode(i), !0 } }] }] }); o.show(), this.panel = o }, _insertCode: function (e) { var t = this.editor; t.cmd.do("insertHTML", "<pre><code>" + e + "</code></pre><p><br></p>") }, _updateCode: function (e) { var t = this.editor, n = t.selection.getSelectionContainerElem(); n && (n.html(e), t.selection.restoreSelection()) }, tryChangeActive: function (e) { var t = this.editor, n = this.$elem, r = t.selection.getSelectionContainerElem(); if (r) { var i = r.parent(); "CODE" === r.getNodeName() && "PRE" === i.getNodeName() ? (this._active = !0, n.addClass("w-e-active")) : (this._active = !1, n.removeClass("w-e-active")) } } }, H.prototype = { constructor: H, onClick: function () { this._createPanel() }, _createPanel: function () { var e = this, t = this.editor, n = t.config, r = n.emotions || [], i = []; r.forEach((function (t) { var n = t.type, r = t.content || [], o = ""; "emoji" === n && r.forEach((function (e) { e && (o += '<span class="w-e-item">' + e + "</span>") })), "image" === n && r.forEach((function (e) { var t = e.src, n = e.alt; t && (o += '<span class="w-e-item"><img src="' + t + '" alt="' + n + '" data-w-e="1"/></span>') })), i.push({ title: t.title, tpl: '<div class="w-e-emoticon-container">' + o + "</div>", events: [{ selector: "span.w-e-item", type: "click", fn: function (t) { var n = t.target, r = a(n), i = r.getNodeName(), o = void 0; return o = "IMG" === i ? r.parent().html() : "<span>" + r.html() + "</span>", e._insert(o), !0 } }] }) })); var o = new C(this, { width: 300, height: 200, tabs: i }); o.show(), this.panel = o }, _insert: function (e) { var t = this.editor; t.cmd.do("insertHTML", e) } }, V.prototype = { constructor: V, onClick: function () { this._active ? this._createEditPanel() : this._createInsertPanel() }, _createInsertPanel: function () { var e = this, t = h("btn"), n = h("row"), r = h("col"), i = new C(this, { width: 250, tabs: [{ title: "鎻掑叆琛ㄦ牸", tpl: '<div>\n                        <p style="text-align:left; padding:5px 0;">\n                            鍒涘缓\n                            <input id="' + n + '" type="text" value="5" style="width:40px;text-align:center;"/>\n                            琛孿n                            <input id="' + r + '" type="text" value="5" style="width:40px;text-align:center;"/>\n                            鍒楃殑琛ㄦ牸\n                        </p>\n                        <div class="w-e-button-container">\n                            <button id="' + t + '" class="right">鎻掑叆</button>\n                        </div>\n                    </div>', events: [{ selector: "#" + t, type: "click", fn: function () { var t = parseInt(a("#" + n).val()), i = parseInt(a("#" + r).val()); return t && i && t > 0 && i > 0 && e._insert(t, i), !0 } }] }] }); i.show(), this.panel = i }, _insert: function (e, t) { var n = void 0, r = void 0, i = '<table border="0" width="100%" cellpadding="0" cellspacing="0">'; for (n = 0; n < e; n++) { if (i += "<tr>", 0 === n) for (r = 0; r < t; r++)i += "<th>&nbsp;</th>"; else for (r = 0; r < t; r++)i += "<td>&nbsp;</td>"; i += "</tr>" } i += "</table><p><br></p>"; var o = this.editor; o.cmd.do("insertHTML", i), o.cmd.do("enableObjectResizing", !1), o.cmd.do("enableInlineTableEditing", !1) }, _createEditPanel: function () { var e = this, t = h("add-row"), n = h("add-col"), r = h("del-row"), i = h("del-col"), o = h("del-table"), a = new C(this, { width: 320, tabs: [{ title: "缂栬緫琛ㄦ牸", tpl: '<div>\n                        <div class="w-e-button-container" style="border-bottom:1px solid #f1f1f1;padding-bottom:5px;margin-bottom:5px;">\n                            <button id="' + t + '" class="left">澧炲姞琛�</button>\n                            <button id="' + r + '" class="red left">鍒犻櫎琛�</button>\n                            <button id="' + n + '" class="left">澧炲姞鍒�</button>\n                            <button id="' + i + '" class="red left">鍒犻櫎鍒�</button>\n                        </div>\n                        <div class="w-e-button-container">\n                            <button id="' + o + '" class="gray left">鍒犻櫎琛ㄦ牸</button>\n                        </dv>\n                    </div>', events: [{ selector: "#" + t, type: "click", fn: function () { return e._addRow(), !0 } }, { selector: "#" + n, type: "click", fn: function () { return e._addCol(), !0 } }, { selector: "#" + r, type: "click", fn: function () { return e._delRow(), !0 } }, { selector: "#" + i, type: "click", fn: function () { return e._delCol(), !0 } }, { selector: "#" + o, type: "click", fn: function () { return e._delTable(), !0 } }] }] }); a.show() }, _getLocationData: function () { var e = {}, t = this.editor, n = t.selection.getSelectionContainerElem(); if (n) { var r = n.getNodeName(); if ("TD" === r || "TH" === r) { var i = n.parent(), o = i.children(), a = o.length; o.forEach((function (t, r) { if (t === n[0]) return e.td = { index: r, elem: t, length: a }, !1 })); var s = i.parent(), c = s.children(), l = c.length; return c.forEach((function (t, n) { if (t === i[0]) return e.tr = { index: n, elem: t, length: l }, !1 })), e } } }, _addRow: function () { var e = this._getLocationData(); if (e) { var t = e.tr, n = a(t.elem), r = e.td, i = r.length, o = document.createElement("tr"), s = "", c = void 0; for (c = 0; c < i; c++)s += "<td>&nbsp;</td>"; o.innerHTML = s, a(o).insertAfter(n) } }, _addCol: function () { var e = this._getLocationData(); if (e) { var t = e.tr, n = e.td, r = n.index, i = a(t.elem), o = i.parent(), s = o.children(); s.forEach((function (e) { var t = a(e), n = t.children(), i = n.get(r), o = i.getNodeName().toLowerCase(), s = document.createElement(o); a(s).insertAfter(i) })) } }, _delRow: function () { var e = this._getLocationData(); if (e) { var t = e.tr, n = a(t.elem); n.remove() } }, _delCol: function () { var e = this._getLocationData(); if (e) { var t = e.tr, n = e.td, r = n.index, i = a(t.elem), o = i.parent(), s = o.children(); s.forEach((function (e) { var t = a(e), n = t.children(), i = n.get(r); i.remove() })) } }, _delTable: function () { var e = this.editor, t = e.selection.getSelectionContainerElem(); if (t) { var n = t.parentUntil("table"); n && n.remove() } }, tryChangeActive: function (e) { var t = this.editor, n = this.$elem, r = t.selection.getSelectionContainerElem(); if (r) { var i = r.getNodeName(); "TD" === i || "TH" === i ? (this._active = !0, n.addClass("w-e-active")) : (this._active = !1, n.removeClass("w-e-active")) } } }, I.prototype = { constructor: I, onClick: function () { this._createPanel() }, _createPanel: function () { var e = this, t = h("text-val"), n = h("btn"), r = new C(this, { width: 350, tabs: [{ title: "鎻掑叆瑙嗛", tpl: '<div>\n                        <input id="' + t + '" type="text" class="block" placeholder="鏍煎紡濡傦細<iframe src=... ></iframe>"/>\n                        <div class="w-e-button-container">\n                            <button id="' + n + '" class="right">鎻掑叆</button>\n                        </div>\n                    </div>', events: [{ selector: "#" + n, type: "click", fn: function () { var n = a("#" + t), r = n.val().trim(); return r && e._insert(r), !0 } }] }] }); r.show(), this.panel = r }, _insert: function (e) { var t = this.editor; t.cmd.do("insertHTML", e + "<p><br></p>") } }, N.prototype = { constructor: N, onClick: function () { var e = this.editor, t = e.config; t.qiniu || (this._active ? this._createEditPanel() : this._createInsertPanel()) }, _createEditPanel: function () { var e = this.editor, t = h("width-30"), n = h("width-50"), r = h("width-100"), i = h("del-btn"), o = [{ title: "缂栬緫鍥剧墖", tpl: '<div>\n                    <div class="w-e-button-container" style="border-bottom:1px solid #f1f1f1;padding-bottom:5px;margin-bottom:5px;">\n                        <span style="float:left;font-size:14px;margin:4px 5px 0 5px;color:#333;">鏈�澶у搴︼細</span>\n                        <button id="' + t + '" class="left">30%</button>\n                        <button id="' + n + '" class="left">50%</button>\n                        <button id="' + r + '" class="left">100%</button>\n                    </div>\n                    <div class="w-e-button-container">\n                        <button id="' + i + '" class="gray left">鍒犻櫎鍥剧墖</button>\n                    </dv>\n                </div>', events: [{ selector: "#" + t, type: "click", fn: function () { var t = e._selectedImg; return t && t.css("max-width", "30%"), !0 } }, { selector: "#" + n, type: "click", fn: function () { var t = e._selectedImg; return t && t.css("max-width", "50%"), !0 } }, { selector: "#" + r, type: "click", fn: function () { var t = e._selectedImg; return t && t.css("max-width", "100%"), !0 } }, { selector: "#" + i, type: "click", fn: function () { var t = e._selectedImg; return t && t.remove(), !0 } }] }], a = new C(this, { width: 300, tabs: o }); a.show(), this.panel = a }, _createInsertPanel: function () { var e = this.editor, t = e.uploadImg, n = e.config, r = h("up-trigger"), i = h("up-file"), o = h("link-url"), s = h("link-btn"), c = [{ title: "涓婁紶鍥剧墖", tpl: '<div class="w-e-up-img-container">\n                    <div id="' + r + '" class="w-e-up-btn">\n                        <i class="w-e-icon-upload2"></i>\n                    </div>\n                    <div style="display:none;">\n                        <input id="' + i + '" type="file" multiple="multiple" accept="image/jpg,image/jpeg,image/png,image/gif,image/bmp"/>\n                    </div>\n                </div>', events: [{ selector: "#" + r, type: "click", fn: function () { var e = a("#" + i), t = e[0]; if (!t) return !0; t.click() } }, { selector: "#" + i, type: "change", fn: function () { var e = a("#" + i), n = e[0]; if (!n) return !0; var r = n.files; return r.length && t.uploadImg(r), !0 } }] }, { title: "缃戠粶鍥剧墖", tpl: '<div>\n                    <input id="' + o + '" type="text" class="block" placeholder="鍥剧墖閾炬帴"/></td>\n                    <div class="w-e-button-container">\n                        <button id="' + s + '" class="right">鎻掑叆</button>\n                    </div>\n                </div>', events: [{ selector: "#" + s, type: "click", fn: function () { var e = a("#" + o), n = e.val().trim(); return n && t.insertLinkImg(n), !0 } }] }], l = []; (n.uploadImgShowBase64 || n.uploadImgServer || n.customUploadImg) && window.FileReader && l.push(c[0]), n.showLinkImg && l.push(c[1]); var u = new C(this, { width: 300, tabs: l }); u.show(), this.panel = u }, tryChangeActive: function (e) { var t = this.editor, n = this.$elem; t._selectedImg ? (this._active = !0, n.addClass("w-e-active")) : (this._active = !1, n.removeClass("w-e-active")) } }; var R = {}; function F(e) { this.editor = e, this.menus = {} } function Y(e) { var t = e.clipboardData || e.originalEvent && e.originalEvent.clipboardData, n = void 0; return n = null == t ? window.clipboardData && window.clipboardData.getData("text") : t.getData("text/plain"), f(n) } function $(e, t, n) { var r = e.clipboardData || e.originalEvent && e.originalEvent.clipboardData, i = void 0, o = void 0; if (null == r ? i = window.clipboardData && window.clipboardData.getData("text") : (i = r.getData("text/plain"), o = r.getData("text/html")), !o && i && (o = "<p>" + f(i) + "</p>"), o) { var a = o.split("</html>"); return 2 === a.length && (o = a[0]), o = o.replace(/<(meta|script|link).+?>/gim, ""), o = o.replace(/<!--.*?-->/gm, ""), o = o.replace(/\s?data-.+?=('|").+?('|")/gim, ""), n && (o = o.replace(/<img.+?>/gim, "")), o = t ? o.replace(/\s?(class|style)=('|").*?('|")/gim, "") : o.replace(/\s?class=('|").*?('|")/gim, ""), o } } function B(e) { var t = [], n = Y(e); if (n) return t; var r = e.clipboardData || e.originalEvent && e.originalEvent.clipboardData || {}, i = r.items; return i ? (l(i, (function (e, n) { var r = n.type; /image/i.test(r) && t.push(n.getAsFile()) })), t) : t } function W(e) { var t = [], n = e.childNodes() || []; return n.forEach((function (e) { var n = void 0, r = e.nodeType; if (3 === r && (n = e.textContent, n = f(n)), 1 === r) { n = {}, n.tag = e.nodeName.toLowerCase(); for (var i = [], o = e.attributes || {}, s = o.length || 0, c = 0; c < s; c++) { var l = o[c]; i.push({ name: l.name, value: l.value }) } n.attrs = i, n.children = W(a(e)) } t.push(n) })), t } function q(e) { this.editor = e } function U(e) { this.editor = e } function K(e) { this.editor = e, this._currentRange = null } function G(e) { this.editor = e, this._time = 0, this._isShow = !1, this._isRender = !1, this._timeoutId = 0, this.$textContainer = e.$textContainerElem, this.$bar = a('<div class="w-e-progress"></div>') } R.bold = p, R.head = y, R.fontSize = b, R.fontName = x, R.link = M, R.italic = O, R.redo = k, R.strikeThrough = S, R.underline = T, R.undo = A, R.list = L, R.justify = j, R.foreColor = z, R.backColor = E, R.quote = P, R.code = D, R.emoticon = H, R.table = V, R.video = I, R.image = N, F.prototype = { constructor: F, init: function () { var e = this, t = this.editor, n = t.config || {}, r = n.menus || []; r.forEach((function (n) { var r = R[n]; r && "function" === typeof r && (e.menus[n] = new r(t)) })), this._addToToolbar(), this._bindEvent() }, _addToToolbar: function () { var e = this.editor, t = e.$toolbarElem, n = this.menus, r = e.config, i = r.zIndex + 1; l(n, (function (e, n) { var r = n.$elem; r && (r.css("z-index", i), t.append(r)) })) }, _bindEvent: function () { var e = this.menus, t = this.editor; l(e, (function (e, n) { var r = n.type; if (r) { var i = n.$elem, o = n.droplist; n.panel; "click" === r && n.onClick && i.on("click", (function (e) { null != t.selection.getRange() && n.onClick(e) })), "droplist" === r && o && i.on("mouseenter", (function (e) { null != t.selection.getRange() && (o.showTimeoutId = setTimeout((function () { o.show() }), 200)) })).on("mouseleave", (function (e) { o.hideTimeoutId = setTimeout((function () { o.hide() }), 0) })), "panel" === r && n.onClick && i.on("click", (function (e) { e.stopPropagation(), null != t.selection.getRange() && n.onClick(e) })) } })) }, changeActive: function () { var e = this.menus; l(e, (function (e, t) { t.tryChangeActive && setTimeout((function () { t.tryChangeActive() }), 100) })) } }, q.prototype = { constructor: q, init: function () { this._bindEvent() }, clear: function () { this.html("<p><br></p>") }, html: function (e) { var t = this.editor, n = t.$textElem, r = void 0; if (null == e) return r = n.html(), r = r.replace(/\u200b/gm, ""), r; n.html(e), t.initSelection() }, getJSON: function () { var e = this.editor, t = e.$textElem; return W(t) }, text: function (e) { var t = this.editor, n = t.$textElem, r = void 0; if (null == e) return r = n.text(), r = r.replace(/\u200b/gm, ""), r; n.text("<p>" + e + "</p>"), t.initSelection() }, append: function (e) { var t = this.editor, n = t.$textElem; n.append(a(e)), t.initSelection() }, _bindEvent: function () { this._saveRangeRealTime(), this._enterKeyHandle(), this._clearHandle(), this._pasteHandle(), this._tabHandle(), this._imgHandle(), this._dragHandle() }, _saveRangeRealTime: function () { var e = this.editor, t = e.$textElem; function n(t) { e.selection.saveRange(), e.menus.changeActive() } t.on("keyup", n), t.on("mousedown", (function (e) { t.on("mouseleave", n) })), t.on("mouseup", (function (e) { n(), t.off("mouseleave", n) })) }, _enterKeyHandle: function () { var e = this.editor, t = e.$textElem; function n(t) { var n = a("<p><br></p>"); n.insertBefore(t), e.selection.createRangeByElem(n, !0), e.selection.restoreSelection(), t.remove() } function r(r) { var i = e.selection.getSelectionContainerElem(), o = i.parent(); if ("<code><br></code>" !== o.html()) { if (o.equal(t)) { var a = i.getNodeName(); "P" !== a && (i.text() || n(i)) } } else n(i) } function i(t) { var n = e.selection.getSelectionContainerElem(); if (n) { var r = n.parent(), i = n.getNodeName(), o = r.getNodeName(); if ("CODE" === i && "PRE" === o && e.cmd.queryCommandSupported("insertHTML")) { if (!0 === e._willBreakCode) { var s = a("<p><br></p>"); return s.insertAfter(r), e.selection.createRangeByElem(s, !0), e.selection.restoreSelection(), e._willBreakCode = !1, void t.preventDefault() } var c = e.selection.getRange().startOffset; e.cmd.do("insertHTML", "\n"), e.selection.saveRange(), e.selection.getRange().startOffset === c && e.cmd.do("insertHTML", "\n"); var l = n.html().length; e.selection.getRange().startOffset + 1 === l && (e._willBreakCode = !0), t.preventDefault() } } } t.on("keyup", (function (e) { 13 === e.keyCode && r(e) })), t.on("keydown", (function (t) { 13 === t.keyCode ? i(t) : e._willBreakCode = !1 })) }, _clearHandle: function () { var e = this.editor, t = e.$textElem; t.on("keydown", (function (e) { if (8 === e.keyCode) { var n = t.html().toLowerCase().trim(); "<p><br></p>" !== n || e.preventDefault() } })), t.on("keyup", (function (n) { if (8 === n.keyCode) { var r = void 0, i = t.html().toLowerCase().trim(); i && "<br>" !== i || (r = a("<p><br/></p>"), t.html(""), t.append(r), e.selection.createRangeByElem(r, !1, !0), e.selection.restoreSelection()) } })) }, _pasteHandle: function () { var e = this.editor, t = e.config, n = t.pasteFilterStyle, r = t.pasteTextHandle, i = t.pasteIgnoreImg, o = e.$textElem, a = 0; function s() { var e = Date.now(), t = !1; return e - a >= 100 && (t = !0), a = e, t } function l() { a = 0 } o.on("paste", (function (t) { if (!c.isIE() && (t.preventDefault(), s())) { var o = $(t, n, i), a = Y(t); a = a.replace(/\n/gm, "<br>"); var u = e.selection.getSelectionContainerElem(); if (u) { var h = u.getNodeName(); if ("CODE" === h || "PRE" === h) return r && d(r) && (a = "" + (r(a) || "")), void e.cmd.do("insertHTML", "<p>" + a + "</p>"); if (o) try { r && d(r) && (o = "" + (r(o) || "")), e.cmd.do("insertHTML", o) } catch (f) { r && d(r) && (a = "" + (r(a) || "")), e.cmd.do("insertHTML", "<p>" + a + "</p>") } else l() } } })), o.on("paste", (function (t) { if (!c.isIE() && (t.preventDefault(), s())) { var n = B(t); if (n && n.length) { var r = e.selection.getSelectionContainerElem(); if (r) { var i = r.getNodeName(); if ("CODE" !== i && "PRE" !== i) { var o = e.uploadImg; o.uploadImg(n) } } } } })) }, _tabHandle: function () { var e = this.editor, t = e.$textElem; t.on("keydown", (function (t) { if (9 === t.keyCode && e.cmd.queryCommandSupported("insertHTML")) { var n = e.selection.getSelectionContainerElem(); if (n) { var r = n.parent(), i = n.getNodeName(), o = r.getNodeName(); "CODE" === i && "PRE" === o ? e.cmd.do("insertHTML", "    ") : e.cmd.do("insertHTML", "&nbsp;&nbsp;&nbsp;&nbsp;"), t.preventDefault() } } })) }, _imgHandle: function () { var e = this.editor, t = e.$textElem; t.on("click", "img", (function (t) { var n = this, r = a(n); "1" !== r.attr("data-w-e") && (e._selectedImg = r, e.selection.createRangeByElem(r), e.selection.restoreSelection()) })), t.on("click  keyup", (function (t) { t.target.matches("img") || (e._selectedImg = null) })) }, _dragHandle: function () { var e = this.editor, t = a(document); t.on("dragleave drop dragenter dragover", (function (e) { e.preventDefault() })); var n = e.$textElem; n.on("drop", (function (t) { t.preventDefault(); var n = t.dataTransfer && t.dataTransfer.files; if (n && n.length) { var r = e.uploadImg; r.uploadImg(n) } })) } }, U.prototype = { constructor: U, do: function (e, t) { var n = this.editor; if (n._useStyleWithCSS || (document.execCommand("styleWithCSS", null, !0), n._useStyleWithCSS = !0), n.selection.getRange()) { n.selection.restoreSelection(); var r = "_" + e; this[r] ? this[r](t) : this._execCommand(e, t), n.menus.changeActive(), n.selection.saveRange(), n.selection.restoreSelection(), n.change && n.change() } }, _insertHTML: function (e) { var t = this.editor, n = t.selection.getRange(); this.queryCommandSupported("insertHTML") ? this._execCommand("insertHTML", e) : n.insertNode ? (n.deleteContents(), n.insertNode(a(e)[0])) : n.pasteHTML && n.pasteHTML(e) }, _insertElem: function (e) { var t = this.editor, n = t.selection.getRange(); n.insertNode && (n.deleteContents(), n.insertNode(e[0])) }, _execCommand: function (e, t) { document.execCommand(e, !1, t) }, queryCommandValue: function (e) { return document.queryCommandValue(e) }, queryCommandState: function (e) { return document.queryCommandState(e) }, queryCommandSupported: function (e) { return document.queryCommandSupported(e) } }, K.prototype = { constructor: K, getRange: function () { return this._currentRange }, saveRange: function (e) { if (e) this._currentRange = e; else { var t = window.getSelection(); if (0 !== t.rangeCount) { var n = t.getRangeAt(0), r = this.getSelectionContainerElem(n); if (r && "false" !== r.attr("contenteditable") && !r.parentUntil("[contenteditable=false]")) { var i = this.editor, o = i.$textElem; o.isContain(r) && (this._currentRange = n) } } } }, collapseRange: function (e) { null == e && (e = !1); var t = this._currentRange; t && t.collapse(e) }, getSelectionText: function () { var e = this._currentRange; return e ? this._currentRange.toString() : "" }, getSelectionContainerElem: function (e) { e = e || this._currentRange; var t = void 0; if (e) return t = e.commonAncestorContainer, a(1 === t.nodeType ? t : t.parentNode) }, getSelectionStartElem: function (e) { e = e || this._currentRange; var t = void 0; if (e) return t = e.startContainer, a(1 === t.nodeType ? t : t.parentNode) }, getSelectionEndElem: function (e) { e = e || this._currentRange; var t = void 0; if (e) return t = e.endContainer, a(1 === t.nodeType ? t : t.parentNode) }, isSelectionEmpty: function () { var e = this._currentRange; return !(!e || !e.startContainer || e.startContainer !== e.endContainer || e.startOffset !== e.endOffset) }, restoreSelection: function () { var e = window.getSelection(); e.removeAllRanges(), e.addRange(this._currentRange) }, createEmptyRange: function () { var e = this.editor, t = this.getRange(), n = void 0; if (t && this.isSelectionEmpty()) try { c.isWebkit() ? (e.cmd.do("insertHTML", "&#8203;"), t.setEnd(t.endContainer, t.endOffset + 1), this.saveRange(t)) : (n = a("<strong>&#8203;</strong>"), e.cmd.do("insertElem", n), this.createRangeByElem(n, !0)) } catch (r) { } }, createRangeByElem: function (e, t, n) { if (e.length) { var r = e[0], i = document.createRange(); n ? i.selectNodeContents(r) : i.selectNode(r), "boolean" === typeof t && i.collapse(t), this.saveRange(i) } } }, G.prototype = { constructor: G, show: function (e) { var t = this; if (!this._isShow) { this._isShow = !0; var n = this.$bar; if (this._isRender) this._isRender = !0; else { var r = this.$textContainer; r.append(n) } Date.now() - this._time > 100 && e <= 1 && (n.css("width", 100 * e + "%"), this._time = Date.now()); var i = this._timeoutId; i && clearTimeout(i), i = setTimeout((function () { t._hide() }), 500) } }, _hide: function () { var e = this.$bar; e.remove(), this._time = 0, this._isShow = !1, this._isRender = !1 } }; var X = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }; function J(e) { this.editor = e } J.prototype = { constructor: J, _alert: function (e, t) { var n = this.editor, r = n.config.debug, i = n.config.customAlert; if (r) throw new Error("wangEditor: " + (t || e)); i && "function" === typeof i ? i(e) : alert(e) }, insertLinkImg: function (e) { var t = this; if (e) { var n = this.editor, r = n.config, i = r.linkImgCheck, o = void 0; if (i && "function" === typeof i && (o = i(e), "string" === typeof o)) alert(o); else { n.cmd.do("insertHTML", '<img src="' + e + '" style="max-width:100%;"/>'); var a = document.createElement("img"); a.onload = function () { var t = r.linkImgCallback; t && "function" === typeof t && t(e), a = null }, a.onerror = function () { a = null, t._alert("鎻掑叆鍥剧墖閿欒", 'wangEditor: 鎻掑叆鍥剧墖鍑洪敊锛屽浘鐗囬摼鎺ユ槸 "' + e + '"锛屼笅杞借閾炬帴澶辫触') }, a.onabort = function () { a = null }, a.src = e } } }, uploadImg: function (e) { var t = this; if (e && e.length) { var n = this.editor, r = n.config, i = r.uploadImgServer, o = r.uploadImgShowBase64, a = r.uploadImgMaxSize, s = a / 1024 / 1024, c = r.uploadImgMaxLength || 1e4, h = r.uploadFileName || "", f = r.uploadImgParams || {}, d = r.uploadImgParamsWithUrl, p = r.uploadImgHeaders || {}, v = r.uploadImgHooks || {}, m = r.uploadImgTimeout || 3e3, g = r.withCredentials; null == g && (g = !1); var y = r.customUploadImg; if (y || i || o) { var b = [], x = []; if (u(e, (function (e) { var t = e.name, n = e.size; t && n && (!1 !== /\.(jpg|jpeg|png|bmp|gif|webp)$/i.test(t) ? a < n ? x.push("銆�" + t + "銆戝ぇ浜� " + s + "M") : b.push(e) : x.push("銆�" + t + "銆戜笉鏄浘鐗�")) })), x.length) this._alert("鍥剧墖楠岃瘉鏈�氳繃: \n" + x.join("\n")); else if (b.length > c) this._alert("涓�娆℃渶澶氫笂浼�" + c + "寮犲浘鐗�"); else if (y && "function" === typeof y) y(b, this.insertLinkImg.bind(this)); else { var w = new FormData; if (u(b, (function (e) { var t = h || e.name; w.append(t, e) })), i && "string" === typeof i) { var _ = i.split("#"); i = _[0]; var C = _[1] || ""; l(f, (function (e, t) { d && (i.indexOf("?") > 0 ? i += "&" : i += "?", i = i + e + "=" + t), w.append(e, t) })), C && (i += "#" + C); var M = new XMLHttpRequest; if (M.open("POST", i), M.timeout = m, M.ontimeout = function () { v.timeout && "function" === typeof v.timeout && v.timeout(M, n), t._alert("涓婁紶鍥剧墖瓒呮椂") }, M.upload && (M.upload.onprogress = function (e) { var t = void 0, r = new G(n); e.lengthComputable && (t = e.loaded / e.total, r.show(t)) }), M.onreadystatechange = function () { var e = void 0; if (4 === M.readyState) { if (M.status < 200 || M.status >= 300) return v.error && "function" === typeof v.error && v.error(M, n), void t._alert("涓婁紶鍥剧墖鍙戠敓閿欒", "涓婁紶鍥剧墖鍙戠敓閿欒锛屾湇鍔″櫒杩斿洖鐘舵�佹槸 " + M.status); if (e = M.responseText, "object" !== ("undefined" === typeof e ? "undefined" : X(e))) try { e = JSON.parse(e) } catch (i) { return v.fail && "function" === typeof v.fail && v.fail(M, n, e), void t._alert("涓婁紶鍥剧墖澶辫触", "涓婁紶鍥剧墖杩斿洖缁撴灉閿欒锛岃繑鍥炵粨鏋滄槸: " + e) } if (v.customInsert || "0" == e.errno) { if (v.customInsert && "function" === typeof v.customInsert) v.customInsert(t.insertLinkImg.bind(t), e, n); else { var r = e.data || []; r.forEach((function (e) { t.insertLinkImg(e) })) } v.success && "function" === typeof v.success && v.success(M, n, e) } else v.fail && "function" === typeof v.fail && v.fail(M, n, e), t._alert("涓婁紶鍥剧墖澶辫触", "涓婁紶鍥剧墖杩斿洖缁撴灉閿欒锛岃繑鍥炵粨鏋� errno=" + e.errno) } }, v.before && "function" === typeof v.before) { var O = v.before(M, n, b); if (O && "object" === ("undefined" === typeof O ? "undefined" : X(O)) && O.prevent) return void this._alert(O.msg) } return l(p, (function (e, t) { M.setRequestHeader(e, t) })), M.withCredentials = g, void M.send(w) } o && u(e, (function (e) { var n = t, r = new FileReader; r.readAsDataURL(e), r.onload = function () { n.insertLinkImg(this.result) } })) } } } } }; var Q = 1; function Z(e, t) { if (null == e) throw new Error("閿欒锛氬垵濮嬪寲缂栬緫鍣ㄦ椂鍊欐湭浼犲叆浠讳綍鍙傛暟锛岃鏌ラ槄鏂囨。"); this.id = "wangEditor-" + Q++, this.toolbarSelector = e, this.textSelector = t, this.customConfig = {} } Z.prototype = { constructor: Z, _initConfig: function () { var e = {}; this.config = Object.assign(e, s, this.customConfig); var t = this.config.lang || {}, n = []; l(t, (function (e, t) { n.push({ reg: new RegExp(e, "img"), val: t }) })), this.config.langArgs = n }, _initDom: function () { var e = this, t = this.toolbarSelector, n = a(t), r = this.textSelector, i = this.config, o = i.zIndex, s = void 0, c = void 0, l = void 0, u = void 0; null == r ? (s = a("<div></div>"), c = a("<div></div>"), u = n.children(), n.append(s).append(c), s.css("background-color", "#f1f1f1").css("border", "1px solid #ccc"), c.css("border", "1px solid #ccc").css("border-top", "none").css("height", "300px")) : (s = n, c = a(r), u = c.children()), l = a("<div></div>"), l.attr("contenteditable", "true").css("width", "100%").css("height", "100%"), u && u.length ? l.append(u) : l.append(a("<p><br></p>")), c.append(l), s.addClass("w-e-toolbar"), c.addClass("w-e-text-container"), c.css("z-index", o), l.addClass("w-e-text"); var f = h("toolbar-elem"); s.attr("id", f); var d = h("text-elem"); l.attr("id", d), this.$toolbarElem = s, this.$textContainerElem = c, this.$textElem = l, this.toolbarElemId = f, this.textElemId = d; var p = !0; c.on("compositionstart", (function () { p = !1 })), c.on("compositionend", (function () { p = !0 })), c.on("click keyup", (function () { p && e.change && e.change() })), s.on("click", (function () { this.change && this.change() })), (i.onfocus || i.onblur) && (this.isFocus = !1, a(document).on("click", (function (t) { var n = l.isContain(a(t.target)), r = s.isContain(a(t.target)), i = s[0] == t.target; if (n) e.isFocus || e.onfocus && e.onfocus(), e.isFocus = !0; else { if (r && !i) return; e.isFocus && e.onblur && e.onblur(), e.isFocus = !1 } }))) }, _initCommand: function () { this.cmd = new U(this) }, _initSelectionAPI: function () { this.selection = new K(this) }, _initUploadImg: function () { this.uploadImg = new J(this) }, _initMenus: function () { this.menus = new F(this), this.menus.init() }, _initText: function () { this.txt = new q(this), this.txt.init() }, initSelection: function (e) { var t = this.$textElem, n = t.children(); if (!n.length) return t.append(a("<p><br></p>")), void this.initSelection(); var r = n.last(); if (e) { var i = r.html().toLowerCase(), o = r.getNodeName(); if ("<br>" !== i && "<br/>" !== i || "P" !== o) return t.append(a("<p><br></p>")), void this.initSelection() } this.selection.createRangeByElem(r, !1, !0), this.selection.restoreSelection() }, _bindEvent: function () { var e = 0, t = this.txt.html(), n = this.config, r = n.onchangeTimeout; r = parseInt(r, 10), (!r || r <= 0) && (r = 200); var i = n.onchange; i && "function" === typeof i && (this.change = function () { var n = this.txt.html(); n.length === t.length && n === t || (e && clearTimeout(e), e = setTimeout((function () { i(n), t = n }), r)) }); var o = n.onblur; o && "function" === typeof o && (this.onblur = function () { var e = this.txt.html(); o(e) }); var a = n.onfocus; a && "function" === typeof a && (this.onfocus = function () { a() }) }, create: function () { this._initConfig(), this._initDom(), this._initCommand(), this._initSelectionAPI(), this._initText(), this._initMenus(), this._initUploadImg(), this.initSelection(!0), this._bindEvent() }, _offAllEvent: function () { a.offAll() } }; try { document } catch (re) { throw new Error("璇峰湪娴忚鍣ㄧ幆澧冧笅杩愯") } e(); var ee = '.w-e-toolbar,.w-e-text-container,.w-e-menu-panel {  padding: 0;  margin: 0;  box-sizing: border-box;}.w-e-toolbar *,.w-e-text-container *,.w-e-menu-panel * {  padding: 0;  margin: 0;  box-sizing: border-box;}.w-e-clear-fix:after {  content: "";  display: table;  clear: both;}.w-e-toolbar .w-e-droplist {  position: absolute;  left: 0;  top: 0;  background-color: #fff;  border: 1px solid #f1f1f1;  border-right-color: #ccc;  border-bottom-color: #ccc;}.w-e-toolbar .w-e-droplist .w-e-dp-title {  text-align: center;  color: #999;  line-height: 2;  border-bottom: 1px solid #f1f1f1;  font-size: 13px;}.w-e-toolbar .w-e-droplist ul.w-e-list {  list-style: none;  line-height: 1;}.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item {  color: #333;  padding: 5px 0;}.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item:hover {  background-color: #f1f1f1;}.w-e-toolbar .w-e-droplist ul.w-e-block {  list-style: none;  text-align: left;  padding: 5px;}.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item {  display: inline-block;  *display: inline;  *zoom: 1;  padding: 3px 5px;}.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item:hover {  background-color: #f1f1f1;}@font-face {  font-family: \'w-e-icon\';  src: url(data:application/x-font-woff;charset=utf-8;base64,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) format(\'truetype\');  font-weight: normal;  font-style: normal;}[class^="w-e-icon-"],[class*=" w-e-icon-"] {  /* use !important to prevent issues with browser extensions that change fonts */  font-family: \'w-e-icon\' !important;  speak: none;  font-style: normal;  font-weight: normal;  font-variant: normal;  text-transform: none;  line-height: 1;  /* Better Font Rendering =========== */  -webkit-font-smoothing: antialiased;  -moz-osx-font-smoothing: grayscale;}.w-e-icon-close:before {  content: "\\f00d";}.w-e-icon-upload2:before {  content: "\\e9c6";}.w-e-icon-trash-o:before {  content: "\\f014";}.w-e-icon-header:before {  content: "\\f1dc";}.w-e-icon-pencil2:before {  content: "\\e906";}.w-e-icon-paint-brush:before {  content: "\\f1fc";}.w-e-icon-image:before {  content: "\\e90d";}.w-e-icon-play:before {  content: "\\e912";}.w-e-icon-location:before {  content: "\\e947";}.w-e-icon-undo:before {  content: "\\e965";}.w-e-icon-redo:before {  content: "\\e966";}.w-e-icon-quotes-left:before {  content: "\\e977";}.w-e-icon-list-numbered:before {  content: "\\e9b9";}.w-e-icon-list2:before {  content: "\\e9bb";}.w-e-icon-link:before {  content: "\\e9cb";}.w-e-icon-happy:before {  content: "\\e9df";}.w-e-icon-bold:before {  content: "\\ea62";}.w-e-icon-underline:before {  content: "\\ea63";}.w-e-icon-italic:before {  content: "\\ea64";}.w-e-icon-strikethrough:before {  content: "\\ea65";}.w-e-icon-table2:before {  content: "\\ea71";}.w-e-icon-paragraph-left:before {  content: "\\ea77";}.w-e-icon-paragraph-center:before {  content: "\\ea78";}.w-e-icon-paragraph-right:before {  content: "\\ea79";}.w-e-icon-terminal:before {  content: "\\f120";}.w-e-icon-page-break:before {  content: "\\ea68";}.w-e-icon-cancel-circle:before {  content: "\\ea0d";}.w-e-icon-font:before {  content: "\\ea5c";}.w-e-icon-text-heigh:before {  content: "\\ea5f";}.w-e-toolbar {  display: -webkit-box;  display: -ms-flexbox;  display: flex;  padding: 0 5px;  /* flex-wrap: wrap; */  /* 鍗曚釜鑿滃崟 */}.w-e-toolbar .w-e-menu {  position: relative;  text-align: center;  padding: 5px 10px;  cursor: pointer;}.w-e-toolbar .w-e-menu i {  color: #999;}.w-e-toolbar .w-e-menu:hover i {  color: #333;}.w-e-toolbar .w-e-active i {  color: #1e88e5;}.w-e-toolbar .w-e-active:hover i {  color: #1e88e5;}.w-e-text-container .w-e-panel-container {  position: absolute;  top: 0;  left: 50%;  border: 1px solid #ccc;  border-top: 0;  box-shadow: 1px 1px 2px #ccc;  color: #333;  background-color: #fff;  /* 涓� emotion panel 瀹氬埗鐨勬牱寮� */  /* 涓婁紶鍥剧墖鐨� panel 瀹氬埗鏍峰紡 */}.w-e-text-container .w-e-panel-container .w-e-panel-close {  position: absolute;  right: 0;  top: 0;  padding: 5px;  margin: 2px 5px 0 0;  cursor: pointer;  color: #999;}.w-e-text-container .w-e-panel-container .w-e-panel-close:hover {  color: #333;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-title {  list-style: none;  display: -webkit-box;  display: -ms-flexbox;  display: flex;  font-size: 14px;  margin: 2px 10px 0 10px;  border-bottom: 1px solid #f1f1f1;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-title .w-e-item {  padding: 3px 5px;  color: #999;  cursor: pointer;  margin: 0 3px;  position: relative;  top: 1px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-title .w-e-active {  color: #333;  border-bottom: 1px solid #333;  cursor: default;  font-weight: 700;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content {  padding: 10px 15px 10px 15px;  font-size: 16px;  /* 杈撳叆妗嗙殑鏍峰紡 */  /* 鎸夐挳鐨勬牱寮� */}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input:focus,.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea:focus,.w-e-text-container .w-e-panel-container .w-e-panel-tab-content button:focus {  outline: none;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea {  width: 100%;  border: 1px solid #ccc;  padding: 5px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea:focus {  border-color: #1e88e5;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text] {  border: none;  border-bottom: 1px solid #ccc;  font-size: 14px;  height: 20px;  color: #333;  text-align: left;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text].small {  width: 30px;  text-align: center;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text].block {  display: block;  width: 100%;  margin: 10px 0;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text]:focus {  border-bottom: 2px solid #1e88e5;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button {  font-size: 14px;  color: #1e88e5;  border: none;  padding: 5px 10px;  background-color: #fff;  cursor: pointer;  border-radius: 3px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.left {  float: left;  margin-right: 10px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.right {  float: right;  margin-left: 10px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.gray {  color: #999;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.red {  color: #c24f4a;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button:hover {  background-color: #f1f1f1;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container:after {  content: "";  display: table;  clear: both;}.w-e-text-container .w-e-panel-container .w-e-emoticon-container .w-e-item {  cursor: pointer;  font-size: 18px;  padding: 0 3px;  display: inline-block;  *display: inline;  *zoom: 1;}.w-e-text-container .w-e-panel-container .w-e-up-img-container {  text-align: center;}.w-e-text-container .w-e-panel-container .w-e-up-img-container .w-e-up-btn {  display: inline-block;  *display: inline;  *zoom: 1;  color: #999;  cursor: pointer;  font-size: 60px;  line-height: 1;}.w-e-text-container .w-e-panel-container .w-e-up-img-container .w-e-up-btn:hover {  color: #333;}.w-e-text-container {  position: relative;}.w-e-text-container .w-e-progress {  position: absolute;  background-color: #1e88e5;  bottom: 0;  left: 0;  height: 1px;}.w-e-text {  padding: 0 10px;  overflow-y: scroll;}.w-e-text p,.w-e-text h1,.w-e-text h2,.w-e-text h3,.w-e-text h4,.w-e-text h5,.w-e-text table,.w-e-text pre {  margin: 10px 0;  line-height: 1.5;}.w-e-text ul,.w-e-text ol {  margin: 10px 0 10px 20px;}.w-e-text blockquote {  display: block;  border-left: 8px solid #d0e5f2;  padding: 5px 10px;  margin: 10px 0;  line-height: 1.4;  font-size: 100%;  background-color: #f1f1f1;}.w-e-text code {  display: inline-block;  *display: inline;  *zoom: 1;  background-color: #f1f1f1;  border-radius: 3px;  padding: 3px 5px;  margin: 0 3px;}.w-e-text pre code {  display: block;}.w-e-text table {  border-top: 1px solid #ccc;  border-left: 1px solid #ccc;}.w-e-text table td,.w-e-text table th {  border-bottom: 1px solid #ccc;  border-right: 1px solid #ccc;  padding: 3px 5px;}.w-e-text table th {  border-bottom: 2px solid #ccc;  text-align: center;}.w-e-text:focus {  outline: none;}.w-e-text img {  cursor: pointer;}.w-e-text img:hover {  box-shadow: 0 0 5px #333;}', te = document.createElement("style"); te.type = "text/css", te.innerHTML = ee, document.getElementsByTagName("HEAD").item(0).appendChild(te); var ne = window.wangEditor || Z; return ne })) }, "1a14": function (e, t, n) { var r = n("77e9"), i = n("faf5"), o = n("3397"), a = Object.defineProperty; t.f = n("0bad") ? Object.defineProperty : function (e, t, n) { if (r(e), t = o(t, !0), r(n), i) try { return a(e, t, n) } catch (s) { } if ("get" in n || "set" in n) throw TypeError("Accessors not supported!"); return "value" in n && (e[t] = n.value), e } }, "1a2d": function (e, t, n) { var r = n("42a2"), i = n("1310"), o = "[object Map]"; function a(e) { return i(e) && r(e) == o } e.exports = a }, "1a3b": function (e, t, n) { }, "1a62": function (e, t, n) { "use strict"; n("b2a3"), n("0242") }, "1a8c": function (e, t) { function n(e) { var t = typeof e; return null != e && ("object" == t || "function" == t) } e.exports = n }, "1b2b": function (e, t) { e.exports = function (e, t, n, r) { var i = n ? n.call(r, e, t) : void 0; if (void 0 !== i) return !!i; if (e === t) return !0; if ("object" !== typeof e || !e || "object" !== typeof t || !t) return !1; var o = Object.keys(e), a = Object.keys(t); if (o.length !== a.length) return !1; for (var s = Object.prototype.hasOwnProperty.bind(t), c = 0; c < o.length; c++) { var l = o[c]; if (!s(l)) return !1; var u = e[l], h = t[l]; if (i = n ? n.call(r, u, h, l) : void 0, !1 === i || void 0 === i && u !== h) return !1 } return !0 } }, "1b98": function (e, t, n) { }, "1bac": function (e, t, n) { var r = n("7d1f"), i = n("a029"), o = n("9934"); function a(e) { return r(e, o, i) } e.exports = a }, "1be4": function (e, t, n) { var r = n("d066"); e.exports = r("document", "documentElement") }, "1bf2": function (e, t, n) { var r = n("23e7"), i = n("56ef"); r({ target: "Reflect", stat: !0 }, { ownKeys: i }) }, "1c0b": function (e, t) { e.exports = function (e) { if ("function" != typeof e) throw TypeError(String(e) + " is not a function"); return e } }, "1c3c": function (e, t, n) { var r = n("9e69"), i = n("2474"), o = n("9638"), a = n("a2be"), s = n("edfa"), c = n("ac41"), l = 1, u = 2, h = "[object Boolean]", f = "[object Date]", d = "[object Error]", p = "[object Map]", v = "[object Number]", m = "[object RegExp]", g = "[object Set]", y = "[object String]", b = "[object Symbol]", x = "[object ArrayBuffer]", w = "[object DataView]", _ = r ? r.prototype : void 0, C = _ ? _.valueOf : void 0; function M(e, t, n, r, _, M, O) { switch (n) { case w: if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1; e = e.buffer, t = t.buffer; case x: return !(e.byteLength != t.byteLength || !M(new i(e), new i(t))); case h: case f: case v: return o(+e, +t); case d: return e.name == t.name && e.message == t.message; case m: case y: return e == t + ""; case p: var k = s; case g: var S = r & l; if (k || (k = c), e.size != t.size && !S) return !1; var T = O.get(e); if (T) return T == t; r |= u, O.set(e, t); var A = a(k(e), k(t), r, _, M, O); return O["delete"](e), A; case b: if (C) return C.call(e) == C.call(t) }return !1 } e.exports = M }, "1c7e": function (e, t, n) { var r = n("b622"), i = r("iterator"), o = !1; try { var a = 0, s = { next: function () { return { done: !!a++ } }, return: function () { o = !0 } }; s[i] = function () { return this }, Array.from(s, (function () { throw 2 })) } catch (c) { } e.exports = function (e, t) { if (!t && !o) return !1; var n = !1; try { var r = {}; r[i] = function () { return { next: function () { return { done: n = !0 } } } }, e(r) } catch (c) { } return n } }, "1cdc": function (e, t, n) { var r = n("342f"); e.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(r) }, "1cec": function (e, t, n) { var r = n("0b07"), i = n("2b3e"), o = r(i, "Promise"); e.exports = o }, "1d19": function (e, t, n) { "use strict"; var r = n("4d91"); t["a"] = function () { return { trigger: r["a"].array.def(["hover"]), overlay: r["a"].any, visible: r["a"].bool, disabled: r["a"].bool, align: r["a"].object, getPopupContainer: r["a"].func, prefixCls: r["a"].string, transitionName: r["a"].string, placement: r["a"].oneOf(["topLeft", "topCenter", "topRight", "bottomLeft", "bottomCenter", "bottomRight"]), overlayClassName: r["a"].string, overlayStyle: r["a"].object, forceRender: r["a"].bool, mouseEnterDelay: r["a"].number, mouseLeaveDelay: r["a"].number, openClassName: r["a"].string, minOverlayWidthMatchTrigger: r["a"].bool } } }, "1d31": function (e, t, n) { "use strict"; n.r(t), n.d(t, "Tree", (function () { return x })), n.d(t, "TreeNode", (function () { return _["a"] })); var r = n("6042"), i = n.n(r), o = n("9b57"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("4d91"), u = n("4d26"), h = n.n(u), f = n("d96e"), d = n.n(f), p = n("daa3"), v = n("7b05"), m = n("b488"), g = n("58c1"), y = n("c9a4"); function b() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = {}; return e.forEach((function (e) { t[e] = function () { this.needSyncKeys[e] = !0 } })), t } var x = { name: "Tree", mixins: [m["a"]], props: Object(p["t"])({ prefixCls: l["a"].string, tabIndex: l["a"].oneOfType([l["a"].string, l["a"].number]), children: l["a"].any, treeData: l["a"].array, showLine: l["a"].bool, showIcon: l["a"].bool, icon: l["a"].oneOfType([l["a"].object, l["a"].func]), focusable: l["a"].bool, selectable: l["a"].bool, disabled: l["a"].bool, multiple: l["a"].bool, checkable: l["a"].oneOfType([l["a"].object, l["a"].bool]), checkStrictly: l["a"].bool, draggable: l["a"].bool, defaultExpandParent: l["a"].bool, autoExpandParent: l["a"].bool, defaultExpandAll: l["a"].bool, defaultExpandedKeys: l["a"].array, expandedKeys: l["a"].array, defaultCheckedKeys: l["a"].array, checkedKeys: l["a"].oneOfType([l["a"].array, l["a"].object]), defaultSelectedKeys: l["a"].array, selectedKeys: l["a"].array, loadData: l["a"].func, loadedKeys: l["a"].array, filterTreeNode: l["a"].func, openTransitionName: l["a"].string, openAnimation: l["a"].oneOfType([l["a"].string, l["a"].object]), switcherIcon: l["a"].any, _propsSymbol: l["a"].any }, { prefixCls: "rc-tree", showLine: !1, showIcon: !0, selectable: !0, multiple: !1, checkable: !1, disabled: !1, checkStrictly: !1, draggable: !1, defaultExpandParent: !0, autoExpandParent: !1, defaultExpandAll: !1, defaultExpandedKeys: [], defaultCheckedKeys: [], defaultSelectedKeys: [] }), data: function () { d()(this.$props.__propsSymbol__, "must pass __propsSymbol__"), d()(this.$props.children, "please use children prop replace slots.default"), this.needSyncKeys = {}, this.domTreeNodes = {}; var e = { _posEntities: new Map, _keyEntities: new Map, _expandedKeys: [], _selectedKeys: [], _checkedKeys: [], _halfCheckedKeys: [], _loadedKeys: [], _loadingKeys: [], _treeNode: [], _prevProps: null, _dragOverNodeKey: "", _dropPosition: null, _dragNodesKeys: [] }; return c()({}, e, this.getDerivedState(Object(p["l"])(this), e)) }, provide: function () { return { vcTree: this } }, watch: c()({}, b(["treeData", "children", "expandedKeys", "autoExpandParent", "selectedKeys", "checkedKeys", "loadedKeys"]), { __propsSymbol__: function () { this.setState(this.getDerivedState(Object(p["l"])(this), this.$data)), this.needSyncKeys = {} } }), methods: { getDerivedState: function (e, t) { var n = t._prevProps, r = { _prevProps: c()({}, e) }, i = this; function o(t) { return !n && t in e || n && i.needSyncKeys[t] } var s = null; if (o("treeData") ? s = Object(y["g"])(this.$createElement, e.treeData) : o("children") && (s = e.children), s) { r._treeNode = s; var l = Object(y["h"])(s); r._keyEntities = l.keyEntities } var u = r._keyEntities || t._keyEntities; if (o("expandedKeys") || n && o("autoExpandParent") ? r._expandedKeys = e.autoExpandParent || !n && e.defaultExpandParent ? Object(y["f"])(e.expandedKeys, u) : e.expandedKeys : !n && e.defaultExpandAll ? r._expandedKeys = [].concat(a()(u.keys())) : !n && e.defaultExpandedKeys && (r._expandedKeys = e.autoExpandParent || e.defaultExpandParent ? Object(y["f"])(e.defaultExpandedKeys, u) : e.defaultExpandedKeys), e.selectable && (o("selectedKeys") ? r._selectedKeys = Object(y["d"])(e.selectedKeys, e) : !n && e.defaultSelectedKeys && (r._selectedKeys = Object(y["d"])(e.defaultSelectedKeys, e))), e.checkable) { var h = void 0; if (o("checkedKeys") ? h = Object(y["m"])(e.checkedKeys) || {} : !n && e.defaultCheckedKeys ? h = Object(y["m"])(e.defaultCheckedKeys) || {} : s && (h = Object(y["m"])(e.checkedKeys) || { checkedKeys: t._checkedKeys, halfCheckedKeys: t._halfCheckedKeys }), h) { var f = h, d = f.checkedKeys, p = void 0 === d ? [] : d, v = f.halfCheckedKeys, m = void 0 === v ? [] : v; if (!e.checkStrictly) { var g = Object(y["e"])(p, !0, u); p = g.checkedKeys, m = g.halfCheckedKeys } r._checkedKeys = p, r._halfCheckedKeys = m } } return o("loadedKeys") && (r._loadedKeys = e.loadedKeys), r }, onNodeDragStart: function (e, t) { var n = this.$data._expandedKeys, r = t.eventKey, i = Object(p["p"])(t)["default"]; this.dragNode = t, this.setState({ _dragNodesKeys: Object(y["i"])("function" === typeof i ? i() : i, t), _expandedKeys: Object(y["b"])(n, r) }), this.__emit("dragstart", { event: e, node: t }) }, onNodeDragEnter: function (e, t) { var n = this, r = this.$data._expandedKeys, i = t.pos, o = t.eventKey; if (this.dragNode && t.$refs.selectHandle) { var a = Object(y["c"])(e, t); this.dragNode.eventKey !== o || 0 !== a ? setTimeout((function () { n.setState({ _dragOverNodeKey: o, _dropPosition: a }), n.delayedDragEnterLogic || (n.delayedDragEnterLogic = {}), Object.keys(n.delayedDragEnterLogic).forEach((function (e) { clearTimeout(n.delayedDragEnterLogic[e]) })), n.delayedDragEnterLogic[i] = setTimeout((function () { var i = Object(y["a"])(r, o); Object(p["s"])(n, "expandedKeys") || n.setState({ _expandedKeys: i }), n.__emit("dragenter", { event: e, node: t, expandedKeys: i }) }), 400) }), 0) : this.setState({ _dragOverNodeKey: "", _dropPosition: null }) } }, onNodeDragOver: function (e, t) { var n = t.eventKey, r = this.$data, i = r._dragOverNodeKey, o = r._dropPosition; if (this.dragNode && n === i && t.$refs.selectHandle) { var a = Object(y["c"])(e, t); if (a === o) return; this.setState({ _dropPosition: a }) } this.__emit("dragover", { event: e, node: t }) }, onNodeDragLeave: function (e, t) { this.setState({ _dragOverNodeKey: "" }), this.__emit("dragleave", { event: e, node: t }) }, onNodeDragEnd: function (e, t) { this.setState({ _dragOverNodeKey: "" }), this.__emit("dragend", { event: e, node: t }), this.dragNode = null }, onNodeDrop: function (e, t) { var n = this.$data, r = n._dragNodesKeys, i = void 0 === r ? [] : r, o = n._dropPosition, a = t.eventKey, s = t.pos; if (this.setState({ _dragOverNodeKey: "" }), -1 === i.indexOf(a)) { var c = Object(y["n"])(s), l = { event: e, node: t, dragNode: this.dragNode, dragNodesKeys: i.slice(), dropPosition: o + Number(c[c.length - 1]), dropToGap: !1 }; 0 !== o && (l.dropToGap = !0), this.__emit("drop", l), this.dragNode = null } else d()(!1, "Can not drop to dragNode(include it's children node)") }, onNodeClick: function (e, t) { this.__emit("click", e, t) }, onNodeDoubleClick: function (e, t) { this.__emit("dblclick", e, t) }, onNodeSelect: function (e, t) { var n = this.$data._selectedKeys, r = this.$data._keyEntities, i = this.$props.multiple, o = Object(p["l"])(t), a = o.selected, s = o.eventKey, c = !a; n = c ? i ? Object(y["a"])(n, s) : [s] : Object(y["b"])(n, s); var l = n.map((function (e) { var t = r.get(e); return t ? t.node : null })).filter((function (e) { return e })); this.setUncontrolledState({ _selectedKeys: n }); var u = { event: "select", selected: c, node: t, selectedNodes: l, nativeEvent: e }; this.__emit("update:selectedKeys", n), this.__emit("select", n, u) }, onNodeCheck: function (e, t, n) { var r = this.$data, i = r._keyEntities, o = r._checkedKeys, a = r._halfCheckedKeys, s = this.$props.checkStrictly, c = Object(p["l"])(t), l = c.eventKey, u = void 0, h = { event: "check", node: t, checked: n, nativeEvent: e }; if (s) { var f = n ? Object(y["a"])(o, l) : Object(y["b"])(o, l), d = Object(y["b"])(a, l); u = { checked: f, halfChecked: d }, h.checkedNodes = f.map((function (e) { return i.get(e) })).filter((function (e) { return e })).map((function (e) { return e.node })), this.setUncontrolledState({ _checkedKeys: f }) } else { var v = Object(y["e"])([l], n, i, { checkedKeys: o, halfCheckedKeys: a }), m = v.checkedKeys, g = v.halfCheckedKeys; u = m, h.checkedNodes = [], h.checkedNodesPositions = [], h.halfCheckedKeys = g, m.forEach((function (e) { var t = i.get(e); if (t) { var n = t.node, r = t.pos; h.checkedNodes.push(n), h.checkedNodesPositions.push({ node: n, pos: r }) } })), this.setUncontrolledState({ _checkedKeys: m, _halfCheckedKeys: g }) } this.__emit("check", u, h) }, onNodeLoad: function (e) { var t = this; return new Promise((function (n) { t.setState((function (r) { var i = r._loadedKeys, o = void 0 === i ? [] : i, a = r._loadingKeys, s = void 0 === a ? [] : a, c = t.$props.loadData, l = Object(p["l"])(e), u = l.eventKey; if (!c || -1 !== o.indexOf(u) || -1 !== s.indexOf(u)) return {}; var h = c(e); return h.then((function () { var r = t.$data, i = r._loadedKeys, o = r._loadingKeys, a = Object(y["a"])(i, u), s = Object(y["b"])(o, u); t.__emit("load", a, { event: "load", node: e }), t.setUncontrolledState({ _loadedKeys: a }), t.setState({ _loadingKeys: s }), n() })), { _loadingKeys: Object(y["a"])(s, u) } })) })) }, onNodeExpand: function (e, t) { var n = this, r = this.$data._expandedKeys, i = this.$props.loadData, o = Object(p["l"])(t), a = o.eventKey, s = o.expanded, c = r.indexOf(a), l = !s; if (d()(s && -1 !== c || !s && -1 === c, "Expand state not sync with index check"), r = l ? Object(y["a"])(r, a) : Object(y["b"])(r, a), this.setUncontrolledState({ _expandedKeys: r }), this.__emit("expand", r, { node: t, expanded: l, nativeEvent: e }), this.__emit("update:expandedKeys", r), l && i) { var u = this.onNodeLoad(t); return u ? u.then((function () { n.setUncontrolledState({ _expandedKeys: r }) })) : null } return null }, onNodeMouseEnter: function (e, t) { this.__emit("mouseenter", { event: e, node: t }) }, onNodeMouseLeave: function (e, t) { this.__emit("mouseleave", { event: e, node: t }) }, onNodeContextMenu: function (e, t) { e.preventDefault(), this.__emit("rightClick", { event: e, node: t }) }, setUncontrolledState: function (e) { var t = !1, n = {}, r = Object(p["l"])(this); Object.keys(e).forEach((function (i) { i.replace("_", "") in r || (t = !0, n[i] = e[i]) })), t && this.setState(n) }, registerTreeNode: function (e, t) { t ? this.domTreeNodes[e] = t : delete this.domTreeNodes[e] }, isKeyChecked: function (e) { var t = this.$data._checkedKeys, n = void 0 === t ? [] : t; return -1 !== n.indexOf(e) }, renderTreeNode: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, r = this.$data, i = r._keyEntities, o = r._expandedKeys, a = void 0 === o ? [] : o, s = r._selectedKeys, c = void 0 === s ? [] : s, l = r._halfCheckedKeys, u = void 0 === l ? [] : l, h = r._loadedKeys, f = void 0 === h ? [] : h, d = r._loadingKeys, p = void 0 === d ? [] : d, m = r._dragOverNodeKey, g = r._dropPosition, b = Object(y["k"])(n, t), x = e.key; return x || void 0 !== x && null !== x || (x = b), i.get(x) ? Object(v["a"])(e, { props: { eventKey: x, expanded: -1 !== a.indexOf(x), selected: -1 !== c.indexOf(x), loaded: -1 !== f.indexOf(x), loading: -1 !== p.indexOf(x), checked: this.isKeyChecked(x), halfChecked: -1 !== u.indexOf(x), pos: b, dragOver: m === x && 0 === g, dragOverGapTop: m === x && -1 === g, dragOverGapBottom: m === x && 1 === g }, key: x }) : (Object(y["o"])(), null) } }, render: function () { var e = this, t = arguments[0], n = this.$data._treeNode, r = this.$props, o = r.prefixCls, a = r.focusable, s = r.showLine, c = r.tabIndex, l = void 0 === c ? 0 : c; return t("ul", { class: h()(o, i()({}, o + "-show-line", s)), attrs: { role: "tree", unselectable: "on", tabIndex: a ? l : null } }, [Object(y["l"])(n, (function (t, n) { return e.renderTreeNode(t, n) }))]) } }, w = Object(g["a"])(x), _ = n("cdd1"); x.TreeNode = _["a"], w.TreeNode = _["a"]; t["default"] = w }, "1d73": function (e, t, n) { "use strict"; var r = this && this.__importDefault || function (e) { return e && e.__esModule ? e : { default: e } }; Object.defineProperty(t, "__esModule", { value: !0 }); var i = r(n("7746")); t.generate = i.default; var o = { red: "#F5222D", volcano: "#FA541C", orange: "#FA8C16", gold: "#FAAD14", yellow: "#FADB14", lime: "#A0D911", green: "#52C41A", cyan: "#13C2C2", blue: "#1890FF", geekblue: "#2F54EB", purple: "#722ED1", magenta: "#EB2F96", grey: "#666666" }; t.presetPrimaryColors = o; var a = {}; t.presetPalettes = a, Object.keys(o).forEach((function (e) { a[e] = i.default(o[e]), a[e].primary = a[e][5] })); var s = a.red; t.red = s; var c = a.volcano; t.volcano = c; var l = a.gold; t.gold = l; var u = a.orange; t.orange = u; var h = a.yellow; t.yellow = h; var f = a.lime; t.lime = f; var d = a.green; t.green = d; var p = a.cyan; t.cyan = p; var v = a.blue; t.blue = v; var m = a.geekblue; t.geekblue = m; var g = a.purple; t.purple = g; var y = a.magenta; t.magenta = y; var b = a.grey; t.grey = b }, "1d80": function (e, t) { e.exports = function (e) { if (void 0 == e) throw TypeError("Can't call method on " + e); return e } }, "1da1": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return i })); n("d3b7"); function r(e, t, n, r, i, o, a) { try { var s = e[o](a), c = s.value } catch (l) { return void n(l) } s.done ? t(c) : Promise.resolve(c).then(r, i) } function i(e) { return function () { var t = this, n = arguments; return new Promise((function (i, o) { var a = e.apply(t, n); function s(e) { r(a, i, o, s, c, "next", e) } function c(e) { r(a, i, o, s, c, "throw", e) } s(void 0) })) } } }, "1dac": function (e, t, n) { }, "1dde": function (e, t, n) { var r = n("d039"), i = n("b622"), o = n("2d00"), a = i("species"); e.exports = function (e) { return o >= 51 || !r((function () { var t = [], n = t.constructor = {}; return n[a] = function () { return { foo: 1 } }, 1 !== t[e](Boolean).foo })) } }, "1e25": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("58a8").end, o = n("c8d2"), a = o("trimEnd"), s = a ? function () { return i(this) } : "".trimEnd; r({ target: "String", proto: !0, forced: a }, { trimEnd: s, trimRight: s }) }, "1e4c": function (e, t, n) { }, "1ec1": function (e, t) { var n = Math.log; e.exports = Math.log1p || function (e) { return (e = +e) > -1e-8 && e < 1e-8 ? e - e * e / 2 : n(1 + e) } }, "1efc": function (e, t) { function n(e) { var t = this.has(e) && delete this.__data__[e]; return this.size -= t ? 1 : 0, t } e.exports = n }, "1efe": function (e, t, n) { "use strict"; n("b2a3"), n("3de4") }, "1f55": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.gauge = v; var i = r(n("9523")), o = r(n("7037")), a = r(n("278c")), s = r(n("448a")), c = n("18ad"), l = n("cc6d"), u = n("5557"), h = n("becb"), f = n("53b8"); function d(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function p(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? d(Object(n), !0).forEach((function (t) { (0, i["default"])(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : d(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } function v(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.series; n || (n = []); var r = (0, h.initNeedSeries)(n, l.gaugeConfig, "gauge"); r = m(r, e), r = g(r, e), r = y(r, e), r = b(r, e), r = x(r, e), r = w(r, e), r = _(r, e), r = C(r, e), r = M(r, e), r = O(r, e), (0, c.doUpdate)({ chart: e, series: r, key: "gaugeAxisTick", getGraphConfig: S }), (0, c.doUpdate)({ chart: e, series: r, key: "gaugeAxisLabel", getGraphConfig: L }), (0, c.doUpdate)({ chart: e, series: r, key: "gaugeBackgroundArc", getGraphConfig: E, getStartGraphConfig: H }), (0, c.doUpdate)({ chart: e, series: r, key: "gaugeArc", getGraphConfig: V, getStartGraphConfig: R, beforeChange: F }), (0, c.doUpdate)({ chart: e, series: r, key: "gaugePointer", getGraphConfig: Y, getStartGraphConfig: q }), (0, c.doUpdate)({ chart: e, series: r, key: "gaugeDetails", getGraphConfig: U }) } function m(e, t) { var n = t.render.area; return e.forEach((function (e) { var t = e.center; t = t.map((function (e, t) { return "number" === typeof e ? e : parseInt(e) / 100 * n[t] })), e.center = t })), e } function g(e, t) { var n = t.render.area, r = Math.min.apply(Math, (0, s["default"])(n)) / 2; return e.forEach((function (e) { var t = e.radius; "number" !== typeof t && (t = parseInt(t) / 100 * r), e.radius = t })), e } function y(e, t) { var n = t.render.area, r = Math.min.apply(Math, (0, s["default"])(n)) / 2; return e.forEach((function (e) { var t = e.radius, n = e.data, i = e.arcLineWidth; n.forEach((function (e) { var n = e.radius, o = e.lineWidth; n || (n = t), "number" !== typeof n && (n = parseInt(n) / 100 * r), e.radius = n, o || (o = i), e.lineWidth = o })) })), e } function b(e, t) { return e.forEach((function (e) { var t = e.startAngle, n = e.endAngle, r = e.data, i = e.min, o = e.max, a = n - t, s = o - i; r.forEach((function (e) { var n = e.value, r = Math.abs((n - i) / s * a); e.startAngle = t, e.endAngle = t + r })) })), e } function x(e, t) { return e.forEach((function (e) { var t = e.data; t.forEach((function (e) { var t = e.color, n = e.gradient; n && n.length || (n = t), n instanceof Array || (n = [n]), e.gradient = n })) })), e } function w(e, t) { return e.forEach((function (e) { var t = e.startAngle, n = e.endAngle, r = e.splitNum, i = e.center, o = e.radius, a = e.arcLineWidth, c = e.axisTick, l = c.tickLength, h = c.style.lineWidth, f = n - t, d = o - a / 2, p = d - l, v = f / (r - 1), m = 2 * Math.PI * o * f / (2 * Math.PI), g = Math.ceil(h / 2) / m * f; e.tickAngles = [], e.tickInnerRadius = [], e.tickPosition = new Array(r).fill(0).map((function (n, o) { var a = t + v * o; return 0 === o && (a += g), o === r - 1 && (a -= g), e.tickAngles[o] = a, e.tickInnerRadius[o] = p, [u.getCircleRadianPoint.apply(void 0, (0, s["default"])(i).concat([d, a])), u.getCircleRadianPoint.apply(void 0, (0, s["default"])(i).concat([p, a]))] })) })), e } function _(e, t) { return e.forEach((function (e) { var t = e.center, n = e.tickInnerRadius, r = e.tickAngles, i = e.axisLabel.labelGap, o = r.map((function (e, o) { return u.getCircleRadianPoint.apply(void 0, (0, s["default"])(t).concat([n[o] - i, r[o]])) })), c = o.map((function (e) { var n = (0, a["default"])(e, 2), r = n[0], i = n[1]; return { textAlign: r > t[0] ? "right" : "left", textBaseline: i > t[1] ? "bottom" : "top" } })); e.labelPosition = o, e.labelAlign = c })), e } function C(e, t) { return e.forEach((function (e) { var t = e.axisLabel, n = e.min, r = e.max, i = e.splitNum, a = t.data, s = t.formatter, c = (r - n) / (i - 1), l = new Array(i).fill(0).map((function (e, t) { return parseInt(n + c * t) })), u = (0, o["default"])(s); a = (0, h.deepMerge)(l, a).map((function (e, t) { var n = e; return "string" === u && (n = s.replace("{value}", e)), "function" === u && (n = s({ value: e, index: t })), n })), t.data = a })), e } function M(e, t) { return e.forEach((function (e) { var t = e.data, n = e.details, r = e.center, i = n.position, o = n.offset, a = t.map((function (e) { var t = e.startAngle, n = e.endAngle, a = e.radius, c = null; return "center" === i ? c = r : "start" === i ? c = u.getCircleRadianPoint.apply(void 0, (0, s["default"])(r).concat([a, t])) : "end" === i && (c = u.getCircleRadianPoint.apply(void 0, (0, s["default"])(r).concat([a, n]))), k(c, o) })); e.detailsPosition = a })), e } function O(e, t) { return e.forEach((function (e) { var t = e.data, n = e.details, r = n.formatter, i = (0, o["default"])(r), a = t.map((function (e) { var t = e.value; return "string" === i && (t = r.replace("{value}", "{nt}"), t = t.replace("{name}", e.name)), "function" === i && (t = r(e)), t.toString() })); e.detailsContent = a })), e } function k(e, t) { var n = (0, a["default"])(e, 2), r = n[0], i = n[1], o = (0, a["default"])(t, 2), s = o[0], c = o[1]; return [r + s, i + c] } function S(e) { var t = e.tickPosition, n = e.animationCurve, r = e.animationFrame, i = e.rLevel; return t.map((function (t, o) { return { name: "polyline", index: i, visible: e.axisTick.show, animationCurve: n, animationFrame: r, shape: T(e, o), style: A(e, o) } })) } function T(e, t) { var n = e.tickPosition; return { points: n[t] } } function A(e, t) { var n = e.axisTick.style; return n } function L(e) { var t = e.labelPosition, n = e.animationCurve, r = e.animationFrame, i = e.rLevel; return t.map((function (t, o) { return { name: "text", index: i, visible: e.axisLabel.show, animationCurve: n, animationFrame: r, shape: j(e, o), style: z(e, o) } })) } function j(e, t) { var n = e.labelPosition, r = e.axisLabel.data; return { content: r[t].toString(), position: n[t] } } function z(e, t) { var n = e.labelAlign, r = e.axisLabel, i = r.style; return (0, h.deepMerge)(p({}, n[t]), i) } function E(e) { var t = e.animationCurve, n = e.animationFrame, r = e.rLevel; return [{ name: "arc", index: r, visible: e.backgroundArc.show, animationCurve: t, animationFrame: n, shape: P(e), style: D(e) }] } function P(e) { var t = e.startAngle, n = e.endAngle, r = e.center, i = e.radius; return { rx: r[0], ry: r[1], r: i, startAngle: t, endAngle: n } } function D(e) { var t = e.backgroundArc, n = e.arcLineWidth, r = t.style; return (0, h.deepMerge)({ lineWidth: n }, r) } function H(e) { var t = E(e)[0], n = p({}, t.shape); return n.endAngle = t.shape.startAngle, t.shape = n, [t] } function V(e) { var t = e.data, n = e.animationCurve, r = e.animationFrame, i = e.rLevel; return t.map((function (t, o) { return { name: "agArc", index: i, animationCurve: n, animationFrame: r, shape: I(e, o), style: N(e, o) } })) } function I(e, t) { var n = e.data, r = e.center, i = e.endAngle, o = n[t], a = o.radius, s = o.startAngle, c = o.endAngle, l = o.localGradient; return l && (i = c), { rx: r[0], ry: r[1], r: a, startAngle: s, endAngle: c, gradientEndAngle: i } } function N(e, t) { var n = e.data, r = e.dataItemStyle, i = n[t], o = i.lineWidth, a = i.gradient; return a = a.map((function (e) { return (0, f.getRgbaValue)(e) })), (0, h.deepMerge)({ lineWidth: o, gradient: a }, r) } function R(e) { var t = V(e); return t.map((function (e) { var t = p({}, e.shape); t.endAngle = e.shape.startAngle, e.shape = t })), t } function F(e, t) { var n = e.style.gradient, r = n.length, i = t.style.gradient.length; if (r > i) n.splice(i); else { var o = n.slice(-1)[0]; n.push.apply(n, (0, s["default"])(new Array(i - r).fill(0).map((function (e) { return (0, s["default"])(o) })))) } } function Y(e) { var t = e.animationCurve, n = e.animationFrame, r = e.center, i = e.rLevel; return [{ name: "polyline", index: i, visible: e.pointer.show, animationCurve: t, animationFrame: n, shape: $(e), style: B(e), setGraphCenter: function (e, t) { t.style.graphCenter = r } }] } function $(e) { var t = e.center; return { points: W(t), close: !0 } } function B(e) { var t = e.startAngle, n = e.endAngle, r = e.min, i = e.max, o = e.data, a = e.pointer, s = e.center, c = a.valueIndex, l = a.style, u = o[c] ? o[c].value : 0, f = (u - r) / (i - r) * (n - t) + t + Math.PI / 2; return (0, h.deepMerge)({ rotate: (0, h.radianToAngle)(f), scale: [1, 1], graphCenter: s }, l) } function W(e) { var t = (0, a["default"])(e, 2), n = t[0], r = t[1], i = [n, r - 40], o = [n + 5, r], s = [n, r + 10], c = [n - 5, r]; return [i, o, s, c] } function q(e) { var t = e.startAngle, n = Y(e)[0]; return n.style.rotate = (0, h.radianToAngle)(t + Math.PI / 2), [n] } function U(e) { var t = e.detailsPosition, n = e.animationCurve, r = e.animationFrame, i = e.rLevel, o = e.details.show; return t.map((function (t, a) { return { name: "numberText", index: i, visible: o, animationCurve: n, animationFrame: r, shape: K(e, a), style: G(e, a) } })) } function K(e, t) { var n = e.detailsPosition, r = e.detailsContent, i = e.data, o = e.details, a = n[t], s = r[t], c = i[t].value, l = o.valueToFixed; return { number: [c], content: s, position: a, toFixed: l } } function G(e, t) { var n = e.details, r = e.data, i = n.style, o = r[t].color; return (0, h.deepMerge)({ fill: o }, i) } }, "1fb5": function (e, t, n) { "use strict"; t.byteLength = u, t.toByteArray = f, t.fromByteArray = v; for (var r = [], i = [], o = "undefined" !== typeof Uint8Array ? Uint8Array : Array, a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s = 0, c = a.length; s < c; ++s)r[s] = a[s], i[a.charCodeAt(s)] = s; function l(e) { var t = e.length; if (t % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4"); var n = e.indexOf("="); -1 === n && (n = t); var r = n === t ? 0 : 4 - n % 4; return [n, r] } function u(e) { var t = l(e), n = t[0], r = t[1]; return 3 * (n + r) / 4 - r } function h(e, t, n) { return 3 * (t + n) / 4 - n } function f(e) { var t, n, r = l(e), a = r[0], s = r[1], c = new o(h(e, a, s)), u = 0, f = s > 0 ? a - 4 : a; for (n = 0; n < f; n += 4)t = i[e.charCodeAt(n)] << 18 | i[e.charCodeAt(n + 1)] << 12 | i[e.charCodeAt(n + 2)] << 6 | i[e.charCodeAt(n + 3)], c[u++] = t >> 16 & 255, c[u++] = t >> 8 & 255, c[u++] = 255 & t; return 2 === s && (t = i[e.charCodeAt(n)] << 2 | i[e.charCodeAt(n + 1)] >> 4, c[u++] = 255 & t), 1 === s && (t = i[e.charCodeAt(n)] << 10 | i[e.charCodeAt(n + 1)] << 4 | i[e.charCodeAt(n + 2)] >> 2, c[u++] = t >> 8 & 255, c[u++] = 255 & t), c } function d(e) { return r[e >> 18 & 63] + r[e >> 12 & 63] + r[e >> 6 & 63] + r[63 & e] } function p(e, t, n) { for (var r, i = [], o = t; o < n; o += 3)r = (e[o] << 16 & 16711680) + (e[o + 1] << 8 & 65280) + (255 & e[o + 2]), i.push(d(r)); return i.join("") } function v(e) { for (var t, n = e.length, i = n % 3, o = [], a = 16383, s = 0, c = n - i; s < c; s += a)o.push(p(e, s, s + a > c ? c : s + a)); return 1 === i ? (t = e[n - 1], o.push(r[t >> 2] + r[t << 4 & 63] + "==")) : 2 === i && (t = (e[n - 2] << 8) + e[n - 1], o.push(r[t >> 10] + r[t >> 4 & 63] + r[t << 2 & 63] + "=")), o.join("") } i["-".charCodeAt(0)] = 62, i["_".charCodeAt(0)] = 63 }, "1fc8": function (e, t, n) { var r = n("4245"); function i(e, t) { var n = r(this, e), i = n.size; return n.set(e, t), this.size += n.size == i ? 0 : 1, this } e.exports = i }, "1fd5": function (e, t, n) { "use strict"; var r = n("6042"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("1098"), c = n.n(s), l = n("4d26"), u = n.n(l), h = n("4d91"), f = n("daa3"), d = n("9cba"), p = { prefixCls: h["a"].string, size: h["a"].oneOfType([h["a"].oneOf(["large", "small", "default"]), h["a"].number]), shape: h["a"].oneOf(["circle", "square"]) }, v = h["a"].shape(p).loose, m = { props: Object(f["t"])(p, { size: "large" }), render: function () { var e, t, n = arguments[0], r = this.$props, o = r.prefixCls, a = r.size, s = r.shape, c = u()((e = {}, i()(e, o + "-lg", "large" === a), i()(e, o + "-sm", "small" === a), e)), l = u()((t = {}, i()(t, o + "-circle", "circle" === s), i()(t, o + "-square", "square" === s), t)), h = "number" === typeof a ? { width: a + "px", height: a + "px", lineHeight: a + "px" } : {}; return n("span", { class: u()(o, c, l), style: h }) } }, g = m, y = { prefixCls: h["a"].string, width: h["a"].oneOfType([h["a"].number, h["a"].string]) }, b = h["a"].shape(y), x = { props: y, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.width, i = "number" === typeof r ? r + "px" : r; return e("h3", { class: n, style: { width: i } }) } }, w = x, _ = n("9b57"), C = n.n(_), M = h["a"].oneOfType([h["a"].number, h["a"].string]), O = { prefixCls: h["a"].string, width: h["a"].oneOfType([M, h["a"].arrayOf(M)]), rows: h["a"].number }, k = h["a"].shape(O), S = { props: O, methods: { getWidth: function (e) { var t = this.width, n = this.rows, r = void 0 === n ? 2 : n; return Array.isArray(t) ? t[e] : r - 1 === e ? t : void 0 } }, render: function () { var e = this, t = arguments[0], n = this.$props, r = n.prefixCls, i = n.rows, o = [].concat(C()(Array(i))).map((function (n, r) { var i = e.getWidth(r); return t("li", { key: r, style: { width: "number" === typeof i ? i + "px" : i } }) })); return t("ul", { class: r }, [o]) } }, T = S, A = n("db14"), L = { active: h["a"].bool, loading: h["a"].bool, prefixCls: h["a"].string, children: h["a"].any, avatar: h["a"].oneOfType([h["a"].string, v, h["a"].bool]), title: h["a"].oneOfType([h["a"].bool, h["a"].string, b]), paragraph: h["a"].oneOfType([h["a"].bool, h["a"].string, k]) }; function j(e) { return e && "object" === ("undefined" === typeof e ? "undefined" : c()(e)) ? e : {} } function z(e, t) { return e && !t ? { shape: "square" } : { shape: "circle" } } function E(e, t) { return !e && t ? { width: "38%" } : e && t ? { width: "50%" } : {} } function P(e, t) { var n = {}; return e && t || (n.width = "61%"), n.rows = !e && t ? 3 : 2, n } var D = { name: "ASkeleton", props: Object(f["t"])(L, { avatar: !1, title: !0, paragraph: !0 }), inject: { configProvider: { default: function () { return d["a"] } } }, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.loading, o = t.avatar, s = t.title, c = t.paragraph, l = t.active, h = this.configProvider.getPrefixCls, d = h("skeleton", n); if (r || !Object(f["s"])(this, "loading")) { var p, v = !!o || "" === o, m = !!s, y = !!c, b = void 0; if (v) { var x = { props: a()({ prefixCls: d + "-avatar" }, z(m, y), j(o)) }; b = e("div", { class: d + "-header" }, [e(g, x)]) } var _ = void 0; if (m || y) { var C = void 0; if (m) { var M = { props: a()({ prefixCls: d + "-title" }, E(v, y), j(s)) }; C = e(w, M) } var O = void 0; if (y) { var k = { props: a()({ prefixCls: d + "-paragraph" }, P(v, m), j(c)) }; O = e(T, k) } _ = e("div", { class: d + "-content" }, [C, O]) } var S = u()(d, (p = {}, i()(p, d + "-with-avatar", v), i()(p, d + "-active", l), p)); return e("div", { class: S }, [b, _]) } var A = this.$slots["default"]; return A && 1 === A.length ? A[0] : e("span", [A]) }, install: function (e) { e.use(A["a"]), e.component(D.name, D) } }; t["a"] = D }, "1fe2": function (e, t, n) { "use strict"; var r = n("6d61"), i = n("acac"); r("WeakSet", (function (e) { return function () { return e(this, arguments.length ? arguments[0] : void 0) } }), i) }, 2047: function (e, t, n) { }, "204e": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.bar = p; var i = r(n("7037")), o = r(n("9523")), a = r(n("278c")), s = r(n("448a")), c = n("18ad"), l = n("9d85"), u = n("5557"), h = n("becb"); function f(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function d(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? f(Object(n), !0).forEach((function (t) { (0, o["default"])(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : f(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } function p(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.xAxis, r = t.yAxis, i = t.series, o = []; n && r && i && (o = (0, h.initNeedSeries)(i, l.barConfig, "bar"), o = v(o, e), o = m(o, e), o = k(o, e)), (0, c.doUpdate)({ chart: e, series: o.slice(-1), key: "backgroundBar", getGraphConfig: E }), o.reverse(), (0, c.doUpdate)({ chart: e, series: o, key: "bar", getGraphConfig: V, getStartGraphConfig: W, beforeUpdate: G }), (0, c.doUpdate)({ chart: e, series: o, key: "barLabel", getGraphConfig: X }) } function v(e, t) { var n = t.axisData; return e.forEach((function (e) { var t = e.xAxisIndex, r = e.yAxisIndex; "number" !== typeof t && (t = 0), "number" !== typeof r && (r = 0); var i = n.find((function (e) { var n = e.axis, r = e.index; return "".concat(n).concat(r) === "x".concat(t) })), o = n.find((function (e) { var t = e.axis, n = e.index; return "".concat(t).concat(n) === "y".concat(r) })), a = [i, o], s = a.findIndex((function (e) { var t = e.data; return "value" === t })); e.valueAxis = a[s], e.labelAxis = a[1 - s] })), e } function m(e, t) { var n = y(e); return n.forEach((function (e) { g(e), x(e), w(e, t), _(e), O(e) })), e } function g(e) { var t = b(e); t = t.map((function (e) { return { stack: e, index: -1 } })); var n = 0; e.forEach((function (e) { var r = e.stack; if (r) { var i = t.find((function (e) { var t = e.stack; return t === r })); -1 === i.index && (i.index = n, n++), e.barIndex = i.index } else e.barIndex = n, n++ })) } function y(e) { var t = e.map((function (e) { var t = e.labelAxis, n = t.axis, r = t.index; return n + r })); return t = (0, s["default"])(new Set(t)), t.map((function (t) { return e.filter((function (e) { var n = e.labelAxis, r = n.axis, i = n.index; return r + i === t })) })) } function b(e) { var t = []; return e.forEach((function (e) { var n = e.stack; n && t.push(n) })), (0, s["default"])(new Set(t)) } function x(e) { var t = (0, s["default"])(new Set(e.map((function (e) { var t = e.barIndex; return t })))).length; e.forEach((function (e) { return e.barNum = t })) } function w(e) { var t = e.slice(-1)[0], n = t.barCategoryGap, r = t.labelAxis.tickGap, i = 0; i = "number" === typeof n ? n : (1 - parseInt(n) / 100) * r, e.forEach((function (e) { return e.barCategoryWidth = i })) } function _(e) { var t = e.slice(-1)[0], n = t.barCategoryWidth, r = t.barWidth, i = t.barGap, o = t.barNum, s = []; "number" === typeof r || "auto" !== r ? s = C(n, r, i, o) : "auto" === r && (s = M(n, r, i, o)); var c = s, l = (0, a["default"])(c, 2), u = l[0], h = l[1]; e.forEach((function (e) { e.barWidth = u, e.barGap = h })) } function C(e, t, n) { var r = 0, i = 0; return r = "number" === typeof t ? t : parseInt(t) / 100 * e, i = "number" === typeof n ? n : parseInt(n) / 100 * r, [r, i] } function M(e, t, n, r) { var i = 0, o = 0, a = e / r; if ("number" === typeof n) o = n, i = a - o; else { var s = 10 + parseInt(n) / 10; 0 === s ? (i = 2 * a, o = -i) : (i = a / s * 10, o = a - i) } return [i, o] } function O(e) { var t = e.slice(-1)[0], n = t.barGap, r = t.barWidth, i = t.barNum, o = (n + r) * i - n; e.forEach((function (e) { return e.barAllWidthAndGap = o })) } function k(e, t) { return e = T(e), e = S(e), e = L(e), e = j(e), e } function S(e) { return e.map((function (e) { var t = e.labelAxis, n = e.barAllWidthAndGap, r = e.barGap, i = e.barWidth, o = e.barIndex, a = t.tickGap, s = t.tickPosition, c = t.axis, l = "x" === c ? 0 : 1, u = s.map((function (e, t) { var c = s[t][l] - a / 2, u = c + (a - n) / 2; return u + (o + .5) * i + o * r })); return d(d({}, e), {}, { barLabelAxisPos: u }) })) } function T(e) { return e.map((function (t) { var n = (0, h.mergeSameStackData)(t, e); n = A(t, n); var r = t.valueAxis, i = r.axis, o = r.minValue, a = r.maxValue, s = r.linePosition, c = z(o, a, o < 0 ? 0 : o, s, i), l = n.map((function (e) { return z(o, a, e, s, i) })), u = l.map((function (e) { return [c, e] })); return d(d({}, t), {}, { barValueAxisPos: u }) })) } function A(e, t) { var n = e.data; return t.map((function (e, t) { return "number" === typeof n[t] ? e : null })).filter((function (e) { return null !== e })) } function L(e) { return e.map((function (e) { var t = e.barLabelAxisPos, n = e.data; return n.forEach((function (e, n) { "number" !== typeof e && (t[n] = null) })), d(d({}, e), {}, { barLabelAxisPos: t.filter((function (e) { return null !== e })) }) })) } function j(e) { return e.forEach((function (e) { var t = e.data, n = e.barLabelAxisPos, r = e.barValueAxisPos, i = t.filter((function (e) { return "number" === typeof e })).length, o = n.length; o > i && (n.splice(i), r.splice(i)) })), e } function z(e, t, n, r, i) { if ("number" !== typeof n) return null; var o = t - e, a = "x" === i ? 0 : 1, s = r[1][a] - r[0][a], c = (n - e) / o; 0 === o && (c = 0); var l = c * s; return l + r[0][a] } function E(e) { var t = e.animationCurve, n = e.animationFrame, r = e.rLevel, i = P(e), o = H(e); return i.map((function (i) { return { name: "rect", index: r, visible: e.backgroundBar.show, animationCurve: t, animationFrame: n, shape: i, style: o } })) } function P(e) { var t = e.labelAxis, n = e.valueAxis, r = t.tickPosition, i = n.axis, o = n.linePosition, a = D(e), s = a / 2, c = "x" === i ? 0 : 1, l = r.map((function (e) { return e[1 - c] })), u = [o[0][c], o[1][c]], h = u[0], f = u[1]; return l.map((function (e) { return "x" === i ? { x: h, y: e - s, w: f - h, h: a } : { x: e - s, y: f, w: a, h: h - f } })) } function D(e) { var t = e.barAllWidthAndGap, n = e.barCategoryWidth, r = e.backgroundBar, i = r.width; return "number" === typeof i ? i : "auto" === i ? t : parseInt(i) / 100 * n } function H(e) { return e.backgroundBar.style } function V(e) { var t = e.barLabelAxisPos, n = e.animationCurve, r = e.animationFrame, i = e.rLevel, o = I(e); return t.map((function (t, a) { return { name: o, index: i, animationCurve: n, animationFrame: r, shape: N(e, a), style: $(e, a) } })) } function I(e) { var t = e.shapeType; return "leftEchelon" === t || "rightEchelon" === t ? "polyline" : "rect" } function N(e, t) { var n = e.shapeType; return "leftEchelon" === n ? R(e, t) : "rightEchelon" === n ? F(e, t) : Y(e, t) } function R(e, t) { var n = e.barValueAxisPos, r = e.barLabelAxisPos, i = e.barWidth, o = e.echelonOffset, s = (0, a["default"])(n[t], 2), c = s[0], l = s[1], u = r[t], h = i / 2, f = e.valueAxis.axis, d = []; return "x" === f ? (d[0] = [l, u - h], d[1] = [l, u + h], d[2] = [c, u + h], d[3] = [c + o, u - h], l - c < o && d.splice(3, 1)) : (d[0] = [u - h, l], d[1] = [u + h, l], d[2] = [u + h, c], d[3] = [u - h, c - o], c - l < o && d.splice(3, 1)), { points: d, close: !0 } } function F(e, t) { var n = e.barValueAxisPos, r = e.barLabelAxisPos, i = e.barWidth, o = e.echelonOffset, s = (0, a["default"])(n[t], 2), c = s[0], l = s[1], u = r[t], h = i / 2, f = e.valueAxis.axis, d = []; return "x" === f ? (d[0] = [l, u + h], d[1] = [l, u - h], d[2] = [c, u - h], d[3] = [c + o, u + h], l - c < o && d.splice(2, 1)) : (d[0] = [u + h, l], d[1] = [u - h, l], d[2] = [u - h, c], d[3] = [u + h, c - o], c - l < o && d.splice(2, 1)), { points: d, close: !0 } } function Y(e, t) { var n = e.barValueAxisPos, r = e.barLabelAxisPos, i = e.barWidth, o = (0, a["default"])(n[t], 2), s = o[0], c = o[1], l = r[t], u = e.valueAxis.axis, h = {}; return "x" === u ? (h.x = s, h.y = l - i / 2, h.w = c - s, h.h = i) : (h.x = l - i / 2, h.y = c, h.w = i, h.h = s - c), h } function $(e, t) { var n = e.barStyle, r = e.gradient, i = e.color, o = e.independentColor, a = e.independentColors, s = [n.fill || i], c = (0, h.deepMerge)(s, r.color); if (o) { var l = a[t % a.length]; c = l instanceof Array ? l : [l] } 1 === c.length && c.push(c[0]); var u = B(e, t); return (0, h.deepMerge)({ gradientColor: c, gradientParams: u, gradientType: "linear", gradientWith: "fill" }, n) } function B(e, t) { var n = e.barValueAxisPos, r = e.barLabelAxisPos, i = e.data, o = e.valueAxis, s = o.linePosition, c = o.axis, l = (0, a["default"])(n[t], 2), u = l[0], h = l[1], f = r[t], d = i[t], p = (0, a["default"])(s, 2), v = p[0], m = p[1], g = "x" === c ? 0 : 1, y = h; return e.gradient.local || (y = d < 0 ? v[g] : m[g]), "y" === c ? [f, y, f, u] : [y, f, u, f] } function W(e) { var t = V(e), n = e.shapeType; return t.forEach((function (t) { var r = t.shape; r = "leftEchelon" === n ? q(r, e) : "rightEchelon" === n ? U(r, e) : K(r, e), t.shape = r })), t } function q(e, t) { var n = t.valueAxis.axis; e = (0, u.deepClone)(e); var r = e, i = r.points, o = "x" === n ? 0 : 1, a = i[2][o]; return i.forEach((function (e) { return e[o] = a })), e } function U(e, t) { var n = t.valueAxis.axis; e = (0, u.deepClone)(e); var r = e, i = r.points, o = "x" === n ? 0 : 1, a = i[2][o]; return i.forEach((function (e) { return e[o] = a })), e } function K(e, t) { var n = t.valueAxis.axis, r = e.x, i = e.y, o = e.w, a = e.h; return "x" === n ? o = 0 : (i += a, a = 0), { x: r, y: i, w: o, h: a } } function G(e, t, n, r) { var i = r.chart.render, o = I(t); e[n] && e[n][0].name !== o && (e[n].forEach((function (e) { return i.delGraph(e) })), e[n] = null) } function X(e) { var t = e.animationCurve, n = e.animationFrame, r = e.rLevel, i = J(e), o = te(e); return i.map((function (i) { return { name: "text", index: r, visible: e.label.show, animationCurve: t, animationFrame: n, shape: i, style: o } })) } function J(e) { var t = Q(e), n = Z(e); return n.map((function (e, n) { return { position: e, content: t[n] } })) } function Q(e) { var t = e.data, n = e.label, r = n.formatter; if (t = t.filter((function (e) { return "number" === typeof e })).map((function (e) { return e.toString() })), !r) return t; var o = (0, i["default"])(r); return "string" === o ? t.map((function (e) { return r.replace("{value}", e) })) : "function" === o ? t.map((function (e, t) { return r({ value: e, index: t }) })) : t } function Z(e) { var t = e.label, n = e.barValueAxisPos, r = e.barLabelAxisPos, i = t.position, o = t.offset, s = e.valueAxis.axis; return n.map((function (e, t) { var n = (0, a["default"])(e, 2), c = n[0], l = n[1], u = r[t], h = [l, u]; return "bottom" === i && (h = [c, u]), "center" === i && (h = [(c + l) / 2, u]), "y" === s && h.reverse(), ee(h, o) })) } function ee(e, t) { var n = (0, a["default"])(e, 2), r = n[0], i = n[1], o = (0, a["default"])(t, 2), s = o[0], c = o[1]; return [r + s, i + c] } function te(e) { var t = e.color, n = e.label.style, r = e.gradient.color; return r.length && (t = r[0]), n = (0, h.deepMerge)({ fill: t }, n), n } }, "20bf": function (e, t, n) { "use strict"; var r = n("8aa7"), i = n("ebb5").exportTypedArrayStaticMethod, o = n("a078"); i("from", o, r) }, "20ec": function (e, t) { function n(e, t) { return function (n) { return null != n && (n[e] === t && (void 0 !== t || e in Object(n))) } } e.exports = n }, "217d": function (e, t) { function n(e, t) { var n, r = 0, i = e.length; for (r; r < i; r++)if (n = t(e[r], r), !1 === n) break } function r(e) { return "[object Array]" === Object.prototype.toString.apply(e) } function i(e) { return "function" === typeof e } e.exports = { isFunction: i, isArray: r, each: n } }, "219c": function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("da84"), o = n("d039"), a = n("1c0b"), s = n("50c4"), c = n("addb"), l = n("04d1"), u = n("d998"), h = n("2d00"), f = n("512ce"), d = r.aTypedArray, p = r.exportTypedArrayMethod, v = i.Uint16Array, m = v && v.prototype.sort, g = !!m && !o((function () { var e = new v(2); e.sort(null), e.sort({}) })), y = !!m && !o((function () { if (h) return h < 74; if (l) return l < 67; if (u) return !0; if (f) return f < 602; var e, t, n = new v(516), r = Array(516); for (e = 0; e < 516; e++)t = e % 4, n[e] = 515 - e, r[e] = e - 2 * t + 3; for (n.sort((function (e, t) { return (e / 4 | 0) - (t / 4 | 0) })), e = 0; e < 516; e++)if (n[e] !== r[e]) return !0 })), b = function (e) { return function (t, n) { return void 0 !== e ? +e(t, n) || 0 : n !== n ? -1 : t !== t ? 1 : 0 === t && 0 === n ? 1 / t > 0 && 1 / n < 0 ? 1 : -1 : t > n } }; p("sort", (function (e) { var t = this; if (void 0 !== e && a(e), y) return m.call(t, e); d(t); var n, r = s(t.length), i = Array(r); for (n = 0; n < r; n++)i[n] = t[n]; for (i = c(t, b(e)), n = 0; n < r; n++)t[n] = i[n]; return t }), !y || g) }, "21d8": function (e, t, n) { }, 2200: function (e, t, n) { }, "222a": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.pieConfig = void 0; var r = { show: !0, name: "", radius: "50%", center: ["50%", "50%"], startAngle: -Math.PI / 2, roseType: !1, roseSort: !0, roseIncrement: "auto", data: [], insideLabel: { show: !1, formatter: "{percent}%", style: { fontSize: 10, fill: "#fff", textAlign: "center", textBaseline: "middle" } }, outsideLabel: { show: !0, formatter: "{name}", style: { fontSize: 11 }, labelLineBendGap: "20%", labelLineEndLength: 50, labelLineStyle: { lineWidth: 1 } }, pieStyle: {}, percentToFixed: 0, rLevel: 10, animationDelayGap: 60, animationCurve: "easeOutCubic", startAnimationCurve: "easeOutBack", animationFrame: 50 }; t.pieConfig = r }, 2236: function (e, t, n) { var r = n("5a43"); function i(e) { if (Array.isArray(e)) return r(e) } e.exports = i, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, 2266: function (e, t, n) { var r = n("825a"), i = n("e95a"), o = n("50c4"), a = n("0366"), s = n("35a1"), c = n("2a62"), l = function (e, t) { this.stopped = e, this.result = t }; e.exports = function (e, t, n) { var u, h, f, d, p, v, m, g = n && n.that, y = !(!n || !n.AS_ENTRIES), b = !(!n || !n.IS_ITERATOR), x = !(!n || !n.INTERRUPTED), w = a(t, g, 1 + y + x), _ = function (e) { return u && c(u), new l(!0, e) }, C = function (e) { return y ? (r(e), x ? w(e[0], e[1], _) : w(e[0], e[1])) : x ? w(e, _) : w(e) }; if (b) u = e; else { if (h = s(e), "function" != typeof h) throw TypeError("Target is not iterable"); if (i(h)) { for (f = 0, d = o(e.length); d > f; f++)if (p = C(e[f]), p && p instanceof l) return p; return new l(!1) } u = h.call(e) } v = u.next; while (!(m = v.call(u)).done) { try { p = C(m.value) } catch (M) { throw c(u), M } if ("object" == typeof p && p && p instanceof l) return p } return new l(!1) } }, 2286: function (e, t, n) { var r = n("85e3"), i = Math.max; function o(e, t, n) { return t = i(void 0 === t ? e.length - 1 : t, 0), function () { var o = arguments, a = -1, s = i(o.length - t, 0), c = Array(s); while (++a < s) c[a] = o[t + a]; a = -1; var l = Array(t + 1); while (++a < t) l[a] = o[a]; return l[t] = n(c), r(e, this, l) } } e.exports = o }, "22a4": function (e, t, n) { "use strict"; var r = n("4d91"); t["a"] = { prefixCls: r["a"].string.def("rc-menu"), focusable: r["a"].bool.def(!0), multiple: r["a"].bool, defaultActiveFirst: r["a"].bool, visible: r["a"].bool.def(!0), activeKey: r["a"].oneOfType([r["a"].string, r["a"].number]), selectedKeys: r["a"].arrayOf(r["a"].oneOfType([r["a"].string, r["a"].number])), defaultSelectedKeys: r["a"].arrayOf(r["a"].oneOfType([r["a"].string, r["a"].number])).def([]), defaultOpenKeys: r["a"].arrayOf(r["a"].oneOfType([r["a"].string, r["a"].number])).def([]), openKeys: r["a"].arrayOf(r["a"].oneOfType([r["a"].string, r["a"].number])), openAnimation: r["a"].oneOfType([r["a"].string, r["a"].object]), mode: r["a"].oneOf(["horizontal", "vertical", "vertical-left", "vertical-right", "inline"]).def("vertical"), triggerSubMenuAction: r["a"].string.def("hover"), subMenuOpenDelay: r["a"].number.def(.1), subMenuCloseDelay: r["a"].number.def(.1), level: r["a"].number.def(1), inlineIndent: r["a"].number.def(24), theme: r["a"].oneOf(["light", "dark"]).def("light"), getPopupContainer: r["a"].func, openTransitionName: r["a"].string, forceSubMenuRender: r["a"].bool, selectable: r["a"].bool, isRootMenu: r["a"].bool.def(!0), builtinPlacements: r["a"].object.def((function () { return {} })), itemIcon: r["a"].any, expandIcon: r["a"].any, overflowedIndicator: r["a"].any } }, 2315: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("857a"), o = n("af03"); r({ target: "String", proto: !0, forced: o("strike") }, { strike: function () { return i(this, "strike", "", "") } }) }, "234d": function (e, t, n) { var r = n("e380"), i = 500; function o(e) { var t = r(e, (function (e) { return n.size === i && n.clear(), e })), n = t.cache; return t } e.exports = o }, 2351: function (e, t, n) { var r = n("746f"); r("split") }, "23cb": function (e, t, n) { var r = n("a691"), i = Math.max, o = Math.min; e.exports = function (e, t) { var n = r(e); return n < 0 ? i(n + t, 0) : o(n, t) } }, "23dc": function (e, t, n) { var r = n("d44e"); r(Math, "Math", !0) }, "23dd": function (e, t, n) { var r = n("6aa8"), i = n("cc15")("iterator"), o = n("8a0d"); e.exports = n("5524").getIteratorMethod = function (e) { if (void 0 != e) return e[i] || e["@@iterator"] || o[r(e)] } }, "23e7": function (e, t, n) { var r = n("da84"), i = n("06cf").f, o = n("9112"), a = n("6eeb"), s = n("ce4e"), c = n("e893"), l = n("94ca"); e.exports = function (e, t) { var n, u, h, f, d, p, v = e.target, m = e.global, g = e.stat; if (u = m ? r : g ? r[v] || s(v, {}) : (r[v] || {}).prototype, u) for (h in t) { if (d = t[h], e.noTargetGet ? (p = i(u, h), f = p && p.value) : f = u[h], n = l(m ? h : v + (g ? "." : "#") + h, e.forced), !n && void 0 !== f) { if (typeof d === typeof f) continue; c(d, f) } (e.sham || f && f.sham) && o(d, "sham", !0), a(u, h, d, e) } } }, "241c": function (e, t, n) { var r = n("ca84"), i = n("7839"), o = i.concat("length", "prototype"); t.f = Object.getOwnPropertyNames || function (e) { return r(e, o) } }, "242e": function (e, t, n) { var r = n("72af"), i = n("ec69"); function o(e, t) { return e && r(e, t, i) } e.exports = o }, "243f": function (e, t, n) { var r = n("48a0"); function i(e, t, n, i) { return r(e, (function (e, r, o) { t(i, e, n(e), o) })), i } e.exports = i }, 2474: function (e, t, n) { var r = n("2b3e"), i = r.Uint8Array; e.exports = i }, 2478: function (e, t, n) { var r = n("4245"); function i(e) { return r(this, e).get(e) } e.exports = i }, 2524: function (e, t, n) { var r = n("6044"), i = "__lodash_hash_undefined__"; function o(e, t) { var n = this.__data__; return this.size += this.has(e) ? 0 : 1, n[e] = r && void 0 === t ? i : t, this } e.exports = o }, "252f": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.line = m; var i = r(n("7037")), o = r(n("278c")), a = r(n("448a")), s = r(n("9523")), c = n("18ad"), l = n("9d85"), u = r(n("050c")), h = n("becb"); function f(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function d(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? f(Object(n), !0).forEach((function (t) { (0, s["default"])(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : f(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } var p = u["default"].polylineToBezierCurve, v = u["default"].getBezierCurveLength; function m(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.xAxis, r = t.yAxis, i = t.series, o = []; n && r && i && (o = (0, h.initNeedSeries)(i, l.lineConfig, "line"), o = g(o, e)), (0, c.doUpdate)({ chart: e, series: o, key: "lineArea", getGraphConfig: _, getStartGraphConfig: S, beforeUpdate: T, beforeChange: A }), (0, c.doUpdate)({ chart: e, series: o, key: "line", getGraphConfig: L, getStartGraphConfig: P, beforeUpdate: T, beforeChange: A }), (0, c.doUpdate)({ chart: e, series: o, key: "linePoint", getGraphConfig: D, getStartGraphConfig: I }), (0, c.doUpdate)({ chart: e, series: o, key: "lineLabel", getGraphConfig: N }) } function g(e, t) { var n = t.axisData; return e.map((function (t) { var r = (0, h.mergeSameStackData)(t, e); r = y(t, r); var i = b(t, n), o = x(r, i), a = w(i); return d(d({}, t), {}, { linePosition: o.filter((function (e) { return e })), lineFillBottomPos: a }) })) } function y(e, t) { var n = e.data; return t.map((function (e, t) { return "number" === typeof n[t] ? e : null })) } function b(e, t) { var n = e.xAxisIndex, r = e.yAxisIndex, i = t.find((function (e) { var t = e.axis, r = e.index; return "x" === t && r === n })), o = t.find((function (e) { var t = e.axis, n = e.index; return "y" === t && n === r })); return [i, o] } function x(e, t) { var n = t.findIndex((function (e) { var t = e.data; return "value" === t })), r = t[n], i = t[1 - n], o = r.linePosition, a = r.axis, s = i.tickPosition, c = s.length, l = "x" === a ? 0 : 1, u = o[0][l], h = o[1][l], f = h - u, d = r.maxValue, p = r.minValue, v = d - p, m = new Array(c).fill(0).map((function (t, n) { var r = e[n]; if ("number" !== typeof r) return null; var i = (r - p) / v; return 0 === v && (i = 0), i * f + u })); return m.map((function (e, t) { if (t >= c || "number" !== typeof e) return null; var n = [e, s[t][1 - l]]; return 0 === l || n.reverse(), n })) } function w(e) { var t = e.find((function (e) { var t = e.data; return "value" === t })), n = t.axis, r = t.linePosition, i = t.minValue, o = t.maxValue, a = "x" === n ? 0 : 1, s = r[0][a]; if (i < 0 && o > 0) { var c = o - i, l = Math.abs(r[0][a] - r[1][a]), u = Math.abs(i) / c * l; "y" === n && (u *= -1), s += u } return { changeIndex: a, changeValue: s } } function _(e) { var t = e.animationCurve, n = e.animationFrame, r = e.lineFillBottomPos, i = e.rLevel; return [{ name: j(e), index: i, animationCurve: t, animationFrame: n, visible: e.lineArea.show, lineFillBottomPos: r, shape: C(e), style: M(e), drawed: k }] } function C(e) { var t = e.linePosition; return { points: t } } function M(e) { var t = e.lineArea, n = e.color, r = t.gradient, i = t.style, o = [i.fill || n], a = (0, h.deepMerge)(o, r); 1 === a.length && a.push(a[0]); var s = O(e); return i = d(d({}, i), {}, { stroke: "rgba(0, 0, 0, 0)" }), (0, h.deepMerge)({ gradientColor: a, gradientParams: s, gradientType: "linear", gradientWith: "fill" }, i) } function O(e) { var t = e.lineFillBottomPos, n = e.linePosition, r = t.changeIndex, i = t.changeValue, o = n.map((function (e) { return e[r] })), s = Math.max.apply(Math, (0, a["default"])(o)), c = Math.min.apply(Math, (0, a["default"])(o)), l = s; return 1 === r && (l = c), 1 === r ? [0, l, 0, i] : [l, 0, i, 0] } function k(e, t) { var n = e.lineFillBottomPos, r = e.shape, i = t.ctx, o = r.points, s = n.changeIndex, c = n.changeValue, l = (0, a["default"])(o[o.length - 1]), u = (0, a["default"])(o[0]); l[s] = c, u[s] = c, i.lineTo.apply(i, (0, a["default"])(l)), i.lineTo.apply(i, (0, a["default"])(u)), i.closePath(), i.fill() } function S(e) { var t = _(e)[0], n = d({}, t.style); return n.opacity = 0, t.style = n, [t] } function T(e, t, n, r) { var i = e[n]; if (i) { var o = j(t), a = r.chart.render, s = i[0].name, c = o !== s; c && (i.forEach((function (e) { return a.delGraph(e) })), e[n] = null) } } function A(e, t) { var n = t.shape.points, r = e.shape.points, i = r.length, o = n.length; if (o > i) { var s = r.slice(-1)[0], c = new Array(o - i).fill(0).map((function (e) { return (0, a["default"])(s) })); r.push.apply(r, (0, a["default"])(c)) } else o < i && r.splice(o) } function L(e) { var t = e.animationCurve, n = e.animationFrame, r = e.rLevel; return [{ name: j(e), index: r + 1, animationCurve: t, animationFrame: n, shape: C(e), style: z(e) }] } function j(e) { var t = e.smooth; return t ? "smoothline" : "polyline" } function z(e) { var t = e.lineStyle, n = e.color, r = e.smooth, i = e.linePosition, o = E(i, r); return (0, h.deepMerge)({ stroke: n, lineDash: [o, 0] }, t) } function E(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; if (!t) return (0, h.getPolylineLength)(e); var n = p(e); return v(n) } function P(e) { var t = e.lineStyle.lineDash, n = L(e)[0], r = n.style.lineDash; return r = t ? [0, 0] : (0, a["default"])(r).reverse(), n.style.lineDash = r, [n] } function D(e) { var t = e.animationCurve, n = e.animationFrame, r = e.rLevel, i = H(e), o = V(e); return i.map((function (i) { return { name: "circle", index: r + 2, visible: e.linePoint.show, animationCurve: t, animationFrame: n, shape: i, style: o } })) } function H(e) { var t = e.linePosition, n = e.linePoint.radius; return t.map((function (e) { var t = (0, o["default"])(e, 2), r = t[0], i = t[1]; return { r: n, rx: r, ry: i } })) } function V(e) { var t = e.color, n = e.linePoint.style; return (0, h.deepMerge)({ stroke: t }, n) } function I(e) { var t = D(e); return t.forEach((function (e) { e.shape.r = .1 })), t } function N(e) { var t = e.animationCurve, n = e.animationFrame, r = e.rLevel, i = R(e), o = W(e); return i.map((function (i, a) { return { name: "text", index: r + 3, visible: e.label.show, animationCurve: t, animationFrame: n, shape: i, style: o } })) } function R(e) { var t = B(e), n = F(e); return t.map((function (e, t) { return { content: e, position: n[t] } })) } function F(e) { var t = e.linePosition, n = e.lineFillBottomPos, r = e.label, i = r.position, o = r.offset, s = n.changeIndex, c = n.changeValue; return t.map((function (e) { if ("bottom" === i && (e = (0, a["default"])(e), e[s] = c), "center" === i) { var t = (0, a["default"])(e); t[s] = c, e = $(e, t) } return Y(e, o) })) } function Y(e, t) { var n = (0, o["default"])(e, 2), r = n[0], i = n[1], a = (0, o["default"])(t, 2), s = a[0], c = a[1]; return [r + s, i + c] } function $(e, t) { var n = (0, o["default"])(e, 2), r = n[0], i = n[1], a = (0, o["default"])(t, 2), s = a[0], c = a[1]; return [(r + s) / 2, (i + c) / 2] } function B(e) { var t = e.data, n = e.label.formatter; if (t = t.filter((function (e) { return "number" === typeof e })).map((function (e) { return e.toString() })), !n) return t; var r = (0, i["default"])(n); return "string" === r ? t.map((function (e) { return n.replace("{value}", e) })) : "function" === r ? t.map((function (e, t) { return n({ value: e, index: t }) })) : t } function W(e) { var t = e.color, n = e.label.style; return (0, h.deepMerge)({ fill: t }, n) } }, 2532: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("5a34"), o = n("1d80"), a = n("577e"), s = n("ab13"); r({ target: "String", proto: !0, forced: !s("includes") }, { includes: function (e) { return !!~a(o(this)).indexOf(a(i(e)), arguments.length > 1 ? arguments[1] : void 0) } }) }, "253c": function (e, t, n) { var r = n("3729"), i = n("1310"), o = "[object Arguments]"; function a(e) { return i(e) && r(e) == o } e.exports = a }, 2593: function (e, t, n) { var r = n("15f3"), i = n("c6cf"), o = i((function (e, t) { return null == e ? {} : r(e, t) })); e.exports = o }, "25a1": function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("d58f").right, o = r.aTypedArray, a = r.exportTypedArrayMethod; a("reduceRight", (function (e) { return i(o(this), e, arguments.length, arguments.length > 1 ? arguments[1] : void 0) })) }, "25eb": function (e, t, n) { var r = n("23e7"), i = n("c20d"); r({ target: "Number", stat: !0, forced: Number.parseInt != i }, { parseInt: i }) }, "25f0": function (e, t, n) { "use strict"; var r = n("6eeb"), i = n("825a"), o = n("577e"), a = n("d039"), s = n("ad6d"), c = "toString", l = RegExp.prototype, u = l[c], h = a((function () { return "/a/b" != u.call({ source: "a", flags: "b" }) })), f = u.name != c; (h || f) && r(RegExp.prototype, c, (function () { var e = i(this), t = o(e.source), n = e.flags, r = o(void 0 === n && e instanceof RegExp && !("flags" in l) ? s.call(e) : n); return "/" + t + "/" + r }), { unsafe: !0 }) }, 2626: function (e, t, n) { "use strict"; var r = n("d066"), i = n("9bf2"), o = n("b622"), a = n("83ab"), s = o("species"); e.exports = function (e) { var t = r(e), n = i.f; a && t && !t[s] && n(t, s, { configurable: !0, get: function () { return this } }) } }, "262e": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return i })); n("131a"); function r(e, t) { return r = Object.setPrototypeOf || function (e, t) { return e.__proto__ = t, e }, r(e, t) } function i(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function"); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, writable: !0, configurable: !0 } }), t && r(e, t) } }, 2638: function (e, t, n) { "use strict"; function r() { return r = Object.assign || function (e) { for (var t, n = 1; n < arguments.length; n++)for (var r in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, r) && (e[r] = t[r]); return e }, r.apply(this, arguments) } var i = ["attrs", "props", "domProps"], o = ["class", "style", "directives"], a = ["on", "nativeOn"], s = function (e) { return e.reduce((function (e, t) { for (var n in t) if (e[n]) if (-1 !== i.indexOf(n)) e[n] = r({}, e[n], t[n]); else if (-1 !== o.indexOf(n)) { var s = e[n] instanceof Array ? e[n] : [e[n]], l = t[n] instanceof Array ? t[n] : [t[n]]; e[n] = s.concat(l) } else if (-1 !== a.indexOf(n)) for (var u in t[n]) if (e[n][u]) { var h = e[n][u] instanceof Array ? e[n][u] : [e[n][u]], f = t[n][u] instanceof Array ? t[n][u] : [t[n][u]]; e[n][u] = h.concat(f) } else e[n][u] = t[n][u]; else if ("hook" == n) for (var d in t[n]) e[n][d] = e[n][d] ? c(e[n][d], t[n][d]) : t[n][d]; else e[n] = t[n]; else e[n] = t[n]; return e }), {}) }, c = function (e, t) { return function () { e && e.apply(this, arguments), t && t.apply(this, arguments) } }; e.exports = s }, "266d": function (e, t, n) { }, 2686: function (e, t, n) { var r = n("3729"), i = n("1310"), o = "[object RegExp]"; function a(e) { return i(e) && r(e) == o } e.exports = a }, "26dd": function (e, t, n) { "use strict"; var r = n("6f4f"), i = n("10db"), o = n("92f0"), a = {}; n("051b")(a, n("cc15")("iterator"), (function () { return this })), e.exports = function (e, t, n) { e.prototype = r(a, { next: i(1, n) }), o(e, t + " Iterator") } }, "26e8": function (e, t) { function n(e, t) { return null != e && t in Object(e) } e.exports = n }, 2768: function (e, t) { function n(e) { return null == e } e.exports = n }, 2769: function (e, t, n) { var r = n("5ca0"), i = n("51f5"), o = r(i); e.exports = o }, "278c": function (e, t, n) { var r = n("c135"), i = n("9b42"), o = n("6613"), a = n("c240"); function s(e, t) { return r(e) || i(e, t) || o(e, t) || a() } e.exports = s, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, "27ab": function (e, t, n) { "use strict"; n.d(t, "b", (function () { return j })); var r = n("6042"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("0464"), c = n("c1df"), l = n.n(c), u = n("4d26"), h = n.n(u), f = n("4d91"), d = n("b488"), p = n("daa3"), v = n("7b05"), m = n("8496"), g = n("9a16"), y = { adjustX: 1, adjustY: 1 }, b = [0, 0], x = { bottomLeft: { points: ["tl", "tl"], overflow: y, offset: [0, -3], targetOffset: b }, bottomRight: { points: ["tr", "tr"], overflow: y, offset: [0, -3], targetOffset: b }, topRight: { points: ["br", "br"], overflow: y, offset: [0, 3], targetOffset: b }, topLeft: { points: ["bl", "bl"], overflow: y, offset: [0, 3], targetOffset: b } }, w = x; function _() { } var C = { name: "VcTimePicker", mixins: [d["a"]], props: Object(p["t"])({ prefixCls: f["a"].string, clearText: f["a"].string, value: f["a"].any, defaultOpenValue: { type: Object, default: function () { return l()() } }, inputReadOnly: f["a"].bool, disabled: f["a"].bool, allowEmpty: f["a"].bool, defaultValue: f["a"].any, open: f["a"].bool, defaultOpen: f["a"].bool, align: f["a"].object, placement: f["a"].any, transitionName: f["a"].string, getPopupContainer: f["a"].func, placeholder: f["a"].string, format: f["a"].string, showHour: f["a"].bool, showMinute: f["a"].bool, showSecond: f["a"].bool, popupClassName: f["a"].string, popupStyle: f["a"].object, disabledHours: f["a"].func, disabledMinutes: f["a"].func, disabledSeconds: f["a"].func, hideDisabledOptions: f["a"].bool, name: f["a"].string, autoComplete: f["a"].string, use12Hours: f["a"].bool, hourStep: f["a"].number, minuteStep: f["a"].number, secondStep: f["a"].number, focusOnOpen: f["a"].bool, autoFocus: f["a"].bool, id: f["a"].string, inputIcon: f["a"].any, clearIcon: f["a"].any, addon: f["a"].func }, { clearText: "clear", prefixCls: "rc-time-picker", defaultOpen: !1, inputReadOnly: !1, popupClassName: "", popupStyle: {}, align: {}, allowEmpty: !0, showHour: !0, showMinute: !0, showSecond: !0, disabledHours: _, disabledMinutes: _, disabledSeconds: _, hideDisabledOptions: !1, placement: "bottomLeft", use12Hours: !1, focusOnOpen: !1 }), data: function () { var e = this.defaultOpen, t = this.defaultValue, n = this.open, r = void 0 === n ? e : n, i = this.value, o = void 0 === i ? t : i; return { sOpen: r, sValue: o } }, watch: { value: function (e) { this.setState({ sValue: e }) }, open: function (e) { void 0 !== e && this.setState({ sOpen: e }) } }, mounted: function () { var e = this; this.$nextTick((function () { e.autoFocus && e.focus() })) }, methods: { onPanelChange: function (e) { this.setValue(e) }, onAmPmChange: function (e) { this.__emit("amPmChange", e) }, onClear: function (e) { e.stopPropagation(), this.setValue(null), this.setOpen(!1) }, onVisibleChange: function (e) { this.setOpen(e) }, onEsc: function () { this.setOpen(!1), this.focus() }, onKeyDown: function (e) { 40 === e.keyCode && this.setOpen(!0) }, onKeyDown2: function (e) { this.__emit("keydown", e) }, setValue: function (e) { Object(p["s"])(this, "value") || this.setState({ sValue: e }), this.__emit("change", e) }, getFormat: function () { var e = this.format, t = this.showHour, n = this.showMinute, r = this.showSecond, i = this.use12Hours; if (e) return e; if (i) { var o = [t ? "h" : "", n ? "mm" : "", r ? "ss" : ""].filter((function (e) { return !!e })).join(":"); return o.concat(" a") } return [t ? "HH" : "", n ? "mm" : "", r ? "ss" : ""].filter((function (e) { return !!e })).join(":") }, getPanelElement: function () { var e = this.$createElement, t = this.prefixCls, n = this.placeholder, r = this.disabledHours, i = this.addon, o = this.disabledMinutes, a = this.disabledSeconds, s = this.hideDisabledOptions, c = this.inputReadOnly, l = this.showHour, u = this.showMinute, h = this.showSecond, f = this.defaultOpenValue, d = this.clearText, v = this.use12Hours, m = this.focusOnOpen, y = this.onKeyDown2, b = this.hourStep, x = this.minuteStep, w = this.secondStep, _ = this.sValue, C = Object(p["g"])(this, "clearIcon"); return e(g["a"], { attrs: { clearText: d, prefixCls: t + "-panel", value: _, inputReadOnly: c, defaultOpenValue: f, showHour: l, showMinute: u, showSecond: h, format: this.getFormat(), placeholder: n, disabledHours: r, disabledMinutes: o, disabledSeconds: a, hideDisabledOptions: s, use12Hours: v, hourStep: b, minuteStep: x, secondStep: w, focusOnOpen: m, clearIcon: C, addon: i }, ref: "panel", on: { change: this.onPanelChange, amPmChange: this.onAmPmChange, esc: this.onEsc, keydown: y } }) }, getPopupClassName: function () { var e = this.showHour, t = this.showMinute, n = this.showSecond, r = this.use12Hours, o = this.prefixCls, a = this.popupClassName, s = 0; return e && (s += 1), t && (s += 1), n && (s += 1), r && (s += 1), h()(a, i()({}, o + "-panel-narrow", (!e || !t || !n) && !r), o + "-panel-column-" + s) }, setOpen: function (e) { this.sOpen !== e && (Object(p["s"])(this, "open") || this.setState({ sOpen: e }), e ? this.__emit("open", { open: e }) : this.__emit("close", { open: e })) }, focus: function () { this.$refs.picker.focus() }, blur: function () { this.$refs.picker.blur() }, onFocus: function (e) { this.__emit("focus", e) }, onBlur: function (e) { this.__emit("blur", e) }, renderClearButton: function () { var e = this, t = this.$createElement, n = this.sValue, r = this.$props, i = r.prefixCls, o = r.allowEmpty, a = r.clearText, s = r.disabled; if (!o || !n || s) return null; var c = Object(p["g"])(this, "clearIcon"); if (Object(p["w"])(c)) { var l = Object(p["i"])(c) || {}, u = l.click; return Object(v["a"])(c, { on: { click: function () { u && u.apply(void 0, arguments), e.onClear.apply(e, arguments) } } }) } return t("a", { attrs: { role: "button", title: a, tabIndex: 0 }, class: i + "-clear", on: { click: this.onClear } }, [c || t("i", { class: i + "-clear-icon" })]) } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.placeholder, r = this.placement, i = this.align, o = this.id, a = this.disabled, s = this.transitionName, c = this.getPopupContainer, l = this.name, u = this.autoComplete, h = this.autoFocus, f = this.inputReadOnly, d = this.sOpen, v = this.sValue, g = this.onFocus, y = this.onBlur, b = this.popupStyle, x = this.getPopupClassName(), _ = Object(p["g"])(this, "inputIcon"); return e(m["a"], { attrs: { prefixCls: t + "-panel", popupClassName: x, popupStyle: b, popupAlign: i, builtinPlacements: w, popupPlacement: r, action: a ? [] : ["click"], destroyPopupOnHide: !0, getPopupContainer: c, popupTransitionName: s, popupVisible: d }, on: { popupVisibleChange: this.onVisibleChange } }, [e("template", { slot: "popup" }, [this.getPanelElement()]), e("span", { class: "" + t }, [e("input", { class: t + "-input", ref: "picker", attrs: { type: "text", placeholder: n, name: l, disabled: a, autoComplete: u, autoFocus: h, readOnly: !!f, id: o }, on: { keydown: this.onKeyDown, focus: g, blur: y }, domProps: { value: v && v.format(this.getFormat()) || "" } }), _ || e("span", { class: t + "-icon" }), this.renderClearButton()])]) } }, M = n("e5cd"), O = n("6a21"), k = n("0c63"), S = n("01c2"), T = n("9cba"), A = n("db14"), L = n("1501"); function j(e) { return { showHour: e.indexOf("H") > -1 || e.indexOf("h") > -1 || e.indexOf("k") > -1, showMinute: e.indexOf("m") > -1, showSecond: e.indexOf("s") > -1 } } var z = function () { return { size: f["a"].oneOf(["large", "default", "small"]), value: L["a"], defaultValue: L["a"], open: f["a"].bool, format: f["a"].string, disabled: f["a"].bool, placeholder: f["a"].string, prefixCls: f["a"].string, hideDisabledOptions: f["a"].bool, disabledHours: f["a"].func, disabledMinutes: f["a"].func, disabledSeconds: f["a"].func, getPopupContainer: f["a"].func, use12Hours: f["a"].bool, focusOnOpen: f["a"].bool, hourStep: f["a"].number, minuteStep: f["a"].number, secondStep: f["a"].number, allowEmpty: f["a"].bool, allowClear: f["a"].bool, inputReadOnly: f["a"].bool, clearText: f["a"].string, defaultOpenValue: f["a"].object, popupClassName: f["a"].string, popupStyle: f["a"].object, suffixIcon: f["a"].any, align: f["a"].object, placement: f["a"].any, transitionName: f["a"].string, autoFocus: f["a"].bool, addon: f["a"].any, clearIcon: f["a"].any, locale: f["a"].object, valueFormat: f["a"].string } }, E = { name: "ATimePicker", mixins: [d["a"]], props: Object(p["t"])(z(), { align: { offset: [0, -2] }, disabled: !1, disabledHours: void 0, disabledMinutes: void 0, disabledSeconds: void 0, hideDisabledOptions: !1, placement: "bottomLeft", transitionName: "slide-up", focusOnOpen: !0, allowClear: !0 }), model: { prop: "value", event: "change" }, provide: function () { return { savePopupRef: this.savePopupRef } }, inject: { configProvider: { default: function () { return T["a"] } } }, data: function () { var e = this.value, t = this.defaultValue, n = this.valueFormat; return Object(L["d"])("TimePicker", t, "defaultValue", n), Object(L["d"])("TimePicker", e, "value", n), Object(O["a"])(!Object(p["s"])(this, "allowEmpty"), "TimePicker", "`allowEmpty` is deprecated. Please use `allowClear` instead."), { sValue: Object(L["f"])(e || t, n) } }, watch: { value: function (e) { Object(L["d"])("TimePicker", e, "value", this.valueFormat), this.setState({ sValue: Object(L["f"])(e, this.valueFormat) }) } }, methods: { getDefaultFormat: function () { var e = this.format, t = this.use12Hours; return e || (t ? "h:mm:ss a" : "HH:mm:ss") }, getAllowClear: function () { var e = this.$props, t = e.allowClear, n = e.allowEmpty; return Object(p["s"])(this, "allowClear") ? t : n }, getDefaultLocale: function () { var e = a()({}, S["a"], this.$props.locale); return e }, savePopupRef: function (e) { this.popupRef = e }, handleChange: function (e) { Object(p["s"])(this, "value") || this.setState({ sValue: e }); var t = this.format, n = void 0 === t ? "HH:mm:ss" : t; this.$emit("change", this.valueFormat ? Object(L["e"])(e, this.valueFormat) : e, e && e.format(n) || "") }, handleOpenClose: function (e) { var t = e.open; this.$emit("openChange", t), this.$emit("update:open", t) }, focus: function () { this.$refs.timePicker.focus() }, blur: function () { this.$refs.timePicker.blur() }, renderInputIcon: function (e) { var t = this.$createElement, n = Object(p["g"])(this, "suffixIcon"); n = Array.isArray(n) ? n[0] : n; var r = n && Object(p["w"])(n) && Object(v["a"])(n, { class: e + "-clock-icon" }) || t(k["a"], { attrs: { type: "clock-circle" }, class: e + "-clock-icon" }); return t("span", { class: e + "-icon" }, [r]) }, renderClearIcon: function (e) { var t = this.$createElement, n = Object(p["g"])(this, "clearIcon"), r = e + "-clear"; return n && Object(p["w"])(n) ? Object(v["a"])(n, { class: r }) : t(k["a"], { attrs: { type: "close-circle", theme: "filled" }, class: r }) }, renderTimePicker: function (e) { var t = this.$createElement, n = Object(p["l"])(this); n = Object(s["a"])(n, ["defaultValue", "suffixIcon", "allowEmpty", "allowClear"]); var r = n, o = r.prefixCls, c = r.getPopupContainer, l = r.placeholder, u = r.size, h = this.configProvider.getPrefixCls, f = h("time-picker", o), d = this.getDefaultFormat(), v = i()({}, f + "-" + u, !!u), m = Object(p["g"])(this, "addon", {}, !1), g = function (e) { return m ? t("div", { class: f + "-panel-addon" }, ["function" === typeof m ? m(e) : m]) : null }, y = this.renderInputIcon(f), b = this.renderClearIcon(f), x = this.configProvider.getPopupContainer, w = { props: a()({}, j(d), n, { allowEmpty: this.getAllowClear(), prefixCls: f, getPopupContainer: c || x, format: d, value: this.sValue, placeholder: void 0 === l ? e.placeholder : l, addon: g, inputIcon: y, clearIcon: b }), class: v, ref: "timePicker", on: a()({}, Object(p["k"])(this), { change: this.handleChange, open: this.handleOpenClose, close: this.handleOpenClose }) }; return t(C, w) } }, render: function () { var e = arguments[0]; return e(M["a"], { attrs: { componentName: "TimePicker", defaultLocale: this.getDefaultLocale() }, scopedSlots: { default: this.renderTimePicker } }) }, install: function (e) { e.use(A["a"]), e.component(E.name, E) } }; t["a"] = E }, "27fd": function (e, t, n) { "use strict"; var r = n("92fa"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("6042"), c = n.n(s), l = n("9cba"), u = n("0c63"), h = n("daa3"), f = n("4d91"), d = { name: "AAvatar", props: { prefixCls: { type: String, default: void 0 }, shape: { validator: function (e) { return ["circle", "square"].includes(e) }, default: "circle" }, size: { validator: function (e) { return "number" === typeof e || ["small", "large", "default"].includes(e) }, default: "default" }, src: String, srcSet: String, icon: f["a"].any, alt: String, loadError: Function }, inject: { configProvider: { default: function () { return l["a"] } } }, data: function () { return { isImgExist: !0, isMounted: !1, scale: 1 } }, watch: { src: function () { var e = this; this.$nextTick((function () { e.isImgExist = !0, e.scale = 1, e.$forceUpdate() })) } }, mounted: function () { var e = this; this.$nextTick((function () { e.setScale(), e.isMounted = !0 })) }, updated: function () { var e = this; this.$nextTick((function () { e.setScale() })) }, methods: { setScale: function () { if (this.$refs.avatarChildren && this.$refs.avatarNode) { var e = this.$refs.avatarChildren.offsetWidth, t = this.$refs.avatarNode.offsetWidth; 0 === e || 0 === t || this.lastChildrenWidth === e && this.lastNodeWidth === t || (this.lastChildrenWidth = e, this.lastNodeWidth = t, this.scale = t - 8 < e ? (t - 8) / e : 1) } }, handleImgLoadError: function () { var e = this.$props.loadError, t = e ? e() : void 0; !1 !== t && (this.isImgExist = !1) } }, render: function () { var e, t, n = arguments[0], r = this.$props, o = r.prefixCls, s = r.shape, l = r.size, f = r.src, d = r.alt, p = r.srcSet, v = Object(h["g"])(this, "icon"), m = this.configProvider.getPrefixCls, g = m("avatar", o), y = this.$data, b = y.isImgExist, x = y.scale, w = y.isMounted, _ = (e = {}, c()(e, g + "-lg", "large" === l), c()(e, g + "-sm", "small" === l), e), C = a()(c()({}, g, !0), _, (t = {}, c()(t, g + "-" + s, s), c()(t, g + "-image", f && b), c()(t, g + "-icon", v), t)), M = "number" === typeof l ? { width: l + "px", height: l + "px", lineHeight: l + "px", fontSize: v ? l / 2 + "px" : "18px" } : {}, O = this.$slots["default"]; if (f && b) O = n("img", { attrs: { src: f, srcSet: p, alt: d }, on: { error: this.handleImgLoadError } }); else if (v) O = "string" === typeof v ? n(u["a"], { attrs: { type: v } }) : v; else { var k = this.$refs.avatarChildren; if (k || 1 !== x) { var S = "scale(" + x + ") translateX(-50%)", T = { msTransform: S, WebkitTransform: S, transform: S }, A = "number" === typeof l ? { lineHeight: l + "px" } : {}; O = n("span", { class: g + "-string", ref: "avatarChildren", style: a()({}, A, T) }, [O]) } else { var L = {}; w || (L.opacity = 0), O = n("span", { class: g + "-string", ref: "avatarChildren", style: { opacity: 0 } }, [O]) } } return n("span", i()([{ ref: "avatarNode" }, { on: Object(h["k"])(this), class: C, style: M }]), [O]) } }, p = n("db14"); d.install = function (e) { e.use(p["a"]), e.component(d.name, d) }; t["a"] = d }, 2848: function (e, t, n) { }, 2877: function (e, t, n) { "use strict"; function r(e, t, n, r, i, o, a, s) { var c, l = "function" === typeof e ? e.options : e; if (t && (l.render = t, l.staticRenderFns = n, l._compiled = !0), r && (l.functional = !0), o && (l._scopeId = "data-v-" + o), a ? (c = function (e) { e = e || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext, e || "undefined" === typeof __VUE_SSR_CONTEXT__ || (e = __VUE_SSR_CONTEXT__), i && i.call(this, e), e && e._registeredComponents && e._registeredComponents.add(a) }, l._ssrRegister = c) : i && (c = s ? function () { i.call(this, (l.functional ? this.parent : this).$root.$options.shadowRoot) } : i), c) if (l.functional) { l._injectStyles = c; var u = l.render; l.render = function (e, t) { return c.call(t), u(e, t) } } else { var h = l.beforeCreate; l.beforeCreate = h ? [].concat(h, c) : [c] } return { exports: e, options: l } } n.d(t, "a", (function () { return r })) }, "288f": function (e, t, n) { "use strict"; n("b2a3"), n("2c6a"), n("d13f"), n("de6a"), n("0032") }, "28c9": function (e, t) { function n() { this.__data__ = [], this.size = 0 } e.exports = n }, 2909: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return c })); var r = n("6b75"); function i(e) { if (Array.isArray(e)) return Object(r["a"])(e) } n("a4d3"), n("e01a"), n("d3b7"), n("d28b"), n("3ca3"), n("ddb0"), n("a630"); function o(e) { if ("undefined" !== typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"]) return Array.from(e) } var a = n("06c5"); function s() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") } function c(e) { return i(e) || o(e) || Object(a["a"])(e) || s() } }, "290c": function (e, t, n) { "use strict"; var r = n("6042"), i = n.n(r), o = n("1098"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("4d91"), u = n("b488"), h = n("9cba"), f = n("ae55"), d = { gutter: l["a"].oneOfType([l["a"].object, l["a"].number, l["a"].array]), type: l["a"].oneOf(["flex"]), align: l["a"].oneOf(["top", "middle", "bottom", "stretch"]), justify: l["a"].oneOf(["start", "end", "center", "space-around", "space-between"]), prefixCls: l["a"].string }, p = ["xxl", "xl", "lg", "md", "sm", "xs"]; t["a"] = { name: "ARow", mixins: [u["a"]], props: c()({}, d, { gutter: l["a"].oneOfType([l["a"].object, l["a"].number, l["a"].array]).def(0) }), provide: function () { return { rowContext: this } }, inject: { configProvider: { default: function () { return h["a"] } } }, data: function () { return { screens: {} } }, mounted: function () { var e = this; this.$nextTick((function () { e.token = f["a"].subscribe((function (t) { var n = e.gutter; ("object" === ("undefined" === typeof n ? "undefined" : a()(n)) || Array.isArray(n) && ("object" === a()(n[0]) || "object" === a()(n[1]))) && (e.screens = t) })) })) }, beforeDestroy: function () { f["a"].unsubscribe(this.token) }, methods: { getGutter: function () { var e = [0, 0], t = this.gutter, n = this.screens, r = Array.isArray(t) ? t : [t, 0]; return r.forEach((function (t, r) { if ("object" === ("undefined" === typeof t ? "undefined" : a()(t))) for (var i = 0; i < p.length; i++) { var o = p[i]; if (n[o] && void 0 !== t[o]) { e[r] = t[o]; break } } else e[r] = t || 0 })), e } }, render: function () { var e, t = arguments[0], n = this.type, r = this.justify, o = this.align, a = this.prefixCls, s = this.$slots, l = this.configProvider.getPrefixCls, u = l("row", a), h = this.getGutter(), f = (e = {}, i()(e, u, !n), i()(e, u + "-" + n, n), i()(e, u + "-" + n + "-" + r, n && r), i()(e, u + "-" + n + "-" + o, n && o), e), d = c()({}, h[0] > 0 ? { marginLeft: h[0] / -2 + "px", marginRight: h[0] / -2 + "px" } : {}, h[1] > 0 ? { marginTop: h[1] / -2 + "px", marginBottom: h[1] / -2 + "px" } : {}); return t("div", { class: f, style: d }, [s["default"]]) } } }, 2954: function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("b6b7"), o = n("d039"), a = r.aTypedArray, s = r.exportTypedArrayMethod, c = [].slice, l = o((function () { new Int8Array(1).slice() })); s("slice", (function (e, t) { var n = c.call(a(this), e, t), r = i(this), o = 0, s = n.length, l = new r(s); while (s > o) l[o] = n[o++]; return l }), l) }, "29f3": function (e, t) { var n = Object.prototype, r = n.toString; function i(e) { return r.call(e) } e.exports = i }, "2a1b": function (e, t, n) { var r = n("746f"); r("match") }, "2a26": function (e, t, n) { "use strict"; n("b2a3"), n("5136"), n("6ba6") }, "2a62": function (e, t, n) { var r = n("825a"); e.exports = function (e) { var t = e["return"]; if (void 0 !== t) return r(t.call(e)).value } }, "2a95": function (e, t, n) { "use strict"; (function (e) { function n() { return n = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }, n.apply(this, arguments) } function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, o(e, t) } function i(e) { return i = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, i(e) } function o(e, t) { return o = Object.setPrototypeOf || function (e, t) { return e.__proto__ = t, e }, o(e, t) } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e, t, n) { return s = a() ? Reflect.construct : function (e, t, n) { var r = [null]; r.push.apply(r, t); var i = Function.bind.apply(e, r), a = new i; return n && o(a, n.prototype), a }, s.apply(null, arguments) } function c(e) { return -1 !== Function.toString.call(e).indexOf("[native code]") } function l(e) { var t = "function" === typeof Map ? new Map : void 0; return l = function (e) { if (null === e || !c(e)) return e; if ("function" !== typeof e) throw new TypeError("Super expression must either be null or a function"); if ("undefined" !== typeof t) { if (t.has(e)) return t.get(e); t.set(e, n) } function n() { return s(e, arguments, i(this).constructor) } return n.prototype = Object.create(e.prototype, { constructor: { value: n, enumerable: !1, writable: !0, configurable: !0 } }), o(n, e) }, l(e) } var u = /%[sdj%]/g, h = function () { }; function f(e) { if (!e || !e.length) return null; var t = {}; return e.forEach((function (e) { var n = e.field; t[n] = t[n] || [], t[n].push(e) })), t } function d() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; var r = 1, i = t[0], o = t.length; if ("function" === typeof i) return i.apply(null, t.slice(1)); if ("string" === typeof i) { var a = String(i).replace(u, (function (e) { if ("%%" === e) return "%"; if (r >= o) return e; switch (e) { case "%s": return String(t[r++]); case "%d": return Number(t[r++]); case "%j": try { return JSON.stringify(t[r++]) } catch (n) { return "[Circular]" } break; default: return e } })); return a } return i } function p(e) { return "string" === e || "url" === e || "hex" === e || "email" === e || "date" === e || "pattern" === e } function v(e, t) { return void 0 === e || null === e || (!("array" !== t || !Array.isArray(e) || e.length) || !(!p(t) || "string" !== typeof e || e)) } function m(e, t, n) { var r = [], i = 0, o = e.length; function a(e) { r.push.apply(r, e), i++, i === o && n(r) } e.forEach((function (e) { t(e, a) })) } function g(e, t, n) { var r = 0, i = e.length; function o(a) { if (a && a.length) n(a); else { var s = r; r += 1, s < i ? t(e[s], o) : n([]) } } o([]) } function y(e) { var t = []; return Object.keys(e).forEach((function (n) { t.push.apply(t, e[n]) })), t } "undefined" !== typeof e && Object({ NODE_ENV: "production", VUE_APP_API_BASE_URL: "http://localhost:5566", VUE_APP_PREVIEW: "true", BASE_URL: "/" }); var b = function (e) { function t(t, n) { var r; return r = e.call(this, "Async Validation Error") || this, r.errors = t, r.fields = n, r } return r(t, e), t }(l(Error)); function x(e, t, n, r) { if (t.first) { var i = new Promise((function (t, i) { var o = function (e) { return r(e), e.length ? i(new b(e, f(e))) : t() }, a = y(e); g(a, n, o) })); return i["catch"]((function (e) { return e })), i } var o = t.firstFields || []; !0 === o && (o = Object.keys(e)); var a = Object.keys(e), s = a.length, c = 0, l = [], u = new Promise((function (t, i) { var u = function (e) { if (l.push.apply(l, e), c++, c === s) return r(l), l.length ? i(new b(l, f(l))) : t() }; a.length || (r(l), t()), a.forEach((function (t) { var r = e[t]; -1 !== o.indexOf(t) ? g(r, n, u) : m(r, n, u) })) })); return u["catch"]((function (e) { return e })), u } function w(e) { return function (t) { return t && t.message ? (t.field = t.field || e.fullField, t) : { message: "function" === typeof t ? t() : t, field: t.field || e.fullField } } } function _(e, t) { if (t) for (var r in t) if (t.hasOwnProperty(r)) { var i = t[r]; "object" === typeof i && "object" === typeof e[r] ? e[r] = n({}, e[r], i) : e[r] = i } return e } function C(e, t, n, r, i, o) { !e.required || n.hasOwnProperty(e.field) && !v(t, o || e.type) || r.push(d(i.messages.required, e.fullField)) } function M(e, t, n, r, i) { (/^\s+$/.test(t) || "" === t) && r.push(d(i.messages.whitespace, e.fullField)) } var O = { email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, url: new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$", "i"), hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i }, k = { integer: function (e) { return k.number(e) && parseInt(e, 10) === e }, float: function (e) { return k.number(e) && !k.integer(e) }, array: function (e) { return Array.isArray(e) }, regexp: function (e) { if (e instanceof RegExp) return !0; try { return !!new RegExp(e) } catch (t) { return !1 } }, date: function (e) { return "function" === typeof e.getTime && "function" === typeof e.getMonth && "function" === typeof e.getYear && !isNaN(e.getTime()) }, number: function (e) { return !isNaN(e) && "number" === typeof e }, object: function (e) { return "object" === typeof e && !k.array(e) }, method: function (e) { return "function" === typeof e }, email: function (e) { return "string" === typeof e && !!e.match(O.email) && e.length < 255 }, url: function (e) { return "string" === typeof e && !!e.match(O.url) }, hex: function (e) { return "string" === typeof e && !!e.match(O.hex) } }; function S(e, t, n, r, i) { if (e.required && void 0 === t) C(e, t, n, r, i); else { var o = ["integer", "float", "array", "regexp", "object", "method", "email", "number", "date", "url", "hex"], a = e.type; o.indexOf(a) > -1 ? k[a](t) || r.push(d(i.messages.types[a], e.fullField, e.type)) : a && typeof t !== e.type && r.push(d(i.messages.types[a], e.fullField, e.type)) } } function T(e, t, n, r, i) { var o = "number" === typeof e.len, a = "number" === typeof e.min, s = "number" === typeof e.max, c = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g, l = t, u = null, h = "number" === typeof t, f = "string" === typeof t, p = Array.isArray(t); if (h ? u = "number" : f ? u = "string" : p && (u = "array"), !u) return !1; p && (l = t.length), f && (l = t.replace(c, "_").length), o ? l !== e.len && r.push(d(i.messages[u].len, e.fullField, e.len)) : a && !s && l < e.min ? r.push(d(i.messages[u].min, e.fullField, e.min)) : s && !a && l > e.max ? r.push(d(i.messages[u].max, e.fullField, e.max)) : a && s && (l < e.min || l > e.max) && r.push(d(i.messages[u].range, e.fullField, e.min, e.max)) } var A = "enum"; function L(e, t, n, r, i) { e[A] = Array.isArray(e[A]) ? e[A] : [], -1 === e[A].indexOf(t) && r.push(d(i.messages[A], e.fullField, e[A].join(", "))) } function j(e, t, n, r, i) { if (e.pattern) if (e.pattern instanceof RegExp) e.pattern.lastIndex = 0, e.pattern.test(t) || r.push(d(i.messages.pattern.mismatch, e.fullField, t, e.pattern)); else if ("string" === typeof e.pattern) { var o = new RegExp(e.pattern); o.test(t) || r.push(d(i.messages.pattern.mismatch, e.fullField, t, e.pattern)) } } var z = { required: C, whitespace: M, type: S, range: T, enum: L, pattern: j }; function E(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t, "string") && !e.required) return n(); z.required(e, t, r, o, i, "string"), v(t, "string") || (z.type(e, t, r, o, i), z.range(e, t, r, o, i), z.pattern(e, t, r, o, i), !0 === e.whitespace && z.whitespace(e, t, r, o, i)) } n(o) } function P(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i), void 0 !== t && z.type(e, t, r, o, i) } n(o) } function D(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if ("" === t && (t = void 0), v(t) && !e.required) return n(); z.required(e, t, r, o, i), void 0 !== t && (z.type(e, t, r, o, i), z.range(e, t, r, o, i)) } n(o) } function H(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i), void 0 !== t && z.type(e, t, r, o, i) } n(o) } function V(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i), v(t) || z.type(e, t, r, o, i) } n(o) } function I(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i), void 0 !== t && (z.type(e, t, r, o, i), z.range(e, t, r, o, i)) } n(o) } function N(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i), void 0 !== t && (z.type(e, t, r, o, i), z.range(e, t, r, o, i)) } n(o) } function R(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if ((void 0 === t || null === t) && !e.required) return n(); z.required(e, t, r, o, i, "array"), void 0 !== t && null !== t && (z.type(e, t, r, o, i), z.range(e, t, r, o, i)) } n(o) } function F(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i), void 0 !== t && z.type(e, t, r, o, i) } n(o) } var Y = "enum"; function $(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i), void 0 !== t && z[Y](e, t, r, o, i) } n(o) } function B(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t, "string") && !e.required) return n(); z.required(e, t, r, o, i), v(t, "string") || z.pattern(e, t, r, o, i) } n(o) } function W(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t, "date") && !e.required) return n(); var s; if (z.required(e, t, r, o, i), !v(t, "date")) s = t instanceof Date ? t : new Date(t), z.type(e, s, r, o, i), s && z.range(e, s.getTime(), r, o, i) } n(o) } function q(e, t, n, r, i) { var o = [], a = Array.isArray(t) ? "array" : typeof t; z.required(e, t, r, o, i, a), n(o) } function U(e, t, n, r, i) { var o = e.type, a = [], s = e.required || !e.required && r.hasOwnProperty(e.field); if (s) { if (v(t, o) && !e.required) return n(); z.required(e, t, r, a, i, o), v(t, o) || z.type(e, t, r, a, i) } n(a) } function K(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i) } n(o) } var G = { string: E, method: P, number: D, boolean: H, regexp: V, integer: I, float: N, array: R, object: F, enum: $, pattern: B, date: W, url: U, hex: U, email: U, required: q, any: K }; function X() { return { default: "Validation error on field %s", required: "%s is required", enum: "%s must be one of %s", whitespace: "%s cannot be empty", date: { format: "%s date %s is invalid for format %s", parse: "%s date could not be parsed, %s is invalid ", invalid: "%s date %s is invalid" }, types: { string: "%s is not a %s", method: "%s is not a %s (function)", array: "%s is not an %s", object: "%s is not an %s", number: "%s is not a %s", date: "%s is not a %s", boolean: "%s is not a %s", integer: "%s is not an %s", float: "%s is not a %s", regexp: "%s is not a valid %s", email: "%s is not a valid %s", url: "%s is not a valid %s", hex: "%s is not a valid %s" }, string: { len: "%s must be exactly %s characters", min: "%s must be at least %s characters", max: "%s cannot be longer than %s characters", range: "%s must be between %s and %s characters" }, number: { len: "%s must equal %s", min: "%s cannot be less than %s", max: "%s cannot be greater than %s", range: "%s must be between %s and %s" }, array: { len: "%s must be exactly %s in length", min: "%s cannot be less than %s in length", max: "%s cannot be greater than %s in length", range: "%s must be between %s and %s in length" }, pattern: { mismatch: "%s value %s does not match pattern %s" }, clone: function () { var e = JSON.parse(JSON.stringify(this)); return e.clone = this.clone, e } } } var J = X(); function Q(e) { this.rules = null, this._messages = J, this.define(e) } Q.prototype = { messages: function (e) { return e && (this._messages = _(X(), e)), this._messages }, define: function (e) { if (!e) throw new Error("Cannot configure a schema with no rules"); if ("object" !== typeof e || Array.isArray(e)) throw new Error("Rules must be an object"); var t, n; for (t in this.rules = {}, e) e.hasOwnProperty(t) && (n = e[t], this.rules[t] = Array.isArray(n) ? n : [n]) }, validate: function (e, t, r) { var i = this; void 0 === t && (t = {}), void 0 === r && (r = function () { }); var o, a, s = e, c = t, l = r; if ("function" === typeof c && (l = c, c = {}), !this.rules || 0 === Object.keys(this.rules).length) return l && l(), Promise.resolve(); function u(e) { var t, n = [], r = {}; function i(e) { var t; Array.isArray(e) ? n = (t = n).concat.apply(t, e) : n.push(e) } for (t = 0; t < e.length; t++)i(e[t]); n.length ? r = f(n) : (n = null, r = null), l(n, r) } if (c.messages) { var h = this.messages(); h === J && (h = X()), _(h, c.messages), c.messages = h } else c.messages = this.messages(); var p = {}, v = c.keys || Object.keys(this.rules); v.forEach((function (t) { o = i.rules[t], a = s[t], o.forEach((function (r) { var o = r; "function" === typeof o.transform && (s === e && (s = n({}, s)), a = s[t] = o.transform(a)), o = "function" === typeof o ? { validator: o } : n({}, o), o.validator = i.getValidationMethod(o), o.field = t, o.fullField = o.fullField || t, o.type = i.getType(o), o.validator && (p[t] = p[t] || [], p[t].push({ rule: o, value: a, source: s, field: t })) })) })); var m = {}; return x(p, c, (function (e, t) { var r, i = e.rule, o = ("object" === i.type || "array" === i.type) && ("object" === typeof i.fields || "object" === typeof i.defaultField); function a(e, t) { return n({}, t, { fullField: i.fullField + "." + e }) } function s(r) { void 0 === r && (r = []); var s = r; if (Array.isArray(s) || (s = [s]), !c.suppressWarning && s.length && Q.warning("async-validator:", s), s.length && void 0 !== i.message && (s = [].concat(i.message)), s = s.map(w(i)), c.first && s.length) return m[i.field] = 1, t(s); if (o) { if (i.required && !e.value) return void 0 !== i.message ? s = [].concat(i.message).map(w(i)) : c.error && (s = [c.error(i, d(c.messages.required, i.field))]), t(s); var l = {}; if (i.defaultField) for (var u in e.value) e.value.hasOwnProperty(u) && (l[u] = i.defaultField); for (var h in l = n({}, l, e.rule.fields), l) if (l.hasOwnProperty(h)) { var f = Array.isArray(l[h]) ? l[h] : [l[h]]; l[h] = f.map(a.bind(null, h)) } var p = new Q(l); p.messages(c.messages), e.rule.options && (e.rule.options.messages = c.messages, e.rule.options.error = c.error), p.validate(e.value, e.rule.options || c, (function (e) { var n = []; s && s.length && n.push.apply(n, s), e && e.length && n.push.apply(n, e), t(n.length ? n : null) })) } else t(s) } o = o && (i.required || !i.required && e.value), i.field = e.field, i.asyncValidator ? r = i.asyncValidator(i, e.value, s, e.source, c) : i.validator && (r = i.validator(i, e.value, s, e.source, c), !0 === r ? s() : !1 === r ? s(i.message || i.field + " fails") : r instanceof Array ? s(r) : r instanceof Error && s(r.message)), r && r.then && r.then((function () { return s() }), (function (e) { return s(e) })) }), (function (e) { u(e) })) }, getType: function (e) { if (void 0 === e.type && e.pattern instanceof RegExp && (e.type = "pattern"), "function" !== typeof e.validator && e.type && !G.hasOwnProperty(e.type)) throw new Error(d("Unknown rule type %s", e.type)); return e.type || "string" }, getValidationMethod: function (e) { if ("function" === typeof e.validator) return e.validator; var t = Object.keys(e), n = t.indexOf("message"); return -1 !== n && t.splice(n, 1), 1 === t.length && "required" === t[0] ? G.required : G[this.getType(e)] || !1 } }, Q.register = function (e, t) { if ("function" !== typeof t) throw new Error("Cannot register a validator by type, validator is not a function"); G[e] = t }, Q.warning = h, Q.messages = J, Q.validators = G, t["a"] = Q }).call(this, n("4362")) }, "2adb": function (e, t, n) { "use strict"; (function (e) { n.d(t, "e", (function () { return u })), n.d(t, "d", (function () { return h })), n.d(t, "a", (function () { return d })), n.d(t, "b", (function () { return p })), n.d(t, "c", (function () { return v })), n.d(t, "f", (function () { return m })); var r = n("41b2"), i = n.n(r), o = n("8827"), a = n.n(o), s = n("57ba"), c = n.n(s), l = n("1d73"); function u(t) { e && Object({ NODE_ENV: "production", VUE_APP_API_BASE_URL: "http://localhost:5566", VUE_APP_PREVIEW: "true", BASE_URL: "/" }) || console.error("[@ant-design/icons-vue]: " + t + ".") } function h(e) { return "object" === typeof e && "string" === typeof e.name && "string" === typeof e.theme && ("object" === typeof e.icon || "function" === typeof e.icon) } function f() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return Object.keys(e).reduce((function (t, n) { var r = e[n]; switch (n) { case "class": t.className = r, delete t["class"]; break; default: t[n] = r }return t }), {}) } var d = function () { function e() { a()(this, e), this.collection = {} } return c()(e, [{ key: "clear", value: function () { this.collection = {} } }, { key: "delete", value: function (e) { return delete this.collection[e] } }, { key: "get", value: function (e) { return this.collection[e] } }, { key: "has", value: function (e) { return Boolean(this.collection[e]) } }, { key: "set", value: function (e, t) { return this.collection[e] = t, this } }, { key: "size", get: function () { return Object.keys(this.collection).length } }]), e }(); function p(e, t, n, r) { return e(t.tag, r ? i()({ key: n }, r, { attrs: i()({}, f(t.attrs), r.attrs) }) : { key: n, attrs: i()({}, f(t.attrs)) }, (t.children || []).map((function (r, i) { return p(e, r, n + "-" + t.tag + "-" + i) }))) } function v(e) { return Object(l["generate"])(e)[0] } function m(e, t) { switch (t) { case "fill": return e + "-fill"; case "outline": return e + "-o"; case "twotone": return e + "-twotone"; default: throw new TypeError("Unknown theme type: " + t + ", name: " + e) } } }).call(this, n("4362")) }, "2af1": function (e, t, n) { var r = n("23e7"), i = n("f748"); r({ target: "Math", stat: !0 }, { sign: i }) }, "2b03": function (e, t) { function n(e, t, n, r) { var i = e.length, o = n + (r ? 1 : -1); while (r ? o-- : ++o < i) if (t(e[o], o, e)) return o; return -1 } e.exports = n }, "2b10": function (e, t) { function n(e, t, n) { var r = -1, i = e.length; t < 0 && (t = -t > i ? 0 : i + t), n = n > i ? i : n, n < 0 && (n += i), i = t > n ? 0 : n - t >>> 0, t >>>= 0; var o = Array(i); while (++r < i) o[r] = e[r + t]; return o } e.exports = n }, "2b19": function (e, t, n) { var r = n("23e7"), i = n("129f"); r({ target: "Object", stat: !0 }, { is: i }) }, "2b3d": function (e, t, n) { "use strict"; n("3ca3"); var r, i = n("23e7"), o = n("83ab"), a = n("0d3b"), s = n("da84"), c = n("37e8"), l = n("6eeb"), u = n("19aa"), h = n("5135"), f = n("60da"), d = n("4df4"), p = n("6547").codeAt, v = n("5fb2"), m = n("577e"), g = n("d44e"), y = n("9861"), b = n("69f3"), x = s.URL, w = y.URLSearchParams, _ = y.getState, C = b.set, M = b.getterFor("URL"), O = Math.floor, k = Math.pow, S = "Invalid authority", T = "Invalid scheme", A = "Invalid host", L = "Invalid port", j = /[A-Za-z]/, z = /[\d+-.A-Za-z]/, E = /\d/, P = /^0x/i, D = /^[0-7]+$/, H = /^\d+$/, V = /^[\dA-Fa-f]+$/, I = /[\0\t\n\r #%/:<>?@[\\\]^|]/, N = /[\0\t\n\r #/:<>?@[\\\]^|]/, R = /^[\u0000-\u0020]+|[\u0000-\u0020]+$/g, F = /[\t\n\r]/g, Y = function (e, t) { var n, r, i; if ("[" == t.charAt(0)) { if ("]" != t.charAt(t.length - 1)) return A; if (n = B(t.slice(1, -1)), !n) return A; e.host = n } else if (Z(e)) { if (t = v(t), I.test(t)) return A; if (n = $(t), null === n) return A; e.host = n } else { if (N.test(t)) return A; for (n = "", r = d(t), i = 0; i < r.length; i++)n += J(r[i], U); e.host = n } }, $ = function (e) { var t, n, r, i, o, a, s, c = e.split("."); if (c.length && "" == c[c.length - 1] && c.pop(), t = c.length, t > 4) return e; for (n = [], r = 0; r < t; r++) { if (i = c[r], "" == i) return e; if (o = 10, i.length > 1 && "0" == i.charAt(0) && (o = P.test(i) ? 16 : 8, i = i.slice(8 == o ? 1 : 2)), "" === i) a = 0; else { if (!(10 == o ? H : 8 == o ? D : V).test(i)) return e; a = parseInt(i, o) } n.push(a) } for (r = 0; r < t; r++)if (a = n[r], r == t - 1) { if (a >= k(256, 5 - t)) return null } else if (a > 255) return null; for (s = n.pop(), r = 0; r < n.length; r++)s += n[r] * k(256, 3 - r); return s }, B = function (e) { var t, n, r, i, o, a, s, c = [0, 0, 0, 0, 0, 0, 0, 0], l = 0, u = null, h = 0, f = function () { return e.charAt(h) }; if (":" == f()) { if (":" != e.charAt(1)) return; h += 2, l++, u = l } while (f()) { if (8 == l) return; if (":" != f()) { t = n = 0; while (n < 4 && V.test(f())) t = 16 * t + parseInt(f(), 16), h++, n++; if ("." == f()) { if (0 == n) return; if (h -= n, l > 6) return; r = 0; while (f()) { if (i = null, r > 0) { if (!("." == f() && r < 4)) return; h++ } if (!E.test(f())) return; while (E.test(f())) { if (o = parseInt(f(), 10), null === i) i = o; else { if (0 == i) return; i = 10 * i + o } if (i > 255) return; h++ } c[l] = 256 * c[l] + i, r++, 2 != r && 4 != r || l++ } if (4 != r) return; break } if (":" == f()) { if (h++, !f()) return } else if (f()) return; c[l++] = t } else { if (null !== u) return; h++, l++, u = l } } if (null !== u) { a = l - u, l = 7; while (0 != l && a > 0) s = c[l], c[l--] = c[u + a - 1], c[u + --a] = s } else if (8 != l) return; return c }, W = function (e) { for (var t = null, n = 1, r = null, i = 0, o = 0; o < 8; o++)0 !== e[o] ? (i > n && (t = r, n = i), r = null, i = 0) : (null === r && (r = o), ++i); return i > n && (t = r, n = i), t }, q = function (e) { var t, n, r, i; if ("number" == typeof e) { for (t = [], n = 0; n < 4; n++)t.unshift(e % 256), e = O(e / 256); return t.join(".") } if ("object" == typeof e) { for (t = "", r = W(e), n = 0; n < 8; n++)i && 0 === e[n] || (i && (i = !1), r === n ? (t += n ? ":" : "::", i = !0) : (t += e[n].toString(16), n < 7 && (t += ":"))); return "[" + t + "]" } return e }, U = {}, K = f({}, U, { " ": 1, '"': 1, "<": 1, ">": 1, "`": 1 }), G = f({}, K, { "#": 1, "?": 1, "{": 1, "}": 1 }), X = f({}, G, { "/": 1, ":": 1, ";": 1, "=": 1, "@": 1, "[": 1, "\\": 1, "]": 1, "^": 1, "|": 1 }), J = function (e, t) { var n = p(e, 0); return n > 32 && n < 127 && !h(t, e) ? e : encodeURIComponent(e) }, Q = { ftp: 21, file: null, http: 80, https: 443, ws: 80, wss: 443 }, Z = function (e) { return h(Q, e.scheme) }, ee = function (e) { return "" != e.username || "" != e.password }, te = function (e) { return !e.host || e.cannotBeABaseURL || "file" == e.scheme }, ne = function (e, t) { var n; return 2 == e.length && j.test(e.charAt(0)) && (":" == (n = e.charAt(1)) || !t && "|" == n) }, re = function (e) { var t; return e.length > 1 && ne(e.slice(0, 2)) && (2 == e.length || "/" === (t = e.charAt(2)) || "\\" === t || "?" === t || "#" === t) }, ie = function (e) { var t = e.path, n = t.length; !n || "file" == e.scheme && 1 == n && ne(t[0], !0) || t.pop() }, oe = function (e) { return "." === e || "%2e" === e.toLowerCase() }, ae = function (e) { return e = e.toLowerCase(), ".." === e || "%2e." === e || ".%2e" === e || "%2e%2e" === e }, se = {}, ce = {}, le = {}, ue = {}, he = {}, fe = {}, de = {}, pe = {}, ve = {}, me = {}, ge = {}, ye = {}, be = {}, xe = {}, we = {}, _e = {}, Ce = {}, Me = {}, Oe = {}, ke = {}, Se = {}, Te = function (e, t, n, i) { var o, a, s, c, l = n || se, u = 0, f = "", p = !1, v = !1, m = !1; n || (e.scheme = "", e.username = "", e.password = "", e.host = null, e.port = null, e.path = [], e.query = null, e.fragment = null, e.cannotBeABaseURL = !1, t = t.replace(R, "")), t = t.replace(F, ""), o = d(t); while (u <= o.length) { switch (a = o[u], l) { case se: if (!a || !j.test(a)) { if (n) return T; l = le; continue } f += a.toLowerCase(), l = ce; break; case ce: if (a && (z.test(a) || "+" == a || "-" == a || "." == a)) f += a.toLowerCase(); else { if (":" != a) { if (n) return T; f = "", l = le, u = 0; continue } if (n && (Z(e) != h(Q, f) || "file" == f && (ee(e) || null !== e.port) || "file" == e.scheme && !e.host)) return; if (e.scheme = f, n) return void (Z(e) && Q[e.scheme] == e.port && (e.port = null)); f = "", "file" == e.scheme ? l = xe : Z(e) && i && i.scheme == e.scheme ? l = ue : Z(e) ? l = pe : "/" == o[u + 1] ? (l = he, u++) : (e.cannotBeABaseURL = !0, e.path.push(""), l = Oe) } break; case le: if (!i || i.cannotBeABaseURL && "#" != a) return T; if (i.cannotBeABaseURL && "#" == a) { e.scheme = i.scheme, e.path = i.path.slice(), e.query = i.query, e.fragment = "", e.cannotBeABaseURL = !0, l = Se; break } l = "file" == i.scheme ? xe : fe; continue; case ue: if ("/" != a || "/" != o[u + 1]) { l = fe; continue } l = ve, u++; break; case he: if ("/" == a) { l = me; break } l = Me; continue; case fe: if (e.scheme = i.scheme, a == r) e.username = i.username, e.password = i.password, e.host = i.host, e.port = i.port, e.path = i.path.slice(), e.query = i.query; else if ("/" == a || "\\" == a && Z(e)) l = de; else if ("?" == a) e.username = i.username, e.password = i.password, e.host = i.host, e.port = i.port, e.path = i.path.slice(), e.query = "", l = ke; else { if ("#" != a) { e.username = i.username, e.password = i.password, e.host = i.host, e.port = i.port, e.path = i.path.slice(), e.path.pop(), l = Me; continue } e.username = i.username, e.password = i.password, e.host = i.host, e.port = i.port, e.path = i.path.slice(), e.query = i.query, e.fragment = "", l = Se } break; case de: if (!Z(e) || "/" != a && "\\" != a) { if ("/" != a) { e.username = i.username, e.password = i.password, e.host = i.host, e.port = i.port, l = Me; continue } l = me } else l = ve; break; case pe: if (l = ve, "/" != a || "/" != f.charAt(u + 1)) continue; u++; break; case ve: if ("/" != a && "\\" != a) { l = me; continue } break; case me: if ("@" == a) { p && (f = "%40" + f), p = !0, s = d(f); for (var g = 0; g < s.length; g++) { var y = s[g]; if (":" != y || m) { var b = J(y, X); m ? e.password += b : e.username += b } else m = !0 } f = "" } else if (a == r || "/" == a || "?" == a || "#" == a || "\\" == a && Z(e)) { if (p && "" == f) return S; u -= d(f).length + 1, f = "", l = ge } else f += a; break; case ge: case ye: if (n && "file" == e.scheme) { l = _e; continue } if (":" != a || v) { if (a == r || "/" == a || "?" == a || "#" == a || "\\" == a && Z(e)) { if (Z(e) && "" == f) return A; if (n && "" == f && (ee(e) || null !== e.port)) return; if (c = Y(e, f), c) return c; if (f = "", l = Ce, n) return; continue } "[" == a ? v = !0 : "]" == a && (v = !1), f += a } else { if ("" == f) return A; if (c = Y(e, f), c) return c; if (f = "", l = be, n == ye) return } break; case be: if (!E.test(a)) { if (a == r || "/" == a || "?" == a || "#" == a || "\\" == a && Z(e) || n) { if ("" != f) { var x = parseInt(f, 10); if (x > 65535) return L; e.port = Z(e) && x === Q[e.scheme] ? null : x, f = "" } if (n) return; l = Ce; continue } return L } f += a; break; case xe: if (e.scheme = "file", "/" == a || "\\" == a) l = we; else { if (!i || "file" != i.scheme) { l = Me; continue } if (a == r) e.host = i.host, e.path = i.path.slice(), e.query = i.query; else if ("?" == a) e.host = i.host, e.path = i.path.slice(), e.query = "", l = ke; else { if ("#" != a) { re(o.slice(u).join("")) || (e.host = i.host, e.path = i.path.slice(), ie(e)), l = Me; continue } e.host = i.host, e.path = i.path.slice(), e.query = i.query, e.fragment = "", l = Se } } break; case we: if ("/" == a || "\\" == a) { l = _e; break } i && "file" == i.scheme && !re(o.slice(u).join("")) && (ne(i.path[0], !0) ? e.path.push(i.path[0]) : e.host = i.host), l = Me; continue; case _e: if (a == r || "/" == a || "\\" == a || "?" == a || "#" == a) { if (!n && ne(f)) l = Me; else if ("" == f) { if (e.host = "", n) return; l = Ce } else { if (c = Y(e, f), c) return c; if ("localhost" == e.host && (e.host = ""), n) return; f = "", l = Ce } continue } f += a; break; case Ce: if (Z(e)) { if (l = Me, "/" != a && "\\" != a) continue } else if (n || "?" != a) if (n || "#" != a) { if (a != r && (l = Me, "/" != a)) continue } else e.fragment = "", l = Se; else e.query = "", l = ke; break; case Me: if (a == r || "/" == a || "\\" == a && Z(e) || !n && ("?" == a || "#" == a)) { if (ae(f) ? (ie(e), "/" == a || "\\" == a && Z(e) || e.path.push("")) : oe(f) ? "/" == a || "\\" == a && Z(e) || e.path.push("") : ("file" == e.scheme && !e.path.length && ne(f) && (e.host && (e.host = ""), f = f.charAt(0) + ":"), e.path.push(f)), f = "", "file" == e.scheme && (a == r || "?" == a || "#" == a)) while (e.path.length > 1 && "" === e.path[0]) e.path.shift(); "?" == a ? (e.query = "", l = ke) : "#" == a && (e.fragment = "", l = Se) } else f += J(a, G); break; case Oe: "?" == a ? (e.query = "", l = ke) : "#" == a ? (e.fragment = "", l = Se) : a != r && (e.path[0] += J(a, U)); break; case ke: n || "#" != a ? a != r && ("'" == a && Z(e) ? e.query += "%27" : e.query += "#" == a ? "%23" : J(a, U)) : (e.fragment = "", l = Se); break; case Se: a != r && (e.fragment += J(a, K)); break }u++ } }, Ae = function (e) { var t, n, r = u(this, Ae, "URL"), i = arguments.length > 1 ? arguments[1] : void 0, a = m(e), s = C(r, { type: "URL" }); if (void 0 !== i) if (i instanceof Ae) t = M(i); else if (n = Te(t = {}, m(i)), n) throw TypeError(n); if (n = Te(s, a, null, t), n) throw TypeError(n); var c = s.searchParams = new w, l = _(c); l.updateSearchParams(s.query), l.updateURL = function () { s.query = String(c) || null }, o || (r.href = je.call(r), r.origin = ze.call(r), r.protocol = Ee.call(r), r.username = Pe.call(r), r.password = De.call(r), r.host = He.call(r), r.hostname = Ve.call(r), r.port = Ie.call(r), r.pathname = Ne.call(r), r.search = Re.call(r), r.searchParams = Fe.call(r), r.hash = Ye.call(r)) }, Le = Ae.prototype, je = function () { var e = M(this), t = e.scheme, n = e.username, r = e.password, i = e.host, o = e.port, a = e.path, s = e.query, c = e.fragment, l = t + ":"; return null !== i ? (l += "//", ee(e) && (l += n + (r ? ":" + r : "") + "@"), l += q(i), null !== o && (l += ":" + o)) : "file" == t && (l += "//"), l += e.cannotBeABaseURL ? a[0] : a.length ? "/" + a.join("/") : "", null !== s && (l += "?" + s), null !== c && (l += "#" + c), l }, ze = function () { var e = M(this), t = e.scheme, n = e.port; if ("blob" == t) try { return new Ae(t.path[0]).origin } catch (r) { return "null" } return "file" != t && Z(e) ? t + "://" + q(e.host) + (null !== n ? ":" + n : "") : "null" }, Ee = function () { return M(this).scheme + ":" }, Pe = function () { return M(this).username }, De = function () { return M(this).password }, He = function () { var e = M(this), t = e.host, n = e.port; return null === t ? "" : null === n ? q(t) : q(t) + ":" + n }, Ve = function () { var e = M(this).host; return null === e ? "" : q(e) }, Ie = function () { var e = M(this).port; return null === e ? "" : String(e) }, Ne = function () { var e = M(this), t = e.path; return e.cannotBeABaseURL ? t[0] : t.length ? "/" + t.join("/") : "" }, Re = function () { var e = M(this).query; return e ? "?" + e : "" }, Fe = function () { return M(this).searchParams }, Ye = function () { var e = M(this).fragment; return e ? "#" + e : "" }, $e = function (e, t) { return { get: e, set: t, configurable: !0, enumerable: !0 } }; if (o && c(Le, { href: $e(je, (function (e) { var t = M(this), n = m(e), r = Te(t, n); if (r) throw TypeError(r); _(t.searchParams).updateSearchParams(t.query) })), origin: $e(ze), protocol: $e(Ee, (function (e) { var t = M(this); Te(t, m(e) + ":", se) })), username: $e(Pe, (function (e) { var t = M(this), n = d(m(e)); if (!te(t)) { t.username = ""; for (var r = 0; r < n.length; r++)t.username += J(n[r], X) } })), password: $e(De, (function (e) { var t = M(this), n = d(m(e)); if (!te(t)) { t.password = ""; for (var r = 0; r < n.length; r++)t.password += J(n[r], X) } })), host: $e(He, (function (e) { var t = M(this); t.cannotBeABaseURL || Te(t, m(e), ge) })), hostname: $e(Ve, (function (e) { var t = M(this); t.cannotBeABaseURL || Te(t, m(e), ye) })), port: $e(Ie, (function (e) { var t = M(this); te(t) || (e = m(e), "" == e ? t.port = null : Te(t, e, be)) })), pathname: $e(Ne, (function (e) { var t = M(this); t.cannotBeABaseURL || (t.path = [], Te(t, m(e), Ce)) })), search: $e(Re, (function (e) { var t = M(this); e = m(e), "" == e ? t.query = null : ("?" == e.charAt(0) && (e = e.slice(1)), t.query = "", Te(t, e, ke)), _(t.searchParams).updateSearchParams(t.query) })), searchParams: $e(Fe), hash: $e(Ye, (function (e) { var t = M(this); e = m(e), "" != e ? ("#" == e.charAt(0) && (e = e.slice(1)), t.fragment = "", Te(t, e, Se)) : t.fragment = null })) }), l(Le, "toJSON", (function () { return je.call(this) }), { enumerable: !0 }), l(Le, "toString", (function () { return je.call(this) }), { enumerable: !0 }), x) { var Be = x.createObjectURL, We = x.revokeObjectURL; Be && l(Ae, "createObjectURL", (function (e) { return Be.apply(x, arguments) })), We && l(Ae, "revokeObjectURL", (function (e) { return We.apply(x, arguments) })) } g(Ae, "URL"), i({ global: !0, forced: !a, sham: !o }, { URL: Ae }) }, "2b3e": function (e, t, n) { var r = n("585a"), i = "object" == typeof self && self && self.Object === Object && self, o = r || i || Function("return this")(); e.exports = o }, "2b89": function (e, t, n) { "use strict"; n.d(t, "h", (function () { return S })), n.d(t, "a", (function () { return T })), n.d(t, "b", (function () { return A })), n.d(t, "e", (function () { return L })), n.d(t, "f", (function () { return j })), n.d(t, "g", (function () { return z })), n.d(t, "c", (function () { return E })), n.d(t, "i", (function () { return P })), n.d(t, "d", (function () { return D })); var r = n("1098"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("b24f"), c = n.n(s), l = /iPhone/i, u = /iPod/i, h = /iPad/i, f = /\bAndroid(?:.+)Mobile\b/i, d = /Android/i, p = /\bAndroid(?:.+)SD4930UR\b/i, v = /\bAndroid(?:.+)(?:KF[A-Z]{2,4})\b/i, m = /Windows Phone/i, g = /\bWindows(?:.+)ARM\b/i, y = /BlackBerry/i, b = /BB10/i, x = /Opera Mini/i, w = /\b(CriOS|Chrome)(?:.+)Mobile/i, _ = /Mobile(?:.+)Firefox\b/i; function C(e, t) { return e.test(t) } function M(e) { var t = e || ("undefined" !== typeof navigator ? navigator.userAgent : ""), n = t.split("[FBAN"); if ("undefined" !== typeof n[1]) { var r = n, i = c()(r, 1); t = i[0] } if (n = t.split("Twitter"), "undefined" !== typeof n[1]) { var o = n, a = c()(o, 1); t = a[0] } var s = { apple: { phone: C(l, t) && !C(m, t), ipod: C(u, t), tablet: !C(l, t) && C(h, t) && !C(m, t), device: (C(l, t) || C(u, t) || C(h, t)) && !C(m, t) }, amazon: { phone: C(p, t), tablet: !C(p, t) && C(v, t), device: C(p, t) || C(v, t) }, android: { phone: !C(m, t) && C(p, t) || !C(m, t) && C(f, t), tablet: !C(m, t) && !C(p, t) && !C(f, t) && (C(v, t) || C(d, t)), device: !C(m, t) && (C(p, t) || C(v, t) || C(f, t) || C(d, t)) || C(/\bokhttp\b/i, t) }, windows: { phone: C(m, t), tablet: C(g, t), device: C(m, t) || C(g, t) }, other: { blackberry: C(y, t), blackberry10: C(b, t), opera: C(x, t), firefox: C(_, t), chrome: C(w, t), device: C(y, t) || C(b, t) || C(x, t) || C(_, t) || C(w, t) }, any: null, phone: null, tablet: null }; return s.any = s.apple.device || s.android.device || s.windows.device || s.other.device, s.phone = s.apple.phone || s.android.phone || s.windows.phone, s.tablet = s.apple.tablet || s.android.tablet || s.windows.tablet, s } var O = a()({}, M(), { isMobile: M }), k = O; function S() { } function T(e, t, n) { var r = t || ""; return void 0 === e.key ? r + "item_" + n : e.key } function A(e) { return e + "-menu-" } function L(e, t) { var n = -1; e.forEach((function (e) { n++, e && e.type && e.type.isMenuItemGroup ? e.$slots["default"].forEach((function (r) { n++, e.componentOptions && t(r, n) })) : e.componentOptions && t(e, n) })) } function j(e, t, n) { e && !n.find && e.forEach((function (e) { if (!n.find && (!e.data || !e.data.slot || "default" === e.data.slot) && e && e.componentOptions) { var r = e.componentOptions.Ctor.options; if (!r || !(r.isSubMenu || r.isMenuItem || r.isMenuItemGroup)) return; -1 !== t.indexOf(e.key) ? n.find = !0 : e.componentOptions.children && j(e.componentOptions.children, t, n) } })) } var z = { props: ["defaultSelectedKeys", "selectedKeys", "defaultOpenKeys", "openKeys", "mode", "getPopupContainer", "openTransitionName", "openAnimation", "subMenuOpenDelay", "subMenuCloseDelay", "forceSubMenuRender", "triggerSubMenuAction", "level", "selectable", "multiple", "visible", "focusable", "defaultActiveFirst", "prefixCls", "inlineIndent", "parentMenu", "title", "rootPrefixCls", "eventKey", "active", "popupAlign", "popupOffset", "isOpen", "renderMenuItem", "manualRef", "subMenuKey", "disabled", "index", "isSelected", "store", "activeKey", "builtinPlacements", "overflowedIndicator", "attribute", "value", "popupClassName", "inlineCollapsed", "menu", "theme", "itemIcon", "expandIcon"], on: ["select", "deselect", "destroy", "openChange", "itemHover", "titleMouseenter", "titleMouseleave", "titleClick"] }, E = function (e) { var t = e && "function" === typeof e.getBoundingClientRect && e.getBoundingClientRect().width; return t && (t = +t.toFixed(6)), t || 0 }, P = function (e, t, n) { e && "object" === i()(e.style) && (e.style[t] = n) }, D = function () { return k.any } }, "2c66": function (e, t, n) { var r = n("d612"), i = n("8db3"), o = n("5edf"), a = n("c584"), s = n("750a"), c = n("ac41"), l = 200; function u(e, t, n) { var u = -1, h = i, f = e.length, d = !0, p = [], v = p; if (n) d = !1, h = o; else if (f >= l) { var m = t ? null : s(e); if (m) return c(m); d = !1, h = a, v = new r } else v = t ? [] : p; e: while (++u < f) { var g = e[u], y = t ? t(g) : g; if (g = n || 0 !== g ? g : 0, d && y === y) { var b = v.length; while (b--) if (v[b] === y) continue e; t && v.push(y), p.push(g) } else h(v, y, n) || (v !== p && v.push(y), p.push(g)) } return p } e.exports = u }, "2c6a": function (e, t, n) { }, "2c80": function (e, t, n) { "use strict"; function r(e) { return e && e.__esModule ? e : { default: e } } Object.defineProperty(t, "__esModule", { value: !0 }), t["default"] = a; var i = n("134b"), o = r(i); function a(e, t, n, r) { function i(t) { var r = new o["default"](t); n.call(e, r) } if (e.addEventListener) { var a = function () { var n = !1; return "object" === typeof r ? n = r.capture || !1 : "boolean" === typeof r && (n = r), e.addEventListener(t, i, r || !1), { v: { remove: function () { e.removeEventListener(t, i, n) } } } }(); if ("object" === typeof a) return a.v } else if (e.attachEvent) return e.attachEvent("on" + t, i), { remove: function () { e.detachEvent("on" + t, i) } } } e.exports = t["default"] }, "2c92": function (e, t, n) { "use strict"; var r = n("6042"), i = n.n(r), o = n("0c63"), a = n("4d26"), s = n.n(a), c = n("b488"), l = n("4d91"), u = n("94eb"), h = n("daa3"), f = n("7b05"), d = n("9cba"), p = n("db14"); function v() { } var m = { type: l["a"].oneOf(["success", "info", "warning", "error"]), closable: l["a"].bool, closeText: l["a"].any, message: l["a"].any, description: l["a"].any, afterClose: l["a"].func.def(v), showIcon: l["a"].bool, iconType: l["a"].string, prefixCls: l["a"].string, banner: l["a"].bool, icon: l["a"].any }, g = { name: "AAlert", props: m, mixins: [c["a"]], inject: { configProvider: { default: function () { return d["a"] } } }, data: function () { return { closing: !1, closed: !1 } }, methods: { handleClose: function (e) { e.preventDefault(); var t = this.$el; t.style.height = t.offsetHeight + "px", t.style.height = t.offsetHeight + "px", this.setState({ closing: !0 }), this.$emit("close", e) }, animationEnd: function () { this.setState({ closing: !1, closed: !0 }), this.afterClose() } }, render: function () { var e, t = arguments[0], n = this.prefixCls, r = this.banner, a = this.closing, c = this.closed, l = this.configProvider.getPrefixCls, d = l("alert", n), p = this.closable, v = this.type, m = this.showIcon, g = this.iconType, y = Object(h["g"])(this, "closeText"), b = Object(h["g"])(this, "description"), x = Object(h["g"])(this, "message"), w = Object(h["g"])(this, "icon"); m = !(!r || void 0 !== m) || m, v = r && void 0 === v ? "warning" : v || "info"; var _ = "filled"; if (!g) { switch (v) { case "success": g = "check-circle"; break; case "info": g = "info-circle"; break; case "error": g = "close-circle"; break; case "warning": g = "exclamation-circle"; break; default: g = "default" }b && (_ = "outlined") } y && (p = !0); var C = s()(d, (e = {}, i()(e, d + "-" + v, !0), i()(e, d + "-closing", a), i()(e, d + "-with-description", !!b), i()(e, d + "-no-icon", !m), i()(e, d + "-banner", !!r), i()(e, d + "-closable", p), e)), M = p ? t("button", { attrs: { type: "button", tabIndex: 0 }, on: { click: this.handleClose }, class: d + "-close-icon" }, [y ? t("span", { class: d + "-close-text" }, [y]) : t(o["a"], { attrs: { type: "close" } })]) : null, O = w && (Object(h["w"])(w) ? Object(f["a"])(w, { class: d + "-icon" }) : t("span", { class: d + "-icon" }, [w])) || t(o["a"], { class: d + "-icon", attrs: { type: g, theme: _ } }), k = Object(u["a"])(d + "-slide-up", { appear: !1, afterLeave: this.animationEnd }); return c ? null : t("transition", k, [t("div", { directives: [{ name: "show", value: !a }], class: C, attrs: { "data-show": !a } }, [m ? O : null, t("span", { class: d + "-message" }, [x]), t("span", { class: d + "-description" }, [b]), M])]) }, install: function (e) { e.use(p["a"]), e.component(g.name, g) } }; t["a"] = g }, "2ca0": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("06cf").f, o = n("50c4"), a = n("577e"), s = n("5a34"), c = n("1d80"), l = n("ab13"), u = n("c430"), h = "".startsWith, f = Math.min, d = l("startsWith"), p = !u && !d && !!function () { var e = i(String.prototype, "startsWith"); return e && !e.writable }(); r({ target: "String", proto: !0, forced: !p && !d }, { startsWith: function (e) { var t = a(c(this)); s(e); var n = o(f(arguments.length > 1 ? arguments[1] : void 0, t.length)), r = a(e); return h ? h.call(t, r, n) : t.slice(n, n + r.length) === r } }) }, "2caf": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return l })); n("4ae1"), n("131a"), n("3410"); function r(e) { return r = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, r(e) } function i() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (e) { return !1 } } var o = n("7037"), a = n.n(o); function s(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function c(e, t) { if (t && ("object" === a()(t) || "function" === typeof t)) return t; if (void 0 !== t) throw new TypeError("Derived constructors may only return object or undefined"); return s(e) } function l(e) { var t = i(); return function () { var n, i = r(e); if (t) { var o = r(this).constructor; n = Reflect.construct(i, arguments, o) } else n = i.apply(this, arguments); return c(this, n) } } }, "2cf4": function (e, t, n) { var r, i, o, a, s = n("da84"), c = n("d039"), l = n("0366"), u = n("1be4"), h = n("cc12"), f = n("1cdc"), d = n("605d"), p = s.setImmediate, v = s.clearImmediate, m = s.process, g = s.MessageChannel, y = s.Dispatch, b = 0, x = {}, w = "onreadystatechange"; try { r = s.location } catch (k) { } var _ = function (e) { if (x.hasOwnProperty(e)) { var t = x[e]; delete x[e], t() } }, C = function (e) { return function () { _(e) } }, M = function (e) { _(e.data) }, O = function (e) { s.postMessage(String(e), r.protocol + "//" + r.host) }; p && v || (p = function (e) { var t = [], n = arguments.length, r = 1; while (n > r) t.push(arguments[r++]); return x[++b] = function () { ("function" == typeof e ? e : Function(e)).apply(void 0, t) }, i(b), b }, v = function (e) { delete x[e] }, d ? i = function (e) { m.nextTick(C(e)) } : y && y.now ? i = function (e) { y.now(C(e)) } : g && !f ? (o = new g, a = o.port2, o.port1.onmessage = M, i = l(a.postMessage, a, 1)) : s.addEventListener && "function" == typeof postMessage && !s.importScripts && r && "file:" !== r.protocol && !c(O) ? (i = O, s.addEventListener("message", M, !1)) : i = w in h("script") ? function (e) { u.appendChild(h("script"))[w] = function () { u.removeChild(this), _(e) } } : function (e) { setTimeout(C(e), 0) }), e.exports = { set: p, clear: v } }, "2cf8": function (e, t, n) { "use strict"; function r(e) { return e["default"] || e } n.d(t, "a", (function () { return r })) }, "2d00": function (e, t, n) { var r, i, o = n("da84"), a = n("342f"), s = o.process, c = o.Deno, l = s && s.versions || c && c.version, u = l && l.v8; u ? (r = u.split("."), i = r[0] < 4 ? 1 : r[0] + r[1]) : a && (r = a.match(/Edge\/(\d+)/), (!r || r[1] >= 74) && (r = a.match(/Chrome\/(\d+)/), r && (i = r[1]))), e.exports = i && +i }, "2d7c": function (e, t) { function n(e, t) { var n = -1, r = null == e ? 0 : e.length, i = 0, o = []; while (++n < r) { var a = e[n]; t(a, n, e) && (o[i++] = a) } return o } e.exports = n }, "2db9": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.bezierCurveToPolyline = b, t.getBezierCurveLength = x, t["default"] = void 0; var i = r(n("278c")), o = r(n("448a")), a = Math.sqrt, s = Math.pow, c = Math.ceil, l = Math.abs, u = 50; function h(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 5, n = e.length - 1, r = e[0], i = e[n][2], a = e.slice(1), s = a.map((function (e, t) { var n = 0 === t ? r : a[t - 1][2]; return f.apply(void 0, [n].concat((0, o["default"])(e))) })), c = new Array(n).fill(u), l = m(s, c), h = y(l, s, a, t); return h.segmentPoints.push(i), h } function f(e, t, n, r) { return function (i) { var o = 1 - i, a = s(o, 3), c = s(o, 2), l = s(i, 3), u = s(i, 2); return [e[0] * a + 3 * t[0] * i * c + 3 * n[0] * u * o + r[0] * l, e[1] * a + 3 * t[1] * i * c + 3 * n[1] * u * o + r[1] * l] } } function d(e, t) { var n = (0, i["default"])(e, 2), r = n[0], o = n[1], c = (0, i["default"])(t, 2), l = c[0], u = c[1]; return a(s(r - l, 2) + s(o - u, 2)) } function p(e) { return e.reduce((function (e, t) { return e + t }), 0) } function v(e) { return e.map((function (e, t) { return new Array(e.length - 1).fill(0).map((function (t, n) { return d(e[n], e[n + 1]) })) })) } function m(e, t) { return e.map((function (e, n) { var r = 1 / t[n]; return new Array(t[n]).fill("").map((function (t, n) { return e(n * r) })) })) } function g(e, t) { return e.map((function (e) { return e.map((function (e) { return l(e - t) })) })).map((function (e) { return p(e) })).reduce((function (e, t) { return e + t }), 0) } function y(e, t, n, r) { var i = 4, o = 1, a = function () { var a = e.reduce((function (e, t) { return e + t.length }), 0); e.forEach((function (e, t) { return e.push(n[t][2]) })); var s = v(e), l = s.reduce((function (e, t) { return e + t.length }), 0), u = s.map((function (e) { return p(e) })), h = p(u), f = h / l, d = g(s, f); if (d <= r) return "break"; a = c(f / r * a * 1.1); var y = u.map((function (e) { return c(e / h * a) })); e = m(t, y), a = e.reduce((function (e, t) { return e + t.length }), 0); var b = JSON.parse(JSON.stringify(e)); b.forEach((function (e, t) { return e.push(n[t][2]) })), s = v(b), l = s.reduce((function (e, t) { return e + t.length }), 0), u = s.map((function (e) { return p(e) })), h = p(u), f = h / l; var x = 1 / a / 10; t.forEach((function (t, n) { for (var r = y[n], o = new Array(r).fill("").map((function (e, t) { return t / y[n] })), a = 0; a < i; a++)for (var s = v([e[n]])[0], c = s.map((function (e) { return e - f })), l = 0, u = 0; u < r; u++) { if (0 === u) return; l += c[u - 1], o[u] -= x * l, o[u] > 1 && (o[u] = 1), o[u] < 0 && (o[u] = 0), e[n][u] = t(o[u]) } })), i *= 4, o++ }; do { var s = a(); if ("break" === s) break } while (i <= 1025); return e = e.reduce((function (e, t) { return e.concat(t) }), []), { segmentPoints: e, cycles: o, rounds: i } } function b(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 5; if (!e) return console.error("bezierCurveToPolyline: Missing parameters!"), !1; if (!(e instanceof Array)) return console.error("bezierCurveToPolyline: Parameter bezierCurve must be an array!"), !1; if ("number" !== typeof t) return console.error("bezierCurveToPolyline: Parameter precision must be a number!"), !1; var n = h(e, t), r = n.segmentPoints; return r } function x(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 5; if (!e) return console.error("getBezierCurveLength: Missing parameters!"), !1; if (!(e instanceof Array)) return console.error("getBezierCurveLength: Parameter bezierCurve must be an array!"), !1; if ("number" !== typeof t) return console.error("getBezierCurveLength: Parameter precision must be a number!"), !1; var n = h(e, t), r = n.segmentPoints, i = v([r])[0], o = p(i); return o } var w = b; t["default"] = w }, "2dcb": function (e, t, n) { var r = n("91e9"), i = r(Object.getPrototypeOf, Object); e.exports = i }, "2deb": function (e, t, n) { "use strict"; t["a"] = { items_per_page: "/ page", jump_to: "Go to", jump_to_confirm: "confirm", page: "", prev_page: "Previous Page", next_page: "Next Page", prev_5: "Previous 5 Pages", next_5: "Next 5 Pages", prev_3: "Previous 3 Pages", next_3: "Next 3 Pages" } }, "2ec1": function (e, t, n) { var r = n("100e"), i = n("9aff"); function o(e) { return r((function (t, n) { var r = -1, o = n.length, a = o > 1 ? n[o - 1] : void 0, s = o > 2 ? n[2] : void 0; a = e.length > 3 && "function" == typeof a ? (o--, a) : void 0, s && i(n[0], n[1], s) && (a = o < 3 ? void 0 : a, o = 1), t = Object(t); while (++r < o) { var c = n[r]; c && e(t, c, r, a) } return t })) } e.exports = o }, "2ee9": function (e, t, n) { }, "2ef0": function (e, t, n) {
+        (function (e, r) {
+            var i;
+/**
+ * @license
+ * Lodash <https://lodash.com/>
+ * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
+ * Released under MIT license <https://lodash.com/license>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */(function () { var o, a = "4.17.21", s = 200, c = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", l = "Expected a function", u = "Invalid `variable` option passed into `_.template`", h = "__lodash_hash_undefined__", f = 500, d = "__lodash_placeholder__", p = 1, v = 2, m = 4, g = 1, y = 2, b = 1, x = 2, w = 4, _ = 8, C = 16, M = 32, O = 64, k = 128, S = 256, T = 512, A = 30, L = "...", j = 800, z = 16, E = 1, P = 2, D = 3, H = 1 / 0, V = 9007199254740991, I = 17976931348623157e292, N = NaN, R = 4294967295, F = R - 1, Y = R >>> 1, $ = [["ary", k], ["bind", b], ["bindKey", x], ["curry", _], ["curryRight", C], ["flip", T], ["partial", M], ["partialRight", O], ["rearg", S]], B = "[object Arguments]", W = "[object Array]", q = "[object AsyncFunction]", U = "[object Boolean]", K = "[object Date]", G = "[object DOMException]", X = "[object Error]", J = "[object Function]", Q = "[object GeneratorFunction]", Z = "[object Map]", ee = "[object Number]", te = "[object Null]", ne = "[object Object]", re = "[object Promise]", ie = "[object Proxy]", oe = "[object RegExp]", ae = "[object Set]", se = "[object String]", ce = "[object Symbol]", le = "[object Undefined]", ue = "[object WeakMap]", he = "[object WeakSet]", fe = "[object ArrayBuffer]", de = "[object DataView]", pe = "[object Float32Array]", ve = "[object Float64Array]", me = "[object Int8Array]", ge = "[object Int16Array]", ye = "[object Int32Array]", be = "[object Uint8Array]", xe = "[object Uint8ClampedArray]", we = "[object Uint16Array]", _e = "[object Uint32Array]", Ce = /\b__p \+= '';/g, Me = /\b(__p \+=) '' \+/g, Oe = /(__e\(.*?\)|\b__t\)) \+\n'';/g, ke = /&(?:amp|lt|gt|quot|#39);/g, Se = /[&<>"']/g, Te = RegExp(ke.source), Ae = RegExp(Se.source), Le = /<%-([\s\S]+?)%>/g, je = /<%([\s\S]+?)%>/g, ze = /<%=([\s\S]+?)%>/g, Ee = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, Pe = /^\w*$/, De = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, He = /[\\^$.*+?()[\]{}|]/g, Ve = RegExp(He.source), Ie = /^\s+/, Ne = /\s/, Re = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, Fe = /\{\n\/\* \[wrapped with (.+)\] \*/, Ye = /,? & /, $e = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, Be = /[()=,{}\[\]\/\s]/, We = /\\(\\)?/g, qe = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, Ue = /\w*$/, Ke = /^[-+]0x[0-9a-f]+$/i, Ge = /^0b[01]+$/i, Xe = /^\[object .+?Constructor\]$/, Je = /^0o[0-7]+$/i, Qe = /^(?:0|[1-9]\d*)$/, Ze = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, et = /($^)/, tt = /['\n\r\u2028\u2029\\]/g, nt = "\\ud800-\\udfff", rt = "\\u0300-\\u036f", it = "\\ufe20-\\ufe2f", ot = "\\u20d0-\\u20ff", at = rt + it + ot, st = "\\u2700-\\u27bf", ct = "a-z\\xdf-\\xf6\\xf8-\\xff", lt = "\\xac\\xb1\\xd7\\xf7", ut = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", ht = "\\u2000-\\u206f", ft = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", dt = "A-Z\\xc0-\\xd6\\xd8-\\xde", pt = "\\ufe0e\\ufe0f", vt = lt + ut + ht + ft, mt = "['鈥橾", gt = "[" + nt + "]", yt = "[" + vt + "]", bt = "[" + at + "]", xt = "\\d+", wt = "[" + st + "]", _t = "[" + ct + "]", Ct = "[^" + nt + vt + xt + st + ct + dt + "]", Mt = "\\ud83c[\\udffb-\\udfff]", Ot = "(?:" + bt + "|" + Mt + ")", kt = "[^" + nt + "]", St = "(?:\\ud83c[\\udde6-\\uddff]){2}", Tt = "[\\ud800-\\udbff][\\udc00-\\udfff]", At = "[" + dt + "]", Lt = "\\u200d", jt = "(?:" + _t + "|" + Ct + ")", zt = "(?:" + At + "|" + Ct + ")", Et = "(?:" + mt + "(?:d|ll|m|re|s|t|ve))?", Pt = "(?:" + mt + "(?:D|LL|M|RE|S|T|VE))?", Dt = Ot + "?", Ht = "[" + pt + "]?", Vt = "(?:" + Lt + "(?:" + [kt, St, Tt].join("|") + ")" + Ht + Dt + ")*", It = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", Nt = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", Rt = Ht + Dt + Vt, Ft = "(?:" + [wt, St, Tt].join("|") + ")" + Rt, Yt = "(?:" + [kt + bt + "?", bt, St, Tt, gt].join("|") + ")", $t = RegExp(mt, "g"), Bt = RegExp(bt, "g"), Wt = RegExp(Mt + "(?=" + Mt + ")|" + Yt + Rt, "g"), qt = RegExp([At + "?" + _t + "+" + Et + "(?=" + [yt, At, "$"].join("|") + ")", zt + "+" + Pt + "(?=" + [yt, At + jt, "$"].join("|") + ")", At + "?" + jt + "+" + Et, At + "+" + Pt, Nt, It, xt, Ft].join("|"), "g"), Ut = RegExp("[" + Lt + nt + at + pt + "]"), Kt = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/, Gt = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"], Xt = -1, Jt = {}; Jt[pe] = Jt[ve] = Jt[me] = Jt[ge] = Jt[ye] = Jt[be] = Jt[xe] = Jt[we] = Jt[_e] = !0, Jt[B] = Jt[W] = Jt[fe] = Jt[U] = Jt[de] = Jt[K] = Jt[X] = Jt[J] = Jt[Z] = Jt[ee] = Jt[ne] = Jt[oe] = Jt[ae] = Jt[se] = Jt[ue] = !1; var Qt = {}; Qt[B] = Qt[W] = Qt[fe] = Qt[de] = Qt[U] = Qt[K] = Qt[pe] = Qt[ve] = Qt[me] = Qt[ge] = Qt[ye] = Qt[Z] = Qt[ee] = Qt[ne] = Qt[oe] = Qt[ae] = Qt[se] = Qt[ce] = Qt[be] = Qt[xe] = Qt[we] = Qt[_e] = !0, Qt[X] = Qt[J] = Qt[ue] = !1; var Zt = { "脌": "A", "脕": "A", "脗": "A", "脙": "A", "脛": "A", "脜": "A", "脿": "a", "谩": "a", "芒": "a", "茫": "a", "盲": "a", "氓": "a", "脟": "C", "莽": "c", "脨": "D", "冒": "d", "脠": "E", "脡": "E", "脢": "E", "脣": "E", "猫": "e", "茅": "e", "锚": "e", "毛": "e", "脤": "I", "脥": "I", "脦": "I", "脧": "I", "矛": "i", "铆": "i", "卯": "i", "茂": "i", "脩": "N", "帽": "n", "脪": "O", "脫": "O", "脭": "O", "脮": "O", "脰": "O", "脴": "O", "貌": "o", "贸": "o", "么": "o", "玫": "o", "枚": "o", "酶": "o", "脵": "U", "脷": "U", "脹": "U", "脺": "U", "霉": "u", "煤": "u", "没": "u", "眉": "u", "脻": "Y", "媒": "y", "每": "y", "脝": "Ae", "忙": "ae", "脼": "Th", "镁": "th", "脽": "ss", "膧": "A", "膫": "A", "膭": "A", "膩": "a", "膬": "a", "膮": "a", "膯": "C", "膱": "C", "膴": "C", "膶": "C", "膰": "c", "膲": "c", "膵": "c", "膷": "c", "膸": "D", "膼": "D", "膹": "d", "膽": "d", "膾": "E", "臄": "E", "臇": "E", "臉": "E", "臍": "E", "膿": "e", "臅": "e", "臈": "e", "臋": "e", "臎": "e", "臏": "G", "臑": "G", "臓": "G", "蘑": "G", "臐": "g", "臒": "g", "摹": "g", "模": "g", "膜": "H", "摩": "H", "磨": "h", "魔": "h", "抹": "I", "莫": "I", "默": "I", "漠": "I", "陌": "I", "末": "i", "墨": "i", "沫": "i", "寞": "i", "谋": "i", "拇": "J", "牡": "j", "亩": "K", "姆": "k", "母": "k", "墓": "L", "幕": "L", "慕": "L", "目": "L", "艁": "L", "暮": "l", "募": "l", "木": "l", "艀": "l", "艂": "l", "艃": "N", "艆": "N", "艊": "N", "艎": "N", "艅": "n", "艈": "n", "艌": "n", "艐": "n", "艑": "O", "艓": "O", "艕": "O", "艒": "o", "艔": "o", "艖": "o", "艛": "R", "艝": "R", "艠": "R", "艜": "r", "艞": "r", "艡": "r", "艢": "S", "艤": "S", "艦": "S", "艩": "S", "艣": "s", "艥": "s", "艧": "s", "拧": "s", "泞": "T", "扭": "T", "纽": "T", "牛": "t", "钮": "t", "脓": "t", "浓": "U", "弄": "U", "努": "U", "女": "U", "虐": "U", "挪": "U", "农": "u", "奴": "u", "怒": "u", "暖": "u", "疟": "u", "懦": "u", "糯": "W", "诺": "w", "哦": "Y", "欧": "y", "鸥": "Y", "殴": "Z", "呕": "Z", "沤": "Z", "藕": "z", "偶": "z", "啪": "z", "牟": "IJ", "某": "ij", "艗": "Oe", "艙": "oe", "艍": "'n", "趴": "s" }, en = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" }, tn = { "&amp;": "&", "&lt;": "<", "&gt;": ">", "&quot;": '"', "&#39;": "'" }, nn = { "\\": "\\", "'": "'", "\n": "n", "\r": "r", "\u2028": "u2028", "\u2029": "u2029" }, rn = parseFloat, on = parseInt, an = "object" == typeof e && e && e.Object === Object && e, sn = "object" == typeof self && self && self.Object === Object && self, cn = an || sn || Function("return this")(), ln = t && !t.nodeType && t, un = ln && "object" == typeof r && r && !r.nodeType && r, hn = un && un.exports === ln, fn = hn && an.process, dn = function () { try { var e = un && un.require && un.require("util").types; return e || fn && fn.binding && fn.binding("util") } catch (t) { } }(), pn = dn && dn.isArrayBuffer, vn = dn && dn.isDate, mn = dn && dn.isMap, gn = dn && dn.isRegExp, yn = dn && dn.isSet, bn = dn && dn.isTypedArray; function xn(e, t, n) { switch (n.length) { case 0: return e.call(t); case 1: return e.call(t, n[0]); case 2: return e.call(t, n[0], n[1]); case 3: return e.call(t, n[0], n[1], n[2]) }return e.apply(t, n) } function wn(e, t, n, r) { var i = -1, o = null == e ? 0 : e.length; while (++i < o) { var a = e[i]; t(r, a, n(a), e) } return r } function _n(e, t) { var n = -1, r = null == e ? 0 : e.length; while (++n < r) if (!1 === t(e[n], n, e)) break; return e } function Cn(e, t) { var n = null == e ? 0 : e.length; while (n--) if (!1 === t(e[n], n, e)) break; return e } function Mn(e, t) { var n = -1, r = null == e ? 0 : e.length; while (++n < r) if (!t(e[n], n, e)) return !1; return !0 } function On(e, t) { var n = -1, r = null == e ? 0 : e.length, i = 0, o = []; while (++n < r) { var a = e[n]; t(a, n, e) && (o[i++] = a) } return o } function kn(e, t) { var n = null == e ? 0 : e.length; return !!n && In(e, t, 0) > -1 } function Sn(e, t, n) { var r = -1, i = null == e ? 0 : e.length; while (++r < i) if (n(t, e[r])) return !0; return !1 } function Tn(e, t) { var n = -1, r = null == e ? 0 : e.length, i = Array(r); while (++n < r) i[n] = t(e[n], n, e); return i } function An(e, t) { var n = -1, r = t.length, i = e.length; while (++n < r) e[i + n] = t[n]; return e } function Ln(e, t, n, r) { var i = -1, o = null == e ? 0 : e.length; r && o && (n = e[++i]); while (++i < o) n = t(n, e[i], i, e); return n } function jn(e, t, n, r) { var i = null == e ? 0 : e.length; r && i && (n = e[--i]); while (i--) n = t(n, e[i], i, e); return n } function zn(e, t) { var n = -1, r = null == e ? 0 : e.length; while (++n < r) if (t(e[n], n, e)) return !0; return !1 } var En = Yn("length"); function Pn(e) { return e.split("") } function Dn(e) { return e.match($e) || [] } function Hn(e, t, n) { var r; return n(e, (function (e, n, i) { if (t(e, n, i)) return r = n, !1 })), r } function Vn(e, t, n, r) { var i = e.length, o = n + (r ? 1 : -1); while (r ? o-- : ++o < i) if (t(e[o], o, e)) return o; return -1 } function In(e, t, n) { return t === t ? pr(e, t, n) : Vn(e, Rn, n) } function Nn(e, t, n, r) { var i = n - 1, o = e.length; while (++i < o) if (r(e[i], t)) return i; return -1 } function Rn(e) { return e !== e } function Fn(e, t) { var n = null == e ? 0 : e.length; return n ? qn(e, t) / n : N } function Yn(e) { return function (t) { return null == t ? o : t[e] } } function $n(e) { return function (t) { return null == e ? o : e[t] } } function Bn(e, t, n, r, i) { return i(e, (function (e, i, o) { n = r ? (r = !1, e) : t(n, e, i, o) })), n } function Wn(e, t) { var n = e.length; e.sort(t); while (n--) e[n] = e[n].value; return e } function qn(e, t) { var n, r = -1, i = e.length; while (++r < i) { var a = t(e[r]); a !== o && (n = n === o ? a : n + a) } return n } function Un(e, t) { var n = -1, r = Array(e); while (++n < e) r[n] = t(n); return r } function Kn(e, t) { return Tn(t, (function (t) { return [t, e[t]] })) } function Gn(e) { return e ? e.slice(0, yr(e) + 1).replace(Ie, "") : e } function Xn(e) { return function (t) { return e(t) } } function Jn(e, t) { return Tn(t, (function (t) { return e[t] })) } function Qn(e, t) { return e.has(t) } function Zn(e, t) { var n = -1, r = e.length; while (++n < r && In(t, e[n], 0) > -1); return n } function er(e, t) { var n = e.length; while (n-- && In(t, e[n], 0) > -1); return n } function tr(e, t) { var n = e.length, r = 0; while (n--) e[n] === t && ++r; return r } var nr = $n(Zt), rr = $n(en); function ir(e) { return "\\" + nn[e] } function or(e, t) { return null == e ? o : e[t] } function ar(e) { return Ut.test(e) } function sr(e) { return Kt.test(e) } function cr(e) { var t, n = []; while (!(t = e.next()).done) n.push(t.value); return n } function lr(e) { var t = -1, n = Array(e.size); return e.forEach((function (e, r) { n[++t] = [r, e] })), n } function ur(e, t) { return function (n) { return e(t(n)) } } function hr(e, t) { var n = -1, r = e.length, i = 0, o = []; while (++n < r) { var a = e[n]; a !== t && a !== d || (e[n] = d, o[i++] = n) } return o } function fr(e) { var t = -1, n = Array(e.size); return e.forEach((function (e) { n[++t] = e })), n } function dr(e) { var t = -1, n = Array(e.size); return e.forEach((function (e) { n[++t] = [e, e] })), n } function pr(e, t, n) { var r = n - 1, i = e.length; while (++r < i) if (e[r] === t) return r; return -1 } function vr(e, t, n) { var r = n + 1; while (r--) if (e[r] === t) return r; return r } function mr(e) { return ar(e) ? xr(e) : En(e) } function gr(e) { return ar(e) ? wr(e) : Pn(e) } function yr(e) { var t = e.length; while (t-- && Ne.test(e.charAt(t))); return t } var br = $n(tn); function xr(e) { var t = Wt.lastIndex = 0; while (Wt.test(e)) ++t; return t } function wr(e) { return e.match(Wt) || [] } function _r(e) { return e.match(qt) || [] } var Cr = function e(t) { t = null == t ? cn : Mr.defaults(cn.Object(), t, Mr.pick(cn, Gt)); var n = t.Array, r = t.Date, i = t.Error, Ne = t.Function, $e = t.Math, nt = t.Object, rt = t.RegExp, it = t.String, ot = t.TypeError, at = n.prototype, st = Ne.prototype, ct = nt.prototype, lt = t["__core-js_shared__"], ut = st.toString, ht = ct.hasOwnProperty, ft = 0, dt = function () { var e = /[^.]+$/.exec(lt && lt.keys && lt.keys.IE_PROTO || ""); return e ? "Symbol(src)_1." + e : "" }(), pt = ct.toString, vt = ut.call(nt), mt = cn._, gt = rt("^" + ut.call(ht).replace(He, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), yt = hn ? t.Buffer : o, bt = t.Symbol, xt = t.Uint8Array, wt = yt ? yt.allocUnsafe : o, _t = ur(nt.getPrototypeOf, nt), Ct = nt.create, Mt = ct.propertyIsEnumerable, Ot = at.splice, kt = bt ? bt.isConcatSpreadable : o, St = bt ? bt.iterator : o, Tt = bt ? bt.toStringTag : o, At = function () { try { var e = Ua(nt, "defineProperty"); return e({}, "", {}), e } catch (t) { } }(), Lt = t.clearTimeout !== cn.clearTimeout && t.clearTimeout, jt = r && r.now !== cn.Date.now && r.now, zt = t.setTimeout !== cn.setTimeout && t.setTimeout, Et = $e.ceil, Pt = $e.floor, Dt = nt.getOwnPropertySymbols, Ht = yt ? yt.isBuffer : o, Vt = t.isFinite, It = at.join, Nt = ur(nt.keys, nt), Rt = $e.max, Ft = $e.min, Yt = r.now, Wt = t.parseInt, qt = $e.random, Ut = at.reverse, Kt = Ua(t, "DataView"), Zt = Ua(t, "Map"), en = Ua(t, "Promise"), tn = Ua(t, "Set"), nn = Ua(t, "WeakMap"), an = Ua(nt, "create"), sn = nn && new nn, ln = {}, un = zs(Kt), fn = zs(Zt), dn = zs(en), En = zs(tn), Pn = zs(nn), $n = bt ? bt.prototype : o, pr = $n ? $n.valueOf : o, xr = $n ? $n.toString : o; function wr(e) { if (Ou(e) && !cu(e) && !(e instanceof Sr)) { if (e instanceof kr) return e; if (ht.call(e, "__wrapped__")) return Ps(e) } return new kr(e) } var Cr = function () { function e() { } return function (t) { if (!Mu(t)) return {}; if (Ct) return Ct(t); e.prototype = t; var n = new e; return e.prototype = o, n } }(); function Or() { } function kr(e, t) { this.__wrapped__ = e, this.__actions__ = [], this.__chain__ = !!t, this.__index__ = 0, this.__values__ = o } function Sr(e) { this.__wrapped__ = e, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = R, this.__views__ = [] } function Tr() { var e = new Sr(this.__wrapped__); return e.__actions__ = ia(this.__actions__), e.__dir__ = this.__dir__, e.__filtered__ = this.__filtered__, e.__iteratees__ = ia(this.__iteratees__), e.__takeCount__ = this.__takeCount__, e.__views__ = ia(this.__views__), e } function Ar() { if (this.__filtered__) { var e = new Sr(this); e.__dir__ = -1, e.__filtered__ = !0 } else e = this.clone(), e.__dir__ *= -1; return e } function Lr() { var e = this.__wrapped__.value(), t = this.__dir__, n = cu(e), r = t < 0, i = n ? e.length : 0, o = Qa(0, i, this.__views__), a = o.start, s = o.end, c = s - a, l = r ? s : a - 1, u = this.__iteratees__, h = u.length, f = 0, d = Ft(c, this.__takeCount__); if (!n || !r && i == c && d == c) return No(e, this.__actions__); var p = []; e: while (c-- && f < d) { l += t; var v = -1, m = e[l]; while (++v < h) { var g = u[v], y = g.iteratee, b = g.type, x = y(m); if (b == P) m = x; else if (!x) { if (b == E) continue e; break e } } p[f++] = m } return p } function jr(e) { var t = -1, n = null == e ? 0 : e.length; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } function zr() { this.__data__ = an ? an(null) : {}, this.size = 0 } function Er(e) { var t = this.has(e) && delete this.__data__[e]; return this.size -= t ? 1 : 0, t } function Pr(e) { var t = this.__data__; if (an) { var n = t[e]; return n === h ? o : n } return ht.call(t, e) ? t[e] : o } function Dr(e) { var t = this.__data__; return an ? t[e] !== o : ht.call(t, e) } function Hr(e, t) { var n = this.__data__; return this.size += this.has(e) ? 0 : 1, n[e] = an && t === o ? h : t, this } function Vr(e) { var t = -1, n = null == e ? 0 : e.length; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } function Ir() { this.__data__ = [], this.size = 0 } function Nr(e) { var t = this.__data__, n = ui(t, e); if (n < 0) return !1; var r = t.length - 1; return n == r ? t.pop() : Ot.call(t, n, 1), --this.size, !0 } function Rr(e) { var t = this.__data__, n = ui(t, e); return n < 0 ? o : t[n][1] } function Fr(e) { return ui(this.__data__, e) > -1 } function Yr(e, t) { var n = this.__data__, r = ui(n, e); return r < 0 ? (++this.size, n.push([e, t])) : n[r][1] = t, this } function $r(e) { var t = -1, n = null == e ? 0 : e.length; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } function Br() { this.size = 0, this.__data__ = { hash: new jr, map: new (Zt || Vr), string: new jr } } function Wr(e) { var t = Wa(this, e)["delete"](e); return this.size -= t ? 1 : 0, t } function qr(e) { return Wa(this, e).get(e) } function Ur(e) { return Wa(this, e).has(e) } function Kr(e, t) { var n = Wa(this, e), r = n.size; return n.set(e, t), this.size += n.size == r ? 0 : 1, this } function Gr(e) { var t = -1, n = null == e ? 0 : e.length; this.__data__ = new $r; while (++t < n) this.add(e[t]) } function Xr(e) { return this.__data__.set(e, h), this } function Jr(e) { return this.__data__.has(e) } function Qr(e) { var t = this.__data__ = new Vr(e); this.size = t.size } function Zr() { this.__data__ = new Vr, this.size = 0 } function ei(e) { var t = this.__data__, n = t["delete"](e); return this.size = t.size, n } function ti(e) { return this.__data__.get(e) } function ni(e) { return this.__data__.has(e) } function ri(e, t) { var n = this.__data__; if (n instanceof Vr) { var r = n.__data__; if (!Zt || r.length < s - 1) return r.push([e, t]), this.size = ++n.size, this; n = this.__data__ = new $r(r) } return n.set(e, t), this.size = n.size, this } function ii(e, t) { var n = cu(e), r = !n && su(e), i = !n && !r && du(e), o = !n && !r && !i && Ru(e), a = n || r || i || o, s = a ? Un(e.length, it) : [], c = s.length; for (var l in e) !t && !ht.call(e, l) || a && ("length" == l || i && ("offset" == l || "parent" == l) || o && ("buffer" == l || "byteLength" == l || "byteOffset" == l) || as(l, c)) || s.push(l); return s } function oi(e) { var t = e.length; return t ? e[yo(0, t - 1)] : o } function ai(e, t) { return As(ia(e), mi(t, 0, e.length)) } function si(e) { return As(ia(e)) } function ci(e, t, n) { (n !== o && !iu(e[t], n) || n === o && !(t in e)) && pi(e, t, n) } function li(e, t, n) { var r = e[t]; ht.call(e, t) && iu(r, n) && (n !== o || t in e) || pi(e, t, n) } function ui(e, t) { var n = e.length; while (n--) if (iu(e[n][0], t)) return n; return -1 } function hi(e, t, n, r) { return _i(e, (function (e, i, o) { t(r, e, n(e), o) })), r } function fi(e, t) { return e && oa(t, _h(t), e) } function di(e, t) { return e && oa(t, Ch(t), e) } function pi(e, t, n) { "__proto__" == t && At ? At(e, t, { configurable: !0, enumerable: !0, value: n, writable: !0 }) : e[t] = n } function vi(e, t) { var r = -1, i = t.length, a = n(i), s = null == e; while (++r < i) a[r] = s ? o : mh(e, t[r]); return a } function mi(e, t, n) { return e === e && (n !== o && (e = e <= n ? e : n), t !== o && (e = e >= t ? e : t)), e } function gi(e, t, n, r, i, a) { var s, c = t & p, l = t & v, u = t & m; if (n && (s = i ? n(e, r, i, a) : n(e)), s !== o) return s; if (!Mu(e)) return e; var h = cu(e); if (h) { if (s = ts(e), !c) return ia(e, s) } else { var f = Ja(e), d = f == J || f == Q; if (du(e)) return Ko(e, c); if (f == ne || f == B || d && !i) { if (s = l || d ? {} : ns(e), !c) return l ? sa(e, di(s, e)) : aa(e, fi(s, e)) } else { if (!Qt[f]) return i ? e : {}; s = rs(e, f, c) } } a || (a = new Qr); var g = a.get(e); if (g) return g; a.set(e, s), Vu(e) ? e.forEach((function (r) { s.add(gi(r, t, n, r, e, a)) })) : ku(e) && e.forEach((function (r, i) { s.set(i, gi(r, t, n, i, e, a)) })); var y = u ? l ? Ra : Na : l ? Ch : _h, b = h ? o : y(e); return _n(b || e, (function (r, i) { b && (i = r, r = e[i]), li(s, i, gi(r, t, n, i, e, a)) })), s } function yi(e) { var t = _h(e); return function (n) { return bi(n, e, t) } } function bi(e, t, n) { var r = n.length; if (null == e) return !r; e = nt(e); while (r--) { var i = n[r], a = t[i], s = e[i]; if (s === o && !(i in e) || !a(s)) return !1 } return !0 } function xi(e, t, n) { if ("function" != typeof e) throw new ot(l); return Os((function () { e.apply(o, n) }), t) } function wi(e, t, n, r) { var i = -1, o = kn, a = !0, c = e.length, l = [], u = t.length; if (!c) return l; n && (t = Tn(t, Xn(n))), r ? (o = Sn, a = !1) : t.length >= s && (o = Qn, a = !1, t = new Gr(t)); e: while (++i < c) { var h = e[i], f = null == n ? h : n(h); if (h = r || 0 !== h ? h : 0, a && f === f) { var d = u; while (d--) if (t[d] === f) continue e; l.push(h) } else o(t, f, r) || l.push(h) } return l } wr.templateSettings = { escape: Le, evaluate: je, interpolate: ze, variable: "", imports: { _: wr } }, wr.prototype = Or.prototype, wr.prototype.constructor = wr, kr.prototype = Cr(Or.prototype), kr.prototype.constructor = kr, Sr.prototype = Cr(Or.prototype), Sr.prototype.constructor = Sr, jr.prototype.clear = zr, jr.prototype["delete"] = Er, jr.prototype.get = Pr, jr.prototype.has = Dr, jr.prototype.set = Hr, Vr.prototype.clear = Ir, Vr.prototype["delete"] = Nr, Vr.prototype.get = Rr, Vr.prototype.has = Fr, Vr.prototype.set = Yr, $r.prototype.clear = Br, $r.prototype["delete"] = Wr, $r.prototype.get = qr, $r.prototype.has = Ur, $r.prototype.set = Kr, Gr.prototype.add = Gr.prototype.push = Xr, Gr.prototype.has = Jr, Qr.prototype.clear = Zr, Qr.prototype["delete"] = ei, Qr.prototype.get = ti, Qr.prototype.has = ni, Qr.prototype.set = ri; var _i = ua(ji), Ci = ua(zi, !0); function Mi(e, t) { var n = !0; return _i(e, (function (e, r, i) { return n = !!t(e, r, i), n })), n } function Oi(e, t, n) { var r = -1, i = e.length; while (++r < i) { var a = e[r], s = t(a); if (null != s && (c === o ? s === s && !Nu(s) : n(s, c))) var c = s, l = a } return l } function ki(e, t, n, r) { var i = e.length; n = Ku(n), n < 0 && (n = -n > i ? 0 : i + n), r = r === o || r > i ? i : Ku(r), r < 0 && (r += i), r = n > r ? 0 : Gu(r); while (n < r) e[n++] = t; return e } function Si(e, t) { var n = []; return _i(e, (function (e, r, i) { t(e, r, i) && n.push(e) })), n } function Ti(e, t, n, r, i) { var o = -1, a = e.length; n || (n = os), i || (i = []); while (++o < a) { var s = e[o]; t > 0 && n(s) ? t > 1 ? Ti(s, t - 1, n, r, i) : An(i, s) : r || (i[i.length] = s) } return i } var Ai = ha(), Li = ha(!0); function ji(e, t) { return e && Ai(e, t, _h) } function zi(e, t) { return e && Li(e, t, _h) } function Ei(e, t) { return On(t, (function (t) { return wu(e[t]) })) } function Pi(e, t) { t = Bo(t, e); var n = 0, r = t.length; while (null != e && n < r) e = e[js(t[n++])]; return n && n == r ? e : o } function Di(e, t, n) { var r = t(e); return cu(e) ? r : An(r, n(e)) } function Hi(e) { return null == e ? e === o ? le : te : Tt && Tt in nt(e) ? Ka(e) : bs(e) } function Vi(e, t) { return e > t } function Ii(e, t) { return null != e && ht.call(e, t) } function Ni(e, t) { return null != e && t in nt(e) } function Ri(e, t, n) { return e >= Ft(t, n) && e < Rt(t, n) } function Fi(e, t, r) { var i = r ? Sn : kn, a = e[0].length, s = e.length, c = s, l = n(s), u = 1 / 0, h = []; while (c--) { var f = e[c]; c && t && (f = Tn(f, Xn(t))), u = Ft(f.length, u), l[c] = !r && (t || a >= 120 && f.length >= 120) ? new Gr(c && f) : o } f = e[0]; var d = -1, p = l[0]; e: while (++d < a && h.length < u) { var v = f[d], m = t ? t(v) : v; if (v = r || 0 !== v ? v : 0, !(p ? Qn(p, m) : i(h, m, r))) { c = s; while (--c) { var g = l[c]; if (!(g ? Qn(g, m) : i(e[c], m, r))) continue e } p && p.push(m), h.push(v) } } return h } function Yi(e, t, n, r) { return ji(e, (function (e, i, o) { t(r, n(e), i, o) })), r } function $i(e, t, n) { t = Bo(t, e), e = ws(e, t); var r = null == e ? e : e[js(oc(t))]; return null == r ? o : xn(r, e, n) } function Bi(e) { return Ou(e) && Hi(e) == B } function Wi(e) { return Ou(e) && Hi(e) == fe } function qi(e) { return Ou(e) && Hi(e) == K } function Ui(e, t, n, r, i) { return e === t || (null == e || null == t || !Ou(e) && !Ou(t) ? e !== e && t !== t : Ki(e, t, n, r, Ui, i)) } function Ki(e, t, n, r, i, o) { var a = cu(e), s = cu(t), c = a ? W : Ja(e), l = s ? W : Ja(t); c = c == B ? ne : c, l = l == B ? ne : l; var u = c == ne, h = l == ne, f = c == l; if (f && du(e)) { if (!du(t)) return !1; a = !0, u = !1 } if (f && !u) return o || (o = new Qr), a || Ru(e) ? Da(e, t, n, r, i, o) : Ha(e, t, c, n, r, i, o); if (!(n & g)) { var d = u && ht.call(e, "__wrapped__"), p = h && ht.call(t, "__wrapped__"); if (d || p) { var v = d ? e.value() : e, m = p ? t.value() : t; return o || (o = new Qr), i(v, m, n, r, o) } } return !!f && (o || (o = new Qr), Va(e, t, n, r, i, o)) } function Gi(e) { return Ou(e) && Ja(e) == Z } function Xi(e, t, n, r) { var i = n.length, a = i, s = !r; if (null == e) return !a; e = nt(e); while (i--) { var c = n[i]; if (s && c[2] ? c[1] !== e[c[0]] : !(c[0] in e)) return !1 } while (++i < a) { c = n[i]; var l = c[0], u = e[l], h = c[1]; if (s && c[2]) { if (u === o && !(l in e)) return !1 } else { var f = new Qr; if (r) var d = r(u, h, l, e, t, f); if (!(d === o ? Ui(h, u, g | y, r, f) : d)) return !1 } } return !0 } function Ji(e) { if (!Mu(e) || hs(e)) return !1; var t = wu(e) ? gt : Xe; return t.test(zs(e)) } function Qi(e) { return Ou(e) && Hi(e) == oe } function Zi(e) { return Ou(e) && Ja(e) == ae } function eo(e) { return Ou(e) && Cu(e.length) && !!Jt[Hi(e)] } function to(e) { return "function" == typeof e ? e : null == e ? jf : "object" == typeof e ? cu(e) ? so(e[0], e[1]) : ao(e) : Bf(e) } function no(e) { if (!ds(e)) return Nt(e); var t = []; for (var n in nt(e)) ht.call(e, n) && "constructor" != n && t.push(n); return t } function ro(e) { if (!Mu(e)) return ys(e); var t = ds(e), n = []; for (var r in e) ("constructor" != r || !t && ht.call(e, r)) && n.push(r); return n } function io(e, t) { return e < t } function oo(e, t) { var r = -1, i = uu(e) ? n(e.length) : []; return _i(e, (function (e, n, o) { i[++r] = t(e, n, o) })), i } function ao(e) { var t = qa(e); return 1 == t.length && t[0][2] ? vs(t[0][0], t[0][1]) : function (n) { return n === e || Xi(n, e, t) } } function so(e, t) { return cs(e) && ps(t) ? vs(js(e), t) : function (n) { var r = mh(n, e); return r === o && r === t ? yh(n, e) : Ui(t, r, g | y) } } function co(e, t, n, r, i) { e !== t && Ai(t, (function (a, s) { if (i || (i = new Qr), Mu(a)) lo(e, t, s, n, co, r, i); else { var c = r ? r(Cs(e, s), a, s + "", e, t, i) : o; c === o && (c = a), ci(e, s, c) } }), Ch) } function lo(e, t, n, r, i, a, s) { var c = Cs(e, n), l = Cs(t, n), u = s.get(l); if (u) ci(e, n, u); else { var h = a ? a(c, l, n + "", e, t, s) : o, f = h === o; if (f) { var d = cu(l), p = !d && du(l), v = !d && !p && Ru(l); h = l, d || p || v ? cu(c) ? h = c : hu(c) ? h = ia(c) : p ? (f = !1, h = Ko(l, !0)) : v ? (f = !1, h = Zo(l, !0)) : h = [] : Pu(l) || su(l) ? (h = c, su(c) ? h = Ju(c) : Mu(c) && !wu(c) || (h = ns(l))) : f = !1 } f && (s.set(l, h), i(h, l, r, a, s), s["delete"](l)), ci(e, n, h) } } function uo(e, t) { var n = e.length; if (n) return t += t < 0 ? n : 0, as(t, n) ? e[t] : o } function ho(e, t, n) { t = t.length ? Tn(t, (function (e) { return cu(e) ? function (t) { return Pi(t, 1 === e.length ? e[0] : e) } : e })) : [jf]; var r = -1; t = Tn(t, Xn(Ba())); var i = oo(e, (function (e, n, i) { var o = Tn(t, (function (t) { return t(e) })); return { criteria: o, index: ++r, value: e } })); return Wn(i, (function (e, t) { return ta(e, t, n) })) } function fo(e, t) { return po(e, t, (function (t, n) { return yh(e, n) })) } function po(e, t, n) { var r = -1, i = t.length, o = {}; while (++r < i) { var a = t[r], s = Pi(e, a); n(s, a) && Mo(o, Bo(a, e), s) } return o } function vo(e) { return function (t) { return Pi(t, e) } } function mo(e, t, n, r) { var i = r ? Nn : In, o = -1, a = t.length, s = e; e === t && (t = ia(t)), n && (s = Tn(e, Xn(n))); while (++o < a) { var c = 0, l = t[o], u = n ? n(l) : l; while ((c = i(s, u, c, r)) > -1) s !== e && Ot.call(s, c, 1), Ot.call(e, c, 1) } return e } function go(e, t) { var n = e ? t.length : 0, r = n - 1; while (n--) { var i = t[n]; if (n == r || i !== o) { var o = i; as(i) ? Ot.call(e, i, 1) : Ho(e, i) } } return e } function yo(e, t) { return e + Pt(qt() * (t - e + 1)) } function bo(e, t, r, i) { var o = -1, a = Rt(Et((t - e) / (r || 1)), 0), s = n(a); while (a--) s[i ? a : ++o] = e, e += r; return s } function xo(e, t) { var n = ""; if (!e || t < 1 || t > V) return n; do { t % 2 && (n += e), t = Pt(t / 2), t && (e += e) } while (t); return n } function wo(e, t) { return ks(xs(e, t, jf), e + "") } function _o(e) { return oi(Fh(e)) } function Co(e, t) { var n = Fh(e); return As(n, mi(t, 0, n.length)) } function Mo(e, t, n, r) { if (!Mu(e)) return e; t = Bo(t, e); var i = -1, a = t.length, s = a - 1, c = e; while (null != c && ++i < a) { var l = js(t[i]), u = n; if ("__proto__" === l || "constructor" === l || "prototype" === l) return e; if (i != s) { var h = c[l]; u = r ? r(h, l, c) : o, u === o && (u = Mu(h) ? h : as(t[i + 1]) ? [] : {}) } li(c, l, u), c = c[l] } return e } var Oo = sn ? function (e, t) { return sn.set(e, t), e } : jf, ko = At ? function (e, t) { return At(e, "toString", { configurable: !0, enumerable: !1, value: Sf(t), writable: !0 }) } : jf; function So(e) { return As(Fh(e)) } function To(e, t, r) { var i = -1, o = e.length; t < 0 && (t = -t > o ? 0 : o + t), r = r > o ? o : r, r < 0 && (r += o), o = t > r ? 0 : r - t >>> 0, t >>>= 0; var a = n(o); while (++i < o) a[i] = e[i + t]; return a } function Ao(e, t) { var n; return _i(e, (function (e, r, i) { return n = t(e, r, i), !n })), !!n } function Lo(e, t, n) { var r = 0, i = null == e ? r : e.length; if ("number" == typeof t && t === t && i <= Y) { while (r < i) { var o = r + i >>> 1, a = e[o]; null !== a && !Nu(a) && (n ? a <= t : a < t) ? r = o + 1 : i = o } return i } return jo(e, t, jf, n) } function jo(e, t, n, r) { var i = 0, a = null == e ? 0 : e.length; if (0 === a) return 0; t = n(t); var s = t !== t, c = null === t, l = Nu(t), u = t === o; while (i < a) { var h = Pt((i + a) / 2), f = n(e[h]), d = f !== o, p = null === f, v = f === f, m = Nu(f); if (s) var g = r || v; else g = u ? v && (r || d) : c ? v && d && (r || !p) : l ? v && d && !p && (r || !m) : !p && !m && (r ? f <= t : f < t); g ? i = h + 1 : a = h } return Ft(a, F) } function zo(e, t) { var n = -1, r = e.length, i = 0, o = []; while (++n < r) { var a = e[n], s = t ? t(a) : a; if (!n || !iu(s, c)) { var c = s; o[i++] = 0 === a ? 0 : a } } return o } function Eo(e) { return "number" == typeof e ? e : Nu(e) ? N : +e } function Po(e) { if ("string" == typeof e) return e; if (cu(e)) return Tn(e, Po) + ""; if (Nu(e)) return xr ? xr.call(e) : ""; var t = e + ""; return "0" == t && 1 / e == -H ? "-0" : t } function Do(e, t, n) { var r = -1, i = kn, o = e.length, a = !0, c = [], l = c; if (n) a = !1, i = Sn; else if (o >= s) { var u = t ? null : Aa(e); if (u) return fr(u); a = !1, i = Qn, l = new Gr } else l = t ? [] : c; e: while (++r < o) { var h = e[r], f = t ? t(h) : h; if (h = n || 0 !== h ? h : 0, a && f === f) { var d = l.length; while (d--) if (l[d] === f) continue e; t && l.push(f), c.push(h) } else i(l, f, n) || (l !== c && l.push(f), c.push(h)) } return c } function Ho(e, t) { return t = Bo(t, e), e = ws(e, t), null == e || delete e[js(oc(t))] } function Vo(e, t, n, r) { return Mo(e, t, n(Pi(e, t)), r) } function Io(e, t, n, r) { var i = e.length, o = r ? i : -1; while ((r ? o-- : ++o < i) && t(e[o], o, e)); return n ? To(e, r ? 0 : o, r ? o + 1 : i) : To(e, r ? o + 1 : 0, r ? i : o) } function No(e, t) { var n = e; return n instanceof Sr && (n = n.value()), Ln(t, (function (e, t) { return t.func.apply(t.thisArg, An([e], t.args)) }), n) } function Ro(e, t, r) { var i = e.length; if (i < 2) return i ? Do(e[0]) : []; var o = -1, a = n(i); while (++o < i) { var s = e[o], c = -1; while (++c < i) c != o && (a[o] = wi(a[o] || s, e[c], t, r)) } return Do(Ti(a, 1), t, r) } function Fo(e, t, n) { var r = -1, i = e.length, a = t.length, s = {}; while (++r < i) { var c = r < a ? t[r] : o; n(s, e[r], c) } return s } function Yo(e) { return hu(e) ? e : [] } function $o(e) { return "function" == typeof e ? e : jf } function Bo(e, t) { return cu(e) ? e : cs(e, t) ? [e] : Ls(Zu(e)) } var Wo = wo; function qo(e, t, n) { var r = e.length; return n = n === o ? r : n, !t && n >= r ? e : To(e, t, n) } var Uo = Lt || function (e) { return cn.clearTimeout(e) }; function Ko(e, t) { if (t) return e.slice(); var n = e.length, r = wt ? wt(n) : new e.constructor(n); return e.copy(r), r } function Go(e) { var t = new e.constructor(e.byteLength); return new xt(t).set(new xt(e)), t } function Xo(e, t) { var n = t ? Go(e.buffer) : e.buffer; return new e.constructor(n, e.byteOffset, e.byteLength) } function Jo(e) { var t = new e.constructor(e.source, Ue.exec(e)); return t.lastIndex = e.lastIndex, t } function Qo(e) { return pr ? nt(pr.call(e)) : {} } function Zo(e, t) { var n = t ? Go(e.buffer) : e.buffer; return new e.constructor(n, e.byteOffset, e.length) } function ea(e, t) { if (e !== t) { var n = e !== o, r = null === e, i = e === e, a = Nu(e), s = t !== o, c = null === t, l = t === t, u = Nu(t); if (!c && !u && !a && e > t || a && s && l && !c && !u || r && s && l || !n && l || !i) return 1; if (!r && !a && !u && e < t || u && n && i && !r && !a || c && n && i || !s && i || !l) return -1 } return 0 } function ta(e, t, n) { var r = -1, i = e.criteria, o = t.criteria, a = i.length, s = n.length; while (++r < a) { var c = ea(i[r], o[r]); if (c) { if (r >= s) return c; var l = n[r]; return c * ("desc" == l ? -1 : 1) } } return e.index - t.index } function na(e, t, r, i) { var o = -1, a = e.length, s = r.length, c = -1, l = t.length, u = Rt(a - s, 0), h = n(l + u), f = !i; while (++c < l) h[c] = t[c]; while (++o < s) (f || o < a) && (h[r[o]] = e[o]); while (u--) h[c++] = e[o++]; return h } function ra(e, t, r, i) { var o = -1, a = e.length, s = -1, c = r.length, l = -1, u = t.length, h = Rt(a - c, 0), f = n(h + u), d = !i; while (++o < h) f[o] = e[o]; var p = o; while (++l < u) f[p + l] = t[l]; while (++s < c) (d || o < a) && (f[p + r[s]] = e[o++]); return f } function ia(e, t) { var r = -1, i = e.length; t || (t = n(i)); while (++r < i) t[r] = e[r]; return t } function oa(e, t, n, r) { var i = !n; n || (n = {}); var a = -1, s = t.length; while (++a < s) { var c = t[a], l = r ? r(n[c], e[c], c, n, e) : o; l === o && (l = e[c]), i ? pi(n, c, l) : li(n, c, l) } return n } function aa(e, t) { return oa(e, Ga(e), t) } function sa(e, t) { return oa(e, Xa(e), t) } function ca(e, t) { return function (n, r) { var i = cu(n) ? wn : hi, o = t ? t() : {}; return i(n, e, Ba(r, 2), o) } } function la(e) { return wo((function (t, n) { var r = -1, i = n.length, a = i > 1 ? n[i - 1] : o, s = i > 2 ? n[2] : o; a = e.length > 3 && "function" == typeof a ? (i--, a) : o, s && ss(n[0], n[1], s) && (a = i < 3 ? o : a, i = 1), t = nt(t); while (++r < i) { var c = n[r]; c && e(t, c, r, a) } return t })) } function ua(e, t) { return function (n, r) { if (null == n) return n; if (!uu(n)) return e(n, r); var i = n.length, o = t ? i : -1, a = nt(n); while (t ? o-- : ++o < i) if (!1 === r(a[o], o, a)) break; return n } } function ha(e) { return function (t, n, r) { var i = -1, o = nt(t), a = r(t), s = a.length; while (s--) { var c = a[e ? s : ++i]; if (!1 === n(o[c], c, o)) break } return t } } function fa(e, t, n) { var r = t & b, i = va(e); function o() { var t = this && this !== cn && this instanceof o ? i : e; return t.apply(r ? n : this, arguments) } return o } function da(e) { return function (t) { t = Zu(t); var n = ar(t) ? gr(t) : o, r = n ? n[0] : t.charAt(0), i = n ? qo(n, 1).join("") : t.slice(1); return r[e]() + i } } function pa(e) { return function (t) { return Ln(_f(Kh(t).replace($t, "")), e, "") } } function va(e) { return function () { var t = arguments; switch (t.length) { case 0: return new e; case 1: return new e(t[0]); case 2: return new e(t[0], t[1]); case 3: return new e(t[0], t[1], t[2]); case 4: return new e(t[0], t[1], t[2], t[3]); case 5: return new e(t[0], t[1], t[2], t[3], t[4]); case 6: return new e(t[0], t[1], t[2], t[3], t[4], t[5]); case 7: return new e(t[0], t[1], t[2], t[3], t[4], t[5], t[6]) }var n = Cr(e.prototype), r = e.apply(n, t); return Mu(r) ? r : n } } function ma(e, t, r) { var i = va(e); function a() { var s = arguments.length, c = n(s), l = s, u = $a(a); while (l--) c[l] = arguments[l]; var h = s < 3 && c[0] !== u && c[s - 1] !== u ? [] : hr(c, u); if (s -= h.length, s < r) return Sa(e, t, ba, a.placeholder, o, c, h, o, o, r - s); var f = this && this !== cn && this instanceof a ? i : e; return xn(f, this, c) } return a } function ga(e) { return function (t, n, r) { var i = nt(t); if (!uu(t)) { var a = Ba(n, 3); t = _h(t), n = function (e) { return a(i[e], e, i) } } var s = e(t, n, r); return s > -1 ? i[a ? t[s] : s] : o } } function ya(e) { return Ia((function (t) { var n = t.length, r = n, i = kr.prototype.thru; e && t.reverse(); while (r--) { var a = t[r]; if ("function" != typeof a) throw new ot(l); if (i && !s && "wrapper" == Ya(a)) var s = new kr([], !0) } r = s ? r : n; while (++r < n) { a = t[r]; var c = Ya(a), u = "wrapper" == c ? Fa(a) : o; s = u && us(u[0]) && u[1] == (k | _ | M | S) && !u[4].length && 1 == u[9] ? s[Ya(u[0])].apply(s, u[3]) : 1 == a.length && us(a) ? s[c]() : s.thru(a) } return function () { var e = arguments, r = e[0]; if (s && 1 == e.length && cu(r)) return s.plant(r).value(); var i = 0, o = n ? t[i].apply(this, e) : r; while (++i < n) o = t[i].call(this, o); return o } })) } function ba(e, t, r, i, a, s, c, l, u, h) { var f = t & k, d = t & b, p = t & x, v = t & (_ | C), m = t & T, g = p ? o : va(e); function y() { var o = arguments.length, b = n(o), x = o; while (x--) b[x] = arguments[x]; if (v) var w = $a(y), _ = tr(b, w); if (i && (b = na(b, i, a, v)), s && (b = ra(b, s, c, v)), o -= _, v && o < h) { var C = hr(b, w); return Sa(e, t, ba, y.placeholder, r, b, C, l, u, h - o) } var M = d ? r : this, O = p ? M[e] : e; return o = b.length, l ? b = _s(b, l) : m && o > 1 && b.reverse(), f && u < o && (b.length = u), this && this !== cn && this instanceof y && (O = g || va(O)), O.apply(M, b) } return y } function xa(e, t) { return function (n, r) { return Yi(n, e, t(r), {}) } } function wa(e, t) { return function (n, r) { var i; if (n === o && r === o) return t; if (n !== o && (i = n), r !== o) { if (i === o) return r; "string" == typeof n || "string" == typeof r ? (n = Po(n), r = Po(r)) : (n = Eo(n), r = Eo(r)), i = e(n, r) } return i } } function _a(e) { return Ia((function (t) { return t = Tn(t, Xn(Ba())), wo((function (n) { var r = this; return e(t, (function (e) { return xn(e, r, n) })) })) })) } function Ca(e, t) { t = t === o ? " " : Po(t); var n = t.length; if (n < 2) return n ? xo(t, e) : t; var r = xo(t, Et(e / mr(t))); return ar(t) ? qo(gr(r), 0, e).join("") : r.slice(0, e) } function Ma(e, t, r, i) { var o = t & b, a = va(e); function s() { var t = -1, c = arguments.length, l = -1, u = i.length, h = n(u + c), f = this && this !== cn && this instanceof s ? a : e; while (++l < u) h[l] = i[l]; while (c--) h[l++] = arguments[++t]; return xn(f, o ? r : this, h) } return s } function Oa(e) { return function (t, n, r) { return r && "number" != typeof r && ss(t, n, r) && (n = r = o), t = Uu(t), n === o ? (n = t, t = 0) : n = Uu(n), r = r === o ? t < n ? 1 : -1 : Uu(r), bo(t, n, r, e) } } function ka(e) { return function (t, n) { return "string" == typeof t && "string" == typeof n || (t = Xu(t), n = Xu(n)), e(t, n) } } function Sa(e, t, n, r, i, a, s, c, l, u) { var h = t & _, f = h ? s : o, d = h ? o : s, p = h ? a : o, v = h ? o : a; t |= h ? M : O, t &= ~(h ? O : M), t & w || (t &= ~(b | x)); var m = [e, t, i, p, f, v, d, c, l, u], g = n.apply(o, m); return us(e) && Ms(g, m), g.placeholder = r, Ss(g, e, t) } function Ta(e) { var t = $e[e]; return function (e, n) { if (e = Xu(e), n = null == n ? 0 : Ft(Ku(n), 292), n && Vt(e)) { var r = (Zu(e) + "e").split("e"), i = t(r[0] + "e" + (+r[1] + n)); return r = (Zu(i) + "e").split("e"), +(r[0] + "e" + (+r[1] - n)) } return t(e) } } var Aa = tn && 1 / fr(new tn([, -0]))[1] == H ? function (e) { return new tn(e) } : Nf; function La(e) { return function (t) { var n = Ja(t); return n == Z ? lr(t) : n == ae ? dr(t) : Kn(t, e(t)) } } function ja(e, t, n, r, i, a, s, c) { var u = t & x; if (!u && "function" != typeof e) throw new ot(l); var h = r ? r.length : 0; if (h || (t &= ~(M | O), r = i = o), s = s === o ? s : Rt(Ku(s), 0), c = c === o ? c : Ku(c), h -= i ? i.length : 0, t & O) { var f = r, d = i; r = i = o } var p = u ? o : Fa(e), v = [e, t, n, r, i, f, d, a, s, c]; if (p && gs(v, p), e = v[0], t = v[1], n = v[2], r = v[3], i = v[4], c = v[9] = v[9] === o ? u ? 0 : e.length : Rt(v[9] - h, 0), !c && t & (_ | C) && (t &= ~(_ | C)), t && t != b) m = t == _ || t == C ? ma(e, t, c) : t != M && t != (b | M) || i.length ? ba.apply(o, v) : Ma(e, t, n, r); else var m = fa(e, t, n); var g = p ? Oo : Ms; return Ss(g(m, v), e, t) } function za(e, t, n, r) { return e === o || iu(e, ct[n]) && !ht.call(r, n) ? t : e } function Ea(e, t, n, r, i, a) { return Mu(e) && Mu(t) && (a.set(t, e), co(e, t, o, Ea, a), a["delete"](t)), e } function Pa(e) { return Pu(e) ? o : e } function Da(e, t, n, r, i, a) { var s = n & g, c = e.length, l = t.length; if (c != l && !(s && l > c)) return !1; var u = a.get(e), h = a.get(t); if (u && h) return u == t && h == e; var f = -1, d = !0, p = n & y ? new Gr : o; a.set(e, t), a.set(t, e); while (++f < c) { var v = e[f], m = t[f]; if (r) var b = s ? r(m, v, f, t, e, a) : r(v, m, f, e, t, a); if (b !== o) { if (b) continue; d = !1; break } if (p) { if (!zn(t, (function (e, t) { if (!Qn(p, t) && (v === e || i(v, e, n, r, a))) return p.push(t) }))) { d = !1; break } } else if (v !== m && !i(v, m, n, r, a)) { d = !1; break } } return a["delete"](e), a["delete"](t), d } function Ha(e, t, n, r, i, o, a) { switch (n) { case de: if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1; e = e.buffer, t = t.buffer; case fe: return !(e.byteLength != t.byteLength || !o(new xt(e), new xt(t))); case U: case K: case ee: return iu(+e, +t); case X: return e.name == t.name && e.message == t.message; case oe: case se: return e == t + ""; case Z: var s = lr; case ae: var c = r & g; if (s || (s = fr), e.size != t.size && !c) return !1; var l = a.get(e); if (l) return l == t; r |= y, a.set(e, t); var u = Da(s(e), s(t), r, i, o, a); return a["delete"](e), u; case ce: if (pr) return pr.call(e) == pr.call(t) }return !1 } function Va(e, t, n, r, i, a) { var s = n & g, c = Na(e), l = c.length, u = Na(t), h = u.length; if (l != h && !s) return !1; var f = l; while (f--) { var d = c[f]; if (!(s ? d in t : ht.call(t, d))) return !1 } var p = a.get(e), v = a.get(t); if (p && v) return p == t && v == e; var m = !0; a.set(e, t), a.set(t, e); var y = s; while (++f < l) { d = c[f]; var b = e[d], x = t[d]; if (r) var w = s ? r(x, b, d, t, e, a) : r(b, x, d, e, t, a); if (!(w === o ? b === x || i(b, x, n, r, a) : w)) { m = !1; break } y || (y = "constructor" == d) } if (m && !y) { var _ = e.constructor, C = t.constructor; _ == C || !("constructor" in e) || !("constructor" in t) || "function" == typeof _ && _ instanceof _ && "function" == typeof C && C instanceof C || (m = !1) } return a["delete"](e), a["delete"](t), m } function Ia(e) { return ks(xs(e, o, Ks), e + "") } function Na(e) { return Di(e, _h, Ga) } function Ra(e) { return Di(e, Ch, Xa) } var Fa = sn ? function (e) { return sn.get(e) } : Nf; function Ya(e) { var t = e.name + "", n = ln[t], r = ht.call(ln, t) ? n.length : 0; while (r--) { var i = n[r], o = i.func; if (null == o || o == e) return i.name } return t } function $a(e) { var t = ht.call(wr, "placeholder") ? wr : e; return t.placeholder } function Ba() { var e = wr.iteratee || zf; return e = e === zf ? to : e, arguments.length ? e(arguments[0], arguments[1]) : e } function Wa(e, t) { var n = e.__data__; return ls(t) ? n["string" == typeof t ? "string" : "hash"] : n.map } function qa(e) { var t = _h(e), n = t.length; while (n--) { var r = t[n], i = e[r]; t[n] = [r, i, ps(i)] } return t } function Ua(e, t) { var n = or(e, t); return Ji(n) ? n : o } function Ka(e) { var t = ht.call(e, Tt), n = e[Tt]; try { e[Tt] = o; var r = !0 } catch (a) { } var i = pt.call(e); return r && (t ? e[Tt] = n : delete e[Tt]), i } var Ga = Dt ? function (e) { return null == e ? [] : (e = nt(e), On(Dt(e), (function (t) { return Mt.call(e, t) }))) } : Kf, Xa = Dt ? function (e) { var t = []; while (e) An(t, Ga(e)), e = _t(e); return t } : Kf, Ja = Hi; function Qa(e, t, n) { var r = -1, i = n.length; while (++r < i) { var o = n[r], a = o.size; switch (o.type) { case "drop": e += a; break; case "dropRight": t -= a; break; case "take": t = Ft(t, e + a); break; case "takeRight": e = Rt(e, t - a); break } } return { start: e, end: t } } function Za(e) { var t = e.match(Fe); return t ? t[1].split(Ye) : [] } function es(e, t, n) { t = Bo(t, e); var r = -1, i = t.length, o = !1; while (++r < i) { var a = js(t[r]); if (!(o = null != e && n(e, a))) break; e = e[a] } return o || ++r != i ? o : (i = null == e ? 0 : e.length, !!i && Cu(i) && as(a, i) && (cu(e) || su(e))) } function ts(e) { var t = e.length, n = new e.constructor(t); return t && "string" == typeof e[0] && ht.call(e, "index") && (n.index = e.index, n.input = e.input), n } function ns(e) { return "function" != typeof e.constructor || ds(e) ? {} : Cr(_t(e)) } function rs(e, t, n) { var r = e.constructor; switch (t) { case fe: return Go(e); case U: case K: return new r(+e); case de: return Xo(e, n); case pe: case ve: case me: case ge: case ye: case be: case xe: case we: case _e: return Zo(e, n); case Z: return new r; case ee: case se: return new r(e); case oe: return Jo(e); case ae: return new r; case ce: return Qo(e) } } function is(e, t) { var n = t.length; if (!n) return e; var r = n - 1; return t[r] = (n > 1 ? "& " : "") + t[r], t = t.join(n > 2 ? ", " : " "), e.replace(Re, "{\n/* [wrapped with " + t + "] */\n") } function os(e) { return cu(e) || su(e) || !!(kt && e && e[kt]) } function as(e, t) { var n = typeof e; return t = null == t ? V : t, !!t && ("number" == n || "symbol" != n && Qe.test(e)) && e > -1 && e % 1 == 0 && e < t } function ss(e, t, n) { if (!Mu(n)) return !1; var r = typeof t; return !!("number" == r ? uu(n) && as(t, n.length) : "string" == r && t in n) && iu(n[t], e) } function cs(e, t) { if (cu(e)) return !1; var n = typeof e; return !("number" != n && "symbol" != n && "boolean" != n && null != e && !Nu(e)) || (Pe.test(e) || !Ee.test(e) || null != t && e in nt(t)) } function ls(e) { var t = typeof e; return "string" == t || "number" == t || "symbol" == t || "boolean" == t ? "__proto__" !== e : null === e } function us(e) { var t = Ya(e), n = wr[t]; if ("function" != typeof n || !(t in Sr.prototype)) return !1; if (e === n) return !0; var r = Fa(n); return !!r && e === r[0] } function hs(e) { return !!dt && dt in e } (Kt && Ja(new Kt(new ArrayBuffer(1))) != de || Zt && Ja(new Zt) != Z || en && Ja(en.resolve()) != re || tn && Ja(new tn) != ae || nn && Ja(new nn) != ue) && (Ja = function (e) { var t = Hi(e), n = t == ne ? e.constructor : o, r = n ? zs(n) : ""; if (r) switch (r) { case un: return de; case fn: return Z; case dn: return re; case En: return ae; case Pn: return ue }return t }); var fs = lt ? wu : Gf; function ds(e) { var t = e && e.constructor, n = "function" == typeof t && t.prototype || ct; return e === n } function ps(e) { return e === e && !Mu(e) } function vs(e, t) { return function (n) { return null != n && (n[e] === t && (t !== o || e in nt(n))) } } function ms(e) { var t = Rl(e, (function (e) { return n.size === f && n.clear(), e })), n = t.cache; return t } function gs(e, t) { var n = e[1], r = t[1], i = n | r, o = i < (b | x | k), a = r == k && n == _ || r == k && n == S && e[7].length <= t[8] || r == (k | S) && t[7].length <= t[8] && n == _; if (!o && !a) return e; r & b && (e[2] = t[2], i |= n & b ? 0 : w); var s = t[3]; if (s) { var c = e[3]; e[3] = c ? na(c, s, t[4]) : s, e[4] = c ? hr(e[3], d) : t[4] } return s = t[5], s && (c = e[5], e[5] = c ? ra(c, s, t[6]) : s, e[6] = c ? hr(e[5], d) : t[6]), s = t[7], s && (e[7] = s), r & k && (e[8] = null == e[8] ? t[8] : Ft(e[8], t[8])), null == e[9] && (e[9] = t[9]), e[0] = t[0], e[1] = i, e } function ys(e) { var t = []; if (null != e) for (var n in nt(e)) t.push(n); return t } function bs(e) { return pt.call(e) } function xs(e, t, r) { return t = Rt(t === o ? e.length - 1 : t, 0), function () { var i = arguments, o = -1, a = Rt(i.length - t, 0), s = n(a); while (++o < a) s[o] = i[t + o]; o = -1; var c = n(t + 1); while (++o < t) c[o] = i[o]; return c[t] = r(s), xn(e, this, c) } } function ws(e, t) { return t.length < 2 ? e : Pi(e, To(t, 0, -1)) } function _s(e, t) { var n = e.length, r = Ft(t.length, n), i = ia(e); while (r--) { var a = t[r]; e[r] = as(a, n) ? i[a] : o } return e } function Cs(e, t) { if (("constructor" !== t || "function" !== typeof e[t]) && "__proto__" != t) return e[t] } var Ms = Ts(Oo), Os = zt || function (e, t) { return cn.setTimeout(e, t) }, ks = Ts(ko); function Ss(e, t, n) { var r = t + ""; return ks(e, is(r, Es(Za(r), n))) } function Ts(e) { var t = 0, n = 0; return function () { var r = Yt(), i = z - (r - n); if (n = r, i > 0) { if (++t >= j) return arguments[0] } else t = 0; return e.apply(o, arguments) } } function As(e, t) { var n = -1, r = e.length, i = r - 1; t = t === o ? r : t; while (++n < t) { var a = yo(n, i), s = e[a]; e[a] = e[n], e[n] = s } return e.length = t, e } var Ls = ms((function (e) { var t = []; return 46 === e.charCodeAt(0) && t.push(""), e.replace(De, (function (e, n, r, i) { t.push(r ? i.replace(We, "$1") : n || e) })), t })); function js(e) { if ("string" == typeof e || Nu(e)) return e; var t = e + ""; return "0" == t && 1 / e == -H ? "-0" : t } function zs(e) { if (null != e) { try { return ut.call(e) } catch (t) { } try { return e + "" } catch (t) { } } return "" } function Es(e, t) { return _n($, (function (n) { var r = "_." + n[0]; t & n[1] && !kn(e, r) && e.push(r) })), e.sort() } function Ps(e) { if (e instanceof Sr) return e.clone(); var t = new kr(e.__wrapped__, e.__chain__); return t.__actions__ = ia(e.__actions__), t.__index__ = e.__index__, t.__values__ = e.__values__, t } function Ds(e, t, r) { t = (r ? ss(e, t, r) : t === o) ? 1 : Rt(Ku(t), 0); var i = null == e ? 0 : e.length; if (!i || t < 1) return []; var a = 0, s = 0, c = n(Et(i / t)); while (a < i) c[s++] = To(e, a, a += t); return c } function Hs(e) { var t = -1, n = null == e ? 0 : e.length, r = 0, i = []; while (++t < n) { var o = e[t]; o && (i[r++] = o) } return i } function Vs() { var e = arguments.length; if (!e) return []; var t = n(e - 1), r = arguments[0], i = e; while (i--) t[i - 1] = arguments[i]; return An(cu(r) ? ia(r) : [r], Ti(t, 1)) } var Is = wo((function (e, t) { return hu(e) ? wi(e, Ti(t, 1, hu, !0)) : [] })), Ns = wo((function (e, t) { var n = oc(t); return hu(n) && (n = o), hu(e) ? wi(e, Ti(t, 1, hu, !0), Ba(n, 2)) : [] })), Rs = wo((function (e, t) { var n = oc(t); return hu(n) && (n = o), hu(e) ? wi(e, Ti(t, 1, hu, !0), o, n) : [] })); function Fs(e, t, n) { var r = null == e ? 0 : e.length; return r ? (t = n || t === o ? 1 : Ku(t), To(e, t < 0 ? 0 : t, r)) : [] } function Ys(e, t, n) { var r = null == e ? 0 : e.length; return r ? (t = n || t === o ? 1 : Ku(t), t = r - t, To(e, 0, t < 0 ? 0 : t)) : [] } function $s(e, t) { return e && e.length ? Io(e, Ba(t, 3), !0, !0) : [] } function Bs(e, t) { return e && e.length ? Io(e, Ba(t, 3), !0) : [] } function Ws(e, t, n, r) { var i = null == e ? 0 : e.length; return i ? (n && "number" != typeof n && ss(e, t, n) && (n = 0, r = i), ki(e, t, n, r)) : [] } function qs(e, t, n) { var r = null == e ? 0 : e.length; if (!r) return -1; var i = null == n ? 0 : Ku(n); return i < 0 && (i = Rt(r + i, 0)), Vn(e, Ba(t, 3), i) } function Us(e, t, n) { var r = null == e ? 0 : e.length; if (!r) return -1; var i = r - 1; return n !== o && (i = Ku(n), i = n < 0 ? Rt(r + i, 0) : Ft(i, r - 1)), Vn(e, Ba(t, 3), i, !0) } function Ks(e) { var t = null == e ? 0 : e.length; return t ? Ti(e, 1) : [] } function Gs(e) { var t = null == e ? 0 : e.length; return t ? Ti(e, H) : [] } function Xs(e, t) { var n = null == e ? 0 : e.length; return n ? (t = t === o ? 1 : Ku(t), Ti(e, t)) : [] } function Js(e) { var t = -1, n = null == e ? 0 : e.length, r = {}; while (++t < n) { var i = e[t]; r[i[0]] = i[1] } return r } function Qs(e) { return e && e.length ? e[0] : o } function Zs(e, t, n) { var r = null == e ? 0 : e.length; if (!r) return -1; var i = null == n ? 0 : Ku(n); return i < 0 && (i = Rt(r + i, 0)), In(e, t, i) } function ec(e) { var t = null == e ? 0 : e.length; return t ? To(e, 0, -1) : [] } var tc = wo((function (e) { var t = Tn(e, Yo); return t.length && t[0] === e[0] ? Fi(t) : [] })), nc = wo((function (e) { var t = oc(e), n = Tn(e, Yo); return t === oc(n) ? t = o : n.pop(), n.length && n[0] === e[0] ? Fi(n, Ba(t, 2)) : [] })), rc = wo((function (e) { var t = oc(e), n = Tn(e, Yo); return t = "function" == typeof t ? t : o, t && n.pop(), n.length && n[0] === e[0] ? Fi(n, o, t) : [] })); function ic(e, t) { return null == e ? "" : It.call(e, t) } function oc(e) { var t = null == e ? 0 : e.length; return t ? e[t - 1] : o } function ac(e, t, n) { var r = null == e ? 0 : e.length; if (!r) return -1; var i = r; return n !== o && (i = Ku(n), i = i < 0 ? Rt(r + i, 0) : Ft(i, r - 1)), t === t ? vr(e, t, i) : Vn(e, Rn, i, !0) } function sc(e, t) { return e && e.length ? uo(e, Ku(t)) : o } var cc = wo(lc); function lc(e, t) { return e && e.length && t && t.length ? mo(e, t) : e } function uc(e, t, n) { return e && e.length && t && t.length ? mo(e, t, Ba(n, 2)) : e } function hc(e, t, n) { return e && e.length && t && t.length ? mo(e, t, o, n) : e } var fc = Ia((function (e, t) { var n = null == e ? 0 : e.length, r = vi(e, t); return go(e, Tn(t, (function (e) { return as(e, n) ? +e : e })).sort(ea)), r })); function dc(e, t) { var n = []; if (!e || !e.length) return n; var r = -1, i = [], o = e.length; t = Ba(t, 3); while (++r < o) { var a = e[r]; t(a, r, e) && (n.push(a), i.push(r)) } return go(e, i), n } function pc(e) { return null == e ? e : Ut.call(e) } function vc(e, t, n) { var r = null == e ? 0 : e.length; return r ? (n && "number" != typeof n && ss(e, t, n) ? (t = 0, n = r) : (t = null == t ? 0 : Ku(t), n = n === o ? r : Ku(n)), To(e, t, n)) : [] } function mc(e, t) { return Lo(e, t) } function gc(e, t, n) { return jo(e, t, Ba(n, 2)) } function yc(e, t) { var n = null == e ? 0 : e.length; if (n) { var r = Lo(e, t); if (r < n && iu(e[r], t)) return r } return -1 } function bc(e, t) { return Lo(e, t, !0) } function xc(e, t, n) { return jo(e, t, Ba(n, 2), !0) } function wc(e, t) { var n = null == e ? 0 : e.length; if (n) { var r = Lo(e, t, !0) - 1; if (iu(e[r], t)) return r } return -1 } function _c(e) { return e && e.length ? zo(e) : [] } function Cc(e, t) { return e && e.length ? zo(e, Ba(t, 2)) : [] } function Mc(e) { var t = null == e ? 0 : e.length; return t ? To(e, 1, t) : [] } function Oc(e, t, n) { return e && e.length ? (t = n || t === o ? 1 : Ku(t), To(e, 0, t < 0 ? 0 : t)) : [] } function kc(e, t, n) { var r = null == e ? 0 : e.length; return r ? (t = n || t === o ? 1 : Ku(t), t = r - t, To(e, t < 0 ? 0 : t, r)) : [] } function Sc(e, t) { return e && e.length ? Io(e, Ba(t, 3), !1, !0) : [] } function Tc(e, t) { return e && e.length ? Io(e, Ba(t, 3)) : [] } var Ac = wo((function (e) { return Do(Ti(e, 1, hu, !0)) })), Lc = wo((function (e) { var t = oc(e); return hu(t) && (t = o), Do(Ti(e, 1, hu, !0), Ba(t, 2)) })), jc = wo((function (e) { var t = oc(e); return t = "function" == typeof t ? t : o, Do(Ti(e, 1, hu, !0), o, t) })); function zc(e) { return e && e.length ? Do(e) : [] } function Ec(e, t) { return e && e.length ? Do(e, Ba(t, 2)) : [] } function Pc(e, t) { return t = "function" == typeof t ? t : o, e && e.length ? Do(e, o, t) : [] } function Dc(e) { if (!e || !e.length) return []; var t = 0; return e = On(e, (function (e) { if (hu(e)) return t = Rt(e.length, t), !0 })), Un(t, (function (t) { return Tn(e, Yn(t)) })) } function Hc(e, t) { if (!e || !e.length) return []; var n = Dc(e); return null == t ? n : Tn(n, (function (e) { return xn(t, o, e) })) } var Vc = wo((function (e, t) { return hu(e) ? wi(e, t) : [] })), Ic = wo((function (e) { return Ro(On(e, hu)) })), Nc = wo((function (e) { var t = oc(e); return hu(t) && (t = o), Ro(On(e, hu), Ba(t, 2)) })), Rc = wo((function (e) { var t = oc(e); return t = "function" == typeof t ? t : o, Ro(On(e, hu), o, t) })), Fc = wo(Dc); function Yc(e, t) { return Fo(e || [], t || [], li) } function $c(e, t) { return Fo(e || [], t || [], Mo) } var Bc = wo((function (e) { var t = e.length, n = t > 1 ? e[t - 1] : o; return n = "function" == typeof n ? (e.pop(), n) : o, Hc(e, n) })); function Wc(e) { var t = wr(e); return t.__chain__ = !0, t } function qc(e, t) { return t(e), e } function Uc(e, t) { return t(e) } var Kc = Ia((function (e) { var t = e.length, n = t ? e[0] : 0, r = this.__wrapped__, i = function (t) { return vi(t, e) }; return !(t > 1 || this.__actions__.length) && r instanceof Sr && as(n) ? (r = r.slice(n, +n + (t ? 1 : 0)), r.__actions__.push({ func: Uc, args: [i], thisArg: o }), new kr(r, this.__chain__).thru((function (e) { return t && !e.length && e.push(o), e }))) : this.thru(i) })); function Gc() { return Wc(this) } function Xc() { return new kr(this.value(), this.__chain__) } function Jc() { this.__values__ === o && (this.__values__ = qu(this.value())); var e = this.__index__ >= this.__values__.length, t = e ? o : this.__values__[this.__index__++]; return { done: e, value: t } } function Qc() { return this } function Zc(e) { var t, n = this; while (n instanceof Or) { var r = Ps(n); r.__index__ = 0, r.__values__ = o, t ? i.__wrapped__ = r : t = r; var i = r; n = n.__wrapped__ } return i.__wrapped__ = e, t } function el() { var e = this.__wrapped__; if (e instanceof Sr) { var t = e; return this.__actions__.length && (t = new Sr(this)), t = t.reverse(), t.__actions__.push({ func: Uc, args: [pc], thisArg: o }), new kr(t, this.__chain__) } return this.thru(pc) } function tl() { return No(this.__wrapped__, this.__actions__) } var nl = ca((function (e, t, n) { ht.call(e, n) ? ++e[n] : pi(e, n, 1) })); function rl(e, t, n) { var r = cu(e) ? Mn : Mi; return n && ss(e, t, n) && (t = o), r(e, Ba(t, 3)) } function il(e, t) { var n = cu(e) ? On : Si; return n(e, Ba(t, 3)) } var ol = ga(qs), al = ga(Us); function sl(e, t) { return Ti(ml(e, t), 1) } function cl(e, t) { return Ti(ml(e, t), H) } function ll(e, t, n) { return n = n === o ? 1 : Ku(n), Ti(ml(e, t), n) } function ul(e, t) { var n = cu(e) ? _n : _i; return n(e, Ba(t, 3)) } function hl(e, t) { var n = cu(e) ? Cn : Ci; return n(e, Ba(t, 3)) } var fl = ca((function (e, t, n) { ht.call(e, n) ? e[n].push(t) : pi(e, n, [t]) })); function dl(e, t, n, r) { e = uu(e) ? e : Fh(e), n = n && !r ? Ku(n) : 0; var i = e.length; return n < 0 && (n = Rt(i + n, 0)), Iu(e) ? n <= i && e.indexOf(t, n) > -1 : !!i && In(e, t, n) > -1 } var pl = wo((function (e, t, r) { var i = -1, o = "function" == typeof t, a = uu(e) ? n(e.length) : []; return _i(e, (function (e) { a[++i] = o ? xn(t, e, r) : $i(e, t, r) })), a })), vl = ca((function (e, t, n) { pi(e, n, t) })); function ml(e, t) { var n = cu(e) ? Tn : oo; return n(e, Ba(t, 3)) } function gl(e, t, n, r) { return null == e ? [] : (cu(t) || (t = null == t ? [] : [t]), n = r ? o : n, cu(n) || (n = null == n ? [] : [n]), ho(e, t, n)) } var yl = ca((function (e, t, n) { e[n ? 0 : 1].push(t) }), (function () { return [[], []] })); function bl(e, t, n) { var r = cu(e) ? Ln : Bn, i = arguments.length < 3; return r(e, Ba(t, 4), n, i, _i) } function xl(e, t, n) { var r = cu(e) ? jn : Bn, i = arguments.length < 3; return r(e, Ba(t, 4), n, i, Ci) } function wl(e, t) { var n = cu(e) ? On : Si; return n(e, Fl(Ba(t, 3))) } function _l(e) { var t = cu(e) ? oi : _o; return t(e) } function Cl(e, t, n) { t = (n ? ss(e, t, n) : t === o) ? 1 : Ku(t); var r = cu(e) ? ai : Co; return r(e, t) } function Ml(e) { var t = cu(e) ? si : So; return t(e) } function Ol(e) { if (null == e) return 0; if (uu(e)) return Iu(e) ? mr(e) : e.length; var t = Ja(e); return t == Z || t == ae ? e.size : no(e).length } function kl(e, t, n) { var r = cu(e) ? zn : Ao; return n && ss(e, t, n) && (t = o), r(e, Ba(t, 3)) } var Sl = wo((function (e, t) { if (null == e) return []; var n = t.length; return n > 1 && ss(e, t[0], t[1]) ? t = [] : n > 2 && ss(t[0], t[1], t[2]) && (t = [t[0]]), ho(e, Ti(t, 1), []) })), Tl = jt || function () { return cn.Date.now() }; function Al(e, t) { if ("function" != typeof t) throw new ot(l); return e = Ku(e), function () { if (--e < 1) return t.apply(this, arguments) } } function Ll(e, t, n) { return t = n ? o : t, t = e && null == t ? e.length : t, ja(e, k, o, o, o, o, t) } function jl(e, t) { var n; if ("function" != typeof t) throw new ot(l); return e = Ku(e), function () { return --e > 0 && (n = t.apply(this, arguments)), e <= 1 && (t = o), n } } var zl = wo((function (e, t, n) { var r = b; if (n.length) { var i = hr(n, $a(zl)); r |= M } return ja(e, r, t, n, i) })), El = wo((function (e, t, n) { var r = b | x; if (n.length) { var i = hr(n, $a(El)); r |= M } return ja(t, r, e, n, i) })); function Pl(e, t, n) { t = n ? o : t; var r = ja(e, _, o, o, o, o, o, t); return r.placeholder = Pl.placeholder, r } function Dl(e, t, n) { t = n ? o : t; var r = ja(e, C, o, o, o, o, o, t); return r.placeholder = Dl.placeholder, r } function Hl(e, t, n) { var r, i, a, s, c, u, h = 0, f = !1, d = !1, p = !0; if ("function" != typeof e) throw new ot(l); function v(t) { var n = r, a = i; return r = i = o, h = t, s = e.apply(a, n), s } function m(e) { return h = e, c = Os(b, t), f ? v(e) : s } function g(e) { var n = e - u, r = e - h, i = t - n; return d ? Ft(i, a - r) : i } function y(e) { var n = e - u, r = e - h; return u === o || n >= t || n < 0 || d && r >= a } function b() { var e = Tl(); if (y(e)) return x(e); c = Os(b, g(e)) } function x(e) { return c = o, p && r ? v(e) : (r = i = o, s) } function w() { c !== o && Uo(c), h = 0, r = u = i = c = o } function _() { return c === o ? s : x(Tl()) } function C() { var e = Tl(), n = y(e); if (r = arguments, i = this, u = e, n) { if (c === o) return m(u); if (d) return Uo(c), c = Os(b, t), v(u) } return c === o && (c = Os(b, t)), s } return t = Xu(t) || 0, Mu(n) && (f = !!n.leading, d = "maxWait" in n, a = d ? Rt(Xu(n.maxWait) || 0, t) : a, p = "trailing" in n ? !!n.trailing : p), C.cancel = w, C.flush = _, C } var Vl = wo((function (e, t) { return xi(e, 1, t) })), Il = wo((function (e, t, n) { return xi(e, Xu(t) || 0, n) })); function Nl(e) { return ja(e, T) } function Rl(e, t) { if ("function" != typeof e || null != t && "function" != typeof t) throw new ot(l); var n = function () { var r = arguments, i = t ? t.apply(this, r) : r[0], o = n.cache; if (o.has(i)) return o.get(i); var a = e.apply(this, r); return n.cache = o.set(i, a) || o, a }; return n.cache = new (Rl.Cache || $r), n } function Fl(e) { if ("function" != typeof e) throw new ot(l); return function () { var t = arguments; switch (t.length) { case 0: return !e.call(this); case 1: return !e.call(this, t[0]); case 2: return !e.call(this, t[0], t[1]); case 3: return !e.call(this, t[0], t[1], t[2]) }return !e.apply(this, t) } } function Yl(e) { return jl(2, e) } Rl.Cache = $r; var $l = Wo((function (e, t) { t = 1 == t.length && cu(t[0]) ? Tn(t[0], Xn(Ba())) : Tn(Ti(t, 1), Xn(Ba())); var n = t.length; return wo((function (r) { var i = -1, o = Ft(r.length, n); while (++i < o) r[i] = t[i].call(this, r[i]); return xn(e, this, r) })) })), Bl = wo((function (e, t) { var n = hr(t, $a(Bl)); return ja(e, M, o, t, n) })), Wl = wo((function (e, t) { var n = hr(t, $a(Wl)); return ja(e, O, o, t, n) })), ql = Ia((function (e, t) { return ja(e, S, o, o, o, t) })); function Ul(e, t) { if ("function" != typeof e) throw new ot(l); return t = t === o ? t : Ku(t), wo(e, t) } function Kl(e, t) { if ("function" != typeof e) throw new ot(l); return t = null == t ? 0 : Rt(Ku(t), 0), wo((function (n) { var r = n[t], i = qo(n, 0, t); return r && An(i, r), xn(e, this, i) })) } function Gl(e, t, n) { var r = !0, i = !0; if ("function" != typeof e) throw new ot(l); return Mu(n) && (r = "leading" in n ? !!n.leading : r, i = "trailing" in n ? !!n.trailing : i), Hl(e, t, { leading: r, maxWait: t, trailing: i }) } function Xl(e) { return Ll(e, 1) } function Jl(e, t) { return Bl($o(t), e) } function Ql() { if (!arguments.length) return []; var e = arguments[0]; return cu(e) ? e : [e] } function Zl(e) { return gi(e, m) } function eu(e, t) { return t = "function" == typeof t ? t : o, gi(e, m, t) } function tu(e) { return gi(e, p | m) } function nu(e, t) { return t = "function" == typeof t ? t : o, gi(e, p | m, t) } function ru(e, t) { return null == t || bi(e, t, _h(t)) } function iu(e, t) { return e === t || e !== e && t !== t } var ou = ka(Vi), au = ka((function (e, t) { return e >= t })), su = Bi(function () { return arguments }()) ? Bi : function (e) { return Ou(e) && ht.call(e, "callee") && !Mt.call(e, "callee") }, cu = n.isArray, lu = pn ? Xn(pn) : Wi; function uu(e) { return null != e && Cu(e.length) && !wu(e) } function hu(e) { return Ou(e) && uu(e) } function fu(e) { return !0 === e || !1 === e || Ou(e) && Hi(e) == U } var du = Ht || Gf, pu = vn ? Xn(vn) : qi; function vu(e) { return Ou(e) && 1 === e.nodeType && !Pu(e) } function mu(e) { if (null == e) return !0; if (uu(e) && (cu(e) || "string" == typeof e || "function" == typeof e.splice || du(e) || Ru(e) || su(e))) return !e.length; var t = Ja(e); if (t == Z || t == ae) return !e.size; if (ds(e)) return !no(e).length; for (var n in e) if (ht.call(e, n)) return !1; return !0 } function gu(e, t) { return Ui(e, t) } function yu(e, t, n) { n = "function" == typeof n ? n : o; var r = n ? n(e, t) : o; return r === o ? Ui(e, t, o, n) : !!r } function bu(e) { if (!Ou(e)) return !1; var t = Hi(e); return t == X || t == G || "string" == typeof e.message && "string" == typeof e.name && !Pu(e) } function xu(e) { return "number" == typeof e && Vt(e) } function wu(e) { if (!Mu(e)) return !1; var t = Hi(e); return t == J || t == Q || t == q || t == ie } function _u(e) { return "number" == typeof e && e == Ku(e) } function Cu(e) { return "number" == typeof e && e > -1 && e % 1 == 0 && e <= V } function Mu(e) { var t = typeof e; return null != e && ("object" == t || "function" == t) } function Ou(e) { return null != e && "object" == typeof e } var ku = mn ? Xn(mn) : Gi; function Su(e, t) { return e === t || Xi(e, t, qa(t)) } function Tu(e, t, n) { return n = "function" == typeof n ? n : o, Xi(e, t, qa(t), n) } function Au(e) { return Eu(e) && e != +e } function Lu(e) { if (fs(e)) throw new i(c); return Ji(e) } function ju(e) { return null === e } function zu(e) { return null == e } function Eu(e) { return "number" == typeof e || Ou(e) && Hi(e) == ee } function Pu(e) { if (!Ou(e) || Hi(e) != ne) return !1; var t = _t(e); if (null === t) return !0; var n = ht.call(t, "constructor") && t.constructor; return "function" == typeof n && n instanceof n && ut.call(n) == vt } var Du = gn ? Xn(gn) : Qi; function Hu(e) { return _u(e) && e >= -V && e <= V } var Vu = yn ? Xn(yn) : Zi; function Iu(e) { return "string" == typeof e || !cu(e) && Ou(e) && Hi(e) == se } function Nu(e) { return "symbol" == typeof e || Ou(e) && Hi(e) == ce } var Ru = bn ? Xn(bn) : eo; function Fu(e) { return e === o } function Yu(e) { return Ou(e) && Ja(e) == ue } function $u(e) { return Ou(e) && Hi(e) == he } var Bu = ka(io), Wu = ka((function (e, t) { return e <= t })); function qu(e) { if (!e) return []; if (uu(e)) return Iu(e) ? gr(e) : ia(e); if (St && e[St]) return cr(e[St]()); var t = Ja(e), n = t == Z ? lr : t == ae ? fr : Fh; return n(e) } function Uu(e) { if (!e) return 0 === e ? e : 0; if (e = Xu(e), e === H || e === -H) { var t = e < 0 ? -1 : 1; return t * I } return e === e ? e : 0 } function Ku(e) { var t = Uu(e), n = t % 1; return t === t ? n ? t - n : t : 0 } function Gu(e) { return e ? mi(Ku(e), 0, R) : 0 } function Xu(e) { if ("number" == typeof e) return e; if (Nu(e)) return N; if (Mu(e)) { var t = "function" == typeof e.valueOf ? e.valueOf() : e; e = Mu(t) ? t + "" : t } if ("string" != typeof e) return 0 === e ? e : +e; e = Gn(e); var n = Ge.test(e); return n || Je.test(e) ? on(e.slice(2), n ? 2 : 8) : Ke.test(e) ? N : +e } function Ju(e) { return oa(e, Ch(e)) } function Qu(e) { return e ? mi(Ku(e), -V, V) : 0 === e ? e : 0 } function Zu(e) { return null == e ? "" : Po(e) } var eh = la((function (e, t) { if (ds(t) || uu(t)) oa(t, _h(t), e); else for (var n in t) ht.call(t, n) && li(e, n, t[n]) })), th = la((function (e, t) { oa(t, Ch(t), e) })), nh = la((function (e, t, n, r) { oa(t, Ch(t), e, r) })), rh = la((function (e, t, n, r) { oa(t, _h(t), e, r) })), ih = Ia(vi); function oh(e, t) { var n = Cr(e); return null == t ? n : fi(n, t) } var ah = wo((function (e, t) { e = nt(e); var n = -1, r = t.length, i = r > 2 ? t[2] : o; i && ss(t[0], t[1], i) && (r = 1); while (++n < r) { var a = t[n], s = Ch(a), c = -1, l = s.length; while (++c < l) { var u = s[c], h = e[u]; (h === o || iu(h, ct[u]) && !ht.call(e, u)) && (e[u] = a[u]) } } return e })), sh = wo((function (e) { return e.push(o, Ea), xn(Sh, o, e) })); function ch(e, t) { return Hn(e, Ba(t, 3), ji) } function lh(e, t) { return Hn(e, Ba(t, 3), zi) } function uh(e, t) { return null == e ? e : Ai(e, Ba(t, 3), Ch) } function hh(e, t) { return null == e ? e : Li(e, Ba(t, 3), Ch) } function fh(e, t) { return e && ji(e, Ba(t, 3)) } function dh(e, t) { return e && zi(e, Ba(t, 3)) } function ph(e) { return null == e ? [] : Ei(e, _h(e)) } function vh(e) { return null == e ? [] : Ei(e, Ch(e)) } function mh(e, t, n) { var r = null == e ? o : Pi(e, t); return r === o ? n : r } function gh(e, t) { return null != e && es(e, t, Ii) } function yh(e, t) { return null != e && es(e, t, Ni) } var bh = xa((function (e, t, n) { null != t && "function" != typeof t.toString && (t = pt.call(t)), e[t] = n }), Sf(jf)), xh = xa((function (e, t, n) { null != t && "function" != typeof t.toString && (t = pt.call(t)), ht.call(e, t) ? e[t].push(n) : e[t] = [n] }), Ba), wh = wo($i); function _h(e) { return uu(e) ? ii(e) : no(e) } function Ch(e) { return uu(e) ? ii(e, !0) : ro(e) } function Mh(e, t) { var n = {}; return t = Ba(t, 3), ji(e, (function (e, r, i) { pi(n, t(e, r, i), e) })), n } function Oh(e, t) { var n = {}; return t = Ba(t, 3), ji(e, (function (e, r, i) { pi(n, r, t(e, r, i)) })), n } var kh = la((function (e, t, n) { co(e, t, n) })), Sh = la((function (e, t, n, r) { co(e, t, n, r) })), Th = Ia((function (e, t) { var n = {}; if (null == e) return n; var r = !1; t = Tn(t, (function (t) { return t = Bo(t, e), r || (r = t.length > 1), t })), oa(e, Ra(e), n), r && (n = gi(n, p | v | m, Pa)); var i = t.length; while (i--) Ho(n, t[i]); return n })); function Ah(e, t) { return jh(e, Fl(Ba(t))) } var Lh = Ia((function (e, t) { return null == e ? {} : fo(e, t) })); function jh(e, t) { if (null == e) return {}; var n = Tn(Ra(e), (function (e) { return [e] })); return t = Ba(t), po(e, n, (function (e, n) { return t(e, n[0]) })) } function zh(e, t, n) { t = Bo(t, e); var r = -1, i = t.length; i || (i = 1, e = o); while (++r < i) { var a = null == e ? o : e[js(t[r])]; a === o && (r = i, a = n), e = wu(a) ? a.call(e) : a } return e } function Eh(e, t, n) { return null == e ? e : Mo(e, t, n) } function Ph(e, t, n, r) { return r = "function" == typeof r ? r : o, null == e ? e : Mo(e, t, n, r) } var Dh = La(_h), Hh = La(Ch); function Vh(e, t, n) { var r = cu(e), i = r || du(e) || Ru(e); if (t = Ba(t, 4), null == n) { var o = e && e.constructor; n = i ? r ? new o : [] : Mu(e) && wu(o) ? Cr(_t(e)) : {} } return (i ? _n : ji)(e, (function (e, r, i) { return t(n, e, r, i) })), n } function Ih(e, t) { return null == e || Ho(e, t) } function Nh(e, t, n) { return null == e ? e : Vo(e, t, $o(n)) } function Rh(e, t, n, r) { return r = "function" == typeof r ? r : o, null == e ? e : Vo(e, t, $o(n), r) } function Fh(e) { return null == e ? [] : Jn(e, _h(e)) } function Yh(e) { return null == e ? [] : Jn(e, Ch(e)) } function $h(e, t, n) { return n === o && (n = t, t = o), n !== o && (n = Xu(n), n = n === n ? n : 0), t !== o && (t = Xu(t), t = t === t ? t : 0), mi(Xu(e), t, n) } function Bh(e, t, n) { return t = Uu(t), n === o ? (n = t, t = 0) : n = Uu(n), e = Xu(e), Ri(e, t, n) } function Wh(e, t, n) { if (n && "boolean" != typeof n && ss(e, t, n) && (t = n = o), n === o && ("boolean" == typeof t ? (n = t, t = o) : "boolean" == typeof e && (n = e, e = o)), e === o && t === o ? (e = 0, t = 1) : (e = Uu(e), t === o ? (t = e, e = 0) : t = Uu(t)), e > t) { var r = e; e = t, t = r } if (n || e % 1 || t % 1) { var i = qt(); return Ft(e + i * (t - e + rn("1e-" + ((i + "").length - 1))), t) } return yo(e, t) } var qh = pa((function (e, t, n) { return t = t.toLowerCase(), e + (n ? Uh(t) : t) })); function Uh(e) { return wf(Zu(e).toLowerCase()) } function Kh(e) { return e = Zu(e), e && e.replace(Ze, nr).replace(Bt, "") } function Gh(e, t, n) { e = Zu(e), t = Po(t); var r = e.length; n = n === o ? r : mi(Ku(n), 0, r); var i = n; return n -= t.length, n >= 0 && e.slice(n, i) == t } function Xh(e) { return e = Zu(e), e && Ae.test(e) ? e.replace(Se, rr) : e } function Jh(e) { return e = Zu(e), e && Ve.test(e) ? e.replace(He, "\\$&") : e } var Qh = pa((function (e, t, n) { return e + (n ? "-" : "") + t.toLowerCase() })), Zh = pa((function (e, t, n) { return e + (n ? " " : "") + t.toLowerCase() })), ef = da("toLowerCase"); function tf(e, t, n) { e = Zu(e), t = Ku(t); var r = t ? mr(e) : 0; if (!t || r >= t) return e; var i = (t - r) / 2; return Ca(Pt(i), n) + e + Ca(Et(i), n) } function nf(e, t, n) { e = Zu(e), t = Ku(t); var r = t ? mr(e) : 0; return t && r < t ? e + Ca(t - r, n) : e } function rf(e, t, n) { e = Zu(e), t = Ku(t); var r = t ? mr(e) : 0; return t && r < t ? Ca(t - r, n) + e : e } function of(e, t, n) { return n || null == t ? t = 0 : t && (t = +t), Wt(Zu(e).replace(Ie, ""), t || 0) } function af(e, t, n) { return t = (n ? ss(e, t, n) : t === o) ? 1 : Ku(t), xo(Zu(e), t) } function sf() { var e = arguments, t = Zu(e[0]); return e.length < 3 ? t : t.replace(e[1], e[2]) } var cf = pa((function (e, t, n) { return e + (n ? "_" : "") + t.toLowerCase() })); function lf(e, t, n) { return n && "number" != typeof n && ss(e, t, n) && (t = n = o), n = n === o ? R : n >>> 0, n ? (e = Zu(e), e && ("string" == typeof t || null != t && !Du(t)) && (t = Po(t), !t && ar(e)) ? qo(gr(e), 0, n) : e.split(t, n)) : [] } var uf = pa((function (e, t, n) { return e + (n ? " " : "") + wf(t) })); function hf(e, t, n) { return e = Zu(e), n = null == n ? 0 : mi(Ku(n), 0, e.length), t = Po(t), e.slice(n, n + t.length) == t } function ff(e, t, n) { var r = wr.templateSettings; n && ss(e, t, n) && (t = o), e = Zu(e), t = nh({}, t, r, za); var a, s, c = nh({}, t.imports, r.imports, za), l = _h(c), h = Jn(c, l), f = 0, d = t.interpolate || et, p = "__p += '", v = rt((t.escape || et).source + "|" + d.source + "|" + (d === ze ? qe : et).source + "|" + (t.evaluate || et).source + "|$", "g"), m = "//# sourceURL=" + (ht.call(t, "sourceURL") ? (t.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++Xt + "]") + "\n"; e.replace(v, (function (t, n, r, i, o, c) { return r || (r = i), p += e.slice(f, c).replace(tt, ir), n && (a = !0, p += "' +\n__e(" + n + ") +\n'"), o && (s = !0, p += "';\n" + o + ";\n__p += '"), r && (p += "' +\n((__t = (" + r + ")) == null ? '' : __t) +\n'"), f = c + t.length, t })), p += "';\n"; var g = ht.call(t, "variable") && t.variable; if (g) { if (Be.test(g)) throw new i(u) } else p = "with (obj) {\n" + p + "\n}\n"; p = (s ? p.replace(Ce, "") : p).replace(Me, "$1").replace(Oe, "$1;"), p = "function(" + (g || "obj") + ") {\n" + (g ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (a ? ", __e = _.escape" : "") + (s ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + p + "return __p\n}"; var y = Cf((function () { return Ne(l, m + "return " + p).apply(o, h) })); if (y.source = p, bu(y)) throw y; return y } function df(e) { return Zu(e).toLowerCase() } function pf(e) { return Zu(e).toUpperCase() } function vf(e, t, n) { if (e = Zu(e), e && (n || t === o)) return Gn(e); if (!e || !(t = Po(t))) return e; var r = gr(e), i = gr(t), a = Zn(r, i), s = er(r, i) + 1; return qo(r, a, s).join("") } function mf(e, t, n) { if (e = Zu(e), e && (n || t === o)) return e.slice(0, yr(e) + 1); if (!e || !(t = Po(t))) return e; var r = gr(e), i = er(r, gr(t)) + 1; return qo(r, 0, i).join("") } function gf(e, t, n) { if (e = Zu(e), e && (n || t === o)) return e.replace(Ie, ""); if (!e || !(t = Po(t))) return e; var r = gr(e), i = Zn(r, gr(t)); return qo(r, i).join("") } function yf(e, t) { var n = A, r = L; if (Mu(t)) { var i = "separator" in t ? t.separator : i; n = "length" in t ? Ku(t.length) : n, r = "omission" in t ? Po(t.omission) : r } e = Zu(e); var a = e.length; if (ar(e)) { var s = gr(e); a = s.length } if (n >= a) return e; var c = n - mr(r); if (c < 1) return r; var l = s ? qo(s, 0, c).join("") : e.slice(0, c); if (i === o) return l + r; if (s && (c += l.length - c), Du(i)) { if (e.slice(c).search(i)) { var u, h = l; i.global || (i = rt(i.source, Zu(Ue.exec(i)) + "g")), i.lastIndex = 0; while (u = i.exec(h)) var f = u.index; l = l.slice(0, f === o ? c : f) } } else if (e.indexOf(Po(i), c) != c) { var d = l.lastIndexOf(i); d > -1 && (l = l.slice(0, d)) } return l + r } function bf(e) { return e = Zu(e), e && Te.test(e) ? e.replace(ke, br) : e } var xf = pa((function (e, t, n) { return e + (n ? " " : "") + t.toUpperCase() })), wf = da("toUpperCase"); function _f(e, t, n) { return e = Zu(e), t = n ? o : t, t === o ? sr(e) ? _r(e) : Dn(e) : e.match(t) || [] } var Cf = wo((function (e, t) { try { return xn(e, o, t) } catch (n) { return bu(n) ? n : new i(n) } })), Mf = Ia((function (e, t) { return _n(t, (function (t) { t = js(t), pi(e, t, zl(e[t], e)) })), e })); function Of(e) { var t = null == e ? 0 : e.length, n = Ba(); return e = t ? Tn(e, (function (e) { if ("function" != typeof e[1]) throw new ot(l); return [n(e[0]), e[1]] })) : [], wo((function (n) { var r = -1; while (++r < t) { var i = e[r]; if (xn(i[0], this, n)) return xn(i[1], this, n) } })) } function kf(e) { return yi(gi(e, p)) } function Sf(e) { return function () { return e } } function Tf(e, t) { return null == e || e !== e ? t : e } var Af = ya(), Lf = ya(!0); function jf(e) { return e } function zf(e) { return to("function" == typeof e ? e : gi(e, p)) } function Ef(e) { return ao(gi(e, p)) } function Pf(e, t) { return so(e, gi(t, p)) } var Df = wo((function (e, t) { return function (n) { return $i(n, e, t) } })), Hf = wo((function (e, t) { return function (n) { return $i(e, n, t) } })); function Vf(e, t, n) { var r = _h(t), i = Ei(t, r); null != n || Mu(t) && (i.length || !r.length) || (n = t, t = e, e = this, i = Ei(t, _h(t))); var o = !(Mu(n) && "chain" in n) || !!n.chain, a = wu(e); return _n(i, (function (n) { var r = t[n]; e[n] = r, a && (e.prototype[n] = function () { var t = this.__chain__; if (o || t) { var n = e(this.__wrapped__), i = n.__actions__ = ia(this.__actions__); return i.push({ func: r, args: arguments, thisArg: e }), n.__chain__ = t, n } return r.apply(e, An([this.value()], arguments)) }) })), e } function If() { return cn._ === this && (cn._ = mt), this } function Nf() { } function Rf(e) { return e = Ku(e), wo((function (t) { return uo(t, e) })) } var Ff = _a(Tn), Yf = _a(Mn), $f = _a(zn); function Bf(e) { return cs(e) ? Yn(js(e)) : vo(e) } function Wf(e) { return function (t) { return null == e ? o : Pi(e, t) } } var qf = Oa(), Uf = Oa(!0); function Kf() { return [] } function Gf() { return !1 } function Xf() { return {} } function Jf() { return "" } function Qf() { return !0 } function Zf(e, t) { if (e = Ku(e), e < 1 || e > V) return []; var n = R, r = Ft(e, R); t = Ba(t), e -= R; var i = Un(r, t); while (++n < e) t(n); return i } function ed(e) { return cu(e) ? Tn(e, js) : Nu(e) ? [e] : ia(Ls(Zu(e))) } function td(e) { var t = ++ft; return Zu(e) + t } var nd = wa((function (e, t) { return e + t }), 0), rd = Ta("ceil"), id = wa((function (e, t) { return e / t }), 1), od = Ta("floor"); function ad(e) { return e && e.length ? Oi(e, jf, Vi) : o } function sd(e, t) { return e && e.length ? Oi(e, Ba(t, 2), Vi) : o } function cd(e) { return Fn(e, jf) } function ld(e, t) { return Fn(e, Ba(t, 2)) } function ud(e) { return e && e.length ? Oi(e, jf, io) : o } function hd(e, t) { return e && e.length ? Oi(e, Ba(t, 2), io) : o } var fd = wa((function (e, t) { return e * t }), 1), dd = Ta("round"), pd = wa((function (e, t) { return e - t }), 0); function vd(e) { return e && e.length ? qn(e, jf) : 0 } function md(e, t) { return e && e.length ? qn(e, Ba(t, 2)) : 0 } return wr.after = Al, wr.ary = Ll, wr.assign = eh, wr.assignIn = th, wr.assignInWith = nh, wr.assignWith = rh, wr.at = ih, wr.before = jl, wr.bind = zl, wr.bindAll = Mf, wr.bindKey = El, wr.castArray = Ql, wr.chain = Wc, wr.chunk = Ds, wr.compact = Hs, wr.concat = Vs, wr.cond = Of, wr.conforms = kf, wr.constant = Sf, wr.countBy = nl, wr.create = oh, wr.curry = Pl, wr.curryRight = Dl, wr.debounce = Hl, wr.defaults = ah, wr.defaultsDeep = sh, wr.defer = Vl, wr.delay = Il, wr.difference = Is, wr.differenceBy = Ns, wr.differenceWith = Rs, wr.drop = Fs, wr.dropRight = Ys, wr.dropRightWhile = $s, wr.dropWhile = Bs, wr.fill = Ws, wr.filter = il, wr.flatMap = sl, wr.flatMapDeep = cl, wr.flatMapDepth = ll, wr.flatten = Ks, wr.flattenDeep = Gs, wr.flattenDepth = Xs, wr.flip = Nl, wr.flow = Af, wr.flowRight = Lf, wr.fromPairs = Js, wr.functions = ph, wr.functionsIn = vh, wr.groupBy = fl, wr.initial = ec, wr.intersection = tc, wr.intersectionBy = nc, wr.intersectionWith = rc, wr.invert = bh, wr.invertBy = xh, wr.invokeMap = pl, wr.iteratee = zf, wr.keyBy = vl, wr.keys = _h, wr.keysIn = Ch, wr.map = ml, wr.mapKeys = Mh, wr.mapValues = Oh, wr.matches = Ef, wr.matchesProperty = Pf, wr.memoize = Rl, wr.merge = kh, wr.mergeWith = Sh, wr.method = Df, wr.methodOf = Hf, wr.mixin = Vf, wr.negate = Fl, wr.nthArg = Rf, wr.omit = Th, wr.omitBy = Ah, wr.once = Yl, wr.orderBy = gl, wr.over = Ff, wr.overArgs = $l, wr.overEvery = Yf, wr.overSome = $f, wr.partial = Bl, wr.partialRight = Wl, wr.partition = yl, wr.pick = Lh, wr.pickBy = jh, wr.property = Bf, wr.propertyOf = Wf, wr.pull = cc, wr.pullAll = lc, wr.pullAllBy = uc, wr.pullAllWith = hc, wr.pullAt = fc, wr.range = qf, wr.rangeRight = Uf, wr.rearg = ql, wr.reject = wl, wr.remove = dc, wr.rest = Ul, wr.reverse = pc, wr.sampleSize = Cl, wr.set = Eh, wr.setWith = Ph, wr.shuffle = Ml, wr.slice = vc, wr.sortBy = Sl, wr.sortedUniq = _c, wr.sortedUniqBy = Cc, wr.split = lf, wr.spread = Kl, wr.tail = Mc, wr.take = Oc, wr.takeRight = kc, wr.takeRightWhile = Sc, wr.takeWhile = Tc, wr.tap = qc, wr.throttle = Gl, wr.thru = Uc, wr.toArray = qu, wr.toPairs = Dh, wr.toPairsIn = Hh, wr.toPath = ed, wr.toPlainObject = Ju, wr.transform = Vh, wr.unary = Xl, wr.union = Ac, wr.unionBy = Lc, wr.unionWith = jc, wr.uniq = zc, wr.uniqBy = Ec, wr.uniqWith = Pc, wr.unset = Ih, wr.unzip = Dc, wr.unzipWith = Hc, wr.update = Nh, wr.updateWith = Rh, wr.values = Fh, wr.valuesIn = Yh, wr.without = Vc, wr.words = _f, wr.wrap = Jl, wr.xor = Ic, wr.xorBy = Nc, wr.xorWith = Rc, wr.zip = Fc, wr.zipObject = Yc, wr.zipObjectDeep = $c, wr.zipWith = Bc, wr.entries = Dh, wr.entriesIn = Hh, wr.extend = th, wr.extendWith = nh, Vf(wr, wr), wr.add = nd, wr.attempt = Cf, wr.camelCase = qh, wr.capitalize = Uh, wr.ceil = rd, wr.clamp = $h, wr.clone = Zl, wr.cloneDeep = tu, wr.cloneDeepWith = nu, wr.cloneWith = eu, wr.conformsTo = ru, wr.deburr = Kh, wr.defaultTo = Tf, wr.divide = id, wr.endsWith = Gh, wr.eq = iu, wr.escape = Xh, wr.escapeRegExp = Jh, wr.every = rl, wr.find = ol, wr.findIndex = qs, wr.findKey = ch, wr.findLast = al, wr.findLastIndex = Us, wr.findLastKey = lh, wr.floor = od, wr.forEach = ul, wr.forEachRight = hl, wr.forIn = uh, wr.forInRight = hh, wr.forOwn = fh, wr.forOwnRight = dh, wr.get = mh, wr.gt = ou, wr.gte = au, wr.has = gh, wr.hasIn = yh, wr.head = Qs, wr.identity = jf, wr.includes = dl, wr.indexOf = Zs, wr.inRange = Bh, wr.invoke = wh, wr.isArguments = su, wr.isArray = cu, wr.isArrayBuffer = lu, wr.isArrayLike = uu, wr.isArrayLikeObject = hu, wr.isBoolean = fu, wr.isBuffer = du, wr.isDate = pu, wr.isElement = vu, wr.isEmpty = mu, wr.isEqual = gu, wr.isEqualWith = yu, wr.isError = bu, wr.isFinite = xu, wr.isFunction = wu, wr.isInteger = _u, wr.isLength = Cu, wr.isMap = ku, wr.isMatch = Su, wr.isMatchWith = Tu, wr.isNaN = Au, wr.isNative = Lu, wr.isNil = zu, wr.isNull = ju, wr.isNumber = Eu, wr.isObject = Mu, wr.isObjectLike = Ou, wr.isPlainObject = Pu, wr.isRegExp = Du, wr.isSafeInteger = Hu, wr.isSet = Vu, wr.isString = Iu, wr.isSymbol = Nu, wr.isTypedArray = Ru, wr.isUndefined = Fu, wr.isWeakMap = Yu, wr.isWeakSet = $u, wr.join = ic, wr.kebabCase = Qh, wr.last = oc, wr.lastIndexOf = ac, wr.lowerCase = Zh, wr.lowerFirst = ef, wr.lt = Bu, wr.lte = Wu, wr.max = ad, wr.maxBy = sd, wr.mean = cd, wr.meanBy = ld, wr.min = ud, wr.minBy = hd, wr.stubArray = Kf, wr.stubFalse = Gf, wr.stubObject = Xf, wr.stubString = Jf, wr.stubTrue = Qf, wr.multiply = fd, wr.nth = sc, wr.noConflict = If, wr.noop = Nf, wr.now = Tl, wr.pad = tf, wr.padEnd = nf, wr.padStart = rf, wr.parseInt = of, wr.random = Wh, wr.reduce = bl, wr.reduceRight = xl, wr.repeat = af, wr.replace = sf, wr.result = zh, wr.round = dd, wr.runInContext = e, wr.sample = _l, wr.size = Ol, wr.snakeCase = cf, wr.some = kl, wr.sortedIndex = mc, wr.sortedIndexBy = gc, wr.sortedIndexOf = yc, wr.sortedLastIndex = bc, wr.sortedLastIndexBy = xc, wr.sortedLastIndexOf = wc, wr.startCase = uf, wr.startsWith = hf, wr.subtract = pd, wr.sum = vd, wr.sumBy = md, wr.template = ff, wr.times = Zf, wr.toFinite = Uu, wr.toInteger = Ku, wr.toLength = Gu, wr.toLower = df, wr.toNumber = Xu, wr.toSafeInteger = Qu, wr.toString = Zu, wr.toUpper = pf, wr.trim = vf, wr.trimEnd = mf, wr.trimStart = gf, wr.truncate = yf, wr.unescape = bf, wr.uniqueId = td, wr.upperCase = xf, wr.upperFirst = wf, wr.each = ul, wr.eachRight = hl, wr.first = Qs, Vf(wr, function () { var e = {}; return ji(wr, (function (t, n) { ht.call(wr.prototype, n) || (e[n] = t) })), e }(), { chain: !1 }), wr.VERSION = a, _n(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], (function (e) { wr[e].placeholder = wr })), _n(["drop", "take"], (function (e, t) { Sr.prototype[e] = function (n) { n = n === o ? 1 : Rt(Ku(n), 0); var r = this.__filtered__ && !t ? new Sr(this) : this.clone(); return r.__filtered__ ? r.__takeCount__ = Ft(n, r.__takeCount__) : r.__views__.push({ size: Ft(n, R), type: e + (r.__dir__ < 0 ? "Right" : "") }), r }, Sr.prototype[e + "Right"] = function (t) { return this.reverse()[e](t).reverse() } })), _n(["filter", "map", "takeWhile"], (function (e, t) { var n = t + 1, r = n == E || n == D; Sr.prototype[e] = function (e) { var t = this.clone(); return t.__iteratees__.push({ iteratee: Ba(e, 3), type: n }), t.__filtered__ = t.__filtered__ || r, t } })), _n(["head", "last"], (function (e, t) { var n = "take" + (t ? "Right" : ""); Sr.prototype[e] = function () { return this[n](1).value()[0] } })), _n(["initial", "tail"], (function (e, t) { var n = "drop" + (t ? "" : "Right"); Sr.prototype[e] = function () { return this.__filtered__ ? new Sr(this) : this[n](1) } })), Sr.prototype.compact = function () { return this.filter(jf) }, Sr.prototype.find = function (e) { return this.filter(e).head() }, Sr.prototype.findLast = function (e) { return this.reverse().find(e) }, Sr.prototype.invokeMap = wo((function (e, t) { return "function" == typeof e ? new Sr(this) : this.map((function (n) { return $i(n, e, t) })) })), Sr.prototype.reject = function (e) { return this.filter(Fl(Ba(e))) }, Sr.prototype.slice = function (e, t) { e = Ku(e); var n = this; return n.__filtered__ && (e > 0 || t < 0) ? new Sr(n) : (e < 0 ? n = n.takeRight(-e) : e && (n = n.drop(e)), t !== o && (t = Ku(t), n = t < 0 ? n.dropRight(-t) : n.take(t - e)), n) }, Sr.prototype.takeRightWhile = function (e) { return this.reverse().takeWhile(e).reverse() }, Sr.prototype.toArray = function () { return this.take(R) }, ji(Sr.prototype, (function (e, t) { var n = /^(?:filter|find|map|reject)|While$/.test(t), r = /^(?:head|last)$/.test(t), i = wr[r ? "take" + ("last" == t ? "Right" : "") : t], a = r || /^find/.test(t); i && (wr.prototype[t] = function () { var t = this.__wrapped__, s = r ? [1] : arguments, c = t instanceof Sr, l = s[0], u = c || cu(t), h = function (e) { var t = i.apply(wr, An([e], s)); return r && f ? t[0] : t }; u && n && "function" == typeof l && 1 != l.length && (c = u = !1); var f = this.__chain__, d = !!this.__actions__.length, p = a && !f, v = c && !d; if (!a && u) { t = v ? t : new Sr(this); var m = e.apply(t, s); return m.__actions__.push({ func: Uc, args: [h], thisArg: o }), new kr(m, f) } return p && v ? e.apply(this, s) : (m = this.thru(h), p ? r ? m.value()[0] : m.value() : m) }) })), _n(["pop", "push", "shift", "sort", "splice", "unshift"], (function (e) { var t = at[e], n = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru", r = /^(?:pop|shift)$/.test(e); wr.prototype[e] = function () { var e = arguments; if (r && !this.__chain__) { var i = this.value(); return t.apply(cu(i) ? i : [], e) } return this[n]((function (n) { return t.apply(cu(n) ? n : [], e) })) } })), ji(Sr.prototype, (function (e, t) { var n = wr[t]; if (n) { var r = n.name + ""; ht.call(ln, r) || (ln[r] = []), ln[r].push({ name: t, func: n }) } })), ln[ba(o, x).name] = [{ name: "wrapper", func: o }], Sr.prototype.clone = Tr, Sr.prototype.reverse = Ar, Sr.prototype.value = Lr, wr.prototype.at = Kc, wr.prototype.chain = Gc, wr.prototype.commit = Xc, wr.prototype.next = Jc, wr.prototype.plant = Zc, wr.prototype.reverse = el, wr.prototype.toJSON = wr.prototype.valueOf = wr.prototype.value = tl, wr.prototype.first = wr.prototype.head, St && (wr.prototype[St] = Qc), wr }, Mr = Cr(); cn._ = Mr, i = function () { return Mr }.call(t, n, t, r), i === o || (r.exports = i) }).call(this)
+        }).call(this, n("c8ba"), n("62e4")(e))
+    }, "2ef0f": function (e, t, n) { "use strict"; n("b2a3"), n("7d8a"), n("06f4") }, "2f50": function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("8e8e"), a = n.n(o), s = n("6042"), c = n.n(s), l = n("4d91"), u = n("9b57"), h = n.n(u), f = n("daa3"), d = n("8496"), p = n("b8ad"), v = n.n(p), m = n("b488"), g = { name: "CascaderMenus", mixins: [m["a"]], props: { value: l["a"].array.def([]), activeValue: l["a"].array.def([]), options: l["a"].array, prefixCls: l["a"].string.def("rc-cascader-menus"), expandTrigger: l["a"].string.def("click"), visible: l["a"].bool.def(!1), dropdownMenuColumnStyle: l["a"].object, defaultFieldNames: l["a"].object, fieldNames: l["a"].object, expandIcon: l["a"].any, loadingIcon: l["a"].any }, data: function () { return this.menuItems = {}, {} }, watch: { visible: function (e) { var t = this; e && this.$nextTick((function () { t.scrollActiveItemToView() })) } }, mounted: function () { var e = this; this.$nextTick((function () { e.scrollActiveItemToView() })) }, methods: { getFieldName: function (e) { var t = this.$props, n = t.fieldNames, r = t.defaultFieldNames; return n[e] || r[e] }, getOption: function (e, t) { var n = this, r = this.$createElement, i = this.prefixCls, o = this.expandTrigger, a = Object(f["g"])(this, "loadingIcon"), s = Object(f["g"])(this, "expandIcon"), c = function (r) { n.__emit("select", e, t, r) }, l = function (r) { n.__emit("itemDoubleClick", e, t, r) }, u = e[this.getFieldName("value")], h = { attrs: { role: "menuitem" }, on: { click: c, dblclick: l, mousedown: function (e) { return e.preventDefault() } }, key: Array.isArray(u) ? u.join("__ant__") : u }, d = i + "-menu-item", p = null, v = e[this.getFieldName("children")] && e[this.getFieldName("children")].length > 0; (v || !1 === e.isLeaf) && (d += " " + i + "-menu-item-expand", e.loading || (p = r("span", { class: i + "-menu-item-expand-icon" }, [s]))), "hover" !== o || !v && !1 !== e.isLeaf || (h.on = { mouseenter: this.delayOnSelect.bind(this, c), mouseleave: this.delayOnSelect.bind(this), click: c }), this.isActiveOption(e, t) && (d += " " + i + "-menu-item-active", h.ref = this.getMenuItemRef(t)), e.disabled && (d += " " + i + "-menu-item-disabled"); var m = null; e.loading && (d += " " + i + "-menu-item-loading", m = a || null); var g = ""; return e.title ? g = e.title : "string" === typeof e[this.getFieldName("label")] && (g = e[this.getFieldName("label")]), h.attrs.title = g, h["class"] = d, r("li", h, [e[this.getFieldName("label")], p, m]) }, getActiveOptions: function (e) { var t = this, n = e || this.activeValue, r = this.options; return v()(r, (function (e, r) { return e[t.getFieldName("value")] === n[r] }), { childrenKeyName: this.getFieldName("children") }) }, getShowOptions: function () { var e = this, t = this.options, n = this.getActiveOptions().map((function (t) { return t[e.getFieldName("children")] })).filter((function (e) { return !!e })); return n.unshift(t), n }, delayOnSelect: function (e) { for (var t = this, n = arguments.length, r = Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++)r[i - 1] = arguments[i]; this.delayTimer && (clearTimeout(this.delayTimer), this.delayTimer = null), "function" === typeof e && (this.delayTimer = setTimeout((function () { e(r), t.delayTimer = null }), 150)) }, scrollActiveItemToView: function () { for (var e = this.getShowOptions().length, t = 0; t < e; t++) { var n = this.$refs["menuItems_" + t]; if (n) { var r = n; r.parentNode.scrollTop = r.offsetTop } } }, isActiveOption: function (e, t) { var n = this.activeValue, r = void 0 === n ? [] : n; return r[t] === e[this.getFieldName("value")] }, getMenuItemRef: function (e) { return "menuItems_" + e } }, render: function () { var e = this, t = arguments[0], n = this.prefixCls, r = this.dropdownMenuColumnStyle; return t("div", [this.getShowOptions().map((function (i, o) { return t("ul", { class: n + "-menu", key: o, style: r }, [i.map((function (t) { return e.getOption(t, o) }))]) }))]) } }, y = n("18a7"), b = n("c2b3"), x = n.n(b), w = n("7b05"), _ = { bottomLeft: { points: ["tl", "bl"], offset: [0, 4], overflow: { adjustX: 1, adjustY: 1 } }, topLeft: { points: ["bl", "tl"], offset: [0, -4], overflow: { adjustX: 1, adjustY: 1 } }, bottomRight: { points: ["tr", "br"], offset: [0, 4], overflow: { adjustX: 1, adjustY: 1 } }, topRight: { points: ["br", "tr"], offset: [0, -4], overflow: { adjustX: 1, adjustY: 1 } } }, C = { mixins: [m["a"]], model: { prop: "value", event: "change" }, props: { value: l["a"].array, defaultValue: l["a"].array, options: l["a"].array, popupVisible: l["a"].bool, disabled: l["a"].bool.def(!1), transitionName: l["a"].string.def(""), popupClassName: l["a"].string.def(""), popupStyle: l["a"].object.def((function () { return {} })), popupPlacement: l["a"].string.def("bottomLeft"), prefixCls: l["a"].string.def("rc-cascader"), dropdownMenuColumnStyle: l["a"].object, builtinPlacements: l["a"].object.def(_), loadData: l["a"].func, changeOnSelect: l["a"].bool, expandTrigger: l["a"].string.def("click"), fieldNames: l["a"].object.def((function () { return { label: "label", value: "value", children: "children" } })), expandIcon: l["a"].any, loadingIcon: l["a"].any, getPopupContainer: l["a"].func }, data: function () { var e = [], t = this.value, n = this.defaultValue, r = this.popupVisible; return Object(f["s"])(this, "value") ? e = t || [] : Object(f["s"])(this, "defaultValue") && (e = n || []), { sPopupVisible: r, sActiveValue: e, sValue: e } }, watch: { value: function (e, t) { if (!x()(e, t)) { var n = { sValue: e || [] }; Object(f["s"])(this, "loadData") || (n.sActiveValue = e || []), this.setState(n) } }, popupVisible: function (e) { this.setState({ sPopupVisible: e }) } }, methods: { getPopupDOMNode: function () { return this.$refs.trigger.getPopupDomNode() }, getFieldName: function (e) { var t = this.defaultFieldNames, n = this.fieldNames; return n[e] || t[e] }, getFieldNames: function () { return this.fieldNames }, getCurrentLevelOptions: function () { var e = this, t = this.options, n = void 0 === t ? [] : t, r = this.sActiveValue, i = void 0 === r ? [] : r, o = v()(n, (function (t, n) { return t[e.getFieldName("value")] === i[n] }), { childrenKeyName: this.getFieldName("children") }); return o[o.length - 2] ? o[o.length - 2][this.getFieldName("children")] : [].concat(h()(n)).filter((function (e) { return !e.disabled })) }, getActiveOptions: function (e) { var t = this; return v()(this.options || [], (function (n, r) { return n[t.getFieldName("value")] === e[r] }), { childrenKeyName: this.getFieldName("children") }) }, setPopupVisible: function (e) { Object(f["s"])(this, "popupVisible") || this.setState({ sPopupVisible: e }), e && !this.sPopupVisible && this.setState({ sActiveValue: this.sValue }), this.__emit("popupVisibleChange", e) }, handleChange: function (e, t, n) { var r = this; "keydown" === n.type && n.keyCode !== y["a"].ENTER || (this.__emit("change", e.map((function (e) { return e[r.getFieldName("value")] })), e), this.setPopupVisible(t.visible)) }, handlePopupVisibleChange: function (e) { this.setPopupVisible(e) }, handleMenuSelect: function (e, t, n) { var r = this.$refs.trigger.getRootDomNode(); r && r.focus && r.focus(); var i = this.changeOnSelect, o = this.loadData, a = this.expandTrigger; if (e && !e.disabled) { var s = this.sActiveValue; s = s.slice(0, t + 1), s[t] = e[this.getFieldName("value")]; var c = this.getActiveOptions(s); if (!1 === e.isLeaf && !e[this.getFieldName("children")] && o) return i && this.handleChange(c, { visible: !0 }, n), this.setState({ sActiveValue: s }), void o(c); var l = {}; e[this.getFieldName("children")] && e[this.getFieldName("children")].length ? !i || "click" !== n.type && "keydown" !== n.type || ("hover" === a ? this.handleChange(c, { visible: !1 }, n) : this.handleChange(c, { visible: !0 }, n), l.sValue = s) : (this.handleChange(c, { visible: !1 }, n), l.sValue = s), l.sActiveValue = s, (Object(f["s"])(this, "value") || "keydown" === n.type && n.keyCode !== y["a"].ENTER) && delete l.sValue, this.setState(l) } }, handleItemDoubleClick: function () { var e = this.$props.changeOnSelect; e && this.setPopupVisible(!1) }, handleKeyDown: function (e) { var t = this, n = this.$slots, r = n["default"] && n["default"][0]; if (r) { var i = Object(f["i"])(r).keydown; if (i) return void i(e) } var o = [].concat(h()(this.sActiveValue)), a = o.length - 1 < 0 ? 0 : o.length - 1, s = this.getCurrentLevelOptions(), c = s.map((function (e) { return e[t.getFieldName("value")] })).indexOf(o[a]); if (e.keyCode === y["a"].DOWN || e.keyCode === y["a"].UP || e.keyCode === y["a"].LEFT || e.keyCode === y["a"].RIGHT || e.keyCode === y["a"].ENTER || e.keyCode === y["a"].SPACE || e.keyCode === y["a"].BACKSPACE || e.keyCode === y["a"].ESC || e.keyCode === y["a"].TAB) if (this.sPopupVisible || e.keyCode === y["a"].BACKSPACE || e.keyCode === y["a"].LEFT || e.keyCode === y["a"].RIGHT || e.keyCode === y["a"].ESC || e.keyCode === y["a"].TAB) { if (e.keyCode === y["a"].DOWN || e.keyCode === y["a"].UP) { e.preventDefault(); var l = c; -1 !== l ? e.keyCode === y["a"].DOWN ? (l += 1, l = l >= s.length ? 0 : l) : (l -= 1, l = l < 0 ? s.length - 1 : l) : l = 0, o[a] = s[l][this.getFieldName("value")] } else if (e.keyCode === y["a"].LEFT || e.keyCode === y["a"].BACKSPACE) e.preventDefault(), o.splice(o.length - 1, 1); else if (e.keyCode === y["a"].RIGHT) e.preventDefault(), s[c] && s[c][this.getFieldName("children")] && o.push(s[c][this.getFieldName("children")][0][this.getFieldName("value")]); else if (e.keyCode === y["a"].ESC || e.keyCode === y["a"].TAB) return void this.setPopupVisible(!1); o && 0 !== o.length || this.setPopupVisible(!1); var u = this.getActiveOptions(o), d = u[u.length - 1]; this.handleMenuSelect(d, u.length - 1, e), this.__emit("keydown", e) } else this.setPopupVisible(!0) } }, render: function () { var e = arguments[0], t = this.$props, n = this.sActiveValue, r = this.handleMenuSelect, o = this.sPopupVisible, s = this.handlePopupVisibleChange, c = this.handleKeyDown, l = Object(f["k"])(this), u = t.prefixCls, h = t.transitionName, p = t.popupClassName, v = t.options, m = void 0 === v ? [] : v, y = t.disabled, b = t.builtinPlacements, x = t.popupPlacement, _ = a()(t, ["prefixCls", "transitionName", "popupClassName", "options", "disabled", "builtinPlacements", "popupPlacement"]), C = e("div"), M = ""; if (m && m.length > 0) { var O = Object(f["g"])(this, "loadingIcon"), k = Object(f["g"])(this, "expandIcon") || ">", S = { props: i()({}, t, { fieldNames: this.getFieldNames(), defaultFieldNames: this.defaultFieldNames, activeValue: n, visible: o, loadingIcon: O, expandIcon: k }), on: i()({}, l, { select: r, itemDoubleClick: this.handleItemDoubleClick }) }; C = e(g, S) } else M = " " + u + "-menus-empty"; var T = { props: i()({}, _, { disabled: y, popupPlacement: x, builtinPlacements: b, popupTransitionName: h, action: y ? [] : ["click"], popupVisible: !y && o, prefixCls: u + "-menus", popupClassName: p + M }), on: i()({}, l, { popupVisibleChange: s }), ref: "trigger" }, A = Object(f["n"])(this, "default")[0]; return e(d["a"], T, [A && Object(w["a"])(A, { on: { keydown: c }, attrs: { tabIndex: y ? void 0 : 0 } }), e("template", { slot: "popup" }, [C])]) } }, M = C, O = n("4d26"), k = n.n(O), S = n("0464"), T = n("b558"), A = n("0c63"), L = n("6a21"), j = n("9cba"), z = n("db14"), E = l["a"].shape({ value: l["a"].oneOfType([l["a"].string, l["a"].number]), label: l["a"].any, disabled: l["a"].bool, children: l["a"].array, key: l["a"].oneOfType([l["a"].string, l["a"].number]) }).loose, P = l["a"].shape({ value: l["a"].string.isRequired, label: l["a"].string.isRequired, children: l["a"].string }).loose, D = l["a"].oneOf(["click", "hover"]), H = l["a"].shape({ filter: l["a"].func, render: l["a"].func, sort: l["a"].func, matchInputWidth: l["a"].bool, limit: l["a"].oneOfType([Boolean, Number]) }).loose; function V() { } var I = { options: l["a"].arrayOf(E).def([]), defaultValue: l["a"].array, value: l["a"].array, displayRender: l["a"].func, transitionName: l["a"].string.def("slide-up"), popupStyle: l["a"].object.def((function () { return {} })), popupClassName: l["a"].string, popupPlacement: l["a"].oneOf(["bottomLeft", "bottomRight", "topLeft", "topRight"]).def("bottomLeft"), placeholder: l["a"].string.def("Please select"), size: l["a"].oneOf(["large", "default", "small"]), disabled: l["a"].bool.def(!1), allowClear: l["a"].bool.def(!0), showSearch: l["a"].oneOfType([Boolean, H]), notFoundContent: l["a"].any, loadData: l["a"].func, expandTrigger: D, changeOnSelect: l["a"].bool, prefixCls: l["a"].string, inputPrefixCls: l["a"].string, getPopupContainer: l["a"].func, popupVisible: l["a"].bool, fieldNames: P, autoFocus: l["a"].bool, suffixIcon: l["a"].any }, N = 50; function R(e, t, n) { return t.some((function (t) { return t[n.label].indexOf(e) > -1 })) } function F(e, t, n, r) { function i(e) { return e[r.label].indexOf(n) > -1 } return e.findIndex(i) - t.findIndex(i) } function Y(e) { var t = e.fieldNames, n = void 0 === t ? {} : t, r = { children: n.children || "children", label: n.label || "label", value: n.value || "value" }; return r } function $() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = arguments[1], n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [], r = Y(t), i = [], o = r.children; return e.forEach((function (e) { var r = n.concat(e); !t.changeOnSelect && e[o] && e[o].length || i.push(r), e[o] && (i = i.concat($(e[o], t, r))) })), i } var B = function (e) { var t = e.labels; return t.join(" / ") }, W = { inheritAttrs: !1, name: "ACascader", mixins: [m["a"]], props: I, model: { prop: "value", event: "change" }, provide: function () { return { savePopupRef: this.savePopupRef } }, inject: { configProvider: { default: function () { return j["a"] } }, localeData: { default: function () { return {} } } }, data: function () { this.cachedOptions = []; var e = this.value, t = this.defaultValue, n = this.popupVisible, r = this.showSearch, i = this.options; return { sValue: e || t || [], inputValue: "", inputFocused: !1, sPopupVisible: n, flattenOptions: r ? $(i, this.$props) : void 0 } }, mounted: function () { var e = this; this.$nextTick((function () { !e.autoFocus || e.showSearch || e.disabled || e.$refs.picker.focus() })) }, watch: { value: function (e) { this.setState({ sValue: e || [] }) }, popupVisible: function (e) { this.setState({ sPopupVisible: e }) }, options: function (e) { this.showSearch && this.setState({ flattenOptions: $(e, this.$props) }) } }, methods: { savePopupRef: function (e) { this.popupRef = e }, highlightKeyword: function (e, t, n) { var r = this.$createElement; return e.split(t).map((function (e, i) { return 0 === i ? e : [r("span", { class: n + "-menu-item-keyword" }, [t]), e] })) }, defaultRenderFilteredOption: function (e) { var t = this, n = e.inputValue, r = e.path, i = e.prefixCls, o = e.names; return r.map((function (e, r) { var a = e[o.label], s = a.indexOf(n) > -1 ? t.highlightKeyword(a, n, i) : a; return 0 === r ? s : [" / ", s] })) }, handleChange: function (e, t) { if (this.setState({ inputValue: "" }), t[0].__IS_FILTERED_OPTION) { var n = e[0], r = t[0].path; this.setValue(n, r) } else this.setValue(e, t) }, handlePopupVisibleChange: function (e) { Object(f["s"])(this, "popupVisible") || this.setState((function (t) { return { sPopupVisible: e, inputFocused: e, inputValue: e ? t.inputValue : "" } })), this.$emit("popupVisibleChange", e) }, handleInputFocus: function (e) { this.$emit("focus", e) }, handleInputBlur: function (e) { this.setState({ inputFocused: !1 }), this.$emit("blur", e) }, handleInputClick: function (e) { var t = this.inputFocused, n = this.sPopupVisible; (t || n) && (e.stopPropagation(), e.nativeEvent && e.nativeEvent.stopImmediatePropagation && e.nativeEvent.stopImmediatePropagation()) }, handleKeyDown: function (e) { e.keyCode !== y["a"].BACKSPACE && e.keyCode !== y["a"].SPACE || e.stopPropagation() }, handleInputChange: function (e) { var t = e.target.value; this.setState({ inputValue: t }), this.$emit("search", t) }, setValue: function (e, t) { Object(f["s"])(this, "value") || this.setState({ sValue: e }), this.$emit("change", e, t) }, getLabel: function () { var e = this.options, t = this.$scopedSlots, n = Y(this.$props), r = this.displayRender || t.displayRender || B, i = this.sValue, o = Array.isArray(i[0]) ? i[0] : i, a = v()(e, (function (e, t) { return e[n.value] === o[t] }), { childrenKeyName: n.children }), s = a.map((function (e) { return e[n.label] })); return r({ labels: s, selectedOptions: a }) }, clearSelection: function (e) { e.preventDefault(), e.stopPropagation(), this.inputValue ? this.setState({ inputValue: "" }) : (this.setValue([]), this.handlePopupVisibleChange(!1)) }, generateFilteredOptions: function (e, t) { var n, r = this.$createElement, i = this.showSearch, o = this.notFoundContent, a = this.$scopedSlots, s = Y(this.$props), l = i.filter, u = void 0 === l ? R : l, h = i.sort, f = void 0 === h ? F : h, d = i.limit, p = void 0 === d ? N : d, v = i.render || a.showSearchRender || this.defaultRenderFilteredOption, m = this.$data, g = m.flattenOptions, y = void 0 === g ? [] : g, b = m.inputValue, x = void 0; if (p > 0) { x = []; var w = 0; y.some((function (e) { var t = u(b, e, s); return t && (x.push(e), w += 1), w >= p })) } else Object(L["a"])("number" !== typeof p, "Cascader", "'limit' of showSearch in Cascader should be positive number or false."), x = y.filter((function (e) { return u(b, e, s) })); return x.sort((function (e, t) { return f(e, t, b, s) })), x.length > 0 ? x.map((function (t) { var n; return n = { __IS_FILTERED_OPTION: !0, path: t }, c()(n, s.label, v({ inputValue: b, path: t, prefixCls: e, names: s })), c()(n, s.value, t.map((function (e) { return e[s.value] }))), c()(n, "disabled", t.some((function (e) { return !!e.disabled }))), n })) : [(n = {}, c()(n, s.label, o || t(r, "Cascader")), c()(n, s.value, "ANT_CASCADER_NOT_FOUND"), c()(n, "disabled", !0), n)] }, focus: function () { this.showSearch ? this.$refs.input.focus() : this.$refs.picker.focus() }, blur: function () { this.showSearch ? this.$refs.input.blur() : this.$refs.picker.blur() } }, render: function () { var e, t, n, r = arguments[0], o = this.$slots, s = this.sPopupVisible, l = this.inputValue, u = this.configProvider, h = this.localeData, d = this.$data, p = d.sValue, v = d.inputFocused, m = Object(f["l"])(this), g = Object(f["g"])(this, "suffixIcon"); g = Array.isArray(g) ? g[0] : g; var y, b = u.getPopupContainer, x = m.prefixCls, _ = m.inputPrefixCls, C = m.placeholder, O = void 0 === C ? h.placeholder : C, L = m.size, j = m.disabled, z = m.allowClear, E = m.showSearch, P = void 0 !== E && E, D = m.notFoundContent, H = a()(m, ["prefixCls", "inputPrefixCls", "placeholder", "size", "disabled", "allowClear", "showSearch", "notFoundContent"]), I = this.configProvider.getPrefixCls, N = this.configProvider.renderEmpty, R = I("cascader", x), F = I("input", _), $ = k()((e = {}, c()(e, F + "-lg", "large" === L), c()(e, F + "-sm", "small" === L), e)), B = z && !j && p.length > 0 || l ? r(A["a"], { attrs: { type: "close-circle", theme: "filled" }, class: R + "-picker-clear", on: { click: this.clearSelection }, key: "clear-icon" }) : null, W = k()((t = {}, c()(t, R + "-picker-arrow", !0), c()(t, R + "-picker-arrow-expand", s), t)), q = k()(Object(f["f"])(this), R + "-picker", (n = {}, c()(n, R + "-picker-with-value", l), c()(n, R + "-picker-disabled", j), c()(n, R + "-picker-" + L, !!L), c()(n, R + "-picker-show-search", !!P), c()(n, R + "-picker-focused", v), n)), U = Object(S["a"])(H, ["options", "popupPlacement", "transitionName", "displayRender", "changeOnSelect", "expandTrigger", "popupVisible", "getPopupContainer", "loadData", "popupClassName", "filterOption", "renderFilteredOption", "sortFilteredOption", "notFoundContent", "defaultValue", "fieldNames"]), K = m.options, G = Y(this.$props); K && K.length > 0 ? l && (K = this.generateFilteredOptions(R, N)) : K = [(y = {}, c()(y, G.label, D || N(r, "Cascader")), c()(y, G.value, "ANT_CASCADER_NOT_FOUND"), c()(y, "disabled", !0), y)]; s ? this.cachedOptions = K : K = this.cachedOptions; var X = {}, J = 1 === (K || []).length && "ANT_CASCADER_NOT_FOUND" === K[0].value; J && (X.height = "auto"); var Q = !1 !== P.matchInputWidth; Q && (l || J) && this.$refs.input && (X.width = this.$refs.input.$el.offsetWidth + "px"); var Z = { props: i()({}, U, { prefixCls: F, placeholder: p && p.length > 0 ? void 0 : O, value: l, disabled: j, readOnly: !P, autoComplete: "off" }), class: R + "-input " + $, ref: "input", on: { focus: P ? this.handleInputFocus : V, click: P ? this.handleInputClick : V, blur: P ? this.handleInputBlur : V, keydown: this.handleKeyDown, change: P ? this.handleInputChange : V }, attrs: Object(f["e"])(this) }, ee = Object(f["c"])(o["default"]), te = g && (Object(f["w"])(g) ? Object(w["a"])(g, { class: c()({}, R + "-picker-arrow", !0) }) : r("span", { class: R + "-picker-arrow" }, [g])) || r(A["a"], { attrs: { type: "down" }, class: W }), ne = ee.length ? ee : r("span", { class: q, style: Object(f["q"])(this), ref: "picker" }, [P ? r("span", { class: R + "-picker-label" }, [this.getLabel()]) : null, r(T["a"], Z), P ? null : r("span", { class: R + "-picker-label" }, [this.getLabel()]), B, te]), re = r(A["a"], { attrs: { type: "right" } }), ie = r("span", { class: R + "-menu-item-loading-icon" }, [r(A["a"], { attrs: { type: "redo", spin: !0 } })]), oe = m.getPopupContainer || b, ae = { props: i()({}, m, { getPopupContainer: oe, options: K, prefixCls: R, value: p, popupVisible: s, dropdownMenuColumnStyle: X, expandIcon: re, loadingIcon: ie }), on: i()({}, Object(f["k"])(this), { popupVisibleChange: this.handlePopupVisibleChange, change: this.handleChange }) }; return r(M, ae, [ne]) }, install: function (e) { e.use(z["a"]), e.component(W.name, W) } }; t["a"] = W }, "2f9a": function (e, t) { e.exports = function () { } }, "2fc4": function (e, t, n) { "use strict"; var r = n("9b57"), i = n.n(r), o = n("4d91"), a = n("7b05"), s = n("daa3"), c = n("6a21"), l = n("9cba"), u = n("c1b3"), h = n("0c63"), f = { name: "ABreadcrumbItem", __ANT_BREADCRUMB_ITEM: !0, props: { prefixCls: o["a"].string, href: o["a"].string, separator: o["a"].any.def("/"), overlay: o["a"].any }, inject: { configProvider: { default: function () { return l["a"] } } }, methods: { renderBreadcrumbNode: function (e, t) { var n = this.$createElement, r = Object(s["g"])(this, "overlay"); return r ? n(u["a"], { attrs: { overlay: r, placement: "bottomCenter" } }, [n("span", { class: t + "-overlay-link" }, [e, n(h["a"], { attrs: { type: "down" } })])]) : e } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.$slots, r = this.configProvider.getPrefixCls, i = r("breadcrumb", t), o = Object(s["g"])(this, "separator"), a = n["default"], c = void 0; return c = Object(s["s"])(this, "href") ? e("a", { class: i + "-link" }, [a]) : e("span", { class: i + "-link" }, [a]), c = this.renderBreadcrumbNode(c, i), a ? e("span", [c, o && "" !== o && e("span", { class: i + "-separator" }, [o])]) : null } }, d = n("55f1"), p = o["a"].shape({ path: o["a"].string, breadcrumbName: o["a"].string, children: o["a"].array }).loose, v = { prefixCls: o["a"].string, routes: o["a"].arrayOf(p), params: o["a"].any, separator: o["a"].any, itemRender: o["a"].func }; function m(e, t) { if (!e.breadcrumbName) return null; var n = Object.keys(t).join("|"), r = e.breadcrumbName.replace(new RegExp(":(" + n + ")", "g"), (function (e, n) { return t[n] || e })); return r } var g = { name: "ABreadcrumb", props: v, inject: { configProvider: { default: function () { return l["a"] } } }, methods: { defaultItemRender: function (e) { var t = e.route, n = e.params, r = e.routes, i = e.paths, o = this.$createElement, a = r.indexOf(t) === r.length - 1, s = m(t, n); return a ? o("span", [s]) : o("a", { attrs: { href: "#/" + i.join("/") } }, [s]) }, getPath: function (e, t) { return e = (e || "").replace(/^\//, ""), Object.keys(t).forEach((function (n) { e = e.replace(":" + n, t[n]) })), e }, addChildPath: function (e, t, n) { var r = [].concat(i()(e)), o = this.getPath(t, n); return o && r.push(o), r }, genForRoutes: function (e) { var t = this, n = e.routes, r = void 0 === n ? [] : n, i = e.params, o = void 0 === i ? {} : i, a = e.separator, s = e.itemRender, c = void 0 === s ? this.defaultItemRender : s, l = this.$createElement, u = []; return r.map((function (e) { var n = t.getPath(e.path, o); n && u.push(n); var i = null; return e.children && e.children.length && (i = l(d["a"], [e.children.map((function (e) { return l(d["a"].Item, { key: e.path || e.breadcrumbName }, [c({ route: e, params: o, routes: r, paths: t.addChildPath(u, e.path, o), h: t.$createElement })]) }))])), l(f, { attrs: { overlay: i, separator: a }, key: n || e.breadcrumbName }, [c({ route: e, params: o, routes: r, paths: u, h: t.$createElement })]) })) } }, render: function () { var e = arguments[0], t = void 0, n = this.prefixCls, r = this.routes, i = this.params, o = void 0 === i ? {} : i, l = this.$slots, u = this.$scopedSlots, h = this.configProvider.getPrefixCls, f = h("breadcrumb", n), d = Object(s["c"])(l["default"]), p = Object(s["g"])(this, "separator"), v = this.itemRender || u.itemRender || this.defaultItemRender; return r && r.length > 0 ? t = this.genForRoutes({ routes: r, params: o, separator: p, itemRender: v }) : d.length && (t = d.map((function (e, t) { return Object(c["a"])(Object(s["o"])(e).__ANT_BREADCRUMB_ITEM || Object(s["o"])(e).__ANT_BREADCRUMB_SEPARATOR, "Breadcrumb", "Only accepts Breadcrumb.Item and Breadcrumb.Separator as it's children"), Object(a["a"])(e, { props: { separator: p }, key: t }) }))), e("div", { class: f }, [t]) } }, y = { name: "ABreadcrumbSeparator", __ANT_BREADCRUMB_SEPARATOR: !0, props: { prefixCls: o["a"].string }, inject: { configProvider: { default: function () { return l["a"] } } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.$slots, r = this.configProvider.getPrefixCls, i = r("breadcrumb", t), o = n["default"]; return e("span", { class: i + "-separator" }, [o || "/"]) } }, b = n("db14"); g.Item = f, g.Separator = y, g.install = function (e) { e.use(b["a"]), e.component(g.name, g), e.component(f.name, f), e.component(y.name, y) }; t["a"] = g }, "2fcc": function (e, t) { function n(e) { var t = this.__data__, n = t["delete"](e); return this.size = t.size, n } e.exports = n }, "2fcd": function (e, t, n) { "use strict"; var r = n("8e8e"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("8bbf"), c = n.n(s), l = n("4d91"), u = n("daa3"), h = n("b488"), f = n("3f50"), d = n("94eb"); function p() { } var v = { mixins: [h["a"]], props: { duration: l["a"].number.def(1.5), closable: l["a"].bool, prefixCls: l["a"].string, update: l["a"].bool, closeIcon: l["a"].any }, watch: { duration: function () { this.restartCloseTimer() } }, mounted: function () { this.startCloseTimer() }, updated: function () { this.update && this.restartCloseTimer() }, beforeDestroy: function () { this.clearCloseTimer(), this.willDestroy = !0 }, methods: { close: function (e) { e && e.stopPropagation(), this.clearCloseTimer(), this.__emit("close") }, startCloseTimer: function () { var e = this; this.clearCloseTimer(), !this.willDestroy && this.duration && (this.closeTimer = setTimeout((function () { e.close() }), 1e3 * this.duration)) }, clearCloseTimer: function () { this.closeTimer && (clearTimeout(this.closeTimer), this.closeTimer = null) }, restartCloseTimer: function () { this.clearCloseTimer(), this.startCloseTimer() } }, render: function () { var e, t = arguments[0], n = this.prefixCls, r = this.closable, i = this.clearCloseTimer, o = this.startCloseTimer, s = this.$slots, c = this.close, l = n + "-notice", h = (e = {}, a()(e, "" + l, 1), a()(e, l + "-closable", r), e), f = Object(u["q"])(this), d = Object(u["g"])(this, "closeIcon"); return t("div", { class: h, style: f || { right: "50%" }, on: { mouseenter: i, mouseleave: o, click: Object(u["k"])(this).click || p } }, [t("div", { class: l + "-content" }, [s["default"]]), r ? t("a", { attrs: { tabIndex: "0" }, on: { click: c }, class: l + "-close" }, [d || t("span", { class: l + "-close-x" })]) : null]) } }, m = n("db14"); function g() { } var y = 0, b = Date.now(); function x() { return "rcNotification_" + b + "_" + y++ } var w = { mixins: [h["a"]], props: { prefixCls: l["a"].string.def("rc-notification"), transitionName: l["a"].string, animation: l["a"].oneOfType([l["a"].string, l["a"].object]).def("fade"), maxCount: l["a"].number, closeIcon: l["a"].any }, data: function () { return { notices: [] } }, methods: { getTransitionName: function () { var e = this.$props, t = e.transitionName; return !t && e.animation && (t = e.prefixCls + "-" + e.animation), t }, add: function (e) { var t = e.key = e.key || x(), n = this.$props.maxCount; this.setState((function (r) { var i = r.notices, o = i.map((function (e) { return e.key })).indexOf(t), a = i.concat(); return -1 !== o ? a.splice(o, 1, e) : (n && i.length >= n && (e.updateKey = a[0].updateKey || a[0].key, a.shift()), a.push(e)), { notices: a } })) }, remove: function (e) { this.setState((function (t) { return { notices: t.notices.filter((function (t) { return t.key !== e })) } })) } }, render: function (e) { var t = this, n = this.prefixCls, r = this.notices, i = this.remove, o = this.getTransitionName, s = Object(d["a"])(o()), c = r.map((function (o, a) { var s = Boolean(a === r.length - 1 && o.updateKey), c = o.updateKey ? o.updateKey : o.key, l = o.content, h = o.duration, d = o.closable, p = o.onClose, m = o.style, y = o["class"], b = Object(f["a"])(i.bind(t, o.key), p), x = { props: { prefixCls: n, duration: h, closable: d, update: s, closeIcon: Object(u["g"])(t, "closeIcon") }, on: { close: b, click: o.onClick || g }, style: m, class: y, key: c }; return e(v, x, ["function" === typeof l ? l(e) : l]) })), l = a()({}, n, 1), h = Object(u["q"])(this); return e("div", { class: l, style: h || { top: "65px", left: "50%" } }, [e("transition-group", s, [c])]) }, newInstance: function (e, t) { var n = e || {}, r = n.getContainer, o = n.style, a = n["class"], s = i()(n, ["getContainer", "style", "class"]), l = document.createElement("div"); if (r) { var u = r(); u.appendChild(l) } else document.body.appendChild(l); var h = m["a"].Vue || c.a; new h({ el: l, mounted: function () { var e = this; this.$nextTick((function () { t({ notice: function (t) { e.$refs.notification.add(t) }, removeNotice: function (t) { e.$refs.notification.remove(t) }, component: e, destroy: function () { e.$destroy(), e.$el.parentNode.removeChild(e.$el) } }) })) }, render: function () { var e = arguments[0], t = { props: s, ref: "notification", style: o, class: a }; return e(w, t) } }) } }, _ = w; t["a"] = _ }, "301c": function (e, t, n) { n("e198")("asyncIterator") }, "30c9": function (e, t, n) { var r = n("9520"), i = n("b218"); function o(e) { return null != e && i(e.length) && !r(e) } e.exports = o }, "320c": function (e, t, n) {
+        "use strict";
+/*
+object-assign
+(c) Sindre Sorhus
+@license MIT
+*/var r = Object.getOwnPropertySymbols, i = Object.prototype.hasOwnProperty, o = Object.prototype.propertyIsEnumerable; function a(e) { if (null === e || void 0 === e) throw new TypeError("Object.assign cannot be called with null or undefined"); return Object(e) } function s() { try { if (!Object.assign) return !1; var e = new String("abc"); if (e[5] = "de", "5" === Object.getOwnPropertyNames(e)[0]) return !1; for (var t = {}, n = 0; n < 10; n++)t["_" + String.fromCharCode(n)] = n; var r = Object.getOwnPropertyNames(t).map((function (e) { return t[e] })); if ("0123456789" !== r.join("")) return !1; var i = {}; return "abcdefghijklmnopqrst".split("").forEach((function (e) { i[e] = e })), "abcdefghijklmnopqrst" === Object.keys(Object.assign({}, i)).join("") } catch (o) { return !1 } } e.exports = s() ? Object.assign : function (e, t) { for (var n, s, c = a(e), l = 1; l < arguments.length; l++) { for (var u in n = Object(arguments[l]), n) i.call(n, u) && (c[u] = n[u]); if (r) { s = r(n); for (var h = 0; h < s.length; h++)o.call(n, s[h]) && (c[s[h]] = n[s[h]]) } } return c }
+    }, "323e": function (e, t, n) {
+        var r, i;
+/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
+ * @license MIT */(function (o, a) { r = a, i = "function" === typeof r ? r.call(t, n, t, e) : r, void 0 === i || (e.exports = i) })(0, (function () { var e = { version: "0.2.0" }, t = e.settings = { minimum: .08, easing: "ease", positionUsing: "", speed: 200, trickle: !0, trickleRate: .02, trickleSpeed: 800, showSpinner: !0, barSelector: '[role="bar"]', spinnerSelector: '[role="spinner"]', parent: "body", template: '<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>' }; function n(e, t, n) { return e < t ? t : e > n ? n : e } function r(e) { return 100 * (-1 + e) } function i(e, n, i) { var o; return o = "translate3d" === t.positionUsing ? { transform: "translate3d(" + r(e) + "%,0,0)" } : "translate" === t.positionUsing ? { transform: "translate(" + r(e) + "%,0)" } : { "margin-left": r(e) + "%" }, o.transition = "all " + n + "ms " + i, o } e.configure = function (e) { var n, r; for (n in e) r = e[n], void 0 !== r && e.hasOwnProperty(n) && (t[n] = r); return this }, e.status = null, e.set = function (r) { var s = e.isStarted(); r = n(r, t.minimum, 1), e.status = 1 === r ? null : r; var c = e.render(!s), l = c.querySelector(t.barSelector), u = t.speed, h = t.easing; return c.offsetWidth, o((function (n) { "" === t.positionUsing && (t.positionUsing = e.getPositioningCSS()), a(l, i(r, u, h)), 1 === r ? (a(c, { transition: "none", opacity: 1 }), c.offsetWidth, setTimeout((function () { a(c, { transition: "all " + u + "ms linear", opacity: 0 }), setTimeout((function () { e.remove(), n() }), u) }), u)) : setTimeout(n, u) })), this }, e.isStarted = function () { return "number" === typeof e.status }, e.start = function () { e.status || e.set(0); var n = function () { setTimeout((function () { e.status && (e.trickle(), n()) }), t.trickleSpeed) }; return t.trickle && n(), this }, e.done = function (t) { return t || e.status ? e.inc(.3 + .5 * Math.random()).set(1) : this }, e.inc = function (t) { var r = e.status; return r ? ("number" !== typeof t && (t = (1 - r) * n(Math.random() * r, .1, .95)), r = n(r + t, 0, .994), e.set(r)) : e.start() }, e.trickle = function () { return e.inc(Math.random() * t.trickleRate) }, function () { var t = 0, n = 0; e.promise = function (r) { return r && "resolved" !== r.state() ? (0 === n && e.start(), t++, n++, r.always((function () { n--, 0 === n ? (t = 0, e.done()) : e.set((t - n) / t) })), this) : this } }(), e.render = function (n) { if (e.isRendered()) return document.getElementById("nprogress"); c(document.documentElement, "nprogress-busy"); var i = document.createElement("div"); i.id = "nprogress", i.innerHTML = t.template; var o, s = i.querySelector(t.barSelector), l = n ? "-100" : r(e.status || 0), u = document.querySelector(t.parent); return a(s, { transition: "all 0 linear", transform: "translate3d(" + l + "%,0,0)" }), t.showSpinner || (o = i.querySelector(t.spinnerSelector), o && h(o)), u != document.body && c(u, "nprogress-custom-parent"), u.appendChild(i), i }, e.remove = function () { l(document.documentElement, "nprogress-busy"), l(document.querySelector(t.parent), "nprogress-custom-parent"); var e = document.getElementById("nprogress"); e && h(e) }, e.isRendered = function () { return !!document.getElementById("nprogress") }, e.getPositioningCSS = function () { var e = document.body.style, t = "WebkitTransform" in e ? "Webkit" : "MozTransform" in e ? "Moz" : "msTransform" in e ? "ms" : "OTransform" in e ? "O" : ""; return t + "Perspective" in e ? "translate3d" : t + "Transform" in e ? "translate" : "margin" }; var o = function () { var e = []; function t() { var n = e.shift(); n && n(t) } return function (n) { e.push(n), 1 == e.length && t() } }(), a = function () { var e = ["Webkit", "O", "Moz", "ms"], t = {}; function n(e) { return e.replace(/^-ms-/, "ms-").replace(/-([\da-z])/gi, (function (e, t) { return t.toUpperCase() })) } function r(t) { var n = document.body.style; if (t in n) return t; var r, i = e.length, o = t.charAt(0).toUpperCase() + t.slice(1); while (i--) if (r = e[i] + o, r in n) return r; return t } function i(e) { return e = n(e), t[e] || (t[e] = r(e)) } function o(e, t, n) { t = i(t), e.style[t] = n } return function (e, t) { var n, r, i = arguments; if (2 == i.length) for (n in t) r = t[n], void 0 !== r && t.hasOwnProperty(n) && o(e, n, r); else o(e, i[1], i[2]) } }(); function s(e, t) { var n = "string" == typeof e ? e : u(e); return n.indexOf(" " + t + " ") >= 0 } function c(e, t) { var n = u(e), r = n + t; s(n, t) || (e.className = r.substring(1)) } function l(e, t) { var n, r = u(e); s(e, t) && (n = r.replace(" " + t + " ", " "), e.className = n.substring(1, n.length - 1)) } function u(e) { return (" " + (e.className || "") + " ").replace(/\s+/gi, " ") } function h(e) { e && e.parentNode && e.parentNode.removeChild(e) } return e }))
+    }, "325f": function (e, t, n) { }, "327d": function (e, t, n) { var r = n("50c6"), i = r((function (e, t, n) { e[n ? 0 : 1].push(t) }), (function () { return [[], []] })); e.exports = i }, 3280: function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("e58c"), o = r.aTypedArray, a = r.exportTypedArrayMethod; a("lastIndexOf", (function (e) { return i.apply(o(this), arguments) })) }, "32b3": function (e, t, n) { var r = n("872a"), i = n("9638"), o = Object.prototype, a = o.hasOwnProperty; function s(e, t, n) { var o = e[t]; a.call(e, t) && i(o, n) && (void 0 !== n || t in e) || r(e, t, n) } e.exports = s }, "32f4": function (e, t, n) { var r = n("2d7c"), i = n("d327"), o = Object.prototype, a = o.propertyIsEnumerable, s = Object.getOwnPropertySymbols, c = s ? function (e) { return null == e ? [] : (e = Object(e), r(s(e), (function (t) { return a.call(e, t) }))) } : i; e.exports = c }, "335d": function (e, t, n) { }, 3397: function (e, t, n) { var r = n("7a41"); e.exports = function (e, t) { if (!r(e)) return e; var n, i; if (t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; if ("function" == typeof (n = e.valueOf) && !r(i = n.call(e))) return i; if (!t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; throw TypeError("Can't convert object to primitive value") } }, "33e1": function (e, t, n) { "use strict"; var r; n.d(t, "a", (function () { return r })), function (e) { e[e["Trace"] = 0] = "Trace", e[e["Debug"] = 1] = "Debug", e[e["Information"] = 2] = "Information", e[e["Warning"] = 3] = "Warning", e[e["Error"] = 4] = "Error", e[e["Critical"] = 5] = "Critical", e[e["None"] = 6] = "None" }(r || (r = {})) }, 3410: function (e, t, n) { var r = n("23e7"), i = n("d039"), o = n("7b0b"), a = n("e163"), s = n("e177"), c = i((function () { a(1) })); r({ target: "Object", stat: !0, forced: c, sham: !s }, { getPrototypeOf: function (e) { return a(o(e)) } }) }, "342f": function (e, t, n) { var r = n("d066"); e.exports = r("navigator", "userAgent") || "" }, "34ac": function (e, t, n) { var r = n("9520"), i = n("1368"), o = n("1a8c"), a = n("dc57"), s = /[\\^$.*+?()[\]{}|]/g, c = /^\[object .+?Constructor\]$/, l = Function.prototype, u = Object.prototype, h = l.toString, f = u.hasOwnProperty, d = RegExp("^" + h.call(f).replace(s, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"); function p(e) { if (!o(e) || i(e)) return !1; var t = r(e) ? d : c; return t.test(a(e)) } e.exports = p }, "34c0": function (e, t, n) { "use strict"; n("979d"), n("dd48"), n("af3d") }, "357d": function (e, t, n) { }, 3593: function (e, t, n) { "use strict"; var r = n("18ce"), i = n("c449"), o = n.n(i), a = n("8bbf"), s = n.n(a); function c(e, t, n) { var i = void 0, a = void 0, s = void 0; return Object(r["a"])(e, "ant-motion-collapse-legacy", { start: function () { s && o.a.cancel(s), t ? (i = e.offsetHeight, 0 === i ? s = o()((function () { i = e.offsetHeight, e.style.height = "0px", e.style.opacity = "0" })) : (e.style.height = "0px", e.style.opacity = "0")) : (e.style.height = e.offsetHeight + "px", e.style.opacity = "1") }, active: function () { a && o.a.cancel(a), a = o()((function () { e.style.height = (t ? i : 0) + "px", e.style.opacity = t ? "1" : "0" })) }, end: function () { s && o.a.cancel(s), a && o.a.cancel(a), e.style.height = "", e.style.opacity = "", n && n() } }) } var l = { enter: function (e, t) { s.a.nextTick((function () { c(e, !0, t) })) }, leave: function (e, t) { return c(e, !1, t) } }; t["a"] = l }, "35a1": function (e, t, n) { var r = n("f5df"), i = n("3f8c"), o = n("b622"), a = o("iterator"); e.exports = function (e) { if (void 0 != e) return e[a] || e["@@iterator"] || i[r(e)] } }, "35b3": function (e, t, n) { var r = n("23e7"); r({ target: "Number", stat: !0 }, { EPSILON: Math.pow(2, -52) }) }, 3648: function (e, t, n) { }, 3654: function (e, t, n) { "use strict"; n.d(t, "b", (function () { return et })); var r = n("2ef0"), i = /on(.+)(MouseEnter|MouseMove|MouseLeave|Click|DdlClick|MouseDown|MouseUp|TouchStart|TouchMove|TouchEnd)/; function o(e, t, n, o) { if (!r["isEmpty"](n)) { var a = i.exec(n); if (a && !(a.length <= 2)) { var s = a[1].toLowerCase(), c = a[2].toLowerCase(), l = t + "-" + s; e.on(l + ":" + c, (function (t) { o && o(t, e) })) } } } function a(e, t, n) { if (!r["isEmpty"](n)) { var i = Object.keys(n).filter((function (e) { return /^on/.test(e) })); r["isEmpty"](i) || i.forEach((function (r) { var i = r.slice(2, r.length), o = i.toLowerCase(), a = n[r]; if (n.gemo && o.indexOf("label") >= 0) { var s = o.replace("label", ""); e.on("label:" + s, (function (t) { a && a(t, e) })) } else t ? e.on(t + ":" + o, (function (t) { a && a(t, e) })) : e.on(o, (function (t) { a && a(t, e) })) })) } } var s = function (e) { return Math.abs(e = Math.round(e)) >= 1e21 ? e.toLocaleString("en").replace(/,/g, "") : e.toString(10) }; function c(e, t) { if ((n = (e = t ? e.toExponential(t - 1) : e.toExponential()).indexOf("e")) < 0) return null; var n, r = e.slice(0, n); return [r.length > 1 ? r[0] + r.slice(2) : r, +e.slice(n + 1)] } var l = function (e) { return e = c(Math.abs(e)), e ? e[1] : NaN }, u = function (e, t) { return function (n, r) { var i = n.length, o = [], a = 0, s = e[0], c = 0; while (i > 0 && s > 0) { if (c + s + 1 > r && (s = Math.max(1, r - c)), o.push(n.substring(i -= s, i + s)), (c += s + 1) > r) break; s = e[a = (a + 1) % e.length] } return o.reverse().join(t) } }, h = function (e) { return function (t) { return t.replace(/[0-9]/g, (function (t) { return e[+t] })) } }, f = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; function d(e) { if (!(t = f.exec(e))) throw new Error("invalid format: " + e); var t; return new p({ fill: t[1], align: t[2], sign: t[3], symbol: t[4], zero: t[5], width: t[6], comma: t[7], precision: t[8] && t[8].slice(1), trim: t[9], type: t[10] }) } function p(e) { this.fill = void 0 === e.fill ? " " : e.fill + "", this.align = void 0 === e.align ? ">" : e.align + "", this.sign = void 0 === e.sign ? "-" : e.sign + "", this.symbol = void 0 === e.symbol ? "" : e.symbol + "", this.zero = !!e.zero, this.width = void 0 === e.width ? void 0 : +e.width, this.comma = !!e.comma, this.precision = void 0 === e.precision ? void 0 : +e.precision, this.trim = !!e.trim, this.type = void 0 === e.type ? "" : e.type + "" } d.prototype = p.prototype, p.prototype.toString = function () { return this.fill + this.align + this.sign + this.symbol + (this.zero ? "0" : "") + (void 0 === this.width ? "" : Math.max(1, 0 | this.width)) + (this.comma ? "," : "") + (void 0 === this.precision ? "" : "." + Math.max(0, 0 | this.precision)) + (this.trim ? "~" : "") + this.type }; var v, m, g, y = function (e) { e: for (var t, n = e.length, r = 1, i = -1; r < n; ++r)switch (e[r]) { case ".": i = t = r; break; case "0": 0 === i && (i = r), t = r; break; default: if (!+e[r]) break e; i > 0 && (i = 0); break }return i > 0 ? e.slice(0, i) + e.slice(t + 1) : e }, b = function (e, t) { var n = c(e, t); if (!n) return e + ""; var r = n[0], i = n[1], o = i - (v = 3 * Math.max(-8, Math.min(8, Math.floor(i / 3)))) + 1, a = r.length; return o === a ? r : o > a ? r + new Array(o - a + 1).join("0") : o > 0 ? r.slice(0, o) + "." + r.slice(o) : "0." + new Array(1 - o).join("0") + c(e, Math.max(0, t + o - 1))[0] }, x = function (e, t) { var n = c(e, t); if (!n) return e + ""; var r = n[0], i = n[1]; return i < 0 ? "0." + new Array(-i).join("0") + r : r.length > i + 1 ? r.slice(0, i + 1) + "." + r.slice(i + 1) : r + new Array(i - r.length + 2).join("0") }, w = { "%": function (e, t) { return (100 * e).toFixed(t) }, b: function (e) { return Math.round(e).toString(2) }, c: function (e) { return e + "" }, d: s, e: function (e, t) { return e.toExponential(t) }, f: function (e, t) { return e.toFixed(t) }, g: function (e, t) { return e.toPrecision(t) }, o: function (e) { return Math.round(e).toString(8) }, p: function (e, t) { return x(100 * e, t) }, r: x, s: b, X: function (e) { return Math.round(e).toString(16).toUpperCase() }, x: function (e) { return Math.round(e).toString(16) } }, _ = function (e) { return e }, C = Array.prototype.map, M = ["y", "z", "a", "f", "p", "n", "碌", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"], O = function (e) { var t = void 0 === e.grouping || void 0 === e.thousands ? _ : u(C.call(e.grouping, Number), e.thousands + ""), n = void 0 === e.currency ? "" : e.currency[0] + "", r = void 0 === e.currency ? "" : e.currency[1] + "", i = void 0 === e.decimal ? "." : e.decimal + "", o = void 0 === e.numerals ? _ : h(C.call(e.numerals, String)), a = void 0 === e.percent ? "%" : e.percent + "", s = void 0 === e.minus ? "-" : e.minus + "", c = void 0 === e.nan ? "NaN" : e.nan + ""; function f(e) { e = d(e); var l = e.fill, u = e.align, h = e.sign, f = e.symbol, p = e.zero, m = e.width, g = e.comma, b = e.precision, x = e.trim, _ = e.type; "n" === _ ? (g = !0, _ = "g") : w[_] || (void 0 === b && (b = 12), x = !0, _ = "g"), (p || "0" === l && "=" === u) && (p = !0, l = "0", u = "="); var C = "$" === f ? n : "#" === f && /[boxX]/.test(_) ? "0" + _.toLowerCase() : "", O = "$" === f ? r : /[%p]/.test(_) ? a : "", k = w[_], S = /[defgprs%]/.test(_); function T(e) { var n, r, a, f = C, d = O; if ("c" === _) d = k(e) + d, e = ""; else { e = +e; var w = e < 0 || 1 / e < 0; if (e = isNaN(e) ? c : k(Math.abs(e), b), x && (e = y(e)), w && 0 === +e && "+" !== h && (w = !1), f = (w ? "(" === h ? h : s : "-" === h || "(" === h ? "" : h) + f, d = ("s" === _ ? M[8 + v / 3] : "") + d + (w && "(" === h ? ")" : ""), S) { n = -1, r = e.length; while (++n < r) if (a = e.charCodeAt(n), 48 > a || a > 57) { d = (46 === a ? i + e.slice(n + 1) : e.slice(n)) + d, e = e.slice(0, n); break } } } g && !p && (e = t(e, 1 / 0)); var T = f.length + e.length + d.length, A = T < m ? new Array(m - T + 1).join(l) : ""; switch (g && p && (e = t(A + e, A.length ? m - d.length : 1 / 0), A = ""), u) { case "<": e = f + e + d + A; break; case "=": e = f + A + e + d; break; case "^": e = A.slice(0, T = A.length >> 1) + f + e + d + A.slice(T); break; default: e = A + f + e + d; break }return o(e) } return b = void 0 === b ? 6 : /[gprs]/.test(_) ? Math.max(1, Math.min(21, b)) : Math.max(0, Math.min(20, b)), T.toString = function () { return e + "" }, T } function p(e, t) { var n = f((e = d(e), e.type = "f", e)), r = 3 * Math.max(-8, Math.min(8, Math.floor(l(t) / 3))), i = Math.pow(10, -r), o = M[8 + r / 3]; return function (e) { return n(i * e) + o } } return { format: f, formatPrefix: p } }; function k(e) { return m = O(e), g = m.format, m.formatPrefix, m } k({ decimal: ".", thousands: ",", grouping: [3], currency: ["$", ""], minus: "-" }); var S = function (e) { var t = r["get"](e, "formatter"); if (r["isString"](t)) return e.formatter = function (e) { return g(t)(e) }, e; var n = function (t) { if (e.hasOwnProperty(t)) { var n = r["get"](e[t], "formatter"); r["isString"](n) && (e[t].formatter = function (e) { return g(n)(e) }) } }; for (var i in e) n(i); return e }, T = function () { return T = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, T.apply(this, arguments) }; function A(e, t, n, i) { var o = r["get"](t, "polarLabel"), a = r["get"](t, "polarLabel.rotate"); if (a) { var s = {}; "parallel" === a ? s = { rotate: n.startAngle, textAlign: "center" } : "normal" === a && (s = { rotate: n.startAngle + 90, textAlign: "right" }); var c = r["get"](t, "polarLabel.offsetX"), l = r["get"](t, "polarLabel.offsetY"); i.forEach((function (n, r) { e.guide().text(T({ position: [r, 0], content: i[r][t.dataKey], style: T({ polarLabel: o }, s) }, c, l)) })) } } var L = function (e, t, n) { void 0 === n && (n = !1); var i = r["cloneDeep"](t.axis), a = r["isArray"](i); if (r["isNil"](i) || !1 === i || a && 0 === i.length) return e.axis(!1); if (!0 === i) return e.axis(); for (var s = a ? i : [i], c = t.coord, l = t.data, u = function (t) { if (c && "polar" === c.type && "rotate" === c.direction && A(e, t, c, l), t.label && (t.label = S(t.label)), !n) for (var i in t) if (t.hasOwnProperty(i)) { var a = "tickLine" === i ? "ticks" : i; o(e, "axis", a, t[i]) } if (t.dataKey) if (!1 === t.show) e.axis(t.dataKey, !1); else { var s = r["omit"](t, ["show", "dataKey"]), u = s.label; if (u && r["isNumber"](u.density) && 0 < u.density && u.density < 1 && r["isFunction"](u.formatter)) { var h = Math.floor(1 / u.density), f = u.formatter; s.label.formatter = function (e, t, n) { return n % h ? " " : f(e, t, n) } } e.axis(t.dataKey, s) } else e.axis(t) }, h = 0, f = s; h < f.length; h++) { var d = f[h]; u(d) } return e }, j = function (e) { return e * Math.PI / 180 }, z = function () { return z = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, z.apply(this, arguments) }; function E(e, t) { var n = {}; if (t.radius && (t.radius < 0 || t.radius > 1) || t.innerRadius && (t.innerRadius < 0 || t.innerRadius > 1)) throw new Error("please set correct radius or innerRadius"); if (t.radius && (n = z({}, n, { radius: t.radius })), t.innerRadius && (n = z({}, n, { innerRadius: t.innerRadius })), t.startAngle || t.endAngle) { if (t.startAngle && (t.startAngle < -360 || t.startAngle > 360)) throw new Error("please set correct starAngle"); if (n = z({}, n, { startAngle: j(t.startAngle) }), t.endAngle && (t.endAngle < -360 || t.endAngle > 360)) throw new Error("please set correct endAngle"); n = z({}, n, { endAngle: j(t.endAngle) }) } var r = e.coord(t.type, z({}, n)); switch (t.direction) { case "rotate": r.transpose(); break; case "xReverse": r.reflect("x"); break; case "yReverse": r.reflect("y"); break; case "reverse": r.reflect(); break; default: break }return t.rotate && r.rotate(t.rotate), r } function P(e, t) { if (!t.direction) return e.coord("rect"); switch (t.direction) { case "BL": e.coord("rect"); break; case "BR": e.coord("rect").scale(-1, 1); break; case "LT": e.coord("rect").transpose().scale(1, -1); break; case "LB": e.coord("rect").transpose(); break; case "RB": e.coord("rect").transpose().reflect(); break; case "RT": e.coord("rect").transpose().reflect().scale(-1, 1); break; case "TL": e.coord("rect").reflect(); break; case "TR": e.coord("rect").reflect().scale(-1, 1); break; default: e.coord("rect"); break }return e } var D = function (e, t) { var n = r["cloneDeep"](t.coord); if (!n || !n.type) return e.coord("rect"); var i = n.type; return "polar" === i || "theta" === i || "helix" === i ? E(e, n) : "rect" === i ? P(e, n) : e.coord(i) }, H = function (e, t) { var n = r["cloneDeep"](t.filter), i = r["isArray"](n); if (!r["isEmpty"](n)) { for (var o = i ? n : [n], a = 0, s = o; a < s.length; a++) { var c = s[a]; c.dataKey && c.callback && e.filter(c.dataKey, c.callback) } return e } }, V = function () { return V = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, V.apply(this, arguments) }; function I(e, t) { if ("parallel" === t.quickType) { var n = t.data; e.guide().line(V({ start: ["min", n], end: ["max", n] }, t)) } else if ("normal" === t.quickType) { n = t.data; e.guide().line(V({ start: [n, "min"], end: [n, "max"] }, t)) } else e.guide().line(t) } function N(e, t) { if ("parallel" === t.quickType) { var n = t.data; e.guide().arc(V({ start: ["min", n], end: ["max", n] }, t)), e.guide().arc(V({ start: ["max", n], end: ["min", n] }, t)) } else if ("normal" === t.quickType) { n = t.data; e.guide().line(V({ start: [n, "min"], end: [n, "max"] }, t)) } else e.guide().arc(t) } var R = function (e, t, n) { void 0 === n && (n = !1); var i = r["cloneDeep"](t.guide), o = Array.isArray(i); if (!r["isNil"](i) && !r["isEmpty"](i)) { var s = o ? i : [i]; return s.forEach((function (t) { n || a(e, "guide-" + t.type, t), "line" === t.type ? I(e, t) : "region" === t.type ? e.guide().region(t) : "arc" === t.type ? N(e, t) : "text" === t.type ? e.guide().text(t) : "image" === t.type ? e.guide().image(t) : "html" === t.type ? e.guide().html(t) : "dataMarker" === t.type ? e.guide().dataMarker(t) : "regionFilter" === t.type ? e.guide().regionFilter(t) : "dataRegion" === t.type && e.guide().dataRegion(t) })), e } }; function F(e) { return e.onHover = function (e) { var t = e.shapes, n = e.geom; n.highlightShapes(t) }, e } var Y = function (e, t, n) { void 0 === n && (n = !1); var i = r["cloneDeep"](t.legend), a = Array.isArray(i); if (r["isNil"](i) || !1 === i || a && 0 === i.length) return e.legend(!1); if (!0 === i) return e.legend(); for (var s = a ? i : [i], c = 0, l = s; c < l.length; c++) { var u = l[c]; u.highlight && (u = F(u)); var h = function (t) { if (u.hasOwnProperty(t)) { if ("onClick" === t) { var r = u.onClick; u.onClick = function (t) { r(t, e) } } n || o(e, "legend", t, u[t]) } }; for (var f in u) h(f); if (r["isNil"](u.legendMarker) || (u["g2-legend-marker"] = u.legendMarker), r["isNil"](u.legendListItem) || (u["g2-legend-list-item"] = u.legendListItem), r["isNil"](u.legendTitle) || (u["g2-legend-title"] = u.legendTitle), r["isNil"](u.legendList) || (u["g2-legend-list"] = u.legendList), u = r["omit"](u, ["legendMarker", "legendListItem", "legendTitle", "legendList"]), u.dataKey) if (!1 === u.show) e.legend(u.dataKey, !1); else { var d = r["omit"](u, ["dataKey", "show"]); e.legend(u.dataKey, d) } else e.legend(u) } return e }, $ = function (e, t) { var n = r["cloneDeep"](t.scale), i = r["isArray"](n); if (!r["isEmpty"](n)) { for (var o = i ? n : [n], a = {}, s = 0, c = o; s < c.length; s++) { var l = c[s]; if (l.dataKey) { var u = r["omit"](l, "dataKey"); a[l.dataKey] = u } } return a = S(a), e.scale(a) } }, B = function () { return B = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, B.apply(this, arguments) }, W = [{ type: "pie", series: { gemo: "interval", adjust: "stack" }, coord: { type: "theta" } }, { type: "sector", series: { gemo: "interval" }, coord: { type: "polar" } }, { type: "line", series: { gemo: "line" } }, { type: "smoothLine", series: { gemo: "line", shape: "smooth" } }, { type: "dashLine", series: { gemo: "line", shape: "dash" } }, { type: "stackLine", series: { gemo: "line", adjust: "stack" } }, { type: "area", series: { gemo: "area" } }, { type: "stackArea", series: { gemo: "area", adjust: "stack" } }, { type: "smoothArea", series: { gemo: "area", shape: "smooth" } }, { type: "interval", series: { gemo: "interval" } }, { type: "stackInterval", series: { gemo: "interval", adjust: "stack" } }, { type: "dodgeInterval", series: { gemo: "interval", shape: "interval", adjust: "dodge" } }, { type: "bar", series: { gemo: "interval" } }, { type: "stackBar", series: { gemo: "interval", shape: "interval", adjust: "stack" } }, { type: "dodgeBar", series: { gemo: "interval", shape: "interval", adjust: "dodge" } }, { type: "point", series: { gemo: "point", shape: "hollowCircle" } }, { type: "funnel", series: { gemo: "interval", adjust: "symmetric", shape: "funnel" } }, { type: "pyramid", series: { gemo: "interval", adjust: "symmetric", shape: "pyramid" } }, { type: "schema", series: { gemo: "schema", shape: "box" } }, { type: "box", series: { gemo: "schema", shape: "box" } }, { type: "candle", series: { gemo: "schema", shape: "candle" } }, { type: "polygon", series: { gemo: "polygon" } }, { type: "contour", series: { gemo: "contour" } }, { type: "heatmap", series: { gemo: "heatmap" } }, { type: "edge", series: { gemo: "edge" } }, { type: "sankey", series: { gemo: "edge", shape: "sankey" } }, { type: "errorBar", series: { gemo: "schema", shape: "errorbar" } }, { type: "jitterPoint", series: { gemo: "point", adjust: "jitter" } }, { type: "path", series: { gemo: "path" } }, { type: "venn", series: { gemo: "venn" } }], q = function (e, t) { for (var n = {}, i = 0, o = W; i < o.length; i++) { var a = o[i]; n[a.type] = a } for (var s = 0; s < e.length; s++) { var c = n[e[s].quickType]; if (c && (e[s] = B({}, c.series, e[s]), t && t.type && r["get"](c, "coord.type") && r["get"](c, "coord.type") !== t.type)) throw new Error("quickType and coord had conflicted.") } return e }; function U(e, t) { var n = t.gemo; switch (n) { case "line": e = e.line(); break; case "area": e = e.area(); break; case "bar": case "interval": e = e.interval(); break; case "point": e = e.point(); break; case "schema": e = e.schema(); break; case "polygon": e = e.polygon(); break; case "contour": e = e.contour(); break; case "heatmap": e = e.heatmap(); break; case "edge": e = e.edge(); break; case "path": e = e.path(); break; case "venn": e = e.venn(); break; default: e = e.line() }return e } function K(e, t) { var n = t.position; return r["isNil"](n) ? e : e.position(n) } function G(e, t) { var n = t.adjust; return r["isNil"](n) ? e : e.adjust(n) } function X(e, t) { var n = t.shape; return r["isString"](n) ? e.shape(n) : r["isArray"](n) && n.length >= 1 ? n[1] ? e.shape(n[0], n[1]) : e.shape(n[0]) : e } function J(e, t) { var n = t.color; return r["isString"](n) ? e.color(n) : r["isArray"](n) && n.length >= 1 ? n[1] ? e.color(n[0], n[1]) : e.color(n[0]) : e } function Q(e, t) { var n = t.size; return r["isNumber"](n) || r["isString"](n) ? e.size(n) : r["isArray"](n) && n.length >= 1 ? n[1] ? e.size(n[0], n[1]) : e.size(n[0]) : e } function Z(e, t) { var n = t.opacity; return r["isNumber"](n) || r["isString"](n) ? e.opacity(n) : r["isArray"](n) && n.length >= 1 ? n[1] ? e.opacity(n[0], n[1]) : e.opacity(n[0]) : e } function ee(e, t) { var n = t.label; if (r["isString"](n)) return e.label(n); if (r["isArray"](n) && n.length >= 2) { if (r["isNumber"](n[1].density) && 0 < n[1].density && n[1].density < 1 && (r["isFunction"](n[1].formatter) || r["isString"](n[1].formatter))) { var i = Math.floor(1 / n[1].density), o = r["isString"](n[1].formatter) ? S(n[1]).formatter : n[1].formatter; n[1].formatter = function (e, t, n) { return n % i ? " " : o(e, t, n) } } return e.label.apply(e, n) } return e } function te(e, t) { var n = t.style; return r["isArray"](n) && n.length >= 1 ? n[1] ? e.style(n[0], n[1]) : e.style(n[0]) : r["isPlainObject"](n) ? e.style(n) : e } function ne(e, t) { var n = t.tooltip; return r["isBoolean"](n) || r["isString"](n) ? e.tooltip(n) : r["isArray"](n) && n.length >= 1 ? n[1] ? e.tooltip(n[0], n[1]) : e.tooltip(n[0]) : e } function re(e, t) { var n = t.select; return r["isBoolean"](n) ? e.select(n) : r["isArray"](n) && n.length >= 1 ? n[1] ? e.select(n[0], n[1]) : e.select(n[0]) : e } function ie(e, t) { var n = t.active; return r["isArray"](n) ? e.active.apply(e, n) : r["isBoolean"](n) || r["isPlainObject"](n) ? e.active(n) : e } function oe(e, t) { var n = t.animate; return r["isEmpty"](n) ? e : e.animate(n) } var ae = function (e, t, n) { void 0 === n && (n = !1); var i = r["cloneDeep"](t.series), s = r["isArray"](i); if (r["isNil"](i) || r["isEmpty"](i)) return e; var c, l = s ? i : [i]; return l = q(l, t.coord), l = r["sortBy"](l, "zIndex"), l.forEach((function (t) { for (var r in n || a(e, t.gemo, t), t) t.hasOwnProperty(r) && o(e, "label", name, t[r]); c = U(e, t), c = K(c, t), c = G(c, t), c = X(c, t), c = J(c, t), c = Z(c, t), c = Q(c, t), c = ee(c, t), c = ne(c, t), c = te(c, t), c = re(c, t), c = ie(c, t), c = oe(c, t) })), c }, se = function (e, t, n) { void 0 === n && (n = !1); var i = r["cloneDeep"](t.tooltip); if (r["isNil"](i) || !1 === i || !1 === i.show) return e.tooltip(!1); for (var o in i) i.hasOwnProperty(o) && ("g2Tooltip" === o && (i["g2-tooltip"] = i[o], i = r["omit"](i, "g2Tooltip")), "g2TooltipTitle" === o && (i["g2-tooltip-title"] = i[o], i = r["omit"](i, "g2TooltipTitle")), "g2TooltipList" === o && (i["g2-tooltip-list"] = i[o], i = r["omit"](i, "g2TooltipList")), "g2TooltipListItem" === o && (i["g2-tooltip-list-item"] = i[o], i = r["omit"](i, "g2TooltipListItem")), "g2TooltipMaker" === o && (i["g2-tooltip-maker"] = i[o], i = r["omit"](i, "g2TooltipMaker"))); return n || a(e, "tooltip", i), e.tooltip(i) }, ce = function (e, t) { var n = r["cloneDeep"](t.tooltip); if (!r["isNil"](n) && !1 !== n && !1 !== n.show && n.defaultPoint) { var i = n.defaultPoint, o = e.getXY(i); o && e.showTooltip(o) } }, le = n("7f1a"), ue = function (e, t, n) { le.Shape.registerShape(e, t, n) }, he = function () { return he = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, he.apply(this, arguments) }, fe = "errorbar"; function de(e) { return [["M", e[1].x, e[1].y], ["L", e[2].x, e[2].y], ["Z"], ["M", ((e[1].x || 0) + (e[2].x || 0)) / 2, ((e[1].y || 0) + (e[2].y || 0)) / 2], ["L", ((e[0].x || 0) + (e[3].x || 0)) / 2, ((e[0].y || 0) + (e[3].y || 0)) / 2], ["Z"], ["M", e[0].x, e[0].y], ["L", e[3].x, e[3].y], ["Z"]] } var pe = function () { var e = 1, t = !1; ue("schema", fe, { getPoints: function (t) { var n = t.x, r = void 0 === n ? 0 : n, i = t.y, o = void 0 === i ? [0, 0, 0] : i, a = t.size, s = void 0 === a ? 0 : a; return [{ x: r - s / 2 * e, y: o[0] }, { x: r - s / 2 * e, y: o[2] }, { x: r + s / 2 * e, y: o[2] }, { x: r + s / 2 * e, y: o[0] }, { x: r, y: o[1] }, { x: r - s / 2 * e, y: o[1] }] }, drawShape: function (e, n) { var r = n, i = e.points; return r.addShape("path", { attrs: he({ stroke: e.color, strokeOpacity: e.opacity || 1, lineWidth: e.style.lineWidth || 1, fill: e.color, opacity: e.opacity || 1, path: this.parsePath(de(i)) }, e.style) }), t && r.addShape("circle", { attrs: he({ stroke: e.color, strokeOpacity: e.opacity || 1, lineWidth: e.style.lineWidth || 1, fill: e.color, opacity: e.opacity || 1, x: this.parsePoint(i[4]).x, y: this.parsePoint(i[4]).y, r: e.style.lineWidth + .5 || 1.5 }, e.style) }), r } }) }, ve = "sankey"; function me(e, t) { var n = +e, r = t - n; return function (e) { return n + r * e } } function ge(e, t, n) { var r = me(e.x, t.x), i = r(n), o = r(1 - n), a = ["C", i, e.y, o, t.y, t.x, t.y]; return a } function ye(e, t) { var n = [["M", e[0].x, e[0].y], ["L", e[1].x, e[1].y]], r = ge(e[1], e[3], t); n.push(r), n.push(["L", e[3].x, e[3].y]), n.push(["L", e[2].x, e[2].y]); var i = ge(e[2], e[0], t); return n.push(i), n.push(["Z"]), n } var be = function () { ue("edge", ve, { drawShape: function (e, t) { var n = e.points, r = e.style, i = r.curvature || .5, o = this.parsePath(ye(n, i)), a = t.addShape("path", { attrs: { stroke: "none", strokeOpacity: 0, fill: e.color, opacity: e.opacity, path: o } }); return a } }) }, xe = function () { be(), pe() }, we = function () { return we = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, we.apply(this, arguments) }, _e = n("7f1a"), Ce = n("b44f"); function Me(e) { return e.toLowerCase().replace(/( |^)[a-z]/g, (function (e) { return e.toUpperCase() })) } var Oe = function () { function e(e) { this.viewInstance = {}, this.config = r["cloneDeep"](e), this.checkChartConfig(this.config), this.chartInstance = new _e.Chart(this.config.chart) } return e.prototype.getWidth = function () { return this.chartInstance.get("width") }, e.prototype.getHeight = function () { return this.chartInstance.get("height") }, e.prototype.render = function () { var e = this.config, t = this.chartInstance; xe(), this.setEvents(t, e), this.setDataSource(t, e.data), this.setCoord(t, e), this.setTooltip(t, e), this.setAxis(t, e), this.setContent(t, e), this.setLegend(t, e), this.setViews(t, e), this.setFacet(t, e), t.render(), this.setDefaultTooltip(t, e), this.setBrush(t, e) }, e.prototype.repaint = function (e) { var t = r["cloneDeep"](e); this.checkChartConfig(t), this.renderDiffConfig(t) }, e.prototype.destroy = function (e) { e && e.destroy() }, e.prototype.clear = function (e) { e && e.clear() }, e.prototype.checkChartConfig = function (e) { var t = e.chart; if (!t || !t.height) throw new Error("please set correct chart option") }, e.prototype.createView = function (e, t) { var n = {}; t.start && (n.start = t.start), t.end && (n.end = t.end); var r = e.view(n); if (!t.viewId) throw new Error("you must set viewId"); return this.viewInstance[t.viewId] = r, r }, e.prototype.setEvents = function (e, t) { a(e, "", t.chart) }, e.prototype.setDataSource = function (e, t) { r["isNil"](t) || r["isEmpty"](t) || e.source(t) }, e.prototype.setFilter = function (e, t) { return H(e, t) }, e.prototype.setScale = function (e, t) { return $(e, t) }, e.prototype.setCoord = function (e, t) { return D(e, t) }, e.prototype.setSeries = function (e, t, n) { return void 0 === n && (n = !1), ae(e, t, n) }, e.prototype.setAxis = function (e, t, n) { return void 0 === n && (n = !1), L(e, t, n) }, e.prototype.setTooltip = function (e, t, n) { return void 0 === n && (n = !1), se(e, t, n) }, e.prototype.setDefaultTooltip = function (e, t) { return ce(e, t) }, e.prototype.setGuide = function (e, t, n) { return void 0 === n && (n = !1), R(e, t, n) }, e.prototype.setLegend = function (e, t, n) { return void 0 === n && (n = !1), Y(e, t, n) }, e.prototype.setContent = function (e, t, n) { void 0 === n && (n = !1), this.setScale(e, t), this.setFilter(e, t), this.setSeries(e, t, n), this.setGuide(e, t, n) }, e.prototype.setView = function (e, t, n, i) { void 0 === i && (i = !1); var o = this.createView(t, e), a = e.data ? e.data : n.data; return this.setDataSource(o, a), r["isNil"](e.coord) || this.setCoord(o, e), r["isNil"](e.tooltip) || this.setTooltip(o, e, i), r["isNil"](e.axis) || this.setAxis(o, e, i), r["isNil"](e.guide) || this.setGuide(o, e, i), this.setContent(o, e, i), o }, e.prototype.setViews = function (e, t, n) { void 0 === n && (n = !1); var i = r["cloneDeep"](t.views), o = Array.isArray(i); if (!r["isNil"](i) && !r["isEmpty"](i)) for (var a = o ? i : [i], s = 0, c = a; s < c.length; s++) { var l = c[s]; this.setView(l, e, t, n) } }, e.prototype.setFacetViews = function (e, t, n, i) { void 0 === i && (i = !1), this.setDataSource(e, n.data), r["isNil"](n.coord) || this.setCoord(e, n), r["isNil"](n.tooltip) || this.setTooltip(e, n, i), r["isNil"](n.axis) || this.setAxis(e, n, i), r["isNil"](n.guide) || this.setGuide(e, n, i), this.setContent(e, n) }, e.prototype.setFacet = function (e, t, n) { var i = this; void 0 === n && (n = !1); var o = r["cloneDeep"](t.facet); if (!r["isNil"](o) && !r["isEmpty"](o)) { var a = r["omit"](o, ["type", "views"]); return r["isEmpty"](o.views) && !r["isFunction"](o.views) || (r["isFunction"](o.views) ? a.eachView = function (e, t) { i.setFacetViews(e, t, o.views(e, t), n) } : (o.views = Array.isArray(o.views) ? o.views : [o.views], a.eachView = function (e, t) { i.setFacetViews(e, t, o.views[0], n) })), e.facet(o.type, a) } }, e.prototype.setBrush = function (e, t) { if (!r["isNil"](t.brush) && !r["isEmpty"](t.brush)) { var n = t.brush, i = we({}, t.brush, { canvas: e.get("canvas"), chart: e }), o = /on(BrushStart|BrushMove|BrushEnd|DragStart|DragMove|DragEnd)/, a = Object.keys(n).filter((function (e) { return o.test(e) })); a.forEach((function (t) { var r = o.exec(t); if (r && r.length) { var a = "on" + Me(r[0]); i[a] = function (r) { n[t](r, e) } } })), new Ce(i) } }, e.prototype.repaintWidthHeight = function (e, t) { var n = r["get"](t, "chart.width"); n && e.changeWidth(n); var i = r["get"](t, "chart.height"); i && e.changeHeight(i) }, e.prototype.renderDiffConfig = function (e) { var t = this.chartInstance; this.clear(t), this.setScale(t, e), this.setCoord(t, e), this.setFilter(t, e), this.setAxis(t, e, !0), this.setSeries(t, e, !0), this.setTooltip(t, e, !0), this.setGuide(t, e, !0), this.setViews(t, e, !0), this.setLegend(t, e, !0), this.setFacet(t, e, !0), this.repaintWidthHeight(t, e), e.data && t.changeData(e.data), t.repaint(), this.setBrush(t, e) }, e }(), ke = Oe, Se = (n("7f1a"), n("dcb1")), Te = function (e) { var t = document.getElementById(e.container); if (t) { t.innerHTML = ""; var n = new Se(e); return n.render(), n } console.error("plugin slider container not defined") }, Ae = function (e) { var t = {}; for (var n in e) if (e.hasOwnProperty(n)) { var r = e[n]; switch (n) { case "slider": t.slider = Te(r); break; default: break } } return t }, Le = n("7f1a"), je = ue; Le.Global; function ze(e) { var t = !1; if (r["isEmpty"](e.data) || (t = !0), !r["isNil"](e.views) && (r["isPlainObject"](e.views) && !r["isEmpty"](e.views.data) && (t = !0), r["isArray"](e.views))) for (var n = 0, i = e.views; n < i.length; n++) { var o = i[n]; r["isEmpty"](o.data) || (t = !0) } return t } var Ee = function (e) { if (!r["isNil"](e) && !r["isEmpty"](e)) { var t = ze(e); if (t) { var n = new ke(e); return n.render(), n } } }, Pe = ["dataKey", "position", "title", "tick", "subTick", "grid", "labels", "line", "tickLine", "subTickCount", "subTickLine", "useHtml", "id", "container", "height", "width", "animate", "forceFit", "background", "plotBackground", "padding", "theme", "renderer", "filter", "type", "direction", "radius", "innerRadius", "startAngle", "endAngle", "rotate", "type", "fields", "rowField", "colField", "colValue", "rowValue", "colIndex", "rowIndex", "showTitle", "autoSetAxis", "padding", "colTitle", "rowTitle", "eachView", "cols", "rows", "padding", "line", "lineSmooth", "transpose", "views", "type", "position", "autoRotate", "vStyle", "content", "offsetX", "offsetY", "top", "zIndex", "start", "end", "lineStyle", "line", "text", "src", "width", "heigth", "alignX", "alignY", "html", "color", "apply", "lineLength", "direction", "display", "dataKey", "show", "position", "title", "titleGap", "custom", "offset", "offsetX", "offsetY", "items", "itemGap", "itemsGroup", "itemMarginBottom", "itemWidth", "unCheckColor", "background", "allowAllCanceled", "itemFormatter", "marker", "textStyle", "clickable", "hoverable", "selectedMode", "onHover", "onClick", "reversed", "layout", "backPadding", "useHtml", "autoWrap", "autoPosition", "container", "containerTpl", "itemTpl", "legendMarker", "legendListItem", "legendTitle", "legendList", "legendStyle", "slidable", "attachLast", "flipPage", "name", "reactive", "sizeType", "isSegment", "defaultClickHandlerEnabled", "data", "viewId", "scale", "forceFit", "quickType", "position", "gemo", "adjust", "color", "shape", "size", "opacity", "label", "tooltip", "vStyle", "select", "active", "animate", "x", "y", "items", "show", "triggerOn", "showTitle", "title", "crosshairs", "offset", "inPlot", "follow", "shared", "enterable", "position", "hideMarkers", "containerTpl", "itemTpl", "g2Tooltip", "g2TooltipTitle", "g2TooltipList", "g2TooltipListItem", "g2TooltipMarker", "onShow", "onHide", "onChange", "defaultPoint", "timeStamp", "plotRange", "htmlContent", "useHtml", "type", "pie", "sector", "line", "smoothLine", "dashLine", "area", "stackArea", "smoothArea", "bar", "stackBar", "dodgeBar", "interval", "stackInterval", "dodgeInterval", "point", "funnel", "pyramid", "schema", "box", "candle", "polygon", "contour", "heatmap", "edge", "sankey", "errorBar", "jitterPoint", "venn", "canvas", "startPoint", "brushing", "dragging", "brushShape", "container", "polygonPath", "type", "dragable", "dragoffX", "dragoffY", "inPlot", "xField", "yField", "filter", "onBrushstart", "onBrushmove", "onBrushend", "onDragstart", "onDragmove", "onDragend", "container", "xAxis", "yAxis", "data", "width", "height", "padding", "start", "end", "minSpan", "maxSpan", "scales", "fillerStyle", "backgroundStyle", "textStyle", "handleStyle", "backgroundChart", "onChange", "start", "end", "onMouseEnter", "onMouseDown", "onMouseMove", "onMouseLeave", "onMouseUp", "onClick", "onDblClick", "onTouchStart", "onTouchMove", "onTouchEnd", "onPlotEnter", "onPlotMove", "onPlotLeave", "onPlotClick", "onPlotDblClick", "onTitleMouseDown", "onTitleMouseMove", "onTitleMouseLeave", "onTitleMouseUp", "onTitleClick", "onTitleDblClick", "onTitleTouchStart", "onTitleTouchMove", "onTitleTouchEnd", "onItemMouseDown", "onItemMouseMove", "onItemMouseLeave", "onItemMouseUp", "onItemClick", "onItemDblClick", "onItemTouchStart", "onItemTouchMove", "onItemTouchEnd", "onMarkerMouseDown", "onMarkerMouseMove", "onMarkerMouseLeave", "onMarkerMouseUp", "onMarkerClick", "onMarkerDblClick", "onMarkerTouchStart", "onMarkerTouchMove", "onMarkerTouchEnd", "onTextMouseDown", "onTextMouseMove", "onTextMouseLeave", "onTextMouseUp", "onTextClick", "onTextDblClick", "onTextTouchStart", "onTextTouchMove", "onTextTouchEnd", "onLabelMouseDown", "onLabelMouseMove", "onLabelMouseLeave", "onLabelMouseUp", "onLabelClick", "onLabelDblClick", "onLabelTouchStart", "onLabelTouchMove", "onLabelTouchEnd", "onTicksMouseDown", "onTicksMouseMove", "onTicksMouseLeave", "onTicksMouseUp", "onTicksClick", "onTicksDblClick", "onTicksTouchStart", "onTicksTouchMove", "onTicksTouchEnd", "onLineMouseDown", "onLineMouseMove", "onLineMouseLeave", "onLineMouseUp", "onLineClick", "onLineDblClick", "onLineTouchStart", "onLineTouchMove", "onLineTouchEnd", "onGridMouseDown", "onGridMouseMove", "onGridMouseLeave", "onGridMouseUp", "onGridClick", "onGridDblClick", "onGridTouchStart", "onGridTouchMove", "onGridTouchEnd", "onGuideRegionClick"]; function De(e) { for (var t = [], n = 0, r = e.length; n < r; n++) { var i = e[n]; -1 === t.indexOf(i) && t.push(i) } return t } function He(e) { for (var t = De(e), n = {}, r = 0, i = t; r < i.length; r++) { var o = i[r]; n[o] = null } return n } var Ve = He(Pe), Ie = function () { return Ie = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, Ie.apply(this, arguments) }, Ne = ["pie", "sector", "line", "smoothline", "dashline", "area", "point", "stackarea", "stackline", "smootharea", "bar", "stackbar", "dodgebar", "interval", "stackinterval", "dodgeinterval", "funnel", "pyramid", "schema", "box", "candle", "polygon", "contour", "heatmap", "edge", "sankey", "errorbar", "jitterpoint", "path", "venn"], Re = ["v-chart", "v-lite-chart"], Fe = ["v-plugin"], Ye = ["data", "scale", "filter", "viewId"], $e = ["position", "quickType", "gemo", "adjust", "color", "shape", "size", "opacity", "label", "tooltip", "style", "animate"], Be = function () { var e = /[-_]+(.)?/g; function t(e, t) { return t ? t.toUpperCase() : "" } return function (n, r) { return n.replace(r ? new RegExp("[" + r + "]+(.)?", "g") : e, t) } }(), We = { data: function () { return { isViser: !0, jsonForD2: {} } }, props: Ve, methods: { checkIsContainer: function (e) { return !!(e.isViser && Re.concat(["v-view", "v-facet", "v-facet-view", "v-plugin"]).indexOf(e.$options._componentTag) > -1) }, findNearestRootComponent: function (e) { if (this.checkIsContainer(e)) { if ("v-lite-chart" === e.$options._componentTag) throw Error("v-lite-chart should be no child elements."); return e } return e.$parent ? this.findNearestRootComponent(e.$parent) : null }, createRootD2Json: function () { if ("v-plugin" === this.$options._componentTag) return Ie({}, Ge(Je(this._props, Ye)), this.jsonForD2); var e = Ie({}, Ge(Je(this._props, Ye)), { chart: Ie({ container: this.$el }, Ge(Je(this._props, null, Ye))) }, this.jsonForD2); if ("v-lite-chart" === this.$options._componentTag) { var t = Ge(this._props); Object.keys(t).forEach((function (n) { var r = n.toLowerCase(); Ne.indexOf(r) > -1 && Ue(e, "series", Ie({ quickType: n }, Je(t, $e))) })), Qe(e, "axis", !0), Qe(e, "legend", !0), Qe(e, "tooltip", !0) } return e }, freshChart: function (e) { if (Fe.indexOf(this.$options._componentTag) > -1) { var t = this.createRootD2Json(); this.plugins = Ae(t) } else if (Re.indexOf(this.$options._componentTag) > -1) { t = this.createRootD2Json(); e && this.chart ? this.chart.repaint(t) : this.chart = Ee(t) } else if ("v-view" === this.$options._componentTag) { var n = this.findNearestRootComponent(this.$parent); Ke(n.jsonForD2, "views", Ie({}, Ge(Je(this._props)), this.jsonForD2, { viewId: this._uid })) } else if ("v-facet-view" === this.$options._componentTag) { n = this.findNearestRootComponent(this.$parent); n.jsonForD2.views = Ie({}, Ge(Je(this._props)), this.jsonForD2) } else if ("v-facet" === this.$options._componentTag) { n = this.findNearestRootComponent(this.$parent); n.jsonForD2.facet = Ie({}, Ge(Je(this._props)), this.jsonForD2) } else if ("v-slider" === this.$options._componentTag) { n = this.findNearestRootComponent(this.$parent); var r = Ge(Je(this._props)); Ge(Je(this._props)).container || (r.container = "viser-slider-" + Ze()); var i = document.createElement("div"); i.id = r.container, this.$parent.$el.appendChild(i), n.jsonForD2.slider = Ie({}, r, this.jsonForD2) } else { n = this.findNearestRootComponent(this.$parent); if (!n) throw Error(this.$options._componentTag + " must be wrapped into v-chart or v-plugin"); var o = this.$options._componentTag.replace(/-/g, "").slice(1), a = Be(this.$options._componentTag.slice(2)); Xe(this._props) ? n.jsonForD2[o] = !0 : Ne.indexOf(o) > -1 ? Ue(n.jsonForD2, "series", Ie({ quickType: a }, Ge(Je(this._props)))) : Ke(n.jsonForD2, o, Ie({}, Ge(Je(this._props)), { componentId: this._uid })) } } }, created: function () { }, mounted: function () { this.freshChart(!1) }, updated: function () { this.freshChart(!0) }, render: function (e) { var t = this.checkIsContainer(this); if (t) return e("div", null, this.$slots["default"]); var n = Ge(Je(this._props)); return e("div", { style: { display: "none" } }, Object.keys(n).map((function (e) { return e + ":" + JSON.stringify(n[e]) }))) } }, qe = { "v-chart": We, "v-tooltip": We, "v-legend": We, "v-axis": We, "v-brush": We, "v-view": We, "v-coord": We, "v-series": We, "v-facet": We, "v-facet-view": We, "v-lite-chart": We, "v-guide": We, "v-edge": We, "v-point": We, "v-pie": We, "v-bar": We, "v-stack-bar": We, "v-dodge-bar": We, "v-interval": We, "v-stack-interval": We, "v-dodge-interval": We, "v-schema": We, "v-line": We, "v-smooth-line": We, "v-dash-line": We, "v-sector": We, "v-area": We, "v-stack-area": We, "v-stack-line": We, "v-smooth-area": We, "v-funnel": We, "v-pyramid": We, "v-box": We, "v-candle": We, "v-polygon": We, "v-contour": We, "v-heatmap": We, "v-sankey": We, "v-error-bar": We, "v-jitter-point": We, "v-path": We, "v-venn": We, "v-plugin": We, "v-slider": We }; t["a"] = { install: function (e, t) { t || (t = Object.keys(qe)), t.forEach((function (t) { e.component(t, Ie({}, qe[t], { name: t })) })) } }; function Ue(e, t, n) { e[t] || (e[t] = []), Ge(n), e[t].push(n) } function Ke(e, t, n) { if (e[t]) { e[t] && "Object" === e[t].constructor.name && (e[t] = [e[t]]); var r = -1; n && n.viewId ? e[t].forEach((function (e, t) { e && e.viewId && e.viewId === n.viewId && (r = t) })) : n && n.componentId && e[t].forEach((function (e, t) { e && e.componentId && e.componentId === n.componentId && (r = t) })), -1 === r ? e[t].push(n) : e[t][r] = Ie({}, e[t][r], n) } else e[t] = n } function Ge(e) { var t = Ie({}, e); for (var n in t) void 0 === t[n] && delete t[n]; return t } function Xe(e) { return Object.keys(e).every((function (t) { return void 0 === e[t] })) } function Je(e, t, n) { void 0 === t && (t = null), void 0 === n && (n = null); var r = Ie({}, e); return r.vStyle && (r.style = r.vStyle, delete r.vStyle), null !== n && n.forEach((function (e) { delete r[e] })), null !== t && Object.keys(r).forEach((function (e) { -1 === t.indexOf(e) && delete r[e] })), r } function Qe(e, t, n) { e[t] || (e[t] = n) } function Ze() { return Math.floor((new Date).getTime() + 1e4 * Math.random()).toString() } var et = je }, 3698: function (e, t) { function n(e, t) { return null == e ? void 0 : e[t] } e.exports = n }, 3729: function (e, t, n) { var r = n("9e69"), i = n("00fd"), o = n("29f3"), a = "[object Null]", s = "[object Undefined]", c = r ? r.toStringTag : void 0; function l(e) { return null == e ? void 0 === e ? s : a : c && c in Object(e) ? i(e) : o(e) } e.exports = l }, "372e": function (e, t, n) { "use strict"; var r = n("8e8e"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("9b57"), c = n.n(s), l = n("1098"), u = n.n(l), h = n("41b2"), f = n.n(h), d = void 0, p = void 0, v = { position: "absolute", top: "-9999px", width: "50px", height: "50px" }, m = "RC_TABLE_INTERNAL_COL_DEFINE"; function g(e) { var t = e.direction, n = void 0 === t ? "vertical" : t, r = e.prefixCls; if ("undefined" === typeof document || "undefined" === typeof window) return 0; var i = "vertical" === n; if (i && d) return d; if (!i && p) return p; var o = document.createElement("div"); Object.keys(v).forEach((function (e) { o.style[e] = v[e] })), o.className = r + "-hide-scrollbar scroll-div-append-to-body", i ? o.style.overflowY = "scroll" : o.style.overflowX = "scroll", document.body.appendChild(o); var a = 0; return i ? (a = o.offsetWidth - o.clientWidth, d = a) : (a = o.offsetHeight - o.clientHeight, p = a), document.body.removeChild(o), a } function y(e, t, n) { var r = void 0; function i() { for (var i = arguments.length, o = Array(i), a = 0; a < i; a++)o[a] = arguments[a]; var s = this; o[0] && o[0].persist && o[0].persist(); var c = function () { r = null, n || e.apply(s, o) }, l = n && !r; clearTimeout(r), r = setTimeout(c, t), l && e.apply(s, o) } return i.cancel = function () { r && (clearTimeout(r), r = null) }, i } function b(e, t) { var n = e.indexOf(t), r = e.slice(0, n), i = e.slice(n + 1, e.length); return r.concat(i) } var x = n("92fa"), w = n.n(x), _ = n("1b2b"), C = n.n(_), M = n("42454"), O = n.n(M), k = n("3c55"), S = n.n(k), T = n("4d26"), A = n.n(T), L = n("4d91"), j = n("6a21"), z = n("c8c6"), E = n("8827"), P = n.n(E), D = n("57ba"), H = n.n(D), V = function () { function e(t) { P()(this, e), this.columns = t, this._cached = {} } return H()(e, [{ key: "isAnyColumnsFixed", value: function () { var e = this; return this._cache("isAnyColumnsFixed", (function () { return e.columns.some((function (e) { return !!e.fixed })) })) } }, { key: "isAnyColumnsLeftFixed", value: function () { var e = this; return this._cache("isAnyColumnsLeftFixed", (function () { return e.columns.some((function (e) { return "left" === e.fixed || !0 === e.fixed })) })) } }, { key: "isAnyColumnsRightFixed", value: function () { var e = this; return this._cache("isAnyColumnsRightFixed", (function () { return e.columns.some((function (e) { return "right" === e.fixed })) })) } }, { key: "leftColumns", value: function () { var e = this; return this._cache("leftColumns", (function () { return e.groupedColumns().filter((function (e) { return "left" === e.fixed || !0 === e.fixed })) })) } }, { key: "rightColumns", value: function () { var e = this; return this._cache("rightColumns", (function () { return e.groupedColumns().filter((function (e) { return "right" === e.fixed })) })) } }, { key: "leafColumns", value: function () { var e = this; return this._cache("leafColumns", (function () { return e._leafColumns(e.columns) })) } }, { key: "leftLeafColumns", value: function () { var e = this; return this._cache("leftLeafColumns", (function () { return e._leafColumns(e.leftColumns()) })) } }, { key: "rightLeafColumns", value: function () { var e = this; return this._cache("rightLeafColumns", (function () { return e._leafColumns(e.rightColumns()) })) } }, { key: "groupedColumns", value: function () { var e = this; return this._cache("groupedColumns", (function () { var t = function e(t) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : []; i[n] = i[n] || []; var o = [], a = function (e) { var t = i.length - n; e && !e.children && t > 1 && (!e.rowSpan || e.rowSpan < t) && (e.rowSpan = t) }; return t.forEach((function (s, c) { var l = f()({}, s); i[n].push(l), r.colSpan = r.colSpan || 0, l.children && l.children.length > 0 ? (l.children = e(l.children, n + 1, l, i), r.colSpan += l.colSpan) : r.colSpan += 1; for (var u = 0; u < i[n].length - 1; u += 1)a(i[n][u]); c + 1 === t.length && a(l), o.push(l) })), o }; return t(e.columns) })) } }, { key: "reset", value: function (e) { this.columns = e, this._cached = {} } }, { key: "_cache", value: function (e, t) { return e in this._cached || (this._cached[e] = t()), this._cached[e] } }, { key: "_leafColumns", value: function (e) { var t = this, n = []; return e.forEach((function (e) { e.children ? n.push.apply(n, c()(t._leafColumns(e.children))) : n.push(e) })), n } }]), e }(), I = V, N = { name: "ColGroup", props: { fixed: L["a"].string, columns: L["a"].array }, inject: { table: { default: function () { return {} } } }, render: function () { var e = arguments[0], t = this.fixed, n = this.table, r = n.prefixCls, i = n.expandIconAsCell, o = n.columnManager, a = []; i && "right" !== t && a.push(e("col", { class: r + "-expand-icon-col", key: "rc-table-expand-icon-col" })); var s = void 0; return s = "left" === t ? o.leftLeafColumns() : "right" === t ? o.rightLeafColumns() : o.leafColumns(), a = a.concat(s.map((function (t) { var n = t.key, r = t.dataIndex, i = t.width, o = t[m], a = void 0 !== n ? n : r, s = "number" === typeof i ? i + "px" : i; return e("col", w()([{ key: a, style: { width: s, minWidth: s } }, o])) }))), e("colgroup", [a]) } }, R = n("daa3"), F = { inject: { store: { from: "table-store", default: function () { return {} } } }, props: { index: L["a"].number, fixed: L["a"].string, columns: L["a"].array, rows: L["a"].array, row: L["a"].array, components: L["a"].object, customHeaderRow: L["a"].func, prefixCls: L["a"].string }, name: "TableHeaderRow", computed: { height: function () { var e = this.store.fixedColumnsHeadRowsHeight, t = this.$props, n = t.columns, r = t.rows, i = t.fixed, o = e[0]; return i && o && n ? "auto" === o ? "auto" : o / r.length + "px" : null } }, render: function (e) { var t = this.row, n = this.index, r = this.height, o = this.components, s = this.customHeaderRow, c = this.prefixCls, l = o.header.row, u = o.header.cell, h = s(t.map((function (e) { return e.column })), n), d = h ? h.style : {}, p = f()({ height: r }, d); return null === p.height && delete p.height, e(l, w()([h, { style: p }]), [t.map((function (t, n) { var r, o = t.column, s = t.isLast, l = t.children, h = (t.className, i()(t, ["column", "isLast", "children", "className"])), d = o.customHeaderCell ? o.customHeaderCell(o) : {}, p = Object(R["x"])({ attrs: f()({}, h) }, f()({}, d, { key: o.key || o.dataIndex || n })); return o.align && (p.style = f()({}, d.style, { textAlign: o.align })), p["class"] = A()(d["class"], d.className, o["class"], o.className, (r = {}, a()(r, c + "-align-" + o.align, !!o.align), a()(r, c + "-row-cell-ellipsis", !!o.ellipsis), a()(r, c + "-row-cell-break-word", !!o.width), a()(r, c + "-row-cell-last", s), r)), "function" === typeof u ? u(e, p, l) : e(u, p, [l]) }))]) } }, Y = F; function $(e) { var t = e.columns, n = void 0 === t ? [] : t, r = e.currentRow, i = void 0 === r ? 0 : r, o = e.rows, a = void 0 === o ? [] : o, s = e.isLast, c = void 0 === s || s; return a = a || [], a[i] = a[i] || [], n.forEach((function (e, t) { if (e.rowSpan && a.length < e.rowSpan) while (a.length < e.rowSpan) a.push([]); var r = c && t === n.length - 1, o = { key: e.key, className: e.className || e["class"] || "", children: e.title, isLast: r, column: e }; e.children && $({ columns: e.children, currentRow: i + 1, rows: a, isLast: r }), "colSpan" in e && (o.colSpan = e.colSpan), "rowSpan" in e && (o.rowSpan = e.rowSpan), 0 !== o.colSpan && a[i].push(o) })), a.filter((function (e) { return e.length > 0 })) } var B = { name: "TableHeader", props: { fixed: L["a"].string, columns: L["a"].array.isRequired, expander: L["a"].object.isRequired }, inject: { table: { default: function () { return {} } } }, render: function () { var e = arguments[0], t = this.table, n = t.sComponents, r = t.prefixCls, i = t.showHeader, o = t.customHeaderRow, a = this.expander, s = this.columns, c = this.fixed; if (!i) return null; var l = $({ columns: s }); a.renderExpandIndentCell(l, c); var u = n.header.wrapper; return e(u, { class: r + "-thead" }, [l.map((function (t, i) { return e(Y, { attrs: { prefixCls: r, index: i, fixed: c, columns: s, rows: l, row: t, components: n, customHeaderRow: o }, key: i }) }))]) } }, W = n("9b02"), q = n.n(W); function U(e) { return e && !Object(R["w"])(e) && "[object Object]" === Object.prototype.toString.call(e) } var K = { name: "TableCell", props: { record: L["a"].object, prefixCls: L["a"].string, index: L["a"].number, indent: L["a"].number, indentSize: L["a"].number, column: L["a"].object, expandIcon: L["a"].any, component: L["a"].any }, inject: { table: { default: function () { return {} } } }, methods: { handleClick: function (e) { var t = this.record, n = this.column.onCellClick; n && n(t, e) } }, render: function () { var e, t = arguments[0], n = this.record, r = this.indentSize, i = this.prefixCls, o = this.indent, s = this.index, c = this.expandIcon, l = this.column, u = this.component, h = l.dataIndex, d = l.customRender, p = l.className, v = void 0 === p ? "" : p, m = this.table.transformCellText, g = void 0; g = "number" === typeof h || h && 0 !== h.length ? q()(n, h) : n; var y = { props: {}, attrs: {}, on: { click: this.handleClick } }, b = void 0, x = void 0; d && (g = d(g, n, s, l), U(g) && (y.attrs = g.attrs || {}, y.props = g.props || {}, y["class"] = g["class"], y.style = g.style, b = y.attrs.colSpan, x = y.attrs.rowSpan, g = g.children)), l.customCell && (y = Object(R["x"])(y, l.customCell(n, s))), U(g) && (g = null), m && (g = m({ text: g, column: l, record: n, index: s })); var _ = c ? t("span", { style: { paddingLeft: r * o + "px" }, class: i + "-indent indent-level-" + o }) : null; if (0 === x || 0 === b) return null; l.align && (y.style = f()({ textAlign: l.align }, y.style)); var C = A()(v, l["class"], (e = {}, a()(e, i + "-cell-ellipsis", !!l.ellipsis), a()(e, i + "-cell-break-word", !!l.width), e)); return l.ellipsis && "string" === typeof g && (y.attrs.title = g), t(u, w()([{ class: C }, y]), [_, c, g]) } }, G = n("b488"); function X() { } var J = { name: "TableRow", mixins: [G["a"]], inject: { store: { from: "table-store", default: function () { return {} } } }, props: Object(R["t"])({ customRow: L["a"].func, record: L["a"].object, prefixCls: L["a"].string, columns: L["a"].array, index: L["a"].number, rowKey: L["a"].oneOfType([L["a"].string, L["a"].number]).isRequired, className: L["a"].string, indent: L["a"].number, indentSize: L["a"].number, hasExpandIcon: L["a"].func, fixed: L["a"].oneOfType([L["a"].string, L["a"].bool]), renderExpandIcon: L["a"].func, renderExpandIconCell: L["a"].func, components: L["a"].any, expandedRow: L["a"].bool, isAnyColumnsFixed: L["a"].bool, ancestorKeys: L["a"].array.isRequired, expandIconColumnIndex: L["a"].number, expandRowByClick: L["a"].bool }, { hasExpandIcon: function () { }, renderExpandIcon: function () { }, renderExpandIconCell: function () { } }), computed: { visible: function () { var e = this.store.expandedRowKeys, t = this.$props.ancestorKeys; return !(0 !== t.length && !t.every((function (t) { return e.includes(t) }))) }, height: function () { var e = this.store, t = e.expandedRowsHeight, n = e.fixedColumnsBodyRowsHeight, r = this.$props, i = r.fixed, o = r.rowKey; return i ? t[o] ? t[o] : n[o] ? n[o] : null : null }, hovered: function () { var e = this.store.currentHoverKey, t = this.$props.rowKey; return e === t } }, data: function () { return { shouldRender: this.visible } }, mounted: function () { var e = this; this.shouldRender && this.$nextTick((function () { e.saveRowRef() })) }, watch: { visible: { handler: function (e) { e && (this.shouldRender = !0) }, immediate: !0 } }, updated: function () { var e = this; this.shouldRender && !this.rowRef && this.$nextTick((function () { e.saveRowRef() })) }, methods: { onRowClick: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : X, n = this.record, r = this.index; this.__emit("rowClick", n, r, e), t(e) }, onRowDoubleClick: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : X, n = this.record, r = this.index; this.__emit("rowDoubleClick", n, r, e), t(e) }, onContextMenu: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : X, n = this.record, r = this.index; this.__emit("rowContextmenu", n, r, e), t(e) }, onMouseEnter: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : X, n = this.record, r = this.index, i = this.rowKey; this.__emit("hover", !0, i), this.__emit("rowMouseenter", n, r, e), t(e) }, onMouseLeave: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : X, n = this.record, r = this.index, i = this.rowKey; this.__emit("hover", !1, i), this.__emit("rowMouseleave", n, r, e), t(e) }, setExpandedRowHeight: function () { var e = this.store, t = this.rowKey, n = e.expandedRowsHeight, r = this.rowRef.getBoundingClientRect().height; n = f()({}, n, a()({}, t, r)), e.expandedRowsHeight = n }, setRowHeight: function () { var e = this.store, t = this.rowKey, n = e.fixedColumnsBodyRowsHeight, r = this.rowRef.getBoundingClientRect().height; e.fixedColumnsBodyRowsHeight = f()({}, n, a()({}, t, r)) }, getStyle: function () { var e = this.height, t = this.visible, n = Object(R["q"])(this); return e && (n = f()({}, n, { height: e })), t || n.display || (n = f()({}, n, { display: "none" })), n }, saveRowRef: function () { this.rowRef = this.$el; var e = this.isAnyColumnsFixed, t = this.fixed, n = this.expandedRow, r = this.ancestorKeys; e && (!t && n && this.setExpandedRowHeight(), !t && r.length >= 0 && this.setRowHeight()) } }, render: function () { var e = this, t = arguments[0]; if (!this.shouldRender) return null; var n = this.prefixCls, r = this.columns, o = this.record, a = this.rowKey, s = this.index, c = this.customRow, l = void 0 === c ? X : c, u = this.indent, h = this.indentSize, d = this.hovered, p = this.height, v = this.visible, m = this.components, g = this.hasExpandIcon, y = this.renderExpandIcon, b = this.renderExpandIconCell, x = m.body.row, w = m.body.cell, _ = ""; d && (_ += " " + n + "-hover"); var C = []; b(C); for (var M = 0; M < r.length; M += 1) { var O = r[M]; Object(j["a"])(void 0 === O.onCellClick, "column[onCellClick] is deprecated, please use column[customCell] instead."), C.push(t(K, { attrs: { prefixCls: n, record: o, indentSize: h, indent: u, index: s, column: O, expandIcon: g(M) && y(), component: w }, key: O.key || O.dataIndex })) } var k = l(o, s) || {}, S = k["class"], T = k.className, L = k.style, z = i()(k, ["class", "className", "style"]), E = { height: "number" === typeof p ? p + "px" : p }; v || (E.display = "none"), E = f()({}, E, L); var P = A()(n, _, n + "-level-" + u, T, S), D = z.on || {}, H = Object(R["x"])(f()({}, z, { style: E }), { on: { click: function (t) { e.onRowClick(t, D.click) }, dblclick: function (t) { e.onRowDoubleClick(t, D.dblclick) }, mouseenter: function (t) { e.onMouseEnter(t, D.mouseenter) }, mouseleave: function (t) { e.onMouseLeave(t, D.mouseleave) }, contextmenu: function (t) { e.onContextMenu(t, D.contextmenu) } }, class: P }, { attrs: { "data-row-key": a } }); return t(x, H, [C]) } }, Q = J, Z = { name: "ExpandIcon", mixins: [G["a"]], props: { record: L["a"].object, prefixCls: L["a"].string, expandable: L["a"].any, expanded: L["a"].bool, needIndentSpaced: L["a"].bool }, methods: { onExpand: function (e) { this.__emit("expand", this.record, e) } }, render: function () { var e = arguments[0], t = this.expandable, n = this.prefixCls, r = this.onExpand, i = this.needIndentSpaced, o = this.expanded; if (t) { var a = o ? "expanded" : "collapsed"; return e("span", { class: n + "-expand-icon " + n + "-" + a, on: { click: r } }) } return i ? e("span", { class: n + "-expand-icon " + n + "-spaced" }) : null } }, ee = { mixins: [G["a"]], name: "ExpandableRow", props: { prefixCls: L["a"].string.isRequired, rowKey: L["a"].oneOfType([L["a"].string, L["a"].number]).isRequired, fixed: L["a"].oneOfType([L["a"].string, L["a"].bool]), record: L["a"].oneOfType([L["a"].object, L["a"].array]).isRequired, indentSize: L["a"].number, needIndentSpaced: L["a"].bool.isRequired, expandRowByClick: L["a"].bool, expandIconAsCell: L["a"].bool, expandIconColumnIndex: L["a"].number, childrenColumnName: L["a"].string, expandedRowRender: L["a"].func, expandIcon: L["a"].func }, inject: { store: { from: "table-store", default: function () { return {} } } }, computed: { expanded: function () { return this.store.expandedRowKeys.includes(this.$props.rowKey) } }, beforeDestroy: function () { this.handleDestroy() }, methods: { hasExpandIcon: function (e) { var t = this.$props, n = t.expandRowByClick, r = t.expandIcon; return !this.tempExpandIconAsCell && e === this.tempExpandIconColumnIndex && (!!r || !n) }, handleExpandChange: function (e, t) { var n = this.expanded, r = this.rowKey; this.__emit("expandedChange", !n, e, t, r) }, handleDestroy: function () { var e = this.rowKey, t = this.record; this.__emit("expandedChange", !1, t, null, e, !0) }, handleRowClick: function (e, t, n) { var r = this.expandRowByClick; r && this.handleExpandChange(e, n), this.__emit("rowClick", e, t, n) }, renderExpandIcon: function () { var e = this.$createElement, t = this.prefixCls, n = this.expanded, r = this.record, i = this.needIndentSpaced, o = this.expandIcon; return o ? o({ prefixCls: t, expanded: n, record: r, needIndentSpaced: i, expandable: this.expandable, onExpand: this.handleExpandChange }) : e(Z, { attrs: { expandable: this.expandable, prefixCls: t, needIndentSpaced: i, expanded: n, record: r }, on: { expand: this.handleExpandChange } }) }, renderExpandIconCell: function (e) { var t = this.$createElement; if (this.tempExpandIconAsCell) { var n = this.prefixCls; e.push(t("td", { class: n + "-expand-icon-cell", key: "rc-table-expand-icon-cell" }, [this.renderExpandIcon()])) } } }, render: function () { var e = this.childrenColumnName, t = this.expandedRowRender, n = this.indentSize, r = this.record, i = this.fixed, o = this.$scopedSlots, a = this.expanded; this.tempExpandIconAsCell = "right" !== i && this.expandIconAsCell, this.tempExpandIconColumnIndex = "right" !== i ? this.expandIconColumnIndex : -1; var s = r[e]; this.expandable = !(!s && !t); var c = { props: { indentSize: n, expanded: a, hasExpandIcon: this.hasExpandIcon, renderExpandIcon: this.renderExpandIcon, renderExpandIconCell: this.renderExpandIconCell }, on: { rowClick: this.handleRowClick } }; return o["default"] && o["default"](c) } }, te = ee; function ne() { } var re = { name: "BaseTable", props: { fixed: L["a"].oneOfType([L["a"].string, L["a"].bool]), columns: L["a"].array.isRequired, tableClassName: L["a"].string.isRequired, hasHead: L["a"].bool.isRequired, hasBody: L["a"].bool.isRequired, expander: L["a"].object.isRequired, getRowKey: L["a"].func, isAnyColumnsFixed: L["a"].bool }, inject: { table: { default: function () { return {} } }, store: { from: "table-store", default: function () { return {} } } }, methods: { getColumns: function (e) { var t = this.$props, n = t.columns, r = void 0 === n ? [] : n, i = t.fixed, o = this.table, a = o.$props.prefixCls; return (e || r).map((function (e) { return f()({}, e, { className: e.fixed && !i ? A()(a + "-fixed-columns-in-body", e.className || e["class"]) : e.className || e["class"] }) })) }, handleRowHover: function (e, t) { this.store.currentHoverKey = e ? t : null }, renderRows: function (e, t) { for (var n = this, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [], i = this.$createElement, o = this.table, a = o.columnManager, s = o.sComponents, c = o.prefixCls, l = o.childrenColumnName, u = o.rowClassName, h = o.customRow, d = void 0 === h ? ne : h, p = Object(R["k"])(this.table), v = p.rowClick, m = void 0 === v ? ne : v, g = p.rowDoubleclick, y = void 0 === g ? ne : g, b = p.rowContextmenu, x = void 0 === b ? ne : b, w = p.rowMouseenter, _ = void 0 === w ? ne : w, C = p.rowMouseleave, M = void 0 === C ? ne : C, O = this.getRowKey, k = this.fixed, S = this.expander, T = this.isAnyColumnsFixed, A = [], L = function (o) { var h = e[o], p = O(h, o), v = "string" === typeof u ? u : u(h, o, t), g = {}; a.isAnyColumnsFixed() && (g.hover = n.handleRowHover); var b = void 0; b = "left" === k ? a.leftLeafColumns() : "right" === k ? a.rightLeafColumns() : n.getColumns(a.leafColumns()); var w = c + "-row", C = { props: f()({}, S.props, { fixed: k, index: o, prefixCls: w, record: h, rowKey: p, needIndentSpaced: S.needIndentSpaced }), key: p, on: { rowClick: m, expandedChange: S.handleExpandChange }, scopedSlots: { default: function (e) { var n = Object(R["x"])({ props: { fixed: k, indent: t, record: h, index: o, prefixCls: w, childrenColumnName: l, columns: b, rowKey: p, ancestorKeys: r, components: s, isAnyColumnsFixed: T, customRow: d }, on: f()({ rowDoubleclick: y, rowContextmenu: x, rowMouseenter: _, rowMouseleave: M }, g), class: v, ref: "row_" + o + "_" + t }, e); return i(Q, n) } } }, L = i(te, C); A.push(L), S.renderRows(n.renderRows, A, h, o, t, k, p, r) }, j = 0; j < e.length; j += 1)L(j); return A } }, render: function () { var e = arguments[0], t = this.table, n = t.sComponents, r = t.prefixCls, i = t.scroll, o = t.data, a = t.getBodyWrapper, s = this.$props, c = s.expander, l = s.tableClassName, u = s.hasHead, h = s.hasBody, f = s.fixed, d = s.isAnyColumnsFixed, p = this.getColumns(), v = {}; if (!f && i.x) { var m = d ? "max-content" : "auto"; v.width = !0 === i.x ? m : i.x, v.width = "number" === typeof v.width ? v.width + "px" : v.width } if (f) { var g = p.reduce((function (e, t) { var n = t.width; return e + parseFloat(n, 10) }), 0); g > 0 && (v.width = g + "px") } var y = h ? n.table : "table", b = n.body.wrapper, x = void 0; return h && (x = e(b, { class: r + "-tbody" }, [this.renderRows(o, 0)]), a && (x = a(x))), e(y, { class: l, style: v, key: "table" }, [e(N, { attrs: { columns: p, fixed: f } }), u && e(B, { attrs: { expander: c, columns: p, fixed: f } }), x]) } }, ie = re, oe = { name: "HeadTable", props: { fixed: L["a"].oneOfType([L["a"].string, L["a"].bool]), columns: L["a"].array.isRequired, tableClassName: L["a"].string.isRequired, handleBodyScrollLeft: L["a"].func.isRequired, expander: L["a"].object.isRequired }, inject: { table: { default: function () { return {} } } }, render: function () { var e = arguments[0], t = this.columns, n = this.fixed, r = this.tableClassName, i = this.handleBodyScrollLeft, o = this.expander, s = this.table, c = s.prefixCls, l = s.scroll, u = s.showHeader, h = s.saveRef, f = s.useFixedHeader, d = {}, p = g({ direction: "vertical" }); if (l.y) { f = !0; var v = g({ direction: "horizontal", prefixCls: c }); v > 0 && !n && (d.marginBottom = "-" + v + "px", d.paddingBottom = "0px", d.minWidth = p + "px", d.overflowX = "scroll", d.overflowY = 0 === p ? "hidden" : "scroll") } return f && u ? e("div", w()([{ key: "headTable" }, { directives: [{ name: "ant-ref", value: n ? function () { } : h("headTable") }] }, { class: A()(c + "-header", a()({}, c + "-hide-scrollbar", p > 0)), style: d, on: { scroll: i } }]), [e(ie, { attrs: { tableClassName: r, hasHead: !0, hasBody: !1, fixed: n, columns: t, expander: o } })]) : null } }, ae = { name: "BodyTable", props: { fixed: L["a"].oneOfType([L["a"].string, L["a"].bool]), columns: L["a"].array.isRequired, tableClassName: L["a"].string.isRequired, handleBodyScroll: L["a"].func.isRequired, handleWheel: L["a"].func.isRequired, getRowKey: L["a"].func.isRequired, expander: L["a"].object.isRequired, isAnyColumnsFixed: L["a"].bool }, inject: { table: { default: function () { return {} } } }, render: function () { var e = arguments[0], t = this.table, n = t.prefixCls, r = t.scroll, i = this.columns, o = this.fixed, a = this.tableClassName, s = this.getRowKey, c = this.handleBodyScroll, l = this.handleWheel, u = this.expander, h = this.isAnyColumnsFixed, d = this.table, p = d.useFixedHeader, v = d.saveRef, m = f()({}, this.table.bodyStyle), y = {}; if ((r.x || o) && (m.overflowX = m.overflowX || "scroll", m.WebkitTransform = "translate3d (0, 0, 0)"), r.y) { var b = m.maxHeight || r.y; b = "number" === typeof b ? b + "px" : b, o ? (y.maxHeight = b, y.overflowY = m.overflowY || "scroll") : m.maxHeight = b, m.overflowY = m.overflowY || "scroll", p = !0; var x = g({ direction: "vertical" }); x > 0 && o && (m.marginBottom = "-" + x + "px", m.paddingBottom = "0px") } var _ = e(ie, { attrs: { tableClassName: a, hasHead: !p, hasBody: !0, fixed: o, columns: i, expander: u, getRowKey: s, isAnyColumnsFixed: h } }); if (o && i.length) { var C = void 0; return "left" === i[0].fixed || !0 === i[0].fixed ? C = "fixedColumnsBodyLeft" : "right" === i[0].fixed && (C = "fixedColumnsBodyRight"), delete m.overflowX, delete m.overflowY, e("div", { key: "bodyTable", class: n + "-body-outer", style: f()({}, m) }, [e("div", w()([{ class: n + "-body-inner", style: y }, { directives: [{ name: "ant-ref", value: v(C) }] }, { on: { wheel: l, scroll: c } }]), [_])]) } var M = r && (r.x || r.y); return e("div", w()([{ attrs: { tabIndex: M ? -1 : void 0 }, key: "bodyTable", class: n + "-body", style: m }, { directives: [{ name: "ant-ref", value: v("bodyTable") }] }, { on: { wheel: l, scroll: c } }]), [_]) } }, se = function () { return { expandIconAsCell: L["a"].bool, expandRowByClick: L["a"].bool, expandedRowKeys: L["a"].array, expandedRowClassName: L["a"].func, defaultExpandAllRows: L["a"].bool, defaultExpandedRowKeys: L["a"].array, expandIconColumnIndex: L["a"].number, expandedRowRender: L["a"].func, expandIcon: L["a"].func, childrenColumnName: L["a"].string, indentSize: L["a"].number, columnManager: L["a"].object.isRequired, prefixCls: L["a"].string.isRequired, data: L["a"].array, getRowKey: L["a"].func } }, ce = { name: "ExpandableTable", mixins: [G["a"]], props: Object(R["t"])(se(), { expandIconAsCell: !1, expandedRowClassName: function () { return "" }, expandIconColumnIndex: 0, defaultExpandAllRows: !1, defaultExpandedRowKeys: [], childrenColumnName: "children", indentSize: 15 }), inject: { store: { from: "table-store", default: function () { return {} } } }, data: function () { var e = this.data, t = this.childrenColumnName, n = this.defaultExpandAllRows, r = this.expandedRowKeys, i = this.defaultExpandedRowKeys, o = this.getRowKey, a = [], s = [].concat(c()(e)); if (n) for (var l = 0; l < s.length; l += 1) { var u = s[l]; a.push(o(u, l)), s = s.concat(u[t] || []) } else a = r || i; return this.store.expandedRowsHeight = {}, this.store.expandedRowKeys = a, {} }, mounted: function () { this.handleUpdated() }, updated: function () { this.handleUpdated() }, watch: { expandedRowKeys: function (e) { var t = this; this.$nextTick((function () { t.store.expandedRowKeys = e })) } }, methods: { handleUpdated: function () { this.latestExpandedRows = null }, handleExpandChange: function (e, t, n, r) { var i = arguments.length > 4 && void 0 !== arguments[4] && arguments[4]; n && (n.preventDefault(), n.stopPropagation()); var o = this.store.expandedRowKeys; if (e) o = [].concat(c()(o), [r]); else { var a = o.indexOf(r); -1 !== a && (o = b(o, r)) } this.expandedRowKeys || (this.store.expandedRowKeys = o), this.latestExpandedRows && C()(this.latestExpandedRows, o) || (this.latestExpandedRows = o, this.__emit("expandedRowsChange", o)), i || this.__emit("expand", e, t) }, renderExpandIndentCell: function (e, t) { var n = this.prefixCls, r = this.expandIconAsCell; if (r && "right" !== t && e.length) { var i = { key: "rc-table-expand-icon-cell", className: n + "-expand-icon-th", title: "", rowSpan: e.length }; e[0].unshift(f()({}, i, { column: i })) } }, renderExpandedRow: function (e, t, n, r, i, o, a) { var s = this, c = this.$createElement, l = this.prefixCls, u = this.expandIconAsCell, h = this.indentSize, f = i[i.length - 1], d = f + "-extra-row", p = { body: { row: "tr", cell: "td" } }, v = void 0; v = "left" === a ? this.columnManager.leftLeafColumns().length : "right" === a ? this.columnManager.rightLeafColumns().length : this.columnManager.leafColumns().length; var m = [{ key: "extra-row", customRender: function () { var r = s.store.expandedRowKeys, i = r.includes(f); return { attrs: { colSpan: v }, children: "right" !== a ? n(e, t, o, i) : "&nbsp;" } } }]; return u && "right" !== a && m.unshift({ key: "expand-icon-placeholder", customRender: function () { return null } }), c(Q, { key: d, attrs: { columns: m, rowKey: d, ancestorKeys: i, prefixCls: l + "-expanded-row", indentSize: h, indent: o, fixed: a, components: p, expandedRow: !0, hasExpandIcon: function () { } }, class: r }) }, renderRows: function (e, t, n, r, i, o, a, s) { var l = this.expandedRowClassName, u = this.expandedRowRender, h = this.childrenColumnName, f = n[h], d = [].concat(c()(s), [a]), p = i + 1; u && t.push(this.renderExpandedRow(n, r, u, l(n, r, i), d, p, o)), f && t.push.apply(t, c()(e(f, p, d))) } }, render: function () { var e = this.data, t = this.childrenColumnName, n = this.$scopedSlots, r = Object(R["l"])(this), i = e.some((function (e) { return e[t] })); return n["default"] && n["default"]({ props: r, on: Object(R["k"])(this), needIndentSpaced: i, renderRows: this.renderRows, handleExpandChange: this.handleExpandChange, renderExpandIndentCell: this.renderExpandIndentCell }) } }, le = ce, ue = n("8bbf"), he = n.n(ue), fe = { name: "Table", mixins: [G["a"]], provide: function () { return { "table-store": this.store, table: this } }, props: Object(R["t"])({ data: L["a"].array, useFixedHeader: L["a"].bool, columns: L["a"].array, prefixCls: L["a"].string, bodyStyle: L["a"].object, rowKey: L["a"].oneOfType([L["a"].string, L["a"].func]), rowClassName: L["a"].oneOfType([L["a"].string, L["a"].func]), customRow: L["a"].func, customHeaderRow: L["a"].func, showHeader: L["a"].bool, title: L["a"].func, id: L["a"].string, footer: L["a"].func, emptyText: L["a"].any, scroll: L["a"].object, rowRef: L["a"].func, getBodyWrapper: L["a"].func, components: L["a"].shape({ table: L["a"].any, header: L["a"].shape({ wrapper: L["a"].any, row: L["a"].any, cell: L["a"].any }), body: L["a"].shape({ wrapper: L["a"].any, row: L["a"].any, cell: L["a"].any }) }), expandIconAsCell: L["a"].bool, expandedRowKeys: L["a"].array, expandedRowClassName: L["a"].func, defaultExpandAllRows: L["a"].bool, defaultExpandedRowKeys: L["a"].array, expandIconColumnIndex: L["a"].number, expandedRowRender: L["a"].func, childrenColumnName: L["a"].string, indentSize: L["a"].number, expandRowByClick: L["a"].bool, expandIcon: L["a"].func, tableLayout: L["a"].string, transformCellText: L["a"].func }, { data: [], useFixedHeader: !1, rowKey: "key", rowClassName: function () { return "" }, prefixCls: "rc-table", bodyStyle: {}, showHeader: !0, scroll: {}, rowRef: function () { return null }, emptyText: function () { return "No Data" }, customHeaderRow: function () { } }), data: function () { return this.preData = [].concat(c()(this.data)), this.store = he.a.observable({ currentHoverKey: null, fixedColumnsHeadRowsHeight: [], fixedColumnsBodyRowsHeight: {}, expandedRowsHeight: {}, expandedRowKeys: [] }), { columnManager: new I(this.columns), sComponents: O()({ table: "table", header: { wrapper: "thead", row: "tr", cell: "th" }, body: { wrapper: "tbody", row: "tr", cell: "td" } }, this.components) } }, watch: { components: function () { this._components = O()({ table: "table", header: { wrapper: "thead", row: "tr", cell: "th" }, body: { wrapper: "tbody", row: "tr", cell: "td" } }, this.components) }, columns: function (e) { e && this.columnManager.reset(e) }, data: function (e) { var t = this; 0 === e.length && this.hasScrollX() && this.$nextTick((function () { t.resetScrollX() })) } }, created: function () { var e = this;["rowClick", "rowDoubleclick", "rowContextmenu", "rowMouseenter", "rowMouseleave"].forEach((function (t) { Object(j["a"])(void 0 === Object(R["k"])(e)[t], t + " is deprecated, please use customRow instead.") })), Object(j["a"])(void 0 === this.getBodyWrapper, "getBodyWrapper is deprecated, please use custom components instead."), this.setScrollPosition("left"), this.debouncedWindowResize = y(this.handleWindowResize, 150) }, mounted: function () { var e = this; this.$nextTick((function () { e.columnManager.isAnyColumnsFixed() && (e.handleWindowResize(), e.resizeEvent = Object(z["a"])(window, "resize", e.debouncedWindowResize)), e.ref_headTable && (e.ref_headTable.scrollLeft = 0), e.ref_bodyTable && (e.ref_bodyTable.scrollLeft = 0) })) }, updated: function () { var e = this; this.$nextTick((function () { e.columnManager.isAnyColumnsFixed() && (e.handleWindowResize(), e.resizeEvent || (e.resizeEvent = Object(z["a"])(window, "resize", e.debouncedWindowResize))) })) }, beforeDestroy: function () { this.resizeEvent && this.resizeEvent.remove(), this.debouncedWindowResize && this.debouncedWindowResize.cancel() }, methods: { getRowKey: function (e, t) { var n = this.rowKey, r = "function" === typeof n ? n(e, t) : e[n]; return Object(j["a"])(void 0 !== r, "Each record in table should have a unique `key` prop,or set `rowKey` to an unique primary key."), void 0 === r ? t : r }, setScrollPosition: function (e) { if (this.scrollPosition = e, this.tableNode) { var t = this.prefixCls; "both" === e ? S()(this.tableNode).remove(new RegExp("^" + t + "-scroll-position-.+$")).add(t + "-scroll-position-left").add(t + "-scroll-position-right") : S()(this.tableNode).remove(new RegExp("^" + t + "-scroll-position-.+$")).add(t + "-scroll-position-" + e) } }, setScrollPositionClassName: function () { var e = this.ref_bodyTable, t = 0 === e.scrollLeft, n = e.scrollLeft + 1 >= e.children[0].getBoundingClientRect().width - e.getBoundingClientRect().width; t && n ? this.setScrollPosition("both") : t ? this.setScrollPosition("left") : n ? this.setScrollPosition("right") : "middle" !== this.scrollPosition && this.setScrollPosition("middle") }, isTableLayoutFixed: function () { var e = this.$props, t = e.tableLayout, n = e.columns, r = void 0 === n ? [] : n, i = e.useFixedHeader, o = e.scroll, a = void 0 === o ? {} : o; return "undefined" !== typeof t ? "fixed" === t : !!r.some((function (e) { var t = e.ellipsis; return !!t })) || (!(!i && !a.y) || !(!a.x || !0 === a.x || "max-content" === a.x)) }, handleWindowResize: function () { this.syncFixedTableRowHeight(), this.setScrollPositionClassName() }, syncFixedTableRowHeight: function () { var e = this.tableNode.getBoundingClientRect(); if (!(void 0 !== e.height && e.height <= 0)) { var t = this.prefixCls, n = this.ref_headTable ? this.ref_headTable.querySelectorAll("thead") : this.ref_bodyTable.querySelectorAll("thead"), r = this.ref_bodyTable.querySelectorAll("." + t + "-row") || [], i = [].map.call(n, (function (e) { return e.getBoundingClientRect().height ? e.getBoundingClientRect().height - .5 : "auto" })), o = this.store, a = [].reduce.call(r, (function (e, t) { var n = t.getAttribute("data-row-key"), r = t.getBoundingClientRect().height || o.fixedColumnsBodyRowsHeight[n] || "auto"; return e[n] = r, e }), {}); C()(o.fixedColumnsHeadRowsHeight, i) && C()(o.fixedColumnsBodyRowsHeight, a) || (this.store.fixedColumnsHeadRowsHeight = i, this.store.fixedColumnsBodyRowsHeight = a) } }, resetScrollX: function () { this.ref_headTable && (this.ref_headTable.scrollLeft = 0), this.ref_bodyTable && (this.ref_bodyTable.scrollLeft = 0) }, hasScrollX: function () { var e = this.scroll, t = void 0 === e ? {} : e; return "x" in t }, handleBodyScrollLeft: function (e) { if (e.currentTarget === e.target) { var t = e.target, n = this.scroll, r = void 0 === n ? {} : n, i = this.ref_headTable, o = this.ref_bodyTable; t.scrollLeft !== this.lastScrollLeft && r.x && (t === o && i ? i.scrollLeft = t.scrollLeft : t === i && o && (o.scrollLeft = t.scrollLeft), this.setScrollPositionClassName()), this.lastScrollLeft = t.scrollLeft } }, handleBodyScrollTop: function (e) { var t = e.target; if (e.currentTarget === t) { var n = this.scroll, r = void 0 === n ? {} : n, i = this.ref_headTable, o = this.ref_bodyTable, a = this.ref_fixedColumnsBodyLeft, s = this.ref_fixedColumnsBodyRight; if (t.scrollTop !== this.lastScrollTop && r.y && t !== i) { var c = t.scrollTop; a && t !== a && (a.scrollTop = c), s && t !== s && (s.scrollTop = c), o && t !== o && (o.scrollTop = c) } this.lastScrollTop = t.scrollTop } }, handleBodyScroll: function (e) { this.handleBodyScrollLeft(e), this.handleBodyScrollTop(e) }, handleWheel: function (e) { var t = this.$props.scroll, n = void 0 === t ? {} : t; if (window.navigator.userAgent.match(/Trident\/7\./) && n.y) { e.preventDefault(); var r = e.deltaY, i = e.target, o = this.ref_bodyTable, a = this.ref_fixedColumnsBodyLeft, s = this.ref_fixedColumnsBodyRight, c = 0; c = this.lastScrollTop ? this.lastScrollTop + r : r, a && i !== a && (a.scrollTop = c), s && i !== s && (s.scrollTop = c), o && i !== o && (o.scrollTop = c) } }, saveRef: function (e) { var t = this; return function (n) { t["ref_" + e] = n } }, saveTableNodeRef: function (e) { this.tableNode = e }, renderMainTable: function () { var e = this.$createElement, t = this.scroll, n = this.prefixCls, r = this.columnManager.isAnyColumnsFixed(), i = r || t.x || t.y, o = [this.renderTable({ columns: this.columnManager.groupedColumns(), isAnyColumnsFixed: r }), this.renderEmptyText(), this.renderFooter()]; return i ? e("div", { class: n + "-scroll" }, [o]) : o }, renderLeftFixedTable: function () { var e = this.$createElement, t = this.prefixCls; return e("div", { class: t + "-fixed-left" }, [this.renderTable({ columns: this.columnManager.leftColumns(), fixed: "left" })]) }, renderRightFixedTable: function () { var e = this.$createElement, t = this.prefixCls; return e("div", { class: t + "-fixed-right" }, [this.renderTable({ columns: this.columnManager.rightColumns(), fixed: "right" })]) }, renderTable: function (e) { var t = this.$createElement, n = e.columns, r = e.fixed, i = e.isAnyColumnsFixed, o = this.prefixCls, a = this.scroll, s = void 0 === a ? {} : a, c = s.x || r ? o + "-fixed" : "", l = t(oe, { key: "head", attrs: { columns: n, fixed: r, tableClassName: c, handleBodyScrollLeft: this.handleBodyScrollLeft, expander: this.expander } }), u = t(ae, { key: "body", attrs: { columns: n, fixed: r, tableClassName: c, getRowKey: this.getRowKey, handleWheel: this.handleWheel, handleBodyScroll: this.handleBodyScroll, expander: this.expander, isAnyColumnsFixed: i } }); return [l, u] }, renderTitle: function () { var e = this.$createElement, t = this.title, n = this.prefixCls, r = this.data; return t ? e("div", { class: n + "-title", key: "title" }, [t(r)]) : null }, renderFooter: function () { var e = this.$createElement, t = this.footer, n = this.prefixCls, r = this.data; return t ? e("div", { class: n + "-footer", key: "footer" }, [t(r)]) : null }, renderEmptyText: function () { var e = this.$createElement, t = this.emptyText, n = this.prefixCls, r = this.data; if (r.length) return null; var i = n + "-placeholder"; return e("div", { class: i, key: "emptyText" }, ["function" === typeof t ? t() : t]) } }, render: function () { var e, t = this, n = arguments[0], r = Object(R["l"])(this), i = this.columnManager, o = this.getRowKey, s = r.prefixCls, c = A()(r.prefixCls, (e = {}, a()(e, s + "-fixed-header", r.useFixedHeader || r.scroll && r.scroll.y), a()(e, s + "-scroll-position-left " + s + "-scroll-position-right", "both" === this.scrollPosition), a()(e, s + "-scroll-position-" + this.scrollPosition, "both" !== this.scrollPosition), a()(e, s + "-layout-fixed", this.isTableLayoutFixed()), e)), l = i.isAnyColumnsLeftFixed(), u = i.isAnyColumnsRightFixed(), h = { props: f()({}, r, { columnManager: i, getRowKey: o }), on: Object(R["k"])(this), scopedSlots: { default: function (e) { return t.expander = e, n("div", w()([{ directives: [{ name: "ant-ref", value: t.saveTableNodeRef }] }, { class: c }]), [t.renderTitle(), n("div", { class: s + "-content" }, [t.renderMainTable(), l && t.renderLeftFixedTable(), u && t.renderRightFixedTable()])]) } } }; return n(le, h) } }, de = { name: "Column", props: { rowSpan: L["a"].number, colSpan: L["a"].number, title: L["a"].any, dataIndex: L["a"].string, width: L["a"].oneOfType([L["a"].number, L["a"].string]), ellipsis: L["a"].bool, fixed: L["a"].oneOf([!0, "left", "right"]), align: L["a"].oneOf(["left", "center", "right"]), customRender: L["a"].func, className: L["a"].string, customCell: L["a"].func, customHeaderCell: L["a"].func } }, pe = { name: "ColumnGroup", props: { title: L["a"].any }, isTableColumnGroup: !0 }, ve = { name: "Table", Column: de, ColumnGroup: pe, props: fe.props, methods: { getTableNode: function () { return this.$refs.table.tableNode }, getBodyTable: function () { return this.$refs.table.ref_bodyTable }, normalize: function () { var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], n = []; return t.forEach((function (t) { if (t.tag) { var r = Object(R["j"])(t), i = Object(R["q"])(t), o = Object(R["f"])(t), a = Object(R["l"])(t), s = Object(R["i"])(t), c = {}; Object.keys(s).forEach((function (e) { var t = "on-" + e; c[Object(R["a"])(t)] = s[e] })); var l = Object(R["p"])(t), u = l["default"], h = l.title, d = f()({ title: h }, a, { style: i, class: o }, c); if (r && (d.key = r), Object(R["o"])(t).isTableColumnGroup) d.children = e.normalize("function" === typeof u ? u() : u); else { var p = t.data && t.data.scopedSlots && t.data.scopedSlots["default"]; d.customRender = d.customRender || p } n.push(d) } })), n } }, render: function () { var e = arguments[0], t = this.$slots, n = this.normalize, r = Object(R["l"])(this), i = r.columns || n(t["default"]), o = { props: f()({}, r, { columns: i }), on: Object(R["k"])(this), ref: "table" }; return e(fe, o) } }, me = ve, ge = n("a3a2"), ye = n("528d"), be = n("da30"), xe = n("61fe"), we = n.n(xe), _e = n("a600"), Ce = n("0c63"), Me = n("bb76"), Oe = n("59a5"), ke = { name: "FilterDropdownMenuWrapper", methods: { handelClick: function (e) { e.stopPropagation() } }, render: function () { var e = arguments[0], t = this.$slots, n = this.handelClick; return e("div", { on: { click: n } }, [t["default"]]) } }, Se = n("5091"), Te = n("b1e0"), Ae = Object(Se["b"])(), Le = Object(Te["a"])(), je = L["a"].shape({ text: L["a"].string, value: L["a"].string, children: L["a"].array }).loose, ze = { title: L["a"].any, dataIndex: L["a"].string, customRender: L["a"].func, customCell: L["a"].func, customHeaderCell: L["a"].func, align: L["a"].oneOf(["left", "right", "center"]), ellipsis: L["a"].bool, filters: L["a"].arrayOf(je), filterMultiple: L["a"].bool, filterDropdown: L["a"].any, filterDropdownVisible: L["a"].bool, sorter: L["a"].oneOfType([L["a"].boolean, L["a"].func]), defaultSortOrder: L["a"].oneOf(["ascend", "descend"]), colSpan: L["a"].number, width: L["a"].oneOfType([L["a"].string, L["a"].number]), className: L["a"].string, fixed: L["a"].oneOfType([L["a"].bool, L["a"].oneOf(["left", "right"])]), filterIcon: L["a"].any, filteredValue: L["a"].array, filtered: L["a"].bool, defaultFilteredValue: L["a"].array, sortOrder: L["a"].oneOfType([L["a"].bool, L["a"].oneOf(["ascend", "descend"])]), sortDirections: L["a"].array }, Ee = L["a"].shape({ filterTitle: L["a"].string, filterConfirm: L["a"].any, filterReset: L["a"].any, emptyText: L["a"].any, selectAll: L["a"].any, selectInvert: L["a"].any, sortTitle: L["a"].string, expand: L["a"].string, collapse: L["a"].string }).loose, Pe = L["a"].oneOf(["checkbox", "radio"]), De = { type: Pe, selectedRowKeys: L["a"].array, getCheckboxProps: L["a"].func, selections: L["a"].oneOfType([L["a"].array, L["a"].bool]), hideDefaultSelections: L["a"].bool, fixed: L["a"].bool, columnWidth: L["a"].oneOfType([L["a"].string, L["a"].number]), selectWay: L["a"].oneOf(["onSelect", "onSelectMultiple", "onSelectAll", "onSelectInvert"]), columnTitle: L["a"].any }, He = { prefixCls: L["a"].string, dropdownPrefixCls: L["a"].string, rowSelection: L["a"].oneOfType([L["a"].shape(De).loose, null]), pagination: L["a"].oneOfType([L["a"].shape(f()({}, Ae, { position: L["a"].oneOf(["top", "bottom", "both"]) })).loose, L["a"].bool]), size: L["a"].oneOf(["default", "middle", "small", "large"]), dataSource: L["a"].array, components: L["a"].object, columns: L["a"].array, rowKey: L["a"].oneOfType([L["a"].string, L["a"].func]), rowClassName: L["a"].func, expandedRowRender: L["a"].any, defaultExpandAllRows: L["a"].bool, defaultExpandedRowKeys: L["a"].array, expandedRowKeys: L["a"].array, expandIconAsCell: L["a"].bool, expandIconColumnIndex: L["a"].number, expandRowByClick: L["a"].bool, loading: L["a"].oneOfType([L["a"].shape(Le).loose, L["a"].bool]), locale: Ee, indentSize: L["a"].number, customRow: L["a"].func, customHeaderRow: L["a"].func, useFixedHeader: L["a"].bool, bordered: L["a"].bool, showHeader: L["a"].bool, footer: L["a"].func, title: L["a"].func, scroll: L["a"].object, childrenColumnName: L["a"].oneOfType([L["a"].array, L["a"].string]), bodyStyle: L["a"].any, sortDirections: L["a"].array, tableLayout: L["a"].string, getPopupContainer: L["a"].func, expandIcon: L["a"].func, transformCellText: L["a"].func }, Ve = { store: L["a"].any, locale: L["a"].any, disabled: L["a"].bool, getCheckboxPropsByItem: L["a"].func, getRecordKey: L["a"].func, data: L["a"].array, prefixCls: L["a"].string, hideDefaultSelections: L["a"].bool, selections: L["a"].oneOfType([L["a"].array, L["a"].bool]), getPopupContainer: L["a"].func }, Ie = { store: L["a"].any, type: Pe, defaultSelection: L["a"].arrayOf([L["a"].string, L["a"].number]), rowIndex: L["a"].oneOfType([L["a"].string, L["a"].number]), name: L["a"].string, disabled: L["a"].bool, id: L["a"].string }, Ne = { _propsSymbol: L["a"].any, locale: Ee, selectedKeys: L["a"].arrayOf([L["a"].string, L["a"].number]), column: L["a"].object, confirmFilter: L["a"].func, prefixCls: L["a"].string, dropdownPrefixCls: L["a"].string, getPopupContainer: L["a"].func, handleFilter: L["a"].func }, Re = n("7b05"); function Fe() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "children", n = [], r = function e(r) { r.forEach((function (r) { if (r[t]) { var i = f()({}, r); delete i[t], n.push(i), r[t].length > 0 && e(r[t]) } else n.push(r) })) }; return r(e), n } function Ye(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "children"; return e.map((function (e, r) { var i = {}; return e[n] && (i[n] = Ye(e[n], t, n)), f()({}, t(e, r), i) })) } function $e(e, t) { return e.reduce((function (e, n) { if (t(n) && e.push(n), n.children) { var r = $e(n.children, t); e.push.apply(e, c()(r)) } return e }), []) } function Be(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return (e || []).forEach((function (e) { var n = e.value, r = e.children; t[n.toString()] = n, Be(r, t) })), t } function We(e) { e.stopPropagation() } var qe = { name: "FilterMenu", mixins: [G["a"]], props: Object(R["t"])(Ne, { handleFilter: function () { }, column: {} }), data: function () { var e = "filterDropdownVisible" in this.column && this.column.filterDropdownVisible; return this.preProps = f()({}, Object(R["l"])(this)), { sSelectedKeys: this.selectedKeys, sKeyPathOfSelectedItem: {}, sVisible: e, sValueKeys: Be(this.column.filters) } }, watch: { _propsSymbol: function () { var e = Object(R["l"])(this), t = e.column, n = {}; "selectedKeys" in e && !C()(this.preProps.selectedKeys, e.selectedKeys) && (n.sSelectedKeys = e.selectedKeys), C()((this.preProps.column || {}).filters, (e.column || {}).filters) || (n.sValueKeys = Be(e.column.filters)), "filterDropdownVisible" in t && (n.sVisible = t.filterDropdownVisible), Object.keys(n).length > 0 && this.setState(n), this.preProps = f()({}, e) } }, mounted: function () { var e = this, t = this.column; this.$nextTick((function () { e.setNeverShown(t) })) }, updated: function () { var e = this, t = this.column; this.$nextTick((function () { e.setNeverShown(t) })) }, methods: { getDropdownVisible: function () { return !this.neverShown && this.sVisible }, setNeverShown: function (e) { var t = this.$el, n = !!we()(t, ".ant-table-scroll"); n && (this.neverShown = !!e.fixed) }, setSelectedKeys: function (e) { var t = e.selectedKeys; this.setState({ sSelectedKeys: t }) }, setVisible: function (e) { var t = this.column; "filterDropdownVisible" in t || this.setState({ sVisible: e }), t.onFilterDropdownVisibleChange && t.onFilterDropdownVisibleChange(e) }, handleClearFilters: function () { this.setState({ sSelectedKeys: [] }, this.handleConfirm) }, handleConfirm: function () { var e = this; this.setVisible(!1), this.confirmFilter2(), this.$forceUpdate(), this.$nextTick((function () { e.confirmFilter })) }, onVisibleChange: function (e) { this.setVisible(e); var t = this.$props.column; e || t.filterDropdown instanceof Function || this.confirmFilter2() }, handleMenuItemClick: function (e) { var t = this.$data.sSelectedKeys; if (e.keyPath && !(e.keyPath.length <= 1)) { var n = this.$data.sKeyPathOfSelectedItem; t && t.indexOf(e.key) >= 0 ? delete n[e.key] : n[e.key] = e.keyPath, this.setState({ sKeyPathOfSelectedItem: n }) } }, hasSubMenu: function () { var e = this.column.filters, t = void 0 === e ? [] : e; return t.some((function (e) { return !!(e.children && e.children.length > 0) })) }, confirmFilter2: function () { var e = this.$props, t = e.column, n = e.selectedKeys, r = e.confirmFilter, i = this.$data, o = i.sSelectedKeys, a = i.sValueKeys, s = t.filterDropdown; C()(o, n) || r(t, s ? o : o.map((function (e) { return a[e] })).filter((function (e) { return void 0 !== e }))) }, renderMenus: function (e) { var t = this, n = this.$createElement, r = this.$props, i = r.dropdownPrefixCls, o = r.prefixCls; return e.map((function (e) { if (e.children && e.children.length > 0) { var r = t.sKeyPathOfSelectedItem, s = Object.keys(r).some((function (t) { return r[t].indexOf(e.value) >= 0 })), c = A()(o + "-dropdown-submenu", a()({}, i + "-submenu-contain-selected", s)); return n(ge["a"], { attrs: { title: e.text, popupClassName: c }, key: e.value }, [t.renderMenus(e.children)]) } return t.renderMenuItem(e) })) }, renderFilterIcon: function () { var e, t = this.$createElement, n = this.column, r = this.locale, i = this.prefixCls, o = this.selectedKeys, s = o && o.length > 0, c = n.filterIcon; "function" === typeof c && (c = c(s, n)); var l = A()((e = {}, a()(e, i + "-selected", "filtered" in n ? n.filtered : s), a()(e, i + "-open", this.getDropdownVisible()), e)); return c ? 1 === c.length && Object(R["w"])(c[0]) ? Object(Re["a"])(c[0], { on: { click: We }, class: A()(i + "-icon", l) }) : t("span", { class: A()(i + "-icon", l) }, [c]) : t(Ce["a"], { attrs: { title: r.filterTitle, type: "filter", theme: "filled" }, class: l, on: { click: We } }) }, renderMenuItem: function (e) { var t = this.$createElement, n = this.column, r = this.$data.sSelectedKeys, i = !("filterMultiple" in n) || n.filterMultiple, o = t(i ? Me["a"] : Oe["a"], { attrs: { checked: r && r.indexOf(e.value) >= 0 } }); return t(ye["a"], { key: e.value }, [o, t("span", [e.text])]) } }, render: function () { var e = this, t = arguments[0], n = this.$data.sSelectedKeys, r = this.column, i = this.locale, o = this.prefixCls, s = this.dropdownPrefixCls, c = this.getPopupContainer, l = !("filterMultiple" in r) || r.filterMultiple, u = A()(a()({}, s + "-menu-without-submenu", !this.hasSubMenu())), h = r.filterDropdown; h instanceof Function && (h = h({ prefixCls: s + "-custom", setSelectedKeys: function (t) { return e.setSelectedKeys({ selectedKeys: t }) }, selectedKeys: n, confirm: this.handleConfirm, clearFilters: this.handleClearFilters, filters: r.filters, visible: this.getDropdownVisible(), column: r })); var f = t(ke, { class: o + "-dropdown" }, h ? [h] : [t(be["a"], { attrs: { multiple: l, prefixCls: s + "-menu", selectedKeys: n && n.map((function (e) { return e })), getPopupContainer: c }, on: { click: this.handleMenuItemClick, select: this.setSelectedKeys, deselect: this.setSelectedKeys }, class: u }, [this.renderMenus(r.filters)]), t("div", { class: o + "-dropdown-btns" }, [t("a", { class: o + "-dropdown-link confirm", on: { click: this.handleConfirm } }, [i.filterConfirm]), t("a", { class: o + "-dropdown-link clear", on: { click: this.handleClearFilters } }, [i.filterReset])])]); return t(_e["a"], { attrs: { trigger: ["click"], placement: "bottomRight", visible: this.getDropdownVisible(), getPopupContainer: c, forceRender: !0 }, on: { visibleChange: this.onVisibleChange } }, [t("template", { slot: "overlay" }, [f]), this.renderFilterIcon()]) } }, Ue = { name: "SelectionBox", mixins: [G["a"]], props: Ie, computed: { checked: function () { var e = this.$props, t = e.store, n = e.defaultSelection, r = e.rowIndex, i = !1; return i = t.selectionDirty ? t.selectedRowKeys.indexOf(r) >= 0 : t.selectedRowKeys.indexOf(r) >= 0 || n.indexOf(r) >= 0, i } }, render: function () { var e = arguments[0], t = Object(R["l"])(this), n = t.type, r = t.rowIndex, o = i()(t, ["type", "rowIndex"]), a = this.checked, s = { props: f()({ checked: a }, o), on: Object(R["k"])(this) }; return "radio" === n ? (s.props.value = r, e(Oe["a"], s)) : e(Me["a"], s) } }, Ke = n("55f1"); function Ge(e) { var t = e.store, n = e.getCheckboxPropsByItem, r = e.getRecordKey, i = e.data, o = e.type, a = e.byDefaultChecked; return a ? i[o]((function (e, t) { return n(e, t).defaultChecked })) : i[o]((function (e, n) { return t.selectedRowKeys.indexOf(r(e, n)) >= 0 })) } function Xe(e) { var t = e.store, n = e.data; if (!n.length) return !1; var r = Ge(f()({}, e, { data: n, type: "some", byDefaultChecked: !1 })) && !Ge(f()({}, e, { data: n, type: "every", byDefaultChecked: !1 })), i = Ge(f()({}, e, { data: n, type: "some", byDefaultChecked: !0 })) && !Ge(f()({}, e, { data: n, type: "every", byDefaultChecked: !0 })); return t.selectionDirty ? r : r || i } function Je(e) { var t = e.store, n = e.data; return !!n.length && (t.selectionDirty ? Ge(f()({}, e, { data: n, type: "every", byDefaultChecked: !1 })) : Ge(f()({}, e, { data: n, type: "every", byDefaultChecked: !1 })) || Ge(f()({}, e, { data: n, type: "every", byDefaultChecked: !0 }))) } var Qe = { name: "SelectionCheckboxAll", mixins: [G["a"]], props: Ve, data: function () { var e = this.$props; return this.defaultSelections = e.hideDefaultSelections ? [] : [{ key: "all", text: e.locale.selectAll }, { key: "invert", text: e.locale.selectInvert }], { checked: Je(e), indeterminate: Xe(e) } }, watch: { $props: { handler: function () { this.setCheckState(this.$props) }, deep: !0, immediate: !0 } }, methods: { checkSelection: function (e, t, n, r) { var i = e || this.$props, o = i.store, a = i.getCheckboxPropsByItem, s = i.getRecordKey; return ("every" === n || "some" === n) && (r ? t[n]((function (e, t) { return a(e, t).props.defaultChecked })) : t[n]((function (e, t) { return o.selectedRowKeys.indexOf(s(e, t)) >= 0 }))) }, setCheckState: function (e) { var t = Je(e), n = Xe(e); this.setState((function (e) { var r = {}; return n !== e.indeterminate && (r.indeterminate = n), t !== e.checked && (r.checked = t), r })) }, handleSelectAllChange: function (e) { var t = e.target.checked; this.$emit("select", t ? "all" : "removeAll", 0, null) }, renderMenus: function (e) { var t = this, n = this.$createElement; return e.map((function (e, r) { return n(Ke["a"].Item, { key: e.key || r }, [n("div", { on: { click: function () { t.$emit("select", e.key, r, e.onSelect) } } }, [e.text])]) })) } }, render: function () { var e = arguments[0], t = this.disabled, n = this.prefixCls, r = this.selections, i = this.getPopupContainer, o = this.checked, s = this.indeterminate, c = n + "-selection", l = null; if (r) { var u = Array.isArray(r) ? this.defaultSelections.concat(r) : this.defaultSelections, h = e(Ke["a"], { class: c + "-menu", attrs: { selectedKeys: [] } }, [this.renderMenus(u)]); l = u.length > 0 ? e(_e["a"], { attrs: { getPopupContainer: i } }, [e("template", { slot: "overlay" }, [h]), e("div", { class: c + "-down" }, [e(Ce["a"], { attrs: { type: "down" } })])]) : null } return e("div", { class: c }, [e(Me["a"], { class: A()(a()({}, c + "-select-all-custom", l)), attrs: { checked: o, indeterminate: s, disabled: t }, on: { change: this.handleSelectAllChange } }), l]) } }, Ze = { name: "ATableColumn", props: ze }, et = { name: "ATableColumnGroup", props: { title: L["a"].any }, __ANT_TABLE_COLUMN_GROUP: !0 }, tt = { store: L["a"].any, rowKey: L["a"].oneOfType([L["a"].string, L["a"].number]), prefixCls: L["a"].string }; function nt() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "tr", t = { name: "BodyRow", props: tt, computed: { selected: function () { return this.$props.store.selectedRowKeys.indexOf(this.$props.rowKey) >= 0 } }, render: function () { var t = arguments[0], n = a()({}, this.prefixCls + "-row-selected", this.selected); return t(e, w()([{ class: n }, { on: Object(R["k"])(this) }]), [this.$slots["default"]]) } }; return t } var rt = n("9cba"), it = n("de1b"), ot = n("8592"), at = n("e5cd"), st = n("02ea"), ct = n("c449"), lt = n.n(ct); function ut(e, t) { if ("undefined" === typeof window) return 0; var n = t ? "pageYOffset" : "pageXOffset", r = t ? "scrollTop" : "scrollLeft", i = e === window, o = i ? e[n] : e[r]; return i && "number" !== typeof o && (o = window.document.documentElement[r]), o } function ht(e, t, n, r) { var i = n - t; return e /= r / 2, e < 1 ? i / 2 * e * e * e + t : i / 2 * ((e -= 2) * e * e + 2) + t } function ft(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.getContainer, r = void 0 === n ? function () { return window } : n, i = t.callback, o = t.duration, a = void 0 === o ? 450 : o, s = r(), c = ut(s, !0), l = Date.now(), u = function t() { var n = Date.now(), r = n - l, o = ht(r > a ? a : r, c, e, a); s === window ? window.scrollTo(window.pageXOffset, o) : s.scrollTop = o, r < a ? lt()(t) : "function" === typeof i && i() }; lt()(u) } var dt = n("63c4"); function pt() { } function vt(e) { e.stopPropagation() } function mt(e) { return e.rowSelection || {} } function gt(e, t) { return e.key || e.dataIndex || t } function yt(e, t) { return !!(e && t && e.key && e.key === t.key) || (e === t || C()(e, t, (function (e, t) { return "function" === typeof e && "function" === typeof t ? e === t || e.toString() === t.toString() : Array.isArray(e) && Array.isArray(t) ? e === t || C()(e, t) : void 0 }))) } var bt = { onChange: pt, onShowSizeChange: pt }, xt = {}, wt = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = e && e.body && e.body.row; return f()({}, e, { body: f()({}, e.body, { row: nt(t) }) }) }; function _t() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return e === t || ["table", "header", "body"].every((function (n) { return C()(e[n], t[n]) })) } function Ct(e, t) { return $e(t || (e || {}).columns || [], (function (e) { return "undefined" !== typeof e.filteredValue })) } function Mt(e, t) { var n = {}; return Ct(e, t).forEach((function (e) { var t = gt(e); n[t] = e.filteredValue })), n } function Ot(e, t) { return Object.keys(t).length !== Object.keys(e.filters).length || Object.keys(t).some((function (n) { return t[n] !== e.filters[n] })) } t["a"] = { name: "Table", Column: Ze, ColumnGroup: et, mixins: [G["a"]], inject: { configProvider: { default: function () { return rt["a"] } } }, provide: function () { return { store: this.store } }, props: Object(R["t"])(He, { dataSource: [], useFixedHeader: !1, size: "default", loading: !1, bordered: !1, indentSize: 20, locale: {}, rowKey: "key", showHeader: !0, sortDirections: ["ascend", "descend"], childrenColumnName: "children" }), data: function () { var e = Object(R["l"])(this); return Object(j["a"])(!e.expandedRowRender || !("scroll" in e) || !e.scroll.x, "`expandedRowRender` and `scroll` are not compatible. Please use one of them at one time."), this.CheckboxPropsCache = {}, this.store = he.a.observable({ selectedRowKeys: mt(this.$props).selectedRowKeys || [], selectionDirty: !1 }), f()({}, this.getDefaultSortOrder(e.columns || []), { sFilters: this.getDefaultFilters(e.columns), sPagination: this.getDefaultPagination(this.$props), pivot: void 0, sComponents: wt(this.components), filterDataCnt: 0 }) }, watch: { pagination: { handler: function (e) { this.setState((function (t) { var n = f()({}, bt, t.sPagination, e); return n.current = n.current || 1, n.pageSize = n.pageSize || 10, { sPagination: !1 !== e ? n : xt } })) }, deep: !0 }, rowSelection: { handler: function (e, t) { if (e && "selectedRowKeys" in e) { this.store.selectedRowKeys = e.selectedRowKeys || []; var n = this.rowSelection; n && e.getCheckboxProps !== n.getCheckboxProps && (this.CheckboxPropsCache = {}) } else t && !e && (this.store.selectedRowKeys = []) }, deep: !0 }, dataSource: function () { this.store.selectionDirty = !1, this.CheckboxPropsCache = {} }, columns: function (e) { var t = Ct({ columns: e }, e); if (t.length > 0) { var n = Mt({ columns: e }, e), r = f()({}, this.sFilters); Object.keys(n).forEach((function (e) { r[e] = n[e] })), Ot({ filters: this.sFilters }, r) && this.setState({ sFilters: r }) } this.$forceUpdate() }, components: { handler: function (e, t) { if (!_t(e, t)) { var n = wt(e); this.setState({ sComponents: n }) } }, deep: !0 } }, updated: function () { var e = this.columns, t = this.sSortColumn, n = this.sSortOrder; if (this.getSortOrderColumns(e).length > 0) { var r = this.getSortStateFromColumns(e); yt(r.sSortColumn, t) && r.sSortOrder === n || this.setState(r) } }, methods: { getCheckboxPropsByItem: function (e, t) { var n = mt(this.$props); if (!n.getCheckboxProps) return { props: {} }; var r = this.getRecordKey(e, t); return this.CheckboxPropsCache[r] || (this.CheckboxPropsCache[r] = n.getCheckboxProps(e)), this.CheckboxPropsCache[r].props = this.CheckboxPropsCache[r].props || {}, this.CheckboxPropsCache[r] }, getDefaultSelection: function () { var e = this, t = mt(this.$props); return t.getCheckboxProps ? this.getFlatData().filter((function (t, n) { return e.getCheckboxPropsByItem(t, n).props.defaultChecked })).map((function (t, n) { return e.getRecordKey(t, n) })) : [] }, getDefaultPagination: function (e) { var t = "object" === u()(e.pagination) ? e.pagination : {}, n = void 0; "current" in t ? n = t.current : "defaultCurrent" in t && (n = t.defaultCurrent); var r = void 0; return "pageSize" in t ? r = t.pageSize : "defaultPageSize" in t && (r = t.defaultPageSize), this.hasPagination(e) ? f()({}, bt, t, { current: n || 1, pageSize: r || 10 }) : {} }, getSortOrderColumns: function (e) { return $e(e || this.columns || [], (function (e) { return "sortOrder" in e })) }, getDefaultFilters: function (e) { var t = Mt({ columns: this.columns }, e), n = $e(e || [], (function (e) { return "undefined" !== typeof e.defaultFilteredValue })), r = n.reduce((function (e, t) { var n = gt(t); return e[n] = t.defaultFilteredValue, e }), {}); return f()({}, r, t) }, getDefaultSortOrder: function (e) { var t = this.getSortStateFromColumns(e), n = $e(e || [], (function (e) { return null != e.defaultSortOrder }))[0]; return n && !t.sortColumn ? { sSortColumn: n, sSortOrder: n.defaultSortOrder } : t }, getSortStateFromColumns: function (e) { var t = this.getSortOrderColumns(e).filter((function (e) { return e.sortOrder }))[0]; return t ? { sSortColumn: t, sSortOrder: t.sortOrder } : { sSortColumn: null, sSortOrder: null } }, getMaxCurrent: function (e) { var t = this.sPagination, n = t.current, r = t.pageSize; return (n - 1) * r >= e ? Math.floor((e - 1) / r) + 1 : n }, getRecordKey: function (e, t) { var n = this.rowKey, r = "function" === typeof n ? n(e, t) : e[n]; return Object(j["a"])(void 0 !== r, "Table", "Each record in dataSource of table should have a unique `key` prop, or set `rowKey` of Table to an unique primary key, "), void 0 === r ? t : r }, getSorterFn: function (e) { var t = e || this.$data, n = t.sSortOrder, r = t.sSortColumn; if (n && r && "function" === typeof r.sorter) return function (e, t) { var i = r.sorter(e, t, n); return 0 !== i ? "descend" === n ? -i : i : 0 } }, getCurrentPageData: function () { var e = this.getLocalData(); this.filterDataCnt = e.length; var t = void 0, n = void 0, r = this.sPagination; return this.hasPagination() ? (n = r.pageSize, t = this.getMaxCurrent(r.total || e.length)) : (n = Number.MAX_VALUE, t = 1), (e.length > n || n === Number.MAX_VALUE) && (e = e.slice((t - 1) * n, t * n)), e }, getFlatData: function () { var e = this.$props.childrenColumnName; return Fe(this.getLocalData(null, !1), e) }, getFlatCurrentPageData: function () { var e = this.$props.childrenColumnName; return Fe(this.getCurrentPageData(), e) }, getLocalData: function (e) { var t = this, n = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], r = e || this.$data, i = r.sFilters, o = this.$props.dataSource, a = o || []; a = a.slice(0); var s = this.getSorterFn(r); return s && (a = this.recursiveSort([].concat(c()(a)), s)), n && i && Object.keys(i).forEach((function (e) { var n = t.findColumn(e); if (n) { var r = i[e] || []; if (0 !== r.length) { var o = n.onFilter; a = o ? a.filter((function (e) { return r.some((function (t) { return o(t, e) })) })) : a } } })), a }, onRow: function (e, t, n) { var r = this.customRow, i = r ? r(t, n) : {}; return Object(R["x"])(i, { props: { prefixCls: e, store: this.store, rowKey: this.getRecordKey(t, n) } }) }, setSelectedRowKeys: function (e, t) { var n = this, r = t.selectWay, i = t.record, o = t.checked, a = t.changeRowKeys, s = t.nativeEvent, c = mt(this.$props); c && !("selectedRowKeys" in c) && (this.store.selectedRowKeys = e); var l = this.getFlatData(); if (c.onChange || c[r]) { var u = l.filter((function (t, r) { return e.indexOf(n.getRecordKey(t, r)) >= 0 })); if (c.onChange && c.onChange(e, u), "onSelect" === r && c.onSelect) c.onSelect(i, o, u, s); else if ("onSelectMultiple" === r && c.onSelectMultiple) { var h = l.filter((function (e, t) { return a.indexOf(n.getRecordKey(e, t)) >= 0 })); c.onSelectMultiple(o, u, h) } else if ("onSelectAll" === r && c.onSelectAll) { var f = l.filter((function (e, t) { return a.indexOf(n.getRecordKey(e, t)) >= 0 })); c.onSelectAll(o, u, f) } else "onSelectInvert" === r && c.onSelectInvert && c.onSelectInvert(e) } }, generatePopupContainerFunc: function (e) { var t = this.$props.scroll, n = this.$refs.vcTable; return e || (t && n ? function () { return n.getTableNode() } : void 0) }, scrollToFirstRow: function () { var e = this, t = this.$props.scroll; t && !1 !== t.scrollToFirstRowOnChange && ft(0, { getContainer: function () { return e.$refs.vcTable.getBodyTable() } }) }, isSameColumn: function (e, t) { return !!(e && t && e.key && e.key === t.key) || (e === t || C()(e, t, (function (e, t) { if ("function" === typeof e && "function" === typeof t) return e === t || e.toString() === t.toString() }))) }, handleFilter: function (e, t) { var n = this, r = this.$props, i = f()({}, this.sPagination), o = f()({}, this.sFilters, a()({}, gt(e), t)), s = []; Ye(this.columns, (function (e) { e.children || s.push(gt(e)) })), Object.keys(o).forEach((function (e) { s.indexOf(e) < 0 && delete o[e] })), r.pagination && (i.current = 1, i.onChange(i.current)); var l = { sPagination: i, sFilters: {} }, h = f()({}, o); Ct({ columns: r.columns }).forEach((function (e) { var t = gt(e); t && delete h[t] })), Object.keys(h).length > 0 && (l.sFilters = h), "object" === u()(r.pagination) && "current" in r.pagination && (l.sPagination = f()({}, i, { current: this.sPagination.current })), this.setState(l, (function () { n.scrollToFirstRow(), n.store.selectionDirty = !1, n.$emit.apply(n, ["change"].concat(c()(n.prepareParamsArguments(f()({}, n.$data, { sSelectionDirty: !1, sFilters: o, sPagination: i }))))) })) }, handleSelect: function (e, t, n) { var r = this, i = n.target.checked, o = n.nativeEvent, a = this.store.selectionDirty ? [] : this.getDefaultSelection(), s = this.store.selectedRowKeys.concat(a), c = this.getRecordKey(e, t), l = this.$data.pivot, u = this.getFlatCurrentPageData(), h = t; if (this.$props.expandedRowRender && (h = u.findIndex((function (e) { return r.getRecordKey(e, t) === c }))), o.shiftKey && void 0 !== l && h !== l) { var f = [], d = Math.sign(l - h), p = Math.abs(l - h), v = 0, m = function () { var e = h + v * d; v += 1; var t = u[e], n = r.getRecordKey(t, e), o = r.getCheckboxPropsByItem(t, e); o.disabled || (s.includes(n) ? i || (s = s.filter((function (e) { return n !== e })), f.push(n)) : i && (s.push(n), f.push(n))) }; while (v <= p) m(); this.setState({ pivot: h }), this.store.selectionDirty = !0, this.setSelectedRowKeys(s, { selectWay: "onSelectMultiple", record: e, checked: i, changeRowKeys: f, nativeEvent: o }) } else i ? s.push(this.getRecordKey(e, h)) : s = s.filter((function (e) { return c !== e })), this.setState({ pivot: h }), this.store.selectionDirty = !0, this.setSelectedRowKeys(s, { selectWay: "onSelect", record: e, checked: i, changeRowKeys: void 0, nativeEvent: o }) }, handleRadioSelect: function (e, t, n) { var r = n.target.checked, i = n.nativeEvent, o = this.getRecordKey(e, t), a = [o]; this.store.selectionDirty = !0, this.setSelectedRowKeys(a, { selectWay: "onSelect", record: e, checked: r, changeRowKeys: void 0, nativeEvent: i }) }, handleSelectRow: function (e, t, n) { var r = this, i = this.getFlatCurrentPageData(), o = this.store.selectionDirty ? [] : this.getDefaultSelection(), a = this.store.selectedRowKeys.concat(o), s = i.filter((function (e, t) { return !r.getCheckboxPropsByItem(e, t).props.disabled })).map((function (e, t) { return r.getRecordKey(e, t) })), c = [], l = "onSelectAll", u = void 0; switch (e) { case "all": s.forEach((function (e) { a.indexOf(e) < 0 && (a.push(e), c.push(e)) })), l = "onSelectAll", u = !0; break; case "removeAll": s.forEach((function (e) { a.indexOf(e) >= 0 && (a.splice(a.indexOf(e), 1), c.push(e)) })), l = "onSelectAll", u = !1; break; case "invert": s.forEach((function (e) { a.indexOf(e) < 0 ? a.push(e) : a.splice(a.indexOf(e), 1), c.push(e), l = "onSelectInvert" })); break; default: break }this.store.selectionDirty = !0; var h = this.rowSelection, f = 2; if (h && h.hideDefaultSelections && (f = 0), t >= f && "function" === typeof n) return n(s); this.setSelectedRowKeys(a, { selectWay: l, checked: u, changeRowKeys: c }) }, handlePageChange: function (e) { var t = this.$props, n = f()({}, this.sPagination); n.current = e || (n.current || 1); for (var r = arguments.length, i = Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++)i[o - 1] = arguments[o]; n.onChange.apply(n, [n.current].concat(c()(i))); var a = { sPagination: n }; t.pagination && "object" === u()(t.pagination) && "current" in t.pagination && (a.sPagination = f()({}, n, { current: this.sPagination.current })), this.setState(a, this.scrollToFirstRow), this.store.selectionDirty = !1, this.$emit.apply(this, ["change"].concat(c()(this.prepareParamsArguments(f()({}, this.$data, { sSelectionDirty: !1, sPagination: n }))))) }, handleShowSizeChange: function (e, t) { var n = this.sPagination; n.onShowSizeChange(e, t); var r = f()({}, n, { pageSize: t, current: e }); this.setState({ sPagination: r }, this.scrollToFirstRow), this.$emit.apply(this, ["change"].concat(c()(this.prepareParamsArguments(f()({}, this.$data, { sPagination: r }))))) }, toggleSortOrder: function (e) { var t = e.sortDirections || this.sortDirections, n = this.sSortOrder, r = this.sSortColumn, i = void 0; if (yt(r, e) && void 0 !== n) { var o = t.indexOf(n) + 1; i = o === t.length ? void 0 : t[o] } else i = t[0]; var a = { sSortOrder: i, sSortColumn: i ? e : null }; 0 === this.getSortOrderColumns().length && this.setState(a, this.scrollToFirstRow), this.$emit.apply(this, ["change"].concat(c()(this.prepareParamsArguments(f()({}, this.$data, a), e)))) }, hasPagination: function (e) { return !1 !== (e || this.$props).pagination }, isSortColumn: function (e) { var t = this.sSortColumn; return !(!e || !t) && gt(t) === gt(e) }, prepareParamsArguments: function (e, t) { var n = f()({}, e.sPagination); delete n.onChange, delete n.onShowSizeChange; var r = e.sFilters, i = {}, o = t; e.sSortColumn && e.sSortOrder && (o = e.sSortColumn, i.column = e.sSortColumn, i.order = e.sSortOrder), o && (i.field = o.dataIndex, i.columnKey = gt(o)); var a = { currentDataSource: this.getLocalData(e) }; return [n, r, i, a] }, findColumn: function (e) { var t = void 0; return Ye(this.columns, (function (n) { gt(n) === e && (t = n) })), t }, recursiveSort: function (e, t) { var n = this, r = this.childrenColumnName, i = void 0 === r ? "children" : r; return e.sort(t).map((function (e) { return e[i] ? f()({}, e, a()({}, i, n.recursiveSort([].concat(c()(e[i])), t))) : e })) }, renderExpandIcon: function (e) { var t = this.$createElement; return function (n) { var r = n.expandable, i = n.expanded, o = n.needIndentSpaced, s = n.record, c = n.onExpand; return r ? t(at["a"], { attrs: { componentName: "Table", defaultLocale: st["a"].Table } }, [function (n) { var r; return t(dt["a"], { class: A()(e + "-row-expand-icon", (r = {}, a()(r, e + "-row-collapsed", !i), a()(r, e + "-row-expanded", i), r)), on: { click: function (e) { c(s, e) } }, attrs: { "aria-label": i ? n.collapse : n.expand, noStyle: !0 } }) }]) : o ? t("span", { class: e + "-row-expand-icon " + e + "-row-spaced" }) : null } }, renderPagination: function (e, t) { var n = this.$createElement; if (!this.hasPagination()) return null; var r = "default", o = this.sPagination; o.size ? r = o.size : "middle" !== this.size && "small" !== this.size || (r = "small"); var a = o.position || "bottom", s = o.total || this.filterDataCnt, c = o["class"], l = o.style, u = (o.onChange, o.onShowSizeChange, i()(o, ["class", "style", "onChange", "onShowSizeChange"])), h = Object(R["x"])({ key: "pagination-" + t, class: A()(c, e + "-pagination"), props: f()({}, u, { total: s, size: r, current: this.getMaxCurrent(s) }), style: l, on: { change: this.handlePageChange, showSizeChange: this.handleShowSizeChange } }); return s > 0 && (a === t || "both" === a) ? n(it["a"], h) : null }, renderSelectionBox: function (e) { var t = this, n = this.$createElement; return function (r, i, o) { var a = t.getRecordKey(i, o), s = t.getCheckboxPropsByItem(i, o), c = function (n) { "radio" === e ? t.handleRadioSelect(i, o, n) : t.handleSelect(i, o, n) }, l = Object(R["x"])({ props: { type: e, store: t.store, rowIndex: a, defaultSelection: t.getDefaultSelection() }, on: { change: c } }, s); return n("span", { on: { click: vt } }, [n(Ue, l)]) } }, renderRowSelection: function (e) { var t = this, n = e.prefixCls, r = e.locale, i = e.getPopupContainer, o = this.$createElement, s = this.rowSelection, c = this.columns.concat(); if (s) { var l = this.getFlatCurrentPageData().filter((function (e, n) { return !s.getCheckboxProps || !t.getCheckboxPropsByItem(e, n).props.disabled })), u = A()(n + "-selection-column", a()({}, n + "-selection-column-custom", s.selections)), h = a()({ key: "selection-column", customRender: this.renderSelectionBox(s.type), className: u, fixed: s.fixed, width: s.columnWidth, title: s.columnTitle }, m, { class: n + "-selection-col" }); if ("radio" !== s.type) { var f = l.every((function (e, n) { return t.getCheckboxPropsByItem(e, n).props.disabled })); h.title = h.title || o(Qe, { attrs: { store: this.store, locale: r, data: l, getCheckboxPropsByItem: this.getCheckboxPropsByItem, getRecordKey: this.getRecordKey, disabled: f, prefixCls: n, selections: s.selections, hideDefaultSelections: s.hideDefaultSelections, getPopupContainer: this.generatePopupContainerFunc(i) }, on: { select: this.handleSelectRow } }) } "fixed" in s ? h.fixed = s.fixed : c.some((function (e) { return "left" === e.fixed || !0 === e.fixed })) && (h.fixed = "left"), c[0] && "selection-column" === c[0].key ? c[0] = h : c.unshift(h) } return c }, renderColumnsDropdown: function (e) { var t = this, n = e.prefixCls, r = e.dropdownPrefixCls, i = e.columns, o = e.locale, s = e.getPopupContainer, c = this.$createElement, l = this.sSortOrder, u = this.sFilters; return Ye(i, (function (e, i) { var h, d = gt(e, i), p = void 0, v = void 0, m = e.customHeaderCell, g = t.isSortColumn(e); if (e.filters && e.filters.length > 0 || e.filterDropdown) { var y = d in u ? u[d] : []; p = c(qe, { attrs: { _propsSymbol: Symbol(), locale: o, column: e, selectedKeys: y, confirmFilter: t.handleFilter, prefixCls: n + "-filter", dropdownPrefixCls: r || "ant-dropdown", getPopupContainer: t.generatePopupContainerFunc(s) }, key: "filter-dropdown" }) } if (e.sorter) { var b = e.sortDirections || t.sortDirections, x = g && "ascend" === l, w = g && "descend" === l, _ = -1 !== b.indexOf("ascend") && c(Ce["a"], { class: n + "-column-sorter-up " + (x ? "on" : "off"), attrs: { type: "caret-up", theme: "filled" }, key: "caret-up" }), C = -1 !== b.indexOf("descend") && c(Ce["a"], { class: n + "-column-sorter-down " + (w ? "on" : "off"), attrs: { type: "caret-down", theme: "filled" }, key: "caret-down" }); v = c("div", { attrs: { title: o.sortTitle }, class: A()(n + "-column-sorter-inner", _ && C && n + "-column-sorter-inner-full"), key: "sorter" }, [_, C]), m = function (n) { var r = {}; e.customHeaderCell && (r = f()({}, e.customHeaderCell(n))), r.on = r.on || {}; var i = r.on.click; return r.on.click = function () { t.toggleSortOrder(e), i && i.apply(void 0, arguments) }, r } } return f()({}, e, { className: A()(e.className, (h = {}, a()(h, n + "-column-has-actions", v || p), a()(h, n + "-column-has-filters", p), a()(h, n + "-column-has-sorters", v), a()(h, n + "-column-sort", g && l), h)), title: [c("span", { key: "title", class: n + "-header-column" }, [c("div", { class: v ? n + "-column-sorters" : void 0 }, [c("span", { class: n + "-column-title" }, [t.renderColumnTitle(e.title)]), c("span", { class: n + "-column-sorter" }, [v])])]), p], customHeaderCell: m }) })) }, renderColumnTitle: function (e) { var t = this.$data, n = t.sFilters, r = t.sSortOrder, i = t.sSortColumn; return e instanceof Function ? e({ filters: n, sortOrder: r, sortColumn: i }) : e }, renderTable: function (e) { var t, n = this, r = e.prefixCls, o = e.renderEmpty, s = e.dropdownPrefixCls, c = e.contextLocale, l = e.getPopupContainer, u = e.transformCellText, h = this.$createElement, d = Object(R["l"])(this), p = d.showHeader, v = d.locale, m = d.getPopupContainer, g = i()(d, ["showHeader", "locale", "getPopupContainer"]), y = this.getCurrentPageData(), b = this.expandedRowRender && !1 !== this.expandIconAsCell, x = m || l, w = f()({}, c, v); v && v.emptyText || (w.emptyText = o(h, "Table")); var _ = A()((t = {}, a()(t, r + "-" + this.size, !0), a()(t, r + "-bordered", this.bordered), a()(t, r + "-empty", !y.length), a()(t, r + "-without-column-header", !p), t)), C = this.renderRowSelection({ prefixCls: r, locale: w, getPopupContainer: x }), M = this.renderColumnsDropdown({ columns: C, prefixCls: r, dropdownPrefixCls: s, locale: w, getPopupContainer: x }).map((function (e, t) { var n = f()({}, e); return n.key = gt(n, t), n })), O = M[0] && "selection-column" === M[0].key ? 1 : 0; "expandIconColumnIndex" in g && (O = g.expandIconColumnIndex); var k = { key: "table", props: f()({ expandIcon: this.renderExpandIcon(r) }, g, { customRow: function (e, t) { return n.onRow(r, e, t) }, components: this.sComponents, prefixCls: r, data: y, columns: M, showHeader: p, expandIconColumnIndex: O, expandIconAsCell: b, emptyText: w.emptyText, transformCellText: u }), on: Object(R["k"])(this), class: _, ref: "vcTable" }; return h(me, k) } }, render: function () { var e = this, t = arguments[0], n = this.prefixCls, r = this.dropdownPrefixCls, i = this.transformCellText, o = this.getCurrentPageData(), a = this.configProvider, s = a.getPopupContainer, c = a.transformCellText, l = this.getPopupContainer || s, u = i || c, h = this.loading; h = "boolean" === typeof h ? { props: { spinning: h } } : { props: f()({}, h) }; var d = this.configProvider.getPrefixCls, p = this.configProvider.renderEmpty, v = d("table", n), m = d("dropdown", r), g = t(at["a"], { attrs: { componentName: "Table", defaultLocale: st["a"].Table, children: function (t) { return e.renderTable({ prefixCls: v, renderEmpty: p, dropdownPrefixCls: m, contextLocale: t, getPopupContainer: l, transformCellText: u }) } } }), y = this.hasPagination() && o && 0 !== o.length ? v + "-with-pagination" : v + "-without-pagination", b = f()({}, h, { class: h.props && h.props.spinning ? y + " " + v + "-spin-holder" : "" }); return t("div", { class: A()(v + "-wrapper") }, [t(ot["a"], b, [this.renderPagination(v, "top"), g, this.renderPagination(v, "bottom")])]) } } }, 3779: function (e, t, n) { "use strict"; var r = n("4d91"), i = n("daa3"), o = n("9cba"), a = n("0c63"), s = n("db14"), c = { functional: !0, render: function () { var e = arguments[0]; return e("svg", { attrs: { width: "252", height: "294" } }, [e("defs", [e("path", { attrs: { d: "M0 .387h251.772v251.772H0z" } })]), e("g", { attrs: { fill: "none", fillRule: "evenodd" } }, [e("g", { attrs: { transform: "translate(0 .012)" } }, [e("mask", { attrs: { fill: "#fff" } }), e("path", { attrs: { d: "M0 127.32v-2.095C0 56.279 55.892.387 124.838.387h2.096c68.946 0 124.838 55.892 124.838 124.838v2.096c0 68.946-55.892 124.838-124.838 124.838h-2.096C55.892 252.16 0 196.267 0 127.321", fill: "#E4EBF7", mask: "url(#b)" } })]), e("path", { attrs: { d: "M39.755 130.84a8.276 8.276 0 1 1-16.468-1.66 8.276 8.276 0 0 1 16.468 1.66", fill: "#FFF" } }), e("path", { attrs: { d: "M36.975 134.297l10.482 5.943M48.373 146.508l-12.648 10.788", stroke: "#FFF", strokeWidth: "2" } }), e("path", { attrs: { d: "M39.875 159.352a5.667 5.667 0 1 1-11.277-1.136 5.667 5.667 0 0 1 11.277 1.136M57.588 143.247a5.708 5.708 0 1 1-11.358-1.145 5.708 5.708 0 0 1 11.358 1.145M99.018 26.875l29.82-.014a4.587 4.587 0 1 0-.003-9.175l-29.82.013a4.587 4.587 0 1 0 .003 9.176M110.424 45.211l29.82-.013a4.588 4.588 0 0 0-.004-9.175l-29.82.013a4.587 4.587 0 1 0 .004 9.175", fill: "#FFF" } }), e("path", { attrs: { d: "M112.798 26.861v-.002l15.784-.006a4.588 4.588 0 1 0 .003 9.175l-15.783.007v-.002a4.586 4.586 0 0 0-.004-9.172M184.523 135.668c-.553 5.485-5.447 9.483-10.931 8.93-5.485-.553-9.483-5.448-8.93-10.932.552-5.485 5.447-9.483 10.932-8.93 5.485.553 9.483 5.447 8.93 10.932", fill: "#FFF" } }), e("path", { attrs: { d: "M179.26 141.75l12.64 7.167M193.006 156.477l-15.255 13.011", stroke: "#FFF", strokeWidth: "2" } }), e("path", { attrs: { d: "M184.668 170.057a6.835 6.835 0 1 1-13.6-1.372 6.835 6.835 0 0 1 13.6 1.372M203.34 153.325a6.885 6.885 0 1 1-13.7-1.382 6.885 6.885 0 0 1 13.7 1.382", fill: "#FFF" } }), e("path", { attrs: { d: "M151.931 192.324a2.222 2.222 0 1 1-4.444 0 2.222 2.222 0 0 1 4.444 0zM225.27 116.056a2.222 2.222 0 1 1-4.445 0 2.222 2.222 0 0 1 4.444 0zM216.38 151.08a2.223 2.223 0 1 1-4.446-.001 2.223 2.223 0 0 1 4.446 0zM176.917 107.636a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM195.291 92.165a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM202.058 180.711a2.223 2.223 0 1 1-4.446 0 2.223 2.223 0 0 1 4.446 0z", stroke: "#FFF", strokeWidth: "2" } }), e("path", { attrs: { stroke: "#FFF", strokeWidth: "2", d: "M214.404 153.302l-1.912 20.184-10.928 5.99M173.661 174.792l-6.356 9.814h-11.36l-4.508 6.484M174.941 125.168v-15.804M220.824 117.25l-12.84 7.901-15.31-7.902V94.39" } }), e("path", { attrs: { d: "M166.588 65.936h-3.951a4.756 4.756 0 0 1-4.743-4.742 4.756 4.756 0 0 1 4.743-4.743h3.951a4.756 4.756 0 0 1 4.743 4.743 4.756 4.756 0 0 1-4.743 4.742", fill: "#FFF" } }), e("path", { attrs: { d: "M174.823 30.03c0-16.281 13.198-29.48 29.48-29.48 16.28 0 29.48 13.199 29.48 29.48 0 16.28-13.2 29.48-29.48 29.48-16.282 0-29.48-13.2-29.48-29.48", fill: "#1890FF" } }), e("path", { attrs: { d: "M205.952 38.387c.5.5.785 1.142.785 1.928s-.286 1.465-.785 1.964c-.572.5-1.214.75-2 .75-.785 0-1.429-.285-1.929-.785-.572-.5-.82-1.143-.82-1.929s.248-1.428.82-1.928c.5-.5 1.144-.75 1.93-.75.785 0 1.462.25 1.999.75m4.285-19.463c1.428 1.249 2.143 2.963 2.143 5.142 0 1.712-.427 3.13-1.219 4.25-.067.096-.137.18-.218.265-.416.429-1.41 1.346-2.956 2.699a5.07 5.07 0 0 0-1.428 1.75 5.207 5.207 0 0 0-.536 2.357v.5h-4.107v-.5c0-1.357.215-2.536.714-3.5.464-.964 1.857-2.464 4.178-4.536l.43-.5c.643-.785.964-1.643.964-2.535 0-1.18-.358-2.108-1-2.785-.678-.68-1.643-1.001-2.858-1.001-1.536 0-2.642.464-3.357 1.43-.37.5-.621 1.135-.76 1.904a1.999 1.999 0 0 1-1.971 1.63h-.004c-1.277 0-2.257-1.183-1.98-2.43.337-1.518 1.02-2.78 2.073-3.784 1.536-1.5 3.607-2.25 6.25-2.25 2.32 0 4.214.607 5.642 1.894", fill: "#FFF" } }), e("path", { attrs: { d: "M52.04 76.131s21.81 5.36 27.307 15.945c5.575 10.74-6.352 9.26-15.73 4.935-10.86-5.008-24.7-11.822-11.577-20.88", fill: "#FFB594" } }), e("path", { attrs: { d: "M90.483 67.504l-.449 2.893c-.753.49-4.748-2.663-4.748-2.663l-1.645.748-1.346-5.684s6.815-4.589 8.917-5.018c2.452-.501 9.884.94 10.7 2.278 0 0 1.32.486-2.227.69-3.548.203-5.043.447-6.79 3.132-1.747 2.686-2.412 3.624-2.412 3.624", fill: "#FFC6A0" } }), e("path", { attrs: { d: "M128.055 111.367c-2.627-7.724-6.15-13.18-8.917-15.478-3.5-2.906-9.34-2.225-11.366-4.187-1.27-1.231-3.215-1.197-3.215-1.197s-14.98-3.158-16.828-3.479c-2.37-.41-2.124-.714-6.054-1.405-1.57-1.907-2.917-1.122-2.917-1.122l-7.11-1.383c-.853-1.472-2.423-1.023-2.423-1.023l-2.468-.897c-1.645 9.976-7.74 13.796-7.74 13.796 1.795 1.122 15.703 8.3 15.703 8.3l5.107 37.11s-3.321 5.694 1.346 9.109c0 0 19.883-3.743 34.921-.329 0 0 3.047-2.546.972-8.806.523-3.01 1.394-8.263 1.736-11.622.385.772 2.019 1.918 3.14 3.477 0 0 9.407-7.365 11.052-14.012-.832-.723-1.598-1.585-2.267-2.453-.567-.736-.358-2.056-.765-2.717-.669-1.084-1.804-1.378-1.907-1.682", fill: "#FFF" } }), e("path", { attrs: { d: "M101.09 289.998s4.295 2.041 7.354 1.021c2.821-.94 4.53.668 7.08 1.178 2.55.51 6.874 1.1 11.686-1.26-.103-5.51-6.889-3.98-11.96-6.713-2.563-1.38-3.784-4.722-3.598-8.799h-9.402s-1.392 10.52-1.16 14.573", fill: "#CBD1D1" } }), e("path", { attrs: { d: "M101.067 289.826s2.428 1.271 6.759.653c3.058-.437 3.712.481 7.423 1.031 3.712.55 10.724-.069 11.823-.894.413 1.1-.343 2.063-.343 2.063s-1.512.603-4.812.824c-2.03.136-5.8.291-7.607-.503-1.787-1.375-5.247-1.903-5.728-.241-3.918.95-7.355-.286-7.355-.286l-.16-2.647z", fill: "#2B0849" } }), e("path", { attrs: { d: "M108.341 276.044h3.094s-.103 6.702 4.536 8.558c-4.64.618-8.558-2.303-7.63-8.558", fill: "#A4AABA" } }), e("path", { attrs: { d: "M57.542 272.401s-2.107 7.416-4.485 12.306c-1.798 3.695-4.225 7.492 5.465 7.492 6.648 0 8.953-.48 7.423-6.599-1.53-6.12.266-13.199.266-13.199h-8.669z", fill: "#CBD1D1" } }), e("path", { attrs: { d: "M51.476 289.793s2.097 1.169 6.633 1.169c6.083 0 8.249-1.65 8.249-1.65s.602 1.114-.619 2.165c-.993.855-3.597 1.591-7.39 1.546-4.145-.048-5.832-.566-6.736-1.168-.825-.55-.687-1.58-.137-2.062", fill: "#2B0849" } }), e("path", { attrs: { d: "M58.419 274.304s.033 1.519-.314 2.93c-.349 1.42-1.078 3.104-1.13 4.139-.058 1.151 4.537 1.58 5.155.034.62-1.547 1.294-6.427 1.913-7.252.619-.825-4.903-2.119-5.624.15", fill: "#A4AABA" } }), e("path", { attrs: { d: "M99.66 278.514l13.378.092s1.298-54.52 1.853-64.403c.554-9.882 3.776-43.364 1.002-63.128l-12.547-.644-22.849.78s-.434 3.966-1.195 9.976c-.063.496-.682.843-.749 1.365-.075.585.423 1.354.32 1.966-2.364 14.08-6.377 33.104-8.744 46.677-.116.666-1.234 1.009-1.458 2.691-.04.302.211 1.525.112 1.795-6.873 18.744-10.949 47.842-14.277 61.885l14.607-.014s2.197-8.57 4.03-16.97c2.811-12.886 23.111-85.01 23.111-85.01l3.016-.521 1.043 46.35s-.224 1.234.337 2.02c.56.785-.56 1.123-.392 2.244l.392 1.794s-.449 7.178-.898 11.89c-.448 4.71-.092 39.165-.092 39.165", fill: "#7BB2F9" } }), e("path", { attrs: { d: "M76.085 221.626c1.153.094 4.038-2.019 6.955-4.935M106.36 225.142s2.774-1.11 6.103-3.883", stroke: "#648BD8", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M107.275 222.1s2.773-1.11 6.102-3.884", stroke: "#648BD8", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M74.74 224.767s2.622-.591 6.505-3.365M86.03 151.634c-.27 3.106.3 8.525-4.336 9.123M103.625 149.88s.11 14.012-1.293 15.065c-2.219 1.664-2.99 1.944-2.99 1.944M99.79 150.438s.035 12.88-1.196 24.377M93.673 175.911s7.212-1.664 9.431-1.664M74.31 205.861a212.013 212.013 0 0 1-.979 4.56s-1.458 1.832-1.009 3.776c.449 1.944-.947 2.045-4.985 15.355-1.696 5.59-4.49 18.591-6.348 27.597l-.231 1.12M75.689 197.807a320.934 320.934 0 0 1-.882 4.754M82.591 152.233L81.395 162.7s-1.097.15-.5 2.244c.113 1.346-2.674 15.775-5.18 30.43M56.12 274.418h13.31", stroke: "#648BD8", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M116.241 148.22s-17.047-3.104-35.893.2c.158 2.514-.003 4.15-.003 4.15s14.687-2.818 35.67-.312c.252-2.355.226-4.038.226-4.038", fill: "#192064" } }), e("path", { attrs: { d: "M106.322 151.165l.003-4.911a.81.81 0 0 0-.778-.815c-2.44-.091-5.066-.108-7.836-.014a.818.818 0 0 0-.789.815l-.003 4.906a.81.81 0 0 0 .831.813c2.385-.06 4.973-.064 7.73.017a.815.815 0 0 0 .842-.81", fill: "#FFF" } }), e("path", { attrs: { d: "M105.207 150.233l.002-3.076a.642.642 0 0 0-.619-.646 94.321 94.321 0 0 0-5.866-.01.65.65 0 0 0-.63.647v3.072a.64.64 0 0 0 .654.644 121.12 121.12 0 0 1 5.794.011c.362.01.665-.28.665-.642", fill: "#192064" } }), e("path", { attrs: { d: "M100.263 275.415h12.338M101.436 270.53c.006 3.387.042 5.79.111 6.506M101.451 264.548a915.75 915.75 0 0 0-.015 4.337M100.986 174.965l.898 44.642s.673 1.57-.225 2.692c-.897 1.122 2.468.673.898 2.243-1.57 1.57.897 1.122 0 3.365-.596 1.489-.994 21.1-1.096 35.146", stroke: "#648BD8", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M46.876 83.427s-.516 6.045 7.223 5.552c11.2-.712 9.218-9.345 31.54-21.655-.786-2.708-2.447-4.744-2.447-4.744s-11.068 3.11-22.584 8.046c-6.766 2.9-13.395 6.352-13.732 12.801M104.46 91.057l.941-5.372-8.884-11.43-5.037 5.372-1.74 7.834a.321.321 0 0 0 .108.32c.965.8 6.5 5.013 14.347 3.544a.332.332 0 0 0 .264-.268", fill: "#FFC6A0" } }), e("path", { attrs: { d: "M93.942 79.387s-4.533-2.853-2.432-6.855c1.623-3.09 4.513 1.133 4.513 1.133s.52-3.642 3.121-3.642c.52-1.04 1.561-4.162 1.561-4.162s11.445 2.601 13.526 3.121c0 5.203-2.304 19.424-7.84 19.861-8.892.703-12.449-9.456-12.449-9.456", fill: "#FFC6A0" } }), e("path", { attrs: { d: "M113.874 73.446c2.601-2.081 3.47-9.722 3.47-9.722s-2.479-.49-6.64-2.05c-4.683-2.081-12.798-4.747-17.48.976-9.668 3.223-2.05 19.823-2.05 19.823l2.713-3.021s-3.935-3.287-2.08-6.243c2.17-3.462 3.92 1.073 3.92 1.073s.637-2.387 3.581-3.342c.355-.71 1.036-2.674 1.432-3.85a1.073 1.073 0 0 1 1.263-.704c2.4.558 8.677 2.019 11.356 2.662.522.125.871.615.82 1.15l-.305 3.248z", fill: "#520038" } }), e("path", { attrs: { d: "M104.977 76.064c-.103.61-.582 1.038-1.07.956-.489-.083-.801-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.644.698 1.254M112.132 77.694c-.103.61-.582 1.038-1.07.956-.488-.083-.8-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.643.698 1.254", fill: "#552950" } }), e("path", { attrs: { stroke: "#DB836E", strokeWidth: "1.118", strokeLinecap: "round", strokeLinejoin: "round", d: "M110.13 74.84l-.896 1.61-.298 4.357h-2.228" } }), e("path", { attrs: { d: "M110.846 74.481s1.79-.716 2.506.537", stroke: "#5C2552", strokeWidth: "1.118", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M92.386 74.282s.477-1.114 1.113-.716c.637.398 1.274 1.433.558 1.99-.717.556.159 1.67.159 1.67", stroke: "#DB836E", strokeWidth: "1.118", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M103.287 72.93s1.83 1.113 4.137.954", stroke: "#5C2552", strokeWidth: "1.118", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M103.685 81.762s2.227 1.193 4.376 1.193M104.64 84.308s.954.398 1.511.318M94.693 81.205s2.308 7.4 10.424 7.639", stroke: "#DB836E", strokeWidth: "1.118", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M81.45 89.384s.45 5.647-4.935 12.787M69 82.654s-.726 9.282-8.204 14.206", stroke: "#E4EBF7", strokeWidth: "1.101", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M129.405 122.865s-5.272 7.403-9.422 10.768", stroke: "#E4EBF7", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M119.306 107.329s.452 4.366-2.127 32.062", stroke: "#E4EBF7", strokeWidth: "1.101", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M150.028 151.232h-49.837a1.01 1.01 0 0 1-1.01-1.01v-31.688c0-.557.452-1.01 1.01-1.01h49.837c.558 0 1.01.453 1.01 1.01v31.688a1.01 1.01 0 0 1-1.01 1.01", fill: "#F2D7AD" } }), e("path", { attrs: { d: "M150.29 151.232h-19.863v-33.707h20.784v32.786a.92.92 0 0 1-.92.92", fill: "#F4D19D" } }), e("path", { attrs: { d: "M123.554 127.896H92.917a.518.518 0 0 1-.425-.816l6.38-9.113c.193-.277.51-.442.85-.442h31.092l-7.26 10.371z", fill: "#F2D7AD" } }), e("path", { attrs: { fill: "#CC9B6E", d: "M123.689 128.447H99.25v-.519h24.169l7.183-10.26.424.298z" } }), e("path", { attrs: { d: "M158.298 127.896h-18.669a2.073 2.073 0 0 1-1.659-.83l-7.156-9.541h19.965c.49 0 .95.23 1.244.622l6.69 8.92a.519.519 0 0 1-.415.83", fill: "#F4D19D" } }), e("path", { attrs: { fill: "#CC9B6E", d: "M157.847 128.479h-19.384l-7.857-10.475.415-.31 7.7 10.266h19.126zM130.554 150.685l-.032-8.177.519-.002.032 8.177z" } }), e("path", { attrs: { fill: "#CC9B6E", d: "M130.511 139.783l-.08-21.414.519-.002.08 21.414zM111.876 140.932l-.498-.143 1.479-5.167.498.143zM108.437 141.06l-2.679-2.935 2.665-3.434.41.318-2.397 3.089 2.384 2.612zM116.607 141.06l-.383-.35 2.383-2.612-2.397-3.089.41-.318 2.665 3.434z" } }), e("path", { attrs: { d: "M154.316 131.892l-3.114-1.96.038 3.514-1.043.092c-1.682.115-3.634.23-4.789.23-1.902 0-2.693 2.258 2.23 2.648l-2.645-.596s-2.168 1.317.504 2.3c0 0-1.58 1.217.561 2.58-.584 3.504 5.247 4.058 7.122 3.59 1.876-.47 4.233-2.359 4.487-5.16.28-3.085-.89-5.432-3.35-7.238", fill: "#FFC6A0" } }), e("path", { attrs: { d: "M153.686 133.577s-6.522.47-8.36.372c-1.836-.098-1.904 2.19 2.359 2.264 3.739.15 5.451-.044 5.451-.044", stroke: "#DB836E", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M145.16 135.877c-1.85 1.346.561 2.355.561 2.355s3.478.898 6.73.617", stroke: "#DB836E", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M151.89 141.71s-6.28.111-6.73-2.132c-.223-1.346.45-1.402.45-1.402M146.114 140.868s-1.103 3.16 5.44 3.533M151.202 129.932v3.477M52.838 89.286c3.533-.337 8.423-1.248 13.582-7.754", stroke: "#DB836E", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M168.567 248.318a6.647 6.647 0 0 1-6.647-6.647v-66.466a6.647 6.647 0 1 1 13.294 0v66.466a6.647 6.647 0 0 1-6.647 6.647", fill: "#5BA02E" } }), e("path", { attrs: { d: "M176.543 247.653a6.647 6.647 0 0 1-6.646-6.647v-33.232a6.647 6.647 0 1 1 13.293 0v33.232a6.647 6.647 0 0 1-6.647 6.647", fill: "#92C110" } }), e("path", { attrs: { d: "M186.443 293.613H158.92a3.187 3.187 0 0 1-3.187-3.187v-46.134a3.187 3.187 0 0 1 3.187-3.187h27.524a3.187 3.187 0 0 1 3.187 3.187v46.134a3.187 3.187 0 0 1-3.187 3.187", fill: "#F2D7AD" } }), e("path", { attrs: { d: "M88.979 89.48s7.776 5.384 16.6 2.842", stroke: "#E4EBF7", strokeWidth: "1.101", strokeLinecap: "round", strokeLinejoin: "round" } })])]) } }, l = c, u = { functional: !0, render: function () { var e = arguments[0]; return e("svg", { attrs: { width: "254", height: "294" } }, [e("defs", [e("path", { attrs: { d: "M0 .335h253.49v253.49H0z" } }), e("path", { attrs: { d: "M0 293.665h253.49V.401H0z" } })]), e("g", { attrs: { fill: "none", fillRule: "evenodd" } }, [e("g", { attrs: { transform: "translate(0 .067)" } }, [e("mask", { attrs: { fill: "#fff" } }), e("path", { attrs: { d: "M0 128.134v-2.11C0 56.608 56.273.334 125.69.334h2.11c69.416 0 125.69 56.274 125.69 125.69v2.11c0 69.417-56.274 125.69-125.69 125.69h-2.11C56.273 253.824 0 197.551 0 128.134", fill: "#E4EBF7", mask: "url(#b)" } })]), e("path", { attrs: { d: "M39.989 132.108a8.332 8.332 0 1 1-16.581-1.671 8.332 8.332 0 0 1 16.58 1.671", fill: "#FFF" } }), e("path", { attrs: { d: "M37.19 135.59l10.553 5.983M48.665 147.884l-12.734 10.861", stroke: "#FFF", strokeWidth: "2" } }), e("path", { attrs: { d: "M40.11 160.816a5.706 5.706 0 1 1-11.354-1.145 5.706 5.706 0 0 1 11.354 1.145M57.943 144.6a5.747 5.747 0 1 1-11.436-1.152 5.747 5.747 0 0 1 11.436 1.153M99.656 27.434l30.024-.013a4.619 4.619 0 1 0-.004-9.238l-30.024.013a4.62 4.62 0 0 0 .004 9.238M111.14 45.896l30.023-.013a4.62 4.62 0 1 0-.004-9.238l-30.024.013a4.619 4.619 0 1 0 .004 9.238", fill: "#FFF" } }), e("path", { attrs: { d: "M113.53 27.421v-.002l15.89-.007a4.619 4.619 0 1 0 .005 9.238l-15.892.007v-.002a4.618 4.618 0 0 0-.004-9.234M150.167 70.091h-3.979a4.789 4.789 0 0 1-4.774-4.775 4.788 4.788 0 0 1 4.774-4.774h3.979a4.789 4.789 0 0 1 4.775 4.774 4.789 4.789 0 0 1-4.775 4.775", fill: "#FFF" } }), e("path", { attrs: { d: "M171.687 30.234c0-16.392 13.289-29.68 29.681-29.68 16.392 0 29.68 13.288 29.68 29.68 0 16.393-13.288 29.681-29.68 29.681s-29.68-13.288-29.68-29.68", fill: "#FF603B" } }), e("path", { attrs: { d: "M203.557 19.435l-.676 15.035a1.514 1.514 0 0 1-3.026 0l-.675-15.035a2.19 2.19 0 1 1 4.377 0m-.264 19.378c.513.477.77 1.1.77 1.87s-.257 1.393-.77 1.907c-.55.476-1.21.733-1.943.733a2.545 2.545 0 0 1-1.87-.77c-.55-.514-.806-1.136-.806-1.87 0-.77.256-1.393.806-1.87.513-.513 1.137-.733 1.87-.733.77 0 1.43.22 1.943.733", fill: "#FFF" } }), e("path", { attrs: { d: "M119.3 133.275c4.426-.598 3.612-1.204 4.079-4.778.675-5.18-3.108-16.935-8.262-25.118-1.088-10.72-12.598-11.24-12.598-11.24s4.312 4.895 4.196 16.199c1.398 5.243.804 14.45.804 14.45s5.255 11.369 11.78 10.487", fill: "#FFB594" } }), e("path", { attrs: { d: "M100.944 91.61s1.463-.583 3.211.582c8.08 1.398 10.368 6.706 11.3 11.368 1.864 1.282 1.864 2.33 1.864 3.496.365.777 1.515 3.03 1.515 3.03s-7.225 1.748-10.954 6.758c-1.399-6.41-6.936-25.235-6.936-25.235", fill: "#FFF" } }), e("path", { attrs: { d: "M94.008 90.5l1.019-5.815-9.23-11.874-5.233 5.581-2.593 9.863s8.39 5.128 16.037 2.246", fill: "#FFB594" } }), e("path", { attrs: { d: "M82.931 78.216s-4.557-2.868-2.445-6.892c1.632-3.107 4.537 1.139 4.537 1.139s.524-3.662 3.139-3.662c.523-1.046 1.569-4.184 1.569-4.184s11.507 2.615 13.6 3.138c-.001 5.23-2.317 19.529-7.884 19.969-8.94.706-12.516-9.508-12.516-9.508", fill: "#FFC6A0" } }), e("path", { attrs: { d: "M102.971 72.243c2.616-2.093 3.489-9.775 3.489-9.775s-2.492-.492-6.676-2.062c-4.708-2.092-12.867-4.771-17.575.982-9.54 4.41-2.062 19.93-2.062 19.93l2.729-3.037s-3.956-3.304-2.092-6.277c2.183-3.48 3.943 1.08 3.943 1.08s.64-2.4 3.6-3.36c.356-.714 1.04-2.69 1.44-3.872a1.08 1.08 0 0 1 1.27-.707c2.41.56 8.723 2.03 11.417 2.676.524.126.876.619.825 1.156l-.308 3.266z", fill: "#520038" } }), e("path", { attrs: { d: "M101.22 76.514c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.961.491.083.805.647.702 1.26M94.26 75.074c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.96.491.082.805.646.702 1.26", fill: "#552950" } }), e("path", { attrs: { stroke: "#DB836E", strokeWidth: "1.063", strokeLinecap: "round", strokeLinejoin: "round", d: "M99.206 73.644l-.9 1.62-.3 4.38h-2.24" } }), e("path", { attrs: { d: "M99.926 73.284s1.8-.72 2.52.54", stroke: "#5C2552", strokeWidth: "1.117", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M81.367 73.084s.48-1.12 1.12-.72c.64.4 1.28 1.44.56 2s.16 1.68.16 1.68", stroke: "#DB836E", strokeWidth: "1.117", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M92.326 71.724s1.84 1.12 4.16.96", stroke: "#5C2552", strokeWidth: "1.117", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M92.726 80.604s2.24 1.2 4.4 1.2M93.686 83.164s.96.4 1.52.32M83.687 80.044s1.786 6.547 9.262 7.954", stroke: "#DB836E", strokeWidth: "1.063", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M95.548 91.663s-1.068 2.821-8.298 2.105c-7.23-.717-10.29-5.044-10.29-5.044", stroke: "#E4EBF7", strokeWidth: "1.136", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M78.126 87.478s6.526 4.972 16.47 2.486c0 0 9.577 1.02 11.536 5.322 5.36 11.77.543 36.835 0 39.962 3.496 4.055-.466 8.483-.466 8.483-15.624-3.548-35.81-.6-35.81-.6-4.849-3.546-1.223-9.044-1.223-9.044L62.38 110.32c-2.485-15.227.833-19.803 3.549-20.743 3.03-1.049 8.04-1.282 8.04-1.282.496-.058 1.08-.076 1.37-.233 2.36-1.282 2.787-.583 2.787-.583", fill: "#FFF" } }), e("path", { attrs: { d: "M65.828 89.81s-6.875.465-7.59 8.156c-.466 8.857 3.03 10.954 3.03 10.954s6.075 22.102 16.796 22.957c8.39-2.176 4.758-6.702 4.661-11.42-.233-11.304-7.108-16.897-7.108-16.897s-4.212-13.75-9.789-13.75", fill: "#FFC6A0" } }), e("path", { attrs: { d: "M71.716 124.225s.855 11.264 9.828 6.486c4.765-2.536 7.581-13.828 9.789-22.568 1.456-5.768 2.58-12.197 2.58-12.197l-4.973-1.709s-2.408 5.516-7.769 12.275c-4.335 5.467-9.144 11.11-9.455 17.713", fill: "#FFC6A0" } }), e("path", { attrs: { d: "M108.463 105.191s1.747 2.724-2.331 30.535c2.376 2.216 1.053 6.012-.233 7.51", stroke: "#E4EBF7", strokeWidth: "1.085", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M123.262 131.527s-.427 2.732-11.77 1.981c-15.187-1.006-25.326-3.25-25.326-3.25l.933-5.8s.723.215 9.71-.068c11.887-.373 18.714-6.07 24.964-1.022 4.039 3.263 1.489 8.16 1.489 8.16", fill: "#FFC6A0" } }), e("path", { attrs: { d: "M70.24 90.974s-5.593-4.739-11.054 2.68c-3.318 7.223.517 15.284 2.664 19.578-.31 3.729 2.33 4.311 2.33 4.311s.108.895 1.516 2.68c4.078-7.03 6.72-9.166 13.711-12.546-.328-.656-1.877-3.265-1.825-3.767.175-1.69-1.282-2.623-1.282-2.623s-.286-.156-1.165-2.738c-.788-2.313-2.036-5.177-4.895-7.575", fill: "#FFF" } }), e("path", { attrs: { d: "M90.232 288.027s4.855 2.308 8.313 1.155c3.188-1.063 5.12.755 8.002 1.331 2.881.577 7.769 1.243 13.207-1.424-.117-6.228-7.786-4.499-13.518-7.588-2.895-1.56-4.276-5.336-4.066-9.944H91.544s-1.573 11.89-1.312 16.47", fill: "#CBD1D1" } }), e("path", { attrs: { d: "M90.207 287.833s2.745 1.437 7.639.738c3.456-.494 3.223.66 7.418 1.282 4.195.621 13.092-.194 14.334-1.126.466 1.242-.388 2.33-.388 2.33s-1.709.682-5.438.932c-2.295.154-8.098.276-10.14-.621-2.02-1.554-4.894-1.515-6.06-.234-4.427 1.075-7.184-.31-7.184-.31l-.181-2.991z", fill: "#2B0849" } }), e("path", { attrs: { d: "M98.429 272.257h3.496s-.117 7.574 5.127 9.671c-5.244.7-9.672-2.602-8.623-9.671", fill: "#A4AABA" } }), e("path", { attrs: { d: "M44.425 272.046s-2.208 7.774-4.702 12.899c-1.884 3.874-4.428 7.854 5.729 7.854 6.97 0 9.385-.503 7.782-6.917-1.604-6.415.279-13.836.279-13.836h-9.088z", fill: "#CBD1D1" } }), e("path", { attrs: { d: "M38.066 290.277s2.198 1.225 6.954 1.225c6.376 0 8.646-1.73 8.646-1.73s.63 1.168-.649 2.27c-1.04.897-3.77 1.668-7.745 1.621-4.347-.05-6.115-.593-7.062-1.224-.864-.577-.72-1.657-.144-2.162", fill: "#2B0849" } }), e("path", { attrs: { d: "M45.344 274.041s.035 1.592-.329 3.07c-.365 1.49-1.13 3.255-1.184 4.34-.061 1.206 4.755 1.657 5.403.036.65-1.622 1.357-6.737 2.006-7.602.648-.865-5.14-2.222-5.896.156", fill: "#A4AABA" } }), e("path", { attrs: { d: "M89.476 277.57l13.899.095s1.349-56.643 1.925-66.909c.576-10.267 3.923-45.052 1.042-65.585l-13.037-.669-23.737.81s-.452 4.12-1.243 10.365c-.065.515-.708.874-.777 1.417-.078.608.439 1.407.332 2.044-2.455 14.627-5.797 32.736-8.256 46.837-.121.693-1.282 1.048-1.515 2.796-.042.314.22 1.584.116 1.865-7.14 19.473-12.202 52.601-15.66 67.19l15.176-.015s2.282-10.145 4.185-18.871c2.922-13.389 24.012-88.32 24.012-88.32l3.133-.954-.158 48.568s-.233 1.282.35 2.098c.583.815-.581 1.167-.408 2.331l.408 1.864s-.466 7.458-.932 12.352c-.467 4.895 1.145 40.69 1.145 40.69", fill: "#7BB2F9" } }), e("path", { attrs: { d: "M64.57 218.881c1.197.099 4.195-2.097 7.225-5.127M96.024 222.534s2.881-1.152 6.34-4.034", stroke: "#648BD8", strokeWidth: "1.085", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M96.973 219.373s2.882-1.153 6.34-4.034", stroke: "#648BD8", strokeWidth: "1.032", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M63.172 222.144s2.724-.614 6.759-3.496M74.903 146.166c-.281 3.226.31 8.856-4.506 9.478M93.182 144.344s.115 14.557-1.344 15.65c-2.305 1.73-3.107 2.02-3.107 2.02M89.197 144.923s.269 13.144-1.01 25.088M83.525 170.71s6.81-1.051 9.116-1.051M46.026 270.045l-.892 4.538M46.937 263.289l-.815 4.157M62.725 202.503c-.33 1.618-.102 1.904-.449 3.438 0 0-2.756 1.903-2.29 3.923.466 2.02-.31 3.424-4.505 17.252-1.762 5.807-4.233 18.922-6.165 28.278-.03.144-.521 2.646-1.14 5.8M64.158 194.136c-.295 1.658-.6 3.31-.917 4.938M71.33 146.787l-1.244 10.877s-1.14.155-.519 2.33c.117 1.399-2.778 16.39-5.382 31.615M44.242 273.727H58.07", stroke: "#648BD8", strokeWidth: "1.085", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M106.18 142.117c-3.028-.489-18.825-2.744-36.219.2a.625.625 0 0 0-.518.644c.063 1.307.044 2.343.015 2.995a.617.617 0 0 0 .716.636c3.303-.534 17.037-2.412 35.664-.266.347.04.66-.214.692-.56.124-1.347.16-2.425.17-3.029a.616.616 0 0 0-.52-.62", fill: "#192064" } }), e("path", { attrs: { d: "M96.398 145.264l.003-5.102a.843.843 0 0 0-.809-.847 114.104 114.104 0 0 0-8.141-.014.85.85 0 0 0-.82.847l-.003 5.097c0 .476.388.857.864.845 2.478-.064 5.166-.067 8.03.017a.848.848 0 0 0 .876-.843", fill: "#FFF" } }), e("path", { attrs: { d: "M95.239 144.296l.002-3.195a.667.667 0 0 0-.643-.672c-1.9-.061-3.941-.073-6.094-.01a.675.675 0 0 0-.654.672l-.002 3.192c0 .376.305.677.68.669 1.859-.042 3.874-.043 6.02.012.376.01.69-.291.691-.668", fill: "#192064" } }), e("path", { attrs: { d: "M90.102 273.522h12.819M91.216 269.761c.006 3.519-.072 5.55 0 6.292M90.923 263.474c-.009 1.599-.016 2.558-.016 4.505M90.44 170.404l.932 46.38s.7 1.631-.233 2.796c-.932 1.166 2.564.7.932 2.33-1.63 1.633.933 1.166 0 3.497-.618 1.546-1.031 21.921-1.138 36.513", stroke: "#648BD8", strokeWidth: "1.085", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M73.736 98.665l2.214 4.312s2.098.816 1.865 2.68l.816 2.214M64.297 116.611c.233-.932 2.176-7.147 12.585-10.488M77.598 90.042s7.691 6.137 16.547 2.72", stroke: "#E4EBF7", strokeWidth: "1.085", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M91.974 86.954s5.476-.816 7.574-4.545c1.297-.345.72 2.212-.33 3.671-.7.971-1.01 1.554-1.01 1.554s.194.31.155.816c-.053.697-.175.653-.272 1.048-.081.335.108.657 0 1.049-.046.17-.198.5-.382.878-.12.249-.072.687-.2.948-.231.469-1.562 1.87-2.622 2.855-3.826 3.554-5.018 1.644-6.001-.408-.894-1.865-.661-5.127-.874-6.875-.35-2.914-2.622-3.03-1.923-4.429.343-.685 2.87.69 3.263 1.748.757 2.04 2.952 1.807 2.622 1.69", fill: "#FFC6A0" } }), e("path", { attrs: { d: "M99.8 82.429c-.465.077-.35.272-.97 1.243-.622.971-4.817 2.932-6.39 3.224-2.589.48-2.278-1.56-4.254-2.855-1.69-1.107-3.562-.638-1.398 1.398.99.932.932 1.107 1.398 3.205.335 1.506-.64 3.67.7 5.593", stroke: "#DB836E", strokeWidth: ".774", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M79.543 108.673c-2.1 2.926-4.266 6.175-5.557 8.762", stroke: "#E59788", strokeWidth: ".774", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M87.72 124.768s-2.098-1.942-5.127-2.719c-3.03-.777-3.574-.155-5.516.078-1.942.233-3.885-.932-3.652.7.233 1.63 5.05 1.01 5.206 2.097.155 1.087-6.37 2.796-8.313 2.175-.777.777.466 1.864 2.02 2.175.233 1.554 2.253 1.554 2.253 1.554s.699 1.01 2.641 1.088c2.486 1.32 8.934-.7 10.954-1.554 2.02-.855-.466-5.594-.466-5.594", fill: "#FFC6A0" } }), e("path", { attrs: { d: "M73.425 122.826s.66 1.127 3.167 1.418c2.315.27 2.563.583 2.563.583s-2.545 2.894-9.07 2.272M72.416 129.274s3.826.097 4.933-.718M74.98 130.75s1.961.136 3.36-.505M77.232 131.916s1.748.019 2.914-.505M73.328 122.321s-.595-1.032 1.262-.427c1.671.544 2.833.055 5.128.155 1.389.061 3.067-.297 3.982.15 1.606.784 3.632 2.181 3.632 2.181s10.526 1.204 19.033-1.127M78.864 108.104s-8.39 2.758-13.168 12.12", stroke: "#E59788", strokeWidth: ".774", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M109.278 112.533s3.38-3.613 7.575-4.662", stroke: "#E4EBF7", strokeWidth: "1.085", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M107.375 123.006s9.697-2.745 11.445-.88", stroke: "#E59788", strokeWidth: ".774", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M194.605 83.656l3.971-3.886M187.166 90.933l3.736-3.655M191.752 84.207l-4.462-4.56M198.453 91.057l-4.133-4.225M129.256 163.074l3.718-3.718M122.291 170.039l3.498-3.498M126.561 163.626l-4.27-4.27M132.975 170.039l-3.955-3.955", stroke: "#BFCDDD", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M190.156 211.779h-1.604a4.023 4.023 0 0 1-4.011-4.011V175.68a4.023 4.023 0 0 1 4.01-4.01h1.605a4.023 4.023 0 0 1 4.011 4.01v32.088a4.023 4.023 0 0 1-4.01 4.01", fill: "#A3B4C6" } }), e("path", { attrs: { d: "M237.824 212.977a4.813 4.813 0 0 1-4.813 4.813h-86.636a4.813 4.813 0 0 1 0-9.626h86.636a4.813 4.813 0 0 1 4.813 4.813", fill: "#A3B4C6" } }), e("mask", { attrs: { fill: "#fff" } }), e("path", { attrs: { fill: "#A3B4C6", mask: "url(#d)", d: "M154.098 190.096h70.513v-84.617h-70.513z" } }), e("path", { attrs: { d: "M224.928 190.096H153.78a3.219 3.219 0 0 1-3.208-3.209V167.92a3.219 3.219 0 0 1 3.208-3.21h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.219 3.219 0 0 1-3.21 3.209M224.928 130.832H153.78a3.218 3.218 0 0 1-3.208-3.208v-18.968a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.218 3.218 0 0 1-3.21 3.208", fill: "#BFCDDD", mask: "url(#d)" } }), e("path", { attrs: { d: "M159.563 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 120.546h-22.461a.802.802 0 0 1-.802-.802v-3.208c0-.443.359-.803.802-.803h22.46c.444 0 .803.36.803.803v3.208c0 .443-.36.802-.802.802", fill: "#FFF", mask: "url(#d)" } }), e("path", { attrs: { d: "M224.928 160.464H153.78a3.218 3.218 0 0 1-3.208-3.209v-18.967a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.209v18.967a3.218 3.218 0 0 1-3.21 3.209", fill: "#BFCDDD", mask: "url(#d)" } }), e("path", { attrs: { d: "M173.455 130.832h49.301M164.984 130.832h6.089M155.952 130.832h6.75M173.837 160.613h49.3M165.365 160.613h6.089M155.57 160.613h6.751", stroke: "#7C90A5", strokeWidth: "1.124", strokeLinecap: "round", strokeLinejoin: "round", mask: "url(#d)" } }), e("path", { attrs: { d: "M159.563 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M166.98 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M174.397 151.038a2.407 2.407 0 1 1 .001-4.814 2.407 2.407 0 0 1 0 4.814M222.539 151.038h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802M159.563 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 179.987h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802", fill: "#FFF", mask: "url(#d)" } }), e("path", { attrs: { d: "M203.04 221.108h-27.372a2.413 2.413 0 0 1-2.406-2.407v-11.448a2.414 2.414 0 0 1 2.406-2.407h27.372a2.414 2.414 0 0 1 2.407 2.407V218.7a2.413 2.413 0 0 1-2.407 2.407", fill: "#BFCDDD", mask: "url(#d)" } }), e("path", { attrs: { d: "M177.259 207.217v11.52M201.05 207.217v11.52", stroke: "#A3B4C6", strokeWidth: "1.124", strokeLinecap: "round", strokeLinejoin: "round", mask: "url(#d)" } }), e("path", { attrs: { d: "M162.873 267.894a9.422 9.422 0 0 1-9.422-9.422v-14.82a9.423 9.423 0 0 1 18.845 0v14.82a9.423 9.423 0 0 1-9.423 9.422", fill: "#5BA02E", mask: "url(#d)" } }), e("path", { attrs: { d: "M171.22 267.83a9.422 9.422 0 0 1-9.422-9.423v-3.438a9.423 9.423 0 0 1 18.845 0v3.438a9.423 9.423 0 0 1-9.422 9.423", fill: "#92C110", mask: "url(#d)" } }), e("path", { attrs: { d: "M181.31 293.666h-27.712a3.209 3.209 0 0 1-3.209-3.21V269.79a3.209 3.209 0 0 1 3.209-3.21h27.711a3.209 3.209 0 0 1 3.209 3.21v20.668a3.209 3.209 0 0 1-3.209 3.209", fill: "#F2D7AD", mask: "url(#d)" } })])]) } }, h = u, f = { functional: !0, render: function () { var e = arguments[0]; return e("svg", { attrs: { width: "251", height: "294" } }, [e("g", { attrs: { fill: "none", fillRule: "evenodd" } }, [e("path", { attrs: { d: "M0 129.023v-2.084C0 58.364 55.591 2.774 124.165 2.774h2.085c68.574 0 124.165 55.59 124.165 124.165v2.084c0 68.575-55.59 124.166-124.165 124.166h-2.085C55.591 253.189 0 197.598 0 129.023", fill: "#E4EBF7" } }), e("path", { attrs: { d: "M41.417 132.92a8.231 8.231 0 1 1-16.38-1.65 8.231 8.231 0 0 1 16.38 1.65", fill: "#FFF" } }), e("path", { attrs: { d: "M38.652 136.36l10.425 5.91M49.989 148.505l-12.58 10.73", stroke: "#FFF", strokeWidth: "2" } }), e("path", { attrs: { d: "M41.536 161.28a5.636 5.636 0 1 1-11.216-1.13 5.636 5.636 0 0 1 11.216 1.13M59.154 145.261a5.677 5.677 0 1 1-11.297-1.138 5.677 5.677 0 0 1 11.297 1.138M100.36 29.516l29.66-.013a4.562 4.562 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 0 0 .005 9.126M111.705 47.754l29.659-.013a4.563 4.563 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 1 0 .005 9.126", fill: "#FFF" } }), e("path", { attrs: { d: "M114.066 29.503V29.5l15.698-.007a4.563 4.563 0 1 0 .004 9.126l-15.698.007v-.002a4.562 4.562 0 0 0-.004-9.122M185.405 137.723c-.55 5.455-5.418 9.432-10.873 8.882-5.456-.55-9.432-5.418-8.882-10.873.55-5.455 5.418-9.432 10.873-8.882 5.455.55 9.432 5.418 8.882 10.873", fill: "#FFF" } }), e("path", { attrs: { d: "M180.17 143.772l12.572 7.129M193.841 158.42L178.67 171.36", stroke: "#FFF", strokeWidth: "2" } }), e("path", { attrs: { d: "M185.55 171.926a6.798 6.798 0 1 1-13.528-1.363 6.798 6.798 0 0 1 13.527 1.363M204.12 155.285a6.848 6.848 0 1 1-13.627-1.375 6.848 6.848 0 0 1 13.626 1.375", fill: "#FFF" } }), e("path", { attrs: { d: "M152.988 194.074a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0zM225.931 118.217a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM217.09 153.051a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.42 0zM177.84 109.842a2.21 2.21 0 1 1-4.422 0 2.21 2.21 0 0 1 4.421 0zM196.114 94.454a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM202.844 182.523a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0z", stroke: "#FFF", strokeWidth: "2" } }), e("path", { attrs: { stroke: "#FFF", strokeWidth: "2", d: "M215.125 155.262l-1.902 20.075-10.87 5.958M174.601 176.636l-6.322 9.761H156.98l-4.484 6.449M175.874 127.28V111.56M221.51 119.404l-12.77 7.859-15.228-7.86V96.668" } }), e("path", { attrs: { d: "M180.68 29.32C180.68 13.128 193.806 0 210 0c16.193 0 29.32 13.127 29.32 29.32 0 16.194-13.127 29.322-29.32 29.322-16.193 0-29.32-13.128-29.32-29.321", fill: "#A26EF4" } }), e("path", { attrs: { d: "M221.45 41.706l-21.563-.125a1.744 1.744 0 0 1-1.734-1.754l.071-12.23a1.744 1.744 0 0 1 1.754-1.734l21.562.125c.964.006 1.74.791 1.735 1.755l-.071 12.229a1.744 1.744 0 0 1-1.754 1.734", fill: "#FFF" } }), e("path", { attrs: { d: "M215.106 29.192c-.015 2.577-2.049 4.654-4.543 4.64-2.494-.014-4.504-2.115-4.489-4.693l.04-6.925c.016-2.577 2.05-4.654 4.543-4.64 2.494.015 4.504 2.116 4.49 4.693l-.04 6.925zm-4.53-14.074a6.877 6.877 0 0 0-6.916 6.837l-.043 7.368a6.877 6.877 0 0 0 13.754.08l.042-7.368a6.878 6.878 0 0 0-6.837-6.917zM167.566 68.367h-3.93a4.73 4.73 0 0 1-4.717-4.717 4.73 4.73 0 0 1 4.717-4.717h3.93a4.73 4.73 0 0 1 4.717 4.717 4.73 4.73 0 0 1-4.717 4.717", fill: "#FFF" } }), e("path", { attrs: { d: "M168.214 248.838a6.611 6.611 0 0 1-6.61-6.611v-66.108a6.611 6.611 0 0 1 13.221 0v66.108a6.611 6.611 0 0 1-6.61 6.61", fill: "#5BA02E" } }), e("path", { attrs: { d: "M176.147 248.176a6.611 6.611 0 0 1-6.61-6.61v-33.054a6.611 6.611 0 1 1 13.221 0v33.053a6.611 6.611 0 0 1-6.61 6.611", fill: "#92C110" } }), e("path", { attrs: { d: "M185.994 293.89h-27.376a3.17 3.17 0 0 1-3.17-3.17v-45.887a3.17 3.17 0 0 1 3.17-3.17h27.376a3.17 3.17 0 0 1 3.17 3.17v45.886a3.17 3.17 0 0 1-3.17 3.17", fill: "#F2D7AD" } }), e("path", { attrs: { d: "M81.972 147.673s6.377-.927 17.566-1.28c11.729-.371 17.57 1.086 17.57 1.086s3.697-3.855.968-8.424c1.278-12.077 5.982-32.827.335-48.273-1.116-1.339-3.743-1.512-7.536-.62-1.337.315-7.147-.149-7.983-.1l-15.311-.347s-3.487-.17-8.035-.508c-1.512-.113-4.227-1.683-5.458-.338-.406.443-2.425 5.669-1.97 16.077l8.635 35.642s-3.141 3.61 1.219 7.085", fill: "#FFF" } }), e("path", { attrs: { d: "M75.768 73.325l-.9-6.397 11.982-6.52s7.302-.118 8.038 1.205c.737 1.324-5.616.993-5.616.993s-1.836 1.388-2.615 2.5c-1.654 2.363-.986 6.471-8.318 5.986-1.708.284-2.57 2.233-2.57 2.233", fill: "#FFC6A0" } }), e("path", { attrs: { d: "M52.44 77.672s14.217 9.406 24.973 14.444c1.061.497-2.094 16.183-11.892 11.811-7.436-3.318-20.162-8.44-21.482-14.496-.71-3.258 2.543-7.643 8.401-11.76M141.862 80.113s-6.693 2.999-13.844 6.876c-3.894 2.11-10.137 4.704-12.33 7.988-6.224 9.314 3.536 11.22 12.947 7.503 6.71-2.651 28.999-12.127 13.227-22.367", fill: "#FFB594" } }), e("path", { attrs: { d: "M76.166 66.36l3.06 3.881s-2.783 2.67-6.31 5.747c-7.103 6.195-12.803 14.296-15.995 16.44-3.966 2.662-9.754 3.314-12.177-.118-3.553-5.032.464-14.628 31.422-25.95", fill: "#FFC6A0" } }), e("path", { attrs: { d: "M64.674 85.116s-2.34 8.413-8.912 14.447c.652.548 18.586 10.51 22.144 10.056 5.238-.669 6.417-18.968 1.145-20.531-.702-.208-5.901-1.286-8.853-2.167-.87-.26-1.611-1.71-3.545-.936l-1.98-.869zM128.362 85.826s5.318 1.956 7.325 13.734c-.546.274-17.55 12.35-21.829 7.805-6.534-6.94-.766-17.393 4.275-18.61 4.646-1.121 5.03-1.37 10.23-2.929", fill: "#FFF" } }), e("path", { attrs: { d: "M78.18 94.656s.911 7.41-4.914 13.078", stroke: "#E4EBF7", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M87.397 94.68s3.124 2.572 10.263 2.572c7.14 0 9.074-3.437 9.074-3.437", stroke: "#E4EBF7", strokeWidth: ".932", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M117.184 68.639l-6.781-6.177s-5.355-4.314-9.223-.893c-3.867 3.422 4.463 2.083 5.653 4.165 1.19 2.082.848 1.143-2.083.446-5.603-1.331-2.082.893 2.975 5.355 2.091 1.845 6.992.955 6.992.955l2.467-3.851z", fill: "#FFC6A0" } }), e("path", { attrs: { d: "M105.282 91.315l-.297-10.937-15.918-.027-.53 10.45c-.026.403.17.788.515.999 2.049 1.251 9.387 5.093 15.799.424.287-.21.443-.554.431-.91", fill: "#FFB594" } }), e("path", { attrs: { d: "M107.573 74.24c.817-1.147.982-9.118 1.015-11.928a1.046 1.046 0 0 0-.965-1.055l-4.62-.365c-7.71-1.044-17.071.624-18.253 6.346-5.482 5.813-.421 13.244-.421 13.244s1.963 3.566 4.305 6.791c.756 1.041.398-3.731 3.04-5.929 5.524-4.594 15.899-7.103 15.899-7.103", fill: "#5C2552" } }), e("path", { attrs: { d: "M88.426 83.206s2.685 6.202 11.602 6.522c7.82.28 8.973-7.008 7.434-17.505l-.909-5.483c-6.118-2.897-15.478.54-15.478.54s-.576 2.044-.19 5.504c-2.276 2.066-1.824 5.618-1.824 5.618s-.905-1.922-1.98-2.321c-.86-.32-1.897.089-2.322 1.98-1.04 4.632 3.667 5.145 3.667 5.145", fill: "#FFC6A0" } }), e("path", { attrs: { stroke: "#DB836E", strokeWidth: "1.145", strokeLinecap: "round", strokeLinejoin: "round", d: "M100.843 77.099l1.701-.928-1.015-4.324.674-1.406" } }), e("path", { attrs: { d: "M105.546 74.092c-.022.713-.452 1.279-.96 1.263-.51-.016-.904-.607-.882-1.32.021-.713.452-1.278.96-1.263.51.016.904.607.882 1.32M97.592 74.349c-.022.713-.452 1.278-.961 1.263-.509-.016-.904-.607-.882-1.32.022-.713.452-1.279.961-1.263.51.016.904.606.882 1.32", fill: "#552950" } }), e("path", { attrs: { d: "M91.132 86.786s5.269 4.957 12.679 2.327", stroke: "#DB836E", strokeWidth: "1.145", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M99.776 81.903s-3.592.232-1.44-2.79c1.59-1.496 4.897-.46 4.897-.46s1.156 3.906-3.457 3.25", fill: "#DB836E" } }), e("path", { attrs: { d: "M102.88 70.6s2.483.84 3.402.715M93.883 71.975s2.492-1.144 4.778-1.073", stroke: "#5C2552", strokeWidth: "1.526", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M86.32 77.374s.961.879 1.458 2.106c-.377.48-1.033 1.152-.236 1.809M99.337 83.719s1.911.151 2.509-.254", stroke: "#DB836E", strokeWidth: "1.145", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M87.782 115.821l15.73-3.012M100.165 115.821l10.04-2.008", stroke: "#E4EBF7", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M66.508 86.763s-1.598 8.83-6.697 14.078", stroke: "#E4EBF7", strokeWidth: "1.114", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M128.31 87.934s3.013 4.121 4.06 11.785", stroke: "#E4EBF7", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M64.09 84.816s-6.03 9.912-13.607 9.903", stroke: "#DB836E", strokeWidth: ".795", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M112.366 65.909l-.142 5.32s5.993 4.472 11.945 9.202c4.482 3.562 8.888 7.455 10.985 8.662 4.804 2.766 8.9 3.355 11.076 1.808 4.071-2.894 4.373-9.878-8.136-15.263-4.271-1.838-16.144-6.36-25.728-9.73", fill: "#FFC6A0" } }), e("path", { attrs: { d: "M130.532 85.488s4.588 5.757 11.619 6.214", stroke: "#DB836E", strokeWidth: ".75", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M121.708 105.73s-.393 8.564-1.34 13.612", stroke: "#E4EBF7", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M115.784 161.512s-3.57-1.488-2.678-7.14", stroke: "#648BD8", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M101.52 290.246s4.326 2.057 7.408 1.03c2.842-.948 4.564.673 7.132 1.186 2.57.514 6.925 1.108 11.772-1.269-.104-5.551-6.939-4.01-12.048-6.763-2.582-1.39-3.812-4.757-3.625-8.863h-9.471s-1.402 10.596-1.169 14.68", fill: "#CBD1D1" } }), e("path", { attrs: { d: "M101.496 290.073s2.447 1.281 6.809.658c3.081-.44 3.74.485 7.479 1.039 3.739.554 10.802-.07 11.91-.9.415 1.108-.347 2.077-.347 2.077s-1.523.608-4.847.831c-2.045.137-5.843.293-7.663-.507-1.8-1.385-5.286-1.917-5.77-.243-3.947.958-7.41-.288-7.41-.288l-.16-2.667z", fill: "#2B0849" } }), e("path", { attrs: { d: "M108.824 276.19h3.116s-.103 6.751 4.57 8.62c-4.673.624-8.62-2.32-7.686-8.62", fill: "#A4AABA" } }), e("path", { attrs: { d: "M57.65 272.52s-2.122 7.47-4.518 12.396c-1.811 3.724-4.255 7.548 5.505 7.548 6.698 0 9.02-.483 7.479-6.648-1.541-6.164.268-13.296.268-13.296H57.65z", fill: "#CBD1D1" } }), e("path", { attrs: { d: "M51.54 290.04s2.111 1.178 6.682 1.178c6.128 0 8.31-1.662 8.31-1.662s.605 1.122-.624 2.18c-1 .862-3.624 1.603-7.444 1.559-4.177-.049-5.876-.57-6.786-1.177-.831-.554-.692-1.593-.138-2.078", fill: "#2B0849" } }), e("path", { attrs: { d: "M58.533 274.438s.034 1.529-.315 2.95c-.352 1.431-1.087 3.127-1.139 4.17-.058 1.16 4.57 1.592 5.194.035.623-1.559 1.303-6.475 1.927-7.306.622-.831-4.94-2.135-5.667.15", fill: "#A4AABA" } }), e("path", { attrs: { d: "M100.885 277.015l13.306.092s1.291-54.228 1.843-64.056c.552-9.828 3.756-43.13.997-62.788l-12.48-.64-22.725.776s-.433 3.944-1.19 9.921c-.062.493-.677.838-.744 1.358-.075.582.42 1.347.318 1.956-2.35 14.003-6.343 32.926-8.697 46.425-.116.663-1.227 1.004-1.45 2.677-.04.3.21 1.516.112 1.785-6.836 18.643-10.89 47.584-14.2 61.551l14.528-.014s2.185-8.524 4.008-16.878c2.796-12.817 22.987-84.553 22.987-84.553l3-.517 1.037 46.1s-.223 1.228.334 2.008c.558.782-.556 1.117-.39 2.233l.39 1.784s-.446 7.14-.892 11.826c-.446 4.685-.092 38.954-.092 38.954", fill: "#7BB2F9" } }), e("path", { attrs: { d: "M77.438 220.434c1.146.094 4.016-2.008 6.916-4.91M107.55 223.931s2.758-1.103 6.069-3.862", stroke: "#648BD8", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M108.459 220.905s2.759-1.104 6.07-3.863", stroke: "#648BD8", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M76.099 223.557s2.608-.587 6.47-3.346M87.33 150.82c-.27 3.088.297 8.478-4.315 9.073M104.829 149.075s.11 13.936-1.286 14.983c-2.207 1.655-2.975 1.934-2.975 1.934M101.014 149.63s.035 12.81-1.19 24.245M94.93 174.965s7.174-1.655 9.38-1.655M75.671 204.754c-.316 1.55-.64 3.067-.973 4.535 0 0-1.45 1.822-1.003 3.756.446 1.934-.943 2.034-4.96 15.273-1.686 5.559-4.464 18.49-6.313 27.447-.078.38-4.018 18.06-4.093 18.423M77.043 196.743a313.269 313.269 0 0 1-.877 4.729M83.908 151.414l-1.19 10.413s-1.091.148-.496 2.23c.111 1.34-2.66 15.692-5.153 30.267M57.58 272.94h13.238", stroke: "#648BD8", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } }), e("path", { attrs: { d: "M117.377 147.423s-16.955-3.087-35.7.199c.157 2.501-.002 4.128-.002 4.128s14.607-2.802 35.476-.31c.251-2.342.226-4.017.226-4.017", fill: "#192064" } }), e("path", { attrs: { d: "M107.511 150.353l.004-4.885a.807.807 0 0 0-.774-.81c-2.428-.092-5.04-.108-7.795-.014a.814.814 0 0 0-.784.81l-.003 4.88c0 .456.371.82.827.808a140.76 140.76 0 0 1 7.688.017.81.81 0 0 0 .837-.806", fill: "#FFF" } }), e("path", { attrs: { d: "M106.402 149.426l.002-3.06a.64.64 0 0 0-.616-.643 94.135 94.135 0 0 0-5.834-.009.647.647 0 0 0-.626.643l-.001 3.056c0 .36.291.648.651.64 1.78-.04 3.708-.041 5.762.012.36.009.662-.279.662-.64", fill: "#192064" } }), e("path", { attrs: { d: "M101.485 273.933h12.272M102.652 269.075c.006 3.368.04 5.759.11 6.47M102.667 263.125c-.009 1.53-.015 2.98-.016 4.313M102.204 174.024l.893 44.402s.669 1.561-.224 2.677c-.892 1.116 2.455.67.893 2.231-1.562 1.562.893 1.116 0 3.347-.592 1.48-.988 20.987-1.09 34.956", stroke: "#648BD8", strokeWidth: "1.051", strokeLinecap: "round", strokeLinejoin: "round" } })])]) } }, d = f, p = { success: "check-circle", error: "close-circle", info: "exclamation-circle", warning: "warning" }, v = { 404: l, 500: h, 403: d }, m = Object.keys(v), g = { prefixCls: r["a"].string, icon: r["a"].any, status: r["a"].oneOf(["success", "error", "info", "warning", "404", "403", "500"]).def("info"), title: r["a"].any, subTitle: r["a"].any, extra: r["a"].any }, y = function (e, t, n) { var r = n.status, i = n.icon; if (m.includes("" + r)) { var o = v[r]; return e("div", { class: t + "-icon " + t + "-image" }, [e(o)]) } var s = p[r], c = i || e(a["a"], { attrs: { type: s, theme: "filled" } }); return e("div", { class: t + "-icon" }, [c]) }, b = function (e, t, n) { return n && e("div", { class: t + "-extra" }, [n]) }, x = { name: "AResult", props: g, inject: { configProvider: { default: function () { return o["a"] } } }, render: function (e) { var t = this.prefixCls, n = this.status, r = this.configProvider.getPrefixCls, o = r("result", t), a = Object(i["g"])(this, "title"), s = Object(i["g"])(this, "subTitle"), c = Object(i["g"])(this, "icon"), l = Object(i["g"])(this, "extra"); return e("div", { class: o + " " + o + "-" + n }, [y(e, o, { status: n, icon: c }), e("div", { class: o + "-title" }, [a]), s && e("div", { class: o + "-subtitle" }, [s]), this.$slots["default"] && e("div", { class: o + "-content" }, [this.$slots["default"]]), b(e, o, l)]) } }; x.PRESENTED_IMAGE_403 = v[403], x.PRESENTED_IMAGE_404 = v[404], x.PRESENTED_IMAGE_500 = v[500], x.install = function (e) { e.use(s["a"]), e.component(x.name, x) }; t["a"] = x }, 3787: function (e, t, n) { n("c183"); var r = n("5524").Object; e.exports = function (e, t, n) { return r.defineProperty(e, t, n) } }, "37e8": function (e, t, n) { var r = n("83ab"), i = n("9bf2"), o = n("825a"), a = n("df75"); e.exports = r ? Object.defineProperties : function (e, t) { o(e); var n, r = a(t), s = r.length, c = 0; while (s > c) i.f(e, n = r[c++], t[n]); return e } }, 3818: function (e, t, n) { var r = n("7e64"), i = n("8057"), o = n("32b3"), a = n("5b01"), s = n("0f0f"), c = n("e5383"), l = n("4359"), u = n("54eb"), h = n("1041"), f = n("a994"), d = n("1bac"), p = n("42a2"), v = n("c87c"), m = n("c2b6"), g = n("fa21"), y = n("6747"), b = n("0d24"), x = n("cc45"), w = n("1a8c"), _ = n("d7ee"), C = n("ec69"), M = n("9934"), O = 1, k = 2, S = 4, T = "[object Arguments]", A = "[object Array]", L = "[object Boolean]", j = "[object Date]", z = "[object Error]", E = "[object Function]", P = "[object GeneratorFunction]", D = "[object Map]", H = "[object Number]", V = "[object Object]", I = "[object RegExp]", N = "[object Set]", R = "[object String]", F = "[object Symbol]", Y = "[object WeakMap]", $ = "[object ArrayBuffer]", B = "[object DataView]", W = "[object Float32Array]", q = "[object Float64Array]", U = "[object Int8Array]", K = "[object Int16Array]", G = "[object Int32Array]", X = "[object Uint8Array]", J = "[object Uint8ClampedArray]", Q = "[object Uint16Array]", Z = "[object Uint32Array]", ee = {}; function te(e, t, n, A, L, j) { var z, D = t & O, H = t & k, I = t & S; if (n && (z = L ? n(e, A, L, j) : n(e)), void 0 !== z) return z; if (!w(e)) return e; var N = y(e); if (N) { if (z = v(e), !D) return l(e, z) } else { var R = p(e), F = R == E || R == P; if (b(e)) return c(e, D); if (R == V || R == T || F && !L) { if (z = H || F ? {} : g(e), !D) return H ? h(e, s(z, e)) : u(e, a(z, e)) } else { if (!ee[R]) return L ? e : {}; z = m(e, R, D) } } j || (j = new r); var Y = j.get(e); if (Y) return Y; j.set(e, z), _(e) ? e.forEach((function (r) { z.add(te(r, t, n, r, e, j)) })) : x(e) && e.forEach((function (r, i) { z.set(i, te(r, t, n, i, e, j)) })); var $ = I ? H ? d : f : H ? M : C, B = N ? void 0 : $(e); return i(B || e, (function (r, i) { B && (i = r, r = e[i]), o(z, i, te(r, t, n, i, e, j)) })), z } ee[T] = ee[A] = ee[$] = ee[B] = ee[L] = ee[j] = ee[W] = ee[q] = ee[U] = ee[K] = ee[G] = ee[D] = ee[H] = ee[V] = ee[I] = ee[N] = ee[R] = ee[F] = ee[X] = ee[J] = ee[Q] = ee[Z] = !0, ee[z] = ee[E] = ee[Y] = !1, e.exports = te }, 3835: function (e, t, n) { "use strict"; function r(e) { if (Array.isArray(e)) return e } n.d(t, "a", (function () { return s })); n("a4d3"), n("e01a"), n("d3b7"), n("d28b"), n("3ca3"), n("ddb0"); function i(e, t) { var n = null == e ? null : "undefined" !== typeof Symbol && e[Symbol.iterator] || e["@@iterator"]; if (null != n) { var r, i, o = [], a = !0, s = !1; try { for (n = n.call(e); !(a = (r = n.next()).done); a = !0)if (o.push(r.value), t && o.length === t) break } catch (c) { s = !0, i = c } finally { try { a || null == n["return"] || n["return"]() } finally { if (s) throw i } } return o } } var o = n("06c5"); function a() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") } function s(e, t) { return r(e) || i(e, t) || Object(o["a"])(e, t) || a() } }, 3852: function (e, t, n) { var r = n("96f3"), i = n("e2c0"); function o(e, t) { return null != e && i(e, t, r) } e.exports = o }, "38cf": function (e, t, n) { var r = n("23e7"), i = n("1148"); r({ target: "String", proto: !0 }, { repeat: i }) }, 3938: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.radarConfig = void 0; var r = { show: !0, name: "", data: [], radarStyle: { lineWidth: 1 }, point: { show: !0, radius: 2, style: { fill: "#fff" } }, label: { show: !0, offset: [0, 0], labelGap: 5, formatter: null, style: { fontSize: 10 } }, rLevel: 10, animationCurve: "easeOutCubic", animationFrane: 50 }; t.radarConfig = r }, "393a": function (e, t, n) { "use strict"; var r = n("e444"), i = n("512c"), o = n("ba01"), a = n("051b"), s = n("8a0d"), c = n("26dd"), l = n("92f0"), u = n("ce7a"), h = n("cc15")("iterator"), f = !([].keys && "next" in [].keys()), d = "@@iterator", p = "keys", v = "values", m = function () { return this }; e.exports = function (e, t, n, g, y, b, x) { c(n, t, g); var w, _, C, M = function (e) { if (!f && e in T) return T[e]; switch (e) { case p: return function () { return new n(this, e) }; case v: return function () { return new n(this, e) } }return function () { return new n(this, e) } }, O = t + " Iterator", k = y == v, S = !1, T = e.prototype, A = T[h] || T[d] || y && T[y], L = A || M(y), j = y ? k ? M("entries") : L : void 0, z = "Array" == t && T.entries || A; if (z && (C = u(z.call(new e)), C !== Object.prototype && C.next && (l(C, O, !0), r || "function" == typeof C[h] || a(C, h, m))), k && A && A.name !== v && (S = !0, L = function () { return A.call(this) }), r && !x || !f && !S && T[h] || a(T, h, L), s[t] = L, s[O] = m, y) if (w = { values: k ? L : M(v), keys: b ? L : M(p), entries: j }, x) for (_ in w) _ in T || o(T, _, w[_]); else i(i.P + i.F * (f || S), t, w); return w } }, "39ab": function (e, t, n) { "use strict"; var r = n("92fa"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("4d26"), u = n.n(l), h = n("a8fc"), f = n.n(h), d = n("51f5"), p = n.n(d), v = n("2593"), m = n.n(v), g = n("4d91"), y = n("daa3"), b = n("b488"), x = n("327d"), w = n.n(x); function _(e, t) { var n = "cannot " + e.method + " " + e.action + " " + t.status + "'", r = new Error(n); return r.status = t.status, r.method = e.method, r.url = e.action, r } function C(e) { var t = e.responseText || e.response; if (!t) return t; try { return JSON.parse(t) } catch (n) { return t } } function M(e) { var t = new window.XMLHttpRequest; e.onProgress && t.upload && (t.upload.onprogress = function (t) { t.total > 0 && (t.percent = t.loaded / t.total * 100), e.onProgress(t) }); var n = new window.FormData; e.data && Object.keys(e.data).forEach((function (t) { var r = e.data[t]; Array.isArray(r) ? r.forEach((function (e) { n.append(t + "[]", e) })) : n.append(t, e.data[t]) })), n.append(e.filename, e.file), t.onerror = function (t) { e.onError(t) }, t.onload = function () { if (t.status < 200 || t.status >= 300) return e.onError(_(e, t), C(t)); e.onSuccess(C(t), t) }, t.open(e.method, e.action, !0), e.withCredentials && "withCredentials" in t && (t.withCredentials = !0); var r = e.headers || {}; for (var i in null !== r["X-Requested-With"] && t.setRequestHeader("X-Requested-With", "XMLHttpRequest"), r) r.hasOwnProperty(i) && null !== r[i] && t.setRequestHeader(i, r[i]); return t.send(n), { abort: function () { t.abort() } } } var O = +new Date, k = 0; function S() { return "vc-upload-" + O + "-" + ++k } function T(e, t) { return -1 !== e.indexOf(t, e.length - t.length) } var A = function (e, t) { if (e && t) { var n = Array.isArray(t) ? t : t.split(","), r = e.name || "", i = e.type || "", o = i.replace(/\/.*$/, ""); return n.some((function (e) { var t = e.trim(); return "." === t.charAt(0) ? T(r.toLowerCase(), t.toLowerCase()) : /\/\*$/.test(t) ? o === t.replace(/\/.*$/, "") : i === t })) } return !0 }; function L(e, t) { var n = e.createReader(), r = []; function i() { n.readEntries((function (e) { var n = Array.prototype.slice.apply(e); r = r.concat(n); var o = !n.length; o ? t(r) : i() })) } i() } var j = function (e, t, n) { var r = function e(r, i) { i = i || "", r.isFile ? r.file((function (e) { n(e) && (r.fullPath && !e.webkitRelativePath && (Object.defineProperties(e, { webkitRelativePath: { writable: !0 } }), e.webkitRelativePath = r.fullPath.replace(/^\//, ""), Object.defineProperties(e, { webkitRelativePath: { writable: !1 } })), t([e])) })) : r.isDirectory && L(r, (function (t) { t.forEach((function (t) { e(t, "" + i + r.name + "/") })) })) }, i = !0, o = !1, a = void 0; try { for (var s, c = e[Symbol.iterator](); !(i = (s = c.next()).done); i = !0) { var l = s.value; r(l.webkitGetAsEntry()) } } catch (u) { o = !0, a = u } finally { try { !i && c["return"] && c["return"]() } finally { if (o) throw a } } }, z = j, E = { componentTag: g["a"].string, prefixCls: g["a"].string, name: g["a"].string, multiple: g["a"].bool, directory: g["a"].bool, disabled: g["a"].bool, accept: g["a"].string, data: g["a"].oneOfType([g["a"].object, g["a"].func]), action: g["a"].oneOfType([g["a"].string, g["a"].func]), headers: g["a"].object, beforeUpload: g["a"].func, customRequest: g["a"].func, withCredentials: g["a"].bool, openFileDialogOnClick: g["a"].bool, transformFile: g["a"].func, method: g["a"].string }, P = { inheritAttrs: !1, name: "ajaxUploader", mixins: [b["a"]], props: E, data: function () { return this.reqs = {}, { uid: S() } }, mounted: function () { this._isMounted = !0 }, beforeDestroy: function () { this._isMounted = !1, this.abort() }, methods: { onChange: function (e) { var t = e.target.files; this.uploadFiles(t), this.reset() }, onClick: function () { var e = this.$refs.fileInputRef; e && e.click() }, onKeyDown: function (e) { "Enter" === e.key && this.onClick() }, onFileDrop: function (e) { var t = this, n = this.$props.multiple; if (e.preventDefault(), "dragover" !== e.type) if (this.directory) z(e.dataTransfer.items, this.uploadFiles, (function (e) { return A(e, t.accept) })); else { var r = w()(Array.prototype.slice.call(e.dataTransfer.files), (function (e) { return A(e, t.accept) })), i = r[0], o = r[1]; !1 === n && (i = i.slice(0, 1)), this.uploadFiles(i), o.length && this.$emit("reject", o) } }, uploadFiles: function (e) { var t = this, n = Array.prototype.slice.call(e); n.map((function (e) { return e.uid = S(), e })).forEach((function (e) { t.upload(e, n) })) }, upload: function (e, t) { var n = this; if (!this.beforeUpload) return setTimeout((function () { return n.post(e) }), 0); var r = this.beforeUpload(e, t); r && r.then ? r.then((function (t) { var r = Object.prototype.toString.call(t); return "[object File]" === r || "[object Blob]" === r ? n.post(t) : n.post(e) }))["catch"]((function (e) { console && console.log(e) })) : !1 !== r && setTimeout((function () { return n.post(e) }), 0) }, post: function (e) { var t = this; if (this._isMounted) { var n = this.$props, r = n.data, i = n.transformFile, o = void 0 === i ? function (e) { return e } : i; new Promise((function (n) { var r = t.action; if ("function" === typeof r) return n(r(e)); n(r) })).then((function (i) { var a = e.uid, s = t.customRequest || M, c = Promise.resolve(o(e))["catch"]((function (e) { console.error(e) })); c.then((function (o) { "function" === typeof r && (r = r(e)); var c = { action: i, filename: t.name, data: r, file: o, headers: t.headers, withCredentials: t.withCredentials, method: n.method || "post", onProgress: function (n) { t.$emit("progress", n, e) }, onSuccess: function (n, r) { delete t.reqs[a], t.$emit("success", n, e, r) }, onError: function (n, r) { delete t.reqs[a], t.$emit("error", n, r, e) } }; t.reqs[a] = s(c), t.$emit("start", e) })) })) } }, reset: function () { this.setState({ uid: S() }) }, abort: function (e) { var t = this.reqs; if (e) { var n = e; e && e.uid && (n = e.uid), t[n] && t[n].abort && t[n].abort(), delete t[n] } else Object.keys(t).forEach((function (e) { t[e] && t[e].abort && t[e].abort(), delete t[e] })) } }, render: function () { var e, t = arguments[0], n = this.$props, r = this.$attrs, i = n.componentTag, o = n.prefixCls, s = n.disabled, l = n.multiple, h = n.accept, f = n.directory, d = n.openFileDialogOnClick, p = u()((e = {}, a()(e, o, !0), a()(e, o + "-disabled", s), e)), v = s ? {} : { click: d ? this.onClick : function () { }, keydown: d ? this.onKeyDown : function () { }, drop: this.onFileDrop, dragover: this.onFileDrop }, m = { on: c()({}, Object(y["k"])(this), v), attrs: { role: "button", tabIndex: s ? null : "0" }, class: p }; return t(i, m, [t("input", { attrs: { id: r.id, type: "file", accept: h, directory: f ? "directory" : null, webkitdirectory: f ? "webkitdirectory" : null, multiple: l }, ref: "fileInputRef", on: { click: function (e) { return e.stopPropagation() }, change: this.onChange }, key: this.uid, style: { display: "none" } }), this.$slots["default"]]) } }, D = P, H = n("6a21"), V = { position: "absolute", top: 0, opacity: 0, filter: "alpha(opacity=0)", left: 0, zIndex: 9999 }, I = { mixins: [b["a"]], props: { componentTag: g["a"].string, disabled: g["a"].bool, prefixCls: g["a"].string, accept: g["a"].string, multiple: g["a"].bool, data: g["a"].oneOfType([g["a"].object, g["a"].func]), action: g["a"].oneOfType([g["a"].string, g["a"].func]), name: g["a"].string }, data: function () { return this.file = {}, { uploading: !1 } }, methods: { onLoad: function () { if (this.uploading) { var e = this.file, t = void 0; try { var n = this.getIframeDocument(), r = n.getElementsByTagName("script")[0]; r && r.parentNode === n.body && n.body.removeChild(r), t = n.body.innerHTML, this.$emit("success", t, e) } catch (i) { Object(H["a"])(!1, "cross domain error for Upload. Maybe server should return document.domain script. see Note from https://github.com/react-component/upload"), t = "cross-domain", this.$emit("error", i, null, e) } this.endUpload() } }, onChange: function () { var e = this, t = this.getFormInputNode(), n = this.file = { uid: S(), name: t.value && t.value.substring(t.value.lastIndexOf("\\") + 1, t.value.length) }; this.startUpload(); var r = this.$props; if (!r.beforeUpload) return this.post(n); var i = r.beforeUpload(n); i && i.then ? i.then((function () { e.post(n) }), (function () { e.endUpload() })) : !1 !== i ? this.post(n) : this.endUpload() }, getIframeNode: function () { return this.$refs.iframeRef }, getIframeDocument: function () { return this.getIframeNode().contentDocument }, getFormNode: function () { return this.getIframeDocument().getElementById("form") }, getFormInputNode: function () { return this.getIframeDocument().getElementById("input") }, getFormDataNode: function () { return this.getIframeDocument().getElementById("data") }, getFileForMultiple: function (e) { return this.multiple ? [e] : e }, getIframeHTML: function (e) { var t = "", n = ""; if (e) { var r = "script"; t = "<" + r + '>document.domain="' + e + '";</' + r + ">", n = '<input name="_documentDomain" value="' + e + '" />' } return '\n      <!DOCTYPE html>\n      <html>\n      <head>\n      <meta http-equiv="X-UA-Compatible" content="IE=edge" />\n      <style>\n      body,html {padding:0;margin:0;border:0;overflow:hidden;}\n      </style>\n      ' + t + '\n      </head>\n      <body>\n      <form method="post"\n      encType="multipart/form-data"\n      action="" id="form"\n      style="display:block;height:9999px;position:relative;overflow:hidden;">\n      <input id="input" type="file"\n       name="' + this.name + '"\n       style="position:absolute;top:0;right:0;height:9999px;font-size:9999px;cursor:pointer;"/>\n      ' + n + '\n      <span id="data"></span>\n      </form>\n      </body>\n      </html>\n      ' }, initIframeSrc: function () { this.domain && (this.getIframeNode().src = "javascript:void((function(){\n          var d = document;\n          d.open();\n          d.domain='" + this.domain + "';\n          d.write('');\n          d.close();\n        })())") }, initIframe: function () { var e = this.getIframeNode(), t = e.contentWindow, n = void 0; this.domain = this.domain || "", this.initIframeSrc(); try { n = t.document } catch (r) { this.domain = document.domain, this.initIframeSrc(), t = e.contentWindow, n = t.document } n.open("text/html", "replace"), n.write(this.getIframeHTML(this.domain)), n.close(), this.getFormInputNode().onchange = this.onChange }, endUpload: function () { this.uploading && (this.file = {}, this.uploading = !1, this.setState({ uploading: !1 }), this.initIframe()) }, startUpload: function () { this.uploading || (this.uploading = !0, this.setState({ uploading: !0 })) }, updateIframeWH: function () { var e = this.$el, t = this.getIframeNode(); t.style.height = e.offsetHeight + "px", t.style.width = e.offsetWidth + "px" }, abort: function (e) { if (e) { var t = e; e && e.uid && (t = e.uid), t === this.file.uid && this.endUpload() } else this.endUpload() }, post: function (e) { var t = this, n = this.getFormNode(), r = this.getFormDataNode(), i = this.$props.data; "function" === typeof i && (i = i(e)); var o = document.createDocumentFragment(); for (var a in i) if (i.hasOwnProperty(a)) { var s = document.createElement("input"); s.setAttribute("name", a), s.value = i[a], o.appendChild(s) } r.appendChild(o), new Promise((function (n) { var r = t.action; if ("function" === typeof r) return n(r(e)); n(r) })).then((function (i) { n.setAttribute("action", i), n.submit(), r.innerHTML = "", t.$emit("start", e) })) } }, mounted: function () { var e = this; this.$nextTick((function () { e.updateIframeWH(), e.initIframe() })) }, updated: function () { var e = this; this.$nextTick((function () { e.updateIframeWH() })) }, render: function () { var e, t = arguments[0], n = this.$props, r = n.componentTag, i = n.disabled, o = n.prefixCls, s = c()({}, V, { display: this.uploading || i ? "none" : "" }), l = u()((e = {}, a()(e, o, !0), a()(e, o + "-disabled", i), e)); return t(r, { attrs: { className: l }, style: { position: "relative", zIndex: 0 } }, [t("iframe", { ref: "iframeRef", on: { load: this.onLoad }, style: s }), this.$slots["default"]]) } }, N = I; function R() { } var F = { componentTag: g["a"].string, prefixCls: g["a"].string, action: g["a"].oneOfType([g["a"].string, g["a"].func]), name: g["a"].string, multipart: g["a"].bool, directory: g["a"].bool, data: g["a"].oneOfType([g["a"].object, g["a"].func]), headers: g["a"].object, accept: g["a"].string, multiple: g["a"].bool, disabled: g["a"].bool, beforeUpload: g["a"].func, customRequest: g["a"].func, withCredentials: g["a"].bool, supportServerRender: g["a"].bool, openFileDialogOnClick: g["a"].bool, transformFile: g["a"].func }, Y = { name: "Upload", mixins: [b["a"]], inheritAttrs: !1, props: Object(y["t"])(F, { componentTag: "span", prefixCls: "rc-upload", data: {}, headers: {}, name: "file", multipart: !1, supportServerRender: !1, multiple: !1, beforeUpload: R, withCredentials: !1, openFileDialogOnClick: !0 }), data: function () { return { Component: null } }, mounted: function () { var e = this; this.$nextTick((function () { e.supportServerRender && e.setState({ Component: e.getComponent() }, (function () { e.$emit("ready") })) })) }, methods: { getComponent: function () { return "undefined" !== typeof File ? D : N }, abort: function (e) { this.$refs.uploaderRef.abort(e) } }, render: function () { var e = arguments[0], t = { props: c()({}, this.$props), on: Object(y["k"])(this), ref: "uploaderRef", attrs: this.$attrs }; if (this.supportServerRender) { var n = this.Component; return n ? e(n, t, [this.$slots["default"]]) : null } var r = this.getComponent(); return e(r, t, [this.$slots["default"]]) } }, $ = Y, B = $, W = n("e5cd"), q = n("02ea"), U = n("9cba"), K = n("1098"), G = n.n(K); g["a"].oneOf(["error", "success", "done", "uploading", "removed"]); function X(e) { var t = e.uid, n = e.name; return !(!t && 0 !== t) && (!!["string", "number"].includes("undefined" === typeof t ? "undefined" : G()(t)) && ("" !== n && "string" === typeof n)) } g["a"].custom(X), g["a"].arrayOf(g["a"].custom(X)), g["a"].object; var J = g["a"].shape({ showRemoveIcon: g["a"].bool, showPreviewIcon: g["a"].bool }).loose, Q = g["a"].shape({ uploading: g["a"].string, removeFile: g["a"].string, downloadFile: g["a"].string, uploadError: g["a"].string, previewFile: g["a"].string }).loose, Z = { type: g["a"].oneOf(["drag", "select"]), name: g["a"].string, defaultFileList: g["a"].arrayOf(g["a"].custom(X)), fileList: g["a"].arrayOf(g["a"].custom(X)), action: g["a"].oneOfType([g["a"].string, g["a"].func]), directory: g["a"].bool, data: g["a"].oneOfType([g["a"].object, g["a"].func]), method: g["a"].oneOf(["POST", "PUT", "post", "put"]), headers: g["a"].object, showUploadList: g["a"].oneOfType([g["a"].bool, J]), multiple: g["a"].bool, accept: g["a"].string, beforeUpload: g["a"].func, listType: g["a"].oneOf(["text", "picture", "picture-card"]), remove: g["a"].func, supportServerRender: g["a"].bool, disabled: g["a"].bool, prefixCls: g["a"].string, customRequest: g["a"].func, withCredentials: g["a"].bool, openFileDialogOnClick: g["a"].bool, locale: Q, height: g["a"].number, id: g["a"].string, previewFile: g["a"].func, transformFile: g["a"].func }, ee = (g["a"].arrayOf(g["a"].custom(X)), g["a"].string, { listType: g["a"].oneOf(["text", "picture", "picture-card"]), items: g["a"].arrayOf(g["a"].custom(X)), progressAttr: g["a"].object, prefixCls: g["a"].string, showRemoveIcon: g["a"].bool, showDownloadIcon: g["a"].bool, showPreviewIcon: g["a"].bool, locale: Q, previewFile: g["a"].func }), te = { name: "AUploadDragger", props: Z, render: function () { var e = arguments[0], t = Object(y["l"])(this), n = { props: c()({}, t, { type: "drag" }), on: Object(y["k"])(this), style: { height: this.height } }; return e(ge, n, [this.$slots["default"]]) } }, ne = n("94eb"); function re() { return !0 } function ie(e) { return c()({}, e, { lastModified: e.lastModified, lastModifiedDate: e.lastModifiedDate, name: e.name, size: e.size, type: e.type, uid: e.uid, percent: 0, originFileObj: e }) } function oe() { var e = .1, t = .01, n = .98; return function (r) { var i = r; return i >= n || (i += e, e -= t, e < .001 && (e = .001)), i } } function ae(e, t) { var n = void 0 !== e.uid ? "uid" : "name"; return t.filter((function (t) { return t[n] === e[n] }))[0] } function se(e, t) { var n = void 0 !== e.uid ? "uid" : "name", r = t.filter((function (t) { return t[n] !== e[n] })); return r.length === t.length ? null : r } var ce = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", t = e.split("/"), n = t[t.length - 1], r = n.split(/#|\?/)[0]; return (/\.[^./\\]*$/.exec(r) || [""])[0] }, le = function (e) { return !!e && 0 === e.indexOf("image/") }, ue = function (e) { if (le(e.type)) return !0; var t = e.thumbUrl || e.url, n = ce(t); return !(!/^data:image\//.test(t) && !/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(n)) || !/^data:/.test(t) && !n }, he = 200; function fe(e) { return new Promise((function (t) { if (le(e.type)) { var n = document.createElement("canvas"); n.width = he, n.height = he, n.style.cssText = "position: fixed; left: 0; top: 0; width: " + he + "px; height: " + he + "px; z-index: 9999; display: none;", document.body.appendChild(n); var r = n.getContext("2d"), i = new Image; i.onload = function () { var e = i.width, o = i.height, a = he, s = he, c = 0, l = 0; e < o ? (s = o * (he / e), l = -(s - a) / 2) : (a = e * (he / o), c = -(a - s) / 2), r.drawImage(i, c, l, a, s); var u = n.toDataURL(); document.body.removeChild(n), t(u) }, i.src = window.URL.createObjectURL(e) } else t("") })) } var de = n("0c63"), pe = n("f933"), ve = n("f2ca"), me = { name: "AUploadList", mixins: [b["a"]], props: Object(y["t"])(ee, { listType: "text", progressAttr: { strokeWidth: 2, showInfo: !1 }, showRemoveIcon: !0, showDownloadIcon: !1, showPreviewIcon: !0, previewFile: fe }), inject: { configProvider: { default: function () { return U["a"] } } }, updated: function () { var e = this; this.$nextTick((function () { var t = e.$props, n = t.listType, r = t.items, i = t.previewFile; "picture" !== n && "picture-card" !== n || (r || []).forEach((function (t) { "undefined" !== typeof document && "undefined" !== typeof window && window.FileReader && window.File && (t.originFileObj instanceof File || t.originFileObj instanceof Blob) && void 0 === t.thumbUrl && (t.thumbUrl = "", i && i(t.originFileObj).then((function (n) { t.thumbUrl = n || "", e.$forceUpdate() }))) })) })) }, methods: { handlePreview: function (e, t) { var n = Object(y["k"])(this), r = n.preview; if (r) return t.preventDefault(), this.$emit("preview", e) }, handleDownload: function (e) { var t = Object(y["k"])(this), n = t.download; "function" === typeof n ? n(e) : e.url && window.open(e.url) }, handleClose: function (e) { this.$emit("remove", e) } }, render: function () { var e, t = this, n = arguments[0], r = Object(y["l"])(this), o = r.prefixCls, s = r.items, l = void 0 === s ? [] : s, h = r.listType, f = r.showPreviewIcon, d = r.showRemoveIcon, p = r.showDownloadIcon, v = r.locale, m = r.progressAttr, g = this.configProvider.getPrefixCls, b = g("upload", o), x = l.map((function (e) { var r, o, s = void 0, l = n(de["a"], { attrs: { type: "uploading" === e.status ? "loading" : "paper-clip" } }); if ("picture" === h || "picture-card" === h) if ("picture-card" === h && "uploading" === e.status) l = n("div", { class: b + "-list-item-uploading-text" }, [v.uploading]); else if (e.thumbUrl || e.url) { var g = ue(e) ? n("img", { attrs: { src: e.thumbUrl || e.url, alt: e.name }, class: b + "-list-item-image" }) : n(de["a"], { attrs: { type: "file", theme: "twoTone" }, class: b + "-list-item-icon" }); l = n("a", { class: b + "-list-item-thumbnail", on: { click: function (n) { return t.handlePreview(e, n) } }, attrs: { href: e.url || e.thumbUrl, target: "_blank", rel: "noopener noreferrer" } }, [g]) } else l = n(de["a"], { class: b + "-list-item-thumbnail", attrs: { type: "picture", theme: "twoTone" } }); if ("uploading" === e.status) { var y = { props: c()({}, m, { type: "line", percent: e.percent }) }, x = "percent" in e ? n(ve["a"], y) : null; s = n("div", { class: b + "-list-item-progress", key: "progress" }, [x]) } var w = u()((r = {}, a()(r, b + "-list-item", !0), a()(r, b + "-list-item-" + e.status, !0), a()(r, b + "-list-item-list-type-" + h, !0), r)), _ = "string" === typeof e.linkProps ? JSON.parse(e.linkProps) : e.linkProps, C = d ? n(de["a"], { attrs: { type: "delete", title: v.removeFile }, on: { click: function () { return t.handleClose(e) } } }) : null, M = p && "done" === e.status ? n(de["a"], { attrs: { type: "download", title: v.downloadFile }, on: { click: function () { return t.handleDownload(e) } } }) : null, O = "picture-card" !== h && n("span", { key: "download-delete", class: b + "-list-item-card-actions " + ("picture" === h ? "picture" : "") }, [M && n("a", { attrs: { title: v.downloadFile } }, [M]), C && n("a", { attrs: { title: v.removeFile } }, [C])]), k = u()((o = {}, a()(o, b + "-list-item-name", !0), a()(o, b + "-list-item-name-icon-count-" + [M, C].filter((function (e) { return e })).length, !0), o)), S = e.url ? [n("a", i()([{ attrs: { target: "_blank", rel: "noopener noreferrer", title: e.name }, class: k }, _, { attrs: { href: e.url }, on: { click: function (n) { return t.handlePreview(e, n) } } }]), [e.name]), O] : [n("span", { key: "view", class: b + "-list-item-name", on: { click: function (n) { return t.handlePreview(e, n) } }, attrs: { title: e.name } }, [e.name]), O], T = e.url || e.thumbUrl ? void 0 : { pointerEvents: "none", opacity: .5 }, A = f ? n("a", { attrs: { href: e.url || e.thumbUrl, target: "_blank", rel: "noopener noreferrer", title: v.previewFile }, style: T, on: { click: function (n) { return t.handlePreview(e, n) } } }, [n(de["a"], { attrs: { type: "eye-o" } })]) : null, L = "picture-card" === h && "uploading" !== e.status && n("span", { class: b + "-list-item-actions" }, [A, "done" === e.status && M, C]), j = void 0; j = e.response && "string" === typeof e.response ? e.response : e.error && e.error.statusText || v.uploadError; var z = n("span", [l, S]), E = Object(ne["a"])("fade"), P = n("div", { class: w, key: e.uid }, [n("div", { class: b + "-list-item-info" }, [z]), L, n("transition", E, [s])]), D = u()(a()({}, b + "-list-picture-card-container", "picture-card" === h)); return n("div", { key: e.uid, class: D }, ["error" === e.status ? n(pe["a"], { attrs: { title: j } }, [P]) : n("span", [P])]) })), w = u()((e = {}, a()(e, b + "-list", !0), a()(e, b + "-list-" + h, !0), e)), _ = "picture-card" === h ? "animate-inline" : "animate", C = Object(ne["a"])(b + "-" + _); return n("transition-group", i()([C, { attrs: { tag: "div" }, class: w }]), [x]) } }, ge = { name: "AUpload", mixins: [b["a"]], inheritAttrs: !1, Dragger: te, props: Object(y["t"])(Z, { type: "select", multiple: !1, action: "", data: {}, accept: "", beforeUpload: re, showUploadList: !0, listType: "text", disabled: !1, supportServerRender: !0 }), inject: { configProvider: { default: function () { return U["a"] } } }, data: function () { return this.progressTimer = null, { sFileList: this.fileList || this.defaultFileList || [], dragState: "drop" } }, watch: { fileList: function (e) { this.sFileList = e || [] } }, beforeDestroy: function () { this.clearProgressTimer() }, methods: { onStart: function (e) { var t = ie(e); t.status = "uploading"; var n = this.sFileList.concat(), r = p()(n, (function (e) { var n = e.uid; return n === t.uid })); -1 === r ? n.push(t) : n[r] = t, this.onChange({ file: t, fileList: n }), window.File && !Object({ NODE_ENV: "production", VUE_APP_API_BASE_URL: "http://localhost:5566", VUE_APP_PREVIEW: "true", BASE_URL: "/" }).TEST_IE || this.autoUpdateProgress(0, t) }, onSuccess: function (e, t, n) { this.clearProgressTimer(); try { "string" === typeof e && (e = JSON.parse(e)) } catch (o) { } var r = this.sFileList, i = ae(t, r); i && (i.status = "done", i.response = e, i.xhr = n, this.onChange({ file: c()({}, i), fileList: r })) }, onProgress: function (e, t) { var n = this.sFileList, r = ae(t, n); r && (r.percent = e.percent, this.onChange({ event: e, file: c()({}, r), fileList: this.sFileList })) }, onError: function (e, t, n) { this.clearProgressTimer(); var r = this.sFileList, i = ae(n, r); i && (i.error = e, i.response = t, i.status = "error", this.onChange({ file: c()({}, i), fileList: r })) }, onReject: function (e) { this.$emit("reject", e) }, handleRemove: function (e) { var t = this, n = this.remove, r = this.$data.sFileList; Promise.resolve("function" === typeof n ? n(e) : n).then((function (n) { if (!1 !== n) { var i = se(e, r); i && (e.status = "removed", t.upload && t.upload.abort(e), t.onChange({ file: e, fileList: i })) } })) }, handleManualRemove: function (e) { this.$refs.uploadRef && this.$refs.uploadRef.abort(e), this.handleRemove(e) }, onChange: function (e) { Object(y["s"])(this, "fileList") || this.setState({ sFileList: e.fileList }), this.$emit("change", e) }, onFileDrop: function (e) { this.setState({ dragState: e.type }) }, reBeforeUpload: function (e, t) { var n = this.$props.beforeUpload, r = this.$data.sFileList; if (!n) return !0; var i = n(e, t); return !1 === i ? (this.onChange({ file: e, fileList: f()(r.concat(t.map(ie)), (function (e) { return e.uid })) }), !1) : !i || !i.then || i }, clearProgressTimer: function () { clearInterval(this.progressTimer) }, autoUpdateProgress: function (e, t) { var n = this, r = oe(), i = 0; this.clearProgressTimer(), this.progressTimer = setInterval((function () { i = r(i), n.onProgress({ percent: 100 * i }, t) }), 200) }, renderUploadList: function (e) { var t = this.$createElement, n = Object(y["l"])(this), r = n.showUploadList, i = void 0 === r ? {} : r, o = n.listType, a = n.previewFile, s = n.disabled, l = n.locale, u = i.showRemoveIcon, h = i.showPreviewIcon, f = i.showDownloadIcon, d = this.$data.sFileList, p = { props: { listType: o, items: d, previewFile: a, showRemoveIcon: !s && u, showPreviewIcon: h, showDownloadIcon: f, locale: c()({}, e, l) }, on: c()({ remove: this.handleManualRemove }, m()(Object(y["k"])(this), ["download", "preview"])) }; return t(me, p) } }, render: function () { var e, t = arguments[0], n = Object(y["l"])(this), r = n.prefixCls, o = n.showUploadList, s = n.listType, l = n.type, h = n.disabled, f = this.$data, d = f.sFileList, p = f.dragState, v = this.configProvider.getPrefixCls, m = v("upload", r), g = { props: c()({}, this.$props, { prefixCls: m, beforeUpload: this.reBeforeUpload }), on: { start: this.onStart, error: this.onError, progress: this.onProgress, success: this.onSuccess, reject: this.onReject }, ref: "uploadRef", attrs: c()({}, this.$attrs) }, b = this.$slots["default"]; b && !h || (delete g.props.id, delete g.attrs.id); var x = o ? t(W["a"], { attrs: { componentName: "Upload", defaultLocale: q["a"].Upload }, scopedSlots: { default: this.renderUploadList } }) : null; if ("drag" === l) { var w, _ = u()(m, (w = {}, a()(w, m + "-drag", !0), a()(w, m + "-drag-uploading", d.some((function (e) { return "uploading" === e.status }))), a()(w, m + "-drag-hover", "dragover" === p), a()(w, m + "-disabled", h), w)); return t("span", [t("div", { class: _, on: { drop: this.onFileDrop, dragover: this.onFileDrop, dragleave: this.onFileDrop } }, [t(B, i()([g, { class: m + "-btn" }]), [t("div", { class: m + "-drag-container" }, [b])])]), x]) } var C = u()(m, (e = {}, a()(e, m + "-select", !0), a()(e, m + "-select-" + s, !0), a()(e, m + "-disabled", h), e)), M = t("div", { class: C, style: b ? void 0 : { display: "none" } }, [t(B, g, [b])]); return "picture-card" === s ? t("span", { class: m + "-picture-card-wrapper" }, [x, M]) : t("span", [M, x]) } }, ye = n("db14"); ge.Dragger = te, ge.install = function (e) { e.use(ye["a"]), e.component(ge.name, ge), e.component(te.name, te) }; t["a"] = ge }, "39ad": function (e, t, n) { var r = n("6ca1"), i = n("d16a"), o = n("9d11"); e.exports = function (e) { return function (t, n, a) { var s, c = r(t), l = i(c.length), u = o(a, l); if (e && n != n) { while (l > u) if (s = c[u++], s != s) return !0 } else for (; l > u; u++)if ((e || u in c) && c[u] === n) return e || u || 0; return !e && -1 } } }, "39ff": function (e, t, n) { var r = n("0b07"), i = n("2b3e"), o = r(i, "WeakMap"); e.exports = o }, "3a7b": function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("b727").findIndex, o = r.aTypedArray, a = r.exportTypedArrayMethod; a("findIndex", (function (e) { return i(o(this), e, arguments.length > 1 ? arguments[1] : void 0) })) }, "3a9b": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = "0 0 1024 1024", i = "64 64 896 896", o = "fill", a = "outline", s = "twotone"; function c(e) { for (var t = [], n = 1; n < arguments.length; n++)t[n - 1] = arguments[n]; return { tag: "svg", attrs: { viewBox: e, focusable: !1 }, children: t.map((function (e) { return Array.isArray(e) ? { tag: "path", attrs: { fill: e[0], d: e[1] } } : { tag: "path", attrs: { d: e } } })) } } function l(e, t, n) { return { name: e, theme: t, icon: n } } t.AccountBookFill = l("account-book", o, c(i, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zM648.3 426.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V752c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3 73.2-144.3a10 10 0 0 1 8.9-5.5h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8z")), t.AlertFill = l("alert", o, c(i, "M512 244c176.18 0 319 142.82 319 319v233a32 32 0 0 1-32 32H225a32 32 0 0 1-32-32V563c0-176.18 142.82-319 319-319zM484 68h56a8 8 0 0 1 8 8v96a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8V76a8 8 0 0 1 8-8zM177.25 191.66a8 8 0 0 1 11.32 0l67.88 67.88a8 8 0 0 1 0 11.31l-39.6 39.6a8 8 0 0 1-11.31 0l-67.88-67.88a8 8 0 0 1 0-11.31l39.6-39.6zm669.6 0l39.6 39.6a8 8 0 0 1 0 11.3l-67.88 67.9a8 8 0 0 1-11.32 0l-39.6-39.6a8 8 0 0 1 0-11.32l67.89-67.88a8 8 0 0 1 11.31 0zM192 892h640a32 32 0 0 1 32 32v24a8 8 0 0 1-8 8H168a8 8 0 0 1-8-8v-24a32 32 0 0 1 32-32zm148-317v253h64V575h-64z")), t.AlipaySquareFill = l("alipay-square", o, c(i, "M308.6 545.7c-19.8 2-57.1 10.7-77.4 28.6-61 53-24.5 150 99 150 71.8 0 143.5-45.7 199.8-119-80.2-38.9-148.1-66.8-221.4-59.6zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm29.4 663.2S703 689.4 598.7 639.5C528.8 725.2 438.6 777.3 345 777.3c-158.4 0-212.1-138.1-137.2-229 16.3-19.8 44.2-38.7 87.3-49.4 67.5-16.5 175 10.3 275.7 43.4 18.1-33.3 33.4-69.9 44.7-108.9H305.1V402h160v-56.2H271.3v-31.3h193.8v-80.1s0-13.5 13.7-13.5H557v93.6h191.7v31.3H557.1V402h156.4c-15 61.1-37.7 117.4-66.2 166.8 47.5 17.1 90.1 33.3 121.8 43.9 114.3 38.2 140.2 40.2 140.2 40.2v122.3z")), t.AliwangwangFill = l("aliwangwang", o, c(i, "M868.2 377.4c-18.9-45.1-46.3-85.6-81.2-120.6a377.26 377.26 0 0 0-120.5-81.2A375.65 375.65 0 0 0 519 145.8c-41.9 0-82.9 6.7-121.9 20C306 123.3 200.8 120 170.6 120c-2.2 0-7.4 0-9.4.2-11.9.4-22.8 6.5-29.2 16.4-6.5 9.9-7.7 22.4-3.4 33.5l64.3 161.6a378.59 378.59 0 0 0-52.8 193.2c0 51.4 10 101 29.8 147.6 18.9 45 46.2 85.6 81.2 120.5 34.7 34.8 75.4 62.1 120.5 81.2C418.3 894 467.9 904 519 904c51.3 0 100.9-10 147.7-29.8 44.9-18.9 85.5-46.3 120.4-81.2 34.7-34.8 62.1-75.4 81.2-120.6a376.5 376.5 0 0 0 29.8-147.6c-.2-51.2-10.1-100.8-29.9-147.4zm-325.2 79c0 20.4-16.6 37.1-37.1 37.1-20.4 0-37.1-16.7-37.1-37.1v-55.1c0-20.4 16.6-37.1 37.1-37.1 20.4 0 37.1 16.6 37.1 37.1v55.1zm175.2 0c0 20.4-16.6 37.1-37.1 37.1S644 476.8 644 456.4v-55.1c0-20.4 16.7-37.1 37.1-37.1 20.4 0 37.1 16.6 37.1 37.1v55.1z")), t.AlipayCircleFill = l("alipay-circle", o, c(i, "M308.6 545.7c-19.8 2-57.1 10.7-77.4 28.6-61 53-24.5 150 99 150 71.8 0 143.5-45.7 199.8-119-80.2-38.9-148.1-66.8-221.4-59.6zm460.5 67c100.1 33.4 154.7 43 166.7 44.8A445.9 445.9 0 0 0 960 512c0-247.4-200.6-448-448-448S64 264.6 64 512s200.6 448 448 448c155.9 0 293.2-79.7 373.5-200.5-75.6-29.8-213.6-85-286.8-120.1-69.9 85.7-160.1 137.8-253.7 137.8-158.4 0-212.1-138.1-137.2-229 16.3-19.8 44.2-38.7 87.3-49.4 67.5-16.5 175 10.3 275.7 43.4 18.1-33.3 33.4-69.9 44.7-108.9H305.1V402h160v-56.2H271.3v-31.3h193.8v-80.1s0-13.5 13.7-13.5H557v93.6h191.7v31.3H557.1V402h156.4c-15 61.1-37.7 117.4-66.2 166.8 47.5 17.1 90.1 33.3 121.8 43.9z")), t.AmazonCircleFill = l("amazon-circle", o, c(i, "M485 467.5c-11.6 4.9-20.9 12.2-27.8 22-6.9 9.8-10.4 21.6-10.4 35.5 0 17.8 7.5 31.5 22.4 41.2 14.1 9.1 28.9 11.4 44.4 6.8 17.9-5.2 30-17.9 36.4-38.1 3-9.3 4.5-19.7 4.5-31.3v-50.2c-12.6.4-24.4 1.6-35.5 3.7-11.1 2.1-22.4 5.6-34 10.4zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm35.8 262.7c-7.2-10.9-20.1-16.4-38.7-16.4-1.3 0-3 .1-5.3.3-2.2.2-6.6 1.5-12.9 3.7a79.4 79.4 0 0 0-17.9 9.1c-5.5 3.8-11.5 10-18 18.4-6.4 8.5-11.5 18.4-15.3 29.8l-94-8.4c0-12.4 2.4-24.7 7-36.9 4.7-12.2 11.8-23.9 21.4-35 9.6-11.2 21.1-21 34.5-29.4 13.4-8.5 29.6-15.2 48.4-20.3 18.9-5.1 39.1-7.6 60.9-7.6 21.3 0 40.6 2.6 57.8 7.7 17.2 5.2 31.1 11.5 41.4 19.1a117 117 0 0 1 25.9 25.7c6.9 9.6 11.7 18.5 14.4 26.7 2.7 8.2 4 15.7 4 22.8v182.5c0 6.4 1.4 13 4.3 19.8 2.9 6.8 6.3 12.8 10.2 18 3.9 5.2 7.9 9.9 12 14.3 4.1 4.3 7.6 7.7 10.6 9.9l4.1 3.4-72.5 69.4c-8.5-7.7-16.9-15.4-25.2-23.4-8.3-8-14.5-14-18.5-18.1l-6.1-6.2c-2.4-2.3-5-5.7-8-10.2-8.1 12.2-18.5 22.8-31.1 31.8-12.7 9-26.3 15.6-40.7 19.7-14.5 4.1-29.4 6.5-44.7 7.1-15.3.6-30-1.5-43.9-6.5-13.9-5-26.5-11.7-37.6-20.3-11.1-8.6-19.9-20.2-26.5-35-6.6-14.8-9.9-31.5-9.9-50.4 0-17.4 3-33.3 8.9-47.7 6-14.5 13.6-26.5 23-36.1 9.4-9.6 20.7-18.2 34-25.7s26.4-13.4 39.2-17.7c12.8-4.2 26.6-7.8 41.5-10.7 14.9-2.9 27.6-4.8 38.2-5.7 10.6-.9 21.2-1.6 31.8-2v-39.4c0-13.5-2.3-23.5-6.7-30.1zm180.5 379.6c-2.8 3.3-7.5 7.8-14.1 13.5s-16.8 12.7-30.5 21.1c-13.7 8.4-28.8 16-45 22.9-16.3 6.9-36.3 12.9-60.1 18-23.7 5.1-48.2 7.6-73.3 7.6-25.4 0-50.7-3.2-76.1-9.6-25.4-6.4-47.6-14.3-66.8-23.7-19.1-9.4-37.6-20.2-55.1-32.2-17.6-12.1-31.7-22.9-42.4-32.5-10.6-9.6-19.6-18.7-26.8-27.1-1.7-1.9-2.8-3.6-3.2-5.1-.4-1.5-.3-2.8.3-3.7.6-.9 1.5-1.6 2.6-2.2a7.42 7.42 0 0 1 7.4.8c40.9 24.2 72.9 41.3 95.9 51.4 82.9 36.4 168 45.7 255.3 27.9 40.5-8.3 82.1-22.2 124.9-41.8 3.2-1.2 6-1.5 8.3-.9 2.3.6 3.5 2.4 3.5 5.4 0 2.8-1.6 6.3-4.8 10.2zm59.9-29c-1.8 11.1-4.9 21.6-9.1 31.8-7.2 17.1-16.3 30-27.1 38.4-3.6 2.9-6.4 3.8-8.3 2.8-1.9-1-1.9-3.5 0-7.4 4.5-9.3 9.2-21.8 14.2-37.7 5-15.8 5.7-26 2.1-30.5-1.1-1.5-2.7-2.6-5-3.6-2.2-.9-5.1-1.5-8.6-1.9s-6.7-.6-9.4-.8c-2.8-.2-6.5-.2-11.2 0-4.7.2-8 .4-10.1.6a874.4 874.4 0 0 1-17.1 1.5c-1.3.2-2.7.4-4.1.5-1.5.1-2.7.2-3.5.3l-2.7.3c-1 .1-1.7.2-2.2.2h-3.2l-1-.2-.6-.5-.5-.9c-1.3-3.3 3.7-7.4 15-12.4s22.3-8.1 32.9-9.3c9.8-1.5 21.3-1.5 34.5-.3s21.3 3.7 24.3 7.4c2.3 3.5 2.5 10.7.7 21.7z")), t.AndroidFill = l("android", o, c(i, "M270.1 741.7c0 23.4 19.1 42.5 42.6 42.5h48.7v120.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V784.1h85v120.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V784.1h48.7c23.5 0 42.6-19.1 42.6-42.5V346.4h-486v395.3zm357.1-600.1l44.9-65c2.6-3.8 2-8.9-1.5-11.4-3.5-2.4-8.5-1.2-11.1 2.6l-46.6 67.6c-30.7-12.1-64.9-18.8-100.8-18.8-35.9 0-70.1 6.7-100.8 18.8l-46.6-67.5c-2.6-3.8-7.6-5.1-11.1-2.6-3.5 2.4-4.1 7.4-1.5 11.4l44.9 65c-71.4 33.2-121.4 96.1-127.8 169.6h486c-6.6-73.6-56.7-136.5-128-169.7zM409.5 244.1a26.9 26.9 0 1 1 26.9-26.9 26.97 26.97 0 0 1-26.9 26.9zm208.4 0a26.9 26.9 0 1 1 26.9-26.9 26.97 26.97 0 0 1-26.9 26.9zm223.4 100.7c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V400.1c.1-30.6-24.3-55.3-54.6-55.3zm-658.6 0c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V400.1c0-30.6-24.5-55.3-54.6-55.3z")), t.AmazonSquareFill = l("amazon-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM547.8 326.7c-7.2-10.9-20.1-16.4-38.7-16.4-1.3 0-3 .1-5.3.3-2.2.2-6.6 1.5-12.9 3.7a79.4 79.4 0 0 0-17.9 9.1c-5.5 3.8-11.5 10-18 18.4-6.4 8.5-11.5 18.4-15.3 29.8l-94-8.4c0-12.4 2.4-24.7 7-36.9s11.8-23.9 21.4-35c9.6-11.2 21.1-21 34.5-29.4 13.4-8.5 29.6-15.2 48.4-20.3 18.9-5.1 39.1-7.6 60.9-7.6 21.3 0 40.6 2.6 57.8 7.7 17.2 5.2 31.1 11.5 41.4 19.1a117 117 0 0 1 25.9 25.7c6.9 9.6 11.7 18.5 14.4 26.7 2.7 8.2 4 15.7 4 22.8v182.5c0 6.4 1.4 13 4.3 19.8 2.9 6.8 6.3 12.8 10.2 18 3.9 5.2 7.9 9.9 12 14.3 4.1 4.3 7.6 7.7 10.6 9.9l4.1 3.4-72.5 69.4c-8.5-7.7-16.9-15.4-25.2-23.4-8.3-8-14.5-14-18.5-18.1l-6.1-6.2c-2.4-2.3-5-5.7-8-10.2-8.1 12.2-18.5 22.8-31.1 31.8-12.7 9-26.3 15.6-40.7 19.7-14.5 4.1-29.4 6.5-44.7 7.1-15.3.6-30-1.5-43.9-6.5-13.9-5-26.5-11.7-37.6-20.3-11.1-8.6-19.9-20.2-26.5-35-6.6-14.8-9.9-31.5-9.9-50.4 0-17.4 3-33.3 8.9-47.7 6-14.5 13.6-26.5 23-36.1 9.4-9.6 20.7-18.2 34-25.7s26.4-13.4 39.2-17.7c12.8-4.2 26.6-7.8 41.5-10.7 14.9-2.9 27.6-4.8 38.2-5.7 10.6-.9 21.2-1.6 31.8-2v-39.4c0-13.5-2.3-23.5-6.7-30.1zm180.5 379.6c-2.8 3.3-7.5 7.8-14.1 13.5s-16.8 12.7-30.5 21.1c-13.7 8.4-28.8 16-45 22.9-16.3 6.9-36.3 12.9-60.1 18-23.7 5.1-48.2 7.6-73.3 7.6-25.4 0-50.7-3.2-76.1-9.6-25.4-6.4-47.6-14.3-66.8-23.7-19.1-9.4-37.6-20.2-55.1-32.2-17.6-12.1-31.7-22.9-42.4-32.5-10.6-9.6-19.6-18.7-26.8-27.1-1.7-1.9-2.8-3.6-3.2-5.1-.4-1.5-.3-2.8.3-3.7.6-.9 1.5-1.6 2.6-2.2a7.42 7.42 0 0 1 7.4.8c40.9 24.2 72.9 41.3 95.9 51.4 82.9 36.4 168 45.7 255.3 27.9 40.5-8.3 82.1-22.2 124.9-41.8 3.2-1.2 6-1.5 8.3-.9 2.3.6 3.5 2.4 3.5 5.4 0 2.8-1.6 6.3-4.8 10.2zm59.9-29c-1.8 11.1-4.9 21.6-9.1 31.8-7.2 17.1-16.3 30-27.1 38.4-3.6 2.9-6.4 3.8-8.3 2.8-1.9-1-1.9-3.5 0-7.4 4.5-9.3 9.2-21.8 14.2-37.7 5-15.8 5.7-26 2.1-30.5-1.1-1.5-2.7-2.6-5-3.6-2.2-.9-5.1-1.5-8.6-1.9s-6.7-.6-9.4-.8c-2.8-.2-6.5-.2-11.2 0-4.7.2-8 .4-10.1.6a874.4 874.4 0 0 1-17.1 1.5c-1.3.2-2.7.4-4.1.5-1.5.1-2.7.2-3.5.3l-2.7.3c-1 .1-1.7.2-2.2.2h-3.2l-1-.2-.6-.5-.5-.9c-1.3-3.3 3.7-7.4 15-12.4s22.3-8.1 32.9-9.3c9.8-1.5 21.3-1.5 34.5-.3s21.3 3.7 24.3 7.4c2.3 3.5 2.5 10.7.7 21.7zM485 467.5c-11.6 4.9-20.9 12.2-27.8 22-6.9 9.8-10.4 21.6-10.4 35.5 0 17.8 7.5 31.5 22.4 41.2 14.1 9.1 28.9 11.4 44.4 6.8 17.9-5.2 30-17.9 36.4-38.1 3-9.3 4.5-19.7 4.5-31.3v-50.2c-12.6.4-24.4 1.6-35.5 3.7-11.1 2.1-22.4 5.6-34 10.4z")), t.ApiFill = l("api", o, c(i, "M917.7 148.8l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM578.9 546.7a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2c-68.9 68.9-77 175.7-24.3 253.5l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2z")), t.AppstoreFill = l("appstore", o, c(i, "M864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm0 400H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zM464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm0 400H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16z")), t.AudioFill = l("audio", o, c(i, "M512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm330-170c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1z")), t.AppleFill = l("apple", o, c(i, "M747.4 535.7c-.4-68.2 30.5-119.6 92.9-157.5-34.9-50-87.7-77.5-157.3-82.8-65.9-5.2-138 38.4-164.4 38.4-27.9 0-91.7-36.6-141.9-36.6C273.1 298.8 163 379.8 163 544.6c0 48.7 8.9 99 26.7 150.8 23.8 68.2 109.6 235.3 199.1 232.6 46.8-1.1 79.9-33.2 140.8-33.2 59.1 0 89.7 33.2 141.9 33.2 90.3-1.3 167.9-153.2 190.5-221.6-121.1-57.1-114.6-167.2-114.6-170.7zm-105.1-305c50.7-60.2 46.1-115 44.6-134.7-44.8 2.6-96.6 30.5-126.1 64.8-32.5 36.8-51.6 82.3-47.5 133.6 48.4 3.7 92.6-21.2 129-63.7z")), t.BackwardFill = l("backward", o, c(r, "M485.6 249.9L198.2 498c-8.3 7.1-8.3 20.8 0 27.9l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9zm320 0L518.2 498a18.6 18.6 0 0 0-6.2 14c0 5.2 2.1 10.4 6.2 14l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9z")), t.BankFill = l("bank", o, c(i, "M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM381 836H264V462h117v374zm189 0H453V462h117v374zm190 0H642V462h118v374z")), t.BehanceCircleFill = l("behance-circle", o, c(i, "M420.3 470.3c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1a50.5 50.5 0 0 0 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm86.5 286.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7z")), t.BellFill = l("bell", o, c(i, "M816 768h-24V428c0-141.1-104.3-257.8-240-277.2V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.8C336.3 170.2 232 286.9 232 428v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48z")), t.BehanceSquareFill = l("behance-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM598.5 350.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7zm-248.5-10.1c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1s12.7-3.8 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8z")), t.BookFill = l("book", o, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zM668 345.9L621.5 312 572 347.4V124h96v221.9z")), t.BoxPlotFill = l("box-plot", o, c(i, "M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H448v432h344c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-728 80v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h152V296H232c-4.4 0-8 3.6-8 8z")), t.BugFill = l("bug", o, c(i, "M304 280h416c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1a184.31 184.31 0 0 0-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9a184.31 184.31 0 0 0-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z", "M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8a63 63 0 0 1-63 63H232a63 63 0 0 1-63-63c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7a273 273 0 0 0 22.7 49c24.3 41.5 59 76.2 100.5 100.5 28.9 16.9 61 28.8 95.3 34.5 4.4 0 8-3.6 8-8V484c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8v464.2c0 4.4 3.6 8 8 8 34.3-5.7 66.4-17.6 95.3-34.5a281.38 281.38 0 0 0 123.2-149.5A120.4 120.4 0 0 1 836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.CalculatorFill = l("calculator", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM440.2 765h-50.8c-2.2 0-4.5-1.1-5.9-2.9L348 718.6l-35.5 43.5a7.38 7.38 0 0 1-5.9 2.9h-50.8c-6.6 0-10.2-7.9-5.8-13.1l62.7-76.8-61.2-74.9c-4.3-5.2-.7-13.1 5.9-13.1h50.9c2.2 0 4.5 1.1 5.9 2.9l34 41.6 34-41.6c1.5-1.9 3.6-2.9 5.9-2.9h50.8c6.6 0 10.2 7.9 5.9 13.1L383.5 675l62.7 76.8c4.2 5.3.6 13.2-6 13.2zm7.8-382c0 2.2-1.4 4-3.2 4H376v68.7c0 1.9-1.8 3.3-4 3.3h-48c-2.2 0-4-1.4-4-3.2V387h-68.8c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4H320v-68.8c0-1.8 1.8-3.2 4-3.2h48c2.2 0 4 1.4 4 3.2V331h68.7c1.9 0 3.3 1.8 3.3 4v48zm328 369c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48zm0-104c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48zm0-265c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48z")), t.BulbFill = l("bulb", o, c(i, "M348 676.1C250 619.4 184 513.4 184 392c0-181.1 146.9-328 328-328s328 146.9 328 328c0 121.4-66 227.4-164 284.1V792c0 17.7-14.3 32-32 32H380c-17.7 0-32-14.3-32-32V676.1zM392 888h240c4.4 0 8 3.6 8 8v32c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32v-32c0-4.4 3.6-8 8-8z")), t.BuildFill = l("build", o, c(i, "M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zM612 746H412V546h200v200zm268-268H680V278h200v200z")), t.CalendarFill = l("calendar", o, c(i, "M112 880c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V460H112v420zm768-696H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v176h800V216c0-17.7-14.3-32-32-32z")), t.CameraFill = l("camera", o, c(i, "M864 260H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 260H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V340c0-44.2-35.8-80-80-80zM512 716c-88.4 0-160-71.6-160-160s71.6-160 160-160 160 71.6 160 160-71.6 160-160 160zm-96-160a96 96 0 1 0 192 0 96 96 0 1 0-192 0z")), t.CarFill = l("car", o, c(i, "M959 413.4L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM264 621c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm388 75c0 4.4-3.6 8-8 8H380c-4.4 0-8-3.6-8-8v-84c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v36h168v-36c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v84zm108-75c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zM220 418l72.7-199.9.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220z")), t.CaretDownFill = l("caret-down", o, c(r, "M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z")), t.CaretLeftFill = l("caret-left", o, c(r, "M689 165.1L308.2 493.5c-10.9 9.4-10.9 27.5 0 37L689 858.9c14.2 12.2 35 1.2 35-18.5V183.6c0-19.7-20.8-30.7-35-18.5z")), t.CaretRightFill = l("caret-right", o, c(r, "M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z")), t.CarryOutFill = l("carry-out", o, c(i, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zM694.5 432.7L481.9 725.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.1 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.8-6.6 13-6.6H688c6.5.1 10.3 7.5 6.5 12.8z")), t.CaretUpFill = l("caret-up", o, c(r, "M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z")), t.CheckCircleFill = l("check-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z")), t.CheckSquareFill = l("check-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM695.5 365.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L308.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H689c6.5 0 10.3 7.4 6.5 12.7z")), t.ChromeFill = l("chrome", o, c(i, "M371.8 512c0 77.5 62.7 140.2 140.2 140.2S652.2 589.5 652.2 512 589.5 371.8 512 371.8 371.8 434.4 371.8 512zM900 362.4l-234.3 12.1c63.6 74.3 64.6 181.5 11.1 263.7l-188 289.2c78 4.2 158.4-12.9 231.2-55.2 180-104 253-322.1 180-509.8zM320.3 591.9L163.8 284.1A415.35 415.35 0 0 0 96 512c0 208 152.3 380.3 351.4 410.8l106.9-209.4c-96.6 18.2-189.9-34.8-234-121.5zm218.5-285.5l344.4 18.1C848 254.7 792.6 194 719.8 151.7 653.9 113.6 581.5 95.5 510.5 96c-122.5.5-242.2 55.2-322.1 154.5l128.2 196.9c32-91.9 124.8-146.7 222.2-141z")), t.CiCircleFill = l("ci-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-63.6 656c-103 0-162.4-68.6-162.4-182.6v-49C286 373.5 345.4 304 448.3 304c88.3 0 152.3 56.9 152.3 138.1 0 2.4-2 4.4-4.4 4.4h-52.6c-4.2 0-7.6-3.2-8-7.4-4-46.1-37.6-77.6-87-77.6-61.1 0-95.6 45.4-95.6 126.9v49.3c0 80.3 34.5 125.1 95.6 125.1 49.3 0 82.8-29.5 87-72.4.4-4.1 3.8-7.3 8-7.3h52.7c2.4 0 4.4 2 4.4 4.4 0 77.4-64.3 132.5-152.3 132.5zM738 704.1c0 4.4-3.6 8-8 8h-50.4c-4.4 0-8-3.6-8-8V319.9c0-4.4 3.6-8 8-8H730c4.4 0 8 3.6 8 8v384.2z")), t.ClockCircleFill = l("clock-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm176.5 585.7l-28.6 39a7.99 7.99 0 0 1-11.2 1.7L483.3 569.8a7.92 7.92 0 0 1-3.3-6.5V288c0-4.4 3.6-8 8-8h48.1c4.4 0 8 3.6 8 8v247.5l142.6 103.1c3.6 2.5 4.4 7.5 1.8 11.1z")), t.CloseCircleFill = l("close-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 0 1-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z")), t.CloudFill = l("cloud", o, c(i, "M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3z")), t.CloseSquareFill = l("close-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM676.1 657.9c4.4 5.2.7 13.1-6.1 13.1h-58.9c-4.7 0-9.2-2.1-12.3-5.7L512 561.8l-86.8 103.5c-3 3.6-7.5 5.7-12.3 5.7H354c-6.8 0-10.5-7.9-6.1-13.1L470.2 512 347.9 366.1A7.95 7.95 0 0 1 354 353h58.9c4.7 0 9.2 2.1 12.3 5.7L512 462.2l86.8-103.5c3-3.6 7.5-5.7 12.3-5.7H670c6.8 0 10.5 7.9 6.1 13.1L553.8 512l122.3 145.9z")), t.CodeSandboxSquareFill = l("code-sandbox-square", o, c(i, "M307.9 536.7l87.6 49.9V681l96.7 55.9V524.8L307.9 418.4zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM755.7 653.2L512 794 268.3 653.2V371.8l110-63.6-.4-.2h.2L512 231l134 77h-.2l-.3.2 110.1 63.6v281.4zm-223.9 83.7l97.3-56.2v-94.1l87-49.5V418.5L531.8 525zm-20-352L418 331l-91.1 52.6 185.2 107 185.2-106.9-91.4-52.8z")), t.CodeSandboxCircleFill = l("code-sandbox-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm243.7 589.2L512 794 268.3 653.2V371.8l110-63.6-.4-.2h.2L512 231l134 77h-.2l-.3.2 110.1 63.6v281.4zM307.9 536.7l87.6 49.9V681l96.7 55.9V524.8L307.9 418.4zm203.9-151.8L418 331l-91.1 52.6 185.2 107 185.2-106.9-91.4-52.8zm20 352l97.3-56.2v-94.1l87-49.5V418.5L531.8 525z")), t.CodeFill = l("code", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM513.1 518.1l-192 161c-5.2 4.4-13.1.7-13.1-6.1v-62.7c0-2.3 1.1-4.6 2.9-6.1L420.7 512l-109.8-92.2a7.63 7.63 0 0 1-2.9-6.1V351c0-6.8 7.9-10.5 13.1-6.1l192 160.9c3.9 3.2 3.9 9.1 0 12.3zM716 673c0 4.4-3.4 8-7.5 8h-185c-4.1 0-7.5-3.6-7.5-8v-48c0-4.4 3.4-8 7.5-8h185c4.1 0 7.5 3.6 7.5 8v48z")), t.CompassFill = l("compass", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM327.3 702.4c-2 .9-4.4 0-5.3-2.1-.4-1-.4-2.2 0-3.2l98.7-225.5 132.1 132.1-225.5 98.7zm375.1-375.1l-98.7 225.5-132.1-132.1L697.1 322c2-.9 4.4 0 5.3 2.1.4 1 .4 2.1 0 3.2z")), t.CodepenCircleFill = l("codepen-circle", o, c(i, "M488.1 414.7V303.4L300.9 428l83.6 55.8zm254.1 137.7v-79.8l-59.8 39.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm278 533c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-254.1 13.3v111.3L723.1 597l-83.6-55.8zM281.8 472.6v79.8l59.8-39.9zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zM723.1 428L535.9 303.4v111.3l103.6 69.1zM384.5 541.2L300.9 597l187.2 124.6V610.3l-103.6-69.1z")), t.CodepenSquareFill = l("codepen-square", o, c(i, "M723.1 428L535.9 303.4v111.3l103.6 69.1zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zm23.9 154.2v111.3L723.1 597l-83.6-55.8zm-151.4-69.1L300.9 597l187.2 124.6V610.3l-103.6-69.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-90 485c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-47.8-44.6v-79.8l-59.8 39.9zm-460.4-79.8v79.8l59.8-39.9zm206.3-57.9V303.4L300.9 428l83.6 55.8z")), t.ContactsFill = l("contacts", o, c(i, "M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zM661 736h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.6-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H363a8 8 0 0 1-8-8.4c2.8-53.3 32-99.7 74.6-126.1a111.8 111.8 0 0 1-29.1-75.5c0-61.9 49.9-112 111.4-112 61.5 0 111.4 50.1 111.4 112 0 29.1-11 55.5-29.1 75.5 42.7 26.5 71.8 72.8 74.6 126.1.4 4.6-3.2 8.4-7.8 8.4zM512 474c-28.5 0-51.7 23.3-51.7 52s23.2 52 51.7 52c28.5 0 51.7-23.3 51.7-52s-23.2-52-51.7-52z")), t.ControlFill = l("control", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM404 683v77c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-77c-41.7-13.6-72-52.8-72-99s30.3-85.5 72-99V264c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v221c41.7 13.6 72 52.8 72 99s-30.3 85.5-72 99zm279.6-143.9c.2 0 .3-.1.4-.1v221c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V539c.2 0 .3.1.4.1-42-13.4-72.4-52.7-72.4-99.1 0-46.4 30.4-85.7 72.4-99.1-.2 0-.3.1-.4.1v-77c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v77c-.2 0-.3-.1-.4-.1 42 13.4 72.4 52.7 72.4 99.1 0 46.4-30.4 85.7-72.4 99.1zM616 440a36 36 0 1 0 72 0 36 36 0 1 0-72 0zM403.4 566.5l-1.5-2.4c0-.1-.1-.1-.1-.2l-.9-1.2c-.1-.1-.2-.2-.2-.3-1-1.3-2-2.5-3.2-3.6l-.2-.2c-.4-.4-.8-.8-1.2-1.1-.8-.8-1.7-1.5-2.6-2.1h-.1l-1.2-.9c-.1-.1-.3-.2-.4-.3-1.2-.8-2.5-1.6-3.9-2.2-.2-.1-.5-.2-.7-.4-.4-.2-.7-.3-1.1-.5-.3-.1-.7-.3-1-.4-.5-.2-1-.4-1.5-.5-.4-.1-.9-.3-1.3-.4l-.9-.3-1.4-.3c-.2-.1-.5-.1-.7-.2-.7-.1-1.4-.3-2.1-.4-.2 0-.4 0-.6-.1-.6-.1-1.1-.1-1.7-.2-.2 0-.4 0-.7-.1-.8 0-1.5-.1-2.3-.1s-1.5 0-2.3.1c-.2 0-.4 0-.7.1-.6 0-1.2.1-1.7.2-.2 0-.4 0-.6.1-.7.1-1.4.2-2.1.4-.2.1-.5.1-.7.2l-1.4.3-.9.3c-.4.1-.9.3-1.3.4-.5.2-1 .4-1.5.5-.3.1-.7.3-1 .4-.4.2-.7.3-1.1.5-.2.1-.5.2-.7.4-1.3.7-2.6 1.4-3.9 2.2-.1.1-.3.2-.4.3l-1.2.9h-.1c-.9.7-1.8 1.4-2.6 2.1-.4.4-.8.7-1.2 1.1l-.2.2a54.8 54.8 0 0 0-3.2 3.6c-.1.1-.2.2-.2.3l-.9 1.2c0 .1-.1.1-.1.2l-1.5 2.4c-.1.2-.2.3-.3.5-2.7 5.1-4.3 10.9-4.3 17s1.6 12 4.3 17c.1.2.2.3.3.5l1.5 2.4c0 .1.1.1.1.2l.9 1.2c.1.1.2.2.2.3 1 1.3 2 2.5 3.2 3.6l.2.2c.4.4.8.8 1.2 1.1.8.8 1.7 1.5 2.6 2.1h.1l1.2.9c.1.1.3.2.4.3 1.2.8 2.5 1.6 3.9 2.2.2.1.5.2.7.4.4.2.7.3 1.1.5.3.1.7.3 1 .4.5.2 1 .4 1.5.5.4.1.9.3 1.3.4l.9.3 1.4.3c.2.1.5.1.7.2.7.1 1.4.3 2.1.4.2 0 .4 0 .6.1.6.1 1.1.1 1.7.2.2 0 .4 0 .7.1.8 0 1.5.1 2.3.1s1.5 0 2.3-.1c.2 0 .4 0 .7-.1.6 0 1.2-.1 1.7-.2.2 0 .4 0 .6-.1.7-.1 1.4-.2 2.1-.4.2-.1.5-.1.7-.2l1.4-.3.9-.3c.4-.1.9-.3 1.3-.4.5-.2 1-.4 1.5-.5.3-.1.7-.3 1-.4.4-.2.7-.3 1.1-.5.2-.1.5-.2.7-.4 1.3-.7 2.6-1.4 3.9-2.2.1-.1.3-.2.4-.3l1.2-.9h.1c.9-.7 1.8-1.4 2.6-2.1.4-.4.8-.7 1.2-1.1l.2-.2c1.1-1.1 2.2-2.4 3.2-3.6.1-.1.2-.2.2-.3l.9-1.2c0-.1.1-.1.1-.2l1.5-2.4c.1-.2.2-.3.3-.5 2.7-5.1 4.3-10.9 4.3-17s-1.6-12-4.3-17c-.1-.2-.2-.4-.3-.5z")), t.ContainerFill = l("container", o, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v529c0-.6.4-1 1-1h219.3l5.2 24.7C397.6 708.5 450.8 752 512 752s114.4-43.5 126.4-103.3l5.2-24.7H863c.6 0 1 .4 1 1V96c0-17.7-14.3-32-32-32zM712 493c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48zm0-160c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48zm151 354H694.1c-11.6 32.8-32 62.3-59.1 84.7-34.5 28.6-78.2 44.3-123 44.3s-88.5-15.8-123-44.3a194.02 194.02 0 0 1-59.1-84.7H161c-.6 0-1-.4-1-1v242c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V686c0 .6-.4 1-1 1z")), t.CopyFill = l("copy", o, c(i, "M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM382 896h-.2L232 746.2v-.2h150v150z")), t.CopyrightCircleFill = l("copyright-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm5.4 670c-110 0-173.4-73.2-173.4-194.9v-52.3C344 364.2 407.4 290 517.3 290c94.3 0 162.7 60.7 162.7 147.4 0 2.6-2.1 4.7-4.7 4.7h-56.7c-4.2 0-7.6-3.2-8-7.4-4-49.5-40-83.4-93-83.4-65.3 0-102.1 48.5-102.1 135.5v52.6c0 85.7 36.9 133.6 102.1 133.6 52.8 0 88.7-31.7 93-77.8.4-4.1 3.8-7.3 8-7.3h56.8c2.6 0 4.7 2.1 4.7 4.7 0 82.6-68.7 141.4-162.7 141.4z")), t.CreditCardFill = l("credit-card", o, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v160h896V192c0-17.7-14.3-32-32-32zM64 832c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V440H64v392zm579-184c0-4.4 3.6-8 8-8h165c4.4 0 8 3.6 8 8v72c0 4.4-3.6 8-8 8H651c-4.4 0-8-3.6-8-8v-72z")), t.CrownFill = l("crown", o, c(i, "M899.6 276.5L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.7-3.5-13.1 1.2-12.2 7.9L188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.8-6.7-6.5-11.4-12.3-7.9zM512 734.2c-62.1 0-112.6-50.5-112.6-112.6S449.9 509 512 509s112.6 50.5 112.6 112.6S574.1 734.2 512 734.2zm0-160.9c-26.6 0-48.2 21.6-48.2 48.3 0 26.6 21.6 48.3 48.2 48.3s48.2-21.6 48.2-48.3c0-26.6-21.6-48.3-48.2-48.3z")), t.CustomerServiceFill = l("customer-service", o, c(i, "M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384z")), t.DashboardFill = l("dashboard", o, c(i, "M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM482 232c0-4.4 3.6-8 8-8h44c4.4 0 8 3.6 8 8v80c0 4.4-3.6 8-8 8h-44c-4.4 0-8-3.6-8-8v-80zM270 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44zm90.7-204.5l-31.1 31.1a8.03 8.03 0 0 1-11.3 0L261.7 352a8.03 8.03 0 0 1 0-11.3l31.1-31.1c3.1-3.1 8.2-3.1 11.3 0l56.6 56.6c3.1 3.1 3.1 8.2 0 11.3zm291.1 83.6l-84.5 84.5c5 18.7.2 39.4-14.5 54.1a55.95 55.95 0 0 1-79.2 0 55.95 55.95 0 0 1 0-79.2 55.87 55.87 0 0 1 54.1-14.5l84.5-84.5c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3c3.1 3.1 3.1 8.1 0 11.3zm43-52.4l-31.1-31.1a8.03 8.03 0 0 1 0-11.3l56.6-56.6c3.1-3.1 8.2-3.1 11.3 0l31.1 31.1c3.1 3.1 3.1 8.2 0 11.3l-56.6 56.6a8.03 8.03 0 0 1-11.3 0zM846 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44z")), t.DeleteFill = l("delete", o, c(i, "M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-200 0H360v-72h304v72z")), t.DiffFill = l("diff", o, c(i, "M854.2 306.6L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23zM553.4 201.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM568 753c0 3.8-3.4 7-7.5 7h-225c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7h225c4.1 0 7.5 3.2 7.5 7v42zm0-220c0 3.8-3.4 7-7.5 7H476v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V540h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H420v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1V484h84.5c4.1 0 7.5 3.1 7.5 7v42z")), t.DingtalkCircleFill = l("dingtalk-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm227 385.3c-1 4.2-3.5 10.4-7 17.8h.1l-.4.7c-20.3 43.1-73.1 127.7-73.1 127.7s-.1-.2-.3-.5l-15.5 26.8h74.5L575.1 810l32.3-128h-58.6l20.4-84.7c-16.5 3.9-35.9 9.4-59 16.8 0 0-31.2 18.2-89.9-35 0 0-39.6-34.7-16.6-43.4 9.8-3.7 47.4-8.4 77-12.3 40-5.4 64.6-8.2 64.6-8.2S422 517 392.7 512.5c-29.3-4.6-66.4-53.1-74.3-95.8 0 0-12.2-23.4 26.3-12.3 38.5 11.1 197.9 43.2 197.9 43.2s-207.4-63.3-221.2-78.7c-13.8-15.4-40.6-84.2-37.1-126.5 0 0 1.5-10.5 12.4-7.7 0 0 153.3 69.7 258.1 107.9 104.8 37.9 195.9 57.3 184.2 106.7z")), t.DatabaseFill = l("database", o, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v224h704V96c0-17.7-14.3-32-32-32zM288 232c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zM160 928c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V704H160v224zm128-136c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM160 640h704V384H160v256zm128-168c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z")), t.DingtalkSquareFill = l("dingtalk-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM739 449.3c-1 4.2-3.5 10.4-7 17.8h.1l-.4.7c-20.3 43.1-73.1 127.7-73.1 127.7s-.1-.2-.3-.5l-15.5 26.8h74.5L575.1 810l32.3-128h-58.6l20.4-84.7c-16.5 3.9-35.9 9.4-59 16.8 0 0-31.2 18.2-89.9-35 0 0-39.6-34.7-16.6-43.4 9.8-3.7 47.4-8.4 77-12.3 40-5.4 64.6-8.2 64.6-8.2S422 517 392.7 512.5c-29.3-4.6-66.4-53.1-74.3-95.8 0 0-12.2-23.4 26.3-12.3 38.5 11.1 197.9 43.2 197.9 43.2s-207.4-63.3-221.2-78.7c-13.8-15.4-40.6-84.2-37.1-126.5 0 0 1.5-10.5 12.4-7.7 0 0 153.3 69.7 258.1 107.9 104.8 37.9 195.9 57.3 184.2 106.7z")), t.DislikeFill = l("dislike", o, c(i, "M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H273v428h.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM112 132v364c0 17.7 14.3 32 32 32h65V100h-65c-17.7 0-32 14.3-32 32z")), t.DollarCircleFill = l("dollar-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm22.3 665.2l.2 31.7c0 4.4-3.6 8.1-8 8.1h-28.4c-4.4 0-8-3.6-8-8v-31.4C401.3 723 359.5 672.4 355 617.4c-.4-4.7 3.3-8.7 8-8.7h46.2c3.9 0 7.3 2.8 7.9 6.6 5.1 31.7 29.8 55.4 74.1 61.3V533.9l-24.7-6.3c-52.3-12.5-102.1-45.1-102.1-112.7 0-72.9 55.4-112.1 126.2-119v-33c0-4.4 3.6-8 8-8h28.1c4.4 0 8 3.6 8 8v32.7c68.5 6.9 119.9 46.9 125.9 109.2.5 4.7-3.2 8.8-8 8.8h-44.9c-4 0-7.4-3-7.9-6.9-4-29.2-27.4-53-65.5-58.2v134.3l25.4 5.9c64.8 16 108.9 47 108.9 116.4 0 75.3-56 117.3-134.3 124.1zM426.6 410.3c0 25.4 15.7 45.1 49.5 57.3 4.7 1.9 9.4 3.4 15 5v-124c-36.9 4.7-64.5 25.4-64.5 61.7zm116.5 135.2c-2.8-.6-5.6-1.3-8.8-2.2V677c42.6-3.8 72-27.2 72-66.4 0-30.7-15.9-50.7-63.2-65.1z")), t.DownCircleFill = l("down-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm184.5 353.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7H381c10.2 0 19.9 4.9 25.9 13.2L512 563.6l105.2-145.4c6-8.3 15.6-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.5 12.7z")), t.DownSquareFill = l("down-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM696.5 412.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7H381c10.2 0 19.9 4.9 25.9 13.2L512 558.6l105.2-145.4c6-8.3 15.6-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.5 12.7z")), t.DribbbleCircleFill = l("dribbble-circle", o, c(i, "M675.1 328.3a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6zm47.7-11.9c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 736c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm53.1-346.2c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm30.6 82.5c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4z")), t.DribbbleSquareFill = l("dribbble-square", o, c(i, "M498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm66.5 21.8c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM512 800c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm89.7-259.1c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zm-72.5-26.4c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4zm145.9-186.2a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6z")), t.DropboxCircleFill = l("dropbox-circle", o, c(i, "M663.8 455.5zm-151.5-93.8l-151.8 93.8 151.8 93.9 151.5-93.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm151.2 595.5L512.6 750l-151-90.5v-33.1l45.4 29.4 105.6-87.7 105.6 87.7 45.1-29.4v33.1zm-45.6-22.4l-105.3-87.7L407 637.1l-151-99.2 104.5-82.4L256 371.2 407 274l105.3 87.7L617.6 274 768 372.1l-104.2 83.5L768 539l-150.4 98.1z")), t.DropboxSquareFill = l("dropbox-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM663.2 659.5L512.6 750l-151-90.5v-33.1l45.4 29.4 105.6-87.7 105.6 87.7 45.1-29.4v33.1zm-45.6-22.4l-105.3-87.7L407 637.1l-151-99.2 104.5-82.4L256 371.2 407 274l105.3 87.7L617.6 274 768 372.1l-104.2 83.5L768 539l-150.4 98.1zM512.3 361.7l-151.8 93.8 151.8 93.9 151.5-93.9zm151.5 93.8z")), t.EnvironmentFill = l("environment", o, c(i, "M512 327c-29.9 0-58 11.6-79.2 32.8A111.6 111.6 0 0 0 400 439c0 29.9 11.7 58 32.8 79.2A111.6 111.6 0 0 0 512 551c29.9 0 58-11.7 79.2-32.8C612.4 497 624 468.9 624 439c0-29.9-11.6-58-32.8-79.2S541.9 327 512 327zm342.6-37.9a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 615c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z")), t.EditFill = l("edit", o, c(i, "M880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32zm-622.3-84c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9z")), t.ExclamationCircleFill = l("exclamation-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.EuroCircleFill = l("euro-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm63.5 375.8c4.4 0 8 3.6 8 8V475c0 4.4-3.6 8-8 8h-136c-.3 4.4-.3 9.1-.3 13.8v36h136.2c4.4 0 8 3.6 8 8V568c0 4.4-3.6 8-8 8H444.9c15.3 62 61.3 98.6 129.8 98.6 19.9 0 37.1-1.2 51.8-4.1 4.9-1 9.5 2.8 9.5 7.8v42.8c0 3.8-2.7 7-6.4 7.8-15.9 3.4-34.3 5.1-55.3 5.1-109.8 0-183-58.8-200.2-158H344c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h26.1v-36.9c0-4.4 0-8.8.3-12.8H344c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h31.7c19.7-94.2 92-149.9 198.6-149.9 20.9 0 39.4 1.9 55.3 5.4 3.7.8 6.3 4 6.3 7.8V346h.1c0 5.1-4.6 8.8-9.6 7.8-14.7-2.9-31.8-4.4-51.7-4.4-65.4 0-110.4 33.5-127.6 90.4h128.4z")), t.ExperimentFill = l("experiment", o, c(i, "M218.9 636.3l42.6 26.6c.1.1.3.2.4.3l12.7 8 .3.3a186.9 186.9 0 0 0 94.1 25.1c44.9 0 87.2-15.7 121-43.8a256.27 256.27 0 0 1 164.9-59.9c52.3 0 102.2 15.7 144.6 44.5l7.9 5-111.6-289V179.8h63.5c4.4 0 8-3.6 8-8V120c0-4.4-3.6-8-8-8H264.7c-4.4 0-8 3.6-8 8v51.9c0 4.4 3.6 8 8 8h63.5v173.6L218.9 636.3zm333-203.1c22 0 39.9 17.9 39.9 39.9S573.9 513 551.9 513 512 495.1 512 473.1s17.9-39.9 39.9-39.9zM878 825.1l-29.9-77.4-85.7-53.5-.1.1c-.7-.5-1.5-1-2.2-1.5l-8.1-5-.3-.3c-29-17.5-62.3-26.8-97-26.8-44.9 0-87.2 15.7-121 43.8a256.27 256.27 0 0 1-164.9 59.9c-53 0-103.5-16.1-146.2-45.6l-28.9-18.1L146 825.1c-2.8 7.4-4.3 15.2-4.3 23 0 35.2 28.6 63.8 63.8 63.8h612.9c7.9 0 15.7-1.5 23-4.3a63.6 63.6 0 0 0 36.6-82.5z")), t.EyeInvisibleFill = l("eye-invisible", o, c(i, "M508 624a112 112 0 0 0 112-112c0-3.28-.15-6.53-.43-9.74L498.26 623.57c3.21.28 6.45.43 9.74.43zm370.72-458.44L836 122.88a8 8 0 0 0-11.31 0L715.37 232.23Q624.91 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q56.7 119.43 136.55 191.45L112.56 835a8 8 0 0 0 0 11.31L155.25 889a8 8 0 0 0 11.31 0l712.16-712.12a8 8 0 0 0 0-11.32zM332 512a176 176 0 0 1 258.88-155.28l-48.62 48.62a112.08 112.08 0 0 0-140.92 140.92l-48.62 48.62A175.09 175.09 0 0 1 332 512z", "M942.2 486.2Q889.4 375 816.51 304.85L672.37 449A176.08 176.08 0 0 1 445 676.37L322.74 798.63Q407.82 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5z")), t.EyeFill = l("eye", o, c(i, "M396 512a112 112 0 1 0 224 0 112 112 0 1 0-224 0zm546.2-25.8C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM508 688c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z")), t.FacebookFill = l("facebook", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-92.4 233.5h-63.9c-50.1 0-59.8 23.8-59.8 58.8v77.1h119.6l-15.6 120.7h-104V912H539.2V602.2H434.9V481.4h104.3v-89c0-103.3 63.1-159.6 155.3-159.6 44.2 0 82.1 3.3 93.2 4.8v107.9z")), t.FastBackwardFill = l("fast-backward", o, c(r, "M517.6 273.5L230.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm320 0L550.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm-620-25.5h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z")), t.FastForwardFill = l("fast-forward", o, c(r, "M793.8 499.3L506.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.6c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8a16.14 16.14 0 0 0 0-25.4zm-320 0L186.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.5c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8c4.1-3.2 6.2-8 6.2-12.7 0-4.6-2.1-9.4-6.2-12.6zM857.6 248h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z")), t.FileAddFill = l("file-add", o, c(i, "M480 580H372a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h108v108a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8V644h108a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H544V472a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v108zm374.6-291.3c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2z")), t.FileExcelFill = l("file-excel", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM575.34 477.84l-61.22 102.3L452.3 477.8a12 12 0 0 0-10.27-5.79h-38.44a12 12 0 0 0-6.4 1.85 12 12 0 0 0-3.75 16.56l82.34 130.42-83.45 132.78a12 12 0 0 0-1.84 6.39 12 12 0 0 0 12 12h34.46a12 12 0 0 0 10.21-5.7l62.7-101.47 62.3 101.45a12 12 0 0 0 10.23 5.72h37.48a12 12 0 0 0 6.48-1.9 12 12 0 0 0 3.62-16.58l-83.83-130.55 85.3-132.47a12 12 0 0 0 1.9-6.5 12 12 0 0 0-12-12h-35.7a12 12 0 0 0-10.29 5.84z")), t.FileExclamationFill = l("file-exclamation", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM512 784a40 40 0 1 0 0-80 40 40 0 0 0 0 80zm32-152V448a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v184a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8z")), t.FileImageFill = l("file-image", o, c(i, "M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM400 402c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm296 294H328c-6.7 0-10.4-7.7-6.3-12.9l99.8-127.2a8 8 0 0 1 12.6 0l41.1 52.4 77.8-99.2a8 8 0 0 1 12.6 0l136.5 174c4.3 5.2.5 12.9-6.1 12.9zm-94-370V137.8L790.2 326H602z")), t.FileMarkdownFill = l("file-markdown", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM426.13 600.93l59.11 132.97a16 16 0 0 0 14.62 9.5h24.06a16 16 0 0 0 14.63-9.51l59.1-133.35V758a16 16 0 0 0 16.01 16H641a16 16 0 0 0 16-16V486a16 16 0 0 0-16-16h-34.75a16 16 0 0 0-14.67 9.62L512.1 662.2l-79.48-182.59a16 16 0 0 0-14.67-9.61H383a16 16 0 0 0-16 16v272a16 16 0 0 0 16 16h27.13a16 16 0 0 0 16-16V600.93z")), t.FilePdfFill = l("file-pdf", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM633.22 637.26c-15.18-.5-31.32.67-49.65 2.96-24.3-14.99-40.66-35.58-52.28-65.83l1.07-4.38 1.24-5.18c4.3-18.13 6.61-31.36 7.3-44.7.52-10.07-.04-19.36-1.83-27.97-3.3-18.59-16.45-29.46-33.02-30.13-15.45-.63-29.65 8-33.28 21.37-5.91 21.62-2.45 50.07 10.08 98.59-15.96 38.05-37.05 82.66-51.2 107.54-18.89 9.74-33.6 18.6-45.96 28.42-16.3 12.97-26.48 26.3-29.28 40.3-1.36 6.49.69 14.97 5.36 21.92 5.3 7.88 13.28 13 22.85 13.74 24.15 1.87 53.83-23.03 86.6-79.26 3.29-1.1 6.77-2.26 11.02-3.7l11.9-4.02c7.53-2.54 12.99-4.36 18.39-6.11 23.4-7.62 41.1-12.43 57.2-15.17 27.98 14.98 60.32 24.8 82.1 24.8 17.98 0 30.13-9.32 34.52-23.99 3.85-12.88.8-27.82-7.48-36.08-8.56-8.41-24.3-12.43-45.65-13.12zM385.23 765.68v-.36l.13-.34a54.86 54.86 0 0 1 5.6-10.76c4.28-6.58 10.17-13.5 17.47-20.87 3.92-3.95 8-7.8 12.79-12.12 1.07-.96 7.91-7.05 9.19-8.25l11.17-10.4-8.12 12.93c-12.32 19.64-23.46 33.78-33 43-3.51 3.4-6.6 5.9-9.1 7.51a16.43 16.43 0 0 1-2.61 1.42c-.41.17-.77.27-1.13.3a2.2 2.2 0 0 1-1.12-.15 2.07 2.07 0 0 1-1.27-1.91zM511.17 547.4l-2.26 4-1.4-4.38c-3.1-9.83-5.38-24.64-6.01-38-.72-15.2.49-24.32 5.29-24.32 6.74 0 9.83 10.8 10.07 27.05.22 14.28-2.03 29.14-5.7 35.65zm-5.81 58.46l1.53-4.05 2.09 3.8c11.69 21.24 26.86 38.96 43.54 51.31l3.6 2.66-4.39.9c-16.33 3.38-31.54 8.46-52.34 16.85 2.17-.88-21.62 8.86-27.64 11.17l-5.25 2.01 2.8-4.88c12.35-21.5 23.76-47.32 36.05-79.77zm157.62 76.26c-7.86 3.1-24.78.33-54.57-12.39l-7.56-3.22 8.2-.6c23.3-1.73 39.8-.45 49.42 3.07 4.1 1.5 6.83 3.39 8.04 5.55a4.64 4.64 0 0 1-1.36 6.31 6.7 6.7 0 0 1-2.17 1.28z")), t.FilePptFill = l("file-ppt", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM468.53 760v-91.54h59.27c60.57 0 100.2-39.65 100.2-98.12 0-58.22-39.58-98.34-99.98-98.34H424a12 12 0 0 0-12 12v276a12 12 0 0 0 12 12h32.53a12 12 0 0 0 12-12zm0-139.33h34.9c47.82 0 67.19-12.93 67.19-50.33 0-32.05-18.12-50.12-49.87-50.12h-52.22v100.45z")), t.FileTextFill = l("file-text", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM320 482a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h384a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H320zm0 136a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h184a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H320z")), t.FileWordFill = l("file-word", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM512 566.1l52.81 197a12 12 0 0 0 11.6 8.9h31.77a12 12 0 0 0 11.6-8.88l74.37-276a12 12 0 0 0 .4-3.12 12 12 0 0 0-12-12h-35.57a12 12 0 0 0-11.7 9.31l-45.78 199.1-49.76-199.32A12 12 0 0 0 528.1 472h-32.2a12 12 0 0 0-11.64 9.1L434.6 680.01 388.5 481.3a12 12 0 0 0-11.68-9.29h-35.39a12 12 0 0 0-3.11.41 12 12 0 0 0-8.47 14.7l74.17 276A12 12 0 0 0 415.6 772h31.99a12 12 0 0 0 11.59-8.9l52.81-197z")), t.FileUnknownFill = l("file-unknown", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM402 549c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103zm110 227a32 32 0 1 0 0-64 32 32 0 0 0 0 64z")), t.FileZipFill = l("file-zip", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM296 136v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm0 64v160h128V584H296zm48 48h32v64h-32v-64z")), t.FileFill = l("file", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2z")), t.FilterFill = l("filter", o, c(i, "M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z")), t.FireFill = l("fire", o, c(i, "M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9z")), t.FlagFill = l("flag", o, c(i, "M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32z")), t.FolderAddFill = l("folder-add", o, c(i, "M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM632 577c0 3.8-3.4 7-7.5 7H540v84.9c0 3.9-3.2 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V584h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7H484v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.8 0 7 3.2 7 7.1V528h84.5c4.1 0 7.5 3.2 7.5 7v42z")), t.FolderFill = l("folder", o, c(i, "M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32z")), t.FolderOpenFill = l("folder-open", o, c(i, "M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zm-180 0H238c-13 0-24.8 7.9-29.7 20L136 643.2V256h188.5l119.6 114.4H748V444z")), t.ForwardFill = l("forward", o, c(r, "M825.8 498L538.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L825.8 526c8.3-7.2 8.3-20.8 0-28zm-320 0L218.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L505.8 526c4.1-3.6 6.2-8.8 6.2-14 0-5.2-2.1-10.4-6.2-14z")), t.FrownFill = l("frown", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm376 272h-48.1c-4.2 0-7.8-3.2-8.1-7.4C604 636.1 562.5 597 512 597s-92.1 39.1-95.8 88.6c-.3 4.2-3.9 7.4-8.1 7.4H360a8 8 0 0 1-8-8.4c4.4-84.3 74.5-151.6 160-151.6s155.6 67.3 160 151.6a8 8 0 0 1-8 8.4zm24-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.FundFill = l("fund", o, c(i, "M926 164H94c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V196c0-17.7-14.3-32-32-32zm-92.3 194.4l-297 297.2a8.03 8.03 0 0 1-11.3 0L410.9 541.1 238.4 713.7a8.03 8.03 0 0 1-11.3 0l-36.8-36.8a8.03 8.03 0 0 1 0-11.3l214.9-215c3.1-3.1 8.2-3.1 11.3 0L531 565l254.5-254.6c3.1-3.1 8.2-3.1 11.3 0l36.8 36.8c3.2 3 3.2 8.1.1 11.2z")), t.FunnelPlotFill = l("funnel-plot", o, c(i, "M336.7 586h350.6l84.9-148H251.8zm543.4-432H143.9c-24.5 0-39.8 26.7-27.5 48L215 374h594l98.7-172c12.2-21.3-3.1-48-27.6-48zM349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V650H349v188z")), t.GiftFill = l("gift", o, c(i, "M160 894c0 17.7 14.3 32 32 32h286V550H160v344zm386 32h286c17.7 0 32-14.3 32-32V550H546v376zm334-616H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v140h366V310h68v172h366V342c0-17.7-14.3-32-32-32zm-402-4h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70 70 31.4 70 70v70zm138 0h-70v-70c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70z")), t.GithubFill = l("github", o, c(i, "M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9a127.5 127.5 0 0 1 38.1 91v112.5c.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z")), t.GitlabFill = l("gitlab", o, c(i, "M910.5 553.2l-109-370.8c-6.8-20.4-23.1-34.1-44.9-34.1s-39.5 12.3-46.3 32.7l-72.2 215.4H386.2L314 181.1c-6.8-20.4-24.5-32.7-46.3-32.7s-39.5 13.6-44.9 34.1L113.9 553.2c-4.1 13.6 1.4 28.6 12.3 36.8l385.4 289 386.7-289c10.8-8.1 16.3-23.1 12.2-36.8z")), t.GoldenFill = l("golden", o, c(i, "M905.9 806.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zm-470.2-248c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8z")), t.GoogleCircleFill = l("google-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm167 633.6C638.4 735 583 757 516.9 757c-95.7 0-178.5-54.9-218.8-134.9C281.5 589 272 551.6 272 512s9.5-77 26.1-110.1c40.3-80.1 123.1-135 218.8-135 66 0 121.4 24.3 163.9 63.8L610.6 401c-25.4-24.3-57.7-36.6-93.6-36.6-63.8 0-117.8 43.1-137.1 101-4.9 14.7-7.7 30.4-7.7 46.6s2.8 31.9 7.7 46.6c19.3 57.9 73.3 101 137 101 33 0 61-8.7 82.9-23.4 26-17.4 43.2-43.3 48.9-74H516.9v-94.8h230.7c2.9 16.1 4.4 32.8 4.4 50.1 0 74.7-26.7 137.4-73 180.1z")), t.GooglePlusCircleFill = l("google-plus-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm36.5 558.8c-43.9 61.8-132.1 79.8-200.9 53.3-69-26.3-118-99.2-112.1-173.5 1.5-90.9 85.2-170.6 176.1-167.5 43.6-2 84.6 16.9 118 43.6-14.3 16.2-29 31.8-44.8 46.3-40.1-27.7-97.2-35.6-137.3-3.6-57.4 39.7-60 133.4-4.8 176.1 53.7 48.7 155.2 24.5 170.1-50.1-33.6-.5-67.4 0-101-1.1-.1-20.1-.2-40.1-.1-60.2 56.2-.2 112.5-.3 168.8.2 3.3 47.3-3 97.5-32 136.5zM791 536.5c-16.8.2-33.6.3-50.4.4-.2 16.8-.3 33.6-.3 50.4H690c-.2-16.8-.2-33.5-.3-50.3-16.8-.2-33.6-.3-50.4-.5v-50.1c16.8-.2 33.6-.3 50.4-.3.1-16.8.3-33.6.4-50.4h50.2l.3 50.4c16.8.2 33.6.2 50.4.3v50.1z")), t.GooglePlusSquareFill = l("google-plus-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM548.5 622.8c-43.9 61.8-132.1 79.8-200.9 53.3-69-26.3-118-99.2-112.1-173.5 1.5-90.9 85.2-170.6 176.1-167.5 43.6-2 84.6 16.9 118 43.6-14.3 16.2-29 31.8-44.8 46.3-40.1-27.7-97.2-35.6-137.3-3.6-57.4 39.7-60 133.4-4.8 176.1 53.7 48.7 155.2 24.5 170.1-50.1-33.6-.5-67.4 0-101-1.1-.1-20.1-.2-40.1-.1-60.2 56.2-.2 112.5-.3 168.8.2 3.3 47.3-3 97.5-32 136.5zM791 536.5c-16.8.2-33.6.3-50.4.4-.2 16.8-.3 33.6-.3 50.4H690c-.2-16.8-.2-33.5-.3-50.3-16.8-.2-33.6-.3-50.4-.5v-50.1c16.8-.2 33.6-.3 50.4-.3.1-16.8.3-33.6.4-50.4h50.2l.3 50.4c16.8.2 33.6.2 50.4.3v50.1z")), t.GoogleSquareFill = l("google-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM679 697.6C638.4 735 583 757 516.9 757c-95.7 0-178.5-54.9-218.8-134.9A245.02 245.02 0 0 1 272 512c0-39.6 9.5-77 26.1-110.1 40.3-80.1 123.1-135 218.8-135 66 0 121.4 24.3 163.9 63.8L610.6 401c-25.4-24.3-57.7-36.6-93.6-36.6-63.8 0-117.8 43.1-137.1 101-4.9 14.7-7.7 30.4-7.7 46.6s2.8 31.9 7.7 46.6c19.3 57.9 73.3 101 137 101 33 0 61-8.7 82.9-23.4 26-17.4 43.2-43.3 48.9-74H516.9v-94.8h230.7c2.9 16.1 4.4 32.8 4.4 50.1 0 74.7-26.7 137.4-73 180.1z")), t.HddFill = l("hdd", o, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v224h704V96c0-17.7-14.3-32-32-32zM456 216c0 4.4-3.6 8-8 8H264c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zM160 928c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V704H160v224zm576-136c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM160 640h704V384H160v256zm96-152c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H264c-4.4 0-8-3.6-8-8v-48z")), t.HeartFill = l("heart", o, c(i, "M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9z")), t.HighlightFill = l("highlight", o, c(i, "M957.6 507.4L603.2 158.2a7.9 7.9 0 0 0-11.2 0L353.3 393.4a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8V860c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6 40.4 39.8a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2z")), t.HomeFill = l("home", o, c(i, "M946.5 505L534.6 93.4a31.93 31.93 0 0 0-45.2 0L77.5 505c-12 12-18.8 28.3-18.8 45.3 0 35.3 28.7 64 64 64h43.4V908c0 17.7 14.3 32 32 32H448V716h112v224h265.9c17.7 0 32-14.3 32-32V614.3h43.4c17 0 33.3-6.7 45.3-18.8 24.9-25 24.9-65.5-.1-90.5z")), t.HourglassFill = l("hourglass", o, c(i, "M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194z")), t.Html5Fill = l("html5", o, c(i, "M145.2 96l66 746.6L512 928l299.6-85.4L878.9 96H145.2zm595 177.1l-4.8 47.2-1.7 19.5H382.3l8.2 94.2h335.1l-3.3 24.3-21.2 242.2-1.7 16.2-187 51.6v.3h-1.2l-.3.1v-.1h-.1l-188.6-52L310.8 572h91.1l6.5 73.2 102.4 27.7h.4l102-27.6 11.4-118.6H510.9v-.1H306l-22.8-253.5-1.7-24.3h460.3l-1.6 24.3z")), t.IdcardFill = l("idcard", o, c(i, "M373 411c-28.5 0-51.7 23.3-51.7 52s23.2 52 51.7 52 51.7-23.3 51.7-52-23.2-52-51.7-52zm555-251H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zM608 420c0-4.4 1-8 2.3-8h123.4c1.3 0 2.3 3.6 2.3 8v48c0 4.4-1 8-2.3 8H610.3c-1.3 0-2.3-3.6-2.3-8v-48zm-86 253h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H224a8 8 0 0 1-8-8.4c2.8-53.3 32-99.7 74.6-126.1a111.8 111.8 0 0 1-29.1-75.5c0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.5-29.1 75.5 42.7 26.5 71.8 72.8 74.6 126.1.4 4.6-3.2 8.4-7.8 8.4zm278.9-53H615.1c-3.9 0-7.1-3.6-7.1-8v-48c0-4.4 3.2-8 7.1-8h185.7c3.9 0 7.1 3.6 7.1 8v48h.1c0 4.4-3.2 8-7.1 8z")), t.IeCircleFill = l("ie-circle", o, c(i, "M693.6 284.4c-24 0-51.1 11.7-72.6 22 46.3 18 86 57.3 112.3 99.6 7.1-18.9 14.6-47.9 14.6-67.9 0-32-22.8-53.7-54.3-53.7zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm253.9 492.9H437.1c0 100.4 144.3 136 196.8 47.4h120.8c-32.6 91.7-119.7 146-216.8 146-35.1 0-70.3-.1-101.7-15.6-87.4 44.5-180.3 56.6-180.3-42 0-45.8 23.2-107.1 44-145C335 484 381.3 422.8 435.6 374.5c-43.7 18.9-91.1 66.3-122 101.2 25.9-112.8 129.5-193.6 237.1-186.5 130-59.8 209.7-34.1 209.7 38.6 0 27.4-10.6 63.3-21.4 87.9 25.2 45.5 33.3 97.6 26.9 141.2zM540.5 399.1c-53.7 0-102 39.7-104 94.9h208c-2-55.1-50.6-94.9-104-94.9zM320.6 602.9c-73 152.4 11.5 172.2 100.3 123.3-46.6-27.5-82.6-72.2-100.3-123.3z")), t.IeSquareFill = l("ie-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM765.9 556.9H437.1c0 100.4 144.3 136 196.8 47.4h120.8c-32.6 91.7-119.7 146-216.8 146-35.1 0-70.3-.1-101.7-15.6-87.4 44.5-180.3 56.6-180.3-42 0-45.8 23.2-107.1 44-145C335 484 381.3 422.8 435.6 374.5c-43.7 18.9-91.1 66.3-122 101.2 25.9-112.8 129.5-193.6 237.1-186.5 130-59.8 209.7-34.1 209.7 38.6 0 27.4-10.6 63.3-21.4 87.9 25.2 45.5 33.3 97.6 26.9 141.2zm-72.3-272.5c-24 0-51.1 11.7-72.6 22 46.3 18 86 57.3 112.3 99.6 7.1-18.9 14.6-47.9 14.6-67.9 0-32-22.8-53.7-54.3-53.7zM540.5 399.1c-53.7 0-102 39.7-104 94.9h208c-2-55.1-50.6-94.9-104-94.9zM320.6 602.9c-73 152.4 11.5 172.2 100.3 123.3-46.6-27.5-82.6-72.2-100.3-123.3z")), t.InfoCircleFill = l("info-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.InstagramFill = l("instagram", o, c(i, "M512 378.7c-73.4 0-133.3 59.9-133.3 133.3S438.6 645.3 512 645.3 645.3 585.4 645.3 512 585.4 378.7 512 378.7zM911.8 512c0-55.2.5-109.9-2.6-165-3.1-64-17.7-120.8-64.5-167.6-46.9-46.9-103.6-61.4-167.6-64.5-55.2-3.1-109.9-2.6-165-2.6-55.2 0-109.9-.5-165 2.6-64 3.1-120.8 17.7-167.6 64.5C132.6 226.3 118.1 283 115 347c-3.1 55.2-2.6 109.9-2.6 165s-.5 109.9 2.6 165c3.1 64 17.7 120.8 64.5 167.6 46.9 46.9 103.6 61.4 167.6 64.5 55.2 3.1 109.9 2.6 165 2.6 55.2 0 109.9.5 165-2.6 64-3.1 120.8-17.7 167.6-64.5 46.9-46.9 61.4-103.6 64.5-167.6 3.2-55.1 2.6-109.8 2.6-165zM512 717.1c-113.5 0-205.1-91.6-205.1-205.1S398.5 306.9 512 306.9 717.1 398.5 717.1 512 625.5 717.1 512 717.1zm213.5-370.7c-26.5 0-47.9-21.4-47.9-47.9s21.4-47.9 47.9-47.9 47.9 21.4 47.9 47.9a47.84 47.84 0 0 1-47.9 47.9z")), t.InsuranceFill = l("insurance", o, c(i, "M519.9 358.8h97.9v41.6h-97.9zm347-188.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM411.3 656h-.2c0 4.4-3.6 8-8 8h-37.3c-4.4 0-8-3.6-8-8V471.4c-7.7 9.2-15.4 17.9-23.1 26a6.04 6.04 0 0 1-10.2-2.4l-13.2-43.5c-.6-2-.2-4.1 1.2-5.6 37-43.4 64.7-95.1 82.2-153.6 1.1-3.5 5-5.3 8.4-3.7l38.6 18.3c2.7 1.3 4.1 4.4 3.2 7.2a429.2 429.2 0 0 1-33.6 79V656zm296.5-49.2l-26.3 35.3a5.92 5.92 0 0 1-8.9.7c-30.6-29.3-56.8-65.2-78.1-106.9V656c0 4.4-3.6 8-8 8h-36.2c-4.4 0-8-3.6-8-8V536c-22 44.7-49 80.8-80.6 107.6a5.9 5.9 0 0 1-8.9-1.4L430 605.7a6 6 0 0 1 1.6-8.1c28.6-20.3 51.9-45.2 71-76h-55.1c-4.4 0-8-3.6-8-8V478c0-4.4 3.6-8 8-8h94.9v-18.6h-65.9c-4.4 0-8-3.6-8-8V316c0-4.4 3.6-8 8-8h184.7c4.4 0 8 3.6 8 8v127.2c0 4.4-3.6 8-8 8h-66.7v18.6h98.8c4.4 0 8 3.6 8 8v35.6c0 4.4-3.6 8-8 8h-59c18.1 29.1 41.8 54.3 72.3 76.9 2.6 2.1 3.2 5.9 1.2 8.5z")), t.InteractionFill = l("interaction", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM726 585.7c0 55.3-44.7 100.1-99.7 100.1H420.6v53.4c0 5.7-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.7l109.1-85.7c4.4-3.5 10.9-.3 10.9 5.3v53.4h205.7c19.6 0 35.5-16 35.5-35.6v-78.9c0-3.7 3-6.8 6.8-6.8h50.7c3.7 0 6.8 3 6.8 6.8v79.1zm-2.6-209.9l-109.1 85.7c-4.4 3.5-10.9.3-10.9-5.3v-53.4H397.7c-19.6 0-35.5 16-35.5 35.6v78.9c0 3.7-3 6.8-6.8 6.8h-50.7c-3.7 0-6.8-3-6.8-6.8v-78.9c0-55.3 44.7-100.1 99.7-100.1h205.7v-53.4c0-5.7 6.5-8.8 10.9-5.3l109.1 85.7c3.6 2.5 3.6 7.8.1 10.5z")), t.InterationFill = l("interation", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM726 585.7c0 55.3-44.7 100.1-99.7 100.1H420.6v53.4c0 5.7-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.7l109.1-85.7c4.4-3.5 10.9-.3 10.9 5.3v53.4h205.7c19.6 0 35.5-16 35.5-35.6v-78.9c0-3.7 3-6.8 6.8-6.8h50.7c3.7 0 6.8 3 6.8 6.8v79.1zm-2.6-209.9l-109.1 85.7c-4.4 3.5-10.9.3-10.9-5.3v-53.4H397.7c-19.6 0-35.5 16-35.5 35.6v78.9c0 3.7-3 6.8-6.8 6.8h-50.7c-3.7 0-6.8-3-6.8-6.8v-78.9c0-55.3 44.7-100.1 99.7-100.1h205.7v-53.4c0-5.7 6.5-8.8 10.9-5.3l109.1 85.7c3.6 2.5 3.6 7.8.1 10.5z")), t.LayoutFill = l("layout", o, c(i, "M384 912h496c17.7 0 32-14.3 32-32V340H384v572zm496-800H384v164h528V144c0-17.7-14.3-32-32-32zm-768 32v736c0 17.7 14.3 32 32 32h176V112H144c-17.7 0-32 14.3-32 32z")), t.LeftCircleFill = l("left-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm104 316.9c0 10.2-4.9 19.9-13.2 25.9L457.4 512l145.4 105.2c8.3 6 13.2 15.6 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178a8 8 0 0 1 12.7 6.5v46.8z")), t.LeftSquareFill = l("left-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM624 380.9c0 10.2-4.9 19.9-13.2 25.9L465.4 512l145.4 105.2c8.3 6 13.2 15.6 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178c5.3-3.8 12.7 0 12.7 6.5v46.8z")), t.LikeFill = l("like", o, c(i, "M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 0 0-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 0 0 471 99.9c-52 0-98 35-111.8 85.1l-85.9 311h-.3v428h472.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM112 528v364c0 17.7 14.3 32 32 32h65V496h-65c-17.7 0-32 14.3-32 32z")), t.LockFill = l("lock", o, c(i, "M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM540 701v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 1 1 56 0zm152-237H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224z")), t.LinkedinFill = l("linkedin", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM349.3 793.7H230.6V411.9h118.7v381.8zm-59.3-434a68.8 68.8 0 1 1 68.8-68.8c-.1 38-30.9 68.8-68.8 68.8zm503.7 434H675.1V608c0-44.3-.8-101.2-61.7-101.2-61.7 0-71.2 48.2-71.2 98v188.9H423.7V411.9h113.8v52.2h1.6c15.8-30 54.5-61.7 112.3-61.7 120.2 0 142.3 79.1 142.3 181.9v209.4z")), t.MailFill = l("mail", o, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-80.8 108.9L531.7 514.4c-7.8 6.1-18.7 6.1-26.5 0L189.6 268.9A7.2 7.2 0 0 1 194 256h648.8a7.2 7.2 0 0 1 4.4 12.9z")), t.MedicineBoxFill = l("medicine-box", o, c(i, "M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM660 628c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V636H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V464c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8v48zm4-372H360v-72h304v72z")), t.MediumCircleFill = l("medium-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm256 253.7l-40.8 39.1c-3.6 2.7-5.3 7.1-4.6 11.4v287.7c-.7 4.4 1 8.8 4.6 11.4l40 39.1v8.7H566.4v-8.3l41.3-40.1c4.1-4.1 4.1-5.3 4.1-11.4V422.5l-115 291.6h-15.5L347.5 422.5V618c-1.2 8.2 1.7 16.5 7.5 22.4l53.8 65.1v8.7H256v-8.7l53.8-65.1a26.1 26.1 0 0 0 7-22.4V392c.7-6.3-1.7-12.4-6.5-16.7l-47.8-57.6V309H411l114.6 251.5 100.9-251.3H768v8.5z")), t.MediumSquareFill = l("medium-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM768 317.7l-40.8 39.1c-3.6 2.7-5.3 7.1-4.6 11.4v287.7c-.7 4.4 1 8.8 4.6 11.4l40 39.1v8.7H566.4v-8.3l41.3-40.1c4.1-4.1 4.1-5.3 4.1-11.4V422.5l-115 291.6h-15.5L347.5 422.5V618c-1.2 8.2 1.7 16.5 7.5 22.4l53.8 65.1v8.7H256v-8.7l53.8-65.1a26.1 26.1 0 0 0 7-22.4V392c.7-6.3-1.7-12.4-6.5-16.7l-47.8-57.6V309H411l114.6 251.5 100.9-251.3H768v8.5z")), t.MehFill = l("meh", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm384 200c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v48zm16-152a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.MessageFill = l("message", o, c(i, "M924.3 338.4a447.57 447.57 0 0 0-96.1-143.3 443.09 443.09 0 0 0-143-96.3A443.91 443.91 0 0 0 512 64h-2c-60.5.3-119 12.3-174.1 35.9a444.08 444.08 0 0 0-141.7 96.5 445 445 0 0 0-95 142.8A449.89 449.89 0 0 0 65 514.1c.3 69.4 16.9 138.3 47.9 199.9v152c0 25.4 20.6 46 45.9 46h151.8a447.72 447.72 0 0 0 199.5 48h2.1c59.8 0 117.7-11.6 172.3-34.3A443.2 443.2 0 0 0 827 830.5c41.2-40.9 73.6-88.7 96.3-142 23.5-55.2 35.5-113.9 35.8-174.5.2-60.9-11.6-120-34.8-175.6zM312.4 560c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.4 48-47.9 48zm199.6 0c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.5 48-47.9 48zm199.6 0c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.5 48-47.9 48z")), t.MinusCircleFill = l("minus-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z")), t.MinusSquareFill = l("minus-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM704 536c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z")), t.MobileFill = l("mobile", o, c(i, "M744 62H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V126c0-35.3-28.7-64-64-64zM512 824c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z")), t.MoneyCollectFill = l("money-collect", o, c(i, "M911.5 699.7a8 8 0 0 0-10.3-4.8L840 717.2V179c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V762c0 3.3 2.1 6.3 5.3 7.5L501 909.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zm-243.8-377L564 514.3h57.6c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3v39h76.3c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3V703c0 4.4-3.6 8-8 8h-49.9c-4.4 0-8-3.6-8-8v-63.4h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h76v-39h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h57L356.5 322.8c-2.1-3.8-.7-8.7 3.2-10.8 1.2-.7 2.5-1 3.8-1h55.7a8 8 0 0 1 7.1 4.4L511 484.2h3.3L599 315.4c1.3-2.7 4.1-4.4 7.1-4.4h54.5c4.4 0 8 3.6 8.1 7.9 0 1.3-.4 2.6-1 3.8z")), t.PauseCircleFill = l("pause-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-80 600c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z")), t.PayCircleFill = l("pay-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm166.6 246.8L567.5 515.6h62c4.4 0 8 3.6 8 8v29.9c0 4.4-3.6 8-8 8h-82V603h82c4.4 0 8 3.6 8 8v29.9c0 4.4-3.6 8-8 8h-82V717c0 4.4-3.6 8-8 8h-54.3c-4.4 0-8-3.6-8-8v-68.1h-81.7c-4.4 0-8-3.6-8-8V611c0-4.4 3.6-8 8-8h81.7v-41.5h-81.7c-4.4 0-8-3.6-8-8v-29.9c0-4.4 3.6-8 8-8h61.4L345.4 310.8a8.07 8.07 0 0 1 7-11.9h60.7c3 0 5.8 1.7 7.1 4.4l90.6 180h3.4l90.6-180a8 8 0 0 1 7.1-4.4h59.5c4.4 0 8 3.6 8 8 .2 1.4-.2 2.7-.8 3.9z")), t.NotificationFill = l("notification", o, c(i, "M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.6c-3.7 11.6-5.6 23.9-5.6 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1z")), t.PhoneFill = l("phone", o, c(i, "M885.6 230.2L779.1 123.8a80.83 80.83 0 0 0-57.3-23.8c-21.7 0-42.1 8.5-57.4 23.8L549.8 238.4a80.83 80.83 0 0 0-23.8 57.3c0 21.7 8.5 42.1 23.8 57.4l83.8 83.8A393.82 393.82 0 0 1 553.1 553 395.34 395.34 0 0 1 437 633.8L353.2 550a80.83 80.83 0 0 0-57.3-23.8c-21.7 0-42.1 8.5-57.4 23.8L123.8 664.5a80.89 80.89 0 0 0-23.8 57.4c0 21.7 8.5 42.1 23.8 57.4l106.3 106.3c24.4 24.5 58.1 38.4 92.7 38.4 7.3 0 14.3-.6 21.2-1.8 134.8-22.2 268.5-93.9 376.4-201.7C828.2 612.8 899.8 479.2 922.3 344c6.8-41.3-6.9-83.8-36.7-113.8z")), t.PictureFill = l("picture", o, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zM338 304c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm513.9 437.1a8.11 8.11 0 0 1-5.2 1.9H177.2c-4.4 0-8-3.6-8-8 0-1.9.7-3.7 1.9-5.2l170.3-202c2.8-3.4 7.9-3.8 11.3-1 .3.3.7.6 1 1l99.4 118 158.1-187.5c2.8-3.4 7.9-3.8 11.3-1 .3.3.7.6 1 1l229.6 271.6c2.6 3.3 2.2 8.4-1.2 11.2z")), t.PieChartFill = l("pie-chart", o, c(i, "M863.1 518.5H505.5V160.9c0-4.4-3.6-8-8-8h-26a398.57 398.57 0 0 0-282.5 117 397.47 397.47 0 0 0-85.6 127C82.6 446.2 72 498.5 72 552.5S82.6 658.7 103.4 708c20.1 47.5 48.9 90.3 85.6 127 36.7 36.7 79.4 65.5 127 85.6a396.64 396.64 0 0 0 155.6 31.5 398.57 398.57 0 0 0 282.5-117c36.7-36.7 65.5-79.4 85.6-127a396.64 396.64 0 0 0 31.5-155.6v-26c-.1-4.4-3.7-8-8.1-8zM951 463l-2.6-28.2c-8.5-92-49.3-178.8-115.1-244.3A398.5 398.5 0 0 0 588.4 75.6L560.1 73c-4.7-.4-8.7 3.2-8.7 7.9v383.7c0 4.4 3.6 8 8 8l383.6-1c4.7-.1 8.4-4 8-8.6z")), t.PlayCircleFill = l("play-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm144.1 454.9L437.7 677.8a8.02 8.02 0 0 1-12.7-6.5V353.7a8 8 0 0 1 12.7-6.5L656.1 506a7.9 7.9 0 0 1 0 12.9z")), t.PlaySquareFill = l("play-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM641.7 520.8L442.3 677.6c-7.4 5.8-18.3.6-18.3-8.8V355.3c0-9.4 10.9-14.7 18.3-8.8l199.4 156.7a11.2 11.2 0 0 1 0 17.6z")), t.PlusCircleFill = l("plus-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z")), t.PlusSquareFill = l("plus-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM704 536c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z")), t.PoundCircleFill = l("pound-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm146 658c0 4.4-3.6 8-8 8H376.2c-4.4 0-8-3.6-8-8v-38.5c0-3.7 2.5-6.9 6.1-7.8 44-10.9 72.8-49 72.8-94.2 0-14.7-2.5-29.4-5.9-44.2H374c-4.4 0-8-3.6-8-8v-30c0-4.4 3.6-8 8-8h53.7c-7.8-25.1-14.6-50.7-14.6-77.1 0-75.8 58.6-120.3 151.5-120.3 26.5 0 51.4 5.5 70.3 12.7 3.1 1.2 5.2 4.2 5.2 7.5v39.5a8 8 0 0 1-10.6 7.6c-17.9-6.4-39-10.5-60.4-10.5-53.3 0-87.3 26.6-87.3 70.2 0 24.7 6.2 47.9 13.4 70.5h112c4.4 0 8 3.6 8 8v30c0 4.4-3.6 8-8 8h-98.6c3.1 13.2 5.3 26.9 5.3 41 0 40.7-16.5 73.9-43.9 91.1v4.7h180c4.4 0 8 3.6 8 8V722z")), t.PrinterFill = l("printer", o, c(i, "M732 120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v148h440V120zm120 212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM664 844H360V568h304v276zm164-360c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v40z")), t.ProfileFill = l("profile", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM380 696c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm0-144c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm0-144c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm304 272c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-144c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-144c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48z")), t.ProjectFill = l("project", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM368 744c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v464zm192-280c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v184zm192 72c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v256z")), t.PushpinFill = l("pushpin", o, c(i, "M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3-15.4 12.3-16.6 35.4-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8z")), t.PropertySafetyFill = l("property-safety", o, c(i, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM648.3 332.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V658c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3 73.2-144.3a10 10 0 0 1 8.9-5.5h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8z")), t.QqCircleFill = l("qq-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm210.5 612.4c-11.5 1.4-44.9-52.7-44.9-52.7 0 31.3-16.2 72.2-51.1 101.8 16.9 5.2 54.9 19.2 45.9 34.4-7.3 12.3-125.6 7.9-159.8 4-34.2 3.8-152.5 8.3-159.8-4-9.1-15.2 28.9-29.2 45.8-34.4-35-29.5-51.1-70.4-51.1-101.8 0 0-33.4 54.1-44.9 52.7-5.4-.7-12.4-29.6 9.4-99.7 10.3-33 22-60.5 40.2-105.8-3.1-116.9 45.3-215 160.4-215 113.9 0 163.3 96.1 160.4 215 18.1 45.2 29.9 72.8 40.2 105.8 21.7 70.1 14.6 99.1 9.3 99.7z")), t.QqSquareFill = l("qq-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM722.5 676.4c-11.5 1.4-44.9-52.7-44.9-52.7 0 31.3-16.2 72.2-51.1 101.8 16.9 5.2 54.9 19.2 45.9 34.4-7.3 12.3-125.6 7.9-159.8 4-34.2 3.8-152.5 8.3-159.8-4-9.1-15.2 28.9-29.2 45.8-34.4-35-29.5-51.1-70.4-51.1-101.8 0 0-33.4 54.1-44.9 52.7-5.4-.7-12.4-29.6 9.4-99.7 10.3-33 22-60.5 40.2-105.8-3.1-116.9 45.3-215 160.4-215 113.9 0 163.3 96.1 160.4 215 18.1 45.2 29.9 72.8 40.2 105.8 21.7 70.1 14.6 99.1 9.3 99.7z")), t.QuestionCircleFill = l("question-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 708c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm62.9-219.5a48.3 48.3 0 0 0-30.9 44.8V620c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-21.5c0-23.1 6.7-45.9 19.9-64.9 12.9-18.6 30.9-32.8 52.1-40.9 34-13.1 56-41.6 56-72.7 0-44.1-43.1-80-96-80s-96 35.9-96 80v7.6c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V420c0-39.3 17.2-76 48.4-103.3C430.4 290.4 470 276 512 276s81.6 14.5 111.6 40.7C654.8 344 672 380.7 672 420c0 57.8-38.1 109.8-97.1 132.5z")), t.ReadFill = l("read", o, c(i, "M928 161H699.2c-49.1 0-97.1 14.1-138.4 40.7L512 233l-48.8-31.3A255.2 255.2 0 0 0 324.8 161H96c-17.7 0-32 14.3-32 32v568c0 17.7 14.3 32 32 32h228.8c49.1 0 97.1 14.1 138.4 40.7l44.4 28.6c1.3.8 2.8 1.3 4.3 1.3s3-.4 4.3-1.3l44.4-28.6C602 807.1 650.1 793 699.2 793H928c17.7 0 32-14.3 32-32V193c0-17.7-14.3-32-32-32zM404 553.5c0 4.1-3.2 7.5-7.1 7.5H211.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm0-140c0 4.1-3.2 7.5-7.1 7.5H211.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm416 140c0 4.1-3.2 7.5-7.1 7.5H627.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm0-140c0 4.1-3.2 7.5-7.1 7.5H627.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45z")), t.ReconciliationFill = l("reconciliation", o, c(i, "M676 623c-18.8 0-34 15.2-34 34s15.2 34 34 34 34-15.2 34-34-15.2-34-34-34zm204-455H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zM448 848H176V616h272v232zm0-296H176v-88h272v88zm20-272v-48h72v-56h64v56h72v48H468zm180 168v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8zm28 301c-50.8 0-92-41.2-92-92s41.2-92 92-92 92 41.2 92 92-41.2 92-92 92zm92-245c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v96zm-92 61c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34z")), t.RedEnvelopeFill = l("red-envelope", o, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zM647 470.4l-87.2 161h45.9c4.6 0 8.4 3.8 8.4 8.4v25.1c0 4.6-3.8 8.4-8.4 8.4h-63.3v28.6h63.3c4.6 0 8.4 3.8 8.4 8.4v25c.2 4.6-3.6 8.5-8.2 8.5h-63.3v49.9c0 4.6-3.8 8.4-8.4 8.4h-43.7c-4.6 0-8.4-3.8-8.4-8.4v-49.9h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h63v-28.6h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h45.4l-87.5-161c-2.2-4.1-.7-9.1 3.4-11.4 1.3-.6 2.6-1 3.9-1h48.8c3.2 0 6.1 1.8 7.5 4.6l71.9 141.8 71.9-141.9a8.5 8.5 0 0 1 7.5-4.6h47.8c4.6 0 8.4 3.8 8.4 8.4-.1 1.5-.5 2.9-1.1 4.1zM512.6 323L289 148h446L512.6 323z")), t.RedditCircleFill = l("reddit-circle", o, c(i, "M584 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0zm144-108a35.9 35.9 0 0 0-32.5 20.6c18.8 14.3 34.4 30.7 45.9 48.8A35.98 35.98 0 0 0 728 440zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm245 477.9c4.6 13.5 7 27.6 7 42.1 0 99.4-112.8 180-252 180s-252-80.6-252-180c0-14.5 2.4-28.6 7-42.1A72.01 72.01 0 0 1 296 404c27.1 0 50.6 14.9 62.9 37 36.2-19.8 80.2-32.8 128.1-36.1l58.4-131.1c4.3-9.8 15.2-14.8 25.5-11.8l91.6 26.5a54.03 54.03 0 0 1 101.6 25.6c0 29.8-24.2 54-54 54-23.5 0-43.5-15.1-50.9-36.1L577 308.3l-43 96.5c49.1 3 94.2 16.1 131.2 36.3 12.3-22.1 35.8-37 62.9-37 39.8 0 72 32.2 72 72-.1 29.3-17.8 54.6-43.1 65.8zm-171.3 83c-14.9 11.7-44.3 24.3-73.7 24.3s-58.9-12.6-73.7-24.3c-9.3-7.3-22.7-5.7-30 3.6-7.3 9.3-5.7 22.7 3.6 30 25.7 20.4 65 33.5 100.1 33.5 35.1 0 74.4-13.1 100.2-33.5 9.3-7.3 10.9-20.8 3.6-30a21.46 21.46 0 0 0-30.1-3.6zM296 440a35.98 35.98 0 0 0-13.4 69.4c11.5-18.1 27.1-34.5 45.9-48.8A35.9 35.9 0 0 0 296 440zm72 108a36 36 0 1 0 72 0 36 36 0 1 0-72 0z")), t.RedditSquareFill = l("reddit-square", o, c(i, "M296 440a35.98 35.98 0 0 0-13.4 69.4c11.5-18.1 27.1-34.5 45.9-48.8A35.9 35.9 0 0 0 296 440zm289.7 184.9c-14.9 11.7-44.3 24.3-73.7 24.3s-58.9-12.6-73.7-24.3c-9.3-7.3-22.7-5.7-30 3.6-7.3 9.3-5.7 22.7 3.6 30 25.7 20.4 65 33.5 100.1 33.5 35.1 0 74.4-13.1 100.2-33.5 9.3-7.3 10.9-20.8 3.6-30a21.46 21.46 0 0 0-30.1-3.6zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM757 541.9c4.6 13.5 7 27.6 7 42.1 0 99.4-112.8 180-252 180s-252-80.6-252-180c0-14.5 2.4-28.6 7-42.1A72.01 72.01 0 0 1 296 404c27.1 0 50.6 14.9 62.9 37 36.2-19.8 80.2-32.8 128.1-36.1l58.4-131.1c4.3-9.8 15.2-14.8 25.5-11.8l91.6 26.5a54.03 54.03 0 0 1 101.6 25.6c0 29.8-24.2 54-54 54-23.5 0-43.5-15.1-50.9-36.1L577 308.3l-43 96.5c49.1 3 94.2 16.1 131.2 36.3 12.3-22.1 35.8-37 62.9-37 39.8 0 72 32.2 72 72-.1 29.3-17.8 54.6-43.1 65.8zM584 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0zm144-108a35.9 35.9 0 0 0-32.5 20.6c18.8 14.3 34.4 30.7 45.9 48.8A35.98 35.98 0 0 0 728 440zM368 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0z")), t.RestFill = l("rest", o, c(i, "M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zM508 704c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144zM291 256l22.4-76h397.2l22.4 76H291zm137 304a80 80 0 1 0 160 0 80 80 0 1 0-160 0z")), t.RightCircleFill = l("right-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm154.7 454.5l-246 178c-5.3 3.8-12.7 0-12.7-6.5v-46.9c0-10.2 4.9-19.9 13.2-25.9L566.6 512 421.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.8 0 13z")), t.RocketFill = l("rocket", o, c(i, "M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8L864 736zM512 352a48.01 48.01 0 0 1 0 96 48.01 48.01 0 0 1 0-96zm116.1 432.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5s-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5z")), t.RightSquareFill = l("right-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM658.7 518.5l-246 178c-5.3 3.8-12.7 0-12.7-6.5v-46.9c0-10.2 4.9-19.9 13.2-25.9L558.6 512 413.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.8 0 13z")), t.SafetyCertificateFill = l("safety-certificate", o, c(i, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM694.5 340.7L481.9 633.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.1 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.8-6.6 13-6.6H688c6.5.1 10.3 7.5 6.5 12.8z")), t.SaveFill = l("save", o, c(i, "M893.3 293.3L730.7 130.7c-12-12-28.3-18.7-45.3-18.7H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 176h256v112H384V176zm128 554c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144zm0-224c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80z")), t.ScheduleFill = l("schedule", o, c(i, "M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zM424 688c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-136c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm374.5-91.3l-165 228.7a15.9 15.9 0 0 1-25.8 0L493.5 531.2c-3.8-5.3 0-12.7 6.5-12.7h54.9c5.1 0 9.9 2.5 12.9 6.6l52.8 73.1 103.7-143.7c3-4.2 7.8-6.6 12.9-6.6H792c6.5.1 10.3 7.5 6.5 12.8z")), t.SecurityScanFill = l("security-scan", o, c(i, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM626.8 554c-48.5 48.5-123 55.2-178.6 20.1l-77.5 77.5a8.03 8.03 0 0 1-11.3 0l-34-34a8.03 8.03 0 0 1 0-11.3l77.5-77.5c-35.1-55.7-28.4-130.1 20.1-178.6 56.3-56.3 147.5-56.3 203.8 0 56.3 56.3 56.3 147.5 0 203.8zm-158.54-45.27a80.1 80.1 0 1 0 113.27-113.28 80.1 80.1 0 1 0-113.27 113.28z")), t.SettingFill = l("setting", o, c(i, "M512.5 390.6c-29.9 0-57.9 11.6-79.1 32.8-21.1 21.2-32.8 49.2-32.8 79.1 0 29.9 11.7 57.9 32.8 79.1 21.2 21.1 49.2 32.8 79.1 32.8 29.9 0 57.9-11.7 79.1-32.8 21.1-21.2 32.8-49.2 32.8-79.1 0-29.9-11.7-57.9-32.8-79.1a110.96 110.96 0 0 0-79.1-32.8zm412.3 235.5l-65.4-55.9c3.1-19 4.7-38.4 4.7-57.7s-1.6-38.8-4.7-57.7l65.4-55.9a32.03 32.03 0 0 0 9.3-35.2l-.9-2.6a442.5 442.5 0 0 0-79.6-137.7l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.2 28.9c-30-24.6-63.4-44-99.6-57.5l-15.7-84.9a32.05 32.05 0 0 0-25.8-25.7l-2.7-.5c-52-9.4-106.8-9.4-158.8 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.3a353.44 353.44 0 0 0-98.9 57.3l-81.8-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a445.93 445.93 0 0 0-79.6 137.7l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.2 56.5c-3.1 18.8-4.6 38-4.6 57 0 19.2 1.5 38.4 4.6 57l-66 56.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.3 44.8 96.8 79.6 137.7l1.8 2.1a32.12 32.12 0 0 0 35.1 9.5l81.8-29.1c29.8 24.5 63 43.9 98.9 57.3l15.8 85.3a32.05 32.05 0 0 0 25.8 25.7l2.7.5a448.27 448.27 0 0 0 158.8 0l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-84.9c36.2-13.6 69.6-32.9 99.6-57.5l81.2 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.5-87.4 79.6-137.7l.9-2.6c4.3-12.4.6-26.3-9.5-35zm-412.3 52.2c-97.1 0-175.8-78.7-175.8-175.8s78.7-175.8 175.8-175.8 175.8 78.7 175.8 175.8-78.7 175.8-175.8 175.8z")), t.ShopFill = l("shop", o, c(i, "M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h274V736h128v176h274c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zm-72 568H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 3-1.3 6-2.6 9-4v242.2zm0-568.1H214v-88h596v88z")), t.ShoppingFill = l("shopping", o, c(i, "M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-208 0H400v-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16z")), t.SketchCircleFill = l("sketch-circle", o, c(i, "M582.3 625.6l147.9-166.3h-63.4zm90-202.3h62.5l-92.1-115.1zm-274.7 36L512 684.5l114.4-225.2zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm286.7 380.2L515.8 762.3c-1 1.1-2.4 1.7-3.8 1.7s-2.8-.6-3.8-1.7L225.3 444.2a5.14 5.14 0 0 1-.2-6.6L365.6 262c1-1.2 2.4-1.9 4-1.9h284.6c1.6 0 3 .7 4 1.9l140.5 175.6a4.9 4.9 0 0 1 0 6.6zm-190.5-20.9L512 326.1l-96.2 97.2zM420.3 301.1l-23.1 89.8 88.8-89.8zm183.4 0H538l88.8 89.8zm-222.4 7.1l-92.1 115.1h62.5zm-87.5 151.1l147.9 166.3-84.5-166.3z")), t.SketchSquareFill = l("sketch-square", o, c(i, "M608.2 423.3L512 326.1l-96.2 97.2zm-25.9 202.3l147.9-166.3h-63.4zm90-202.3h62.5l-92.1-115.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-81.3 332.2L515.8 762.3c-1 1.1-2.4 1.7-3.8 1.7s-2.8-.6-3.8-1.7L225.3 444.2a5.14 5.14 0 0 1-.2-6.6L365.6 262c1-1.2 2.4-1.9 4-1.9h284.6c1.6 0 3 .7 4 1.9l140.5 175.6a4.9 4.9 0 0 1 0 6.6zm-401.1 15.1L512 684.5l114.4-225.2zm-16.3-151.1l-92.1 115.1h62.5zm-87.5 151.1l147.9 166.3-84.5-166.3zm126.5-158.2l-23.1 89.8 88.8-89.8zm183.4 0H538l88.8 89.8z")), t.SkinFill = l("skin", o, c(i, "M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44z")), t.SlackCircleFill = l("slack-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4a50.35 50.35 0 0 1 50.3 50.4v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm83.7-50.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM579.3 765c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134c-13.3 0-26.1-5.3-35.6-14.8S529 593.6 529 580.2c0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z")), t.SlackSquareFill = l("slack-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM529 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4a50.35 50.35 0 0 1 50.3 50.4v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm134 403.2c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z")), t.SkypeFill = l("skype", o, c(i, "M883.7 578.6c4.1-22.5 6.3-45.5 6.3-68.5 0-51-10-100.5-29.7-147-19-45-46.3-85.4-81-120.1a375.79 375.79 0 0 0-120.1-80.9c-46.6-19.7-96-29.7-147-29.7-24 0-48.1 2.3-71.5 6.8A225.1 225.1 0 0 0 335.6 113c-59.7 0-115.9 23.3-158.1 65.5A222.25 222.25 0 0 0 112 336.6c0 38 9.8 75.4 28.1 108.4-3.7 21.4-5.7 43.3-5.7 65.1 0 51 10 100.5 29.7 147 19 45 46.2 85.4 80.9 120.1 34.7 34.7 75.1 61.9 120.1 80.9 46.6 19.7 96 29.7 147 29.7 22.2 0 44.4-2 66.2-5.9 33.5 18.9 71.3 29 110 29 59.7 0 115.9-23.2 158.1-65.5 42.3-42.2 65.5-98.4 65.5-158.1.1-38-9.7-75.5-28.2-108.7zm-370 162.9c-134.2 0-194.2-66-194.2-115.4 0-25.4 18.7-43.1 44.5-43.1 57.4 0 42.6 82.5 149.7 82.5 54.9 0 85.2-29.8 85.2-60.3 0-18.3-9-38.7-45.2-47.6l-119.4-29.8c-96.1-24.1-113.6-76.1-113.6-124.9 0-101.4 95.5-139.5 185.2-139.5 82.6 0 180 45.7 180 106.5 0 26.1-22.6 41.2-48.4 41.2-49 0-40-67.8-138.7-67.8-49 0-76.1 22.2-76.1 53.9s38.7 41.8 72.3 49.5l88.4 19.6c96.8 21.6 121.3 78.1 121.3 131.3 0 82.3-63.3 143.9-191 143.9z")), t.SlidersFill = l("sliders", o, c(i, "M904 296h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-584-72h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm292 180h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8z")), t.SmileFill = l("smile", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm224 272c-85.5 0-155.6-67.3-160-151.6a8 8 0 0 1 8-8.4h48.1c4.2 0 7.8 3.2 8.1 7.4C420 589.9 461.5 629 512 629s92.1-39.1 95.8-88.6c.3-4.2 3.9-7.4 8.1-7.4H664a8 8 0 0 1 8 8.4C667.6 625.7 597.5 693 512 693zm176-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.SnippetsFill = l("snippets", o, c(i, "M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 486H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z")), t.SoundFill = l("sound", o, c(i, "M892.1 737.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344zm174 132H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zM625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1z")), t.StarFill = l("star", o, c(i, "M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0 0 46.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z")), t.StepBackwardFill = l("step-backward", o, c(r, "M347.6 528.95l383.2 301.02c14.25 11.2 35.2 1.1 35.2-16.95V210.97c0-18.05-20.95-28.14-35.2-16.94L347.6 495.05a21.53 21.53 0 0 0 0 33.9M330 864h-64a8 8 0 0 1-8-8V168a8 8 0 0 1 8-8h64a8 8 0 0 1 8 8v688a8 8 0 0 1-8 8")), t.StepForwardFill = l("step-forward", o, c(r, "M676.4 528.95L293.2 829.97c-14.25 11.2-35.2 1.1-35.2-16.95V210.97c0-18.05 20.95-28.14 35.2-16.94l383.2 301.02a21.53 21.53 0 0 1 0 33.9M694 864h64a8 8 0 0 0 8-8V168a8 8 0 0 0-8-8h-64a8 8 0 0 0-8 8v688a8 8 0 0 0 8 8")), t.StopFill = l("stop", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm234.8 736.5L223.5 277.2c16-19.7 34-37.7 53.7-53.7l523.3 523.3c-16 19.6-34 37.7-53.7 53.7z")), t.SwitcherFill = l("switcher", o, c(i, "M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zM596 606c0 4.4-3.6 8-8 8H308c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h280c4.4 0 8 3.6 8 8v48zm284-494H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32z")), t.TabletFill = l("tablet", o, c(i, "M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM512 824c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z")), t.TagFill = l("tag", o, c(i, "M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8c1.9 1.9 4.4 2.9 7.1 2.9s5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM699 387c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z")), t.TagsFill = l("tags", o, c(i, "M483.2 790.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3c-2.3-.2-4.7.6-6.3 2.3L137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c3.1 3.2 8.2 3.2 11.3 0zm122.7-533.4c18.7-18.7 49.1-18.7 67.9 0 18.7 18.7 18.7 49.1 0 67.9-18.7 18.7-49.1 18.7-67.9 0-18.7-18.7-18.7-49.1 0-67.9zm283.8 282.9l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3z")), t.TaobaoCircleFill = l("taobao-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z")), t.TaobaoSquareFill = l("taobao-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z")), t.ToolFill = l("tool", o, c(i, "M865.3 244.7c-.3-.3-61.1 59.8-182.1 180.6l-84.9-84.9 180.9-180.9c-95.2-57.3-217.5-42.6-296.8 36.7A244.42 244.42 0 0 0 419 432l1.8 6.7-283.5 283.4c-6.2 6.2-6.2 16.4 0 22.6l141.4 141.4c6.2 6.2 16.4 6.2 22.6 0l283.3-283.3 6.7 1.8c83.7 22.3 173.6-.9 236-63.3 79.4-79.3 94.1-201.6 38-296.6z")), t.ThunderboltFill = l("thunderbolt", o, c(i, "M848 359.3H627.7L825.8 109c4.1-5.3.4-13-6.3-13H436c-2.8 0-5.5 1.5-6.9 4L170 547.5c-3.1 5.3.7 12 6.9 12h174.4l-89.4 357.6c-1.9 7.8 7.5 13.3 13.3 7.7L853.5 373c5.2-4.9 1.7-13.7-5.5-13.7z")), t.TrademarkCircleFill = l("trademark-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm164.7 660.2c-1.1.5-2.3.8-3.5.8h-62c-3.1 0-5.9-1.8-7.2-4.6l-74.6-159.2h-88.7V717c0 4.4-3.6 8-8 8H378c-4.4 0-8-3.6-8-8V307c0-4.4 3.6-8 8-8h155.6c98.8 0 144.2 59.9 144.2 131.1 0 70.2-43.6 106.4-78.4 119.2l80.8 164.2c2.1 3.9.4 8.7-3.5 10.7zM523.9 357h-83.4v148H522c53 0 82.8-25.6 82.8-72.4 0-50.3-32.9-75.6-80.9-75.6z")), t.TwitterCircleFill = l("twitter-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm215.3 337.7c.3 4.7.3 9.6.3 14.4 0 146.8-111.8 315.9-316.1 315.9-63 0-121.4-18.3-170.6-49.8 9 1 17.6 1.4 26.8 1.4 52 0 99.8-17.6 137.9-47.4-48.8-1-89.8-33-103.8-77 17.1 2.5 32.5 2.5 50.1-2a111 111 0 0 1-88.9-109v-1.4c14.7 8.3 32 13.4 50.1 14.1a111.13 111.13 0 0 1-49.5-92.4c0-20.7 5.4-39.6 15.1-56a315.28 315.28 0 0 0 229 116.1C492 353.1 548.4 292 616.2 292c32 0 60.8 13.4 81.1 35 25.1-4.7 49.1-14.1 70.5-26.7-8.3 25.7-25.7 47.4-48.8 61.1 22.4-2.4 44-8.6 64-17.3-15.1 22.2-34 41.9-55.7 57.6z")), t.TrophyFill = l("trophy", o, c(i, "M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.6 630.2 359 721.8 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.8 758.4 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM248 439.6c-37.1-11.9-64-46.7-64-87.6V232h64v207.6zM840 352c0 41-26.9 75.8-64 87.6V232h64v120z")), t.TwitterSquareFill = l("twitter-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM727.3 401.7c.3 4.7.3 9.6.3 14.4 0 146.8-111.8 315.9-316.1 315.9-63 0-121.4-18.3-170.6-49.8 9 1 17.6 1.4 26.8 1.4 52 0 99.8-17.6 137.9-47.4-48.8-1-89.8-33-103.8-77 17.1 2.5 32.5 2.5 50.1-2a111 111 0 0 1-88.9-109v-1.4c14.7 8.3 32 13.4 50.1 14.1a111.13 111.13 0 0 1-49.5-92.4c0-20.7 5.4-39.6 15.1-56a315.28 315.28 0 0 0 229 116.1C492 353.1 548.4 292 616.2 292c32 0 60.8 13.4 81.1 35 25.1-4.7 49.1-14.1 70.5-26.7-8.3 25.7-25.7 47.4-48.8 61.1 22.4-2.4 44-8.6 64-17.3-15.1 22.2-34 41.9-55.7 57.6z")), t.UnlockFill = l("unlock", o, c(i, "M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM540 701v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 1 1 56 0z")), t.UpCircleFill = l("up-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm178 555h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 460.4 406.8 605.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z")), t.UpSquareFill = l("up-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM690 624h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 465.4 406.8 610.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z")), t.UsbFill = l("usb", o, c(i, "M408 312h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm352 120V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zm-72 0H336V184h352v248zM568 312h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z")), t.WalletFill = l("wallet", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-32 464H528V448h320v128zm-268-64a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.VideoCameraFill = l("video-camera", o, c(i, "M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM328 352c0 4.4-3.6 8-8 8H208c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h112c4.4 0 8 3.6 8 8v48zm560 273l-104-59.8V458.9L888 399v226z")), t.WarningFill = l("warning", o, c(i, "M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.WeiboCircleFill = l("weibo-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-44.4 672C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-93-32.2c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zm34.9-14.5c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z")), t.WechatFill = l("wechat", o, c(i, "M690.1 377.4c5.9 0 11.8.2 17.6.5-24.4-128.7-158.3-227.1-319.9-227.1C209 150.8 64 271.4 64 420.2c0 81.1 43.6 154.2 111.9 203.6a21.5 21.5 0 0 1 9.1 17.6c0 2.4-.5 4.6-1.1 6.9-5.5 20.3-14.2 52.8-14.6 54.3-.7 2.6-1.7 5.2-1.7 7.9 0 5.9 4.8 10.8 10.8 10.8 2.3 0 4.2-.9 6.2-2l70.9-40.9c5.3-3.1 11-5 17.2-5 3.2 0 6.4.5 9.5 1.4 33.1 9.5 68.8 14.8 105.7 14.8 6 0 11.9-.1 17.8-.4-7.1-21-10.9-43.1-10.9-66 0-135.8 132.2-245.8 295.3-245.8zm-194.3-86.5c23.8 0 43.2 19.3 43.2 43.1s-19.3 43.1-43.2 43.1c-23.8 0-43.2-19.3-43.2-43.1s19.4-43.1 43.2-43.1zm-215.9 86.2c-23.8 0-43.2-19.3-43.2-43.1s19.3-43.1 43.2-43.1 43.2 19.3 43.2 43.1-19.4 43.1-43.2 43.1zm586.8 415.6c56.9-41.2 93.2-102 93.2-169.7 0-124-120.8-224.5-269.9-224.5-149 0-269.9 100.5-269.9 224.5S540.9 847.5 690 847.5c30.8 0 60.6-4.4 88.1-12.3 2.6-.8 5.2-1.2 7.9-1.2 5.2 0 9.9 1.6 14.3 4.1l59.1 34c1.7 1 3.3 1.7 5.2 1.7a9 9 0 0 0 6.4-2.6 9 9 0 0 0 2.6-6.4c0-2.2-.9-4.4-1.4-6.6-.3-1.2-7.6-28.3-12.2-45.3-.5-1.9-.9-3.8-.9-5.7.1-5.9 3.1-11.2 7.6-14.5zM600.2 587.2c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9c0 19.8-16.2 35.9-36 35.9zm179.9 0c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9a36.08 36.08 0 0 1-36 35.9z")), t.WindowsFill = l("windows", o, c(i, "M523.8 191.4v288.9h382V128.1zm0 642.2l382 62.2v-352h-382zM120.1 480.2H443V201.9l-322.9 53.5zm0 290.4L443 823.2V543.8H120.1z")), t.YahooFill = l("yahoo", o, c(i, "M937.3 231H824.7c-15.5 0-27.7 12.6-27.1 28.1l13.1 366h84.4l65.4-366.4c2.7-15.2-7.8-27.7-23.2-27.7zm-77.4 450.4h-14.1c-27.1 0-49.2 22.2-49.2 49.3v14.1c0 27.1 22.2 49.3 49.2 49.3h14.1c27.1 0 49.2-22.2 49.2-49.3v-14.1c0-27.1-22.2-49.3-49.2-49.3zM402.6 231C216.2 231 65 357 65 512.5S216.2 794 402.6 794s337.6-126 337.6-281.5S589.1 231 402.6 231zm225.2 225.2h-65.3L458.9 559.8v65.3h84.4v56.3H318.2v-56.3h84.4v-65.3L242.9 399.9h-37v-56.3h168.5v56.3h-37l93.4 93.5 28.1-28.1V400h168.8v56.2z")), t.WeiboSquareFill = l("weibo-square", o, c(i, "M433.6 595.1c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM467.6 736C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-58.1-46.7c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z")), t.YuqueFill = l("yuque", o, c(i, "M854.6 370.6c-9.9-39.4 9.9-102.2 73.4-124.4l-67.9-3.6s-25.7-90-143.6-98c-117.9-8.1-195-3-195-3s87.4 55.6 52.4 154.7c-25.6 52.5-65.8 95.6-108.8 144.7-1.3 1.3-2.5 2.6-3.5 3.7C319.4 605 96 860 96 860c245.9 64.4 410.7-6.3 508.2-91.1 20.5-.2 35.9-.3 46.3-.3 135.8 0 250.6-117.6 245.9-248.4-3.2-89.9-31.9-110.2-41.8-149.6z")), t.YoutubeFill = l("youtube", o, c(i, "M941.3 296.1a112.3 112.3 0 0 0-79.2-79.3C792.2 198 512 198 512 198s-280.2 0-350.1 18.7A112.12 112.12 0 0 0 82.7 296C64 366 64 512 64 512s0 146 18.7 215.9c10.3 38.6 40.7 69 79.2 79.3C231.8 826 512 826 512 826s280.2 0 350.1-18.8c38.6-10.3 68.9-40.7 79.2-79.3C960 658 960 512 960 512s0-146-18.7-215.9zM423 646V378l232 133-232 135z")), t.ZhihuSquareFill = l("zhihu-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM432.3 592.8l71 80.7c9.2 33-3.3 63.1-3.3 63.1l-95.7-111.9v-.1c-8.9 29-20.1 57.3-33.3 84.7-22.6 45.7-55.2 54.7-89.5 57.7-34.4 3-23.3-5.3-23.3-5.3 68-55.5 78-87.8 96.8-123.1 11.9-22.3 20.4-64.3 25.3-96.8H264.1s4.8-31.2 19.2-41.7h101.6c.6-15.3-1.3-102.8-2-131.4h-49.4c-9.2 45-41 56.7-48.1 60.1-7 3.4-23.6 7.1-21.1 0 2.6-7.1 27-46.2 43.2-110.7 16.3-64.6 63.9-62 63.9-62-12.8 22.5-22.4 73.6-22.4 73.6h159.7c10.1 0 10.6 39 10.6 39h-90.8c-.7 22.7-2.8 83.8-5 131.4H519s12.2 15.4 12.2 41.7h-110l-.1 1.5c-1.5 20.4-6.3 43.9-12.9 67.6l24.1-18.1zm335.5 116h-87.6l-69.5 46.6-16.4-46.6h-40.1V321.5h213.6v387.3zM408.2 611s0-.1 0 0zm216 94.3l56.8-38.1h45.6-.1V364.7H596.7v302.5h14.1z")), t.ZhihuCircleFill = l("zhihu-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-90.7 477.8l-.1 1.5c-1.5 20.4-6.3 43.9-12.9 67.6l24-18.1 71 80.7c9.2 33-3.3 63.1-3.3 63.1l-95.7-111.9v-.1c-8.9 29-20.1 57.3-33.3 84.7-22.6 45.7-55.2 54.7-89.5 57.7-34.4 3-23.3-5.3-23.3-5.3 68-55.5 78-87.8 96.8-123.1 11.9-22.3 20.4-64.3 25.3-96.8H264.1s4.8-31.2 19.2-41.7h101.6c.6-15.3-1.3-102.8-2-131.4h-49.4c-9.2 45-41 56.7-48.1 60.1-7 3.4-23.6 7.1-21.1 0 2.6-7.1 27-46.2 43.2-110.7 16.3-64.6 63.9-62 63.9-62-12.8 22.5-22.4 73.6-22.4 73.6h159.7c10.1 0 10.6 39 10.6 39h-90.8c-.7 22.7-2.8 83.8-5 131.4H519s12.2 15.4 12.2 41.7H421.3zm346.5 167h-87.6l-69.5 46.6-16.4-46.6h-40.1V321.5h213.6v387.3zM408.2 611s0-.1 0 0zm216 94.3l56.8-38.1h45.6-.1V364.7H596.7v302.5h14.1z")), t.AccountBookOutline = l("account-book", a, c(i, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584zM639.5 414h-45c-3 0-5.8 1.7-7.1 4.4L514 563.8h-2.8l-73.4-145.4a8 8 0 0 0-7.1-4.4h-46c-1.3 0-2.7.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9l89.3 164h-48.6c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1v33.7h-65.1c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1V752c0 4.4 3.6 8 8 8h41.3c4.4 0 8-3.6 8-8v-53.8h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-65.4v-33.7h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-49.1l89.3-164.1c.6-1.2 1-2.5 1-3.8.1-4.4-3.4-8-7.9-8z")), t.AlertOutline = l("alert", a, c(i, "M193 796c0 17.7 14.3 32 32 32h574c17.7 0 32-14.3 32-32V563c0-176.2-142.8-319-319-319S193 386.8 193 563v233zm72-233c0-136.4 110.6-247 247-247s247 110.6 247 247v193H404V585c0-5.5-4.5-10-10-10h-44c-5.5 0-10 4.5-10 10v171h-75V563zm-48.1-252.5l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3l-67.9-67.9a8.03 8.03 0 0 0-11.3 0l-39.6 39.6a8.03 8.03 0 0 0 0 11.3l67.9 67.9c3.1 3.1 8.1 3.1 11.3 0zm669.6-79.2l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-67.9 67.9a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l67.9-67.9c3.1-3.2 3.1-8.2 0-11.3zM832 892H192c-17.7 0-32 14.3-32 32v24c0 4.4 3.6 8 8 8h688c4.4 0 8-3.6 8-8v-24c0-17.7-14.3-32-32-32zM484 180h56c4.4 0 8-3.6 8-8V76c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v96c0 4.4 3.6 8 8 8z")), t.AlipayCircleOutline = l("alipay-circle", a, c(i, "M308.6 545.7c-19.8 2-57.1 10.7-77.4 28.6-61 53-24.5 150 99 150 71.8 0 143.5-45.7 199.8-119-80.2-38.9-148.1-66.8-221.4-59.6zm460.5 67c100.1 33.4 154.7 43 166.7 44.8A445.9 445.9 0 0 0 960 512c0-247.4-200.6-448-448-448S64 264.6 64 512s200.6 448 448 448c155.9 0 293.2-79.7 373.5-200.5-75.6-29.8-213.6-85-286.8-120.1-69.9 85.7-160.1 137.8-253.7 137.8-158.4 0-212.1-138.1-137.2-229 16.3-19.8 44.2-38.7 87.3-49.4 67.5-16.5 175 10.3 275.7 43.4 18.1-33.3 33.4-69.9 44.7-108.9H305.1V402h160v-56.2H271.3v-31.3h193.8v-80.1s0-13.5 13.7-13.5H557v93.6h191.7v31.3H557.1V402h156.4c-15 61.1-37.7 117.4-66.2 166.8 47.5 17.1 90.1 33.3 121.8 43.9z")), t.AliwangwangOutline = l("aliwangwang", a, c(i, "M868.2 377.4c-18.9-45.1-46.3-85.6-81.2-120.6a377.26 377.26 0 0 0-120.5-81.2A375.65 375.65 0 0 0 519 145.8c-41.9 0-82.9 6.7-121.9 20C306 123.3 200.8 120 170.6 120c-2.2 0-7.4 0-9.4.2-11.9.4-22.8 6.5-29.2 16.4-6.5 9.9-7.7 22.4-3.4 33.5l64.3 161.6a378.59 378.59 0 0 0-52.8 193.2c0 51.4 10 101 29.8 147.6 18.9 45 46.2 85.6 81.2 120.5 34.7 34.8 75.4 62.1 120.5 81.2C418.3 894 467.9 904 519 904c51.3 0 100.9-10.1 147.7-29.8 44.9-18.9 85.5-46.3 120.4-81.2 34.7-34.8 62.1-75.4 81.2-120.6a376.5 376.5 0 0 0 29.8-147.6c-.2-51.2-10.1-100.8-29.9-147.4zm-66.4 266.5a307.08 307.08 0 0 1-65.9 98c-28.4 28.5-61.3 50.7-97.7 65.9h-.1c-38 16-78.3 24.2-119.9 24.2a306.51 306.51 0 0 1-217.5-90.2c-28.4-28.5-50.6-61.4-65.8-97.8v-.1c-16-37.8-24.1-78.2-24.1-119.9 0-55.4 14.8-109.7 42.8-157l13.2-22.1-9.5-23.9L206 192c14.9.6 35.9 2.1 59.7 5.6 43.8 6.5 82.5 17.5 114.9 32.6l19 8.9 19.9-6.8c31.5-10.8 64.8-16.2 98.9-16.2a306.51 306.51 0 0 1 217.5 90.2c28.4 28.5 50.6 61.4 65.8 97.8l.1.1.1.1c16 37.6 24.1 78 24.2 119.8-.1 41.7-8.3 82-24.3 119.8zM681.1 364.2c-20.4 0-37.1 16.7-37.1 37.1v55.1c0 20.4 16.6 37.1 37.1 37.1s37.1-16.7 37.1-37.1v-55.1c0-20.5-16.7-37.1-37.1-37.1zm-175.2 0c-20.5 0-37.1 16.7-37.1 37.1v55.1c0 20.4 16.7 37.1 37.1 37.1 20.5 0 37.1-16.7 37.1-37.1v-55.1c0-20.5-16.7-37.1-37.1-37.1z")), t.AndroidOutline = l("android", a, c(i, "M448.3 225.2c-18.6 0-32 13.4-32 31.9s13.5 31.9 32 31.9c18.6 0 32-13.4 32-31.9.1-18.4-13.4-31.9-32-31.9zm393.9 96.4c-13.8-13.8-32.7-21.5-53.2-21.5-3.9 0-7.4.4-10.7 1v-1h-3.6c-5.5-30.6-18.6-60.5-38.1-87.4-18.7-25.7-43-47.9-70.8-64.9l25.1-35.8v-3.3c0-.8.4-2.3.7-3.8.6-2.4 1.4-5.5 1.4-8.9 0-18.5-13.5-31.9-32-31.9-9.8 0-19.5 5.7-25.9 15.4l-29.3 42.1c-30-9.8-62.4-15-93.8-15-31.3 0-63.7 5.2-93.8 15L389 79.4c-6.6-9.6-16.1-15.4-26-15.4-18.6 0-32 13.4-32 31.9 0 6.2 2.5 12.8 6.7 17.4l22.6 32.3c-28.7 17-53.5 39.4-72.2 65.1-19.4 26.9-32 56.8-36.7 87.4h-5.5v1c-3.2-.6-6.7-1-10.7-1-20.3 0-39.2 7.5-53.1 21.3-13.8 13.8-21.5 32.6-21.5 53v235c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 3.9 0 7.4-.4 10.7-1v93.5c0 29.2 23.9 53.1 53.2 53.1H331v58.3c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 20.3 0 39.2-7.5 53.1-21.3 13.8-13.8 21.5-32.6 21.5-53v-58.2H544v58.1c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 20.4 0 39.2-7.5 53.1-21.6 13.8-13.8 21.5-32.6 21.5-53v-58.2h31.9c29.3 0 53.2-23.8 53.2-53.1v-91.4c3.2.6 6.7 1 10.7 1 20.3 0 39.2-7.5 53.1-21.3 13.8-13.8 21.5-32.6 21.5-53v-235c-.1-20.3-7.6-39-21.4-52.9zM246 609.6c0 6.8-3.9 10.6-10.7 10.6-6.8 0-10.7-3.8-10.7-10.6V374.5c0-6.8 3.9-10.6 10.7-10.6 6.8 0 10.7 3.8 10.7 10.6v235.1zm131.1-396.8c37.5-27.3 85.3-42.3 135-42.3s97.5 15.1 135 42.5c32.4 23.7 54.2 54.2 62.7 87.5H314.4c8.5-33.4 30.5-64 62.7-87.7zm39.3 674.7c-.6 5.6-4.4 8.7-10.5 8.7-6.8 0-10.7-3.8-10.7-10.6v-58.2h21.2v60.1zm202.3 8.7c-6.8 0-10.7-3.8-10.7-10.6v-58.2h21.2v60.1c-.6 5.6-4.3 8.7-10.5 8.7zm95.8-132.6H309.9V364h404.6v399.6zm85.2-154c0 6.8-3.9 10.6-10.7 10.6-6.8 0-10.7-3.8-10.7-10.6V374.5c0-6.8 3.9-10.6 10.7-10.6 6.8 0 10.7 3.8 10.7 10.6v235.1zM576.1 225.2c-18.6 0-32 13.4-32 31.9s13.5 31.9 32 31.9c18.6 0 32.1-13.4 32.1-32-.1-18.6-13.4-31.8-32.1-31.8z")), t.ApiOutline = l("api", a, c(i, "M917.7 148.8l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM769.1 441.7l-59.4 59.4-186.8-186.8 59.4-59.4c24.9-24.9 58.1-38.7 93.4-38.7 35.3 0 68.4 13.7 93.4 38.7 24.9 24.9 38.7 58.1 38.7 93.4 0 35.3-13.8 68.4-38.7 93.4zm-190.2 105a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2c-68.9 69-77 175.7-24.3 253.5l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2zM441.7 769.1a131.32 131.32 0 0 1-93.4 38.7c-35.3 0-68.4-13.7-93.4-38.7a131.32 131.32 0 0 1-38.7-93.4c0-35.3 13.7-68.4 38.7-93.4l59.4-59.4 186.8 186.8-59.4 59.4z")), t.AppstoreOutline = l("appstore", a, c(i, "M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z")), t.AudioOutline = l("audio", a, c(i, "M842 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1zM512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm-94-392c0-50.6 41.9-92 94-92s94 41.4 94 92v224c0 50.6-41.9 92-94 92s-94-41.4-94-92V232z")), t.AppleOutline = l("apple", a, c(i, "M747.4 535.7c-.4-68.2 30.5-119.6 92.9-157.5-34.9-50-87.7-77.5-157.3-82.8-65.9-5.2-138 38.4-164.4 38.4-27.9 0-91.7-36.6-141.9-36.6C273.1 298.8 163 379.8 163 544.6c0 48.7 8.9 99 26.7 150.8 23.8 68.2 109.6 235.3 199.1 232.6 46.8-1.1 79.9-33.2 140.8-33.2 59.1 0 89.7 33.2 141.9 33.2 90.3-1.3 167.9-153.2 190.5-221.6-121.1-57.1-114.6-167.2-114.6-170.7zm-10.6 267c-14.3 19.9-28.7 35.6-41.9 45.7-10.5 8-18.6 11.4-24 11.6-9-.1-17.7-2.3-34.7-8.8-1.2-.5-2.5-1-4.2-1.6l-4.4-1.7c-17.4-6.7-27.8-10.3-41.1-13.8-18.6-4.8-37.1-7.4-56.9-7.4-20.2 0-39.2 2.5-58.1 7.2-13.9 3.5-25.6 7.4-42.7 13.8-.7.3-8.1 3.1-10.2 3.9-3.5 1.3-6.2 2.3-8.7 3.2-10.4 3.6-17 5.1-22.9 5.2-.7 0-1.3-.1-1.8-.2-1.1-.2-2.5-.6-4.1-1.3-4.5-1.8-9.9-5.1-16-9.8-14-10.9-29.4-28-45.1-49.9-27.5-38.6-53.5-89.8-66-125.7-15.4-44.8-23-87.7-23-128.6 0-60.2 17.8-106 48.4-137.1 26.3-26.6 61.7-41.5 97.8-42.3 5.9.1 14.5 1.5 25.4 4.5 8.6 2.3 18 5.4 30.7 9.9 3.8 1.4 16.9 6.1 18.5 6.7 7.7 2.8 13.5 4.8 19.2 6.6 18.2 5.8 32.3 9 47.6 9 15.5 0 28.8-3.3 47.7-9.8 7.1-2.4 32.9-12 37.5-13.6 25.6-9.1 44.5-14 60.8-15.2 4.8-.4 9.1-.4 13.2-.1 22.7 1.8 42.1 6.3 58.6 13.8-37.6 43.4-57 96.5-56.9 158.4-.3 14.7.9 31.7 5.1 51.8 6.4 30.5 18.6 60.7 37.9 89 14.7 21.5 32.9 40.9 54.7 57.8-11.5 23.7-25.6 48.2-40.4 68.8zm-94.5-572c50.7-60.2 46.1-115 44.6-134.7-44.8 2.6-96.6 30.5-126.1 64.8-32.5 36.8-51.6 82.3-47.5 133.6 48.4 3.7 92.6-21.2 129-63.7z")), t.BackwardOutline = l("backward", a, c(r, "M485.6 249.9L198.2 498c-8.3 7.1-8.3 20.8 0 27.9l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9zm320 0L518.2 498a18.6 18.6 0 0 0-6.2 14c0 5.2 2.1 10.4 6.2 14l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9z")), t.BankOutline = l("bank", a, c(i, "M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM512 196.7l271.1 197.2H240.9L512 196.7zM264 462h117v374H264V462zm189 0h117v374H453V462zm307 374H642V462h118v374z")), t.BellOutline = l("bell", a, c(i, "M816 768h-24V428c0-141.1-104.3-257.7-240-277.1V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.9c-135.7 19.4-240 136-240 277.1v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48zM304 768V428c0-55.6 21.6-107.8 60.9-147.1S456.4 220 512 220c55.6 0 107.8 21.6 147.1 60.9S720 372.4 720 428v340H304z")), t.BehanceSquareOutline = l("behance-square", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM598.5 350.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7zm-248.5-10.1c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1s12.7-3.8 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8z")), t.BookOutline = l("book", a, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-260 72h96v209.9L621.5 312 572 347.4V136zm220 752H232V136h280v296.9c0 3.3 1 6.6 3 9.3a15.9 15.9 0 0 0 22.3 3.7l83.8-59.9 81.4 59.4c2.7 2 6 3.1 9.4 3.1 8.8 0 16-7.2 16-16V136h64v752z")), t.BoxPlotOutline = l("box-plot", a, c(i, "M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H232c-4.4 0-8 3.6-8 8v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h560c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zM296 368h88v288h-88V368zm432 288H448V368h280v288z")), t.BulbOutline = l("bulb", a, c(i, "M632 888H392c-4.4 0-8 3.6-8 8v32c0 17.7 14.3 32 32 32h192c17.7 0 32-14.3 32-32v-32c0-4.4-3.6-8-8-8zM512 64c-181.1 0-328 146.9-328 328 0 121.4 66 227.4 164 284.1V792c0 17.7 14.3 32 32 32h264c17.7 0 32-14.3 32-32V676.1c98-56.7 164-162.7 164-284.1 0-181.1-146.9-328-328-328zm127.9 549.8L604 634.6V752H420V634.6l-35.9-20.8C305.4 568.3 256 484.5 256 392c0-141.4 114.6-256 256-256s256 114.6 256 256c0 92.5-49.4 176.3-128.1 221.8z")), t.BugOutline = l("bug", a, c(i, "M304 280h56c4.4 0 8-3.6 8-8 0-28.3 5.9-53.2 17.1-73.5 10.6-19.4 26-34.8 45.4-45.4C450.9 142 475.7 136 504 136h16c28.3 0 53.2 5.9 73.5 17.1 19.4 10.6 34.8 26 45.4 45.4C650 218.9 656 243.7 656 272c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1a184.31 184.31 0 0 0-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9a184.31 184.31 0 0 0-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z", "M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8a63 63 0 0 1-63 63H232a63 63 0 0 1-63-63c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7a273 273 0 0 0 22.7 49c24.3 41.5 59 76.2 100.5 100.5S460.5 960 512 960s99.8-13.9 141.3-38.2a281.38 281.38 0 0 0 123.2-149.5A120 120 0 0 1 836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM716 680c0 36.8-9.7 72-27.8 102.9-17.7 30.3-43 55.6-73.3 73.3C584 874.3 548.8 884 512 884s-72-9.7-102.9-27.8c-30.3-17.7-55.6-43-73.3-73.3A202.75 202.75 0 0 1 308 680V412h408v268z")), t.CalculatorOutline = l("calculator", a, c(i, "M251.2 387H320v68.8c0 1.8 1.8 3.2 4 3.2h48c2.2 0 4-1.4 4-3.3V387h68.8c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H376v-68.8c0-1.8-1.8-3.2-4-3.2h-48c-2.2 0-4 1.4-4 3.2V331h-68.8c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm328 0h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0 265h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0 104h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm-195.7-81l61.2-74.9c4.3-5.2.7-13.1-5.9-13.1H388c-2.3 0-4.5 1-5.9 2.9l-34 41.6-34-41.6a7.85 7.85 0 0 0-5.9-2.9h-50.9c-6.6 0-10.2 7.9-5.9 13.1l61.2 74.9-62.7 76.8c-4.4 5.2-.8 13.1 5.8 13.1h50.8c2.3 0 4.5-1 5.9-2.9l35.5-43.5 35.5 43.5c1.5 1.8 3.7 2.9 5.9 2.9h50.8c6.6 0 10.2-7.9 5.9-13.1L383.5 675zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-36 732H180V180h664v664z")), t.BuildOutline = l("build", a, c(i, "M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zm-504 68h200v200H412V278zm-68 468H144V546h200v200zm268 0H412V546h200v200zm268-268H680V278h200v200z")), t.CalendarOutline = l("calendar", a, c(i, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z")), t.CameraOutline = l("camera", a, c(i, "M864 248H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 248H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V328c0-44.2-35.8-80-80-80zm8 536c0 4.4-3.6 8-8 8H160c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h186.7l17.1-47.8 22.9-64.2h250.5l22.9 64.2 17.1 47.8H864c4.4 0 8 3.6 8 8v456zM512 384c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zm0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z")), t.CarOutline = l("car", a, c(i, "M380 704h264c4.4 0 8-3.6 8-8v-84c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v36H428v-36c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v84c0 4.4 3.6 8 8 8zm340-123a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm239-167.6L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM840 517v237H184V517l15.6-43h624.8l15.6 43zM292.7 218.1l.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220l72.7-199.9zM224 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.CaretDownOutline = l("caret-down", a, c(r, "M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z")), t.CaretLeftOutline = l("caret-left", a, c(r, "M689 165.1L308.2 493.5c-10.9 9.4-10.9 27.5 0 37L689 858.9c14.2 12.2 35 1.2 35-18.5V183.6c0-19.7-20.8-30.7-35-18.5z")), t.CaretRightOutline = l("caret-right", a, c(r, "M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z")), t.CarryOutOutline = l("carry-out", a, c(i, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584zM688 420h-55.2c-5.1 0-10 2.5-13 6.6L468.9 634.4l-64.7-89c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.4 0-12.8-6.5-12.8z")), t.CheckCircleOutline = l("check-circle", a, c(i, "M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0 0 51.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z", "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.CaretUpOutline = l("caret-up", a, c(r, "M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z")), t.CheckSquareOutline = l("check-square", a, c(i, "M433.1 657.7a31.8 31.8 0 0 0 51.7 0l210.6-292c3.8-5.3 0-12.7-6.5-12.7H642c-10.2 0-19.9 4.9-25.9 13.3L459 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H315c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.ChromeOutline = l("chrome", a, c(i, "M928 512.3v-.3c0-229.8-186.2-416-416-416S96 282.2 96 512v.4c0 229.8 186.2 416 416 416s416-186.2 416-416v-.3.2zm-6.7-74.6l.6 3.3-.6-3.3zM676.7 638.2c53.5-82.2 52.5-189.4-11.1-263.7l162.4-8.4c20.5 44.4 32 93.8 32 145.9 0 185.2-144.6 336.6-327.1 347.4l143.8-221.2zM512 652.3c-77.5 0-140.2-62.7-140.2-140.2 0-77.7 62.7-140.2 140.2-140.2S652.2 434.5 652.2 512 589.5 652.3 512 652.3zm369.2-331.7l-3-5.7 3 5.7zM512 164c121.3 0 228.2 62.1 290.4 156.2l-263.6-13.9c-97.5-5.7-190.2 49.2-222.3 141.1L227.8 311c63.1-88.9 166.9-147 284.2-147zM102.5 585.8c26 145 127.1 264 261.6 315.1C229.6 850 128.5 731 102.5 585.8zM164 512c0-55.9 13.2-108.7 36.6-155.5l119.7 235.4c44.1 86.7 137.4 139.7 234 121.6l-74 145.1C302.9 842.5 164 693.5 164 512zm324.7 415.4c4 .2 8 .4 12 .5-4-.2-8-.3-12-.5z")), t.ClockCircleOutline = l("clock-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z", "M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z")), t.CloseCircleOutline = l("close-circle", a, c(i, "M685.4 354.8c0-4.4-3.6-8-8-8l-66 .3L512 465.6l-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155L340.5 670a8.32 8.32 0 0 0-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3L512 564.4l99.3 118.4 66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.5 515l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z", "M512 65C264.6 65 64 265.6 64 513s200.6 448 448 448 448-200.6 448-448S759.4 65 512 65zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.CloudOutline = l("cloud", a, c(i, "M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3zm36.3 281a123.07 123.07 0 0 1-87.6 36.3H263.9c-33.1 0-64.2-12.9-87.6-36.3A123.3 123.3 0 0 1 140 612c0-28 9.1-54.3 26.2-76.3a125.7 125.7 0 0 1 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10c54.3 14.5 92.1 63.8 92.1 120 0 33.1-12.9 64.3-36.3 87.7z")), t.CloseSquareOutline = l("close-square", a, c(i, "M354 671h58.9c4.7 0 9.2-2.1 12.3-5.7L512 561.8l86.8 103.5c3 3.6 7.5 5.7 12.3 5.7H670c6.8 0 10.5-7.9 6.1-13.1L553.8 512l122.4-145.9c4.4-5.2.7-13.1-6.1-13.1h-58.9c-4.7 0-9.2 2.1-12.3 5.7L512 462.2l-86.8-103.5c-3-3.6-7.5-5.7-12.3-5.7H354c-6.8 0-10.5 7.9-6.1 13.1L470.2 512 347.9 657.9A7.95 7.95 0 0 0 354 671z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.CodeOutline = l("code", a, c(i, "M516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48zm-194.9 6.1l192-161c3.8-3.2 3.8-9.1 0-12.3l-192-160.9A7.95 7.95 0 0 0 308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 0 0-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.CodepenCircleOutline = l("codepen-circle", a, c(i, "M488.1 414.7V303.4L300.9 428l83.6 55.8zm254.1 137.7v-79.8l-59.8 39.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm278 533c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-254.1 13.3v111.3L723.1 597l-83.6-55.8zM281.8 472.6v79.8l59.8-39.9zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zM723.1 428L535.9 303.4v111.3l103.6 69.1zM384.5 541.2L300.9 597l187.2 124.6V610.3l-103.6-69.1z")), t.CompassOutline = l("compass", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm198.4-588.1a32 32 0 0 0-24.5.5L414.9 415 296.4 686c-3.6 8.2-3.6 17.5 0 25.7 3.4 7.8 9.7 13.9 17.7 17 3.8 1.5 7.7 2.2 11.7 2.2 4.4 0 8.7-.9 12.8-2.7l271-118.6 118.5-271a32.06 32.06 0 0 0-17.7-42.7zM576.8 534.4l26.2 26.2-42.4 42.4-26.2-26.2L380 644.4 447.5 490 422 464.4l42.4-42.4 25.5 25.5L644.4 380l-67.6 154.4zM464.4 422L422 464.4l25.5 25.6 86.9 86.8 26.2 26.2 42.4-42.4-26.2-26.2-86.8-86.9z")), t.ContactsOutline = l("contacts", a, c(i, "M594.3 601.5a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1 8 8 0 0 0 8 8.4H407c4.2 0 7.6-3.3 7.9-7.5 3.8-50.6 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H661a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.7-126.1zM512 578c-28.5 0-51.7-23.3-51.7-52s23.2-52 51.7-52 51.7 23.3 51.7 52-23.2 52-51.7 52zm416-354H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z")), t.ContainerOutline = l("container", a, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V687h97.9c11.6 32.8 32 62.3 59.1 84.7 34.5 28.5 78.2 44.3 123 44.3s88.5-15.7 123-44.3c27.1-22.4 47.5-51.9 59.1-84.7H792v-63H643.6l-5.2 24.7C626.4 708.5 573.2 752 512 752s-114.4-43.5-126.5-103.3l-5.2-24.7H232V136h560v752zM320 341h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 160h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z")), t.ControlOutline = l("control", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM340 683v77c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-77c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5zm64-198V264c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v221c10.1-3.3 20.8-5 32-5s21.9 1.8 32 5zm-64 198c10.1 3.3 20.8 5 32 5s21.9-1.8 32-5c41.8-13.5 72-52.7 72-99s-30.2-85.5-72-99c-10.1-3.3-20.8-5-32-5s-21.9 1.8-32 5c-41.8 13.5-72 52.7-72 99s30.2 85.5 72 99zm.1-115.7c.3-.6.7-1.2 1-1.8v-.1l1.2-1.8c.1-.2.2-.3.3-.5.3-.5.7-.9 1-1.4.1-.1.2-.3.3-.4.5-.6.9-1.1 1.4-1.6l.3-.3 1.2-1.2.4-.4c.5-.5 1-.9 1.6-1.4.6-.5 1.1-.9 1.7-1.3.2-.1.3-.2.5-.3.5-.3.9-.7 1.4-1 .1-.1.3-.2.4-.3.6-.4 1.2-.7 1.9-1.1.1-.1.3-.1.4-.2.5-.3 1-.5 1.6-.8l.6-.3c.7-.3 1.3-.6 2-.8.7-.3 1.4-.5 2.1-.7.2-.1.4-.1.6-.2.6-.2 1.1-.3 1.7-.4.2 0 .3-.1.5-.1.7-.2 1.5-.3 2.2-.4.2 0 .3 0 .5-.1.6-.1 1.2-.1 1.8-.2h.6c.8 0 1.5-.1 2.3-.1s1.5 0 2.3.1h.6c.6 0 1.2.1 1.8.2.2 0 .3 0 .5.1.7.1 1.5.2 2.2.4.2 0 .3.1.5.1.6.1 1.2.3 1.7.4.2.1.4.1.6.2.7.2 1.4.4 2.1.7.7.2 1.3.5 2 .8l.6.3c.5.2 1.1.5 1.6.8.1.1.3.1.4.2.6.3 1.3.7 1.9 1.1.1.1.3.2.4.3.5.3 1 .6 1.4 1 .2.1.3.2.5.3.6.4 1.2.9 1.7 1.3s1.1.9 1.6 1.4l.4.4 1.2 1.2.3.3c.5.5 1 1.1 1.4 1.6.1.1.2.3.3.4.4.4.7.9 1 1.4.1.2.2.3.3.5l1.2 1.8s0 .1.1.1a36.18 36.18 0 0 1 5.1 18.5c0 6-1.5 11.7-4.1 16.7-.3.6-.7 1.2-1 1.8 0 0 0 .1-.1.1l-1.2 1.8c-.1.2-.2.3-.3.5-.3.5-.7.9-1 1.4-.1.1-.2.3-.3.4-.5.6-.9 1.1-1.4 1.6l-.3.3-1.2 1.2-.4.4c-.5.5-1 .9-1.6 1.4-.6.5-1.1.9-1.7 1.3-.2.1-.3.2-.5.3-.5.3-.9.7-1.4 1-.1.1-.3.2-.4.3-.6.4-1.2.7-1.9 1.1-.1.1-.3.1-.4.2-.5.3-1 .5-1.6.8l-.6.3c-.7.3-1.3.6-2 .8-.7.3-1.4.5-2.1.7-.2.1-.4.1-.6.2-.6.2-1.1.3-1.7.4-.2 0-.3.1-.5.1-.7.2-1.5.3-2.2.4-.2 0-.3 0-.5.1-.6.1-1.2.1-1.8.2h-.6c-.8 0-1.5.1-2.3.1s-1.5 0-2.3-.1h-.6c-.6 0-1.2-.1-1.8-.2-.2 0-.3 0-.5-.1-.7-.1-1.5-.2-2.2-.4-.2 0-.3-.1-.5-.1-.6-.1-1.2-.3-1.7-.4-.2-.1-.4-.1-.6-.2-.7-.2-1.4-.4-2.1-.7-.7-.2-1.3-.5-2-.8l-.6-.3c-.5-.2-1.1-.5-1.6-.8-.1-.1-.3-.1-.4-.2-.6-.3-1.3-.7-1.9-1.1-.1-.1-.3-.2-.4-.3-.5-.3-1-.6-1.4-1-.2-.1-.3-.2-.5-.3-.6-.4-1.2-.9-1.7-1.3s-1.1-.9-1.6-1.4l-.4-.4-1.2-1.2-.3-.3c-.5-.5-1-1.1-1.4-1.6-.1-.1-.2-.3-.3-.4-.4-.4-.7-.9-1-1.4-.1-.2-.2-.3-.3-.5l-1.2-1.8v-.1c-.4-.6-.7-1.2-1-1.8-2.6-5-4.1-10.7-4.1-16.7s1.5-11.7 4.1-16.7zM620 539v221c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V539c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5zm64-198v-77c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v77c10.1-3.3 20.8-5 32-5s21.9 1.8 32 5zm-64 198c10.1 3.3 20.8 5 32 5s21.9-1.8 32-5c41.8-13.5 72-52.7 72-99s-30.2-85.5-72-99c-10.1-3.3-20.8-5-32-5s-21.9 1.8-32 5c-41.8 13.5-72 52.7-72 99s30.2 85.5 72 99zm.1-115.7c.3-.6.7-1.2 1-1.8v-.1l1.2-1.8c.1-.2.2-.3.3-.5.3-.5.7-.9 1-1.4.1-.1.2-.3.3-.4.5-.6.9-1.1 1.4-1.6l.3-.3 1.2-1.2.4-.4c.5-.5 1-.9 1.6-1.4.6-.5 1.1-.9 1.7-1.3.2-.1.3-.2.5-.3.5-.3.9-.7 1.4-1 .1-.1.3-.2.4-.3.6-.4 1.2-.7 1.9-1.1.1-.1.3-.1.4-.2.5-.3 1-.5 1.6-.8l.6-.3c.7-.3 1.3-.6 2-.8.7-.3 1.4-.5 2.1-.7.2-.1.4-.1.6-.2.6-.2 1.1-.3 1.7-.4.2 0 .3-.1.5-.1.7-.2 1.5-.3 2.2-.4.2 0 .3 0 .5-.1.6-.1 1.2-.1 1.8-.2h.6c.8 0 1.5-.1 2.3-.1s1.5 0 2.3.1h.6c.6 0 1.2.1 1.8.2.2 0 .3 0 .5.1.7.1 1.5.2 2.2.4.2 0 .3.1.5.1.6.1 1.2.3 1.7.4.2.1.4.1.6.2.7.2 1.4.4 2.1.7.7.2 1.3.5 2 .8l.6.3c.5.2 1.1.5 1.6.8.1.1.3.1.4.2.6.3 1.3.7 1.9 1.1.1.1.3.2.4.3.5.3 1 .6 1.4 1 .2.1.3.2.5.3.6.4 1.2.9 1.7 1.3s1.1.9 1.6 1.4l.4.4 1.2 1.2.3.3c.5.5 1 1.1 1.4 1.6.1.1.2.3.3.4.4.4.7.9 1 1.4.1.2.2.3.3.5l1.2 1.8v.1a36.18 36.18 0 0 1 5.1 18.5c0 6-1.5 11.7-4.1 16.7-.3.6-.7 1.2-1 1.8v.1l-1.2 1.8c-.1.2-.2.3-.3.5-.3.5-.7.9-1 1.4-.1.1-.2.3-.3.4-.5.6-.9 1.1-1.4 1.6l-.3.3-1.2 1.2-.4.4c-.5.5-1 .9-1.6 1.4-.6.5-1.1.9-1.7 1.3-.2.1-.3.2-.5.3-.5.3-.9.7-1.4 1-.1.1-.3.2-.4.3-.6.4-1.2.7-1.9 1.1-.1.1-.3.1-.4.2-.5.3-1 .5-1.6.8l-.6.3c-.7.3-1.3.6-2 .8-.7.3-1.4.5-2.1.7-.2.1-.4.1-.6.2-.6.2-1.1.3-1.7.4-.2 0-.3.1-.5.1-.7.2-1.5.3-2.2.4-.2 0-.3 0-.5.1-.6.1-1.2.1-1.8.2h-.6c-.8 0-1.5.1-2.3.1s-1.5 0-2.3-.1h-.6c-.6 0-1.2-.1-1.8-.2-.2 0-.3 0-.5-.1-.7-.1-1.5-.2-2.2-.4-.2 0-.3-.1-.5-.1-.6-.1-1.2-.3-1.7-.4-.2-.1-.4-.1-.6-.2-.7-.2-1.4-.4-2.1-.7-.7-.2-1.3-.5-2-.8l-.6-.3c-.5-.2-1.1-.5-1.6-.8-.1-.1-.3-.1-.4-.2-.6-.3-1.3-.7-1.9-1.1-.1-.1-.3-.2-.4-.3-.5-.3-1-.6-1.4-1-.2-.1-.3-.2-.5-.3-.6-.4-1.2-.9-1.7-1.3s-1.1-.9-1.6-1.4l-.4-.4-1.2-1.2-.3-.3c-.5-.5-1-1.1-1.4-1.6-.1-.1-.2-.3-.3-.4-.4-.4-.7-.9-1-1.4-.1-.2-.2-.3-.3-.5l-1.2-1.8v-.1c-.4-.6-.7-1.2-1-1.8-2.6-5-4.1-10.7-4.1-16.7s1.5-11.7 4.1-16.7z")), t.CopyOutline = l("copy", a, c(i, "M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z")), t.CreditCardOutline = l("credit-card", a, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-792 72h752v120H136V232zm752 560H136V440h752v352zm-237-64h165c4.4 0 8-3.6 8-8v-72c0-4.4-3.6-8-8-8H651c-4.4 0-8 3.6-8 8v72c0 4.4 3.6 8 8 8z")), t.CrownOutline = l("crown", a, c(i, "M899.6 276.5L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.7-3.5-13.1 1.2-12.2 7.9L188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.8-6.7-6.5-11.4-12.3-7.9zm-126 534.1H250.3l-53.8-409.4 139.8 86.1L512 252.9l175.7 234.4 139.8-86.1-53.9 409.4zM512 509c-62.1 0-112.6 50.5-112.6 112.6S449.9 734.2 512 734.2s112.6-50.5 112.6-112.6S574.1 509 512 509zm0 160.9c-26.6 0-48.2-21.6-48.2-48.3 0-26.6 21.6-48.3 48.2-48.3s48.2 21.6 48.2 48.3c0 26.6-21.6 48.3-48.2 48.3z")), t.CustomerServiceOutline = l("customer-service", a, c(i, "M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384zM328 632v192H200V632h128zm496 192H696V632h128v192z")), t.DashboardOutline = l("dashboard", a, c(i, "M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM761.4 836H262.6A371.12 371.12 0 0 1 140 560c0-99.4 38.7-192.8 109-263 70.3-70.3 163.7-109 263-109 99.4 0 192.8 38.7 263 109 70.3 70.3 109 163.7 109 263 0 105.6-44.5 205.5-122.6 276zM623.5 421.5a8.03 8.03 0 0 0-11.3 0L527.7 506c-18.7-5-39.4-.2-54.1 14.5a55.95 55.95 0 0 0 0 79.2 55.95 55.95 0 0 0 79.2 0 55.87 55.87 0 0 0 14.5-54.1l84.5-84.5c3.1-3.1 3.1-8.2 0-11.3l-28.3-28.3zM490 320h44c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8h-44c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8zm260 218v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8zm12.7-197.2l-31.1-31.1a8.03 8.03 0 0 0-11.3 0l-56.6 56.6a8.03 8.03 0 0 0 0 11.3l31.1 31.1c3.1 3.1 8.2 3.1 11.3 0l56.6-56.6c3.1-3.1 3.1-8.2 0-11.3zm-458.6-31.1a8.03 8.03 0 0 0-11.3 0l-31.1 31.1a8.03 8.03 0 0 0 0 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l31.1-31.1c3.1-3.1 3.1-8.2 0-11.3l-56.6-56.6zM262 530h-80c-4.4 0-8 3.6-8 8v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8z")), t.DeleteOutline = l("delete", a, c(i, "M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z")), t.DiffOutline = l("diff", a, c(i, "M476 399.1c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1V484h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H420v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V540h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H476v-84.9zM560.5 704h-225c-4.1 0-7.5 3.2-7.5 7v42c0 3.8 3.4 7 7.5 7h225c4.1 0 7.5-3.2 7.5-7v-42c0-3.8-3.4-7-7.5-7zm-7.1-502.6c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM664 888H232V264h282.2L664 413.8V888zm190.2-581.4L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23z")), t.DatabaseOutline = l("database", a, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-600 72h560v208H232V136zm560 480H232V408h560v208zm0 272H232V680h560v208zM304 240a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.DislikeOutline = l("dislike", a, c(i, "M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h129.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM184 456V172h81v284h-81zm627.2 160.4H496.8l9.6 198.4c.6 11.9-4.7 23.1-14.6 30.5-6.1 4.5-13.6 6.8-21.1 6.7a44.28 44.28 0 0 1-42.2-32.3L329 459.2V172h415.4a56.85 56.85 0 0 1 33.6 51.8c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-14 25.5 21.9 19a56.76 56.76 0 0 1 19.6 43c0 19.1-11 37.5-28.8 48.4z")), t.DownCircleOutline = l("down-circle", a, c(i, "M690 405h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 563.6 406.8 418.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7z", "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.DownSquareOutline = l("down-square", a, c(i, "M505.5 658.7c3.2 4.4 9.7 4.4 12.9 0l178-246c3.8-5.3 0-12.7-6.5-12.7H643c-10.2 0-19.9 4.9-25.9 13.2L512 558.6 406.8 413.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.DribbbleSquareOutline = l("dribbble-square", a, c(i, "M498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm66.5 21.8c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM512 800c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm89.7-259.1c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zm-72.5-26.4c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4zm145.9-186.2a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6z")), t.EnvironmentOutline = l("environment", a, c(i, "M854.6 289.1a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 880.2c-65.9-41.9-300-207.8-300-449.1 0-77.9 31.1-151.1 87.6-206.3C356.3 169.5 431.7 139 512 139s155.7 30.5 212.4 85.9C780.9 280 812 353.2 812 431.1c0 241.3-234.1 407.2-300 449.1zm0-617.2c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 551c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 439c0-29.9 11.7-58 32.8-79.2C454 338.6 482.1 327 512 327c29.9 0 58 11.6 79.2 32.8C612.4 381 624 409.1 624 439c0 29.9-11.6 58-32.8 79.2z")), t.EditOutline = l("edit", a, c(i, "M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z")), t.ExclamationCircleOutline = l("exclamation-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z", "M464 688a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z")), t.ExperimentOutline = l("experiment", a, c(i, "M512 472a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm367 352.9L696.3 352V178H768v-68H256v68h71.7v174L145 824.9c-2.8 7.4-4.3 15.2-4.3 23.1 0 35.3 28.7 64 64 64h614.6c7.9 0 15.7-1.5 23.1-4.3 33-12.7 49.4-49.8 36.6-82.8zM395.7 364.7V180h232.6v184.7L719.2 600c-20.7-5.3-42.1-8-63.9-8-61.2 0-119.2 21.5-165.3 60a188.78 188.78 0 0 1-121.3 43.9c-32.7 0-64.1-8.3-91.8-23.7l118.8-307.5zM210.5 844l41.7-107.8c35.7 18.1 75.4 27.8 116.6 27.8 61.2 0 119.2-21.5 165.3-60 33.9-28.2 76.3-43.9 121.3-43.9 35 0 68.4 9.5 97.6 27.1L813.5 844h-603z")), t.EyeInvisibleOutline = l("eye-invisible", a, c(i, "M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5zm-63.57-320.64L836 122.88a8 8 0 0 0-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 0 0 0 11.31L155.17 889a8 8 0 0 0 11.31 0l712.15-712.12a8 8 0 0 0 0-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 0 0-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 0 1 146.2-106.69L401.31 546.2A112 112 0 0 1 396 512z", "M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 0 0 227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 0 1-112 112z")), t.EyeOutline = l("eye", a, c(i, "M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z")), t.FacebookOutline = l("facebook", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-32 736H663.9V602.2h104l15.6-120.7H663.9v-77.1c0-35 9.7-58.8 59.8-58.8h63.9v-108c-11.1-1.5-49-4.8-93.2-4.8-92.2 0-155.3 56.3-155.3 159.6v89H434.9v120.7h104.3V848H176V176h672v672z")), t.FastBackwardOutline = l("fast-backward", a, c(r, "M517.6 273.5L230.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm320 0L550.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm-620-25.5h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z")), t.FastForwardOutline = l("fast-forward", a, c(r, "M793.8 499.3L506.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.6c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8a16.14 16.14 0 0 0 0-25.4zm-320 0L186.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.5c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8c4.1-3.2 6.2-8 6.2-12.7 0-4.6-2.1-9.4-6.2-12.6zM857.6 248h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z")), t.FileAddOutline = l("file-add", a, c(i, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM544 472c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V472z")), t.FileExcelOutline = l("file-excel", a, c(i, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM514.1 580.1l-61.8-102.4c-2.2-3.6-6.1-5.8-10.3-5.8h-38.4c-2.3 0-4.5.6-6.4 1.9-5.6 3.5-7.3 10.9-3.7 16.6l82.3 130.4-83.4 132.8a12.04 12.04 0 0 0 10.2 18.4h34.5c4.2 0 8-2.2 10.2-5.7L510 664.8l62.3 101.4c2.2 3.6 6.1 5.7 10.2 5.7H620c2.3 0 4.5-.7 6.5-1.9 5.6-3.6 7.2-11 3.6-16.6l-84-130.4 85.3-132.5a12.04 12.04 0 0 0-10.1-18.5h-35.7c-4.2 0-8.1 2.2-10.3 5.8l-61.2 102.3z")), t.FileExclamationOutline = l("file-exclamation", a, c(i, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM472 744a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm16-104h48c4.4 0 8-3.6 8-8V448c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8z")), t.FileImageOutline = l("file-image", a, c(i, "M553.1 509.1l-77.8 99.2-41.1-52.4a8 8 0 0 0-12.6 0l-99.8 127.2a7.98 7.98 0 0 0 6.3 12.9H696c6.7 0 10.4-7.7 6.3-12.9l-136.5-174a8.1 8.1 0 0 0-12.7 0zM360 442a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm494.6-153.4L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z")), t.FileMarkdownOutline = l("file-markdown", a, c(i, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM429 481.2c-1.9-4.4-6.2-7.2-11-7.2h-35c-6.6 0-12 5.4-12 12v272c0 6.6 5.4 12 12 12h27.1c6.6 0 12-5.4 12-12V582.1l66.8 150.2a12 12 0 0 0 11 7.1H524c4.7 0 9-2.8 11-7.1l66.8-150.6V758c0 6.6 5.4 12 12 12H641c6.6 0 12-5.4 12-12V486c0-6.6-5.4-12-12-12h-34.7c-4.8 0-9.1 2.8-11 7.2l-83.1 191-83.2-191z")), t.FilePptOutline = l("file-ppt", a, c(i, "M424 476c-4.4 0-8 3.6-8 8v276c0 4.4 3.6 8 8 8h32.5c4.4 0 8-3.6 8-8v-95.5h63.3c59.4 0 96.2-38.9 96.2-94.1 0-54.5-36.3-94.3-96-94.3H424zm150.6 94.3c0 43.4-26.5 54.3-71.2 54.3h-38.9V516.2h56.2c33.8 0 53.9 19.7 53.9 54.1zm280-281.7L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z")), t.FileTextOutline = l("file-text", a, c(i, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z")), t.FilePdfOutline = l("file-pdf", a, c(i, "M531.3 574.4l.3-1.4c5.8-23.9 13.1-53.7 7.4-80.7-3.8-21.3-19.5-29.6-32.9-30.2-15.8-.7-29.9 8.3-33.4 21.4-6.6 24-.7 56.8 10.1 98.6-13.6 32.4-35.3 79.5-51.2 107.5-29.6 15.3-69.3 38.9-75.2 68.7-1.2 5.5.2 12.5 3.5 18.8 3.7 7 9.6 12.4 16.5 15 3 1.1 6.6 2 10.8 2 17.6 0 46.1-14.2 84.1-79.4 5.8-1.9 11.8-3.9 17.6-5.9 27.2-9.2 55.4-18.8 80.9-23.1 28.2 15.1 60.3 24.8 82.1 24.8 21.6 0 30.1-12.8 33.3-20.5 5.6-13.5 2.9-30.5-6.2-39.6-13.2-13-45.3-16.4-95.3-10.2-24.6-15-40.7-35.4-52.4-65.8zM421.6 726.3c-13.9 20.2-24.4 30.3-30.1 34.7 6.7-12.3 19.8-25.3 30.1-34.7zm87.6-235.5c5.2 8.9 4.5 35.8.5 49.4-4.9-19.9-5.6-48.1-2.7-51.4.8.1 1.5.7 2.2 2zm-1.6 120.5c10.7 18.5 24.2 34.4 39.1 46.2-21.6 4.9-41.3 13-58.9 20.2-4.2 1.7-8.3 3.4-12.3 5 13.3-24.1 24.4-51.4 32.1-71.4zm155.6 65.5c.1.2.2.5-.4.9h-.2l-.2.3c-.8.5-9 5.3-44.3-8.6 40.6-1.9 45 7.3 45.1 7.4zm191.4-388.2L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z")), t.FileZipOutline = l("file-zip", a, c(i, "M296 392h64v64h-64zm0 190v160h128V582h-64v-62h-64v62zm80 48v64h-32v-64h32zm-16-302h64v64h-64zm-64-64h64v64h-64zm64 192h64v64h-64zm0-256h64v64h-64zm494.6 88.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h64v64h64v-64h174v216a42 42 0 0 0 42 42h216v494z")), t.FileOutline = l("file", a, c(i, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z")), t.FilterOutline = l("filter", a, c(i, "M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V642h182.9v156zm9.6-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z")), t.FileWordOutline = l("file-word", a, c(i, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM528.1 472h-32.2c-5.5 0-10.3 3.7-11.6 9.1L434.6 680l-46.1-198.7c-1.3-5.4-6.1-9.3-11.7-9.3h-35.4a12.02 12.02 0 0 0-11.6 15.1l74.2 276c1.4 5.2 6.2 8.9 11.6 8.9h32c5.4 0 10.2-3.6 11.6-8.9l52.8-197 52.8 197c1.4 5.2 6.2 8.9 11.6 8.9h31.8c5.4 0 10.2-3.6 11.6-8.9l74.4-276a12.04 12.04 0 0 0-11.6-15.1H647c-5.6 0-10.4 3.9-11.7 9.3l-45.8 199.1-49.8-199.3c-1.3-5.4-6.1-9.1-11.6-9.1z")), t.FireOutline = l("fire", a, c(i, "M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9zM713 808.5c-53.7 53.2-125 82.4-201 82.4s-147.3-29.2-201-82.4c-53.5-53.1-83-123.5-83-198.4 0-43.5 9.8-85.2 29.1-124 18.8-37.9 46.8-71.8 80.8-97.9a349.6 349.6 0 0 0 58.6-56.8c25-30.5 44.6-64.5 58.2-101a240 240 0 0 0 12.1-46.5c24.1 22.2 44.3 49 61.2 80.4 33.4 62.6 48.8 118.3 45.8 165.7a74.01 74.01 0 0 0 24.4 59.8 73.36 73.36 0 0 0 53.4 18.8c19.7-1 37.8-9.7 51-24.4 13.3-14.9 24.8-30.1 34.4-45.6 14 17.9 25.7 37.4 35 58.4 15.9 35.8 24 73.9 24 113.1 0 74.9-29.5 145.4-83 198.4z")), t.FileUnknownOutline = l("file-unknown", a, c(i, "M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM402 549c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103zm78 195a32 32 0 1 0 64 0 32 32 0 1 0-64 0z")), t.FlagOutline = l("flag", a, c(i, "M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32zM184 568V232h368v336H184zm656 145H504v-73h112c4.4 0 8-3.6 8-8V377h216v336z")), t.FolderAddOutline = l("folder-add", a, c(i, "M484 443.1V528h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H484v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V584h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H540v-84.9c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1zm396-144.7H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z")), t.FolderOutline = l("folder", a, c(i, "M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z")), t.FolderOpenOutline = l("folder-open", a, c(i, "M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z")), t.ForwardOutline = l("forward", a, c(r, "M825.8 498L538.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L825.8 526c8.3-7.2 8.3-20.8 0-28zm-320 0L218.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L505.8 526c4.1-3.6 6.2-8.8 6.2-14 0-5.2-2.1-10.4-6.2-14z")), t.FrownOutline = l("frown", a, c(i, "M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM512 533c-85.5 0-155.6 67.3-160 151.6a8 8 0 0 0 8 8.4h48.1c4.2 0 7.8-3.2 8.1-7.4C420 636.1 461.5 597 512 597s92.1 39.1 95.8 88.6c.3 4.2 3.9 7.4 8.1 7.4H664a8 8 0 0 0 8-8.4C667.6 600.3 597.5 533 512 533z")), t.FundOutline = l("fund", a, c(i, "M926 164H94c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V196c0-17.7-14.3-32-32-32zm-40 632H134V236h752v560zm-658.9-82.3c3.1 3.1 8.2 3.1 11.3 0l172.5-172.5 114.4 114.5c3.1 3.1 8.2 3.1 11.3 0l297-297.2c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 0 0-11.3 0L531 565 416.6 450.5a8.03 8.03 0 0 0-11.3 0l-214.9 215a8.03 8.03 0 0 0 0 11.3l36.7 36.9z")), t.FunnelPlotOutline = l("funnel-plot", a, c(i, "M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 607.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V607.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V650h182.9v148zm9.6-226.6l-8.4 14.6H419.3l-8.4-14.6L334.4 438h355.2L613 571.4zM726.3 374H297.7l-85-148h598.6l-85 148z")), t.GiftOutline = l("gift", a, c(i, "M880 310H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v200c0 4.4 3.6 8 8 8h40v344c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V550h40c4.4 0 8-3.6 8-8V342c0-17.7-14.3-32-32-32zm-334-74c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70h-70v-70zm-138-70c38.6 0 70 31.4 70 70v70h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70zM180 482V378h298v104H180zm48 68h250v308H228V550zm568 308H546V550h250v308zm48-376H546V378h298v104z")), t.GithubOutline = l("github", a, c(i, "M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9a127.5 127.5 0 0 1 38.1 91v112.5c.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z")), t.GitlabOutline = l("gitlab", a, c(i, "M913.9 552.2L805 181.4v-.1c-7.6-22.9-25.7-36.5-48.3-36.5-23.4 0-42.5 13.5-49.7 35.2l-71.4 213H388.8l-71.4-213c-7.2-21.7-26.3-35.2-49.7-35.2-23.1 0-42.5 14.8-48.4 36.6L110.5 552.2c-4.4 14.7 1.2 31.4 13.5 40.7l368.5 276.4c2.6 3.6 6.2 6.3 10.4 7.8l8.6 6.4 8.5-6.4c4.9-1.7 9-4.7 11.9-8.9l368.4-275.4c12.4-9.2 18-25.9 13.6-40.6zM751.7 193.4c1-1.8 2.9-1.9 3.5-1.9 1.1 0 2.5.3 3.4 3L818 394.3H684.5l67.2-200.9zm-487.4 1c.9-2.6 2.3-2.9 3.4-2.9 2.7 0 2.9.1 3.4 1.7l67.3 201.2H206.5l57.8-200zM158.8 558.7l28.2-97.3 202.4 270.2-230.6-172.9zm73.9-116.4h122.1l90.8 284.3-212.9-284.3zM512.9 776L405.7 442.3H620L512.9 776zm157.9-333.7h119.5L580 723.1l90.8-280.8zm-40.7 293.9l207.3-276.7 29.5 99.2-236.8 177.5z")), t.HeartOutline = l("heart", a, c(i, "M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z")), t.HddOutline = l("hdd", a, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-600 72h560v208H232V136zm560 480H232V408h560v208zm0 272H232V680h560v208zM496 208H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 544h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm328 244a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.HighlightOutline = l("highlight", a, c(i, "M957.6 507.4L603.2 158.2a7.9 7.9 0 0 0-11.2 0L353.3 393.4a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8V860c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6 40.4 39.8a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2zM389.8 796.2H229.6l134.4-133 80.1 78.9-54.3 54.1zm154.8-62.1L373.2 565.2l68.6-67.6 171.4 168.9-68.6 67.6zM713.1 658L450.3 399.1 597.6 254l262.8 259-147.3 145z")), t.HomeOutline = l("home", a, c(i, "M946.5 505L560.1 118.8l-25.9-25.9a31.5 31.5 0 0 0-44.4 0L77.5 505a63.9 63.9 0 0 0-18.8 46c.4 35.2 29.7 63.3 64.9 63.3h42.5V940h691.8V614.3h43.4c17.1 0 33.2-6.7 45.3-18.8a63.6 63.6 0 0 0 18.7-45.3c0-17-6.7-33.1-18.8-45.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z")), t.HourglassOutline = l("hourglass", a, c(i, "M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194zm-72 388v134H354V706c0-42.2 16.4-81.9 46.3-111.7C430.1 564.4 469.8 548 512 548s81.9 16.4 111.7 46.3C653.6 624.1 670 663.8 670 706zm0-388c0 42.2-16.4 81.9-46.3 111.7C593.9 459.6 554.2 476 512 476s-81.9-16.4-111.7-46.3A156.63 156.63 0 0 1 354 318V184h316v134z")), t.Html5Outline = l("html5", a, c(i, "M145 96l66 746.6L511.8 928l299.6-85.4L878.7 96H145zm610.9 700.6l-244.1 69.6-245.2-69.6-56.7-641.2h603.8l-57.8 641.2zM281 249l1.7 24.3 22.7 253.5h206.5v-.1h112.9l-11.4 118.5L511 672.9v.2h-.8l-102.4-27.7-6.5-73.2h-91l11.3 144.7 188.6 52h1.7v-.4l187.7-51.7 1.7-16.3 21.2-242.2 3.2-24.3H511v.2H389.9l-8.2-94.2h352.1l1.7-19.5 4.8-47.2L742 249H511z")), t.IdcardOutline = l("idcard", a, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560zM610.3 476h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48c0 4.4 1 8 2.3 8zm4.8 144h185.7c3.9 0 7.1-3.6 7.1-8v-48c0-4.4-3.2-8-7.1-8H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8zM224 673h43.9c4.2 0 7.6-3.3 7.9-7.5 3.8-50.5 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H522a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.6-126.1a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1c-.4 4.6 3.2 8.4 7.8 8.4zm149-262c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52-51.7-23.3-51.7-52 23.2-52 51.7-52z")), t.InfoCircleOutline = l("info-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z", "M464 336a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z")), t.InstagramOutline = l("instagram", a, c(i, "M512 306.9c-113.5 0-205.1 91.6-205.1 205.1S398.5 717.1 512 717.1 717.1 625.5 717.1 512 625.5 306.9 512 306.9zm0 338.4c-73.4 0-133.3-59.9-133.3-133.3S438.6 378.7 512 378.7 645.3 438.6 645.3 512 585.4 645.3 512 645.3zm213.5-394.6c-26.5 0-47.9 21.4-47.9 47.9s21.4 47.9 47.9 47.9 47.9-21.3 47.9-47.9a47.84 47.84 0 0 0-47.9-47.9zM911.8 512c0-55.2.5-109.9-2.6-165-3.1-64-17.7-120.8-64.5-167.6-46.9-46.9-103.6-61.4-167.6-64.5-55.2-3.1-109.9-2.6-165-2.6-55.2 0-109.9-.5-165 2.6-64 3.1-120.8 17.7-167.6 64.5C132.6 226.3 118.1 283 115 347c-3.1 55.2-2.6 109.9-2.6 165s-.5 109.9 2.6 165c3.1 64 17.7 120.8 64.5 167.6 46.9 46.9 103.6 61.4 167.6 64.5 55.2 3.1 109.9 2.6 165 2.6 55.2 0 109.9.5 165-2.6 64-3.1 120.8-17.7 167.6-64.5 46.9-46.9 61.4-103.6 64.5-167.6 3.2-55.1 2.6-109.8 2.6-165zm-88 235.8c-7.3 18.2-16.1 31.8-30.2 45.8-14.1 14.1-27.6 22.9-45.8 30.2C695.2 844.7 570.3 840 512 840c-58.3 0-183.3 4.7-235.9-16.1-18.2-7.3-31.8-16.1-45.8-30.2-14.1-14.1-22.9-27.6-30.2-45.8C179.3 695.2 184 570.3 184 512c0-58.3-4.7-183.3 16.1-235.9 7.3-18.2 16.1-31.8 30.2-45.8s27.6-22.9 45.8-30.2C328.7 179.3 453.7 184 512 184s183.3-4.7 235.9 16.1c18.2 7.3 31.8 16.1 45.8 30.2 14.1 14.1 22.9 27.6 30.2 45.8C844.7 328.7 840 453.7 840 512c0 58.3 4.7 183.2-16.2 235.8z")), t.InsuranceOutline = l("insurance", a, c(i, "M441.6 306.8L403 288.6a6.1 6.1 0 0 0-8.4 3.7c-17.5 58.5-45.2 110.1-82.2 153.6a6.05 6.05 0 0 0-1.2 5.6l13.2 43.5c1.3 4.4 7 5.7 10.2 2.4 7.7-8.1 15.4-16.9 23.1-26V656c0 4.4 3.6 8 8 8H403c4.4 0 8-3.6 8-8V393.1a429.2 429.2 0 0 0 33.6-79c1-2.9-.3-6-3-7.3zm26.8 9.2v127.2c0 4.4 3.6 8 8 8h65.9v18.6h-94.9c-4.4 0-8 3.6-8 8v35.6c0 4.4 3.6 8 8 8h55.1c-19.1 30.8-42.4 55.7-71 76a6 6 0 0 0-1.6 8.1l22.8 36.5c1.9 3.1 6.2 3.8 8.9 1.4 31.6-26.8 58.7-62.9 80.6-107.6v120c0 4.4 3.6 8 8 8h36.2c4.4 0 8-3.6 8-8V536c21.3 41.7 47.5 77.5 78.1 106.9 2.6 2.5 6.8 2.1 8.9-.7l26.3-35.3c2-2.7 1.4-6.5-1.2-8.4-30.5-22.6-54.2-47.8-72.3-76.9h59c4.4 0 8-3.6 8-8V478c0-4.4-3.6-8-8-8h-98.8v-18.6h66.7c4.4 0 8-3.6 8-8V316c0-4.4-3.6-8-8-8H476.4c-4.4 0-8 3.6-8 8zm51.5 42.8h97.9v41.6h-97.9v-41.6zm347-188.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z")), t.InteractionOutline = l("interaction", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z")), t.InterationOutline = l("interation", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z")), t.LayoutOutline = l("layout", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-696 72h136v656H184V184zm656 656H384V384h456v456zM384 320V184h456v136H384z")), t.LeftCircleOutline = l("left-circle", a, c(i, "M603.3 327.5l-246 178a7.95 7.95 0 0 0 0 12.9l246 178c5.3 3.8 12.7 0 12.7-6.5V643c0-10.2-4.9-19.9-13.2-25.9L457.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5z", "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.LeftSquareOutline = l("left-square", a, c(i, "M365.3 518.5l246 178c5.3 3.8 12.7 0 12.7-6.5v-46.9c0-10.2-4.9-19.9-13.2-25.9L465.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5l-246 178a8.05 8.05 0 0 0 0 13z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.LikeOutline = l("like", a, c(i, "M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 0 0-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 0 0 471 99.9c-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81zm636.4-353l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5a44.1 44.1 0 0 1 42.2-32.3c7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z")), t.LinkedinOutline = l("linkedin", a, c(i, "M847.7 112H176.3c-35.5 0-64.3 28.8-64.3 64.3v671.4c0 35.5 28.8 64.3 64.3 64.3h671.4c35.5 0 64.3-28.8 64.3-64.3V176.3c0-35.5-28.8-64.3-64.3-64.3zm0 736c-447.8-.1-671.7-.2-671.7-.3.1-447.8.2-671.7.3-671.7 447.8.1 671.7.2 671.7.3-.1 447.8-.2 671.7-.3 671.7zM230.6 411.9h118.7v381.8H230.6zm59.4-52.2c37.9 0 68.8-30.8 68.8-68.8a68.8 68.8 0 1 0-137.6 0c-.1 38 30.7 68.8 68.8 68.8zm252.3 245.1c0-49.8 9.5-98 71.2-98 60.8 0 61.7 56.9 61.7 101.2v185.7h118.6V584.3c0-102.8-22.2-181.9-142.3-181.9-57.7 0-96.4 31.7-112.3 61.7h-1.6v-52.2H423.7v381.8h118.6V604.8z")), t.LockOutline = l("lock", a, c(i, "M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z")), t.MedicineBoxOutline = l("medicine-box", a, c(i, "M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM360 184h304v72H360v-72zm480 656H184V513.4L244.3 328h535.4L840 513.4V840zM652 572H544V464c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V636h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")), t.MehOutline = l("meh", a, c(i, "M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 565H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")), t.MailOutline = l("mail", a, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 110.8V792H136V270.8l-27.6-21.5 39.3-50.5 42.8 33.3h643.1l42.8-33.3 39.3 50.5-27.7 21.5zM833.6 232L512 482 190.4 232l-42.8-33.3-39.3 50.5 27.6 21.5 341.6 265.6a55.99 55.99 0 0 0 68.7 0L888 270.8l27.6-21.5-39.3-50.5-42.7 33.2z")), t.MessageOutline = l("message", a, c(i, "M464 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm200 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-400 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm661.2-173.6c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 0 0-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 0 0-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 0 0 112 714v152a46 46 0 0 0 46 46h152.1A449.4 449.4 0 0 0 510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 0 0 142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z")), t.MinusCircleOutline = l("minus-circle", a, c(i, "M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z", "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.MinusSquareOutline = l("minus-square", a, c(i, "M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.MobileOutline = l("mobile", a, c(i, "M744 62H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V126c0-35.3-28.7-64-64-64zm-8 824H288V134h448v752zM472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.MoneyCollectOutline = l("money-collect", a, c(i, "M911.5 700.7a8 8 0 0 0-10.3-4.8L840 718.2V180c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V763c0 3.3 2.1 6.3 5.3 7.5L501 910.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zM512 837.5l-256-93.1V184h512v560.4l-256 93.1zM660.6 312h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.6-1.2 1-2.5 1-3.8-.1-4.3-3.7-7.9-8.1-7.9z")), t.PauseCircleOutline = l("pause-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm-88-532h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zm224 0h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z")), t.PayCircleOutline = l("pay-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm159.6-585h-59.5c-3 0-5.8 1.7-7.1 4.4l-90.6 180H511l-90.6-180a8 8 0 0 0-7.1-4.4h-60.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9L457 515.7h-61.4c-4.4 0-8 3.6-8 8v29.9c0 4.4 3.6 8 8 8h81.7V603h-81.7c-4.4 0-8 3.6-8 8v29.9c0 4.4 3.6 8 8 8h81.7V717c0 4.4 3.6 8 8 8h54.3c4.4 0 8-3.6 8-8v-68.1h82c4.4 0 8-3.6 8-8V611c0-4.4-3.6-8-8-8h-82v-41.5h82c4.4 0 8-3.6 8-8v-29.9c0-4.4-3.6-8-8-8h-62l111.1-204.8c.6-1.2 1-2.5 1-3.8-.1-4.4-3.7-8-8.1-8z")), t.NotificationOutline = l("notification", a, c(i, "M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z")), t.PhoneOutline = l("phone", a, c(i, "M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7a405.46 405.46 0 0 1-86.4 127.3c-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3a68.2 68.2 0 0 0-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4zm-37.6 91.5c-19.5 117.9-82.9 235.5-178.4 331s-213 158.9-330.9 178.4c-14.8 2.5-30-2.5-40.8-13.2L184.9 721.9 295.7 611l119.8 120 .9.9 21.6-8a481.29 481.29 0 0 0 285.7-285.8l8-21.6-120.8-120.7 110.8-110.9 104.5 104.5c10.8 10.8 15.8 26 13.3 40.8z")), t.PictureOutline = l("picture", a, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2zM304 456a88 88 0 1 0 0-176 88 88 0 0 0 0 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z")), t.PieChartOutline = l("pie-chart", a, c(i, "M864 518H506V160c0-4.4-3.6-8-8-8h-26a398.46 398.46 0 0 0-282.8 117.1 398.19 398.19 0 0 0-85.7 127.1A397.61 397.61 0 0 0 72 552a398.46 398.46 0 0 0 117.1 282.8c36.7 36.7 79.5 65.6 127.1 85.7A397.61 397.61 0 0 0 472 952a398.46 398.46 0 0 0 282.8-117.1c36.7-36.7 65.6-79.5 85.7-127.1A397.61 397.61 0 0 0 872 552v-26c0-4.4-3.6-8-8-8zM705.7 787.8A331.59 331.59 0 0 1 470.4 884c-88.1-.4-170.9-34.9-233.2-97.2C174.5 724.1 140 640.7 140 552c0-88.7 34.5-172.1 97.2-234.8 54.6-54.6 124.9-87.9 200.8-95.5V586h364.3c-7.7 76.3-41.3 147-96.6 201.8zM952 462.4l-2.6-28.2c-8.5-92.1-49.4-179-115.2-244.6A399.4 399.4 0 0 0 589 74.6L560.7 72c-4.7-.4-8.7 3.2-8.7 7.9V464c0 4.4 3.6 8 8 8l384-1c4.7 0 8.4-4 8-8.6zm-332.2-58.2V147.6a332.24 332.24 0 0 1 166.4 89.8c45.7 45.6 77 103.6 90 166.1l-256.4.7z")), t.PlaySquareOutline = l("play-square", a, c(i, "M442.3 677.6l199.4-156.7a11.3 11.3 0 0 0 0-17.7L442.3 346.4c-7.4-5.8-18.3-.6-18.3 8.8v313.5c0 9.4 10.9 14.7 18.3 8.9z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.PlayCircleOutline = l("play-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z", "M719.4 499.1l-296.1-215A15.9 15.9 0 0 0 398 297v430c0 13.1 14.8 20.5 25.3 12.9l296.1-215a15.9 15.9 0 0 0 0-25.8zm-257.6 134V390.9L628.5 512 461.8 633.1z")), t.PlusCircleOutline = l("plus-circle", a, c(i, "M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z", "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.PrinterOutline = l("printer", a, c(i, "M820 436h-40c-4.4 0-8 3.6-8 8v40c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-40c0-4.4-3.6-8-8-8zm32-104H732V120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM360 180h304v152H360V180zm304 664H360V568h304v276zm200-140H732V500H292v204H160V412c0-6.6 5.4-12 12-12h680c6.6 0 12 5.4 12 12v292z")), t.PlusSquareOutline = l("plus-square", a, c(i, "M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.ProfileOutline = l("profile", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM492 400h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM340 368a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 144a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.ProjectOutline = l("project", a, c(i, "M280 752h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8zm192-280h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm192 72h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v256c0 4.4 3.6 8 8 8zm216-432H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.PushpinOutline = l("pushpin", a, c(i, "M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3a33.23 33.23 0 0 0-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8zM666.2 549.3l-24.5 24.5 3.8 34.4a259.92 259.92 0 0 1-30.4 153.9L262 408.8c12.9-7.1 26.3-13.1 40.3-17.9 27.2-9.4 55.7-14.1 84.7-14.1 9.6 0 19.3.5 28.9 1.6l34.4 3.8 24.5-24.5L608.5 224 800 415.5 666.2 549.3z")), t.PropertySafetyOutline = l("property-safety", a, c(i, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zM430.5 318h-46c-1.7 0-3.3.4-4.8 1.2a10.1 10.1 0 0 0-4 13.6l88 161.1h-45.2c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1v29.7h-63.1c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1V658c0 5.5 4.5 10 10 10h41.3c5.5 0 10-4.5 10-10v-51.8h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-63.4v-29.7h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-45.7l87.7-161.1a10.05 10.05 0 0 0-8.8-14.8h-45c-3.8 0-7.2 2.1-8.9 5.5l-73.2 144.3-72.9-144.3c-1.7-3.4-5.2-5.5-9-5.5z")), t.QuestionCircleOutline = l("question-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z", "M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0 1 30.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.ReadOutline = l("read", a, c(i, "M928 161H699.2c-49.1 0-97.1 14.1-138.4 40.7L512 233l-48.8-31.3A255.2 255.2 0 0 0 324.8 161H96c-17.7 0-32 14.3-32 32v568c0 17.7 14.3 32 32 32h228.8c49.1 0 97.1 14.1 138.4 40.7l44.4 28.6c1.3.8 2.8 1.3 4.3 1.3s3-.4 4.3-1.3l44.4-28.6C602 807.1 650.1 793 699.2 793H928c17.7 0 32-14.3 32-32V193c0-17.7-14.3-32-32-32zM324.8 721H136V233h188.8c35.4 0 69.8 10.1 99.5 29.2l48.8 31.3 6.9 4.5v462c-47.6-25.6-100.8-39-155.2-39zm563.2 0H699.2c-54.4 0-107.6 13.4-155.2 39V298l6.9-4.5 48.8-31.3c29.7-19.1 64.1-29.2 99.5-29.2H888v488zM396.9 361H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5zm223.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c0-4.1-3.2-7.5-7.1-7.5H627.1c-3.9 0-7.1 3.4-7.1 7.5zM396.9 501H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5zm416 0H627.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5z")), t.ReconciliationOutline = l("reconciliation", a, c(i, "M676 565c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34zm204-523H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zm-412 64h72v-56h64v56h72v48H468v-48zm-20 616H176V616h272v232zm0-296H176v-88h272v88zm392 240H512V432c0-17.7-14.3-32-32-32H304V240h100v104h336V240h100v552zM704 408v96c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-96c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8zM592 512h48c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")), t.RedEnvelopeOutline = l("red-envelope", a, c(i, "M440.6 462.6a8.38 8.38 0 0 0-7.5-4.6h-48.8c-1.3 0-2.6.4-3.9 1a8.4 8.4 0 0 0-3.4 11.4l87.4 161.1H419c-4.6 0-8.4 3.8-8.4 8.4V665c0 4.6 3.8 8.4 8.4 8.4h63V702h-63c-4.6 0-8.4 3.8-8.4 8.4v25.1c0 4.6 3.8 8.4 8.4 8.4h63v49.9c0 4.6 3.8 8.4 8.4 8.4h43.7c4.6 0 8.4-3.8 8.4-8.4v-49.9h63.3c4.7 0 8.4-3.8 8.2-8.5v-25c0-4.6-3.8-8.4-8.4-8.4h-63.3v-28.6h63.3c4.6 0 8.4-3.8 8.4-8.4v-25.1c0-4.6-3.8-8.4-8.4-8.4h-45.9l87.2-161a8.45 8.45 0 0 0-7.4-12.4h-47.8c-3.1 0-6 1.8-7.5 4.6l-71.9 141.9-71.7-142zM832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V193.1l260.3 204.1c11.6 9.1 27.9 9.1 39.5 0L792 193.1V888zm0-751.3h-31.7L512 331.3 263.7 136.7H232v-.7h560v.7z")), t.RestOutline = l("rest", a, c(i, "M508 704c79.5 0 144-64.5 144-144s-64.5-144-144-144-144 64.5-144 144 64.5 144 144 144zm0-224c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z", "M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zm-518.6-76h397.2l22.4 76H291l22.4-76zm376.2 664H326.4L282 324h451.9l-44.3 520z")), t.RightCircleOutline = l("right-circle", a, c(i, "M666.7 505.5l-246-178A8 8 0 0 0 408 334v46.9c0 10.2 4.9 19.9 13.2 25.9L566.6 512 421.2 617.2c-8.3 6-13.2 15.6-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.8 0-13z", "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.RocketOutline = l("rocket", a, c(i, "M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8H864zM762.3 621.4c9.4 14.6 17 30.3 22.5 46.6H700V558.7a211.6 211.6 0 0 1 62.3 62.7zM388 483.1V318.8l124-147 124 147V668H388V483.1zM239.2 668c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668h-84.8zm388.9 116.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5-38.3 0-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM464 400a48 48 0 1 0 96 0 48 48 0 1 0-96 0z")), t.RightSquareOutline = l("right-square", a, c(i, "M412.7 696.5l246-178c4.4-3.2 4.4-9.7 0-12.9l-246-178c-5.3-3.8-12.7 0-12.7 6.5V381c0 10.2 4.9 19.9 13.2 25.9L558.6 512 413.2 617.2c-8.3 6-13.2 15.6-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.5z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.SafetyCertificateOutline = l("safety-certificate", a, c(i, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zm-405.8-201c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z")), t.ScheduleOutline = l("schedule", a, c(i, "M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496zM416 496H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 136H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm308.2-177.4L620.6 598.3l-52.8-73.1c-3-4.2-7.8-6.6-12.9-6.6H500c-6.5 0-10.3 7.4-6.5 12.7l114.1 158.2a15.9 15.9 0 0 0 25.8 0l165-228.7c3.8-5.3 0-12.7-6.5-12.7H737c-5-.1-9.8 2.4-12.8 6.5z")), t.SaveOutline = l("save", a, c(i, "M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z")), t.SecurityScanOutline = l("security-scan", a, c(i, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zM402.9 528.8l-77.5 77.5a8.03 8.03 0 0 0 0 11.3l34 34c3.1 3.1 8.2 3.1 11.3 0l77.5-77.5c55.7 35.1 130.1 28.4 178.6-20.1 56.3-56.3 56.3-147.5 0-203.8-56.3-56.3-147.5-56.3-203.8 0-48.5 48.5-55.2 123-20.1 178.6zm65.4-133.3c31.3-31.3 82-31.3 113.2 0 31.3 31.3 31.3 82 0 113.2-31.3 31.3-82 31.3-113.2 0s-31.3-81.9 0-113.2z")), t.SettingOutline = l("setting", a, c(i, "M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 0 0 9.3-35.2l-.9-2.6a443.74 443.74 0 0 0-79.7-137.9l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 0 0-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.4a351.86 351.86 0 0 0-99 57.4l-81.9-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a446.02 446.02 0 0 0-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0 0 35.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0 0 25.8 25.7l2.7.5a449.4 449.4 0 0 0 159 0l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-85a350 350 0 0 0 99.7-57.6l81.3 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 0 1-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 0 1-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 0 1 624 502c0 29.9-11.7 58-32.8 79.2z")), t.ShoppingOutline = l("shopping", a, c(i, "M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-432-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16H400v-16zm392 544H232V384h96v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h224v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h96v456z")), t.SkinOutline = l("skin", a, c(i, "M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44zm-28 268H723v432H301V394H182V198h153.3c28.2 71.2 97.5 120 176.7 120s148.5-48.8 176.7-120H842v196z")), t.SkypeOutline = l("skype", a, c(i, "M883.7 578.6c4.1-22.5 6.3-45.5 6.3-68.5 0-51-10-100.5-29.7-147-19-45-46.3-85.4-81-120.1a375.79 375.79 0 0 0-120.1-80.9c-46.6-19.7-96-29.7-147-29.7-24 0-48.1 2.3-71.5 6.8A225.1 225.1 0 0 0 335.6 113c-59.7 0-115.9 23.3-158.1 65.5A222.25 222.25 0 0 0 112 336.6c0 38 9.8 75.4 28.1 108.4-3.7 21.4-5.7 43.3-5.7 65.1 0 51 10 100.5 29.7 147 19 45 46.2 85.4 80.9 120.1 34.7 34.7 75.1 61.9 120.1 80.9 46.6 19.7 96 29.7 147 29.7 22.2 0 44.4-2 66.2-5.9 33.5 18.9 71.3 29 110 29 59.7 0 115.9-23.2 158.1-65.5 42.3-42.2 65.5-98.4 65.5-158.1.1-38-9.7-75.5-28.2-108.7zm-88.1 216C766.9 823.4 729 839 688.4 839c-26.1 0-51.8-6.8-74.6-19.7l-22.5-12.7-25.5 4.5c-17.8 3.2-35.8 4.8-53.6 4.8-41.4 0-81.3-8.1-119.1-24.1-36.3-15.3-69-37.3-97.2-65.5a304.29 304.29 0 0 1-65.5-97.1c-16-37.7-24-77.6-24-119 0-17.4 1.6-35.2 4.6-52.8l4.4-25.1L203 410a151.02 151.02 0 0 1-19.1-73.4c0-40.6 15.7-78.5 44.4-107.2C257.1 200.7 295 185 335.6 185a153 153 0 0 1 71.4 17.9l22.4 11.8 24.8-4.8c18.9-3.6 38.4-5.5 58-5.5 41.4 0 81.3 8.1 119 24 36.5 15.4 69.1 37.4 97.2 65.5 28.2 28.1 50.2 60.8 65.6 97.2 16 37.7 24 77.6 24 119 0 18.4-1.7 37-5.1 55.5l-4.7 25.5 12.6 22.6c12.6 22.5 19.2 48 19.2 73.7 0 40.7-15.7 78.5-44.4 107.2zM583.4 466.2L495 446.6c-33.6-7.7-72.3-17.8-72.3-49.5s27.1-53.9 76.1-53.9c98.7 0 89.7 67.8 138.7 67.8 25.8 0 48.4-15.2 48.4-41.2 0-60.8-97.4-106.5-180-106.5-89.7 0-185.2 38.1-185.2 139.5 0 48.8 17.4 100.8 113.6 124.9l119.4 29.8c36.1 8.9 45.2 29.2 45.2 47.6 0 30.5-30.3 60.3-85.2 60.3-107.2 0-92.3-82.5-149.7-82.5-25.8 0-44.5 17.8-44.5 43.1 0 49.4 60 115.4 194.2 115.4 127.7 0 191-61.5 191-144 0-53.1-24.5-109.6-121.3-131.2z")), t.SlackSquareOutline = l("slack-square", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM529 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4a50.35 50.35 0 0 1 50.3 50.4v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm134 403.2c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z")), t.SlidersOutline = l("sliders", a, c(i, "M320 224h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-60 508h-80V292h80v440zm644-436h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-60 364h-80V364h80v296zM612 404h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8zm-60 145a3 3 0 0 1-3 3h-74a3 3 0 0 1-3-3v-74a3 3 0 0 1 3-3h74a3 3 0 0 1 3 3v74z")), t.SmileOutline = l("smile", a, c(i, "M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z")), t.SnippetsOutline = l("snippets", a, c(i, "M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 888H232V336h218v174c0 22.1 17.9 40 40 40h174v338zm0-402H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z")), t.SoundOutline = l("sound", a, c(i, "M625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1zM586 803L293.4 611.7l-18-11.7H146V424h129.4l17.9-11.7L586 221v582zm348-327H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm-41.9 261.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344z")), t.StarOutline = l("star", a, c(i, "M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0 0 46.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z")), t.StepBackwardOutline = l("step-backward", a, c(r, "M347.6 528.95l383.2 301.02c14.25 11.2 35.2 1.1 35.2-16.95V210.97c0-18.05-20.95-28.14-35.2-16.94L347.6 495.05a21.53 21.53 0 0 0 0 33.9M330 864h-64a8 8 0 0 1-8-8V168a8 8 0 0 1 8-8h64a8 8 0 0 1 8 8v688a8 8 0 0 1-8 8")), t.StepForwardOutline = l("step-forward", a, c(r, "M676.4 528.95L293.2 829.97c-14.25 11.2-35.2 1.1-35.2-16.95V210.97c0-18.05 20.95-28.14 35.2-16.94l383.2 301.02a21.53 21.53 0 0 1 0 33.9M694 864h64a8 8 0 0 0 8-8V168a8 8 0 0 0-8-8h-64a8 8 0 0 0-8 8v688a8 8 0 0 0 8 8")), t.StopOutline = l("stop", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372 0-89 31.3-170.8 83.5-234.8l523.3 523.3C682.8 852.7 601 884 512 884zm288.5-137.2L277.2 223.5C341.2 171.3 423 140 512 140c205.4 0 372 166.6 372 372 0 89-31.3 170.8-83.5 234.8z")), t.SwitcherOutline = l("switcher", a, c(i, "M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zm-40 600H184V312h528v528zm168-728H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32zM300 550h296v64H300z")), t.TagOutline = l("tag", a, c(i, "M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8c1.9 1.9 4.4 2.9 7.1 2.9s5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM459.7 834.7L189.3 564.3 589 164.6 836 188l23.4 247-399.7 399.7zM680 256c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm0 120c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z")), t.TabletOutline = l("tablet", a, c(i, "M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H232V136h560v752zM472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.ShopOutline = l("shop", a, c(i, "M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h676c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zM214 184h596v88H214v-88zm362 656.1H448V736h128v104.1zm234 0H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 3-1.3 6-2.6 9-4v242.2zm30-404.4c0 59.8-49 108.3-109.3 108.3-40.8 0-76.4-22.1-95.2-54.9-2.9-5-8.1-8.1-13.9-8.1h-.6c-5.7 0-11 3.1-13.9 8.1A109.24 109.24 0 0 1 512 544c-40.7 0-76.2-22-95-54.7-3-5.1-8.4-8.3-14.3-8.3s-11.4 3.2-14.3 8.3a109.63 109.63 0 0 1-95.1 54.7C233 544 184 495.5 184 435.7v-91.2c0-.3.2-.5.5-.5h655c.3 0 .5.2.5.5v91.2z")), t.TagsOutline = l("tags", a, c(i, "M483.2 790.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3c-2.3-.2-4.7.6-6.3 2.3L137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c3.1 3.2 8.2 3.2 11.3 0zm62.6-651.7l224.6 19 19 224.6L477.5 694 233.9 450.5l311.9-311.9zm60.16 186.23a48 48 0 1 0 67.88-67.89 48 48 0 1 0-67.88 67.89zM889.7 539.8l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3z")), t.TaobaoCircleOutline = l("taobao-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z")), t.ToolOutline = l("tool", a, c(i, "M876.6 239.5c-.5-.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c.8-.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-44.7-311.3 39.7-67 67-89.2 162-66.5 247.4l-293 293c-3 3-2.8 7.9.3 11l169.7 169.7c3.1 3.1 8.1 3.3 11 .3l292.9-292.9c85.5 22.8 180.5.7 247.6-66.4 84.4-84.5 97.7-213.1 39.7-311.3zM786 499.8c-58.1 58.1-145.3 69.3-214.6 33.6l-8.8 8.8-.1-.1-274 274.1-79.2-79.2 230.1-230.1s0 .1.1.1l52.8-52.8c-35.7-69.3-24.5-156.5 33.6-214.6a184.2 184.2 0 0 1 144-53.5L537 318.9a32.05 32.05 0 0 0 0 45.3l124.5 124.5a32.05 32.05 0 0 0 45.3 0l132.8-132.8c3.7 51.8-14.4 104.8-53.6 143.9z")), t.ThunderboltOutline = l("thunderbolt", a, c(i, "M848 359.3H627.7L825.8 109c4.1-5.3.4-13-6.3-13H436c-2.8 0-5.5 1.5-6.9 4L170 547.5c-3.1 5.3.7 12 6.9 12h174.4l-89.4 357.6c-1.9 7.8 7.5 13.3 13.3 7.7L853.5 373c5.2-4.9 1.7-13.7-5.5-13.7zM378.2 732.5l60.3-241H281.1l189.6-327.4h224.6L487 427.4h211L378.2 732.5z")), t.TrophyOutline = l("trophy", a, c(i, "M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.7 630.2 359 721.7 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.7 758.3 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM184 352V232h64v207.6a91.99 91.99 0 0 1-64-87.6zm520 128c0 49.1-19.1 95.4-53.9 130.1-34.8 34.8-81 53.9-130.1 53.9h-16c-49.1 0-95.4-19.1-130.1-53.9-34.8-34.8-53.9-81-53.9-130.1V184h384v296zm136-128c0 41-26.9 75.8-64 87.6V232h64v120z")), t.UnlockOutline = l("unlock", a, c(i, "M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zm-40 376H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z")), t.UpCircleOutline = l("up-circle", a, c(i, "M518.5 360.3a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7H381c10.2 0 19.9-4.9 25.9-13.2L512 460.4l105.2 145.4c6 8.3 15.6 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.5-12.7l-178-246z", "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.UpSquareOutline = l("up-square", a, c(i, "M334 624h46.9c10.2 0 19.9-4.9 25.9-13.2L512 465.4l105.2 145.4c6 8.3 15.6 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.5-12.7l-178-246a7.95 7.95 0 0 0-12.9 0l-178 246A7.96 7.96 0 0 0 334 624z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.UsbOutline = l("usb", a, c(i, "M760 432V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V548c0-24.3 21.6-44 48.1-44h495.8c26.5 0 48.1 19.7 48.1 44v356c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zm-424 0V184h352v248H336zm120-184h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm160 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")), t.VideoCameraOutline = l("video-camera", a, c(i, "M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM712 792H136V232h576v560zm176-167l-104-59.8V458.9L888 399v226zM208 360h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z")), t.WalletOutline = l("wallet", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 464H528V448h312v128zm0 264H184V184h656v200H496c-17.7 0-32 14.3-32 32v192c0 17.7 14.3 32 32 32h344v200zM580 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.WarningOutline = l("warning", a, c(i, "M464 720a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8zm475.7 440l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-783.5-27.9L512 239.9l339.8 588.2H172.2z")), t.WechatOutline = l("wechat", a, c(i, "M690.1 377.4c5.9 0 11.8.2 17.6.5-24.4-128.7-158.3-227.1-319.9-227.1C209 150.8 64 271.4 64 420.2c0 81.1 43.6 154.2 111.9 203.6a21.5 21.5 0 0 1 9.1 17.6c0 2.4-.5 4.6-1.1 6.9-5.5 20.3-14.2 52.8-14.6 54.3-.7 2.6-1.7 5.2-1.7 7.9 0 5.9 4.8 10.8 10.8 10.8 2.3 0 4.2-.9 6.2-2l70.9-40.9c5.3-3.1 11-5 17.2-5 3.2 0 6.4.5 9.5 1.4 33.1 9.5 68.8 14.8 105.7 14.8 6 0 11.9-.1 17.8-.4-7.1-21-10.9-43.1-10.9-66 0-135.8 132.2-245.8 295.3-245.8zm-194.3-86.5c23.8 0 43.2 19.3 43.2 43.1s-19.3 43.1-43.2 43.1c-23.8 0-43.2-19.3-43.2-43.1s19.4-43.1 43.2-43.1zm-215.9 86.2c-23.8 0-43.2-19.3-43.2-43.1s19.3-43.1 43.2-43.1 43.2 19.3 43.2 43.1-19.4 43.1-43.2 43.1zm586.8 415.6c56.9-41.2 93.2-102 93.2-169.7 0-124-120.8-224.5-269.9-224.5-149 0-269.9 100.5-269.9 224.5S540.9 847.5 690 847.5c30.8 0 60.6-4.4 88.1-12.3 2.6-.8 5.2-1.2 7.9-1.2 5.2 0 9.9 1.6 14.3 4.1l59.1 34c1.7 1 3.3 1.7 5.2 1.7a9 9 0 0 0 6.4-2.6 9 9 0 0 0 2.6-6.4c0-2.2-.9-4.4-1.4-6.6-.3-1.2-7.6-28.3-12.2-45.3-.5-1.9-.9-3.8-.9-5.7.1-5.9 3.1-11.2 7.6-14.5zM600.2 587.2c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9c0 19.8-16.2 35.9-36 35.9zm179.9 0c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9a36.08 36.08 0 0 1-36 35.9z")), t.WeiboCircleOutline = l("weibo-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-44.4 672C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-93-32.2c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zm34.9-14.5c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z")), t.WindowsOutline = l("windows", a, c(i, "M120.1 770.6L443 823.2V543.8H120.1v226.8zm63.4-163.5h196.2v141.6l-196.2-31.9V607.1zm340.3 226.5l382 62.2v-352h-382v289.8zm63.4-226.5h255.3v214.4l-255.3-41.6V607.1zm-63.4-415.7v288.8h382V128.1l-382 63.3zm318.7 225.5H587.3V245l255.3-42.3v214.2zm-722.4 63.3H443V201.9l-322.9 53.5v224.8zM183.5 309l196.2-32.5v140.4H183.5V309z")), t.YahooOutline = l("yahoo", a, c(i, "M859.9 681.4h-14.1c-27.1 0-49.2 22.2-49.2 49.3v14.1c0 27.1 22.2 49.3 49.2 49.3h14.1c27.1 0 49.2-22.2 49.2-49.3v-14.1c0-27.1-22.2-49.3-49.2-49.3zM402.6 231C216.2 231 65 357 65 512.5S216.2 794 402.6 794s337.6-126 337.6-281.5S589.1 231 402.6 231zm0 507C245.1 738 121 634.6 121 512.5c0-62.3 32.3-119.7 84.9-161v48.4h37l159.8 159.9v65.3h-84.4v56.3h225.1v-56.3H459v-65.3l103.5-103.6h65.3v-56.3H459v65.3l-28.1 28.1-93.4-93.5h37v-56.3H216.4c49.4-35 114.3-56.6 186.2-56.6 157.6 0 281.6 103.4 281.6 225.5S560.2 738 402.6 738zm534.7-507H824.7c-15.5 0-27.7 12.6-27.1 28.1l13.1 366h84.4l65.4-366.4c2.7-15.2-7.8-27.7-23.2-27.7z")), t.WeiboSquareOutline = l("weibo-square", a, c(i, "M433.6 595.1c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM467.6 736C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-58.1-46.7c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z")), t.YuqueOutline = l("yuque", a, c(i, "M854.6 370.6c-9.9-39.4 9.9-102.2 73.4-124.4l-67.9-3.6s-25.7-90-143.6-98c-117.8-8.1-194.9-3-195-3 .1 0 87.4 55.6 52.4 154.7-25.6 52.5-65.8 95.6-108.8 144.7-1.3 1.3-2.5 2.6-3.5 3.7C319.4 605 96 860 96 860c245.9 64.4 410.7-6.3 508.2-91.1 20.5-.2 35.9-.3 46.3-.3 135.8 0 250.6-117.6 245.9-248.4-3.2-89.9-31.9-110.2-41.8-149.6zm-204.1 334c-10.6 0-26.2.1-46.8.3l-23.6.2-17.8 15.5c-47.1 41-104.4 71.5-171.4 87.6-52.5 12.6-110 16.2-172.7 9.6 18-20.5 36.5-41.6 55.4-63.1 92-104.6 173.8-197.5 236.9-268.5l1.4-1.4 1.3-1.5c4.1-4.6 20.6-23.3 24.7-28.1 9.7-11.1 17.3-19.9 24.5-28.6 30.7-36.7 52.2-67.8 69-102.2l1.6-3.3 1.2-3.4c13.7-38.8 15.4-76.9 6.2-112.8 22.5.7 46.5 1.9 71.7 3.6 33.3 2.3 55.5 12.9 71.1 29.2 5.8 6 10.2 12.5 13.4 18.7 1 2 1.7 3.6 2.3 5l5 17.7c-15.7 34.5-19.9 73.3-11.4 107.2 3 11.8 6.9 22.4 12.3 34.4 2.1 4.7 9.5 20.1 11 23.3 10.3 22.7 15.4 43 16.7 78.7 3.3 94.6-82.7 181.9-182 181.9z")), t.YoutubeOutline = l("youtube", a, c(i, "M960 509.2c0-2.2 0-4.7-.1-7.6-.1-8.1-.3-17.2-.5-26.9-.8-27.9-2.2-55.7-4.4-81.9-3-36.1-7.4-66.2-13.4-88.8a139.52 139.52 0 0 0-98.3-98.5c-28.3-7.6-83.7-12.3-161.7-15.2-37.1-1.4-76.8-2.3-116.5-2.8-13.9-.2-26.8-.3-38.4-.4h-29.4c-11.6.1-24.5.2-38.4.4-39.7.5-79.4 1.4-116.5 2.8-78 3-133.5 7.7-161.7 15.2A139.35 139.35 0 0 0 82.4 304C76.3 326.6 72 356.7 69 392.8c-2.2 26.2-3.6 54-4.4 81.9-.3 9.7-.4 18.8-.5 26.9 0 2.9-.1 5.4-.1 7.6v5.6c0 2.2 0 4.7.1 7.6.1 8.1.3 17.2.5 26.9.8 27.9 2.2 55.7 4.4 81.9 3 36.1 7.4 66.2 13.4 88.8 12.8 47.9 50.4 85.7 98.3 98.5 28.2 7.6 83.7 12.3 161.7 15.2 37.1 1.4 76.8 2.3 116.5 2.8 13.9.2 26.8.3 38.4.4h29.4c11.6-.1 24.5-.2 38.4-.4 39.7-.5 79.4-1.4 116.5-2.8 78-3 133.5-7.7 161.7-15.2 47.9-12.8 85.5-50.5 98.3-98.5 6.1-22.6 10.4-52.7 13.4-88.8 2.2-26.2 3.6-54 4.4-81.9.3-9.7.4-18.8.5-26.9 0-2.9.1-5.4.1-7.6v-5.6zm-72 5.2c0 2.1 0 4.4-.1 7.1-.1 7.8-.3 16.4-.5 25.7-.7 26.6-2.1 53.2-4.2 77.9-2.7 32.2-6.5 58.6-11.2 76.3-6.2 23.1-24.4 41.4-47.4 47.5-21 5.6-73.9 10.1-145.8 12.8-36.4 1.4-75.6 2.3-114.7 2.8-13.7.2-26.4.3-37.8.3h-28.6l-37.8-.3c-39.1-.5-78.2-1.4-114.7-2.8-71.9-2.8-124.9-7.2-145.8-12.8-23-6.2-41.2-24.4-47.4-47.5-4.7-17.7-8.5-44.1-11.2-76.3-2.1-24.7-3.4-51.3-4.2-77.9-.3-9.3-.4-18-.5-25.7 0-2.7-.1-5.1-.1-7.1v-4.8c0-2.1 0-4.4.1-7.1.1-7.8.3-16.4.5-25.7.7-26.6 2.1-53.2 4.2-77.9 2.7-32.2 6.5-58.6 11.2-76.3 6.2-23.1 24.4-41.4 47.4-47.5 21-5.6 73.9-10.1 145.8-12.8 36.4-1.4 75.6-2.3 114.7-2.8 13.7-.2 26.4-.3 37.8-.3h28.6l37.8.3c39.1.5 78.2 1.4 114.7 2.8 71.9 2.8 124.9 7.2 145.8 12.8 23 6.2 41.2 24.4 47.4 47.5 4.7 17.7 8.5 44.1 11.2 76.3 2.1 24.7 3.4 51.3 4.2 77.9.3 9.3.4 18 .5 25.7 0 2.7.1 5.1.1 7.1v4.8zM423 646l232-135-232-133z")), t.AlibabaOutline = l("alibaba", a, c(i, "M602.9 669.8c-37.2 2.6-33.6-17.3-11.5-46.2 50.4-67.2 143.7-158.5 147.9-225.2 5.8-86.6-81.3-113.4-171-113.4-62.4 1.6-127 18.9-171 34.6-151.6 53.5-246.6 137.5-306.9 232-62.4 93.4-43 183.2 91.8 185.8 101.8-4.2 170.5-32.5 239.7-68.2.5 0-192.5 55.1-263.9 14.7-7.9-4.2-15.7-10-17.8-26.2 0-33.1 54.6-67.7 86.6-78.7v-56.7c64.5 22.6 140.6 16.3 205.7-32 2.1 5.8 4.2 13.1 3.7 21h11c2.6-22.6-12.6-44.6-37.8-46.2 7.3 5.8 12.6 10.5 15.2 14.7l-1 1-.5.5c-83.9 58.8-165.3 31.5-173.1 29.9l46.7-45.7-13.1-33.1c92.9-32.5 169.5-56.2 296.9-78.7l-28.5-23 14.7-8.9c75.5 21 126.4 36.7 123.8 76.6-1 6.8-3.7 14.7-7.9 23.1C660.1 466.1 594 538 567.2 569c-17.3 20.5-34.6 39.4-46.7 58.3-13.6 19.4-20.5 37.3-21 53.5 2.6 131.8 391.4-61.9 468-112.9-111.7 47.8-232.9 93.5-364.6 101.9zm85-302.9c2.8 5.2 4.1 11.6 4.1 19.1-.1-6.8-1.4-13.3-4.1-19.1z")), t.AlignCenterOutline = l("align-center", a, c(i, "M264 230h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm496 424c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496zm144 140H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.AlignLeftOutline = l("align-left", a, c(i, "M120 230h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 424h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm784 140H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.AlignRightOutline = l("align-right", a, c(i, "M904 158H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 424H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 212H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.AlipayOutline = l("alipay", a, c(i, "M789 610.3c-38.7-12.9-90.7-32.7-148.5-53.6 34.8-60.3 62.5-129 80.7-203.6H530.5v-68.6h233.6v-38.3H530.5V132h-95.4c-16.7 0-16.7 16.5-16.7 16.5v97.8H182.2v38.3h236.3v68.6H223.4v38.3h378.4a667.18 667.18 0 0 1-54.5 132.9c-122.8-40.4-253.8-73.2-336.1-53-52.6 13-86.5 36.1-106.5 60.3-91.4 111-25.9 279.6 167.2 279.6C386 811.2 496 747.6 581.2 643 708.3 704 960 808.7 960 808.7V659.4s-31.6-2.5-171-49.1zM253.9 746.6c-150.5 0-195-118.3-120.6-183.1 24.8-21.9 70.2-32.6 94.4-35 89.4-8.8 172.2 25.2 269.9 72.8-68.8 89.5-156.3 145.3-243.7 145.3z")), t.AliyunOutline = l("aliyun", a, c(i, "M959.2 383.9c-.3-82.1-66.9-148.6-149.1-148.6H575.9l21.6 85.2 201 43.7a42.58 42.58 0 0 1 32.9 39.7c.1.5.1 216.1 0 216.6a42.58 42.58 0 0 1-32.9 39.7l-201 43.7-21.6 85.3h234.2c82.1 0 148.8-66.5 149.1-148.6V383.9zM225.5 660.4a42.58 42.58 0 0 1-32.9-39.7c-.1-.6-.1-216.1 0-216.6.8-19.4 14.6-35.5 32.9-39.7l201-43.7 21.6-85.2H213.8c-82.1 0-148.8 66.4-149.1 148.6V641c.3 82.1 67 148.6 149.1 148.6H448l-21.6-85.3-200.9-43.9zm200.9-158.8h171v21.3h-171z")), t.AmazonOutline = l("amazon", a, c(i, "M825 768.9c-3.3-.9-7.3-.4-11.9 1.3-61.6 28.2-121.5 48.3-179.7 60.2C507.7 856 385.2 842.6 266 790.3c-33.1-14.6-79.1-39.2-138-74a9.36 9.36 0 0 0-5.3-2c-2-.1-3.7.1-5.3.9-1.6.8-2.8 1.8-3.7 3.1-.9 1.3-1.1 3.1-.4 5.4.6 2.2 2.1 4.7 4.6 7.4 10.4 12.2 23.3 25.2 38.6 39s35.6 29.4 60.9 46.8c25.3 17.4 51.8 32.9 79.3 46.4 27.6 13.5 59.6 24.9 96.1 34.1s73 13.8 109.4 13.8c36.2 0 71.4-3.7 105.5-10.9 34.2-7.3 63-15.9 86.5-25.9 23.4-9.9 45-21 64.8-33 19.8-12 34.4-22.2 43.9-30.3 9.5-8.2 16.3-14.6 20.2-19.4 4.6-5.7 6.9-10.6 6.9-14.9.1-4.5-1.7-7.1-5-7.9zM527.4 348.1c-15.2 1.3-33.5 4.1-55 8.3-21.5 4.1-41.4 9.3-59.8 15.4s-37.2 14.6-56.3 25.4c-19.2 10.8-35.5 23.2-49 37s-24.5 31.1-33.1 52c-8.6 20.8-12.9 43.7-12.9 68.7 0 27.1 4.7 51.2 14.3 72.5 9.5 21.3 22.2 38 38.2 50.4 15.9 12.4 34 22.1 54 29.2 20 7.1 41.2 10.3 63.2 9.4 22-.9 43.5-4.3 64.4-10.3 20.8-5.9 40.4-15.4 58.6-28.3 18.2-12.9 33.1-28.2 44.8-45.7 4.3 6.6 8.1 11.5 11.5 14.7l8.7 8.9c5.8 5.9 14.7 14.6 26.7 26.1 11.9 11.5 24.1 22.7 36.3 33.7l104.4-99.9-6-4.9c-4.3-3.3-9.4-8-15.2-14.3-5.8-6.2-11.6-13.1-17.2-20.5-5.7-7.4-10.6-16.1-14.7-25.9-4.1-9.8-6.2-19.3-6.2-28.5V258.7c0-10.1-1.9-21-5.7-32.8-3.9-11.7-10.7-24.5-20.7-38.3-10-13.8-22.4-26.2-37.2-37-14.9-10.8-34.7-20-59.6-27.4-24.8-7.4-52.6-11.1-83.2-11.1-31.3 0-60.4 3.7-87.6 10.9-27.1 7.3-50.3 17-69.7 29.2-19.3 12.2-35.9 26.3-49.7 42.4-13.8 16.1-24.1 32.9-30.8 50.4-6.7 17.5-10.1 35.2-10.1 53.1L408 310c5.5-16.4 12.9-30.6 22-42.8 9.2-12.2 17.9-21 25.8-26.5 8-5.5 16.6-9.9 25.7-13.2 9.2-3.3 15.4-5 18.6-5.4 3.2-.3 5.7-.4 7.6-.4 26.7 0 45.2 7.9 55.6 23.6 6.5 9.5 9.7 23.9 9.7 43.3v56.6c-15.2.6-30.4 1.6-45.6 2.9zM573.1 500c0 16.6-2.2 31.7-6.5 45-9.2 29.1-26.7 47.4-52.4 54.8-22.4 6.6-43.7 3.3-63.9-9.8-21.5-14-32.2-33.8-32.2-59.3 0-19.9 5-36.9 15-51.1 10-14.1 23.3-24.7 40-31.7s33-12 49-14.9c15.9-3 33-4.8 51-5.4V500zm335.2 218.9c-4.3-5.4-15.9-8.9-34.9-10.7-19-1.8-35.5-1.7-49.7.4-15.3 1.8-31.1 6.2-47.3 13.4-16.3 7.1-23.4 13.1-21.6 17.8l.7 1.3.9.7 1.4.2h4.6c.8 0 1.8-.1 3.2-.2 1.4-.1 2.7-.3 3.9-.4 1.2-.1 2.9-.3 5.1-.4 2.1-.1 4.1-.4 6-.7.3 0 3.7-.3 10.3-.9 6.6-.6 11.4-1 14.3-1.3 2.9-.3 7.8-.6 14.5-.9 6.7-.3 12.1-.3 16.1 0 4 .3 8.5.7 13.6 1.1 5.1.4 9.2 1.3 12.4 2.7 3.2 1.3 5.6 3 7.1 5.1 5.2 6.6 4.2 21.2-3 43.9s-14 40.8-20.4 54.2c-2.8 5.7-2.8 9.2 0 10.7s6.7.1 11.9-4c15.6-12.2 28.6-30.6 39.1-55.3 6.1-14.6 10.5-29.8 13.1-45.7 2.4-15.9 2-26.2-1.3-31z")), t.AntCloudOutline = l("ant-cloud", a, c(i, "M378.9 738c-3.1 0-6.1-.5-8.8-1.5l4.4 30.7h26.3l-15.5-29.9c-2.1.5-4.2.7-6.4.7zm421-291.2c-12.6 0-24.8 1.5-36.5 4.2-21.4-38.4-62.3-64.3-109.3-64.3-6.9 0-13.6.6-20.2 1.6-35.4-77.4-113.4-131.1-203.9-131.1-112.3 0-205.3 82.6-221.6 190.4C127.3 455.5 64 523.8 64 607c0 88.4 71.6 160.1 160 160.2h50l13.2-27.6c-26.2-8.3-43.3-29-39.1-48.8 4.6-21.6 32.8-33.9 63.1-27.5 22.9 4.9 40.4 19.1 45.5 35.1a26.1 26.1 0 0 1 22.1-12.4h.2c-.8-3.2-1.2-6.5-1.2-9.9 0-20.1 14.8-36.7 34.1-39.6v-25.4c0-4.4 3.6-8 8-8s8 3.6 8 8v26.3c4.6 1.2 8.8 3.2 12.6 5.8l19.5-21.4c3-3.3 8-3.5 11.3-.5 3.3 3 3.5 8 .5 11.3l-20 22-.2.2a40 40 0 0 1-46.9 59.2c-.4 5.6-2.6 10.7-6 14.8l20 38.4H804v-.1c86.5-2.2 156-73 156-160.1 0-88.5-71.7-160.2-160.1-160.2zM338.2 737.2l-4.3 30h24.4l-5.9-41.5c-3.5 4.6-8.3 8.5-14.2 11.5zM797.5 305a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-65.7 61.3a24 24 0 1 0 48 0 24 24 0 1 0-48 0zM303.4 742.9l-11.6 24.3h26l3.5-24.7c-5.7.8-11.7 1-17.9.4z")), t.ApartmentOutline = l("apartment", a, c(i, "M908 640H804V488c0-4.4-3.6-8-8-8H548v-96h108c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h108v96H228c-4.4 0-8 3.6-8 8v152H116c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h288c8.8 0 16-7.2 16-16V656c0-8.8-7.2-16-16-16H292v-88h440v88H620c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h288c8.8 0 16-7.2 16-16V656c0-8.8-7.2-16-16-16zm-564 76v168H176V716h168zm84-408V140h168v168H428zm420 576H680V716h168v168z")), t.AntDesignOutline = l("ant-design", a, c(i, "M716.3 313.8c19-18.9 19-49.7 0-68.6l-69.9-69.9.1.1c-18.5-18.5-50.3-50.3-95.3-95.2-21.2-20.7-55.5-20.5-76.5.5L80.9 474.2a53.84 53.84 0 0 0 0 76.4L474.6 944a54.14 54.14 0 0 0 76.5 0l165.1-165c19-18.9 19-49.7 0-68.6a48.7 48.7 0 0 0-68.7 0l-125 125.2c-5.2 5.2-13.3 5.2-18.5 0L189.5 521.4c-5.2-5.2-5.2-13.3 0-18.5l314.4-314.2c.4-.4.9-.7 1.3-1.1 5.2-4.1 12.4-3.7 17.2 1.1l125.2 125.1c19 19 49.8 19 68.7 0zM408.6 514.4a106.3 106.2 0 1 0 212.6 0 106.3 106.2 0 1 0-212.6 0zm536.2-38.6L821.9 353.5c-19-18.9-49.8-18.9-68.7.1a48.4 48.4 0 0 0 0 68.6l83 82.9c5.2 5.2 5.2 13.3 0 18.5l-81.8 81.7a48.4 48.4 0 0 0 0 68.6 48.7 48.7 0 0 0 68.7 0l121.8-121.7a53.93 53.93 0 0 0-.1-76.4z")), t.AreaChartOutline = l("area-chart", a, c(i, "M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-616-64h536c4.4 0 8-3.6 8-8V284c0-7.2-8.7-10.7-13.7-5.7L592 488.6l-125.4-124a8.03 8.03 0 0 0-11.3 0l-189 189.6a7.87 7.87 0 0 0-2.3 5.6V720c0 4.4 3.6 8 8 8z")), t.ArrowLeftOutline = l("arrow-left", a, c(i, "M872 474H286.9l350.2-304c5.6-4.9 2.2-14-5.2-14h-88.5c-3.9 0-7.6 1.4-10.5 3.9L155 487.8a31.96 31.96 0 0 0 0 48.3L535.1 866c1.5 1.3 3.3 2 5.2 2h91.5c7.4 0 10.8-9.2 5.2-14L286.9 550H872c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")), t.ArrowDownOutline = l("arrow-down", a, c(i, "M862 465.3h-81c-4.6 0-9 2-12.1 5.5L550 723.1V160c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v563.1L255.1 470.8c-3-3.5-7.4-5.5-12.1-5.5h-81c-6.8 0-10.5 8.1-6 13.2L487.9 861a31.96 31.96 0 0 0 48.3 0L868 478.5c4.5-5.2.8-13.2-6-13.2z")), t.ArrowUpOutline = l("arrow-up", a, c(i, "M868 545.5L536.1 163a31.96 31.96 0 0 0-48.3 0L156 545.5a7.97 7.97 0 0 0 6 13.2h81c4.6 0 9-2 12.1-5.5L474 300.9V864c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V300.9l218.9 252.3c3 3.5 7.4 5.5 12.1 5.5h81c6.8 0 10.5-8 6-13.2z")), t.ArrowsAltOutline = l("arrows-alt", a, c(i, "M855 160.1l-189.2 23.5c-6.6.8-9.3 8.8-4.7 13.5l54.7 54.7-153.5 153.5a8.03 8.03 0 0 0 0 11.3l45.1 45.1c3.1 3.1 8.2 3.1 11.3 0l153.6-153.6 54.7 54.7a7.94 7.94 0 0 0 13.5-4.7L863.9 169a7.9 7.9 0 0 0-8.9-8.9zM416.6 562.3a8.03 8.03 0 0 0-11.3 0L251.8 715.9l-54.7-54.7a7.94 7.94 0 0 0-13.5 4.7L160.1 855c-.6 5.2 3.7 9.5 8.9 8.9l189.2-23.5c6.6-.8 9.3-8.8 4.7-13.5l-54.7-54.7 153.6-153.6c3.1-3.1 3.1-8.2 0-11.3l-45.2-45z")), t.ArrowRightOutline = l("arrow-right", a, c(i, "M869 487.8L491.2 159.9c-2.9-2.5-6.6-3.9-10.5-3.9h-88.5c-7.4 0-10.8 9.2-5.2 14l350.2 304H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h585.1L386.9 854c-5.6 4.9-2.2 14 5.2 14h91.5c1.9 0 3.8-.7 5.2-2L869 536.2a32.07 32.07 0 0 0 0-48.4z")), t.AuditOutline = l("audit", a, c(i, "M296 250c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm184 144H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-48 458H208V148h560v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm440-88H728v-36.6c46.3-13.8 80-56.6 80-107.4 0-61.9-50.1-112-112-112s-112 50.1-112 112c0 50.7 33.7 93.6 80 107.4V764H520c-8.8 0-16 7.2-16 16v152c0 8.8 7.2 16 16 16h352c8.8 0 16-7.2 16-16V780c0-8.8-7.2-16-16-16zM646 620c0-27.6 22.4-50 50-50s50 22.4 50 50-22.4 50-50 50-50-22.4-50-50zm180 266H566v-60h260v60z")), t.BarChartOutline = l("bar-chart", a, c(i, "M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-600-80h56c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V384c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v320c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V462c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v242c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v400c0 4.4 3.6 8 8 8z")), t.BarcodeOutline = l("barcode", a, c(i, "M120 160H72c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zm833 0h-48c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zM200 736h112c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm321 0h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm126 0h178c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8H647c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm-255 0h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm-79 64H201c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm257 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm256 0H648c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h178c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-385 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")), t.BarsOutline = l("bars", a, c(r, "M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")), t.BgColorsOutline = l("bg-colors", a, c(i, "M766.4 744.3c43.7 0 79.4-36.2 79.4-80.5 0-53.5-79.4-140.8-79.4-140.8S687 610.3 687 663.8c0 44.3 35.7 80.5 79.4 80.5zm-377.1-44.1c7.1 7.1 18.6 7.1 25.6 0l256.1-256c7.1-7.1 7.1-18.6 0-25.6l-256-256c-.6-.6-1.3-1.2-2-1.7l-78.2-78.2a9.11 9.11 0 0 0-12.8 0l-48 48a9.11 9.11 0 0 0 0 12.8l67.2 67.2-207.8 207.9c-7.1 7.1-7.1 18.6 0 25.6l255.9 256zm12.9-448.6l178.9 178.9H223.4l178.8-178.9zM904 816H120c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8z")), t.BehanceOutline = l("behance", a, c(i, "M634 294.3h199.5v48.4H634zM434.1 485.8c44.1-21.1 67.2-53.2 67.2-102.8 0-98.1-73-121.9-157.3-121.9H112v492.4h238.5c89.4 0 173.3-43 173.3-143 0-61.8-29.2-107.5-89.7-124.7zM220.2 345.1h101.5c39.1 0 74.2 10.9 74.2 56.3 0 41.8-27.3 58.6-66 58.6H220.2V345.1zm115.5 324.8H220.1V534.3H338c47.6 0 77.7 19.9 77.7 70.3 0 49.6-35.9 65.3-80 65.3zm575.8-89.5c0-105.5-61.7-193.4-173.3-193.4-108.5 0-182.3 81.7-182.3 188.8 0 111 69.9 187.2 182.3 187.2 85.1 0 140.2-38.3 166.7-120h-86.3c-9.4 30.5-47.6 46.5-77.3 46.5-57.4 0-87.4-33.6-87.4-90.7h256.9c.3-5.9.7-12.1.7-18.4zM653.9 537c3.1-46.9 34.4-76.2 81.2-76.2 49.2 0 73.8 28.9 78.1 76.2H653.9z")), t.BlockOutline = l("block", a, c(i, "M856 376H648V168c0-8.8-7.2-16-16-16H168c-8.8 0-16 7.2-16 16v464c0 8.8 7.2 16 16 16h208v208c0 8.8 7.2 16 16 16h464c8.8 0 16-7.2 16-16V392c0-8.8-7.2-16-16-16zm-480 16v188H220V220h360v156H392c-8.8 0-16 7.2-16 16zm204 52v136H444V444h136zm224 360H444V648h188c8.8 0 16-7.2 16-16V444h156v360z")), t.BoldOutline = l("bold", a, c(i, "M697.8 481.4c33.6-35 54.2-82.3 54.2-134.3v-10.2C752 229.3 663.9 142 555.3 142H259.4c-15.1 0-27.4 12.3-27.4 27.4v679.1c0 16.3 13.2 29.5 29.5 29.5h318.7c117 0 211.8-94.2 211.8-210.5v-11c0-73-37.4-137.3-94.2-175.1zM328 238h224.7c57.1 0 103.3 44.4 103.3 99.3v9.5c0 54.8-46.3 99.3-103.3 99.3H328V238zm366.6 429.4c0 62.9-51.7 113.9-115.5 113.9H328V542.7h251.1c63.8 0 115.5 51 115.5 113.9v10.8z")), t.BorderBottomOutline = l("border-bottom", a, c(i, "M872 808H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-720-94h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-498h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-166h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm166 166h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm222-72h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388-404h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388 426h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388-404h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")), t.BorderLeftOutline = l("border-left", a, c(i, "M208 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM540 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.BorderOuterOutline = l("border-outer", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM484 366h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM302 548h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm364 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-182 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 182h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")), t.BorderInnerOutline = l("border-inner", a, c(i, "M872 476H548V144h-72v332H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h324v332h72V548h324c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-664h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM650 216h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-592h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-166 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-426h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 260h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.BorderRightOutline = l("border-right", a, c(i, "M872 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.BorderHorizontalOutline = l("border-horizontal", a, c(i, "M540 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm664 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.BorderTopOutline = l("border-top", a, c(i, "M872 144H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332-498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.BorderVerticleOutline = l("border-verticle", a, c(i, "M872 476H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-664h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM650 216h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-592h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-166 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM208 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM152 382h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM208 642h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.BorderOutline = l("border", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.BranchesOutline = l("branches", a, c(i, "M740 161c-61.8 0-112 50.2-112 112 0 50.1 33.1 92.6 78.5 106.9v95.9L320 602.4V318.1c44.2-15 76-56.9 76-106.1 0-61.8-50.2-112-112-112s-112 50.2-112 112c0 49.2 31.8 91 76 106.1V706c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1v-27.8l423.5-138.7a50.52 50.52 0 0 0 34.9-48.2V378.2c42.9-15.8 73.6-57 73.6-105.2 0-61.8-50.2-112-112-112zm-504 51a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm96 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm408-491a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.CheckOutline = l("check", a, c(i, "M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z")), t.CiOutline = l("ci", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm218-572.1h-50.4c-4.4 0-8 3.6-8 8v384.2c0 4.4 3.6 8 8 8H730c4.4 0 8-3.6 8-8V319.9c0-4.4-3.6-8-8-8zm-281.4 49.6c49.5 0 83.1 31.5 87 77.6.4 4.2 3.8 7.4 8 7.4h52.6c2.4 0 4.4-2 4.4-4.4 0-81.2-64-138.1-152.3-138.1C345.4 304 286 373.5 286 488.4v49c0 114 59.4 182.6 162.3 182.6 88 0 152.3-55.1 152.3-132.5 0-2.4-2-4.4-4.4-4.4h-52.7c-4.2 0-7.6 3.2-8 7.3-4.2 43-37.7 72.4-87 72.4-61.1 0-95.6-44.9-95.6-125.2v-49.3c.1-81.4 34.6-126.8 95.7-126.8z")), t.CloseOutline = l("close", a, c(i, "M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 0 0 203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z")), t.CloudDownloadOutline = l("cloud-download", a, c(i, "M624 706.3h-74.1V464c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v242.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.7a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9z", "M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 0 1-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z")), t.CloudServerOutline = l("cloud-server", a, c(i, "M704 446H320c-4.4 0-8 3.6-8 8v402c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8V454c0-4.4-3.6-8-8-8zm-328 64h272v117H376V510zm272 290H376V683h272v117z", "M424 748a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm0-178a32 32 0 1 0 64 0 32 32 0 1 0-64 0z", "M811.4 368.9C765.6 248 648.9 162 512.2 162S258.8 247.9 213 368.8C126.9 391.5 63.5 470.2 64 563.6 64.6 668 145.6 752.9 247.6 762c4.7.4 8.7-3.3 8.7-8v-60.4c0-4-3-7.4-7-7.9-27-3.4-52.5-15.2-72.1-34.5-24-23.5-37.2-55.1-37.2-88.6 0-28 9.1-54.4 26.2-76.4 16.7-21.4 40.2-36.9 66.1-43.7l37.9-10 13.9-36.7c8.6-22.8 20.6-44.2 35.7-63.5 14.9-19.2 32.6-36 52.4-50 41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.3c19.9 14 37.5 30.8 52.4 50 15.1 19.3 27.1 40.7 35.7 63.5l13.8 36.6 37.8 10c54.2 14.4 92.1 63.7 92.1 120 0 33.6-13.2 65.1-37.2 88.6-19.5 19.2-44.9 31.1-71.9 34.5-4 .5-6.9 3.9-6.9 7.9V754c0 4.7 4.1 8.4 8.8 8 101.7-9.2 182.5-94 183.2-198.2.6-93.4-62.7-172.1-148.6-194.9z")), t.CloudSyncOutline = l("cloud-sync", a, c(i, "M811.4 368.9C765.6 248 648.9 162 512.2 162S258.8 247.9 213 368.8C126.9 391.5 63.5 470.2 64 563.6 64.6 668 145.6 752.9 247.6 762c4.7.4 8.7-3.3 8.7-8v-60.4c0-4-3-7.4-7-7.9-27-3.4-52.5-15.2-72.1-34.5-24-23.5-37.2-55.1-37.2-88.6 0-28 9.1-54.4 26.2-76.4 16.7-21.4 40.2-36.9 66.1-43.7l37.9-10 13.9-36.7c8.6-22.8 20.6-44.2 35.7-63.5 14.9-19.2 32.6-36 52.4-50 41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.3c19.9 14 37.5 30.8 52.4 50 15.1 19.3 27.1 40.7 35.7 63.5l13.8 36.6 37.8 10c54.2 14.4 92.1 63.7 92.1 120 0 33.6-13.2 65.1-37.2 88.6-19.5 19.2-44.9 31.1-71.9 34.5-4 .5-6.9 3.9-6.9 7.9V754c0 4.7 4.1 8.4 8.8 8 101.7-9.2 182.5-94 183.2-198.2.6-93.4-62.7-172.1-148.6-194.9z", "M376.9 656.4c1.8-33.5 15.7-64.7 39.5-88.6 25.4-25.5 60-39.8 96-39.8 36.2 0 70.3 14.1 96 39.8 1.4 1.4 2.7 2.8 4.1 4.3l-25 19.6a8 8 0 0 0 3 14.1l98.2 24c5 1.2 9.9-2.6 9.9-7.7l.5-101.3c0-6.7-7.6-10.5-12.9-6.3L663 532.7c-36.6-42-90.4-68.6-150.5-68.6-107.4 0-195 85.1-199.4 191.7-.2 4.5 3.4 8.3 8 8.3H369c4.2-.1 7.7-3.4 7.9-7.7zM703 664h-47.9c-4.2 0-7.7 3.3-8 7.6-1.8 33.5-15.7 64.7-39.5 88.6-25.4 25.5-60 39.8-96 39.8-36.2 0-70.3-14.1-96-39.8-1.4-1.4-2.7-2.8-4.1-4.3l25-19.6a8 8 0 0 0-3-14.1l-98.2-24c-5-1.2-9.9 2.6-9.9 7.7l-.4 101.4c0 6.7 7.6 10.5 12.9 6.3l23.2-18.2c36.6 42 90.4 68.6 150.5 68.6 107.4 0 195-85.1 199.4-191.7.2-4.5-3.4-8.3-8-8.3z")), t.CloudUploadOutline = l("cloud-upload", a, c(i, "M518.3 459a8 8 0 0 0-12.6 0l-112 141.7a7.98 7.98 0 0 0 6.3 12.9h73.9V856c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V613.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 459z", "M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 0 1-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z")), t.ClusterOutline = l("cluster", a, c(i, "M888 680h-54V540H546v-92h238c8.8 0 16-7.2 16-16V168c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h238v92H190v140h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8h-54v-72h220v72h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8h-54v-72h220v72h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8zM256 805.3c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zm288 0c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zM288 384V216h448v168H288zm544 421.3c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zM360 300a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.CodepenOutline = l("codepen", a, c(i, "M911.7 385.3l-.3-1.5c-.2-1-.3-1.9-.6-2.9-.2-.6-.4-1.1-.5-1.7-.3-.8-.5-1.7-.9-2.5-.2-.6-.5-1.1-.8-1.7-.4-.8-.8-1.5-1.2-2.3-.3-.5-.6-1.1-1-1.6-.8-1.2-1.7-2.4-2.6-3.6-.5-.6-1.1-1.3-1.7-1.9-.4-.5-.9-.9-1.4-1.3-.6-.6-1.3-1.1-1.9-1.6-.5-.4-1-.8-1.6-1.2-.2-.1-.4-.3-.6-.4L531.1 117.8a34.3 34.3 0 0 0-38.1 0L127.3 361.3c-.2.1-.4.3-.6.4-.5.4-1 .8-1.6 1.2-.7.5-1.3 1.1-1.9 1.6-.5.4-.9.9-1.4 1.3-.6.6-1.2 1.2-1.7 1.9-1 1.1-1.8 2.3-2.6 3.6-.3.5-.7 1-1 1.6-.4.7-.8 1.5-1.2 2.3-.3.5-.5 1.1-.8 1.7-.3.8-.6 1.7-.9 2.5-.2.6-.4 1.1-.5 1.7-.2.9-.4 1.9-.6 2.9l-.3 1.5c-.2 1.5-.3 3-.3 4.5v243.5c0 1.5.1 3 .3 4.5l.3 1.5.6 2.9c.2.6.3 1.1.5 1.7.3.9.6 1.7.9 2.5.2.6.5 1.1.8 1.7.4.8.7 1.5 1.2 2.3.3.5.6 1.1 1 1.6.5.7.9 1.4 1.5 2.1l1.2 1.5c.5.6 1.1 1.3 1.7 1.9.4.5.9.9 1.4 1.3.6.6 1.3 1.1 1.9 1.6.5.4 1 .8 1.6 1.2.2.1.4.3.6.4L493 905.7c5.6 3.8 12.3 5.8 19.1 5.8 6.6 0 13.3-1.9 19.1-5.8l365.6-243.5c.2-.1.4-.3.6-.4.5-.4 1-.8 1.6-1.2.7-.5 1.3-1.1 1.9-1.6.5-.4.9-.9 1.4-1.3.6-.6 1.2-1.2 1.7-1.9l1.2-1.5 1.5-2.1c.3-.5.7-1 1-1.6.4-.8.8-1.5 1.2-2.3.3-.5.5-1.1.8-1.7.3-.8.6-1.7.9-2.5.2-.5.4-1.1.5-1.7.3-.9.4-1.9.6-2.9l.3-1.5c.2-1.5.3-3 .3-4.5V389.8c-.3-1.5-.4-3-.6-4.5zM546.4 210.5l269.4 179.4-120.3 80.4-149-99.6V210.5zm-68.8 0v160.2l-149 99.6-120.3-80.4 269.3-179.4zM180.7 454.1l86 57.5-86 57.5v-115zm296.9 358.5L208.3 633.2l120.3-80.4 149 99.6v160.2zM512 592.8l-121.6-81.2L512 430.3l121.6 81.2L512 592.8zm34.4 219.8V652.4l149-99.6 120.3 80.4-269.3 179.4zM843.3 569l-86-57.5 86-57.5v115z")), t.CodeSandboxOutline = l("code-sandbox", a, c(i, "M709.6 210l.4-.2h.2L512 96 313.9 209.8h-.2l.7.3L151.5 304v416L512 928l360.5-208V304l-162.9-94zM482.7 843.6L339.6 761V621.4L210 547.8V372.9l272.7 157.3v313.4zM238.2 321.5l134.7-77.8 138.9 79.7 139.1-79.9 135.2 78-273.9 158-274-158zM814 548.3l-128.8 73.1v139.1l-143.9 83V530.4L814 373.1v175.2z")), t.ColumHeightOutline = l("colum-height", a, c(i, "M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z")), t.ColumnWidthOutline = l("column-width", a, c(i, "M180 176h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zm724 0h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zM785.3 504.3L657.7 403.6a7.23 7.23 0 0 0-11.7 5.7V476H378v-62.8c0-6-7-9.4-11.7-5.7L238.7 508.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V548h268v62.8c0 6 7 9.4 11.7 5.7l127.5-100.8c3.8-2.9 3.8-8.5.2-11.4z")), t.ColumnHeightOutline = l("column-height", a, c(i, "M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z")), t.CoffeeOutline = l("coffee", a, c(r, "M275 281c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36zm613 144H768c0-39.8-32.2-72-72-72H200c-39.8 0-72 32.2-72 72v248c0 3.4.2 6.7.7 9.9-.5 7-.7 14-.7 21.1 0 176.7 143.3 320 320 320 160.1 0 292.7-117.5 316.3-271H888c39.8 0 72-32.2 72-72V497c0-39.8-32.2-72-72-72zM696 681h-1.1c.7 7.6 1.1 15.2 1.1 23 0 137-111 248-248 248S200 841 200 704c0-7.8.4-15.4 1.1-23H200V425h496v256zm192-8H776V497h112v176zM613 281c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36zm-170 0c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36z")), t.CopyrightOutline = l("copyright", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm5.6-532.7c53 0 89 33.8 93 83.4.3 4.2 3.8 7.4 8 7.4h56.7c2.6 0 4.7-2.1 4.7-4.7 0-86.7-68.4-147.4-162.7-147.4C407.4 290 344 364.2 344 486.8v52.3C344 660.8 407.4 734 517.3 734c94 0 162.7-58.8 162.7-141.4 0-2.6-2.1-4.7-4.7-4.7h-56.8c-4.2 0-7.6 3.2-8 7.3-4.2 46.1-40.1 77.8-93 77.8-65.3 0-102.1-47.9-102.1-133.6v-52.6c.1-87 37-135.5 102.2-135.5z")), t.DashOutline = l("dash", a, c(i, "M112 476h160v72H112zm320 0h160v72H432zm320 0h160v72H752z")), t.DeploymentUnitOutline = l("deployment-unit", a, c(i, "M888.3 693.2c-42.5-24.6-94.3-18-129.2 12.8l-53-30.7V523.6c0-15.7-8.4-30.3-22-38.1l-136-78.3v-67.1c44.2-15 76-56.8 76-106.1 0-61.9-50.1-112-112-112s-112 50.1-112 112c0 49.3 31.8 91.1 76 106.1v67.1l-136 78.3c-13.6 7.8-22 22.4-22 38.1v151.6l-53 30.7c-34.9-30.8-86.8-37.4-129.2-12.8-53.5 31-71.7 99.4-41 152.9 30.8 53.5 98.9 71.9 152.2 41 42.5-24.6 62.7-73 53.6-118.8l48.7-28.3 140.6 81c6.8 3.9 14.4 5.9 22 5.9s15.2-2 22-5.9L674.5 740l48.7 28.3c-9.1 45.7 11.2 94.2 53.6 118.8 53.3 30.9 121.5 12.6 152.2-41 30.8-53.6 12.6-122-40.7-152.9zm-673 138.4a47.6 47.6 0 0 1-65.2-17.6c-13.2-22.9-5.4-52.3 17.5-65.5a47.6 47.6 0 0 1 65.2 17.6c13.2 22.9 5.4 52.3-17.5 65.5zM522 463.8zM464 234a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm170 446.2l-122 70.3-122-70.3V539.8l122-70.3 122 70.3v140.4zm239.9 133.9c-13.2 22.9-42.4 30.8-65.2 17.6-22.8-13.2-30.7-42.6-17.5-65.5s42.4-30.8 65.2-17.6c22.9 13.2 30.7 42.5 17.5 65.5z")), t.DesktopOutline = l("desktop", a, c(i, "M928 140H96c-17.7 0-32 14.3-32 32v496c0 17.7 14.3 32 32 32h380v112H304c-8.8 0-16 7.2-16 16v48c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-48c0-8.8-7.2-16-16-16H548V700h380c17.7 0 32-14.3 32-32V172c0-17.7-14.3-32-32-32zm-40 488H136V212h752v416z")), t.DingdingOutline = l("dingding", a, c(i, "M573.7 252.5C422.5 197.4 201.3 96.7 201.3 96.7c-15.7-4.1-17.9 11.1-17.9 11.1-5 61.1 33.6 160.5 53.6 182.8 19.9 22.3 319.1 113.7 319.1 113.7S326 357.9 270.5 341.9c-55.6-16-37.9 17.8-37.9 17.8 11.4 61.7 64.9 131.8 107.2 138.4 42.2 6.6 220.1 4 220.1 4s-35.5 4.1-93.2 11.9c-42.7 5.8-97 12.5-111.1 17.8-33.1 12.5 24 62.6 24 62.6 84.7 76.8 129.7 50.5 129.7 50.5 33.3-10.7 61.4-18.5 85.2-24.2L565 743.1h84.6L603 928l205.3-271.9H700.8l22.3-38.7c.3.5.4.8.4.8S799.8 496.1 829 433.8l.6-1h-.1c5-10.8 8.6-19.7 10-25.8 17-71.3-114.5-99.4-265.8-154.5z")), t.DisconnectOutline = l("disconnect", a, c(i, "M832.6 191.4c-84.6-84.6-221.5-84.6-306 0l-96.9 96.9 51 51 96.9-96.9c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204l-96.9 96.9 51.1 51.1 96.9-96.9c84.4-84.6 84.4-221.5-.1-306.1zM446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l96.9-96.9-51.1-51.1-96.9 96.9c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l96.9-96.9-51-51-96.8 97zM260.3 209.4a8.03 8.03 0 0 0-11.3 0L209.4 249a8.03 8.03 0 0 0 0 11.3l554.4 554.4c3.1 3.1 8.2 3.1 11.3 0l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3L260.3 209.4z")), t.DollarOutline = l("dollar", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm47.7-395.2l-25.4-5.9V348.6c38 5.2 61.5 29 65.5 58.2.5 4 3.9 6.9 7.9 6.9h44.9c4.7 0 8.4-4.1 8-8.8-6.1-62.3-57.4-102.3-125.9-109.2V263c0-4.4-3.6-8-8-8h-28.1c-4.4 0-8 3.6-8 8v33c-70.8 6.9-126.2 46-126.2 119 0 67.6 49.8 100.2 102.1 112.7l24.7 6.3v142.7c-44.2-5.9-69-29.5-74.1-61.3-.6-3.8-4-6.6-7.9-6.6H363c-4.7 0-8.4 4-8 8.7 4.5 55 46.2 105.6 135.2 112.1V761c0 4.4 3.6 8 8 8h28.4c4.4 0 8-3.6 8-8.1l-.2-31.7c78.3-6.9 134.3-48.8 134.3-124-.1-69.4-44.2-100.4-109-116.4zm-68.6-16.2c-5.6-1.6-10.3-3.1-15-5-33.8-12.2-49.5-31.9-49.5-57.3 0-36.3 27.5-57 64.5-61.7v124zM534.3 677V543.3c3.1.9 5.9 1.6 8.8 2.2 47.3 14.4 63.2 34.4 63.2 65.1 0 39.1-29.4 62.6-72 66.4z")), t.DoubleRightOutline = l("double-right", a, c(i, "M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 0 0 188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 0 0 492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z")), t.DotChartOutline = l("dot-chart", a, c(i, "M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM288 604a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm118-224a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm158 228a96 96 0 1 0 192 0 96 96 0 1 0-192 0zm148-314a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")), t.DoubleLeftOutline = l("double-left", a, c(i, "M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 0 0 0 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 0 0 0 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z")), t.DownloadOutline = l("download", a, c(i, "M505.7 661a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z")), t.DribbbleOutline = l("dribbble", a, c(i, "M512 96C282.6 96 96 282.6 96 512s186.6 416 416 416 416-186.6 416-416S741.4 96 512 96zm275.1 191.8c49.5 60.5 79.5 137.5 80.2 221.4-11.7-2.5-129.2-26.3-247.4-11.4-2.5-6.1-5-12.2-7.6-18.3-7.4-17.3-15.3-34.6-23.6-51.5C720 374.3 779.6 298 787.1 287.8zM512 157.2c90.3 0 172.8 33.9 235.5 89.5-6.4 9.1-59.9 81-186.2 128.4-58.2-107-122.7-194.8-132.6-208 27.3-6.6 55.2-9.9 83.3-9.9zM360.9 191c9.4 12.8 72.9 100.9 131.7 205.5C326.4 440.6 180 440 164.1 439.8c23.1-110.3 97.4-201.9 196.8-248.8zM156.7 512.5c0-3.6.1-7.3.2-10.9 15.5.3 187.7 2.5 365.2-50.6 10.2 19.9 19.9 40.1 28.8 60.3-4.7 1.3-9.4 2.7-14 4.2C353.6 574.9 256.1 736.4 248 750.1c-56.7-63-91.3-146.3-91.3-237.6zM512 867.8c-82.2 0-157.9-28-218.1-75 6.4-13.1 78.3-152 278.7-221.9l2.3-.8c49.9 129.6 70.5 238.3 75.8 269.5A350.46 350.46 0 0 1 512 867.8zm198.5-60.7c-3.6-21.6-22.5-125.6-69-253.3C752.9 536 850.7 565.2 862.8 569c-15.8 98.8-72.5 184.2-152.3 238.1z")), t.DropboxOutline = l("dropbox", a, c(i, "M64 556.9l264.2 173.5L512.5 577 246.8 412.7zm896-290.3zm0 0L696.8 95 512.5 248.5l265.2 164.2L512.5 577l184.3 153.4L960 558.8 777.7 412.7zM513 609.8L328.2 763.3l-79.4-51.5v57.8L513 928l263.7-158.4v-57.8l-78.9 51.5zM328.2 95L64 265.1l182.8 147.6 265.7-164.2zM64 556.9z")), t.EllipsisOutline = l("ellipsis", a, c(i, "M176 511a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")), t.EnterOutline = l("enter", a, c(i, "M864 170h-60c-4.4 0-8 3.6-8 8v518H310v-73c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 0 0 0 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-75h498c35.3 0 64-28.7 64-64V178c0-4.4-3.6-8-8-8z")), t.EuroOutline = l("euro", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm117.7-588.6c-15.9-3.5-34.4-5.4-55.3-5.4-106.7 0-178.9 55.7-198.6 149.9H344c-4.4 0-8 3.6-8 8v27.2c0 4.4 3.6 8 8 8h26.4c-.3 4.1-.3 8.4-.3 12.8v36.9H344c-4.4 0-8 3.6-8 8V568c0 4.4 3.6 8 8 8h30.2c17.2 99.2 90.4 158 200.2 158 20.9 0 39.4-1.7 55.3-5.1 3.7-.8 6.4-4 6.4-7.8v-42.8c0-5-4.6-8.8-9.5-7.8-14.7 2.8-31.9 4.1-51.8 4.1-68.5 0-114.5-36.6-129.8-98.6h130.6c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H439.2v-36c0-4.7 0-9.4.3-13.8h135.9c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H447.1c17.2-56.9 62.3-90.4 127.6-90.4 19.9 0 37.1 1.5 51.7 4.4a8 8 0 0 0 9.6-7.8v-42.8c0-3.8-2.6-7-6.3-7.8z")), t.ExceptionOutline = l("exception", a, c(i, "M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm376 116c-119.3 0-216 96.7-216 216s96.7 216 216 216 216-96.7 216-216-96.7-216-216-216zm107.5 323.5C750.8 868.2 712.6 884 672 884s-78.8-15.8-107.5-44.5C535.8 810.8 520 772.6 520 732s15.8-78.8 44.5-107.5C593.2 595.8 631.4 580 672 580s78.8 15.8 107.5 44.5C808.2 653.2 824 691.4 824 732s-15.8 78.8-44.5 107.5zM640 812a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm12-64h40c4.4 0 8-3.6 8-8V628c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v112c0 4.4 3.6 8 8 8zM440 852H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.ExclamationOutline = l("exclamation", a, c(i, "M448 804a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm32-168h64c4.4 0 8-3.6 8-8V164c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z")), t.ExportOutline = l("export", a, c(i, "M888.3 757.4h-53.8c-4.2 0-7.7 3.5-7.7 7.7v61.8H197.1V197.1h629.8v61.8c0 4.2 3.5 7.7 7.7 7.7h53.8c4.2 0 7.7-3.4 7.7-7.7V158.7c0-17-13.7-30.7-30.7-30.7H158.7c-17 0-30.7 13.7-30.7 30.7v706.6c0 17 13.7 30.7 30.7 30.7h706.6c17 0 30.7-13.7 30.7-30.7V765.1c0-4.3-3.5-7.7-7.7-7.7zm18.6-251.7L765 393.7c-5.3-4.2-13-.4-13 6.3v76H438c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112a8 8 0 0 0 0-12.6z")), t.FallOutline = l("fall", a, c(i, "M925.9 804l-24-199.2c-.8-6.6-8.9-9.4-13.6-4.7L829 659.5 557.7 388.3c-6.3-6.2-16.4-6.2-22.6 0L433.3 490 156.6 213.3a8.03 8.03 0 0 0-11.3 0l-45 45.2a8.03 8.03 0 0 0 0 11.3L422 591.7c6.2 6.3 16.4 6.3 22.6 0L546.4 490l226.1 226-59.3 59.3a8.01 8.01 0 0 0 4.7 13.6l199.2 24c5.1.7 9.5-3.7 8.8-8.9z")), t.FileDoneOutline = l("file-done", a, c(i, "M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm376 116c-119.3 0-216 96.7-216 216s96.7 216 216 216 216-96.7 216-216-96.7-216-216-216zm107.5 323.5C750.8 868.2 712.6 884 672 884s-78.8-15.8-107.5-44.5C535.8 810.8 520 772.6 520 732s15.8-78.8 44.5-107.5C593.2 595.8 631.4 580 672 580s78.8 15.8 107.5 44.5C808.2 653.2 824 691.4 824 732s-15.8 78.8-44.5 107.5zM761 656h-44.3c-2.6 0-5 1.2-6.5 3.3l-63.5 87.8-23.1-31.9a7.92 7.92 0 0 0-6.5-3.3H573c-6.5 0-10.3 7.4-6.5 12.7l73.8 102.1c3.2 4.4 9.7 4.4 12.9 0l114.2-158c3.9-5.3.1-12.7-6.4-12.7zM440 852H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.FileSyncOutline = l("file-sync", a, c(i, "M296 256c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm192 200v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8zm-48 396H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm104.1-115.6c1.8-34.5 16.2-66.8 40.8-91.4 26.2-26.2 62-41 99.1-41 37.4 0 72.6 14.6 99.1 41 3.2 3.2 6.3 6.6 9.2 10.1L769.2 673a8 8 0 0 0 3 14.1l93.3 22.5c5 1.2 9.8-2.6 9.9-7.7l.6-95.4a8 8 0 0 0-12.9-6.4l-20.3 15.8C805.4 569.6 748.1 540 684 540c-109.9 0-199.6 86.9-204 195.7-.2 4.5 3.5 8.3 8 8.3h48.1c4.3 0 7.8-3.3 8-7.6zM880 744h-48.1c-4.3 0-7.8 3.3-8 7.6-1.8 34.5-16.2 66.8-40.8 91.4-26.2 26.2-62 41-99.1 41-37.4 0-72.6-14.6-99.1-41-3.2-3.2-6.3-6.6-9.2-10.1l23.1-17.9a8 8 0 0 0-3-14.1l-93.3-22.5c-5-1.2-9.8 2.6-9.9 7.7l-.6 95.4a8 8 0 0 0 12.9 6.4l20.3-15.8C562.6 918.4 619.9 948 684 948c109.9 0 199.6-86.9 204-195.7.2-4.5-3.5-8.3-8-8.3z")), t.FileProtectOutline = l("file-protect", a, c(i, "M644.7 669.2a7.92 7.92 0 0 0-6.5-3.3H594c-6.5 0-10.3 7.4-6.5 12.7l73.8 102.1c3.2 4.4 9.7 4.4 12.9 0l114.2-158c3.8-5.3 0-12.7-6.5-12.7h-44.3c-2.6 0-5 1.2-6.5 3.3l-63.5 87.8-22.9-31.9zM688 306v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm184 458H208V148h560v296c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h312c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm402.6-320.8l-192-66.7c-.9-.3-1.7-.4-2.6-.4s-1.8.1-2.6.4l-192 66.7a7.96 7.96 0 0 0-5.4 7.5v251.1c0 2.5 1.1 4.8 3.1 6.3l192 150.2c1.4 1.1 3.2 1.7 4.9 1.7s3.5-.6 4.9-1.7l192-150.2c1.9-1.5 3.1-3.8 3.1-6.3V538.7c0-3.4-2.2-6.4-5.4-7.5zM826 763.7L688 871.6 550 763.7V577l138-48 138 48v186.7z")), t.FileSearchOutline = l("file-search", a, c(i, "M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm144 452H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm445.7 51.5l-93.3-93.3C814.7 780.7 828 743.9 828 704c0-97.2-78.8-176-176-176s-176 78.8-176 176 78.8 176 176 176c35.8 0 69-10.7 96.8-29l94.7 94.7c1.6 1.6 3.6 2.3 5.6 2.3s4.1-.8 5.6-2.3l31-31a7.9 7.9 0 0 0 0-11.2zM652 816c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z")), t.FileJpgOutline = l("file-jpg", a, c(r, "M874.6 301.8L596.8 21.3c-4.5-4.5-9.4-8.3-14.7-11.5-1.4-.8-2.8-1.6-4.3-2.3-.9-.5-1.9-.9-2.8-1.3-9-4-18.9-6.2-29-6.2H201c-39.8 0-73 32.2-73 72v880c0 39.8 33.2 72 73 72h623c39.8 0 71-32.2 71-72V352.5c0-19-7-37.2-20.4-50.7zM583 110.4L783.8 312H583V110.4zM823 952H200V72h311v240c0 39.8 33.2 72 73 72h239v568zM350 696.5c0 24.2-7.5 31.4-21.9 31.4-9 0-18.4-5.8-24.8-18.5L272.9 732c13.4 22.9 32.3 34.2 61.3 34.2 41.6 0 60.8-29.9 60.8-66.2V577h-45v119.5zM501.3 577H437v186h44v-62h21.6c39.1 0 73.1-19.6 73.1-63.6 0-45.8-33.5-60.4-74.4-60.4zm-.8 89H481v-53h18.2c21.5 0 33.4 6.2 33.4 24.9 0 18.1-10.5 28.1-32.1 28.1zm182.5-9v36h30v30.1c-4 2.9-11 4.7-17.7 4.7-34.3 0-50.7-21.4-50.7-58.2 0-36.1 19.7-57.4 47.1-57.4 15.3 0 25 6.2 34 14.4l23.7-28.3c-12.7-12.8-32.1-24.2-59.2-24.2-49.6 0-91.1 35.3-91.1 97 0 62.7 40 95.1 91.5 95.1 25.9 0 49.2-10.2 61.5-22.6V657H683z")), t.FontColorsOutline = l("font-colors", a, c(i, "M904 816H120c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8zm-650.3-80h85c4.2 0 8-2.7 9.3-6.8l53.7-166h219.2l53.2 166c1.3 4 5 6.8 9.3 6.8h89.1c1.1 0 2.2-.2 3.2-.5a9.7 9.7 0 0 0 6-12.4L573.6 118.6a9.9 9.9 0 0 0-9.2-6.6H462.1c-4.2 0-7.9 2.6-9.2 6.6L244.5 723.1c-.4 1-.5 2.1-.5 3.2-.1 5.3 4.3 9.7 9.7 9.7zm255.9-516.1h4.1l83.8 263.8H424.9l84.7-263.8z")), t.FontSizeOutline = l("font-size", a, c(i, "M920 416H616c-4.4 0-8 3.6-8 8v112c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-56h60v320h-46c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h164c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-46V480h60v56c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V424c0-4.4-3.6-8-8-8zM656 296V168c0-4.4-3.6-8-8-8H104c-4.4 0-8 3.6-8 8v128c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-64h168v560h-92c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-92V232h168v64c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8z")), t.ForkOutline = l("fork", a, c(i, "M752 100c-61.8 0-112 50.2-112 112 0 47.7 29.9 88.5 72 104.6v27.6L512 601.4 312 344.2v-27.6c42.1-16.1 72-56.9 72-104.6 0-61.8-50.2-112-112-112s-112 50.2-112 112c0 50.6 33.8 93.5 80 107.3v34.4c0 9.7 3.3 19.3 9.3 27L476 672.3v33.6c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1v-33.6l226.7-291.6c6-7.7 9.3-17.3 9.3-27v-34.4c46.2-13.8 80-56.7 80-107.3 0-61.8-50.2-112-112-112zM224 212a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm336 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm192-552a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.FormOutline = l("form", a, c(i, "M904 512h-56c-4.4 0-8 3.6-8 8v320H184V184h320c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V520c0-4.4-3.6-8-8-8z", "M355.9 534.9L354 653.8c-.1 8.9 7.1 16.2 16 16.2h.4l118-2.9c2-.1 4-.9 5.4-2.3l415.9-415c3.1-3.1 3.1-8.2 0-11.3L785.4 114.3c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-415.8 415a8.3 8.3 0 0 0-2.3 5.6zm63.5 23.6L779.7 199l45.2 45.1-360.5 359.7-45.7 1.1.7-46.4z")), t.FullscreenExitOutline = l("fullscreen-exit", a, c(i, "M391 240.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3a8.03 8.03 0 0 0-11.3 0l-42.4 42.3a8.03 8.03 0 0 0 0 11.3L280 333.6l-43.9 43.9a8.01 8.01 0 0 0 4.7 13.6L401 410c5.1.6 9.5-3.7 8.9-8.9L391 240.9zm10.1 373.2L240.8 633c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824a8.03 8.03 0 0 0 0 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7A8.01 8.01 0 0 0 391 783l18.9-160.1c.6-5.1-3.7-9.4-8.8-8.8zm221.8-204.2L783.2 391c6.6-.8 9.4-8.9 4.7-13.6L744 333.6 877.7 200c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.3a8.03 8.03 0 0 0-11.3 0L690.3 279.9l-43.7-43.7a8.01 8.01 0 0 0-13.6 4.7L614.1 401c-.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9a8.01 8.01 0 0 0-4.7-13.6L623 614c-5.1-.6-9.5 3.7-8.9 8.9L633 783.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z")), t.FullscreenOutline = l("fullscreen", a, c(i, "M290 236.4l43.9-43.9a8.01 8.01 0 0 0-4.7-13.6L169 160c-5.1-.6-9.5 3.7-8.9 8.9L179 329.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zm352.7 187.3c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7a8.01 8.01 0 0 0 13.6-4.7L863.9 169c.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370a8.03 8.03 0 0 0 0 11.3l42.4 42.4zM845 694.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3a8.03 8.03 0 0 0-11.3 0l-42.4 42.3a8.03 8.03 0 0 0 0 11.3L734 787.6l-43.9 43.9a8.01 8.01 0 0 0 4.7 13.6L855 864c5.1.6 9.5-3.7 8.9-8.9L845 694.9zm-463.7-94.6a8.03 8.03 0 0 0-11.3 0L236.3 733.9l-43.7-43.7a8.01 8.01 0 0 0-13.6 4.7L160.1 855c-.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z")), t.GatewayOutline = l("gateway", a, c(i, "M928 392c8.8 0 16-7.2 16-16V192c0-8.8-7.2-16-16-16H744c-8.8 0-16 7.2-16 16v56H296v-56c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16v184c0 8.8 7.2 16 16 16h56v240H96c-8.8 0-16 7.2-16 16v184c0 8.8 7.2 16 16 16h184c8.8 0 16-7.2 16-16v-56h432v56c0 8.8 7.2 16 16 16h184c8.8 0 16-7.2 16-16V648c0-8.8-7.2-16-16-16h-56V392h56zM792 240h88v88h-88v-88zm-648 88v-88h88v88h-88zm88 456h-88v-88h88v88zm648-88v88h-88v-88h88zm-80-64h-56c-8.8 0-16 7.2-16 16v56H296v-56c0-8.8-7.2-16-16-16h-56V392h56c8.8 0 16-7.2 16-16v-56h432v56c0 8.8 7.2 16 16 16h56v240z")), t.DownOutline = l("down", a, c(i, "M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z")), t.DragOutline = l("drag", a, c(i, "M909.3 506.3L781.7 405.6a7.23 7.23 0 0 0-11.7 5.7V476H548V254h64.8c6 0 9.4-7 5.7-11.7L517.7 114.7a7.14 7.14 0 0 0-11.3 0L405.6 242.3a7.23 7.23 0 0 0 5.7 11.7H476v222H254v-64.8c0-6-7-9.4-11.7-5.7L114.7 506.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V548h222v222h-64.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V548h222v64.8c0 6 7 9.4 11.7 5.7l127.5-100.8a7.3 7.3 0 0 0 .1-11.4z")), t.GlobalOutline = l("global", a, c(i, "M854.4 800.9c.2-.3.5-.6.7-.9C920.6 722.1 960 621.7 960 512s-39.4-210.1-104.8-288c-.2-.3-.5-.5-.7-.8-1.1-1.3-2.1-2.5-3.2-3.7-.4-.5-.8-.9-1.2-1.4l-4.1-4.7-.1-.1c-1.5-1.7-3.1-3.4-4.6-5.1l-.1-.1c-3.2-3.4-6.4-6.8-9.7-10.1l-.1-.1-4.8-4.8-.3-.3c-1.5-1.5-3-2.9-4.5-4.3-.5-.5-1-1-1.6-1.5-1-1-2-1.9-3-2.8-.3-.3-.7-.6-1-1C736.4 109.2 629.5 64 512 64s-224.4 45.2-304.3 119.2c-.3.3-.7.6-1 1-1 .9-2 1.9-3 2.9-.5.5-1 1-1.6 1.5-1.5 1.4-3 2.9-4.5 4.3l-.3.3-4.8 4.8-.1.1c-3.3 3.3-6.5 6.7-9.7 10.1l-.1.1c-1.6 1.7-3.1 3.4-4.6 5.1l-.1.1c-1.4 1.5-2.8 3.1-4.1 4.7-.4.5-.8.9-1.2 1.4-1.1 1.2-2.1 2.5-3.2 3.7-.2.3-.5.5-.7.8C103.4 301.9 64 402.3 64 512s39.4 210.1 104.8 288c.2.3.5.6.7.9l3.1 3.7c.4.5.8.9 1.2 1.4l4.1 4.7c0 .1.1.1.1.2 1.5 1.7 3 3.4 4.6 5l.1.1c3.2 3.4 6.4 6.8 9.6 10.1l.1.1c1.6 1.6 3.1 3.2 4.7 4.7l.3.3c3.3 3.3 6.7 6.5 10.1 9.6 80.1 74 187 119.2 304.5 119.2s224.4-45.2 304.3-119.2a300 300 0 0 0 10-9.6l.3-.3c1.6-1.6 3.2-3.1 4.7-4.7l.1-.1c3.3-3.3 6.5-6.7 9.6-10.1l.1-.1c1.5-1.7 3.1-3.3 4.6-5 0-.1.1-.1.1-.2 1.4-1.5 2.8-3.1 4.1-4.7.4-.5.8-.9 1.2-1.4a99 99 0 0 0 3.3-3.7zm4.1-142.6c-13.8 32.6-32 62.8-54.2 90.2a444.07 444.07 0 0 0-81.5-55.9c11.6-46.9 18.8-98.4 20.7-152.6H887c-3 40.9-12.6 80.6-28.5 118.3zM887 484H743.5c-1.9-54.2-9.1-105.7-20.7-152.6 29.3-15.6 56.6-34.4 81.5-55.9A373.86 373.86 0 0 1 887 484zM658.3 165.5c39.7 16.8 75.8 40 107.6 69.2a394.72 394.72 0 0 1-59.4 41.8c-15.7-45-35.8-84.1-59.2-115.4 3.7 1.4 7.4 2.9 11 4.4zm-90.6 700.6c-9.2 7.2-18.4 12.7-27.7 16.4V697a389.1 389.1 0 0 1 115.7 26.2c-8.3 24.6-17.9 47.3-29 67.8-17.4 32.4-37.8 58.3-59 75.1zm59-633.1c11 20.6 20.7 43.3 29 67.8A389.1 389.1 0 0 1 540 327V141.6c9.2 3.7 18.5 9.1 27.7 16.4 21.2 16.7 41.6 42.6 59 75zM540 640.9V540h147.5c-1.6 44.2-7.1 87.1-16.3 127.8l-.3 1.2A445.02 445.02 0 0 0 540 640.9zm0-156.9V383.1c45.8-2.8 89.8-12.5 130.9-28.1l.3 1.2c9.2 40.7 14.7 83.5 16.3 127.8H540zm-56 56v100.9c-45.8 2.8-89.8 12.5-130.9 28.1l-.3-1.2c-9.2-40.7-14.7-83.5-16.3-127.8H484zm-147.5-56c1.6-44.2 7.1-87.1 16.3-127.8l.3-1.2c41.1 15.6 85 25.3 130.9 28.1V484H336.5zM484 697v185.4c-9.2-3.7-18.5-9.1-27.7-16.4-21.2-16.7-41.7-42.7-59.1-75.1-11-20.6-20.7-43.3-29-67.8 37.2-14.6 75.9-23.3 115.8-26.1zm0-370a389.1 389.1 0 0 1-115.7-26.2c8.3-24.6 17.9-47.3 29-67.8 17.4-32.4 37.8-58.4 59.1-75.1 9.2-7.2 18.4-12.7 27.7-16.4V327zM365.7 165.5c3.7-1.5 7.3-3 11-4.4-23.4 31.3-43.5 70.4-59.2 115.4-21-12-40.9-26-59.4-41.8 31.8-29.2 67.9-52.4 107.6-69.2zM165.5 365.7c13.8-32.6 32-62.8 54.2-90.2 24.9 21.5 52.2 40.3 81.5 55.9-11.6 46.9-18.8 98.4-20.7 152.6H137c3-40.9 12.6-80.6 28.5-118.3zM137 540h143.5c1.9 54.2 9.1 105.7 20.7 152.6a444.07 444.07 0 0 0-81.5 55.9A373.86 373.86 0 0 1 137 540zm228.7 318.5c-39.7-16.8-75.8-40-107.6-69.2 18.5-15.8 38.4-29.7 59.4-41.8 15.7 45 35.8 84.1 59.2 115.4-3.7-1.4-7.4-2.9-11-4.4zm292.6 0c-3.7 1.5-7.3 3-11 4.4 23.4-31.3 43.5-70.4 59.2-115.4 21 12 40.9 26 59.4 41.8a373.81 373.81 0 0 1-107.6 69.2z")), t.GooglePlusOutline = l("google-plus", a, c(i, "M879.5 470.4c-.3-27-.4-54.2-.5-81.3h-80.8c-.3 27-.5 54.1-.7 81.3-27.2.1-54.2.3-81.2.6v80.9c27 .3 54.2.5 81.2.8.3 27 .3 54.1.5 81.1h80.9c.1-27 .3-54.1.5-81.3 27.2-.3 54.2-.4 81.2-.7v-80.9c-26.9-.2-54.1-.2-81.1-.5zm-530 .4c-.1 32.3 0 64.7.1 97 54.2 1.8 108.5 1 162.7 1.8-23.9 120.3-187.4 159.3-273.9 80.7-89-68.9-84.8-220 7.7-284 64.7-51.6 156.6-38.9 221.3 5.8 25.4-23.5 49.2-48.7 72.1-74.7-53.8-42.9-119.8-73.5-190-70.3-146.6-4.9-281.3 123.5-283.7 270.2-9.4 119.9 69.4 237.4 180.6 279.8 110.8 42.7 252.9 13.6 323.7-86 46.7-62.9 56.8-143.9 51.3-220-90.7-.7-181.3-.6-271.9-.3z")), t.GoogleOutline = l("google", a, c(i, "M881 442.4H519.7v148.5h206.4c-8.9 48-35.9 88.6-76.6 115.8-34.4 23-78.3 36.6-129.9 36.6-99.9 0-184.4-67.5-214.6-158.2-7.6-23-12-47.6-12-72.9s4.4-49.9 12-72.9c30.3-90.6 114.8-158.1 214.7-158.1 56.3 0 106.8 19.4 146.6 57.4l110-110.1c-66.5-62-153.2-100-256.6-100-149.9 0-279.6 86-342.7 211.4-26 51.8-40.8 110.4-40.8 172.4S151 632.8 177 684.6C240.1 810 369.8 896 519.7 896c103.6 0 190.4-34.4 253.8-93 72.5-66.8 114.4-165.2 114.4-282.1 0-27.2-2.4-53.3-6.9-78.5z")), t.HeatMapOutline = l("heat-map", a, c(i, "M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-790.4-23.9L512 231.9 858.7 832H165.3zm319-474.1l-228 394c-12.3 21.3 3.1 48 27.7 48h455.8c24.7 0 40.1-26.7 27.7-48L539.7 358c-6.2-10.7-17-16-27.7-16-10.8 0-21.6 5.3-27.7 16zm214 386H325.7L512 422l186.3 322zm-214-194.1l-57 98.4C415 669.5 430.4 696 455 696h114c24.6 0 39.9-26.5 27.7-47.7l-57-98.4c-6.1-10.6-16.9-15.9-27.7-15.9s-21.5 5.3-27.7 15.9zm57.1 98.4h-58.7l29.4-50.7 29.3 50.7z")), t.GoldOutline = l("gold", a, c(i, "M342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8zm91.2-196h159.5l20.7 128h-201l20.8-128zm2.5 282.7c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM196.5 748l20.7-128h159.5l20.7 128H196.5zm709.4 58.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zM626.5 748l20.7-128h159.5l20.7 128H626.5z")), t.HistoryOutline = l("history", a, c(i, "M536.1 273H488c-4.4 0-8 3.6-8 8v275.3c0 2.6 1.2 5 3.3 6.5l165.3 120.7c3.6 2.6 8.6 1.9 11.2-1.7l28.6-39c2.7-3.7 1.9-8.7-1.7-11.2L544.1 528.5V281c0-4.4-3.6-8-8-8zm219.8 75.2l156.8 38.3c5 1.2 9.9-2.6 9.9-7.7l.8-161.5c0-6.7-7.7-10.5-12.9-6.3L752.9 334.1a8 8 0 0 0 3 14.1zm167.7 301.1l-56.7-19.5a8 8 0 0 0-10.1 4.8c-1.9 5.1-3.9 10.1-6 15.1-17.8 42.1-43.3 80-75.9 112.5a353 353 0 0 1-112.5 75.9 352.18 352.18 0 0 1-137.7 27.8c-47.8 0-94.1-9.3-137.7-27.8a353 353 0 0 1-112.5-75.9c-32.5-32.5-58-70.4-75.9-112.5A353.44 353.44 0 0 1 171 512c0-47.8 9.3-94.2 27.8-137.8 17.8-42.1 43.3-80 75.9-112.5a353 353 0 0 1 112.5-75.9C430.6 167.3 477 158 524.8 158s94.1 9.3 137.7 27.8A353 353 0 0 1 775 261.7c10.2 10.3 19.8 21 28.6 32.3l59.8-46.8C784.7 146.6 662.2 81.9 524.6 82 285 82.1 92.6 276.7 95 516.4 97.4 751.9 288.9 942 524.8 942c185.5 0 343.5-117.6 403.7-282.3 1.5-4.2-.7-8.9-4.9-10.4z")), t.IeOutline = l("ie", a, c(i, "M852.6 367.6c16.3-36.9 32.1-90.7 32.1-131.8 0-109.1-119.5-147.6-314.5-57.9-161.4-10.8-316.8 110.5-355.6 279.7 46.3-52.3 117.4-123.4 183-151.7C316.1 378.3 246.7 470 194 565.6c-31.1 56.9-66 148.8-66 217.5 0 147.9 139.3 129.8 270.4 63 47.1 23.1 99.8 23.4 152.5 23.4 145.7 0 276.4-81.4 325.2-219H694.9c-78.8 132.9-295.2 79.5-295.2-71.2h493.2c9.6-65.4-2.5-143.6-40.3-211.7zM224.8 648.3c26.6 76.7 80.6 143.8 150.4 185-133.1 73.4-259.9 43.6-150.4-185zm174-163.3c3-82.7 75.4-142.3 156-142.3 80.1 0 153 59.6 156 142.3h-312zm276.8-281.4c32.1-15.4 72.8-33 108.8-33 47.1 0 81.4 32.6 81.4 80.6 0 30-11.1 73.5-21.9 101.8-39.3-63.5-98.9-122.4-168.3-149.4z")), t.InboxOutline = l("inbox", a, c(r, "M885.2 446.3l-.2-.8-112.2-285.1c-5-16.1-19.9-27.2-36.8-27.2H281.2c-17 0-32.1 11.3-36.9 27.6L139.4 443l-.3.7-.2.8c-1.3 4.9-1.7 9.9-1 14.8-.1 1.6-.2 3.2-.2 4.8V830a60.9 60.9 0 0 0 60.8 60.8h627.2c33.5 0 60.8-27.3 60.9-60.8V464.1c0-1.3 0-2.6-.1-3.7.4-4.9 0-9.6-1.3-14.1zm-295.8-43l-.3 15.7c-.8 44.9-31.8 75.1-77.1 75.1-22.1 0-41.1-7.1-54.8-20.6S436 441.2 435.6 419l-.3-15.7H229.5L309 210h399.2l81.7 193.3H589.4zm-375 76.8h157.3c24.3 57.1 76 90.8 140.4 90.8 33.7 0 65-9.4 90.3-27.2 22.2-15.6 39.5-37.4 50.7-63.6h156.5V814H214.4V480.1z")), t.ImportOutline = l("import", a, c(i, "M888.3 757.4h-53.8c-4.2 0-7.7 3.5-7.7 7.7v61.8H197.1V197.1h629.8v61.8c0 4.2 3.5 7.7 7.7 7.7h53.8c4.2 0 7.7-3.4 7.7-7.7V158.7c0-17-13.7-30.7-30.7-30.7H158.7c-17 0-30.7 13.7-30.7 30.7v706.6c0 17 13.7 30.7 30.7 30.7h706.6c17 0 30.7-13.7 30.7-30.7V765.1c0-4.3-3.5-7.7-7.7-7.7zM902 476H588v-76c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 0 0 0 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-76h314c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.InfoOutline = l("info", a, c(i, "M448 224a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm96 168h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V400c0-4.4-3.6-8-8-8z")), t.ItalicOutline = l("italic", a, c(i, "M798 160H366c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h181.2l-156 544H229c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8H474.4l156-544H798c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8z")), t.IssuesCloseOutline = l("issues-close", a, c(i, "M464 688a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72-112c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48zm400-188h-59.3c-2.6 0-5 1.2-6.5 3.3L763.7 538.1l-49.9-68.8a7.92 7.92 0 0 0-6.5-3.3H648c-6.5 0-10.3 7.4-6.5 12.7l109.2 150.7a16.1 16.1 0 0 0 26 0l165.8-228.7c3.8-5.3 0-12.7-6.5-12.7zm-44 306h-64.2c-5.5 0-10.6 2.9-13.6 7.5a352.2 352.2 0 0 1-49.8 62.2A355.92 355.92 0 0 1 651.1 840a355 355 0 0 1-138.7 27.9c-48.1 0-94.8-9.4-138.7-27.9a355.92 355.92 0 0 1-113.3-76.3A353.06 353.06 0 0 1 184 650.5c-18.6-43.8-28-90.5-28-138.5s9.4-94.7 28-138.5c17.9-42.4 43.6-80.5 76.4-113.2 32.8-32.7 70.9-58.4 113.3-76.3a355 355 0 0 1 138.7-27.9c48.1 0 94.8 9.4 138.7 27.9 42.4 17.9 80.5 43.6 113.3 76.3 19 19 35.6 39.8 49.8 62.2 2.9 4.7 8.1 7.5 13.6 7.5H892c6 0 9.8-6.3 7.2-11.6C828.8 178.5 684.7 82 517.7 80 278.9 77.2 80.5 272.5 80 511.2 79.5 750.1 273.3 944 512.4 944c169.2 0 315.6-97 386.7-238.4A8 8 0 0 0 892 694z")), t.KeyOutline = l("key", a, c(i, "M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5l-41.1 41.1-62.3-62.3a8.15 8.15 0 0 0-11.4 0l-39.8 39.8a8.15 8.15 0 0 0 0 11.4l62.3 62.3-44.9 44.9-62.3-62.3a8.15 8.15 0 0 0-11.4 0l-39.8 39.8a8.15 8.15 0 0 0 0 11.4l62.3 62.3-65.3 65.3a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6A304.06 304.06 0 0 0 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644c-60.9 0-118.2-23.7-161.2-66.8-43.1-43-66.8-100.3-66.8-161.2 0-60.9 23.7-118.2 66.8-161.2 43-43.1 100.3-66.8 161.2-66.8 60.9 0 118.2 23.7 161.2 66.8 43.1 43 66.8 100.3 66.8 161.2 0 60.9-23.7 118.2-66.8 161.2z")), t.LaptopOutline = l("laptop", a, c(i, "M956.9 845.1L896.4 632V168c0-17.7-14.3-32-32-32h-704c-17.7 0-32 14.3-32 32v464L67.9 845.1C60.4 866 75.8 888 98 888h828.8c22.2 0 37.6-22 30.1-42.9zM200.4 208h624v395h-624V208zm228.3 608l8.1-37h150.3l8.1 37H428.7zm224 0l-19.1-86.7c-.8-3.7-4.1-6.3-7.8-6.3H398.2c-3.8 0-7 2.6-7.8 6.3L371.3 816H151l42.3-149h638.2l42.3 149H652.7z")), t.LeftOutline = l("left", a, c(i, "M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 0 0 0 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z")), t.LinkOutline = l("link", a, c(i, "M574 665.4a8.03 8.03 0 0 0-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 0 0-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 0 0 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 0 0 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 0 0-11.3 0L372.3 598.7a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z")), t.LineChartOutline = l("line-chart", a, c(i, "M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM305.8 637.7c3.1 3.1 8.1 3.1 11.3 0l138.3-137.6L583 628.5c3.1 3.1 8.2 3.1 11.3 0l275.4-275.3c3.1-3.1 3.1-8.2 0-11.3l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-230 229.9L461.4 404a8.03 8.03 0 0 0-11.3 0L266.3 586.7a8.03 8.03 0 0 0 0 11.3l39.5 39.7z")), t.LineHeightOutline = l("line-height", a, c(i, "M648 160H104c-4.4 0-8 3.6-8 8v128c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-64h168v560h-92c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-92V232h168v64c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zm272.8 546H856V318h64.8c6 0 9.4-7 5.7-11.7L825.7 178.7a7.14 7.14 0 0 0-11.3 0L713.6 306.3a7.23 7.23 0 0 0 5.7 11.7H784v388h-64.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5a7.2 7.2 0 0 0-5.6-11.7z")), t.LineOutline = l("line", a, c(i, "M904 476H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.Loading3QuartersOutline = l("loading-3-quarters", a, c(r, "M512 1024c-69.1 0-136.2-13.5-199.3-40.2C251.7 958 197 921 150 874c-47-47-84-101.7-109.8-162.7C13.5 648.2 0 581.1 0 512c0-19.9 16.1-36 36-36s36 16.1 36 36c0 59.4 11.6 117 34.6 171.3 22.2 52.4 53.9 99.5 94.3 139.9 40.4 40.4 87.5 72.2 139.9 94.3C395 940.4 452.6 952 512 952c59.4 0 117-11.6 171.3-34.6 52.4-22.2 99.5-53.9 139.9-94.3 40.4-40.4 72.2-87.5 94.3-139.9C940.4 629 952 571.4 952 512c0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 0 0-94.3-139.9 437.71 437.71 0 0 0-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.2C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3s-13.5 136.2-40.2 199.3C958 772.3 921 827 874 874c-47 47-101.8 83.9-162.7 109.7-63.1 26.8-130.2 40.3-199.3 40.3z")), t.LoadingOutline = l("loading", a, c(r, "M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 0 0-94.3-139.9 437.71 437.71 0 0 0-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z")), t.LoginOutline = l("login", a, c(i, "M521.7 82c-152.5-.4-286.7 78.5-363.4 197.7-3.4 5.3.4 12.3 6.7 12.3h70.3c4.8 0 9.3-2.1 12.3-5.8 7-8.5 14.5-16.7 22.4-24.5 32.6-32.5 70.5-58.1 112.7-75.9 43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 32.6 32.5 58.1 70.4 76 112.5C865.7 417.8 875 464.1 875 512c0 47.9-9.4 94.2-27.8 137.8-17.8 42.1-43.4 80-76 112.5s-70.5 58.1-112.7 75.9A352.8 352.8 0 0 1 520.6 866c-47.9 0-94.3-9.4-137.9-27.8A353.84 353.84 0 0 1 270 762.3c-7.9-7.9-15.3-16.1-22.4-24.5-3-3.7-7.6-5.8-12.3-5.8H165c-6.3 0-10.2 7-6.7 12.3C234.9 863.2 368.5 942 520.6 942c236.2 0 428-190.1 430.4-425.6C953.4 277.1 761.3 82.6 521.7 82zM395.02 624v-76h-314c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h314v-76c0-6.7 7.8-10.5 13-6.3l141.9 112a8 8 0 0 1 0 12.6l-141.9 112c-5.2 4.1-13 .4-13-6.3z")), t.LogoutOutline = l("logout", a, c(i, "M868 732h-70.3c-4.8 0-9.3 2.1-12.3 5.8-7 8.5-14.5 16.7-22.4 24.5a353.84 353.84 0 0 1-112.7 75.9A352.8 352.8 0 0 1 512.4 866c-47.9 0-94.3-9.4-137.9-27.8a353.84 353.84 0 0 1-112.7-75.9 353.28 353.28 0 0 1-76-112.5C167.3 606.2 158 559.9 158 512s9.4-94.2 27.8-137.8c17.8-42.1 43.4-80 76-112.5s70.5-58.1 112.7-75.9c43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 7.9 7.9 15.3 16.1 22.4 24.5 3 3.7 7.6 5.8 12.3 5.8H868c6.3 0 10.2-7 6.7-12.3C798 160.5 663.8 81.6 511.3 82 271.7 82.6 79.6 277.1 82 516.4 84.4 751.9 276.2 942 512.4 942c152.1 0 285.7-78.8 362.3-197.7 3.4-5.3-.4-12.3-6.7-12.3zm88.9-226.3L815 393.7c-5.3-4.2-13-.4-13 6.3v76H488c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112a8 8 0 0 0 0-12.6z")), t.ManOutline = l("man", a, c(i, "M874 120H622c-3.3 0-6 2.7-6 6v56c0 3.3 2.7 6 6 6h160.4L583.1 387.3c-50-38.5-111-59.3-175.1-59.3-76.9 0-149.3 30-203.6 84.4S120 539.1 120 616s30 149.3 84.4 203.6C258.7 874 331.1 904 408 904s149.3-30 203.6-84.4C666 765.3 696 692.9 696 616c0-64.1-20.8-124.9-59.2-174.9L836 241.9V402c0 3.3 2.7 6 6 6h56c3.3 0 6-2.7 6-6V150c0-16.5-13.5-30-30-30zM408 828c-116.9 0-212-95.1-212-212s95.1-212 212-212 212 95.1 212 212-95.1 212-212 212z")), t.MediumOutline = l("medium", a, c(i, "M834.7 279.8l61.3-58.9V208H683.7L532.4 586.4 360.3 208H137.7v12.9l71.6 86.6c7 6.4 10.6 15.8 9.7 25.2V673c2.2 12.3-1.7 24.8-10.3 33.7L128 805v12.7h228.6v-12.9l-80.6-98a39.99 39.99 0 0 1-11.1-33.7V378.7l200.7 439.2h23.3l172.6-439.2v349.9c0 9.2 0 11.1-6 17.2l-62.1 60.3V819h301.2v-12.9l-59.9-58.9c-5.2-4-7.9-10.7-6.8-17.2V297a18.1 18.1 0 0 1 6.8-17.2z")), t.MediumWorkmarkOutline = l("medium-workmark", a, c(r, "M517.2 590.55c0 3.55 0 4.36 2.4 6.55l13.43 13.25v.57h-59.57v-25.47a41.44 41.44 0 0 1-39.5 27.65c-30.61 0-52.84-24.25-52.84-68.87 0-41.8 23.99-69.69 57.65-69.69a35.15 35.15 0 0 1 34.61 21.67v-56.19a6.99 6.99 0 0 0-2.71-6.79l-12.8-12.45v-.56l59.33-7.04v177.37zm-43.74-8.09v-83.83a22.2 22.2 0 0 0-17.74-8.4c-14.48 0-28.47 13.25-28.47 52.62 0 36.86 12.07 49.88 27.1 49.88a23.91 23.91 0 0 0 19.11-10.27zm83.23 28.46V497.74a7.65 7.65 0 0 0-2.4-6.79l-13.19-13.74v-.57h59.56v114.8c0 3.55 0 4.36 2.4 6.54l13.12 12.45v.57l-59.49-.08zm-2.16-175.67c0-13.4 10.74-24.25 23.99-24.25 13.25 0 23.98 10.86 23.98 24.25 0 13.4-10.73 24.25-23.98 24.25s-23.99-10.85-23.99-24.25zm206.83 155.06c0 3.55 0 4.6 2.4 6.79l13.43 13.25v.57h-59.88V581.9a43.4 43.4 0 0 1-41.01 31.2c-26.55 0-40.78-19.56-40.78-56.59 0-17.86 0-37.43.56-59.41a6.91 6.91 0 0 0-2.4-6.55L620.5 477.2v-.57h59.09v73.81c0 24.25 3.51 40.42 18.54 40.42a23.96 23.96 0 0 0 19.35-12.2v-80.85a7.65 7.65 0 0 0-2.4-6.79l-13.27-13.82v-.57h59.56V590.3zm202.76 20.6c0-4.36.8-59.97.8-72.75 0-24.25-3.76-40.98-20.63-40.98a26.7 26.7 0 0 0-21.19 11.64 99.68 99.68 0 0 1 2.4 23.04c0 16.81-.56 38.23-.8 59.66a6.91 6.91 0 0 0 2.4 6.55l13.43 12.45v.56h-60.12c0-4.04.8-59.98.8-72.76 0-24.65-3.76-40.98-20.39-40.98-8.2.3-15.68 4.8-19.83 11.96v82.46c0 3.56 0 4.37 2.4 6.55l13.11 12.45v.56h-59.48V498.15a7.65 7.65 0 0 0-2.4-6.8l-13.19-14.14v-.57H841v28.78c5.53-19 23.13-31.76 42.7-30.96 19.82 0 33.26 11.16 38.93 32.34a46.41 46.41 0 0 1 44.77-32.34c26.55 0 41.58 19.8 41.58 57.23 0 17.87-.56 38.24-.8 59.66a6.5 6.5 0 0 0 2.72 6.55l13.11 12.45v.57h-59.88zM215.87 593.3l17.66 17.05v.57h-89.62v-.57l17.99-17.05a6.91 6.91 0 0 0 2.4-6.55V477.69c0-4.6 0-10.83.8-16.16L104.66 613.1h-.72l-62.6-139.45c-1.37-3.47-1.77-3.72-2.65-6.06v91.43a32.08 32.08 0 0 0 2.96 17.87l25.19 33.46v.57H0v-.57l25.18-33.55a32.16 32.16 0 0 0 2.96-17.78V457.97A19.71 19.71 0 0 0 24 444.15L6.16 420.78v-.56h63.96l53.56 118.1 47.17-118.1h62.6v.56l-17.58 19.8a6.99 6.99 0 0 0-2.72 6.8v139.37a6.5 6.5 0 0 0 2.72 6.55zm70.11-54.65v.56c0 34.6 17.67 48.5 38.38 48.5a43.5 43.5 0 0 0 40.77-24.97h.56c-7.2 34.2-28.14 50.36-59.48 50.36-33.82 0-65.72-20.61-65.72-68.39 0-50.2 31.98-70.25 67.32-70.25 28.46 0 58.76 13.58 58.76 57.24v6.95h-80.59zm0-6.95h39.42v-7.04c0-35.57-7.28-45.03-18.23-45.03-13.27 0-21.35 14.15-21.35 52.07h.16z")), t.MenuUnfoldOutline = l("menu-unfold", a, c(i, "M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z")), t.MenuFoldOutline = l("menu-fold", a, c(i, "M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z")), t.MenuOutline = l("menu", a, c(i, "M904 160H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8zm0 624H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8zm0-312H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8z")), t.MinusOutline = l("minus", a, c(i, "M872 474H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")), t.MonitorOutline = l("monitor", a, c(i, "M692.8 412.7l.2-.2-34.6-44.3a7.97 7.97 0 0 0-11.2-1.4l-50.4 39.3-70.5-90.1a7.97 7.97 0 0 0-11.2-1.4l-37.9 29.7a7.97 7.97 0 0 0-1.4 11.2l70.5 90.2-.2.1 34.6 44.3c2.7 3.5 7.7 4.1 11.2 1.4l50.4-39.3 64.1 82c2.7 3.5 7.7 4.1 11.2 1.4l37.9-29.6c3.5-2.7 4.1-7.7 1.4-11.2l-64.1-82.1zM608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z")), t.MoreOutline = l("more", a, c(i, "M456 231a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 280a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 280a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")), t.OrderedListOutline = l("ordered-list", a, c(i, "M920 760H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-568H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM216 712H100c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h72.4v20.5h-35.7c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h35.7V838H100c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h116c2.2 0 4-1.8 4-4V716c0-2.2-1.8-4-4-4zM100 188h38v120c0 2.2 1.8 4 4 4h40c2.2 0 4-1.8 4-4V152c0-4.4-3.6-8-8-8h-78c-2.2 0-4 1.8-4 4v36c0 2.2 1.8 4 4 4zm116 240H100c-2.2 0-4 1.8-4 4v36c0 2.2 1.8 4 4 4h68.4l-70.3 77.7a8.3 8.3 0 0 0-2.1 5.4V592c0 2.2 1.8 4 4 4h116c2.2 0 4-1.8 4-4v-36c0-2.2-1.8-4-4-4h-68.4l70.3-77.7a8.3 8.3 0 0 0 2.1-5.4V432c0-2.2-1.8-4-4-4z")), t.NumberOutline = l("number", a, c(i, "M872 394c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H708V152c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v166H400V152c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v166H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h168v236H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h168v166c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V706h228v166c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V706h164c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H708V394h164zM628 630H400V394h228v236z")), t.PauseOutline = l("pause", a, c(i, "M304 176h80v672h-80zm408 0h-64c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8z")), t.PercentageOutline = l("percentage", a, c(i, "M855.7 210.8l-42.4-42.4a8.03 8.03 0 0 0-11.3 0L168.3 801.9a8.03 8.03 0 0 0 0 11.3l42.4 42.4c3.1 3.1 8.2 3.1 11.3 0L855.6 222c3.2-3 3.2-8.1.1-11.2zM304 448c79.4 0 144-64.6 144-144s-64.6-144-144-144-144 64.6-144 144 64.6 144 144 144zm0-216c39.7 0 72 32.3 72 72s-32.3 72-72 72-72-32.3-72-72 32.3-72 72-72zm416 344c-79.4 0-144 64.6-144 144s64.6 144 144 144 144-64.6 144-144-64.6-144-144-144zm0 216c-39.7 0-72-32.3-72-72s32.3-72 72-72 72 32.3 72 72-32.3 72-72 72z")), t.PaperClipOutline = l("paper-clip", a, c(i, "M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0 0 12.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0 0 12.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 0 0 174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z")), t.PicCenterOutline = l("pic-center", a, c(i, "M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM848 660c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h672zM232 436h560v152H232V436z")), t.PicLeftOutline = l("pic-left", a, c(i, "M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM608 660c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h512zM152 436h400v152H152V436zm552 210c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H712c-4.4 0-8 3.6-8 8v56zm8-204h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H712c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")), t.PlusOutline = l("plus", a, c(i, "M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z", "M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z")), t.PicRightOutline = l("pic-right", a, c(i, "M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-24 500c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H416c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h512zM472 436h400v152H472V436zM80 646c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H88c-4.4 0-8 3.6-8 8v56zm8-204h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H88c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")), t.PoundOutline = l("pound", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm138-209.8H469.8v-4.7c27.4-17.2 43.9-50.4 43.9-91.1 0-14.1-2.2-27.9-5.3-41H607c4.4 0 8-3.6 8-8v-30c0-4.4-3.6-8-8-8H495c-7.2-22.6-13.4-45.7-13.4-70.5 0-43.5 34-70.2 87.3-70.2 21.5 0 42.5 4.1 60.4 10.5 5.2 1.9 10.6-2 10.6-7.6v-39.5c0-3.3-2.1-6.3-5.2-7.5-18.8-7.2-43.8-12.7-70.3-12.7-92.9 0-151.5 44.5-151.5 120.3 0 26.3 6.9 52 14.6 77.1H374c-4.4 0-8 3.6-8 8v30c0 4.4 3.6 8 8 8h67.1c3.4 14.7 5.9 29.4 5.9 44.2 0 45.2-28.8 83.3-72.8 94.2-3.6.9-6.1 4.1-6.1 7.8V722c0 4.4 3.6 8 8 8H650c4.4 0 8-3.6 8-8v-39.8c0-4.4-3.6-8-8-8z")), t.PoweroffOutline = l("poweroff", a, c(i, "M705.6 124.9a8 8 0 0 0-11.6 7.2v64.2c0 5.5 2.9 10.6 7.5 13.6a352.2 352.2 0 0 1 62.2 49.8c32.7 32.8 58.4 70.9 76.3 113.3a355 355 0 0 1 27.9 138.7c0 48.1-9.4 94.8-27.9 138.7a355.92 355.92 0 0 1-76.3 113.3 353.06 353.06 0 0 1-113.2 76.4c-43.8 18.6-90.5 28-138.5 28s-94.7-9.4-138.5-28a353.06 353.06 0 0 1-113.2-76.4A355.92 355.92 0 0 1 184 650.4a355 355 0 0 1-27.9-138.7c0-48.1 9.4-94.8 27.9-138.7 17.9-42.4 43.6-80.5 76.3-113.3 19-19 39.8-35.6 62.2-49.8 4.7-2.9 7.5-8.1 7.5-13.6V132c0-6-6.3-9.8-11.6-7.2C178.5 195.2 82 339.3 80 506.3 77.2 745.1 272.5 943.5 511.2 944c239 .5 432.8-193.3 432.8-432.4 0-169.2-97-315.7-238.4-386.7zM480 560h64c4.4 0 8-3.6 8-8V88c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z")), t.PullRequestOutline = l("pull-request", a, c(i, "M788 705.9V192c0-8.8-7.2-16-16-16H602v-68.8c0-6-7-9.4-11.7-5.7L462.7 202.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V240h114v465.9c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c.1-49.2-31.7-91-75.9-106.1zM752 860a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zM384 212c0-61.8-50.2-112-112-112s-112 50.2-112 112c0 49.2 31.8 91 76 106.1V706c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1V318.1c44.2-15.1 76-56.9 76-106.1zm-160 0a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm96 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0z")), t.QqOutline = l("qq", a, c(i, "M824.8 613.2c-16-51.4-34.4-94.6-62.7-165.3C766.5 262.2 689.3 112 511.5 112 331.7 112 256.2 265.2 261 447.9c-28.4 70.8-46.7 113.7-62.7 165.3-34 109.5-23 154.8-14.6 155.8 18 2.2 70.1-82.4 70.1-82.4 0 49 25.2 112.9 79.8 159-26.4 8.1-85.7 29.9-71.6 53.8 11.4 19.3 196.2 12.3 249.5 6.3 53.3 6 238.1 13 249.5-6.3 14.1-23.8-45.3-45.7-71.6-53.8 54.6-46.2 79.8-110.1 79.8-159 0 0 52.1 84.6 70.1 82.4 8.5-1.1 19.5-46.4-14.5-155.8z")), t.QuestionOutline = l("question", a, c(i, "M764 280.9c-14-30.6-33.9-58.1-59.3-81.6C653.1 151.4 584.6 125 512 125s-141.1 26.4-192.7 74.2c-25.4 23.6-45.3 51-59.3 81.7-14.6 32-22 65.9-22 100.9v27c0 6.2 5 11.2 11.2 11.2h54c6.2 0 11.2-5 11.2-11.2v-27c0-99.5 88.6-180.4 197.6-180.4s197.6 80.9 197.6 180.4c0 40.8-14.5 79.2-42 111.2-27.2 31.7-65.6 54.4-108.1 64-24.3 5.5-46.2 19.2-61.7 38.8a110.85 110.85 0 0 0-23.9 68.6v31.4c0 6.2 5 11.2 11.2 11.2h54c6.2 0 11.2-5 11.2-11.2v-31.4c0-15.7 10.9-29.5 26-32.9 58.4-13.2 111.4-44.7 149.3-88.7 19.1-22.3 34-47.1 44.3-74 10.7-27.9 16.1-57.2 16.1-87 0-35-7.4-69-22-100.9zM512 787c-30.9 0-56 25.1-56 56s25.1 56 56 56 56-25.1 56-56-25.1-56-56-56z")), t.RadarChartOutline = l("radar-chart", a, c(i, "M926.8 397.1l-396-288a31.81 31.81 0 0 0-37.6 0l-396 288a31.99 31.99 0 0 0-11.6 35.8l151.3 466a32 32 0 0 0 30.4 22.1h489.5c13.9 0 26.1-8.9 30.4-22.1l151.3-466c4.2-13.2-.5-27.6-11.7-35.8zM838.6 417l-98.5 32-200-144.7V199.9L838.6 417zM466 567.2l-89.1 122.3-55.2-169.2L466 567.2zm-116.3-96.8L484 373.3v140.8l-134.3-43.7zM512 599.2l93.9 128.9H418.1L512 599.2zm28.1-225.9l134.2 97.1L540.1 514V373.3zM558 567.2l144.3-46.9-55.2 169.2L558 567.2zm-74-367.3v104.4L283.9 449l-98.5-32L484 199.9zM169.3 470.8l86.5 28.1 80.4 246.4-53.8 73.9-113.1-348.4zM327.1 853l50.3-69h269.3l50.3 69H327.1zm414.5-33.8l-53.8-73.9 80.4-246.4 86.5-28.1-113.1 348.4z")), t.QrcodeOutline = l("qrcode", a, c(i, "M468 128H160c-17.7 0-32 14.3-32 32v308c0 4.4 3.6 8 8 8h332c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8zm-56 284H192V192h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm194 210H136c-4.4 0-8 3.6-8 8v308c0 17.7 14.3 32 32 32h308c4.4 0 8-3.6 8-8V556c0-4.4-3.6-8-8-8zm-56 284H192V612h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm590-630H556c-4.4 0-8 3.6-8 8v332c0 4.4 3.6 8 8 8h332c4.4 0 8-3.6 8-8V160c0-17.7-14.3-32-32-32zm-32 284H612V192h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm194 210h-48c-4.4 0-8 3.6-8 8v134h-78V556c0-4.4-3.6-8-8-8H556c-4.4 0-8 3.6-8 8v332c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h78v102c0 4.4 3.6 8 8 8h190c4.4 0 8-3.6 8-8V556c0-4.4-3.6-8-8-8zM746 832h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm142 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")), t.RadiusBottomleftOutline = l("radius-bottomleft", a, c(i, "M712 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm2-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM136 374h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-174h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm752 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-230 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 624H358c-87.3 0-158-70.7-158-158V484c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v182c0 127 103 230 230 230h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.RadiusBottomrightOutline = l("radius-bottomright", a, c(i, "M368 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-58-624h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm578 102h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm292 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm174 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 276h-56c-4.4 0-8 3.6-8 8v182c0 87.3-70.7 158-158 158H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h182c127 0 230-103 230-230V484c0-4.4-3.6-8-8-8z")), t.RadiusUpleftOutline = l("radius-upleft", a, c(i, "M656 200h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm58 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 650h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm696-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-174 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm174-696H358c-127 0-230 103-230 230v182c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V358c0-87.3 70.7-158 158-158h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.RadiusUprightOutline = l("radius-upright", a, c(i, "M368 128h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-2 696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm522-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 128h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm174 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-48-696H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h182c87.3 0 158 70.7 158 158v182c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V358c0-127-103-230-230-230z")), t.RadiusSettingOutline = l("radius-setting", a, c(i, "M396 140h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-44 684h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm524-204h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 344h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm320 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm160 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm140-284c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V370c0-127-103-230-230-230H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h170c87.3 0 158 70.7 158 158v170zM236 96H92c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h144c4.4 0 8-3.6 8-8V104c0-4.4-3.6-8-8-8zm-48 101.6c0 1.3-1.1 2.4-2.4 2.4h-43.2c-1.3 0-2.4-1.1-2.4-2.4v-43.2c0-1.3 1.1-2.4 2.4-2.4h43.2c1.3 0 2.4 1.1 2.4 2.4v43.2zM920 780H776c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h144c4.4 0 8-3.6 8-8V788c0-4.4-3.6-8-8-8zm-48 101.6c0 1.3-1.1 2.4-2.4 2.4h-43.2c-1.3 0-2.4-1.1-2.4-2.4v-43.2c0-1.3 1.1-2.4 2.4-2.4h43.2c1.3 0 2.4 1.1 2.4 2.4v43.2z")), t.RedditOutline = l("reddit", a, c(i, "M288 568a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm338.7 119.7c-23.1 18.2-68.9 37.8-114.7 37.8s-91.6-19.6-114.7-37.8c-14.4-11.3-35.3-8.9-46.7 5.5s-8.9 35.3 5.5 46.7C396.3 771.6 457.5 792 512 792s115.7-20.4 155.9-52.1a33.25 33.25 0 1 0-41.2-52.2zM960 456c0-61.9-50.1-112-112-112-42.1 0-78.7 23.2-97.9 57.6-57.6-31.5-127.7-51.8-204.1-56.5L612.9 195l127.9 36.9c11.5 32.6 42.6 56.1 79.2 56.1 46.4 0 84-37.6 84-84s-37.6-84-84-84c-32 0-59.8 17.9-74 44.2L603.5 123a33.2 33.2 0 0 0-39.6 18.4l-90.8 203.9c-74.5 5.2-142.9 25.4-199.2 56.2A111.94 111.94 0 0 0 176 344c-61.9 0-112 50.1-112 112 0 45.8 27.5 85.1 66.8 102.5-7.1 21-10.8 43-10.8 65.5 0 154.6 175.5 280 392 280s392-125.4 392-280c0-22.6-3.8-44.5-10.8-65.5C932.5 541.1 960 501.8 960 456zM820 172.5a31.5 31.5 0 1 1 0 63 31.5 31.5 0 0 1 0-63zM120 456c0-30.9 25.1-56 56-56a56 56 0 0 1 50.6 32.1c-29.3 22.2-53.5 47.8-71.5 75.9a56.23 56.23 0 0 1-35.1-52zm392 381.5c-179.8 0-325.5-95.6-325.5-213.5S332.2 410.5 512 410.5 837.5 506.1 837.5 624 691.8 837.5 512 837.5zM868.8 508c-17.9-28.1-42.2-53.7-71.5-75.9 9-18.9 28.3-32.1 50.6-32.1 30.9 0 56 25.1 56 56 .1 23.5-14.5 43.7-35.1 52zM624 568a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")), t.RedoOutline = l("redo", a, c(i, "M758.2 839.1C851.8 765.9 912 651.9 912 523.9 912 303 733.5 124.3 512.6 124 291.4 123.7 112 302.8 112 523.9c0 125.2 57.5 236.9 147.6 310.2 3.5 2.8 8.6 2.2 11.4-1.3l39.4-50.5c2.7-3.4 2.1-8.3-1.2-11.1-8.1-6.6-15.9-13.7-23.4-21.2a318.64 318.64 0 0 1-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 0 1-68.6 101.7c-9.3 9.3-19.1 18-29.3 26L668.2 724a8 8 0 0 0-14.1 3l-39.6 162.2c-1.2 5 2.6 9.9 7.7 9.9l167 .8c6.7 0 10.5-7.7 6.3-12.9l-37.3-47.9z")), t.ReloadOutline = l("reload", a, c(i, "M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 0 0-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 0 1 655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 0 1 279 755.2a342.16 342.16 0 0 1-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 0 1 109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 0 0 3 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z")), t.RetweetOutline = l("retweet", a, c(r, "M136 552h63.6c4.4 0 8-3.6 8-8V288.7h528.6v72.6c0 1.9.6 3.7 1.8 5.2a8.3 8.3 0 0 0 11.7 1.4L893 255.4c4.3-5 3.6-10.3 0-13.2L749.7 129.8a8.22 8.22 0 0 0-5.2-1.8c-4.6 0-8.4 3.8-8.4 8.4V209H199.7c-39.5 0-71.7 32.2-71.7 71.8V544c0 4.4 3.6 8 8 8zm752-80h-63.6c-4.4 0-8 3.6-8 8v255.3H287.8v-72.6c0-1.9-.6-3.7-1.8-5.2a8.3 8.3 0 0 0-11.7-1.4L131 768.6c-4.3 5-3.6 10.3 0 13.2l143.3 112.4c1.5 1.2 3.3 1.8 5.2 1.8 4.6 0 8.4-3.8 8.4-8.4V815h536.6c39.5 0 71.7-32.2 71.7-71.8V480c-.2-4.4-3.8-8-8.2-8z")), t.RightOutline = l("right", a, c(i, "M765.7 486.8L314.9 134.7A7.97 7.97 0 0 0 302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 0 0 0-50.4z")), t.RiseOutline = l("rise", a, c(i, "M917 211.1l-199.2 24c-6.6.8-9.4 8.9-4.7 13.6l59.3 59.3-226 226-101.8-101.7c-6.3-6.3-16.4-6.2-22.6 0L100.3 754.1a8.03 8.03 0 0 0 0 11.3l45 45.2c3.1 3.1 8.2 3.1 11.3 0L433.3 534 535 635.7c6.3 6.2 16.4 6.2 22.6 0L829 364.5l59.3 59.3a8.01 8.01 0 0 0 13.6-4.7l24-199.2c.7-5.1-3.7-9.5-8.9-8.8z")), t.RollbackOutline = l("rollback", a, c(i, "M793 242H366v-74c0-6.7-7.7-10.4-12.9-6.3l-142 112a8 8 0 0 0 0 12.6l142 112c5.2 4.1 12.9.4 12.9-6.3v-74h415v470H175c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h618c35.3 0 64-28.7 64-64V306c0-35.3-28.7-64-64-64z")), t.SafetyOutline = l("safety", a, c(r, "M512 64L128 192v384c0 212.1 171.9 384 384 384s384-171.9 384-384V192L512 64zm312 512c0 172.3-139.7 312-312 312S200 748.3 200 576V246l312-110 312 110v330z", "M378.4 475.1a35.91 35.91 0 0 0-50.9 0 35.91 35.91 0 0 0 0 50.9l129.4 129.4 2.1 2.1a33.98 33.98 0 0 0 48.1 0L730.6 434a33.98 33.98 0 0 0 0-48.1l-2.8-2.8a33.98 33.98 0 0 0-48.1 0L483 579.7 378.4 475.1z")), t.RobotOutline = l("robot", a, c(i, "M300 328a60 60 0 1 0 120 0 60 60 0 1 0-120 0zM852 64H172c-17.7 0-32 14.3-32 32v660c0 17.7 14.3 32 32 32h680c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-32 660H204V128h616v596zM604 328a60 60 0 1 0 120 0 60 60 0 1 0-120 0zm250.2 556H169.8c-16.5 0-29.8 14.3-29.8 32v36c0 4.4 3.3 8 7.4 8h729.1c4.1 0 7.4-3.6 7.4-8v-36c.1-17.7-13.2-32-29.7-32zM664 508H360c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")), t.SearchOutline = l("search", a, c(i, "M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z")), t.ScanOutline = l("scan", a, c(i, "M136 384h56c4.4 0 8-3.6 8-8V200h176c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-37.6 0-68 30.4-68 68v180c0 4.4 3.6 8 8 8zm512-184h176v176c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V196c0-37.6-30.4-68-68-68H648c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM376 824H200V648c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v180c0 37.6 30.4 68 68 68h180c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm512-184h-56c-4.4 0-8 3.6-8 8v176H648c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h180c37.6 0 68-30.4 68-68V648c0-4.4-3.6-8-8-8zm16-164H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.ScissorOutline = l("scissor", a, c(i, "M567.1 512l318.5-319.3c5-5 1.5-13.7-5.6-13.7h-90.5c-2.1 0-4.2.8-5.6 2.3l-273.3 274-90.2-90.5c12.5-22.1 19.7-47.6 19.7-74.8 0-83.9-68.1-152-152-152s-152 68.1-152 152 68.1 152 152 152c27.7 0 53.6-7.4 75.9-20.3l90 90.3-90.1 90.3A151.04 151.04 0 0 0 288 582c-83.9 0-152 68.1-152 152s68.1 152 152 152 152-68.1 152-152c0-27.2-7.2-52.7-19.7-74.8l90.2-90.5 273.3 274c1.5 1.5 3.5 2.3 5.6 2.3H880c7.1 0 10.7-8.6 5.6-13.7L567.1 512zM288 370c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm0 444c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z")), t.SelectOutline = l("select", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h360c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H184V184h656v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32zM653.3 599.4l52.2-52.2a8.01 8.01 0 0 0-4.7-13.6l-179.4-21c-5.1-.6-9.5 3.7-8.9 8.9l21 179.4c.8 6.6 8.9 9.4 13.6 4.7l52.4-52.4 256.2 256.2c3.1 3.1 8.2 3.1 11.3 0l42.4-42.4c3.1-3.1 3.1-8.2 0-11.3L653.3 599.4z")), t.ShakeOutline = l("shake", a, c(i, "M324 666a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm616.7-309.6L667.6 83.2C655.2 70.9 638.7 64 621.1 64s-34.1 6.8-46.5 19.2L83.3 574.5a65.85 65.85 0 0 0 0 93.1l273.2 273.2c12.3 12.3 28.9 19.2 46.5 19.2s34.1-6.8 46.5-19.2l491.3-491.3c25.6-25.7 25.6-67.5-.1-93.1zM403 880.1L143.9 621l477.2-477.2 259 259.2L403 880.1zM152.8 373.7a7.9 7.9 0 0 0 11.2 0L373.7 164a7.9 7.9 0 0 0 0-11.2l-38.4-38.4a7.9 7.9 0 0 0-11.2 0L114.3 323.9a7.9 7.9 0 0 0 0 11.2l38.5 38.6zm718.6 276.6a7.9 7.9 0 0 0-11.2 0L650.3 860.1a7.9 7.9 0 0 0 0 11.2l38.4 38.4a7.9 7.9 0 0 0 11.2 0L909.7 700a7.9 7.9 0 0 0 0-11.2l-38.3-38.5z")), t.ShareAltOutline = l("share-alt", a, c(i, "M752 664c-28.5 0-54.8 10-75.4 26.7L469.4 540.8a160.68 160.68 0 0 0 0-57.6l207.2-149.9C697.2 350 723.5 360 752 360c66.2 0 120-53.8 120-120s-53.8-120-120-120-120 53.8-120 120c0 11.6 1.6 22.7 4.7 33.3L439.9 415.8C410.7 377.1 364.3 352 312 352c-88.4 0-160 71.6-160 160s71.6 160 160 160c52.3 0 98.7-25.1 127.9-63.8l196.8 142.5c-3.1 10.6-4.7 21.8-4.7 33.3 0 66.2 53.8 120 120 120s120-53.8 120-120-53.8-120-120-120zm0-476c28.7 0 52 23.3 52 52s-23.3 52-52 52-52-23.3-52-52 23.3-52 52-52zM312 600c-48.5 0-88-39.5-88-88s39.5-88 88-88 88 39.5 88 88-39.5 88-88 88zm440 236c-28.7 0-52-23.3-52-52s23.3-52 52-52 52 23.3 52 52-23.3 52-52 52z")), t.ShoppingCartOutline = l("shopping-cart", a, c(r, "M922.9 701.9H327.4l29.9-60.9 496.8-.9c16.8 0 31.2-12 34.2-28.6l68.8-385.1c1.8-10.1-.9-20.5-7.5-28.4a34.99 34.99 0 0 0-26.6-12.5l-632-2.1-5.4-25.4c-3.4-16.2-18-28-34.6-28H96.5a35.3 35.3 0 1 0 0 70.6h125.9L246 312.8l58.1 281.3-74.8 122.1a34.96 34.96 0 0 0-3 36.8c6 11.9 18.1 19.4 31.5 19.4h62.8a102.43 102.43 0 0 0-20.6 61.7c0 56.6 46 102.6 102.6 102.6s102.6-46 102.6-102.6c0-22.3-7.4-44-20.6-61.7h161.1a102.43 102.43 0 0 0-20.6 61.7c0 56.6 46 102.6 102.6 102.6s102.6-46 102.6-102.6c0-22.3-7.4-44-20.6-61.7H923c19.4 0 35.3-15.8 35.3-35.3a35.42 35.42 0 0 0-35.4-35.2zM305.7 253l575.8 1.9-56.4 315.8-452.3.8L305.7 253zm96.9 612.7c-17.4 0-31.6-14.2-31.6-31.6 0-17.4 14.2-31.6 31.6-31.6s31.6 14.2 31.6 31.6a31.6 31.6 0 0 1-31.6 31.6zm325.1 0c-17.4 0-31.6-14.2-31.6-31.6 0-17.4 14.2-31.6 31.6-31.6s31.6 14.2 31.6 31.6a31.6 31.6 0 0 1-31.6 31.6z")), t.ShrinkOutline = l("shrink", a, c(i, "M881.7 187.4l-45.1-45.1a8.03 8.03 0 0 0-11.3 0L667.8 299.9l-54.7-54.7a7.94 7.94 0 0 0-13.5 4.7L576.1 439c-.6 5.2 3.7 9.5 8.9 8.9l189.2-23.5c6.6-.8 9.3-8.8 4.7-13.5l-54.7-54.7 157.6-157.6c3-3 3-8.1-.1-11.2zM439 576.1l-189.2 23.5c-6.6.8-9.3 8.9-4.7 13.5l54.7 54.7-157.5 157.5a8.03 8.03 0 0 0 0 11.3l45.1 45.1c3.1 3.1 8.2 3.1 11.3 0l157.6-157.6 54.7 54.7a7.94 7.94 0 0 0 13.5-4.7L447.9 585a7.9 7.9 0 0 0-8.9-8.9z")), t.SlackOutline = l("slack", a, c(i, "M409.4 128c-42.4 0-76.7 34.4-76.7 76.8 0 20.3 8.1 39.9 22.4 54.3a76.74 76.74 0 0 0 54.3 22.5h76.7v-76.8c0-42.3-34.3-76.7-76.7-76.8zm0 204.8H204.7c-42.4 0-76.7 34.4-76.7 76.8s34.4 76.8 76.7 76.8h204.6c42.4 0 76.7-34.4 76.7-76.8.1-42.4-34.3-76.8-76.6-76.8zM614 486.4c42.4 0 76.8-34.4 76.7-76.8V204.8c0-42.4-34.3-76.8-76.7-76.8-42.4 0-76.7 34.4-76.7 76.8v204.8c0 42.5 34.3 76.8 76.7 76.8zm281.4-76.8c0-42.4-34.4-76.8-76.7-76.8S742 367.2 742 409.6v76.8h76.7c42.3 0 76.7-34.4 76.7-76.8zm-76.8 128H614c-42.4 0-76.7 34.4-76.7 76.8 0 20.3 8.1 39.9 22.4 54.3a76.74 76.74 0 0 0 54.3 22.5h204.6c42.4 0 76.7-34.4 76.7-76.8.1-42.4-34.3-76.7-76.7-76.8zM614 742.4h-76.7v76.8c0 42.4 34.4 76.8 76.7 76.8 42.4 0 76.8-34.4 76.7-76.8.1-42.4-34.3-76.7-76.7-76.8zM409.4 537.6c-42.4 0-76.7 34.4-76.7 76.8v204.8c0 42.4 34.4 76.8 76.7 76.8 42.4 0 76.8-34.4 76.7-76.8V614.4c0-20.3-8.1-39.9-22.4-54.3a76.92 76.92 0 0 0-54.3-22.5zM128 614.4c0 20.3 8.1 39.9 22.4 54.3a76.74 76.74 0 0 0 54.3 22.5c42.4 0 76.8-34.4 76.7-76.8v-76.8h-76.7c-42.3 0-76.7 34.4-76.7 76.8z")), t.SmallDashOutline = l("small-dash", a, c(i, "M112 476h72v72h-72zm182 0h72v72h-72zm364 0h72v72h-72zm182 0h72v72h-72zm-364 0h72v72h-72z")), t.SolutionOutline = l("solution", a, c(i, "M688 264c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48zm-8 136H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM480 544H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-48 308H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm356.8-74.4c29-26.3 47.2-64.3 47.2-106.6 0-79.5-64.5-144-144-144s-144 64.5-144 144c0 42.3 18.2 80.3 47.2 106.6-57 32.5-96.2 92.7-99.2 162.1-.2 4.5 3.5 8.3 8 8.3h48.1c4.2 0 7.7-3.3 8-7.6C564 871.2 621.7 816 692 816s128 55.2 131.9 124.4c.2 4.2 3.7 7.6 8 7.6H880c4.6 0 8.2-3.8 8-8.3-2.9-69.5-42.2-129.6-99.2-162.1zM692 591c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z")), t.SketchOutline = l("sketch", a, c(i, "M925.6 405.1l-203-253.7a6.5 6.5 0 0 0-5-2.4H306.4c-1.9 0-3.8.9-5 2.4l-203 253.7a6.5 6.5 0 0 0 .2 8.3l408.6 459.5c1.2 1.4 3 2.1 4.8 2.1 1.8 0 3.5-.8 4.8-2.1l408.6-459.5a6.5 6.5 0 0 0 .2-8.3zM645.2 206.4l34.4 133.9-132.5-133.9h98.1zm8.2 178.5H370.6L512 242l141.4 142.9zM378.8 206.4h98.1L344.3 340.3l34.5-133.9zm-53.4 7l-44.1 171.5h-93.1l137.2-171.5zM194.6 434.9H289l125.8 247.7-220.2-247.7zM512 763.4L345.1 434.9h333.7L512 763.4zm97.1-80.8L735 434.9h94.4L609.1 682.6zm133.6-297.7l-44.1-171.5 137.2 171.5h-93.1z")), t.SortDescendingOutline = l("sort-descending", a, c(i, "M839.6 433.8L749 150.5a9.24 9.24 0 0 0-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-.3.9-.5 1.9-.5 2.9 0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-.1 2.8-.4 2.4-.8 4.3-2.4 5.5-4.6 1.1-2.2 1.3-4.7.6-7.1zM663.3 325.5l32.8-116.9h6.3l32.1 116.9h-71.2zm143.5 492.9H677.2v-.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v.4L587.7 828.9a9.35 9.35 0 0 0-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43a9.2 9.2 0 0 0-9.2-9.3zM310.3 167.1a8 8 0 0 0-12.6 0L185.7 309c-4.2 5.3-.4 13 6.3 13h76v530c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V322h76c6.7 0 10.5-7.8 6.3-13l-112-141.9z")), t.SortAscendingOutline = l("sort-ascending", a, c(i, "M839.6 433.8L749 150.5a9.24 9.24 0 0 0-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-.3.9-.5 1.9-.5 2.9 0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-.1 2.8-.4 2.4-.8 4.3-2.4 5.5-4.6 1.1-2.2 1.3-4.7.6-7.1zM663.3 325.5l32.8-116.9h6.3l32.1 116.9h-71.2zm143.5 492.9H677.2v-.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v.4L587.7 828.9a9.35 9.35 0 0 0-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43a9.2 9.2 0 0 0-9.2-9.3zM416 702h-76V172c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v530h-76c-6.7 0-10.5 7.8-6.3 13l112 141.9a8 8 0 0 0 12.6 0l112-141.9c4.1-5.2.4-13-6.3-13z")), t.StockOutline = l("stock", a, c(i, "M904 747H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM165.7 621.8l39.7 39.5c3.1 3.1 8.2 3.1 11.3 0l234.7-233.9 97.6 97.3a32.11 32.11 0 0 0 45.2 0l264.2-263.2c3.1-3.1 3.1-8.2 0-11.3l-39.7-39.6a8.03 8.03 0 0 0-11.3 0l-235.7 235-97.7-97.3a32.11 32.11 0 0 0-45.2 0L165.7 610.5a7.94 7.94 0 0 0 0 11.3z")), t.SwapLeftOutline = l("swap-left", a, c(r, "M872 572H266.8l144.3-183c4.1-5.2.4-13-6.3-13H340c-9.8 0-19.1 4.5-25.1 12.2l-164 208c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")), t.SwapRightOutline = l("swap-right", a, c(r, "M873.1 596.2l-164-208A32 32 0 0 0 684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z")), t.StrikethroughOutline = l("strikethrough", a, c(i, "M952 474H569.9c-10-2-20.5-4-31.6-6-15.9-2.9-22.2-4.1-30.8-5.8-51.3-10-82.2-20-106.8-34.2-35.1-20.5-52.2-48.3-52.2-85.1 0-37 15.2-67.7 44-89 28.4-21 68.8-32.1 116.8-32.1 54.8 0 97.1 14.4 125.8 42.8 14.6 14.4 25.3 32.1 31.8 52.6 1.3 4.1 2.8 10 4.3 17.8.9 4.8 5.2 8.2 9.9 8.2h72.8c5.6 0 10.1-4.6 10.1-10.1v-1c-.7-6.8-1.3-12.1-2-16-7.3-43.5-28-81.7-59.7-110.3-44.4-40.5-109.7-61.8-188.7-61.8-72.3 0-137.4 18.1-183.3 50.9-25.6 18.4-45.4 41.2-58.6 67.7-13.5 27.1-20.3 58.4-20.3 92.9 0 29.5 5.7 54.5 17.3 76.5 8.3 15.7 19.6 29.5 34.1 42H72c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h433.2c2.1.4 3.9.8 5.9 1.2 30.9 6.2 49.5 10.4 66.6 15.2 23 6.5 40.6 13.3 55.2 21.5 35.8 20.2 53.3 49.2 53.3 89 0 35.3-15.5 66.8-43.6 88.8-30.5 23.9-75.6 36.4-130.5 36.4-43.7 0-80.7-8.5-110.2-25-29.1-16.3-49.1-39.8-59.7-69.5-.8-2.2-1.7-5.2-2.7-9-1.2-4.4-5.3-7.5-9.7-7.5h-79.7c-5.6 0-10.1 4.6-10.1 10.1v1c.2 2.3.4 4.2.6 5.7 6.5 48.8 30.3 88.8 70.7 118.8 47.1 34.8 113.4 53.2 191.8 53.2 84.2 0 154.8-19.8 204.2-57.3 25-18.9 44.2-42.2 57.1-69 13-27.1 19.7-57.9 19.7-91.5 0-31.8-5.8-58.4-17.8-81.4-5.8-11.2-13.1-21.5-21.8-30.8H952c4.4 0 8-3.6 8-8v-60a8 8 0 0 0-8-7.9z")), t.SwapOutline = l("swap", a, c(i, "M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")), t.SyncOutline = l("sync", a, c(i, "M168 504.2c1-43.7 10-86.1 26.9-126 17.3-41 42.1-77.7 73.7-109.4S337 212.3 378 195c42.4-17.9 87.4-27 133.9-27s91.5 9.1 133.8 27A341.5 341.5 0 0 1 755 268.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 0 0 3 14.1l175.7 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c0-6.7-7.7-10.5-12.9-6.3l-56.4 44.1C765.8 155.1 646.2 92 511.8 92 282.7 92 96.3 275.6 92 503.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8zm756 7.8h-60c-4.4 0-7.9 3.5-8 7.8-1 43.7-10 86.1-26.9 126-17.3 41-42.1 77.8-73.7 109.4A342.45 342.45 0 0 1 512.1 856a342.24 342.24 0 0 1-243.2-100.8c-9.9-9.9-19.2-20.4-27.8-31.4l60.2-47a8 8 0 0 0-3-14.1l-175.7-43c-5-1.2-9.9 2.6-9.9 7.7l-.7 181c0 6.7 7.7 10.5 12.9 6.3l56.4-44.1C258.2 868.9 377.8 932 512.2 932c229.2 0 415.5-183.7 419.8-411.8a8 8 0 0 0-8-8.2z")), t.TableOutline = l("table", a, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 208H676V232h212v136zm0 224H676V432h212v160zM412 432h200v160H412V432zm200-64H412V232h200v136zm-476 64h212v160H136V432zm0-200h212v136H136V232zm0 424h212v136H136V656zm276 0h200v136H412V656zm476 136H676V656h212v136z")), t.TeamOutline = l("team", a, c(i, "M824.2 699.9a301.55 301.55 0 0 0-86.4-60.4C783.1 602.8 812 546.8 812 484c0-110.8-92.4-201.7-203.2-200-109.1 1.7-197 90.6-197 200 0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C345 754.6 314 826.8 312 903.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5A226.62 226.62 0 0 1 612 684c60.9 0 118.2 23.7 161.3 66.8C814.5 792 838 846.3 840 904.3c.1 4.3 3.7 7.7 8 7.7h56a8 8 0 0 0 8-8.2c-2-77-33-149.2-87.8-203.9zM612 612c-34.2 0-66.4-13.3-90.5-37.5a126.86 126.86 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4 0 34.2-13.3 66.3-37.5 90.5A127.3 127.3 0 0 1 612 612zM361.5 510.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.9-1.7-203.3 89.2-203.3 199.9 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.9-1 6.5-4.7 6-8.7z")), t.TaobaoOutline = l("taobao", a, c(i, "M168.5 273.7a68.7 68.7 0 1 0 137.4 0 68.7 68.7 0 1 0-137.4 0zm730 79.2s-23.7-184.4-426.9-70.1c17.3-30 25.6-49.5 25.6-49.5L396.4 205s-40.6 132.6-113 194.4c0 0 70.1 40.6 69.4 39.4 20.1-20.1 38.2-40.6 53.7-60.4 16.1-7 31.5-13.6 46.7-19.8-18.6 33.5-48.7 83.8-78.8 115.6l42.4 37s28.8-27.7 60.4-61.2h36v61.8H372.9v49.5h140.3v118.5c-1.7 0-3.6 0-5.4-.2-15.4-.7-39.5-3.3-49-18.2-11.5-18.1-3-51.5-2.4-71.9h-97l-3.4 1.8s-35.5 159.1 102.3 155.5c129.1 3.6 203-36 238.6-63.1l14.2 52.6 79.6-33.2-53.9-131.9-64.6 20.1 12.1 45.2c-16.6 12.4-35.6 21.7-56.2 28.4V561.3h137.1v-49.5H628.1V450h137.6v-49.5H521.3c17.6-21.4 31.5-41.1 35-53.6l-42.5-11.6c182.8-65.5 284.5-54.2 283.6 53.2v282.8s10.8 97.1-100.4 90.1l-60.2-12.9-14.2 57.1S882.5 880 903.7 680.2c21.3-200-5.2-327.3-5.2-327.3zm-707.4 18.3l-45.4 69.7 83.6 52.1s56 28.5 29.4 81.9C233.8 625.5 112 736.3 112 736.3l109 68.1c75.4-163.7 70.5-142 89.5-200.7 19.5-60.1 23.7-105.9-9.4-139.1-42.4-42.6-47-46.6-110-93.4z")), t.ToTopOutline = l("to-top", a, c(i, "M885 780H165c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM400 325.7h73.9V664c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V325.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 171a8 8 0 0 0-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13z")), t.TrademarkOutline = l("trademark", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm87.5-334.7c34.8-12.8 78.4-49 78.4-119.2 0-71.2-45.5-131.1-144.2-131.1H378c-4.4 0-8 3.6-8 8v410c0 4.4 3.6 8 8 8h54.5c4.4 0 8-3.6 8-8V561.2h88.7l74.6 159.2c1.3 2.8 4.1 4.6 7.2 4.6h62a7.9 7.9 0 0 0 7.1-11.5l-80.6-164.2zM522 505h-81.5V357h83.4c48 0 80.9 25.3 80.9 75.5 0 46.9-29.8 72.5-82.8 72.5z")), t.TransactionOutline = l("transaction", a, c(i, "M668.6 320c0-4.4-3.6-8-8-8h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.5-1.1.9-2.4.9-3.7zM157.9 504.2a352.7 352.7 0 0 1 103.5-242.4c32.5-32.5 70.3-58.1 112.4-75.9 43.6-18.4 89.9-27.8 137.6-27.8 47.8 0 94.1 9.3 137.6 27.8 42.1 17.8 79.9 43.4 112.4 75.9 10 10 19.3 20.5 27.9 31.4l-50 39.1a8 8 0 0 0 3 14.1l156.8 38.3c5 1.2 9.9-2.6 9.9-7.7l.8-161.5c0-6.7-7.7-10.5-12.9-6.3l-47.8 37.4C770.7 146.3 648.6 82 511.5 82 277 82 86.3 270.1 82 503.8a8 8 0 0 0 8 8.2h60c4.3 0 7.8-3.5 7.9-7.8zM934 512h-60c-4.3 0-7.9 3.5-8 7.8a352.7 352.7 0 0 1-103.5 242.4 352.57 352.57 0 0 1-112.4 75.9c-43.6 18.4-89.9 27.8-137.6 27.8s-94.1-9.3-137.6-27.8a352.57 352.57 0 0 1-112.4-75.9c-10-10-19.3-20.5-27.9-31.4l49.9-39.1a8 8 0 0 0-3-14.1l-156.8-38.3c-5-1.2-9.9 2.6-9.9 7.7l-.8 161.7c0 6.7 7.7 10.5 12.9 6.3l47.8-37.4C253.3 877.7 375.4 942 512.5 942 747 942 937.7 753.9 942 520.2a8 8 0 0 0-8-8.2z")), t.TwitterOutline = l("twitter", a, c(i, "M928 254.3c-30.6 13.2-63.9 22.7-98.2 26.4a170.1 170.1 0 0 0 75-94 336.64 336.64 0 0 1-108.2 41.2A170.1 170.1 0 0 0 672 174c-94.5 0-170.5 76.6-170.5 170.6 0 13.2 1.6 26.4 4.2 39.1-141.5-7.4-267.7-75-351.6-178.5a169.32 169.32 0 0 0-23.2 86.1c0 59.2 30.1 111.4 76 142.1a172 172 0 0 1-77.1-21.7v2.1c0 82.9 58.6 151.6 136.7 167.4a180.6 180.6 0 0 1-44.9 5.8c-11.1 0-21.6-1.1-32.2-2.6C211 652 273.9 701.1 348.8 702.7c-58.6 45.9-132 72.9-211.7 72.9-14.3 0-27.5-.5-41.2-2.1C171.5 822 261.2 850 357.8 850 671.4 850 843 590.2 843 364.7c0-7.4 0-14.8-.5-22.2 33.2-24.3 62.3-54.4 85.5-88.2z")), t.UnderlineOutline = l("underline", a, c(i, "M824 804H200c-4.4 0-8 3.4-8 7.6v60.8c0 4.2 3.6 7.6 8 7.6h624c4.4 0 8-3.4 8-7.6v-60.8c0-4.2-3.6-7.6-8-7.6zm-312-76c69.4 0 134.6-27.1 183.8-76.2C745 602.7 772 537.4 772 468V156c0-6.6-5.4-12-12-12h-60c-6.6 0-12 5.4-12 12v312c0 97-79 176-176 176s-176-79-176-176V156c0-6.6-5.4-12-12-12h-60c-6.6 0-12 5.4-12 12v312c0 69.4 27.1 134.6 76.2 183.8C377.3 701 442.6 728 512 728z")), t.UndoOutline = l("undo", a, c(i, "M511.4 124C290.5 124.3 112 303 112 523.9c0 128 60.2 242 153.8 315.2l-37.5 48c-4.1 5.3-.3 13 6.3 12.9l167-.8c5.2 0 9-4.9 7.7-9.9L369.8 727a8 8 0 0 0-14.1-3L315 776.1c-10.2-8-20-16.7-29.3-26a318.64 318.64 0 0 1-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 0 1-68.6 101.7c-7.5 7.5-15.3 14.5-23.4 21.2a7.93 7.93 0 0 0-1.2 11.1l39.4 50.5c2.8 3.5 7.9 4.1 11.4 1.3C854.5 760.8 912 649.1 912 523.9c0-221.1-179.4-400.2-400.6-399.9z")), t.UnorderedListOutline = l("unordered-list", a, c(i, "M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")), t.UpOutline = l("up", a, c(i, "M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 0 0 140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z")), t.UploadOutline = l("upload", a, c(i, "M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 0 0-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z")), t.UserAddOutline = l("user-add", a, c(i, "M678.3 642.4c24.2-13 51.9-20.4 81.4-20.4h.1c3 0 4.4-3.6 2.2-5.6a371.67 371.67 0 0 0-103.7-65.8c-.4-.2-.8-.3-1.2-.5C719.2 505 759.6 431.7 759.6 349c0-137-110.8-248-247.5-248S264.7 212 264.7 349c0 82.7 40.4 156 102.6 201.1-.4.2-.8.3-1.2.5-44.7 18.9-84.8 46-119.3 80.6a373.42 373.42 0 0 0-80.4 119.5A373.6 373.6 0 0 0 137 888.8a8 8 0 0 0 8 8.2h59.9c4.3 0 7.9-3.5 8-7.8 2-77.2 32.9-149.5 87.6-204.3C357 628.2 432.2 597 512.2 597c56.7 0 111.1 15.7 158 45.1a8.1 8.1 0 0 0 8.1.3zM512.2 521c-45.8 0-88.9-17.9-121.4-50.4A171.2 171.2 0 0 1 340.5 349c0-45.9 17.9-89.1 50.3-121.6S466.3 177 512.2 177s88.9 17.9 121.4 50.4A171.2 171.2 0 0 1 683.9 349c0 45.9-17.9 89.1-50.3 121.6C601.1 503.1 558 521 512.2 521zM880 759h-84v-84c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v84h-84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h84v84c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-84h84c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.UsergroupAddOutline = l("usergroup-add", a, c(i, "M892 772h-80v-80c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v80h-80c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h80v80c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-80h80c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM373.5 498.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.8-1.7-203.2 89.2-203.2 200 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.8-1.1 6.4-4.8 5.9-8.8zM824 472c0-109.4-87.9-198.3-196.9-200C516.3 270.3 424 361.2 424 472c0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C357 742.6 326 814.8 324 891.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5C505.8 695.7 563 672 624 672c110.4 0 200-89.5 200-200zm-109.5 90.5C690.3 586.7 658.2 600 624 600s-66.3-13.3-90.5-37.5a127.26 127.26 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4-.1 34.2-13.4 66.3-37.6 90.5z")), t.UserOutline = l("user", a, c(i, "M858.5 763.6a374 374 0 0 0-80.6-119.5 375.63 375.63 0 0 0-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 0 0-80.6 119.5A371.7 371.7 0 0 0 136 901.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 0 0 8-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z")), t.UserDeleteOutline = l("user-delete", a, c(i, "M678.3 655.4c24.2-13 51.9-20.4 81.4-20.4h.1c3 0 4.4-3.6 2.2-5.6a371.67 371.67 0 0 0-103.7-65.8c-.4-.2-.8-.3-1.2-.5C719.2 518 759.6 444.7 759.6 362c0-137-110.8-248-247.5-248S264.7 225 264.7 362c0 82.7 40.4 156 102.6 201.1-.4.2-.8.3-1.2.5-44.7 18.9-84.8 46-119.3 80.6a373.42 373.42 0 0 0-80.4 119.5A373.6 373.6 0 0 0 137 901.8a8 8 0 0 0 8 8.2h59.9c4.3 0 7.9-3.5 8-7.8 2-77.2 32.9-149.5 87.6-204.3C357 641.2 432.2 610 512.2 610c56.7 0 111.1 15.7 158 45.1a8.1 8.1 0 0 0 8.1.3zM512.2 534c-45.8 0-88.9-17.9-121.4-50.4A171.2 171.2 0 0 1 340.5 362c0-45.9 17.9-89.1 50.3-121.6S466.3 190 512.2 190s88.9 17.9 121.4 50.4A171.2 171.2 0 0 1 683.9 362c0 45.9-17.9 89.1-50.3 121.6C601.1 516.1 558 534 512.2 534zM880 772H640c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.UsergroupDeleteOutline = l("usergroup-delete", a, c(i, "M888 784H664c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM373.5 510.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.9-1.7-203.3 89.2-203.3 199.9 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.9-1 6.5-4.7 6-8.7zM824 484c0-109.4-87.9-198.3-196.9-200C516.3 282.3 424 373.2 424 484c0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C357 754.6 326 826.8 324 903.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5C505.8 707.7 563 684 624 684c110.4 0 200-89.5 200-200zm-109.5 90.5C690.3 598.7 658.2 612 624 612s-66.3-13.3-90.5-37.5a127.26 127.26 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4-.1 34.2-13.4 66.3-37.6 90.5z")), t.VerticalAlignBottomOutline = l("vertical-align-bottom", a, c(i, "M859.9 780H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM505.7 669a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V176c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8z")), t.VerticalAlignMiddleOutline = l("vertical-align-middle", a, c(i, "M859.9 474H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zm-353.6-74.7c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H550V104c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v156h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.6zm11.4 225.4a7.14 7.14 0 0 0-11.3 0L405.6 752.3a7.23 7.23 0 0 0 5.7 11.7H474v156c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V764h62.8c6 0 9.4-7 5.7-11.7L517.7 624.7z")), t.VerticalAlignTopOutline = l("vertical-align-top", a, c(i, "M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 0 0-12.6 0l-112 141.7a7.98 7.98 0 0 0 6.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z")), t.VerticalRightOutline = l("vertical-right", a, c(i, "M326 164h-64c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V172c0-4.4-3.6-8-8-8zm444 72.4V164c0-6.8-7.9-10.5-13.1-6.1L335 512l421.9 354.1c5.2 4.4 13.1.7 13.1-6.1v-72.4c0-9.4-4.2-18.4-11.4-24.5L459.4 512l299.2-251.1c7.2-6.1 11.4-15.1 11.4-24.5z")), t.VerticalLeftOutline = l("vertical-left", a, c(i, "M762 164h-64c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V172c0-4.4-3.6-8-8-8zm-508 0v72.4c0 9.5 4.2 18.4 11.4 24.5L564.6 512 265.4 763.1c-7.2 6.1-11.4 15-11.4 24.5V860c0 6.8 7.9 10.5 13.1 6.1L689 512 267.1 157.9A7.95 7.95 0 0 0 254 164z")), t.WifiOutline = l("wifi", a, c(i, "M723 620.5C666.8 571.6 593.4 542 513 542s-153.8 29.6-210.1 78.6a8.1 8.1 0 0 0-.8 11.2l36 42.9c2.9 3.4 8 3.8 11.4.9C393.1 637.2 450.3 614 513 614s119.9 23.2 163.5 61.5c3.4 2.9 8.5 2.5 11.4-.9l36-42.9c2.8-3.3 2.4-8.3-.9-11.2zm117.4-140.1C751.7 406.5 637.6 362 513 362s-238.7 44.5-327.5 118.4a8.05 8.05 0 0 0-1 11.3l36 42.9c2.8 3.4 7.9 3.8 11.2 1C308 472.2 406.1 434 513 434s205 38.2 281.2 101.6c3.4 2.8 8.4 2.4 11.2-1l36-42.9c2.8-3.4 2.4-8.5-1-11.3zm116.7-139C835.7 241.8 680.3 182 511 182c-168.2 0-322.6 59-443.7 157.4a8 8 0 0 0-1.1 11.4l36 42.9c2.8 3.3 7.8 3.8 11.1 1.1C222 306.7 360.3 254 511 254c151.8 0 291 53.5 400 142.7 3.4 2.8 8.4 2.3 11.2-1.1l36-42.9c2.9-3.4 2.4-8.5-1.1-11.3zM448 778a64 64 0 1 0 128 0 64 64 0 1 0-128 0z")), t.ZhihuOutline = l("zhihu", a, c(i, "M564.7 230.1V803h60l25.2 71.4L756.3 803h131.5V230.1H564.7zm247.7 497h-59.9l-75.1 50.4-17.8-50.4h-18V308.3h170.7v418.8zM526.1 486.9H393.3c2.1-44.9 4.3-104.3 6.6-172.9h130.9l-.1-8.1c0-.6-.2-14.7-2.3-29.1-2.1-15-6.6-34.9-21-34.9H287.8c4.4-20.6 15.7-69.7 29.4-93.8l6.4-11.2-12.9-.7c-.8 0-19.6-.9-41.4 10.6-35.7 19-51.7 56.4-58.7 84.4-18.4 73.1-44.6 123.9-55.7 145.6-3.3 6.4-5.3 10.2-6.2 12.8-1.8 4.9-.8 9.8 2.8 13 10.5 9.5 38.2-2.9 38.5-3 .6-.3 1.3-.6 2.2-1 13.9-6.3 55.1-25 69.8-84.5h56.7c.7 32.2 3.1 138.4 2.9 172.9h-141l-2.1 1.5c-23.1 16.9-30.5 63.2-30.8 65.2l-1.4 9.2h167c-12.3 78.3-26.5 113.4-34 127.4-3.7 7-7.3 14-10.7 20.8-21.3 42.2-43.4 85.8-126.3 153.6-3.6 2.8-7 8-4.8 13.7 2.4 6.3 9.3 9.1 24.6 9.1 5.4 0 11.8-.3 19.4-1 49.9-4.4 100.8-18 135.1-87.6 17-35.1 31.7-71.7 43.9-108.9L497 850l5-12c.8-1.9 19-46.3 5.1-95.9l-.5-1.8-108.1-123-22 16.6c6.4-26.1 10.6-49.9 12.5-71.1h158.7v-8c0-40.1-18.5-63.9-19.2-64.9l-2.4-3z")), t.WeiboOutline = l("weibo", a, c(i, "M457.3 543c-68.1-17.7-145 16.2-174.6 76.2-30.1 61.2-1 129.1 67.8 151.3 71.2 23 155.2-12.2 184.4-78.3 28.7-64.6-7.2-131-77.6-149.2zm-52 156.2c-13.8 22.1-43.5 31.7-65.8 21.6-22-10-28.5-35.7-14.6-57.2 13.7-21.4 42.3-31 64.4-21.7 22.4 9.5 29.6 35 16 57.3zm45.5-58.5c-5 8.6-16.1 12.7-24.7 9.1-8.5-3.5-11.2-13.1-6.4-21.5 5-8.4 15.6-12.4 24.1-9.1 8.7 3.2 11.8 12.9 7 21.5zm334.5-197.2c15 4.8 31-3.4 35.9-18.3 11.8-36.6 4.4-78.4-23.2-109a111.39 111.39 0 0 0-106-34.3 28.45 28.45 0 0 0-21.9 33.8 28.39 28.39 0 0 0 33.8 21.8c18.4-3.9 38.3 1.8 51.9 16.7a54.2 54.2 0 0 1 11.3 53.3 28.45 28.45 0 0 0 18.2 36zm99.8-206c-56.7-62.9-140.4-86.9-217.7-70.5a32.98 32.98 0 0 0-25.4 39.3 33.12 33.12 0 0 0 39.3 25.5c55-11.7 114.4 5.4 154.8 50.1 40.3 44.7 51.2 105.7 34 159.1-5.6 17.4 3.9 36 21.3 41.7 17.4 5.6 36-3.9 41.6-21.2v-.1c24.1-75.4 8.9-161.1-47.9-223.9zM729 499c-12.2-3.6-20.5-6.1-14.1-22.1 13.8-34.7 15.2-64.7.3-86-28-40.1-104.8-37.9-192.8-1.1 0 0-27.6 12.1-20.6-9.8 13.5-43.5 11.5-79.9-9.6-101-47.7-47.8-174.6 1.8-283.5 110.6C127.3 471.1 80 557.5 80 632.2 80 775.1 263.2 862 442.5 862c235 0 391.3-136.5 391.3-245 0-65.5-55.2-102.6-104.8-118zM443 810.8c-143 14.1-266.5-50.5-275.8-144.5-9.3-93.9 99.2-181.5 242.2-195.6 143-14.2 266.5 50.5 275.8 144.4C694.4 709 586 796.6 443 810.8z")), t.WomanOutline = l("woman", a, c(i, "M712.8 548.8c53.6-53.6 83.2-125 83.2-200.8 0-75.9-29.5-147.2-83.2-200.8C659.2 93.6 587.8 64 512 64s-147.2 29.5-200.8 83.2C257.6 200.9 228 272.1 228 348c0 63.8 20.9 124.4 59.4 173.9 7.3 9.4 15.2 18.3 23.7 26.9 8.5 8.5 17.5 16.4 26.8 23.7 39.6 30.8 86.3 50.4 136.1 57V736H360c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h114v140c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V812h114c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H550V629.5c61.5-8.2 118.2-36.1 162.8-80.7zM512 556c-55.6 0-107.7-21.6-147.1-60.9C325.6 455.8 304 403.6 304 348s21.6-107.7 60.9-147.1C404.2 161.5 456.4 140 512 140s107.7 21.6 147.1 60.9C698.4 240.2 720 292.4 720 348s-21.6 107.7-60.9 147.1C619.7 534.4 567.6 556 512 556z")), t.ZoomInOutline = l("zoom-in", a, c(i, "M637 443H519V309c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V519h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z")), t.AccountBookTwoTone = l("account-book", s, (function (e, t) { return c(i, [t, "M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v584h656V256H712v48zm-65.6 121.8l-89.3 164.1h49.1c4.4 0 8 3.6 8 8v21.3c0 4.4-3.6 8-8 8h-65.4v33.7h65.4c4.4 0 8 3.6 8 8v21.3c0 4.4-3.6 8-8 8h-65.4V752c0 4.4-3.6 8-8 8h-41.3c-4.4 0-8-3.6-8-8v-53.8h-65.1c-4.4 0-8-3.6-8-8v-21.3c0-4.4 3.6-8 8-8h65.1v-33.7h-65.1c-4.4 0-8-3.6-8-8v-21.3c0-4.4 3.6-8 8-8H467l-89.3-164c-2.1-3.9-.7-8.8 3.2-10.9 1.1-.7 2.5-1 3.8-1h46a8 8 0 0 1 7.1 4.4l73.4 145.4h2.8l73.4-145.4c1.3-2.7 4.1-4.4 7.1-4.4h45c4.5 0 8 3.6 7.9 8 0 1.3-.4 2.6-1 3.8z"], [e, "M639.5 414h-45c-3 0-5.8 1.7-7.1 4.4L514 563.8h-2.8l-73.4-145.4a8 8 0 0 0-7.1-4.4h-46c-1.3 0-2.7.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9l89.3 164h-48.6c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1v33.7h-65.1c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1V752c0 4.4 3.6 8 8 8h41.3c4.4 0 8-3.6 8-8v-53.8h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-65.4v-33.7h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-49.1l89.3-164.1c.6-1.2 1-2.5 1-3.8.1-4.4-3.4-8-7.9-8z"], [e, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584z"]) })), t.ZoomOutOutline = l("zoom-out", a, c(i, "M637 443H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h312c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z")), t.AlertTwoTone = l("alert", s, (function (e, t) { return c(i, [t, "M340 585c0-5.5 4.5-10 10-10h44c5.5 0 10 4.5 10 10v171h355V563c0-136.4-110.6-247-247-247S265 426.6 265 563v193h75V585z"], [e, "M216.9 310.5l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3l-67.9-67.9a8.03 8.03 0 0 0-11.3 0l-39.6 39.6a8.03 8.03 0 0 0 0 11.3l67.9 67.9c3.1 3.1 8.1 3.1 11.3 0zm669.6-79.2l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-67.9 67.9a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l67.9-67.9c3.1-3.2 3.1-8.2 0-11.3zM484 180h56c4.4 0 8-3.6 8-8V76c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v96c0 4.4 3.6 8 8 8zm348 712H192c-17.7 0-32 14.3-32 32v24c0 4.4 3.6 8 8 8h688c4.4 0 8-3.6 8-8v-24c0-17.7-14.3-32-32-32zm-639-96c0 17.7 14.3 32 32 32h574c17.7 0 32-14.3 32-32V563c0-176.2-142.8-319-319-319S193 386.8 193 563v233zm72-233c0-136.4 110.6-247 247-247s247 110.6 247 247v193H404V585c0-5.5-4.5-10-10-10h-44c-5.5 0-10 4.5-10 10v171h-75V563z"]) })), t.ApiTwoTone = l("api", s, (function (e, t) { return c(i, [t, "M148.2 674.6zm106.7-92.3c-25 25-38.7 58.1-38.7 93.4s13.8 68.5 38.7 93.4c25 25 58.1 38.7 93.4 38.7 35.3 0 68.5-13.8 93.4-38.7l59.4-59.4-186.8-186.8-59.4 59.4zm420.8-366.1c-35.3 0-68.5 13.8-93.4 38.7l-59.4 59.4 186.8 186.8 59.4-59.4c24.9-25 38.7-58.1 38.7-93.4s-13.8-68.5-38.7-93.4c-25-25-58.1-38.7-93.4-38.7z"], [e, "M578.9 546.7a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2a199.45 199.45 0 0 0-58.6 140.4c-.2 39.5 11.2 79.1 34.3 113.1l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2zM441.7 769.1a131.32 131.32 0 0 1-93.4 38.7c-35.3 0-68.4-13.7-93.4-38.7-24.9-24.9-38.7-58.1-38.7-93.4s13.7-68.4 38.7-93.4l59.4-59.4 186.8 186.8-59.4 59.4zm476-620.3l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM769.1 441.7l-59.4 59.4-186.8-186.8 59.4-59.4c24.9-24.9 58.1-38.7 93.4-38.7s68.4 13.7 93.4 38.7c24.9 24.9 38.7 58.1 38.7 93.4s-13.8 68.4-38.7 93.4z"]) })), t.AppstoreTwoTone = l("appstore", s, (function (e, t) { return c(i, [e, "M864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm52-668H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452 132H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z"], [t, "M212 212h200v200H212zm400 0h200v200H612zM212 612h200v200H212zm400 0h200v200H612z"]) })), t.BankTwoTone = l("bank", s, (function (e, t) { return c(i, [t, "M240.9 393.9h542.2L512 196.7z"], [e, "M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM381 836H264V462h117v374zm189 0H453V462h117v374zm190 0H642V462h118v374zM240.9 393.9L512 196.7l271.1 197.2H240.9z"]) })), t.AudioTwoTone = l("audio", s, (function (e, t) { return c(i, [t, "M512 552c54.3 0 98-43.2 98-96V232c0-52.8-43.7-96-98-96s-98 43.2-98 96v224c0 52.8 43.7 96 98 96z"], [e, "M842 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1z"], [e, "M512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm-98-392c0-52.8 43.7-96 98-96s98 43.2 98 96v224c0 52.8-43.7 96-98 96s-98-43.2-98-96V232z"]) })), t.BellTwoTone = l("bell", s, (function (e, t) { return c(i, [t, "M512 220c-55.6 0-107.8 21.6-147.1 60.9S304 372.4 304 428v340h416V428c0-55.6-21.6-107.8-60.9-147.1S567.6 220 512 220zm280 208c0-141.1-104.3-257.8-240-277.2v.1c135.7 19.4 240 136 240 277.1zM472 150.9v-.1C336.3 170.2 232 286.9 232 428c0-141.1 104.3-257.7 240-277.1z"], [e, "M816 768h-24V428c0-141.1-104.3-257.7-240-277.1V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.9c-135.7 19.4-240 136-240 277.1v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48zm208-120H304V428c0-55.6 21.6-107.8 60.9-147.1S456.4 220 512 220c55.6 0 107.8 21.6 147.1 60.9S720 372.4 720 428v340z"]) })), t.BookTwoTone = l("book", s, (function (e, t) { return c(i, [e, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-260 72h96v209.9L621.5 312 572 347.4V136zM232 888V136h280v296.9c0 3.3 1 6.6 3 9.3a15.9 15.9 0 0 0 22.3 3.7l83.8-59.9 81.4 59.4c2.7 2 6 3.1 9.4 3.1 8.8 0 16-7.2 16-16V136h64v752H232z"], [t, "M668 345.9V136h-96v211.4l49.5-35.4z"], [t, "M727.9 136v296.5c0 8.8-7.2 16-16 16-3.4 0-6.7-1.1-9.4-3.1L621.1 386l-83.8 59.9a15.9 15.9 0 0 1-22.3-3.7c-2-2.7-3-6-3-9.3V136H232v752h559.9V136h-64z"]) })), t.BoxPlotTwoTone = l("box-plot", s, (function (e, t) { return c(i, [t, "M296 368h88v288h-88zm152 0h280v288H448z"], [e, "M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H232c-4.4 0-8 3.6-8 8v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h560c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zM384 656h-88V368h88v288zm344 0H448V368h280v288z"]) })), t.BugTwoTone = l("bug", s, (function (e, t) { return c(i, [e, "M308 412v268c0 36.78 9.68 71.96 27.8 102.9a205.39 205.39 0 0 0 73.3 73.3A202.68 202.68 0 0 0 512 884c36.78 0 71.96-9.68 102.9-27.8a205.39 205.39 0 0 0 73.3-73.3A202.68 202.68 0 0 0 716 680V412H308zm484 172v96c0 6.5-.22 12.95-.66 19.35C859.94 728.64 908 796.7 908 876a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-44.24-23.94-82.89-59.57-103.7a278.63 278.63 0 0 1-22.66 49.02 281.39 281.39 0 0 1-100.45 100.45C611.84 946.07 563.55 960 512 960s-99.84-13.93-141.32-38.23a281.39 281.39 0 0 1-100.45-100.45 278.63 278.63 0 0 1-22.66-49.02A119.95 119.95 0 0 0 188 876a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-79.3 48.07-147.36 116.66-176.65A284.12 284.12 0 0 1 232 680v-96H84a8 8 0 0 1-8-8v-56a8 8 0 0 1 8-8h148V412c-76.77 0-139-62.23-139-139a8 8 0 0 1 8-8h60a8 8 0 0 1 8 8 63 63 0 0 0 63 63h560a63 63 0 0 0 63-63 8 8 0 0 1 8-8h60a8 8 0 0 1 8 8c0 76.77-62.23 139-139 139v100h148a8 8 0 0 1 8 8v56a8 8 0 0 1-8 8H792zM368 272a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-40.04 8.78-76.75 25.9-108.07a184.57 184.57 0 0 1 74.03-74.03C427.25 72.78 463.96 64 504 64h16c40.04 0 76.75 8.78 108.07 25.9a184.57 184.57 0 0 1 74.03 74.03C719.22 195.25 728 231.96 728 272a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-28.33-5.94-53.15-17.08-73.53a112.56 112.56 0 0 0-45.39-45.4C573.15 141.95 548.33 136 520 136h-16c-28.33 0-53.15 5.94-73.53 17.08a112.56 112.56 0 0 0-45.4 45.39C373.95 218.85 368 243.67 368 272z"], [t, "M308 412v268c0 36.78 9.68 71.96 27.8 102.9a205.39 205.39 0 0 0 73.3 73.3A202.68 202.68 0 0 0 512 884c36.78 0 71.96-9.68 102.9-27.8a205.39 205.39 0 0 0 73.3-73.3A202.68 202.68 0 0 0 716 680V412H308z"]) })), t.BulbTwoTone = l("bulb", s, (function (e, t) { return c(i, [t, "M512 136c-141.4 0-256 114.6-256 256 0 92.5 49.4 176.3 128.1 221.8l35.9 20.8V752h184V634.6l35.9-20.8C718.6 568.3 768 484.5 768 392c0-141.4-114.6-256-256-256z"], [e, "M632 888H392c-4.4 0-8 3.6-8 8v32c0 17.7 14.3 32 32 32h192c17.7 0 32-14.3 32-32v-32c0-4.4-3.6-8-8-8zM512 64c-181.1 0-328 146.9-328 328 0 121.4 66 227.4 164 284.1V792c0 17.7 14.3 32 32 32h264c17.7 0 32-14.3 32-32V676.1c98-56.7 164-162.7 164-284.1 0-181.1-146.9-328-328-328zm127.9 549.8L604 634.6V752H420V634.6l-35.9-20.8C305.4 568.3 256 484.5 256 392c0-141.4 114.6-256 256-256s256 114.6 256 256c0 92.5-49.4 176.3-128.1 221.8z"]) })), t.CalculatorTwoTone = l("calculator", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm256.2-75h-50.8c-2.2 0-4.5-1.1-5.9-2.9L348 718.6l-35.5 43.5a7.38 7.38 0 0 1-5.9 2.9h-50.8c-6.6 0-10.2-7.9-5.8-13.1l62.7-76.8-61.2-74.9c-4.3-5.2-.7-13.1 5.9-13.1h50.9c2.2 0 4.5 1.1 5.9 2.9l34 41.6 34-41.6c1.5-1.9 3.6-2.9 5.9-2.9h50.8c6.6 0 10.2 7.9 5.9 13.1L383.5 675l62.7 76.8c4.2 5.3.6 13.2-6 13.2zM576 335c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zm0 265c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zm0 104c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zM248 335c0-2.2 1.4-4 3.2-4H320v-68.8c0-1.8 1.8-3.2 4-3.2h48c2.2 0 4 1.4 4 3.2V331h68.7c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H376v68.7c0 1.9-1.8 3.3-4 3.3h-48c-2.2 0-4-1.4-4-3.2V387h-68.8c-1.8 0-3.2-1.8-3.2-4v-48z"], [e, "M383.5 675l61.3-74.8c4.3-5.2.7-13.1-5.9-13.1h-50.8c-2.3 0-4.4 1-5.9 2.9l-34 41.6-34-41.6a7.69 7.69 0 0 0-5.9-2.9h-50.9c-6.6 0-10.2 7.9-5.9 13.1l61.2 74.9-62.7 76.8c-4.4 5.2-.8 13.1 5.8 13.1h50.8c2.3 0 4.4-1 5.9-2.9l35.5-43.5 35.5 43.5c1.4 1.8 3.7 2.9 5.9 2.9h50.8c6.6 0 10.2-7.9 6-13.2L383.5 675zM251.2 387H320v68.8c0 1.8 1.8 3.2 4 3.2h48c2.2 0 4-1.4 4-3.3V387h68.8c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H376v-68.8c0-1.8-1.8-3.2-4-3.2h-48c-2.2 0-4 1.4-4 3.2V331h-68.8c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm328 369h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0-104h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0-265h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4z"]) })), t.BuildTwoTone = l("build", s, (function (e, t) { return c(i, [t, "M144 546h200v200H144zm268-268h200v200H412z"], [e, "M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zM344 746H144V546h200v200zm268 0H412V546h200v200zm0-268H412V278h200v200zm268 0H680V278h200v200z"]) })), t.CalendarTwoTone = l("calendar", s, (function (e, t) { return c(i, [t, "M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v136h656V256H712v48z"], [e, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zm0-448H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136z"]) })), t.CameraTwoTone = l("camera", s, (function (e, t) { return c(i, [t, "M864 320H677.2l-17.1-47.8-22.9-64.2H386.7l-22.9 64.2-17.1 47.8H160c-4.4 0-8 3.6-8 8v456c0 4.4 3.6 8 8 8h704c4.4 0 8-3.6 8-8V328c0-4.4-3.6-8-8-8zM512 704c-88.4 0-160-71.6-160-160s71.6-160 160-160 160 71.6 160 160-71.6 160-160 160z"], [e, "M512 384c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zm0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z"], [e, "M864 248H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 248H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V328c0-44.2-35.8-80-80-80zm8 536c0 4.4-3.6 8-8 8H160c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h186.7l17.1-47.8 22.9-64.2h250.5l22.9 64.2 17.1 47.8H864c4.4 0 8 3.6 8 8v456z"]) })), t.CarTwoTone = l("car", s, (function (e, t) { return c(i, [t, "M199.6 474L184 517v237h656V517l-15.6-43H199.6zM264 621c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm388 75c0 4.4-3.6 8-8 8H380c-4.4 0-8-3.6-8-8v-84c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v36h168v-36c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v84zm108-75c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z"], [e, "M720 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"], [e, "M959 413.4L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM292.7 218.1l.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220l72.7-199.9zM840 754H184V517l15.6-43h624.8l15.6 43v237z"], [e, "M224 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm420 23h-40c-4.4 0-8 3.6-8 8v36H428v-36c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v84c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-84c0-4.4-3.6-8-8-8z"]) })), t.CarryOutTwoTone = l("carry-out", s, (function (e, t) { return c(i, [e, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584z"], [t, "M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v584h656V256H712v48zm-17.5 128.8L481.9 725.5a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.2 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.9-6.6 13-6.6H688c6.5 0 10.3 7.4 6.5 12.8z"], [e, "M688 420h-55.2c-5.1 0-10 2.5-13 6.6L468.9 634.4l-64.7-89c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.4 0-12.8-6.5-12.8z"]) })), t.CheckCircleTwoTone = l("check-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm193.4 225.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.3 0 19.9 5 25.9 13.3l71.2 98.8 157.2-218c6-8.4 15.7-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.4 12.7z"], [e, "M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0 0 51.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"]) })), t.CheckSquareTwoTone = l("check-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm130-367.8h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H688c6.5 0 10.3 7.4 6.5 12.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L307.5 484.9c-3.8-5.3 0-12.7 6.5-12.7z"], [e, "M432.2 657.7a31.8 31.8 0 0 0 51.7 0l210.6-292c3.8-5.3 0-12.7-6.5-12.7h-46.9c-10.3 0-19.9 5-25.9 13.3L458 584.3l-71.2-98.8c-6-8.4-15.7-13.3-25.9-13.3H314c-6.5 0-10.3 7.4-6.5 12.7l124.7 172.8z"]) })), t.ClockCircleTwoTone = l("clock-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm176.5 509.7l-28.6 39a7.99 7.99 0 0 1-11.2 1.7L483.3 569.8a7.92 7.92 0 0 1-3.3-6.5V288c0-4.4 3.6-8 8-8h48.1c4.4 0 8 3.6 8 8v247.5l142.6 103.1c3.6 2.5 4.4 7.5 1.8 11.1z"], [e, "M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.3c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.9 11.2-1.7l28.6-39c2.6-3.6 1.8-8.6-1.8-11.1z"]) })), t.CloseCircleTwoTone = l("close-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm171.8 527.1c1.2 1.5 1.9 3.3 1.9 5.2 0 4.5-3.6 8-8 8l-66-.3-99.3-118.4-99.3 118.5-66.1.3c-4.4 0-8-3.6-8-8 0-1.9.7-3.7 1.9-5.2L471 512.3l-130.1-155a8.32 8.32 0 0 1-1.9-5.2c0-4.5 3.6-8 8-8l66.1.3 99.3 118.4 99.4-118.5 66-.3c4.4 0 8 3.6 8 8 0 1.9-.6 3.8-1.8 5.2l-130.1 155 129.9 154.9z"], [e, "M685.8 352c0-4.4-3.6-8-8-8l-66 .3-99.4 118.5-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155-130.1 154.9a8.32 8.32 0 0 0-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3 99.3-118.5L611.7 680l66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.9 512.2l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z"]) })), t.CloudTwoTone = l("cloud", s, (function (e, t) { return c(i, [t, "M791.9 492l-37.8-10-13.8-36.5c-8.6-22.7-20.6-44.1-35.7-63.4a245.73 245.73 0 0 0-52.4-49.9c-41.1-28.9-89.5-44.2-140-44.2s-98.9 15.3-140 44.2a245.6 245.6 0 0 0-52.4 49.9 240.47 240.47 0 0 0-35.7 63.4l-13.9 36.6-37.9 9.9a125.7 125.7 0 0 0-66.1 43.7A123.1 123.1 0 0 0 140 612c0 33.1 12.9 64.3 36.3 87.7 23.4 23.4 54.5 36.3 87.6 36.3h496.2c33.1 0 64.2-12.9 87.6-36.3A123.3 123.3 0 0 0 884 612c0-56.2-37.8-105.5-92.1-120z"], [e, "M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3zm36.3 281a123.07 123.07 0 0 1-87.6 36.3H263.9c-33.1 0-64.2-12.9-87.6-36.3A123.3 123.3 0 0 1 140 612c0-28 9.1-54.3 26.2-76.3a125.7 125.7 0 0 1 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10c54.3 14.5 92.1 63.8 92.1 120 0 33.1-12.9 64.3-36.3 87.7z"]) })), t.CloseSquareTwoTone = l("close-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm163.9-473.9A7.95 7.95 0 0 1 354 353h58.9c4.7 0 9.2 2.1 12.3 5.7L512 462.2l86.8-103.5c3-3.6 7.5-5.7 12.3-5.7H670c6.8 0 10.5 7.9 6.1 13.1L553.8 512l122.3 145.9c4.4 5.2.7 13.1-6.1 13.1h-58.9c-4.7 0-9.2-2.1-12.3-5.7L512 561.8l-86.8 103.5c-3 3.6-7.5 5.7-12.3 5.7H354c-6.8 0-10.5-7.9-6.1-13.1L470.2 512 347.9 366.1z"], [e, "M354 671h58.9c4.8 0 9.3-2.1 12.3-5.7L512 561.8l86.8 103.5c3.1 3.6 7.6 5.7 12.3 5.7H670c6.8 0 10.5-7.9 6.1-13.1L553.8 512l122.3-145.9c4.4-5.2.7-13.1-6.1-13.1h-58.9c-4.8 0-9.3 2.1-12.3 5.7L512 462.2l-86.8-103.5c-3.1-3.6-7.6-5.7-12.3-5.7H354c-6.8 0-10.5 7.9-6.1 13.1L470.2 512 347.9 657.9A7.95 7.95 0 0 0 354 671z"]) })), t.CodeTwoTone = l("code", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm339.5-223h185c4.1 0 7.5 3.6 7.5 8v48c0 4.4-3.4 8-7.5 8h-185c-4.1 0-7.5-3.6-7.5-8v-48c0-4.4 3.4-8 7.5-8zM308 610.3c0-2.3 1.1-4.6 2.9-6.1L420.7 512l-109.8-92.2a7.63 7.63 0 0 1-2.9-6.1V351c0-6.8 7.9-10.5 13.1-6.1l192 160.9c3.9 3.2 3.9 9.1 0 12.3l-192 161c-5.2 4.4-13.1.7-13.1-6.1v-62.7z"], [e, "M321.1 679.1l192-161c3.9-3.2 3.9-9.1 0-12.3l-192-160.9A7.95 7.95 0 0 0 308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 0 0-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48z"]) })), t.CompassTwoTone = l("compass", s, (function (e, t) { return c(i, [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM327.6 701.7c-2 .9-4.4 0-5.3-2.1-.4-1-.4-2.2 0-3.2L421 470.9 553.1 603l-225.5 98.7zm375.1-375.1L604 552.1 471.9 420l225.5-98.7c2-.9 4.4 0 5.3 2.1.4 1 .4 2.1 0 3.2z"], [e, "M322.3 696.4c-.4 1-.4 2.2 0 3.2.9 2.1 3.3 3 5.3 2.1L553.1 603 421 470.9l-98.7 225.5zm375.1-375.1L471.9 420 604 552.1l98.7-225.5c.4-1.1.4-2.2 0-3.2-.9-2.1-3.3-3-5.3-2.1z"], [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"]) })), t.ContactsTwoTone = l("contacts", s, (function (e, t) { return c(i, [t, "M460.3 526a51.7 52 0 1 0 103.4 0 51.7 52 0 1 0-103.4 0z"], [t, "M768 352c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H548v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H328v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H136v496h752V296H768v56zM661 736h-43.8c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 39.9-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5h-43.9a8 8 0 0 1-8-8.4c2.8-53.3 31.9-99.6 74.6-126.1-18.1-20-29.1-46.4-29.1-75.5 0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.6-29.1 75.5 42.7 26.4 71.9 72.8 74.7 126.1a8 8 0 0 1-8 8.4z"], [e, "M594.3 601.5a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1 8 8 0 0 0 8 8.4H407c4.2 0 7.6-3.3 7.9-7.5 3.8-50.6 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H661a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.7-126.1zM512 578c-28.5 0-51.7-23.3-51.7-52s23.2-52 51.7-52 51.7 23.3 51.7 52-23.2 52-51.7 52z"], [e, "M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z"]) })), t.ContainerTwoTone = l("container", s, (function (e, t) { return c(i, [t, "M635 771.7c-34.5 28.6-78.2 44.3-123 44.3s-88.5-15.8-123-44.3a194.02 194.02 0 0 1-59.1-84.7H232v201h560V687h-97.9c-11.6 32.8-32 62.3-59.1 84.7z"], [e, "M320 501h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"], [e, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V687h97.9c11.6 32.8 32 62.3 59.1 84.7 34.5 28.5 78.2 44.3 123 44.3s88.5-15.7 123-44.3c27.1-22.4 47.5-51.9 59.1-84.7H792v201zm0-264H643.6l-5.2 24.7C626.4 708.5 573.2 752 512 752s-114.4-43.5-126.5-103.3l-5.2-24.7H232V136h560v488z"], [e, "M320 341h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"]) })), t.ControlTwoTone = l("control", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M616 440a36 36 0 1 0 72 0 36 36 0 1 0-72 0zM340.4 601.5l1.5 2.4c0 .1.1.1.1.2l.9 1.2c.1.1.2.2.2.3 1 1.3 2 2.5 3.2 3.6l.2.2c.4.4.8.8 1.2 1.1.8.8 1.7 1.5 2.6 2.1h.1l1.2.9c.1.1.3.2.4.3 1.2.8 2.5 1.6 3.9 2.2.2.1.5.2.7.4.4.2.7.3 1.1.5.3.1.7.3 1 .4.5.2 1 .4 1.5.5.4.1.9.3 1.3.4l.9.3 1.4.3c.2.1.5.1.7.2.7.1 1.4.3 2.1.4.2 0 .4 0 .6.1.6.1 1.1.1 1.7.2.2 0 .4 0 .7.1.8 0 1.5.1 2.3.1s1.5 0 2.3-.1c.2 0 .4 0 .7-.1.6 0 1.2-.1 1.7-.2.2 0 .4 0 .6-.1.7-.1 1.4-.2 2.1-.4.2-.1.5-.1.7-.2l1.4-.3.9-.3c.4-.1.9-.3 1.3-.4.5-.2 1-.4 1.5-.5.3-.1.7-.3 1-.4.4-.2.7-.3 1.1-.5.2-.1.5-.2.7-.4 1.3-.7 2.6-1.4 3.9-2.2.1-.1.3-.2.4-.3l1.2-.9h.1c.9-.7 1.8-1.4 2.6-2.1.4-.4.8-.7 1.2-1.1l.2-.2c1.1-1.1 2.2-2.4 3.2-3.6.1-.1.2-.2.2-.3l.9-1.2c0-.1.1-.1.1-.2l1.5-2.4c.1-.2.2-.3.3-.5 2.7-5.1 4.3-10.9 4.3-17s-1.6-12-4.3-17c-.1-.2-.2-.4-.3-.5l-1.5-2.4c0-.1-.1-.1-.1-.2l-.9-1.2c-.1-.1-.2-.2-.2-.3-1-1.3-2-2.5-3.2-3.6l-.2-.2c-.4-.4-.8-.8-1.2-1.1-.8-.8-1.7-1.5-2.6-2.1h-.1l-1.2-.9c-.1-.1-.3-.2-.4-.3-1.2-.8-2.5-1.6-3.9-2.2-.2-.1-.5-.2-.7-.4-.4-.2-.7-.3-1.1-.5-.3-.1-.7-.3-1-.4-.5-.2-1-.4-1.5-.5-.4-.1-.9-.3-1.3-.4l-.9-.3-1.4-.3c-.2-.1-.5-.1-.7-.2-.7-.1-1.4-.3-2.1-.4-.2 0-.4 0-.6-.1-.6-.1-1.1-.1-1.7-.2-.2 0-.4 0-.7-.1-.8 0-1.5-.1-2.3-.1s-1.5 0-2.3.1c-.2 0-.4 0-.7.1-.6 0-1.2.1-1.7.2-.2 0-.4 0-.6.1-.7.1-1.4.2-2.1.4-.2.1-.5.1-.7.2l-1.4.3-.9.3c-.4.1-.9.3-1.3.4-.5.2-1 .4-1.5.5-.3.1-.7.3-1 .4-.4.2-.7.3-1.1.5-.2.1-.5.2-.7.4-1.3.7-2.6 1.4-3.9 2.2-.1.1-.3.2-.4.3l-1.2.9h-.1c-.9.7-1.8 1.4-2.6 2.1-.4.4-.8.7-1.2 1.1l-.2.2a54.8 54.8 0 0 0-3.2 3.6c-.1.1-.2.2-.2.3l-.9 1.2c0 .1-.1.1-.1.2l-1.5 2.4c-.1.2-.2.3-.3.5-2.7 5.1-4.3 10.9-4.3 17s1.6 12 4.3 17c.1.2.2.3.3.5z"], [t, "M184 840h656V184H184v656zm436.4-499.1c-.2 0-.3.1-.4.1v-77c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v77c-.2 0-.3-.1-.4-.1 42 13.4 72.4 52.7 72.4 99.1 0 46.4-30.4 85.7-72.4 99.1.2 0 .3-.1.4-.1v221c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V539c.2 0 .3.1.4.1-42-13.4-72.4-52.7-72.4-99.1 0-46.4 30.4-85.7 72.4-99.1zM340 485V264c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v221c41.7 13.6 72 52.8 72 99s-30.3 85.5-72 99v77c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-77c-41.7-13.6-72-52.8-72-99s30.3-85.5 72-99z"], [e, "M340 683v77c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-77c41.7-13.5 72-52.8 72-99s-30.3-85.4-72-99V264c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v221c-41.7 13.5-72 52.8-72 99s30.3 85.4 72 99zm.1-116c.1-.2.2-.3.3-.5l1.5-2.4c0-.1.1-.1.1-.2l.9-1.2c0-.1.1-.2.2-.3 1-1.2 2.1-2.5 3.2-3.6l.2-.2c.4-.4.8-.7 1.2-1.1.8-.7 1.7-1.4 2.6-2.1h.1l1.2-.9c.1-.1.3-.2.4-.3 1.3-.8 2.6-1.5 3.9-2.2.2-.2.5-.3.7-.4.4-.2.7-.3 1.1-.5.3-.1.7-.3 1-.4.5-.1 1-.3 1.5-.5.4-.1.9-.3 1.3-.4l.9-.3 1.4-.3c.2-.1.5-.1.7-.2.7-.2 1.4-.3 2.1-.4.2-.1.4-.1.6-.1.5-.1 1.1-.2 1.7-.2.3-.1.5-.1.7-.1.8-.1 1.5-.1 2.3-.1s1.5.1 2.3.1c.3.1.5.1.7.1.6.1 1.1.1 1.7.2.2.1.4.1.6.1.7.1 1.4.3 2.1.4.2.1.5.1.7.2l1.4.3.9.3c.4.1.9.3 1.3.4.5.1 1 .3 1.5.5.3.1.7.3 1 .4.4.2.7.3 1.1.5.2.2.5.3.7.4 1.4.6 2.7 1.4 3.9 2.2.1.1.3.2.4.3l1.2.9h.1c.9.6 1.8 1.3 2.6 2.1.4.3.8.7 1.2 1.1l.2.2c1.2 1.1 2.2 2.3 3.2 3.6 0 .1.1.2.2.3l.9 1.2c0 .1.1.1.1.2l1.5 2.4A36.03 36.03 0 0 1 408 584c0 6.1-1.6 11.9-4.3 17-.1.2-.2.3-.3.5l-1.5 2.4c0 .1-.1.1-.1.2l-.9 1.2c0 .1-.1.2-.2.3-1 1.2-2.1 2.5-3.2 3.6l-.2.2c-.4.4-.8.7-1.2 1.1-.8.7-1.7 1.4-2.6 2.1h-.1l-1.2.9c-.1.1-.3.2-.4.3-1.3.8-2.6 1.5-3.9 2.2-.2.2-.5.3-.7.4-.4.2-.7.3-1.1.5-.3.1-.7.3-1 .4-.5.1-1 .3-1.5.5-.4.1-.9.3-1.3.4l-.9.3-1.4.3c-.2.1-.5.1-.7.2-.7.2-1.4.3-2.1.4-.2.1-.4.1-.6.1-.5.1-1.1.2-1.7.2-.3.1-.5.1-.7.1-.8.1-1.5.1-2.3.1s-1.5-.1-2.3-.1c-.3-.1-.5-.1-.7-.1-.6-.1-1.1-.1-1.7-.2-.2-.1-.4-.1-.6-.1-.7-.1-1.4-.3-2.1-.4-.2-.1-.5-.1-.7-.2l-1.4-.3-.9-.3c-.4-.1-.9-.3-1.3-.4-.5-.1-1-.3-1.5-.5-.3-.1-.7-.3-1-.4-.4-.2-.7-.3-1.1-.5-.2-.2-.5-.3-.7-.4-1.4-.6-2.7-1.4-3.9-2.2-.1-.1-.3-.2-.4-.3l-1.2-.9h-.1c-.9-.6-1.8-1.3-2.6-2.1-.4-.3-.8-.7-1.2-1.1l-.2-.2c-1.2-1.1-2.2-2.3-3.2-3.6 0-.1-.1-.2-.2-.3l-.9-1.2c0-.1-.1-.1-.1-.2l-1.5-2.4c-.1-.2-.2-.3-.3-.5-2.7-5-4.3-10.9-4.3-17s1.6-11.9 4.3-17zm280.3-27.9c-.1 0-.2-.1-.4-.1v221c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V539c-.1 0-.2.1-.4.1 42-13.4 72.4-52.7 72.4-99.1 0-46.4-30.4-85.7-72.4-99.1.1 0 .2.1.4.1v-77c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v77c.1 0 .2-.1.4-.1-42 13.4-72.4 52.7-72.4 99.1 0 46.4 30.4 85.7 72.4 99.1zM652 404c19.9 0 36 16.1 36 36s-16.1 36-36 36-36-16.1-36-36 16.1-36 36-36z"]) })), t.CopyTwoTone = l("copy", s, (function (e, t) { return c(i, [t, "M232 706h142c22.1 0 40 17.9 40 40v142h250V264H232v442z"], [e, "M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32z"], [e, "M704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z"]) })), t.CreditCardTwoTone = l("credit-card", s, (function (e, t) { return c(i, [t, "M136 792h752V440H136v352zm507-144c0-4.4 3.6-8 8-8h165c4.4 0 8 3.6 8 8v72c0 4.4-3.6 8-8 8H651c-4.4 0-8-3.6-8-8v-72zM136 232h752v120H136z"], [e, "M651 728h165c4.4 0 8-3.6 8-8v-72c0-4.4-3.6-8-8-8H651c-4.4 0-8 3.6-8 8v72c0 4.4 3.6 8 8 8z"], [e, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V440h752v352zm0-440H136V232h752v120z"]) })), t.CrownTwoTone = l("crown", s, (function (e, t) { return c(i, [t, "M911.9 283.9v.5L835.5 865c-1 8-7.9 14-15.9 14H204.5c-8.1 0-14.9-6.1-16-14l-76.4-580.6v-.6 1.6L188.5 866c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.1-.5.1-1 0-1.5z"], [t, "M773.6 810.6l53.9-409.4-139.8 86.1L512 252.9 336.3 487.3l-139.8-86.1 53.8 409.4h523.3zm-374.2-189c0-62.1 50.5-112.6 112.6-112.6s112.6 50.5 112.6 112.6v1c0 62.1-50.5 112.6-112.6 112.6s-112.6-50.5-112.6-112.6v-1z"], [e, "M512 734.2c61.9 0 112.3-50.2 112.6-112.1v-.5c0-62.1-50.5-112.6-112.6-112.6s-112.6 50.5-112.6 112.6v.5c.3 61.9 50.7 112.1 112.6 112.1zm0-160.9c26.6 0 48.2 21.6 48.2 48.3 0 26.6-21.6 48.3-48.2 48.3s-48.2-21.6-48.2-48.3c0-26.6 21.6-48.3 48.2-48.3z"], [e, "M188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6v-.5c.3-6.4-6.7-10.8-12.3-7.4L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.5-3.4-12.6.9-12.2 7.3v.6L188.5 865zm147.8-377.7L512 252.9l175.7 234.4 139.8-86.1-53.9 409.4H250.3l-53.8-409.4 139.8 86.1z"]) })), t.CustomerServiceTwoTone = l("customer-service", s, (function (e, t) { return c(i, [t, "M696 632h128v192H696zm-496 0h128v192H200z"], [e, "M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384zM328 632v192H200V632h128zm496 192H696V632h128v192z"]) })), t.DashboardTwoTone = l("dashboard", s, (function (e, t) { return c(i, [t, "M512 188c-99.3 0-192.7 38.7-263 109-70.3 70.2-109 163.6-109 263 0 105.6 44.5 205.5 122.6 276h498.8A371.12 371.12 0 0 0 884 560c0-99.3-38.7-192.7-109-263-70.2-70.3-163.6-109-263-109zm-30 44c0-4.4 3.6-8 8-8h44c4.4 0 8 3.6 8 8v80c0 4.4-3.6 8-8 8h-44c-4.4 0-8-3.6-8-8v-80zM270 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44zm90.7-204.4l-31.1 31.1a8.03 8.03 0 0 1-11.3 0l-56.6-56.6a8.03 8.03 0 0 1 0-11.3l31.1-31.1c3.1-3.1 8.2-3.1 11.3 0l56.6 56.6c3.1 3.1 3.1 8.2 0 11.3zm291.1 83.5l-84.5 84.5c5 18.7.2 39.4-14.5 54.1a55.95 55.95 0 0 1-79.2 0 55.95 55.95 0 0 1 0-79.2 55.87 55.87 0 0 1 54.1-14.5l84.5-84.5c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3c3.1 3.1 3.1 8.2 0 11.3zm43-52.4l-31.1-31.1a8.03 8.03 0 0 1 0-11.3l56.6-56.6c3.1-3.1 8.2-3.1 11.3 0l31.1 31.1c3.1 3.1 3.1 8.2 0 11.3l-56.6 56.6a8.03 8.03 0 0 1-11.3 0zM846 538v44c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8z"], [e, "M623.5 421.5a8.03 8.03 0 0 0-11.3 0L527.7 506c-18.7-5-39.4-.2-54.1 14.5a55.95 55.95 0 0 0 0 79.2 55.95 55.95 0 0 0 79.2 0 55.87 55.87 0 0 0 14.5-54.1l84.5-84.5c3.1-3.1 3.1-8.2 0-11.3l-28.3-28.3zM490 320h44c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8h-44c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8z"], [e, "M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM761.4 836H262.6A371.12 371.12 0 0 1 140 560c0-99.4 38.7-192.8 109-263 70.3-70.3 163.7-109 263-109 99.4 0 192.8 38.7 263 109 70.3 70.3 109 163.7 109 263 0 105.6-44.5 205.5-122.6 276z"], [e, "M762.7 340.8l-31.1-31.1a8.03 8.03 0 0 0-11.3 0l-56.6 56.6a8.03 8.03 0 0 0 0 11.3l31.1 31.1c3.1 3.1 8.2 3.1 11.3 0l56.6-56.6c3.1-3.1 3.1-8.2 0-11.3zM750 538v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8zM304.1 309.7a8.03 8.03 0 0 0-11.3 0l-31.1 31.1a8.03 8.03 0 0 0 0 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l31.1-31.1c3.1-3.1 3.1-8.2 0-11.3l-56.6-56.6zM262 530h-80c-4.4 0-8 3.6-8 8v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8z"]) })), t.DeleteTwoTone = l("delete", s, (function (e, t) { return c(i, [t, "M292.7 840h438.6l24.2-512h-487z"], [e, "M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-504-72h304v72H360v-72zm371.3 656H292.7l-24.2-512h487l-24.2 512z"]) })), t.DiffTwoTone = l("diff", s, (function (e, t) { return c(i, [t, "M232 264v624h432V413.8L514.2 264H232zm336 489c0 3.8-3.4 7-7.5 7h-225c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7h225c4.1 0 7.5 3.2 7.5 7v42zm0-262v42c0 3.8-3.4 7-7.5 7H476v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V540h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H420v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1V484h84.5c4.1 0 7.5 3.1 7.5 7z"], [e, "M854.2 306.6L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23z"], [e, "M553.4 201.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM664 888H232V264h282.2L664 413.8V888z"], [e, "M476 399.1c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1V484h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H420v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V540h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H476v-84.9zM560.5 704h-225c-4.1 0-7.5 3.2-7.5 7v42c0 3.8 3.4 7 7.5 7h225c4.1 0 7.5-3.2 7.5-7v-42c0-3.8-3.4-7-7.5-7z"]) })), t.DatabaseTwoTone = l("database", s, (function (e, t) { return c(i, [t, "M232 616h560V408H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 888h560V680H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 344h560V136H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"], [e, "M304 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-544a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"], [e, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V680h560v208zm0-272H232V408h560v208zm0-272H232V136h560v208z"]) })), t.DislikeTwoTone = l("dislike", s, (function (e, t) { return c(i, [t, "M273 100.1v428h.3l-.3-428zM820.4 525l-21.9-19 14-25.5a56.2 56.2 0 0 0 6.9-27.3c0-16.5-7.1-32.2-19.6-43l-21.9-19 13.9-25.4a56.2 56.2 0 0 0 6.9-27.3c0-16.5-7.1-32.2-19.6-43l-21.9-19 13.9-25.4a56.2 56.2 0 0 0 6.9-27.3c0-22.4-13.2-42.6-33.6-51.8H345v345.2c18.6 67.2 46.4 168 83.5 302.5a44.28 44.28 0 0 0 42.2 32.3c7.5.1 15-2.2 21.1-6.7 9.9-7.4 15.2-18.6 14.6-30.5l-9.6-198.4h314.4C829 605.5 840 587.1 840 568c0-16.5-7.1-32.2-19.6-43z"], [e, "M112 132v364c0 17.7 14.3 32 32 32h65V100h-65c-17.7 0-32 14.3-32 32zm773.9 358.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H273l.3 428 85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zm-74.7 126.1H496.8l9.6 198.4c.6 11.9-4.7 23.1-14.6 30.5-6.1 4.5-13.6 6.8-21.1 6.7a44.28 44.28 0 0 1-42.2-32.3c-37.1-134.4-64.9-235.2-83.5-302.5V172h399.4a56.85 56.85 0 0 1 33.6 51.8c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-14 25.5 21.9 19a56.76 56.76 0 0 1 19.6 43c0 19.1-11 37.5-28.8 48.4z"]) })), t.DownCircleTwoTone = l("down-circle", s, (function (e, t) { return c(i, [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm184.4 277.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.3 0 19.9 4.9 25.9 13.2L512 563.6l105.2-145.4c6-8.3 15.7-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.4 12.7z"], [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [e, "M690 405h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 563.6 406.8 418.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7z"]) })), t.DownSquareTwoTone = l("down-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm150-440h46.9c10.3 0 19.9 4.9 25.9 13.2L512 558.6l105.2-145.4c6-8.3 15.7-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.4 12.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7z"], [e, "M505.5 658.7c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 558.6 406.8 413.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246z"]) })), t.EnvironmentTwoTone = l("environment", s, (function (e, t) { return c(i, [t, "M724.4 224.9C667.7 169.5 592.3 139 512 139s-155.7 30.5-212.4 85.8C243.1 280 212 353.2 212 431.1c0 241.3 234.1 407.2 300 449.1 65.9-41.9 300-207.8 300-449.1 0-77.9-31.1-151.1-87.6-206.2zM512 615c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z"], [e, "M512 263c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 551c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 439c0-29.9 11.7-58 32.8-79.2C454 338.6 482.1 327 512 327c29.9 0 58 11.6 79.2 32.8S624 409.1 624 439c0 29.9-11.6 58-32.8 79.2z"], [e, "M854.6 289.1a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 880.2c-65.9-41.9-300-207.8-300-449.1 0-77.9 31.1-151.1 87.6-206.3C356.3 169.5 431.7 139 512 139s155.7 30.5 212.4 85.9C780.9 280 812 353.2 812 431.1c0 241.3-234.1 407.2-300 449.1z"]) })), t.EditTwoTone = l("edit", s, (function (e, t) { return c(i, [t, "M761.1 288.3L687.8 215 325.1 577.6l-15.6 89 88.9-15.7z"], [e, "M880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32zm-622.3-84c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89z"]) })), t.ExclamationCircleTwoTone = l("exclamation-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-32 156c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"], [e, "M488 576h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8zm-24 112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"]) })), t.ExperimentTwoTone = l("experiment", s, (function (e, t) { return c(i, [t, "M551.9 513c19.6 0 35.9-14.2 39.3-32.8A40.02 40.02 0 0 1 552 512a40 40 0 0 1-40-39.4v.5c0 22 17.9 39.9 39.9 39.9zM752 687.8l-.3-.3c-29-17.5-62.3-26.8-97-26.8-44.9 0-87.2 15.7-121 43.8a256.27 256.27 0 0 1-164.9 59.9c-41.2 0-81-9.8-116.7-28L210.5 844h603l-59.9-155.2-1.6-1z"], [e, "M879 824.9L696.3 352V178H768v-68H256v68h71.7v174L145 824.9c-2.8 7.4-4.3 15.2-4.3 23.1 0 35.3 28.7 64 64 64h614.6c7.9 0 15.7-1.5 23.1-4.3 33-12.7 49.4-49.8 36.6-82.8zM395.7 364.7V180h232.6v184.7L719.2 600c-20.7-5.3-42.1-8-63.9-8-61.2 0-119.2 21.5-165.3 60a188.78 188.78 0 0 1-121.3 43.9c-32.7 0-64.1-8.3-91.8-23.7l118.8-307.5zM210.5 844l41.6-107.6.1-.2c35.7 18.1 75.4 27.8 116.6 27.8 61.2 0 119.2-21.5 165.3-60 33.9-28.2 76.3-43.9 121.3-43.9 35 0 68.4 9.5 97.6 27.1l.6 1.6L813.5 844h-603z"], [e, "M552 512c19.3 0 35.4-13.6 39.2-31.8.6-2.7.8-5.4.8-8.2 0-22.1-17.9-40-40-40s-40 17.9-40 40v.6a40 40 0 0 0 40 39.4z"]) })), t.EyeInvisibleTwoTone = l("eye-invisible", s, (function (e, t) { return c(i, [t, "M254.89 758.85l125.57-125.57a176 176 0 0 1 248.82-248.82L757 256.72Q651.69 186.07 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q69.27 145.91 173.09 221.05zM942.2 486.2Q889.46 375.11 816.7 305L672.48 449.27a176.09 176.09 0 0 1-227.22 227.21L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5z"], [e, "M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5zM878.63 165.56L836 122.88a8 8 0 0 0-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 0 0 0 11.31L155.17 889a8 8 0 0 0 11.31 0l712.15-712.12a8 8 0 0 0 0-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 0 0-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 0 1 146.2-106.69L401.31 546.2A112 112 0 0 1 396 512z"], [e, "M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 0 0 227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 0 1-112 112z"]) })), t.EyeTwoTone = l("eye", s, (function (e, t) { return c(i, [t, "M81.8 537.8a60.3 60.3 0 0 1 0-51.5C176.6 286.5 319.8 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c-192.1 0-335.4-100.5-430.2-300.2z"], [t, "M512 258c-161.3 0-279.4 81.8-362.7 254C232.6 684.2 350.7 766 512 766c161.4 0 279.5-81.8 362.7-254C791.4 339.8 673.3 258 512 258zm-4 430c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z"], [e, "M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258s279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766z"], [e, "M508 336c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"]) })), t.FileAddTwoTone = l("file-add", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm126 236v48c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V644H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V472c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M544 472c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V472z"]) })), t.FileExclamationTwoTone = l("file-exclamation", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-54 96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V448zm32 336c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M488 640h48c4.4 0 8-3.6 8-8V448c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm-16 104a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"]) })), t.FileImageTwoTone = l("file-image", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-134 50c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm296 294H328.1c-6.7 0-10.4-7.7-6.3-12.9l99.8-127.2a8 8 0 0 1 12.6 0l41.1 52.4 77.8-99.2a8.1 8.1 0 0 1 12.7 0l136.5 174c4.1 5.2.4 12.9-6.3 12.9z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M553.1 509.1l-77.8 99.2-41.1-52.4a8 8 0 0 0-12.6 0l-99.8 127.2a7.98 7.98 0 0 0 6.3 12.9H696c6.7 0 10.4-7.7 6.3-12.9l-136.5-174a8.1 8.1 0 0 0-12.7 0zM360 442a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"]) })), t.FileExcelTwoTone = l("file-excel", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm51.6 120h35.7a12.04 12.04 0 0 1 10.1 18.5L546.1 623l84 130.4c3.6 5.6 2 13-3.6 16.6-2 1.2-4.2 1.9-6.5 1.9h-37.5c-4.1 0-8-2.1-10.2-5.7L510 664.8l-62.7 101.5c-2.2 3.5-6 5.7-10.2 5.7h-34.5a12.04 12.04 0 0 1-10.2-18.4l83.4-132.8-82.3-130.4c-3.6-5.7-1.9-13.1 3.7-16.6 1.9-1.3 4.1-1.9 6.4-1.9H442c4.2 0 8.1 2.2 10.3 5.8l61.8 102.4 61.2-102.3c2.2-3.6 6.1-5.8 10.3-5.8z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M514.1 580.1l-61.8-102.4c-2.2-3.6-6.1-5.8-10.3-5.8h-38.4c-2.3 0-4.5.6-6.4 1.9-5.6 3.5-7.3 10.9-3.7 16.6l82.3 130.4-83.4 132.8a12.04 12.04 0 0 0 10.2 18.4h34.5c4.2 0 8-2.2 10.2-5.7L510 664.8l62.3 101.4c2.2 3.6 6.1 5.7 10.2 5.7H620c2.3 0 4.5-.7 6.5-1.9 5.6-3.6 7.2-11 3.6-16.6l-84-130.4 85.3-132.5a12.04 12.04 0 0 0-10.1-18.5h-35.7c-4.2 0-8.1 2.2-10.3 5.8l-61.2 102.3z"]) })), t.FileMarkdownTwoTone = l("file-markdown", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm72.3 122H641c6.6 0 12 5.4 12 12v272c0 6.6-5.4 12-12 12h-27.2c-6.6 0-12-5.4-12-12V581.7L535 732.3c-2 4.3-6.3 7.1-11 7.1h-24.1a12 12 0 0 1-11-7.1l-66.8-150.2V758c0 6.6-5.4 12-12 12H383c-6.6 0-12-5.4-12-12V486c0-6.6 5.4-12 12-12h35c4.8 0 9.1 2.8 11 7.2l83.2 191 83.1-191c1.9-4.4 6.2-7.2 11-7.2z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M429 481.2c-1.9-4.4-6.2-7.2-11-7.2h-35c-6.6 0-12 5.4-12 12v272c0 6.6 5.4 12 12 12h27.1c6.6 0 12-5.4 12-12V582.1l66.8 150.2a12 12 0 0 0 11 7.1H524c4.7 0 9-2.8 11-7.1l66.8-150.6V758c0 6.6 5.4 12 12 12H641c6.6 0 12-5.4 12-12V486c0-6.6-5.4-12-12-12h-34.7c-4.8 0-9.1 2.8-11 7.2l-83.1 191-83.2-191z"]) })), t.FilePdfTwoTone = l("file-pdf", s, (function (e, t) { return c(i, [t, "M509.2 490.8c-.7-1.3-1.4-1.9-2.2-2-2.9 3.3-2.2 31.5 2.7 51.4 4-13.6 4.7-40.5-.5-49.4zm-1.6 120.5c-7.7 20-18.8 47.3-32.1 71.4 4-1.6 8.1-3.3 12.3-5 17.6-7.2 37.3-15.3 58.9-20.2-14.9-11.8-28.4-27.7-39.1-46.2z"], [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm55 287.6c16.1-1.9 30.6-2.8 44.3-2.3 12.8.4 23.6 2 32 5.1.2.1.3.1.5.2.4.2.8.3 1.2.5.5.2 1.1.4 1.6.7.1.1.3.1.4.2 4.1 1.8 7.5 4 10.1 6.6 9.1 9.1 11.8 26.1 6.2 39.6-3.2 7.7-11.7 20.5-33.3 20.5-21.8 0-53.9-9.7-82.1-24.8-25.5 4.3-53.7 13.9-80.9 23.1-5.8 2-11.8 4-17.6 5.9-38 65.2-66.5 79.4-84.1 79.4-4.2 0-7.8-.9-10.8-2-6.9-2.6-12.8-8-16.5-15-.9-1.7-1.6-3.4-2.2-5.2-1.6-4.8-2.1-9.6-1.3-13.6l.6-2.7c.1-.2.1-.4.2-.6.2-.7.4-1.4.7-2.1 0-.1.1-.2.1-.3 4.1-11.9 13.6-23.4 27.7-34.6 12.3-9.8 27.1-18.7 45.9-28.4 15.9-28 37.6-75.1 51.2-107.4-10.8-41.8-16.7-74.6-10.1-98.6.9-3.3 2.5-6.4 4.6-9.1.2-.2.3-.4.5-.6.1-.1.1-.2.2-.2 6.3-7.5 16.9-11.9 28.1-11.5 16.6.7 29.7 11.5 33 30.1 1.7 8 2.2 16.5 1.9 25.7v.7c0 .5 0 1-.1 1.5-.7 13.3-3 26.6-7.3 44.7-.4 1.6-.8 3.2-1.2 5.2l-1 4.1-.1.3c.1.2.1.3.2.5l1.8 4.5c.1.3.3.7.4 1 .7 1.6 1.4 3.3 2.1 4.8v.1c8.7 18.8 19.7 33.4 33.9 45.1 4.3 3.5 8.9 6.7 13.9 9.8 1.8-.5 3.5-.7 5.3-.9z"], [t, "M391.5 761c5.7-4.4 16.2-14.5 30.1-34.7-10.3 9.4-23.4 22.4-30.1 34.7zm270.9-83l.2-.3h.2c.6-.4.5-.7.4-.9-.1-.1-4.5-9.3-45.1-7.4 35.3 13.9 43.5 9.1 44.3 8.6z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M535.9 585.3c-.8-1.7-1.5-3.3-2.2-4.9-.1-.3-.3-.7-.4-1l-1.8-4.5c-.1-.2-.1-.3-.2-.5l.1-.3.2-1.1c4-16.3 8.6-35.3 9.4-54.4v-.7c.3-8.6-.2-17.2-2-25.6-3.8-21.3-19.5-29.6-32.9-30.2-11.3-.5-21.8 4-28.1 11.4-.1.1-.1.2-.2.2-.2.2-.4.4-.5.6-2.1 2.7-3.7 5.8-4.6 9.1-6.6 24-.7 56.8 10.1 98.6-13.6 32.4-35.3 79.4-51.2 107.4v.1c-27.7 14.3-64.1 35.8-73.6 62.9 0 .1-.1.2-.1.3-.2.7-.5 1.4-.7 2.1-.1.2-.1.4-.2.6-.2.9-.5 1.8-.6 2.7-.9 4-.4 8.8 1.3 13.6.6 1.8 1.3 3.5 2.2 5.2 3.7 7 9.6 12.4 16.5 15 3 1.1 6.6 2 10.8 2 17.6 0 46.1-14.2 84.1-79.4 5.8-1.9 11.8-3.9 17.6-5.9 27.2-9.2 55.4-18.8 80.9-23.1 28.2 15.1 60.3 24.8 82.1 24.8 21.6 0 30.1-12.8 33.3-20.5 5.6-13.5 2.9-30.5-6.2-39.6-2.6-2.6-6-4.8-10.1-6.6-.1-.1-.3-.1-.4-.2-.5-.2-1.1-.4-1.6-.7-.4-.2-.8-.3-1.2-.5-.2-.1-.3-.1-.5-.2-16.2-5.8-41.7-6.7-76.3-2.8l-5.3.6c-5-3-9.6-6.3-13.9-9.8-14.2-11.3-25.1-25.8-33.8-44.7zM391.5 761c6.7-12.3 19.8-25.3 30.1-34.7-13.9 20.2-24.4 30.3-30.1 34.7zM507 488.8c.8.1 1.5.7 2.2 2 5.2 8.9 4.5 35.8.5 49.4-4.9-19.9-5.6-48.1-2.7-51.4zm-19.2 188.9c-4.2 1.7-8.3 3.4-12.3 5 13.3-24.1 24.4-51.4 32.1-71.4 10.7 18.5 24.2 34.4 39.1 46.2-21.6 4.9-41.3 13-58.9 20.2zm175.4-.9c.1.2.2.5-.4.9h-.2l-.2.3c-.8.5-9 5.3-44.3-8.6 40.6-1.9 45 7.3 45.1 7.4z"]) })), t.FilePptTwoTone = l("file-ppt", s, (function (e, t) { return c(i, [t, "M464.5 516.2v108.4h38.9c44.7 0 71.2-10.9 71.2-54.3 0-34.4-20.1-54.1-53.9-54.1h-56.2z"], [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm90 218.4c0 55.2-36.8 94.1-96.2 94.1h-63.3V760c0 4.4-3.6 8-8 8H424c-4.4 0-8-3.6-8-8V484c0-4.4 3.6-8 8-8v.1h104c59.7 0 96 39.8 96 94.3z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M424 476.1c-4.4-.1-8 3.5-8 7.9v276c0 4.4 3.6 8 8 8h32.5c4.4 0 8-3.6 8-8v-95.5h63.3c59.4 0 96.2-38.9 96.2-94.1 0-54.5-36.3-94.3-96-94.3H424zm150.6 94.2c0 43.4-26.5 54.3-71.2 54.3h-38.9V516.2h56.2c33.8 0 53.9 19.7 53.9 54.1z"]) })), t.FileTextTwoTone = l("file-text", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-22 322c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm200-184v48c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8zm192 128H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"]) })), t.FileUnknownTwoTone = l("file-unknown", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-22 424c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm110-228.4c.7 44.9-29.7 84.5-74.3 98.9-5.7 1.8-9.7 7.3-9.7 13.3V672c0 5.5-4.5 10-10 10h-32c-5.5 0-10-4.5-10-10v-32c.2-19.8 15.4-37.3 34.7-40.1C549 596.2 570 574.3 570 549c0-28.1-25.8-51.5-58-51.5s-58 23.4-58 51.6c0 5.2-4.4 9.4-9.8 9.4h-32.4c-5.4 0-9.8-4.1-9.8-9.5 0-57.4 50.1-103.7 111.5-103 59.3.8 107.7 46.1 108.5 101.6z"], [e, "M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M480 744a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm-78-195c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103z"]) })), t.FileZipTwoTone = l("file-zip", s, (function (e, t) { return c(i, [t, "M344 630h32v2h-32z"], [t, "M534 352V136H360v64h64v64h-64v64h64v64h-64v64h64v64h-64v62h64v160H296V520h64v-64h-64v-64h64v-64h-64v-64h64v-64h-64v-64h-64v752h560V394H576a42 42 0 0 1-42-42z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h64v64h64v-64h174v216a42 42 0 0 0 42 42h216v494z"], [e, "M296 392h64v64h-64zm0-128h64v64h-64zm0 318v160h128V582h-64v-62h-64v62zm48 50v-2h32v64h-32v-62zm16-432h64v64h-64zm0 256h64v64h-64zm0-128h64v64h-64z"]) })), t.FileWordTwoTone = l("file-word", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm101.3 129.3c1.3-5.4 6.1-9.3 11.7-9.3h35.6a12.04 12.04 0 0 1 11.6 15.1l-74.4 276c-1.4 5.3-6.2 8.9-11.6 8.9h-31.8c-5.4 0-10.2-3.7-11.6-8.9l-52.8-197-52.8 197c-1.4 5.3-6.2 8.9-11.6 8.9h-32c-5.4 0-10.2-3.7-11.6-8.9l-74.2-276a12.02 12.02 0 0 1 11.6-15.1h35.4c5.6 0 10.4 3.9 11.7 9.3L434.6 680l49.7-198.9c1.3-5.4 6.1-9.1 11.6-9.1h32.2c5.5 0 10.3 3.7 11.6 9.1l49.8 199.3 45.8-199.1z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M528.1 472h-32.2c-5.5 0-10.3 3.7-11.6 9.1L434.6 680l-46.1-198.7c-1.3-5.4-6.1-9.3-11.7-9.3h-35.4a12.02 12.02 0 0 0-11.6 15.1l74.2 276c1.4 5.2 6.2 8.9 11.6 8.9h32c5.4 0 10.2-3.6 11.6-8.9l52.8-197 52.8 197c1.4 5.2 6.2 8.9 11.6 8.9h31.8c5.4 0 10.2-3.6 11.6-8.9l74.4-276a12.04 12.04 0 0 0-11.6-15.1H647c-5.6 0-10.4 3.9-11.7 9.3l-45.8 199.1-49.8-199.3c-1.3-5.4-6.1-9.1-11.6-9.1z"]) })), t.FileTwoTone = l("file", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"]) })), t.FilterTwoTone = l("filter", s, (function (e, t) { return c(i, [t, "M420.6 798h182.9V642H420.6zM411 561.4l9.5 16.6h183l9.5-16.6L811.3 226H212.7z"], [e, "M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.5 798H420.6V642h182.9v156zm9.5-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z"]) })), t.FireTwoTone = l("fire", s, (function (e, t) { return c(i, [t, "M737 438.6c-9.6 15.5-21.1 30.7-34.4 45.6a73.1 73.1 0 0 1-51 24.4 73.36 73.36 0 0 1-53.4-18.8 74.01 74.01 0 0 1-24.4-59.8c3-47.4-12.4-103.1-45.8-165.7-16.9-31.4-37.1-58.2-61.2-80.4a240 240 0 0 1-12.1 46.5 354.26 354.26 0 0 1-58.2 101 349.6 349.6 0 0 1-58.6 56.8c-34 26.1-62 60-80.8 97.9a275.96 275.96 0 0 0-29.1 124c0 74.9 29.5 145.3 83 198.4 53.7 53.2 125 82.4 201 82.4s147.3-29.2 201-82.4c53.5-53 83-123.5 83-198.4 0-39.2-8.1-77.3-24-113.1-9.3-21-21-40.5-35-58.4z"], [e, "M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9zM713 808.5c-53.7 53.2-125 82.4-201 82.4s-147.3-29.2-201-82.4c-53.5-53.1-83-123.5-83-198.4 0-43.5 9.8-85.2 29.1-124 18.8-37.9 46.8-71.8 80.8-97.9a349.6 349.6 0 0 0 58.6-56.8c25-30.5 44.6-64.5 58.2-101a240 240 0 0 0 12.1-46.5c24.1 22.2 44.3 49 61.2 80.4 33.4 62.6 48.8 118.3 45.8 165.7a74.01 74.01 0 0 0 24.4 59.8 73.36 73.36 0 0 0 53.4 18.8c19.7-1 37.8-9.7 51-24.4 13.3-14.9 24.8-30.1 34.4-45.6 14 17.9 25.7 37.4 35 58.4 15.9 35.8 24 73.9 24 113.1 0 74.9-29.5 145.4-83 198.4z"]) })), t.FolderAddTwoTone = l("folder-add", s, (function (e, t) { return c(i, [t, "M372.5 256H184v512h656V370.4H492.1L372.5 256zM540 443.1V528h84.5c4.1 0 7.5 3.1 7.5 7v42c0 3.8-3.4 7-7.5 7H540v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V584h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H484v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1z"], [e, "M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z"], [e, "M484 443.1V528h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H484v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V584h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H540v-84.9c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1z"]) })), t.FlagTwoTone = l("flag", s, (function (e, t) { return c(i, [t, "M184 232h368v336H184z"], [t, "M624 632c0 4.4-3.6 8-8 8H504v73h336V377H624v255z"], [e, "M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32zM184 568V232h368v336H184zm656 145H504v-73h112c4.4 0 8-3.6 8-8V377h216v336z"]) })), t.FolderTwoTone = l("folder", s, (function (e, t) { return c(i, [e, "M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z"], [t, "M372.5 256H184v512h656V370.4H492.1z"]) })), t.FolderOpenTwoTone = l("folder-open", s, (function (e, t) { return c(i, [t, "M159 768h612.3l103.4-256H262.3z"], [e, "M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z"]) })), t.FrownTwoTone = l("frown", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm376 272h-48.1c-4.2 0-7.8-3.2-8.1-7.4C604 636.1 562.5 597 512 597s-92.1 39.1-95.8 88.6c-.3 4.2-3.9 7.4-8.1 7.4H360a8 8 0 0 1-8-8.4c4.4-84.3 74.5-151.6 160-151.6s155.6 67.3 160 151.6a8 8 0 0 1-8 8.4zm24-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"], [e, "M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm224 112c-85.5 0-155.6 67.3-160 151.6a8 8 0 0 0 8 8.4h48.1c4.2 0 7.8-3.2 8.1-7.4 3.7-49.5 45.3-88.6 95.8-88.6s92 39.1 95.8 88.6c.3 4.2 3.9 7.4 8.1 7.4H664a8 8 0 0 0 8-8.4C667.6 600.3 597.5 533 512 533zm128-112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"]) })), t.FundTwoTone = l("fund", s, (function (e, t) { return c(i, [e, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560z"], [t, "M136 792h752V232H136v560zm56.4-130.5l214.9-215c3.1-3.1 8.2-3.1 11.3 0L533 561l254.5-254.6c3.1-3.1 8.2-3.1 11.3 0l36.8 36.8c3.1 3.1 3.1 8.2 0 11.3l-297 297.2a8.03 8.03 0 0 1-11.3 0L412.9 537.2 240.4 709.7a8.03 8.03 0 0 1-11.3 0l-36.7-36.9a8.03 8.03 0 0 1 0-11.3z"], [e, "M229.1 709.7c3.1 3.1 8.2 3.1 11.3 0l172.5-172.5 114.4 114.5c3.1 3.1 8.2 3.1 11.3 0l297-297.2c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 0 0-11.3 0L533 561 418.6 446.5a8.03 8.03 0 0 0-11.3 0l-214.9 215a8.03 8.03 0 0 0 0 11.3l36.7 36.9z"]) })), t.FunnelPlotTwoTone = l("funnel-plot", s, (function (e, t) { return c(i, [t, "M420.6 798h182.9V650H420.6zM297.7 374h428.6l85-148H212.7zm113.2 197.4l8.4 14.6h185.3l8.4-14.6L689.6 438H334.4z"], [e, "M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 607.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V607.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.5 798H420.6V650h182.9v148zm9.5-226.6l-8.4 14.6H419.3l-8.4-14.6L334.4 438h355.2L613 571.4zM726.3 374H297.7l-85-148h598.6l-85 148z"]) })), t.GiftTwoTone = l("gift", s, (function (e, t) { return c(i, [t, "M546 378h298v104H546zM228 550h250v308H228zm-48-172h298v104H180zm366 172h250v308H546z"], [e, "M880 310H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v200c0 4.4 3.6 8 8 8h40v344c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V550h40c4.4 0 8-3.6 8-8V342c0-17.7-14.3-32-32-32zM478 858H228V550h250v308zm0-376H180V378h298v104zm0-176h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70 70 31.4 70 70v70zm68-70c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70h-70v-70zm250 622H546V550h250v308zm48-376H546V378h298v104z"]) })), t.HddTwoTone = l("hdd", s, (function (e, t) { return c(i, [t, "M232 888h560V680H232v208zm448-140c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 616h560V408H232v208zm72-128c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H312c-4.4 0-8-3.6-8-8v-48zm-72-144h560V136H232v208zm72-128c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H312c-4.4 0-8-3.6-8-8v-48z"], [e, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V680h560v208zm0-272H232V408h560v208zm0-272H232V136h560v208z"], [e, "M312 544h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-272h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm328 516a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"]) })), t.HeartTwoTone = l("heart", s, (function (e, t) { return c(i, [e, "M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z"], [t, "M679.7 201c-73.1 0-136.5 40.8-167.7 100.4C480.8 241.8 417.4 201 344.3 201c-104 0-188.3 82.6-188.3 184.5 0 201.2 356 429.3 356 429.3s356-228.1 356-429.3C868 283.6 783.7 201 679.7 201z"]) })), t.HighlightTwoTone = l("highlight", s, (function (e, t) { return c(i, [t, "M229.6 796.3h160.2l54.3-54.1-80.1-78.9zm220.7-397.1l262.8 258.9 147.3-145-262.8-259zm-77.1 166.1l171.4 168.9 68.6-67.6-171.4-168.9z"], [e, "M957.6 507.5L603.2 158.3a7.9 7.9 0 0 0-11.2 0L353.3 393.5a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8v55.2c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6L539 830a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2zM389.8 796.3H229.6l134.4-133 80.1 78.9-54.3 54.1zm154.8-62.1L373.2 565.3l68.6-67.6 171.4 168.9-68.6 67.6zm168.5-76.1L450.3 399.2l147.3-145.1 262.8 259-147.3 145z"]) })), t.HomeTwoTone = l("home", s, (function (e, t) { return c(i, [t, "M512.1 172.6l-370 369.7h96V868H392V640c0-22.1 17.9-40 40-40h160c22.1 0 40 17.9 40 40v228h153.9V542.3H882L535.2 195.7l-23.1-23.1zm434.5 422.9c-6 6-13.1 10.8-20.8 13.9 7.7-3.2 14.8-7.9 20.8-13.9zm-887-34.7c5 30.3 31.4 53.5 63.1 53.5h.9c-31.9 0-58.9-23-64-53.5zm-.9-10.5v-1.9 1.9zm.1-2.6c.1-3.1.5-6.1 1-9.1-.6 2.9-.9 6-1 9.1z"], [e, "M951 510c0-.1-.1-.1-.1-.2l-1.8-2.1c-.1-.1-.2-.3-.4-.4-.7-.8-1.5-1.6-2.2-2.4L560.1 118.8l-25.9-25.9a31.5 31.5 0 0 0-44.4 0L77.5 505a63.6 63.6 0 0 0-16 26.6l-.6 2.1-.3 1.1-.3 1.2c-.2.7-.3 1.4-.4 2.1 0 .1 0 .3-.1.4-.6 3-.9 6-1 9.1v3.3c0 .5 0 1 .1 1.5 0 .5 0 .9.1 1.4 0 .5.1 1 .1 1.5 0 .6.1 1.2.2 1.8 0 .3.1.6.1.9l.3 2.5v.1c5.1 30.5 32.2 53.5 64 53.5h42.5V940h691.7V614.3h43.4c8.6 0 16.9-1.7 24.5-4.9s14.7-7.9 20.8-13.9a63.6 63.6 0 0 0 18.7-45.3c0-14.7-5-28.8-14.3-40.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z"]) })), t.HourglassTwoTone = l("hourglass", s, (function (e, t) { return c(i, [t, "M512 548c-42.2 0-81.9 16.4-111.7 46.3A156.63 156.63 0 0 0 354 706v134h316V706c0-42.2-16.4-81.9-46.3-111.7A156.63 156.63 0 0 0 512 548zM354 318c0 42.2 16.4 81.9 46.3 111.7C430.1 459.6 469.8 476 512 476s81.9-16.4 111.7-46.3C653.6 399.9 670 360.2 670 318V184H354v134z"], [e, "M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194zm-72 388v134H354V706c0-42.2 16.4-81.9 46.3-111.7C430.1 564.4 469.8 548 512 548s81.9 16.4 111.7 46.3C653.6 624.1 670 663.8 670 706zm0-388c0 42.2-16.4 81.9-46.3 111.7C593.9 459.6 554.2 476 512 476s-81.9-16.4-111.7-46.3A156.63 156.63 0 0 1 354 318V184h316v134z"]) })), t.Html5TwoTone = l("html5", s, (function (e, t) { return c(i, [e, "M145 96l66 746.6L511.8 928l299.6-85.4L878.7 96H145zm610.9 700.6l-244.1 69.6-245.2-69.6-56.7-641.2h603.8l-57.8 641.2z"], [t, "M209.9 155.4l56.7 641.2 245.2 69.6 244.1-69.6 57.8-641.2H209.9zm530.4 117.9l-4.8 47.2-1.7 19.5H381.7l8.2 94.2H511v-.2h214.7l-3.2 24.3-21.2 242.2-1.7 16.3-187.7 51.7v.4h-1.7l-188.6-52-11.3-144.7h91l6.5 73.2 102.4 27.7h.8v-.2l102.4-27.7 11.4-118.5H511.9v.1H305.4l-22.7-253.5L281 249h461l-1.7 24.3z"], [e, "M281 249l1.7 24.3 22.7 253.5h206.5v-.1h112.9l-11.4 118.5L511 672.9v.2h-.8l-102.4-27.7-6.5-73.2h-91l11.3 144.7 188.6 52h1.7v-.4l187.7-51.7 1.7-16.3 21.2-242.2 3.2-24.3H511v.2H389.9l-8.2-94.2h352.1l1.7-19.5 4.8-47.2L742 249H511z"]) })), t.IdcardTwoTone = l("idcard", s, (function (e, t) { return c(i, [e, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560z"], [t, "M136 792h752V232H136v560zm472-372c0-4.4 1-8 2.3-8h123.4c1.3 0 2.3 3.6 2.3 8v48c0 4.4-1 8-2.3 8H610.3c-1.3 0-2.3-3.6-2.3-8v-48zm0 144c0-4.4 3.2-8 7.1-8h185.7c3.9 0 7.1 3.6 7.1 8v48c0 4.4-3.2 8-7.1 8H615.1c-3.9 0-7.1-3.6-7.1-8v-48zM216.2 664.6c2.8-53.3 31.9-99.6 74.6-126.1-18.1-20-29.1-46.4-29.1-75.5 0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.6-29.1 75.5 42.6 26.4 71.8 72.8 74.6 126.1a8 8 0 0 1-8 8.4h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H224c-4.6 0-8.2-3.8-7.8-8.4z"], [t, "M321.3 463a51.7 52 0 1 0 103.4 0 51.7 52 0 1 0-103.4 0z"], [e, "M610.3 476h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48c0 4.4 1 8 2.3 8zm4.8 144h185.7c3.9 0 7.1-3.6 7.1-8v-48c0-4.4-3.2-8-7.1-8H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8zM224 673h43.9c4.2 0 7.6-3.3 7.9-7.5 3.8-50.5 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H522a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.6-126.1a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1c-.4 4.6 3.2 8.4 7.8 8.4zm149-262c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52-51.7-23.3-51.7-52 23.2-52 51.7-52z"]) })), t.InfoCircleTwoTone = l("info-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm32 588c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"], [e, "M464 336a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z"]) })), t.InsuranceTwoTone = l("insurance", s, (function (e, t) { return c(i, [e, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z"], [t, "M521.9 358.8h97.9v41.6h-97.9z"], [t, "M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM413.3 656h-.2c0 4.4-3.6 8-8 8h-37.3c-4.4 0-8-3.6-8-8V471.4c-7.7 9.2-15.4 17.9-23.1 26a6.04 6.04 0 0 1-10.2-2.4l-13.2-43.5c-.6-2-.2-4.1 1.2-5.6 37-43.4 64.7-95.1 82.2-153.6 1.1-3.5 5-5.3 8.4-3.7l38.6 18.3c2.7 1.3 4.1 4.4 3.2 7.2a429.2 429.2 0 0 1-33.6 79V656zm257.9-340v127.2c0 4.4-3.6 8-8 8h-66.7v18.6h98.8c4.4 0 8 3.6 8 8v35.6c0 4.4-3.6 8-8 8h-59c18.1 29.1 41.8 54.3 72.3 76.9 2.6 2.1 3.2 5.9 1.2 8.5l-26.3 35.3a5.92 5.92 0 0 1-8.9.7c-30.6-29.3-56.8-65.2-78.1-106.9V656c0 4.4-3.6 8-8 8h-36.2c-4.4 0-8-3.6-8-8V536c-22 44.7-49 80.8-80.6 107.6a6.38 6.38 0 0 1-4.8 1.4c-1.7-.3-3.2-1.3-4.1-2.8L432 605.7a6 6 0 0 1 1.6-8.1c28.6-20.3 51.9-45.2 71-76h-55.1c-4.4 0-8-3.6-8-8V478c0-4.4 3.6-8 8-8h94.9v-18.6h-65.9c-4.4 0-8-3.6-8-8V316c0-4.4 3.6-8 8-8h184.7c4.4 0 8 3.6 8 8z"], [e, "M443.7 306.9l-38.6-18.3c-3.4-1.6-7.3.2-8.4 3.7-17.5 58.5-45.2 110.2-82.2 153.6a5.7 5.7 0 0 0-1.2 5.6l13.2 43.5c1.4 4.5 7 5.8 10.2 2.4 7.7-8.1 15.4-16.8 23.1-26V656c0 4.4 3.6 8 8 8h37.3c4.4 0 8-3.6 8-8h.2V393.1a429.2 429.2 0 0 0 33.6-79c.9-2.8-.5-5.9-3.2-7.2zm26.8 9.1v127.4c0 4.4 3.6 8 8 8h65.9V470h-94.9c-4.4 0-8 3.6-8 8v35.6c0 4.4 3.6 8 8 8h55.1c-19.1 30.8-42.4 55.7-71 76a6 6 0 0 0-1.6 8.1l22.8 36.5c.9 1.5 2.4 2.5 4.1 2.8 1.7.3 3.5-.2 4.8-1.4 31.6-26.8 58.6-62.9 80.6-107.6v120c0 4.4 3.6 8 8 8h36.2c4.4 0 8-3.6 8-8V535.9c21.3 41.7 47.5 77.6 78.1 106.9 2.6 2.5 6.7 2.2 8.9-.7l26.3-35.3c2-2.6 1.4-6.4-1.2-8.5-30.5-22.6-54.2-47.8-72.3-76.9h59c4.4 0 8-3.6 8-8v-35.6c0-4.4-3.6-8-8-8h-98.8v-18.6h66.7c4.4 0 8-3.6 8-8V316c0-4.4-3.6-8-8-8H478.5c-4.4 0-8 3.6-8 8zm51.4 42.8h97.9v41.6h-97.9v-41.6z"]) })), t.InteractionTwoTone = l("interaction", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm114-401.9c0-55.3 44.6-100.1 99.7-100.1h205.8v-53.4c0-5.6 6.5-8.8 10.9-5.3L723.5 365c3.5 2.7 3.5 8 0 10.7l-109.1 85.7c-4.4 3.5-10.9.4-10.9-5.3v-53.4H397.8c-19.6 0-35.5 15.9-35.5 35.6v78.9c0 3.8-3.1 6.8-6.8 6.8h-50.7c-3.8 0-6.8-3-6.8-7v-78.9zm2.6 210.3l109.1-85.7c4.4-3.5 10.9-.4 10.9 5.3v53.4h205.6c19.6 0 35.5-15.9 35.5-35.6v-78.9c0-3.8 3.1-6.8 6.8-6.8h50.7c3.8 0 6.8 3.1 6.8 6.8v78.9c0 55.3-44.6 100.1-99.7 100.1H420.6v53.4c0 5.6-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.5z"], [e, "M304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z"]) })), t.InterationTwoTone = l("interation", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm114-401.9c0-55.3 44.6-100.1 99.7-100.1h205.8v-53.4c0-5.6 6.5-8.8 10.9-5.3L723.5 365c3.5 2.7 3.5 8 0 10.7l-109.1 85.7c-4.4 3.5-10.9.4-10.9-5.3v-53.4H397.8c-19.6 0-35.5 15.9-35.5 35.6v78.9c0 3.8-3.1 6.8-6.8 6.8h-50.7c-3.8 0-6.8-3-6.8-7v-78.9zm2.6 210.3l109.1-85.7c4.4-3.5 10.9-.4 10.9 5.3v53.4h205.6c19.6 0 35.5-15.9 35.5-35.6v-78.9c0-3.8 3.1-6.8 6.8-6.8h50.7c3.8 0 6.8 3.1 6.8 6.8v78.9c0 55.3-44.6 100.1-99.7 100.1H420.6v53.4c0 5.6-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.5z"], [e, "M304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z"]) })), t.LayoutTwoTone = l("layout", s, (function (e, t) { return c(i, [t, "M384 185h456v136H384zm-200 0h136v656H184zm696-73H144c-17.7 0-32 14.3-32 32v1c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32v-1c0-17.7-14.3-32-32-32zM384 385h456v456H384z"], [e, "M880 113H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V145c0-17.7-14.3-32-32-32zM320 841H184V185h136v656zm520 0H384V385h456v456zm0-520H384V185h456v136z"]) })), t.LeftCircleTwoTone = l("left-circle", s, (function (e, t) { return c(i, [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm104 240.9c0 10.3-4.9 19.9-13.2 25.9L457.4 512l145.4 105.1c8.3 6 13.2 15.7 13.2 25.9v46.9c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178c5.3-3.8 12.7 0 12.7 6.5v46.9z"], [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [e, "M603.3 327.5l-246 178a7.95 7.95 0 0 0 0 12.9l246 178c5.3 3.8 12.7 0 12.7-6.5V643c0-10.2-4.9-19.9-13.2-25.9L457.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5z"]) })), t.LeftSquareTwoTone = l("left-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm181.3-334.5l246-178c5.3-3.8 12.7 0 12.7 6.5v46.9c0 10.3-4.9 19.9-13.2 25.9L465.4 512l145.4 105.2c8.3 6 13.2 15.7 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.4l-246-178a7.95 7.95 0 0 1 0-12.9z"], [e, "M365.3 518.4l246 178c5.3 3.9 12.7.1 12.7-6.4v-46.9c0-10.2-4.9-19.9-13.2-25.9L465.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5l-246 178a7.95 7.95 0 0 0 0 12.9z"]) })), t.LikeTwoTone = l("like", s, (function (e, t) { return c(i, [t, "M273 495.9v428l.3-428zm538.2-88.3H496.8l9.6-198.4c.6-11.9-4.7-23.1-14.6-30.5-6.1-4.5-13.6-6.8-21.1-6.7-19.6.1-36.9 13.4-42.2 32.3-37.1 134.4-64.9 235.2-83.5 302.5V852h399.4a56.85 56.85 0 0 0 33.6-51.8c0-9.7-2.3-18.9-6.9-27.3l-13.9-25.4 21.9-19a56.76 56.76 0 0 0 19.6-43c0-9.7-2.3-18.9-6.9-27.3l-13.9-25.4 21.9-19a56.76 56.76 0 0 0 19.6-43c0-9.7-2.3-18.9-6.9-27.3l-14-25.5 21.9-19a56.76 56.76 0 0 0 19.6-43c0-19.1-11-37.5-28.8-48.4z"], [e, "M112 528v364c0 17.7 14.3 32 32 32h65V496h-65c-17.7 0-32 14.3-32 32zm773.9 5.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.5-65.5-111a67.67 67.67 0 0 0-34.3-9.3H572.3l6-122.9c1.5-29.7-9-57.9-29.5-79.4a106.4 106.4 0 0 0-77.9-33.4c-52 0-98 35-111.8 85.1l-85.8 310.8-.3 428h472.1c9.3 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37zM820.4 499l-21.9 19 14 25.5a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.1 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.1 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 22.4-13.2 42.6-33.6 51.8H345V506.8c18.6-67.2 46.4-168 83.5-302.5a44.28 44.28 0 0 1 42.2-32.3c7.5-.1 15 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.1 32.2-19.6 43z"]) })), t.LockTwoTone = l("lock", s, (function (e, t) { return c(i, [e, "M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304z"], [t, "M232 840h560V536H232v304zm280-226a48.01 48.01 0 0 1 28 87v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 0 1 28-87z"], [e, "M484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z"]) })), t.MailTwoTone = l("mail", s, (function (e, t) { return c(i, [t, "M477.5 536.3L135.9 270.7l-27.5-21.4 27.6 21.5V792h752V270.8L546.2 536.3a55.99 55.99 0 0 1-68.7 0z"], [t, "M876.3 198.8l39.3 50.5-27.6 21.5 27.7-21.5-39.3-50.5z"], [e, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-94.5 72.1L512 482 190.5 232.1h643zm54.5 38.7V792H136V270.8l-27.6-21.5 27.5 21.4 341.6 265.6a55.99 55.99 0 0 0 68.7 0L888 270.8l27.6-21.5-39.3-50.5h.1l39.3 50.5-27.7 21.5z"]) })), t.MedicineBoxTwoTone = l("medicine-box", s, (function (e, t) { return c(i, [t, "M244.3 328L184 513.4V840h656V513.4L779.7 328H244.3zM660 628c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V636H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V464c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8v48z"], [e, "M652 572H544V464c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V636h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"], [e, "M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM360 184h304v72H360v-72zm480 656H184V513.4L244.3 328h535.4L840 513.4V840z"]) })), t.MehTwoTone = l("meh", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm384 200c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v48zm16-152a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"], [e, "M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm376 144H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-24-144a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"]) })), t.MessageTwoTone = l("message", s, (function (e, t) { return c(i, [t, "M775.3 248.9a369.62 369.62 0 0 0-119-80A370.2 370.2 0 0 0 512.1 140h-1.7c-99.7.4-193 39.4-262.8 109.9-69.9 70.5-108 164.1-107.6 263.8.3 60.3 15.3 120.2 43.5 173.1l4.5 8.4V836h140.8l8.4 4.5c52.9 28.2 112.8 43.2 173.1 43.5h1.7c99 0 192-38.2 262.1-107.6 70.4-69.8 109.5-163.1 110.1-262.7.2-50.6-9.5-99.6-28.9-145.8a370.15 370.15 0 0 0-80-119zM312 560a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zm200 0a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zm200 0a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"], [e, "M664 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-400 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"], [e, "M925.2 338.4c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 0 0-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 0 0-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 0 0 112 714v152a46 46 0 0 0 46 46h152.1A449.4 449.4 0 0 0 510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 0 0 142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z"], [e, "M464 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"]) })), t.MinusCircleTwoTone = l("minus-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm192 396c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z"], [e, "M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"]) })), t.MinusSquareTwoTone = l("minus-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm136-352c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48z"], [e, "M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"]) })), t.MobileTwoTone = l("mobile", s, (function (e, t) { return c(i, [e, "M744 64H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H288V136h448v752z"], [t, "M288 888h448V136H288v752zm224-142c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"], [e, "M472 786a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"]) })), t.PauseCircleTwoTone = l("pause-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-80 524c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z"], [e, "M424 352h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zm224 0h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z"]) })), t.MoneyCollectTwoTone = l("money-collect", s, (function (e, t) { return c(i, [t, "M256 744.4l256 93.1 256-93.1V184H256v560.4zM359.7 313c1.2-.7 2.5-1 3.8-1h55.7a8 8 0 0 1 7.1 4.4L511 485.2h3.3L599 316.4c1.3-2.7 4.1-4.4 7.1-4.4h54.5c4.4 0 8 3.6 8.1 7.9 0 1.3-.4 2.6-1 3.8L564 515.3h57.6c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3v39h76.3c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3V704c0 4.4-3.6 8-8 8h-49.9c-4.4 0-8-3.6-8-8v-63.4h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h76v-39h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h57L356.5 323.8c-2.1-3.8-.7-8.7 3.2-10.8z"], [e, "M911.5 700.7a8 8 0 0 0-10.3-4.8L840 718.2V180c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V763c0 3.3 2.1 6.3 5.3 7.5L501 910.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zM768 744.4l-256 93.1-256-93.1V184h512v560.4z"], [e, "M460.4 515.4h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.6-1.2 1-2.5 1-3.8-.1-4.3-3.7-7.9-8.1-7.9h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6z"]) })), t.NotificationTwoTone = l("notification", s, (function (e, t) { return c(i, [t, "M229.6 678.1c-3.7 11.6-5.6 23.9-5.6 36.4 0-12.5 2-24.8 5.7-36.4h-.1zm76.3-260.2H184v188.2h121.9l12.9 5.2L840 820.7V203.3L318.8 412.7z"], [e, "M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z"]) })), t.PhoneTwoTone = l("phone", s, (function (e, t) { return c(i, [t, "M721.7 184.9L610.9 295.8l120.8 120.7-8 21.6A481.29 481.29 0 0 1 438 723.9l-21.6 8-.9-.9-119.8-120-110.8 110.9 104.5 104.5c10.8 10.7 26 15.7 40.8 13.2 117.9-19.5 235.4-82.9 330.9-178.4s158.9-213.1 178.4-331c2.5-14.8-2.5-30-13.3-40.8L721.7 184.9z"], [e, "M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7a405.46 405.46 0 0 1-86.4 127.3c-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3a68.2 68.2 0 0 0-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4zm-37.6 91.5c-19.5 117.9-82.9 235.5-178.4 331s-213 158.9-330.9 178.4c-14.8 2.5-30-2.5-40.8-13.2L184.9 721.9 295.7 611l119.8 120 .9.9 21.6-8a481.29 481.29 0 0 0 285.7-285.8l8-21.6-120.8-120.7 110.8-110.9 104.5 104.5c10.8 10.8 15.8 26 13.3 40.8z"]) })), t.PictureTwoTone = l("picture", s, (function (e, t) { return c(i, [e, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2z"], [t, "M424.6 765.8l-150.1-178L136 752.1V792h752v-30.4L658.1 489z"], [t, "M136 652.7l132.4-157c3.2-3.8 9-3.8 12.2 0l144 170.7L652 396.8c3.2-3.8 9-3.8 12.2 0L888 662.2V232H136v420.7zM304 280a88 88 0 1 1 0 176 88 88 0 0 1 0-176z"], [t, "M276 368a28 28 0 1 0 56 0 28 28 0 1 0-56 0z"], [e, "M304 456a88 88 0 1 0 0-176 88 88 0 0 0 0 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z"]) })), t.PlayCircleTwoTone = l("play-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm164.1 378.2L457.7 677.1a8.02 8.02 0 0 1-12.7-6.5V353a8 8 0 0 1 12.7-6.5l218.4 158.8a7.9 7.9 0 0 1 0 12.9z"], [e, "M676.1 505.3L457.7 346.5A8 8 0 0 0 445 353v317.6a8.02 8.02 0 0 0 12.7 6.5l218.4-158.9a7.9 7.9 0 0 0 0-12.9z"]) })), t.PlaySquareTwoTone = l("play-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm240-484.7c0-9.4 10.9-14.7 18.3-8.8l199.4 156.7a11.2 11.2 0 0 1 0 17.6L442.3 677.6c-7.4 5.8-18.3.6-18.3-8.8V355.3z"], [e, "M442.3 677.6l199.4-156.8a11.2 11.2 0 0 0 0-17.6L442.3 346.5c-7.4-5.9-18.3-.6-18.3 8.8v313.5c0 9.4 10.9 14.6 18.3 8.8z"]) })), t.PieChartTwoTone = l("pie-chart", s, (function (e, t) { return c(i, [t, "M316.2 920.5c-47.6-20.1-90.4-49-127.1-85.7a398.19 398.19 0 0 1-85.7-127.1A397.12 397.12 0 0 1 72 552.2v.2a398.57 398.57 0 0 0 117 282.5c36.7 36.7 79.4 65.5 127 85.6A396.64 396.64 0 0 0 471.6 952c27 0 53.6-2.7 79.7-7.9-25.9 5.2-52.4 7.8-79.3 7.8-54 .1-106.4-10.5-155.8-31.4zM560 472c-4.4 0-8-3.6-8-8V79.9c0-1.3.3-2.5.9-3.6-.9 1.3-1.5 2.9-1.5 4.6v383.7c0 4.4 3.6 8 8 8l383.6-1c1.6 0 3.1-.5 4.4-1.3-1 .5-2.2.7-3.4.7l-384 1z"], [t, "M619.8 147.6v256.6l256.4-.7c-13-62.5-44.3-120.5-90-166.1a332.24 332.24 0 0 0-166.4-89.8z"], [t, "M438 221.7c-75.9 7.6-146.2 40.9-200.8 95.5C174.5 379.9 140 463.3 140 552s34.5 172.1 97.2 234.8c62.3 62.3 145.1 96.8 233.2 97.2 88.2.4 172.7-34.1 235.3-96.2C761 733 794.6 662.3 802.3 586H438V221.7z"], [e, "M864 518H506V160c0-4.4-3.6-8-8-8h-26a398.46 398.46 0 0 0-282.8 117.1 398.19 398.19 0 0 0-85.7 127.1A397.61 397.61 0 0 0 72 552v.2c0 53.9 10.6 106.2 31.4 155.5 20.1 47.6 49 90.4 85.7 127.1 36.7 36.7 79.5 65.6 127.1 85.7A397.61 397.61 0 0 0 472 952c26.9 0 53.4-2.6 79.3-7.8 26.1-5.3 51.7-13.1 76.4-23.6 47.6-20.1 90.4-49 127.1-85.7 36.7-36.7 65.6-79.5 85.7-127.1A397.61 397.61 0 0 0 872 552v-26c0-4.4-3.6-8-8-8zM705.7 787.8A331.59 331.59 0 0 1 470.4 884c-88.1-.4-170.9-34.9-233.2-97.2C174.5 724.1 140 640.7 140 552s34.5-172.1 97.2-234.8c54.6-54.6 124.9-87.9 200.8-95.5V586h364.3c-7.7 76.3-41.3 147-96.6 201.8z"], [e, "M952 462.4l-2.6-28.2c-8.5-92.1-49.4-179-115.2-244.6A399.4 399.4 0 0 0 589 74.6L560.7 72c-3.4-.3-6.4 1.5-7.8 4.3a8.7 8.7 0 0 0-.9 3.6V464c0 4.4 3.6 8 8 8l384-1c1.2 0 2.3-.3 3.4-.7a8.1 8.1 0 0 0 4.6-7.9zm-332.2-58.2V147.6a332.24 332.24 0 0 1 166.4 89.8c45.7 45.6 77 103.6 90 166.1l-256.4.7z"]) })), t.PlusCircleTwoTone = l("plus-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm192 396c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z"], [e, "M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"]) })), t.PlusSquareTwoTone = l("plus-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm136-352c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48z"], [e, "M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"]) })), t.PoundCircleTwoTone = l("pound-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm146 582.1c0 4.4-3.6 8-8 8H376.2c-4.4 0-8-3.6-8-8v-38.5c0-3.7 2.5-6.9 6.1-7.8 44-10.9 72.8-49 72.8-94.2 0-14.7-2.5-29.4-5.9-44.2H374c-4.4 0-8-3.6-8-8v-30c0-4.4 3.6-8 8-8h53.7c-7.8-25.1-14.6-50.7-14.6-77.1 0-75.8 58.6-120.3 151.5-120.3 26.5 0 51.4 5.5 70.3 12.7 3.1 1.2 5.2 4.2 5.2 7.5v39.5a8 8 0 0 1-10.6 7.6c-17.9-6.4-39-10.5-60.4-10.5-53.3 0-87.3 26.6-87.3 70.2 0 24.7 6.2 47.9 13.4 70.5h112c4.4 0 8 3.6 8 8v30c0 4.4-3.6 8-8 8h-98.6c3.1 13.2 5.3 26.9 5.3 41 0 40.7-16.5 73.9-43.9 91.1v4.7h180c4.4 0 8 3.6 8 8v39.8z"], [e, "M650 674.3H470v-4.7c27.4-17.2 43.9-50.4 43.9-91.1 0-14.1-2.2-27.8-5.3-41h98.6c4.4 0 8-3.6 8-8v-30c0-4.4-3.6-8-8-8h-112c-7.2-22.6-13.4-45.8-13.4-70.5 0-43.6 34-70.2 87.3-70.2 21.4 0 42.5 4.1 60.4 10.5a8 8 0 0 0 10.6-7.6v-39.5c0-3.3-2.1-6.3-5.2-7.5-18.9-7.2-43.8-12.7-70.3-12.7-92.9 0-151.5 44.5-151.5 120.3 0 26.4 6.8 52 14.6 77.1H374c-4.4 0-8 3.6-8 8v30c0 4.4 3.6 8 8 8h67.2c3.4 14.8 5.9 29.5 5.9 44.2 0 45.2-28.8 83.3-72.8 94.2-3.6.9-6.1 4.1-6.1 7.8v38.5c0 4.4 3.6 8 8 8H650c4.4 0 8-3.6 8-8v-39.8c0-4.4-3.6-8-8-8z"]) })), t.PrinterTwoTone = l("printer", s, (function (e, t) { return c(i, [t, "M360 180h304v152H360zm492 220H172c-6.6 0-12 5.4-12 12v292h132V500h440v204h132V412c0-6.6-5.4-12-12-12zm-24 84c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v40z"], [e, "M852 332H732V120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM360 180h304v152H360V180zm304 664H360V568h304v276zm200-140H732V500H292v204H160V412c0-6.6 5.4-12 12-12h680c6.6 0 12 5.4 12 12v292z"], [e, "M820 436h-40c-4.4 0-8 3.6-8 8v40c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-40c0-4.4-3.6-8-8-8z"]) })), t.ProfileTwoTone = l("profile", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm300-496c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zm0 144c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zm0 144c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zM380 328c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm0 144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm0 144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"], [e, "M340 656a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm152 320h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"]) })), t.ProjectTwoTone = l("project", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm472-560c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v256c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280zm-192 0c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280zm-192 0c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v464c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280z"], [e, "M280 752h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8zm192-280h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm192 72h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v256c0 4.4 3.6 8 8 8z"]) })), t.PushpinTwoTone = l("pushpin", s, (function (e, t) { return c(i, [t, "M474.8 357.7l-24.5 24.5-34.4-3.8c-9.6-1.1-19.3-1.6-28.9-1.6-29 0-57.5 4.7-84.7 14.1-14 4.8-27.4 10.8-40.3 17.9l353.1 353.3a259.92 259.92 0 0 0 30.4-153.9l-3.8-34.4 24.5-24.5L800 415.5 608.5 224 474.8 357.7z"], [e, "M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3a33.23 33.23 0 0 0-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8zM666.2 549.3l-24.5 24.5 3.8 34.4a259.92 259.92 0 0 1-30.4 153.9L262 408.8c12.9-7.1 26.3-13.1 40.3-17.9 27.2-9.4 55.7-14.1 84.7-14.1 9.6 0 19.3.5 28.9 1.6l34.4 3.8 24.5-24.5L608.5 224 800 415.5 666.2 549.3z"]) })), t.PropertySafetyTwoTone = l("property-safety", s, (function (e, t) { return c(i, [e, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z"], [t, "M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM593.9 318h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V658c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8H418c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7H418c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3L585 323.5a10 10 0 0 1 8.9-5.5z"], [e, "M438.9 323.5a9.88 9.88 0 0 0-8.9-5.5h-46c-1.7 0-3.3.4-4.8 1.2-4.9 2.7-6.6 8.8-4 13.6l88 161.1H418c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1v29.7H418c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1V658c0 5.5 4.5 10 10 10h41.3c5.5 0 10-4.5 10-10v-51.8h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-63.4v-29.7h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-45.7l87.7-161.1c.8-1.5 1.2-3.1 1.1-4.8 0-5.5-4.5-10-10-10h-45a10 10 0 0 0-8.9 5.5l-73.2 144.3-72.9-144.3z"]) })), t.QuestionCircleTwoTone = l("question-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm0 632c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm62.9-219.5a48.3 48.3 0 0 0-30.9 44.8V620c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-21.5c0-23.1 6.7-45.9 19.9-64.9 12.9-18.6 30.9-32.8 52.1-40.9 34-13.1 56-41.6 56-72.7 0-44.1-43.1-80-96-80s-96 35.9-96 80v7.6c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V420c0-39.3 17.2-76 48.4-103.3C430.4 290.4 470 276 512 276s81.6 14.5 111.6 40.7C654.8 344 672 380.7 672 420c0 57.8-38.1 109.8-97.1 132.5z"], [e, "M472 732a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm151.6-415.3C593.6 290.5 554 276 512 276s-81.6 14.4-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.2 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0 1 30.9-44.8c59-22.7 97.1-74.7 97.1-132.5 0-39.3-17.2-76-48.4-103.3z"]) })), t.ReconciliationTwoTone = l("reconciliation", s, (function (e, t) { return c(i, [t, "M740 344H404V240H304v160h176c17.7 0 32 14.3 32 32v360h328V240H740v104zM584 448c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56zm92 301c-50.8 0-92-41.2-92-92s41.2-92 92-92 92 41.2 92 92-41.2 92-92 92zm92-341v96c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8z"], [t, "M642 657a34 34 0 1 0 68 0 34 34 0 1 0-68 0z"], [e, "M592 512h48c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm112-104v96c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-96c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z"], [e, "M880 168H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zm-412 64h72v-56h64v56h72v48H468v-48zm-20 616H176V616h272v232zm0-296H176v-88h272v88zm392 240H512V432c0-17.7-14.3-32-32-32H304V240h100v104h336V240h100v552z"], [e, "M676 565c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34z"]) })), t.RedEnvelopeTwoTone = l("red-envelope", s, (function (e, t) { return c(i, [e, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V193.1l260.3 204.1c11.6 9.1 27.9 9.1 39.5 0L792 193.1V888zm0-751.3h-31.7L512 331.3 263.7 136.7H232v-.7h560v.7z"], [t, "M492.3 397.2L232 193.1V888h560V193.1L531.8 397.2a31.99 31.99 0 0 1-39.5 0zm99.4 60.9h47.8a8.45 8.45 0 0 1 7.4 12.4l-87.2 161h45.9c4.6 0 8.4 3.8 8.4 8.4V665c0 4.6-3.8 8.4-8.4 8.4h-63.3V702h63.3c4.6 0 8.4 3.8 8.4 8.4v25c.2 4.7-3.5 8.5-8.2 8.5h-63.3v49.9c0 4.6-3.8 8.4-8.4 8.4h-43.7c-4.6 0-8.4-3.8-8.4-8.4v-49.9h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h63v-28.6h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h45.4L377 470.4a8.4 8.4 0 0 1 3.4-11.4c1.3-.6 2.6-1 3.9-1h48.8c3.2 0 6.1 1.8 7.5 4.6l71.7 142 71.9-141.9a8.6 8.6 0 0 1 7.5-4.6z"], [t, "M232 136.7h31.7L512 331.3l248.3-194.6H792v-.7H232z"], [e, "M440.6 462.6a8.38 8.38 0 0 0-7.5-4.6h-48.8c-1.3 0-2.6.4-3.9 1a8.4 8.4 0 0 0-3.4 11.4l87.4 161.1H419c-4.6 0-8.4 3.8-8.4 8.4V665c0 4.6 3.8 8.4 8.4 8.4h63V702h-63c-4.6 0-8.4 3.8-8.4 8.4v25.1c0 4.6 3.8 8.4 8.4 8.4h63v49.9c0 4.6 3.8 8.4 8.4 8.4h43.7c4.6 0 8.4-3.8 8.4-8.4v-49.9h63.3c4.7 0 8.4-3.8 8.2-8.5v-25c0-4.6-3.8-8.4-8.4-8.4h-63.3v-28.6h63.3c4.6 0 8.4-3.8 8.4-8.4v-25.1c0-4.6-3.8-8.4-8.4-8.4h-45.9l87.2-161a8.45 8.45 0 0 0-7.4-12.4h-47.8c-3.1 0-6 1.8-7.5 4.6l-71.9 141.9-71.7-142z"]) })), t.RestTwoTone = l("rest", s, (function (e, t) { return c(i, [t, "M326.4 844h363.2l44.3-520H282l44.4 520zM508 416c79.5 0 144 64.5 144 144s-64.5 144-144 144-144-64.5-144-144 64.5-144 144-144z"], [e, "M508 704c79.5 0 144-64.5 144-144s-64.5-144-144-144-144 64.5-144 144 64.5 144 144 144zm0-224c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z"], [e, "M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zm-518.6-76h397.2l22.4 76H291l22.4-76zm376.2 664H326.4L282 324h451.9l-44.3 520z"]) })), t.RightCircleTwoTone = l("right-circle", s, (function (e, t) { return c(i, [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm154.7 378.4l-246 178c-5.3 3.8-12.7 0-12.7-6.5V643c0-10.2 4.9-19.9 13.2-25.9L566.6 512 421.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.7 0 12.9z"], [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [e, "M666.7 505.5l-246-178c-5.3-3.8-12.7 0-12.7 6.5v46.9c0 10.3 4.9 19.9 13.2 25.9L566.6 512 421.2 617.1c-8.3 6-13.2 15.7-13.2 25.9v46.9c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.7 0-12.9z"]) })), t.RocketTwoTone = l("rocket", s, (function (e, t) { return c(i, [t, "M261.7 621.4c-9.4 14.6-17 30.3-22.5 46.6H324V558.7c-24.8 16.2-46 37.5-62.3 62.7zM700 558.7V668h84.8c-5.5-16.3-13.1-32-22.5-46.6a211.6 211.6 0 0 0-62.3-62.7zm-64-239.9l-124-147-124 147V668h248V318.8zM512 448a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"], [e, "M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8L864 736zm-540-68h-84.8c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668zm64-184.9V318.8l124-147 124 147V668H388V483.1zm240.1 301.1c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5s-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM700 668V558.7a211.6 211.6 0 0 1 62.3 62.7c9.4 14.6 17 30.3 22.5 46.6H700z"], [e, "M464 400a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"]) })), t.RightSquareTwoTone = l("right-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm216-196.9c0-10.2 4.9-19.9 13.2-25.9L558.6 512 413.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.7 0 12.9l-246 178c-5.3 3.9-12.7.1-12.7-6.4v-46.9z"], [e, "M412.7 696.4l246-178c4.4-3.2 4.4-9.7 0-12.9l-246-178c-5.3-3.8-12.7 0-12.7 6.5v46.9c0 10.3 4.9 19.9 13.2 25.9L558.6 512 413.2 617.2c-8.3 6-13.2 15.7-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.4z"]) })), t.SafetyCertificateTwoTone = l("safety-certificate", s, (function (e, t) { return c(i, [e, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z"], [t, "M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM632.8 328H688c6.5 0 10.3 7.4 6.5 12.7L481.9 633.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.2 0 10 2.5 13 6.6l64.7 89.1 150.9-207.8c3-4.1 7.9-6.6 13-6.6z"], [e, "M404.2 453.3c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z"]) })), t.SaveTwoTone = l("save", s, (function (e, t) { return c(i, [t, "M704 320c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V184H184v656h656V341.8l-136-136V320zM512 730c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144z"], [e, "M512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z"], [e, "M893.3 293.3L730.7 130.7c-.7-.7-1.4-1.3-2.1-2-.1-.1-.3-.2-.4-.3-.7-.7-1.5-1.3-2.2-1.9a64 64 0 0 0-22-11.7V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840z"]) })), t.ScheduleTwoTone = l("schedule", s, (function (e, t) { return c(i, [t, "M768 352c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H548v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H328v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H136v496h752V296H768v56zM424 688c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-136c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm374.4-91.2l-165 228.7a15.9 15.9 0 0 1-25.8 0L493.5 531.3c-3.8-5.3 0-12.7 6.5-12.7h54.9c5.1 0 9.9 2.4 12.9 6.6l52.8 73.1 103.6-143.7c3-4.1 7.8-6.6 12.8-6.5h54.9c6.5 0 10.3 7.4 6.5 12.7z"], [e, "M724.2 454.6L620.6 598.3l-52.8-73.1c-3-4.2-7.8-6.6-12.9-6.6H500c-6.5 0-10.3 7.4-6.5 12.7l114.1 158.2a15.9 15.9 0 0 0 25.8 0l165-228.7c3.8-5.3 0-12.7-6.5-12.7H737c-5-.1-9.8 2.4-12.8 6.5zM416 496H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"], [e, "M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z"], [e, "M416 632H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"]) })), t.SecurityScanTwoTone = l("security-scan", s, (function (e, t) { return c(i, [e, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z"], [t, "M460.7 451.1a80.1 80.1 0 1 0 160.2 0 80.1 80.1 0 1 0-160.2 0z"], [t, "M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zm428.7 122.5c56.3 56.3 56.3 147.5 0 203.8-48.5 48.5-123 55.2-178.6 20.1l-77.5 77.5a8.03 8.03 0 0 1-11.3 0l-34-34a8.03 8.03 0 0 1 0-11.3l77.5-77.5c-35.1-55.7-28.4-130.1 20.1-178.6 56.3-56.3 147.5-56.3 203.8 0z"], [e, "M418.8 527.8l-77.5 77.5a8.03 8.03 0 0 0 0 11.3l34 34c3.1 3.1 8.2 3.1 11.3 0l77.5-77.5c55.6 35.1 130.1 28.4 178.6-20.1 56.3-56.3 56.3-147.5 0-203.8-56.3-56.3-147.5-56.3-203.8 0-48.5 48.5-55.2 122.9-20.1 178.6zm65.4-133.3a80.1 80.1 0 0 1 113.3 0 80.1 80.1 0 0 1 0 113.3c-31.3 31.3-82 31.3-113.3 0s-31.3-82 0-113.3z"]) })), t.SettingTwoTone = l("setting", s, (function (e, t) { return c(i, [t, "M859.3 569.7l.2.1c3.1-18.9 4.6-38.2 4.6-57.3 0-17.1-1.3-34.3-3.7-51.1 2.4 16.7 3.6 33.6 3.6 50.5 0 19.4-1.6 38.8-4.7 57.8zM99 398.1c-.5-.4-.9-.8-1.4-1.3.7.7 1.4 1.4 2.2 2.1l65.5 55.9v-.1L99 398.1zm536.6-216h.1l-15.5-83.8c-.2-1-.4-1.9-.7-2.8.1.5.3 1.1.4 1.6l15.7 85zm54 546.5l31.4-25.8 92.8 32.9c17-22.9 31.3-47.5 42.6-73.6l-74.7-63.9 6.6-40.1c2.5-15.1 3.8-30.6 3.8-46.1s-1.3-31-3.8-46.1l-6.5-39.9 74.7-63.9c-11.4-26-25.6-50.7-42.6-73.6l-92.8 32.9-31.4-25.8c-23.9-19.6-50.6-35-79.3-45.8l-38.1-14.3-17.9-97a377.5 377.5 0 0 0-85 0l-17.9 97.2-37.9 14.3c-28.5 10.8-55 26.2-78.7 45.7l-31.4 25.9-93.4-33.2c-17 22.9-31.3 47.5-42.6 73.6l75.5 64.5-6.5 40c-2.5 14.9-3.7 30.2-3.7 45.5 0 15.2 1.3 30.6 3.7 45.5l6.5 40-75.5 64.5c11.4 26 25.6 50.7 42.6 73.6l93.4-33.2 31.4 25.9c23.7 19.5 50.2 34.9 78.7 45.7l37.8 14.5 17.9 97.2c28.2 3.2 56.9 3.2 85 0l17.9-97 38.1-14.3c28.8-10.8 55.4-26.2 79.3-45.8zm-177.1-50.3c-30.5 0-59.2-7.8-84.3-21.5C373.3 627 336 568.9 336 502c0-97.2 78.8-176 176-176 66.9 0 125 37.3 154.8 92.2 13.7 25 21.5 53.7 21.5 84.3 0 97.1-78.7 175.8-175.8 175.8zM207.2 812.8c-5.5 1.9-11.2 2.3-16.6 1.2 5.7 1.2 11.7 1 17.5-1l81.4-29c-.1-.1-.3-.2-.4-.3l-81.9 29.1zm717.6-414.7l-65.5 56c0 .2.1.5.1.7l65.4-55.9c7.1-6.1 11.1-14.9 11.2-24-.3 8.8-4.3 17.3-11.2 23.2z"], [t, "M935.8 646.6c.5 4.7 0 9.5-1.7 14.1l-.9 2.6a446.02 446.02 0 0 1-79.7 137.9l-1.8 2.1a32 32 0 0 1-35.1 9.5l-81.3-28.9a350 350 0 0 1-99.7 57.6l-15.7 85a32.05 32.05 0 0 1-25.8 25.7l-2.7.5a445.2 445.2 0 0 1-79.2 7.1h.3c26.7 0 53.4-2.4 79.4-7.1l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-84.9c36.2-13.6 69.6-32.9 99.6-57.5l81.2 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.5-87.4 79.6-137.7l.9-2.6c1.6-4.7 2.1-9.7 1.5-14.5z"], [e, "M688 502c0-30.3-7.7-58.9-21.2-83.8C637 363.3 578.9 326 512 326c-97.2 0-176 78.8-176 176 0 66.9 37.3 125 92.2 154.8 24.9 13.5 53.4 21.2 83.8 21.2 97.2 0 176-78.8 176-176zm-288 0c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 0 1 624 502c0 29.9-11.7 58-32.8 79.2A111.6 111.6 0 0 1 512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 502z"], [e, "M594.1 952.2a32.05 32.05 0 0 0 25.8-25.7l15.7-85a350 350 0 0 0 99.7-57.6l81.3 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c1.7-4.6 2.2-9.4 1.7-14.1-.9-7.9-4.7-15.4-11-20.9l-65.3-55.9-.2-.1c3.1-19 4.7-38.4 4.7-57.8 0-16.9-1.2-33.9-3.6-50.5-.3-2.2-.7-4.4-1-6.6 0-.2-.1-.5-.1-.7l65.5-56c6.9-5.9 10.9-14.4 11.2-23.2.1-4-.5-8.1-1.9-12l-.9-2.6a443.74 443.74 0 0 0-79.7-137.9l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.3 28.9c-30-24.6-63.4-44-99.6-57.6h-.1l-15.7-85c-.1-.5-.2-1.1-.4-1.6a32.08 32.08 0 0 0-25.4-24.1l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.4a351.86 351.86 0 0 0-99 57.4l-81.9-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a446.02 446.02 0 0 0-79.7 137.9l-.9 2.6a32.09 32.09 0 0 0 7.9 33.9c.5.4.9.9 1.4 1.3l66.3 56.6v.1c-3.1 18.8-4.6 37.9-4.6 57 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1c4.9 5.7 11.4 9.4 18.5 10.7 5.4 1 11.1.7 16.6-1.2l81.9-29.1c.1.1.3.2.4.3 29.7 24.3 62.8 43.6 98.6 57.1l15.8 85.4a32.05 32.05 0 0 0 25.8 25.7l2.7.5c26.1 4.7 52.8 7.1 79.5 7.1h.3c26.6 0 53.3-2.4 79.2-7.1l2.7-.5zm-39.8-66.5a377.5 377.5 0 0 1-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 0 1-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97z"]) })), t.ShopTwoTone = l("shop", s, (function (e, t) { return c(i, [t, "M839.5 344h-655c-.3 0-.5.2-.5.5v91.2c0 59.8 49 108.3 109.3 108.3 40.7 0 76.2-22 95.1-54.7 2.9-5.1 8.4-8.3 14.3-8.3s11.3 3.2 14.3 8.3c18.8 32.7 54.3 54.7 95 54.7 40.8 0 76.4-22.1 95.1-54.9 2.9-5 8.2-8.1 13.9-8.1h.6c5.8 0 11 3.1 13.9 8.1 18.8 32.8 54.4 54.9 95.2 54.9C791 544 840 495.5 840 435.7v-91.2c0-.3-.2-.5-.5-.5z"], [e, "M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h676c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zM214 184h596v88H214v-88zm362 656.1H448V736h128v104.1zm234.4 0H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c3-1.3 6-2.6 9-4v242.2zM840 435.7c0 59.8-49 108.3-109.3 108.3-40.8 0-76.4-22.1-95.2-54.9-2.9-5-8.1-8.1-13.9-8.1h-.6c-5.7 0-11 3.1-13.9 8.1A109.24 109.24 0 0 1 512 544c-40.7 0-76.2-22-95-54.7-3-5.1-8.4-8.3-14.3-8.3s-11.4 3.2-14.3 8.3a109.63 109.63 0 0 1-95.1 54.7C233 544 184 495.5 184 435.7v-91.2c0-.3.2-.5.5-.5h655c.3 0 .5.2.5.5v91.2z"]) })), t.ShoppingTwoTone = l("shopping", s, (function (e, t) { return c(i, [t, "M696 472c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-88H400v88c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-88h-96v456h560V384h-96v88z"], [e, "M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-432-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16H400v-16zm392 544H232V384h96v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h224v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h96v456z"]) })), t.SkinTwoTone = l("skin", s, (function (e, t) { return c(i, [t, "M512 318c-79.2 0-148.5-48.8-176.7-120H182v196h119v432h422V394h119V198H688.7c-28.2 71.2-97.5 120-176.7 120z"], [e, "M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44zm-28 268H723v432H301V394H182V198h153.3c28.2 71.2 97.5 120 176.7 120s148.5-48.8 176.7-120H842v196z"]) })), t.SlidersTwoTone = l("sliders", s, (function (e, t) { return c(i, [t, "M180 292h80v440h-80zm369 180h-74a3 3 0 0 0-3 3v74a3 3 0 0 0 3 3h74a3 3 0 0 0 3-3v-74a3 3 0 0 0-3-3zm215-108h80v296h-80z"], [e, "M904 296h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-60 364h-80V364h80v296zM612 404h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8zm-60 145a3 3 0 0 1-3 3h-74a3 3 0 0 1-3-3v-74a3 3 0 0 1 3-3h74a3 3 0 0 1 3 3v74zM320 224h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-60 508h-80V292h80v440z"]) })), t.SmileTwoTone = l("smile", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm224 272c-85.5 0-155.6-67.3-160-151.6a8 8 0 0 1 8-8.4h48.1c4.2 0 7.8 3.2 8.1 7.4C420 589.9 461.5 629 512 629s92.1-39.1 95.8-88.6c.3-4.2 3.9-7.4 8.1-7.4H664a8 8 0 0 1 8 8.4C667.6 625.7 597.5 693 512 693zm176-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"], [e, "M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm376 112h-48.1c-4.2 0-7.8 3.2-8.1 7.4-3.7 49.5-45.3 88.6-95.8 88.6s-92-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4zm-24-112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"]) })), t.SnippetsTwoTone = l("snippets", s, (function (e, t) { return c(i, [t, "M450 510V336H232v552h432V550H490c-22.1 0-40-17.9-40-40z"], [e, "M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 888H232V336h218v174c0 22.1 17.9 40 40 40h174v338zm0-402H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z"]) })), t.SoundTwoTone = l("sound", s, (function (e, t) { return c(i, [t, "M275.4 424H146v176h129.4l18 11.7L586 803V221L293.3 412.3z"], [e, "M892.1 737.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM934 476H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344zM625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1zM586 803L293.4 611.7l-18-11.7H146V424h129.4l17.9-11.7L586 221v582z"]) })), t.StarTwoTone = l("star", s, (function (e, t) { return c(i, [t, "M512.5 190.4l-94.4 191.3-211.2 30.7 152.8 149-36.1 210.3 188.9-99.3 188.9 99.2-36.1-210.3 152.8-148.9-211.2-30.7z"], [e, "M908.6 352.8l-253.9-36.9L541.2 85.8c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L370.3 315.9l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1L239 839.4a31.95 31.95 0 0 0 46.4 33.7l227.1-119.4 227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM665.3 561.3l36.1 210.3-188.9-99.2-188.9 99.3 36.1-210.3-152.8-149 211.2-30.7 94.4-191.3 94.4 191.3 211.2 30.7-152.8 148.9z"]) })), t.StopTwoTone = l("stop", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm288.5 682.8L277.7 224C258 240 240 258 224 277.7l522.8 522.8C682.8 852.7 601 884 512 884c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372c0 89-31.3 170.8-83.5 234.8z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372c89 0 170.8-31.3 234.8-83.5L224 277.7c16-19.7 34-37.7 53.7-53.7l522.8 522.8C852.7 682.8 884 601 884 512c0-205.4-166.6-372-372-372z"]) })), t.SwitcherTwoTone = l("switcher", s, (function (e, t) { return c(i, [t, "M184 840h528V312H184v528zm116-290h296v64H300v-64z"], [e, "M880 112H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32z"], [e, "M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zm-40 600H184V312h528v528z"], [e, "M300 550h296v64H300z"]) })), t.TabletTwoTone = l("tablet", s, (function (e, t) { return c(i, [e, "M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H232V136h560v752z"], [t, "M232 888h560V136H232v752zm280-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"], [e, "M472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"]) })), t.TagTwoTone = l("tag", s, (function (e, t) { return c(i, [t, "M589 164.6L189.3 564.3l270.4 270.4L859.4 435 836 188l-247-23.4zM680 432c-48.5 0-88-39.5-88-88s39.5-88 88-88 88 39.5 88 88-39.5 88-88 88z"], [e, "M680 256c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm0 120c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"], [e, "M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8a9.9 9.9 0 0 0 7.1 2.9c2.7 0 5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM459.7 834.7L189.3 564.3 589 164.6 836 188l23.4 247-399.7 399.7z"]) })), t.TagsTwoTone = l("tags", s, (function (e, t) { return c(i, [t, "M477.5 694l311.9-311.8-19-224.6-224.6-19-311.9 311.9L477.5 694zm116-415.5a47.81 47.81 0 0 1 33.9-33.9c16.6-4.4 34.2.3 46.4 12.4a47.93 47.93 0 0 1 12.4 46.4 47.81 47.81 0 0 1-33.9 33.9c-16.6 4.4-34.2-.3-46.4-12.4a48.3 48.3 0 0 1-12.4-46.4z"], [t, "M476.6 792.6c-1.7-.2-3.4-1-4.7-2.3L137.7 456.1a8.03 8.03 0 0 1 0-11.3L515.9 66.6c1.2-1.3 2.9-2.1 4.7-2.3h-.4c-2.3-.2-4.7.6-6.3 2.3L135.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c1.8 1.9 4.3 2.6 6.7 2.3z"], [e, "M889.7 539.8l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3zM652.3 337.3a47.81 47.81 0 0 0 33.9-33.9c4.4-16.6-.3-34.2-12.4-46.4a47.93 47.93 0 0 0-46.4-12.4 47.81 47.81 0 0 0-33.9 33.9c-4.4 16.6.3 34.2 12.4 46.4a48.3 48.3 0 0 0 46.4 12.4z"], [e, "M137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c1.3 1.3 2.9 2.1 4.7 2.3 2.4.3 4.8-.5 6.6-2.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3h-1.6c-1.8.2-3.4 1-4.7 2.3L137.7 444.8zm408.1-306.2l224.6 19 19 224.6L477.5 694 233.9 450.5l311.9-311.9z"]) })), t.ToolTwoTone = l("tool", s, (function (e, t) { return c(i, [t, "M706.8 488.7a32.05 32.05 0 0 1-45.3 0L537 364.2a32.05 32.05 0 0 1 0-45.3l132.9-132.8a184.2 184.2 0 0 0-144 53.5c-58.1 58.1-69.3 145.3-33.6 214.6L439.5 507c-.1 0-.1-.1-.1-.1L209.3 737l79.2 79.2 274-274.1.1.1 8.8-8.8c69.3 35.7 156.5 24.5 214.6-33.6 39.2-39.1 57.3-92.1 53.6-143.9L706.8 488.7z"], [e, "M876.6 239.5c-.5-.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c.8-.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-44.7-311.3 39.7-67 67-89.2 162-66.5 247.4l-293 293c-3 3-2.8 7.9.3 11l169.7 169.7c3.1 3.1 8.1 3.3 11 .3l292.9-292.9c85.5 22.8 180.5.7 247.6-66.4 84.4-84.5 97.7-213.1 39.7-311.3zM786 499.8c-58.1 58.1-145.3 69.3-214.6 33.6l-8.8 8.8-.1-.1-274 274.1-79.2-79.2 230.1-230.1s0 .1.1.1l52.8-52.8c-35.7-69.3-24.5-156.5 33.6-214.6a184.2 184.2 0 0 1 144-53.5L537 318.9a32.05 32.05 0 0 0 0 45.3l124.5 124.5a32.05 32.05 0 0 0 45.3 0l132.8-132.8c3.7 51.8-14.4 104.8-53.6 143.9z"]) })), t.TrademarkCircleTwoTone = l("trademark-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm170.7 584.2c-1.1.5-2.3.8-3.5.8h-62c-3.1 0-5.9-1.8-7.2-4.6l-74.6-159.2h-88.7V717c0 4.4-3.6 8-8 8H384c-4.4 0-8-3.6-8-8V307c0-4.4 3.6-8 8-8h155.6c98.8 0 144.2 59.9 144.2 131.1 0 70.2-43.6 106.4-78.4 119.2l80.8 164.2c2.1 3.9.4 8.7-3.5 10.7z"], [t, "M529.9 357h-83.4v148H528c53 0 82.8-25.6 82.8-72.4 0-50.3-32.9-75.6-80.9-75.6z"], [e, "M605.4 549.3c34.8-12.8 78.4-49 78.4-119.2 0-71.2-45.4-131.1-144.2-131.1H384c-4.4 0-8 3.6-8 8v410c0 4.4 3.6 8 8 8h54.7c4.4 0 8-3.6 8-8V561.2h88.7L610 720.4c1.3 2.8 4.1 4.6 7.2 4.6h62c1.2 0 2.4-.3 3.5-.8 3.9-2 5.6-6.8 3.5-10.7l-80.8-164.2zM528 505h-81.5V357h83.4c48 0 80.9 25.3 80.9 75.6 0 46.8-29.8 72.4-82.8 72.4z"]) })), t.UnlockTwoTone = l("unlock", s, (function (e, t) { return c(i, [t, "M232 840h560V536H232v304zm280-226a48.01 48.01 0 0 1 28 87v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 0 1 28-87z"], [e, "M484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z"], [e, "M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zm-40 376H232V536h560v304z"]) })), t.TrophyTwoTone = l("trophy", s, (function (e, t) { return c(i, [t, "M320 480c0 49.1 19.1 95.3 53.9 130.1 34.7 34.8 81 53.9 130.1 53.9h16c49.1 0 95.3-19.1 130.1-53.9 34.8-34.7 53.9-81 53.9-130.1V184H320v296zM184 352c0 41 26.9 75.8 64 87.6-37.1-11.9-64-46.7-64-87.6zm364 382.5C665 721.8 758.4 630.2 773.8 514 758.3 630.2 665 721.7 548 734.5zM250.2 514C265.6 630.2 359 721.8 476 734.5 359 721.7 265.7 630.2 250.2 514z"], [e, "M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.7 630.2 359 721.7 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.7 758.3 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM248 439.6a91.99 91.99 0 0 1-64-87.6V232h64v207.6zM704 480c0 49.1-19.1 95.4-53.9 130.1-34.8 34.8-81 53.9-130.1 53.9h-16c-49.1 0-95.4-19.1-130.1-53.9-34.8-34.8-53.9-81-53.9-130.1V184h384v296zm136-128c0 41-26.9 75.8-64 87.6V232h64v120z"]) })), t.UpCircleTwoTone = l("up-circle", s, (function (e, t) { return c(i, [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm178 479h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 460.4 406.8 605.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z"], [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [e, "M518.4 360.3a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7h46.9c10.3 0 19.9-4.9 25.9-13.2L512 460.4l105.2 145.4c6 8.3 15.7 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.4-12.7l-178-246z"]) })), t.ThunderboltTwoTone = l("thunderbolt", s, (function (e, t) { return c(i, [t, "M695.4 164.1H470.8L281.2 491.5h157.4l-60.3 241 319.8-305.1h-211z"], [e, "M848.1 359.3H627.8L825.9 109c4.1-5.3.4-13-6.3-13H436.1c-2.8 0-5.5 1.5-6.9 4L170.1 547.5c-3.1 5.3.7 12 6.9 12h174.4L262 917.1c-1.9 7.8 7.5 13.3 13.3 7.7L853.6 373c5.2-4.9 1.7-13.7-5.5-13.7zM378.3 732.5l60.3-241H281.2l189.6-327.4h224.6L487.1 427.4h211L378.3 732.5z"]) })), t.UpSquareTwoTone = l("up-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm143.5-228.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 465.4 406.8 610.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7z"], [e, "M334 624h46.9c10.3 0 19.9-4.9 25.9-13.2L512 465.4l105.2 145.4c6 8.3 15.7 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.4-12.7l-178-246a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7z"]) })), t.UsbTwoTone = l("usb", s, (function (e, t) { return c(i, [t, "M759.9 504H264.1c-26.5 0-48.1 19.7-48.1 44v292h592V548c0-24.3-21.6-44-48.1-44z"], [e, "M456 248h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm160 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"], [e, "M760 432V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zM336 184h352v248H336V184zm472 656H216V548c0-24.3 21.6-44 48.1-44h495.8c26.5 0 48.1 19.7 48.1 44v292z"]) })), t.VideoCameraTwoTone = l("video-camera", s, (function (e, t) { return c(i, [t, "M136 792h576V232H136v560zm64-488c0-4.4 3.6-8 8-8h112c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H208c-4.4 0-8-3.6-8-8v-48z"], [e, "M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM712 792H136V232h576v560zm176-167l-104-59.8V458.9L888 399v226z"], [e, "M208 360h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"]) })), t.WalletTwoTone = l("wallet", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 464H528V448h312v128zm0-192H496c-17.7 0-32 14.3-32 32v192c0 17.7 14.3 32 32 32h344v200H184V184h656v200z"], [t, "M528 576h312V448H528v128zm92-104c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"], [e, "M580 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"], [t, "M184 840h656V640H496c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32h344V184H184v656z"]) })), t.WarningTwoTone = l("warning", s, (function (e, t) { return c(i, [e, "M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-783.5-27.9L512 239.9l339.8 588.2H172.2z"], [t, "M172.2 828.1h679.6L512 239.9 172.2 828.1zM560 720a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm-16-304v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8z"], [e, "M464 720a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z"]) })), t.CiTwoTone = l("ci", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-63.5 522.8c49.3 0 82.8-29.4 87-72.4.4-4.1 3.8-7.3 8-7.3h52.7c2.4 0 4.4 2 4.4 4.4 0 77.4-64.3 132.5-152.3 132.5C345.4 720 286 651.4 286 537.4v-49C286 373.5 345.4 304 448.3 304c88.3 0 152.3 56.9 152.3 138.1 0 2.4-2 4.4-4.4 4.4h-52.6c-4.2 0-7.6-3.2-8-7.4-3.9-46.1-37.5-77.6-87-77.6-61.1 0-95.6 45.4-95.7 126.8v49.3c0 80.3 34.5 125.2 95.6 125.2zM738 704.1c0 4.4-3.6 8-8 8h-50.4c-4.4 0-8-3.6-8-8V319.9c0-4.4 3.6-8 8-8H730c4.4 0 8 3.6 8 8v384.2z"], [e, "M730 311.9h-50.4c-4.4 0-8 3.6-8 8v384.2c0 4.4 3.6 8 8 8H730c4.4 0 8-3.6 8-8V319.9c0-4.4-3.6-8-8-8zm-281.4 49.6c49.5 0 83.1 31.5 87 77.6.4 4.2 3.8 7.4 8 7.4h52.6c2.4 0 4.4-2 4.4-4.4 0-81.2-64-138.1-152.3-138.1C345.4 304 286 373.5 286 488.4v49c0 114 59.4 182.6 162.3 182.6 88 0 152.3-55.1 152.3-132.5 0-2.4-2-4.4-4.4-4.4h-52.7c-4.2 0-7.6 3.2-8 7.3-4.2 43-37.7 72.4-87 72.4-61.1 0-95.6-44.9-95.6-125.2v-49.3c.1-81.4 34.6-126.8 95.7-126.8z"]) })), t.CopyrightTwoTone = l("copyright", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm5.5 533c52.9 0 88.8-31.7 93-77.8.4-4.1 3.8-7.3 8-7.3h56.8c2.6 0 4.7 2.1 4.7 4.7 0 82.6-68.7 141.4-162.7 141.4C407.4 734 344 660.8 344 539.1v-52.3C344 364.2 407.4 290 517.3 290c94.3 0 162.7 60.7 162.7 147.4 0 2.6-2.1 4.7-4.7 4.7h-56.7c-4.2 0-7.7-3.2-8-7.4-4-49.6-40-83.4-93-83.4-65.2 0-102.1 48.5-102.2 135.5v52.6c0 85.7 36.8 133.6 102.1 133.6z"], [e, "M517.6 351.3c53 0 89 33.8 93 83.4.3 4.2 3.8 7.4 8 7.4h56.7c2.6 0 4.7-2.1 4.7-4.7 0-86.7-68.4-147.4-162.7-147.4C407.4 290 344 364.2 344 486.8v52.3C344 660.8 407.4 734 517.3 734c94 0 162.7-58.8 162.7-141.4 0-2.6-2.1-4.7-4.7-4.7h-56.8c-4.2 0-7.6 3.2-8 7.3-4.2 46.1-40.1 77.8-93 77.8-65.3 0-102.1-47.9-102.1-133.6v-52.6c.1-87 37-135.5 102.2-135.5z"]) })), t.DollarTwoTone = l("dollar", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M426.6 410.3c0 25.4 15.7 45.1 49.5 57.3 4.7 1.9 9.4 3.4 15 5v-124c-37 4.7-64.5 25.4-64.5 61.7zm116.5 135.2c-2.9-.6-5.7-1.3-8.8-2.2V677c42.6-3.8 72-27.3 72-66.4 0-30.7-15.9-50.7-63.2-65.1z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm22.4 589.2l.2 31.7c0 4.5-3.6 8.1-8 8.1h-28.4c-4.4 0-8-3.6-8-8v-31.4c-89-6.5-130.7-57.1-135.2-112.1-.4-4.7 3.3-8.7 8-8.7h46.2c3.9 0 7.3 2.8 7.9 6.6 5.1 31.8 29.9 55.4 74.1 61.3V534l-24.7-6.3c-52.3-12.5-102.1-45.1-102.1-112.7 0-73 55.4-112.1 126.2-119v-33c0-4.4 3.6-8 8-8h28.1c4.4 0 8 3.6 8 8v32.7c68.5 6.9 119.8 46.9 125.9 109.2a8.1 8.1 0 0 1-8 8.8h-44.9c-4 0-7.4-2.9-7.9-6.9-4-29.2-27.5-53-65.5-58.2v134.3l25.4 5.9c64.8 16 108.9 47 109 116.4 0 75.2-56 117.1-134.3 124z"], [e, "M559.7 488.8l-25.4-5.9V348.6c38 5.2 61.5 29 65.5 58.2.5 4 3.9 6.9 7.9 6.9h44.9c4.7 0 8.4-4.1 8-8.8-6.1-62.3-57.4-102.3-125.9-109.2V263c0-4.4-3.6-8-8-8h-28.1c-4.4 0-8 3.6-8 8v33c-70.8 6.9-126.2 46-126.2 119 0 67.6 49.8 100.2 102.1 112.7l24.7 6.3v142.7c-44.2-5.9-69-29.5-74.1-61.3-.6-3.8-4-6.6-7.9-6.6H363c-4.7 0-8.4 4-8 8.7 4.5 55 46.2 105.6 135.2 112.1V761c0 4.4 3.6 8 8 8h28.4c4.4 0 8-3.6 8-8.1l-.2-31.7c78.3-6.9 134.3-48.8 134.3-124-.1-69.4-44.2-100.4-109-116.4zm-68.6-16.2c-5.6-1.6-10.3-3.1-15-5-33.8-12.2-49.5-31.9-49.5-57.3 0-36.3 27.5-57 64.5-61.7v124zM534.3 677V543.3c3.1.9 5.9 1.6 8.8 2.2 47.3 14.4 63.2 34.4 63.2 65.1 0 39.1-29.4 62.6-72 66.4z"]) })), t.EuroTwoTone = l("euro", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm117.1 581.1c0 3.8-2.7 7-6.4 7.8-15.9 3.4-34.4 5.1-55.3 5.1-109.8 0-183-58.8-200.2-158H337c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h26.1v-36.9c0-4.4 0-8.7.3-12.8H337c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h31.8C388.5 345.7 460.7 290 567.4 290c20.9 0 39.4 1.9 55.3 5.4 3.7.8 6.3 4 6.3 7.8V346a8 8 0 0 1-9.6 7.8c-14.6-2.9-31.8-4.4-51.7-4.4-65.3 0-110.4 33.5-127.6 90.4h128.3c4.4 0 8 3.6 8 8V475c0 4.4-3.6 8-8 8H432.5c-.3 4.4-.3 9.1-.3 13.8v36h136.4c4.4 0 8 3.6 8 8V568c0 4.4-3.6 8-8 8H438c15.3 62 61.3 98.6 129.8 98.6 19.9 0 37.1-1.3 51.8-4.1 4.9-1 9.5 2.8 9.5 7.8v42.8z"], [e, "M619.6 670.5c-14.7 2.8-31.9 4.1-51.8 4.1-68.5 0-114.5-36.6-129.8-98.6h130.6c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H432.2v-36c0-4.7 0-9.4.3-13.8h135.9c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H440.1c17.2-56.9 62.3-90.4 127.6-90.4 19.9 0 37.1 1.5 51.7 4.4a8 8 0 0 0 9.6-7.8v-42.8c0-3.8-2.6-7-6.3-7.8-15.9-3.5-34.4-5.4-55.3-5.4-106.7 0-178.9 55.7-198.6 149.9H337c-4.4 0-8 3.6-8 8v27.2c0 4.4 3.6 8 8 8h26.4c-.3 4.1-.3 8.4-.3 12.8v36.9H337c-4.4 0-8 3.6-8 8V568c0 4.4 3.6 8 8 8h30.2c17.2 99.2 90.4 158 200.2 158 20.9 0 39.4-1.7 55.3-5.1 3.7-.8 6.4-4 6.4-7.8v-42.8c0-5-4.6-8.8-9.5-7.8z"]) })), t.GoldTwoTone = l("gold", s, (function (e, t) { return c(i, [e, "M435.7 558.7c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM196.5 748l20.7-128h159.5l20.7 128H196.5zm709.4 58.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zM626.5 748l20.7-128h159.5l20.7 128H626.5zM342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8zm91.2-196h159.5l20.7 128h-201l20.8-128z"], [t, "M592.7 276H433.2l-20.8 128h201zM217.2 620l-20.7 128h200.9l-20.7-128zm430 0l-20.7 128h200.9l-20.7-128z"]) })), t.CanlendarTwoTone = l("canlendar", s, (function (e, t) { return c(i, [t, "M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v136h656V256H712v48z"], [e, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zm0-448H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136z"]) })) }, "3aed": function (e, t, n) { }, "3af3": function (e, t, n) { "use strict"; var r = n("8bbf"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("4d91"), u = n("4d26"), h = n.n(u), f = n("da05"), d = n("c005"), p = n.n(d), v = n("6a21"), m = n("ec44"), g = n("3852"), y = n.n(g), b = n("1098"), x = n.n(b), w = n("8e8e"), _ = n.n(w), C = n("9b57"), M = n.n(C), O = n("2a95"), k = n("d96e"), S = n.n(k), T = n("9b02"), A = n.n(T), L = n("0f5c"), j = n.n(L), z = n("9638"), E = n.n(z), P = n("3eea"), D = n.n(P), H = n("8827"), V = n.n(H), I = n("57ba"), N = n.n(I), R = function e(t) { V()(this, e), c()(this, t) }; function F(e) { return e instanceof R } function Y(e) { return F(e) ? e : new R(e) } function $(e) { return e.name || "WrappedComponent" } function B(e, t) { return e.name = "Form_" + $(t), e.WrappedComponent = t, e.props = c()({}, e.props, t.props), e } function W(e) { return e } function q(e) { return Array.prototype.concat.apply([], e) } function U() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", t = arguments[1], n = arguments[2], r = arguments[3], i = arguments[4]; if (n(e, t)) i(e, t); else if (void 0 === t || null === t); else if (Array.isArray(t)) t.forEach((function (t, o) { return U(e + "[" + o + "]", t, n, r, i) })); else { if ("object" !== ("undefined" === typeof t ? "undefined" : x()(t))) return void S()(!1, r); Object.keys(t).forEach((function (o) { var a = t[o]; U(e + (e ? "." : "") + o, a, n, r, i) })) } } function K(e, t, n) { var r = {}; return U(void 0, e, t, n, (function (e, t) { r[e] = t })), r } function G(e, t, n) { var r = e.map((function (e) { var t = c()({}, e, { trigger: e.trigger || [] }); return "string" === typeof t.trigger && (t.trigger = [t.trigger]), t })); return t && r.push({ trigger: n ? [].concat(n) : [], rules: t }), r } function X(e) { return e.filter((function (e) { return !!e.rules && e.rules.length })).map((function (e) { return e.trigger })).reduce((function (e, t) { return e.concat(t) }), []) } function J(e) { if (!e || !e.target) return e; var t = e.target; return "checkbox" === t.type ? t.checked : t.value } function Q(e) { return e ? e.map((function (e) { return e && e.message ? e.message : e })) : e } function Z(e, t, n) { var r = e, i = t, o = n; return void 0 === n && ("function" === typeof r ? (o = r, i = {}, r = void 0) : Array.isArray(r) ? "function" === typeof i ? (o = i, i = {}) : i = i || {} : (o = i, i = r || {}, r = void 0)), { names: r, options: i, callback: o } } function ee(e) { return 0 === Object.keys(e).length } function te(e) { return !!e && e.some((function (e) { return e.rules && e.rules.length })) } function ne(e, t) { return 0 === e.lastIndexOf(t, 0) } function re(e, t) { return 0 === t.indexOf(e) && -1 !== [".", "["].indexOf(t[e.length]) } function ie(e) { return K(e, (function (e, t) { return F(t) }), "You must wrap field data with `createFormField`.") } var oe = function () { function e(t) { V()(this, e), ae.call(this), this.fields = ie(t), this.fieldsMeta = {} } return N()(e, [{ key: "updateFields", value: function (e) { this.fields = ie(e) } }, { key: "flattenRegisteredFields", value: function (e) { var t = this.getAllFieldsName(); return K(e, (function (e) { return t.indexOf(e) >= 0 }), 'You cannot set a form field before rendering a field associated with the value. You can use `getFieldDecorator(id, options)` instead `v-decorator="[id, options]"` to register it before render.') } }, { key: "setFields", value: function (e) { var t = this, n = this.fieldsMeta, r = c()({}, this.fields, e), i = {}; Object.keys(n).forEach((function (e) { i[e] = t.getValueFromFields(e, r) })), Object.keys(i).forEach((function (e) { var n = i[e], o = t.getFieldMeta(e); if (o && o.normalize) { var a = o.normalize(n, t.getValueFromFields(e, t.fields), i); a !== n && (r[e] = c()({}, r[e], { value: a })) } })), this.fields = r } }, { key: "resetFields", value: function (e) { var t = this.fields, n = e ? this.getValidFieldsFullName(e) : this.getAllFieldsName(); return n.reduce((function (e, n) { var r = t[n]; return r && "value" in r && (e[n] = {}), e }), {}) } }, { key: "setFieldMeta", value: function (e, t) { this.fieldsMeta[e] = t } }, { key: "setFieldsAsDirty", value: function () { var e = this; Object.keys(this.fields).forEach((function (t) { var n = e.fields[t], r = e.fieldsMeta[t]; n && r && te(r.validate) && (e.fields[t] = c()({}, n, { dirty: !0 })) })) } }, { key: "getFieldMeta", value: function (e) { return this.fieldsMeta[e] = this.fieldsMeta[e] || {}, this.fieldsMeta[e] } }, { key: "getValueFromFields", value: function (e, t) { var n = t[e]; if (n && "value" in n) return n.value; var r = this.getFieldMeta(e); return r && r.initialValue } }, { key: "getValidFieldsName", value: function () { var e = this, t = this.fieldsMeta; return t ? Object.keys(t).filter((function (t) { return !e.getFieldMeta(t).hidden })) : [] } }, { key: "getAllFieldsName", value: function () { var e = this.fieldsMeta; return e ? Object.keys(e) : [] } }, { key: "getValidFieldsFullName", value: function (e) { var t = Array.isArray(e) ? e : [e]; return this.getValidFieldsName().filter((function (e) { return t.some((function (t) { return e === t || ne(e, t) && [".", "["].indexOf(e[t.length]) >= 0 })) })) } }, { key: "getFieldValuePropValue", value: function (e) { var t = e.name, n = e.getValueProps, r = e.valuePropName, i = this.getField(t), o = "value" in i ? i.value : e.initialValue; return n ? n(o) : a()({}, r, o) } }, { key: "getField", value: function (e) { return c()({}, this.fields[e], { name: e }) } }, { key: "getNotCollectedFields", value: function () { var e = this, t = this.getValidFieldsName(); return t.filter((function (t) { return !e.fields[t] })).map((function (t) { return { name: t, dirty: !1, value: e.getFieldMeta(t).initialValue } })).reduce((function (e, t) { return j()(e, t.name, Y(t)) }), {}) } }, { key: "getNestedAllFields", value: function () { var e = this; return Object.keys(this.fields).reduce((function (t, n) { return j()(t, n, Y(e.fields[n])) }), this.getNotCollectedFields()) } }, { key: "getFieldMember", value: function (e, t) { return this.getField(e)[t] } }, { key: "getNestedFields", value: function (e, t) { var n = e || this.getValidFieldsName(); return n.reduce((function (e, n) { return j()(e, n, t(n)) }), {}) } }, { key: "getNestedField", value: function (e, t) { var n = this.getValidFieldsFullName(e); if (0 === n.length || 1 === n.length && n[0] === e) return t(e); var r = "[" === n[0][e.length], i = r ? e.length : e.length + 1; return n.reduce((function (e, n) { return j()(e, n.slice(i), t(n)) }), r ? [] : {}) } }, { key: "isValidNestedFieldName", value: function (e) { var t = this.getAllFieldsName(); return t.every((function (t) { return !re(t, e) && !re(e, t) })) } }, { key: "clearField", value: function (e) { delete this.fields[e], delete this.fieldsMeta[e] } }]), e }(), ae = function () { var e = this; this.setFieldsInitialValue = function (t) { var n = e.flattenRegisteredFields(t), r = e.fieldsMeta; Object.keys(n).forEach((function (t) { r[t] && e.setFieldMeta(t, c()({}, e.getFieldMeta(t), { initialValue: n[t] })) })) }, this.getAllValues = function () { var t = e.fieldsMeta, n = e.fields; return Object.keys(t).reduce((function (t, r) { return j()(t, r, e.getValueFromFields(r, n)) }), {}) }, this.getFieldsValue = function (t) { return e.getNestedFields(t, e.getFieldValue) }, this.getFieldValue = function (t) { var n = e.fields; return e.getNestedField(t, (function (t) { return e.getValueFromFields(t, n) })) }, this.getFieldsError = function (t) { return e.getNestedFields(t, e.getFieldError) }, this.getFieldError = function (t) { return e.getNestedField(t, (function (t) { return Q(e.getFieldMember(t, "errors")) })) }, this.isFieldValidating = function (t) { return e.getFieldMember(t, "validating") }, this.isFieldsValidating = function (t) { var n = t || e.getValidFieldsName(); return n.some((function (t) { return e.isFieldValidating(t) })) }, this.isFieldTouched = function (t) { return e.getFieldMember(t, "touched") }, this.isFieldsTouched = function (t) { var n = t || e.getValidFieldsName(); return n.some((function (t) { return e.isFieldTouched(t) })) } }; function se(e) { return new oe(e) } var ce = n("7b05"), le = n("b488"), ue = n("daa3"), he = "change"; function fe() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [], n = e.validateMessages, r = e.onFieldsChange, i = e.onValuesChange, o = e.mapProps, s = void 0 === o ? W : o, u = e.mapPropsToFields, h = e.fieldNameProp, f = e.fieldMetaProp, d = e.fieldDataProp, p = e.formPropName, v = void 0 === p ? "form" : p, m = e.name, g = e.props, y = void 0 === g ? {} : g, b = e.templateContext; return function (e) { var o = {}; Array.isArray(y) ? y.forEach((function (e) { o[e] = l["a"].any })) : o = y; var p = { mixins: [le["a"]].concat(M()(t)), props: c()({}, o, { wrappedComponentRef: l["a"].func.def((function () { })) }), data: function () { var e = this, t = u && u(this.$props); return this.fieldsStore = se(t || {}), this.templateContext = b, this.instances = {}, this.cachedBind = {}, this.clearedFieldMetaCache = {}, this.formItems = {}, this.renderFields = {}, this.domFields = {}, ["getFieldsValue", "getFieldValue", "setFieldsInitialValue", "getFieldsError", "getFieldError", "isFieldValidating", "isFieldsValidating", "isFieldsTouched", "isFieldTouched"].forEach((function (t) { e[t] = function () { var n; return (n = e.fieldsStore)[t].apply(n, arguments) } })), { submitting: !1 } }, watch: b ? {} : { $props: { handler: function (e) { u && this.fieldsStore.updateFields(u(e)) }, deep: !0 } }, mounted: function () { this.cleanUpUselessFields() }, updated: function () { this.cleanUpUselessFields() }, methods: { updateFields: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; this.fieldsStore.updateFields(u(e)), b && b.$forceUpdate() }, onCollectCommon: function (e, t, n) { var r = this.fieldsStore.getFieldMeta(e); if (r[t]) r[t].apply(r, M()(n)); else if (r.originalProps && r.originalProps[t]) { var o; (o = r.originalProps)[t].apply(o, M()(n)) } var s = r.getValueFromEvent ? r.getValueFromEvent.apply(r, M()(n)) : J.apply(void 0, M()(n)); if (i && s !== this.fieldsStore.getFieldValue(e)) { var l = this.fieldsStore.getAllValues(), u = {}; l[e] = s, Object.keys(l).forEach((function (e) { return j()(u, e, l[e]) })), i(c()(a()({}, v, this.getForm()), this.$props), j()({}, e, s), u) } var h = this.fieldsStore.getField(e); return { name: e, field: c()({}, h, { value: s, touched: !0 }), fieldMeta: r } }, onCollect: function (e, t) { for (var n = arguments.length, r = Array(n > 2 ? n - 2 : 0), i = 2; i < n; i++)r[i - 2] = arguments[i]; var o = this.onCollectCommon(e, t, r), s = o.name, l = o.field, u = o.fieldMeta, h = u.validate; this.fieldsStore.setFieldsAsDirty(); var f = c()({}, l, { dirty: te(h) }); this.setFields(a()({}, s, f)) }, onCollectValidate: function (e, t) { for (var n = arguments.length, r = Array(n > 2 ? n - 2 : 0), i = 2; i < n; i++)r[i - 2] = arguments[i]; var o = this.onCollectCommon(e, t, r), a = o.field, s = o.fieldMeta, l = c()({}, a, { dirty: !0 }); this.fieldsStore.setFieldsAsDirty(), this.validateFieldsInternal([l], { action: t, options: { firstFields: !!s.validateFirst } }) }, getCacheBind: function (e, t, n) { this.cachedBind[e] || (this.cachedBind[e] = {}); var r = this.cachedBind[e]; return r[t] && r[t].oriFn === n || (r[t] = { fn: n.bind(this, e, t), oriFn: n }), r[t].fn }, getFieldDecorator: function (e, t, n) { var r = this, i = this.getFieldProps(e, t), o = i.props, a = _()(i, ["props"]); return this.formItems[e] = n, function (t) { r.renderFields[e] = !0; var n = r.fieldsStore.getFieldMeta(e), i = Object(ue["l"])(t), s = Object(ue["i"])(t); n.originalProps = i; var l = c()({ props: c()({}, o, r.fieldsStore.getFieldValuePropValue(n)) }, a); l.domProps.value = l.props.value; var u = {}; return Object.keys(l.on).forEach((function (e) { if (s[e]) { var t = l.on[e]; u[e] = function () { s[e].apply(s, arguments), t.apply(void 0, arguments) } } else u[e] = l.on[e] })), Object(ce["a"])(t, c()({}, l, { on: u })) } }, getFieldProps: function (e) { var t = this, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; if (!e) throw new Error("Must call `getFieldProps` with valid name string!"); delete this.clearedFieldMetaCache[e]; var r = c()({ name: e, trigger: he, valuePropName: "value", validate: [] }, n), i = r.rules, o = r.trigger, a = r.validateTrigger, s = void 0 === a ? o : a, l = r.validate, u = this.fieldsStore.getFieldMeta(e); "initialValue" in r && (u.initialValue = r.initialValue); var p = c()({}, this.fieldsStore.getFieldValuePropValue(r)), v = {}, g = {}; h && (p[h] = m ? m + "_" + e : e); var y = G(l, i, s), b = X(y); b.forEach((function (n) { v[n] || (v[n] = t.getCacheBind(e, n, t.onCollectValidate)) })), o && -1 === b.indexOf(o) && (v[o] = this.getCacheBind(e, o, this.onCollect)); var x = c()({}, u, r, { validate: y }); return this.fieldsStore.setFieldMeta(e, x), f && (g[f] = x), d && (g[d] = this.fieldsStore.getField(e)), this.renderFields[e] = !0, { props: D()(p, ["id"]), domProps: { value: p.value }, attrs: c()({}, g, { id: p.id }), directives: [{ name: "ant-ref", value: this.getCacheBind(e, e + "__ref", this.saveRef) }], on: v } }, getFieldInstance: function (e) { return this.instances[e] }, getRules: function (e, t) { var n = e.validate.filter((function (e) { return !t || e.trigger.indexOf(t) >= 0 })).map((function (e) { return e.rules })); return q(n) }, setFields: function (e, t) { var n = this, i = this.fieldsStore.flattenRegisteredFields(e); this.fieldsStore.setFields(i); var o = Object.keys(i).reduce((function (e, t) { return j()(e, t, n.fieldsStore.getField(t)) }), {}); if (r) { var a = Object.keys(i).reduce((function (e, t) { return j()(e, t, n.fieldsStore.getField(t)) }), {}); r(this, a, this.fieldsStore.getNestedAllFields()) } var s = b || this, c = !1; Object.keys(o).forEach((function (e) { var t = n.formItems[e]; t = "function" === typeof t ? t() : t, t && t.itemSelfUpdate ? t.$forceUpdate() : c = !0 })), c && s.$forceUpdate(), this.$nextTick((function () { t && t() })) }, setFieldsValue: function (e, t) { var n = this.fieldsStore.fieldsMeta, r = this.fieldsStore.flattenRegisteredFields(e), o = Object.keys(r).reduce((function (e, t) { var i = n[t]; if (i) { var o = r[t]; e[t] = { value: o } } return e }), {}); if (this.setFields(o, t), i) { var s = this.fieldsStore.getAllValues(); i(c()(a()({}, v, this.getForm()), this.$props), e, s) } }, saveRef: function (e, t, n) { if (!n) { var r = this.fieldsStore.getFieldMeta(e); return r.preserve || (this.clearedFieldMetaCache[e] = { field: this.fieldsStore.getField(e), meta: r }, this.clearField(e)), void delete this.domFields[e] } this.domFields[e] = !0, this.recoverClearedField(e), this.instances[e] = n }, cleanUpUselessFields: function () { var e = this, t = this.fieldsStore.getAllFieldsName(), n = t.filter((function (t) { var n = e.fieldsStore.getFieldMeta(t); return !e.renderFields[t] && !e.domFields[t] && !n.preserve })); n.length && n.forEach(this.clearField), this.renderFields = {} }, clearField: function (e) { this.fieldsStore.clearField(e), delete this.instances[e], delete this.cachedBind[e] }, resetFields: function (e) { var t = this, n = this.fieldsStore.resetFields(e); if (Object.keys(n).length > 0 && this.setFields(n), e) { var r = Array.isArray(e) ? e : [e]; r.forEach((function (e) { return delete t.clearedFieldMetaCache[e] })) } else this.clearedFieldMetaCache = {} }, recoverClearedField: function (e) { this.clearedFieldMetaCache[e] && (this.fieldsStore.setFields(a()({}, e, this.clearedFieldMetaCache[e].field)), this.fieldsStore.setFieldMeta(e, this.clearedFieldMetaCache[e].meta), delete this.clearedFieldMetaCache[e]) }, validateFieldsInternal: function (e, t, r) { var i = this, o = t.fieldNames, a = t.action, s = t.options, l = void 0 === s ? {} : s, u = {}, h = {}, f = {}, d = {}; if (e.forEach((function (e) { var t = e.name; if (!0 === l.force || !1 !== e.dirty) { var n = i.fieldsStore.getFieldMeta(t), r = c()({}, e); r.errors = void 0, r.validating = !0, r.dirty = !0, u[t] = i.getRules(n, a), h[t] = r.value, f[t] = r } else e.errors && j()(d, t, { errors: e.errors }) })), this.setFields(f), Object.keys(h).forEach((function (e) { h[e] = i.fieldsStore.getFieldValue(e) })), r && ee(f)) r(ee(d) ? null : d, this.fieldsStore.getFieldsValue(o)); else { var p = new O["a"](u); n && p.messages(n), p.validate(h, l, (function (e) { var t = c()({}, d); e && e.length && e.forEach((function (e) { var n = e.field, r = n; Object.keys(u).some((function (e) { var t = u[e] || []; if (e === n) return r = e, !0; if (t.every((function (e) { var t = e.type; return "array" !== t })) && 0 !== n.indexOf(e)) return !1; var i = n.slice(e.length + 1); return !!/^\d+$/.test(i) && (r = e, !0) })); var i = A()(t, r); ("object" !== ("undefined" === typeof i ? "undefined" : x()(i)) || Array.isArray(i)) && j()(t, r, { errors: [] }); var o = A()(t, r.concat(".errors")); o.push(e) })); var n = [], a = {}; Object.keys(u).forEach((function (e) { var r = A()(t, e), o = i.fieldsStore.getField(e); E()(o.value, h[e]) ? (o.errors = r && r.errors, o.value = h[e], o.validating = !1, o.dirty = !1, a[e] = o) : n.push({ name: e }) })), i.setFields(a), r && (n.length && n.forEach((function (e) { var n = e.name, r = [{ message: n + " need to revalidate", field: n }]; j()(t, n, { expired: !0, errors: r }) })), r(ee(t) ? null : t, i.fieldsStore.getFieldsValue(o))) })) } }, validateFields: function (e, t, n) { var r = this, i = new Promise((function (i, o) { var a = Z(e, t, n), s = a.names, c = a.options, l = Z(e, t, n), u = l.callback; if (!u || "function" === typeof u) { var h = u; u = function (e, t) { h ? h(e, t) : e ? o({ errors: e, values: t }) : i(t) } } var f = s ? r.fieldsStore.getValidFieldsFullName(s) : r.fieldsStore.getValidFieldsName(), d = f.filter((function (e) { var t = r.fieldsStore.getFieldMeta(e); return te(t.validate) })).map((function (e) { var t = r.fieldsStore.getField(e); return t.value = r.fieldsStore.getFieldValue(e), t })); d.length ? ("firstFields" in c || (c.firstFields = f.filter((function (e) { var t = r.fieldsStore.getFieldMeta(e); return !!t.validateFirst }))), r.validateFieldsInternal(d, { fieldNames: f, options: c }, u)) : u(null, r.fieldsStore.getFieldsValue(f)) })); return i["catch"]((function (e) { return console.error, e })), i }, isSubmitting: function () { return this.submitting }, submit: function (e) { var t = this; var n = function () { t.setState({ submitting: !1 }) }; this.setState({ submitting: !0 }), e(n) } }, render: function () { var t = arguments[0], n = this.$slots, r = this.$scopedSlots, i = a()({}, v, this.getForm()), o = Object(ue["l"])(this), l = o.wrappedComponentRef, u = _()(o, ["wrappedComponentRef"]), h = { props: s.call(this, c()({}, i, u)), on: Object(ue["k"])(this), ref: "WrappedComponent", directives: [{ name: "ant-ref", value: l }] }; Object.keys(r).length && (h.scopedSlots = r); var f = Object.keys(n); return e ? t(e, h, [f.length ? f.map((function (e) { return t("template", { slot: e }, [n[e]]) })) : null]) : null } }; if (!e) return p; if (Array.isArray(e.props)) { var g = {}; e.props.forEach((function (e) { g[e] = l["a"].any })), g[v] = Object, e.props = g } else e.props = e.props || {}, v in e.props || (e.props[v] = Object); return B(p, e) } } var de = fe, pe = { methods: { getForm: function () { return { getFieldsValue: this.fieldsStore.getFieldsValue, getFieldValue: this.fieldsStore.getFieldValue, getFieldInstance: this.getFieldInstance, setFieldsValue: this.setFieldsValue, setFields: this.setFields, setFieldsInitialValue: this.fieldsStore.setFieldsInitialValue, getFieldDecorator: this.getFieldDecorator, getFieldProps: this.getFieldProps, getFieldsError: this.fieldsStore.getFieldsError, getFieldError: this.fieldsStore.getFieldError, isFieldValidating: this.fieldsStore.isFieldValidating, isFieldsValidating: this.fieldsStore.isFieldsValidating, isFieldsTouched: this.fieldsStore.isFieldsTouched, isFieldTouched: this.fieldsStore.isFieldTouched, isSubmitting: this.isSubmitting, submit: this.submit, validateFields: this.validateFields, resetFields: this.resetFields } } } }; function ve(e, t) { var n = window.getComputedStyle, r = n ? n(e) : e.currentStyle; if (r) return r[t.replace(/-(\w)/gi, (function (e, t) { return t.toUpperCase() }))] } function me(e) { var t = e, n = void 0; while ("body" !== (n = t.nodeName.toLowerCase())) { var r = ve(t, "overflowY"); if (t !== e && ("auto" === r || "scroll" === r) && t.scrollHeight > t.clientHeight) return t; t = t.parentNode } return "body" === n ? t.ownerDocument : t } var ge = { methods: { getForm: function () { return c()({}, pe.methods.getForm.call(this), { validateFieldsAndScroll: this.validateFieldsAndScroll }) }, validateFieldsAndScroll: function (e, t, n) { var r = this, i = Z(e, t, n), o = i.names, a = i.callback, s = i.options, l = function (e, t) { if (e) { var n = r.fieldsStore.getValidFieldsName(), i = void 0, o = void 0; if (n.forEach((function (t) { if (y()(e, t)) { var n = r.getFieldInstance(t); if (n) { var a = n.$el || n.elm, s = a.getBoundingClientRect().top; "hidden" !== a.type && (void 0 === o || o > s) && (o = s, i = a) } } })), i) { var l = s.container || me(i); Object(m["a"])(i, l, c()({ onlyScrollIfNeeded: !0 }, s.scroll)) } } "function" === typeof a && a(e, t) }; return this.validateFields(o, s, l) } } }; function ye(e) { return de(c()({}, e), [ge]) } var be = ye, xe = n("92fa"), we = n.n(xe), _e = n("2769"), Ce = n.n(_e), Me = n("290c"), Oe = "data-__meta", ke = "data-__field", Se = n("94eb"), Te = n("0c63"), Ae = n("9cba"); function Le() { } function je(e) { return e.reduce((function (e, t) { return [].concat(M()(e), [" ", t]) }), []).slice(1) } var ze = { id: l["a"].string, htmlFor: l["a"].string, prefixCls: l["a"].string, label: l["a"].any, labelCol: l["a"].shape(f["a"]).loose, wrapperCol: l["a"].shape(f["a"]).loose, help: l["a"].any, extra: l["a"].any, validateStatus: l["a"].oneOf(["", "success", "warning", "error", "validating"]), hasFeedback: l["a"].bool, required: l["a"].bool, colon: l["a"].bool, fieldDecoratorId: l["a"].string, fieldDecoratorOptions: l["a"].object, selfUpdate: l["a"].bool, labelAlign: l["a"].oneOf(["left", "right"]) }; function Ee() { for (var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = arguments[1], n = !1, r = 0, i = e.length; r < i; r++) { var o = e[r]; if (!o || o !== t && o.$vnode !== t) { var a = o.componentOptions || o.$vnode && o.$vnode.componentOptions, s = a ? a.children : o.$children; n = Ee(s, t) } else n = !0; if (n) break } return n } var Pe = { name: "AFormItem", __ANT_FORM_ITEM: !0, mixins: [le["a"]], props: Object(ue["t"])(ze, { hasFeedback: !1 }), provide: function () { return { isFormItemChildren: !0 } }, inject: { isFormItemChildren: { default: !1 }, FormContext: { default: function () { return {} } }, decoratorFormProps: { default: function () { return {} } }, collectFormItemContext: { default: function () { return Le } }, configProvider: { default: function () { return Ae["a"] } } }, data: function () { return { helpShow: !1 } }, computed: { itemSelfUpdate: function () { return !!(void 0 === this.selfUpdate ? this.FormContext.selfUpdate : this.selfUpdate) } }, created: function () { this.collectContext() }, beforeUpdate: function () { 0 }, beforeDestroy: function () { this.collectFormItemContext(this.$vnode && this.$vnode.context, "delete") }, mounted: function () { var e = this.$props, t = e.help, n = e.validateStatus; Object(v["a"])(this.getControls(this.slotDefault, !0).length <= 1 || void 0 !== t || void 0 !== n, "Form.Item", "Cannot generate `validateStatus` and `help` automatically, while there are more than one `getFieldDecorator` in it."), Object(v["a"])(!this.fieldDecoratorId, "Form.Item", "`fieldDecoratorId` is deprecated. please use `v-decorator={id, options}` instead.") }, methods: { collectContext: function () { if (this.FormContext.form && this.FormContext.form.templateContext) { var e = this.FormContext.form.templateContext, t = Object.values(e.$slots || {}).reduce((function (e, t) { return [].concat(M()(e), M()(t)) }), []), n = Ee(t, this.$vnode); Object(v["a"])(!n, "You can not set FormItem from slot, please use slot-scope instead slot"); var r = !1; n || this.$vnode.context === e || (r = Ee(this.$vnode.context.$children, e.$vnode)), r || n || this.collectFormItemContext(this.$vnode.context) } }, getHelpMessage: function () { var e = Object(ue["g"])(this, "help"), t = this.getOnlyControl(); if (void 0 === e && t) { var n = this.getField().errors; return n ? je(n.map((function (e, t) { var n = null; return Object(ue["w"])(e) ? n = e : Object(ue["w"])(e.message) && (n = e.message), n ? Object(ce["a"])(n, { key: t }) : e.message }))) : "" } return e }, getControls: function () { for (var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = arguments[1], n = [], r = 0; r < e.length; r++) { if (!t && n.length > 0) break; var i = e[r]; if ((i.tag || "" !== i.text.trim()) && !Object(ue["o"])(i).__ANT_FORM_ITEM) { var o = Object(ue["d"])(i), a = i.data && i.data.attrs || {}; Oe in a ? n.push(i) : o && (n = n.concat(this.getControls(o, t))) } } return n }, getOnlyControl: function () { var e = this.getControls(this.slotDefault, !1)[0]; return void 0 !== e ? e : null }, getChildAttr: function (e) { var t = this.getOnlyControl(), n = {}; if (t) return t.data ? n = t.data : t.$vnode && t.$vnode.data && (n = t.$vnode.data), n[e] || n.attrs[e] }, getId: function () { return this.getChildAttr("id") }, getMeta: function () { return this.getChildAttr(Oe) }, getField: function () { return this.getChildAttr(ke) }, getValidateStatus: function () { var e = this.getOnlyControl(); if (!e) return ""; var t = this.getField(); if (t.validating) return "validating"; if (t.errors) return "error"; var n = "value" in t ? t.value : this.getMeta().initialValue; return void 0 !== n && null !== n && "" !== n ? "success" : "" }, onLabelClick: function () { var e = this.id || this.getId(); if (e) { var t = this.$el, n = t.querySelector('[id="' + e + '"]'); n && n.focus && n.focus() } }, onHelpAnimEnd: function (e, t) { this.helpShow = t, t || this.$forceUpdate() }, isRequired: function () { var e = this.required; if (void 0 !== e) return e; if (this.getOnlyControl()) { var t = this.getMeta() || {}, n = t.validate || []; return n.filter((function (e) { return !!e.rules })).some((function (e) { return e.rules.some((function (e) { return e.required })) })) } return !1 }, renderHelp: function (e) { var t = this, n = this.$createElement, r = this.getHelpMessage(), i = r ? n("div", { class: e + "-explain", key: "help" }, [r]) : null; i && (this.helpShow = !!i); var o = Object(Se["a"])("show-help", { afterEnter: function () { return t.onHelpAnimEnd("help", !0) }, afterLeave: function () { return t.onHelpAnimEnd("help", !1) } }); return n("transition", we()([o, { key: "help" }]), [i]) }, renderExtra: function (e) { var t = this.$createElement, n = Object(ue["g"])(this, "extra"); return n ? t("div", { class: e + "-extra" }, [n]) : null }, renderValidateWrapper: function (e, t, n, r) { var i = this.$createElement, o = this.$props, a = this.getOnlyControl, s = void 0 === o.validateStatus && a ? this.getValidateStatus() : o.validateStatus, c = e + "-item-control"; s && (c = h()(e + "-item-control", { "has-feedback": s && o.hasFeedback, "has-success": "success" === s, "has-warning": "warning" === s, "has-error": "error" === s, "is-validating": "validating" === s })); var l = ""; switch (s) { case "success": l = "check-circle"; break; case "warning": l = "exclamation-circle"; break; case "error": l = "close-circle"; break; case "validating": l = "loading"; break; default: l = ""; break }var u = o.hasFeedback && l ? i("span", { class: e + "-item-children-icon" }, [i(Te["a"], { attrs: { type: l, theme: "loading" === l ? "outlined" : "filled" } })]) : null; return i("div", { class: c }, [i("span", { class: e + "-item-children" }, [t, u]), n, r]) }, renderWrapper: function (e, t) { var n = this.$createElement, r = this.isFormItemChildren ? {} : this.FormContext, i = r.wrapperCol, o = this.wrapperCol, a = o || i || {}, s = a.style, c = a.id, l = a.on, u = _()(a, ["style", "id", "on"]), d = h()(e + "-item-control-wrapper", a["class"]), p = { props: u, class: d, key: "wrapper", style: s, id: c, on: l }; return n(f["b"], p, [t]) }, renderLabel: function (e) { var t, n = this.$createElement, r = this.FormContext, i = r.vertical, o = r.labelAlign, s = r.labelCol, c = r.colon, l = this.labelAlign, u = this.labelCol, d = this.colon, p = this.id, v = this.htmlFor, m = Object(ue["g"])(this, "label"), g = this.isRequired(), y = u || s || {}, b = l || o, x = e + "-item-label", w = h()(x, "left" === b && x + "-left", y["class"]), C = (y["class"], y.style), M = y.id, O = y.on, k = _()(y, ["class", "style", "id", "on"]), S = m, T = !0 === d || !1 !== c && !1 !== d, A = T && !i; A && "string" === typeof m && "" !== m.trim() && (S = m.replace(/[锛�:]\s*$/, "")); var L = h()((t = {}, a()(t, e + "-item-required", g), a()(t, e + "-item-no-colon", !T), t)), j = { props: k, class: w, key: "label", style: C, id: M, on: O }; return m ? n(f["b"], j, [n("label", { attrs: { for: v || p || this.getId(), title: "string" === typeof m ? m : "" }, class: L, on: { click: this.onLabelClick } }, [S])]) : null }, renderChildren: function (e) { return [this.renderLabel(e), this.renderWrapper(e, this.renderValidateWrapper(e, this.slotDefault, this.renderHelp(e), this.renderExtra(e)))] }, renderFormItem: function () { var e, t = this.$createElement, n = this.$props.prefixCls, r = this.configProvider.getPrefixCls, i = r("form", n), o = this.renderChildren(i), s = (e = {}, a()(e, i + "-item", !0), a()(e, i + "-item-with-help", this.helpShow), e); return t(Me["a"], { class: h()(s), key: "row" }, [o]) }, decoratorOption: function (e) { if (e.data && e.data.directives) { var t = Ce()(e.data.directives, ["name", "decorator"]); return Object(v["a"])(!t || t && Array.isArray(t.value), "Form", 'Invalid directive: type check failed for directive "decorator". Expected Array, got ' + x()(t ? t.value : t) + ". At " + e.tag + "."), t ? t.value : null } return null }, decoratorChildren: function (e) { for (var t = this.FormContext, n = t.form.getFieldDecorator, r = 0, i = e.length; r < i; r++) { var o = e[r]; if (Object(ue["o"])(o).__ANT_FORM_ITEM) break; o.children ? o.children = this.decoratorChildren(Object(ce["b"])(o.children)) : o.componentOptions && o.componentOptions.children && (o.componentOptions.children = this.decoratorChildren(Object(ce["b"])(o.componentOptions.children))); var a = this.decoratorOption(o); a && a[0] && (e[r] = n(a[0], a[1], this)(o)) } return e } }, render: function () { var e = this.$slots, t = this.decoratorFormProps, n = this.fieldDecoratorId, r = this.fieldDecoratorOptions, i = void 0 === r ? {} : r, o = this.FormContext, a = Object(ue["c"])(e["default"] || []); if (t.form && n && a.length) { var s = t.form.getFieldDecorator; a[0] = s(n, i, this)(a[0]), Object(v["a"])(!(a.length > 1), "Form", "`autoFormCreate` just `decorator` then first children. but you can use JSX to support multiple children"), this.slotDefault = a } else o.form ? (a = Object(ce["b"])(a), this.slotDefault = this.decoratorChildren(a)) : this.slotDefault = a; return this.renderFormItem() } }, De = n("db14"), He = (l["a"].func, l["a"].func, l["a"].func, l["a"].any, l["a"].bool, l["a"].string, l["a"].func, l["a"].func, l["a"].func, l["a"].func, l["a"].func, l["a"].func, l["a"].func, l["a"].func, l["a"].func, l["a"].func, l["a"].func, l["a"].func, l["a"].func, { layout: l["a"].oneOf(["horizontal", "inline", "vertical"]), labelCol: l["a"].shape(f["a"]).loose, wrapperCol: l["a"].shape(f["a"]).loose, colon: l["a"].bool, labelAlign: l["a"].oneOf(["left", "right"]), form: l["a"].object, prefixCls: l["a"].string, hideRequiredMark: l["a"].bool, autoFormCreate: l["a"].func, options: l["a"].object, selfUpdate: l["a"].bool }), Ve = (l["a"].oneOfType([l["a"].string, l["a"].func]), l["a"].string, l["a"].boolean, l["a"].boolean, l["a"].number, l["a"].number, l["a"].number, l["a"].oneOfType([String, l["a"].arrayOf(String)]), l["a"].custom(p.a), l["a"].func, l["a"].func, { name: "AForm", props: Object(ue["t"])(He, { layout: "horizontal", hideRequiredMark: !1, colon: !0 }), Item: Pe, createFormField: Y, create: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return be(c()({ fieldNameProp: "id" }, e, { fieldMetaProp: Oe, fieldDataProp: ke })) }, createForm: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = De["a"].Vue || i.a; return new n(Ve.create(c()({}, t, { templateContext: e }))()) }, created: function () { this.formItemContexts = new Map }, provide: function () { var e = this; return { FormContext: this, collectFormItemContext: this.form && this.form.templateContext ? function (t) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "add", r = e.formItemContexts, i = r.get(t) || 0; "delete" === n ? i <= 1 ? r["delete"](t) : r.set(t, i - 1) : t !== e.form.templateContext && r.set(t, i + 1) } : function () { } } }, inject: { configProvider: { default: function () { return Ae["a"] } } }, watch: { form: function () { this.$forceUpdate() } }, computed: { vertical: function () { return "vertical" === this.layout } }, beforeUpdate: function () { this.formItemContexts.forEach((function (e, t) { t.$forceUpdate && t.$forceUpdate() })) }, updated: function () { this.form && this.form.cleanUpUselessFields && this.form.cleanUpUselessFields() }, methods: { onSubmit: function (e) { Object(ue["k"])(this).submit ? this.$emit("submit", e) : e.preventDefault() } }, render: function () { var e, t = this, n = arguments[0], r = this.prefixCls, i = this.hideRequiredMark, o = this.layout, s = this.onSubmit, l = this.$slots, u = this.autoFormCreate, f = this.options, d = void 0 === f ? {} : f, p = this.configProvider.getPrefixCls, m = p("form", r), g = h()(m, (e = {}, a()(e, m + "-horizontal", "horizontal" === o), a()(e, m + "-vertical", "vertical" === o), a()(e, m + "-inline", "inline" === o), a()(e, m + "-hide-required-mark", i), e)); if (u) { Object(v["a"])(!1, "Form", "`autoFormCreate` is deprecated. please use `form` instead."); var y = this.DomForm || be(c()({ fieldNameProp: "id" }, d, { fieldMetaProp: Oe, fieldDataProp: ke, templateContext: this.$vnode.context }))({ provide: function () { return { decoratorFormProps: this.$props } }, data: function () { return { children: l["default"], formClassName: g, submit: s } }, created: function () { u(this.form) }, render: function () { var e = arguments[0], t = this.children, n = this.formClassName, r = this.submit; return e("form", { on: { submit: r }, class: n }, [t]) } }); return this.domForm && (this.domForm.children = l["default"], this.domForm.submit = s, this.domForm.formClassName = g), this.DomForm = y, n(y, { attrs: { wrappedComponentRef: function (e) { t.domForm = e } } }) } return n("form", { on: { submit: s }, class: g }, [l["default"]]) } }), Ie = Ve, Ne = n("46cf"), Re = n.n(Ne), Fe = n("dfdf"); i.a.use(Re.a, { name: "ant-ref" }), i.a.use(Fe["b"]), i.a.prototype.$form = Ie, Ie.install = function (e) { e.use(De["a"]), e.component(Ie.name, Ie), e.component(Ie.Item.name, Ie.Item), e.prototype.$form = Ie }; t["a"] = Ie }, "3b18": function (e, t, n) { "use strict"; n("b2a3"), n("a1bc") }, "3b4a": function (e, t, n) { var r = n("0b07"), i = function () { try { var e = r(Object, "defineProperty"); return e({}, "", {}), e } catch (t) { } }(); e.exports = i }, "3bb4": function (e, t, n) { var r = n("08cc"), i = n("ec69"); function o(e) { var t = i(e), n = t.length; while (n--) { var o = t[n], a = e[o]; t[n] = [o, a, r(a)] } return t } e.exports = o }, "3bbe": function (e, t, n) { var r = n("861d"); e.exports = function (e) { if (!r(e) && null !== e) throw TypeError("Can't set " + String(e) + " as a prototype"); return e } }, "3c0e": function (e, t, n) { }, "3c1f": function (e, t, n) { "use strict"; n("b2a3"), n("7fd0"), n("06f4"), n("5704") }, "3c35": function (e, t) { (function (t) { e.exports = t }).call(this, {}) }, "3c55": function (e, t, n) { try { var r = n("cecd") } catch (s) { r = n("cecd") } var i = /\s+/, o = Object.prototype.toString; function a(e) { if (!e || !e.nodeType) throw new Error("A DOM element reference is required"); this.el = e, this.list = e.classList } e.exports = function (e) { return new a(e) }, a.prototype.add = function (e) { if (this.list) return this.list.add(e), this; var t = this.array(), n = r(t, e); return ~n || t.push(e), this.el.className = t.join(" "), this }, a.prototype.remove = function (e) { if ("[object RegExp]" == o.call(e)) return this.removeMatching(e); if (this.list) return this.list.remove(e), this; var t = this.array(), n = r(t, e); return ~n && t.splice(n, 1), this.el.className = t.join(" "), this }, a.prototype.removeMatching = function (e) { for (var t = this.array(), n = 0; n < t.length; n++)e.test(t[n]) && this.remove(t[n]); return this }, a.prototype.toggle = function (e, t) { return this.list ? ("undefined" !== typeof t ? t !== this.list.toggle(e, t) && this.list.toggle(e) : this.list.toggle(e), this) : ("undefined" !== typeof t ? t ? this.add(e) : this.remove(e) : this.has(e) ? this.remove(e) : this.add(e), this) }, a.prototype.array = function () { var e = this.el.getAttribute("class") || "", t = e.replace(/^\s+|\s+$/g, ""), n = t.split(i); return "" === n[0] && n.shift(), n }, a.prototype.has = a.prototype.contains = function (e) { return this.list ? this.list.contains(e) : !!~r(this.array(), e) } }, "3c5d": function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("50c4"), o = n("182d"), a = n("7b0b"), s = n("d039"), c = r.aTypedArray, l = r.exportTypedArrayMethod, u = s((function () { new Int8Array(1).set({}) })); l("set", (function (e) { c(this); var t = o(arguments.length > 1 ? arguments[1] : void 0, 1), n = this.length, r = a(e), s = i(r.length), l = 0; if (s + t > n) throw RangeError("Wrong length"); while (l < s) this[t + l] = r[l++] }), u) }, "3ca3": function (e, t, n) { "use strict"; var r = n("6547").charAt, i = n("577e"), o = n("69f3"), a = n("7dd0"), s = "String Iterator", c = o.set, l = o.getterFor(s); a(String, "String", (function (e) { c(this, { type: s, string: i(e), index: 0 }) }), (function () { var e, t = l(this), n = t.string, i = t.index; return i >= n.length ? { value: void 0, done: !0 } : (e = r(n, i), t.index += e.length, { value: e, done: !1 }) })) }, "3ccc": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return r })); var r = function () { function e() { } return e.write = function (t) { return "" + t + e.RecordSeparator }, e.parse = function (t) { if (t[t.length - 1] !== e.RecordSeparator) throw new Error("Message is incomplete."); var n = t.split(e.RecordSeparator); return n.pop(), n }, e.RecordSeparatorCode = 30, e.RecordSeparator = String.fromCharCode(e.RecordSeparatorCode), e }() }, "3de4": function (e, t, n) { }, "3e8a": function (e, t, n) { }, "3ea3": function (e, t, n) { var r = n("23e7"), i = n("f748"), o = Math.abs, a = Math.pow; r({ target: "Math", stat: !0 }, { cbrt: function (e) { return i(e = +e) * a(o(e), 1 / 3) } }) }, "3eea": function (e, t, n) { var r = n("7948"), i = n("3818"), o = n("4bb5"), a = n("e2e4"), s = n("8eeb"), c = n("e0e7"), l = n("c6cf"), u = n("1bac"), h = 1, f = 2, d = 4, p = l((function (e, t) { var n = {}; if (null == e) return n; var l = !1; t = r(t, (function (t) { return t = a(t, e), l || (l = t.length > 1), t })), s(e, u(e), n), l && (n = i(n, h | f | d, c)); var p = t.length; while (p--) o(n, t[p]); return n })); e.exports = p }, "3f3a": function (e, t, n) { var r = n("23e7"), i = n("83ab"), o = n("825a"), a = n("a04b"), s = n("9bf2"), c = n("d039"), l = c((function () { Reflect.defineProperty(s.f({}, 1, { value: 1 }), 1, { value: 2 }) })); r({ target: "Reflect", stat: !0, forced: l, sham: !i }, { defineProperty: function (e, t, n) { o(e); var r = a(t); o(n); try { return s.f(e, r, n), !0 } catch (i) { return !1 } } }) }, "3f50": function (e, t, n) { "use strict"; function r() { var e = [].slice.call(arguments, 0); return 1 === e.length ? e[0] : function () { for (var t = 0; t < e.length; t++)e[t] && e[t].apply && e[t].apply(this, arguments) } } n.d(t, "a", (function () { return r })) }, "3f6b": function (e, t, n) { e.exports = { default: n("b9c7"), __esModule: !0 } }, "3f8c": function (e, t) { e.exports = {} }, "3fcc": function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("b727").map, o = n("b6b7"), a = r.aTypedArray, s = r.exportTypedArrayMethod; s("map", (function (e) { return i(a(this), e, arguments.length > 1 ? arguments[1] : void 0, (function (e, t) { return new (o(e))(t) })) })) }, 4039: function (e, t, n) { "use strict"; function r() { return !1 } function i() { return !0 } function o() { this.timeStamp = Date.now(), this.target = void 0, this.currentTarget = void 0 } Object.defineProperty(t, "__esModule", { value: !0 }), o.prototype = { isEventObject: 1, constructor: o, isDefaultPrevented: r, isPropagationStopped: r, isImmediatePropagationStopped: r, preventDefault: function () { this.isDefaultPrevented = i }, stopPropagation: function () { this.isPropagationStopped = i }, stopImmediatePropagation: function () { this.isImmediatePropagationStopped = i, this.stopPropagation() }, halt: function (e) { e ? this.stopImmediatePropagation() : this.stopPropagation(), this.preventDefault() } }, t["default"] = o, e.exports = t["default"] }, 4057: function (e, t, n) { var r = n("23e7"), i = Math.hypot, o = Math.abs, a = Math.sqrt, s = !!i && i(1 / 0, NaN) !== 1 / 0; r({ target: "Math", stat: !0, forced: s }, { hypot: function (e, t) { var n, r, i = 0, s = 0, c = arguments.length, l = 0; while (s < c) n = o(arguments[s++]), l < n ? (r = l / n, i = i * r * r + 1, l = n) : n > 0 ? (r = n / l, i += r * r) : i += n; return l === 1 / 0 ? 1 / 0 : l * a(i) } }) }, 4069: function (e, t, n) { var r = n("44d2"); r("flat") }, "408a": function (e, t, n) { var r = n("c6b6"); e.exports = function (e) { if ("number" != typeof e && "Number" != r(e)) throw TypeError("Incorrect invocation"); return +e } }, "408c": function (e, t, n) { var r = n("2b3e"), i = function () { return r.Date.now() }; e.exports = i }, "40cb": function (e, t, n) { }, "40d9": function (e, t, n) { var r = n("23e7"), i = Math.floor, o = Math.log, a = Math.LOG2E; r({ target: "Math", stat: !0 }, { clz32: function (e) { return (e >>>= 0) ? 31 - i(o(e + .5) * a) : 32 } }) }, "411c": function (module, exports, __webpack_require__) {
+        (function (e, t) { module.exports = t() })("undefined" !== typeof self && self, (function () {
+            return function (e) { var t = {}; function n(r) { if (t[r]) return t[r].exports; var i = t[r] = { i: r, l: !1, exports: {} }; return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports } return n.m = e, n.c = t, n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { configurable: !1, enumerable: !0, get: r }) }, n.n = function (e) { var t = e && e.__esModule ? function () { return e["default"] } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = 9) }([function (e, t) { var n = { extend: function () { var e, t, r, i, o, a = arguments[0] || {}, s = 1, c = arguments.length; for (1 === c && (a = this, s = 0); s < c; s++)if (e = arguments[s], e) for (t in e) r = a[t], i = e[t], a !== i && void 0 !== i && (n.isArray(i) || n.isObject(i) ? (n.isArray(i) && (o = r && n.isArray(r) ? r : []), n.isObject(i) && (o = r && n.isObject(r) ? r : {}), a[t] = n.extend(o, i)) : a[t] = i); return a }, each: function (e, t, n) { var r, i; if ("number" === this.type(e)) for (r = 0; r < e; r++)t(r, r); else if (e.length === +e.length) { for (r = 0; r < e.length; r++)if (!1 === t.call(n, e[r], r, e)) break } else for (i in e) if (!1 === t.call(n, e[i], i, e)) break }, type: function (e) { return null === e || void 0 === e ? String(e) : Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1].toLowerCase() } }; n.each("String Object Array RegExp Function".split(" "), (function (e) { n["is" + e] = function (t) { return n.type(t) === e.toLowerCase() } })), n.isObjectOrArray = function (e) { return n.isObject(e) || n.isArray(e) }, n.isNumeric = function (e) { return !isNaN(parseFloat(e)) && isFinite(e) }, n.keys = function (e) { var t = []; for (var n in e) e.hasOwnProperty(n) && t.push(n); return t }, n.values = function (e) { var t = []; for (var n in e) e.hasOwnProperty(n) && t.push(e[n]); return t }, n.heredoc = function (e) { return e.toString().replace(/^[^\/]+\/\*!?/, "").replace(/\*\/[^\/]+$/, "").replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, "") }, n.noop = function () { }, e.exports = n }, function (e, t) { e.exports = { GUID: 1, RE_KEY: /(.+)\|(?:\+(\d+)|([\+\-]?\d+-?[\+\-]?\d*)?(?:\.(\d+-?\d*))?)/, RE_RANGE: /([\+\-]?\d+)-?([\+\-]?\d+)?/, RE_PLACEHOLDER: /\\*@([^@#%&()\?\s]+)(?:\((.*?)\))?/g } }, function (e, t, n) { var r = n(0), i = { extend: r.extend }; i.extend(n(4)), i.extend(n(11)), i.extend(n(12)), i.extend(n(14)), i.extend(n(17)), i.extend(n(18)), i.extend(n(19)), i.extend(n(20)), i.extend(n(5)), i.extend(n(21)), e.exports = i }, function (e, t, n) { var r = n(1), i = n(2); e.exports = { parse: function (e) { e = void 0 == e ? "" : e + ""; var t = (e || "").match(r.RE_KEY), n = t && t[3] && t[3].match(r.RE_RANGE), o = n && n[1] && parseInt(n[1], 10), a = n && n[2] && parseInt(n[2], 10), s = n ? n[2] ? i.integer(o, a) : parseInt(n[1], 10) : void 0, c = t && t[4] && t[4].match(r.RE_RANGE), l = c && c[1] && parseInt(c[1], 10), u = c && c[2] && parseInt(c[2], 10), h = c ? !c[2] && parseInt(c[1], 10) || i.integer(l, u) : void 0, f = { parameters: t, range: n, min: o, max: a, count: s, decimal: c, dmin: l, dmax: u, dcount: h }; for (var d in f) if (void 0 != f[d]) return f; return {} } } }, function (e, t) { e.exports = { boolean: function (e, t, n) { return void 0 !== n ? (e = "undefined" === typeof e || isNaN(e) ? 1 : parseInt(e, 10), t = "undefined" === typeof t || isNaN(t) ? 1 : parseInt(t, 10), Math.random() > 1 / (e + t) * e ? !n : n) : Math.random() >= .5 }, bool: function (e, t, n) { return this.boolean(e, t, n) }, natural: function (e, t) { return e = "undefined" !== typeof e ? parseInt(e, 10) : 0, t = "undefined" !== typeof t ? parseInt(t, 10) : 9007199254740992, Math.round(Math.random() * (t - e)) + e }, integer: function (e, t) { return e = "undefined" !== typeof e ? parseInt(e, 10) : -9007199254740992, t = "undefined" !== typeof t ? parseInt(t, 10) : 9007199254740992, Math.round(Math.random() * (t - e)) + e }, int: function (e, t) { return this.integer(e, t) }, float: function (e, t, n, r) { n = void 0 === n ? 0 : n, n = Math.max(Math.min(n, 17), 0), r = void 0 === r ? 17 : r, r = Math.max(Math.min(r, 17), 0); for (var i = this.integer(e, t) + ".", o = 0, a = this.natural(n, r); o < a; o++)i += o < a - 1 ? this.character("number") : this.character("123456789"); return parseFloat(i, 10) }, character: function (e) { var t = { lower: "abcdefghijklmnopqrstuvwxyz", upper: "ABCDEFGHIJKLMNOPQRSTUVWXYZ", number: "0123456789", symbol: "!@#$%^&*()[]" }; return t.alpha = t.lower + t.upper, t["undefined"] = t.lower + t.upper + t.number + t.symbol, e = t[("" + e).toLowerCase()] || e, e.charAt(this.natural(0, e.length - 1)) }, char: function (e) { return this.character(e) }, string: function (e, t, n) { var r; switch (arguments.length) { case 0: r = this.natural(3, 7); break; case 1: r = e, e = void 0; break; case 2: "string" === typeof arguments[0] ? r = t : (r = this.natural(e, t), e = void 0); break; case 3: r = this.natural(t, n); break }for (var i = "", o = 0; o < r; o++)i += this.character(e); return i }, str: function () { return this.string.apply(this, arguments) }, range: function (e, t, n) { arguments.length <= 1 && (t = e || 0, e = 0), n = arguments[2] || 1, e = +e, t = +t, n = +n; var r = Math.max(Math.ceil((t - e) / n), 0), i = 0, o = new Array(r); while (i < r) o[i++] = e, e += n; return o } } }, function (e, t, n) { var r = n(0); e.exports = { capitalize: function (e) { return (e + "").charAt(0).toUpperCase() + (e + "").substr(1) }, upper: function (e) { return (e + "").toUpperCase() }, lower: function (e) { return (e + "").toLowerCase() }, pick: function (e, t, n) { return r.isArray(e) ? (void 0 === t && (t = 1), void 0 === n && (n = t)) : (e = [].slice.call(arguments), t = 1, n = 1), 1 === t && 1 === n ? e[this.natural(0, e.length - 1)] : this.shuffle(e, t, n) }, shuffle: function (e, t, n) { e = e || []; for (var r = e.slice(0), i = [], o = 0, a = r.length, s = 0; s < a; s++)o = this.natural(0, r.length - 1), i.push(r[o]), r.splice(o, 1); switch (arguments.length) { case 0: case 1: return i; case 2: n = t; case 3: return t = parseInt(t, 10), n = parseInt(n, 10), i.slice(0, this.natural(t, n)) } }, order: function e(t) { e.cache = e.cache || {}, arguments.length > 1 && (t = [].slice.call(arguments, 0)); var n = e.options, r = n.context.templatePath.join("."), i = e.cache[r] = e.cache[r] || { index: 0, array: t }; return i.array[i.index++ % i.array.length] } } }, function (e, t) { var n = { 11e4: "鍖椾含", 110100: "鍖椾含甯�", 110101: "涓滃煄鍖�", 110102: "瑗垮煄鍖�", 110105: "鏈濋槼鍖�", 110106: "涓板彴鍖�", 110107: "鐭虫櫙灞卞尯", 110108: "娴锋穩鍖�", 110109: "闂ㄥご娌熷尯", 110111: "鎴垮北鍖�", 110112: "閫氬窞鍖�", 110113: "椤轰箟鍖�", 110114: "鏄屽钩鍖�", 110115: "澶у叴鍖�", 110116: "鎬�鏌斿尯", 110117: "骞宠胺鍖�", 110228: "瀵嗕簯鍘�", 110229: "寤跺簡鍘�", 110230: "鍏跺畠鍖�", 12e4: "澶╂触", 120100: "澶╂触甯�", 120101: "鍜屽钩鍖�", 120102: "娌充笢鍖�", 120103: "娌宠タ鍖�", 120104: "鍗楀紑鍖�", 120105: "娌冲寳鍖�", 120106: "绾㈡ˉ鍖�", 120110: "涓滀附鍖�", 120111: "瑗块潚鍖�", 120112: "娲ュ崡鍖�", 120113: "鍖楄景鍖�", 120114: "姝︽竻鍖�", 120115: "瀹濆澔鍖�", 120116: "婊ㄦ捣鏂板尯", 120221: "瀹佹渤鍘�", 120223: "闈欐捣鍘�", 120225: "钃熷幙", 120226: "鍏跺畠鍖�", 13e4: "娌冲寳鐪�", 130100: "鐭冲搴勫競", 130102: "闀垮畨鍖�", 130103: "妗ヤ笢鍖�", 130104: "妗ヨタ鍖�", 130105: "鏂板崕鍖�", 130107: "浜曢檳鐭垮尯", 130108: "瑁曞崕鍖�", 130121: "浜曢檳鍘�", 130123: "姝e畾鍘�", 130124: "鏍惧煄鍘�", 130125: "琛屽攼鍘�", 130126: "鐏靛鍘�", 130127: "楂橀倯鍘�", 130128: "娣辨辰鍘�", 130129: "璧炵殗鍘�", 130130: "鏃犳瀬鍘�", 130131: "骞冲北鍘�", 130132: "鍏冩皬鍘�", 130133: "璧靛幙", 130181: "杈涢泦甯�", 130182: "钘佸煄甯�", 130183: "鏅嬪窞甯�", 130184: "鏂颁箰甯�", 130185: "楣挎硥甯�", 130186: "鍏跺畠鍖�", 130200: "鍞愬北甯�", 130202: "璺崡鍖�", 130203: "璺寳鍖�", 130204: "鍙ゅ喍鍖�", 130205: "寮�骞冲尯", 130207: "涓板崡鍖�", 130208: "涓版鼎鍖�", 130223: "婊﹀幙", 130224: "婊﹀崡鍘�", 130225: "涔愪涵鍘�", 130227: "杩佽タ鍘�", 130229: "鐜夌敯鍘�", 130230: "鏇瑰鐢稿尯", 130281: "閬靛寲甯�", 130283: "杩佸畨甯�", 130284: "鍏跺畠鍖�", 130300: "绉︾殗宀涘競", 130302: "娴锋腐鍖�", 130303: "灞辨捣鍏冲尯", 130304: "鍖楁埓娌冲尯", 130321: "闈掗緳婊℃棌鑷不鍘�", 130322: "鏄岄粠鍘�", 130323: "鎶氬畞鍘�", 130324: "鍗㈤緳鍘�", 130398: "鍏跺畠鍖�", 130400: "閭兏甯�", 130402: "閭北鍖�", 130403: "涓涘彴鍖�", 130404: "澶嶅叴鍖�", 130406: "宄板嘲鐭垮尯", 130421: "閭兏鍘�", 130423: "涓存汲鍘�", 130424: "鎴愬畨鍘�", 130425: "澶у悕鍘�", 130426: "娑夊幙", 130427: "纾佸幙", 130428: "鑲ヤ埂鍘�", 130429: "姘稿勾鍘�", 130430: "閭卞幙", 130431: "楦℃辰鍘�", 130432: "骞垮钩鍘�", 130433: "棣嗛櫠鍘�", 130434: "榄忓幙", 130435: "鏇插懆鍘�", 130481: "姝﹀畨甯�", 130482: "鍏跺畠鍖�", 130500: "閭㈠彴甯�", 130502: "妗ヤ笢鍖�", 130503: "妗ヨタ鍖�", 130521: "閭㈠彴鍘�", 130522: "涓村煄鍘�", 130523: "鍐呬笜鍘�", 130524: "鏌忎埂鍘�", 130525: "闅嗗哀鍘�", 130526: "浠诲幙", 130527: "鍗楀拰鍘�", 130528: "瀹佹檵鍘�", 130529: "宸ㄩ箍鍘�", 130530: "鏂版渤鍘�", 130531: "骞垮畻鍘�", 130532: "骞充埂鍘�", 130533: "濞佸幙", 130534: "娓呮渤鍘�", 130535: "涓磋タ鍘�", 130581: "鍗楀甯�", 130582: "娌欐渤甯�", 130583: "鍏跺畠鍖�", 130600: "淇濆畾甯�", 130602: "鏂板競鍖�", 130603: "鍖楀競鍖�", 130604: "鍗楀競鍖�", 130621: "婊″煄鍘�", 130622: "娓呰嫅鍘�", 130623: "娑炴按鍘�", 130624: "闃滃钩鍘�", 130625: "寰愭按鍘�", 130626: "瀹氬叴鍘�", 130627: "鍞愬幙", 130628: "楂橀槼鍘�", 130629: "瀹瑰煄鍘�", 130630: "娑炴簮鍘�", 130631: "鏈涢兘鍘�", 130632: "瀹夋柊鍘�", 130633: "鏄撳幙", 130634: "鏇查槼鍘�", 130635: "锠″幙", 130636: "椤哄钩鍘�", 130637: "鍗氶噹鍘�", 130638: "闆勫幙", 130681: "娑垮窞甯�", 130682: "瀹氬窞甯�", 130683: "瀹夊浗甯�", 130684: "楂樼搴楀競", 130699: "鍏跺畠鍖�", 130700: "寮犲鍙e競", 130702: "妗ヤ笢鍖�", 130703: "妗ヨタ鍖�", 130705: "瀹e寲鍖�", 130706: "涓嬭姳鍥尯", 130721: "瀹e寲鍘�", 130722: "寮犲寳鍘�", 130723: "搴蜂繚鍘�", 130724: "娌芥簮鍘�", 130725: "灏氫箟鍘�", 130726: "钄氬幙", 130727: "闃冲師鍘�", 130728: "鎬�瀹夊幙", 130729: "涓囧叏鍘�", 130730: "鎬�鏉ュ幙", 130731: "娑块箍鍘�", 130732: "璧ゅ煄鍘�", 130733: "宕囩ぜ鍘�", 130734: "鍏跺畠鍖�", 130800: "鎵垮痉甯�", 130802: "鍙屾ˉ鍖�", 130803: "鍙屾沪鍖�", 130804: "楣版墜钀ュ瓙鐭垮尯", 130821: "鎵垮痉鍘�", 130822: "鍏撮殕鍘�", 130823: "骞虫硥鍘�", 130824: "婊﹀钩鍘�", 130825: "闅嗗寲鍘�", 130826: "涓板畞婊℃棌鑷不鍘�", 130827: "瀹藉煄婊℃棌鑷不鍘�", 130828: "鍥村満婊℃棌钂欏彜鏃忚嚜娌诲幙", 130829: "鍏跺畠鍖�", 130900: "娌у窞甯�", 130902: "鏂板崕鍖�", 130903: "杩愭渤鍖�", 130921: "娌у幙", 130922: "闈掑幙", 130923: "涓滃厜鍘�", 130924: "娴峰叴鍘�", 130925: "鐩愬北鍘�", 130926: "鑲冨畞鍘�", 130927: "鍗楃毊鍘�", 130928: "鍚存ˉ鍘�", 130929: "鐚幙", 130930: "瀛熸潙鍥炴棌鑷不鍘�", 130981: "娉婂ご甯�", 130982: "浠讳笜甯�", 130983: "榛勯獏甯�", 130984: "娌抽棿甯�", 130985: "鍏跺畠鍖�", 131e3: "寤婂潑甯�", 131002: "瀹夋鍖�", 131003: "骞块槼鍖�", 131022: "鍥哄畨鍘�", 131023: "姘告竻鍘�", 131024: "棣欐渤鍘�", 131025: "澶у煄鍘�", 131026: "鏂囧畨鍘�", 131028: "澶у巶鍥炴棌鑷不鍘�", 131081: "闇稿窞甯�", 131082: "涓夋渤甯�", 131083: "鍏跺畠鍖�", 131100: "琛℃按甯�", 131102: "妗冨煄鍖�", 131121: "鏋e己鍘�", 131122: "姝﹂倯鍘�", 131123: "姝﹀己鍘�", 131124: "楗堕槼鍘�", 131125: "瀹夊钩鍘�", 131126: "鏁呭煄鍘�", 131127: "鏅幙", 131128: "闃滃煄鍘�", 131181: "鍐�宸炲競", 131182: "娣卞窞甯�", 131183: "鍏跺畠鍖�", 14e4: "灞辫タ鐪�", 140100: "澶師甯�", 140105: "灏忓簵鍖�", 140106: "杩庢辰鍖�", 140107: "鏉忚姳宀尯", 140108: "灏栬崏鍧尯", 140109: "涓囨煆鏋楀尯", 140110: "鏅嬫簮鍖�", 140121: "娓呭緪鍘�", 140122: "闃虫洸鍘�", 140123: "濞勭儲鍘�", 140181: "鍙や氦甯�", 140182: "鍏跺畠鍖�", 140200: "澶у悓甯�", 140202: "鍩庡尯", 140203: "鐭垮尯", 140211: "鍗楅儕鍖�", 140212: "鏂拌崳鍖�", 140221: "闃抽珮鍘�", 140222: "澶╅晣鍘�", 140223: "骞跨伒鍘�", 140224: "鐏典笜鍘�", 140225: "娴戞簮鍘�", 140226: "宸︿簯鍘�", 140227: "澶у悓鍘�", 140228: "鍏跺畠鍖�", 140300: "闃虫硥甯�", 140302: "鍩庡尯", 140303: "鐭垮尯", 140311: "閮婂尯", 140321: "骞冲畾鍘�", 140322: "鐩傚幙", 140323: "鍏跺畠鍖�", 140400: "闀挎不甯�", 140421: "闀挎不鍘�", 140423: "瑗勫灒鍘�", 140424: "灞暀鍘�", 140425: "骞抽『鍘�", 140426: "榛庡煄鍘�", 140427: "澹跺叧鍘�", 140428: "闀垮瓙鍘�", 140429: "姝︿埂鍘�", 140430: "娌佸幙", 140431: "娌佹簮鍘�", 140481: "娼炲煄甯�", 140482: "鍩庡尯", 140483: "閮婂尯", 140485: "鍏跺畠鍖�", 140500: "鏅嬪煄甯�", 140502: "鍩庡尯", 140521: "娌佹按鍘�", 140522: "闃冲煄鍘�", 140524: "闄靛窛鍘�", 140525: "娉藉窞鍘�", 140581: "楂樺钩甯�", 140582: "鍏跺畠鍖�", 140600: "鏈斿窞甯�", 140602: "鏈斿煄鍖�", 140603: "骞抽瞾鍖�", 140621: "灞遍槾鍘�", 140622: "搴斿幙", 140623: "鍙崇帀鍘�", 140624: "鎬�浠佸幙", 140625: "鍏跺畠鍖�", 140700: "鏅嬩腑甯�", 140702: "姒嗘鍖�", 140721: "姒嗙ぞ鍘�", 140722: "宸︽潈鍘�", 140723: "鍜岄『鍘�", 140724: "鏄旈槼鍘�", 140725: "瀵块槼鍘�", 140726: "澶胺鍘�", 140727: "绁佸幙", 140728: "骞抽仴鍘�", 140729: "鐏电煶鍘�", 140781: "浠嬩紤甯�", 140782: "鍏跺畠鍖�", 140800: "杩愬煄甯�", 140802: "鐩愭箹鍖�", 140821: "涓寸寳鍘�", 140822: "涓囪崳鍘�", 140823: "闂诲枩鍘�", 140824: "绋峰北鍘�", 140825: "鏂扮粵鍘�", 140826: "缁涘幙", 140827: "鍨f洸鍘�", 140828: "澶忓幙", 140829: "骞抽檰鍘�", 140830: "鑺煄鍘�", 140881: "姘告祹甯�", 140882: "娌虫触甯�", 140883: "鍏跺畠鍖�", 140900: "蹇诲窞甯�", 140902: "蹇诲簻鍖�", 140921: "瀹氳鍘�", 140922: "浜斿彴鍘�", 140923: "浠e幙", 140924: "绻佸硻鍘�", 140925: "瀹佹鍘�", 140926: "闈欎箰鍘�", 140927: "绁炴睜鍘�", 140928: "浜斿鍘�", 140929: "宀㈠矚鍘�", 140930: "娌虫洸鍘�", 140931: "淇濆痉鍘�", 140932: "鍋忓叧鍘�", 140981: "鍘熷钩甯�", 140982: "鍏跺畠鍖�", 141e3: "涓存本甯�", 141002: "灏ч兘鍖�", 141021: "鏇叉矁鍘�", 141022: "缈煎煄鍘�", 141023: "瑗勬本鍘�", 141024: "娲礊鍘�", 141025: "鍙ゅ幙", 141026: "瀹夋辰鍘�", 141027: "娴北鍘�", 141028: "鍚夊幙", 141029: "涔″畞鍘�", 141030: "澶у畞鍘�", 141031: "闅板幙", 141032: "姘稿拰鍘�", 141033: "钂插幙", 141034: "姹捐タ鍘�", 141081: "渚┈甯�", 141082: "闇嶅窞甯�", 141083: "鍏跺畠鍖�", 141100: "鍚曟甯�", 141102: "绂荤煶鍖�", 141121: "鏂囨按鍘�", 141122: "浜ゅ煄鍘�", 141123: "鍏村幙", 141124: "涓村幙", 141125: "鏌虫灄鍘�", 141126: "鐭虫ゼ鍘�", 141127: "宀氬幙", 141128: "鏂瑰北鍘�", 141129: "涓槼鍘�", 141130: "浜ゅ彛鍘�", 141181: "瀛濅箟甯�", 141182: "姹鹃槼甯�", 141183: "鍏跺畠鍖�", 15e4: "鍐呰挋鍙よ嚜娌诲尯", 150100: "鍛煎拰娴╃壒甯�", 150102: "鏂板煄鍖�", 150103: "鍥炴皯鍖�", 150104: "鐜夋硥鍖�", 150105: "璧涚綍鍖�", 150121: "鍦熼粯鐗瑰乏鏃�", 150122: "鎵樺厠鎵樺幙", 150123: "鍜屾灄鏍煎皵鍘�", 150124: "娓呮按娌冲幙", 150125: "姝﹀窛鍘�", 150126: "鍏跺畠鍖�", 150200: "鍖呭ご甯�", 150202: "涓滄渤鍖�", 150203: "鏄嗛兘浠戝尯", 150204: "闈掑北鍖�", 150205: "鐭虫嫄鍖�", 150206: "鐧戒簯閯傚崥鐭垮尯", 150207: "涔濆師鍖�", 150221: "鍦熼粯鐗瑰彸鏃�", 150222: "鍥洪槼鍘�", 150223: "杈惧皵缃曡寕鏄庡畨鑱斿悎鏃�", 150224: "鍏跺畠鍖�", 150300: "涔屾捣甯�", 150302: "娴峰媰婀惧尯", 150303: "娴峰崡鍖�", 150304: "涔岃揪鍖�", 150305: "鍏跺畠鍖�", 150400: "璧ゅ嘲甯�", 150402: "绾㈠北鍖�", 150403: "鍏冨疂灞卞尯", 150404: "鏉惧北鍖�", 150421: "闃块瞾绉戝皵娌佹棗", 150422: "宸存灄宸︽棗", 150423: "宸存灄鍙虫棗", 150424: "鏋楄タ鍘�", 150425: "鍏嬩粈鍏嬭吘鏃�", 150426: "缈佺墰鐗规棗", 150428: "鍠�鍠囨瞾鏃�", 150429: "瀹佸煄鍘�", 150430: "鏁栨眽鏃�", 150431: "鍏跺畠鍖�", 150500: "閫氳窘甯�", 150502: "绉戝皵娌佸尯", 150521: "绉戝皵娌佸乏缈间腑鏃�", 150522: "绉戝皵娌佸乏缈煎悗鏃�", 150523: "寮�椴佸幙", 150524: "搴撲鸡鏃�", 150525: "濂堟浖鏃�", 150526: "鎵庨瞾鐗规棗", 150581: "闇嶆灄閮嫆甯�", 150582: "鍏跺畠鍖�", 150600: "閯傚皵澶氭柉甯�", 150602: "涓滆儨鍖�", 150621: "杈炬媺鐗规棗", 150622: "鍑嗘牸灏旀棗", 150623: "閯傛墭鍏嬪墠鏃�", 150624: "閯傛墭鍏嬫棗", 150625: "鏉敠鏃�", 150626: "涔屽鏃�", 150627: "浼婇噾闇嶆礇鏃�", 150628: "鍏跺畠鍖�", 150700: "鍛间鸡璐濆皵甯�", 150702: "娴锋媺灏斿尯", 150703: "鎵庤祲璇哄皵鍖�", 150721: "闃胯崳鏃�", 150722: "鑾姏杈剧摝杈炬枴灏旀棌鑷不鏃�", 150723: "閯備鸡鏄ヨ嚜娌绘棗", 150724: "閯傛俯鍏嬫棌鑷不鏃�", 150725: "闄堝反灏旇檸鏃�", 150726: "鏂板反灏旇檸宸︽棗", 150727: "鏂板反灏旇檸鍙虫棗", 150781: "婊℃床閲屽競", 150782: "鐗欏厠鐭冲競", 150783: "鎵庡叞灞競", 150784: "棰濆皵鍙ょ撼甯�", 150785: "鏍规渤甯�", 150786: "鍏跺畠鍖�", 150800: "宸村溅娣栧皵甯�", 150802: "涓存渤鍖�", 150821: "浜斿師鍘�", 150822: "纾村彛鍘�", 150823: "涔屾媺鐗瑰墠鏃�", 150824: "涔屾媺鐗逛腑鏃�", 150825: "涔屾媺鐗瑰悗鏃�", 150826: "鏉敠鍚庢棗", 150827: "鍏跺畠鍖�", 150900: "涔屽叞瀵熷竷甯�", 150902: "闆嗗畞鍖�", 150921: "鍗撹祫鍘�", 150922: "鍖栧痉鍘�", 150923: "鍟嗛兘鍘�", 150924: "鍏村拰鍘�", 150925: "鍑夊煄鍘�", 150926: "瀵熷搱灏斿彸缈煎墠鏃�", 150927: "瀵熷搱灏斿彸缈间腑鏃�", 150928: "瀵熷搱灏斿彸缈煎悗鏃�", 150929: "鍥涘瓙鐜嬫棗", 150981: "涓伴晣甯�", 150982: "鍏跺畠鍖�", 152200: "鍏村畨鐩�", 152201: "涔屽叞娴╃壒甯�", 152202: "闃垮皵灞卞競", 152221: "绉戝皵娌佸彸缈煎墠鏃�", 152222: "绉戝皵娌佸彸缈间腑鏃�", 152223: "鎵庤祲鐗规棗", 152224: "绐佹硥鍘�", 152225: "鍏跺畠鍖�", 152500: "閿℃灄閮嫆鐩�", 152501: "浜岃繛娴╃壒甯�", 152502: "閿℃灄娴╃壒甯�", 152522: "闃垮反鍢庢棗", 152523: "鑻忓凹鐗瑰乏鏃�", 152524: "鑻忓凹鐗瑰彸鏃�", 152525: "涓滀箤鐝犵﹩娌佹棗", 152526: "瑗夸箤鐝犵﹩娌佹棗", 152527: "澶粏瀵烘棗", 152528: "闀堕粍鏃�", 152529: "姝i暥鐧芥棗", 152530: "姝h摑鏃�", 152531: "澶氫鸡鍘�", 152532: "鍏跺畠鍖�", 152900: "闃挎媺鍠勭洘", 152921: "闃挎媺鍠勫乏鏃�", 152922: "闃挎媺鍠勫彸鏃�", 152923: "棰濇祹绾虫棗", 152924: "鍏跺畠鍖�", 21e4: "杈藉畞鐪�", 210100: "娌堥槼甯�", 210102: "鍜屽钩鍖�", 210103: "娌堟渤鍖�", 210104: "澶т笢鍖�", 210105: "鐨囧鍖�", 210106: "閾佽タ鍖�", 210111: "鑻忓灞尯", 210112: "涓滈櫟鍖�", 210113: "鏂板煄瀛愬尯", 210114: "浜庢椽鍖�", 210122: "杈戒腑鍘�", 210123: "搴峰钩鍘�", 210124: "娉曞簱鍘�", 210181: "鏂版皯甯�", 210184: "娌堝寳鏂板尯", 210185: "鍏跺畠鍖�", 210200: "澶ц繛甯�", 210202: "涓北鍖�", 210203: "瑗垮矖鍖�", 210204: "娌欐渤鍙e尯", 210211: "鐢樹簳瀛愬尯", 210212: "鏃呴『鍙e尯", 210213: "閲戝窞鍖�", 210224: "闀挎捣鍘�", 210281: "鐡︽埧搴楀競", 210282: "鏅叞搴楀競", 210283: "搴勬渤甯�", 210298: "鍏跺畠鍖�", 210300: "闉嶅北甯�", 210302: "閾佷笢鍖�", 210303: "閾佽タ鍖�", 210304: "绔嬪北鍖�", 210311: "鍗冨北鍖�", 210321: "鍙板畨鍘�", 210323: "宀博婊℃棌鑷不鍘�", 210381: "娴峰煄甯�", 210382: "鍏跺畠鍖�", 210400: "鎶氶『甯�", 210402: "鏂版姎鍖�", 210403: "涓滄床鍖�", 210404: "鏈涜姳鍖�", 210411: "椤哄煄鍖�", 210421: "鎶氶『鍘�", 210422: "鏂板婊℃棌鑷不鍘�", 210423: "娓呭師婊℃棌鑷不鍘�", 210424: "鍏跺畠鍖�", 210500: "鏈邯甯�", 210502: "骞冲北鍖�", 210503: "婧箹鍖�", 210504: "鏄庡北鍖�", 210505: "鍗楄姮鍖�", 210521: "鏈邯婊℃棌鑷不鍘�", 210522: "妗撲粊婊℃棌鑷不鍘�", 210523: "鍏跺畠鍖�", 210600: "涓逛笢甯�", 210602: "鍏冨疂鍖�", 210603: "鎸叴鍖�", 210604: "鎸畨鍖�", 210624: "瀹界敻婊℃棌鑷不鍘�", 210681: "涓滄腐甯�", 210682: "鍑ゅ煄甯�", 210683: "鍏跺畠鍖�", 210700: "閿﹀窞甯�", 210702: "鍙ゅ鍖�", 210703: "鍑屾渤鍖�", 210711: "澶拰鍖�", 210726: "榛戝北鍘�", 210727: "涔夊幙", 210781: "鍑屾捣甯�", 210782: "鍖楅晣甯�", 210783: "鍏跺畠鍖�", 210800: "钀ュ彛甯�", 210802: "绔欏墠鍖�", 210803: "瑗垮競鍖�", 210804: "椴呴奔鍦堝尯", 210811: "鑰佽竟鍖�", 210881: "鐩栧窞甯�", 210882: "澶х煶妗ュ競", 210883: "鍏跺畠鍖�", 210900: "闃滄柊甯�", 210902: "娴峰窞鍖�", 210903: "鏂伴偙鍖�", 210904: "澶钩鍖�", 210905: "娓呮渤闂ㄥ尯", 210911: "缁嗘渤鍖�", 210921: "闃滄柊钂欏彜鏃忚嚜娌诲幙", 210922: "褰版鍘�", 210923: "鍏跺畠鍖�", 211e3: "杈介槼甯�", 211002: "鐧藉鍖�", 211003: "鏂囧湥鍖�", 211004: "瀹忎紵鍖�", 211005: "寮撻暱宀尯", 211011: "澶瓙娌冲尯", 211021: "杈介槼鍘�", 211081: "鐏甯�", 211082: "鍏跺畠鍖�", 211100: "鐩橀敠甯�", 211102: "鍙屽彴瀛愬尯", 211103: "鍏撮殕鍙板尯", 211121: "澶ф醇鍘�", 211122: "鐩樺北鍘�", 211123: "鍏跺畠鍖�", 211200: "閾佸箔甯�", 211202: "閾跺窞鍖�", 211204: "娓呮渤鍖�", 211221: "閾佸箔鍘�", 211223: "瑗夸赴鍘�", 211224: "鏄屽浘鍘�", 211281: "璋冨叺灞卞競", 211282: "寮�鍘熷競", 211283: "鍏跺畠鍖�", 211300: "鏈濋槼甯�", 211302: "鍙屽鍖�", 211303: "榫欏煄鍖�", 211321: "鏈濋槼鍘�", 211322: "寤哄钩鍘�", 211324: "鍠�鍠囨瞾宸︾考钂欏彜鏃忚嚜娌诲幙", 211381: "鍖楃エ甯�", 211382: "鍑屾簮甯�", 211383: "鍏跺畠鍖�", 211400: "钁姦宀涘競", 211402: "杩炲北鍖�", 211403: "榫欐腐鍖�", 211404: "鍗楃エ鍖�", 211421: "缁ヤ腑鍘�", 211422: "寤烘槍鍘�", 211481: "鍏村煄甯�", 211482: "鍏跺畠鍖�", 22e4: "鍚夋灄鐪�", 220100: "闀挎槬甯�", 220102: "鍗楀叧鍖�", 220103: "瀹藉煄鍖�", 220104: "鏈濋槼鍖�", 220105: "浜岄亾鍖�", 220106: "缁垮洯鍖�", 220112: "鍙岄槼鍖�", 220122: "鍐滃畨鍘�", 220181: "涔濆彴甯�", 220182: "姒嗘爲甯�", 220183: "寰锋儬甯�", 220188: "鍏跺畠鍖�", 220200: "鍚夋灄甯�", 220202: "鏄岄倯鍖�", 220203: "榫欐江鍖�", 220204: "鑸硅惀鍖�", 220211: "涓版弧鍖�", 220221: "姘稿悏鍘�", 220281: "铔熸渤甯�", 220282: "妗︾敻甯�", 220283: "鑸掑叞甯�", 220284: "纾愮煶甯�", 220285: "鍏跺畠鍖�", 220300: "鍥涘钩甯�", 220302: "閾佽タ鍖�", 220303: "閾佷笢鍖�", 220322: "姊ㄦ爲鍘�", 220323: "浼婇�氭弧鏃忚嚜娌诲幙", 220381: "鍏富宀競", 220382: "鍙岃窘甯�", 220383: "鍏跺畠鍖�", 220400: "杈芥簮甯�", 220402: "榫欏北鍖�", 220403: "瑗垮畨鍖�", 220421: "涓滀赴鍘�", 220422: "涓滆窘鍘�", 220423: "鍏跺畠鍖�", 220500: "閫氬寲甯�", 220502: "涓滄槍鍖�", 220503: "浜岄亾姹熷尯", 220521: "閫氬寲鍘�", 220523: "杈夊崡鍘�", 220524: "鏌虫渤鍘�", 220581: "姊呮渤鍙e競", 220582: "闆嗗畨甯�", 220583: "鍏跺畠鍖�", 220600: "鐧藉北甯�", 220602: "娴戞睙鍖�", 220621: "鎶氭澗鍘�", 220622: "闈栧畤鍘�", 220623: "闀跨櫧鏈濋矞鏃忚嚜娌诲幙", 220625: "姹熸簮鍖�", 220681: "涓存睙甯�", 220682: "鍏跺畠鍖�", 220700: "鏉惧師甯�", 220702: "瀹佹睙鍖�", 220721: "鍓嶉儹灏旂綏鏂挋鍙ゆ棌鑷不鍘�", 220722: "闀垮箔鍘�", 220723: "涔惧畨鍘�", 220724: "鎵朵綑甯�", 220725: "鍏跺畠鍖�", 220800: "鐧藉煄甯�", 220802: "娲寳鍖�", 220821: "闀囪祲鍘�", 220822: "閫氭鍘�", 220881: "娲崡甯�", 220882: "澶у畨甯�", 220883: "鍏跺畠鍖�", 222400: "寤惰竟鏈濋矞鏃忚嚜娌诲窞", 222401: "寤跺悏甯�", 222402: "鍥句滑甯�", 222403: "鏁﹀寲甯�", 222404: "鐝叉槬甯�", 222405: "榫欎簳甯�", 222406: "鍜岄緳甯�", 222424: "姹竻鍘�", 222426: "瀹夊浘鍘�", 222427: "鍏跺畠鍖�", 23e4: "榛戦緳姹熺渷", 230100: "鍝堝皵婊ㄥ競", 230102: "閬撻噷鍖�", 230103: "鍗楀矖鍖�", 230104: "閬撳鍖�", 230106: "棣欏潑鍖�", 230108: "骞虫埧鍖�", 230109: "鏉惧寳鍖�", 230111: "鍛煎叞鍖�", 230123: "渚濆叞鍘�", 230124: "鏂规鍘�", 230125: "瀹惧幙", 230126: "宸村溅鍘�", 230127: "鏈ㄥ叞鍘�", 230128: "閫氭渤鍘�", 230129: "寤跺鍘�", 230181: "闃垮煄鍖�", 230182: "鍙屽煄甯�", 230183: "灏氬織甯�", 230184: "浜斿父甯�", 230186: "鍏跺畠鍖�", 230200: "榻愰綈鍝堝皵甯�", 230202: "榫欐矙鍖�", 230203: "寤哄崕鍖�", 230204: "閾侀攱鍖�", 230205: "鏄傛槀婧尯", 230206: "瀵屾媺灏斿熀鍖�", 230207: "纰惧瓙灞卞尯", 230208: "姊呴噷鏂揪鏂″皵鏃忓尯", 230221: "榫欐睙鍘�", 230223: "渚濆畨鍘�", 230224: "娉版潵鍘�", 230225: "鐢樺崡鍘�", 230227: "瀵岃鍘�", 230229: "鍏嬪北鍘�", 230230: "鍏嬩笢鍘�", 230231: "鎷滄硥鍘�", 230281: "璁锋渤甯�", 230282: "鍏跺畠鍖�", 230300: "楦¤タ甯�", 230302: "楦″啝鍖�", 230303: "鎭掑北鍖�", 230304: "婊撮亾鍖�", 230305: "姊ㄦ爲鍖�", 230306: "鍩庡瓙娌冲尯", 230307: "楹诲北鍖�", 230321: "楦′笢鍘�", 230381: "铏庢灄甯�", 230382: "瀵嗗北甯�", 230383: "鍏跺畠鍖�", 230400: "楣ゅ矖甯�", 230402: "鍚戦槼鍖�", 230403: "宸ュ啘鍖�", 230404: "鍗楀北鍖�", 230405: "鍏村畨鍖�", 230406: "涓滃北鍖�", 230407: "鍏村北鍖�", 230421: "钀濆寳鍘�", 230422: "缁ユ花鍘�", 230423: "鍏跺畠鍖�", 230500: "鍙岄腑灞卞競", 230502: "灏栧北鍖�", 230503: "宀笢鍖�", 230505: "鍥涙柟鍙板尯", 230506: "瀹濆北鍖�", 230521: "闆嗚搐鍘�", 230522: "鍙嬭皧鍘�", 230523: "瀹濇竻鍘�", 230524: "楗舵渤鍘�", 230525: "鍏跺畠鍖�", 230600: "澶у簡甯�", 230602: "钀ㄥ皵鍥惧尯", 230603: "榫欏嚖鍖�", 230604: "璁╄儭璺尯", 230605: "绾㈠矖鍖�", 230606: "澶у悓鍖�", 230621: "鑲囧窞鍘�", 230622: "鑲囨簮鍘�", 230623: "鏋楃敻鍘�", 230624: "鏉滃皵浼壒钂欏彜鏃忚嚜娌诲幙", 230625: "鍏跺畠鍖�", 230700: "浼婃槬甯�", 230702: "浼婃槬鍖�", 230703: "鍗楀矓鍖�", 230704: "鍙嬪ソ鍖�", 230705: "瑗挎灄鍖�", 230706: "缈犲肠鍖�", 230707: "鏂伴潚鍖�", 230708: "缇庢邯鍖�", 230709: "閲戝北灞尯", 230710: "浜旇惀鍖�", 230711: "涔岄┈娌冲尯", 230712: "姹ゆ椇娌冲尯", 230713: "甯﹀箔鍖�", 230714: "涔屼紛宀尯", 230715: "绾㈡槦鍖�", 230716: "涓婄敇宀尯", 230722: "鍢夎崼鍘�", 230781: "閾佸姏甯�", 230782: "鍏跺畠鍖�", 230800: "浣虫湪鏂競", 230803: "鍚戦槼鍖�", 230804: "鍓嶈繘鍖�", 230805: "涓滈鍖�", 230811: "閮婂尯", 230822: "妗﹀崡鍘�", 230826: "妗﹀窛鍘�", 230828: "姹ゅ師鍘�", 230833: "鎶氳繙鍘�", 230881: "鍚屾睙甯�", 230882: "瀵岄敠甯�", 230883: "鍏跺畠鍖�", 230900: "涓冨彴娌冲競", 230902: "鏂板叴鍖�", 230903: "妗冨北鍖�", 230904: "鑼勫瓙娌冲尯", 230921: "鍕冨埄鍘�", 230922: "鍏跺畠鍖�", 231e3: "鐗′腹姹熷競", 231002: "涓滃畨鍖�", 231003: "闃虫槑鍖�", 231004: "鐖辨皯鍖�", 231005: "瑗垮畨鍖�", 231024: "涓滃畞鍘�", 231025: "鏋楀彛鍘�", 231081: "缁ヨ姮娌冲競", 231083: "娴锋灄甯�", 231084: "瀹佸畨甯�", 231085: "绌嗘1甯�", 231086: "鍏跺畠鍖�", 231100: "榛戞渤甯�", 231102: "鐖辫緣鍖�", 231121: "瀚╂睙鍘�", 231123: "閫婂厠鍘�", 231124: "瀛欏惔鍘�", 231181: "鍖楀畨甯�", 231182: "浜斿ぇ杩炴睜甯�", 231183: "鍏跺畠鍖�", 231200: "缁ュ寲甯�", 231202: "鍖楁灄鍖�", 231221: "鏈涘鍘�", 231222: "鍏拌タ鍘�", 231223: "闈掑唸鍘�", 231224: "搴嗗畨鍘�", 231225: "鏄庢按鍘�", 231226: "缁ユ1鍘�", 231281: "瀹夎揪甯�", 231282: "鑲囦笢甯�", 231283: "娴蜂鸡甯�", 231284: "鍏跺畠鍖�", 232700: "澶у叴瀹夊箔鍦板尯", 232702: "鏉惧箔鍖�", 232703: "鏂版灄鍖�", 232704: "鍛间腑鍖�", 232721: "鍛肩帥鍘�", 232722: "濉旀渤鍘�", 232723: "婕犳渤鍘�", 232724: "鍔犳牸杈惧鍖�", 232725: "鍏跺畠鍖�", 31e4: "涓婃捣", 310100: "涓婃捣甯�", 310101: "榛勬郸鍖�", 310104: "寰愭眹鍖�", 310105: "闀垮畞鍖�", 310106: "闈欏畨鍖�", 310107: "鏅檧鍖�", 310108: "闂稿寳鍖�", 310109: "铏瑰彛鍖�", 310110: "鏉ㄦ郸鍖�", 310112: "闂佃鍖�", 310113: "瀹濆北鍖�", 310114: "鍢夊畾鍖�", 310115: "娴︿笢鏂板尯", 310116: "閲戝北鍖�", 310117: "鏉炬睙鍖�", 310118: "闈掓郸鍖�", 310120: "濂夎搐鍖�", 310230: "宕囨槑鍘�", 310231: "鍏跺畠鍖�", 32e4: "姹熻嫃鐪�", 320100: "鍗椾含甯�", 320102: "鐜勬鍖�", 320104: "绉︽樊鍖�", 320105: "寤洪偤鍖�", 320106: "榧撴ゼ鍖�", 320111: "娴﹀彛鍖�", 320113: "鏍栭湠鍖�", 320114: "闆ㄨ姳鍙板尯", 320115: "姹熷畞鍖�", 320116: "鍏悎鍖�", 320124: "婧ф按鍖�", 320125: "楂樻烦鍖�", 320126: "鍏跺畠鍖�", 320200: "鏃犻敗甯�", 320202: "宕囧畨鍖�", 320203: "鍗楅暱鍖�", 320204: "鍖楀鍖�", 320205: "閿″北鍖�", 320206: "鎯犲北鍖�", 320211: "婊ㄦ箹鍖�", 320281: "姹熼槾甯�", 320282: "瀹滃叴甯�", 320297: "鍏跺畠鍖�", 320300: "寰愬窞甯�", 320302: "榧撴ゼ鍖�", 320303: "浜戦緳鍖�", 320305: "璐炬豹鍖�", 320311: "娉夊北鍖�", 320321: "涓板幙", 320322: "娌涘幙", 320323: "閾滃北鍖�", 320324: "鐫㈠畞鍘�", 320381: "鏂版矀甯�", 320382: "閭冲窞甯�", 320383: "鍏跺畠鍖�", 320400: "甯稿窞甯�", 320402: "澶╁畞鍖�", 320404: "閽熸ゼ鍖�", 320405: "鎴氬鍫板尯", 320411: "鏂板寳鍖�", 320412: "姝﹁繘鍖�", 320481: "婧ч槼甯�", 320482: "閲戝潧甯�", 320483: "鍏跺畠鍖�", 320500: "鑻忓窞甯�", 320505: "铏庝笜鍖�", 320506: "鍚翠腑鍖�", 320507: "鐩稿煄鍖�", 320508: "濮戣嫃鍖�", 320581: "甯哥啛甯�", 320582: "寮犲娓競", 320583: "鏄嗗北甯�", 320584: "鍚存睙鍖�", 320585: "澶粨甯�", 320596: "鍏跺畠鍖�", 320600: "鍗楅�氬競", 320602: "宕囧窛鍖�", 320611: "娓椄鍖�", 320612: "閫氬窞鍖�", 320621: "娴峰畨鍘�", 320623: "濡備笢鍘�", 320681: "鍚笢甯�", 320682: "濡傜殝甯�", 320684: "娴烽棬甯�", 320694: "鍏跺畠鍖�", 320700: "杩炰簯娓競", 320703: "杩炰簯鍖�", 320705: "鏂版郸鍖�", 320706: "娴峰窞鍖�", 320721: "璧f鍘�", 320722: "涓滄捣鍘�", 320723: "鐏屼簯鍘�", 320724: "鐏屽崡鍘�", 320725: "鍏跺畠鍖�", 320800: "娣畨甯�", 320802: "娓呮渤鍖�", 320803: "娣畨鍖�", 320804: "娣槾鍖�", 320811: "娓呮郸鍖�", 320826: "娑熸按鍘�", 320829: "娲辰鍘�", 320830: "鐩辩湙鍘�", 320831: "閲戞箹鍘�", 320832: "鍏跺畠鍖�", 320900: "鐩愬煄甯�", 320902: "浜箹鍖�", 320903: "鐩愰兘鍖�", 320921: "鍝嶆按鍘�", 320922: "婊ㄦ捣鍘�", 320923: "闃滃畞鍘�", 320924: "灏勯槼鍘�", 320925: "寤烘箹鍘�", 320981: "涓滃彴甯�", 320982: "澶т赴甯�", 320983: "鍏跺畠鍖�", 321e3: "鎵窞甯�", 321002: "骞块櫟鍖�", 321003: "閭楁睙鍖�", 321023: "瀹濆簲鍘�", 321081: "浠緛甯�", 321084: "楂橀偖甯�", 321088: "姹熼兘鍖�", 321093: "鍏跺畠鍖�", 321100: "闀囨睙甯�", 321102: "浜彛鍖�", 321111: "娑﹀窞鍖�", 321112: "涓瑰緬鍖�", 321181: "涓归槼甯�", 321182: "鎵腑甯�", 321183: "鍙ュ甯�", 321184: "鍏跺畠鍖�", 321200: "娉板窞甯�", 321202: "娴烽櫟鍖�", 321203: "楂樻腐鍖�", 321281: "鍏村寲甯�", 321282: "闈栨睙甯�", 321283: "娉板叴甯�", 321284: "濮滃牥鍖�", 321285: "鍏跺畠鍖�", 321300: "瀹胯縼甯�", 321302: "瀹垮煄鍖�", 321311: "瀹胯鲍鍖�", 321322: "娌槼鍘�", 321323: "娉楅槼鍘�", 321324: "娉楁椽鍘�", 321325: "鍏跺畠鍖�", 33e4: "娴欐睙鐪�", 330100: "鏉窞甯�", 330102: "涓婂煄鍖�", 330103: "涓嬪煄鍖�", 330104: "姹熷共鍖�", 330105: "鎷卞鍖�", 330106: "瑗挎箹鍖�", 330108: "婊ㄦ睙鍖�", 330109: "钀у北鍖�", 330110: "浣欐澀鍖�", 330122: "妗愬簮鍘�", 330127: "娣冲畨鍘�", 330182: "寤哄痉甯�", 330183: "瀵岄槼甯�", 330185: "涓村畨甯�", 330186: "鍏跺畠鍖�", 330200: "瀹佹尝甯�", 330203: "娴锋洐鍖�", 330204: "姹熶笢鍖�", 330205: "姹熷寳鍖�", 330206: "鍖椾粦鍖�", 330211: "闀囨捣鍖�", 330212: "閯炲窞鍖�", 330225: "璞″北鍘�", 330226: "瀹佹捣鍘�", 330281: "浣欏甯�", 330282: "鎱堟邯甯�", 330283: "濂夊寲甯�", 330284: "鍏跺畠鍖�", 330300: "娓╁窞甯�", 330302: "楣垮煄鍖�", 330303: "榫欐咕鍖�", 330304: "鐡捣鍖�", 330322: "娲炲ご鍘�", 330324: "姘稿槈鍘�", 330326: "骞抽槼鍘�", 330327: "鑻嶅崡鍘�", 330328: "鏂囨垚鍘�", 330329: "娉伴『鍘�", 330381: "鐟炲畨甯�", 330382: "涔愭竻甯�", 330383: "鍏跺畠鍖�", 330400: "鍢夊叴甯�", 330402: "鍗楁箹鍖�", 330411: "绉�娲插尯", 330421: "鍢夊杽鍘�", 330424: "娴风洂鍘�", 330481: "娴峰畞甯�", 330482: "骞虫箹甯�", 330483: "妗愪埂甯�", 330484: "鍏跺畠鍖�", 330500: "婀栧窞甯�", 330502: "鍚村叴鍖�", 330503: "鍗楁禂鍖�", 330521: "寰锋竻鍘�", 330522: "闀垮叴鍘�", 330523: "瀹夊悏鍘�", 330524: "鍏跺畠鍖�", 330600: "缁嶅叴甯�", 330602: "瓒婂煄鍖�", 330621: "缁嶅叴鍘�", 330624: "鏂版槍鍘�", 330681: "璇告毃甯�", 330682: "涓婅櫈甯�", 330683: "宓婂窞甯�", 330684: "鍏跺畠鍖�", 330700: "閲戝崕甯�", 330702: "濠哄煄鍖�", 330703: "閲戜笢鍖�", 330723: "姝︿箟鍘�", 330726: "娴︽睙鍘�", 330727: "纾愬畨鍘�", 330781: "鍏版邯甯�", 330782: "涔変箤甯�", 330783: "涓滈槼甯�", 330784: "姘稿悍甯�", 330785: "鍏跺畠鍖�", 330800: "琛㈠窞甯�", 330802: "鏌煄鍖�", 330803: "琛㈡睙鍖�", 330822: "甯稿北鍘�", 330824: "寮�鍖栧幙", 330825: "榫欐父鍘�", 330881: "姹熷北甯�", 330882: "鍏跺畠鍖�", 330900: "鑸熷北甯�", 330902: "瀹氭捣鍖�", 330903: "鏅檧鍖�", 330921: "宀卞北鍘�", 330922: "宓婃硹鍘�", 330923: "鍏跺畠鍖�", 331e3: "鍙板窞甯�", 331002: "妞掓睙鍖�", 331003: "榛勫博鍖�", 331004: "璺ˉ鍖�", 331021: "鐜夌幆鍘�", 331022: "涓夐棬鍘�", 331023: "澶╁彴鍘�", 331024: "浠欏眳鍘�", 331081: "娓╁箔甯�", 331082: "涓存捣甯�", 331083: "鍏跺畠鍖�", 331100: "涓芥按甯�", 331102: "鑾查兘鍖�", 331121: "闈掔敯鍘�", 331122: "缂欎簯鍘�", 331123: "閬傛槍鍘�", 331124: "鏉鹃槼鍘�", 331125: "浜戝拰鍘�", 331126: "搴嗗厓鍘�", 331127: "鏅畞鐣叉棌鑷不鍘�", 331181: "榫欐硥甯�", 331182: "鍏跺畠鍖�", 34e4: "瀹夊窘鐪�", 340100: "鍚堣偉甯�", 340102: "鐟舵捣鍖�", 340103: "搴愰槼鍖�", 340104: "铚�灞卞尯", 340111: "鍖呮渤鍖�", 340121: "闀夸赴鍘�", 340122: "鑲ヤ笢鍘�", 340123: "鑲ヨタ鍘�", 340192: "鍏跺畠鍖�", 340200: "鑺滄箹甯�", 340202: "闀滄箹鍖�", 340203: "寮嬫睙鍖�", 340207: "楦犳睙鍖�", 340208: "涓夊北鍖�", 340221: "鑺滄箹鍘�", 340222: "绻佹槍鍘�", 340223: "鍗楅櫟鍘�", 340224: "鍏跺畠鍖�", 340300: "铓屽煚甯�", 340302: "榫欏瓙婀栧尯", 340303: "铓屽北鍖�", 340304: "绂逛細鍖�", 340311: "娣笂鍖�", 340321: "鎬�杩滃幙", 340322: "浜旀渤鍘�", 340323: "鍥洪晣鍘�", 340324: "鍏跺畠鍖�", 340400: "娣崡甯�", 340402: "澶ч�氬尯", 340403: "鐢板搴靛尯", 340404: "璋㈠闆嗗尯", 340405: "鍏叕灞卞尯", 340406: "娼橀泦鍖�", 340421: "鍑ゅ彴鍘�", 340422: "鍏跺畠鍖�", 340500: "椹瀺灞卞競", 340503: "鑺卞北鍖�", 340504: "闆ㄥ北鍖�", 340506: "鍗氭湜鍖�", 340521: "褰撴秱鍘�", 340522: "鍏跺畠鍖�", 340600: "娣寳甯�", 340602: "鏉滈泦鍖�", 340603: "鐩稿北鍖�", 340604: "鐑堝北鍖�", 340621: "婵夋邯鍘�", 340622: "鍏跺畠鍖�", 340700: "閾滈櫟甯�", 340702: "閾滃畼灞卞尯", 340703: "鐙瓙灞卞尯", 340711: "閮婂尯", 340721: "閾滈櫟鍘�", 340722: "鍏跺畠鍖�", 340800: "瀹夊簡甯�", 340802: "杩庢睙鍖�", 340803: "澶ц鍖�", 340811: "瀹滅鍖�", 340822: "鎬�瀹佸幙", 340823: "鏋為槼鍘�", 340824: "娼滃北鍘�", 340825: "澶箹鍘�", 340826: "瀹挎澗鍘�", 340827: "鏈涙睙鍘�", 340828: "宀宠タ鍘�", 340881: "妗愬煄甯�", 340882: "鍏跺畠鍖�", 341e3: "榛勫北甯�", 341002: "灞邯鍖�", 341003: "榛勫北鍖�", 341004: "寰藉窞鍖�", 341021: "姝欏幙", 341022: "浼戝畞鍘�", 341023: "榛熷幙", 341024: "绁侀棬鍘�", 341025: "鍏跺畠鍖�", 341100: "婊佸窞甯�", 341102: "鐞呯悐鍖�", 341103: "鍗楄隘鍖�", 341122: "鏉ュ畨鍘�", 341124: "鍏ㄦ鍘�", 341125: "瀹氳繙鍘�", 341126: "鍑ら槼鍘�", 341181: "澶╅暱甯�", 341182: "鏄庡厜甯�", 341183: "鍏跺畠鍖�", 341200: "闃滈槼甯�", 341202: "棰嶅窞鍖�", 341203: "棰嶄笢鍖�", 341204: "棰嶆硥鍖�", 341221: "涓存硥鍘�", 341222: "澶拰鍘�", 341225: "闃滃崡鍘�", 341226: "棰嶄笂鍘�", 341282: "鐣岄甯�", 341283: "鍏跺畠鍖�", 341300: "瀹垮窞甯�", 341302: "鍩囨ˉ鍖�", 341321: "鐮�灞卞幙", 341322: "钀у幙", 341323: "鐏电挧鍘�", 341324: "娉楀幙", 341325: "鍏跺畠鍖�", 341400: "宸㈡箹甯�", 341421: "搴愭睙鍘�", 341422: "鏃犱负鍘�", 341423: "鍚北鍘�", 341424: "鍜屽幙", 341500: "鍏畨甯�", 341502: "閲戝畨鍖�", 341503: "瑁曞畨鍖�", 341521: "瀵垮幙", 341522: "闇嶉偙鍘�", 341523: "鑸掑煄鍘�", 341524: "閲戝鍘�", 341525: "闇嶅北鍘�", 341526: "鍏跺畠鍖�", 341600: "浜冲窞甯�", 341602: "璋煄鍖�", 341621: "娑¢槼鍘�", 341622: "钂欏煄鍘�", 341623: "鍒╄緵鍘�", 341624: "鍏跺畠鍖�", 341700: "姹犲窞甯�", 341702: "璐垫睜鍖�", 341721: "涓滆嚦鍘�", 341722: "鐭冲彴鍘�", 341723: "闈掗槼鍘�", 341724: "鍏跺畠鍖�", 341800: "瀹e煄甯�", 341802: "瀹e窞鍖�", 341821: "閮庢邯鍘�", 341822: "骞垮痉鍘�", 341823: "娉惧幙", 341824: "缁╂邯鍘�", 341825: "鏃屽痉鍘�", 341881: "瀹佸浗甯�", 341882: "鍏跺畠鍖�", 35e4: "绂忓缓鐪�", 350100: "绂忓窞甯�", 350102: "榧撴ゼ鍖�", 350103: "鍙版睙鍖�", 350104: "浠撳北鍖�", 350105: "椹熬鍖�", 350111: "鏅嬪畨鍖�", 350121: "闂戒警鍘�", 350122: "杩炴睙鍘�", 350123: "缃楁簮鍘�", 350124: "闂芥竻鍘�", 350125: "姘告嘲鍘�", 350128: "骞虫江鍘�", 350181: "绂忔竻甯�", 350182: "闀夸箰甯�", 350183: "鍏跺畠鍖�", 350200: "鍘﹂棬甯�", 350203: "鎬濇槑鍖�", 350205: "娴锋钵鍖�", 350206: "婀栭噷鍖�", 350211: "闆嗙編鍖�", 350212: "鍚屽畨鍖�", 350213: "缈斿畨鍖�", 350214: "鍏跺畠鍖�", 350300: "鑾嗙敯甯�", 350302: "鍩庡帰鍖�", 350303: "娑垫睙鍖�", 350304: "鑽斿煄鍖�", 350305: "绉�灞垮尯", 350322: "浠欐父鍘�", 350323: "鍏跺畠鍖�", 350400: "涓夋槑甯�", 350402: "姊呭垪鍖�", 350403: "涓夊厓鍖�", 350421: "鏄庢邯鍘�", 350423: "娓呮祦鍘�", 350424: "瀹佸寲鍘�", 350425: "澶х敯鍘�", 350426: "灏ゆ邯鍘�", 350427: "娌欏幙", 350428: "灏嗕箰鍘�", 350429: "娉板畞鍘�", 350430: "寤哄畞鍘�", 350481: "姘稿畨甯�", 350482: "鍏跺畠鍖�", 350500: "娉夊窞甯�", 350502: "椴ゅ煄鍖�", 350503: "涓版辰鍖�", 350504: "娲涙睙鍖�", 350505: "娉夋腐鍖�", 350521: "鎯犲畨鍘�", 350524: "瀹夋邯鍘�", 350525: "姘告槬鍘�", 350526: "寰峰寲鍘�", 350527: "閲戦棬鍘�", 350581: "鐭崇嫯甯�", 350582: "鏅嬫睙甯�", 350583: "鍗楀畨甯�", 350584: "鍏跺畠鍖�", 350600: "婕冲窞甯�", 350602: "鑺楀煄鍖�", 350603: "榫欐枃鍖�", 350622: "浜戦渼鍘�", 350623: "婕虫郸鍘�", 350624: "璇忓畨鍘�", 350625: "闀挎嘲鍘�", 350626: "涓滃北鍘�", 350627: "鍗楅潠鍘�", 350628: "骞冲拰鍘�", 350629: "鍗庡畨鍘�", 350681: "榫欐捣甯�", 350682: "鍏跺畠鍖�", 350700: "鍗楀钩甯�", 350702: "寤跺钩鍖�", 350721: "椤烘槍鍘�", 350722: "娴﹀煄鍘�", 350723: "鍏夋辰鍘�", 350724: "鏉炬邯鍘�", 350725: "鏀垮拰鍘�", 350781: "閭垫甯�", 350782: "姝﹀し灞卞競", 350783: "寤虹摨甯�", 350784: "寤洪槼甯�", 350785: "鍏跺畠鍖�", 350800: "榫欏博甯�", 350802: "鏂扮綏鍖�", 350821: "闀挎眬鍘�", 350822: "姘稿畾鍘�", 350823: "涓婃澀鍘�", 350824: "姝﹀钩鍘�", 350825: "杩炲煄鍘�", 350881: "婕冲钩甯�", 350882: "鍏跺畠鍖�", 350900: "瀹佸痉甯�", 350902: "钑夊煄鍖�", 350921: "闇炴郸鍘�", 350922: "鍙ょ敯鍘�", 350923: "灞忓崡鍘�", 350924: "瀵垮畞鍘�", 350925: "鍛ㄥ畞鍘�", 350926: "鏌樿崳鍘�", 350981: "绂忓畨甯�", 350982: "绂忛紟甯�", 350983: "鍏跺畠鍖�", 36e4: "姹熻タ鐪�", 360100: "鍗楁槍甯�", 360102: "涓滄箹鍖�", 360103: "瑗挎箹鍖�", 360104: "闈掍簯璋卞尯", 360105: "婀鹃噷鍖�", 360111: "闈掑北婀栧尯", 360121: "鍗楁槍鍘�", 360122: "鏂板缓鍘�", 360123: "瀹変箟鍘�", 360124: "杩涜搐鍘�", 360128: "鍏跺畠鍖�", 360200: "鏅痉闀囧競", 360202: "鏄屾睙鍖�", 360203: "鐝犲北鍖�", 360222: "娴鍘�", 360281: "涔愬钩甯�", 360282: "鍏跺畠鍖�", 360300: "钀嶄埂甯�", 360302: "瀹夋簮鍖�", 360313: "婀樹笢鍖�", 360321: "鑾茶姳鍘�", 360322: "涓婃牀鍘�", 360323: "鑺︽邯鍘�", 360324: "鍏跺畠鍖�", 360400: "涔濇睙甯�", 360402: "搴愬北鍖�", 360403: "娴旈槼鍖�", 360421: "涔濇睙鍘�", 360423: "姝﹀畞鍘�", 360424: "淇按鍘�", 360425: "姘镐慨鍘�", 360426: "寰峰畨鍘�", 360427: "鏄熷瓙鍘�", 360428: "閮芥槍鍘�", 360429: "婀栧彛鍘�", 360430: "褰辰鍘�", 360481: "鐟炴槍甯�", 360482: "鍏跺畠鍖�", 360483: "鍏遍潚鍩庡競", 360500: "鏂颁綑甯�", 360502: "娓濇按鍖�", 360521: "鍒嗗疁鍘�", 360522: "鍏跺畠鍖�", 360600: "楣版江甯�", 360602: "鏈堟箹鍖�", 360622: "浣欐睙鍘�", 360681: "璐垫邯甯�", 360682: "鍏跺畠鍖�", 360700: "璧e窞甯�", 360702: "绔犺础鍖�", 360721: "璧e幙", 360722: "淇′赴鍘�", 360723: "澶т綑鍘�", 360724: "涓婄姽鍘�", 360725: "宕囦箟鍘�", 360726: "瀹夎繙鍘�", 360727: "榫欏崡鍘�", 360728: "瀹氬崡鍘�", 360729: "鍏ㄥ崡鍘�", 360730: "瀹侀兘鍘�", 360731: "浜庨兘鍘�", 360732: "鍏村浗鍘�", 360733: "浼氭槍鍘�", 360734: "瀵讳箤鍘�", 360735: "鐭冲煄鍘�", 360781: "鐟為噾甯�", 360782: "鍗楀悍甯�", 360783: "鍏跺畠鍖�", 360800: "鍚夊畨甯�", 360802: "鍚夊窞鍖�", 360803: "闈掑師鍖�", 360821: "鍚夊畨鍘�", 360822: "鍚夋按鍘�", 360823: "宄℃睙鍘�", 360824: "鏂板共鍘�", 360825: "姘镐赴鍘�", 360826: "娉板拰鍘�", 360827: "閬傚窛鍘�", 360828: "涓囧畨鍘�", 360829: "瀹夌鍘�", 360830: "姘告柊鍘�", 360881: "浜曞唸灞卞競", 360882: "鍏跺畠鍖�", 360900: "瀹滄槬甯�", 360902: "琚佸窞鍖�", 360921: "濂夋柊鍘�", 360922: "涓囪浇鍘�", 360923: "涓婇珮鍘�", 360924: "瀹滀赴鍘�", 360925: "闈栧畨鍘�", 360926: "閾滈紦鍘�", 360981: "涓板煄甯�", 360982: "妯熸爲甯�", 360983: "楂樺畨甯�", 360984: "鍏跺畠鍖�", 361e3: "鎶氬窞甯�", 361002: "涓村窛鍖�", 361021: "鍗楀煄鍘�", 361022: "榛庡窛鍘�", 361023: "鍗椾赴鍘�", 361024: "宕囦粊鍘�", 361025: "涔愬畨鍘�", 361026: "瀹滈粍鍘�", 361027: "閲戞邯鍘�", 361028: "璧勬邯鍘�", 361029: "涓滀埂鍘�", 361030: "骞挎槍鍘�", 361031: "鍏跺畠鍖�", 361100: "涓婇ザ甯�", 361102: "淇″窞鍖�", 361121: "涓婇ザ鍘�", 361122: "骞夸赴鍘�", 361123: "鐜夊北鍘�", 361124: "閾呭北鍘�", 361125: "妯嘲鍘�", 361126: "寮嬮槼鍘�", 361127: "浣欏共鍘�", 361128: "閯遍槼鍘�", 361129: "涓囧勾鍘�", 361130: "濠烘簮鍘�", 361181: "寰峰叴甯�", 361182: "鍏跺畠鍖�", 37e4: "灞变笢鐪�", 370100: "娴庡崡甯�", 370102: "鍘嗕笅鍖�", 370103: "甯備腑鍖�", 370104: "妲愯崼鍖�", 370105: "澶╂ˉ鍖�", 370112: "鍘嗗煄鍖�", 370113: "闀挎竻鍖�", 370124: "骞抽槾鍘�", 370125: "娴庨槼鍘�", 370126: "鍟嗘渤鍘�", 370181: "绔犱笜甯�", 370182: "鍏跺畠鍖�", 370200: "闈掑矝甯�", 370202: "甯傚崡鍖�", 370203: "甯傚寳鍖�", 370211: "榛勫矝鍖�", 370212: "宕傚北鍖�", 370213: "鏉庢钵鍖�", 370214: "鍩庨槼鍖�", 370281: "鑳跺窞甯�", 370282: "鍗冲ⅷ甯�", 370283: "骞冲害甯�", 370285: "鑾辫タ甯�", 370286: "鍏跺畠鍖�", 370300: "娣勫崥甯�", 370302: "娣勫窛鍖�", 370303: "寮犲簵鍖�", 370304: "鍗氬北鍖�", 370305: "涓存穭鍖�", 370306: "鍛ㄦ潙鍖�", 370321: "妗撳彴鍘�", 370322: "楂橀潚鍘�", 370323: "娌傛簮鍘�", 370324: "鍏跺畠鍖�", 370400: "鏋e簞甯�", 370402: "甯備腑鍖�", 370403: "钖涘煄鍖�", 370404: "宄勫煄鍖�", 370405: "鍙板効搴勫尯", 370406: "灞变涵鍖�", 370481: "婊曞窞甯�", 370482: "鍏跺畠鍖�", 370500: "涓滆惀甯�", 370502: "涓滆惀鍖�", 370503: "娌冲彛鍖�", 370521: "鍨﹀埄鍘�", 370522: "鍒╂触鍘�", 370523: "骞块ザ鍘�", 370591: "鍏跺畠鍖�", 370600: "鐑熷彴甯�", 370602: "鑺濈綐鍖�", 370611: "绂忓北鍖�", 370612: "鐗熷钩鍖�", 370613: "鑾卞北鍖�", 370634: "闀垮矝鍘�", 370681: "榫欏彛甯�", 370682: "鑾遍槼甯�", 370683: "鑾卞窞甯�", 370684: "钃幈甯�", 370685: "鎷涜繙甯�", 370686: "鏍栭湠甯�", 370687: "娴烽槼甯�", 370688: "鍏跺畠鍖�", 370700: "娼嶅潑甯�", 370702: "娼嶅煄鍖�", 370703: "瀵掍涵鍖�", 370704: "鍧婂瓙鍖�", 370705: "濂庢枃鍖�", 370724: "涓存湊鍘�", 370725: "鏄屼箰鍘�", 370781: "闈掑窞甯�", 370782: "璇稿煄甯�", 370783: "瀵垮厜甯�", 370784: "瀹変笜甯�", 370785: "楂樺瘑甯�", 370786: "鏄岄倯甯�", 370787: "鍏跺畠鍖�", 370800: "娴庡畞甯�", 370802: "甯備腑鍖�", 370811: "浠诲煄鍖�", 370826: "寰北鍘�", 370827: "楸煎彴鍘�", 370828: "閲戜埂鍘�", 370829: "鍢夌ゥ鍘�", 370830: "姹朵笂鍘�", 370831: "娉楁按鍘�", 370832: "姊佸北鍘�", 370881: "鏇查槣甯�", 370882: "鍏栧窞甯�", 370883: "閭瑰煄甯�", 370884: "鍏跺畠鍖�", 370900: "娉板畨甯�", 370902: "娉板北鍖�", 370903: "宀卞渤鍖�", 370921: "瀹侀槼鍘�", 370923: "涓滃钩鍘�", 370982: "鏂版嘲甯�", 370983: "鑲ュ煄甯�", 370984: "鍏跺畠鍖�", 371e3: "濞佹捣甯�", 371002: "鐜繝鍖�", 371081: "鏂囩櫥甯�", 371082: "鑽f垚甯�", 371083: "涔冲北甯�", 371084: "鍏跺畠鍖�", 371100: "鏃ョ収甯�", 371102: "涓滄腐鍖�", 371103: "宀氬北鍖�", 371121: "浜旇幉鍘�", 371122: "鑾掑幙", 371123: "鍏跺畠鍖�", 371200: "鑾辫姕甯�", 371202: "鑾卞煄鍖�", 371203: "閽㈠煄鍖�", 371204: "鍏跺畠鍖�", 371300: "涓存矀甯�", 371302: "鍏板北鍖�", 371311: "缃楀簞鍖�", 371312: "娌充笢鍖�", 371321: "娌傚崡鍘�", 371322: "閮煄鍘�", 371323: "娌傛按鍘�", 371324: "鑻嶅北鍘�", 371325: "璐瑰幙", 371326: "骞抽倯鍘�", 371327: "鑾掑崡鍘�", 371328: "钂欓槾鍘�", 371329: "涓存箔鍘�", 371330: "鍏跺畠鍖�", 371400: "寰峰窞甯�", 371402: "寰峰煄鍖�", 371421: "闄靛幙", 371422: "瀹佹触鍘�", 371423: "搴嗕簯鍘�", 371424: "涓撮倯鍘�", 371425: "榻愭渤鍘�", 371426: "骞冲師鍘�", 371427: "澶忔触鍘�", 371428: "姝﹀煄鍘�", 371481: "涔愰櫟甯�", 371482: "绂瑰煄甯�", 371483: "鍏跺畠鍖�", 371500: "鑱婂煄甯�", 371502: "涓滄槍搴滃尯", 371521: "闃宠胺鍘�", 371522: "鑾樺幙", 371523: "鑼屽钩鍘�", 371524: "涓滈樋鍘�", 371525: "鍐犲幙", 371526: "楂樺攼鍘�", 371581: "涓存竻甯�", 371582: "鍏跺畠鍖�", 371600: "婊ㄥ窞甯�", 371602: "婊ㄥ煄鍖�", 371621: "鎯犳皯鍘�", 371622: "闃充俊鍘�", 371623: "鏃犳#鍘�", 371624: "娌惧寲鍘�", 371625: "鍗氬叴鍘�", 371626: "閭瑰钩鍘�", 371627: "鍏跺畠鍖�", 371700: "鑿忔辰甯�", 371702: "鐗′腹鍖�", 371721: "鏇瑰幙", 371722: "鍗曞幙", 371723: "鎴愭鍘�", 371724: "宸ㄩ噹鍘�", 371725: "閮撳煄鍘�", 371726: "閯勫煄鍘�", 371727: "瀹氶櫠鍘�", 371728: "涓滄槑鍘�", 371729: "鍏跺畠鍖�", 41e4: "娌冲崡鐪�", 410100: "閮戝窞甯�", 410102: "涓師鍖�", 410103: "浜屼竷鍖�", 410104: "绠″煄鍥炴棌鍖�", 410105: "閲戞按鍖�", 410106: "涓婅鍖�", 410108: "鎯犳祹鍖�", 410122: "涓墴鍘�", 410181: "宸╀箟甯�", 410182: "鑽ラ槼甯�", 410183: "鏂板瘑甯�", 410184: "鏂伴儜甯�", 410185: "鐧诲皝甯�", 410188: "鍏跺畠鍖�", 410200: "寮�灏佸競", 410202: "榫欎涵鍖�", 410203: "椤烘渤鍥炴棌鍖�", 410204: "榧撴ゼ鍖�", 410205: "绂圭帇鍙板尯", 410211: "閲戞槑鍖�", 410221: "鏉炲幙", 410222: "閫氳鍘�", 410223: "灏夋皬鍘�", 410224: "寮�灏佸幙", 410225: "鍏拌�冨幙", 410226: "鍏跺畠鍖�", 410300: "娲涢槼甯�", 410302: "鑰佸煄鍖�", 410303: "瑗垮伐鍖�", 410304: "鐎嶆渤鍥炴棌鍖�", 410305: "娑цタ鍖�", 410306: "鍚夊埄鍖�", 410307: "娲涢緳鍖�", 410322: "瀛熸触鍘�", 410323: "鏂板畨鍘�", 410324: "鏍惧窛鍘�", 410325: "宓╁幙", 410326: "姹濋槼鍘�", 410327: "瀹滈槼鍘�", 410328: "娲涘畞鍘�", 410329: "浼婂窛鍘�", 410381: "鍋冨笀甯�", 410400: "骞抽《灞卞競", 410402: "鏂板崕鍖�", 410403: "鍗笢鍖�", 410404: "鐭抽緳鍖�", 410411: "婀涙渤鍖�", 410421: "瀹濅赴鍘�", 410422: "鍙跺幙", 410423: "椴佸北鍘�", 410425: "閮忓幙", 410481: "鑸為挗甯�", 410482: "姹濆窞甯�", 410483: "鍏跺畠鍖�", 410500: "瀹夐槼甯�", 410502: "鏂囧嘲鍖�", 410503: "鍖楀叧鍖�", 410505: "娈烽兘鍖�", 410506: "榫欏畨鍖�", 410522: "瀹夐槼鍘�", 410523: "姹ら槾鍘�", 410526: "婊戝幙", 410527: "鍐呴粍鍘�", 410581: "鏋楀窞甯�", 410582: "鍏跺畠鍖�", 410600: "楣ゅ甯�", 410602: "楣ゅ北鍖�", 410603: "灞卞煄鍖�", 410611: "娣囨花鍖�", 410621: "娴氬幙", 410622: "娣囧幙", 410623: "鍏跺畠鍖�", 410700: "鏂颁埂甯�", 410702: "绾㈡棗鍖�", 410703: "鍗花鍖�", 410704: "鍑ゆ硥鍖�", 410711: "鐗ч噹鍖�", 410721: "鏂颁埂鍘�", 410724: "鑾峰槈鍘�", 410725: "鍘熼槼鍘�", 410726: "寤舵触鍘�", 410727: "灏佷笜鍘�", 410728: "闀垮灒鍘�", 410781: "鍗緣甯�", 410782: "杈夊幙甯�", 410783: "鍏跺畠鍖�", 410800: "鐒︿綔甯�", 410802: "瑙f斁鍖�", 410803: "涓珯鍖�", 410804: "椹潙鍖�", 410811: "灞遍槼鍖�", 410821: "淇鍘�", 410822: "鍗氱埍鍘�", 410823: "姝﹂櫉鍘�", 410825: "娓╁幙", 410881: "娴庢簮甯�", 410882: "娌侀槼甯�", 410883: "瀛熷窞甯�", 410884: "鍏跺畠鍖�", 410900: "婵槼甯�", 410902: "鍗庨緳鍖�", 410922: "娓呬赴鍘�", 410923: "鍗椾箰鍘�", 410926: "鑼冨幙", 410927: "鍙板墠鍘�", 410928: "婵槼鍘�", 410929: "鍏跺畠鍖�", 411e3: "璁告槍甯�", 411002: "榄忛兘鍖�", 411023: "璁告槍鍘�", 411024: "閯㈤櫟鍘�", 411025: "瑗勫煄鍘�", 411081: "绂瑰窞甯�", 411082: "闀胯憶甯�", 411083: "鍏跺畠鍖�", 411100: "婕渤甯�", 411102: "婧愭眹鍖�", 411103: "閮惧煄鍖�", 411104: "鍙櫟鍖�", 411121: "鑸為槼鍘�", 411122: "涓撮鍘�", 411123: "鍏跺畠鍖�", 411200: "涓夐棬宄″競", 411202: "婀栨花鍖�", 411221: "娓戞睜鍘�", 411222: "闄曞幙", 411224: "鍗㈡皬鍘�", 411281: "涔夐┈甯�", 411282: "鐏靛疂甯�", 411283: "鍏跺畠鍖�", 411300: "鍗楅槼甯�", 411302: "瀹涘煄鍖�", 411303: "鍗ч緳鍖�", 411321: "鍗楀彫鍘�", 411322: "鏂瑰煄鍘�", 411323: "瑗垮场鍘�", 411324: "闀囧钩鍘�", 411325: "鍐呬埂鍘�", 411326: "娣呭窛鍘�", 411327: "绀炬棗鍘�", 411328: "鍞愭渤鍘�", 411329: "鏂伴噹鍘�", 411330: "妗愭煆鍘�", 411381: "閭撳窞甯�", 411382: "鍏跺畠鍖�", 411400: "鍟嗕笜甯�", 411402: "姊佸洯鍖�", 411403: "鐫㈤槼鍖�", 411421: "姘戞潈鍘�", 411422: "鐫㈠幙", 411423: "瀹侀櫟鍘�", 411424: "鏌樺煄鍘�", 411425: "铏炲煄鍘�", 411426: "澶忛倯鍘�", 411481: "姘稿煄甯�", 411482: "鍏跺畠鍖�", 411500: "淇¢槼甯�", 411502: "娴夋渤鍖�", 411503: "骞虫ˉ鍖�", 411521: "缃楀北鍘�", 411522: "鍏夊北鍘�", 411523: "鏂板幙", 411524: "鍟嗗煄鍘�", 411525: "鍥哄鍘�", 411526: "娼㈠窛鍘�", 411527: "娣花鍘�", 411528: "鎭幙", 411529: "鍏跺畠鍖�", 411600: "鍛ㄥ彛甯�", 411602: "宸濇眹鍖�", 411621: "鎵舵矡鍘�", 411622: "瑗垮崕鍘�", 411623: "鍟嗘按鍘�", 411624: "娌堜笜鍘�", 411625: "閮稿煄鍘�", 411626: "娣槼鍘�", 411627: "澶悍鍘�", 411628: "楣块倯鍘�", 411681: "椤瑰煄甯�", 411682: "鍏跺畠鍖�", 411700: "椹婚┈搴楀競", 411702: "椹垮煄鍖�", 411721: "瑗垮钩鍘�", 411722: "涓婅敗鍘�", 411723: "骞宠垎鍘�", 411724: "姝i槼鍘�", 411725: "纭北鍘�", 411726: "娉岄槼鍘�", 411727: "姹濆崡鍘�", 411728: "閬傚钩鍘�", 411729: "鏂拌敗鍘�", 411730: "鍏跺畠鍖�", 42e4: "婀栧寳鐪�", 420100: "姝︽眽甯�", 420102: "姹熷哺鍖�", 420103: "姹熸眽鍖�", 420104: "纭氬彛鍖�", 420105: "姹夐槼鍖�", 420106: "姝︽槍鍖�", 420107: "闈掑北鍖�", 420111: "娲北鍖�", 420112: "涓滆タ婀栧尯", 420113: "姹夊崡鍖�", 420114: "钄$敻鍖�", 420115: "姹熷鍖�", 420116: "榛勯檪鍖�", 420117: "鏂版床鍖�", 420118: "鍏跺畠鍖�", 420200: "榛勭煶甯�", 420202: "榛勭煶娓尯", 420203: "瑗垮灞卞尯", 420204: "涓嬮檰鍖�", 420205: "閾佸北鍖�", 420222: "闃虫柊鍘�", 420281: "澶у喍甯�", 420282: "鍏跺畠鍖�", 420300: "鍗佸牥甯�", 420302: "鑼呯鍖�", 420303: "寮犳咕鍖�", 420321: "閮у幙", 420322: "閮цタ鍘�", 420323: "绔瑰北鍘�", 420324: "绔规邯鍘�", 420325: "鎴垮幙", 420381: "涓规睙鍙e競", 420383: "鍏跺畠鍖�", 420500: "瀹滄槍甯�", 420502: "瑗块櫟鍖�", 420503: "浼嶅宀楀尯", 420504: "鐐瑰啗鍖�", 420505: "鐚囦涵鍖�", 420506: "澶烽櫟鍖�", 420525: "杩滃畨鍘�", 420526: "鍏村北鍘�", 420527: "绉綊鍘�", 420528: "闀块槼鍦熷鏃忚嚜娌诲幙", 420529: "浜斿嘲鍦熷鏃忚嚜娌诲幙", 420581: "瀹滈兘甯�", 420582: "褰撻槼甯�", 420583: "鏋濇睙甯�", 420584: "鍏跺畠鍖�", 420600: "瑗勯槼甯�", 420602: "瑗勫煄鍖�", 420606: "妯婂煄鍖�", 420607: "瑗勫窞鍖�", 420624: "鍗楁汲鍘�", 420625: "璋峰煄鍘�", 420626: "淇濆悍鍘�", 420682: "鑰佹渤鍙e競", 420683: "鏋i槼甯�", 420684: "瀹滃煄甯�", 420685: "鍏跺畠鍖�", 420700: "閯傚窞甯�", 420702: "姊佸瓙婀栧尯", 420703: "鍗庡鍖�", 420704: "閯傚煄鍖�", 420705: "鍏跺畠鍖�", 420800: "鑽嗛棬甯�", 420802: "涓滃疂鍖�", 420804: "鎺囧垁鍖�", 420821: "浜北鍘�", 420822: "娌欐磱鍘�", 420881: "閽熺ゥ甯�", 420882: "鍏跺畠鍖�", 420900: "瀛濇劅甯�", 420902: "瀛濆崡鍖�", 420921: "瀛濇槍鍘�", 420922: "澶ф偀鍘�", 420923: "浜戞ⅵ鍘�", 420981: "搴斿煄甯�", 420982: "瀹夐檰甯�", 420984: "姹夊窛甯�", 420985: "鍏跺畠鍖�", 421e3: "鑽嗗窞甯�", 421002: "娌欏競鍖�", 421003: "鑽嗗窞鍖�", 421022: "鍏畨鍘�", 421023: "鐩戝埄鍘�", 421024: "姹熼櫟鍘�", 421081: "鐭抽甯�", 421083: "娲箹甯�", 421087: "鏉炬粙甯�", 421088: "鍏跺畠鍖�", 421100: "榛勫唸甯�", 421102: "榛勫窞鍖�", 421121: "鍥㈤鍘�", 421122: "绾㈠畨鍘�", 421123: "缃楃敯鍘�", 421124: "鑻卞北鍘�", 421125: "娴犳按鍘�", 421126: "钑叉槬鍘�", 421127: "榛勬鍘�", 421181: "楹诲煄甯�", 421182: "姝︾┐甯�", 421183: "鍏跺畠鍖�", 421200: "鍜稿畞甯�", 421202: "鍜稿畨鍖�", 421221: "鍢夐奔鍘�", 421222: "閫氬煄鍘�", 421223: "宕囬槼鍘�", 421224: "閫氬北鍘�", 421281: "璧ゅ甯�", 421283: "鍏跺畠鍖�", 421300: "闅忓窞甯�", 421302: "鏇鹃兘鍖�", 421321: "闅忓幙", 421381: "骞挎按甯�", 421382: "鍏跺畠鍖�", 422800: "鎭╂柦鍦熷鏃忚嫍鏃忚嚜娌诲窞", 422801: "鎭╂柦甯�", 422802: "鍒╁窛甯�", 422822: "寤哄鍘�", 422823: "宸翠笢鍘�", 422825: "瀹f仼鍘�", 422826: "鍜镐赴鍘�", 422827: "鏉ュ嚖鍘�", 422828: "楣ゅ嘲鍘�", 422829: "鍏跺畠鍖�", 429004: "浠欐甯�", 429005: "娼滄睙甯�", 429006: "澶╅棬甯�", 429021: "绁炲啘鏋舵灄鍖�", 43e4: "婀栧崡鐪�", 430100: "闀挎矙甯�", 430102: "鑺欒搲鍖�", 430103: "澶╁績鍖�", 430104: "宀抽簱鍖�", 430105: "寮�绂忓尯", 430111: "闆ㄨ姳鍖�", 430121: "闀挎矙鍘�", 430122: "鏈涘煄鍖�", 430124: "瀹佷埂鍘�", 430181: "娴忛槼甯�", 430182: "鍏跺畠鍖�", 430200: "鏍床甯�", 430202: "鑽峰鍖�", 430203: "鑺︽窞鍖�", 430204: "鐭冲嘲鍖�", 430211: "澶╁厓鍖�", 430221: "鏍床鍘�", 430223: "鏀稿幙", 430224: "鑼堕櫟鍘�", 430225: "鐐庨櫟鍘�", 430281: "閱撮櫟甯�", 430282: "鍏跺畠鍖�", 430300: "婀樻江甯�", 430302: "闆ㄦ箹鍖�", 430304: "宀冲鍖�", 430321: "婀樻江鍘�", 430381: "婀樹埂甯�", 430382: "闊跺北甯�", 430383: "鍏跺畠鍖�", 430400: "琛¢槼甯�", 430405: "鐝犳櫀鍖�", 430406: "闆佸嘲鍖�", 430407: "鐭抽紦鍖�", 430408: "钂告箻鍖�", 430412: "鍗楀渤鍖�", 430421: "琛¢槼鍘�", 430422: "琛″崡鍘�", 430423: "琛″北鍘�", 430424: "琛′笢鍘�", 430426: "绁佷笢鍘�", 430481: "鑰掗槼甯�", 430482: "甯稿畞甯�", 430483: "鍏跺畠鍖�", 430500: "閭甸槼甯�", 430502: "鍙屾竻鍖�", 430503: "澶хゥ鍖�", 430511: "鍖楀鍖�", 430521: "閭典笢鍘�", 430522: "鏂伴偟鍘�", 430523: "閭甸槼鍘�", 430524: "闅嗗洖鍘�", 430525: "娲炲彛鍘�", 430527: "缁ュ畞鍘�", 430528: "鏂板畞鍘�", 430529: "鍩庢鑻楁棌鑷不鍘�", 430581: "姝﹀唸甯�", 430582: "鍏跺畠鍖�", 430600: "宀抽槼甯�", 430602: "宀抽槼妤煎尯", 430603: "浜戞邯鍖�", 430611: "鍚涘北鍖�", 430621: "宀抽槼鍘�", 430623: "鍗庡鍘�", 430624: "婀橀槾鍘�", 430626: "骞虫睙鍘�", 430681: "姹ㄧ綏甯�", 430682: "涓存箻甯�", 430683: "鍏跺畠鍖�", 430700: "甯稿痉甯�", 430702: "姝﹂櫟鍖�", 430703: "榧庡煄鍖�", 430721: "瀹変埂鍘�", 430722: "姹夊鍘�", 430723: "婢у幙", 430724: "涓存晶鍘�", 430725: "妗冩簮鍘�", 430726: "鐭抽棬鍘�", 430781: "娲ュ競甯�", 430782: "鍏跺畠鍖�", 430800: "寮犲鐣屽競", 430802: "姘稿畾鍖�", 430811: "姝﹂櫟婧愬尯", 430821: "鎱堝埄鍘�", 430822: "妗戞鍘�", 430823: "鍏跺畠鍖�", 430900: "鐩婇槼甯�", 430902: "璧勯槼鍖�", 430903: "璧北鍖�", 430921: "鍗楀幙", 430922: "妗冩睙鍘�", 430923: "瀹夊寲鍘�", 430981: "娌呮睙甯�", 430982: "鍏跺畠鍖�", 431e3: "閮村窞甯�", 431002: "鍖楁箹鍖�", 431003: "鑻忎粰鍖�", 431021: "妗傞槼鍘�", 431022: "瀹滅珷鍘�", 431023: "姘稿叴鍘�", 431024: "鍢夌鍘�", 431025: "涓存鍘�", 431026: "姹濆煄鍘�", 431027: "妗備笢鍘�", 431028: "瀹変粊鍘�", 431081: "璧勫叴甯�", 431082: "鍏跺畠鍖�", 431100: "姘稿窞甯�", 431102: "闆堕櫟鍖�", 431103: "鍐锋按婊╁尯", 431121: "绁侀槼鍘�", 431122: "涓滃畨鍘�", 431123: "鍙岀墝鍘�", 431124: "閬撳幙", 431125: "姹熸案鍘�", 431126: "瀹佽繙鍘�", 431127: "钃濆北鍘�", 431128: "鏂扮敯鍘�", 431129: "姹熷崕鐟舵棌鑷不鍘�", 431130: "鍏跺畠鍖�", 431200: "鎬�鍖栧競", 431202: "楣ゅ煄鍖�", 431221: "涓柟鍘�", 431222: "娌呴櫟鍘�", 431223: "杈版邯鍘�", 431224: "婧嗘郸鍘�", 431225: "浼氬悓鍘�", 431226: "楹婚槼鑻楁棌鑷不鍘�", 431227: "鏂版檭渚楁棌鑷不鍘�", 431228: "鑺锋睙渚楁棌鑷不鍘�", 431229: "闈栧窞鑻楁棌渚楁棌鑷不鍘�", 431230: "閫氶亾渚楁棌鑷不鍘�", 431281: "娲睙甯�", 431282: "鍏跺畠鍖�", 431300: "濞勫簳甯�", 431302: "濞勬槦鍖�", 431321: "鍙屽嘲鍘�", 431322: "鏂板寲鍘�", 431381: "鍐锋按姹熷競", 431382: "娑熸簮甯�", 431383: "鍏跺畠鍖�", 433100: "婀樿タ鍦熷鏃忚嫍鏃忚嚜娌诲窞", 433101: "鍚夐甯�", 433122: "娉告邯鍘�", 433123: "鍑ゅ嚢鍘�", 433124: "鑺卞灒鍘�", 433125: "淇濋潠鍘�", 433126: "鍙や笀鍘�", 433127: "姘搁『鍘�", 433130: "榫欏北鍘�", 433131: "鍏跺畠鍖�", 44e4: "骞夸笢鐪�", 440100: "骞垮窞甯�", 440103: "鑽旀咕鍖�", 440104: "瓒婄鍖�", 440105: "娴风彔鍖�", 440106: "澶╂渤鍖�", 440111: "鐧戒簯鍖�", 440112: "榛勫煍鍖�", 440113: "鐣鍖�", 440114: "鑺遍兘鍖�", 440115: "鍗楁矙鍖�", 440116: "钀濆矖鍖�", 440183: "澧炲煄甯�", 440184: "浠庡寲甯�", 440189: "鍏跺畠鍖�", 440200: "闊跺叧甯�", 440203: "姝︽睙鍖�", 440204: "娴堟睙鍖�", 440205: "鏇叉睙鍖�", 440222: "濮嬪叴鍘�", 440224: "浠佸寲鍘�", 440229: "缈佹簮鍘�", 440232: "涔虫簮鐟舵棌鑷不鍘�", 440233: "鏂颁赴鍘�", 440281: "涔愭槍甯�", 440282: "鍗楅泟甯�", 440283: "鍏跺畠鍖�", 440300: "娣卞湷甯�", 440303: "缃楁箹鍖�", 440304: "绂忕敯鍖�", 440305: "鍗楀北鍖�", 440306: "瀹濆畨鍖�", 440307: "榫欏矖鍖�", 440308: "鐩愮敯鍖�", 440309: "鍏跺畠鍖�", 440320: "鍏夋槑鏂板尯", 440321: "鍧北鏂板尯", 440322: "澶ч箯鏂板尯", 440323: "榫欏崕鏂板尯", 440400: "鐝犳捣甯�", 440402: "棣欐床鍖�", 440403: "鏂楅棬鍖�", 440404: "閲戞咕鍖�", 440488: "鍏跺畠鍖�", 440500: "姹曞ご甯�", 440507: "榫欐箹鍖�", 440511: "閲戝钩鍖�", 440512: "婵犳睙鍖�", 440513: "娼槼鍖�", 440514: "娼崡鍖�", 440515: "婢勬捣鍖�", 440523: "鍗楁境鍘�", 440524: "鍏跺畠鍖�", 440600: "浣涘北甯�", 440604: "绂呭煄鍖�", 440605: "鍗楁捣鍖�", 440606: "椤哄痉鍖�", 440607: "涓夋按鍖�", 440608: "楂樻槑鍖�", 440609: "鍏跺畠鍖�", 440700: "姹熼棬甯�", 440703: "钃睙鍖�", 440704: "姹熸捣鍖�", 440705: "鏂颁細鍖�", 440781: "鍙板北甯�", 440783: "寮�骞冲競", 440784: "楣ゅ北甯�", 440785: "鎭╁钩甯�", 440786: "鍏跺畠鍖�", 440800: "婀涙睙甯�", 440802: "璧ゅ潕鍖�", 440803: "闇炲北鍖�", 440804: "鍧″ご鍖�", 440811: "楹荤珷鍖�", 440823: "閬傛邯鍘�", 440825: "寰愰椈鍘�", 440881: "寤夋睙甯�", 440882: "闆峰窞甯�", 440883: "鍚村窛甯�", 440884: "鍏跺畠鍖�", 440900: "鑼傚悕甯�", 440902: "鑼傚崡鍖�", 440903: "鑼傛腐鍖�", 440923: "鐢电櫧鍘�", 440981: "楂樺窞甯�", 440982: "鍖栧窞甯�", 440983: "淇″疁甯�", 440984: "鍏跺畠鍖�", 441200: "鑲囧簡甯�", 441202: "绔窞鍖�", 441203: "榧庢箹鍖�", 441223: "骞垮畞鍘�", 441224: "鎬�闆嗗幙", 441225: "灏佸紑鍘�", 441226: "寰峰簡鍘�", 441283: "楂樿甯�", 441284: "鍥涗細甯�", 441285: "鍏跺畠鍖�", 441300: "鎯犲窞甯�", 441302: "鎯犲煄鍖�", 441303: "鎯犻槼鍖�", 441322: "鍗氱綏鍘�", 441323: "鎯犱笢鍘�", 441324: "榫欓棬鍘�", 441325: "鍏跺畠鍖�", 441400: "姊呭窞甯�", 441402: "姊呮睙鍖�", 441421: "姊呭幙", 441422: "澶у煍鍘�", 441423: "涓伴『鍘�", 441424: "浜斿崕鍘�", 441426: "骞宠繙鍘�", 441427: "钑夊箔鍘�", 441481: "鍏村畞甯�", 441482: "鍏跺畠鍖�", 441500: "姹曞熬甯�", 441502: "鍩庡尯", 441521: "娴蜂赴鍘�", 441523: "闄嗘渤鍘�", 441581: "闄嗕赴甯�", 441582: "鍏跺畠鍖�", 441600: "娌虫簮甯�", 441602: "婧愬煄鍖�", 441621: "绱噾鍘�", 441622: "榫欏窛鍘�", 441623: "杩炲钩鍘�", 441624: "鍜屽钩鍘�", 441625: "涓滄簮鍘�", 441626: "鍏跺畠鍖�", 441700: "闃虫睙甯�", 441702: "姹熷煄鍖�", 441721: "闃宠タ鍘�", 441723: "闃充笢鍘�", 441781: "闃虫槬甯�", 441782: "鍏跺畠鍖�", 441800: "娓呰繙甯�", 441802: "娓呭煄鍖�", 441821: "浣涘唸鍘�", 441823: "闃冲北鍘�", 441825: "杩炲北澹棌鐟舵棌鑷不鍘�", 441826: "杩炲崡鐟舵棌鑷不鍘�", 441827: "娓呮柊鍖�", 441881: "鑻卞痉甯�", 441882: "杩炲窞甯�", 441883: "鍏跺畠鍖�", 441900: "涓滆帪甯�", 442e3: "涓北甯�", 442101: "涓滄矙缇ゅ矝", 445100: "娼窞甯�", 445102: "婀樻ˉ鍖�", 445121: "娼畨鍖�", 445122: "楗跺钩鍘�", 445186: "鍏跺畠鍖�", 445200: "鎻槼甯�", 445202: "姒曞煄鍖�", 445221: "鎻笢鍖�", 445222: "鎻タ鍘�", 445224: "鎯犳潵鍘�", 445281: "鏅畞甯�", 445285: "鍏跺畠鍖�", 445300: "浜戞诞甯�", 445302: "浜戝煄鍖�", 445321: "鏂板叴鍘�", 445322: "閮佸崡鍘�", 445323: "浜戝畨鍘�", 445381: "缃楀畾甯�", 445382: "鍏跺畠鍖�", 45e4: "骞胯タ澹棌鑷不鍖�", 450100: "鍗楀畞甯�", 450102: "鍏村畞鍖�", 450103: "闈掔鍖�", 450105: "姹熷崡鍖�", 450107: "瑗夸埂濉樺尯", 450108: "鑹簡鍖�", 450109: "閭曞畞鍖�", 450122: "姝﹂福鍘�", 450123: "闅嗗畨鍘�", 450124: "椹北鍘�", 450125: "涓婃灄鍘�", 450126: "瀹鹃槼鍘�", 450127: "妯幙", 450128: "鍏跺畠鍖�", 450200: "鏌冲窞甯�", 450202: "鍩庝腑鍖�", 450203: "楸煎嘲鍖�", 450204: "鏌冲崡鍖�", 450205: "鏌冲寳鍖�", 450221: "鏌虫睙鍘�", 450222: "鏌冲煄鍘�", 450223: "楣垮鍘�", 450224: "铻嶅畨鍘�", 450225: "铻嶆按鑻楁棌鑷不鍘�", 450226: "涓夋睙渚楁棌鑷不鍘�", 450227: "鍏跺畠鍖�", 450300: "妗傛灄甯�", 450302: "绉�宄板尯", 450303: "鍙犲僵鍖�", 450304: "璞″北鍖�", 450305: "涓冩槦鍖�", 450311: "闆佸北鍖�", 450321: "闃虫湐鍘�", 450322: "涓存鍖�", 450323: "鐏靛窛鍘�", 450324: "鍏ㄥ窞鍘�", 450325: "鍏村畨鍘�", 450326: "姘哥鍘�", 450327: "鐏岄槼鍘�", 450328: "榫欒儨鍚勬棌鑷不鍘�", 450329: "璧勬簮鍘�", 450330: "骞充箰鍘�", 450331: "鑽旀郸鍘�", 450332: "鎭煄鐟舵棌鑷不鍘�", 450333: "鍏跺畠鍖�", 450400: "姊у窞甯�", 450403: "涓囩鍖�", 450405: "闀挎床鍖�", 450406: "榫欏湬鍖�", 450421: "鑻嶆ⅶ鍘�", 450422: "钘ゅ幙", 450423: "钂欏北鍘�", 450481: "宀戞邯甯�", 450482: "鍏跺畠鍖�", 450500: "鍖楁捣甯�", 450502: "娴峰煄鍖�", 450503: "閾舵捣鍖�", 450512: "閾佸北娓尯", 450521: "鍚堟郸鍘�", 450522: "鍏跺畠鍖�", 450600: "闃插煄娓競", 450602: "娓彛鍖�", 450603: "闃插煄鍖�", 450621: "涓婃�濆幙", 450681: "涓滃叴甯�", 450682: "鍏跺畠鍖�", 450700: "閽﹀窞甯�", 450702: "閽﹀崡鍖�", 450703: "閽﹀寳鍖�", 450721: "鐏靛北鍘�", 450722: "娴﹀寳鍘�", 450723: "鍏跺畠鍖�", 450800: "璐垫腐甯�", 450802: "娓寳鍖�", 450803: "娓崡鍖�", 450804: "瑕冨鍖�", 450821: "骞冲崡鍘�", 450881: "妗傚钩甯�", 450882: "鍏跺畠鍖�", 450900: "鐜夋灄甯�", 450902: "鐜夊窞鍖�", 450903: "绂忕坏鍖�", 450921: "瀹瑰幙", 450922: "闄嗗窛鍘�", 450923: "鍗氱櫧鍘�", 450924: "鍏翠笟鍘�", 450981: "鍖楁祦甯�", 450982: "鍏跺畠鍖�", 451e3: "鐧捐壊甯�", 451002: "鍙虫睙鍖�", 451021: "鐢伴槼鍘�", 451022: "鐢颁笢鍘�", 451023: "骞虫灉鍘�", 451024: "寰蜂繚鍘�", 451025: "闈栬タ鍘�", 451026: "閭e潯鍘�", 451027: "鍑屼簯鍘�", 451028: "涔愪笟鍘�", 451029: "鐢版灄鍘�", 451030: "瑗挎灄鍘�", 451031: "闅嗘灄鍚勬棌鑷不鍘�", 451032: "鍏跺畠鍖�", 451100: "璐哄窞甯�", 451102: "鍏鍖�", 451119: "骞虫绠$悊鍖�", 451121: "鏄钩鍘�", 451122: "閽熷北鍘�", 451123: "瀵屽窛鐟舵棌鑷不鍘�", 451124: "鍏跺畠鍖�", 451200: "娌虫睜甯�", 451202: "閲戝煄姹熷尯", 451221: "鍗椾腹鍘�", 451222: "澶╁敞鍘�", 451223: "鍑ゅ北鍘�", 451224: "涓滃叞鍘�", 451225: "缃楀煄浠浆鏃忚嚜娌诲幙", 451226: "鐜睙姣涘崡鏃忚嚜娌诲幙", 451227: "宸撮┈鐟舵棌鑷不鍘�", 451228: "閮藉畨鐟舵棌鑷不鍘�", 451229: "澶у寲鐟舵棌鑷不鍘�", 451281: "瀹滃窞甯�", 451282: "鍏跺畠鍖�", 451300: "鏉ュ甯�", 451302: "鍏村鍖�", 451321: "蹇诲煄鍘�", 451322: "璞″窞鍘�", 451323: "姝﹀鍘�", 451324: "閲戠鐟舵棌鑷不鍘�", 451381: "鍚堝北甯�", 451382: "鍏跺畠鍖�", 451400: "宕囧乏甯�", 451402: "姹熷窞鍖�", 451421: "鎵剁互鍘�", 451422: "瀹佹槑鍘�", 451423: "榫欏窞鍘�", 451424: "澶ф柊鍘�", 451425: "澶╃瓑鍘�", 451481: "鍑ゥ甯�", 451482: "鍏跺畠鍖�", 46e4: "娴峰崡鐪�", 460100: "娴峰彛甯�", 460105: "绉�鑻卞尯", 460106: "榫欏崕鍖�", 460107: "鐞煎北鍖�", 460108: "缇庡叞鍖�", 460109: "鍏跺畠鍖�", 460200: "涓変簹甯�", 460300: "涓夋矙甯�", 460321: "瑗挎矙缇ゅ矝", 460322: "鍗楁矙缇ゅ矝", 460323: "涓矙缇ゅ矝鐨勫矝绀佸強鍏舵捣鍩�", 469001: "浜旀寚灞卞競", 469002: "鐞兼捣甯�", 469003: "鍎嬪窞甯�", 469005: "鏂囨槍甯�", 469006: "涓囧畞甯�", 469007: "涓滄柟甯�", 469025: "瀹氬畨鍘�", 469026: "灞槍鍘�", 469027: "婢勮繄鍘�", 469028: "涓撮珮鍘�", 469030: "鐧芥矙榛庢棌鑷不鍘�", 469031: "鏄屾睙榛庢棌鑷不鍘�", 469033: "涔愪笢榛庢棌鑷不鍘�", 469034: "闄垫按榛庢棌鑷不鍘�", 469035: "淇濅涵榛庢棌鑻楁棌鑷不鍘�", 469036: "鐞间腑榛庢棌鑻楁棌鑷不鍘�", 471005: "鍏跺畠鍖�", 5e5: "閲嶅簡", 500100: "閲嶅簡甯�", 500101: "涓囧窞鍖�", 500102: "娑櫟鍖�", 500103: "娓濅腑鍖�", 500104: "澶ф浮鍙e尯", 500105: "姹熷寳鍖�", 500106: "娌欏潽鍧濆尯", 500107: "涔濋緳鍧″尯", 500108: "鍗楀哺鍖�", 500109: "鍖楃鍖�", 500110: "涓囩洓鍖�", 500111: "鍙屾ˉ鍖�", 500112: "娓濆寳鍖�", 500113: "宸村崡鍖�", 500114: "榛旀睙鍖�", 500115: "闀垮鍖�", 500222: "缍︽睙鍖�", 500223: "娼煎崡鍘�", 500224: "閾滄鍘�", 500225: "澶ц冻鍖�", 500226: "鑽f槍鍘�", 500227: "鐠у北鍘�", 500228: "姊佸钩鍘�", 500229: "鍩庡彛鍘�", 500230: "涓伴兘鍘�", 500231: "鍨睙鍘�", 500232: "姝﹂殕鍘�", 500233: "蹇犲幙", 500234: "寮�鍘�", 500235: "浜戦槼鍘�", 500236: "濂夎妭鍘�", 500237: "宸北鍘�", 500238: "宸邯鍘�", 500240: "鐭虫煴鍦熷鏃忚嚜娌诲幙", 500241: "绉�灞卞湡瀹舵棌鑻楁棌鑷不鍘�", 500242: "閰夐槼鍦熷鏃忚嫍鏃忚嚜娌诲幙", 500243: "褰按鑻楁棌鍦熷鏃忚嚜娌诲幙", 500381: "姹熸触鍖�", 500382: "鍚堝窛鍖�", 500383: "姘稿窛鍖�", 500384: "鍗楀窛鍖�", 500385: "鍏跺畠鍖�", 51e4: "鍥涘窛鐪�", 510100: "鎴愰兘甯�", 510104: "閿︽睙鍖�", 510105: "闈掔緤鍖�", 510106: "閲戠墰鍖�", 510107: "姝︿警鍖�", 510108: "鎴愬崕鍖�", 510112: "榫欐硥椹垮尯", 510113: "闈掔櫧姹熷尯", 510114: "鏂伴兘鍖�", 510115: "娓╂睙鍖�", 510121: "閲戝爞鍘�", 510122: "鍙屾祦鍘�", 510124: "閮幙", 510129: "澶ч倯鍘�", 510131: "钂叉睙鍘�", 510132: "鏂版触鍘�", 510181: "閮芥睙鍫板競", 510182: "褰窞甯�", 510183: "閭涘磧甯�", 510184: "宕囧窞甯�", 510185: "鍏跺畠鍖�", 510300: "鑷础甯�", 510302: "鑷祦浜曞尯", 510303: "璐′簳鍖�", 510304: "澶у畨鍖�", 510311: "娌挎哗鍖�", 510321: "鑽e幙", 510322: "瀵岄『鍘�", 510323: "鍏跺畠鍖�", 510400: "鏀�鏋濊姳甯�", 510402: "涓滃尯", 510403: "瑗垮尯", 510411: "浠佸拰鍖�", 510421: "绫虫槗鍘�", 510422: "鐩愯竟鍘�", 510423: "鍏跺畠鍖�", 510500: "娉稿窞甯�", 510502: "姹熼槼鍖�", 510503: "绾虫邯鍖�", 510504: "榫欓┈娼尯", 510521: "娉稿幙", 510522: "鍚堟睙鍘�", 510524: "鍙欐案鍘�", 510525: "鍙よ敽鍘�", 510526: "鍏跺畠鍖�", 510600: "寰烽槼甯�", 510603: "鏃岄槼鍖�", 510623: "涓睙鍘�", 510626: "缃楁睙鍘�", 510681: "骞挎眽甯�", 510682: "浠�閭″競", 510683: "缁电甯�", 510684: "鍏跺畠鍖�", 510700: "缁甸槼甯�", 510703: "娑煄鍖�", 510704: "娓镐粰鍖�", 510722: "涓夊彴鍘�", 510723: "鐩愪涵鍘�", 510724: "瀹夊幙", 510725: "姊撴郊鍘�", 510726: "鍖楀窛缇屾棌鑷不鍘�", 510727: "骞虫鍘�", 510781: "姹熸补甯�", 510782: "鍏跺畠鍖�", 510800: "骞垮厓甯�", 510802: "鍒╁窞鍖�", 510811: "鏄寲鍖�", 510812: "鏈濆ぉ鍖�", 510821: "鏃鸿媿鍘�", 510822: "闈掑窛鍘�", 510823: "鍓戦榿鍘�", 510824: "鑻嶆邯鍘�", 510825: "鍏跺畠鍖�", 510900: "閬傚畞甯�", 510903: "鑸瑰北鍖�", 510904: "瀹夊眳鍖�", 510921: "钃邯鍘�", 510922: "灏勬椽鍘�", 510923: "澶ц嫳鍘�", 510924: "鍏跺畠鍖�", 511e3: "鍐呮睙甯�", 511002: "甯備腑鍖�", 511011: "涓滃叴鍖�", 511024: "濞佽繙鍘�", 511025: "璧勪腑鍘�", 511028: "闅嗘槍鍘�", 511029: "鍏跺畠鍖�", 511100: "涔愬北甯�", 511102: "甯備腑鍖�", 511111: "娌欐咕鍖�", 511112: "浜旈�氭ˉ鍖�", 511113: "閲戝彛娌冲尯", 511123: "鐘嶄负鍘�", 511124: "浜曠爺鍘�", 511126: "澶规睙鍘�", 511129: "娌愬窛鍘�", 511132: "宄ㄨ竟褰濇棌鑷不鍘�", 511133: "椹竟褰濇棌鑷不鍘�", 511181: "宄ㄧ湁灞卞競", 511182: "鍏跺畠鍖�", 511300: "鍗楀厖甯�", 511302: "椤哄簡鍖�", 511303: "楂樺潽鍖�", 511304: "鍢夐櫟鍖�", 511321: "鍗楅儴鍘�", 511322: "钀ュ北鍘�", 511323: "钃畨鍘�", 511324: "浠檱鍘�", 511325: "瑗垮厖鍘�", 511381: "闃嗕腑甯�", 511382: "鍏跺畠鍖�", 511400: "鐪夊北甯�", 511402: "涓滃潯鍖�", 511421: "浠佸鍘�", 511422: "褰北鍘�", 511423: "娲泤鍘�", 511424: "涓规1鍘�", 511425: "闈掔鍘�", 511426: "鍏跺畠鍖�", 511500: "瀹滃甯�", 511502: "缈犲睆鍖�", 511521: "瀹滃鍘�", 511522: "鍗楁邯鍖�", 511523: "姹熷畨鍘�", 511524: "闀垮畞鍘�", 511525: "楂樺幙", 511526: "鐝欏幙", 511527: "绛犺繛鍘�", 511528: "鍏存枃鍘�", 511529: "灞忓北鍘�", 511530: "鍏跺畠鍖�", 511600: "骞垮畨甯�", 511602: "骞垮畨鍖�", 511603: "鍓嶉攱鍖�", 511621: "宀虫睜鍘�", 511622: "姝﹁儨鍘�", 511623: "閭绘按鍘�", 511681: "鍗庤摜甯�", 511683: "鍏跺畠鍖�", 511700: "杈惧窞甯�", 511702: "閫氬窛鍖�", 511721: "杈惧窛鍖�", 511722: "瀹f眽鍘�", 511723: "寮�姹熷幙", 511724: "澶х鍘�", 511725: "娓犲幙", 511781: "涓囨簮甯�", 511782: "鍏跺畠鍖�", 511800: "闆呭畨甯�", 511802: "闆ㄥ煄鍖�", 511821: "鍚嶅北鍖�", 511822: "鑽ョ粡鍘�", 511823: "姹夋簮鍘�", 511824: "鐭虫鍘�", 511825: "澶╁叏鍘�", 511826: "鑺﹀北鍘�", 511827: "瀹濆叴鍘�", 511828: "鍏跺畠鍖�", 511900: "宸翠腑甯�", 511902: "宸村窞鍖�", 511903: "鎭╅槼鍖�", 511921: "閫氭睙鍘�", 511922: "鍗楁睙鍘�", 511923: "骞虫槍鍘�", 511924: "鍏跺畠鍖�", 512e3: "璧勯槼甯�", 512002: "闆佹睙鍖�", 512021: "瀹夊渤鍘�", 512022: "涔愯嚦鍘�", 512081: "绠�闃冲競", 512082: "鍏跺畠鍖�", 513200: "闃垮潩钘忔棌缇屾棌鑷不宸�", 513221: "姹跺窛鍘�", 513222: "鐞嗗幙", 513223: "鑼傚幙", 513224: "鏉炬綐鍘�", 513225: "涔濆娌熷幙", 513226: "閲戝窛鍘�", 513227: "灏忛噾鍘�", 513228: "榛戞按鍘�", 513229: "椹皵搴峰幙", 513230: "澹ゅ鍘�", 513231: "闃垮潩鍘�", 513232: "鑻ュ皵鐩栧幙", 513233: "绾㈠師鍘�", 513234: "鍏跺畠鍖�", 513300: "鐢樺瓬钘忔棌鑷不宸�", 513321: "搴峰畾鍘�", 513322: "娉稿畾鍘�", 513323: "涓瑰反鍘�", 513324: "涔濋緳鍘�", 513325: "闆呮睙鍘�", 513326: "閬撳瓪鍘�", 513327: "鐐夐湇鍘�", 513328: "鐢樺瓬鍘�", 513329: "鏂伴緳鍘�", 513330: "寰锋牸鍘�", 513331: "鐧界帀鍘�", 513332: "鐭虫笭鍘�", 513333: "鑹茶揪鍘�", 513334: "鐞嗗鍘�", 513335: "宸村鍘�", 513336: "涔″煄鍘�", 513337: "绋诲煄鍘�", 513338: "寰楄崳鍘�", 513339: "鍏跺畠鍖�", 513400: "鍑夊北褰濇棌鑷不宸�", 513401: "瑗挎槍甯�", 513422: "鏈ㄩ噷钘忔棌鑷不鍘�", 513423: "鐩愭簮鍘�", 513424: "寰锋槍鍘�", 513425: "浼氱悊鍘�", 513426: "浼氫笢鍘�", 513427: "瀹佸崡鍘�", 513428: "鏅牸鍘�", 513429: "甯冩嫋鍘�", 513430: "閲戦槼鍘�", 513431: "鏄鍘�", 513432: "鍠滃痉鍘�", 513433: "鍐曞畞鍘�", 513434: "瓒婅タ鍘�", 513435: "鐢樻礇鍘�", 513436: "缇庡鍘�", 513437: "闆锋尝鍘�", 513438: "鍏跺畠鍖�", 52e4: "璐靛窞鐪�", 520100: "璐甸槼甯�", 520102: "鍗楁槑鍖�", 520103: "浜戝博鍖�", 520111: "鑺辨邯鍖�", 520112: "涔屽綋鍖�", 520113: "鐧戒簯鍖�", 520121: "寮�闃冲幙", 520122: "鎭兘鍘�", 520123: "淇枃鍘�", 520151: "瑙傚北婀栧尯", 520181: "娓呴晣甯�", 520182: "鍏跺畠鍖�", 520200: "鍏洏姘村競", 520201: "閽熷北鍖�", 520203: "鍏灊鐗瑰尯", 520221: "姘村煄鍘�", 520222: "鐩樺幙", 520223: "鍏跺畠鍖�", 520300: "閬典箟甯�", 520302: "绾㈣姳宀楀尯", 520303: "姹囧窛鍖�", 520321: "閬典箟鍘�", 520322: "妗愭鍘�", 520323: "缁ラ槼鍘�", 520324: "姝e畨鍘�", 520325: "閬撶湡浠′浆鏃忚嫍鏃忚嚜娌诲幙", 520326: "鍔″窛浠′浆鏃忚嫍鏃忚嚜娌诲幙", 520327: "鍑ゅ唸鍘�", 520328: "婀勬江鍘�", 520329: "浣欏簡鍘�", 520330: "涔犳按鍘�", 520381: "璧ゆ按甯�", 520382: "浠佹��甯�", 520383: "鍏跺畠鍖�", 520400: "瀹夐『甯�", 520402: "瑗跨鍖�", 520421: "骞冲潩鍘�", 520422: "鏅畾鍘�", 520423: "闀囧畞甯冧緷鏃忚嫍鏃忚嚜娌诲幙", 520424: "鍏冲箔甯冧緷鏃忚嫍鏃忚嚜娌诲幙", 520425: "绱簯鑻楁棌甯冧緷鏃忚嚜娌诲幙", 520426: "鍏跺畠鍖�", 522200: "閾滀粊甯�", 522201: "纰ф睙鍖�", 522222: "姹熷彛鍘�", 522223: "鐜夊睆渚楁棌鑷不鍘�", 522224: "鐭抽槨鍘�", 522225: "鎬濆崡鍘�", 522226: "鍗版睙鍦熷鏃忚嫍鏃忚嚜娌诲幙", 522227: "寰锋睙鍘�", 522228: "娌挎渤鍦熷鏃忚嚜娌诲幙", 522229: "鏉炬鑻楁棌鑷不鍘�", 522230: "涓囧北鍖�", 522231: "鍏跺畠鍖�", 522300: "榛旇タ鍗楀竷渚濇棌鑻楁棌鑷不宸�", 522301: "鍏翠箟甯�", 522322: "鍏翠粊鍘�", 522323: "鏅畨鍘�", 522324: "鏅撮殕鍘�", 522325: "璐炰赴鍘�", 522326: "鏈涜盁鍘�", 522327: "鍐屼酣鍘�", 522328: "瀹夐緳鍘�", 522329: "鍏跺畠鍖�", 522400: "姣曡妭甯�", 522401: "涓冩槦鍏冲尯", 522422: "澶ф柟鍘�", 522423: "榛旇タ鍘�", 522424: "閲戞矙鍘�", 522425: "缁囬噾鍘�", 522426: "绾抽泹鍘�", 522427: "濞佸畞褰濇棌鍥炴棌鑻楁棌鑷不鍘�", 522428: "璧珷鍘�", 522429: "鍏跺畠鍖�", 522600: "榛斾笢鍗楄嫍鏃忎緱鏃忚嚜娌诲窞", 522601: "鍑噷甯�", 522622: "榛勫钩鍘�", 522623: "鏂界鍘�", 522624: "涓夌鍘�", 522625: "闀囪繙鍘�", 522626: "宀戝珐鍘�", 522627: "澶╂煴鍘�", 522628: "閿﹀睆鍘�", 522629: "鍓戞渤鍘�", 522630: "鍙版睙鍘�", 522631: "榛庡钩鍘�", 522632: "姒曟睙鍘�", 522633: "浠庢睙鍘�", 522634: "闆峰北鍘�", 522635: "楹绘睙鍘�", 522636: "涓瑰鍘�", 522637: "鍏跺畠鍖�", 522700: "榛斿崡甯冧緷鏃忚嫍鏃忚嚜娌诲窞", 522701: "閮藉寑甯�", 522702: "绂忔硥甯�", 522722: "鑽旀尝鍘�", 522723: "璐靛畾鍘�", 522725: "鐡畨鍘�", 522726: "鐙北鍘�", 522727: "骞冲鍘�", 522728: "缃楃敻鍘�", 522729: "闀块『鍘�", 522730: "榫欓噷鍘�", 522731: "鎯犳按鍘�", 522732: "涓夐兘姘存棌鑷不鍘�", 522733: "鍏跺畠鍖�", 53e4: "浜戝崡鐪�", 530100: "鏄嗘槑甯�", 530102: "浜斿崕鍖�", 530103: "鐩橀緳鍖�", 530111: "瀹樻浮鍖�", 530112: "瑗垮北鍖�", 530113: "涓滃窛鍖�", 530121: "鍛堣础鍖�", 530122: "鏅嬪畞鍘�", 530124: "瀵屾皯鍘�", 530125: "瀹滆壇鍘�", 530126: "鐭虫灄褰濇棌鑷不鍘�", 530127: "宓╂槑鍘�", 530128: "绂勫姖褰濇棌鑻楁棌鑷不鍘�", 530129: "瀵荤敻鍥炴棌褰濇棌鑷不鍘�", 530181: "瀹夊畞甯�", 530182: "鍏跺畠鍖�", 530300: "鏇查潠甯�", 530302: "楹掗簾鍖�", 530321: "椹緳鍘�", 530322: "闄嗚壇鍘�", 530323: "甯堝畻鍘�", 530324: "缃楀钩鍘�", 530325: "瀵屾簮鍘�", 530326: "浼氭辰鍘�", 530328: "娌剧泭鍘�", 530381: "瀹e▉甯�", 530382: "鍏跺畠鍖�", 530400: "鐜夋邯甯�", 530402: "绾㈠鍖�", 530421: "姹熷窛鍘�", 530422: "婢勬睙鍘�", 530423: "閫氭捣鍘�", 530424: "鍗庡畞鍘�", 530425: "鏄撻棬鍘�", 530426: "宄ㄥ北褰濇棌鑷不鍘�", 530427: "鏂板钩褰濇棌鍌f棌鑷不鍘�", 530428: "鍏冩睙鍝堝凹鏃忓綕鏃忓偅鏃忚嚜娌诲幙", 530429: "鍏跺畠鍖�", 530500: "淇濆北甯�", 530502: "闅嗛槼鍖�", 530521: "鏂界敻鍘�", 530522: "鑵惧啿鍘�", 530523: "榫欓櫟鍘�", 530524: "鏄屽畞鍘�", 530525: "鍏跺畠鍖�", 530600: "鏄�氬競", 530602: "鏄槼鍖�", 530621: "椴佺敻鍘�", 530622: "宸у鍘�", 530623: "鐩愭触鍘�", 530624: "澶у叧鍘�", 530625: "姘稿杽鍘�", 530626: "缁ユ睙鍘�", 530627: "闀囬泟鍘�", 530628: "褰濊壇鍘�", 530629: "濞佷俊鍘�", 530630: "姘村瘜鍘�", 530631: "鍏跺畠鍖�", 530700: "涓芥睙甯�", 530702: "鍙ゅ煄鍖�", 530721: "鐜夐緳绾宠タ鏃忚嚜娌诲幙", 530722: "姘歌儨鍘�", 530723: "鍗庡潽鍘�", 530724: "瀹佽挆褰濇棌鑷不鍘�", 530725: "鍏跺畠鍖�", 530800: "鏅幢甯�", 530802: "鎬濊寘鍖�", 530821: "瀹佹幢鍝堝凹鏃忓綕鏃忚嚜娌诲幙", 530822: "澧ㄦ睙鍝堝凹鏃忚嚜娌诲幙", 530823: "鏅笢褰濇棌鑷不鍘�", 530824: "鏅胺鍌f棌褰濇棌鑷不鍘�", 530825: "闀囨矃褰濇棌鍝堝凹鏃忔媺绁滄棌鑷不鍘�", 530826: "姹熷煄鍝堝凹鏃忓綕鏃忚嚜娌诲幙", 530827: "瀛熻繛鍌f棌鎷夌鏃忎饯鏃忚嚜娌诲幙", 530828: "婢滄钵鎷夌鏃忚嚜娌诲幙", 530829: "瑗跨洘浣ゆ棌鑷不鍘�", 530830: "鍏跺畠鍖�", 530900: "涓存钵甯�", 530902: "涓寸繑鍖�", 530921: "鍑ゅ簡鍘�", 530922: "浜戝幙", 530923: "姘稿痉鍘�", 530924: "闀囧悍鍘�", 530925: "鍙屾睙鎷夌鏃忎饯鏃忓竷鏈楁棌鍌f棌鑷不鍘�", 530926: "鑰块┈鍌f棌浣ゆ棌鑷不鍘�", 530927: "娌ф簮浣ゆ棌鑷不鍘�", 530928: "鍏跺畠鍖�", 532300: "妤氶泟褰濇棌鑷不宸�", 532301: "妤氶泟甯�", 532322: "鍙屾煆鍘�", 532323: "鐗熷畾鍘�", 532324: "鍗楀崕鍘�", 532325: "濮氬畨鍘�", 532326: "澶у鍘�", 532327: "姘镐粊鍘�", 532328: "鍏冭皨鍘�", 532329: "姝﹀畾鍘�", 532331: "绂勪赴鍘�", 532332: "鍏跺畠鍖�", 532500: "绾㈡渤鍝堝凹鏃忓綕鏃忚嚜娌诲窞", 532501: "涓棫甯�", 532502: "寮�杩滃競", 532522: "钂欒嚜甯�", 532523: "灞忚竟鑻楁棌鑷不鍘�", 532524: "寤烘按鍘�", 532525: "鐭冲睆鍘�", 532526: "寮ュ嫆甯�", 532527: "娉歌タ鍘�", 532528: "鍏冮槼鍘�", 532529: "绾㈡渤鍘�", 532530: "閲戝钩鑻楁棌鐟舵棌鍌f棌鑷不鍘�", 532531: "缁挎槬鍘�", 532532: "娌冲彛鐟舵棌鑷不鍘�", 532533: "鍏跺畠鍖�", 532600: "鏂囧北澹棌鑻楁棌鑷不宸�", 532621: "鏂囧北甯�", 532622: "鐮氬北鍘�", 532623: "瑗跨暣鍘�", 532624: "楹绘牀鍧″幙", 532625: "椹叧鍘�", 532626: "涓樺寳鍘�", 532627: "骞垮崡鍘�", 532628: "瀵屽畞鍘�", 532629: "鍏跺畠鍖�", 532800: "瑗垮弻鐗堢撼鍌f棌鑷不宸�", 532801: "鏅椽甯�", 532822: "鍕愭捣鍘�", 532823: "鍕愯厞鍘�", 532824: "鍏跺畠鍖�", 532900: "澶х悊鐧芥棌鑷不宸�", 532901: "澶х悊甯�", 532922: "婕炬繛褰濇棌鑷不鍘�", 532923: "绁ヤ簯鍘�", 532924: "瀹惧窛鍘�", 532925: "寮ユ浮鍘�", 532926: "鍗楁锭褰濇棌鑷不鍘�", 532927: "宸嶅北褰濇棌鍥炴棌鑷不鍘�", 532928: "姘稿钩鍘�", 532929: "浜戦緳鍘�", 532930: "娲辨簮鍘�", 532931: "鍓戝窛鍘�", 532932: "楣ゅ簡鍘�", 532933: "鍏跺畠鍖�", 533100: "寰峰畯鍌f棌鏅鏃忚嚜娌诲窞", 533102: "鐟炰附甯�", 533103: "鑺掑競", 533122: "姊佹渤鍘�", 533123: "鐩堟睙鍘�", 533124: "闄囧窛鍘�", 533125: "鍏跺畠鍖�", 533300: "鎬掓睙鍌堝兂鏃忚嚜娌诲窞", 533321: "娉告按鍘�", 533323: "绂忚础鍘�", 533324: "璐″北鐙緳鏃忔�掓棌鑷不鍘�", 533325: "鍏板潽鐧芥棌鏅背鏃忚嚜娌诲幙", 533326: "鍏跺畠鍖�", 533400: "杩簡钘忔棌鑷不宸�", 533421: "棣欐牸閲屾媺鍘�", 533422: "寰烽挦鍘�", 533423: "缁磋タ鍌堝兂鏃忚嚜娌诲幙", 533424: "鍏跺畠鍖�", 54e4: "瑗胯棌鑷不鍖�", 540100: "鎷夎惃甯�", 540102: "鍩庡叧鍖�", 540121: "鏋楀懆鍘�", 540122: "褰撻泟鍘�", 540123: "灏兼湪鍘�", 540124: "鏇叉按鍘�", 540125: "鍫嗛緳寰峰簡鍘�", 540126: "杈惧瓬鍘�", 540127: "澧ㄧ宸ュ崱鍘�", 540128: "鍏跺畠鍖�", 542100: "鏄岄兘鍦板尯", 542121: "鏄岄兘鍘�", 542122: "姹熻揪鍘�", 542123: "璐¤鍘�", 542124: "绫讳箤榻愬幙", 542125: "涓侀潚鍘�", 542126: "瀵熼泤鍘�", 542127: "鍏鍘�", 542128: "宸﹁础鍘�", 542129: "鑺掑悍鍘�", 542132: "娲涢殕鍘�", 542133: "杈瑰潩鍘�", 542134: "鍏跺畠鍖�", 542200: "灞卞崡鍦板尯", 542221: "涔冧笢鍘�", 542222: "鎵庡泭鍘�", 542223: "璐″槑鍘�", 542224: "妗戞棩鍘�", 542225: "鐞肩粨鍘�", 542226: "鏇叉澗鍘�", 542227: "鎺編鍘�", 542228: "娲涙墡鍘�", 542229: "鍔犳煡鍘�", 542231: "闅嗗瓙鍘�", 542232: "閿欓偅鍘�", 542233: "娴崱瀛愬幙", 542234: "鍏跺畠鍖�", 542300: "鏃ュ杸鍒欏湴鍖�", 542301: "鏃ュ杸鍒欏競", 542322: "鍗楁湪鏋楀幙", 542323: "姹熷瓬鍘�", 542324: "瀹氭棩鍘�", 542325: "钀ㄨ喀鍘�", 542326: "鎷夊瓬鍘�", 542327: "鏄備粊鍘�", 542328: "璋㈤�氶棬鍘�", 542329: "鐧芥湕鍘�", 542330: "浠佸竷鍘�", 542331: "搴烽┈鍘�", 542332: "瀹氱粨鍘�", 542333: "浠插反鍘�", 542334: "浜氫笢鍘�", 542335: "鍚夐殕鍘�", 542336: "鑱傛媺鏈ㄥ幙", 542337: "钀ㄥ槑鍘�", 542338: "宀楀反鍘�", 542339: "鍏跺畠鍖�", 542400: "閭f洸鍦板尯", 542421: "閭f洸鍘�", 542422: "鍢夐粠鍘�", 542423: "姣斿鍘�", 542424: "鑱傝崳鍘�", 542425: "瀹夊鍘�", 542426: "鐢虫墡鍘�", 542427: "绱㈠幙", 542428: "鐝垐鍘�", 542429: "宸撮潚鍘�", 542430: "灏肩帥鍘�", 542431: "鍏跺畠鍖�", 542432: "鍙屾箹鍘�", 542500: "闃块噷鍦板尯", 542521: "鏅叞鍘�", 542522: "鏈揪鍘�", 542523: "鍣跺皵鍘�", 542524: "鏃ュ湡鍘�", 542525: "闈╁悏鍘�", 542526: "鏀瑰垯鍘�", 542527: "鎺嫟鍘�", 542528: "鍏跺畠鍖�", 542600: "鏋楄姖鍦板尯", 542621: "鏋楄姖鍘�", 542622: "宸ュ竷姹熻揪鍘�", 542623: "绫虫灄鍘�", 542624: "澧ㄨ劚鍘�", 542625: "娉㈠瘑鍘�", 542626: "瀵熼殔鍘�", 542627: "鏈楀幙", 542628: "鍏跺畠鍖�", 61e4: "闄曡タ鐪�", 610100: "瑗垮畨甯�", 610102: "鏂板煄鍖�", 610103: "纰戞灄鍖�", 610104: "鑾叉箹鍖�", 610111: "鐏炴ˉ鍖�", 610112: "鏈ぎ鍖�", 610113: "闆佸鍖�", 610114: "闃庤壇鍖�", 610115: "涓存郊鍖�", 610116: "闀垮畨鍖�", 610122: "钃濈敯鍘�", 610124: "鍛ㄨ嚦鍘�", 610125: "鎴峰幙", 610126: "楂橀櫟鍘�", 610127: "鍏跺畠鍖�", 610200: "閾滃窛甯�", 610202: "鐜嬬泭鍖�", 610203: "鍗板彴鍖�", 610204: "鑰�宸炲尯", 610222: "瀹滃悰鍘�", 610223: "鍏跺畠鍖�", 610300: "瀹濋浮甯�", 610302: "娓花鍖�", 610303: "閲戝彴鍖�", 610304: "闄堜粨鍖�", 610322: "鍑ょ繑鍘�", 610323: "宀愬北鍘�", 610324: "鎵堕鍘�", 610326: "鐪夊幙", 610327: "闄囧幙", 610328: "鍗冮槼鍘�", 610329: "楹熸父鍘�", 610330: "鍑ゅ幙", 610331: "澶櫧鍘�", 610332: "鍏跺畠鍖�", 610400: "鍜搁槼甯�", 610402: "绉﹂兘鍖�", 610403: "鏉ㄩ櫟鍖�", 610404: "娓煄鍖�", 610422: "涓夊師鍘�", 610423: "娉鹃槼鍘�", 610424: "涔惧幙", 610425: "绀兼硥鍘�", 610426: "姘稿鍘�", 610427: "褰幙", 610428: "闀挎鍘�", 610429: "鏃倯鍘�", 610430: "娣冲寲鍘�", 610431: "姝﹀姛鍘�", 610481: "鍏村钩甯�", 610482: "鍏跺畠鍖�", 610500: "娓崡甯�", 610502: "涓存腑鍖�", 610521: "鍗庡幙", 610522: "娼煎叧鍘�", 610523: "澶ц崝鍘�", 610524: "鍚堥槼鍘�", 610525: "婢勫煄鍘�", 610526: "钂插煄鍘�", 610527: "鐧芥按鍘�", 610528: "瀵屽钩鍘�", 610581: "闊╁煄甯�", 610582: "鍗庨槾甯�", 610583: "鍏跺畠鍖�", 610600: "寤跺畨甯�", 610602: "瀹濆鍖�", 610621: "寤堕暱鍘�", 610622: "寤跺窛鍘�", 610623: "瀛愰暱鍘�", 610624: "瀹夊鍘�", 610625: "蹇椾腹鍘�", 610626: "鍚磋捣鍘�", 610627: "鐢樻硥鍘�", 610628: "瀵屽幙", 610629: "娲涘窛鍘�", 610630: "瀹滃窛鍘�", 610631: "榛勯緳鍘�", 610632: "榛勯櫟鍘�", 610633: "鍏跺畠鍖�", 610700: "姹変腑甯�", 610702: "姹夊彴鍖�", 610721: "鍗楅儜鍘�", 610722: "鍩庡浐鍘�", 610723: "娲嬪幙", 610724: "瑗夸埂鍘�", 610725: "鍕夊幙", 610726: "瀹佸己鍘�", 610727: "鐣ラ槼鍘�", 610728: "闀囧反鍘�", 610729: "鐣欏潩鍘�", 610730: "浣涘潽鍘�", 610731: "鍏跺畠鍖�", 610800: "姒嗘灄甯�", 610802: "姒嗛槼鍖�", 610821: "绁炴湪鍘�", 610822: "搴滆胺鍘�", 610823: "妯北鍘�", 610824: "闈栬竟鍘�", 610825: "瀹氳竟鍘�", 610826: "缁ュ痉鍘�", 610827: "绫宠剛鍘�", 610828: "浣冲幙", 610829: "鍚村牎鍘�", 610830: "娓呮锭鍘�", 610831: "瀛愭床鍘�", 610832: "鍏跺畠鍖�", 610900: "瀹夊悍甯�", 610902: "姹夋花鍖�", 610921: "姹夐槾鍘�", 610922: "鐭虫硥鍘�", 610923: "瀹侀檿鍘�", 610924: "绱槼鍘�", 610925: "宀氱殝鍘�", 610926: "骞冲埄鍘�", 610927: "闀囧潽鍘�", 610928: "鏃槼鍘�", 610929: "鐧芥渤鍘�", 610930: "鍏跺畠鍖�", 611e3: "鍟嗘礇甯�", 611002: "鍟嗗窞鍖�", 611021: "娲涘崡鍘�", 611022: "涓瑰嚖鍘�", 611023: "鍟嗗崡鍘�", 611024: "灞遍槼鍘�", 611025: "闀囧畨鍘�", 611026: "鏌炴按鍘�", 611027: "鍏跺畠鍖�", 62e4: "鐢樿們鐪�", 620100: "鍏板窞甯�", 620102: "鍩庡叧鍖�", 620103: "涓冮噷娌冲尯", 620104: "瑗垮浐鍖�", 620105: "瀹夊畞鍖�", 620111: "绾㈠彜鍖�", 620121: "姘哥櫥鍘�", 620122: "鐨嬪叞鍘�", 620123: "姒嗕腑鍘�", 620124: "鍏跺畠鍖�", 620200: "鍢夊唱鍏冲競", 620300: "閲戞槍甯�", 620302: "閲戝窛鍖�", 620321: "姘告槍鍘�", 620322: "鍏跺畠鍖�", 620400: "鐧介摱甯�", 620402: "鐧介摱鍖�", 620403: "骞冲窛鍖�", 620421: "闈栬繙鍘�", 620422: "浼氬畞鍘�", 620423: "鏅嘲鍘�", 620424: "鍏跺畠鍖�", 620500: "澶╂按甯�", 620502: "绉﹀窞鍖�", 620503: "楹︾Н鍖�", 620521: "娓呮按鍘�", 620522: "绉﹀畨鍘�", 620523: "鐢樿胺鍘�", 620524: "姝﹀北鍘�", 620525: "寮犲宸濆洖鏃忚嚜娌诲幙", 620526: "鍏跺畠鍖�", 620600: "姝﹀▉甯�", 620602: "鍑夊窞鍖�", 620621: "姘戝嫟鍘�", 620622: "鍙ゆ氮鍘�", 620623: "澶╃钘忔棌鑷不鍘�", 620624: "鍏跺畠鍖�", 620700: "寮犳帠甯�", 620702: "鐢樺窞鍖�", 620721: "鑲冨崡瑁曞浐鏃忚嚜娌诲幙", 620722: "姘戜箰鍘�", 620723: "涓存辰鍘�", 620724: "楂樺彴鍘�", 620725: "灞变腹鍘�", 620726: "鍏跺畠鍖�", 620800: "骞冲噳甯�", 620802: "宕嗗硳鍖�", 620821: "娉惧窛鍘�", 620822: "鐏靛彴鍘�", 620823: "宕囦俊鍘�", 620824: "鍗庝涵鍘�", 620825: "搴勬氮鍘�", 620826: "闈欏畞鍘�", 620827: "鍏跺畠鍖�", 620900: "閰掓硥甯�", 620902: "鑲冨窞鍖�", 620921: "閲戝鍘�", 620922: "鐡滃窞鍘�", 620923: "鑲冨寳钂欏彜鏃忚嚜娌诲幙", 620924: "闃垮厠濉炲搱钀ㄥ厠鏃忚嚜娌诲幙", 620981: "鐜夐棬甯�", 620982: "鏁︾厡甯�", 620983: "鍏跺畠鍖�", 621e3: "搴嗛槼甯�", 621002: "瑗垮嘲鍖�", 621021: "搴嗗煄鍘�", 621022: "鐜幙", 621023: "鍗庢睜鍘�", 621024: "鍚堟按鍘�", 621025: "姝e畞鍘�", 621026: "瀹佸幙", 621027: "闀囧師鍘�", 621028: "鍏跺畠鍖�", 621100: "瀹氳タ甯�", 621102: "瀹夊畾鍖�", 621121: "閫氭腑鍘�", 621122: "闄囪タ鍘�", 621123: "娓簮鍘�", 621124: "涓存串鍘�", 621125: "婕冲幙", 621126: "宀峰幙", 621127: "鍏跺畠鍖�", 621200: "闄囧崡甯�", 621202: "姝﹂兘鍖�", 621221: "鎴愬幙", 621222: "鏂囧幙", 621223: "瀹曟槍鍘�", 621224: "搴峰幙", 621225: "瑗垮拰鍘�", 621226: "绀煎幙", 621227: "寰藉幙", 621228: "涓ゅ綋鍘�", 621229: "鍏跺畠鍖�", 622900: "涓村鍥炴棌鑷不宸�", 622901: "涓村甯�", 622921: "涓村鍘�", 622922: "搴蜂箰鍘�", 622923: "姘搁潠鍘�", 622924: "骞挎渤鍘�", 622925: "鍜屾斂鍘�", 622926: "涓滀埂鏃忚嚜娌诲幙", 622927: "绉煶灞变繚瀹夋棌涓滀埂鏃忔拻鎷夋棌鑷不鍘�", 622928: "鍏跺畠鍖�", 623e3: "鐢樺崡钘忔棌鑷不宸�", 623001: "鍚堜綔甯�", 623021: "涓存江鍘�", 623022: "鍗撳凹鍘�", 623023: "鑸熸洸鍘�", 623024: "杩儴鍘�", 623025: "鐜涙洸鍘�", 623026: "纰屾洸鍘�", 623027: "澶忔渤鍘�", 623028: "鍏跺畠鍖�", 63e4: "闈掓捣鐪�", 630100: "瑗垮畞甯�", 630102: "鍩庝笢鍖�", 630103: "鍩庝腑鍖�", 630104: "鍩庤タ鍖�", 630105: "鍩庡寳鍖�", 630121: "澶ч�氬洖鏃忓湡鏃忚嚜娌诲幙", 630122: "婀熶腑鍘�", 630123: "婀熸簮鍘�", 630124: "鍏跺畠鍖�", 632100: "娴蜂笢甯�", 632121: "骞冲畨鍘�", 632122: "姘戝拰鍥炴棌鍦熸棌鑷不鍘�", 632123: "涔愰兘鍖�", 632126: "浜掑姪鍦熸棌鑷不鍘�", 632127: "鍖栭殕鍥炴棌鑷不鍘�", 632128: "寰寲鎾掓媺鏃忚嚜娌诲幙", 632129: "鍏跺畠鍖�", 632200: "娴峰寳钘忔棌鑷不宸�", 632221: "闂ㄦ簮鍥炴棌鑷不鍘�", 632222: "绁佽繛鍘�", 632223: "娴锋檹鍘�", 632224: "鍒氬療鍘�", 632225: "鍏跺畠鍖�", 632300: "榛勫崡钘忔棌鑷不宸�", 632321: "鍚屼粊鍘�", 632322: "灏栨墡鍘�", 632323: "娉藉簱鍘�", 632324: "娌冲崡钂欏彜鏃忚嚜娌诲幙", 632325: "鍏跺畠鍖�", 632500: "娴峰崡钘忔棌鑷不宸�", 632521: "鍏卞拰鍘�", 632522: "鍚屽痉鍘�", 632523: "璐靛痉鍘�", 632524: "鍏存捣鍘�", 632525: "璐靛崡鍘�", 632526: "鍏跺畠鍖�", 632600: "鏋滄礇钘忔棌鑷不宸�", 632621: "鐜涙瞾鍘�", 632622: "鐝帥鍘�", 632623: "鐢樺痉鍘�", 632624: "杈炬棩鍘�", 632625: "涔呮不鍘�", 632626: "鐜涘鍘�", 632627: "鍏跺畠鍖�", 632700: "鐜夋爲钘忔棌鑷不宸�", 632721: "鐜夋爲甯�", 632722: "鏉傚鍘�", 632723: "绉板鍘�", 632724: "娌诲鍘�", 632725: "鍥婅唉鍘�", 632726: "鏇查夯鑾卞幙", 632727: "鍏跺畠鍖�", 632800: "娴疯タ钂欏彜鏃忚棌鏃忚嚜娌诲窞", 632801: "鏍煎皵鏈ㄥ競", 632802: "寰蜂护鍝堝競", 632821: "涔屽叞鍘�", 632822: "閮藉叞鍘�", 632823: "澶╁郴鍘�", 632824: "鍏跺畠鍖�", 64e4: "瀹佸鍥炴棌鑷不鍖�", 640100: "閾跺窛甯�", 640104: "鍏村簡鍖�", 640105: "瑗垮鍖�", 640106: "閲戝嚖鍖�", 640121: "姘稿畞鍘�", 640122: "璐哄叞鍘�", 640181: "鐏垫甯�", 640182: "鍏跺畠鍖�", 640200: "鐭冲槾灞卞競", 640202: "澶ф鍙e尯", 640205: "鎯犲啘鍖�", 640221: "骞崇綏鍘�", 640222: "鍏跺畠鍖�", 640300: "鍚村繝甯�", 640302: "鍒╅�氬尯", 640303: "绾㈠鍫″尯", 640323: "鐩愭睜鍘�", 640324: "鍚屽績鍘�", 640381: "闈掗摐宄″競", 640382: "鍏跺畠鍖�", 640400: "鍥哄師甯�", 640402: "鍘熷窞鍖�", 640422: "瑗垮悏鍘�", 640423: "闅嗗痉鍘�", 640424: "娉炬簮鍘�", 640425: "褰槼鍘�", 640426: "鍏跺畠鍖�", 640500: "涓崼甯�", 640502: "娌欏潯澶村尯", 640521: "涓畞鍘�", 640522: "娴峰師鍘�", 640523: "鍏跺畠鍖�", 65e4: "鏂扮枂缁村惥灏旇嚜娌诲尯", 650100: "涔岄瞾鏈ㄩ綈甯�", 650102: "澶╁北鍖�", 650103: "娌欎緷宸村厠鍖�", 650104: "鏂板競鍖�", 650105: "姘寸(娌熷尯", 650106: "澶村悲娌冲尯", 650107: "杈惧潅鍩庡尯", 650109: "绫充笢鍖�", 650121: "涔岄瞾鏈ㄩ綈鍘�", 650122: "鍏跺畠鍖�", 650200: "鍏嬫媺鐜涗緷甯�", 650202: "鐙北瀛愬尯", 650203: "鍏嬫媺鐜涗緷鍖�", 650204: "鐧界⒈婊╁尯", 650205: "涔屽皵绂惧尯", 650206: "鍏跺畠鍖�", 652100: "鍚愰瞾鐣湴鍖�", 652101: "鍚愰瞾鐣競", 652122: "閯杽鍘�", 652123: "鎵樺厠閫婂幙", 652124: "鍏跺畠鍖�", 652200: "鍝堝瘑鍦板尯", 652201: "鍝堝瘑甯�", 652222: "宸撮噷鍧ゅ搱钀ㄥ厠鑷不鍘�", 652223: "浼婂惥鍘�", 652224: "鍏跺畠鍖�", 652300: "鏄屽悏鍥炴棌鑷不宸�", 652301: "鏄屽悏甯�", 652302: "闃滃悍甯�", 652323: "鍛煎浘澹佸幙", 652324: "鐜涚撼鏂幙", 652325: "濂囧彴鍘�", 652327: "鍚夋湪钀ㄥ皵鍘�", 652328: "鏈ㄥ瀿鍝堣惃鍏嬭嚜娌诲幙", 652329: "鍏跺畠鍖�", 652700: "鍗氬皵濉旀媺钂欏彜鑷不宸�", 652701: "鍗氫箰甯�", 652702: "闃挎媺灞卞彛甯�", 652722: "绮炬渤鍘�", 652723: "娓╂硥鍘�", 652724: "鍏跺畠鍖�", 652800: "宸撮煶閮钂欏彜鑷不宸�", 652801: "搴撳皵鍕掑競", 652822: "杞彴鍘�", 652823: "灏夌妬鍘�", 652824: "鑻ョ緦鍘�", 652825: "涓旀湯鍘�", 652826: "鐒夎�嗗洖鏃忚嚜娌诲幙", 652827: "鍜岄潤鍘�", 652828: "鍜岀鍘�", 652829: "鍗氭箹鍘�", 652830: "鍏跺畠鍖�", 652900: "闃垮厠鑻忓湴鍖�", 652901: "闃垮厠鑻忓競", 652922: "娓╁鍘�", 652923: "搴撹溅鍘�", 652924: "娌欓泤鍘�", 652925: "鏂板拰鍘�", 652926: "鎷滃煄鍘�", 652927: "涔屼粈鍘�", 652928: "闃跨摝鎻愬幙", 652929: "鏌潽鍘�", 652930: "鍏跺畠鍖�", 653e3: "鍏嬪瓬鍕掕嫃鏌皵鍏嬪瓬鑷不宸�", 653001: "闃垮浘浠�甯�", 653022: "闃垮厠闄跺幙", 653023: "闃垮悎濂囧幙", 653024: "涔屾伆鍘�", 653025: "鍏跺畠鍖�", 653100: "鍠�浠�鍦板尯", 653101: "鍠�浠�甯�", 653121: "鐤忛檮鍘�", 653122: "鐤忓嫆鍘�", 653123: "鑻卞悏娌欏幙", 653124: "娉芥櫘鍘�", 653125: "鑾庤溅鍘�", 653126: "鍙跺煄鍘�", 653127: "楹︾洊鎻愬幙", 653128: "宀虫櫘婀栧幙", 653129: "浼藉笀鍘�", 653130: "宸存鍘�", 653131: "濉斾粈搴撳皵骞插鍚夊厠鑷不鍘�", 653132: "鍏跺畠鍖�", 653200: "鍜岀敯鍦板尯", 653201: "鍜岀敯甯�", 653221: "鍜岀敯鍘�", 653222: "澧ㄧ帀鍘�", 653223: "鐨北鍘�", 653224: "娲涙郸鍘�", 653225: "绛栧嫆鍘�", 653226: "浜庣敯鍘�", 653227: "姘戜赴鍘�", 653228: "鍏跺畠鍖�", 654e3: "浼婄妬鍝堣惃鍏嬭嚜娌诲窞", 654002: "浼婂畞甯�", 654003: "濂庡悲甯�", 654021: "浼婂畞鍘�", 654022: "瀵熷竷鏌ュ皵閿′集鑷不鍘�", 654023: "闇嶅煄鍘�", 654024: "宸╃暀鍘�", 654025: "鏂版簮鍘�", 654026: "鏄嫃鍘�", 654027: "鐗瑰厠鏂幙", 654028: "灏煎嫆鍏嬪幙", 654029: "鍏跺畠鍖�", 654200: "濉斿煄鍦板尯", 654201: "濉斿煄甯�", 654202: "涔岃嫃甯�", 654221: "棰濇晱鍘�", 654223: "娌欐咕鍘�", 654224: "鎵橀噷鍘�", 654225: "瑁曟皯鍘�", 654226: "鍜屽竷鍏嬭禌灏旇挋鍙よ嚜娌诲幙", 654227: "鍏跺畠鍖�", 654300: "闃垮嫆娉板湴鍖�", 654301: "闃垮嫆娉板競", 654321: "甯冨皵娲ュ幙", 654322: "瀵岃暣鍘�", 654323: "绂忔捣鍘�", 654324: "鍝堝反娌冲幙", 654325: "闈掓渤鍘�", 654326: "鍚夋湪涔冨幙", 654327: "鍏跺畠鍖�", 659001: "鐭虫渤瀛愬競", 659002: "闃挎媺灏斿競", 659003: "鍥炬湪鑸掑厠甯�", 659004: "浜斿娓犲競", 71e4: "鍙版咕", 710100: "鍙板寳甯�", 710101: "涓鍖�", 710102: "澶у悓鍖�", 710103: "涓北鍖�", 710104: "鏉惧北鍖�", 710105: "澶у畨鍖�", 710106: "涓囧崕鍖�", 710107: "淇′箟鍖�", 710108: "澹灄鍖�", 710109: "鍖楁姇鍖�", 710110: "鍐呮箹鍖�", 710111: "鍗楁腐鍖�", 710112: "鏂囧北鍖�", 710113: "鍏跺畠鍖�", 710200: "楂橀泟甯�", 710201: "鏂板叴鍖�", 710202: "鍓嶉噾鍖�", 710203: "鑺╅泤鍖�", 710204: "鐩愬煏鍖�", 710205: "榧撳北鍖�", 710206: "鏃楁触鍖�", 710207: "鍓嶉晣鍖�", 710208: "涓夋皯鍖�", 710209: "宸﹁惀鍖�", 710210: "妤犳鍖�", 710211: "灏忔腐鍖�", 710212: "鍏跺畠鍖�", 710241: "鑻撻泤鍖�", 710242: "浠佹鍖�", 710243: "澶хぞ鍖�", 710244: "鍐堝北鍖�", 710245: "璺鍖�", 710246: "闃胯幉鍖�", 710247: "鐢板鍖�", 710248: "鐕曞发鍖�", 710249: "妗ュご鍖�", 710250: "姊撳畼鍖�", 710251: "寮ラ檧鍖�", 710252: "姘稿畨鍖�", 710253: "婀栧唴鍖�", 710254: "鍑ゅ北鍖�", 710255: "澶у鍖�", 710256: "鏋楀洯鍖�", 710257: "楦熸澗鍖�", 710258: "澶ф爲鍖�", 710259: "鏃楀北鍖�", 710260: "缇庢祿鍖�", 710261: "鍏緹鍖�", 710262: "鍐呴棬鍖�", 710263: "鏉夋灄鍖�", 710264: "鐢蹭粰鍖�", 710265: "妗冩簮鍖�", 710266: "閭g帥澶忓尯", 710267: "鑼傛灄鍖�", 710268: "鑼勮悾鍖�", 710300: "鍙板崡甯�", 710301: "涓タ鍖�", 710302: "涓滃尯", 710303: "鍗楀尯", 710304: "鍖楀尯", 710305: "瀹夊钩鍖�", 710306: "瀹夊崡鍖�", 710307: "鍏跺畠鍖�", 710339: "姘稿悍鍖�", 710340: "褰掍粊鍖�", 710341: "鏂板寲鍖�", 710342: "宸﹂晣鍖�", 710343: "鐜変簳鍖�", 710344: "妤犺タ鍖�", 710345: "鍗楀寲鍖�", 710346: "浠佸痉鍖�", 710347: "鍏冲簷鍖�", 710348: "榫欏磶鍖�", 710349: "瀹樼敯鍖�", 710350: "楹昏眴鍖�", 710351: "浣抽噷鍖�", 710352: "瑗挎腐鍖�", 710353: "涓冭偂鍖�", 710354: "灏嗗啗鍖�", 710355: "瀛︾敳鍖�", 710356: "鍖楅棬鍖�", 710357: "鏂拌惀鍖�", 710358: "鍚庡鍖�", 710359: "鐧芥渤鍖�", 710360: "涓滃北鍖�", 710361: "鍏敳鍖�", 710362: "涓嬭惀鍖�", 710363: "鏌宠惀鍖�", 710364: "鐩愭按鍖�", 710365: "鍠勫寲鍖�", 710366: "澶у唴鍖�", 710367: "灞变笂鍖�", 710368: "鏂板競鍖�", 710369: "瀹夊畾鍖�", 710400: "鍙颁腑甯�", 710401: "涓尯", 710402: "涓滃尯", 710403: "鍗楀尯", 710404: "瑗垮尯", 710405: "鍖楀尯", 710406: "鍖楀悲鍖�", 710407: "瑗垮悲鍖�", 710408: "鍗楀悲鍖�", 710409: "鍏跺畠鍖�", 710431: "澶钩鍖�", 710432: "澶ч噷鍖�", 710433: "闆惧嘲鍖�", 710434: "涔屾棩鍖�", 710435: "涓板師鍖�", 710436: "鍚庨噷鍖�", 710437: "鐭冲唸鍖�", 710438: "涓滃娍鍖�", 710439: "鍜屽钩鍖�", 710440: "鏂扮ぞ鍖�", 710441: "娼瓙鍖�", 710442: "澶ч泤鍖�", 710443: "绁炲唸鍖�", 710444: "澶ц倸鍖�", 710445: "娌欓箍鍖�", 710446: "榫欎簳鍖�", 710447: "姊ф爾鍖�", 710448: "娓呮按鍖�", 710449: "澶х敳鍖�", 710450: "澶栧煍鍖�", 710451: "澶у畨鍖�", 710500: "閲戦棬鍘�", 710507: "閲戞矙闀�", 710508: "閲戞箹闀�", 710509: "閲戝畞涔�", 710510: "閲戝煄闀�", 710511: "鐑堝笨涔�", 710512: "涔屽澋涔�", 710600: "鍗楁姇鍘�", 710614: "鍗楁姇甯�", 710615: "涓涔�", 710616: "鑽夊悲闀�", 710617: "鍥藉涔�", 710618: "鍩旈噷闀�", 710619: "浠佺埍涔�", 710620: "鍚嶉棿涔�", 710621: "闆嗛泦闀�", 710622: "姘撮噷涔�", 710623: "楸兼睜涔�", 710624: "淇′箟涔�", 710625: "绔瑰北闀�", 710626: "楣胯胺涔�", 710700: "鍩洪殕甯�", 710701: "浠佺埍鍖�", 710702: "淇′箟鍖�", 710703: "涓鍖�", 710704: "涓北鍖�", 710705: "瀹変箰鍖�", 710706: "鏆栨殩鍖�", 710707: "涓冨牭鍖�", 710708: "鍏跺畠鍖�", 710800: "鏂扮甯�", 710801: "涓滃尯", 710802: "鍖楀尯", 710803: "棣欏北鍖�", 710804: "鍏跺畠鍖�", 710900: "鍢変箟甯�", 710901: "涓滃尯", 710902: "瑗垮尯", 710903: "鍏跺畠鍖�", 711100: "鏂板寳甯�", 711130: "涓囬噷鍖�", 711131: "閲戝北鍖�", 711132: "鏉挎ˉ鍖�", 711133: "姹愭鍖�", 711134: "娣卞潙鍖�", 711135: "鐭崇鍖�", 711136: "鐟炶姵鍖�", 711137: "骞虫邯鍖�", 711138: "鍙屾邯鍖�", 711139: "璐″鍖�", 711140: "鏂板簵鍖�", 711141: "鍧灄鍖�", 711142: "涔屾潵鍖�", 711143: "姘稿拰鍖�", 711144: "涓拰鍖�", 711145: "鍦熷煄鍖�", 711146: "涓夊场鍖�", 711147: "鏍戞灄鍖�", 711148: "鑾烘瓕鍖�", 711149: "涓夐噸鍖�", 711150: "鏂板簞鍖�", 711151: "娉板北鍖�", 711152: "鏋楀彛鍖�", 711153: "鑺︽床鍖�", 711154: "浜旇偂鍖�", 711155: "鍏噷鍖�", 711156: "娣℃按鍖�", 711157: "涓夎姖鍖�", 711158: "鐭抽棬鍖�", 711200: "瀹滃叞鍘�", 711214: "瀹滃叞甯�", 711215: "澶村煄闀�", 711216: "绀佹邯涔�", 711217: "澹洿涔�", 711218: "鍛樺北涔�", 711219: "缃椾笢闀�", 711220: "涓夋槦涔�", 711221: "澶у悓涔�", 711222: "浜旂粨涔�", 711223: "鍐北涔�", 711224: "鑻忔境闀�", 711225: "鍗楁境涔�", 711226: "閽撻奔鍙�", 711300: "鏂扮鍘�", 711314: "绔瑰寳甯�", 711315: "婀栧彛涔�", 711316: "鏂颁赴涔�", 711317: "鏂板煍闀�", 711318: "鍏宠タ闀�", 711319: "鑺庢灄涔�", 711320: "瀹濆北涔�", 711321: "绔逛笢闀�", 711322: "浜斿嘲涔�", 711323: "妯北涔�", 711324: "灏栫煶涔�", 711325: "鍖楀煍涔�", 711326: "宄ㄧ湁涔�", 711400: "妗冨洯鍘�", 711414: "涓潨甯�", 711415: "骞抽晣甯�", 711416: "榫欐江涔�", 711417: "鏉ㄦ甯�", 711418: "鏂板眿涔�", 711419: "瑙傞煶涔�", 711420: "妗冨洯甯�", 711421: "榫熷北涔�", 711422: "鍏痉甯�", 711423: "澶ф邯闀�", 711424: "澶嶅叴涔�", 711425: "澶у洯涔�", 711426: "鑺︾涔�", 711500: "鑻楁牀鍘�", 711519: "绔瑰崡闀�", 711520: "澶翠唤闀�", 711521: "涓夋咕涔�", 711522: "鍗楀簞涔�", 711523: "鐙江涔�", 711524: "鍚庨緳闀�", 711525: "閫氶渼闀�", 711526: "鑻戦噷闀�", 711527: "鑻楁牀甯�", 711528: "閫犳ˉ涔�", 711529: "澶村眿涔�", 711530: "鍏涔�", 711531: "澶ф箹涔�", 711532: "娉板畨涔�", 711533: "閾滈敚涔�", 711534: "涓変箟涔�", 711535: "瑗挎箹涔�", 711536: "鍗撳叞闀�", 711700: "褰板寲鍘�", 711727: "褰板寲甯�", 711728: "鑺洯涔�", 711729: "鑺卞潧涔�", 711730: "绉�姘翠埂", 711731: "楣挎腐闀�", 711732: "绂忓叴涔�", 711733: "绾胯タ涔�", 711734: "鍜岀編闀�", 711735: "浼告腐涔�", 711736: "鍛樻灄闀�", 711737: "绀惧ご涔�", 711738: "姘搁潠涔�", 711739: "鍩斿績涔�", 711740: "婧箹闀�", 711741: "澶ф潙涔�", 711742: "鍩旂洂涔�", 711743: "鐢颁腑闀�", 711744: "鍖楁枟闀�", 711745: "鐢板熬涔�", 711746: "鍩ゅご涔�", 711747: "婧窞涔�", 711748: "绔瑰涔�", 711749: "浜屾灄闀�", 711750: "澶у煄涔�", 711751: "鑺宠嫅涔�", 711752: "浜屾按涔�", 711900: "鍢変箟鍘�", 711919: "鐣矾涔�", 711920: "姊呭北涔�", 711921: "绔瑰磶涔�", 711922: "闃块噷灞变埂", 711923: "涓煍涔�", 711924: "澶у煍涔�", 711925: "姘翠笂涔�", 711926: "楣胯崏涔�", 711927: "澶繚甯�", 711928: "鏈村瓙甯�", 711929: "涓滅煶涔�", 711930: "鍏剼涔�", 711931: "鏂版腐涔�", 711932: "姘戦泟涔�", 711933: "澶ф灄闀�", 711934: "婧彛涔�", 711935: "涔夌涔�", 711936: "甯冭闀�", 712100: "浜戞灄鍘�", 712121: "鏂楀崡闀�", 712122: "澶у煠涔�", 712123: "铏庡熬闀�", 712124: "鍦熷簱闀�", 712125: "瑜掑繝涔�", 712126: "涓滃娍涔�", 712127: "鍙拌タ涔�", 712128: "浠戣儗涔�", 712129: "楹﹀涔�", 712130: "鏂楀叚甯�", 712131: "鏋楀唴涔�", 712132: "鍙ゅ潙涔�", 712133: "鑾挎涔�", 712134: "瑗胯灪闀�", 712135: "浜屼粦涔�", 712136: "鍖楁腐闀�", 712137: "姘存灄涔�", 712138: "鍙f箹涔�", 712139: "鍥涙箹涔�", 712140: "鍏冮暱涔�", 712400: "灞忎笢鍘�", 712434: "灞忎笢甯�", 712435: "涓夊湴闂ㄤ埂", 712436: "闆惧彴涔�", 712437: "鐜涘涔�", 712438: "涔濆涔�", 712439: "閲屾腐涔�", 712440: "楂樻爲涔�", 712441: "鐩愬煍涔�", 712442: "闀挎不涔�", 712443: "楹熸礇涔�", 712444: "绔圭敯涔�", 712445: "鍐呭煍涔�", 712446: "涓囦腹涔�", 712447: "娼窞闀�", 712448: "娉版涔�", 712449: "鏉ヤ箟涔�", 712450: "涓囧肠涔�", 712451: "宕侀《涔�", 712452: "鏂板煠涔�", 712453: "鍗楀窞涔�", 712454: "鏋楄竟涔�", 712455: "涓滄腐闀�", 712456: "鐞夌悆涔�", 712457: "浣冲啲涔�", 712458: "鏂板洯涔�", 712459: "鏋嬪涔�", 712460: "鏋嬪北涔�", 712461: "鏄ユ棩涔�", 712462: "鐙瓙涔�", 712463: "杞﹀煄涔�", 712464: "鐗′腹涔�", 712465: "鎭掓槬闀�", 712466: "婊″窞涔�", 712500: "鍙颁笢鍘�", 712517: "鍙颁笢甯�", 712518: "缁垮矝涔�", 712519: "鍏板笨涔�", 712520: "寤跺钩涔�", 712521: "鍗戝崡涔�", 712522: "楣块噹涔�", 712523: "鍏冲北闀�", 712524: "娴风涔�", 712525: "姹犱笂涔�", 712526: "涓滄渤涔�", 712527: "鎴愬姛闀�", 712528: "闀挎花涔�", 712529: "閲戝嘲涔�", 712530: "澶ф涔�", 712531: "杈句粊涔�", 712532: "澶夯閲屼埂", 712600: "鑺辫幉鍘�", 712615: "鑺辫幉甯�", 712616: "鏂板煄涔�", 712617: "澶瞾闃�", 712618: "绉�鏋椾埂", 712619: "鍚夊畨涔�", 712620: "瀵夸赴涔�", 712621: "鍑ゆ灄闀�", 712622: "鍏夊涔�", 712623: "涓版花涔�", 712624: "鐟炵涔�", 712625: "涓囪崳涔�", 712626: "鐜夐噷闀�", 712627: "鍗撴邯涔�", 712628: "瀵岄噷涔�", 712700: "婢庢箹鍘�", 712707: "椹叕甯�", 712708: "瑗垮笨涔�", 712709: "鏈涘畨涔�", 712710: "涓冪編涔�", 712711: "鐧芥矙涔�", 712712: "婀栬タ涔�", 712800: "杩炴睙鍘�", 712805: "鍗楃涔�", 712806: "鍖楃涔�", 712807: "鑾掑厜涔�", 712808: "涓滃紩涔�", 81e4: "棣欐腐鐗瑰埆琛屾斂鍖�", 810100: "棣欐腐宀�", 810101: "涓タ鍖�", 810102: "婀句粩", 810103: "涓滃尯", 810104: "鍗楀尯", 810200: "涔濋緳", 810201: "涔濋緳鍩庡尯", 810202: "娌瑰皷鏃哄尯", 810203: "娣辨按鍩楀尯", 810204: "榛勫ぇ浠欏尯", 810205: "瑙傚鍖�", 810300: "鏂扮晫", 810301: "鍖楀尯", 810302: "澶у煍鍖�", 810303: "娌欑敯鍖�", 810304: "瑗胯础鍖�", 810305: "鍏冩湕鍖�", 810306: "灞棬鍖�", 810307: "鑽冩咕鍖�", 810308: "钁甸潚鍖�", 810309: "绂诲矝鍖�", 82e4: "婢抽棬鐗瑰埆琛屾斂鍖�", 820100: "婢抽棬鍗婂矝", 820200: "绂诲矝", 99e4: "娴峰", 990100: "娴峰" }; function r(e) { for (var t, n = {}, r = 0; r < e.length; r++)t = e[r], t && t.id && (n[t.id] = t); for (var i = [], o = 0; o < e.length; o++)if (t = e[o], t) if (void 0 != t.pid || void 0 != t.parentId) { var a = n[t.pid] || n[t.parentId]; a && (a.children || (a.children = []), a.children.push(t)) } else i.push(t); return i } var i = function () { var e = []; for (var t in n) { var i = "0000" === t.slice(2, 6) ? void 0 : "00" == t.slice(4, 6) ? t.slice(0, 2) + "0000" : t.slice(0, 4) + "00"; e.push({ id: t, pid: i, name: n[t] }) } return r(e) }(); e.exports = i }, function (e, t, n) { var r = n(22), i = n(23); e.exports = { Parser: r, Handler: i } }, function (e, t, n) { e.exports = n(24) }, function (e, t, n) {
+                var r, i = n(10), o = n(0), a = n(2), s = n(7), c = n(8), l = n(25); "undefined" !== typeof window && (r = n(27)
+/*!
+    Mock - 妯℃嫙璇锋眰 & 妯℃嫙鏁版嵁
+    https://github.com/nuysoft/Mock
+    澧ㄦ櫤 mozhi.gyy@taobao.com nuysoft@gmail.com
+*/); var u = { Handler: i, Random: a, Util: o, XHR: r, RE: s, toJSONSchema: c, valid: l, heredoc: o.heredoc, setup: function (e) { return r.setup(e) }, _mocked: {}, version: "1.0.1-beta3" }; r && (r.Mock = u), u.mock = function (e, t, n) { return 1 === arguments.length ? i.gen(e) : (2 === arguments.length && (n = t, t = void 0), r && (window.XMLHttpRequest = r), u._mocked[e + (t || "")] = { rurl: e, rtype: t, template: n }, u) }, e.exports = u
+            }, function (module, exports, __webpack_require__) { var Constant = __webpack_require__(1), Util = __webpack_require__(0), Parser = __webpack_require__(3), Random = __webpack_require__(2), RE = __webpack_require__(7), Handler = { extend: Util.extend, gen: function (e, t, n) { t = void 0 == t ? "" : t + "", n = n || {}, n = { path: n.path || [Constant.GUID], templatePath: n.templatePath || [Constant.GUID++], currentContext: n.currentContext, templateCurrentContext: n.templateCurrentContext || e, root: n.root || n.currentContext, templateRoot: n.templateRoot || n.templateCurrentContext || e }; var r, i = Parser.parse(t), o = Util.type(e); return Handler[o] ? (r = Handler[o]({ type: o, template: e, name: t, parsedName: t ? t.replace(Constant.RE_KEY, "$1") : t, rule: i, context: n }), n.root || (n.root = r), r) : e } }; Handler.extend({ array: function (e) { var t, n, r = []; if (0 === e.template.length) return r; if (e.rule.parameters) if (1 === e.rule.min && void 0 === e.rule.max) e.context.path.push(e.name), e.context.templatePath.push(e.name), r = Random.pick(Handler.gen(e.template, void 0, { path: e.context.path, templatePath: e.context.templatePath, currentContext: r, templateCurrentContext: e.template, root: e.context.root || r, templateRoot: e.context.templateRoot || e.template })), e.context.path.pop(), e.context.templatePath.pop(); else if (e.rule.parameters[2]) e.template.__order_index = e.template.__order_index || 0, e.context.path.push(e.name), e.context.templatePath.push(e.name), r = Handler.gen(e.template, void 0, { path: e.context.path, templatePath: e.context.templatePath, currentContext: r, templateCurrentContext: e.template, root: e.context.root || r, templateRoot: e.context.templateRoot || e.template })[e.template.__order_index % e.template.length], e.template.__order_index += +e.rule.parameters[2], e.context.path.pop(), e.context.templatePath.pop(); else for (t = 0; t < e.rule.count; t++)for (n = 0; n < e.template.length; n++)e.context.path.push(r.length), e.context.templatePath.push(n), r.push(Handler.gen(e.template[n], r.length, { path: e.context.path, templatePath: e.context.templatePath, currentContext: r, templateCurrentContext: e.template, root: e.context.root || r, templateRoot: e.context.templateRoot || e.template })), e.context.path.pop(), e.context.templatePath.pop(); else for (t = 0; t < e.template.length; t++)e.context.path.push(t), e.context.templatePath.push(t), r.push(Handler.gen(e.template[t], t, { path: e.context.path, templatePath: e.context.templatePath, currentContext: r, templateCurrentContext: e.template, root: e.context.root || r, templateRoot: e.context.templateRoot || e.template })), e.context.path.pop(), e.context.templatePath.pop(); return r }, object: function (e) { var t, n, r, i, o, a, s = {}; if (void 0 != e.rule.min) for (t = Util.keys(e.template), t = Random.shuffle(t), t = t.slice(0, e.rule.count), a = 0; a < t.length; a++)r = t[a], i = r.replace(Constant.RE_KEY, "$1"), e.context.path.push(i), e.context.templatePath.push(r), s[i] = Handler.gen(e.template[r], r, { path: e.context.path, templatePath: e.context.templatePath, currentContext: s, templateCurrentContext: e.template, root: e.context.root || s, templateRoot: e.context.templateRoot || e.template }), e.context.path.pop(), e.context.templatePath.pop(); else { for (r in t = [], n = [], e.template) ("function" === typeof e.template[r] ? n : t).push(r); for (t = t.concat(n), a = 0; a < t.length; a++)r = t[a], i = r.replace(Constant.RE_KEY, "$1"), e.context.path.push(i), e.context.templatePath.push(r), s[i] = Handler.gen(e.template[r], r, { path: e.context.path, templatePath: e.context.templatePath, currentContext: s, templateCurrentContext: e.template, root: e.context.root || s, templateRoot: e.context.templateRoot || e.template }), e.context.path.pop(), e.context.templatePath.pop(), o = r.match(Constant.RE_KEY), o && o[2] && "number" === Util.type(e.template[r]) && (e.template[r] += parseInt(o[2], 10)) } return s }, number: function (e) { var t, n; if (e.rule.decimal) { e.template += "", n = e.template.split("."), n[0] = e.rule.range ? e.rule.count : n[0], n[1] = (n[1] || "").slice(0, e.rule.dcount); while (n[1].length < e.rule.dcount) n[1] += n[1].length < e.rule.dcount - 1 ? Random.character("number") : Random.character("123456789"); t = parseFloat(n.join("."), 10) } else t = e.rule.range && !e.rule.parameters[2] ? e.rule.count : e.template; return t }, boolean: function (e) { var t; return t = e.rule.parameters ? Random.bool(e.rule.min, e.rule.max, e.template) : e.template, t }, string: function (e) { var t, n, r, i, o = ""; if (e.template.length) { for (void 0 == e.rule.count && (o += e.template), t = 0; t < e.rule.count; t++)o += e.template; for (n = o.match(Constant.RE_PLACEHOLDER) || [], t = 0; t < n.length; t++)if (r = n[t], /^\\/.test(r)) n.splice(t--, 1); else { if (i = Handler.placeholder(r, e.context.currentContext, e.context.templateCurrentContext, e), 1 === n.length && r === o && typeof i !== typeof o) { o = i; break } o = o.replace(r, i) } } else o = e.rule.range ? Random.string(e.rule.count) : e.template; return o }, function: function (e) { return e.template.call(e.context.currentContext, e) }, regexp: function (e) { var t = ""; void 0 == e.rule.count && (t += e.template.source); for (var n = 0; n < e.rule.count; n++)t += e.template.source; return RE.Handler.gen(RE.Parser.parse(t)) } }), Handler.extend({ _all: function () { var e = {}; for (var t in Random) e[t.toLowerCase()] = t; return e }, placeholder: function (placeholder, obj, templateContext, options) { Constant.RE_PLACEHOLDER.exec(""); var parts = Constant.RE_PLACEHOLDER.exec(placeholder), key = parts && parts[1], lkey = key && key.toLowerCase(), okey = this._all()[lkey], params = parts && parts[2] || "", pathParts = this.splitPathToArray(key); try { params = eval("(function(){ return [].splice.call(arguments, 0 ) })(" + params + ")") } catch (error) { params = parts[2].split(/,\s*/) } if (obj && key in obj) return obj[key]; if ("/" === key.charAt(0) || pathParts.length > 1) return this.getValueByKeyPath(key, options); if (templateContext && "object" === typeof templateContext && key in templateContext && placeholder !== templateContext[key]) return templateContext[key] = Handler.gen(templateContext[key], key, { currentContext: obj, templateCurrentContext: templateContext }), templateContext[key]; if (!(key in Random) && !(lkey in Random) && !(okey in Random)) return placeholder; for (var i = 0; i < params.length; i++)Constant.RE_PLACEHOLDER.exec(""), Constant.RE_PLACEHOLDER.test(params[i]) && (params[i] = Handler.placeholder(params[i], obj, templateContext, options)); var handle = Random[key] || Random[lkey] || Random[okey]; switch (Util.type(handle)) { case "array": return Random.pick(handle); case "function": handle.options = options; var re = handle.apply(Random, params); return void 0 === re && (re = ""), delete handle.options, re } }, getValueByKeyPath: function (e, t) { var n = e, r = this.splitPathToArray(e), i = []; "/" === e.charAt(0) ? i = [t.context.path[0]].concat(this.normalizePath(r)) : r.length > 1 && (i = t.context.path.slice(0), i.pop(), i = this.normalizePath(i.concat(r))), e = r[r.length - 1]; for (var o = t.context.root, a = t.context.templateRoot, s = 1; s < i.length - 1; s++)o = o[i[s]], a = a[i[s]]; return o && e in o ? o[e] : a && "object" === typeof a && e in a && n !== a[e] ? (a[e] = Handler.gen(a[e], e, { currentContext: o, templateCurrentContext: a }), a[e]) : void 0 }, normalizePath: function (e) { for (var t = [], n = 0; n < e.length; n++)switch (e[n]) { case "..": t.pop(); break; case ".": break; default: t.push(e[n]) }return t }, splitPathToArray: function (e) { var t = e.split(/\/+/); return t[t.length - 1] || (t = t.slice(0, -1)), t[0] || (t = t.slice(1)), t } }), module.exports = Handler }, function (e, t) { var n = { yyyy: "getFullYear", yy: function (e) { return ("" + e.getFullYear()).slice(2) }, y: "yy", MM: function (e) { var t = e.getMonth() + 1; return t < 10 ? "0" + t : t }, M: function (e) { return e.getMonth() + 1 }, dd: function (e) { var t = e.getDate(); return t < 10 ? "0" + t : t }, d: "getDate", HH: function (e) { var t = e.getHours(); return t < 10 ? "0" + t : t }, H: "getHours", hh: function (e) { var t = e.getHours() % 12; return t < 10 ? "0" + t : t }, h: function (e) { return e.getHours() % 12 }, mm: function (e) { var t = e.getMinutes(); return t < 10 ? "0" + t : t }, m: "getMinutes", ss: function (e) { var t = e.getSeconds(); return t < 10 ? "0" + t : t }, s: "getSeconds", SS: function (e) { var t = e.getMilliseconds(); return t < 10 && "00" + t || t < 100 && "0" + t || t }, S: "getMilliseconds", A: function (e) { return e.getHours() < 12 ? "AM" : "PM" }, a: function (e) { return e.getHours() < 12 ? "am" : "pm" }, T: "getTime" }; e.exports = { _patternLetters: n, _rformat: new RegExp(function () { var e = []; for (var t in n) e.push(t); return "(" + e.join("|") + ")" }(), "g"), _formatDate: function (e, t) { return t.replace(this._rformat, (function t(r, i) { return "function" === typeof n[i] ? n[i](e) : n[i] in n ? t(r, n[i]) : e[n[i]]() })) }, _randomDate: function (e, t) { return e = void 0 === e ? new Date(0) : e, t = void 0 === t ? new Date : t, new Date(Math.random() * (t.getTime() - e.getTime())) }, date: function (e) { return e = e || "yyyy-MM-dd", this._formatDate(this._randomDate(), e) }, time: function (e) { return e = e || "HH:mm:ss", this._formatDate(this._randomDate(), e) }, datetime: function (e) { return e = e || "yyyy-MM-dd HH:mm:ss", this._formatDate(this._randomDate(), e) }, now: function (e, t) { 1 === arguments.length && (/year|month|day|hour|minute|second|week/.test(e) || (t = e, e = "")), e = (e || "").toLowerCase(), t = t || "yyyy-MM-dd HH:mm:ss"; var n = new Date; switch (e) { case "year": n.setMonth(0); case "month": n.setDate(1); case "week": case "day": n.setHours(0); case "hour": n.setMinutes(0); case "minute": n.setSeconds(0); case "second": n.setMilliseconds(0) }switch (e) { case "week": n.setDate(n.getDate() - n.getDay()) }return this._formatDate(n, t) } } }, function (e, t, n) { (function (e) { e.exports = { _adSize: ["300x250", "250x250", "240x400", "336x280", "180x150", "720x300", "468x60", "234x60", "88x31", "120x90", "120x60", "120x240", "125x125", "728x90", "160x600", "120x600", "300x600"], _screenSize: ["320x200", "320x240", "640x480", "800x480", "800x480", "1024x600", "1024x768", "1280x800", "1440x900", "1920x1200", "2560x1600"], _videoSize: ["720x480", "768x576", "1280x720", "1920x1080"], image: function (e, t, n, r, i) { return 4 === arguments.length && (i = r, r = void 0), 3 === arguments.length && (i = n, n = void 0), e || (e = this.pick(this._adSize)), t && ~t.indexOf("#") && (t = t.slice(1)), n && ~n.indexOf("#") && (n = n.slice(1)), "http://dummyimage.com/" + e + (t ? "/" + t : "") + (n ? "/" + n : "") + (r ? "." + r : "") + (i ? "&text=" + i : "") }, img: function () { return this.image.apply(this, arguments) }, _brandColors: { "4ormat": "#fb0a2a", "500px": "#02adea", "About.me (blue)": "#00405d", "About.me (yellow)": "#ffcc33", Addvocate: "#ff6138", Adobe: "#ff0000", Aim: "#fcd20b", Amazon: "#e47911", Android: "#a4c639", "Angie's List": "#7fbb00", AOL: "#0060a3", Atlassian: "#003366", Behance: "#053eff", "Big Cartel": "#97b538", bitly: "#ee6123", Blogger: "#fc4f08", Boeing: "#0039a6", "Booking.com": "#003580", Carbonmade: "#613854", Cheddar: "#ff7243", "Code School": "#3d4944", Delicious: "#205cc0", Dell: "#3287c1", Designmoo: "#e54a4f", Deviantart: "#4e6252", "Designer News": "#2d72da", Devour: "#fd0001", DEWALT: "#febd17", "Disqus (blue)": "#59a3fc", "Disqus (orange)": "#db7132", Dribbble: "#ea4c89", Dropbox: "#3d9ae8", Drupal: "#0c76ab", Dunked: "#2a323a", eBay: "#89c507", Ember: "#f05e1b", Engadget: "#00bdf6", Envato: "#528036", Etsy: "#eb6d20", Evernote: "#5ba525", "Fab.com": "#dd0017", Facebook: "#3b5998", Firefox: "#e66000", "Flickr (blue)": "#0063dc", "Flickr (pink)": "#ff0084", Forrst: "#5b9a68", Foursquare: "#25a0ca", Garmin: "#007cc3", GetGlue: "#2d75a2", Gimmebar: "#f70078", GitHub: "#171515", "Google Blue": "#0140ca", "Google Green": "#16a61e", "Google Red": "#dd1812", "Google Yellow": "#fcca03", "Google+": "#dd4b39", Grooveshark: "#f77f00", Groupon: "#82b548", "Hacker News": "#ff6600", HelloWallet: "#0085ca", "Heroku (light)": "#c7c5e6", "Heroku (dark)": "#6567a5", HootSuite: "#003366", Houzz: "#73ba37", HTML5: "#ec6231", IKEA: "#ffcc33", IMDb: "#f3ce13", Instagram: "#3f729b", Intel: "#0071c5", Intuit: "#365ebf", Kickstarter: "#76cc1e", kippt: "#e03500", Kodery: "#00af81", LastFM: "#c3000d", LinkedIn: "#0e76a8", Livestream: "#cf0005", Lumo: "#576396", Mixpanel: "#a086d3", Meetup: "#e51937", Nokia: "#183693", NVIDIA: "#76b900", Opera: "#cc0f16", Path: "#e41f11", "PayPal (dark)": "#1e477a", "PayPal (light)": "#3b7bbf", Pinboard: "#0000e6", Pinterest: "#c8232c", PlayStation: "#665cbe", Pocket: "#ee4056", Prezi: "#318bff", Pusha: "#0f71b4", Quora: "#a82400", "QUOTE.fm": "#66ceff", Rdio: "#008fd5", Readability: "#9c0000", "Red Hat": "#cc0000", Resource: "#7eb400", Rockpack: "#0ba6ab", Roon: "#62b0d9", RSS: "#ee802f", Salesforce: "#1798c1", Samsung: "#0c4da2", Shopify: "#96bf48", Skype: "#00aff0", Snagajob: "#f47a20", Softonic: "#008ace", SoundCloud: "#ff7700", "Space Box": "#f86960", Spotify: "#81b71a", Sprint: "#fee100", Squarespace: "#121212", StackOverflow: "#ef8236", Staples: "#cc0000", "Status Chart": "#d7584f", Stripe: "#008cdd", StudyBlue: "#00afe1", StumbleUpon: "#f74425", "T-Mobile": "#ea0a8e", Technorati: "#40a800", "The Next Web": "#ef4423", Treehouse: "#5cb868", Trulia: "#5eab1f", Tumblr: "#34526f", "Twitch.tv": "#6441a5", Twitter: "#00acee", TYPO3: "#ff8700", Ubuntu: "#dd4814", Ustream: "#3388ff", Verizon: "#ef1d1d", Vimeo: "#86c9ef", Vine: "#00a478", Virb: "#06afd8", "Virgin Media": "#cc0000", Wooga: "#5b009c", "WordPress (blue)": "#21759b", "WordPress (orange)": "#d54e21", "WordPress (grey)": "#464646", Wunderlist: "#2b88d9", XBOX: "#9bc848", XING: "#126567", "Yahoo!": "#720e9e", Yandex: "#ffcc00", Yelp: "#c41200", YouTube: "#c4302b", Zalongo: "#5498dc", Zendesk: "#78a300", Zerply: "#9dcc7a", Zootool: "#5e8b1d" }, _brandNames: function () { var e = []; for (var t in this._brandColors) e.push(t); return e }, dataImage: function (t, n) { var r; if ("undefined" !== typeof document) r = document.createElement("canvas"); else { var i = e.require("canvas"); r = new i } var o = r && r.getContext && r.getContext("2d"); if (!r || !o) return ""; t || (t = this.pick(this._adSize)), n = void 0 !== n ? n : t, t = t.split("x"); var a = parseInt(t[0], 10), s = parseInt(t[1], 10), c = this._brandColors[this.pick(this._brandNames())], l = "#FFF", u = 14, h = "sans-serif"; return r.width = a, r.height = s, o.textAlign = "center", o.textBaseline = "middle", o.fillStyle = c, o.fillRect(0, 0, a, s), o.fillStyle = l, o.font = "bold " + u + "px " + h, o.fillText(n, a / 2, s / 2, a), r.toDataURL("image/png") } } }).call(t, n(13)(e)) }, function (e, t) { e.exports = function (e) { return e.webpackPolyfill || (e.deprecate = function () { }, e.paths = [], e.children || (e.children = []), Object.defineProperty(e, "loaded", { enumerable: !0, get: function () { return e.l } }), Object.defineProperty(e, "id", { enumerable: !0, get: function () { return e.i } }), e.webpackPolyfill = 1), e } }, function (e, t, n) { var r = n(15), i = n(16); e.exports = { color: function (e) { return e || i[e] ? i[e].nicer : this.hex() }, hex: function () { var e = this._goldenRatioColor(), t = r.hsv2rgb(e), n = r.rgb2hex(t[0], t[1], t[2]); return n }, rgb: function () { var e = this._goldenRatioColor(), t = r.hsv2rgb(e); return "rgb(" + parseInt(t[0], 10) + ", " + parseInt(t[1], 10) + ", " + parseInt(t[2], 10) + ")" }, rgba: function () { var e = this._goldenRatioColor(), t = r.hsv2rgb(e); return "rgba(" + parseInt(t[0], 10) + ", " + parseInt(t[1], 10) + ", " + parseInt(t[2], 10) + ", " + Math.random().toFixed(2) + ")" }, hsl: function () { var e = this._goldenRatioColor(), t = r.hsv2hsl(e); return "hsl(" + parseInt(t[0], 10) + ", " + parseInt(t[1], 10) + ", " + parseInt(t[2], 10) + ")" }, _goldenRatioColor: function (e, t) { return this._goldenRatio = .618033988749895, this._hue = this._hue || Math.random(), this._hue += this._goldenRatio, this._hue %= 1, "number" !== typeof e && (e = .5), "number" !== typeof t && (t = .95), [360 * this._hue, 100 * e, 100 * t] } } }, function (e, t) { e.exports = { rgb2hsl: function (e) { var t, n, r, i = e[0] / 255, o = e[1] / 255, a = e[2] / 255, s = Math.min(i, o, a), c = Math.max(i, o, a), l = c - s; return c == s ? t = 0 : i == c ? t = (o - a) / l : o == c ? t = 2 + (a - i) / l : a == c && (t = 4 + (i - o) / l), t = Math.min(60 * t, 360), t < 0 && (t += 360), r = (s + c) / 2, n = c == s ? 0 : r <= .5 ? l / (c + s) : l / (2 - c - s), [t, 100 * n, 100 * r] }, rgb2hsv: function (e) { var t, n, r, i = e[0], o = e[1], a = e[2], s = Math.min(i, o, a), c = Math.max(i, o, a), l = c - s; return n = 0 === c ? 0 : l / c * 1e3 / 10, c == s ? t = 0 : i == c ? t = (o - a) / l : o == c ? t = 2 + (a - i) / l : a == c && (t = 4 + (i - o) / l), t = Math.min(60 * t, 360), t < 0 && (t += 360), r = c / 255 * 1e3 / 10, [t, n, r] }, hsl2rgb: function (e) { var t, n, r, i, o, a = e[0] / 360, s = e[1] / 100, c = e[2] / 100; if (0 === s) return o = 255 * c, [o, o, o]; n = c < .5 ? c * (1 + s) : c + s - c * s, t = 2 * c - n, i = [0, 0, 0]; for (var l = 0; l < 3; l++)r = a + 1 / 3 * -(l - 1), r < 0 && r++, r > 1 && r--, o = 6 * r < 1 ? t + 6 * (n - t) * r : 2 * r < 1 ? n : 3 * r < 2 ? t + (n - t) * (2 / 3 - r) * 6 : t, i[l] = 255 * o; return i }, hsl2hsv: function (e) { var t, n, r = e[0], i = e[1] / 100, o = e[2] / 100; return o *= 2, i *= o <= 1 ? o : 2 - o, n = (o + i) / 2, t = 2 * i / (o + i), [r, 100 * t, 100 * n] }, hsv2rgb: function (e) { var t = e[0] / 60, n = e[1] / 100, r = e[2] / 100, i = Math.floor(t) % 6, o = t - Math.floor(t), a = 255 * r * (1 - n), s = 255 * r * (1 - n * o), c = 255 * r * (1 - n * (1 - o)); switch (r *= 255, i) { case 0: return [r, c, a]; case 1: return [s, r, a]; case 2: return [a, r, c]; case 3: return [a, s, r]; case 4: return [c, a, r]; case 5: return [r, a, s] } }, hsv2hsl: function (e) { var t, n, r = e[0], i = e[1] / 100, o = e[2] / 100; return n = (2 - i) * o, t = i * o, t /= n <= 1 ? n : 2 - n, n /= 2, [r, 100 * t, 100 * n] }, rgb2hex: function (e, t, n) { return "#" + ((256 + e << 8 | t) << 8 | n).toString(16).slice(1) }, hex2rgb: function (e) { return e = "0x" + e.slice(1).replace(e.length > 4 ? e : /./g, "$&$&") | 0, [e >> 16, e >> 8 & 255, 255 & e] } } }, function (e, t) { e.exports = { navy: { value: "#000080", nicer: "#001F3F" }, blue: { value: "#0000ff", nicer: "#0074D9" }, aqua: { value: "#00ffff", nicer: "#7FDBFF" }, teal: { value: "#008080", nicer: "#39CCCC" }, olive: { value: "#008000", nicer: "#3D9970" }, green: { value: "#008000", nicer: "#2ECC40" }, lime: { value: "#00ff00", nicer: "#01FF70" }, yellow: { value: "#ffff00", nicer: "#FFDC00" }, orange: { value: "#ffa500", nicer: "#FF851B" }, red: { value: "#ff0000", nicer: "#FF4136" }, maroon: { value: "#800000", nicer: "#85144B" }, fuchsia: { value: "#ff00ff", nicer: "#F012BE" }, purple: { value: "#800080", nicer: "#B10DC9" }, silver: { value: "#c0c0c0", nicer: "#DDDDDD" }, gray: { value: "#808080", nicer: "#AAAAAA" }, black: { value: "#000000", nicer: "#111111" }, white: { value: "#FFFFFF", nicer: "#FFFFFF" } } }, function (e, t, n) { var r = n(4), i = n(5); function o(e, t, n, i) { return void 0 === n ? r.natural(e, t) : void 0 === i ? n : r.natural(parseInt(n, 10), parseInt(i, 10)) } e.exports = { paragraph: function (e, t) { for (var n = o(3, 7, e, t), r = [], i = 0; i < n; i++)r.push(this.sentence()); return r.join(" ") }, cparagraph: function (e, t) { for (var n = o(3, 7, e, t), r = [], i = 0; i < n; i++)r.push(this.csentence()); return r.join("") }, sentence: function (e, t) { for (var n = o(12, 18, e, t), r = [], a = 0; a < n; a++)r.push(this.word()); return i.capitalize(r.join(" ")) + "." }, csentence: function (e, t) { for (var n = o(12, 18, e, t), r = [], i = 0; i < n; i++)r.push(this.cword()); return r.join("") + "銆�" }, word: function (e, t) { for (var n = o(3, 10, e, t), i = "", a = 0; a < n; a++)i += r.character("lower"); return i }, cword: function (e, t, n) { var r, i = "鐨勪竴鏄湪涓嶄簡鏈夊拰浜鸿繖涓ぇ涓轰笂涓浗鎴戜互瑕佷粬鏃舵潵鐢ㄤ滑鐢熷埌浣滃湴浜庡嚭灏卞垎瀵规垚浼氬彲涓诲彂骞村姩鍚屽伐涔熻兘涓嬭繃瀛愯浜х闈㈣�屾柟鍚庡瀹氳瀛︽硶鎵�姘戝緱缁忓崄涓変箣杩涚潃绛夐儴搴﹀鐢靛姏閲屽姘村寲楂樿嚜浜岀悊璧峰皬鐗╃幇瀹炲姞閲忛兘涓や綋鍒舵満褰撲娇鐐逛粠涓氭湰鍘绘妸鎬уソ搴斿紑瀹冨悎杩樺洜鐢卞叾浜涚劧鍓嶅澶╂斂鍥涙棩閭gぞ涔変簨骞冲舰鐩稿叏琛ㄩ棿鏍蜂笌鍏冲悇閲嶆柊绾垮唴鏁版蹇冨弽浣犳槑鐪嬪師鍙堜箞鍒╂瘮鎴栦絾璐ㄦ皵绗悜閬撳懡姝ゅ彉鏉″彧娌$粨瑙i棶鎰忓缓鏈堝叕鏃犵郴鍐涘緢鎯呰�呮渶绔嬩唬鎯冲凡閫氬苟鎻愮洿棰樺厷绋嬪睍浜旀灉鏂欒薄鍛橀潻浣嶅叆甯告枃鎬绘鍝佸紡娲昏鍙婄鐗逛欢闀挎眰鑰佸ご鍩鸿祫杈规祦璺骇灏戝浘灞辩粺鎺ョ煡杈冨皢缁勮璁″埆濂规墜瑙掓湡鏍硅杩愬啘鎸囧嚑涔濆尯寮烘斁鍐宠タ琚共鍋氬繀鎴樺厛鍥炲垯浠诲彇鎹闃熷崡缁欒壊鍏夐棬鍗充繚娌诲寳閫犵櫨瑙勭儹棰嗕竷娴峰彛涓滃鍣ㄥ帇蹇椾笘閲戝浜夋祹闃舵补鎬濇湳鏋佷氦鍙楄仈浠�璁ゅ叚鍏辨潈鏀惰瘉鏀规竻宸辩編鍐嶉噰杞洿鍗曢鍒囨墦鐧芥暀閫熻姳甯﹀畨鍦鸿韩杞︿緥鐪熷姟鍏蜂竾姣忕洰鑷宠揪璧扮Н绀鸿澹版姤鏂楀畬绫诲叓绂诲崕鍚嶇‘鎵嶇寮犱俊椹妭璇濈背鏁寸┖鍏冨喌浠婇泦娓╀紶鍦熻姝ョ兢骞跨煶璁伴渶娈电爺鐣屾媺鏋楀緥鍙笖绌惰瓒婄粐瑁呭奖绠椾綆鎸侀煶浼椾功甯冨瀹瑰効椤婚檯鍟嗛潪楠岃繛鏂繁闅捐繎鐭垮崈鍛ㄥ绱犳妧澶囧崐鍔為潚鐪佸垪涔犲搷绾︽敮鑸彶鎰熷姵渚垮洟寰�閰稿巻甯傚厠浣曢櫎娑堟瀯搴滅О澶噯绮惧�煎彿鐜囨棌缁村垝閫夋爣鍐欏瓨鍊欐瘺浜插揩鏁堟柉闄㈡煡姹熷瀷鐪肩帇鎸夋牸鍏绘槗缃淳灞傜墖濮嬪嵈涓撶姸鑲插巶浜瘑閫傚睘鍦嗗寘鐏綇璋冩弧鍘垮眬鐓у弬绾㈢粏寮曞惉璇ラ搧浠蜂弗榫欓"; switch (arguments.length) { case 0: e = i, r = 1; break; case 1: "string" === typeof arguments[0] ? r = 1 : (r = e, e = i); break; case 2: "string" === typeof arguments[0] ? r = t : (r = this.natural(e, t), e = i); break; case 3: r = this.natural(t, n); break }for (var o = "", a = 0; a < r; a++)o += e.charAt(this.natural(0, e.length - 1)); return o }, title: function (e, t) { for (var n = o(3, 7, e, t), r = [], i = 0; i < n; i++)r.push(this.capitalize(this.word())); return r.join(" ") }, ctitle: function (e, t) { for (var n = o(3, 7, e, t), r = [], i = 0; i < n; i++)r.push(this.cword()); return r.join("") } } }, function (e, t) { e.exports = { first: function () { var e = ["James", "John", "Robert", "Michael", "William", "David", "Richard", "Charles", "Joseph", "Thomas", "Christopher", "Daniel", "Paul", "Mark", "Donald", "George", "Kenneth", "Steven", "Edward", "Brian", "Ronald", "Anthony", "Kevin", "Jason", "Matthew", "Gary", "Timothy", "Jose", "Larry", "Jeffrey", "Frank", "Scott", "Eric"].concat(["Mary", "Patricia", "Linda", "Barbara", "Elizabeth", "Jennifer", "Maria", "Susan", "Margaret", "Dorothy", "Lisa", "Nancy", "Karen", "Betty", "Helen", "Sandra", "Donna", "Carol", "Ruth", "Sharon", "Michelle", "Laura", "Sarah", "Kimberly", "Deborah", "Jessica", "Shirley", "Cynthia", "Angela", "Melissa", "Brenda", "Amy", "Anna"]); return this.pick(e) }, last: function () { var e = ["Smith", "Johnson", "Williams", "Brown", "Jones", "Miller", "Davis", "Garcia", "Rodriguez", "Wilson", "Martinez", "Anderson", "Taylor", "Thomas", "Hernandez", "Moore", "Martin", "Jackson", "Thompson", "White", "Lopez", "Lee", "Gonzalez", "Harris", "Clark", "Lewis", "Robinson", "Walker", "Perez", "Hall", "Young", "Allen"]; return this.pick(e) }, name: function (e) { return this.first() + " " + (e ? this.first() + " " : "") + this.last() }, cfirst: function () { var e = "鐜� 鏉� 寮� 鍒� 闄� 鏉� 璧� 榛� 鍛� 鍚� 寰� 瀛� 鑳� 鏈� 楂� 鏋� 浣� 閮� 椹� 缃� 姊� 瀹� 閮� 璋� 闊� 鍞� 鍐� 浜� 钁� 钀� 绋� 鏇� 琚� 閭� 璁� 鍌� 娌� 鏇� 褰� 鍚� 鑻� 鍗� 钂� 钄� 璐� 涓� 榄� 钖� 鍙� 闃� 浣� 娼� 鏉� 鎴� 澶� 閿� 姹� 鐢� 浠� 濮� 鑼� 鏂� 鐭� 濮� 璋� 寤� 閭� 鐔� 閲� 闄� 閮� 瀛� 鐧� 宕� 搴� 姣� 閭� 绉� 姹� 鍙� 椤� 渚� 閭� 瀛� 榫� 涓� 娈� 闆� 閽� 姹� 灏� 榛� 鏄� 甯� 姝� 涔� 璐� 璧� 榫� 鏂�".split(" "); return this.pick(e) }, clast: function () { var e = "浼� 鑺� 濞� 绉�鑻� 鏁� 闈� 涓� 寮� 纾� 鍐� 娲� 鍕� 鑹� 鏉� 濞� 娑� 鏄� 瓒� 绉�鍏� 闇� 骞� 鍒� 妗傝嫳".split(" "); return this.pick(e) }, cname: function () { return this.cfirst() + this.clast() } } }, function (e, t) { e.exports = { url: function (e, t) { return (e || this.protocol()) + "://" + (t || this.domain()) + "/" + this.word() }, protocol: function () { return this.pick("http ftp gopher mailto mid cid news nntp prospero telnet rlogin tn3270 wais".split(" ")) }, domain: function (e) { return this.word() + "." + (e || this.tld()) }, tld: function () { return this.pick("com net org edu gov int mil cn com.cn net.cn gov.cn org.cn 涓浗 涓浗浜掕仈.鍏徃 涓浗浜掕仈.缃戠粶 tel biz cc tv info name hk mobi asia cd travel pro museum coop aero ad ae af ag ai al am an ao aq ar as at au aw az ba bb bd be bf bg bh bi bj bm bn bo br bs bt bv bw by bz ca cc cf cg ch ci ck cl cm cn co cq cr cu cv cx cy cz de dj dk dm do dz ec ee eg eh es et ev fi fj fk fm fo fr ga gb gd ge gf gh gi gl gm gn gp gr gt gu gw gy hk hm hn hr ht hu id ie il in io iq ir is it jm jo jp ke kg kh ki km kn kp kr kw ky kz la lb lc li lk lr ls lt lu lv ly ma mc md mg mh ml mm mn mo mp mq mr ms mt mv mw mx my mz na nc ne nf ng ni nl no np nr nt nu nz om qa pa pe pf pg ph pk pl pm pn pr pt pw py re ro ru rw sa sb sc sd se sg sh si sj sk sl sm sn so sr st su sy sz tc td tf tg th tj tk tm tn to tp tr tt tv tw tz ua ug uk us uy va vc ve vg vn vu wf ws ye yu za zm zr zw".split(" ")) }, email: function (e) { return this.character("lower") + "." + this.word() + "@" + (e || this.word() + "." + this.tld()) }, ip: function () { return this.natural(0, 255) + "." + this.natural(0, 255) + "." + this.natural(0, 255) + "." + this.natural(0, 255) } } }, function (e, t, n) { var r = n(6), i = ["涓滃寳", "鍗庡寳", "鍗庝笢", "鍗庝腑", "鍗庡崡", "瑗垮崡", "瑗垮寳"]; e.exports = { region: function () { return this.pick(i) }, province: function () { return this.pick(r).name }, city: function (e) { var t = this.pick(r), n = this.pick(t.children); return e ? [t.name, n.name].join(" ") : n.name }, county: function (e) { var t = this.pick(r), n = this.pick(t.children), i = this.pick(n.children) || { name: "-" }; return e ? [t.name, n.name, i.name].join(" ") : i.name }, zip: function (e) { for (var t = "", n = 0; n < (e || 6); n++)t += this.natural(0, 9); return t } } }, function (e, t, n) { var r = n(6); e.exports = { d4: function () { return this.natural(1, 4) }, d6: function () { return this.natural(1, 6) }, d8: function () { return this.natural(1, 8) }, d12: function () { return this.natural(1, 12) }, d20: function () { return this.natural(1, 20) }, d100: function () { return this.natural(1, 100) }, guid: function () { var e = "abcdefABCDEF1234567890", t = this.string(e, 8) + "-" + this.string(e, 4) + "-" + this.string(e, 4) + "-" + this.string(e, 4) + "-" + this.string(e, 12); return t }, uuid: function () { return this.guid() }, id: function () { var e, t = 0, n = ["7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"], i = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"]; e = this.pick(r).id + this.date("yyyyMMdd") + this.string("number", 3); for (var o = 0; o < e.length; o++)t += e[o] * n[o]; return e += i[t % 11], e }, increment: function () { var e = 0; return function (t) { return e += +t || 1 } }(), inc: function (e) { return this.increment(e) } } }, function (e, t) { function n(e) { this.type = e, this.offset = n.offset(), this.text = n.text() } function r(e, t) { n.call(this, "alternate"), this.left = e, this.right = t } function i(e) { n.call(this, "match"), this.body = e.filter(Boolean) } function o(e, t) { n.call(this, e), this.body = t } function a(e) { o.call(this, "capture-group"), this.index = b[this.offset] || (b[this.offset] = y++), this.body = e } function s(e, t) { n.call(this, "quantified"), this.body = e, this.quantifier = t } function c(e, t) { n.call(this, "quantifier"), this.min = e, this.max = t, this.greedy = !0 } function l(e, t) { n.call(this, "charset"), this.invert = e, this.body = t } function u(e, t) { n.call(this, "range"), this.start = e, this.end = t } function h(e) { n.call(this, "literal"), this.body = e, this.escaped = this.body != this.text } function f(e) { n.call(this, "unicode"), this.code = e.toUpperCase() } function d(e) { n.call(this, "hex"), this.code = e.toUpperCase() } function p(e) { n.call(this, "octal"), this.code = e.toUpperCase() } function v(e) { n.call(this, "back-reference"), this.code = e.toUpperCase() } function m(e) { n.call(this, "control-character"), this.code = e.toUpperCase() } var g = function () { function e(e, t) { function n() { this.constructor = e } n.prototype = t.prototype, e.prototype = new n } function t(e, t, n, r, i) { function o(e, t) { function n(e) { function t(e) { return e.charCodeAt(0).toString(16).toUpperCase() } return e.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\x08/g, "\\b").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\f/g, "\\f").replace(/\r/g, "\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g, (function (e) { return "\\x0" + t(e) })).replace(/[\x10-\x1F\x80-\xFF]/g, (function (e) { return "\\x" + t(e) })).replace(/[\u0180-\u0FFF]/g, (function (e) { return "\\u0" + t(e) })).replace(/[\u1080-\uFFFF]/g, (function (e) { return "\\u" + t(e) })) } var r, i; switch (e.length) { case 0: r = "end of input"; break; case 1: r = e[0]; break; default: r = e.slice(0, -1).join(", ") + " or " + e[e.length - 1] }return i = t ? '"' + n(t) + '"' : "end of input", "Expected " + r + " but " + i + " found." } this.expected = e, this.found = t, this.offset = n, this.line = r, this.column = i, this.name = "SyntaxError", this.message = o(e, t) } function g(e) { function g() { return e.substring(Zn, Qn) } function y() { return Zn } function b(t) { function n(t, n, r) { var i, o; for (i = n; r > i; i++)o = e.charAt(i), "\n" === o ? (t.seenCR || t.line++, t.column = 1, t.seenCR = !1) : "\r" === o || "\u2028" === o || "\u2029" === o ? (t.line++, t.column = 1, t.seenCR = !0) : (t.column++, t.seenCR = !1) } return er !== t && (er > t && (er = 0, tr = { line: 1, column: 1, seenCR: !1 }), n(tr, er, t), er = t), tr } function x(e) { nr > Qn || (Qn > nr && (nr = Qn, rr = []), rr.push(e)) } function w(e) { var t = 0; for (e.sort(); t < e.length;)e[t - 1] === e[t] ? e.splice(t, 1) : t++ } function _() { var t, n, r, i, o; return t = Qn, n = C(), null !== n ? (r = Qn, 124 === e.charCodeAt(Qn) ? (i = Oe, Qn++) : (i = null, 0 === ir && x(ke)), null !== i ? (o = _(), null !== o ? (i = [i, o], r = i) : (Qn = r, r = Ce)) : (Qn = r, r = Ce), null === r && (r = Me), null !== r ? (Zn = t, n = Se(n, r), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce)) : (Qn = t, t = Ce), t } function C() { var e, t, n, r, i; if (e = Qn, t = O(), null === t && (t = Me), null !== t) if (n = Qn, ir++, r = T(), ir--, null === r ? n = Me : (Qn = n, n = Ce), null !== n) { for (r = [], i = S(), null === i && (i = M()); null !== i;)r.push(i), i = S(), null === i && (i = M()); null !== r ? (i = k(), null === i && (i = Me), null !== i ? (Zn = e, t = Te(t, r, i), null === t ? (Qn = e, e = t) : e = t) : (Qn = e, e = Ce)) : (Qn = e, e = Ce) } else Qn = e, e = Ce; else Qn = e, e = Ce; return e } function M() { var e; return e = I(), null === e && (e = $(), null === e && (e = K())), e } function O() { var t, n; return t = Qn, 94 === e.charCodeAt(Qn) ? (n = Ae, Qn++) : (n = null, 0 === ir && x(Le)), null !== n && (Zn = t, n = je()), null === n ? (Qn = t, t = n) : t = n, t } function k() { var t, n; return t = Qn, 36 === e.charCodeAt(Qn) ? (n = ze, Qn++) : (n = null, 0 === ir && x(Ee)), null !== n && (Zn = t, n = Pe()), null === n ? (Qn = t, t = n) : t = n, t } function S() { var e, t, n; return e = Qn, t = M(), null !== t ? (n = T(), null !== n ? (Zn = e, t = De(t, n), null === t ? (Qn = e, e = t) : e = t) : (Qn = e, e = Ce)) : (Qn = e, e = Ce), e } function T() { var e, t, n; return ir++, e = Qn, t = A(), null !== t ? (n = H(), null === n && (n = Me), null !== n ? (Zn = e, t = Ve(t, n), null === t ? (Qn = e, e = t) : e = t) : (Qn = e, e = Ce)) : (Qn = e, e = Ce), ir--, null === e && (t = null, 0 === ir && x(He)), e } function A() { var e; return e = L(), null === e && (e = j(), null === e && (e = z(), null === e && (e = E(), null === e && (e = P(), null === e && (e = D()))))), e } function L() { var t, n, r, i, o, a; return t = Qn, 123 === e.charCodeAt(Qn) ? (n = Ie, Qn++) : (n = null, 0 === ir && x(Ne)), null !== n ? (r = V(), null !== r ? (44 === e.charCodeAt(Qn) ? (i = Re, Qn++) : (i = null, 0 === ir && x(Fe)), null !== i ? (o = V(), null !== o ? (125 === e.charCodeAt(Qn) ? (a = Ye, Qn++) : (a = null, 0 === ir && x($e)), null !== a ? (Zn = t, n = Be(r, o), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce)) : (Qn = t, t = Ce)) : (Qn = t, t = Ce)) : (Qn = t, t = Ce)) : (Qn = t, t = Ce), t } function j() { var t, n, r, i; return t = Qn, 123 === e.charCodeAt(Qn) ? (n = Ie, Qn++) : (n = null, 0 === ir && x(Ne)), null !== n ? (r = V(), null !== r ? (e.substr(Qn, 2) === We ? (i = We, Qn += 2) : (i = null, 0 === ir && x(qe)), null !== i ? (Zn = t, n = Ue(r), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce)) : (Qn = t, t = Ce)) : (Qn = t, t = Ce), t } function z() { var t, n, r, i; return t = Qn, 123 === e.charCodeAt(Qn) ? (n = Ie, Qn++) : (n = null, 0 === ir && x(Ne)), null !== n ? (r = V(), null !== r ? (125 === e.charCodeAt(Qn) ? (i = Ye, Qn++) : (i = null, 0 === ir && x($e)), null !== i ? (Zn = t, n = Ke(r), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce)) : (Qn = t, t = Ce)) : (Qn = t, t = Ce), t } function E() { var t, n; return t = Qn, 43 === e.charCodeAt(Qn) ? (n = Ge, Qn++) : (n = null, 0 === ir && x(Xe)), null !== n && (Zn = t, n = Je()), null === n ? (Qn = t, t = n) : t = n, t } function P() { var t, n; return t = Qn, 42 === e.charCodeAt(Qn) ? (n = Qe, Qn++) : (n = null, 0 === ir && x(Ze)), null !== n && (Zn = t, n = et()), null === n ? (Qn = t, t = n) : t = n, t } function D() { var t, n; return t = Qn, 63 === e.charCodeAt(Qn) ? (n = tt, Qn++) : (n = null, 0 === ir && x(nt)), null !== n && (Zn = t, n = rt()), null === n ? (Qn = t, t = n) : t = n, t } function H() { var t; return 63 === e.charCodeAt(Qn) ? (t = tt, Qn++) : (t = null, 0 === ir && x(nt)), t } function V() { var t, n, r; if (t = Qn, n = [], it.test(e.charAt(Qn)) ? (r = e.charAt(Qn), Qn++) : (r = null, 0 === ir && x(ot)), null !== r) for (; null !== r;)n.push(r), it.test(e.charAt(Qn)) ? (r = e.charAt(Qn), Qn++) : (r = null, 0 === ir && x(ot)); else n = Ce; return null !== n && (Zn = t, n = at(n)), null === n ? (Qn = t, t = n) : t = n, t } function I() { var t, n, r, i; return t = Qn, 40 === e.charCodeAt(Qn) ? (n = st, Qn++) : (n = null, 0 === ir && x(ct)), null !== n ? (r = F(), null === r && (r = Y(), null === r && (r = R(), null === r && (r = N()))), null !== r ? (41 === e.charCodeAt(Qn) ? (i = lt, Qn++) : (i = null, 0 === ir && x(ut)), null !== i ? (Zn = t, n = ht(r), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce)) : (Qn = t, t = Ce)) : (Qn = t, t = Ce), t } function N() { var e, t; return e = Qn, t = _(), null !== t && (Zn = e, t = ft(t)), null === t ? (Qn = e, e = t) : e = t, e } function R() { var t, n, r; return t = Qn, e.substr(Qn, 2) === dt ? (n = dt, Qn += 2) : (n = null, 0 === ir && x(pt)), null !== n ? (r = _(), null !== r ? (Zn = t, n = vt(r), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce)) : (Qn = t, t = Ce), t } function F() { var t, n, r; return t = Qn, e.substr(Qn, 2) === mt ? (n = mt, Qn += 2) : (n = null, 0 === ir && x(gt)), null !== n ? (r = _(), null !== r ? (Zn = t, n = yt(r), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce)) : (Qn = t, t = Ce), t } function Y() { var t, n, r; return t = Qn, e.substr(Qn, 2) === bt ? (n = bt, Qn += 2) : (n = null, 0 === ir && x(xt)), null !== n ? (r = _(), null !== r ? (Zn = t, n = wt(r), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce)) : (Qn = t, t = Ce), t } function $() { var t, n, r, i, o; if (ir++, t = Qn, 91 === e.charCodeAt(Qn) ? (n = Ct, Qn++) : (n = null, 0 === ir && x(Mt)), null !== n) if (94 === e.charCodeAt(Qn) ? (r = Ae, Qn++) : (r = null, 0 === ir && x(Le)), null === r && (r = Me), null !== r) { for (i = [], o = B(), null === o && (o = W()); null !== o;)i.push(o), o = B(), null === o && (o = W()); null !== i ? (93 === e.charCodeAt(Qn) ? (o = Ot, Qn++) : (o = null, 0 === ir && x(kt)), null !== o ? (Zn = t, n = St(r, i), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce)) : (Qn = t, t = Ce) } else Qn = t, t = Ce; else Qn = t, t = Ce; return ir--, null === t && (n = null, 0 === ir && x(_t)), t } function B() { var t, n, r, i; return ir++, t = Qn, n = W(), null !== n ? (45 === e.charCodeAt(Qn) ? (r = At, Qn++) : (r = null, 0 === ir && x(Lt)), null !== r ? (i = W(), null !== i ? (Zn = t, n = jt(n, i), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce)) : (Qn = t, t = Ce)) : (Qn = t, t = Ce), ir--, null === t && (n = null, 0 === ir && x(Tt)), t } function W() { var e; return ir++, e = U(), null === e && (e = q()), ir--, null === e && (null, 0 === ir && x(zt)), e } function q() { var t, n; return t = Qn, Et.test(e.charAt(Qn)) ? (n = e.charAt(Qn), Qn++) : (n = null, 0 === ir && x(Pt)), null !== n && (Zn = t, n = Dt(n)), null === n ? (Qn = t, t = n) : t = n, t } function U() { var e; return e = Q(), null === e && (e = fe(), null === e && (e = te(), null === e && (e = ne(), null === e && (e = re(), null === e && (e = ie(), null === e && (e = oe(), null === e && (e = ae(), null === e && (e = se(), null === e && (e = ce(), null === e && (e = le(), null === e && (e = ue(), null === e && (e = he(), null === e && (e = pe(), null === e && (e = ve(), null === e && (e = me(), null === e && (e = ge(), null === e && (e = ye()))))))))))))))))), e } function K() { var e; return e = G(), null === e && (e = J(), null === e && (e = X())), e } function G() { var t, n; return t = Qn, 46 === e.charCodeAt(Qn) ? (n = Ht, Qn++) : (n = null, 0 === ir && x(Vt)), null !== n && (Zn = t, n = It()), null === n ? (Qn = t, t = n) : t = n, t } function X() { var t, n; return ir++, t = Qn, Rt.test(e.charAt(Qn)) ? (n = e.charAt(Qn), Qn++) : (n = null, 0 === ir && x(Ft)), null !== n && (Zn = t, n = Dt(n)), null === n ? (Qn = t, t = n) : t = n, ir--, null === t && (n = null, 0 === ir && x(Nt)), t } function J() { var e; return e = Z(), null === e && (e = ee(), null === e && (e = fe(), null === e && (e = te(), null === e && (e = ne(), null === e && (e = re(), null === e && (e = ie(), null === e && (e = oe(), null === e && (e = ae(), null === e && (e = se(), null === e && (e = ce(), null === e && (e = le(), null === e && (e = ue(), null === e && (e = he(), null === e && (e = de(), null === e && (e = pe(), null === e && (e = ve(), null === e && (e = me(), null === e && (e = ge(), null === e && (e = ye()))))))))))))))))))), e } function Q() { var t, n; return t = Qn, e.substr(Qn, 2) === Yt ? (n = Yt, Qn += 2) : (n = null, 0 === ir && x($t)), null !== n && (Zn = t, n = Bt()), null === n ? (Qn = t, t = n) : t = n, t } function Z() { var t, n; return t = Qn, e.substr(Qn, 2) === Yt ? (n = Yt, Qn += 2) : (n = null, 0 === ir && x($t)), null !== n && (Zn = t, n = Wt()), null === n ? (Qn = t, t = n) : t = n, t } function ee() { var t, n; return t = Qn, e.substr(Qn, 2) === qt ? (n = qt, Qn += 2) : (n = null, 0 === ir && x(Ut)), null !== n && (Zn = t, n = Kt()), null === n ? (Qn = t, t = n) : t = n, t } function te() { var t, n; return t = Qn, e.substr(Qn, 2) === Gt ? (n = Gt, Qn += 2) : (n = null, 0 === ir && x(Xt)), null !== n && (Zn = t, n = Jt()), null === n ? (Qn = t, t = n) : t = n, t } function ne() { var t, n; return t = Qn, e.substr(Qn, 2) === Qt ? (n = Qt, Qn += 2) : (n = null, 0 === ir && x(Zt)), null !== n && (Zn = t, n = en()), null === n ? (Qn = t, t = n) : t = n, t } function re() { var t, n; return t = Qn, e.substr(Qn, 2) === tn ? (n = tn, Qn += 2) : (n = null, 0 === ir && x(nn)), null !== n && (Zn = t, n = rn()), null === n ? (Qn = t, t = n) : t = n, t } function ie() { var t, n; return t = Qn, e.substr(Qn, 2) === on ? (n = on, Qn += 2) : (n = null, 0 === ir && x(an)), null !== n && (Zn = t, n = sn()), null === n ? (Qn = t, t = n) : t = n, t } function oe() { var t, n; return t = Qn, e.substr(Qn, 2) === cn ? (n = cn, Qn += 2) : (n = null, 0 === ir && x(ln)), null !== n && (Zn = t, n = un()), null === n ? (Qn = t, t = n) : t = n, t } function ae() { var t, n; return t = Qn, e.substr(Qn, 2) === hn ? (n = hn, Qn += 2) : (n = null, 0 === ir && x(fn)), null !== n && (Zn = t, n = dn()), null === n ? (Qn = t, t = n) : t = n, t } function se() { var t, n; return t = Qn, e.substr(Qn, 2) === pn ? (n = pn, Qn += 2) : (n = null, 0 === ir && x(vn)), null !== n && (Zn = t, n = mn()), null === n ? (Qn = t, t = n) : t = n, t } function ce() { var t, n; return t = Qn, e.substr(Qn, 2) === gn ? (n = gn, Qn += 2) : (n = null, 0 === ir && x(yn)), null !== n && (Zn = t, n = bn()), null === n ? (Qn = t, t = n) : t = n, t } function le() { var t, n; return t = Qn, e.substr(Qn, 2) === xn ? (n = xn, Qn += 2) : (n = null, 0 === ir && x(wn)), null !== n && (Zn = t, n = _n()), null === n ? (Qn = t, t = n) : t = n, t } function ue() { var t, n; return t = Qn, e.substr(Qn, 2) === Cn ? (n = Cn, Qn += 2) : (n = null, 0 === ir && x(Mn)), null !== n && (Zn = t, n = On()), null === n ? (Qn = t, t = n) : t = n, t } function he() { var t, n; return t = Qn, e.substr(Qn, 2) === kn ? (n = kn, Qn += 2) : (n = null, 0 === ir && x(Sn)), null !== n && (Zn = t, n = Tn()), null === n ? (Qn = t, t = n) : t = n, t } function fe() { var t, n, r; return t = Qn, e.substr(Qn, 2) === An ? (n = An, Qn += 2) : (n = null, 0 === ir && x(Ln)), null !== n ? (e.length > Qn ? (r = e.charAt(Qn), Qn++) : (r = null, 0 === ir && x(jn)), null !== r ? (Zn = t, n = zn(r), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce)) : (Qn = t, t = Ce), t } function de() { var t, n, r; return t = Qn, 92 === e.charCodeAt(Qn) ? (n = En, Qn++) : (n = null, 0 === ir && x(Pn)), null !== n ? (Dn.test(e.charAt(Qn)) ? (r = e.charAt(Qn), Qn++) : (r = null, 0 === ir && x(Hn)), null !== r ? (Zn = t, n = Vn(r), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce)) : (Qn = t, t = Ce), t } function pe() { var t, n, r, i; if (t = Qn, e.substr(Qn, 2) === In ? (n = In, Qn += 2) : (n = null, 0 === ir && x(Nn)), null !== n) { if (r = [], Rn.test(e.charAt(Qn)) ? (i = e.charAt(Qn), Qn++) : (i = null, 0 === ir && x(Fn)), null !== i) for (; null !== i;)r.push(i), Rn.test(e.charAt(Qn)) ? (i = e.charAt(Qn), Qn++) : (i = null, 0 === ir && x(Fn)); else r = Ce; null !== r ? (Zn = t, n = Yn(r), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce) } else Qn = t, t = Ce; return t } function ve() { var t, n, r, i; if (t = Qn, e.substr(Qn, 2) === $n ? (n = $n, Qn += 2) : (n = null, 0 === ir && x(Bn)), null !== n) { if (r = [], Wn.test(e.charAt(Qn)) ? (i = e.charAt(Qn), Qn++) : (i = null, 0 === ir && x(qn)), null !== i) for (; null !== i;)r.push(i), Wn.test(e.charAt(Qn)) ? (i = e.charAt(Qn), Qn++) : (i = null, 0 === ir && x(qn)); else r = Ce; null !== r ? (Zn = t, n = Un(r), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce) } else Qn = t, t = Ce; return t } function me() { var t, n, r, i; if (t = Qn, e.substr(Qn, 2) === Kn ? (n = Kn, Qn += 2) : (n = null, 0 === ir && x(Gn)), null !== n) { if (r = [], Wn.test(e.charAt(Qn)) ? (i = e.charAt(Qn), Qn++) : (i = null, 0 === ir && x(qn)), null !== i) for (; null !== i;)r.push(i), Wn.test(e.charAt(Qn)) ? (i = e.charAt(Qn), Qn++) : (i = null, 0 === ir && x(qn)); else r = Ce; null !== r ? (Zn = t, n = Xn(r), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce) } else Qn = t, t = Ce; return t } function ge() { var t, n; return t = Qn, e.substr(Qn, 2) === In ? (n = In, Qn += 2) : (n = null, 0 === ir && x(Nn)), null !== n && (Zn = t, n = Jn()), null === n ? (Qn = t, t = n) : t = n, t } function ye() { var t, n, r; return t = Qn, 92 === e.charCodeAt(Qn) ? (n = En, Qn++) : (n = null, 0 === ir && x(Pn)), null !== n ? (e.length > Qn ? (r = e.charAt(Qn), Qn++) : (r = null, 0 === ir && x(jn)), null !== r ? (Zn = t, n = Dt(r), null === n ? (Qn = t, t = n) : t = n) : (Qn = t, t = Ce)) : (Qn = t, t = Ce), t } var be, xe = arguments.length > 1 ? arguments[1] : {}, we = { regexp: _ }, _e = _, Ce = null, Me = "", Oe = "|", ke = '"|"', Se = function (e, t) { return t ? new r(e, t[1]) : e }, Te = function (e, t, n) { return new i([e].concat(t).concat([n])) }, Ae = "^", Le = '"^"', je = function () { return new n("start") }, ze = "$", Ee = '"$"', Pe = function () { return new n("end") }, De = function (e, t) { return new s(e, t) }, He = "Quantifier", Ve = function (e, t) { return t && (e.greedy = !1), e }, Ie = "{", Ne = '"{"', Re = ",", Fe = '","', Ye = "}", $e = '"}"', Be = function (e, t) { return new c(e, t) }, We = ",}", qe = '",}"', Ue = function (e) { return new c(e, 1 / 0) }, Ke = function (e) { return new c(e, e) }, Ge = "+", Xe = '"+"', Je = function () { return new c(1, 1 / 0) }, Qe = "*", Ze = '"*"', et = function () { return new c(0, 1 / 0) }, tt = "?", nt = '"?"', rt = function () { return new c(0, 1) }, it = /^[0-9]/, ot = "[0-9]", at = function (e) { return +e.join("") }, st = "(", ct = '"("', lt = ")", ut = '")"', ht = function (e) { return e }, ft = function (e) { return new a(e) }, dt = "?:", pt = '"?:"', vt = function (e) { return new o("non-capture-group", e) }, mt = "?=", gt = '"?="', yt = function (e) { return new o("positive-lookahead", e) }, bt = "?!", xt = '"?!"', wt = function (e) { return new o("negative-lookahead", e) }, _t = "CharacterSet", Ct = "[", Mt = '"["', Ot = "]", kt = '"]"', St = function (e, t) { return new l(!!e, t) }, Tt = "CharacterRange", At = "-", Lt = '"-"', jt = function (e, t) { return new u(e, t) }, zt = "Character", Et = /^[^\\\]]/, Pt = "[^\\\\\\]]", Dt = function (e) { return new h(e) }, Ht = ".", Vt = '"."', It = function () { return new n("any-character") }, Nt = "Literal", Rt = /^[^|\\\/.[()?+*$\^]/, Ft = "[^|\\\\\\/.[()?+*$\\^]", Yt = "\\b", $t = '"\\\\b"', Bt = function () { return new n("backspace") }, Wt = function () { return new n("word-boundary") }, qt = "\\B", Ut = '"\\\\B"', Kt = function () { return new n("non-word-boundary") }, Gt = "\\d", Xt = '"\\\\d"', Jt = function () { return new n("digit") }, Qt = "\\D", Zt = '"\\\\D"', en = function () { return new n("non-digit") }, tn = "\\f", nn = '"\\\\f"', rn = function () { return new n("form-feed") }, on = "\\n", an = '"\\\\n"', sn = function () { return new n("line-feed") }, cn = "\\r", ln = '"\\\\r"', un = function () { return new n("carriage-return") }, hn = "\\s", fn = '"\\\\s"', dn = function () { return new n("white-space") }, pn = "\\S", vn = '"\\\\S"', mn = function () { return new n("non-white-space") }, gn = "\\t", yn = '"\\\\t"', bn = function () { return new n("tab") }, xn = "\\v", wn = '"\\\\v"', _n = function () { return new n("vertical-tab") }, Cn = "\\w", Mn = '"\\\\w"', On = function () { return new n("word") }, kn = "\\W", Sn = '"\\\\W"', Tn = function () { return new n("non-word") }, An = "\\c", Ln = '"\\\\c"', jn = "any character", zn = function (e) { return new m(e) }, En = "\\", Pn = '"\\\\"', Dn = /^[1-9]/, Hn = "[1-9]", Vn = function (e) { return new v(e) }, In = "\\0", Nn = '"\\\\0"', Rn = /^[0-7]/, Fn = "[0-7]", Yn = function (e) { return new p(e.join("")) }, $n = "\\x", Bn = '"\\\\x"', Wn = /^[0-9a-fA-F]/, qn = "[0-9a-fA-F]", Un = function (e) { return new d(e.join("")) }, Kn = "\\u", Gn = '"\\\\u"', Xn = function (e) { return new f(e.join("")) }, Jn = function () { return new n("null-character") }, Qn = 0, Zn = 0, er = 0, tr = { line: 1, column: 1, seenCR: !1 }, nr = 0, rr = [], ir = 0; if ("startRule" in xe) { if (!(xe.startRule in we)) throw new Error("Can't start parsing from rule \"" + xe.startRule + '".'); _e = we[xe.startRule] } if (n.offset = y, n.text = g, be = _e(), null !== be && Qn === e.length) return be; throw w(rr), Zn = Math.max(Qn, nr), new t(rr, Zn < e.length ? e.charAt(Zn) : null, Zn, b(Zn).line, b(Zn).column) } return e(t, Error), { SyntaxError: t, parse: g } }(), y = 1, b = {}; e.exports = g }, function (e, t, n) { var r = n(0), i = n(2), o = { extend: r.extend }, a = d(97, 122), s = d(65, 90), c = d(48, 57), l = d(32, 47) + d(58, 64) + d(91, 96) + d(123, 126), u = d(32, 126), h = " \f\n\r\t\v聽\u2028\u2029", f = { "\\w": a + s + c + "_", "\\W": l.replace("_", ""), "\\s": h, "\\S": function () { for (var e = u, t = 0; t < h.length; t++)e = e.replace(h[t], ""); return e }(), "\\d": c, "\\D": a + s + l }; function d(e, t) { for (var n = "", r = e; r <= t; r++)n += String.fromCharCode(r); return n } o.gen = function (e, t, n) { return n = n || { guid: 1 }, o[e.type] ? o[e.type](e, t, n) : o.token(e, t, n) }, o.extend({ token: function (e, t, n) { switch (e.type) { case "start": case "end": return ""; case "any-character": return i.character(); case "backspace": return ""; case "word-boundary": return ""; case "non-word-boundary": break; case "digit": return i.pick(c.split("")); case "non-digit": return i.pick((a + s + l).split("")); case "form-feed": break; case "line-feed": return e.body || e.text; case "carriage-return": break; case "white-space": return i.pick(h.split("")); case "non-white-space": return i.pick((a + s + c).split("")); case "tab": break; case "vertical-tab": break; case "word": return i.pick((a + s + c).split("")); case "non-word": return i.pick(l.replace("_", "").split("")); case "null-character": break }return e.body || e.text }, alternate: function (e, t, n) { return this.gen(i.boolean() ? e.left : e.right, t, n) }, match: function (e, t, n) { t = ""; for (var r = 0; r < e.body.length; r++)t += this.gen(e.body[r], t, n); return t }, "capture-group": function (e, t, n) { return t = this.gen(e.body, t, n), n[n.guid++] = t, t }, "non-capture-group": function (e, t, n) { return this.gen(e.body, t, n) }, "positive-lookahead": function (e, t, n) { return this.gen(e.body, t, n) }, "negative-lookahead": function (e, t, n) { return "" }, quantified: function (e, t, n) { t = ""; for (var r = this.quantifier(e.quantifier), i = 0; i < r; i++)t += this.gen(e.body, t, n); return t }, quantifier: function (e, t, n) { var r = Math.max(e.min, 0), o = isFinite(e.max) ? e.max : r + i.integer(3, 7); return i.integer(r, o) }, charset: function (e, t, n) { if (e.invert) return this["invert-charset"](e, t, n); var r = i.pick(e.body); return this.gen(r, t, n) }, "invert-charset": function (e, t, n) { for (var r, o = u, a = 0; a < e.body.length; a++)switch (r = e.body[a], r.type) { case "literal": o = o.replace(r.body, ""); break; case "range": for (var s = this.gen(r.start, t, n).charCodeAt(), c = this.gen(r.end, t, n).charCodeAt(), l = s; l <= c; l++)o = o.replace(String.fromCharCode(l), ""); default: var h = f[r.text]; if (h) for (var d = 0; d <= h.length; d++)o = o.replace(h[d], "") }return i.pick(o.split("")) }, range: function (e, t, n) { var r = this.gen(e.start, t, n).charCodeAt(), o = this.gen(e.end, t, n).charCodeAt(); return String.fromCharCode(i.integer(r, o)) }, literal: function (e, t, n) { return e.escaped ? e.body : e.text }, unicode: function (e, t, n) { return String.fromCharCode(parseInt(e.code, 16)) }, hex: function (e, t, n) { return String.fromCharCode(parseInt(e.code, 16)) }, octal: function (e, t, n) { return String.fromCharCode(parseInt(e.code, 8)) }, "back-reference": function (e, t, n) { return n[e.code] || "" }, CONTROL_CHARACTER_MAP: function () { for (var e = "@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \\ ] ^ _".split(" "), t = "\0        \b \t \n \v \f \r                  ".split(" "), n = {}, r = 0; r < e.length; r++)n[e[r]] = t[r]; return n }(), "control-character": function (e, t, n) { return this.CONTROL_CHARACTER_MAP[e.code] } }), e.exports = o }, function (e, t, n) { var r = n(1), i = n(0), o = n(3); function a(e, t, n) { n = n || []; var s = { name: "string" === typeof t ? t.replace(r.RE_KEY, "$1") : t, template: e, type: i.type(e), rule: o.parse(t) }; switch (s.path = n.slice(0), s.path.push(void 0 === t ? "ROOT" : s.name), s.type) { case "array": s.items = [], i.each(e, (function (e, t) { s.items.push(a(e, t, s.path)) })); break; case "object": s.properties = [], i.each(e, (function (e, t) { s.properties.push(a(e, t, s.path)) })); break }return s } e.exports = a }, function (e, t, n) { e.exports = n(26) }, function (e, t, n) { var r = n(1), i = n(0), o = n(8); function a(e, t) { for (var n = o(e), r = s.diff(n, t), i = 0; i < r.length; i++); return r } var s = { diff: function (e, t, n) { var r = []; return this.name(e, t, n, r) && this.type(e, t, n, r) && (this.value(e, t, n, r), this.properties(e, t, n, r), this.items(e, t, n, r)), r }, name: function (e, t, n, r) { var i = r.length; return c.equal("name", e.path, n + "", e.name + "", r), r.length === i }, type: function (e, t, n, o) { var a = o.length; switch (e.type) { case "string": if (e.template.match(r.RE_PLACEHOLDER)) return !0; break; case "array": if (e.rule.parameters) { if (void 0 !== e.rule.min && void 0 === e.rule.max && 1 === e.rule.count) return !0; if (e.rule.parameters[2]) return !0 } break; case "function": return !0 }return c.equal("type", e.path, i.type(t), e.type, o), o.length === a }, value: function (e, t, n, i) { var o, a = i.length, s = e.rule, l = e.type; if ("object" === l || "array" === l || "function" === l) return !0; if (!s.parameters) { switch (l) { case "regexp": return c.match("value", e.path, t, e.template, i), i.length === a; case "string": if (e.template.match(r.RE_PLACEHOLDER)) return i.length === a; break }return c.equal("value", e.path, t, e.template, i), i.length === a } switch (l) { case "number": var u = (t + "").split("."); u[0] = +u[0], void 0 !== s.min && void 0 !== s.max && (c.greaterThanOrEqualTo("value", e.path, u[0], Math.min(s.min, s.max), i), c.lessThanOrEqualTo("value", e.path, u[0], Math.max(s.min, s.max), i)), void 0 !== s.min && void 0 === s.max && c.equal("value", e.path, u[0], s.min, i, "[value] " + n), s.decimal && (void 0 !== s.dmin && void 0 !== s.dmax && (c.greaterThanOrEqualTo("value", e.path, u[1].length, s.dmin, i), c.lessThanOrEqualTo("value", e.path, u[1].length, s.dmax, i)), void 0 !== s.dmin && void 0 === s.dmax && c.equal("value", e.path, u[1].length, s.dmin, i)); break; case "boolean": break; case "string": o = t.match(new RegExp(e.template, "g")), o = o ? o.length : 0, void 0 !== s.min && void 0 !== s.max && (c.greaterThanOrEqualTo("repeat count", e.path, o, s.min, i), c.lessThanOrEqualTo("repeat count", e.path, o, s.max, i)), void 0 !== s.min && void 0 === s.max && c.equal("repeat count", e.path, o, s.min, i); break; case "regexp": o = t.match(new RegExp(e.template.source.replace(/^\^|\$$/g, ""), "g")), o = o ? o.length : 0, void 0 !== s.min && void 0 !== s.max && (c.greaterThanOrEqualTo("repeat count", e.path, o, s.min, i), c.lessThanOrEqualTo("repeat count", e.path, o, s.max, i)), void 0 !== s.min && void 0 === s.max && c.equal("repeat count", e.path, o, s.min, i); break }return i.length === a }, properties: function (e, t, n, r) { var o = r.length, a = e.rule, s = i.keys(t); if (e.properties) { if (e.rule.parameters ? (void 0 !== a.min && void 0 !== a.max && (c.greaterThanOrEqualTo("properties length", e.path, s.length, Math.min(a.min, a.max), r), c.lessThanOrEqualTo("properties length", e.path, s.length, Math.max(a.min, a.max), r)), void 0 !== a.min && void 0 === a.max && 1 !== a.count && c.equal("properties length", e.path, s.length, a.min, r)) : c.equal("properties length", e.path, s.length, e.properties.length, r), r.length !== o) return !1; for (var l = 0; l < s.length; l++)r.push.apply(r, this.diff(function () { var t; return i.each(e.properties, (function (e) { e.name === s[l] && (t = e) })), t || e.properties[l] }(), t[s[l]], s[l])); return r.length === o } }, items: function (e, t, n, r) { var i = r.length; if (e.items) { var o = e.rule; if (e.rule.parameters) { if (void 0 !== o.min && void 0 !== o.max && (c.greaterThanOrEqualTo("items", e.path, t.length, Math.min(o.min, o.max) * e.items.length, r, "[{utype}] array is too short: {path} must have at least {expected} elements but instance has {actual} elements"), c.lessThanOrEqualTo("items", e.path, t.length, Math.max(o.min, o.max) * e.items.length, r, "[{utype}] array is too long: {path} must have at most {expected} elements but instance has {actual} elements")), void 0 !== o.min && void 0 === o.max) { if (1 === o.count) return r.length === i; c.equal("items length", e.path, t.length, o.min * e.items.length, r) } if (o.parameters[2]) return r.length === i } else c.equal("items length", e.path, t.length, e.items.length, r); if (r.length !== i) return !1; for (var a = 0; a < t.length; a++)r.push.apply(r, this.diff(e.items[a % e.items.length], t[a], a % e.items.length)); return r.length === i } } }, c = { message: function (e) { return (e.message || "[{utype}] Expect {path}'{ltype} {action} {expected}, but is {actual}").replace("{utype}", e.type.toUpperCase()).replace("{ltype}", e.type.toLowerCase()).replace("{path}", i.isArray(e.path) && e.path.join(".") || e.path).replace("{action}", e.action).replace("{expected}", e.expected).replace("{actual}", e.actual) }, equal: function (e, t, n, r, i, o) { if (n === r) return !0; switch (e) { case "type": if ("regexp" === r && "string" === n) return !0; break }var a = { path: t, type: e, actual: n, expected: r, action: "is equal to", message: o }; return a.message = c.message(a), i.push(a), !1 }, match: function (e, t, n, r, i, o) { if (r.test(n)) return !0; var a = { path: t, type: e, actual: n, expected: r, action: "matches", message: o }; return a.message = c.message(a), i.push(a), !1 }, notEqual: function (e, t, n, r, i, o) { if (n !== r) return !0; var a = { path: t, type: e, actual: n, expected: r, action: "is not equal to", message: o }; return a.message = c.message(a), i.push(a), !1 }, greaterThan: function (e, t, n, r, i, o) { if (n > r) return !0; var a = { path: t, type: e, actual: n, expected: r, action: "is greater than", message: o }; return a.message = c.message(a), i.push(a), !1 }, lessThan: function (e, t, n, r, i, o) { if (n < r) return !0; var a = { path: t, type: e, actual: n, expected: r, action: "is less to", message: o }; return a.message = c.message(a), i.push(a), !1 }, greaterThanOrEqualTo: function (e, t, n, r, i, o) { if (n >= r) return !0; var a = { path: t, type: e, actual: n, expected: r, action: "is greater than or equal to", message: o }; return a.message = c.message(a), i.push(a), !1 }, lessThanOrEqualTo: function (e, t, n, r, i, o) { if (n <= r) return !0; var a = { path: t, type: e, actual: n, expected: r, action: "is less than or equal to", message: o }; return a.message = c.message(a), i.push(a), !1 } }; a.Diff = s, a.Assert = c, e.exports = a }, function (e, t, n) { e.exports = n(28) }, function (e, t, n) { var r = n(0); window._XMLHttpRequest = window.XMLHttpRequest, window._ActiveXObject = window.ActiveXObject; try { new window.Event("custom") } catch (d) { window.Event = function (e, t, n, r) { var i = document.createEvent("CustomEvent"); return i.initCustomEvent(e, t, n, r), i } } var i = { UNSENT: 0, OPENED: 1, HEADERS_RECEIVED: 2, LOADING: 3, DONE: 4 }, o = "readystatechange loadstart progress abort error load timeout loadend".split(" "), a = "timeout withCredentials".split(" "), s = "readyState responseURL status statusText responseType response responseText responseXML".split(" "), c = { 100: "Continue", 101: "Switching Protocols", 200: "OK", 201: "Created", 202: "Accepted", 203: "Non-Authoritative Information", 204: "No Content", 205: "Reset Content", 206: "Partial Content", 300: "Multiple Choice", 301: "Moved Permanently", 302: "Found", 303: "See Other", 304: "Not Modified", 305: "Use Proxy", 307: "Temporary Redirect", 400: "Bad Request", 401: "Unauthorized", 402: "Payment Required", 403: "Forbidden", 404: "Not Found", 405: "Method Not Allowed", 406: "Not Acceptable", 407: "Proxy Authentication Required", 408: "Request Timeout", 409: "Conflict", 410: "Gone", 411: "Length Required", 412: "Precondition Failed", 413: "Request Entity Too Large", 414: "Request-URI Too Long", 415: "Unsupported Media Type", 416: "Requested Range Not Satisfiable", 417: "Expectation Failed", 422: "Unprocessable Entity", 500: "Internal Server Error", 501: "Not Implemented", 502: "Bad Gateway", 503: "Service Unavailable", 504: "Gateway Timeout", 505: "HTTP Version Not Supported" }; function l() { this.custom = { events: {}, requestHeaders: {}, responseHeaders: {} } } function u() { var e = function () { var e = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, t = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, n = location.href, r = t.exec(n.toLowerCase()) || []; return e.test(r[1]) }(); return window.ActiveXObject ? !e && t() || n() : t(); function t() { try { return new window._XMLHttpRequest } catch (e) { } } function n() { try { return new window._ActiveXObject("Microsoft.XMLHTTP") } catch (e) { } } } function h(e) { for (var t in l.Mock._mocked) { var n = l.Mock._mocked[t]; if ((!n.rurl || i(n.rurl, e.url)) && (!n.rtype || i(n.rtype, e.type.toLowerCase()))) return n } function i(e, t) { return "string" === r.type(e) ? e === t : "regexp" === r.type(e) ? e.test(t) : void 0 } } function f(e, t) { if (r.isFunction(e.template)) { var n = e.template(t); return n._status && 0 !== n._status && (t.status = n._status), delete n._status, n } return l.Mock.mock(e.template) } l._settings = { timeout: "10-100" }, l.setup = function (e) { return r.extend(l._settings, e), l._settings }, r.extend(l, i), r.extend(l.prototype, i), l.prototype.mock = !0, l.prototype.match = !1, r.extend(l.prototype, { open: function (e, t, n, i, c) { var f = this; r.extend(this.custom, { method: e, url: t, async: "boolean" !== typeof n || n, username: i, password: c, options: { url: t, type: e } }), this.custom.timeout = function (e) { if ("number" === typeof e) return e; if ("string" === typeof e && !~e.indexOf("-")) return parseInt(e, 10); if ("string" === typeof e && ~e.indexOf("-")) { var t = e.split("-"), n = parseInt(t[0], 10), r = parseInt(t[1], 10); return Math.round(Math.random() * (r - n)) + n } }(l._settings.timeout); var d = h(this.custom.options); function p(e) { for (var t = 0; t < s.length; t++)try { f[s[t]] = v[s[t]] } catch (n) { } f.dispatchEvent(new Event(e.type)) } if (d) this.match = !0, this.custom.template = d, this.readyState = l.OPENED, this.dispatchEvent(new Event("readystatechange")); else { var v = u(); this.custom.xhr = v; for (var m = 0; m < o.length; m++)v.addEventListener(o[m], p); i ? v.open(e, t, n, i, c) : v.open(e, t, n); for (var g = 0; g < a.length; g++)try { v[a[g]] = f[a[g]] } catch (y) { } Object.defineProperty(f, "responseType", { get: function () { return v.responseType }, set: function (e) { return v.responseType = e } }) } }, setRequestHeader: function (e, t) { if (this.match) { var n = this.custom.requestHeaders; n[e] ? n[e] += "," + t : n[e] = t } else this.custom.xhr.setRequestHeader(e, t) }, timeout: 0, withCredentials: !1, upload: {}, send: function (e) { var t = this; function n() { t.readyState = l.HEADERS_RECEIVED, t.dispatchEvent(new Event("readystatechange")), t.readyState = l.LOADING, t.dispatchEvent(new Event("readystatechange")), t.response = t.responseText = JSON.stringify(f(t.custom.template, t.custom.options), null, 4), t.status = t.custom.options.status || 200, t.statusText = c[t.status], t.readyState = l.DONE, t.dispatchEvent(new Event("readystatechange")), t.dispatchEvent(new Event("load")), t.dispatchEvent(new Event("loadend")) } this.custom.options.body = e, this.match ? (this.setRequestHeader("X-Requested-With", "MockXMLHttpRequest"), this.dispatchEvent(new Event("loadstart")), this.custom.async ? setTimeout(n, this.custom.timeout) : n()) : this.custom.xhr.send(e) }, abort: function () { this.match ? (this.readyState = l.UNSENT, this.dispatchEvent(new Event("abort", !1, !1, this)), this.dispatchEvent(new Event("error", !1, !1, this))) : this.custom.xhr.abort() } }), r.extend(l.prototype, { responseURL: "", status: l.UNSENT, statusText: "", getResponseHeader: function (e) { return this.match ? this.custom.responseHeaders[e.toLowerCase()] : this.custom.xhr.getResponseHeader(e) }, getAllResponseHeaders: function () { if (!this.match) return this.custom.xhr.getAllResponseHeaders(); var e = this.custom.responseHeaders, t = ""; for (var n in e) e.hasOwnProperty(n) && (t += n + ": " + e[n] + "\r\n"); return t }, overrideMimeType: function () { }, responseType: "", response: null, responseText: "", responseXML: null }), r.extend(l.prototype, { addEventListener: function (e, t) { var n = this.custom.events; n[e] || (n[e] = []), n[e].push(t) }, removeEventListener: function (e, t) { for (var n = this.custom.events[e] || [], r = 0; r < n.length; r++)n[r] === t && n.splice(r--, 1) }, dispatchEvent: function (e) { for (var t = this.custom.events[e.type] || [], n = 0; n < t.length; n++)t[n].call(this, e); var r = "on" + e.type; this[r] && this[r](e) } }), e.exports = l }])
+        }))
+    }, "41b2": function (e, t, n) { "use strict"; t.__esModule = !0; var r = n("3f6b"), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } t.default = i.default || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e } }, "41c3": function (e, t, n) { var r = n("1a8c"), i = n("eac5"), o = n("ec8c"), a = Object.prototype, s = a.hasOwnProperty; function c(e) { if (!r(e)) return o(e); var t = i(e), n = []; for (var a in e) ("constructor" != a || !t && s.call(e, a)) && n.push(a); return n } e.exports = c }, "41f6": function (e, t, n) { }, 4245: function (e, t, n) { var r = n("1290"); function i(e, t) { var n = e.__data__; return r(t) ? n["string" == typeof t ? "string" : "hash"] : n.map } e.exports = i }, 42454: function (e, t, n) { var r = n("f909"), i = n("2ec1"), o = i((function (e, t, n) { r(e, t, n) })); e.exports = o }, 4284: function (e, t) { function n(e, t) { var n = -1, r = null == e ? 0 : e.length; while (++n < r) if (t(e[n], n, e)) return !0; return !1 } e.exports = n }, "428f": function (e, t, n) { var r = n("da84"); e.exports = r }, "42a2": function (e, t, n) { var r = n("b5a7"), i = n("79bc"), o = n("1cec"), a = n("c869"), s = n("39ff"), c = n("3729"), l = n("dc57"), u = "[object Map]", h = "[object Object]", f = "[object Promise]", d = "[object Set]", p = "[object WeakMap]", v = "[object DataView]", m = l(r), g = l(i), y = l(o), b = l(a), x = l(s), w = c; (r && w(new r(new ArrayBuffer(1))) != v || i && w(new i) != u || o && w(o.resolve()) != f || a && w(new a) != d || s && w(new s) != p) && (w = function (e) { var t = c(e), n = t == h ? e.constructor : void 0, r = n ? l(n) : ""; if (r) switch (r) { case m: return v; case g: return u; case y: return f; case b: return d; case x: return p }return t }), e.exports = w }, 4359: function (e, t) { function n(e, t) { var n = -1, r = e.length; t || (t = Array(r)); while (++n < r) t[n] = e[n]; return t } e.exports = n }, 4362: function (e, t, n) { t.nextTick = function (e) { var t = Array.prototype.slice.call(arguments); t.shift(), setTimeout((function () { e.apply(null, t) }), 0) }, t.platform = t.arch = t.execPath = t.title = "browser", t.pid = 1, t.browser = !0, t.env = {}, t.argv = [], t.binding = function (e) { throw new Error("No such module. (Possibly not yet loaded)") }, function () { var e, r = "/"; t.cwd = function () { return r }, t.chdir = function (t) { e || (e = n("df7c")), r = e.resolve(t, r) } }(), t.exit = t.kill = t.umask = t.dlopen = t.uptime = t.memoryUsage = t.uvCounters = function () { }, t.features = {} }, 4416: function (e, t) { function n(e) { var t = null == e ? 0 : e.length; return t ? e[t - 1] : void 0 } e.exports = n }, "448a": function (e, t, n) { var r = n("2236"), i = n("11b0"), o = n("6613"), a = n("0676"); function s(e) { return r(e) || i(e) || o(e) || a() } e.exports = s, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, "44ad": function (e, t, n) { var r = n("d039"), i = n("c6b6"), o = "".split; e.exports = r((function () { return !Object("z").propertyIsEnumerable(0) })) ? function (e) { return "String" == i(e) ? o.call(e, "") : Object(e) } : Object }, "44d2": function (e, t, n) { var r = n("b622"), i = n("7c73"), o = n("9bf2"), a = r("unscopables"), s = Array.prototype; void 0 == s[a] && o.f(s, a, { configurable: !0, value: i(null) }), e.exports = function (e) { s[a][e] = !0 } }, "44d29": function (e, t, n) { }, "44de": function (e, t, n) { var r = n("da84"); e.exports = function (e, t) { var n = r.console; n && n.error && (1 === arguments.length ? n.error(e) : n.error(e, t)) } }, "44e7": function (e, t, n) { var r = n("861d"), i = n("c6b6"), o = n("b622"), a = o("match"); e.exports = function (e) { var t; return r(e) && (void 0 !== (t = e[a]) ? !!t : "RegExp" == i(e)) } }, "452c": function (e, t, n) { "use strict"; var r = n("8e8e"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("5efb"), c = n("b92b"), l = n("83ab2"), u = n("c1b3"), h = n("4d91"), f = n("daa3"), d = n("1d19"), p = n("9cba"), v = n("0c63"), m = Object(c["a"])(), g = Object(d["a"])(), y = s["a"].Group, b = a()({}, l["a"], g, { type: h["a"].oneOf(["primary", "ghost", "dashed", "danger", "default"]).def("default"), size: h["a"].oneOf(["small", "large", "default"]).def("default"), htmlType: m.htmlType, href: h["a"].string, disabled: h["a"].bool, prefixCls: h["a"].string, placement: g.placement.def("bottomRight"), icon: h["a"].any, title: h["a"].string }); t["a"] = { name: "ADropdownButton", model: { prop: "visible", event: "visibleChange" }, props: b, provide: function () { return { savePopupRef: this.savePopupRef } }, inject: { configProvider: { default: function () { return p["a"] } } }, methods: { savePopupRef: function (e) { this.popupRef = e }, onClick: function (e) { this.$emit("click", e) }, onVisibleChange: function (e) { this.$emit("visibleChange", e) } }, render: function () { var e = arguments[0], t = this.$props, n = t.type, r = t.disabled, o = t.htmlType, c = t.prefixCls, l = t.trigger, h = t.align, d = t.visible, p = t.placement, m = t.getPopupContainer, g = t.href, b = t.title, x = i()(t, ["type", "disabled", "htmlType", "prefixCls", "trigger", "align", "visible", "placement", "getPopupContainer", "href", "title"]), w = Object(f["g"])(this, "icon") || e(v["a"], { attrs: { type: "ellipsis" } }), _ = this.configProvider.getPopupContainer, C = this.configProvider.getPrefixCls, M = C("dropdown-button", c), O = { props: { align: h, disabled: r, trigger: r ? [] : l, placement: p, getPopupContainer: m || _ }, on: { visibleChange: this.onVisibleChange } }; Object(f["s"])(this, "visible") && (O.props.visible = d); var k = { props: a()({}, x), class: M }; return e(y, k, [e(s["a"], { attrs: { type: n, disabled: r, htmlType: o, href: g, title: b }, on: { click: this.onClick } }, [this.$slots["default"]]), e(u["a"], O, [e("template", { slot: "overlay" }, [Object(f["g"])(this, "overlay")]), e(s["a"], { attrs: { type: n } }, [w])])]) } } }, 4656: function (e, t, n) { }, "466d": function (e, t, n) { "use strict"; var r = n("d784"), i = n("825a"), o = n("50c4"), a = n("577e"), s = n("1d80"), c = n("8aa5"), l = n("14c3"); r("match", (function (e, t, n) { return [function (t) { var n = s(this), r = void 0 == t ? void 0 : t[e]; return void 0 !== r ? r.call(t, n) : new RegExp(t)[e](a(n)) }, function (e) { var r = i(this), s = a(e), u = n(t, r, s); if (u.done) return u.value; if (!r.global) return l(r, s); var h = r.unicode; r.lastIndex = 0; var f, d = [], p = 0; while (null !== (f = l(r, s))) { var v = a(f[0]); d[p] = v, "" === v && (r.lastIndex = c(s, o(r.lastIndex), h)), p++ } return 0 === p ? null : d }] })) }, "46bb": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.grid = f; var i = r(n("278c")), o = r(n("9523")), a = n("18ad"), s = n("5557"), c = n("9d85"), l = n("becb"); function u(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function h(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? u(Object(n), !0).forEach((function (t) { (0, o["default"])(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : u(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } function f(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.grid; n = (0, l.deepMerge)((0, s.deepClone)(c.gridConfig, !0), n || {}), (0, a.doUpdate)({ chart: e, series: [n], key: "grid", getGraphConfig: d }) } function d(e, t) { var n = e.animationCurve, r = e.animationFrame, i = e.rLevel, o = p(e, t), a = m(e); return t.chart.gridArea = h({}, o), [{ name: "rect", index: i, animationCurve: n, animationFrame: r, shape: o, style: a }] } function p(e, t) { var n = (0, i["default"])(t.chart.render.area, 2), r = n[0], o = n[1], a = v(e.left, r), s = v(e.right, r), c = v(e.top, o), l = v(e.bottom, o), u = r - a - s, h = o - c - l; return { x: a, y: c, w: u, h: h } } function v(e, t) { return "number" === typeof e ? e : "string" !== typeof e ? 0 : t * parseInt(e) / 100 } function m(e) { var t = e.style; return t } }, "46cf": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.default = { install: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.name || "ref"; e.directive(n, { bind: function (t, n, r) { e.nextTick((function () { n.value(r.componentInstance || t, r.key) })), n.value(r.componentInstance || t, r.key) }, update: function (e, t, r, i) { if (i.data && i.data.directives) { var o = i.data.directives.find((function (e) { var t = e.name; return t === n })); if (o && o.value !== t.value) return o && o.value(null, i.key), void t.value(r.componentInstance || e, r.key) } r.componentInstance === i.componentInstance && r.elm === i.elm || t.value(r.componentInstance || e, r.key) }, unbind: function (e, t, n) { t.value(null, n.key) } }) } } }, "470c": function (e, t, n) { }, "47f5": function (e, t, n) { var r = n("2b03"), i = n("d9a8"), o = n("099a"); function a(e, t, n) { return t === t ? o(e, t, n) : r(e, i, n) } e.exports = a }, 4840: function (e, t, n) { var r = n("825a"), i = n("1c0b"), o = n("b622"), a = o("species"); e.exports = function (e, t) { var n, o = r(e).constructor; return void 0 === o || void 0 == (n = r(o)[a]) ? t : i(n) } }, 4849: function (e, t, n) { e.exports = { default: n("3787"), __esModule: !0 } }, "485a": function (e, t, n) { var r = n("861d"); e.exports = function (e, t) { var n, i; if ("string" === t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; if ("function" == typeof (n = e.valueOf) && !r(i = n.call(e))) return i; if ("string" !== t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; throw TypeError("Can't convert object to primitive value") } }, "48a0": function (e, t, n) { var r = n("242e"), i = n("950a"), o = i(r); e.exports = o }, 4930: function (e, t, n) { var r = n("2d00"), i = n("d039"); e.exports = !!Object.getOwnPropertySymbols && !i((function () { var e = Symbol(); return !String(e) || !(Object(e) instanceof Symbol) || !Symbol.sham && r && r < 41 })) }, "498a": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("58a8").trim, o = n("c8d2"); r({ target: "String", proto: !0, forced: o("trim") }, { trim: function () { return i(this) } }) }, "49bc": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.gridConfig = void 0; var r = { left: "10%", right: "10%", top: 60, bottom: 60, style: { fill: "rgba(0, 0, 0, 0)" }, rLevel: -30, animationCurve: "easeOutCubic", animationFrame: 30 }; t.gridConfig = r }, "49f4": function (e, t, n) { var r = n("6044"); function i() { this.__data__ = r ? r(null) : {}, this.size = 0 } e.exports = i }, "4a15": function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("4d91"), a = n("daa3"), s = { name: "MenuItemGroup", props: { renderMenuItem: o["a"].func, index: o["a"].number, className: o["a"].string, subMenuKey: o["a"].string, rootPrefixCls: o["a"].string, disabled: o["a"].bool.def(!0), title: o["a"].any }, isMenuItemGroup: !0, methods: { renderInnerMenuItem: function (e) { var t = this.$props, n = t.renderMenuItem, r = t.index, i = t.subMenuKey; return n(e, r, i) } }, render: function () { var e = arguments[0], t = i()({}, this.$props), n = t.rootPrefixCls, r = t.title, o = n + "-item-group-title", s = n + "-item-group-list", c = i()({}, Object(a["k"])(this)); return delete c.click, e("li", { on: c, class: n + "-item-group" }, [e("div", { class: o, attrs: { title: "string" === typeof r ? r : void 0 } }, [Object(a["g"])(this, "title")]), e("ul", { class: s }, [this.$slots["default"] && this.$slots["default"].map(this.renderInnerMenuItem)])]) } }; t["a"] = s }, "4a47": function (e, t, n) { "use strict"; var r = n("1a14"), i = n("10db"); e.exports = function (e, t, n) { t in e ? r.f(e, t, i(0, n)) : e[t] = n } }, "4a96": function (e, t, n) { "use strict"; n("b2a3"), n("5eb5") }, "4a9b": function (e, t, n) { var r = n("74e8"); r("Float64", (function (e) { return function (t, n, r) { return e(this, t, n, r) } })) }, "4ae1": function (e, t, n) { var r = n("23e7"), i = n("d066"), o = n("1c0b"), a = n("825a"), s = n("861d"), c = n("7c73"), l = n("0538"), u = n("d039"), h = i("Reflect", "construct"), f = u((function () { function e() { } return !(h((function () { }), [], e) instanceof e) })), d = !u((function () { h((function () { })) })), p = f || d; r({ target: "Reflect", stat: !0, forced: p, sham: p }, { construct: function (e, t) { o(e), a(t); var n = arguments.length < 3 ? e : o(arguments[2]); if (d && !f) return h(e, t, n); if (e == n) { switch (t.length) { case 0: return new e; case 1: return new e(t[0]); case 2: return new e(t[0], t[1]); case 3: return new e(t[0], t[1], t[2]); case 4: return new e(t[0], t[1], t[2], t[3]) }var r = [null]; return r.push.apply(r, t), new (l.apply(e, r)) } var i = n.prototype, u = c(s(i) ? i : Object.prototype), p = Function.apply.call(e, u, t); return s(p) ? p : u } }) }, "4b17": function (e, t, n) { var r = n("6428"); function i(e) { var t = r(e), n = t % 1; return t === t ? n ? t - n : t : 0 } e.exports = i }, "4b8b": function (e, t) { e.exports = function (e) { try { return !!e() } catch (t) { return !0 } } }, "4bb5": function (e, t, n) { var r = n("e2e4"), i = n("4416"), o = n("8296"), a = n("f4d6"); function s(e, t) { return t = r(t, e), e = o(e, t), null == e || delete e[a(i(t))] } e.exports = s }, "4bf8": function (e, t, n) { "use strict"; t["a"] = { name: "MenuDivider", props: { disabled: { type: Boolean, default: !0 }, rootPrefixCls: String }, render: function () { var e = arguments[0], t = this.$props.rootPrefixCls; return e("li", { class: t + "-item-divider" }) } } }, "4c53": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("857a"), o = n("af03"); r({ target: "String", proto: !0, forced: o("sub") }, { sub: function () { return i(this, "sub", "", "") } }) }, "4cef": function (e, t) { var n = /\s/; function r(e) { var t = e.length; while (t-- && n.test(e.charAt(t))); return t } e.exports = r }, "4d20": function (e, t, n) { var r = n("1917"), i = n("10db"), o = n("6ca1"), a = n("3397"), s = n("9c0e"), c = n("faf5"), l = Object.getOwnPropertyDescriptor; t.f = n("0bad") ? l : function (e, t) { if (e = o(e), t = a(t, !0), c) try { return l(e, t) } catch (n) { } if (s(e, t)) return i(!r.f.call(e, t), e[t]) } }, "4d26": function (e, t, n) {
+        var r, i;
+/*!
+  Copyright (c) 2018 Jed Watson.
+  Licensed under the MIT License (MIT), see
+  http://jedwatson.github.io/classnames
+*/(function () { "use strict"; var n = {}.hasOwnProperty; function o() { for (var e = [], t = 0; t < arguments.length; t++) { var r = arguments[t]; if (r) { var i = typeof r; if ("string" === i || "number" === i) e.push(r); else if (Array.isArray(r)) { if (r.length) { var a = o.apply(null, r); a && e.push(a) } } else if ("object" === i) if (r.toString === Object.prototype.toString) for (var s in r) n.call(r, s) && r[s] && e.push(s); else e.push(r.toString()) } } return e.join(" ") } e.exports ? (o.default = o, e.exports = o) : (r = [], i = function () { return o }.apply(t, r), void 0 === i || (e.exports = i)) })()
+    }, "4d63": function (e, t, n) { var r = n("83ab"), i = n("da84"), o = n("94ca"), a = n("7156"), s = n("9112"), c = n("9bf2").f, l = n("241c").f, u = n("44e7"), h = n("577e"), f = n("ad6d"), d = n("9f7f"), p = n("6eeb"), v = n("d039"), m = n("5135"), g = n("69f3").enforce, y = n("2626"), b = n("b622"), x = n("fce3"), w = n("107c"), _ = b("match"), C = i.RegExp, M = C.prototype, O = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/, k = /a/g, S = /a/g, T = new C(k) !== k, A = d.UNSUPPORTED_Y, L = r && (!T || A || x || w || v((function () { return S[_] = !1, C(k) != k || C(S) == S || "/a/i" != C(k, "i") }))), j = function (e) { for (var t, n = e.length, r = 0, i = "", o = !1; r <= n; r++)t = e.charAt(r), "\\" !== t ? o || "." !== t ? ("[" === t ? o = !0 : "]" === t && (o = !1), i += t) : i += "[\\s\\S]" : i += t + e.charAt(++r); return i }, z = function (e) { for (var t, n = e.length, r = 0, i = "", o = [], a = {}, s = !1, c = !1, l = 0, u = ""; r <= n; r++) { if (t = e.charAt(r), "\\" === t) t += e.charAt(++r); else if ("]" === t) s = !1; else if (!s) switch (!0) { case "[" === t: s = !0; break; case "(" === t: O.test(e.slice(r + 1)) && (r += 2, c = !0), i += t, l++; continue; case ">" === t && c: if ("" === u || m(a, u)) throw new SyntaxError("Invalid capture group name"); a[u] = !0, o.push([u, l]), c = !1, u = ""; continue }c ? u += t : i += t } return [i, o] }; if (o("RegExp", L)) { for (var E = function (e, t) { var n, r, i, o, c, l, d = this instanceof E, p = u(e), v = void 0 === t, m = [], y = e; if (!d && p && v && e.constructor === E) return e; if ((p || e instanceof E) && (e = e.source, v && (t = "flags" in y ? y.flags : f.call(y))), e = void 0 === e ? "" : h(e), t = void 0 === t ? "" : h(t), y = e, x && "dotAll" in k && (r = !!t && t.indexOf("s") > -1, r && (t = t.replace(/s/g, ""))), n = t, A && "sticky" in k && (i = !!t && t.indexOf("y") > -1, i && (t = t.replace(/y/g, ""))), w && (o = z(e), e = o[0], m = o[1]), c = a(C(e, t), d ? this : M, E), (r || i || m.length) && (l = g(c), r && (l.dotAll = !0, l.raw = E(j(e), n)), i && (l.sticky = !0), m.length && (l.groups = m)), e !== y) try { s(c, "source", "" === y ? "(?:)" : y) } catch (b) { } return c }, P = function (e) { e in E || c(E, e, { configurable: !0, get: function () { return C[e] }, set: function (t) { C[e] = t } }) }, D = l(C), H = 0; D.length > H;)P(D[H++]); M.constructor = E, E.prototype = M, p(i, "RegExp", E) } y("RegExp") }, "4d64": function (e, t, n) { var r = n("fc6a"), i = n("50c4"), o = n("23cb"), a = function (e) { return function (t, n, a) { var s, c = r(t), l = i(c.length), u = o(a, l); if (e && n != n) { while (l > u) if (s = c[u++], s != s) return !0 } else for (; l > u; u++)if ((e || u in c) && c[u] === n) return e || u || 0; return !e && -1 } }; e.exports = { includes: a(!0), indexOf: a(!1) } }, "4d88": function (e, t) { var n = {}.toString; e.exports = function (e) { return n.call(e).slice(8, -1) } }, "4d8c": function (e, t, n) { var r = n("5c69"); function i(e) { var t = null == e ? 0 : e.length; return t ? r(e, 1) : [] } e.exports = i }, "4d90": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("0ccb").start, o = n("9a0c"); r({ target: "String", proto: !0, forced: o }, { padStart: function (e) { return i(this, e, arguments.length > 1 ? arguments[1] : void 0) } }) }, "4d91": function (e, t, n) { "use strict"; var r = n("1098"), i = n.n(r), o = n("60ed"), a = n.n(o), s = Object.prototype, c = s.toString, l = s.hasOwnProperty, u = /^\s*function (\w+)/, h = function (e) { var t = null !== e && void 0 !== e ? e.type ? e.type : e : null, n = t && t.toString().match(u); return n && n[1] }, f = function (e) { if (null === e || void 0 === e) return null; var t = e.constructor.toString().match(u); return t && t[1] }, d = function () { }, p = Number.isInteger || function (e) { return "number" === typeof e && isFinite(e) && Math.floor(e) === e }, v = Array.isArray || function (e) { return "[object Array]" === c.call(e) }, m = function (e) { return "[object Function]" === c.call(e) }, g = function (e) { Object.defineProperty(e, "def", { value: function (e) { return void 0 === e && void 0 === this["default"] ? (this["default"] = void 0, this) : m(e) || x(this, e) ? (this["default"] = v(e) || a()(e) ? function () { return e } : e, this) : (w(this._vueTypes_name + ' - invalid default value: "' + e + '"', e), this) }, enumerable: !1, writable: !1 }) }, y = function (e) { Object.defineProperty(e, "isRequired", { get: function () { return this.required = !0, this }, enumerable: !1 }) }, b = function (e, t) { return Object.defineProperty(t, "_vueTypes_name", { enumerable: !1, writable: !1, value: e }), y(t), g(t), m(t.validator) && (t.validator = t.validator.bind(t)), t }, x = function e(t, n) { var r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], i = t, o = !0, s = void 0; a()(t) || (i = { type: t }); var c = i._vueTypes_name ? i._vueTypes_name + " - " : ""; return l.call(i, "type") && null !== i.type && (v(i.type) ? (o = i.type.some((function (t) { return e(t, n, !0) })), s = i.type.map((function (e) { return h(e) })).join(" or ")) : (s = h(i), o = "Array" === s ? v(n) : "Object" === s ? a()(n) : "String" === s || "Number" === s || "Boolean" === s || "Function" === s ? f(n) === s : n instanceof i.type)), o ? l.call(i, "validator") && m(i.validator) ? (o = i.validator(n), o || !1 !== r || w(c + "custom validation failed"), o) : o : (!1 === r && w(c + 'value "' + n + '" should be of type "' + s + '"'), !1) }, w = d, _ = { get any() { return b("any", { type: null }) }, get func() { return b("function", { type: Function }).def(M.func) }, get bool() { return b("boolean", { type: Boolean }).def(M.bool) }, get string() { return b("string", { type: String }).def(M.string) }, get number() { return b("number", { type: Number }).def(M.number) }, get array() { return b("array", { type: Array }).def(M.array) }, get object() { return b("object", { type: Object }).def(M.object) }, get integer() { return b("integer", { type: Number, validator: function (e) { return p(e) } }).def(M.integer) }, get symbol() { return b("symbol", { type: null, validator: function (e) { return "symbol" === ("undefined" === typeof e ? "undefined" : i()(e)) } }) }, custom: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "custom validation failed"; if ("function" !== typeof e) throw new TypeError("[VueTypes error]: You must provide a function as argument"); return b(e.name || "<<anonymous function>>", { validator: function () { var n = e.apply(void 0, arguments); return n || w(this._vueTypes_name + " - " + t), n } }) }, oneOf: function (e) { if (!v(e)) throw new TypeError("[VueTypes error]: You must provide an array as argument"); var t = 'oneOf - value should be one of "' + e.join('", "') + '"', n = e.reduce((function (e, t) { return null !== t && void 0 !== t && -1 === e.indexOf(t.constructor) && e.push(t.constructor), e }), []); return b("oneOf", { type: n.length > 0 ? n : null, validator: function (n) { var r = -1 !== e.indexOf(n); return r || w(t), r } }) }, instanceOf: function (e) { return b("instanceOf", { type: e }) }, oneOfType: function (e) { if (!v(e)) throw new TypeError("[VueTypes error]: You must provide an array as argument"); var t = !1, n = e.reduce((function (e, n) { if (a()(n)) { if ("oneOf" === n._vueTypes_name) return e.concat(n.type || []); if (n.type && !m(n.validator)) { if (v(n.type)) return e.concat(n.type); e.push(n.type) } else m(n.validator) && (t = !0); return e } return e.push(n), e }), []); if (!t) return b("oneOfType", { type: n }).def(void 0); var r = e.map((function (e) { return e && v(e.type) ? e.type.map(h) : h(e) })).reduce((function (e, t) { return e.concat(v(t) ? t : [t]) }), []).join('", "'); return this.custom((function (t) { var n = e.some((function (e) { return "oneOf" === e._vueTypes_name ? !e.type || x(e.type, t, !0) : x(e, t, !0) })); return n || w('oneOfType - value type should be one of "' + r + '"'), n })).def(void 0) }, arrayOf: function (e) { return b("arrayOf", { type: Array, validator: function (t) { var n = t.every((function (t) { return x(e, t) })); return n || w('arrayOf - value must be an array of "' + h(e) + '"'), n } }) }, objectOf: function (e) { return b("objectOf", { type: Object, validator: function (t) { var n = Object.keys(t).every((function (n) { return x(e, t[n]) })); return n || w('objectOf - value must be an object of "' + h(e) + '"'), n } }) }, shape: function (e) { var t = Object.keys(e), n = t.filter((function (t) { return e[t] && !0 === e[t].required })), r = b("shape", { type: Object, validator: function (r) { var i = this; if (!a()(r)) return !1; var o = Object.keys(r); return n.length > 0 && n.some((function (e) { return -1 === o.indexOf(e) })) ? (w('shape - at least one of required properties "' + n.join('", "') + '" is not present'), !1) : o.every((function (n) { if (-1 === t.indexOf(n)) return !0 === i._vueTypes_isLoose || (w('shape - object is missing "' + n + '" property'), !1); var o = e[n]; return x(o, r[n]) })) } }); return Object.defineProperty(r, "_vueTypes_isLoose", { enumerable: !1, writable: !0, value: !1 }), Object.defineProperty(r, "loose", { get: function () { return this._vueTypes_isLoose = !0, this }, enumerable: !1 }), r } }, C = function () { return { func: void 0, bool: void 0, string: void 0, number: void 0, array: void 0, object: void 0, integer: void 0 } }, M = C(); Object.defineProperty(_, "sensibleDefaults", { enumerable: !1, set: function (e) { !1 === e ? M = {} : !0 === e ? M = C() : a()(e) && (M = e) }, get: function () { return M } }); t["a"] = _ }, "4de4": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("b727").filter, o = n("1dde"), a = o("filter"); r({ target: "Array", proto: !0, forced: !a }, { filter: function (e) { return i(this, e, arguments.length > 1 ? arguments[1] : void 0) } }) }, "4df4": function (e, t, n) { "use strict"; var r = n("0366"), i = n("7b0b"), o = n("9bdd"), a = n("e95a"), s = n("50c4"), c = n("8418"), l = n("35a1"); e.exports = function (e) { var t, n, u, h, f, d, p = i(e), v = "function" == typeof this ? this : Array, m = arguments.length, g = m > 1 ? arguments[1] : void 0, y = void 0 !== g, b = l(p), x = 0; if (y && (g = r(g, m > 2 ? arguments[2] : void 0, 2)), void 0 == b || v == Array && a(b)) for (t = s(p.length), n = new v(t); t > x; x++)d = y ? g(p[x], x) : p[x], c(n, x, d); else for (h = b.call(p), f = h.next, n = new v; !(u = f.call(h)).done; x++)d = y ? o(h, g, [u.value, x], !0) : u.value, c(n, x, d); return n.length = x, n } }, "4df5": function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("8bbf"), a = n.n(o), s = n("4d91"), c = n("daa3"), l = n("c321"), u = n("db14"), h = n("c1df"), f = n("2cf8"), d = n("97e1"), p = n("6a21"), v = "internalMark"; function m(e) { e && e.locale ? Object(f["a"])(h).locale(e.locale) : Object(f["a"])(h).locale("en") } var g = { name: "ALocaleProvider", props: { locale: s["a"].object.def((function () { return {} })), _ANT_MARK__: s["a"].string }, data: function () { return Object(p["a"])(this._ANT_MARK__ === v, "LocaleProvider", "`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead"), { antLocale: i()({}, this.locale, { exist: !0 }) } }, provide: function () { return { localeData: this.$data } }, watch: { locale: function (e) { this.antLocale = i()({}, this.locale, { exist: !0 }), m(e), Object(d["a"])(e && e.Modal) } }, created: function () { var e = this.locale; m(e), Object(d["a"])(e && e.Modal) }, beforeDestroy: function () { Object(d["a"])() }, render: function () { return this.$slots["default"] ? this.$slots["default"][0] : null }, install: function (e) { e.use(u["a"]), e.component(g.name, g) } }, y = g, b = n("e5cd"); function x() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = {}; return e.forEach((function (e) { t[e] = function (t) { this._proxyVm._data[e] = t } })), t } var w = { name: "AConfigProvider", props: { getPopupContainer: s["a"].func, prefixCls: s["a"].string, renderEmpty: s["a"].func, csp: s["a"].object, autoInsertSpaceInButton: s["a"].bool, locale: s["a"].object, pageHeader: s["a"].object, transformCellText: s["a"].func }, provide: function () { var e = this; return this._proxyVm = new a.a({ data: function () { return i()({}, e.$props, { getPrefixCls: e.getPrefixCls, renderEmpty: e.renderEmptyComponent }) } }), { configProvider: this._proxyVm._data } }, watch: i()({}, x(["prefixCls", "csp", "autoInsertSpaceInButton", "locale", "pageHeader", "transformCellText"])), methods: { renderEmptyComponent: function (e, t) { var n = Object(c["g"])(this, "renderEmpty", {}, !1) || l["a"]; return n(e, t) }, getPrefixCls: function (e, t) { var n = this.$props.prefixCls, r = void 0 === n ? "ant" : n; return t || (e ? r + "-" + e : r) }, renderProvider: function (e) { var t = this.$createElement; return t(y, { attrs: { locale: this.locale || e, _ANT_MARK__: v } }, [this.$slots["default"] ? Object(c["c"])(this.$slots["default"])[0] : null]) } }, render: function () { var e = this, t = arguments[0]; return t(b["a"], { scopedSlots: { default: function (t, n, r) { return e.renderProvider(r) } } }) }, install: function (e) { e.use(u["a"]), e.component(w.name, w) } }; t["a"] = w }, "4e71": function (e, t, n) { n("e198")("observable") }, "4e82": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("1c0b"), o = n("7b0b"), a = n("50c4"), s = n("577e"), c = n("d039"), l = n("addb"), u = n("a640"), h = n("04d1"), f = n("d998"), d = n("2d00"), p = n("512ce"), v = [], m = v.sort, g = c((function () { v.sort(void 0) })), y = c((function () { v.sort(null) })), b = u("sort"), x = !c((function () { if (d) return d < 70; if (!(h && h > 3)) { if (f) return !0; if (p) return p < 603; var e, t, n, r, i = ""; for (e = 65; e < 76; e++) { switch (t = String.fromCharCode(e), e) { case 66: case 69: case 70: case 72: n = 3; break; case 68: case 71: n = 4; break; default: n = 2 }for (r = 0; r < 47; r++)v.push({ k: t + r, v: n }) } for (v.sort((function (e, t) { return t.v - e.v })), r = 0; r < v.length; r++)t = v[r].k.charAt(0), i.charAt(i.length - 1) !== t && (i += t); return "DGBEFHACIJK" !== i } })), w = g || !y || !b || !x, _ = function (e) { return function (t, n) { return void 0 === n ? -1 : void 0 === t ? 1 : void 0 !== e ? +e(t, n) || 0 : s(t) > s(n) ? 1 : -1 } }; r({ target: "Array", proto: !0, forced: w }, { sort: function (e) { void 0 !== e && i(e); var t = o(this); if (x) return void 0 === e ? m.call(t) : m.call(t, e); var n, r, s = [], c = a(t.length); for (r = 0; r < c; r++)r in t && s.push(t[r]); s = l(s, _(e)), n = s.length, r = 0; while (r < n) t[r] = s[r++]; while (r < c) delete t[r++]; return t } }) }, "4e86": function (e, t, n) { }, "4ea4": function (e, t) { function n(e) { return e && e.__esModule ? e : { default: e } } e.exports = n, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, "4eb1": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.radar = v; var i = r(n("9523")), o = r(n("7037")), a = r(n("278c")), s = r(n("448a")), c = n("18ad"), l = n("9d85"), u = n("5557"), h = n("53b8"), f = n("becb"); function d(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function p(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? d(Object(n), !0).forEach((function (t) { (0, i["default"])(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : d(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } function v(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.series; n || (n = []); var r = (0, f.initNeedSeries)(n, l.radarConfig, "radar"); r = m(r, e), r = g(r, e), r = y(r, e), (0, c.doUpdate)({ chart: e, series: r, key: "radar", getGraphConfig: b, getStartGraphConfig: x, beforeChange: C }), (0, c.doUpdate)({ chart: e, series: r, key: "radarPoint", getGraphConfig: M, getStartGraphConfig: O }), (0, c.doUpdate)({ chart: e, series: r, key: "radarLabel", getGraphConfig: T }) } function m(e, t) { var n = t.radarAxis; if (!n) return []; var r = n.indicator, i = n.axisLineAngles, o = n.radius, a = n.centerPos; return e.forEach((function (e) { var t = e.data; e.dataRadius = [], e.radarPosition = r.map((function (n, r) { var c = n.max, l = n.min, h = t[r]; "number" !== typeof c && (c = h), "number" !== typeof l && (l = 0), "number" !== typeof h && (h = l); var f = (h - l) / (c - l) * o; return e.dataRadius[r] = f, u.getCircleRadianPoint.apply(void 0, (0, s["default"])(a).concat([f, i[r]])) })) })), e } function g(e, t) { var n = t.radarAxis; if (!n) return []; var r = n.centerPos, i = n.axisLineAngles; return e.forEach((function (e) { var t = e.dataRadius, n = e.label, o = n.labelGap; e.labelPosition = t.map((function (e, t) { return u.getCircleRadianPoint.apply(void 0, (0, s["default"])(r).concat([e + o, i[t]])) })) })), e } function y(e, t) { var n = t.radarAxis; if (!n) return []; var r = (0, a["default"])(n.centerPos, 2), i = r[0], o = r[1]; return e.forEach((function (e) { var t = e.labelPosition, n = t.map((function (e) { var t = (0, a["default"])(e, 2), n = t[0], r = t[1], s = n > i ? "left" : "right", c = r > o ? "top" : "bottom"; return { textAlign: s, textBaseline: c } })); e.labelAlign = n })), e } function b(e) { var t = e.animationCurve, n = e.animationFrame, r = e.rLevel; return [{ name: "polyline", index: r, animationCurve: t, animationFrame: n, shape: w(e), style: _(e) }] } function x(e, t) { var n = t.chart.radarAxis.centerPos, r = b(e)[0], i = r.shape.points.length, o = new Array(i).fill(0).map((function (e) { return (0, s["default"])(n) })); return r.shape.points = o, [r] } function w(e) { var t = e.radarPosition; return { points: t, close: !0 } } function _(e) { var t = e.radarStyle, n = e.color, r = (0, h.getRgbaValue)(n); r[3] = .5; var i = { stroke: n, fill: (0, h.getColorFromRgbValue)(r) }; return (0, f.deepMerge)(i, t) } function C(e, t) { var n = t.shape, r = e.shape.points, i = r.length, o = n.points.length; if (o > i) { var a = r.slice(-1)[0], c = new Array(o - i).fill(0).map((function (e) { return (0, s["default"])(a) })); r.push.apply(r, (0, s["default"])(c)) } else o < i && r.splice(o) } function M(e) { var t = e.radarPosition, n = e.animationCurve, r = e.animationFrame, i = e.rLevel; return t.map((function (t, o) { return { name: "circle", index: i, animationCurve: n, animationFrame: r, visible: e.point.show, shape: k(e, o), style: S(e, o) } })) } function O(e) { var t = M(e); return t.forEach((function (e) { return e.shape.r = .01 })), t } function k(e, t) { var n = e.radarPosition, r = e.point, i = r.radius, o = n[t]; return { rx: o[0], ry: o[1], r: i } } function S(e, t) { var n = e.point, r = e.color, i = n.style; return (0, f.deepMerge)({ stroke: r }, i) } function T(e) { var t = e.labelPosition, n = e.animationCurve, r = e.animationFrame, i = e.rLevel; return t.map((function (t, o) { return { name: "text", index: i, visible: e.label.show, animationCurve: n, animationFrame: r, shape: A(e, o), style: j(e, o) } })) } function A(e, t) { var n = e.labelPosition, r = e.label, i = e.data, a = r.offset, s = r.formatter, c = L(n[t], a), l = i[t] ? i[t].toString() : "0", u = (0, o["default"])(s); return "string" === u && (l = s.replace("{value}", l)), "function" === u && (l = s(l)), { content: l, position: c } } function L(e, t) { var n = (0, a["default"])(e, 2), r = n[0], i = n[1], o = (0, a["default"])(t, 2), s = o[0], c = o[1]; return [r + s, i + c] } function j(e, t) { var n = e.label, r = e.color, i = e.labelAlign, o = n.style, a = p({ fill: r }, i[t]); return (0, f.deepMerge)(a, o) } }, "4eb5": function (e, t, n) { var r = n("6981"), i = { autoSetContainer: !1 }, o = { install: function (e) { e.prototype.$clipboardConfig = i, e.prototype.$copyText = function (e, t) { return new Promise((function (n, i) { var o = document.createElement("button"), a = new r(o, { text: function () { return e }, action: function () { return "copy" }, container: "object" === typeof t ? t : document.body }); a.on("success", (function (e) { a.destroy(), n(e) })), a.on("error", (function (e) { a.destroy(), i(e) })), o.click() })) }, e.directive("clipboard", { bind: function (e, t, n) { if ("success" === t.arg) e._v_clipboard_success = t.value; else if ("error" === t.arg) e._v_clipboard_error = t.value; else { var o = new r(e, { text: function () { return t.value }, action: function () { return "cut" === t.arg ? "cut" : "copy" }, container: i.autoSetContainer ? e : void 0 }); o.on("success", (function (t) { var n = e._v_clipboard_success; n && n(t) })), o.on("error", (function (t) { var n = e._v_clipboard_error; n && n(t) })), e._v_clipboard = o } }, update: function (e, t) { "success" === t.arg ? e._v_clipboard_success = t.value : "error" === t.arg ? e._v_clipboard_error = t.value : (e._v_clipboard.text = function () { return t.value }, e._v_clipboard.action = function () { return "cut" === t.arg ? "cut" : "copy" }) }, unbind: function (e, t) { "success" === t.arg ? delete e._v_clipboard_success : "error" === t.arg ? delete e._v_clipboard_error : (e._v_clipboard.destroy(), delete e._v_clipboard) } }) }, config: i }; e.exports = o }, "4ebc": function (e, t, n) { var r = n("4d88"); e.exports = Array.isArray || function (e) { return "Array" == r(e) } }, "4ec9": function (e, t, n) { "use strict"; var r = n("6d61"), i = n("6566"); e.exports = r("Map", (function (e) { return function () { return e(this, arguments.length ? arguments[0] : void 0) } }), i) }, "4f50": function (e, t, n) { var r = n("b760"), i = n("e5383"), o = n("c8fe"), a = n("4359"), s = n("fa21"), c = n("d370"), l = n("6747"), u = n("dcbe"), h = n("0d24"), f = n("9520"), d = n("1a8c"), p = n("60ed"), v = n("73ac"), m = n("8adb"), g = n("8de2"); function y(e, t, n, y, b, x, w) { var _ = m(e, n), C = m(t, n), M = w.get(C); if (M) r(e, n, M); else { var O = x ? x(_, C, n + "", e, t, w) : void 0, k = void 0 === O; if (k) { var S = l(C), T = !S && h(C), A = !S && !T && v(C); O = C, S || T || A ? l(_) ? O = _ : u(_) ? O = a(_) : T ? (k = !1, O = i(C, !0)) : A ? (k = !1, O = o(C, !0)) : O = [] : p(C) || c(C) ? (O = _, c(_) ? O = g(_) : d(_) && !f(_) || (O = s(C))) : k = !1 } k && (w.set(C, O), b(O, C, y, x, w), w["delete"](C)), r(e, n, O) } } e.exports = y }, "4fad": function (e, t, n) { var r = n("23e7"), i = n("6f53").entries; r({ target: "Object", stat: !0 }, { entries: function (e) { return i(e) } }) }, 5091: function (e, t, n) { "use strict"; n.d(t, "b", (function () { return E })), n.d(t, "a", (function () { return P })); var r = n("8e8e"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("4d91"), c = n("9839"), l = n("daa3"), u = { props: a()({}, c["b"]), Option: c["c"].Option, render: function () { var e = arguments[0], t = Object(l["l"])(this), n = { props: a()({}, t, { size: "small" }), on: Object(l["k"])(this) }; return e(c["c"], n, [Object(l["c"])(this.$slots["default"])]) } }, h = n("e5cd"), f = n("6042"), d = n.n(f), p = n("92fa"), v = n.n(p), m = n("9b57"), g = n.n(m), y = n("b488"), b = n("4d26"), x = n.n(b), w = { name: "Pager", props: { rootPrefixCls: s["a"].string, page: s["a"].number, active: s["a"].bool, last: s["a"].bool, locale: s["a"].object, showTitle: s["a"].bool, itemRender: { type: Function, default: function () { } } }, methods: { handleClick: function () { this.$emit("click", this.page) }, handleKeyPress: function (e) { this.$emit("keypress", e, this.handleClick, this.page) } }, render: function () { var e, t = arguments[0], n = this.$props, r = n.rootPrefixCls + "-item", i = x()(r, r + "-" + n.page, (e = {}, d()(e, r + "-active", n.active), d()(e, r + "-disabled", !n.page), e)); return t("li", { class: i, on: { click: this.handleClick, keypress: this.handleKeyPress }, attrs: { title: this.showTitle ? this.page : null, tabIndex: "0" } }, [this.itemRender(this.page, "page", t("a", [this.page]))]) } }, _ = { ZERO: 48, NINE: 57, NUMPAD_ZERO: 96, NUMPAD_NINE: 105, BACKSPACE: 8, DELETE: 46, ENTER: 13, ARROW_UP: 38, ARROW_DOWN: 40 }, C = { mixins: [y["a"]], props: { disabled: s["a"].bool, changeSize: s["a"].func, quickGo: s["a"].func, selectComponentClass: s["a"].any, current: s["a"].number, pageSizeOptions: s["a"].array.def(["10", "20", "30", "40"]), pageSize: s["a"].number, buildOptionText: s["a"].func, locale: s["a"].object, rootPrefixCls: s["a"].string, selectPrefixCls: s["a"].string, goButton: s["a"].any }, data: function () { return { goInputText: "" } }, methods: { getValidValue: function () { var e = this.goInputText, t = this.current; return !e || isNaN(e) ? t : Number(e) }, defaultBuildOptionText: function (e) { return e.value + " " + this.locale.items_per_page }, handleChange: function (e) { var t = e.target, n = t.value, r = t.composing; e.isComposing || r || this.goInputText === n || this.setState({ goInputText: n }) }, handleBlur: function (e) { var t = this.$props, n = t.goButton, r = t.quickGo, i = t.rootPrefixCls; n || e.relatedTarget && (e.relatedTarget.className.indexOf(i + "-prev") >= 0 || e.relatedTarget.className.indexOf(i + "-next") >= 0) || r(this.getValidValue()) }, go: function (e) { var t = this.goInputText; "" !== t && (e.keyCode !== _.ENTER && "click" !== e.type || (this.quickGo(this.getValidValue()), this.setState({ goInputText: "" }))) } }, render: function () { var e = this, t = arguments[0], n = this.rootPrefixCls, r = this.locale, i = this.changeSize, o = this.quickGo, a = this.goButton, s = this.selectComponentClass, c = this.defaultBuildOptionText, l = this.selectPrefixCls, u = this.pageSize, h = this.pageSizeOptions, f = this.goInputText, d = this.disabled, p = n + "-options", m = null, g = null, y = null; if (!i && !o) return null; if (i && s) { var b = this.buildOptionText || c, x = h.map((function (e, n) { return t(s.Option, { key: n, attrs: { value: e } }, [b({ value: e })]) })); m = t(s, { attrs: { disabled: d, prefixCls: l, showSearch: !1, optionLabelProp: "children", dropdownMatchSelectWidth: !1, value: (u || h[0]).toString(), getPopupContainer: function (e) { return e.parentNode } }, class: p + "-size-changer", on: { change: function (t) { return e.changeSize(Number(t)) } } }, [x]) } return o && (a && (y = "boolean" === typeof a ? t("button", { attrs: { type: "button", disabled: d }, on: { click: this.go, keyup: this.go } }, [r.jump_to_confirm]) : t("span", { on: { click: this.go, keyup: this.go } }, [a])), g = t("div", { class: p + "-quick-jumper" }, [r.jump_to, t("input", v()([{ attrs: { disabled: d, type: "text" }, domProps: { value: f }, on: { input: this.handleChange, keyup: this.go, blur: this.handleBlur } }, { directives: [{ name: "ant-input" }] }])), r.page, y])), t("li", { class: "" + p }, [m, g]) } }, M = { items_per_page: "鏉�/椤�", jump_to: "璺宠嚦", jump_to_confirm: "纭畾", page: "椤�", prev_page: "涓婁竴椤�", next_page: "涓嬩竴椤�", prev_5: "鍚戝墠 5 椤�", next_5: "鍚戝悗 5 椤�", prev_3: "鍚戝墠 3 椤�", next_3: "鍚戝悗 3 椤�" }; function O() { } function k(e) { return "number" === typeof e && isFinite(e) && Math.floor(e) === e } function S(e, t, n) { return n } function T(e, t, n) { var r = e; return "undefined" === typeof r && (r = t.statePageSize), Math.floor((n.total - 1) / r) + 1 } var A = { name: "Pagination", mixins: [y["a"]], model: { prop: "current", event: "change.current" }, props: { disabled: s["a"].bool, prefixCls: s["a"].string.def("rc-pagination"), selectPrefixCls: s["a"].string.def("rc-select"), current: s["a"].number, defaultCurrent: s["a"].number.def(1), total: s["a"].number.def(0), pageSize: s["a"].number, defaultPageSize: s["a"].number.def(10), hideOnSinglePage: s["a"].bool.def(!1), showSizeChanger: s["a"].bool.def(!1), showLessItems: s["a"].bool.def(!1), selectComponentClass: s["a"].any, showPrevNextJumpers: s["a"].bool.def(!0), showQuickJumper: s["a"].oneOfType([s["a"].bool, s["a"].object]).def(!1), showTitle: s["a"].bool.def(!0), pageSizeOptions: s["a"].arrayOf(s["a"].string), buildOptionText: s["a"].func, showTotal: s["a"].func, simple: s["a"].bool, locale: s["a"].object.def(M), itemRender: s["a"].func.def(S), prevIcon: s["a"].any, nextIcon: s["a"].any, jumpPrevIcon: s["a"].any, jumpNextIcon: s["a"].any }, data: function () { var e = Object(l["l"])(this), t = this.onChange !== O, n = "current" in e; n && !t && console.warn("Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component."); var r = this.defaultCurrent; "current" in e && (r = this.current); var i = this.defaultPageSize; return "pageSize" in e && (i = this.pageSize), r = Math.min(r, T(i, void 0, e)), { stateCurrent: r, stateCurrentInputValue: r, statePageSize: i } }, watch: { current: function (e) { this.setState({ stateCurrent: e, stateCurrentInputValue: e }) }, pageSize: function (e) { var t = {}, n = this.stateCurrent, r = T(e, this.$data, this.$props); n = n > r ? r : n, Object(l["s"])(this, "current") || (t.stateCurrent = n, t.stateCurrentInputValue = n), t.statePageSize = e, this.setState(t) }, stateCurrent: function (e, t) { var n = this; this.$nextTick((function () { if (n.$refs.paginationNode) { var e = n.$refs.paginationNode.querySelector("." + n.prefixCls + "-item-" + t); e && document.activeElement === e && e.blur() } })) }, total: function () { var e = {}, t = T(this.pageSize, this.$data, this.$props); if (Object(l["s"])(this, "current")) { var n = Math.min(this.current, t); e.stateCurrent = n, e.stateCurrentInputValue = n } else { var r = this.stateCurrent; r = 0 === r && t > 0 ? 1 : Math.min(this.stateCurrent, t), e.stateCurrent = r } this.setState(e) } }, methods: { getJumpPrevPage: function () { return Math.max(1, this.stateCurrent - (this.showLessItems ? 3 : 5)) }, getJumpNextPage: function () { return Math.min(T(void 0, this.$data, this.$props), this.stateCurrent + (this.showLessItems ? 3 : 5)) }, getItemIcon: function (e) { var t = this.$createElement, n = this.$props.prefixCls, r = Object(l["g"])(this, e, this.$props) || t("a", { class: n + "-item-link" }); return r }, getValidValue: function (e) { var t = e.target.value, n = T(void 0, this.$data, this.$props), r = this.$data.stateCurrentInputValue, i = void 0; return i = "" === t ? t : isNaN(Number(t)) ? r : t >= n ? n : Number(t), i }, isValid: function (e) { return k(e) && e !== this.stateCurrent }, shouldDisplayQuickJumper: function () { var e = this.$props, t = e.showQuickJumper, n = e.pageSize, r = e.total; return !(r <= n) && t }, handleKeyDown: function (e) { e.keyCode !== _.ARROW_UP && e.keyCode !== _.ARROW_DOWN || e.preventDefault() }, handleKeyUp: function (e) { if (!e.isComposing && !e.target.composing) { var t = this.getValidValue(e), n = this.stateCurrentInputValue; t !== n && this.setState({ stateCurrentInputValue: t }), e.keyCode === _.ENTER ? this.handleChange(t) : e.keyCode === _.ARROW_UP ? this.handleChange(t - 1) : e.keyCode === _.ARROW_DOWN && this.handleChange(t + 1) } }, changePageSize: function (e) { var t = this.stateCurrent, n = t, r = T(e, this.$data, this.$props); t = t > r ? r : t, 0 === r && (t = this.stateCurrent), "number" === typeof e && (Object(l["s"])(this, "pageSize") || this.setState({ statePageSize: e }), Object(l["s"])(this, "current") || this.setState({ stateCurrent: t, stateCurrentInputValue: t })), this.$emit("update:pageSize", e), this.$emit("showSizeChange", t, e), t !== n && this.$emit("change.current", t, e) }, handleChange: function (e) { var t = this.$props.disabled, n = e; if (this.isValid(n) && !t) { var r = T(void 0, this.$data, this.$props); return n > r ? n = r : n < 1 && (n = 1), Object(l["s"])(this, "current") || this.setState({ stateCurrent: n, stateCurrentInputValue: n }), this.$emit("change.current", n, this.statePageSize), this.$emit("change", n, this.statePageSize), n } return this.stateCurrent }, prev: function () { this.hasPrev() && this.handleChange(this.stateCurrent - 1) }, next: function () { this.hasNext() && this.handleChange(this.stateCurrent + 1) }, jumpPrev: function () { this.handleChange(this.getJumpPrevPage()) }, jumpNext: function () { this.handleChange(this.getJumpNextPage()) }, hasPrev: function () { return this.stateCurrent > 1 }, hasNext: function () { return this.stateCurrent < T(void 0, this.$data, this.$props) }, runIfEnter: function (e, t) { if ("Enter" === e.key || 13 === e.charCode) { for (var n = arguments.length, r = Array(n > 2 ? n - 2 : 0), i = 2; i < n; i++)r[i - 2] = arguments[i]; t.apply(void 0, g()(r)) } }, runIfEnterPrev: function (e) { this.runIfEnter(e, this.prev) }, runIfEnterNext: function (e) { this.runIfEnter(e, this.next) }, runIfEnterJumpPrev: function (e) { this.runIfEnter(e, this.jumpPrev) }, runIfEnterJumpNext: function (e) { this.runIfEnter(e, this.jumpNext) }, handleGoTO: function (e) { e.keyCode !== _.ENTER && "click" !== e.type || this.handleChange(this.stateCurrentInputValue) } }, render: function () { var e, t = arguments[0], n = this.$props, r = n.prefixCls, i = n.disabled; if (!0 === this.hideOnSinglePage && this.total <= this.statePageSize) return null; var o = this.$props, a = this.locale, s = T(void 0, this.$data, this.$props), c = [], l = null, u = null, h = null, f = null, p = null, m = this.showQuickJumper && this.showQuickJumper.goButton, g = this.showLessItems ? 1 : 2, y = this.stateCurrent, b = this.statePageSize, x = y - 1 > 0 ? y - 1 : 0, _ = y + 1 < s ? y + 1 : s; if (this.simple) { m && (p = "boolean" === typeof m ? t("button", { attrs: { type: "button" }, on: { click: this.handleGoTO, keyup: this.handleGoTO } }, [a.jump_to_confirm]) : t("span", { on: { click: this.handleGoTO, keyup: this.handleGoTO } }, [m]), p = t("li", { attrs: { title: this.showTitle ? "" + a.jump_to + this.stateCurrent + "/" + s : null }, class: r + "-simple-pager" }, [p])); var M = this.hasPrev(), O = this.hasNext(); return t("ul", { class: r + " " + r + "-simple" }, [t("li", { attrs: { title: this.showTitle ? a.prev_page : null, tabIndex: M ? 0 : null, "aria-disabled": !this.hasPrev() }, on: { click: this.prev, keypress: this.runIfEnterPrev }, class: (M ? "" : r + "-disabled") + " " + r + "-prev" }, [this.itemRender(x, "prev", this.getItemIcon("prevIcon"))]), t("li", { attrs: { title: this.showTitle ? y + "/" + s : null }, class: r + "-simple-pager" }, [t("input", v()([{ attrs: { type: "text", size: "3" }, domProps: { value: this.stateCurrentInputValue }, on: { keydown: this.handleKeyDown, keyup: this.handleKeyUp, input: this.handleKeyUp } }, { directives: [{ name: "ant-input" }] }])), t("span", { class: r + "-slash" }, ["锛�"]), s]), t("li", { attrs: { title: this.showTitle ? a.next_page : null, tabIndex: this.hasNext ? 0 : null, "aria-disabled": !this.hasNext() }, on: { click: this.next, keypress: this.runIfEnterNext }, class: (O ? "" : r + "-disabled") + " " + r + "-next" }, [this.itemRender(_, "next", this.getItemIcon("nextIcon"))]), p]) } if (s <= 5 + 2 * g) { var k = { props: { locale: a, rootPrefixCls: r, showTitle: o.showTitle, itemRender: o.itemRender }, on: { click: this.handleChange, keypress: this.runIfEnter } }; s || c.push(t(w, v()([k, { key: "noPager", attrs: { page: s }, class: r + "-disabled" }]))); for (var S = 1; S <= s; S++) { var A = y === S; c.push(t(w, v()([k, { key: S, attrs: { page: S, active: A } }]))) } } else { var L = this.showLessItems ? a.prev_3 : a.prev_5, j = this.showLessItems ? a.next_3 : a.next_5; if (this.showPrevNextJumpers) { var z = r + "-jump-prev"; o.jumpPrevIcon && (z += " " + r + "-jump-prev-custom-icon"), l = t("li", { attrs: { title: this.showTitle ? L : null, tabIndex: "0" }, key: "prev", on: { click: this.jumpPrev, keypress: this.runIfEnterJumpPrev }, class: z }, [this.itemRender(this.getJumpPrevPage(), "jump-prev", this.getItemIcon("jumpPrevIcon"))]); var E = r + "-jump-next"; o.jumpNextIcon && (E += " " + r + "-jump-next-custom-icon"), u = t("li", { attrs: { title: this.showTitle ? j : null, tabIndex: "0" }, key: "next", on: { click: this.jumpNext, keypress: this.runIfEnterJumpNext }, class: E }, [this.itemRender(this.getJumpNextPage(), "jump-next", this.getItemIcon("jumpNextIcon"))]) } f = t(w, { attrs: { locale: a, last: !0, rootPrefixCls: r, page: s, active: !1, showTitle: this.showTitle, itemRender: this.itemRender }, on: { click: this.handleChange, keypress: this.runIfEnter }, key: s }), h = t(w, { attrs: { locale: a, rootPrefixCls: r, page: 1, active: !1, showTitle: this.showTitle, itemRender: this.itemRender }, on: { click: this.handleChange, keypress: this.runIfEnter }, key: 1 }); var P = Math.max(1, y - g), D = Math.min(y + g, s); y - 1 <= g && (D = 1 + 2 * g), s - y <= g && (P = s - 2 * g); for (var H = P; H <= D; H++) { var V = y === H; c.push(t(w, { attrs: { locale: a, rootPrefixCls: r, page: H, active: V, showTitle: this.showTitle, itemRender: this.itemRender }, on: { click: this.handleChange, keypress: this.runIfEnter }, key: H })) } y - 1 >= 2 * g && 3 !== y && (c[0] = t(w, { attrs: { locale: a, rootPrefixCls: r, page: P, active: !1, showTitle: this.showTitle, itemRender: this.itemRender }, on: { click: this.handleChange, keypress: this.runIfEnter }, key: P, class: r + "-item-after-jump-prev" }), c.unshift(l)), s - y >= 2 * g && y !== s - 2 && (c[c.length - 1] = t(w, { attrs: { locale: a, rootPrefixCls: r, page: D, active: !1, showTitle: this.showTitle, itemRender: this.itemRender }, on: { click: this.handleChange, keypress: this.runIfEnter }, key: D, class: r + "-item-before-jump-next" }), c.push(u)), 1 !== P && c.unshift(h), D !== s && c.push(f) } var I = null; this.showTotal && (I = t("li", { class: r + "-total-text" }, [this.showTotal(this.total, [0 === this.total ? 0 : (y - 1) * b + 1, y * b > this.total ? this.total : y * b])])); var N = !this.hasPrev() || !s, R = !this.hasNext() || !s, F = this.buildOptionText || this.$scopedSlots.buildOptionText; return t("ul", { class: (e = {}, d()(e, "" + r, !0), d()(e, r + "-disabled", i), e), attrs: { unselectable: "unselectable" }, ref: "paginationNode" }, [I, t("li", { attrs: { title: this.showTitle ? a.prev_page : null, tabIndex: N ? null : 0, "aria-disabled": N }, on: { click: this.prev, keypress: this.runIfEnterPrev }, class: (N ? r + "-disabled" : "") + " " + r + "-prev" }, [this.itemRender(x, "prev", this.getItemIcon("prevIcon"))]), c, t("li", { attrs: { title: this.showTitle ? a.next_page : null, tabIndex: R ? null : 0, "aria-disabled": R }, on: { click: this.next, keypress: this.runIfEnterNext }, class: (R ? r + "-disabled" : "") + " " + r + "-next" }, [this.itemRender(_, "next", this.getItemIcon("nextIcon"))]), t(C, { attrs: { disabled: i, locale: a, rootPrefixCls: r, selectComponentClass: this.selectComponentClass, selectPrefixCls: this.selectPrefixCls, changeSize: this.showSizeChanger ? this.changePageSize : null, current: y, pageSize: b, pageSizeOptions: this.pageSizeOptions, buildOptionText: F || null, quickGo: this.shouldDisplayQuickJumper() ? this.handleChange : null, goButton: m } })]) } }, L = n("2deb"), j = n("0c63"), z = n("9cba"), E = function () { return { total: s["a"].number, defaultCurrent: s["a"].number, disabled: s["a"].bool, current: s["a"].number, defaultPageSize: s["a"].number, pageSize: s["a"].number, hideOnSinglePage: s["a"].bool, showSizeChanger: s["a"].bool, pageSizeOptions: s["a"].arrayOf(s["a"].oneOfType([s["a"].number, s["a"].string])), buildOptionText: s["a"].func, showSizeChange: s["a"].func, showQuickJumper: s["a"].oneOfType([s["a"].bool, s["a"].object]), showTotal: s["a"].any, size: s["a"].string, simple: s["a"].bool, locale: s["a"].object, prefixCls: s["a"].string, selectPrefixCls: s["a"].string, itemRender: s["a"].any, role: s["a"].string, showLessItems: s["a"].bool } }, P = function () { return a()({}, E(), { position: s["a"].oneOf(["top", "bottom", "both"]) }) }; t["c"] = { name: "APagination", model: { prop: "current", event: "change.current" }, props: a()({}, E()), inject: { configProvider: { default: function () { return z["a"] } } }, methods: { getIconsProps: function (e) { var t = this.$createElement, n = t("a", { class: e + "-item-link" }, [t(j["a"], { attrs: { type: "left" } })]), r = t("a", { class: e + "-item-link" }, [t(j["a"], { attrs: { type: "right" } })]), i = t("a", { class: e + "-item-link" }, [t("div", { class: e + "-item-container" }, [t(j["a"], { class: e + "-item-link-icon", attrs: { type: "double-left" } }), t("span", { class: e + "-item-ellipsis" }, ["鈥⑩�⑩��"])])]), o = t("a", { class: e + "-item-link" }, [t("div", { class: e + "-item-container" }, [t(j["a"], { class: e + "-item-link-icon", attrs: { type: "double-right" } }), t("span", { class: e + "-item-ellipsis" }, ["鈥⑩�⑩��"])])]); return { prevIcon: n, nextIcon: r, jumpPrevIcon: i, jumpNextIcon: o } }, renderPagination: function (e) { var t = this.$createElement, n = Object(l["l"])(this), r = n.prefixCls, o = n.selectPrefixCls, s = n.buildOptionText, h = n.size, f = n.locale, d = i()(n, ["prefixCls", "selectPrefixCls", "buildOptionText", "size", "locale"]), p = this.configProvider.getPrefixCls, v = p("pagination", r), m = p("select", o), g = "small" === h, y = { props: a()({ prefixCls: v, selectPrefixCls: m }, d, this.getIconsProps(v), { selectComponentClass: g ? u : c["c"], locale: a()({}, e, f), buildOptionText: s || this.$scopedSlots.buildOptionText }), class: { mini: g }, on: Object(l["k"])(this) }; return t(A, y) } }, render: function () { var e = arguments[0]; return e(h["a"], { attrs: { componentName: "Pagination", defaultLocale: L["a"] }, scopedSlots: { default: this.renderPagination } }) } } }, "50c4": function (e, t, n) { var r = n("a691"), i = Math.min; e.exports = function (e) { return e > 0 ? i(r(e), 9007199254740991) : 0 } }, "50c6": function (e, t, n) { var r = n("a0c4"), i = n("243f"), o = n("badf"), a = n("6747"); function s(e, t) { return function (n, s) { var c = a(n) ? r : i, l = t ? t() : {}; return c(n, e, o(s, 2), l) } } e.exports = s }, "50d8": function (e, t) { function n(e, t) { var n = -1, r = Array(e); while (++n < e) r[n] = t(n); return r } e.exports = n }, "511f": function (e, t, n) { n("0b99"), n("658f"), e.exports = n("fcd4").f("iterator") }, "512c": function (e, t, n) { var r = n("ef08"), i = n("5524"), o = n("9c0c"), a = n("051b"), s = n("9c0e"), c = "prototype", l = function (e, t, n) { var u, h, f, d = e & l.F, p = e & l.G, v = e & l.S, m = e & l.P, g = e & l.B, y = e & l.W, b = p ? i : i[t] || (i[t] = {}), x = b[c], w = p ? r : v ? r[t] : (r[t] || {})[c]; for (u in p && (n = t), n) h = !d && w && void 0 !== w[u], h && s(b, u) || (f = h ? w[u] : n[u], b[u] = p && "function" != typeof w[u] ? n[u] : g && h ? o(f, r) : y && w[u] == f ? function (e) { var t = function (t, n, r) { if (this instanceof e) { switch (arguments.length) { case 0: return new e; case 1: return new e(t); case 2: return new e(t, n) }return new e(t, n, r) } return e.apply(this, arguments) }; return t[c] = e[c], t }(f) : m && "function" == typeof f ? o(Function.call, f) : f, m && ((b.virtual || (b.virtual = {}))[u] = f, e & l.R && x && !x[u] && a(x, u, f))) }; l.F = 1, l.G = 2, l.S = 4, l.P = 8, l.B = 16, l.W = 32, l.U = 64, l.R = 128, e.exports = l }, "512ce": function (e, t, n) { var r = n("342f"), i = r.match(/AppleWebKit\/(\d+)\./); e.exports = !!i && +i[1] }, 5135: function (e, t, n) { var r = n("7b0b"), i = {}.hasOwnProperty; e.exports = Object.hasOwn || function (e, t) { return i.call(r(e), t) } }, 5136: function (e, t, n) { "use strict"; n("b2a3"), n("8f3c") }, "51eb": function (e, t, n) { "use strict"; var r = n("825a"), i = n("485a"); e.exports = function (e) { if (r(this), "string" === e || "default" === e) e = "string"; else if ("number" !== e) throw TypeError("Incorrect hint"); return i(this, e) } }, "51f5": function (e, t, n) { var r = n("2b03"), i = n("badf"), o = n("4b17"), a = Math.max; function s(e, t, n) { var s = null == e ? 0 : e.length; if (!s) return -1; var c = null == n ? 0 : o(n); return c < 0 && (c = a(s + c, 0)), r(e, i(t, 3), c) } e.exports = s }, "528d": function (e, t, n) { "use strict"; n.d(t, "b", (function () { return m })); var r = n("92fa"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("4d91"), u = n("18a7"), h = n("b488"), f = n("ec44"), d = n("e90a"), p = n("2b89"), v = n("daa3"), m = { attribute: l["a"].object, rootPrefixCls: l["a"].string, eventKey: l["a"].oneOfType([l["a"].string, l["a"].number]), active: l["a"].bool, selectedKeys: l["a"].array, disabled: l["a"].bool, title: l["a"].any, index: l["a"].number, inlineIndent: l["a"].number.def(24), level: l["a"].number.def(1), mode: l["a"].oneOf(["horizontal", "vertical", "vertical-left", "vertical-right", "inline"]).def("vertical"), parentMenu: l["a"].object, multiple: l["a"].bool, value: l["a"].any, isSelected: l["a"].bool, manualRef: l["a"].func.def(p["h"]), role: l["a"].any, subMenuKey: l["a"].string, itemIcon: l["a"].any }, g = { name: "MenuItem", props: m, mixins: [h["a"]], isMenuItem: !0, created: function () { this.prevActive = this.active, this.callRef() }, updated: function () { var e = this; this.$nextTick((function () { var t = e.$props, n = t.active, r = t.parentMenu, i = t.eventKey; e.prevActive || !n || r && r["scrolled-" + i] ? r && r["scrolled-" + i] && delete r["scrolled-" + i] : (Object(f["a"])(e.$el, e.parentMenu.$el, { onlyScrollIfNeeded: !0 }), r["scrolled-" + i] = !0), e.prevActive = n })), this.callRef() }, beforeDestroy: function () { var e = this.$props; this.__emit("destroy", e.eventKey) }, methods: { onKeyDown: function (e) { var t = e.keyCode; if (t === u["a"].ENTER) return this.onClick(e), !0 }, onMouseLeave: function (e) { var t = this.$props.eventKey; this.__emit("itemHover", { key: t, hover: !1 }), this.__emit("mouseleave", { key: t, domEvent: e }) }, onMouseEnter: function (e) { var t = this.eventKey; this.__emit("itemHover", { key: t, hover: !0 }), this.__emit("mouseenter", { key: t, domEvent: e }) }, onClick: function (e) { var t = this.$props, n = t.eventKey, r = t.multiple, i = t.isSelected, o = { key: n, keyPath: [n], item: this, domEvent: e }; this.__emit("click", o), r ? i ? this.__emit("deselect", o) : this.__emit("select", o) : i || this.__emit("select", o) }, getPrefixCls: function () { return this.$props.rootPrefixCls + "-item" }, getActiveClassName: function () { return this.getPrefixCls() + "-active" }, getSelectedClassName: function () { return this.getPrefixCls() + "-selected" }, getDisabledClassName: function () { return this.getPrefixCls() + "-disabled" }, callRef: function () { this.manualRef && this.manualRef(this) } }, render: function () { var e, t = arguments[0], n = c()({}, this.$props), r = (e = {}, a()(e, this.getPrefixCls(), !0), a()(e, this.getActiveClassName(), !n.disabled && n.active), a()(e, this.getSelectedClassName(), n.isSelected), a()(e, this.getDisabledClassName(), n.disabled), e), o = c()({}, n.attribute, { title: n.title, role: n.role || "menuitem", "aria-disabled": n.disabled }); "option" === n.role ? o = c()({}, o, { role: "option", "aria-selected": n.isSelected }) : null !== n.role && "none" !== n.role || (o.role = "none"); var s = { click: n.disabled ? p["h"] : this.onClick, mouseleave: n.disabled ? p["h"] : this.onMouseLeave, mouseenter: n.disabled ? p["h"] : this.onMouseEnter }, l = {}; "inline" === n.mode && (l.paddingLeft = n.inlineIndent * n.level + "px"); var u = c()({}, Object(v["k"])(this)); p["g"].props.forEach((function (e) { return delete n[e] })), p["g"].on.forEach((function (e) { return delete u[e] })); var h = { attrs: c()({}, n, o), on: c()({}, u, s) }; return t("li", i()([h, { style: l, class: r }]), [this.$slots["default"], Object(v["g"])(this, "itemIcon", n)]) } }, y = Object(d["a"])((function (e, t) { var n = e.activeKey, r = e.selectedKeys, i = t.eventKey, o = t.subMenuKey; return { active: n[o] === i, isSelected: -1 !== r.indexOf(i) } }))(g); t["a"] = y }, 5319: function (e, t, n) { "use strict"; var r = n("d784"), i = n("d039"), o = n("825a"), a = n("a691"), s = n("50c4"), c = n("577e"), l = n("1d80"), u = n("8aa5"), h = n("0cb2"), f = n("14c3"), d = n("b622"), p = d("replace"), v = Math.max, m = Math.min, g = function (e) { return void 0 === e ? e : String(e) }, y = function () { return "$0" === "a".replace(/./, "$0") }(), b = function () { return !!/./[p] && "" === /./[p]("a", "$0") }(), x = !i((function () { var e = /./; return e.exec = function () { var e = []; return e.groups = { a: "7" }, e }, "7" !== "".replace(e, "$<a>") })); r("replace", (function (e, t, n) { var r = b ? "$" : "$0"; return [function (e, n) { var r = l(this), i = void 0 == e ? void 0 : e[p]; return void 0 !== i ? i.call(e, r, n) : t.call(c(r), e, n) }, function (e, i) { var l = o(this), d = c(e); if ("string" === typeof i && -1 === i.indexOf(r) && -1 === i.indexOf("$<")) { var p = n(t, l, d, i); if (p.done) return p.value } var y = "function" === typeof i; y || (i = c(i)); var b = l.global; if (b) { var x = l.unicode; l.lastIndex = 0 } var w = []; while (1) { var _ = f(l, d); if (null === _) break; if (w.push(_), !b) break; var C = c(_[0]); "" === C && (l.lastIndex = u(d, s(l.lastIndex), x)) } for (var M = "", O = 0, k = 0; k < w.length; k++) { _ = w[k]; for (var S = c(_[0]), T = v(m(a(_.index), d.length), 0), A = [], L = 1; L < _.length; L++)A.push(g(_[L])); var j = _.groups; if (y) { var z = [S].concat(A, T, d); void 0 !== j && z.push(j); var E = c(i.apply(void 0, z)) } else E = h(S, d, T, A, j, i); T >= O && (M += d.slice(O, T) + E, O = T + S.length) } return M + d.slice(O) }] }), !x || !y || b) }, 5327: function (e, t, n) { var r = n("23e7"), i = n("1ec1"), o = Math.acosh, a = Math.log, s = Math.sqrt, c = Math.LN2, l = !o || 710 != Math.floor(o(Number.MAX_VALUE)) || o(1 / 0) != 1 / 0; r({ target: "Math", stat: !0, forced: l }, { acosh: function (e) { return (e = +e) < 1 ? NaN : e > 94906265.62425156 ? a(e) + c : i(e - 1 + s(e - 1) * s(e + 1)) } }) }, 5377: function (e, t, n) { var r = n("83ab"), i = n("9bf2"), o = n("ad6d"), a = n("d039"), s = r && a((function () { return "sy" !== Object.getOwnPropertyDescriptor(RegExp.prototype, "flags").get.call({ dotAll: !0, sticky: !0 }) })); s && i.f(RegExp.prototype, "flags", { configurable: !0, get: o }) }, "53b8": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.getRgbValue = h, t.getRgbaValue = p, t.getOpacity = v, t.toRgb = m, t.toHex = g, t.getColorFromRgbValue = y, t.darken = b, t.lighten = x, t.fade = w, t["default"] = void 0; var i = r(n("448a")), o = r(n("b7c2")), a = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/, s = /^(rgb|rgba|RGB|RGBA)/, c = /^(rgba|RGBA)/; function l(e) { var t = a.test(e), n = s.test(e); return t || n ? e : (e = u(e), e || (console.error("Color: Invalid color!"), !1)) } function u(e) { return e ? !!o["default"].has(e) && o["default"].get(e) : (console.error("getColorByKeywords: Missing parameters!"), !1) } function h(e) { if (!e) return console.error("getRgbValue: Missing parameters!"), !1; if (e = l(e), !e) return !1; var t = a.test(e), n = s.test(e), r = e.toLowerCase(); return t ? f(r) : n ? d(r) : void 0 } function f(e) { return e = e.replace("#", ""), 3 === e.length && (e = Array.from(e).map((function (e) { return e + e })).join("")), e = e.split(""), new Array(3).fill(0).map((function (t, n) { return parseInt("0x".concat(e[2 * n]).concat(e[2 * n + 1])) })) } function d(e) { return e.replace(/rgb\(|rgba\(|\)/g, "").split(",").slice(0, 3).map((function (e) { return parseInt(e) })) } function p(e) { if (!e) return console.error("getRgbaValue: Missing parameters!"), !1; var t = h(e); return !!t && (t.push(v(e)), t) } function v(e) { if (!e) return console.error("getOpacity: Missing parameters!"), !1; if (e = l(e), !e) return !1; var t = c.test(e); return t ? (e = e.toLowerCase(), Number(e.split(",").slice(-1)[0].replace(/[)|\s]/g, ""))) : 1 } function m(e, t) { if (!e) return console.error("toRgb: Missing parameters!"), !1; var n = h(e); if (!n) return !1; var r = "number" === typeof t; return r ? "rgba(" + n.join(",") + ",".concat(t, ")") : "rgb(" + n.join(",") + ")" } function g(e) { return e ? a.test(e) ? e : (e = h(e), !!e && "#" + e.map((function (e) { return Number(e).toString(16) })).map((function (e) { return "0" === e ? "00" : e })).join("")) : (console.error("toHex: Missing parameters!"), !1) } function y(e) { if (!e) return console.error("getColorFromRgbValue: Missing parameters!"), !1; var t = e.length; if (3 !== t && 4 !== t) return console.error("getColorFromRgbValue: Value is illegal!"), !1; var n = 3 === t ? "rgb(" : "rgba("; return n += e.join(",") + ")", n } function b(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; if (!e) return console.error("darken: Missing parameters!"), !1; var n = p(e); return !!n && (n = n.map((function (e, n) { return 3 === n ? e : e - Math.ceil(2.55 * t) })).map((function (e) { return e < 0 ? 0 : e })), y(n)) } function x(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; if (!e) return console.error("lighten: Missing parameters!"), !1; var n = p(e); return !!n && (n = n.map((function (e, n) { return 3 === n ? e : e + Math.ceil(2.55 * t) })).map((function (e) { return e > 255 ? 255 : e })), y(n)) } function w(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 100; if (!e) return console.error("fade: Missing parameters!"), !1; var n = h(e); if (!n) return !1; var r = [].concat((0, i["default"])(n), [t / 100]); return y(r) } var _ = { fade: w, toHex: g, toRgb: m, darken: b, lighten: x, getOpacity: v, getRgbValue: h, getRgbaValue: p, getColorFromRgbValue: y }; t["default"] = _ }, "53ca": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return r })); n("a4d3"), n("e01a"), n("d3b7"), n("d28b"), n("3ca3"), n("ddb0"); function r(e) { return r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r(e) } }, "54eb": function (e, t, n) { var r = n("8eeb"), i = n("32f4"); function o(e, t) { return r(e, i(e), t) } e.exports = o }, 5524: function (e, t) { var n = e.exports = { version: "2.6.12" }; "number" == typeof __e && (__e = n) }, 5530: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return o })); n("b64b"), n("a4d3"), n("4de4"), n("e439"), n("159b"), n("dbb4"); var r = n("ade3"); function i(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function o(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? i(Object(n), !0).forEach((function (t) { Object(r["a"])(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : i(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } }, 5557: function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.deepClone = p, t.eliminateBlur = v, t.checkPointIsInCircle = m, t.getTwoPointDistance = g, t.checkPointIsInPolygon = y, t.checkPointIsInSector = b, t.checkPointIsNearPolyline = w, t.checkPointIsInRect = _, t.getRotatePointPos = C, t.getScalePointPos = M, t.getTranslatePointPos = O, t.getDistanceBetweenPointAndLine = k, t.getCircleRadianPoint = S, t.getRegularPolygonPoints = T, t["default"] = void 0; var i = r(n("448a")), o = r(n("278c")), a = r(n("7037")), s = Math.abs, c = Math.sqrt, l = Math.sin, u = Math.cos, h = Math.max, f = Math.min, d = Math.PI; function p(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; if (!e) return e; var n = JSON.parse, r = JSON.stringify; if (!t) return n(r(e)); var i = e instanceof Array ? [] : {}; if (e && "object" === (0, a["default"])(e)) for (var o in e) e.hasOwnProperty(o) && (e[o] && "object" === (0, a["default"])(e[o]) ? i[o] = p(e[o], !0) : i[o] = e[o]); return i } function v(e) { return e.map((function (e) { var t = (0, o["default"])(e, 2), n = t[0], r = t[1]; return [parseInt(n) + .5, parseInt(r) + .5] })) } function m(e, t, n, r) { return g(e, [t, n]) <= r } function g(e, t) { var n = (0, o["default"])(e, 2), r = n[0], i = n[1], a = (0, o["default"])(t, 2), l = a[0], u = a[1], h = s(r - l), f = s(i - u); return c(h * h + f * f) } function y(e, t) { for (var n = 0, r = (0, o["default"])(e, 2), i = r[0], a = r[1], s = t.length, c = 1, l = t[0]; c <= s; c++) { var u = t[c % s]; if (i > f(l[0], u[0]) && i <= h(l[0], u[0]) && a <= h(l[1], u[1]) && l[0] !== u[0]) { var d = (i - l[0]) * (u[1] - l[1]) / (u[0] - l[0]) + l[1]; (l[1] === u[1] || a <= d) && n++ } l = u } return n % 2 === 1 } function b(e, t, n, r, i, a, s) { if (!e) return !1; if (g(e, [t, n]) > r) return !1; if (!s) { var c = p([a, i]), l = (0, o["default"])(c, 2); i = l[0], a = l[1] } var u = i > a; if (u) { var h = [a, i]; i = h[0], a = h[1] } var f = a - i; if (f >= 2 * d) return !0; var v = (0, o["default"])(e, 2), m = v[0], y = v[1], b = S(t, n, r, i), w = (0, o["default"])(b, 2), _ = w[0], C = w[1], M = S(t, n, r, a), O = (0, o["default"])(M, 2), k = O[0], T = O[1], A = [m - t, y - n], L = [_ - t, C - n], j = [k - t, T - n], z = f > d; if (z) { var E = p([j, L]), P = (0, o["default"])(E, 2); L = P[0], j = P[1] } var D = x(L, A) && !x(j, A); return z && (D = !D), u && (D = !D), D } function x(e, t) { var n = (0, o["default"])(e, 2), r = n[0], i = n[1], a = (0, o["default"])(t, 2), s = a[0], c = a[1]; return -i * s + r * c > 0 } function w(e, t, n) { var r = n / 2, a = t.map((function (e) { var t = (0, o["default"])(e, 2), n = t[0], i = t[1]; return [n, i - r] })), s = t.map((function (e) { var t = (0, o["default"])(e, 2), n = t[0], i = t[1]; return [n, i + r] })), c = [].concat((0, i["default"])(a), (0, i["default"])(s.reverse())); return y(e, c) } function _(e, t, n, r, i) { var a = (0, o["default"])(e, 2), s = a[0], c = a[1]; return !(s < t) && (!(c < n) && (!(s > t + r) && !(c > n + i))) } function C() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, t = arguments.length > 1 ? arguments[1] : void 0, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [0, 0]; if (!t) return !1; if (e % 360 === 0) return t; var r = (0, o["default"])(t, 2), i = r[0], a = r[1], s = (0, o["default"])(n, 2), c = s[0], h = s[1]; return e *= d / 180, [(i - c) * u(e) - (a - h) * l(e) + c, (i - c) * l(e) + (a - h) * u(e) + h] } function M() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [1, 1], t = arguments.length > 1 ? arguments[1] : void 0, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [0, 0]; if (!t) return !1; if (1 === e) return t; var r = (0, o["default"])(t, 2), i = r[0], a = r[1], s = (0, o["default"])(n, 2), c = s[0], l = s[1], u = (0, o["default"])(e, 2), h = u[0], f = u[1], d = i - c, p = a - l; return [d * h + c, p * f + l] } function O(e, t) { if (!e || !t) return !1; var n = (0, o["default"])(t, 2), r = n[0], i = n[1], a = (0, o["default"])(e, 2), s = a[0], c = a[1]; return [r + s, i + c] } function k(e, t, n) { if (!e || !t || !n) return !1; var r = (0, o["default"])(e, 2), i = r[0], a = r[1], l = (0, o["default"])(t, 2), u = l[0], h = l[1], f = (0, o["default"])(n, 2), d = f[0], p = f[1], v = p - h, m = u - d, g = h * (d - u) - u * (p - h), y = s(v * i + m * a + g), b = c(v * v + m * m); return y / b } function S(e, t, n, r) { return [e + u(r) * n, t + l(r) * n] } function T(e, t, n, r) { var i = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : -.5 * d, o = 2 * d / r, a = new Array(r).fill("").map((function (e, t) { return t * o + i })); return a.map((function (r) { return S(e, t, n, r) })) } var A = { deepClone: p, eliminateBlur: v, checkPointIsInCircle: m, checkPointIsInPolygon: y, checkPointIsInSector: b, checkPointIsNearPolyline: w, getTwoPointDistance: g, getRotatePointPos: C, getScalePointPos: M, getTranslatePointPos: O, getCircleRadianPoint: S, getRegularPolygonPoints: T, getDistanceBetweenPointAndLine: k }; t["default"] = A }, "55a3": function (e, t) { function n(e) { return this.__data__.has(e) } e.exports = n }, "55ec": function (e, t, n) { "use strict"; n("b2a3"), n("9083") }, "55f1": function (e, t, n) { "use strict"; var r = n("92fa"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("0464"), u = n("4bf8"), h = n("4a15"), f = n("da30"), d = n("a3a2"), p = n("daa3"), v = n("4d26"), m = n.n(v), g = { name: "ASubMenu", isSubMenu: !0, props: c()({}, d["a"].props), inject: { menuPropsContext: { default: function () { return {} } } }, methods: { onKeyDown: function (e) { this.$refs.subMenu.onKeyDown(e) } }, render: function () { var e = arguments[0], t = this.$slots, n = this.$scopedSlots, r = this.$props, i = r.rootPrefixCls, o = r.popupClassName, a = this.menuPropsContext.theme, s = { props: c()({}, this.$props, { popupClassName: m()(i + "-" + a, o) }), ref: "subMenu", on: Object(p["k"])(this), scopedSlots: n }, l = Object.keys(t); return e(d["a"], s, [l.length ? l.map((function (n) { return e("template", { slot: n }, [t[n]]) })) : null]) } }, y = n("4d91"), b = n("3593"), x = n("6a21"), w = n("528d"), _ = n("f933"); function C() { } var M = { name: "MenuItem", inheritAttrs: !1, props: w["b"], inject: { getInlineCollapsed: { default: function () { return C } }, layoutSiderContext: { default: function () { return {} } } }, isMenuItem: !0, methods: { onKeyDown: function (e) { this.$refs.menuItem.onKeyDown(e) } }, render: function () { var e = arguments[0], t = Object(p["l"])(this), n = t.level, r = t.title, o = t.rootPrefixCls, a = this.getInlineCollapsed, s = this.$slots, l = this.$attrs, u = a(), h = r; "undefined" === typeof r ? h = 1 === n ? s["default"] : "" : !1 === r && (h = ""); var f = { title: h }, d = this.layoutSiderContext.sCollapsed; d || u || (f.title = null, f.visible = !1); var v = { props: c()({}, t, { title: r }), attrs: l, on: Object(p["k"])(this) }, m = { props: c()({}, f, { placement: "right", overlayClassName: o + "-inline-collapsed-tooltip" }) }; return e(_["a"], m, [e(w["a"], i()([v, { ref: "menuItem" }]), [s["default"]])]) } }, O = n("b488"), k = n("22a4"), S = n("9cba"), T = n("db14"), A = y["a"].oneOf(["vertical", "vertical-left", "vertical-right", "horizontal", "inline"]), L = c()({}, k["a"], { theme: y["a"].oneOf(["light", "dark"]).def("light"), mode: A.def("vertical"), selectable: y["a"].bool, selectedKeys: y["a"].arrayOf(y["a"].oneOfType([y["a"].string, y["a"].number])), defaultSelectedKeys: y["a"].array, openKeys: y["a"].array, defaultOpenKeys: y["a"].array, openAnimation: y["a"].oneOfType([y["a"].string, y["a"].object]), openTransitionName: y["a"].string, prefixCls: y["a"].string, multiple: y["a"].bool, inlineIndent: y["a"].number.def(24), inlineCollapsed: y["a"].bool, isRootMenu: y["a"].bool.def(!0), focusable: y["a"].bool.def(!1) }), j = { name: "AMenu", props: L, Divider: c()({}, u["a"], { name: "AMenuDivider" }), Item: c()({}, M, { name: "AMenuItem" }), SubMenu: c()({}, g, { name: "ASubMenu" }), ItemGroup: c()({}, h["a"], { name: "AMenuItemGroup" }), provide: function () { return { getInlineCollapsed: this.getInlineCollapsed, menuPropsContext: this.$props } }, mixins: [O["a"]], inject: { layoutSiderContext: { default: function () { return {} } }, configProvider: { default: function () { return S["a"] } } }, model: { prop: "selectedKeys", event: "selectChange" }, updated: function () { this.propsUpdating = !1 }, watch: { mode: function (e, t) { "inline" === t && "inline" !== e && (this.switchingModeFromInline = !0) }, openKeys: function (e) { this.setState({ sOpenKeys: e }) }, inlineCollapsed: function (e) { this.collapsedChange(e) }, "layoutSiderContext.sCollapsed": function (e) { this.collapsedChange(e) } }, data: function () { var e = Object(p["l"])(this); Object(x["a"])(!("inlineCollapsed" in e && "inline" !== e.mode), "Menu", "`inlineCollapsed` should only be used when Menu's `mode` is inline."), this.switchingModeFromInline = !1, this.leaveAnimationExecutedWhenInlineCollapsed = !1, this.inlineOpenKeys = []; var t = void 0; return "openKeys" in e ? t = e.openKeys : "defaultOpenKeys" in e && (t = e.defaultOpenKeys), { sOpenKeys: t } }, methods: { collapsedChange: function (e) { this.propsUpdating || (this.propsUpdating = !0, Object(p["s"])(this, "openKeys") ? e && (this.switchingModeFromInline = !0) : e ? (this.switchingModeFromInline = !0, this.inlineOpenKeys = this.sOpenKeys, this.setState({ sOpenKeys: [] })) : (this.setState({ sOpenKeys: this.inlineOpenKeys }), this.inlineOpenKeys = [])) }, restoreModeVerticalFromInline: function () { this.switchingModeFromInline && (this.switchingModeFromInline = !1, this.$forceUpdate()) }, handleMouseEnter: function (e) { this.restoreModeVerticalFromInline(), this.$emit("mouseenter", e) }, handleTransitionEnd: function (e) { var t = "width" === e.propertyName && e.target === e.currentTarget, n = e.target.className, r = "[object SVGAnimatedString]" === Object.prototype.toString.call(n) ? n.animVal : n, i = "font-size" === e.propertyName && r.indexOf("anticon") >= 0; (t || i) && this.restoreModeVerticalFromInline() }, handleClick: function (e) { this.handleOpenChange([]), this.$emit("click", e) }, handleSelect: function (e) { this.$emit("select", e), this.$emit("selectChange", e.selectedKeys) }, handleDeselect: function (e) { this.$emit("deselect", e), this.$emit("selectChange", e.selectedKeys) }, handleOpenChange: function (e) { this.setOpenKeys(e), this.$emit("openChange", e), this.$emit("update:openKeys", e) }, setOpenKeys: function (e) { Object(p["s"])(this, "openKeys") || this.setState({ sOpenKeys: e }) }, getRealMenuMode: function () { var e = this.getInlineCollapsed(); if (this.switchingModeFromInline && e) return "inline"; var t = this.$props.mode; return e ? "vertical" : t }, getInlineCollapsed: function () { var e = this.$props.inlineCollapsed; return void 0 !== this.layoutSiderContext.sCollapsed ? this.layoutSiderContext.sCollapsed : e }, getMenuOpenAnimation: function (e) { var t = this.$props, n = t.openAnimation, r = t.openTransitionName, i = n || r; return void 0 === n && void 0 === r && ("horizontal" === e ? i = "slide-up" : "inline" === e ? i = { on: b["a"] } : this.switchingModeFromInline ? (i = "", this.switchingModeFromInline = !1) : i = "zoom-big"), i } }, render: function () { var e, t = this, n = arguments[0], r = this.layoutSiderContext, o = this.$slots, s = r.collapsedWidth, u = this.configProvider.getPopupContainer, h = Object(p["l"])(this), d = h.prefixCls, v = h.theme, m = h.getPopupContainer, g = this.configProvider.getPrefixCls, y = g("menu", d), b = this.getRealMenuMode(), x = this.getMenuOpenAnimation(b), w = (e = {}, a()(e, y + "-" + v, !0), a()(e, y + "-inline-collapsed", this.getInlineCollapsed()), e), _ = { props: c()({}, Object(l["a"])(h, ["inlineCollapsed"]), { getPopupContainer: m || u, openKeys: this.sOpenKeys, mode: b, prefixCls: y }), on: c()({}, Object(p["k"])(this), { select: this.handleSelect, deselect: this.handleDeselect, openChange: this.handleOpenChange, mouseenter: this.handleMouseEnter }), nativeOn: { transitionend: this.handleTransitionEnd } }; Object(p["s"])(this, "selectedKeys") || delete _.props.selectedKeys, "inline" !== b ? (_.on.click = this.handleClick, _.props.openTransitionName = x) : (_.on.click = function (e) { t.$emit("click", e) }, _.props.openAnimation = x); var C = this.getInlineCollapsed() && (0 === s || "0" === s || "0px" === s); return C && (_.props.openKeys = []), n(f["a"], i()([_, { class: w }]), [o["default"]]) }, install: function (e) { e.use(T["a"]), e.component(j.name, j), e.component(j.Item.name, j.Item), e.component(j.SubMenu.name, j.SubMenu), e.component(j.Divider.name, j.Divider), e.component(j.ItemGroup.name, j.ItemGroup) } }; t["a"] = j }, 5669: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = { placeholder: "璇烽�夋嫨鏃堕棿" }; t["default"] = r }, "568e": function (e, t, n) {
+        (function (t, r) { e.exports = r(n("8bbf")) })("undefined" !== typeof self && self, (function (e) {
+            return function (e) { var t = {}; function n(r) { if (t[r]) return t[r].exports; var i = t[r] = { i: r, l: !1, exports: {} }; return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports } return n.m = e, n.c = t, n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: r }) }, n.r = function (e) { "undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }) }, n.t = function (e, t) { if (1 & t && (e = n(e)), 8 & t) return e; if (4 & t && "object" === typeof e && e && e.__esModule) return e; var r = Object.create(null); if (n.r(r), Object.defineProperty(r, "default", { enumerable: !0, value: e }), 2 & t && "string" != typeof e) for (var i in e) n.d(r, i, function (t) { return e[t] }.bind(null, i)); return r }, n.n = function (e) { var t = e && e.__esModule ? function () { return e["default"] } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = "fb15") }({
+                "00fd": function (e, t, n) { var r = n("9e69"), i = Object.prototype, o = i.hasOwnProperty, a = i.toString, s = r ? r.toStringTag : void 0; function c(e) { var t = o.call(e, s), n = e[s]; try { e[s] = void 0; var r = !0 } catch (c) { } var i = a.call(e); return r && (t ? e[s] = n : delete e[s]), i } e.exports = c }, "010e": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("uz-latn", { months: "Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"), monthsShort: "Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"), weekdays: "Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"), weekdaysShort: "Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"), weekdaysMin: "Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "D MMMM YYYY, dddd HH:mm" }, calendar: { sameDay: "[Bugun soat] LT [da]", nextDay: "[Ertaga] LT [da]", nextWeek: "dddd [kuni soat] LT [da]", lastDay: "[Kecha soat] LT [da]", lastWeek: "[O'tgan] dddd [kuni soat] LT [da]", sameElse: "L" }, relativeTime: { future: "Yaqin %s ichida", past: "Bir necha %s oldin", s: "soniya", ss: "%d soniya", m: "bir daqiqa", mm: "%d daqiqa", h: "bir soat", hh: "%d soat", d: "bir kun", dd: "%d kun", M: "bir oy", MM: "%d oy", y: "bir yil", yy: "%d yil" }, week: { dow: 1, doy: 7 } }); return t
+                    }))
+                }, "014b": function (e, t, n) { "use strict"; var r = n("e53d"), i = n("07e3"), o = n("8e60"), a = n("63b6"), s = n("9138"), c = n("ebfd").KEY, l = n("294c"), u = n("dbdb"), h = n("45f2"), f = n("62a0"), d = n("5168"), p = n("ccb9"), v = n("6718"), m = n("47ee"), g = n("9003"), y = n("e4ae"), b = n("f772"), x = n("241e"), w = n("36c3"), _ = n("1bc3"), C = n("aebd"), M = n("a159"), O = n("0395"), k = n("bf0b"), S = n("9aa9"), T = n("d9f6"), A = n("c3a1"), L = k.f, j = T.f, z = O.f, E = r.Symbol, P = r.JSON, D = P && P.stringify, H = "prototype", V = d("_hidden"), I = d("toPrimitive"), N = {}.propertyIsEnumerable, R = u("symbol-registry"), F = u("symbols"), Y = u("op-symbols"), $ = Object[H], B = "function" == typeof E && !!S.f, W = r.QObject, q = !W || !W[H] || !W[H].findChild, U = o && l((function () { return 7 != M(j({}, "a", { get: function () { return j(this, "a", { value: 7 }).a } })).a })) ? function (e, t, n) { var r = L($, t); r && delete $[t], j(e, t, n), r && e !== $ && j($, t, r) } : j, K = function (e) { var t = F[e] = M(E[H]); return t._k = e, t }, G = B && "symbol" == typeof E.iterator ? function (e) { return "symbol" == typeof e } : function (e) { return e instanceof E }, X = function (e, t, n) { return e === $ && X(Y, t, n), y(e), t = _(t, !0), y(n), i(F, t) ? (n.enumerable ? (i(e, V) && e[V][t] && (e[V][t] = !1), n = M(n, { enumerable: C(0, !1) })) : (i(e, V) || j(e, V, C(1, {})), e[V][t] = !0), U(e, t, n)) : j(e, t, n) }, J = function (e, t) { y(e); var n, r = m(t = w(t)), i = 0, o = r.length; while (o > i) X(e, n = r[i++], t[n]); return e }, Q = function (e, t) { return void 0 === t ? M(e) : J(M(e), t) }, Z = function (e) { var t = N.call(this, e = _(e, !0)); return !(this === $ && i(F, e) && !i(Y, e)) && (!(t || !i(this, e) || !i(F, e) || i(this, V) && this[V][e]) || t) }, ee = function (e, t) { if (e = w(e), t = _(t, !0), e !== $ || !i(F, t) || i(Y, t)) { var n = L(e, t); return !n || !i(F, t) || i(e, V) && e[V][t] || (n.enumerable = !0), n } }, te = function (e) { var t, n = z(w(e)), r = [], o = 0; while (n.length > o) i(F, t = n[o++]) || t == V || t == c || r.push(t); return r }, ne = function (e) { var t, n = e === $, r = z(n ? Y : w(e)), o = [], a = 0; while (r.length > a) !i(F, t = r[a++]) || n && !i($, t) || o.push(F[t]); return o }; B || (E = function () { if (this instanceof E) throw TypeError("Symbol is not a constructor!"); var e = f(arguments.length > 0 ? arguments[0] : void 0), t = function (n) { this === $ && t.call(Y, n), i(this, V) && i(this[V], e) && (this[V][e] = !1), U(this, e, C(1, n)) }; return o && q && U($, e, { configurable: !0, set: t }), K(e) }, s(E[H], "toString", (function () { return this._k })), k.f = ee, T.f = X, n("6abf").f = O.f = te, n("355d").f = Z, S.f = ne, o && !n("b8e3") && s($, "propertyIsEnumerable", Z, !0), p.f = function (e) { return K(d(e)) }), a(a.G + a.W + a.F * !B, { Symbol: E }); for (var re = "hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","), ie = 0; re.length > ie;)d(re[ie++]); for (var oe = A(d.store), ae = 0; oe.length > ae;)v(oe[ae++]); a(a.S + a.F * !B, "Symbol", { for: function (e) { return i(R, e += "") ? R[e] : R[e] = E(e) }, keyFor: function (e) { if (!G(e)) throw TypeError(e + " is not a symbol!"); for (var t in R) if (R[t] === e) return t }, useSetter: function () { q = !0 }, useSimple: function () { q = !1 } }), a(a.S + a.F * !B, "Object", { create: Q, defineProperty: X, defineProperties: J, getOwnPropertyDescriptor: ee, getOwnPropertyNames: te, getOwnPropertySymbols: ne }); var se = l((function () { S.f(1) })); a(a.S + a.F * se, "Object", { getOwnPropertySymbols: function (e) { return S.f(x(e)) } }), P && a(a.S + a.F * (!B || l((function () { var e = E(); return "[null]" != D([e]) || "{}" != D({ a: e }) || "{}" != D(Object(e)) }))), "JSON", { stringify: function (e) { var t, n, r = [e], i = 1; while (arguments.length > i) r.push(arguments[i++]); if (n = t = r[1], (b(t) || void 0 !== e) && !G(e)) return g(t) || (t = function (e, t) { if ("function" == typeof n && (t = n.call(this, e, t)), !G(t)) return t }), r[1] = t, D.apply(P, r) } }), E[H][I] || n("35e8")(E[H], I, E[H].valueOf), h(E, "Symbol"), h(Math, "Math", !0), h(r.JSON, "JSON", !0) }, "01f9": function (e, t, n) { "use strict"; var r = n("2d00"), i = n("5ca1"), o = n("2aba"), a = n("32e9"), s = n("84f2"), c = n("41a0"), l = n("7f20"), u = n("38fd"), h = n("2b4c")("iterator"), f = !([].keys && "next" in [].keys()), d = "@@iterator", p = "keys", v = "values", m = function () { return this }; e.exports = function (e, t, n, g, y, b, x) { c(n, t, g); var w, _, C, M = function (e) { if (!f && e in T) return T[e]; switch (e) { case p: return function () { return new n(this, e) }; case v: return function () { return new n(this, e) } }return function () { return new n(this, e) } }, O = t + " Iterator", k = y == v, S = !1, T = e.prototype, A = T[h] || T[d] || y && T[y], L = A || M(y), j = y ? k ? M("entries") : L : void 0, z = "Array" == t && T.entries || A; if (z && (C = u(z.call(new e)), C !== Object.prototype && C.next && (l(C, O, !0), r || "function" == typeof C[h] || a(C, h, m))), k && A && A.name !== v && (S = !0, L = function () { return A.call(this) }), r && !x || !f && !S && T[h] || a(T, h, L), s[t] = L, s[O] = m, y) if (w = { values: k ? L : M(v), keys: b ? L : M(p), entries: j }, x) for (_ in w) _ in T || o(T, _, w[_]); else i(i.P + i.F * (f || S), t, w); return w } }, "020f": function (e, t, n) { var r = n("242e"), i = n("1304"); function o(e, t) { return e && r(e, i(t)) } e.exports = o }, "0242": function (e, t, n) { }, "02f4": function (e, t, n) { var r = n("4588"), i = n("be13"); e.exports = function (e) { return function (t, n) { var o, a, s = String(i(t)), c = r(n), l = s.length; return c < 0 || c >= l ? e ? "" : void 0 : (o = s.charCodeAt(c), o < 55296 || o > 56319 || c + 1 === l || (a = s.charCodeAt(c + 1)) < 56320 || a > 57343 ? e ? s.charAt(c) : o : e ? s.slice(c, c + 2) : a - 56320 + (o - 55296 << 10) + 65536) } } }, "02f8": function (e, t, n) { }, "02fb": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("ml", { months: "啻溹川嗟佮吹啻班纯_啻祮啻祶啻班祦啻掂窗啻縚啻淳嗟监礆嗟嵿礆嗟峗啻忇椽嗟嵿窗啻苦到_啻祰啻祶_啻溹祩嗟篲啻溹祩啻侧祱_啻撪礂啻膏祶啻编祶啻编祶_啻膏祮啻祶啻编祶啻编磦啻导_啻掄磿嗟嵿礋嗟嬥船嗟糭啻ㄠ吹啻傕船嗟糭啻∴纯啻膏磦啻导".split("_"), monthsShort: "啻溹川嗟�._啻祮啻祶啻班祦._啻淳嗟�._啻忇椽嗟嵿窗啻�._啻祰啻祶_啻溹祩嗟篲啻溹祩啻侧祱._啻撪礂._啻膏祮啻祶啻编祶啻�._啻掄磿嗟嵿礋嗟�._啻ㄠ吹啻�._啻∴纯啻膏磦.".split("_"), monthsParseExact: !0, weekdays: "啻炧淳啻幢啻距创嗟嵿礆_啻む纯啻權祶啻曕闯啻距创嗟嵿礆_啻氞祳啻掂祶啻掂淳啻脆祶啻歘啻祦啻о川啻距创嗟嵿礆_啻掂祶啻淳啻脆淳啻脆祶啻歘啻掂祮啻赤祶啻赤纯啻淳啻脆祶啻歘啻多川啻苦疮啻距创嗟嵿礆".split("_"), weekdaysShort: "啻炧淳啻导_啻む纯啻權祶啻曕稻_啻氞祳啻掂祶啻礯啻祦啻о祷_啻掂祶啻淳啻脆磦_啻掂祮啻赤祶啻赤纯_啻多川啻�".split("_"), weekdaysMin: "啻炧淳_啻む纯_啻氞祳_啻祦_啻掂祶啻淳_啻掂祮_啻�".split("_"), longDateFormat: { LT: "A h:mm -啻ㄠ祦", LTS: "A h:mm:ss -啻ㄠ祦", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm -啻ㄠ祦", LLLL: "dddd, D MMMM YYYY, A h:mm -啻ㄠ祦" }, calendar: { sameDay: "[啻囙川嗟嵿川嗟峕 LT", nextDay: "[啻ㄠ淳啻赤祮] LT", nextWeek: "dddd, LT", lastDay: "[啻囙川嗟嵿川啻侧祮] LT", lastWeek: "[啻曕创啻苦礊嗟嵿礊] dddd, LT", sameElse: "L" }, relativeTime: { future: "%s 啻曕创啻苦礊嗟嵿礊嗟�", past: "%s 啻祦嗟秽椽嗟�", s: "啻呧到啻� 啻ㄠ纯啻纯啻粪礄嗟嵿礄嗟�", ss: "%d 啻膏祮啻曕祶啻曕祷啻∴祶", m: "啻掄窗嗟� 啻纯啻ㄠ纯啻编祶啻编祶", mm: "%d 啻纯啻ㄠ纯啻编祶啻编祶", h: "啻掄窗嗟� 啻矗啻苦磿嗟嵿磿嗟傕导", hh: "%d 啻矗啻苦磿嗟嵿磿嗟傕导", d: "啻掄窗嗟� 啻︵纯啻掂锤啻�", dd: "%d 啻︵纯啻掂锤啻�", M: "啻掄窗嗟� 啻淳啻膏磦", MM: "%d 啻淳啻膏磦", y: "啻掄窗嗟� 啻掂导啻粪磦", yy: "%d 啻掂导啻粪磦" }, meridiemParse: /啻班淳啻む祶啻班纯|啻班淳啻掂纯啻侧祮|啻夃礆嗟嵿礆 啻曕创啻苦礊嗟嵿礊嗟峾啻掂祱啻曕祦啻ㄠ祶啻ㄠ祰啻班磦|啻班淳啻む祶啻班纯/i, meridiemHour: function (e, t) { return 12 === e && (e = 0), "啻班淳啻む祶啻班纯" === t && e >= 4 || "啻夃礆嗟嵿礆 啻曕创啻苦礊嗟嵿礊嗟�" === t || "啻掂祱啻曕祦啻ㄠ祶啻ㄠ祰啻班磦" === t ? e + 12 : e }, meridiem: function (e, t, n) { return e < 4 ? "啻班淳啻む祶啻班纯" : e < 12 ? "啻班淳啻掂纯啻侧祮" : e < 17 ? "啻夃礆嗟嵿礆 啻曕创啻苦礊嗟嵿礊嗟�" : e < 20 ? "啻掂祱啻曕祦啻ㄠ祶啻ㄠ祰啻班磦" : "啻班淳啻む祶啻班纯" } }); return t
+                    }))
+                }, "0390": function (e, t, n) { "use strict"; var r = n("02f4")(!0); e.exports = function (e, t, n) { return t + (n ? r(e, t).length : 1) } }, "0395": function (e, t, n) { var r = n("36c3"), i = n("6abf").f, o = {}.toString, a = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [], s = function (e) { try { return i(e) } catch (t) { return a.slice() } }; e.exports.f = function (e) { return a && "[object Window]" == o.call(e) ? s(e) : i(r(e)) } }, "03dd": function (e, t, n) { var r = n("eac5"), i = n("57a5"), o = Object.prototype, a = o.hasOwnProperty; function s(e) { if (!r(e)) return i(e); var t = []; for (var n in Object(e)) a.call(e, n) && "constructor" != n && t.push(n); return t } e.exports = s }, "03ec": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("cv", { months: "泻討褉谢邪褔_薪邪褉討褋_锌褍褕_邪泻邪_屑邪泄_耀訔褉褌屑械_褍褌討_耀褍褉谢邪_邪胁討薪_褞锌邪_褔映泻_褉邪褕褌邪胁".split("_"), monthsShort: "泻討褉_薪邪褉_锌褍褕_邪泻邪_屑邪泄_耀訔褉_褍褌討_耀褍褉_邪胁薪_褞锌邪_褔映泻_褉邪褕".split("_"), weekdays: "胁褘褉褋邪褉薪懈泻褍薪_褌褍薪褌懈泻褍薪_褘褌谢邪褉懈泻褍薪_褞薪泻褍薪_泻訔耀薪械褉薪懈泻褍薪_褝褉薪械泻褍薪_褕討屑邪褌泻褍薪".split("_"), weekdaysShort: "胁褘褉_褌褍薪_褘褌谢_褞薪_泻訔耀_褝褉薪_褕討屑".split("_"), weekdaysMin: "胁褉_褌薪_褘褌_褞薪_泻耀_褝褉_褕屑".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD-MM-YYYY", LL: "YYYY [耀褍谢褏懈] MMMM [褍泄討褏訔薪] D[-屑訔褕訔]", LLL: "YYYY [耀褍谢褏懈] MMMM [褍泄討褏訔薪] D[-屑訔褕訔], HH:mm", LLLL: "dddd, YYYY [耀褍谢褏懈] MMMM [褍泄討褏訔薪] D[-屑訔褕訔], HH:mm" }, calendar: { sameDay: "[袩邪褟薪] LT [褋械褏械褌褉械]", nextDay: "[蝎褉邪薪] LT [褋械褏械褌褉械]", lastDay: "[訓薪械褉] LT [褋械褏械褌褉械]", nextWeek: "[要懈褌械褋] dddd LT [褋械褏械褌褉械]", lastWeek: "[袠褉褌薪訔] dddd LT [褋械褏械褌褉械]", sameElse: "L" }, relativeTime: { future: function (e) { var t = /褋械褏械褌$/i.exec(e) ? "褉械薪" : /耀褍谢$/i.exec(e) ? "褌邪薪" : "褉邪薪"; return e + t }, past: "%s 泻邪褟谢谢邪", s: "锌訔褉-懈泻 耀械泻泻褍薪褌", ss: "%d 耀械泻泻褍薪褌", m: "锌訔褉 屑懈薪褍褌", mm: "%d 屑懈薪褍褌", h: "锌訔褉 褋械褏械褌", hh: "%d 褋械褏械褌", d: "锌訔褉 泻褍薪", dd: "%d 泻褍薪", M: "锌訔褉 褍泄討褏", MM: "%d 褍泄討褏", y: "锌訔褉 耀褍谢", yy: "%d 耀褍谢" }, dayOfMonthOrdinalParse: /\d{1,2}-屑訔褕/, ordinal: "%d-屑訔褕", week: { dow: 1, doy: 7 } }); return t
+                    }))
+                }, "0464": function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r); function o(e, t) { for (var n = i()({}, e), r = 0; r < t.length; r++) { var o = t[r]; delete n[o] } return n } t["a"] = o }, "04a9": function (e, t, n) { }, "0558": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e) { return e % 100 === 11 || e % 10 !== 1 } function n(e, n, r, i) { var o = e + " "; switch (r) { case "s": return n || i ? "nokkrar sek煤ndur" : "nokkrum sek煤ndum"; case "ss": return t(e) ? o + (n || i ? "sek煤ndur" : "sek煤ndum") : o + "sek煤nda"; case "m": return n ? "m铆n煤ta" : "m铆n煤tu"; case "mm": return t(e) ? o + (n || i ? "m铆n煤tur" : "m铆n煤tum") : n ? o + "m铆n煤ta" : o + "m铆n煤tu"; case "hh": return t(e) ? o + (n || i ? "klukkustundir" : "klukkustundum") : o + "klukkustund"; case "d": return n ? "dagur" : i ? "dag" : "degi"; case "dd": return t(e) ? n ? o + "dagar" : o + (i ? "daga" : "d枚gum") : n ? o + "dagur" : o + (i ? "dag" : "degi"); case "M": return n ? "m谩nu冒ur" : i ? "m谩nu冒" : "m谩nu冒i"; case "MM": return t(e) ? n ? o + "m谩nu冒ir" : o + (i ? "m谩nu冒i" : "m谩nu冒um") : n ? o + "m谩nu冒ur" : o + (i ? "m谩nu冒" : "m谩nu冒i"); case "y": return n || i ? "谩r" : "谩ri"; case "yy": return t(e) ? o + (n || i ? "谩r" : "谩rum") : o + (n || i ? "谩r" : "谩ri") } } var r = e.defineLocale("is", { months: "jan煤ar_febr煤ar_mars_apr铆l_ma铆_j煤n铆_j煤l铆_谩g煤st_september_okt贸ber_n贸vember_desember".split("_"), monthsShort: "jan_feb_mar_apr_ma铆_j煤n_j煤l_谩g煤_sep_okt_n贸v_des".split("_"), weekdays: "sunnudagur_m谩nudagur_镁ri冒judagur_mi冒vikudagur_fimmtudagur_f枚studagur_laugardagur".split("_"), weekdaysShort: "sun_m谩n_镁ri_mi冒_fim_f枚s_lau".split("_"), weekdaysMin: "Su_M谩_脼r_Mi_Fi_F枚_La".split("_"), longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY [kl.] H:mm", LLLL: "dddd, D. MMMM YYYY [kl.] H:mm" }, calendar: { sameDay: "[铆 dag kl.] LT", nextDay: "[谩 morgun kl.] LT", nextWeek: "dddd [kl.] LT", lastDay: "[铆 g忙r kl.] LT", lastWeek: "[s铆冒asta] dddd [kl.] LT", sameElse: "L" }, relativeTime: { future: "eftir %s", past: "fyrir %s s铆冒an", s: n, ss: n, m: n, mm: n, h: "klukkustund", hh: n, d: n, dd: n, M: n, MM: n, y: n, yy: n }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return r
+                    }))
+                }, "0621": function (e, t, n) { var r = n("9e69"), i = n("d370"), o = n("6747"), a = r ? r.isConcatSpreadable : void 0; function s(e) { return o(e) || i(e) || !!(a && e && e[a]) } e.exports = s }, "0644": function (e, t, n) { var r = n("3818"), i = 1, o = 4; function a(e) { return r(e, i | o) } e.exports = a }, "0721": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("fo", { months: "januar_februar_mars_apr铆l_mai_juni_juli_august_september_oktober_november_desember".split("_"), monthsShort: "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), weekdays: "sunnudagur_m谩nadagur_t媒sdagur_mikudagur_h贸sdagur_fr铆ggjadagur_leygardagur".split("_"), weekdaysShort: "sun_m谩n_t媒s_mik_h贸s_fr铆_ley".split("_"), weekdaysMin: "su_m谩_t媒_mi_h贸_fr_le".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D. MMMM, YYYY HH:mm" }, calendar: { sameDay: "[脥 dag kl.] LT", nextDay: "[脥 morgin kl.] LT", nextWeek: "dddd [kl.] LT", lastDay: "[脥 gj谩r kl.] LT", lastWeek: "[s铆冒stu] dddd [kl] LT", sameElse: "L" }, relativeTime: { future: "um %s", past: "%s s铆冒ani", s: "f谩 sekund", ss: "%d sekundir", m: "ein minuttur", mm: "%d minuttir", h: "ein t铆mi", hh: "%d t铆mar", d: "ein dagur", dd: "%d dagar", M: "ein m谩na冒ur", MM: "%d m谩na冒ir", y: "eitt 谩r", yy: "%d 谩r" }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "078a": function (e, t, n) { }, "079e": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("ja", { eras: [{ since: "2019-05-01", offset: 1, name: "浠ゅ拰", narrow: "銒�", abbr: "R" }, { since: "1989-01-08", until: "2019-04-30", offset: 1, name: "骞虫垚", narrow: "銔�", abbr: "H" }, { since: "1926-12-25", until: "1989-01-07", offset: 1, name: "鏄拰", narrow: "銔�", abbr: "S" }, { since: "1912-07-30", until: "1926-12-24", offset: 1, name: "澶ф", narrow: "銔�", abbr: "T" }, { since: "1873-01-01", until: "1912-07-29", offset: 6, name: "鏄庢不", narrow: "銔�", abbr: "M" }, { since: "0001-01-01", until: "1873-12-31", offset: 1, name: "瑗挎殾", narrow: "AD", abbr: "AD" }, { since: "0000-12-31", until: -1 / 0, offset: 1, name: "绱�鍏冨墠", narrow: "BC", abbr: "BC" }], eraYearOrdinalRegex: /(鍏億\d+)骞�/, eraYearOrdinalParse: function (e, t) { return "鍏�" === t[1] ? 1 : parseInt(t[1] || e, 10) }, months: "1鏈坃2鏈坃3鏈坃4鏈坃5鏈坃6鏈坃7鏈坃8鏈坃9鏈坃10鏈坃11鏈坃12鏈�".split("_"), monthsShort: "1鏈坃2鏈坃3鏈坃4鏈坃5鏈坃6鏈坃7鏈坃8鏈坃9鏈坃10鏈坃11鏈坃12鏈�".split("_"), weekdays: "鏃ユ洔鏃鏈堟洔鏃鐏洔鏃姘存洔鏃鏈ㄦ洔鏃閲戞洔鏃鍦熸洔鏃�".split("_"), weekdaysShort: "鏃鏈坃鐏玙姘確鏈╛閲慱鍦�".split("_"), weekdaysMin: "鏃鏈坃鐏玙姘確鏈╛閲慱鍦�".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY/MM/DD", LL: "YYYY骞碝鏈圖鏃�", LLL: "YYYY骞碝鏈圖鏃� HH:mm", LLLL: "YYYY骞碝鏈圖鏃� dddd HH:mm", l: "YYYY/MM/DD", ll: "YYYY骞碝鏈圖鏃�", lll: "YYYY骞碝鏈圖鏃� HH:mm", llll: "YYYY骞碝鏈圖鏃�(ddd) HH:mm" }, meridiemParse: /鍗堝墠|鍗堝緦/i, isPM: function (e) { return "鍗堝緦" === e }, meridiem: function (e, t, n) { return e < 12 ? "鍗堝墠" : "鍗堝緦" }, calendar: { sameDay: "[浠婃棩] LT", nextDay: "[鏄庢棩] LT", nextWeek: function (e) { return e.week() !== this.week() ? "[鏉ラ�盷dddd LT" : "dddd LT" }, lastDay: "[鏄ㄦ棩] LT", lastWeek: function (e) { return this.week() !== e.week() ? "[鍏堥�盷dddd LT" : "dddd LT" }, sameElse: "L" }, dayOfMonthOrdinalParse: /\d{1,2}鏃�/, ordinal: function (e, t) { switch (t) { case "y": return 1 === e ? "鍏冨勾" : e + "骞�"; case "d": case "D": case "DDD": return e + "鏃�"; default: return e } }, relativeTime: { future: "%s寰�", past: "%s鍓�", s: "鏁扮", ss: "%d绉�", m: "1鍒�", mm: "%d鍒�", h: "1鏅傞枔", hh: "%d鏅傞枔", d: "1鏃�", dd: "%d鏃�", M: "1銉舵湀", MM: "%d銉舵湀", y: "1骞�", yy: "%d骞�" } }); return t
+                    }))
+                }, "07c7": function (e, t) { function n() { return !1 } e.exports = n }, "07e3": function (e, t) { var n = {}.hasOwnProperty; e.exports = function (e, t) { return n.call(e, t) } }, "087d": function (e, t) { function n(e, t) { var n = -1, r = t.length, i = e.length; while (++n < r) e[i + n] = t[n]; return e } e.exports = n }, "08cc": function (e, t, n) { var r = n("1a8c"); function i(e) { return e === e && !r(e) } e.exports = i }, "099a": function (e, t) { function n(e, t, n) { var r = n - 1, i = e.length; while (++r < i) if (e[r] === t) return r; return -1 } e.exports = n }, "0a3c": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"), n = "ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"), r = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i], i = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, o = e.defineLocale("es-do", { months: "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"), monthsShort: function (e, r) { return e ? /-MMM-/.test(r) ? n[e.month()] : t[e.month()] : t }, monthsRegex: i, monthsShortRegex: i, monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, monthsParse: r, longMonthsParse: r, shortMonthsParse: r, weekdays: "domingo_lunes_martes_mi茅rcoles_jueves_viernes_s谩bado".split("_"), weekdaysShort: "dom._lun._mar._mi茅._jue._vie._s谩b.".split("_"), weekdaysMin: "do_lu_ma_mi_ju_vi_s谩".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "DD/MM/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY h:mm A", LLLL: "dddd, D [de] MMMM [de] YYYY h:mm A" }, calendar: { sameDay: function () { return "[hoy a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, nextDay: function () { return "[ma帽ana a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, nextWeek: function () { return "dddd [a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, lastDay: function () { return "[ayer a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, lastWeek: function () { return "[el] dddd [pasado a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, sameElse: "L" }, relativeTime: { future: "en %s", past: "hace %s", s: "unos segundos", ss: "%d segundos", m: "un minuto", mm: "%d minutos", h: "una hora", hh: "%d horas", d: "un d铆a", dd: "%d d铆as", M: "un mes", MM: "%d meses", y: "un a帽o", yy: "%d a帽os" }, dayOfMonthOrdinalParse: /\d{1,2}潞/, ordinal: "%d潞", week: { dow: 1, doy: 4 } }); return o
+                    }))
+                }, "0a84": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("ar-ma", { months: "賷賳丕賷乇_賮亘乇丕賷乇_賲丕乇爻_兀亘乇賷賱_賲丕賷_賷賵賳賷賵_賷賵賱賷賵夭_睾卮鬲_卮鬲賳亘乇_兀賰鬲賵亘乇_賳賵賳亘乇_丿噩賳亘乇".split("_"), monthsShort: "賷賳丕賷乇_賮亘乇丕賷乇_賲丕乇爻_兀亘乇賷賱_賲丕賷_賷賵賳賷賵_賷賵賱賷賵夭_睾卮鬲_卮鬲賳亘乇_兀賰鬲賵亘乇_賳賵賳亘乇_丿噩賳亘乇".split("_"), weekdays: "丕賱兀丨丿_丕賱廿孬賳賷賳_丕賱孬賱丕孬丕亍_丕賱兀乇亘毓丕亍_丕賱禺賲賷爻_丕賱噩賲毓丞_丕賱爻亘鬲".split("_"), weekdaysShort: "丕丨丿_丕孬賳賷賳_孬賱丕孬丕亍_丕乇亘毓丕亍_禺賲賷爻_噩賲毓丞_爻亘鬲".split("_"), weekdaysMin: "丨_賳_孬_乇_禺_噩_爻".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[丕賱賷賵賲 毓賱賶 丕賱爻丕毓丞] LT", nextDay: "[睾丿丕 毓賱賶 丕賱爻丕毓丞] LT", nextWeek: "dddd [毓賱賶 丕賱爻丕毓丞] LT", lastDay: "[兀賲爻 毓賱賶 丕賱爻丕毓丞] LT", lastWeek: "dddd [毓賱賶 丕賱爻丕毓丞] LT", sameElse: "L" }, relativeTime: { future: "賮賷 %s", past: "賲賳匕 %s", s: "孬賵丕賳", ss: "%d 孬丕賳賷丞", m: "丿賯賷賯丞", mm: "%d 丿賯丕卅賯", h: "爻丕毓丞", hh: "%d 爻丕毓丕鬲", d: "賷賵賲", dd: "%d 兀賷丕賲", M: "卮賴乇", MM: "%d 兀卮賴乇", y: "爻賳丞", yy: "%d 爻賳賵丕鬲" }, week: { dow: 6, doy: 12 } }); return t
+                    }))
+                }, "0b07": function (e, t, n) { var r = n("34ac"), i = n("3698"); function o(e, t) { var n = i(e, t); return r(n) ? n : void 0 } e.exports = o }, "0b49": function (e, t, n) { e.exports = n("f542") }, "0bfb": function (e, t, n) { "use strict"; var r = n("cb7c"); e.exports = function () { var e = r(this), t = ""; return e.global && (t += "g"), e.ignoreCase && (t += "i"), e.multiline && (t += "m"), e.unicode && (t += "u"), e.sticky && (t += "y"), t } }, "0caa": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t, n, r) { var i = { s: ["thoddea sekondamni", "thodde sekond"], ss: [e + " sekondamni", e + " sekond"], m: ["eka mintan", "ek minut"], mm: [e + " mintamni", e + " mintam"], h: ["eka voran", "ek vor"], hh: [e + " voramni", e + " voram"], d: ["eka disan", "ek dis"], dd: [e + " disamni", e + " dis"], M: ["eka mhoinean", "ek mhoino"], MM: [e + " mhoineamni", e + " mhoine"], y: ["eka vorsan", "ek voros"], yy: [e + " vorsamni", e + " vorsam"] }; return r ? i[n][0] : i[n][1] } var n = e.defineLocale("gom-latn", { months: { standalone: "Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"), format: "Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"), isFormat: /MMMM(\s)+D[oD]?/ }, monthsShort: "Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"), monthsParseExact: !0, weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"), weekdaysShort: "Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"), weekdaysMin: "Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "A h:mm [vazta]", LTS: "A h:mm:ss [vazta]", L: "DD-MM-YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY A h:mm [vazta]", LLLL: "dddd, MMMM Do, YYYY, A h:mm [vazta]", llll: "ddd, D MMM YYYY, A h:mm [vazta]" }, calendar: { sameDay: "[Aiz] LT", nextDay: "[Faleam] LT", nextWeek: "[Fuddlo] dddd[,] LT", lastDay: "[Kal] LT", lastWeek: "[Fattlo] dddd[,] LT", sameElse: "L" }, relativeTime: { future: "%s", past: "%s adim", s: t, ss: t, m: t, mm: t, h: t, hh: t, d: t, dd: t, M: t, MM: t, y: t, yy: t }, dayOfMonthOrdinalParse: /\d{1,2}(er)/, ordinal: function (e, t) { switch (t) { case "D": return e + "er"; default: case "M": case "Q": case "DDD": case "d": case "w": case "W": return e } }, week: { dow: 1, doy: 4 }, meridiemParse: /rati|sokallim|donparam|sanje/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "rati" === t ? e < 4 ? e : e + 12 : "sokallim" === t ? e : "donparam" === t ? e > 12 ? e : e + 12 : "sanje" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { return e < 4 ? "rati" : e < 12 ? "sokallim" : e < 16 ? "donparam" : e < 20 ? "sanje" : "rati" } }); return n
+                    }))
+                }, "0cdd": function (e, t) { window.MutationObserver || (window.MutationObserver = function (e) { function t(e) { this.i = [], this.m = e } function n(e) { (function n() { var r = e.takeRecords(); r.length && e.m(r, e), e.h = setTimeout(n, t._period) })() } function r(t) { var n, r = { type: null, target: null, addedNodes: [], removedNodes: [], previousSibling: null, nextSibling: null, attributeName: null, attributeNamespace: null, oldValue: null }; for (n in t) r[n] !== e && t[n] !== e && (r[n] = t[n]); return r } function i(e, t) { var n = l(e, t); return function (i) { var o = i.length; if (t.a && 3 === e.nodeType && e.nodeValue !== n.a && i.push(new r({ type: "characterData", target: e, oldValue: n.a })), t.b && n.b && s(i, e, n.b, t.f), t.c || t.g) var a = c(i, e, n, t); (a || i.length !== o) && (n = l(e, t)) } } function o(e, t) { return t.value } function a(e, t) { return "style" !== t.name ? t.value : e.style.cssText } function s(t, n, i, o) { for (var a, s, c = {}, l = n.attributes, u = l.length; u--;)a = l[u], s = a.name, o && o[s] === e || (v(n, a) !== i[s] && t.push(r({ type: "attributes", target: n, attributeName: s, oldValue: i[s], attributeNamespace: a.namespaceURI })), c[s] = !0); for (s in i) c[s] || t.push(r({ target: n, type: "attributes", attributeName: s, oldValue: i[s] })) } function c(t, n, i, o) { function a(e, n, i, a, l) { var u, h, f, d = e.length - 1; for (l = -~((d - l) / 2); f = e.pop();)u = i[f.j], h = a[f.l], o.c && l && Math.abs(f.j - f.l) >= d && (t.push(r({ type: "childList", target: n, addedNodes: [u], removedNodes: [u], nextSibling: u.nextSibling, previousSibling: u.previousSibling })), l--), o.b && h.b && s(t, u, h.b, o.f), o.a && 3 === u.nodeType && u.nodeValue !== h.a && t.push(r({ type: "characterData", target: u, oldValue: h.a })), o.g && c(u, h) } function c(n, i) { for (var h, f, p, v, m, g = n.childNodes, y = i.c, b = g.length, x = y ? y.length : 0, w = 0, _ = 0, C = 0; _ < b || C < x;)v = g[_], m = (p = y[C]) && p.node, v === m ? (o.b && p.b && s(t, v, p.b, o.f), o.a && p.a !== e && v.nodeValue !== p.a && t.push(r({ type: "characterData", target: v, oldValue: p.a })), f && a(f, n, g, y, w), o.g && (v.childNodes.length || p.c && p.c.length) && c(v, p), _++, C++) : (l = !0, h || (h = {}, f = []), v && (h[p = u(v)] || (h[p] = !0, -1 === (p = d(y, v, C, "node")) ? o.c && (t.push(r({ type: "childList", target: n, addedNodes: [v], nextSibling: v.nextSibling, previousSibling: v.previousSibling })), w++) : f.push({ j: _, l: p })), _++), m && m !== g[_] && (h[p = u(m)] || (h[p] = !0, -1 === (p = d(g, m, _)) ? o.c && (t.push(r({ type: "childList", target: i.node, removedNodes: [m], nextSibling: y[C + 1], previousSibling: y[C - 1] })), w--) : f.push({ j: p, l: C })), C++)); f && a(f, n, g, y, w) } var l; return c(n, i), l } function l(e, t) { var n = !0; return function e(r) { var i = { node: r }; return !t.a || 3 !== r.nodeType && 8 !== r.nodeType ? (t.b && n && 1 === r.nodeType && (i.b = f(r.attributes, (function (e, n) { return t.f && !t.f[n.name] || (e[n.name] = v(r, n)), e }), {})), n && (t.c || t.a || t.b && t.g) && (i.c = h(r.childNodes, e)), n = t.g) : i.a = r.nodeValue, i }(e) } function u(e) { try { return e.id || (e.mo_id = e.mo_id || m++) } catch (t) { try { return e.nodeValue } catch (n) { return m++ } } } function h(e, t) { for (var n = [], r = 0; r < e.length; r++)n[r] = t(e[r], r, e); return n } function f(e, t, n) { for (var r = 0; r < e.length; r++)n = t(n, e[r], r, e); return n } function d(e, t, n, r) { for (; n < e.length; n++)if ((r ? e[n][r] : e[n]) === t) return n; return -1 } t._period = 30, t.prototype = { observe: function (e, t) { for (var r = { b: !!(t.attributes || t.attributeFilter || t.attributeOldValue), c: !!t.childList, g: !!t.subtree, a: !(!t.characterData && !t.characterDataOldValue) }, o = this.i, a = 0; a < o.length; a++)o[a].s === e && o.splice(a, 1); t.attributeFilter && (r.f = f(t.attributeFilter, (function (e, t) { return e[t] = !0, e }), {})), o.push({ s: e, o: i(e, r) }), this.h || n(this) }, takeRecords: function () { for (var e = [], t = this.i, n = 0; n < t.length; n++)t[n].o(e); return e }, disconnect: function () { this.i = [], clearTimeout(this.h), this.h = null } }; var p = document.createElement("i"); p.style.top = 0; var v = (p = "null" != p.attributes.style.value) ? o : a, m = 1; return t }(void 0)) }, "0d24": function (e, t, n) { (function (e) { var r = n("2b3e"), i = n("07c7"), o = t && !t.nodeType && t, a = o && "object" == typeof e && e && !e.nodeType && e, s = a && a.exports === o, c = s ? r.Buffer : void 0, l = c ? c.isBuffer : void 0, u = l || i; e.exports = u }).call(this, n("62e4")(e)) }, "0d58": function (e, t, n) { var r = n("ce10"), i = n("e11e"); e.exports = Object.keys || function (e) { return r(e, i) } }, "0e49": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("fr-ch", { months: "janvier_f茅vrier_mars_avril_mai_juin_juillet_ao没t_septembre_octobre_novembre_d茅cembre".split("_"), monthsShort: "janv._f茅vr._mars_avr._mai_juin_juil._ao没t_sept._oct._nov._d茅c.".split("_"), monthsParseExact: !0, weekdays: "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), weekdaysShort: "dim._lun._mar._mer._jeu._ven._sam.".split("_"), weekdaysMin: "di_lu_ma_me_je_ve_sa".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Aujourd鈥檋ui 脿] LT", nextDay: "[Demain 脿] LT", nextWeek: "dddd [脿] LT", lastDay: "[Hier 脿] LT", lastWeek: "dddd [dernier 脿] LT", sameElse: "L" }, relativeTime: { future: "dans %s", past: "il y a %s", s: "quelques secondes", ss: "%d secondes", m: "une minute", mm: "%d minutes", h: "une heure", hh: "%d heures", d: "un jour", dd: "%d jours", M: "un mois", MM: "%d mois", y: "un an", yy: "%d ans" }, dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, ordinal: function (e, t) { switch (t) { default: case "M": case "Q": case "D": case "DDD": case "d": return e + (1 === e ? "er" : "e"); case "w": case "W": return e + (1 === e ? "re" : "e") } }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "0e6b": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("en-au", { months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY h:mm A", LLLL: "dddd, D MMMM YYYY h:mm A" }, calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" }, relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", ss: "%d seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (e) { var t = e % 10, n = 1 === ~~(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th"; return e + n }, week: { dow: 0, doy: 4 } }); return t
+                    }))
+                }, "0e81": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "'inci", 5: "'inci", 8: "'inci", 70: "'inci", 80: "'inci", 2: "'nci", 7: "'nci", 20: "'nci", 50: "'nci", 3: "'眉nc眉", 4: "'眉nc眉", 100: "'眉nc眉", 6: "'nc谋", 9: "'uncu", 10: "'uncu", 30: "'uncu", 60: "'谋nc谋", 90: "'谋nc谋" }, n = e.defineLocale("tr", { months: "Ocak_艦ubat_Mart_Nisan_May谋s_Haziran_Temmuz_A臒ustos_Eyl眉l_Ekim_Kas谋m_Aral谋k".split("_"), monthsShort: "Oca_艦ub_Mar_Nis_May_Haz_Tem_A臒u_Eyl_Eki_Kas_Ara".split("_"), weekdays: "Pazar_Pazartesi_Sal谋_脟ar艧amba_Per艧embe_Cuma_Cumartesi".split("_"), weekdaysShort: "Paz_Pts_Sal_脟ar_Per_Cum_Cts".split("_"), weekdaysMin: "Pz_Pt_Sa_脟a_Pe_Cu_Ct".split("_"), meridiem: function (e, t, n) { return e < 12 ? n ? "枚枚" : "脰脰" : n ? "枚s" : "脰S" }, meridiemParse: /枚枚|脰脰|枚s|脰S/, isPM: function (e) { return "枚s" === e || "脰S" === e }, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[bug眉n saat] LT", nextDay: "[yar谋n saat] LT", nextWeek: "[gelecek] dddd [saat] LT", lastDay: "[d眉n] LT", lastWeek: "[ge莽en] dddd [saat] LT", sameElse: "L" }, relativeTime: { future: "%s sonra", past: "%s 枚nce", s: "birka莽 saniye", ss: "%d saniye", m: "bir dakika", mm: "%d dakika", h: "bir saat", hh: "%d saat", d: "bir g眉n", dd: "%d g眉n", M: "bir ay", MM: "%d ay", y: "bir y谋l", yy: "%d y谋l" }, ordinal: function (e, n) { switch (n) { case "d": case "D": case "Do": case "DD": return e; default: if (0 === e) return e + "'谋nc谋"; var r = e % 10, i = e % 100 - r, o = e >= 100 ? 100 : null; return e + (t[r] || t[i] || t[o]) } }, week: { dow: 1, doy: 7 } }); return n
+                    }))
+                }, "0f0f": function (e, t, n) { var r = n("8eeb"), i = n("9934"); function o(e, t) { return e && r(t, i(t), e) } e.exports = o }, "0f14": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("da", { months: "januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"), monthsShort: "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"), weekdays: "s酶ndag_mandag_tirsdag_onsdag_torsdag_fredag_l酶rdag".split("_"), weekdaysShort: "s酶n_man_tir_ons_tor_fre_l酶r".split("_"), weekdaysMin: "s酶_ma_ti_on_to_fr_l酶".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY HH:mm", LLLL: "dddd [d.] D. MMMM YYYY [kl.] HH:mm" }, calendar: { sameDay: "[i dag kl.] LT", nextDay: "[i morgen kl.] LT", nextWeek: "p氓 dddd [kl.] LT", lastDay: "[i g氓r kl.] LT", lastWeek: "[i] dddd[s kl.] LT", sameElse: "L" }, relativeTime: { future: "om %s", past: "%s siden", s: "f氓 sekunder", ss: "%d sekunder", m: "et minut", mm: "%d minutter", h: "en time", hh: "%d timer", d: "en dag", dd: "%d dage", M: "en m氓ned", MM: "%d m氓neder", y: "et 氓r", yy: "%d 氓r" }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "0f38": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("tl-ph", { months: "Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"), monthsShort: "Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"), weekdays: "Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"), weekdaysShort: "Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"), weekdaysMin: "Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "MM/D/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY HH:mm", LLLL: "dddd, MMMM DD, YYYY HH:mm" }, calendar: { sameDay: "LT [ngayong araw]", nextDay: "[Bukas ng] LT", nextWeek: "LT [sa susunod na] dddd", lastDay: "LT [kahapon]", lastWeek: "LT [noong nakaraang] dddd", sameElse: "L" }, relativeTime: { future: "sa loob ng %s", past: "%s ang nakalipas", s: "ilang segundo", ss: "%d segundo", m: "isang minuto", mm: "%d minuto", h: "isang oras", hh: "%d oras", d: "isang araw", dd: "%d araw", M: "isang buwan", MM: "%d buwan", y: "isang taon", yy: "%d taon" }, dayOfMonthOrdinalParse: /\d{1,2}/, ordinal: function (e) { return e }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "0f5c": function (e, t, n) { var r = n("159a"); function i(e, t, n) { return null == e ? e : r(e, t, n) } e.exports = i }, "0fc9": function (e, t, n) { var r = n("3a38"), i = Math.max, o = Math.min; e.exports = function (e, t) { return e = r(e), e < 0 ? i(e + t, 0) : o(e, t) } }, "0ff2": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("eu", { months: "urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"), monthsShort: "urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"), monthsParseExact: !0, weekdays: "igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"), weekdaysShort: "ig._al._ar._az._og._ol._lr.".split("_"), weekdaysMin: "ig_al_ar_az_og_ol_lr".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY-MM-DD", LL: "YYYY[ko] MMMM[ren] D[a]", LLL: "YYYY[ko] MMMM[ren] D[a] HH:mm", LLLL: "dddd, YYYY[ko] MMMM[ren] D[a] HH:mm", l: "YYYY-M-D", ll: "YYYY[ko] MMM D[a]", lll: "YYYY[ko] MMM D[a] HH:mm", llll: "ddd, YYYY[ko] MMM D[a] HH:mm" }, calendar: { sameDay: "[gaur] LT[etan]", nextDay: "[bihar] LT[etan]", nextWeek: "dddd LT[etan]", lastDay: "[atzo] LT[etan]", lastWeek: "[aurreko] dddd LT[etan]", sameElse: "L" }, relativeTime: { future: "%s barru", past: "duela %s", s: "segundo batzuk", ss: "%d segundo", m: "minutu bat", mm: "%d minutu", h: "ordu bat", hh: "%d ordu", d: "egun bat", dd: "%d egun", M: "hilabete bat", MM: "%d hilabete", y: "urte bat", yy: "%d urte" }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 7 } }); return t
+                    }))
+                }, "100e": function (e, t, n) { var r = n("cd9d"), i = n("2286"), o = n("c1c9"); function a(e, t) { return o(i(e, t, r), e + "") } e.exports = a }, 1041: function (e, t, n) { var r = n("8eeb"), i = n("a029"); function o(e, t) { return r(e, i(e), t) } e.exports = o }, 1098: function (e, t, n) { "use strict"; t.__esModule = !0; var r = n("17ed"), i = c(r), o = n("f893"), a = c(o), s = "function" === typeof a.default && "symbol" === typeof i.default ? function (e) { return typeof e } : function (e) { return e && "function" === typeof a.default && e.constructor === a.default && e !== a.default.prototype ? "symbol" : typeof e }; function c(e) { return e && e.__esModule ? e : { default: e } } t.default = "function" === typeof a.default && "symbol" === s(i.default) ? function (e) { return "undefined" === typeof e ? "undefined" : s(e) } : function (e) { return e && "function" === typeof a.default && e.constructor === a.default && e !== a.default.prototype ? "symbol" : "undefined" === typeof e ? "undefined" : s(e) } }, "10e8": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("th", { months: "喔∴竵喔`覆喔勦浮_喔佮父喔∴笭喔侧笧喔编笝喔樴箤_喔∴傅喔權覆喔勦浮_喙�喔∴俯喔侧涪喔檁喔炧袱喔┼笭喔侧竸喔喔∴复喔栢父喔權覆喔⑧笝_喔佮福喔佮笌喔侧竸喔喔复喔囙斧喔侧竸喔喔佮副喔權涪喔侧涪喔檁喔曕父喔ム覆喔勦浮_喔炧袱喔ㄠ笀喔脆竵喔侧涪喔檁喔樴副喔權抚喔侧竸喔�".split("_"), monthsShort: "喔�.喔�._喔�.喔�._喔∴傅.喔�._喙�喔�.喔�._喔�.喔�._喔∴复.喔�._喔�.喔�._喔�.喔�._喔�.喔�._喔�.喔�._喔�.喔�._喔�.喔�.".split("_"), monthsParseExact: !0, weekdays: "喔覆喔椸复喔曕涪喙宊喔堗副喔權笚喔`箤_喔副喔囙竸喔侧福_喔炧父喔榑喔炧袱喔副喔笟喔斷傅_喔ㄠ父喔佮福喙宊喙�喔覆喔`箤".split("_"), weekdaysShort: "喔覆喔椸复喔曕涪喙宊喔堗副喔權笚喔`箤_喔副喔囙竸喔侧福_喔炧父喔榑喔炧袱喔副喔猒喔ㄠ父喔佮福喙宊喙�喔覆喔`箤".split("_"), weekdaysMin: "喔覆._喔�._喔�._喔�._喔炧袱._喔�._喔�.".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY 喙�喔о弗喔� H:mm", LLLL: "喔о副喔檇ddd喔椸傅喙� D MMMM YYYY 喙�喔о弗喔� H:mm" }, meridiemParse: /喔佮箞喔笝喙�喔椸傅喙堗涪喔噟喔弗喔编竾喙�喔椸傅喙堗涪喔�/, isPM: function (e) { return "喔弗喔编竾喙�喔椸傅喙堗涪喔�" === e }, meridiem: function (e, t, n) { return e < 12 ? "喔佮箞喔笝喙�喔椸傅喙堗涪喔�" : "喔弗喔编竾喙�喔椸傅喙堗涪喔�" }, calendar: { sameDay: "[喔о副喔權笝喔掂箟 喙�喔о弗喔瞉 LT", nextDay: "[喔炧福喔膏箞喔囙笝喔掂箟 喙�喔о弗喔瞉 LT", nextWeek: "dddd[喔笝喙夃覆 喙�喔о弗喔瞉 LT", lastDay: "[喙�喔∴阜喙堗腑喔о覆喔權笝喔掂箟 喙�喔о弗喔瞉 LT", lastWeek: "[喔о副喔橾dddd[喔椸傅喙堗箒喔ム箟喔� 喙�喔о弗喔瞉 LT", sameElse: "L" }, relativeTime: { future: "喔傅喔� %s", past: "%s喔椸傅喙堗箒喔ム箟喔�", s: "喙勦浮喙堗竵喔掂箞喔о复喔權覆喔椸傅", ss: "%d 喔о复喔權覆喔椸傅", m: "1 喔權覆喔椸傅", mm: "%d 喔權覆喔椸傅", h: "1 喔娻副喙堗抚喙傕浮喔�", hh: "%d 喔娻副喙堗抚喙傕浮喔�", d: "1 喔о副喔�", dd: "%d 喔о副喔�", M: "1 喙�喔斷阜喔笝", MM: "%d 喙�喔斷阜喔笝", y: "1 喔涏傅", yy: "%d 喔涏傅" } }); return t
+                    }))
+                }, "11e9": function (e, t, n) { var r = n("52a7"), i = n("4630"), o = n("6821"), a = n("6a99"), s = n("69a8"), c = n("c69a"), l = Object.getOwnPropertyDescriptor; t.f = n("9e1e") ? l : function (e, t) { if (e = o(e), t = a(t, !0), c) try { return l(e, t) } catch (n) { } if (s(e, t)) return i(!r.f.call(e, t), e[t]) } }, 1290: function (e, t) { function n(e) { var t = typeof e; return "string" == t || "number" == t || "symbol" == t || "boolean" == t ? "__proto__" !== e : null === e } e.exports = n }, "12d2": function (e, t, n) { "use strict"; var r = n("e9a3"), i = n.n(r); i.a }, 1304: function (e, t, n) { var r = n("cd9d"); function i(e) { return "function" == typeof e ? e : r } e.exports = i }, 1310: function (e, t) { function n(e) { return null != e && "object" == typeof e } e.exports = n }, "134b": function (e, t, n) { "use strict"; function r(e) { return e && e.__esModule ? e : { default: e } } Object.defineProperty(t, "__esModule", { value: !0 }); var i = n("4039"), o = r(i), a = n("320c"), s = r(a), c = !0, l = !1, u = ["altKey", "bubbles", "cancelable", "ctrlKey", "currentTarget", "eventPhase", "metaKey", "shiftKey", "target", "timeStamp", "view", "type"]; function h(e) { return null === e || void 0 === e } var f = [{ reg: /^key/, props: ["char", "charCode", "key", "keyCode", "which"], fix: function (e, t) { h(e.which) && (e.which = h(t.charCode) ? t.keyCode : t.charCode), void 0 === e.metaKey && (e.metaKey = e.ctrlKey) } }, { reg: /^touch/, props: ["touches", "changedTouches", "targetTouches"] }, { reg: /^hashchange$/, props: ["newURL", "oldURL"] }, { reg: /^gesturechange$/i, props: ["rotation", "scale"] }, { reg: /^(mousewheel|DOMMouseScroll)$/, props: [], fix: function (e, t) { var n = void 0, r = void 0, i = void 0, o = t.wheelDelta, a = t.axis, s = t.wheelDeltaY, c = t.wheelDeltaX, l = t.detail; o && (i = o / 120), l && (i = 0 - (l % 3 === 0 ? l / 3 : l)), void 0 !== a && (a === e.HORIZONTAL_AXIS ? (r = 0, n = 0 - i) : a === e.VERTICAL_AXIS && (n = 0, r = i)), void 0 !== s && (r = s / 120), void 0 !== c && (n = -1 * c / 120), n || r || (r = i), void 0 !== n && (e.deltaX = n), void 0 !== r && (e.deltaY = r), void 0 !== i && (e.delta = i) } }, { reg: /^mouse|contextmenu|click|mspointer|(^DOMMouseScroll$)/i, props: ["buttons", "clientX", "clientY", "button", "offsetX", "relatedTarget", "which", "fromElement", "toElement", "offsetY", "pageX", "pageY", "screenX", "screenY"], fix: function (e, t) { var n = void 0, r = void 0, i = void 0, o = e.target, a = t.button; return o && h(e.pageX) && !h(t.clientX) && (n = o.ownerDocument || document, r = n.documentElement, i = n.body, e.pageX = t.clientX + (r && r.scrollLeft || i && i.scrollLeft || 0) - (r && r.clientLeft || i && i.clientLeft || 0), e.pageY = t.clientY + (r && r.scrollTop || i && i.scrollTop || 0) - (r && r.clientTop || i && i.clientTop || 0)), e.which || void 0 === a || (e.which = 1 & a ? 1 : 2 & a ? 3 : 4 & a ? 2 : 0), !e.relatedTarget && e.fromElement && (e.relatedTarget = e.fromElement === o ? e.toElement : e.fromElement), e } }]; function d() { return c } function p() { return l } function v(e) { var t = e.type, n = "function" === typeof e.stopPropagation || "boolean" === typeof e.cancelBubble; o["default"].call(this), this.nativeEvent = e; var r = p; "defaultPrevented" in e ? r = e.defaultPrevented ? d : p : "getPreventDefault" in e ? r = e.getPreventDefault() ? d : p : "returnValue" in e && (r = e.returnValue === l ? d : p), this.isDefaultPrevented = r; var i = [], a = void 0, s = void 0, c = void 0, h = u.concat(); f.forEach((function (e) { t.match(e.reg) && (h = h.concat(e.props), e.fix && i.push(e.fix)) })), s = h.length; while (s) c = h[--s], this[c] = e[c]; !this.target && n && (this.target = e.srcElement || document), this.target && 3 === this.target.nodeType && (this.target = this.target.parentNode), s = i.length; while (s) a = i[--s], a(this, e); this.timeStamp = e.timeStamp || Date.now() } var m = o["default"].prototype; (0, s["default"])(v.prototype, m, { constructor: v, preventDefault: function () { var e = this.nativeEvent; e.preventDefault ? e.preventDefault() : e.returnValue = l, m.preventDefault.call(this) }, stopPropagation: function () { var e = this.nativeEvent; e.stopPropagation ? e.stopPropagation() : e.cancelBubble = c, m.stopPropagation.call(this) } }), t["default"] = v, e.exports = t["default"] }, 1368: function (e, t, n) { var r = n("da03"), i = function () { var e = /[^.]+$/.exec(r && r.keys && r.keys.IE_PROTO || ""); return e ? "Symbol(src)_1." + e : "" }(); function o(e) { return !!i && i in e } e.exports = o }, "13d0": function (e, t, n) { }, "13e9": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { words: { ss: ["褋械泻褍薪写邪", "褋械泻褍薪写械", "褋械泻褍薪写懈"], m: ["褬械写邪薪 屑懈薪褍褌", "褬械写薪械 屑懈薪褍褌械"], mm: ["屑懈薪褍褌", "屑懈薪褍褌械", "屑懈薪褍褌邪"], h: ["褬械写邪薪 褋邪褌", "褬械写薪芯谐 褋邪褌邪"], hh: ["褋邪褌", "褋邪褌邪", "褋邪褌懈"], dd: ["写邪薪", "写邪薪邪", "写邪薪邪"], MM: ["屑械褋械褑", "屑械褋械褑邪", "屑械褋械褑懈"], yy: ["谐芯写懈薪邪", "谐芯写懈薪械", "谐芯写懈薪邪"] }, correctGrammaticalCase: function (e, t) { return 1 === e ? t[0] : e >= 2 && e <= 4 ? t[1] : t[2] }, translate: function (e, n, r) { var i = t.words[r]; return 1 === r.length ? n ? i[0] : i[1] : e + " " + t.correctGrammaticalCase(e, i) } }, n = e.defineLocale("sr-cyrl", { months: "褬邪薪褍邪褉_褎械斜褉褍邪褉_屑邪褉褌_邪锌褉懈谢_屑邪褬_褬褍薪_褬褍谢_邪胁谐褍褋褌_褋械锌褌械屑斜邪褉_芯泻褌芯斜邪褉_薪芯胁械屑斜邪褉_写械褑械屑斜邪褉".split("_"), monthsShort: "褬邪薪._褎械斜._屑邪褉._邪锌褉._屑邪褬_褬褍薪_褬褍谢_邪胁谐._褋械锌._芯泻褌._薪芯胁._写械褑.".split("_"), monthsParseExact: !0, weekdays: "薪械写械褭邪_锌芯薪械写械褭邪泻_褍褌芯褉邪泻_褋褉械写邪_褔械褌胁褉褌邪泻_锌械褌邪泻_褋褍斜芯褌邪".split("_"), weekdaysShort: "薪械写._锌芯薪._褍褌芯._褋褉械._褔械褌._锌械褌._褋褍斜.".split("_"), weekdaysMin: "薪械_锌芯_褍褌_褋褉_褔械_锌械_褋褍".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd, D. MMMM YYYY H:mm" }, calendar: { sameDay: "[写邪薪邪褋 褍] LT", nextDay: "[褋褍褌褉邪 褍] LT", nextWeek: function () { switch (this.day()) { case 0: return "[褍] [薪械写械褭褍] [褍] LT"; case 3: return "[褍] [褋褉械写褍] [褍] LT"; case 6: return "[褍] [褋褍斜芯褌褍] [褍] LT"; case 1: case 2: case 4: case 5: return "[褍] dddd [褍] LT" } }, lastDay: "[褬褍褔械 褍] LT", lastWeek: function () { var e = ["[锌褉芯褕谢械] [薪械写械褭械] [褍] LT", "[锌褉芯褕谢芯谐] [锌芯薪械写械褭泻邪] [褍] LT", "[锌褉芯褕谢芯谐] [褍褌芯褉泻邪] [褍] LT", "[锌褉芯褕谢械] [褋褉械写械] [褍] LT", "[锌褉芯褕谢芯谐] [褔械褌胁褉褌泻邪] [褍] LT", "[锌褉芯褕谢芯谐] [锌械褌泻邪] [褍] LT", "[锌褉芯褕谢械] [褋褍斜芯褌械] [褍] LT"]; return e[this.day()] }, sameElse: "L" }, relativeTime: { future: "蟹邪 %s", past: "锌褉械 %s", s: "薪械泻芯谢懈泻芯 褋械泻褍薪写懈", ss: t.translate, m: t.translate, mm: t.translate, h: t.translate, hh: t.translate, d: "写邪薪", dd: t.translate, M: "屑械褋械褑", MM: t.translate, y: "谐芯写懈薪褍", yy: t.translate }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 7 } }); return n
+                    }))
+                }, 1495: function (e, t, n) { var r = n("86cc"), i = n("cb7c"), o = n("0d58"); e.exports = n("9e1e") ? Object.defineProperties : function (e, t) { i(e); var n, a = o(t), s = a.length, c = 0; while (s > c) r.f(e, n = a[c++], t[n]); return e } }, "14e1": function (e, t, n) { }, "159a": function (e, t, n) { var r = n("32b3"), i = n("e2e4"), o = n("c098"), a = n("1a8c"), s = n("f4d6"); function c(e, t, n, c) { if (!a(e)) return e; t = i(t, e); var l = -1, u = t.length, h = u - 1, f = e; while (null != f && ++l < u) { var d = s(t[l]), p = n; if ("__proto__" === d || "constructor" === d || "prototype" === d) return e; if (l != h) { var v = f[d]; p = c ? c(v, d, f) : void 0, void 0 === p && (p = a(v) ? v : o(t[l + 1]) ? [] : {}) } r(f, d, p), f = f[d] } return e } e.exports = c }, "15aa": function (e, t, n) { }, "15f3": function (e, t, n) { var r = n("89d9"), i = n("8604"); function o(e, t) { return r(e, t, (function (t, n) { return i(e, n) })) } e.exports = o }, "161b": function (e, t, n) { }, 1654: function (e, t, n) { "use strict"; var r = n("71c1")(!0); n("30f1")(String, "String", (function (e) { this._t = String(e), this._i = 0 }), (function () { var e, t = this._t, n = this._i; return n >= t.length ? { value: void 0, done: !0 } : (e = r(t, n), this._i += e.length, { value: e, done: !1 }) })) }, "167b": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("oc-lnc", { months: { standalone: "geni猫r_febri猫r_mar莽_abril_mai_junh_julhet_agost_setembre_oct貌bre_novembre_decembre".split("_"), format: "de geni猫r_de febri猫r_de mar莽_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'oct貌bre_de novembre_de decembre".split("_"), isFormat: /D[oD]?(\s)+MMMM/ }, monthsShort: "gen._febr._mar莽_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"), monthsParseExact: !0, weekdays: "dimenge_diluns_dimars_dim猫cres_dij貌us_divendres_dissabte".split("_"), weekdaysShort: "dg._dl._dm._dc._dj._dv._ds.".split("_"), weekdaysMin: "dg_dl_dm_dc_dj_dv_ds".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM [de] YYYY", ll: "D MMM YYYY", LLL: "D MMMM [de] YYYY [a] H:mm", lll: "D MMM YYYY, H:mm", LLLL: "dddd D MMMM [de] YYYY [a] H:mm", llll: "ddd D MMM YYYY, H:mm" }, calendar: { sameDay: "[u猫i a] LT", nextDay: "[deman a] LT", nextWeek: "dddd [a] LT", lastDay: "[i猫r a] LT", lastWeek: "dddd [passat a] LT", sameElse: "L" }, relativeTime: { future: "d'aqu铆 %s", past: "fa %s", s: "unas segondas", ss: "%d segondas", m: "una minuta", mm: "%d minutas", h: "una ora", hh: "%d oras", d: "un jorn", dd: "%d jorns", M: "un mes", MM: "%d meses", y: "un an", yy: "%d ans" }, dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|猫|a)/, ordinal: function (e, t) { var n = 1 === e ? "r" : 2 === e ? "n" : 3 === e ? "r" : 4 === e ? "t" : "猫"; return "w" !== t && "W" !== t || (n = "a"), e + n }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, 1691: function (e, t) { e.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",") }, 1693: function (e, t, n) { var r = n("afb9"), i = n("9934"); function o(e) { return null == e ? [] : r(e, i(e)) } e.exports = o }, 1727: function (e, t, n) { e.exports = { default: n("469f"), __esModule: !0 } }, "17ed": function (e, t, n) { e.exports = { default: n("d8d6"), __esModule: !0 } }, 1838: function (e, t, n) { var r = n("c05f"), i = n("9b02"), o = n("8604"), a = n("f608"), s = n("08cc"), c = n("20ec"), l = n("f4d6"), u = 1, h = 2; function f(e, t) { return a(e) && s(t) ? c(l(e), t) : function (n) { var a = i(n, e); return void 0 === a && a === t ? o(n, e) : r(t, a, u | h) } } e.exports = f }, "18ce": function (e, t, n) { "use strict"; var r = n("1098"), i = n.n(r), o = n("c544"), a = n("3c55"), s = n.n(a), c = n("d41d"), l = 0 !== o["a"].endEvents.length, u = ["Webkit", "Moz", "O", "ms"], h = ["-webkit-", "-moz-", "-o-", "ms-", ""]; function f(e, t) { for (var n = window.getComputedStyle(e, null), r = "", i = 0; i < h.length; i++)if (r = n.getPropertyValue(h[i] + t), r) break; return r } function d(e) { if (l) { var t = parseFloat(f(e, "transition-delay")) || 0, n = parseFloat(f(e, "transition-duration")) || 0, r = parseFloat(f(e, "animation-delay")) || 0, i = parseFloat(f(e, "animation-duration")) || 0, o = Math.max(n + t, i + r); e.rcEndAnimTimeout = setTimeout((function () { e.rcEndAnimTimeout = null, e.rcEndListener && e.rcEndListener() }), 1e3 * o + 200) } } function p(e) { e.rcEndAnimTimeout && (clearTimeout(e.rcEndAnimTimeout), e.rcEndAnimTimeout = null) } var v = function (e, t, n) { var r = "object" === ("undefined" === typeof t ? "undefined" : i()(t)), a = r ? t.name : t, l = r ? t.active : t + "-active", u = n, h = void 0, f = void 0, v = s()(e); return n && "[object Object]" === Object.prototype.toString.call(n) && (u = n.end, h = n.start, f = n.active), e.rcEndListener && e.rcEndListener(), e.rcEndListener = function (t) { t && t.target !== e || (e.rcAnimTimeout && (Object(c["a"])(e.rcAnimTimeout), e.rcAnimTimeout = null), p(e), v.remove(a), v.remove(l), o["a"].removeEndEventListener(e, e.rcEndListener), e.rcEndListener = null, u && u()) }, o["a"].addEndEventListener(e, e.rcEndListener), h && h(), v.add(a), e.rcAnimTimeout = Object(c["b"])((function () { e.rcAnimTimeout = null, v.add(a), v.add(l), f && Object(c["b"])(f, 0), d(e) }), 30), { stop: function () { e.rcEndListener && e.rcEndListener() } } }; v.style = function (e, t, n) { e.rcEndListener && e.rcEndListener(), e.rcEndListener = function (t) { t && t.target !== e || (e.rcAnimTimeout && (Object(c["a"])(e.rcAnimTimeout), e.rcAnimTimeout = null), p(e), o["a"].removeEndEventListener(e, e.rcEndListener), e.rcEndListener = null, n && n()) }, o["a"].addEndEventListener(e, e.rcEndListener), e.rcAnimTimeout = Object(c["b"])((function () { for (var n in t) t.hasOwnProperty(n) && (e.style[n] = t[n]); e.rcAnimTimeout = null, d(e) }), 0) }, v.setTransition = function (e, t, n) { var r = t, i = n; void 0 === n && (i = r, r = ""), r = r || "", u.forEach((function (t) { e.style[t + "Transition" + r] = i })) }, v.isCssAnimationSupported = l, t["a"] = v }, "18d8": function (e, t, n) { var r = n("234d"), i = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, o = /\\(\\)?/g, a = r((function (e) { var t = []; return 46 === e.charCodeAt(0) && t.push(""), e.replace(i, (function (e, n, r, i) { t.push(r ? i.replace(o, "$1") : n || e) })), t })); e.exports = a }, "18f6": function (e, t, n) { var r = n("30e0"), i = n("1304"), o = n("9934"); function a(e, t) { return null == e ? e : r(e, i(t), o) } e.exports = a }, "193b": function (e, t, n) { var r = n("159a"); function i(e, t, n, i) { return i = "function" == typeof i ? i : void 0, null == e ? e : r(e, t, n, i) } e.exports = i }, 1991: function (e, t, n) { var r, i, o, a = n("9b43"), s = n("31f4"), c = n("fab2"), l = n("230e"), u = n("7726"), h = u.process, f = u.setImmediate, d = u.clearImmediate, p = u.MessageChannel, v = u.Dispatch, m = 0, g = {}, y = "onreadystatechange", b = function () { var e = +this; if (g.hasOwnProperty(e)) { var t = g[e]; delete g[e], t() } }, x = function (e) { b.call(e.data) }; f && d || (f = function (e) { var t = [], n = 1; while (arguments.length > n) t.push(arguments[n++]); return g[++m] = function () { s("function" == typeof e ? e : Function(e), t) }, r(m), m }, d = function (e) { delete g[e] }, "process" == n("2d95")(h) ? r = function (e) { h.nextTick(a(b, e, 1)) } : v && v.now ? r = function (e) { v.now(a(b, e, 1)) } : p ? (i = new p, o = i.port2, i.port1.onmessage = x, r = a(o.postMessage, o, 1)) : u.addEventListener && "function" == typeof postMessage && !u.importScripts ? (r = function (e) { u.postMessage(e + "", "*") }, u.addEventListener("message", x, !1)) : r = y in l("script") ? function (e) { c.appendChild(l("script"))[y] = function () { c.removeChild(this), b.call(e) } } : function (e) { setTimeout(a(b, e, 1), 0) }), e.exports = { set: f, clear: d } }, "1a2d": function (e, t, n) { var r = n("42a2"), i = n("1310"), o = "[object Map]"; function a(e) { return i(e) && r(e) == o } e.exports = a }, "1a3b": function (e, t, n) { }, "1a8c": function (e, t) { function n(e) { var t = typeof e; return null != e && ("object" == t || "function" == t) } e.exports = n }, "1b2b": function (e, t) { e.exports = function (e, t, n, r) { var i = n ? n.call(r, e, t) : void 0; if (void 0 !== i) return !!i; if (e === t) return !0; if ("object" !== typeof e || !e || "object" !== typeof t || !t) return !1; var o = Object.keys(e), a = Object.keys(t); if (o.length !== a.length) return !1; for (var s = Object.prototype.hasOwnProperty.bind(t), c = 0; c < o.length; c++) { var l = o[c]; if (!s(l)) return !1; var u = e[l], h = t[l]; if (i = n ? n.call(r, u, h, l) : void 0, !1 === i || void 0 === i && u !== h) return !1 } return !0 } }, "1b45": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("mt", { months: "Jannar_Frar_Marzu_April_Mejju_臓unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di膵embru".split("_"), monthsShort: "Jan_Fra_Mar_Apr_Mej_臓un_Lul_Aww_Set_Ott_Nov_Di膵".split("_"), weekdays: "Il-摩add_It-Tnejn_It-Tlieta_L-Erbg魔a_Il-摩amis_Il-臓img魔a_Is-Sibt".split("_"), weekdaysShort: "摩ad_Tne_Tli_Erb_摩am_臓im_Sib".split("_"), weekdaysMin: "摩a_Tn_Tl_Er_摩a_臓i_Si".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Illum fil-]LT", nextDay: "[G魔ada fil-]LT", nextWeek: "dddd [fil-]LT", lastDay: "[Il-biera魔 fil-]LT", lastWeek: "dddd [li g魔adda] [fil-]LT", sameElse: "L" }, relativeTime: { future: "f鈥� %s", past: "%s ilu", s: "ftit sekondi", ss: "%d sekondi", m: "minuta", mm: "%d minuti", h: "sieg魔a", hh: "%d sieg魔at", d: "摹urnata", dd: "%d 摹ranet", M: "xahar", MM: "%d xhur", y: "sena", yy: "%d sni" }, dayOfMonthOrdinalParse: /\d{1,2}潞/, ordinal: "%d潞", week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "1b98": function (e, t, n) { }, "1bac": function (e, t, n) { var r = n("7d1f"), i = n("a029"), o = n("9934"); function a(e) { return r(e, o, i) } e.exports = a }, "1bc3": function (e, t, n) { var r = n("f772"); e.exports = function (e, t) { if (!r(e)) return e; var n, i; if (t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; if ("function" == typeof (n = e.valueOf) && !r(i = n.call(e))) return i; if (!t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; throw TypeError("Can't convert object to primitive value") } }, "1c3c": function (e, t, n) { var r = n("9e69"), i = n("2474"), o = n("9638"), a = n("a2be"), s = n("edfa"), c = n("ac41"), l = 1, u = 2, h = "[object Boolean]", f = "[object Date]", d = "[object Error]", p = "[object Map]", v = "[object Number]", m = "[object RegExp]", g = "[object Set]", y = "[object String]", b = "[object Symbol]", x = "[object ArrayBuffer]", w = "[object DataView]", _ = r ? r.prototype : void 0, C = _ ? _.valueOf : void 0; function M(e, t, n, r, _, M, O) { switch (n) { case w: if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1; e = e.buffer, t = t.buffer; case x: return !(e.byteLength != t.byteLength || !M(new i(e), new i(t))); case h: case f: case v: return o(+e, +t); case d: return e.name == t.name && e.message == t.message; case m: case y: return e == t + ""; case p: var k = s; case g: var S = r & l; if (k || (k = c), e.size != t.size && !S) return !1; var T = O.get(e); if (T) return T == t; r |= u, O.set(e, t); var A = a(k(e), k(t), r, _, M, O); return O["delete"](e), A; case b: if (C) return C.call(e) == C.call(t) }return !1 } e.exports = M }, "1cec": function (e, t, n) { var r = n("0b07"), i = n("2b3e"), o = r(i, "Promise"); e.exports = o }, "1cfd": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "1", 2: "2", 3: "3", 4: "4", 5: "5", 6: "6", 7: "7", 8: "8", 9: "9", 0: "0" }, n = function (e) { return 0 === e ? 0 : 1 === e ? 1 : 2 === e ? 2 : e % 100 >= 3 && e % 100 <= 10 ? 3 : e % 100 >= 11 ? 4 : 5 }, r = { s: ["兀賯賱 賲賳 孬丕賳賷丞", "孬丕賳賷丞 賵丕丨丿丞", ["孬丕賳賷鬲丕賳", "孬丕賳賷鬲賷賳"], "%d 孬賵丕賳", "%d 孬丕賳賷丞", "%d 孬丕賳賷丞"], m: ["兀賯賱 賲賳 丿賯賷賯丞", "丿賯賷賯丞 賵丕丨丿丞", ["丿賯賷賯鬲丕賳", "丿賯賷賯鬲賷賳"], "%d 丿賯丕卅賯", "%d 丿賯賷賯丞", "%d 丿賯賷賯丞"], h: ["兀賯賱 賲賳 爻丕毓丞", "爻丕毓丞 賵丕丨丿丞", ["爻丕毓鬲丕賳", "爻丕毓鬲賷賳"], "%d 爻丕毓丕鬲", "%d 爻丕毓丞", "%d 爻丕毓丞"], d: ["兀賯賱 賲賳 賷賵賲", "賷賵賲 賵丕丨丿", ["賷賵賲丕賳", "賷賵賲賷賳"], "%d 兀賷丕賲", "%d 賷賵賲賸丕", "%d 賷賵賲"], M: ["兀賯賱 賲賳 卮賴乇", "卮賴乇 賵丕丨丿", ["卮賴乇丕賳", "卮賴乇賷賳"], "%d 兀卮賴乇", "%d 卮賴乇丕", "%d 卮賴乇"], y: ["兀賯賱 賲賳 毓丕賲", "毓丕賲 賵丕丨丿", ["毓丕賲丕賳", "毓丕賲賷賳"], "%d 兀毓賵丕賲", "%d 毓丕賲賸丕", "%d 毓丕賲"] }, i = function (e) { return function (t, i, o, a) { var s = n(t), c = r[e][n(t)]; return 2 === s && (c = c[i ? 0 : 1]), c.replace(/%d/i, t) } }, o = ["賷賳丕賷乇", "賮亘乇丕賷乇", "賲丕乇爻", "兀亘乇賷賱", "賲丕賷賵", "賷賵賳賷賵", "賷賵賱賷賵", "兀睾爻胤爻", "爻亘鬲賲亘乇", "兀賰鬲賵亘乇", "賳賵賮賲亘乇", "丿賷爻賲亘乇"], a = e.defineLocale("ar-ly", { months: o, monthsShort: o, weekdays: "丕賱兀丨丿_丕賱廿孬賳賷賳_丕賱孬賱丕孬丕亍_丕賱兀乇亘毓丕亍_丕賱禺賲賷爻_丕賱噩賲毓丞_丕賱爻亘鬲".split("_"), weekdaysShort: "兀丨丿_廿孬賳賷賳_孬賱丕孬丕亍_兀乇亘毓丕亍_禺賲賷爻_噩賲毓丞_爻亘鬲".split("_"), weekdaysMin: "丨_賳_孬_乇_禺_噩_爻".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "D/鈥廙/鈥廦YYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, meridiemParse: /氐|賲/, isPM: function (e) { return "賲" === e }, meridiem: function (e, t, n) { return e < 12 ? "氐" : "賲" }, calendar: { sameDay: "[丕賱賷賵賲 毓賳丿 丕賱爻丕毓丞] LT", nextDay: "[睾丿賸丕 毓賳丿 丕賱爻丕毓丞] LT", nextWeek: "dddd [毓賳丿 丕賱爻丕毓丞] LT", lastDay: "[兀賲爻 毓賳丿 丕賱爻丕毓丞] LT", lastWeek: "dddd [毓賳丿 丕賱爻丕毓丞] LT", sameElse: "L" }, relativeTime: { future: "亘毓丿 %s", past: "賲賳匕 %s", s: i("s"), ss: i("s"), m: i("m"), mm: i("m"), h: i("h"), hh: i("h"), d: i("d"), dd: i("d"), M: i("M"), MM: i("M"), y: i("y"), yy: i("y") }, preparse: function (e) { return e.replace(/貙/g, ",") }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })).replace(/,/g, "貙") }, week: { dow: 6, doy: 12 } }); return a
+                    }))
+                }, "1d31": function (e, t, n) { "use strict"; n.r(t), n.d(t, "Tree", (function () { return x })), n.d(t, "TreeNode", (function () { return _["a"] })); var r = n("6042"), i = n.n(r), o = n("9b57"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("4d91"), u = n("4d26"), h = n.n(u), f = n("d96e"), d = n.n(f), p = n("daa3"), v = n("7b05"), m = n("b488"), g = n("58c1"), y = n("c9a4"); function b() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = {}; return e.forEach((function (e) { t[e] = function () { this.needSyncKeys[e] = !0 } })), t } var x = { name: "Tree", mixins: [m["a"]], props: Object(p["t"])({ prefixCls: l["a"].string, tabIndex: l["a"].oneOfType([l["a"].string, l["a"].number]), children: l["a"].any, treeData: l["a"].array, showLine: l["a"].bool, showIcon: l["a"].bool, icon: l["a"].oneOfType([l["a"].object, l["a"].func]), focusable: l["a"].bool, selectable: l["a"].bool, disabled: l["a"].bool, multiple: l["a"].bool, checkable: l["a"].oneOfType([l["a"].object, l["a"].bool]), checkStrictly: l["a"].bool, draggable: l["a"].bool, defaultExpandParent: l["a"].bool, autoExpandParent: l["a"].bool, defaultExpandAll: l["a"].bool, defaultExpandedKeys: l["a"].array, expandedKeys: l["a"].array, defaultCheckedKeys: l["a"].array, checkedKeys: l["a"].oneOfType([l["a"].array, l["a"].object]), defaultSelectedKeys: l["a"].array, selectedKeys: l["a"].array, loadData: l["a"].func, loadedKeys: l["a"].array, filterTreeNode: l["a"].func, openTransitionName: l["a"].string, openAnimation: l["a"].oneOfType([l["a"].string, l["a"].object]), switcherIcon: l["a"].any, _propsSymbol: l["a"].any }, { prefixCls: "rc-tree", showLine: !1, showIcon: !0, selectable: !0, multiple: !1, checkable: !1, disabled: !1, checkStrictly: !1, draggable: !1, defaultExpandParent: !0, autoExpandParent: !1, defaultExpandAll: !1, defaultExpandedKeys: [], defaultCheckedKeys: [], defaultSelectedKeys: [] }), data: function () { d()(this.$props.__propsSymbol__, "must pass __propsSymbol__"), d()(this.$props.children, "please use children prop replace slots.default"), this.needSyncKeys = {}, this.domTreeNodes = {}; var e = { _posEntities: new Map, _keyEntities: new Map, _expandedKeys: [], _selectedKeys: [], _checkedKeys: [], _halfCheckedKeys: [], _loadedKeys: [], _loadingKeys: [], _treeNode: [], _prevProps: null, _dragOverNodeKey: "", _dropPosition: null, _dragNodesKeys: [] }; return c()({}, e, this.getDerivedState(Object(p["l"])(this), e)) }, provide: function () { return { vcTree: this } }, watch: c()({}, b(["treeData", "children", "expandedKeys", "autoExpandParent", "selectedKeys", "checkedKeys", "loadedKeys"]), { __propsSymbol__: function () { this.setState(this.getDerivedState(Object(p["l"])(this), this.$data)), this.needSyncKeys = {} } }), methods: { getDerivedState: function (e, t) { var n = t._prevProps, r = { _prevProps: c()({}, e) }, i = this; function o(t) { return !n && t in e || n && i.needSyncKeys[t] } var s = null; if (o("treeData") ? s = Object(y["g"])(this.$createElement, e.treeData) : o("children") && (s = e.children), s) { r._treeNode = s; var l = Object(y["h"])(s); r._keyEntities = l.keyEntities } var u = r._keyEntities || t._keyEntities; if (o("expandedKeys") || n && o("autoExpandParent") ? r._expandedKeys = e.autoExpandParent || !n && e.defaultExpandParent ? Object(y["f"])(e.expandedKeys, u) : e.expandedKeys : !n && e.defaultExpandAll ? r._expandedKeys = [].concat(a()(u.keys())) : !n && e.defaultExpandedKeys && (r._expandedKeys = e.autoExpandParent || e.defaultExpandParent ? Object(y["f"])(e.defaultExpandedKeys, u) : e.defaultExpandedKeys), e.selectable && (o("selectedKeys") ? r._selectedKeys = Object(y["d"])(e.selectedKeys, e) : !n && e.defaultSelectedKeys && (r._selectedKeys = Object(y["d"])(e.defaultSelectedKeys, e))), e.checkable) { var h = void 0; if (o("checkedKeys") ? h = Object(y["m"])(e.checkedKeys) || {} : !n && e.defaultCheckedKeys ? h = Object(y["m"])(e.defaultCheckedKeys) || {} : s && (h = Object(y["m"])(e.checkedKeys) || { checkedKeys: t._checkedKeys, halfCheckedKeys: t._halfCheckedKeys }), h) { var f = h, d = f.checkedKeys, p = void 0 === d ? [] : d, v = f.halfCheckedKeys, m = void 0 === v ? [] : v; if (!e.checkStrictly) { var g = Object(y["e"])(p, !0, u); p = g.checkedKeys, m = g.halfCheckedKeys } r._checkedKeys = p, r._halfCheckedKeys = m } } return o("loadedKeys") && (r._loadedKeys = e.loadedKeys), r }, onNodeDragStart: function (e, t) { var n = this.$data._expandedKeys, r = t.eventKey, i = Object(p["p"])(t)["default"]; this.dragNode = t, this.setState({ _dragNodesKeys: Object(y["i"])("function" === typeof i ? i() : i, t), _expandedKeys: Object(y["b"])(n, r) }), this.__emit("dragstart", { event: e, node: t }) }, onNodeDragEnter: function (e, t) { var n = this, r = this.$data._expandedKeys, i = t.pos, o = t.eventKey; if (this.dragNode && t.$refs.selectHandle) { var a = Object(y["c"])(e, t); this.dragNode.eventKey !== o || 0 !== a ? setTimeout((function () { n.setState({ _dragOverNodeKey: o, _dropPosition: a }), n.delayedDragEnterLogic || (n.delayedDragEnterLogic = {}), Object.keys(n.delayedDragEnterLogic).forEach((function (e) { clearTimeout(n.delayedDragEnterLogic[e]) })), n.delayedDragEnterLogic[i] = setTimeout((function () { var i = Object(y["a"])(r, o); Object(p["s"])(n, "expandedKeys") || n.setState({ _expandedKeys: i }), n.__emit("dragenter", { event: e, node: t, expandedKeys: i }) }), 400) }), 0) : this.setState({ _dragOverNodeKey: "", _dropPosition: null }) } }, onNodeDragOver: function (e, t) { var n = t.eventKey, r = this.$data, i = r._dragOverNodeKey, o = r._dropPosition; if (this.dragNode && n === i && t.$refs.selectHandle) { var a = Object(y["c"])(e, t); if (a === o) return; this.setState({ _dropPosition: a }) } this.__emit("dragover", { event: e, node: t }) }, onNodeDragLeave: function (e, t) { this.setState({ _dragOverNodeKey: "" }), this.__emit("dragleave", { event: e, node: t }) }, onNodeDragEnd: function (e, t) { this.setState({ _dragOverNodeKey: "" }), this.__emit("dragend", { event: e, node: t }), this.dragNode = null }, onNodeDrop: function (e, t) { var n = this.$data, r = n._dragNodesKeys, i = void 0 === r ? [] : r, o = n._dropPosition, a = t.eventKey, s = t.pos; if (this.setState({ _dragOverNodeKey: "" }), -1 === i.indexOf(a)) { var c = Object(y["n"])(s), l = { event: e, node: t, dragNode: this.dragNode, dragNodesKeys: i.slice(), dropPosition: o + Number(c[c.length - 1]), dropToGap: !1 }; 0 !== o && (l.dropToGap = !0), this.__emit("drop", l), this.dragNode = null } else d()(!1, "Can not drop to dragNode(include it's children node)") }, onNodeClick: function (e, t) { this.__emit("click", e, t) }, onNodeDoubleClick: function (e, t) { this.__emit("dblclick", e, t) }, onNodeSelect: function (e, t) { var n = this.$data._selectedKeys, r = this.$data._keyEntities, i = this.$props.multiple, o = Object(p["l"])(t), a = o.selected, s = o.eventKey, c = !a; n = c ? i ? Object(y["a"])(n, s) : [s] : Object(y["b"])(n, s); var l = n.map((function (e) { var t = r.get(e); return t ? t.node : null })).filter((function (e) { return e })); this.setUncontrolledState({ _selectedKeys: n }); var u = { event: "select", selected: c, node: t, selectedNodes: l, nativeEvent: e }; this.__emit("update:selectedKeys", n), this.__emit("select", n, u) }, onNodeCheck: function (e, t, n) { var r = this.$data, i = r._keyEntities, o = r._checkedKeys, a = r._halfCheckedKeys, s = this.$props.checkStrictly, c = Object(p["l"])(t), l = c.eventKey, u = void 0, h = { event: "check", node: t, checked: n, nativeEvent: e }; if (s) { var f = n ? Object(y["a"])(o, l) : Object(y["b"])(o, l), d = Object(y["b"])(a, l); u = { checked: f, halfChecked: d }, h.checkedNodes = f.map((function (e) { return i.get(e) })).filter((function (e) { return e })).map((function (e) { return e.node })), this.setUncontrolledState({ _checkedKeys: f }) } else { var v = Object(y["e"])([l], n, i, { checkedKeys: o, halfCheckedKeys: a }), m = v.checkedKeys, g = v.halfCheckedKeys; u = m, h.checkedNodes = [], h.checkedNodesPositions = [], h.halfCheckedKeys = g, m.forEach((function (e) { var t = i.get(e); if (t) { var n = t.node, r = t.pos; h.checkedNodes.push(n), h.checkedNodesPositions.push({ node: n, pos: r }) } })), this.setUncontrolledState({ _checkedKeys: m, _halfCheckedKeys: g }) } this.__emit("check", u, h) }, onNodeLoad: function (e) { var t = this; return new Promise((function (n) { t.setState((function (r) { var i = r._loadedKeys, o = void 0 === i ? [] : i, a = r._loadingKeys, s = void 0 === a ? [] : a, c = t.$props.loadData, l = Object(p["l"])(e), u = l.eventKey; if (!c || -1 !== o.indexOf(u) || -1 !== s.indexOf(u)) return {}; var h = c(e); return h.then((function () { var r = t.$data, i = r._loadedKeys, o = r._loadingKeys, a = Object(y["a"])(i, u), s = Object(y["b"])(o, u); t.__emit("load", a, { event: "load", node: e }), t.setUncontrolledState({ _loadedKeys: a }), t.setState({ _loadingKeys: s }), n() })), { _loadingKeys: Object(y["a"])(s, u) } })) })) }, onNodeExpand: function (e, t) { var n = this, r = this.$data._expandedKeys, i = this.$props.loadData, o = Object(p["l"])(t), a = o.eventKey, s = o.expanded, c = r.indexOf(a), l = !s; if (d()(s && -1 !== c || !s && -1 === c, "Expand state not sync with index check"), r = l ? Object(y["a"])(r, a) : Object(y["b"])(r, a), this.setUncontrolledState({ _expandedKeys: r }), this.__emit("expand", r, { node: t, expanded: l, nativeEvent: e }), this.__emit("update:expandedKeys", r), l && i) { var u = this.onNodeLoad(t); return u ? u.then((function () { n.setUncontrolledState({ _expandedKeys: r }) })) : null } return null }, onNodeMouseEnter: function (e, t) { this.__emit("mouseenter", { event: e, node: t }) }, onNodeMouseLeave: function (e, t) { this.__emit("mouseleave", { event: e, node: t }) }, onNodeContextMenu: function (e, t) { e.preventDefault(), this.__emit("rightClick", { event: e, node: t }) }, setUncontrolledState: function (e) { var t = !1, n = {}, r = Object(p["l"])(this); Object.keys(e).forEach((function (i) { i.replace("_", "") in r || (t = !0, n[i] = e[i]) })), t && this.setState(n) }, registerTreeNode: function (e, t) { t ? this.domTreeNodes[e] = t : delete this.domTreeNodes[e] }, isKeyChecked: function (e) { var t = this.$data._checkedKeys, n = void 0 === t ? [] : t; return -1 !== n.indexOf(e) }, renderTreeNode: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, r = this.$data, i = r._keyEntities, o = r._expandedKeys, a = void 0 === o ? [] : o, s = r._selectedKeys, c = void 0 === s ? [] : s, l = r._halfCheckedKeys, u = void 0 === l ? [] : l, h = r._loadedKeys, f = void 0 === h ? [] : h, d = r._loadingKeys, p = void 0 === d ? [] : d, m = r._dragOverNodeKey, g = r._dropPosition, b = Object(y["k"])(n, t), x = e.key; return x || void 0 !== x && null !== x || (x = b), i.get(x) ? Object(v["a"])(e, { props: { eventKey: x, expanded: -1 !== a.indexOf(x), selected: -1 !== c.indexOf(x), loaded: -1 !== f.indexOf(x), loading: -1 !== p.indexOf(x), checked: this.isKeyChecked(x), halfChecked: -1 !== u.indexOf(x), pos: b, dragOver: m === x && 0 === g, dragOverGapTop: m === x && -1 === g, dragOverGapBottom: m === x && 1 === g }, key: x }) : (Object(y["o"])(), null) } }, render: function () { var e = this, t = arguments[0], n = this.$data._treeNode, r = this.$props, o = r.prefixCls, a = r.focusable, s = r.showLine, c = r.tabIndex, l = void 0 === c ? 0 : c; return t("ul", { class: h()(o, i()({}, o + "-show-line", s)), attrs: { role: "tree", unselectable: "on", tabIndex: a ? l : null } }, [Object(y["l"])(n, (function (t, n) { return e.renderTreeNode(t, n) }))]) } }, w = Object(g["a"])(x), _ = n("cdd1"); x.TreeNode = _["a"], w.TreeNode = _["a"], t["default"] = w }, "1d73": function (e, t, n) { "use strict"; var r = this && this.__importDefault || function (e) { return e && e.__esModule ? e : { default: e } }; Object.defineProperty(t, "__esModule", { value: !0 }); var i = r(n("7746")); t.generate = i.default; var o = { red: "#F5222D", volcano: "#FA541C", orange: "#FA8C16", gold: "#FAAD14", yellow: "#FADB14", lime: "#A0D911", green: "#52C41A", cyan: "#13C2C2", blue: "#1890FF", geekblue: "#2F54EB", purple: "#722ED1", magenta: "#EB2F96", grey: "#666666" }; t.presetPrimaryColors = o; var a = {}; t.presetPalettes = a, Object.keys(o).forEach((function (e) { a[e] = i.default(o[e]), a[e].primary = a[e][5] })); var s = a.red; t.red = s; var c = a.volcano; t.volcano = c; var l = a.gold; t.gold = l; var u = a.orange; t.orange = u; var h = a.yellow; t.yellow = h; var f = a.lime; t.lime = f; var d = a.green; t.green = d; var p = a.cyan; t.cyan = p; var v = a.blue; t.blue = v; var m = a.geekblue; t.geekblue = m; var g = a.purple; t.purple = g; var y = a.magenta; t.magenta = y; var b = a.grey; t.grey = b }, "1ec9": function (e, t, n) { var r = n("f772"), i = n("e53d").document, o = r(i) && r(i.createElement); e.exports = function (e) { return o ? i.createElement(e) : {} } }, "1efc": function (e, t) { function n(e) { var t = this.has(e) && delete this.__data__[e]; return this.size -= t ? 1 : 0, t } e.exports = n }, "1fa8": function (e, t, n) { var r = n("cb7c"); e.exports = function (e, t, n, i) { try { return i ? t(r(n)[0], n[1]) : t(n) } catch (a) { var o = e["return"]; throw void 0 !== o && r(o.call(e)), a } } }, "1fb5": function (e, t, n) { "use strict"; t.byteLength = u, t.toByteArray = f, t.fromByteArray = v; for (var r = [], i = [], o = "undefined" !== typeof Uint8Array ? Uint8Array : Array, a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s = 0, c = a.length; s < c; ++s)r[s] = a[s], i[a.charCodeAt(s)] = s; function l(e) { var t = e.length; if (t % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4"); var n = e.indexOf("="); -1 === n && (n = t); var r = n === t ? 0 : 4 - n % 4; return [n, r] } function u(e) { var t = l(e), n = t[0], r = t[1]; return 3 * (n + r) / 4 - r } function h(e, t, n) { return 3 * (t + n) / 4 - n } function f(e) { var t, n, r = l(e), a = r[0], s = r[1], c = new o(h(e, a, s)), u = 0, f = s > 0 ? a - 4 : a; for (n = 0; n < f; n += 4)t = i[e.charCodeAt(n)] << 18 | i[e.charCodeAt(n + 1)] << 12 | i[e.charCodeAt(n + 2)] << 6 | i[e.charCodeAt(n + 3)], c[u++] = t >> 16 & 255, c[u++] = t >> 8 & 255, c[u++] = 255 & t; return 2 === s && (t = i[e.charCodeAt(n)] << 2 | i[e.charCodeAt(n + 1)] >> 4, c[u++] = 255 & t), 1 === s && (t = i[e.charCodeAt(n)] << 10 | i[e.charCodeAt(n + 1)] << 4 | i[e.charCodeAt(n + 2)] >> 2, c[u++] = t >> 8 & 255, c[u++] = 255 & t), c } function d(e) { return r[e >> 18 & 63] + r[e >> 12 & 63] + r[e >> 6 & 63] + r[63 & e] } function p(e, t, n) { for (var r, i = [], o = t; o < n; o += 3)r = (e[o] << 16 & 16711680) + (e[o + 1] << 8 & 65280) + (255 & e[o + 2]), i.push(d(r)); return i.join("") } function v(e) { for (var t, n = e.length, i = n % 3, o = [], a = 16383, s = 0, c = n - i; s < c; s += a)o.push(p(e, s, s + a > c ? c : s + a)); return 1 === i ? (t = e[n - 1], o.push(r[t >> 2] + r[t << 4 & 63] + "==")) : 2 === i && (t = (e[n - 2] << 8) + e[n - 1], o.push(r[t >> 10] + r[t >> 4 & 63] + r[t << 2 & 63] + "=")), o.join("") } i["-".charCodeAt(0)] = 62, i["_".charCodeAt(0)] = 63 }, "1fc1": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t) { var n = e.split("_"); return t % 10 === 1 && t % 100 !== 11 ? n[0] : t % 10 >= 2 && t % 10 <= 4 && (t % 100 < 10 || t % 100 >= 20) ? n[1] : n[2] } function n(e, n, r) { var i = { ss: n ? "褋械泻褍薪写邪_褋械泻褍薪写褘_褋械泻褍薪写" : "褋械泻褍薪写褍_褋械泻褍薪写褘_褋械泻褍薪写", mm: n ? "褏胁褨谢褨薪邪_褏胁褨谢褨薪褘_褏胁褨谢褨薪" : "褏胁褨谢褨薪褍_褏胁褨谢褨薪褘_褏胁褨谢褨薪", hh: n ? "谐邪写蟹褨薪邪_谐邪写蟹褨薪褘_谐邪写蟹褨薪" : "谐邪写蟹褨薪褍_谐邪写蟹褨薪褘_谐邪写蟹褨薪", dd: "写蟹械薪褜_写薪褨_写蟹褢薪", MM: "屑械褋褟褑_屑械褋褟褑褘_屑械褋褟褑邪褳", yy: "谐芯写_谐邪写褘_谐邪写芯褳" }; return "m" === r ? n ? "褏胁褨谢褨薪邪" : "褏胁褨谢褨薪褍" : "h" === r ? n ? "谐邪写蟹褨薪邪" : "谐邪写蟹褨薪褍" : e + " " + t(i[r], +e) } var r = e.defineLocale("be", { months: { format: "褋褌褍写蟹械薪褟_谢褞褌邪谐邪_褋邪泻邪胁褨泻邪_泻褉邪褋邪胁褨泻邪_褌褉邪褳薪褟_褔褝褉胁械薪褟_谢褨锌械薪褟_卸薪褨褳薪褟_胁械褉邪褋薪褟_泻邪褋褌褉褘褔薪褨泻邪_谢褨褋褌邪锌邪写邪_褋薪械卸薪褟".split("_"), standalone: "褋褌褍写蟹械薪褜_谢褞褌褘_褋邪泻邪胁褨泻_泻褉邪褋邪胁褨泻_褌褉邪胁械薪褜_褔褝褉胁械薪褜_谢褨锌械薪褜_卸薪褨胁械薪褜_胁械褉邪褋械薪褜_泻邪褋褌褉褘褔薪褨泻_谢褨褋褌邪锌邪写_褋薪械卸邪薪褜".split("_") }, monthsShort: "褋褌褍写_谢褞褌_褋邪泻_泻褉邪褋_褌褉邪胁_褔褝褉胁_谢褨锌_卸薪褨胁_胁械褉_泻邪褋褌_谢褨褋褌_褋薪械卸".split("_"), weekdays: { format: "薪褟写蟹械谢褞_锌邪薪褟写蟹械谢邪泻_邪褳褌芯褉邪泻_褋械褉邪写褍_褔邪褑胁械褉_锌褟褌薪褨褑褍_褋褍斜芯褌褍".split("_"), standalone: "薪褟写蟹械谢褟_锌邪薪褟写蟹械谢邪泻_邪褳褌芯褉邪泻_褋械褉邪写邪_褔邪褑胁械褉_锌褟褌薪褨褑邪_褋褍斜芯褌邪".split("_"), isFormat: /\[ ?[校褍褳] ?(?:屑褨薪褍谢褍褞|薪邪褋褌褍锌薪褍褞)? ?\] ?dddd/ }, weekdaysShort: "薪写_锌薪_邪褌_褋褉_褔褑_锌褌_褋斜".split("_"), weekdaysMin: "薪写_锌薪_邪褌_褋褉_褔褑_锌褌_褋斜".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY 谐.", LLL: "D MMMM YYYY 谐., HH:mm", LLLL: "dddd, D MMMM YYYY 谐., HH:mm" }, calendar: { sameDay: "[小褢薪薪褟 褳] LT", nextDay: "[袟邪褳褌褉邪 褳] LT", lastDay: "[校褔芯褉邪 褳] LT", nextWeek: function () { return "[校] dddd [褳] LT" }, lastWeek: function () { switch (this.day()) { case 0: case 3: case 5: case 6: return "[校 屑褨薪褍谢褍褞] dddd [褳] LT"; case 1: case 2: case 4: return "[校 屑褨薪褍谢褘] dddd [褳] LT" } }, sameElse: "L" }, relativeTime: { future: "锌褉邪蟹 %s", past: "%s 褌邪屑褍", s: "薪械泻邪谢褜泻褨 褋械泻褍薪写", m: n, mm: n, h: n, hh: n, d: "写蟹械薪褜", dd: n, M: "屑械褋褟褑", MM: n, y: "谐芯写", yy: n }, meridiemParse: /薪芯褔褘|褉邪薪褨褑褘|写薪褟|胁械褔邪褉邪/, isPM: function (e) { return /^(写薪褟|胁械褔邪褉邪)$/.test(e) }, meridiem: function (e, t, n) { return e < 4 ? "薪芯褔褘" : e < 12 ? "褉邪薪褨褑褘" : e < 17 ? "写薪褟" : "胁械褔邪褉邪" }, dayOfMonthOrdinalParse: /\d{1,2}-(褨|褘|谐邪)/, ordinal: function (e, t) { switch (t) { case "M": case "d": case "DDD": case "w": case "W": return e % 10 !== 2 && e % 10 !== 3 || e % 100 === 12 || e % 100 === 13 ? e + "-褘" : e + "-褨"; case "D": return e + "-谐邪"; default: return e } }, week: { dow: 1, doy: 7 } }); return r
+                    }))
+                }, "1fc8": function (e, t, n) { var r = n("4245"); function i(e, t) { var n = r(this, e), i = n.size; return n.set(e, t), this.size += n.size == i ? 0 : 1, this } e.exports = i }, "201b": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("ka", { months: "醿樶儛醿溼儠醿愥儬醿榑醿椺償醿戓償醿犪儠醿愥儦醿榑醿涐儛醿犪儮醿榑醿愥優醿犪儤醿氠儤_醿涐儛醿樶儭醿榑醿樶儠醿溼儤醿♂儤_醿樶儠醿氠儤醿♂儤_醿愥儝醿曖儤醿♂儮醿漘醿♂償醿メ儮醿斸儧醿戓償醿犪儤_醿濁儱醿⑨儩醿涐儜醿斸儬醿榑醿溼儩醿斸儧醿戓償醿犪儤_醿撫償醿欋償醿涐儜醿斸儬醿�".split("_"), monthsShort: "醿樶儛醿淿醿椺償醿慱醿涐儛醿燺醿愥優醿燺醿涐儛醿榑醿樶儠醿淿醿樶儠醿歘醿愥儝醿昣醿♂償醿醿濁儱醿醿溼儩醿擾醿撫償醿�".split("_"), weekdays: { standalone: "醿欋儠醿樶儬醿恄醿濁儬醿ㄡ儛醿戓儛醿椺儤_醿♂儛醿涐儴醿愥儜醿愥儣醿榑醿濁儣醿儴醿愥儜醿愥儣醿榑醿儯醿椺儴醿愥儜醿愥儣醿榑醿炨儛醿犪儛醿♂儥醿斸儠醿榑醿ㄡ儛醿戓儛醿椺儤".split("_"), format: "醿欋儠醿樶儬醿愥儭_醿濁儬醿ㄡ儛醿戓儛醿椺儭_醿♂儛醿涐儴醿愥儜醿愥儣醿醿濁儣醿儴醿愥儜醿愥儣醿醿儯醿椺儴醿愥儜醿愥儣醿醿炨儛醿犪儛醿♂儥醿斸儠醿醿ㄡ儛醿戓儛醿椺儭".split("_"), isFormat: /(醿儤醿溼儛|醿ㄡ償醿涐儞醿斸儝)/ }, weekdaysShort: "醿欋儠醿榑醿濁儬醿╛醿♂儛醿沖醿濁儣醿甠醿儯醿梍醿炨儛醿燺醿ㄡ儛醿�".split("_"), weekdaysMin: "醿欋儠_醿濁儬_醿♂儛_醿濁儣_醿儯_醿炨儛_醿ㄡ儛".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[醿撫儲醿斸儭] LT[-醿栣償]", nextDay: "[醿儠醿愥儦] LT[-醿栣償]", lastDay: "[醿掅儯醿ㄡ儤醿淽 LT[-醿栣償]", nextWeek: "[醿ㄡ償醿涐儞醿斸儝] dddd LT[-醿栣償]", lastWeek: "[醿儤醿溼儛] dddd LT-醿栣償", sameElse: "L" }, relativeTime: { future: function (e) { return e.replace(/(醿儛醿泑醿儯醿梶醿♂儛醿愥儣|醿償醿殀醿撫儲|醿椺儠)(醿榺醿�)/, (function (e, t, n) { return "醿�" === n ? t + "醿ㄡ儤" : t + n + "醿ㄡ儤" })) }, past: function (e) { return /(醿儛醿涐儤|醿儯醿椺儤|醿♂儛醿愥儣醿榺醿撫儲醿攟醿椺儠醿�)/.test(e) ? e.replace(/(醿榺醿�)$/, "醿樶儭 醿儤醿�") : /醿償醿氠儤/.test(e) ? e.replace(/醿償醿氠儤$/, "醿儦醿樶儭 醿儤醿�") : e }, s: "醿犪儛醿涐儞醿斸儨醿樶儧醿� 醿儛醿涐儤", ss: "%d 醿儛醿涐儤", m: "醿儯醿椺儤", mm: "%d 醿儯醿椺儤", h: "醿♂儛醿愥儣醿�", hh: "%d 醿♂儛醿愥儣醿�", d: "醿撫儲醿�", dd: "%d 醿撫儲醿�", M: "醿椺儠醿�", MM: "%d 醿椺儠醿�", y: "醿償醿氠儤", yy: "%d 醿償醿氠儤" }, dayOfMonthOrdinalParse: /0|1-醿氠儤|醿涐償-\d{1,2}|\d{1,2}-醿�/, ordinal: function (e) { return 0 === e ? e : 1 === e ? e + "-醿氠儤" : e < 20 || e <= 100 && e % 20 === 0 || e % 100 === 0 ? "醿涐償-" + e : e + "-醿�" }, week: { dow: 1, doy: 7 } }); return t
+                    }))
+                }, "20ec": function (e, t) { function n(e, t) { return function (n) { return null != n && n[e] === t && (void 0 !== t || e in Object(n)) } } e.exports = n }, "20fd": function (e, t, n) { "use strict"; var r = n("d9f6"), i = n("aebd"); e.exports = function (e, t, n) { t in e ? r.f(e, t, i(0, n)) : e[t] = n } }, "214f": function (e, t, n) { "use strict"; n("b0c5"); var r = n("2aba"), i = n("32e9"), o = n("79e5"), a = n("be13"), s = n("2b4c"), c = n("520a"), l = s("species"), u = !o((function () { var e = /./; return e.exec = function () { var e = []; return e.groups = { a: "7" }, e }, "7" !== "".replace(e, "$<a>") })), h = function () { var e = /(?:)/, t = e.exec; e.exec = function () { return t.apply(this, arguments) }; var n = "ab".split(e); return 2 === n.length && "a" === n[0] && "b" === n[1] }(); e.exports = function (e, t, n) { var f = s(e), d = !o((function () { var t = {}; return t[f] = function () { return 7 }, 7 != ""[e](t) })), p = d ? !o((function () { var t = !1, n = /a/; return n.exec = function () { return t = !0, null }, "split" === e && (n.constructor = {}, n.constructor[l] = function () { return n }), n[f](""), !t })) : void 0; if (!d || !p || "replace" === e && !u || "split" === e && !h) { var v = /./[f], m = n(a, f, ""[e], (function (e, t, n, r, i) { return t.exec === c ? d && !i ? { done: !0, value: v.call(t, n, r) } : { done: !0, value: e.call(n, t, r) } : { done: !1 } })), g = m[0], y = m[1]; r(String.prototype, e, g), i(RegExp.prototype, f, 2 == t ? function (e, t) { return y.call(e, this, t) } : function (e) { return y.call(e, this) }) } } }, "217d": function (e, t) { function n(e, t) { var n, r = 0, i = e.length; for (r; r < i; r++)if (n = t(e[r], r), !1 === n) break } function r(e) { return "[object Array]" === Object.prototype.toString.apply(e) } function i(e) { return "function" === typeof e } e.exports = { isFunction: i, isArray: r, each: n } }, 2286: function (e, t, n) { var r = n("85e3"), i = Math.max; function o(e, t, n) { return t = i(void 0 === t ? e.length - 1 : t, 0), function () { var o = arguments, a = -1, s = i(o.length - t, 0), c = Array(s); while (++a < s) c[a] = o[t + a]; a = -1; var l = Array(t + 1); while (++a < t) l[a] = o[a]; return l[t] = n(c), r(e, this, l) } } e.exports = o }, "22f8": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("ko", { months: "1鞗擾2鞗擾3鞗擾4鞗擾5鞗擾6鞗擾7鞗擾8鞗擾9鞗擾10鞗擾11鞗擾12鞗�".split("_"), monthsShort: "1鞗擾2鞗擾3鞗擾4鞗擾5鞗擾6鞗擾7鞗擾8鞗擾9鞗擾10鞗擾11鞗擾12鞗�".split("_"), weekdays: "鞚检殧鞚糭鞗旍殧鞚糭頇旍殧鞚糭靾橃殧鞚糭氇╈殧鞚糭旮堨殧鞚糭韱犾殧鞚�".split("_"), weekdaysShort: "鞚糭鞗擾頇擾靾榑氇旮坃韱�".split("_"), weekdaysMin: "鞚糭鞗擾頇擾靾榑氇旮坃韱�".split("_"), longDateFormat: { LT: "A h:mm", LTS: "A h:mm:ss", L: "YYYY.MM.DD.", LL: "YYYY雲� MMMM D鞚�", LLL: "YYYY雲� MMMM D鞚� A h:mm", LLLL: "YYYY雲� MMMM D鞚� dddd A h:mm", l: "YYYY.MM.DD.", ll: "YYYY雲� MMMM D鞚�", lll: "YYYY雲� MMMM D鞚� A h:mm", llll: "YYYY雲� MMMM D鞚� dddd A h:mm" }, calendar: { sameDay: "鞓る姌 LT", nextDay: "雮挫澕 LT", nextWeek: "dddd LT", lastDay: "鞏挫牅 LT", lastWeek: "歆�雮滌< dddd LT", sameElse: "L" }, relativeTime: { future: "%s 頉�", past: "%s 鞝�", s: "氇� 齑�", ss: "%d齑�", m: "1攵�", mm: "%d攵�", h: "頃� 鞁滉皠", hh: "%d鞁滉皠", d: "頃橂(", dd: "%d鞚�", M: "頃� 雼�", MM: "%d雼�", y: "鞚� 雲�", yy: "%d雲�" }, dayOfMonthOrdinalParse: /\d{1,2}(鞚紎鞗攟欤�)/, ordinal: function (e, t) { switch (t) { case "d": case "D": case "DDD": return e + "鞚�"; case "M": return e + "鞗�"; case "w": case "W": return e + "欤�"; default: return e } }, meridiemParse: /鞓れ爠|鞓ろ泟/, isPM: function (e) { return "鞓ろ泟" === e }, meridiem: function (e, t, n) { return e < 12 ? "鞓れ爠" : "鞓ろ泟" } }); return t
+                    }))
+                }, "230e": function (e, t, n) { var r = n("d3f4"), i = n("7726").document, o = r(i) && r(i.createElement); e.exports = function (e) { return o ? i.createElement(e) : {} } }, "234d": function (e, t, n) { var r = n("e380"), i = 500; function o(e) { var t = r(e, (function (e) { return n.size === i && n.clear(), e })), n = t.cache; return t } e.exports = o }, "23c6": function (e, t, n) { var r = n("2d95"), i = n("2b4c")("toStringTag"), o = "Arguments" == r(function () { return arguments }()), a = function (e, t) { try { return e[t] } catch (n) { } }; e.exports = function (e) { var t, n, s; return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof (n = a(t = Object(e), i)) ? n : o ? r(t) : "Object" == (s = r(t)) && "function" == typeof t.callee ? "Arguments" : s } }, "23e2": function (e, t, n) { var r = n("242e"); function i(e, t, n, i) { return r(e, (function (e, r, o) { t(i, n(e), r, o) })), i } e.exports = i }, 2411: function (e, t, n) { var r = n("f909"), i = n("2ec1"), o = i((function (e, t, n, i) { r(e, t, n, i) })); e.exports = o }, "241e": function (e, t, n) { var r = n("25eb"); e.exports = function (e) { return Object(r(e)) } }, 2421: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "佟", 2: "佗", 3: "伲", 4: "伽", 5: "佶", 6: "佴", 7: "侑", 8: "侉", 9: "侃", 0: "贍" }, n = { "佟": "1", "佗": "2", "伲": "3", "伽": "4", "佶": "5", "佴": "6", "侑": "7", "侉": "8", "侃": "9", "贍": "0" }, r = ["讴丕賳賵賳蹖 丿賵賵蹠賲", "卮賵亘丕鬲", "卅丕夭丕乇", "賳蹖爻丕賳", "卅丕蹖丕乇", "丨賵夭蹠蹖乇丕賳", "鬲蹠賲賲賵夭", "卅丕亘", "卅蹠蹖賱賵賵賱", "鬲卮乇蹖賳蹖 蹖蹠賰蹠賲", "鬲卮乇蹖賳蹖 丿賵賵蹠賲", "賰丕賳賵賳蹖 蹖蹠讴蹠賲"], i = e.defineLocale("ku", { months: r, monthsShort: r, weekdays: "蹖賴鈥屬冐促団�屬呝呝団�宊丿賵賵卮賴鈥屬呝呝団�宊爻蹘卮賴鈥屬呝呝団�宊趩賵丕乇卮賴鈥屬呝呝団�宊倬蹘賳噩卮賴鈥屬呝呝団�宊賴賴鈥屰屬嗃宊卮賴鈥屬呝呝団��".split("_"), weekdaysShort: "蹖賴鈥屬冐促団�屬卂丿賵賵卮賴鈥屬卂爻蹘卮賴鈥屬卂趩賵丕乇卮賴鈥屬卂倬蹘賳噩卮賴鈥屬卂賴賴鈥屰屬嗃宊卮賴鈥屬呝呝団��".split("_"), weekdaysMin: "蹖_丿_爻_趩_倬_賴_卮".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, meridiemParse: /卅蹘賵丕乇賴鈥寍亘賴鈥屰屫з嗃�/, isPM: function (e) { return /卅蹘賵丕乇賴鈥�/.test(e) }, meridiem: function (e, t, n) { return e < 12 ? "亘賴鈥屰屫з嗃�" : "卅蹘賵丕乇賴鈥�" }, calendar: { sameDay: "[卅賴鈥屬呚臂� 賰丕鬲跇賲蹘乇] LT", nextDay: "[亘賴鈥屰屫з嗃� 賰丕鬲跇賲蹘乇] LT", nextWeek: "dddd [賰丕鬲跇賲蹘乇] LT", lastDay: "[丿賵蹘賳蹘 賰丕鬲跇賲蹘乇] LT", lastWeek: "dddd [賰丕鬲跇賲蹘乇] LT", sameElse: "L" }, relativeTime: { future: "賱賴鈥� %s", past: "%s", s: "趩賴鈥屬嗀� 趩乇賰賴鈥屰屬団�屬�", ss: "趩乇賰賴鈥� %d", m: "蹖賴鈥屬� 禺賵賱賴鈥屬�", mm: "%d 禺賵賱賴鈥屬�", h: "蹖賴鈥屬� 賰丕鬲跇賲蹘乇", hh: "%d 賰丕鬲跇賲蹘乇", d: "蹖賴鈥屬� 跁蹎跇", dd: "%d 跁蹎跇", M: "蹖賴鈥屬� 賲丕賳诏", MM: "%d 賲丕賳诏", y: "蹖賴鈥屬� 爻丕诘", yy: "%d 爻丕诘" }, preparse: function (e) { return e.replace(/[佟佗伲伽佶佴侑侉侃贍]/g, (function (e) { return n[e] })).replace(/貙/g, ",") }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })).replace(/,/g, "貙") }, week: { dow: 6, doy: 12 } }); return i
+                    }))
+                }, "242e": function (e, t, n) { var r = n("72af"), i = n("ec69"); function o(e, t) { return e && r(e, t, i) } e.exports = o }, "243f": function (e, t, n) { var r = n("48a0"); function i(e, t, n, i) { return r(e, (function (e, r, o) { t(i, e, n(e), o) })), i } e.exports = i }, 2474: function (e, t, n) { var r = n("2b3e"), i = r.Uint8Array; e.exports = i }, 2478: function (e, t, n) { var r = n("4245"); function i(e) { return r(this, e).get(e) } e.exports = i }, 2524: function (e, t, n) { var r = n("6044"), i = "__lodash_hash_undefined__"; function o(e, t) { var n = this.__data__; return this.size += this.has(e) ? 0 : 1, n[e] = r && void 0 === t ? i : t, this } e.exports = o }, "253c": function (e, t, n) { var r = n("3729"), i = n("1310"), o = "[object Arguments]"; function a(e) { return i(e) && r(e) == o } e.exports = a }, 2554: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t, n) { var r = e + " "; switch (n) { case "ss": return r += 1 === e ? "sekunda" : 2 === e || 3 === e || 4 === e ? "sekunde" : "sekundi", r; case "m": return t ? "jedna minuta" : "jedne minute"; case "mm": return r += 1 === e ? "minuta" : 2 === e || 3 === e || 4 === e ? "minute" : "minuta", r; case "h": return t ? "jedan sat" : "jednog sata"; case "hh": return r += 1 === e ? "sat" : 2 === e || 3 === e || 4 === e ? "sata" : "sati", r; case "dd": return r += 1 === e ? "dan" : "dana", r; case "MM": return r += 1 === e ? "mjesec" : 2 === e || 3 === e || 4 === e ? "mjeseca" : "mjeseci", r; case "yy": return r += 1 === e ? "godina" : 2 === e || 3 === e || 4 === e ? "godine" : "godina", r } } var n = e.defineLocale("bs", { months: "januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"), monthsShort: "jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"), monthsParseExact: !0, weekdays: "nedjelja_ponedjeljak_utorak_srijeda_膷etvrtak_petak_subota".split("_"), weekdaysShort: "ned._pon._uto._sri._膷et._pet._sub.".split("_"), weekdaysMin: "ne_po_ut_sr_膷e_pe_su".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd, D. MMMM YYYY H:mm" }, calendar: { sameDay: "[danas u] LT", nextDay: "[sutra u] LT", nextWeek: function () { switch (this.day()) { case 0: return "[u] [nedjelju] [u] LT"; case 3: return "[u] [srijedu] [u] LT"; case 6: return "[u] [subotu] [u] LT"; case 1: case 2: case 4: case 5: return "[u] dddd [u] LT" } }, lastDay: "[ju膷er u] LT", lastWeek: function () { switch (this.day()) { case 0: case 3: return "[pro拧lu] dddd [u] LT"; case 6: return "[pro拧le] [subote] [u] LT"; case 1: case 2: case 4: case 5: return "[pro拧li] dddd [u] LT" } }, sameElse: "L" }, relativeTime: { future: "za %s", past: "prije %s", s: "par sekundi", ss: t, m: t, mm: t, h: t, hh: t, d: "dan", dd: t, M: "mjesec", MM: t, y: "godinu", yy: t }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 7 } }); return n
+                    }))
+                }, 2593: function (e, t, n) { var r = n("15f3"), i = n("c6cf"), o = i((function (e, t) { return null == e ? {} : r(e, t) })); e.exports = o }, "25eb": function (e, t) { e.exports = function (e) { if (void 0 == e) throw TypeError("Can't call method on  " + e); return e } }, 2621: function (e, t) { t.f = Object.getOwnPropertySymbols }, "266a": function (e, t, n) { var r = n("7948"); function i(e, t) { return r(t, (function (t) { return e[t] })) } e.exports = i }, "266d": function (e, t, n) { }, 2686: function (e, t, n) { var r = n("3729"), i = n("1310"), o = "[object RegExp]"; function a(e) { return i(e) && r(e) == o } e.exports = a }, "26e8": function (e, t) { function n(e, t) { return null != e && t in Object(e) } e.exports = n }, "26f9": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { ss: "sekund臈_sekund啪i懦_sekundes", m: "minut臈_minut臈s_minut臋", mm: "minut臈s_minu膷i懦_minutes", h: "valanda_valandos_valand膮", hh: "valandos_valand懦_valandas", d: "diena_dienos_dien膮", dd: "dienos_dien懦_dienas", M: "m臈nuo_m臈nesio_m臈nes寞", MM: "m臈nesiai_m臈nesi懦_m臈nesius", y: "metai_met懦_metus", yy: "metai_met懦_metus" }; function n(e, t, n, r) { return t ? "kelios sekund臈s" : r ? "keli懦 sekund啪i懦" : "kelias sekundes" } function r(e, t, n, r) { return t ? o(n)[0] : r ? o(n)[1] : o(n)[2] } function i(e) { return e % 10 === 0 || e > 10 && e < 20 } function o(e) { return t[e].split("_") } function a(e, t, n, a) { var s = e + " "; return 1 === e ? s + r(e, t, n[0], a) : t ? s + (i(e) ? o(n)[1] : o(n)[0]) : a ? s + o(n)[1] : s + (i(e) ? o(n)[1] : o(n)[2]) } var s = e.defineLocale("lt", { months: { format: "sausio_vasario_kovo_baland啪io_gegu啪臈s_bir啪elio_liepos_rugpj奴膷io_rugs臈jo_spalio_lapkri膷io_gruod啪io".split("_"), standalone: "sausis_vasaris_kovas_balandis_gegu啪臈_bir啪elis_liepa_rugpj奴tis_rugs臈jis_spalis_lapkritis_gruodis".split("_"), isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/ }, monthsShort: "sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"), weekdays: { format: "sekmadien寞_pirmadien寞_antradien寞_tre膷iadien寞_ketvirtadien寞_penktadien寞_拧e拧tadien寞".split("_"), standalone: "sekmadienis_pirmadienis_antradienis_tre膷iadienis_ketvirtadienis_penktadienis_拧e拧tadienis".split("_"), isFormat: /dddd HH:mm/ }, weekdaysShort: "Sek_Pir_Ant_Tre_Ket_Pen_艩e拧".split("_"), weekdaysMin: "S_P_A_T_K_Pn_艩".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY-MM-DD", LL: "YYYY [m.] MMMM D [d.]", LLL: "YYYY [m.] MMMM D [d.], HH:mm [val.]", LLLL: "YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]", l: "YYYY-MM-DD", ll: "YYYY [m.] MMMM D [d.]", lll: "YYYY [m.] MMMM D [d.], HH:mm [val.]", llll: "YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]" }, calendar: { sameDay: "[艩iandien] LT", nextDay: "[Rytoj] LT", nextWeek: "dddd LT", lastDay: "[Vakar] LT", lastWeek: "[Pra臈jus寞] dddd LT", sameElse: "L" }, relativeTime: { future: "po %s", past: "prie拧 %s", s: n, ss: a, m: r, mm: a, h: r, hh: a, d: r, dd: a, M: r, MM: a, y: r, yy: a }, dayOfMonthOrdinalParse: /\d{1,2}-oji/, ordinal: function (e) { return e + "-oji" }, week: { dow: 1, doy: 4 } }); return s
+                    }))
+                }, 2768: function (e, t) { function n(e) { return null == e } e.exports = n }, 2769: function (e, t, n) { var r = n("5ca0"), i = n("51f5"), o = r(i); e.exports = o }, "27ee": function (e, t, n) { var r = n("23c6"), i = n("2b4c")("iterator"), o = n("84f2"); e.exports = n("8378").getIteratorMethod = function (e) { if (void 0 != e) return e[i] || e["@@iterator"] || o[r(e)] } }, "27f3": function (e, t, n) { var r = n("72f0"), i = n("43ad"), o = n("cd9d"), a = Object.prototype, s = a.toString, c = i((function (e, t, n) { null != t && "function" != typeof t.toString && (t = s.call(t)), e[t] = n }), r(o)); e.exports = c }, 2877: function (e, t, n) { "use strict"; function r(e, t, n, r, i, o, a, s) { var c, l = "function" === typeof e ? e.options : e; if (t && (l.render = t, l.staticRenderFns = n, l._compiled = !0), r && (l.functional = !0), o && (l._scopeId = "data-v-" + o), a ? (c = function (e) { e = e || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext, e || "undefined" === typeof __VUE_SSR_CONTEXT__ || (e = __VUE_SSR_CONTEXT__), i && i.call(this, e), e && e._registeredComponents && e._registeredComponents.add(a) }, l._ssrRegister = c) : i && (c = s ? function () { i.call(this, (l.functional ? this.parent : this).$root.$options.shadowRoot) } : i), c) if (l.functional) { l._injectStyles = c; var u = l.render; l.render = function (e, t) { return c.call(t), u(e, t) } } else { var h = l.beforeCreate; l.beforeCreate = h ? [].concat(h, c) : [c] } return { exports: e, options: l } } n.d(t, "a", (function () { return r })) }, "28a5": function (e, t, n) { "use strict"; var r = n("aae3"), i = n("cb7c"), o = n("ebd6"), a = n("0390"), s = n("9def"), c = n("5f1b"), l = n("520a"), u = n("79e5"), h = Math.min, f = [].push, d = "split", p = "length", v = "lastIndex", m = 4294967295, g = !u((function () { RegExp(m, "y") })); n("214f")("split", 2, (function (e, t, n, u) { var y; return y = "c" == "abbc"[d](/(b)*/)[1] || 4 != "test"[d](/(?:)/, -1)[p] || 2 != "ab"[d](/(?:ab)*/)[p] || 4 != "."[d](/(.?)(.?)/)[p] || "."[d](/()()/)[p] > 1 || ""[d](/.?/)[p] ? function (e, t) { var i = String(this); if (void 0 === e && 0 === t) return []; if (!r(e)) return n.call(i, e, t); var o, a, s, c = [], u = (e.ignoreCase ? "i" : "") + (e.multiline ? "m" : "") + (e.unicode ? "u" : "") + (e.sticky ? "y" : ""), h = 0, d = void 0 === t ? m : t >>> 0, g = new RegExp(e.source, u + "g"); while (o = l.call(g, i)) { if (a = g[v], a > h && (c.push(i.slice(h, o.index)), o[p] > 1 && o.index < i[p] && f.apply(c, o.slice(1)), s = o[0][p], h = a, c[p] >= d)) break; g[v] === o.index && g[v]++ } return h === i[p] ? !s && g.test("") || c.push("") : c.push(i.slice(h)), c[p] > d ? c.slice(0, d) : c } : "0"[d](void 0, 0)[p] ? function (e, t) { return void 0 === e && 0 === t ? [] : n.call(this, e, t) } : n, [function (n, r) { var i = e(this), o = void 0 == n ? void 0 : n[t]; return void 0 !== o ? o.call(n, i, r) : y.call(String(i), n, r) }, function (e, t) { var r = u(y, e, this, t, y !== n); if (r.done) return r.value; var l = i(e), f = String(this), d = o(l, RegExp), p = l.unicode, v = (l.ignoreCase ? "i" : "") + (l.multiline ? "m" : "") + (l.unicode ? "u" : "") + (g ? "y" : "g"), b = new d(g ? l : "^(?:" + l.source + ")", v), x = void 0 === t ? m : t >>> 0; if (0 === x) return []; if (0 === f.length) return null === c(b, f) ? [f] : []; var w = 0, _ = 0, C = []; while (_ < f.length) { b.lastIndex = g ? _ : 0; var M, O = c(b, g ? f : f.slice(_)); if (null === O || (M = h(s(b.lastIndex + (g ? 0 : _)), f.length)) === w) _ = a(f, _, p); else { if (C.push(f.slice(w, _)), C.length === x) return C; for (var k = 1; k <= O.length - 1; k++)if (C.push(O[k]), C.length === x) return C; _ = w = M } } return C.push(f.slice(w)), C }] })) }, "28c9": function (e, t) { function n() { this.__data__ = [], this.size = 0 } e.exports = n }, 2921: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("vi", { months: "th谩ng 1_th谩ng 2_th谩ng 3_th谩ng 4_th谩ng 5_th谩ng 6_th谩ng 7_th谩ng 8_th谩ng 9_th谩ng 10_th谩ng 11_th谩ng 12".split("_"), monthsShort: "Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"), monthsParseExact: !0, weekdays: "ch峄� nh岷璽_th峄� hai_th峄� ba_th峄� t瓢_th峄� n膬m_th峄� s谩u_th峄� b岷".split("_"), weekdaysShort: "CN_T2_T3_T4_T5_T6_T7".split("_"), weekdaysMin: "CN_T2_T3_T4_T5_T6_T7".split("_"), weekdaysParseExact: !0, meridiemParse: /sa|ch/i, isPM: function (e) { return /^ch$/i.test(e) }, meridiem: function (e, t, n) { return e < 12 ? n ? "sa" : "SA" : n ? "ch" : "CH" }, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM [n膬m] YYYY", LLL: "D MMMM [n膬m] YYYY HH:mm", LLLL: "dddd, D MMMM [n膬m] YYYY HH:mm", l: "DD/M/YYYY", ll: "D MMM YYYY", lll: "D MMM YYYY HH:mm", llll: "ddd, D MMM YYYY HH:mm" }, calendar: { sameDay: "[H么m nay l煤c] LT", nextDay: "[Ng脿y mai l煤c] LT", nextWeek: "dddd [tu岷 t峄沬 l煤c] LT", lastDay: "[H么m qua l煤c] LT", lastWeek: "dddd [tu岷 tr瓢峄沜 l煤c] LT", sameElse: "L" }, relativeTime: { future: "%s t峄沬", past: "%s tr瓢峄沜", s: "v脿i gi芒y", ss: "%d gi芒y", m: "m峄檛 ph煤t", mm: "%d ph煤t", h: "m峄檛 gi峄�", hh: "%d gi峄�", d: "m峄檛 ng脿y", dd: "%d ng脿y", M: "m峄檛 th谩ng", MM: "%d th谩ng", y: "m峄檛 n膬m", yy: "%d n膬m" }, dayOfMonthOrdinalParse: /\d{1,2}/, ordinal: function (e) { return e }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "293c": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { words: { ss: ["sekund", "sekunda", "sekundi"], m: ["jedan minut", "jednog minuta"], mm: ["minut", "minuta", "minuta"], h: ["jedan sat", "jednog sata"], hh: ["sat", "sata", "sati"], dd: ["dan", "dana", "dana"], MM: ["mjesec", "mjeseca", "mjeseci"], yy: ["godina", "godine", "godina"] }, correctGrammaticalCase: function (e, t) { return 1 === e ? t[0] : e >= 2 && e <= 4 ? t[1] : t[2] }, translate: function (e, n, r) { var i = t.words[r]; return 1 === r.length ? n ? i[0] : i[1] : e + " " + t.correctGrammaticalCase(e, i) } }, n = e.defineLocale("me", { months: "januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"), monthsShort: "jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"), monthsParseExact: !0, weekdays: "nedjelja_ponedjeljak_utorak_srijeda_膷etvrtak_petak_subota".split("_"), weekdaysShort: "ned._pon._uto._sri._膷et._pet._sub.".split("_"), weekdaysMin: "ne_po_ut_sr_膷e_pe_su".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd, D. MMMM YYYY H:mm" }, calendar: { sameDay: "[danas u] LT", nextDay: "[sjutra u] LT", nextWeek: function () { switch (this.day()) { case 0: return "[u] [nedjelju] [u] LT"; case 3: return "[u] [srijedu] [u] LT"; case 6: return "[u] [subotu] [u] LT"; case 1: case 2: case 4: case 5: return "[u] dddd [u] LT" } }, lastDay: "[ju膷e u] LT", lastWeek: function () { var e = ["[pro拧le] [nedjelje] [u] LT", "[pro拧log] [ponedjeljka] [u] LT", "[pro拧log] [utorka] [u] LT", "[pro拧le] [srijede] [u] LT", "[pro拧log] [膷etvrtka] [u] LT", "[pro拧log] [petka] [u] LT", "[pro拧le] [subote] [u] LT"]; return e[this.day()] }, sameElse: "L" }, relativeTime: { future: "za %s", past: "prije %s", s: "nekoliko sekundi", ss: t.translate, m: t.translate, mm: t.translate, h: t.translate, hh: t.translate, d: "dan", dd: t.translate, M: "mjesec", MM: t.translate, y: "godinu", yy: t.translate }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 7 } }); return n
+                    }))
+                }, "294c": function (e, t) { e.exports = function (e) { try { return !!e() } catch (t) { return !0 } } }, "29f3": function (e, t) { var n = Object.prototype, r = n.toString; function i(e) { return r.call(e) } e.exports = i }, "2a95": function (e, t, n) { "use strict"; (function (e) { function n() { return n = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }, n.apply(this, arguments) } function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } function i(e) { return i = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, i(e) } function o(e, t) { return o = Object.setPrototypeOf || function (e, t) { return e.__proto__ = t, e }, o(e, t) } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e, t, n) { return s = a() ? Reflect.construct : function (e, t, n) { var r = [null]; r.push.apply(r, t); var i = Function.bind.apply(e, r), a = new i; return n && o(a, n.prototype), a }, s.apply(null, arguments) } function c(e) { return -1 !== Function.toString.call(e).indexOf("[native code]") } function l(e) { var t = "function" === typeof Map ? new Map : void 0; return l = function (e) { if (null === e || !c(e)) return e; if ("function" !== typeof e) throw new TypeError("Super expression must either be null or a function"); if ("undefined" !== typeof t) { if (t.has(e)) return t.get(e); t.set(e, n) } function n() { return s(e, arguments, i(this).constructor) } return n.prototype = Object.create(e.prototype, { constructor: { value: n, enumerable: !1, writable: !0, configurable: !0 } }), o(n, e) }, l(e) } var u = /%[sdj%]/g, h = function () { }; function f(e) { if (!e || !e.length) return null; var t = {}; return e.forEach((function (e) { var n = e.field; t[n] = t[n] || [], t[n].push(e) })), t } function d() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; var r = 1, i = t[0], o = t.length; if ("function" === typeof i) return i.apply(null, t.slice(1)); if ("string" === typeof i) { for (var a = String(i).replace(u, (function (e) { if ("%%" === e) return "%"; if (r >= o) return e; switch (e) { case "%s": return String(t[r++]); case "%d": return Number(t[r++]); case "%j": try { return JSON.stringify(t[r++]) } catch (n) { return "[Circular]" } break; default: return e } })), s = t[r]; r < o; s = t[++r])a += " " + s; return a } return i } function p(e) { return "string" === e || "url" === e || "hex" === e || "email" === e || "pattern" === e } function v(e, t) { return void 0 === e || null === e || !("array" !== t || !Array.isArray(e) || e.length) || !(!p(t) || "string" !== typeof e || e) } function m(e, t, n) { var r = [], i = 0, o = e.length; function a(e) { r.push.apply(r, e), i++, i === o && n(r) } e.forEach((function (e) { t(e, a) })) } function g(e, t, n) { var r = 0, i = e.length; function o(a) { if (a && a.length) n(a); else { var s = r; r += 1, s < i ? t(e[s], o) : n([]) } } o([]) } function y(e) { var t = []; return Object.keys(e).forEach((function (n) { t.push.apply(t, e[n]) })), t } "undefined" !== typeof e && Object({ NODE_ENV: "production", BASE_URL: "/" }); var b = function (e) { function t(t, n) { var r; return r = e.call(this, "Async Validation Error") || this, r.errors = t, r.fields = n, r } return r(t, e), t }(l(Error)); function x(e, t, n, r) { if (t.first) { var i = new Promise((function (t, i) { var o = function (e) { return r(e), e.length ? i(new b(e, f(e))) : t() }, a = y(e); g(a, n, o) })); return i["catch"]((function (e) { return e })), i } var o = t.firstFields || []; !0 === o && (o = Object.keys(e)); var a = Object.keys(e), s = a.length, c = 0, l = [], u = new Promise((function (t, i) { var u = function (e) { if (l.push.apply(l, e), c++, c === s) return r(l), l.length ? i(new b(l, f(l))) : t() }; a.length || (r(l), t()), a.forEach((function (t) { var r = e[t]; -1 !== o.indexOf(t) ? g(r, n, u) : m(r, n, u) })) })); return u["catch"]((function (e) { return e })), u } function w(e) { return function (t) { return t && t.message ? (t.field = t.field || e.fullField, t) : { message: "function" === typeof t ? t() : t, field: t.field || e.fullField } } } function _(e, t) { if (t) for (var r in t) if (t.hasOwnProperty(r)) { var i = t[r]; "object" === typeof i && "object" === typeof e[r] ? e[r] = n(n({}, e[r]), i) : e[r] = i } return e } function C(e, t, n, r, i, o) { !e.required || n.hasOwnProperty(e.field) && !v(t, o || e.type) || r.push(d(i.messages.required, e.fullField)) } function M(e, t, n, r, i) { (/^\s+$/.test(t) || "" === t) && r.push(d(i.messages.whitespace, e.fullField)) } var O = { email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, url: new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$", "i"), hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i }, k = { integer: function (e) { return k.number(e) && parseInt(e, 10) === e }, float: function (e) { return k.number(e) && !k.integer(e) }, array: function (e) { return Array.isArray(e) }, regexp: function (e) { if (e instanceof RegExp) return !0; try { return !!new RegExp(e) } catch (t) { return !1 } }, date: function (e) { return "function" === typeof e.getTime && "function" === typeof e.getMonth && "function" === typeof e.getYear }, number: function (e) { return !isNaN(e) && "number" === typeof e }, object: function (e) { return "object" === typeof e && !k.array(e) }, method: function (e) { return "function" === typeof e }, email: function (e) { return "string" === typeof e && !!e.match(O.email) && e.length < 255 }, url: function (e) { return "string" === typeof e && !!e.match(O.url) }, hex: function (e) { return "string" === typeof e && !!e.match(O.hex) } }; function S(e, t, n, r, i) { if (e.required && void 0 === t) C(e, t, n, r, i); else { var o = ["integer", "float", "array", "regexp", "object", "method", "email", "number", "date", "url", "hex"], a = e.type; o.indexOf(a) > -1 ? k[a](t) || r.push(d(i.messages.types[a], e.fullField, e.type)) : a && typeof t !== e.type && r.push(d(i.messages.types[a], e.fullField, e.type)) } } function T(e, t, n, r, i) { var o = "number" === typeof e.len, a = "number" === typeof e.min, s = "number" === typeof e.max, c = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g, l = t, u = null, h = "number" === typeof t, f = "string" === typeof t, p = Array.isArray(t); if (h ? u = "number" : f ? u = "string" : p && (u = "array"), !u) return !1; p && (l = t.length), f && (l = t.replace(c, "_").length), o ? l !== e.len && r.push(d(i.messages[u].len, e.fullField, e.len)) : a && !s && l < e.min ? r.push(d(i.messages[u].min, e.fullField, e.min)) : s && !a && l > e.max ? r.push(d(i.messages[u].max, e.fullField, e.max)) : a && s && (l < e.min || l > e.max) && r.push(d(i.messages[u].range, e.fullField, e.min, e.max)) } var A = "enum"; function L(e, t, n, r, i) { e[A] = Array.isArray(e[A]) ? e[A] : [], -1 === e[A].indexOf(t) && r.push(d(i.messages[A], e.fullField, e[A].join(", "))) } function j(e, t, n, r, i) { if (e.pattern) if (e.pattern instanceof RegExp) e.pattern.lastIndex = 0, e.pattern.test(t) || r.push(d(i.messages.pattern.mismatch, e.fullField, t, e.pattern)); else if ("string" === typeof e.pattern) { var o = new RegExp(e.pattern); o.test(t) || r.push(d(i.messages.pattern.mismatch, e.fullField, t, e.pattern)) } } var z = { required: C, whitespace: M, type: S, range: T, enum: L, pattern: j }; function E(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t, "string") && !e.required) return n(); z.required(e, t, r, o, i, "string"), v(t, "string") || (z.type(e, t, r, o, i), z.range(e, t, r, o, i), z.pattern(e, t, r, o, i), !0 === e.whitespace && z.whitespace(e, t, r, o, i)) } n(o) } function P(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i), void 0 !== t && z.type(e, t, r, o, i) } n(o) } function D(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if ("" === t && (t = void 0), v(t) && !e.required) return n(); z.required(e, t, r, o, i), void 0 !== t && (z.type(e, t, r, o, i), z.range(e, t, r, o, i)) } n(o) } function H(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i), void 0 !== t && z.type(e, t, r, o, i) } n(o) } function V(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i), v(t) || z.type(e, t, r, o, i) } n(o) } function I(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i), void 0 !== t && (z.type(e, t, r, o, i), z.range(e, t, r, o, i)) } n(o) } function N(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i), void 0 !== t && (z.type(e, t, r, o, i), z.range(e, t, r, o, i)) } n(o) } function R(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t, "array") && !e.required) return n(); z.required(e, t, r, o, i, "array"), v(t, "array") || (z.type(e, t, r, o, i), z.range(e, t, r, o, i)) } n(o) } function F(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i), void 0 !== t && z.type(e, t, r, o, i) } n(o) } var Y = "enum"; function $(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i), void 0 !== t && z[Y](e, t, r, o, i) } n(o) } function B(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t, "string") && !e.required) return n(); z.required(e, t, r, o, i), v(t, "string") || z.pattern(e, t, r, o, i) } n(o) } function W(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); var s; z.required(e, t, r, o, i), v(t) || (s = "number" === typeof t ? new Date(t) : t, z.type(e, s, r, o, i), s && z.range(e, s.getTime(), r, o, i)) } n(o) } function q(e, t, n, r, i) { var o = [], a = Array.isArray(t) ? "array" : typeof t; z.required(e, t, r, o, i, a), n(o) } function U(e, t, n, r, i) { var o = e.type, a = [], s = e.required || !e.required && r.hasOwnProperty(e.field); if (s) { if (v(t, o) && !e.required) return n(); z.required(e, t, r, a, i, o), v(t, o) || z.type(e, t, r, a, i) } n(a) } function K(e, t, n, r, i) { var o = [], a = e.required || !e.required && r.hasOwnProperty(e.field); if (a) { if (v(t) && !e.required) return n(); z.required(e, t, r, o, i) } n(o) } var G = { string: E, method: P, number: D, boolean: H, regexp: V, integer: I, float: N, array: R, object: F, enum: $, pattern: B, date: W, url: U, hex: U, email: U, required: q, any: K }; function X() { return { default: "Validation error on field %s", required: "%s is required", enum: "%s must be one of %s", whitespace: "%s cannot be empty", date: { format: "%s date %s is invalid for format %s", parse: "%s date could not be parsed, %s is invalid ", invalid: "%s date %s is invalid" }, types: { string: "%s is not a %s", method: "%s is not a %s (function)", array: "%s is not an %s", object: "%s is not an %s", number: "%s is not a %s", date: "%s is not a %s", boolean: "%s is not a %s", integer: "%s is not an %s", float: "%s is not a %s", regexp: "%s is not a valid %s", email: "%s is not a valid %s", url: "%s is not a valid %s", hex: "%s is not a valid %s" }, string: { len: "%s must be exactly %s characters", min: "%s must be at least %s characters", max: "%s cannot be longer than %s characters", range: "%s must be between %s and %s characters" }, number: { len: "%s must equal %s", min: "%s cannot be less than %s", max: "%s cannot be greater than %s", range: "%s must be between %s and %s" }, array: { len: "%s must be exactly %s in length", min: "%s cannot be less than %s in length", max: "%s cannot be greater than %s in length", range: "%s must be between %s and %s in length" }, pattern: { mismatch: "%s value %s does not match pattern %s" }, clone: function () { var e = JSON.parse(JSON.stringify(this)); return e.clone = this.clone, e } } } var J = X(); function Q(e) { this.rules = null, this._messages = J, this.define(e) } Q.prototype = { messages: function (e) { return e && (this._messages = _(X(), e)), this._messages }, define: function (e) { if (!e) throw new Error("Cannot configure a schema with no rules"); if ("object" !== typeof e || Array.isArray(e)) throw new Error("Rules must be an object"); var t, n; for (t in this.rules = {}, e) e.hasOwnProperty(t) && (n = e[t], this.rules[t] = Array.isArray(n) ? n : [n]) }, validate: function (e, t, r) { var i = this; void 0 === t && (t = {}), void 0 === r && (r = function () { }); var o, a, s = e, c = t, l = r; if ("function" === typeof c && (l = c, c = {}), !this.rules || 0 === Object.keys(this.rules).length) return l && l(), Promise.resolve(); function u(e) { var t, n = [], r = {}; function i(e) { var t; Array.isArray(e) ? n = (t = n).concat.apply(t, e) : n.push(e) } for (t = 0; t < e.length; t++)i(e[t]); n.length ? r = f(n) : (n = null, r = null), l(n, r) } if (c.messages) { var h = this.messages(); h === J && (h = X()), _(h, c.messages), c.messages = h } else c.messages = this.messages(); var p = {}, v = c.keys || Object.keys(this.rules); v.forEach((function (t) { o = i.rules[t], a = s[t], o.forEach((function (r) { var o = r; "function" === typeof o.transform && (s === e && (s = n({}, s)), a = s[t] = o.transform(a)), o = "function" === typeof o ? { validator: o } : n({}, o), o.validator = i.getValidationMethod(o), o.field = t, o.fullField = o.fullField || t, o.type = i.getType(o), o.validator && (p[t] = p[t] || [], p[t].push({ rule: o, value: a, source: s, field: t })) })) })); var m = {}; return x(p, c, (function (e, t) { var r, i = e.rule, o = ("object" === i.type || "array" === i.type) && ("object" === typeof i.fields || "object" === typeof i.defaultField); function a(e, t) { return n(n({}, t), {}, { fullField: i.fullField + "." + e }) } function s(r) { void 0 === r && (r = []); var s = r; if (Array.isArray(s) || (s = [s]), !c.suppressWarning && s.length && Q.warning("async-validator:", s), s.length && i.message && (s = [].concat(i.message)), s = s.map(w(i)), c.first && s.length) return m[i.field] = 1, t(s); if (o) { if (i.required && !e.value) return i.message ? s = [].concat(i.message).map(w(i)) : c.error && (s = [c.error(i, d(c.messages.required, i.field))]), t(s); var l = {}; if (i.defaultField) for (var u in e.value) e.value.hasOwnProperty(u) && (l[u] = i.defaultField); for (var h in l = n(n({}, l), e.rule.fields), l) if (l.hasOwnProperty(h)) { var f = Array.isArray(l[h]) ? l[h] : [l[h]]; l[h] = f.map(a.bind(null, h)) } var p = new Q(l); p.messages(c.messages), e.rule.options && (e.rule.options.messages = c.messages, e.rule.options.error = c.error), p.validate(e.value, e.rule.options || c, (function (e) { var n = []; s && s.length && n.push.apply(n, s), e && e.length && n.push.apply(n, e), t(n.length ? n : null) })) } else t(s) } o = o && (i.required || !i.required && e.value), i.field = e.field, i.asyncValidator ? r = i.asyncValidator(i, e.value, s, e.source, c) : i.validator && (r = i.validator(i, e.value, s, e.source, c), !0 === r ? s() : !1 === r ? s(i.message || i.field + " fails") : r instanceof Array ? s(r) : r instanceof Error && s(r.message)), r && r.then && r.then((function () { return s() }), (function (e) { return s(e) })) }), (function (e) { u(e) })) }, getType: function (e) { if (void 0 === e.type && e.pattern instanceof RegExp && (e.type = "pattern"), "function" !== typeof e.validator && e.type && !G.hasOwnProperty(e.type)) throw new Error(d("Unknown rule type %s", e.type)); return e.type || "string" }, getValidationMethod: function (e) { if ("function" === typeof e.validator) return e.validator; var t = Object.keys(e), n = t.indexOf("message"); return -1 !== n && t.splice(n, 1), 1 === t.length && "required" === t[0] ? G.required : G[this.getType(e)] || !1 } }, Q.register = function (e, t) { if ("function" !== typeof t) throw new Error("Cannot register a validator by type, validator is not a function"); G[e] = t }, Q.warning = h, Q.messages = J, Q.validators = G, t["a"] = Q }).call(this, n("4362")) }, "2aba": function (e, t, n) { var r = n("7726"), i = n("32e9"), o = n("69a8"), a = n("ca5a")("src"), s = n("fa5b"), c = "toString", l = ("" + s).split(c); n("8378").inspectSource = function (e) { return s.call(e) }, (e.exports = function (e, t, n, s) { var c = "function" == typeof n; c && (o(n, "name") || i(n, "name", t)), e[t] !== n && (c && (o(n, a) || i(n, a, e[t] ? "" + e[t] : l.join(String(t)))), e === r ? e[t] = n : s ? e[t] ? e[t] = n : i(e, t, n) : (delete e[t], i(e, t, n))) })(Function.prototype, c, (function () { return "function" == typeof this && this[a] || s.call(this) })) }, "2adb": function (e, t, n) { "use strict"; (function (e) { n.d(t, "e", (function () { return u })), n.d(t, "d", (function () { return h })), n.d(t, "a", (function () { return d })), n.d(t, "b", (function () { return p })), n.d(t, "c", (function () { return v })), n.d(t, "f", (function () { return m })); var r = n("41b2"), i = n.n(r), o = n("8827"), a = n.n(o), s = n("57ba"), c = n.n(s), l = n("1d73"); function u(t) { e && Object({ NODE_ENV: "production", BASE_URL: "/" }) || console.error("[@ant-design/icons-vue]: " + t + ".") } function h(e) { return "object" === typeof e && "string" === typeof e.name && "string" === typeof e.theme && ("object" === typeof e.icon || "function" === typeof e.icon) } function f() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return Object.keys(e).reduce((function (t, n) { var r = e[n]; switch (n) { case "class": t.className = r, delete t["class"]; break; default: t[n] = r }return t }), {}) } var d = function () { function e() { a()(this, e), this.collection = {} } return c()(e, [{ key: "clear", value: function () { this.collection = {} } }, { key: "delete", value: function (e) { return delete this.collection[e] } }, { key: "get", value: function (e) { return this.collection[e] } }, { key: "has", value: function (e) { return Boolean(this.collection[e]) } }, { key: "set", value: function (e, t) { return this.collection[e] = t, this } }, { key: "size", get: function () { return Object.keys(this.collection).length } }]), e }(); function p(e, t, n, r) { return e(t.tag, r ? i()({ key: n }, r, { attrs: i()({}, f(t.attrs), r.attrs) }) : { key: n, attrs: i()({}, f(t.attrs)) }, (t.children || []).map((function (r, i) { return p(e, r, n + "-" + t.tag + "-" + i) }))) } function v(e) { return Object(l["generate"])(e)[0] } function m(e, t) { switch (t) { case "fill": return e + "-fill"; case "outline": return e + "-o"; case "twotone": return e + "-twotone"; default: throw new TypeError("Unknown theme type: " + t + ", name: " + e) } } }).call(this, n("4362")) }, "2aeb": function (e, t, n) { var r = n("cb7c"), i = n("1495"), o = n("e11e"), a = n("613b")("IE_PROTO"), s = function () { }, c = "prototype", l = function () { var e, t = n("230e")("iframe"), r = o.length, i = "<", a = ">"; t.style.display = "none", n("fab2").appendChild(t), t.src = "javascript:", e = t.contentWindow.document, e.open(), e.write(i + "script" + a + "document.F=Object" + i + "/script" + a), e.close(), l = e.F; while (r--) delete l[c][o[r]]; return l() }; e.exports = Object.create || function (e, t) { var n; return null !== e ? (s[c] = r(e), n = new s, s[c] = null, n[a] = e) : n = l(), void 0 === t ? n : i(n, t) } }, "2b03": function (e, t) { function n(e, t, n, r) { var i = e.length, o = n + (r ? 1 : -1); while (r ? o-- : ++o < i) if (t(e[o], o, e)) return o; return -1 } e.exports = n }, "2b10": function (e, t) { function n(e, t, n) { var r = -1, i = e.length; t < 0 && (t = -t > i ? 0 : i + t), n = n > i ? i : n, n < 0 && (n += i), i = t > n ? 0 : n - t >>> 0, t >>>= 0; var o = Array(i); while (++r < i) o[r] = e[r + t]; return o } e.exports = n }, "2b3e": function (e, t, n) { var r = n("585a"), i = "object" == typeof self && self && self.Object === Object && self, o = r || i || Function("return this")(); e.exports = o }, "2b4c": function (e, t, n) { var r = n("5537")("wks"), i = n("ca5a"), o = n("7726").Symbol, a = "function" == typeof o, s = e.exports = function (e) { return r[e] || (r[e] = a && o[e] || (a ? o : i)("Symbol." + e)) }; s.store = r }, "2bfb": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("af", { months: "Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"), monthsShort: "Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"), weekdays: "Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"), weekdaysShort: "Son_Maa_Din_Woe_Don_Vry_Sat".split("_"), weekdaysMin: "So_Ma_Di_Wo_Do_Vr_Sa".split("_"), meridiemParse: /vm|nm/i, isPM: function (e) { return /^nm$/i.test(e) }, meridiem: function (e, t, n) { return e < 12 ? n ? "vm" : "VM" : n ? "nm" : "NM" }, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Vandag om] LT", nextDay: "[M么re om] LT", nextWeek: "dddd [om] LT", lastDay: "[Gister om] LT", lastWeek: "[Laas] dddd [om] LT", sameElse: "L" }, relativeTime: { future: "oor %s", past: "%s gelede", s: "'n paar sekondes", ss: "%d sekondes", m: "'n minuut", mm: "%d minute", h: "'n uur", hh: "%d ure", d: "'n dag", dd: "%d dae", M: "'n maand", MM: "%d maande", y: "'n jaar", yy: "%d jaar" }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, ordinal: function (e) { return e + (1 === e || 8 === e || e >= 20 ? "ste" : "de") }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "2c66": function (e, t, n) { var r = n("d612"), i = n("8db3"), o = n("5edf"), a = n("c584"), s = n("750a"), c = n("ac41"), l = 200; function u(e, t, n) { var u = -1, h = i, f = e.length, d = !0, p = [], v = p; if (n) d = !1, h = o; else if (f >= l) { var m = t ? null : s(e); if (m) return c(m); d = !1, h = a, v = new r } else v = t ? [] : p; e: while (++u < f) { var g = e[u], y = t ? t(g) : g; if (g = n || 0 !== g ? g : 0, d && y === y) { var b = v.length; while (b--) if (v[b] === y) continue e; t && v.push(y), p.push(g) } else h(v, y, n) || (v !== p && v.push(y), p.push(g)) } return p } e.exports = u }, "2c6a": function (e, t, n) { }, "2c80": function (e, t, n) { "use strict"; function r(e) { return e && e.__esModule ? e : { default: e } } Object.defineProperty(t, "__esModule", { value: !0 }), t["default"] = a; var i = n("134b"), o = r(i); function a(e, t, n, r) { function i(t) { var r = new o["default"](t); n.call(e, r) } if (e.addEventListener) { var a = function () { var n = !1; return "object" === typeof r ? n = r.capture || !1 : "boolean" === typeof r && (n = r), e.addEventListener(t, i, r || !1), { v: { remove: function () { e.removeEventListener(t, i, n) } } } }(); if ("object" === typeof a) return a.v } else if (e.attachEvent) return e.attachEvent("on" + t, i), { remove: function () { e.detachEvent("on" + t, i) } } } e.exports = t["default"] }, "2d00": function (e, t) { e.exports = !1 }, "2d7c": function (e, t) { function n(e, t) { var n = -1, r = null == e ? 0 : e.length, i = 0, o = []; while (++n < r) { var a = e[n]; t(a, n, e) && (o[i++] = a) } return o } e.exports = n }, "2d95": function (e, t) { var n = {}.toString; e.exports = function (e) { return n.call(e).slice(8, -1) } }, "2dcb": function (e, t, n) { var r = n("91e9"), i = r(Object.getPrototypeOf, Object); e.exports = i }, "2e85": function (e, t, n) { }, "2e8c": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("uz", { months: "褟薪胁邪褉_褎械胁褉邪谢_屑邪褉褌_邪锌褉械谢_屑邪泄_懈褞薪_懈褞谢_邪胁谐褍褋褌_褋械薪褌褟斜褉_芯泻褌褟斜褉_薪芯褟斜褉_写械泻邪斜褉".split("_"), monthsShort: "褟薪胁_褎械胁_屑邪褉_邪锌褉_屑邪泄_懈褞薪_懈褞谢_邪胁谐_褋械薪_芯泻褌_薪芯褟_写械泻".split("_"), weekdays: "携泻褕邪薪斜邪_袛褍褕邪薪斜邪_小械褕邪薪斜邪_效芯褉褕邪薪斜邪_袩邪泄褕邪薪斜邪_袞褍屑邪_楔邪薪斜邪".split("_"), weekdaysShort: "携泻褕_袛褍褕_小械褕_效芯褉_袩邪泄_袞褍屑_楔邪薪".split("_"), weekdaysMin: "携泻_袛褍_小械_效芯_袩邪_袞褍_楔邪".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "D MMMM YYYY, dddd HH:mm" }, calendar: { sameDay: "[袘褍谐褍薪 褋芯邪褌] LT [写邪]", nextDay: "[协褉褌邪谐邪] LT [写邪]", nextWeek: "dddd [泻褍薪懈 褋芯邪褌] LT [写邪]", lastDay: "[袣械褔邪 褋芯邪褌] LT [写邪]", lastWeek: "[校褌谐邪薪] dddd [泻褍薪懈 褋芯邪褌] LT [写邪]", sameElse: "L" }, relativeTime: { future: "携泻懈薪 %s 懈褔懈写邪", past: "袘懈褉 薪械褔邪 %s 芯谢写懈薪", s: "褎褍褉褋邪褌", ss: "%d 褎褍褉褋邪褌", m: "斜懈褉 写邪泻懈泻邪", mm: "%d 写邪泻懈泻邪", h: "斜懈褉 褋芯邪褌", hh: "%d 褋芯邪褌", d: "斜懈褉 泻褍薪", dd: "%d 泻褍薪", M: "斜懈褉 芯泄", MM: "%d 芯泄", y: "斜懈褉 泄懈谢", yy: "%d 泄懈谢" }, week: { dow: 1, doy: 7 } }); return t
+                    }))
+                }, "2ec1": function (e, t, n) { var r = n("100e"), i = n("9aff"); function o(e) { return r((function (t, n) { var r = -1, o = n.length, a = o > 1 ? n[o - 1] : void 0, s = o > 2 ? n[2] : void 0; a = e.length > 3 && "function" == typeof a ? (o--, a) : void 0, s && i(n[0], n[1], s) && (a = o < 3 ? void 0 : a, o = 1), t = Object(t); while (++r < o) { var c = n[r]; c && e(t, c, r, a) } return t })) } e.exports = o }, "2ee9": function (e, t, n) { }, "2fcc": function (e, t) { function n(e) { var t = this.__data__, n = t["delete"](e); return this.size = t.size, n } e.exports = n }, "2fdb": function (e, t, n) { "use strict"; var r = n("5ca1"), i = n("d2c8"), o = "includes"; r(r.P + r.F * n("5147")(o), "String", { includes: function (e) { return !!~i(this, e, o).indexOf(e, arguments.length > 1 ? arguments[1] : void 0) } }) }, "30c9": function (e, t, n) { var r = n("9520"), i = n("b218"); function o(e) { return null != e && i(e.length) && !r(e) } e.exports = o }, "30e0": function (e, t, n) { var r = n("99cd"), i = r(!0); e.exports = i }, "30f1": function (e, t, n) { "use strict"; var r = n("b8e3"), i = n("63b6"), o = n("9138"), a = n("35e8"), s = n("481b"), c = n("8f60"), l = n("45f2"), u = n("53e2"), h = n("5168")("iterator"), f = !([].keys && "next" in [].keys()), d = "@@iterator", p = "keys", v = "values", m = function () { return this }; e.exports = function (e, t, n, g, y, b, x) { c(n, t, g); var w, _, C, M = function (e) { if (!f && e in T) return T[e]; switch (e) { case p: return function () { return new n(this, e) }; case v: return function () { return new n(this, e) } }return function () { return new n(this, e) } }, O = t + " Iterator", k = y == v, S = !1, T = e.prototype, A = T[h] || T[d] || y && T[y], L = A || M(y), j = y ? k ? M("entries") : L : void 0, z = "Array" == t && T.entries || A; if (z && (C = u(z.call(new e)), C !== Object.prototype && C.next && (l(C, O, !0), r || "function" == typeof C[h] || a(C, h, m))), k && A && A.name !== v && (S = !0, L = function () { return A.call(this) }), r && !x || !f && !S && T[h] || a(T, h, L), s[t] = L, s[O] = m, y) if (w = { values: k ? L : M(v), keys: b ? L : M(p), entries: j }, x) for (_ in w) _ in T || o(T, _, w[_]); else i(i.P + i.F * (f || S), t, w); return w } }, "310e": function (e, t, n) { e.exports = function (e) { var t = {}; function n(r) { if (t[r]) return t[r].exports; var i = t[r] = { i: r, l: !1, exports: {} }; return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports } return n.m = e, n.c = t, n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: r }) }, n.r = function (e) { "undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }) }, n.t = function (e, t) { if (1 & t && (e = n(e)), 8 & t) return e; if (4 & t && "object" === typeof e && e && e.__esModule) return e; var r = Object.create(null); if (n.r(r), Object.defineProperty(r, "default", { enumerable: !0, value: e }), 2 & t && "string" != typeof e) for (var i in e) n.d(r, i, function (t) { return e[t] }.bind(null, i)); return r }, n.n = function (e) { var t = e && e.__esModule ? function () { return e["default"] } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = "fb15") }({ "02f4": function (e, t, n) { var r = n("4588"), i = n("be13"); e.exports = function (e) { return function (t, n) { var o, a, s = String(i(t)), c = r(n), l = s.length; return c < 0 || c >= l ? e ? "" : void 0 : (o = s.charCodeAt(c), o < 55296 || o > 56319 || c + 1 === l || (a = s.charCodeAt(c + 1)) < 56320 || a > 57343 ? e ? s.charAt(c) : o : e ? s.slice(c, c + 2) : a - 56320 + (o - 55296 << 10) + 65536) } } }, "0390": function (e, t, n) { "use strict"; var r = n("02f4")(!0); e.exports = function (e, t, n) { return t + (n ? r(e, t).length : 1) } }, "07e3": function (e, t) { var n = {}.hasOwnProperty; e.exports = function (e, t) { return n.call(e, t) } }, "0bfb": function (e, t, n) { "use strict"; var r = n("cb7c"); e.exports = function () { var e = r(this), t = ""; return e.global && (t += "g"), e.ignoreCase && (t += "i"), e.multiline && (t += "m"), e.unicode && (t += "u"), e.sticky && (t += "y"), t } }, "0fc9": function (e, t, n) { var r = n("3a38"), i = Math.max, o = Math.min; e.exports = function (e, t) { return e = r(e), e < 0 ? i(e + t, 0) : o(e, t) } }, 1654: function (e, t, n) { "use strict"; var r = n("71c1")(!0); n("30f1")(String, "String", (function (e) { this._t = String(e), this._i = 0 }), (function () { var e, t = this._t, n = this._i; return n >= t.length ? { value: void 0, done: !0 } : (e = r(t, n), this._i += e.length, { value: e, done: !1 }) })) }, 1691: function (e, t) { e.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",") }, "1af6": function (e, t, n) { var r = n("63b6"); r(r.S, "Array", { isArray: n("9003") }) }, "1bc3": function (e, t, n) { var r = n("f772"); e.exports = function (e, t) { if (!r(e)) return e; var n, i; if (t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; if ("function" == typeof (n = e.valueOf) && !r(i = n.call(e))) return i; if (!t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; throw TypeError("Can't convert object to primitive value") } }, "1ec9": function (e, t, n) { var r = n("f772"), i = n("e53d").document, o = r(i) && r(i.createElement); e.exports = function (e) { return o ? i.createElement(e) : {} } }, "20fd": function (e, t, n) { "use strict"; var r = n("d9f6"), i = n("aebd"); e.exports = function (e, t, n) { t in e ? r.f(e, t, i(0, n)) : e[t] = n } }, "214f": function (e, t, n) { "use strict"; n("b0c5"); var r = n("2aba"), i = n("32e9"), o = n("79e5"), a = n("be13"), s = n("2b4c"), c = n("520a"), l = s("species"), u = !o((function () { var e = /./; return e.exec = function () { var e = []; return e.groups = { a: "7" }, e }, "7" !== "".replace(e, "$<a>") })), h = function () { var e = /(?:)/, t = e.exec; e.exec = function () { return t.apply(this, arguments) }; var n = "ab".split(e); return 2 === n.length && "a" === n[0] && "b" === n[1] }(); e.exports = function (e, t, n) { var f = s(e), d = !o((function () { var t = {}; return t[f] = function () { return 7 }, 7 != ""[e](t) })), p = d ? !o((function () { var t = !1, n = /a/; return n.exec = function () { return t = !0, null }, "split" === e && (n.constructor = {}, n.constructor[l] = function () { return n }), n[f](""), !t })) : void 0; if (!d || !p || "replace" === e && !u || "split" === e && !h) { var v = /./[f], m = n(a, f, ""[e], (function (e, t, n, r, i) { return t.exec === c ? d && !i ? { done: !0, value: v.call(t, n, r) } : { done: !0, value: e.call(n, t, r) } : { done: !1 } })), g = m[0], y = m[1]; r(String.prototype, e, g), i(RegExp.prototype, f, 2 == t ? function (e, t) { return y.call(e, this, t) } : function (e) { return y.call(e, this) }) } } }, "230e": function (e, t, n) { var r = n("d3f4"), i = n("7726").document, o = r(i) && r(i.createElement); e.exports = function (e) { return o ? i.createElement(e) : {} } }, "23c6": function (e, t, n) { var r = n("2d95"), i = n("2b4c")("toStringTag"), o = "Arguments" == r(function () { return arguments }()), a = function (e, t) { try { return e[t] } catch (n) { } }; e.exports = function (e) { var t, n, s; return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof (n = a(t = Object(e), i)) ? n : o ? r(t) : "Object" == (s = r(t)) && "function" == typeof t.callee ? "Arguments" : s } }, "241e": function (e, t, n) { var r = n("25eb"); e.exports = function (e) { return Object(r(e)) } }, "25eb": function (e, t) { e.exports = function (e) { if (void 0 == e) throw TypeError("Can't call method on  " + e); return e } }, "294c": function (e, t) { e.exports = function (e) { try { return !!e() } catch (t) { return !0 } } }, "2aba": function (e, t, n) { var r = n("7726"), i = n("32e9"), o = n("69a8"), a = n("ca5a")("src"), s = n("fa5b"), c = "toString", l = ("" + s).split(c); n("8378").inspectSource = function (e) { return s.call(e) }, (e.exports = function (e, t, n, s) { var c = "function" == typeof n; c && (o(n, "name") || i(n, "name", t)), e[t] !== n && (c && (o(n, a) || i(n, a, e[t] ? "" + e[t] : l.join(String(t)))), e === r ? e[t] = n : s ? e[t] ? e[t] = n : i(e, t, n) : (delete e[t], i(e, t, n))) })(Function.prototype, c, (function () { return "function" == typeof this && this[a] || s.call(this) })) }, "2b4c": function (e, t, n) { var r = n("5537")("wks"), i = n("ca5a"), o = n("7726").Symbol, a = "function" == typeof o, s = e.exports = function (e) { return r[e] || (r[e] = a && o[e] || (a ? o : i)("Symbol." + e)) }; s.store = r }, "2d00": function (e, t) { e.exports = !1 }, "2d95": function (e, t) { var n = {}.toString; e.exports = function (e) { return n.call(e).slice(8, -1) } }, "2fdb": function (e, t, n) { "use strict"; var r = n("5ca1"), i = n("d2c8"), o = "includes"; r(r.P + r.F * n("5147")(o), "String", { includes: function (e) { return !!~i(this, e, o).indexOf(e, arguments.length > 1 ? arguments[1] : void 0) } }) }, "30f1": function (e, t, n) { "use strict"; var r = n("b8e3"), i = n("63b6"), o = n("9138"), a = n("35e8"), s = n("481b"), c = n("8f60"), l = n("45f2"), u = n("53e2"), h = n("5168")("iterator"), f = !([].keys && "next" in [].keys()), d = "@@iterator", p = "keys", v = "values", m = function () { return this }; e.exports = function (e, t, n, g, y, b, x) { c(n, t, g); var w, _, C, M = function (e) { if (!f && e in T) return T[e]; switch (e) { case p: return function () { return new n(this, e) }; case v: return function () { return new n(this, e) } }return function () { return new n(this, e) } }, O = t + " Iterator", k = y == v, S = !1, T = e.prototype, A = T[h] || T[d] || y && T[y], L = A || M(y), j = y ? k ? M("entries") : L : void 0, z = "Array" == t && T.entries || A; if (z && (C = u(z.call(new e)), C !== Object.prototype && C.next && (l(C, O, !0), r || "function" == typeof C[h] || a(C, h, m))), k && A && A.name !== v && (S = !0, L = function () { return A.call(this) }), r && !x || !f && !S && T[h] || a(T, h, L), s[t] = L, s[O] = m, y) if (w = { values: k ? L : M(v), keys: b ? L : M(p), entries: j }, x) for (_ in w) _ in T || o(T, _, w[_]); else i(i.P + i.F * (f || S), t, w); return w } }, "32a6": function (e, t, n) { var r = n("241e"), i = n("c3a1"); n("ce7e")("keys", (function () { return function (e) { return i(r(e)) } })) }, "32e9": function (e, t, n) { var r = n("86cc"), i = n("4630"); e.exports = n("9e1e") ? function (e, t, n) { return r.f(e, t, i(1, n)) } : function (e, t, n) { return e[t] = n, e } }, "32fc": function (e, t, n) { var r = n("e53d").document; e.exports = r && r.documentElement }, "335c": function (e, t, n) { var r = n("6b4c"); e.exports = Object("z").propertyIsEnumerable(0) ? Object : function (e) { return "String" == r(e) ? e.split("") : Object(e) } }, "355d": function (e, t) { t.f = {}.propertyIsEnumerable }, "35e8": function (e, t, n) { var r = n("d9f6"), i = n("aebd"); e.exports = n("8e60") ? function (e, t, n) { return r.f(e, t, i(1, n)) } : function (e, t, n) { return e[t] = n, e } }, "36c3": function (e, t, n) { var r = n("335c"), i = n("25eb"); e.exports = function (e) { return r(i(e)) } }, 3702: function (e, t, n) { var r = n("481b"), i = n("5168")("iterator"), o = Array.prototype; e.exports = function (e) { return void 0 !== e && (r.Array === e || o[i] === e) } }, "3a38": function (e, t) { var n = Math.ceil, r = Math.floor; e.exports = function (e) { return isNaN(e = +e) ? 0 : (e > 0 ? r : n)(e) } }, "40c3": function (e, t, n) { var r = n("6b4c"), i = n("5168")("toStringTag"), o = "Arguments" == r(function () { return arguments }()), a = function (e, t) { try { return e[t] } catch (n) { } }; e.exports = function (e) { var t, n, s; return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof (n = a(t = Object(e), i)) ? n : o ? r(t) : "Object" == (s = r(t)) && "function" == typeof t.callee ? "Arguments" : s } }, 4588: function (e, t) { var n = Math.ceil, r = Math.floor; e.exports = function (e) { return isNaN(e = +e) ? 0 : (e > 0 ? r : n)(e) } }, "45f2": function (e, t, n) { var r = n("d9f6").f, i = n("07e3"), o = n("5168")("toStringTag"); e.exports = function (e, t, n) { e && !i(e = n ? e : e.prototype, o) && r(e, o, { configurable: !0, value: t }) } }, 4630: function (e, t) { e.exports = function (e, t) { return { enumerable: !(1 & e), configurable: !(2 & e), writable: !(4 & e), value: t } } }, "469f": function (e, t, n) { n("6c1c"), n("1654"), e.exports = n("7d7b") }, "481b": function (e, t) { e.exports = {} }, "4aa6": function (e, t, n) { e.exports = n("dc62") }, "4bf8": function (e, t, n) { var r = n("be13"); e.exports = function (e) { return Object(r(e)) } }, "4ee1": function (e, t, n) { var r = n("5168")("iterator"), i = !1; try { var o = [7][r](); o["return"] = function () { i = !0 }, Array.from(o, (function () { throw 2 })) } catch (a) { } e.exports = function (e, t) { if (!t && !i) return !1; var n = !1; try { var o = [7], s = o[r](); s.next = function () { return { done: n = !0 } }, o[r] = function () { return s }, e(o) } catch (a) { } return n } }, "50ed": function (e, t) { e.exports = function (e, t) { return { value: t, done: !!e } } }, 5147: function (e, t, n) { var r = n("2b4c")("match"); e.exports = function (e) { var t = /./; try { "/./"[e](t) } catch (n) { try { return t[r] = !1, !"/./"[e](t) } catch (i) { } } return !0 } }, 5168: function (e, t, n) { var r = n("dbdb")("wks"), i = n("62a0"), o = n("e53d").Symbol, a = "function" == typeof o, s = e.exports = function (e) { return r[e] || (r[e] = a && o[e] || (a ? o : i)("Symbol." + e)) }; s.store = r }, 5176: function (e, t, n) { e.exports = n("51b6") }, "51b6": function (e, t, n) { n("a3c3"), e.exports = n("584a").Object.assign }, "520a": function (e, t, n) { "use strict"; var r = n("0bfb"), i = RegExp.prototype.exec, o = String.prototype.replace, a = i, s = "lastIndex", c = function () { var e = /a/, t = /b*/g; return i.call(e, "a"), i.call(t, "a"), 0 !== e[s] || 0 !== t[s] }(), l = void 0 !== /()??/.exec("")[1], u = c || l; u && (a = function (e) { var t, n, a, u, h = this; return l && (n = new RegExp("^" + h.source + "$(?!\\s)", r.call(h))), c && (t = h[s]), a = i.call(h, e), c && a && (h[s] = h.global ? a.index + a[0].length : t), l && a && a.length > 1 && o.call(a[0], n, (function () { for (u = 1; u < arguments.length - 2; u++)void 0 === arguments[u] && (a[u] = void 0) })), a }), e.exports = a }, "53e2": function (e, t, n) { var r = n("07e3"), i = n("241e"), o = n("5559")("IE_PROTO"), a = Object.prototype; e.exports = Object.getPrototypeOf || function (e) { return e = i(e), r(e, o) ? e[o] : "function" == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? a : null } }, "549b": function (e, t, n) { "use strict"; var r = n("d864"), i = n("63b6"), o = n("241e"), a = n("b0dc"), s = n("3702"), c = n("b447"), l = n("20fd"), u = n("7cd6"); i(i.S + i.F * !n("4ee1")((function (e) { Array.from(e) })), "Array", { from: function (e) { var t, n, i, h, f = o(e), d = "function" == typeof this ? this : Array, p = arguments.length, v = p > 1 ? arguments[1] : void 0, m = void 0 !== v, g = 0, y = u(f); if (m && (v = r(v, p > 2 ? arguments[2] : void 0, 2)), void 0 == y || d == Array && s(y)) for (t = c(f.length), n = new d(t); t > g; g++)l(n, g, m ? v(f[g], g) : f[g]); else for (h = y.call(f), n = new d; !(i = h.next()).done; g++)l(n, g, m ? a(h, v, [i.value, g], !0) : i.value); return n.length = g, n } }) }, "54a1": function (e, t, n) { n("6c1c"), n("1654"), e.exports = n("95d5") }, 5537: function (e, t, n) { var r = n("8378"), i = n("7726"), o = "__core-js_shared__", a = i[o] || (i[o] = {}); (e.exports = function (e, t) { return a[e] || (a[e] = void 0 !== t ? t : {}) })("versions", []).push({ version: r.version, mode: n("2d00") ? "pure" : "global", copyright: "漏 2019 Denis Pushkarev (zloirock.ru)" }) }, 5559: function (e, t, n) { var r = n("dbdb")("keys"), i = n("62a0"); e.exports = function (e) { return r[e] || (r[e] = i(e)) } }, "584a": function (e, t) { var n = e.exports = { version: "2.6.5" }; "number" == typeof __e && (__e = n) }, "5b4e": function (e, t, n) { var r = n("36c3"), i = n("b447"), o = n("0fc9"); e.exports = function (e) { return function (t, n, a) { var s, c = r(t), l = i(c.length), u = o(a, l); if (e && n != n) { while (l > u) if (s = c[u++], s != s) return !0 } else for (; l > u; u++)if ((e || u in c) && c[u] === n) return e || u || 0; return !e && -1 } } }, "5ca1": function (e, t, n) { var r = n("7726"), i = n("8378"), o = n("32e9"), a = n("2aba"), s = n("9b43"), c = "prototype", l = function (e, t, n) { var u, h, f, d, p = e & l.F, v = e & l.G, m = e & l.S, g = e & l.P, y = e & l.B, b = v ? r : m ? r[t] || (r[t] = {}) : (r[t] || {})[c], x = v ? i : i[t] || (i[t] = {}), w = x[c] || (x[c] = {}); for (u in v && (n = t), n) h = !p && b && void 0 !== b[u], f = (h ? b : n)[u], d = y && h ? s(f, r) : g && "function" == typeof f ? s(Function.call, f) : f, b && a(b, u, f, e & l.U), x[u] != f && o(x, u, d), g && w[u] != f && (w[u] = f) }; r.core = i, l.F = 1, l.G = 2, l.S = 4, l.P = 8, l.B = 16, l.W = 32, l.U = 64, l.R = 128, e.exports = l }, "5d73": function (e, t, n) { e.exports = n("469f") }, "5f1b": function (e, t, n) { "use strict"; var r = n("23c6"), i = RegExp.prototype.exec; e.exports = function (e, t) { var n = e.exec; if ("function" === typeof n) { var o = n.call(e, t); if ("object" !== typeof o) throw new TypeError("RegExp exec method returned something other than an Object or null"); return o } if ("RegExp" !== r(e)) throw new TypeError("RegExp#exec called on incompatible receiver"); return i.call(e, t) } }, "626a": function (e, t, n) { var r = n("2d95"); e.exports = Object("z").propertyIsEnumerable(0) ? Object : function (e) { return "String" == r(e) ? e.split("") : Object(e) } }, "62a0": function (e, t) { var n = 0, r = Math.random(); e.exports = function (e) { return "Symbol(".concat(void 0 === e ? "" : e, ")_", (++n + r).toString(36)) } }, "63b6": function (e, t, n) { var r = n("e53d"), i = n("584a"), o = n("d864"), a = n("35e8"), s = n("07e3"), c = "prototype", l = function (e, t, n) { var u, h, f, d = e & l.F, p = e & l.G, v = e & l.S, m = e & l.P, g = e & l.B, y = e & l.W, b = p ? i : i[t] || (i[t] = {}), x = b[c], w = p ? r : v ? r[t] : (r[t] || {})[c]; for (u in p && (n = t), n) h = !d && w && void 0 !== w[u], h && s(b, u) || (f = h ? w[u] : n[u], b[u] = p && "function" != typeof w[u] ? n[u] : g && h ? o(f, r) : y && w[u] == f ? function (e) { var t = function (t, n, r) { if (this instanceof e) { switch (arguments.length) { case 0: return new e; case 1: return new e(t); case 2: return new e(t, n) }return new e(t, n, r) } return e.apply(this, arguments) }; return t[c] = e[c], t }(f) : m && "function" == typeof f ? o(Function.call, f) : f, m && ((b.virtual || (b.virtual = {}))[u] = f, e & l.R && x && !x[u] && a(x, u, f))) }; l.F = 1, l.G = 2, l.S = 4, l.P = 8, l.B = 16, l.W = 32, l.U = 64, l.R = 128, e.exports = l }, 6762: function (e, t, n) { "use strict"; var r = n("5ca1"), i = n("c366")(!0); r(r.P, "Array", { includes: function (e) { return i(this, e, arguments.length > 1 ? arguments[1] : void 0) } }), n("9c6c")("includes") }, 6821: function (e, t, n) { var r = n("626a"), i = n("be13"); e.exports = function (e) { return r(i(e)) } }, "69a8": function (e, t) { var n = {}.hasOwnProperty; e.exports = function (e, t) { return n.call(e, t) } }, "6a99": function (e, t, n) { var r = n("d3f4"); e.exports = function (e, t) { if (!r(e)) return e; var n, i; if (t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; if ("function" == typeof (n = e.valueOf) && !r(i = n.call(e))) return i; if (!t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; throw TypeError("Can't convert object to primitive value") } }, "6b4c": function (e, t) { var n = {}.toString; e.exports = function (e) { return n.call(e).slice(8, -1) } }, "6c1c": function (e, t, n) { n("c367"); for (var r = n("e53d"), i = n("35e8"), o = n("481b"), a = n("5168")("toStringTag"), s = "CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","), c = 0; c < s.length; c++) { var l = s[c], u = r[l], h = u && u.prototype; h && !h[a] && i(h, a, l), o[l] = o.Array } }, "71c1": function (e, t, n) { var r = n("3a38"), i = n("25eb"); e.exports = function (e) { return function (t, n) { var o, a, s = String(i(t)), c = r(n), l = s.length; return c < 0 || c >= l ? e ? "" : void 0 : (o = s.charCodeAt(c), o < 55296 || o > 56319 || c + 1 === l || (a = s.charCodeAt(c + 1)) < 56320 || a > 57343 ? e ? s.charAt(c) : o : e ? s.slice(c, c + 2) : a - 56320 + (o - 55296 << 10) + 65536) } } }, 7726: function (e, t) { var n = e.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); "number" == typeof __g && (__g = n) }, "774e": function (e, t, n) { e.exports = n("d2d5") }, "77f1": function (e, t, n) { var r = n("4588"), i = Math.max, o = Math.min; e.exports = function (e, t) { return e = r(e), e < 0 ? i(e + t, 0) : o(e, t) } }, "794b": function (e, t, n) { e.exports = !n("8e60") && !n("294c")((function () { return 7 != Object.defineProperty(n("1ec9")("div"), "a", { get: function () { return 7 } }).a })) }, "79aa": function (e, t) { e.exports = function (e) { if ("function" != typeof e) throw TypeError(e + " is not a function!"); return e } }, "79e5": function (e, t) { e.exports = function (e) { try { return !!e() } catch (t) { return !0 } } }, "7cd6": function (e, t, n) { var r = n("40c3"), i = n("5168")("iterator"), o = n("481b"); e.exports = n("584a").getIteratorMethod = function (e) { if (void 0 != e) return e[i] || e["@@iterator"] || o[r(e)] } }, "7d7b": function (e, t, n) { var r = n("e4ae"), i = n("7cd6"); e.exports = n("584a").getIterator = function (e) { var t = i(e); if ("function" != typeof t) throw TypeError(e + " is not iterable!"); return r(t.call(e)) } }, "7e90": function (e, t, n) { var r = n("d9f6"), i = n("e4ae"), o = n("c3a1"); e.exports = n("8e60") ? Object.defineProperties : function (e, t) { i(e); var n, a = o(t), s = a.length, c = 0; while (s > c) r.f(e, n = a[c++], t[n]); return e } }, 8378: function (e, t) { var n = e.exports = { version: "2.6.5" }; "number" == typeof __e && (__e = n) }, 8436: function (e, t) { e.exports = function () { } }, "86cc": function (e, t, n) { var r = n("cb7c"), i = n("c69a"), o = n("6a99"), a = Object.defineProperty; t.f = n("9e1e") ? Object.defineProperty : function (e, t, n) { if (r(e), t = o(t, !0), r(n), i) try { return a(e, t, n) } catch (s) { } if ("get" in n || "set" in n) throw TypeError("Accessors not supported!"); return "value" in n && (e[t] = n.value), e } }, "8aae": function (e, t, n) { n("32a6"), e.exports = n("584a").Object.keys }, "8e60": function (e, t, n) { e.exports = !n("294c")((function () { return 7 != Object.defineProperty({}, "a", { get: function () { return 7 } }).a })) }, "8f60": function (e, t, n) { "use strict"; var r = n("a159"), i = n("aebd"), o = n("45f2"), a = {}; n("35e8")(a, n("5168")("iterator"), (function () { return this })), e.exports = function (e, t, n) { e.prototype = r(a, { next: i(1, n) }), o(e, t + " Iterator") } }, 9003: function (e, t, n) { var r = n("6b4c"); e.exports = Array.isArray || function (e) { return "Array" == r(e) } }, 9138: function (e, t, n) { e.exports = n("35e8") }, 9306: function (e, t, n) { "use strict"; var r = n("c3a1"), i = n("9aa9"), o = n("355d"), a = n("241e"), s = n("335c"), c = Object.assign; e.exports = !c || n("294c")((function () { var e = {}, t = {}, n = Symbol(), r = "abcdefghijklmnopqrst"; return e[n] = 7, r.split("").forEach((function (e) { t[e] = e })), 7 != c({}, e)[n] || Object.keys(c({}, t)).join("") != r })) ? function (e, t) { var n = a(e), c = arguments.length, l = 1, u = i.f, h = o.f; while (c > l) { var f, d = s(arguments[l++]), p = u ? r(d).concat(u(d)) : r(d), v = p.length, m = 0; while (v > m) h.call(d, f = p[m++]) && (n[f] = d[f]) } return n } : c }, 9427: function (e, t, n) { var r = n("63b6"); r(r.S, "Object", { create: n("a159") }) }, "95d5": function (e, t, n) { var r = n("40c3"), i = n("5168")("iterator"), o = n("481b"); e.exports = n("584a").isIterable = function (e) { var t = Object(e); return void 0 !== t[i] || "@@iterator" in t || o.hasOwnProperty(r(t)) } }, "9aa9": function (e, t) { t.f = Object.getOwnPropertySymbols }, "9b43": function (e, t, n) { var r = n("d8e8"); e.exports = function (e, t, n) { if (r(e), void 0 === t) return e; switch (n) { case 1: return function (n) { return e.call(t, n) }; case 2: return function (n, r) { return e.call(t, n, r) }; case 3: return function (n, r, i) { return e.call(t, n, r, i) } }return function () { return e.apply(t, arguments) } } }, "9c6c": function (e, t, n) { var r = n("2b4c")("unscopables"), i = Array.prototype; void 0 == i[r] && n("32e9")(i, r, {}), e.exports = function (e) { i[r][e] = !0 } }, "9def": function (e, t, n) { var r = n("4588"), i = Math.min; e.exports = function (e) { return e > 0 ? i(r(e), 9007199254740991) : 0 } }, "9e1e": function (e, t, n) { e.exports = !n("79e5")((function () { return 7 != Object.defineProperty({}, "a", { get: function () { return 7 } }).a })) }, a159: function (e, t, n) { var r = n("e4ae"), i = n("7e90"), o = n("1691"), a = n("5559")("IE_PROTO"), s = function () { }, c = "prototype", l = function () { var e, t = n("1ec9")("iframe"), r = o.length, i = "<", a = ">"; t.style.display = "none", n("32fc").appendChild(t), t.src = "javascript:", e = t.contentWindow.document, e.open(), e.write(i + "script" + a + "document.F=Object" + i + "/script" + a), e.close(), l = e.F; while (r--) delete l[c][o[r]]; return l() }; e.exports = Object.create || function (e, t) { var n; return null !== e ? (s[c] = r(e), n = new s, s[c] = null, n[a] = e) : n = l(), void 0 === t ? n : i(n, t) } }, a352: function (e, t) { e.exports = n("aa47") }, a3c3: function (e, t, n) { var r = n("63b6"); r(r.S + r.F, "Object", { assign: n("9306") }) }, a481: function (e, t, n) { "use strict"; var r = n("cb7c"), i = n("4bf8"), o = n("9def"), a = n("4588"), s = n("0390"), c = n("5f1b"), l = Math.max, u = Math.min, h = Math.floor, f = /\$([$&`']|\d\d?|<[^>]*>)/g, d = /\$([$&`']|\d\d?)/g, p = function (e) { return void 0 === e ? e : String(e) }; n("214f")("replace", 2, (function (e, t, n, v) { return [function (r, i) { var o = e(this), a = void 0 == r ? void 0 : r[t]; return void 0 !== a ? a.call(r, o, i) : n.call(String(o), r, i) }, function (e, t) { var i = v(n, e, this, t); if (i.done) return i.value; var h = r(e), f = String(this), d = "function" === typeof t; d || (t = String(t)); var g = h.global; if (g) { var y = h.unicode; h.lastIndex = 0 } var b = []; while (1) { var x = c(h, f); if (null === x) break; if (b.push(x), !g) break; var w = String(x[0]); "" === w && (h.lastIndex = s(f, o(h.lastIndex), y)) } for (var _ = "", C = 0, M = 0; M < b.length; M++) { x = b[M]; for (var O = String(x[0]), k = l(u(a(x.index), f.length), 0), S = [], T = 1; T < x.length; T++)S.push(p(x[T])); var A = x.groups; if (d) { var L = [O].concat(S, k, f); void 0 !== A && L.push(A); var j = String(t.apply(void 0, L)) } else j = m(O, f, k, S, A, t); k >= C && (_ += f.slice(C, k) + j, C = k + O.length) } return _ + f.slice(C) }]; function m(e, t, r, o, a, s) { var c = r + e.length, l = o.length, u = d; return void 0 !== a && (a = i(a), u = f), n.call(s, u, (function (n, i) { var s; switch (i.charAt(0)) { case "$": return "$"; case "&": return e; case "`": return t.slice(0, r); case "'": return t.slice(c); case "<": s = a[i.slice(1, -1)]; break; default: var u = +i; if (0 === u) return n; if (u > l) { var f = h(u / 10); return 0 === f ? n : f <= l ? void 0 === o[f - 1] ? i.charAt(1) : o[f - 1] + i.charAt(1) : n } s = o[u - 1] }return void 0 === s ? "" : s })) } })) }, a4bb: function (e, t, n) { e.exports = n("8aae") }, a745: function (e, t, n) { e.exports = n("f410") }, aae3: function (e, t, n) { var r = n("d3f4"), i = n("2d95"), o = n("2b4c")("match"); e.exports = function (e) { var t; return r(e) && (void 0 !== (t = e[o]) ? !!t : "RegExp" == i(e)) } }, aebd: function (e, t) { e.exports = function (e, t) { return { enumerable: !(1 & e), configurable: !(2 & e), writable: !(4 & e), value: t } } }, b0c5: function (e, t, n) { "use strict"; var r = n("520a"); n("5ca1")({ target: "RegExp", proto: !0, forced: r !== /./.exec }, { exec: r }) }, b0dc: function (e, t, n) { var r = n("e4ae"); e.exports = function (e, t, n, i) { try { return i ? t(r(n)[0], n[1]) : t(n) } catch (a) { var o = e["return"]; throw void 0 !== o && r(o.call(e)), a } } }, b447: function (e, t, n) { var r = n("3a38"), i = Math.min; e.exports = function (e) { return e > 0 ? i(r(e), 9007199254740991) : 0 } }, b8e3: function (e, t) { e.exports = !0 }, be13: function (e, t) { e.exports = function (e) { if (void 0 == e) throw TypeError("Can't call method on  " + e); return e } }, c366: function (e, t, n) { var r = n("6821"), i = n("9def"), o = n("77f1"); e.exports = function (e) { return function (t, n, a) { var s, c = r(t), l = i(c.length), u = o(a, l); if (e && n != n) { while (l > u) if (s = c[u++], s != s) return !0 } else for (; l > u; u++)if ((e || u in c) && c[u] === n) return e || u || 0; return !e && -1 } } }, c367: function (e, t, n) { "use strict"; var r = n("8436"), i = n("50ed"), o = n("481b"), a = n("36c3"); e.exports = n("30f1")(Array, "Array", (function (e, t) { this._t = a(e), this._i = 0, this._k = t }), (function () { var e = this._t, t = this._k, n = this._i++; return !e || n >= e.length ? (this._t = void 0, i(1)) : i(0, "keys" == t ? n : "values" == t ? e[n] : [n, e[n]]) }), "values"), o.Arguments = o.Array, r("keys"), r("values"), r("entries") }, c3a1: function (e, t, n) { var r = n("e6f3"), i = n("1691"); e.exports = Object.keys || function (e) { return r(e, i) } }, c649: function (e, t, n) { "use strict"; (function (e) { n.d(t, "c", (function () { return h })), n.d(t, "a", (function () { return l })), n.d(t, "b", (function () { return a })), n.d(t, "d", (function () { return u })), n("a481"); var r = n("4aa6"), i = n.n(r); function o() { return "undefined" !== typeof window ? window.console : e.console } var a = o(); function s(e) { var t = i()(null); return function (n) { var r = t[n]; return r || (t[n] = e(n)) } } var c = /-(\w)/g, l = s((function (e) { return e.replace(c, (function (e, t) { return t ? t.toUpperCase() : "" })) })); function u(e) { null !== e.parentElement && e.parentElement.removeChild(e) } function h(e, t, n) { var r = 0 === n ? e.children[0] : e.children[n - 1].nextSibling; e.insertBefore(t, r) } }).call(this, n("c8ba")) }, c69a: function (e, t, n) { e.exports = !n("9e1e") && !n("79e5")((function () { return 7 != Object.defineProperty(n("230e")("div"), "a", { get: function () { return 7 } }).a })) }, c8ba: function (e, t) { var n; n = function () { return this }(); try { n = n || new Function("return this")() } catch (r) { "object" === typeof window && (n = window) } e.exports = n }, c8bb: function (e, t, n) { e.exports = n("54a1") }, ca5a: function (e, t) { var n = 0, r = Math.random(); e.exports = function (e) { return "Symbol(".concat(void 0 === e ? "" : e, ")_", (++n + r).toString(36)) } }, cb7c: function (e, t, n) { var r = n("d3f4"); e.exports = function (e) { if (!r(e)) throw TypeError(e + " is not an object!"); return e } }, ce7e: function (e, t, n) { var r = n("63b6"), i = n("584a"), o = n("294c"); e.exports = function (e, t) { var n = (i.Object || {})[e] || Object[e], a = {}; a[e] = t(n), r(r.S + r.F * o((function () { n(1) })), "Object", a) } }, d2c8: function (e, t, n) { var r = n("aae3"), i = n("be13"); e.exports = function (e, t, n) { if (r(t)) throw TypeError("String#" + n + " doesn't accept regex!"); return String(i(e)) } }, d2d5: function (e, t, n) { n("1654"), n("549b"), e.exports = n("584a").Array.from }, d3f4: function (e, t) { e.exports = function (e) { return "object" === typeof e ? null !== e : "function" === typeof e } }, d864: function (e, t, n) { var r = n("79aa"); e.exports = function (e, t, n) { if (r(e), void 0 === t) return e; switch (n) { case 1: return function (n) { return e.call(t, n) }; case 2: return function (n, r) { return e.call(t, n, r) }; case 3: return function (n, r, i) { return e.call(t, n, r, i) } }return function () { return e.apply(t, arguments) } } }, d8e8: function (e, t) { e.exports = function (e) { if ("function" != typeof e) throw TypeError(e + " is not a function!"); return e } }, d9f6: function (e, t, n) { var r = n("e4ae"), i = n("794b"), o = n("1bc3"), a = Object.defineProperty; t.f = n("8e60") ? Object.defineProperty : function (e, t, n) { if (r(e), t = o(t, !0), r(n), i) try { return a(e, t, n) } catch (s) { } if ("get" in n || "set" in n) throw TypeError("Accessors not supported!"); return "value" in n && (e[t] = n.value), e } }, dbdb: function (e, t, n) { var r = n("584a"), i = n("e53d"), o = "__core-js_shared__", a = i[o] || (i[o] = {}); (e.exports = function (e, t) { return a[e] || (a[e] = void 0 !== t ? t : {}) })("versions", []).push({ version: r.version, mode: n("b8e3") ? "pure" : "global", copyright: "漏 2019 Denis Pushkarev (zloirock.ru)" }) }, dc62: function (e, t, n) { n("9427"); var r = n("584a").Object; e.exports = function (e, t) { return r.create(e, t) } }, e4ae: function (e, t, n) { var r = n("f772"); e.exports = function (e) { if (!r(e)) throw TypeError(e + " is not an object!"); return e } }, e53d: function (e, t) { var n = e.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); "number" == typeof __g && (__g = n) }, e6f3: function (e, t, n) { var r = n("07e3"), i = n("36c3"), o = n("5b4e")(!1), a = n("5559")("IE_PROTO"); e.exports = function (e, t) { var n, s = i(e), c = 0, l = []; for (n in s) n != a && r(s, n) && l.push(n); while (t.length > c) r(s, n = t[c++]) && (~o(l, n) || l.push(n)); return l } }, f410: function (e, t, n) { n("1af6"), e.exports = n("584a").Array.isArray }, f559: function (e, t, n) { "use strict"; var r = n("5ca1"), i = n("9def"), o = n("d2c8"), a = "startsWith", s = ""[a]; r(r.P + r.F * n("5147")(a), "String", { startsWith: function (e) { var t = o(this, e, a), n = i(Math.min(arguments.length > 1 ? arguments[1] : void 0, t.length)), r = String(e); return s ? s.call(t, r, n) : t.slice(n, n + r.length) === r } }) }, f772: function (e, t) { e.exports = function (e) { return "object" === typeof e ? null !== e : "function" === typeof e } }, fa5b: function (e, t, n) { e.exports = n("5537")("native-function-to-string", Function.toString) }, fb15: function (e, t, n) { "use strict"; var r; n.r(t), "undefined" !== typeof window && (r = window.document.currentScript) && (r = r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)) && (n.p = r[1]); var i = n("5176"), o = n.n(i), a = (n("f559"), n("a4bb")), s = n.n(a), c = n("a745"), l = n.n(c); function u(e) { if (l()(e)) return e } var h = n("5d73"), f = n.n(h); function d(e, t) { var n = [], r = !0, i = !1, o = void 0; try { for (var a, s = f()(e); !(r = (a = s.next()).done); r = !0)if (n.push(a.value), t && n.length === t) break } catch (c) { i = !0, o = c } finally { try { r || null == s["return"] || s["return"]() } finally { if (i) throw o } } return n } function p() { throw new TypeError("Invalid attempt to destructure non-iterable instance") } function v(e, t) { return u(e) || d(e, t) || p() } function m(e) { if (l()(e)) { for (var t = 0, n = new Array(e.length); t < e.length; t++)n[t] = e[t]; return n } } n("6762"), n("2fdb"); var g = n("774e"), y = n.n(g), b = n("c8bb"), x = n.n(b); function w(e) { if (x()(Object(e)) || "[object Arguments]" === Object.prototype.toString.call(e)) return y()(e) } function _() { throw new TypeError("Invalid attempt to spread non-iterable instance") } function C(e) { return m(e) || w(e) || _() } var M = n("a352"), O = n.n(M), k = n("c649"); function S(e, t, n) { return void 0 === n || (e = e || {}, e[t] = n), e } function T(e, t) { return e.map((function (e) { return e.elm })).indexOf(t) } function A(e, t, n, r) { if (!e) return []; var i = e.map((function (e) { return e.elm })), o = t.length - r, a = C(t).map((function (e, t) { return t >= o ? i.length : i.indexOf(e) })); return n ? a.filter((function (e) { return -1 !== e })) : a } function L(e, t) { var n = this; this.$nextTick((function () { return n.$emit(e.toLowerCase(), t) })) } function j(e) { var t = this; return function (n) { null !== t.realList && t["onDrag" + e](n), L.call(t, e, n) } } function z(e) { return ["transition-group", "TransitionGroup"].includes(e) } function E(e) { if (!e || 1 !== e.length) return !1; var t = v(e, 1), n = t[0].componentOptions; return !!n && z(n.tag) } function P(e, t, n) { return e[n] || (t[n] ? t[n]() : void 0) } function D(e, t, n) { var r = 0, i = 0, o = P(t, n, "header"); o && (r = o.length, e = e ? [].concat(C(o), C(e)) : C(o)); var a = P(t, n, "footer"); return a && (i = a.length, e = e ? [].concat(C(e), C(a)) : C(a)), { children: e, headerOffset: r, footerOffset: i } } function H(e, t) { var n = null, r = function (e, t) { n = S(n, e, t) }, i = s()(e).filter((function (e) { return "id" === e || e.startsWith("data-") })).reduce((function (t, n) { return t[n] = e[n], t }), {}); if (r("attrs", i), !t) return n; var a = t.on, c = t.props, l = t.attrs; return r("on", a), r("props", c), o()(n.attrs, l), n } var V = ["Start", "Add", "Remove", "Update", "End"], I = ["Choose", "Unchoose", "Sort", "Filter", "Clone"], N = ["Move"].concat(V, I).map((function (e) { return "on" + e })), R = null, F = { options: Object, list: { type: Array, required: !1, default: null }, value: { type: Array, required: !1, default: null }, noTransitionOnDrag: { type: Boolean, default: !1 }, clone: { type: Function, default: function (e) { return e } }, element: { type: String, default: "div" }, tag: { type: String, default: null }, move: { type: Function, default: null }, componentData: { type: Object, required: !1, default: null } }, Y = { name: "draggable", inheritAttrs: !1, props: F, data: function () { return { transitionMode: !1, noneFunctionalComponentMode: !1 } }, render: function (e) { var t = this.$slots.default; this.transitionMode = E(t); var n = D(t, this.$slots, this.$scopedSlots), r = n.children, i = n.headerOffset, o = n.footerOffset; this.headerOffset = i, this.footerOffset = o; var a = H(this.$attrs, this.componentData); return e(this.getTag(), a, r) }, created: function () { null !== this.list && null !== this.value && k["b"].error("Value and list props are mutually exclusive! Please set one or another."), "div" !== this.element && k["b"].warn("Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props"), void 0 !== this.options && k["b"].warn("Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props") }, mounted: function () { var e = this; if (this.noneFunctionalComponentMode = this.getTag().toLowerCase() !== this.$el.nodeName.toLowerCase() && !this.getIsFunctional(), this.noneFunctionalComponentMode && this.transitionMode) throw new Error("Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: ".concat(this.getTag())); var t = {}; V.forEach((function (n) { t["on" + n] = j.call(e, n) })), I.forEach((function (n) { t["on" + n] = L.bind(e, n) })); var n = s()(this.$attrs).reduce((function (t, n) { return t[Object(k["a"])(n)] = e.$attrs[n], t }), {}), r = o()({}, this.options, n, t, { onMove: function (t, n) { return e.onDragMove(t, n) } }); !("draggable" in r) && (r.draggable = ">*"), this._sortable = new O.a(this.rootContainer, r), this.computeIndexes() }, beforeDestroy: function () { void 0 !== this._sortable && this._sortable.destroy() }, computed: { rootContainer: function () { return this.transitionMode ? this.$el.children[0] : this.$el }, realList: function () { return this.list ? this.list : this.value } }, watch: { options: { handler: function (e) { this.updateOptions(e) }, deep: !0 }, $attrs: { handler: function (e) { this.updateOptions(e) }, deep: !0 }, realList: function () { this.computeIndexes() } }, methods: { getIsFunctional: function () { var e = this._vnode.fnOptions; return e && e.functional }, getTag: function () { return this.tag || this.element }, updateOptions: function (e) { for (var t in e) { var n = Object(k["a"])(t); -1 === N.indexOf(n) && this._sortable.option(n, e[t]) } }, getChildrenNodes: function () { if (this.noneFunctionalComponentMode) return this.$children[0].$slots.default; var e = this.$slots.default; return this.transitionMode ? e[0].child.$slots.default : e }, computeIndexes: function () { var e = this; this.$nextTick((function () { e.visibleIndexes = A(e.getChildrenNodes(), e.rootContainer.children, e.transitionMode, e.footerOffset) })) }, getUnderlyingVm: function (e) { var t = T(this.getChildrenNodes() || [], e); if (-1 === t) return null; var n = this.realList[t]; return { index: t, element: n } }, getUnderlyingPotencialDraggableComponent: function (e) { var t = e.__vue__; return t && t.$options && z(t.$options._componentTag) ? t.$parent : !("realList" in t) && 1 === t.$children.length && "realList" in t.$children[0] ? t.$children[0] : t }, emitChanges: function (e) { var t = this; this.$nextTick((function () { t.$emit("change", e) })) }, alterList: function (e) { if (this.list) e(this.list); else { var t = C(this.value); e(t), this.$emit("input", t) } }, spliceList: function () { var e = arguments, t = function (t) { return t.splice.apply(t, C(e)) }; this.alterList(t) }, updatePosition: function (e, t) { var n = function (n) { return n.splice(t, 0, n.splice(e, 1)[0]) }; this.alterList(n) }, getRelatedContextFromMoveEvent: function (e) { var t = e.to, n = e.related, r = this.getUnderlyingPotencialDraggableComponent(t); if (!r) return { component: r }; var i = r.realList, a = { list: i, component: r }; if (t !== n && i && r.getUnderlyingVm) { var s = r.getUnderlyingVm(n); if (s) return o()(s, a) } return a }, getVmIndex: function (e) { var t = this.visibleIndexes, n = t.length; return e > n - 1 ? n : t[e] }, getComponent: function () { return this.$slots.default[0].componentInstance }, resetTransitionData: function (e) { if (this.noTransitionOnDrag && this.transitionMode) { var t = this.getChildrenNodes(); t[e].data = null; var n = this.getComponent(); n.children = [], n.kept = void 0 } }, onDragStart: function (e) { this.context = this.getUnderlyingVm(e.item), e.item._underlying_vm_ = this.clone(this.context.element), R = e.item }, onDragAdd: function (e) { var t = e.item._underlying_vm_; if (void 0 !== t) { Object(k["d"])(e.item); var n = this.getVmIndex(e.newIndex); this.spliceList(n, 0, t), this.computeIndexes(); var r = { element: t, newIndex: n }; this.emitChanges({ added: r }) } }, onDragRemove: function (e) { if (Object(k["c"])(this.rootContainer, e.item, e.oldIndex), "clone" !== e.pullMode) { var t = this.context.index; this.spliceList(t, 1); var n = { element: this.context.element, oldIndex: t }; this.resetTransitionData(t), this.emitChanges({ removed: n }) } else Object(k["d"])(e.clone) }, onDragUpdate: function (e) { Object(k["d"])(e.item), Object(k["c"])(e.from, e.item, e.oldIndex); var t = this.context.index, n = this.getVmIndex(e.newIndex); this.updatePosition(t, n); var r = { element: this.context.element, oldIndex: t, newIndex: n }; this.emitChanges({ moved: r }) }, updateProperty: function (e, t) { e.hasOwnProperty(t) && (e[t] += this.headerOffset) }, computeFutureIndex: function (e, t) { if (!e.element) return 0; var n = C(t.to.children).filter((function (e) { return "none" !== e.style["display"] })), r = n.indexOf(t.related), i = e.component.getVmIndex(r), o = -1 !== n.indexOf(R); return o || !t.willInsertAfter ? i : i + 1 }, onDragMove: function (e, t) { var n = this.move; if (!n || !this.realList) return !0; var r = this.getRelatedContextFromMoveEvent(e), i = this.context, a = this.computeFutureIndex(r, e); o()(i, { futureIndex: a }); var s = o()({}, e, { relatedContext: r, draggedContext: i }); return n(s, t) }, onDragEnd: function () { this.computeIndexes(), R = null } } }; "undefined" !== typeof window && "Vue" in window && window.Vue.component("draggable", Y); var $ = Y; t["default"] = $ } })["default"] }, "31f4": function (e, t) { e.exports = function (e, t, n) { var r = void 0 === n; switch (t.length) { case 0: return r ? e() : e.call(n); case 1: return r ? e(t[0]) : e.call(n, t[0]); case 2: return r ? e(t[0], t[1]) : e.call(n, t[0], t[1]); case 3: return r ? e(t[0], t[1], t[2]) : e.call(n, t[0], t[1], t[2]); case 4: return r ? e(t[0], t[1], t[2], t[3]) : e.call(n, t[0], t[1], t[2], t[3]) }return e.apply(n, t) } }, "320c": function (e, t, n) {
+                    "use strict";
+/*
+object-assign
+(c) Sindre Sorhus
+@license MIT
+*/var r = Object.getOwnPropertySymbols, i = Object.prototype.hasOwnProperty, o = Object.prototype.propertyIsEnumerable; function a(e) { if (null === e || void 0 === e) throw new TypeError("Object.assign cannot be called with null or undefined"); return Object(e) } function s() { try { if (!Object.assign) return !1; var e = new String("abc"); if (e[5] = "de", "5" === Object.getOwnPropertyNames(e)[0]) return !1; for (var t = {}, n = 0; n < 10; n++)t["_" + String.fromCharCode(n)] = n; var r = Object.getOwnPropertyNames(t).map((function (e) { return t[e] })); if ("0123456789" !== r.join("")) return !1; var i = {}; return "abcdefghijklmnopqrst".split("").forEach((function (e) { i[e] = e })), "abcdefghijklmnopqrst" === Object.keys(Object.assign({}, i)).join("") } catch (o) { return !1 } } e.exports = s() ? Object.assign : function (e, t) { for (var n, s, c = a(e), l = 1; l < arguments.length; l++) { for (var u in n = Object(arguments[l]), n) i.call(n, u) && (c[u] = n[u]); if (r) { s = r(n); for (var h = 0; h < s.length; h++)o.call(n, s[h]) && (c[s[h]] = n[s[h]]) } } return c }
+                }, "327d": function (e, t, n) { var r = n("50c6"), i = r((function (e, t, n) { e[n ? 0 : 1].push(t) }), (function () { return [[], []] })); e.exports = i }, "32b3": function (e, t, n) { var r = n("872a"), i = n("9638"), o = Object.prototype, a = o.hasOwnProperty; function s(e, t, n) { var o = e[t]; a.call(e, t) && i(o, n) && (void 0 !== n || t in e) || r(e, t, n) } e.exports = s }, "32e9": function (e, t, n) { var r = n("86cc"), i = n("4630"); e.exports = n("9e1e") ? function (e, t, n) { return r.f(e, t, i(1, n)) } : function (e, t, n) { return e[t] = n, e } }, "32f4": function (e, t, n) { var r = n("2d7c"), i = n("d327"), o = Object.prototype, a = o.propertyIsEnumerable, s = Object.getOwnPropertySymbols, c = s ? function (e) { return null == e ? [] : (e = Object(e), r(s(e), (function (t) { return a.call(e, t) }))) } : i; e.exports = c }, "32fc": function (e, t, n) { var r = n("e53d").document; e.exports = r && r.documentElement }, "335c": function (e, t, n) { var r = n("6b4c"); e.exports = Object("z").propertyIsEnumerable(0) ? Object : function (e) { return "String" == r(e) ? e.split("") : Object(e) } }, "33a4": function (e, t, n) { var r = n("84f2"), i = n("2b4c")("iterator"), o = Array.prototype; e.exports = function (e) { return void 0 !== e && (r.Array === e || o[i] === e) } }, "34ac": function (e, t, n) { var r = n("9520"), i = n("1368"), o = n("1a8c"), a = n("dc57"), s = /[\\^$.*+?()[\]{}|]/g, c = /^\[object .+?Constructor\]$/, l = Function.prototype, u = Object.prototype, h = l.toString, f = u.hasOwnProperty, d = RegExp("^" + h.call(f).replace(s, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"); function p(e) { if (!o(e) || i(e)) return !1; var t = r(e) ? d : c; return t.test(a(e)) } e.exports = p }, "355d": function (e, t) { t.f = {}.propertyIsEnumerable }, "35e8": function (e, t, n) { var r = n("d9f6"), i = n("aebd"); e.exports = n("8e60") ? function (e, t, n) { return r.f(e, t, i(1, n)) } : function (e, t, n) { return e[t] = n, e } }, 3698: function (e, t) { function n(e, t) { return null == e ? void 0 : e[t] } e.exports = n }, "36c3": function (e, t, n) { var r = n("335c"), i = n("25eb"); e.exports = function (e) { return r(i(e)) } }, 3702: function (e, t, n) { var r = n("481b"), i = n("5168")("iterator"), o = Array.prototype; e.exports = function (e) { return void 0 !== e && (r.Array === e || o[i] === e) } }, 3729: function (e, t, n) { var r = n("9e69"), i = n("00fd"), o = n("29f3"), a = "[object Null]", s = "[object Undefined]", c = r ? r.toStringTag : void 0; function l(e) { return null == e ? void 0 === e ? s : a : c && c in Object(e) ? i(e) : o(e) } e.exports = l }, 3818: function (e, t, n) { var r = n("7e64"), i = n("8057"), o = n("32b3"), a = n("5b01"), s = n("0f0f"), c = n("e538"), l = n("4359"), u = n("54eb"), h = n("1041"), f = n("a994"), d = n("1bac"), p = n("42a2"), v = n("c87c"), m = n("c2b6"), g = n("fa21"), y = n("6747"), b = n("0d24"), x = n("cc45"), w = n("1a8c"), _ = n("d7ee"), C = n("ec69"), M = n("9934"), O = 1, k = 2, S = 4, T = "[object Arguments]", A = "[object Array]", L = "[object Boolean]", j = "[object Date]", z = "[object Error]", E = "[object Function]", P = "[object GeneratorFunction]", D = "[object Map]", H = "[object Number]", V = "[object Object]", I = "[object RegExp]", N = "[object Set]", R = "[object String]", F = "[object Symbol]", Y = "[object WeakMap]", $ = "[object ArrayBuffer]", B = "[object DataView]", W = "[object Float32Array]", q = "[object Float64Array]", U = "[object Int8Array]", K = "[object Int16Array]", G = "[object Int32Array]", X = "[object Uint8Array]", J = "[object Uint8ClampedArray]", Q = "[object Uint16Array]", Z = "[object Uint32Array]", ee = {}; function te(e, t, n, A, L, j) { var z, D = t & O, H = t & k, I = t & S; if (n && (z = L ? n(e, A, L, j) : n(e)), void 0 !== z) return z; if (!w(e)) return e; var N = y(e); if (N) { if (z = v(e), !D) return l(e, z) } else { var R = p(e), F = R == E || R == P; if (b(e)) return c(e, D); if (R == V || R == T || F && !L) { if (z = H || F ? {} : g(e), !D) return H ? h(e, s(z, e)) : u(e, a(z, e)) } else { if (!ee[R]) return L ? e : {}; z = m(e, R, D) } } j || (j = new r); var Y = j.get(e); if (Y) return Y; j.set(e, z), _(e) ? e.forEach((function (r) { z.add(te(r, t, n, r, e, j)) })) : x(e) && e.forEach((function (r, i) { z.set(i, te(r, t, n, i, e, j)) })); var $ = I ? H ? d : f : H ? M : C, B = N ? void 0 : $(e); return i(B || e, (function (r, i) { B && (i = r, r = e[i]), o(z, i, te(r, t, n, i, e, j)) })), z } ee[T] = ee[A] = ee[$] = ee[B] = ee[L] = ee[j] = ee[W] = ee[q] = ee[U] = ee[K] = ee[G] = ee[D] = ee[H] = ee[V] = ee[I] = ee[N] = ee[R] = ee[F] = ee[X] = ee[J] = ee[Q] = ee[Z] = !0, ee[z] = ee[E] = ee[Y] = !1, e.exports = te }, 3852: function (e, t, n) { var r = n("96f3"), i = n("e2c0"); function o(e, t) { return null != e && i(e, t, r) } e.exports = o }, 3886: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("en-ca", { months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "YYYY-MM-DD", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY h:mm A", LLLL: "dddd, MMMM D, YYYY h:mm A" }, calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" }, relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", ss: "%d seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (e) { var t = e % 10, n = 1 === ~~(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th"; return e + n } }); return t
+                    }))
+                }, "38fd": function (e, t, n) { var r = n("69a8"), i = n("4bf8"), o = n("613b")("IE_PROTO"), a = Object.prototype; e.exports = Object.getPrototypeOf || function (e) { return e = i(e), r(e, o) ? e[o] : "function" == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? a : null } }, "39a6": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("en-gb", { months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" }, relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", ss: "%d seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (e) { var t = e % 10, n = 1 === ~~(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th"; return e + n }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "39bd": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "啷�", 2: "啷�", 3: "啷�", 4: "啷�", 5: "啷�", 6: "啷�", 7: "啷�", 8: "啷�", 9: "啷�", 0: "啷�" }, n = { "啷�": "1", "啷�": "2", "啷�": "3", "啷�": "4", "啷�": "5", "啷�": "6", "啷�": "7", "啷�": "8", "啷�": "9", "啷�": "0" }; function r(e, t, n, r) { var i = ""; if (t) switch (n) { case "s": i = "啶曕ぞ啶灌 啶膏啶曕啶�"; break; case "ss": i = "%d 啶膏啶曕啶�"; break; case "m": i = "啶忇 啶た啶ㄠた啶�"; break; case "mm": i = "%d 啶た啶ㄠた啶熰"; break; case "h": i = "啶忇 啶むぞ啶�"; break; case "hh": i = "%d 啶むぞ啶�"; break; case "d": i = "啶忇 啶︵た啶掂じ"; break; case "dd": i = "%d 啶︵た啶掂じ"; break; case "M": i = "啶忇 啶す啶苦え啶�"; break; case "MM": i = "%d 啶す啶苦え啷�"; break; case "y": i = "啶忇 啶掂ぐ啷嵿し"; break; case "yy": i = "%d 啶掂ぐ啷嵿し啷�"; break } else switch (n) { case "s": i = "啶曕ぞ啶灌 啶膏啶曕啶︵ぞ啶�"; break; case "ss": i = "%d 啶膏啶曕啶︵ぞ啶�"; break; case "m": i = "啶忇啶� 啶た啶ㄠた啶熰ぞ"; break; case "mm": i = "%d 啶た啶ㄠた啶熰ぞ啶�"; break; case "h": i = "啶忇啶� 啶むぞ啶膏ぞ"; break; case "hh": i = "%d 啶むぞ啶膏ぞ啶�"; break; case "d": i = "啶忇啶� 啶︵た啶掂じ啶�"; break; case "dd": i = "%d 啶︵た啶掂じ啶距"; break; case "M": i = "啶忇啶� 啶す啶苦え啷嵿く啶�"; break; case "MM": i = "%d 啶す啶苦え啷嵿く啶距"; break; case "y": i = "啶忇啶� 啶掂ぐ啷嵿し啶�"; break; case "yy": i = "%d 啶掂ぐ啷嵿し啶距"; break }return i.replace(/%d/i, e) } var i = e.defineLocale("mr", { months: "啶溹ぞ啶ㄠ啶掂ぞ啶班_啶啶啶班啶掂ぞ啶班_啶ぞ啶班啶歘啶忇お啷嵿ぐ啶苦げ_啶_啶溹啶╛啶溹啶侧_啶戉啶膏啶焈啶膏お啷嵿啷囙啶ぐ_啶戉啷嵿啷嬥が啶癬啶ㄠ啶掂啶灌啶傕が啶癬啶∴た啶膏啶傕が啶�".split("_"), monthsShort: "啶溹ぞ啶ㄠ._啶啶啶班._啶ぞ啶班啶�._啶忇お啷嵿ぐ啶�._啶._啶溹啶�._啶溹啶侧._啶戉._啶膏お啷嵿啷囙._啶戉啷嵿啷�._啶ㄠ啶掂啶灌啶�._啶∴た啶膏啶�.".split("_"), monthsParseExact: !0, weekdays: "啶班さ啶苦さ啶距ぐ_啶膏啶さ啶距ぐ_啶啶椸こ啶掂ぞ啶癬啶啶оさ啶距ぐ_啶椸啶班啶掂ぞ啶癬啶多啶曕啶班さ啶距ぐ_啶多え啶苦さ啶距ぐ".split("_"), weekdaysShort: "啶班さ啶縚啶膏啶甠啶啶椸こ_啶啶啶椸啶班_啶多啶曕啶癬啶多え啶�".split("_"), weekdaysMin: "啶癬啶膏_啶_啶_啶椸_啶多_啶�".split("_"), longDateFormat: { LT: "A h:mm 啶掂ぞ啶溹い啶�", LTS: "A h:mm:ss 啶掂ぞ啶溹い啶�", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm 啶掂ぞ啶溹い啶�", LLLL: "dddd, D MMMM YYYY, A h:mm 啶掂ぞ啶溹い啶�" }, calendar: { sameDay: "[啶嗋] LT", nextDay: "[啶夃う啷嵿く啶綸 LT", nextWeek: "dddd, LT", lastDay: "[啶曕ぞ啶瞉 LT", lastWeek: "[啶ぞ啶椸啶瞉 dddd, LT", sameElse: "L" }, relativeTime: { future: "%s啶ぇ啷嵿く啷�", past: "%s啶啶班啶掂", s: r, ss: r, m: r, mm: r, h: r, hh: r, d: r, dd: r, M: r, MM: r, y: r, yy: r }, preparse: function (e) { return e.replace(/[啷оエ啷┼オ啷ガ啷ギ啷ウ]/g, (function (e) { return n[e] })) }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })) }, meridiemParse: /啶す啶距啷噟啶膏啶距こ啷�|啶︵啶ぞ啶班|啶膏ぞ啶啶曕ぞ啶赤|啶班ぞ啶む啶班/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "啶す啶距啷�" === t || "啶膏啶距こ啷�" === t ? e : "啶︵啶ぞ啶班" === t || "啶膏ぞ啶啶曕ぞ啶赤" === t || "啶班ぞ啶む啶班" === t ? e >= 12 ? e : e + 12 : void 0 }, meridiem: function (e, t, n) { return e >= 0 && e < 6 ? "啶す啶距啷�" : e < 12 ? "啶膏啶距こ啷�" : e < 17 ? "啶︵啶ぞ啶班" : e < 20 ? "啶膏ぞ啶啶曕ぞ啶赤" : "啶班ぞ啶む啶班" }, week: { dow: 0, doy: 6 } }); return i
+                    }))
+                }, "39ff": function (e, t, n) { var r = n("0b07"), i = n("2b3e"), o = r(i, "WeakMap"); e.exports = o }, "3a0e": function (e, t, n) { var r = n("86e1"), i = n("100e"), o = i(r); e.exports = o }, "3a38": function (e, t) { var n = Math.ceil, r = Math.floor; e.exports = function (e) { return isNaN(e = +e) ? 0 : (e > 0 ? r : n)(e) } }, "3a39": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "啷�", 2: "啷�", 3: "啷�", 4: "啷�", 5: "啷�", 6: "啷�", 7: "啷�", 8: "啷�", 9: "啷�", 0: "啷�" }, n = { "啷�": "1", "啷�": "2", "啷�": "3", "啷�": "4", "啷�": "5", "啷�": "6", "啷�": "7", "啷�": "8", "啷�": "9", "啷�": "0" }, r = e.defineLocale("ne", { months: "啶溹え啶掂ぐ啷�_啶啶啶班啶掂ぐ啷�_啶ぞ啶班啶歘啶呧お啷嵿ぐ啶苦げ_啶_啶溹啶╛啶溹啶侧ぞ啶坃啶呧啶粪啶焈啶膏啶啶熰啶啶ぐ_啶呧啷嵿啷嬥が啶癬啶ㄠ啶啶啶ぐ_啶∴た啶膏啶啶ぐ".split("_"), monthsShort: "啶溹え._啶啶啶班._啶ぞ啶班啶歘啶呧お啷嵿ぐ啶�._啶_啶溹啶╛啶溹啶侧ぞ啶�._啶呧._啶膏啶啶�._啶呧啷嵿啷�._啶ㄠ啶._啶∴た啶膏.".split("_"), monthsParseExact: !0, weekdays: "啶嗋啶むが啶距ぐ_啶膏啶が啶距ぐ_啶啷嵿啶侧が啶距ぐ_啶啶оが啶距ぐ_啶た啶灌た啶ぞ啶癬啶多啶曕啶班が啶距ぐ_啶多え啶苦が啶距ぐ".split("_"), weekdaysShort: "啶嗋啶�._啶膏啶�._啶啷嵿啶�._啶啶�._啶た啶灌た._啶多啶曕啶�._啶多え啶�.".split("_"), weekdaysMin: "啶�._啶膏._啶._啶._啶た._啶多._啶�.".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "A啶曕 h:mm 啶啷�", LTS: "A啶曕 h:mm:ss 啶啷�", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A啶曕 h:mm 啶啷�", LLLL: "dddd, D MMMM YYYY, A啶曕 h:mm 啶啷�" }, preparse: function (e) { return e.replace(/[啷оエ啷┼オ啷ガ啷ギ啷ウ]/g, (function (e) { return n[e] })) }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })) }, meridiemParse: /啶班ぞ啶むた|啶た啶灌ぞ啶▅啶︵た啶夃啶膏|啶膏ぞ啶佮/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "啶班ぞ啶むた" === t ? e < 4 ? e : e + 12 : "啶た啶灌ぞ啶�" === t ? e : "啶︵た啶夃啶膏" === t ? e >= 10 ? e : e + 12 : "啶膏ぞ啶佮" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { return e < 3 ? "啶班ぞ啶むた" : e < 12 ? "啶た啶灌ぞ啶�" : e < 16 ? "啶︵た啶夃啶膏" : e < 20 ? "啶膏ぞ啶佮" : "啶班ぞ啶むた" }, calendar: { sameDay: "[啶嗋] LT", nextDay: "[啶啶侧た] LT", nextWeek: "[啶嗋啶佮う啷媇 dddd[,] LT", lastDay: "[啶灌た啶溹] LT", lastWeek: "[啶椸啶曕] dddd[,] LT", sameElse: "L" }, relativeTime: { future: "%s啶ぞ", past: "%s 啶呧啶距ぁ啶�", s: "啶曕啶灌 啶曕啶粪ぃ", ss: "%d 啶膏啶曕啶`啶�", m: "啶忇 啶た啶ㄠ啶�", mm: "%d 啶た啶ㄠ啶�", h: "啶忇 啶樴ぃ啷嵿啶�", hh: "%d 啶樴ぃ啷嵿啶�", d: "啶忇 啶︵た啶�", dd: "%d 啶︵た啶�", M: "啶忇 啶す啶苦え啶�", MM: "%d 啶す啶苦え啶�", y: "啶忇 啶ぐ啷嵿し", yy: "%d 啶ぐ啷嵿し" }, week: { dow: 0, doy: 6 } }); return r
+                    }))
+                }, "3a6c": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("zh-mo", { months: "涓�鏈坃浜屾湀_涓夋湀_鍥涙湀_浜旀湀_鍏湀_涓冩湀_鍏湀_涔濇湀_鍗佹湀_鍗佷竴鏈坃鍗佷簩鏈�".split("_"), monthsShort: "1鏈坃2鏈坃3鏈坃4鏈坃5鏈坃6鏈坃7鏈坃8鏈坃9鏈坃10鏈坃11鏈坃12鏈�".split("_"), weekdays: "鏄熸湡鏃鏄熸湡涓�_鏄熸湡浜宊鏄熸湡涓塤鏄熸湡鍥沖鏄熸湡浜擾鏄熸湡鍏�".split("_"), weekdaysShort: "閫辨棩_閫变竴_閫变簩_閫变笁_閫卞洓_閫变簲_閫卞叚".split("_"), weekdaysMin: "鏃涓�_浜宊涓塤鍥沖浜擾鍏�".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "YYYY骞碝鏈圖鏃�", LLL: "YYYY骞碝鏈圖鏃� HH:mm", LLLL: "YYYY骞碝鏈圖鏃ddd HH:mm", l: "D/M/YYYY", ll: "YYYY骞碝鏈圖鏃�", lll: "YYYY骞碝鏈圖鏃� HH:mm", llll: "YYYY骞碝鏈圖鏃ddd HH:mm" }, meridiemParse: /鍑屾櫒|鏃╀笂|涓婂崍|涓崍|涓嬪崍|鏅氫笂/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "鍑屾櫒" === t || "鏃╀笂" === t || "涓婂崍" === t ? e : "涓崍" === t ? e >= 11 ? e : e + 12 : "涓嬪崍" === t || "鏅氫笂" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { var r = 100 * e + t; return r < 600 ? "鍑屾櫒" : r < 900 ? "鏃╀笂" : r < 1130 ? "涓婂崍" : r < 1230 ? "涓崍" : r < 1800 ? "涓嬪崍" : "鏅氫笂" }, calendar: { sameDay: "[浠婂ぉ] LT", nextDay: "[鏄庡ぉ] LT", nextWeek: "[涓媇dddd LT", lastDay: "[鏄ㄥぉ] LT", lastWeek: "[涓奭dddd LT", sameElse: "L" }, dayOfMonthOrdinalParse: /\d{1,2}(鏃鏈坾閫�)/, ordinal: function (e, t) { switch (t) { case "d": case "D": case "DDD": return e + "鏃�"; case "M": return e + "鏈�"; case "w": case "W": return e + "閫�"; default: return e } }, relativeTime: { future: "%s鍏�", past: "%s鍓�", s: "骞剧", ss: "%d 绉�", m: "1 鍒嗛悩", mm: "%d 鍒嗛悩", h: "1 灏忔檪", hh: "%d 灏忔檪", d: "1 澶�", dd: "%d 澶�", M: "1 鍊嬫湀", MM: "%d 鍊嬫湀", y: "1 骞�", yy: "%d 骞�" } }); return t
+                    }))
+                }, "3a9b": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = "0 0 1024 1024", i = "64 64 896 896", o = "fill", a = "outline", s = "twotone"; function c(e) { for (var t = [], n = 1; n < arguments.length; n++)t[n - 1] = arguments[n]; return { tag: "svg", attrs: { viewBox: e, focusable: !1 }, children: t.map((function (e) { return Array.isArray(e) ? { tag: "path", attrs: { fill: e[0], d: e[1] } } : { tag: "path", attrs: { d: e } } })) } } function l(e, t, n) { return { name: e, theme: t, icon: n } } t.AccountBookFill = l("account-book", o, c(i, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zM648.3 426.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V752c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3 73.2-144.3a10 10 0 0 1 8.9-5.5h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8z")), t.AlertFill = l("alert", o, c(i, "M512 244c176.18 0 319 142.82 319 319v233a32 32 0 0 1-32 32H225a32 32 0 0 1-32-32V563c0-176.18 142.82-319 319-319zM484 68h56a8 8 0 0 1 8 8v96a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8V76a8 8 0 0 1 8-8zM177.25 191.66a8 8 0 0 1 11.32 0l67.88 67.88a8 8 0 0 1 0 11.31l-39.6 39.6a8 8 0 0 1-11.31 0l-67.88-67.88a8 8 0 0 1 0-11.31l39.6-39.6zm669.6 0l39.6 39.6a8 8 0 0 1 0 11.3l-67.88 67.9a8 8 0 0 1-11.32 0l-39.6-39.6a8 8 0 0 1 0-11.32l67.89-67.88a8 8 0 0 1 11.31 0zM192 892h640a32 32 0 0 1 32 32v24a8 8 0 0 1-8 8H168a8 8 0 0 1-8-8v-24a32 32 0 0 1 32-32zm148-317v253h64V575h-64z")), t.AlipaySquareFill = l("alipay-square", o, c(i, "M308.6 545.7c-19.8 2-57.1 10.7-77.4 28.6-61 53-24.5 150 99 150 71.8 0 143.5-45.7 199.8-119-80.2-38.9-148.1-66.8-221.4-59.6zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm29.4 663.2S703 689.4 598.7 639.5C528.8 725.2 438.6 777.3 345 777.3c-158.4 0-212.1-138.1-137.2-229 16.3-19.8 44.2-38.7 87.3-49.4 67.5-16.5 175 10.3 275.7 43.4 18.1-33.3 33.4-69.9 44.7-108.9H305.1V402h160v-56.2H271.3v-31.3h193.8v-80.1s0-13.5 13.7-13.5H557v93.6h191.7v31.3H557.1V402h156.4c-15 61.1-37.7 117.4-66.2 166.8 47.5 17.1 90.1 33.3 121.8 43.9 114.3 38.2 140.2 40.2 140.2 40.2v122.3z")), t.AliwangwangFill = l("aliwangwang", o, c(i, "M868.2 377.4c-18.9-45.1-46.3-85.6-81.2-120.6a377.26 377.26 0 0 0-120.5-81.2A375.65 375.65 0 0 0 519 145.8c-41.9 0-82.9 6.7-121.9 20C306 123.3 200.8 120 170.6 120c-2.2 0-7.4 0-9.4.2-11.9.4-22.8 6.5-29.2 16.4-6.5 9.9-7.7 22.4-3.4 33.5l64.3 161.6a378.59 378.59 0 0 0-52.8 193.2c0 51.4 10 101 29.8 147.6 18.9 45 46.2 85.6 81.2 120.5 34.7 34.8 75.4 62.1 120.5 81.2C418.3 894 467.9 904 519 904c51.3 0 100.9-10 147.7-29.8 44.9-18.9 85.5-46.3 120.4-81.2 34.7-34.8 62.1-75.4 81.2-120.6a376.5 376.5 0 0 0 29.8-147.6c-.2-51.2-10.1-100.8-29.9-147.4zm-325.2 79c0 20.4-16.6 37.1-37.1 37.1-20.4 0-37.1-16.7-37.1-37.1v-55.1c0-20.4 16.6-37.1 37.1-37.1 20.4 0 37.1 16.6 37.1 37.1v55.1zm175.2 0c0 20.4-16.6 37.1-37.1 37.1S644 476.8 644 456.4v-55.1c0-20.4 16.7-37.1 37.1-37.1 20.4 0 37.1 16.6 37.1 37.1v55.1z")), t.AlipayCircleFill = l("alipay-circle", o, c(i, "M308.6 545.7c-19.8 2-57.1 10.7-77.4 28.6-61 53-24.5 150 99 150 71.8 0 143.5-45.7 199.8-119-80.2-38.9-148.1-66.8-221.4-59.6zm460.5 67c100.1 33.4 154.7 43 166.7 44.8A445.9 445.9 0 0 0 960 512c0-247.4-200.6-448-448-448S64 264.6 64 512s200.6 448 448 448c155.9 0 293.2-79.7 373.5-200.5-75.6-29.8-213.6-85-286.8-120.1-69.9 85.7-160.1 137.8-253.7 137.8-158.4 0-212.1-138.1-137.2-229 16.3-19.8 44.2-38.7 87.3-49.4 67.5-16.5 175 10.3 275.7 43.4 18.1-33.3 33.4-69.9 44.7-108.9H305.1V402h160v-56.2H271.3v-31.3h193.8v-80.1s0-13.5 13.7-13.5H557v93.6h191.7v31.3H557.1V402h156.4c-15 61.1-37.7 117.4-66.2 166.8 47.5 17.1 90.1 33.3 121.8 43.9z")), t.AmazonCircleFill = l("amazon-circle", o, c(i, "M485 467.5c-11.6 4.9-20.9 12.2-27.8 22-6.9 9.8-10.4 21.6-10.4 35.5 0 17.8 7.5 31.5 22.4 41.2 14.1 9.1 28.9 11.4 44.4 6.8 17.9-5.2 30-17.9 36.4-38.1 3-9.3 4.5-19.7 4.5-31.3v-50.2c-12.6.4-24.4 1.6-35.5 3.7-11.1 2.1-22.4 5.6-34 10.4zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm35.8 262.7c-7.2-10.9-20.1-16.4-38.7-16.4-1.3 0-3 .1-5.3.3-2.2.2-6.6 1.5-12.9 3.7a79.4 79.4 0 0 0-17.9 9.1c-5.5 3.8-11.5 10-18 18.4-6.4 8.5-11.5 18.4-15.3 29.8l-94-8.4c0-12.4 2.4-24.7 7-36.9 4.7-12.2 11.8-23.9 21.4-35 9.6-11.2 21.1-21 34.5-29.4 13.4-8.5 29.6-15.2 48.4-20.3 18.9-5.1 39.1-7.6 60.9-7.6 21.3 0 40.6 2.6 57.8 7.7 17.2 5.2 31.1 11.5 41.4 19.1a117 117 0 0 1 25.9 25.7c6.9 9.6 11.7 18.5 14.4 26.7 2.7 8.2 4 15.7 4 22.8v182.5c0 6.4 1.4 13 4.3 19.8 2.9 6.8 6.3 12.8 10.2 18 3.9 5.2 7.9 9.9 12 14.3 4.1 4.3 7.6 7.7 10.6 9.9l4.1 3.4-72.5 69.4c-8.5-7.7-16.9-15.4-25.2-23.4-8.3-8-14.5-14-18.5-18.1l-6.1-6.2c-2.4-2.3-5-5.7-8-10.2-8.1 12.2-18.5 22.8-31.1 31.8-12.7 9-26.3 15.6-40.7 19.7-14.5 4.1-29.4 6.5-44.7 7.1-15.3.6-30-1.5-43.9-6.5-13.9-5-26.5-11.7-37.6-20.3-11.1-8.6-19.9-20.2-26.5-35-6.6-14.8-9.9-31.5-9.9-50.4 0-17.4 3-33.3 8.9-47.7 6-14.5 13.6-26.5 23-36.1 9.4-9.6 20.7-18.2 34-25.7s26.4-13.4 39.2-17.7c12.8-4.2 26.6-7.8 41.5-10.7 14.9-2.9 27.6-4.8 38.2-5.7 10.6-.9 21.2-1.6 31.8-2v-39.4c0-13.5-2.3-23.5-6.7-30.1zm180.5 379.6c-2.8 3.3-7.5 7.8-14.1 13.5s-16.8 12.7-30.5 21.1c-13.7 8.4-28.8 16-45 22.9-16.3 6.9-36.3 12.9-60.1 18-23.7 5.1-48.2 7.6-73.3 7.6-25.4 0-50.7-3.2-76.1-9.6-25.4-6.4-47.6-14.3-66.8-23.7-19.1-9.4-37.6-20.2-55.1-32.2-17.6-12.1-31.7-22.9-42.4-32.5-10.6-9.6-19.6-18.7-26.8-27.1-1.7-1.9-2.8-3.6-3.2-5.1-.4-1.5-.3-2.8.3-3.7.6-.9 1.5-1.6 2.6-2.2a7.42 7.42 0 0 1 7.4.8c40.9 24.2 72.9 41.3 95.9 51.4 82.9 36.4 168 45.7 255.3 27.9 40.5-8.3 82.1-22.2 124.9-41.8 3.2-1.2 6-1.5 8.3-.9 2.3.6 3.5 2.4 3.5 5.4 0 2.8-1.6 6.3-4.8 10.2zm59.9-29c-1.8 11.1-4.9 21.6-9.1 31.8-7.2 17.1-16.3 30-27.1 38.4-3.6 2.9-6.4 3.8-8.3 2.8-1.9-1-1.9-3.5 0-7.4 4.5-9.3 9.2-21.8 14.2-37.7 5-15.8 5.7-26 2.1-30.5-1.1-1.5-2.7-2.6-5-3.6-2.2-.9-5.1-1.5-8.6-1.9s-6.7-.6-9.4-.8c-2.8-.2-6.5-.2-11.2 0-4.7.2-8 .4-10.1.6a874.4 874.4 0 0 1-17.1 1.5c-1.3.2-2.7.4-4.1.5-1.5.1-2.7.2-3.5.3l-2.7.3c-1 .1-1.7.2-2.2.2h-3.2l-1-.2-.6-.5-.5-.9c-1.3-3.3 3.7-7.4 15-12.4s22.3-8.1 32.9-9.3c9.8-1.5 21.3-1.5 34.5-.3s21.3 3.7 24.3 7.4c2.3 3.5 2.5 10.7.7 21.7z")), t.AndroidFill = l("android", o, c(i, "M270.1 741.7c0 23.4 19.1 42.5 42.6 42.5h48.7v120.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V784.1h85v120.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V784.1h48.7c23.5 0 42.6-19.1 42.6-42.5V346.4h-486v395.3zm357.1-600.1l44.9-65c2.6-3.8 2-8.9-1.5-11.4-3.5-2.4-8.5-1.2-11.1 2.6l-46.6 67.6c-30.7-12.1-64.9-18.8-100.8-18.8-35.9 0-70.1 6.7-100.8 18.8l-46.6-67.5c-2.6-3.8-7.6-5.1-11.1-2.6-3.5 2.4-4.1 7.4-1.5 11.4l44.9 65c-71.4 33.2-121.4 96.1-127.8 169.6h486c-6.6-73.6-56.7-136.5-128-169.7zM409.5 244.1a26.9 26.9 0 1 1 26.9-26.9 26.97 26.97 0 0 1-26.9 26.9zm208.4 0a26.9 26.9 0 1 1 26.9-26.9 26.97 26.97 0 0 1-26.9 26.9zm223.4 100.7c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V400.1c.1-30.6-24.3-55.3-54.6-55.3zm-658.6 0c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V400.1c0-30.6-24.5-55.3-54.6-55.3z")), t.AmazonSquareFill = l("amazon-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM547.8 326.7c-7.2-10.9-20.1-16.4-38.7-16.4-1.3 0-3 .1-5.3.3-2.2.2-6.6 1.5-12.9 3.7a79.4 79.4 0 0 0-17.9 9.1c-5.5 3.8-11.5 10-18 18.4-6.4 8.5-11.5 18.4-15.3 29.8l-94-8.4c0-12.4 2.4-24.7 7-36.9s11.8-23.9 21.4-35c9.6-11.2 21.1-21 34.5-29.4 13.4-8.5 29.6-15.2 48.4-20.3 18.9-5.1 39.1-7.6 60.9-7.6 21.3 0 40.6 2.6 57.8 7.7 17.2 5.2 31.1 11.5 41.4 19.1a117 117 0 0 1 25.9 25.7c6.9 9.6 11.7 18.5 14.4 26.7 2.7 8.2 4 15.7 4 22.8v182.5c0 6.4 1.4 13 4.3 19.8 2.9 6.8 6.3 12.8 10.2 18 3.9 5.2 7.9 9.9 12 14.3 4.1 4.3 7.6 7.7 10.6 9.9l4.1 3.4-72.5 69.4c-8.5-7.7-16.9-15.4-25.2-23.4-8.3-8-14.5-14-18.5-18.1l-6.1-6.2c-2.4-2.3-5-5.7-8-10.2-8.1 12.2-18.5 22.8-31.1 31.8-12.7 9-26.3 15.6-40.7 19.7-14.5 4.1-29.4 6.5-44.7 7.1-15.3.6-30-1.5-43.9-6.5-13.9-5-26.5-11.7-37.6-20.3-11.1-8.6-19.9-20.2-26.5-35-6.6-14.8-9.9-31.5-9.9-50.4 0-17.4 3-33.3 8.9-47.7 6-14.5 13.6-26.5 23-36.1 9.4-9.6 20.7-18.2 34-25.7s26.4-13.4 39.2-17.7c12.8-4.2 26.6-7.8 41.5-10.7 14.9-2.9 27.6-4.8 38.2-5.7 10.6-.9 21.2-1.6 31.8-2v-39.4c0-13.5-2.3-23.5-6.7-30.1zm180.5 379.6c-2.8 3.3-7.5 7.8-14.1 13.5s-16.8 12.7-30.5 21.1c-13.7 8.4-28.8 16-45 22.9-16.3 6.9-36.3 12.9-60.1 18-23.7 5.1-48.2 7.6-73.3 7.6-25.4 0-50.7-3.2-76.1-9.6-25.4-6.4-47.6-14.3-66.8-23.7-19.1-9.4-37.6-20.2-55.1-32.2-17.6-12.1-31.7-22.9-42.4-32.5-10.6-9.6-19.6-18.7-26.8-27.1-1.7-1.9-2.8-3.6-3.2-5.1-.4-1.5-.3-2.8.3-3.7.6-.9 1.5-1.6 2.6-2.2a7.42 7.42 0 0 1 7.4.8c40.9 24.2 72.9 41.3 95.9 51.4 82.9 36.4 168 45.7 255.3 27.9 40.5-8.3 82.1-22.2 124.9-41.8 3.2-1.2 6-1.5 8.3-.9 2.3.6 3.5 2.4 3.5 5.4 0 2.8-1.6 6.3-4.8 10.2zm59.9-29c-1.8 11.1-4.9 21.6-9.1 31.8-7.2 17.1-16.3 30-27.1 38.4-3.6 2.9-6.4 3.8-8.3 2.8-1.9-1-1.9-3.5 0-7.4 4.5-9.3 9.2-21.8 14.2-37.7 5-15.8 5.7-26 2.1-30.5-1.1-1.5-2.7-2.6-5-3.6-2.2-.9-5.1-1.5-8.6-1.9s-6.7-.6-9.4-.8c-2.8-.2-6.5-.2-11.2 0-4.7.2-8 .4-10.1.6a874.4 874.4 0 0 1-17.1 1.5c-1.3.2-2.7.4-4.1.5-1.5.1-2.7.2-3.5.3l-2.7.3c-1 .1-1.7.2-2.2.2h-3.2l-1-.2-.6-.5-.5-.9c-1.3-3.3 3.7-7.4 15-12.4s22.3-8.1 32.9-9.3c9.8-1.5 21.3-1.5 34.5-.3s21.3 3.7 24.3 7.4c2.3 3.5 2.5 10.7.7 21.7zM485 467.5c-11.6 4.9-20.9 12.2-27.8 22-6.9 9.8-10.4 21.6-10.4 35.5 0 17.8 7.5 31.5 22.4 41.2 14.1 9.1 28.9 11.4 44.4 6.8 17.9-5.2 30-17.9 36.4-38.1 3-9.3 4.5-19.7 4.5-31.3v-50.2c-12.6.4-24.4 1.6-35.5 3.7-11.1 2.1-22.4 5.6-34 10.4z")), t.ApiFill = l("api", o, c(i, "M917.7 148.8l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM578.9 546.7a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2c-68.9 68.9-77 175.7-24.3 253.5l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2z")), t.AppstoreFill = l("appstore", o, c(i, "M864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm0 400H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zM464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm0 400H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16z")), t.AudioFill = l("audio", o, c(i, "M512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm330-170c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1z")), t.AppleFill = l("apple", o, c(i, "M747.4 535.7c-.4-68.2 30.5-119.6 92.9-157.5-34.9-50-87.7-77.5-157.3-82.8-65.9-5.2-138 38.4-164.4 38.4-27.9 0-91.7-36.6-141.9-36.6C273.1 298.8 163 379.8 163 544.6c0 48.7 8.9 99 26.7 150.8 23.8 68.2 109.6 235.3 199.1 232.6 46.8-1.1 79.9-33.2 140.8-33.2 59.1 0 89.7 33.2 141.9 33.2 90.3-1.3 167.9-153.2 190.5-221.6-121.1-57.1-114.6-167.2-114.6-170.7zm-105.1-305c50.7-60.2 46.1-115 44.6-134.7-44.8 2.6-96.6 30.5-126.1 64.8-32.5 36.8-51.6 82.3-47.5 133.6 48.4 3.7 92.6-21.2 129-63.7z")), t.BackwardFill = l("backward", o, c(r, "M485.6 249.9L198.2 498c-8.3 7.1-8.3 20.8 0 27.9l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9zm320 0L518.2 498a18.6 18.6 0 0 0-6.2 14c0 5.2 2.1 10.4 6.2 14l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9z")), t.BankFill = l("bank", o, c(i, "M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM381 836H264V462h117v374zm189 0H453V462h117v374zm190 0H642V462h118v374z")), t.BehanceCircleFill = l("behance-circle", o, c(i, "M420.3 470.3c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1a50.5 50.5 0 0 0 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm86.5 286.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7z")), t.BellFill = l("bell", o, c(i, "M816 768h-24V428c0-141.1-104.3-257.8-240-277.2V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.8C336.3 170.2 232 286.9 232 428v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48z")), t.BehanceSquareFill = l("behance-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM598.5 350.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7zm-248.5-10.1c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1s12.7-3.8 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8z")), t.BookFill = l("book", o, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zM668 345.9L621.5 312 572 347.4V124h96v221.9z")), t.BoxPlotFill = l("box-plot", o, c(i, "M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H448v432h344c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-728 80v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h152V296H232c-4.4 0-8 3.6-8 8z")), t.BugFill = l("bug", o, c(i, "M304 280h416c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1a184.31 184.31 0 0 0-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9a184.31 184.31 0 0 0-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z", "M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8a63 63 0 0 1-63 63H232a63 63 0 0 1-63-63c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7a273 273 0 0 0 22.7 49c24.3 41.5 59 76.2 100.5 100.5 28.9 16.9 61 28.8 95.3 34.5 4.4 0 8-3.6 8-8V484c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8v464.2c0 4.4 3.6 8 8 8 34.3-5.7 66.4-17.6 95.3-34.5a281.38 281.38 0 0 0 123.2-149.5A120.4 120.4 0 0 1 836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.CalculatorFill = l("calculator", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM440.2 765h-50.8c-2.2 0-4.5-1.1-5.9-2.9L348 718.6l-35.5 43.5a7.38 7.38 0 0 1-5.9 2.9h-50.8c-6.6 0-10.2-7.9-5.8-13.1l62.7-76.8-61.2-74.9c-4.3-5.2-.7-13.1 5.9-13.1h50.9c2.2 0 4.5 1.1 5.9 2.9l34 41.6 34-41.6c1.5-1.9 3.6-2.9 5.9-2.9h50.8c6.6 0 10.2 7.9 5.9 13.1L383.5 675l62.7 76.8c4.2 5.3.6 13.2-6 13.2zm7.8-382c0 2.2-1.4 4-3.2 4H376v68.7c0 1.9-1.8 3.3-4 3.3h-48c-2.2 0-4-1.4-4-3.2V387h-68.8c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4H320v-68.8c0-1.8 1.8-3.2 4-3.2h48c2.2 0 4 1.4 4 3.2V331h68.7c1.9 0 3.3 1.8 3.3 4v48zm328 369c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48zm0-104c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48zm0-265c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48z")), t.BulbFill = l("bulb", o, c(i, "M348 676.1C250 619.4 184 513.4 184 392c0-181.1 146.9-328 328-328s328 146.9 328 328c0 121.4-66 227.4-164 284.1V792c0 17.7-14.3 32-32 32H380c-17.7 0-32-14.3-32-32V676.1zM392 888h240c4.4 0 8 3.6 8 8v32c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32v-32c0-4.4 3.6-8 8-8z")), t.BuildFill = l("build", o, c(i, "M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zM612 746H412V546h200v200zm268-268H680V278h200v200z")), t.CalendarFill = l("calendar", o, c(i, "M112 880c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V460H112v420zm768-696H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v176h800V216c0-17.7-14.3-32-32-32z")), t.CameraFill = l("camera", o, c(i, "M864 260H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 260H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V340c0-44.2-35.8-80-80-80zM512 716c-88.4 0-160-71.6-160-160s71.6-160 160-160 160 71.6 160 160-71.6 160-160 160zm-96-160a96 96 0 1 0 192 0 96 96 0 1 0-192 0z")), t.CarFill = l("car", o, c(i, "M959 413.4L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM264 621c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm388 75c0 4.4-3.6 8-8 8H380c-4.4 0-8-3.6-8-8v-84c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v36h168v-36c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v84zm108-75c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zM220 418l72.7-199.9.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220z")), t.CaretDownFill = l("caret-down", o, c(r, "M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z")), t.CaretLeftFill = l("caret-left", o, c(r, "M689 165.1L308.2 493.5c-10.9 9.4-10.9 27.5 0 37L689 858.9c14.2 12.2 35 1.2 35-18.5V183.6c0-19.7-20.8-30.7-35-18.5z")), t.CaretRightFill = l("caret-right", o, c(r, "M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z")), t.CarryOutFill = l("carry-out", o, c(i, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zM694.5 432.7L481.9 725.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.1 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.8-6.6 13-6.6H688c6.5.1 10.3 7.5 6.5 12.8z")), t.CaretUpFill = l("caret-up", o, c(r, "M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z")), t.CheckCircleFill = l("check-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z")), t.CheckSquareFill = l("check-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM695.5 365.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L308.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H689c6.5 0 10.3 7.4 6.5 12.7z")), t.ChromeFill = l("chrome", o, c(i, "M371.8 512c0 77.5 62.7 140.2 140.2 140.2S652.2 589.5 652.2 512 589.5 371.8 512 371.8 371.8 434.4 371.8 512zM900 362.4l-234.3 12.1c63.6 74.3 64.6 181.5 11.1 263.7l-188 289.2c78 4.2 158.4-12.9 231.2-55.2 180-104 253-322.1 180-509.8zM320.3 591.9L163.8 284.1A415.35 415.35 0 0 0 96 512c0 208 152.3 380.3 351.4 410.8l106.9-209.4c-96.6 18.2-189.9-34.8-234-121.5zm218.5-285.5l344.4 18.1C848 254.7 792.6 194 719.8 151.7 653.9 113.6 581.5 95.5 510.5 96c-122.5.5-242.2 55.2-322.1 154.5l128.2 196.9c32-91.9 124.8-146.7 222.2-141z")), t.CiCircleFill = l("ci-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-63.6 656c-103 0-162.4-68.6-162.4-182.6v-49C286 373.5 345.4 304 448.3 304c88.3 0 152.3 56.9 152.3 138.1 0 2.4-2 4.4-4.4 4.4h-52.6c-4.2 0-7.6-3.2-8-7.4-4-46.1-37.6-77.6-87-77.6-61.1 0-95.6 45.4-95.6 126.9v49.3c0 80.3 34.5 125.1 95.6 125.1 49.3 0 82.8-29.5 87-72.4.4-4.1 3.8-7.3 8-7.3h52.7c2.4 0 4.4 2 4.4 4.4 0 77.4-64.3 132.5-152.3 132.5zM738 704.1c0 4.4-3.6 8-8 8h-50.4c-4.4 0-8-3.6-8-8V319.9c0-4.4 3.6-8 8-8H730c4.4 0 8 3.6 8 8v384.2z")), t.ClockCircleFill = l("clock-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm176.5 585.7l-28.6 39a7.99 7.99 0 0 1-11.2 1.7L483.3 569.8a7.92 7.92 0 0 1-3.3-6.5V288c0-4.4 3.6-8 8-8h48.1c4.4 0 8 3.6 8 8v247.5l142.6 103.1c3.6 2.5 4.4 7.5 1.8 11.1z")), t.CloseCircleFill = l("close-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 0 1-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z")), t.CloudFill = l("cloud", o, c(i, "M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3z")), t.CloseSquareFill = l("close-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM676.1 657.9c4.4 5.2.7 13.1-6.1 13.1h-58.9c-4.7 0-9.2-2.1-12.3-5.7L512 561.8l-86.8 103.5c-3 3.6-7.5 5.7-12.3 5.7H354c-6.8 0-10.5-7.9-6.1-13.1L470.2 512 347.9 366.1A7.95 7.95 0 0 1 354 353h58.9c4.7 0 9.2 2.1 12.3 5.7L512 462.2l86.8-103.5c3-3.6 7.5-5.7 12.3-5.7H670c6.8 0 10.5 7.9 6.1 13.1L553.8 512l122.3 145.9z")), t.CodeSandboxSquareFill = l("code-sandbox-square", o, c(i, "M307.9 536.7l87.6 49.9V681l96.7 55.9V524.8L307.9 418.4zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM755.7 653.2L512 794 268.3 653.2V371.8l110-63.6-.4-.2h.2L512 231l134 77h-.2l-.3.2 110.1 63.6v281.4zm-223.9 83.7l97.3-56.2v-94.1l87-49.5V418.5L531.8 525zm-20-352L418 331l-91.1 52.6 185.2 107 185.2-106.9-91.4-52.8z")), t.CodeSandboxCircleFill = l("code-sandbox-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm243.7 589.2L512 794 268.3 653.2V371.8l110-63.6-.4-.2h.2L512 231l134 77h-.2l-.3.2 110.1 63.6v281.4zM307.9 536.7l87.6 49.9V681l96.7 55.9V524.8L307.9 418.4zm203.9-151.8L418 331l-91.1 52.6 185.2 107 185.2-106.9-91.4-52.8zm20 352l97.3-56.2v-94.1l87-49.5V418.5L531.8 525z")), t.CodeFill = l("code", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM513.1 518.1l-192 161c-5.2 4.4-13.1.7-13.1-6.1v-62.7c0-2.3 1.1-4.6 2.9-6.1L420.7 512l-109.8-92.2a7.63 7.63 0 0 1-2.9-6.1V351c0-6.8 7.9-10.5 13.1-6.1l192 160.9c3.9 3.2 3.9 9.1 0 12.3zM716 673c0 4.4-3.4 8-7.5 8h-185c-4.1 0-7.5-3.6-7.5-8v-48c0-4.4 3.4-8 7.5-8h185c4.1 0 7.5 3.6 7.5 8v48z")), t.CompassFill = l("compass", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM327.3 702.4c-2 .9-4.4 0-5.3-2.1-.4-1-.4-2.2 0-3.2l98.7-225.5 132.1 132.1-225.5 98.7zm375.1-375.1l-98.7 225.5-132.1-132.1L697.1 322c2-.9 4.4 0 5.3 2.1.4 1 .4 2.1 0 3.2z")), t.CodepenCircleFill = l("codepen-circle", o, c(i, "M488.1 414.7V303.4L300.9 428l83.6 55.8zm254.1 137.7v-79.8l-59.8 39.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm278 533c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-254.1 13.3v111.3L723.1 597l-83.6-55.8zM281.8 472.6v79.8l59.8-39.9zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zM723.1 428L535.9 303.4v111.3l103.6 69.1zM384.5 541.2L300.9 597l187.2 124.6V610.3l-103.6-69.1z")), t.CodepenSquareFill = l("codepen-square", o, c(i, "M723.1 428L535.9 303.4v111.3l103.6 69.1zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zm23.9 154.2v111.3L723.1 597l-83.6-55.8zm-151.4-69.1L300.9 597l187.2 124.6V610.3l-103.6-69.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-90 485c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-47.8-44.6v-79.8l-59.8 39.9zm-460.4-79.8v79.8l59.8-39.9zm206.3-57.9V303.4L300.9 428l83.6 55.8z")), t.ContactsFill = l("contacts", o, c(i, "M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zM661 736h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.6-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H363a8 8 0 0 1-8-8.4c2.8-53.3 32-99.7 74.6-126.1a111.8 111.8 0 0 1-29.1-75.5c0-61.9 49.9-112 111.4-112 61.5 0 111.4 50.1 111.4 112 0 29.1-11 55.5-29.1 75.5 42.7 26.5 71.8 72.8 74.6 126.1.4 4.6-3.2 8.4-7.8 8.4zM512 474c-28.5 0-51.7 23.3-51.7 52s23.2 52 51.7 52c28.5 0 51.7-23.3 51.7-52s-23.2-52-51.7-52z")), t.ControlFill = l("control", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM404 683v77c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-77c-41.7-13.6-72-52.8-72-99s30.3-85.5 72-99V264c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v221c41.7 13.6 72 52.8 72 99s-30.3 85.5-72 99zm279.6-143.9c.2 0 .3-.1.4-.1v221c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V539c.2 0 .3.1.4.1-42-13.4-72.4-52.7-72.4-99.1 0-46.4 30.4-85.7 72.4-99.1-.2 0-.3.1-.4.1v-77c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v77c-.2 0-.3-.1-.4-.1 42 13.4 72.4 52.7 72.4 99.1 0 46.4-30.4 85.7-72.4 99.1zM616 440a36 36 0 1 0 72 0 36 36 0 1 0-72 0zM403.4 566.5l-1.5-2.4c0-.1-.1-.1-.1-.2l-.9-1.2c-.1-.1-.2-.2-.2-.3-1-1.3-2-2.5-3.2-3.6l-.2-.2c-.4-.4-.8-.8-1.2-1.1-.8-.8-1.7-1.5-2.6-2.1h-.1l-1.2-.9c-.1-.1-.3-.2-.4-.3-1.2-.8-2.5-1.6-3.9-2.2-.2-.1-.5-.2-.7-.4-.4-.2-.7-.3-1.1-.5-.3-.1-.7-.3-1-.4-.5-.2-1-.4-1.5-.5-.4-.1-.9-.3-1.3-.4l-.9-.3-1.4-.3c-.2-.1-.5-.1-.7-.2-.7-.1-1.4-.3-2.1-.4-.2 0-.4 0-.6-.1-.6-.1-1.1-.1-1.7-.2-.2 0-.4 0-.7-.1-.8 0-1.5-.1-2.3-.1s-1.5 0-2.3.1c-.2 0-.4 0-.7.1-.6 0-1.2.1-1.7.2-.2 0-.4 0-.6.1-.7.1-1.4.2-2.1.4-.2.1-.5.1-.7.2l-1.4.3-.9.3c-.4.1-.9.3-1.3.4-.5.2-1 .4-1.5.5-.3.1-.7.3-1 .4-.4.2-.7.3-1.1.5-.2.1-.5.2-.7.4-1.3.7-2.6 1.4-3.9 2.2-.1.1-.3.2-.4.3l-1.2.9h-.1c-.9.7-1.8 1.4-2.6 2.1-.4.4-.8.7-1.2 1.1l-.2.2a54.8 54.8 0 0 0-3.2 3.6c-.1.1-.2.2-.2.3l-.9 1.2c0 .1-.1.1-.1.2l-1.5 2.4c-.1.2-.2.3-.3.5-2.7 5.1-4.3 10.9-4.3 17s1.6 12 4.3 17c.1.2.2.3.3.5l1.5 2.4c0 .1.1.1.1.2l.9 1.2c.1.1.2.2.2.3 1 1.3 2 2.5 3.2 3.6l.2.2c.4.4.8.8 1.2 1.1.8.8 1.7 1.5 2.6 2.1h.1l1.2.9c.1.1.3.2.4.3 1.2.8 2.5 1.6 3.9 2.2.2.1.5.2.7.4.4.2.7.3 1.1.5.3.1.7.3 1 .4.5.2 1 .4 1.5.5.4.1.9.3 1.3.4l.9.3 1.4.3c.2.1.5.1.7.2.7.1 1.4.3 2.1.4.2 0 .4 0 .6.1.6.1 1.1.1 1.7.2.2 0 .4 0 .7.1.8 0 1.5.1 2.3.1s1.5 0 2.3-.1c.2 0 .4 0 .7-.1.6 0 1.2-.1 1.7-.2.2 0 .4 0 .6-.1.7-.1 1.4-.2 2.1-.4.2-.1.5-.1.7-.2l1.4-.3.9-.3c.4-.1.9-.3 1.3-.4.5-.2 1-.4 1.5-.5.3-.1.7-.3 1-.4.4-.2.7-.3 1.1-.5.2-.1.5-.2.7-.4 1.3-.7 2.6-1.4 3.9-2.2.1-.1.3-.2.4-.3l1.2-.9h.1c.9-.7 1.8-1.4 2.6-2.1.4-.4.8-.7 1.2-1.1l.2-.2c1.1-1.1 2.2-2.4 3.2-3.6.1-.1.2-.2.2-.3l.9-1.2c0-.1.1-.1.1-.2l1.5-2.4c.1-.2.2-.3.3-.5 2.7-5.1 4.3-10.9 4.3-17s-1.6-12-4.3-17c-.1-.2-.2-.4-.3-.5z")), t.ContainerFill = l("container", o, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v529c0-.6.4-1 1-1h219.3l5.2 24.7C397.6 708.5 450.8 752 512 752s114.4-43.5 126.4-103.3l5.2-24.7H863c.6 0 1 .4 1 1V96c0-17.7-14.3-32-32-32zM712 493c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48zm0-160c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48zm151 354H694.1c-11.6 32.8-32 62.3-59.1 84.7-34.5 28.6-78.2 44.3-123 44.3s-88.5-15.8-123-44.3a194.02 194.02 0 0 1-59.1-84.7H161c-.6 0-1-.4-1-1v242c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V686c0 .6-.4 1-1 1z")), t.CopyFill = l("copy", o, c(i, "M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM382 896h-.2L232 746.2v-.2h150v150z")), t.CopyrightCircleFill = l("copyright-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm5.4 670c-110 0-173.4-73.2-173.4-194.9v-52.3C344 364.2 407.4 290 517.3 290c94.3 0 162.7 60.7 162.7 147.4 0 2.6-2.1 4.7-4.7 4.7h-56.7c-4.2 0-7.6-3.2-8-7.4-4-49.5-40-83.4-93-83.4-65.3 0-102.1 48.5-102.1 135.5v52.6c0 85.7 36.9 133.6 102.1 133.6 52.8 0 88.7-31.7 93-77.8.4-4.1 3.8-7.3 8-7.3h56.8c2.6 0 4.7 2.1 4.7 4.7 0 82.6-68.7 141.4-162.7 141.4z")), t.CreditCardFill = l("credit-card", o, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v160h896V192c0-17.7-14.3-32-32-32zM64 832c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V440H64v392zm579-184c0-4.4 3.6-8 8-8h165c4.4 0 8 3.6 8 8v72c0 4.4-3.6 8-8 8H651c-4.4 0-8-3.6-8-8v-72z")), t.CrownFill = l("crown", o, c(i, "M899.6 276.5L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.7-3.5-13.1 1.2-12.2 7.9L188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.8-6.7-6.5-11.4-12.3-7.9zM512 734.2c-62.1 0-112.6-50.5-112.6-112.6S449.9 509 512 509s112.6 50.5 112.6 112.6S574.1 734.2 512 734.2zm0-160.9c-26.6 0-48.2 21.6-48.2 48.3 0 26.6 21.6 48.3 48.2 48.3s48.2-21.6 48.2-48.3c0-26.6-21.6-48.3-48.2-48.3z")), t.CustomerServiceFill = l("customer-service", o, c(i, "M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384z")), t.DashboardFill = l("dashboard", o, c(i, "M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM482 232c0-4.4 3.6-8 8-8h44c4.4 0 8 3.6 8 8v80c0 4.4-3.6 8-8 8h-44c-4.4 0-8-3.6-8-8v-80zM270 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44zm90.7-204.5l-31.1 31.1a8.03 8.03 0 0 1-11.3 0L261.7 352a8.03 8.03 0 0 1 0-11.3l31.1-31.1c3.1-3.1 8.2-3.1 11.3 0l56.6 56.6c3.1 3.1 3.1 8.2 0 11.3zm291.1 83.6l-84.5 84.5c5 18.7.2 39.4-14.5 54.1a55.95 55.95 0 0 1-79.2 0 55.95 55.95 0 0 1 0-79.2 55.87 55.87 0 0 1 54.1-14.5l84.5-84.5c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3c3.1 3.1 3.1 8.1 0 11.3zm43-52.4l-31.1-31.1a8.03 8.03 0 0 1 0-11.3l56.6-56.6c3.1-3.1 8.2-3.1 11.3 0l31.1 31.1c3.1 3.1 3.1 8.2 0 11.3l-56.6 56.6a8.03 8.03 0 0 1-11.3 0zM846 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44z")), t.DeleteFill = l("delete", o, c(i, "M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-200 0H360v-72h304v72z")), t.DiffFill = l("diff", o, c(i, "M854.2 306.6L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23zM553.4 201.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM568 753c0 3.8-3.4 7-7.5 7h-225c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7h225c4.1 0 7.5 3.2 7.5 7v42zm0-220c0 3.8-3.4 7-7.5 7H476v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V540h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H420v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1V484h84.5c4.1 0 7.5 3.1 7.5 7v42z")), t.DingtalkCircleFill = l("dingtalk-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm227 385.3c-1 4.2-3.5 10.4-7 17.8h.1l-.4.7c-20.3 43.1-73.1 127.7-73.1 127.7s-.1-.2-.3-.5l-15.5 26.8h74.5L575.1 810l32.3-128h-58.6l20.4-84.7c-16.5 3.9-35.9 9.4-59 16.8 0 0-31.2 18.2-89.9-35 0 0-39.6-34.7-16.6-43.4 9.8-3.7 47.4-8.4 77-12.3 40-5.4 64.6-8.2 64.6-8.2S422 517 392.7 512.5c-29.3-4.6-66.4-53.1-74.3-95.8 0 0-12.2-23.4 26.3-12.3 38.5 11.1 197.9 43.2 197.9 43.2s-207.4-63.3-221.2-78.7c-13.8-15.4-40.6-84.2-37.1-126.5 0 0 1.5-10.5 12.4-7.7 0 0 153.3 69.7 258.1 107.9 104.8 37.9 195.9 57.3 184.2 106.7z")), t.DatabaseFill = l("database", o, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v224h704V96c0-17.7-14.3-32-32-32zM288 232c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zM160 928c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V704H160v224zm128-136c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM160 640h704V384H160v256zm128-168c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z")), t.DingtalkSquareFill = l("dingtalk-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM739 449.3c-1 4.2-3.5 10.4-7 17.8h.1l-.4.7c-20.3 43.1-73.1 127.7-73.1 127.7s-.1-.2-.3-.5l-15.5 26.8h74.5L575.1 810l32.3-128h-58.6l20.4-84.7c-16.5 3.9-35.9 9.4-59 16.8 0 0-31.2 18.2-89.9-35 0 0-39.6-34.7-16.6-43.4 9.8-3.7 47.4-8.4 77-12.3 40-5.4 64.6-8.2 64.6-8.2S422 517 392.7 512.5c-29.3-4.6-66.4-53.1-74.3-95.8 0 0-12.2-23.4 26.3-12.3 38.5 11.1 197.9 43.2 197.9 43.2s-207.4-63.3-221.2-78.7c-13.8-15.4-40.6-84.2-37.1-126.5 0 0 1.5-10.5 12.4-7.7 0 0 153.3 69.7 258.1 107.9 104.8 37.9 195.9 57.3 184.2 106.7z")), t.DislikeFill = l("dislike", o, c(i, "M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H273v428h.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM112 132v364c0 17.7 14.3 32 32 32h65V100h-65c-17.7 0-32 14.3-32 32z")), t.DollarCircleFill = l("dollar-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm22.3 665.2l.2 31.7c0 4.4-3.6 8.1-8 8.1h-28.4c-4.4 0-8-3.6-8-8v-31.4C401.3 723 359.5 672.4 355 617.4c-.4-4.7 3.3-8.7 8-8.7h46.2c3.9 0 7.3 2.8 7.9 6.6 5.1 31.7 29.8 55.4 74.1 61.3V533.9l-24.7-6.3c-52.3-12.5-102.1-45.1-102.1-112.7 0-72.9 55.4-112.1 126.2-119v-33c0-4.4 3.6-8 8-8h28.1c4.4 0 8 3.6 8 8v32.7c68.5 6.9 119.9 46.9 125.9 109.2.5 4.7-3.2 8.8-8 8.8h-44.9c-4 0-7.4-3-7.9-6.9-4-29.2-27.4-53-65.5-58.2v134.3l25.4 5.9c64.8 16 108.9 47 108.9 116.4 0 75.3-56 117.3-134.3 124.1zM426.6 410.3c0 25.4 15.7 45.1 49.5 57.3 4.7 1.9 9.4 3.4 15 5v-124c-36.9 4.7-64.5 25.4-64.5 61.7zm116.5 135.2c-2.8-.6-5.6-1.3-8.8-2.2V677c42.6-3.8 72-27.2 72-66.4 0-30.7-15.9-50.7-63.2-65.1z")), t.DownCircleFill = l("down-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm184.5 353.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7H381c10.2 0 19.9 4.9 25.9 13.2L512 563.6l105.2-145.4c6-8.3 15.6-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.5 12.7z")), t.DownSquareFill = l("down-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM696.5 412.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7H381c10.2 0 19.9 4.9 25.9 13.2L512 558.6l105.2-145.4c6-8.3 15.6-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.5 12.7z")), t.DribbbleCircleFill = l("dribbble-circle", o, c(i, "M675.1 328.3a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6zm47.7-11.9c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 736c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm53.1-346.2c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm30.6 82.5c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4z")), t.DribbbleSquareFill = l("dribbble-square", o, c(i, "M498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm66.5 21.8c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM512 800c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm89.7-259.1c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zm-72.5-26.4c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4zm145.9-186.2a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6z")), t.DropboxCircleFill = l("dropbox-circle", o, c(i, "M663.8 455.5zm-151.5-93.8l-151.8 93.8 151.8 93.9 151.5-93.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm151.2 595.5L512.6 750l-151-90.5v-33.1l45.4 29.4 105.6-87.7 105.6 87.7 45.1-29.4v33.1zm-45.6-22.4l-105.3-87.7L407 637.1l-151-99.2 104.5-82.4L256 371.2 407 274l105.3 87.7L617.6 274 768 372.1l-104.2 83.5L768 539l-150.4 98.1z")), t.DropboxSquareFill = l("dropbox-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM663.2 659.5L512.6 750l-151-90.5v-33.1l45.4 29.4 105.6-87.7 105.6 87.7 45.1-29.4v33.1zm-45.6-22.4l-105.3-87.7L407 637.1l-151-99.2 104.5-82.4L256 371.2 407 274l105.3 87.7L617.6 274 768 372.1l-104.2 83.5L768 539l-150.4 98.1zM512.3 361.7l-151.8 93.8 151.8 93.9 151.5-93.9zm151.5 93.8z")), t.EnvironmentFill = l("environment", o, c(i, "M512 327c-29.9 0-58 11.6-79.2 32.8A111.6 111.6 0 0 0 400 439c0 29.9 11.7 58 32.8 79.2A111.6 111.6 0 0 0 512 551c29.9 0 58-11.7 79.2-32.8C612.4 497 624 468.9 624 439c0-29.9-11.6-58-32.8-79.2S541.9 327 512 327zm342.6-37.9a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 615c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z")), t.EditFill = l("edit", o, c(i, "M880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32zm-622.3-84c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9z")), t.ExclamationCircleFill = l("exclamation-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.EuroCircleFill = l("euro-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm63.5 375.8c4.4 0 8 3.6 8 8V475c0 4.4-3.6 8-8 8h-136c-.3 4.4-.3 9.1-.3 13.8v36h136.2c4.4 0 8 3.6 8 8V568c0 4.4-3.6 8-8 8H444.9c15.3 62 61.3 98.6 129.8 98.6 19.9 0 37.1-1.2 51.8-4.1 4.9-1 9.5 2.8 9.5 7.8v42.8c0 3.8-2.7 7-6.4 7.8-15.9 3.4-34.3 5.1-55.3 5.1-109.8 0-183-58.8-200.2-158H344c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h26.1v-36.9c0-4.4 0-8.8.3-12.8H344c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h31.7c19.7-94.2 92-149.9 198.6-149.9 20.9 0 39.4 1.9 55.3 5.4 3.7.8 6.3 4 6.3 7.8V346h.1c0 5.1-4.6 8.8-9.6 7.8-14.7-2.9-31.8-4.4-51.7-4.4-65.4 0-110.4 33.5-127.6 90.4h128.4z")), t.ExperimentFill = l("experiment", o, c(i, "M218.9 636.3l42.6 26.6c.1.1.3.2.4.3l12.7 8 .3.3a186.9 186.9 0 0 0 94.1 25.1c44.9 0 87.2-15.7 121-43.8a256.27 256.27 0 0 1 164.9-59.9c52.3 0 102.2 15.7 144.6 44.5l7.9 5-111.6-289V179.8h63.5c4.4 0 8-3.6 8-8V120c0-4.4-3.6-8-8-8H264.7c-4.4 0-8 3.6-8 8v51.9c0 4.4 3.6 8 8 8h63.5v173.6L218.9 636.3zm333-203.1c22 0 39.9 17.9 39.9 39.9S573.9 513 551.9 513 512 495.1 512 473.1s17.9-39.9 39.9-39.9zM878 825.1l-29.9-77.4-85.7-53.5-.1.1c-.7-.5-1.5-1-2.2-1.5l-8.1-5-.3-.3c-29-17.5-62.3-26.8-97-26.8-44.9 0-87.2 15.7-121 43.8a256.27 256.27 0 0 1-164.9 59.9c-53 0-103.5-16.1-146.2-45.6l-28.9-18.1L146 825.1c-2.8 7.4-4.3 15.2-4.3 23 0 35.2 28.6 63.8 63.8 63.8h612.9c7.9 0 15.7-1.5 23-4.3a63.6 63.6 0 0 0 36.6-82.5z")), t.EyeInvisibleFill = l("eye-invisible", o, c(i, "M508 624a112 112 0 0 0 112-112c0-3.28-.15-6.53-.43-9.74L498.26 623.57c3.21.28 6.45.43 9.74.43zm370.72-458.44L836 122.88a8 8 0 0 0-11.31 0L715.37 232.23Q624.91 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q56.7 119.43 136.55 191.45L112.56 835a8 8 0 0 0 0 11.31L155.25 889a8 8 0 0 0 11.31 0l712.16-712.12a8 8 0 0 0 0-11.32zM332 512a176 176 0 0 1 258.88-155.28l-48.62 48.62a112.08 112.08 0 0 0-140.92 140.92l-48.62 48.62A175.09 175.09 0 0 1 332 512z", "M942.2 486.2Q889.4 375 816.51 304.85L672.37 449A176.08 176.08 0 0 1 445 676.37L322.74 798.63Q407.82 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5z")), t.EyeFill = l("eye", o, c(i, "M396 512a112 112 0 1 0 224 0 112 112 0 1 0-224 0zm546.2-25.8C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM508 688c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z")), t.FacebookFill = l("facebook", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-92.4 233.5h-63.9c-50.1 0-59.8 23.8-59.8 58.8v77.1h119.6l-15.6 120.7h-104V912H539.2V602.2H434.9V481.4h104.3v-89c0-103.3 63.1-159.6 155.3-159.6 44.2 0 82.1 3.3 93.2 4.8v107.9z")), t.FastBackwardFill = l("fast-backward", o, c(r, "M517.6 273.5L230.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm320 0L550.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm-620-25.5h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z")), t.FastForwardFill = l("fast-forward", o, c(r, "M793.8 499.3L506.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.6c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8a16.14 16.14 0 0 0 0-25.4zm-320 0L186.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.5c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8c4.1-3.2 6.2-8 6.2-12.7 0-4.6-2.1-9.4-6.2-12.6zM857.6 248h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z")), t.FileAddFill = l("file-add", o, c(i, "M480 580H372a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h108v108a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8V644h108a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H544V472a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v108zm374.6-291.3c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2z")), t.FileExcelFill = l("file-excel", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM575.34 477.84l-61.22 102.3L452.3 477.8a12 12 0 0 0-10.27-5.79h-38.44a12 12 0 0 0-6.4 1.85 12 12 0 0 0-3.75 16.56l82.34 130.42-83.45 132.78a12 12 0 0 0-1.84 6.39 12 12 0 0 0 12 12h34.46a12 12 0 0 0 10.21-5.7l62.7-101.47 62.3 101.45a12 12 0 0 0 10.23 5.72h37.48a12 12 0 0 0 6.48-1.9 12 12 0 0 0 3.62-16.58l-83.83-130.55 85.3-132.47a12 12 0 0 0 1.9-6.5 12 12 0 0 0-12-12h-35.7a12 12 0 0 0-10.29 5.84z")), t.FileExclamationFill = l("file-exclamation", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM512 784a40 40 0 1 0 0-80 40 40 0 0 0 0 80zm32-152V448a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v184a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8z")), t.FileImageFill = l("file-image", o, c(i, "M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM400 402c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm296 294H328c-6.7 0-10.4-7.7-6.3-12.9l99.8-127.2a8 8 0 0 1 12.6 0l41.1 52.4 77.8-99.2a8 8 0 0 1 12.6 0l136.5 174c4.3 5.2.5 12.9-6.1 12.9zm-94-370V137.8L790.2 326H602z")), t.FileMarkdownFill = l("file-markdown", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM426.13 600.93l59.11 132.97a16 16 0 0 0 14.62 9.5h24.06a16 16 0 0 0 14.63-9.51l59.1-133.35V758a16 16 0 0 0 16.01 16H641a16 16 0 0 0 16-16V486a16 16 0 0 0-16-16h-34.75a16 16 0 0 0-14.67 9.62L512.1 662.2l-79.48-182.59a16 16 0 0 0-14.67-9.61H383a16 16 0 0 0-16 16v272a16 16 0 0 0 16 16h27.13a16 16 0 0 0 16-16V600.93z")), t.FilePdfFill = l("file-pdf", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM633.22 637.26c-15.18-.5-31.32.67-49.65 2.96-24.3-14.99-40.66-35.58-52.28-65.83l1.07-4.38 1.24-5.18c4.3-18.13 6.61-31.36 7.3-44.7.52-10.07-.04-19.36-1.83-27.97-3.3-18.59-16.45-29.46-33.02-30.13-15.45-.63-29.65 8-33.28 21.37-5.91 21.62-2.45 50.07 10.08 98.59-15.96 38.05-37.05 82.66-51.2 107.54-18.89 9.74-33.6 18.6-45.96 28.42-16.3 12.97-26.48 26.3-29.28 40.3-1.36 6.49.69 14.97 5.36 21.92 5.3 7.88 13.28 13 22.85 13.74 24.15 1.87 53.83-23.03 86.6-79.26 3.29-1.1 6.77-2.26 11.02-3.7l11.9-4.02c7.53-2.54 12.99-4.36 18.39-6.11 23.4-7.62 41.1-12.43 57.2-15.17 27.98 14.98 60.32 24.8 82.1 24.8 17.98 0 30.13-9.32 34.52-23.99 3.85-12.88.8-27.82-7.48-36.08-8.56-8.41-24.3-12.43-45.65-13.12zM385.23 765.68v-.36l.13-.34a54.86 54.86 0 0 1 5.6-10.76c4.28-6.58 10.17-13.5 17.47-20.87 3.92-3.95 8-7.8 12.79-12.12 1.07-.96 7.91-7.05 9.19-8.25l11.17-10.4-8.12 12.93c-12.32 19.64-23.46 33.78-33 43-3.51 3.4-6.6 5.9-9.1 7.51a16.43 16.43 0 0 1-2.61 1.42c-.41.17-.77.27-1.13.3a2.2 2.2 0 0 1-1.12-.15 2.07 2.07 0 0 1-1.27-1.91zM511.17 547.4l-2.26 4-1.4-4.38c-3.1-9.83-5.38-24.64-6.01-38-.72-15.2.49-24.32 5.29-24.32 6.74 0 9.83 10.8 10.07 27.05.22 14.28-2.03 29.14-5.7 35.65zm-5.81 58.46l1.53-4.05 2.09 3.8c11.69 21.24 26.86 38.96 43.54 51.31l3.6 2.66-4.39.9c-16.33 3.38-31.54 8.46-52.34 16.85 2.17-.88-21.62 8.86-27.64 11.17l-5.25 2.01 2.8-4.88c12.35-21.5 23.76-47.32 36.05-79.77zm157.62 76.26c-7.86 3.1-24.78.33-54.57-12.39l-7.56-3.22 8.2-.6c23.3-1.73 39.8-.45 49.42 3.07 4.1 1.5 6.83 3.39 8.04 5.55a4.64 4.64 0 0 1-1.36 6.31 6.7 6.7 0 0 1-2.17 1.28z")), t.FilePptFill = l("file-ppt", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM468.53 760v-91.54h59.27c60.57 0 100.2-39.65 100.2-98.12 0-58.22-39.58-98.34-99.98-98.34H424a12 12 0 0 0-12 12v276a12 12 0 0 0 12 12h32.53a12 12 0 0 0 12-12zm0-139.33h34.9c47.82 0 67.19-12.93 67.19-50.33 0-32.05-18.12-50.12-49.87-50.12h-52.22v100.45z")), t.FileTextFill = l("file-text", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM320 482a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h384a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H320zm0 136a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h184a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H320z")), t.FileWordFill = l("file-word", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM512 566.1l52.81 197a12 12 0 0 0 11.6 8.9h31.77a12 12 0 0 0 11.6-8.88l74.37-276a12 12 0 0 0 .4-3.12 12 12 0 0 0-12-12h-35.57a12 12 0 0 0-11.7 9.31l-45.78 199.1-49.76-199.32A12 12 0 0 0 528.1 472h-32.2a12 12 0 0 0-11.64 9.1L434.6 680.01 388.5 481.3a12 12 0 0 0-11.68-9.29h-35.39a12 12 0 0 0-3.11.41 12 12 0 0 0-8.47 14.7l74.17 276A12 12 0 0 0 415.6 772h31.99a12 12 0 0 0 11.59-8.9l52.81-197z")), t.FileUnknownFill = l("file-unknown", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM402 549c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103zm110 227a32 32 0 1 0 0-64 32 32 0 0 0 0 64z")), t.FileZipFill = l("file-zip", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM296 136v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm0 64v160h128V584H296zm48 48h32v64h-32v-64z")), t.FileFill = l("file", o, c(i, "M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2z")), t.FilterFill = l("filter", o, c(i, "M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z")), t.FireFill = l("fire", o, c(i, "M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9z")), t.FlagFill = l("flag", o, c(i, "M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32z")), t.FolderAddFill = l("folder-add", o, c(i, "M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM632 577c0 3.8-3.4 7-7.5 7H540v84.9c0 3.9-3.2 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V584h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7H484v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.8 0 7 3.2 7 7.1V528h84.5c4.1 0 7.5 3.2 7.5 7v42z")), t.FolderFill = l("folder", o, c(i, "M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32z")), t.FolderOpenFill = l("folder-open", o, c(i, "M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zm-180 0H238c-13 0-24.8 7.9-29.7 20L136 643.2V256h188.5l119.6 114.4H748V444z")), t.ForwardFill = l("forward", o, c(r, "M825.8 498L538.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L825.8 526c8.3-7.2 8.3-20.8 0-28zm-320 0L218.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L505.8 526c4.1-3.6 6.2-8.8 6.2-14 0-5.2-2.1-10.4-6.2-14z")), t.FrownFill = l("frown", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm376 272h-48.1c-4.2 0-7.8-3.2-8.1-7.4C604 636.1 562.5 597 512 597s-92.1 39.1-95.8 88.6c-.3 4.2-3.9 7.4-8.1 7.4H360a8 8 0 0 1-8-8.4c4.4-84.3 74.5-151.6 160-151.6s155.6 67.3 160 151.6a8 8 0 0 1-8 8.4zm24-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.FundFill = l("fund", o, c(i, "M926 164H94c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V196c0-17.7-14.3-32-32-32zm-92.3 194.4l-297 297.2a8.03 8.03 0 0 1-11.3 0L410.9 541.1 238.4 713.7a8.03 8.03 0 0 1-11.3 0l-36.8-36.8a8.03 8.03 0 0 1 0-11.3l214.9-215c3.1-3.1 8.2-3.1 11.3 0L531 565l254.5-254.6c3.1-3.1 8.2-3.1 11.3 0l36.8 36.8c3.2 3 3.2 8.1.1 11.2z")), t.FunnelPlotFill = l("funnel-plot", o, c(i, "M336.7 586h350.6l84.9-148H251.8zm543.4-432H143.9c-24.5 0-39.8 26.7-27.5 48L215 374h594l98.7-172c12.2-21.3-3.1-48-27.6-48zM349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V650H349v188z")), t.GiftFill = l("gift", o, c(i, "M160 894c0 17.7 14.3 32 32 32h286V550H160v344zm386 32h286c17.7 0 32-14.3 32-32V550H546v376zm334-616H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v140h366V310h68v172h366V342c0-17.7-14.3-32-32-32zm-402-4h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70 70 31.4 70 70v70zm138 0h-70v-70c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70z")), t.GithubFill = l("github", o, c(i, "M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9a127.5 127.5 0 0 1 38.1 91v112.5c.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z")), t.GitlabFill = l("gitlab", o, c(i, "M910.5 553.2l-109-370.8c-6.8-20.4-23.1-34.1-44.9-34.1s-39.5 12.3-46.3 32.7l-72.2 215.4H386.2L314 181.1c-6.8-20.4-24.5-32.7-46.3-32.7s-39.5 13.6-44.9 34.1L113.9 553.2c-4.1 13.6 1.4 28.6 12.3 36.8l385.4 289 386.7-289c10.8-8.1 16.3-23.1 12.2-36.8z")), t.GoldenFill = l("golden", o, c(i, "M905.9 806.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zm-470.2-248c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8z")), t.GoogleCircleFill = l("google-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm167 633.6C638.4 735 583 757 516.9 757c-95.7 0-178.5-54.9-218.8-134.9C281.5 589 272 551.6 272 512s9.5-77 26.1-110.1c40.3-80.1 123.1-135 218.8-135 66 0 121.4 24.3 163.9 63.8L610.6 401c-25.4-24.3-57.7-36.6-93.6-36.6-63.8 0-117.8 43.1-137.1 101-4.9 14.7-7.7 30.4-7.7 46.6s2.8 31.9 7.7 46.6c19.3 57.9 73.3 101 137 101 33 0 61-8.7 82.9-23.4 26-17.4 43.2-43.3 48.9-74H516.9v-94.8h230.7c2.9 16.1 4.4 32.8 4.4 50.1 0 74.7-26.7 137.4-73 180.1z")), t.GooglePlusCircleFill = l("google-plus-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm36.5 558.8c-43.9 61.8-132.1 79.8-200.9 53.3-69-26.3-118-99.2-112.1-173.5 1.5-90.9 85.2-170.6 176.1-167.5 43.6-2 84.6 16.9 118 43.6-14.3 16.2-29 31.8-44.8 46.3-40.1-27.7-97.2-35.6-137.3-3.6-57.4 39.7-60 133.4-4.8 176.1 53.7 48.7 155.2 24.5 170.1-50.1-33.6-.5-67.4 0-101-1.1-.1-20.1-.2-40.1-.1-60.2 56.2-.2 112.5-.3 168.8.2 3.3 47.3-3 97.5-32 136.5zM791 536.5c-16.8.2-33.6.3-50.4.4-.2 16.8-.3 33.6-.3 50.4H690c-.2-16.8-.2-33.5-.3-50.3-16.8-.2-33.6-.3-50.4-.5v-50.1c16.8-.2 33.6-.3 50.4-.3.1-16.8.3-33.6.4-50.4h50.2l.3 50.4c16.8.2 33.6.2 50.4.3v50.1z")), t.GooglePlusSquareFill = l("google-plus-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM548.5 622.8c-43.9 61.8-132.1 79.8-200.9 53.3-69-26.3-118-99.2-112.1-173.5 1.5-90.9 85.2-170.6 176.1-167.5 43.6-2 84.6 16.9 118 43.6-14.3 16.2-29 31.8-44.8 46.3-40.1-27.7-97.2-35.6-137.3-3.6-57.4 39.7-60 133.4-4.8 176.1 53.7 48.7 155.2 24.5 170.1-50.1-33.6-.5-67.4 0-101-1.1-.1-20.1-.2-40.1-.1-60.2 56.2-.2 112.5-.3 168.8.2 3.3 47.3-3 97.5-32 136.5zM791 536.5c-16.8.2-33.6.3-50.4.4-.2 16.8-.3 33.6-.3 50.4H690c-.2-16.8-.2-33.5-.3-50.3-16.8-.2-33.6-.3-50.4-.5v-50.1c16.8-.2 33.6-.3 50.4-.3.1-16.8.3-33.6.4-50.4h50.2l.3 50.4c16.8.2 33.6.2 50.4.3v50.1z")), t.GoogleSquareFill = l("google-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM679 697.6C638.4 735 583 757 516.9 757c-95.7 0-178.5-54.9-218.8-134.9A245.02 245.02 0 0 1 272 512c0-39.6 9.5-77 26.1-110.1 40.3-80.1 123.1-135 218.8-135 66 0 121.4 24.3 163.9 63.8L610.6 401c-25.4-24.3-57.7-36.6-93.6-36.6-63.8 0-117.8 43.1-137.1 101-4.9 14.7-7.7 30.4-7.7 46.6s2.8 31.9 7.7 46.6c19.3 57.9 73.3 101 137 101 33 0 61-8.7 82.9-23.4 26-17.4 43.2-43.3 48.9-74H516.9v-94.8h230.7c2.9 16.1 4.4 32.8 4.4 50.1 0 74.7-26.7 137.4-73 180.1z")), t.HddFill = l("hdd", o, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v224h704V96c0-17.7-14.3-32-32-32zM456 216c0 4.4-3.6 8-8 8H264c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zM160 928c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V704H160v224zm576-136c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM160 640h704V384H160v256zm96-152c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H264c-4.4 0-8-3.6-8-8v-48z")), t.HeartFill = l("heart", o, c(i, "M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9z")), t.HighlightFill = l("highlight", o, c(i, "M957.6 507.4L603.2 158.2a7.9 7.9 0 0 0-11.2 0L353.3 393.4a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8V860c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6 40.4 39.8a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2z")), t.HomeFill = l("home", o, c(i, "M946.5 505L534.6 93.4a31.93 31.93 0 0 0-45.2 0L77.5 505c-12 12-18.8 28.3-18.8 45.3 0 35.3 28.7 64 64 64h43.4V908c0 17.7 14.3 32 32 32H448V716h112v224h265.9c17.7 0 32-14.3 32-32V614.3h43.4c17 0 33.3-6.7 45.3-18.8 24.9-25 24.9-65.5-.1-90.5z")), t.HourglassFill = l("hourglass", o, c(i, "M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194z")), t.Html5Fill = l("html5", o, c(i, "M145.2 96l66 746.6L512 928l299.6-85.4L878.9 96H145.2zm595 177.1l-4.8 47.2-1.7 19.5H382.3l8.2 94.2h335.1l-3.3 24.3-21.2 242.2-1.7 16.2-187 51.6v.3h-1.2l-.3.1v-.1h-.1l-188.6-52L310.8 572h91.1l6.5 73.2 102.4 27.7h.4l102-27.6 11.4-118.6H510.9v-.1H306l-22.8-253.5-1.7-24.3h460.3l-1.6 24.3z")), t.IdcardFill = l("idcard", o, c(i, "M373 411c-28.5 0-51.7 23.3-51.7 52s23.2 52 51.7 52 51.7-23.3 51.7-52-23.2-52-51.7-52zm555-251H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zM608 420c0-4.4 1-8 2.3-8h123.4c1.3 0 2.3 3.6 2.3 8v48c0 4.4-1 8-2.3 8H610.3c-1.3 0-2.3-3.6-2.3-8v-48zm-86 253h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H224a8 8 0 0 1-8-8.4c2.8-53.3 32-99.7 74.6-126.1a111.8 111.8 0 0 1-29.1-75.5c0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.5-29.1 75.5 42.7 26.5 71.8 72.8 74.6 126.1.4 4.6-3.2 8.4-7.8 8.4zm278.9-53H615.1c-3.9 0-7.1-3.6-7.1-8v-48c0-4.4 3.2-8 7.1-8h185.7c3.9 0 7.1 3.6 7.1 8v48h.1c0 4.4-3.2 8-7.1 8z")), t.IeCircleFill = l("ie-circle", o, c(i, "M693.6 284.4c-24 0-51.1 11.7-72.6 22 46.3 18 86 57.3 112.3 99.6 7.1-18.9 14.6-47.9 14.6-67.9 0-32-22.8-53.7-54.3-53.7zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm253.9 492.9H437.1c0 100.4 144.3 136 196.8 47.4h120.8c-32.6 91.7-119.7 146-216.8 146-35.1 0-70.3-.1-101.7-15.6-87.4 44.5-180.3 56.6-180.3-42 0-45.8 23.2-107.1 44-145C335 484 381.3 422.8 435.6 374.5c-43.7 18.9-91.1 66.3-122 101.2 25.9-112.8 129.5-193.6 237.1-186.5 130-59.8 209.7-34.1 209.7 38.6 0 27.4-10.6 63.3-21.4 87.9 25.2 45.5 33.3 97.6 26.9 141.2zM540.5 399.1c-53.7 0-102 39.7-104 94.9h208c-2-55.1-50.6-94.9-104-94.9zM320.6 602.9c-73 152.4 11.5 172.2 100.3 123.3-46.6-27.5-82.6-72.2-100.3-123.3z")), t.IeSquareFill = l("ie-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM765.9 556.9H437.1c0 100.4 144.3 136 196.8 47.4h120.8c-32.6 91.7-119.7 146-216.8 146-35.1 0-70.3-.1-101.7-15.6-87.4 44.5-180.3 56.6-180.3-42 0-45.8 23.2-107.1 44-145C335 484 381.3 422.8 435.6 374.5c-43.7 18.9-91.1 66.3-122 101.2 25.9-112.8 129.5-193.6 237.1-186.5 130-59.8 209.7-34.1 209.7 38.6 0 27.4-10.6 63.3-21.4 87.9 25.2 45.5 33.3 97.6 26.9 141.2zm-72.3-272.5c-24 0-51.1 11.7-72.6 22 46.3 18 86 57.3 112.3 99.6 7.1-18.9 14.6-47.9 14.6-67.9 0-32-22.8-53.7-54.3-53.7zM540.5 399.1c-53.7 0-102 39.7-104 94.9h208c-2-55.1-50.6-94.9-104-94.9zM320.6 602.9c-73 152.4 11.5 172.2 100.3 123.3-46.6-27.5-82.6-72.2-100.3-123.3z")), t.InfoCircleFill = l("info-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.InstagramFill = l("instagram", o, c(i, "M512 378.7c-73.4 0-133.3 59.9-133.3 133.3S438.6 645.3 512 645.3 645.3 585.4 645.3 512 585.4 378.7 512 378.7zM911.8 512c0-55.2.5-109.9-2.6-165-3.1-64-17.7-120.8-64.5-167.6-46.9-46.9-103.6-61.4-167.6-64.5-55.2-3.1-109.9-2.6-165-2.6-55.2 0-109.9-.5-165 2.6-64 3.1-120.8 17.7-167.6 64.5C132.6 226.3 118.1 283 115 347c-3.1 55.2-2.6 109.9-2.6 165s-.5 109.9 2.6 165c3.1 64 17.7 120.8 64.5 167.6 46.9 46.9 103.6 61.4 167.6 64.5 55.2 3.1 109.9 2.6 165 2.6 55.2 0 109.9.5 165-2.6 64-3.1 120.8-17.7 167.6-64.5 46.9-46.9 61.4-103.6 64.5-167.6 3.2-55.1 2.6-109.8 2.6-165zM512 717.1c-113.5 0-205.1-91.6-205.1-205.1S398.5 306.9 512 306.9 717.1 398.5 717.1 512 625.5 717.1 512 717.1zm213.5-370.7c-26.5 0-47.9-21.4-47.9-47.9s21.4-47.9 47.9-47.9 47.9 21.4 47.9 47.9a47.84 47.84 0 0 1-47.9 47.9z")), t.InsuranceFill = l("insurance", o, c(i, "M519.9 358.8h97.9v41.6h-97.9zm347-188.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM411.3 656h-.2c0 4.4-3.6 8-8 8h-37.3c-4.4 0-8-3.6-8-8V471.4c-7.7 9.2-15.4 17.9-23.1 26a6.04 6.04 0 0 1-10.2-2.4l-13.2-43.5c-.6-2-.2-4.1 1.2-5.6 37-43.4 64.7-95.1 82.2-153.6 1.1-3.5 5-5.3 8.4-3.7l38.6 18.3c2.7 1.3 4.1 4.4 3.2 7.2a429.2 429.2 0 0 1-33.6 79V656zm296.5-49.2l-26.3 35.3a5.92 5.92 0 0 1-8.9.7c-30.6-29.3-56.8-65.2-78.1-106.9V656c0 4.4-3.6 8-8 8h-36.2c-4.4 0-8-3.6-8-8V536c-22 44.7-49 80.8-80.6 107.6a5.9 5.9 0 0 1-8.9-1.4L430 605.7a6 6 0 0 1 1.6-8.1c28.6-20.3 51.9-45.2 71-76h-55.1c-4.4 0-8-3.6-8-8V478c0-4.4 3.6-8 8-8h94.9v-18.6h-65.9c-4.4 0-8-3.6-8-8V316c0-4.4 3.6-8 8-8h184.7c4.4 0 8 3.6 8 8v127.2c0 4.4-3.6 8-8 8h-66.7v18.6h98.8c4.4 0 8 3.6 8 8v35.6c0 4.4-3.6 8-8 8h-59c18.1 29.1 41.8 54.3 72.3 76.9 2.6 2.1 3.2 5.9 1.2 8.5z")), t.InteractionFill = l("interaction", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM726 585.7c0 55.3-44.7 100.1-99.7 100.1H420.6v53.4c0 5.7-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.7l109.1-85.7c4.4-3.5 10.9-.3 10.9 5.3v53.4h205.7c19.6 0 35.5-16 35.5-35.6v-78.9c0-3.7 3-6.8 6.8-6.8h50.7c3.7 0 6.8 3 6.8 6.8v79.1zm-2.6-209.9l-109.1 85.7c-4.4 3.5-10.9.3-10.9-5.3v-53.4H397.7c-19.6 0-35.5 16-35.5 35.6v78.9c0 3.7-3 6.8-6.8 6.8h-50.7c-3.7 0-6.8-3-6.8-6.8v-78.9c0-55.3 44.7-100.1 99.7-100.1h205.7v-53.4c0-5.7 6.5-8.8 10.9-5.3l109.1 85.7c3.6 2.5 3.6 7.8.1 10.5z")), t.InterationFill = l("interation", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM726 585.7c0 55.3-44.7 100.1-99.7 100.1H420.6v53.4c0 5.7-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.7l109.1-85.7c4.4-3.5 10.9-.3 10.9 5.3v53.4h205.7c19.6 0 35.5-16 35.5-35.6v-78.9c0-3.7 3-6.8 6.8-6.8h50.7c3.7 0 6.8 3 6.8 6.8v79.1zm-2.6-209.9l-109.1 85.7c-4.4 3.5-10.9.3-10.9-5.3v-53.4H397.7c-19.6 0-35.5 16-35.5 35.6v78.9c0 3.7-3 6.8-6.8 6.8h-50.7c-3.7 0-6.8-3-6.8-6.8v-78.9c0-55.3 44.7-100.1 99.7-100.1h205.7v-53.4c0-5.7 6.5-8.8 10.9-5.3l109.1 85.7c3.6 2.5 3.6 7.8.1 10.5z")), t.LayoutFill = l("layout", o, c(i, "M384 912h496c17.7 0 32-14.3 32-32V340H384v572zm496-800H384v164h528V144c0-17.7-14.3-32-32-32zm-768 32v736c0 17.7 14.3 32 32 32h176V112H144c-17.7 0-32 14.3-32 32z")), t.LeftCircleFill = l("left-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm104 316.9c0 10.2-4.9 19.9-13.2 25.9L457.4 512l145.4 105.2c8.3 6 13.2 15.6 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178a8 8 0 0 1 12.7 6.5v46.8z")), t.LeftSquareFill = l("left-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM624 380.9c0 10.2-4.9 19.9-13.2 25.9L465.4 512l145.4 105.2c8.3 6 13.2 15.6 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178c5.3-3.8 12.7 0 12.7 6.5v46.8z")), t.LikeFill = l("like", o, c(i, "M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 0 0-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 0 0 471 99.9c-52 0-98 35-111.8 85.1l-85.9 311h-.3v428h472.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM112 528v364c0 17.7 14.3 32 32 32h65V496h-65c-17.7 0-32 14.3-32 32z")), t.LockFill = l("lock", o, c(i, "M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM540 701v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 1 1 56 0zm152-237H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224z")), t.LinkedinFill = l("linkedin", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM349.3 793.7H230.6V411.9h118.7v381.8zm-59.3-434a68.8 68.8 0 1 1 68.8-68.8c-.1 38-30.9 68.8-68.8 68.8zm503.7 434H675.1V608c0-44.3-.8-101.2-61.7-101.2-61.7 0-71.2 48.2-71.2 98v188.9H423.7V411.9h113.8v52.2h1.6c15.8-30 54.5-61.7 112.3-61.7 120.2 0 142.3 79.1 142.3 181.9v209.4z")), t.MailFill = l("mail", o, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-80.8 108.9L531.7 514.4c-7.8 6.1-18.7 6.1-26.5 0L189.6 268.9A7.2 7.2 0 0 1 194 256h648.8a7.2 7.2 0 0 1 4.4 12.9z")), t.MedicineBoxFill = l("medicine-box", o, c(i, "M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM660 628c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V636H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V464c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8v48zm4-372H360v-72h304v72z")), t.MediumCircleFill = l("medium-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm256 253.7l-40.8 39.1c-3.6 2.7-5.3 7.1-4.6 11.4v287.7c-.7 4.4 1 8.8 4.6 11.4l40 39.1v8.7H566.4v-8.3l41.3-40.1c4.1-4.1 4.1-5.3 4.1-11.4V422.5l-115 291.6h-15.5L347.5 422.5V618c-1.2 8.2 1.7 16.5 7.5 22.4l53.8 65.1v8.7H256v-8.7l53.8-65.1a26.1 26.1 0 0 0 7-22.4V392c.7-6.3-1.7-12.4-6.5-16.7l-47.8-57.6V309H411l114.6 251.5 100.9-251.3H768v8.5z")), t.MediumSquareFill = l("medium-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM768 317.7l-40.8 39.1c-3.6 2.7-5.3 7.1-4.6 11.4v287.7c-.7 4.4 1 8.8 4.6 11.4l40 39.1v8.7H566.4v-8.3l41.3-40.1c4.1-4.1 4.1-5.3 4.1-11.4V422.5l-115 291.6h-15.5L347.5 422.5V618c-1.2 8.2 1.7 16.5 7.5 22.4l53.8 65.1v8.7H256v-8.7l53.8-65.1a26.1 26.1 0 0 0 7-22.4V392c.7-6.3-1.7-12.4-6.5-16.7l-47.8-57.6V309H411l114.6 251.5 100.9-251.3H768v8.5z")), t.MehFill = l("meh", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm384 200c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v48zm16-152a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.MessageFill = l("message", o, c(i, "M924.3 338.4a447.57 447.57 0 0 0-96.1-143.3 443.09 443.09 0 0 0-143-96.3A443.91 443.91 0 0 0 512 64h-2c-60.5.3-119 12.3-174.1 35.9a444.08 444.08 0 0 0-141.7 96.5 445 445 0 0 0-95 142.8A449.89 449.89 0 0 0 65 514.1c.3 69.4 16.9 138.3 47.9 199.9v152c0 25.4 20.6 46 45.9 46h151.8a447.72 447.72 0 0 0 199.5 48h2.1c59.8 0 117.7-11.6 172.3-34.3A443.2 443.2 0 0 0 827 830.5c41.2-40.9 73.6-88.7 96.3-142 23.5-55.2 35.5-113.9 35.8-174.5.2-60.9-11.6-120-34.8-175.6zM312.4 560c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.4 48-47.9 48zm199.6 0c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.5 48-47.9 48zm199.6 0c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.5 48-47.9 48z")), t.MinusCircleFill = l("minus-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z")), t.MinusSquareFill = l("minus-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM704 536c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z")), t.MobileFill = l("mobile", o, c(i, "M744 62H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V126c0-35.3-28.7-64-64-64zM512 824c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z")), t.MoneyCollectFill = l("money-collect", o, c(i, "M911.5 699.7a8 8 0 0 0-10.3-4.8L840 717.2V179c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V762c0 3.3 2.1 6.3 5.3 7.5L501 909.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zm-243.8-377L564 514.3h57.6c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3v39h76.3c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3V703c0 4.4-3.6 8-8 8h-49.9c-4.4 0-8-3.6-8-8v-63.4h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h76v-39h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h57L356.5 322.8c-2.1-3.8-.7-8.7 3.2-10.8 1.2-.7 2.5-1 3.8-1h55.7a8 8 0 0 1 7.1 4.4L511 484.2h3.3L599 315.4c1.3-2.7 4.1-4.4 7.1-4.4h54.5c4.4 0 8 3.6 8.1 7.9 0 1.3-.4 2.6-1 3.8z")), t.PauseCircleFill = l("pause-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-80 600c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z")), t.PayCircleFill = l("pay-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm166.6 246.8L567.5 515.6h62c4.4 0 8 3.6 8 8v29.9c0 4.4-3.6 8-8 8h-82V603h82c4.4 0 8 3.6 8 8v29.9c0 4.4-3.6 8-8 8h-82V717c0 4.4-3.6 8-8 8h-54.3c-4.4 0-8-3.6-8-8v-68.1h-81.7c-4.4 0-8-3.6-8-8V611c0-4.4 3.6-8 8-8h81.7v-41.5h-81.7c-4.4 0-8-3.6-8-8v-29.9c0-4.4 3.6-8 8-8h61.4L345.4 310.8a8.07 8.07 0 0 1 7-11.9h60.7c3 0 5.8 1.7 7.1 4.4l90.6 180h3.4l90.6-180a8 8 0 0 1 7.1-4.4h59.5c4.4 0 8 3.6 8 8 .2 1.4-.2 2.7-.8 3.9z")), t.NotificationFill = l("notification", o, c(i, "M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.6c-3.7 11.6-5.6 23.9-5.6 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1z")), t.PhoneFill = l("phone", o, c(i, "M885.6 230.2L779.1 123.8a80.83 80.83 0 0 0-57.3-23.8c-21.7 0-42.1 8.5-57.4 23.8L549.8 238.4a80.83 80.83 0 0 0-23.8 57.3c0 21.7 8.5 42.1 23.8 57.4l83.8 83.8A393.82 393.82 0 0 1 553.1 553 395.34 395.34 0 0 1 437 633.8L353.2 550a80.83 80.83 0 0 0-57.3-23.8c-21.7 0-42.1 8.5-57.4 23.8L123.8 664.5a80.89 80.89 0 0 0-23.8 57.4c0 21.7 8.5 42.1 23.8 57.4l106.3 106.3c24.4 24.5 58.1 38.4 92.7 38.4 7.3 0 14.3-.6 21.2-1.8 134.8-22.2 268.5-93.9 376.4-201.7C828.2 612.8 899.8 479.2 922.3 344c6.8-41.3-6.9-83.8-36.7-113.8z")), t.PictureFill = l("picture", o, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zM338 304c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm513.9 437.1a8.11 8.11 0 0 1-5.2 1.9H177.2c-4.4 0-8-3.6-8-8 0-1.9.7-3.7 1.9-5.2l170.3-202c2.8-3.4 7.9-3.8 11.3-1 .3.3.7.6 1 1l99.4 118 158.1-187.5c2.8-3.4 7.9-3.8 11.3-1 .3.3.7.6 1 1l229.6 271.6c2.6 3.3 2.2 8.4-1.2 11.2z")), t.PieChartFill = l("pie-chart", o, c(i, "M863.1 518.5H505.5V160.9c0-4.4-3.6-8-8-8h-26a398.57 398.57 0 0 0-282.5 117 397.47 397.47 0 0 0-85.6 127C82.6 446.2 72 498.5 72 552.5S82.6 658.7 103.4 708c20.1 47.5 48.9 90.3 85.6 127 36.7 36.7 79.4 65.5 127 85.6a396.64 396.64 0 0 0 155.6 31.5 398.57 398.57 0 0 0 282.5-117c36.7-36.7 65.5-79.4 85.6-127a396.64 396.64 0 0 0 31.5-155.6v-26c-.1-4.4-3.7-8-8.1-8zM951 463l-2.6-28.2c-8.5-92-49.3-178.8-115.1-244.3A398.5 398.5 0 0 0 588.4 75.6L560.1 73c-4.7-.4-8.7 3.2-8.7 7.9v383.7c0 4.4 3.6 8 8 8l383.6-1c4.7-.1 8.4-4 8-8.6z")), t.PlayCircleFill = l("play-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm144.1 454.9L437.7 677.8a8.02 8.02 0 0 1-12.7-6.5V353.7a8 8 0 0 1 12.7-6.5L656.1 506a7.9 7.9 0 0 1 0 12.9z")), t.PlaySquareFill = l("play-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM641.7 520.8L442.3 677.6c-7.4 5.8-18.3.6-18.3-8.8V355.3c0-9.4 10.9-14.7 18.3-8.8l199.4 156.7a11.2 11.2 0 0 1 0 17.6z")), t.PlusCircleFill = l("plus-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z")), t.PlusSquareFill = l("plus-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM704 536c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z")), t.PoundCircleFill = l("pound-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm146 658c0 4.4-3.6 8-8 8H376.2c-4.4 0-8-3.6-8-8v-38.5c0-3.7 2.5-6.9 6.1-7.8 44-10.9 72.8-49 72.8-94.2 0-14.7-2.5-29.4-5.9-44.2H374c-4.4 0-8-3.6-8-8v-30c0-4.4 3.6-8 8-8h53.7c-7.8-25.1-14.6-50.7-14.6-77.1 0-75.8 58.6-120.3 151.5-120.3 26.5 0 51.4 5.5 70.3 12.7 3.1 1.2 5.2 4.2 5.2 7.5v39.5a8 8 0 0 1-10.6 7.6c-17.9-6.4-39-10.5-60.4-10.5-53.3 0-87.3 26.6-87.3 70.2 0 24.7 6.2 47.9 13.4 70.5h112c4.4 0 8 3.6 8 8v30c0 4.4-3.6 8-8 8h-98.6c3.1 13.2 5.3 26.9 5.3 41 0 40.7-16.5 73.9-43.9 91.1v4.7h180c4.4 0 8 3.6 8 8V722z")), t.PrinterFill = l("printer", o, c(i, "M732 120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v148h440V120zm120 212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM664 844H360V568h304v276zm164-360c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v40z")), t.ProfileFill = l("profile", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM380 696c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm0-144c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm0-144c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm304 272c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-144c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-144c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48z")), t.ProjectFill = l("project", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM368 744c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v464zm192-280c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v184zm192 72c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v256z")), t.PushpinFill = l("pushpin", o, c(i, "M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3-15.4 12.3-16.6 35.4-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8z")), t.PropertySafetyFill = l("property-safety", o, c(i, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM648.3 332.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V658c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3 73.2-144.3a10 10 0 0 1 8.9-5.5h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8z")), t.QqCircleFill = l("qq-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm210.5 612.4c-11.5 1.4-44.9-52.7-44.9-52.7 0 31.3-16.2 72.2-51.1 101.8 16.9 5.2 54.9 19.2 45.9 34.4-7.3 12.3-125.6 7.9-159.8 4-34.2 3.8-152.5 8.3-159.8-4-9.1-15.2 28.9-29.2 45.8-34.4-35-29.5-51.1-70.4-51.1-101.8 0 0-33.4 54.1-44.9 52.7-5.4-.7-12.4-29.6 9.4-99.7 10.3-33 22-60.5 40.2-105.8-3.1-116.9 45.3-215 160.4-215 113.9 0 163.3 96.1 160.4 215 18.1 45.2 29.9 72.8 40.2 105.8 21.7 70.1 14.6 99.1 9.3 99.7z")), t.QqSquareFill = l("qq-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM722.5 676.4c-11.5 1.4-44.9-52.7-44.9-52.7 0 31.3-16.2 72.2-51.1 101.8 16.9 5.2 54.9 19.2 45.9 34.4-7.3 12.3-125.6 7.9-159.8 4-34.2 3.8-152.5 8.3-159.8-4-9.1-15.2 28.9-29.2 45.8-34.4-35-29.5-51.1-70.4-51.1-101.8 0 0-33.4 54.1-44.9 52.7-5.4-.7-12.4-29.6 9.4-99.7 10.3-33 22-60.5 40.2-105.8-3.1-116.9 45.3-215 160.4-215 113.9 0 163.3 96.1 160.4 215 18.1 45.2 29.9 72.8 40.2 105.8 21.7 70.1 14.6 99.1 9.3 99.7z")), t.QuestionCircleFill = l("question-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 708c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm62.9-219.5a48.3 48.3 0 0 0-30.9 44.8V620c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-21.5c0-23.1 6.7-45.9 19.9-64.9 12.9-18.6 30.9-32.8 52.1-40.9 34-13.1 56-41.6 56-72.7 0-44.1-43.1-80-96-80s-96 35.9-96 80v7.6c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V420c0-39.3 17.2-76 48.4-103.3C430.4 290.4 470 276 512 276s81.6 14.5 111.6 40.7C654.8 344 672 380.7 672 420c0 57.8-38.1 109.8-97.1 132.5z")), t.ReadFill = l("read", o, c(i, "M928 161H699.2c-49.1 0-97.1 14.1-138.4 40.7L512 233l-48.8-31.3A255.2 255.2 0 0 0 324.8 161H96c-17.7 0-32 14.3-32 32v568c0 17.7 14.3 32 32 32h228.8c49.1 0 97.1 14.1 138.4 40.7l44.4 28.6c1.3.8 2.8 1.3 4.3 1.3s3-.4 4.3-1.3l44.4-28.6C602 807.1 650.1 793 699.2 793H928c17.7 0 32-14.3 32-32V193c0-17.7-14.3-32-32-32zM404 553.5c0 4.1-3.2 7.5-7.1 7.5H211.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm0-140c0 4.1-3.2 7.5-7.1 7.5H211.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm416 140c0 4.1-3.2 7.5-7.1 7.5H627.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm0-140c0 4.1-3.2 7.5-7.1 7.5H627.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45z")), t.ReconciliationFill = l("reconciliation", o, c(i, "M676 623c-18.8 0-34 15.2-34 34s15.2 34 34 34 34-15.2 34-34-15.2-34-34-34zm204-455H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zM448 848H176V616h272v232zm0-296H176v-88h272v88zm20-272v-48h72v-56h64v56h72v48H468zm180 168v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8zm28 301c-50.8 0-92-41.2-92-92s41.2-92 92-92 92 41.2 92 92-41.2 92-92 92zm92-245c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v96zm-92 61c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34z")), t.RedEnvelopeFill = l("red-envelope", o, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zM647 470.4l-87.2 161h45.9c4.6 0 8.4 3.8 8.4 8.4v25.1c0 4.6-3.8 8.4-8.4 8.4h-63.3v28.6h63.3c4.6 0 8.4 3.8 8.4 8.4v25c.2 4.6-3.6 8.5-8.2 8.5h-63.3v49.9c0 4.6-3.8 8.4-8.4 8.4h-43.7c-4.6 0-8.4-3.8-8.4-8.4v-49.9h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h63v-28.6h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h45.4l-87.5-161c-2.2-4.1-.7-9.1 3.4-11.4 1.3-.6 2.6-1 3.9-1h48.8c3.2 0 6.1 1.8 7.5 4.6l71.9 141.8 71.9-141.9a8.5 8.5 0 0 1 7.5-4.6h47.8c4.6 0 8.4 3.8 8.4 8.4-.1 1.5-.5 2.9-1.1 4.1zM512.6 323L289 148h446L512.6 323z")), t.RedditCircleFill = l("reddit-circle", o, c(i, "M584 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0zm144-108a35.9 35.9 0 0 0-32.5 20.6c18.8 14.3 34.4 30.7 45.9 48.8A35.98 35.98 0 0 0 728 440zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm245 477.9c4.6 13.5 7 27.6 7 42.1 0 99.4-112.8 180-252 180s-252-80.6-252-180c0-14.5 2.4-28.6 7-42.1A72.01 72.01 0 0 1 296 404c27.1 0 50.6 14.9 62.9 37 36.2-19.8 80.2-32.8 128.1-36.1l58.4-131.1c4.3-9.8 15.2-14.8 25.5-11.8l91.6 26.5a54.03 54.03 0 0 1 101.6 25.6c0 29.8-24.2 54-54 54-23.5 0-43.5-15.1-50.9-36.1L577 308.3l-43 96.5c49.1 3 94.2 16.1 131.2 36.3 12.3-22.1 35.8-37 62.9-37 39.8 0 72 32.2 72 72-.1 29.3-17.8 54.6-43.1 65.8zm-171.3 83c-14.9 11.7-44.3 24.3-73.7 24.3s-58.9-12.6-73.7-24.3c-9.3-7.3-22.7-5.7-30 3.6-7.3 9.3-5.7 22.7 3.6 30 25.7 20.4 65 33.5 100.1 33.5 35.1 0 74.4-13.1 100.2-33.5 9.3-7.3 10.9-20.8 3.6-30a21.46 21.46 0 0 0-30.1-3.6zM296 440a35.98 35.98 0 0 0-13.4 69.4c11.5-18.1 27.1-34.5 45.9-48.8A35.9 35.9 0 0 0 296 440zm72 108a36 36 0 1 0 72 0 36 36 0 1 0-72 0z")), t.RedditSquareFill = l("reddit-square", o, c(i, "M296 440a35.98 35.98 0 0 0-13.4 69.4c11.5-18.1 27.1-34.5 45.9-48.8A35.9 35.9 0 0 0 296 440zm289.7 184.9c-14.9 11.7-44.3 24.3-73.7 24.3s-58.9-12.6-73.7-24.3c-9.3-7.3-22.7-5.7-30 3.6-7.3 9.3-5.7 22.7 3.6 30 25.7 20.4 65 33.5 100.1 33.5 35.1 0 74.4-13.1 100.2-33.5 9.3-7.3 10.9-20.8 3.6-30a21.46 21.46 0 0 0-30.1-3.6zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM757 541.9c4.6 13.5 7 27.6 7 42.1 0 99.4-112.8 180-252 180s-252-80.6-252-180c0-14.5 2.4-28.6 7-42.1A72.01 72.01 0 0 1 296 404c27.1 0 50.6 14.9 62.9 37 36.2-19.8 80.2-32.8 128.1-36.1l58.4-131.1c4.3-9.8 15.2-14.8 25.5-11.8l91.6 26.5a54.03 54.03 0 0 1 101.6 25.6c0 29.8-24.2 54-54 54-23.5 0-43.5-15.1-50.9-36.1L577 308.3l-43 96.5c49.1 3 94.2 16.1 131.2 36.3 12.3-22.1 35.8-37 62.9-37 39.8 0 72 32.2 72 72-.1 29.3-17.8 54.6-43.1 65.8zM584 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0zm144-108a35.9 35.9 0 0 0-32.5 20.6c18.8 14.3 34.4 30.7 45.9 48.8A35.98 35.98 0 0 0 728 440zM368 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0z")), t.RestFill = l("rest", o, c(i, "M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zM508 704c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144zM291 256l22.4-76h397.2l22.4 76H291zm137 304a80 80 0 1 0 160 0 80 80 0 1 0-160 0z")), t.RightCircleFill = l("right-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm154.7 454.5l-246 178c-5.3 3.8-12.7 0-12.7-6.5v-46.9c0-10.2 4.9-19.9 13.2-25.9L566.6 512 421.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.8 0 13z")), t.RocketFill = l("rocket", o, c(i, "M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8L864 736zM512 352a48.01 48.01 0 0 1 0 96 48.01 48.01 0 0 1 0-96zm116.1 432.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5s-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5z")), t.RightSquareFill = l("right-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM658.7 518.5l-246 178c-5.3 3.8-12.7 0-12.7-6.5v-46.9c0-10.2 4.9-19.9 13.2-25.9L558.6 512 413.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.8 0 13z")), t.SafetyCertificateFill = l("safety-certificate", o, c(i, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM694.5 340.7L481.9 633.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.1 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.8-6.6 13-6.6H688c6.5.1 10.3 7.5 6.5 12.8z")), t.SaveFill = l("save", o, c(i, "M893.3 293.3L730.7 130.7c-12-12-28.3-18.7-45.3-18.7H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 176h256v112H384V176zm128 554c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144zm0-224c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80z")), t.ScheduleFill = l("schedule", o, c(i, "M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zM424 688c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-136c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm374.5-91.3l-165 228.7a15.9 15.9 0 0 1-25.8 0L493.5 531.2c-3.8-5.3 0-12.7 6.5-12.7h54.9c5.1 0 9.9 2.5 12.9 6.6l52.8 73.1 103.7-143.7c3-4.2 7.8-6.6 12.9-6.6H792c6.5.1 10.3 7.5 6.5 12.8z")), t.SecurityScanFill = l("security-scan", o, c(i, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM626.8 554c-48.5 48.5-123 55.2-178.6 20.1l-77.5 77.5a8.03 8.03 0 0 1-11.3 0l-34-34a8.03 8.03 0 0 1 0-11.3l77.5-77.5c-35.1-55.7-28.4-130.1 20.1-178.6 56.3-56.3 147.5-56.3 203.8 0 56.3 56.3 56.3 147.5 0 203.8zm-158.54-45.27a80.1 80.1 0 1 0 113.27-113.28 80.1 80.1 0 1 0-113.27 113.28z")), t.SettingFill = l("setting", o, c(i, "M512.5 390.6c-29.9 0-57.9 11.6-79.1 32.8-21.1 21.2-32.8 49.2-32.8 79.1 0 29.9 11.7 57.9 32.8 79.1 21.2 21.1 49.2 32.8 79.1 32.8 29.9 0 57.9-11.7 79.1-32.8 21.1-21.2 32.8-49.2 32.8-79.1 0-29.9-11.7-57.9-32.8-79.1a110.96 110.96 0 0 0-79.1-32.8zm412.3 235.5l-65.4-55.9c3.1-19 4.7-38.4 4.7-57.7s-1.6-38.8-4.7-57.7l65.4-55.9a32.03 32.03 0 0 0 9.3-35.2l-.9-2.6a442.5 442.5 0 0 0-79.6-137.7l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.2 28.9c-30-24.6-63.4-44-99.6-57.5l-15.7-84.9a32.05 32.05 0 0 0-25.8-25.7l-2.7-.5c-52-9.4-106.8-9.4-158.8 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.3a353.44 353.44 0 0 0-98.9 57.3l-81.8-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a445.93 445.93 0 0 0-79.6 137.7l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.2 56.5c-3.1 18.8-4.6 38-4.6 57 0 19.2 1.5 38.4 4.6 57l-66 56.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.3 44.8 96.8 79.6 137.7l1.8 2.1a32.12 32.12 0 0 0 35.1 9.5l81.8-29.1c29.8 24.5 63 43.9 98.9 57.3l15.8 85.3a32.05 32.05 0 0 0 25.8 25.7l2.7.5a448.27 448.27 0 0 0 158.8 0l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-84.9c36.2-13.6 69.6-32.9 99.6-57.5l81.2 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.5-87.4 79.6-137.7l.9-2.6c4.3-12.4.6-26.3-9.5-35zm-412.3 52.2c-97.1 0-175.8-78.7-175.8-175.8s78.7-175.8 175.8-175.8 175.8 78.7 175.8 175.8-78.7 175.8-175.8 175.8z")), t.ShopFill = l("shop", o, c(i, "M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h274V736h128v176h274c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zm-72 568H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 3-1.3 6-2.6 9-4v242.2zm0-568.1H214v-88h596v88z")), t.ShoppingFill = l("shopping", o, c(i, "M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-208 0H400v-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16z")), t.SketchCircleFill = l("sketch-circle", o, c(i, "M582.3 625.6l147.9-166.3h-63.4zm90-202.3h62.5l-92.1-115.1zm-274.7 36L512 684.5l114.4-225.2zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm286.7 380.2L515.8 762.3c-1 1.1-2.4 1.7-3.8 1.7s-2.8-.6-3.8-1.7L225.3 444.2a5.14 5.14 0 0 1-.2-6.6L365.6 262c1-1.2 2.4-1.9 4-1.9h284.6c1.6 0 3 .7 4 1.9l140.5 175.6a4.9 4.9 0 0 1 0 6.6zm-190.5-20.9L512 326.1l-96.2 97.2zM420.3 301.1l-23.1 89.8 88.8-89.8zm183.4 0H538l88.8 89.8zm-222.4 7.1l-92.1 115.1h62.5zm-87.5 151.1l147.9 166.3-84.5-166.3z")), t.SketchSquareFill = l("sketch-square", o, c(i, "M608.2 423.3L512 326.1l-96.2 97.2zm-25.9 202.3l147.9-166.3h-63.4zm90-202.3h62.5l-92.1-115.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-81.3 332.2L515.8 762.3c-1 1.1-2.4 1.7-3.8 1.7s-2.8-.6-3.8-1.7L225.3 444.2a5.14 5.14 0 0 1-.2-6.6L365.6 262c1-1.2 2.4-1.9 4-1.9h284.6c1.6 0 3 .7 4 1.9l140.5 175.6a4.9 4.9 0 0 1 0 6.6zm-401.1 15.1L512 684.5l114.4-225.2zm-16.3-151.1l-92.1 115.1h62.5zm-87.5 151.1l147.9 166.3-84.5-166.3zm126.5-158.2l-23.1 89.8 88.8-89.8zm183.4 0H538l88.8 89.8z")), t.SkinFill = l("skin", o, c(i, "M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44z")), t.SlackCircleFill = l("slack-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4a50.35 50.35 0 0 1 50.3 50.4v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm83.7-50.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM579.3 765c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134c-13.3 0-26.1-5.3-35.6-14.8S529 593.6 529 580.2c0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z")), t.SlackSquareFill = l("slack-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM529 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4a50.35 50.35 0 0 1 50.3 50.4v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm134 403.2c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z")), t.SkypeFill = l("skype", o, c(i, "M883.7 578.6c4.1-22.5 6.3-45.5 6.3-68.5 0-51-10-100.5-29.7-147-19-45-46.3-85.4-81-120.1a375.79 375.79 0 0 0-120.1-80.9c-46.6-19.7-96-29.7-147-29.7-24 0-48.1 2.3-71.5 6.8A225.1 225.1 0 0 0 335.6 113c-59.7 0-115.9 23.3-158.1 65.5A222.25 222.25 0 0 0 112 336.6c0 38 9.8 75.4 28.1 108.4-3.7 21.4-5.7 43.3-5.7 65.1 0 51 10 100.5 29.7 147 19 45 46.2 85.4 80.9 120.1 34.7 34.7 75.1 61.9 120.1 80.9 46.6 19.7 96 29.7 147 29.7 22.2 0 44.4-2 66.2-5.9 33.5 18.9 71.3 29 110 29 59.7 0 115.9-23.2 158.1-65.5 42.3-42.2 65.5-98.4 65.5-158.1.1-38-9.7-75.5-28.2-108.7zm-370 162.9c-134.2 0-194.2-66-194.2-115.4 0-25.4 18.7-43.1 44.5-43.1 57.4 0 42.6 82.5 149.7 82.5 54.9 0 85.2-29.8 85.2-60.3 0-18.3-9-38.7-45.2-47.6l-119.4-29.8c-96.1-24.1-113.6-76.1-113.6-124.9 0-101.4 95.5-139.5 185.2-139.5 82.6 0 180 45.7 180 106.5 0 26.1-22.6 41.2-48.4 41.2-49 0-40-67.8-138.7-67.8-49 0-76.1 22.2-76.1 53.9s38.7 41.8 72.3 49.5l88.4 19.6c96.8 21.6 121.3 78.1 121.3 131.3 0 82.3-63.3 143.9-191 143.9z")), t.SlidersFill = l("sliders", o, c(i, "M904 296h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-584-72h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm292 180h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8z")), t.SmileFill = l("smile", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm224 272c-85.5 0-155.6-67.3-160-151.6a8 8 0 0 1 8-8.4h48.1c4.2 0 7.8 3.2 8.1 7.4C420 589.9 461.5 629 512 629s92.1-39.1 95.8-88.6c.3-4.2 3.9-7.4 8.1-7.4H664a8 8 0 0 1 8 8.4C667.6 625.7 597.5 693 512 693zm176-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.SnippetsFill = l("snippets", o, c(i, "M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 486H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z")), t.SoundFill = l("sound", o, c(i, "M892.1 737.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344zm174 132H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zM625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1z")), t.StarFill = l("star", o, c(i, "M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0 0 46.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z")), t.StepBackwardFill = l("step-backward", o, c(r, "M347.6 528.95l383.2 301.02c14.25 11.2 35.2 1.1 35.2-16.95V210.97c0-18.05-20.95-28.14-35.2-16.94L347.6 495.05a21.53 21.53 0 0 0 0 33.9M330 864h-64a8 8 0 0 1-8-8V168a8 8 0 0 1 8-8h64a8 8 0 0 1 8 8v688a8 8 0 0 1-8 8")), t.StepForwardFill = l("step-forward", o, c(r, "M676.4 528.95L293.2 829.97c-14.25 11.2-35.2 1.1-35.2-16.95V210.97c0-18.05 20.95-28.14 35.2-16.94l383.2 301.02a21.53 21.53 0 0 1 0 33.9M694 864h64a8 8 0 0 0 8-8V168a8 8 0 0 0-8-8h-64a8 8 0 0 0-8 8v688a8 8 0 0 0 8 8")), t.StopFill = l("stop", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm234.8 736.5L223.5 277.2c16-19.7 34-37.7 53.7-53.7l523.3 523.3c-16 19.6-34 37.7-53.7 53.7z")), t.SwitcherFill = l("switcher", o, c(i, "M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zM596 606c0 4.4-3.6 8-8 8H308c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h280c4.4 0 8 3.6 8 8v48zm284-494H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32z")), t.TabletFill = l("tablet", o, c(i, "M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM512 824c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z")), t.TagFill = l("tag", o, c(i, "M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8c1.9 1.9 4.4 2.9 7.1 2.9s5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM699 387c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z")), t.TagsFill = l("tags", o, c(i, "M483.2 790.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3c-2.3-.2-4.7.6-6.3 2.3L137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c3.1 3.2 8.2 3.2 11.3 0zm122.7-533.4c18.7-18.7 49.1-18.7 67.9 0 18.7 18.7 18.7 49.1 0 67.9-18.7 18.7-49.1 18.7-67.9 0-18.7-18.7-18.7-49.1 0-67.9zm283.8 282.9l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3z")), t.TaobaoCircleFill = l("taobao-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z")), t.TaobaoSquareFill = l("taobao-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z")), t.ToolFill = l("tool", o, c(i, "M865.3 244.7c-.3-.3-61.1 59.8-182.1 180.6l-84.9-84.9 180.9-180.9c-95.2-57.3-217.5-42.6-296.8 36.7A244.42 244.42 0 0 0 419 432l1.8 6.7-283.5 283.4c-6.2 6.2-6.2 16.4 0 22.6l141.4 141.4c6.2 6.2 16.4 6.2 22.6 0l283.3-283.3 6.7 1.8c83.7 22.3 173.6-.9 236-63.3 79.4-79.3 94.1-201.6 38-296.6z")), t.ThunderboltFill = l("thunderbolt", o, c(i, "M848 359.3H627.7L825.8 109c4.1-5.3.4-13-6.3-13H436c-2.8 0-5.5 1.5-6.9 4L170 547.5c-3.1 5.3.7 12 6.9 12h174.4l-89.4 357.6c-1.9 7.8 7.5 13.3 13.3 7.7L853.5 373c5.2-4.9 1.7-13.7-5.5-13.7z")), t.TrademarkCircleFill = l("trademark-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm164.7 660.2c-1.1.5-2.3.8-3.5.8h-62c-3.1 0-5.9-1.8-7.2-4.6l-74.6-159.2h-88.7V717c0 4.4-3.6 8-8 8H378c-4.4 0-8-3.6-8-8V307c0-4.4 3.6-8 8-8h155.6c98.8 0 144.2 59.9 144.2 131.1 0 70.2-43.6 106.4-78.4 119.2l80.8 164.2c2.1 3.9.4 8.7-3.5 10.7zM523.9 357h-83.4v148H522c53 0 82.8-25.6 82.8-72.4 0-50.3-32.9-75.6-80.9-75.6z")), t.TwitterCircleFill = l("twitter-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm215.3 337.7c.3 4.7.3 9.6.3 14.4 0 146.8-111.8 315.9-316.1 315.9-63 0-121.4-18.3-170.6-49.8 9 1 17.6 1.4 26.8 1.4 52 0 99.8-17.6 137.9-47.4-48.8-1-89.8-33-103.8-77 17.1 2.5 32.5 2.5 50.1-2a111 111 0 0 1-88.9-109v-1.4c14.7 8.3 32 13.4 50.1 14.1a111.13 111.13 0 0 1-49.5-92.4c0-20.7 5.4-39.6 15.1-56a315.28 315.28 0 0 0 229 116.1C492 353.1 548.4 292 616.2 292c32 0 60.8 13.4 81.1 35 25.1-4.7 49.1-14.1 70.5-26.7-8.3 25.7-25.7 47.4-48.8 61.1 22.4-2.4 44-8.6 64-17.3-15.1 22.2-34 41.9-55.7 57.6z")), t.TrophyFill = l("trophy", o, c(i, "M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.6 630.2 359 721.8 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.8 758.4 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM248 439.6c-37.1-11.9-64-46.7-64-87.6V232h64v207.6zM840 352c0 41-26.9 75.8-64 87.6V232h64v120z")), t.TwitterSquareFill = l("twitter-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM727.3 401.7c.3 4.7.3 9.6.3 14.4 0 146.8-111.8 315.9-316.1 315.9-63 0-121.4-18.3-170.6-49.8 9 1 17.6 1.4 26.8 1.4 52 0 99.8-17.6 137.9-47.4-48.8-1-89.8-33-103.8-77 17.1 2.5 32.5 2.5 50.1-2a111 111 0 0 1-88.9-109v-1.4c14.7 8.3 32 13.4 50.1 14.1a111.13 111.13 0 0 1-49.5-92.4c0-20.7 5.4-39.6 15.1-56a315.28 315.28 0 0 0 229 116.1C492 353.1 548.4 292 616.2 292c32 0 60.8 13.4 81.1 35 25.1-4.7 49.1-14.1 70.5-26.7-8.3 25.7-25.7 47.4-48.8 61.1 22.4-2.4 44-8.6 64-17.3-15.1 22.2-34 41.9-55.7 57.6z")), t.UnlockFill = l("unlock", o, c(i, "M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM540 701v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 1 1 56 0z")), t.UpCircleFill = l("up-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm178 555h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 460.4 406.8 605.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z")), t.UpSquareFill = l("up-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM690 624h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 465.4 406.8 610.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z")), t.UsbFill = l("usb", o, c(i, "M408 312h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm352 120V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zm-72 0H336V184h352v248zM568 312h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z")), t.WalletFill = l("wallet", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-32 464H528V448h320v128zm-268-64a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.VideoCameraFill = l("video-camera", o, c(i, "M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM328 352c0 4.4-3.6 8-8 8H208c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h112c4.4 0 8 3.6 8 8v48zm560 273l-104-59.8V458.9L888 399v226z")), t.WarningFill = l("warning", o, c(i, "M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.WeiboCircleFill = l("weibo-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-44.4 672C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-93-32.2c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zm34.9-14.5c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z")), t.WechatFill = l("wechat", o, c(i, "M690.1 377.4c5.9 0 11.8.2 17.6.5-24.4-128.7-158.3-227.1-319.9-227.1C209 150.8 64 271.4 64 420.2c0 81.1 43.6 154.2 111.9 203.6a21.5 21.5 0 0 1 9.1 17.6c0 2.4-.5 4.6-1.1 6.9-5.5 20.3-14.2 52.8-14.6 54.3-.7 2.6-1.7 5.2-1.7 7.9 0 5.9 4.8 10.8 10.8 10.8 2.3 0 4.2-.9 6.2-2l70.9-40.9c5.3-3.1 11-5 17.2-5 3.2 0 6.4.5 9.5 1.4 33.1 9.5 68.8 14.8 105.7 14.8 6 0 11.9-.1 17.8-.4-7.1-21-10.9-43.1-10.9-66 0-135.8 132.2-245.8 295.3-245.8zm-194.3-86.5c23.8 0 43.2 19.3 43.2 43.1s-19.3 43.1-43.2 43.1c-23.8 0-43.2-19.3-43.2-43.1s19.4-43.1 43.2-43.1zm-215.9 86.2c-23.8 0-43.2-19.3-43.2-43.1s19.3-43.1 43.2-43.1 43.2 19.3 43.2 43.1-19.4 43.1-43.2 43.1zm586.8 415.6c56.9-41.2 93.2-102 93.2-169.7 0-124-120.8-224.5-269.9-224.5-149 0-269.9 100.5-269.9 224.5S540.9 847.5 690 847.5c30.8 0 60.6-4.4 88.1-12.3 2.6-.8 5.2-1.2 7.9-1.2 5.2 0 9.9 1.6 14.3 4.1l59.1 34c1.7 1 3.3 1.7 5.2 1.7a9 9 0 0 0 6.4-2.6 9 9 0 0 0 2.6-6.4c0-2.2-.9-4.4-1.4-6.6-.3-1.2-7.6-28.3-12.2-45.3-.5-1.9-.9-3.8-.9-5.7.1-5.9 3.1-11.2 7.6-14.5zM600.2 587.2c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9c0 19.8-16.2 35.9-36 35.9zm179.9 0c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9a36.08 36.08 0 0 1-36 35.9z")), t.WindowsFill = l("windows", o, c(i, "M523.8 191.4v288.9h382V128.1zm0 642.2l382 62.2v-352h-382zM120.1 480.2H443V201.9l-322.9 53.5zm0 290.4L443 823.2V543.8H120.1z")), t.YahooFill = l("yahoo", o, c(i, "M937.3 231H824.7c-15.5 0-27.7 12.6-27.1 28.1l13.1 366h84.4l65.4-366.4c2.7-15.2-7.8-27.7-23.2-27.7zm-77.4 450.4h-14.1c-27.1 0-49.2 22.2-49.2 49.3v14.1c0 27.1 22.2 49.3 49.2 49.3h14.1c27.1 0 49.2-22.2 49.2-49.3v-14.1c0-27.1-22.2-49.3-49.2-49.3zM402.6 231C216.2 231 65 357 65 512.5S216.2 794 402.6 794s337.6-126 337.6-281.5S589.1 231 402.6 231zm225.2 225.2h-65.3L458.9 559.8v65.3h84.4v56.3H318.2v-56.3h84.4v-65.3L242.9 399.9h-37v-56.3h168.5v56.3h-37l93.4 93.5 28.1-28.1V400h168.8v56.2z")), t.WeiboSquareFill = l("weibo-square", o, c(i, "M433.6 595.1c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM467.6 736C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-58.1-46.7c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z")), t.YuqueFill = l("yuque", o, c(i, "M854.6 370.6c-9.9-39.4 9.9-102.2 73.4-124.4l-67.9-3.6s-25.7-90-143.6-98c-117.9-8.1-195-3-195-3s87.4 55.6 52.4 154.7c-25.6 52.5-65.8 95.6-108.8 144.7-1.3 1.3-2.5 2.6-3.5 3.7C319.4 605 96 860 96 860c245.9 64.4 410.7-6.3 508.2-91.1 20.5-.2 35.9-.3 46.3-.3 135.8 0 250.6-117.6 245.9-248.4-3.2-89.9-31.9-110.2-41.8-149.6z")), t.YoutubeFill = l("youtube", o, c(i, "M941.3 296.1a112.3 112.3 0 0 0-79.2-79.3C792.2 198 512 198 512 198s-280.2 0-350.1 18.7A112.12 112.12 0 0 0 82.7 296C64 366 64 512 64 512s0 146 18.7 215.9c10.3 38.6 40.7 69 79.2 79.3C231.8 826 512 826 512 826s280.2 0 350.1-18.8c38.6-10.3 68.9-40.7 79.2-79.3C960 658 960 512 960 512s0-146-18.7-215.9zM423 646V378l232 133-232 135z")), t.ZhihuSquareFill = l("zhihu-square", o, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM432.3 592.8l71 80.7c9.2 33-3.3 63.1-3.3 63.1l-95.7-111.9v-.1c-8.9 29-20.1 57.3-33.3 84.7-22.6 45.7-55.2 54.7-89.5 57.7-34.4 3-23.3-5.3-23.3-5.3 68-55.5 78-87.8 96.8-123.1 11.9-22.3 20.4-64.3 25.3-96.8H264.1s4.8-31.2 19.2-41.7h101.6c.6-15.3-1.3-102.8-2-131.4h-49.4c-9.2 45-41 56.7-48.1 60.1-7 3.4-23.6 7.1-21.1 0 2.6-7.1 27-46.2 43.2-110.7 16.3-64.6 63.9-62 63.9-62-12.8 22.5-22.4 73.6-22.4 73.6h159.7c10.1 0 10.6 39 10.6 39h-90.8c-.7 22.7-2.8 83.8-5 131.4H519s12.2 15.4 12.2 41.7h-110l-.1 1.5c-1.5 20.4-6.3 43.9-12.9 67.6l24.1-18.1zm335.5 116h-87.6l-69.5 46.6-16.4-46.6h-40.1V321.5h213.6v387.3zM408.2 611s0-.1 0 0zm216 94.3l56.8-38.1h45.6-.1V364.7H596.7v302.5h14.1z")), t.ZhihuCircleFill = l("zhihu-circle", o, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-90.7 477.8l-.1 1.5c-1.5 20.4-6.3 43.9-12.9 67.6l24-18.1 71 80.7c9.2 33-3.3 63.1-3.3 63.1l-95.7-111.9v-.1c-8.9 29-20.1 57.3-33.3 84.7-22.6 45.7-55.2 54.7-89.5 57.7-34.4 3-23.3-5.3-23.3-5.3 68-55.5 78-87.8 96.8-123.1 11.9-22.3 20.4-64.3 25.3-96.8H264.1s4.8-31.2 19.2-41.7h101.6c.6-15.3-1.3-102.8-2-131.4h-49.4c-9.2 45-41 56.7-48.1 60.1-7 3.4-23.6 7.1-21.1 0 2.6-7.1 27-46.2 43.2-110.7 16.3-64.6 63.9-62 63.9-62-12.8 22.5-22.4 73.6-22.4 73.6h159.7c10.1 0 10.6 39 10.6 39h-90.8c-.7 22.7-2.8 83.8-5 131.4H519s12.2 15.4 12.2 41.7H421.3zm346.5 167h-87.6l-69.5 46.6-16.4-46.6h-40.1V321.5h213.6v387.3zM408.2 611s0-.1 0 0zm216 94.3l56.8-38.1h45.6-.1V364.7H596.7v302.5h14.1z")), t.AccountBookOutline = l("account-book", a, c(i, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584zM639.5 414h-45c-3 0-5.8 1.7-7.1 4.4L514 563.8h-2.8l-73.4-145.4a8 8 0 0 0-7.1-4.4h-46c-1.3 0-2.7.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9l89.3 164h-48.6c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1v33.7h-65.1c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1V752c0 4.4 3.6 8 8 8h41.3c4.4 0 8-3.6 8-8v-53.8h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-65.4v-33.7h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-49.1l89.3-164.1c.6-1.2 1-2.5 1-3.8.1-4.4-3.4-8-7.9-8z")), t.AlertOutline = l("alert", a, c(i, "M193 796c0 17.7 14.3 32 32 32h574c17.7 0 32-14.3 32-32V563c0-176.2-142.8-319-319-319S193 386.8 193 563v233zm72-233c0-136.4 110.6-247 247-247s247 110.6 247 247v193H404V585c0-5.5-4.5-10-10-10h-44c-5.5 0-10 4.5-10 10v171h-75V563zm-48.1-252.5l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3l-67.9-67.9a8.03 8.03 0 0 0-11.3 0l-39.6 39.6a8.03 8.03 0 0 0 0 11.3l67.9 67.9c3.1 3.1 8.1 3.1 11.3 0zm669.6-79.2l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-67.9 67.9a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l67.9-67.9c3.1-3.2 3.1-8.2 0-11.3zM832 892H192c-17.7 0-32 14.3-32 32v24c0 4.4 3.6 8 8 8h688c4.4 0 8-3.6 8-8v-24c0-17.7-14.3-32-32-32zM484 180h56c4.4 0 8-3.6 8-8V76c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v96c0 4.4 3.6 8 8 8z")), t.AlipayCircleOutline = l("alipay-circle", a, c(i, "M308.6 545.7c-19.8 2-57.1 10.7-77.4 28.6-61 53-24.5 150 99 150 71.8 0 143.5-45.7 199.8-119-80.2-38.9-148.1-66.8-221.4-59.6zm460.5 67c100.1 33.4 154.7 43 166.7 44.8A445.9 445.9 0 0 0 960 512c0-247.4-200.6-448-448-448S64 264.6 64 512s200.6 448 448 448c155.9 0 293.2-79.7 373.5-200.5-75.6-29.8-213.6-85-286.8-120.1-69.9 85.7-160.1 137.8-253.7 137.8-158.4 0-212.1-138.1-137.2-229 16.3-19.8 44.2-38.7 87.3-49.4 67.5-16.5 175 10.3 275.7 43.4 18.1-33.3 33.4-69.9 44.7-108.9H305.1V402h160v-56.2H271.3v-31.3h193.8v-80.1s0-13.5 13.7-13.5H557v93.6h191.7v31.3H557.1V402h156.4c-15 61.1-37.7 117.4-66.2 166.8 47.5 17.1 90.1 33.3 121.8 43.9z")), t.AliwangwangOutline = l("aliwangwang", a, c(i, "M868.2 377.4c-18.9-45.1-46.3-85.6-81.2-120.6a377.26 377.26 0 0 0-120.5-81.2A375.65 375.65 0 0 0 519 145.8c-41.9 0-82.9 6.7-121.9 20C306 123.3 200.8 120 170.6 120c-2.2 0-7.4 0-9.4.2-11.9.4-22.8 6.5-29.2 16.4-6.5 9.9-7.7 22.4-3.4 33.5l64.3 161.6a378.59 378.59 0 0 0-52.8 193.2c0 51.4 10 101 29.8 147.6 18.9 45 46.2 85.6 81.2 120.5 34.7 34.8 75.4 62.1 120.5 81.2C418.3 894 467.9 904 519 904c51.3 0 100.9-10.1 147.7-29.8 44.9-18.9 85.5-46.3 120.4-81.2 34.7-34.8 62.1-75.4 81.2-120.6a376.5 376.5 0 0 0 29.8-147.6c-.2-51.2-10.1-100.8-29.9-147.4zm-66.4 266.5a307.08 307.08 0 0 1-65.9 98c-28.4 28.5-61.3 50.7-97.7 65.9h-.1c-38 16-78.3 24.2-119.9 24.2a306.51 306.51 0 0 1-217.5-90.2c-28.4-28.5-50.6-61.4-65.8-97.8v-.1c-16-37.8-24.1-78.2-24.1-119.9 0-55.4 14.8-109.7 42.8-157l13.2-22.1-9.5-23.9L206 192c14.9.6 35.9 2.1 59.7 5.6 43.8 6.5 82.5 17.5 114.9 32.6l19 8.9 19.9-6.8c31.5-10.8 64.8-16.2 98.9-16.2a306.51 306.51 0 0 1 217.5 90.2c28.4 28.5 50.6 61.4 65.8 97.8l.1.1.1.1c16 37.6 24.1 78 24.2 119.8-.1 41.7-8.3 82-24.3 119.8zM681.1 364.2c-20.4 0-37.1 16.7-37.1 37.1v55.1c0 20.4 16.6 37.1 37.1 37.1s37.1-16.7 37.1-37.1v-55.1c0-20.5-16.7-37.1-37.1-37.1zm-175.2 0c-20.5 0-37.1 16.7-37.1 37.1v55.1c0 20.4 16.7 37.1 37.1 37.1 20.5 0 37.1-16.7 37.1-37.1v-55.1c0-20.5-16.7-37.1-37.1-37.1z")), t.AndroidOutline = l("android", a, c(i, "M448.3 225.2c-18.6 0-32 13.4-32 31.9s13.5 31.9 32 31.9c18.6 0 32-13.4 32-31.9.1-18.4-13.4-31.9-32-31.9zm393.9 96.4c-13.8-13.8-32.7-21.5-53.2-21.5-3.9 0-7.4.4-10.7 1v-1h-3.6c-5.5-30.6-18.6-60.5-38.1-87.4-18.7-25.7-43-47.9-70.8-64.9l25.1-35.8v-3.3c0-.8.4-2.3.7-3.8.6-2.4 1.4-5.5 1.4-8.9 0-18.5-13.5-31.9-32-31.9-9.8 0-19.5 5.7-25.9 15.4l-29.3 42.1c-30-9.8-62.4-15-93.8-15-31.3 0-63.7 5.2-93.8 15L389 79.4c-6.6-9.6-16.1-15.4-26-15.4-18.6 0-32 13.4-32 31.9 0 6.2 2.5 12.8 6.7 17.4l22.6 32.3c-28.7 17-53.5 39.4-72.2 65.1-19.4 26.9-32 56.8-36.7 87.4h-5.5v1c-3.2-.6-6.7-1-10.7-1-20.3 0-39.2 7.5-53.1 21.3-13.8 13.8-21.5 32.6-21.5 53v235c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 3.9 0 7.4-.4 10.7-1v93.5c0 29.2 23.9 53.1 53.2 53.1H331v58.3c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 20.3 0 39.2-7.5 53.1-21.3 13.8-13.8 21.5-32.6 21.5-53v-58.2H544v58.1c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 20.4 0 39.2-7.5 53.1-21.6 13.8-13.8 21.5-32.6 21.5-53v-58.2h31.9c29.3 0 53.2-23.8 53.2-53.1v-91.4c3.2.6 6.7 1 10.7 1 20.3 0 39.2-7.5 53.1-21.3 13.8-13.8 21.5-32.6 21.5-53v-235c-.1-20.3-7.6-39-21.4-52.9zM246 609.6c0 6.8-3.9 10.6-10.7 10.6-6.8 0-10.7-3.8-10.7-10.6V374.5c0-6.8 3.9-10.6 10.7-10.6 6.8 0 10.7 3.8 10.7 10.6v235.1zm131.1-396.8c37.5-27.3 85.3-42.3 135-42.3s97.5 15.1 135 42.5c32.4 23.7 54.2 54.2 62.7 87.5H314.4c8.5-33.4 30.5-64 62.7-87.7zm39.3 674.7c-.6 5.6-4.4 8.7-10.5 8.7-6.8 0-10.7-3.8-10.7-10.6v-58.2h21.2v60.1zm202.3 8.7c-6.8 0-10.7-3.8-10.7-10.6v-58.2h21.2v60.1c-.6 5.6-4.3 8.7-10.5 8.7zm95.8-132.6H309.9V364h404.6v399.6zm85.2-154c0 6.8-3.9 10.6-10.7 10.6-6.8 0-10.7-3.8-10.7-10.6V374.5c0-6.8 3.9-10.6 10.7-10.6 6.8 0 10.7 3.8 10.7 10.6v235.1zM576.1 225.2c-18.6 0-32 13.4-32 31.9s13.5 31.9 32 31.9c18.6 0 32.1-13.4 32.1-32-.1-18.6-13.4-31.8-32.1-31.8z")), t.ApiOutline = l("api", a, c(i, "M917.7 148.8l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM769.1 441.7l-59.4 59.4-186.8-186.8 59.4-59.4c24.9-24.9 58.1-38.7 93.4-38.7 35.3 0 68.4 13.7 93.4 38.7 24.9 24.9 38.7 58.1 38.7 93.4 0 35.3-13.8 68.4-38.7 93.4zm-190.2 105a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2c-68.9 69-77 175.7-24.3 253.5l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2zM441.7 769.1a131.32 131.32 0 0 1-93.4 38.7c-35.3 0-68.4-13.7-93.4-38.7a131.32 131.32 0 0 1-38.7-93.4c0-35.3 13.7-68.4 38.7-93.4l59.4-59.4 186.8 186.8-59.4 59.4z")), t.AppstoreOutline = l("appstore", a, c(i, "M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z")), t.AudioOutline = l("audio", a, c(i, "M842 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1zM512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm-94-392c0-50.6 41.9-92 94-92s94 41.4 94 92v224c0 50.6-41.9 92-94 92s-94-41.4-94-92V232z")), t.AppleOutline = l("apple", a, c(i, "M747.4 535.7c-.4-68.2 30.5-119.6 92.9-157.5-34.9-50-87.7-77.5-157.3-82.8-65.9-5.2-138 38.4-164.4 38.4-27.9 0-91.7-36.6-141.9-36.6C273.1 298.8 163 379.8 163 544.6c0 48.7 8.9 99 26.7 150.8 23.8 68.2 109.6 235.3 199.1 232.6 46.8-1.1 79.9-33.2 140.8-33.2 59.1 0 89.7 33.2 141.9 33.2 90.3-1.3 167.9-153.2 190.5-221.6-121.1-57.1-114.6-167.2-114.6-170.7zm-10.6 267c-14.3 19.9-28.7 35.6-41.9 45.7-10.5 8-18.6 11.4-24 11.6-9-.1-17.7-2.3-34.7-8.8-1.2-.5-2.5-1-4.2-1.6l-4.4-1.7c-17.4-6.7-27.8-10.3-41.1-13.8-18.6-4.8-37.1-7.4-56.9-7.4-20.2 0-39.2 2.5-58.1 7.2-13.9 3.5-25.6 7.4-42.7 13.8-.7.3-8.1 3.1-10.2 3.9-3.5 1.3-6.2 2.3-8.7 3.2-10.4 3.6-17 5.1-22.9 5.2-.7 0-1.3-.1-1.8-.2-1.1-.2-2.5-.6-4.1-1.3-4.5-1.8-9.9-5.1-16-9.8-14-10.9-29.4-28-45.1-49.9-27.5-38.6-53.5-89.8-66-125.7-15.4-44.8-23-87.7-23-128.6 0-60.2 17.8-106 48.4-137.1 26.3-26.6 61.7-41.5 97.8-42.3 5.9.1 14.5 1.5 25.4 4.5 8.6 2.3 18 5.4 30.7 9.9 3.8 1.4 16.9 6.1 18.5 6.7 7.7 2.8 13.5 4.8 19.2 6.6 18.2 5.8 32.3 9 47.6 9 15.5 0 28.8-3.3 47.7-9.8 7.1-2.4 32.9-12 37.5-13.6 25.6-9.1 44.5-14 60.8-15.2 4.8-.4 9.1-.4 13.2-.1 22.7 1.8 42.1 6.3 58.6 13.8-37.6 43.4-57 96.5-56.9 158.4-.3 14.7.9 31.7 5.1 51.8 6.4 30.5 18.6 60.7 37.9 89 14.7 21.5 32.9 40.9 54.7 57.8-11.5 23.7-25.6 48.2-40.4 68.8zm-94.5-572c50.7-60.2 46.1-115 44.6-134.7-44.8 2.6-96.6 30.5-126.1 64.8-32.5 36.8-51.6 82.3-47.5 133.6 48.4 3.7 92.6-21.2 129-63.7z")), t.BackwardOutline = l("backward", a, c(r, "M485.6 249.9L198.2 498c-8.3 7.1-8.3 20.8 0 27.9l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9zm320 0L518.2 498a18.6 18.6 0 0 0-6.2 14c0 5.2 2.1 10.4 6.2 14l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9z")), t.BankOutline = l("bank", a, c(i, "M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM512 196.7l271.1 197.2H240.9L512 196.7zM264 462h117v374H264V462zm189 0h117v374H453V462zm307 374H642V462h118v374z")), t.BellOutline = l("bell", a, c(i, "M816 768h-24V428c0-141.1-104.3-257.7-240-277.1V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.9c-135.7 19.4-240 136-240 277.1v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48zM304 768V428c0-55.6 21.6-107.8 60.9-147.1S456.4 220 512 220c55.6 0 107.8 21.6 147.1 60.9S720 372.4 720 428v340H304z")), t.BehanceSquareOutline = l("behance-square", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM598.5 350.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7zm-248.5-10.1c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1s12.7-3.8 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8z")), t.BookOutline = l("book", a, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-260 72h96v209.9L621.5 312 572 347.4V136zm220 752H232V136h280v296.9c0 3.3 1 6.6 3 9.3a15.9 15.9 0 0 0 22.3 3.7l83.8-59.9 81.4 59.4c2.7 2 6 3.1 9.4 3.1 8.8 0 16-7.2 16-16V136h64v752z")), t.BoxPlotOutline = l("box-plot", a, c(i, "M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H232c-4.4 0-8 3.6-8 8v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h560c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zM296 368h88v288h-88V368zm432 288H448V368h280v288z")), t.BulbOutline = l("bulb", a, c(i, "M632 888H392c-4.4 0-8 3.6-8 8v32c0 17.7 14.3 32 32 32h192c17.7 0 32-14.3 32-32v-32c0-4.4-3.6-8-8-8zM512 64c-181.1 0-328 146.9-328 328 0 121.4 66 227.4 164 284.1V792c0 17.7 14.3 32 32 32h264c17.7 0 32-14.3 32-32V676.1c98-56.7 164-162.7 164-284.1 0-181.1-146.9-328-328-328zm127.9 549.8L604 634.6V752H420V634.6l-35.9-20.8C305.4 568.3 256 484.5 256 392c0-141.4 114.6-256 256-256s256 114.6 256 256c0 92.5-49.4 176.3-128.1 221.8z")), t.BugOutline = l("bug", a, c(i, "M304 280h56c4.4 0 8-3.6 8-8 0-28.3 5.9-53.2 17.1-73.5 10.6-19.4 26-34.8 45.4-45.4C450.9 142 475.7 136 504 136h16c28.3 0 53.2 5.9 73.5 17.1 19.4 10.6 34.8 26 45.4 45.4C650 218.9 656 243.7 656 272c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1a184.31 184.31 0 0 0-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9a184.31 184.31 0 0 0-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z", "M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8a63 63 0 0 1-63 63H232a63 63 0 0 1-63-63c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7a273 273 0 0 0 22.7 49c24.3 41.5 59 76.2 100.5 100.5S460.5 960 512 960s99.8-13.9 141.3-38.2a281.38 281.38 0 0 0 123.2-149.5A120 120 0 0 1 836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM716 680c0 36.8-9.7 72-27.8 102.9-17.7 30.3-43 55.6-73.3 73.3C584 874.3 548.8 884 512 884s-72-9.7-102.9-27.8c-30.3-17.7-55.6-43-73.3-73.3A202.75 202.75 0 0 1 308 680V412h408v268z")), t.CalculatorOutline = l("calculator", a, c(i, "M251.2 387H320v68.8c0 1.8 1.8 3.2 4 3.2h48c2.2 0 4-1.4 4-3.3V387h68.8c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H376v-68.8c0-1.8-1.8-3.2-4-3.2h-48c-2.2 0-4 1.4-4 3.2V331h-68.8c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm328 0h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0 265h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0 104h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm-195.7-81l61.2-74.9c4.3-5.2.7-13.1-5.9-13.1H388c-2.3 0-4.5 1-5.9 2.9l-34 41.6-34-41.6a7.85 7.85 0 0 0-5.9-2.9h-50.9c-6.6 0-10.2 7.9-5.9 13.1l61.2 74.9-62.7 76.8c-4.4 5.2-.8 13.1 5.8 13.1h50.8c2.3 0 4.5-1 5.9-2.9l35.5-43.5 35.5 43.5c1.5 1.8 3.7 2.9 5.9 2.9h50.8c6.6 0 10.2-7.9 5.9-13.1L383.5 675zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-36 732H180V180h664v664z")), t.BuildOutline = l("build", a, c(i, "M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zm-504 68h200v200H412V278zm-68 468H144V546h200v200zm268 0H412V546h200v200zm268-268H680V278h200v200z")), t.CalendarOutline = l("calendar", a, c(i, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z")), t.CameraOutline = l("camera", a, c(i, "M864 248H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 248H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V328c0-44.2-35.8-80-80-80zm8 536c0 4.4-3.6 8-8 8H160c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h186.7l17.1-47.8 22.9-64.2h250.5l22.9 64.2 17.1 47.8H864c4.4 0 8 3.6 8 8v456zM512 384c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zm0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z")), t.CarOutline = l("car", a, c(i, "M380 704h264c4.4 0 8-3.6 8-8v-84c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v36H428v-36c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v84c0 4.4 3.6 8 8 8zm340-123a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm239-167.6L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM840 517v237H184V517l15.6-43h624.8l15.6 43zM292.7 218.1l.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220l72.7-199.9zM224 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.CaretDownOutline = l("caret-down", a, c(r, "M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z")), t.CaretLeftOutline = l("caret-left", a, c(r, "M689 165.1L308.2 493.5c-10.9 9.4-10.9 27.5 0 37L689 858.9c14.2 12.2 35 1.2 35-18.5V183.6c0-19.7-20.8-30.7-35-18.5z")), t.CaretRightOutline = l("caret-right", a, c(r, "M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z")), t.CarryOutOutline = l("carry-out", a, c(i, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584zM688 420h-55.2c-5.1 0-10 2.5-13 6.6L468.9 634.4l-64.7-89c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.4 0-12.8-6.5-12.8z")), t.CheckCircleOutline = l("check-circle", a, c(i, "M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0 0 51.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z", "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.CaretUpOutline = l("caret-up", a, c(r, "M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z")), t.CheckSquareOutline = l("check-square", a, c(i, "M433.1 657.7a31.8 31.8 0 0 0 51.7 0l210.6-292c3.8-5.3 0-12.7-6.5-12.7H642c-10.2 0-19.9 4.9-25.9 13.3L459 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H315c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.ChromeOutline = l("chrome", a, c(i, "M928 512.3v-.3c0-229.8-186.2-416-416-416S96 282.2 96 512v.4c0 229.8 186.2 416 416 416s416-186.2 416-416v-.3.2zm-6.7-74.6l.6 3.3-.6-3.3zM676.7 638.2c53.5-82.2 52.5-189.4-11.1-263.7l162.4-8.4c20.5 44.4 32 93.8 32 145.9 0 185.2-144.6 336.6-327.1 347.4l143.8-221.2zM512 652.3c-77.5 0-140.2-62.7-140.2-140.2 0-77.7 62.7-140.2 140.2-140.2S652.2 434.5 652.2 512 589.5 652.3 512 652.3zm369.2-331.7l-3-5.7 3 5.7zM512 164c121.3 0 228.2 62.1 290.4 156.2l-263.6-13.9c-97.5-5.7-190.2 49.2-222.3 141.1L227.8 311c63.1-88.9 166.9-147 284.2-147zM102.5 585.8c26 145 127.1 264 261.6 315.1C229.6 850 128.5 731 102.5 585.8zM164 512c0-55.9 13.2-108.7 36.6-155.5l119.7 235.4c44.1 86.7 137.4 139.7 234 121.6l-74 145.1C302.9 842.5 164 693.5 164 512zm324.7 415.4c4 .2 8 .4 12 .5-4-.2-8-.3-12-.5z")), t.ClockCircleOutline = l("clock-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z", "M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z")), t.CloseCircleOutline = l("close-circle", a, c(i, "M685.4 354.8c0-4.4-3.6-8-8-8l-66 .3L512 465.6l-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155L340.5 670a8.32 8.32 0 0 0-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3L512 564.4l99.3 118.4 66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.5 515l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z", "M512 65C264.6 65 64 265.6 64 513s200.6 448 448 448 448-200.6 448-448S759.4 65 512 65zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.CloudOutline = l("cloud", a, c(i, "M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3zm36.3 281a123.07 123.07 0 0 1-87.6 36.3H263.9c-33.1 0-64.2-12.9-87.6-36.3A123.3 123.3 0 0 1 140 612c0-28 9.1-54.3 26.2-76.3a125.7 125.7 0 0 1 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10c54.3 14.5 92.1 63.8 92.1 120 0 33.1-12.9 64.3-36.3 87.7z")), t.CloseSquareOutline = l("close-square", a, c(i, "M354 671h58.9c4.7 0 9.2-2.1 12.3-5.7L512 561.8l86.8 103.5c3 3.6 7.5 5.7 12.3 5.7H670c6.8 0 10.5-7.9 6.1-13.1L553.8 512l122.4-145.9c4.4-5.2.7-13.1-6.1-13.1h-58.9c-4.7 0-9.2 2.1-12.3 5.7L512 462.2l-86.8-103.5c-3-3.6-7.5-5.7-12.3-5.7H354c-6.8 0-10.5 7.9-6.1 13.1L470.2 512 347.9 657.9A7.95 7.95 0 0 0 354 671z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.CodeOutline = l("code", a, c(i, "M516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48zm-194.9 6.1l192-161c3.8-3.2 3.8-9.1 0-12.3l-192-160.9A7.95 7.95 0 0 0 308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 0 0-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.CodepenCircleOutline = l("codepen-circle", a, c(i, "M488.1 414.7V303.4L300.9 428l83.6 55.8zm254.1 137.7v-79.8l-59.8 39.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm278 533c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-254.1 13.3v111.3L723.1 597l-83.6-55.8zM281.8 472.6v79.8l59.8-39.9zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zM723.1 428L535.9 303.4v111.3l103.6 69.1zM384.5 541.2L300.9 597l187.2 124.6V610.3l-103.6-69.1z")), t.CompassOutline = l("compass", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm198.4-588.1a32 32 0 0 0-24.5.5L414.9 415 296.4 686c-3.6 8.2-3.6 17.5 0 25.7 3.4 7.8 9.7 13.9 17.7 17 3.8 1.5 7.7 2.2 11.7 2.2 4.4 0 8.7-.9 12.8-2.7l271-118.6 118.5-271a32.06 32.06 0 0 0-17.7-42.7zM576.8 534.4l26.2 26.2-42.4 42.4-26.2-26.2L380 644.4 447.5 490 422 464.4l42.4-42.4 25.5 25.5L644.4 380l-67.6 154.4zM464.4 422L422 464.4l25.5 25.6 86.9 86.8 26.2 26.2 42.4-42.4-26.2-26.2-86.8-86.9z")), t.ContactsOutline = l("contacts", a, c(i, "M594.3 601.5a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1 8 8 0 0 0 8 8.4H407c4.2 0 7.6-3.3 7.9-7.5 3.8-50.6 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H661a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.7-126.1zM512 578c-28.5 0-51.7-23.3-51.7-52s23.2-52 51.7-52 51.7 23.3 51.7 52-23.2 52-51.7 52zm416-354H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z")), t.ContainerOutline = l("container", a, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V687h97.9c11.6 32.8 32 62.3 59.1 84.7 34.5 28.5 78.2 44.3 123 44.3s88.5-15.7 123-44.3c27.1-22.4 47.5-51.9 59.1-84.7H792v-63H643.6l-5.2 24.7C626.4 708.5 573.2 752 512 752s-114.4-43.5-126.5-103.3l-5.2-24.7H232V136h560v752zM320 341h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 160h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z")), t.ControlOutline = l("control", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM340 683v77c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-77c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5zm64-198V264c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v221c10.1-3.3 20.8-5 32-5s21.9 1.8 32 5zm-64 198c10.1 3.3 20.8 5 32 5s21.9-1.8 32-5c41.8-13.5 72-52.7 72-99s-30.2-85.5-72-99c-10.1-3.3-20.8-5-32-5s-21.9 1.8-32 5c-41.8 13.5-72 52.7-72 99s30.2 85.5 72 99zm.1-115.7c.3-.6.7-1.2 1-1.8v-.1l1.2-1.8c.1-.2.2-.3.3-.5.3-.5.7-.9 1-1.4.1-.1.2-.3.3-.4.5-.6.9-1.1 1.4-1.6l.3-.3 1.2-1.2.4-.4c.5-.5 1-.9 1.6-1.4.6-.5 1.1-.9 1.7-1.3.2-.1.3-.2.5-.3.5-.3.9-.7 1.4-1 .1-.1.3-.2.4-.3.6-.4 1.2-.7 1.9-1.1.1-.1.3-.1.4-.2.5-.3 1-.5 1.6-.8l.6-.3c.7-.3 1.3-.6 2-.8.7-.3 1.4-.5 2.1-.7.2-.1.4-.1.6-.2.6-.2 1.1-.3 1.7-.4.2 0 .3-.1.5-.1.7-.2 1.5-.3 2.2-.4.2 0 .3 0 .5-.1.6-.1 1.2-.1 1.8-.2h.6c.8 0 1.5-.1 2.3-.1s1.5 0 2.3.1h.6c.6 0 1.2.1 1.8.2.2 0 .3 0 .5.1.7.1 1.5.2 2.2.4.2 0 .3.1.5.1.6.1 1.2.3 1.7.4.2.1.4.1.6.2.7.2 1.4.4 2.1.7.7.2 1.3.5 2 .8l.6.3c.5.2 1.1.5 1.6.8.1.1.3.1.4.2.6.3 1.3.7 1.9 1.1.1.1.3.2.4.3.5.3 1 .6 1.4 1 .2.1.3.2.5.3.6.4 1.2.9 1.7 1.3s1.1.9 1.6 1.4l.4.4 1.2 1.2.3.3c.5.5 1 1.1 1.4 1.6.1.1.2.3.3.4.4.4.7.9 1 1.4.1.2.2.3.3.5l1.2 1.8s0 .1.1.1a36.18 36.18 0 0 1 5.1 18.5c0 6-1.5 11.7-4.1 16.7-.3.6-.7 1.2-1 1.8 0 0 0 .1-.1.1l-1.2 1.8c-.1.2-.2.3-.3.5-.3.5-.7.9-1 1.4-.1.1-.2.3-.3.4-.5.6-.9 1.1-1.4 1.6l-.3.3-1.2 1.2-.4.4c-.5.5-1 .9-1.6 1.4-.6.5-1.1.9-1.7 1.3-.2.1-.3.2-.5.3-.5.3-.9.7-1.4 1-.1.1-.3.2-.4.3-.6.4-1.2.7-1.9 1.1-.1.1-.3.1-.4.2-.5.3-1 .5-1.6.8l-.6.3c-.7.3-1.3.6-2 .8-.7.3-1.4.5-2.1.7-.2.1-.4.1-.6.2-.6.2-1.1.3-1.7.4-.2 0-.3.1-.5.1-.7.2-1.5.3-2.2.4-.2 0-.3 0-.5.1-.6.1-1.2.1-1.8.2h-.6c-.8 0-1.5.1-2.3.1s-1.5 0-2.3-.1h-.6c-.6 0-1.2-.1-1.8-.2-.2 0-.3 0-.5-.1-.7-.1-1.5-.2-2.2-.4-.2 0-.3-.1-.5-.1-.6-.1-1.2-.3-1.7-.4-.2-.1-.4-.1-.6-.2-.7-.2-1.4-.4-2.1-.7-.7-.2-1.3-.5-2-.8l-.6-.3c-.5-.2-1.1-.5-1.6-.8-.1-.1-.3-.1-.4-.2-.6-.3-1.3-.7-1.9-1.1-.1-.1-.3-.2-.4-.3-.5-.3-1-.6-1.4-1-.2-.1-.3-.2-.5-.3-.6-.4-1.2-.9-1.7-1.3s-1.1-.9-1.6-1.4l-.4-.4-1.2-1.2-.3-.3c-.5-.5-1-1.1-1.4-1.6-.1-.1-.2-.3-.3-.4-.4-.4-.7-.9-1-1.4-.1-.2-.2-.3-.3-.5l-1.2-1.8v-.1c-.4-.6-.7-1.2-1-1.8-2.6-5-4.1-10.7-4.1-16.7s1.5-11.7 4.1-16.7zM620 539v221c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V539c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5zm64-198v-77c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v77c10.1-3.3 20.8-5 32-5s21.9 1.8 32 5zm-64 198c10.1 3.3 20.8 5 32 5s21.9-1.8 32-5c41.8-13.5 72-52.7 72-99s-30.2-85.5-72-99c-10.1-3.3-20.8-5-32-5s-21.9 1.8-32 5c-41.8 13.5-72 52.7-72 99s30.2 85.5 72 99zm.1-115.7c.3-.6.7-1.2 1-1.8v-.1l1.2-1.8c.1-.2.2-.3.3-.5.3-.5.7-.9 1-1.4.1-.1.2-.3.3-.4.5-.6.9-1.1 1.4-1.6l.3-.3 1.2-1.2.4-.4c.5-.5 1-.9 1.6-1.4.6-.5 1.1-.9 1.7-1.3.2-.1.3-.2.5-.3.5-.3.9-.7 1.4-1 .1-.1.3-.2.4-.3.6-.4 1.2-.7 1.9-1.1.1-.1.3-.1.4-.2.5-.3 1-.5 1.6-.8l.6-.3c.7-.3 1.3-.6 2-.8.7-.3 1.4-.5 2.1-.7.2-.1.4-.1.6-.2.6-.2 1.1-.3 1.7-.4.2 0 .3-.1.5-.1.7-.2 1.5-.3 2.2-.4.2 0 .3 0 .5-.1.6-.1 1.2-.1 1.8-.2h.6c.8 0 1.5-.1 2.3-.1s1.5 0 2.3.1h.6c.6 0 1.2.1 1.8.2.2 0 .3 0 .5.1.7.1 1.5.2 2.2.4.2 0 .3.1.5.1.6.1 1.2.3 1.7.4.2.1.4.1.6.2.7.2 1.4.4 2.1.7.7.2 1.3.5 2 .8l.6.3c.5.2 1.1.5 1.6.8.1.1.3.1.4.2.6.3 1.3.7 1.9 1.1.1.1.3.2.4.3.5.3 1 .6 1.4 1 .2.1.3.2.5.3.6.4 1.2.9 1.7 1.3s1.1.9 1.6 1.4l.4.4 1.2 1.2.3.3c.5.5 1 1.1 1.4 1.6.1.1.2.3.3.4.4.4.7.9 1 1.4.1.2.2.3.3.5l1.2 1.8v.1a36.18 36.18 0 0 1 5.1 18.5c0 6-1.5 11.7-4.1 16.7-.3.6-.7 1.2-1 1.8v.1l-1.2 1.8c-.1.2-.2.3-.3.5-.3.5-.7.9-1 1.4-.1.1-.2.3-.3.4-.5.6-.9 1.1-1.4 1.6l-.3.3-1.2 1.2-.4.4c-.5.5-1 .9-1.6 1.4-.6.5-1.1.9-1.7 1.3-.2.1-.3.2-.5.3-.5.3-.9.7-1.4 1-.1.1-.3.2-.4.3-.6.4-1.2.7-1.9 1.1-.1.1-.3.1-.4.2-.5.3-1 .5-1.6.8l-.6.3c-.7.3-1.3.6-2 .8-.7.3-1.4.5-2.1.7-.2.1-.4.1-.6.2-.6.2-1.1.3-1.7.4-.2 0-.3.1-.5.1-.7.2-1.5.3-2.2.4-.2 0-.3 0-.5.1-.6.1-1.2.1-1.8.2h-.6c-.8 0-1.5.1-2.3.1s-1.5 0-2.3-.1h-.6c-.6 0-1.2-.1-1.8-.2-.2 0-.3 0-.5-.1-.7-.1-1.5-.2-2.2-.4-.2 0-.3-.1-.5-.1-.6-.1-1.2-.3-1.7-.4-.2-.1-.4-.1-.6-.2-.7-.2-1.4-.4-2.1-.7-.7-.2-1.3-.5-2-.8l-.6-.3c-.5-.2-1.1-.5-1.6-.8-.1-.1-.3-.1-.4-.2-.6-.3-1.3-.7-1.9-1.1-.1-.1-.3-.2-.4-.3-.5-.3-1-.6-1.4-1-.2-.1-.3-.2-.5-.3-.6-.4-1.2-.9-1.7-1.3s-1.1-.9-1.6-1.4l-.4-.4-1.2-1.2-.3-.3c-.5-.5-1-1.1-1.4-1.6-.1-.1-.2-.3-.3-.4-.4-.4-.7-.9-1-1.4-.1-.2-.2-.3-.3-.5l-1.2-1.8v-.1c-.4-.6-.7-1.2-1-1.8-2.6-5-4.1-10.7-4.1-16.7s1.5-11.7 4.1-16.7z")), t.CopyOutline = l("copy", a, c(i, "M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z")), t.CreditCardOutline = l("credit-card", a, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-792 72h752v120H136V232zm752 560H136V440h752v352zm-237-64h165c4.4 0 8-3.6 8-8v-72c0-4.4-3.6-8-8-8H651c-4.4 0-8 3.6-8 8v72c0 4.4 3.6 8 8 8z")), t.CrownOutline = l("crown", a, c(i, "M899.6 276.5L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.7-3.5-13.1 1.2-12.2 7.9L188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.8-6.7-6.5-11.4-12.3-7.9zm-126 534.1H250.3l-53.8-409.4 139.8 86.1L512 252.9l175.7 234.4 139.8-86.1-53.9 409.4zM512 509c-62.1 0-112.6 50.5-112.6 112.6S449.9 734.2 512 734.2s112.6-50.5 112.6-112.6S574.1 509 512 509zm0 160.9c-26.6 0-48.2-21.6-48.2-48.3 0-26.6 21.6-48.3 48.2-48.3s48.2 21.6 48.2 48.3c0 26.6-21.6 48.3-48.2 48.3z")), t.CustomerServiceOutline = l("customer-service", a, c(i, "M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384zM328 632v192H200V632h128zm496 192H696V632h128v192z")), t.DashboardOutline = l("dashboard", a, c(i, "M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM761.4 836H262.6A371.12 371.12 0 0 1 140 560c0-99.4 38.7-192.8 109-263 70.3-70.3 163.7-109 263-109 99.4 0 192.8 38.7 263 109 70.3 70.3 109 163.7 109 263 0 105.6-44.5 205.5-122.6 276zM623.5 421.5a8.03 8.03 0 0 0-11.3 0L527.7 506c-18.7-5-39.4-.2-54.1 14.5a55.95 55.95 0 0 0 0 79.2 55.95 55.95 0 0 0 79.2 0 55.87 55.87 0 0 0 14.5-54.1l84.5-84.5c3.1-3.1 3.1-8.2 0-11.3l-28.3-28.3zM490 320h44c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8h-44c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8zm260 218v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8zm12.7-197.2l-31.1-31.1a8.03 8.03 0 0 0-11.3 0l-56.6 56.6a8.03 8.03 0 0 0 0 11.3l31.1 31.1c3.1 3.1 8.2 3.1 11.3 0l56.6-56.6c3.1-3.1 3.1-8.2 0-11.3zm-458.6-31.1a8.03 8.03 0 0 0-11.3 0l-31.1 31.1a8.03 8.03 0 0 0 0 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l31.1-31.1c3.1-3.1 3.1-8.2 0-11.3l-56.6-56.6zM262 530h-80c-4.4 0-8 3.6-8 8v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8z")), t.DeleteOutline = l("delete", a, c(i, "M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z")), t.DiffOutline = l("diff", a, c(i, "M476 399.1c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1V484h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H420v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V540h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H476v-84.9zM560.5 704h-225c-4.1 0-7.5 3.2-7.5 7v42c0 3.8 3.4 7 7.5 7h225c4.1 0 7.5-3.2 7.5-7v-42c0-3.8-3.4-7-7.5-7zm-7.1-502.6c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM664 888H232V264h282.2L664 413.8V888zm190.2-581.4L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23z")), t.DatabaseOutline = l("database", a, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-600 72h560v208H232V136zm560 480H232V408h560v208zm0 272H232V680h560v208zM304 240a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.DislikeOutline = l("dislike", a, c(i, "M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h129.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM184 456V172h81v284h-81zm627.2 160.4H496.8l9.6 198.4c.6 11.9-4.7 23.1-14.6 30.5-6.1 4.5-13.6 6.8-21.1 6.7a44.28 44.28 0 0 1-42.2-32.3L329 459.2V172h415.4a56.85 56.85 0 0 1 33.6 51.8c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-14 25.5 21.9 19a56.76 56.76 0 0 1 19.6 43c0 19.1-11 37.5-28.8 48.4z")), t.DownCircleOutline = l("down-circle", a, c(i, "M690 405h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 563.6 406.8 418.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7z", "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.DownSquareOutline = l("down-square", a, c(i, "M505.5 658.7c3.2 4.4 9.7 4.4 12.9 0l178-246c3.8-5.3 0-12.7-6.5-12.7H643c-10.2 0-19.9 4.9-25.9 13.2L512 558.6 406.8 413.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.DribbbleSquareOutline = l("dribbble-square", a, c(i, "M498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm66.5 21.8c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM512 800c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm89.7-259.1c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zm-72.5-26.4c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4zm145.9-186.2a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6z")), t.EnvironmentOutline = l("environment", a, c(i, "M854.6 289.1a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 880.2c-65.9-41.9-300-207.8-300-449.1 0-77.9 31.1-151.1 87.6-206.3C356.3 169.5 431.7 139 512 139s155.7 30.5 212.4 85.9C780.9 280 812 353.2 812 431.1c0 241.3-234.1 407.2-300 449.1zm0-617.2c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 551c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 439c0-29.9 11.7-58 32.8-79.2C454 338.6 482.1 327 512 327c29.9 0 58 11.6 79.2 32.8C612.4 381 624 409.1 624 439c0 29.9-11.6 58-32.8 79.2z")), t.EditOutline = l("edit", a, c(i, "M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z")), t.ExclamationCircleOutline = l("exclamation-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z", "M464 688a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z")), t.ExperimentOutline = l("experiment", a, c(i, "M512 472a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm367 352.9L696.3 352V178H768v-68H256v68h71.7v174L145 824.9c-2.8 7.4-4.3 15.2-4.3 23.1 0 35.3 28.7 64 64 64h614.6c7.9 0 15.7-1.5 23.1-4.3 33-12.7 49.4-49.8 36.6-82.8zM395.7 364.7V180h232.6v184.7L719.2 600c-20.7-5.3-42.1-8-63.9-8-61.2 0-119.2 21.5-165.3 60a188.78 188.78 0 0 1-121.3 43.9c-32.7 0-64.1-8.3-91.8-23.7l118.8-307.5zM210.5 844l41.7-107.8c35.7 18.1 75.4 27.8 116.6 27.8 61.2 0 119.2-21.5 165.3-60 33.9-28.2 76.3-43.9 121.3-43.9 35 0 68.4 9.5 97.6 27.1L813.5 844h-603z")), t.EyeInvisibleOutline = l("eye-invisible", a, c(i, "M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5zm-63.57-320.64L836 122.88a8 8 0 0 0-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 0 0 0 11.31L155.17 889a8 8 0 0 0 11.31 0l712.15-712.12a8 8 0 0 0 0-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 0 0-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 0 1 146.2-106.69L401.31 546.2A112 112 0 0 1 396 512z", "M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 0 0 227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 0 1-112 112z")), t.EyeOutline = l("eye", a, c(i, "M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z")), t.FacebookOutline = l("facebook", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-32 736H663.9V602.2h104l15.6-120.7H663.9v-77.1c0-35 9.7-58.8 59.8-58.8h63.9v-108c-11.1-1.5-49-4.8-93.2-4.8-92.2 0-155.3 56.3-155.3 159.6v89H434.9v120.7h104.3V848H176V176h672v672z")), t.FastBackwardOutline = l("fast-backward", a, c(r, "M517.6 273.5L230.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm320 0L550.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm-620-25.5h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z")), t.FastForwardOutline = l("fast-forward", a, c(r, "M793.8 499.3L506.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.6c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8a16.14 16.14 0 0 0 0-25.4zm-320 0L186.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.5c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8c4.1-3.2 6.2-8 6.2-12.7 0-4.6-2.1-9.4-6.2-12.6zM857.6 248h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z")), t.FileAddOutline = l("file-add", a, c(i, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM544 472c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V472z")), t.FileExcelOutline = l("file-excel", a, c(i, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM514.1 580.1l-61.8-102.4c-2.2-3.6-6.1-5.8-10.3-5.8h-38.4c-2.3 0-4.5.6-6.4 1.9-5.6 3.5-7.3 10.9-3.7 16.6l82.3 130.4-83.4 132.8a12.04 12.04 0 0 0 10.2 18.4h34.5c4.2 0 8-2.2 10.2-5.7L510 664.8l62.3 101.4c2.2 3.6 6.1 5.7 10.2 5.7H620c2.3 0 4.5-.7 6.5-1.9 5.6-3.6 7.2-11 3.6-16.6l-84-130.4 85.3-132.5a12.04 12.04 0 0 0-10.1-18.5h-35.7c-4.2 0-8.1 2.2-10.3 5.8l-61.2 102.3z")), t.FileExclamationOutline = l("file-exclamation", a, c(i, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM472 744a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm16-104h48c4.4 0 8-3.6 8-8V448c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8z")), t.FileImageOutline = l("file-image", a, c(i, "M553.1 509.1l-77.8 99.2-41.1-52.4a8 8 0 0 0-12.6 0l-99.8 127.2a7.98 7.98 0 0 0 6.3 12.9H696c6.7 0 10.4-7.7 6.3-12.9l-136.5-174a8.1 8.1 0 0 0-12.7 0zM360 442a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm494.6-153.4L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z")), t.FileMarkdownOutline = l("file-markdown", a, c(i, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM429 481.2c-1.9-4.4-6.2-7.2-11-7.2h-35c-6.6 0-12 5.4-12 12v272c0 6.6 5.4 12 12 12h27.1c6.6 0 12-5.4 12-12V582.1l66.8 150.2a12 12 0 0 0 11 7.1H524c4.7 0 9-2.8 11-7.1l66.8-150.6V758c0 6.6 5.4 12 12 12H641c6.6 0 12-5.4 12-12V486c0-6.6-5.4-12-12-12h-34.7c-4.8 0-9.1 2.8-11 7.2l-83.1 191-83.2-191z")), t.FilePptOutline = l("file-ppt", a, c(i, "M424 476c-4.4 0-8 3.6-8 8v276c0 4.4 3.6 8 8 8h32.5c4.4 0 8-3.6 8-8v-95.5h63.3c59.4 0 96.2-38.9 96.2-94.1 0-54.5-36.3-94.3-96-94.3H424zm150.6 94.3c0 43.4-26.5 54.3-71.2 54.3h-38.9V516.2h56.2c33.8 0 53.9 19.7 53.9 54.1zm280-281.7L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z")), t.FileTextOutline = l("file-text", a, c(i, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z")), t.FilePdfOutline = l("file-pdf", a, c(i, "M531.3 574.4l.3-1.4c5.8-23.9 13.1-53.7 7.4-80.7-3.8-21.3-19.5-29.6-32.9-30.2-15.8-.7-29.9 8.3-33.4 21.4-6.6 24-.7 56.8 10.1 98.6-13.6 32.4-35.3 79.5-51.2 107.5-29.6 15.3-69.3 38.9-75.2 68.7-1.2 5.5.2 12.5 3.5 18.8 3.7 7 9.6 12.4 16.5 15 3 1.1 6.6 2 10.8 2 17.6 0 46.1-14.2 84.1-79.4 5.8-1.9 11.8-3.9 17.6-5.9 27.2-9.2 55.4-18.8 80.9-23.1 28.2 15.1 60.3 24.8 82.1 24.8 21.6 0 30.1-12.8 33.3-20.5 5.6-13.5 2.9-30.5-6.2-39.6-13.2-13-45.3-16.4-95.3-10.2-24.6-15-40.7-35.4-52.4-65.8zM421.6 726.3c-13.9 20.2-24.4 30.3-30.1 34.7 6.7-12.3 19.8-25.3 30.1-34.7zm87.6-235.5c5.2 8.9 4.5 35.8.5 49.4-4.9-19.9-5.6-48.1-2.7-51.4.8.1 1.5.7 2.2 2zm-1.6 120.5c10.7 18.5 24.2 34.4 39.1 46.2-21.6 4.9-41.3 13-58.9 20.2-4.2 1.7-8.3 3.4-12.3 5 13.3-24.1 24.4-51.4 32.1-71.4zm155.6 65.5c.1.2.2.5-.4.9h-.2l-.2.3c-.8.5-9 5.3-44.3-8.6 40.6-1.9 45 7.3 45.1 7.4zm191.4-388.2L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z")), t.FileZipOutline = l("file-zip", a, c(i, "M296 392h64v64h-64zm0 190v160h128V582h-64v-62h-64v62zm80 48v64h-32v-64h32zm-16-302h64v64h-64zm-64-64h64v64h-64zm64 192h64v64h-64zm0-256h64v64h-64zm494.6 88.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h64v64h64v-64h174v216a42 42 0 0 0 42 42h216v494z")), t.FileOutline = l("file", a, c(i, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z")), t.FilterOutline = l("filter", a, c(i, "M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V642h182.9v156zm9.6-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z")), t.FileWordOutline = l("file-word", a, c(i, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM528.1 472h-32.2c-5.5 0-10.3 3.7-11.6 9.1L434.6 680l-46.1-198.7c-1.3-5.4-6.1-9.3-11.7-9.3h-35.4a12.02 12.02 0 0 0-11.6 15.1l74.2 276c1.4 5.2 6.2 8.9 11.6 8.9h32c5.4 0 10.2-3.6 11.6-8.9l52.8-197 52.8 197c1.4 5.2 6.2 8.9 11.6 8.9h31.8c5.4 0 10.2-3.6 11.6-8.9l74.4-276a12.04 12.04 0 0 0-11.6-15.1H647c-5.6 0-10.4 3.9-11.7 9.3l-45.8 199.1-49.8-199.3c-1.3-5.4-6.1-9.1-11.6-9.1z")), t.FireOutline = l("fire", a, c(i, "M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9zM713 808.5c-53.7 53.2-125 82.4-201 82.4s-147.3-29.2-201-82.4c-53.5-53.1-83-123.5-83-198.4 0-43.5 9.8-85.2 29.1-124 18.8-37.9 46.8-71.8 80.8-97.9a349.6 349.6 0 0 0 58.6-56.8c25-30.5 44.6-64.5 58.2-101a240 240 0 0 0 12.1-46.5c24.1 22.2 44.3 49 61.2 80.4 33.4 62.6 48.8 118.3 45.8 165.7a74.01 74.01 0 0 0 24.4 59.8 73.36 73.36 0 0 0 53.4 18.8c19.7-1 37.8-9.7 51-24.4 13.3-14.9 24.8-30.1 34.4-45.6 14 17.9 25.7 37.4 35 58.4 15.9 35.8 24 73.9 24 113.1 0 74.9-29.5 145.4-83 198.4z")), t.FileUnknownOutline = l("file-unknown", a, c(i, "M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM402 549c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103zm78 195a32 32 0 1 0 64 0 32 32 0 1 0-64 0z")), t.FlagOutline = l("flag", a, c(i, "M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32zM184 568V232h368v336H184zm656 145H504v-73h112c4.4 0 8-3.6 8-8V377h216v336z")), t.FolderAddOutline = l("folder-add", a, c(i, "M484 443.1V528h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H484v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V584h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H540v-84.9c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1zm396-144.7H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z")), t.FolderOutline = l("folder", a, c(i, "M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z")), t.FolderOpenOutline = l("folder-open", a, c(i, "M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z")), t.ForwardOutline = l("forward", a, c(r, "M825.8 498L538.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L825.8 526c8.3-7.2 8.3-20.8 0-28zm-320 0L218.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L505.8 526c4.1-3.6 6.2-8.8 6.2-14 0-5.2-2.1-10.4-6.2-14z")), t.FrownOutline = l("frown", a, c(i, "M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM512 533c-85.5 0-155.6 67.3-160 151.6a8 8 0 0 0 8 8.4h48.1c4.2 0 7.8-3.2 8.1-7.4C420 636.1 461.5 597 512 597s92.1 39.1 95.8 88.6c.3 4.2 3.9 7.4 8.1 7.4H664a8 8 0 0 0 8-8.4C667.6 600.3 597.5 533 512 533z")), t.FundOutline = l("fund", a, c(i, "M926 164H94c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V196c0-17.7-14.3-32-32-32zm-40 632H134V236h752v560zm-658.9-82.3c3.1 3.1 8.2 3.1 11.3 0l172.5-172.5 114.4 114.5c3.1 3.1 8.2 3.1 11.3 0l297-297.2c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 0 0-11.3 0L531 565 416.6 450.5a8.03 8.03 0 0 0-11.3 0l-214.9 215a8.03 8.03 0 0 0 0 11.3l36.7 36.9z")), t.FunnelPlotOutline = l("funnel-plot", a, c(i, "M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 607.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V607.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V650h182.9v148zm9.6-226.6l-8.4 14.6H419.3l-8.4-14.6L334.4 438h355.2L613 571.4zM726.3 374H297.7l-85-148h598.6l-85 148z")), t.GiftOutline = l("gift", a, c(i, "M880 310H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v200c0 4.4 3.6 8 8 8h40v344c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V550h40c4.4 0 8-3.6 8-8V342c0-17.7-14.3-32-32-32zm-334-74c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70h-70v-70zm-138-70c38.6 0 70 31.4 70 70v70h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70zM180 482V378h298v104H180zm48 68h250v308H228V550zm568 308H546V550h250v308zm48-376H546V378h298v104z")), t.GithubOutline = l("github", a, c(i, "M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9a127.5 127.5 0 0 1 38.1 91v112.5c.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z")), t.GitlabOutline = l("gitlab", a, c(i, "M913.9 552.2L805 181.4v-.1c-7.6-22.9-25.7-36.5-48.3-36.5-23.4 0-42.5 13.5-49.7 35.2l-71.4 213H388.8l-71.4-213c-7.2-21.7-26.3-35.2-49.7-35.2-23.1 0-42.5 14.8-48.4 36.6L110.5 552.2c-4.4 14.7 1.2 31.4 13.5 40.7l368.5 276.4c2.6 3.6 6.2 6.3 10.4 7.8l8.6 6.4 8.5-6.4c4.9-1.7 9-4.7 11.9-8.9l368.4-275.4c12.4-9.2 18-25.9 13.6-40.6zM751.7 193.4c1-1.8 2.9-1.9 3.5-1.9 1.1 0 2.5.3 3.4 3L818 394.3H684.5l67.2-200.9zm-487.4 1c.9-2.6 2.3-2.9 3.4-2.9 2.7 0 2.9.1 3.4 1.7l67.3 201.2H206.5l57.8-200zM158.8 558.7l28.2-97.3 202.4 270.2-230.6-172.9zm73.9-116.4h122.1l90.8 284.3-212.9-284.3zM512.9 776L405.7 442.3H620L512.9 776zm157.9-333.7h119.5L580 723.1l90.8-280.8zm-40.7 293.9l207.3-276.7 29.5 99.2-236.8 177.5z")), t.HeartOutline = l("heart", a, c(i, "M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z")), t.HddOutline = l("hdd", a, c(i, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-600 72h560v208H232V136zm560 480H232V408h560v208zm0 272H232V680h560v208zM496 208H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 544h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm328 244a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.HighlightOutline = l("highlight", a, c(i, "M957.6 507.4L603.2 158.2a7.9 7.9 0 0 0-11.2 0L353.3 393.4a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8V860c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6 40.4 39.8a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2zM389.8 796.2H229.6l134.4-133 80.1 78.9-54.3 54.1zm154.8-62.1L373.2 565.2l68.6-67.6 171.4 168.9-68.6 67.6zM713.1 658L450.3 399.1 597.6 254l262.8 259-147.3 145z")), t.HomeOutline = l("home", a, c(i, "M946.5 505L560.1 118.8l-25.9-25.9a31.5 31.5 0 0 0-44.4 0L77.5 505a63.9 63.9 0 0 0-18.8 46c.4 35.2 29.7 63.3 64.9 63.3h42.5V940h691.8V614.3h43.4c17.1 0 33.2-6.7 45.3-18.8a63.6 63.6 0 0 0 18.7-45.3c0-17-6.7-33.1-18.8-45.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z")), t.HourglassOutline = l("hourglass", a, c(i, "M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194zm-72 388v134H354V706c0-42.2 16.4-81.9 46.3-111.7C430.1 564.4 469.8 548 512 548s81.9 16.4 111.7 46.3C653.6 624.1 670 663.8 670 706zm0-388c0 42.2-16.4 81.9-46.3 111.7C593.9 459.6 554.2 476 512 476s-81.9-16.4-111.7-46.3A156.63 156.63 0 0 1 354 318V184h316v134z")), t.Html5Outline = l("html5", a, c(i, "M145 96l66 746.6L511.8 928l299.6-85.4L878.7 96H145zm610.9 700.6l-244.1 69.6-245.2-69.6-56.7-641.2h603.8l-57.8 641.2zM281 249l1.7 24.3 22.7 253.5h206.5v-.1h112.9l-11.4 118.5L511 672.9v.2h-.8l-102.4-27.7-6.5-73.2h-91l11.3 144.7 188.6 52h1.7v-.4l187.7-51.7 1.7-16.3 21.2-242.2 3.2-24.3H511v.2H389.9l-8.2-94.2h352.1l1.7-19.5 4.8-47.2L742 249H511z")), t.IdcardOutline = l("idcard", a, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560zM610.3 476h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48c0 4.4 1 8 2.3 8zm4.8 144h185.7c3.9 0 7.1-3.6 7.1-8v-48c0-4.4-3.2-8-7.1-8H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8zM224 673h43.9c4.2 0 7.6-3.3 7.9-7.5 3.8-50.5 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H522a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.6-126.1a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1c-.4 4.6 3.2 8.4 7.8 8.4zm149-262c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52-51.7-23.3-51.7-52 23.2-52 51.7-52z")), t.InfoCircleOutline = l("info-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z", "M464 336a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z")), t.InstagramOutline = l("instagram", a, c(i, "M512 306.9c-113.5 0-205.1 91.6-205.1 205.1S398.5 717.1 512 717.1 717.1 625.5 717.1 512 625.5 306.9 512 306.9zm0 338.4c-73.4 0-133.3-59.9-133.3-133.3S438.6 378.7 512 378.7 645.3 438.6 645.3 512 585.4 645.3 512 645.3zm213.5-394.6c-26.5 0-47.9 21.4-47.9 47.9s21.4 47.9 47.9 47.9 47.9-21.3 47.9-47.9a47.84 47.84 0 0 0-47.9-47.9zM911.8 512c0-55.2.5-109.9-2.6-165-3.1-64-17.7-120.8-64.5-167.6-46.9-46.9-103.6-61.4-167.6-64.5-55.2-3.1-109.9-2.6-165-2.6-55.2 0-109.9-.5-165 2.6-64 3.1-120.8 17.7-167.6 64.5C132.6 226.3 118.1 283 115 347c-3.1 55.2-2.6 109.9-2.6 165s-.5 109.9 2.6 165c3.1 64 17.7 120.8 64.5 167.6 46.9 46.9 103.6 61.4 167.6 64.5 55.2 3.1 109.9 2.6 165 2.6 55.2 0 109.9.5 165-2.6 64-3.1 120.8-17.7 167.6-64.5 46.9-46.9 61.4-103.6 64.5-167.6 3.2-55.1 2.6-109.8 2.6-165zm-88 235.8c-7.3 18.2-16.1 31.8-30.2 45.8-14.1 14.1-27.6 22.9-45.8 30.2C695.2 844.7 570.3 840 512 840c-58.3 0-183.3 4.7-235.9-16.1-18.2-7.3-31.8-16.1-45.8-30.2-14.1-14.1-22.9-27.6-30.2-45.8C179.3 695.2 184 570.3 184 512c0-58.3-4.7-183.3 16.1-235.9 7.3-18.2 16.1-31.8 30.2-45.8s27.6-22.9 45.8-30.2C328.7 179.3 453.7 184 512 184s183.3-4.7 235.9 16.1c18.2 7.3 31.8 16.1 45.8 30.2 14.1 14.1 22.9 27.6 30.2 45.8C844.7 328.7 840 453.7 840 512c0 58.3 4.7 183.2-16.2 235.8z")), t.InsuranceOutline = l("insurance", a, c(i, "M441.6 306.8L403 288.6a6.1 6.1 0 0 0-8.4 3.7c-17.5 58.5-45.2 110.1-82.2 153.6a6.05 6.05 0 0 0-1.2 5.6l13.2 43.5c1.3 4.4 7 5.7 10.2 2.4 7.7-8.1 15.4-16.9 23.1-26V656c0 4.4 3.6 8 8 8H403c4.4 0 8-3.6 8-8V393.1a429.2 429.2 0 0 0 33.6-79c1-2.9-.3-6-3-7.3zm26.8 9.2v127.2c0 4.4 3.6 8 8 8h65.9v18.6h-94.9c-4.4 0-8 3.6-8 8v35.6c0 4.4 3.6 8 8 8h55.1c-19.1 30.8-42.4 55.7-71 76a6 6 0 0 0-1.6 8.1l22.8 36.5c1.9 3.1 6.2 3.8 8.9 1.4 31.6-26.8 58.7-62.9 80.6-107.6v120c0 4.4 3.6 8 8 8h36.2c4.4 0 8-3.6 8-8V536c21.3 41.7 47.5 77.5 78.1 106.9 2.6 2.5 6.8 2.1 8.9-.7l26.3-35.3c2-2.7 1.4-6.5-1.2-8.4-30.5-22.6-54.2-47.8-72.3-76.9h59c4.4 0 8-3.6 8-8V478c0-4.4-3.6-8-8-8h-98.8v-18.6h66.7c4.4 0 8-3.6 8-8V316c0-4.4-3.6-8-8-8H476.4c-4.4 0-8 3.6-8 8zm51.5 42.8h97.9v41.6h-97.9v-41.6zm347-188.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z")), t.InteractionOutline = l("interaction", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z")), t.InterationOutline = l("interation", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z")), t.LayoutOutline = l("layout", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-696 72h136v656H184V184zm656 656H384V384h456v456zM384 320V184h456v136H384z")), t.LeftCircleOutline = l("left-circle", a, c(i, "M603.3 327.5l-246 178a7.95 7.95 0 0 0 0 12.9l246 178c5.3 3.8 12.7 0 12.7-6.5V643c0-10.2-4.9-19.9-13.2-25.9L457.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5z", "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.LeftSquareOutline = l("left-square", a, c(i, "M365.3 518.5l246 178c5.3 3.8 12.7 0 12.7-6.5v-46.9c0-10.2-4.9-19.9-13.2-25.9L465.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5l-246 178a8.05 8.05 0 0 0 0 13z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.LikeOutline = l("like", a, c(i, "M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 0 0-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 0 0 471 99.9c-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81zm636.4-353l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5a44.1 44.1 0 0 1 42.2-32.3c7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z")), t.LinkedinOutline = l("linkedin", a, c(i, "M847.7 112H176.3c-35.5 0-64.3 28.8-64.3 64.3v671.4c0 35.5 28.8 64.3 64.3 64.3h671.4c35.5 0 64.3-28.8 64.3-64.3V176.3c0-35.5-28.8-64.3-64.3-64.3zm0 736c-447.8-.1-671.7-.2-671.7-.3.1-447.8.2-671.7.3-671.7 447.8.1 671.7.2 671.7.3-.1 447.8-.2 671.7-.3 671.7zM230.6 411.9h118.7v381.8H230.6zm59.4-52.2c37.9 0 68.8-30.8 68.8-68.8a68.8 68.8 0 1 0-137.6 0c-.1 38 30.7 68.8 68.8 68.8zm252.3 245.1c0-49.8 9.5-98 71.2-98 60.8 0 61.7 56.9 61.7 101.2v185.7h118.6V584.3c0-102.8-22.2-181.9-142.3-181.9-57.7 0-96.4 31.7-112.3 61.7h-1.6v-52.2H423.7v381.8h118.6V604.8z")), t.LockOutline = l("lock", a, c(i, "M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z")), t.MedicineBoxOutline = l("medicine-box", a, c(i, "M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM360 184h304v72H360v-72zm480 656H184V513.4L244.3 328h535.4L840 513.4V840zM652 572H544V464c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V636h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")), t.MehOutline = l("meh", a, c(i, "M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 565H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")), t.MailOutline = l("mail", a, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 110.8V792H136V270.8l-27.6-21.5 39.3-50.5 42.8 33.3h643.1l42.8-33.3 39.3 50.5-27.7 21.5zM833.6 232L512 482 190.4 232l-42.8-33.3-39.3 50.5 27.6 21.5 341.6 265.6a55.99 55.99 0 0 0 68.7 0L888 270.8l27.6-21.5-39.3-50.5-42.7 33.2z")), t.MessageOutline = l("message", a, c(i, "M464 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm200 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-400 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm661.2-173.6c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 0 0-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 0 0-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 0 0 112 714v152a46 46 0 0 0 46 46h152.1A449.4 449.4 0 0 0 510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 0 0 142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z")), t.MinusCircleOutline = l("minus-circle", a, c(i, "M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z", "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.MinusSquareOutline = l("minus-square", a, c(i, "M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.MobileOutline = l("mobile", a, c(i, "M744 62H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V126c0-35.3-28.7-64-64-64zm-8 824H288V134h448v752zM472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.MoneyCollectOutline = l("money-collect", a, c(i, "M911.5 700.7a8 8 0 0 0-10.3-4.8L840 718.2V180c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V763c0 3.3 2.1 6.3 5.3 7.5L501 910.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zM512 837.5l-256-93.1V184h512v560.4l-256 93.1zM660.6 312h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.6-1.2 1-2.5 1-3.8-.1-4.3-3.7-7.9-8.1-7.9z")), t.PauseCircleOutline = l("pause-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm-88-532h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zm224 0h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z")), t.PayCircleOutline = l("pay-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm159.6-585h-59.5c-3 0-5.8 1.7-7.1 4.4l-90.6 180H511l-90.6-180a8 8 0 0 0-7.1-4.4h-60.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9L457 515.7h-61.4c-4.4 0-8 3.6-8 8v29.9c0 4.4 3.6 8 8 8h81.7V603h-81.7c-4.4 0-8 3.6-8 8v29.9c0 4.4 3.6 8 8 8h81.7V717c0 4.4 3.6 8 8 8h54.3c4.4 0 8-3.6 8-8v-68.1h82c4.4 0 8-3.6 8-8V611c0-4.4-3.6-8-8-8h-82v-41.5h82c4.4 0 8-3.6 8-8v-29.9c0-4.4-3.6-8-8-8h-62l111.1-204.8c.6-1.2 1-2.5 1-3.8-.1-4.4-3.7-8-8.1-8z")), t.NotificationOutline = l("notification", a, c(i, "M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z")), t.PhoneOutline = l("phone", a, c(i, "M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7a405.46 405.46 0 0 1-86.4 127.3c-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3a68.2 68.2 0 0 0-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4zm-37.6 91.5c-19.5 117.9-82.9 235.5-178.4 331s-213 158.9-330.9 178.4c-14.8 2.5-30-2.5-40.8-13.2L184.9 721.9 295.7 611l119.8 120 .9.9 21.6-8a481.29 481.29 0 0 0 285.7-285.8l8-21.6-120.8-120.7 110.8-110.9 104.5 104.5c10.8 10.8 15.8 26 13.3 40.8z")), t.PictureOutline = l("picture", a, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2zM304 456a88 88 0 1 0 0-176 88 88 0 0 0 0 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z")), t.PieChartOutline = l("pie-chart", a, c(i, "M864 518H506V160c0-4.4-3.6-8-8-8h-26a398.46 398.46 0 0 0-282.8 117.1 398.19 398.19 0 0 0-85.7 127.1A397.61 397.61 0 0 0 72 552a398.46 398.46 0 0 0 117.1 282.8c36.7 36.7 79.5 65.6 127.1 85.7A397.61 397.61 0 0 0 472 952a398.46 398.46 0 0 0 282.8-117.1c36.7-36.7 65.6-79.5 85.7-127.1A397.61 397.61 0 0 0 872 552v-26c0-4.4-3.6-8-8-8zM705.7 787.8A331.59 331.59 0 0 1 470.4 884c-88.1-.4-170.9-34.9-233.2-97.2C174.5 724.1 140 640.7 140 552c0-88.7 34.5-172.1 97.2-234.8 54.6-54.6 124.9-87.9 200.8-95.5V586h364.3c-7.7 76.3-41.3 147-96.6 201.8zM952 462.4l-2.6-28.2c-8.5-92.1-49.4-179-115.2-244.6A399.4 399.4 0 0 0 589 74.6L560.7 72c-4.7-.4-8.7 3.2-8.7 7.9V464c0 4.4 3.6 8 8 8l384-1c4.7 0 8.4-4 8-8.6zm-332.2-58.2V147.6a332.24 332.24 0 0 1 166.4 89.8c45.7 45.6 77 103.6 90 166.1l-256.4.7z")), t.PlaySquareOutline = l("play-square", a, c(i, "M442.3 677.6l199.4-156.7a11.3 11.3 0 0 0 0-17.7L442.3 346.4c-7.4-5.8-18.3-.6-18.3 8.8v313.5c0 9.4 10.9 14.7 18.3 8.9z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.PlayCircleOutline = l("play-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z", "M719.4 499.1l-296.1-215A15.9 15.9 0 0 0 398 297v430c0 13.1 14.8 20.5 25.3 12.9l296.1-215a15.9 15.9 0 0 0 0-25.8zm-257.6 134V390.9L628.5 512 461.8 633.1z")), t.PlusCircleOutline = l("plus-circle", a, c(i, "M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z", "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.PrinterOutline = l("printer", a, c(i, "M820 436h-40c-4.4 0-8 3.6-8 8v40c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-40c0-4.4-3.6-8-8-8zm32-104H732V120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM360 180h304v152H360V180zm304 664H360V568h304v276zm200-140H732V500H292v204H160V412c0-6.6 5.4-12 12-12h680c6.6 0 12 5.4 12 12v292z")), t.PlusSquareOutline = l("plus-square", a, c(i, "M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.ProfileOutline = l("profile", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM492 400h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM340 368a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 144a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.ProjectOutline = l("project", a, c(i, "M280 752h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8zm192-280h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm192 72h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v256c0 4.4 3.6 8 8 8zm216-432H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.PushpinOutline = l("pushpin", a, c(i, "M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3a33.23 33.23 0 0 0-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8zM666.2 549.3l-24.5 24.5 3.8 34.4a259.92 259.92 0 0 1-30.4 153.9L262 408.8c12.9-7.1 26.3-13.1 40.3-17.9 27.2-9.4 55.7-14.1 84.7-14.1 9.6 0 19.3.5 28.9 1.6l34.4 3.8 24.5-24.5L608.5 224 800 415.5 666.2 549.3z")), t.PropertySafetyOutline = l("property-safety", a, c(i, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zM430.5 318h-46c-1.7 0-3.3.4-4.8 1.2a10.1 10.1 0 0 0-4 13.6l88 161.1h-45.2c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1v29.7h-63.1c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1V658c0 5.5 4.5 10 10 10h41.3c5.5 0 10-4.5 10-10v-51.8h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-63.4v-29.7h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-45.7l87.7-161.1a10.05 10.05 0 0 0-8.8-14.8h-45c-3.8 0-7.2 2.1-8.9 5.5l-73.2 144.3-72.9-144.3c-1.7-3.4-5.2-5.5-9-5.5z")), t.QuestionCircleOutline = l("question-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z", "M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0 1 30.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.ReadOutline = l("read", a, c(i, "M928 161H699.2c-49.1 0-97.1 14.1-138.4 40.7L512 233l-48.8-31.3A255.2 255.2 0 0 0 324.8 161H96c-17.7 0-32 14.3-32 32v568c0 17.7 14.3 32 32 32h228.8c49.1 0 97.1 14.1 138.4 40.7l44.4 28.6c1.3.8 2.8 1.3 4.3 1.3s3-.4 4.3-1.3l44.4-28.6C602 807.1 650.1 793 699.2 793H928c17.7 0 32-14.3 32-32V193c0-17.7-14.3-32-32-32zM324.8 721H136V233h188.8c35.4 0 69.8 10.1 99.5 29.2l48.8 31.3 6.9 4.5v462c-47.6-25.6-100.8-39-155.2-39zm563.2 0H699.2c-54.4 0-107.6 13.4-155.2 39V298l6.9-4.5 48.8-31.3c29.7-19.1 64.1-29.2 99.5-29.2H888v488zM396.9 361H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5zm223.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c0-4.1-3.2-7.5-7.1-7.5H627.1c-3.9 0-7.1 3.4-7.1 7.5zM396.9 501H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5zm416 0H627.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5z")), t.ReconciliationOutline = l("reconciliation", a, c(i, "M676 565c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34zm204-523H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zm-412 64h72v-56h64v56h72v48H468v-48zm-20 616H176V616h272v232zm0-296H176v-88h272v88zm392 240H512V432c0-17.7-14.3-32-32-32H304V240h100v104h336V240h100v552zM704 408v96c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-96c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8zM592 512h48c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")), t.RedEnvelopeOutline = l("red-envelope", a, c(i, "M440.6 462.6a8.38 8.38 0 0 0-7.5-4.6h-48.8c-1.3 0-2.6.4-3.9 1a8.4 8.4 0 0 0-3.4 11.4l87.4 161.1H419c-4.6 0-8.4 3.8-8.4 8.4V665c0 4.6 3.8 8.4 8.4 8.4h63V702h-63c-4.6 0-8.4 3.8-8.4 8.4v25.1c0 4.6 3.8 8.4 8.4 8.4h63v49.9c0 4.6 3.8 8.4 8.4 8.4h43.7c4.6 0 8.4-3.8 8.4-8.4v-49.9h63.3c4.7 0 8.4-3.8 8.2-8.5v-25c0-4.6-3.8-8.4-8.4-8.4h-63.3v-28.6h63.3c4.6 0 8.4-3.8 8.4-8.4v-25.1c0-4.6-3.8-8.4-8.4-8.4h-45.9l87.2-161a8.45 8.45 0 0 0-7.4-12.4h-47.8c-3.1 0-6 1.8-7.5 4.6l-71.9 141.9-71.7-142zM832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V193.1l260.3 204.1c11.6 9.1 27.9 9.1 39.5 0L792 193.1V888zm0-751.3h-31.7L512 331.3 263.7 136.7H232v-.7h560v.7z")), t.RestOutline = l("rest", a, c(i, "M508 704c79.5 0 144-64.5 144-144s-64.5-144-144-144-144 64.5-144 144 64.5 144 144 144zm0-224c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z", "M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zm-518.6-76h397.2l22.4 76H291l22.4-76zm376.2 664H326.4L282 324h451.9l-44.3 520z")), t.RightCircleOutline = l("right-circle", a, c(i, "M666.7 505.5l-246-178A8 8 0 0 0 408 334v46.9c0 10.2 4.9 19.9 13.2 25.9L566.6 512 421.2 617.2c-8.3 6-13.2 15.6-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.8 0-13z", "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.RocketOutline = l("rocket", a, c(i, "M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8H864zM762.3 621.4c9.4 14.6 17 30.3 22.5 46.6H700V558.7a211.6 211.6 0 0 1 62.3 62.7zM388 483.1V318.8l124-147 124 147V668H388V483.1zM239.2 668c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668h-84.8zm388.9 116.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5-38.3 0-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM464 400a48 48 0 1 0 96 0 48 48 0 1 0-96 0z")), t.RightSquareOutline = l("right-square", a, c(i, "M412.7 696.5l246-178c4.4-3.2 4.4-9.7 0-12.9l-246-178c-5.3-3.8-12.7 0-12.7 6.5V381c0 10.2 4.9 19.9 13.2 25.9L558.6 512 413.2 617.2c-8.3 6-13.2 15.6-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.5z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.SafetyCertificateOutline = l("safety-certificate", a, c(i, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zm-405.8-201c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z")), t.ScheduleOutline = l("schedule", a, c(i, "M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496zM416 496H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 136H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm308.2-177.4L620.6 598.3l-52.8-73.1c-3-4.2-7.8-6.6-12.9-6.6H500c-6.5 0-10.3 7.4-6.5 12.7l114.1 158.2a15.9 15.9 0 0 0 25.8 0l165-228.7c3.8-5.3 0-12.7-6.5-12.7H737c-5-.1-9.8 2.4-12.8 6.5z")), t.SaveOutline = l("save", a, c(i, "M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z")), t.SecurityScanOutline = l("security-scan", a, c(i, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zM402.9 528.8l-77.5 77.5a8.03 8.03 0 0 0 0 11.3l34 34c3.1 3.1 8.2 3.1 11.3 0l77.5-77.5c55.7 35.1 130.1 28.4 178.6-20.1 56.3-56.3 56.3-147.5 0-203.8-56.3-56.3-147.5-56.3-203.8 0-48.5 48.5-55.2 123-20.1 178.6zm65.4-133.3c31.3-31.3 82-31.3 113.2 0 31.3 31.3 31.3 82 0 113.2-31.3 31.3-82 31.3-113.2 0s-31.3-81.9 0-113.2z")), t.SettingOutline = l("setting", a, c(i, "M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 0 0 9.3-35.2l-.9-2.6a443.74 443.74 0 0 0-79.7-137.9l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 0 0-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.4a351.86 351.86 0 0 0-99 57.4l-81.9-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a446.02 446.02 0 0 0-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0 0 35.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0 0 25.8 25.7l2.7.5a449.4 449.4 0 0 0 159 0l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-85a350 350 0 0 0 99.7-57.6l81.3 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 0 1-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 0 1-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 0 1 624 502c0 29.9-11.7 58-32.8 79.2z")), t.ShoppingOutline = l("shopping", a, c(i, "M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-432-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16H400v-16zm392 544H232V384h96v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h224v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h96v456z")), t.SkinOutline = l("skin", a, c(i, "M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44zm-28 268H723v432H301V394H182V198h153.3c28.2 71.2 97.5 120 176.7 120s148.5-48.8 176.7-120H842v196z")), t.SkypeOutline = l("skype", a, c(i, "M883.7 578.6c4.1-22.5 6.3-45.5 6.3-68.5 0-51-10-100.5-29.7-147-19-45-46.3-85.4-81-120.1a375.79 375.79 0 0 0-120.1-80.9c-46.6-19.7-96-29.7-147-29.7-24 0-48.1 2.3-71.5 6.8A225.1 225.1 0 0 0 335.6 113c-59.7 0-115.9 23.3-158.1 65.5A222.25 222.25 0 0 0 112 336.6c0 38 9.8 75.4 28.1 108.4-3.7 21.4-5.7 43.3-5.7 65.1 0 51 10 100.5 29.7 147 19 45 46.2 85.4 80.9 120.1 34.7 34.7 75.1 61.9 120.1 80.9 46.6 19.7 96 29.7 147 29.7 22.2 0 44.4-2 66.2-5.9 33.5 18.9 71.3 29 110 29 59.7 0 115.9-23.2 158.1-65.5 42.3-42.2 65.5-98.4 65.5-158.1.1-38-9.7-75.5-28.2-108.7zm-88.1 216C766.9 823.4 729 839 688.4 839c-26.1 0-51.8-6.8-74.6-19.7l-22.5-12.7-25.5 4.5c-17.8 3.2-35.8 4.8-53.6 4.8-41.4 0-81.3-8.1-119.1-24.1-36.3-15.3-69-37.3-97.2-65.5a304.29 304.29 0 0 1-65.5-97.1c-16-37.7-24-77.6-24-119 0-17.4 1.6-35.2 4.6-52.8l4.4-25.1L203 410a151.02 151.02 0 0 1-19.1-73.4c0-40.6 15.7-78.5 44.4-107.2C257.1 200.7 295 185 335.6 185a153 153 0 0 1 71.4 17.9l22.4 11.8 24.8-4.8c18.9-3.6 38.4-5.5 58-5.5 41.4 0 81.3 8.1 119 24 36.5 15.4 69.1 37.4 97.2 65.5 28.2 28.1 50.2 60.8 65.6 97.2 16 37.7 24 77.6 24 119 0 18.4-1.7 37-5.1 55.5l-4.7 25.5 12.6 22.6c12.6 22.5 19.2 48 19.2 73.7 0 40.7-15.7 78.5-44.4 107.2zM583.4 466.2L495 446.6c-33.6-7.7-72.3-17.8-72.3-49.5s27.1-53.9 76.1-53.9c98.7 0 89.7 67.8 138.7 67.8 25.8 0 48.4-15.2 48.4-41.2 0-60.8-97.4-106.5-180-106.5-89.7 0-185.2 38.1-185.2 139.5 0 48.8 17.4 100.8 113.6 124.9l119.4 29.8c36.1 8.9 45.2 29.2 45.2 47.6 0 30.5-30.3 60.3-85.2 60.3-107.2 0-92.3-82.5-149.7-82.5-25.8 0-44.5 17.8-44.5 43.1 0 49.4 60 115.4 194.2 115.4 127.7 0 191-61.5 191-144 0-53.1-24.5-109.6-121.3-131.2z")), t.SlackSquareOutline = l("slack-square", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM529 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4a50.35 50.35 0 0 1 50.3 50.4v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm134 403.2c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z")), t.SlidersOutline = l("sliders", a, c(i, "M320 224h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-60 508h-80V292h80v440zm644-436h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-60 364h-80V364h80v296zM612 404h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8zm-60 145a3 3 0 0 1-3 3h-74a3 3 0 0 1-3-3v-74a3 3 0 0 1 3-3h74a3 3 0 0 1 3 3v74z")), t.SmileOutline = l("smile", a, c(i, "M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z")), t.SnippetsOutline = l("snippets", a, c(i, "M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 888H232V336h218v174c0 22.1 17.9 40 40 40h174v338zm0-402H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z")), t.SoundOutline = l("sound", a, c(i, "M625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1zM586 803L293.4 611.7l-18-11.7H146V424h129.4l17.9-11.7L586 221v582zm348-327H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm-41.9 261.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344z")), t.StarOutline = l("star", a, c(i, "M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0 0 46.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z")), t.StepBackwardOutline = l("step-backward", a, c(r, "M347.6 528.95l383.2 301.02c14.25 11.2 35.2 1.1 35.2-16.95V210.97c0-18.05-20.95-28.14-35.2-16.94L347.6 495.05a21.53 21.53 0 0 0 0 33.9M330 864h-64a8 8 0 0 1-8-8V168a8 8 0 0 1 8-8h64a8 8 0 0 1 8 8v688a8 8 0 0 1-8 8")), t.StepForwardOutline = l("step-forward", a, c(r, "M676.4 528.95L293.2 829.97c-14.25 11.2-35.2 1.1-35.2-16.95V210.97c0-18.05 20.95-28.14 35.2-16.94l383.2 301.02a21.53 21.53 0 0 1 0 33.9M694 864h64a8 8 0 0 0 8-8V168a8 8 0 0 0-8-8h-64a8 8 0 0 0-8 8v688a8 8 0 0 0 8 8")), t.StopOutline = l("stop", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372 0-89 31.3-170.8 83.5-234.8l523.3 523.3C682.8 852.7 601 884 512 884zm288.5-137.2L277.2 223.5C341.2 171.3 423 140 512 140c205.4 0 372 166.6 372 372 0 89-31.3 170.8-83.5 234.8z")), t.SwitcherOutline = l("switcher", a, c(i, "M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zm-40 600H184V312h528v528zm168-728H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32zM300 550h296v64H300z")), t.TagOutline = l("tag", a, c(i, "M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8c1.9 1.9 4.4 2.9 7.1 2.9s5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM459.7 834.7L189.3 564.3 589 164.6 836 188l23.4 247-399.7 399.7zM680 256c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm0 120c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z")), t.TabletOutline = l("tablet", a, c(i, "M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H232V136h560v752zM472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.ShopOutline = l("shop", a, c(i, "M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h676c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zM214 184h596v88H214v-88zm362 656.1H448V736h128v104.1zm234 0H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 3-1.3 6-2.6 9-4v242.2zm30-404.4c0 59.8-49 108.3-109.3 108.3-40.8 0-76.4-22.1-95.2-54.9-2.9-5-8.1-8.1-13.9-8.1h-.6c-5.7 0-11 3.1-13.9 8.1A109.24 109.24 0 0 1 512 544c-40.7 0-76.2-22-95-54.7-3-5.1-8.4-8.3-14.3-8.3s-11.4 3.2-14.3 8.3a109.63 109.63 0 0 1-95.1 54.7C233 544 184 495.5 184 435.7v-91.2c0-.3.2-.5.5-.5h655c.3 0 .5.2.5.5v91.2z")), t.TagsOutline = l("tags", a, c(i, "M483.2 790.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3c-2.3-.2-4.7.6-6.3 2.3L137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c3.1 3.2 8.2 3.2 11.3 0zm62.6-651.7l224.6 19 19 224.6L477.5 694 233.9 450.5l311.9-311.9zm60.16 186.23a48 48 0 1 0 67.88-67.89 48 48 0 1 0-67.88 67.89zM889.7 539.8l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3z")), t.TaobaoCircleOutline = l("taobao-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z")), t.ToolOutline = l("tool", a, c(i, "M876.6 239.5c-.5-.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c.8-.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-44.7-311.3 39.7-67 67-89.2 162-66.5 247.4l-293 293c-3 3-2.8 7.9.3 11l169.7 169.7c3.1 3.1 8.1 3.3 11 .3l292.9-292.9c85.5 22.8 180.5.7 247.6-66.4 84.4-84.5 97.7-213.1 39.7-311.3zM786 499.8c-58.1 58.1-145.3 69.3-214.6 33.6l-8.8 8.8-.1-.1-274 274.1-79.2-79.2 230.1-230.1s0 .1.1.1l52.8-52.8c-35.7-69.3-24.5-156.5 33.6-214.6a184.2 184.2 0 0 1 144-53.5L537 318.9a32.05 32.05 0 0 0 0 45.3l124.5 124.5a32.05 32.05 0 0 0 45.3 0l132.8-132.8c3.7 51.8-14.4 104.8-53.6 143.9z")), t.ThunderboltOutline = l("thunderbolt", a, c(i, "M848 359.3H627.7L825.8 109c4.1-5.3.4-13-6.3-13H436c-2.8 0-5.5 1.5-6.9 4L170 547.5c-3.1 5.3.7 12 6.9 12h174.4l-89.4 357.6c-1.9 7.8 7.5 13.3 13.3 7.7L853.5 373c5.2-4.9 1.7-13.7-5.5-13.7zM378.2 732.5l60.3-241H281.1l189.6-327.4h224.6L487 427.4h211L378.2 732.5z")), t.TrophyOutline = l("trophy", a, c(i, "M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.7 630.2 359 721.7 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.7 758.3 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM184 352V232h64v207.6a91.99 91.99 0 0 1-64-87.6zm520 128c0 49.1-19.1 95.4-53.9 130.1-34.8 34.8-81 53.9-130.1 53.9h-16c-49.1 0-95.4-19.1-130.1-53.9-34.8-34.8-53.9-81-53.9-130.1V184h384v296zm136-128c0 41-26.9 75.8-64 87.6V232h64v120z")), t.UnlockOutline = l("unlock", a, c(i, "M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zm-40 376H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z")), t.UpCircleOutline = l("up-circle", a, c(i, "M518.5 360.3a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7H381c10.2 0 19.9-4.9 25.9-13.2L512 460.4l105.2 145.4c6 8.3 15.6 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.5-12.7l-178-246z", "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z")), t.UpSquareOutline = l("up-square", a, c(i, "M334 624h46.9c10.2 0 19.9-4.9 25.9-13.2L512 465.4l105.2 145.4c6 8.3 15.6 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.5-12.7l-178-246a7.95 7.95 0 0 0-12.9 0l-178 246A7.96 7.96 0 0 0 334 624z", "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.UsbOutline = l("usb", a, c(i, "M760 432V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V548c0-24.3 21.6-44 48.1-44h495.8c26.5 0 48.1 19.7 48.1 44v356c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zm-424 0V184h352v248H336zm120-184h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm160 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")), t.VideoCameraOutline = l("video-camera", a, c(i, "M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM712 792H136V232h576v560zm176-167l-104-59.8V458.9L888 399v226zM208 360h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z")), t.WalletOutline = l("wallet", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 464H528V448h312v128zm0 264H184V184h656v200H496c-17.7 0-32 14.3-32 32v192c0 17.7 14.3 32 32 32h344v200zM580 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.WarningOutline = l("warning", a, c(i, "M464 720a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8zm475.7 440l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-783.5-27.9L512 239.9l339.8 588.2H172.2z")), t.WechatOutline = l("wechat", a, c(i, "M690.1 377.4c5.9 0 11.8.2 17.6.5-24.4-128.7-158.3-227.1-319.9-227.1C209 150.8 64 271.4 64 420.2c0 81.1 43.6 154.2 111.9 203.6a21.5 21.5 0 0 1 9.1 17.6c0 2.4-.5 4.6-1.1 6.9-5.5 20.3-14.2 52.8-14.6 54.3-.7 2.6-1.7 5.2-1.7 7.9 0 5.9 4.8 10.8 10.8 10.8 2.3 0 4.2-.9 6.2-2l70.9-40.9c5.3-3.1 11-5 17.2-5 3.2 0 6.4.5 9.5 1.4 33.1 9.5 68.8 14.8 105.7 14.8 6 0 11.9-.1 17.8-.4-7.1-21-10.9-43.1-10.9-66 0-135.8 132.2-245.8 295.3-245.8zm-194.3-86.5c23.8 0 43.2 19.3 43.2 43.1s-19.3 43.1-43.2 43.1c-23.8 0-43.2-19.3-43.2-43.1s19.4-43.1 43.2-43.1zm-215.9 86.2c-23.8 0-43.2-19.3-43.2-43.1s19.3-43.1 43.2-43.1 43.2 19.3 43.2 43.1-19.4 43.1-43.2 43.1zm586.8 415.6c56.9-41.2 93.2-102 93.2-169.7 0-124-120.8-224.5-269.9-224.5-149 0-269.9 100.5-269.9 224.5S540.9 847.5 690 847.5c30.8 0 60.6-4.4 88.1-12.3 2.6-.8 5.2-1.2 7.9-1.2 5.2 0 9.9 1.6 14.3 4.1l59.1 34c1.7 1 3.3 1.7 5.2 1.7a9 9 0 0 0 6.4-2.6 9 9 0 0 0 2.6-6.4c0-2.2-.9-4.4-1.4-6.6-.3-1.2-7.6-28.3-12.2-45.3-.5-1.9-.9-3.8-.9-5.7.1-5.9 3.1-11.2 7.6-14.5zM600.2 587.2c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9c0 19.8-16.2 35.9-36 35.9zm179.9 0c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9a36.08 36.08 0 0 1-36 35.9z")), t.WeiboCircleOutline = l("weibo-circle", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-44.4 672C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-93-32.2c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zm34.9-14.5c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z")), t.WindowsOutline = l("windows", a, c(i, "M120.1 770.6L443 823.2V543.8H120.1v226.8zm63.4-163.5h196.2v141.6l-196.2-31.9V607.1zm340.3 226.5l382 62.2v-352h-382v289.8zm63.4-226.5h255.3v214.4l-255.3-41.6V607.1zm-63.4-415.7v288.8h382V128.1l-382 63.3zm318.7 225.5H587.3V245l255.3-42.3v214.2zm-722.4 63.3H443V201.9l-322.9 53.5v224.8zM183.5 309l196.2-32.5v140.4H183.5V309z")), t.YahooOutline = l("yahoo", a, c(i, "M859.9 681.4h-14.1c-27.1 0-49.2 22.2-49.2 49.3v14.1c0 27.1 22.2 49.3 49.2 49.3h14.1c27.1 0 49.2-22.2 49.2-49.3v-14.1c0-27.1-22.2-49.3-49.2-49.3zM402.6 231C216.2 231 65 357 65 512.5S216.2 794 402.6 794s337.6-126 337.6-281.5S589.1 231 402.6 231zm0 507C245.1 738 121 634.6 121 512.5c0-62.3 32.3-119.7 84.9-161v48.4h37l159.8 159.9v65.3h-84.4v56.3h225.1v-56.3H459v-65.3l103.5-103.6h65.3v-56.3H459v65.3l-28.1 28.1-93.4-93.5h37v-56.3H216.4c49.4-35 114.3-56.6 186.2-56.6 157.6 0 281.6 103.4 281.6 225.5S560.2 738 402.6 738zm534.7-507H824.7c-15.5 0-27.7 12.6-27.1 28.1l13.1 366h84.4l65.4-366.4c2.7-15.2-7.8-27.7-23.2-27.7z")), t.WeiboSquareOutline = l("weibo-square", a, c(i, "M433.6 595.1c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM467.6 736C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-58.1-46.7c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z")), t.YuqueOutline = l("yuque", a, c(i, "M854.6 370.6c-9.9-39.4 9.9-102.2 73.4-124.4l-67.9-3.6s-25.7-90-143.6-98c-117.8-8.1-194.9-3-195-3 .1 0 87.4 55.6 52.4 154.7-25.6 52.5-65.8 95.6-108.8 144.7-1.3 1.3-2.5 2.6-3.5 3.7C319.4 605 96 860 96 860c245.9 64.4 410.7-6.3 508.2-91.1 20.5-.2 35.9-.3 46.3-.3 135.8 0 250.6-117.6 245.9-248.4-3.2-89.9-31.9-110.2-41.8-149.6zm-204.1 334c-10.6 0-26.2.1-46.8.3l-23.6.2-17.8 15.5c-47.1 41-104.4 71.5-171.4 87.6-52.5 12.6-110 16.2-172.7 9.6 18-20.5 36.5-41.6 55.4-63.1 92-104.6 173.8-197.5 236.9-268.5l1.4-1.4 1.3-1.5c4.1-4.6 20.6-23.3 24.7-28.1 9.7-11.1 17.3-19.9 24.5-28.6 30.7-36.7 52.2-67.8 69-102.2l1.6-3.3 1.2-3.4c13.7-38.8 15.4-76.9 6.2-112.8 22.5.7 46.5 1.9 71.7 3.6 33.3 2.3 55.5 12.9 71.1 29.2 5.8 6 10.2 12.5 13.4 18.7 1 2 1.7 3.6 2.3 5l5 17.7c-15.7 34.5-19.9 73.3-11.4 107.2 3 11.8 6.9 22.4 12.3 34.4 2.1 4.7 9.5 20.1 11 23.3 10.3 22.7 15.4 43 16.7 78.7 3.3 94.6-82.7 181.9-182 181.9z")), t.YoutubeOutline = l("youtube", a, c(i, "M960 509.2c0-2.2 0-4.7-.1-7.6-.1-8.1-.3-17.2-.5-26.9-.8-27.9-2.2-55.7-4.4-81.9-3-36.1-7.4-66.2-13.4-88.8a139.52 139.52 0 0 0-98.3-98.5c-28.3-7.6-83.7-12.3-161.7-15.2-37.1-1.4-76.8-2.3-116.5-2.8-13.9-.2-26.8-.3-38.4-.4h-29.4c-11.6.1-24.5.2-38.4.4-39.7.5-79.4 1.4-116.5 2.8-78 3-133.5 7.7-161.7 15.2A139.35 139.35 0 0 0 82.4 304C76.3 326.6 72 356.7 69 392.8c-2.2 26.2-3.6 54-4.4 81.9-.3 9.7-.4 18.8-.5 26.9 0 2.9-.1 5.4-.1 7.6v5.6c0 2.2 0 4.7.1 7.6.1 8.1.3 17.2.5 26.9.8 27.9 2.2 55.7 4.4 81.9 3 36.1 7.4 66.2 13.4 88.8 12.8 47.9 50.4 85.7 98.3 98.5 28.2 7.6 83.7 12.3 161.7 15.2 37.1 1.4 76.8 2.3 116.5 2.8 13.9.2 26.8.3 38.4.4h29.4c11.6-.1 24.5-.2 38.4-.4 39.7-.5 79.4-1.4 116.5-2.8 78-3 133.5-7.7 161.7-15.2 47.9-12.8 85.5-50.5 98.3-98.5 6.1-22.6 10.4-52.7 13.4-88.8 2.2-26.2 3.6-54 4.4-81.9.3-9.7.4-18.8.5-26.9 0-2.9.1-5.4.1-7.6v-5.6zm-72 5.2c0 2.1 0 4.4-.1 7.1-.1 7.8-.3 16.4-.5 25.7-.7 26.6-2.1 53.2-4.2 77.9-2.7 32.2-6.5 58.6-11.2 76.3-6.2 23.1-24.4 41.4-47.4 47.5-21 5.6-73.9 10.1-145.8 12.8-36.4 1.4-75.6 2.3-114.7 2.8-13.7.2-26.4.3-37.8.3h-28.6l-37.8-.3c-39.1-.5-78.2-1.4-114.7-2.8-71.9-2.8-124.9-7.2-145.8-12.8-23-6.2-41.2-24.4-47.4-47.5-4.7-17.7-8.5-44.1-11.2-76.3-2.1-24.7-3.4-51.3-4.2-77.9-.3-9.3-.4-18-.5-25.7 0-2.7-.1-5.1-.1-7.1v-4.8c0-2.1 0-4.4.1-7.1.1-7.8.3-16.4.5-25.7.7-26.6 2.1-53.2 4.2-77.9 2.7-32.2 6.5-58.6 11.2-76.3 6.2-23.1 24.4-41.4 47.4-47.5 21-5.6 73.9-10.1 145.8-12.8 36.4-1.4 75.6-2.3 114.7-2.8 13.7-.2 26.4-.3 37.8-.3h28.6l37.8.3c39.1.5 78.2 1.4 114.7 2.8 71.9 2.8 124.9 7.2 145.8 12.8 23 6.2 41.2 24.4 47.4 47.5 4.7 17.7 8.5 44.1 11.2 76.3 2.1 24.7 3.4 51.3 4.2 77.9.3 9.3.4 18 .5 25.7 0 2.7.1 5.1.1 7.1v4.8zM423 646l232-135-232-133z")), t.AlibabaOutline = l("alibaba", a, c(i, "M602.9 669.8c-37.2 2.6-33.6-17.3-11.5-46.2 50.4-67.2 143.7-158.5 147.9-225.2 5.8-86.6-81.3-113.4-171-113.4-62.4 1.6-127 18.9-171 34.6-151.6 53.5-246.6 137.5-306.9 232-62.4 93.4-43 183.2 91.8 185.8 101.8-4.2 170.5-32.5 239.7-68.2.5 0-192.5 55.1-263.9 14.7-7.9-4.2-15.7-10-17.8-26.2 0-33.1 54.6-67.7 86.6-78.7v-56.7c64.5 22.6 140.6 16.3 205.7-32 2.1 5.8 4.2 13.1 3.7 21h11c2.6-22.6-12.6-44.6-37.8-46.2 7.3 5.8 12.6 10.5 15.2 14.7l-1 1-.5.5c-83.9 58.8-165.3 31.5-173.1 29.9l46.7-45.7-13.1-33.1c92.9-32.5 169.5-56.2 296.9-78.7l-28.5-23 14.7-8.9c75.5 21 126.4 36.7 123.8 76.6-1 6.8-3.7 14.7-7.9 23.1C660.1 466.1 594 538 567.2 569c-17.3 20.5-34.6 39.4-46.7 58.3-13.6 19.4-20.5 37.3-21 53.5 2.6 131.8 391.4-61.9 468-112.9-111.7 47.8-232.9 93.5-364.6 101.9zm85-302.9c2.8 5.2 4.1 11.6 4.1 19.1-.1-6.8-1.4-13.3-4.1-19.1z")), t.AlignCenterOutline = l("align-center", a, c(i, "M264 230h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm496 424c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496zm144 140H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.AlignLeftOutline = l("align-left", a, c(i, "M120 230h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 424h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm784 140H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.AlignRightOutline = l("align-right", a, c(i, "M904 158H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 424H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 212H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.AlipayOutline = l("alipay", a, c(i, "M789 610.3c-38.7-12.9-90.7-32.7-148.5-53.6 34.8-60.3 62.5-129 80.7-203.6H530.5v-68.6h233.6v-38.3H530.5V132h-95.4c-16.7 0-16.7 16.5-16.7 16.5v97.8H182.2v38.3h236.3v68.6H223.4v38.3h378.4a667.18 667.18 0 0 1-54.5 132.9c-122.8-40.4-253.8-73.2-336.1-53-52.6 13-86.5 36.1-106.5 60.3-91.4 111-25.9 279.6 167.2 279.6C386 811.2 496 747.6 581.2 643 708.3 704 960 808.7 960 808.7V659.4s-31.6-2.5-171-49.1zM253.9 746.6c-150.5 0-195-118.3-120.6-183.1 24.8-21.9 70.2-32.6 94.4-35 89.4-8.8 172.2 25.2 269.9 72.8-68.8 89.5-156.3 145.3-243.7 145.3z")), t.AliyunOutline = l("aliyun", a, c(i, "M959.2 383.9c-.3-82.1-66.9-148.6-149.1-148.6H575.9l21.6 85.2 201 43.7a42.58 42.58 0 0 1 32.9 39.7c.1.5.1 216.1 0 216.6a42.58 42.58 0 0 1-32.9 39.7l-201 43.7-21.6 85.3h234.2c82.1 0 148.8-66.5 149.1-148.6V383.9zM225.5 660.4a42.58 42.58 0 0 1-32.9-39.7c-.1-.6-.1-216.1 0-216.6.8-19.4 14.6-35.5 32.9-39.7l201-43.7 21.6-85.2H213.8c-82.1 0-148.8 66.4-149.1 148.6V641c.3 82.1 67 148.6 149.1 148.6H448l-21.6-85.3-200.9-43.9zm200.9-158.8h171v21.3h-171z")), t.AmazonOutline = l("amazon", a, c(i, "M825 768.9c-3.3-.9-7.3-.4-11.9 1.3-61.6 28.2-121.5 48.3-179.7 60.2C507.7 856 385.2 842.6 266 790.3c-33.1-14.6-79.1-39.2-138-74a9.36 9.36 0 0 0-5.3-2c-2-.1-3.7.1-5.3.9-1.6.8-2.8 1.8-3.7 3.1-.9 1.3-1.1 3.1-.4 5.4.6 2.2 2.1 4.7 4.6 7.4 10.4 12.2 23.3 25.2 38.6 39s35.6 29.4 60.9 46.8c25.3 17.4 51.8 32.9 79.3 46.4 27.6 13.5 59.6 24.9 96.1 34.1s73 13.8 109.4 13.8c36.2 0 71.4-3.7 105.5-10.9 34.2-7.3 63-15.9 86.5-25.9 23.4-9.9 45-21 64.8-33 19.8-12 34.4-22.2 43.9-30.3 9.5-8.2 16.3-14.6 20.2-19.4 4.6-5.7 6.9-10.6 6.9-14.9.1-4.5-1.7-7.1-5-7.9zM527.4 348.1c-15.2 1.3-33.5 4.1-55 8.3-21.5 4.1-41.4 9.3-59.8 15.4s-37.2 14.6-56.3 25.4c-19.2 10.8-35.5 23.2-49 37s-24.5 31.1-33.1 52c-8.6 20.8-12.9 43.7-12.9 68.7 0 27.1 4.7 51.2 14.3 72.5 9.5 21.3 22.2 38 38.2 50.4 15.9 12.4 34 22.1 54 29.2 20 7.1 41.2 10.3 63.2 9.4 22-.9 43.5-4.3 64.4-10.3 20.8-5.9 40.4-15.4 58.6-28.3 18.2-12.9 33.1-28.2 44.8-45.7 4.3 6.6 8.1 11.5 11.5 14.7l8.7 8.9c5.8 5.9 14.7 14.6 26.7 26.1 11.9 11.5 24.1 22.7 36.3 33.7l104.4-99.9-6-4.9c-4.3-3.3-9.4-8-15.2-14.3-5.8-6.2-11.6-13.1-17.2-20.5-5.7-7.4-10.6-16.1-14.7-25.9-4.1-9.8-6.2-19.3-6.2-28.5V258.7c0-10.1-1.9-21-5.7-32.8-3.9-11.7-10.7-24.5-20.7-38.3-10-13.8-22.4-26.2-37.2-37-14.9-10.8-34.7-20-59.6-27.4-24.8-7.4-52.6-11.1-83.2-11.1-31.3 0-60.4 3.7-87.6 10.9-27.1 7.3-50.3 17-69.7 29.2-19.3 12.2-35.9 26.3-49.7 42.4-13.8 16.1-24.1 32.9-30.8 50.4-6.7 17.5-10.1 35.2-10.1 53.1L408 310c5.5-16.4 12.9-30.6 22-42.8 9.2-12.2 17.9-21 25.8-26.5 8-5.5 16.6-9.9 25.7-13.2 9.2-3.3 15.4-5 18.6-5.4 3.2-.3 5.7-.4 7.6-.4 26.7 0 45.2 7.9 55.6 23.6 6.5 9.5 9.7 23.9 9.7 43.3v56.6c-15.2.6-30.4 1.6-45.6 2.9zM573.1 500c0 16.6-2.2 31.7-6.5 45-9.2 29.1-26.7 47.4-52.4 54.8-22.4 6.6-43.7 3.3-63.9-9.8-21.5-14-32.2-33.8-32.2-59.3 0-19.9 5-36.9 15-51.1 10-14.1 23.3-24.7 40-31.7s33-12 49-14.9c15.9-3 33-4.8 51-5.4V500zm335.2 218.9c-4.3-5.4-15.9-8.9-34.9-10.7-19-1.8-35.5-1.7-49.7.4-15.3 1.8-31.1 6.2-47.3 13.4-16.3 7.1-23.4 13.1-21.6 17.8l.7 1.3.9.7 1.4.2h4.6c.8 0 1.8-.1 3.2-.2 1.4-.1 2.7-.3 3.9-.4 1.2-.1 2.9-.3 5.1-.4 2.1-.1 4.1-.4 6-.7.3 0 3.7-.3 10.3-.9 6.6-.6 11.4-1 14.3-1.3 2.9-.3 7.8-.6 14.5-.9 6.7-.3 12.1-.3 16.1 0 4 .3 8.5.7 13.6 1.1 5.1.4 9.2 1.3 12.4 2.7 3.2 1.3 5.6 3 7.1 5.1 5.2 6.6 4.2 21.2-3 43.9s-14 40.8-20.4 54.2c-2.8 5.7-2.8 9.2 0 10.7s6.7.1 11.9-4c15.6-12.2 28.6-30.6 39.1-55.3 6.1-14.6 10.5-29.8 13.1-45.7 2.4-15.9 2-26.2-1.3-31z")), t.AntCloudOutline = l("ant-cloud", a, c(i, "M378.9 738c-3.1 0-6.1-.5-8.8-1.5l4.4 30.7h26.3l-15.5-29.9c-2.1.5-4.2.7-6.4.7zm421-291.2c-12.6 0-24.8 1.5-36.5 4.2-21.4-38.4-62.3-64.3-109.3-64.3-6.9 0-13.6.6-20.2 1.6-35.4-77.4-113.4-131.1-203.9-131.1-112.3 0-205.3 82.6-221.6 190.4C127.3 455.5 64 523.8 64 607c0 88.4 71.6 160.1 160 160.2h50l13.2-27.6c-26.2-8.3-43.3-29-39.1-48.8 4.6-21.6 32.8-33.9 63.1-27.5 22.9 4.9 40.4 19.1 45.5 35.1a26.1 26.1 0 0 1 22.1-12.4h.2c-.8-3.2-1.2-6.5-1.2-9.9 0-20.1 14.8-36.7 34.1-39.6v-25.4c0-4.4 3.6-8 8-8s8 3.6 8 8v26.3c4.6 1.2 8.8 3.2 12.6 5.8l19.5-21.4c3-3.3 8-3.5 11.3-.5 3.3 3 3.5 8 .5 11.3l-20 22-.2.2a40 40 0 0 1-46.9 59.2c-.4 5.6-2.6 10.7-6 14.8l20 38.4H804v-.1c86.5-2.2 156-73 156-160.1 0-88.5-71.7-160.2-160.1-160.2zM338.2 737.2l-4.3 30h24.4l-5.9-41.5c-3.5 4.6-8.3 8.5-14.2 11.5zM797.5 305a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-65.7 61.3a24 24 0 1 0 48 0 24 24 0 1 0-48 0zM303.4 742.9l-11.6 24.3h26l3.5-24.7c-5.7.8-11.7 1-17.9.4z")), t.ApartmentOutline = l("apartment", a, c(i, "M908 640H804V488c0-4.4-3.6-8-8-8H548v-96h108c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h108v96H228c-4.4 0-8 3.6-8 8v152H116c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h288c8.8 0 16-7.2 16-16V656c0-8.8-7.2-16-16-16H292v-88h440v88H620c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h288c8.8 0 16-7.2 16-16V656c0-8.8-7.2-16-16-16zm-564 76v168H176V716h168zm84-408V140h168v168H428zm420 576H680V716h168v168z")), t.AntDesignOutline = l("ant-design", a, c(i, "M716.3 313.8c19-18.9 19-49.7 0-68.6l-69.9-69.9.1.1c-18.5-18.5-50.3-50.3-95.3-95.2-21.2-20.7-55.5-20.5-76.5.5L80.9 474.2a53.84 53.84 0 0 0 0 76.4L474.6 944a54.14 54.14 0 0 0 76.5 0l165.1-165c19-18.9 19-49.7 0-68.6a48.7 48.7 0 0 0-68.7 0l-125 125.2c-5.2 5.2-13.3 5.2-18.5 0L189.5 521.4c-5.2-5.2-5.2-13.3 0-18.5l314.4-314.2c.4-.4.9-.7 1.3-1.1 5.2-4.1 12.4-3.7 17.2 1.1l125.2 125.1c19 19 49.8 19 68.7 0zM408.6 514.4a106.3 106.2 0 1 0 212.6 0 106.3 106.2 0 1 0-212.6 0zm536.2-38.6L821.9 353.5c-19-18.9-49.8-18.9-68.7.1a48.4 48.4 0 0 0 0 68.6l83 82.9c5.2 5.2 5.2 13.3 0 18.5l-81.8 81.7a48.4 48.4 0 0 0 0 68.6 48.7 48.7 0 0 0 68.7 0l121.8-121.7a53.93 53.93 0 0 0-.1-76.4z")), t.AreaChartOutline = l("area-chart", a, c(i, "M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-616-64h536c4.4 0 8-3.6 8-8V284c0-7.2-8.7-10.7-13.7-5.7L592 488.6l-125.4-124a8.03 8.03 0 0 0-11.3 0l-189 189.6a7.87 7.87 0 0 0-2.3 5.6V720c0 4.4 3.6 8 8 8z")), t.ArrowLeftOutline = l("arrow-left", a, c(i, "M872 474H286.9l350.2-304c5.6-4.9 2.2-14-5.2-14h-88.5c-3.9 0-7.6 1.4-10.5 3.9L155 487.8a31.96 31.96 0 0 0 0 48.3L535.1 866c1.5 1.3 3.3 2 5.2 2h91.5c7.4 0 10.8-9.2 5.2-14L286.9 550H872c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")), t.ArrowDownOutline = l("arrow-down", a, c(i, "M862 465.3h-81c-4.6 0-9 2-12.1 5.5L550 723.1V160c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v563.1L255.1 470.8c-3-3.5-7.4-5.5-12.1-5.5h-81c-6.8 0-10.5 8.1-6 13.2L487.9 861a31.96 31.96 0 0 0 48.3 0L868 478.5c4.5-5.2.8-13.2-6-13.2z")), t.ArrowUpOutline = l("arrow-up", a, c(i, "M868 545.5L536.1 163a31.96 31.96 0 0 0-48.3 0L156 545.5a7.97 7.97 0 0 0 6 13.2h81c4.6 0 9-2 12.1-5.5L474 300.9V864c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V300.9l218.9 252.3c3 3.5 7.4 5.5 12.1 5.5h81c6.8 0 10.5-8 6-13.2z")), t.ArrowsAltOutline = l("arrows-alt", a, c(i, "M855 160.1l-189.2 23.5c-6.6.8-9.3 8.8-4.7 13.5l54.7 54.7-153.5 153.5a8.03 8.03 0 0 0 0 11.3l45.1 45.1c3.1 3.1 8.2 3.1 11.3 0l153.6-153.6 54.7 54.7a7.94 7.94 0 0 0 13.5-4.7L863.9 169a7.9 7.9 0 0 0-8.9-8.9zM416.6 562.3a8.03 8.03 0 0 0-11.3 0L251.8 715.9l-54.7-54.7a7.94 7.94 0 0 0-13.5 4.7L160.1 855c-.6 5.2 3.7 9.5 8.9 8.9l189.2-23.5c6.6-.8 9.3-8.8 4.7-13.5l-54.7-54.7 153.6-153.6c3.1-3.1 3.1-8.2 0-11.3l-45.2-45z")), t.ArrowRightOutline = l("arrow-right", a, c(i, "M869 487.8L491.2 159.9c-2.9-2.5-6.6-3.9-10.5-3.9h-88.5c-7.4 0-10.8 9.2-5.2 14l350.2 304H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h585.1L386.9 854c-5.6 4.9-2.2 14 5.2 14h91.5c1.9 0 3.8-.7 5.2-2L869 536.2a32.07 32.07 0 0 0 0-48.4z")), t.AuditOutline = l("audit", a, c(i, "M296 250c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm184 144H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-48 458H208V148h560v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm440-88H728v-36.6c46.3-13.8 80-56.6 80-107.4 0-61.9-50.1-112-112-112s-112 50.1-112 112c0 50.7 33.7 93.6 80 107.4V764H520c-8.8 0-16 7.2-16 16v152c0 8.8 7.2 16 16 16h352c8.8 0 16-7.2 16-16V780c0-8.8-7.2-16-16-16zM646 620c0-27.6 22.4-50 50-50s50 22.4 50 50-22.4 50-50 50-50-22.4-50-50zm180 266H566v-60h260v60z")), t.BarChartOutline = l("bar-chart", a, c(i, "M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-600-80h56c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V384c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v320c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V462c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v242c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v400c0 4.4 3.6 8 8 8z")), t.BarcodeOutline = l("barcode", a, c(i, "M120 160H72c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zm833 0h-48c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zM200 736h112c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm321 0h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm126 0h178c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8H647c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm-255 0h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm-79 64H201c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm257 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm256 0H648c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h178c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-385 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")), t.BarsOutline = l("bars", a, c(r, "M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")), t.BgColorsOutline = l("bg-colors", a, c(i, "M766.4 744.3c43.7 0 79.4-36.2 79.4-80.5 0-53.5-79.4-140.8-79.4-140.8S687 610.3 687 663.8c0 44.3 35.7 80.5 79.4 80.5zm-377.1-44.1c7.1 7.1 18.6 7.1 25.6 0l256.1-256c7.1-7.1 7.1-18.6 0-25.6l-256-256c-.6-.6-1.3-1.2-2-1.7l-78.2-78.2a9.11 9.11 0 0 0-12.8 0l-48 48a9.11 9.11 0 0 0 0 12.8l67.2 67.2-207.8 207.9c-7.1 7.1-7.1 18.6 0 25.6l255.9 256zm12.9-448.6l178.9 178.9H223.4l178.8-178.9zM904 816H120c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8z")), t.BehanceOutline = l("behance", a, c(i, "M634 294.3h199.5v48.4H634zM434.1 485.8c44.1-21.1 67.2-53.2 67.2-102.8 0-98.1-73-121.9-157.3-121.9H112v492.4h238.5c89.4 0 173.3-43 173.3-143 0-61.8-29.2-107.5-89.7-124.7zM220.2 345.1h101.5c39.1 0 74.2 10.9 74.2 56.3 0 41.8-27.3 58.6-66 58.6H220.2V345.1zm115.5 324.8H220.1V534.3H338c47.6 0 77.7 19.9 77.7 70.3 0 49.6-35.9 65.3-80 65.3zm575.8-89.5c0-105.5-61.7-193.4-173.3-193.4-108.5 0-182.3 81.7-182.3 188.8 0 111 69.9 187.2 182.3 187.2 85.1 0 140.2-38.3 166.7-120h-86.3c-9.4 30.5-47.6 46.5-77.3 46.5-57.4 0-87.4-33.6-87.4-90.7h256.9c.3-5.9.7-12.1.7-18.4zM653.9 537c3.1-46.9 34.4-76.2 81.2-76.2 49.2 0 73.8 28.9 78.1 76.2H653.9z")), t.BlockOutline = l("block", a, c(i, "M856 376H648V168c0-8.8-7.2-16-16-16H168c-8.8 0-16 7.2-16 16v464c0 8.8 7.2 16 16 16h208v208c0 8.8 7.2 16 16 16h464c8.8 0 16-7.2 16-16V392c0-8.8-7.2-16-16-16zm-480 16v188H220V220h360v156H392c-8.8 0-16 7.2-16 16zm204 52v136H444V444h136zm224 360H444V648h188c8.8 0 16-7.2 16-16V444h156v360z")), t.BoldOutline = l("bold", a, c(i, "M697.8 481.4c33.6-35 54.2-82.3 54.2-134.3v-10.2C752 229.3 663.9 142 555.3 142H259.4c-15.1 0-27.4 12.3-27.4 27.4v679.1c0 16.3 13.2 29.5 29.5 29.5h318.7c117 0 211.8-94.2 211.8-210.5v-11c0-73-37.4-137.3-94.2-175.1zM328 238h224.7c57.1 0 103.3 44.4 103.3 99.3v9.5c0 54.8-46.3 99.3-103.3 99.3H328V238zm366.6 429.4c0 62.9-51.7 113.9-115.5 113.9H328V542.7h251.1c63.8 0 115.5 51 115.5 113.9v10.8z")), t.BorderBottomOutline = l("border-bottom", a, c(i, "M872 808H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-720-94h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-498h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-166h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm166 166h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm222-72h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388-404h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388 426h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388-404h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")), t.BorderLeftOutline = l("border-left", a, c(i, "M208 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM540 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.BorderOuterOutline = l("border-outer", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM484 366h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM302 548h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm364 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-182 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 182h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")), t.BorderInnerOutline = l("border-inner", a, c(i, "M872 476H548V144h-72v332H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h324v332h72V548h324c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-664h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM650 216h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-592h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-166 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-426h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 260h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.BorderRightOutline = l("border-right", a, c(i, "M872 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.BorderHorizontalOutline = l("border-horizontal", a, c(i, "M540 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm664 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.BorderTopOutline = l("border-top", a, c(i, "M872 144H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332-498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.BorderVerticleOutline = l("border-verticle", a, c(i, "M872 476H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-664h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM650 216h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-592h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-166 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM208 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM152 382h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM208 642h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.BorderOutline = l("border", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z")), t.BranchesOutline = l("branches", a, c(i, "M740 161c-61.8 0-112 50.2-112 112 0 50.1 33.1 92.6 78.5 106.9v95.9L320 602.4V318.1c44.2-15 76-56.9 76-106.1 0-61.8-50.2-112-112-112s-112 50.2-112 112c0 49.2 31.8 91 76 106.1V706c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1v-27.8l423.5-138.7a50.52 50.52 0 0 0 34.9-48.2V378.2c42.9-15.8 73.6-57 73.6-105.2 0-61.8-50.2-112-112-112zm-504 51a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm96 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm408-491a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.CheckOutline = l("check", a, c(i, "M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z")), t.CiOutline = l("ci", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm218-572.1h-50.4c-4.4 0-8 3.6-8 8v384.2c0 4.4 3.6 8 8 8H730c4.4 0 8-3.6 8-8V319.9c0-4.4-3.6-8-8-8zm-281.4 49.6c49.5 0 83.1 31.5 87 77.6.4 4.2 3.8 7.4 8 7.4h52.6c2.4 0 4.4-2 4.4-4.4 0-81.2-64-138.1-152.3-138.1C345.4 304 286 373.5 286 488.4v49c0 114 59.4 182.6 162.3 182.6 88 0 152.3-55.1 152.3-132.5 0-2.4-2-4.4-4.4-4.4h-52.7c-4.2 0-7.6 3.2-8 7.3-4.2 43-37.7 72.4-87 72.4-61.1 0-95.6-44.9-95.6-125.2v-49.3c.1-81.4 34.6-126.8 95.7-126.8z")), t.CloseOutline = l("close", a, c(i, "M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 0 0 203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z")), t.CloudDownloadOutline = l("cloud-download", a, c(i, "M624 706.3h-74.1V464c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v242.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.7a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9z", "M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 0 1-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z")), t.CloudServerOutline = l("cloud-server", a, c(i, "M704 446H320c-4.4 0-8 3.6-8 8v402c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8V454c0-4.4-3.6-8-8-8zm-328 64h272v117H376V510zm272 290H376V683h272v117z", "M424 748a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm0-178a32 32 0 1 0 64 0 32 32 0 1 0-64 0z", "M811.4 368.9C765.6 248 648.9 162 512.2 162S258.8 247.9 213 368.8C126.9 391.5 63.5 470.2 64 563.6 64.6 668 145.6 752.9 247.6 762c4.7.4 8.7-3.3 8.7-8v-60.4c0-4-3-7.4-7-7.9-27-3.4-52.5-15.2-72.1-34.5-24-23.5-37.2-55.1-37.2-88.6 0-28 9.1-54.4 26.2-76.4 16.7-21.4 40.2-36.9 66.1-43.7l37.9-10 13.9-36.7c8.6-22.8 20.6-44.2 35.7-63.5 14.9-19.2 32.6-36 52.4-50 41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.3c19.9 14 37.5 30.8 52.4 50 15.1 19.3 27.1 40.7 35.7 63.5l13.8 36.6 37.8 10c54.2 14.4 92.1 63.7 92.1 120 0 33.6-13.2 65.1-37.2 88.6-19.5 19.2-44.9 31.1-71.9 34.5-4 .5-6.9 3.9-6.9 7.9V754c0 4.7 4.1 8.4 8.8 8 101.7-9.2 182.5-94 183.2-198.2.6-93.4-62.7-172.1-148.6-194.9z")), t.CloudSyncOutline = l("cloud-sync", a, c(i, "M811.4 368.9C765.6 248 648.9 162 512.2 162S258.8 247.9 213 368.8C126.9 391.5 63.5 470.2 64 563.6 64.6 668 145.6 752.9 247.6 762c4.7.4 8.7-3.3 8.7-8v-60.4c0-4-3-7.4-7-7.9-27-3.4-52.5-15.2-72.1-34.5-24-23.5-37.2-55.1-37.2-88.6 0-28 9.1-54.4 26.2-76.4 16.7-21.4 40.2-36.9 66.1-43.7l37.9-10 13.9-36.7c8.6-22.8 20.6-44.2 35.7-63.5 14.9-19.2 32.6-36 52.4-50 41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.3c19.9 14 37.5 30.8 52.4 50 15.1 19.3 27.1 40.7 35.7 63.5l13.8 36.6 37.8 10c54.2 14.4 92.1 63.7 92.1 120 0 33.6-13.2 65.1-37.2 88.6-19.5 19.2-44.9 31.1-71.9 34.5-4 .5-6.9 3.9-6.9 7.9V754c0 4.7 4.1 8.4 8.8 8 101.7-9.2 182.5-94 183.2-198.2.6-93.4-62.7-172.1-148.6-194.9z", "M376.9 656.4c1.8-33.5 15.7-64.7 39.5-88.6 25.4-25.5 60-39.8 96-39.8 36.2 0 70.3 14.1 96 39.8 1.4 1.4 2.7 2.8 4.1 4.3l-25 19.6a8 8 0 0 0 3 14.1l98.2 24c5 1.2 9.9-2.6 9.9-7.7l.5-101.3c0-6.7-7.6-10.5-12.9-6.3L663 532.7c-36.6-42-90.4-68.6-150.5-68.6-107.4 0-195 85.1-199.4 191.7-.2 4.5 3.4 8.3 8 8.3H369c4.2-.1 7.7-3.4 7.9-7.7zM703 664h-47.9c-4.2 0-7.7 3.3-8 7.6-1.8 33.5-15.7 64.7-39.5 88.6-25.4 25.5-60 39.8-96 39.8-36.2 0-70.3-14.1-96-39.8-1.4-1.4-2.7-2.8-4.1-4.3l25-19.6a8 8 0 0 0-3-14.1l-98.2-24c-5-1.2-9.9 2.6-9.9 7.7l-.4 101.4c0 6.7 7.6 10.5 12.9 6.3l23.2-18.2c36.6 42 90.4 68.6 150.5 68.6 107.4 0 195-85.1 199.4-191.7.2-4.5-3.4-8.3-8-8.3z")), t.CloudUploadOutline = l("cloud-upload", a, c(i, "M518.3 459a8 8 0 0 0-12.6 0l-112 141.7a7.98 7.98 0 0 0 6.3 12.9h73.9V856c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V613.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 459z", "M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 0 1-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z")), t.ClusterOutline = l("cluster", a, c(i, "M888 680h-54V540H546v-92h238c8.8 0 16-7.2 16-16V168c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h238v92H190v140h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8h-54v-72h220v72h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8h-54v-72h220v72h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8zM256 805.3c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zm288 0c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zM288 384V216h448v168H288zm544 421.3c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zM360 300a40 40 0 1 0 80 0 40 40 0 1 0-80 0z")), t.CodepenOutline = l("codepen", a, c(i, "M911.7 385.3l-.3-1.5c-.2-1-.3-1.9-.6-2.9-.2-.6-.4-1.1-.5-1.7-.3-.8-.5-1.7-.9-2.5-.2-.6-.5-1.1-.8-1.7-.4-.8-.8-1.5-1.2-2.3-.3-.5-.6-1.1-1-1.6-.8-1.2-1.7-2.4-2.6-3.6-.5-.6-1.1-1.3-1.7-1.9-.4-.5-.9-.9-1.4-1.3-.6-.6-1.3-1.1-1.9-1.6-.5-.4-1-.8-1.6-1.2-.2-.1-.4-.3-.6-.4L531.1 117.8a34.3 34.3 0 0 0-38.1 0L127.3 361.3c-.2.1-.4.3-.6.4-.5.4-1 .8-1.6 1.2-.7.5-1.3 1.1-1.9 1.6-.5.4-.9.9-1.4 1.3-.6.6-1.2 1.2-1.7 1.9-1 1.1-1.8 2.3-2.6 3.6-.3.5-.7 1-1 1.6-.4.7-.8 1.5-1.2 2.3-.3.5-.5 1.1-.8 1.7-.3.8-.6 1.7-.9 2.5-.2.6-.4 1.1-.5 1.7-.2.9-.4 1.9-.6 2.9l-.3 1.5c-.2 1.5-.3 3-.3 4.5v243.5c0 1.5.1 3 .3 4.5l.3 1.5.6 2.9c.2.6.3 1.1.5 1.7.3.9.6 1.7.9 2.5.2.6.5 1.1.8 1.7.4.8.7 1.5 1.2 2.3.3.5.6 1.1 1 1.6.5.7.9 1.4 1.5 2.1l1.2 1.5c.5.6 1.1 1.3 1.7 1.9.4.5.9.9 1.4 1.3.6.6 1.3 1.1 1.9 1.6.5.4 1 .8 1.6 1.2.2.1.4.3.6.4L493 905.7c5.6 3.8 12.3 5.8 19.1 5.8 6.6 0 13.3-1.9 19.1-5.8l365.6-243.5c.2-.1.4-.3.6-.4.5-.4 1-.8 1.6-1.2.7-.5 1.3-1.1 1.9-1.6.5-.4.9-.9 1.4-1.3.6-.6 1.2-1.2 1.7-1.9l1.2-1.5 1.5-2.1c.3-.5.7-1 1-1.6.4-.8.8-1.5 1.2-2.3.3-.5.5-1.1.8-1.7.3-.8.6-1.7.9-2.5.2-.5.4-1.1.5-1.7.3-.9.4-1.9.6-2.9l.3-1.5c.2-1.5.3-3 .3-4.5V389.8c-.3-1.5-.4-3-.6-4.5zM546.4 210.5l269.4 179.4-120.3 80.4-149-99.6V210.5zm-68.8 0v160.2l-149 99.6-120.3-80.4 269.3-179.4zM180.7 454.1l86 57.5-86 57.5v-115zm296.9 358.5L208.3 633.2l120.3-80.4 149 99.6v160.2zM512 592.8l-121.6-81.2L512 430.3l121.6 81.2L512 592.8zm34.4 219.8V652.4l149-99.6 120.3 80.4-269.3 179.4zM843.3 569l-86-57.5 86-57.5v115z")), t.CodeSandboxOutline = l("code-sandbox", a, c(i, "M709.6 210l.4-.2h.2L512 96 313.9 209.8h-.2l.7.3L151.5 304v416L512 928l360.5-208V304l-162.9-94zM482.7 843.6L339.6 761V621.4L210 547.8V372.9l272.7 157.3v313.4zM238.2 321.5l134.7-77.8 138.9 79.7 139.1-79.9 135.2 78-273.9 158-274-158zM814 548.3l-128.8 73.1v139.1l-143.9 83V530.4L814 373.1v175.2z")), t.ColumHeightOutline = l("colum-height", a, c(i, "M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z")), t.ColumnWidthOutline = l("column-width", a, c(i, "M180 176h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zm724 0h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zM785.3 504.3L657.7 403.6a7.23 7.23 0 0 0-11.7 5.7V476H378v-62.8c0-6-7-9.4-11.7-5.7L238.7 508.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V548h268v62.8c0 6 7 9.4 11.7 5.7l127.5-100.8c3.8-2.9 3.8-8.5.2-11.4z")), t.ColumnHeightOutline = l("column-height", a, c(i, "M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z")), t.CoffeeOutline = l("coffee", a, c(r, "M275 281c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36zm613 144H768c0-39.8-32.2-72-72-72H200c-39.8 0-72 32.2-72 72v248c0 3.4.2 6.7.7 9.9-.5 7-.7 14-.7 21.1 0 176.7 143.3 320 320 320 160.1 0 292.7-117.5 316.3-271H888c39.8 0 72-32.2 72-72V497c0-39.8-32.2-72-72-72zM696 681h-1.1c.7 7.6 1.1 15.2 1.1 23 0 137-111 248-248 248S200 841 200 704c0-7.8.4-15.4 1.1-23H200V425h496v256zm192-8H776V497h112v176zM613 281c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36zm-170 0c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36z")), t.CopyrightOutline = l("copyright", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm5.6-532.7c53 0 89 33.8 93 83.4.3 4.2 3.8 7.4 8 7.4h56.7c2.6 0 4.7-2.1 4.7-4.7 0-86.7-68.4-147.4-162.7-147.4C407.4 290 344 364.2 344 486.8v52.3C344 660.8 407.4 734 517.3 734c94 0 162.7-58.8 162.7-141.4 0-2.6-2.1-4.7-4.7-4.7h-56.8c-4.2 0-7.6 3.2-8 7.3-4.2 46.1-40.1 77.8-93 77.8-65.3 0-102.1-47.9-102.1-133.6v-52.6c.1-87 37-135.5 102.2-135.5z")), t.DashOutline = l("dash", a, c(i, "M112 476h160v72H112zm320 0h160v72H432zm320 0h160v72H752z")), t.DeploymentUnitOutline = l("deployment-unit", a, c(i, "M888.3 693.2c-42.5-24.6-94.3-18-129.2 12.8l-53-30.7V523.6c0-15.7-8.4-30.3-22-38.1l-136-78.3v-67.1c44.2-15 76-56.8 76-106.1 0-61.9-50.1-112-112-112s-112 50.1-112 112c0 49.3 31.8 91.1 76 106.1v67.1l-136 78.3c-13.6 7.8-22 22.4-22 38.1v151.6l-53 30.7c-34.9-30.8-86.8-37.4-129.2-12.8-53.5 31-71.7 99.4-41 152.9 30.8 53.5 98.9 71.9 152.2 41 42.5-24.6 62.7-73 53.6-118.8l48.7-28.3 140.6 81c6.8 3.9 14.4 5.9 22 5.9s15.2-2 22-5.9L674.5 740l48.7 28.3c-9.1 45.7 11.2 94.2 53.6 118.8 53.3 30.9 121.5 12.6 152.2-41 30.8-53.6 12.6-122-40.7-152.9zm-673 138.4a47.6 47.6 0 0 1-65.2-17.6c-13.2-22.9-5.4-52.3 17.5-65.5a47.6 47.6 0 0 1 65.2 17.6c13.2 22.9 5.4 52.3-17.5 65.5zM522 463.8zM464 234a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm170 446.2l-122 70.3-122-70.3V539.8l122-70.3 122 70.3v140.4zm239.9 133.9c-13.2 22.9-42.4 30.8-65.2 17.6-22.8-13.2-30.7-42.6-17.5-65.5s42.4-30.8 65.2-17.6c22.9 13.2 30.7 42.5 17.5 65.5z")), t.DesktopOutline = l("desktop", a, c(i, "M928 140H96c-17.7 0-32 14.3-32 32v496c0 17.7 14.3 32 32 32h380v112H304c-8.8 0-16 7.2-16 16v48c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-48c0-8.8-7.2-16-16-16H548V700h380c17.7 0 32-14.3 32-32V172c0-17.7-14.3-32-32-32zm-40 488H136V212h752v416z")), t.DingdingOutline = l("dingding", a, c(i, "M573.7 252.5C422.5 197.4 201.3 96.7 201.3 96.7c-15.7-4.1-17.9 11.1-17.9 11.1-5 61.1 33.6 160.5 53.6 182.8 19.9 22.3 319.1 113.7 319.1 113.7S326 357.9 270.5 341.9c-55.6-16-37.9 17.8-37.9 17.8 11.4 61.7 64.9 131.8 107.2 138.4 42.2 6.6 220.1 4 220.1 4s-35.5 4.1-93.2 11.9c-42.7 5.8-97 12.5-111.1 17.8-33.1 12.5 24 62.6 24 62.6 84.7 76.8 129.7 50.5 129.7 50.5 33.3-10.7 61.4-18.5 85.2-24.2L565 743.1h84.6L603 928l205.3-271.9H700.8l22.3-38.7c.3.5.4.8.4.8S799.8 496.1 829 433.8l.6-1h-.1c5-10.8 8.6-19.7 10-25.8 17-71.3-114.5-99.4-265.8-154.5z")), t.DisconnectOutline = l("disconnect", a, c(i, "M832.6 191.4c-84.6-84.6-221.5-84.6-306 0l-96.9 96.9 51 51 96.9-96.9c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204l-96.9 96.9 51.1 51.1 96.9-96.9c84.4-84.6 84.4-221.5-.1-306.1zM446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l96.9-96.9-51.1-51.1-96.9 96.9c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l96.9-96.9-51-51-96.8 97zM260.3 209.4a8.03 8.03 0 0 0-11.3 0L209.4 249a8.03 8.03 0 0 0 0 11.3l554.4 554.4c3.1 3.1 8.2 3.1 11.3 0l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3L260.3 209.4z")), t.DollarOutline = l("dollar", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm47.7-395.2l-25.4-5.9V348.6c38 5.2 61.5 29 65.5 58.2.5 4 3.9 6.9 7.9 6.9h44.9c4.7 0 8.4-4.1 8-8.8-6.1-62.3-57.4-102.3-125.9-109.2V263c0-4.4-3.6-8-8-8h-28.1c-4.4 0-8 3.6-8 8v33c-70.8 6.9-126.2 46-126.2 119 0 67.6 49.8 100.2 102.1 112.7l24.7 6.3v142.7c-44.2-5.9-69-29.5-74.1-61.3-.6-3.8-4-6.6-7.9-6.6H363c-4.7 0-8.4 4-8 8.7 4.5 55 46.2 105.6 135.2 112.1V761c0 4.4 3.6 8 8 8h28.4c4.4 0 8-3.6 8-8.1l-.2-31.7c78.3-6.9 134.3-48.8 134.3-124-.1-69.4-44.2-100.4-109-116.4zm-68.6-16.2c-5.6-1.6-10.3-3.1-15-5-33.8-12.2-49.5-31.9-49.5-57.3 0-36.3 27.5-57 64.5-61.7v124zM534.3 677V543.3c3.1.9 5.9 1.6 8.8 2.2 47.3 14.4 63.2 34.4 63.2 65.1 0 39.1-29.4 62.6-72 66.4z")), t.DoubleRightOutline = l("double-right", a, c(i, "M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 0 0 188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 0 0 492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z")), t.DotChartOutline = l("dot-chart", a, c(i, "M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM288 604a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm118-224a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm158 228a96 96 0 1 0 192 0 96 96 0 1 0-192 0zm148-314a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")), t.DoubleLeftOutline = l("double-left", a, c(i, "M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 0 0 0 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 0 0 0 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z")), t.DownloadOutline = l("download", a, c(i, "M505.7 661a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z")), t.DribbbleOutline = l("dribbble", a, c(i, "M512 96C282.6 96 96 282.6 96 512s186.6 416 416 416 416-186.6 416-416S741.4 96 512 96zm275.1 191.8c49.5 60.5 79.5 137.5 80.2 221.4-11.7-2.5-129.2-26.3-247.4-11.4-2.5-6.1-5-12.2-7.6-18.3-7.4-17.3-15.3-34.6-23.6-51.5C720 374.3 779.6 298 787.1 287.8zM512 157.2c90.3 0 172.8 33.9 235.5 89.5-6.4 9.1-59.9 81-186.2 128.4-58.2-107-122.7-194.8-132.6-208 27.3-6.6 55.2-9.9 83.3-9.9zM360.9 191c9.4 12.8 72.9 100.9 131.7 205.5C326.4 440.6 180 440 164.1 439.8c23.1-110.3 97.4-201.9 196.8-248.8zM156.7 512.5c0-3.6.1-7.3.2-10.9 15.5.3 187.7 2.5 365.2-50.6 10.2 19.9 19.9 40.1 28.8 60.3-4.7 1.3-9.4 2.7-14 4.2C353.6 574.9 256.1 736.4 248 750.1c-56.7-63-91.3-146.3-91.3-237.6zM512 867.8c-82.2 0-157.9-28-218.1-75 6.4-13.1 78.3-152 278.7-221.9l2.3-.8c49.9 129.6 70.5 238.3 75.8 269.5A350.46 350.46 0 0 1 512 867.8zm198.5-60.7c-3.6-21.6-22.5-125.6-69-253.3C752.9 536 850.7 565.2 862.8 569c-15.8 98.8-72.5 184.2-152.3 238.1z")), t.DropboxOutline = l("dropbox", a, c(i, "M64 556.9l264.2 173.5L512.5 577 246.8 412.7zm896-290.3zm0 0L696.8 95 512.5 248.5l265.2 164.2L512.5 577l184.3 153.4L960 558.8 777.7 412.7zM513 609.8L328.2 763.3l-79.4-51.5v57.8L513 928l263.7-158.4v-57.8l-78.9 51.5zM328.2 95L64 265.1l182.8 147.6 265.7-164.2zM64 556.9z")), t.EllipsisOutline = l("ellipsis", a, c(i, "M176 511a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")), t.EnterOutline = l("enter", a, c(i, "M864 170h-60c-4.4 0-8 3.6-8 8v518H310v-73c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 0 0 0 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-75h498c35.3 0 64-28.7 64-64V178c0-4.4-3.6-8-8-8z")), t.EuroOutline = l("euro", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm117.7-588.6c-15.9-3.5-34.4-5.4-55.3-5.4-106.7 0-178.9 55.7-198.6 149.9H344c-4.4 0-8 3.6-8 8v27.2c0 4.4 3.6 8 8 8h26.4c-.3 4.1-.3 8.4-.3 12.8v36.9H344c-4.4 0-8 3.6-8 8V568c0 4.4 3.6 8 8 8h30.2c17.2 99.2 90.4 158 200.2 158 20.9 0 39.4-1.7 55.3-5.1 3.7-.8 6.4-4 6.4-7.8v-42.8c0-5-4.6-8.8-9.5-7.8-14.7 2.8-31.9 4.1-51.8 4.1-68.5 0-114.5-36.6-129.8-98.6h130.6c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H439.2v-36c0-4.7 0-9.4.3-13.8h135.9c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H447.1c17.2-56.9 62.3-90.4 127.6-90.4 19.9 0 37.1 1.5 51.7 4.4a8 8 0 0 0 9.6-7.8v-42.8c0-3.8-2.6-7-6.3-7.8z")), t.ExceptionOutline = l("exception", a, c(i, "M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm376 116c-119.3 0-216 96.7-216 216s96.7 216 216 216 216-96.7 216-216-96.7-216-216-216zm107.5 323.5C750.8 868.2 712.6 884 672 884s-78.8-15.8-107.5-44.5C535.8 810.8 520 772.6 520 732s15.8-78.8 44.5-107.5C593.2 595.8 631.4 580 672 580s78.8 15.8 107.5 44.5C808.2 653.2 824 691.4 824 732s-15.8 78.8-44.5 107.5zM640 812a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm12-64h40c4.4 0 8-3.6 8-8V628c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v112c0 4.4 3.6 8 8 8zM440 852H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.ExclamationOutline = l("exclamation", a, c(i, "M448 804a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm32-168h64c4.4 0 8-3.6 8-8V164c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z")), t.ExportOutline = l("export", a, c(i, "M888.3 757.4h-53.8c-4.2 0-7.7 3.5-7.7 7.7v61.8H197.1V197.1h629.8v61.8c0 4.2 3.5 7.7 7.7 7.7h53.8c4.2 0 7.7-3.4 7.7-7.7V158.7c0-17-13.7-30.7-30.7-30.7H158.7c-17 0-30.7 13.7-30.7 30.7v706.6c0 17 13.7 30.7 30.7 30.7h706.6c17 0 30.7-13.7 30.7-30.7V765.1c0-4.3-3.5-7.7-7.7-7.7zm18.6-251.7L765 393.7c-5.3-4.2-13-.4-13 6.3v76H438c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112a8 8 0 0 0 0-12.6z")), t.FallOutline = l("fall", a, c(i, "M925.9 804l-24-199.2c-.8-6.6-8.9-9.4-13.6-4.7L829 659.5 557.7 388.3c-6.3-6.2-16.4-6.2-22.6 0L433.3 490 156.6 213.3a8.03 8.03 0 0 0-11.3 0l-45 45.2a8.03 8.03 0 0 0 0 11.3L422 591.7c6.2 6.3 16.4 6.3 22.6 0L546.4 490l226.1 226-59.3 59.3a8.01 8.01 0 0 0 4.7 13.6l199.2 24c5.1.7 9.5-3.7 8.8-8.9z")), t.FileDoneOutline = l("file-done", a, c(i, "M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm376 116c-119.3 0-216 96.7-216 216s96.7 216 216 216 216-96.7 216-216-96.7-216-216-216zm107.5 323.5C750.8 868.2 712.6 884 672 884s-78.8-15.8-107.5-44.5C535.8 810.8 520 772.6 520 732s15.8-78.8 44.5-107.5C593.2 595.8 631.4 580 672 580s78.8 15.8 107.5 44.5C808.2 653.2 824 691.4 824 732s-15.8 78.8-44.5 107.5zM761 656h-44.3c-2.6 0-5 1.2-6.5 3.3l-63.5 87.8-23.1-31.9a7.92 7.92 0 0 0-6.5-3.3H573c-6.5 0-10.3 7.4-6.5 12.7l73.8 102.1c3.2 4.4 9.7 4.4 12.9 0l114.2-158c3.9-5.3.1-12.7-6.4-12.7zM440 852H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.FileSyncOutline = l("file-sync", a, c(i, "M296 256c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm192 200v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8zm-48 396H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm104.1-115.6c1.8-34.5 16.2-66.8 40.8-91.4 26.2-26.2 62-41 99.1-41 37.4 0 72.6 14.6 99.1 41 3.2 3.2 6.3 6.6 9.2 10.1L769.2 673a8 8 0 0 0 3 14.1l93.3 22.5c5 1.2 9.8-2.6 9.9-7.7l.6-95.4a8 8 0 0 0-12.9-6.4l-20.3 15.8C805.4 569.6 748.1 540 684 540c-109.9 0-199.6 86.9-204 195.7-.2 4.5 3.5 8.3 8 8.3h48.1c4.3 0 7.8-3.3 8-7.6zM880 744h-48.1c-4.3 0-7.8 3.3-8 7.6-1.8 34.5-16.2 66.8-40.8 91.4-26.2 26.2-62 41-99.1 41-37.4 0-72.6-14.6-99.1-41-3.2-3.2-6.3-6.6-9.2-10.1l23.1-17.9a8 8 0 0 0-3-14.1l-93.3-22.5c-5-1.2-9.8 2.6-9.9 7.7l-.6 95.4a8 8 0 0 0 12.9 6.4l20.3-15.8C562.6 918.4 619.9 948 684 948c109.9 0 199.6-86.9 204-195.7.2-4.5-3.5-8.3-8-8.3z")), t.FileProtectOutline = l("file-protect", a, c(i, "M644.7 669.2a7.92 7.92 0 0 0-6.5-3.3H594c-6.5 0-10.3 7.4-6.5 12.7l73.8 102.1c3.2 4.4 9.7 4.4 12.9 0l114.2-158c3.8-5.3 0-12.7-6.5-12.7h-44.3c-2.6 0-5 1.2-6.5 3.3l-63.5 87.8-22.9-31.9zM688 306v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm184 458H208V148h560v296c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h312c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm402.6-320.8l-192-66.7c-.9-.3-1.7-.4-2.6-.4s-1.8.1-2.6.4l-192 66.7a7.96 7.96 0 0 0-5.4 7.5v251.1c0 2.5 1.1 4.8 3.1 6.3l192 150.2c1.4 1.1 3.2 1.7 4.9 1.7s3.5-.6 4.9-1.7l192-150.2c1.9-1.5 3.1-3.8 3.1-6.3V538.7c0-3.4-2.2-6.4-5.4-7.5zM826 763.7L688 871.6 550 763.7V577l138-48 138 48v186.7z")), t.FileSearchOutline = l("file-search", a, c(i, "M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm144 452H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm445.7 51.5l-93.3-93.3C814.7 780.7 828 743.9 828 704c0-97.2-78.8-176-176-176s-176 78.8-176 176 78.8 176 176 176c35.8 0 69-10.7 96.8-29l94.7 94.7c1.6 1.6 3.6 2.3 5.6 2.3s4.1-.8 5.6-2.3l31-31a7.9 7.9 0 0 0 0-11.2zM652 816c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z")), t.FileJpgOutline = l("file-jpg", a, c(r, "M874.6 301.8L596.8 21.3c-4.5-4.5-9.4-8.3-14.7-11.5-1.4-.8-2.8-1.6-4.3-2.3-.9-.5-1.9-.9-2.8-1.3-9-4-18.9-6.2-29-6.2H201c-39.8 0-73 32.2-73 72v880c0 39.8 33.2 72 73 72h623c39.8 0 71-32.2 71-72V352.5c0-19-7-37.2-20.4-50.7zM583 110.4L783.8 312H583V110.4zM823 952H200V72h311v240c0 39.8 33.2 72 73 72h239v568zM350 696.5c0 24.2-7.5 31.4-21.9 31.4-9 0-18.4-5.8-24.8-18.5L272.9 732c13.4 22.9 32.3 34.2 61.3 34.2 41.6 0 60.8-29.9 60.8-66.2V577h-45v119.5zM501.3 577H437v186h44v-62h21.6c39.1 0 73.1-19.6 73.1-63.6 0-45.8-33.5-60.4-74.4-60.4zm-.8 89H481v-53h18.2c21.5 0 33.4 6.2 33.4 24.9 0 18.1-10.5 28.1-32.1 28.1zm182.5-9v36h30v30.1c-4 2.9-11 4.7-17.7 4.7-34.3 0-50.7-21.4-50.7-58.2 0-36.1 19.7-57.4 47.1-57.4 15.3 0 25 6.2 34 14.4l23.7-28.3c-12.7-12.8-32.1-24.2-59.2-24.2-49.6 0-91.1 35.3-91.1 97 0 62.7 40 95.1 91.5 95.1 25.9 0 49.2-10.2 61.5-22.6V657H683z")), t.FontColorsOutline = l("font-colors", a, c(i, "M904 816H120c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8zm-650.3-80h85c4.2 0 8-2.7 9.3-6.8l53.7-166h219.2l53.2 166c1.3 4 5 6.8 9.3 6.8h89.1c1.1 0 2.2-.2 3.2-.5a9.7 9.7 0 0 0 6-12.4L573.6 118.6a9.9 9.9 0 0 0-9.2-6.6H462.1c-4.2 0-7.9 2.6-9.2 6.6L244.5 723.1c-.4 1-.5 2.1-.5 3.2-.1 5.3 4.3 9.7 9.7 9.7zm255.9-516.1h4.1l83.8 263.8H424.9l84.7-263.8z")), t.FontSizeOutline = l("font-size", a, c(i, "M920 416H616c-4.4 0-8 3.6-8 8v112c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-56h60v320h-46c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h164c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-46V480h60v56c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V424c0-4.4-3.6-8-8-8zM656 296V168c0-4.4-3.6-8-8-8H104c-4.4 0-8 3.6-8 8v128c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-64h168v560h-92c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-92V232h168v64c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8z")), t.ForkOutline = l("fork", a, c(i, "M752 100c-61.8 0-112 50.2-112 112 0 47.7 29.9 88.5 72 104.6v27.6L512 601.4 312 344.2v-27.6c42.1-16.1 72-56.9 72-104.6 0-61.8-50.2-112-112-112s-112 50.2-112 112c0 50.6 33.8 93.5 80 107.3v34.4c0 9.7 3.3 19.3 9.3 27L476 672.3v33.6c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1v-33.6l226.7-291.6c6-7.7 9.3-17.3 9.3-27v-34.4c46.2-13.8 80-56.7 80-107.3 0-61.8-50.2-112-112-112zM224 212a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm336 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm192-552a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z")), t.FormOutline = l("form", a, c(i, "M904 512h-56c-4.4 0-8 3.6-8 8v320H184V184h320c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V520c0-4.4-3.6-8-8-8z", "M355.9 534.9L354 653.8c-.1 8.9 7.1 16.2 16 16.2h.4l118-2.9c2-.1 4-.9 5.4-2.3l415.9-415c3.1-3.1 3.1-8.2 0-11.3L785.4 114.3c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-415.8 415a8.3 8.3 0 0 0-2.3 5.6zm63.5 23.6L779.7 199l45.2 45.1-360.5 359.7-45.7 1.1.7-46.4z")), t.FullscreenExitOutline = l("fullscreen-exit", a, c(i, "M391 240.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3a8.03 8.03 0 0 0-11.3 0l-42.4 42.3a8.03 8.03 0 0 0 0 11.3L280 333.6l-43.9 43.9a8.01 8.01 0 0 0 4.7 13.6L401 410c5.1.6 9.5-3.7 8.9-8.9L391 240.9zm10.1 373.2L240.8 633c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824a8.03 8.03 0 0 0 0 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7A8.01 8.01 0 0 0 391 783l18.9-160.1c.6-5.1-3.7-9.4-8.8-8.8zm221.8-204.2L783.2 391c6.6-.8 9.4-8.9 4.7-13.6L744 333.6 877.7 200c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.3a8.03 8.03 0 0 0-11.3 0L690.3 279.9l-43.7-43.7a8.01 8.01 0 0 0-13.6 4.7L614.1 401c-.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9a8.01 8.01 0 0 0-4.7-13.6L623 614c-5.1-.6-9.5 3.7-8.9 8.9L633 783.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z")), t.FullscreenOutline = l("fullscreen", a, c(i, "M290 236.4l43.9-43.9a8.01 8.01 0 0 0-4.7-13.6L169 160c-5.1-.6-9.5 3.7-8.9 8.9L179 329.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zm352.7 187.3c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7a8.01 8.01 0 0 0 13.6-4.7L863.9 169c.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370a8.03 8.03 0 0 0 0 11.3l42.4 42.4zM845 694.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3a8.03 8.03 0 0 0-11.3 0l-42.4 42.3a8.03 8.03 0 0 0 0 11.3L734 787.6l-43.9 43.9a8.01 8.01 0 0 0 4.7 13.6L855 864c5.1.6 9.5-3.7 8.9-8.9L845 694.9zm-463.7-94.6a8.03 8.03 0 0 0-11.3 0L236.3 733.9l-43.7-43.7a8.01 8.01 0 0 0-13.6 4.7L160.1 855c-.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z")), t.GatewayOutline = l("gateway", a, c(i, "M928 392c8.8 0 16-7.2 16-16V192c0-8.8-7.2-16-16-16H744c-8.8 0-16 7.2-16 16v56H296v-56c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16v184c0 8.8 7.2 16 16 16h56v240H96c-8.8 0-16 7.2-16 16v184c0 8.8 7.2 16 16 16h184c8.8 0 16-7.2 16-16v-56h432v56c0 8.8 7.2 16 16 16h184c8.8 0 16-7.2 16-16V648c0-8.8-7.2-16-16-16h-56V392h56zM792 240h88v88h-88v-88zm-648 88v-88h88v88h-88zm88 456h-88v-88h88v88zm648-88v88h-88v-88h88zm-80-64h-56c-8.8 0-16 7.2-16 16v56H296v-56c0-8.8-7.2-16-16-16h-56V392h56c8.8 0 16-7.2 16-16v-56h432v56c0 8.8 7.2 16 16 16h56v240z")), t.DownOutline = l("down", a, c(i, "M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z")), t.DragOutline = l("drag", a, c(i, "M909.3 506.3L781.7 405.6a7.23 7.23 0 0 0-11.7 5.7V476H548V254h64.8c6 0 9.4-7 5.7-11.7L517.7 114.7a7.14 7.14 0 0 0-11.3 0L405.6 242.3a7.23 7.23 0 0 0 5.7 11.7H476v222H254v-64.8c0-6-7-9.4-11.7-5.7L114.7 506.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V548h222v222h-64.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V548h222v64.8c0 6 7 9.4 11.7 5.7l127.5-100.8a7.3 7.3 0 0 0 .1-11.4z")), t.GlobalOutline = l("global", a, c(i, "M854.4 800.9c.2-.3.5-.6.7-.9C920.6 722.1 960 621.7 960 512s-39.4-210.1-104.8-288c-.2-.3-.5-.5-.7-.8-1.1-1.3-2.1-2.5-3.2-3.7-.4-.5-.8-.9-1.2-1.4l-4.1-4.7-.1-.1c-1.5-1.7-3.1-3.4-4.6-5.1l-.1-.1c-3.2-3.4-6.4-6.8-9.7-10.1l-.1-.1-4.8-4.8-.3-.3c-1.5-1.5-3-2.9-4.5-4.3-.5-.5-1-1-1.6-1.5-1-1-2-1.9-3-2.8-.3-.3-.7-.6-1-1C736.4 109.2 629.5 64 512 64s-224.4 45.2-304.3 119.2c-.3.3-.7.6-1 1-1 .9-2 1.9-3 2.9-.5.5-1 1-1.6 1.5-1.5 1.4-3 2.9-4.5 4.3l-.3.3-4.8 4.8-.1.1c-3.3 3.3-6.5 6.7-9.7 10.1l-.1.1c-1.6 1.7-3.1 3.4-4.6 5.1l-.1.1c-1.4 1.5-2.8 3.1-4.1 4.7-.4.5-.8.9-1.2 1.4-1.1 1.2-2.1 2.5-3.2 3.7-.2.3-.5.5-.7.8C103.4 301.9 64 402.3 64 512s39.4 210.1 104.8 288c.2.3.5.6.7.9l3.1 3.7c.4.5.8.9 1.2 1.4l4.1 4.7c0 .1.1.1.1.2 1.5 1.7 3 3.4 4.6 5l.1.1c3.2 3.4 6.4 6.8 9.6 10.1l.1.1c1.6 1.6 3.1 3.2 4.7 4.7l.3.3c3.3 3.3 6.7 6.5 10.1 9.6 80.1 74 187 119.2 304.5 119.2s224.4-45.2 304.3-119.2a300 300 0 0 0 10-9.6l.3-.3c1.6-1.6 3.2-3.1 4.7-4.7l.1-.1c3.3-3.3 6.5-6.7 9.6-10.1l.1-.1c1.5-1.7 3.1-3.3 4.6-5 0-.1.1-.1.1-.2 1.4-1.5 2.8-3.1 4.1-4.7.4-.5.8-.9 1.2-1.4a99 99 0 0 0 3.3-3.7zm4.1-142.6c-13.8 32.6-32 62.8-54.2 90.2a444.07 444.07 0 0 0-81.5-55.9c11.6-46.9 18.8-98.4 20.7-152.6H887c-3 40.9-12.6 80.6-28.5 118.3zM887 484H743.5c-1.9-54.2-9.1-105.7-20.7-152.6 29.3-15.6 56.6-34.4 81.5-55.9A373.86 373.86 0 0 1 887 484zM658.3 165.5c39.7 16.8 75.8 40 107.6 69.2a394.72 394.72 0 0 1-59.4 41.8c-15.7-45-35.8-84.1-59.2-115.4 3.7 1.4 7.4 2.9 11 4.4zm-90.6 700.6c-9.2 7.2-18.4 12.7-27.7 16.4V697a389.1 389.1 0 0 1 115.7 26.2c-8.3 24.6-17.9 47.3-29 67.8-17.4 32.4-37.8 58.3-59 75.1zm59-633.1c11 20.6 20.7 43.3 29 67.8A389.1 389.1 0 0 1 540 327V141.6c9.2 3.7 18.5 9.1 27.7 16.4 21.2 16.7 41.6 42.6 59 75zM540 640.9V540h147.5c-1.6 44.2-7.1 87.1-16.3 127.8l-.3 1.2A445.02 445.02 0 0 0 540 640.9zm0-156.9V383.1c45.8-2.8 89.8-12.5 130.9-28.1l.3 1.2c9.2 40.7 14.7 83.5 16.3 127.8H540zm-56 56v100.9c-45.8 2.8-89.8 12.5-130.9 28.1l-.3-1.2c-9.2-40.7-14.7-83.5-16.3-127.8H484zm-147.5-56c1.6-44.2 7.1-87.1 16.3-127.8l.3-1.2c41.1 15.6 85 25.3 130.9 28.1V484H336.5zM484 697v185.4c-9.2-3.7-18.5-9.1-27.7-16.4-21.2-16.7-41.7-42.7-59.1-75.1-11-20.6-20.7-43.3-29-67.8 37.2-14.6 75.9-23.3 115.8-26.1zm0-370a389.1 389.1 0 0 1-115.7-26.2c8.3-24.6 17.9-47.3 29-67.8 17.4-32.4 37.8-58.4 59.1-75.1 9.2-7.2 18.4-12.7 27.7-16.4V327zM365.7 165.5c3.7-1.5 7.3-3 11-4.4-23.4 31.3-43.5 70.4-59.2 115.4-21-12-40.9-26-59.4-41.8 31.8-29.2 67.9-52.4 107.6-69.2zM165.5 365.7c13.8-32.6 32-62.8 54.2-90.2 24.9 21.5 52.2 40.3 81.5 55.9-11.6 46.9-18.8 98.4-20.7 152.6H137c3-40.9 12.6-80.6 28.5-118.3zM137 540h143.5c1.9 54.2 9.1 105.7 20.7 152.6a444.07 444.07 0 0 0-81.5 55.9A373.86 373.86 0 0 1 137 540zm228.7 318.5c-39.7-16.8-75.8-40-107.6-69.2 18.5-15.8 38.4-29.7 59.4-41.8 15.7 45 35.8 84.1 59.2 115.4-3.7-1.4-7.4-2.9-11-4.4zm292.6 0c-3.7 1.5-7.3 3-11 4.4 23.4-31.3 43.5-70.4 59.2-115.4 21 12 40.9 26 59.4 41.8a373.81 373.81 0 0 1-107.6 69.2z")), t.GooglePlusOutline = l("google-plus", a, c(i, "M879.5 470.4c-.3-27-.4-54.2-.5-81.3h-80.8c-.3 27-.5 54.1-.7 81.3-27.2.1-54.2.3-81.2.6v80.9c27 .3 54.2.5 81.2.8.3 27 .3 54.1.5 81.1h80.9c.1-27 .3-54.1.5-81.3 27.2-.3 54.2-.4 81.2-.7v-80.9c-26.9-.2-54.1-.2-81.1-.5zm-530 .4c-.1 32.3 0 64.7.1 97 54.2 1.8 108.5 1 162.7 1.8-23.9 120.3-187.4 159.3-273.9 80.7-89-68.9-84.8-220 7.7-284 64.7-51.6 156.6-38.9 221.3 5.8 25.4-23.5 49.2-48.7 72.1-74.7-53.8-42.9-119.8-73.5-190-70.3-146.6-4.9-281.3 123.5-283.7 270.2-9.4 119.9 69.4 237.4 180.6 279.8 110.8 42.7 252.9 13.6 323.7-86 46.7-62.9 56.8-143.9 51.3-220-90.7-.7-181.3-.6-271.9-.3z")), t.GoogleOutline = l("google", a, c(i, "M881 442.4H519.7v148.5h206.4c-8.9 48-35.9 88.6-76.6 115.8-34.4 23-78.3 36.6-129.9 36.6-99.9 0-184.4-67.5-214.6-158.2-7.6-23-12-47.6-12-72.9s4.4-49.9 12-72.9c30.3-90.6 114.8-158.1 214.7-158.1 56.3 0 106.8 19.4 146.6 57.4l110-110.1c-66.5-62-153.2-100-256.6-100-149.9 0-279.6 86-342.7 211.4-26 51.8-40.8 110.4-40.8 172.4S151 632.8 177 684.6C240.1 810 369.8 896 519.7 896c103.6 0 190.4-34.4 253.8-93 72.5-66.8 114.4-165.2 114.4-282.1 0-27.2-2.4-53.3-6.9-78.5z")), t.HeatMapOutline = l("heat-map", a, c(i, "M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-790.4-23.9L512 231.9 858.7 832H165.3zm319-474.1l-228 394c-12.3 21.3 3.1 48 27.7 48h455.8c24.7 0 40.1-26.7 27.7-48L539.7 358c-6.2-10.7-17-16-27.7-16-10.8 0-21.6 5.3-27.7 16zm214 386H325.7L512 422l186.3 322zm-214-194.1l-57 98.4C415 669.5 430.4 696 455 696h114c24.6 0 39.9-26.5 27.7-47.7l-57-98.4c-6.1-10.6-16.9-15.9-27.7-15.9s-21.5 5.3-27.7 15.9zm57.1 98.4h-58.7l29.4-50.7 29.3 50.7z")), t.GoldOutline = l("gold", a, c(i, "M342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8zm91.2-196h159.5l20.7 128h-201l20.8-128zm2.5 282.7c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM196.5 748l20.7-128h159.5l20.7 128H196.5zm709.4 58.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zM626.5 748l20.7-128h159.5l20.7 128H626.5z")), t.HistoryOutline = l("history", a, c(i, "M536.1 273H488c-4.4 0-8 3.6-8 8v275.3c0 2.6 1.2 5 3.3 6.5l165.3 120.7c3.6 2.6 8.6 1.9 11.2-1.7l28.6-39c2.7-3.7 1.9-8.7-1.7-11.2L544.1 528.5V281c0-4.4-3.6-8-8-8zm219.8 75.2l156.8 38.3c5 1.2 9.9-2.6 9.9-7.7l.8-161.5c0-6.7-7.7-10.5-12.9-6.3L752.9 334.1a8 8 0 0 0 3 14.1zm167.7 301.1l-56.7-19.5a8 8 0 0 0-10.1 4.8c-1.9 5.1-3.9 10.1-6 15.1-17.8 42.1-43.3 80-75.9 112.5a353 353 0 0 1-112.5 75.9 352.18 352.18 0 0 1-137.7 27.8c-47.8 0-94.1-9.3-137.7-27.8a353 353 0 0 1-112.5-75.9c-32.5-32.5-58-70.4-75.9-112.5A353.44 353.44 0 0 1 171 512c0-47.8 9.3-94.2 27.8-137.8 17.8-42.1 43.3-80 75.9-112.5a353 353 0 0 1 112.5-75.9C430.6 167.3 477 158 524.8 158s94.1 9.3 137.7 27.8A353 353 0 0 1 775 261.7c10.2 10.3 19.8 21 28.6 32.3l59.8-46.8C784.7 146.6 662.2 81.9 524.6 82 285 82.1 92.6 276.7 95 516.4 97.4 751.9 288.9 942 524.8 942c185.5 0 343.5-117.6 403.7-282.3 1.5-4.2-.7-8.9-4.9-10.4z")), t.IeOutline = l("ie", a, c(i, "M852.6 367.6c16.3-36.9 32.1-90.7 32.1-131.8 0-109.1-119.5-147.6-314.5-57.9-161.4-10.8-316.8 110.5-355.6 279.7 46.3-52.3 117.4-123.4 183-151.7C316.1 378.3 246.7 470 194 565.6c-31.1 56.9-66 148.8-66 217.5 0 147.9 139.3 129.8 270.4 63 47.1 23.1 99.8 23.4 152.5 23.4 145.7 0 276.4-81.4 325.2-219H694.9c-78.8 132.9-295.2 79.5-295.2-71.2h493.2c9.6-65.4-2.5-143.6-40.3-211.7zM224.8 648.3c26.6 76.7 80.6 143.8 150.4 185-133.1 73.4-259.9 43.6-150.4-185zm174-163.3c3-82.7 75.4-142.3 156-142.3 80.1 0 153 59.6 156 142.3h-312zm276.8-281.4c32.1-15.4 72.8-33 108.8-33 47.1 0 81.4 32.6 81.4 80.6 0 30-11.1 73.5-21.9 101.8-39.3-63.5-98.9-122.4-168.3-149.4z")), t.InboxOutline = l("inbox", a, c(r, "M885.2 446.3l-.2-.8-112.2-285.1c-5-16.1-19.9-27.2-36.8-27.2H281.2c-17 0-32.1 11.3-36.9 27.6L139.4 443l-.3.7-.2.8c-1.3 4.9-1.7 9.9-1 14.8-.1 1.6-.2 3.2-.2 4.8V830a60.9 60.9 0 0 0 60.8 60.8h627.2c33.5 0 60.8-27.3 60.9-60.8V464.1c0-1.3 0-2.6-.1-3.7.4-4.9 0-9.6-1.3-14.1zm-295.8-43l-.3 15.7c-.8 44.9-31.8 75.1-77.1 75.1-22.1 0-41.1-7.1-54.8-20.6S436 441.2 435.6 419l-.3-15.7H229.5L309 210h399.2l81.7 193.3H589.4zm-375 76.8h157.3c24.3 57.1 76 90.8 140.4 90.8 33.7 0 65-9.4 90.3-27.2 22.2-15.6 39.5-37.4 50.7-63.6h156.5V814H214.4V480.1z")), t.ImportOutline = l("import", a, c(i, "M888.3 757.4h-53.8c-4.2 0-7.7 3.5-7.7 7.7v61.8H197.1V197.1h629.8v61.8c0 4.2 3.5 7.7 7.7 7.7h53.8c4.2 0 7.7-3.4 7.7-7.7V158.7c0-17-13.7-30.7-30.7-30.7H158.7c-17 0-30.7 13.7-30.7 30.7v706.6c0 17 13.7 30.7 30.7 30.7h706.6c17 0 30.7-13.7 30.7-30.7V765.1c0-4.3-3.5-7.7-7.7-7.7zM902 476H588v-76c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 0 0 0 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-76h314c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.InfoOutline = l("info", a, c(i, "M448 224a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm96 168h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V400c0-4.4-3.6-8-8-8z")), t.ItalicOutline = l("italic", a, c(i, "M798 160H366c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h181.2l-156 544H229c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8H474.4l156-544H798c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8z")), t.IssuesCloseOutline = l("issues-close", a, c(i, "M464 688a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72-112c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48zm400-188h-59.3c-2.6 0-5 1.2-6.5 3.3L763.7 538.1l-49.9-68.8a7.92 7.92 0 0 0-6.5-3.3H648c-6.5 0-10.3 7.4-6.5 12.7l109.2 150.7a16.1 16.1 0 0 0 26 0l165.8-228.7c3.8-5.3 0-12.7-6.5-12.7zm-44 306h-64.2c-5.5 0-10.6 2.9-13.6 7.5a352.2 352.2 0 0 1-49.8 62.2A355.92 355.92 0 0 1 651.1 840a355 355 0 0 1-138.7 27.9c-48.1 0-94.8-9.4-138.7-27.9a355.92 355.92 0 0 1-113.3-76.3A353.06 353.06 0 0 1 184 650.5c-18.6-43.8-28-90.5-28-138.5s9.4-94.7 28-138.5c17.9-42.4 43.6-80.5 76.4-113.2 32.8-32.7 70.9-58.4 113.3-76.3a355 355 0 0 1 138.7-27.9c48.1 0 94.8 9.4 138.7 27.9 42.4 17.9 80.5 43.6 113.3 76.3 19 19 35.6 39.8 49.8 62.2 2.9 4.7 8.1 7.5 13.6 7.5H892c6 0 9.8-6.3 7.2-11.6C828.8 178.5 684.7 82 517.7 80 278.9 77.2 80.5 272.5 80 511.2 79.5 750.1 273.3 944 512.4 944c169.2 0 315.6-97 386.7-238.4A8 8 0 0 0 892 694z")), t.KeyOutline = l("key", a, c(i, "M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5l-41.1 41.1-62.3-62.3a8.15 8.15 0 0 0-11.4 0l-39.8 39.8a8.15 8.15 0 0 0 0 11.4l62.3 62.3-44.9 44.9-62.3-62.3a8.15 8.15 0 0 0-11.4 0l-39.8 39.8a8.15 8.15 0 0 0 0 11.4l62.3 62.3-65.3 65.3a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6A304.06 304.06 0 0 0 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644c-60.9 0-118.2-23.7-161.2-66.8-43.1-43-66.8-100.3-66.8-161.2 0-60.9 23.7-118.2 66.8-161.2 43-43.1 100.3-66.8 161.2-66.8 60.9 0 118.2 23.7 161.2 66.8 43.1 43 66.8 100.3 66.8 161.2 0 60.9-23.7 118.2-66.8 161.2z")), t.LaptopOutline = l("laptop", a, c(i, "M956.9 845.1L896.4 632V168c0-17.7-14.3-32-32-32h-704c-17.7 0-32 14.3-32 32v464L67.9 845.1C60.4 866 75.8 888 98 888h828.8c22.2 0 37.6-22 30.1-42.9zM200.4 208h624v395h-624V208zm228.3 608l8.1-37h150.3l8.1 37H428.7zm224 0l-19.1-86.7c-.8-3.7-4.1-6.3-7.8-6.3H398.2c-3.8 0-7 2.6-7.8 6.3L371.3 816H151l42.3-149h638.2l42.3 149H652.7z")), t.LeftOutline = l("left", a, c(i, "M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 0 0 0 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z")), t.LinkOutline = l("link", a, c(i, "M574 665.4a8.03 8.03 0 0 0-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 0 0-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 0 0 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 0 0 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 0 0-11.3 0L372.3 598.7a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z")), t.LineChartOutline = l("line-chart", a, c(i, "M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM305.8 637.7c3.1 3.1 8.1 3.1 11.3 0l138.3-137.6L583 628.5c3.1 3.1 8.2 3.1 11.3 0l275.4-275.3c3.1-3.1 3.1-8.2 0-11.3l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-230 229.9L461.4 404a8.03 8.03 0 0 0-11.3 0L266.3 586.7a8.03 8.03 0 0 0 0 11.3l39.5 39.7z")), t.LineHeightOutline = l("line-height", a, c(i, "M648 160H104c-4.4 0-8 3.6-8 8v128c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-64h168v560h-92c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-92V232h168v64c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zm272.8 546H856V318h64.8c6 0 9.4-7 5.7-11.7L825.7 178.7a7.14 7.14 0 0 0-11.3 0L713.6 306.3a7.23 7.23 0 0 0 5.7 11.7H784v388h-64.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5a7.2 7.2 0 0 0-5.6-11.7z")), t.LineOutline = l("line", a, c(i, "M904 476H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.Loading3QuartersOutline = l("loading-3-quarters", a, c(r, "M512 1024c-69.1 0-136.2-13.5-199.3-40.2C251.7 958 197 921 150 874c-47-47-84-101.7-109.8-162.7C13.5 648.2 0 581.1 0 512c0-19.9 16.1-36 36-36s36 16.1 36 36c0 59.4 11.6 117 34.6 171.3 22.2 52.4 53.9 99.5 94.3 139.9 40.4 40.4 87.5 72.2 139.9 94.3C395 940.4 452.6 952 512 952c59.4 0 117-11.6 171.3-34.6 52.4-22.2 99.5-53.9 139.9-94.3 40.4-40.4 72.2-87.5 94.3-139.9C940.4 629 952 571.4 952 512c0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 0 0-94.3-139.9 437.71 437.71 0 0 0-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.2C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3s-13.5 136.2-40.2 199.3C958 772.3 921 827 874 874c-47 47-101.8 83.9-162.7 109.7-63.1 26.8-130.2 40.3-199.3 40.3z")), t.LoadingOutline = l("loading", a, c(r, "M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 0 0-94.3-139.9 437.71 437.71 0 0 0-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z")), t.LoginOutline = l("login", a, c(i, "M521.7 82c-152.5-.4-286.7 78.5-363.4 197.7-3.4 5.3.4 12.3 6.7 12.3h70.3c4.8 0 9.3-2.1 12.3-5.8 7-8.5 14.5-16.7 22.4-24.5 32.6-32.5 70.5-58.1 112.7-75.9 43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 32.6 32.5 58.1 70.4 76 112.5C865.7 417.8 875 464.1 875 512c0 47.9-9.4 94.2-27.8 137.8-17.8 42.1-43.4 80-76 112.5s-70.5 58.1-112.7 75.9A352.8 352.8 0 0 1 520.6 866c-47.9 0-94.3-9.4-137.9-27.8A353.84 353.84 0 0 1 270 762.3c-7.9-7.9-15.3-16.1-22.4-24.5-3-3.7-7.6-5.8-12.3-5.8H165c-6.3 0-10.2 7-6.7 12.3C234.9 863.2 368.5 942 520.6 942c236.2 0 428-190.1 430.4-425.6C953.4 277.1 761.3 82.6 521.7 82zM395.02 624v-76h-314c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h314v-76c0-6.7 7.8-10.5 13-6.3l141.9 112a8 8 0 0 1 0 12.6l-141.9 112c-5.2 4.1-13 .4-13-6.3z")), t.LogoutOutline = l("logout", a, c(i, "M868 732h-70.3c-4.8 0-9.3 2.1-12.3 5.8-7 8.5-14.5 16.7-22.4 24.5a353.84 353.84 0 0 1-112.7 75.9A352.8 352.8 0 0 1 512.4 866c-47.9 0-94.3-9.4-137.9-27.8a353.84 353.84 0 0 1-112.7-75.9 353.28 353.28 0 0 1-76-112.5C167.3 606.2 158 559.9 158 512s9.4-94.2 27.8-137.8c17.8-42.1 43.4-80 76-112.5s70.5-58.1 112.7-75.9c43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 7.9 7.9 15.3 16.1 22.4 24.5 3 3.7 7.6 5.8 12.3 5.8H868c6.3 0 10.2-7 6.7-12.3C798 160.5 663.8 81.6 511.3 82 271.7 82.6 79.6 277.1 82 516.4 84.4 751.9 276.2 942 512.4 942c152.1 0 285.7-78.8 362.3-197.7 3.4-5.3-.4-12.3-6.7-12.3zm88.9-226.3L815 393.7c-5.3-4.2-13-.4-13 6.3v76H488c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112a8 8 0 0 0 0-12.6z")), t.ManOutline = l("man", a, c(i, "M874 120H622c-3.3 0-6 2.7-6 6v56c0 3.3 2.7 6 6 6h160.4L583.1 387.3c-50-38.5-111-59.3-175.1-59.3-76.9 0-149.3 30-203.6 84.4S120 539.1 120 616s30 149.3 84.4 203.6C258.7 874 331.1 904 408 904s149.3-30 203.6-84.4C666 765.3 696 692.9 696 616c0-64.1-20.8-124.9-59.2-174.9L836 241.9V402c0 3.3 2.7 6 6 6h56c3.3 0 6-2.7 6-6V150c0-16.5-13.5-30-30-30zM408 828c-116.9 0-212-95.1-212-212s95.1-212 212-212 212 95.1 212 212-95.1 212-212 212z")), t.MediumOutline = l("medium", a, c(i, "M834.7 279.8l61.3-58.9V208H683.7L532.4 586.4 360.3 208H137.7v12.9l71.6 86.6c7 6.4 10.6 15.8 9.7 25.2V673c2.2 12.3-1.7 24.8-10.3 33.7L128 805v12.7h228.6v-12.9l-80.6-98a39.99 39.99 0 0 1-11.1-33.7V378.7l200.7 439.2h23.3l172.6-439.2v349.9c0 9.2 0 11.1-6 17.2l-62.1 60.3V819h301.2v-12.9l-59.9-58.9c-5.2-4-7.9-10.7-6.8-17.2V297a18.1 18.1 0 0 1 6.8-17.2z")), t.MediumWorkmarkOutline = l("medium-workmark", a, c(r, "M517.2 590.55c0 3.55 0 4.36 2.4 6.55l13.43 13.25v.57h-59.57v-25.47a41.44 41.44 0 0 1-39.5 27.65c-30.61 0-52.84-24.25-52.84-68.87 0-41.8 23.99-69.69 57.65-69.69a35.15 35.15 0 0 1 34.61 21.67v-56.19a6.99 6.99 0 0 0-2.71-6.79l-12.8-12.45v-.56l59.33-7.04v177.37zm-43.74-8.09v-83.83a22.2 22.2 0 0 0-17.74-8.4c-14.48 0-28.47 13.25-28.47 52.62 0 36.86 12.07 49.88 27.1 49.88a23.91 23.91 0 0 0 19.11-10.27zm83.23 28.46V497.74a7.65 7.65 0 0 0-2.4-6.79l-13.19-13.74v-.57h59.56v114.8c0 3.55 0 4.36 2.4 6.54l13.12 12.45v.57l-59.49-.08zm-2.16-175.67c0-13.4 10.74-24.25 23.99-24.25 13.25 0 23.98 10.86 23.98 24.25 0 13.4-10.73 24.25-23.98 24.25s-23.99-10.85-23.99-24.25zm206.83 155.06c0 3.55 0 4.6 2.4 6.79l13.43 13.25v.57h-59.88V581.9a43.4 43.4 0 0 1-41.01 31.2c-26.55 0-40.78-19.56-40.78-56.59 0-17.86 0-37.43.56-59.41a6.91 6.91 0 0 0-2.4-6.55L620.5 477.2v-.57h59.09v73.81c0 24.25 3.51 40.42 18.54 40.42a23.96 23.96 0 0 0 19.35-12.2v-80.85a7.65 7.65 0 0 0-2.4-6.79l-13.27-13.82v-.57h59.56V590.3zm202.76 20.6c0-4.36.8-59.97.8-72.75 0-24.25-3.76-40.98-20.63-40.98a26.7 26.7 0 0 0-21.19 11.64 99.68 99.68 0 0 1 2.4 23.04c0 16.81-.56 38.23-.8 59.66a6.91 6.91 0 0 0 2.4 6.55l13.43 12.45v.56h-60.12c0-4.04.8-59.98.8-72.76 0-24.65-3.76-40.98-20.39-40.98-8.2.3-15.68 4.8-19.83 11.96v82.46c0 3.56 0 4.37 2.4 6.55l13.11 12.45v.56h-59.48V498.15a7.65 7.65 0 0 0-2.4-6.8l-13.19-14.14v-.57H841v28.78c5.53-19 23.13-31.76 42.7-30.96 19.82 0 33.26 11.16 38.93 32.34a46.41 46.41 0 0 1 44.77-32.34c26.55 0 41.58 19.8 41.58 57.23 0 17.87-.56 38.24-.8 59.66a6.5 6.5 0 0 0 2.72 6.55l13.11 12.45v.57h-59.88zM215.87 593.3l17.66 17.05v.57h-89.62v-.57l17.99-17.05a6.91 6.91 0 0 0 2.4-6.55V477.69c0-4.6 0-10.83.8-16.16L104.66 613.1h-.72l-62.6-139.45c-1.37-3.47-1.77-3.72-2.65-6.06v91.43a32.08 32.08 0 0 0 2.96 17.87l25.19 33.46v.57H0v-.57l25.18-33.55a32.16 32.16 0 0 0 2.96-17.78V457.97A19.71 19.71 0 0 0 24 444.15L6.16 420.78v-.56h63.96l53.56 118.1 47.17-118.1h62.6v.56l-17.58 19.8a6.99 6.99 0 0 0-2.72 6.8v139.37a6.5 6.5 0 0 0 2.72 6.55zm70.11-54.65v.56c0 34.6 17.67 48.5 38.38 48.5a43.5 43.5 0 0 0 40.77-24.97h.56c-7.2 34.2-28.14 50.36-59.48 50.36-33.82 0-65.72-20.61-65.72-68.39 0-50.2 31.98-70.25 67.32-70.25 28.46 0 58.76 13.58 58.76 57.24v6.95h-80.59zm0-6.95h39.42v-7.04c0-35.57-7.28-45.03-18.23-45.03-13.27 0-21.35 14.15-21.35 52.07h.16z")), t.MenuUnfoldOutline = l("menu-unfold", a, c(i, "M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z")), t.MenuFoldOutline = l("menu-fold", a, c(i, "M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z")), t.MenuOutline = l("menu", a, c(i, "M904 160H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8zm0 624H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8zm0-312H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8z")), t.MinusOutline = l("minus", a, c(i, "M872 474H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")), t.MonitorOutline = l("monitor", a, c(i, "M692.8 412.7l.2-.2-34.6-44.3a7.97 7.97 0 0 0-11.2-1.4l-50.4 39.3-70.5-90.1a7.97 7.97 0 0 0-11.2-1.4l-37.9 29.7a7.97 7.97 0 0 0-1.4 11.2l70.5 90.2-.2.1 34.6 44.3c2.7 3.5 7.7 4.1 11.2 1.4l50.4-39.3 64.1 82c2.7 3.5 7.7 4.1 11.2 1.4l37.9-29.6c3.5-2.7 4.1-7.7 1.4-11.2l-64.1-82.1zM608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z")), t.MoreOutline = l("more", a, c(i, "M456 231a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 280a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 280a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")), t.OrderedListOutline = l("ordered-list", a, c(i, "M920 760H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-568H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM216 712H100c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h72.4v20.5h-35.7c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h35.7V838H100c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h116c2.2 0 4-1.8 4-4V716c0-2.2-1.8-4-4-4zM100 188h38v120c0 2.2 1.8 4 4 4h40c2.2 0 4-1.8 4-4V152c0-4.4-3.6-8-8-8h-78c-2.2 0-4 1.8-4 4v36c0 2.2 1.8 4 4 4zm116 240H100c-2.2 0-4 1.8-4 4v36c0 2.2 1.8 4 4 4h68.4l-70.3 77.7a8.3 8.3 0 0 0-2.1 5.4V592c0 2.2 1.8 4 4 4h116c2.2 0 4-1.8 4-4v-36c0-2.2-1.8-4-4-4h-68.4l70.3-77.7a8.3 8.3 0 0 0 2.1-5.4V432c0-2.2-1.8-4-4-4z")), t.NumberOutline = l("number", a, c(i, "M872 394c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H708V152c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v166H400V152c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v166H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h168v236H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h168v166c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V706h228v166c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V706h164c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H708V394h164zM628 630H400V394h228v236z")), t.PauseOutline = l("pause", a, c(i, "M304 176h80v672h-80zm408 0h-64c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8z")), t.PercentageOutline = l("percentage", a, c(i, "M855.7 210.8l-42.4-42.4a8.03 8.03 0 0 0-11.3 0L168.3 801.9a8.03 8.03 0 0 0 0 11.3l42.4 42.4c3.1 3.1 8.2 3.1 11.3 0L855.6 222c3.2-3 3.2-8.1.1-11.2zM304 448c79.4 0 144-64.6 144-144s-64.6-144-144-144-144 64.6-144 144 64.6 144 144 144zm0-216c39.7 0 72 32.3 72 72s-32.3 72-72 72-72-32.3-72-72 32.3-72 72-72zm416 344c-79.4 0-144 64.6-144 144s64.6 144 144 144 144-64.6 144-144-64.6-144-144-144zm0 216c-39.7 0-72-32.3-72-72s32.3-72 72-72 72 32.3 72 72-32.3 72-72 72z")), t.PaperClipOutline = l("paper-clip", a, c(i, "M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0 0 12.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0 0 12.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 0 0 174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z")), t.PicCenterOutline = l("pic-center", a, c(i, "M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM848 660c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h672zM232 436h560v152H232V436z")), t.PicLeftOutline = l("pic-left", a, c(i, "M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM608 660c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h512zM152 436h400v152H152V436zm552 210c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H712c-4.4 0-8 3.6-8 8v56zm8-204h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H712c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")), t.PlusOutline = l("plus", a, c(i, "M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z", "M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z")), t.PicRightOutline = l("pic-right", a, c(i, "M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-24 500c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H416c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h512zM472 436h400v152H472V436zM80 646c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H88c-4.4 0-8 3.6-8 8v56zm8-204h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H88c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z")), t.PoundOutline = l("pound", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm138-209.8H469.8v-4.7c27.4-17.2 43.9-50.4 43.9-91.1 0-14.1-2.2-27.9-5.3-41H607c4.4 0 8-3.6 8-8v-30c0-4.4-3.6-8-8-8H495c-7.2-22.6-13.4-45.7-13.4-70.5 0-43.5 34-70.2 87.3-70.2 21.5 0 42.5 4.1 60.4 10.5 5.2 1.9 10.6-2 10.6-7.6v-39.5c0-3.3-2.1-6.3-5.2-7.5-18.8-7.2-43.8-12.7-70.3-12.7-92.9 0-151.5 44.5-151.5 120.3 0 26.3 6.9 52 14.6 77.1H374c-4.4 0-8 3.6-8 8v30c0 4.4 3.6 8 8 8h67.1c3.4 14.7 5.9 29.4 5.9 44.2 0 45.2-28.8 83.3-72.8 94.2-3.6.9-6.1 4.1-6.1 7.8V722c0 4.4 3.6 8 8 8H650c4.4 0 8-3.6 8-8v-39.8c0-4.4-3.6-8-8-8z")), t.PoweroffOutline = l("poweroff", a, c(i, "M705.6 124.9a8 8 0 0 0-11.6 7.2v64.2c0 5.5 2.9 10.6 7.5 13.6a352.2 352.2 0 0 1 62.2 49.8c32.7 32.8 58.4 70.9 76.3 113.3a355 355 0 0 1 27.9 138.7c0 48.1-9.4 94.8-27.9 138.7a355.92 355.92 0 0 1-76.3 113.3 353.06 353.06 0 0 1-113.2 76.4c-43.8 18.6-90.5 28-138.5 28s-94.7-9.4-138.5-28a353.06 353.06 0 0 1-113.2-76.4A355.92 355.92 0 0 1 184 650.4a355 355 0 0 1-27.9-138.7c0-48.1 9.4-94.8 27.9-138.7 17.9-42.4 43.6-80.5 76.3-113.3 19-19 39.8-35.6 62.2-49.8 4.7-2.9 7.5-8.1 7.5-13.6V132c0-6-6.3-9.8-11.6-7.2C178.5 195.2 82 339.3 80 506.3 77.2 745.1 272.5 943.5 511.2 944c239 .5 432.8-193.3 432.8-432.4 0-169.2-97-315.7-238.4-386.7zM480 560h64c4.4 0 8-3.6 8-8V88c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z")), t.PullRequestOutline = l("pull-request", a, c(i, "M788 705.9V192c0-8.8-7.2-16-16-16H602v-68.8c0-6-7-9.4-11.7-5.7L462.7 202.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V240h114v465.9c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c.1-49.2-31.7-91-75.9-106.1zM752 860a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zM384 212c0-61.8-50.2-112-112-112s-112 50.2-112 112c0 49.2 31.8 91 76 106.1V706c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1V318.1c44.2-15.1 76-56.9 76-106.1zm-160 0a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm96 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0z")), t.QqOutline = l("qq", a, c(i, "M824.8 613.2c-16-51.4-34.4-94.6-62.7-165.3C766.5 262.2 689.3 112 511.5 112 331.7 112 256.2 265.2 261 447.9c-28.4 70.8-46.7 113.7-62.7 165.3-34 109.5-23 154.8-14.6 155.8 18 2.2 70.1-82.4 70.1-82.4 0 49 25.2 112.9 79.8 159-26.4 8.1-85.7 29.9-71.6 53.8 11.4 19.3 196.2 12.3 249.5 6.3 53.3 6 238.1 13 249.5-6.3 14.1-23.8-45.3-45.7-71.6-53.8 54.6-46.2 79.8-110.1 79.8-159 0 0 52.1 84.6 70.1 82.4 8.5-1.1 19.5-46.4-14.5-155.8z")), t.QuestionOutline = l("question", a, c(i, "M764 280.9c-14-30.6-33.9-58.1-59.3-81.6C653.1 151.4 584.6 125 512 125s-141.1 26.4-192.7 74.2c-25.4 23.6-45.3 51-59.3 81.7-14.6 32-22 65.9-22 100.9v27c0 6.2 5 11.2 11.2 11.2h54c6.2 0 11.2-5 11.2-11.2v-27c0-99.5 88.6-180.4 197.6-180.4s197.6 80.9 197.6 180.4c0 40.8-14.5 79.2-42 111.2-27.2 31.7-65.6 54.4-108.1 64-24.3 5.5-46.2 19.2-61.7 38.8a110.85 110.85 0 0 0-23.9 68.6v31.4c0 6.2 5 11.2 11.2 11.2h54c6.2 0 11.2-5 11.2-11.2v-31.4c0-15.7 10.9-29.5 26-32.9 58.4-13.2 111.4-44.7 149.3-88.7 19.1-22.3 34-47.1 44.3-74 10.7-27.9 16.1-57.2 16.1-87 0-35-7.4-69-22-100.9zM512 787c-30.9 0-56 25.1-56 56s25.1 56 56 56 56-25.1 56-56-25.1-56-56-56z")), t.RadarChartOutline = l("radar-chart", a, c(i, "M926.8 397.1l-396-288a31.81 31.81 0 0 0-37.6 0l-396 288a31.99 31.99 0 0 0-11.6 35.8l151.3 466a32 32 0 0 0 30.4 22.1h489.5c13.9 0 26.1-8.9 30.4-22.1l151.3-466c4.2-13.2-.5-27.6-11.7-35.8zM838.6 417l-98.5 32-200-144.7V199.9L838.6 417zM466 567.2l-89.1 122.3-55.2-169.2L466 567.2zm-116.3-96.8L484 373.3v140.8l-134.3-43.7zM512 599.2l93.9 128.9H418.1L512 599.2zm28.1-225.9l134.2 97.1L540.1 514V373.3zM558 567.2l144.3-46.9-55.2 169.2L558 567.2zm-74-367.3v104.4L283.9 449l-98.5-32L484 199.9zM169.3 470.8l86.5 28.1 80.4 246.4-53.8 73.9-113.1-348.4zM327.1 853l50.3-69h269.3l50.3 69H327.1zm414.5-33.8l-53.8-73.9 80.4-246.4 86.5-28.1-113.1 348.4z")), t.QrcodeOutline = l("qrcode", a, c(i, "M468 128H160c-17.7 0-32 14.3-32 32v308c0 4.4 3.6 8 8 8h332c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8zm-56 284H192V192h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm194 210H136c-4.4 0-8 3.6-8 8v308c0 17.7 14.3 32 32 32h308c4.4 0 8-3.6 8-8V556c0-4.4-3.6-8-8-8zm-56 284H192V612h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm590-630H556c-4.4 0-8 3.6-8 8v332c0 4.4 3.6 8 8 8h332c4.4 0 8-3.6 8-8V160c0-17.7-14.3-32-32-32zm-32 284H612V192h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm194 210h-48c-4.4 0-8 3.6-8 8v134h-78V556c0-4.4-3.6-8-8-8H556c-4.4 0-8 3.6-8 8v332c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h78v102c0 4.4 3.6 8 8 8h190c4.4 0 8-3.6 8-8V556c0-4.4-3.6-8-8-8zM746 832h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm142 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z")), t.RadiusBottomleftOutline = l("radius-bottomleft", a, c(i, "M712 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm2-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM136 374h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-174h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm752 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-230 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 624H358c-87.3 0-158-70.7-158-158V484c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v182c0 127 103 230 230 230h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.RadiusBottomrightOutline = l("radius-bottomright", a, c(i, "M368 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-58-624h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm578 102h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm292 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm174 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 276h-56c-4.4 0-8 3.6-8 8v182c0 87.3-70.7 158-158 158H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h182c127 0 230-103 230-230V484c0-4.4-3.6-8-8-8z")), t.RadiusUpleftOutline = l("radius-upleft", a, c(i, "M656 200h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm58 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 650h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm696-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-174 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm174-696H358c-127 0-230 103-230 230v182c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V358c0-87.3 70.7-158 158-158h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.RadiusUprightOutline = l("radius-upright", a, c(i, "M368 128h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-2 696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm522-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 128h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm174 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-48-696H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h182c87.3 0 158 70.7 158 158v182c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V358c0-127-103-230-230-230z")), t.RadiusSettingOutline = l("radius-setting", a, c(i, "M396 140h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-44 684h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm524-204h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 344h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm320 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm160 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm140-284c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V370c0-127-103-230-230-230H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h170c87.3 0 158 70.7 158 158v170zM236 96H92c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h144c4.4 0 8-3.6 8-8V104c0-4.4-3.6-8-8-8zm-48 101.6c0 1.3-1.1 2.4-2.4 2.4h-43.2c-1.3 0-2.4-1.1-2.4-2.4v-43.2c0-1.3 1.1-2.4 2.4-2.4h43.2c1.3 0 2.4 1.1 2.4 2.4v43.2zM920 780H776c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h144c4.4 0 8-3.6 8-8V788c0-4.4-3.6-8-8-8zm-48 101.6c0 1.3-1.1 2.4-2.4 2.4h-43.2c-1.3 0-2.4-1.1-2.4-2.4v-43.2c0-1.3 1.1-2.4 2.4-2.4h43.2c1.3 0 2.4 1.1 2.4 2.4v43.2z")), t.RedditOutline = l("reddit", a, c(i, "M288 568a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm338.7 119.7c-23.1 18.2-68.9 37.8-114.7 37.8s-91.6-19.6-114.7-37.8c-14.4-11.3-35.3-8.9-46.7 5.5s-8.9 35.3 5.5 46.7C396.3 771.6 457.5 792 512 792s115.7-20.4 155.9-52.1a33.25 33.25 0 1 0-41.2-52.2zM960 456c0-61.9-50.1-112-112-112-42.1 0-78.7 23.2-97.9 57.6-57.6-31.5-127.7-51.8-204.1-56.5L612.9 195l127.9 36.9c11.5 32.6 42.6 56.1 79.2 56.1 46.4 0 84-37.6 84-84s-37.6-84-84-84c-32 0-59.8 17.9-74 44.2L603.5 123a33.2 33.2 0 0 0-39.6 18.4l-90.8 203.9c-74.5 5.2-142.9 25.4-199.2 56.2A111.94 111.94 0 0 0 176 344c-61.9 0-112 50.1-112 112 0 45.8 27.5 85.1 66.8 102.5-7.1 21-10.8 43-10.8 65.5 0 154.6 175.5 280 392 280s392-125.4 392-280c0-22.6-3.8-44.5-10.8-65.5C932.5 541.1 960 501.8 960 456zM820 172.5a31.5 31.5 0 1 1 0 63 31.5 31.5 0 0 1 0-63zM120 456c0-30.9 25.1-56 56-56a56 56 0 0 1 50.6 32.1c-29.3 22.2-53.5 47.8-71.5 75.9a56.23 56.23 0 0 1-35.1-52zm392 381.5c-179.8 0-325.5-95.6-325.5-213.5S332.2 410.5 512 410.5 837.5 506.1 837.5 624 691.8 837.5 512 837.5zM868.8 508c-17.9-28.1-42.2-53.7-71.5-75.9 9-18.9 28.3-32.1 50.6-32.1 30.9 0 56 25.1 56 56 .1 23.5-14.5 43.7-35.1 52zM624 568a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")), t.RedoOutline = l("redo", a, c(i, "M758.2 839.1C851.8 765.9 912 651.9 912 523.9 912 303 733.5 124.3 512.6 124 291.4 123.7 112 302.8 112 523.9c0 125.2 57.5 236.9 147.6 310.2 3.5 2.8 8.6 2.2 11.4-1.3l39.4-50.5c2.7-3.4 2.1-8.3-1.2-11.1-8.1-6.6-15.9-13.7-23.4-21.2a318.64 318.64 0 0 1-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 0 1-68.6 101.7c-9.3 9.3-19.1 18-29.3 26L668.2 724a8 8 0 0 0-14.1 3l-39.6 162.2c-1.2 5 2.6 9.9 7.7 9.9l167 .8c6.7 0 10.5-7.7 6.3-12.9l-37.3-47.9z")), t.ReloadOutline = l("reload", a, c(i, "M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 0 0-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 0 1 655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 0 1 279 755.2a342.16 342.16 0 0 1-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 0 1 109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 0 0 3 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z")), t.RetweetOutline = l("retweet", a, c(r, "M136 552h63.6c4.4 0 8-3.6 8-8V288.7h528.6v72.6c0 1.9.6 3.7 1.8 5.2a8.3 8.3 0 0 0 11.7 1.4L893 255.4c4.3-5 3.6-10.3 0-13.2L749.7 129.8a8.22 8.22 0 0 0-5.2-1.8c-4.6 0-8.4 3.8-8.4 8.4V209H199.7c-39.5 0-71.7 32.2-71.7 71.8V544c0 4.4 3.6 8 8 8zm752-80h-63.6c-4.4 0-8 3.6-8 8v255.3H287.8v-72.6c0-1.9-.6-3.7-1.8-5.2a8.3 8.3 0 0 0-11.7-1.4L131 768.6c-4.3 5-3.6 10.3 0 13.2l143.3 112.4c1.5 1.2 3.3 1.8 5.2 1.8 4.6 0 8.4-3.8 8.4-8.4V815h536.6c39.5 0 71.7-32.2 71.7-71.8V480c-.2-4.4-3.8-8-8.2-8z")), t.RightOutline = l("right", a, c(i, "M765.7 486.8L314.9 134.7A7.97 7.97 0 0 0 302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 0 0 0-50.4z")), t.RiseOutline = l("rise", a, c(i, "M917 211.1l-199.2 24c-6.6.8-9.4 8.9-4.7 13.6l59.3 59.3-226 226-101.8-101.7c-6.3-6.3-16.4-6.2-22.6 0L100.3 754.1a8.03 8.03 0 0 0 0 11.3l45 45.2c3.1 3.1 8.2 3.1 11.3 0L433.3 534 535 635.7c6.3 6.2 16.4 6.2 22.6 0L829 364.5l59.3 59.3a8.01 8.01 0 0 0 13.6-4.7l24-199.2c.7-5.1-3.7-9.5-8.9-8.8z")), t.RollbackOutline = l("rollback", a, c(i, "M793 242H366v-74c0-6.7-7.7-10.4-12.9-6.3l-142 112a8 8 0 0 0 0 12.6l142 112c5.2 4.1 12.9.4 12.9-6.3v-74h415v470H175c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h618c35.3 0 64-28.7 64-64V306c0-35.3-28.7-64-64-64z")), t.SafetyOutline = l("safety", a, c(r, "M512 64L128 192v384c0 212.1 171.9 384 384 384s384-171.9 384-384V192L512 64zm312 512c0 172.3-139.7 312-312 312S200 748.3 200 576V246l312-110 312 110v330z", "M378.4 475.1a35.91 35.91 0 0 0-50.9 0 35.91 35.91 0 0 0 0 50.9l129.4 129.4 2.1 2.1a33.98 33.98 0 0 0 48.1 0L730.6 434a33.98 33.98 0 0 0 0-48.1l-2.8-2.8a33.98 33.98 0 0 0-48.1 0L483 579.7 378.4 475.1z")), t.RobotOutline = l("robot", a, c(i, "M300 328a60 60 0 1 0 120 0 60 60 0 1 0-120 0zM852 64H172c-17.7 0-32 14.3-32 32v660c0 17.7 14.3 32 32 32h680c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-32 660H204V128h616v596zM604 328a60 60 0 1 0 120 0 60 60 0 1 0-120 0zm250.2 556H169.8c-16.5 0-29.8 14.3-29.8 32v36c0 4.4 3.3 8 7.4 8h729.1c4.1 0 7.4-3.6 7.4-8v-36c.1-17.7-13.2-32-29.7-32zM664 508H360c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")), t.SearchOutline = l("search", a, c(i, "M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z")), t.ScanOutline = l("scan", a, c(i, "M136 384h56c4.4 0 8-3.6 8-8V200h176c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-37.6 0-68 30.4-68 68v180c0 4.4 3.6 8 8 8zm512-184h176v176c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V196c0-37.6-30.4-68-68-68H648c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM376 824H200V648c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v180c0 37.6 30.4 68 68 68h180c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm512-184h-56c-4.4 0-8 3.6-8 8v176H648c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h180c37.6 0 68-30.4 68-68V648c0-4.4-3.6-8-8-8zm16-164H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.ScissorOutline = l("scissor", a, c(i, "M567.1 512l318.5-319.3c5-5 1.5-13.7-5.6-13.7h-90.5c-2.1 0-4.2.8-5.6 2.3l-273.3 274-90.2-90.5c12.5-22.1 19.7-47.6 19.7-74.8 0-83.9-68.1-152-152-152s-152 68.1-152 152 68.1 152 152 152c27.7 0 53.6-7.4 75.9-20.3l90 90.3-90.1 90.3A151.04 151.04 0 0 0 288 582c-83.9 0-152 68.1-152 152s68.1 152 152 152 152-68.1 152-152c0-27.2-7.2-52.7-19.7-74.8l90.2-90.5 273.3 274c1.5 1.5 3.5 2.3 5.6 2.3H880c7.1 0 10.7-8.6 5.6-13.7L567.1 512zM288 370c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm0 444c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z")), t.SelectOutline = l("select", a, c(i, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h360c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H184V184h656v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32zM653.3 599.4l52.2-52.2a8.01 8.01 0 0 0-4.7-13.6l-179.4-21c-5.1-.6-9.5 3.7-8.9 8.9l21 179.4c.8 6.6 8.9 9.4 13.6 4.7l52.4-52.4 256.2 256.2c3.1 3.1 8.2 3.1 11.3 0l42.4-42.4c3.1-3.1 3.1-8.2 0-11.3L653.3 599.4z")), t.ShakeOutline = l("shake", a, c(i, "M324 666a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm616.7-309.6L667.6 83.2C655.2 70.9 638.7 64 621.1 64s-34.1 6.8-46.5 19.2L83.3 574.5a65.85 65.85 0 0 0 0 93.1l273.2 273.2c12.3 12.3 28.9 19.2 46.5 19.2s34.1-6.8 46.5-19.2l491.3-491.3c25.6-25.7 25.6-67.5-.1-93.1zM403 880.1L143.9 621l477.2-477.2 259 259.2L403 880.1zM152.8 373.7a7.9 7.9 0 0 0 11.2 0L373.7 164a7.9 7.9 0 0 0 0-11.2l-38.4-38.4a7.9 7.9 0 0 0-11.2 0L114.3 323.9a7.9 7.9 0 0 0 0 11.2l38.5 38.6zm718.6 276.6a7.9 7.9 0 0 0-11.2 0L650.3 860.1a7.9 7.9 0 0 0 0 11.2l38.4 38.4a7.9 7.9 0 0 0 11.2 0L909.7 700a7.9 7.9 0 0 0 0-11.2l-38.3-38.5z")), t.ShareAltOutline = l("share-alt", a, c(i, "M752 664c-28.5 0-54.8 10-75.4 26.7L469.4 540.8a160.68 160.68 0 0 0 0-57.6l207.2-149.9C697.2 350 723.5 360 752 360c66.2 0 120-53.8 120-120s-53.8-120-120-120-120 53.8-120 120c0 11.6 1.6 22.7 4.7 33.3L439.9 415.8C410.7 377.1 364.3 352 312 352c-88.4 0-160 71.6-160 160s71.6 160 160 160c52.3 0 98.7-25.1 127.9-63.8l196.8 142.5c-3.1 10.6-4.7 21.8-4.7 33.3 0 66.2 53.8 120 120 120s120-53.8 120-120-53.8-120-120-120zm0-476c28.7 0 52 23.3 52 52s-23.3 52-52 52-52-23.3-52-52 23.3-52 52-52zM312 600c-48.5 0-88-39.5-88-88s39.5-88 88-88 88 39.5 88 88-39.5 88-88 88zm440 236c-28.7 0-52-23.3-52-52s23.3-52 52-52 52 23.3 52 52-23.3 52-52 52z")), t.ShoppingCartOutline = l("shopping-cart", a, c(r, "M922.9 701.9H327.4l29.9-60.9 496.8-.9c16.8 0 31.2-12 34.2-28.6l68.8-385.1c1.8-10.1-.9-20.5-7.5-28.4a34.99 34.99 0 0 0-26.6-12.5l-632-2.1-5.4-25.4c-3.4-16.2-18-28-34.6-28H96.5a35.3 35.3 0 1 0 0 70.6h125.9L246 312.8l58.1 281.3-74.8 122.1a34.96 34.96 0 0 0-3 36.8c6 11.9 18.1 19.4 31.5 19.4h62.8a102.43 102.43 0 0 0-20.6 61.7c0 56.6 46 102.6 102.6 102.6s102.6-46 102.6-102.6c0-22.3-7.4-44-20.6-61.7h161.1a102.43 102.43 0 0 0-20.6 61.7c0 56.6 46 102.6 102.6 102.6s102.6-46 102.6-102.6c0-22.3-7.4-44-20.6-61.7H923c19.4 0 35.3-15.8 35.3-35.3a35.42 35.42 0 0 0-35.4-35.2zM305.7 253l575.8 1.9-56.4 315.8-452.3.8L305.7 253zm96.9 612.7c-17.4 0-31.6-14.2-31.6-31.6 0-17.4 14.2-31.6 31.6-31.6s31.6 14.2 31.6 31.6a31.6 31.6 0 0 1-31.6 31.6zm325.1 0c-17.4 0-31.6-14.2-31.6-31.6 0-17.4 14.2-31.6 31.6-31.6s31.6 14.2 31.6 31.6a31.6 31.6 0 0 1-31.6 31.6z")), t.ShrinkOutline = l("shrink", a, c(i, "M881.7 187.4l-45.1-45.1a8.03 8.03 0 0 0-11.3 0L667.8 299.9l-54.7-54.7a7.94 7.94 0 0 0-13.5 4.7L576.1 439c-.6 5.2 3.7 9.5 8.9 8.9l189.2-23.5c6.6-.8 9.3-8.8 4.7-13.5l-54.7-54.7 157.6-157.6c3-3 3-8.1-.1-11.2zM439 576.1l-189.2 23.5c-6.6.8-9.3 8.9-4.7 13.5l54.7 54.7-157.5 157.5a8.03 8.03 0 0 0 0 11.3l45.1 45.1c3.1 3.1 8.2 3.1 11.3 0l157.6-157.6 54.7 54.7a7.94 7.94 0 0 0 13.5-4.7L447.9 585a7.9 7.9 0 0 0-8.9-8.9z")), t.SlackOutline = l("slack", a, c(i, "M409.4 128c-42.4 0-76.7 34.4-76.7 76.8 0 20.3 8.1 39.9 22.4 54.3a76.74 76.74 0 0 0 54.3 22.5h76.7v-76.8c0-42.3-34.3-76.7-76.7-76.8zm0 204.8H204.7c-42.4 0-76.7 34.4-76.7 76.8s34.4 76.8 76.7 76.8h204.6c42.4 0 76.7-34.4 76.7-76.8.1-42.4-34.3-76.8-76.6-76.8zM614 486.4c42.4 0 76.8-34.4 76.7-76.8V204.8c0-42.4-34.3-76.8-76.7-76.8-42.4 0-76.7 34.4-76.7 76.8v204.8c0 42.5 34.3 76.8 76.7 76.8zm281.4-76.8c0-42.4-34.4-76.8-76.7-76.8S742 367.2 742 409.6v76.8h76.7c42.3 0 76.7-34.4 76.7-76.8zm-76.8 128H614c-42.4 0-76.7 34.4-76.7 76.8 0 20.3 8.1 39.9 22.4 54.3a76.74 76.74 0 0 0 54.3 22.5h204.6c42.4 0 76.7-34.4 76.7-76.8.1-42.4-34.3-76.7-76.7-76.8zM614 742.4h-76.7v76.8c0 42.4 34.4 76.8 76.7 76.8 42.4 0 76.8-34.4 76.7-76.8.1-42.4-34.3-76.7-76.7-76.8zM409.4 537.6c-42.4 0-76.7 34.4-76.7 76.8v204.8c0 42.4 34.4 76.8 76.7 76.8 42.4 0 76.8-34.4 76.7-76.8V614.4c0-20.3-8.1-39.9-22.4-54.3a76.92 76.92 0 0 0-54.3-22.5zM128 614.4c0 20.3 8.1 39.9 22.4 54.3a76.74 76.74 0 0 0 54.3 22.5c42.4 0 76.8-34.4 76.7-76.8v-76.8h-76.7c-42.3 0-76.7 34.4-76.7 76.8z")), t.SmallDashOutline = l("small-dash", a, c(i, "M112 476h72v72h-72zm182 0h72v72h-72zm364 0h72v72h-72zm182 0h72v72h-72zm-364 0h72v72h-72z")), t.SolutionOutline = l("solution", a, c(i, "M688 264c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48zm-8 136H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM480 544H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-48 308H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm356.8-74.4c29-26.3 47.2-64.3 47.2-106.6 0-79.5-64.5-144-144-144s-144 64.5-144 144c0 42.3 18.2 80.3 47.2 106.6-57 32.5-96.2 92.7-99.2 162.1-.2 4.5 3.5 8.3 8 8.3h48.1c4.2 0 7.7-3.3 8-7.6C564 871.2 621.7 816 692 816s128 55.2 131.9 124.4c.2 4.2 3.7 7.6 8 7.6H880c4.6 0 8.2-3.8 8-8.3-2.9-69.5-42.2-129.6-99.2-162.1zM692 591c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z")), t.SketchOutline = l("sketch", a, c(i, "M925.6 405.1l-203-253.7a6.5 6.5 0 0 0-5-2.4H306.4c-1.9 0-3.8.9-5 2.4l-203 253.7a6.5 6.5 0 0 0 .2 8.3l408.6 459.5c1.2 1.4 3 2.1 4.8 2.1 1.8 0 3.5-.8 4.8-2.1l408.6-459.5a6.5 6.5 0 0 0 .2-8.3zM645.2 206.4l34.4 133.9-132.5-133.9h98.1zm8.2 178.5H370.6L512 242l141.4 142.9zM378.8 206.4h98.1L344.3 340.3l34.5-133.9zm-53.4 7l-44.1 171.5h-93.1l137.2-171.5zM194.6 434.9H289l125.8 247.7-220.2-247.7zM512 763.4L345.1 434.9h333.7L512 763.4zm97.1-80.8L735 434.9h94.4L609.1 682.6zm133.6-297.7l-44.1-171.5 137.2 171.5h-93.1z")), t.SortDescendingOutline = l("sort-descending", a, c(i, "M839.6 433.8L749 150.5a9.24 9.24 0 0 0-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-.3.9-.5 1.9-.5 2.9 0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-.1 2.8-.4 2.4-.8 4.3-2.4 5.5-4.6 1.1-2.2 1.3-4.7.6-7.1zM663.3 325.5l32.8-116.9h6.3l32.1 116.9h-71.2zm143.5 492.9H677.2v-.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v.4L587.7 828.9a9.35 9.35 0 0 0-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43a9.2 9.2 0 0 0-9.2-9.3zM310.3 167.1a8 8 0 0 0-12.6 0L185.7 309c-4.2 5.3-.4 13 6.3 13h76v530c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V322h76c6.7 0 10.5-7.8 6.3-13l-112-141.9z")), t.SortAscendingOutline = l("sort-ascending", a, c(i, "M839.6 433.8L749 150.5a9.24 9.24 0 0 0-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-.3.9-.5 1.9-.5 2.9 0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-.1 2.8-.4 2.4-.8 4.3-2.4 5.5-4.6 1.1-2.2 1.3-4.7.6-7.1zM663.3 325.5l32.8-116.9h6.3l32.1 116.9h-71.2zm143.5 492.9H677.2v-.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v.4L587.7 828.9a9.35 9.35 0 0 0-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43a9.2 9.2 0 0 0-9.2-9.3zM416 702h-76V172c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v530h-76c-6.7 0-10.5 7.8-6.3 13l112 141.9a8 8 0 0 0 12.6 0l112-141.9c4.1-5.2.4-13-6.3-13z")), t.StockOutline = l("stock", a, c(i, "M904 747H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM165.7 621.8l39.7 39.5c3.1 3.1 8.2 3.1 11.3 0l234.7-233.9 97.6 97.3a32.11 32.11 0 0 0 45.2 0l264.2-263.2c3.1-3.1 3.1-8.2 0-11.3l-39.7-39.6a8.03 8.03 0 0 0-11.3 0l-235.7 235-97.7-97.3a32.11 32.11 0 0 0-45.2 0L165.7 610.5a7.94 7.94 0 0 0 0 11.3z")), t.SwapLeftOutline = l("swap-left", a, c(r, "M872 572H266.8l144.3-183c4.1-5.2.4-13-6.3-13H340c-9.8 0-19.1 4.5-25.1 12.2l-164 208c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")), t.SwapRightOutline = l("swap-right", a, c(r, "M873.1 596.2l-164-208A32 32 0 0 0 684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z")), t.StrikethroughOutline = l("strikethrough", a, c(i, "M952 474H569.9c-10-2-20.5-4-31.6-6-15.9-2.9-22.2-4.1-30.8-5.8-51.3-10-82.2-20-106.8-34.2-35.1-20.5-52.2-48.3-52.2-85.1 0-37 15.2-67.7 44-89 28.4-21 68.8-32.1 116.8-32.1 54.8 0 97.1 14.4 125.8 42.8 14.6 14.4 25.3 32.1 31.8 52.6 1.3 4.1 2.8 10 4.3 17.8.9 4.8 5.2 8.2 9.9 8.2h72.8c5.6 0 10.1-4.6 10.1-10.1v-1c-.7-6.8-1.3-12.1-2-16-7.3-43.5-28-81.7-59.7-110.3-44.4-40.5-109.7-61.8-188.7-61.8-72.3 0-137.4 18.1-183.3 50.9-25.6 18.4-45.4 41.2-58.6 67.7-13.5 27.1-20.3 58.4-20.3 92.9 0 29.5 5.7 54.5 17.3 76.5 8.3 15.7 19.6 29.5 34.1 42H72c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h433.2c2.1.4 3.9.8 5.9 1.2 30.9 6.2 49.5 10.4 66.6 15.2 23 6.5 40.6 13.3 55.2 21.5 35.8 20.2 53.3 49.2 53.3 89 0 35.3-15.5 66.8-43.6 88.8-30.5 23.9-75.6 36.4-130.5 36.4-43.7 0-80.7-8.5-110.2-25-29.1-16.3-49.1-39.8-59.7-69.5-.8-2.2-1.7-5.2-2.7-9-1.2-4.4-5.3-7.5-9.7-7.5h-79.7c-5.6 0-10.1 4.6-10.1 10.1v1c.2 2.3.4 4.2.6 5.7 6.5 48.8 30.3 88.8 70.7 118.8 47.1 34.8 113.4 53.2 191.8 53.2 84.2 0 154.8-19.8 204.2-57.3 25-18.9 44.2-42.2 57.1-69 13-27.1 19.7-57.9 19.7-91.5 0-31.8-5.8-58.4-17.8-81.4-5.8-11.2-13.1-21.5-21.8-30.8H952c4.4 0 8-3.6 8-8v-60a8 8 0 0 0-8-7.9z")), t.SwapOutline = l("swap", a, c(i, "M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z")), t.SyncOutline = l("sync", a, c(i, "M168 504.2c1-43.7 10-86.1 26.9-126 17.3-41 42.1-77.7 73.7-109.4S337 212.3 378 195c42.4-17.9 87.4-27 133.9-27s91.5 9.1 133.8 27A341.5 341.5 0 0 1 755 268.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 0 0 3 14.1l175.7 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c0-6.7-7.7-10.5-12.9-6.3l-56.4 44.1C765.8 155.1 646.2 92 511.8 92 282.7 92 96.3 275.6 92 503.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8zm756 7.8h-60c-4.4 0-7.9 3.5-8 7.8-1 43.7-10 86.1-26.9 126-17.3 41-42.1 77.8-73.7 109.4A342.45 342.45 0 0 1 512.1 856a342.24 342.24 0 0 1-243.2-100.8c-9.9-9.9-19.2-20.4-27.8-31.4l60.2-47a8 8 0 0 0-3-14.1l-175.7-43c-5-1.2-9.9 2.6-9.9 7.7l-.7 181c0 6.7 7.7 10.5 12.9 6.3l56.4-44.1C258.2 868.9 377.8 932 512.2 932c229.2 0 415.5-183.7 419.8-411.8a8 8 0 0 0-8-8.2z")), t.TableOutline = l("table", a, c(i, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 208H676V232h212v136zm0 224H676V432h212v160zM412 432h200v160H412V432zm200-64H412V232h200v136zm-476 64h212v160H136V432zm0-200h212v136H136V232zm0 424h212v136H136V656zm276 0h200v136H412V656zm476 136H676V656h212v136z")), t.TeamOutline = l("team", a, c(i, "M824.2 699.9a301.55 301.55 0 0 0-86.4-60.4C783.1 602.8 812 546.8 812 484c0-110.8-92.4-201.7-203.2-200-109.1 1.7-197 90.6-197 200 0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C345 754.6 314 826.8 312 903.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5A226.62 226.62 0 0 1 612 684c60.9 0 118.2 23.7 161.3 66.8C814.5 792 838 846.3 840 904.3c.1 4.3 3.7 7.7 8 7.7h56a8 8 0 0 0 8-8.2c-2-77-33-149.2-87.8-203.9zM612 612c-34.2 0-66.4-13.3-90.5-37.5a126.86 126.86 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4 0 34.2-13.3 66.3-37.5 90.5A127.3 127.3 0 0 1 612 612zM361.5 510.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.9-1.7-203.3 89.2-203.3 199.9 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.9-1 6.5-4.7 6-8.7z")), t.TaobaoOutline = l("taobao", a, c(i, "M168.5 273.7a68.7 68.7 0 1 0 137.4 0 68.7 68.7 0 1 0-137.4 0zm730 79.2s-23.7-184.4-426.9-70.1c17.3-30 25.6-49.5 25.6-49.5L396.4 205s-40.6 132.6-113 194.4c0 0 70.1 40.6 69.4 39.4 20.1-20.1 38.2-40.6 53.7-60.4 16.1-7 31.5-13.6 46.7-19.8-18.6 33.5-48.7 83.8-78.8 115.6l42.4 37s28.8-27.7 60.4-61.2h36v61.8H372.9v49.5h140.3v118.5c-1.7 0-3.6 0-5.4-.2-15.4-.7-39.5-3.3-49-18.2-11.5-18.1-3-51.5-2.4-71.9h-97l-3.4 1.8s-35.5 159.1 102.3 155.5c129.1 3.6 203-36 238.6-63.1l14.2 52.6 79.6-33.2-53.9-131.9-64.6 20.1 12.1 45.2c-16.6 12.4-35.6 21.7-56.2 28.4V561.3h137.1v-49.5H628.1V450h137.6v-49.5H521.3c17.6-21.4 31.5-41.1 35-53.6l-42.5-11.6c182.8-65.5 284.5-54.2 283.6 53.2v282.8s10.8 97.1-100.4 90.1l-60.2-12.9-14.2 57.1S882.5 880 903.7 680.2c21.3-200-5.2-327.3-5.2-327.3zm-707.4 18.3l-45.4 69.7 83.6 52.1s56 28.5 29.4 81.9C233.8 625.5 112 736.3 112 736.3l109 68.1c75.4-163.7 70.5-142 89.5-200.7 19.5-60.1 23.7-105.9-9.4-139.1-42.4-42.6-47-46.6-110-93.4z")), t.ToTopOutline = l("to-top", a, c(i, "M885 780H165c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM400 325.7h73.9V664c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V325.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 171a8 8 0 0 0-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13z")), t.TrademarkOutline = l("trademark", a, c(i, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm87.5-334.7c34.8-12.8 78.4-49 78.4-119.2 0-71.2-45.5-131.1-144.2-131.1H378c-4.4 0-8 3.6-8 8v410c0 4.4 3.6 8 8 8h54.5c4.4 0 8-3.6 8-8V561.2h88.7l74.6 159.2c1.3 2.8 4.1 4.6 7.2 4.6h62a7.9 7.9 0 0 0 7.1-11.5l-80.6-164.2zM522 505h-81.5V357h83.4c48 0 80.9 25.3 80.9 75.5 0 46.9-29.8 72.5-82.8 72.5z")), t.TransactionOutline = l("transaction", a, c(i, "M668.6 320c0-4.4-3.6-8-8-8h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.5-1.1.9-2.4.9-3.7zM157.9 504.2a352.7 352.7 0 0 1 103.5-242.4c32.5-32.5 70.3-58.1 112.4-75.9 43.6-18.4 89.9-27.8 137.6-27.8 47.8 0 94.1 9.3 137.6 27.8 42.1 17.8 79.9 43.4 112.4 75.9 10 10 19.3 20.5 27.9 31.4l-50 39.1a8 8 0 0 0 3 14.1l156.8 38.3c5 1.2 9.9-2.6 9.9-7.7l.8-161.5c0-6.7-7.7-10.5-12.9-6.3l-47.8 37.4C770.7 146.3 648.6 82 511.5 82 277 82 86.3 270.1 82 503.8a8 8 0 0 0 8 8.2h60c4.3 0 7.8-3.5 7.9-7.8zM934 512h-60c-4.3 0-7.9 3.5-8 7.8a352.7 352.7 0 0 1-103.5 242.4 352.57 352.57 0 0 1-112.4 75.9c-43.6 18.4-89.9 27.8-137.6 27.8s-94.1-9.3-137.6-27.8a352.57 352.57 0 0 1-112.4-75.9c-10-10-19.3-20.5-27.9-31.4l49.9-39.1a8 8 0 0 0-3-14.1l-156.8-38.3c-5-1.2-9.9 2.6-9.9 7.7l-.8 161.7c0 6.7 7.7 10.5 12.9 6.3l47.8-37.4C253.3 877.7 375.4 942 512.5 942 747 942 937.7 753.9 942 520.2a8 8 0 0 0-8-8.2z")), t.TwitterOutline = l("twitter", a, c(i, "M928 254.3c-30.6 13.2-63.9 22.7-98.2 26.4a170.1 170.1 0 0 0 75-94 336.64 336.64 0 0 1-108.2 41.2A170.1 170.1 0 0 0 672 174c-94.5 0-170.5 76.6-170.5 170.6 0 13.2 1.6 26.4 4.2 39.1-141.5-7.4-267.7-75-351.6-178.5a169.32 169.32 0 0 0-23.2 86.1c0 59.2 30.1 111.4 76 142.1a172 172 0 0 1-77.1-21.7v2.1c0 82.9 58.6 151.6 136.7 167.4a180.6 180.6 0 0 1-44.9 5.8c-11.1 0-21.6-1.1-32.2-2.6C211 652 273.9 701.1 348.8 702.7c-58.6 45.9-132 72.9-211.7 72.9-14.3 0-27.5-.5-41.2-2.1C171.5 822 261.2 850 357.8 850 671.4 850 843 590.2 843 364.7c0-7.4 0-14.8-.5-22.2 33.2-24.3 62.3-54.4 85.5-88.2z")), t.UnderlineOutline = l("underline", a, c(i, "M824 804H200c-4.4 0-8 3.4-8 7.6v60.8c0 4.2 3.6 7.6 8 7.6h624c4.4 0 8-3.4 8-7.6v-60.8c0-4.2-3.6-7.6-8-7.6zm-312-76c69.4 0 134.6-27.1 183.8-76.2C745 602.7 772 537.4 772 468V156c0-6.6-5.4-12-12-12h-60c-6.6 0-12 5.4-12 12v312c0 97-79 176-176 176s-176-79-176-176V156c0-6.6-5.4-12-12-12h-60c-6.6 0-12 5.4-12 12v312c0 69.4 27.1 134.6 76.2 183.8C377.3 701 442.6 728 512 728z")), t.UndoOutline = l("undo", a, c(i, "M511.4 124C290.5 124.3 112 303 112 523.9c0 128 60.2 242 153.8 315.2l-37.5 48c-4.1 5.3-.3 13 6.3 12.9l167-.8c5.2 0 9-4.9 7.7-9.9L369.8 727a8 8 0 0 0-14.1-3L315 776.1c-10.2-8-20-16.7-29.3-26a318.64 318.64 0 0 1-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 0 1-68.6 101.7c-7.5 7.5-15.3 14.5-23.4 21.2a7.93 7.93 0 0 0-1.2 11.1l39.4 50.5c2.8 3.5 7.9 4.1 11.4 1.3C854.5 760.8 912 649.1 912 523.9c0-221.1-179.4-400.2-400.6-399.9z")), t.UnorderedListOutline = l("unordered-list", a, c(i, "M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0z")), t.UpOutline = l("up", a, c(i, "M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 0 0 140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z")), t.UploadOutline = l("upload", a, c(i, "M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 0 0-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z")), t.UserAddOutline = l("user-add", a, c(i, "M678.3 642.4c24.2-13 51.9-20.4 81.4-20.4h.1c3 0 4.4-3.6 2.2-5.6a371.67 371.67 0 0 0-103.7-65.8c-.4-.2-.8-.3-1.2-.5C719.2 505 759.6 431.7 759.6 349c0-137-110.8-248-247.5-248S264.7 212 264.7 349c0 82.7 40.4 156 102.6 201.1-.4.2-.8.3-1.2.5-44.7 18.9-84.8 46-119.3 80.6a373.42 373.42 0 0 0-80.4 119.5A373.6 373.6 0 0 0 137 888.8a8 8 0 0 0 8 8.2h59.9c4.3 0 7.9-3.5 8-7.8 2-77.2 32.9-149.5 87.6-204.3C357 628.2 432.2 597 512.2 597c56.7 0 111.1 15.7 158 45.1a8.1 8.1 0 0 0 8.1.3zM512.2 521c-45.8 0-88.9-17.9-121.4-50.4A171.2 171.2 0 0 1 340.5 349c0-45.9 17.9-89.1 50.3-121.6S466.3 177 512.2 177s88.9 17.9 121.4 50.4A171.2 171.2 0 0 1 683.9 349c0 45.9-17.9 89.1-50.3 121.6C601.1 503.1 558 521 512.2 521zM880 759h-84v-84c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v84h-84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h84v84c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-84h84c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.UsergroupAddOutline = l("usergroup-add", a, c(i, "M892 772h-80v-80c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v80h-80c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h80v80c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-80h80c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM373.5 498.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.8-1.7-203.2 89.2-203.2 200 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.8-1.1 6.4-4.8 5.9-8.8zM824 472c0-109.4-87.9-198.3-196.9-200C516.3 270.3 424 361.2 424 472c0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C357 742.6 326 814.8 324 891.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5C505.8 695.7 563 672 624 672c110.4 0 200-89.5 200-200zm-109.5 90.5C690.3 586.7 658.2 600 624 600s-66.3-13.3-90.5-37.5a127.26 127.26 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4-.1 34.2-13.4 66.3-37.6 90.5z")), t.UserOutline = l("user", a, c(i, "M858.5 763.6a374 374 0 0 0-80.6-119.5 375.63 375.63 0 0 0-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 0 0-80.6 119.5A371.7 371.7 0 0 0 136 901.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 0 0 8-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z")), t.UserDeleteOutline = l("user-delete", a, c(i, "M678.3 655.4c24.2-13 51.9-20.4 81.4-20.4h.1c3 0 4.4-3.6 2.2-5.6a371.67 371.67 0 0 0-103.7-65.8c-.4-.2-.8-.3-1.2-.5C719.2 518 759.6 444.7 759.6 362c0-137-110.8-248-247.5-248S264.7 225 264.7 362c0 82.7 40.4 156 102.6 201.1-.4.2-.8.3-1.2.5-44.7 18.9-84.8 46-119.3 80.6a373.42 373.42 0 0 0-80.4 119.5A373.6 373.6 0 0 0 137 901.8a8 8 0 0 0 8 8.2h59.9c4.3 0 7.9-3.5 8-7.8 2-77.2 32.9-149.5 87.6-204.3C357 641.2 432.2 610 512.2 610c56.7 0 111.1 15.7 158 45.1a8.1 8.1 0 0 0 8.1.3zM512.2 534c-45.8 0-88.9-17.9-121.4-50.4A171.2 171.2 0 0 1 340.5 362c0-45.9 17.9-89.1 50.3-121.6S466.3 190 512.2 190s88.9 17.9 121.4 50.4A171.2 171.2 0 0 1 683.9 362c0 45.9-17.9 89.1-50.3 121.6C601.1 516.1 558 534 512.2 534zM880 772H640c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z")), t.UsergroupDeleteOutline = l("usergroup-delete", a, c(i, "M888 784H664c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM373.5 510.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.9-1.7-203.3 89.2-203.3 199.9 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.9-1 6.5-4.7 6-8.7zM824 484c0-109.4-87.9-198.3-196.9-200C516.3 282.3 424 373.2 424 484c0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C357 754.6 326 826.8 324 903.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5C505.8 707.7 563 684 624 684c110.4 0 200-89.5 200-200zm-109.5 90.5C690.3 598.7 658.2 612 624 612s-66.3-13.3-90.5-37.5a127.26 127.26 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4-.1 34.2-13.4 66.3-37.6 90.5z")), t.VerticalAlignBottomOutline = l("vertical-align-bottom", a, c(i, "M859.9 780H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM505.7 669a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V176c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8z")), t.VerticalAlignMiddleOutline = l("vertical-align-middle", a, c(i, "M859.9 474H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zm-353.6-74.7c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H550V104c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v156h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.6zm11.4 225.4a7.14 7.14 0 0 0-11.3 0L405.6 752.3a7.23 7.23 0 0 0 5.7 11.7H474v156c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V764h62.8c6 0 9.4-7 5.7-11.7L517.7 624.7z")), t.VerticalAlignTopOutline = l("vertical-align-top", a, c(i, "M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 0 0-12.6 0l-112 141.7a7.98 7.98 0 0 0 6.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z")), t.VerticalRightOutline = l("vertical-right", a, c(i, "M326 164h-64c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V172c0-4.4-3.6-8-8-8zm444 72.4V164c0-6.8-7.9-10.5-13.1-6.1L335 512l421.9 354.1c5.2 4.4 13.1.7 13.1-6.1v-72.4c0-9.4-4.2-18.4-11.4-24.5L459.4 512l299.2-251.1c7.2-6.1 11.4-15.1 11.4-24.5z")), t.VerticalLeftOutline = l("vertical-left", a, c(i, "M762 164h-64c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V172c0-4.4-3.6-8-8-8zm-508 0v72.4c0 9.5 4.2 18.4 11.4 24.5L564.6 512 265.4 763.1c-7.2 6.1-11.4 15-11.4 24.5V860c0 6.8 7.9 10.5 13.1 6.1L689 512 267.1 157.9A7.95 7.95 0 0 0 254 164z")), t.WifiOutline = l("wifi", a, c(i, "M723 620.5C666.8 571.6 593.4 542 513 542s-153.8 29.6-210.1 78.6a8.1 8.1 0 0 0-.8 11.2l36 42.9c2.9 3.4 8 3.8 11.4.9C393.1 637.2 450.3 614 513 614s119.9 23.2 163.5 61.5c3.4 2.9 8.5 2.5 11.4-.9l36-42.9c2.8-3.3 2.4-8.3-.9-11.2zm117.4-140.1C751.7 406.5 637.6 362 513 362s-238.7 44.5-327.5 118.4a8.05 8.05 0 0 0-1 11.3l36 42.9c2.8 3.4 7.9 3.8 11.2 1C308 472.2 406.1 434 513 434s205 38.2 281.2 101.6c3.4 2.8 8.4 2.4 11.2-1l36-42.9c2.8-3.4 2.4-8.5-1-11.3zm116.7-139C835.7 241.8 680.3 182 511 182c-168.2 0-322.6 59-443.7 157.4a8 8 0 0 0-1.1 11.4l36 42.9c2.8 3.3 7.8 3.8 11.1 1.1C222 306.7 360.3 254 511 254c151.8 0 291 53.5 400 142.7 3.4 2.8 8.4 2.3 11.2-1.1l36-42.9c2.9-3.4 2.4-8.5-1.1-11.3zM448 778a64 64 0 1 0 128 0 64 64 0 1 0-128 0z")), t.ZhihuOutline = l("zhihu", a, c(i, "M564.7 230.1V803h60l25.2 71.4L756.3 803h131.5V230.1H564.7zm247.7 497h-59.9l-75.1 50.4-17.8-50.4h-18V308.3h170.7v418.8zM526.1 486.9H393.3c2.1-44.9 4.3-104.3 6.6-172.9h130.9l-.1-8.1c0-.6-.2-14.7-2.3-29.1-2.1-15-6.6-34.9-21-34.9H287.8c4.4-20.6 15.7-69.7 29.4-93.8l6.4-11.2-12.9-.7c-.8 0-19.6-.9-41.4 10.6-35.7 19-51.7 56.4-58.7 84.4-18.4 73.1-44.6 123.9-55.7 145.6-3.3 6.4-5.3 10.2-6.2 12.8-1.8 4.9-.8 9.8 2.8 13 10.5 9.5 38.2-2.9 38.5-3 .6-.3 1.3-.6 2.2-1 13.9-6.3 55.1-25 69.8-84.5h56.7c.7 32.2 3.1 138.4 2.9 172.9h-141l-2.1 1.5c-23.1 16.9-30.5 63.2-30.8 65.2l-1.4 9.2h167c-12.3 78.3-26.5 113.4-34 127.4-3.7 7-7.3 14-10.7 20.8-21.3 42.2-43.4 85.8-126.3 153.6-3.6 2.8-7 8-4.8 13.7 2.4 6.3 9.3 9.1 24.6 9.1 5.4 0 11.8-.3 19.4-1 49.9-4.4 100.8-18 135.1-87.6 17-35.1 31.7-71.7 43.9-108.9L497 850l5-12c.8-1.9 19-46.3 5.1-95.9l-.5-1.8-108.1-123-22 16.6c6.4-26.1 10.6-49.9 12.5-71.1h158.7v-8c0-40.1-18.5-63.9-19.2-64.9l-2.4-3z")), t.WeiboOutline = l("weibo", a, c(i, "M457.3 543c-68.1-17.7-145 16.2-174.6 76.2-30.1 61.2-1 129.1 67.8 151.3 71.2 23 155.2-12.2 184.4-78.3 28.7-64.6-7.2-131-77.6-149.2zm-52 156.2c-13.8 22.1-43.5 31.7-65.8 21.6-22-10-28.5-35.7-14.6-57.2 13.7-21.4 42.3-31 64.4-21.7 22.4 9.5 29.6 35 16 57.3zm45.5-58.5c-5 8.6-16.1 12.7-24.7 9.1-8.5-3.5-11.2-13.1-6.4-21.5 5-8.4 15.6-12.4 24.1-9.1 8.7 3.2 11.8 12.9 7 21.5zm334.5-197.2c15 4.8 31-3.4 35.9-18.3 11.8-36.6 4.4-78.4-23.2-109a111.39 111.39 0 0 0-106-34.3 28.45 28.45 0 0 0-21.9 33.8 28.39 28.39 0 0 0 33.8 21.8c18.4-3.9 38.3 1.8 51.9 16.7a54.2 54.2 0 0 1 11.3 53.3 28.45 28.45 0 0 0 18.2 36zm99.8-206c-56.7-62.9-140.4-86.9-217.7-70.5a32.98 32.98 0 0 0-25.4 39.3 33.12 33.12 0 0 0 39.3 25.5c55-11.7 114.4 5.4 154.8 50.1 40.3 44.7 51.2 105.7 34 159.1-5.6 17.4 3.9 36 21.3 41.7 17.4 5.6 36-3.9 41.6-21.2v-.1c24.1-75.4 8.9-161.1-47.9-223.9zM729 499c-12.2-3.6-20.5-6.1-14.1-22.1 13.8-34.7 15.2-64.7.3-86-28-40.1-104.8-37.9-192.8-1.1 0 0-27.6 12.1-20.6-9.8 13.5-43.5 11.5-79.9-9.6-101-47.7-47.8-174.6 1.8-283.5 110.6C127.3 471.1 80 557.5 80 632.2 80 775.1 263.2 862 442.5 862c235 0 391.3-136.5 391.3-245 0-65.5-55.2-102.6-104.8-118zM443 810.8c-143 14.1-266.5-50.5-275.8-144.5-9.3-93.9 99.2-181.5 242.2-195.6 143-14.2 266.5 50.5 275.8 144.4C694.4 709 586 796.6 443 810.8z")), t.WomanOutline = l("woman", a, c(i, "M712.8 548.8c53.6-53.6 83.2-125 83.2-200.8 0-75.9-29.5-147.2-83.2-200.8C659.2 93.6 587.8 64 512 64s-147.2 29.5-200.8 83.2C257.6 200.9 228 272.1 228 348c0 63.8 20.9 124.4 59.4 173.9 7.3 9.4 15.2 18.3 23.7 26.9 8.5 8.5 17.5 16.4 26.8 23.7 39.6 30.8 86.3 50.4 136.1 57V736H360c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h114v140c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V812h114c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H550V629.5c61.5-8.2 118.2-36.1 162.8-80.7zM512 556c-55.6 0-107.7-21.6-147.1-60.9C325.6 455.8 304 403.6 304 348s21.6-107.7 60.9-147.1C404.2 161.5 456.4 140 512 140s107.7 21.6 147.1 60.9C698.4 240.2 720 292.4 720 348s-21.6 107.7-60.9 147.1C619.7 534.4 567.6 556 512 556z")), t.ZoomInOutline = l("zoom-in", a, c(i, "M637 443H519V309c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V519h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z")), t.AccountBookTwoTone = l("account-book", s, (function (e, t) { return c(i, [t, "M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v584h656V256H712v48zm-65.6 121.8l-89.3 164.1h49.1c4.4 0 8 3.6 8 8v21.3c0 4.4-3.6 8-8 8h-65.4v33.7h65.4c4.4 0 8 3.6 8 8v21.3c0 4.4-3.6 8-8 8h-65.4V752c0 4.4-3.6 8-8 8h-41.3c-4.4 0-8-3.6-8-8v-53.8h-65.1c-4.4 0-8-3.6-8-8v-21.3c0-4.4 3.6-8 8-8h65.1v-33.7h-65.1c-4.4 0-8-3.6-8-8v-21.3c0-4.4 3.6-8 8-8H467l-89.3-164c-2.1-3.9-.7-8.8 3.2-10.9 1.1-.7 2.5-1 3.8-1h46a8 8 0 0 1 7.1 4.4l73.4 145.4h2.8l73.4-145.4c1.3-2.7 4.1-4.4 7.1-4.4h45c4.5 0 8 3.6 7.9 8 0 1.3-.4 2.6-1 3.8z"], [e, "M639.5 414h-45c-3 0-5.8 1.7-7.1 4.4L514 563.8h-2.8l-73.4-145.4a8 8 0 0 0-7.1-4.4h-46c-1.3 0-2.7.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9l89.3 164h-48.6c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1v33.7h-65.1c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1V752c0 4.4 3.6 8 8 8h41.3c4.4 0 8-3.6 8-8v-53.8h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-65.4v-33.7h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-49.1l89.3-164.1c.6-1.2 1-2.5 1-3.8.1-4.4-3.4-8-7.9-8z"], [e, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584z"]) })), t.ZoomOutOutline = l("zoom-out", a, c(i, "M637 443H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h312c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z")), t.AlertTwoTone = l("alert", s, (function (e, t) { return c(i, [t, "M340 585c0-5.5 4.5-10 10-10h44c5.5 0 10 4.5 10 10v171h355V563c0-136.4-110.6-247-247-247S265 426.6 265 563v193h75V585z"], [e, "M216.9 310.5l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3l-67.9-67.9a8.03 8.03 0 0 0-11.3 0l-39.6 39.6a8.03 8.03 0 0 0 0 11.3l67.9 67.9c3.1 3.1 8.1 3.1 11.3 0zm669.6-79.2l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-67.9 67.9a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l67.9-67.9c3.1-3.2 3.1-8.2 0-11.3zM484 180h56c4.4 0 8-3.6 8-8V76c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v96c0 4.4 3.6 8 8 8zm348 712H192c-17.7 0-32 14.3-32 32v24c0 4.4 3.6 8 8 8h688c4.4 0 8-3.6 8-8v-24c0-17.7-14.3-32-32-32zm-639-96c0 17.7 14.3 32 32 32h574c17.7 0 32-14.3 32-32V563c0-176.2-142.8-319-319-319S193 386.8 193 563v233zm72-233c0-136.4 110.6-247 247-247s247 110.6 247 247v193H404V585c0-5.5-4.5-10-10-10h-44c-5.5 0-10 4.5-10 10v171h-75V563z"]) })), t.ApiTwoTone = l("api", s, (function (e, t) { return c(i, [t, "M148.2 674.6zm106.7-92.3c-25 25-38.7 58.1-38.7 93.4s13.8 68.5 38.7 93.4c25 25 58.1 38.7 93.4 38.7 35.3 0 68.5-13.8 93.4-38.7l59.4-59.4-186.8-186.8-59.4 59.4zm420.8-366.1c-35.3 0-68.5 13.8-93.4 38.7l-59.4 59.4 186.8 186.8 59.4-59.4c24.9-25 38.7-58.1 38.7-93.4s-13.8-68.5-38.7-93.4c-25-25-58.1-38.7-93.4-38.7z"], [e, "M578.9 546.7a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2a199.45 199.45 0 0 0-58.6 140.4c-.2 39.5 11.2 79.1 34.3 113.1l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2zM441.7 769.1a131.32 131.32 0 0 1-93.4 38.7c-35.3 0-68.4-13.7-93.4-38.7-24.9-24.9-38.7-58.1-38.7-93.4s13.7-68.4 38.7-93.4l59.4-59.4 186.8 186.8-59.4 59.4zm476-620.3l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM769.1 441.7l-59.4 59.4-186.8-186.8 59.4-59.4c24.9-24.9 58.1-38.7 93.4-38.7s68.4 13.7 93.4 38.7c24.9 24.9 38.7 58.1 38.7 93.4s-13.8 68.4-38.7 93.4z"]) })), t.AppstoreTwoTone = l("appstore", s, (function (e, t) { return c(i, [e, "M864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm52-668H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452 132H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z"], [t, "M212 212h200v200H212zm400 0h200v200H612zM212 612h200v200H212zm400 0h200v200H612z"]) })), t.BankTwoTone = l("bank", s, (function (e, t) { return c(i, [t, "M240.9 393.9h542.2L512 196.7z"], [e, "M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM381 836H264V462h117v374zm189 0H453V462h117v374zm190 0H642V462h118v374zM240.9 393.9L512 196.7l271.1 197.2H240.9z"]) })), t.AudioTwoTone = l("audio", s, (function (e, t) { return c(i, [t, "M512 552c54.3 0 98-43.2 98-96V232c0-52.8-43.7-96-98-96s-98 43.2-98 96v224c0 52.8 43.7 96 98 96z"], [e, "M842 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1z"], [e, "M512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm-98-392c0-52.8 43.7-96 98-96s98 43.2 98 96v224c0 52.8-43.7 96-98 96s-98-43.2-98-96V232z"]) })), t.BellTwoTone = l("bell", s, (function (e, t) { return c(i, [t, "M512 220c-55.6 0-107.8 21.6-147.1 60.9S304 372.4 304 428v340h416V428c0-55.6-21.6-107.8-60.9-147.1S567.6 220 512 220zm280 208c0-141.1-104.3-257.8-240-277.2v.1c135.7 19.4 240 136 240 277.1zM472 150.9v-.1C336.3 170.2 232 286.9 232 428c0-141.1 104.3-257.7 240-277.1z"], [e, "M816 768h-24V428c0-141.1-104.3-257.7-240-277.1V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.9c-135.7 19.4-240 136-240 277.1v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48zm208-120H304V428c0-55.6 21.6-107.8 60.9-147.1S456.4 220 512 220c55.6 0 107.8 21.6 147.1 60.9S720 372.4 720 428v340z"]) })), t.BookTwoTone = l("book", s, (function (e, t) { return c(i, [e, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-260 72h96v209.9L621.5 312 572 347.4V136zM232 888V136h280v296.9c0 3.3 1 6.6 3 9.3a15.9 15.9 0 0 0 22.3 3.7l83.8-59.9 81.4 59.4c2.7 2 6 3.1 9.4 3.1 8.8 0 16-7.2 16-16V136h64v752H232z"], [t, "M668 345.9V136h-96v211.4l49.5-35.4z"], [t, "M727.9 136v296.5c0 8.8-7.2 16-16 16-3.4 0-6.7-1.1-9.4-3.1L621.1 386l-83.8 59.9a15.9 15.9 0 0 1-22.3-3.7c-2-2.7-3-6-3-9.3V136H232v752h559.9V136h-64z"]) })), t.BoxPlotTwoTone = l("box-plot", s, (function (e, t) { return c(i, [t, "M296 368h88v288h-88zm152 0h280v288H448z"], [e, "M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H232c-4.4 0-8 3.6-8 8v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h560c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zM384 656h-88V368h88v288zm344 0H448V368h280v288z"]) })), t.BugTwoTone = l("bug", s, (function (e, t) { return c(i, [e, "M308 412v268c0 36.78 9.68 71.96 27.8 102.9a205.39 205.39 0 0 0 73.3 73.3A202.68 202.68 0 0 0 512 884c36.78 0 71.96-9.68 102.9-27.8a205.39 205.39 0 0 0 73.3-73.3A202.68 202.68 0 0 0 716 680V412H308zm484 172v96c0 6.5-.22 12.95-.66 19.35C859.94 728.64 908 796.7 908 876a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-44.24-23.94-82.89-59.57-103.7a278.63 278.63 0 0 1-22.66 49.02 281.39 281.39 0 0 1-100.45 100.45C611.84 946.07 563.55 960 512 960s-99.84-13.93-141.32-38.23a281.39 281.39 0 0 1-100.45-100.45 278.63 278.63 0 0 1-22.66-49.02A119.95 119.95 0 0 0 188 876a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-79.3 48.07-147.36 116.66-176.65A284.12 284.12 0 0 1 232 680v-96H84a8 8 0 0 1-8-8v-56a8 8 0 0 1 8-8h148V412c-76.77 0-139-62.23-139-139a8 8 0 0 1 8-8h60a8 8 0 0 1 8 8 63 63 0 0 0 63 63h560a63 63 0 0 0 63-63 8 8 0 0 1 8-8h60a8 8 0 0 1 8 8c0 76.77-62.23 139-139 139v100h148a8 8 0 0 1 8 8v56a8 8 0 0 1-8 8H792zM368 272a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-40.04 8.78-76.75 25.9-108.07a184.57 184.57 0 0 1 74.03-74.03C427.25 72.78 463.96 64 504 64h16c40.04 0 76.75 8.78 108.07 25.9a184.57 184.57 0 0 1 74.03 74.03C719.22 195.25 728 231.96 728 272a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8c0-28.33-5.94-53.15-17.08-73.53a112.56 112.56 0 0 0-45.39-45.4C573.15 141.95 548.33 136 520 136h-16c-28.33 0-53.15 5.94-73.53 17.08a112.56 112.56 0 0 0-45.4 45.39C373.95 218.85 368 243.67 368 272z"], [t, "M308 412v268c0 36.78 9.68 71.96 27.8 102.9a205.39 205.39 0 0 0 73.3 73.3A202.68 202.68 0 0 0 512 884c36.78 0 71.96-9.68 102.9-27.8a205.39 205.39 0 0 0 73.3-73.3A202.68 202.68 0 0 0 716 680V412H308z"]) })), t.BulbTwoTone = l("bulb", s, (function (e, t) { return c(i, [t, "M512 136c-141.4 0-256 114.6-256 256 0 92.5 49.4 176.3 128.1 221.8l35.9 20.8V752h184V634.6l35.9-20.8C718.6 568.3 768 484.5 768 392c0-141.4-114.6-256-256-256z"], [e, "M632 888H392c-4.4 0-8 3.6-8 8v32c0 17.7 14.3 32 32 32h192c17.7 0 32-14.3 32-32v-32c0-4.4-3.6-8-8-8zM512 64c-181.1 0-328 146.9-328 328 0 121.4 66 227.4 164 284.1V792c0 17.7 14.3 32 32 32h264c17.7 0 32-14.3 32-32V676.1c98-56.7 164-162.7 164-284.1 0-181.1-146.9-328-328-328zm127.9 549.8L604 634.6V752H420V634.6l-35.9-20.8C305.4 568.3 256 484.5 256 392c0-141.4 114.6-256 256-256s256 114.6 256 256c0 92.5-49.4 176.3-128.1 221.8z"]) })), t.CalculatorTwoTone = l("calculator", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm256.2-75h-50.8c-2.2 0-4.5-1.1-5.9-2.9L348 718.6l-35.5 43.5a7.38 7.38 0 0 1-5.9 2.9h-50.8c-6.6 0-10.2-7.9-5.8-13.1l62.7-76.8-61.2-74.9c-4.3-5.2-.7-13.1 5.9-13.1h50.9c2.2 0 4.5 1.1 5.9 2.9l34 41.6 34-41.6c1.5-1.9 3.6-2.9 5.9-2.9h50.8c6.6 0 10.2 7.9 5.9 13.1L383.5 675l62.7 76.8c4.2 5.3.6 13.2-6 13.2zM576 335c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zm0 265c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zm0 104c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zM248 335c0-2.2 1.4-4 3.2-4H320v-68.8c0-1.8 1.8-3.2 4-3.2h48c2.2 0 4 1.4 4 3.2V331h68.7c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H376v68.7c0 1.9-1.8 3.3-4 3.3h-48c-2.2 0-4-1.4-4-3.2V387h-68.8c-1.8 0-3.2-1.8-3.2-4v-48z"], [e, "M383.5 675l61.3-74.8c4.3-5.2.7-13.1-5.9-13.1h-50.8c-2.3 0-4.4 1-5.9 2.9l-34 41.6-34-41.6a7.69 7.69 0 0 0-5.9-2.9h-50.9c-6.6 0-10.2 7.9-5.9 13.1l61.2 74.9-62.7 76.8c-4.4 5.2-.8 13.1 5.8 13.1h50.8c2.3 0 4.4-1 5.9-2.9l35.5-43.5 35.5 43.5c1.4 1.8 3.7 2.9 5.9 2.9h50.8c6.6 0 10.2-7.9 6-13.2L383.5 675zM251.2 387H320v68.8c0 1.8 1.8 3.2 4 3.2h48c2.2 0 4-1.4 4-3.3V387h68.8c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H376v-68.8c0-1.8-1.8-3.2-4-3.2h-48c-2.2 0-4 1.4-4 3.2V331h-68.8c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm328 369h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0-104h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0-265h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4z"]) })), t.BuildTwoTone = l("build", s, (function (e, t) { return c(i, [t, "M144 546h200v200H144zm268-268h200v200H412z"], [e, "M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zM344 746H144V546h200v200zm268 0H412V546h200v200zm0-268H412V278h200v200zm268 0H680V278h200v200z"]) })), t.CalendarTwoTone = l("calendar", s, (function (e, t) { return c(i, [t, "M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v136h656V256H712v48z"], [e, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zm0-448H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136z"]) })), t.CameraTwoTone = l("camera", s, (function (e, t) { return c(i, [t, "M864 320H677.2l-17.1-47.8-22.9-64.2H386.7l-22.9 64.2-17.1 47.8H160c-4.4 0-8 3.6-8 8v456c0 4.4 3.6 8 8 8h704c4.4 0 8-3.6 8-8V328c0-4.4-3.6-8-8-8zM512 704c-88.4 0-160-71.6-160-160s71.6-160 160-160 160 71.6 160 160-71.6 160-160 160z"], [e, "M512 384c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zm0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z"], [e, "M864 248H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 248H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V328c0-44.2-35.8-80-80-80zm8 536c0 4.4-3.6 8-8 8H160c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h186.7l17.1-47.8 22.9-64.2h250.5l22.9 64.2 17.1 47.8H864c4.4 0 8 3.6 8 8v456z"]) })), t.CarTwoTone = l("car", s, (function (e, t) { return c(i, [t, "M199.6 474L184 517v237h656V517l-15.6-43H199.6zM264 621c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm388 75c0 4.4-3.6 8-8 8H380c-4.4 0-8-3.6-8-8v-84c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v36h168v-36c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v84zm108-75c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z"], [e, "M720 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"], [e, "M959 413.4L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM292.7 218.1l.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220l72.7-199.9zM840 754H184V517l15.6-43h624.8l15.6 43v237z"], [e, "M224 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm420 23h-40c-4.4 0-8 3.6-8 8v36H428v-36c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v84c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-84c0-4.4-3.6-8-8-8z"]) })), t.CarryOutTwoTone = l("carry-out", s, (function (e, t) { return c(i, [e, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584z"], [t, "M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v584h656V256H712v48zm-17.5 128.8L481.9 725.5a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.2 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.9-6.6 13-6.6H688c6.5 0 10.3 7.4 6.5 12.8z"], [e, "M688 420h-55.2c-5.1 0-10 2.5-13 6.6L468.9 634.4l-64.7-89c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.4 0-12.8-6.5-12.8z"]) })), t.CheckCircleTwoTone = l("check-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm193.4 225.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.3 0 19.9 5 25.9 13.3l71.2 98.8 157.2-218c6-8.4 15.7-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.4 12.7z"], [e, "M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0 0 51.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"]) })), t.CheckSquareTwoTone = l("check-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm130-367.8h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H688c6.5 0 10.3 7.4 6.5 12.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L307.5 484.9c-3.8-5.3 0-12.7 6.5-12.7z"], [e, "M432.2 657.7a31.8 31.8 0 0 0 51.7 0l210.6-292c3.8-5.3 0-12.7-6.5-12.7h-46.9c-10.3 0-19.9 5-25.9 13.3L458 584.3l-71.2-98.8c-6-8.4-15.7-13.3-25.9-13.3H314c-6.5 0-10.3 7.4-6.5 12.7l124.7 172.8z"]) })), t.ClockCircleTwoTone = l("clock-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm176.5 509.7l-28.6 39a7.99 7.99 0 0 1-11.2 1.7L483.3 569.8a7.92 7.92 0 0 1-3.3-6.5V288c0-4.4 3.6-8 8-8h48.1c4.4 0 8 3.6 8 8v247.5l142.6 103.1c3.6 2.5 4.4 7.5 1.8 11.1z"], [e, "M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.3c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.9 11.2-1.7l28.6-39c2.6-3.6 1.8-8.6-1.8-11.1z"]) })), t.CloseCircleTwoTone = l("close-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm171.8 527.1c1.2 1.5 1.9 3.3 1.9 5.2 0 4.5-3.6 8-8 8l-66-.3-99.3-118.4-99.3 118.5-66.1.3c-4.4 0-8-3.6-8-8 0-1.9.7-3.7 1.9-5.2L471 512.3l-130.1-155a8.32 8.32 0 0 1-1.9-5.2c0-4.5 3.6-8 8-8l66.1.3 99.3 118.4 99.4-118.5 66-.3c4.4 0 8 3.6 8 8 0 1.9-.6 3.8-1.8 5.2l-130.1 155 129.9 154.9z"], [e, "M685.8 352c0-4.4-3.6-8-8-8l-66 .3-99.4 118.5-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155-130.1 154.9a8.32 8.32 0 0 0-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3 99.3-118.5L611.7 680l66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.9 512.2l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z"]) })), t.CloudTwoTone = l("cloud", s, (function (e, t) { return c(i, [t, "M791.9 492l-37.8-10-13.8-36.5c-8.6-22.7-20.6-44.1-35.7-63.4a245.73 245.73 0 0 0-52.4-49.9c-41.1-28.9-89.5-44.2-140-44.2s-98.9 15.3-140 44.2a245.6 245.6 0 0 0-52.4 49.9 240.47 240.47 0 0 0-35.7 63.4l-13.9 36.6-37.9 9.9a125.7 125.7 0 0 0-66.1 43.7A123.1 123.1 0 0 0 140 612c0 33.1 12.9 64.3 36.3 87.7 23.4 23.4 54.5 36.3 87.6 36.3h496.2c33.1 0 64.2-12.9 87.6-36.3A123.3 123.3 0 0 0 884 612c0-56.2-37.8-105.5-92.1-120z"], [e, "M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3zm36.3 281a123.07 123.07 0 0 1-87.6 36.3H263.9c-33.1 0-64.2-12.9-87.6-36.3A123.3 123.3 0 0 1 140 612c0-28 9.1-54.3 26.2-76.3a125.7 125.7 0 0 1 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10c54.3 14.5 92.1 63.8 92.1 120 0 33.1-12.9 64.3-36.3 87.7z"]) })), t.CloseSquareTwoTone = l("close-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm163.9-473.9A7.95 7.95 0 0 1 354 353h58.9c4.7 0 9.2 2.1 12.3 5.7L512 462.2l86.8-103.5c3-3.6 7.5-5.7 12.3-5.7H670c6.8 0 10.5 7.9 6.1 13.1L553.8 512l122.3 145.9c4.4 5.2.7 13.1-6.1 13.1h-58.9c-4.7 0-9.2-2.1-12.3-5.7L512 561.8l-86.8 103.5c-3 3.6-7.5 5.7-12.3 5.7H354c-6.8 0-10.5-7.9-6.1-13.1L470.2 512 347.9 366.1z"], [e, "M354 671h58.9c4.8 0 9.3-2.1 12.3-5.7L512 561.8l86.8 103.5c3.1 3.6 7.6 5.7 12.3 5.7H670c6.8 0 10.5-7.9 6.1-13.1L553.8 512l122.3-145.9c4.4-5.2.7-13.1-6.1-13.1h-58.9c-4.8 0-9.3 2.1-12.3 5.7L512 462.2l-86.8-103.5c-3.1-3.6-7.6-5.7-12.3-5.7H354c-6.8 0-10.5 7.9-6.1 13.1L470.2 512 347.9 657.9A7.95 7.95 0 0 0 354 671z"]) })), t.CodeTwoTone = l("code", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm339.5-223h185c4.1 0 7.5 3.6 7.5 8v48c0 4.4-3.4 8-7.5 8h-185c-4.1 0-7.5-3.6-7.5-8v-48c0-4.4 3.4-8 7.5-8zM308 610.3c0-2.3 1.1-4.6 2.9-6.1L420.7 512l-109.8-92.2a7.63 7.63 0 0 1-2.9-6.1V351c0-6.8 7.9-10.5 13.1-6.1l192 160.9c3.9 3.2 3.9 9.1 0 12.3l-192 161c-5.2 4.4-13.1.7-13.1-6.1v-62.7z"], [e, "M321.1 679.1l192-161c3.9-3.2 3.9-9.1 0-12.3l-192-160.9A7.95 7.95 0 0 0 308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 0 0-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48z"]) })), t.CompassTwoTone = l("compass", s, (function (e, t) { return c(i, [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM327.6 701.7c-2 .9-4.4 0-5.3-2.1-.4-1-.4-2.2 0-3.2L421 470.9 553.1 603l-225.5 98.7zm375.1-375.1L604 552.1 471.9 420l225.5-98.7c2-.9 4.4 0 5.3 2.1.4 1 .4 2.1 0 3.2z"], [e, "M322.3 696.4c-.4 1-.4 2.2 0 3.2.9 2.1 3.3 3 5.3 2.1L553.1 603 421 470.9l-98.7 225.5zm375.1-375.1L471.9 420 604 552.1l98.7-225.5c.4-1.1.4-2.2 0-3.2-.9-2.1-3.3-3-5.3-2.1z"], [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"]) })), t.ContactsTwoTone = l("contacts", s, (function (e, t) { return c(i, [t, "M460.3 526a51.7 52 0 1 0 103.4 0 51.7 52 0 1 0-103.4 0z"], [t, "M768 352c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H548v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H328v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H136v496h752V296H768v56zM661 736h-43.8c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 39.9-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5h-43.9a8 8 0 0 1-8-8.4c2.8-53.3 31.9-99.6 74.6-126.1-18.1-20-29.1-46.4-29.1-75.5 0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.6-29.1 75.5 42.7 26.4 71.9 72.8 74.7 126.1a8 8 0 0 1-8 8.4z"], [e, "M594.3 601.5a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1 8 8 0 0 0 8 8.4H407c4.2 0 7.6-3.3 7.9-7.5 3.8-50.6 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H661a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.7-126.1zM512 578c-28.5 0-51.7-23.3-51.7-52s23.2-52 51.7-52 51.7 23.3 51.7 52-23.2 52-51.7 52z"], [e, "M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z"]) })), t.ContainerTwoTone = l("container", s, (function (e, t) { return c(i, [t, "M635 771.7c-34.5 28.6-78.2 44.3-123 44.3s-88.5-15.8-123-44.3a194.02 194.02 0 0 1-59.1-84.7H232v201h560V687h-97.9c-11.6 32.8-32 62.3-59.1 84.7z"], [e, "M320 501h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"], [e, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V687h97.9c11.6 32.8 32 62.3 59.1 84.7 34.5 28.5 78.2 44.3 123 44.3s88.5-15.7 123-44.3c27.1-22.4 47.5-51.9 59.1-84.7H792v201zm0-264H643.6l-5.2 24.7C626.4 708.5 573.2 752 512 752s-114.4-43.5-126.5-103.3l-5.2-24.7H232V136h560v488z"], [e, "M320 341h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"]) })), t.ControlTwoTone = l("control", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M616 440a36 36 0 1 0 72 0 36 36 0 1 0-72 0zM340.4 601.5l1.5 2.4c0 .1.1.1.1.2l.9 1.2c.1.1.2.2.2.3 1 1.3 2 2.5 3.2 3.6l.2.2c.4.4.8.8 1.2 1.1.8.8 1.7 1.5 2.6 2.1h.1l1.2.9c.1.1.3.2.4.3 1.2.8 2.5 1.6 3.9 2.2.2.1.5.2.7.4.4.2.7.3 1.1.5.3.1.7.3 1 .4.5.2 1 .4 1.5.5.4.1.9.3 1.3.4l.9.3 1.4.3c.2.1.5.1.7.2.7.1 1.4.3 2.1.4.2 0 .4 0 .6.1.6.1 1.1.1 1.7.2.2 0 .4 0 .7.1.8 0 1.5.1 2.3.1s1.5 0 2.3-.1c.2 0 .4 0 .7-.1.6 0 1.2-.1 1.7-.2.2 0 .4 0 .6-.1.7-.1 1.4-.2 2.1-.4.2-.1.5-.1.7-.2l1.4-.3.9-.3c.4-.1.9-.3 1.3-.4.5-.2 1-.4 1.5-.5.3-.1.7-.3 1-.4.4-.2.7-.3 1.1-.5.2-.1.5-.2.7-.4 1.3-.7 2.6-1.4 3.9-2.2.1-.1.3-.2.4-.3l1.2-.9h.1c.9-.7 1.8-1.4 2.6-2.1.4-.4.8-.7 1.2-1.1l.2-.2c1.1-1.1 2.2-2.4 3.2-3.6.1-.1.2-.2.2-.3l.9-1.2c0-.1.1-.1.1-.2l1.5-2.4c.1-.2.2-.3.3-.5 2.7-5.1 4.3-10.9 4.3-17s-1.6-12-4.3-17c-.1-.2-.2-.4-.3-.5l-1.5-2.4c0-.1-.1-.1-.1-.2l-.9-1.2c-.1-.1-.2-.2-.2-.3-1-1.3-2-2.5-3.2-3.6l-.2-.2c-.4-.4-.8-.8-1.2-1.1-.8-.8-1.7-1.5-2.6-2.1h-.1l-1.2-.9c-.1-.1-.3-.2-.4-.3-1.2-.8-2.5-1.6-3.9-2.2-.2-.1-.5-.2-.7-.4-.4-.2-.7-.3-1.1-.5-.3-.1-.7-.3-1-.4-.5-.2-1-.4-1.5-.5-.4-.1-.9-.3-1.3-.4l-.9-.3-1.4-.3c-.2-.1-.5-.1-.7-.2-.7-.1-1.4-.3-2.1-.4-.2 0-.4 0-.6-.1-.6-.1-1.1-.1-1.7-.2-.2 0-.4 0-.7-.1-.8 0-1.5-.1-2.3-.1s-1.5 0-2.3.1c-.2 0-.4 0-.7.1-.6 0-1.2.1-1.7.2-.2 0-.4 0-.6.1-.7.1-1.4.2-2.1.4-.2.1-.5.1-.7.2l-1.4.3-.9.3c-.4.1-.9.3-1.3.4-.5.2-1 .4-1.5.5-.3.1-.7.3-1 .4-.4.2-.7.3-1.1.5-.2.1-.5.2-.7.4-1.3.7-2.6 1.4-3.9 2.2-.1.1-.3.2-.4.3l-1.2.9h-.1c-.9.7-1.8 1.4-2.6 2.1-.4.4-.8.7-1.2 1.1l-.2.2a54.8 54.8 0 0 0-3.2 3.6c-.1.1-.2.2-.2.3l-.9 1.2c0 .1-.1.1-.1.2l-1.5 2.4c-.1.2-.2.3-.3.5-2.7 5.1-4.3 10.9-4.3 17s1.6 12 4.3 17c.1.2.2.3.3.5z"], [t, "M184 840h656V184H184v656zm436.4-499.1c-.2 0-.3.1-.4.1v-77c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v77c-.2 0-.3-.1-.4-.1 42 13.4 72.4 52.7 72.4 99.1 0 46.4-30.4 85.7-72.4 99.1.2 0 .3-.1.4-.1v221c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V539c.2 0 .3.1.4.1-42-13.4-72.4-52.7-72.4-99.1 0-46.4 30.4-85.7 72.4-99.1zM340 485V264c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v221c41.7 13.6 72 52.8 72 99s-30.3 85.5-72 99v77c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-77c-41.7-13.6-72-52.8-72-99s30.3-85.5 72-99z"], [e, "M340 683v77c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-77c41.7-13.5 72-52.8 72-99s-30.3-85.4-72-99V264c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v221c-41.7 13.5-72 52.8-72 99s30.3 85.4 72 99zm.1-116c.1-.2.2-.3.3-.5l1.5-2.4c0-.1.1-.1.1-.2l.9-1.2c0-.1.1-.2.2-.3 1-1.2 2.1-2.5 3.2-3.6l.2-.2c.4-.4.8-.7 1.2-1.1.8-.7 1.7-1.4 2.6-2.1h.1l1.2-.9c.1-.1.3-.2.4-.3 1.3-.8 2.6-1.5 3.9-2.2.2-.2.5-.3.7-.4.4-.2.7-.3 1.1-.5.3-.1.7-.3 1-.4.5-.1 1-.3 1.5-.5.4-.1.9-.3 1.3-.4l.9-.3 1.4-.3c.2-.1.5-.1.7-.2.7-.2 1.4-.3 2.1-.4.2-.1.4-.1.6-.1.5-.1 1.1-.2 1.7-.2.3-.1.5-.1.7-.1.8-.1 1.5-.1 2.3-.1s1.5.1 2.3.1c.3.1.5.1.7.1.6.1 1.1.1 1.7.2.2.1.4.1.6.1.7.1 1.4.3 2.1.4.2.1.5.1.7.2l1.4.3.9.3c.4.1.9.3 1.3.4.5.1 1 .3 1.5.5.3.1.7.3 1 .4.4.2.7.3 1.1.5.2.2.5.3.7.4 1.4.6 2.7 1.4 3.9 2.2.1.1.3.2.4.3l1.2.9h.1c.9.6 1.8 1.3 2.6 2.1.4.3.8.7 1.2 1.1l.2.2c1.2 1.1 2.2 2.3 3.2 3.6 0 .1.1.2.2.3l.9 1.2c0 .1.1.1.1.2l1.5 2.4A36.03 36.03 0 0 1 408 584c0 6.1-1.6 11.9-4.3 17-.1.2-.2.3-.3.5l-1.5 2.4c0 .1-.1.1-.1.2l-.9 1.2c0 .1-.1.2-.2.3-1 1.2-2.1 2.5-3.2 3.6l-.2.2c-.4.4-.8.7-1.2 1.1-.8.7-1.7 1.4-2.6 2.1h-.1l-1.2.9c-.1.1-.3.2-.4.3-1.3.8-2.6 1.5-3.9 2.2-.2.2-.5.3-.7.4-.4.2-.7.3-1.1.5-.3.1-.7.3-1 .4-.5.1-1 .3-1.5.5-.4.1-.9.3-1.3.4l-.9.3-1.4.3c-.2.1-.5.1-.7.2-.7.2-1.4.3-2.1.4-.2.1-.4.1-.6.1-.5.1-1.1.2-1.7.2-.3.1-.5.1-.7.1-.8.1-1.5.1-2.3.1s-1.5-.1-2.3-.1c-.3-.1-.5-.1-.7-.1-.6-.1-1.1-.1-1.7-.2-.2-.1-.4-.1-.6-.1-.7-.1-1.4-.3-2.1-.4-.2-.1-.5-.1-.7-.2l-1.4-.3-.9-.3c-.4-.1-.9-.3-1.3-.4-.5-.1-1-.3-1.5-.5-.3-.1-.7-.3-1-.4-.4-.2-.7-.3-1.1-.5-.2-.2-.5-.3-.7-.4-1.4-.6-2.7-1.4-3.9-2.2-.1-.1-.3-.2-.4-.3l-1.2-.9h-.1c-.9-.6-1.8-1.3-2.6-2.1-.4-.3-.8-.7-1.2-1.1l-.2-.2c-1.2-1.1-2.2-2.3-3.2-3.6 0-.1-.1-.2-.2-.3l-.9-1.2c0-.1-.1-.1-.1-.2l-1.5-2.4c-.1-.2-.2-.3-.3-.5-2.7-5-4.3-10.9-4.3-17s1.6-11.9 4.3-17zm280.3-27.9c-.1 0-.2-.1-.4-.1v221c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V539c-.1 0-.2.1-.4.1 42-13.4 72.4-52.7 72.4-99.1 0-46.4-30.4-85.7-72.4-99.1.1 0 .2.1.4.1v-77c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v77c.1 0 .2-.1.4-.1-42 13.4-72.4 52.7-72.4 99.1 0 46.4 30.4 85.7 72.4 99.1zM652 404c19.9 0 36 16.1 36 36s-16.1 36-36 36-36-16.1-36-36 16.1-36 36-36z"]) })), t.CopyTwoTone = l("copy", s, (function (e, t) { return c(i, [t, "M232 706h142c22.1 0 40 17.9 40 40v142h250V264H232v442z"], [e, "M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32z"], [e, "M704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z"]) })), t.CreditCardTwoTone = l("credit-card", s, (function (e, t) { return c(i, [t, "M136 792h752V440H136v352zm507-144c0-4.4 3.6-8 8-8h165c4.4 0 8 3.6 8 8v72c0 4.4-3.6 8-8 8H651c-4.4 0-8-3.6-8-8v-72zM136 232h752v120H136z"], [e, "M651 728h165c4.4 0 8-3.6 8-8v-72c0-4.4-3.6-8-8-8H651c-4.4 0-8 3.6-8 8v72c0 4.4 3.6 8 8 8z"], [e, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V440h752v352zm0-440H136V232h752v120z"]) })), t.CrownTwoTone = l("crown", s, (function (e, t) { return c(i, [t, "M911.9 283.9v.5L835.5 865c-1 8-7.9 14-15.9 14H204.5c-8.1 0-14.9-6.1-16-14l-76.4-580.6v-.6 1.6L188.5 866c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.1-.5.1-1 0-1.5z"], [t, "M773.6 810.6l53.9-409.4-139.8 86.1L512 252.9 336.3 487.3l-139.8-86.1 53.8 409.4h523.3zm-374.2-189c0-62.1 50.5-112.6 112.6-112.6s112.6 50.5 112.6 112.6v1c0 62.1-50.5 112.6-112.6 112.6s-112.6-50.5-112.6-112.6v-1z"], [e, "M512 734.2c61.9 0 112.3-50.2 112.6-112.1v-.5c0-62.1-50.5-112.6-112.6-112.6s-112.6 50.5-112.6 112.6v.5c.3 61.9 50.7 112.1 112.6 112.1zm0-160.9c26.6 0 48.2 21.6 48.2 48.3 0 26.6-21.6 48.3-48.2 48.3s-48.2-21.6-48.2-48.3c0-26.6 21.6-48.3 48.2-48.3z"], [e, "M188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6v-.5c.3-6.4-6.7-10.8-12.3-7.4L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.5-3.4-12.6.9-12.2 7.3v.6L188.5 865zm147.8-377.7L512 252.9l175.7 234.4 139.8-86.1-53.9 409.4H250.3l-53.8-409.4 139.8 86.1z"]) })), t.CustomerServiceTwoTone = l("customer-service", s, (function (e, t) { return c(i, [t, "M696 632h128v192H696zm-496 0h128v192H200z"], [e, "M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384zM328 632v192H200V632h128zm496 192H696V632h128v192z"]) })), t.DashboardTwoTone = l("dashboard", s, (function (e, t) { return c(i, [t, "M512 188c-99.3 0-192.7 38.7-263 109-70.3 70.2-109 163.6-109 263 0 105.6 44.5 205.5 122.6 276h498.8A371.12 371.12 0 0 0 884 560c0-99.3-38.7-192.7-109-263-70.2-70.3-163.6-109-263-109zm-30 44c0-4.4 3.6-8 8-8h44c4.4 0 8 3.6 8 8v80c0 4.4-3.6 8-8 8h-44c-4.4 0-8-3.6-8-8v-80zM270 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44zm90.7-204.4l-31.1 31.1a8.03 8.03 0 0 1-11.3 0l-56.6-56.6a8.03 8.03 0 0 1 0-11.3l31.1-31.1c3.1-3.1 8.2-3.1 11.3 0l56.6 56.6c3.1 3.1 3.1 8.2 0 11.3zm291.1 83.5l-84.5 84.5c5 18.7.2 39.4-14.5 54.1a55.95 55.95 0 0 1-79.2 0 55.95 55.95 0 0 1 0-79.2 55.87 55.87 0 0 1 54.1-14.5l84.5-84.5c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3c3.1 3.1 3.1 8.2 0 11.3zm43-52.4l-31.1-31.1a8.03 8.03 0 0 1 0-11.3l56.6-56.6c3.1-3.1 8.2-3.1 11.3 0l31.1 31.1c3.1 3.1 3.1 8.2 0 11.3l-56.6 56.6a8.03 8.03 0 0 1-11.3 0zM846 538v44c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8z"], [e, "M623.5 421.5a8.03 8.03 0 0 0-11.3 0L527.7 506c-18.7-5-39.4-.2-54.1 14.5a55.95 55.95 0 0 0 0 79.2 55.95 55.95 0 0 0 79.2 0 55.87 55.87 0 0 0 14.5-54.1l84.5-84.5c3.1-3.1 3.1-8.2 0-11.3l-28.3-28.3zM490 320h44c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8h-44c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8z"], [e, "M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM761.4 836H262.6A371.12 371.12 0 0 1 140 560c0-99.4 38.7-192.8 109-263 70.3-70.3 163.7-109 263-109 99.4 0 192.8 38.7 263 109 70.3 70.3 109 163.7 109 263 0 105.6-44.5 205.5-122.6 276z"], [e, "M762.7 340.8l-31.1-31.1a8.03 8.03 0 0 0-11.3 0l-56.6 56.6a8.03 8.03 0 0 0 0 11.3l31.1 31.1c3.1 3.1 8.2 3.1 11.3 0l56.6-56.6c3.1-3.1 3.1-8.2 0-11.3zM750 538v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8zM304.1 309.7a8.03 8.03 0 0 0-11.3 0l-31.1 31.1a8.03 8.03 0 0 0 0 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l31.1-31.1c3.1-3.1 3.1-8.2 0-11.3l-56.6-56.6zM262 530h-80c-4.4 0-8 3.6-8 8v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8z"]) })), t.DeleteTwoTone = l("delete", s, (function (e, t) { return c(i, [t, "M292.7 840h438.6l24.2-512h-487z"], [e, "M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-504-72h304v72H360v-72zm371.3 656H292.7l-24.2-512h487l-24.2 512z"]) })), t.DiffTwoTone = l("diff", s, (function (e, t) { return c(i, [t, "M232 264v624h432V413.8L514.2 264H232zm336 489c0 3.8-3.4 7-7.5 7h-225c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7h225c4.1 0 7.5 3.2 7.5 7v42zm0-262v42c0 3.8-3.4 7-7.5 7H476v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V540h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H420v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1V484h84.5c4.1 0 7.5 3.1 7.5 7z"], [e, "M854.2 306.6L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23z"], [e, "M553.4 201.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM664 888H232V264h282.2L664 413.8V888z"], [e, "M476 399.1c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1V484h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H420v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V540h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H476v-84.9zM560.5 704h-225c-4.1 0-7.5 3.2-7.5 7v42c0 3.8 3.4 7 7.5 7h225c4.1 0 7.5-3.2 7.5-7v-42c0-3.8-3.4-7-7.5-7z"]) })), t.DatabaseTwoTone = l("database", s, (function (e, t) { return c(i, [t, "M232 616h560V408H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 888h560V680H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 344h560V136H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"], [e, "M304 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-544a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"], [e, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V680h560v208zm0-272H232V408h560v208zm0-272H232V136h560v208z"]) })), t.DislikeTwoTone = l("dislike", s, (function (e, t) { return c(i, [t, "M273 100.1v428h.3l-.3-428zM820.4 525l-21.9-19 14-25.5a56.2 56.2 0 0 0 6.9-27.3c0-16.5-7.1-32.2-19.6-43l-21.9-19 13.9-25.4a56.2 56.2 0 0 0 6.9-27.3c0-16.5-7.1-32.2-19.6-43l-21.9-19 13.9-25.4a56.2 56.2 0 0 0 6.9-27.3c0-22.4-13.2-42.6-33.6-51.8H345v345.2c18.6 67.2 46.4 168 83.5 302.5a44.28 44.28 0 0 0 42.2 32.3c7.5.1 15-2.2 21.1-6.7 9.9-7.4 15.2-18.6 14.6-30.5l-9.6-198.4h314.4C829 605.5 840 587.1 840 568c0-16.5-7.1-32.2-19.6-43z"], [e, "M112 132v364c0 17.7 14.3 32 32 32h65V100h-65c-17.7 0-32 14.3-32 32zm773.9 358.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H273l.3 428 85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zm-74.7 126.1H496.8l9.6 198.4c.6 11.9-4.7 23.1-14.6 30.5-6.1 4.5-13.6 6.8-21.1 6.7a44.28 44.28 0 0 1-42.2-32.3c-37.1-134.4-64.9-235.2-83.5-302.5V172h399.4a56.85 56.85 0 0 1 33.6 51.8c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-14 25.5 21.9 19a56.76 56.76 0 0 1 19.6 43c0 19.1-11 37.5-28.8 48.4z"]) })), t.DownCircleTwoTone = l("down-circle", s, (function (e, t) { return c(i, [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm184.4 277.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.3 0 19.9 4.9 25.9 13.2L512 563.6l105.2-145.4c6-8.3 15.7-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.4 12.7z"], [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [e, "M690 405h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 563.6 406.8 418.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7z"]) })), t.DownSquareTwoTone = l("down-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm150-440h46.9c10.3 0 19.9 4.9 25.9 13.2L512 558.6l105.2-145.4c6-8.3 15.7-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.4 12.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7z"], [e, "M505.5 658.7c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 558.6 406.8 413.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246z"]) })), t.EnvironmentTwoTone = l("environment", s, (function (e, t) { return c(i, [t, "M724.4 224.9C667.7 169.5 592.3 139 512 139s-155.7 30.5-212.4 85.8C243.1 280 212 353.2 212 431.1c0 241.3 234.1 407.2 300 449.1 65.9-41.9 300-207.8 300-449.1 0-77.9-31.1-151.1-87.6-206.2zM512 615c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z"], [e, "M512 263c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 551c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 439c0-29.9 11.7-58 32.8-79.2C454 338.6 482.1 327 512 327c29.9 0 58 11.6 79.2 32.8S624 409.1 624 439c0 29.9-11.6 58-32.8 79.2z"], [e, "M854.6 289.1a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 880.2c-65.9-41.9-300-207.8-300-449.1 0-77.9 31.1-151.1 87.6-206.3C356.3 169.5 431.7 139 512 139s155.7 30.5 212.4 85.9C780.9 280 812 353.2 812 431.1c0 241.3-234.1 407.2-300 449.1z"]) })), t.EditTwoTone = l("edit", s, (function (e, t) { return c(i, [t, "M761.1 288.3L687.8 215 325.1 577.6l-15.6 89 88.9-15.7z"], [e, "M880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32zm-622.3-84c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89z"]) })), t.ExclamationCircleTwoTone = l("exclamation-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-32 156c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"], [e, "M488 576h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8zm-24 112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"]) })), t.ExperimentTwoTone = l("experiment", s, (function (e, t) { return c(i, [t, "M551.9 513c19.6 0 35.9-14.2 39.3-32.8A40.02 40.02 0 0 1 552 512a40 40 0 0 1-40-39.4v.5c0 22 17.9 39.9 39.9 39.9zM752 687.8l-.3-.3c-29-17.5-62.3-26.8-97-26.8-44.9 0-87.2 15.7-121 43.8a256.27 256.27 0 0 1-164.9 59.9c-41.2 0-81-9.8-116.7-28L210.5 844h603l-59.9-155.2-1.6-1z"], [e, "M879 824.9L696.3 352V178H768v-68H256v68h71.7v174L145 824.9c-2.8 7.4-4.3 15.2-4.3 23.1 0 35.3 28.7 64 64 64h614.6c7.9 0 15.7-1.5 23.1-4.3 33-12.7 49.4-49.8 36.6-82.8zM395.7 364.7V180h232.6v184.7L719.2 600c-20.7-5.3-42.1-8-63.9-8-61.2 0-119.2 21.5-165.3 60a188.78 188.78 0 0 1-121.3 43.9c-32.7 0-64.1-8.3-91.8-23.7l118.8-307.5zM210.5 844l41.6-107.6.1-.2c35.7 18.1 75.4 27.8 116.6 27.8 61.2 0 119.2-21.5 165.3-60 33.9-28.2 76.3-43.9 121.3-43.9 35 0 68.4 9.5 97.6 27.1l.6 1.6L813.5 844h-603z"], [e, "M552 512c19.3 0 35.4-13.6 39.2-31.8.6-2.7.8-5.4.8-8.2 0-22.1-17.9-40-40-40s-40 17.9-40 40v.6a40 40 0 0 0 40 39.4z"]) })), t.EyeInvisibleTwoTone = l("eye-invisible", s, (function (e, t) { return c(i, [t, "M254.89 758.85l125.57-125.57a176 176 0 0 1 248.82-248.82L757 256.72Q651.69 186.07 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q69.27 145.91 173.09 221.05zM942.2 486.2Q889.46 375.11 816.7 305L672.48 449.27a176.09 176.09 0 0 1-227.22 227.21L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5z"], [e, "M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5zM878.63 165.56L836 122.88a8 8 0 0 0-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 0 0 0 11.31L155.17 889a8 8 0 0 0 11.31 0l712.15-712.12a8 8 0 0 0 0-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 0 0-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 0 1 146.2-106.69L401.31 546.2A112 112 0 0 1 396 512z"], [e, "M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 0 0 227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 0 1-112 112z"]) })), t.EyeTwoTone = l("eye", s, (function (e, t) { return c(i, [t, "M81.8 537.8a60.3 60.3 0 0 1 0-51.5C176.6 286.5 319.8 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c-192.1 0-335.4-100.5-430.2-300.2z"], [t, "M512 258c-161.3 0-279.4 81.8-362.7 254C232.6 684.2 350.7 766 512 766c161.4 0 279.5-81.8 362.7-254C791.4 339.8 673.3 258 512 258zm-4 430c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z"], [e, "M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258s279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766z"], [e, "M508 336c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"]) })), t.FileAddTwoTone = l("file-add", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm126 236v48c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V644H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V472c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M544 472c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V472z"]) })), t.FileExclamationTwoTone = l("file-exclamation", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-54 96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V448zm32 336c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M488 640h48c4.4 0 8-3.6 8-8V448c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm-16 104a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"]) })), t.FileImageTwoTone = l("file-image", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-134 50c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm296 294H328.1c-6.7 0-10.4-7.7-6.3-12.9l99.8-127.2a8 8 0 0 1 12.6 0l41.1 52.4 77.8-99.2a8.1 8.1 0 0 1 12.7 0l136.5 174c4.1 5.2.4 12.9-6.3 12.9z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M553.1 509.1l-77.8 99.2-41.1-52.4a8 8 0 0 0-12.6 0l-99.8 127.2a7.98 7.98 0 0 0 6.3 12.9H696c6.7 0 10.4-7.7 6.3-12.9l-136.5-174a8.1 8.1 0 0 0-12.7 0zM360 442a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"]) })), t.FileExcelTwoTone = l("file-excel", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm51.6 120h35.7a12.04 12.04 0 0 1 10.1 18.5L546.1 623l84 130.4c3.6 5.6 2 13-3.6 16.6-2 1.2-4.2 1.9-6.5 1.9h-37.5c-4.1 0-8-2.1-10.2-5.7L510 664.8l-62.7 101.5c-2.2 3.5-6 5.7-10.2 5.7h-34.5a12.04 12.04 0 0 1-10.2-18.4l83.4-132.8-82.3-130.4c-3.6-5.7-1.9-13.1 3.7-16.6 1.9-1.3 4.1-1.9 6.4-1.9H442c4.2 0 8.1 2.2 10.3 5.8l61.8 102.4 61.2-102.3c2.2-3.6 6.1-5.8 10.3-5.8z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M514.1 580.1l-61.8-102.4c-2.2-3.6-6.1-5.8-10.3-5.8h-38.4c-2.3 0-4.5.6-6.4 1.9-5.6 3.5-7.3 10.9-3.7 16.6l82.3 130.4-83.4 132.8a12.04 12.04 0 0 0 10.2 18.4h34.5c4.2 0 8-2.2 10.2-5.7L510 664.8l62.3 101.4c2.2 3.6 6.1 5.7 10.2 5.7H620c2.3 0 4.5-.7 6.5-1.9 5.6-3.6 7.2-11 3.6-16.6l-84-130.4 85.3-132.5a12.04 12.04 0 0 0-10.1-18.5h-35.7c-4.2 0-8.1 2.2-10.3 5.8l-61.2 102.3z"]) })), t.FileMarkdownTwoTone = l("file-markdown", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm72.3 122H641c6.6 0 12 5.4 12 12v272c0 6.6-5.4 12-12 12h-27.2c-6.6 0-12-5.4-12-12V581.7L535 732.3c-2 4.3-6.3 7.1-11 7.1h-24.1a12 12 0 0 1-11-7.1l-66.8-150.2V758c0 6.6-5.4 12-12 12H383c-6.6 0-12-5.4-12-12V486c0-6.6 5.4-12 12-12h35c4.8 0 9.1 2.8 11 7.2l83.2 191 83.1-191c1.9-4.4 6.2-7.2 11-7.2z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M429 481.2c-1.9-4.4-6.2-7.2-11-7.2h-35c-6.6 0-12 5.4-12 12v272c0 6.6 5.4 12 12 12h27.1c6.6 0 12-5.4 12-12V582.1l66.8 150.2a12 12 0 0 0 11 7.1H524c4.7 0 9-2.8 11-7.1l66.8-150.6V758c0 6.6 5.4 12 12 12H641c6.6 0 12-5.4 12-12V486c0-6.6-5.4-12-12-12h-34.7c-4.8 0-9.1 2.8-11 7.2l-83.1 191-83.2-191z"]) })), t.FilePdfTwoTone = l("file-pdf", s, (function (e, t) { return c(i, [t, "M509.2 490.8c-.7-1.3-1.4-1.9-2.2-2-2.9 3.3-2.2 31.5 2.7 51.4 4-13.6 4.7-40.5-.5-49.4zm-1.6 120.5c-7.7 20-18.8 47.3-32.1 71.4 4-1.6 8.1-3.3 12.3-5 17.6-7.2 37.3-15.3 58.9-20.2-14.9-11.8-28.4-27.7-39.1-46.2z"], [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm55 287.6c16.1-1.9 30.6-2.8 44.3-2.3 12.8.4 23.6 2 32 5.1.2.1.3.1.5.2.4.2.8.3 1.2.5.5.2 1.1.4 1.6.7.1.1.3.1.4.2 4.1 1.8 7.5 4 10.1 6.6 9.1 9.1 11.8 26.1 6.2 39.6-3.2 7.7-11.7 20.5-33.3 20.5-21.8 0-53.9-9.7-82.1-24.8-25.5 4.3-53.7 13.9-80.9 23.1-5.8 2-11.8 4-17.6 5.9-38 65.2-66.5 79.4-84.1 79.4-4.2 0-7.8-.9-10.8-2-6.9-2.6-12.8-8-16.5-15-.9-1.7-1.6-3.4-2.2-5.2-1.6-4.8-2.1-9.6-1.3-13.6l.6-2.7c.1-.2.1-.4.2-.6.2-.7.4-1.4.7-2.1 0-.1.1-.2.1-.3 4.1-11.9 13.6-23.4 27.7-34.6 12.3-9.8 27.1-18.7 45.9-28.4 15.9-28 37.6-75.1 51.2-107.4-10.8-41.8-16.7-74.6-10.1-98.6.9-3.3 2.5-6.4 4.6-9.1.2-.2.3-.4.5-.6.1-.1.1-.2.2-.2 6.3-7.5 16.9-11.9 28.1-11.5 16.6.7 29.7 11.5 33 30.1 1.7 8 2.2 16.5 1.9 25.7v.7c0 .5 0 1-.1 1.5-.7 13.3-3 26.6-7.3 44.7-.4 1.6-.8 3.2-1.2 5.2l-1 4.1-.1.3c.1.2.1.3.2.5l1.8 4.5c.1.3.3.7.4 1 .7 1.6 1.4 3.3 2.1 4.8v.1c8.7 18.8 19.7 33.4 33.9 45.1 4.3 3.5 8.9 6.7 13.9 9.8 1.8-.5 3.5-.7 5.3-.9z"], [t, "M391.5 761c5.7-4.4 16.2-14.5 30.1-34.7-10.3 9.4-23.4 22.4-30.1 34.7zm270.9-83l.2-.3h.2c.6-.4.5-.7.4-.9-.1-.1-4.5-9.3-45.1-7.4 35.3 13.9 43.5 9.1 44.3 8.6z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M535.9 585.3c-.8-1.7-1.5-3.3-2.2-4.9-.1-.3-.3-.7-.4-1l-1.8-4.5c-.1-.2-.1-.3-.2-.5l.1-.3.2-1.1c4-16.3 8.6-35.3 9.4-54.4v-.7c.3-8.6-.2-17.2-2-25.6-3.8-21.3-19.5-29.6-32.9-30.2-11.3-.5-21.8 4-28.1 11.4-.1.1-.1.2-.2.2-.2.2-.4.4-.5.6-2.1 2.7-3.7 5.8-4.6 9.1-6.6 24-.7 56.8 10.1 98.6-13.6 32.4-35.3 79.4-51.2 107.4v.1c-27.7 14.3-64.1 35.8-73.6 62.9 0 .1-.1.2-.1.3-.2.7-.5 1.4-.7 2.1-.1.2-.1.4-.2.6-.2.9-.5 1.8-.6 2.7-.9 4-.4 8.8 1.3 13.6.6 1.8 1.3 3.5 2.2 5.2 3.7 7 9.6 12.4 16.5 15 3 1.1 6.6 2 10.8 2 17.6 0 46.1-14.2 84.1-79.4 5.8-1.9 11.8-3.9 17.6-5.9 27.2-9.2 55.4-18.8 80.9-23.1 28.2 15.1 60.3 24.8 82.1 24.8 21.6 0 30.1-12.8 33.3-20.5 5.6-13.5 2.9-30.5-6.2-39.6-2.6-2.6-6-4.8-10.1-6.6-.1-.1-.3-.1-.4-.2-.5-.2-1.1-.4-1.6-.7-.4-.2-.8-.3-1.2-.5-.2-.1-.3-.1-.5-.2-16.2-5.8-41.7-6.7-76.3-2.8l-5.3.6c-5-3-9.6-6.3-13.9-9.8-14.2-11.3-25.1-25.8-33.8-44.7zM391.5 761c6.7-12.3 19.8-25.3 30.1-34.7-13.9 20.2-24.4 30.3-30.1 34.7zM507 488.8c.8.1 1.5.7 2.2 2 5.2 8.9 4.5 35.8.5 49.4-4.9-19.9-5.6-48.1-2.7-51.4zm-19.2 188.9c-4.2 1.7-8.3 3.4-12.3 5 13.3-24.1 24.4-51.4 32.1-71.4 10.7 18.5 24.2 34.4 39.1 46.2-21.6 4.9-41.3 13-58.9 20.2zm175.4-.9c.1.2.2.5-.4.9h-.2l-.2.3c-.8.5-9 5.3-44.3-8.6 40.6-1.9 45 7.3 45.1 7.4z"]) })), t.FilePptTwoTone = l("file-ppt", s, (function (e, t) { return c(i, [t, "M464.5 516.2v108.4h38.9c44.7 0 71.2-10.9 71.2-54.3 0-34.4-20.1-54.1-53.9-54.1h-56.2z"], [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm90 218.4c0 55.2-36.8 94.1-96.2 94.1h-63.3V760c0 4.4-3.6 8-8 8H424c-4.4 0-8-3.6-8-8V484c0-4.4 3.6-8 8-8v.1h104c59.7 0 96 39.8 96 94.3z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M424 476.1c-4.4-.1-8 3.5-8 7.9v276c0 4.4 3.6 8 8 8h32.5c4.4 0 8-3.6 8-8v-95.5h63.3c59.4 0 96.2-38.9 96.2-94.1 0-54.5-36.3-94.3-96-94.3H424zm150.6 94.2c0 43.4-26.5 54.3-71.2 54.3h-38.9V516.2h56.2c33.8 0 53.9 19.7 53.9 54.1z"]) })), t.FileTextTwoTone = l("file-text", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-22 322c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm200-184v48c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8zm192 128H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"]) })), t.FileUnknownTwoTone = l("file-unknown", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-22 424c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm110-228.4c.7 44.9-29.7 84.5-74.3 98.9-5.7 1.8-9.7 7.3-9.7 13.3V672c0 5.5-4.5 10-10 10h-32c-5.5 0-10-4.5-10-10v-32c.2-19.8 15.4-37.3 34.7-40.1C549 596.2 570 574.3 570 549c0-28.1-25.8-51.5-58-51.5s-58 23.4-58 51.6c0 5.2-4.4 9.4-9.8 9.4h-32.4c-5.4 0-9.8-4.1-9.8-9.5 0-57.4 50.1-103.7 111.5-103 59.3.8 107.7 46.1 108.5 101.6z"], [e, "M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M480 744a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm-78-195c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103z"]) })), t.FileZipTwoTone = l("file-zip", s, (function (e, t) { return c(i, [t, "M344 630h32v2h-32z"], [t, "M534 352V136H360v64h64v64h-64v64h64v64h-64v64h64v64h-64v62h64v160H296V520h64v-64h-64v-64h64v-64h-64v-64h64v-64h-64v-64h-64v752h560V394H576a42 42 0 0 1-42-42z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h64v64h64v-64h174v216a42 42 0 0 0 42 42h216v494z"], [e, "M296 392h64v64h-64zm0-128h64v64h-64zm0 318v160h128V582h-64v-62h-64v62zm48 50v-2h32v64h-32v-62zm16-432h64v64h-64zm0 256h64v64h-64zm0-128h64v64h-64z"]) })), t.FileWordTwoTone = l("file-word", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm101.3 129.3c1.3-5.4 6.1-9.3 11.7-9.3h35.6a12.04 12.04 0 0 1 11.6 15.1l-74.4 276c-1.4 5.3-6.2 8.9-11.6 8.9h-31.8c-5.4 0-10.2-3.7-11.6-8.9l-52.8-197-52.8 197c-1.4 5.3-6.2 8.9-11.6 8.9h-32c-5.4 0-10.2-3.7-11.6-8.9l-74.2-276a12.02 12.02 0 0 1 11.6-15.1h35.4c5.6 0 10.4 3.9 11.7 9.3L434.6 680l49.7-198.9c1.3-5.4 6.1-9.1 11.6-9.1h32.2c5.5 0 10.3 3.7 11.6 9.1l49.8 199.3 45.8-199.1z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"], [e, "M528.1 472h-32.2c-5.5 0-10.3 3.7-11.6 9.1L434.6 680l-46.1-198.7c-1.3-5.4-6.1-9.3-11.7-9.3h-35.4a12.02 12.02 0 0 0-11.6 15.1l74.2 276c1.4 5.2 6.2 8.9 11.6 8.9h32c5.4 0 10.2-3.6 11.6-8.9l52.8-197 52.8 197c1.4 5.2 6.2 8.9 11.6 8.9h31.8c5.4 0 10.2-3.6 11.6-8.9l74.4-276a12.04 12.04 0 0 0-11.6-15.1H647c-5.6 0-10.4 3.9-11.7 9.3l-45.8 199.1-49.8-199.3c-1.3-5.4-6.1-9.1-11.6-9.1z"]) })), t.FileTwoTone = l("file", s, (function (e, t) { return c(i, [t, "M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42z"], [e, "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z"]) })), t.FilterTwoTone = l("filter", s, (function (e, t) { return c(i, [t, "M420.6 798h182.9V642H420.6zM411 561.4l9.5 16.6h183l9.5-16.6L811.3 226H212.7z"], [e, "M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.5 798H420.6V642h182.9v156zm9.5-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z"]) })), t.FireTwoTone = l("fire", s, (function (e, t) { return c(i, [t, "M737 438.6c-9.6 15.5-21.1 30.7-34.4 45.6a73.1 73.1 0 0 1-51 24.4 73.36 73.36 0 0 1-53.4-18.8 74.01 74.01 0 0 1-24.4-59.8c3-47.4-12.4-103.1-45.8-165.7-16.9-31.4-37.1-58.2-61.2-80.4a240 240 0 0 1-12.1 46.5 354.26 354.26 0 0 1-58.2 101 349.6 349.6 0 0 1-58.6 56.8c-34 26.1-62 60-80.8 97.9a275.96 275.96 0 0 0-29.1 124c0 74.9 29.5 145.3 83 198.4 53.7 53.2 125 82.4 201 82.4s147.3-29.2 201-82.4c53.5-53 83-123.5 83-198.4 0-39.2-8.1-77.3-24-113.1-9.3-21-21-40.5-35-58.4z"], [e, "M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9zM713 808.5c-53.7 53.2-125 82.4-201 82.4s-147.3-29.2-201-82.4c-53.5-53.1-83-123.5-83-198.4 0-43.5 9.8-85.2 29.1-124 18.8-37.9 46.8-71.8 80.8-97.9a349.6 349.6 0 0 0 58.6-56.8c25-30.5 44.6-64.5 58.2-101a240 240 0 0 0 12.1-46.5c24.1 22.2 44.3 49 61.2 80.4 33.4 62.6 48.8 118.3 45.8 165.7a74.01 74.01 0 0 0 24.4 59.8 73.36 73.36 0 0 0 53.4 18.8c19.7-1 37.8-9.7 51-24.4 13.3-14.9 24.8-30.1 34.4-45.6 14 17.9 25.7 37.4 35 58.4 15.9 35.8 24 73.9 24 113.1 0 74.9-29.5 145.4-83 198.4z"]) })), t.FolderAddTwoTone = l("folder-add", s, (function (e, t) { return c(i, [t, "M372.5 256H184v512h656V370.4H492.1L372.5 256zM540 443.1V528h84.5c4.1 0 7.5 3.1 7.5 7v42c0 3.8-3.4 7-7.5 7H540v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V584h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H484v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1z"], [e, "M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z"], [e, "M484 443.1V528h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H484v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V584h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H540v-84.9c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1z"]) })), t.FlagTwoTone = l("flag", s, (function (e, t) { return c(i, [t, "M184 232h368v336H184z"], [t, "M624 632c0 4.4-3.6 8-8 8H504v73h336V377H624v255z"], [e, "M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32zM184 568V232h368v336H184zm656 145H504v-73h112c4.4 0 8-3.6 8-8V377h216v336z"]) })), t.FolderTwoTone = l("folder", s, (function (e, t) { return c(i, [e, "M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z"], [t, "M372.5 256H184v512h656V370.4H492.1z"]) })), t.FolderOpenTwoTone = l("folder-open", s, (function (e, t) { return c(i, [t, "M159 768h612.3l103.4-256H262.3z"], [e, "M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z"]) })), t.FrownTwoTone = l("frown", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm376 272h-48.1c-4.2 0-7.8-3.2-8.1-7.4C604 636.1 562.5 597 512 597s-92.1 39.1-95.8 88.6c-.3 4.2-3.9 7.4-8.1 7.4H360a8 8 0 0 1-8-8.4c4.4-84.3 74.5-151.6 160-151.6s155.6 67.3 160 151.6a8 8 0 0 1-8 8.4zm24-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"], [e, "M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm224 112c-85.5 0-155.6 67.3-160 151.6a8 8 0 0 0 8 8.4h48.1c4.2 0 7.8-3.2 8.1-7.4 3.7-49.5 45.3-88.6 95.8-88.6s92 39.1 95.8 88.6c.3 4.2 3.9 7.4 8.1 7.4H664a8 8 0 0 0 8-8.4C667.6 600.3 597.5 533 512 533zm128-112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"]) })), t.FundTwoTone = l("fund", s, (function (e, t) { return c(i, [e, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560z"], [t, "M136 792h752V232H136v560zm56.4-130.5l214.9-215c3.1-3.1 8.2-3.1 11.3 0L533 561l254.5-254.6c3.1-3.1 8.2-3.1 11.3 0l36.8 36.8c3.1 3.1 3.1 8.2 0 11.3l-297 297.2a8.03 8.03 0 0 1-11.3 0L412.9 537.2 240.4 709.7a8.03 8.03 0 0 1-11.3 0l-36.7-36.9a8.03 8.03 0 0 1 0-11.3z"], [e, "M229.1 709.7c3.1 3.1 8.2 3.1 11.3 0l172.5-172.5 114.4 114.5c3.1 3.1 8.2 3.1 11.3 0l297-297.2c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 0 0-11.3 0L533 561 418.6 446.5a8.03 8.03 0 0 0-11.3 0l-214.9 215a8.03 8.03 0 0 0 0 11.3l36.7 36.9z"]) })), t.FunnelPlotTwoTone = l("funnel-plot", s, (function (e, t) { return c(i, [t, "M420.6 798h182.9V650H420.6zM297.7 374h428.6l85-148H212.7zm113.2 197.4l8.4 14.6h185.3l8.4-14.6L689.6 438H334.4z"], [e, "M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 607.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V607.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.5 798H420.6V650h182.9v148zm9.5-226.6l-8.4 14.6H419.3l-8.4-14.6L334.4 438h355.2L613 571.4zM726.3 374H297.7l-85-148h598.6l-85 148z"]) })), t.GiftTwoTone = l("gift", s, (function (e, t) { return c(i, [t, "M546 378h298v104H546zM228 550h250v308H228zm-48-172h298v104H180zm366 172h250v308H546z"], [e, "M880 310H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v200c0 4.4 3.6 8 8 8h40v344c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V550h40c4.4 0 8-3.6 8-8V342c0-17.7-14.3-32-32-32zM478 858H228V550h250v308zm0-376H180V378h298v104zm0-176h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70 70 31.4 70 70v70zm68-70c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70h-70v-70zm250 622H546V550h250v308zm48-376H546V378h298v104z"]) })), t.HddTwoTone = l("hdd", s, (function (e, t) { return c(i, [t, "M232 888h560V680H232v208zm448-140c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 616h560V408H232v208zm72-128c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H312c-4.4 0-8-3.6-8-8v-48zm-72-144h560V136H232v208zm72-128c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H312c-4.4 0-8-3.6-8-8v-48z"], [e, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V680h560v208zm0-272H232V408h560v208zm0-272H232V136h560v208z"], [e, "M312 544h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-272h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm328 516a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"]) })), t.HeartTwoTone = l("heart", s, (function (e, t) { return c(i, [e, "M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z"], [t, "M679.7 201c-73.1 0-136.5 40.8-167.7 100.4C480.8 241.8 417.4 201 344.3 201c-104 0-188.3 82.6-188.3 184.5 0 201.2 356 429.3 356 429.3s356-228.1 356-429.3C868 283.6 783.7 201 679.7 201z"]) })), t.HighlightTwoTone = l("highlight", s, (function (e, t) { return c(i, [t, "M229.6 796.3h160.2l54.3-54.1-80.1-78.9zm220.7-397.1l262.8 258.9 147.3-145-262.8-259zm-77.1 166.1l171.4 168.9 68.6-67.6-171.4-168.9z"], [e, "M957.6 507.5L603.2 158.3a7.9 7.9 0 0 0-11.2 0L353.3 393.5a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8v55.2c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6L539 830a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2zM389.8 796.3H229.6l134.4-133 80.1 78.9-54.3 54.1zm154.8-62.1L373.2 565.3l68.6-67.6 171.4 168.9-68.6 67.6zm168.5-76.1L450.3 399.2l147.3-145.1 262.8 259-147.3 145z"]) })), t.HomeTwoTone = l("home", s, (function (e, t) { return c(i, [t, "M512.1 172.6l-370 369.7h96V868H392V640c0-22.1 17.9-40 40-40h160c22.1 0 40 17.9 40 40v228h153.9V542.3H882L535.2 195.7l-23.1-23.1zm434.5 422.9c-6 6-13.1 10.8-20.8 13.9 7.7-3.2 14.8-7.9 20.8-13.9zm-887-34.7c5 30.3 31.4 53.5 63.1 53.5h.9c-31.9 0-58.9-23-64-53.5zm-.9-10.5v-1.9 1.9zm.1-2.6c.1-3.1.5-6.1 1-9.1-.6 2.9-.9 6-1 9.1z"], [e, "M951 510c0-.1-.1-.1-.1-.2l-1.8-2.1c-.1-.1-.2-.3-.4-.4-.7-.8-1.5-1.6-2.2-2.4L560.1 118.8l-25.9-25.9a31.5 31.5 0 0 0-44.4 0L77.5 505a63.6 63.6 0 0 0-16 26.6l-.6 2.1-.3 1.1-.3 1.2c-.2.7-.3 1.4-.4 2.1 0 .1 0 .3-.1.4-.6 3-.9 6-1 9.1v3.3c0 .5 0 1 .1 1.5 0 .5 0 .9.1 1.4 0 .5.1 1 .1 1.5 0 .6.1 1.2.2 1.8 0 .3.1.6.1.9l.3 2.5v.1c5.1 30.5 32.2 53.5 64 53.5h42.5V940h691.7V614.3h43.4c8.6 0 16.9-1.7 24.5-4.9s14.7-7.9 20.8-13.9a63.6 63.6 0 0 0 18.7-45.3c0-14.7-5-28.8-14.3-40.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z"]) })), t.HourglassTwoTone = l("hourglass", s, (function (e, t) { return c(i, [t, "M512 548c-42.2 0-81.9 16.4-111.7 46.3A156.63 156.63 0 0 0 354 706v134h316V706c0-42.2-16.4-81.9-46.3-111.7A156.63 156.63 0 0 0 512 548zM354 318c0 42.2 16.4 81.9 46.3 111.7C430.1 459.6 469.8 476 512 476s81.9-16.4 111.7-46.3C653.6 399.9 670 360.2 670 318V184H354v134z"], [e, "M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194zm-72 388v134H354V706c0-42.2 16.4-81.9 46.3-111.7C430.1 564.4 469.8 548 512 548s81.9 16.4 111.7 46.3C653.6 624.1 670 663.8 670 706zm0-388c0 42.2-16.4 81.9-46.3 111.7C593.9 459.6 554.2 476 512 476s-81.9-16.4-111.7-46.3A156.63 156.63 0 0 1 354 318V184h316v134z"]) })), t.Html5TwoTone = l("html5", s, (function (e, t) { return c(i, [e, "M145 96l66 746.6L511.8 928l299.6-85.4L878.7 96H145zm610.9 700.6l-244.1 69.6-245.2-69.6-56.7-641.2h603.8l-57.8 641.2z"], [t, "M209.9 155.4l56.7 641.2 245.2 69.6 244.1-69.6 57.8-641.2H209.9zm530.4 117.9l-4.8 47.2-1.7 19.5H381.7l8.2 94.2H511v-.2h214.7l-3.2 24.3-21.2 242.2-1.7 16.3-187.7 51.7v.4h-1.7l-188.6-52-11.3-144.7h91l6.5 73.2 102.4 27.7h.8v-.2l102.4-27.7 11.4-118.5H511.9v.1H305.4l-22.7-253.5L281 249h461l-1.7 24.3z"], [e, "M281 249l1.7 24.3 22.7 253.5h206.5v-.1h112.9l-11.4 118.5L511 672.9v.2h-.8l-102.4-27.7-6.5-73.2h-91l11.3 144.7 188.6 52h1.7v-.4l187.7-51.7 1.7-16.3 21.2-242.2 3.2-24.3H511v.2H389.9l-8.2-94.2h352.1l1.7-19.5 4.8-47.2L742 249H511z"]) })), t.IdcardTwoTone = l("idcard", s, (function (e, t) { return c(i, [e, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560z"], [t, "M136 792h752V232H136v560zm472-372c0-4.4 1-8 2.3-8h123.4c1.3 0 2.3 3.6 2.3 8v48c0 4.4-1 8-2.3 8H610.3c-1.3 0-2.3-3.6-2.3-8v-48zm0 144c0-4.4 3.2-8 7.1-8h185.7c3.9 0 7.1 3.6 7.1 8v48c0 4.4-3.2 8-7.1 8H615.1c-3.9 0-7.1-3.6-7.1-8v-48zM216.2 664.6c2.8-53.3 31.9-99.6 74.6-126.1-18.1-20-29.1-46.4-29.1-75.5 0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.6-29.1 75.5 42.6 26.4 71.8 72.8 74.6 126.1a8 8 0 0 1-8 8.4h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H224c-4.6 0-8.2-3.8-7.8-8.4z"], [t, "M321.3 463a51.7 52 0 1 0 103.4 0 51.7 52 0 1 0-103.4 0z"], [e, "M610.3 476h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48c0 4.4 1 8 2.3 8zm4.8 144h185.7c3.9 0 7.1-3.6 7.1-8v-48c0-4.4-3.2-8-7.1-8H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8zM224 673h43.9c4.2 0 7.6-3.3 7.9-7.5 3.8-50.5 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H522a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.6-126.1a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1c-.4 4.6 3.2 8.4 7.8 8.4zm149-262c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52-51.7-23.3-51.7-52 23.2-52 51.7-52z"]) })), t.InfoCircleTwoTone = l("info-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm32 588c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"], [e, "M464 336a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z"]) })), t.InsuranceTwoTone = l("insurance", s, (function (e, t) { return c(i, [e, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z"], [t, "M521.9 358.8h97.9v41.6h-97.9z"], [t, "M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM413.3 656h-.2c0 4.4-3.6 8-8 8h-37.3c-4.4 0-8-3.6-8-8V471.4c-7.7 9.2-15.4 17.9-23.1 26a6.04 6.04 0 0 1-10.2-2.4l-13.2-43.5c-.6-2-.2-4.1 1.2-5.6 37-43.4 64.7-95.1 82.2-153.6 1.1-3.5 5-5.3 8.4-3.7l38.6 18.3c2.7 1.3 4.1 4.4 3.2 7.2a429.2 429.2 0 0 1-33.6 79V656zm257.9-340v127.2c0 4.4-3.6 8-8 8h-66.7v18.6h98.8c4.4 0 8 3.6 8 8v35.6c0 4.4-3.6 8-8 8h-59c18.1 29.1 41.8 54.3 72.3 76.9 2.6 2.1 3.2 5.9 1.2 8.5l-26.3 35.3a5.92 5.92 0 0 1-8.9.7c-30.6-29.3-56.8-65.2-78.1-106.9V656c0 4.4-3.6 8-8 8h-36.2c-4.4 0-8-3.6-8-8V536c-22 44.7-49 80.8-80.6 107.6a6.38 6.38 0 0 1-4.8 1.4c-1.7-.3-3.2-1.3-4.1-2.8L432 605.7a6 6 0 0 1 1.6-8.1c28.6-20.3 51.9-45.2 71-76h-55.1c-4.4 0-8-3.6-8-8V478c0-4.4 3.6-8 8-8h94.9v-18.6h-65.9c-4.4 0-8-3.6-8-8V316c0-4.4 3.6-8 8-8h184.7c4.4 0 8 3.6 8 8z"], [e, "M443.7 306.9l-38.6-18.3c-3.4-1.6-7.3.2-8.4 3.7-17.5 58.5-45.2 110.2-82.2 153.6a5.7 5.7 0 0 0-1.2 5.6l13.2 43.5c1.4 4.5 7 5.8 10.2 2.4 7.7-8.1 15.4-16.8 23.1-26V656c0 4.4 3.6 8 8 8h37.3c4.4 0 8-3.6 8-8h.2V393.1a429.2 429.2 0 0 0 33.6-79c.9-2.8-.5-5.9-3.2-7.2zm26.8 9.1v127.4c0 4.4 3.6 8 8 8h65.9V470h-94.9c-4.4 0-8 3.6-8 8v35.6c0 4.4 3.6 8 8 8h55.1c-19.1 30.8-42.4 55.7-71 76a6 6 0 0 0-1.6 8.1l22.8 36.5c.9 1.5 2.4 2.5 4.1 2.8 1.7.3 3.5-.2 4.8-1.4 31.6-26.8 58.6-62.9 80.6-107.6v120c0 4.4 3.6 8 8 8h36.2c4.4 0 8-3.6 8-8V535.9c21.3 41.7 47.5 77.6 78.1 106.9 2.6 2.5 6.7 2.2 8.9-.7l26.3-35.3c2-2.6 1.4-6.4-1.2-8.5-30.5-22.6-54.2-47.8-72.3-76.9h59c4.4 0 8-3.6 8-8v-35.6c0-4.4-3.6-8-8-8h-98.8v-18.6h66.7c4.4 0 8-3.6 8-8V316c0-4.4-3.6-8-8-8H478.5c-4.4 0-8 3.6-8 8zm51.4 42.8h97.9v41.6h-97.9v-41.6z"]) })), t.InteractionTwoTone = l("interaction", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm114-401.9c0-55.3 44.6-100.1 99.7-100.1h205.8v-53.4c0-5.6 6.5-8.8 10.9-5.3L723.5 365c3.5 2.7 3.5 8 0 10.7l-109.1 85.7c-4.4 3.5-10.9.4-10.9-5.3v-53.4H397.8c-19.6 0-35.5 15.9-35.5 35.6v78.9c0 3.8-3.1 6.8-6.8 6.8h-50.7c-3.8 0-6.8-3-6.8-7v-78.9zm2.6 210.3l109.1-85.7c4.4-3.5 10.9-.4 10.9 5.3v53.4h205.6c19.6 0 35.5-15.9 35.5-35.6v-78.9c0-3.8 3.1-6.8 6.8-6.8h50.7c3.8 0 6.8 3.1 6.8 6.8v78.9c0 55.3-44.6 100.1-99.7 100.1H420.6v53.4c0 5.6-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.5z"], [e, "M304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z"]) })), t.InterationTwoTone = l("interation", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm114-401.9c0-55.3 44.6-100.1 99.7-100.1h205.8v-53.4c0-5.6 6.5-8.8 10.9-5.3L723.5 365c3.5 2.7 3.5 8 0 10.7l-109.1 85.7c-4.4 3.5-10.9.4-10.9-5.3v-53.4H397.8c-19.6 0-35.5 15.9-35.5 35.6v78.9c0 3.8-3.1 6.8-6.8 6.8h-50.7c-3.8 0-6.8-3-6.8-7v-78.9zm2.6 210.3l109.1-85.7c4.4-3.5 10.9-.4 10.9 5.3v53.4h205.6c19.6 0 35.5-15.9 35.5-35.6v-78.9c0-3.8 3.1-6.8 6.8-6.8h50.7c3.8 0 6.8 3.1 6.8 6.8v78.9c0 55.3-44.6 100.1-99.7 100.1H420.6v53.4c0 5.6-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.5z"], [e, "M304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z"]) })), t.LayoutTwoTone = l("layout", s, (function (e, t) { return c(i, [t, "M384 185h456v136H384zm-200 0h136v656H184zm696-73H144c-17.7 0-32 14.3-32 32v1c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32v-1c0-17.7-14.3-32-32-32zM384 385h456v456H384z"], [e, "M880 113H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V145c0-17.7-14.3-32-32-32zM320 841H184V185h136v656zm520 0H384V385h456v456zm0-520H384V185h456v136z"]) })), t.LeftCircleTwoTone = l("left-circle", s, (function (e, t) { return c(i, [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm104 240.9c0 10.3-4.9 19.9-13.2 25.9L457.4 512l145.4 105.1c8.3 6 13.2 15.7 13.2 25.9v46.9c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178c5.3-3.8 12.7 0 12.7 6.5v46.9z"], [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [e, "M603.3 327.5l-246 178a7.95 7.95 0 0 0 0 12.9l246 178c5.3 3.8 12.7 0 12.7-6.5V643c0-10.2-4.9-19.9-13.2-25.9L457.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5z"]) })), t.LeftSquareTwoTone = l("left-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm181.3-334.5l246-178c5.3-3.8 12.7 0 12.7 6.5v46.9c0 10.3-4.9 19.9-13.2 25.9L465.4 512l145.4 105.2c8.3 6 13.2 15.7 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.4l-246-178a7.95 7.95 0 0 1 0-12.9z"], [e, "M365.3 518.4l246 178c5.3 3.9 12.7.1 12.7-6.4v-46.9c0-10.2-4.9-19.9-13.2-25.9L465.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5l-246 178a7.95 7.95 0 0 0 0 12.9z"]) })), t.LikeTwoTone = l("like", s, (function (e, t) { return c(i, [t, "M273 495.9v428l.3-428zm538.2-88.3H496.8l9.6-198.4c.6-11.9-4.7-23.1-14.6-30.5-6.1-4.5-13.6-6.8-21.1-6.7-19.6.1-36.9 13.4-42.2 32.3-37.1 134.4-64.9 235.2-83.5 302.5V852h399.4a56.85 56.85 0 0 0 33.6-51.8c0-9.7-2.3-18.9-6.9-27.3l-13.9-25.4 21.9-19a56.76 56.76 0 0 0 19.6-43c0-9.7-2.3-18.9-6.9-27.3l-13.9-25.4 21.9-19a56.76 56.76 0 0 0 19.6-43c0-9.7-2.3-18.9-6.9-27.3l-14-25.5 21.9-19a56.76 56.76 0 0 0 19.6-43c0-19.1-11-37.5-28.8-48.4z"], [e, "M112 528v364c0 17.7 14.3 32 32 32h65V496h-65c-17.7 0-32 14.3-32 32zm773.9 5.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.5-65.5-111a67.67 67.67 0 0 0-34.3-9.3H572.3l6-122.9c1.5-29.7-9-57.9-29.5-79.4a106.4 106.4 0 0 0-77.9-33.4c-52 0-98 35-111.8 85.1l-85.8 310.8-.3 428h472.1c9.3 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37zM820.4 499l-21.9 19 14 25.5a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.1 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.1 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 22.4-13.2 42.6-33.6 51.8H345V506.8c18.6-67.2 46.4-168 83.5-302.5a44.28 44.28 0 0 1 42.2-32.3c7.5-.1 15 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.1 32.2-19.6 43z"]) })), t.LockTwoTone = l("lock", s, (function (e, t) { return c(i, [e, "M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304z"], [t, "M232 840h560V536H232v304zm280-226a48.01 48.01 0 0 1 28 87v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 0 1 28-87z"], [e, "M484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z"]) })), t.MailTwoTone = l("mail", s, (function (e, t) { return c(i, [t, "M477.5 536.3L135.9 270.7l-27.5-21.4 27.6 21.5V792h752V270.8L546.2 536.3a55.99 55.99 0 0 1-68.7 0z"], [t, "M876.3 198.8l39.3 50.5-27.6 21.5 27.7-21.5-39.3-50.5z"], [e, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-94.5 72.1L512 482 190.5 232.1h643zm54.5 38.7V792H136V270.8l-27.6-21.5 27.5 21.4 341.6 265.6a55.99 55.99 0 0 0 68.7 0L888 270.8l27.6-21.5-39.3-50.5h.1l39.3 50.5-27.7 21.5z"]) })), t.MedicineBoxTwoTone = l("medicine-box", s, (function (e, t) { return c(i, [t, "M244.3 328L184 513.4V840h656V513.4L779.7 328H244.3zM660 628c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V636H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V464c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8v48z"], [e, "M652 572H544V464c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V636h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"], [e, "M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM360 184h304v72H360v-72zm480 656H184V513.4L244.3 328h535.4L840 513.4V840z"]) })), t.MehTwoTone = l("meh", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm384 200c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v48zm16-152a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"], [e, "M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm376 144H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-24-144a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"]) })), t.MessageTwoTone = l("message", s, (function (e, t) { return c(i, [t, "M775.3 248.9a369.62 369.62 0 0 0-119-80A370.2 370.2 0 0 0 512.1 140h-1.7c-99.7.4-193 39.4-262.8 109.9-69.9 70.5-108 164.1-107.6 263.8.3 60.3 15.3 120.2 43.5 173.1l4.5 8.4V836h140.8l8.4 4.5c52.9 28.2 112.8 43.2 173.1 43.5h1.7c99 0 192-38.2 262.1-107.6 70.4-69.8 109.5-163.1 110.1-262.7.2-50.6-9.5-99.6-28.9-145.8a370.15 370.15 0 0 0-80-119zM312 560a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zm200 0a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zm200 0a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"], [e, "M664 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-400 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"], [e, "M925.2 338.4c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 0 0-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 0 0-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 0 0 112 714v152a46 46 0 0 0 46 46h152.1A449.4 449.4 0 0 0 510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 0 0 142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z"], [e, "M464 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"]) })), t.MinusCircleTwoTone = l("minus-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm192 396c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z"], [e, "M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"]) })), t.MinusSquareTwoTone = l("minus-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm136-352c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48z"], [e, "M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"]) })), t.MobileTwoTone = l("mobile", s, (function (e, t) { return c(i, [e, "M744 64H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H288V136h448v752z"], [t, "M288 888h448V136H288v752zm224-142c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"], [e, "M472 786a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"]) })), t.PauseCircleTwoTone = l("pause-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-80 524c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z"], [e, "M424 352h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zm224 0h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z"]) })), t.MoneyCollectTwoTone = l("money-collect", s, (function (e, t) { return c(i, [t, "M256 744.4l256 93.1 256-93.1V184H256v560.4zM359.7 313c1.2-.7 2.5-1 3.8-1h55.7a8 8 0 0 1 7.1 4.4L511 485.2h3.3L599 316.4c1.3-2.7 4.1-4.4 7.1-4.4h54.5c4.4 0 8 3.6 8.1 7.9 0 1.3-.4 2.6-1 3.8L564 515.3h57.6c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3v39h76.3c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3V704c0 4.4-3.6 8-8 8h-49.9c-4.4 0-8-3.6-8-8v-63.4h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h76v-39h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h57L356.5 323.8c-2.1-3.8-.7-8.7 3.2-10.8z"], [e, "M911.5 700.7a8 8 0 0 0-10.3-4.8L840 718.2V180c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V763c0 3.3 2.1 6.3 5.3 7.5L501 910.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zM768 744.4l-256 93.1-256-93.1V184h512v560.4z"], [e, "M460.4 515.4h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.6-1.2 1-2.5 1-3.8-.1-4.3-3.7-7.9-8.1-7.9h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6z"]) })), t.NotificationTwoTone = l("notification", s, (function (e, t) { return c(i, [t, "M229.6 678.1c-3.7 11.6-5.6 23.9-5.6 36.4 0-12.5 2-24.8 5.7-36.4h-.1zm76.3-260.2H184v188.2h121.9l12.9 5.2L840 820.7V203.3L318.8 412.7z"], [e, "M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z"]) })), t.PhoneTwoTone = l("phone", s, (function (e, t) { return c(i, [t, "M721.7 184.9L610.9 295.8l120.8 120.7-8 21.6A481.29 481.29 0 0 1 438 723.9l-21.6 8-.9-.9-119.8-120-110.8 110.9 104.5 104.5c10.8 10.7 26 15.7 40.8 13.2 117.9-19.5 235.4-82.9 330.9-178.4s158.9-213.1 178.4-331c2.5-14.8-2.5-30-13.3-40.8L721.7 184.9z"], [e, "M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7a405.46 405.46 0 0 1-86.4 127.3c-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3a68.2 68.2 0 0 0-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4zm-37.6 91.5c-19.5 117.9-82.9 235.5-178.4 331s-213 158.9-330.9 178.4c-14.8 2.5-30-2.5-40.8-13.2L184.9 721.9 295.7 611l119.8 120 .9.9 21.6-8a481.29 481.29 0 0 0 285.7-285.8l8-21.6-120.8-120.7 110.8-110.9 104.5 104.5c10.8 10.8 15.8 26 13.3 40.8z"]) })), t.PictureTwoTone = l("picture", s, (function (e, t) { return c(i, [e, "M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2z"], [t, "M424.6 765.8l-150.1-178L136 752.1V792h752v-30.4L658.1 489z"], [t, "M136 652.7l132.4-157c3.2-3.8 9-3.8 12.2 0l144 170.7L652 396.8c3.2-3.8 9-3.8 12.2 0L888 662.2V232H136v420.7zM304 280a88 88 0 1 1 0 176 88 88 0 0 1 0-176z"], [t, "M276 368a28 28 0 1 0 56 0 28 28 0 1 0-56 0z"], [e, "M304 456a88 88 0 1 0 0-176 88 88 0 0 0 0 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z"]) })), t.PlayCircleTwoTone = l("play-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm164.1 378.2L457.7 677.1a8.02 8.02 0 0 1-12.7-6.5V353a8 8 0 0 1 12.7-6.5l218.4 158.8a7.9 7.9 0 0 1 0 12.9z"], [e, "M676.1 505.3L457.7 346.5A8 8 0 0 0 445 353v317.6a8.02 8.02 0 0 0 12.7 6.5l218.4-158.9a7.9 7.9 0 0 0 0-12.9z"]) })), t.PlaySquareTwoTone = l("play-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm240-484.7c0-9.4 10.9-14.7 18.3-8.8l199.4 156.7a11.2 11.2 0 0 1 0 17.6L442.3 677.6c-7.4 5.8-18.3.6-18.3-8.8V355.3z"], [e, "M442.3 677.6l199.4-156.8a11.2 11.2 0 0 0 0-17.6L442.3 346.5c-7.4-5.9-18.3-.6-18.3 8.8v313.5c0 9.4 10.9 14.6 18.3 8.8z"]) })), t.PieChartTwoTone = l("pie-chart", s, (function (e, t) { return c(i, [t, "M316.2 920.5c-47.6-20.1-90.4-49-127.1-85.7a398.19 398.19 0 0 1-85.7-127.1A397.12 397.12 0 0 1 72 552.2v.2a398.57 398.57 0 0 0 117 282.5c36.7 36.7 79.4 65.5 127 85.6A396.64 396.64 0 0 0 471.6 952c27 0 53.6-2.7 79.7-7.9-25.9 5.2-52.4 7.8-79.3 7.8-54 .1-106.4-10.5-155.8-31.4zM560 472c-4.4 0-8-3.6-8-8V79.9c0-1.3.3-2.5.9-3.6-.9 1.3-1.5 2.9-1.5 4.6v383.7c0 4.4 3.6 8 8 8l383.6-1c1.6 0 3.1-.5 4.4-1.3-1 .5-2.2.7-3.4.7l-384 1z"], [t, "M619.8 147.6v256.6l256.4-.7c-13-62.5-44.3-120.5-90-166.1a332.24 332.24 0 0 0-166.4-89.8z"], [t, "M438 221.7c-75.9 7.6-146.2 40.9-200.8 95.5C174.5 379.9 140 463.3 140 552s34.5 172.1 97.2 234.8c62.3 62.3 145.1 96.8 233.2 97.2 88.2.4 172.7-34.1 235.3-96.2C761 733 794.6 662.3 802.3 586H438V221.7z"], [e, "M864 518H506V160c0-4.4-3.6-8-8-8h-26a398.46 398.46 0 0 0-282.8 117.1 398.19 398.19 0 0 0-85.7 127.1A397.61 397.61 0 0 0 72 552v.2c0 53.9 10.6 106.2 31.4 155.5 20.1 47.6 49 90.4 85.7 127.1 36.7 36.7 79.5 65.6 127.1 85.7A397.61 397.61 0 0 0 472 952c26.9 0 53.4-2.6 79.3-7.8 26.1-5.3 51.7-13.1 76.4-23.6 47.6-20.1 90.4-49 127.1-85.7 36.7-36.7 65.6-79.5 85.7-127.1A397.61 397.61 0 0 0 872 552v-26c0-4.4-3.6-8-8-8zM705.7 787.8A331.59 331.59 0 0 1 470.4 884c-88.1-.4-170.9-34.9-233.2-97.2C174.5 724.1 140 640.7 140 552s34.5-172.1 97.2-234.8c54.6-54.6 124.9-87.9 200.8-95.5V586h364.3c-7.7 76.3-41.3 147-96.6 201.8z"], [e, "M952 462.4l-2.6-28.2c-8.5-92.1-49.4-179-115.2-244.6A399.4 399.4 0 0 0 589 74.6L560.7 72c-3.4-.3-6.4 1.5-7.8 4.3a8.7 8.7 0 0 0-.9 3.6V464c0 4.4 3.6 8 8 8l384-1c1.2 0 2.3-.3 3.4-.7a8.1 8.1 0 0 0 4.6-7.9zm-332.2-58.2V147.6a332.24 332.24 0 0 1 166.4 89.8c45.7 45.6 77 103.6 90 166.1l-256.4.7z"]) })), t.PlusCircleTwoTone = l("plus-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm192 396c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z"], [e, "M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"]) })), t.PlusSquareTwoTone = l("plus-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm136-352c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48z"], [e, "M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"]) })), t.PoundCircleTwoTone = l("pound-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm146 582.1c0 4.4-3.6 8-8 8H376.2c-4.4 0-8-3.6-8-8v-38.5c0-3.7 2.5-6.9 6.1-7.8 44-10.9 72.8-49 72.8-94.2 0-14.7-2.5-29.4-5.9-44.2H374c-4.4 0-8-3.6-8-8v-30c0-4.4 3.6-8 8-8h53.7c-7.8-25.1-14.6-50.7-14.6-77.1 0-75.8 58.6-120.3 151.5-120.3 26.5 0 51.4 5.5 70.3 12.7 3.1 1.2 5.2 4.2 5.2 7.5v39.5a8 8 0 0 1-10.6 7.6c-17.9-6.4-39-10.5-60.4-10.5-53.3 0-87.3 26.6-87.3 70.2 0 24.7 6.2 47.9 13.4 70.5h112c4.4 0 8 3.6 8 8v30c0 4.4-3.6 8-8 8h-98.6c3.1 13.2 5.3 26.9 5.3 41 0 40.7-16.5 73.9-43.9 91.1v4.7h180c4.4 0 8 3.6 8 8v39.8z"], [e, "M650 674.3H470v-4.7c27.4-17.2 43.9-50.4 43.9-91.1 0-14.1-2.2-27.8-5.3-41h98.6c4.4 0 8-3.6 8-8v-30c0-4.4-3.6-8-8-8h-112c-7.2-22.6-13.4-45.8-13.4-70.5 0-43.6 34-70.2 87.3-70.2 21.4 0 42.5 4.1 60.4 10.5a8 8 0 0 0 10.6-7.6v-39.5c0-3.3-2.1-6.3-5.2-7.5-18.9-7.2-43.8-12.7-70.3-12.7-92.9 0-151.5 44.5-151.5 120.3 0 26.4 6.8 52 14.6 77.1H374c-4.4 0-8 3.6-8 8v30c0 4.4 3.6 8 8 8h67.2c3.4 14.8 5.9 29.5 5.9 44.2 0 45.2-28.8 83.3-72.8 94.2-3.6.9-6.1 4.1-6.1 7.8v38.5c0 4.4 3.6 8 8 8H650c4.4 0 8-3.6 8-8v-39.8c0-4.4-3.6-8-8-8z"]) })), t.PrinterTwoTone = l("printer", s, (function (e, t) { return c(i, [t, "M360 180h304v152H360zm492 220H172c-6.6 0-12 5.4-12 12v292h132V500h440v204h132V412c0-6.6-5.4-12-12-12zm-24 84c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v40z"], [e, "M852 332H732V120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM360 180h304v152H360V180zm304 664H360V568h304v276zm200-140H732V500H292v204H160V412c0-6.6 5.4-12 12-12h680c6.6 0 12 5.4 12 12v292z"], [e, "M820 436h-40c-4.4 0-8 3.6-8 8v40c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-40c0-4.4-3.6-8-8-8z"]) })), t.ProfileTwoTone = l("profile", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm300-496c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zm0 144c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zm0 144c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zM380 328c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm0 144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm0 144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"], [e, "M340 656a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm152 320h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"]) })), t.ProjectTwoTone = l("project", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm472-560c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v256c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280zm-192 0c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280zm-192 0c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v464c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280z"], [e, "M280 752h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8zm192-280h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm192 72h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v256c0 4.4 3.6 8 8 8z"]) })), t.PushpinTwoTone = l("pushpin", s, (function (e, t) { return c(i, [t, "M474.8 357.7l-24.5 24.5-34.4-3.8c-9.6-1.1-19.3-1.6-28.9-1.6-29 0-57.5 4.7-84.7 14.1-14 4.8-27.4 10.8-40.3 17.9l353.1 353.3a259.92 259.92 0 0 0 30.4-153.9l-3.8-34.4 24.5-24.5L800 415.5 608.5 224 474.8 357.7z"], [e, "M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3a33.23 33.23 0 0 0-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8zM666.2 549.3l-24.5 24.5 3.8 34.4a259.92 259.92 0 0 1-30.4 153.9L262 408.8c12.9-7.1 26.3-13.1 40.3-17.9 27.2-9.4 55.7-14.1 84.7-14.1 9.6 0 19.3.5 28.9 1.6l34.4 3.8 24.5-24.5L608.5 224 800 415.5 666.2 549.3z"]) })), t.PropertySafetyTwoTone = l("property-safety", s, (function (e, t) { return c(i, [e, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z"], [t, "M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM593.9 318h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V658c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8H418c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7H418c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3L585 323.5a10 10 0 0 1 8.9-5.5z"], [e, "M438.9 323.5a9.88 9.88 0 0 0-8.9-5.5h-46c-1.7 0-3.3.4-4.8 1.2-4.9 2.7-6.6 8.8-4 13.6l88 161.1H418c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1v29.7H418c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1V658c0 5.5 4.5 10 10 10h41.3c5.5 0 10-4.5 10-10v-51.8h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-63.4v-29.7h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-45.7l87.7-161.1c.8-1.5 1.2-3.1 1.1-4.8 0-5.5-4.5-10-10-10h-45a10 10 0 0 0-8.9 5.5l-73.2 144.3-72.9-144.3z"]) })), t.QuestionCircleTwoTone = l("question-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm0 632c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm62.9-219.5a48.3 48.3 0 0 0-30.9 44.8V620c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-21.5c0-23.1 6.7-45.9 19.9-64.9 12.9-18.6 30.9-32.8 52.1-40.9 34-13.1 56-41.6 56-72.7 0-44.1-43.1-80-96-80s-96 35.9-96 80v7.6c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V420c0-39.3 17.2-76 48.4-103.3C430.4 290.4 470 276 512 276s81.6 14.5 111.6 40.7C654.8 344 672 380.7 672 420c0 57.8-38.1 109.8-97.1 132.5z"], [e, "M472 732a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm151.6-415.3C593.6 290.5 554 276 512 276s-81.6 14.4-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.2 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0 1 30.9-44.8c59-22.7 97.1-74.7 97.1-132.5 0-39.3-17.2-76-48.4-103.3z"]) })), t.ReconciliationTwoTone = l("reconciliation", s, (function (e, t) { return c(i, [t, "M740 344H404V240H304v160h176c17.7 0 32 14.3 32 32v360h328V240H740v104zM584 448c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56zm92 301c-50.8 0-92-41.2-92-92s41.2-92 92-92 92 41.2 92 92-41.2 92-92 92zm92-341v96c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8z"], [t, "M642 657a34 34 0 1 0 68 0 34 34 0 1 0-68 0z"], [e, "M592 512h48c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm112-104v96c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-96c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z"], [e, "M880 168H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zm-412 64h72v-56h64v56h72v48H468v-48zm-20 616H176V616h272v232zm0-296H176v-88h272v88zm392 240H512V432c0-17.7-14.3-32-32-32H304V240h100v104h336V240h100v552z"], [e, "M676 565c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34z"]) })), t.RedEnvelopeTwoTone = l("red-envelope", s, (function (e, t) { return c(i, [e, "M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V193.1l260.3 204.1c11.6 9.1 27.9 9.1 39.5 0L792 193.1V888zm0-751.3h-31.7L512 331.3 263.7 136.7H232v-.7h560v.7z"], [t, "M492.3 397.2L232 193.1V888h560V193.1L531.8 397.2a31.99 31.99 0 0 1-39.5 0zm99.4 60.9h47.8a8.45 8.45 0 0 1 7.4 12.4l-87.2 161h45.9c4.6 0 8.4 3.8 8.4 8.4V665c0 4.6-3.8 8.4-8.4 8.4h-63.3V702h63.3c4.6 0 8.4 3.8 8.4 8.4v25c.2 4.7-3.5 8.5-8.2 8.5h-63.3v49.9c0 4.6-3.8 8.4-8.4 8.4h-43.7c-4.6 0-8.4-3.8-8.4-8.4v-49.9h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h63v-28.6h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h45.4L377 470.4a8.4 8.4 0 0 1 3.4-11.4c1.3-.6 2.6-1 3.9-1h48.8c3.2 0 6.1 1.8 7.5 4.6l71.7 142 71.9-141.9a8.6 8.6 0 0 1 7.5-4.6z"], [t, "M232 136.7h31.7L512 331.3l248.3-194.6H792v-.7H232z"], [e, "M440.6 462.6a8.38 8.38 0 0 0-7.5-4.6h-48.8c-1.3 0-2.6.4-3.9 1a8.4 8.4 0 0 0-3.4 11.4l87.4 161.1H419c-4.6 0-8.4 3.8-8.4 8.4V665c0 4.6 3.8 8.4 8.4 8.4h63V702h-63c-4.6 0-8.4 3.8-8.4 8.4v25.1c0 4.6 3.8 8.4 8.4 8.4h63v49.9c0 4.6 3.8 8.4 8.4 8.4h43.7c4.6 0 8.4-3.8 8.4-8.4v-49.9h63.3c4.7 0 8.4-3.8 8.2-8.5v-25c0-4.6-3.8-8.4-8.4-8.4h-63.3v-28.6h63.3c4.6 0 8.4-3.8 8.4-8.4v-25.1c0-4.6-3.8-8.4-8.4-8.4h-45.9l87.2-161a8.45 8.45 0 0 0-7.4-12.4h-47.8c-3.1 0-6 1.8-7.5 4.6l-71.9 141.9-71.7-142z"]) })), t.RestTwoTone = l("rest", s, (function (e, t) { return c(i, [t, "M326.4 844h363.2l44.3-520H282l44.4 520zM508 416c79.5 0 144 64.5 144 144s-64.5 144-144 144-144-64.5-144-144 64.5-144 144-144z"], [e, "M508 704c79.5 0 144-64.5 144-144s-64.5-144-144-144-144 64.5-144 144 64.5 144 144 144zm0-224c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z"], [e, "M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zm-518.6-76h397.2l22.4 76H291l22.4-76zm376.2 664H326.4L282 324h451.9l-44.3 520z"]) })), t.RightCircleTwoTone = l("right-circle", s, (function (e, t) { return c(i, [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm154.7 378.4l-246 178c-5.3 3.8-12.7 0-12.7-6.5V643c0-10.2 4.9-19.9 13.2-25.9L566.6 512 421.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.7 0 12.9z"], [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [e, "M666.7 505.5l-246-178c-5.3-3.8-12.7 0-12.7 6.5v46.9c0 10.3 4.9 19.9 13.2 25.9L566.6 512 421.2 617.1c-8.3 6-13.2 15.7-13.2 25.9v46.9c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.7 0-12.9z"]) })), t.RocketTwoTone = l("rocket", s, (function (e, t) { return c(i, [t, "M261.7 621.4c-9.4 14.6-17 30.3-22.5 46.6H324V558.7c-24.8 16.2-46 37.5-62.3 62.7zM700 558.7V668h84.8c-5.5-16.3-13.1-32-22.5-46.6a211.6 211.6 0 0 0-62.3-62.7zm-64-239.9l-124-147-124 147V668h248V318.8zM512 448a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"], [e, "M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8L864 736zm-540-68h-84.8c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668zm64-184.9V318.8l124-147 124 147V668H388V483.1zm240.1 301.1c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5s-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM700 668V558.7a211.6 211.6 0 0 1 62.3 62.7c9.4 14.6 17 30.3 22.5 46.6H700z"], [e, "M464 400a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"]) })), t.RightSquareTwoTone = l("right-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm216-196.9c0-10.2 4.9-19.9 13.2-25.9L558.6 512 413.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.7 0 12.9l-246 178c-5.3 3.9-12.7.1-12.7-6.4v-46.9z"], [e, "M412.7 696.4l246-178c4.4-3.2 4.4-9.7 0-12.9l-246-178c-5.3-3.8-12.7 0-12.7 6.5v46.9c0 10.3 4.9 19.9 13.2 25.9L558.6 512 413.2 617.2c-8.3 6-13.2 15.7-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.4z"]) })), t.SafetyCertificateTwoTone = l("safety-certificate", s, (function (e, t) { return c(i, [e, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z"], [t, "M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM632.8 328H688c6.5 0 10.3 7.4 6.5 12.7L481.9 633.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.2 0 10 2.5 13 6.6l64.7 89.1 150.9-207.8c3-4.1 7.9-6.6 13-6.6z"], [e, "M404.2 453.3c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z"]) })), t.SaveTwoTone = l("save", s, (function (e, t) { return c(i, [t, "M704 320c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V184H184v656h656V341.8l-136-136V320zM512 730c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144z"], [e, "M512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z"], [e, "M893.3 293.3L730.7 130.7c-.7-.7-1.4-1.3-2.1-2-.1-.1-.3-.2-.4-.3-.7-.7-1.5-1.3-2.2-1.9a64 64 0 0 0-22-11.7V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840z"]) })), t.ScheduleTwoTone = l("schedule", s, (function (e, t) { return c(i, [t, "M768 352c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H548v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H328v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H136v496h752V296H768v56zM424 688c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-136c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm374.4-91.2l-165 228.7a15.9 15.9 0 0 1-25.8 0L493.5 531.3c-3.8-5.3 0-12.7 6.5-12.7h54.9c5.1 0 9.9 2.4 12.9 6.6l52.8 73.1 103.6-143.7c3-4.1 7.8-6.6 12.8-6.5h54.9c6.5 0 10.3 7.4 6.5 12.7z"], [e, "M724.2 454.6L620.6 598.3l-52.8-73.1c-3-4.2-7.8-6.6-12.9-6.6H500c-6.5 0-10.3 7.4-6.5 12.7l114.1 158.2a15.9 15.9 0 0 0 25.8 0l165-228.7c3.8-5.3 0-12.7-6.5-12.7H737c-5-.1-9.8 2.4-12.8 6.5zM416 496H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"], [e, "M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z"], [e, "M416 632H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"]) })), t.SecurityScanTwoTone = l("security-scan", s, (function (e, t) { return c(i, [e, "M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z"], [t, "M460.7 451.1a80.1 80.1 0 1 0 160.2 0 80.1 80.1 0 1 0-160.2 0z"], [t, "M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zm428.7 122.5c56.3 56.3 56.3 147.5 0 203.8-48.5 48.5-123 55.2-178.6 20.1l-77.5 77.5a8.03 8.03 0 0 1-11.3 0l-34-34a8.03 8.03 0 0 1 0-11.3l77.5-77.5c-35.1-55.7-28.4-130.1 20.1-178.6 56.3-56.3 147.5-56.3 203.8 0z"], [e, "M418.8 527.8l-77.5 77.5a8.03 8.03 0 0 0 0 11.3l34 34c3.1 3.1 8.2 3.1 11.3 0l77.5-77.5c55.6 35.1 130.1 28.4 178.6-20.1 56.3-56.3 56.3-147.5 0-203.8-56.3-56.3-147.5-56.3-203.8 0-48.5 48.5-55.2 122.9-20.1 178.6zm65.4-133.3a80.1 80.1 0 0 1 113.3 0 80.1 80.1 0 0 1 0 113.3c-31.3 31.3-82 31.3-113.3 0s-31.3-82 0-113.3z"]) })), t.SettingTwoTone = l("setting", s, (function (e, t) { return c(i, [t, "M859.3 569.7l.2.1c3.1-18.9 4.6-38.2 4.6-57.3 0-17.1-1.3-34.3-3.7-51.1 2.4 16.7 3.6 33.6 3.6 50.5 0 19.4-1.6 38.8-4.7 57.8zM99 398.1c-.5-.4-.9-.8-1.4-1.3.7.7 1.4 1.4 2.2 2.1l65.5 55.9v-.1L99 398.1zm536.6-216h.1l-15.5-83.8c-.2-1-.4-1.9-.7-2.8.1.5.3 1.1.4 1.6l15.7 85zm54 546.5l31.4-25.8 92.8 32.9c17-22.9 31.3-47.5 42.6-73.6l-74.7-63.9 6.6-40.1c2.5-15.1 3.8-30.6 3.8-46.1s-1.3-31-3.8-46.1l-6.5-39.9 74.7-63.9c-11.4-26-25.6-50.7-42.6-73.6l-92.8 32.9-31.4-25.8c-23.9-19.6-50.6-35-79.3-45.8l-38.1-14.3-17.9-97a377.5 377.5 0 0 0-85 0l-17.9 97.2-37.9 14.3c-28.5 10.8-55 26.2-78.7 45.7l-31.4 25.9-93.4-33.2c-17 22.9-31.3 47.5-42.6 73.6l75.5 64.5-6.5 40c-2.5 14.9-3.7 30.2-3.7 45.5 0 15.2 1.3 30.6 3.7 45.5l6.5 40-75.5 64.5c11.4 26 25.6 50.7 42.6 73.6l93.4-33.2 31.4 25.9c23.7 19.5 50.2 34.9 78.7 45.7l37.8 14.5 17.9 97.2c28.2 3.2 56.9 3.2 85 0l17.9-97 38.1-14.3c28.8-10.8 55.4-26.2 79.3-45.8zm-177.1-50.3c-30.5 0-59.2-7.8-84.3-21.5C373.3 627 336 568.9 336 502c0-97.2 78.8-176 176-176 66.9 0 125 37.3 154.8 92.2 13.7 25 21.5 53.7 21.5 84.3 0 97.1-78.7 175.8-175.8 175.8zM207.2 812.8c-5.5 1.9-11.2 2.3-16.6 1.2 5.7 1.2 11.7 1 17.5-1l81.4-29c-.1-.1-.3-.2-.4-.3l-81.9 29.1zm717.6-414.7l-65.5 56c0 .2.1.5.1.7l65.4-55.9c7.1-6.1 11.1-14.9 11.2-24-.3 8.8-4.3 17.3-11.2 23.2z"], [t, "M935.8 646.6c.5 4.7 0 9.5-1.7 14.1l-.9 2.6a446.02 446.02 0 0 1-79.7 137.9l-1.8 2.1a32 32 0 0 1-35.1 9.5l-81.3-28.9a350 350 0 0 1-99.7 57.6l-15.7 85a32.05 32.05 0 0 1-25.8 25.7l-2.7.5a445.2 445.2 0 0 1-79.2 7.1h.3c26.7 0 53.4-2.4 79.4-7.1l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-84.9c36.2-13.6 69.6-32.9 99.6-57.5l81.2 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.5-87.4 79.6-137.7l.9-2.6c1.6-4.7 2.1-9.7 1.5-14.5z"], [e, "M688 502c0-30.3-7.7-58.9-21.2-83.8C637 363.3 578.9 326 512 326c-97.2 0-176 78.8-176 176 0 66.9 37.3 125 92.2 154.8 24.9 13.5 53.4 21.2 83.8 21.2 97.2 0 176-78.8 176-176zm-288 0c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 0 1 624 502c0 29.9-11.7 58-32.8 79.2A111.6 111.6 0 0 1 512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 502z"], [e, "M594.1 952.2a32.05 32.05 0 0 0 25.8-25.7l15.7-85a350 350 0 0 0 99.7-57.6l81.3 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c1.7-4.6 2.2-9.4 1.7-14.1-.9-7.9-4.7-15.4-11-20.9l-65.3-55.9-.2-.1c3.1-19 4.7-38.4 4.7-57.8 0-16.9-1.2-33.9-3.6-50.5-.3-2.2-.7-4.4-1-6.6 0-.2-.1-.5-.1-.7l65.5-56c6.9-5.9 10.9-14.4 11.2-23.2.1-4-.5-8.1-1.9-12l-.9-2.6a443.74 443.74 0 0 0-79.7-137.9l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.3 28.9c-30-24.6-63.4-44-99.6-57.6h-.1l-15.7-85c-.1-.5-.2-1.1-.4-1.6a32.08 32.08 0 0 0-25.4-24.1l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.4a351.86 351.86 0 0 0-99 57.4l-81.9-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a446.02 446.02 0 0 0-79.7 137.9l-.9 2.6a32.09 32.09 0 0 0 7.9 33.9c.5.4.9.9 1.4 1.3l66.3 56.6v.1c-3.1 18.8-4.6 37.9-4.6 57 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1c4.9 5.7 11.4 9.4 18.5 10.7 5.4 1 11.1.7 16.6-1.2l81.9-29.1c.1.1.3.2.4.3 29.7 24.3 62.8 43.6 98.6 57.1l15.8 85.4a32.05 32.05 0 0 0 25.8 25.7l2.7.5c26.1 4.7 52.8 7.1 79.5 7.1h.3c26.6 0 53.3-2.4 79.2-7.1l2.7-.5zm-39.8-66.5a377.5 377.5 0 0 1-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 0 1-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97z"]) })), t.ShopTwoTone = l("shop", s, (function (e, t) { return c(i, [t, "M839.5 344h-655c-.3 0-.5.2-.5.5v91.2c0 59.8 49 108.3 109.3 108.3 40.7 0 76.2-22 95.1-54.7 2.9-5.1 8.4-8.3 14.3-8.3s11.3 3.2 14.3 8.3c18.8 32.7 54.3 54.7 95 54.7 40.8 0 76.4-22.1 95.1-54.9 2.9-5 8.2-8.1 13.9-8.1h.6c5.8 0 11 3.1 13.9 8.1 18.8 32.8 54.4 54.9 95.2 54.9C791 544 840 495.5 840 435.7v-91.2c0-.3-.2-.5-.5-.5z"], [e, "M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h676c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zM214 184h596v88H214v-88zm362 656.1H448V736h128v104.1zm234.4 0H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c3-1.3 6-2.6 9-4v242.2zM840 435.7c0 59.8-49 108.3-109.3 108.3-40.8 0-76.4-22.1-95.2-54.9-2.9-5-8.1-8.1-13.9-8.1h-.6c-5.7 0-11 3.1-13.9 8.1A109.24 109.24 0 0 1 512 544c-40.7 0-76.2-22-95-54.7-3-5.1-8.4-8.3-14.3-8.3s-11.4 3.2-14.3 8.3a109.63 109.63 0 0 1-95.1 54.7C233 544 184 495.5 184 435.7v-91.2c0-.3.2-.5.5-.5h655c.3 0 .5.2.5.5v91.2z"]) })), t.ShoppingTwoTone = l("shopping", s, (function (e, t) { return c(i, [t, "M696 472c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-88H400v88c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-88h-96v456h560V384h-96v88z"], [e, "M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-432-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16H400v-16zm392 544H232V384h96v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h224v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h96v456z"]) })), t.SkinTwoTone = l("skin", s, (function (e, t) { return c(i, [t, "M512 318c-79.2 0-148.5-48.8-176.7-120H182v196h119v432h422V394h119V198H688.7c-28.2 71.2-97.5 120-176.7 120z"], [e, "M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44zm-28 268H723v432H301V394H182V198h153.3c28.2 71.2 97.5 120 176.7 120s148.5-48.8 176.7-120H842v196z"]) })), t.SlidersTwoTone = l("sliders", s, (function (e, t) { return c(i, [t, "M180 292h80v440h-80zm369 180h-74a3 3 0 0 0-3 3v74a3 3 0 0 0 3 3h74a3 3 0 0 0 3-3v-74a3 3 0 0 0-3-3zm215-108h80v296h-80z"], [e, "M904 296h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-60 364h-80V364h80v296zM612 404h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8zm-60 145a3 3 0 0 1-3 3h-74a3 3 0 0 1-3-3v-74a3 3 0 0 1 3-3h74a3 3 0 0 1 3 3v74zM320 224h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-60 508h-80V292h80v440z"]) })), t.SmileTwoTone = l("smile", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm224 272c-85.5 0-155.6-67.3-160-151.6a8 8 0 0 1 8-8.4h48.1c4.2 0 7.8 3.2 8.1 7.4C420 589.9 461.5 629 512 629s92.1-39.1 95.8-88.6c.3-4.2 3.9-7.4 8.1-7.4H664a8 8 0 0 1 8 8.4C667.6 625.7 597.5 693 512 693zm176-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z"], [e, "M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm376 112h-48.1c-4.2 0-7.8 3.2-8.1 7.4-3.7 49.5-45.3 88.6-95.8 88.6s-92-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4zm-24-112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z"]) })), t.SnippetsTwoTone = l("snippets", s, (function (e, t) { return c(i, [t, "M450 510V336H232v552h432V550H490c-22.1 0-40-17.9-40-40z"], [e, "M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 888H232V336h218v174c0 22.1 17.9 40 40 40h174v338zm0-402H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z"]) })), t.SoundTwoTone = l("sound", s, (function (e, t) { return c(i, [t, "M275.4 424H146v176h129.4l18 11.7L586 803V221L293.3 412.3z"], [e, "M892.1 737.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM934 476H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344zM625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1zM586 803L293.4 611.7l-18-11.7H146V424h129.4l17.9-11.7L586 221v582z"]) })), t.StarTwoTone = l("star", s, (function (e, t) { return c(i, [t, "M512.5 190.4l-94.4 191.3-211.2 30.7 152.8 149-36.1 210.3 188.9-99.3 188.9 99.2-36.1-210.3 152.8-148.9-211.2-30.7z"], [e, "M908.6 352.8l-253.9-36.9L541.2 85.8c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L370.3 315.9l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1L239 839.4a31.95 31.95 0 0 0 46.4 33.7l227.1-119.4 227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM665.3 561.3l36.1 210.3-188.9-99.2-188.9 99.3 36.1-210.3-152.8-149 211.2-30.7 94.4-191.3 94.4 191.3 211.2 30.7-152.8 148.9z"]) })), t.StopTwoTone = l("stop", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm288.5 682.8L277.7 224C258 240 240 258 224 277.7l522.8 522.8C682.8 852.7 601 884 512 884c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372c0 89-31.3 170.8-83.5 234.8z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372c89 0 170.8-31.3 234.8-83.5L224 277.7c16-19.7 34-37.7 53.7-53.7l522.8 522.8C852.7 682.8 884 601 884 512c0-205.4-166.6-372-372-372z"]) })), t.SwitcherTwoTone = l("switcher", s, (function (e, t) { return c(i, [t, "M184 840h528V312H184v528zm116-290h296v64H300v-64z"], [e, "M880 112H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32z"], [e, "M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zm-40 600H184V312h528v528z"], [e, "M300 550h296v64H300z"]) })), t.TabletTwoTone = l("tablet", s, (function (e, t) { return c(i, [e, "M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H232V136h560v752z"], [t, "M232 888h560V136H232v752zm280-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"], [e, "M472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"]) })), t.TagTwoTone = l("tag", s, (function (e, t) { return c(i, [t, "M589 164.6L189.3 564.3l270.4 270.4L859.4 435 836 188l-247-23.4zM680 432c-48.5 0-88-39.5-88-88s39.5-88 88-88 88 39.5 88 88-39.5 88-88 88z"], [e, "M680 256c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm0 120c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"], [e, "M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8a9.9 9.9 0 0 0 7.1 2.9c2.7 0 5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM459.7 834.7L189.3 564.3 589 164.6 836 188l23.4 247-399.7 399.7z"]) })), t.TagsTwoTone = l("tags", s, (function (e, t) { return c(i, [t, "M477.5 694l311.9-311.8-19-224.6-224.6-19-311.9 311.9L477.5 694zm116-415.5a47.81 47.81 0 0 1 33.9-33.9c16.6-4.4 34.2.3 46.4 12.4a47.93 47.93 0 0 1 12.4 46.4 47.81 47.81 0 0 1-33.9 33.9c-16.6 4.4-34.2-.3-46.4-12.4a48.3 48.3 0 0 1-12.4-46.4z"], [t, "M476.6 792.6c-1.7-.2-3.4-1-4.7-2.3L137.7 456.1a8.03 8.03 0 0 1 0-11.3L515.9 66.6c1.2-1.3 2.9-2.1 4.7-2.3h-.4c-2.3-.2-4.7.6-6.3 2.3L135.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c1.8 1.9 4.3 2.6 6.7 2.3z"], [e, "M889.7 539.8l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3zM652.3 337.3a47.81 47.81 0 0 0 33.9-33.9c4.4-16.6-.3-34.2-12.4-46.4a47.93 47.93 0 0 0-46.4-12.4 47.81 47.81 0 0 0-33.9 33.9c-4.4 16.6.3 34.2 12.4 46.4a48.3 48.3 0 0 0 46.4 12.4z"], [e, "M137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c1.3 1.3 2.9 2.1 4.7 2.3 2.4.3 4.8-.5 6.6-2.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3h-1.6c-1.8.2-3.4 1-4.7 2.3L137.7 444.8zm408.1-306.2l224.6 19 19 224.6L477.5 694 233.9 450.5l311.9-311.9z"]) })), t.ToolTwoTone = l("tool", s, (function (e, t) { return c(i, [t, "M706.8 488.7a32.05 32.05 0 0 1-45.3 0L537 364.2a32.05 32.05 0 0 1 0-45.3l132.9-132.8a184.2 184.2 0 0 0-144 53.5c-58.1 58.1-69.3 145.3-33.6 214.6L439.5 507c-.1 0-.1-.1-.1-.1L209.3 737l79.2 79.2 274-274.1.1.1 8.8-8.8c69.3 35.7 156.5 24.5 214.6-33.6 39.2-39.1 57.3-92.1 53.6-143.9L706.8 488.7z"], [e, "M876.6 239.5c-.5-.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c.8-.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-44.7-311.3 39.7-67 67-89.2 162-66.5 247.4l-293 293c-3 3-2.8 7.9.3 11l169.7 169.7c3.1 3.1 8.1 3.3 11 .3l292.9-292.9c85.5 22.8 180.5.7 247.6-66.4 84.4-84.5 97.7-213.1 39.7-311.3zM786 499.8c-58.1 58.1-145.3 69.3-214.6 33.6l-8.8 8.8-.1-.1-274 274.1-79.2-79.2 230.1-230.1s0 .1.1.1l52.8-52.8c-35.7-69.3-24.5-156.5 33.6-214.6a184.2 184.2 0 0 1 144-53.5L537 318.9a32.05 32.05 0 0 0 0 45.3l124.5 124.5a32.05 32.05 0 0 0 45.3 0l132.8-132.8c3.7 51.8-14.4 104.8-53.6 143.9z"]) })), t.TrademarkCircleTwoTone = l("trademark-circle", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm170.7 584.2c-1.1.5-2.3.8-3.5.8h-62c-3.1 0-5.9-1.8-7.2-4.6l-74.6-159.2h-88.7V717c0 4.4-3.6 8-8 8H384c-4.4 0-8-3.6-8-8V307c0-4.4 3.6-8 8-8h155.6c98.8 0 144.2 59.9 144.2 131.1 0 70.2-43.6 106.4-78.4 119.2l80.8 164.2c2.1 3.9.4 8.7-3.5 10.7z"], [t, "M529.9 357h-83.4v148H528c53 0 82.8-25.6 82.8-72.4 0-50.3-32.9-75.6-80.9-75.6z"], [e, "M605.4 549.3c34.8-12.8 78.4-49 78.4-119.2 0-71.2-45.4-131.1-144.2-131.1H384c-4.4 0-8 3.6-8 8v410c0 4.4 3.6 8 8 8h54.7c4.4 0 8-3.6 8-8V561.2h88.7L610 720.4c1.3 2.8 4.1 4.6 7.2 4.6h62c1.2 0 2.4-.3 3.5-.8 3.9-2 5.6-6.8 3.5-10.7l-80.8-164.2zM528 505h-81.5V357h83.4c48 0 80.9 25.3 80.9 75.6 0 46.8-29.8 72.4-82.8 72.4z"]) })), t.UnlockTwoTone = l("unlock", s, (function (e, t) { return c(i, [t, "M232 840h560V536H232v304zm280-226a48.01 48.01 0 0 1 28 87v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 0 1 28-87z"], [e, "M484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z"], [e, "M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zm-40 376H232V536h560v304z"]) })), t.TrophyTwoTone = l("trophy", s, (function (e, t) { return c(i, [t, "M320 480c0 49.1 19.1 95.3 53.9 130.1 34.7 34.8 81 53.9 130.1 53.9h16c49.1 0 95.3-19.1 130.1-53.9 34.8-34.7 53.9-81 53.9-130.1V184H320v296zM184 352c0 41 26.9 75.8 64 87.6-37.1-11.9-64-46.7-64-87.6zm364 382.5C665 721.8 758.4 630.2 773.8 514 758.3 630.2 665 721.7 548 734.5zM250.2 514C265.6 630.2 359 721.8 476 734.5 359 721.7 265.7 630.2 250.2 514z"], [e, "M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.7 630.2 359 721.7 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.7 758.3 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM248 439.6a91.99 91.99 0 0 1-64-87.6V232h64v207.6zM704 480c0 49.1-19.1 95.4-53.9 130.1-34.8 34.8-81 53.9-130.1 53.9h-16c-49.1 0-95.4-19.1-130.1-53.9-34.8-34.8-53.9-81-53.9-130.1V184h384v296zm136-128c0 41-26.9 75.8-64 87.6V232h64v120z"]) })), t.UpCircleTwoTone = l("up-circle", s, (function (e, t) { return c(i, [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm178 479h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 460.4 406.8 605.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z"], [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [e, "M518.4 360.3a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7h46.9c10.3 0 19.9-4.9 25.9-13.2L512 460.4l105.2 145.4c6 8.3 15.7 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.4-12.7l-178-246z"]) })), t.ThunderboltTwoTone = l("thunderbolt", s, (function (e, t) { return c(i, [t, "M695.4 164.1H470.8L281.2 491.5h157.4l-60.3 241 319.8-305.1h-211z"], [e, "M848.1 359.3H627.8L825.9 109c4.1-5.3.4-13-6.3-13H436.1c-2.8 0-5.5 1.5-6.9 4L170.1 547.5c-3.1 5.3.7 12 6.9 12h174.4L262 917.1c-1.9 7.8 7.5 13.3 13.3 7.7L853.6 373c5.2-4.9 1.7-13.7-5.5-13.7zM378.3 732.5l60.3-241H281.2l189.6-327.4h224.6L487.1 427.4h211L378.3 732.5z"]) })), t.UpSquareTwoTone = l("up-square", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"], [t, "M184 840h656V184H184v656zm143.5-228.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 465.4 406.8 610.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7z"], [e, "M334 624h46.9c10.3 0 19.9-4.9 25.9-13.2L512 465.4l105.2 145.4c6 8.3 15.7 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.4-12.7l-178-246a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7z"]) })), t.UsbTwoTone = l("usb", s, (function (e, t) { return c(i, [t, "M759.9 504H264.1c-26.5 0-48.1 19.7-48.1 44v292h592V548c0-24.3-21.6-44-48.1-44z"], [e, "M456 248h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm160 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z"], [e, "M760 432V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zM336 184h352v248H336V184zm472 656H216V548c0-24.3 21.6-44 48.1-44h495.8c26.5 0 48.1 19.7 48.1 44v292z"]) })), t.VideoCameraTwoTone = l("video-camera", s, (function (e, t) { return c(i, [t, "M136 792h576V232H136v560zm64-488c0-4.4 3.6-8 8-8h112c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H208c-4.4 0-8-3.6-8-8v-48z"], [e, "M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM712 792H136V232h576v560zm176-167l-104-59.8V458.9L888 399v226z"], [e, "M208 360h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"]) })), t.WalletTwoTone = l("wallet", s, (function (e, t) { return c(i, [e, "M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 464H528V448h312v128zm0-192H496c-17.7 0-32 14.3-32 32v192c0 17.7 14.3 32 32 32h344v200H184V184h656v200z"], [t, "M528 576h312V448H528v128zm92-104c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z"], [e, "M580 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0z"], [t, "M184 840h656V640H496c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32h344V184H184v656z"]) })), t.WarningTwoTone = l("warning", s, (function (e, t) { return c(i, [e, "M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-783.5-27.9L512 239.9l339.8 588.2H172.2z"], [t, "M172.2 828.1h679.6L512 239.9 172.2 828.1zM560 720a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm-16-304v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8z"], [e, "M464 720a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z"]) })), t.CiTwoTone = l("ci", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-63.5 522.8c49.3 0 82.8-29.4 87-72.4.4-4.1 3.8-7.3 8-7.3h52.7c2.4 0 4.4 2 4.4 4.4 0 77.4-64.3 132.5-152.3 132.5C345.4 720 286 651.4 286 537.4v-49C286 373.5 345.4 304 448.3 304c88.3 0 152.3 56.9 152.3 138.1 0 2.4-2 4.4-4.4 4.4h-52.6c-4.2 0-7.6-3.2-8-7.4-3.9-46.1-37.5-77.6-87-77.6-61.1 0-95.6 45.4-95.7 126.8v49.3c0 80.3 34.5 125.2 95.6 125.2zM738 704.1c0 4.4-3.6 8-8 8h-50.4c-4.4 0-8-3.6-8-8V319.9c0-4.4 3.6-8 8-8H730c4.4 0 8 3.6 8 8v384.2z"], [e, "M730 311.9h-50.4c-4.4 0-8 3.6-8 8v384.2c0 4.4 3.6 8 8 8H730c4.4 0 8-3.6 8-8V319.9c0-4.4-3.6-8-8-8zm-281.4 49.6c49.5 0 83.1 31.5 87 77.6.4 4.2 3.8 7.4 8 7.4h52.6c2.4 0 4.4-2 4.4-4.4 0-81.2-64-138.1-152.3-138.1C345.4 304 286 373.5 286 488.4v49c0 114 59.4 182.6 162.3 182.6 88 0 152.3-55.1 152.3-132.5 0-2.4-2-4.4-4.4-4.4h-52.7c-4.2 0-7.6 3.2-8 7.3-4.2 43-37.7 72.4-87 72.4-61.1 0-95.6-44.9-95.6-125.2v-49.3c.1-81.4 34.6-126.8 95.7-126.8z"]) })), t.CopyrightTwoTone = l("copyright", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm5.5 533c52.9 0 88.8-31.7 93-77.8.4-4.1 3.8-7.3 8-7.3h56.8c2.6 0 4.7 2.1 4.7 4.7 0 82.6-68.7 141.4-162.7 141.4C407.4 734 344 660.8 344 539.1v-52.3C344 364.2 407.4 290 517.3 290c94.3 0 162.7 60.7 162.7 147.4 0 2.6-2.1 4.7-4.7 4.7h-56.7c-4.2 0-7.7-3.2-8-7.4-4-49.6-40-83.4-93-83.4-65.2 0-102.1 48.5-102.2 135.5v52.6c0 85.7 36.8 133.6 102.1 133.6z"], [e, "M517.6 351.3c53 0 89 33.8 93 83.4.3 4.2 3.8 7.4 8 7.4h56.7c2.6 0 4.7-2.1 4.7-4.7 0-86.7-68.4-147.4-162.7-147.4C407.4 290 344 364.2 344 486.8v52.3C344 660.8 407.4 734 517.3 734c94 0 162.7-58.8 162.7-141.4 0-2.6-2.1-4.7-4.7-4.7h-56.8c-4.2 0-7.6 3.2-8 7.3-4.2 46.1-40.1 77.8-93 77.8-65.3 0-102.1-47.9-102.1-133.6v-52.6c.1-87 37-135.5 102.2-135.5z"]) })), t.DollarTwoTone = l("dollar", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M426.6 410.3c0 25.4 15.7 45.1 49.5 57.3 4.7 1.9 9.4 3.4 15 5v-124c-37 4.7-64.5 25.4-64.5 61.7zm116.5 135.2c-2.9-.6-5.7-1.3-8.8-2.2V677c42.6-3.8 72-27.3 72-66.4 0-30.7-15.9-50.7-63.2-65.1z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm22.4 589.2l.2 31.7c0 4.5-3.6 8.1-8 8.1h-28.4c-4.4 0-8-3.6-8-8v-31.4c-89-6.5-130.7-57.1-135.2-112.1-.4-4.7 3.3-8.7 8-8.7h46.2c3.9 0 7.3 2.8 7.9 6.6 5.1 31.8 29.9 55.4 74.1 61.3V534l-24.7-6.3c-52.3-12.5-102.1-45.1-102.1-112.7 0-73 55.4-112.1 126.2-119v-33c0-4.4 3.6-8 8-8h28.1c4.4 0 8 3.6 8 8v32.7c68.5 6.9 119.8 46.9 125.9 109.2a8.1 8.1 0 0 1-8 8.8h-44.9c-4 0-7.4-2.9-7.9-6.9-4-29.2-27.5-53-65.5-58.2v134.3l25.4 5.9c64.8 16 108.9 47 109 116.4 0 75.2-56 117.1-134.3 124z"], [e, "M559.7 488.8l-25.4-5.9V348.6c38 5.2 61.5 29 65.5 58.2.5 4 3.9 6.9 7.9 6.9h44.9c4.7 0 8.4-4.1 8-8.8-6.1-62.3-57.4-102.3-125.9-109.2V263c0-4.4-3.6-8-8-8h-28.1c-4.4 0-8 3.6-8 8v33c-70.8 6.9-126.2 46-126.2 119 0 67.6 49.8 100.2 102.1 112.7l24.7 6.3v142.7c-44.2-5.9-69-29.5-74.1-61.3-.6-3.8-4-6.6-7.9-6.6H363c-4.7 0-8.4 4-8 8.7 4.5 55 46.2 105.6 135.2 112.1V761c0 4.4 3.6 8 8 8h28.4c4.4 0 8-3.6 8-8.1l-.2-31.7c78.3-6.9 134.3-48.8 134.3-124-.1-69.4-44.2-100.4-109-116.4zm-68.6-16.2c-5.6-1.6-10.3-3.1-15-5-33.8-12.2-49.5-31.9-49.5-57.3 0-36.3 27.5-57 64.5-61.7v124zM534.3 677V543.3c3.1.9 5.9 1.6 8.8 2.2 47.3 14.4 63.2 34.4 63.2 65.1 0 39.1-29.4 62.6-72 66.4z"]) })), t.EuroTwoTone = l("euro", s, (function (e, t) { return c(i, [e, "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"], [t, "M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm117.1 581.1c0 3.8-2.7 7-6.4 7.8-15.9 3.4-34.4 5.1-55.3 5.1-109.8 0-183-58.8-200.2-158H337c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h26.1v-36.9c0-4.4 0-8.7.3-12.8H337c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h31.8C388.5 345.7 460.7 290 567.4 290c20.9 0 39.4 1.9 55.3 5.4 3.7.8 6.3 4 6.3 7.8V346a8 8 0 0 1-9.6 7.8c-14.6-2.9-31.8-4.4-51.7-4.4-65.3 0-110.4 33.5-127.6 90.4h128.3c4.4 0 8 3.6 8 8V475c0 4.4-3.6 8-8 8H432.5c-.3 4.4-.3 9.1-.3 13.8v36h136.4c4.4 0 8 3.6 8 8V568c0 4.4-3.6 8-8 8H438c15.3 62 61.3 98.6 129.8 98.6 19.9 0 37.1-1.3 51.8-4.1 4.9-1 9.5 2.8 9.5 7.8v42.8z"], [e, "M619.6 670.5c-14.7 2.8-31.9 4.1-51.8 4.1-68.5 0-114.5-36.6-129.8-98.6h130.6c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H432.2v-36c0-4.7 0-9.4.3-13.8h135.9c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H440.1c17.2-56.9 62.3-90.4 127.6-90.4 19.9 0 37.1 1.5 51.7 4.4a8 8 0 0 0 9.6-7.8v-42.8c0-3.8-2.6-7-6.3-7.8-15.9-3.5-34.4-5.4-55.3-5.4-106.7 0-178.9 55.7-198.6 149.9H337c-4.4 0-8 3.6-8 8v27.2c0 4.4 3.6 8 8 8h26.4c-.3 4.1-.3 8.4-.3 12.8v36.9H337c-4.4 0-8 3.6-8 8V568c0 4.4 3.6 8 8 8h30.2c17.2 99.2 90.4 158 200.2 158 20.9 0 39.4-1.7 55.3-5.1 3.7-.8 6.4-4 6.4-7.8v-42.8c0-5-4.6-8.8-9.5-7.8z"]) })), t.GoldTwoTone = l("gold", s, (function (e, t) { return c(i, [e, "M435.7 558.7c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM196.5 748l20.7-128h159.5l20.7 128H196.5zm709.4 58.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zM626.5 748l20.7-128h159.5l20.7 128H626.5zM342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8zm91.2-196h159.5l20.7 128h-201l20.8-128z"], [t, "M592.7 276H433.2l-20.8 128h201zM217.2 620l-20.7 128h200.9l-20.7-128zm430 0l-20.7 128h200.9l-20.7-128z"]) })), t.CanlendarTwoTone = l("canlendar", s, (function (e, t) { return c(i, [t, "M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v136h656V256H712v48z"], [e, "M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zm0-448H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136z"]) })) }, "3b1b": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 0: "-褍屑", 1: "-褍屑", 2: "-褞屑", 3: "-褞屑", 4: "-褍屑", 5: "-褍屑", 6: "-褍屑", 7: "-褍屑", 8: "-褍屑", 9: "-褍屑", 10: "-褍屑", 12: "-褍屑", 13: "-褍屑", 20: "-褍屑", 30: "-褞屑", 40: "-褍屑", 50: "-褍屑", 60: "-褍屑", 70: "-褍屑", 80: "-褍屑", 90: "-褍屑", 100: "-褍屑" }, n = e.defineLocale("tg", { months: "褟薪胁邪褉_褎械胁褉邪谢_屑邪褉褌_邪锌褉械谢_屑邪泄_懈褞薪_懈褞谢_邪胁谐褍褋褌_褋械薪褌褟斜褉_芯泻褌褟斜褉_薪芯褟斜褉_写械泻邪斜褉".split("_"), monthsShort: "褟薪胁_褎械胁_屑邪褉_邪锌褉_屑邪泄_懈褞薪_懈褞谢_邪胁谐_褋械薪_芯泻褌_薪芯褟_写械泻".split("_"), weekdays: "褟泻褕邪薪斜械_写褍褕邪薪斜械_褋械褕邪薪斜械_褔芯褉褕邪薪斜械_锌邪薪曳褕邪薪斜械_曳褍屑褗邪_褕邪薪斜械".split("_"), weekdaysShort: "褟褕斜_写褕斜_褋褕斜_褔褕斜_锌褕斜_曳褍屑_褕薪斜".split("_"), weekdaysMin: "褟褕_写褕_褋褕_褔褕_锌褕_曳屑_褕斜".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[袠屑褉盈蟹 褋芯邪褌懈] LT", nextDay: "[袩邪谐芯页 褋芯邪褌懈] LT", lastDay: "[袛懈褉盈蟹 褋芯邪褌懈] LT", nextWeek: "dddd[懈] [页邪褎褌邪懈 芯褟薪写邪 褋芯邪褌懈] LT", lastWeek: "dddd[懈] [页邪褎褌邪懈 谐褍蟹邪褕褌邪 褋芯邪褌懈] LT", sameElse: "L" }, relativeTime: { future: "斜邪褗写懈 %s", past: "%s 锌械褕", s: "褟泻褔邪薪写 褋芯薪懈褟", m: "褟泻 写邪覜懈覜邪", mm: "%d 写邪覜懈覜邪", h: "褟泻 褋芯邪褌", hh: "%d 褋芯邪褌", d: "褟泻 褉盈蟹", dd: "%d 褉盈蟹", M: "褟泻 屑芯页", MM: "%d 屑芯页", y: "褟泻 褋芯谢", yy: "%d 褋芯谢" }, meridiemParse: /褕邪斜|褋褍斜页|褉盈蟹|斜械谐芯页/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "褕邪斜" === t ? e < 4 ? e : e + 12 : "褋褍斜页" === t ? e : "褉盈蟹" === t ? e >= 11 ? e : e + 12 : "斜械谐芯页" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { return e < 4 ? "褕邪斜" : e < 11 ? "褋褍斜页" : e < 16 ? "褉盈蟹" : e < 19 ? "斜械谐芯页" : "褕邪斜" }, dayOfMonthOrdinalParse: /\d{1,2}-(褍屑|褞屑)/, ordinal: function (e) { var n = e % 10, r = e >= 100 ? 100 : null; return e + (t[e] || t[n] || t[r]) }, week: { dow: 1, doy: 7 } }); return n
+                    }))
+                }, "3b4a": function (e, t, n) { var r = n("0b07"), i = function () { try { var e = r(Object, "defineProperty"); return e({}, "", {}), e } catch (t) { } }(); e.exports = i }, "3bb4": function (e, t, n) { var r = n("08cc"), i = n("ec69"); function o(e) { var t = i(e), n = t.length; while (n--) { var o = t[n], a = e[o]; t[n] = [o, a, r(a)] } return t } e.exports = o }, "3c0d": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = "leden_煤nor_b艡ezen_duben_kv臎ten_膷erven_膷ervenec_srpen_z谩艡铆_艡铆jen_listopad_prosinec".split("_"), n = "led_煤no_b艡e_dub_kv臎_膷vn_膷vc_srp_z谩艡_艡铆j_lis_pro".split("_"), r = [/^led/i, /^煤no/i, /^b艡e/i, /^dub/i, /^kv臎/i, /^(膷vn|膷erven$|膷ervna)/i, /^(膷vc|膷ervenec|膷ervence)/i, /^srp/i, /^z谩艡/i, /^艡铆j/i, /^lis/i, /^pro/i], i = /^(leden|煤nor|b艡ezen|duben|kv臎ten|膷ervenec|膷ervence|膷erven|膷ervna|srpen|z谩艡铆|艡铆jen|listopad|prosinec|led|煤no|b艡e|dub|kv臎|膷vn|膷vc|srp|z谩艡|艡铆j|lis|pro)/i; function o(e) { return e > 1 && e < 5 && 1 !== ~~(e / 10) } function a(e, t, n, r) { var i = e + " "; switch (n) { case "s": return t || r ? "p谩r sekund" : "p谩r sekundami"; case "ss": return t || r ? i + (o(e) ? "sekundy" : "sekund") : i + "sekundami"; case "m": return t ? "minuta" : r ? "minutu" : "minutou"; case "mm": return t || r ? i + (o(e) ? "minuty" : "minut") : i + "minutami"; case "h": return t ? "hodina" : r ? "hodinu" : "hodinou"; case "hh": return t || r ? i + (o(e) ? "hodiny" : "hodin") : i + "hodinami"; case "d": return t || r ? "den" : "dnem"; case "dd": return t || r ? i + (o(e) ? "dny" : "dn铆") : i + "dny"; case "M": return t || r ? "m臎s铆c" : "m臎s铆cem"; case "MM": return t || r ? i + (o(e) ? "m臎s铆ce" : "m臎s铆c暖") : i + "m臎s铆ci"; case "y": return t || r ? "rok" : "rokem"; case "yy": return t || r ? i + (o(e) ? "roky" : "let") : i + "lety" } } var s = e.defineLocale("cs", { months: t, monthsShort: n, monthsRegex: i, monthsShortRegex: i, monthsStrictRegex: /^(leden|ledna|煤nora|煤nor|b艡ezen|b艡ezna|duben|dubna|kv臎ten|kv臎tna|膷ervenec|膷ervence|膷erven|膷ervna|srpen|srpna|z谩艡铆|艡铆jen|艡铆jna|listopadu|listopad|prosinec|prosince)/i, monthsShortStrictRegex: /^(led|煤no|b艡e|dub|kv臎|膷vn|膷vc|srp|z谩艡|艡铆j|lis|pro)/i, monthsParse: r, longMonthsParse: r, shortMonthsParse: r, weekdays: "ned臎le_pond臎l铆_煤ter媒_st艡eda_膷tvrtek_p谩tek_sobota".split("_"), weekdaysShort: "ne_po_煤t_st_膷t_p谩_so".split("_"), weekdaysMin: "ne_po_煤t_st_膷t_p谩_so".split("_"), longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd D. MMMM YYYY H:mm", l: "D. M. YYYY" }, calendar: { sameDay: "[dnes v] LT", nextDay: "[z铆tra v] LT", nextWeek: function () { switch (this.day()) { case 0: return "[v ned臎li v] LT"; case 1: case 2: return "[v] dddd [v] LT"; case 3: return "[ve st艡edu v] LT"; case 4: return "[ve 膷tvrtek v] LT"; case 5: return "[v p谩tek v] LT"; case 6: return "[v sobotu v] LT" } }, lastDay: "[v膷era v] LT", lastWeek: function () { switch (this.day()) { case 0: return "[minulou ned臎li v] LT"; case 1: case 2: return "[minul茅] dddd [v] LT"; case 3: return "[minulou st艡edu v] LT"; case 4: case 5: return "[minul媒] dddd [v] LT"; case 6: return "[minulou sobotu v] LT" } }, sameElse: "L" }, relativeTime: { future: "za %s", past: "p艡ed %s", s: a, ss: a, m: a, mm: a, h: a, hh: a, d: a, dd: a, M: a, MM: a, y: a, yy: a }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return s
+                    }))
+                }, "3c55": function (e, t, n) { try { var r = n("cecd") } catch (s) { r = n("cecd") } var i = /\s+/, o = Object.prototype.toString; function a(e) { if (!e || !e.nodeType) throw new Error("A DOM element reference is required"); this.el = e, this.list = e.classList } e.exports = function (e) { return new a(e) }, a.prototype.add = function (e) { if (this.list) return this.list.add(e), this; var t = this.array(), n = r(t, e); return ~n || t.push(e), this.el.className = t.join(" "), this }, a.prototype.remove = function (e) { if ("[object RegExp]" == o.call(e)) return this.removeMatching(e); if (this.list) return this.list.remove(e), this; var t = this.array(), n = r(t, e); return ~n && t.splice(n, 1), this.el.className = t.join(" "), this }, a.prototype.removeMatching = function (e) { for (var t = this.array(), n = 0; n < t.length; n++)e.test(t[n]) && this.remove(t[n]); return this }, a.prototype.toggle = function (e, t) { return this.list ? ("undefined" !== typeof t ? t !== this.list.toggle(e, t) && this.list.toggle(e) : this.list.toggle(e), this) : ("undefined" !== typeof t ? t ? this.add(e) : this.remove(e) : this.has(e) ? this.remove(e) : this.add(e), this) }, a.prototype.array = function () { var e = this.el.getAttribute("class") || "", t = e.replace(/^\s+|\s+$/g, ""), n = t.split(i); return "" === n[0] && n.shift(), n }, a.prototype.has = a.prototype.contains = function (e) { return this.list ? this.list.contains(e) : !!~r(this.array(), e) } }, "3cfe": function (e, t, n) { var r = n("4bb5"); function i(e, t) { return null == e || r(e, t) } e.exports = i }, "3de4": function (e, t, n) { }, "3de5": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "喁�", 2: "喁�", 3: "喁�", 4: "喁�", 5: "喁�", 6: "喁�", 7: "喁�", 8: "喁�", 9: "喁�", 0: "喁�" }, n = { "喁�": "1", "喁�": "2", "喁�": "3", "喁�": "4", "喁�": "5", "喁�": "6", "喁�": "7", "喁�": "8", "喁�": "9", "喁�": "0" }, r = e.defineLocale("ta", { months: "喈溹喈掂喈縚喈喈瘝喈班喈班_喈喈班瘝喈氞瘝_喈忇喁嵿喈侧瘝_喈瘒_喈溹瘋喈┼瘝_喈溹瘋喈侧瘓_喈嗋畷喈膏瘝喈熰瘝_喈氞瘑喈瘝喈熰瘑喈瘝喈喁峗喈呧畷喁嵿疅喁囙喈喁峗喈ㄠ喈瘝喈喁峗喈熰喈氞喁嵿喈班瘝".split("_"), monthsShort: "喈溹喈掂喈縚喈喈瘝喈班喈班_喈喈班瘝喈氞瘝_喈忇喁嵿喈侧瘝_喈瘒_喈溹瘋喈┼瘝_喈溹瘋喈侧瘓_喈嗋畷喈膏瘝喈熰瘝_喈氞瘑喈瘝喈熰瘑喈瘝喈喁峗喈呧畷喁嵿疅喁囙喈喁峗喈ㄠ喈瘝喈喁峗喈熰喈氞喁嵿喈班瘝".split("_"), weekdays: "喈炧喈喈编瘝喈编瘉喈曕瘝喈曕喈脆喁坃喈む喈權瘝喈曕疅喁嵿畷喈苦喈瘓_喈氞瘑喈掂瘝喈掂喈瘝喈曕喈脆喁坃喈瘉喈む喁嵿畷喈苦喈瘓_喈掂喈喈脆畷喁嵿畷喈苦喈瘓_喈掂瘑喈赤瘝喈赤喈曕瘝喈曕喈脆喁坃喈氞喈苦畷喁嵿畷喈苦喈瘓".split("_"), weekdaysShort: "喈炧喈喈编瘉_喈む喈權瘝喈曕喁峗喈氞瘑喈掂瘝喈掂喈瘝_喈瘉喈む喁峗喈掂喈喈脆喁峗喈掂瘑喈赤瘝喈赤_喈氞喈�".split("_"), weekdaysMin: "喈炧_喈む_喈氞瘑_喈瘉_喈掂_喈掂瘑_喈�".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, HH:mm", LLLL: "dddd, D MMMM YYYY, HH:mm" }, calendar: { sameDay: "[喈囙喁嵿喁乚 LT", nextDay: "[喈ㄠ喈赤瘓] LT", nextWeek: "dddd, LT", lastDay: "[喈ㄠ瘒喈编瘝喈编瘉] LT", lastWeek: "[喈曕疅喈ㄠ瘝喈� 喈掂喈班喁峕 dddd, LT", sameElse: "L" }, relativeTime: { future: "%s 喈囙喁�", past: "%s 喈瘉喈┼瘝", s: "喈掄喁� 喈氞喈� 喈掂喈ㄠ喈熰喈曕喁�", ss: "%d 喈掂喈ㄠ喈熰喈曕喁�", m: "喈掄喁� 喈ㄠ喈喈熰喁�", mm: "%d 喈ㄠ喈喈熰畽喁嵿畷喈赤瘝", h: "喈掄喁� 喈喈� 喈ㄠ瘒喈班喁�", hh: "%d 喈喈� 喈ㄠ瘒喈班喁�", d: "喈掄喁� 喈ㄠ喈赤瘝", dd: "%d 喈ㄠ喈熰瘝喈曕喁�", M: "喈掄喁� 喈喈む喁�", MM: "%d 喈喈む畽喁嵿畷喈赤瘝", y: "喈掄喁� 喈掂喁佮疅喈瘝", yy: "%d 喈嗋喁嵿疅喁佮畷喈赤瘝" }, dayOfMonthOrdinalParse: /\d{1,2}喈掂喁�/, ordinal: function (e) { return e + "喈掂喁�" }, preparse: function (e) { return e.replace(/[喁о喁┼喁喁喁]/g, (function (e) { return n[e] })) }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })) }, meridiemParse: /喈喈喁峾喈掂瘓喈曕喁坾喈曕喈侧瘓|喈ㄠ喁嵿喈曕喁峾喈庎喁嵿喈距疅喁亅喈喈侧瘓/, meridiem: function (e, t, n) { return e < 2 ? " 喈喈喁�" : e < 6 ? " 喈掂瘓喈曕喁�" : e < 10 ? " 喈曕喈侧瘓" : e < 14 ? " 喈ㄠ喁嵿喈曕喁�" : e < 18 ? " 喈庎喁嵿喈距疅喁�" : e < 22 ? " 喈喈侧瘓" : " 喈喈喁�" }, meridiemHour: function (e, t) { return 12 === e && (e = 0), "喈喈喁�" === t ? e < 2 ? e : e + 12 : "喈掂瘓喈曕喁�" === t || "喈曕喈侧瘓" === t || "喈ㄠ喁嵿喈曕喁�" === t && e >= 10 ? e : e + 12 }, week: { dow: 0, doy: 6 } }); return r
+                    }))
+                }, "3de7": function (e, t, n) { }, "3e92": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "喑�", 2: "喑�", 3: "喑�", 4: "喑�", 5: "喑�", 6: "喑�", 7: "喑�", 8: "喑�", 9: "喑�", 0: "喑�" }, n = { "喑�": "1", "喑�": "2", "喑�": "3", "喑�": "4", "喑�": "5", "喑�": "6", "喑�": "7", "喑�": "8", "喑�": "9", "喑�": "0" }, r = e.defineLocale("kn", { months: "嗖溹波嗖掂舶嗖縚嗖硢嗖硩嗖班驳嗖班部_嗖簿嗖班硩嗖氞硩_嗖忇勃喑嵿舶嗖苦膊喑峗嗖硢喑昣嗖溹硞嗖ㄠ硩_嗖溹硜嗖侧硢喑朹嗖嗋矖嗖膏硩嗖熰硩_嗖膏硢嗖硩嗖熰硢嗖傕铂嗖班硩_嗖呧矔喑嵿矡喑嗋硞喑曕铂嗖班硩_嗖ㄠ驳喑嗋矀嗖舶喑峗嗖∴部嗖膏硢嗖傕铂嗖班硩".split("_"), monthsShort: "嗖溹波_嗖硢嗖硩嗖癬嗖簿嗖班硩嗖氞硩_嗖忇勃喑嵿舶嗖苦膊喑峗嗖硢喑昣嗖溹硞嗖ㄠ硩_嗖溹硜嗖侧硢喑朹嗖嗋矖嗖膏硩嗖熰硩_嗖膏硢嗖硩嗖熰硢嗖俖嗖呧矔喑嵿矡喑嗋硞喑昣嗖ㄠ驳喑嗋矀_嗖∴部嗖膏硢嗖�".split("_"), monthsParseExact: !0, weekdays: "嗖簿嗖ㄠ硜嗖掂簿嗖癬嗖膏硢喑傕硶嗖驳嗖距舶_嗖矀嗖椸渤嗖掂簿嗖癬嗖硜嗖о驳嗖距舶_嗖椸硜嗖班硜嗖掂簿嗖癬嗖多硜嗖曕硩嗖班驳嗖距舶_嗖多波嗖苦驳嗖距舶".split("_"), weekdaysShort: "嗖簿嗖ㄠ硜_嗖膏硢喑傕硶嗖甠嗖矀嗖椸渤_嗖硜嗖嗖椸硜嗖班硜_嗖多硜嗖曕硩嗖癬嗖多波嗖�".split("_"), weekdaysMin: "嗖簿_嗖膏硢喑傕硶_嗖矀_嗖硜_嗖椸硜_嗖多硜_嗖�".split("_"), longDateFormat: { LT: "A h:mm", LTS: "A h:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm", LLLL: "dddd, D MMMM YYYY, A h:mm" }, calendar: { sameDay: "[嗖囙矀嗖︵硜] LT", nextDay: "[嗖ㄠ簿嗖赤硢] LT", nextWeek: "dddd, LT", lastDay: "[嗖ㄠ部嗖ㄠ硩嗖ㄠ硢] LT", lastWeek: "[嗖曕硢喑傕波喑嗋帛] dddd, LT", sameElse: "L" }, relativeTime: { future: "%s 嗖ㄠ矀嗖む舶", past: "%s 嗖灌部嗖傕拨喑�", s: "嗖曕硢嗖侧驳喑� 嗖曕硩嗖粪玻嗖椸渤喑�", ss: "%d 嗖膏硢嗖曕硢嗖傕病喑佮矖嗖赤硜", m: "嗖掄矀嗖︵硜 嗖ㄠ部嗖部嗖�", mm: "%d 嗖ㄠ部嗖部嗖�", h: "嗖掄矀嗖︵硜 嗖椸矀嗖熰硢", hh: "%d 嗖椸矀嗖熰硢", d: "嗖掄矀嗖︵硜 嗖︵部嗖�", dd: "%d 嗖︵部嗖�", M: "嗖掄矀嗖︵硜 嗖む部嗖傕矖嗖赤硜", MM: "%d 嗖む部嗖傕矖嗖赤硜", y: "嗖掄矀嗖︵硜 嗖掂舶喑嵿卜", yy: "%d 嗖掂舶喑嵿卜" }, preparse: function (e) { return e.replace(/[喑о敞喑┼唱喑超喑钞喑肠]/g, (function (e) { return n[e] })) }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })) }, meridiemParse: /嗖班簿嗖む硩嗖班部|嗖硢嗖赤部嗖椸硩嗖椸硢|嗖钵喑嵿帛嗖距补喑嵿波|嗖膏矀嗖溹硢/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "嗖班簿嗖む硩嗖班部" === t ? e < 4 ? e : e + 12 : "嗖硢嗖赤部嗖椸硩嗖椸硢" === t ? e : "嗖钵喑嵿帛嗖距补喑嵿波" === t ? e >= 10 ? e : e + 12 : "嗖膏矀嗖溹硢" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { return e < 4 ? "嗖班簿嗖む硩嗖班部" : e < 10 ? "嗖硢嗖赤部嗖椸硩嗖椸硢" : e < 17 ? "嗖钵喑嵿帛嗖距补喑嵿波" : e < 20 ? "嗖膏矀嗖溹硢" : "嗖班簿嗖む硩嗖班部" }, dayOfMonthOrdinalParse: /\d{1,2}(嗖ㄠ硢喑�)/, ordinal: function (e) { return e + "嗖ㄠ硢喑�" }, week: { dow: 0, doy: 6 } }); return r
+                    }))
+                }, "3eea": function (e, t, n) { var r = n("7948"), i = n("3818"), o = n("4bb5"), a = n("e2e4"), s = n("8eeb"), c = n("e0e7"), l = n("c6cf"), u = n("1bac"), h = 1, f = 2, d = 4, p = l((function (e, t) { var n = {}; if (null == e) return n; var l = !1; t = r(t, (function (t) { return t = a(t, e), l || (l = t.length > 1), t })), s(e, u(e), n), l && (n = i(n, h | f | d, c)); var p = t.length; while (p--) o(n, t[p]); return n })); e.exports = p }, "3f6b": function (e, t, n) { e.exports = { default: n("51b6"), __esModule: !0 } }, "3f84": function (e, t, n) { var r = n("85e3"), i = n("100e"), o = n("e031"), a = n("2411"), s = i((function (e) { return e.push(void 0, o), r(a, void 0, e) })); e.exports = s }, "3ff1": function (e, t, n) { var r = n("266a"), i = n("ec69"); function o(e) { return null == e ? [] : r(e, i(e)) } e.exports = o }, 4039: function (e, t, n) { "use strict"; function r() { return !1 } function i() { return !0 } function o() { this.timeStamp = Date.now(), this.target = void 0, this.currentTarget = void 0 } Object.defineProperty(t, "__esModule", { value: !0 }), o.prototype = { isEventObject: 1, constructor: o, isDefaultPrevented: r, isPropagationStopped: r, isImmediatePropagationStopped: r, preventDefault: function () { this.isDefaultPrevented = i }, stopPropagation: function () { this.isPropagationStopped = i }, stopImmediatePropagation: function () { this.isImmediatePropagationStopped = i, this.stopPropagation() }, halt: function (e) { e ? this.stopImmediatePropagation() : this.stopPropagation(), this.preventDefault() } }, t["default"] = o, e.exports = t["default"] }, "408c": function (e, t, n) { var r = n("2b3e"), i = function () { return r.Date.now() }; e.exports = i }, "40c3": function (e, t, n) { var r = n("6b4c"), i = n("5168")("toStringTag"), o = "Arguments" == r(function () { return arguments }()), a = function (e, t) { try { return e[t] } catch (n) { } }; e.exports = function (e) { var t, n, s; return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof (n = a(t = Object(e), i)) ? n : o ? r(t) : "Object" == (s = r(t)) && "function" == typeof t.callee ? "Arguments" : s } }, "40cb": function (e, t, n) { }, "41a0": function (e, t, n) { "use strict"; var r = n("2aeb"), i = n("4630"), o = n("7f20"), a = {}; n("32e9")(a, n("2b4c")("iterator"), (function () { return this })), e.exports = function (e, t, n) { e.prototype = r(a, { next: i(1, n) }), o(e, t + " Iterator") } }, "41b2": function (e, t, n) { "use strict"; t.__esModule = !0; var r = n("3f6b"), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } t.default = i.default || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e } }, "41c3": function (e, t, n) { var r = n("1a8c"), i = n("eac5"), o = n("ec8c"), a = Object.prototype, s = a.hasOwnProperty; function c(e) { if (!r(e)) return o(e); var t = i(e), n = []; for (var a in e) ("constructor" != a || !t && s.call(e, a)) && n.push(a); return n } e.exports = c }, "423e": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("ar-kw", { months: "賷賳丕賷乇_賮亘乇丕賷乇_賲丕乇爻_兀亘乇賷賱_賲丕賷_賷賵賳賷賵_賷賵賱賷賵夭_睾卮鬲_卮鬲賳亘乇_兀賰鬲賵亘乇_賳賵賳亘乇_丿噩賳亘乇".split("_"), monthsShort: "賷賳丕賷乇_賮亘乇丕賷乇_賲丕乇爻_兀亘乇賷賱_賲丕賷_賷賵賳賷賵_賷賵賱賷賵夭_睾卮鬲_卮鬲賳亘乇_兀賰鬲賵亘乇_賳賵賳亘乇_丿噩賳亘乇".split("_"), weekdays: "丕賱兀丨丿_丕賱廿鬲賳賷賳_丕賱孬賱丕孬丕亍_丕賱兀乇亘毓丕亍_丕賱禺賲賷爻_丕賱噩賲毓丞_丕賱爻亘鬲".split("_"), weekdaysShort: "丕丨丿_丕鬲賳賷賳_孬賱丕孬丕亍_丕乇亘毓丕亍_禺賲賷爻_噩賲毓丞_爻亘鬲".split("_"), weekdaysMin: "丨_賳_孬_乇_禺_噩_爻".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[丕賱賷賵賲 毓賱賶 丕賱爻丕毓丞] LT", nextDay: "[睾丿丕 毓賱賶 丕賱爻丕毓丞] LT", nextWeek: "dddd [毓賱賶 丕賱爻丕毓丞] LT", lastDay: "[兀賲爻 毓賱賶 丕賱爻丕毓丞] LT", lastWeek: "dddd [毓賱賶 丕賱爻丕毓丞] LT", sameElse: "L" }, relativeTime: { future: "賮賷 %s", past: "賲賳匕 %s", s: "孬賵丕賳", ss: "%d 孬丕賳賷丞", m: "丿賯賷賯丞", mm: "%d 丿賯丕卅賯", h: "爻丕毓丞", hh: "%d 爻丕毓丕鬲", d: "賷賵賲", dd: "%d 兀賷丕賲", M: "卮賴乇", MM: "%d 兀卮賴乇", y: "爻賳丞", yy: "%d 爻賳賵丕鬲" }, week: { dow: 0, doy: 12 } }); return t
+                    }))
+                }, 4245: function (e, t, n) { var r = n("1290"); function i(e, t) { var n = e.__data__; return r(t) ? n["string" == typeof t ? "string" : "hash"] : n.map } e.exports = i }, 42454: function (e, t, n) { var r = n("f909"), i = n("2ec1"), o = i((function (e, t, n) { r(e, t, n) })); e.exports = o }, 4284: function (e, t) { function n(e, t) { var n = -1, r = null == e ? 0 : e.length; while (++n < r) if (t(e[n], n, e)) return !0; return !1 } e.exports = n }, "42a2": function (e, t, n) { var r = n("b5a7"), i = n("79bc"), o = n("1cec"), a = n("c869"), s = n("39ff"), c = n("3729"), l = n("dc57"), u = "[object Map]", h = "[object Object]", f = "[object Promise]", d = "[object Set]", p = "[object WeakMap]", v = "[object DataView]", m = l(r), g = l(i), y = l(o), b = l(a), x = l(s), w = c; (r && w(new r(new ArrayBuffer(1))) != v || i && w(new i) != u || o && w(o.resolve()) != f || a && w(new a) != d || s && w(new s) != p) && (w = function (e) { var t = c(e), n = t == h ? e.constructor : void 0, r = n ? l(n) : ""; if (r) switch (r) { case m: return v; case g: return u; case y: return f; case b: return d; case x: return p }return t }), e.exports = w }, 4359: function (e, t) { function n(e, t) { var n = -1, r = e.length; t || (t = Array(r)); while (++n < r) t[n] = e[n]; return t } e.exports = n }, 4362: function (e, t, n) { t.nextTick = function (e) { var t = Array.prototype.slice.call(arguments); t.shift(), setTimeout((function () { e.apply(null, t) }), 0) }, t.platform = t.arch = t.execPath = t.title = "browser", t.pid = 1, t.browser = !0, t.env = {}, t.argv = [], t.binding = function (e) { throw new Error("No such module. (Possibly not yet loaded)") }, function () { var e, r = "/"; t.cwd = function () { return r }, t.chdir = function (t) { e || (e = n("df7c")), r = e.resolve(t, r) } }(), t.exit = t.kill = t.umask = t.dlopen = t.uptime = t.memoryUsage = t.uvCounters = function () { }, t.features = {} }, "43ad": function (e, t, n) { var r = n("23e2"); function i(e, t) { return function (n, i) { return r(n, e, t(i), {}) } } e.exports = i }, "43f7": function (e, t, n) { }, "440c": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t, n, r) { var i = { m: ["eng Minutt", "enger Minutt"], h: ["eng Stonn", "enger Stonn"], d: ["een Dag", "engem Dag"], M: ["ee Mount", "engem Mount"], y: ["ee Joer", "engem Joer"] }; return t ? i[n][0] : i[n][1] } function n(e) { var t = e.substr(0, e.indexOf(" ")); return i(t) ? "a " + e : "an " + e } function r(e) { var t = e.substr(0, e.indexOf(" ")); return i(t) ? "viru " + e : "virun " + e } function i(e) { if (e = parseInt(e, 10), isNaN(e)) return !1; if (e < 0) return !0; if (e < 10) return 4 <= e && e <= 7; if (e < 100) { var t = e % 10, n = e / 10; return i(0 === t ? n : t) } if (e < 1e4) { while (e >= 10) e /= 10; return i(e) } return e /= 1e3, i(e) } var o = e.defineLocale("lb", { months: "Januar_Februar_M盲erz_Abr毛ll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), monthsShort: "Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"), monthsParseExact: !0, weekdays: "Sonndeg_M茅indeg_D毛nschdeg_M毛ttwoch_Donneschdeg_Freideg_Samschdeg".split("_"), weekdaysShort: "So._M茅._D毛._M毛._Do._Fr._Sa.".split("_"), weekdaysMin: "So_M茅_D毛_M毛_Do_Fr_Sa".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm [Auer]", LTS: "H:mm:ss [Auer]", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm [Auer]", LLLL: "dddd, D. MMMM YYYY H:mm [Auer]" }, calendar: { sameDay: "[Haut um] LT", sameElse: "L", nextDay: "[Muer um] LT", nextWeek: "dddd [um] LT", lastDay: "[G毛schter um] LT", lastWeek: function () { switch (this.day()) { case 2: case 4: return "[Leschten] dddd [um] LT"; default: return "[Leschte] dddd [um] LT" } } }, relativeTime: { future: n, past: r, s: "e puer Sekonnen", ss: "%d Sekonnen", m: t, mm: "%d Minutten", h: t, hh: "%d Stonnen", d: t, dd: "%d Deeg", M: t, MM: "%d M茅int", y: t, yy: "%d Joer" }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return o
+                    }))
+                }, 4416: function (e, t) { function n(e) { var t = null == e ? 0 : e.length; return t ? e[t - 1] : void 0 } e.exports = n }, 4467: function (e, t, n) { var r = n("e2e4"), i = n("9520"), o = n("f4d6"); function a(e, t, n) { t = r(t, e); var a = -1, s = t.length; s || (s = 1, e = void 0); while (++a < s) { var c = null == e ? void 0 : e[o(t[a])]; void 0 === c && (a = s, c = n), e = i(c) ? c.call(e) : c } return e } e.exports = a }, 4472: function (e, t, n) { var r = n("872a"), i = n("242e"), o = n("badf"); function a(e, t) { var n = {}; return t = o(t, 3), i(e, (function (e, i, o) { r(n, t(e, i, o), e) })), n } e.exports = a }, "44d2": function (e, t, n) { }, "454f": function (e, t, n) { n("46a7"); var r = n("584a").Object; e.exports = function (e, t, n) { return r.defineProperty(e, t, n) } }, "456d": function (e, t, n) { var r = n("4bf8"), i = n("0d58"); n("5eda")("keys", (function () { return function (e) { return i(r(e)) } })) }, 4588: function (e, t) { var n = Math.ceil, r = Math.floor; e.exports = function (e) { return isNaN(e = +e) ? 0 : (e > 0 ? r : n)(e) } }, "45f2": function (e, t, n) { var r = n("d9f6").f, i = n("07e3"), o = n("5168")("toStringTag"); e.exports = function (e, t, n) { e && !i(e = n ? e : e.prototype, o) && r(e, o, { configurable: !0, value: t }) } }, 4630: function (e, t) { e.exports = function (e, t) { return { enumerable: !(1 & e), configurable: !(2 & e), writable: !(4 & e), value: t } } }, 4678: function (e, t, n) { var r = { "./af": "2bfb", "./af.js": "2bfb", "./ar": "8e73", "./ar-dz": "a356", "./ar-dz.js": "a356", "./ar-kw": "423e", "./ar-kw.js": "423e", "./ar-ly": "1cfd", "./ar-ly.js": "1cfd", "./ar-ma": "0a84", "./ar-ma.js": "0a84", "./ar-sa": "8230", "./ar-sa.js": "8230", "./ar-tn": "6d83", "./ar-tn.js": "6d83", "./ar.js": "8e73", "./az": "485c", "./az.js": "485c", "./be": "1fc1", "./be.js": "1fc1", "./bg": "84aa", "./bg.js": "84aa", "./bm": "a7fa", "./bm.js": "a7fa", "./bn": "9043", "./bn.js": "9043", "./bo": "d26a", "./bo.js": "d26a", "./br": "6887", "./br.js": "6887", "./bs": "2554", "./bs.js": "2554", "./ca": "d716", "./ca.js": "d716", "./cs": "3c0d", "./cs.js": "3c0d", "./cv": "03ec", "./cv.js": "03ec", "./cy": "9797", "./cy.js": "9797", "./da": "0f14", "./da.js": "0f14", "./de": "b469", "./de-at": "b3eb", "./de-at.js": "b3eb", "./de-ch": "bb71", "./de-ch.js": "bb71", "./de.js": "b469", "./dv": "598a", "./dv.js": "598a", "./el": "8d47", "./el.js": "8d47", "./en-au": "0e6b", "./en-au.js": "0e6b", "./en-ca": "3886", "./en-ca.js": "3886", "./en-gb": "39a6", "./en-gb.js": "39a6", "./en-ie": "e1d3", "./en-ie.js": "e1d3", "./en-il": "7333", "./en-il.js": "7333", "./en-in": "ec2e", "./en-in.js": "ec2e", "./en-nz": "6f50", "./en-nz.js": "6f50", "./en-sg": "b7e9", "./en-sg.js": "b7e9", "./eo": "65db", "./eo.js": "65db", "./es": "898b", "./es-do": "0a3c", "./es-do.js": "0a3c", "./es-us": "55c9", "./es-us.js": "55c9", "./es.js": "898b", "./et": "ec18", "./et.js": "ec18", "./eu": "0ff2", "./eu.js": "0ff2", "./fa": "8df4", "./fa.js": "8df4", "./fi": "81e9", "./fi.js": "81e9", "./fil": "d69a", "./fil.js": "d69a", "./fo": "0721", "./fo.js": "0721", "./fr": "9f26", "./fr-ca": "d9f8", "./fr-ca.js": "d9f8", "./fr-ch": "0e49", "./fr-ch.js": "0e49", "./fr.js": "9f26", "./fy": "7118", "./fy.js": "7118", "./ga": "5120", "./ga.js": "5120", "./gd": "f6b4", "./gd.js": "f6b4", "./gl": "8840", "./gl.js": "8840", "./gom-deva": "aaf2", "./gom-deva.js": "aaf2", "./gom-latn": "0caa", "./gom-latn.js": "0caa", "./gu": "e0c5", "./gu.js": "e0c5", "./he": "c7aa", "./he.js": "c7aa", "./hi": "dc4d", "./hi.js": "dc4d", "./hr": "4ba9", "./hr.js": "4ba9", "./hu": "5b14", "./hu.js": "5b14", "./hy-am": "d6b6", "./hy-am.js": "d6b6", "./id": "5038", "./id.js": "5038", "./is": "0558", "./is.js": "0558", "./it": "6e98", "./it-ch": "6f12", "./it-ch.js": "6f12", "./it.js": "6e98", "./ja": "079e", "./ja.js": "079e", "./jv": "b540", "./jv.js": "b540", "./ka": "201b", "./ka.js": "201b", "./kk": "6d79", "./kk.js": "6d79", "./km": "e81d", "./km.js": "e81d", "./kn": "3e92", "./kn.js": "3e92", "./ko": "22f8", "./ko.js": "22f8", "./ku": "2421", "./ku.js": "2421", "./ky": "9609", "./ky.js": "9609", "./lb": "440c", "./lb.js": "440c", "./lo": "b29d", "./lo.js": "b29d", "./lt": "26f9", "./lt.js": "26f9", "./lv": "b97c", "./lv.js": "b97c", "./me": "293c", "./me.js": "293c", "./mi": "688b", "./mi.js": "688b", "./mk": "6909", "./mk.js": "6909", "./ml": "02fb", "./ml.js": "02fb", "./mn": "958b", "./mn.js": "958b", "./mr": "39bd", "./mr.js": "39bd", "./ms": "ebe4", "./ms-my": "6403", "./ms-my.js": "6403", "./ms.js": "ebe4", "./mt": "1b45", "./mt.js": "1b45", "./my": "8689", "./my.js": "8689", "./nb": "6ce3", "./nb.js": "6ce3", "./ne": "3a39", "./ne.js": "3a39", "./nl": "facd", "./nl-be": "db29", "./nl-be.js": "db29", "./nl.js": "facd", "./nn": "b84c", "./nn.js": "b84c", "./oc-lnc": "167b", "./oc-lnc.js": "167b", "./pa-in": "f3ff", "./pa-in.js": "f3ff", "./pl": "8d57", "./pl.js": "8d57", "./pt": "f260", "./pt-br": "d2d4", "./pt-br.js": "d2d4", "./pt.js": "f260", "./ro": "972c", "./ro.js": "972c", "./ru": "957c", "./ru.js": "957c", "./sd": "6784", "./sd.js": "6784", "./se": "ffff", "./se.js": "ffff", "./si": "eda5", "./si.js": "eda5", "./sk": "7be6", "./sk.js": "7be6", "./sl": "8155", "./sl.js": "8155", "./sq": "c8f3", "./sq.js": "c8f3", "./sr": "cf1e", "./sr-cyrl": "13e9", "./sr-cyrl.js": "13e9", "./sr.js": "cf1e", "./ss": "52bd", "./ss.js": "52bd", "./sv": "5fbd", "./sv.js": "5fbd", "./sw": "74dc", "./sw.js": "74dc", "./ta": "3de5", "./ta.js": "3de5", "./te": "5cbb", "./te.js": "5cbb", "./tet": "576c", "./tet.js": "576c", "./tg": "3b1b", "./tg.js": "3b1b", "./th": "10e8", "./th.js": "10e8", "./tk": "5aff", "./tk.js": "5aff", "./tl-ph": "0f38", "./tl-ph.js": "0f38", "./tlh": "cf75", "./tlh.js": "cf75", "./tr": "0e81", "./tr.js": "0e81", "./tzl": "cf51", "./tzl.js": "cf51", "./tzm": "c109", "./tzm-latn": "b53d", "./tzm-latn.js": "b53d", "./tzm.js": "c109", "./ug-cn": "6117", "./ug-cn.js": "6117", "./uk": "ada2", "./uk.js": "ada2", "./ur": "5294", "./ur.js": "5294", "./uz": "2e8c", "./uz-latn": "010e", "./uz-latn.js": "010e", "./uz.js": "2e8c", "./vi": "2921", "./vi.js": "2921", "./x-pseudo": "fd7e", "./x-pseudo.js": "fd7e", "./yo": "7f33", "./yo.js": "7f33", "./zh-cn": "5c3a", "./zh-cn.js": "5c3a", "./zh-hk": "49ab", "./zh-hk.js": "49ab", "./zh-mo": "3a6c", "./zh-mo.js": "3a6c", "./zh-tw": "90ea", "./zh-tw.js": "90ea" }; function i(e) { var t = o(e); return n(t) } function o(e) { if (!n.o(r, e)) { var t = new Error("Cannot find module '" + e + "'"); throw t.code = "MODULE_NOT_FOUND", t } return r[e] } i.keys = function () { return Object.keys(r) }, i.resolve = o, e.exports = i, i.id = "4678" }, "469f": function (e, t, n) { n("6c1c"), n("1654"), e.exports = n("7d7b") }, "46a7": function (e, t, n) { var r = n("63b6"); r(r.S + r.F * !n("8e60"), "Object", { defineProperty: n("d9f6").f }) }, "46cf": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.default = { install: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.name || "ref"; e.directive(n, { bind: function (t, n, r) { e.nextTick((function () { n.value(r.componentInstance || t, r.key) })), n.value(r.componentInstance || t, r.key) }, update: function (e, t, r, i) { if (i.data && i.data.directives) { var o = i.data.directives.find((function (e) { var t = e.name; return t === n })); if (o && o.value !== t.value) return o && o.value(null, i.key), void t.value(r.componentInstance || e, r.key) } r.componentInstance === i.componentInstance && r.elm === i.elm || t.value(r.componentInstance || e, r.key) }, unbind: function (e, t, n) { t.value(null, n.key) } }) } } }, "47ee": function (e, t, n) { var r = n("c3a1"), i = n("9aa9"), o = n("355d"); e.exports = function (e) { var t = r(e), n = i.f; if (n) { var a, s = n(e), c = o.f, l = 0; while (s.length > l) c.call(e, a = s[l++]) && t.push(a) } return t } }, "47f5": function (e, t, n) { var r = n("2b03"), i = n("d9a8"), o = n("099a"); function a(e, t, n) { return t === t ? o(e, t, n) : r(e, i, n) } e.exports = a }, "481b": function (e, t) { e.exports = {} }, 4849: function (e, t, n) { e.exports = { default: n("454f"), __esModule: !0 } }, "485c": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "-inci", 5: "-inci", 8: "-inci", 70: "-inci", 80: "-inci", 2: "-nci", 7: "-nci", 20: "-nci", 50: "-nci", 3: "-眉nc眉", 4: "-眉nc眉", 100: "-眉nc眉", 6: "-nc谋", 9: "-uncu", 10: "-uncu", 30: "-uncu", 60: "-谋nc谋", 90: "-谋nc谋" }, n = e.defineLocale("az", { months: "yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"), monthsShort: "yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"), weekdays: "Bazar_Bazar ert蓹si_脟蓹r艧蓹nb蓹 ax艧am谋_脟蓹r艧蓹nb蓹_C眉m蓹 ax艧am谋_C眉m蓹_艦蓹nb蓹".split("_"), weekdaysShort: "Baz_BzE_脟Ax_脟蓹r_CAx_C眉m_艦蓹n".split("_"), weekdaysMin: "Bz_BE_脟A_脟蓹_CA_C眉_艦蓹".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[bug眉n saat] LT", nextDay: "[sabah saat] LT", nextWeek: "[g蓹l蓹n h蓹ft蓹] dddd [saat] LT", lastDay: "[d眉n蓹n] LT", lastWeek: "[ke莽蓹n h蓹ft蓹] dddd [saat] LT", sameElse: "L" }, relativeTime: { future: "%s sonra", past: "%s 蓹vv蓹l", s: "birne莽蓹 saniy蓹", ss: "%d saniy蓹", m: "bir d蓹qiq蓹", mm: "%d d蓹qiq蓹", h: "bir saat", hh: "%d saat", d: "bir g眉n", dd: "%d g眉n", M: "bir ay", MM: "%d ay", y: "bir il", yy: "%d il" }, meridiemParse: /gec蓹|s蓹h蓹r|g眉nd眉z|ax艧am/, isPM: function (e) { return /^(g眉nd眉z|ax艧am)$/.test(e) }, meridiem: function (e, t, n) { return e < 4 ? "gec蓹" : e < 12 ? "s蓹h蓹r" : e < 17 ? "g眉nd眉z" : "ax艧am" }, dayOfMonthOrdinalParse: /\d{1,2}-(谋nc谋|inci|nci|眉nc眉|nc谋|uncu)/, ordinal: function (e) { if (0 === e) return e + "-谋nc谋"; var n = e % 10, r = e % 100 - n, i = e >= 100 ? 100 : null; return e + (t[n] || t[r] || t[i]) }, week: { dow: 1, doy: 7 } }); return n
+                    }))
+                }, "48a0": function (e, t, n) { var r = n("242e"), i = n("950a"), o = i(r); e.exports = o }, "49ab": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("zh-hk", { months: "涓�鏈坃浜屾湀_涓夋湀_鍥涙湀_浜旀湀_鍏湀_涓冩湀_鍏湀_涔濇湀_鍗佹湀_鍗佷竴鏈坃鍗佷簩鏈�".split("_"), monthsShort: "1鏈坃2鏈坃3鏈坃4鏈坃5鏈坃6鏈坃7鏈坃8鏈坃9鏈坃10鏈坃11鏈坃12鏈�".split("_"), weekdays: "鏄熸湡鏃鏄熸湡涓�_鏄熸湡浜宊鏄熸湡涓塤鏄熸湡鍥沖鏄熸湡浜擾鏄熸湡鍏�".split("_"), weekdaysShort: "閫辨棩_閫变竴_閫变簩_閫变笁_閫卞洓_閫变簲_閫卞叚".split("_"), weekdaysMin: "鏃涓�_浜宊涓塤鍥沖浜擾鍏�".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY/MM/DD", LL: "YYYY骞碝鏈圖鏃�", LLL: "YYYY骞碝鏈圖鏃� HH:mm", LLLL: "YYYY骞碝鏈圖鏃ddd HH:mm", l: "YYYY/M/D", ll: "YYYY骞碝鏈圖鏃�", lll: "YYYY骞碝鏈圖鏃� HH:mm", llll: "YYYY骞碝鏈圖鏃ddd HH:mm" }, meridiemParse: /鍑屾櫒|鏃╀笂|涓婂崍|涓崍|涓嬪崍|鏅氫笂/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "鍑屾櫒" === t || "鏃╀笂" === t || "涓婂崍" === t ? e : "涓崍" === t ? e >= 11 ? e : e + 12 : "涓嬪崍" === t || "鏅氫笂" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { var r = 100 * e + t; return r < 600 ? "鍑屾櫒" : r < 900 ? "鏃╀笂" : r < 1200 ? "涓婂崍" : 1200 === r ? "涓崍" : r < 1800 ? "涓嬪崍" : "鏅氫笂" }, calendar: { sameDay: "[浠婂ぉ]LT", nextDay: "[鏄庡ぉ]LT", nextWeek: "[涓媇ddddLT", lastDay: "[鏄ㄥぉ]LT", lastWeek: "[涓奭ddddLT", sameElse: "L" }, dayOfMonthOrdinalParse: /\d{1,2}(鏃鏈坾閫�)/, ordinal: function (e, t) { switch (t) { case "d": case "D": case "DDD": return e + "鏃�"; case "M": return e + "鏈�"; case "w": case "W": return e + "閫�"; default: return e } }, relativeTime: { future: "%s寰�", past: "%s鍓�", s: "骞剧", ss: "%d 绉�", m: "1 鍒嗛悩", mm: "%d 鍒嗛悩", h: "1 灏忔檪", hh: "%d 灏忔檪", d: "1 澶�", dd: "%d 澶�", M: "1 鍊嬫湀", MM: "%d 鍊嬫湀", y: "1 骞�", yy: "%d 骞�" } }); return t
+                    }))
+                }, "49f4": function (e, t, n) { var r = n("6044"); function i() { this.__data__ = r ? r(null) : {}, this.size = 0 } e.exports = i }, "4a59": function (e, t, n) { var r = n("9b43"), i = n("1fa8"), o = n("33a4"), a = n("cb7c"), s = n("9def"), c = n("27ee"), l = {}, u = {}; t = e.exports = function (e, t, n, h, f) { var d, p, v, m, g = f ? function () { return e } : c(e), y = r(n, h, t ? 2 : 1), b = 0; if ("function" != typeof g) throw TypeError(e + " is not iterable!"); if (o(g)) { for (d = s(e.length); d > b; b++)if (m = t ? y(a(p = e[b])[0], p[1]) : y(e[b]), m === l || m === u) return m } else for (v = g.call(e); !(p = v.next()).done;)if (m = i(v, y, p.value, t), m === l || m === u) return m }, t.BREAK = l, t.RETURN = u }, "4b17": function (e, t, n) { var r = n("6428"); function i(e) { var t = r(e), n = t % 1; return t === t ? n ? t - n : t : 0 } e.exports = i }, "4ba9": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t, n) { var r = e + " "; switch (n) { case "ss": return r += 1 === e ? "sekunda" : 2 === e || 3 === e || 4 === e ? "sekunde" : "sekundi", r; case "m": return t ? "jedna minuta" : "jedne minute"; case "mm": return r += 1 === e ? "minuta" : 2 === e || 3 === e || 4 === e ? "minute" : "minuta", r; case "h": return t ? "jedan sat" : "jednog sata"; case "hh": return r += 1 === e ? "sat" : 2 === e || 3 === e || 4 === e ? "sata" : "sati", r; case "dd": return r += 1 === e ? "dan" : "dana", r; case "MM": return r += 1 === e ? "mjesec" : 2 === e || 3 === e || 4 === e ? "mjeseca" : "mjeseci", r; case "yy": return r += 1 === e ? "godina" : 2 === e || 3 === e || 4 === e ? "godine" : "godina", r } } var n = e.defineLocale("hr", { months: { format: "sije膷nja_velja膷e_o啪ujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"), standalone: "sije膷anj_velja膷a_o啪ujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_") }, monthsShort: "sij._velj._o啪u._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"), monthsParseExact: !0, weekdays: "nedjelja_ponedjeljak_utorak_srijeda_膷etvrtak_petak_subota".split("_"), weekdaysShort: "ned._pon._uto._sri._膷et._pet._sub.".split("_"), weekdaysMin: "ne_po_ut_sr_膷e_pe_su".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "Do MMMM YYYY", LLL: "Do MMMM YYYY H:mm", LLLL: "dddd, Do MMMM YYYY H:mm" }, calendar: { sameDay: "[danas u] LT", nextDay: "[sutra u] LT", nextWeek: function () { switch (this.day()) { case 0: return "[u] [nedjelju] [u] LT"; case 3: return "[u] [srijedu] [u] LT"; case 6: return "[u] [subotu] [u] LT"; case 1: case 2: case 4: case 5: return "[u] dddd [u] LT" } }, lastDay: "[ju膷er u] LT", lastWeek: function () { switch (this.day()) { case 0: return "[pro拧lu] [nedjelju] [u] LT"; case 3: return "[pro拧lu] [srijedu] [u] LT"; case 6: return "[pro拧le] [subote] [u] LT"; case 1: case 2: case 4: case 5: return "[pro拧li] dddd [u] LT" } }, sameElse: "L" }, relativeTime: { future: "za %s", past: "prije %s", s: "par sekundi", ss: t, m: t, mm: t, h: t, hh: t, d: "dan", dd: t, M: "mjesec", MM: t, y: "godinu", yy: t }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 7 } }); return n
+                    }))
+                }, "4bb5": function (e, t, n) { var r = n("e2e4"), i = n("4416"), o = n("8296"), a = n("f4d6"); function s(e, t) { return t = r(t, e), e = o(e, t), null == e || delete e[a(i(t))] } e.exports = s }, "4be8": function (e, t, n) { var r = n("30e0"), i = n("ec69"); function o(e, t) { return e && r(e, t, i) } e.exports = o }, "4bf8": function (e, t, n) { var r = n("be13"); e.exports = function (e) { return Object(r(e)) } }, "4cef": function (e, t) { var n = /\s/; function r(e) { var t = e.length; while (t-- && n.test(e.charAt(t))); return t } e.exports = r }, "4d03": function (e, t, n) { }, "4d0b": function (e, t, n) { }, "4d26": function (e, t, n) {
+                    var r, i;
+/*!
+  Copyright (c) 2017 Jed Watson.
+  Licensed under the MIT License (MIT), see
+  http://jedwatson.github.io/classnames
+*/(function () { "use strict"; var n = {}.hasOwnProperty; function o() { for (var e = [], t = 0; t < arguments.length; t++) { var r = arguments[t]; if (r) { var i = typeof r; if ("string" === i || "number" === i) e.push(r); else if (Array.isArray(r) && r.length) { var a = o.apply(null, r); a && e.push(a) } else if ("object" === i) for (var s in r) n.call(r, s) && r[s] && e.push(s) } } return e.join(" ") } e.exports ? (o.default = o, e.exports = o) : (r = [], i = function () { return o }.apply(t, r), void 0 === i || (e.exports = i)) })()
+                }, "4d8b": function (e, t, n) { var r = n("9b02"); function i(e, t) { var n = -1, i = t.length, o = Array(i), a = null == e; while (++n < i) o[n] = a ? void 0 : r(e, t[n]); return o } e.exports = i }, "4d8c": function (e, t, n) { var r = n("5c69"); function i(e) { var t = null == e ? 0 : e.length; return t ? r(e, 1) : [] } e.exports = i }, "4d91": function (e, t, n) { "use strict"; var r = n("1098"), i = n.n(r), o = n("60ed"), a = n.n(o), s = Object.prototype, c = s.toString, l = s.hasOwnProperty, u = /^\s*function (\w+)/, h = function (e) { var t = null !== e && void 0 !== e ? e.type ? e.type : e : null, n = t && t.toString().match(u); return n && n[1] }, f = function (e) { if (null === e || void 0 === e) return null; var t = e.constructor.toString().match(u); return t && t[1] }, d = function () { }, p = Number.isInteger || function (e) { return "number" === typeof e && isFinite(e) && Math.floor(e) === e }, v = Array.isArray || function (e) { return "[object Array]" === c.call(e) }, m = function (e) { return "[object Function]" === c.call(e) }, g = function (e) { Object.defineProperty(e, "def", { value: function (e) { return void 0 === e && void 0 === this["default"] ? (this["default"] = void 0, this) : m(e) || x(this, e) ? (this["default"] = v(e) || a()(e) ? function () { return e } : e, this) : (w(this._vueTypes_name + ' - invalid default value: "' + e + '"', e), this) }, enumerable: !1, writable: !1 }) }, y = function (e) { Object.defineProperty(e, "isRequired", { get: function () { return this.required = !0, this }, enumerable: !1 }) }, b = function (e, t) { return Object.defineProperty(t, "_vueTypes_name", { enumerable: !1, writable: !1, value: e }), y(t), g(t), m(t.validator) && (t.validator = t.validator.bind(t)), t }, x = function e(t, n) { var r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], i = t, o = !0, s = void 0; a()(t) || (i = { type: t }); var c = i._vueTypes_name ? i._vueTypes_name + " - " : ""; return l.call(i, "type") && null !== i.type && (v(i.type) ? (o = i.type.some((function (t) { return e(t, n, !0) })), s = i.type.map((function (e) { return h(e) })).join(" or ")) : (s = h(i), o = "Array" === s ? v(n) : "Object" === s ? a()(n) : "String" === s || "Number" === s || "Boolean" === s || "Function" === s ? f(n) === s : n instanceof i.type)), o ? l.call(i, "validator") && m(i.validator) ? (o = i.validator(n), o || !1 !== r || w(c + "custom validation failed"), o) : o : (!1 === r && w(c + 'value "' + n + '" should be of type "' + s + '"'), !1) }, w = d, _ = { get any() { return b("any", { type: null }) }, get func() { return b("function", { type: Function }).def(M.func) }, get bool() { return b("boolean", { type: Boolean }).def(M.bool) }, get string() { return b("string", { type: String }).def(M.string) }, get number() { return b("number", { type: Number }).def(M.number) }, get array() { return b("array", { type: Array }).def(M.array) }, get object() { return b("object", { type: Object }).def(M.object) }, get integer() { return b("integer", { type: Number, validator: function (e) { return p(e) } }).def(M.integer) }, get symbol() { return b("symbol", { type: null, validator: function (e) { return "symbol" === ("undefined" === typeof e ? "undefined" : i()(e)) } }) }, custom: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "custom validation failed"; if ("function" !== typeof e) throw new TypeError("[VueTypes error]: You must provide a function as argument"); return b(e.name || "<<anonymous function>>", { validator: function () { var n = e.apply(void 0, arguments); return n || w(this._vueTypes_name + " - " + t), n } }) }, oneOf: function (e) { if (!v(e)) throw new TypeError("[VueTypes error]: You must provide an array as argument"); var t = 'oneOf - value should be one of "' + e.join('", "') + '"', n = e.reduce((function (e, t) { return null !== t && void 0 !== t && -1 === e.indexOf(t.constructor) && e.push(t.constructor), e }), []); return b("oneOf", { type: n.length > 0 ? n : null, validator: function (n) { var r = -1 !== e.indexOf(n); return r || w(t), r } }) }, instanceOf: function (e) { return b("instanceOf", { type: e }) }, oneOfType: function (e) { if (!v(e)) throw new TypeError("[VueTypes error]: You must provide an array as argument"); var t = !1, n = e.reduce((function (e, n) { if (a()(n)) { if ("oneOf" === n._vueTypes_name) return e.concat(n.type || []); if (n.type && !m(n.validator)) { if (v(n.type)) return e.concat(n.type); e.push(n.type) } else m(n.validator) && (t = !0); return e } return e.push(n), e }), []); if (!t) return b("oneOfType", { type: n }).def(void 0); var r = e.map((function (e) { return e && v(e.type) ? e.type.map(h) : h(e) })).reduce((function (e, t) { return e.concat(v(t) ? t : [t]) }), []).join('", "'); return this.custom((function (t) { var n = e.some((function (e) { return "oneOf" === e._vueTypes_name ? !e.type || x(e.type, t, !0) : x(e, t, !0) })); return n || w('oneOfType - value type should be one of "' + r + '"'), n })).def(void 0) }, arrayOf: function (e) { return b("arrayOf", { type: Array, validator: function (t) { var n = t.every((function (t) { return x(e, t) })); return n || w('arrayOf - value must be an array of "' + h(e) + '"'), n } }) }, objectOf: function (e) { return b("objectOf", { type: Object, validator: function (t) { var n = Object.keys(t).every((function (n) { return x(e, t[n]) })); return n || w('objectOf - value must be an object of "' + h(e) + '"'), n } }) }, shape: function (e) { var t = Object.keys(e), n = t.filter((function (t) { return e[t] && !0 === e[t].required })), r = b("shape", { type: Object, validator: function (r) { var i = this; if (!a()(r)) return !1; var o = Object.keys(r); return n.length > 0 && n.some((function (e) { return -1 === o.indexOf(e) })) ? (w('shape - at least one of required properties "' + n.join('", "') + '" is not present'), !1) : o.every((function (n) { if (-1 === t.indexOf(n)) return !0 === i._vueTypes_isLoose || (w('shape - object is missing "' + n + '" property'), !1); var o = e[n]; return x(o, r[n]) })) } }); return Object.defineProperty(r, "_vueTypes_isLoose", { enumerable: !1, writable: !0, value: !1 }), Object.defineProperty(r, "loose", { get: function () { return this._vueTypes_isLoose = !0, this }, enumerable: !1 }), r } }, C = function () { return { func: void 0, bool: void 0, string: void 0, number: void 0, array: void 0, object: void 0, integer: void 0 } }, M = C(); Object.defineProperty(_, "sensibleDefaults", { enumerable: !1, set: function (e) { !1 === e ? M = {} : !0 === e ? M = C() : a()(e) && (M = e) }, get: function () { return M } }), t["a"] = _ }, "4ee1": function (e, t, n) { var r = n("5168")("iterator"), i = !1; try { var o = [7][r](); o["return"] = function () { i = !0 }, Array.from(o, (function () { throw 2 })) } catch (a) { } e.exports = function (e, t) { if (!t && !i) return !1; var n = !1; try { var o = [7], s = o[r](); s.next = function () { return { done: n = !0 } }, o[r] = function () { return s }, e(o) } catch (a) { } return n } }, "4f50": function (e, t, n) { var r = n("b760"), i = n("e538"), o = n("c8fe"), a = n("4359"), s = n("fa21"), c = n("d370"), l = n("6747"), u = n("dcbe"), h = n("0d24"), f = n("9520"), d = n("1a8c"), p = n("60ed"), v = n("73ac"), m = n("8adb"), g = n("8de2"); function y(e, t, n, y, b, x, w) { var _ = m(e, n), C = m(t, n), M = w.get(C); if (M) r(e, n, M); else { var O = x ? x(_, C, n + "", e, t, w) : void 0, k = void 0 === O; if (k) { var S = l(C), T = !S && h(C), A = !S && !T && v(C); O = C, S || T || A ? l(_) ? O = _ : u(_) ? O = a(_) : T ? (k = !1, O = i(C, !0)) : A ? (k = !1, O = o(C, !0)) : O = [] : p(C) || c(C) ? (O = _, c(_) ? O = g(_) : d(_) && !f(_) || (O = s(C))) : k = !1 } k && (w.set(C, O), b(O, C, y, x, w), w["delete"](C)), r(e, n, O) } } e.exports = y }, "4f7f": function (e, t, n) { "use strict"; var r = n("c26b"), i = n("b39a"), o = "Set"; e.exports = n("e0b8")(o, (function (e) { return function () { return e(this, arguments.length > 0 ? arguments[0] : void 0) } }), { add: function (e) { return r.def(i(this, o), e = 0 === e ? 0 : e, e) } }, r) }, 5038: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("id", { months: "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"), monthsShort: "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"), weekdays: "Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"), weekdaysShort: "Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"), weekdaysMin: "Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"), longDateFormat: { LT: "HH.mm", LTS: "HH.mm.ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY [pukul] HH.mm", LLLL: "dddd, D MMMM YYYY [pukul] HH.mm" }, meridiemParse: /pagi|siang|sore|malam/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "pagi" === t ? e : "siang" === t ? e >= 11 ? e : e + 12 : "sore" === t || "malam" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { return e < 11 ? "pagi" : e < 15 ? "siang" : e < 19 ? "sore" : "malam" }, calendar: { sameDay: "[Hari ini pukul] LT", nextDay: "[Besok pukul] LT", nextWeek: "dddd [pukul] LT", lastDay: "[Kemarin pukul] LT", lastWeek: "dddd [lalu pukul] LT", sameElse: "L" }, relativeTime: { future: "dalam %s", past: "%s yang lalu", s: "beberapa detik", ss: "%d detik", m: "semenit", mm: "%d menit", h: "sejam", hh: "%d jam", d: "sehari", dd: "%d hari", M: "sebulan", MM: "%d bulan", y: "setahun", yy: "%d tahun" }, week: { dow: 0, doy: 6 } }); return t
+                    }))
+                }, "50c6": function (e, t, n) { var r = n("a0c4"), i = n("243f"), o = n("badf"), a = n("6747"); function s(e, t) { return function (n, s) { var c = a(n) ? r : i, l = t ? t() : {}; return c(n, e, o(s, 2), l) } } e.exports = s }, "50ca": function (e, t, n) { var r = n("8057"), i = n("7530"), o = n("242e"), a = n("badf"), s = n("2dcb"), c = n("6747"), l = n("0d24"), u = n("9520"), h = n("1a8c"), f = n("73ac"); function d(e, t, n) { var d = c(e), p = d || l(e) || f(e); if (t = a(t, 4), null == n) { var v = e && e.constructor; n = p ? d ? new v : [] : h(e) && u(v) ? i(s(e)) : {} } return (p ? r : o)(e, (function (e, r, i) { return t(n, e, r, i) })), n } e.exports = d }, "50d8": function (e, t) { function n(e, t) { var n = -1, r = Array(e); while (++n < e) r[n] = t(n); return r } e.exports = n }, "50ed": function (e, t) { e.exports = function (e, t) { return { value: t, done: !!e } } }, 5120: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = ["Ean谩ir", "Feabhra", "M谩rta", "Aibre谩n", "Bealtaine", "Meitheamh", "I煤il", "L煤nasa", "Me谩n F贸mhair", "Deireadh F贸mhair", "Samhain", "Nollaig"], n = ["Ean", "Feabh", "M谩rt", "Aib", "Beal", "Meith", "I煤il", "L煤n", "M.F.", "D.F.", "Samh", "Noll"], r = ["D茅 Domhnaigh", "D茅 Luain", "D茅 M谩irt", "D茅 C茅adaoin", "D茅ardaoin", "D茅 hAoine", "D茅 Sathairn"], i = ["Domh", "Luan", "M谩irt", "C茅ad", "D茅ar", "Aoine", "Sath"], o = ["Do", "Lu", "M谩", "C茅", "D茅", "A", "Sa"], a = e.defineLocale("ga", { months: t, monthsShort: n, monthsParseExact: !0, weekdays: r, weekdaysShort: i, weekdaysMin: o, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Inniu ag] LT", nextDay: "[Am谩rach ag] LT", nextWeek: "dddd [ag] LT", lastDay: "[Inn茅 ag] LT", lastWeek: "dddd [seo caite] [ag] LT", sameElse: "L" }, relativeTime: { future: "i %s", past: "%s 贸 shin", s: "c煤pla soicind", ss: "%d soicind", m: "n贸im茅ad", mm: "%d n贸im茅ad", h: "uair an chloig", hh: "%d uair an chloig", d: "l谩", dd: "%d l谩", M: "m铆", MM: "%d m铆onna", y: "bliain", yy: "%d bliain" }, dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, ordinal: function (e) { var t = 1 === e ? "d" : e % 10 === 2 ? "na" : "mh"; return e + t }, week: { dow: 1, doy: 4 } }); return a
+                    }))
+                }, 5147: function (e, t, n) { var r = n("2b4c")("match"); e.exports = function (e) { var t = /./; try { "/./"[e](t) } catch (n) { try { return t[r] = !1, !"/./"[e](t) } catch (i) { } } return !0 } }, 5168: function (e, t, n) { var r = n("dbdb")("wks"), i = n("62a0"), o = n("e53d").Symbol, a = "function" == typeof o, s = e.exports = function (e) { return r[e] || (r[e] = a && o[e] || (a ? o : i)("Symbol." + e)) }; s.store = r }, "51b6": function (e, t, n) { n("a3c3"), e.exports = n("584a").Object.assign }, "51d6": function (e, t, n) { }, "51f5": function (e, t, n) { var r = n("2b03"), i = n("badf"), o = n("4b17"), a = Math.max; function s(e, t, n) { var s = null == e ? 0 : e.length; if (!s) return -1; var c = null == n ? 0 : o(n); return c < 0 && (c = a(s + c, 0)), r(e, i(t, 3), c) } e.exports = s }, "520a": function (e, t, n) { "use strict"; var r = n("0bfb"), i = RegExp.prototype.exec, o = String.prototype.replace, a = i, s = "lastIndex", c = function () { var e = /a/, t = /b*/g; return i.call(e, "a"), i.call(t, "a"), 0 !== e[s] || 0 !== t[s] }(), l = void 0 !== /()??/.exec("")[1], u = c || l; u && (a = function (e) { var t, n, a, u, h = this; return l && (n = new RegExp("^" + h.source + "$(?!\\s)", r.call(h))), c && (t = h[s]), a = i.call(h, e), c && a && (h[s] = h.global ? a.index + a[0].length : t), l && a && a.length > 1 && o.call(a[0], n, (function () { for (u = 1; u < arguments.length - 2; u++)void 0 === arguments[u] && (a[u] = void 0) })), a }), e.exports = a }, 5294: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = ["噩賳賵乇蹖", "賮乇賵乇蹖", "賲丕乇趩", "丕倬乇蹖賱", "賲卅蹖", "噩賵賳", "噩賵賱丕卅蹖", "丕诏爻鬲", "爻鬲賲亘乇", "丕讴鬲賵亘乇", "賳賵賲亘乇", "丿爻賲亘乇"], n = ["丕鬲賵丕乇", "倬蹖乇", "賲賳诏賱", "亘丿诰", "噩賲毓乇丕鬲", "噩賲毓蹃", "蹃賮鬲蹃"], r = e.defineLocale("ur", { months: t, monthsShort: t, weekdays: n, weekdaysShort: n, weekdaysMin: n, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd貙 D MMMM YYYY HH:mm" }, meridiemParse: /氐亘丨|卮丕賲/, isPM: function (e) { return "卮丕賲" === e }, meridiem: function (e, t, n) { return e < 12 ? "氐亘丨" : "卮丕賲" }, calendar: { sameDay: "[丌噩 亘賵賯鬲] LT", nextDay: "[讴賱 亘賵賯鬲] LT", nextWeek: "dddd [亘賵賯鬲] LT", lastDay: "[诏匕卮鬲蹃 乇賵夭 亘賵賯鬲] LT", lastWeek: "[诏匕卮鬲蹃] dddd [亘賵賯鬲] LT", sameElse: "L" }, relativeTime: { future: "%s 亘毓丿", past: "%s 賯亘賱", s: "趩賳丿 爻蹖讴賳趫", ss: "%d 爻蹖讴賳趫", m: "丕蹖讴 賲賳俟", mm: "%d 賲賳俟", h: "丕蹖讴 诏诰賳俟蹃", hh: "%d 诏诰賳俟蹝", d: "丕蹖讴 丿賳", dd: "%d 丿賳", M: "丕蹖讴 賲丕蹃", MM: "%d 賲丕蹃", y: "丕蹖讴 爻丕賱", yy: "%d 爻丕賱" }, preparse: function (e) { return e.replace(/貙/g, ",") }, postformat: function (e) { return e.replace(/,/g, "貙") }, week: { dow: 1, doy: 4 } }); return r
+                    }))
+                }, "52a7": function (e, t) { t.f = {}.propertyIsEnumerable }, "52bd": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("ss", { months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"), monthsShort: "Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"), weekdays: "Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"), weekdaysShort: "Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"), weekdaysMin: "Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY h:mm A", LLLL: "dddd, D MMMM YYYY h:mm A" }, calendar: { sameDay: "[Namuhla nga] LT", nextDay: "[Kusasa nga] LT", nextWeek: "dddd [nga] LT", lastDay: "[Itolo nga] LT", lastWeek: "dddd [leliphelile] [nga] LT", sameElse: "L" }, relativeTime: { future: "nga %s", past: "wenteka nga %s", s: "emizuzwana lomcane", ss: "%d mzuzwana", m: "umzuzu", mm: "%d emizuzu", h: "lihora", hh: "%d emahora", d: "lilanga", dd: "%d emalanga", M: "inyanga", MM: "%d tinyanga", y: "umnyaka", yy: "%d iminyaka" }, meridiemParse: /ekuseni|emini|entsambama|ebusuku/, meridiem: function (e, t, n) { return e < 11 ? "ekuseni" : e < 15 ? "emini" : e < 19 ? "entsambama" : "ebusuku" }, meridiemHour: function (e, t) { return 12 === e && (e = 0), "ekuseni" === t ? e : "emini" === t ? e >= 11 ? e : e + 12 : "entsambama" === t || "ebusuku" === t ? 0 === e ? 0 : e + 12 : void 0 }, dayOfMonthOrdinalParse: /\d{1,2}/, ordinal: "%d", week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "53ca": function (e, t, n) { "use strict"; function r(e) { return r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r(e) } n.d(t, "a", (function () { return r })) }, "53e2": function (e, t, n) { var r = n("07e3"), i = n("241e"), o = n("5559")("IE_PROTO"), a = Object.prototype; e.exports = Object.getPrototypeOf || function (e) { return e = i(e), r(e, o) ? e[o] : "function" == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? a : null } }, "549b": function (e, t, n) { "use strict"; var r = n("d864"), i = n("63b6"), o = n("241e"), a = n("b0dc"), s = n("3702"), c = n("b447"), l = n("20fd"), u = n("7cd6"); i(i.S + i.F * !n("4ee1")((function (e) { Array.from(e) })), "Array", { from: function (e) { var t, n, i, h, f = o(e), d = "function" == typeof this ? this : Array, p = arguments.length, v = p > 1 ? arguments[1] : void 0, m = void 0 !== v, g = 0, y = u(f); if (m && (v = r(v, p > 2 ? arguments[2] : void 0, 2)), void 0 == y || d == Array && s(y)) for (t = c(f.length), n = new d(t); t > g; g++)l(n, g, m ? v(f[g], g) : f[g]); else for (h = y.call(f), n = new d; !(i = h.next()).done; g++)l(n, g, m ? a(h, v, [i.value, g], !0) : i.value); return n.length = g, n } }) }, "54a1": function (e, t, n) { n("6c1c"), n("1654"), e.exports = n("95d5") }, "54eb": function (e, t, n) { var r = n("8eeb"), i = n("32f4"); function o(e, t) { return r(e, i(e), t) } e.exports = o }, "551c": function (e, t, n) { "use strict"; var r, i, o, a, s = n("2d00"), c = n("7726"), l = n("9b43"), u = n("23c6"), h = n("5ca1"), f = n("d3f4"), d = n("d8e8"), p = n("f605"), v = n("4a59"), m = n("ebd6"), g = n("1991").set, y = n("8079")(), b = n("a5b8"), x = n("9c80"), w = n("a25f"), _ = n("bcaa"), C = "Promise", M = c.TypeError, O = c.process, k = O && O.versions, S = k && k.v8 || "", T = c[C], A = "process" == u(O), L = function () { }, j = i = b.f, z = !!function () { try { var e = T.resolve(1), t = (e.constructor = {})[n("2b4c")("species")] = function (e) { e(L, L) }; return (A || "function" == typeof PromiseRejectionEvent) && e.then(L) instanceof t && 0 !== S.indexOf("6.6") && -1 === w.indexOf("Chrome/66") } catch (r) { } }(), E = function (e) { var t; return !(!f(e) || "function" != typeof (t = e.then)) && t }, P = function (e, t) { if (!e._n) { e._n = !0; var n = e._c; y((function () { var r = e._v, i = 1 == e._s, o = 0, a = function (t) { var n, o, a, s = i ? t.ok : t.fail, c = t.resolve, l = t.reject, u = t.domain; try { s ? (i || (2 == e._h && V(e), e._h = 1), !0 === s ? n = r : (u && u.enter(), n = s(r), u && (u.exit(), a = !0)), n === t.promise ? l(M("Promise-chain cycle")) : (o = E(n)) ? o.call(n, c, l) : c(n)) : l(r) } catch (h) { u && !a && u.exit(), l(h) } }; while (n.length > o) a(n[o++]); e._c = [], e._n = !1, t && !e._h && D(e) })) } }, D = function (e) { g.call(c, (function () { var t, n, r, i = e._v, o = H(e); if (o && (t = x((function () { A ? O.emit("unhandledRejection", i, e) : (n = c.onunhandledrejection) ? n({ promise: e, reason: i }) : (r = c.console) && r.error && r.error("Unhandled promise rejection", i) })), e._h = A || H(e) ? 2 : 1), e._a = void 0, o && t.e) throw t.v })) }, H = function (e) { return 1 !== e._h && 0 === (e._a || e._c).length }, V = function (e) { g.call(c, (function () { var t; A ? O.emit("rejectionHandled", e) : (t = c.onrejectionhandled) && t({ promise: e, reason: e._v }) })) }, I = function (e) { var t = this; t._d || (t._d = !0, t = t._w || t, t._v = e, t._s = 2, t._a || (t._a = t._c.slice()), P(t, !0)) }, N = function (e) { var t, n = this; if (!n._d) { n._d = !0, n = n._w || n; try { if (n === e) throw M("Promise can't be resolved itself"); (t = E(e)) ? y((function () { var r = { _w: n, _d: !1 }; try { t.call(e, l(N, r, 1), l(I, r, 1)) } catch (i) { I.call(r, i) } })) : (n._v = e, n._s = 1, P(n, !1)) } catch (r) { I.call({ _w: n, _d: !1 }, r) } } }; z || (T = function (e) { p(this, T, C, "_h"), d(e), r.call(this); try { e(l(N, this, 1), l(I, this, 1)) } catch (t) { I.call(this, t) } }, r = function (e) { this._c = [], this._a = void 0, this._s = 0, this._d = !1, this._v = void 0, this._h = 0, this._n = !1 }, r.prototype = n("dcbc")(T.prototype, { then: function (e, t) { var n = j(m(this, T)); return n.ok = "function" != typeof e || e, n.fail = "function" == typeof t && t, n.domain = A ? O.domain : void 0, this._c.push(n), this._a && this._a.push(n), this._s && P(this, !1), n.promise }, catch: function (e) { return this.then(void 0, e) } }), o = function () { var e = new r; this.promise = e, this.resolve = l(N, e, 1), this.reject = l(I, e, 1) }, b.f = j = function (e) { return e === T || e === a ? new o(e) : i(e) }), h(h.G + h.W + h.F * !z, { Promise: T }), n("7f20")(T, C), n("7a56")(C), a = n("8378")[C], h(h.S + h.F * !z, C, { reject: function (e) { var t = j(this), n = t.reject; return n(e), t.promise } }), h(h.S + h.F * (s || !z), C, { resolve: function (e) { return _(s && this === a ? T : this, e) } }), h(h.S + h.F * !(z && n("5cc5")((function (e) { T.all(e)["catch"](L) }))), C, { all: function (e) { var t = this, n = j(t), r = n.resolve, i = n.reject, o = x((function () { var n = [], o = 0, a = 1; v(e, !1, (function (e) { var s = o++, c = !1; n.push(void 0), a++, t.resolve(e).then((function (e) { c || (c = !0, n[s] = e, --a || r(n)) }), i) })), --a || r(n) })); return o.e && i(o.v), n.promise }, race: function (e) { var t = this, n = j(t), r = n.reject, i = x((function () { v(e, !1, (function (e) { t.resolve(e).then(n.resolve, r) })) })); return i.e && r(i.v), n.promise } }) }, 5537: function (e, t, n) { var r = n("8378"), i = n("7726"), o = "__core-js_shared__", a = i[o] || (i[o] = {}); (e.exports = function (e, t) { return a[e] || (a[e] = void 0 !== t ? t : {}) })("versions", []).push({ version: r.version, mode: n("2d00") ? "pure" : "global", copyright: "漏 2019 Denis Pushkarev (zloirock.ru)" }) }, 5559: function (e, t, n) { var r = n("dbdb")("keys"), i = n("62a0"); e.exports = function (e) { return r[e] || (r[e] = i(e)) } }, 5579: function (e, t, n) { }, "55a3": function (e, t) { function n(e) { return this.__data__.has(e) } e.exports = n }, "55c9": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"), n = "ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"), r = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i], i = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, o = e.defineLocale("es-us", { months: "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"), monthsShort: function (e, r) { return e ? /-MMM-/.test(r) ? n[e.month()] : t[e.month()] : t }, monthsRegex: i, monthsShortRegex: i, monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, monthsParse: r, longMonthsParse: r, shortMonthsParse: r, weekdays: "domingo_lunes_martes_mi茅rcoles_jueves_viernes_s谩bado".split("_"), weekdaysShort: "dom._lun._mar._mi茅._jue._vie._s谩b.".split("_"), weekdaysMin: "do_lu_ma_mi_ju_vi_s谩".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "MM/DD/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY h:mm A", LLLL: "dddd, D [de] MMMM [de] YYYY h:mm A" }, calendar: { sameDay: function () { return "[hoy a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, nextDay: function () { return "[ma帽ana a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, nextWeek: function () { return "dddd [a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, lastDay: function () { return "[ayer a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, lastWeek: function () { return "[el] dddd [pasado a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, sameElse: "L" }, relativeTime: { future: "en %s", past: "hace %s", s: "unos segundos", ss: "%d segundos", m: "un minuto", mm: "%d minutos", h: "una hora", hh: "%d horas", d: "un d铆a", dd: "%d d铆as", M: "un mes", MM: "%d meses", y: "un a帽o", yy: "%d a帽os" }, dayOfMonthOrdinalParse: /\d{1,2}潞/, ordinal: "%d潞", week: { dow: 0, doy: 6 } }); return o
+                    }))
+                }, 5669: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = { placeholder: "璇烽�夋嫨鏃堕棿" }; t["default"] = r }, "56b3": function (e, t, n) { (function (t, n) { e.exports = n() })(0, (function () { "use strict"; var e = navigator.userAgent, t = navigator.platform, n = /gecko\/\d/i.test(e), r = /MSIE \d/.test(e), i = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e), o = /Edge\/(\d+)/.exec(e), a = r || i || o, s = a && (r ? document.documentMode || 6 : +(o || i)[1]), c = !o && /WebKit\//.test(e), l = c && /Qt\/\d+\.\d+/.test(e), u = !o && /Chrome\//.test(e), h = /Opera\//.test(e), f = /Apple Computer/.test(navigator.vendor), d = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e), p = /PhantomJS/.test(e), v = f && (/Mobile\/\w+/.test(e) || navigator.maxTouchPoints > 2), m = /Android/.test(e), g = v || m || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e), y = v || /Mac/.test(t), b = /\bCrOS\b/.test(e), x = /win/i.test(t), w = h && e.match(/Version\/(\d*\.\d*)/); w && (w = Number(w[1])), w && w >= 15 && (h = !1, c = !0); var _ = y && (l || h && (null == w || w < 12.11)), C = n || a && s >= 9; function M(e) { return new RegExp("(^|\\s)" + e + "(?:$|\\s)\\s*") } var O, k = function (e, t) { var n = e.className, r = M(t).exec(n); if (r) { var i = n.slice(r.index + r[0].length); e.className = n.slice(0, r.index) + (i ? r[1] + i : "") } }; function S(e) { for (var t = e.childNodes.length; t > 0; --t)e.removeChild(e.firstChild); return e } function T(e, t) { return S(e).appendChild(t) } function A(e, t, n, r) { var i = document.createElement(e); if (n && (i.className = n), r && (i.style.cssText = r), "string" == typeof t) i.appendChild(document.createTextNode(t)); else if (t) for (var o = 0; o < t.length; ++o)i.appendChild(t[o]); return i } function L(e, t, n, r) { var i = A(e, t, n, r); return i.setAttribute("role", "presentation"), i } function j(e, t) { if (3 == t.nodeType && (t = t.parentNode), e.contains) return e.contains(t); do { if (11 == t.nodeType && (t = t.host), t == e) return !0 } while (t = t.parentNode) } function z() { var e; try { e = document.activeElement } catch (t) { e = document.body || null } while (e && e.shadowRoot && e.shadowRoot.activeElement) e = e.shadowRoot.activeElement; return e } function E(e, t) { var n = e.className; M(t).test(n) || (e.className += (n ? " " : "") + t) } function P(e, t) { for (var n = e.split(" "), r = 0; r < n.length; r++)n[r] && !M(n[r]).test(t) && (t += " " + n[r]); return t } O = document.createRange ? function (e, t, n, r) { var i = document.createRange(); return i.setEnd(r || e, n), i.setStart(e, t), i } : function (e, t, n) { var r = document.body.createTextRange(); try { r.moveToElementText(e.parentNode) } catch (i) { return r } return r.collapse(!0), r.moveEnd("character", n), r.moveStart("character", t), r }; var D = function (e) { e.select() }; function H(e) { var t = Array.prototype.slice.call(arguments, 1); return function () { return e.apply(null, t) } } function V(e, t, n) { for (var r in t || (t = {}), e) !e.hasOwnProperty(r) || !1 === n && t.hasOwnProperty(r) || (t[r] = e[r]); return t } function I(e, t, n, r, i) { null == t && (t = e.search(/[^\s\u00a0]/), -1 == t && (t = e.length)); for (var o = r || 0, a = i || 0; ;) { var s = e.indexOf("\t", o); if (s < 0 || s >= t) return a + (t - o); a += s - o, a += n - a % n, o = s + 1 } } v ? D = function (e) { e.selectionStart = 0, e.selectionEnd = e.value.length } : a && (D = function (e) { try { e.select() } catch (t) { } }); var N = function () { this.id = null, this.f = null, this.time = 0, this.handler = H(this.onTimeout, this) }; function R(e, t) { for (var n = 0; n < e.length; ++n)if (e[n] == t) return n; return -1 } N.prototype.onTimeout = function (e) { e.id = 0, e.time <= +new Date ? e.f() : setTimeout(e.handler, e.time - +new Date) }, N.prototype.set = function (e, t) { this.f = t; var n = +new Date + e; (!this.id || n < this.time) && (clearTimeout(this.id), this.id = setTimeout(this.handler, e), this.time = n) }; var F = 50, Y = { toString: function () { return "CodeMirror.Pass" } }, $ = { scroll: !1 }, B = { origin: "*mouse" }, W = { origin: "+move" }; function q(e, t, n) { for (var r = 0, i = 0; ;) { var o = e.indexOf("\t", r); -1 == o && (o = e.length); var a = o - r; if (o == e.length || i + a >= t) return r + Math.min(a, t - i); if (i += o - r, i += n - i % n, r = o + 1, i >= t) return r } } var U = [""]; function K(e) { while (U.length <= e) U.push(G(U) + " "); return U[e] } function G(e) { return e[e.length - 1] } function X(e, t) { for (var n = [], r = 0; r < e.length; r++)n[r] = t(e[r], r); return n } function J(e, t, n) { var r = 0, i = n(t); while (r < e.length && n(e[r]) <= i) r++; e.splice(r, 0, t) } function Q() { } function Z(e, t) { var n; return Object.create ? n = Object.create(e) : (Q.prototype = e, n = new Q), t && V(t, n), n } var ee = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; function te(e) { return /\w/.test(e) || e > "聙" && (e.toUpperCase() != e.toLowerCase() || ee.test(e)) } function ne(e, t) { return t ? !!(t.source.indexOf("\\w") > -1 && te(e)) || t.test(e) : te(e) } function re(e) { for (var t in e) if (e.hasOwnProperty(t) && e[t]) return !1; return !0 } var ie = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; function oe(e) { return e.charCodeAt(0) >= 768 && ie.test(e) } function ae(e, t, n) { while ((n < 0 ? t > 0 : t < e.length) && oe(e.charAt(t))) t += n; return t } function se(e, t, n) { for (var r = t > n ? -1 : 1; ;) { if (t == n) return t; var i = (t + n) / 2, o = r < 0 ? Math.ceil(i) : Math.floor(i); if (o == t) return e(o) ? t : n; e(o) ? n = o : t = o + r } } function ce(e, t, n, r) { if (!e) return r(t, n, "ltr", 0); for (var i = !1, o = 0; o < e.length; ++o) { var a = e[o]; (a.from < n && a.to > t || t == n && a.to == t) && (r(Math.max(a.from, t), Math.min(a.to, n), 1 == a.level ? "rtl" : "ltr", o), i = !0) } i || r(t, n, "ltr") } var le = null; function ue(e, t, n) { var r; le = null; for (var i = 0; i < e.length; ++i) { var o = e[i]; if (o.from < t && o.to > t) return i; o.to == t && (o.from != o.to && "before" == n ? r = i : le = i), o.from == t && (o.from != o.to && "before" != n ? r = i : le = i) } return null != r ? r : le } var he = function () { var e = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN", t = "nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111"; function n(n) { return n <= 247 ? e.charAt(n) : 1424 <= n && n <= 1524 ? "R" : 1536 <= n && n <= 1785 ? t.charAt(n - 1536) : 1774 <= n && n <= 2220 ? "r" : 8192 <= n && n <= 8203 ? "w" : 8204 == n ? "b" : "L" } var r = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/, i = /[stwN]/, o = /[LRr]/, a = /[Lb1n]/, s = /[1n]/; function c(e, t, n) { this.level = e, this.from = t, this.to = n } return function (e, t) { var l = "ltr" == t ? "L" : "R"; if (0 == e.length || "ltr" == t && !r.test(e)) return !1; for (var u = e.length, h = [], f = 0; f < u; ++f)h.push(n(e.charCodeAt(f))); for (var d = 0, p = l; d < u; ++d) { var v = h[d]; "m" == v ? h[d] = p : p = v } for (var m = 0, g = l; m < u; ++m) { var y = h[m]; "1" == y && "r" == g ? h[m] = "n" : o.test(y) && (g = y, "r" == y && (h[m] = "R")) } for (var b = 1, x = h[0]; b < u - 1; ++b) { var w = h[b]; "+" == w && "1" == x && "1" == h[b + 1] ? h[b] = "1" : "," != w || x != h[b + 1] || "1" != x && "n" != x || (h[b] = x), x = w } for (var _ = 0; _ < u; ++_) { var C = h[_]; if ("," == C) h[_] = "N"; else if ("%" == C) { var M = void 0; for (M = _ + 1; M < u && "%" == h[M]; ++M); for (var O = _ && "!" == h[_ - 1] || M < u && "1" == h[M] ? "1" : "N", k = _; k < M; ++k)h[k] = O; _ = M - 1 } } for (var S = 0, T = l; S < u; ++S) { var A = h[S]; "L" == T && "1" == A ? h[S] = "L" : o.test(A) && (T = A) } for (var L = 0; L < u; ++L)if (i.test(h[L])) { var j = void 0; for (j = L + 1; j < u && i.test(h[j]); ++j); for (var z = "L" == (L ? h[L - 1] : l), E = "L" == (j < u ? h[j] : l), P = z == E ? z ? "L" : "R" : l, D = L; D < j; ++D)h[D] = P; L = j - 1 } for (var H, V = [], I = 0; I < u;)if (a.test(h[I])) { var N = I; for (++I; I < u && a.test(h[I]); ++I); V.push(new c(0, N, I)) } else { var R = I, F = V.length, Y = "rtl" == t ? 1 : 0; for (++I; I < u && "L" != h[I]; ++I); for (var $ = R; $ < I;)if (s.test(h[$])) { R < $ && (V.splice(F, 0, new c(1, R, $)), F += Y); var B = $; for (++$; $ < I && s.test(h[$]); ++$); V.splice(F, 0, new c(2, B, $)), F += Y, R = $ } else ++$; R < I && V.splice(F, 0, new c(1, R, I)) } return "ltr" == t && (1 == V[0].level && (H = e.match(/^\s+/)) && (V[0].from = H[0].length, V.unshift(new c(0, 0, H[0].length))), 1 == G(V).level && (H = e.match(/\s+$/)) && (G(V).to -= H[0].length, V.push(new c(0, u - H[0].length, u)))), "rtl" == t ? V.reverse() : V } }(); function fe(e, t) { var n = e.order; return null == n && (n = e.order = he(e.text, t)), n } var de = [], pe = function (e, t, n) { if (e.addEventListener) e.addEventListener(t, n, !1); else if (e.attachEvent) e.attachEvent("on" + t, n); else { var r = e._handlers || (e._handlers = {}); r[t] = (r[t] || de).concat(n) } }; function ve(e, t) { return e._handlers && e._handlers[t] || de } function me(e, t, n) { if (e.removeEventListener) e.removeEventListener(t, n, !1); else if (e.detachEvent) e.detachEvent("on" + t, n); else { var r = e._handlers, i = r && r[t]; if (i) { var o = R(i, n); o > -1 && (r[t] = i.slice(0, o).concat(i.slice(o + 1))) } } } function ge(e, t) { var n = ve(e, t); if (n.length) for (var r = Array.prototype.slice.call(arguments, 2), i = 0; i < n.length; ++i)n[i].apply(null, r) } function ye(e, t, n) { return "string" == typeof t && (t = { type: t, preventDefault: function () { this.defaultPrevented = !0 } }), ge(e, n || t.type, e, t), Me(t) || t.codemirrorIgnore } function be(e) { var t = e._handlers && e._handlers.cursorActivity; if (t) for (var n = e.curOp.cursorActivityHandlers || (e.curOp.cursorActivityHandlers = []), r = 0; r < t.length; ++r)-1 == R(n, t[r]) && n.push(t[r]) } function xe(e, t) { return ve(e, t).length > 0 } function we(e) { e.prototype.on = function (e, t) { pe(this, e, t) }, e.prototype.off = function (e, t) { me(this, e, t) } } function _e(e) { e.preventDefault ? e.preventDefault() : e.returnValue = !1 } function Ce(e) { e.stopPropagation ? e.stopPropagation() : e.cancelBubble = !0 } function Me(e) { return null != e.defaultPrevented ? e.defaultPrevented : 0 == e.returnValue } function Oe(e) { _e(e), Ce(e) } function ke(e) { return e.target || e.srcElement } function Se(e) { var t = e.which; return null == t && (1 & e.button ? t = 1 : 2 & e.button ? t = 3 : 4 & e.button && (t = 2)), y && e.ctrlKey && 1 == t && (t = 3), t } var Te, Ae, Le = function () { if (a && s < 9) return !1; var e = A("div"); return "draggable" in e || "dragDrop" in e }(); function je(e) { if (null == Te) { var t = A("span", "鈥�"); T(e, A("span", [t, document.createTextNode("x")])), 0 != e.firstChild.offsetHeight && (Te = t.offsetWidth <= 1 && t.offsetHeight > 2 && !(a && s < 8)) } var n = Te ? A("span", "鈥�") : A("span", "聽", null, "display: inline-block; width: 1px; margin-right: -1px"); return n.setAttribute("cm-text", ""), n } function ze(e) { if (null != Ae) return Ae; var t = T(e, document.createTextNode("A禺A")), n = O(t, 0, 1).getBoundingClientRect(), r = O(t, 1, 2).getBoundingClientRect(); return S(e), !(!n || n.left == n.right) && (Ae = r.right - n.right < 3) } var Ee = 3 != "\n\nb".split(/\n/).length ? function (e) { var t = 0, n = [], r = e.length; while (t <= r) { var i = e.indexOf("\n", t); -1 == i && (i = e.length); var o = e.slice(t, "\r" == e.charAt(i - 1) ? i - 1 : i), a = o.indexOf("\r"); -1 != a ? (n.push(o.slice(0, a)), t += a + 1) : (n.push(o), t = i + 1) } return n } : function (e) { return e.split(/\r\n?|\n/) }, Pe = window.getSelection ? function (e) { try { return e.selectionStart != e.selectionEnd } catch (t) { return !1 } } : function (e) { var t; try { t = e.ownerDocument.selection.createRange() } catch (n) { } return !(!t || t.parentElement() != e) && 0 != t.compareEndPoints("StartToEnd", t) }, De = function () { var e = A("div"); return "oncopy" in e || (e.setAttribute("oncopy", "return;"), "function" == typeof e.oncopy) }(), He = null; function Ve(e) { if (null != He) return He; var t = T(e, A("span", "x")), n = t.getBoundingClientRect(), r = O(t, 0, 1).getBoundingClientRect(); return He = Math.abs(n.left - r.left) > 1 } var Ie = {}, Ne = {}; function Re(e, t) { arguments.length > 2 && (t.dependencies = Array.prototype.slice.call(arguments, 2)), Ie[e] = t } function Fe(e, t) { Ne[e] = t } function Ye(e) { if ("string" == typeof e && Ne.hasOwnProperty(e)) e = Ne[e]; else if (e && "string" == typeof e.name && Ne.hasOwnProperty(e.name)) { var t = Ne[e.name]; "string" == typeof t && (t = { name: t }), e = Z(t, e), e.name = t.name } else { if ("string" == typeof e && /^[\w\-]+\/[\w\-]+\+xml$/.test(e)) return Ye("application/xml"); if ("string" == typeof e && /^[\w\-]+\/[\w\-]+\+json$/.test(e)) return Ye("application/json") } return "string" == typeof e ? { name: e } : e || { name: "null" } } function $e(e, t) { t = Ye(t); var n = Ie[t.name]; if (!n) return $e(e, "text/plain"); var r = n(e, t); if (Be.hasOwnProperty(t.name)) { var i = Be[t.name]; for (var o in i) i.hasOwnProperty(o) && (r.hasOwnProperty(o) && (r["_" + o] = r[o]), r[o] = i[o]) } if (r.name = t.name, t.helperType && (r.helperType = t.helperType), t.modeProps) for (var a in t.modeProps) r[a] = t.modeProps[a]; return r } var Be = {}; function We(e, t) { var n = Be.hasOwnProperty(e) ? Be[e] : Be[e] = {}; V(t, n) } function qe(e, t) { if (!0 === t) return t; if (e.copyState) return e.copyState(t); var n = {}; for (var r in t) { var i = t[r]; i instanceof Array && (i = i.concat([])), n[r] = i } return n } function Ue(e, t) { var n; while (e.innerMode) { if (n = e.innerMode(t), !n || n.mode == e) break; t = n.state, e = n.mode } return n || { mode: e, state: t } } function Ke(e, t, n) { return !e.startState || e.startState(t, n) } var Ge = function (e, t, n) { this.pos = this.start = 0, this.string = e, this.tabSize = t || 8, this.lastColumnPos = this.lastColumnValue = 0, this.lineStart = 0, this.lineOracle = n }; function Xe(e, t) { if (t -= e.first, t < 0 || t >= e.size) throw new Error("There is no line " + (t + e.first) + " in the document."); var n = e; while (!n.lines) for (var r = 0; ; ++r) { var i = n.children[r], o = i.chunkSize(); if (t < o) { n = i; break } t -= o } return n.lines[t] } function Je(e, t, n) { var r = [], i = t.line; return e.iter(t.line, n.line + 1, (function (e) { var o = e.text; i == n.line && (o = o.slice(0, n.ch)), i == t.line && (o = o.slice(t.ch)), r.push(o), ++i })), r } function Qe(e, t, n) { var r = []; return e.iter(t, n, (function (e) { r.push(e.text) })), r } function Ze(e, t) { var n = t - e.height; if (n) for (var r = e; r; r = r.parent)r.height += n } function et(e) { if (null == e.parent) return null; for (var t = e.parent, n = R(t.lines, e), r = t.parent; r; t = r, r = r.parent)for (var i = 0; ; ++i) { if (r.children[i] == t) break; n += r.children[i].chunkSize() } return n + t.first } function tt(e, t) { var n = e.first; e: do { for (var r = 0; r < e.children.length; ++r) { var i = e.children[r], o = i.height; if (t < o) { e = i; continue e } t -= o, n += i.chunkSize() } return n } while (!e.lines); for (var a = 0; a < e.lines.length; ++a) { var s = e.lines[a], c = s.height; if (t < c) break; t -= c } return n + a } function nt(e, t) { return t >= e.first && t < e.first + e.size } function rt(e, t) { return String(e.lineNumberFormatter(t + e.firstLineNumber)) } function it(e, t, n) { if (void 0 === n && (n = null), !(this instanceof it)) return new it(e, t, n); this.line = e, this.ch = t, this.sticky = n } function ot(e, t) { return e.line - t.line || e.ch - t.ch } function at(e, t) { return e.sticky == t.sticky && 0 == ot(e, t) } function st(e) { return it(e.line, e.ch) } function ct(e, t) { return ot(e, t) < 0 ? t : e } function lt(e, t) { return ot(e, t) < 0 ? e : t } function ut(e, t) { return Math.max(e.first, Math.min(t, e.first + e.size - 1)) } function ht(e, t) { if (t.line < e.first) return it(e.first, 0); var n = e.first + e.size - 1; return t.line > n ? it(n, Xe(e, n).text.length) : ft(t, Xe(e, t.line).text.length) } function ft(e, t) { var n = e.ch; return null == n || n > t ? it(e.line, t) : n < 0 ? it(e.line, 0) : e } function dt(e, t) { for (var n = [], r = 0; r < t.length; r++)n[r] = ht(e, t[r]); return n } Ge.prototype.eol = function () { return this.pos >= this.string.length }, Ge.prototype.sol = function () { return this.pos == this.lineStart }, Ge.prototype.peek = function () { return this.string.charAt(this.pos) || void 0 }, Ge.prototype.next = function () { if (this.pos < this.string.length) return this.string.charAt(this.pos++) }, Ge.prototype.eat = function (e) { var t, n = this.string.charAt(this.pos); if (t = "string" == typeof e ? n == e : n && (e.test ? e.test(n) : e(n)), t) return ++this.pos, n }, Ge.prototype.eatWhile = function (e) { var t = this.pos; while (this.eat(e)); return this.pos > t }, Ge.prototype.eatSpace = function () { var e = this.pos; while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; return this.pos > e }, Ge.prototype.skipToEnd = function () { this.pos = this.string.length }, Ge.prototype.skipTo = function (e) { var t = this.string.indexOf(e, this.pos); if (t > -1) return this.pos = t, !0 }, Ge.prototype.backUp = function (e) { this.pos -= e }, Ge.prototype.column = function () { return this.lastColumnPos < this.start && (this.lastColumnValue = I(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue), this.lastColumnPos = this.start), this.lastColumnValue - (this.lineStart ? I(this.string, this.lineStart, this.tabSize) : 0) }, Ge.prototype.indentation = function () { return I(this.string, null, this.tabSize) - (this.lineStart ? I(this.string, this.lineStart, this.tabSize) : 0) }, Ge.prototype.match = function (e, t, n) { if ("string" != typeof e) { var r = this.string.slice(this.pos).match(e); return r && r.index > 0 ? null : (r && !1 !== t && (this.pos += r[0].length), r) } var i = function (e) { return n ? e.toLowerCase() : e }, o = this.string.substr(this.pos, e.length); if (i(o) == i(e)) return !1 !== t && (this.pos += e.length), !0 }, Ge.prototype.current = function () { return this.string.slice(this.start, this.pos) }, Ge.prototype.hideFirstChars = function (e, t) { this.lineStart += e; try { return t() } finally { this.lineStart -= e } }, Ge.prototype.lookAhead = function (e) { var t = this.lineOracle; return t && t.lookAhead(e) }, Ge.prototype.baseToken = function () { var e = this.lineOracle; return e && e.baseToken(this.pos) }; var pt = function (e, t) { this.state = e, this.lookAhead = t }, vt = function (e, t, n, r) { this.state = t, this.doc = e, this.line = n, this.maxLookAhead = r || 0, this.baseTokens = null, this.baseTokenPos = 1 }; function mt(e, t, n, r) { var i = [e.state.modeGen], o = {}; Ot(e, t.text, e.doc.mode, n, (function (e, t) { return i.push(e, t) }), o, r); for (var a = n.state, s = function (r) { n.baseTokens = i; var s = e.state.overlays[r], c = 1, l = 0; n.state = !0, Ot(e, t.text, s.mode, n, (function (e, t) { var n = c; while (l < e) { var r = i[c]; r > e && i.splice(c, 1, e, i[c + 1], r), c += 2, l = Math.min(e, r) } if (t) if (s.opaque) i.splice(n, c - n, e, "overlay " + t), c = n + 2; else for (; n < c; n += 2) { var o = i[n + 1]; i[n + 1] = (o ? o + " " : "") + "overlay " + t } }), o), n.state = a, n.baseTokens = null, n.baseTokenPos = 1 }, c = 0; c < e.state.overlays.length; ++c)s(c); return { styles: i, classes: o.bgClass || o.textClass ? o : null } } function gt(e, t, n) { if (!t.styles || t.styles[0] != e.state.modeGen) { var r = yt(e, et(t)), i = t.text.length > e.options.maxHighlightLength && qe(e.doc.mode, r.state), o = mt(e, t, r); i && (r.state = i), t.stateAfter = r.save(!i), t.styles = o.styles, o.classes ? t.styleClasses = o.classes : t.styleClasses && (t.styleClasses = null), n === e.doc.highlightFrontier && (e.doc.modeFrontier = Math.max(e.doc.modeFrontier, ++e.doc.highlightFrontier)) } return t.styles } function yt(e, t, n) { var r = e.doc, i = e.display; if (!r.mode.startState) return new vt(r, !0, t); var o = kt(e, t, n), a = o > r.first && Xe(r, o - 1).stateAfter, s = a ? vt.fromSaved(r, a, o) : new vt(r, Ke(r.mode), o); return r.iter(o, t, (function (n) { bt(e, n.text, s); var r = s.line; n.stateAfter = r == t - 1 || r % 5 == 0 || r >= i.viewFrom && r < i.viewTo ? s.save() : null, s.nextLine() })), n && (r.modeFrontier = s.line), s } function bt(e, t, n, r) { var i = e.doc.mode, o = new Ge(t, e.options.tabSize, n); o.start = o.pos = r || 0, "" == t && xt(i, n.state); while (!o.eol()) wt(i, o, n.state), o.start = o.pos } function xt(e, t) { if (e.blankLine) return e.blankLine(t); if (e.innerMode) { var n = Ue(e, t); return n.mode.blankLine ? n.mode.blankLine(n.state) : void 0 } } function wt(e, t, n, r) { for (var i = 0; i < 10; i++) { r && (r[0] = Ue(e, n).mode); var o = e.token(t, n); if (t.pos > t.start) return o } throw new Error("Mode " + e.name + " failed to advance stream.") } vt.prototype.lookAhead = function (e) { var t = this.doc.getLine(this.line + e); return null != t && e > this.maxLookAhead && (this.maxLookAhead = e), t }, vt.prototype.baseToken = function (e) { if (!this.baseTokens) return null; while (this.baseTokens[this.baseTokenPos] <= e) this.baseTokenPos += 2; var t = this.baseTokens[this.baseTokenPos + 1]; return { type: t && t.replace(/( |^)overlay .*/, ""), size: this.baseTokens[this.baseTokenPos] - e } }, vt.prototype.nextLine = function () { this.line++, this.maxLookAhead > 0 && this.maxLookAhead-- }, vt.fromSaved = function (e, t, n) { return t instanceof pt ? new vt(e, qe(e.mode, t.state), n, t.lookAhead) : new vt(e, qe(e.mode, t), n) }, vt.prototype.save = function (e) { var t = !1 !== e ? qe(this.doc.mode, this.state) : this.state; return this.maxLookAhead > 0 ? new pt(t, this.maxLookAhead) : t }; var _t = function (e, t, n) { this.start = e.start, this.end = e.pos, this.string = e.current(), this.type = t || null, this.state = n }; function Ct(e, t, n, r) { var i, o = e.doc, a = o.mode; t = ht(o, t); var s, c = Xe(o, t.line), l = yt(e, t.line, n), u = new Ge(c.text, e.options.tabSize, l); r && (s = []); while ((r || u.pos < t.ch) && !u.eol()) u.start = u.pos, i = wt(a, u, l.state), r && s.push(new _t(u, i, qe(o.mode, l.state))); return r ? s : new _t(u, i, l.state) } function Mt(e, t) { if (e) for (; ;) { var n = e.match(/(?:^|\s+)line-(background-)?(\S+)/); if (!n) break; e = e.slice(0, n.index) + e.slice(n.index + n[0].length); var r = n[1] ? "bgClass" : "textClass"; null == t[r] ? t[r] = n[2] : new RegExp("(?:^|\\s)" + n[2] + "(?:$|\\s)").test(t[r]) || (t[r] += " " + n[2]) } return e } function Ot(e, t, n, r, i, o, a) { var s = n.flattenSpans; null == s && (s = e.options.flattenSpans); var c, l = 0, u = null, h = new Ge(t, e.options.tabSize, r), f = e.options.addModeClass && [null]; "" == t && Mt(xt(n, r.state), o); while (!h.eol()) { if (h.pos > e.options.maxHighlightLength ? (s = !1, a && bt(e, t, r, h.pos), h.pos = t.length, c = null) : c = Mt(wt(n, h, r.state, f), o), f) { var d = f[0].name; d && (c = "m-" + (c ? d + " " + c : d)) } if (!s || u != c) { while (l < h.start) l = Math.min(h.start, l + 5e3), i(l, u); u = c } h.start = h.pos } while (l < h.pos) { var p = Math.min(h.pos, l + 5e3); i(p, u), l = p } } function kt(e, t, n) { for (var r, i, o = e.doc, a = n ? -1 : t - (e.doc.mode.innerMode ? 1e3 : 100), s = t; s > a; --s) { if (s <= o.first) return o.first; var c = Xe(o, s - 1), l = c.stateAfter; if (l && (!n || s + (l instanceof pt ? l.lookAhead : 0) <= o.modeFrontier)) return s; var u = I(c.text, null, e.options.tabSize); (null == i || r > u) && (i = s - 1, r = u) } return i } function St(e, t) { if (e.modeFrontier = Math.min(e.modeFrontier, t), !(e.highlightFrontier < t - 10)) { for (var n = e.first, r = t - 1; r > n; r--) { var i = Xe(e, r).stateAfter; if (i && (!(i instanceof pt) || r + i.lookAhead < t)) { n = r + 1; break } } e.highlightFrontier = Math.min(e.highlightFrontier, n) } } var Tt = !1, At = !1; function Lt() { Tt = !0 } function jt() { At = !0 } function zt(e, t, n) { this.marker = e, this.from = t, this.to = n } function Et(e, t) { if (e) for (var n = 0; n < e.length; ++n) { var r = e[n]; if (r.marker == t) return r } } function Pt(e, t) { for (var n, r = 0; r < e.length; ++r)e[r] != t && (n || (n = [])).push(e[r]); return n } function Dt(e, t) { e.markedSpans = e.markedSpans ? e.markedSpans.concat([t]) : [t], t.marker.attachLine(e) } function Ht(e, t, n) { var r; if (e) for (var i = 0; i < e.length; ++i) { var o = e[i], a = o.marker, s = null == o.from || (a.inclusiveLeft ? o.from <= t : o.from < t); if (s || o.from == t && "bookmark" == a.type && (!n || !o.marker.insertLeft)) { var c = null == o.to || (a.inclusiveRight ? o.to >= t : o.to > t); (r || (r = [])).push(new zt(a, o.from, c ? null : o.to)) } } return r } function Vt(e, t, n) { var r; if (e) for (var i = 0; i < e.length; ++i) { var o = e[i], a = o.marker, s = null == o.to || (a.inclusiveRight ? o.to >= t : o.to > t); if (s || o.from == t && "bookmark" == a.type && (!n || o.marker.insertLeft)) { var c = null == o.from || (a.inclusiveLeft ? o.from <= t : o.from < t); (r || (r = [])).push(new zt(a, c ? null : o.from - t, null == o.to ? null : o.to - t)) } } return r } function It(e, t) { if (t.full) return null; var n = nt(e, t.from.line) && Xe(e, t.from.line).markedSpans, r = nt(e, t.to.line) && Xe(e, t.to.line).markedSpans; if (!n && !r) return null; var i = t.from.ch, o = t.to.ch, a = 0 == ot(t.from, t.to), s = Ht(n, i, a), c = Vt(r, o, a), l = 1 == t.text.length, u = G(t.text).length + (l ? i : 0); if (s) for (var h = 0; h < s.length; ++h) { var f = s[h]; if (null == f.to) { var d = Et(c, f.marker); d ? l && (f.to = null == d.to ? null : d.to + u) : f.to = i } } if (c) for (var p = 0; p < c.length; ++p) { var v = c[p]; if (null != v.to && (v.to += u), null == v.from) { var m = Et(s, v.marker); m || (v.from = u, l && (s || (s = [])).push(v)) } else v.from += u, l && (s || (s = [])).push(v) } s && (s = Nt(s)), c && c != s && (c = Nt(c)); var g = [s]; if (!l) { var y, b = t.text.length - 2; if (b > 0 && s) for (var x = 0; x < s.length; ++x)null == s[x].to && (y || (y = [])).push(new zt(s[x].marker, null, null)); for (var w = 0; w < b; ++w)g.push(y); g.push(c) } return g } function Nt(e) { for (var t = 0; t < e.length; ++t) { var n = e[t]; null != n.from && n.from == n.to && !1 !== n.marker.clearWhenEmpty && e.splice(t--, 1) } return e.length ? e : null } function Rt(e, t, n) { var r = null; if (e.iter(t.line, n.line + 1, (function (e) { if (e.markedSpans) for (var t = 0; t < e.markedSpans.length; ++t) { var n = e.markedSpans[t].marker; !n.readOnly || r && -1 != R(r, n) || (r || (r = [])).push(n) } })), !r) return null; for (var i = [{ from: t, to: n }], o = 0; o < r.length; ++o)for (var a = r[o], s = a.find(0), c = 0; c < i.length; ++c) { var l = i[c]; if (!(ot(l.to, s.from) < 0 || ot(l.from, s.to) > 0)) { var u = [c, 1], h = ot(l.from, s.from), f = ot(l.to, s.to); (h < 0 || !a.inclusiveLeft && !h) && u.push({ from: l.from, to: s.from }), (f > 0 || !a.inclusiveRight && !f) && u.push({ from: s.to, to: l.to }), i.splice.apply(i, u), c += u.length - 3 } } return i } function Ft(e) { var t = e.markedSpans; if (t) { for (var n = 0; n < t.length; ++n)t[n].marker.detachLine(e); e.markedSpans = null } } function Yt(e, t) { if (t) { for (var n = 0; n < t.length; ++n)t[n].marker.attachLine(e); e.markedSpans = t } } function $t(e) { return e.inclusiveLeft ? -1 : 0 } function Bt(e) { return e.inclusiveRight ? 1 : 0 } function Wt(e, t) { var n = e.lines.length - t.lines.length; if (0 != n) return n; var r = e.find(), i = t.find(), o = ot(r.from, i.from) || $t(e) - $t(t); if (o) return -o; var a = ot(r.to, i.to) || Bt(e) - Bt(t); return a || t.id - e.id } function qt(e, t) { var n, r = At && e.markedSpans; if (r) for (var i = void 0, o = 0; o < r.length; ++o)i = r[o], i.marker.collapsed && null == (t ? i.from : i.to) && (!n || Wt(n, i.marker) < 0) && (n = i.marker); return n } function Ut(e) { return qt(e, !0) } function Kt(e) { return qt(e, !1) } function Gt(e, t) { var n, r = At && e.markedSpans; if (r) for (var i = 0; i < r.length; ++i) { var o = r[i]; o.marker.collapsed && (null == o.from || o.from < t) && (null == o.to || o.to > t) && (!n || Wt(n, o.marker) < 0) && (n = o.marker) } return n } function Xt(e, t, n, r, i) { var o = Xe(e, t), a = At && o.markedSpans; if (a) for (var s = 0; s < a.length; ++s) { var c = a[s]; if (c.marker.collapsed) { var l = c.marker.find(0), u = ot(l.from, n) || $t(c.marker) - $t(i), h = ot(l.to, r) || Bt(c.marker) - Bt(i); if (!(u >= 0 && h <= 0 || u <= 0 && h >= 0) && (u <= 0 && (c.marker.inclusiveRight && i.inclusiveLeft ? ot(l.to, n) >= 0 : ot(l.to, n) > 0) || u >= 0 && (c.marker.inclusiveRight && i.inclusiveLeft ? ot(l.from, r) <= 0 : ot(l.from, r) < 0))) return !0 } } } function Jt(e) { var t; while (t = Ut(e)) e = t.find(-1, !0).line; return e } function Qt(e) { var t; while (t = Kt(e)) e = t.find(1, !0).line; return e } function Zt(e) { var t, n; while (t = Kt(e)) e = t.find(1, !0).line, (n || (n = [])).push(e); return n } function en(e, t) { var n = Xe(e, t), r = Jt(n); return n == r ? t : et(r) } function tn(e, t) { if (t > e.lastLine()) return t; var n, r = Xe(e, t); if (!nn(e, r)) return t; while (n = Kt(r)) r = n.find(1, !0).line; return et(r) + 1 } function nn(e, t) { var n = At && t.markedSpans; if (n) for (var r = void 0, i = 0; i < n.length; ++i)if (r = n[i], r.marker.collapsed) { if (null == r.from) return !0; if (!r.marker.widgetNode && 0 == r.from && r.marker.inclusiveLeft && rn(e, t, r)) return !0 } } function rn(e, t, n) { if (null == n.to) { var r = n.marker.find(1, !0); return rn(e, r.line, Et(r.line.markedSpans, n.marker)) } if (n.marker.inclusiveRight && n.to == t.text.length) return !0; for (var i = void 0, o = 0; o < t.markedSpans.length; ++o)if (i = t.markedSpans[o], i.marker.collapsed && !i.marker.widgetNode && i.from == n.to && (null == i.to || i.to != n.from) && (i.marker.inclusiveLeft || n.marker.inclusiveRight) && rn(e, t, i)) return !0 } function on(e) { e = Jt(e); for (var t = 0, n = e.parent, r = 0; r < n.lines.length; ++r) { var i = n.lines[r]; if (i == e) break; t += i.height } for (var o = n.parent; o; n = o, o = n.parent)for (var a = 0; a < o.children.length; ++a) { var s = o.children[a]; if (s == n) break; t += s.height } return t } function an(e) { if (0 == e.height) return 0; var t, n = e.text.length, r = e; while (t = Ut(r)) { var i = t.find(0, !0); r = i.from.line, n += i.from.ch - i.to.ch } r = e; while (t = Kt(r)) { var o = t.find(0, !0); n -= r.text.length - o.from.ch, r = o.to.line, n += r.text.length - o.to.ch } return n } function sn(e) { var t = e.display, n = e.doc; t.maxLine = Xe(n, n.first), t.maxLineLength = an(t.maxLine), t.maxLineChanged = !0, n.iter((function (e) { var n = an(e); n > t.maxLineLength && (t.maxLineLength = n, t.maxLine = e) })) } var cn = function (e, t, n) { this.text = e, Yt(this, t), this.height = n ? n(this) : 1 }; function ln(e, t, n, r) { e.text = t, e.stateAfter && (e.stateAfter = null), e.styles && (e.styles = null), null != e.order && (e.order = null), Ft(e), Yt(e, n); var i = r ? r(e) : 1; i != e.height && Ze(e, i) } function un(e) { e.parent = null, Ft(e) } cn.prototype.lineNo = function () { return et(this) }, we(cn); var hn = {}, fn = {}; function dn(e, t) { if (!e || /^\s*$/.test(e)) return null; var n = t.addModeClass ? fn : hn; return n[e] || (n[e] = e.replace(/\S+/g, "cm-$&")) } function pn(e, t) { var n = L("span", null, null, c ? "padding-right: .1px" : null), r = { pre: L("pre", [n], "CodeMirror-line"), content: n, col: 0, pos: 0, cm: e, trailingSpace: !1, splitSpaces: e.getOption("lineWrapping") }; t.measure = {}; for (var i = 0; i <= (t.rest ? t.rest.length : 0); i++) { var o = i ? t.rest[i - 1] : t.line, a = void 0; r.pos = 0, r.addToken = mn, ze(e.display.measure) && (a = fe(o, e.doc.direction)) && (r.addToken = yn(r.addToken, a)), r.map = []; var s = t != e.display.externalMeasured && et(o); xn(o, r, gt(e, o, s)), o.styleClasses && (o.styleClasses.bgClass && (r.bgClass = P(o.styleClasses.bgClass, r.bgClass || "")), o.styleClasses.textClass && (r.textClass = P(o.styleClasses.textClass, r.textClass || ""))), 0 == r.map.length && r.map.push(0, 0, r.content.appendChild(je(e.display.measure))), 0 == i ? (t.measure.map = r.map, t.measure.cache = {}) : ((t.measure.maps || (t.measure.maps = [])).push(r.map), (t.measure.caches || (t.measure.caches = [])).push({})) } if (c) { var l = r.content.lastChild; (/\bcm-tab\b/.test(l.className) || l.querySelector && l.querySelector(".cm-tab")) && (r.content.className = "cm-tab-wrap-hack") } return ge(e, "renderLine", e, t.line, r.pre), r.pre.className && (r.textClass = P(r.pre.className, r.textClass || "")), r } function vn(e) { var t = A("span", "鈥�", "cm-invalidchar"); return t.title = "\\u" + e.charCodeAt(0).toString(16), t.setAttribute("aria-label", t.title), t } function mn(e, t, n, r, i, o, c) { if (t) { var l, u = e.splitSpaces ? gn(t, e.trailingSpace) : t, h = e.cm.state.specialChars, f = !1; if (h.test(t)) { l = document.createDocumentFragment(); var d = 0; while (1) { h.lastIndex = d; var p = h.exec(t), v = p ? p.index - d : t.length - d; if (v) { var m = document.createTextNode(u.slice(d, d + v)); a && s < 9 ? l.appendChild(A("span", [m])) : l.appendChild(m), e.map.push(e.pos, e.pos + v, m), e.col += v, e.pos += v } if (!p) break; d += v + 1; var g = void 0; if ("\t" == p[0]) { var y = e.cm.options.tabSize, b = y - e.col % y; g = l.appendChild(A("span", K(b), "cm-tab")), g.setAttribute("role", "presentation"), g.setAttribute("cm-text", "\t"), e.col += b } else "\r" == p[0] || "\n" == p[0] ? (g = l.appendChild(A("span", "\r" == p[0] ? "鈵�" : "鈵�", "cm-invalidchar")), g.setAttribute("cm-text", p[0]), e.col += 1) : (g = e.cm.options.specialCharPlaceholder(p[0]), g.setAttribute("cm-text", p[0]), a && s < 9 ? l.appendChild(A("span", [g])) : l.appendChild(g), e.col += 1); e.map.push(e.pos, e.pos + 1, g), e.pos++ } } else e.col += t.length, l = document.createTextNode(u), e.map.push(e.pos, e.pos + t.length, l), a && s < 9 && (f = !0), e.pos += t.length; if (e.trailingSpace = 32 == u.charCodeAt(t.length - 1), n || r || i || f || o || c) { var x = n || ""; r && (x += r), i && (x += i); var w = A("span", [l], x, o); if (c) for (var _ in c) c.hasOwnProperty(_) && "style" != _ && "class" != _ && w.setAttribute(_, c[_]); return e.content.appendChild(w) } e.content.appendChild(l) } } function gn(e, t) { if (e.length > 1 && !/  /.test(e)) return e; for (var n = t, r = "", i = 0; i < e.length; i++) { var o = e.charAt(i); " " != o || !n || i != e.length - 1 && 32 != e.charCodeAt(i + 1) || (o = "聽"), r += o, n = " " == o } return r } function yn(e, t) { return function (n, r, i, o, a, s, c) { i = i ? i + " cm-force-border" : "cm-force-border"; for (var l = n.pos, u = l + r.length; ;) { for (var h = void 0, f = 0; f < t.length; f++)if (h = t[f], h.to > l && h.from <= l) break; if (h.to >= u) return e(n, r, i, o, a, s, c); e(n, r.slice(0, h.to - l), i, o, null, s, c), o = null, r = r.slice(h.to - l), l = h.to } } } function bn(e, t, n, r) { var i = !r && n.widgetNode; i && e.map.push(e.pos, e.pos + t, i), !r && e.cm.display.input.needsContentAttribute && (i || (i = e.content.appendChild(document.createElement("span"))), i.setAttribute("cm-marker", n.id)), i && (e.cm.display.input.setUneditable(i), e.content.appendChild(i)), e.pos += t, e.trailingSpace = !1 } function xn(e, t, n) { var r = e.markedSpans, i = e.text, o = 0; if (r) for (var a, s, c, l, u, h, f, d = i.length, p = 0, v = 1, m = "", g = 0; ;) { if (g == p) { c = l = u = s = "", f = null, h = null, g = 1 / 0; for (var y = [], b = void 0, x = 0; x < r.length; ++x) { var w = r[x], _ = w.marker; if ("bookmark" == _.type && w.from == p && _.widgetNode) y.push(_); else if (w.from <= p && (null == w.to || w.to > p || _.collapsed && w.to == p && w.from == p)) { if (null != w.to && w.to != p && g > w.to && (g = w.to, l = ""), _.className && (c += " " + _.className), _.css && (s = (s ? s + ";" : "") + _.css), _.startStyle && w.from == p && (u += " " + _.startStyle), _.endStyle && w.to == g && (b || (b = [])).push(_.endStyle, w.to), _.title && ((f || (f = {})).title = _.title), _.attributes) for (var C in _.attributes) (f || (f = {}))[C] = _.attributes[C]; _.collapsed && (!h || Wt(h.marker, _) < 0) && (h = w) } else w.from > p && g > w.from && (g = w.from) } if (b) for (var M = 0; M < b.length; M += 2)b[M + 1] == g && (l += " " + b[M]); if (!h || h.from == p) for (var O = 0; O < y.length; ++O)bn(t, 0, y[O]); if (h && (h.from || 0) == p) { if (bn(t, (null == h.to ? d + 1 : h.to) - p, h.marker, null == h.from), null == h.to) return; h.to == p && (h = !1) } } if (p >= d) break; var k = Math.min(d, g); while (1) { if (m) { var S = p + m.length; if (!h) { var T = S > k ? m.slice(0, k - p) : m; t.addToken(t, T, a ? a + c : c, u, p + T.length == g ? l : "", s, f) } if (S >= k) { m = m.slice(k - p), p = k; break } p = S, u = "" } m = i.slice(o, o = n[v++]), a = dn(n[v++], t.cm.options) } } else for (var A = 1; A < n.length; A += 2)t.addToken(t, i.slice(o, o = n[A]), dn(n[A + 1], t.cm.options)) } function wn(e, t, n) { this.line = t, this.rest = Zt(t), this.size = this.rest ? et(G(this.rest)) - n + 1 : 1, this.node = this.text = null, this.hidden = nn(e, t) } function _n(e, t, n) { for (var r, i = [], o = t; o < n; o = r) { var a = new wn(e.doc, Xe(e.doc, o), o); r = o + a.size, i.push(a) } return i } var Cn = null; function Mn(e) { Cn ? Cn.ops.push(e) : e.ownsGroup = Cn = { ops: [e], delayedCallbacks: [] } } function On(e) { var t = e.delayedCallbacks, n = 0; do { for (; n < t.length; n++)t[n].call(null); for (var r = 0; r < e.ops.length; r++) { var i = e.ops[r]; if (i.cursorActivityHandlers) while (i.cursorActivityCalled < i.cursorActivityHandlers.length) i.cursorActivityHandlers[i.cursorActivityCalled++].call(null, i.cm) } } while (n < t.length) } function kn(e, t) { var n = e.ownsGroup; if (n) try { On(n) } finally { Cn = null, t(n) } } var Sn = null; function Tn(e, t) { var n = ve(e, t); if (n.length) { var r, i = Array.prototype.slice.call(arguments, 2); Cn ? r = Cn.delayedCallbacks : Sn ? r = Sn : (r = Sn = [], setTimeout(An, 0)); for (var o = function (e) { r.push((function () { return n[e].apply(null, i) })) }, a = 0; a < n.length; ++a)o(a) } } function An() { var e = Sn; Sn = null; for (var t = 0; t < e.length; ++t)e[t]() } function Ln(e, t, n, r) { for (var i = 0; i < t.changes.length; i++) { var o = t.changes[i]; "text" == o ? Pn(e, t) : "gutter" == o ? Hn(e, t, n, r) : "class" == o ? Dn(e, t) : "widget" == o && Vn(e, t, r) } t.changes = null } function jn(e) { return e.node == e.text && (e.node = A("div", null, null, "position: relative"), e.text.parentNode && e.text.parentNode.replaceChild(e.node, e.text), e.node.appendChild(e.text), a && s < 8 && (e.node.style.zIndex = 2)), e.node } function zn(e, t) { var n = t.bgClass ? t.bgClass + " " + (t.line.bgClass || "") : t.line.bgClass; if (n && (n += " CodeMirror-linebackground"), t.background) n ? t.background.className = n : (t.background.parentNode.removeChild(t.background), t.background = null); else if (n) { var r = jn(t); t.background = r.insertBefore(A("div", null, n), r.firstChild), e.display.input.setUneditable(t.background) } } function En(e, t) { var n = e.display.externalMeasured; return n && n.line == t.line ? (e.display.externalMeasured = null, t.measure = n.measure, n.built) : pn(e, t) } function Pn(e, t) { var n = t.text.className, r = En(e, t); t.text == t.node && (t.node = r.pre), t.text.parentNode.replaceChild(r.pre, t.text), t.text = r.pre, r.bgClass != t.bgClass || r.textClass != t.textClass ? (t.bgClass = r.bgClass, t.textClass = r.textClass, Dn(e, t)) : n && (t.text.className = n) } function Dn(e, t) { zn(e, t), t.line.wrapClass ? jn(t).className = t.line.wrapClass : t.node != t.text && (t.node.className = ""); var n = t.textClass ? t.textClass + " " + (t.line.textClass || "") : t.line.textClass; t.text.className = n || "" } function Hn(e, t, n, r) { if (t.gutter && (t.node.removeChild(t.gutter), t.gutter = null), t.gutterBackground && (t.node.removeChild(t.gutterBackground), t.gutterBackground = null), t.line.gutterClass) { var i = jn(t); t.gutterBackground = A("div", null, "CodeMirror-gutter-background " + t.line.gutterClass, "left: " + (e.options.fixedGutter ? r.fixedPos : -r.gutterTotalWidth) + "px; width: " + r.gutterTotalWidth + "px"), e.display.input.setUneditable(t.gutterBackground), i.insertBefore(t.gutterBackground, t.text) } var o = t.line.gutterMarkers; if (e.options.lineNumbers || o) { var a = jn(t), s = t.gutter = A("div", null, "CodeMirror-gutter-wrapper", "left: " + (e.options.fixedGutter ? r.fixedPos : -r.gutterTotalWidth) + "px"); if (s.setAttribute("aria-hidden", "true"), e.display.input.setUneditable(s), a.insertBefore(s, t.text), t.line.gutterClass && (s.className += " " + t.line.gutterClass), !e.options.lineNumbers || o && o["CodeMirror-linenumbers"] || (t.lineNumber = s.appendChild(A("div", rt(e.options, n), "CodeMirror-linenumber CodeMirror-gutter-elt", "left: " + r.gutterLeft["CodeMirror-linenumbers"] + "px; width: " + e.display.lineNumInnerWidth + "px"))), o) for (var c = 0; c < e.display.gutterSpecs.length; ++c) { var l = e.display.gutterSpecs[c].className, u = o.hasOwnProperty(l) && o[l]; u && s.appendChild(A("div", [u], "CodeMirror-gutter-elt", "left: " + r.gutterLeft[l] + "px; width: " + r.gutterWidth[l] + "px")) } } } function Vn(e, t, n) { t.alignable && (t.alignable = null); for (var r = M("CodeMirror-linewidget"), i = t.node.firstChild, o = void 0; i; i = o)o = i.nextSibling, r.test(i.className) && t.node.removeChild(i); Nn(e, t, n) } function In(e, t, n, r) { var i = En(e, t); return t.text = t.node = i.pre, i.bgClass && (t.bgClass = i.bgClass), i.textClass && (t.textClass = i.textClass), Dn(e, t), Hn(e, t, n, r), Nn(e, t, r), t.node } function Nn(e, t, n) { if (Rn(e, t.line, t, n, !0), t.rest) for (var r = 0; r < t.rest.length; r++)Rn(e, t.rest[r], t, n, !1) } function Rn(e, t, n, r, i) { if (t.widgets) for (var o = jn(n), a = 0, s = t.widgets; a < s.length; ++a) { var c = s[a], l = A("div", [c.node], "CodeMirror-linewidget" + (c.className ? " " + c.className : "")); c.handleMouseEvents || l.setAttribute("cm-ignore-events", "true"), Fn(c, l, n, r), e.display.input.setUneditable(l), i && c.above ? o.insertBefore(l, n.gutter || n.text) : o.appendChild(l), Tn(c, "redraw") } } function Fn(e, t, n, r) { if (e.noHScroll) { (n.alignable || (n.alignable = [])).push(t); var i = r.wrapperWidth; t.style.left = r.fixedPos + "px", e.coverGutter || (i -= r.gutterTotalWidth, t.style.paddingLeft = r.gutterTotalWidth + "px"), t.style.width = i + "px" } e.coverGutter && (t.style.zIndex = 5, t.style.position = "relative", e.noHScroll || (t.style.marginLeft = -r.gutterTotalWidth + "px")) } function Yn(e) { if (null != e.height) return e.height; var t = e.doc.cm; if (!t) return 0; if (!j(document.body, e.node)) { var n = "position: relative;"; e.coverGutter && (n += "margin-left: -" + t.display.gutters.offsetWidth + "px;"), e.noHScroll && (n += "width: " + t.display.wrapper.clientWidth + "px;"), T(t.display.measure, A("div", [e.node], null, n)) } return e.height = e.node.parentNode.offsetHeight } function $n(e, t) { for (var n = ke(t); n != e.wrapper; n = n.parentNode)if (!n || 1 == n.nodeType && "true" == n.getAttribute("cm-ignore-events") || n.parentNode == e.sizer && n != e.mover) return !0 } function Bn(e) { return e.lineSpace.offsetTop } function Wn(e) { return e.mover.offsetHeight - e.lineSpace.offsetHeight } function qn(e) { if (e.cachedPaddingH) return e.cachedPaddingH; var t = T(e.measure, A("pre", "x", "CodeMirror-line-like")), n = window.getComputedStyle ? window.getComputedStyle(t) : t.currentStyle, r = { left: parseInt(n.paddingLeft), right: parseInt(n.paddingRight) }; return isNaN(r.left) || isNaN(r.right) || (e.cachedPaddingH = r), r } function Un(e) { return F - e.display.nativeBarWidth } function Kn(e) { return e.display.scroller.clientWidth - Un(e) - e.display.barWidth } function Gn(e) { return e.display.scroller.clientHeight - Un(e) - e.display.barHeight } function Xn(e, t, n) { var r = e.options.lineWrapping, i = r && Kn(e); if (!t.measure.heights || r && t.measure.width != i) { var o = t.measure.heights = []; if (r) { t.measure.width = i; for (var a = t.text.firstChild.getClientRects(), s = 0; s < a.length - 1; s++) { var c = a[s], l = a[s + 1]; Math.abs(c.bottom - l.bottom) > 2 && o.push((c.bottom + l.top) / 2 - n.top) } } o.push(n.bottom - n.top) } } function Jn(e, t, n) { if (e.line == t) return { map: e.measure.map, cache: e.measure.cache }; for (var r = 0; r < e.rest.length; r++)if (e.rest[r] == t) return { map: e.measure.maps[r], cache: e.measure.caches[r] }; for (var i = 0; i < e.rest.length; i++)if (et(e.rest[i]) > n) return { map: e.measure.maps[i], cache: e.measure.caches[i], before: !0 } } function Qn(e, t) { t = Jt(t); var n = et(t), r = e.display.externalMeasured = new wn(e.doc, t, n); r.lineN = n; var i = r.built = pn(e, r); return r.text = i.pre, T(e.display.lineMeasure, i.pre), r } function Zn(e, t, n, r) { return nr(e, tr(e, t), n, r) } function er(e, t) { if (t >= e.display.viewFrom && t < e.display.viewTo) return e.display.view[Dr(e, t)]; var n = e.display.externalMeasured; return n && t >= n.lineN && t < n.lineN + n.size ? n : void 0 } function tr(e, t) { var n = et(t), r = er(e, n); r && !r.text ? r = null : r && r.changes && (Ln(e, r, n, Lr(e)), e.curOp.forceUpdate = !0), r || (r = Qn(e, t)); var i = Jn(r, t, n); return { line: t, view: r, rect: null, map: i.map, cache: i.cache, before: i.before, hasHeights: !1 } } function nr(e, t, n, r, i) { t.before && (n = -1); var o, a = n + (r || ""); return t.cache.hasOwnProperty(a) ? o = t.cache[a] : (t.rect || (t.rect = t.view.text.getBoundingClientRect()), t.hasHeights || (Xn(e, t.view, t.rect), t.hasHeights = !0), o = sr(e, t, n, r), o.bogus || (t.cache[a] = o)), { left: o.left, right: o.right, top: i ? o.rtop : o.top, bottom: i ? o.rbottom : o.bottom } } var rr, ir = { left: 0, right: 0, top: 0, bottom: 0 }; function or(e, t, n) { for (var r, i, o, a, s, c, l = 0; l < e.length; l += 3)if (s = e[l], c = e[l + 1], t < s ? (i = 0, o = 1, a = "left") : t < c ? (i = t - s, o = i + 1) : (l == e.length - 3 || t == c && e[l + 3] > t) && (o = c - s, i = o - 1, t >= c && (a = "right")), null != i) { if (r = e[l + 2], s == c && n == (r.insertLeft ? "left" : "right") && (a = n), "left" == n && 0 == i) while (l && e[l - 2] == e[l - 3] && e[l - 1].insertLeft) r = e[2 + (l -= 3)], a = "left"; if ("right" == n && i == c - s) while (l < e.length - 3 && e[l + 3] == e[l + 4] && !e[l + 5].insertLeft) r = e[(l += 3) + 2], a = "right"; break } return { node: r, start: i, end: o, collapse: a, coverStart: s, coverEnd: c } } function ar(e, t) { var n = ir; if ("left" == t) { for (var r = 0; r < e.length; r++)if ((n = e[r]).left != n.right) break } else for (var i = e.length - 1; i >= 0; i--)if ((n = e[i]).left != n.right) break; return n } function sr(e, t, n, r) { var i, o = or(t.map, n, r), c = o.node, l = o.start, u = o.end, h = o.collapse; if (3 == c.nodeType) { for (var f = 0; f < 4; f++) { while (l && oe(t.line.text.charAt(o.coverStart + l))) --l; while (o.coverStart + u < o.coverEnd && oe(t.line.text.charAt(o.coverStart + u))) ++u; if (i = a && s < 9 && 0 == l && u == o.coverEnd - o.coverStart ? c.parentNode.getBoundingClientRect() : ar(O(c, l, u).getClientRects(), r), i.left || i.right || 0 == l) break; u = l, l -= 1, h = "right" } a && s < 11 && (i = cr(e.display.measure, i)) } else { var d; l > 0 && (h = r = "right"), i = e.options.lineWrapping && (d = c.getClientRects()).length > 1 ? d["right" == r ? d.length - 1 : 0] : c.getBoundingClientRect() } if (a && s < 9 && !l && (!i || !i.left && !i.right)) { var p = c.parentNode.getClientRects()[0]; i = p ? { left: p.left, right: p.left + Ar(e.display), top: p.top, bottom: p.bottom } : ir } for (var v = i.top - t.rect.top, m = i.bottom - t.rect.top, g = (v + m) / 2, y = t.view.measure.heights, b = 0; b < y.length - 1; b++)if (g < y[b]) break; var x = b ? y[b - 1] : 0, w = y[b], _ = { left: ("right" == h ? i.right : i.left) - t.rect.left, right: ("left" == h ? i.left : i.right) - t.rect.left, top: x, bottom: w }; return i.left || i.right || (_.bogus = !0), e.options.singleCursorHeightPerLine || (_.rtop = v, _.rbottom = m), _ } function cr(e, t) { if (!window.screen || null == screen.logicalXDPI || screen.logicalXDPI == screen.deviceXDPI || !Ve(e)) return t; var n = screen.logicalXDPI / screen.deviceXDPI, r = screen.logicalYDPI / screen.deviceYDPI; return { left: t.left * n, right: t.right * n, top: t.top * r, bottom: t.bottom * r } } function lr(e) { if (e.measure && (e.measure.cache = {}, e.measure.heights = null, e.rest)) for (var t = 0; t < e.rest.length; t++)e.measure.caches[t] = {} } function ur(e) { e.display.externalMeasure = null, S(e.display.lineMeasure); for (var t = 0; t < e.display.view.length; t++)lr(e.display.view[t]) } function hr(e) { ur(e), e.display.cachedCharWidth = e.display.cachedTextHeight = e.display.cachedPaddingH = null, e.options.lineWrapping || (e.display.maxLineChanged = !0), e.display.lineNumChars = null } function fr() { return u && m ? -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) : window.pageXOffset || (document.documentElement || document.body).scrollLeft } function dr() { return u && m ? -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) : window.pageYOffset || (document.documentElement || document.body).scrollTop } function pr(e) { var t = 0; if (e.widgets) for (var n = 0; n < e.widgets.length; ++n)e.widgets[n].above && (t += Yn(e.widgets[n])); return t } function vr(e, t, n, r, i) { if (!i) { var o = pr(t); n.top += o, n.bottom += o } if ("line" == r) return n; r || (r = "local"); var a = on(t); if ("local" == r ? a += Bn(e.display) : a -= e.display.viewOffset, "page" == r || "window" == r) { var s = e.display.lineSpace.getBoundingClientRect(); a += s.top + ("window" == r ? 0 : dr()); var c = s.left + ("window" == r ? 0 : fr()); n.left += c, n.right += c } return n.top += a, n.bottom += a, n } function mr(e, t, n) { if ("div" == n) return t; var r = t.left, i = t.top; if ("page" == n) r -= fr(), i -= dr(); else if ("local" == n || !n) { var o = e.display.sizer.getBoundingClientRect(); r += o.left, i += o.top } var a = e.display.lineSpace.getBoundingClientRect(); return { left: r - a.left, top: i - a.top } } function gr(e, t, n, r, i) { return r || (r = Xe(e.doc, t.line)), vr(e, r, Zn(e, r, t.ch, i), n) } function yr(e, t, n, r, i, o) { function a(t, a) { var s = nr(e, i, t, a ? "right" : "left", o); return a ? s.left = s.right : s.right = s.left, vr(e, r, s, n) } r = r || Xe(e.doc, t.line), i || (i = tr(e, r)); var s = fe(r, e.doc.direction), c = t.ch, l = t.sticky; if (c >= r.text.length ? (c = r.text.length, l = "before") : c <= 0 && (c = 0, l = "after"), !s) return a("before" == l ? c - 1 : c, "before" == l); function u(e, t, n) { var r = s[t], i = 1 == r.level; return a(n ? e - 1 : e, i != n) } var h = ue(s, c, l), f = le, d = u(c, h, "before" == l); return null != f && (d.other = u(c, f, "before" != l)), d } function br(e, t) { var n = 0; t = ht(e.doc, t), e.options.lineWrapping || (n = Ar(e.display) * t.ch); var r = Xe(e.doc, t.line), i = on(r) + Bn(e.display); return { left: n, right: n, top: i, bottom: i + r.height } } function xr(e, t, n, r, i) { var o = it(e, t, n); return o.xRel = i, r && (o.outside = r), o } function wr(e, t, n) { var r = e.doc; if (n += e.display.viewOffset, n < 0) return xr(r.first, 0, null, -1, -1); var i = tt(r, n), o = r.first + r.size - 1; if (i > o) return xr(r.first + r.size - 1, Xe(r, o).text.length, null, 1, 1); t < 0 && (t = 0); for (var a = Xe(r, i); ;) { var s = Or(e, a, i, t, n), c = Gt(a, s.ch + (s.xRel > 0 || s.outside > 0 ? 1 : 0)); if (!c) return s; var l = c.find(1); if (l.line == i) return l; a = Xe(r, i = l.line) } } function _r(e, t, n, r) { r -= pr(t); var i = t.text.length, o = se((function (t) { return nr(e, n, t - 1).bottom <= r }), i, 0); return i = se((function (t) { return nr(e, n, t).top > r }), o, i), { begin: o, end: i } } function Cr(e, t, n, r) { n || (n = tr(e, t)); var i = vr(e, t, nr(e, n, r), "line").top; return _r(e, t, n, i) } function Mr(e, t, n, r) { return !(e.bottom <= n) && (e.top > n || (r ? e.left : e.right) > t) } function Or(e, t, n, r, i) { i -= on(t); var o = tr(e, t), a = pr(t), s = 0, c = t.text.length, l = !0, u = fe(t, e.doc.direction); if (u) { var h = (e.options.lineWrapping ? Sr : kr)(e, t, n, o, u, r, i); l = 1 != h.level, s = l ? h.from : h.to - 1, c = l ? h.to : h.from - 1 } var f, d, p = null, v = null, m = se((function (t) { var n = nr(e, o, t); return n.top += a, n.bottom += a, !!Mr(n, r, i, !1) && (n.top <= i && n.left <= r && (p = t, v = n), !0) }), s, c), g = !1; if (v) { var y = r - v.left < v.right - r, b = y == l; m = p + (b ? 0 : 1), d = b ? "after" : "before", f = y ? v.left : v.right } else { l || m != c && m != s || m++, d = 0 == m ? "after" : m == t.text.length ? "before" : nr(e, o, m - (l ? 1 : 0)).bottom + a <= i == l ? "after" : "before"; var x = yr(e, it(n, m, d), "line", t, o); f = x.left, g = i < x.top ? -1 : i >= x.bottom ? 1 : 0 } return m = ae(t.text, m, 1), xr(n, m, d, g, r - f) } function kr(e, t, n, r, i, o, a) { var s = se((function (s) { var c = i[s], l = 1 != c.level; return Mr(yr(e, it(n, l ? c.to : c.from, l ? "before" : "after"), "line", t, r), o, a, !0) }), 0, i.length - 1), c = i[s]; if (s > 0) { var l = 1 != c.level, u = yr(e, it(n, l ? c.from : c.to, l ? "after" : "before"), "line", t, r); Mr(u, o, a, !0) && u.top > a && (c = i[s - 1]) } return c } function Sr(e, t, n, r, i, o, a) { var s = _r(e, t, r, a), c = s.begin, l = s.end; /\s/.test(t.text.charAt(l - 1)) && l--; for (var u = null, h = null, f = 0; f < i.length; f++) { var d = i[f]; if (!(d.from >= l || d.to <= c)) { var p = 1 != d.level, v = nr(e, r, p ? Math.min(l, d.to) - 1 : Math.max(c, d.from)).right, m = v < o ? o - v + 1e9 : v - o; (!u || h > m) && (u = d, h = m) } } return u || (u = i[i.length - 1]), u.from < c && (u = { from: c, to: u.to, level: u.level }), u.to > l && (u = { from: u.from, to: l, level: u.level }), u } function Tr(e) { if (null != e.cachedTextHeight) return e.cachedTextHeight; if (null == rr) { rr = A("pre", null, "CodeMirror-line-like"); for (var t = 0; t < 49; ++t)rr.appendChild(document.createTextNode("x")), rr.appendChild(A("br")); rr.appendChild(document.createTextNode("x")) } T(e.measure, rr); var n = rr.offsetHeight / 50; return n > 3 && (e.cachedTextHeight = n), S(e.measure), n || 1 } function Ar(e) { if (null != e.cachedCharWidth) return e.cachedCharWidth; var t = A("span", "xxxxxxxxxx"), n = A("pre", [t], "CodeMirror-line-like"); T(e.measure, n); var r = t.getBoundingClientRect(), i = (r.right - r.left) / 10; return i > 2 && (e.cachedCharWidth = i), i || 10 } function Lr(e) { for (var t = e.display, n = {}, r = {}, i = t.gutters.clientLeft, o = t.gutters.firstChild, a = 0; o; o = o.nextSibling, ++a) { var s = e.display.gutterSpecs[a].className; n[s] = o.offsetLeft + o.clientLeft + i, r[s] = o.clientWidth } return { fixedPos: jr(t), gutterTotalWidth: t.gutters.offsetWidth, gutterLeft: n, gutterWidth: r, wrapperWidth: t.wrapper.clientWidth } } function jr(e) { return e.scroller.getBoundingClientRect().left - e.sizer.getBoundingClientRect().left } function zr(e) { var t = Tr(e.display), n = e.options.lineWrapping, r = n && Math.max(5, e.display.scroller.clientWidth / Ar(e.display) - 3); return function (i) { if (nn(e.doc, i)) return 0; var o = 0; if (i.widgets) for (var a = 0; a < i.widgets.length; a++)i.widgets[a].height && (o += i.widgets[a].height); return n ? o + (Math.ceil(i.text.length / r) || 1) * t : o + t } } function Er(e) { var t = e.doc, n = zr(e); t.iter((function (e) { var t = n(e); t != e.height && Ze(e, t) })) } function Pr(e, t, n, r) { var i = e.display; if (!n && "true" == ke(t).getAttribute("cm-not-content")) return null; var o, a, s = i.lineSpace.getBoundingClientRect(); try { o = t.clientX - s.left, a = t.clientY - s.top } catch (h) { return null } var c, l = wr(e, o, a); if (r && l.xRel > 0 && (c = Xe(e.doc, l.line).text).length == l.ch) { var u = I(c, c.length, e.options.tabSize) - c.length; l = it(l.line, Math.max(0, Math.round((o - qn(e.display).left) / Ar(e.display)) - u)) } return l } function Dr(e, t) { if (t >= e.display.viewTo) return null; if (t -= e.display.viewFrom, t < 0) return null; for (var n = e.display.view, r = 0; r < n.length; r++)if (t -= n[r].size, t < 0) return r } function Hr(e, t, n, r) { null == t && (t = e.doc.first), null == n && (n = e.doc.first + e.doc.size), r || (r = 0); var i = e.display; if (r && n < i.viewTo && (null == i.updateLineNumbers || i.updateLineNumbers > t) && (i.updateLineNumbers = t), e.curOp.viewChanged = !0, t >= i.viewTo) At && en(e.doc, t) < i.viewTo && Ir(e); else if (n <= i.viewFrom) At && tn(e.doc, n + r) > i.viewFrom ? Ir(e) : (i.viewFrom += r, i.viewTo += r); else if (t <= i.viewFrom && n >= i.viewTo) Ir(e); else if (t <= i.viewFrom) { var o = Nr(e, n, n + r, 1); o ? (i.view = i.view.slice(o.index), i.viewFrom = o.lineN, i.viewTo += r) : Ir(e) } else if (n >= i.viewTo) { var a = Nr(e, t, t, -1); a ? (i.view = i.view.slice(0, a.index), i.viewTo = a.lineN) : Ir(e) } else { var s = Nr(e, t, t, -1), c = Nr(e, n, n + r, 1); s && c ? (i.view = i.view.slice(0, s.index).concat(_n(e, s.lineN, c.lineN)).concat(i.view.slice(c.index)), i.viewTo += r) : Ir(e) } var l = i.externalMeasured; l && (n < l.lineN ? l.lineN += r : t < l.lineN + l.size && (i.externalMeasured = null)) } function Vr(e, t, n) { e.curOp.viewChanged = !0; var r = e.display, i = e.display.externalMeasured; if (i && t >= i.lineN && t < i.lineN + i.size && (r.externalMeasured = null), !(t < r.viewFrom || t >= r.viewTo)) { var o = r.view[Dr(e, t)]; if (null != o.node) { var a = o.changes || (o.changes = []); -1 == R(a, n) && a.push(n) } } } function Ir(e) { e.display.viewFrom = e.display.viewTo = e.doc.first, e.display.view = [], e.display.viewOffset = 0 } function Nr(e, t, n, r) { var i, o = Dr(e, t), a = e.display.view; if (!At || n == e.doc.first + e.doc.size) return { index: o, lineN: n }; for (var s = e.display.viewFrom, c = 0; c < o; c++)s += a[c].size; if (s != t) { if (r > 0) { if (o == a.length - 1) return null; i = s + a[o].size - t, o++ } else i = s - t; t += i, n += i } while (en(e.doc, n) != n) { if (o == (r < 0 ? 0 : a.length - 1)) return null; n += r * a[o - (r < 0 ? 1 : 0)].size, o += r } return { index: o, lineN: n } } function Rr(e, t, n) { var r = e.display, i = r.view; 0 == i.length || t >= r.viewTo || n <= r.viewFrom ? (r.view = _n(e, t, n), r.viewFrom = t) : (r.viewFrom > t ? r.view = _n(e, t, r.viewFrom).concat(r.view) : r.viewFrom < t && (r.view = r.view.slice(Dr(e, t))), r.viewFrom = t, r.viewTo < n ? r.view = r.view.concat(_n(e, r.viewTo, n)) : r.viewTo > n && (r.view = r.view.slice(0, Dr(e, n)))), r.viewTo = n } function Fr(e) { for (var t = e.display.view, n = 0, r = 0; r < t.length; r++) { var i = t[r]; i.hidden || i.node && !i.changes || ++n } return n } function Yr(e) { e.display.input.showSelection(e.display.input.prepareSelection()) } function $r(e, t) { void 0 === t && (t = !0); for (var n = e.doc, r = {}, i = r.cursors = document.createDocumentFragment(), o = r.selection = document.createDocumentFragment(), a = 0; a < n.sel.ranges.length; a++)if (t || a != n.sel.primIndex) { var s = n.sel.ranges[a]; if (!(s.from().line >= e.display.viewTo || s.to().line < e.display.viewFrom)) { var c = s.empty(); (c || e.options.showCursorWhenSelecting) && Br(e, s.head, i), c || qr(e, s, o) } } return r } function Br(e, t, n) { var r = yr(e, t, "div", null, null, !e.options.singleCursorHeightPerLine), i = n.appendChild(A("div", "聽", "CodeMirror-cursor")); if (i.style.left = r.left + "px", i.style.top = r.top + "px", i.style.height = Math.max(0, r.bottom - r.top) * e.options.cursorHeight + "px", r.other) { var o = n.appendChild(A("div", "聽", "CodeMirror-cursor CodeMirror-secondarycursor")); o.style.display = "", o.style.left = r.other.left + "px", o.style.top = r.other.top + "px", o.style.height = .85 * (r.other.bottom - r.other.top) + "px" } } function Wr(e, t) { return e.top - t.top || e.left - t.left } function qr(e, t, n) { var r = e.display, i = e.doc, o = document.createDocumentFragment(), a = qn(e.display), s = a.left, c = Math.max(r.sizerWidth, Kn(e) - r.sizer.offsetLeft) - a.right, l = "ltr" == i.direction; function u(e, t, n, r) { t < 0 && (t = 0), t = Math.round(t), r = Math.round(r), o.appendChild(A("div", null, "CodeMirror-selected", "position: absolute; left: " + e + "px;\n                             top: " + t + "px; width: " + (null == n ? c - e : n) + "px;\n                             height: " + (r - t) + "px")) } function h(t, n, r) { var o, a, h = Xe(i, t), f = h.text.length; function d(n, r) { return gr(e, it(t, n), "div", h, r) } function p(t, n, r) { var i = Cr(e, h, null, t), o = "ltr" == n == ("after" == r) ? "left" : "right", a = "after" == r ? i.begin : i.end - (/\s/.test(h.text.charAt(i.end - 1)) ? 2 : 1); return d(a, o)[o] } var v = fe(h, i.direction); return ce(v, n || 0, null == r ? f : r, (function (e, t, i, h) { var m = "ltr" == i, g = d(e, m ? "left" : "right"), y = d(t - 1, m ? "right" : "left"), b = null == n && 0 == e, x = null == r && t == f, w = 0 == h, _ = !v || h == v.length - 1; if (y.top - g.top <= 3) { var C = (l ? b : x) && w, M = (l ? x : b) && _, O = C ? s : (m ? g : y).left, k = M ? c : (m ? y : g).right; u(O, g.top, k - O, g.bottom) } else { var S, T, A, L; m ? (S = l && b && w ? s : g.left, T = l ? c : p(e, i, "before"), A = l ? s : p(t, i, "after"), L = l && x && _ ? c : y.right) : (S = l ? p(e, i, "before") : s, T = !l && b && w ? c : g.right, A = !l && x && _ ? s : y.left, L = l ? p(t, i, "after") : c), u(S, g.top, T - S, g.bottom), g.bottom < y.top && u(s, g.bottom, null, y.top), u(A, y.top, L - A, y.bottom) } (!o || Wr(g, o) < 0) && (o = g), Wr(y, o) < 0 && (o = y), (!a || Wr(g, a) < 0) && (a = g), Wr(y, a) < 0 && (a = y) })), { start: o, end: a } } var f = t.from(), d = t.to(); if (f.line == d.line) h(f.line, f.ch, d.ch); else { var p = Xe(i, f.line), v = Xe(i, d.line), m = Jt(p) == Jt(v), g = h(f.line, f.ch, m ? p.text.length + 1 : null).end, y = h(d.line, m ? 0 : null, d.ch).start; m && (g.top < y.top - 2 ? (u(g.right, g.top, null, g.bottom), u(s, y.top, y.left, y.bottom)) : u(g.right, g.top, y.left - g.right, g.bottom)), g.bottom < y.top && u(s, g.bottom, null, y.top) } n.appendChild(o) } function Ur(e) { if (e.state.focused) { var t = e.display; clearInterval(t.blinker); var n = !0; t.cursorDiv.style.visibility = "", e.options.cursorBlinkRate > 0 ? t.blinker = setInterval((function () { e.hasFocus() || Jr(e), t.cursorDiv.style.visibility = (n = !n) ? "" : "hidden" }), e.options.cursorBlinkRate) : e.options.cursorBlinkRate < 0 && (t.cursorDiv.style.visibility = "hidden") } } function Kr(e) { e.hasFocus() || (e.display.input.focus(), e.state.focused || Xr(e)) } function Gr(e) { e.state.delayingBlurEvent = !0, setTimeout((function () { e.state.delayingBlurEvent && (e.state.delayingBlurEvent = !1, e.state.focused && Jr(e)) }), 100) } function Xr(e, t) { e.state.delayingBlurEvent && !e.state.draggingText && (e.state.delayingBlurEvent = !1), "nocursor" != e.options.readOnly && (e.state.focused || (ge(e, "focus", e, t), e.state.focused = !0, E(e.display.wrapper, "CodeMirror-focused"), e.curOp || e.display.selForContextMenu == e.doc.sel || (e.display.input.reset(), c && setTimeout((function () { return e.display.input.reset(!0) }), 20)), e.display.input.receivedFocus()), Ur(e)) } function Jr(e, t) { e.state.delayingBlurEvent || (e.state.focused && (ge(e, "blur", e, t), e.state.focused = !1, k(e.display.wrapper, "CodeMirror-focused")), clearInterval(e.display.blinker), setTimeout((function () { e.state.focused || (e.display.shift = !1) }), 150)) } function Qr(e) { for (var t = e.display, n = t.lineDiv.offsetTop, r = 0; r < t.view.length; r++) { var i = t.view[r], o = e.options.lineWrapping, c = void 0, l = 0; if (!i.hidden) { if (a && s < 8) { var u = i.node.offsetTop + i.node.offsetHeight; c = u - n, n = u } else { var h = i.node.getBoundingClientRect(); c = h.bottom - h.top, !o && i.text.firstChild && (l = i.text.firstChild.getBoundingClientRect().right - h.left - 1) } var f = i.line.height - c; if ((f > .005 || f < -.005) && (Ze(i.line, c), Zr(i.line), i.rest)) for (var d = 0; d < i.rest.length; d++)Zr(i.rest[d]); if (l > e.display.sizerWidth) { var p = Math.ceil(l / Ar(e.display)); p > e.display.maxLineLength && (e.display.maxLineLength = p, e.display.maxLine = i.line, e.display.maxLineChanged = !0) } } } } function Zr(e) { if (e.widgets) for (var t = 0; t < e.widgets.length; ++t) { var n = e.widgets[t], r = n.node.parentNode; r && (n.height = r.offsetHeight) } } function ei(e, t, n) { var r = n && null != n.top ? Math.max(0, n.top) : e.scroller.scrollTop; r = Math.floor(r - Bn(e)); var i = n && null != n.bottom ? n.bottom : r + e.wrapper.clientHeight, o = tt(t, r), a = tt(t, i); if (n && n.ensure) { var s = n.ensure.from.line, c = n.ensure.to.line; s < o ? (o = s, a = tt(t, on(Xe(t, s)) + e.wrapper.clientHeight)) : Math.min(c, t.lastLine()) >= a && (o = tt(t, on(Xe(t, c)) - e.wrapper.clientHeight), a = c) } return { from: o, to: Math.max(a, o + 1) } } function ti(e, t) { if (!ye(e, "scrollCursorIntoView")) { var n = e.display, r = n.sizer.getBoundingClientRect(), i = null; if (t.top + r.top < 0 ? i = !0 : t.bottom + r.top > (window.innerHeight || document.documentElement.clientHeight) && (i = !1), null != i && !p) { var o = A("div", "鈥�", null, "position: absolute;\n                         top: " + (t.top - n.viewOffset - Bn(e.display)) + "px;\n                         height: " + (t.bottom - t.top + Un(e) + n.barHeight) + "px;\n                         left: " + t.left + "px; width: " + Math.max(2, t.right - t.left) + "px;"); e.display.lineSpace.appendChild(o), o.scrollIntoView(i), e.display.lineSpace.removeChild(o) } } } function ni(e, t, n, r) { var i; null == r && (r = 0), e.options.lineWrapping || t != n || (t = t.ch ? it(t.line, "before" == t.sticky ? t.ch - 1 : t.ch, "after") : t, n = "before" == t.sticky ? it(t.line, t.ch + 1, "before") : t); for (var o = 0; o < 5; o++) { var a = !1, s = yr(e, t), c = n && n != t ? yr(e, n) : s; i = { left: Math.min(s.left, c.left), top: Math.min(s.top, c.top) - r, right: Math.max(s.left, c.left), bottom: Math.max(s.bottom, c.bottom) + r }; var l = ii(e, i), u = e.doc.scrollTop, h = e.doc.scrollLeft; if (null != l.scrollTop && (hi(e, l.scrollTop), Math.abs(e.doc.scrollTop - u) > 1 && (a = !0)), null != l.scrollLeft && (di(e, l.scrollLeft), Math.abs(e.doc.scrollLeft - h) > 1 && (a = !0)), !a) break } return i } function ri(e, t) { var n = ii(e, t); null != n.scrollTop && hi(e, n.scrollTop), null != n.scrollLeft && di(e, n.scrollLeft) } function ii(e, t) { var n = e.display, r = Tr(e.display); t.top < 0 && (t.top = 0); var i = e.curOp && null != e.curOp.scrollTop ? e.curOp.scrollTop : n.scroller.scrollTop, o = Gn(e), a = {}; t.bottom - t.top > o && (t.bottom = t.top + o); var s = e.doc.height + Wn(n), c = t.top < r, l = t.bottom > s - r; if (t.top < i) a.scrollTop = c ? 0 : t.top; else if (t.bottom > i + o) { var u = Math.min(t.top, (l ? s : t.bottom) - o); u != i && (a.scrollTop = u) } var h = e.options.fixedGutter ? 0 : n.gutters.offsetWidth, f = e.curOp && null != e.curOp.scrollLeft ? e.curOp.scrollLeft : n.scroller.scrollLeft - h, d = Kn(e) - n.gutters.offsetWidth, p = t.right - t.left > d; return p && (t.right = t.left + d), t.left < 10 ? a.scrollLeft = 0 : t.left < f ? a.scrollLeft = Math.max(0, t.left + h - (p ? 0 : 10)) : t.right > d + f - 3 && (a.scrollLeft = t.right + (p ? 0 : 10) - d), a } function oi(e, t) { null != t && (li(e), e.curOp.scrollTop = (null == e.curOp.scrollTop ? e.doc.scrollTop : e.curOp.scrollTop) + t) } function ai(e) { li(e); var t = e.getCursor(); e.curOp.scrollToPos = { from: t, to: t, margin: e.options.cursorScrollMargin } } function si(e, t, n) { null == t && null == n || li(e), null != t && (e.curOp.scrollLeft = t), null != n && (e.curOp.scrollTop = n) } function ci(e, t) { li(e), e.curOp.scrollToPos = t } function li(e) { var t = e.curOp.scrollToPos; if (t) { e.curOp.scrollToPos = null; var n = br(e, t.from), r = br(e, t.to); ui(e, n, r, t.margin) } } function ui(e, t, n, r) { var i = ii(e, { left: Math.min(t.left, n.left), top: Math.min(t.top, n.top) - r, right: Math.max(t.right, n.right), bottom: Math.max(t.bottom, n.bottom) + r }); si(e, i.scrollLeft, i.scrollTop) } function hi(e, t) { Math.abs(e.doc.scrollTop - t) < 2 || (n || Yi(e, { top: t }), fi(e, t, !0), n && Yi(e), Pi(e, 100)) } function fi(e, t, n) { t = Math.max(0, Math.min(e.display.scroller.scrollHeight - e.display.scroller.clientHeight, t)), (e.display.scroller.scrollTop != t || n) && (e.doc.scrollTop = t, e.display.scrollbars.setScrollTop(t), e.display.scroller.scrollTop != t && (e.display.scroller.scrollTop = t)) } function di(e, t, n, r) { t = Math.max(0, Math.min(t, e.display.scroller.scrollWidth - e.display.scroller.clientWidth)), (n ? t == e.doc.scrollLeft : Math.abs(e.doc.scrollLeft - t) < 2) && !r || (e.doc.scrollLeft = t, qi(e), e.display.scroller.scrollLeft != t && (e.display.scroller.scrollLeft = t), e.display.scrollbars.setScrollLeft(t)) } function pi(e) { var t = e.display, n = t.gutters.offsetWidth, r = Math.round(e.doc.height + Wn(e.display)); return { clientHeight: t.scroller.clientHeight, viewHeight: t.wrapper.clientHeight, scrollWidth: t.scroller.scrollWidth, clientWidth: t.scroller.clientWidth, viewWidth: t.wrapper.clientWidth, barLeft: e.options.fixedGutter ? n : 0, docHeight: r, scrollHeight: r + Un(e) + t.barHeight, nativeBarWidth: t.nativeBarWidth, gutterWidth: n } } var vi = function (e, t, n) { this.cm = n; var r = this.vert = A("div", [A("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"), i = this.horiz = A("div", [A("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar"); r.tabIndex = i.tabIndex = -1, e(r), e(i), pe(r, "scroll", (function () { r.clientHeight && t(r.scrollTop, "vertical") })), pe(i, "scroll", (function () { i.clientWidth && t(i.scrollLeft, "horizontal") })), this.checkedZeroWidth = !1, a && s < 8 && (this.horiz.style.minHeight = this.vert.style.minWidth = "18px") }; vi.prototype.update = function (e) { var t = e.scrollWidth > e.clientWidth + 1, n = e.scrollHeight > e.clientHeight + 1, r = e.nativeBarWidth; if (n) { this.vert.style.display = "block", this.vert.style.bottom = t ? r + "px" : "0"; var i = e.viewHeight - (t ? r : 0); this.vert.firstChild.style.height = Math.max(0, e.scrollHeight - e.clientHeight + i) + "px" } else this.vert.style.display = "", this.vert.firstChild.style.height = "0"; if (t) { this.horiz.style.display = "block", this.horiz.style.right = n ? r + "px" : "0", this.horiz.style.left = e.barLeft + "px"; var o = e.viewWidth - e.barLeft - (n ? r : 0); this.horiz.firstChild.style.width = Math.max(0, e.scrollWidth - e.clientWidth + o) + "px" } else this.horiz.style.display = "", this.horiz.firstChild.style.width = "0"; return !this.checkedZeroWidth && e.clientHeight > 0 && (0 == r && this.zeroWidthHack(), this.checkedZeroWidth = !0), { right: n ? r : 0, bottom: t ? r : 0 } }, vi.prototype.setScrollLeft = function (e) { this.horiz.scrollLeft != e && (this.horiz.scrollLeft = e), this.disableHoriz && this.enableZeroWidthBar(this.horiz, this.disableHoriz, "horiz") }, vi.prototype.setScrollTop = function (e) { this.vert.scrollTop != e && (this.vert.scrollTop = e), this.disableVert && this.enableZeroWidthBar(this.vert, this.disableVert, "vert") }, vi.prototype.zeroWidthHack = function () { var e = y && !d ? "12px" : "18px"; this.horiz.style.height = this.vert.style.width = e, this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none", this.disableHoriz = new N, this.disableVert = new N }, vi.prototype.enableZeroWidthBar = function (e, t, n) { function r() { var i = e.getBoundingClientRect(), o = "vert" == n ? document.elementFromPoint(i.right - 1, (i.top + i.bottom) / 2) : document.elementFromPoint((i.right + i.left) / 2, i.bottom - 1); o != e ? e.style.pointerEvents = "none" : t.set(1e3, r) } e.style.pointerEvents = "auto", t.set(1e3, r) }, vi.prototype.clear = function () { var e = this.horiz.parentNode; e.removeChild(this.horiz), e.removeChild(this.vert) }; var mi = function () { }; function gi(e, t) { t || (t = pi(e)); var n = e.display.barWidth, r = e.display.barHeight; yi(e, t); for (var i = 0; i < 4 && n != e.display.barWidth || r != e.display.barHeight; i++)n != e.display.barWidth && e.options.lineWrapping && Qr(e), yi(e, pi(e)), n = e.display.barWidth, r = e.display.barHeight } function yi(e, t) { var n = e.display, r = n.scrollbars.update(t); n.sizer.style.paddingRight = (n.barWidth = r.right) + "px", n.sizer.style.paddingBottom = (n.barHeight = r.bottom) + "px", n.heightForcer.style.borderBottom = r.bottom + "px solid transparent", r.right && r.bottom ? (n.scrollbarFiller.style.display = "block", n.scrollbarFiller.style.height = r.bottom + "px", n.scrollbarFiller.style.width = r.right + "px") : n.scrollbarFiller.style.display = "", r.bottom && e.options.coverGutterNextToScrollbar && e.options.fixedGutter ? (n.gutterFiller.style.display = "block", n.gutterFiller.style.height = r.bottom + "px", n.gutterFiller.style.width = t.gutterWidth + "px") : n.gutterFiller.style.display = "" } mi.prototype.update = function () { return { bottom: 0, right: 0 } }, mi.prototype.setScrollLeft = function () { }, mi.prototype.setScrollTop = function () { }, mi.prototype.clear = function () { }; var bi = { native: vi, null: mi }; function xi(e) { e.display.scrollbars && (e.display.scrollbars.clear(), e.display.scrollbars.addClass && k(e.display.wrapper, e.display.scrollbars.addClass)), e.display.scrollbars = new bi[e.options.scrollbarStyle]((function (t) { e.display.wrapper.insertBefore(t, e.display.scrollbarFiller), pe(t, "mousedown", (function () { e.state.focused && setTimeout((function () { return e.display.input.focus() }), 0) })), t.setAttribute("cm-not-content", "true") }), (function (t, n) { "horizontal" == n ? di(e, t) : hi(e, t) }), e), e.display.scrollbars.addClass && E(e.display.wrapper, e.display.scrollbars.addClass) } var wi = 0; function _i(e) { e.curOp = { cm: e, viewChanged: !1, startHeight: e.doc.height, forceUpdate: !1, updateInput: 0, typing: !1, changeObjs: null, cursorActivityHandlers: null, cursorActivityCalled: 0, selectionChanged: !1, updateMaxLine: !1, scrollLeft: null, scrollTop: null, scrollToPos: null, focus: !1, id: ++wi }, Mn(e.curOp) } function Ci(e) { var t = e.curOp; t && kn(t, (function (e) { for (var t = 0; t < e.ops.length; t++)e.ops[t].cm.curOp = null; Mi(e) })) } function Mi(e) { for (var t = e.ops, n = 0; n < t.length; n++)Oi(t[n]); for (var r = 0; r < t.length; r++)ki(t[r]); for (var i = 0; i < t.length; i++)Si(t[i]); for (var o = 0; o < t.length; o++)Ti(t[o]); for (var a = 0; a < t.length; a++)Ai(t[a]) } function Oi(e) { var t = e.cm, n = t.display; Vi(t), e.updateMaxLine && sn(t), e.mustUpdate = e.viewChanged || e.forceUpdate || null != e.scrollTop || e.scrollToPos && (e.scrollToPos.from.line < n.viewFrom || e.scrollToPos.to.line >= n.viewTo) || n.maxLineChanged && t.options.lineWrapping, e.update = e.mustUpdate && new Hi(t, e.mustUpdate && { top: e.scrollTop, ensure: e.scrollToPos }, e.forceUpdate) } function ki(e) { e.updatedDisplay = e.mustUpdate && Ri(e.cm, e.update) } function Si(e) { var t = e.cm, n = t.display; e.updatedDisplay && Qr(t), e.barMeasure = pi(t), n.maxLineChanged && !t.options.lineWrapping && (e.adjustWidthTo = Zn(t, n.maxLine, n.maxLine.text.length).left + 3, t.display.sizerWidth = e.adjustWidthTo, e.barMeasure.scrollWidth = Math.max(n.scroller.clientWidth, n.sizer.offsetLeft + e.adjustWidthTo + Un(t) + t.display.barWidth), e.maxScrollLeft = Math.max(0, n.sizer.offsetLeft + e.adjustWidthTo - Kn(t))), (e.updatedDisplay || e.selectionChanged) && (e.preparedSelection = n.input.prepareSelection()) } function Ti(e) { var t = e.cm; null != e.adjustWidthTo && (t.display.sizer.style.minWidth = e.adjustWidthTo + "px", e.maxScrollLeft < t.doc.scrollLeft && di(t, Math.min(t.display.scroller.scrollLeft, e.maxScrollLeft), !0), t.display.maxLineChanged = !1); var n = e.focus && e.focus == z(); e.preparedSelection && t.display.input.showSelection(e.preparedSelection, n), (e.updatedDisplay || e.startHeight != t.doc.height) && gi(t, e.barMeasure), e.updatedDisplay && Wi(t, e.barMeasure), e.selectionChanged && Ur(t), t.state.focused && e.updateInput && t.display.input.reset(e.typing), n && Kr(e.cm) } function Ai(e) { var t = e.cm, n = t.display, r = t.doc; if (e.updatedDisplay && Fi(t, e.update), null == n.wheelStartX || null == e.scrollTop && null == e.scrollLeft && !e.scrollToPos || (n.wheelStartX = n.wheelStartY = null), null != e.scrollTop && fi(t, e.scrollTop, e.forceScroll), null != e.scrollLeft && di(t, e.scrollLeft, !0, !0), e.scrollToPos) { var i = ni(t, ht(r, e.scrollToPos.from), ht(r, e.scrollToPos.to), e.scrollToPos.margin); ti(t, i) } var o = e.maybeHiddenMarkers, a = e.maybeUnhiddenMarkers; if (o) for (var s = 0; s < o.length; ++s)o[s].lines.length || ge(o[s], "hide"); if (a) for (var c = 0; c < a.length; ++c)a[c].lines.length && ge(a[c], "unhide"); n.wrapper.offsetHeight && (r.scrollTop = t.display.scroller.scrollTop), e.changeObjs && ge(t, "changes", t, e.changeObjs), e.update && e.update.finish() } function Li(e, t) { if (e.curOp) return t(); _i(e); try { return t() } finally { Ci(e) } } function ji(e, t) { return function () { if (e.curOp) return t.apply(e, arguments); _i(e); try { return t.apply(e, arguments) } finally { Ci(e) } } } function zi(e) { return function () { if (this.curOp) return e.apply(this, arguments); _i(this); try { return e.apply(this, arguments) } finally { Ci(this) } } } function Ei(e) { return function () { var t = this.cm; if (!t || t.curOp) return e.apply(this, arguments); _i(t); try { return e.apply(this, arguments) } finally { Ci(t) } } } function Pi(e, t) { e.doc.highlightFrontier < e.display.viewTo && e.state.highlight.set(t, H(Di, e)) } function Di(e) { var t = e.doc; if (!(t.highlightFrontier >= e.display.viewTo)) { var n = +new Date + e.options.workTime, r = yt(e, t.highlightFrontier), i = []; t.iter(r.line, Math.min(t.first + t.size, e.display.viewTo + 500), (function (o) { if (r.line >= e.display.viewFrom) { var a = o.styles, s = o.text.length > e.options.maxHighlightLength ? qe(t.mode, r.state) : null, c = mt(e, o, r, !0); s && (r.state = s), o.styles = c.styles; var l = o.styleClasses, u = c.classes; u ? o.styleClasses = u : l && (o.styleClasses = null); for (var h = !a || a.length != o.styles.length || l != u && (!l || !u || l.bgClass != u.bgClass || l.textClass != u.textClass), f = 0; !h && f < a.length; ++f)h = a[f] != o.styles[f]; h && i.push(r.line), o.stateAfter = r.save(), r.nextLine() } else o.text.length <= e.options.maxHighlightLength && bt(e, o.text, r), o.stateAfter = r.line % 5 == 0 ? r.save() : null, r.nextLine(); if (+new Date > n) return Pi(e, e.options.workDelay), !0 })), t.highlightFrontier = r.line, t.modeFrontier = Math.max(t.modeFrontier, r.line), i.length && Li(e, (function () { for (var t = 0; t < i.length; t++)Vr(e, i[t], "text") })) } } var Hi = function (e, t, n) { var r = e.display; this.viewport = t, this.visible = ei(r, e.doc, t), this.editorIsHidden = !r.wrapper.offsetWidth, this.wrapperHeight = r.wrapper.clientHeight, this.wrapperWidth = r.wrapper.clientWidth, this.oldDisplayWidth = Kn(e), this.force = n, this.dims = Lr(e), this.events = [] }; function Vi(e) { var t = e.display; !t.scrollbarsClipped && t.scroller.offsetWidth && (t.nativeBarWidth = t.scroller.offsetWidth - t.scroller.clientWidth, t.heightForcer.style.height = Un(e) + "px", t.sizer.style.marginBottom = -t.nativeBarWidth + "px", t.sizer.style.borderRightWidth = Un(e) + "px", t.scrollbarsClipped = !0) } function Ii(e) { if (e.hasFocus()) return null; var t = z(); if (!t || !j(e.display.lineDiv, t)) return null; var n = { activeElt: t }; if (window.getSelection) { var r = window.getSelection(); r.anchorNode && r.extend && j(e.display.lineDiv, r.anchorNode) && (n.anchorNode = r.anchorNode, n.anchorOffset = r.anchorOffset, n.focusNode = r.focusNode, n.focusOffset = r.focusOffset) } return n } function Ni(e) { if (e && e.activeElt && e.activeElt != z() && (e.activeElt.focus(), !/^(INPUT|TEXTAREA)$/.test(e.activeElt.nodeName) && e.anchorNode && j(document.body, e.anchorNode) && j(document.body, e.focusNode))) { var t = window.getSelection(), n = document.createRange(); n.setEnd(e.anchorNode, e.anchorOffset), n.collapse(!1), t.removeAllRanges(), t.addRange(n), t.extend(e.focusNode, e.focusOffset) } } function Ri(e, t) { var n = e.display, r = e.doc; if (t.editorIsHidden) return Ir(e), !1; if (!t.force && t.visible.from >= n.viewFrom && t.visible.to <= n.viewTo && (null == n.updateLineNumbers || n.updateLineNumbers >= n.viewTo) && n.renderedView == n.view && 0 == Fr(e)) return !1; Ui(e) && (Ir(e), t.dims = Lr(e)); var i = r.first + r.size, o = Math.max(t.visible.from - e.options.viewportMargin, r.first), a = Math.min(i, t.visible.to + e.options.viewportMargin); n.viewFrom < o && o - n.viewFrom < 20 && (o = Math.max(r.first, n.viewFrom)), n.viewTo > a && n.viewTo - a < 20 && (a = Math.min(i, n.viewTo)), At && (o = en(e.doc, o), a = tn(e.doc, a)); var s = o != n.viewFrom || a != n.viewTo || n.lastWrapHeight != t.wrapperHeight || n.lastWrapWidth != t.wrapperWidth; Rr(e, o, a), n.viewOffset = on(Xe(e.doc, n.viewFrom)), e.display.mover.style.top = n.viewOffset + "px"; var c = Fr(e); if (!s && 0 == c && !t.force && n.renderedView == n.view && (null == n.updateLineNumbers || n.updateLineNumbers >= n.viewTo)) return !1; var l = Ii(e); return c > 4 && (n.lineDiv.style.display = "none"), $i(e, n.updateLineNumbers, t.dims), c > 4 && (n.lineDiv.style.display = ""), n.renderedView = n.view, Ni(l), S(n.cursorDiv), S(n.selectionDiv), n.gutters.style.height = n.sizer.style.minHeight = 0, s && (n.lastWrapHeight = t.wrapperHeight, n.lastWrapWidth = t.wrapperWidth, Pi(e, 400)), n.updateLineNumbers = null, !0 } function Fi(e, t) { for (var n = t.viewport, r = !0; ; r = !1) { if (r && e.options.lineWrapping && t.oldDisplayWidth != Kn(e)) r && (t.visible = ei(e.display, e.doc, n)); else if (n && null != n.top && (n = { top: Math.min(e.doc.height + Wn(e.display) - Gn(e), n.top) }), t.visible = ei(e.display, e.doc, n), t.visible.from >= e.display.viewFrom && t.visible.to <= e.display.viewTo) break; if (!Ri(e, t)) break; Qr(e); var i = pi(e); Yr(e), gi(e, i), Wi(e, i), t.force = !1 } t.signal(e, "update", e), e.display.viewFrom == e.display.reportedViewFrom && e.display.viewTo == e.display.reportedViewTo || (t.signal(e, "viewportChange", e, e.display.viewFrom, e.display.viewTo), e.display.reportedViewFrom = e.display.viewFrom, e.display.reportedViewTo = e.display.viewTo) } function Yi(e, t) { var n = new Hi(e, t); if (Ri(e, n)) { Qr(e), Fi(e, n); var r = pi(e); Yr(e), gi(e, r), Wi(e, r), n.finish() } } function $i(e, t, n) { var r = e.display, i = e.options.lineNumbers, o = r.lineDiv, a = o.firstChild; function s(t) { var n = t.nextSibling; return c && y && e.display.currentWheelTarget == t ? t.style.display = "none" : t.parentNode.removeChild(t), n } for (var l = r.view, u = r.viewFrom, h = 0; h < l.length; h++) { var f = l[h]; if (f.hidden); else if (f.node && f.node.parentNode == o) { while (a != f.node) a = s(a); var d = i && null != t && t <= u && f.lineNumber; f.changes && (R(f.changes, "gutter") > -1 && (d = !1), Ln(e, f, u, n)), d && (S(f.lineNumber), f.lineNumber.appendChild(document.createTextNode(rt(e.options, u)))), a = f.node.nextSibling } else { var p = In(e, f, u, n); o.insertBefore(p, a) } u += f.size } while (a) a = s(a) } function Bi(e) { var t = e.gutters.offsetWidth; e.sizer.style.marginLeft = t + "px", Tn(e, "gutterChanged", e) } function Wi(e, t) { e.display.sizer.style.minHeight = t.docHeight + "px", e.display.heightForcer.style.top = t.docHeight + "px", e.display.gutters.style.height = t.docHeight + e.display.barHeight + Un(e) + "px" } function qi(e) { var t = e.display, n = t.view; if (t.alignWidgets || t.gutters.firstChild && e.options.fixedGutter) { for (var r = jr(t) - t.scroller.scrollLeft + e.doc.scrollLeft, i = t.gutters.offsetWidth, o = r + "px", a = 0; a < n.length; a++)if (!n[a].hidden) { e.options.fixedGutter && (n[a].gutter && (n[a].gutter.style.left = o), n[a].gutterBackground && (n[a].gutterBackground.style.left = o)); var s = n[a].alignable; if (s) for (var c = 0; c < s.length; c++)s[c].style.left = o } e.options.fixedGutter && (t.gutters.style.left = r + i + "px") } } function Ui(e) { if (!e.options.lineNumbers) return !1; var t = e.doc, n = rt(e.options, t.first + t.size - 1), r = e.display; if (n.length != r.lineNumChars) { var i = r.measure.appendChild(A("div", [A("div", n)], "CodeMirror-linenumber CodeMirror-gutter-elt")), o = i.firstChild.offsetWidth, a = i.offsetWidth - o; return r.lineGutter.style.width = "", r.lineNumInnerWidth = Math.max(o, r.lineGutter.offsetWidth - a) + 1, r.lineNumWidth = r.lineNumInnerWidth + a, r.lineNumChars = r.lineNumInnerWidth ? n.length : -1, r.lineGutter.style.width = r.lineNumWidth + "px", Bi(e.display), !0 } return !1 } function Ki(e, t) { for (var n = [], r = !1, i = 0; i < e.length; i++) { var o = e[i], a = null; if ("string" != typeof o && (a = o.style, o = o.className), "CodeMirror-linenumbers" == o) { if (!t) continue; r = !0 } n.push({ className: o, style: a }) } return t && !r && n.push({ className: "CodeMirror-linenumbers", style: null }), n } function Gi(e) { var t = e.gutters, n = e.gutterSpecs; S(t), e.lineGutter = null; for (var r = 0; r < n.length; ++r) { var i = n[r], o = i.className, a = i.style, s = t.appendChild(A("div", null, "CodeMirror-gutter " + o)); a && (s.style.cssText = a), "CodeMirror-linenumbers" == o && (e.lineGutter = s, s.style.width = (e.lineNumWidth || 1) + "px") } t.style.display = n.length ? "" : "none", Bi(e) } function Xi(e) { Gi(e.display), Hr(e), qi(e) } function Ji(e, t, r, i) { var o = this; this.input = r, o.scrollbarFiller = A("div", null, "CodeMirror-scrollbar-filler"), o.scrollbarFiller.setAttribute("cm-not-content", "true"), o.gutterFiller = A("div", null, "CodeMirror-gutter-filler"), o.gutterFiller.setAttribute("cm-not-content", "true"), o.lineDiv = L("div", null, "CodeMirror-code"), o.selectionDiv = A("div", null, null, "position: relative; z-index: 1"), o.cursorDiv = A("div", null, "CodeMirror-cursors"), o.measure = A("div", null, "CodeMirror-measure"), o.lineMeasure = A("div", null, "CodeMirror-measure"), o.lineSpace = L("div", [o.measure, o.lineMeasure, o.selectionDiv, o.cursorDiv, o.lineDiv], null, "position: relative; outline: none"); var l = L("div", [o.lineSpace], "CodeMirror-lines"); o.mover = A("div", [l], null, "position: relative"), o.sizer = A("div", [o.mover], "CodeMirror-sizer"), o.sizerWidth = null, o.heightForcer = A("div", null, null, "position: absolute; height: " + F + "px; width: 1px;"), o.gutters = A("div", null, "CodeMirror-gutters"), o.lineGutter = null, o.scroller = A("div", [o.sizer, o.heightForcer, o.gutters], "CodeMirror-scroll"), o.scroller.setAttribute("tabIndex", "-1"), o.wrapper = A("div", [o.scrollbarFiller, o.gutterFiller, o.scroller], "CodeMirror"), a && s < 8 && (o.gutters.style.zIndex = -1, o.scroller.style.paddingRight = 0), c || n && g || (o.scroller.draggable = !0), e && (e.appendChild ? e.appendChild(o.wrapper) : e(o.wrapper)), o.viewFrom = o.viewTo = t.first, o.reportedViewFrom = o.reportedViewTo = t.first, o.view = [], o.renderedView = null, o.externalMeasured = null, o.viewOffset = 0, o.lastWrapHeight = o.lastWrapWidth = 0, o.updateLineNumbers = null, o.nativeBarWidth = o.barHeight = o.barWidth = 0, o.scrollbarsClipped = !1, o.lineNumWidth = o.lineNumInnerWidth = o.lineNumChars = null, o.alignWidgets = !1, o.cachedCharWidth = o.cachedTextHeight = o.cachedPaddingH = null, o.maxLine = null, o.maxLineLength = 0, o.maxLineChanged = !1, o.wheelDX = o.wheelDY = o.wheelStartX = o.wheelStartY = null, o.shift = !1, o.selForContextMenu = null, o.activeTouch = null, o.gutterSpecs = Ki(i.gutters, i.lineNumbers), Gi(o), r.init(o) } Hi.prototype.signal = function (e, t) { xe(e, t) && this.events.push(arguments) }, Hi.prototype.finish = function () { for (var e = 0; e < this.events.length; e++)ge.apply(null, this.events[e]) }; var Qi = 0, Zi = null; function eo(e) { var t = e.wheelDeltaX, n = e.wheelDeltaY; return null == t && e.detail && e.axis == e.HORIZONTAL_AXIS && (t = e.detail), null == n && e.detail && e.axis == e.VERTICAL_AXIS ? n = e.detail : null == n && (n = e.wheelDelta), { x: t, y: n } } function to(e) { var t = eo(e); return t.x *= Zi, t.y *= Zi, t } function no(e, t) { var r = eo(t), i = r.x, o = r.y, a = e.display, s = a.scroller, l = s.scrollWidth > s.clientWidth, u = s.scrollHeight > s.clientHeight; if (i && l || o && u) { if (o && y && c) e: for (var f = t.target, d = a.view; f != s; f = f.parentNode)for (var p = 0; p < d.length; p++)if (d[p].node == f) { e.display.currentWheelTarget = f; break e } if (i && !n && !h && null != Zi) return o && u && hi(e, Math.max(0, s.scrollTop + o * Zi)), di(e, Math.max(0, s.scrollLeft + i * Zi)), (!o || o && u) && _e(t), void (a.wheelStartX = null); if (o && null != Zi) { var v = o * Zi, m = e.doc.scrollTop, g = m + a.wrapper.clientHeight; v < 0 ? m = Math.max(0, m + v - 50) : g = Math.min(e.doc.height, g + v + 50), Yi(e, { top: m, bottom: g }) } Qi < 20 && (null == a.wheelStartX ? (a.wheelStartX = s.scrollLeft, a.wheelStartY = s.scrollTop, a.wheelDX = i, a.wheelDY = o, setTimeout((function () { if (null != a.wheelStartX) { var e = s.scrollLeft - a.wheelStartX, t = s.scrollTop - a.wheelStartY, n = t && a.wheelDY && t / a.wheelDY || e && a.wheelDX && e / a.wheelDX; a.wheelStartX = a.wheelStartY = null, n && (Zi = (Zi * Qi + n) / (Qi + 1), ++Qi) } }), 200)) : (a.wheelDX += i, a.wheelDY += o)) } } a ? Zi = -.53 : n ? Zi = 15 : u ? Zi = -.7 : f && (Zi = -1 / 3); var ro = function (e, t) { this.ranges = e, this.primIndex = t }; ro.prototype.primary = function () { return this.ranges[this.primIndex] }, ro.prototype.equals = function (e) { if (e == this) return !0; if (e.primIndex != this.primIndex || e.ranges.length != this.ranges.length) return !1; for (var t = 0; t < this.ranges.length; t++) { var n = this.ranges[t], r = e.ranges[t]; if (!at(n.anchor, r.anchor) || !at(n.head, r.head)) return !1 } return !0 }, ro.prototype.deepCopy = function () { for (var e = [], t = 0; t < this.ranges.length; t++)e[t] = new io(st(this.ranges[t].anchor), st(this.ranges[t].head)); return new ro(e, this.primIndex) }, ro.prototype.somethingSelected = function () { for (var e = 0; e < this.ranges.length; e++)if (!this.ranges[e].empty()) return !0; return !1 }, ro.prototype.contains = function (e, t) { t || (t = e); for (var n = 0; n < this.ranges.length; n++) { var r = this.ranges[n]; if (ot(t, r.from()) >= 0 && ot(e, r.to()) <= 0) return n } return -1 }; var io = function (e, t) { this.anchor = e, this.head = t }; function oo(e, t, n) { var r = e && e.options.selectionsMayTouch, i = t[n]; t.sort((function (e, t) { return ot(e.from(), t.from()) })), n = R(t, i); for (var o = 1; o < t.length; o++) { var a = t[o], s = t[o - 1], c = ot(s.to(), a.from()); if (r && !a.empty() ? c > 0 : c >= 0) { var l = lt(s.from(), a.from()), u = ct(s.to(), a.to()), h = s.empty() ? a.from() == a.head : s.from() == s.head; o <= n && --n, t.splice(--o, 2, new io(h ? u : l, h ? l : u)) } } return new ro(t, n) } function ao(e, t) { return new ro([new io(e, t || e)], 0) } function so(e) { return e.text ? it(e.from.line + e.text.length - 1, G(e.text).length + (1 == e.text.length ? e.from.ch : 0)) : e.to } function co(e, t) { if (ot(e, t.from) < 0) return e; if (ot(e, t.to) <= 0) return so(t); var n = e.line + t.text.length - (t.to.line - t.from.line) - 1, r = e.ch; return e.line == t.to.line && (r += so(t).ch - t.to.ch), it(n, r) } function lo(e, t) { for (var n = [], r = 0; r < e.sel.ranges.length; r++) { var i = e.sel.ranges[r]; n.push(new io(co(i.anchor, t), co(i.head, t))) } return oo(e.cm, n, e.sel.primIndex) } function uo(e, t, n) { return e.line == t.line ? it(n.line, e.ch - t.ch + n.ch) : it(n.line + (e.line - t.line), e.ch) } function ho(e, t, n) { for (var r = [], i = it(e.first, 0), o = i, a = 0; a < t.length; a++) { var s = t[a], c = uo(s.from, i, o), l = uo(so(s), i, o); if (i = s.to, o = l, "around" == n) { var u = e.sel.ranges[a], h = ot(u.head, u.anchor) < 0; r[a] = new io(h ? l : c, h ? c : l) } else r[a] = new io(c, c) } return new ro(r, e.sel.primIndex) } function fo(e) { e.doc.mode = $e(e.options, e.doc.modeOption), po(e) } function po(e) { e.doc.iter((function (e) { e.stateAfter && (e.stateAfter = null), e.styles && (e.styles = null) })), e.doc.modeFrontier = e.doc.highlightFrontier = e.doc.first, Pi(e, 100), e.state.modeGen++, e.curOp && Hr(e) } function vo(e, t) { return 0 == t.from.ch && 0 == t.to.ch && "" == G(t.text) && (!e.cm || e.cm.options.wholeLineUpdateBefore) } function mo(e, t, n, r) { function i(e) { return n ? n[e] : null } function o(e, n, i) { ln(e, n, i, r), Tn(e, "change", e, t) } function a(e, t) { for (var n = [], o = e; o < t; ++o)n.push(new cn(l[o], i(o), r)); return n } var s = t.from, c = t.to, l = t.text, u = Xe(e, s.line), h = Xe(e, c.line), f = G(l), d = i(l.length - 1), p = c.line - s.line; if (t.full) e.insert(0, a(0, l.length)), e.remove(l.length, e.size - l.length); else if (vo(e, t)) { var v = a(0, l.length - 1); o(h, h.text, d), p && e.remove(s.line, p), v.length && e.insert(s.line, v) } else if (u == h) if (1 == l.length) o(u, u.text.slice(0, s.ch) + f + u.text.slice(c.ch), d); else { var m = a(1, l.length - 1); m.push(new cn(f + u.text.slice(c.ch), d, r)), o(u, u.text.slice(0, s.ch) + l[0], i(0)), e.insert(s.line + 1, m) } else if (1 == l.length) o(u, u.text.slice(0, s.ch) + l[0] + h.text.slice(c.ch), i(0)), e.remove(s.line + 1, p); else { o(u, u.text.slice(0, s.ch) + l[0], i(0)), o(h, f + h.text.slice(c.ch), d); var g = a(1, l.length - 1); p > 1 && e.remove(s.line + 1, p - 1), e.insert(s.line + 1, g) } Tn(e, "change", e, t) } function go(e, t, n) { function r(e, i, o) { if (e.linked) for (var a = 0; a < e.linked.length; ++a) { var s = e.linked[a]; if (s.doc != i) { var c = o && s.sharedHist; n && !c || (t(s.doc, c), r(s.doc, e, c)) } } } r(e, null, !0) } function yo(e, t) { if (t.cm) throw new Error("This document is already in use."); e.doc = t, t.cm = e, Er(e), fo(e), bo(e), e.options.lineWrapping || sn(e), e.options.mode = t.modeOption, Hr(e) } function bo(e) { ("rtl" == e.doc.direction ? E : k)(e.display.lineDiv, "CodeMirror-rtl") } function xo(e) { Li(e, (function () { bo(e), Hr(e) })) } function wo(e) { this.done = [], this.undone = [], this.undoDepth = e ? e.undoDepth : 1 / 0, this.lastModTime = this.lastSelTime = 0, this.lastOp = this.lastSelOp = null, this.lastOrigin = this.lastSelOrigin = null, this.generation = this.maxGeneration = e ? e.maxGeneration : 1 } function _o(e, t) { var n = { from: st(t.from), to: so(t), text: Je(e, t.from, t.to) }; return Ao(e, n, t.from.line, t.to.line + 1), go(e, (function (e) { return Ao(e, n, t.from.line, t.to.line + 1) }), !0), n } function Co(e) { while (e.length) { var t = G(e); if (!t.ranges) break; e.pop() } } function Mo(e, t) { return t ? (Co(e.done), G(e.done)) : e.done.length && !G(e.done).ranges ? G(e.done) : e.done.length > 1 && !e.done[e.done.length - 2].ranges ? (e.done.pop(), G(e.done)) : void 0 } function Oo(e, t, n, r) { var i = e.history; i.undone.length = 0; var o, a, s = +new Date; if ((i.lastOp == r || i.lastOrigin == t.origin && t.origin && ("+" == t.origin.charAt(0) && i.lastModTime > s - (e.cm ? e.cm.options.historyEventDelay : 500) || "*" == t.origin.charAt(0))) && (o = Mo(i, i.lastOp == r))) a = G(o.changes), 0 == ot(t.from, t.to) && 0 == ot(t.from, a.to) ? a.to = so(t) : o.changes.push(_o(e, t)); else { var c = G(i.done); c && c.ranges || To(e.sel, i.done), o = { changes: [_o(e, t)], generation: i.generation }, i.done.push(o); while (i.done.length > i.undoDepth) i.done.shift(), i.done[0].ranges || i.done.shift() } i.done.push(n), i.generation = ++i.maxGeneration, i.lastModTime = i.lastSelTime = s, i.lastOp = i.lastSelOp = r, i.lastOrigin = i.lastSelOrigin = t.origin, a || ge(e, "historyAdded") } function ko(e, t, n, r) { var i = t.charAt(0); return "*" == i || "+" == i && n.ranges.length == r.ranges.length && n.somethingSelected() == r.somethingSelected() && new Date - e.history.lastSelTime <= (e.cm ? e.cm.options.historyEventDelay : 500) } function So(e, t, n, r) { var i = e.history, o = r && r.origin; n == i.lastSelOp || o && i.lastSelOrigin == o && (i.lastModTime == i.lastSelTime && i.lastOrigin == o || ko(e, o, G(i.done), t)) ? i.done[i.done.length - 1] = t : To(t, i.done), i.lastSelTime = +new Date, i.lastSelOrigin = o, i.lastSelOp = n, r && !1 !== r.clearRedo && Co(i.undone) } function To(e, t) { var n = G(t); n && n.ranges && n.equals(e) || t.push(e) } function Ao(e, t, n, r) { var i = t["spans_" + e.id], o = 0; e.iter(Math.max(e.first, n), Math.min(e.first + e.size, r), (function (n) { n.markedSpans && ((i || (i = t["spans_" + e.id] = {}))[o] = n.markedSpans), ++o })) } function Lo(e) { if (!e) return null; for (var t, n = 0; n < e.length; ++n)e[n].marker.explicitlyCleared ? t || (t = e.slice(0, n)) : t && t.push(e[n]); return t ? t.length ? t : null : e } function jo(e, t) { var n = t["spans_" + e.id]; if (!n) return null; for (var r = [], i = 0; i < t.text.length; ++i)r.push(Lo(n[i])); return r } function zo(e, t) { var n = jo(e, t), r = It(e, t); if (!n) return r; if (!r) return n; for (var i = 0; i < n.length; ++i) { var o = n[i], a = r[i]; if (o && a) e: for (var s = 0; s < a.length; ++s) { for (var c = a[s], l = 0; l < o.length; ++l)if (o[l].marker == c.marker) continue e; o.push(c) } else a && (n[i] = a) } return n } function Eo(e, t, n) { for (var r = [], i = 0; i < e.length; ++i) { var o = e[i]; if (o.ranges) r.push(n ? ro.prototype.deepCopy.call(o) : o); else { var a = o.changes, s = []; r.push({ changes: s }); for (var c = 0; c < a.length; ++c) { var l = a[c], u = void 0; if (s.push({ from: l.from, to: l.to, text: l.text }), t) for (var h in l) (u = h.match(/^spans_(\d+)$/)) && R(t, Number(u[1])) > -1 && (G(s)[h] = l[h], delete l[h]) } } } return r } function Po(e, t, n, r) { if (r) { var i = e.anchor; if (n) { var o = ot(t, i) < 0; o != ot(n, i) < 0 ? (i = t, t = n) : o != ot(t, n) < 0 && (t = n) } return new io(i, t) } return new io(n || t, t) } function Do(e, t, n, r, i) { null == i && (i = e.cm && (e.cm.display.shift || e.extend)), Fo(e, new ro([Po(e.sel.primary(), t, n, i)], 0), r) } function Ho(e, t, n) { for (var r = [], i = e.cm && (e.cm.display.shift || e.extend), o = 0; o < e.sel.ranges.length; o++)r[o] = Po(e.sel.ranges[o], t[o], null, i); var a = oo(e.cm, r, e.sel.primIndex); Fo(e, a, n) } function Vo(e, t, n, r) { var i = e.sel.ranges.slice(0); i[t] = n, Fo(e, oo(e.cm, i, e.sel.primIndex), r) } function Io(e, t, n, r) { Fo(e, ao(t, n), r) } function No(e, t, n) { var r = { ranges: t.ranges, update: function (t) { this.ranges = []; for (var n = 0; n < t.length; n++)this.ranges[n] = new io(ht(e, t[n].anchor), ht(e, t[n].head)) }, origin: n && n.origin }; return ge(e, "beforeSelectionChange", e, r), e.cm && ge(e.cm, "beforeSelectionChange", e.cm, r), r.ranges != t.ranges ? oo(e.cm, r.ranges, r.ranges.length - 1) : t } function Ro(e, t, n) { var r = e.history.done, i = G(r); i && i.ranges ? (r[r.length - 1] = t, Yo(e, t, n)) : Fo(e, t, n) } function Fo(e, t, n) { Yo(e, t, n), So(e, e.sel, e.cm ? e.cm.curOp.id : NaN, n) } function Yo(e, t, n) { (xe(e, "beforeSelectionChange") || e.cm && xe(e.cm, "beforeSelectionChange")) && (t = No(e, t, n)); var r = n && n.bias || (ot(t.primary().head, e.sel.primary().head) < 0 ? -1 : 1); $o(e, Wo(e, t, r, !0)), n && !1 === n.scroll || !e.cm || "nocursor" == e.cm.getOption("readOnly") || ai(e.cm) } function $o(e, t) { t.equals(e.sel) || (e.sel = t, e.cm && (e.cm.curOp.updateInput = 1, e.cm.curOp.selectionChanged = !0, be(e.cm)), Tn(e, "cursorActivity", e)) } function Bo(e) { $o(e, Wo(e, e.sel, null, !1)) } function Wo(e, t, n, r) { for (var i, o = 0; o < t.ranges.length; o++) { var a = t.ranges[o], s = t.ranges.length == e.sel.ranges.length && e.sel.ranges[o], c = Uo(e, a.anchor, s && s.anchor, n, r), l = Uo(e, a.head, s && s.head, n, r); (i || c != a.anchor || l != a.head) && (i || (i = t.ranges.slice(0, o)), i[o] = new io(c, l)) } return i ? oo(e.cm, i, t.primIndex) : t } function qo(e, t, n, r, i) { var o = Xe(e, t.line); if (o.markedSpans) for (var a = 0; a < o.markedSpans.length; ++a) { var s = o.markedSpans[a], c = s.marker, l = "selectLeft" in c ? !c.selectLeft : c.inclusiveLeft, u = "selectRight" in c ? !c.selectRight : c.inclusiveRight; if ((null == s.from || (l ? s.from <= t.ch : s.from < t.ch)) && (null == s.to || (u ? s.to >= t.ch : s.to > t.ch))) { if (i && (ge(c, "beforeCursorEnter"), c.explicitlyCleared)) { if (o.markedSpans) { --a; continue } break } if (!c.atomic) continue; if (n) { var h = c.find(r < 0 ? 1 : -1), f = void 0; if ((r < 0 ? u : l) && (h = Ko(e, h, -r, h && h.line == t.line ? o : null)), h && h.line == t.line && (f = ot(h, n)) && (r < 0 ? f < 0 : f > 0)) return qo(e, h, t, r, i) } var d = c.find(r < 0 ? -1 : 1); return (r < 0 ? l : u) && (d = Ko(e, d, r, d.line == t.line ? o : null)), d ? qo(e, d, t, r, i) : null } } return t } function Uo(e, t, n, r, i) { var o = r || 1, a = qo(e, t, n, o, i) || !i && qo(e, t, n, o, !0) || qo(e, t, n, -o, i) || !i && qo(e, t, n, -o, !0); return a || (e.cantEdit = !0, it(e.first, 0)) } function Ko(e, t, n, r) { return n < 0 && 0 == t.ch ? t.line > e.first ? ht(e, it(t.line - 1)) : null : n > 0 && t.ch == (r || Xe(e, t.line)).text.length ? t.line < e.first + e.size - 1 ? it(t.line + 1, 0) : null : new it(t.line, t.ch + n) } function Go(e) { e.setSelection(it(e.firstLine(), 0), it(e.lastLine()), $) } function Xo(e, t, n) { var r = { canceled: !1, from: t.from, to: t.to, text: t.text, origin: t.origin, cancel: function () { return r.canceled = !0 } }; return n && (r.update = function (t, n, i, o) { t && (r.from = ht(e, t)), n && (r.to = ht(e, n)), i && (r.text = i), void 0 !== o && (r.origin = o) }), ge(e, "beforeChange", e, r), e.cm && ge(e.cm, "beforeChange", e.cm, r), r.canceled ? (e.cm && (e.cm.curOp.updateInput = 2), null) : { from: r.from, to: r.to, text: r.text, origin: r.origin } } function Jo(e, t, n) { if (e.cm) { if (!e.cm.curOp) return ji(e.cm, Jo)(e, t, n); if (e.cm.state.suppressEdits) return } if (!(xe(e, "beforeChange") || e.cm && xe(e.cm, "beforeChange")) || (t = Xo(e, t, !0), t)) { var r = Tt && !n && Rt(e, t.from, t.to); if (r) for (var i = r.length - 1; i >= 0; --i)Qo(e, { from: r[i].from, to: r[i].to, text: i ? [""] : t.text, origin: t.origin }); else Qo(e, t) } } function Qo(e, t) { if (1 != t.text.length || "" != t.text[0] || 0 != ot(t.from, t.to)) { var n = lo(e, t); Oo(e, t, n, e.cm ? e.cm.curOp.id : NaN), ta(e, t, n, It(e, t)); var r = []; go(e, (function (e, n) { n || -1 != R(r, e.history) || (aa(e.history, t), r.push(e.history)), ta(e, t, null, It(e, t)) })) } } function Zo(e, t, n) { var r = e.cm && e.cm.state.suppressEdits; if (!r || n) { for (var i, o = e.history, a = e.sel, s = "undo" == t ? o.done : o.undone, c = "undo" == t ? o.undone : o.done, l = 0; l < s.length; l++)if (i = s[l], n ? i.ranges && !i.equals(e.sel) : !i.ranges) break; if (l != s.length) { for (o.lastOrigin = o.lastSelOrigin = null; ;) { if (i = s.pop(), !i.ranges) { if (r) return void s.push(i); break } if (To(i, c), n && !i.equals(e.sel)) return void Fo(e, i, { clearRedo: !1 }); a = i } var u = []; To(a, c), c.push({ changes: u, generation: o.generation }), o.generation = i.generation || ++o.maxGeneration; for (var h = xe(e, "beforeChange") || e.cm && xe(e.cm, "beforeChange"), f = function (n) { var r = i.changes[n]; if (r.origin = t, h && !Xo(e, r, !1)) return s.length = 0, {}; u.push(_o(e, r)); var o = n ? lo(e, r) : G(s); ta(e, r, o, zo(e, r)), !n && e.cm && e.cm.scrollIntoView({ from: r.from, to: so(r) }); var a = []; go(e, (function (e, t) { t || -1 != R(a, e.history) || (aa(e.history, r), a.push(e.history)), ta(e, r, null, zo(e, r)) })) }, d = i.changes.length - 1; d >= 0; --d) { var p = f(d); if (p) return p.v } } } } function ea(e, t) { if (0 != t && (e.first += t, e.sel = new ro(X(e.sel.ranges, (function (e) { return new io(it(e.anchor.line + t, e.anchor.ch), it(e.head.line + t, e.head.ch)) })), e.sel.primIndex), e.cm)) { Hr(e.cm, e.first, e.first - t, t); for (var n = e.cm.display, r = n.viewFrom; r < n.viewTo; r++)Vr(e.cm, r, "gutter") } } function ta(e, t, n, r) { if (e.cm && !e.cm.curOp) return ji(e.cm, ta)(e, t, n, r); if (t.to.line < e.first) ea(e, t.text.length - 1 - (t.to.line - t.from.line)); else if (!(t.from.line > e.lastLine())) { if (t.from.line < e.first) { var i = t.text.length - 1 - (e.first - t.from.line); ea(e, i), t = { from: it(e.first, 0), to: it(t.to.line + i, t.to.ch), text: [G(t.text)], origin: t.origin } } var o = e.lastLine(); t.to.line > o && (t = { from: t.from, to: it(o, Xe(e, o).text.length), text: [t.text[0]], origin: t.origin }), t.removed = Je(e, t.from, t.to), n || (n = lo(e, t)), e.cm ? na(e.cm, t, r) : mo(e, t, r), Yo(e, n, $), e.cantEdit && Uo(e, it(e.firstLine(), 0)) && (e.cantEdit = !1) } } function na(e, t, n) { var r = e.doc, i = e.display, o = t.from, a = t.to, s = !1, c = o.line; e.options.lineWrapping || (c = et(Jt(Xe(r, o.line))), r.iter(c, a.line + 1, (function (e) { if (e == i.maxLine) return s = !0, !0 }))), r.sel.contains(t.from, t.to) > -1 && be(e), mo(r, t, n, zr(e)), e.options.lineWrapping || (r.iter(c, o.line + t.text.length, (function (e) { var t = an(e); t > i.maxLineLength && (i.maxLine = e, i.maxLineLength = t, i.maxLineChanged = !0, s = !1) })), s && (e.curOp.updateMaxLine = !0)), St(r, o.line), Pi(e, 400); var l = t.text.length - (a.line - o.line) - 1; t.full ? Hr(e) : o.line != a.line || 1 != t.text.length || vo(e.doc, t) ? Hr(e, o.line, a.line + 1, l) : Vr(e, o.line, "text"); var u = xe(e, "changes"), h = xe(e, "change"); if (h || u) { var f = { from: o, to: a, text: t.text, removed: t.removed, origin: t.origin }; h && Tn(e, "change", e, f), u && (e.curOp.changeObjs || (e.curOp.changeObjs = [])).push(f) } e.display.selForContextMenu = null } function ra(e, t, n, r, i) { var o; r || (r = n), ot(r, n) < 0 && (o = [r, n], n = o[0], r = o[1]), "string" == typeof t && (t = e.splitLines(t)), Jo(e, { from: n, to: r, text: t, origin: i }) } function ia(e, t, n, r) { n < e.line ? e.line += r : t < e.line && (e.line = t, e.ch = 0) } function oa(e, t, n, r) { for (var i = 0; i < e.length; ++i) { var o = e[i], a = !0; if (o.ranges) { o.copied || (o = e[i] = o.deepCopy(), o.copied = !0); for (var s = 0; s < o.ranges.length; s++)ia(o.ranges[s].anchor, t, n, r), ia(o.ranges[s].head, t, n, r) } else { for (var c = 0; c < o.changes.length; ++c) { var l = o.changes[c]; if (n < l.from.line) l.from = it(l.from.line + r, l.from.ch), l.to = it(l.to.line + r, l.to.ch); else if (t <= l.to.line) { a = !1; break } } a || (e.splice(0, i + 1), i = 0) } } } function aa(e, t) { var n = t.from.line, r = t.to.line, i = t.text.length - (r - n) - 1; oa(e.done, n, r, i), oa(e.undone, n, r, i) } function sa(e, t, n, r) { var i = t, o = t; return "number" == typeof t ? o = Xe(e, ut(e, t)) : i = et(t), null == i ? null : (r(o, i) && e.cm && Vr(e.cm, i, n), o) } function ca(e) { this.lines = e, this.parent = null; for (var t = 0, n = 0; n < e.length; ++n)e[n].parent = this, t += e[n].height; this.height = t } function la(e) { this.children = e; for (var t = 0, n = 0, r = 0; r < e.length; ++r) { var i = e[r]; t += i.chunkSize(), n += i.height, i.parent = this } this.size = t, this.height = n, this.parent = null } io.prototype.from = function () { return lt(this.anchor, this.head) }, io.prototype.to = function () { return ct(this.anchor, this.head) }, io.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch }, ca.prototype = { chunkSize: function () { return this.lines.length }, removeInner: function (e, t) { for (var n = e, r = e + t; n < r; ++n) { var i = this.lines[n]; this.height -= i.height, un(i), Tn(i, "delete") } this.lines.splice(e, t) }, collapse: function (e) { e.push.apply(e, this.lines) }, insertInner: function (e, t, n) { this.height += n, this.lines = this.lines.slice(0, e).concat(t).concat(this.lines.slice(e)); for (var r = 0; r < t.length; ++r)t[r].parent = this }, iterN: function (e, t, n) { for (var r = e + t; e < r; ++e)if (n(this.lines[e])) return !0 } }, la.prototype = { chunkSize: function () { return this.size }, removeInner: function (e, t) { this.size -= t; for (var n = 0; n < this.children.length; ++n) { var r = this.children[n], i = r.chunkSize(); if (e < i) { var o = Math.min(t, i - e), a = r.height; if (r.removeInner(e, o), this.height -= a - r.height, i == o && (this.children.splice(n--, 1), r.parent = null), 0 == (t -= o)) break; e = 0 } else e -= i } if (this.size - t < 25 && (this.children.length > 1 || !(this.children[0] instanceof ca))) { var s = []; this.collapse(s), this.children = [new ca(s)], this.children[0].parent = this } }, collapse: function (e) { for (var t = 0; t < this.children.length; ++t)this.children[t].collapse(e) }, insertInner: function (e, t, n) { this.size += t.length, this.height += n; for (var r = 0; r < this.children.length; ++r) { var i = this.children[r], o = i.chunkSize(); if (e <= o) { if (i.insertInner(e, t, n), i.lines && i.lines.length > 50) { for (var a = i.lines.length % 25 + 25, s = a; s < i.lines.length;) { var c = new ca(i.lines.slice(s, s += 25)); i.height -= c.height, this.children.splice(++r, 0, c), c.parent = this } i.lines = i.lines.slice(0, a), this.maybeSpill() } break } e -= o } }, maybeSpill: function () { if (!(this.children.length <= 10)) { var e = this; do { var t = e.children.splice(e.children.length - 5, 5), n = new la(t); if (e.parent) { e.size -= n.size, e.height -= n.height; var r = R(e.parent.children, e); e.parent.children.splice(r + 1, 0, n) } else { var i = new la(e.children); i.parent = e, e.children = [i, n], e = i } n.parent = e.parent } while (e.children.length > 10); e.parent.maybeSpill() } }, iterN: function (e, t, n) { for (var r = 0; r < this.children.length; ++r) { var i = this.children[r], o = i.chunkSize(); if (e < o) { var a = Math.min(t, o - e); if (i.iterN(e, a, n)) return !0; if (0 == (t -= a)) break; e = 0 } else e -= o } } }; var ua = function (e, t, n) { if (n) for (var r in n) n.hasOwnProperty(r) && (this[r] = n[r]); this.doc = e, this.node = t }; function ha(e, t, n) { on(t) < (e.curOp && e.curOp.scrollTop || e.doc.scrollTop) && oi(e, n) } function fa(e, t, n, r) { var i = new ua(e, n, r), o = e.cm; return o && i.noHScroll && (o.display.alignWidgets = !0), sa(e, t, "widget", (function (t) { var n = t.widgets || (t.widgets = []); if (null == i.insertAt ? n.push(i) : n.splice(Math.min(n.length, Math.max(0, i.insertAt)), 0, i), i.line = t, o && !nn(e, t)) { var r = on(t) < e.scrollTop; Ze(t, t.height + Yn(i)), r && oi(o, i.height), o.curOp.forceUpdate = !0 } return !0 })), o && Tn(o, "lineWidgetAdded", o, i, "number" == typeof t ? t : et(t)), i } ua.prototype.clear = function () { var e = this.doc.cm, t = this.line.widgets, n = this.line, r = et(n); if (null != r && t) { for (var i = 0; i < t.length; ++i)t[i] == this && t.splice(i--, 1); t.length || (n.widgets = null); var o = Yn(this); Ze(n, Math.max(0, n.height - o)), e && (Li(e, (function () { ha(e, n, -o), Vr(e, r, "widget") })), Tn(e, "lineWidgetCleared", e, this, r)) } }, ua.prototype.changed = function () { var e = this, t = this.height, n = this.doc.cm, r = this.line; this.height = null; var i = Yn(this) - t; i && (nn(this.doc, r) || Ze(r, r.height + i), n && Li(n, (function () { n.curOp.forceUpdate = !0, ha(n, r, i), Tn(n, "lineWidgetChanged", n, e, et(r)) }))) }, we(ua); var da = 0, pa = function (e, t) { this.lines = [], this.type = t, this.doc = e, this.id = ++da }; function va(e, t, n, r, i) { if (r && r.shared) return ga(e, t, n, r, i); if (e.cm && !e.cm.curOp) return ji(e.cm, va)(e, t, n, r, i); var o = new pa(e, i), a = ot(t, n); if (r && V(r, o, !1), a > 0 || 0 == a && !1 !== o.clearWhenEmpty) return o; if (o.replacedWith && (o.collapsed = !0, o.widgetNode = L("span", [o.replacedWith], "CodeMirror-widget"), r.handleMouseEvents || o.widgetNode.setAttribute("cm-ignore-events", "true"), r.insertLeft && (o.widgetNode.insertLeft = !0)), o.collapsed) { if (Xt(e, t.line, t, n, o) || t.line != n.line && Xt(e, n.line, t, n, o)) throw new Error("Inserting collapsed marker partially overlapping an existing one"); jt() } o.addToHistory && Oo(e, { from: t, to: n, origin: "markText" }, e.sel, NaN); var s, c = t.line, l = e.cm; if (e.iter(c, n.line + 1, (function (e) { l && o.collapsed && !l.options.lineWrapping && Jt(e) == l.display.maxLine && (s = !0), o.collapsed && c != t.line && Ze(e, 0), Dt(e, new zt(o, c == t.line ? t.ch : null, c == n.line ? n.ch : null)), ++c })), o.collapsed && e.iter(t.line, n.line + 1, (function (t) { nn(e, t) && Ze(t, 0) })), o.clearOnEnter && pe(o, "beforeCursorEnter", (function () { return o.clear() })), o.readOnly && (Lt(), (e.history.done.length || e.history.undone.length) && e.clearHistory()), o.collapsed && (o.id = ++da, o.atomic = !0), l) { if (s && (l.curOp.updateMaxLine = !0), o.collapsed) Hr(l, t.line, n.line + 1); else if (o.className || o.startStyle || o.endStyle || o.css || o.attributes || o.title) for (var u = t.line; u <= n.line; u++)Vr(l, u, "text"); o.atomic && Bo(l.doc), Tn(l, "markerAdded", l, o) } return o } pa.prototype.clear = function () { if (!this.explicitlyCleared) { var e = this.doc.cm, t = e && !e.curOp; if (t && _i(e), xe(this, "clear")) { var n = this.find(); n && Tn(this, "clear", n.from, n.to) } for (var r = null, i = null, o = 0; o < this.lines.length; ++o) { var a = this.lines[o], s = Et(a.markedSpans, this); e && !this.collapsed ? Vr(e, et(a), "text") : e && (null != s.to && (i = et(a)), null != s.from && (r = et(a))), a.markedSpans = Pt(a.markedSpans, s), null == s.from && this.collapsed && !nn(this.doc, a) && e && Ze(a, Tr(e.display)) } if (e && this.collapsed && !e.options.lineWrapping) for (var c = 0; c < this.lines.length; ++c) { var l = Jt(this.lines[c]), u = an(l); u > e.display.maxLineLength && (e.display.maxLine = l, e.display.maxLineLength = u, e.display.maxLineChanged = !0) } null != r && e && this.collapsed && Hr(e, r, i + 1), this.lines.length = 0, this.explicitlyCleared = !0, this.atomic && this.doc.cantEdit && (this.doc.cantEdit = !1, e && Bo(e.doc)), e && Tn(e, "markerCleared", e, this, r, i), t && Ci(e), this.parent && this.parent.clear() } }, pa.prototype.find = function (e, t) { var n, r; null == e && "bookmark" == this.type && (e = 1); for (var i = 0; i < this.lines.length; ++i) { var o = this.lines[i], a = Et(o.markedSpans, this); if (null != a.from && (n = it(t ? o : et(o), a.from), -1 == e)) return n; if (null != a.to && (r = it(t ? o : et(o), a.to), 1 == e)) return r } return n && { from: n, to: r } }, pa.prototype.changed = function () { var e = this, t = this.find(-1, !0), n = this, r = this.doc.cm; t && r && Li(r, (function () { var i = t.line, o = et(t.line), a = er(r, o); if (a && (lr(a), r.curOp.selectionChanged = r.curOp.forceUpdate = !0), r.curOp.updateMaxLine = !0, !nn(n.doc, i) && null != n.height) { var s = n.height; n.height = null; var c = Yn(n) - s; c && Ze(i, i.height + c) } Tn(r, "markerChanged", r, e) })) }, pa.prototype.attachLine = function (e) { if (!this.lines.length && this.doc.cm) { var t = this.doc.cm.curOp; t.maybeHiddenMarkers && -1 != R(t.maybeHiddenMarkers, this) || (t.maybeUnhiddenMarkers || (t.maybeUnhiddenMarkers = [])).push(this) } this.lines.push(e) }, pa.prototype.detachLine = function (e) { if (this.lines.splice(R(this.lines, e), 1), !this.lines.length && this.doc.cm) { var t = this.doc.cm.curOp; (t.maybeHiddenMarkers || (t.maybeHiddenMarkers = [])).push(this) } }, we(pa); var ma = function (e, t) { this.markers = e, this.primary = t; for (var n = 0; n < e.length; ++n)e[n].parent = this }; function ga(e, t, n, r, i) { r = V(r), r.shared = !1; var o = [va(e, t, n, r, i)], a = o[0], s = r.widgetNode; return go(e, (function (e) { s && (r.widgetNode = s.cloneNode(!0)), o.push(va(e, ht(e, t), ht(e, n), r, i)); for (var c = 0; c < e.linked.length; ++c)if (e.linked[c].isParent) return; a = G(o) })), new ma(o, a) } function ya(e) { return e.findMarks(it(e.first, 0), e.clipPos(it(e.lastLine())), (function (e) { return e.parent })) } function ba(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n], i = r.find(), o = e.clipPos(i.from), a = e.clipPos(i.to); if (ot(o, a)) { var s = va(e, o, a, r.primary, r.primary.type); r.markers.push(s), s.parent = r } } } function xa(e) { for (var t = function (t) { var n = e[t], r = [n.primary.doc]; go(n.primary.doc, (function (e) { return r.push(e) })); for (var i = 0; i < n.markers.length; i++) { var o = n.markers[i]; -1 == R(r, o.doc) && (o.parent = null, n.markers.splice(i--, 1)) } }, n = 0; n < e.length; n++)t(n) } ma.prototype.clear = function () { if (!this.explicitlyCleared) { this.explicitlyCleared = !0; for (var e = 0; e < this.markers.length; ++e)this.markers[e].clear(); Tn(this, "clear") } }, ma.prototype.find = function (e, t) { return this.primary.find(e, t) }, we(ma); var wa = 0, _a = function (e, t, n, r, i) { if (!(this instanceof _a)) return new _a(e, t, n, r, i); null == n && (n = 0), la.call(this, [new ca([new cn("", null)])]), this.first = n, this.scrollTop = this.scrollLeft = 0, this.cantEdit = !1, this.cleanGeneration = 1, this.modeFrontier = this.highlightFrontier = n; var o = it(n, 0); this.sel = ao(o), this.history = new wo(null), this.id = ++wa, this.modeOption = t, this.lineSep = r, this.direction = "rtl" == i ? "rtl" : "ltr", this.extend = !1, "string" == typeof e && (e = this.splitLines(e)), mo(this, { from: o, to: o, text: e }), Fo(this, ao(o), $) }; _a.prototype = Z(la.prototype, { constructor: _a, iter: function (e, t, n) { n ? this.iterN(e - this.first, t - e, n) : this.iterN(this.first, this.first + this.size, e) }, insert: function (e, t) { for (var n = 0, r = 0; r < t.length; ++r)n += t[r].height; this.insertInner(e - this.first, t, n) }, remove: function (e, t) { this.removeInner(e - this.first, t) }, getValue: function (e) { var t = Qe(this, this.first, this.first + this.size); return !1 === e ? t : t.join(e || this.lineSeparator()) }, setValue: Ei((function (e) { var t = it(this.first, 0), n = this.first + this.size - 1; Jo(this, { from: t, to: it(n, Xe(this, n).text.length), text: this.splitLines(e), origin: "setValue", full: !0 }, !0), this.cm && si(this.cm, 0, 0), Fo(this, ao(t), $) })), replaceRange: function (e, t, n, r) { t = ht(this, t), n = n ? ht(this, n) : t, ra(this, e, t, n, r) }, getRange: function (e, t, n) { var r = Je(this, ht(this, e), ht(this, t)); return !1 === n ? r : r.join(n || this.lineSeparator()) }, getLine: function (e) { var t = this.getLineHandle(e); return t && t.text }, getLineHandle: function (e) { if (nt(this, e)) return Xe(this, e) }, getLineNumber: function (e) { return et(e) }, getLineHandleVisualStart: function (e) { return "number" == typeof e && (e = Xe(this, e)), Jt(e) }, lineCount: function () { return this.size }, firstLine: function () { return this.first }, lastLine: function () { return this.first + this.size - 1 }, clipPos: function (e) { return ht(this, e) }, getCursor: function (e) { var t, n = this.sel.primary(); return t = null == e || "head" == e ? n.head : "anchor" == e ? n.anchor : "end" == e || "to" == e || !1 === e ? n.to() : n.from(), t }, listSelections: function () { return this.sel.ranges }, somethingSelected: function () { return this.sel.somethingSelected() }, setCursor: Ei((function (e, t, n) { Io(this, ht(this, "number" == typeof e ? it(e, t || 0) : e), null, n) })), setSelection: Ei((function (e, t, n) { Io(this, ht(this, e), ht(this, t || e), n) })), extendSelection: Ei((function (e, t, n) { Do(this, ht(this, e), t && ht(this, t), n) })), extendSelections: Ei((function (e, t) { Ho(this, dt(this, e), t) })), extendSelectionsBy: Ei((function (e, t) { var n = X(this.sel.ranges, e); Ho(this, dt(this, n), t) })), setSelections: Ei((function (e, t, n) { if (e.length) { for (var r = [], i = 0; i < e.length; i++)r[i] = new io(ht(this, e[i].anchor), ht(this, e[i].head || e[i].anchor)); null == t && (t = Math.min(e.length - 1, this.sel.primIndex)), Fo(this, oo(this.cm, r, t), n) } })), addSelection: Ei((function (e, t, n) { var r = this.sel.ranges.slice(0); r.push(new io(ht(this, e), ht(this, t || e))), Fo(this, oo(this.cm, r, r.length - 1), n) })), getSelection: function (e) { for (var t, n = this.sel.ranges, r = 0; r < n.length; r++) { var i = Je(this, n[r].from(), n[r].to()); t = t ? t.concat(i) : i } return !1 === e ? t : t.join(e || this.lineSeparator()) }, getSelections: function (e) { for (var t = [], n = this.sel.ranges, r = 0; r < n.length; r++) { var i = Je(this, n[r].from(), n[r].to()); !1 !== e && (i = i.join(e || this.lineSeparator())), t[r] = i } return t }, replaceSelection: function (e, t, n) { for (var r = [], i = 0; i < this.sel.ranges.length; i++)r[i] = e; this.replaceSelections(r, t, n || "+input") }, replaceSelections: Ei((function (e, t, n) { for (var r = [], i = this.sel, o = 0; o < i.ranges.length; o++) { var a = i.ranges[o]; r[o] = { from: a.from(), to: a.to(), text: this.splitLines(e[o]), origin: n } } for (var s = t && "end" != t && ho(this, r, t), c = r.length - 1; c >= 0; c--)Jo(this, r[c]); s ? Ro(this, s) : this.cm && ai(this.cm) })), undo: Ei((function () { Zo(this, "undo") })), redo: Ei((function () { Zo(this, "redo") })), undoSelection: Ei((function () { Zo(this, "undo", !0) })), redoSelection: Ei((function () { Zo(this, "redo", !0) })), setExtending: function (e) { this.extend = e }, getExtending: function () { return this.extend }, historySize: function () { for (var e = this.history, t = 0, n = 0, r = 0; r < e.done.length; r++)e.done[r].ranges || ++t; for (var i = 0; i < e.undone.length; i++)e.undone[i].ranges || ++n; return { undo: t, redo: n } }, clearHistory: function () { var e = this; this.history = new wo(this.history), go(this, (function (t) { return t.history = e.history }), !0) }, markClean: function () { this.cleanGeneration = this.changeGeneration(!0) }, changeGeneration: function (e) { return e && (this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null), this.history.generation }, isClean: function (e) { return this.history.generation == (e || this.cleanGeneration) }, getHistory: function () { return { done: Eo(this.history.done), undone: Eo(this.history.undone) } }, setHistory: function (e) { var t = this.history = new wo(this.history); t.done = Eo(e.done.slice(0), null, !0), t.undone = Eo(e.undone.slice(0), null, !0) }, setGutterMarker: Ei((function (e, t, n) { return sa(this, e, "gutter", (function (e) { var r = e.gutterMarkers || (e.gutterMarkers = {}); return r[t] = n, !n && re(r) && (e.gutterMarkers = null), !0 })) })), clearGutter: Ei((function (e) { var t = this; this.iter((function (n) { n.gutterMarkers && n.gutterMarkers[e] && sa(t, n, "gutter", (function () { return n.gutterMarkers[e] = null, re(n.gutterMarkers) && (n.gutterMarkers = null), !0 })) })) })), lineInfo: function (e) { var t; if ("number" == typeof e) { if (!nt(this, e)) return null; if (t = e, e = Xe(this, e), !e) return null } else if (t = et(e), null == t) return null; return { line: t, handle: e, text: e.text, gutterMarkers: e.gutterMarkers, textClass: e.textClass, bgClass: e.bgClass, wrapClass: e.wrapClass, widgets: e.widgets } }, addLineClass: Ei((function (e, t, n) { return sa(this, e, "gutter" == t ? "gutter" : "class", (function (e) { var r = "text" == t ? "textClass" : "background" == t ? "bgClass" : "gutter" == t ? "gutterClass" : "wrapClass"; if (e[r]) { if (M(n).test(e[r])) return !1; e[r] += " " + n } else e[r] = n; return !0 })) })), removeLineClass: Ei((function (e, t, n) { return sa(this, e, "gutter" == t ? "gutter" : "class", (function (e) { var r = "text" == t ? "textClass" : "background" == t ? "bgClass" : "gutter" == t ? "gutterClass" : "wrapClass", i = e[r]; if (!i) return !1; if (null == n) e[r] = null; else { var o = i.match(M(n)); if (!o) return !1; var a = o.index + o[0].length; e[r] = i.slice(0, o.index) + (o.index && a != i.length ? " " : "") + i.slice(a) || null } return !0 })) })), addLineWidget: Ei((function (e, t, n) { return fa(this, e, t, n) })), removeLineWidget: function (e) { e.clear() }, markText: function (e, t, n) { return va(this, ht(this, e), ht(this, t), n, n && n.type || "range") }, setBookmark: function (e, t) { var n = { replacedWith: t && (null == t.nodeType ? t.widget : t), insertLeft: t && t.insertLeft, clearWhenEmpty: !1, shared: t && t.shared, handleMouseEvents: t && t.handleMouseEvents }; return e = ht(this, e), va(this, e, e, n, "bookmark") }, findMarksAt: function (e) { e = ht(this, e); var t = [], n = Xe(this, e.line).markedSpans; if (n) for (var r = 0; r < n.length; ++r) { var i = n[r]; (null == i.from || i.from <= e.ch) && (null == i.to || i.to >= e.ch) && t.push(i.marker.parent || i.marker) } return t }, findMarks: function (e, t, n) { e = ht(this, e), t = ht(this, t); var r = [], i = e.line; return this.iter(e.line, t.line + 1, (function (o) { var a = o.markedSpans; if (a) for (var s = 0; s < a.length; s++) { var c = a[s]; null != c.to && i == e.line && e.ch >= c.to || null == c.from && i != e.line || null != c.from && i == t.line && c.from >= t.ch || n && !n(c.marker) || r.push(c.marker.parent || c.marker) } ++i })), r }, getAllMarks: function () { var e = []; return this.iter((function (t) { var n = t.markedSpans; if (n) for (var r = 0; r < n.length; ++r)null != n[r].from && e.push(n[r].marker) })), e }, posFromIndex: function (e) { var t, n = this.first, r = this.lineSeparator().length; return this.iter((function (i) { var o = i.text.length + r; if (o > e) return t = e, !0; e -= o, ++n })), ht(this, it(n, t)) }, indexFromPos: function (e) { e = ht(this, e); var t = e.ch; if (e.line < this.first || e.ch < 0) return 0; var n = this.lineSeparator().length; return this.iter(this.first, e.line, (function (e) { t += e.text.length + n })), t }, copy: function (e) { var t = new _a(Qe(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction); return t.scrollTop = this.scrollTop, t.scrollLeft = this.scrollLeft, t.sel = this.sel, t.extend = !1, e && (t.history.undoDepth = this.history.undoDepth, t.setHistory(this.getHistory())), t }, linkedDoc: function (e) { e || (e = {}); var t = this.first, n = this.first + this.size; null != e.from && e.from > t && (t = e.from), null != e.to && e.to < n && (n = e.to); var r = new _a(Qe(this, t, n), e.mode || this.modeOption, t, this.lineSep, this.direction); return e.sharedHist && (r.history = this.history), (this.linked || (this.linked = [])).push({ doc: r, sharedHist: e.sharedHist }), r.linked = [{ doc: this, isParent: !0, sharedHist: e.sharedHist }], ba(r, ya(this)), r }, unlinkDoc: function (e) { if (e instanceof Hs && (e = e.doc), this.linked) for (var t = 0; t < this.linked.length; ++t) { var n = this.linked[t]; if (n.doc == e) { this.linked.splice(t, 1), e.unlinkDoc(this), xa(ya(this)); break } } if (e.history == this.history) { var r = [e.id]; go(e, (function (e) { return r.push(e.id) }), !0), e.history = new wo(null), e.history.done = Eo(this.history.done, r), e.history.undone = Eo(this.history.undone, r) } }, iterLinkedDocs: function (e) { go(this, e) }, getMode: function () { return this.mode }, getEditor: function () { return this.cm }, splitLines: function (e) { return this.lineSep ? e.split(this.lineSep) : Ee(e) }, lineSeparator: function () { return this.lineSep || "\n" }, setDirection: Ei((function (e) { "rtl" != e && (e = "ltr"), e != this.direction && (this.direction = e, this.iter((function (e) { return e.order = null })), this.cm && xo(this.cm)) })) }), _a.prototype.eachLine = _a.prototype.iter; var Ca = 0; function Ma(e) { var t = this; if (Sa(t), !ye(t, e) && !$n(t.display, e)) { _e(e), a && (Ca = +new Date); var n = Pr(t, e, !0), r = e.dataTransfer.files; if (n && !t.isReadOnly()) if (r && r.length && window.FileReader && window.File) for (var i = r.length, o = Array(i), s = 0, c = function () { ++s == i && ji(t, (function () { n = ht(t.doc, n); var e = { from: n, to: n, text: t.doc.splitLines(o.filter((function (e) { return null != e })).join(t.doc.lineSeparator())), origin: "paste" }; Jo(t.doc, e), Ro(t.doc, ao(ht(t.doc, n), ht(t.doc, so(e)))) }))() }, l = function (e, n) { if (t.options.allowDropFileTypes && -1 == R(t.options.allowDropFileTypes, e.type)) c(); else { var r = new FileReader; r.onerror = function () { return c() }, r.onload = function () { var e = r.result; /[\x00-\x08\x0e-\x1f]{2}/.test(e) || (o[n] = e), c() }, r.readAsText(e) } }, u = 0; u < r.length; u++)l(r[u], u); else { if (t.state.draggingText && t.doc.sel.contains(n) > -1) return t.state.draggingText(e), void setTimeout((function () { return t.display.input.focus() }), 20); try { var h = e.dataTransfer.getData("Text"); if (h) { var f; if (t.state.draggingText && !t.state.draggingText.copy && (f = t.listSelections()), Yo(t.doc, ao(n, n)), f) for (var d = 0; d < f.length; ++d)ra(t.doc, "", f[d].anchor, f[d].head, "drag"); t.replaceSelection(h, "around", "paste"), t.display.input.focus() } } catch (p) { } } } } function Oa(e, t) { if (a && (!e.state.draggingText || +new Date - Ca < 100)) Oe(t); else if (!ye(e, t) && !$n(e.display, t) && (t.dataTransfer.setData("Text", e.getSelection()), t.dataTransfer.effectAllowed = "copyMove", t.dataTransfer.setDragImage && !f)) { var n = A("img", null, null, "position: fixed; left: 0; top: 0;"); n.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==", h && (n.width = n.height = 1, e.display.wrapper.appendChild(n), n._top = n.offsetTop), t.dataTransfer.setDragImage(n, 0, 0), h && n.parentNode.removeChild(n) } } function ka(e, t) { var n = Pr(e, t); if (n) { var r = document.createDocumentFragment(); Br(e, n, r), e.display.dragCursor || (e.display.dragCursor = A("div", null, "CodeMirror-cursors CodeMirror-dragcursors"), e.display.lineSpace.insertBefore(e.display.dragCursor, e.display.cursorDiv)), T(e.display.dragCursor, r) } } function Sa(e) { e.display.dragCursor && (e.display.lineSpace.removeChild(e.display.dragCursor), e.display.dragCursor = null) } function Ta(e) { if (document.getElementsByClassName) { for (var t = document.getElementsByClassName("CodeMirror"), n = [], r = 0; r < t.length; r++) { var i = t[r].CodeMirror; i && n.push(i) } n.length && n[0].operation((function () { for (var t = 0; t < n.length; t++)e(n[t]) })) } } var Aa = !1; function La() { Aa || (ja(), Aa = !0) } function ja() { var e; pe(window, "resize", (function () { null == e && (e = setTimeout((function () { e = null, Ta(za) }), 100)) })), pe(window, "blur", (function () { return Ta(Jr) })) } function za(e) { var t = e.display; t.cachedCharWidth = t.cachedTextHeight = t.cachedPaddingH = null, t.scrollbarsClipped = !1, e.setSize() } for (var Ea = { 3: "Pause", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", 106: "*", 107: "=", 109: "-", 110: ".", 111: "/", 145: "ScrollLock", 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", 221: "]", 222: "'", 224: "Mod", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert" }, Pa = 0; Pa < 10; Pa++)Ea[Pa + 48] = Ea[Pa + 96] = String(Pa); for (var Da = 65; Da <= 90; Da++)Ea[Da] = String.fromCharCode(Da); for (var Ha = 1; Ha <= 12; Ha++)Ea[Ha + 111] = Ea[Ha + 63235] = "F" + Ha; var Va = {}; function Ia(e) { var t, n, r, i, o = e.split(/-(?!$)/); e = o[o.length - 1]; for (var a = 0; a < o.length - 1; a++) { var s = o[a]; if (/^(cmd|meta|m)$/i.test(s)) i = !0; else if (/^a(lt)?$/i.test(s)) t = !0; else if (/^(c|ctrl|control)$/i.test(s)) n = !0; else { if (!/^s(hift)?$/i.test(s)) throw new Error("Unrecognized modifier name: " + s); r = !0 } } return t && (e = "Alt-" + e), n && (e = "Ctrl-" + e), i && (e = "Cmd-" + e), r && (e = "Shift-" + e), e } function Na(e) { var t = {}; for (var n in e) if (e.hasOwnProperty(n)) { var r = e[n]; if (/^(name|fallthrough|(de|at)tach)$/.test(n)) continue; if ("..." == r) { delete e[n]; continue } for (var i = X(n.split(" "), Ia), o = 0; o < i.length; o++) { var a = void 0, s = void 0; o == i.length - 1 ? (s = i.join(" "), a = r) : (s = i.slice(0, o + 1).join(" "), a = "..."); var c = t[s]; if (c) { if (c != a) throw new Error("Inconsistent bindings for " + s) } else t[s] = a } delete e[n] } for (var l in t) e[l] = t[l]; return e } function Ra(e, t, n, r) { t = Ba(t); var i = t.call ? t.call(e, r) : t[e]; if (!1 === i) return "nothing"; if ("..." === i) return "multi"; if (null != i && n(i)) return "handled"; if (t.fallthrough) { if ("[object Array]" != Object.prototype.toString.call(t.fallthrough)) return Ra(e, t.fallthrough, n, r); for (var o = 0; o < t.fallthrough.length; o++) { var a = Ra(e, t.fallthrough[o], n, r); if (a) return a } } } function Fa(e) { var t = "string" == typeof e ? e : Ea[e.keyCode]; return "Ctrl" == t || "Alt" == t || "Shift" == t || "Mod" == t } function Ya(e, t, n) { var r = e; return t.altKey && "Alt" != r && (e = "Alt-" + e), (_ ? t.metaKey : t.ctrlKey) && "Ctrl" != r && (e = "Ctrl-" + e), (_ ? t.ctrlKey : t.metaKey) && "Mod" != r && (e = "Cmd-" + e), !n && t.shiftKey && "Shift" != r && (e = "Shift-" + e), e } function $a(e, t) { if (h && 34 == e.keyCode && e["char"]) return !1; var n = Ea[e.keyCode]; return null != n && !e.altGraphKey && (3 == e.keyCode && e.code && (n = e.code), Ya(n, e, t)) } function Ba(e) { return "string" == typeof e ? Va[e] : e } function Wa(e, t) { for (var n = e.doc.sel.ranges, r = [], i = 0; i < n.length; i++) { var o = t(n[i]); while (r.length && ot(o.from, G(r).to) <= 0) { var a = r.pop(); if (ot(a.from, o.from) < 0) { o.from = a.from; break } } r.push(o) } Li(e, (function () { for (var t = r.length - 1; t >= 0; t--)ra(e.doc, "", r[t].from, r[t].to, "+delete"); ai(e) })) } function qa(e, t, n) { var r = ae(e.text, t + n, n); return r < 0 || r > e.text.length ? null : r } function Ua(e, t, n) { var r = qa(e, t.ch, n); return null == r ? null : new it(t.line, r, n < 0 ? "after" : "before") } function Ka(e, t, n, r, i) { if (e) { "rtl" == t.doc.direction && (i = -i); var o = fe(n, t.doc.direction); if (o) { var a, s = i < 0 ? G(o) : o[0], c = i < 0 == (1 == s.level), l = c ? "after" : "before"; if (s.level > 0 || "rtl" == t.doc.direction) { var u = tr(t, n); a = i < 0 ? n.text.length - 1 : 0; var h = nr(t, u, a).top; a = se((function (e) { return nr(t, u, e).top == h }), i < 0 == (1 == s.level) ? s.from : s.to - 1, a), "before" == l && (a = qa(n, a, 1)) } else a = i < 0 ? s.to : s.from; return new it(r, a, l) } } return new it(r, i < 0 ? n.text.length : 0, i < 0 ? "before" : "after") } function Ga(e, t, n, r) { var i = fe(t, e.doc.direction); if (!i) return Ua(t, n, r); n.ch >= t.text.length ? (n.ch = t.text.length, n.sticky = "before") : n.ch <= 0 && (n.ch = 0, n.sticky = "after"); var o = ue(i, n.ch, n.sticky), a = i[o]; if ("ltr" == e.doc.direction && a.level % 2 == 0 && (r > 0 ? a.to > n.ch : a.from < n.ch)) return Ua(t, n, r); var s, c = function (e, n) { return qa(t, e instanceof it ? e.ch : e, n) }, l = function (n) { return e.options.lineWrapping ? (s = s || tr(e, t), Cr(e, t, s, n)) : { begin: 0, end: t.text.length } }, u = l("before" == n.sticky ? c(n, -1) : n.ch); if ("rtl" == e.doc.direction || 1 == a.level) { var h = 1 == a.level == r < 0, f = c(n, h ? 1 : -1); if (null != f && (h ? f <= a.to && f <= u.end : f >= a.from && f >= u.begin)) { var d = h ? "before" : "after"; return new it(n.line, f, d) } } var p = function (e, t, r) { for (var o = function (e, t) { return t ? new it(n.line, c(e, 1), "before") : new it(n.line, e, "after") }; e >= 0 && e < i.length; e += t) { var a = i[e], s = t > 0 == (1 != a.level), l = s ? r.begin : c(r.end, -1); if (a.from <= l && l < a.to) return o(l, s); if (l = s ? a.from : c(a.to, -1), r.begin <= l && l < r.end) return o(l, s) } }, v = p(o + r, r, u); if (v) return v; var m = r > 0 ? u.end : c(u.begin, -1); return null == m || r > 0 && m == t.text.length || (v = p(r > 0 ? 0 : i.length - 1, r, l(m)), !v) ? null : v } Va.basic = { Left: "goCharLeft", Right: "goCharRight", Up: "goLineUp", Down: "goLineDown", End: "goLineEnd", Home: "goLineStartSmart", PageUp: "goPageUp", PageDown: "goPageDown", Delete: "delCharAfter", Backspace: "delCharBefore", "Shift-Backspace": "delCharBefore", Tab: "defaultTab", "Shift-Tab": "indentAuto", Enter: "newlineAndIndent", Insert: "toggleOverwrite", Esc: "singleSelection" }, Va.pcDefault = { "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", fallthrough: "basic" }, Va.emacsy = { "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars", "Ctrl-O": "openLine" }, Va.macDefault = { "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", fallthrough: ["basic", "emacsy"] }, Va["default"] = y ? Va.macDefault : Va.pcDefault; var Xa = { selectAll: Go, singleSelection: function (e) { return e.setSelection(e.getCursor("anchor"), e.getCursor("head"), $) }, killLine: function (e) { return Wa(e, (function (t) { if (t.empty()) { var n = Xe(e.doc, t.head.line).text.length; return t.head.ch == n && t.head.line < e.lastLine() ? { from: t.head, to: it(t.head.line + 1, 0) } : { from: t.head, to: it(t.head.line, n) } } return { from: t.from(), to: t.to() } })) }, deleteLine: function (e) { return Wa(e, (function (t) { return { from: it(t.from().line, 0), to: ht(e.doc, it(t.to().line + 1, 0)) } })) }, delLineLeft: function (e) { return Wa(e, (function (e) { return { from: it(e.from().line, 0), to: e.from() } })) }, delWrappedLineLeft: function (e) { return Wa(e, (function (t) { var n = e.charCoords(t.head, "div").top + 5, r = e.coordsChar({ left: 0, top: n }, "div"); return { from: r, to: t.from() } })) }, delWrappedLineRight: function (e) { return Wa(e, (function (t) { var n = e.charCoords(t.head, "div").top + 5, r = e.coordsChar({ left: e.display.lineDiv.offsetWidth + 100, top: n }, "div"); return { from: t.from(), to: r } })) }, undo: function (e) { return e.undo() }, redo: function (e) { return e.redo() }, undoSelection: function (e) { return e.undoSelection() }, redoSelection: function (e) { return e.redoSelection() }, goDocStart: function (e) { return e.extendSelection(it(e.firstLine(), 0)) }, goDocEnd: function (e) { return e.extendSelection(it(e.lastLine())) }, goLineStart: function (e) { return e.extendSelectionsBy((function (t) { return Ja(e, t.head.line) }), { origin: "+move", bias: 1 }) }, goLineStartSmart: function (e) { return e.extendSelectionsBy((function (t) { return Za(e, t.head) }), { origin: "+move", bias: 1 }) }, goLineEnd: function (e) { return e.extendSelectionsBy((function (t) { return Qa(e, t.head.line) }), { origin: "+move", bias: -1 }) }, goLineRight: function (e) { return e.extendSelectionsBy((function (t) { var n = e.cursorCoords(t.head, "div").top + 5; return e.coordsChar({ left: e.display.lineDiv.offsetWidth + 100, top: n }, "div") }), W) }, goLineLeft: function (e) { return e.extendSelectionsBy((function (t) { var n = e.cursorCoords(t.head, "div").top + 5; return e.coordsChar({ left: 0, top: n }, "div") }), W) }, goLineLeftSmart: function (e) { return e.extendSelectionsBy((function (t) { var n = e.cursorCoords(t.head, "div").top + 5, r = e.coordsChar({ left: 0, top: n }, "div"); return r.ch < e.getLine(r.line).search(/\S/) ? Za(e, t.head) : r }), W) }, goLineUp: function (e) { return e.moveV(-1, "line") }, goLineDown: function (e) { return e.moveV(1, "line") }, goPageUp: function (e) { return e.moveV(-1, "page") }, goPageDown: function (e) { return e.moveV(1, "page") }, goCharLeft: function (e) { return e.moveH(-1, "char") }, goCharRight: function (e) { return e.moveH(1, "char") }, goColumnLeft: function (e) { return e.moveH(-1, "column") }, goColumnRight: function (e) { return e.moveH(1, "column") }, goWordLeft: function (e) { return e.moveH(-1, "word") }, goGroupRight: function (e) { return e.moveH(1, "group") }, goGroupLeft: function (e) { return e.moveH(-1, "group") }, goWordRight: function (e) { return e.moveH(1, "word") }, delCharBefore: function (e) { return e.deleteH(-1, "codepoint") }, delCharAfter: function (e) { return e.deleteH(1, "char") }, delWordBefore: function (e) { return e.deleteH(-1, "word") }, delWordAfter: function (e) { return e.deleteH(1, "word") }, delGroupBefore: function (e) { return e.deleteH(-1, "group") }, delGroupAfter: function (e) { return e.deleteH(1, "group") }, indentAuto: function (e) { return e.indentSelection("smart") }, indentMore: function (e) { return e.indentSelection("add") }, indentLess: function (e) { return e.indentSelection("subtract") }, insertTab: function (e) { return e.replaceSelection("\t") }, insertSoftTab: function (e) { for (var t = [], n = e.listSelections(), r = e.options.tabSize, i = 0; i < n.length; i++) { var o = n[i].from(), a = I(e.getLine(o.line), o.ch, r); t.push(K(r - a % r)) } e.replaceSelections(t) }, defaultTab: function (e) { e.somethingSelected() ? e.indentSelection("add") : e.execCommand("insertTab") }, transposeChars: function (e) { return Li(e, (function () { for (var t = e.listSelections(), n = [], r = 0; r < t.length; r++)if (t[r].empty()) { var i = t[r].head, o = Xe(e.doc, i.line).text; if (o) if (i.ch == o.length && (i = new it(i.line, i.ch - 1)), i.ch > 0) i = new it(i.line, i.ch + 1), e.replaceRange(o.charAt(i.ch - 1) + o.charAt(i.ch - 2), it(i.line, i.ch - 2), i, "+transpose"); else if (i.line > e.doc.first) { var a = Xe(e.doc, i.line - 1).text; a && (i = new it(i.line, 1), e.replaceRange(o.charAt(0) + e.doc.lineSeparator() + a.charAt(a.length - 1), it(i.line - 1, a.length - 1), i, "+transpose")) } n.push(new io(i, i)) } e.setSelections(n) })) }, newlineAndIndent: function (e) { return Li(e, (function () { for (var t = e.listSelections(), n = t.length - 1; n >= 0; n--)e.replaceRange(e.doc.lineSeparator(), t[n].anchor, t[n].head, "+input"); t = e.listSelections(); for (var r = 0; r < t.length; r++)e.indentLine(t[r].from().line, null, !0); ai(e) })) }, openLine: function (e) { return e.replaceSelection("\n", "start") }, toggleOverwrite: function (e) { return e.toggleOverwrite() } }; function Ja(e, t) { var n = Xe(e.doc, t), r = Jt(n); return r != n && (t = et(r)), Ka(!0, e, r, t, 1) } function Qa(e, t) { var n = Xe(e.doc, t), r = Qt(n); return r != n && (t = et(r)), Ka(!0, e, n, t, -1) } function Za(e, t) { var n = Ja(e, t.line), r = Xe(e.doc, n.line), i = fe(r, e.doc.direction); if (!i || 0 == i[0].level) { var o = Math.max(n.ch, r.text.search(/\S/)), a = t.line == n.line && t.ch <= o && t.ch; return it(n.line, a ? 0 : o, n.sticky) } return n } function es(e, t, n) { if ("string" == typeof t && (t = Xa[t], !t)) return !1; e.display.input.ensurePolled(); var r = e.display.shift, i = !1; try { e.isReadOnly() && (e.state.suppressEdits = !0), n && (e.display.shift = !1), i = t(e) != Y } finally { e.display.shift = r, e.state.suppressEdits = !1 } return i } function ts(e, t, n) { for (var r = 0; r < e.state.keyMaps.length; r++) { var i = Ra(t, e.state.keyMaps[r], n, e); if (i) return i } return e.options.extraKeys && Ra(t, e.options.extraKeys, n, e) || Ra(t, e.options.keyMap, n, e) } var ns = new N; function rs(e, t, n, r) { var i = e.state.keySeq; if (i) { if (Fa(t)) return "handled"; if (/\'$/.test(t) ? e.state.keySeq = null : ns.set(50, (function () { e.state.keySeq == i && (e.state.keySeq = null, e.display.input.reset()) })), is(e, i + " " + t, n, r)) return !0 } return is(e, t, n, r) } function is(e, t, n, r) { var i = ts(e, t, r); return "multi" == i && (e.state.keySeq = t), "handled" == i && Tn(e, "keyHandled", e, t, n), "handled" != i && "multi" != i || (_e(n), Ur(e)), !!i } function os(e, t) { var n = $a(t, !0); return !!n && (t.shiftKey && !e.state.keySeq ? rs(e, "Shift-" + n, t, (function (t) { return es(e, t, !0) })) || rs(e, n, t, (function (t) { if ("string" == typeof t ? /^go[A-Z]/.test(t) : t.motion) return es(e, t) })) : rs(e, n, t, (function (t) { return es(e, t) }))) } function as(e, t, n) { return rs(e, "'" + n + "'", t, (function (t) { return es(e, t, !0) })) } var ss = null; function cs(e) { var t = this; if ((!e.target || e.target == t.display.input.getField()) && (t.curOp.focus = z(), !ye(t, e))) { a && s < 11 && 27 == e.keyCode && (e.returnValue = !1); var r = e.keyCode; t.display.shift = 16 == r || e.shiftKey; var i = os(t, e); h && (ss = i ? r : null, i || 88 != r || De || !(y ? e.metaKey : e.ctrlKey) || t.replaceSelection("", null, "cut")), n && !y && !i && 46 == r && e.shiftKey && !e.ctrlKey && document.execCommand && document.execCommand("cut"), 18 != r || /\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className) || ls(t) } } function ls(e) { var t = e.display.lineDiv; function n(e) { 18 != e.keyCode && e.altKey || (k(t, "CodeMirror-crosshair"), me(document, "keyup", n), me(document, "mouseover", n)) } E(t, "CodeMirror-crosshair"), pe(document, "keyup", n), pe(document, "mouseover", n) } function us(e) { 16 == e.keyCode && (this.doc.sel.shift = !1), ye(this, e) } function hs(e) { var t = this; if ((!e.target || e.target == t.display.input.getField()) && !($n(t.display, e) || ye(t, e) || e.ctrlKey && !e.altKey || y && e.metaKey)) { var n = e.keyCode, r = e.charCode; if (h && n == ss) return ss = null, void _e(e); if (!h || e.which && !(e.which < 10) || !os(t, e)) { var i = String.fromCharCode(null == r ? n : r); "\b" != i && (as(t, e, i) || t.display.input.onKeyPress(e)) } } } var fs, ds, ps = 400, vs = function (e, t, n) { this.time = e, this.pos = t, this.button = n }; function ms(e, t) { var n = +new Date; return ds && ds.compare(n, e, t) ? (fs = ds = null, "triple") : fs && fs.compare(n, e, t) ? (ds = new vs(n, e, t), fs = null, "double") : (fs = new vs(n, e, t), ds = null, "single") } function gs(e) { var t = this, n = t.display; if (!(ye(t, e) || n.activeTouch && n.input.supportsTouch())) if (n.input.ensurePolled(), n.shift = e.shiftKey, $n(n, e)) c || (n.scroller.draggable = !1, setTimeout((function () { return n.scroller.draggable = !0 }), 100)); else if (!ks(t, e)) { var r = Pr(t, e), i = Se(e), o = r ? ms(r, i) : "single"; window.focus(), 1 == i && t.state.selectingText && t.state.selectingText(e), r && ys(t, i, r, o, e) || (1 == i ? r ? xs(t, r, o, e) : ke(e) == n.scroller && _e(e) : 2 == i ? (r && Do(t.doc, r), setTimeout((function () { return n.input.focus() }), 20)) : 3 == i && (C ? t.display.input.onContextMenu(e) : Gr(t))) } } function ys(e, t, n, r, i) { var o = "Click"; return "double" == r ? o = "Double" + o : "triple" == r && (o = "Triple" + o), o = (1 == t ? "Left" : 2 == t ? "Middle" : "Right") + o, rs(e, Ya(o, i), i, (function (t) { if ("string" == typeof t && (t = Xa[t]), !t) return !1; var r = !1; try { e.isReadOnly() && (e.state.suppressEdits = !0), r = t(e, n) != Y } finally { e.state.suppressEdits = !1 } return r })) } function bs(e, t, n) { var r = e.getOption("configureMouse"), i = r ? r(e, t, n) : {}; if (null == i.unit) { var o = b ? n.shiftKey && n.metaKey : n.altKey; i.unit = o ? "rectangle" : "single" == t ? "char" : "double" == t ? "word" : "line" } return (null == i.extend || e.doc.extend) && (i.extend = e.doc.extend || n.shiftKey), null == i.addNew && (i.addNew = y ? n.metaKey : n.ctrlKey), null == i.moveOnDrag && (i.moveOnDrag = !(y ? n.altKey : n.ctrlKey)), i } function xs(e, t, n, r) { a ? setTimeout(H(Kr, e), 0) : e.curOp.focus = z(); var i, o = bs(e, n, r), s = e.doc.sel; e.options.dragDrop && Le && !e.isReadOnly() && "single" == n && (i = s.contains(t)) > -1 && (ot((i = s.ranges[i]).from(), t) < 0 || t.xRel > 0) && (ot(i.to(), t) > 0 || t.xRel < 0) ? ws(e, r, t, o) : Cs(e, r, t, o) } function ws(e, t, n, r) { var i = e.display, o = !1, l = ji(e, (function (t) { c && (i.scroller.draggable = !1), e.state.draggingText = !1, e.state.delayingBlurEvent && (e.hasFocus() ? e.state.delayingBlurEvent = !1 : Gr(e)), me(i.wrapper.ownerDocument, "mouseup", l), me(i.wrapper.ownerDocument, "mousemove", u), me(i.scroller, "dragstart", h), me(i.scroller, "drop", l), o || (_e(t), r.addNew || Do(e.doc, n, null, null, r.extend), c && !f || a && 9 == s ? setTimeout((function () { i.wrapper.ownerDocument.body.focus({ preventScroll: !0 }), i.input.focus() }), 20) : i.input.focus()) })), u = function (e) { o = o || Math.abs(t.clientX - e.clientX) + Math.abs(t.clientY - e.clientY) >= 10 }, h = function () { return o = !0 }; c && (i.scroller.draggable = !0), e.state.draggingText = l, l.copy = !r.moveOnDrag, pe(i.wrapper.ownerDocument, "mouseup", l), pe(i.wrapper.ownerDocument, "mousemove", u), pe(i.scroller, "dragstart", h), pe(i.scroller, "drop", l), e.state.delayingBlurEvent = !0, setTimeout((function () { return i.input.focus() }), 20), i.scroller.dragDrop && i.scroller.dragDrop() } function _s(e, t, n) { if ("char" == n) return new io(t, t); if ("word" == n) return e.findWordAt(t); if ("line" == n) return new io(it(t.line, 0), ht(e.doc, it(t.line + 1, 0))); var r = n(e, t); return new io(r.from, r.to) } function Cs(e, t, n, r) { a && Gr(e); var i = e.display, o = e.doc; _e(t); var s, c, l = o.sel, u = l.ranges; if (r.addNew && !r.extend ? (c = o.sel.contains(n), s = c > -1 ? u[c] : new io(n, n)) : (s = o.sel.primary(), c = o.sel.primIndex), "rectangle" == r.unit) r.addNew || (s = new io(n, n)), n = Pr(e, t, !0, !0), c = -1; else { var h = _s(e, n, r.unit); s = r.extend ? Po(s, h.anchor, h.head, r.extend) : h } r.addNew ? -1 == c ? (c = u.length, Fo(o, oo(e, u.concat([s]), c), { scroll: !1, origin: "*mouse" })) : u.length > 1 && u[c].empty() && "char" == r.unit && !r.extend ? (Fo(o, oo(e, u.slice(0, c).concat(u.slice(c + 1)), 0), { scroll: !1, origin: "*mouse" }), l = o.sel) : Vo(o, c, s, B) : (c = 0, Fo(o, new ro([s], 0), B), l = o.sel); var f = n; function d(t) { if (0 != ot(f, t)) if (f = t, "rectangle" == r.unit) { for (var i = [], a = e.options.tabSize, u = I(Xe(o, n.line).text, n.ch, a), h = I(Xe(o, t.line).text, t.ch, a), d = Math.min(u, h), p = Math.max(u, h), v = Math.min(n.line, t.line), m = Math.min(e.lastLine(), Math.max(n.line, t.line)); v <= m; v++) { var g = Xe(o, v).text, y = q(g, d, a); d == p ? i.push(new io(it(v, y), it(v, y))) : g.length > y && i.push(new io(it(v, y), it(v, q(g, p, a)))) } i.length || i.push(new io(n, n)), Fo(o, oo(e, l.ranges.slice(0, c).concat(i), c), { origin: "*mouse", scroll: !1 }), e.scrollIntoView(t) } else { var b, x = s, w = _s(e, t, r.unit), _ = x.anchor; ot(w.anchor, _) > 0 ? (b = w.head, _ = lt(x.from(), w.anchor)) : (b = w.anchor, _ = ct(x.to(), w.head)); var C = l.ranges.slice(0); C[c] = Ms(e, new io(ht(o, _), b)), Fo(o, oo(e, C, c), B) } } var p = i.wrapper.getBoundingClientRect(), v = 0; function m(t) { var n = ++v, a = Pr(e, t, !0, "rectangle" == r.unit); if (a) if (0 != ot(a, f)) { e.curOp.focus = z(), d(a); var s = ei(i, o); (a.line >= s.to || a.line < s.from) && setTimeout(ji(e, (function () { v == n && m(t) })), 150) } else { var c = t.clientY < p.top ? -20 : t.clientY > p.bottom ? 20 : 0; c && setTimeout(ji(e, (function () { v == n && (i.scroller.scrollTop += c, m(t)) })), 50) } } function g(t) { e.state.selectingText = !1, v = 1 / 0, t && (_e(t), i.input.focus()), me(i.wrapper.ownerDocument, "mousemove", y), me(i.wrapper.ownerDocument, "mouseup", b), o.history.lastSelOrigin = null } var y = ji(e, (function (e) { 0 !== e.buttons && Se(e) ? m(e) : g(e) })), b = ji(e, g); e.state.selectingText = b, pe(i.wrapper.ownerDocument, "mousemove", y), pe(i.wrapper.ownerDocument, "mouseup", b) } function Ms(e, t) { var n = t.anchor, r = t.head, i = Xe(e.doc, n.line); if (0 == ot(n, r) && n.sticky == r.sticky) return t; var o = fe(i); if (!o) return t; var a = ue(o, n.ch, n.sticky), s = o[a]; if (s.from != n.ch && s.to != n.ch) return t; var c, l = a + (s.from == n.ch == (1 != s.level) ? 0 : 1); if (0 == l || l == o.length) return t; if (r.line != n.line) c = (r.line - n.line) * ("ltr" == e.doc.direction ? 1 : -1) > 0; else { var u = ue(o, r.ch, r.sticky), h = u - a || (r.ch - n.ch) * (1 == s.level ? -1 : 1); c = u == l - 1 || u == l ? h < 0 : h > 0 } var f = o[l + (c ? -1 : 0)], d = c == (1 == f.level), p = d ? f.from : f.to, v = d ? "after" : "before"; return n.ch == p && n.sticky == v ? t : new io(new it(n.line, p, v), r) } function Os(e, t, n, r) { var i, o; if (t.touches) i = t.touches[0].clientX, o = t.touches[0].clientY; else try { i = t.clientX, o = t.clientY } catch (f) { return !1 } if (i >= Math.floor(e.display.gutters.getBoundingClientRect().right)) return !1; r && _e(t); var a = e.display, s = a.lineDiv.getBoundingClientRect(); if (o > s.bottom || !xe(e, n)) return Me(t); o -= s.top - a.viewOffset; for (var c = 0; c < e.display.gutterSpecs.length; ++c) { var l = a.gutters.childNodes[c]; if (l && l.getBoundingClientRect().right >= i) { var u = tt(e.doc, o), h = e.display.gutterSpecs[c]; return ge(e, n, e, u, h.className, t), Me(t) } } } function ks(e, t) { return Os(e, t, "gutterClick", !0) } function Ss(e, t) { $n(e.display, t) || Ts(e, t) || ye(e, t, "contextmenu") || C || e.display.input.onContextMenu(t) } function Ts(e, t) { return !!xe(e, "gutterContextMenu") && Os(e, t, "gutterContextMenu", !1) } function As(e) { e.display.wrapper.className = e.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + e.options.theme.replace(/(^|\s)\s*/g, " cm-s-"), hr(e) } vs.prototype.compare = function (e, t, n) { return this.time + ps > e && 0 == ot(t, this.pos) && n == this.button }; var Ls = { toString: function () { return "CodeMirror.Init" } }, js = {}, zs = {}; function Es(e) { var t = e.optionHandlers; function n(n, r, i, o) { e.defaults[n] = r, i && (t[n] = o ? function (e, t, n) { n != Ls && i(e, t, n) } : i) } e.defineOption = n, e.Init = Ls, n("value", "", (function (e, t) { return e.setValue(t) }), !0), n("mode", null, (function (e, t) { e.doc.modeOption = t, fo(e) }), !0), n("indentUnit", 2, fo, !0), n("indentWithTabs", !1), n("smartIndent", !0), n("tabSize", 4, (function (e) { po(e), hr(e), Hr(e) }), !0), n("lineSeparator", null, (function (e, t) { if (e.doc.lineSep = t, t) { var n = [], r = e.doc.first; e.doc.iter((function (e) { for (var i = 0; ;) { var o = e.text.indexOf(t, i); if (-1 == o) break; i = o + t.length, n.push(it(r, o)) } r++ })); for (var i = n.length - 1; i >= 0; i--)ra(e.doc, t, n[i], it(n[i].line, n[i].ch + t.length)) } })), n("specialChars", /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g, (function (e, t, n) { e.state.specialChars = new RegExp(t.source + (t.test("\t") ? "" : "|\t"), "g"), n != Ls && e.refresh() })), n("specialCharPlaceholder", vn, (function (e) { return e.refresh() }), !0), n("electricChars", !0), n("inputStyle", g ? "contenteditable" : "textarea", (function () { throw new Error("inputStyle can not (yet) be changed in a running editor") }), !0), n("spellcheck", !1, (function (e, t) { return e.getInputField().spellcheck = t }), !0), n("autocorrect", !1, (function (e, t) { return e.getInputField().autocorrect = t }), !0), n("autocapitalize", !1, (function (e, t) { return e.getInputField().autocapitalize = t }), !0), n("rtlMoveVisually", !x), n("wholeLineUpdateBefore", !0), n("theme", "default", (function (e) { As(e), Xi(e) }), !0), n("keyMap", "default", (function (e, t, n) { var r = Ba(t), i = n != Ls && Ba(n); i && i.detach && i.detach(e, r), r.attach && r.attach(e, i || null) })), n("extraKeys", null), n("configureMouse", null), n("lineWrapping", !1, Ds, !0), n("gutters", [], (function (e, t) { e.display.gutterSpecs = Ki(t, e.options.lineNumbers), Xi(e) }), !0), n("fixedGutter", !0, (function (e, t) { e.display.gutters.style.left = t ? jr(e.display) + "px" : "0", e.refresh() }), !0), n("coverGutterNextToScrollbar", !1, (function (e) { return gi(e) }), !0), n("scrollbarStyle", "native", (function (e) { xi(e), gi(e), e.display.scrollbars.setScrollTop(e.doc.scrollTop), e.display.scrollbars.setScrollLeft(e.doc.scrollLeft) }), !0), n("lineNumbers", !1, (function (e, t) { e.display.gutterSpecs = Ki(e.options.gutters, t), Xi(e) }), !0), n("firstLineNumber", 1, Xi, !0), n("lineNumberFormatter", (function (e) { return e }), Xi, !0), n("showCursorWhenSelecting", !1, Yr, !0), n("resetSelectionOnContextMenu", !0), n("lineWiseCopyCut", !0), n("pasteLinesPerSelection", !0), n("selectionsMayTouch", !1), n("readOnly", !1, (function (e, t) { "nocursor" == t && (Jr(e), e.display.input.blur()), e.display.input.readOnlyChanged(t) })), n("screenReaderLabel", null, (function (e, t) { t = "" === t ? null : t, e.display.input.screenReaderLabelChanged(t) })), n("disableInput", !1, (function (e, t) { t || e.display.input.reset() }), !0), n("dragDrop", !0, Ps), n("allowDropFileTypes", null), n("cursorBlinkRate", 530), n("cursorScrollMargin", 0), n("cursorHeight", 1, Yr, !0), n("singleCursorHeightPerLine", !0, Yr, !0), n("workTime", 100), n("workDelay", 100), n("flattenSpans", !0, po, !0), n("addModeClass", !1, po, !0), n("pollInterval", 100), n("undoDepth", 200, (function (e, t) { return e.doc.history.undoDepth = t })), n("historyEventDelay", 1250), n("viewportMargin", 10, (function (e) { return e.refresh() }), !0), n("maxHighlightLength", 1e4, po, !0), n("moveInputWithCursor", !0, (function (e, t) { t || e.display.input.resetPosition() })), n("tabindex", null, (function (e, t) { return e.display.input.getField().tabIndex = t || "" })), n("autofocus", null), n("direction", "ltr", (function (e, t) { return e.doc.setDirection(t) }), !0), n("phrases", null) } function Ps(e, t, n) { var r = n && n != Ls; if (!t != !r) { var i = e.display.dragFunctions, o = t ? pe : me; o(e.display.scroller, "dragstart", i.start), o(e.display.scroller, "dragenter", i.enter), o(e.display.scroller, "dragover", i.over), o(e.display.scroller, "dragleave", i.leave), o(e.display.scroller, "drop", i.drop) } } function Ds(e) { e.options.lineWrapping ? (E(e.display.wrapper, "CodeMirror-wrap"), e.display.sizer.style.minWidth = "", e.display.sizerWidth = null) : (k(e.display.wrapper, "CodeMirror-wrap"), sn(e)), Er(e), Hr(e), hr(e), setTimeout((function () { return gi(e) }), 100) } function Hs(e, t) { var n = this; if (!(this instanceof Hs)) return new Hs(e, t); this.options = t = t ? V(t) : {}, V(js, t, !1); var r = t.value; "string" == typeof r ? r = new _a(r, t.mode, null, t.lineSeparator, t.direction) : t.mode && (r.modeOption = t.mode), this.doc = r; var i = new Hs.inputStyles[t.inputStyle](this), o = this.display = new Ji(e, r, i, t); for (var l in o.wrapper.CodeMirror = this, As(this), t.lineWrapping && (this.display.wrapper.className += " CodeMirror-wrap"), xi(this), this.state = { keyMaps: [], overlays: [], modeGen: 0, overwrite: !1, delayingBlurEvent: !1, focused: !1, suppressEdits: !1, pasteIncoming: -1, cutIncoming: -1, selectingText: !1, draggingText: !1, highlight: new N, keySeq: null, specialChars: null }, t.autofocus && !g && o.input.focus(), a && s < 11 && setTimeout((function () { return n.display.input.reset(!0) }), 20), Vs(this), La(), _i(this), this.curOp.forceUpdate = !0, yo(this, r), t.autofocus && !g || this.hasFocus() ? setTimeout((function () { n.hasFocus() && !n.state.focused && Xr(n) }), 20) : Jr(this), zs) zs.hasOwnProperty(l) && zs[l](this, t[l], Ls); Ui(this), t.finishInit && t.finishInit(this); for (var u = 0; u < Is.length; ++u)Is[u](this); Ci(this), c && t.lineWrapping && "optimizelegibility" == getComputedStyle(o.lineDiv).textRendering && (o.lineDiv.style.textRendering = "auto") } function Vs(e) { var t = e.display; pe(t.scroller, "mousedown", ji(e, gs)), pe(t.scroller, "dblclick", a && s < 11 ? ji(e, (function (t) { if (!ye(e, t)) { var n = Pr(e, t); if (n && !ks(e, t) && !$n(e.display, t)) { _e(t); var r = e.findWordAt(n); Do(e.doc, r.anchor, r.head) } } })) : function (t) { return ye(e, t) || _e(t) }), pe(t.scroller, "contextmenu", (function (t) { return Ss(e, t) })), pe(t.input.getField(), "contextmenu", (function (n) { t.scroller.contains(n.target) || Ss(e, n) })); var n, r = { end: 0 }; function i() { t.activeTouch && (n = setTimeout((function () { return t.activeTouch = null }), 1e3), r = t.activeTouch, r.end = +new Date) } function o(e) { if (1 != e.touches.length) return !1; var t = e.touches[0]; return t.radiusX <= 1 && t.radiusY <= 1 } function c(e, t) { if (null == t.left) return !0; var n = t.left - e.left, r = t.top - e.top; return n * n + r * r > 400 } pe(t.scroller, "touchstart", (function (i) { if (!ye(e, i) && !o(i) && !ks(e, i)) { t.input.ensurePolled(), clearTimeout(n); var a = +new Date; t.activeTouch = { start: a, moved: !1, prev: a - r.end <= 300 ? r : null }, 1 == i.touches.length && (t.activeTouch.left = i.touches[0].pageX, t.activeTouch.top = i.touches[0].pageY) } })), pe(t.scroller, "touchmove", (function () { t.activeTouch && (t.activeTouch.moved = !0) })), pe(t.scroller, "touchend", (function (n) { var r = t.activeTouch; if (r && !$n(t, n) && null != r.left && !r.moved && new Date - r.start < 300) { var o, a = e.coordsChar(t.activeTouch, "page"); o = !r.prev || c(r, r.prev) ? new io(a, a) : !r.prev.prev || c(r, r.prev.prev) ? e.findWordAt(a) : new io(it(a.line, 0), ht(e.doc, it(a.line + 1, 0))), e.setSelection(o.anchor, o.head), e.focus(), _e(n) } i() })), pe(t.scroller, "touchcancel", i), pe(t.scroller, "scroll", (function () { t.scroller.clientHeight && (hi(e, t.scroller.scrollTop), di(e, t.scroller.scrollLeft, !0), ge(e, "scroll", e)) })), pe(t.scroller, "mousewheel", (function (t) { return no(e, t) })), pe(t.scroller, "DOMMouseScroll", (function (t) { return no(e, t) })), pe(t.wrapper, "scroll", (function () { return t.wrapper.scrollTop = t.wrapper.scrollLeft = 0 })), t.dragFunctions = { enter: function (t) { ye(e, t) || Oe(t) }, over: function (t) { ye(e, t) || (ka(e, t), Oe(t)) }, start: function (t) { return Oa(e, t) }, drop: ji(e, Ma), leave: function (t) { ye(e, t) || Sa(e) } }; var l = t.input.getField(); pe(l, "keyup", (function (t) { return us.call(e, t) })), pe(l, "keydown", ji(e, cs)), pe(l, "keypress", ji(e, hs)), pe(l, "focus", (function (t) { return Xr(e, t) })), pe(l, "blur", (function (t) { return Jr(e, t) })) } Hs.defaults = js, Hs.optionHandlers = zs; var Is = []; function Ns(e, t, n, r) { var i, o = e.doc; null == n && (n = "add"), "smart" == n && (o.mode.indent ? i = yt(e, t).state : n = "prev"); var a = e.options.tabSize, s = Xe(o, t), c = I(s.text, null, a); s.stateAfter && (s.stateAfter = null); var l, u = s.text.match(/^\s*/)[0]; if (r || /\S/.test(s.text)) { if ("smart" == n && (l = o.mode.indent(i, s.text.slice(u.length), s.text), l == Y || l > 150)) { if (!r) return; n = "prev" } } else l = 0, n = "not"; "prev" == n ? l = t > o.first ? I(Xe(o, t - 1).text, null, a) : 0 : "add" == n ? l = c + e.options.indentUnit : "subtract" == n ? l = c - e.options.indentUnit : "number" == typeof n && (l = c + n), l = Math.max(0, l); var h = "", f = 0; if (e.options.indentWithTabs) for (var d = Math.floor(l / a); d; --d)f += a, h += "\t"; if (f < l && (h += K(l - f)), h != u) return ra(o, h, it(t, 0), it(t, u.length), "+input"), s.stateAfter = null, !0; for (var p = 0; p < o.sel.ranges.length; p++) { var v = o.sel.ranges[p]; if (v.head.line == t && v.head.ch < u.length) { var m = it(t, u.length); Vo(o, p, new io(m, m)); break } } } Hs.defineInitHook = function (e) { return Is.push(e) }; var Rs = null; function Fs(e) { Rs = e } function Ys(e, t, n, r, i) { var o = e.doc; e.display.shift = !1, r || (r = o.sel); var a = +new Date - 200, s = "paste" == i || e.state.pasteIncoming > a, c = Ee(t), l = null; if (s && r.ranges.length > 1) if (Rs && Rs.text.join("\n") == t) { if (r.ranges.length % Rs.text.length == 0) { l = []; for (var u = 0; u < Rs.text.length; u++)l.push(o.splitLines(Rs.text[u])) } } else c.length == r.ranges.length && e.options.pasteLinesPerSelection && (l = X(c, (function (e) { return [e] }))); for (var h = e.curOp.updateInput, f = r.ranges.length - 1; f >= 0; f--) { var d = r.ranges[f], p = d.from(), v = d.to(); d.empty() && (n && n > 0 ? p = it(p.line, p.ch - n) : e.state.overwrite && !s ? v = it(v.line, Math.min(Xe(o, v.line).text.length, v.ch + G(c).length)) : s && Rs && Rs.lineWise && Rs.text.join("\n") == c.join("\n") && (p = v = it(p.line, 0))); var m = { from: p, to: v, text: l ? l[f % l.length] : c, origin: i || (s ? "paste" : e.state.cutIncoming > a ? "cut" : "+input") }; Jo(e.doc, m), Tn(e, "inputRead", e, m) } t && !s && Bs(e, t), ai(e), e.curOp.updateInput < 2 && (e.curOp.updateInput = h), e.curOp.typing = !0, e.state.pasteIncoming = e.state.cutIncoming = -1 } function $s(e, t) { var n = e.clipboardData && e.clipboardData.getData("Text"); if (n) return e.preventDefault(), t.isReadOnly() || t.options.disableInput || Li(t, (function () { return Ys(t, n, 0, null, "paste") })), !0 } function Bs(e, t) { if (e.options.electricChars && e.options.smartIndent) for (var n = e.doc.sel, r = n.ranges.length - 1; r >= 0; r--) { var i = n.ranges[r]; if (!(i.head.ch > 100 || r && n.ranges[r - 1].head.line == i.head.line)) { var o = e.getModeAt(i.head), a = !1; if (o.electricChars) { for (var s = 0; s < o.electricChars.length; s++)if (t.indexOf(o.electricChars.charAt(s)) > -1) { a = Ns(e, i.head.line, "smart"); break } } else o.electricInput && o.electricInput.test(Xe(e.doc, i.head.line).text.slice(0, i.head.ch)) && (a = Ns(e, i.head.line, "smart")); a && Tn(e, "electricInput", e, i.head.line) } } } function Ws(e) { for (var t = [], n = [], r = 0; r < e.doc.sel.ranges.length; r++) { var i = e.doc.sel.ranges[r].head.line, o = { anchor: it(i, 0), head: it(i + 1, 0) }; n.push(o), t.push(e.getRange(o.anchor, o.head)) } return { text: t, ranges: n } } function qs(e, t, n, r) { e.setAttribute("autocorrect", n ? "" : "off"), e.setAttribute("autocapitalize", r ? "" : "off"), e.setAttribute("spellcheck", !!t) } function Us() { var e = A("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"), t = A("div", [e], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); return c ? e.style.width = "1000px" : e.setAttribute("wrap", "off"), v && (e.style.border = "1px solid black"), qs(e), t } function Ks(e) { var t = e.optionHandlers, n = e.helpers = {}; e.prototype = { constructor: e, focus: function () { window.focus(), this.display.input.focus() }, setOption: function (e, n) { var r = this.options, i = r[e]; r[e] == n && "mode" != e || (r[e] = n, t.hasOwnProperty(e) && ji(this, t[e])(this, n, i), ge(this, "optionChange", this, e)) }, getOption: function (e) { return this.options[e] }, getDoc: function () { return this.doc }, addKeyMap: function (e, t) { this.state.keyMaps[t ? "push" : "unshift"](Ba(e)) }, removeKeyMap: function (e) { for (var t = this.state.keyMaps, n = 0; n < t.length; ++n)if (t[n] == e || t[n].name == e) return t.splice(n, 1), !0 }, addOverlay: zi((function (t, n) { var r = t.token ? t : e.getMode(this.options, t); if (r.startState) throw new Error("Overlays may not be stateful."); J(this.state.overlays, { mode: r, modeSpec: t, opaque: n && n.opaque, priority: n && n.priority || 0 }, (function (e) { return e.priority })), this.state.modeGen++, Hr(this) })), removeOverlay: zi((function (e) { for (var t = this.state.overlays, n = 0; n < t.length; ++n) { var r = t[n].modeSpec; if (r == e || "string" == typeof e && r.name == e) return t.splice(n, 1), this.state.modeGen++, void Hr(this) } })), indentLine: zi((function (e, t, n) { "string" != typeof t && "number" != typeof t && (t = null == t ? this.options.smartIndent ? "smart" : "prev" : t ? "add" : "subtract"), nt(this.doc, e) && Ns(this, e, t, n) })), indentSelection: zi((function (e) { for (var t = this.doc.sel.ranges, n = -1, r = 0; r < t.length; r++) { var i = t[r]; if (i.empty()) i.head.line > n && (Ns(this, i.head.line, e, !0), n = i.head.line, r == this.doc.sel.primIndex && ai(this)); else { var o = i.from(), a = i.to(), s = Math.max(n, o.line); n = Math.min(this.lastLine(), a.line - (a.ch ? 0 : 1)) + 1; for (var c = s; c < n; ++c)Ns(this, c, e); var l = this.doc.sel.ranges; 0 == o.ch && t.length == l.length && l[r].from().ch > 0 && Vo(this.doc, r, new io(o, l[r].to()), $) } } })), getTokenAt: function (e, t) { return Ct(this, e, t) }, getLineTokens: function (e, t) { return Ct(this, it(e), t, !0) }, getTokenTypeAt: function (e) { e = ht(this.doc, e); var t, n = gt(this, Xe(this.doc, e.line)), r = 0, i = (n.length - 1) / 2, o = e.ch; if (0 == o) t = n[2]; else for (; ;) { var a = r + i >> 1; if ((a ? n[2 * a - 1] : 0) >= o) i = a; else { if (!(n[2 * a + 1] < o)) { t = n[2 * a + 2]; break } r = a + 1 } } var s = t ? t.indexOf("overlay ") : -1; return s < 0 ? t : 0 == s ? null : t.slice(0, s - 1) }, getModeAt: function (t) { var n = this.doc.mode; return n.innerMode ? e.innerMode(n, this.getTokenAt(t).state).mode : n }, getHelper: function (e, t) { return this.getHelpers(e, t)[0] }, getHelpers: function (e, t) { var r = []; if (!n.hasOwnProperty(t)) return r; var i = n[t], o = this.getModeAt(e); if ("string" == typeof o[t]) i[o[t]] && r.push(i[o[t]]); else if (o[t]) for (var a = 0; a < o[t].length; a++) { var s = i[o[t][a]]; s && r.push(s) } else o.helperType && i[o.helperType] ? r.push(i[o.helperType]) : i[o.name] && r.push(i[o.name]); for (var c = 0; c < i._global.length; c++) { var l = i._global[c]; l.pred(o, this) && -1 == R(r, l.val) && r.push(l.val) } return r }, getStateAfter: function (e, t) { var n = this.doc; return e = ut(n, null == e ? n.first + n.size - 1 : e), yt(this, e + 1, t).state }, cursorCoords: function (e, t) { var n, r = this.doc.sel.primary(); return n = null == e ? r.head : "object" == typeof e ? ht(this.doc, e) : e ? r.from() : r.to(), yr(this, n, t || "page") }, charCoords: function (e, t) { return gr(this, ht(this.doc, e), t || "page") }, coordsChar: function (e, t) { return e = mr(this, e, t || "page"), wr(this, e.left, e.top) }, lineAtHeight: function (e, t) { return e = mr(this, { top: e, left: 0 }, t || "page").top, tt(this.doc, e + this.display.viewOffset) }, heightAtLine: function (e, t, n) { var r, i = !1; if ("number" == typeof e) { var o = this.doc.first + this.doc.size - 1; e < this.doc.first ? e = this.doc.first : e > o && (e = o, i = !0), r = Xe(this.doc, e) } else r = e; return vr(this, r, { top: 0, left: 0 }, t || "page", n || i).top + (i ? this.doc.height - on(r) : 0) }, defaultTextHeight: function () { return Tr(this.display) }, defaultCharWidth: function () { return Ar(this.display) }, getViewport: function () { return { from: this.display.viewFrom, to: this.display.viewTo } }, addWidget: function (e, t, n, r, i) { var o = this.display; e = yr(this, ht(this.doc, e)); var a = e.bottom, s = e.left; if (t.style.position = "absolute", t.setAttribute("cm-ignore-events", "true"), this.display.input.setUneditable(t), o.sizer.appendChild(t), "over" == r) a = e.top; else if ("above" == r || "near" == r) { var c = Math.max(o.wrapper.clientHeight, this.doc.height), l = Math.max(o.sizer.clientWidth, o.lineSpace.clientWidth); ("above" == r || e.bottom + t.offsetHeight > c) && e.top > t.offsetHeight ? a = e.top - t.offsetHeight : e.bottom + t.offsetHeight <= c && (a = e.bottom), s + t.offsetWidth > l && (s = l - t.offsetWidth) } t.style.top = a + "px", t.style.left = t.style.right = "", "right" == i ? (s = o.sizer.clientWidth - t.offsetWidth, t.style.right = "0px") : ("left" == i ? s = 0 : "middle" == i && (s = (o.sizer.clientWidth - t.offsetWidth) / 2), t.style.left = s + "px"), n && ri(this, { left: s, top: a, right: s + t.offsetWidth, bottom: a + t.offsetHeight }) }, triggerOnKeyDown: zi(cs), triggerOnKeyPress: zi(hs), triggerOnKeyUp: us, triggerOnMouseDown: zi(gs), execCommand: function (e) { if (Xa.hasOwnProperty(e)) return Xa[e].call(null, this) }, triggerElectric: zi((function (e) { Bs(this, e) })), findPosH: function (e, t, n, r) { var i = 1; t < 0 && (i = -1, t = -t); for (var o = ht(this.doc, e), a = 0; a < t; ++a)if (o = Gs(this.doc, o, i, n, r), o.hitSide) break; return o }, moveH: zi((function (e, t) { var n = this; this.extendSelectionsBy((function (r) { return n.display.shift || n.doc.extend || r.empty() ? Gs(n.doc, r.head, e, t, n.options.rtlMoveVisually) : e < 0 ? r.from() : r.to() }), W) })), deleteH: zi((function (e, t) { var n = this.doc.sel, r = this.doc; n.somethingSelected() ? r.replaceSelection("", null, "+delete") : Wa(this, (function (n) { var i = Gs(r, n.head, e, t, !1); return e < 0 ? { from: i, to: n.head } : { from: n.head, to: i } })) })), findPosV: function (e, t, n, r) { var i = 1, o = r; t < 0 && (i = -1, t = -t); for (var a = ht(this.doc, e), s = 0; s < t; ++s) { var c = yr(this, a, "div"); if (null == o ? o = c.left : c.left = o, a = Xs(this, c, i, n), a.hitSide) break } return a }, moveV: zi((function (e, t) { var n = this, r = this.doc, i = [], o = !this.display.shift && !r.extend && r.sel.somethingSelected(); if (r.extendSelectionsBy((function (a) { if (o) return e < 0 ? a.from() : a.to(); var s = yr(n, a.head, "div"); null != a.goalColumn && (s.left = a.goalColumn), i.push(s.left); var c = Xs(n, s, e, t); return "page" == t && a == r.sel.primary() && oi(n, gr(n, c, "div").top - s.top), c }), W), i.length) for (var a = 0; a < r.sel.ranges.length; a++)r.sel.ranges[a].goalColumn = i[a] })), findWordAt: function (e) { var t = this.doc, n = Xe(t, e.line).text, r = e.ch, i = e.ch; if (n) { var o = this.getHelper(e, "wordChars"); "before" != e.sticky && i != n.length || !r ? ++i : --r; var a = n.charAt(r), s = ne(a, o) ? function (e) { return ne(e, o) } : /\s/.test(a) ? function (e) { return /\s/.test(e) } : function (e) { return !/\s/.test(e) && !ne(e) }; while (r > 0 && s(n.charAt(r - 1))) --r; while (i < n.length && s(n.charAt(i))) ++i } return new io(it(e.line, r), it(e.line, i)) }, toggleOverwrite: function (e) { null != e && e == this.state.overwrite || ((this.state.overwrite = !this.state.overwrite) ? E(this.display.cursorDiv, "CodeMirror-overwrite") : k(this.display.cursorDiv, "CodeMirror-overwrite"), ge(this, "overwriteToggle", this, this.state.overwrite)) }, hasFocus: function () { return this.display.input.getField() == z() }, isReadOnly: function () { return !(!this.options.readOnly && !this.doc.cantEdit) }, scrollTo: zi((function (e, t) { si(this, e, t) })), getScrollInfo: function () { var e = this.display.scroller; return { left: e.scrollLeft, top: e.scrollTop, height: e.scrollHeight - Un(this) - this.display.barHeight, width: e.scrollWidth - Un(this) - this.display.barWidth, clientHeight: Gn(this), clientWidth: Kn(this) } }, scrollIntoView: zi((function (e, t) { null == e ? (e = { from: this.doc.sel.primary().head, to: null }, null == t && (t = this.options.cursorScrollMargin)) : "number" == typeof e ? e = { from: it(e, 0), to: null } : null == e.from && (e = { from: e, to: null }), e.to || (e.to = e.from), e.margin = t || 0, null != e.from.line ? ci(this, e) : ui(this, e.from, e.to, e.margin) })), setSize: zi((function (e, t) { var n = this, r = function (e) { return "number" == typeof e || /^\d+$/.test(String(e)) ? e + "px" : e }; null != e && (this.display.wrapper.style.width = r(e)), null != t && (this.display.wrapper.style.height = r(t)), this.options.lineWrapping && ur(this); var i = this.display.viewFrom; this.doc.iter(i, this.display.viewTo, (function (e) { if (e.widgets) for (var t = 0; t < e.widgets.length; t++)if (e.widgets[t].noHScroll) { Vr(n, i, "widget"); break } ++i })), this.curOp.forceUpdate = !0, ge(this, "refresh", this) })), operation: function (e) { return Li(this, e) }, startOperation: function () { return _i(this) }, endOperation: function () { return Ci(this) }, refresh: zi((function () { var e = this.display.cachedTextHeight; Hr(this), this.curOp.forceUpdate = !0, hr(this), si(this, this.doc.scrollLeft, this.doc.scrollTop), Bi(this.display), (null == e || Math.abs(e - Tr(this.display)) > .5 || this.options.lineWrapping) && Er(this), ge(this, "refresh", this) })), swapDoc: zi((function (e) { var t = this.doc; return t.cm = null, this.state.selectingText && this.state.selectingText(), yo(this, e), hr(this), this.display.input.reset(), si(this, e.scrollLeft, e.scrollTop), this.curOp.forceScroll = !0, Tn(this, "swapDoc", this, t), t })), phrase: function (e) { var t = this.options.phrases; return t && Object.prototype.hasOwnProperty.call(t, e) ? t[e] : e }, getInputField: function () { return this.display.input.getField() }, getWrapperElement: function () { return this.display.wrapper }, getScrollerElement: function () { return this.display.scroller }, getGutterElement: function () { return this.display.gutters } }, we(e), e.registerHelper = function (t, r, i) { n.hasOwnProperty(t) || (n[t] = e[t] = { _global: [] }), n[t][r] = i }, e.registerGlobalHelper = function (t, r, i, o) { e.registerHelper(t, r, o), n[t]._global.push({ pred: i, val: o }) } } function Gs(e, t, n, r, i) { var o = t, a = n, s = Xe(e, t.line), c = i && "rtl" == e.direction ? -n : n; function l() { var n = t.line + c; return !(n < e.first || n >= e.first + e.size) && (t = new it(n, t.ch, t.sticky), s = Xe(e, n)) } function u(o) { var a; if ("codepoint" == r) { var u = s.text.charCodeAt(t.ch + (n > 0 ? 0 : -1)); if (isNaN(u)) a = null; else { var h = n > 0 ? u >= 55296 && u < 56320 : u >= 56320 && u < 57343; a = new it(t.line, Math.max(0, Math.min(s.text.length, t.ch + n * (h ? 2 : 1))), -n) } } else a = i ? Ga(e.cm, s, t, n) : Ua(s, t, n); if (null == a) { if (o || !l()) return !1; t = Ka(i, e.cm, s, t.line, c) } else t = a; return !0 } if ("char" == r || "codepoint" == r) u(); else if ("column" == r) u(!0); else if ("word" == r || "group" == r) for (var h = null, f = "group" == r, d = e.cm && e.cm.getHelper(t, "wordChars"), p = !0; ; p = !1) { if (n < 0 && !u(!p)) break; var v = s.text.charAt(t.ch) || "\n", m = ne(v, d) ? "w" : f && "\n" == v ? "n" : !f || /\s/.test(v) ? null : "p"; if (!f || p || m || (m = "s"), h && h != m) { n < 0 && (n = 1, u(), t.sticky = "after"); break } if (m && (h = m), n > 0 && !u(!p)) break } var g = Uo(e, t, o, a, !0); return at(o, g) && (g.hitSide = !0), g } function Xs(e, t, n, r) { var i, o, a = e.doc, s = t.left; if ("page" == r) { var c = Math.min(e.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight), l = Math.max(c - .5 * Tr(e.display), 3); i = (n > 0 ? t.bottom : t.top) + n * l } else "line" == r && (i = n > 0 ? t.bottom + 3 : t.top - 3); for (; ;) { if (o = wr(e, s, i), !o.outside) break; if (n < 0 ? i <= 0 : i >= a.height) { o.hitSide = !0; break } i += 5 * n } return o } var Js = function (e) { this.cm = e, this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null, this.polling = new N, this.composing = null, this.gracePeriod = !1, this.readDOMTimeout = null }; function Qs(e, t) { var n = er(e, t.line); if (!n || n.hidden) return null; var r = Xe(e.doc, t.line), i = Jn(n, r, t.line), o = fe(r, e.doc.direction), a = "left"; if (o) { var s = ue(o, t.ch); a = s % 2 ? "right" : "left" } var c = or(i.map, t.ch, a); return c.offset = "right" == c.collapse ? c.end : c.start, c } function Zs(e) { for (var t = e; t; t = t.parentNode)if (/CodeMirror-gutter-wrapper/.test(t.className)) return !0; return !1 } function ec(e, t) { return t && (e.bad = !0), e } function tc(e, t, n, r, i) { var o = "", a = !1, s = e.doc.lineSeparator(), c = !1; function l(e) { return function (t) { return t.id == e } } function u() { a && (o += s, c && (o += s), a = c = !1) } function h(e) { e && (u(), o += e) } function f(t) { if (1 == t.nodeType) { var n = t.getAttribute("cm-text"); if (n) return void h(n); var o, d = t.getAttribute("cm-marker"); if (d) { var p = e.findMarks(it(r, 0), it(i + 1, 0), l(+d)); return void (p.length && (o = p[0].find(0)) && h(Je(e.doc, o.from, o.to).join(s))) } if ("false" == t.getAttribute("contenteditable")) return; var v = /^(pre|div|p|li|table|br)$/i.test(t.nodeName); if (!/^br$/i.test(t.nodeName) && 0 == t.textContent.length) return; v && u(); for (var m = 0; m < t.childNodes.length; m++)f(t.childNodes[m]); /^(pre|p)$/i.test(t.nodeName) && (c = !0), v && (a = !0) } else 3 == t.nodeType && h(t.nodeValue.replace(/\u200b/g, "").replace(/\u00a0/g, " ")) } for (; ;) { if (f(t), t == n) break; t = t.nextSibling, c = !1 } return o } function nc(e, t, n) { var r; if (t == e.display.lineDiv) { if (r = e.display.lineDiv.childNodes[n], !r) return ec(e.clipPos(it(e.display.viewTo - 1)), !0); t = null, n = 0 } else for (r = t; ; r = r.parentNode) { if (!r || r == e.display.lineDiv) return null; if (r.parentNode && r.parentNode == e.display.lineDiv) break } for (var i = 0; i < e.display.view.length; i++) { var o = e.display.view[i]; if (o.node == r) return rc(o, t, n) } } function rc(e, t, n) { var r = e.text.firstChild, i = !1; if (!t || !j(r, t)) return ec(it(et(e.line), 0), !0); if (t == r && (i = !0, t = r.childNodes[n], n = 0, !t)) { var o = e.rest ? G(e.rest) : e.line; return ec(it(et(o), o.text.length), i) } var a = 3 == t.nodeType ? t : null, s = t; a || 1 != t.childNodes.length || 3 != t.firstChild.nodeType || (a = t.firstChild, n && (n = a.nodeValue.length)); while (s.parentNode != r) s = s.parentNode; var c = e.measure, l = c.maps; function u(t, n, r) { for (var i = -1; i < (l ? l.length : 0); i++)for (var o = i < 0 ? c.map : l[i], a = 0; a < o.length; a += 3) { var s = o[a + 2]; if (s == t || s == n) { var u = et(i < 0 ? e.line : e.rest[i]), h = o[a] + r; return (r < 0 || s != t) && (h = o[a + (r ? 1 : 0)]), it(u, h) } } } var h = u(a, s, n); if (h) return ec(h, i); for (var f = s.nextSibling, d = a ? a.nodeValue.length - n : 0; f; f = f.nextSibling) { if (h = u(f, f.firstChild, 0), h) return ec(it(h.line, h.ch - d), i); d += f.textContent.length } for (var p = s.previousSibling, v = n; p; p = p.previousSibling) { if (h = u(p, p.firstChild, -1), h) return ec(it(h.line, h.ch + v), i); v += p.textContent.length } } Js.prototype.init = function (e) { var t = this, n = this, r = n.cm, i = n.div = e.lineDiv; function o(e) { for (var t = e.target; t; t = t.parentNode) { if (t == i) return !0; if (/\bCodeMirror-(?:line)?widget\b/.test(t.className)) break } return !1 } function a(e) { if (o(e) && !ye(r, e)) { if (r.somethingSelected()) Fs({ lineWise: !1, text: r.getSelections() }), "cut" == e.type && r.replaceSelection("", null, "cut"); else { if (!r.options.lineWiseCopyCut) return; var t = Ws(r); Fs({ lineWise: !0, text: t.text }), "cut" == e.type && r.operation((function () { r.setSelections(t.ranges, 0, $), r.replaceSelection("", null, "cut") })) } if (e.clipboardData) { e.clipboardData.clearData(); var a = Rs.text.join("\n"); if (e.clipboardData.setData("Text", a), e.clipboardData.getData("Text") == a) return void e.preventDefault() } var s = Us(), c = s.firstChild; r.display.lineSpace.insertBefore(s, r.display.lineSpace.firstChild), c.value = Rs.text.join("\n"); var l = z(); D(c), setTimeout((function () { r.display.lineSpace.removeChild(s), l.focus(), l == i && n.showPrimarySelection() }), 50) } } i.contentEditable = !0, qs(i, r.options.spellcheck, r.options.autocorrect, r.options.autocapitalize), pe(i, "paste", (function (e) { !o(e) || ye(r, e) || $s(e, r) || s <= 11 && setTimeout(ji(r, (function () { return t.updateFromDOM() })), 20) })), pe(i, "compositionstart", (function (e) { t.composing = { data: e.data, done: !1 } })), pe(i, "compositionupdate", (function (e) { t.composing || (t.composing = { data: e.data, done: !1 }) })), pe(i, "compositionend", (function (e) { t.composing && (e.data != t.composing.data && t.readFromDOMSoon(), t.composing.done = !0) })), pe(i, "touchstart", (function () { return n.forceCompositionEnd() })), pe(i, "input", (function () { t.composing || t.readFromDOMSoon() })), pe(i, "copy", a), pe(i, "cut", a) }, Js.prototype.screenReaderLabelChanged = function (e) { e ? this.div.setAttribute("aria-label", e) : this.div.removeAttribute("aria-label") }, Js.prototype.prepareSelection = function () { var e = $r(this.cm, !1); return e.focus = z() == this.div, e }, Js.prototype.showSelection = function (e, t) { e && this.cm.display.view.length && ((e.focus || t) && this.showPrimarySelection(), this.showMultipleSelections(e)) }, Js.prototype.getSelection = function () { return this.cm.display.wrapper.ownerDocument.getSelection() }, Js.prototype.showPrimarySelection = function () { var e = this.getSelection(), t = this.cm, r = t.doc.sel.primary(), i = r.from(), o = r.to(); if (t.display.viewTo == t.display.viewFrom || i.line >= t.display.viewTo || o.line < t.display.viewFrom) e.removeAllRanges(); else { var a = nc(t, e.anchorNode, e.anchorOffset), s = nc(t, e.focusNode, e.focusOffset); if (!a || a.bad || !s || s.bad || 0 != ot(lt(a, s), i) || 0 != ot(ct(a, s), o)) { var c = t.display.view, l = i.line >= t.display.viewFrom && Qs(t, i) || { node: c[0].measure.map[2], offset: 0 }, u = o.line < t.display.viewTo && Qs(t, o); if (!u) { var h = c[c.length - 1].measure, f = h.maps ? h.maps[h.maps.length - 1] : h.map; u = { node: f[f.length - 1], offset: f[f.length - 2] - f[f.length - 3] } } if (l && u) { var d, p = e.rangeCount && e.getRangeAt(0); try { d = O(l.node, l.offset, u.offset, u.node) } catch (v) { } d && (!n && t.state.focused ? (e.collapse(l.node, l.offset), d.collapsed || (e.removeAllRanges(), e.addRange(d))) : (e.removeAllRanges(), e.addRange(d)), p && null == e.anchorNode ? e.addRange(p) : n && this.startGracePeriod()), this.rememberSelection() } else e.removeAllRanges() } } }, Js.prototype.startGracePeriod = function () { var e = this; clearTimeout(this.gracePeriod), this.gracePeriod = setTimeout((function () { e.gracePeriod = !1, e.selectionChanged() && e.cm.operation((function () { return e.cm.curOp.selectionChanged = !0 })) }), 20) }, Js.prototype.showMultipleSelections = function (e) { T(this.cm.display.cursorDiv, e.cursors), T(this.cm.display.selectionDiv, e.selection) }, Js.prototype.rememberSelection = function () { var e = this.getSelection(); this.lastAnchorNode = e.anchorNode, this.lastAnchorOffset = e.anchorOffset, this.lastFocusNode = e.focusNode, this.lastFocusOffset = e.focusOffset }, Js.prototype.selectionInEditor = function () { var e = this.getSelection(); if (!e.rangeCount) return !1; var t = e.getRangeAt(0).commonAncestorContainer; return j(this.div, t) }, Js.prototype.focus = function () { "nocursor" != this.cm.options.readOnly && (this.selectionInEditor() && z() == this.div || this.showSelection(this.prepareSelection(), !0), this.div.focus()) }, Js.prototype.blur = function () { this.div.blur() }, Js.prototype.getField = function () { return this.div }, Js.prototype.supportsTouch = function () { return !0 }, Js.prototype.receivedFocus = function () { var e = this; function t() { e.cm.state.focused && (e.pollSelection(), e.polling.set(e.cm.options.pollInterval, t)) } this.selectionInEditor() ? this.pollSelection() : Li(this.cm, (function () { return e.cm.curOp.selectionChanged = !0 })), this.polling.set(this.cm.options.pollInterval, t) }, Js.prototype.selectionChanged = function () { var e = this.getSelection(); return e.anchorNode != this.lastAnchorNode || e.anchorOffset != this.lastAnchorOffset || e.focusNode != this.lastFocusNode || e.focusOffset != this.lastFocusOffset }, Js.prototype.pollSelection = function () { if (null == this.readDOMTimeout && !this.gracePeriod && this.selectionChanged()) { var e = this.getSelection(), t = this.cm; if (m && u && this.cm.display.gutterSpecs.length && Zs(e.anchorNode)) return this.cm.triggerOnKeyDown({ type: "keydown", keyCode: 8, preventDefault: Math.abs }), this.blur(), void this.focus(); if (!this.composing) { this.rememberSelection(); var n = nc(t, e.anchorNode, e.anchorOffset), r = nc(t, e.focusNode, e.focusOffset); n && r && Li(t, (function () { Fo(t.doc, ao(n, r), $), (n.bad || r.bad) && (t.curOp.selectionChanged = !0) })) } } }, Js.prototype.pollContent = function () { null != this.readDOMTimeout && (clearTimeout(this.readDOMTimeout), this.readDOMTimeout = null); var e, t, n, r = this.cm, i = r.display, o = r.doc.sel.primary(), a = o.from(), s = o.to(); if (0 == a.ch && a.line > r.firstLine() && (a = it(a.line - 1, Xe(r.doc, a.line - 1).length)), s.ch == Xe(r.doc, s.line).text.length && s.line < r.lastLine() && (s = it(s.line + 1, 0)), a.line < i.viewFrom || s.line > i.viewTo - 1) return !1; a.line == i.viewFrom || 0 == (e = Dr(r, a.line)) ? (t = et(i.view[0].line), n = i.view[0].node) : (t = et(i.view[e].line), n = i.view[e - 1].node.nextSibling); var c, l, u = Dr(r, s.line); if (u == i.view.length - 1 ? (c = i.viewTo - 1, l = i.lineDiv.lastChild) : (c = et(i.view[u + 1].line) - 1, l = i.view[u + 1].node.previousSibling), !n) return !1; var h = r.doc.splitLines(tc(r, n, l, t, c)), f = Je(r.doc, it(t, 0), it(c, Xe(r.doc, c).text.length)); while (h.length > 1 && f.length > 1) if (G(h) == G(f)) h.pop(), f.pop(), c--; else { if (h[0] != f[0]) break; h.shift(), f.shift(), t++ } var d = 0, p = 0, v = h[0], m = f[0], g = Math.min(v.length, m.length); while (d < g && v.charCodeAt(d) == m.charCodeAt(d)) ++d; var y = G(h), b = G(f), x = Math.min(y.length - (1 == h.length ? d : 0), b.length - (1 == f.length ? d : 0)); while (p < x && y.charCodeAt(y.length - p - 1) == b.charCodeAt(b.length - p - 1)) ++p; if (1 == h.length && 1 == f.length && t == a.line) while (d && d > a.ch && y.charCodeAt(y.length - p - 1) == b.charCodeAt(b.length - p - 1)) d--, p++; h[h.length - 1] = y.slice(0, y.length - p).replace(/^\u200b+/, ""), h[0] = h[0].slice(d).replace(/\u200b+$/, ""); var w = it(t, d), _ = it(c, f.length ? G(f).length - p : 0); return h.length > 1 || h[0] || ot(w, _) ? (ra(r.doc, h, w, _, "+input"), !0) : void 0 }, Js.prototype.ensurePolled = function () { this.forceCompositionEnd() }, Js.prototype.reset = function () { this.forceCompositionEnd() }, Js.prototype.forceCompositionEnd = function () { this.composing && (clearTimeout(this.readDOMTimeout), this.composing = null, this.updateFromDOM(), this.div.blur(), this.div.focus()) }, Js.prototype.readFromDOMSoon = function () { var e = this; null == this.readDOMTimeout && (this.readDOMTimeout = setTimeout((function () { if (e.readDOMTimeout = null, e.composing) { if (!e.composing.done) return; e.composing = null } e.updateFromDOM() }), 80)) }, Js.prototype.updateFromDOM = function () { var e = this; !this.cm.isReadOnly() && this.pollContent() || Li(this.cm, (function () { return Hr(e.cm) })) }, Js.prototype.setUneditable = function (e) { e.contentEditable = "false" }, Js.prototype.onKeyPress = function (e) { 0 == e.charCode || this.composing || (e.preventDefault(), this.cm.isReadOnly() || ji(this.cm, Ys)(this.cm, String.fromCharCode(null == e.charCode ? e.keyCode : e.charCode), 0)) }, Js.prototype.readOnlyChanged = function (e) { this.div.contentEditable = String("nocursor" != e) }, Js.prototype.onContextMenu = function () { }, Js.prototype.resetPosition = function () { }, Js.prototype.needsContentAttribute = !0; var ic = function (e) { this.cm = e, this.prevInput = "", this.pollingFast = !1, this.polling = new N, this.hasSelection = !1, this.composing = null }; function oc(e, t) { if (t = t ? V(t) : {}, t.value = e.value, !t.tabindex && e.tabIndex && (t.tabindex = e.tabIndex), !t.placeholder && e.placeholder && (t.placeholder = e.placeholder), null == t.autofocus) { var n = z(); t.autofocus = n == e || null != e.getAttribute("autofocus") && n == document.body } function r() { e.value = s.getValue() } var i; if (e.form && (pe(e.form, "submit", r), !t.leaveSubmitMethodAlone)) { var o = e.form; i = o.submit; try { var a = o.submit = function () { r(), o.submit = i, o.submit(), o.submit = a } } catch (c) { } } t.finishInit = function (n) { n.save = r, n.getTextArea = function () { return e }, n.toTextArea = function () { n.toTextArea = isNaN, r(), e.parentNode.removeChild(n.getWrapperElement()), e.style.display = "", e.form && (me(e.form, "submit", r), t.leaveSubmitMethodAlone || "function" != typeof e.form.submit || (e.form.submit = i)) } }, e.style.display = "none"; var s = Hs((function (t) { return e.parentNode.insertBefore(t, e.nextSibling) }), t); return s } function ac(e) { e.off = me, e.on = pe, e.wheelEventPixels = to, e.Doc = _a, e.splitLines = Ee, e.countColumn = I, e.findColumn = q, e.isWordChar = te, e.Pass = Y, e.signal = ge, e.Line = cn, e.changeEnd = so, e.scrollbarModel = bi, e.Pos = it, e.cmpPos = ot, e.modes = Ie, e.mimeModes = Ne, e.resolveMode = Ye, e.getMode = $e, e.modeExtensions = Be, e.extendMode = We, e.copyState = qe, e.startState = Ke, e.innerMode = Ue, e.commands = Xa, e.keyMap = Va, e.keyName = $a, e.isModifierKey = Fa, e.lookupKey = Ra, e.normalizeKeyMap = Na, e.StringStream = Ge, e.SharedTextMarker = ma, e.TextMarker = pa, e.LineWidget = ua, e.e_preventDefault = _e, e.e_stopPropagation = Ce, e.e_stop = Oe, e.addClass = E, e.contains = j, e.rmClass = k, e.keyNames = Ea } ic.prototype.init = function (e) { var t = this, n = this, r = this.cm; this.createField(e); var i = this.textarea; function o(e) { if (!ye(r, e)) { if (r.somethingSelected()) Fs({ lineWise: !1, text: r.getSelections() }); else { if (!r.options.lineWiseCopyCut) return; var t = Ws(r); Fs({ lineWise: !0, text: t.text }), "cut" == e.type ? r.setSelections(t.ranges, null, $) : (n.prevInput = "", i.value = t.text.join("\n"), D(i)) } "cut" == e.type && (r.state.cutIncoming = +new Date) } } e.wrapper.insertBefore(this.wrapper, e.wrapper.firstChild), v && (i.style.width = "0px"), pe(i, "input", (function () { a && s >= 9 && t.hasSelection && (t.hasSelection = null), n.poll() })), pe(i, "paste", (function (e) { ye(r, e) || $s(e, r) || (r.state.pasteIncoming = +new Date, n.fastPoll()) })), pe(i, "cut", o), pe(i, "copy", o), pe(e.scroller, "paste", (function (t) { if (!$n(e, t) && !ye(r, t)) { if (!i.dispatchEvent) return r.state.pasteIncoming = +new Date, void n.focus(); var o = new Event("paste"); o.clipboardData = t.clipboardData, i.dispatchEvent(o) } })), pe(e.lineSpace, "selectstart", (function (t) { $n(e, t) || _e(t) })), pe(i, "compositionstart", (function () { var e = r.getCursor("from"); n.composing && n.composing.range.clear(), n.composing = { start: e, range: r.markText(e, r.getCursor("to"), { className: "CodeMirror-composing" }) } })), pe(i, "compositionend", (function () { n.composing && (n.poll(), n.composing.range.clear(), n.composing = null) })) }, ic.prototype.createField = function (e) { this.wrapper = Us(), this.textarea = this.wrapper.firstChild }, ic.prototype.screenReaderLabelChanged = function (e) { e ? this.textarea.setAttribute("aria-label", e) : this.textarea.removeAttribute("aria-label") }, ic.prototype.prepareSelection = function () { var e = this.cm, t = e.display, n = e.doc, r = $r(e); if (e.options.moveInputWithCursor) { var i = yr(e, n.sel.primary().head, "div"), o = t.wrapper.getBoundingClientRect(), a = t.lineDiv.getBoundingClientRect(); r.teTop = Math.max(0, Math.min(t.wrapper.clientHeight - 10, i.top + a.top - o.top)), r.teLeft = Math.max(0, Math.min(t.wrapper.clientWidth - 10, i.left + a.left - o.left)) } return r }, ic.prototype.showSelection = function (e) { var t = this.cm, n = t.display; T(n.cursorDiv, e.cursors), T(n.selectionDiv, e.selection), null != e.teTop && (this.wrapper.style.top = e.teTop + "px", this.wrapper.style.left = e.teLeft + "px") }, ic.prototype.reset = function (e) { if (!this.contextMenuPending && !this.composing) { var t = this.cm; if (t.somethingSelected()) { this.prevInput = ""; var n = t.getSelection(); this.textarea.value = n, t.state.focused && D(this.textarea), a && s >= 9 && (this.hasSelection = n) } else e || (this.prevInput = this.textarea.value = "", a && s >= 9 && (this.hasSelection = null)) } }, ic.prototype.getField = function () { return this.textarea }, ic.prototype.supportsTouch = function () { return !1 }, ic.prototype.focus = function () { if ("nocursor" != this.cm.options.readOnly && (!g || z() != this.textarea)) try { this.textarea.focus() } catch (e) { } }, ic.prototype.blur = function () { this.textarea.blur() }, ic.prototype.resetPosition = function () { this.wrapper.style.top = this.wrapper.style.left = 0 }, ic.prototype.receivedFocus = function () { this.slowPoll() }, ic.prototype.slowPoll = function () { var e = this; this.pollingFast || this.polling.set(this.cm.options.pollInterval, (function () { e.poll(), e.cm.state.focused && e.slowPoll() })) }, ic.prototype.fastPoll = function () { var e = !1, t = this; function n() { var r = t.poll(); r || e ? (t.pollingFast = !1, t.slowPoll()) : (e = !0, t.polling.set(60, n)) } t.pollingFast = !0, t.polling.set(20, n) }, ic.prototype.poll = function () { var e = this, t = this.cm, n = this.textarea, r = this.prevInput; if (this.contextMenuPending || !t.state.focused || Pe(n) && !r && !this.composing || t.isReadOnly() || t.options.disableInput || t.state.keySeq) return !1; var i = n.value; if (i == r && !t.somethingSelected()) return !1; if (a && s >= 9 && this.hasSelection === i || y && /[\uf700-\uf7ff]/.test(i)) return t.display.input.reset(), !1; if (t.doc.sel == t.display.selForContextMenu) { var o = i.charCodeAt(0); if (8203 != o || r || (r = "鈥�"), 8666 == o) return this.reset(), this.cm.execCommand("undo") } var c = 0, l = Math.min(r.length, i.length); while (c < l && r.charCodeAt(c) == i.charCodeAt(c)) ++c; return Li(t, (function () { Ys(t, i.slice(c), r.length - c, null, e.composing ? "*compose" : null), i.length > 1e3 || i.indexOf("\n") > -1 ? n.value = e.prevInput = "" : e.prevInput = i, e.composing && (e.composing.range.clear(), e.composing.range = t.markText(e.composing.start, t.getCursor("to"), { className: "CodeMirror-composing" })) })), !0 }, ic.prototype.ensurePolled = function () { this.pollingFast && this.poll() && (this.pollingFast = !1) }, ic.prototype.onKeyPress = function () { a && s >= 9 && (this.hasSelection = null), this.fastPoll() }, ic.prototype.onContextMenu = function (e) { var t = this, n = t.cm, r = n.display, i = t.textarea; t.contextMenuPending && t.contextMenuPending(); var o = Pr(n, e), l = r.scroller.scrollTop; if (o && !h) { var u = n.options.resetSelectionOnContextMenu; u && -1 == n.doc.sel.contains(o) && ji(n, Fo)(n.doc, ao(o), $); var f, d = i.style.cssText, p = t.wrapper.style.cssText, v = t.wrapper.offsetParent.getBoundingClientRect(); if (t.wrapper.style.cssText = "position: static", i.style.cssText = "position: absolute; width: 30px; height: 30px;\n      top: " + (e.clientY - v.top - 5) + "px; left: " + (e.clientX - v.left - 5) + "px;\n      z-index: 1000; background: " + (a ? "rgba(255, 255, 255, .05)" : "transparent") + ";\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);", c && (f = window.scrollY), r.input.focus(), c && window.scrollTo(null, f), r.input.reset(), n.somethingSelected() || (i.value = t.prevInput = " "), t.contextMenuPending = y, r.selForContextMenu = n.doc.sel, clearTimeout(r.detectingSelectAll), a && s >= 9 && g(), C) { Oe(e); var m = function () { me(window, "mouseup", m), setTimeout(y, 20) }; pe(window, "mouseup", m) } else setTimeout(y, 50) } function g() { if (null != i.selectionStart) { var e = n.somethingSelected(), o = "鈥�" + (e ? i.value : ""); i.value = "鈬�", i.value = o, t.prevInput = e ? "" : "鈥�", i.selectionStart = 1, i.selectionEnd = o.length, r.selForContextMenu = n.doc.sel } } function y() { if (t.contextMenuPending == y && (t.contextMenuPending = !1, t.wrapper.style.cssText = p, i.style.cssText = d, a && s < 9 && r.scrollbars.setScrollTop(r.scroller.scrollTop = l), null != i.selectionStart)) { (!a || a && s < 9) && g(); var e = 0, o = function () { r.selForContextMenu == n.doc.sel && 0 == i.selectionStart && i.selectionEnd > 0 && "鈥�" == t.prevInput ? ji(n, Go)(n) : e++ < 10 ? r.detectingSelectAll = setTimeout(o, 500) : (r.selForContextMenu = null, r.input.reset()) }; r.detectingSelectAll = setTimeout(o, 200) } } }, ic.prototype.readOnlyChanged = function (e) { e || this.reset(), this.textarea.disabled = "nocursor" == e, this.textarea.readOnly = !!e }, ic.prototype.setUneditable = function () { }, ic.prototype.needsContentAttribute = !1, Es(Hs), Ks(Hs); var sc = "iter insert remove copy getEditor constructor".split(" "); for (var cc in _a.prototype) _a.prototype.hasOwnProperty(cc) && R(sc, cc) < 0 && (Hs.prototype[cc] = function (e) { return function () { return e.apply(this.doc, arguments) } }(_a.prototype[cc])); return we(_a), Hs.inputStyles = { textarea: ic, contenteditable: Js }, Hs.defineMode = function (e) { Hs.defaults.mode || "null" == e || (Hs.defaults.mode = e), Re.apply(this, arguments) }, Hs.defineMIME = Fe, Hs.defineMode("null", (function () { return { token: function (e) { return e.skipToEnd() } } })), Hs.defineMIME("text/plain", "null"), Hs.defineExtension = function (e, t) { Hs.prototype[e] = t }, Hs.defineDocExtension = function (e, t) { _a.prototype[e] = t }, Hs.fromTextArea = oc, ac(Hs), Hs.version = "5.61.0", Hs })) }, "576c": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("tet", { months: "Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju帽u_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"), monthsShort: "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"), weekdays: "Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"), weekdaysShort: "Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"), weekdaysMin: "Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Ohin iha] LT", nextDay: "[Aban iha] LT", nextWeek: "dddd [iha] LT", lastDay: "[Horiseik iha] LT", lastWeek: "dddd [semana kotuk] [iha] LT", sameElse: "L" }, relativeTime: { future: "iha %s", past: "%s liuba", s: "segundu balun", ss: "segundu %d", m: "minutu ida", mm: "minutu %d", h: "oras ida", hh: "oras %d", d: "loron ida", dd: "loron %d", M: "fulan ida", MM: "fulan %d", y: "tinan ida", yy: "tinan %d" }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (e) { var t = e % 10, n = 1 === ~~(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th"; return e + n }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "57a5": function (e, t, n) { var r = n("91e9"), i = r(Object.keys, Object); e.exports = i }, "57ba": function (e, t, n) { "use strict"; t.__esModule = !0; var r = n("4849"), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } t.default = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), (0, i.default)(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }() }, "584a": function (e, t) { var n = e.exports = { version: "2.6.11" }; "number" == typeof __e && (__e = n) }, "585a": function (e, t, n) { (function (t) { var n = "object" == typeof t && t && t.Object === Object && t; e.exports = n }).call(this, n("c8ba")) }, "58c1": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return u })); var r = n("92fa"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("4d91"), c = n("daa3"); function l(e) { return e.name || "Component" } function u(e) { var t = e.props || {}, n = e.methods || {}, r = {}; Object.keys(t).forEach((function (e) { r[e] = a()({}, t[e], { required: !1 }) })), e.props.__propsSymbol__ = s["a"].any, e.props.children = s["a"].array.def([]); var o = { props: r, model: e.model, name: "Proxy_" + l(e), methods: { getProxyWrappedInstance: function () { return this.$refs.wrappedInstance } }, render: function () { var t = arguments[0], n = this.$slots, r = void 0 === n ? {} : n, o = this.$scopedSlots, s = Object(c["l"])(this), l = { props: a()({}, s, { __propsSymbol__: Symbol(), componentWillReceiveProps: a()({}, s), children: r["default"] || s.children || [] }), on: Object(c["k"])(this) }; Object.keys(o).length && (l.scopedSlots = o); var u = Object.keys(r); return t(e, i()([l, { ref: "wrappedInstance" }]), [u.length ? u.map((function (e) { return t("template", { slot: e }, [r[e]]) })) : null]) } }; return Object.keys(n).map((function (e) { o.methods[e] = function () { var t; return (t = this.getProxyWrappedInstance())[e].apply(t, arguments) } })), o } }, "598a": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = ["迻蕃迋蕺迖蕈迌蕞", "迠蕃迍薨迌蕺迖蕈迌蕞", "迚蕨迌蕤迼蕺", "迖蕲迺薨迌蕞迧蕺", "迚蕲", "迻瞢迋薨", "迻蕺迧蕈迖蕤", "迖薤迬蕈迱薨迵蕺", "迱蕃迺薨迵蕃迚薨迍蕈迌蕺", "迖蕻迒薨迵薤迍蕈迌蕺", "迋蕻迗蕃迚薨迍蕈迌蕺", "迲蕤迱蕃迚薨迍蕈迌蕺"], n = ["迖蕨迡蕤迖薨迣蕈", "迉薤迚蕈", "迖蕈迋薨迬蕨迌蕈", "迍蕺迡蕈", "迍蕺迌蕨迱薨迠蕈迣蕤", "迉蕺迒蕺迌蕺", "迉蕻迋蕤迉蕤迌蕺"], r = e.defineLocale("dv", { months: t, monthsShort: t, weekdays: n, weekdaysShort: n, weekdaysMin: "迖蕨迡蕤_迉薤迚蕈_迖蕈迋薨_迍蕺迡蕈_迍蕺迌蕨_迉蕺迒蕺_迉蕻迋蕤".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "D/M/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, meridiemParse: /迚迒|迚迠/, isPM: function (e) { return "迚迠" === e }, meridiem: function (e, t, n) { return e < 12 ? "迚迒" : "迚迠" }, calendar: { sameDay: "[迚蕤迖蕈迡蕺] LT", nextDay: "[迚蕨迡蕈迚蕨] LT", nextWeek: "dddd LT", lastDay: "[迖蕤迖薨迶蕃] LT", lastWeek: "[迠蕨迖蕤迣蕺迗蕤] dddd LT", sameElse: "L" }, relativeTime: { future: "迣蕃迌蕲迬蕈迖蕤 %s", past: "迒蕺迌蕤迋薨 %s", s: "迱蕤迒蕺迋薨迣蕺迒蕻迏蕃迖薨", ss: "d% 迱蕤迒蕺迋薨迣蕺", m: "迚蕤迋蕤迵蕃迖薨", mm: "迚蕤迋蕤迵蕺 %d", h: "迬蕈迲蕤迖蕤迌蕃迖薨", hh: "迬蕈迲蕤迖蕤迌蕺 %d", d: "迡蕺迗蕈迉蕃迖薨", dd: "迡蕺迗蕈迱薨 %d", M: "迚蕈迉蕃迖薨", MM: "迚蕈迱薨 %d", y: "迖蕈迉蕈迌蕃迖薨", yy: "迖蕈迉蕈迌蕺 %d" }, preparse: function (e) { return e.replace(/貙/g, ",") }, postformat: function (e) { return e.replace(/,/g, "貙") }, week: { dow: 7, doy: 12 } }); return r
+                    }))
+                }, "5aff": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "'inji", 5: "'inji", 8: "'inji", 70: "'inji", 80: "'inji", 2: "'nji", 7: "'nji", 20: "'nji", 50: "'nji", 3: "'眉nji", 4: "'眉nji", 100: "'眉nji", 6: "'njy", 9: "'unjy", 10: "'unjy", 30: "'unjy", 60: "'ynjy", 90: "'ynjy" }, n = e.defineLocale("tk", { months: "脻anwar_Fewral_Mart_Aprel_Ma媒_I媒un_I媒ul_Awgust_Sent媒abr_Okt媒abr_No媒abr_Dekabr".split("_"), monthsShort: "脻an_Few_Mar_Apr_Ma媒_I媒n_I媒l_Awg_Sen_Okt_No媒_Dek".split("_"), weekdays: "脻ek艧enbe_Du艧enbe_Si艧enbe_脟ar艧enbe_Pen艧enbe_Anna_艦enbe".split("_"), weekdaysShort: "脻ek_Du艧_Si艧_脟ar_Pen_Ann_艦en".split("_"), weekdaysMin: "脻k_D艧_S艧_脟r_Pn_An_艦n".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[bug眉n sagat] LT", nextDay: "[ertir sagat] LT", nextWeek: "[indiki] dddd [sagat] LT", lastDay: "[d眉媒n] LT", lastWeek: "[ge莽en] dddd [sagat] LT", sameElse: "L" }, relativeTime: { future: "%s so艌", past: "%s 枚艌", s: "birn盲莽e sekunt", m: "bir minut", mm: "%d minut", h: "bir sagat", hh: "%d sagat", d: "bir g眉n", dd: "%d g眉n", M: "bir a媒", MM: "%d a媒", y: "bir 媒yl", yy: "%d 媒yl" }, ordinal: function (e, n) { switch (n) { case "d": case "D": case "Do": case "DD": return e; default: if (0 === e) return e + "'unjy"; var r = e % 10, i = e % 100 - r, o = e >= 100 ? 100 : null; return e + (t[r] || t[i] || t[o]) } }, week: { dow: 1, doy: 7 } }); return n
+                    }))
+                }, "5b01": function (e, t, n) { var r = n("8eeb"), i = n("ec69"); function o(e, t) { return e && r(t, i(t), e) } e.exports = o }, "5b14": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = "vas谩rnap h茅tf艖n kedden szerd谩n cs眉t枚rt枚k枚n p茅nteken szombaton".split(" "); function n(e, t, n, r) { var i = e; switch (n) { case "s": return r || t ? "n茅h谩ny m谩sodperc" : "n茅h谩ny m谩sodperce"; case "ss": return i + (r || t) ? " m谩sodperc" : " m谩sodperce"; case "m": return "egy" + (r || t ? " perc" : " perce"); case "mm": return i + (r || t ? " perc" : " perce"); case "h": return "egy" + (r || t ? " 贸ra" : " 贸r谩ja"); case "hh": return i + (r || t ? " 贸ra" : " 贸r谩ja"); case "d": return "egy" + (r || t ? " nap" : " napja"); case "dd": return i + (r || t ? " nap" : " napja"); case "M": return "egy" + (r || t ? " h贸nap" : " h贸napja"); case "MM": return i + (r || t ? " h贸nap" : " h贸napja"); case "y": return "egy" + (r || t ? " 茅v" : " 茅ve"); case "yy": return i + (r || t ? " 茅v" : " 茅ve") }return "" } function r(e) { return (e ? "" : "[m煤lt] ") + "[" + t[this.day()] + "] LT[-kor]" } var i = e.defineLocale("hu", { months: "janu谩r_febru谩r_m谩rcius_谩prilis_m谩jus_j煤nius_j煤lius_augusztus_szeptember_okt贸ber_november_december".split("_"), monthsShort: "jan_feb_m谩rc_谩pr_m谩j_j煤n_j煤l_aug_szept_okt_nov_dec".split("_"), weekdays: "vas谩rnap_h茅tf艖_kedd_szerda_cs眉t枚rt枚k_p茅ntek_szombat".split("_"), weekdaysShort: "vas_h茅t_kedd_sze_cs眉t_p茅n_szo".split("_"), weekdaysMin: "v_h_k_sze_cs_p_szo".split("_"), longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "YYYY.MM.DD.", LL: "YYYY. MMMM D.", LLL: "YYYY. MMMM D. H:mm", LLLL: "YYYY. MMMM D., dddd H:mm" }, meridiemParse: /de|du/i, isPM: function (e) { return "u" === e.charAt(1).toLowerCase() }, meridiem: function (e, t, n) { return e < 12 ? !0 === n ? "de" : "DE" : !0 === n ? "du" : "DU" }, calendar: { sameDay: "[ma] LT[-kor]", nextDay: "[holnap] LT[-kor]", nextWeek: function () { return r.call(this, !0) }, lastDay: "[tegnap] LT[-kor]", lastWeek: function () { return r.call(this, !1) }, sameElse: "L" }, relativeTime: { future: "%s m煤lva", past: "%s", s: n, ss: n, m: n, mm: n, h: n, hh: n, d: n, dd: n, M: n, MM: n, y: n, yy: n }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return i
+                    }))
+                }, "5b4e": function (e, t, n) { var r = n("36c3"), i = n("b447"), o = n("0fc9"); e.exports = function (e) { return function (t, n, a) { var s, c = r(t), l = i(c.length), u = o(a, l); if (e && n != n) { while (l > u) if (s = c[u++], s != s) return !0 } else for (; l > u; u++)if ((e || u in c) && c[u] === n) return e || u || 0; return !e && -1 } } }, "5b90": function (e, t, n) { "use strict"; function r(e, t) { var n = window.Element.prototype, r = n.matches || n.mozMatchesSelector || n.msMatchesSelector || n.oMatchesSelector || n.webkitMatchesSelector; if (!e || 1 !== e.nodeType) return !1; var i = e.parentNode; if (r) return r.call(e, t); for (var o = i.querySelectorAll(t), a = o.length, s = 0; s < a; s++)if (o[s] === e) return !0; return !1 } e.exports = r }, "5c3a": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("zh-cn", { months: "涓�鏈坃浜屾湀_涓夋湀_鍥涙湀_浜旀湀_鍏湀_涓冩湀_鍏湀_涔濇湀_鍗佹湀_鍗佷竴鏈坃鍗佷簩鏈�".split("_"), monthsShort: "1鏈坃2鏈坃3鏈坃4鏈坃5鏈坃6鏈坃7鏈坃8鏈坃9鏈坃10鏈坃11鏈坃12鏈�".split("_"), weekdays: "鏄熸湡鏃鏄熸湡涓�_鏄熸湡浜宊鏄熸湡涓塤鏄熸湡鍥沖鏄熸湡浜擾鏄熸湡鍏�".split("_"), weekdaysShort: "鍛ㄦ棩_鍛ㄤ竴_鍛ㄤ簩_鍛ㄤ笁_鍛ㄥ洓_鍛ㄤ簲_鍛ㄥ叚".split("_"), weekdaysMin: "鏃涓�_浜宊涓塤鍥沖浜擾鍏�".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY/MM/DD", LL: "YYYY骞碝鏈圖鏃�", LLL: "YYYY骞碝鏈圖鏃h鐐筸m鍒�", LLLL: "YYYY骞碝鏈圖鏃dddAh鐐筸m鍒�", l: "YYYY/M/D", ll: "YYYY骞碝鏈圖鏃�", lll: "YYYY骞碝鏈圖鏃� HH:mm", llll: "YYYY骞碝鏈圖鏃ddd HH:mm" }, meridiemParse: /鍑屾櫒|鏃╀笂|涓婂崍|涓崍|涓嬪崍|鏅氫笂/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "鍑屾櫒" === t || "鏃╀笂" === t || "涓婂崍" === t ? e : "涓嬪崍" === t || "鏅氫笂" === t ? e + 12 : e >= 11 ? e : e + 12 }, meridiem: function (e, t, n) { var r = 100 * e + t; return r < 600 ? "鍑屾櫒" : r < 900 ? "鏃╀笂" : r < 1130 ? "涓婂崍" : r < 1230 ? "涓崍" : r < 1800 ? "涓嬪崍" : "鏅氫笂" }, calendar: { sameDay: "[浠婂ぉ]LT", nextDay: "[鏄庡ぉ]LT", nextWeek: function (e) { return e.week() !== this.week() ? "[涓媇dddLT" : "[鏈琞dddLT" }, lastDay: "[鏄ㄥぉ]LT", lastWeek: function (e) { return this.week() !== e.week() ? "[涓奭dddLT" : "[鏈琞dddLT" }, sameElse: "L" }, dayOfMonthOrdinalParse: /\d{1,2}(鏃鏈坾鍛�)/, ordinal: function (e, t) { switch (t) { case "d": case "D": case "DDD": return e + "鏃�"; case "M": return e + "鏈�"; case "w": case "W": return e + "鍛�"; default: return e } }, relativeTime: { future: "%s鍚�", past: "%s鍓�", s: "鍑犵", ss: "%d 绉�", m: "1 鍒嗛挓", mm: "%d 鍒嗛挓", h: "1 灏忔椂", hh: "%d 灏忔椂", d: "1 澶�", dd: "%d 澶�", M: "1 涓湀", MM: "%d 涓湀", y: "1 骞�", yy: "%d 骞�" }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "5c69": function (e, t, n) { var r = n("087d"), i = n("0621"); function o(e, t, n, a, s) { var c = -1, l = e.length; n || (n = i), s || (s = []); while (++c < l) { var u = e[c]; t > 0 && n(u) ? t > 1 ? o(u, t - 1, n, a, s) : r(s, u) : a || (s[s.length] = u) } return s } e.exports = o }, "5ca0": function (e, t, n) { var r = n("badf"), i = n("30c9"), o = n("ec69"); function a(e) { return function (t, n, a) { var s = Object(t); if (!i(t)) { var c = r(n, 3); t = o(t), n = function (e) { return c(s[e], e, s) } } var l = e(t, n, a); return l > -1 ? s[c ? t[l] : l] : void 0 } } e.exports = a }, "5ca1": function (e, t, n) { var r = n("7726"), i = n("8378"), o = n("32e9"), a = n("2aba"), s = n("9b43"), c = "prototype", l = function (e, t, n) { var u, h, f, d, p = e & l.F, v = e & l.G, m = e & l.S, g = e & l.P, y = e & l.B, b = v ? r : m ? r[t] || (r[t] = {}) : (r[t] || {})[c], x = v ? i : i[t] || (i[t] = {}), w = x[c] || (x[c] = {}); for (u in v && (n = t), n) h = !p && b && void 0 !== b[u], f = (h ? b : n)[u], d = y && h ? s(f, r) : g && "function" == typeof f ? s(Function.call, f) : f, b && a(b, u, f, e & l.U), x[u] != f && o(x, u, d), g && w[u] != f && (w[u] = f) }; r.core = i, l.F = 1, l.G = 2, l.S = 4, l.P = 8, l.B = 16, l.W = 32, l.U = 64, l.R = 128, e.exports = l }, "5cbb": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("te", { months: "喟溹皑喟掂鞍喟縚喟翱喟睄喟班暗喟班翱_喟熬喟班睄喟氞翱_喟忇蔼啾嵿鞍喟苦安啾峗喟眹_喟溹眰喟ㄠ睄_喟溹眮喟侧眻_喟嗋皸喟膏睄喟熰眮_喟膏眴喟睄喟熰眴喟傕艾喟班睄_喟呧皶啾嵿盁啾嬥艾喟班睄_喟ㄠ暗喟傕艾喟班睄_喟∴翱喟膏眴喟傕艾喟班睄".split("_"), monthsShort: "喟溹皑._喟翱喟睄喟�._喟熬喟班睄喟氞翱_喟忇蔼啾嵿鞍喟�._喟眹_喟溹眰喟ㄠ睄_喟溹眮喟侧眻_喟嗋皸._喟膏眴喟睄._喟呧皶啾嵿盁啾�._喟ㄠ暗._喟∴翱喟膏眴.".split("_"), monthsParseExact: !0, weekdays: "喟嗋唉喟苦暗喟距鞍喟俖喟膏眿喟暗喟距鞍喟俖喟皞喟椸俺喟掂熬喟班皞_喟眮喟о暗喟距鞍喟俖喟椸眮喟班眮喟掂熬喟班皞_喟多眮喟曕睄喟班暗喟距鞍喟俖喟多皑喟苦暗喟距鞍喟�".split("_"), weekdaysShort: "喟嗋唉喟縚喟膏眿喟甠喟皞喟椸俺_喟眮喟喟椸眮喟班眮_喟多眮喟曕睄喟癬喟多皑喟�".split("_"), weekdaysMin: "喟哶喟膏眿_喟皞_喟眮_喟椸眮_喟多眮_喟�".split("_"), longDateFormat: { LT: "A h:mm", LTS: "A h:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm", LLLL: "dddd, D MMMM YYYY, A h:mm" }, calendar: { sameDay: "[喟ㄠ眹喟∴眮] LT", nextDay: "[喟班眹喟眮] LT", nextWeek: "dddd, LT", lastDay: "[喟ㄠ翱喟ㄠ睄喟╙ LT", lastWeek: "[喟椸挨] dddd, LT", sameElse: "L" }, relativeTime: { future: "%s 喟侧眿", past: "%s 喟曕睄喟班翱喟む皞", s: "喟曕眾喟ㄠ睄喟ㄠ翱 喟曕睄喟粪埃喟距安啾�", ss: "%d 喟膏眴喟曕皑啾嵿安啾�", m: "喟掄皶 喟ㄠ翱喟翱喟粪皞", mm: "%d 喟ㄠ翱喟翱喟粪熬喟侧眮", h: "喟掄皶 喟椸皞喟�", hh: "%d 喟椸皞喟熰安啾�", d: "喟掄皶 喟班眿喟溹眮", dd: "%d 喟班眿喟溹眮喟侧眮", M: "喟掄皶 喟ㄠ眴喟�", MM: "%d 喟ㄠ眴喟侧安啾�", y: "喟掄皶 喟膏皞喟掂挨啾嵿案喟班皞", yy: "%d 喟膏皞喟掂挨啾嵿案喟班熬喟侧眮" }, dayOfMonthOrdinalParse: /\d{1,2}喟�/, ordinal: "%d喟�", meridiemParse: /喟班熬喟む睄喟班翱|喟夃唉喟皞|喟哀啾嵿隘喟距肮啾嵿皑喟倈喟膏熬喟皞喟む睄喟班皞/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "喟班熬喟む睄喟班翱" === t ? e < 4 ? e : e + 12 : "喟夃唉喟皞" === t ? e : "喟哀啾嵿隘喟距肮啾嵿皑喟�" === t ? e >= 10 ? e : e + 12 : "喟膏熬喟皞喟む睄喟班皞" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { return e < 4 ? "喟班熬喟む睄喟班翱" : e < 10 ? "喟夃唉喟皞" : e < 17 ? "喟哀啾嵿隘喟距肮啾嵿皑喟�" : e < 20 ? "喟膏熬喟皞喟む睄喟班皞" : "喟班熬喟む睄喟班翱" }, week: { dow: 0, doy: 6 } }); return t
+                    }))
+                }, "5cc5": function (e, t, n) { var r = n("2b4c")("iterator"), i = !1; try { var o = [7][r](); o["return"] = function () { i = !0 }, Array.from(o, (function () { throw 2 })) } catch (a) { } e.exports = function (e, t) { if (!t && !i) return !1; var n = !1; try { var o = [7], s = o[r](); s.next = function () { return { done: n = !0 } }, o[r] = function () { return s }, e(o) } catch (a) { } return n } }, "5d89": function (e, t, n) { var r = n("f8af"); function i(e, t) { var n = t ? r(e.buffer) : e.buffer; return new e.constructor(n, e.byteOffset, e.byteLength) } e.exports = i }, "5dbc": function (e, t, n) { var r = n("d3f4"), i = n("8b97").set; e.exports = function (e, t, n) { var o, a = t.constructor; return a !== n && "function" == typeof a && (o = a.prototype) !== n.prototype && r(o) && i && i(e, o), e } }, "5df3": function (e, t, n) { "use strict"; var r = n("02f4")(!0); n("01f9")(String, "String", (function (e) { this._t = String(e), this._i = 0 }), (function () { var e, t = this._t, n = this._i; return n >= t.length ? { value: void 0, done: !0 } : (e = r(t, n), this._i += e.length, { value: e, done: !1 }) })) }, "5e2e": function (e, t, n) { var r = n("28c9"), i = n("69d5"), o = n("b4c0"), a = n("fba5"), s = n("67ca"); function c(e) { var t = -1, n = null == e ? 0 : e.length; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } c.prototype.clear = r, c.prototype["delete"] = i, c.prototype.get = o, c.prototype.has = a, c.prototype.set = s, e.exports = c }, "5eda": function (e, t, n) { var r = n("5ca1"), i = n("8378"), o = n("79e5"); e.exports = function (e, t) { var n = (i.Object || {})[e] || Object[e], a = {}; a[e] = t(n), r(r.S + r.F * o((function () { n(1) })), "Object", a) } }, "5edf": function (e, t) { function n(e, t, n) { var r = -1, i = null == e ? 0 : e.length; while (++r < i) if (n(t, e[r])) return !0; return !1 } e.exports = n }, "5f1b": function (e, t, n) { "use strict"; var r = n("23c6"), i = RegExp.prototype.exec; e.exports = function (e, t) { var n = e.exec; if ("function" === typeof n) { var o = n.call(e, t); if ("object" !== typeof o) throw new TypeError("RegExp exec method returned something other than an Object or null"); return o } if ("RegExp" !== r(e)) throw new TypeError("RegExp#exec called on incompatible receiver"); return i.call(e, t) } }, "5fbd": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("sv", { months: "januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"), monthsShort: "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"), weekdays: "s枚ndag_m氓ndag_tisdag_onsdag_torsdag_fredag_l枚rdag".split("_"), weekdaysShort: "s枚n_m氓n_tis_ons_tor_fre_l枚r".split("_"), weekdaysMin: "s枚_m氓_ti_on_to_fr_l枚".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY-MM-DD", LL: "D MMMM YYYY", LLL: "D MMMM YYYY [kl.] HH:mm", LLLL: "dddd D MMMM YYYY [kl.] HH:mm", lll: "D MMM YYYY HH:mm", llll: "ddd D MMM YYYY HH:mm" }, calendar: { sameDay: "[Idag] LT", nextDay: "[Imorgon] LT", lastDay: "[Ig氓r] LT", nextWeek: "[P氓] dddd LT", lastWeek: "[I] dddd[s] LT", sameElse: "L" }, relativeTime: { future: "om %s", past: "f枚r %s sedan", s: "n氓gra sekunder", ss: "%d sekunder", m: "en minut", mm: "%d minuter", h: "en timme", hh: "%d timmar", d: "en dag", dd: "%d dagar", M: "en m氓nad", MM: "%d m氓nader", y: "ett 氓r", yy: "%d 氓r" }, dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/, ordinal: function (e) { var t = e % 10, n = 1 === ~~(e % 100 / 10) ? ":e" : 1 === t || 2 === t ? ":a" : ":e"; return e + n }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, 6042: function (e, t, n) { "use strict"; t.__esModule = !0; var r = n("4849"), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } t.default = function (e, t, n) { return t in e ? (0, i.default)(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } }, 6044: function (e, t, n) { var r = n("0b07"), i = r(Object, "create"); e.exports = i }, "608e": function (e, t, n) { "use strict"; var r = n("51d6"), i = n.n(r); i.a }, "60ed": function (e, t, n) { var r = n("3729"), i = n("2dcb"), o = n("1310"), a = "[object Object]", s = Function.prototype, c = Object.prototype, l = s.toString, u = c.hasOwnProperty, h = l.call(Object); function f(e) { if (!o(e) || r(e) != a) return !1; var t = i(e); if (null === t) return !0; var n = u.call(t, "constructor") && t.constructor; return "function" == typeof n && n instanceof n && l.call(n) == h } e.exports = f }, 6117: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js language configuration
+                        var t = e.defineLocale("ug-cn", { months: "賷丕賳蹕丕乇_賮蹛蹕乇丕賱_賲丕乇鬲_卅丕倬乇蹛賱_賲丕賷_卅賶賷蹏賳_卅賶賷蹏賱_卅丕蹕睾蹏爻鬲_爻蹛賳鬲蹠亘賶乇_卅蹎賰鬲蹠亘賶乇_賳賵賷丕亘賶乇_丿蹛賰丕亘賶乇".split("_"), monthsShort: "賷丕賳蹕丕乇_賮蹛蹕乇丕賱_賲丕乇鬲_卅丕倬乇蹛賱_賲丕賷_卅賶賷蹏賳_卅賶賷蹏賱_卅丕蹕睾蹏爻鬲_爻蹛賳鬲蹠亘賶乇_卅蹎賰鬲蹠亘賶乇_賳賵賷丕亘賶乇_丿蹛賰丕亘賶乇".split("_"), weekdays: "賷蹠賰卮蹠賳亘蹠_丿蹐卮蹠賳亘蹠_爻蹠賷卮蹠賳亘蹠_趩丕乇卮蹠賳亘蹠_倬蹠賷卮蹠賳亘蹠_噩蹐賲蹠_卮蹠賳亘蹠".split("_"), weekdaysShort: "賷蹠_丿蹐_爻蹠_趩丕_倬蹠_噩蹐_卮蹠".split("_"), weekdaysMin: "賷蹠_丿蹐_爻蹠_趩丕_倬蹠_噩蹐_卮蹠".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY-MM-DD", LL: "YYYY-賷賶賱賶M-卅丕賷賳賶诃D-賰蹐賳賶", LLL: "YYYY-賷賶賱賶M-卅丕賷賳賶诃D-賰蹐賳賶貙 HH:mm", LLLL: "dddd貙 YYYY-賷賶賱賶M-卅丕賷賳賶诃D-賰蹐賳賶貙 HH:mm" }, meridiemParse: /賷蹛乇賶賲 賰蹛趩蹠|爻蹠诰蹠乇|趩蹐卮鬲賶賳 亘蹏乇蹏賳|趩蹐卮|趩蹐卮鬲賶賳 賰蹛賷賶賳|賰蹠趩/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "賷蹛乇賶賲 賰蹛趩蹠" === t || "爻蹠诰蹠乇" === t || "趩蹐卮鬲賶賳 亘蹏乇蹏賳" === t ? e : "趩蹐卮鬲賶賳 賰蹛賷賶賳" === t || "賰蹠趩" === t ? e + 12 : e >= 11 ? e : e + 12 }, meridiem: function (e, t, n) { var r = 100 * e + t; return r < 600 ? "賷蹛乇賶賲 賰蹛趩蹠" : r < 900 ? "爻蹠诰蹠乇" : r < 1130 ? "趩蹐卮鬲賶賳 亘蹏乇蹏賳" : r < 1230 ? "趩蹐卮" : r < 1800 ? "趩蹐卮鬲賶賳 賰蹛賷賶賳" : "賰蹠趩" }, calendar: { sameDay: "[亘蹐诏蹐賳 爻丕卅蹠鬲] LT", nextDay: "[卅蹠鬲蹠 爻丕卅蹠鬲] LT", nextWeek: "[賰蹛賱蹠乇賰賶] dddd [爻丕卅蹠鬲] LT", lastDay: "[鬲蹎賳蹐诏蹐賳] LT", lastWeek: "[卅丕賱丿賶賳賯賶] dddd [爻丕卅蹠鬲] LT", sameElse: "L" }, relativeTime: { future: "%s 賰蹛賷賶賳", past: "%s 亘蹏乇蹏賳", s: "賳蹠趩趩蹠 爻蹛賰賵賳鬲", ss: "%d 爻蹛賰賵賳鬲", m: "亘賶乇 賲賶賳蹏鬲", mm: "%d 賲賶賳蹏鬲", h: "亘賶乇 爻丕卅蹠鬲", hh: "%d 爻丕卅蹠鬲", d: "亘賶乇 賰蹐賳", dd: "%d 賰蹐賳", M: "亘賶乇 卅丕賷", MM: "%d 卅丕賷", y: "亘賶乇 賷賶賱", yy: "%d 賷賶賱" }, dayOfMonthOrdinalParse: /\d{1,2}(-賰蹐賳賶|-卅丕賷|-诰蹠倬鬲蹠)/, ordinal: function (e, t) { switch (t) { case "d": case "D": case "DDD": return e + "-賰蹐賳賶"; case "w": case "W": return e + "-诰蹠倬鬲蹠"; default: return e } }, preparse: function (e) { return e.replace(/貙/g, ",") }, postformat: function (e) { return e.replace(/,/g, "貙") }, week: { dow: 1, doy: 7 } }); return t
+                    }))
+                }, "613b": function (e, t, n) { var r = n("5537")("keys"), i = n("ca5a"); e.exports = function (e) { return r[e] || (r[e] = i(e)) } }, "61fe": function (e, t, n) { var r = n("5b90"); e.exports = function (e, t, n) { n = n || document, e = { parentNode: e }; while ((e = e.parentNode) && e !== n) if (r(e, t)) return e } }, "626a": function (e, t, n) { var r = n("2d95"); e.exports = Object("z").propertyIsEnumerable(0) ? Object : function (e) { return "String" == r(e) ? e.split("") : Object(e) } }, "62a0": function (e, t) { var n = 0, r = Math.random(); e.exports = function (e) { return "Symbol(".concat(void 0 === e ? "" : e, ")_", (++n + r).toString(36)) } }, "62e4": function (e, t) { e.exports = function (e) { return e.webpackPolyfill || (e.deprecate = function () { }, e.paths = [], e.children || (e.children = []), Object.defineProperty(e, "loaded", { enumerable: !0, get: function () { return e.l } }), Object.defineProperty(e, "id", { enumerable: !0, get: function () { return e.i } }), e.webpackPolyfill = 1), e } }, "63b6": function (e, t, n) { var r = n("e53d"), i = n("584a"), o = n("d864"), a = n("35e8"), s = n("07e3"), c = "prototype", l = function (e, t, n) { var u, h, f, d = e & l.F, p = e & l.G, v = e & l.S, m = e & l.P, g = e & l.B, y = e & l.W, b = p ? i : i[t] || (i[t] = {}), x = b[c], w = p ? r : v ? r[t] : (r[t] || {})[c]; for (u in p && (n = t), n) h = !d && w && void 0 !== w[u], h && s(b, u) || (f = h ? w[u] : n[u], b[u] = p && "function" != typeof w[u] ? n[u] : g && h ? o(f, r) : y && w[u] == f ? function (e) { var t = function (t, n, r) { if (this instanceof e) { switch (arguments.length) { case 0: return new e; case 1: return new e(t); case 2: return new e(t, n) }return new e(t, n, r) } return e.apply(this, arguments) }; return t[c] = e[c], t }(f) : m && "function" == typeof f ? o(Function.call, f) : f, m && ((b.virtual || (b.virtual = {}))[u] = f, e & l.R && x && !x[u] && a(x, u, f))) }; l.F = 1, l.G = 2, l.S = 4, l.P = 8, l.B = 16, l.W = 32, l.U = 64, l.R = 128, e.exports = l }, 6403: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("ms-my", { months: "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"), monthsShort: "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"), weekdays: "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"), weekdaysShort: "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"), weekdaysMin: "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"), longDateFormat: { LT: "HH.mm", LTS: "HH.mm.ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY [pukul] HH.mm", LLLL: "dddd, D MMMM YYYY [pukul] HH.mm" }, meridiemParse: /pagi|tengahari|petang|malam/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "pagi" === t ? e : "tengahari" === t ? e >= 11 ? e : e + 12 : "petang" === t || "malam" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { return e < 11 ? "pagi" : e < 15 ? "tengahari" : e < 19 ? "petang" : "malam" }, calendar: { sameDay: "[Hari ini pukul] LT", nextDay: "[Esok pukul] LT", nextWeek: "dddd [pukul] LT", lastDay: "[Kelmarin pukul] LT", lastWeek: "dddd [lepas pukul] LT", sameElse: "L" }, relativeTime: { future: "dalam %s", past: "%s yang lepas", s: "beberapa saat", ss: "%d saat", m: "seminit", mm: "%d minit", h: "sejam", hh: "%d jam", d: "sehari", dd: "%d hari", M: "sebulan", MM: "%d bulan", y: "setahun", yy: "%d tahun" }, week: { dow: 1, doy: 7 } }); return t
+                    }))
+                }, 6428: function (e, t, n) { var r = n("b4b0"), i = 1 / 0, o = 17976931348623157e292; function a(e) { if (!e) return 0 === e ? e : 0; if (e = r(e), e === i || e === -i) { var t = e < 0 ? -1 : 1; return t * o } return e === e ? e : 0 } e.exports = a }, "642a": function (e, t, n) { var r = n("966f"), i = n("3bb4"), o = n("20ec"); function a(e) { var t = i(e); return 1 == t.length && t[0][2] ? o(t[0][0], t[0][1]) : function (n) { return n === e || r(n, e, t) } } e.exports = a }, "656b": function (e, t, n) { var r = n("e2e4"), i = n("f4d6"); function o(e, t) { t = r(t, e); var n = 0, o = t.length; while (null != e && n < o) e = e[i(t[n++])]; return n && n == o ? e : void 0 } e.exports = o }, "65db": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("eo", { months: "januaro_februaro_marto_aprilo_majo_junio_julio_a怒gusto_septembro_oktobro_novembro_decembro".split("_"), monthsShort: "jan_feb_mart_apr_maj_jun_jul_a怒g_sept_okt_nov_dec".split("_"), weekdays: "diman膲o_lundo_mardo_merkredo_牡a怒do_vendredo_sabato".split("_"), weekdaysShort: "dim_lun_mard_merk_牡a怒_ven_sab".split("_"), weekdaysMin: "di_lu_ma_me_牡a_ve_sa".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY-MM-DD", LL: "[la] D[-an de] MMMM, YYYY", LLL: "[la] D[-an de] MMMM, YYYY HH:mm", LLLL: "dddd[n], [la] D[-an de] MMMM, YYYY HH:mm", llll: "ddd, [la] D[-an de] MMM, YYYY HH:mm" }, meridiemParse: /[ap]\.t\.m/i, isPM: function (e) { return "p" === e.charAt(0).toLowerCase() }, meridiem: function (e, t, n) { return e > 11 ? n ? "p.t.m." : "P.T.M." : n ? "a.t.m." : "A.T.M." }, calendar: { sameDay: "[Hodia怒 je] LT", nextDay: "[Morga怒 je] LT", nextWeek: "dddd[n je] LT", lastDay: "[Hiera怒 je] LT", lastWeek: "[pasintan] dddd[n je] LT", sameElse: "L" }, relativeTime: { future: "post %s", past: "anta怒 %s", s: "kelkaj sekundoj", ss: "%d sekundoj", m: "unu minuto", mm: "%d minutoj", h: "unu horo", hh: "%d horoj", d: "unu tago", dd: "%d tagoj", M: "unu monato", MM: "%d monatoj", y: "unu jaro", yy: "%d jaroj" }, dayOfMonthOrdinalParse: /\d{1,2}a/, ordinal: "%da", week: { dow: 1, doy: 7 } }); return t
+                    }))
+                }, 6604: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t["default"] = { today: "浠婂ぉ", now: "姝ゅ埢", backToToday: "杩斿洖浠婂ぉ", ok: "纭畾", timeSelect: "閫夋嫨鏃堕棿", dateSelect: "閫夋嫨鏃ユ湡", weekSelect: "閫夋嫨鍛�", clear: "娓呴櫎", month: "鏈�", year: "骞�", previousMonth: "涓婁釜鏈� (缈婚〉涓婇敭)", nextMonth: "涓嬩釜鏈� (缈婚〉涓嬮敭)", monthSelect: "閫夋嫨鏈堜唤", yearSelect: "閫夋嫨骞翠唤", decadeSelect: "閫夋嫨骞翠唬", yearFormat: "YYYY骞�", dayFormat: "D鏃�", dateFormat: "YYYY骞碝鏈圖鏃�", dateTimeFormat: "YYYY骞碝鏈圖鏃� HH鏃秏m鍒唖s绉�", previousYear: "涓婁竴骞� (Control閿姞宸︽柟鍚戦敭)", nextYear: "涓嬩竴骞� (Control閿姞鍙虫柟鍚戦敭)", previousDecade: "涓婁竴骞翠唬", nextDecade: "涓嬩竴骞翠唬", previousCentury: "涓婁竴涓栫邯", nextCentury: "涓嬩竴涓栫邯" } }, "66cb": function (e, t, n) { var r; (function (i) { var o = /^\s+/, a = /\s+$/, s = 0, c = i.round, l = i.min, u = i.max, h = i.random; function f(e, t) { if (e = e || "", t = t || {}, e instanceof f) return e; if (!(this instanceof f)) return new f(e, t); var n = d(e); this._originalInput = e, this._r = n.r, this._g = n.g, this._b = n.b, this._a = n.a, this._roundA = c(100 * this._a) / 100, this._format = t.format || n.format, this._gradientType = t.gradientType, this._r < 1 && (this._r = c(this._r)), this._g < 1 && (this._g = c(this._g)), this._b < 1 && (this._b = c(this._b)), this._ok = n.ok, this._tc_id = s++ } function d(e) { var t = { r: 0, g: 0, b: 0 }, n = 1, r = null, i = null, o = null, a = !1, s = !1; return "string" == typeof e && (e = X(e)), "object" == typeof e && (G(e.r) && G(e.g) && G(e.b) ? (t = p(e.r, e.g, e.b), a = !0, s = "%" === String(e.r).substr(-1) ? "prgb" : "rgb") : G(e.h) && G(e.s) && G(e.v) ? (r = W(e.s), i = W(e.v), t = y(e.h, r, i), a = !0, s = "hsv") : G(e.h) && G(e.s) && G(e.l) && (r = W(e.s), o = W(e.l), t = m(e.h, r, o), a = !0, s = "hsl"), e.hasOwnProperty("a") && (n = e.a)), n = I(n), { ok: a, format: e.format || s, r: l(255, u(t.r, 0)), g: l(255, u(t.g, 0)), b: l(255, u(t.b, 0)), a: n } } function p(e, t, n) { return { r: 255 * N(e, 255), g: 255 * N(t, 255), b: 255 * N(n, 255) } } function v(e, t, n) { e = N(e, 255), t = N(t, 255), n = N(n, 255); var r, i, o = u(e, t, n), a = l(e, t, n), s = (o + a) / 2; if (o == a) r = i = 0; else { var c = o - a; switch (i = s > .5 ? c / (2 - o - a) : c / (o + a), o) { case e: r = (t - n) / c + (t < n ? 6 : 0); break; case t: r = (n - e) / c + 2; break; case n: r = (e - t) / c + 4; break }r /= 6 } return { h: r, s: i, l: s } } function m(e, t, n) { var r, i, o; function a(e, t, n) { return n < 0 && (n += 1), n > 1 && (n -= 1), n < 1 / 6 ? e + 6 * (t - e) * n : n < .5 ? t : n < 2 / 3 ? e + (t - e) * (2 / 3 - n) * 6 : e } if (e = N(e, 360), t = N(t, 100), n = N(n, 100), 0 === t) r = i = o = n; else { var s = n < .5 ? n * (1 + t) : n + t - n * t, c = 2 * n - s; r = a(c, s, e + 1 / 3), i = a(c, s, e), o = a(c, s, e - 1 / 3) } return { r: 255 * r, g: 255 * i, b: 255 * o } } function g(e, t, n) { e = N(e, 255), t = N(t, 255), n = N(n, 255); var r, i, o = u(e, t, n), a = l(e, t, n), s = o, c = o - a; if (i = 0 === o ? 0 : c / o, o == a) r = 0; else { switch (o) { case e: r = (t - n) / c + (t < n ? 6 : 0); break; case t: r = (n - e) / c + 2; break; case n: r = (e - t) / c + 4; break }r /= 6 } return { h: r, s: i, v: s } } function y(e, t, n) { e = 6 * N(e, 360), t = N(t, 100), n = N(n, 100); var r = i.floor(e), o = e - r, a = n * (1 - t), s = n * (1 - o * t), c = n * (1 - (1 - o) * t), l = r % 6, u = [n, s, a, a, c, n][l], h = [c, n, n, s, a, a][l], f = [a, a, c, n, n, s][l]; return { r: 255 * u, g: 255 * h, b: 255 * f } } function b(e, t, n, r) { var i = [B(c(e).toString(16)), B(c(t).toString(16)), B(c(n).toString(16))]; return r && i[0].charAt(0) == i[0].charAt(1) && i[1].charAt(0) == i[1].charAt(1) && i[2].charAt(0) == i[2].charAt(1) ? i[0].charAt(0) + i[1].charAt(0) + i[2].charAt(0) : i.join("") } function x(e, t, n, r, i) { var o = [B(c(e).toString(16)), B(c(t).toString(16)), B(c(n).toString(16)), B(q(r))]; return i && o[0].charAt(0) == o[0].charAt(1) && o[1].charAt(0) == o[1].charAt(1) && o[2].charAt(0) == o[2].charAt(1) && o[3].charAt(0) == o[3].charAt(1) ? o[0].charAt(0) + o[1].charAt(0) + o[2].charAt(0) + o[3].charAt(0) : o.join("") } function w(e, t, n, r) { var i = [B(q(r)), B(c(e).toString(16)), B(c(t).toString(16)), B(c(n).toString(16))]; return i.join("") } function _(e, t) { t = 0 === t ? 0 : t || 10; var n = f(e).toHsl(); return n.s -= t / 100, n.s = R(n.s), f(n) } function C(e, t) { t = 0 === t ? 0 : t || 10; var n = f(e).toHsl(); return n.s += t / 100, n.s = R(n.s), f(n) } function M(e) { return f(e).desaturate(100) } function O(e, t) { t = 0 === t ? 0 : t || 10; var n = f(e).toHsl(); return n.l += t / 100, n.l = R(n.l), f(n) } function k(e, t) { t = 0 === t ? 0 : t || 10; var n = f(e).toRgb(); return n.r = u(0, l(255, n.r - c(-t / 100 * 255))), n.g = u(0, l(255, n.g - c(-t / 100 * 255))), n.b = u(0, l(255, n.b - c(-t / 100 * 255))), f(n) } function S(e, t) { t = 0 === t ? 0 : t || 10; var n = f(e).toHsl(); return n.l -= t / 100, n.l = R(n.l), f(n) } function T(e, t) { var n = f(e).toHsl(), r = (n.h + t) % 360; return n.h = r < 0 ? 360 + r : r, f(n) } function A(e) { var t = f(e).toHsl(); return t.h = (t.h + 180) % 360, f(t) } function L(e) { var t = f(e).toHsl(), n = t.h; return [f(e), f({ h: (n + 120) % 360, s: t.s, l: t.l }), f({ h: (n + 240) % 360, s: t.s, l: t.l })] } function j(e) { var t = f(e).toHsl(), n = t.h; return [f(e), f({ h: (n + 90) % 360, s: t.s, l: t.l }), f({ h: (n + 180) % 360, s: t.s, l: t.l }), f({ h: (n + 270) % 360, s: t.s, l: t.l })] } function z(e) { var t = f(e).toHsl(), n = t.h; return [f(e), f({ h: (n + 72) % 360, s: t.s, l: t.l }), f({ h: (n + 216) % 360, s: t.s, l: t.l })] } function E(e, t, n) { t = t || 6, n = n || 30; var r = f(e).toHsl(), i = 360 / n, o = [f(e)]; for (r.h = (r.h - (i * t >> 1) + 720) % 360; --t;)r.h = (r.h + i) % 360, o.push(f(r)); return o } function P(e, t) { t = t || 6; var n = f(e).toHsv(), r = n.h, i = n.s, o = n.v, a = [], s = 1 / t; while (t--) a.push(f({ h: r, s: i, v: o })), o = (o + s) % 1; return a } f.prototype = { isDark: function () { return this.getBrightness() < 128 }, isLight: function () { return !this.isDark() }, isValid: function () { return this._ok }, getOriginalInput: function () { return this._originalInput }, getFormat: function () { return this._format }, getAlpha: function () { return this._a }, getBrightness: function () { var e = this.toRgb(); return (299 * e.r + 587 * e.g + 114 * e.b) / 1e3 }, getLuminance: function () { var e, t, n, r, o, a, s = this.toRgb(); return e = s.r / 255, t = s.g / 255, n = s.b / 255, r = e <= .03928 ? e / 12.92 : i.pow((e + .055) / 1.055, 2.4), o = t <= .03928 ? t / 12.92 : i.pow((t + .055) / 1.055, 2.4), a = n <= .03928 ? n / 12.92 : i.pow((n + .055) / 1.055, 2.4), .2126 * r + .7152 * o + .0722 * a }, setAlpha: function (e) { return this._a = I(e), this._roundA = c(100 * this._a) / 100, this }, toHsv: function () { var e = g(this._r, this._g, this._b); return { h: 360 * e.h, s: e.s, v: e.v, a: this._a } }, toHsvString: function () { var e = g(this._r, this._g, this._b), t = c(360 * e.h), n = c(100 * e.s), r = c(100 * e.v); return 1 == this._a ? "hsv(" + t + ", " + n + "%, " + r + "%)" : "hsva(" + t + ", " + n + "%, " + r + "%, " + this._roundA + ")" }, toHsl: function () { var e = v(this._r, this._g, this._b); return { h: 360 * e.h, s: e.s, l: e.l, a: this._a } }, toHslString: function () { var e = v(this._r, this._g, this._b), t = c(360 * e.h), n = c(100 * e.s), r = c(100 * e.l); return 1 == this._a ? "hsl(" + t + ", " + n + "%, " + r + "%)" : "hsla(" + t + ", " + n + "%, " + r + "%, " + this._roundA + ")" }, toHex: function (e) { return b(this._r, this._g, this._b, e) }, toHexString: function (e) { return "#" + this.toHex(e) }, toHex8: function (e) { return x(this._r, this._g, this._b, this._a, e) }, toHex8String: function (e) { return "#" + this.toHex8(e) }, toRgb: function () { return { r: c(this._r), g: c(this._g), b: c(this._b), a: this._a } }, toRgbString: function () { return 1 == this._a ? "rgb(" + c(this._r) + ", " + c(this._g) + ", " + c(this._b) + ")" : "rgba(" + c(this._r) + ", " + c(this._g) + ", " + c(this._b) + ", " + this._roundA + ")" }, toPercentageRgb: function () { return { r: c(100 * N(this._r, 255)) + "%", g: c(100 * N(this._g, 255)) + "%", b: c(100 * N(this._b, 255)) + "%", a: this._a } }, toPercentageRgbString: function () { return 1 == this._a ? "rgb(" + c(100 * N(this._r, 255)) + "%, " + c(100 * N(this._g, 255)) + "%, " + c(100 * N(this._b, 255)) + "%)" : "rgba(" + c(100 * N(this._r, 255)) + "%, " + c(100 * N(this._g, 255)) + "%, " + c(100 * N(this._b, 255)) + "%, " + this._roundA + ")" }, toName: function () { return 0 === this._a ? "transparent" : !(this._a < 1) && (H[b(this._r, this._g, this._b, !0)] || !1) }, toFilter: function (e) { var t = "#" + w(this._r, this._g, this._b, this._a), n = t, r = this._gradientType ? "GradientType = 1, " : ""; if (e) { var i = f(e); n = "#" + w(i._r, i._g, i._b, i._a) } return "progid:DXImageTransform.Microsoft.gradient(" + r + "startColorstr=" + t + ",endColorstr=" + n + ")" }, toString: function (e) { var t = !!e; e = e || this._format; var n = !1, r = this._a < 1 && this._a >= 0, i = !t && r && ("hex" === e || "hex6" === e || "hex3" === e || "hex4" === e || "hex8" === e || "name" === e); return i ? "name" === e && 0 === this._a ? this.toName() : this.toRgbString() : ("rgb" === e && (n = this.toRgbString()), "prgb" === e && (n = this.toPercentageRgbString()), "hex" !== e && "hex6" !== e || (n = this.toHexString()), "hex3" === e && (n = this.toHexString(!0)), "hex4" === e && (n = this.toHex8String(!0)), "hex8" === e && (n = this.toHex8String()), "name" === e && (n = this.toName()), "hsl" === e && (n = this.toHslString()), "hsv" === e && (n = this.toHsvString()), n || this.toHexString()) }, clone: function () { return f(this.toString()) }, _applyModification: function (e, t) { var n = e.apply(null, [this].concat([].slice.call(t))); return this._r = n._r, this._g = n._g, this._b = n._b, this.setAlpha(n._a), this }, lighten: function () { return this._applyModification(O, arguments) }, brighten: function () { return this._applyModification(k, arguments) }, darken: function () { return this._applyModification(S, arguments) }, desaturate: function () { return this._applyModification(_, arguments) }, saturate: function () { return this._applyModification(C, arguments) }, greyscale: function () { return this._applyModification(M, arguments) }, spin: function () { return this._applyModification(T, arguments) }, _applyCombination: function (e, t) { return e.apply(null, [this].concat([].slice.call(t))) }, analogous: function () { return this._applyCombination(E, arguments) }, complement: function () { return this._applyCombination(A, arguments) }, monochromatic: function () { return this._applyCombination(P, arguments) }, splitcomplement: function () { return this._applyCombination(z, arguments) }, triad: function () { return this._applyCombination(L, arguments) }, tetrad: function () { return this._applyCombination(j, arguments) } }, f.fromRatio = function (e, t) { if ("object" == typeof e) { var n = {}; for (var r in e) e.hasOwnProperty(r) && (n[r] = "a" === r ? e[r] : W(e[r])); e = n } return f(e, t) }, f.equals = function (e, t) { return !(!e || !t) && f(e).toRgbString() == f(t).toRgbString() }, f.random = function () { return f.fromRatio({ r: h(), g: h(), b: h() }) }, f.mix = function (e, t, n) { n = 0 === n ? 0 : n || 50; var r = f(e).toRgb(), i = f(t).toRgb(), o = n / 100, a = { r: (i.r - r.r) * o + r.r, g: (i.g - r.g) * o + r.g, b: (i.b - r.b) * o + r.b, a: (i.a - r.a) * o + r.a }; return f(a) }, f.readability = function (e, t) { var n = f(e), r = f(t); return (i.max(n.getLuminance(), r.getLuminance()) + .05) / (i.min(n.getLuminance(), r.getLuminance()) + .05) }, f.isReadable = function (e, t, n) { var r, i, o = f.readability(e, t); switch (i = !1, r = J(n), r.level + r.size) { case "AAsmall": case "AAAlarge": i = o >= 4.5; break; case "AAlarge": i = o >= 3; break; case "AAAsmall": i = o >= 7; break }return i }, f.mostReadable = function (e, t, n) { var r, i, o, a, s = null, c = 0; n = n || {}, i = n.includeFallbackColors, o = n.level, a = n.size; for (var l = 0; l < t.length; l++)r = f.readability(e, t[l]), r > c && (c = r, s = f(t[l])); return f.isReadable(e, s, { level: o, size: a }) || !i ? s : (n.includeFallbackColors = !1, f.mostReadable(e, ["#fff", "#000"], n)) }; var D = f.names = { aliceblue: "f0f8ff", antiquewhite: "faebd7", aqua: "0ff", aquamarine: "7fffd4", azure: "f0ffff", beige: "f5f5dc", bisque: "ffe4c4", black: "000", blanchedalmond: "ffebcd", blue: "00f", blueviolet: "8a2be2", brown: "a52a2a", burlywood: "deb887", burntsienna: "ea7e5d", cadetblue: "5f9ea0", chartreuse: "7fff00", chocolate: "d2691e", coral: "ff7f50", cornflowerblue: "6495ed", cornsilk: "fff8dc", crimson: "dc143c", cyan: "0ff", darkblue: "00008b", darkcyan: "008b8b", darkgoldenrod: "b8860b", darkgray: "a9a9a9", darkgreen: "006400", darkgrey: "a9a9a9", darkkhaki: "bdb76b", darkmagenta: "8b008b", darkolivegreen: "556b2f", darkorange: "ff8c00", darkorchid: "9932cc", darkred: "8b0000", darksalmon: "e9967a", darkseagreen: "8fbc8f", darkslateblue: "483d8b", darkslategray: "2f4f4f", darkslategrey: "2f4f4f", darkturquoise: "00ced1", darkviolet: "9400d3", deeppink: "ff1493", deepskyblue: "00bfff", dimgray: "696969", dimgrey: "696969", dodgerblue: "1e90ff", firebrick: "b22222", floralwhite: "fffaf0", forestgreen: "228b22", fuchsia: "f0f", gainsboro: "dcdcdc", ghostwhite: "f8f8ff", gold: "ffd700", goldenrod: "daa520", gray: "808080", green: "008000", greenyellow: "adff2f", grey: "808080", honeydew: "f0fff0", hotpink: "ff69b4", indianred: "cd5c5c", indigo: "4b0082", ivory: "fffff0", khaki: "f0e68c", lavender: "e6e6fa", lavenderblush: "fff0f5", lawngreen: "7cfc00", lemonchiffon: "fffacd", lightblue: "add8e6", lightcoral: "f08080", lightcyan: "e0ffff", lightgoldenrodyellow: "fafad2", lightgray: "d3d3d3", lightgreen: "90ee90", lightgrey: "d3d3d3", lightpink: "ffb6c1", lightsalmon: "ffa07a", lightseagreen: "20b2aa", lightskyblue: "87cefa", lightslategray: "789", lightslategrey: "789", lightsteelblue: "b0c4de", lightyellow: "ffffe0", lime: "0f0", limegreen: "32cd32", linen: "faf0e6", magenta: "f0f", maroon: "800000", mediumaquamarine: "66cdaa", mediumblue: "0000cd", mediumorchid: "ba55d3", mediumpurple: "9370db", mediumseagreen: "3cb371", mediumslateblue: "7b68ee", mediumspringgreen: "00fa9a", mediumturquoise: "48d1cc", mediumvioletred: "c71585", midnightblue: "191970", mintcream: "f5fffa", mistyrose: "ffe4e1", moccasin: "ffe4b5", navajowhite: "ffdead", navy: "000080", oldlace: "fdf5e6", olive: "808000", olivedrab: "6b8e23", orange: "ffa500", orangered: "ff4500", orchid: "da70d6", palegoldenrod: "eee8aa", palegreen: "98fb98", paleturquoise: "afeeee", palevioletred: "db7093", papayawhip: "ffefd5", peachpuff: "ffdab9", peru: "cd853f", pink: "ffc0cb", plum: "dda0dd", powderblue: "b0e0e6", purple: "800080", rebeccapurple: "663399", red: "f00", rosybrown: "bc8f8f", royalblue: "4169e1", saddlebrown: "8b4513", salmon: "fa8072", sandybrown: "f4a460", seagreen: "2e8b57", seashell: "fff5ee", sienna: "a0522d", silver: "c0c0c0", skyblue: "87ceeb", slateblue: "6a5acd", slategray: "708090", slategrey: "708090", snow: "fffafa", springgreen: "00ff7f", steelblue: "4682b4", tan: "d2b48c", teal: "008080", thistle: "d8bfd8", tomato: "ff6347", turquoise: "40e0d0", violet: "ee82ee", wheat: "f5deb3", white: "fff", whitesmoke: "f5f5f5", yellow: "ff0", yellowgreen: "9acd32" }, H = f.hexNames = V(D); function V(e) { var t = {}; for (var n in e) e.hasOwnProperty(n) && (t[e[n]] = n); return t } function I(e) { return e = parseFloat(e), (isNaN(e) || e < 0 || e > 1) && (e = 1), e } function N(e, t) { Y(e) && (e = "100%"); var n = $(e); return e = l(t, u(0, parseFloat(e))), n && (e = parseInt(e * t, 10) / 100), i.abs(e - t) < 1e-6 ? 1 : e % t / parseFloat(t) } function R(e) { return l(1, u(0, e)) } function F(e) { return parseInt(e, 16) } function Y(e) { return "string" == typeof e && -1 != e.indexOf(".") && 1 === parseFloat(e) } function $(e) { return "string" === typeof e && -1 != e.indexOf("%") } function B(e) { return 1 == e.length ? "0" + e : "" + e } function W(e) { return e <= 1 && (e = 100 * e + "%"), e } function q(e) { return i.round(255 * parseFloat(e)).toString(16) } function U(e) { return F(e) / 255 } var K = function () { var e = "[-\\+]?\\d+%?", t = "[-\\+]?\\d*\\.\\d+%?", n = "(?:" + t + ")|(?:" + e + ")", r = "[\\s|\\(]+(" + n + ")[,|\\s]+(" + n + ")[,|\\s]+(" + n + ")\\s*\\)?", i = "[\\s|\\(]+(" + n + ")[,|\\s]+(" + n + ")[,|\\s]+(" + n + ")[,|\\s]+(" + n + ")\\s*\\)?"; return { CSS_UNIT: new RegExp(n), rgb: new RegExp("rgb" + r), rgba: new RegExp("rgba" + i), hsl: new RegExp("hsl" + r), hsla: new RegExp("hsla" + i), hsv: new RegExp("hsv" + r), hsva: new RegExp("hsva" + i), hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ } }(); function G(e) { return !!K.CSS_UNIT.exec(e) } function X(e) { e = e.replace(o, "").replace(a, "").toLowerCase(); var t, n = !1; if (D[e]) e = D[e], n = !0; else if ("transparent" == e) return { r: 0, g: 0, b: 0, a: 0, format: "name" }; return (t = K.rgb.exec(e)) ? { r: t[1], g: t[2], b: t[3] } : (t = K.rgba.exec(e)) ? { r: t[1], g: t[2], b: t[3], a: t[4] } : (t = K.hsl.exec(e)) ? { h: t[1], s: t[2], l: t[3] } : (t = K.hsla.exec(e)) ? { h: t[1], s: t[2], l: t[3], a: t[4] } : (t = K.hsv.exec(e)) ? { h: t[1], s: t[2], v: t[3] } : (t = K.hsva.exec(e)) ? { h: t[1], s: t[2], v: t[3], a: t[4] } : (t = K.hex8.exec(e)) ? { r: F(t[1]), g: F(t[2]), b: F(t[3]), a: U(t[4]), format: n ? "name" : "hex8" } : (t = K.hex6.exec(e)) ? { r: F(t[1]), g: F(t[2]), b: F(t[3]), format: n ? "name" : "hex" } : (t = K.hex4.exec(e)) ? { r: F(t[1] + "" + t[1]), g: F(t[2] + "" + t[2]), b: F(t[3] + "" + t[3]), a: U(t[4] + "" + t[4]), format: n ? "name" : "hex8" } : !!(t = K.hex3.exec(e)) && { r: F(t[1] + "" + t[1]), g: F(t[2] + "" + t[2]), b: F(t[3] + "" + t[3]), format: n ? "name" : "hex" } } function J(e) { var t, n; return e = e || { level: "AA", size: "small" }, t = (e.level || "AA").toUpperCase(), n = (e.size || "small").toLowerCase(), "AA" !== t && "AAA" !== t && (t = "AA"), "small" !== n && "large" !== n && (n = "small"), { level: t, size: n } } e.exports ? e.exports = f : (r = function () { return f }.call(t, n, t, e), void 0 === r || (e.exports = r)) })(Math) }, 6718: function (e, t, n) { var r = n("e53d"), i = n("584a"), o = n("b8e3"), a = n("ccb9"), s = n("d9f6").f; e.exports = function (e) { var t = i.Symbol || (i.Symbol = o ? {} : r.Symbol || {}); "_" == e.charAt(0) || e in t || s(t, e, { value: a.f(e) }) } }, 6747: function (e, t) { var n = Array.isArray; e.exports = n }, 6762: function (e, t, n) { "use strict"; var r = n("5ca1"), i = n("c366")(!0); r(r.P, "Array", { includes: function (e) { return i(this, e, arguments.length > 1 ? arguments[1] : void 0) } }), n("9c6c")("includes") }, "677e": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n("f6c0"), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } t["default"] = i["default"] }, 6784: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = ["噩賳賵乇賷", "賮賷亘乇賵乇賷", "賲丕乇趩", "丕倬乇賷賱", "賲卅賷", "噩賵賳", "噩賵賱丕亍賽", "丌诏爻俳", "爻賷倬俳賲亘乇", "丌讵俳賵亘乇", "賳賵賲亘乇", "趭爻賲亘乇"], n = ["丌趩乇", "爻賵賲乇", "丕诒丕乇賵", "丕乇亘毓", "禺賲賷爻", "噩賲毓", "趪賳趪乇"], r = e.defineLocale("sd", { months: t, monthsShort: t, weekdays: n, weekdaysShort: n, weekdaysMin: n, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd貙 D MMMM YYYY HH:mm" }, meridiemParse: /氐亘丨|卮丕賲/, isPM: function (e) { return "卮丕賲" === e }, meridiem: function (e, t, n) { return e < 12 ? "氐亘丨" : "卮丕賲" }, calendar: { sameDay: "[丕趧] LT", nextDay: "[爻趢丕诨賷] LT", nextWeek: "dddd [丕诔賷賳 賴賮鬲賷 鬲賷] LT", lastDay: "[讵丕賱賴賴] LT", lastWeek: "[诏夭乇賷賱 賴賮鬲賷] dddd [鬲賷] LT", sameElse: "L" }, relativeTime: { future: "%s 倬賵亍", past: "%s 丕诔", s: "趩賳丿 爻賷讵賳趭", ss: "%d 爻賷讵賳趭", m: "賴讵 賲賳俳", mm: "%d 賲賳俳", h: "賴讵 讵賱丕讵", hh: "%d 讵賱丕讵", d: "賴讵 趶賷賳賴賳", dd: "%d 趶賷賳賴賳", M: "賴讵 賲賴賷賳賵", MM: "%d 賲賴賷賳丕", y: "賴讵 爻丕賱", yy: "%d 爻丕賱" }, preparse: function (e) { return e.replace(/貙/g, ",") }, postformat: function (e) { return e.replace(/,/g, "貙") }, week: { dow: 1, doy: 4 } }); return r
+                    }))
+                }, "67ab": function (e, t, n) { var r = n("ca5a")("meta"), i = n("d3f4"), o = n("69a8"), a = n("86cc").f, s = 0, c = Object.isExtensible || function () { return !0 }, l = !n("79e5")((function () { return c(Object.preventExtensions({})) })), u = function (e) { a(e, r, { value: { i: "O" + ++s, w: {} } }) }, h = function (e, t) { if (!i(e)) return "symbol" == typeof e ? e : ("string" == typeof e ? "S" : "P") + e; if (!o(e, r)) { if (!c(e)) return "F"; if (!t) return "E"; u(e) } return e[r].i }, f = function (e, t) { if (!o(e, r)) { if (!c(e)) return !0; if (!t) return !1; u(e) } return e[r].w }, d = function (e) { return l && p.NEED && c(e) && !o(e, r) && u(e), e }, p = e.exports = { KEY: r, NEED: !1, fastKey: h, getWeak: f, onFreeze: d } }, "67ca": function (e, t, n) { var r = n("cb5a"); function i(e, t) { var n = this.__data__, i = r(n, e); return i < 0 ? (++this.size, n.push([e, t])) : n[i][1] = t, this } e.exports = i }, 6821: function (e, t, n) { var r = n("626a"), i = n("be13"); e.exports = function (e) { return r(i(e)) } }, 6887: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t, n) { var r = { mm: "munutenn", MM: "miz", dd: "devezh" }; return e + " " + i(r[n], e) } function n(e) { switch (r(e)) { case 1: case 3: case 4: case 5: case 9: return e + " bloaz"; default: return e + " vloaz" } } function r(e) { return e > 9 ? r(e % 10) : e } function i(e, t) { return 2 === t ? o(e) : e } function o(e) { var t = { m: "v", b: "v", d: "z" }; return void 0 === t[e.charAt(0)] ? e : t[e.charAt(0)] + e.substring(1) } var a = [/^gen/i, /^c[始\']hwe/i, /^meu/i, /^ebr/i, /^mae/i, /^(mez|eve)/i, /^gou/i, /^eos/i, /^gwe/i, /^her/i, /^du/i, /^ker/i], s = /^(genver|c[始\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[始\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i, c = /^(genver|c[始\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i, l = /^(gen|c[始\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i, u = [/^sul/i, /^lun/i, /^meurzh/i, /^merc[始\']her/i, /^yaou/i, /^gwener/i, /^sadorn/i], h = [/^Sul/i, /^Lun/i, /^Meu/i, /^Mer/i, /^Yao/i, /^Gwe/i, /^Sad/i], f = [/^Su/i, /^Lu/i, /^Me([^r]|$)/i, /^Mer/i, /^Ya/i, /^Gw/i, /^Sa/i], d = e.defineLocale("br", { months: "Genver_C始hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"), monthsShort: "Gen_C始hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"), weekdays: "Sul_Lun_Meurzh_Merc始her_Yaou_Gwener_Sadorn".split("_"), weekdaysShort: "Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"), weekdaysMin: "Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"), weekdaysParse: f, fullWeekdaysParse: u, shortWeekdaysParse: h, minWeekdaysParse: f, monthsRegex: s, monthsShortRegex: s, monthsStrictRegex: c, monthsShortStrictRegex: l, monthsParse: a, longMonthsParse: a, shortMonthsParse: a, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D [a viz] MMMM YYYY", LLL: "D [a viz] MMMM YYYY HH:mm", LLLL: "dddd, D [a viz] MMMM YYYY HH:mm" }, calendar: { sameDay: "[Hiziv da] LT", nextDay: "[Warc始hoazh da] LT", nextWeek: "dddd [da] LT", lastDay: "[Dec始h da] LT", lastWeek: "dddd [paset da] LT", sameElse: "L" }, relativeTime: { future: "a-benn %s", past: "%s 始zo", s: "un nebeud segondenno霉", ss: "%d eilenn", m: "ur vunutenn", mm: t, h: "un eur", hh: "%d eur", d: "un devezh", dd: t, M: "ur miz", MM: t, y: "ur bloaz", yy: n }, dayOfMonthOrdinalParse: /\d{1,2}(a帽|vet)/, ordinal: function (e) { var t = 1 === e ? "a帽" : "vet"; return e + t }, week: { dow: 1, doy: 4 }, meridiemParse: /a.m.|g.m./, isPM: function (e) { return "g.m." === e }, meridiem: function (e, t, n) { return e < 12 ? "a.m." : "g.m." } }); return d
+                    }))
+                }, "688b": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("mi", { months: "Kohi-t膩te_Hui-tanguru_Pout奴-te-rangi_Paenga-wh膩wh膩_Haratua_Pipiri_H艒ngoingoi_Here-turi-k艒k膩_Mahuru_Whiringa-膩-nuku_Whiringa-膩-rangi_Hakihea".split("_"), monthsShort: "Kohi_Hui_Pou_Pae_Hara_Pipi_H艒ngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"), monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i, weekdays: "R膩tapu_Mane_T奴rei_Wenerei_T膩ite_Paraire_H膩tarei".split("_"), weekdaysShort: "Ta_Ma_T奴_We_T膩i_Pa_H膩".split("_"), weekdaysMin: "Ta_Ma_T奴_We_T膩i_Pa_H膩".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY [i] HH:mm", LLLL: "dddd, D MMMM YYYY [i] HH:mm" }, calendar: { sameDay: "[i teie mahana, i] LT", nextDay: "[apopo i] LT", nextWeek: "dddd [i] LT", lastDay: "[inanahi i] LT", lastWeek: "dddd [whakamutunga i] LT", sameElse: "L" }, relativeTime: { future: "i roto i %s", past: "%s i mua", s: "te h膿kona ruarua", ss: "%d h膿kona", m: "he meneti", mm: "%d meneti", h: "te haora", hh: "%d haora", d: "he ra", dd: "%d ra", M: "he marama", MM: "%d marama", y: "he tau", yy: "%d tau" }, dayOfMonthOrdinalParse: /\d{1,2}潞/, ordinal: "%d潞", week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, 6909: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("mk", { months: "褬邪薪褍邪褉懈_褎械胁褉褍邪褉懈_屑邪褉褌_邪锌褉懈谢_屑邪褬_褬褍薪懈_褬褍谢懈_邪胁谐褍褋褌_褋械锌褌械屑胁褉懈_芯泻褌芯屑胁褉懈_薪芯械屑胁褉懈_写械泻械屑胁褉懈".split("_"), monthsShort: "褬邪薪_褎械胁_屑邪褉_邪锌褉_屑邪褬_褬褍薪_褬褍谢_邪胁谐_褋械锌_芯泻褌_薪芯械_写械泻".split("_"), weekdays: "薪械写械谢邪_锌芯薪械写械谢薪懈泻_胁褌芯褉薪懈泻_褋褉械写邪_褔械褌胁褉褌芯泻_锌械褌芯泻_褋邪斜芯褌邪".split("_"), weekdaysShort: "薪械写_锌芯薪_胁褌芯_褋褉械_褔械褌_锌械褌_褋邪斜".split("_"), weekdaysMin: "薪e_锌o_胁褌_褋褉_褔械_锌械_褋a".split("_"), longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "D.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY H:mm", LLLL: "dddd, D MMMM YYYY H:mm" }, calendar: { sameDay: "[袛械薪械褋 胁芯] LT", nextDay: "[校褌褉械 胁芯] LT", nextWeek: "[袙芯] dddd [胁芯] LT", lastDay: "[袙褔械褉邪 胁芯] LT", lastWeek: function () { switch (this.day()) { case 0: case 3: case 6: return "[袠蟹屑懈薪邪褌邪褌邪] dddd [胁芯] LT"; case 1: case 2: case 4: case 5: return "[袠蟹屑懈薪邪褌懈芯褌] dddd [胁芯] LT" } }, sameElse: "L" }, relativeTime: { future: "蟹邪 %s", past: "锌褉械写 %s", s: "薪械泻芯谢泻褍 褋械泻褍薪写懈", ss: "%d 褋械泻褍薪写懈", m: "械写薪邪 屑懈薪褍褌邪", mm: "%d 屑懈薪褍褌懈", h: "械写械薪 褔邪褋", hh: "%d 褔邪褋邪", d: "械写械薪 写械薪", dd: "%d 写械薪邪", M: "械写械薪 屑械褋械褑", MM: "%d 屑械褋械褑懈", y: "械写薪邪 谐芯写懈薪邪", yy: "%d 谐芯写懈薪懈" }, dayOfMonthOrdinalParse: /\d{1,2}-(械胁|械薪|褌懈|胁懈|褉懈|屑懈)/, ordinal: function (e) { var t = e % 10, n = e % 100; return 0 === e ? e + "-械胁" : 0 === n ? e + "-械薪" : n > 10 && n < 20 ? e + "-褌懈" : 1 === t ? e + "-胁懈" : 2 === t ? e + "-褉懈" : 7 === t || 8 === t ? e + "-屑懈" : e + "-褌懈" }, week: { dow: 1, doy: 7 } }); return t
+                    }))
+                }, "69a8": function (e, t) { var n = {}.hasOwnProperty; e.exports = function (e, t) { return n.call(e, t) } }, "69d3": function (e, t, n) { n("6718")("asyncIterator") }, "69d5": function (e, t, n) { var r = n("cb5a"), i = Array.prototype, o = i.splice; function a(e) { var t = this.__data__, n = r(t, e); if (n < 0) return !1; var i = t.length - 1; return n == i ? t.pop() : o.call(t, n, 1), --this.size, !0 } e.exports = a }, "6a99": function (e, t, n) { var r = n("d3f4"); e.exports = function (e, t) { if (!r(e)) return e; var n, i; if (t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; if ("function" == typeof (n = e.valueOf) && !r(i = n.call(e))) return i; if (!t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; throw TypeError("Can't convert object to primitive value") } }, "6abf": function (e, t, n) { var r = n("e6f3"), i = n("1691").concat("length", "prototype"); t.f = Object.getOwnPropertyNames || function (e) { return r(e, i) } }, "6b4c": function (e, t) { var n = {}.toString; e.exports = function (e) { return n.call(e).slice(8, -1) } }, "6c1c": function (e, t, n) { n("c367"); for (var r = n("e53d"), i = n("35e8"), o = n("481b"), a = n("5168")("toStringTag"), s = "CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","), c = 0; c < s.length; c++) { var l = s[c], u = r[l], h = u && u.prototype; h && !h[a] && i(h, a, l), o[l] = o.Array } }, "6cd5": function (e, t, n) { }, "6ce3": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("nb", { months: "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), monthsShort: "jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"), monthsParseExact: !0, weekdays: "s酶ndag_mandag_tirsdag_onsdag_torsdag_fredag_l酶rdag".split("_"), weekdaysShort: "s酶._ma._ti._on._to._fr._l酶.".split("_"), weekdaysMin: "s酶_ma_ti_on_to_fr_l酶".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY [kl.] HH:mm", LLLL: "dddd D. MMMM YYYY [kl.] HH:mm" }, calendar: { sameDay: "[i dag kl.] LT", nextDay: "[i morgen kl.] LT", nextWeek: "dddd [kl.] LT", lastDay: "[i g氓r kl.] LT", lastWeek: "[forrige] dddd [kl.] LT", sameElse: "L" }, relativeTime: { future: "om %s", past: "%s siden", s: "noen sekunder", ss: "%d sekunder", m: "ett minutt", mm: "%d minutter", h: "en time", hh: "%d timer", d: "en dag", dd: "%d dager", M: "en m氓ned", MM: "%d m氓neder", y: "ett 氓r", yy: "%d 氓r" }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "6d08": function (e, t, n) { (function (t) { (function () { var n, r, i, o, a, s; "undefined" !== typeof performance && null !== performance && performance.now ? e.exports = function () { return performance.now() } : "undefined" !== typeof t && null !== t && t.hrtime ? (e.exports = function () { return (n() - a) / 1e6 }, r = t.hrtime, n = function () { var e; return e = r(), 1e9 * e[0] + e[1] }, o = n(), s = 1e9 * t.uptime(), a = o - s) : Date.now ? (e.exports = function () { return Date.now() - i }, i = Date.now()) : (e.exports = function () { return (new Date).getTime() - i }, i = (new Date).getTime()) }).call(this) }).call(this, n("4362")) }, "6d79": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 0: "-褕褨", 1: "-褕褨", 2: "-褕褨", 3: "-褕褨", 4: "-褕褨", 5: "-褕褨", 6: "-褕褘", 7: "-褕褨", 8: "-褕褨", 9: "-褕褘", 10: "-褕褘", 20: "-褕褘", 30: "-褕褘", 40: "-褕褘", 50: "-褕褨", 60: "-褕褘", 70: "-褕褨", 80: "-褕褨", 90: "-褕褘", 100: "-褕褨" }, n = e.defineLocale("kk", { months: "覜邪遥褌邪褉_邪覜锌邪薪_薪邪褍褉褘蟹_褋訖褍褨褉_屑邪屑褘褉_屑邪褍褋褘屑_褕褨谢写械_褌邪屑褘蟹_覜褘褉泻爷泄械泻_覜邪蟹邪薪_覜邪褉邪褕邪_卸械谢褌芯覜褋邪薪".split("_"), monthsShort: "覜邪遥_邪覜锌_薪邪褍_褋訖褍_屑邪屑_屑邪褍_褕褨谢_褌邪屑_覜褘褉_覜邪蟹_覜邪褉_卸械谢".split("_"), weekdays: "卸械泻褋械薪斜褨_写爷泄褋械薪斜褨_褋械泄褋械薪斜褨_褋訖褉褋械薪斜褨_斜械泄褋械薪斜褨_卸冶屑邪_褋械薪斜褨".split("_"), weekdaysShort: "卸械泻_写爷泄_褋械泄_褋訖褉_斜械泄_卸冶屑_褋械薪".split("_"), weekdaysMin: "卸泻_写泄_褋泄_褋褉_斜泄_卸屑_褋薪".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[袘爷谐褨薪 褋邪覔邪褌] LT", nextDay: "[袝褉褌械遥 褋邪覔邪褌] LT", nextWeek: "dddd [褋邪覔邪褌] LT", lastDay: "[袣械褕械 褋邪覔邪褌] LT", lastWeek: "[莹褌泻械薪 邪锌褌邪薪褘遥] dddd [褋邪覔邪褌] LT", sameElse: "L" }, relativeTime: { future: "%s 褨褕褨薪写械", past: "%s 斜冶褉褘薪", s: "斜褨褉薪械褕械 褋械泻褍薪写", ss: "%d 褋械泻褍薪写", m: "斜褨褉 屑懈薪褍褌", mm: "%d 屑懈薪褍褌", h: "斜褨褉 褋邪覔邪褌", hh: "%d 褋邪覔邪褌", d: "斜褨褉 泻爷薪", dd: "%d 泻爷薪", M: "斜褨褉 邪泄", MM: "%d 邪泄", y: "斜褨褉 卸褘谢", yy: "%d 卸褘谢" }, dayOfMonthOrdinalParse: /\d{1,2}-(褕褨|褕褘)/, ordinal: function (e) { var n = e % 10, r = e >= 100 ? 100 : null; return e + (t[e] || t[n] || t[r]) }, week: { dow: 1, doy: 7 } }); return n
+                    }))
+                }, "6d83": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("ar-tn", { months: "噩丕賳賮賷_賮賷賮乇賷_賲丕乇爻_兀賮乇賷賱_賲丕賷_噩賵丕賳_噩賵賷賱賷丞_兀賵鬲_爻亘鬲賲亘乇_兀賰鬲賵亘乇_賳賵賮賲亘乇_丿賷爻賲亘乇".split("_"), monthsShort: "噩丕賳賮賷_賮賷賮乇賷_賲丕乇爻_兀賮乇賷賱_賲丕賷_噩賵丕賳_噩賵賷賱賷丞_兀賵鬲_爻亘鬲賲亘乇_兀賰鬲賵亘乇_賳賵賮賲亘乇_丿賷爻賲亘乇".split("_"), weekdays: "丕賱兀丨丿_丕賱廿孬賳賷賳_丕賱孬賱丕孬丕亍_丕賱兀乇亘毓丕亍_丕賱禺賲賷爻_丕賱噩賲毓丞_丕賱爻亘鬲".split("_"), weekdaysShort: "兀丨丿_廿孬賳賷賳_孬賱丕孬丕亍_兀乇亘毓丕亍_禺賲賷爻_噩賲毓丞_爻亘鬲".split("_"), weekdaysMin: "丨_賳_孬_乇_禺_噩_爻".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[丕賱賷賵賲 毓賱賶 丕賱爻丕毓丞] LT", nextDay: "[睾丿丕 毓賱賶 丕賱爻丕毓丞] LT", nextWeek: "dddd [毓賱賶 丕賱爻丕毓丞] LT", lastDay: "[兀賲爻 毓賱賶 丕賱爻丕毓丞] LT", lastWeek: "dddd [毓賱賶 丕賱爻丕毓丞] LT", sameElse: "L" }, relativeTime: { future: "賮賷 %s", past: "賲賳匕 %s", s: "孬賵丕賳", ss: "%d 孬丕賳賷丞", m: "丿賯賷賯丞", mm: "%d 丿賯丕卅賯", h: "爻丕毓丞", hh: "%d 爻丕毓丕鬲", d: "賷賵賲", dd: "%d 兀賷丕賲", M: "卮賴乇", MM: "%d 兀卮賴乇", y: "爻賳丞", yy: "%d 爻賳賵丕鬲" }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "6da1": function (e, t, n) { "use strict"; var r = n("8b84"), i = n.n(r); i.a }, "6dd8": function (e, t, n) { "use strict"; (function (e) { var n = function () { if ("undefined" !== typeof Map) return Map; function e(e, t) { var n = -1; return e.some((function (e, r) { return e[0] === t && (n = r, !0) })), n } return function () { function t() { this.__entries__ = [] } return Object.defineProperty(t.prototype, "size", { get: function () { return this.__entries__.length }, enumerable: !0, configurable: !0 }), t.prototype.get = function (t) { var n = e(this.__entries__, t), r = this.__entries__[n]; return r && r[1] }, t.prototype.set = function (t, n) { var r = e(this.__entries__, t); ~r ? this.__entries__[r][1] = n : this.__entries__.push([t, n]) }, t.prototype.delete = function (t) { var n = this.__entries__, r = e(n, t); ~r && n.splice(r, 1) }, t.prototype.has = function (t) { return !!~e(this.__entries__, t) }, t.prototype.clear = function () { this.__entries__.splice(0) }, t.prototype.forEach = function (e, t) { void 0 === t && (t = null); for (var n = 0, r = this.__entries__; n < r.length; n++) { var i = r[n]; e.call(t, i[1], i[0]) } }, t }() }(), r = "undefined" !== typeof window && "undefined" !== typeof document && window.document === document, i = function () { return "undefined" !== typeof e && e.Math === Math ? e : "undefined" !== typeof self && self.Math === Math ? self : "undefined" !== typeof window && window.Math === Math ? window : Function("return this")() }(), o = function () { return "function" === typeof requestAnimationFrame ? requestAnimationFrame.bind(i) : function (e) { return setTimeout((function () { return e(Date.now()) }), 1e3 / 60) } }(), a = 2; function s(e, t) { var n = !1, r = !1, i = 0; function s() { n && (n = !1, e()), r && l() } function c() { o(s) } function l() { var e = Date.now(); if (n) { if (e - i < a) return; r = !0 } else n = !0, r = !1, setTimeout(c, t); i = e } return l } var c = 20, l = ["top", "right", "bottom", "left", "width", "height", "size", "weight"], u = "undefined" !== typeof MutationObserver, h = function () { function e() { this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh = s(this.refresh.bind(this), c) } return e.prototype.addObserver = function (e) { ~this.observers_.indexOf(e) || this.observers_.push(e), this.connected_ || this.connect_() }, e.prototype.removeObserver = function (e) { var t = this.observers_, n = t.indexOf(e); ~n && t.splice(n, 1), !t.length && this.connected_ && this.disconnect_() }, e.prototype.refresh = function () { var e = this.updateObservers_(); e && this.refresh() }, e.prototype.updateObservers_ = function () { var e = this.observers_.filter((function (e) { return e.gatherActive(), e.hasActive() })); return e.forEach((function (e) { return e.broadcastActive() })), e.length > 0 }, e.prototype.connect_ = function () { r && !this.connected_ && (document.addEventListener("transitionend", this.onTransitionEnd_), window.addEventListener("resize", this.refresh), u ? (this.mutationsObserver_ = new MutationObserver(this.refresh), this.mutationsObserver_.observe(document, { attributes: !0, childList: !0, characterData: !0, subtree: !0 })) : (document.addEventListener("DOMSubtreeModified", this.refresh), this.mutationEventsAdded_ = !0), this.connected_ = !0) }, e.prototype.disconnect_ = function () { r && this.connected_ && (document.removeEventListener("transitionend", this.onTransitionEnd_), window.removeEventListener("resize", this.refresh), this.mutationsObserver_ && this.mutationsObserver_.disconnect(), this.mutationEventsAdded_ && document.removeEventListener("DOMSubtreeModified", this.refresh), this.mutationsObserver_ = null, this.mutationEventsAdded_ = !1, this.connected_ = !1) }, e.prototype.onTransitionEnd_ = function (e) { var t = e.propertyName, n = void 0 === t ? "" : t, r = l.some((function (e) { return !!~n.indexOf(e) })); r && this.refresh() }, e.getInstance = function () { return this.instance_ || (this.instance_ = new e), this.instance_ }, e.instance_ = null, e }(), f = function (e, t) { for (var n = 0, r = Object.keys(t); n < r.length; n++) { var i = r[n]; Object.defineProperty(e, i, { value: t[i], enumerable: !1, writable: !1, configurable: !0 }) } return e }, d = function (e) { var t = e && e.ownerDocument && e.ownerDocument.defaultView; return t || i }, p = M(0, 0, 0, 0); function v(e) { return parseFloat(e) || 0 } function m(e) { for (var t = [], n = 1; n < arguments.length; n++)t[n - 1] = arguments[n]; return t.reduce((function (t, n) { var r = e["border-" + n + "-width"]; return t + v(r) }), 0) } function g(e) { for (var t = ["top", "right", "bottom", "left"], n = {}, r = 0, i = t; r < i.length; r++) { var o = i[r], a = e["padding-" + o]; n[o] = v(a) } return n } function y(e) { var t = e.getBBox(); return M(0, 0, t.width, t.height) } function b(e) { var t = e.clientWidth, n = e.clientHeight; if (!t && !n) return p; var r = d(e).getComputedStyle(e), i = g(r), o = i.left + i.right, a = i.top + i.bottom, s = v(r.width), c = v(r.height); if ("border-box" === r.boxSizing && (Math.round(s + o) !== t && (s -= m(r, "left", "right") + o), Math.round(c + a) !== n && (c -= m(r, "top", "bottom") + a)), !w(e)) { var l = Math.round(s + o) - t, u = Math.round(c + a) - n; 1 !== Math.abs(l) && (s -= l), 1 !== Math.abs(u) && (c -= u) } return M(i.left, i.top, s, c) } var x = function () { return "undefined" !== typeof SVGGraphicsElement ? function (e) { return e instanceof d(e).SVGGraphicsElement } : function (e) { return e instanceof d(e).SVGElement && "function" === typeof e.getBBox } }(); function w(e) { return e === d(e).document.documentElement } function _(e) { return r ? x(e) ? y(e) : b(e) : p } function C(e) { var t = e.x, n = e.y, r = e.width, i = e.height, o = "undefined" !== typeof DOMRectReadOnly ? DOMRectReadOnly : Object, a = Object.create(o.prototype); return f(a, { x: t, y: n, width: r, height: i, top: n, right: t + r, bottom: i + n, left: t }), a } function M(e, t, n, r) { return { x: e, y: t, width: n, height: r } } var O = function () { function e(e) { this.broadcastWidth = 0, this.broadcastHeight = 0, this.contentRect_ = M(0, 0, 0, 0), this.target = e } return e.prototype.isActive = function () { var e = _(this.target); return this.contentRect_ = e, e.width !== this.broadcastWidth || e.height !== this.broadcastHeight }, e.prototype.broadcastRect = function () { var e = this.contentRect_; return this.broadcastWidth = e.width, this.broadcastHeight = e.height, e }, e }(), k = function () { function e(e, t) { var n = C(t); f(this, { target: e, contentRect: n }) } return e }(), S = function () { function e(e, t, r) { if (this.activeObservations_ = [], this.observations_ = new n, "function" !== typeof e) throw new TypeError("The callback provided as parameter 1 is not a function."); this.callback_ = e, this.controller_ = t, this.callbackCtx_ = r } return e.prototype.observe = function (e) { if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); if ("undefined" !== typeof Element && Element instanceof Object) { if (!(e instanceof d(e).Element)) throw new TypeError('parameter 1 is not of type "Element".'); var t = this.observations_; t.has(e) || (t.set(e, new O(e)), this.controller_.addObserver(this), this.controller_.refresh()) } }, e.prototype.unobserve = function (e) { if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); if ("undefined" !== typeof Element && Element instanceof Object) { if (!(e instanceof d(e).Element)) throw new TypeError('parameter 1 is not of type "Element".'); var t = this.observations_; t.has(e) && (t.delete(e), t.size || this.controller_.removeObserver(this)) } }, e.prototype.disconnect = function () { this.clearActive(), this.observations_.clear(), this.controller_.removeObserver(this) }, e.prototype.gatherActive = function () { var e = this; this.clearActive(), this.observations_.forEach((function (t) { t.isActive() && e.activeObservations_.push(t) })) }, e.prototype.broadcastActive = function () { if (this.hasActive()) { var e = this.callbackCtx_, t = this.activeObservations_.map((function (e) { return new k(e.target, e.broadcastRect()) })); this.callback_.call(e, t, e), this.clearActive() } }, e.prototype.clearActive = function () { this.activeObservations_.splice(0) }, e.prototype.hasActive = function () { return this.activeObservations_.length > 0 }, e }(), T = "undefined" !== typeof WeakMap ? new WeakMap : new n, A = function () { function e(t) { if (!(this instanceof e)) throw new TypeError("Cannot call a class as a function."); if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); var n = h.getInstance(), r = new S(t, n, this); T.set(this, r) } return e }();["observe", "unobserve", "disconnect"].forEach((function (e) { A.prototype[e] = function () { var t; return (t = T.get(this))[e].apply(t, arguments) } })); var L = function () { return "undefined" !== typeof i.ResizeObserver ? i.ResizeObserver : A }(); t["a"] = L }).call(this, n("c8ba")) }, "6e98": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("it", { months: "gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"), monthsShort: "gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"), weekdays: "domenica_luned矛_marted矛_mercoled矛_gioved矛_venerd矛_sabato".split("_"), weekdaysShort: "dom_lun_mar_mer_gio_ven_sab".split("_"), weekdaysMin: "do_lu_ma_me_gi_ve_sa".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: function () { return "[Oggi a" + (this.hours() > 1 ? "lle " : 0 === this.hours() ? " " : "ll'") + "]LT" }, nextDay: function () { return "[Domani a" + (this.hours() > 1 ? "lle " : 0 === this.hours() ? " " : "ll'") + "]LT" }, nextWeek: function () { return "dddd [a" + (this.hours() > 1 ? "lle " : 0 === this.hours() ? " " : "ll'") + "]LT" }, lastDay: function () { return "[Ieri a" + (this.hours() > 1 ? "lle " : 0 === this.hours() ? " " : "ll'") + "]LT" }, lastWeek: function () { switch (this.day()) { case 0: return "[La scorsa] dddd [a" + (this.hours() > 1 ? "lle " : 0 === this.hours() ? " " : "ll'") + "]LT"; default: return "[Lo scorso] dddd [a" + (this.hours() > 1 ? "lle " : 0 === this.hours() ? " " : "ll'") + "]LT" } }, sameElse: "L" }, relativeTime: { future: "tra %s", past: "%s fa", s: "alcuni secondi", ss: "%d secondi", m: "un minuto", mm: "%d minuti", h: "un'ora", hh: "%d ore", d: "un giorno", dd: "%d giorni", M: "un mese", MM: "%d mesi", y: "un anno", yy: "%d anni" }, dayOfMonthOrdinalParse: /\d{1,2}潞/, ordinal: "%d潞", week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "6f12": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("it-ch", { months: "gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"), monthsShort: "gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"), weekdays: "domenica_luned矛_marted矛_mercoled矛_gioved矛_venerd矛_sabato".split("_"), weekdaysShort: "dom_lun_mar_mer_gio_ven_sab".split("_"), weekdaysMin: "do_lu_ma_me_gi_ve_sa".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Oggi alle] LT", nextDay: "[Domani alle] LT", nextWeek: "dddd [alle] LT", lastDay: "[Ieri alle] LT", lastWeek: function () { switch (this.day()) { case 0: return "[la scorsa] dddd [alle] LT"; default: return "[lo scorso] dddd [alle] LT" } }, sameElse: "L" }, relativeTime: { future: function (e) { return (/^[0-9].+$/.test(e) ? "tra" : "in") + " " + e }, past: "%s fa", s: "alcuni secondi", ss: "%d secondi", m: "un minuto", mm: "%d minuti", h: "un'ora", hh: "%d ore", d: "un giorno", dd: "%d giorni", M: "un mese", MM: "%d mesi", y: "un anno", yy: "%d anni" }, dayOfMonthOrdinalParse: /\d{1,2}潞/, ordinal: "%d潞", week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "6f50": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("en-nz", { months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY h:mm A", LLLL: "dddd, D MMMM YYYY h:mm A" }, calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" }, relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", ss: "%d seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (e) { var t = e % 10, n = 1 === ~~(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th"; return e + n }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "6f6c": function (e, t) { var n = /\w*$/; function r(e) { var t = new e.constructor(e.source, n.exec(e)); return t.lastIndex = e.lastIndex, t } e.exports = r }, "6fcd": function (e, t, n) { var r = n("50d8"), i = n("d370"), o = n("6747"), a = n("0d24"), s = n("c098"), c = n("73ac"), l = Object.prototype, u = l.hasOwnProperty; function h(e, t) { var n = o(e), l = !n && i(e), h = !n && !l && a(e), f = !n && !l && !h && c(e), d = n || l || h || f, p = d ? r(e.length, String) : [], v = p.length; for (var m in e) !t && !u.call(e, m) || d && ("length" == m || h && ("offset" == m || "parent" == m) || f && ("buffer" == m || "byteLength" == m || "byteOffset" == m) || s(m, v)) || p.push(m); return p } e.exports = h }, 7118: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = "jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"), n = "jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), r = e.defineLocale("fy", { months: "jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"), monthsShort: function (e, r) { return e ? /-MMM-/.test(r) ? n[e.month()] : t[e.month()] : t }, monthsParseExact: !0, weekdays: "snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"), weekdaysShort: "si._mo._ti._wo._to._fr._so.".split("_"), weekdaysMin: "Si_Mo_Ti_Wo_To_Fr_So".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD-MM-YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[hjoed om] LT", nextDay: "[moarn om] LT", nextWeek: "dddd [om] LT", lastDay: "[juster om] LT", lastWeek: "[么fr没ne] dddd [om] LT", sameElse: "L" }, relativeTime: { future: "oer %s", past: "%s lyn", s: "in pear sekonden", ss: "%d sekonden", m: "ien min煤t", mm: "%d minuten", h: "ien oere", hh: "%d oeren", d: "ien dei", dd: "%d dagen", M: "ien moanne", MM: "%d moannen", y: "ien jier", yy: "%d jierren" }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, ordinal: function (e) { return e + (1 === e || 8 === e || e >= 20 ? "ste" : "de") }, week: { dow: 1, doy: 4 } }); return r
+                    }))
+                }, 7159: function (e, t, n) { var r = n("266a"), i = n("9934"); function o(e) { return null == e ? [] : r(e, i(e)) } e.exports = o }, "71c1": function (e, t, n) { var r = n("3a38"), i = n("25eb"); e.exports = function (e) { return function (t, n) { var o, a, s = String(i(t)), c = r(n), l = s.length; return c < 0 || c >= l ? e ? "" : void 0 : (o = s.charCodeAt(c), o < 55296 || o > 56319 || c + 1 === l || (a = s.charCodeAt(c + 1)) < 56320 || a > 57343 ? e ? s.charAt(c) : o : e ? s.slice(c, c + 2) : a - 56320 + (o - 55296 << 10) + 65536) } } }, "72af": function (e, t, n) { var r = n("99cd"), i = r(); e.exports = i }, "72f0": function (e, t) { function n(e) { return function () { return e } } e.exports = n }, 7333: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("en-il", { months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" }, relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", ss: "%d seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (e) { var t = e % 10, n = 1 === ~~(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th"; return e + n } }); return t
+                    }))
+                }, "73ac": function (e, t, n) { var r = n("743f"), i = n("b047f"), o = n("99d3"), a = o && o.isTypedArray, s = a ? i(a) : r; e.exports = s }, "743f": function (e, t, n) { var r = n("3729"), i = n("b218"), o = n("1310"), a = "[object Arguments]", s = "[object Array]", c = "[object Boolean]", l = "[object Date]", u = "[object Error]", h = "[object Function]", f = "[object Map]", d = "[object Number]", p = "[object Object]", v = "[object RegExp]", m = "[object Set]", g = "[object String]", y = "[object WeakMap]", b = "[object ArrayBuffer]", x = "[object DataView]", w = "[object Float32Array]", _ = "[object Float64Array]", C = "[object Int8Array]", M = "[object Int16Array]", O = "[object Int32Array]", k = "[object Uint8Array]", S = "[object Uint8ClampedArray]", T = "[object Uint16Array]", A = "[object Uint32Array]", L = {}; function j(e) { return o(e) && i(e.length) && !!L[r(e)] } L[w] = L[_] = L[C] = L[M] = L[O] = L[k] = L[S] = L[T] = L[A] = !0, L[a] = L[s] = L[b] = L[c] = L[x] = L[l] = L[u] = L[h] = L[f] = L[d] = L[p] = L[v] = L[m] = L[g] = L[y] = !1, e.exports = j }, "74c8": function (e, t, n) { var r = n("972ca"), i = n("242e"), o = n("badf"); function a(e, t) { return r(e, o(t, 3), i) } e.exports = a }, "74dc": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("sw", { months: "Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"), monthsShort: "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"), weekdays: "Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"), weekdaysShort: "Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"), weekdaysMin: "J2_J3_J4_J5_Al_Ij_J1".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "hh:mm A", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[leo saa] LT", nextDay: "[kesho saa] LT", nextWeek: "[wiki ijayo] dddd [saat] LT", lastDay: "[jana] LT", lastWeek: "[wiki iliyopita] dddd [saat] LT", sameElse: "L" }, relativeTime: { future: "%s baadaye", past: "tokea %s", s: "hivi punde", ss: "sekunde %d", m: "dakika moja", mm: "dakika %d", h: "saa limoja", hh: "masaa %d", d: "siku moja", dd: "siku %d", M: "mwezi mmoja", MM: "miezi %d", y: "mwaka mmoja", yy: "miaka %d" }, week: { dow: 1, doy: 7 } }); return t
+                    }))
+                }, "750a": function (e, t, n) { var r = n("c869"), i = n("bcdf"), o = n("ac41"), a = 1 / 0, s = r && 1 / o(new r([, -0]))[1] == a ? function (e) { return new r(e) } : i; e.exports = s }, 7530: function (e, t, n) { var r = n("1a8c"), i = Object.create, o = function () { function e() { } return function (t) { if (!r(t)) return {}; if (i) return i(t); e.prototype = t; var n = new e; return e.prototype = void 0, n } }(); e.exports = o }, "765d": function (e, t, n) { n("6718")("observable") }, "76dd": function (e, t, n) { var r = n("ce86"); function i(e) { return null == e ? "" : r(e) } e.exports = i }, 7726: function (e, t) { var n = e.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); "number" == typeof __g && (__g = n) }, 7746: function (e, t, n) { "use strict"; var r = this && this.__importDefault || function (e) { return e && e.__esModule ? e : { default: e } }; Object.defineProperty(t, "__esModule", { value: !0 }); var i = r(n("66cb")), o = 2, a = 16, s = 5, c = 5, l = 15, u = 5, h = 4; function f(e, t, n) { var r; return r = Math.round(e.h) >= 60 && Math.round(e.h) <= 240 ? n ? Math.round(e.h) - o * t : Math.round(e.h) + o * t : n ? Math.round(e.h) + o * t : Math.round(e.h) - o * t, r < 0 ? r += 360 : r >= 360 && (r -= 360), r } function d(e, t, n) { return 0 === e.h && 0 === e.s ? e.s : (r = n ? Math.round(100 * e.s) - a * t : t === h ? Math.round(100 * e.s) + a : Math.round(100 * e.s) + s * t, r > 100 && (r = 100), n && t === u && r > 10 && (r = 10), r < 6 && (r = 6), r); var r } function p(e, t, n) { return n ? Math.round(100 * e.v) + c * t : Math.round(100 * e.v) - l * t } function v(e) { for (var t = [], n = i.default(e), r = u; r > 0; r -= 1) { var o = n.toHsv(), a = i.default({ h: f(o, r, !0), s: d(o, r, !0), v: p(o, r, !0) }).toHexString(); t.push(a) } for (t.push(n.toHexString()), r = 1; r <= h; r += 1)o = n.toHsv(), a = i.default({ h: f(o, r), s: d(o, r), v: p(o, r) }).toHexString(), t.push(a); return t } t.default = v }, "77c1": function (e, t, n) { var r = n("7948"), i = n("badf"), o = n("89d9"), a = n("1bac"); function s(e, t) { if (null == e) return {}; var n = r(a(e), (function (e) { return [e] })); return t = i(t), o(e, n, (function (e, n) { return t(e, n[0]) })) } e.exports = s }, "77f1": function (e, t, n) { var r = n("4588"), i = Math.max, o = Math.min; e.exports = function (e, t) { return e = r(e), e < 0 ? i(e + t, 0) : o(e, t) } }, 7948: function (e, t) { function n(e, t) { var n = -1, r = null == e ? 0 : e.length, i = Array(r); while (++n < r) i[n] = t(e[n], n, e); return i } e.exports = n }, "794b": function (e, t, n) { e.exports = !n("8e60") && !n("294c")((function () { return 7 != Object.defineProperty(n("1ec9")("div"), "a", { get: function () { return 7 } }).a })) }, "79aa": function (e, t) { e.exports = function (e) { if ("function" != typeof e) throw TypeError(e + " is not a function!"); return e } }, "79bc": function (e, t, n) { var r = n("0b07"), i = n("2b3e"), o = r(i, "Map"); e.exports = o }, "79e5": function (e, t) { e.exports = function (e) { try { return !!e() } catch (t) { return !0 } } }, "7a48": function (e, t, n) { var r = n("6044"), i = Object.prototype, o = i.hasOwnProperty; function a(e) { var t = this.__data__; return r ? void 0 !== t[e] : o.call(t, e) } e.exports = a }, "7a56": function (e, t, n) { "use strict"; var r = n("7726"), i = n("86cc"), o = n("9e1e"), a = n("2b4c")("species"); e.exports = function (e) { var t = r[e]; o && t && !t[a] && i.f(t, a, { configurable: !0, get: function () { return this } }) } }, "7aa2": function (e, t, n) { var r = n("ec47"), i = n("9934"), o = r(i); e.exports = o }, "7b05": function (e, t, n) { "use strict"; n.d(t, "b", (function () { return h })), n.d(t, "a", (function () { return f })); var r = n("9b57"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("daa3"), c = n("4d26"), l = n.n(c); function u(e, t) { var n = e.componentOptions, r = e.data, i = {}; n && n.listeners && (i = a()({}, n.listeners)); var o = {}; r && r.on && (o = a()({}, r.on)); var s = new e.constructor(e.tag, r ? a()({}, r, { on: o }) : r, e.children, e.text, e.elm, e.context, n ? a()({}, n, { listeners: i }) : n, e.asyncFactory); return s.ns = e.ns, s.isStatic = e.isStatic, s.key = e.key, s.isComment = e.isComment, s.fnContext = e.fnContext, s.fnOptions = e.fnOptions, s.fnScopeId = e.fnScopeId, s.isCloned = !0, t && (e.children && (s.children = h(e.children, !0)), n && n.children && (n.children = h(n.children, !0))), s } function h(e, t) { for (var n = e.length, r = new Array(n), i = 0; i < n; i++)r[i] = u(e[i], t); return r } function f(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = arguments[2], r = e; if (Array.isArray(e) && (r = Object(s["c"])(e)[0]), !r) return null; var o = u(r, n), c = t.props, h = void 0 === c ? {} : c, f = t.key, d = t.on, p = void 0 === d ? {} : d, v = t.nativeOn, m = void 0 === v ? {} : v, g = t.children, y = t.directives, b = void 0 === y ? [] : y, x = o.data || {}, w = {}, _ = {}, C = t.attrs, M = void 0 === C ? {} : C, O = t.ref, k = t.domProps, S = void 0 === k ? {} : k, T = t.style, A = void 0 === T ? {} : T, L = t["class"], j = void 0 === L ? {} : L, z = t.scopedSlots, E = void 0 === z ? {} : z; return _ = "string" === typeof x.style ? Object(s["x"])(x.style) : a()({}, x.style, _), _ = "string" === typeof A ? a()({}, _, Object(s["x"])(_)) : a()({}, _, A), "string" === typeof x["class"] && "" !== x["class"].trim() ? x["class"].split(" ").forEach((function (e) { w[e.trim()] = !0 })) : Array.isArray(x["class"]) ? l()(x["class"]).split(" ").forEach((function (e) { w[e.trim()] = !0 })) : w = a()({}, x["class"], w), "string" === typeof j && "" !== j.trim() ? j.split(" ").forEach((function (e) { w[e.trim()] = !0 })) : w = a()({}, w, j), o.data = a()({}, x, { style: _, attrs: a()({}, x.attrs, M), class: w, domProps: a()({}, x.domProps, S), scopedSlots: a()({}, x.scopedSlots, E), directives: [].concat(i()(x.directives || []), i()(b)) }), o.componentOptions ? (o.componentOptions.propsData = o.componentOptions.propsData || {}, o.componentOptions.listeners = o.componentOptions.listeners || {}, o.componentOptions.propsData = a()({}, o.componentOptions.propsData, h), o.componentOptions.listeners = a()({}, o.componentOptions.listeners, p), g && (o.componentOptions.children = g)) : (g && (o.children = g), o.data.on = a()({}, o.data.on || {}, p)), o.data.on = a()({}, o.data.on || {}, m), void 0 !== f && (o.key = f, o.data.key = f), "string" === typeof O && (o.data.ref = O), o } }, "7b34": function (e, t, n) { "use strict"; n.r(t); var r = function () { var e = this; e.$createElement; return e._self._c, e._m(0) }, i = [function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "vue-codemirror-wrap" }, [n("textarea")]) }], o = n("53ca"), a = n("56b3"); n("a7be"); var s = { props: { value: { type: String, default: "" }, options: { type: Object, default: function () { return { mode: "text/javascript", lineNumbers: !0, lineWrapping: !0 } } } }, data: function () { return { skipNextChangeEvent: !1 } }, ready: function () { var e = this; this.editor = a.fromTextArea(this.$el.querySelector("textarea"), this.options), this.editor.setValue(this.value), this.editor.on("change", (function (t) { e.skipNextChangeEvent ? e.skipNextChangeEvent = !1 : (e.value = t.getValue(), e.$emit && e.$emit("change", t.getValue())) })) }, mounted: function () { var e = this; this.editor = a.fromTextArea(this.$el.querySelector("textarea"), this.options), this.editor.setValue(this.value), this.editor.on("change", (function (t) { e.skipNextChangeEvent ? e.skipNextChangeEvent = !1 : e.$emit && (e.$emit("change", t.getValue()), e.$emit("input", t.getValue())) })) }, watch: { value: function (e, t) { var n = this.editor.getValue(); if (e !== n) { this.skipNextChangeEvent = !0; var r = this.editor.getScrollInfo(); this.editor.setValue(e), this.editor.scrollTo(r.left, r.top) } }, options: function (e, t) { if ("object" === Object(o["a"])(e)) for (var n in e) e.hasOwnProperty(n) && this.editor.setOption(n, e[n]) } }, beforeDestroy: function () { this.editor && this.editor.toTextArea() } }, c = s, l = (n("f917"), n("2877")), u = Object(l["a"])(c, r, i, !1, null, null, null); t["default"] = u.exports }, "7b4f": function (e, t, n) { "use strict"; var r = n("2e85"), i = n.n(r); i.a }, "7b81": function (e, t, n) { }, "7b83": function (e, t, n) { var r = n("7c64"), i = n("93ed"), o = n("2478"), a = n("a524"), s = n("1fc8"); function c(e) { var t = -1, n = null == e ? 0 : e.length; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } c.prototype.clear = r, c.prototype["delete"] = i, c.prototype.get = o, c.prototype.has = a, c.prototype.set = s, e.exports = c }, "7b97": function (e, t, n) { var r = n("7e64"), i = n("a2be"), o = n("1c3c"), a = n("b1e5"), s = n("42a2"), c = n("6747"), l = n("0d24"), u = n("73ac"), h = 1, f = "[object Arguments]", d = "[object Array]", p = "[object Object]", v = Object.prototype, m = v.hasOwnProperty; function g(e, t, n, v, g, y) { var b = c(e), x = c(t), w = b ? d : s(e), _ = x ? d : s(t); w = w == f ? p : w, _ = _ == f ? p : _; var C = w == p, M = _ == p, O = w == _; if (O && l(e)) { if (!l(t)) return !1; b = !0, C = !1 } if (O && !C) return y || (y = new r), b || u(e) ? i(e, t, n, v, g, y) : o(e, t, w, n, v, g, y); if (!(n & h)) { var k = C && m.call(e, "__wrapped__"), S = M && m.call(t, "__wrapped__"); if (k || S) { var T = k ? e.value() : e, A = S ? t.value() : t; return y || (y = new r), g(T, A, n, v, y) } } return !!O && (y || (y = new r), a(e, t, n, v, g, y)) } e.exports = g }, "7be6": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = "janu谩r_febru谩r_marec_apr铆l_m谩j_j煤n_j煤l_august_september_okt贸ber_november_december".split("_"), n = "jan_feb_mar_apr_m谩j_j煤n_j煤l_aug_sep_okt_nov_dec".split("_"); function r(e) { return e > 1 && e < 5 } function i(e, t, n, i) { var o = e + " "; switch (n) { case "s": return t || i ? "p谩r sek煤nd" : "p谩r sekundami"; case "ss": return t || i ? o + (r(e) ? "sekundy" : "sek煤nd") : o + "sekundami"; case "m": return t ? "min煤ta" : i ? "min煤tu" : "min煤tou"; case "mm": return t || i ? o + (r(e) ? "min煤ty" : "min煤t") : o + "min煤tami"; case "h": return t ? "hodina" : i ? "hodinu" : "hodinou"; case "hh": return t || i ? o + (r(e) ? "hodiny" : "hod铆n") : o + "hodinami"; case "d": return t || i ? "de艌" : "d艌om"; case "dd": return t || i ? o + (r(e) ? "dni" : "dn铆") : o + "d艌ami"; case "M": return t || i ? "mesiac" : "mesiacom"; case "MM": return t || i ? o + (r(e) ? "mesiace" : "mesiacov") : o + "mesiacmi"; case "y": return t || i ? "rok" : "rokom"; case "yy": return t || i ? o + (r(e) ? "roky" : "rokov") : o + "rokmi" } } var o = e.defineLocale("sk", { months: t, monthsShort: n, weekdays: "nede木a_pondelok_utorok_streda_拧tvrtok_piatok_sobota".split("_"), weekdaysShort: "ne_po_ut_st_拧t_pi_so".split("_"), weekdaysMin: "ne_po_ut_st_拧t_pi_so".split("_"), longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd D. MMMM YYYY H:mm" }, calendar: { sameDay: "[dnes o] LT", nextDay: "[zajtra o] LT", nextWeek: function () { switch (this.day()) { case 0: return "[v nede木u o] LT"; case 1: case 2: return "[v] dddd [o] LT"; case 3: return "[v stredu o] LT"; case 4: return "[vo 拧tvrtok o] LT"; case 5: return "[v piatok o] LT"; case 6: return "[v sobotu o] LT" } }, lastDay: "[v膷era o] LT", lastWeek: function () { switch (this.day()) { case 0: return "[minul煤 nede木u o] LT"; case 1: case 2: return "[minul媒] dddd [o] LT"; case 3: return "[minul煤 stredu o] LT"; case 4: case 5: return "[minul媒] dddd [o] LT"; case 6: return "[minul煤 sobotu o] LT" } }, sameElse: "L" }, relativeTime: { future: "za %s", past: "pred %s", s: i, ss: i, m: i, mm: i, h: i, hh: i, d: i, dd: i, M: i, MM: i, y: i, yy: i }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return o
+                    }))
+                }, "7c64": function (e, t, n) { var r = n("e24b"), i = n("5e2e"), o = n("79bc"); function a() { this.size = 0, this.__data__ = { hash: new r, map: new (o || i), string: new r } } e.exports = a }, "7cd6": function (e, t, n) { var r = n("40c3"), i = n("5168")("iterator"), o = n("481b"); e.exports = n("584a").getIteratorMethod = function (e) { if (void 0 != e) return e[i] || e["@@iterator"] || o[r(e)] } }, "7d1c": function (e, t, n) { "use strict"; e.exports = n("1d31") }, "7d1f": function (e, t, n) { var r = n("087d"), i = n("6747"); function o(e, t, n) { var o = t(e); return i(e) ? o : r(o, n(e)) } e.exports = o }, "7d7b": function (e, t, n) { var r = n("e4ae"), i = n("7cd6"); e.exports = n("584a").getIterator = function (e) { var t = i(e); if ("function" != typeof t) throw TypeError(e + " is not iterable!"); return r(t.call(e)) } }, "7d8a": function (e, t, n) { }, "7e64": function (e, t, n) { var r = n("5e2e"), i = n("efb6"), o = n("2fcc"), a = n("802a"), s = n("55a3"), c = n("d02c"); function l(e) { var t = this.__data__ = new r(e); this.size = t.size } l.prototype.clear = i, l.prototype["delete"] = o, l.prototype.get = a, l.prototype.has = s, l.prototype.set = c, e.exports = l }, "7e90": function (e, t, n) { var r = n("d9f6"), i = n("e4ae"), o = n("c3a1"); e.exports = n("8e60") ? Object.defineProperties : function (e, t) { i(e); var n, a = o(t), s = a.length, c = 0; while (s > c) r.f(e, n = a[c++], t[n]); return e } }, "7ed2": function (e, t) { var n = "__lodash_hash_undefined__"; function r(e) { return this.__data__.set(e, n), this } e.exports = r }, "7f20": function (e, t, n) { var r = n("86cc").f, i = n("69a8"), o = n("2b4c")("toStringTag"); e.exports = function (e, t, n) { e && !i(e = n ? e : e.prototype, o) && r(e, o, { configurable: !0, value: t }) } }, "7f33": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("yo", { months: "S岷固乺岷固乢E虁re虁le虁_岷竢岷固�na虁_I虁gbe虂_E虁bibi_O虁ku虁du_Ag岷筸o_O虁gu虂n_Owewe_峄屘�wa虁ra虁_Be虂lu虂_峄屘�p岷固�虁".split("_"), monthsShort: "S岷固乺_E虁rl_岷竢n_I虁gb_E虁bi_O虁ku虁_Ag岷筥O虁gu虂_Owe_峄屘�wa虁_Be虂l_峄屘�p岷固�虁".split("_"), weekdays: "A虁i虁ku虂_Aje虂_I虁s岷固乬un_峄宩峄嵦乺u虂_峄宩峄嵦乥峄峗岷竧i虁_A虁ba虂m岷固乼a".split("_"), weekdaysShort: "A虁i虁k_Aje虂_I虁s岷固乢峄宩r_峄宩b_岷竧i虁_A虁ba虂".split("_"), weekdaysMin: "A虁i虁_Aj_I虁s_峄宺_峄宐_岷竧_A虁b".split("_"), longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY h:mm A", LLLL: "dddd, D MMMM YYYY h:mm A" }, calendar: { sameDay: "[O虁ni虁 ni] LT", nextDay: "[峄屘�la ni] LT", nextWeek: "dddd [峄宻岷固� to虂n'b峄峕 [ni] LT", lastDay: "[A虁na ni] LT", lastWeek: "dddd [峄宻岷固� to虂l峄嵦乚 [ni] LT", sameElse: "L" }, relativeTime: { future: "ni虂 %s", past: "%s k峄峧a虂", s: "i虁s岷筳u虂 aaya虂 die", ss: "aaya虂 %d", m: "i虁s岷筳u虂 kan", mm: "i虁s岷筳u虂 %d", h: "wa虂kati kan", hh: "wa虂kati %d", d: "峄峧峄嵦� kan", dd: "峄峧峄嵦� %d", M: "osu虁 kan", MM: "osu虁 %d", y: "峄峝u虂n kan", yy: "峄峝u虂n %d" }, dayOfMonthOrdinalParse: /峄峧峄嵦乗s\d{1,2}/, ordinal: "峄峧峄嵦� %d", week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, "7f7f": function (e, t, n) { var r = n("86cc").f, i = Function.prototype, o = /^\s*function ([^ (]*)/, a = "name"; a in i || n("9e1e") && r(i, a, { configurable: !0, get: function () { try { return ("" + this).match(o)[1] } catch (e) { return "" } } }) }, "7fd0": function (e, t, n) { }, "802a": function (e, t) { function n(e) { return this.__data__.get(e) } e.exports = n }, 8057: function (e, t) { function n(e, t) { var n = -1, r = null == e ? 0 : e.length; while (++n < r) if (!1 === t(e[n], n, e)) break; return e } e.exports = n }, 8079: function (e, t, n) { var r = n("7726"), i = n("1991").set, o = r.MutationObserver || r.WebKitMutationObserver, a = r.process, s = r.Promise, c = "process" == n("2d95")(a); e.exports = function () { var e, t, n, l = function () { var r, i; c && (r = a.domain) && r.exit(); while (e) { i = e.fn, e = e.next; try { i() } catch (o) { throw e ? n() : t = void 0, o } } t = void 0, r && r.enter() }; if (c) n = function () { a.nextTick(l) }; else if (!o || r.navigator && r.navigator.standalone) if (s && s.resolve) { var u = s.resolve(void 0); n = function () { u.then(l) } } else n = function () { i.call(r, l) }; else { var h = !0, f = document.createTextNode(""); new o(l).observe(f, { characterData: !0 }), n = function () { f.data = h = !h } } return function (r) { var i = { fn: r, next: void 0 }; t && (t.next = i), e || (e = i, n()), t = i } } }, 8096: function (e, t, n) { }, 8155: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t, n, r) { var i = e + " "; switch (n) { case "s": return t || r ? "nekaj sekund" : "nekaj sekundami"; case "ss": return i += 1 === e ? t ? "sekundo" : "sekundi" : 2 === e ? t || r ? "sekundi" : "sekundah" : e < 5 ? t || r ? "sekunde" : "sekundah" : "sekund", i; case "m": return t ? "ena minuta" : "eno minuto"; case "mm": return i += 1 === e ? t ? "minuta" : "minuto" : 2 === e ? t || r ? "minuti" : "minutama" : e < 5 ? t || r ? "minute" : "minutami" : t || r ? "minut" : "minutami", i; case "h": return t ? "ena ura" : "eno uro"; case "hh": return i += 1 === e ? t ? "ura" : "uro" : 2 === e ? t || r ? "uri" : "urama" : e < 5 ? t || r ? "ure" : "urami" : t || r ? "ur" : "urami", i; case "d": return t || r ? "en dan" : "enim dnem"; case "dd": return i += 1 === e ? t || r ? "dan" : "dnem" : 2 === e ? t || r ? "dni" : "dnevoma" : t || r ? "dni" : "dnevi", i; case "M": return t || r ? "en mesec" : "enim mesecem"; case "MM": return i += 1 === e ? t || r ? "mesec" : "mesecem" : 2 === e ? t || r ? "meseca" : "mesecema" : e < 5 ? t || r ? "mesece" : "meseci" : t || r ? "mesecev" : "meseci", i; case "y": return t || r ? "eno leto" : "enim letom"; case "yy": return i += 1 === e ? t || r ? "leto" : "letom" : 2 === e ? t || r ? "leti" : "letoma" : e < 5 ? t || r ? "leta" : "leti" : t || r ? "let" : "leti", i } } var n = e.defineLocale("sl", { months: "januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"), monthsShort: "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"), monthsParseExact: !0, weekdays: "nedelja_ponedeljek_torek_sreda_膷etrtek_petek_sobota".split("_"), weekdaysShort: "ned._pon._tor._sre._膷et._pet._sob.".split("_"), weekdaysMin: "ne_po_to_sr_膷e_pe_so".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD. MM. YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd, D. MMMM YYYY H:mm" }, calendar: { sameDay: "[danes ob] LT", nextDay: "[jutri ob] LT", nextWeek: function () { switch (this.day()) { case 0: return "[v] [nedeljo] [ob] LT"; case 3: return "[v] [sredo] [ob] LT"; case 6: return "[v] [soboto] [ob] LT"; case 1: case 2: case 4: case 5: return "[v] dddd [ob] LT" } }, lastDay: "[v膷eraj ob] LT", lastWeek: function () { switch (this.day()) { case 0: return "[prej拧njo] [nedeljo] [ob] LT"; case 3: return "[prej拧njo] [sredo] [ob] LT"; case 6: return "[prej拧njo] [soboto] [ob] LT"; case 1: case 2: case 4: case 5: return "[prej拧nji] dddd [ob] LT" } }, sameElse: "L" }, relativeTime: { future: "膷ez %s", past: "pred %s", s: t, ss: t, m: t, mm: t, h: t, hh: t, d: t, dd: t, M: t, MM: t, y: t, yy: t }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 7 } }); return n
+                    }))
+                }, "81e9": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = "nolla yksi kaksi kolme nelj盲 viisi kuusi seitsem盲n kahdeksan yhdeks盲n".split(" "), n = ["nolla", "yhden", "kahden", "kolmen", "nelj盲n", "viiden", "kuuden", t[7], t[8], t[9]]; function r(e, t, n, r) { var o = ""; switch (n) { case "s": return r ? "muutaman sekunnin" : "muutama sekunti"; case "ss": o = r ? "sekunnin" : "sekuntia"; break; case "m": return r ? "minuutin" : "minuutti"; case "mm": o = r ? "minuutin" : "minuuttia"; break; case "h": return r ? "tunnin" : "tunti"; case "hh": o = r ? "tunnin" : "tuntia"; break; case "d": return r ? "p盲iv盲n" : "p盲iv盲"; case "dd": o = r ? "p盲iv盲n" : "p盲iv盲盲"; break; case "M": return r ? "kuukauden" : "kuukausi"; case "MM": o = r ? "kuukauden" : "kuukautta"; break; case "y": return r ? "vuoden" : "vuosi"; case "yy": o = r ? "vuoden" : "vuotta"; break }return o = i(e, r) + " " + o, o } function i(e, r) { return e < 10 ? r ? n[e] : t[e] : e } var o = e.defineLocale("fi", { months: "tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes盲kuu_hein盲kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"), monthsShort: "tammi_helmi_maalis_huhti_touko_kes盲_hein盲_elo_syys_loka_marras_joulu".split("_"), weekdays: "sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"), weekdaysShort: "su_ma_ti_ke_to_pe_la".split("_"), weekdaysMin: "su_ma_ti_ke_to_pe_la".split("_"), longDateFormat: { LT: "HH.mm", LTS: "HH.mm.ss", L: "DD.MM.YYYY", LL: "Do MMMM[ta] YYYY", LLL: "Do MMMM[ta] YYYY, [klo] HH.mm", LLLL: "dddd, Do MMMM[ta] YYYY, [klo] HH.mm", l: "D.M.YYYY", ll: "Do MMM YYYY", lll: "Do MMM YYYY, [klo] HH.mm", llll: "ddd, Do MMM YYYY, [klo] HH.mm" }, calendar: { sameDay: "[t盲n盲盲n] [klo] LT", nextDay: "[huomenna] [klo] LT", nextWeek: "dddd [klo] LT", lastDay: "[eilen] [klo] LT", lastWeek: "[viime] dddd[na] [klo] LT", sameElse: "L" }, relativeTime: { future: "%s p盲盲st盲", past: "%s sitten", s: r, ss: r, m: r, mm: r, h: r, hh: r, d: r, dd: r, M: r, MM: r, y: r, yy: r }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return o
+                    }))
+                }, "81ff": function (e, t, n) { }, 8230: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "佟", 2: "佗", 3: "伲", 4: "伽", 5: "佶", 6: "佴", 7: "侑", 8: "侉", 9: "侃", 0: "贍" }, n = { "佟": "1", "佗": "2", "伲": "3", "伽": "4", "佶": "5", "佴": "6", "侑": "7", "侉": "8", "侃": "9", "贍": "0" }, r = e.defineLocale("ar-sa", { months: "賷賳丕賷乇_賮亘乇丕賷乇_賲丕乇爻_兀亘乇賷賱_賲丕賷賵_賷賵賳賷賵_賷賵賱賷賵_兀睾爻胤爻_爻亘鬲賲亘乇_兀賰鬲賵亘乇_賳賵賮賲亘乇_丿賷爻賲亘乇".split("_"), monthsShort: "賷賳丕賷乇_賮亘乇丕賷乇_賲丕乇爻_兀亘乇賷賱_賲丕賷賵_賷賵賳賷賵_賷賵賱賷賵_兀睾爻胤爻_爻亘鬲賲亘乇_兀賰鬲賵亘乇_賳賵賮賲亘乇_丿賷爻賲亘乇".split("_"), weekdays: "丕賱兀丨丿_丕賱廿孬賳賷賳_丕賱孬賱丕孬丕亍_丕賱兀乇亘毓丕亍_丕賱禺賲賷爻_丕賱噩賲毓丞_丕賱爻亘鬲".split("_"), weekdaysShort: "兀丨丿_廿孬賳賷賳_孬賱丕孬丕亍_兀乇亘毓丕亍_禺賲賷爻_噩賲毓丞_爻亘鬲".split("_"), weekdaysMin: "丨_賳_孬_乇_禺_噩_爻".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, meridiemParse: /氐|賲/, isPM: function (e) { return "賲" === e }, meridiem: function (e, t, n) { return e < 12 ? "氐" : "賲" }, calendar: { sameDay: "[丕賱賷賵賲 毓賱賶 丕賱爻丕毓丞] LT", nextDay: "[睾丿丕 毓賱賶 丕賱爻丕毓丞] LT", nextWeek: "dddd [毓賱賶 丕賱爻丕毓丞] LT", lastDay: "[兀賲爻 毓賱賶 丕賱爻丕毓丞] LT", lastWeek: "dddd [毓賱賶 丕賱爻丕毓丞] LT", sameElse: "L" }, relativeTime: { future: "賮賷 %s", past: "賲賳匕 %s", s: "孬賵丕賳", ss: "%d 孬丕賳賷丞", m: "丿賯賷賯丞", mm: "%d 丿賯丕卅賯", h: "爻丕毓丞", hh: "%d 爻丕毓丕鬲", d: "賷賵賲", dd: "%d 兀賷丕賲", M: "卮賴乇", MM: "%d 兀卮賴乇", y: "爻賳丞", yy: "%d 爻賳賵丕鬲" }, preparse: function (e) { return e.replace(/[佟佗伲伽佶佴侑侉侃贍]/g, (function (e) { return n[e] })).replace(/貙/g, ",") }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })).replace(/,/g, "貙") }, week: { dow: 0, doy: 6 } }); return r
+                    }))
+                }, 8296: function (e, t, n) { var r = n("656b"), i = n("2b10"); function o(e, t) { return t.length < 2 ? e : r(e, i(t, 0, -1)) } e.exports = o }, 8332: function (e, t, n) { e.exports = n("7aa2") }, 8378: function (e, t) { var n = e.exports = { version: "2.6.11" }; "number" == typeof __e && (__e = n) }, 8436: function (e, t) { e.exports = function () { } }, "84aa": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("bg", { months: "褟薪褍邪褉懈_褎械胁褉褍邪褉懈_屑邪褉褌_邪锌褉懈谢_屑邪泄_褞薪懈_褞谢懈_邪胁谐褍褋褌_褋械锌褌械屑胁褉懈_芯泻褌芯屑胁褉懈_薪芯械屑胁褉懈_写械泻械屑胁褉懈".split("_"), monthsShort: "褟薪褍_褎械胁_屑邪褉_邪锌褉_屑邪泄_褞薪懈_褞谢懈_邪胁谐_褋械锌_芯泻褌_薪芯械_写械泻".split("_"), weekdays: "薪械写械谢褟_锌芯薪械写械谢薪懈泻_胁褌芯褉薪懈泻_褋褉褟写邪_褔械褌胁褗褉褌褗泻_锌械褌褗泻_褋褗斜芯褌邪".split("_"), weekdaysShort: "薪械写_锌芯薪_胁褌芯_褋褉褟_褔械褌_锌械褌_褋褗斜".split("_"), weekdaysMin: "薪写_锌薪_胁褌_褋褉_褔褌_锌褌_褋斜".split("_"), longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "D.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY H:mm", LLLL: "dddd, D MMMM YYYY H:mm" }, calendar: { sameDay: "[袛薪械褋 胁] LT", nextDay: "[校褌褉械 胁] LT", nextWeek: "dddd [胁] LT", lastDay: "[袙褔械褉邪 胁] LT", lastWeek: function () { switch (this.day()) { case 0: case 3: case 6: return "[袦懈薪邪谢邪褌邪] dddd [胁] LT"; case 1: case 2: case 4: case 5: return "[袦懈薪邪谢懈褟] dddd [胁] LT" } }, sameElse: "L" }, relativeTime: { future: "褋谢械写 %s", past: "锌褉械写懈 %s", s: "薪褟泻芯谢泻芯 褋械泻褍薪写懈", ss: "%d 褋械泻褍薪写懈", m: "屑懈薪褍褌邪", mm: "%d 屑懈薪褍褌懈", h: "褔邪褋", hh: "%d 褔邪褋邪", d: "写械薪", dd: "%d 写械薪邪", M: "屑械褋械褑", MM: "%d 屑械褋械褑邪", y: "谐芯写懈薪邪", yy: "%d 谐芯写懈薪懈" }, dayOfMonthOrdinalParse: /\d{1,2}-(械胁|械薪|褌懈|胁懈|褉懈|屑懈)/, ordinal: function (e) { var t = e % 10, n = e % 100; return 0 === e ? e + "-械胁" : 0 === n ? e + "-械薪" : n > 10 && n < 20 ? e + "-褌懈" : 1 === t ? e + "-胁懈" : 2 === t ? e + "-褉懈" : 7 === t || 8 === t ? e + "-屑懈" : e + "-褌懈" }, week: { dow: 1, doy: 7 } }); return t
+                    }))
+                }, "84f2": function (e, t) { e.exports = {} }, "85e3": function (e, t) { function n(e, t, n) { switch (n.length) { case 0: return e.call(t); case 1: return e.call(t, n[0]); case 2: return e.call(t, n[0], n[1]); case 3: return e.call(t, n[0], n[1], n[2]) }return e.apply(t, n) } e.exports = n }, 8604: function (e, t, n) { var r = n("26e8"), i = n("e2c0"); function o(e, t) { return null != e && i(e, t, r) } e.exports = o }, 8689: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "醽�", 2: "醽�", 3: "醽�", 4: "醽�", 5: "醽�", 6: "醽�", 7: "醽�", 8: "醽�", 9: "醽�", 0: "醽�" }, n = { "醽�": "1", "醽�": "2", "醽�": "3", "醽�": "4", "醽�": "5", "醽�": "6", "醽�": "7", "醽�": "8", "醽�": "9", "醽�": "0" }, r = e.defineLocale("my", { months: "醼囜�斸�横�斸�濁��涐�甠醼栣�贬�栣�贬��横�濁��涐�甠醼欋�愥�篲醼п�曖�坚�甠醼欋�盻醼囜�结�斸�篲醼囜�搬�溼���勧�篲醼炨�坚�傖��愥�篲醼呩��醼横�愥�勧�横�樶�琠醼♂�贬���醼横�愥���樶�琠醼斸���濁�勧�横�樶�琠醼掅��囜�勧�横�樶��".split("_"), monthsShort: "醼囜�斸�篲醼栣�盻醼欋�愥�篲醼曖�坚�甠醼欋�盻醼囜�结�斸�篲醼溼���勧�篲醼炨�糭醼呩��醼篲醼♂�贬���醼篲醼斸��痏醼掅��".split("_"), weekdays: "醼愥�斸�勧�横�贯�傖�斸�结�盻醼愥�斸�勧�横�贯�溼�琠醼♂�勧�横�贯�傖�玙醼椺��掅�贯�撫�熱�搬�竉醼�醼坚��炨�曖�愥�贬�竉醼炨�贬���醼坚�琠醼呩�斸��".split("_"), weekdaysShort: "醼斸�结�盻醼溼�琠醼傖�玙醼熱�搬�竉醼�醼坚�琠醼炨�贬�琠醼斸��".split("_"), weekdaysMin: "醼斸�结�盻醼溼�琠醼傖�玙醼熱�搬�竉醼�醼坚�琠醼炨�贬�琠醼斸��".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[醼氠�斸��.] LT [醼欋�踞�琞", nextDay: "[醼欋�斸��醼横�栣�坚�斸�篯 LT [醼欋�踞�琞", nextWeek: "dddd LT [醼欋�踞�琞", lastDay: "[醼欋�斸��.醼�] LT [醼欋�踞�琞", lastWeek: "[醼曖�坚��羔�佱�册�丰�炨�贬�琞 dddd LT [醼欋�踞�琞", sameElse: "L" }, relativeTime: { future: "醼溼��欋�娽�横�� %s 醼欋�踞��", past: "醼溼�结�斸�横�佱�册�丰�炨�贬�� %s 醼�", s: "醼呩��醼贯��醼斸��.醼♂�斸�娽�横�羔�勧�氠��", ss: "%d 醼呩��醼贯��醼斸�丰��", m: "醼愥�呩�横�欋��斸�呩��", mm: "%d 醼欋��斸�呩��", h: "醼愥�呩�横�斸��涐��", hh: "%d 醼斸��涐��", d: "醼愥�呩�横�涐��醼�", dd: "%d 醼涐��醼�", M: "醼愥�呩�横��", MM: "%d 醼�", y: "醼愥�呩�横�斸�踞�呩��", yy: "%d 醼斸�踞�呩��" }, preparse: function (e) { return e.replace(/[醽佱亗醽冡亜醽呩亞醽囜亪醽夅亐]/g, (function (e) { return n[e] })) }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })) }, week: { dow: 1, doy: 4 } }); return r
+                    }))
+                }, "86cc": function (e, t, n) { var r = n("cb7c"), i = n("c69a"), o = n("6a99"), a = Object.defineProperty; t.f = n("9e1e") ? Object.defineProperty : function (e, t, n) { if (r(e), t = o(t, !0), r(n), i) try { return a(e, t, n) } catch (s) { } if ("get" in n || "set" in n) throw TypeError("Accessors not supported!"); return "value" in n && (e[t] = n.value), e } }, "86e1": function (e, t, n) { var r = n("85e3"), i = n("e2e4"), o = n("4416"), a = n("8296"), s = n("f4d6"); function c(e, t, n) { t = i(t, e), e = a(e, t); var c = null == e ? e : e[s(o(t))]; return null == c ? void 0 : r(c, e, n) } e.exports = c }, "872a": function (e, t, n) { var r = n("3b4a"); function i(e, t, n) { "__proto__" == t && r ? r(e, t, { configurable: !0, enumerable: !0, value: n, writable: !0 }) : e[t] = n } e.exports = i }, 8827: function (e, t, n) { "use strict"; t.__esModule = !0, t.default = function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } }, "882a": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n("41b2"), i = l(r), o = n("6604"), a = l(o), s = n("5669"), c = l(s); function l(e) { return e && e.__esModule ? e : { default: e } } var u = { lang: (0, i["default"])({ placeholder: "璇烽�夋嫨鏃ユ湡", rangePlaceholder: ["寮�濮嬫棩鏈�", "缁撴潫鏃ユ湡"] }, a["default"]), timePickerLocale: (0, i["default"])({}, c["default"]) }; u.lang.ok = "纭� 瀹�", t["default"] = u }, 8840: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("gl", { months: "xaneiro_febreiro_marzo_abril_maio_xu帽o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"), monthsShort: "xan._feb._mar._abr._mai._xu帽._xul._ago._set._out._nov._dec.".split("_"), monthsParseExact: !0, weekdays: "domingo_luns_martes_m茅rcores_xoves_venres_s谩bado".split("_"), weekdaysShort: "dom._lun._mar._m茅r._xov._ven._s谩b.".split("_"), weekdaysMin: "do_lu_ma_m茅_xo_ve_s谩".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD/MM/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY H:mm", LLLL: "dddd, D [de] MMMM [de] YYYY H:mm" }, calendar: { sameDay: function () { return "[hoxe " + (1 !== this.hours() ? "谩s" : "谩") + "] LT" }, nextDay: function () { return "[ma帽谩 " + (1 !== this.hours() ? "谩s" : "谩") + "] LT" }, nextWeek: function () { return "dddd [" + (1 !== this.hours() ? "谩s" : "a") + "] LT" }, lastDay: function () { return "[onte " + (1 !== this.hours() ? "谩" : "a") + "] LT" }, lastWeek: function () { return "[o] dddd [pasado " + (1 !== this.hours() ? "谩s" : "a") + "] LT" }, sameElse: "L" }, relativeTime: { future: function (e) { return 0 === e.indexOf("un") ? "n" + e : "en " + e }, past: "hai %s", s: "uns segundos", ss: "%d segundos", m: "un minuto", mm: "%d minutos", h: "unha hora", hh: "%d horas", d: "un d铆a", dd: "%d d铆as", M: "un mes", MM: "%d meses", y: "un ano", yy: "%d anos" }, dayOfMonthOrdinalParse: /\d{1,2}潞/, ordinal: "%d潞", week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, 8875: function (e, t, n) { var r, i, o; (function (n, a) { i = [], r = a, o = "function" === typeof r ? r.apply(t, i) : r, void 0 === o || (e.exports = o) })("undefined" !== typeof self && self, (function () { function e() { var t = Object.getOwnPropertyDescriptor(document, "currentScript"); if (!t && "currentScript" in document && document.currentScript) return document.currentScript; if (t && t.get !== e && document.currentScript) return document.currentScript; try { throw new Error } catch (d) { var n, r, i, o = /.*at [^(]*\((.*):(.+):(.+)\)$/gi, a = /@([^@]*):(\d+):(\d+)\s*$/gi, s = o.exec(d.stack) || a.exec(d.stack), c = s && s[1] || !1, l = s && s[2] || !1, u = document.location.href.replace(document.location.hash, ""), h = document.getElementsByTagName("script"); c === u && (n = document.documentElement.outerHTML, r = new RegExp("(?:[^\\n]+?\\n){0," + (l - 2) + "}[^<]*<script>([\\d\\D]*?)<\\/script>[\\d\\D]*", "i"), i = n.replace(r, "$1").trim()); for (var f = 0; f < h.length; f++) { if ("interactive" === h[f].readyState) return h[f]; if (h[f].src === c) return h[f]; if (c === u && h[f].innerHTML && h[f].innerHTML.trim() === i) return h[f] } return null } } return e })) }, "898b": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"), n = "ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"), r = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i], i = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, o = e.defineLocale("es", { months: "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"), monthsShort: function (e, r) { return e ? /-MMM-/.test(r) ? n[e.month()] : t[e.month()] : t }, monthsRegex: i, monthsShortRegex: i, monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, monthsParse: r, longMonthsParse: r, shortMonthsParse: r, weekdays: "domingo_lunes_martes_mi茅rcoles_jueves_viernes_s谩bado".split("_"), weekdaysShort: "dom._lun._mar._mi茅._jue._vie._s谩b.".split("_"), weekdaysMin: "do_lu_ma_mi_ju_vi_s谩".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD/MM/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY H:mm", LLLL: "dddd, D [de] MMMM [de] YYYY H:mm" }, calendar: { sameDay: function () { return "[hoy a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, nextDay: function () { return "[ma帽ana a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, nextWeek: function () { return "dddd [a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, lastDay: function () { return "[ayer a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, lastWeek: function () { return "[el] dddd [pasado a la" + (1 !== this.hours() ? "s" : "") + "] LT" }, sameElse: "L" }, relativeTime: { future: "en %s", past: "hace %s", s: "unos segundos", ss: "%d segundos", m: "un minuto", mm: "%d minutos", h: "una hora", hh: "%d horas", d: "un d铆a", dd: "%d d铆as", M: "un mes", MM: "%d meses", y: "un a帽o", yy: "%d a帽os" }, dayOfMonthOrdinalParse: /\d{1,2}潞/, ordinal: "%d潞", week: { dow: 1, doy: 4 }, invalidDate: "Fecha invalida" }); return o
+                    }))
+                }, "89d9": function (e, t, n) { var r = n("656b"), i = n("159a"), o = n("e2e4"); function a(e, t, n) { var a = -1, s = t.length, c = {}; while (++a < s) { var l = t[a], u = r(e, l); n(u, l) && i(c, o(l, e), u) } return c } e.exports = a }, "8adb": function (e, t) { function n(e, t) { if (("constructor" !== t || "function" !== typeof e[t]) && "__proto__" != t) return e[t] } e.exports = n }, "8b79": function (e, t, n) { }, "8b84": function (e, t, n) { }, "8b97": function (e, t, n) { var r = n("d3f4"), i = n("cb7c"), o = function (e, t) { if (i(e), !r(t) && null !== t) throw TypeError(t + ": can't set as prototype!") }; e.exports = { set: Object.setPrototypeOf || ("__proto__" in {} ? function (e, t, r) { try { r = n("9b43")(Function.call, n("11e9").f(Object.prototype, "__proto__").set, 2), r(e, []), t = !(e instanceof Array) } catch (i) { t = !0 } return function (e, n) { return o(e, n), t ? e.__proto__ = n : r(e, n), e } }({}, !1) : void 0), check: o } }, "8bbf": function (t, n) { t.exports = e }, "8c3f": function (e, t, n) { }, "8d1e": function (e, t, n) { }, "8d47": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e) { return "undefined" !== typeof Function && e instanceof Function || "[object Function]" === Object.prototype.toString.call(e) } var n = e.defineLocale("el", { monthsNominativeEl: "螜伪谓慰蠀维蟻喂慰蟼_桅蔚尾蟻慰蠀维蟻喂慰蟼_螠维蟻蟿喂慰蟼_螒蟺蟻委位喂慰蟼_螠维喂慰蟼_螜慰蠉谓喂慰蟼_螜慰蠉位喂慰蟼_螒蠉纬慰蠀蟽蟿慰蟼_危蔚蟺蟿苇渭尾蟻喂慰蟼_螣魏蟿蠋尾蟻喂慰蟼_螡慰苇渭尾蟻喂慰蟼_螖蔚魏苇渭尾蟻喂慰蟼".split("_"), monthsGenitiveEl: "螜伪谓慰蠀伪蟻委慰蠀_桅蔚尾蟻慰蠀伪蟻委慰蠀_螠伪蟻蟿委慰蠀_螒蟺蟻喂位委慰蠀_螠伪螑慰蠀_螜慰蠀谓委慰蠀_螜慰蠀位委慰蠀_螒蠀纬慰蠉蟽蟿慰蠀_危蔚蟺蟿蔚渭尾蟻委慰蠀_螣魏蟿蠅尾蟻委慰蠀_螡慰蔚渭尾蟻委慰蠀_螖蔚魏蔚渭尾蟻委慰蠀".split("_"), months: function (e, t) { return e ? "string" === typeof t && /D/.test(t.substring(0, t.indexOf("MMMM"))) ? this._monthsGenitiveEl[e.month()] : this._monthsNominativeEl[e.month()] : this._monthsNominativeEl }, monthsShort: "螜伪谓_桅蔚尾_螠伪蟻_螒蟺蟻_螠伪蠆_螜慰蠀谓_螜慰蠀位_螒蠀纬_危蔚蟺_螣魏蟿_螡慰蔚_螖蔚魏".split("_"), weekdays: "螝蠀蟻喂伪魏萎_螖蔚蠀蟿苇蟻伪_韦蟻委蟿畏_韦蔚蟿维蟻蟿畏_螤苇渭蟺蟿畏_螤伪蟻伪蟽魏蔚蠀萎_危维尾尾伪蟿慰".split("_"), weekdaysShort: "螝蠀蟻_螖蔚蠀_韦蟻喂_韦蔚蟿_螤蔚渭_螤伪蟻_危伪尾".split("_"), weekdaysMin: "螝蠀_螖蔚_韦蟻_韦蔚_螤蔚_螤伪_危伪".split("_"), meridiem: function (e, t, n) { return e > 11 ? n ? "渭渭" : "螠螠" : n ? "蟺渭" : "螤螠" }, isPM: function (e) { return "渭" === (e + "").toLowerCase()[0] }, meridiemParse: /[螤螠]\.?螠?\.?/i, longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY h:mm A", LLLL: "dddd, D MMMM YYYY h:mm A" }, calendarEl: { sameDay: "[危萎渭蔚蟻伪 {}] LT", nextDay: "[螒蠉蟻喂慰 {}] LT", nextWeek: "dddd [{}] LT", lastDay: "[围胃蔚蟼 {}] LT", lastWeek: function () { switch (this.day()) { case 6: return "[蟿慰 蟺蟻慰畏纬慰蠉渭蔚谓慰] dddd [{}] LT"; default: return "[蟿畏谓 蟺蟻慰畏纬慰蠉渭蔚谓畏] dddd [{}] LT" } }, sameElse: "L" }, calendar: function (e, n) { var r = this._calendarEl[e], i = n && n.hours(); return t(r) && (r = r.apply(n)), r.replace("{}", i % 12 === 1 ? "蟽蟿畏" : "蟽蟿喂蟼") }, relativeTime: { future: "蟽蔚 %s", past: "%s 蟺蟻喂谓", s: "位委纬伪 未蔚蠀蟿蔚蟻蠈位蔚蟺蟿伪", ss: "%d 未蔚蠀蟿蔚蟻蠈位蔚蟺蟿伪", m: "苇谓伪 位蔚蟺蟿蠈", mm: "%d 位蔚蟺蟿维", h: "渭委伪 蠋蟻伪", hh: "%d 蠋蟻蔚蟼", d: "渭委伪 渭苇蟻伪", dd: "%d 渭苇蟻蔚蟼", M: "苇谓伪蟼 渭萎谓伪蟼", MM: "%d 渭萎谓蔚蟼", y: "苇谓伪蟼 蠂蟻蠈谓慰蟼", yy: "%d 蠂蟻蠈谓喂伪" }, dayOfMonthOrdinalParse: /\d{1,2}畏/, ordinal: "%d畏", week: { dow: 1, doy: 4 } }); return n
+                    }))
+                }, "8d57": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = "stycze艅_luty_marzec_kwiecie艅_maj_czerwiec_lipiec_sierpie艅_wrzesie艅_pa藕dziernik_listopad_grudzie艅".split("_"), n = "stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze艣nia_pa藕dziernika_listopada_grudnia".split("_"); function r(e) { return e % 10 < 5 && e % 10 > 1 && ~~(e / 10) % 10 !== 1 } function i(e, t, n) { var i = e + " "; switch (n) { case "ss": return i + (r(e) ? "sekundy" : "sekund"); case "m": return t ? "minuta" : "minut臋"; case "mm": return i + (r(e) ? "minuty" : "minut"); case "h": return t ? "godzina" : "godzin臋"; case "hh": return i + (r(e) ? "godziny" : "godzin"); case "MM": return i + (r(e) ? "miesi膮ce" : "miesi臋cy"); case "yy": return i + (r(e) ? "lata" : "lat") } } var o = e.defineLocale("pl", { months: function (e, r) { return e ? "" === r ? "(" + n[e.month()] + "|" + t[e.month()] + ")" : /D MMMM/.test(r) ? n[e.month()] : t[e.month()] : t }, monthsShort: "sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa藕_lis_gru".split("_"), weekdays: "niedziela_poniedzia艂ek_wtorek_艣roda_czwartek_pi膮tek_sobota".split("_"), weekdaysShort: "ndz_pon_wt_艣r_czw_pt_sob".split("_"), weekdaysMin: "Nd_Pn_Wt_艢r_Cz_Pt_So".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Dzi艣 o] LT", nextDay: "[Jutro o] LT", nextWeek: function () { switch (this.day()) { case 0: return "[W niedziel臋 o] LT"; case 2: return "[We wtorek o] LT"; case 3: return "[W 艣rod臋 o] LT"; case 6: return "[W sobot臋 o] LT"; default: return "[W] dddd [o] LT" } }, lastDay: "[Wczoraj o] LT", lastWeek: function () { switch (this.day()) { case 0: return "[W zesz艂膮 niedziel臋 o] LT"; case 3: return "[W zesz艂膮 艣rod臋 o] LT"; case 6: return "[W zesz艂膮 sobot臋 o] LT"; default: return "[W zesz艂y] dddd [o] LT" } }, sameElse: "L" }, relativeTime: { future: "za %s", past: "%s temu", s: "kilka sekund", ss: i, m: i, mm: i, h: i, hh: i, d: "1 dzie艅", dd: "%d dni", M: "miesi膮c", MM: i, y: "rok", yy: i }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return o
+                    }))
+                }, "8d74": function (e, t, n) { var r = n("4cef"), i = /^\s+/; function o(e) { return e ? e.slice(0, r(e) + 1).replace(i, "") : e } e.exports = o }, "8db3": function (e, t, n) { var r = n("47f5"); function i(e, t) { var n = null == e ? 0 : e.length; return !!n && r(e, t, 0) > -1 } e.exports = i }, "8de2": function (e, t, n) { var r = n("8eeb"), i = n("9934"); function o(e) { return r(e, i(e)) } e.exports = o }, "8df4": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "郾", 2: "鄄", 3: "鄢", 4: "鄞", 5: "鄣", 6: "鄱", 7: "鄯", 8: "鄹", 9: "酃", 0: "郯" }, n = { "郾": "1", "鄄": "2", "鄢": "3", "鄞": "4", "鄣": "5", "鄱": "6", "鄯": "7", "鄹": "8", "酃": "9", "郯": "0" }, r = e.defineLocale("fa", { months: "跇丕賳賵蹖賴_賮賵乇蹖賴_賲丕乇爻_丌賵乇蹖賱_賲賴_跇賵卅賳_跇賵卅蹖賴_丕賵鬲_爻倬鬲丕賲亘乇_丕讴鬲亘乇_賳賵丕賲亘乇_丿爻丕賲亘乇".split("_"), monthsShort: "跇丕賳賵蹖賴_賮賵乇蹖賴_賲丕乇爻_丌賵乇蹖賱_賲賴_跇賵卅賳_跇賵卅蹖賴_丕賵鬲_爻倬鬲丕賲亘乇_丕讴鬲亘乇_賳賵丕賲亘乇_丿爻丕賲亘乇".split("_"), weekdays: "蹖讴鈥屫促嗀ㄙ嘷丿賵卮賳亘賴_爻賴鈥屫促嗀ㄙ嘷趩賴丕乇卮賳亘賴_倬賳噩鈥屫促嗀ㄙ嘷噩賲毓賴_卮賳亘賴".split("_"), weekdaysShort: "蹖讴鈥屫促嗀ㄙ嘷丿賵卮賳亘賴_爻賴鈥屫促嗀ㄙ嘷趩賴丕乇卮賳亘賴_倬賳噩鈥屫促嗀ㄙ嘷噩賲毓賴_卮賳亘賴".split("_"), weekdaysMin: "蹖_丿_爻_趩_倬_噩_卮".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, meridiemParse: /賯亘賱 丕夭 馗賴乇|亘毓丿 丕夭 馗賴乇/, isPM: function (e) { return /亘毓丿 丕夭 馗賴乇/.test(e) }, meridiem: function (e, t, n) { return e < 12 ? "賯亘賱 丕夭 馗賴乇" : "亘毓丿 丕夭 馗賴乇" }, calendar: { sameDay: "[丕賲乇賵夭 爻丕毓鬲] LT", nextDay: "[賮乇丿丕 爻丕毓鬲] LT", nextWeek: "dddd [爻丕毓鬲] LT", lastDay: "[丿蹖乇賵夭 爻丕毓鬲] LT", lastWeek: "dddd [倬蹖卮] [爻丕毓鬲] LT", sameElse: "L" }, relativeTime: { future: "丿乇 %s", past: "%s 倬蹖卮", s: "趩賳丿 孬丕賳蹖賴", ss: "%d 孬丕賳蹖賴", m: "蹖讴 丿賯蹖賯賴", mm: "%d 丿賯蹖賯賴", h: "蹖讴 爻丕毓鬲", hh: "%d 爻丕毓鬲", d: "蹖讴 乇賵夭", dd: "%d 乇賵夭", M: "蹖讴 賲丕賴", MM: "%d 賲丕賴", y: "蹖讴 爻丕賱", yy: "%d 爻丕賱" }, preparse: function (e) { return e.replace(/[郯-酃]/g, (function (e) { return n[e] })).replace(/貙/g, ",") }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })).replace(/,/g, "貙") }, dayOfMonthOrdinalParse: /\d{1,2}賲/, ordinal: "%d賲", week: { dow: 6, doy: 12 } }); return r
+                    }))
+                }, "8df8": function (e, t, n) { "use strict"; e.exports = o, e.exports.isMobile = o, e.exports.default = o; var r = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i, i = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i; function o(e) { e || (e = {}); var t = e.ua; if (t || "undefined" === typeof navigator || (t = navigator.userAgent), t && t.headers && "string" === typeof t.headers["user-agent"] && (t = t.headers["user-agent"]), "string" !== typeof t) return !1; var n = e.tablet ? i.test(t) : r.test(t); return !n && e.tablet && e.featureDetect && navigator && navigator.maxTouchPoints > 1 && -1 !== t.indexOf("Macintosh") && -1 !== t.indexOf("Safari") && (n = !0), n } }, "8e60": function (e, t, n) { e.exports = !n("294c")((function () { return 7 != Object.defineProperty({}, "a", { get: function () { return 7 } }).a })) }, "8e6e": function (e, t, n) { var r = n("5ca1"), i = n("990b"), o = n("6821"), a = n("11e9"), s = n("f1ae"); r(r.S, "Object", { getOwnPropertyDescriptors: function (e) { var t, n, r = o(e), c = a.f, l = i(r), u = {}, h = 0; while (l.length > h) n = c(r, t = l[h++]), void 0 !== n && s(u, t, n); return u } }) }, "8e73": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "佟", 2: "佗", 3: "伲", 4: "伽", 5: "佶", 6: "佴", 7: "侑", 8: "侉", 9: "侃", 0: "贍" }, n = { "佟": "1", "佗": "2", "伲": "3", "伽": "4", "佶": "5", "佴": "6", "侑": "7", "侉": "8", "侃": "9", "贍": "0" }, r = function (e) { return 0 === e ? 0 : 1 === e ? 1 : 2 === e ? 2 : e % 100 >= 3 && e % 100 <= 10 ? 3 : e % 100 >= 11 ? 4 : 5 }, i = { s: ["兀賯賱 賲賳 孬丕賳賷丞", "孬丕賳賷丞 賵丕丨丿丞", ["孬丕賳賷鬲丕賳", "孬丕賳賷鬲賷賳"], "%d 孬賵丕賳", "%d 孬丕賳賷丞", "%d 孬丕賳賷丞"], m: ["兀賯賱 賲賳 丿賯賷賯丞", "丿賯賷賯丞 賵丕丨丿丞", ["丿賯賷賯鬲丕賳", "丿賯賷賯鬲賷賳"], "%d 丿賯丕卅賯", "%d 丿賯賷賯丞", "%d 丿賯賷賯丞"], h: ["兀賯賱 賲賳 爻丕毓丞", "爻丕毓丞 賵丕丨丿丞", ["爻丕毓鬲丕賳", "爻丕毓鬲賷賳"], "%d 爻丕毓丕鬲", "%d 爻丕毓丞", "%d 爻丕毓丞"], d: ["兀賯賱 賲賳 賷賵賲", "賷賵賲 賵丕丨丿", ["賷賵賲丕賳", "賷賵賲賷賳"], "%d 兀賷丕賲", "%d 賷賵賲賸丕", "%d 賷賵賲"], M: ["兀賯賱 賲賳 卮賴乇", "卮賴乇 賵丕丨丿", ["卮賴乇丕賳", "卮賴乇賷賳"], "%d 兀卮賴乇", "%d 卮賴乇丕", "%d 卮賴乇"], y: ["兀賯賱 賲賳 毓丕賲", "毓丕賲 賵丕丨丿", ["毓丕賲丕賳", "毓丕賲賷賳"], "%d 兀毓賵丕賲", "%d 毓丕賲賸丕", "%d 毓丕賲"] }, o = function (e) { return function (t, n, o, a) { var s = r(t), c = i[e][r(t)]; return 2 === s && (c = c[n ? 0 : 1]), c.replace(/%d/i, t) } }, a = ["賷賳丕賷乇", "賮亘乇丕賷乇", "賲丕乇爻", "兀亘乇賷賱", "賲丕賷賵", "賷賵賳賷賵", "賷賵賱賷賵", "兀睾爻胤爻", "爻亘鬲賲亘乇", "兀賰鬲賵亘乇", "賳賵賮賲亘乇", "丿賷爻賲亘乇"], s = e.defineLocale("ar", { months: a, monthsShort: a, weekdays: "丕賱兀丨丿_丕賱廿孬賳賷賳_丕賱孬賱丕孬丕亍_丕賱兀乇亘毓丕亍_丕賱禺賲賷爻_丕賱噩賲毓丞_丕賱爻亘鬲".split("_"), weekdaysShort: "兀丨丿_廿孬賳賷賳_孬賱丕孬丕亍_兀乇亘毓丕亍_禺賲賷爻_噩賲毓丞_爻亘鬲".split("_"), weekdaysMin: "丨_賳_孬_乇_禺_噩_爻".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "D/鈥廙/鈥廦YYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, meridiemParse: /氐|賲/, isPM: function (e) { return "賲" === e }, meridiem: function (e, t, n) { return e < 12 ? "氐" : "賲" }, calendar: { sameDay: "[丕賱賷賵賲 毓賳丿 丕賱爻丕毓丞] LT", nextDay: "[睾丿賸丕 毓賳丿 丕賱爻丕毓丞] LT", nextWeek: "dddd [毓賳丿 丕賱爻丕毓丞] LT", lastDay: "[兀賲爻 毓賳丿 丕賱爻丕毓丞] LT", lastWeek: "dddd [毓賳丿 丕賱爻丕毓丞] LT", sameElse: "L" }, relativeTime: { future: "亘毓丿 %s", past: "賲賳匕 %s", s: o("s"), ss: o("s"), m: o("m"), mm: o("m"), h: o("h"), hh: o("h"), d: o("d"), dd: o("d"), M: o("M"), MM: o("M"), y: o("y"), yy: o("y") }, preparse: function (e) { return e.replace(/[佟佗伲伽佶佴侑侉侃贍]/g, (function (e) { return n[e] })).replace(/貙/g, ",") }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })).replace(/,/g, "貙") }, week: { dow: 6, doy: 12 } }); return s
+                    }))
+                }, "8e8e": function (e, t, n) { "use strict"; t.__esModule = !0, t.default = function (e, t) { var n = {}; for (var r in e) t.indexOf(r) >= 0 || Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r]); return n } }, "8e95": function (e, t, n) { var r = n("c195"); e.exports = new r }, "8eeb": function (e, t, n) { var r = n("32b3"), i = n("872a"); function o(e, t, n, o) { var a = !n; n || (n = {}); var s = -1, c = t.length; while (++s < c) { var l = t[s], u = o ? o(n[l], e[l], l, n, e) : void 0; void 0 === u && (u = e[l]), a ? i(n, l, u) : r(n, l, u) } return n } e.exports = o }, "8f60": function (e, t, n) { "use strict"; var r = n("a159"), i = n("aebd"), o = n("45f2"), a = {}; n("35e8")(a, n("5168")("iterator"), (function () { return this })), e.exports = function (e, t, n) { e.prototype = r(a, { next: i(1, n) }), o(e, t + " Iterator") } }, 9003: function (e, t, n) { var r = n("6b4c"); e.exports = Array.isArray || function (e) { return "Array" == r(e) } }, "900d": function (e, t, n) { var r = n("8eeb"), i = n("2ec1"), o = n("ec69"), a = i((function (e, t, n, i) { r(t, o(t), e, i) })); e.exports = a }, 9020: function (e, t) { function n(e) { this.options = e, !e.deferSetup && this.setup() } n.prototype = { constructor: n, setup: function () { this.options.setup && this.options.setup(), this.initialised = !0 }, on: function () { !this.initialised && this.setup(), this.options.match && this.options.match() }, off: function () { this.options.unmatch && this.options.unmatch() }, destroy: function () { this.options.destroy ? this.options.destroy() : this.off() }, equals: function (e) { return this.options === e || this.options.match === e } }, e.exports = n }, 9043: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "唰�", 2: "唰�", 3: "唰�", 4: "唰�", 5: "唰�", 6: "唰�", 7: "唰�", 8: "唰�", 9: "唰�", 0: "唰�" }, n = { "唰�": "1", "唰�": "2", "唰�": "3", "唰�": "4", "唰�": "5", "唰�": "6", "唰�": "7", "唰�": "8", "唰�": "9", "唰�": "0" }, r = e.defineLocale("bn", { months: "唳溹唳ㄠ唰熰唳班_唳唳唳班唰熰唳班_唳唳班唳歘唳忇Κ唰嵿Π唳苦Σ_唳_唳溹唳╛唳溹唳侧唳嘷唳嗋唳膏唳焈唳膏唳唳熰唳唳Π_唳呧唰嵿唰嬥Μ唳癬唳ㄠΝ唰囙Ξ唰嵿Μ唳癬唳∴唳膏唳唳Π".split("_"), monthsShort: "唳溹唳ㄠ_唳唳唳班_唳唳班唳歘唳忇Κ唰嵿Π唳苦Σ_唳_唳溹唳╛唳溹唳侧唳嘷唳嗋唳膏唳焈唳膏唳唳焈唳呧唰嵿唰媉唳ㄠΝ唰嘷唳∴唳膏".split("_"), weekdays: "唳班Μ唳苦Μ唳距Π_唳膏唳Μ唳距Π_唳唰嵿唳侧Μ唳距Π_唳唳оΜ唳距Π_唳唳灌Ω唰嵿Κ唳む唳唳癬唳多唳曕唳班Μ唳距Π_唳多Θ唳苦Μ唳距Π".split("_"), weekdaysShort: "唳班Μ唳縚唳膏唳甠唳唰嵿唳瞋唳唳唳唳灌Ω唰嵿Κ唳む_唳多唳曕唳癬唳多Θ唳�".split("_"), weekdaysMin: "唳班Μ唳縚唳膏唳甠唳唰嵿唳瞋唳唳唳唳筥唳多唳曕唳癬唳多Θ唳�".split("_"), longDateFormat: { LT: "A h:mm 唳膏Ξ唰�", LTS: "A h:mm:ss 唳膏Ξ唰�", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm 唳膏Ξ唰�", LLLL: "dddd, D MMMM YYYY, A h:mm 唳膏Ξ唰�" }, calendar: { sameDay: "[唳嗋] LT", nextDay: "[唳嗋唳距Ξ唰�唳曕唳瞉 LT", nextWeek: "dddd, LT", lastDay: "[唳椸Δ唳曕唳瞉 LT", lastWeek: "[唳椸Δ] dddd, LT", sameElse: "L" }, relativeTime: { future: "%s 唳Π唰�", past: "%s 唳嗋唰�", s: "唳曕唰囙 唳膏唳曕唳ㄠ唳�", ss: "%d 唳膏唳曕唳ㄠ唳�", m: "唳忇 唳唳ㄠ唳�", mm: "%d 唳唳ㄠ唳�", h: "唳忇 唳樴Θ唰嵿唳�", hh: "%d 唳樴Θ唰嵿唳�", d: "唳忇 唳︵唳�", dd: "%d 唳︵唳�", M: "唳忇 唳唳�", MM: "%d 唳唳�", y: "唳忇 唳唳�", yy: "%d 唳唳�" }, preparse: function (e) { return e.replace(/[唰оЖ唰┼И唰К唰М唰Е]/g, (function (e) { return n[e] })) }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })) }, meridiemParse: /唳班唳唳膏唳距Σ|唳︵唳唳皘唳唳曕唳瞸唳班唳�/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "唳班唳�" === t && e >= 4 || "唳︵唳唳�" === t && e < 5 || "唳唳曕唳�" === t ? e + 12 : e }, meridiem: function (e, t, n) { return e < 4 ? "唳班唳�" : e < 10 ? "唳膏唳距Σ" : e < 17 ? "唳︵唳唳�" : e < 20 ? "唳唳曕唳�" : "唳班唳�" }, week: { dow: 0, doy: 6 } }); return r
+                    }))
+                }, 9083: function (e, t, n) { }, 9093: function (e, t, n) { var r = n("ce10"), i = n("e11e").concat("length", "prototype"); t.f = Object.getOwnPropertyNames || function (e) { return r(e, i) } }, "90ea": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("zh-tw", { months: "涓�鏈坃浜屾湀_涓夋湀_鍥涙湀_浜旀湀_鍏湀_涓冩湀_鍏湀_涔濇湀_鍗佹湀_鍗佷竴鏈坃鍗佷簩鏈�".split("_"), monthsShort: "1鏈坃2鏈坃3鏈坃4鏈坃5鏈坃6鏈坃7鏈坃8鏈坃9鏈坃10鏈坃11鏈坃12鏈�".split("_"), weekdays: "鏄熸湡鏃鏄熸湡涓�_鏄熸湡浜宊鏄熸湡涓塤鏄熸湡鍥沖鏄熸湡浜擾鏄熸湡鍏�".split("_"), weekdaysShort: "閫辨棩_閫变竴_閫变簩_閫变笁_閫卞洓_閫变簲_閫卞叚".split("_"), weekdaysMin: "鏃涓�_浜宊涓塤鍥沖浜擾鍏�".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY/MM/DD", LL: "YYYY骞碝鏈圖鏃�", LLL: "YYYY骞碝鏈圖鏃� HH:mm", LLLL: "YYYY骞碝鏈圖鏃ddd HH:mm", l: "YYYY/M/D", ll: "YYYY骞碝鏈圖鏃�", lll: "YYYY骞碝鏈圖鏃� HH:mm", llll: "YYYY骞碝鏈圖鏃ddd HH:mm" }, meridiemParse: /鍑屾櫒|鏃╀笂|涓婂崍|涓崍|涓嬪崍|鏅氫笂/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "鍑屾櫒" === t || "鏃╀笂" === t || "涓婂崍" === t ? e : "涓崍" === t ? e >= 11 ? e : e + 12 : "涓嬪崍" === t || "鏅氫笂" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { var r = 100 * e + t; return r < 600 ? "鍑屾櫒" : r < 900 ? "鏃╀笂" : r < 1130 ? "涓婂崍" : r < 1230 ? "涓崍" : r < 1800 ? "涓嬪崍" : "鏅氫笂" }, calendar: { sameDay: "[浠婂ぉ] LT", nextDay: "[鏄庡ぉ] LT", nextWeek: "[涓媇dddd LT", lastDay: "[鏄ㄥぉ] LT", lastWeek: "[涓奭dddd LT", sameElse: "L" }, dayOfMonthOrdinalParse: /\d{1,2}(鏃鏈坾閫�)/, ordinal: function (e, t) { switch (t) { case "d": case "D": case "DDD": return e + "鏃�"; case "M": return e + "鏈�"; case "w": case "W": return e + "閫�"; default: return e } }, relativeTime: { future: "%s寰�", past: "%s鍓�", s: "骞剧", ss: "%d 绉�", m: "1 鍒嗛悩", mm: "%d 鍒嗛悩", h: "1 灏忔檪", hh: "%d 灏忔檪", d: "1 澶�", dd: "%d 澶�", M: "1 鍊嬫湀", MM: "%d 鍊嬫湀", y: "1 骞�", yy: "%d 骞�" } }); return t
+                    }))
+                }, 9138: function (e, t, n) { e.exports = n("35e8") }, 9152: function (e, t) { t.read = function (e, t, n, r, i) { var o, a, s = 8 * i - r - 1, c = (1 << s) - 1, l = c >> 1, u = -7, h = n ? i - 1 : 0, f = n ? -1 : 1, d = e[t + h]; for (h += f, o = d & (1 << -u) - 1, d >>= -u, u += s; u > 0; o = 256 * o + e[t + h], h += f, u -= 8); for (a = o & (1 << -u) - 1, o >>= -u, u += r; u > 0; a = 256 * a + e[t + h], h += f, u -= 8); if (0 === o) o = 1 - l; else { if (o === c) return a ? NaN : 1 / 0 * (d ? -1 : 1); a += Math.pow(2, r), o -= l } return (d ? -1 : 1) * a * Math.pow(2, o - r) }, t.write = function (e, t, n, r, i, o) { var a, s, c, l = 8 * o - i - 1, u = (1 << l) - 1, h = u >> 1, f = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0, d = r ? 0 : o - 1, p = r ? 1 : -1, v = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0; for (t = Math.abs(t), isNaN(t) || t === 1 / 0 ? (s = isNaN(t) ? 1 : 0, a = u) : (a = Math.floor(Math.log(t) / Math.LN2), t * (c = Math.pow(2, -a)) < 1 && (a--, c *= 2), t += a + h >= 1 ? f / c : f * Math.pow(2, 1 - h), t * c >= 2 && (a++, c /= 2), a + h >= u ? (s = 0, a = u) : a + h >= 1 ? (s = (t * c - 1) * Math.pow(2, i), a += h) : (s = t * Math.pow(2, h - 1) * Math.pow(2, i), a = 0)); i >= 8; e[n + d] = 255 & s, d += p, s /= 256, i -= 8); for (a = a << i | s, l += i; l > 0; e[n + d] = 255 & a, d += p, a /= 256, l -= 8); e[n + d - p] |= 128 * v } }, "91e9": function (e, t) { function n(e, t) { return function (n) { return e(t(n)) } } e.exports = n }, "92fa": function (e, t) { var n = /^(attrs|props|on|nativeOn|class|style|hook)$/; function r(e, t) { return function () { e && e.apply(this, arguments), t && t.apply(this, arguments) } } e.exports = function (e) { return e.reduce((function (e, t) { var i, o, a, s, c; for (a in t) if (i = e[a], o = t[a], i && n.test(a)) if ("class" === a && ("string" === typeof i && (c = i, e[a] = i = {}, i[c] = !0), "string" === typeof o && (c = o, t[a] = o = {}, o[c] = !0)), "on" === a || "nativeOn" === a || "hook" === a) for (s in o) i[s] = r(i[s], o[s]); else if (Array.isArray(i)) e[a] = i.concat(o); else if (Array.isArray(o)) e[a] = [i].concat(o); else for (s in o) i[s] = o[s]; else e[a] = t[a]; return e }), {}) } }, 9306: function (e, t, n) { "use strict"; var r = n("8e60"), i = n("c3a1"), o = n("9aa9"), a = n("355d"), s = n("241e"), c = n("335c"), l = Object.assign; e.exports = !l || n("294c")((function () { var e = {}, t = {}, n = Symbol(), r = "abcdefghijklmnopqrst"; return e[n] = 7, r.split("").forEach((function (e) { t[e] = e })), 7 != l({}, e)[n] || Object.keys(l({}, t)).join("") != r })) ? function (e, t) { var n = s(e), l = arguments.length, u = 1, h = o.f, f = a.f; while (l > u) { var d, p = c(arguments[u++]), v = h ? i(p).concat(h(p)) : i(p), m = v.length, g = 0; while (m > g) d = v[g++], r && !f.call(p, d) || (n[d] = p[d]) } return n } : l }, 9339: function (e, t, n) {
+                    (function (t) {
+                        /*!
+                         * Quill Editor v1.3.7
+                         * https://quilljs.com/
+                         * Copyright (c) 2014, Jason Chen
+                         * Copyright (c) 2013, salesforce.com
+                         */
+                        (function (t, n) { e.exports = n() })("undefined" !== typeof self && self, (function () { return function (e) { var t = {}; function n(r) { if (t[r]) return t[r].exports; var i = t[r] = { i: r, l: !1, exports: {} }; return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports } return n.m = e, n.c = t, n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { configurable: !1, enumerable: !0, get: r }) }, n.n = function (e) { var t = e && e.__esModule ? function () { return e["default"] } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = 109) }([function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(17), i = n(18), o = n(19), a = n(45), s = n(46), c = n(47), l = n(48), u = n(49), h = n(12), f = n(32), d = n(33), p = n(31), v = n(1), m = { Scope: v.Scope, create: v.create, find: v.find, query: v.query, register: v.register, Container: r.default, Format: i.default, Leaf: o.default, Embed: l.default, Scroll: a.default, Block: c.default, Inline: s.default, Text: u.default, Attributor: { Attribute: h.default, Class: f.default, Style: d.default, Store: p.default } }; t.default = m }, function (e, t, n) { "use strict"; var r = this && this.__extends || function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(); Object.defineProperty(t, "__esModule", { value: !0 }); var i = function (e) { function t(t) { var n = this; return t = "[Parchment] " + t, n = e.call(this, t) || this, n.message = t, n.name = n.constructor.name, n } return r(t, e), t }(Error); t.ParchmentError = i; var o, a = {}, s = {}, c = {}, l = {}; function u(e, t) { var n = f(e); if (null == n) throw new i("Unable to create " + e + " blot"); var r = n, o = e instanceof Node || e["nodeType"] === Node.TEXT_NODE ? e : r.create(t); return new r(o, t) } function h(e, n) { return void 0 === n && (n = !1), null == e ? null : null != e[t.DATA_KEY] ? e[t.DATA_KEY].blot : n ? h(e.parentNode, n) : null } function f(e, t) { var n; if (void 0 === t && (t = o.ANY), "string" === typeof e) n = l[e] || a[e]; else if (e instanceof Text || e["nodeType"] === Node.TEXT_NODE) n = l["text"]; else if ("number" === typeof e) e & o.LEVEL & o.BLOCK ? n = l["block"] : e & o.LEVEL & o.INLINE && (n = l["inline"]); else if (e instanceof HTMLElement) { var r = (e.getAttribute("class") || "").split(/\s+/); for (var i in r) if (n = s[r[i]], n) break; n = n || c[e.tagName] } return null == n ? null : t & o.LEVEL & n.scope && t & o.TYPE & n.scope ? n : null } function d() { for (var e = [], t = 0; t < arguments.length; t++)e[t] = arguments[t]; if (e.length > 1) return e.map((function (e) { return d(e) })); var n = e[0]; if ("string" !== typeof n.blotName && "string" !== typeof n.attrName) throw new i("Invalid definition"); if ("abstract" === n.blotName) throw new i("Cannot register abstract class"); if (l[n.blotName || n.attrName] = n, "string" === typeof n.keyName) a[n.keyName] = n; else if (null != n.className && (s[n.className] = n), null != n.tagName) { Array.isArray(n.tagName) ? n.tagName = n.tagName.map((function (e) { return e.toUpperCase() })) : n.tagName = n.tagName.toUpperCase(); var r = Array.isArray(n.tagName) ? n.tagName : [n.tagName]; r.forEach((function (e) { null != c[e] && null != n.className || (c[e] = n) })) } return n } t.DATA_KEY = "__blot", function (e) { e[e["TYPE"] = 3] = "TYPE", e[e["LEVEL"] = 12] = "LEVEL", e[e["ATTRIBUTE"] = 13] = "ATTRIBUTE", e[e["BLOT"] = 14] = "BLOT", e[e["INLINE"] = 7] = "INLINE", e[e["BLOCK"] = 11] = "BLOCK", e[e["BLOCK_BLOT"] = 10] = "BLOCK_BLOT", e[e["INLINE_BLOT"] = 6] = "INLINE_BLOT", e[e["BLOCK_ATTRIBUTE"] = 9] = "BLOCK_ATTRIBUTE", e[e["INLINE_ATTRIBUTE"] = 5] = "INLINE_ATTRIBUTE", e[e["ANY"] = 15] = "ANY" }(o = t.Scope || (t.Scope = {})), t.create = u, t.find = h, t.query = f, t.register = d }, function (e, t, n) { var r = n(51), i = n(11), o = n(3), a = n(20), s = String.fromCharCode(0), c = function (e) { Array.isArray(e) ? this.ops = e : null != e && Array.isArray(e.ops) ? this.ops = e.ops : this.ops = [] }; c.prototype.insert = function (e, t) { var n = {}; return 0 === e.length ? this : (n.insert = e, null != t && "object" === typeof t && Object.keys(t).length > 0 && (n.attributes = t), this.push(n)) }, c.prototype["delete"] = function (e) { return e <= 0 ? this : this.push({ delete: e }) }, c.prototype.retain = function (e, t) { if (e <= 0) return this; var n = { retain: e }; return null != t && "object" === typeof t && Object.keys(t).length > 0 && (n.attributes = t), this.push(n) }, c.prototype.push = function (e) { var t = this.ops.length, n = this.ops[t - 1]; if (e = o(!0, {}, e), "object" === typeof n) { if ("number" === typeof e["delete"] && "number" === typeof n["delete"]) return this.ops[t - 1] = { delete: n["delete"] + e["delete"] }, this; if ("number" === typeof n["delete"] && null != e.insert && (t -= 1, n = this.ops[t - 1], "object" !== typeof n)) return this.ops.unshift(e), this; if (i(e.attributes, n.attributes)) { if ("string" === typeof e.insert && "string" === typeof n.insert) return this.ops[t - 1] = { insert: n.insert + e.insert }, "object" === typeof e.attributes && (this.ops[t - 1].attributes = e.attributes), this; if ("number" === typeof e.retain && "number" === typeof n.retain) return this.ops[t - 1] = { retain: n.retain + e.retain }, "object" === typeof e.attributes && (this.ops[t - 1].attributes = e.attributes), this } } return t === this.ops.length ? this.ops.push(e) : this.ops.splice(t, 0, e), this }, c.prototype.chop = function () { var e = this.ops[this.ops.length - 1]; return e && e.retain && !e.attributes && this.ops.pop(), this }, c.prototype.filter = function (e) { return this.ops.filter(e) }, c.prototype.forEach = function (e) { this.ops.forEach(e) }, c.prototype.map = function (e) { return this.ops.map(e) }, c.prototype.partition = function (e) { var t = [], n = []; return this.forEach((function (r) { var i = e(r) ? t : n; i.push(r) })), [t, n] }, c.prototype.reduce = function (e, t) { return this.ops.reduce(e, t) }, c.prototype.changeLength = function () { return this.reduce((function (e, t) { return t.insert ? e + a.length(t) : t.delete ? e - t.delete : e }), 0) }, c.prototype.length = function () { return this.reduce((function (e, t) { return e + a.length(t) }), 0) }, c.prototype.slice = function (e, t) { e = e || 0, "number" !== typeof t && (t = 1 / 0); var n = [], r = a.iterator(this.ops), i = 0; while (i < t && r.hasNext()) { var o; i < e ? o = r.next(e - i) : (o = r.next(t - i), n.push(o)), i += a.length(o) } return new c(n) }, c.prototype.compose = function (e) { var t = a.iterator(this.ops), n = a.iterator(e.ops), r = [], o = n.peek(); if (null != o && "number" === typeof o.retain && null == o.attributes) { var s = o.retain; while ("insert" === t.peekType() && t.peekLength() <= s) s -= t.peekLength(), r.push(t.next()); o.retain - s > 0 && n.next(o.retain - s) } var l = new c(r); while (t.hasNext() || n.hasNext()) if ("insert" === n.peekType()) l.push(n.next()); else if ("delete" === t.peekType()) l.push(t.next()); else { var u = Math.min(t.peekLength(), n.peekLength()), h = t.next(u), f = n.next(u); if ("number" === typeof f.retain) { var d = {}; "number" === typeof h.retain ? d.retain = u : d.insert = h.insert; var p = a.attributes.compose(h.attributes, f.attributes, "number" === typeof h.retain); if (p && (d.attributes = p), l.push(d), !n.hasNext() && i(l.ops[l.ops.length - 1], d)) { var v = new c(t.rest()); return l.concat(v).chop() } } else "number" === typeof f["delete"] && "number" === typeof h.retain && l.push(f) } return l.chop() }, c.prototype.concat = function (e) { var t = new c(this.ops.slice()); return e.ops.length > 0 && (t.push(e.ops[0]), t.ops = t.ops.concat(e.ops.slice(1))), t }, c.prototype.diff = function (e, t) { if (this.ops === e.ops) return new c; var n = [this, e].map((function (t) { return t.map((function (n) { if (null != n.insert) return "string" === typeof n.insert ? n.insert : s; var r = t === e ? "on" : "with"; throw new Error("diff() called " + r + " non-document") })).join("") })), o = new c, l = r(n[0], n[1], t), u = a.iterator(this.ops), h = a.iterator(e.ops); return l.forEach((function (e) { var t = e[1].length; while (t > 0) { var n = 0; switch (e[0]) { case r.INSERT: n = Math.min(h.peekLength(), t), o.push(h.next(n)); break; case r.DELETE: n = Math.min(t, u.peekLength()), u.next(n), o["delete"](n); break; case r.EQUAL: n = Math.min(u.peekLength(), h.peekLength(), t); var s = u.next(n), c = h.next(n); i(s.insert, c.insert) ? o.retain(n, a.attributes.diff(s.attributes, c.attributes)) : o.push(c)["delete"](n); break }t -= n } })), o.chop() }, c.prototype.eachLine = function (e, t) { t = t || "\n"; var n = a.iterator(this.ops), r = new c, i = 0; while (n.hasNext()) { if ("insert" !== n.peekType()) return; var o = n.peek(), s = a.length(o) - n.peekLength(), l = "string" === typeof o.insert ? o.insert.indexOf(t, s) - s : -1; if (l < 0) r.push(n.next()); else if (l > 0) r.push(n.next(l)); else { if (!1 === e(r, n.next(1).attributes || {}, i)) return; i += 1, r = new c } } r.length() > 0 && e(r, {}, i) }, c.prototype.transform = function (e, t) { if (t = !!t, "number" === typeof e) return this.transformPosition(e, t); var n = a.iterator(this.ops), r = a.iterator(e.ops), i = new c; while (n.hasNext() || r.hasNext()) if ("insert" !== n.peekType() || !t && "insert" === r.peekType()) if ("insert" === r.peekType()) i.push(r.next()); else { var o = Math.min(n.peekLength(), r.peekLength()), s = n.next(o), l = r.next(o); if (s["delete"]) continue; l["delete"] ? i.push(l) : i.retain(o, a.attributes.transform(s.attributes, l.attributes, t)) } else i.retain(a.length(n.next())); return i.chop() }, c.prototype.transformPosition = function (e, t) { t = !!t; var n = a.iterator(this.ops), r = 0; while (n.hasNext() && r <= e) { var i = n.peekLength(), o = n.peekType(); n.next(), "delete" !== o ? ("insert" === o && (r < e || !t) && (e += i), r += i) : e -= Math.min(i, e - r) } return e }, e.exports = c }, function (e, t) { "use strict"; var n = Object.prototype.hasOwnProperty, r = Object.prototype.toString, i = Object.defineProperty, o = Object.getOwnPropertyDescriptor, a = function (e) { return "function" === typeof Array.isArray ? Array.isArray(e) : "[object Array]" === r.call(e) }, s = function (e) { if (!e || "[object Object]" !== r.call(e)) return !1; var t, i = n.call(e, "constructor"), o = e.constructor && e.constructor.prototype && n.call(e.constructor.prototype, "isPrototypeOf"); if (e.constructor && !i && !o) return !1; for (t in e); return "undefined" === typeof t || n.call(e, t) }, c = function (e, t) { i && "__proto__" === t.name ? i(e, t.name, { enumerable: !0, configurable: !0, value: t.newValue, writable: !0 }) : e[t.name] = t.newValue }, l = function (e, t) { if ("__proto__" === t) { if (!n.call(e, t)) return; if (o) return o(e, t).value } return e[t] }; e.exports = function e() { var t, n, r, i, o, u, h = arguments[0], f = 1, d = arguments.length, p = !1; for ("boolean" === typeof h && (p = h, h = arguments[1] || {}, f = 2), (null == h || "object" !== typeof h && "function" !== typeof h) && (h = {}); f < d; ++f)if (t = arguments[f], null != t) for (n in t) r = l(h, n), i = l(t, n), h !== i && (p && i && (s(i) || (o = a(i))) ? (o ? (o = !1, u = r && a(r) ? r : []) : u = r && s(r) ? r : {}, c(h, { name: n, newValue: e(p, u, i) })) : "undefined" !== typeof i && c(h, { name: n, newValue: i })); return h } }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.default = t.BlockEmbed = t.bubbleFormats = void 0; var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(3), a = g(o), s = n(2), c = g(s), l = n(0), u = g(l), h = n(16), f = g(h), d = n(6), p = g(d), v = n(7), m = g(v); function g(e) { return e && e.__esModule ? e : { default: e } } function y(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function b(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function x(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var w = 1, _ = function (e) { function t() { return y(this, t), b(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return x(t, e), r(t, [{ key: "attach", value: function () { i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "attach", this).call(this), this.attributes = new u.default.Attributor.Store(this.domNode) } }, { key: "delta", value: function () { return (new c.default).insert(this.value(), (0, a.default)(this.formats(), this.attributes.values())) } }, { key: "format", value: function (e, t) { var n = u.default.query(e, u.default.Scope.BLOCK_ATTRIBUTE); null != n && this.attributes.attribute(n, t) } }, { key: "formatAt", value: function (e, t, n, r) { this.format(n, r) } }, { key: "insertAt", value: function (e, n, r) { if ("string" === typeof n && n.endsWith("\n")) { var o = u.default.create(C.blotName); this.parent.insertBefore(o, 0 === e ? this : this.next), o.insertAt(0, n.slice(0, -1)) } else i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "insertAt", this).call(this, e, n, r) } }]), t }(u.default.Embed); _.scope = u.default.Scope.BLOCK_BLOT; var C = function (e) { function t(e) { y(this, t); var n = b(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e)); return n.cache = {}, n } return x(t, e), r(t, [{ key: "delta", value: function () { return null == this.cache.delta && (this.cache.delta = this.descendants(u.default.Leaf).reduce((function (e, t) { return 0 === t.length() ? e : e.insert(t.value(), M(t)) }), new c.default).insert("\n", M(this))), this.cache.delta } }, { key: "deleteAt", value: function (e, n) { i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "deleteAt", this).call(this, e, n), this.cache = {} } }, { key: "formatAt", value: function (e, n, r, o) { n <= 0 || (u.default.query(r, u.default.Scope.BLOCK) ? e + n === this.length() && this.format(r, o) : i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "formatAt", this).call(this, e, Math.min(n, this.length() - e - 1), r, o), this.cache = {}) } }, { key: "insertAt", value: function (e, n, r) { if (null != r) return i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "insertAt", this).call(this, e, n, r); if (0 !== n.length) { var o = n.split("\n"), a = o.shift(); a.length > 0 && (e < this.length() - 1 || null == this.children.tail ? i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "insertAt", this).call(this, Math.min(e, this.length() - 1), a) : this.children.tail.insertAt(this.children.tail.length(), a), this.cache = {}); var s = this; o.reduce((function (e, t) { return s = s.split(e, !0), s.insertAt(0, t), t.length }), e + a.length) } } }, { key: "insertBefore", value: function (e, n) { var r = this.children.head; i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "insertBefore", this).call(this, e, n), r instanceof f.default && r.remove(), this.cache = {} } }, { key: "length", value: function () { return null == this.cache.length && (this.cache.length = i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "length", this).call(this) + w), this.cache.length } }, { key: "moveChildren", value: function (e, n) { i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "moveChildren", this).call(this, e, n), this.cache = {} } }, { key: "optimize", value: function (e) { i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "optimize", this).call(this, e), this.cache = {} } }, { key: "path", value: function (e) { return i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "path", this).call(this, e, !0) } }, { key: "removeChild", value: function (e) { i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "removeChild", this).call(this, e), this.cache = {} } }, { key: "split", value: function (e) { var n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; if (n && (0 === e || e >= this.length() - w)) { var r = this.clone(); return 0 === e ? (this.parent.insertBefore(r, this), this) : (this.parent.insertBefore(r, this.next), r) } var o = i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "split", this).call(this, e, n); return this.cache = {}, o } }]), t }(u.default.Block); function M(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return null == e ? t : ("function" === typeof e.formats && (t = (0, a.default)(t, e.formats())), null == e.parent || "scroll" == e.parent.blotName || e.parent.statics.scope !== e.statics.scope ? t : M(e.parent, t)) } C.blotName = "block", C.tagName = "P", C.defaultChild = "break", C.allowedChildren = [p.default, u.default.Embed, m.default], t.bubbleFormats = M, t.BlockEmbed = _, t.default = C }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.default = t.overload = t.expandConfig = void 0; var r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, i = function () { function e(e, t) { var n = [], r = !0, i = !1, o = void 0; try { for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done); r = !0)if (n.push(a.value), t && n.length === t) break } catch (c) { i = !0, o = c } finally { try { !r && s["return"] && s["return"]() } finally { if (i) throw o } } return n } return function (t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), o = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(); n(50); var a = n(2), s = M(a), c = n(14), l = M(c), u = n(8), h = M(u), f = n(9), d = M(f), p = n(0), v = M(p), m = n(15), g = M(m), y = n(3), b = M(y), x = n(10), w = M(x), _ = n(34), C = M(_); function M(e) { return e && e.__esModule ? e : { default: e } } function O(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function k(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var S = (0, w.default)("quill"), T = function () { function e(t) { var n = this, r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; if (k(this, e), this.options = A(t, r), this.container = this.options.container, null == this.container) return S.error("Invalid Quill container", t); this.options.debug && e.debug(this.options.debug); var i = this.container.innerHTML.trim(); this.container.classList.add("ql-container"), this.container.innerHTML = "", this.container.__quill = this, this.root = this.addContainer("ql-editor"), this.root.classList.add("ql-blank"), this.root.setAttribute("data-gramm", !1), this.scrollingContainer = this.options.scrollingContainer || this.root, this.emitter = new h.default, this.scroll = v.default.create(this.root, { emitter: this.emitter, whitelist: this.options.formats }), this.editor = new l.default(this.scroll), this.selection = new g.default(this.scroll, this.emitter), this.theme = new this.options.theme(this, this.options), this.keyboard = this.theme.addModule("keyboard"), this.clipboard = this.theme.addModule("clipboard"), this.history = this.theme.addModule("history"), this.theme.init(), this.emitter.on(h.default.events.EDITOR_CHANGE, (function (e) { e === h.default.events.TEXT_CHANGE && n.root.classList.toggle("ql-blank", n.editor.isBlank()) })), this.emitter.on(h.default.events.SCROLL_UPDATE, (function (e, t) { var r = n.selection.lastRange, i = r && 0 === r.length ? r.index : void 0; L.call(n, (function () { return n.editor.update(null, t, i) }), e) })); var o = this.clipboard.convert("<div class='ql-editor' style=\"white-space: normal;\">" + i + "<p><br></p></div>"); this.setContents(o), this.history.clear(), this.options.placeholder && this.root.setAttribute("data-placeholder", this.options.placeholder), this.options.readOnly && this.disable() } return o(e, null, [{ key: "debug", value: function (e) { !0 === e && (e = "log"), w.default.level(e) } }, { key: "find", value: function (e) { return e.__quill || v.default.find(e) } }, { key: "import", value: function (e) { return null == this.imports[e] && S.error("Cannot import " + e + ". Are you sure it was registered?"), this.imports[e] } }, { key: "register", value: function (e, t) { var n = this, r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; if ("string" !== typeof e) { var i = e.attrName || e.blotName; "string" === typeof i ? this.register("formats/" + i, e, t) : Object.keys(e).forEach((function (r) { n.register(r, e[r], t) })) } else null == this.imports[e] || r || S.warn("Overwriting " + e + " with", t), this.imports[e] = t, (e.startsWith("blots/") || e.startsWith("formats/")) && "abstract" !== t.blotName ? v.default.register(t) : e.startsWith("modules") && "function" === typeof t.register && t.register() } }]), o(e, [{ key: "addContainer", value: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null; if ("string" === typeof e) { var n = e; e = document.createElement("div"), e.classList.add(n) } return this.container.insertBefore(e, t), e } }, { key: "blur", value: function () { this.selection.setRange(null) } }, { key: "deleteText", value: function (e, t, n) { var r = this, o = j(e, t, n), a = i(o, 4); return e = a[0], t = a[1], n = a[3], L.call(this, (function () { return r.editor.deleteText(e, t) }), n, e, -1 * t) } }, { key: "disable", value: function () { this.enable(!1) } }, { key: "enable", value: function () { var e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0]; this.scroll.enable(e), this.container.classList.toggle("ql-disabled", !e) } }, { key: "focus", value: function () { var e = this.scrollingContainer.scrollTop; this.selection.focus(), this.scrollingContainer.scrollTop = e, this.scrollIntoView() } }, { key: "format", value: function (e, t) { var n = this, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : h.default.sources.API; return L.call(this, (function () { var r = n.getSelection(!0), i = new s.default; if (null == r) return i; if (v.default.query(e, v.default.Scope.BLOCK)) i = n.editor.formatLine(r.index, r.length, O({}, e, t)); else { if (0 === r.length) return n.selection.format(e, t), i; i = n.editor.formatText(r.index, r.length, O({}, e, t)) } return n.setSelection(r, h.default.sources.SILENT), i }), r) } }, { key: "formatLine", value: function (e, t, n, r, o) { var a = this, s = void 0, c = j(e, t, n, r, o), l = i(c, 4); return e = l[0], t = l[1], s = l[2], o = l[3], L.call(this, (function () { return a.editor.formatLine(e, t, s) }), o, e, 0) } }, { key: "formatText", value: function (e, t, n, r, o) { var a = this, s = void 0, c = j(e, t, n, r, o), l = i(c, 4); return e = l[0], t = l[1], s = l[2], o = l[3], L.call(this, (function () { return a.editor.formatText(e, t, s) }), o, e, 0) } }, { key: "getBounds", value: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = void 0; n = "number" === typeof e ? this.selection.getBounds(e, t) : this.selection.getBounds(e.index, e.length); var r = this.container.getBoundingClientRect(); return { bottom: n.bottom - r.top, height: n.height, left: n.left - r.left, right: n.right - r.left, top: n.top - r.top, width: n.width } } }, { key: "getContents", value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.getLength() - e, n = j(e, t), r = i(n, 2); return e = r[0], t = r[1], this.editor.getContents(e, t) } }, { key: "getFormat", value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.getSelection(!0), t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; return "number" === typeof e ? this.editor.getFormat(e, t) : this.editor.getFormat(e.index, e.length) } }, { key: "getIndex", value: function (e) { return e.offset(this.scroll) } }, { key: "getLength", value: function () { return this.scroll.length() } }, { key: "getLeaf", value: function (e) { return this.scroll.leaf(e) } }, { key: "getLine", value: function (e) { return this.scroll.line(e) } }, { key: "getLines", value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Number.MAX_VALUE; return "number" !== typeof e ? this.scroll.lines(e.index, e.length) : this.scroll.lines(e, t) } }, { key: "getModule", value: function (e) { return this.theme.modules[e] } }, { key: "getSelection", value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]; return e && this.focus(), this.update(), this.selection.getRange()[0] } }, { key: "getText", value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.getLength() - e, n = j(e, t), r = i(n, 2); return e = r[0], t = r[1], this.editor.getText(e, t) } }, { key: "hasFocus", value: function () { return this.selection.hasFocus() } }, { key: "insertEmbed", value: function (t, n, r) { var i = this, o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : e.sources.API; return L.call(this, (function () { return i.editor.insertEmbed(t, n, r) }), o, t) } }, { key: "insertText", value: function (e, t, n, r, o) { var a = this, s = void 0, c = j(e, 0, n, r, o), l = i(c, 4); return e = l[0], s = l[2], o = l[3], L.call(this, (function () { return a.editor.insertText(e, t, s) }), o, e, t.length) } }, { key: "isEnabled", value: function () { return !this.container.classList.contains("ql-disabled") } }, { key: "off", value: function () { return this.emitter.off.apply(this.emitter, arguments) } }, { key: "on", value: function () { return this.emitter.on.apply(this.emitter, arguments) } }, { key: "once", value: function () { return this.emitter.once.apply(this.emitter, arguments) } }, { key: "pasteHTML", value: function (e, t, n) { this.clipboard.dangerouslyPasteHTML(e, t, n) } }, { key: "removeFormat", value: function (e, t, n) { var r = this, o = j(e, t, n), a = i(o, 4); return e = a[0], t = a[1], n = a[3], L.call(this, (function () { return r.editor.removeFormat(e, t) }), n, e) } }, { key: "scrollIntoView", value: function () { this.selection.scrollIntoView(this.scrollingContainer) } }, { key: "setContents", value: function (e) { var t = this, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : h.default.sources.API; return L.call(this, (function () { e = new s.default(e); var n = t.getLength(), r = t.editor.deleteText(0, n), i = t.editor.applyDelta(e), o = i.ops[i.ops.length - 1]; null != o && "string" === typeof o.insert && "\n" === o.insert[o.insert.length - 1] && (t.editor.deleteText(t.getLength() - 1, 1), i.delete(1)); var a = r.compose(i); return a }), n) } }, { key: "setSelection", value: function (t, n, r) { if (null == t) this.selection.setRange(null, n || e.sources.API); else { var o = j(t, n, r), a = i(o, 4); t = a[0], n = a[1], r = a[3], this.selection.setRange(new m.Range(t, n), r), r !== h.default.sources.SILENT && this.selection.scrollIntoView(this.scrollingContainer) } } }, { key: "setText", value: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : h.default.sources.API, n = (new s.default).insert(e); return this.setContents(n, t) } }, { key: "update", value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : h.default.sources.USER, t = this.scroll.update(e); return this.selection.update(e), t } }, { key: "updateContents", value: function (e) { var t = this, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : h.default.sources.API; return L.call(this, (function () { return e = new s.default(e), t.editor.applyDelta(e, n) }), n, !0) } }]), e }(); function A(e, t) { if (t = (0, b.default)(!0, { container: e, modules: { clipboard: !0, keyboard: !0, history: !0 } }, t), t.theme && t.theme !== T.DEFAULTS.theme) { if (t.theme = T.import("themes/" + t.theme), null == t.theme) throw new Error("Invalid theme " + t.theme + ". Did you register it?") } else t.theme = C.default; var n = (0, b.default)(!0, {}, t.theme.DEFAULTS);[n, t].forEach((function (e) { e.modules = e.modules || {}, Object.keys(e.modules).forEach((function (t) { !0 === e.modules[t] && (e.modules[t] = {}) })) })); var r = Object.keys(n.modules).concat(Object.keys(t.modules)), i = r.reduce((function (e, t) { var n = T.import("modules/" + t); return null == n ? S.error("Cannot load " + t + " module. Are you sure you registered it?") : e[t] = n.DEFAULTS || {}, e }), {}); return null != t.modules && t.modules.toolbar && t.modules.toolbar.constructor !== Object && (t.modules.toolbar = { container: t.modules.toolbar }), t = (0, b.default)(!0, {}, T.DEFAULTS, { modules: i }, n, t), ["bounds", "container", "scrollingContainer"].forEach((function (e) { "string" === typeof t[e] && (t[e] = document.querySelector(t[e])) })), t.modules = Object.keys(t.modules).reduce((function (e, n) { return t.modules[n] && (e[n] = t.modules[n]), e }), {}), t } function L(e, t, n, r) { if (this.options.strict && !this.isEnabled() && t === h.default.sources.USER) return new s.default; var i = null == n ? null : this.getSelection(), o = this.editor.delta, a = e(); if (null != i && (!0 === n && (n = i.index), null == r ? i = z(i, a, t) : 0 !== r && (i = z(i, n, r, t)), this.setSelection(i, h.default.sources.SILENT)), a.length() > 0) { var c, l, u = [h.default.events.TEXT_CHANGE, a, o, t]; (c = this.emitter).emit.apply(c, [h.default.events.EDITOR_CHANGE].concat(u)), t !== h.default.sources.SILENT && (l = this.emitter).emit.apply(l, u) } return a } function j(e, t, n, i, o) { var a = {}; return "number" === typeof e.index && "number" === typeof e.length ? "number" !== typeof t ? (o = i, i = n, n = t, t = e.length, e = e.index) : (t = e.length, e = e.index) : "number" !== typeof t && (o = i, i = n, n = t, t = 0), "object" === ("undefined" === typeof n ? "undefined" : r(n)) ? (a = n, o = i) : "string" === typeof n && (null != i ? a[n] = i : o = n), o = o || h.default.sources.API, [e, t, a, o] } function z(e, t, n, r) { if (null == e) return null; var o = void 0, a = void 0; if (t instanceof s.default) { var c = [e.index, e.index + e.length].map((function (e) { return t.transformPosition(e, r !== h.default.sources.USER) })), l = i(c, 2); o = l[0], a = l[1] } else { var u = [e.index, e.index + e.length].map((function (e) { return e < t || e === t && r === h.default.sources.USER ? e : n >= 0 ? e + n : Math.max(t, e + n) })), f = i(u, 2); o = f[0], a = f[1] } return new m.Range(o, a - o) } T.DEFAULTS = { bounds: null, formats: null, modules: {}, placeholder: "", readOnly: !1, scrollingContainer: null, strict: !0, theme: "default" }, T.events = h.default.events, T.sources = h.default.sources, T.version = "1.3.7", T.imports = { delta: s.default, parchment: v.default, "core/module": d.default, "core/theme": C.default }, t.expandConfig = A, t.overload = j, t.default = T }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(7), a = l(o), s = n(0), c = l(s); function l(e) { return e && e.__esModule ? e : { default: e } } function u(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function h(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function f(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var d = function (e) { function t() { return u(this, t), h(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return f(t, e), r(t, [{ key: "formatAt", value: function (e, n, r, o) { if (t.compare(this.statics.blotName, r) < 0 && c.default.query(r, c.default.Scope.BLOT)) { var a = this.isolate(e, n); o && a.wrap(r, o) } else i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "formatAt", this).call(this, e, n, r, o) } }, { key: "optimize", value: function (e) { if (i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "optimize", this).call(this, e), this.parent instanceof t && t.compare(this.statics.blotName, this.parent.statics.blotName) > 0) { var n = this.parent.isolate(this.offset(), this.length()); this.moveChildren(n), n.wrap(this) } } }], [{ key: "compare", value: function (e, n) { var r = t.order.indexOf(e), i = t.order.indexOf(n); return r >= 0 || i >= 0 ? r - i : e === n ? 0 : e < n ? -1 : 1 } }]), t }(c.default.Inline); d.allowedChildren = [d, c.default.Embed, a.default], d.order = ["cursor", "inline", "underline", "strike", "italic", "bold", "script", "link", "code"], t.default = d }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(0), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function s(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function c(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var l = function (e) { function t() { return a(this, t), s(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return c(t, e), t }(i.default.Text); t.default = l }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(54), a = l(o), s = n(10), c = l(s); function l(e) { return e && e.__esModule ? e : { default: e } } function u(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function h(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function f(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var d = (0, c.default)("quill:events"), p = ["selectionchange", "mousedown", "mouseup", "click"]; p.forEach((function (e) { document.addEventListener(e, (function () { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n];[].slice.call(document.querySelectorAll(".ql-container")).forEach((function (e) { var n; e.__quill && e.__quill.emitter && (n = e.__quill.emitter).handleDOM.apply(n, t) })) })) })); var v = function (e) { function t() { u(this, t); var e = h(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this)); return e.listeners = {}, e.on("error", d.error), e } return f(t, e), r(t, [{ key: "emit", value: function () { d.log.apply(d, arguments), i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "emit", this).apply(this, arguments) } }, { key: "handleDOM", value: function (e) { for (var t = arguments.length, n = Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++)n[r - 1] = arguments[r]; (this.listeners[e.type] || []).forEach((function (t) { var r = t.node, i = t.handler; (e.target === r || r.contains(e.target)) && i.apply(void 0, [e].concat(n)) })) } }, { key: "listenDOM", value: function (e, t, n) { this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push({ node: t, handler: n }) } }]), t }(a.default); v.events = { EDITOR_CHANGE: "editor-change", SCROLL_BEFORE_UPDATE: "scroll-before-update", SCROLL_OPTIMIZE: "scroll-optimize", SCROLL_UPDATE: "scroll-update", SELECTION_CHANGE: "selection-change", TEXT_CHANGE: "text-change" }, v.sources = { API: "api", SILENT: "silent", USER: "user" }, t.default = v }, function (e, t, n) { "use strict"; function r(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } Object.defineProperty(t, "__esModule", { value: !0 }); var i = function e(t) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; r(this, e), this.quill = t, this.options = n }; i.DEFAULTS = {}, t.default = i }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = ["error", "warn", "log", "info"], i = "warn"; function o(e) { if (r.indexOf(e) <= r.indexOf(i)) { for (var t, n = arguments.length, o = Array(n > 1 ? n - 1 : 0), a = 1; a < n; a++)o[a - 1] = arguments[a]; (t = console)[e].apply(t, o) } } function a(e) { return r.reduce((function (t, n) { return t[n] = o.bind(console, n, e), t }), {}) } o.level = a.level = function (e) { i = e }, t.default = a }, function (e, t, n) { var r = Array.prototype.slice, i = n(52), o = n(53), a = e.exports = function (e, t, n) { return n || (n = {}), e === t || (e instanceof Date && t instanceof Date ? e.getTime() === t.getTime() : !e || !t || "object" != typeof e && "object" != typeof t ? n.strict ? e === t : e == t : l(e, t, n)) }; function s(e) { return null === e || void 0 === e } function c(e) { return !(!e || "object" !== typeof e || "number" !== typeof e.length) && "function" === typeof e.copy && "function" === typeof e.slice && !(e.length > 0 && "number" !== typeof e[0]) } function l(e, t, n) { var l, u; if (s(e) || s(t)) return !1; if (e.prototype !== t.prototype) return !1; if (o(e)) return !!o(t) && (e = r.call(e), t = r.call(t), a(e, t, n)); if (c(e)) { if (!c(t)) return !1; if (e.length !== t.length) return !1; for (l = 0; l < e.length; l++)if (e[l] !== t[l]) return !1; return !0 } try { var h = i(e), f = i(t) } catch (d) { return !1 } if (h.length != f.length) return !1; for (h.sort(), f.sort(), l = h.length - 1; l >= 0; l--)if (h[l] != f[l]) return !1; for (l = h.length - 1; l >= 0; l--)if (u = h[l], !a(e[u], t[u], n)) return !1; return typeof e === typeof t } }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(1), i = function () { function e(e, t, n) { void 0 === n && (n = {}), this.attrName = e, this.keyName = t; var i = r.Scope.TYPE & r.Scope.ATTRIBUTE; null != n.scope ? this.scope = n.scope & r.Scope.LEVEL | i : this.scope = r.Scope.ATTRIBUTE, null != n.whitelist && (this.whitelist = n.whitelist) } return e.keys = function (e) { return [].map.call(e.attributes, (function (e) { return e.name })) }, e.prototype.add = function (e, t) { return !!this.canAdd(e, t) && (e.setAttribute(this.keyName, t), !0) }, e.prototype.canAdd = function (e, t) { var n = r.query(e, r.Scope.BLOT & (this.scope | r.Scope.TYPE)); return null != n && (null == this.whitelist || ("string" === typeof t ? this.whitelist.indexOf(t.replace(/["']/g, "")) > -1 : this.whitelist.indexOf(t) > -1)) }, e.prototype.remove = function (e) { e.removeAttribute(this.keyName) }, e.prototype.value = function (e) { var t = e.getAttribute(this.keyName); return this.canAdd(e, t) && t ? t : "" }, e }(); t.default = i }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.default = t.Code = void 0; var r = function () { function e(e, t) { var n = [], r = !0, i = !1, o = void 0; try { for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done); r = !0)if (n.push(a.value), t && n.length === t) break } catch (c) { i = !0, o = c } finally { try { !r && s["return"] && s["return"]() } finally { if (i) throw o } } return n } return function (t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), o = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, a = n(2), s = m(a), c = n(0), l = m(c), u = n(4), h = m(u), f = n(6), d = m(f), p = n(7), v = m(p); function m(e) { return e && e.__esModule ? e : { default: e } } function g(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function y(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function b(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var x = function (e) { function t() { return g(this, t), y(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return b(t, e), t }(d.default); x.blotName = "code", x.tagName = "CODE"; var w = function (e) { function t() { return g(this, t), y(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return b(t, e), i(t, [{ key: "delta", value: function () { var e = this, t = this.domNode.textContent; return t.endsWith("\n") && (t = t.slice(0, -1)), t.split("\n").reduce((function (t, n) { return t.insert(n).insert("\n", e.formats()) }), new s.default) } }, { key: "format", value: function (e, n) { if (e !== this.statics.blotName || !n) { var i = this.descendant(v.default, this.length() - 1), a = r(i, 1), s = a[0]; null != s && s.deleteAt(s.length() - 1, 1), o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "format", this).call(this, e, n) } } }, { key: "formatAt", value: function (e, n, r, i) { if (0 !== n && null != l.default.query(r, l.default.Scope.BLOCK) && (r !== this.statics.blotName || i !== this.statics.formats(this.domNode))) { var o = this.newlineIndex(e); if (!(o < 0 || o >= e + n)) { var a = this.newlineIndex(e, !0) + 1, s = o - a + 1, c = this.isolate(a, s), u = c.next; c.format(r, i), u instanceof t && u.formatAt(0, e - a + n - s, r, i) } } } }, { key: "insertAt", value: function (e, t, n) { if (null == n) { var i = this.descendant(v.default, e), o = r(i, 2), a = o[0], s = o[1]; a.insertAt(s, t) } } }, { key: "length", value: function () { var e = this.domNode.textContent.length; return this.domNode.textContent.endsWith("\n") ? e : e + 1 } }, { key: "newlineIndex", value: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; if (t) return this.domNode.textContent.slice(0, e).lastIndexOf("\n"); var n = this.domNode.textContent.slice(e).indexOf("\n"); return n > -1 ? e + n : -1 } }, { key: "optimize", value: function (e) { this.domNode.textContent.endsWith("\n") || this.appendChild(l.default.create("text", "\n")), o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "optimize", this).call(this, e); var n = this.next; null != n && n.prev === this && n.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === n.statics.formats(n.domNode) && (n.optimize(e), n.moveChildren(this), n.remove()) } }, { key: "replace", value: function (e) { o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "replace", this).call(this, e), [].slice.call(this.domNode.querySelectorAll("*")).forEach((function (e) { var t = l.default.find(e); null == t ? e.parentNode.removeChild(e) : t instanceof l.default.Embed ? t.remove() : t.unwrap() })) } }], [{ key: "create", value: function (e) { var n = o(t.__proto__ || Object.getPrototypeOf(t), "create", this).call(this, e); return n.setAttribute("spellcheck", !1), n } }, { key: "formats", value: function () { return !0 } }]), t }(h.default); w.blotName = "code-block", w.tagName = "PRE", w.TAB = "  ", t.Code = x, t.default = w }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, i = function () { function e(e, t) { var n = [], r = !0, i = !1, o = void 0; try { for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done); r = !0)if (n.push(a.value), t && n.length === t) break } catch (c) { i = !0, o = c } finally { try { !r && s["return"] && s["return"]() } finally { if (i) throw o } } return n } return function (t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), o = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), a = n(2), s = k(a), c = n(20), l = k(c), u = n(0), h = k(u), f = n(13), d = k(f), p = n(24), v = k(p), m = n(4), g = k(m), y = n(16), b = k(y), x = n(21), w = k(x), _ = n(11), C = k(_), M = n(3), O = k(M); function k(e) { return e && e.__esModule ? e : { default: e } } function S(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function T(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var A = /^[ -~]*$/, L = function () { function e(t) { T(this, e), this.scroll = t, this.delta = this.getDelta() } return o(e, [{ key: "applyDelta", value: function (e) { var t = this, n = !1; this.scroll.update(); var o = this.scroll.length(); return this.scroll.batchStart(), e = z(e), e.reduce((function (e, a) { var s = a.retain || a.delete || a.insert.length || 1, c = a.attributes || {}; if (null != a.insert) { if ("string" === typeof a.insert) { var u = a.insert; u.endsWith("\n") && n && (n = !1, u = u.slice(0, -1)), e >= o && !u.endsWith("\n") && (n = !0), t.scroll.insertAt(e, u); var f = t.scroll.line(e), d = i(f, 2), p = d[0], v = d[1], y = (0, O.default)({}, (0, m.bubbleFormats)(p)); if (p instanceof g.default) { var b = p.descendant(h.default.Leaf, v), x = i(b, 1), w = x[0]; y = (0, O.default)(y, (0, m.bubbleFormats)(w)) } c = l.default.attributes.diff(y, c) || {} } else if ("object" === r(a.insert)) { var _ = Object.keys(a.insert)[0]; if (null == _) return e; t.scroll.insertAt(e, _, a.insert[_]) } o += s } return Object.keys(c).forEach((function (n) { t.scroll.formatAt(e, s, n, c[n]) })), e + s }), 0), e.reduce((function (e, n) { return "number" === typeof n.delete ? (t.scroll.deleteAt(e, n.delete), e) : e + (n.retain || n.insert.length || 1) }), 0), this.scroll.batchEnd(), this.update(e) } }, { key: "deleteText", value: function (e, t) { return this.scroll.deleteAt(e, t), this.update((new s.default).retain(e).delete(t)) } }, { key: "formatLine", value: function (e, t) { var n = this, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; return this.scroll.update(), Object.keys(r).forEach((function (i) { if (null == n.scroll.whitelist || n.scroll.whitelist[i]) { var o = n.scroll.lines(e, Math.max(t, 1)), a = t; o.forEach((function (t) { var o = t.length(); if (t instanceof d.default) { var s = e - t.offset(n.scroll), c = t.newlineIndex(s + a) - s + 1; t.formatAt(s, c, i, r[i]) } else t.format(i, r[i]); a -= o })) } })), this.scroll.optimize(), this.update((new s.default).retain(e).retain(t, (0, w.default)(r))) } }, { key: "formatText", value: function (e, t) { var n = this, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; return Object.keys(r).forEach((function (i) { n.scroll.formatAt(e, t, i, r[i]) })), this.update((new s.default).retain(e).retain(t, (0, w.default)(r))) } }, { key: "getContents", value: function (e, t) { return this.delta.slice(e, e + t) } }, { key: "getDelta", value: function () { return this.scroll.lines().reduce((function (e, t) { return e.concat(t.delta()) }), new s.default) } }, { key: "getFormat", value: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = [], r = []; 0 === t ? this.scroll.path(e).forEach((function (e) { var t = i(e, 1), o = t[0]; o instanceof g.default ? n.push(o) : o instanceof h.default.Leaf && r.push(o) })) : (n = this.scroll.lines(e, t), r = this.scroll.descendants(h.default.Leaf, e, t)); var o = [n, r].map((function (e) { if (0 === e.length) return {}; var t = (0, m.bubbleFormats)(e.shift()); while (Object.keys(t).length > 0) { var n = e.shift(); if (null == n) return t; t = j((0, m.bubbleFormats)(n), t) } return t })); return O.default.apply(O.default, o) } }, { key: "getText", value: function (e, t) { return this.getContents(e, t).filter((function (e) { return "string" === typeof e.insert })).map((function (e) { return e.insert })).join("") } }, { key: "insertEmbed", value: function (e, t, n) { return this.scroll.insertAt(e, t, n), this.update((new s.default).retain(e).insert(S({}, t, n))) } }, { key: "insertText", value: function (e, t) { var n = this, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; return t = t.replace(/\r\n/g, "\n").replace(/\r/g, "\n"), this.scroll.insertAt(e, t), Object.keys(r).forEach((function (i) { n.scroll.formatAt(e, t.length, i, r[i]) })), this.update((new s.default).retain(e).insert(t, (0, w.default)(r))) } }, { key: "isBlank", value: function () { if (0 == this.scroll.children.length) return !0; if (this.scroll.children.length > 1) return !1; var e = this.scroll.children.head; return e.statics.blotName === g.default.blotName && !(e.children.length > 1) && e.children.head instanceof b.default } }, { key: "removeFormat", value: function (e, t) { var n = this.getText(e, t), r = this.scroll.line(e + t), o = i(r, 2), a = o[0], c = o[1], l = 0, u = new s.default; null != a && (l = a instanceof d.default ? a.newlineIndex(c) - c + 1 : a.length() - c, u = a.delta().slice(c, c + l - 1).insert("\n")); var h = this.getContents(e, t + l), f = h.diff((new s.default).insert(n).concat(u)), p = (new s.default).retain(e).concat(f); return this.applyDelta(p) } }, { key: "update", value: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [], n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0, r = this.delta; if (1 === t.length && "characterData" === t[0].type && t[0].target.data.match(A) && h.default.find(t[0].target)) { var i = h.default.find(t[0].target), o = (0, m.bubbleFormats)(i), a = i.offset(this.scroll), c = t[0].oldValue.replace(v.default.CONTENTS, ""), l = (new s.default).insert(c), u = (new s.default).insert(i.value()), f = (new s.default).retain(a).concat(l.diff(u, n)); e = f.reduce((function (e, t) { return t.insert ? e.insert(t.insert, o) : e.push(t) }), new s.default), this.delta = r.compose(e) } else this.delta = this.getDelta(), e && (0, C.default)(r.compose(e), this.delta) || (e = r.diff(this.delta, n)); return e } }]), e }(); function j(e, t) { return Object.keys(t).reduce((function (n, r) { return null == e[r] || (t[r] === e[r] ? n[r] = t[r] : Array.isArray(t[r]) ? t[r].indexOf(e[r]) < 0 && (n[r] = t[r].concat([e[r]])) : n[r] = [t[r], e[r]]), n }), {}) } function z(e) { return e.reduce((function (e, t) { if (1 === t.insert) { var n = (0, w.default)(t.attributes); return delete n["image"], e.insert({ image: t.attributes.image }, n) } if (null == t.attributes || !0 !== t.attributes.list && !0 !== t.attributes.bullet || (t = (0, w.default)(t), t.attributes.list ? t.attributes.list = "ordered" : (t.attributes.list = "bullet", delete t.attributes.bullet)), "string" === typeof t.insert) { var r = t.insert.replace(/\r\n/g, "\n").replace(/\r/g, "\n"); return e.insert(r, t.attributes) } return e.push(t) }), new s.default) } t.default = L }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.default = t.Range = void 0; var r = function () { function e(e, t) { var n = [], r = !0, i = !1, o = void 0; try { for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done); r = !0)if (n.push(a.value), t && n.length === t) break } catch (c) { i = !0, o = c } finally { try { !r && s["return"] && s["return"]() } finally { if (i) throw o } } return n } return function (t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), o = n(0), a = v(o), s = n(21), c = v(s), l = n(11), u = v(l), h = n(8), f = v(h), d = n(10), p = v(d); function v(e) { return e && e.__esModule ? e : { default: e } } function m(e) { if (Array.isArray(e)) { for (var t = 0, n = Array(e.length); t < e.length; t++)n[t] = e[t]; return n } return Array.from(e) } function g(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var y = (0, p.default)("quill:selection"), b = function e(t) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; g(this, e), this.index = t, this.length = n }, x = function () { function e(t, n) { var r = this; g(this, e), this.emitter = n, this.scroll = t, this.composing = !1, this.mouseDown = !1, this.root = this.scroll.domNode, this.cursor = a.default.create("cursor", this), this.lastRange = this.savedRange = new b(0, 0), this.handleComposition(), this.handleDragging(), this.emitter.listenDOM("selectionchange", document, (function () { r.mouseDown || setTimeout(r.update.bind(r, f.default.sources.USER), 1) })), this.emitter.on(f.default.events.EDITOR_CHANGE, (function (e, t) { e === f.default.events.TEXT_CHANGE && t.length() > 0 && r.update(f.default.sources.SILENT) })), this.emitter.on(f.default.events.SCROLL_BEFORE_UPDATE, (function () { if (r.hasFocus()) { var e = r.getNativeRange(); null != e && e.start.node !== r.cursor.textNode && r.emitter.once(f.default.events.SCROLL_UPDATE, (function () { try { r.setNativeRange(e.start.node, e.start.offset, e.end.node, e.end.offset) } catch (t) { } })) } })), this.emitter.on(f.default.events.SCROLL_OPTIMIZE, (function (e, t) { if (t.range) { var n = t.range, i = n.startNode, o = n.startOffset, a = n.endNode, s = n.endOffset; r.setNativeRange(i, o, a, s) } })), this.update(f.default.sources.SILENT) } return i(e, [{ key: "handleComposition", value: function () { var e = this; this.root.addEventListener("compositionstart", (function () { e.composing = !0 })), this.root.addEventListener("compositionend", (function () { if (e.composing = !1, e.cursor.parent) { var t = e.cursor.restore(); if (!t) return; setTimeout((function () { e.setNativeRange(t.startNode, t.startOffset, t.endNode, t.endOffset) }), 1) } })) } }, { key: "handleDragging", value: function () { var e = this; this.emitter.listenDOM("mousedown", document.body, (function () { e.mouseDown = !0 })), this.emitter.listenDOM("mouseup", document.body, (function () { e.mouseDown = !1, e.update(f.default.sources.USER) })) } }, { key: "focus", value: function () { this.hasFocus() || (this.root.focus(), this.setRange(this.savedRange)) } }, { key: "format", value: function (e, t) { if (null == this.scroll.whitelist || this.scroll.whitelist[e]) { this.scroll.update(); var n = this.getNativeRange(); if (null != n && n.native.collapsed && !a.default.query(e, a.default.Scope.BLOCK)) { if (n.start.node !== this.cursor.textNode) { var r = a.default.find(n.start.node, !1); if (null == r) return; if (r instanceof a.default.Leaf) { var i = r.split(n.start.offset); r.parent.insertBefore(this.cursor, i) } else r.insertBefore(this.cursor, n.start.node); this.cursor.attach() } this.cursor.format(e, t), this.scroll.optimize(), this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length), this.update() } } } }, { key: "getBounds", value: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = this.scroll.length(); e = Math.min(e, n - 1), t = Math.min(e + t, n - 1) - e; var i = void 0, o = this.scroll.leaf(e), a = r(o, 2), s = a[0], c = a[1]; if (null == s) return null; var l = s.position(c, !0), u = r(l, 2); i = u[0], c = u[1]; var h = document.createRange(); if (t > 0) { h.setStart(i, c); var f = this.scroll.leaf(e + t), d = r(f, 2); if (s = d[0], c = d[1], null == s) return null; var p = s.position(c, !0), v = r(p, 2); return i = v[0], c = v[1], h.setEnd(i, c), h.getBoundingClientRect() } var m = "left", g = void 0; return i instanceof Text ? (c < i.data.length ? (h.setStart(i, c), h.setEnd(i, c + 1)) : (h.setStart(i, c - 1), h.setEnd(i, c), m = "right"), g = h.getBoundingClientRect()) : (g = s.domNode.getBoundingClientRect(), c > 0 && (m = "right")), { bottom: g.top + g.height, height: g.height, left: g[m], right: g[m], top: g.top, width: 0 } } }, { key: "getNativeRange", value: function () { var e = document.getSelection(); if (null == e || e.rangeCount <= 0) return null; var t = e.getRangeAt(0); if (null == t) return null; var n = this.normalizeNative(t); return y.info("getNativeRange", n), n } }, { key: "getRange", value: function () { var e = this.getNativeRange(); if (null == e) return [null, null]; var t = this.normalizedToRange(e); return [t, e] } }, { key: "hasFocus", value: function () { return document.activeElement === this.root } }, { key: "normalizedToRange", value: function (e) { var t = this, n = [[e.start.node, e.start.offset]]; e.native.collapsed || n.push([e.end.node, e.end.offset]); var i = n.map((function (e) { var n = r(e, 2), i = n[0], o = n[1], s = a.default.find(i, !0), c = s.offset(t.scroll); return 0 === o ? c : s instanceof a.default.Container ? c + s.length() : c + s.index(i, o) })), o = Math.min(Math.max.apply(Math, m(i)), this.scroll.length() - 1), s = Math.min.apply(Math, [o].concat(m(i))); return new b(s, o - s) } }, { key: "normalizeNative", value: function (e) { if (!w(this.root, e.startContainer) || !e.collapsed && !w(this.root, e.endContainer)) return null; var t = { start: { node: e.startContainer, offset: e.startOffset }, end: { node: e.endContainer, offset: e.endOffset }, native: e }; return [t.start, t.end].forEach((function (e) { var t = e.node, n = e.offset; while (!(t instanceof Text) && t.childNodes.length > 0) if (t.childNodes.length > n) t = t.childNodes[n], n = 0; else { if (t.childNodes.length !== n) break; t = t.lastChild, n = t instanceof Text ? t.data.length : t.childNodes.length + 1 } e.node = t, e.offset = n })), t } }, { key: "rangeToNative", value: function (e) { var t = this, n = e.collapsed ? [e.index] : [e.index, e.index + e.length], i = [], o = this.scroll.length(); return n.forEach((function (e, n) { e = Math.min(o - 1, e); var a = void 0, s = t.scroll.leaf(e), c = r(s, 2), l = c[0], u = c[1], h = l.position(u, 0 !== n), f = r(h, 2); a = f[0], u = f[1], i.push(a, u) })), i.length < 2 && (i = i.concat(i)), i } }, { key: "scrollIntoView", value: function (e) { var t = this.lastRange; if (null != t) { var n = this.getBounds(t.index, t.length); if (null != n) { var i = this.scroll.length() - 1, o = this.scroll.line(Math.min(t.index, i)), a = r(o, 1), s = a[0], c = s; if (t.length > 0) { var l = this.scroll.line(Math.min(t.index + t.length, i)), u = r(l, 1); c = u[0] } if (null != s && null != c) { var h = e.getBoundingClientRect(); n.top < h.top ? e.scrollTop -= h.top - n.top : n.bottom > h.bottom && (e.scrollTop += n.bottom - h.bottom) } } } } }, { key: "setNativeRange", value: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : e, r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : t, i = arguments.length > 4 && void 0 !== arguments[4] && arguments[4]; if (y.info("setNativeRange", e, t, n, r), null == e || null != this.root.parentNode && null != e.parentNode && null != n.parentNode) { var o = document.getSelection(); if (null != o) if (null != e) { this.hasFocus() || this.root.focus(); var a = (this.getNativeRange() || {}).native; if (null == a || i || e !== a.startContainer || t !== a.startOffset || n !== a.endContainer || r !== a.endOffset) { "BR" == e.tagName && (t = [].indexOf.call(e.parentNode.childNodes, e), e = e.parentNode), "BR" == n.tagName && (r = [].indexOf.call(n.parentNode.childNodes, n), n = n.parentNode); var s = document.createRange(); s.setStart(e, t), s.setEnd(n, r), o.removeAllRanges(), o.addRange(s) } } else o.removeAllRanges(), this.root.blur(), document.body.focus() } } }, { key: "setRange", value: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : f.default.sources.API; if ("string" === typeof t && (n = t, t = !1), y.info("setRange", e), null != e) { var r = this.rangeToNative(e); this.setNativeRange.apply(this, m(r).concat([t])) } else this.setNativeRange(null); this.update(n) } }, { key: "update", value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : f.default.sources.USER, t = this.lastRange, n = this.getRange(), i = r(n, 2), o = i[0], a = i[1]; if (this.lastRange = o, null != this.lastRange && (this.savedRange = this.lastRange), !(0, u.default)(t, this.lastRange)) { var s; !this.composing && null != a && a.native.collapsed && a.start.node !== this.cursor.textNode && this.cursor.restore(); var l, h = [f.default.events.SELECTION_CHANGE, (0, c.default)(this.lastRange), (0, c.default)(t), e]; (s = this.emitter).emit.apply(s, [f.default.events.EDITOR_CHANGE].concat(h)), e !== f.default.sources.SILENT && (l = this.emitter).emit.apply(l, h) } } }]), e }(); function w(e, t) { try { t.parentNode } catch (n) { return !1 } return t instanceof Text && (t = t.parentNode), e.contains(t) } t.Range = b, t.default = x }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(0), a = s(o); function s(e) { return e && e.__esModule ? e : { default: e } } function c(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function l(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function u(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var h = function (e) { function t() { return c(this, t), l(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return u(t, e), r(t, [{ key: "insertInto", value: function (e, n) { 0 === e.children.length ? i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "insertInto", this).call(this, e, n) : this.remove() } }, { key: "length", value: function () { return 0 } }, { key: "value", value: function () { return "" } }], [{ key: "value", value: function () { } }]), t }(a.default.Embed); h.blotName = "break", h.tagName = "BR", t.default = h }, function (e, t, n) { "use strict"; var r = this && this.__extends || function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(); Object.defineProperty(t, "__esModule", { value: !0 }); var i = n(44), o = n(30), a = n(1), s = function (e) { function t(t) { var n = e.call(this, t) || this; return n.build(), n } return r(t, e), t.prototype.appendChild = function (e) { this.insertBefore(e) }, t.prototype.attach = function () { e.prototype.attach.call(this), this.children.forEach((function (e) { e.attach() })) }, t.prototype.build = function () { var e = this; this.children = new i.default, [].slice.call(this.domNode.childNodes).reverse().forEach((function (t) { try { var n = c(t); e.insertBefore(n, e.children.head || void 0) } catch (r) { if (r instanceof a.ParchmentError) return; throw r } })) }, t.prototype.deleteAt = function (e, t) { if (0 === e && t === this.length()) return this.remove(); this.children.forEachAt(e, t, (function (e, t, n) { e.deleteAt(t, n) })) }, t.prototype.descendant = function (e, n) { var r = this.children.find(n), i = r[0], o = r[1]; return null == e.blotName && e(i) || null != e.blotName && i instanceof e ? [i, o] : i instanceof t ? i.descendant(e, o) : [null, -1] }, t.prototype.descendants = function (e, n, r) { void 0 === n && (n = 0), void 0 === r && (r = Number.MAX_VALUE); var i = [], o = r; return this.children.forEachAt(n, r, (function (n, r, a) { (null == e.blotName && e(n) || null != e.blotName && n instanceof e) && i.push(n), n instanceof t && (i = i.concat(n.descendants(e, r, o))), o -= a })), i }, t.prototype.detach = function () { this.children.forEach((function (e) { e.detach() })), e.prototype.detach.call(this) }, t.prototype.formatAt = function (e, t, n, r) { this.children.forEachAt(e, t, (function (e, t, i) { e.formatAt(t, i, n, r) })) }, t.prototype.insertAt = function (e, t, n) { var r = this.children.find(e), i = r[0], o = r[1]; if (i) i.insertAt(o, t, n); else { var s = null == n ? a.create("text", t) : a.create(t, n); this.appendChild(s) } }, t.prototype.insertBefore = function (e, t) { if (null != this.statics.allowedChildren && !this.statics.allowedChildren.some((function (t) { return e instanceof t }))) throw new a.ParchmentError("Cannot insert " + e.statics.blotName + " into " + this.statics.blotName); e.insertInto(this, t) }, t.prototype.length = function () { return this.children.reduce((function (e, t) { return e + t.length() }), 0) }, t.prototype.moveChildren = function (e, t) { this.children.forEach((function (n) { e.insertBefore(n, t) })) }, t.prototype.optimize = function (t) { if (e.prototype.optimize.call(this, t), 0 === this.children.length) if (null != this.statics.defaultChild) { var n = a.create(this.statics.defaultChild); this.appendChild(n), n.optimize(t) } else this.remove() }, t.prototype.path = function (e, n) { void 0 === n && (n = !1); var r = this.children.find(e, n), i = r[0], o = r[1], a = [[this, e]]; return i instanceof t ? a.concat(i.path(o, n)) : (null != i && a.push([i, o]), a) }, t.prototype.removeChild = function (e) { this.children.remove(e) }, t.prototype.replace = function (n) { n instanceof t && n.moveChildren(this), e.prototype.replace.call(this, n) }, t.prototype.split = function (e, t) { if (void 0 === t && (t = !1), !t) { if (0 === e) return this; if (e === this.length()) return this.next } var n = this.clone(); return this.parent.insertBefore(n, this.next), this.children.forEachAt(e, this.length(), (function (e, r, i) { e = e.split(r, t), n.appendChild(e) })), n }, t.prototype.unwrap = function () { this.moveChildren(this.parent, this.next), this.remove() }, t.prototype.update = function (e, t) { var n = this, r = [], i = []; e.forEach((function (e) { e.target === n.domNode && "childList" === e.type && (r.push.apply(r, e.addedNodes), i.push.apply(i, e.removedNodes)) })), i.forEach((function (e) { if (!(null != e.parentNode && "IFRAME" !== e.tagName && document.body.compareDocumentPosition(e) & Node.DOCUMENT_POSITION_CONTAINED_BY)) { var t = a.find(e); null != t && (null != t.domNode.parentNode && t.domNode.parentNode !== n.domNode || t.detach()) } })), r.filter((function (e) { return e.parentNode == n.domNode })).sort((function (e, t) { return e === t ? 0 : e.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_FOLLOWING ? 1 : -1 })).forEach((function (e) { var t = null; null != e.nextSibling && (t = a.find(e.nextSibling)); var r = c(e); r.next == t && null != r.next || (null != r.parent && r.parent.removeChild(n), n.insertBefore(r, t || void 0)) })) }, t }(o.default); function c(e) { var t = a.find(e); if (null == t) try { t = a.create(e) } catch (n) { t = a.create(a.Scope.INLINE), [].slice.call(e.childNodes).forEach((function (e) { t.domNode.appendChild(e) })), e.parentNode && e.parentNode.replaceChild(t.domNode, e), t.attach() } return t } t.default = s }, function (e, t, n) { "use strict"; var r = this && this.__extends || function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(); Object.defineProperty(t, "__esModule", { value: !0 }); var i = n(12), o = n(31), a = n(17), s = n(1), c = function (e) { function t(t) { var n = e.call(this, t) || this; return n.attributes = new o.default(n.domNode), n } return r(t, e), t.formats = function (e) { return "string" === typeof this.tagName || (Array.isArray(this.tagName) ? e.tagName.toLowerCase() : void 0) }, t.prototype.format = function (e, t) { var n = s.query(e); n instanceof i.default ? this.attributes.attribute(n, t) : t && (null == n || e === this.statics.blotName && this.formats()[e] === t || this.replaceWith(e, t)) }, t.prototype.formats = function () { var e = this.attributes.values(), t = this.statics.formats(this.domNode); return null != t && (e[this.statics.blotName] = t), e }, t.prototype.replaceWith = function (t, n) { var r = e.prototype.replaceWith.call(this, t, n); return this.attributes.copy(r), r }, t.prototype.update = function (t, n) { var r = this; e.prototype.update.call(this, t, n), t.some((function (e) { return e.target === r.domNode && "attributes" === e.type })) && this.attributes.build() }, t.prototype.wrap = function (n, r) { var i = e.prototype.wrap.call(this, n, r); return i instanceof t && i.statics.scope === this.statics.scope && this.attributes.move(i), i }, t }(a.default); t.default = c }, function (e, t, n) { "use strict"; var r = this && this.__extends || function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(); Object.defineProperty(t, "__esModule", { value: !0 }); var i = n(30), o = n(1), a = function (e) { function t() { return null !== e && e.apply(this, arguments) || this } return r(t, e), t.value = function (e) { return !0 }, t.prototype.index = function (e, t) { return this.domNode === e || this.domNode.compareDocumentPosition(e) & Node.DOCUMENT_POSITION_CONTAINED_BY ? Math.min(t, 1) : -1 }, t.prototype.position = function (e, t) { var n = [].indexOf.call(this.parent.domNode.childNodes, this.domNode); return e > 0 && (n += 1), [this.parent.domNode, n] }, t.prototype.value = function () { var e; return e = {}, e[this.statics.blotName] = this.statics.value(this.domNode) || !0, e }, t.scope = o.Scope.INLINE_BLOT, t }(i.default); t.default = a }, function (e, t, n) { var r = n(11), i = n(3), o = { attributes: { compose: function (e, t, n) { "object" !== typeof e && (e = {}), "object" !== typeof t && (t = {}); var r = i(!0, {}, t); for (var o in n || (r = Object.keys(r).reduce((function (e, t) { return null != r[t] && (e[t] = r[t]), e }), {})), e) void 0 !== e[o] && void 0 === t[o] && (r[o] = e[o]); return Object.keys(r).length > 0 ? r : void 0 }, diff: function (e, t) { "object" !== typeof e && (e = {}), "object" !== typeof t && (t = {}); var n = Object.keys(e).concat(Object.keys(t)).reduce((function (n, i) { return r(e[i], t[i]) || (n[i] = void 0 === t[i] ? null : t[i]), n }), {}); return Object.keys(n).length > 0 ? n : void 0 }, transform: function (e, t, n) { if ("object" !== typeof e) return t; if ("object" === typeof t) { if (!n) return t; var r = Object.keys(t).reduce((function (n, r) { return void 0 === e[r] && (n[r] = t[r]), n }), {}); return Object.keys(r).length > 0 ? r : void 0 } } }, iterator: function (e) { return new a(e) }, length: function (e) { return "number" === typeof e["delete"] ? e["delete"] : "number" === typeof e.retain ? e.retain : "string" === typeof e.insert ? e.insert.length : 1 } }; function a(e) { this.ops = e, this.index = 0, this.offset = 0 } a.prototype.hasNext = function () { return this.peekLength() < 1 / 0 }, a.prototype.next = function (e) { e || (e = 1 / 0); var t = this.ops[this.index]; if (t) { var n = this.offset, r = o.length(t); if (e >= r - n ? (e = r - n, this.index += 1, this.offset = 0) : this.offset += e, "number" === typeof t["delete"]) return { delete: e }; var i = {}; return t.attributes && (i.attributes = t.attributes), "number" === typeof t.retain ? i.retain = e : "string" === typeof t.insert ? i.insert = t.insert.substr(n, e) : i.insert = t.insert, i } return { retain: 1 / 0 } }, a.prototype.peek = function () { return this.ops[this.index] }, a.prototype.peekLength = function () { return this.ops[this.index] ? o.length(this.ops[this.index]) - this.offset : 1 / 0 }, a.prototype.peekType = function () { return this.ops[this.index] ? "number" === typeof this.ops[this.index]["delete"] ? "delete" : "number" === typeof this.ops[this.index].retain ? "retain" : "insert" : "retain" }, a.prototype.rest = function () { if (this.hasNext()) { if (0 === this.offset) return this.ops.slice(this.index); var e = this.offset, t = this.index, n = this.next(), r = this.ops.slice(this.index); return this.offset = e, this.index = t, [n].concat(r) } return [] }, e.exports = o }, function (e, n) { var r = function () { "use strict"; function e(e, t) { return null != t && e instanceof t } var n, r, i; try { n = Map } catch (h) { n = function () { } } try { r = Set } catch (h) { r = function () { } } try { i = Promise } catch (h) { i = function () { } } function o(a, s, c, l, h) { "object" === typeof s && (c = s.depth, l = s.prototype, h = s.includeNonEnumerable, s = s.circular); var f = [], d = [], p = "undefined" != typeof t; function v(a, c) { if (null === a) return null; if (0 === c) return a; var m, g; if ("object" != typeof a) return a; if (e(a, n)) m = new n; else if (e(a, r)) m = new r; else if (e(a, i)) m = new i((function (e, t) { a.then((function (t) { e(v(t, c - 1)) }), (function (e) { t(v(e, c - 1)) })) })); else if (o.__isArray(a)) m = []; else if (o.__isRegExp(a)) m = new RegExp(a.source, u(a)), a.lastIndex && (m.lastIndex = a.lastIndex); else if (o.__isDate(a)) m = new Date(a.getTime()); else { if (p && t.isBuffer(a)) return m = t.allocUnsafe ? t.allocUnsafe(a.length) : new t(a.length), a.copy(m), m; e(a, Error) ? m = Object.create(a) : "undefined" == typeof l ? (g = Object.getPrototypeOf(a), m = Object.create(g)) : (m = Object.create(l), g = l) } if (s) { var y = f.indexOf(a); if (-1 != y) return d[y]; f.push(a), d.push(m) } for (var b in e(a, n) && a.forEach((function (e, t) { var n = v(t, c - 1), r = v(e, c - 1); m.set(n, r) })), e(a, r) && a.forEach((function (e) { var t = v(e, c - 1); m.add(t) })), a) { var x; g && (x = Object.getOwnPropertyDescriptor(g, b)), x && null == x.set || (m[b] = v(a[b], c - 1)) } if (Object.getOwnPropertySymbols) { var w = Object.getOwnPropertySymbols(a); for (b = 0; b < w.length; b++) { var _ = w[b], C = Object.getOwnPropertyDescriptor(a, _); (!C || C.enumerable || h) && (m[_] = v(a[_], c - 1), C.enumerable || Object.defineProperty(m, _, { enumerable: !1 })) } } if (h) { var M = Object.getOwnPropertyNames(a); for (b = 0; b < M.length; b++) { var O = M[b]; C = Object.getOwnPropertyDescriptor(a, O), C && C.enumerable || (m[O] = v(a[O], c - 1), Object.defineProperty(m, O, { enumerable: !1 })) } } return m } return "undefined" == typeof s && (s = !0), "undefined" == typeof c && (c = 1 / 0), v(a, c) } function a(e) { return Object.prototype.toString.call(e) } function s(e) { return "object" === typeof e && "[object Date]" === a(e) } function c(e) { return "object" === typeof e && "[object Array]" === a(e) } function l(e) { return "object" === typeof e && "[object RegExp]" === a(e) } function u(e) { var t = ""; return e.global && (t += "g"), e.ignoreCase && (t += "i"), e.multiline && (t += "m"), t } return o.clonePrototype = function (e) { if (null === e) return null; var t = function () { }; return t.prototype = e, new t }, o.__objToStr = a, o.__isDate = s, o.__isArray = c, o.__isRegExp = l, o.__getRegExpFlags = u, o }(); "object" === typeof e && e.exports && (e.exports = r) }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { var n = [], r = !0, i = !1, o = void 0; try { for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done); r = !0)if (n.push(a.value), t && n.length === t) break } catch (c) { i = !0, o = c } finally { try { !r && s["return"] && s["return"]() } finally { if (i) throw o } } return n } return function (t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), o = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, a = n(0), s = y(a), c = n(8), l = y(c), u = n(4), h = y(u), f = n(16), d = y(f), p = n(13), v = y(p), m = n(25), g = y(m); function y(e) { return e && e.__esModule ? e : { default: e } } function b(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function x(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function w(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } function _(e) { return e instanceof h.default || e instanceof u.BlockEmbed } var C = function (e) { function t(e, n) { b(this, t); var r = x(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e)); return r.emitter = n.emitter, Array.isArray(n.whitelist) && (r.whitelist = n.whitelist.reduce((function (e, t) { return e[t] = !0, e }), {})), r.domNode.addEventListener("DOMNodeInserted", (function () { })), r.optimize(), r.enable(), r } return w(t, e), i(t, [{ key: "batchStart", value: function () { this.batch = !0 } }, { key: "batchEnd", value: function () { this.batch = !1, this.optimize() } }, { key: "deleteAt", value: function (e, n) { var i = this.line(e), a = r(i, 2), s = a[0], c = a[1], l = this.line(e + n), h = r(l, 1), f = h[0]; if (o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "deleteAt", this).call(this, e, n), null != f && s !== f && c > 0) { if (s instanceof u.BlockEmbed || f instanceof u.BlockEmbed) return void this.optimize(); if (s instanceof v.default) { var p = s.newlineIndex(s.length(), !0); if (p > -1 && (s = s.split(p + 1), s === f)) return void this.optimize() } else if (f instanceof v.default) { var m = f.newlineIndex(0); m > -1 && f.split(m + 1) } var g = f.children.head instanceof d.default ? null : f.children.head; s.moveChildren(f, g), s.remove() } this.optimize() } }, { key: "enable", value: function () { var e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0]; this.domNode.setAttribute("contenteditable", e) } }, { key: "formatAt", value: function (e, n, r, i) { (null == this.whitelist || this.whitelist[r]) && (o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "formatAt", this).call(this, e, n, r, i), this.optimize()) } }, { key: "insertAt", value: function (e, n, r) { if (null == r || null == this.whitelist || this.whitelist[n]) { if (e >= this.length()) if (null == r || null == s.default.query(n, s.default.Scope.BLOCK)) { var i = s.default.create(this.statics.defaultChild); this.appendChild(i), null == r && n.endsWith("\n") && (n = n.slice(0, -1)), i.insertAt(0, n, r) } else { var a = s.default.create(n, r); this.appendChild(a) } else o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "insertAt", this).call(this, e, n, r); this.optimize() } } }, { key: "insertBefore", value: function (e, n) { if (e.statics.scope === s.default.Scope.INLINE_BLOT) { var r = s.default.create(this.statics.defaultChild); r.appendChild(e), e = r } o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "insertBefore", this).call(this, e, n) } }, { key: "leaf", value: function (e) { return this.path(e).pop() || [null, -1] } }, { key: "line", value: function (e) { return e === this.length() ? this.line(e - 1) : this.descendant(_, e) } }, { key: "lines", value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Number.MAX_VALUE, n = function e(t, n, r) { var i = [], o = r; return t.children.forEachAt(n, r, (function (t, n, r) { _(t) ? i.push(t) : t instanceof s.default.Container && (i = i.concat(e(t, n, o))), o -= r })), i }; return n(this, e, t) } }, { key: "optimize", value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; !0 !== this.batch && (o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "optimize", this).call(this, e, n), e.length > 0 && this.emitter.emit(l.default.events.SCROLL_OPTIMIZE, e, n)) } }, { key: "path", value: function (e) { return o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "path", this).call(this, e).slice(1) } }, { key: "update", value: function (e) { if (!0 !== this.batch) { var n = l.default.sources.USER; "string" === typeof e && (n = e), Array.isArray(e) || (e = this.observer.takeRecords()), e.length > 0 && this.emitter.emit(l.default.events.SCROLL_BEFORE_UPDATE, n, e), o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "update", this).call(this, e.concat([])), e.length > 0 && this.emitter.emit(l.default.events.SCROLL_UPDATE, n, e) } } }]), t }(s.default.Scroll); C.blotName = "scroll", C.className = "ql-editor", C.tagName = "DIV", C.defaultChild = "block", C.allowedChildren = [h.default, u.BlockEmbed, g.default], t.default = C }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.SHORTKEY = t.default = void 0; var r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, i = function () { function e(e, t) { var n = [], r = !0, i = !1, o = void 0; try { for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done); r = !0)if (n.push(a.value), t && n.length === t) break } catch (c) { i = !0, o = c } finally { try { !r && s["return"] && s["return"]() } finally { if (i) throw o } } return n } return function (t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), o = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), a = n(21), s = M(a), c = n(11), l = M(c), u = n(3), h = M(u), f = n(2), d = M(f), p = n(20), v = M(p), m = n(0), g = M(m), y = n(5), b = M(y), x = n(10), w = M(x), _ = n(9), C = M(_); function M(e) { return e && e.__esModule ? e : { default: e } } function O(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function k(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function S(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function T(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var A = (0, w.default)("quill:keyboard"), L = /Mac/i.test(navigator.platform) ? "metaKey" : "ctrlKey", j = function (e) { function t(e, n) { k(this, t); var r = S(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n)); return r.bindings = {}, Object.keys(r.options.bindings).forEach((function (t) { ("list autofill" !== t || null == e.scroll.whitelist || e.scroll.whitelist["list"]) && r.options.bindings[t] && r.addBinding(r.options.bindings[t]) })), r.addBinding({ key: t.keys.ENTER, shiftKey: null }, H), r.addBinding({ key: t.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, (function () { })), /Firefox/i.test(navigator.userAgent) ? (r.addBinding({ key: t.keys.BACKSPACE }, { collapsed: !0 }, E), r.addBinding({ key: t.keys.DELETE }, { collapsed: !0 }, P)) : (r.addBinding({ key: t.keys.BACKSPACE }, { collapsed: !0, prefix: /^.?$/ }, E), r.addBinding({ key: t.keys.DELETE }, { collapsed: !0, suffix: /^.?$/ }, P)), r.addBinding({ key: t.keys.BACKSPACE }, { collapsed: !1 }, D), r.addBinding({ key: t.keys.DELETE }, { collapsed: !1 }, D), r.addBinding({ key: t.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: !0, offset: 0 }, E), r.listen(), r } return T(t, e), o(t, null, [{ key: "match", value: function (e, t) { return t = N(t), !["altKey", "ctrlKey", "metaKey", "shiftKey"].some((function (n) { return !!t[n] !== e[n] && null !== t[n] })) && t.key === (e.which || e.keyCode) } }]), o(t, [{ key: "addBinding", value: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, r = N(e); if (null == r || null == r.key) return A.warn("Attempted to add invalid keyboard binding", r); "function" === typeof t && (t = { handler: t }), "function" === typeof n && (n = { handler: n }), r = (0, h.default)(r, t, n), this.bindings[r.key] = this.bindings[r.key] || [], this.bindings[r.key].push(r) } }, { key: "listen", value: function () { var e = this; this.quill.root.addEventListener("keydown", (function (n) { if (!n.defaultPrevented) { var o = n.which || n.keyCode, a = (e.bindings[o] || []).filter((function (e) { return t.match(n, e) })); if (0 !== a.length) { var s = e.quill.getSelection(); if (null != s && e.quill.hasFocus()) { var c = e.quill.getLine(s.index), u = i(c, 2), h = u[0], f = u[1], d = e.quill.getLeaf(s.index), p = i(d, 2), v = p[0], m = p[1], y = 0 === s.length ? [v, m] : e.quill.getLeaf(s.index + s.length), b = i(y, 2), x = b[0], w = b[1], _ = v instanceof g.default.Text ? v.value().slice(0, m) : "", C = x instanceof g.default.Text ? x.value().slice(w) : "", M = { collapsed: 0 === s.length, empty: 0 === s.length && h.length() <= 1, format: e.quill.getFormat(s), offset: f, prefix: _, suffix: C }, O = a.some((function (t) { if (null != t.collapsed && t.collapsed !== M.collapsed) return !1; if (null != t.empty && t.empty !== M.empty) return !1; if (null != t.offset && t.offset !== M.offset) return !1; if (Array.isArray(t.format)) { if (t.format.every((function (e) { return null == M.format[e] }))) return !1 } else if ("object" === r(t.format) && !Object.keys(t.format).every((function (e) { return !0 === t.format[e] ? null != M.format[e] : !1 === t.format[e] ? null == M.format[e] : (0, l.default)(t.format[e], M.format[e]) }))) return !1; return !(null != t.prefix && !t.prefix.test(M.prefix)) && !(null != t.suffix && !t.suffix.test(M.suffix)) && !0 !== t.handler.call(e, s, M) })); O && n.preventDefault() } } } })) } }]), t }(C.default); function z(e, t) { var n, r = e === j.keys.LEFT ? "prefix" : "suffix"; return n = { key: e, shiftKey: t, altKey: null }, O(n, r, /^$/), O(n, "handler", (function (n) { var r = n.index; e === j.keys.RIGHT && (r += n.length + 1); var o = this.quill.getLeaf(r), a = i(o, 1), s = a[0]; return !(s instanceof g.default.Embed) || (e === j.keys.LEFT ? t ? this.quill.setSelection(n.index - 1, n.length + 1, b.default.sources.USER) : this.quill.setSelection(n.index - 1, b.default.sources.USER) : t ? this.quill.setSelection(n.index, n.length + 1, b.default.sources.USER) : this.quill.setSelection(n.index + n.length + 1, b.default.sources.USER), !1) })), n } function E(e, t) { if (!(0 === e.index || this.quill.getLength() <= 1)) { var n = this.quill.getLine(e.index), r = i(n, 1), o = r[0], a = {}; if (0 === t.offset) { var s = this.quill.getLine(e.index - 1), c = i(s, 1), l = c[0]; if (null != l && l.length() > 1) { var u = o.formats(), h = this.quill.getFormat(e.index - 1, 1); a = v.default.attributes.diff(u, h) || {} } } var f = /[\uD800-\uDBFF][\uDC00-\uDFFF]$/.test(t.prefix) ? 2 : 1; this.quill.deleteText(e.index - f, f, b.default.sources.USER), Object.keys(a).length > 0 && this.quill.formatLine(e.index - f, f, a, b.default.sources.USER), this.quill.focus() } } function P(e, t) { var n = /^[\uD800-\uDBFF][\uDC00-\uDFFF]/.test(t.suffix) ? 2 : 1; if (!(e.index >= this.quill.getLength() - n)) { var r = {}, o = 0, a = this.quill.getLine(e.index), s = i(a, 1), c = s[0]; if (t.offset >= c.length() - 1) { var l = this.quill.getLine(e.index + 1), u = i(l, 1), h = u[0]; if (h) { var f = c.formats(), d = this.quill.getFormat(e.index, 1); r = v.default.attributes.diff(f, d) || {}, o = h.length() } } this.quill.deleteText(e.index, n, b.default.sources.USER), Object.keys(r).length > 0 && this.quill.formatLine(e.index + o - 1, n, r, b.default.sources.USER) } } function D(e) { var t = this.quill.getLines(e), n = {}; if (t.length > 1) { var r = t[0].formats(), i = t[t.length - 1].formats(); n = v.default.attributes.diff(i, r) || {} } this.quill.deleteText(e, b.default.sources.USER), Object.keys(n).length > 0 && this.quill.formatLine(e.index, 1, n, b.default.sources.USER), this.quill.setSelection(e.index, b.default.sources.SILENT), this.quill.focus() } function H(e, t) { var n = this; e.length > 0 && this.quill.scroll.deleteAt(e.index, e.length); var r = Object.keys(t.format).reduce((function (e, n) { return g.default.query(n, g.default.Scope.BLOCK) && !Array.isArray(t.format[n]) && (e[n] = t.format[n]), e }), {}); this.quill.insertText(e.index, "\n", r, b.default.sources.USER), this.quill.setSelection(e.index + 1, b.default.sources.SILENT), this.quill.focus(), Object.keys(t.format).forEach((function (e) { null == r[e] && (Array.isArray(t.format[e]) || "link" !== e && n.quill.format(e, t.format[e], b.default.sources.USER)) })) } function V(e) { return { key: j.keys.TAB, shiftKey: !e, format: { "code-block": !0 }, handler: function (t) { var n = g.default.query("code-block"), r = t.index, o = t.length, a = this.quill.scroll.descendant(n, r), s = i(a, 2), c = s[0], l = s[1]; if (null != c) { var u = this.quill.getIndex(c), h = c.newlineIndex(l, !0) + 1, f = c.newlineIndex(u + l + o), d = c.domNode.textContent.slice(h, f).split("\n"); l = 0, d.forEach((function (t, i) { e ? (c.insertAt(h + l, n.TAB), l += n.TAB.length, 0 === i ? r += n.TAB.length : o += n.TAB.length) : t.startsWith(n.TAB) && (c.deleteAt(h + l, n.TAB.length), l -= n.TAB.length, 0 === i ? r -= n.TAB.length : o -= n.TAB.length), l += t.length + 1 })), this.quill.update(b.default.sources.USER), this.quill.setSelection(r, o, b.default.sources.SILENT) } } } } function I(e) { return { key: e[0].toUpperCase(), shortKey: !0, handler: function (t, n) { this.quill.format(e, !n.format[e], b.default.sources.USER) } } } function N(e) { if ("string" === typeof e || "number" === typeof e) return N({ key: e }); if ("object" === ("undefined" === typeof e ? "undefined" : r(e)) && (e = (0, s.default)(e, !1)), "string" === typeof e.key) if (null != j.keys[e.key.toUpperCase()]) e.key = j.keys[e.key.toUpperCase()]; else { if (1 !== e.key.length) return null; e.key = e.key.toUpperCase().charCodeAt(0) } return e.shortKey && (e[L] = e.shortKey, delete e.shortKey), e } j.keys = { BACKSPACE: 8, TAB: 9, ENTER: 13, ESCAPE: 27, LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, DELETE: 46 }, j.DEFAULTS = { bindings: { bold: I("bold"), italic: I("italic"), underline: I("underline"), indent: { key: j.keys.TAB, format: ["blockquote", "indent", "list"], handler: function (e, t) { if (t.collapsed && 0 !== t.offset) return !0; this.quill.format("indent", "+1", b.default.sources.USER) } }, outdent: { key: j.keys.TAB, shiftKey: !0, format: ["blockquote", "indent", "list"], handler: function (e, t) { if (t.collapsed && 0 !== t.offset) return !0; this.quill.format("indent", "-1", b.default.sources.USER) } }, "outdent backspace": { key: j.keys.BACKSPACE, collapsed: !0, shiftKey: null, metaKey: null, ctrlKey: null, altKey: null, format: ["indent", "list"], offset: 0, handler: function (e, t) { null != t.format.indent ? this.quill.format("indent", "-1", b.default.sources.USER) : null != t.format.list && this.quill.format("list", !1, b.default.sources.USER) } }, "indent code-block": V(!0), "outdent code-block": V(!1), "remove tab": { key: j.keys.TAB, shiftKey: !0, collapsed: !0, prefix: /\t$/, handler: function (e) { this.quill.deleteText(e.index - 1, 1, b.default.sources.USER) } }, tab: { key: j.keys.TAB, handler: function (e) { this.quill.history.cutoff(); var t = (new d.default).retain(e.index).delete(e.length).insert("\t"); this.quill.updateContents(t, b.default.sources.USER), this.quill.history.cutoff(), this.quill.setSelection(e.index + 1, b.default.sources.SILENT) } }, "list empty enter": { key: j.keys.ENTER, collapsed: !0, format: ["list"], empty: !0, handler: function (e, t) { this.quill.format("list", !1, b.default.sources.USER), t.format.indent && this.quill.format("indent", !1, b.default.sources.USER) } }, "checklist enter": { key: j.keys.ENTER, collapsed: !0, format: { list: "checked" }, handler: function (e) { var t = this.quill.getLine(e.index), n = i(t, 2), r = n[0], o = n[1], a = (0, h.default)({}, r.formats(), { list: "checked" }), s = (new d.default).retain(e.index).insert("\n", a).retain(r.length() - o - 1).retain(1, { list: "unchecked" }); this.quill.updateContents(s, b.default.sources.USER), this.quill.setSelection(e.index + 1, b.default.sources.SILENT), this.quill.scrollIntoView() } }, "header enter": { key: j.keys.ENTER, collapsed: !0, format: ["header"], suffix: /^$/, handler: function (e, t) { var n = this.quill.getLine(e.index), r = i(n, 2), o = r[0], a = r[1], s = (new d.default).retain(e.index).insert("\n", t.format).retain(o.length() - a - 1).retain(1, { header: null }); this.quill.updateContents(s, b.default.sources.USER), this.quill.setSelection(e.index + 1, b.default.sources.SILENT), this.quill.scrollIntoView() } }, "list autofill": { key: " ", collapsed: !0, format: { list: !1 }, prefix: /^\s*?(\d+\.|-|\*|\[ ?\]|\[x\])$/, handler: function (e, t) { var n = t.prefix.length, r = this.quill.getLine(e.index), o = i(r, 2), a = o[0], s = o[1]; if (s > n) return !0; var c = void 0; switch (t.prefix.trim()) { case "[]": case "[ ]": c = "unchecked"; break; case "[x]": c = "checked"; break; case "-": case "*": c = "bullet"; break; default: c = "ordered" }this.quill.insertText(e.index, " ", b.default.sources.USER), this.quill.history.cutoff(); var l = (new d.default).retain(e.index - s).delete(n + 1).retain(a.length() - 2 - s).retain(1, { list: c }); this.quill.updateContents(l, b.default.sources.USER), this.quill.history.cutoff(), this.quill.setSelection(e.index - n, b.default.sources.SILENT) } }, "code exit": { key: j.keys.ENTER, collapsed: !0, format: ["code-block"], prefix: /\n\n$/, suffix: /^\s+$/, handler: function (e) { var t = this.quill.getLine(e.index), n = i(t, 2), r = n[0], o = n[1], a = (new d.default).retain(e.index + r.length() - o - 2).retain(1, { "code-block": null }).delete(1); this.quill.updateContents(a, b.default.sources.USER) } }, "embed left": z(j.keys.LEFT, !1), "embed left shift": z(j.keys.LEFT, !0), "embed right": z(j.keys.RIGHT, !1), "embed right shift": z(j.keys.RIGHT, !0) } }, t.default = j, t.SHORTKEY = L }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { var n = [], r = !0, i = !1, o = void 0; try { for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done); r = !0)if (n.push(a.value), t && n.length === t) break } catch (c) { i = !0, o = c } finally { try { !r && s["return"] && s["return"]() } finally { if (i) throw o } } return n } return function (t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), a = n(0), s = u(a), c = n(7), l = u(c); function u(e) { return e && e.__esModule ? e : { default: e } } function h(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function f(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function d(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var p = function (e) { function t(e, n) { h(this, t); var r = f(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e)); return r.selection = n, r.textNode = document.createTextNode(t.CONTENTS), r.domNode.appendChild(r.textNode), r._length = 0, r } return d(t, e), o(t, null, [{ key: "value", value: function () { } }]), o(t, [{ key: "detach", value: function () { null != this.parent && this.parent.removeChild(this) } }, { key: "format", value: function (e, n) { if (0 !== this._length) return i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "format", this).call(this, e, n); var r = this, o = 0; while (null != r && r.statics.scope !== s.default.Scope.BLOCK_BLOT) o += r.offset(r.parent), r = r.parent; null != r && (this._length = t.CONTENTS.length, r.optimize(), r.formatAt(o, t.CONTENTS.length, e, n), this._length = 0) } }, { key: "index", value: function (e, n) { return e === this.textNode ? 0 : i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "index", this).call(this, e, n) } }, { key: "length", value: function () { return this._length } }, { key: "position", value: function () { return [this.textNode, this.textNode.data.length] } }, { key: "remove", value: function () { i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "remove", this).call(this), this.parent = null } }, { key: "restore", value: function () { if (!this.selection.composing && null != this.parent) { var e = this.textNode, n = this.selection.getNativeRange(), i = void 0, o = void 0, a = void 0; if (null != n && n.start.node === e && n.end.node === e) { var c = [e, n.start.offset, n.end.offset]; i = c[0], o = c[1], a = c[2] } while (null != this.domNode.lastChild && this.domNode.lastChild !== this.textNode) this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode); if (this.textNode.data !== t.CONTENTS) { var u = this.textNode.data.split(t.CONTENTS).join(""); this.next instanceof l.default ? (i = this.next.domNode, this.next.insertAt(0, u), this.textNode.data = t.CONTENTS) : (this.textNode.data = u, this.parent.insertBefore(s.default.create(this.textNode), this), this.textNode = document.createTextNode(t.CONTENTS), this.domNode.appendChild(this.textNode)) } if (this.remove(), null != o) { var h = [o, a].map((function (e) { return Math.max(0, Math.min(i.data.length, e - 1)) })), f = r(h, 2); return o = f[0], a = f[1], { startNode: i, startOffset: o, endNode: i, endOffset: a } } } } }, { key: "update", value: function (e, t) { var n = this; if (e.some((function (e) { return "characterData" === e.type && e.target === n.textNode }))) { var r = this.restore(); r && (t.range = r) } } }, { key: "value", value: function () { return "" } }]), t }(s.default.Embed); p.blotName = "cursor", p.className = "ql-cursor", p.tagName = "span", p.CONTENTS = "\ufeff", t.default = p }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(0), i = s(r), o = n(4), a = s(o); function s(e) { return e && e.__esModule ? e : { default: e } } function c(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function l(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function u(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var h = function (e) { function t() { return c(this, t), l(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return u(t, e), t }(i.default.Container); h.allowedChildren = [a.default, o.BlockEmbed, h], t.default = h }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.ColorStyle = t.ColorClass = t.ColorAttributor = void 0; var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(0), a = s(o); function s(e) { return e && e.__esModule ? e : { default: e } } function c(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function l(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function u(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var h = function (e) { function t() { return c(this, t), l(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return u(t, e), r(t, [{ key: "value", value: function (e) { var n = i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "value", this).call(this, e); return n.startsWith("rgb(") ? (n = n.replace(/^[^\d]+/, "").replace(/[^\d]+$/, ""), "#" + n.split(",").map((function (e) { return ("00" + parseInt(e).toString(16)).slice(-2) })).join("")) : n } }]), t }(a.default.Attributor.Style), f = new a.default.Attributor.Class("color", "ql-color", { scope: a.default.Scope.INLINE }), d = new h("color", "color", { scope: a.default.Scope.INLINE }); t.ColorAttributor = h, t.ColorClass = f, t.ColorStyle = d }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.sanitize = t.default = void 0; var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(6), a = s(o); function s(e) { return e && e.__esModule ? e : { default: e } } function c(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function l(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function u(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var h = function (e) { function t() { return c(this, t), l(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return u(t, e), r(t, [{ key: "format", value: function (e, n) { if (e !== this.statics.blotName || !n) return i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "format", this).call(this, e, n); n = this.constructor.sanitize(n), this.domNode.setAttribute("href", n) } }], [{ key: "create", value: function (e) { var n = i(t.__proto__ || Object.getPrototypeOf(t), "create", this).call(this, e); return e = this.sanitize(e), n.setAttribute("href", e), n.setAttribute("rel", "noopener noreferrer"), n.setAttribute("target", "_blank"), n } }, { key: "formats", value: function (e) { return e.getAttribute("href") } }, { key: "sanitize", value: function (e) { return f(e, this.PROTOCOL_WHITELIST) ? e : this.SANITIZED_URL } }]), t }(a.default); function f(e, t) { var n = document.createElement("a"); n.href = e; var r = n.href.slice(0, n.href.indexOf(":")); return t.indexOf(r) > -1 } h.blotName = "link", h.tagName = "A", h.SANITIZED_URL = "about:blank", h.PROTOCOL_WHITELIST = ["http", "https", "mailto", "tel"], t.default = h, t.sanitize = f }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), o = n(23), a = l(o), s = n(107), c = l(s); function l(e) { return e && e.__esModule ? e : { default: e } } function u(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var h = 0; function f(e, t) { e.setAttribute(t, !("true" === e.getAttribute(t))) } var d = function () { function e(t) { var n = this; u(this, e), this.select = t, this.container = document.createElement("span"), this.buildPicker(), this.select.style.display = "none", this.select.parentNode.insertBefore(this.container, this.select), this.label.addEventListener("mousedown", (function () { n.togglePicker() })), this.label.addEventListener("keydown", (function (e) { switch (e.keyCode) { case a.default.keys.ENTER: n.togglePicker(); break; case a.default.keys.ESCAPE: n.escape(), e.preventDefault(); break; default: } })), this.select.addEventListener("change", this.update.bind(this)) } return i(e, [{ key: "togglePicker", value: function () { this.container.classList.toggle("ql-expanded"), f(this.label, "aria-expanded"), f(this.options, "aria-hidden") } }, { key: "buildItem", value: function (e) { var t = this, n = document.createElement("span"); return n.tabIndex = "0", n.setAttribute("role", "button"), n.classList.add("ql-picker-item"), e.hasAttribute("value") && n.setAttribute("data-value", e.getAttribute("value")), e.textContent && n.setAttribute("data-label", e.textContent), n.addEventListener("click", (function () { t.selectItem(n, !0) })), n.addEventListener("keydown", (function (e) { switch (e.keyCode) { case a.default.keys.ENTER: t.selectItem(n, !0), e.preventDefault(); break; case a.default.keys.ESCAPE: t.escape(), e.preventDefault(); break; default: } })), n } }, { key: "buildLabel", value: function () { var e = document.createElement("span"); return e.classList.add("ql-picker-label"), e.innerHTML = c.default, e.tabIndex = "0", e.setAttribute("role", "button"), e.setAttribute("aria-expanded", "false"), this.container.appendChild(e), e } }, { key: "buildOptions", value: function () { var e = this, t = document.createElement("span"); t.classList.add("ql-picker-options"), t.setAttribute("aria-hidden", "true"), t.tabIndex = "-1", t.id = "ql-picker-options-" + h, h += 1, this.label.setAttribute("aria-controls", t.id), this.options = t, [].slice.call(this.select.options).forEach((function (n) { var r = e.buildItem(n); t.appendChild(r), !0 === n.selected && e.selectItem(r) })), this.container.appendChild(t) } }, { key: "buildPicker", value: function () { var e = this;[].slice.call(this.select.attributes).forEach((function (t) { e.container.setAttribute(t.name, t.value) })), this.container.classList.add("ql-picker"), this.label = this.buildLabel(), this.buildOptions() } }, { key: "escape", value: function () { var e = this; this.close(), setTimeout((function () { return e.label.focus() }), 1) } }, { key: "close", value: function () { this.container.classList.remove("ql-expanded"), this.label.setAttribute("aria-expanded", "false"), this.options.setAttribute("aria-hidden", "true") } }, { key: "selectItem", value: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = this.container.querySelector(".ql-selected"); if (e !== n && (null != n && n.classList.remove("ql-selected"), null != e && (e.classList.add("ql-selected"), this.select.selectedIndex = [].indexOf.call(e.parentNode.children, e), e.hasAttribute("data-value") ? this.label.setAttribute("data-value", e.getAttribute("data-value")) : this.label.removeAttribute("data-value"), e.hasAttribute("data-label") ? this.label.setAttribute("data-label", e.getAttribute("data-label")) : this.label.removeAttribute("data-label"), t))) { if ("function" === typeof Event) this.select.dispatchEvent(new Event("change")); else if ("object" === ("undefined" === typeof Event ? "undefined" : r(Event))) { var i = document.createEvent("Event"); i.initEvent("change", !0, !0), this.select.dispatchEvent(i) } this.close() } } }, { key: "update", value: function () { var e = void 0; if (this.select.selectedIndex > -1) { var t = this.container.querySelector(".ql-picker-options").children[this.select.selectedIndex]; e = this.select.options[this.select.selectedIndex], this.selectItem(t) } else this.selectItem(null); var n = null != e && e !== this.select.querySelector("option[selected]"); this.label.classList.toggle("ql-active", n) } }]), e }(); t.default = d }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(0), i = A(r), o = n(5), a = A(o), s = n(4), c = A(s), l = n(16), u = A(l), h = n(25), f = A(h), d = n(24), p = A(d), v = n(35), m = A(v), g = n(6), y = A(g), b = n(22), x = A(b), w = n(7), _ = A(w), C = n(55), M = A(C), O = n(42), k = A(O), S = n(23), T = A(S); function A(e) { return e && e.__esModule ? e : { default: e } } a.default.register({ "blots/block": c.default, "blots/block/embed": s.BlockEmbed, "blots/break": u.default, "blots/container": f.default, "blots/cursor": p.default, "blots/embed": m.default, "blots/inline": y.default, "blots/scroll": x.default, "blots/text": _.default, "modules/clipboard": M.default, "modules/history": k.default, "modules/keyboard": T.default }), i.default.register(c.default, u.default, p.default, y.default, x.default, _.default), t.default = a.default }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(1), i = function () { function e(e) { this.domNode = e, this.domNode[r.DATA_KEY] = { blot: this } } return Object.defineProperty(e.prototype, "statics", { get: function () { return this.constructor }, enumerable: !0, configurable: !0 }), e.create = function (e) { if (null == this.tagName) throw new r.ParchmentError("Blot definition missing tagName"); var t; return Array.isArray(this.tagName) ? ("string" === typeof e && (e = e.toUpperCase(), parseInt(e).toString() === e && (e = parseInt(e))), t = "number" === typeof e ? document.createElement(this.tagName[e - 1]) : this.tagName.indexOf(e) > -1 ? document.createElement(e) : document.createElement(this.tagName[0])) : t = document.createElement(this.tagName), this.className && t.classList.add(this.className), t }, e.prototype.attach = function () { null != this.parent && (this.scroll = this.parent.scroll) }, e.prototype.clone = function () { var e = this.domNode.cloneNode(!1); return r.create(e) }, e.prototype.detach = function () { null != this.parent && this.parent.removeChild(this), delete this.domNode[r.DATA_KEY] }, e.prototype.deleteAt = function (e, t) { var n = this.isolate(e, t); n.remove() }, e.prototype.formatAt = function (e, t, n, i) { var o = this.isolate(e, t); if (null != r.query(n, r.Scope.BLOT) && i) o.wrap(n, i); else if (null != r.query(n, r.Scope.ATTRIBUTE)) { var a = r.create(this.statics.scope); o.wrap(a), a.format(n, i) } }, e.prototype.insertAt = function (e, t, n) { var i = null == n ? r.create("text", t) : r.create(t, n), o = this.split(e); this.parent.insertBefore(i, o) }, e.prototype.insertInto = function (e, t) { void 0 === t && (t = null), null != this.parent && this.parent.children.remove(this); var n = null; e.children.insertBefore(this, t), null != t && (n = t.domNode), this.domNode.parentNode == e.domNode && this.domNode.nextSibling == n || e.domNode.insertBefore(this.domNode, n), this.parent = e, this.attach() }, e.prototype.isolate = function (e, t) { var n = this.split(e); return n.split(t), n }, e.prototype.length = function () { return 1 }, e.prototype.offset = function (e) { return void 0 === e && (e = this.parent), null == this.parent || this == e ? 0 : this.parent.children.offset(this) + this.parent.offset(e) }, e.prototype.optimize = function (e) { null != this.domNode[r.DATA_KEY] && delete this.domNode[r.DATA_KEY].mutations }, e.prototype.remove = function () { null != this.domNode.parentNode && this.domNode.parentNode.removeChild(this.domNode), this.detach() }, e.prototype.replace = function (e) { null != e.parent && (e.parent.insertBefore(this, e.next), e.remove()) }, e.prototype.replaceWith = function (e, t) { var n = "string" === typeof e ? r.create(e, t) : e; return n.replace(this), n }, e.prototype.split = function (e, t) { return 0 === e ? this : this.next }, e.prototype.update = function (e, t) { }, e.prototype.wrap = function (e, t) { var n = "string" === typeof e ? r.create(e, t) : e; return null != this.parent && this.parent.insertBefore(n, this.next), n.appendChild(this), n }, e.blotName = "abstract", e }(); t.default = i }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(12), i = n(32), o = n(33), a = n(1), s = function () { function e(e) { this.attributes = {}, this.domNode = e, this.build() } return e.prototype.attribute = function (e, t) { t ? e.add(this.domNode, t) && (null != e.value(this.domNode) ? this.attributes[e.attrName] = e : delete this.attributes[e.attrName]) : (e.remove(this.domNode), delete this.attributes[e.attrName]) }, e.prototype.build = function () { var e = this; this.attributes = {}; var t = r.default.keys(this.domNode), n = i.default.keys(this.domNode), s = o.default.keys(this.domNode); t.concat(n).concat(s).forEach((function (t) { var n = a.query(t, a.Scope.ATTRIBUTE); n instanceof r.default && (e.attributes[n.attrName] = n) })) }, e.prototype.copy = function (e) { var t = this; Object.keys(this.attributes).forEach((function (n) { var r = t.attributes[n].value(t.domNode); e.format(n, r) })) }, e.prototype.move = function (e) { var t = this; this.copy(e), Object.keys(this.attributes).forEach((function (e) { t.attributes[e].remove(t.domNode) })), this.attributes = {} }, e.prototype.values = function () { var e = this; return Object.keys(this.attributes).reduce((function (t, n) { return t[n] = e.attributes[n].value(e.domNode), t }), {}) }, e }(); t.default = s }, function (e, t, n) { "use strict"; var r = this && this.__extends || function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(); Object.defineProperty(t, "__esModule", { value: !0 }); var i = n(12); function o(e, t) { var n = e.getAttribute("class") || ""; return n.split(/\s+/).filter((function (e) { return 0 === e.indexOf(t + "-") })) } var a = function (e) { function t() { return null !== e && e.apply(this, arguments) || this } return r(t, e), t.keys = function (e) { return (e.getAttribute("class") || "").split(/\s+/).map((function (e) { return e.split("-").slice(0, -1).join("-") })) }, t.prototype.add = function (e, t) { return !!this.canAdd(e, t) && (this.remove(e), e.classList.add(this.keyName + "-" + t), !0) }, t.prototype.remove = function (e) { var t = o(e, this.keyName); t.forEach((function (t) { e.classList.remove(t) })), 0 === e.classList.length && e.removeAttribute("class") }, t.prototype.value = function (e) { var t = o(e, this.keyName)[0] || "", n = t.slice(this.keyName.length + 1); return this.canAdd(e, n) ? n : "" }, t }(i.default); t.default = a }, function (e, t, n) { "use strict"; var r = this && this.__extends || function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(); Object.defineProperty(t, "__esModule", { value: !0 }); var i = n(12); function o(e) { var t = e.split("-"), n = t.slice(1).map((function (e) { return e[0].toUpperCase() + e.slice(1) })).join(""); return t[0] + n } var a = function (e) { function t() { return null !== e && e.apply(this, arguments) || this } return r(t, e), t.keys = function (e) { return (e.getAttribute("style") || "").split(";").map((function (e) { var t = e.split(":"); return t[0].trim() })) }, t.prototype.add = function (e, t) { return !!this.canAdd(e, t) && (e.style[o(this.keyName)] = t, !0) }, t.prototype.remove = function (e) { e.style[o(this.keyName)] = "", e.getAttribute("style") || e.removeAttribute("style") }, t.prototype.value = function (e) { var t = e.style[o(this.keyName)]; return this.canAdd(e, t) ? t : "" }, t }(i.default); t.default = a }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(); function i(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var o = function () { function e(t, n) { i(this, e), this.quill = t, this.options = n, this.modules = {} } return r(e, [{ key: "init", value: function () { var e = this; Object.keys(this.options.modules).forEach((function (t) { null == e.modules[t] && e.addModule(t) })) } }, { key: "addModule", value: function (e) { var t = this.quill.constructor.import("modules/" + e); return this.modules[e] = new t(this.quill, this.options.modules[e] || {}), this.modules[e] } }]), e }(); o.DEFAULTS = { modules: {} }, o.themes = { default: o }, t.default = o }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(0), a = l(o), s = n(7), c = l(s); function l(e) { return e && e.__esModule ? e : { default: e } } function u(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function h(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function f(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var d = "\ufeff", p = function (e) { function t(e) { u(this, t); var n = h(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e)); return n.contentNode = document.createElement("span"), n.contentNode.setAttribute("contenteditable", !1), [].slice.call(n.domNode.childNodes).forEach((function (e) { n.contentNode.appendChild(e) })), n.leftGuard = document.createTextNode(d), n.rightGuard = document.createTextNode(d), n.domNode.appendChild(n.leftGuard), n.domNode.appendChild(n.contentNode), n.domNode.appendChild(n.rightGuard), n } return f(t, e), r(t, [{ key: "index", value: function (e, n) { return e === this.leftGuard ? 0 : e === this.rightGuard ? 1 : i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "index", this).call(this, e, n) } }, { key: "restore", value: function (e) { var t = void 0, n = void 0, r = e.data.split(d).join(""); if (e === this.leftGuard) if (this.prev instanceof c.default) { var i = this.prev.length(); this.prev.insertAt(i, r), t = { startNode: this.prev.domNode, startOffset: i + r.length } } else n = document.createTextNode(r), this.parent.insertBefore(a.default.create(n), this), t = { startNode: n, startOffset: r.length }; else e === this.rightGuard && (this.next instanceof c.default ? (this.next.insertAt(0, r), t = { startNode: this.next.domNode, startOffset: r.length }) : (n = document.createTextNode(r), this.parent.insertBefore(a.default.create(n), this.next), t = { startNode: n, startOffset: r.length })); return e.data = d, t } }, { key: "update", value: function (e, t) { var n = this; e.forEach((function (e) { if ("characterData" === e.type && (e.target === n.leftGuard || e.target === n.rightGuard)) { var r = n.restore(e.target); r && (t.range = r) } })) } }]), t }(a.default.Embed); t.default = p }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.AlignStyle = t.AlignClass = t.AlignAttribute = void 0; var r = n(0), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } var a = { scope: i.default.Scope.BLOCK, whitelist: ["right", "center", "justify"] }, s = new i.default.Attributor.Attribute("align", "align", a), c = new i.default.Attributor.Class("align", "ql-align", a), l = new i.default.Attributor.Style("align", "text-align", a); t.AlignAttribute = s, t.AlignClass = c, t.AlignStyle = l }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.BackgroundStyle = t.BackgroundClass = void 0; var r = n(0), i = a(r), o = n(26); function a(e) { return e && e.__esModule ? e : { default: e } } var s = new i.default.Attributor.Class("background", "ql-bg", { scope: i.default.Scope.INLINE }), c = new o.ColorAttributor("background", "background-color", { scope: i.default.Scope.INLINE }); t.BackgroundClass = s, t.BackgroundStyle = c }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.DirectionStyle = t.DirectionClass = t.DirectionAttribute = void 0; var r = n(0), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } var a = { scope: i.default.Scope.BLOCK, whitelist: ["rtl"] }, s = new i.default.Attributor.Attribute("direction", "dir", a), c = new i.default.Attributor.Class("direction", "ql-direction", a), l = new i.default.Attributor.Style("direction", "direction", a); t.DirectionAttribute = s, t.DirectionClass = c, t.DirectionStyle = l }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.FontClass = t.FontStyle = void 0; var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(0), a = s(o); function s(e) { return e && e.__esModule ? e : { default: e } } function c(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function l(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function u(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var h = { scope: a.default.Scope.INLINE, whitelist: ["serif", "monospace"] }, f = new a.default.Attributor.Class("font", "ql-font", h), d = function (e) { function t() { return c(this, t), l(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return u(t, e), r(t, [{ key: "value", value: function (e) { return i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "value", this).call(this, e).replace(/["']/g, "") } }]), t }(a.default.Attributor.Style), p = new d("font", "font-family", h); t.FontStyle = p, t.FontClass = f }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.SizeStyle = t.SizeClass = void 0; var r = n(0), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } var a = new i.default.Attributor.Class("size", "ql-size", { scope: i.default.Scope.INLINE, whitelist: ["small", "large", "huge"] }), s = new i.default.Attributor.Style("size", "font-size", { scope: i.default.Scope.INLINE, whitelist: ["10px", "18px", "32px"] }); t.SizeClass = a, t.SizeStyle = s }, function (e, t, n) { "use strict"; e.exports = { align: { "": n(76), center: n(77), right: n(78), justify: n(79) }, background: n(80), blockquote: n(81), bold: n(82), clean: n(83), code: n(58), "code-block": n(58), color: n(84), direction: { "": n(85), rtl: n(86) }, float: { center: n(87), full: n(88), left: n(89), right: n(90) }, formula: n(91), header: { 1: n(92), 2: n(93) }, italic: n(94), image: n(95), indent: { "+1": n(96), "-1": n(97) }, link: n(98), list: { ordered: n(99), bullet: n(100), check: n(101) }, script: { sub: n(102), super: n(103) }, strike: n(104), underline: n(105), video: n(106) } }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.getLastChangeIndex = t.default = void 0; var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = n(0), o = u(i), a = n(5), s = u(a), c = n(9), l = u(c); function u(e) { return e && e.__esModule ? e : { default: e } } function h(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function f(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function d(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var p = function (e) { function t(e, n) { h(this, t); var r = f(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n)); return r.lastRecorded = 0, r.ignoreChange = !1, r.clear(), r.quill.on(s.default.events.EDITOR_CHANGE, (function (e, t, n, i) { e !== s.default.events.TEXT_CHANGE || r.ignoreChange || (r.options.userOnly && i !== s.default.sources.USER ? r.transform(t) : r.record(t, n)) })), r.quill.keyboard.addBinding({ key: "Z", shortKey: !0 }, r.undo.bind(r)), r.quill.keyboard.addBinding({ key: "Z", shortKey: !0, shiftKey: !0 }, r.redo.bind(r)), /Win/i.test(navigator.platform) && r.quill.keyboard.addBinding({ key: "Y", shortKey: !0 }, r.redo.bind(r)), r } return d(t, e), r(t, [{ key: "change", value: function (e, t) { if (0 !== this.stack[e].length) { var n = this.stack[e].pop(); this.stack[t].push(n), this.lastRecorded = 0, this.ignoreChange = !0, this.quill.updateContents(n[e], s.default.sources.USER), this.ignoreChange = !1; var r = m(n[e]); this.quill.setSelection(r) } } }, { key: "clear", value: function () { this.stack = { undo: [], redo: [] } } }, { key: "cutoff", value: function () { this.lastRecorded = 0 } }, { key: "record", value: function (e, t) { if (0 !== e.ops.length) { this.stack.redo = []; var n = this.quill.getContents().diff(t), r = Date.now(); if (this.lastRecorded + this.options.delay > r && this.stack.undo.length > 0) { var i = this.stack.undo.pop(); n = n.compose(i.undo), e = i.redo.compose(e) } else this.lastRecorded = r; this.stack.undo.push({ redo: e, undo: n }), this.stack.undo.length > this.options.maxStack && this.stack.undo.shift() } } }, { key: "redo", value: function () { this.change("redo", "undo") } }, { key: "transform", value: function (e) { this.stack.undo.forEach((function (t) { t.undo = e.transform(t.undo, !0), t.redo = e.transform(t.redo, !0) })), this.stack.redo.forEach((function (t) { t.undo = e.transform(t.undo, !0), t.redo = e.transform(t.redo, !0) })) } }, { key: "undo", value: function () { this.change("undo", "redo") } }]), t }(l.default); function v(e) { var t = e.ops[e.ops.length - 1]; return null != t && (null != t.insert ? "string" === typeof t.insert && t.insert.endsWith("\n") : null != t.attributes && Object.keys(t.attributes).some((function (e) { return null != o.default.query(e, o.default.Scope.BLOCK) }))) } function m(e) { var t = e.reduce((function (e, t) { return e += t.delete || 0, e }), 0), n = e.length() - t; return v(e) && (n -= 1), n } p.DEFAULTS = { delay: 1e3, maxStack: 100, userOnly: !1 }, t.default = p, t.getLastChangeIndex = m }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.default = t.BaseTooltip = void 0; var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(3), a = C(o), s = n(2), c = C(s), l = n(8), u = C(l), h = n(23), f = C(h), d = n(34), p = C(d), v = n(59), m = C(v), g = n(60), y = C(g), b = n(28), x = C(b), w = n(61), _ = C(w); function C(e) { return e && e.__esModule ? e : { default: e } } function M(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function O(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function k(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var S = [!1, "center", "right", "justify"], T = ["#000000", "#e60000", "#ff9900", "#ffff00", "#008a00", "#0066cc", "#9933ff", "#ffffff", "#facccc", "#ffebcc", "#ffffcc", "#cce8cc", "#cce0f5", "#ebd6ff", "#bbbbbb", "#f06666", "#ffc266", "#ffff66", "#66b966", "#66a3e0", "#c285ff", "#888888", "#a10000", "#b26b00", "#b2b200", "#006100", "#0047b2", "#6b24b2", "#444444", "#5c0000", "#663d00", "#666600", "#003700", "#002966", "#3d1466"], A = [!1, "serif", "monospace"], L = ["1", "2", "3", !1], j = ["small", !1, "large", "huge"], z = function (e) { function t(e, n) { M(this, t); var r = O(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n)), i = function t(n) { if (!document.body.contains(e.root)) return document.body.removeEventListener("click", t); null == r.tooltip || r.tooltip.root.contains(n.target) || document.activeElement === r.tooltip.textbox || r.quill.hasFocus() || r.tooltip.hide(), null != r.pickers && r.pickers.forEach((function (e) { e.container.contains(n.target) || e.close() })) }; return e.emitter.listenDOM("click", document.body, i), r } return k(t, e), r(t, [{ key: "addModule", value: function (e) { var n = i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "addModule", this).call(this, e); return "toolbar" === e && this.extendToolbar(n), n } }, { key: "buildButtons", value: function (e, t) { e.forEach((function (e) { var n = e.getAttribute("class") || ""; n.split(/\s+/).forEach((function (n) { if (n.startsWith("ql-") && (n = n.slice("ql-".length), null != t[n])) if ("direction" === n) e.innerHTML = t[n][""] + t[n]["rtl"]; else if ("string" === typeof t[n]) e.innerHTML = t[n]; else { var r = e.value || ""; null != r && t[n][r] && (e.innerHTML = t[n][r]) } })) })) } }, { key: "buildPickers", value: function (e, t) { var n = this; this.pickers = e.map((function (e) { if (e.classList.contains("ql-align")) return null == e.querySelector("option") && D(e, S), new y.default(e, t.align); if (e.classList.contains("ql-background") || e.classList.contains("ql-color")) { var n = e.classList.contains("ql-background") ? "background" : "color"; return null == e.querySelector("option") && D(e, T, "background" === n ? "#ffffff" : "#000000"), new m.default(e, t[n]) } return null == e.querySelector("option") && (e.classList.contains("ql-font") ? D(e, A) : e.classList.contains("ql-header") ? D(e, L) : e.classList.contains("ql-size") && D(e, j)), new x.default(e) })); var r = function () { n.pickers.forEach((function (e) { e.update() })) }; this.quill.on(u.default.events.EDITOR_CHANGE, r) } }]), t }(p.default); z.DEFAULTS = (0, a.default)(!0, {}, p.default.DEFAULTS, { modules: { toolbar: { handlers: { formula: function () { this.quill.theme.tooltip.edit("formula") }, image: function () { var e = this, t = this.container.querySelector("input.ql-image[type=file]"); null == t && (t = document.createElement("input"), t.setAttribute("type", "file"), t.setAttribute("accept", "image/png, image/gif, image/jpeg, image/bmp, image/x-icon"), t.classList.add("ql-image"), t.addEventListener("change", (function () { if (null != t.files && null != t.files[0]) { var n = new FileReader; n.onload = function (n) { var r = e.quill.getSelection(!0); e.quill.updateContents((new c.default).retain(r.index).delete(r.length).insert({ image: n.target.result }), u.default.sources.USER), e.quill.setSelection(r.index + 1, u.default.sources.SILENT), t.value = "" }, n.readAsDataURL(t.files[0]) } })), this.container.appendChild(t)), t.click() }, video: function () { this.quill.theme.tooltip.edit("video") } } } } }); var E = function (e) { function t(e, n) { M(this, t); var r = O(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n)); return r.textbox = r.root.querySelector('input[type="text"]'), r.listen(), r } return k(t, e), r(t, [{ key: "listen", value: function () { var e = this; this.textbox.addEventListener("keydown", (function (t) { f.default.match(t, "enter") ? (e.save(), t.preventDefault()) : f.default.match(t, "escape") && (e.cancel(), t.preventDefault()) })) } }, { key: "cancel", value: function () { this.hide() } }, { key: "edit", value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "link", t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null; this.root.classList.remove("ql-hidden"), this.root.classList.add("ql-editing"), null != t ? this.textbox.value = t : e !== this.root.getAttribute("data-mode") && (this.textbox.value = ""), this.position(this.quill.getBounds(this.quill.selection.savedRange)), this.textbox.select(), this.textbox.setAttribute("placeholder", this.textbox.getAttribute("data-" + e) || ""), this.root.setAttribute("data-mode", e) } }, { key: "restoreFocus", value: function () { var e = this.quill.scrollingContainer.scrollTop; this.quill.focus(), this.quill.scrollingContainer.scrollTop = e } }, { key: "save", value: function () { var e = this.textbox.value; switch (this.root.getAttribute("data-mode")) { case "link": var t = this.quill.root.scrollTop; this.linkRange ? (this.quill.formatText(this.linkRange, "link", e, u.default.sources.USER), delete this.linkRange) : (this.restoreFocus(), this.quill.format("link", e, u.default.sources.USER)), this.quill.root.scrollTop = t; break; case "video": e = P(e); case "formula": if (!e) break; var n = this.quill.getSelection(!0); if (null != n) { var r = n.index + n.length; this.quill.insertEmbed(r, this.root.getAttribute("data-mode"), e, u.default.sources.USER), "formula" === this.root.getAttribute("data-mode") && this.quill.insertText(r + 1, " ", u.default.sources.USER), this.quill.setSelection(r + 2, u.default.sources.USER) } break; default: }this.textbox.value = "", this.hide() } }]), t }(_.default); function P(e) { var t = e.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/) || e.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtu\.be\/([a-zA-Z0-9_-]+)/); return t ? (t[1] || "https") + "://www.youtube.com/embed/" + t[2] + "?showinfo=0" : (t = e.match(/^(?:(https?):\/\/)?(?:www\.)?vimeo\.com\/(\d+)/)) ? (t[1] || "https") + "://player.vimeo.com/video/" + t[2] + "/" : e } function D(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; t.forEach((function (t) { var r = document.createElement("option"); t === n ? r.setAttribute("selected", "selected") : r.setAttribute("value", t), e.appendChild(r) })) } t.BaseTooltip = E, t.default = z }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e() { this.head = this.tail = null, this.length = 0 } return e.prototype.append = function () { for (var e = [], t = 0; t < arguments.length; t++)e[t] = arguments[t]; this.insertBefore(e[0], null), e.length > 1 && this.append.apply(this, e.slice(1)) }, e.prototype.contains = function (e) { var t, n = this.iterator(); while (t = n()) if (t === e) return !0; return !1 }, e.prototype.insertBefore = function (e, t) { e && (e.next = t, null != t ? (e.prev = t.prev, null != t.prev && (t.prev.next = e), t.prev = e, t === this.head && (this.head = e)) : null != this.tail ? (this.tail.next = e, e.prev = this.tail, this.tail = e) : (e.prev = null, this.head = this.tail = e), this.length += 1) }, e.prototype.offset = function (e) { var t = 0, n = this.head; while (null != n) { if (n === e) return t; t += n.length(), n = n.next } return -1 }, e.prototype.remove = function (e) { this.contains(e) && (null != e.prev && (e.prev.next = e.next), null != e.next && (e.next.prev = e.prev), e === this.head && (this.head = e.next), e === this.tail && (this.tail = e.prev), this.length -= 1) }, e.prototype.iterator = function (e) { return void 0 === e && (e = this.head), function () { var t = e; return null != e && (e = e.next), t } }, e.prototype.find = function (e, t) { void 0 === t && (t = !1); var n, r = this.iterator(); while (n = r()) { var i = n.length(); if (e < i || t && e === i && (null == n.next || 0 !== n.next.length())) return [n, e]; e -= i } return [null, 0] }, e.prototype.forEach = function (e) { var t, n = this.iterator(); while (t = n()) e(t) }, e.prototype.forEachAt = function (e, t, n) { if (!(t <= 0)) { var r, i = this.find(e), o = i[0], a = i[1], s = e - a, c = this.iterator(o); while ((r = c()) && s < e + t) { var l = r.length(); e > s ? n(r, e - s, Math.min(t, s + l - e)) : n(r, 0, Math.min(l, e + t - s)), s += l } } }, e.prototype.map = function (e) { return this.reduce((function (t, n) { return t.push(e(n)), t }), []) }, e.prototype.reduce = function (e, t) { var n, r = this.iterator(); while (n = r()) t = e(t, n); return t }, e }(); t.default = r }, function (e, t, n) { "use strict"; var r = this && this.__extends || function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(); Object.defineProperty(t, "__esModule", { value: !0 }); var i = n(17), o = n(1), a = { attributes: !0, characterData: !0, characterDataOldValue: !0, childList: !0, subtree: !0 }, s = 100, c = function (e) { function t(t) { var n = e.call(this, t) || this; return n.scroll = n, n.observer = new MutationObserver((function (e) { n.update(e) })), n.observer.observe(n.domNode, a), n.attach(), n } return r(t, e), t.prototype.detach = function () { e.prototype.detach.call(this), this.observer.disconnect() }, t.prototype.deleteAt = function (t, n) { this.update(), 0 === t && n === this.length() ? this.children.forEach((function (e) { e.remove() })) : e.prototype.deleteAt.call(this, t, n) }, t.prototype.formatAt = function (t, n, r, i) { this.update(), e.prototype.formatAt.call(this, t, n, r, i) }, t.prototype.insertAt = function (t, n, r) { this.update(), e.prototype.insertAt.call(this, t, n, r) }, t.prototype.optimize = function (t, n) { var r = this; void 0 === t && (t = []), void 0 === n && (n = {}), e.prototype.optimize.call(this, n); var a = [].slice.call(this.observer.takeRecords()); while (a.length > 0) t.push(a.pop()); for (var c = function (e, t) { void 0 === t && (t = !0), null != e && e !== r && null != e.domNode.parentNode && (null == e.domNode[o.DATA_KEY].mutations && (e.domNode[o.DATA_KEY].mutations = []), t && c(e.parent)) }, l = function (e) { null != e.domNode[o.DATA_KEY] && null != e.domNode[o.DATA_KEY].mutations && (e instanceof i.default && e.children.forEach(l), e.optimize(n)) }, u = t, h = 0; u.length > 0; h += 1) { if (h >= s) throw new Error("[Parchment] Maximum optimize iterations reached"); u.forEach((function (e) { var t = o.find(e.target, !0); null != t && (t.domNode === e.target && ("childList" === e.type ? (c(o.find(e.previousSibling, !1)), [].forEach.call(e.addedNodes, (function (e) { var t = o.find(e, !1); c(t, !1), t instanceof i.default && t.children.forEach((function (e) { c(e, !1) })) }))) : "attributes" === e.type && c(t.prev)), c(t)) })), this.children.forEach(l), u = [].slice.call(this.observer.takeRecords()), a = u.slice(); while (a.length > 0) t.push(a.pop()) } }, t.prototype.update = function (t, n) { var r = this; void 0 === n && (n = {}), t = t || this.observer.takeRecords(), t.map((function (e) { var t = o.find(e.target, !0); return null == t ? null : null == t.domNode[o.DATA_KEY].mutations ? (t.domNode[o.DATA_KEY].mutations = [e], t) : (t.domNode[o.DATA_KEY].mutations.push(e), null) })).forEach((function (e) { null != e && e !== r && null != e.domNode[o.DATA_KEY] && e.update(e.domNode[o.DATA_KEY].mutations || [], n) })), null != this.domNode[o.DATA_KEY].mutations && e.prototype.update.call(this, this.domNode[o.DATA_KEY].mutations, n), this.optimize(t, n) }, t.blotName = "scroll", t.defaultChild = "block", t.scope = o.Scope.BLOCK_BLOT, t.tagName = "DIV", t }(i.default); t.default = c }, function (e, t, n) { "use strict"; var r = this && this.__extends || function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(); Object.defineProperty(t, "__esModule", { value: !0 }); var i = n(18), o = n(1); function a(e, t) { if (Object.keys(e).length !== Object.keys(t).length) return !1; for (var n in e) if (e[n] !== t[n]) return !1; return !0 } var s = function (e) { function t() { return null !== e && e.apply(this, arguments) || this } return r(t, e), t.formats = function (n) { if (n.tagName !== t.tagName) return e.formats.call(this, n) }, t.prototype.format = function (n, r) { var o = this; n !== this.statics.blotName || r ? e.prototype.format.call(this, n, r) : (this.children.forEach((function (e) { e instanceof i.default || (e = e.wrap(t.blotName, !0)), o.attributes.copy(e) })), this.unwrap()) }, t.prototype.formatAt = function (t, n, r, i) { if (null != this.formats()[r] || o.query(r, o.Scope.ATTRIBUTE)) { var a = this.isolate(t, n); a.format(r, i) } else e.prototype.formatAt.call(this, t, n, r, i) }, t.prototype.optimize = function (n) { e.prototype.optimize.call(this, n); var r = this.formats(); if (0 === Object.keys(r).length) return this.unwrap(); var i = this.next; i instanceof t && i.prev === this && a(r, i.formats()) && (i.moveChildren(this), i.remove()) }, t.blotName = "inline", t.scope = o.Scope.INLINE_BLOT, t.tagName = "SPAN", t }(i.default); t.default = s }, function (e, t, n) { "use strict"; var r = this && this.__extends || function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(); Object.defineProperty(t, "__esModule", { value: !0 }); var i = n(18), o = n(1), a = function (e) { function t() { return null !== e && e.apply(this, arguments) || this } return r(t, e), t.formats = function (n) { var r = o.query(t.blotName).tagName; if (n.tagName !== r) return e.formats.call(this, n) }, t.prototype.format = function (n, r) { null != o.query(n, o.Scope.BLOCK) && (n !== this.statics.blotName || r ? e.prototype.format.call(this, n, r) : this.replaceWith(t.blotName)) }, t.prototype.formatAt = function (t, n, r, i) { null != o.query(r, o.Scope.BLOCK) ? this.format(r, i) : e.prototype.formatAt.call(this, t, n, r, i) }, t.prototype.insertAt = function (t, n, r) { if (null == r || null != o.query(n, o.Scope.INLINE)) e.prototype.insertAt.call(this, t, n, r); else { var i = this.split(t), a = o.create(n, r); i.parent.insertBefore(a, i) } }, t.prototype.update = function (t, n) { navigator.userAgent.match(/Trident/) ? this.build() : e.prototype.update.call(this, t, n) }, t.blotName = "block", t.scope = o.Scope.BLOCK_BLOT, t.tagName = "P", t }(i.default); t.default = a }, function (e, t, n) { "use strict"; var r = this && this.__extends || function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(); Object.defineProperty(t, "__esModule", { value: !0 }); var i = n(19), o = function (e) { function t() { return null !== e && e.apply(this, arguments) || this } return r(t, e), t.formats = function (e) { }, t.prototype.format = function (t, n) { e.prototype.formatAt.call(this, 0, this.length(), t, n) }, t.prototype.formatAt = function (t, n, r, i) { 0 === t && n === this.length() ? this.format(r, i) : e.prototype.formatAt.call(this, t, n, r, i) }, t.prototype.formats = function () { return this.statics.formats(this.domNode) }, t }(i.default); t.default = o }, function (e, t, n) { "use strict"; var r = this && this.__extends || function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(); Object.defineProperty(t, "__esModule", { value: !0 }); var i = n(19), o = n(1), a = function (e) { function t(t) { var n = e.call(this, t) || this; return n.text = n.statics.value(n.domNode), n } return r(t, e), t.create = function (e) { return document.createTextNode(e) }, t.value = function (e) { var t = e.data; return t["normalize"] && (t = t["normalize"]()), t }, t.prototype.deleteAt = function (e, t) { this.domNode.data = this.text = this.text.slice(0, e) + this.text.slice(e + t) }, t.prototype.index = function (e, t) { return this.domNode === e ? t : -1 }, t.prototype.insertAt = function (t, n, r) { null == r ? (this.text = this.text.slice(0, t) + n + this.text.slice(t), this.domNode.data = this.text) : e.prototype.insertAt.call(this, t, n, r) }, t.prototype.length = function () { return this.text.length }, t.prototype.optimize = function (n) { e.prototype.optimize.call(this, n), this.text = this.statics.value(this.domNode), 0 === this.text.length ? this.remove() : this.next instanceof t && this.next.prev === this && (this.insertAt(this.length(), this.next.value()), this.next.remove()) }, t.prototype.position = function (e, t) { return void 0 === t && (t = !1), [this.domNode, e] }, t.prototype.split = function (e, t) { if (void 0 === t && (t = !1), !t) { if (0 === e) return this; if (e === this.length()) return this.next } var n = o.create(this.domNode.splitText(e)); return this.parent.insertBefore(n, this.next), this.text = this.statics.value(this.domNode), n }, t.prototype.update = function (e, t) { var n = this; e.some((function (e) { return "characterData" === e.type && e.target === n.domNode })) && (this.text = this.statics.value(this.domNode)) }, t.prototype.value = function () { return this.text }, t.blotName = "text", t.scope = o.Scope.INLINE_BLOT, t }(i.default); t.default = a }, function (e, t, n) { "use strict"; var r = document.createElement("div"); if (r.classList.toggle("test-class", !1), r.classList.contains("test-class")) { var i = DOMTokenList.prototype.toggle; DOMTokenList.prototype.toggle = function (e, t) { return arguments.length > 1 && !this.contains(e) === !t ? t : i.call(this, e) } } String.prototype.startsWith || (String.prototype.startsWith = function (e, t) { return t = t || 0, this.substr(t, e.length) === e }), String.prototype.endsWith || (String.prototype.endsWith = function (e, t) { var n = this.toString(); ("number" !== typeof t || !isFinite(t) || Math.floor(t) !== t || t > n.length) && (t = n.length), t -= e.length; var r = n.indexOf(e, t); return -1 !== r && r === t }), Array.prototype.find || Object.defineProperty(Array.prototype, "find", { value: function (e) { if (null === this) throw new TypeError("Array.prototype.find called on null or undefined"); if ("function" !== typeof e) throw new TypeError("predicate must be a function"); for (var t, n = Object(this), r = n.length >>> 0, i = arguments[1], o = 0; o < r; o++)if (t = n[o], e.call(i, t, o, n)) return t } }), document.addEventListener("DOMContentLoaded", (function () { document.execCommand("enableObjectResizing", !1, !1), document.execCommand("autoUrlDetect", !1, !1) })) }, function (e, t) { var n = -1, r = 1, i = 0; function o(e, t, n) { if (e == t) return e ? [[i, e]] : []; (n < 0 || e.length < n) && (n = null); var r = l(e, t), o = e.substring(0, r); e = e.substring(r), t = t.substring(r), r = u(e, t); var s = e.substring(e.length - r); e = e.substring(0, e.length - r), t = t.substring(0, t.length - r); var c = a(e, t); return o && c.unshift([i, o]), s && c.push([i, s]), f(c), null != n && (c = v(c, n)), c = m(c), c } function a(e, t) { var a; if (!e) return [[r, t]]; if (!t) return [[n, e]]; var c = e.length > t.length ? e : t, l = e.length > t.length ? t : e, u = c.indexOf(l); if (-1 != u) return a = [[r, c.substring(0, u)], [i, l], [r, c.substring(u + l.length)]], e.length > t.length && (a[0][0] = a[2][0] = n), a; if (1 == l.length) return [[n, e], [r, t]]; var f = h(e, t); if (f) { var d = f[0], p = f[1], v = f[2], m = f[3], g = f[4], y = o(d, v), b = o(p, m); return y.concat([[i, g]], b) } return s(e, t) } function s(e, t) { for (var i = e.length, o = t.length, a = Math.ceil((i + o) / 2), s = a, l = 2 * a, u = new Array(l), h = new Array(l), f = 0; f < l; f++)u[f] = -1, h[f] = -1; u[s + 1] = 0, h[s + 1] = 0; for (var d = i - o, p = d % 2 != 0, v = 0, m = 0, g = 0, y = 0, b = 0; b < a; b++) { for (var x = -b + v; x <= b - m; x += 2) { var w = s + x; S = x == -b || x != b && u[w - 1] < u[w + 1] ? u[w + 1] : u[w - 1] + 1; var _ = S - x; while (S < i && _ < o && e.charAt(S) == t.charAt(_)) S++, _++; if (u[w] = S, S > i) m += 2; else if (_ > o) v += 2; else if (p) { var C = s + d - x; if (C >= 0 && C < l && -1 != h[C]) { var M = i - h[C]; if (S >= M) return c(e, t, S, _) } } } for (var O = -b + g; O <= b - y; O += 2) { C = s + O, M = O == -b || O != b && h[C - 1] < h[C + 1] ? h[C + 1] : h[C - 1] + 1; var k = M - O; while (M < i && k < o && e.charAt(i - M - 1) == t.charAt(o - k - 1)) M++, k++; if (h[C] = M, M > i) y += 2; else if (k > o) g += 2; else if (!p && (w = s + d - O, w >= 0 && w < l && -1 != u[w])) { var S = u[w]; if (_ = s + S - w, M = i - M, S >= M) return c(e, t, S, _) } } } return [[n, e], [r, t]] } function c(e, t, n, r) { var i = e.substring(0, n), a = t.substring(0, r), s = e.substring(n), c = t.substring(r), l = o(i, a), u = o(s, c); return l.concat(u) } function l(e, t) { if (!e || !t || e.charAt(0) != t.charAt(0)) return 0; var n = 0, r = Math.min(e.length, t.length), i = r, o = 0; while (n < i) e.substring(o, i) == t.substring(o, i) ? (n = i, o = n) : r = i, i = Math.floor((r - n) / 2 + n); return i } function u(e, t) { if (!e || !t || e.charAt(e.length - 1) != t.charAt(t.length - 1)) return 0; var n = 0, r = Math.min(e.length, t.length), i = r, o = 0; while (n < i) e.substring(e.length - i, e.length - o) == t.substring(t.length - i, t.length - o) ? (n = i, o = n) : r = i, i = Math.floor((r - n) / 2 + n); return i } function h(e, t) { var n = e.length > t.length ? e : t, r = e.length > t.length ? t : e; if (n.length < 4 || 2 * r.length < n.length) return null; function i(e, t, n) { var r, i, o, a, s = e.substring(n, n + Math.floor(e.length / 4)), c = -1, h = ""; while (-1 != (c = t.indexOf(s, c + 1))) { var f = l(e.substring(n), t.substring(c)), d = u(e.substring(0, n), t.substring(0, c)); h.length < d + f && (h = t.substring(c - d, c) + t.substring(c, c + f), r = e.substring(0, n - d), i = e.substring(n + f), o = t.substring(0, c - d), a = t.substring(c + f)) } return 2 * h.length >= e.length ? [r, i, o, a, h] : null } var o, a, s, c, h, f = i(n, r, Math.ceil(n.length / 4)), d = i(n, r, Math.ceil(n.length / 2)); if (!f && !d) return null; o = d ? f && f[4].length > d[4].length ? f : d : f, e.length > t.length ? (a = o[0], s = o[1], c = o[2], h = o[3]) : (c = o[0], h = o[1], a = o[2], s = o[3]); var p = o[4]; return [a, s, c, h, p] } function f(e) { e.push([i, ""]); var t, o = 0, a = 0, s = 0, c = "", h = ""; while (o < e.length) switch (e[o][0]) { case r: s++, h += e[o][1], o++; break; case n: a++, c += e[o][1], o++; break; case i: a + s > 1 ? (0 !== a && 0 !== s && (t = l(h, c), 0 !== t && (o - a - s > 0 && e[o - a - s - 1][0] == i ? e[o - a - s - 1][1] += h.substring(0, t) : (e.splice(0, 0, [i, h.substring(0, t)]), o++), h = h.substring(t), c = c.substring(t)), t = u(h, c), 0 !== t && (e[o][1] = h.substring(h.length - t) + e[o][1], h = h.substring(0, h.length - t), c = c.substring(0, c.length - t))), 0 === a ? e.splice(o - s, a + s, [r, h]) : 0 === s ? e.splice(o - a, a + s, [n, c]) : e.splice(o - a - s, a + s, [n, c], [r, h]), o = o - a - s + (a ? 1 : 0) + (s ? 1 : 0) + 1) : 0 !== o && e[o - 1][0] == i ? (e[o - 1][1] += e[o][1], e.splice(o, 1)) : o++, s = 0, a = 0, c = "", h = ""; break }"" === e[e.length - 1][1] && e.pop(); var d = !1; o = 1; while (o < e.length - 1) e[o - 1][0] == i && e[o + 1][0] == i && (e[o][1].substring(e[o][1].length - e[o - 1][1].length) == e[o - 1][1] ? (e[o][1] = e[o - 1][1] + e[o][1].substring(0, e[o][1].length - e[o - 1][1].length), e[o + 1][1] = e[o - 1][1] + e[o + 1][1], e.splice(o - 1, 1), d = !0) : e[o][1].substring(0, e[o + 1][1].length) == e[o + 1][1] && (e[o - 1][1] += e[o + 1][1], e[o][1] = e[o][1].substring(e[o + 1][1].length) + e[o + 1][1], e.splice(o + 1, 1), d = !0)), o++; d && f(e) } var d = o; function p(e, t) { if (0 === t) return [i, e]; for (var r = 0, o = 0; o < e.length; o++) { var a = e[o]; if (a[0] === n || a[0] === i) { var s = r + a[1].length; if (t === s) return [o + 1, e]; if (t < s) { e = e.slice(); var c = t - r, l = [a[0], a[1].slice(0, c)], u = [a[0], a[1].slice(c)]; return e.splice(o, 1, l, u), [o + 1, e] } r = s } } throw new Error("cursor_pos is out of bounds!") } function v(e, t) { var n = p(e, t), r = n[1], o = n[0], a = r[o], s = r[o + 1]; if (null == a) return e; if (a[0] !== i) return e; if (null != s && a[1] + s[1] === s[1] + a[1]) return r.splice(o, 2, s, a), g(r, o, 2); if (null != s && 0 === s[1].indexOf(a[1])) { r.splice(o, 2, [s[0], a[1]], [0, a[1]]); var c = s[1].slice(a[1].length); return c.length > 0 && r.splice(o + 2, 0, [s[0], c]), g(r, o, 3) } return e } function m(e) { for (var t = !1, o = function (e) { return e.charCodeAt(0) >= 56320 && e.charCodeAt(0) <= 57343 }, a = function (e) { return e.charCodeAt(e.length - 1) >= 55296 && e.charCodeAt(e.length - 1) <= 56319 }, s = 2; s < e.length; s += 1)e[s - 2][0] === i && a(e[s - 2][1]) && e[s - 1][0] === n && o(e[s - 1][1]) && e[s][0] === r && o(e[s][1]) && (t = !0, e[s - 1][1] = e[s - 2][1].slice(-1) + e[s - 1][1], e[s][1] = e[s - 2][1].slice(-1) + e[s][1], e[s - 2][1] = e[s - 2][1].slice(0, -1)); if (!t) return e; var c = []; for (s = 0; s < e.length; s += 1)e[s][1].length > 0 && c.push(e[s]); return c } function g(e, t, n) { for (var r = t + n - 1; r >= 0 && r >= t - 1; r--)if (r + 1 < e.length) { var i = e[r], o = e[r + 1]; i[0] === o[1] && e.splice(r, 2, [i[0], i[1] + o[1]]) } return e } d.INSERT = r, d.DELETE = n, d.EQUAL = i, e.exports = d }, function (e, t) { function n(e) { var t = []; for (var n in e) t.push(n); return t } t = e.exports = "function" === typeof Object.keys ? Object.keys : n, t.shim = n }, function (e, t) { var n = "[object Arguments]" == function () { return Object.prototype.toString.call(arguments) }(); function r(e) { return "[object Arguments]" == Object.prototype.toString.call(e) } function i(e) { return e && "object" == typeof e && "number" == typeof e.length && Object.prototype.hasOwnProperty.call(e, "callee") && !Object.prototype.propertyIsEnumerable.call(e, "callee") || !1 } t = e.exports = n ? r : i, t.supported = r, t.unsupported = i }, function (e, t) { "use strict"; var n = Object.prototype.hasOwnProperty, r = "~"; function i() { } function o(e, t, n) { this.fn = e, this.context = t, this.once = n || !1 } function a() { this._events = new i, this._eventsCount = 0 } Object.create && (i.prototype = Object.create(null), (new i).__proto__ || (r = !1)), a.prototype.eventNames = function () { var e, t, i = []; if (0 === this._eventsCount) return i; for (t in e = this._events) n.call(e, t) && i.push(r ? t.slice(1) : t); return Object.getOwnPropertySymbols ? i.concat(Object.getOwnPropertySymbols(e)) : i }, a.prototype.listeners = function (e, t) { var n = r ? r + e : e, i = this._events[n]; if (t) return !!i; if (!i) return []; if (i.fn) return [i.fn]; for (var o = 0, a = i.length, s = new Array(a); o < a; o++)s[o] = i[o].fn; return s }, a.prototype.emit = function (e, t, n, i, o, a) { var s = r ? r + e : e; if (!this._events[s]) return !1; var c, l, u = this._events[s], h = arguments.length; if (u.fn) { switch (u.once && this.removeListener(e, u.fn, void 0, !0), h) { case 1: return u.fn.call(u.context), !0; case 2: return u.fn.call(u.context, t), !0; case 3: return u.fn.call(u.context, t, n), !0; case 4: return u.fn.call(u.context, t, n, i), !0; case 5: return u.fn.call(u.context, t, n, i, o), !0; case 6: return u.fn.call(u.context, t, n, i, o, a), !0 }for (l = 1, c = new Array(h - 1); l < h; l++)c[l - 1] = arguments[l]; u.fn.apply(u.context, c) } else { var f, d = u.length; for (l = 0; l < d; l++)switch (u[l].once && this.removeListener(e, u[l].fn, void 0, !0), h) { case 1: u[l].fn.call(u[l].context); break; case 2: u[l].fn.call(u[l].context, t); break; case 3: u[l].fn.call(u[l].context, t, n); break; case 4: u[l].fn.call(u[l].context, t, n, i); break; default: if (!c) for (f = 1, c = new Array(h - 1); f < h; f++)c[f - 1] = arguments[f]; u[l].fn.apply(u[l].context, c) } } return !0 }, a.prototype.on = function (e, t, n) { var i = new o(t, n || this), a = r ? r + e : e; return this._events[a] ? this._events[a].fn ? this._events[a] = [this._events[a], i] : this._events[a].push(i) : (this._events[a] = i, this._eventsCount++), this }, a.prototype.once = function (e, t, n) { var i = new o(t, n || this, !0), a = r ? r + e : e; return this._events[a] ? this._events[a].fn ? this._events[a] = [this._events[a], i] : this._events[a].push(i) : (this._events[a] = i, this._eventsCount++), this }, a.prototype.removeListener = function (e, t, n, o) { var a = r ? r + e : e; if (!this._events[a]) return this; if (!t) return 0 === --this._eventsCount ? this._events = new i : delete this._events[a], this; var s = this._events[a]; if (s.fn) s.fn !== t || o && !s.once || n && s.context !== n || (0 === --this._eventsCount ? this._events = new i : delete this._events[a]); else { for (var c = 0, l = [], u = s.length; c < u; c++)(s[c].fn !== t || o && !s[c].once || n && s[c].context !== n) && l.push(s[c]); l.length ? this._events[a] = 1 === l.length ? l[0] : l : 0 === --this._eventsCount ? this._events = new i : delete this._events[a] } return this }, a.prototype.removeAllListeners = function (e) { var t; return e ? (t = r ? r + e : e, this._events[t] && (0 === --this._eventsCount ? this._events = new i : delete this._events[t])) : (this._events = new i, this._eventsCount = 0), this }, a.prototype.off = a.prototype.removeListener, a.prototype.addListener = a.prototype.on, a.prototype.setMaxListeners = function () { return this }, a.prefixed = r, a.EventEmitter = a, "undefined" !== typeof e && (e.exports = a) }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.matchText = t.matchSpacing = t.matchNewline = t.matchBlot = t.matchAttributor = t.default = void 0; var r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, i = function () { function e(e, t) { var n = [], r = !0, i = !1, o = void 0; try { for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done); r = !0)if (n.push(a.value), t && n.length === t) break } catch (c) { i = !0, o = c } finally { try { !r && s["return"] && s["return"]() } finally { if (i) throw o } } return n } return function (t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), o = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), a = n(3), s = k(a), c = n(2), l = k(c), u = n(0), h = k(u), f = n(5), d = k(f), p = n(10), v = k(p), m = n(9), g = k(m), y = n(36), b = n(37), x = n(13), w = k(x), _ = n(26), C = n(38), M = n(39), O = n(40); function k(e) { return e && e.__esModule ? e : { default: e } } function S(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function T(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function A(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function L(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var j = (0, v.default)("quill:clipboard"), z = "__ql-matcher", E = [[Node.TEXT_NODE, J], [Node.TEXT_NODE, K], ["br", W], [Node.ELEMENT_NODE, K], [Node.ELEMENT_NODE, B], [Node.ELEMENT_NODE, G], [Node.ELEMENT_NODE, $], [Node.ELEMENT_NODE, X], ["li", U], ["b", Y.bind(Y, "bold")], ["i", Y.bind(Y, "italic")], ["style", q]], P = [y.AlignAttribute, C.DirectionAttribute].reduce((function (e, t) { return e[t.keyName] = t, e }), {}), D = [y.AlignStyle, b.BackgroundStyle, _.ColorStyle, C.DirectionStyle, M.FontStyle, O.SizeStyle].reduce((function (e, t) { return e[t.keyName] = t, e }), {}), H = function (e) { function t(e, n) { T(this, t); var r = A(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n)); return r.quill.root.addEventListener("paste", r.onPaste.bind(r)), r.container = r.quill.addContainer("ql-clipboard"), r.container.setAttribute("contenteditable", !0), r.container.setAttribute("tabindex", -1), r.matchers = [], E.concat(r.options.matchers).forEach((function (e) { var t = i(e, 2), o = t[0], a = t[1]; (n.matchVisual || a !== G) && r.addMatcher(o, a) })), r } return L(t, e), o(t, [{ key: "addMatcher", value: function (e, t) { this.matchers.push([e, t]) } }, { key: "convert", value: function (e) { if ("string" === typeof e) return this.container.innerHTML = e.replace(/\>\r?\n +\</g, "><"), this.convert(); var t = this.quill.getFormat(this.quill.selection.savedRange.index); if (t[w.default.blotName]) { var n = this.container.innerText; return this.container.innerHTML = "", (new l.default).insert(n, S({}, w.default.blotName, t[w.default.blotName])) } var r = this.prepareMatching(), o = i(r, 2), a = o[0], s = o[1], c = F(this.container, a, s); return N(c, "\n") && null == c.ops[c.ops.length - 1].attributes && (c = c.compose((new l.default).retain(c.length() - 1).delete(1))), j.log("convert", this.container.innerHTML, c), this.container.innerHTML = "", c } }, { key: "dangerouslyPasteHTML", value: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : d.default.sources.API; if ("string" === typeof e) this.quill.setContents(this.convert(e), t), this.quill.setSelection(0, d.default.sources.SILENT); else { var r = this.convert(t); this.quill.updateContents((new l.default).retain(e).concat(r), n), this.quill.setSelection(e + r.length(), d.default.sources.SILENT) } } }, { key: "onPaste", value: function (e) { var t = this; if (!e.defaultPrevented && this.quill.isEnabled()) { var n = this.quill.getSelection(), r = (new l.default).retain(n.index), i = this.quill.scrollingContainer.scrollTop; this.container.focus(), this.quill.selection.update(d.default.sources.SILENT), setTimeout((function () { r = r.concat(t.convert()).delete(n.length), t.quill.updateContents(r, d.default.sources.USER), t.quill.setSelection(r.length() - n.length, d.default.sources.SILENT), t.quill.scrollingContainer.scrollTop = i, t.quill.focus() }), 1) } } }, { key: "prepareMatching", value: function () { var e = this, t = [], n = []; return this.matchers.forEach((function (r) { var o = i(r, 2), a = o[0], s = o[1]; switch (a) { case Node.TEXT_NODE: n.push(s); break; case Node.ELEMENT_NODE: t.push(s); break; default: [].forEach.call(e.container.querySelectorAll(a), (function (e) { e[z] = e[z] || [], e[z].push(s) })); break } })), [t, n] } }]), t }(g.default); function V(e, t, n) { return "object" === ("undefined" === typeof t ? "undefined" : r(t)) ? Object.keys(t).reduce((function (e, n) { return V(e, n, t[n]) }), e) : e.reduce((function (e, r) { return r.attributes && r.attributes[t] ? e.push(r) : e.insert(r.insert, (0, s.default)({}, S({}, t, n), r.attributes)) }), new l.default) } function I(e) { if (e.nodeType !== Node.ELEMENT_NODE) return {}; var t = "__ql-computed-style"; return e[t] || (e[t] = window.getComputedStyle(e)) } function N(e, t) { for (var n = "", r = e.ops.length - 1; r >= 0 && n.length < t.length; --r) { var i = e.ops[r]; if ("string" !== typeof i.insert) break; n = i.insert + n } return n.slice(-1 * t.length) === t } function R(e) { if (0 === e.childNodes.length) return !1; var t = I(e); return ["block", "list-item"].indexOf(t.display) > -1 } function F(e, t, n) { return e.nodeType === e.TEXT_NODE ? n.reduce((function (t, n) { return n(e, t) }), new l.default) : e.nodeType === e.ELEMENT_NODE ? [].reduce.call(e.childNodes || [], (function (r, i) { var o = F(i, t, n); return i.nodeType === e.ELEMENT_NODE && (o = t.reduce((function (e, t) { return t(i, e) }), o), o = (i[z] || []).reduce((function (e, t) { return t(i, e) }), o)), r.concat(o) }), new l.default) : new l.default } function Y(e, t, n) { return V(n, e, !0) } function $(e, t) { var n = h.default.Attributor.Attribute.keys(e), r = h.default.Attributor.Class.keys(e), i = h.default.Attributor.Style.keys(e), o = {}; return n.concat(r).concat(i).forEach((function (t) { var n = h.default.query(t, h.default.Scope.ATTRIBUTE); null != n && (o[n.attrName] = n.value(e), o[n.attrName]) || (n = P[t], null == n || n.attrName !== t && n.keyName !== t || (o[n.attrName] = n.value(e) || void 0), n = D[t], null == n || n.attrName !== t && n.keyName !== t || (n = D[t], o[n.attrName] = n.value(e) || void 0)) })), Object.keys(o).length > 0 && (t = V(t, o)), t } function B(e, t) { var n = h.default.query(e); if (null == n) return t; if (n.prototype instanceof h.default.Embed) { var r = {}, i = n.value(e); null != i && (r[n.blotName] = i, t = (new l.default).insert(r, n.formats(e))) } else "function" === typeof n.formats && (t = V(t, n.blotName, n.formats(e))); return t } function W(e, t) { return N(t, "\n") || t.insert("\n"), t } function q() { return new l.default } function U(e, t) { var n = h.default.query(e); if (null == n || "list-item" !== n.blotName || !N(t, "\n")) return t; var r = -1, i = e.parentNode; while (!i.classList.contains("ql-clipboard")) "list" === (h.default.query(i) || {}).blotName && (r += 1), i = i.parentNode; return r <= 0 ? t : t.compose((new l.default).retain(t.length() - 1).retain(1, { indent: r })) } function K(e, t) { return N(t, "\n") || (R(e) || t.length() > 0 && e.nextSibling && R(e.nextSibling)) && t.insert("\n"), t } function G(e, t) { if (R(e) && null != e.nextElementSibling && !N(t, "\n\n")) { var n = e.offsetHeight + parseFloat(I(e).marginTop) + parseFloat(I(e).marginBottom); e.nextElementSibling.offsetTop > e.offsetTop + 1.5 * n && t.insert("\n") } return t } function X(e, t) { var n = {}, r = e.style || {}; return r.fontStyle && "italic" === I(e).fontStyle && (n.italic = !0), r.fontWeight && (I(e).fontWeight.startsWith("bold") || parseInt(I(e).fontWeight) >= 700) && (n.bold = !0), Object.keys(n).length > 0 && (t = V(t, n)), parseFloat(r.textIndent || 0) > 0 && (t = (new l.default).insert("\t").concat(t)), t } function J(e, t) { var n = e.data; if ("O:P" === e.parentNode.tagName) return t.insert(n.trim()); if (0 === n.trim().length && e.parentNode.classList.contains("ql-clipboard")) return t; if (!I(e.parentNode).whiteSpace.startsWith("pre")) { var r = function (e, t) { return t = t.replace(/[^\u00a0]/g, ""), t.length < 1 && e ? " " : t }; n = n.replace(/\r\n/g, " ").replace(/\n/g, " "), n = n.replace(/\s\s+/g, r.bind(r, !0)), (null == e.previousSibling && R(e.parentNode) || null != e.previousSibling && R(e.previousSibling)) && (n = n.replace(/^\s+/, r.bind(r, !1))), (null == e.nextSibling && R(e.parentNode) || null != e.nextSibling && R(e.nextSibling)) && (n = n.replace(/\s+$/, r.bind(r, !1))) } return t.insert(n) } H.DEFAULTS = { matchers: [], matchVisual: !0 }, t.default = H, t.matchAttributor = $, t.matchBlot = B, t.matchNewline = K, t.matchSpacing = G, t.matchText = J }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(6), a = s(o); function s(e) { return e && e.__esModule ? e : { default: e } } function c(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function l(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function u(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var h = function (e) { function t() { return c(this, t), l(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return u(t, e), r(t, [{ key: "optimize", value: function (e) { i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "optimize", this).call(this, e), this.domNode.tagName !== this.statics.tagName[0] && this.replaceWith(this.statics.blotName) } }], [{ key: "create", value: function () { return i(t.__proto__ || Object.getPrototypeOf(t), "create", this).call(this) } }, { key: "formats", value: function () { return !0 } }]), t }(a.default); h.blotName = "bold", h.tagName = ["STRONG", "B"], t.default = h }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.addControls = t.default = void 0; var r = function () { function e(e, t) { var n = [], r = !0, i = !1, o = void 0; try { for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done); r = !0)if (n.push(a.value), t && n.length === t) break } catch (c) { i = !0, o = c } finally { try { !r && s["return"] && s["return"]() } finally { if (i) throw o } } return n } return function (t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), o = n(2), a = v(o), s = n(0), c = v(s), l = n(5), u = v(l), h = n(10), f = v(h), d = n(9), p = v(d); function v(e) { return e && e.__esModule ? e : { default: e } } function m(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function g(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function y(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function b(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var x = (0, f.default)("quill:toolbar"), w = function (e) { function t(e, n) { g(this, t); var i, o = y(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n)); if (Array.isArray(o.options.container)) { var a = document.createElement("div"); C(a, o.options.container), e.container.parentNode.insertBefore(a, e.container), o.container = a } else "string" === typeof o.options.container ? o.container = document.querySelector(o.options.container) : o.container = o.options.container; return o.container instanceof HTMLElement ? (o.container.classList.add("ql-toolbar"), o.controls = [], o.handlers = {}, Object.keys(o.options.handlers).forEach((function (e) { o.addHandler(e, o.options.handlers[e]) })), [].forEach.call(o.container.querySelectorAll("button, select"), (function (e) { o.attach(e) })), o.quill.on(u.default.events.EDITOR_CHANGE, (function (e, t) { e === u.default.events.SELECTION_CHANGE && o.update(t) })), o.quill.on(u.default.events.SCROLL_OPTIMIZE, (function () { var e = o.quill.selection.getRange(), t = r(e, 1), n = t[0]; o.update(n) })), o) : (i = x.error("Container required for toolbar", o.options), y(o, i)) } return b(t, e), i(t, [{ key: "addHandler", value: function (e, t) { this.handlers[e] = t } }, { key: "attach", value: function (e) { var t = this, n = [].find.call(e.classList, (function (e) { return 0 === e.indexOf("ql-") })); if (n) { if (n = n.slice("ql-".length), "BUTTON" === e.tagName && e.setAttribute("type", "button"), null == this.handlers[n]) { if (null != this.quill.scroll.whitelist && null == this.quill.scroll.whitelist[n]) return void x.warn("ignoring attaching to disabled format", n, e); if (null == c.default.query(n)) return void x.warn("ignoring attaching to nonexistent format", n, e) } var i = "SELECT" === e.tagName ? "change" : "click"; e.addEventListener(i, (function (i) { var o = void 0; if ("SELECT" === e.tagName) { if (e.selectedIndex < 0) return; var s = e.options[e.selectedIndex]; o = !s.hasAttribute("selected") && (s.value || !1) } else o = !e.classList.contains("ql-active") && (e.value || !e.hasAttribute("value")), i.preventDefault(); t.quill.focus(); var l = t.quill.selection.getRange(), h = r(l, 1), f = h[0]; if (null != t.handlers[n]) t.handlers[n].call(t, o); else if (c.default.query(n).prototype instanceof c.default.Embed) { if (o = prompt("Enter " + n), !o) return; t.quill.updateContents((new a.default).retain(f.index).delete(f.length).insert(m({}, n, o)), u.default.sources.USER) } else t.quill.format(n, o, u.default.sources.USER); t.update(f) })), this.controls.push([n, e]) } } }, { key: "update", value: function (e) { var t = null == e ? {} : this.quill.getFormat(e); this.controls.forEach((function (n) { var i = r(n, 2), o = i[0], a = i[1]; if ("SELECT" === a.tagName) { var s = void 0; if (null == e) s = null; else if (null == t[o]) s = a.querySelector("option[selected]"); else if (!Array.isArray(t[o])) { var c = t[o]; "string" === typeof c && (c = c.replace(/\"/g, '\\"')), s = a.querySelector('option[value="' + c + '"]') } null == s ? (a.value = "", a.selectedIndex = -1) : s.selected = !0 } else if (null == e) a.classList.remove("ql-active"); else if (a.hasAttribute("value")) { var l = t[o] === a.getAttribute("value") || null != t[o] && t[o].toString() === a.getAttribute("value") || null == t[o] && !a.getAttribute("value"); a.classList.toggle("ql-active", l) } else a.classList.toggle("ql-active", null != t[o]) })) } }]), t }(p.default); function _(e, t, n) { var r = document.createElement("button"); r.setAttribute("type", "button"), r.classList.add("ql-" + t), null != n && (r.value = n), e.appendChild(r) } function C(e, t) { Array.isArray(t[0]) || (t = [t]), t.forEach((function (t) { var n = document.createElement("span"); n.classList.add("ql-formats"), t.forEach((function (e) { if ("string" === typeof e) _(n, e); else { var t = Object.keys(e)[0], r = e[t]; Array.isArray(r) ? M(n, t, r) : _(n, t, r) } })), e.appendChild(n) })) } function M(e, t, n) { var r = document.createElement("select"); r.classList.add("ql-" + t), n.forEach((function (e) { var t = document.createElement("option"); !1 !== e ? t.setAttribute("value", e) : t.setAttribute("selected", "selected"), r.appendChild(t) })), e.appendChild(r) } w.DEFAULTS = {}, w.DEFAULTS = { container: null, handlers: { clean: function () { var e = this, t = this.quill.getSelection(); if (null != t) if (0 == t.length) { var n = this.quill.getFormat(); Object.keys(n).forEach((function (t) { null != c.default.query(t, c.default.Scope.INLINE) && e.quill.format(t, !1) })) } else this.quill.removeFormat(t, u.default.sources.USER) }, direction: function (e) { var t = this.quill.getFormat()["align"]; "rtl" === e && null == t ? this.quill.format("align", "right", u.default.sources.USER) : e || "right" !== t || this.quill.format("align", !1, u.default.sources.USER), this.quill.format("direction", e, u.default.sources.USER) }, indent: function (e) { var t = this.quill.getSelection(), n = this.quill.getFormat(t), r = parseInt(n.indent || 0); if ("+1" === e || "-1" === e) { var i = "+1" === e ? 1 : -1; "rtl" === n.direction && (i *= -1), this.quill.format("indent", r + i, u.default.sources.USER) } }, link: function (e) { !0 === e && (e = prompt("Enter link URL:")), this.quill.format("link", e, u.default.sources.USER) }, list: function (e) { var t = this.quill.getSelection(), n = this.quill.getFormat(t); "check" === e ? "checked" === n["list"] || "unchecked" === n["list"] ? this.quill.format("list", !1, u.default.sources.USER) : this.quill.format("list", "unchecked", u.default.sources.USER) : this.quill.format("list", e, u.default.sources.USER) } } }, t.default = w, t.addControls = C }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <polyline class="ql-even ql-stroke" points="5 7 3 9 5 11"></polyline> <polyline class="ql-even ql-stroke" points="13 7 15 9 13 11"></polyline> <line class=ql-stroke x1=10 x2=8 y1=5 y2=13></line> </svg>' }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(28), a = s(o); function s(e) { return e && e.__esModule ? e : { default: e } } function c(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function l(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function u(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var h = function (e) { function t(e, n) { c(this, t); var r = l(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e)); return r.label.innerHTML = n, r.container.classList.add("ql-color-picker"), [].slice.call(r.container.querySelectorAll(".ql-picker-item"), 0, 7).forEach((function (e) { e.classList.add("ql-primary") })), r } return u(t, e), r(t, [{ key: "buildItem", value: function (e) { var n = i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "buildItem", this).call(this, e); return n.style.backgroundColor = e.getAttribute("value") || "", n } }, { key: "selectItem", value: function (e, n) { i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "selectItem", this).call(this, e, n); var r = this.label.querySelector(".ql-color-label"), o = e && e.getAttribute("data-value") || ""; r && ("line" === r.tagName ? r.style.stroke = o : r.style.fill = o) } }]), t }(a.default); t.default = h }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(28), a = s(o); function s(e) { return e && e.__esModule ? e : { default: e } } function c(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function l(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function u(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var h = function (e) { function t(e, n) { c(this, t); var r = l(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e)); return r.container.classList.add("ql-icon-picker"), [].forEach.call(r.container.querySelectorAll(".ql-picker-item"), (function (e) { e.innerHTML = n[e.getAttribute("data-value") || ""] })), r.defaultItem = r.container.querySelector(".ql-selected"), r.selectItem(r.defaultItem), r } return u(t, e), r(t, [{ key: "selectItem", value: function (e, n) { i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "selectItem", this).call(this, e, n), e = e || this.defaultItem, this.label.innerHTML = e.innerHTML } }]), t }(a.default); t.default = h }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(); function i(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var o = function () { function e(t, n) { var r = this; i(this, e), this.quill = t, this.boundsContainer = n || document.body, this.root = t.addContainer("ql-tooltip"), this.root.innerHTML = this.constructor.TEMPLATE, this.quill.root === this.quill.scrollingContainer && this.quill.root.addEventListener("scroll", (function () { r.root.style.marginTop = -1 * r.quill.root.scrollTop + "px" })), this.hide() } return r(e, [{ key: "hide", value: function () { this.root.classList.add("ql-hidden") } }, { key: "position", value: function (e) { var t = e.left + e.width / 2 - this.root.offsetWidth / 2, n = e.bottom + this.quill.root.scrollTop; this.root.style.left = t + "px", this.root.style.top = n + "px", this.root.classList.remove("ql-flip"); var r = this.boundsContainer.getBoundingClientRect(), i = this.root.getBoundingClientRect(), o = 0; if (i.right > r.right && (o = r.right - i.right, this.root.style.left = t + o + "px"), i.left < r.left && (o = r.left - i.left, this.root.style.left = t + o + "px"), i.bottom > r.bottom) { var a = i.bottom - i.top, s = e.bottom - e.top + a; this.root.style.top = n - s + "px", this.root.classList.add("ql-flip") } return o } }, { key: "show", value: function () { this.root.classList.remove("ql-editing"), this.root.classList.remove("ql-hidden") } }]), e }(); t.default = o }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { var n = [], r = !0, i = !1, o = void 0; try { for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done); r = !0)if (n.push(a.value), t && n.length === t) break } catch (c) { i = !0, o = c } finally { try { !r && s["return"] && s["return"]() } finally { if (i) throw o } } return n } return function (t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), a = n(3), s = g(a), c = n(8), l = g(c), u = n(43), h = g(u), f = n(27), d = g(f), p = n(15), v = n(41), m = g(v); function g(e) { return e && e.__esModule ? e : { default: e } } function y(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function b(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function x(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var w = [[{ header: ["1", "2", "3", !1] }], ["bold", "italic", "underline", "link"], [{ list: "ordered" }, { list: "bullet" }], ["clean"]], _ = function (e) { function t(e, n) { y(this, t), null != n.modules.toolbar && null == n.modules.toolbar.container && (n.modules.toolbar.container = w); var r = b(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n)); return r.quill.container.classList.add("ql-snow"), r } return x(t, e), o(t, [{ key: "extendToolbar", value: function (e) { e.container.classList.add("ql-snow"), this.buildButtons([].slice.call(e.container.querySelectorAll("button")), m.default), this.buildPickers([].slice.call(e.container.querySelectorAll("select")), m.default), this.tooltip = new C(this.quill, this.options.bounds), e.container.querySelector(".ql-link") && this.quill.keyboard.addBinding({ key: "K", shortKey: !0 }, (function (t, n) { e.handlers["link"].call(e, !n.format.link) })) } }]), t }(h.default); _.DEFAULTS = (0, s.default)(!0, {}, h.default.DEFAULTS, { modules: { toolbar: { handlers: { link: function (e) { if (e) { var t = this.quill.getSelection(); if (null == t || 0 == t.length) return; var n = this.quill.getText(t); /^\S+@\S+\.\S+$/.test(n) && 0 !== n.indexOf("mailto:") && (n = "mailto:" + n); var r = this.quill.theme.tooltip; r.edit("link", n) } else this.quill.format("link", !1) } } } } }); var C = function (e) { function t(e, n) { y(this, t); var r = b(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n)); return r.preview = r.root.querySelector("a.ql-preview"), r } return x(t, e), o(t, [{ key: "listen", value: function () { var e = this; i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "listen", this).call(this), this.root.querySelector("a.ql-action").addEventListener("click", (function (t) { e.root.classList.contains("ql-editing") ? e.save() : e.edit("link", e.preview.textContent), t.preventDefault() })), this.root.querySelector("a.ql-remove").addEventListener("click", (function (t) { if (null != e.linkRange) { var n = e.linkRange; e.restoreFocus(), e.quill.formatText(n, "link", !1, l.default.sources.USER), delete e.linkRange } t.preventDefault(), e.hide() })), this.quill.on(l.default.events.SELECTION_CHANGE, (function (t, n, i) { if (null != t) { if (0 === t.length && i === l.default.sources.USER) { var o = e.quill.scroll.descendant(d.default, t.index), a = r(o, 2), s = a[0], c = a[1]; if (null != s) { e.linkRange = new p.Range(t.index - c, s.length()); var u = d.default.formats(s.domNode); return e.preview.textContent = u, e.preview.setAttribute("href", u), e.show(), void e.position(e.quill.getBounds(e.linkRange)) } } else delete e.linkRange; e.hide() } })) } }, { key: "show", value: function () { i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "show", this).call(this), this.root.removeAttribute("data-mode") } }]), t }(u.BaseTooltip); C.TEMPLATE = ['<a class="ql-preview" rel="noopener noreferrer" target="_blank" href="about:blank"></a>', '<input type="text" data-formula="e=mc^2" data-link="https://quilljs.com" data-video="Embed URL">', '<a class="ql-action"></a>', '<a class="ql-remove"></a>'].join(""), t.default = _ }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(29), i = ne(r), o = n(36), a = n(38), s = n(64), c = n(65), l = ne(c), u = n(66), h = ne(u), f = n(67), d = ne(f), p = n(37), v = n(26), m = n(39), g = n(40), y = n(56), b = ne(y), x = n(68), w = ne(x), _ = n(27), C = ne(_), M = n(69), O = ne(M), k = n(70), S = ne(k), T = n(71), A = ne(T), L = n(72), j = ne(L), z = n(73), E = ne(z), P = n(13), D = ne(P), H = n(74), V = ne(H), I = n(75), N = ne(I), R = n(57), F = ne(R), Y = n(41), $ = ne(Y), B = n(28), W = ne(B), q = n(59), U = ne(q), K = n(60), G = ne(K), X = n(61), J = ne(X), Q = n(108), Z = ne(Q), ee = n(62), te = ne(ee); function ne(e) { return e && e.__esModule ? e : { default: e } } i.default.register({ "attributors/attribute/direction": a.DirectionAttribute, "attributors/class/align": o.AlignClass, "attributors/class/background": p.BackgroundClass, "attributors/class/color": v.ColorClass, "attributors/class/direction": a.DirectionClass, "attributors/class/font": m.FontClass, "attributors/class/size": g.SizeClass, "attributors/style/align": o.AlignStyle, "attributors/style/background": p.BackgroundStyle, "attributors/style/color": v.ColorStyle, "attributors/style/direction": a.DirectionStyle, "attributors/style/font": m.FontStyle, "attributors/style/size": g.SizeStyle }, !0), i.default.register({ "formats/align": o.AlignClass, "formats/direction": a.DirectionClass, "formats/indent": s.IndentClass, "formats/background": p.BackgroundStyle, "formats/color": v.ColorStyle, "formats/font": m.FontClass, "formats/size": g.SizeClass, "formats/blockquote": l.default, "formats/code-block": D.default, "formats/header": h.default, "formats/list": d.default, "formats/bold": b.default, "formats/code": P.Code, "formats/italic": w.default, "formats/link": C.default, "formats/script": O.default, "formats/strike": S.default, "formats/underline": A.default, "formats/image": j.default, "formats/video": E.default, "formats/list/item": f.ListItem, "modules/formula": V.default, "modules/syntax": N.default, "modules/toolbar": F.default, "themes/bubble": Z.default, "themes/snow": te.default, "ui/icons": $.default, "ui/picker": W.default, "ui/icon-picker": G.default, "ui/color-picker": U.default, "ui/tooltip": J.default }, !0), t.default = i.default }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.IndentClass = void 0; var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(0), a = s(o); function s(e) { return e && e.__esModule ? e : { default: e } } function c(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function l(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function u(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var h = function (e) { function t() { return c(this, t), l(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return u(t, e), r(t, [{ key: "add", value: function (e, n) { if ("+1" === n || "-1" === n) { var r = this.value(e) || 0; n = "+1" === n ? r + 1 : r - 1 } return 0 === n ? (this.remove(e), !0) : i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "add", this).call(this, e, n) } }, { key: "canAdd", value: function (e, n) { return i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "canAdd", this).call(this, e, n) || i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "canAdd", this).call(this, e, parseInt(n)) } }, { key: "value", value: function (e) { return parseInt(i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "value", this).call(this, e)) || void 0 } }]), t }(a.default.Attributor.Class), f = new h("indent", "ql-indent", { scope: a.default.Scope.BLOCK, whitelist: [1, 2, 3, 4, 5, 6, 7, 8] }); t.IndentClass = f }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(4), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function s(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function c(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var l = function (e) { function t() { return a(this, t), s(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return c(t, e), t }(i.default); l.blotName = "blockquote", l.tagName = "blockquote", t.default = l }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = n(4), o = a(i); function a(e) { return e && e.__esModule ? e : { default: e } } function s(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function c(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function l(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var u = function (e) { function t() { return s(this, t), c(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return l(t, e), r(t, null, [{ key: "formats", value: function (e) { return this.tagName.indexOf(e.tagName) + 1 } }]), t }(o.default); u.blotName = "header", u.tagName = ["H1", "H2", "H3", "H4", "H5", "H6"], t.default = u }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.default = t.ListItem = void 0; var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(0), a = h(o), s = n(4), c = h(s), l = n(25), u = h(l); function h(e) { return e && e.__esModule ? e : { default: e } } function f(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function d(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function p(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function v(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var m = function (e) { function t() { return d(this, t), p(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return v(t, e), r(t, [{ key: "format", value: function (e, n) { e !== g.blotName || n ? i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "format", this).call(this, e, n) : this.replaceWith(a.default.create(this.statics.scope)) } }, { key: "remove", value: function () { null == this.prev && null == this.next ? this.parent.remove() : i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "remove", this).call(this) } }, { key: "replaceWith", value: function (e, n) { return this.parent.isolate(this.offset(this.parent), this.length()), e === this.parent.statics.blotName ? (this.parent.replaceWith(e, n), this) : (this.parent.unwrap(), i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "replaceWith", this).call(this, e, n)) } }], [{ key: "formats", value: function (e) { return e.tagName === this.tagName ? void 0 : i(t.__proto__ || Object.getPrototypeOf(t), "formats", this).call(this, e) } }]), t }(c.default); m.blotName = "list-item", m.tagName = "LI"; var g = function (e) { function t(e) { d(this, t); var n = p(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e)), r = function (t) { if (t.target.parentNode === e) { var r = n.statics.formats(e), i = a.default.find(t.target); "checked" === r ? i.format("list", "unchecked") : "unchecked" === r && i.format("list", "checked") } }; return e.addEventListener("touchstart", r), e.addEventListener("mousedown", r), n } return v(t, e), r(t, null, [{ key: "create", value: function (e) { var n = "ordered" === e ? "OL" : "UL", r = i(t.__proto__ || Object.getPrototypeOf(t), "create", this).call(this, n); return "checked" !== e && "unchecked" !== e || r.setAttribute("data-checked", "checked" === e), r } }, { key: "formats", value: function (e) { return "OL" === e.tagName ? "ordered" : "UL" === e.tagName ? e.hasAttribute("data-checked") ? "true" === e.getAttribute("data-checked") ? "checked" : "unchecked" : "bullet" : void 0 } }]), r(t, [{ key: "format", value: function (e, t) { this.children.length > 0 && this.children.tail.format(e, t) } }, { key: "formats", value: function () { return f({}, this.statics.blotName, this.statics.formats(this.domNode)) } }, { key: "insertBefore", value: function (e, n) { if (e instanceof m) i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "insertBefore", this).call(this, e, n); else { var r = null == n ? this.length() : n.offset(this), o = this.split(r); o.parent.insertBefore(e, o) } } }, { key: "optimize", value: function (e) { i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "optimize", this).call(this, e); var n = this.next; null != n && n.prev === this && n.statics.blotName === this.statics.blotName && n.domNode.tagName === this.domNode.tagName && n.domNode.getAttribute("data-checked") === this.domNode.getAttribute("data-checked") && (n.moveChildren(this), n.remove()) } }, { key: "replace", value: function (e) { if (e.statics.blotName !== this.statics.blotName) { var n = a.default.create(this.statics.defaultChild); e.moveChildren(n), this.appendChild(n) } i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "replace", this).call(this, e) } }]), t }(u.default); g.blotName = "list", g.scope = a.default.Scope.BLOCK_BLOT, g.tagName = ["OL", "UL"], g.defaultChild = "list-item", g.allowedChildren = [m], t.ListItem = m, t.default = g }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(56), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function s(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function c(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var l = function (e) { function t() { return a(this, t), s(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return c(t, e), t }(i.default); l.blotName = "italic", l.tagName = ["EM", "I"], t.default = l }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(6), a = s(o); function s(e) { return e && e.__esModule ? e : { default: e } } function c(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function l(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function u(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var h = function (e) { function t() { return c(this, t), l(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return u(t, e), r(t, null, [{ key: "create", value: function (e) { return "super" === e ? document.createElement("sup") : "sub" === e ? document.createElement("sub") : i(t.__proto__ || Object.getPrototypeOf(t), "create", this).call(this, e) } }, { key: "formats", value: function (e) { return "SUB" === e.tagName ? "sub" : "SUP" === e.tagName ? "super" : void 0 } }]), t }(a.default); h.blotName = "script", h.tagName = ["SUB", "SUP"], t.default = h }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(6), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function s(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function c(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var l = function (e) { function t() { return a(this, t), s(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return c(t, e), t }(i.default); l.blotName = "strike", l.tagName = "S", t.default = l }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(6), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function s(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function c(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var l = function (e) { function t() { return a(this, t), s(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return c(t, e), t }(i.default); l.blotName = "underline", l.tagName = "U", t.default = l }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(0), a = c(o), s = n(27); function c(e) { return e && e.__esModule ? e : { default: e } } function l(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function u(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function h(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var f = ["alt", "height", "width"], d = function (e) { function t() { return l(this, t), u(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return h(t, e), r(t, [{ key: "format", value: function (e, n) { f.indexOf(e) > -1 ? n ? this.domNode.setAttribute(e, n) : this.domNode.removeAttribute(e) : i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "format", this).call(this, e, n) } }], [{ key: "create", value: function (e) { var n = i(t.__proto__ || Object.getPrototypeOf(t), "create", this).call(this, e); return "string" === typeof e && n.setAttribute("src", this.sanitize(e)), n } }, { key: "formats", value: function (e) { return f.reduce((function (t, n) { return e.hasAttribute(n) && (t[n] = e.getAttribute(n)), t }), {}) } }, { key: "match", value: function (e) { return /\.(jpe?g|gif|png)$/.test(e) || /^data:image\/.+;base64/.test(e) } }, { key: "sanitize", value: function (e) { return (0, s.sanitize)(e, ["http", "https", "data"]) ? e : "//:0" } }, { key: "value", value: function (e) { return e.getAttribute("src") } }]), t }(a.default.Embed); d.blotName = "image", d.tagName = "IMG", t.default = d }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(4), a = n(27), s = c(a); function c(e) { return e && e.__esModule ? e : { default: e } } function l(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function u(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function h(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var f = ["height", "width"], d = function (e) { function t() { return l(this, t), u(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return h(t, e), r(t, [{ key: "format", value: function (e, n) { f.indexOf(e) > -1 ? n ? this.domNode.setAttribute(e, n) : this.domNode.removeAttribute(e) : i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "format", this).call(this, e, n) } }], [{ key: "create", value: function (e) { var n = i(t.__proto__ || Object.getPrototypeOf(t), "create", this).call(this, e); return n.setAttribute("frameborder", "0"), n.setAttribute("allowfullscreen", !0), n.setAttribute("src", this.sanitize(e)), n } }, { key: "formats", value: function (e) { return f.reduce((function (t, n) { return e.hasAttribute(n) && (t[n] = e.getAttribute(n)), t }), {}) } }, { key: "sanitize", value: function (e) { return s.default.sanitize(e) } }, { key: "value", value: function (e) { return e.getAttribute("src") } }]), t }(o.BlockEmbed); d.blotName = "video", d.className = "ql-video", d.tagName = "IFRAME", t.default = d }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.default = t.FormulaBlot = void 0; var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(35), a = h(o), s = n(5), c = h(s), l = n(9), u = h(l); function h(e) { return e && e.__esModule ? e : { default: e } } function f(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function d(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function p(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var v = function (e) { function t() { return f(this, t), d(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return p(t, e), r(t, null, [{ key: "create", value: function (e) { var n = i(t.__proto__ || Object.getPrototypeOf(t), "create", this).call(this, e); return "string" === typeof e && (window.katex.render(e, n, { throwOnError: !1, errorColor: "#f00" }), n.setAttribute("data-value", e)), n } }, { key: "value", value: function (e) { return e.getAttribute("data-value") } }]), t }(a.default); v.blotName = "formula", v.className = "ql-formula", v.tagName = "SPAN"; var m = function (e) { function t() { f(this, t); var e = d(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this)); if (null == window.katex) throw new Error("Formula module requires KaTeX."); return e } return p(t, e), r(t, null, [{ key: "register", value: function () { c.default.register(v, !0) } }]), t }(u.default); t.FormulaBlot = v, t.default = m }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.default = t.CodeToken = t.CodeBlock = void 0; var r = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), i = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, o = n(0), a = d(o), s = n(5), c = d(s), l = n(9), u = d(l), h = n(13), f = d(h); function d(e) { return e && e.__esModule ? e : { default: e } } function p(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function v(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function m(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var g = function (e) { function t() { return p(this, t), v(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return m(t, e), r(t, [{ key: "replaceWith", value: function (e) { this.domNode.textContent = this.domNode.textContent, this.attach(), i(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "replaceWith", this).call(this, e) } }, { key: "highlight", value: function (e) { var t = this.domNode.textContent; this.cachedText !== t && ((t.trim().length > 0 || null == this.cachedText) && (this.domNode.innerHTML = e(t), this.domNode.normalize(), this.attach()), this.cachedText = t) } }]), t }(f.default); g.className = "ql-syntax"; var y = new a.default.Attributor.Class("token", "hljs", { scope: a.default.Scope.INLINE }), b = function (e) { function t(e, n) { p(this, t); var r = v(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n)); if ("function" !== typeof r.options.highlight) throw new Error("Syntax module requires highlight.js. Please include the library on the page before Quill."); var i = null; return r.quill.on(c.default.events.SCROLL_OPTIMIZE, (function () { clearTimeout(i), i = setTimeout((function () { r.highlight(), i = null }), r.options.interval) })), r.highlight(), r } return m(t, e), r(t, null, [{ key: "register", value: function () { c.default.register(y, !0), c.default.register(g, !0) } }]), r(t, [{ key: "highlight", value: function () { var e = this; if (!this.quill.selection.composing) { this.quill.update(c.default.sources.USER); var t = this.quill.getSelection(); this.quill.scroll.descendants(g).forEach((function (t) { t.highlight(e.options.highlight) })), this.quill.update(c.default.sources.SILENT), null != t && this.quill.setSelection(t, c.default.sources.SILENT) } } }]), t }(u.default); b.DEFAULTS = { highlight: function () { return null == window.hljs ? null : function (e) { var t = window.hljs.highlightAuto(e); return t.value } }(), interval: 1e3 }, t.CodeBlock = g, t.CodeToken = y, t.default = b }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=3 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=13 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=9 y1=4 y2=4></line> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=14 x2=4 y1=14 y2=14></line> <line class=ql-stroke x1=12 x2=6 y1=4 y2=4></line> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=5 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=9 y1=4 y2=4></line> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=3 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=3 y1=4 y2=4></line> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <g class="ql-fill ql-color-label"> <polygon points="6 6.868 6 6 5 6 5 7 5.942 7 6 6.868"></polygon> <rect height=1 width=1 x=4 y=4></rect> <polygon points="6.817 5 6 5 6 6 6.38 6 6.817 5"></polygon> <rect height=1 width=1 x=2 y=6></rect> <rect height=1 width=1 x=3 y=5></rect> <rect height=1 width=1 x=4 y=7></rect> <polygon points="4 11.439 4 11 3 11 3 12 3.755 12 4 11.439"></polygon> <rect height=1 width=1 x=2 y=12></rect> <rect height=1 width=1 x=2 y=9></rect> <rect height=1 width=1 x=2 y=15></rect> <polygon points="4.63 10 4 10 4 11 4.192 11 4.63 10"></polygon> <rect height=1 width=1 x=3 y=8></rect> <path d=M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z></path> <path d=M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z></path> <path d=M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z></path> <rect height=1 width=1 x=12 y=2></rect> <rect height=1 width=1 x=11 y=3></rect> <path d=M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z></path> <rect height=1 width=1 x=2 y=3></rect> <rect height=1 width=1 x=6 y=2></rect> <rect height=1 width=1 x=3 y=2></rect> <rect height=1 width=1 x=5 y=3></rect> <rect height=1 width=1 x=9 y=2></rect> <rect height=1 width=1 x=15 y=14></rect> <polygon points="13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174"></polygon> <rect height=1 width=1 x=13 y=7></rect> <rect height=1 width=1 x=15 y=5></rect> <rect height=1 width=1 x=14 y=6></rect> <rect height=1 width=1 x=15 y=8></rect> <rect height=1 width=1 x=14 y=9></rect> <path d=M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z></path> <rect height=1 width=1 x=14 y=3></rect> <polygon points="12 6.868 12 6 11.62 6 12 6.868"></polygon> <rect height=1 width=1 x=15 y=2></rect> <rect height=1 width=1 x=12 y=5></rect> <rect height=1 width=1 x=13 y=4></rect> <polygon points="12.933 9 13 9 13 8 12.495 8 12.933 9"></polygon> <rect height=1 width=1 x=9 y=14></rect> <rect height=1 width=1 x=8 y=15></rect> <path d=M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z></path> <rect height=1 width=1 x=5 y=15></rect> <path d=M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z></path> <rect height=1 width=1 x=11 y=15></rect> <path d=M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z></path> <rect height=1 width=1 x=14 y=15></rect> <rect height=1 width=1 x=15 y=11></rect> </g> <polyline class=ql-stroke points="5.5 13 9 5 12.5 13"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=11 y2=11></line> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <rect class="ql-fill ql-stroke" height=3 width=3 x=4 y=5></rect> <rect class="ql-fill ql-stroke" height=3 width=3 x=11 y=5></rect> <path class="ql-even ql-fill ql-stroke" d=M7,8c0,4.031-3,5-3,5></path> <path class="ql-even ql-fill ql-stroke" d=M14,8c0,4.031-3,5-3,5></path> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <path class=ql-stroke d=M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z></path> <path class=ql-stroke d=M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z></path> </svg>' }, function (e, t) { e.exports = '<svg class="" viewbox="0 0 18 18"> <line class=ql-stroke x1=5 x2=13 y1=3 y2=3></line> <line class=ql-stroke x1=6 x2=9.35 y1=12 y2=3></line> <line class=ql-stroke x1=11 x2=15 y1=11 y2=15></line> <line class=ql-stroke x1=15 x2=11 y1=11 y2=15></line> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=7 x=2 y=14></rect> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <line class="ql-color-label ql-stroke ql-transparent" x1=3 x2=15 y1=15 y2=15></line> <polyline class=ql-stroke points="5.5 11 9 3 12.5 11"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=9 y2=9></line> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <polygon class="ql-stroke ql-fill" points="3 11 5 9 3 7 3 11"></polygon> <line class="ql-stroke ql-fill" x1=15 x2=11 y1=4 y2=4></line> <path class=ql-fill d=M11,3a3,3,0,0,0,0,6h1V3H11Z></path> <rect class=ql-fill height=11 width=1 x=11 y=4></rect> <rect class=ql-fill height=11 width=1 x=13 y=4></rect> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <polygon class="ql-stroke ql-fill" points="15 12 13 10 15 8 15 12"></polygon> <line class="ql-stroke ql-fill" x1=9 x2=5 y1=4 y2=4></line> <path class=ql-fill d=M5,3A3,3,0,0,0,5,9H6V3H5Z></path> <rect class=ql-fill height=11 width=1 x=5 y=4></rect> <rect class=ql-fill height=11 width=1 x=7 y=4></rect> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <path class=ql-fill d=M14,16H4a1,1,0,0,1,0-2H14A1,1,0,0,1,14,16Z /> <path class=ql-fill d=M14,4H4A1,1,0,0,1,4,2H14A1,1,0,0,1,14,4Z /> <rect class=ql-fill x=3 y=6 width=12 height=6 rx=1 ry=1 /> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <path class=ql-fill d=M13,16H5a1,1,0,0,1,0-2h8A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H5A1,1,0,0,1,5,2h8A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=2 y=6 width=14 height=6 rx=1 ry=1 /> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <path class=ql-fill d=M15,8H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,8Z /> <path class=ql-fill d=M15,12H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,12Z /> <path class=ql-fill d=M15,16H5a1,1,0,0,1,0-2H15A1,1,0,0,1,15,16Z /> <path class=ql-fill d=M15,4H5A1,1,0,0,1,5,2H15A1,1,0,0,1,15,4Z /> <rect class=ql-fill x=2 y=6 width=8 height=6 rx=1 ry=1 /> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <path class=ql-fill d=M5,8H3A1,1,0,0,1,3,6H5A1,1,0,0,1,5,8Z /> <path class=ql-fill d=M5,12H3a1,1,0,0,1,0-2H5A1,1,0,0,1,5,12Z /> <path class=ql-fill d=M13,16H3a1,1,0,0,1,0-2H13A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H3A1,1,0,0,1,3,2H13A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=8 y=6 width=8 height=6 rx=1 ry=1 transform="translate(24 18) rotate(-180)"/> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <path class=ql-fill d=M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z></path> <rect class=ql-fill height=1.6 rx=0.8 ry=0.8 width=5 x=5.15 y=6.2></rect> <path class=ql-fill d=M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z></path> </svg>' }, function (e, t) { e.exports = '<svg viewBox="0 0 18 18"> <path class=ql-fill d=M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm6.06787,9.209H14.98975V7.59863a.54085.54085,0,0,0-.605-.60547h-.62744a1.01119,1.01119,0,0,0-.748.29688L11.645,8.56641a.5435.5435,0,0,0-.022.8584l.28613.30762a.53861.53861,0,0,0,.84717.0332l.09912-.08789a1.2137,1.2137,0,0,0,.2417-.35254h.02246s-.01123.30859-.01123.60547V13.209H12.041a.54085.54085,0,0,0-.605.60547v.43945a.54085.54085,0,0,0,.605.60547h4.02686a.54085.54085,0,0,0,.605-.60547v-.43945A.54085.54085,0,0,0,16.06787,13.209Z /> </svg>' }, function (e, t) { e.exports = '<svg viewBox="0 0 18 18"> <path class=ql-fill d=M16.73975,13.81445v.43945a.54085.54085,0,0,1-.605.60547H11.855a.58392.58392,0,0,1-.64893-.60547V14.0127c0-2.90527,3.39941-3.42187,3.39941-4.55469a.77675.77675,0,0,0-.84717-.78125,1.17684,1.17684,0,0,0-.83594.38477c-.2749.26367-.561.374-.85791.13184l-.4292-.34082c-.30811-.24219-.38525-.51758-.1543-.81445a2.97155,2.97155,0,0,1,2.45361-1.17676,2.45393,2.45393,0,0,1,2.68408,2.40918c0,2.45312-3.1792,2.92676-3.27832,3.93848h2.79443A.54085.54085,0,0,1,16.73975,13.81445ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z /> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=7 x2=13 y1=4 y2=4></line> <line class=ql-stroke x1=5 x2=11 y1=14 y2=14></line> <line class=ql-stroke x1=8 x2=10 y1=14 y2=4></line> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <rect class=ql-stroke height=10 width=12 x=3 y=4></rect> <circle class=ql-fill cx=6 cy=7 r=1></circle> <polyline class="ql-even ql-fill" points="5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12"></polyline> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class="ql-fill ql-stroke" points="3 7 3 11 5 9 3 7"></polyline> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points="5 7 5 11 3 9 5 7"></polyline> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=7 x2=11 y1=7 y2=11></line> <path class="ql-even ql-stroke" d=M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z></path> <path class="ql-even ql-stroke" d=M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z></path> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=7 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=7 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=7 x2=15 y1=14 y2=14></line> <line class="ql-stroke ql-thin" x1=2.5 x2=4.5 y1=5.5 y2=5.5></line> <path class=ql-fill d=M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z></path> <path class="ql-stroke ql-thin" d=M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156></path> <path class="ql-stroke ql-thin" d=M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109></path> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <line class=ql-stroke x1=6 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=6 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=6 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=3 y1=4 y2=4></line> <line class=ql-stroke x1=3 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=3 y1=14 y2=14></line> </svg>' }, function (e, t) { e.exports = '<svg class="" viewbox="0 0 18 18"> <line class=ql-stroke x1=9 x2=15 y1=4 y2=4></line> <polyline class=ql-stroke points="3 4 4 5 6 3"></polyline> <line class=ql-stroke x1=9 x2=15 y1=14 y2=14></line> <polyline class=ql-stroke points="3 14 4 15 6 13"></polyline> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points="3 9 4 10 6 8"></polyline> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <path class=ql-fill d=M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z /> <path class=ql-fill d=M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z /> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <path class=ql-fill d=M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z /> <path class=ql-fill d=M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z /> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <line class="ql-stroke ql-thin" x1=15.5 x2=2.5 y1=8.5 y2=9.5></line> <path class=ql-fill d=M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z></path> <path class=ql-fill d=M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z></path> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <path class=ql-stroke d=M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3></path> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=12 x=3 y=15></rect> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <rect class=ql-stroke height=12 width=12 x=3 y=3></rect> <rect class=ql-fill height=12 width=1 x=5 y=3></rect> <rect class=ql-fill height=12 width=1 x=12 y=3></rect> <rect class=ql-fill height=2 width=8 x=5 y=8></rect> <rect class=ql-fill height=1 width=3 x=3 y=5></rect> <rect class=ql-fill height=1 width=3 x=3 y=7></rect> <rect class=ql-fill height=1 width=3 x=3 y=10></rect> <rect class=ql-fill height=1 width=3 x=3 y=12></rect> <rect class=ql-fill height=1 width=3 x=12 y=5></rect> <rect class=ql-fill height=1 width=3 x=12 y=7></rect> <rect class=ql-fill height=1 width=3 x=12 y=10></rect> <rect class=ql-fill height=1 width=3 x=12 y=12></rect> </svg>' }, function (e, t) { e.exports = '<svg viewbox="0 0 18 18"> <polygon class=ql-stroke points="7 11 9 13 11 11 7 11"></polygon> <polygon class=ql-stroke points="7 7 9 5 11 7 7 7"></polygon> </svg>' }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.default = t.BubbleTooltip = void 0; var r = function e(t, n, r) { null === t && (t = Function.prototype); var i = Object.getOwnPropertyDescriptor(t, n); if (void 0 === i) { var o = Object.getPrototypeOf(t); return null === o ? void 0 : e(o, n, r) } if ("value" in i) return i.value; var a = i.get; return void 0 !== a ? a.call(r) : void 0 }, i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(), o = n(3), a = p(o), s = n(8), c = p(s), l = n(43), u = p(l), h = n(15), f = n(41), d = p(f); function p(e) { return e && e.__esModule ? e : { default: e } } function v(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function m(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function g(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var y = [["bold", "italic", "link"], [{ header: 1 }, { header: 2 }, "blockquote"]], b = function (e) { function t(e, n) { v(this, t), null != n.modules.toolbar && null == n.modules.toolbar.container && (n.modules.toolbar.container = y); var r = m(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n)); return r.quill.container.classList.add("ql-bubble"), r } return g(t, e), i(t, [{ key: "extendToolbar", value: function (e) { this.tooltip = new x(this.quill, this.options.bounds), this.tooltip.root.appendChild(e.container), this.buildButtons([].slice.call(e.container.querySelectorAll("button")), d.default), this.buildPickers([].slice.call(e.container.querySelectorAll("select")), d.default) } }]), t }(u.default); b.DEFAULTS = (0, a.default)(!0, {}, u.default.DEFAULTS, { modules: { toolbar: { handlers: { link: function (e) { e ? this.quill.theme.tooltip.edit() : this.quill.format("link", !1) } } } } }); var x = function (e) { function t(e, n) { v(this, t); var r = m(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n)); return r.quill.on(c.default.events.EDITOR_CHANGE, (function (e, t, n, i) { if (e === c.default.events.SELECTION_CHANGE) if (null != t && t.length > 0 && i === c.default.sources.USER) { r.show(), r.root.style.left = "0px", r.root.style.width = "", r.root.style.width = r.root.offsetWidth + "px"; var o = r.quill.getLines(t.index, t.length); if (1 === o.length) r.position(r.quill.getBounds(t)); else { var a = o[o.length - 1], s = r.quill.getIndex(a), l = Math.min(a.length() - 1, t.index + t.length - s), u = r.quill.getBounds(new h.Range(s, l)); r.position(u) } } else document.activeElement !== r.textbox && r.quill.hasFocus() && r.hide() })), r } return g(t, e), i(t, [{ key: "listen", value: function () { var e = this; r(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "listen", this).call(this), this.root.querySelector(".ql-close").addEventListener("click", (function () { e.root.classList.remove("ql-editing") })), this.quill.on(c.default.events.SCROLL_OPTIMIZE, (function () { setTimeout((function () { if (!e.root.classList.contains("ql-hidden")) { var t = e.quill.getSelection(); null != t && e.position(e.quill.getBounds(t)) } }), 1) })) } }, { key: "cancel", value: function () { this.show() } }, { key: "position", value: function (e) { var n = r(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "position", this).call(this, e), i = this.root.querySelector(".ql-tooltip-arrow"); if (i.style.marginLeft = "", 0 === n) return n; i.style.marginLeft = -1 * n - i.offsetWidth / 2 + "px" } }]), t }(l.BaseTooltip); x.TEMPLATE = ['<span class="ql-tooltip-arrow"></span>', '<div class="ql-tooltip-editor">', '<input type="text" data-formula="e=mc^2" data-link="https://quilljs.com" data-video="Embed URL">', '<a class="ql-close"></a>', "</div>"].join(""), t.BubbleTooltip = x, t.default = b }, function (e, t, n) { e.exports = n(63) }])["default"] }))
+                    }).call(this, n("b639").Buffer)
+                }, 9363: function (e, t, n) { "use strict"; var r = n("4d0b"), i = n.n(r); i.a }, "93ed": function (e, t, n) { var r = n("4245"); function i(e) { var t = r(this, e)["delete"](e); return this.size -= t ? 1 : 0, t } e.exports = i }, "93ff": function (e, t, n) { e.exports = { default: n("54a1"), __esModule: !0 } }, "948e": function (e, t, n) { }, "94eb": function (e, t, n) { "use strict"; var r = n("18ce"), i = function () { }, o = function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.beforeEnter, o = t.enter, a = t.afterEnter, s = t.leave, c = t.afterLeave, l = t.appear, u = void 0 === l || l, h = t.tag, f = t.nativeOn, d = { props: { appear: u, css: !1 }, on: { beforeEnter: n || i, enter: o || function (t, n) { Object(r["a"])(t, e + "-enter", n) }, afterEnter: a || i, leave: s || function (t, n) { Object(r["a"])(t, e + "-leave", n) }, afterLeave: c || i }, nativeOn: f }; return h && (d.tag = h), d }; t["a"] = o }, "950a": function (e, t, n) { var r = n("30c9"); function i(e, t) { return function (n, i) { if (null == n) return n; if (!r(n)) return e(n, i); var o = n.length, a = t ? o : -1, s = Object(n); while (t ? a-- : ++a < o) if (!1 === i(s[a], a, s)) break; return n } } e.exports = i }, 9520: function (e, t, n) { var r = n("3729"), i = n("1a8c"), o = "[object AsyncFunction]", a = "[object Function]", s = "[object GeneratorFunction]", c = "[object Proxy]"; function l(e) { if (!i(e)) return !1; var t = r(e); return t == a || t == s || t == o || t == c } e.exports = l }, "953d": function (e, t, n) { !function (t, r) { e.exports = r(n("9339")) }(0, (function (e) { return function (e) { function t(r) { if (n[r]) return n[r].exports; var i = n[r] = { i: r, l: !1, exports: {} }; return e[r].call(i.exports, i, i.exports, t), i.l = !0, i.exports } var n = {}; return t.m = e, t.c = n, t.i = function (e) { return e }, t.d = function (e, n, r) { t.o(e, n) || Object.defineProperty(e, n, { configurable: !1, enumerable: !0, get: r }) }, t.n = function (e) { var n = e && e.__esModule ? function () { return e.default } : function () { return e }; return t.d(n, "a", n), n }, t.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, t.p = "/", t(t.s = 2) }([function (t, n) { t.exports = e }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(4), i = n.n(r), o = n(6), a = n(5), s = a(i.a, o.a, !1, null, null, null); t.default = s.exports }, function (e, t, n) { "use strict"; function r(e) { return e && e.__esModule ? e : { default: e } } Object.defineProperty(t, "__esModule", { value: !0 }), t.install = t.quillEditor = t.Quill = void 0; var i = n(0), o = r(i), a = n(1), s = r(a), c = window.Quill || o.default, l = function (e, t) { t && (s.default.props.globalOptions.default = function () { return t }), e.component(s.default.name, s.default) }, u = { Quill: c, quillEditor: s.default, install: l }; t.default = u, t.Quill = c, t.quillEditor = s.default, t.install = l }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.default = { theme: "snow", boundary: document.body, modules: { toolbar: [["bold", "italic", "underline", "strike"], ["blockquote", "code-block"], [{ header: 1 }, { header: 2 }], [{ list: "ordered" }, { list: "bullet" }], [{ script: "sub" }, { script: "super" }], [{ indent: "-1" }, { indent: "+1" }], [{ direction: "rtl" }], [{ size: ["small", !1, "large", "huge"] }], [{ header: [1, 2, 3, 4, 5, 6, !1] }], [{ color: [] }, { background: [] }], [{ font: [] }], [{ align: [] }], ["clean"], ["link", "image", "video"]] }, placeholder: "Insert text here ...", readOnly: !1 } }, function (e, t, n) { "use strict"; function r(e) { return e && e.__esModule ? e : { default: e } } Object.defineProperty(t, "__esModule", { value: !0 }); var i = n(0), o = r(i), a = n(3), s = r(a), c = window.Quill || o.default; "function" != typeof Object.assign && Object.defineProperty(Object, "assign", { value: function (e, t) { if (null == e) throw new TypeError("Cannot convert undefined or null to object"); for (var n = Object(e), r = 1; r < arguments.length; r++) { var i = arguments[r]; if (null != i) for (var o in i) Object.prototype.hasOwnProperty.call(i, o) && (n[o] = i[o]) } return n }, writable: !0, configurable: !0 }), t.default = { name: "quill-editor", data: function () { return { _options: {}, _content: "", defaultOptions: s.default } }, props: { content: String, value: String, disabled: { type: Boolean, default: !1 }, options: { type: Object, required: !1, default: function () { return {} } }, globalOptions: { type: Object, required: !1, default: function () { return {} } } }, mounted: function () { this.initialize() }, beforeDestroy: function () { this.quill = null, delete this.quill }, methods: { initialize: function () { var e = this; this.$el && (this._options = Object.assign({}, this.defaultOptions, this.globalOptions, this.options), this.quill = new c(this.$refs.editor, this._options), this.quill.enable(!1), (this.value || this.content) && this.quill.pasteHTML(this.value || this.content), this.disabled || this.quill.enable(!0), this.quill.on("selection-change", (function (t) { t ? e.$emit("focus", e.quill) : e.$emit("blur", e.quill) })), this.quill.on("text-change", (function (t, n, r) { var i = e.$refs.editor.children[0].innerHTML, o = e.quill, a = e.quill.getText(); "<p><br></p>" === i && (i = ""), e._content = i, e.$emit("input", e._content), e.$emit("change", { html: i, text: a, quill: o }) })), this.$emit("ready", this.quill)) } }, watch: { content: function (e, t) { this.quill && (e && e !== this._content ? (this._content = e, this.quill.pasteHTML(e)) : e || this.quill.setText("")) }, value: function (e, t) { this.quill && (e && e !== this._content ? (this._content = e, this.quill.pasteHTML(e)) : e || this.quill.setText("")) }, disabled: function (e, t) { this.quill && this.quill.enable(!e) } } } }, function (e, t) { e.exports = function (e, t, n, r, i, o) { var a, s = e = e || {}, c = typeof e.default; "object" !== c && "function" !== c || (a = e, s = e.default); var l, u = "function" == typeof s ? s.options : s; if (t && (u.render = t.render, u.staticRenderFns = t.staticRenderFns, u._compiled = !0), n && (u.functional = !0), i && (u._scopeId = i), o ? (l = function (e) { e = e || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext, e || "undefined" == typeof __VUE_SSR_CONTEXT__ || (e = __VUE_SSR_CONTEXT__), r && r.call(this, e), e && e._registeredComponents && e._registeredComponents.add(o) }, u._ssrRegister = l) : r && (l = r), l) { var h = u.functional, f = h ? u.render : u.beforeCreate; h ? (u._injectStyles = l, u.render = function (e, t) { return l.call(t), f(e, t) }) : u.beforeCreate = f ? [].concat(f, l) : [l] } return { esModule: a, exports: s, options: u } } }, function (e, t, n) { "use strict"; var r = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "quill-editor" }, [e._t("toolbar"), e._v(" "), n("div", { ref: "editor" })], 2) }, i = [], o = { render: r, staticRenderFns: i }; t.a = o }]) })) }, "957c": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t) { var n = e.split("_"); return t % 10 === 1 && t % 100 !== 11 ? n[0] : t % 10 >= 2 && t % 10 <= 4 && (t % 100 < 10 || t % 100 >= 20) ? n[1] : n[2] } function n(e, n, r) { var i = { ss: n ? "褋械泻褍薪写邪_褋械泻褍薪写褘_褋械泻褍薪写" : "褋械泻褍薪写褍_褋械泻褍薪写褘_褋械泻褍薪写", mm: n ? "屑懈薪褍褌邪_屑懈薪褍褌褘_屑懈薪褍褌" : "屑懈薪褍褌褍_屑懈薪褍褌褘_屑懈薪褍褌", hh: "褔邪褋_褔邪褋邪_褔邪褋芯胁", dd: "写械薪褜_写薪褟_写薪械泄", MM: "屑械褋褟褑_屑械褋褟褑邪_屑械褋褟褑械胁", yy: "谐芯写_谐芯写邪_谢械褌" }; return "m" === r ? n ? "屑懈薪褍褌邪" : "屑懈薪褍褌褍" : e + " " + t(i[r], +e) } var r = [/^褟薪胁/i, /^褎械胁/i, /^屑邪褉/i, /^邪锌褉/i, /^屑邪[泄褟]/i, /^懈褞薪/i, /^懈褞谢/i, /^邪胁谐/i, /^褋械薪/i, /^芯泻褌/i, /^薪芯褟/i, /^写械泻/i], i = e.defineLocale("ru", { months: { format: "褟薪胁邪褉褟_褎械胁褉邪谢褟_屑邪褉褌邪_邪锌褉械谢褟_屑邪褟_懈褞薪褟_懈褞谢褟_邪胁谐褍褋褌邪_褋械薪褌褟斜褉褟_芯泻褌褟斜褉褟_薪芯褟斜褉褟_写械泻邪斜褉褟".split("_"), standalone: "褟薪胁邪褉褜_褎械胁褉邪谢褜_屑邪褉褌_邪锌褉械谢褜_屑邪泄_懈褞薪褜_懈褞谢褜_邪胁谐褍褋褌_褋械薪褌褟斜褉褜_芯泻褌褟斜褉褜_薪芯褟斜褉褜_写械泻邪斜褉褜".split("_") }, monthsShort: { format: "褟薪胁._褎械胁褉._屑邪褉._邪锌褉._屑邪褟_懈褞薪褟_懈褞谢褟_邪胁谐._褋械薪褌._芯泻褌._薪芯褟斜._写械泻.".split("_"), standalone: "褟薪胁._褎械胁褉._屑邪褉褌_邪锌褉._屑邪泄_懈褞薪褜_懈褞谢褜_邪胁谐._褋械薪褌._芯泻褌._薪芯褟斜._写械泻.".split("_") }, weekdays: { standalone: "胁芯褋泻褉械褋械薪褜械_锌芯薪械写械谢褜薪懈泻_胁褌芯褉薪懈泻_褋褉械写邪_褔械褌胁械褉谐_锌褟褌薪懈褑邪_褋褍斜斜芯褌邪".split("_"), format: "胁芯褋泻褉械褋械薪褜械_锌芯薪械写械谢褜薪懈泻_胁褌芯褉薪懈泻_褋褉械写褍_褔械褌胁械褉谐_锌褟褌薪懈褑褍_褋褍斜斜芯褌褍".split("_"), isFormat: /\[ ?[袙胁] ?(?:锌褉芯褕谢褍褞|褋谢械写褍褞褖褍褞|褝褌褍)? ?] ?dddd/ }, weekdaysShort: "胁褋_锌薪_胁褌_褋褉_褔褌_锌褌_褋斜".split("_"), weekdaysMin: "胁褋_锌薪_胁褌_褋褉_褔褌_锌褌_褋斜".split("_"), monthsParse: r, longMonthsParse: r, shortMonthsParse: r, monthsRegex: /^(褟薪胁邪褉[褜褟]|褟薪胁\.?|褎械胁褉邪谢[褜褟]|褎械胁褉?\.?|屑邪褉褌邪?|屑邪褉\.?|邪锌褉械谢[褜褟]|邪锌褉\.?|屑邪[泄褟]|懈褞薪[褜褟]|懈褞薪\.?|懈褞谢[褜褟]|懈褞谢\.?|邪胁谐褍褋褌邪?|邪胁谐\.?|褋械薪褌褟斜褉[褜褟]|褋械薪褌?\.?|芯泻褌褟斜褉[褜褟]|芯泻褌\.?|薪芯褟斜褉[褜褟]|薪芯褟斜?\.?|写械泻邪斜褉[褜褟]|写械泻\.?)/i, monthsShortRegex: /^(褟薪胁邪褉[褜褟]|褟薪胁\.?|褎械胁褉邪谢[褜褟]|褎械胁褉?\.?|屑邪褉褌邪?|屑邪褉\.?|邪锌褉械谢[褜褟]|邪锌褉\.?|屑邪[泄褟]|懈褞薪[褜褟]|懈褞薪\.?|懈褞谢[褜褟]|懈褞谢\.?|邪胁谐褍褋褌邪?|邪胁谐\.?|褋械薪褌褟斜褉[褜褟]|褋械薪褌?\.?|芯泻褌褟斜褉[褜褟]|芯泻褌\.?|薪芯褟斜褉[褜褟]|薪芯褟斜?\.?|写械泻邪斜褉[褜褟]|写械泻\.?)/i, monthsStrictRegex: /^(褟薪胁邪褉[褟褜]|褎械胁褉邪谢[褟褜]|屑邪褉褌邪?|邪锌褉械谢[褟褜]|屑邪[褟泄]|懈褞薪[褟褜]|懈褞谢[褟褜]|邪胁谐褍褋褌邪?|褋械薪褌褟斜褉[褟褜]|芯泻褌褟斜褉[褟褜]|薪芯褟斜褉[褟褜]|写械泻邪斜褉[褟褜])/i, monthsShortStrictRegex: /^(褟薪胁\.|褎械胁褉?\.|屑邪褉[褌.]|邪锌褉\.|屑邪[褟泄]|懈褞薪[褜褟.]|懈褞谢[褜褟.]|邪胁谐\.|褋械薪褌?\.|芯泻褌\.|薪芯褟斜?\.|写械泻\.)/i, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY 谐.", LLL: "D MMMM YYYY 谐., H:mm", LLLL: "dddd, D MMMM YYYY 谐., H:mm" }, calendar: { sameDay: "[小械谐芯写薪褟, 胁] LT", nextDay: "[袟邪胁褌褉邪, 胁] LT", lastDay: "[袙褔械褉邪, 胁] LT", nextWeek: function (e) { if (e.week() === this.week()) return 2 === this.day() ? "[袙芯] dddd, [胁] LT" : "[袙] dddd, [胁] LT"; switch (this.day()) { case 0: return "[袙 褋谢械写褍褞褖械械] dddd, [胁] LT"; case 1: case 2: case 4: return "[袙 褋谢械写褍褞褖懈泄] dddd, [胁] LT"; case 3: case 5: case 6: return "[袙 褋谢械写褍褞褖褍褞] dddd, [胁] LT" } }, lastWeek: function (e) { if (e.week() === this.week()) return 2 === this.day() ? "[袙芯] dddd, [胁] LT" : "[袙] dddd, [胁] LT"; switch (this.day()) { case 0: return "[袙 锌褉芯褕谢芯械] dddd, [胁] LT"; case 1: case 2: case 4: return "[袙 锌褉芯褕谢褘泄] dddd, [胁] LT"; case 3: case 5: case 6: return "[袙 锌褉芯褕谢褍褞] dddd, [胁] LT" } }, sameElse: "L" }, relativeTime: { future: "褔械褉械蟹 %s", past: "%s 薪邪蟹邪写", s: "薪械褋泻芯谢褜泻芯 褋械泻褍薪写", ss: n, m: n, mm: n, h: "褔邪褋", hh: n, d: "写械薪褜", dd: n, M: "屑械褋褟褑", MM: n, y: "谐芯写", yy: n }, meridiemParse: /薪芯褔懈|褍褌褉邪|写薪褟|胁械褔械褉邪/i, isPM: function (e) { return /^(写薪褟|胁械褔械褉邪)$/.test(e) }, meridiem: function (e, t, n) { return e < 4 ? "薪芯褔懈" : e < 12 ? "褍褌褉邪" : e < 17 ? "写薪褟" : "胁械褔械褉邪" }, dayOfMonthOrdinalParse: /\d{1,2}-(泄|谐芯|褟)/, ordinal: function (e, t) { switch (t) { case "M": case "d": case "DDD": return e + "-泄"; case "D": return e + "-谐芯"; case "w": case "W": return e + "-褟"; default: return e } }, week: { dow: 1, doy: 4 } }); return i
+                    }))
+                }, "958b": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t, n, r) { switch (n) { case "s": return t ? "褏褝写褏褝薪 褋械泻褍薪写" : "褏褝写褏褝薪 褋械泻褍薪写褘薪"; case "ss": return e + (t ? " 褋械泻褍薪写" : " 褋械泻褍薪写褘薪"); case "m": case "mm": return e + (t ? " 屑懈薪褍褌" : " 屑懈薪褍褌褘薪"); case "h": case "hh": return e + (t ? " 褑邪谐" : " 褑邪谐懈泄薪"); case "d": case "dd": return e + (t ? " 萤写萤褉" : " 萤写褉懈泄薪"); case "M": case "MM": return e + (t ? " 褋邪褉" : " 褋邪褉褘薪"); case "y": case "yy": return e + (t ? " 卸懈谢" : " 卸懈谢懈泄薪"); default: return e } } var n = e.defineLocale("mn", { months: "袧褝谐写爷谐褝褝褉 褋邪褉_啸芯褢褉写褍谐邪邪褉 褋邪褉_袚褍褉邪胁写褍谐邪邪褉 褋邪褉_袛萤褉萤胁写爷谐褝褝褉 褋邪褉_孝邪胁写褍谐邪邪褉 褋邪褉_袟褍褉谐邪写褍谐邪邪褉 褋邪褉_袛芯谢写褍谐邪邪褉 褋邪褉_袧邪泄屑写褍谐邪邪褉 褋邪褉_袝褋写爷谐褝褝褉 褋邪褉_袗褉邪胁写褍谐邪邪褉 褋邪褉_袗褉胁邪薪 薪褝谐写爷谐褝褝褉 褋邪褉_袗褉胁邪薪 褏芯褢褉写褍谐邪邪褉 褋邪褉".split("_"), monthsShort: "1 褋邪褉_2 褋邪褉_3 褋邪褉_4 褋邪褉_5 褋邪褉_6 褋邪褉_7 褋邪褉_8 褋邪褉_9 褋邪褉_10 褋邪褉_11 褋邪褉_12 褋邪褉".split("_"), monthsParseExact: !0, weekdays: "袧褟屑_袛邪胁邪邪_袦褟谐屑邪褉_袥褏邪谐胁邪_袩爷褉褝胁_袘邪邪褋邪薪_袘褟屑斜邪".split("_"), weekdaysShort: "袧褟屑_袛邪胁_袦褟谐_袥褏邪_袩爷褉_袘邪邪_袘褟屑".split("_"), weekdaysMin: "袧褟_袛邪_袦褟_袥褏_袩爷_袘邪_袘褟".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY-MM-DD", LL: "YYYY 芯薪褘 MMMM褘薪 D", LLL: "YYYY 芯薪褘 MMMM褘薪 D HH:mm", LLLL: "dddd, YYYY 芯薪褘 MMMM褘薪 D HH:mm" }, meridiemParse: /耶莹|耶啸/i, isPM: function (e) { return "耶啸" === e }, meridiem: function (e, t, n) { return e < 12 ? "耶莹" : "耶啸" }, calendar: { sameDay: "[莹薪萤萤写萤褉] LT", nextDay: "[袦邪褉谐邪邪褕] LT", nextWeek: "[袠褉褝褏] dddd LT", lastDay: "[莹褔懈谐写萤褉] LT", lastWeek: "[莹薪谐萤褉褋萤薪] dddd LT", sameElse: "L" }, relativeTime: { future: "%s 写邪褉邪邪", past: "%s 萤屑薪萤", s: t, ss: t, m: t, mm: t, h: t, hh: t, d: t, dd: t, M: t, MM: t, y: t, yy: t }, dayOfMonthOrdinalParse: /\d{1,2} 萤写萤褉/, ordinal: function (e, t) { switch (t) { case "d": case "D": case "DDD": return e + " 萤写萤褉"; default: return e } } }); return n
+                    }))
+                }, "95ae": function (e, t, n) { var r = n("100e"), i = n("9638"), o = n("9aff"), a = n("9934"), s = Object.prototype, c = s.hasOwnProperty, l = r((function (e, t) { e = Object(e); var n = -1, r = t.length, l = r > 2 ? t[2] : void 0; l && o(t[0], t[1], l) && (r = 1); while (++n < r) { var u = t[n], h = a(u), f = -1, d = h.length; while (++f < d) { var p = h[f], v = e[p]; (void 0 === v || i(v, s[p]) && !c.call(e, p)) && (e[p] = u[p]) } } return e })); e.exports = l }, "95d5": function (e, t, n) { var r = n("40c3"), i = n("5168")("iterator"), o = n("481b"); e.exports = n("584a").isIterable = function (e) { var t = Object(e); return void 0 !== t[i] || "@@iterator" in t || o.hasOwnProperty(r(t)) } }, 9609: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 0: "-褔爷", 1: "-褔懈", 2: "-褔懈", 3: "-褔爷", 4: "-褔爷", 5: "-褔懈", 6: "-褔褘", 7: "-褔懈", 8: "-褔懈", 9: "-褔褍", 10: "-褔褍", 20: "-褔褘", 30: "-褔褍", 40: "-褔褘", 50: "-褔爷", 60: "-褔褘", 70: "-褔懈", 80: "-褔懈", 90: "-褔褍", 100: "-褔爷" }, n = e.defineLocale("ky", { months: "褟薪胁邪褉褜_褎械胁褉邪谢褜_屑邪褉褌_邪锌褉械谢褜_屑邪泄_懈褞薪褜_懈褞谢褜_邪胁谐褍褋褌_褋械薪褌褟斜褉褜_芯泻褌褟斜褉褜_薪芯褟斜褉褜_写械泻邪斜褉褜".split("_"), monthsShort: "褟薪胁_褎械胁_屑邪褉褌_邪锌褉_屑邪泄_懈褞薪褜_懈褞谢褜_邪胁谐_褋械薪_芯泻褌_薪芯褟_写械泻".split("_"), weekdays: "袞械泻褕械屑斜懈_袛爷泄褕萤屑斜爷_楔械泄褕械屑斜懈_楔邪褉褕械屑斜懈_袘械泄褕械屑斜懈_袞褍屑邪_袠褕械屑斜懈".split("_"), weekdaysShort: "袞械泻_袛爷泄_楔械泄_楔邪褉_袘械泄_袞褍屑_袠褕械".split("_"), weekdaysMin: "袞泻_袛泄_楔泄_楔褉_袘泄_袞屑_袠褕".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[袘爷谐爷薪 褋邪邪褌] LT", nextDay: "[协褉褌械遥 褋邪邪褌] LT", nextWeek: "dddd [褋邪邪褌] LT", lastDay: "[袣械褔褝褝 褋邪邪褌] LT", lastWeek: "[莹褌泻萤薪 邪锌褌邪薪褘薪] dddd [泻爷薪爷] [褋邪邪褌] LT", sameElse: "L" }, relativeTime: { future: "%s 懈褔懈薪写械", past: "%s 屑褍褉褍薪", s: "斜懈褉薪械褔械 褋械泻褍薪写", ss: "%d 褋械泻褍薪写", m: "斜懈褉 屑爷薪萤褌", mm: "%d 屑爷薪萤褌", h: "斜懈褉 褋邪邪褌", hh: "%d 褋邪邪褌", d: "斜懈褉 泻爷薪", dd: "%d 泻爷薪", M: "斜懈褉 邪泄", MM: "%d 邪泄", y: "斜懈褉 卸褘谢", yy: "%d 卸褘谢" }, dayOfMonthOrdinalParse: /\d{1,2}-(褔懈|褔褘|褔爷|褔褍)/, ordinal: function (e) { var n = e % 10, r = e >= 100 ? 100 : null; return e + (t[e] || t[n] || t[r]) }, week: { dow: 1, doy: 7 } }); return n
+                    }))
+                }, 9638: function (e, t) { function n(e, t) { return e === t || e !== e && t !== t } e.exports = n }, "966f": function (e, t, n) { var r = n("7e64"), i = n("c05f"), o = 1, a = 2; function s(e, t, n, s) { var c = n.length, l = c, u = !s; if (null == e) return !l; e = Object(e); while (c--) { var h = n[c]; if (u && h[2] ? h[1] !== e[h[0]] : !(h[0] in e)) return !1 } while (++c < l) { h = n[c]; var f = h[0], d = e[f], p = h[1]; if (u && h[2]) { if (void 0 === d && !(f in e)) return !1 } else { var v = new r; if (s) var m = s(d, p, f, e, t, v); if (!(void 0 === m ? i(p, d, o | a, s, v) : m)) return !1 } } return !0 } e.exports = s }, "96bd": function (e, t) { !function (e) { var t, n, r, i, o, a, s = '<svg><symbol id="icon-chaifen" viewBox="0 0 1024 1024"><path d="M719.4624 472.5248l0 246.9376L472.4736 719.4624 472.4736 472.5248 719.4624 472.5248M764.0064 427.9808 427.9296 427.9808l0 336.0256 336.0256 0L763.9552 427.9808 764.0064 427.9808z"  ></path><path d="M551.4752 304.5376l0 246.8864L304.5888 551.424 304.5888 304.5376 551.4752 304.5376M596.0704 259.9936 259.9936 259.9936l0 336.0256 336.0256 0L596.0192 259.9936 596.0704 259.9936z"  ></path><path d="M51.2 102.4l921.6 0 0 51.2-921.6 0 0-51.2Z"  ></path><path d="M51.2 870.4l102.4 0 0 102.4-102.4 0 0-102.4Z"  ></path><path d="M51.2 870.4l921.6 0 0 51.2-921.6 0 0-51.2Z"  ></path><path d="M102.4 51.2l51.2 0 0 921.6-51.2 0 0-921.6Z"  ></path><path d="M870.4 51.2l51.2 0 0 921.6-51.2 0 0-921.6Z"  ></path><path d="M51.2 51.2l102.4 0 0 102.4-102.4 0 0-102.4Z"  ></path><path d="M460.8 51.2l102.4 0 0 102.4-102.4 0 0-102.4Z"  ></path><path d="M870.4 51.2l102.4 0 0 102.4-102.4 0 0-102.4Z"  ></path><path d="M460.8 870.4l102.4 0 0 102.4-102.4 0 0-102.4Z"  ></path><path d="M870.4 870.4l102.4 0 0 102.4-102.4 0 0-102.4Z"  ></path><path d="M51.2 460.8l102.4 0 0 102.4-102.4 0 0-102.4Z"  ></path><path d="M870.4 460.8l102.4 0 0 102.4-102.4 0 0-102.4Z"  ></path></symbol><symbol id="icon-chexiao" viewBox="0 0 1024 1024"><path d="M248.035556 112.014222a7.964444 7.964444 0 0 1 7.964444 7.964445v87.267555a397.994667 397.994667 0 1 1-141.767111 319.146667l-0.170667-6.428445a7.793778 7.793778 0 0 1 7.395556-7.964444h56.661333a7.964444 7.964444 0 0 1 7.964445 7.566222v0.455111A325.973333 325.973333 0 1 0 310.101333 256h81.92a7.964444 7.964444 0 0 1 7.964445 7.964444v56.035556a7.964444 7.964444 0 0 1-7.964445 7.964444H192a7.964444 7.964444 0 0 1-7.964444-7.964444V119.978667a7.964444 7.964444 0 0 1 7.964444-7.964445h55.978667z" fill="#1D1F24" ></path></symbol><symbol id="icon-quanping" viewBox="0 0 1024 1024"><path d="M903.964444 112.014222a7.964444 7.964444 0 0 1 8.021334 7.736889v784.270222a7.964444 7.964444 0 0 1-7.736889 7.964445H119.978667a7.964444 7.964444 0 0 1-7.964445-7.736889V119.978667a7.964444 7.964444 0 0 1 7.736889-7.964445h784.270222z m-63.943111 71.964445H183.978667v656.042666h656.042666V183.978667z m-387.185777 352.711111l39.480888 39.480889a7.964444 7.964444 0 0 1 0 11.320889l-128.512 128.512H442.026667a7.964444 7.964444 0 0 1 7.964444 7.964444v56.035556a7.964444 7.964444 0 0 1-7.964444 7.964444H244.053333a7.964444 7.964444 0 0 1-8.078222-7.964444v-197.973334a7.964444 7.964444 0 0 1 8.021333-8.021333h55.978667a7.964444 7.964444 0 0 1 8.021333 7.964444v88.177778l133.518223-133.518222a7.964444 7.964444 0 0 1 11.377777 0z m335.189333-292.693334v197.973334a7.964444 7.964444 0 0 1-8.021333 8.021333h-55.978667a7.964444 7.964444 0 0 1-8.021333-7.964444V353.507556l-133.916445 133.859555a7.964444 7.964444 0 0 1-11.264 0l-39.594667-39.594667a7.964444 7.964444 0 0 1 0-11.320888l128.455112-128.455112H581.973333a7.964444 7.964444 0 0 1-7.964444-7.964444v-56.035556a7.964444 7.964444 0 0 1 7.964444-7.964444h197.973334a7.964444 7.964444 0 0 1 8.078222 7.964444z" fill="#1D1F24" ></path></symbol><symbol id="icon-zhongzuo" viewBox="0 0 1024 1024"><path d="M775.964444 112.014222a7.964444 7.964444 0 0 0-7.964444 7.964445v87.267555a397.994667 397.994667 0 1 0 141.767111 319.146667l0.170667-6.428445a7.793778 7.793778 0 0 0-7.395556-7.964444h-56.661333a7.964444 7.964444 0 0 0-7.964445 7.566222v0.455111a325.973333 325.973333 0 1 1-124.017777-264.021333h-81.92a7.964444 7.964444 0 0 0-7.964445 7.964444v56.035556c0 4.437333 3.584 7.964444 7.964445 7.964444h200.021333a7.964444 7.964444 0 0 0 7.964444-7.964444V119.978667a7.964444 7.964444 0 0 0-7.964444-7.964445h-55.978667z" fill="#1D1F24" ></path></symbol><symbol id="icon-zujian" viewBox="0 0 1024 1024"><path d="M430.528 72.96c4.416 0 8 3.648 8 8.064v96h146.944v-96c0-4.48 3.584-8 8-8h56c4.48 0 8 3.584 8 8v96h183.552c4.288 0 7.872 3.392 8 7.68V366.592h93.952c4.48 0 8 3.584 8 8v56a8 8 0 0 1-8 8h-93.952V548.48h93.952c4.48 0 8 3.584 8 8v56a8 8 0 0 1-8 8h-93.952v220.544a8 8 0 0 1-7.744 8h-183.808v93.952a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8v-93.952H438.528v93.952a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8v-93.952H184.96a8 8 0 0 1-8-7.744v-220.8h-96a8 8 0 0 1-8-8v-56c0-4.416 3.584-8 8-8h96V438.528h-96a8 8 0 0 1-8-8v-56c0-4.48 3.584-8 8-8h96V184.96c0-4.352 3.392-7.872 7.68-8H366.592v-96c0-4.48 3.584-8 8-8h56z m346.496 176H248.96v528h528V248.96z m-126.08 120.064c4.416 0 7.936 3.392 8.064 7.68v274.24a8 8 0 0 1-7.744 8.064H376.96a8 8 0 0 1-8-7.744V376.96c0-4.352 3.392-7.872 7.68-8h274.24z m-64 72h-145.92v145.92h145.92v-145.92z" fill="#1D1F24" ></path></symbol><symbol id="icon-bianji2" viewBox="0 0 1024 1024"><path d="M170.666667 910.222222H113.777778V113.777778h56.888889v796.444444z m739.555555 0h-56.888889V113.777778h56.888889v796.444444z" fill="#1D1F24" ></path><path d="M739.555556 910.222222H284.444444V113.777778h455.111112v796.444444z m-56.888889-56.888889V170.666667H341.333333v682.666666h341.333334z" fill="#1D1F24" ></path></symbol><symbol id="icon-tabs" viewBox="0 0 1024 1024"><path d="M853.333333 170.666667H170.666667a85.333333 85.333333 0 0 0-85.333334 85.333333v512a85.333333 85.333333 0 0 0 85.333334 85.333333h682.666666a85.333333 85.333333 0 0 0 85.333334-85.333333V256a85.333333 85.333333 0 0 0-85.333334-85.333333z m0 597.333333H170.666667V298.666667a42.666667 42.666667 0 0 1 42.666666-42.666667h213.333334a42.666667 42.666667 0 0 1 42.666666 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667h341.333333z m0-426.666667h-298.666666V298.666667a42.666667 42.666667 0 0 1 42.666666-42.666667h213.333334a42.666667 42.666667 0 0 1 42.666666 42.666667z"  ></path></symbol><symbol id="icon-LC_icon_edit_line_1" viewBox="0 0 1024 1024"><path d="M64 896 64 128c0-35.312 28.752-64 64-64l640 0c35.312 0 64 28.688 64 64l0 376.248 64-64L896 128c0-70.688-57.312-128-128-128L128 0C57.312 0 0 57.312 0 128l0 768c0 70.688 57.312 128 128 128l352 0 0-64L128 960C92.752 960 64 931.312 64 896zM704 192 192 192l0 64 512 0L704 192zM704 320 192 320l0 64 512 0L704 320zM704 448 192 448l0 64 512 0L704 448zM192 640l256 0 0-64L192 576 192 640zM1005.248 576 960 530.752c-12.504-12.504-28.872-18.752-45.248-18.752s-32.752 6.248-45.248 18.752l-274.752 274.752C582.248 818 544 866.344 544 882.72L512 1024l141.248-32c0 0 64.752-38.248 77.248-50.752l274.752-274.752C1030.248 641.504 1030.248 600.968 1005.248 576zM707.936 918.56c-3.624 3.44-16.16 11.904-31.472 21.656l-82.904-82.904c8.504-11.656 17.968-23.376 23.816-29.184l206.872-206.872 90.504 90.504L707.936 918.56z"  ></path></symbol><symbol id="icon-edit1" viewBox="0 0 1024 1024"><path d="M413.8 253.4c23.1 0 41.9-18.7 41.9-41.9s-18.7-41.9-41.9-41.9-41.8 18.8-41.8 41.9 18.7 41.9 41.8 41.9z m0-55.8c7.7 0 14 6.3 14 14s-6.3 14-14 14-14-6.3-14-14 6.3-14 14-14z m-223.2 55.8c23.1 0 41.9-18.7 41.9-41.9s-18.7-41.9-41.9-41.9-41.9 18.7-41.9 41.9 18.8 41.9 41.9 41.9z m0-55.8c7.7 0 14 6.3 14 14s-6.3 14-14 14-14-6.3-14-14 6.3-14 14-14z m111.6 55.8c23.1 0 41.9-18.7 41.9-41.9s-18.7-41.9-41.9-41.9-41.9 18.7-41.9 41.9 18.8 41.9 41.9 41.9z m0-55.8c7.7 0 14 6.3 14 14s-6.3 14-14 14-14-6.3-14-14 6.3-14 14-14zM930.1 72H92.9C77.5 72 65 84.5 65 99.9v837.2c0 15.4 12.5 27.9 27.9 27.9h837.2c15.4 0 27.9-12.5 27.9-27.9V99.9c0-15.4-12.5-27.9-27.9-27.9z m0 865.1H92.9v-586h837.2v586z m0-613.9H92.9V99.9h837.2v223.3zM171.5 654.1l142.1 142.1c5.5 5.5 14.3 5.5 19.8 0s5.5-14.3 0-19.8L191.3 634.3l142.1-142.1c5.5-5.5 5.5-14.3 0-19.8s-14.3-5.5-19.8 0L171.5 614.5l-19.8 19.8 19.8 19.8z m515.3 142.1c5.5 5.5 14.3 5.5 19.8 0l142.1-142.1 19.8-19.8-19.8-19.8-142.1-142.1c-5.5-5.5-14.3-5.5-19.8 0s-5.5 14.3 0 19.8l142.1 142.1-142.1 142.1c-5.5 5.5-5.5 14.4 0 19.8z m-299.3 33c6.7 3.9 15.3 1.6 19.1-5.1l211-365.5c3.9-6.7 1.6-15.3-5.1-19.1-6.7-3.9-15.3-1.6-19.1 5.1l-211 365.5c-3.9 6.7-1.6 15.2 5.1 19.1z"  ></path></symbol><symbol id="icon-edit-" viewBox="0 0 1024 1024"><path d="M356.12672 870.13376A105.96352 105.96352 0 0 1 280.69888 901.12l-121.56928-0.49152a35.96288 35.96288 0 0 1-35.75808-35.75808L122.88 743.30112a105.96352 105.96352 0 0 1 30.98624-75.42784L672.0512 146.26816a79.11424 79.11424 0 0 1 111.90272-0.43008l94.0032 94.0032a79.11424 79.11424 0 0 1 0 111.88224l-521.8304 518.41024zM752.78336 368.64L819.2 304.27136 719.72864 204.8 655.36 271.21664 752.78336 368.64zM298.72128 134.88128L430.08 266.24l-163.84 163.84-131.35872-131.35872a40.96 40.96 0 0 1 0-57.93792l105.90208-105.90208a40.96 40.96 0 0 1 57.93792 0z m426.55744 754.23744L593.92 757.76l163.84-163.84 131.35872 131.35872a40.96 40.96 0 0 1 0 57.93792l-105.90208 105.90208a40.96 40.96 0 0 1-57.93792 0z"  ></path></symbol><symbol id="icon-juxingkaobei" viewBox="0 0 1024 1024"><path d="M128.692 127.99v191.05H319.04V127.99H128.692z m127.261 127.963h-64.169v-64.169h64.169v64.169zM511.333 704.223v191.416h385.792V704.223H511.333zM832 832H576.112v-64.198H832V832zM384.075 127.99v191.05h512.099V127.99H384.075z m448.087 127.963H448.087v-64.169h384.075v64.169zM511.333 448.209v191.416H896.23V448.209H511.333z m319.922 127.776H575.961v-64.198h255.294v64.198zM192.037 319.041h64.012v512.68h-64.012z"  ></path><path d="M256.05 767.802h255.284v63.919H256.05zM256.05 512h255.284v63.381H256.05z"  ></path></symbol><symbol id="icon-tree" viewBox="0 0 1024 1024"><path d="M490.666667 716.8h401.066666c25.6 0 46.933333 21.333333 46.933334 51.2v76.8c0 25.6-21.333333 51.2-46.933334 51.2h-401.066666c-25.6 0-46.933333-21.333333-46.933334-51.2v-8.533333H174.933333c-17.066667 0-29.866667-12.8-29.866666-29.866667V307.2h-12.8C106.666667 307.2 85.333333 281.6 85.333333 256V179.2C85.333333 149.333333 106.666667 128 132.266667 128H213.333333c25.6 0 46.933333 21.333333 46.933334 51.2V256c0 25.6-21.333333 51.2-46.933334 51.2h-12.8v179.2h238.933334v-8.533333c0-25.6 21.333333-51.2 46.933333-51.2h401.066667c25.6 0 46.933333 21.333333 46.933333 51.2V554.666667c0 25.6-21.333333 51.2-46.933333 51.2h-401.066667c-25.6 0-46.933333-21.333333-46.933333-51.2v-8.533334H200.533333v234.666667h238.933334V768c0-25.6 21.333333-51.2 51.2-51.2z m401.066666-409.6H366.933333c-29.866667 0-51.2-25.6-51.2-51.2V179.2c0-29.866667 21.333333-51.2 51.2-51.2h524.8c25.6 0 46.933333 21.333333 46.933334 51.2V256c0 25.6-21.333333 51.2-46.933334 51.2z"  ></path></symbol><symbol id="icon-guanlian" viewBox="0 0 1024 1024"><path d="M832 704V576h64V128H384v448h192v128H256V0h768v704h-192zM128 896h512V448H448V320h320v704H0V320h192v128H128v448z"  ></path></symbol><symbol id="icon-edit" viewBox="0 0 1024 1024"><path d="M869.855783 1024H51.167987a51.167987 51.167987 0 0 1-51.167987-51.167987V154.144217a51.167987 51.167987 0 0 1 51.167987-51.167988h460.511886v102.335975H102.335975v716.351821h716.351821V512.320127h102.335975v460.511886a51.167987 51.167987 0 0 1-51.167988 51.167987z"  ></path><path d="M475.493872 548.485661a51.167987 51.167987 0 0 1 0-72.351534l460.511885-460.511886a51.167987 51.167987 0 1 1 72.351534 72.351534l-460.511885 460.511886a51.167987 51.167987 0 0 1-72.351534 0z"  ></path></symbol><symbol id="icon-write" viewBox="0 0 1024 1024"><path d="M921.6 1024H102.4a51.2 51.2 0 0 1 0-102.4h819.2a51.2 51.2 0 1 1 0 102.4zM358.4 819.2H153.6a51.2 51.2 0 0 1-51.2-51.2V563.2a51.2 51.2 0 0 1 14.99136-36.18816l512-512a51.2 51.2 0 0 1 72.3968 0l204.8 204.8a51.2 51.2 0 0 1 0 72.3968l-512 512A51.2 51.2 0 0 1 358.4 819.2z m-153.6-102.4h132.4032l460.8-460.8L665.6 123.5968l-460.8 460.8z"  ></path></symbol><symbol id="icon-gallery" viewBox="0 0 1024 1024"><path d="M409.6 460.8H51.2a51.2 51.2 0 0 1-51.2-51.2V51.2A51.2 51.2 0 0 1 51.2 0h358.4a51.2 51.2 0 0 1 51.2 51.2v358.4a51.2 51.2 0 0 1-51.2 51.2zM102.4 358.4h256V102.4H102.4zM972.8 0H614.4a51.2 51.2 0 0 0-51.2 51.2v358.4a51.2 51.2 0 0 0 51.2 51.2h358.4a51.2 51.2 0 0 0 51.2-51.2V51.2a51.2 51.2 0 0 0-51.2-51.2zM409.6 563.2H51.2a51.2 51.2 0 0 0-51.2 51.2v358.4a51.2 51.2 0 0 0 51.2 51.2h358.4a51.2 51.2 0 0 0 51.2-51.2V614.4a51.2 51.2 0 0 0-51.2-51.2zM972.8 1024H614.4a51.2 51.2 0 0 1-51.2-51.2V614.4a51.2 51.2 0 0 1 51.2-51.2h358.4a51.2 51.2 0 0 1 51.2 51.2v358.4a51.2 51.2 0 0 1-51.2 51.2z m-307.2-102.4h256V665.6H665.6z"  ></path></symbol><symbol id="icon-ai-code" viewBox="0 0 1025 1024"><path d="M293.0688 755.2c-12.0832 0-24.2688-4.2496-33.9968-12.9024L0 512l273.4592-243.0976C294.5536 250.2144 326.912 252.0064 345.7024 273.152c18.7904 21.1456 16.896 53.504-4.2496 72.2944L154.112 512l172.9536 153.7024c21.1456 18.7904 23.04 51.1488 4.2496 72.2944C321.2288 749.4144 307.1488 755.2 293.0688 755.2zM751.0528 755.0976 1024.512 512l-259.072-230.2976c-21.1456-18.7904-53.504-16.896-72.2432 4.2496-18.7904 21.1456-16.896 53.504 4.2496 72.2944L870.4 512l-187.3408 166.5024c-21.1456 18.7904-23.04 51.1488-4.2496 72.2944C688.896 762.2144 702.976 768 717.056 768 729.1392 768 741.3248 763.7504 751.0528 755.0976zM511.5392 827.648l102.4-614.4c4.6592-27.904-14.1824-54.272-42.0864-58.9312-28.0064-4.7104-54.3232 14.1824-58.88 42.0864l-102.4 614.4c-4.6592 27.904 14.1824 54.272 42.0864 58.9312C455.5264 870.1952 458.2912 870.4 461.1072 870.4 485.6832 870.4 507.392 852.6336 511.5392 827.648z"  ></path></symbol><symbol id="icon-html" viewBox="0 0 1024 1024"><path d="M113.719 63.868l70.806 803.643 325.705 92.047 322.165-92.047 77.886-803.643H113.719z m637.25 265.521h-378.81l10.621 102.668h361.108L715.566 732.98 513.77 789.625l-201.796-53.104-17.701-155.772h99.128l7.081 77.886 113.289 31.862 109.749-31.862 14.161-127.45-346.947-3.54-28.322-293.843h499.179l-10.622 95.587z"  ></path></symbol><symbol id="icon-zu" viewBox="0 0 1024 1024"><path d="M0 512A512.605091 512.605091 0 0 1 512 0a512.605091 512.605091 0 0 1 512 512 512.558545 512.558545 0 0 1-512 512A512.605091 512.605091 0 0 1 0 512z m93.090909 0a419.421091 419.421091 0 0 0 418.909091 418.909091 419.421091 419.421091 0 0 0 418.909091-418.909091 419.467636 419.467636 0 0 0-418.909091-418.909091 419.467636 419.467636 0 0 0-418.909091 418.909091z m349.090909 231.377455a69.818182 69.818182 0 0 1 69.818182-69.818182 69.818182 69.818182 0 0 1 69.818182 69.818182 69.818182 69.818182 0 0 1-69.818182 69.818181 69.818182 69.818182 0 0 1-69.818182-69.771636z m23.272727-161.373091V222.626909h93.09091v359.377455z"  ></path></symbol><symbol id="icon-time" viewBox="0 0 1024 1024"><path d="M512 1024C229.6832 1024 0 794.29632 0 512S229.6832 0 512 0s512 229.70368 512 512-229.66272 512-512 512z m0-921.6C286.14656 102.4 102.4 286.14656 102.4 512s183.74656 409.6 409.6 409.6 409.6-183.74656 409.6-409.6S737.85344 102.4 512 102.4z"  ></path><path d="M704.36864 612.84352l-204.8-51.2A51.2 51.2 0 0 1 460.8 512V256a51.2 51.2 0 0 1 102.4 0v216.00256l166.03136 41.55392a51.2 51.2 0 1 1-24.84224 99.30752z"  ></path></symbol><symbol id="icon-number" viewBox="0 0 1024 1024"><path d="M279.272727 791.272727h512a46.545455 46.545455 0 0 1 0 93.090909H279.272727a46.545455 46.545455 0 0 1 0-93.090909z m33.838546-617.984V651.636364H193.722182V395.170909c0-37.003636-0.884364-59.298909-2.653091-66.746182a24.948364 24.948364 0 0 0-14.615273-16.989091c-8.005818-3.863273-25.786182-5.771636-53.341091-5.771636h-11.822545v-55.854545c57.716364-12.381091 101.562182-37.888 131.490909-76.520728h70.283636z m303.709091 396.8V651.636364H354.164364v-68.235637c77.777455-127.255273 124.043636-206.010182 138.705454-236.218182 14.661818-30.254545 22.016-53.853091 22.016-70.74909 0-13.032727-2.234182-22.714182-6.656-29.137455-4.421818-6.376727-11.170909-9.588364-20.247273-9.588364a22.248727 22.248727 0 0 0-20.200727 10.612364c-4.468364 7.121455-6.656 21.178182-6.656 42.263273v45.521454H354.164364v-17.454545c0-26.763636 1.396364-47.941818 4.142545-63.348364 2.746182-15.499636 9.541818-30.72 20.386909-45.661091 10.798545-14.987636 24.901818-26.298182 42.216727-33.978182 17.361455-7.68 38.167273-11.543273 62.37091-11.543272 47.476364 0 83.316364 11.776 107.706181 35.328 24.296727 23.552 36.445091 53.341091 36.445091 89.367272 0 27.368727-6.842182 56.32-20.48 86.853819-13.730909 30.533818-54.039273 95.325091-121.018182 194.420363h130.885819z m270.615272-189.393454c18.152727 6.097455 31.650909 16.104727 40.494546 29.975272 8.843636 13.917091 13.312 46.452364 13.312 97.652364 0 38.027636-4.328727 67.490909-13.032727 88.529455-8.657455 20.945455-23.598545 36.910545-44.869819 47.848727-21.271273 10.938182-48.593455 16.384-81.873454 16.384-37.794909 0-67.490909-6.330182-89.088-19.083636-21.550545-12.660364-35.746909-28.253091-42.542546-46.638546-6.795636-18.432-10.193455-50.362182-10.193454-95.883636v-37.841455h119.389091v77.730909c0 20.666182 1.210182 33.838545 3.723636 39.424 2.420364 5.585455 7.912727 8.424727 16.337455 8.424728 9.309091 0 15.36-3.537455 18.338909-10.612364 2.932364-7.121455 4.421818-25.6 4.421818-55.575273v-33.047273c0-18.338909-2.048-31.744-6.190546-40.215272a30.72 30.72 0 0 0-18.338909-16.709818c-8.052364-2.653091-23.738182-4.189091-46.964363-4.561455V357.050182c28.392727 0 45.893818-1.070545 52.596363-3.258182a22.946909 22.946909 0 0 0 14.475637-14.149818c2.932364-7.307636 4.421818-18.711273 4.421818-34.257455v-26.624c0-16.756364-1.722182-27.741091-5.12-33.047272-3.490909-5.352727-8.843636-8.005818-16.151273-8.005819-8.285091 0-13.963636 2.792727-16.989091 8.378182-3.025455 5.632-4.561455 17.640727-4.561454 35.933091v39.284364h-119.389091v-40.773818c0-45.661091 10.472727-76.567273 31.325091-92.625455 20.898909-16.058182 54.085818-24.064 99.607272-24.064 56.878545 0 95.511273 11.170909 115.805091 33.373091 20.293818 22.248727 30.394182 53.201455 30.394182 92.765091 0 26.810182-3.630545 46.173091-10.891636 58.088727-7.307636 11.915636-20.107636 22.807273-38.446546 32.628364z"  ></path></symbol><symbol id="icon-menu" viewBox="0 0 1462 1024"><path d="M1389.714286 146.285714H74.517943C37.215086 146.285714 2.896457 115.887543 0.2048 78.555429A73.142857 73.142857 0 0 1 73.142857 0h1315.0208c37.419886 0 71.767771 30.398171 74.430172 67.730286A73.142857 73.142857 0 0 1 1389.714286 146.285714z"  ></path><path d="M731.428571 585.142857H74.517943C37.215086 585.142857 2.896457 554.744686 0.2048 517.412571A73.142857 73.142857 0 0 1 73.142857 438.857143h656.735086c37.419886 0 71.738514 30.398171 74.430171 67.701028A73.142857 73.142857 0 0 1 731.428571 585.142857z"  ></path><path d="M1389.714286 1024H74.517943C37.215086 1024 2.896457 993.601829 0.2048 956.298971A73.142857 73.142857 0 0 1 73.142857 877.714286h1315.0208c37.419886 0 71.738514 30.398171 74.430172 67.701028A73.142857 73.142857 0 0 1 1389.714286 1024z"  ></path></symbol><symbol id="icon-download" viewBox="0 0 1137 1024"><path d="M1080.888889 1024H56.888889a56.888889 56.888889 0 0 1-56.888889-56.888889V682.666667h113.777778v227.555555h910.222222V682.666667h113.777778v284.444444a56.888889 56.888889 0 0 1-56.888889 56.888889z"  ></path><path d="M893.565156 357.9904a56.888889 56.888889 0 0 0-80.440889 0L625.777778 545.336889V56.888889a56.888889 56.888889 0 0 0-113.777778 0v488.448l-187.323733-187.323733a56.888889 56.888889 0 1 0-80.440889 80.440888l284.444444 284.444445a56.888889 56.888889 0 0 0 80.531911 0l284.444445-284.444445a56.888889 56.888889 0 0 0-0.091022-80.463644z"  ></path></symbol><symbol id="icon-upload" viewBox="0 0 1137 1024"><path d="M1080.90258 1024H56.889609a56.889609 56.889609 0 0 1-56.889609-56.889609v-284.448048h113.779219v227.558438h910.233752v-227.558438h113.779219v284.448048a56.889609 56.889609 0 0 1-56.88961 56.889609z"  ></path><path d="M893.576474 301.046843l-284.448047-284.448048a57.139924 57.139924 0 0 0-80.532931 0l-284.448048 284.448048a56.889609 56.889609 0 1 0 80.441908 80.441907L512.006485 194.162644v488.499699a56.889609 56.889609 0 0 0 113.779219 0V194.162644l187.326107 187.326106a56.889609 56.889609 0 1 0 80.441907-80.441907z"  ></path></symbol><symbol id="icon-folder" viewBox="0 0 1024 1024"><path d="M972.8 1024H51.2a51.2 51.2 0 0 1-51.2-51.2V409.6a51.2 51.2 0 0 1 51.2-51.2h921.6a51.2 51.2 0 0 1 51.2 51.2v563.2a51.2 51.2 0 0 1-51.2 51.2zM102.4 921.6h819.2V460.8H102.4zM972.8 102.4H556.46208L503.3984 22.79424A51.2 51.2 0 0 0 460.8 0H51.2A51.2 51.2 0 0 0 0 51.2v153.6a51.2 51.2 0 0 0 51.2 51.2h921.6a51.2 51.2 0 0 0 51.2-51.2V153.6a51.2 51.2 0 0 0-51.2-51.2z"  ></path></symbol><symbol id="icon-image" viewBox="0 0 1024 1024"><path d="M972.8 1024H51.2a51.2 51.2 0 0 1-51.2-51.2V51.2A51.2 51.2 0 0 1 51.2 0h921.6a51.2 51.2 0 0 1 51.2 51.2v921.6a51.2 51.2 0 0 1-51.2 51.2zM102.4 921.6h819.2V102.4H102.4z"  ></path><path d="M168.61184 804.20864a51.2 51.2 0 0 1 0-72.3968l204.8-204.8A51.07712 51.07712 0 0 1 440.32 522.24l169.30816 126.976 173.40416-173.40416a51.2 51.2 0 0 1 72.3968 72.3968l-204.8 204.8A51.2 51.2 0 0 1 583.68 757.76l-169.28768-126.976-173.40416 173.40416a51.2 51.2 0 0 1-72.37632 0.02048z"  ></path><path d="M563.2 307.2m-102.4 0a102.4 102.4 0 1 0 204.8 0 102.4 102.4 0 1 0-204.8 0Z"  ></path></symbol><symbol id="icon-calendar" viewBox="0 0 1024 1024"><path d="M972.8 102.4h-153.6V0h-102.4v102.4H307.2V0h-102.4v102.4H51.2A51.2 51.2 0 0 0 0 153.6v819.2a51.2 51.2 0 0 0 51.2 51.2h921.6a51.2 51.2 0 0 0 51.2-51.2V153.6a51.2 51.2 0 0 0-51.2-51.2z m-51.2 819.2H102.4V204.8h819.2z"  ></path><path d="M373.41184 753.00864l-102.4-102.4a51.2 51.2 0 0 1 72.3968-72.3968L409.6 644.4032l271.01184-271.01184a51.2 51.2 0 0 1 72.3968 72.3968l-307.2 307.2a51.2 51.2 0 0 1-72.3968 0.02048z"  ></path></symbol><symbol id="icon-danxuan-cuxiantiao" viewBox="0 0 1024 1024"><path d="M512 1024C230.4 1024 0 793.6 0 512S230.4 0 512 0s512 230.4 512 512-230.4 512-512 512z m0-938.666667C277.333333 85.333333 85.333333 277.333333 85.333333 512s192 426.666667 426.666667 426.666667 426.666667-192 426.666667-426.666667S746.666667 85.333333 512 85.333333z"  ></path><path d="M512 512m-213.333333 0a213.333333 213.333333 0 1 0 426.666666 0 213.333333 213.333333 0 1 0-426.666666 0Z"  ></path></symbol><symbol id="icon-zihao" viewBox="0 0 1192 1024"><path d="M0 597.333333h170.666667v426.666667h85.333333V597.333333h170.666667V512H0v85.333333z"  ></path><path d="M168.96 0v170.666667H597.333333v853.333333h170.666667V170.666667h424.106667V0H168.96z"  ></path></symbol><symbol id="icon-button-add" viewBox="0 0 1024 1024"><path d="M972.8 1024H51.2a51.2 51.2 0 0 1-51.2-51.2V51.2A51.2 51.2 0 0 1 51.2 0h921.6a51.2 51.2 0 0 1 51.2 51.2v921.6a51.2 51.2 0 0 1-51.2 51.2zM102.4 921.6h819.2V102.4H102.4z"  ></path><path d="M716.8 460.8h-153.6v-153.6h-102.4v153.6h-153.6v102.4h153.6v153.6h102.4v-153.6h153.6v-102.4z"  ></path></symbol><symbol id="icon-button-remove" viewBox="0 0 1024 1024"><path d="M972.8 1024H51.2a51.2 51.2 0 0 1-51.2-51.2V51.2A51.2 51.2 0 0 1 51.2 0h921.6a51.2 51.2 0 0 1 51.2 51.2v921.6a51.2 51.2 0 0 1-51.2 51.2zM102.4 921.6h819.2V102.4H102.4z"  ></path><path d="M307.2 460.8h409.6v102.4H307.2z"  ></path></symbol><symbol id="icon-duoxuan1" viewBox="0 0 1024 1024"><path d="M960 0 64 0C25.6 0 0 25.6 0 64L0 960C0 998.4 25.6 1024 64 1024L960 1024C998.4 1024 1024 998.4 1024 960L1024 64C1024 25.6 998.4 0 960 0ZM960 896C960 934.4 934.4 960 896 960L128 960C89.6 960 64 934.4 64 896L64 128C64 89.6 89.6 64 128 64L896 64C934.4 64 960 89.6 960 128L960 896ZM716.8 275.2 396.8 595.2 307.2 505.6C281.6 480 236.8 480 211.2 505.6 185.6 531.2 185.6 576 211.2 601.6L345.6 742.4C358.4 755.2 377.6 761.6 396.8 761.6 416 761.6 428.8 755.2 448 742.4L812.8 371.2C838.4 345.6 838.4 300.8 812.8 275.2 787.2 249.6 742.4 249.6 716.8 275.2Z"  ></path></symbol><symbol id="icon-danhangwenben" viewBox="0 0 1024 1024"><path d="M118.784 727.04h778.24v-430.08h-778.24v430.08z m-40.96-471.04h860.16v512h-860.16v-512z m116.736 153.6v204.8c0 12.288 8.192 20.48 20.48 20.48s20.48-8.192 20.48-20.48v-204.8c0-12.288-8.192-20.48-20.48-20.48s-20.48 8.192-20.48 20.48z"  ></path></symbol><symbol id="icon-duohangwenben" viewBox="0 0 1024 1024"><path d="M118.784 778.24h778.24v-532.48h-778.24v532.48z m-40.96-573.44h860.16v614.4h-860.16v-614.4z m778.24 409.6l-122.88 122.88h122.88v-122.88zM194.56 358.4v204.8c0 12.288 8.192 20.48 20.48 20.48s20.48-8.192 20.48-20.48v-204.8c0-12.288-8.192-20.48-20.48-20.48s-20.48 8.192-20.48 20.48z"  ></path></symbol><symbol id="icon-danxuanxuanzhong" viewBox="0 0 1024 1024"><path d="M512 1024C229.230208 1024 0 794.769792 0 512 0 229.230208 229.230208 0 512 0 794.769792 0 1024 229.230208 1024 512 1024 794.769792 794.769792 1024 512 1024ZM512 960C759.423565 960 960 759.423565 960 512 960 264.576432 759.423565 64 512 64 264.576432 64 64 264.576432 64 512 64 759.423565 264.576432 960 512 960ZM512 832C688.731117 832 832 688.731117 832 512 832 335.26888 688.731117 192 512 192 335.26888 192 192 335.26888 192 512 192 688.731117 335.26888 832 512 832Z"  ></path></symbol><symbol id="icon-kaiguan3" viewBox="0 0 1024 1024"><path d="M764.867148 249.793136 259.0735 249.793136c-143.070486 0-259.052011 115.984594-259.052011 259.052011 0 143.07151 115.982548 259.050987 259.052011 259.050987l505.793648 0c143.067416 0 259.050987-115.979478 259.050987-259.050987C1023.917112 365.778754 907.933541 249.793136 764.867148 249.793136zM259.0735 745.516428c-130.501216 0-236.671281-106.172111-236.671281-236.671281 0-130.501216 106.170065-236.671281 236.671281-236.671281S495.744781 378.344954 495.744781 508.84617C495.744781 639.34534 389.574716 745.516428 259.0735 745.516428z"  ></path></symbol><symbol id="icon-biaoge" viewBox="0 0 1024 1024"><path d="M959.825022 384.002258V191.939717C959.825022 121.2479 902.517291 63.940169 831.825474 63.940169H191.939717C121.2479 63.940169 63.940169 121.2479 63.940169 191.939717v639.885757C63.940169 902.517291 121.2479 959.825022 191.939717 959.825022h639.885757c70.691817 0 127.999548-57.307731 127.999548-127.999548V384.002258zM146.66502 146.66502a63.737872 63.737872 0 0 1 45.336109-18.784682h639.997742A63.961844 63.961844 0 0 1 895.884854 192.001129V320.062089H127.880338V192.001129A63.737872 63.737872 0 0 1 146.66502 146.66502z m269.1267 461.308451v-223.971213h192.181751v223.971213h-192.181751z m192.181751 63.940169v223.971214h-192.181751v-223.971214h192.181751z m-256.12192-63.940169H127.880338v-223.971213h223.971213v223.971213z m-205.186531 269.235073a63.466939 63.466939 0 0 1-18.784682-45.209673V671.91364h223.971213v223.971214H192.001129a63.625887 63.625887 0 0 1-45.336109-18.67631z m749.219834-45.209673A63.763159 63.763159 0 0 1 831.998871 895.884854H671.91364v-223.971214h223.971214v160.085231z m0-224.0254h-223.971214v-223.971213h223.971214v223.971213z" fill="" ></path></symbol><symbol id="icon-qiapian" viewBox="0 0 1024 1024"><path d="M797.527 512.901H638.428v53.315h159.099V512.9z m81.429-346.521H136.525c-43.93 0-79.545 35.799-79.545 79.964v533.115c0 44.16 35.615 79.964 79.545 79.964h742.43c43.93 0 79.545-35.804 79.545-79.964V246.344c0-44.165-35.61-79.964-79.544-79.964z m26.51 559.77c0 44.164-35.609 79.958-79.538 79.958h-636.37c-43.93 0-79.545-35.799-79.545-79.959V406.272h795.454v319.872z m0-373.182H110.014v-53.31c0-44.165 35.61-79.964 79.545-79.964h636.365c43.934 0 79.544 35.8 79.544 79.964v53.31zM534.257 512.9H163.042v53.315h371.216V512.9zM375.164 619.52H163.04v53.31h212.122v-53.31z"  ></path></symbol><symbol id="icon-zhage" viewBox="0 0 1371 1024"><path d="M1052.91381327 223.61256508h-165.52399247V800.42054084h165.5306138c11.42161264 0 21.14819137-4.03894707 29.26581204-12.07049191 8.07789413-8.07789413 12.13008315-17.75812433 12.13008387-29.1333884V264.81644539c0-11.36864273-4.05218974-21.08197883-12.12346254-29.13338767-8.12424271-8.05803016-17.85082147-12.09697724-29.27243337-12.09697724v0.02648459z m-248.29592034-0.0264846h-248.29592034v576.80135445h248.29592034V223.57945916zM473.55666605 800.38743492V223.57945916h-165.5306138c-11.42161264 0-21.14819137 4.03894707-29.26581206 12.10359856-8.06465149 8.0447875-12.13008315 17.75812433-12.13008315 29.13338767v494.38697248c0 11.37526406 4.06543166 21.05549423 12.12346183 29.1333884 8.12424271 8.03154558 17.85082147 12.07049265 29.27243338 12.07049192h165.5306138v-0.02648459zM308.01943164 141.21142578h744.90100296c34.23835189 0 63.51078599 12.07049265 87.76433096 36.21809854C1164.93831125 201.57050889 1177.06177308 230.70389656 1177.06177308 264.81644539v494.39359381c0 34.08606424-12.12346182 63.24593648-36.37700752 87.37367914-24.25354569 24.13436323-53.52597908 36.20485588-87.76433096 36.20485588H308.01943164c-34.23835189 0-63.52402793-12.07049265-87.76433167-36.20485588C196.00155426 822.45597643 183.87809244 793.29610344 183.87809244 759.2100392V264.81644539C183.87809244 230.70389656 196.00155426 201.57050889 220.25509997 177.42952433 244.48878167 153.28191843 273.78107903 141.21142578 308.02605225 141.21142578z"  ></path></symbol><symbol id="icon-xiala" viewBox="0 0 1024 1024"><path d="M192 128a64 64 0 0 0-64 64v640a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64H192z m0-64h640a128 128 0 0 1 128 128v640a128 128 0 0 1-128 128H192a128 128 0 0 1-128-128V192a128 128 0 0 1 128-128z m64 320h512l-256 320-256-320z"  ></path></symbol><symbol id="icon-fengexian" viewBox="0 0 1024 1024"><path d="M32 464h960V576H32z"  ></path></symbol><symbol id="icon-pingfen_moren" viewBox="0 0 1024 1024"><path d="M1024 396.8l-353.792-51.2L512 25.088 353.792 345.6 0 396.8l256 249.344-60.416 352.768L512 832.512l316.416 166.4L768 646.656zM665.6 665.6l25.6 147.968-132.608-69.632L512 716.8l-47.616 25.088-132.608 69.632L358.4 665.6l9.216-51.2-39.936-40.96-107.52-102.4 148.48-21.504 51.2-7.68 24.064-48.128L512 256l66.56 134.656 24.064 48.128 51.2 7.68 148.48 21.504-107.52 102.4-38.4 37.376z"  ></path></symbol></svg>', c = (c = document.getElementsByTagName("script"))[c.length - 1].getAttribute("data-injectcss"); if (c && !e.__iconfont__svg__cssinject__) { e.__iconfont__svg__cssinject__ = !0; try { document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>") } catch (e) { console && console.log(e) } } function l() { o || (o = !0, r()) } t = function () { var e, t, n; (n = document.createElement("div")).innerHTML = s, s = null, (t = n.getElementsByTagName("svg")[0]) && (t.setAttribute("aria-hidden", "true"), t.style.position = "absolute", t.style.width = 0, t.style.height = 0, t.style.overflow = "hidden", e = t, (n = document.body).firstChild ? (t = n.firstChild).parentNode.insertBefore(e, t) : n.appendChild(e)) }, document.addEventListener ? ~["complete", "loaded", "interactive"].indexOf(document.readyState) ? setTimeout(t, 0) : (n = function () { document.removeEventListener("DOMContentLoaded", n, !1), t() }, document.addEventListener("DOMContentLoaded", n, !1)) : document.attachEvent && (r = t, i = e.document, o = !1, (a = function () { try { i.documentElement.doScroll("left") } catch (e) { return void setTimeout(a, 50) } l() })(), i.onreadystatechange = function () { "complete" == i.readyState && (i.onreadystatechange = null, l()) }) }(window) }, "96f3": function (e, t) { var n = Object.prototype, r = n.hasOwnProperty; function i(e, t) { return null != e && r.call(e, t) } e.exports = i }, "972c": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t, n) { var r = { ss: "secunde", mm: "minute", hh: "ore", dd: "zile", MM: "luni", yy: "ani" }, i = " "; return (e % 100 >= 20 || e >= 100 && e % 100 === 0) && (i = " de "), e + i + r[n] } var n = e.defineLocale("ro", { months: "ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"), monthsShort: "ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"), monthsParseExact: !0, weekdays: "duminic膬_luni_mar葲i_miercuri_joi_vineri_s芒mb膬t膬".split("_"), weekdaysShort: "Dum_Lun_Mar_Mie_Joi_Vin_S芒m".split("_"), weekdaysMin: "Du_Lu_Ma_Mi_Jo_Vi_S芒".split("_"), longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY H:mm", LLLL: "dddd, D MMMM YYYY H:mm" }, calendar: { sameDay: "[azi la] LT", nextDay: "[m芒ine la] LT", nextWeek: "dddd [la] LT", lastDay: "[ieri la] LT", lastWeek: "[fosta] dddd [la] LT", sameElse: "L" }, relativeTime: { future: "peste %s", past: "%s 卯n urm膬", s: "c芒teva secunde", ss: t, m: "un minut", mm: t, h: "o or膬", hh: t, d: "o zi", dd: t, M: "o lun膬", MM: t, y: "un an", yy: t }, week: { dow: 1, doy: 7 } }); return n
+                    }))
+                }, "972ca": function (e, t) { function n(e, t, n) { var r; return n(e, (function (e, n, i) { if (t(e, n, i)) return r = n, !1 })), r } e.exports = n }, 9797: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("cy", { months: "Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"), monthsShort: "Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"), weekdays: "Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"), weekdaysShort: "Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"), weekdaysMin: "Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Heddiw am] LT", nextDay: "[Yfory am] LT", nextWeek: "dddd [am] LT", lastDay: "[Ddoe am] LT", lastWeek: "dddd [diwethaf am] LT", sameElse: "L" }, relativeTime: { future: "mewn %s", past: "%s yn 么l", s: "ychydig eiliadau", ss: "%d eiliad", m: "munud", mm: "%d munud", h: "awr", hh: "%d awr", d: "diwrnod", dd: "%d diwrnod", M: "mis", MM: "%d mis", y: "blwyddyn", yy: "%d flynedd" }, dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, ordinal: function (e) { var t = e, n = "", r = ["", "af", "il", "ydd", "ydd", "ed", "ed", "ed", "fed", "fed", "fed", "eg", "fed", "eg", "eg", "fed", "eg", "eg", "fed", "eg", "fed"]; return t > 20 ? n = 40 === t || 50 === t || 60 === t || 80 === t || 100 === t ? "fed" : "ain" : t > 0 && (n = r[t]), e + n }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, 9868: function (e, t, n) { }, "990b": function (e, t, n) { var r = n("9093"), i = n("2621"), o = n("cb7c"), a = n("7726").Reflect; e.exports = a && a.ownKeys || function (e) { var t = r.f(o(e)), n = i.f; return n ? t.concat(n(e)) : t } }, 9934: function (e, t, n) { var r = n("6fcd"), i = n("41c3"), o = n("30c9"); function a(e) { return o(e) ? r(e, !0) : i(e) } e.exports = a }, 9948: function (e, t, n) { var r = n("72af"), i = n("1304"), o = n("9934"); function a(e, t) { return null == e ? e : r(e, i(t), o) } e.exports = a }, 9958: function (e, t, n) { }, "99cd": function (e, t) { function n(e) { return function (t, n, r) { var i = -1, o = Object(t), a = r(t), s = a.length; while (s--) { var c = a[e ? s : ++i]; if (!1 === n(o[c], c, o)) break } return t } } e.exports = n }, "99d3": function (e, t, n) { (function (e) { var r = n("585a"), i = t && !t.nodeType && t, o = i && "object" == typeof e && e && !e.nodeType && e, a = o && o.exports === i, s = a && r.process, c = function () { try { var e = o && o.require && o.require("util").types; return e || s && s.binding && s.binding("util") } catch (t) { } }(); e.exports = c }).call(this, n("62e4")(e)) }, "9a94": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n("882a"), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } t["default"] = i["default"] }, "9aa9": function (e, t) { t.f = Object.getOwnPropertySymbols }, "9aff": function (e, t, n) { var r = n("9638"), i = n("30c9"), o = n("c098"), a = n("1a8c"); function s(e, t, n) { if (!a(n)) return !1; var s = typeof t; return !!("number" == s ? i(n) && o(t, n.length) : "string" == s && t in n) && r(n[t], e) } e.exports = s }, "9b02": function (e, t, n) { var r = n("656b"); function i(e, t, n) { var i = null == e ? void 0 : r(e, t); return void 0 === i ? n : i } e.exports = i }, "9b43": function (e, t, n) { var r = n("d8e8"); e.exports = function (e, t, n) { if (r(e), void 0 === t) return e; switch (n) { case 1: return function (n) { return e.call(t, n) }; case 2: return function (n, r) { return e.call(t, n, r) }; case 3: return function (n, r, i) { return e.call(t, n, r, i) } }return function () { return e.apply(t, arguments) } } }, "9b57": function (e, t, n) { "use strict"; t.__esModule = !0; var r = n("adf5"), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } t.default = function (e) { if (Array.isArray(e)) { for (var t = 0, n = Array(e.length); t < e.length; t++)n[t] = e[t]; return n } return (0, i.default)(e) } }, "9c6c": function (e, t, n) { var r = n("2b4c")("unscopables"), i = Array.prototype; void 0 == i[r] && n("32e9")(i, r, {}), e.exports = function (e) { i[r][e] = !0 } }, "9c80": function (e, t) { e.exports = function (e) { try { return { e: !1, v: e() } } catch (t) { return { e: !0, v: t } } } }, "9def": function (e, t, n) { var r = n("4588"), i = Math.min; e.exports = function (e) { return e > 0 ? i(r(e), 9007199254740991) : 0 } }, "9e1e": function (e, t, n) { e.exports = !n("79e5")((function () { return 7 != Object.defineProperty({}, "a", { get: function () { return 7 } }).a })) }, "9e69": function (e, t, n) { var r = n("2b3e"), i = r.Symbol; e.exports = i }, "9e86": function (e, t, n) { var r = n("872a"), i = n("242e"), o = n("badf"); function a(e, t) { var n = {}; return t = o(t, 3), i(e, (function (e, i, o) { r(n, i, t(e, i, o)) })), n } e.exports = a }, "9f26": function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = /^(janvier|f茅vrier|mars|avril|mai|juin|juillet|ao没t|septembre|octobre|novembre|d茅cembre)/i, n = /(janv\.?|f茅vr\.?|mars|avr\.?|mai|juin|juil\.?|ao没t|sept\.?|oct\.?|nov\.?|d茅c\.?)/i, r = /(janv\.?|f茅vr\.?|mars|avr\.?|mai|juin|juil\.?|ao没t|sept\.?|oct\.?|nov\.?|d茅c\.?|janvier|f茅vrier|mars|avril|mai|juin|juillet|ao没t|septembre|octobre|novembre|d茅cembre)/i, i = [/^janv/i, /^f茅vr/i, /^mars/i, /^avr/i, /^mai/i, /^juin/i, /^juil/i, /^ao没t/i, /^sept/i, /^oct/i, /^nov/i, /^d茅c/i], o = e.defineLocale("fr", { months: "janvier_f茅vrier_mars_avril_mai_juin_juillet_ao没t_septembre_octobre_novembre_d茅cembre".split("_"), monthsShort: "janv._f茅vr._mars_avr._mai_juin_juil._ao没t_sept._oct._nov._d茅c.".split("_"), monthsRegex: r, monthsShortRegex: r, monthsStrictRegex: t, monthsShortStrictRegex: n, monthsParse: i, longMonthsParse: i, shortMonthsParse: i, weekdays: "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), weekdaysShort: "dim._lun._mar._mer._jeu._ven._sam.".split("_"), weekdaysMin: "di_lu_ma_me_je_ve_sa".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Aujourd鈥檋ui 脿] LT", nextDay: "[Demain 脿] LT", nextWeek: "dddd [脿] LT", lastDay: "[Hier 脿] LT", lastWeek: "dddd [dernier 脿] LT", sameElse: "L" }, relativeTime: { future: "dans %s", past: "il y a %s", s: "quelques secondes", ss: "%d secondes", m: "une minute", mm: "%d minutes", h: "une heure", hh: "%d heures", d: "un jour", dd: "%d jours", M: "un mois", MM: "%d mois", y: "un an", yy: "%d ans" }, dayOfMonthOrdinalParse: /\d{1,2}(er|)/, ordinal: function (e, t) { switch (t) { case "D": return e + (1 === e ? "er" : ""); default: case "M": case "Q": case "DDD": case "d": return e + (1 === e ? "er" : "e"); case "w": case "W": return e + (1 === e ? "re" : "e") } }, week: { dow: 1, doy: 4 } }); return o
+                    }))
+                }, a029: function (e, t, n) { var r = n("087d"), i = n("2dcb"), o = n("32f4"), a = n("d327"), s = Object.getOwnPropertySymbols, c = s ? function (e) { var t = []; while (e) r(t, o(e)), e = i(e); return t } : a; e.exports = c }, a0ac: function (e, t) { var n = "Expected a function"; function r(e) { if ("function" != typeof e) throw new TypeError(n); return function () { var t = arguments; switch (t.length) { case 0: return !e.call(this); case 1: return !e.call(this, t[0]); case 2: return !e.call(this, t[0], t[1]); case 3: return !e.call(this, t[0], t[1], t[2]) }return !e.apply(this, t) } } e.exports = r }, a0c4: function (e, t) { function n(e, t, n, r) { var i = -1, o = null == e ? 0 : e.length; while (++i < o) { var a = e[i]; t(r, a, n(a), e) } return r } e.exports = n }, a159: function (e, t, n) { var r = n("e4ae"), i = n("7e90"), o = n("1691"), a = n("5559")("IE_PROTO"), s = function () { }, c = "prototype", l = function () { var e, t = n("1ec9")("iframe"), r = o.length, i = "<", a = ">"; t.style.display = "none", n("32fc").appendChild(t), t.src = "javascript:", e = t.contentWindow.document, e.open(), e.write(i + "script" + a + "document.F=Object" + i + "/script" + a), e.close(), l = e.F; while (r--) delete l[c][o[r]]; return l() }; e.exports = Object.create || function (e, t) { var n; return null !== e ? (s[c] = r(e), n = new s, s[c] = null, n[a] = e) : n = l(), void 0 === t ? n : i(n, t) } }, a1bc: function (e, t, n) { }, a1ff: function (e, t, n) { }, a25f: function (e, t, n) { var r = n("7726"), i = r.navigator; e.exports = i && i.userAgent || "" }, a2be: function (e, t, n) { var r = n("d612"), i = n("4284"), o = n("c584"), a = 1, s = 2; function c(e, t, n, c, l, u) { var h = n & a, f = e.length, d = t.length; if (f != d && !(h && d > f)) return !1; var p = u.get(e), v = u.get(t); if (p && v) return p == t && v == e; var m = -1, g = !0, y = n & s ? new r : void 0; u.set(e, t), u.set(t, e); while (++m < f) { var b = e[m], x = t[m]; if (c) var w = h ? c(x, b, m, t, e, u) : c(b, x, m, e, t, u); if (void 0 !== w) { if (w) continue; g = !1; break } if (y) { if (!i(t, (function (e, t) { if (!o(y, t) && (b === e || l(b, e, n, c, u))) return y.push(t) }))) { g = !1; break } } else if (b !== x && !l(b, x, n, c, u)) { g = !1; break } } return u["delete"](e), u["delete"](t), g } e.exports = c }, a2db: function (e, t, n) { var r = n("9e69"), i = r ? r.prototype : void 0, o = i ? i.valueOf : void 0; function a(e) { return o ? Object(o.call(e)) : {} } e.exports = a }, a356: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = function (e) { return 0 === e ? 0 : 1 === e ? 1 : 2 === e ? 2 : e % 100 >= 3 && e % 100 <= 10 ? 3 : e % 100 >= 11 ? 4 : 5 }, n = { s: ["兀賯賱 賲賳 孬丕賳賷丞", "孬丕賳賷丞 賵丕丨丿丞", ["孬丕賳賷鬲丕賳", "孬丕賳賷鬲賷賳"], "%d 孬賵丕賳", "%d 孬丕賳賷丞", "%d 孬丕賳賷丞"], m: ["兀賯賱 賲賳 丿賯賷賯丞", "丿賯賷賯丞 賵丕丨丿丞", ["丿賯賷賯鬲丕賳", "丿賯賷賯鬲賷賳"], "%d 丿賯丕卅賯", "%d 丿賯賷賯丞", "%d 丿賯賷賯丞"], h: ["兀賯賱 賲賳 爻丕毓丞", "爻丕毓丞 賵丕丨丿丞", ["爻丕毓鬲丕賳", "爻丕毓鬲賷賳"], "%d 爻丕毓丕鬲", "%d 爻丕毓丞", "%d 爻丕毓丞"], d: ["兀賯賱 賲賳 賷賵賲", "賷賵賲 賵丕丨丿", ["賷賵賲丕賳", "賷賵賲賷賳"], "%d 兀賷丕賲", "%d 賷賵賲賸丕", "%d 賷賵賲"], M: ["兀賯賱 賲賳 卮賴乇", "卮賴乇 賵丕丨丿", ["卮賴乇丕賳", "卮賴乇賷賳"], "%d 兀卮賴乇", "%d 卮賴乇丕", "%d 卮賴乇"], y: ["兀賯賱 賲賳 毓丕賲", "毓丕賲 賵丕丨丿", ["毓丕賲丕賳", "毓丕賲賷賳"], "%d 兀毓賵丕賲", "%d 毓丕賲賸丕", "%d 毓丕賲"] }, r = function (e) { return function (r, i, o, a) { var s = t(r), c = n[e][t(r)]; return 2 === s && (c = c[i ? 0 : 1]), c.replace(/%d/i, r) } }, i = ["噩丕賳賮賷", "賮賷賮乇賷", "賲丕乇爻", "兀賮乇賷賱", "賲丕賷", "噩賵丕賳", "噩賵賷賱賷丞", "兀賵鬲", "爻亘鬲賲亘乇", "兀賰鬲賵亘乇", "賳賵賮賲亘乇", "丿賷爻賲亘乇"], o = e.defineLocale("ar-dz", { months: i, monthsShort: i, weekdays: "丕賱兀丨丿_丕賱廿孬賳賷賳_丕賱孬賱丕孬丕亍_丕賱兀乇亘毓丕亍_丕賱禺賲賷爻_丕賱噩賲毓丞_丕賱爻亘鬲".split("_"), weekdaysShort: "兀丨丿_廿孬賳賷賳_孬賱丕孬丕亍_兀乇亘毓丕亍_禺賲賷爻_噩賲毓丞_爻亘鬲".split("_"), weekdaysMin: "丨_賳_孬_乇_禺_噩_爻".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "D/鈥廙/鈥廦YYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, meridiemParse: /氐|賲/, isPM: function (e) { return "賲" === e }, meridiem: function (e, t, n) { return e < 12 ? "氐" : "賲" }, calendar: { sameDay: "[丕賱賷賵賲 毓賳丿 丕賱爻丕毓丞] LT", nextDay: "[睾丿賸丕 毓賳丿 丕賱爻丕毓丞] LT", nextWeek: "dddd [毓賳丿 丕賱爻丕毓丞] LT", lastDay: "[兀賲爻 毓賳丿 丕賱爻丕毓丞] LT", lastWeek: "dddd [毓賳丿 丕賱爻丕毓丞] LT", sameElse: "L" }, relativeTime: { future: "亘毓丿 %s", past: "賲賳匕 %s", s: r("s"), ss: r("s"), m: r("m"), mm: r("m"), h: r("h"), hh: r("h"), d: r("d"), dd: r("d"), M: r("M"), MM: r("M"), y: r("y"), yy: r("y") }, postformat: function (e) { return e.replace(/,/g, "貙") }, week: { dow: 0, doy: 4 } }); return o
+                    }))
+                }, a3c3: function (e, t, n) { var r = n("63b6"); r(r.S + r.F, "Object", { assign: n("9306") }) }, a3fd: function (e, t, n) { var r = n("7948"); function i(e, t) { return r(t, (function (t) { return [t, e[t]] })) } e.exports = i }, a454: function (e, t, n) { var r = n("72f0"), i = n("3b4a"), o = n("cd9d"), a = i ? function (e, t) { return i(e, "toString", { configurable: !0, enumerable: !1, value: r(t), writable: !0 }) } : o; e.exports = a }, a524: function (e, t, n) { var r = n("4245"); function i(e) { return r(this, e).has(e) } e.exports = i }, a54e: function (e, t, n) { }, a5b8: function (e, t, n) { "use strict"; var r = n("d8e8"); function i(e) { var t, n; this.promise = new e((function (e, r) { if (void 0 !== t || void 0 !== n) throw TypeError("Bad Promise constructor"); t = e, n = r })), this.resolve = r(t), this.reject = r(n) } e.exports.f = function (e) { return new i(e) } }, a6fb: function (e, t, n) { e.exports = { assign: n("dce5"), assignIn: n("a9b9"), assignInWith: n("c30c"), assignWith: n("900d"), at: n("b8bb"), create: n("c3f4"), defaults: n("95ae"), defaultsDeep: n("3f84"), entries: n("0b49"), entriesIn: n("8332"), extend: n("cdd8"), extendWith: n("d6dd"), findKey: n("74c8"), findLastKey: n("ab3e"), forIn: n("9948"), forInRight: n("18f6"), forOwn: n("020f"), forOwnRight: n("ca7c"), functions: n("fb25"), functionsIn: n("1693"), get: n("9b02"), has: n("3852"), hasIn: n("8604"), invert: n("27f3"), invertBy: n("e759"), invoke: n("3a0e"), keys: n("ec69"), keysIn: n("9934"), mapKeys: n("4472"), mapValues: n("9e86"), merge: n("42454"), mergeWith: n("2411"), omit: n("3eea"), omitBy: n("dd65"), pick: n("2593"), pickBy: n("77c1"), result: n("4467"), set: n("0f5c"), setWith: n("193b"), toPairs: n("f542"), toPairsIn: n("7aa2"), transform: n("50ca"), unset: n("3cfe"), update: n("ee45"), updateWith: n("e9d1"), values: n("3ff1"), valuesIn: n("7159") } }, a753: function (e, t, n) { }, a78b: function (e, t, n) { var r = n("656b"), i = n("159a"); function o(e, t, n, o) { return i(e, t, n(r(e, t)), o) } e.exports = o }, a7be: function (e, t, n) { }, a7fa: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("bm", { months: "Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M蓻kalo_Zuw蓻nkalo_Zuluyekalo_Utikalo_S蓻tanburukalo_蓴kut蓴burukalo_Nowanburukalo_Desanburukalo".split("_"), monthsShort: "Zan_Few_Mar_Awi_M蓻_Zuw_Zul_Uti_S蓻t_蓴ku_Now_Des".split("_"), weekdays: "Kari_Nt蓻n蓻n_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"), weekdaysShort: "Kar_Nt蓻_Tar_Ara_Ala_Jum_Sib".split("_"), weekdaysMin: "Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "MMMM [tile] D [san] YYYY", LLL: "MMMM [tile] D [san] YYYY [l蓻r蓻] HH:mm", LLLL: "dddd MMMM [tile] D [san] YYYY [l蓻r蓻] HH:mm" }, calendar: { sameDay: "[Bi l蓻r蓻] LT", nextDay: "[Sini l蓻r蓻] LT", nextWeek: "dddd [don l蓻r蓻] LT", lastDay: "[Kunu l蓻r蓻] LT", lastWeek: "dddd [t蓻m蓻nen l蓻r蓻] LT", sameElse: "L" }, relativeTime: { future: "%s k蓴n蓴", past: "a b蓻 %s b蓴", s: "sanga dama dama", ss: "sekondi %d", m: "miniti kelen", mm: "miniti %d", h: "l蓻r蓻 kelen", hh: "l蓻r蓻 %d", d: "tile kelen", dd: "tile %d", M: "kalo kelen", MM: "kalo %d", y: "san kelen", yy: "san %d" }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, a8fc: function (e, t, n) { var r = n("badf"), i = n("2c66"); function o(e, t) { return e && e.length ? i(e, r(t, 2)) : [] } e.exports = o }, a994: function (e, t, n) { var r = n("7d1f"), i = n("32f4"), o = n("ec69"); function a(e) { return r(e, o, i) } e.exports = a }, a9b9: function (e, t, n) { var r = n("8eeb"), i = n("2ec1"), o = n("9934"), a = i((function (e, t) { r(t, o(t), e) })); e.exports = a }, a9f5: function (e, t, n) { (function (t, n) { e.exports = n() })("undefined" !== typeof self && self, (function () { return function (e) { var t = {}; function n(r) { if (t[r]) return t[r].exports; var i = t[r] = { i: r, l: !1, exports: {} }; return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports } return n.m = e, n.c = t, n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: r }) }, n.r = function (e) { "undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }) }, n.t = function (e, t) { if (1 & t && (e = n(e)), 8 & t) return e; if (4 & t && "object" === typeof e && e && e.__esModule) return e; var r = Object.create(null); if (n.r(r), Object.defineProperty(r, "default", { enumerable: !0, value: e }), 2 & t && "string" != typeof e) for (var i in e) n.d(r, i, function (t) { return e[t] }.bind(null, i)); return r }, n.n = function (e) { var t = e && e.__esModule ? function () { return e["default"] } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = "112a") }({ "008a": function (e, t, n) { var r = n("f6b4"); e.exports = function (e) { return Object(r(e)) } }, "064e": function (e, t, n) { var r = n("69b3"), i = n("db6b"), o = n("94b3"), a = Object.defineProperty; t.f = n("149f") ? Object.defineProperty : function (e, t, n) { if (r(e), t = o(t, !0), r(n), i) try { return a(e, t, n) } catch (s) { } if ("get" in n || "set" in n) throw TypeError("Accessors not supported!"); return "value" in n && (e[t] = n.value), e } }, "06a2": function (e, t, n) { "use strict"; var r = n("fc81")(!0); n("492d")(String, "String", (function (e) { this._t = String(e), this._i = 0 }), (function () { var e, t = this._t, n = this._i; return n >= t.length ? { value: void 0, done: !0 } : (e = r(t, n), this._i += e.length, { value: e, done: !1 }) })) }, "09b9": function (e, t, n) { var r = n("224c"), i = n("f6b4"); e.exports = function (e) { return r(i(e)) } }, "0b53": function (e, t, n) { "use strict"; var r = n("e7ad"), i = n("e042"), o = n("149f"), a = n("e46b"), s = n("bf16"), c = n("f71f").KEY, l = n("238a"), u = n("6798"), h = n("399f"), f = n("ec45"), d = n("cb3d"), p = n("a08d"), v = n("4d34"), m = n("f091"), g = n("2346"), y = n("69b3"), b = n("fb68"), x = n("008a"), w = n("09b9"), _ = n("94b3"), C = n("cc33"), M = n("e005"), O = n("9370"), k = n("dcb7"), S = n("2f77"), T = n("064e"), A = n("80a9"), L = k.f, j = T.f, z = O.f, E = r.Symbol, P = r.JSON, D = P && P.stringify, H = "prototype", V = d("_hidden"), I = d("toPrimitive"), N = {}.propertyIsEnumerable, R = u("symbol-registry"), F = u("symbols"), Y = u("op-symbols"), $ = Object[H], B = "function" == typeof E && !!S.f, W = r.QObject, q = !W || !W[H] || !W[H].findChild, U = o && l((function () { return 7 != M(j({}, "a", { get: function () { return j(this, "a", { value: 7 }).a } })).a })) ? function (e, t, n) { var r = L($, t); r && delete $[t], j(e, t, n), r && e !== $ && j($, t, r) } : j, K = function (e) { var t = F[e] = M(E[H]); return t._k = e, t }, G = B && "symbol" == typeof E.iterator ? function (e) { return "symbol" == typeof e } : function (e) { return e instanceof E }, X = function (e, t, n) { return e === $ && X(Y, t, n), y(e), t = _(t, !0), y(n), i(F, t) ? (n.enumerable ? (i(e, V) && e[V][t] && (e[V][t] = !1), n = M(n, { enumerable: C(0, !1) })) : (i(e, V) || j(e, V, C(1, {})), e[V][t] = !0), U(e, t, n)) : j(e, t, n) }, J = function (e, t) { y(e); var n, r = m(t = w(t)), i = 0, o = r.length; while (o > i) X(e, n = r[i++], t[n]); return e }, Q = function (e, t) { return void 0 === t ? M(e) : J(M(e), t) }, Z = function (e) { var t = N.call(this, e = _(e, !0)); return !(this === $ && i(F, e) && !i(Y, e)) && (!(t || !i(this, e) || !i(F, e) || i(this, V) && this[V][e]) || t) }, ee = function (e, t) { if (e = w(e), t = _(t, !0), e !== $ || !i(F, t) || i(Y, t)) { var n = L(e, t); return !n || !i(F, t) || i(e, V) && e[V][t] || (n.enumerable = !0), n } }, te = function (e) { var t, n = z(w(e)), r = [], o = 0; while (n.length > o) i(F, t = n[o++]) || t == V || t == c || r.push(t); return r }, ne = function (e) { var t, n = e === $, r = z(n ? Y : w(e)), o = [], a = 0; while (r.length > a) !i(F, t = r[a++]) || n && !i($, t) || o.push(F[t]); return o }; B || (E = function () { if (this instanceof E) throw TypeError("Symbol is not a constructor!"); var e = f(arguments.length > 0 ? arguments[0] : void 0), t = function (n) { this === $ && t.call(Y, n), i(this, V) && i(this[V], e) && (this[V][e] = !1), U(this, e, C(1, n)) }; return o && q && U($, e, { configurable: !0, set: t }), K(e) }, s(E[H], "toString", (function () { return this._k })), k.f = ee, T.f = X, n("2ea2").f = O.f = te, n("4f18").f = Z, S.f = ne, o && !n("550e") && s($, "propertyIsEnumerable", Z, !0), p.f = function (e) { return K(d(e)) }), a(a.G + a.W + a.F * !B, { Symbol: E }); for (var re = "hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","), ie = 0; re.length > ie;)d(re[ie++]); for (var oe = A(d.store), ae = 0; oe.length > ae;)v(oe[ae++]); a(a.S + a.F * !B, "Symbol", { for: function (e) { return i(R, e += "") ? R[e] : R[e] = E(e) }, keyFor: function (e) { if (!G(e)) throw TypeError(e + " is not a symbol!"); for (var t in R) if (R[t] === e) return t }, useSetter: function () { q = !0 }, useSimple: function () { q = !1 } }), a(a.S + a.F * !B, "Object", { create: Q, defineProperty: X, defineProperties: J, getOwnPropertyDescriptor: ee, getOwnPropertyNames: te, getOwnPropertySymbols: ne }); var se = l((function () { S.f(1) })); a(a.S + a.F * se, "Object", { getOwnPropertySymbols: function (e) { return S.f(x(e)) } }), P && a(a.S + a.F * (!B || l((function () { var e = E(); return "[null]" != D([e]) || "{}" != D({ a: e }) || "{}" != D(Object(e)) }))), "JSON", { stringify: function (e) { var t, n, r = [e], i = 1; while (arguments.length > i) r.push(arguments[i++]); if (n = t = r[1], (b(t) || void 0 !== e) && !G(e)) return g(t) || (t = function (e, t) { if ("function" == typeof n && (t = n.call(this, e, t)), !G(t)) return t }), r[1] = t, D.apply(P, r) } }), E[H][I] || n("86d4")(E[H], I, E[H].valueOf), h(E, "Symbol"), h(Math, "Math", !0), h(r.JSON, "JSON", !0) }, "0dc8": function (e, t, n) { var r = n("064e"), i = n("69b3"), o = n("80a9"); e.exports = n("149f") ? Object.defineProperties : function (e, t) { i(e); var n, a = o(t), s = a.length, c = 0; while (s > c) r.f(e, n = a[c++], t[n]); return e } }, "0e8b": function (e, t, n) { var r = n("cb3d")("unscopables"), i = Array.prototype; void 0 == i[r] && n("86d4")(i, r, {}), e.exports = function (e) { i[r][e] = !0 } }, "112a": function (e, t, n) { "use strict"; var r; n.r(t), "undefined" !== typeof window && (n("e67d"), (r = window.document.currentScript) && (r = r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)) && (n.p = r[1])), n("cc57"); var i, o = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { directives: [{ name: "clickoutside", rawName: "v-clickoutside", value: e.closePanel, expression: "closePanel" }], ref: "colorPicker", staticClass: "m-colorPicker", on: { click: function (e) { e.stopPropagation() } } }, [n("div", { staticClass: "colorBtn", class: { disabled: e.disabled }, style: "background-color: " + e.showColor, on: { click: e.openPanel } }), n("div", { staticClass: "box", class: { open: e.openStatus } }, [n("div", { staticClass: "hd" }, [n("div", { staticClass: "colorView", style: "background-color: " + e.showPanelColor }), n("div", { staticClass: "defaultColor", on: { click: e.handleDefaultColor, mouseover: function (t) { e.hoveColor = e.defaultColor }, mouseout: function (t) { e.hoveColor = null } } }, [e._v("榛樿棰滆壊")])]), n("div", { staticClass: "bd" }, [n("h3", [e._v("涓婚棰滆壊")]), n("ul", { staticClass: "tColor" }, e._l(e.tColor, (function (t, r) { return n("li", { key: r, style: { backgroundColor: t }, on: { mouseover: function (n) { e.hoveColor = t }, mouseout: function (t) { e.hoveColor = null }, click: function (n) { return e.updataValue(t) } } }) })), 0), n("ul", { staticClass: "bColor" }, e._l(e.colorPanel, (function (t, r) { return n("li", { key: r }, [n("ul", e._l(t, (function (t, r) { return n("li", { key: r, style: { backgroundColor: t }, on: { mouseover: function (n) { e.hoveColor = t }, mouseout: function (t) { e.hoveColor = null }, click: function (n) { return e.updataValue(t) } } }) })), 0)]) })), 0), n("h3", [e._v("鏍囧噯棰滆壊")]), n("ul", { staticClass: "tColor" }, e._l(e.bColor, (function (t, r) { return n("li", { key: r, style: { backgroundColor: t }, on: { mouseover: function (n) { e.hoveColor = t }, mouseout: function (t) { e.hoveColor = null }, click: function (n) { return e.updataValue(t) } } }) })), 0), n("h3", { on: { click: e.triggerHtml5Color } }, [e._v("鏇村棰滆壊...")]), n("input", { directives: [{ name: "model", rawName: "v-model", value: e.html5Color, expression: "html5Color" }], ref: "html5Color", attrs: { type: "color" }, domProps: { value: e.html5Color }, on: { change: function (t) { return e.updataValue(e.html5Color) }, input: function (t) { t.target.composing || (e.html5Color = t.target.value) } } })])])]) }, a = [], s = (n("6d57"), n("309f"), n("0b53"), n("06a2"), n("ec25"), n("2b45"), []), c = "@@clickoutsideContext", l = 0; function u(e, t, n) { return function () { var r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; !(n && n.context && r.target && i.target) || e.contains(r.target) || e.contains(i.target) || e === r.target || n.context.popperElm && (n.context.popperElm.contains(r.target) || n.context.popperElm.contains(i.target)) || (t.expression && e[c].methodName && n.context[e[c].methodName] ? n.context[e[c].methodName]() : e[c].bindingFn && e[c].bindingFn()) } } document.addEventListener("mousedown", (function (e) { return i = e })), document.addEventListener("mouseup", (function (e) { s.forEach((function (t) { return t[c].documentHandler(e, i) })) })); var h = { bind: function (e, t, n) { s.push(e); var r = l++; e[c] = { id: r, documentHandler: u(e, t, n), methodName: t.expression, bindingFn: t.value } }, update: function (e, t, n) { e[c].documentHandler = u(e, t, n), e[c].methodName = t.expression, e[c].bindingFn = t.value }, unbind: function (e) { for (var t = s.length, n = 0; n < t; n++)if (s[n][c].id === e[c].id) { s.splice(n, 1); break } delete e[c] } }; function f(e, t) { var n; if ("undefined" === typeof Symbol || null == e[Symbol.iterator]) { if (Array.isArray(e) || (n = d(e)) || t && e && "number" === typeof e.length) { n && (e = n); var r = 0, i = function () { }; return { s: i, n: function () { return r >= e.length ? { done: !0 } : { done: !1, value: e[r++] } }, e: function (e) { throw e }, f: i } } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") } var o, a = !0, s = !1; return { s: function () { n = e[Symbol.iterator]() }, n: function () { var e = n.next(); return a = e.done, e }, e: function (e) { s = !0, o = e }, f: function () { try { a || null == n.return || n.return() } finally { if (s) throw o } } } } function d(e, t) { if (e) { if ("string" === typeof e) return p(e, t); var n = Object.prototype.toString.call(e).slice(8, -1); return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? p(e, t) : void 0 } } function p(e, t) { (null == t || t > e.length) && (t = e.length); for (var n = 0, r = new Array(t); n < t; n++)r[n] = e[n]; return r } var v = { name: "colorPicker", directives: { clickoutside: h }, props: { value: { type: String, required: !0 }, defaultColor: { type: String, default: "#000000" }, disabled: { type: Boolean, default: !1 } }, data: function () { return { openStatus: !1, hoveColor: null, tColor: ["#000000", "#ffffff", "#eeece1", "#1e497b", "#4e81bb", "#e2534d", "#9aba60", "#8165a0", "#47acc5", "#f9974c"], colorConfig: [["#7f7f7f", "#f2f2f2"], ["#0d0d0d", "#808080"], ["#1c1a10", "#ddd8c3"], ["#0e243d", "#c6d9f0"], ["#233f5e", "#dae5f0"], ["#632623", "#f2dbdb"], ["#4d602c", "#eaf1de"], ["#3f3150", "#e6e0ec"], ["#1e5867", "#d9eef3"], ["#99490f", "#fee9da"]], bColor: ["#c21401", "#ff1e02", "#ffc12a", "#ffff3a", "#90cf5b", "#00af57", "#00afee", "#0071be", "#00215f", "#72349d"], html5Color: this.value } }, computed: { showPanelColor: function () { return this.hoveColor ? this.hoveColor : this.showColor }, showColor: function () { return this.value ? this.value : this.defaultColor }, colorPanel: function () { var e, t = [], n = f(this.colorConfig); try { for (n.s(); !(e = n.n()).done;) { var r = e.value; t.push(this.gradient(r[1], r[0], 5)) } } catch (i) { n.e(i) } finally { n.f() } return t } }, methods: { openPanel: function () { this.openStatus = !this.disabled }, closePanel: function () { this.openStatus = !1 }, triggerHtml5Color: function () { this.$refs.html5Color.click() }, updataValue: function (e) { this.$emit("input", e), this.$emit("change", e), this.openStatus = !1 }, handleDefaultColor: function () { this.updataValue(this.defaultColor) }, parseColor: function (e) { if (4 !== e.length) return e; e = "#" + e[1] + e[1] + e[2] + e[2] + e[3] + e[3] }, rgbToHex: function (e, t, n) { var r = (e << 16 | t << 8 | n).toString(16); return "#" + new Array(Math.abs(r.length - 7)).join("0") + r }, hexToRgb: function (e) { e = this.parseColor(e); for (var t = [], n = 1; n < 7; n += 2)t.push(parseInt("0x" + e.slice(n, n + 2))); return t }, gradient: function (e, t, n) { for (var r = this.hexToRgb(e), i = this.hexToRgb(t), o = (i[0] - r[0]) / n, a = (i[1] - r[1]) / n, s = (i[2] - r[2]) / n, c = [], l = 0; l < n; l++)c.push(this.rgbToHex(parseInt(o * l + r[0]), parseInt(a * l + r[1]), parseInt(s * l + r[2]))); return c } } }, m = v; function g(e, t, n, r, i, o, a, s) { var c, l = "function" === typeof e ? e.options : e; if (t && (l.render = t, l.staticRenderFns = n, l._compiled = !0), r && (l.functional = !0), o && (l._scopeId = "data-v-" + o), a ? (c = function (e) { e = e || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext, e || "undefined" === typeof __VUE_SSR_CONTEXT__ || (e = __VUE_SSR_CONTEXT__), i && i.call(this, e), e && e._registeredComponents && e._registeredComponents.add(a) }, l._ssrRegister = c) : i && (c = s ? function () { i.call(this, (l.functional ? this.parent : this).$root.$options.shadowRoot) } : i), c) if (l.functional) { l._injectStyles = c; var u = l.render; l.render = function (e, t) { return c.call(t), u(e, t) } } else { var h = l.beforeCreate; l.beforeCreate = h ? [].concat(h, c) : [c] } return { exports: e, options: l } } n("e137"); var y = g(m, o, a, !1, null, "29accc04", null), b = y.exports; b.install = function (e) { e.component(b.name, b) }; var x = b, w = [x], _ = function e(t) { e.installed || w.map((function (e) { return t.component(e.name, e) })) }; "undefined" !== typeof window && window.Vue && _(window.Vue); var C = { install: _, colorPicker: x }; t["default"] = C }, "149f": function (e, t, n) { e.exports = !n("238a")((function () { return 7 != Object.defineProperty({}, "a", { get: function () { return 7 } }).a })) }, "190b": function (e, t, n) { n("149f") && "g" != /./g.flags && n("064e").f(RegExp.prototype, "flags", { configurable: !0, get: n("f1fe") }) }, "1b07": function (e, t, n) { var r = n("ca06"); "string" === typeof r && (r = [[e.i, r, ""]]), r.locals && (e.exports = r.locals); var i = n("85cb").default; i("34f6f920", r, !0, { sourceMap: !1, shadowMode: !1 }) }, "224c": function (e, t, n) { var r = n("75c4"); e.exports = Object("z").propertyIsEnumerable(0) ? Object : function (e) { return "String" == r(e) ? e.split("") : Object(e) } }, 2285: function (e, t, n) { var r = n("da6d"), i = n("cb3d")("iterator"), o = Array.prototype; e.exports = function (e) { return void 0 !== e && (r.Array === e || o[i] === e) } }, 2346: function (e, t, n) { var r = n("75c4"); e.exports = Array.isArray || function (e) { return "Array" == r(e) } }, "238a": function (e, t) { e.exports = function (e) { try { return !!e() } catch (t) { return !0 } } }, "2b45": function (e, t, n) { "use strict"; n("190b"); var r = n("69b3"), i = n("f1fe"), o = n("149f"), a = "toString", s = /./[a], c = function (e) { n("bf16")(RegExp.prototype, a, e, !0) }; n("238a")((function () { return "/a/b" != s.call({ source: "a", flags: "b" }) })) ? c((function () { var e = r(this); return "/".concat(e.source, "/", "flags" in e ? e.flags : !o && e instanceof RegExp ? i.call(e) : void 0) })) : s.name != a && c((function () { return s.call(this) })) }, "2ea2": function (e, t, n) { var r = n("c2f7"), i = n("ceac").concat("length", "prototype"); t.f = Object.getOwnPropertyNames || function (e) { return r(e, i) } }, "2f77": function (e, t) { t.f = Object.getOwnPropertySymbols }, "309f": function (e, t, n) { n("4d34")("asyncIterator") }, "32b9": function (e, t, n) { "use strict"; var r = n("e005"), i = n("cc33"), o = n("399f"), a = {}; n("86d4")(a, n("cb3d")("iterator"), (function () { return this })), e.exports = function (e, t, n) { e.prototype = r(a, { next: i(1, n) }), o(e, t + " Iterator") } }, "399f": function (e, t, n) { var r = n("064e").f, i = n("e042"), o = n("cb3d")("toStringTag"); e.exports = function (e, t, n) { e && !i(e = n ? e : e.prototype, o) && r(e, o, { configurable: !0, value: t }) } }, "475d": function (e, t) { e.exports = function (e, t) { return { value: t, done: !!e } } }, "492d": function (e, t, n) { "use strict"; var r = n("550e"), i = n("e46b"), o = n("bf16"), a = n("86d4"), s = n("da6d"), c = n("32b9"), l = n("399f"), u = n("58cf"), h = n("cb3d")("iterator"), f = !([].keys && "next" in [].keys()), d = "@@iterator", p = "keys", v = "values", m = function () { return this }; e.exports = function (e, t, n, g, y, b, x) { c(n, t, g); var w, _, C, M = function (e) { if (!f && e in T) return T[e]; switch (e) { case p: return function () { return new n(this, e) }; case v: return function () { return new n(this, e) } }return function () { return new n(this, e) } }, O = t + " Iterator", k = y == v, S = !1, T = e.prototype, A = T[h] || T[d] || y && T[y], L = A || M(y), j = y ? k ? M("entries") : L : void 0, z = "Array" == t && T.entries || A; if (z && (C = u(z.call(new e)), C !== Object.prototype && C.next && (l(C, O, !0), r || "function" == typeof C[h] || a(C, h, m))), k && A && A.name !== v && (S = !0, L = function () { return A.call(this) }), r && !x || !f && !S && T[h] || a(T, h, L), s[t] = L, s[O] = m, y) if (w = { values: k ? L : M(v), keys: b ? L : M(p), entries: j }, x) for (_ in w) _ in T || o(T, _, w[_]); else i(i.P + i.F * (f || S), t, w); return w } }, "4ce5": function (e, t, n) { var r = n("5daa"); e.exports = function (e, t, n) { if (r(e), void 0 === t) return e; switch (n) { case 1: return function (n) { return e.call(t, n) }; case 2: return function (n, r) { return e.call(t, n, r) }; case 3: return function (n, r, i) { return e.call(t, n, r, i) } }return function () { return e.apply(t, arguments) } } }, "4d34": function (e, t, n) { var r = n("e7ad"), i = n("7ddc"), o = n("550e"), a = n("a08d"), s = n("064e").f; e.exports = function (e) { var t = i.Symbol || (i.Symbol = o ? {} : r.Symbol || {}); "_" == e.charAt(0) || e in t || s(t, e, { value: a.f(e) }) } }, "4f18": function (e, t) { t.f = {}.propertyIsEnumerable }, "550e": function (e, t) { e.exports = !1 }, "56f2": function (e, t, n) { var r = n("6798")("keys"), i = n("ec45"); e.exports = function (e) { return r[e] || (r[e] = i(e)) } }, "58cf": function (e, t, n) { var r = n("e042"), i = n("008a"), o = n("56f2")("IE_PROTO"), a = Object.prototype; e.exports = Object.getPrototypeOf || function (e) { return e = i(e), r(e, o) ? e[o] : "function" == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? a : null } }, "5daa": function (e, t) { e.exports = function (e) { if ("function" != typeof e) throw TypeError(e + " is not a function!"); return e } }, 6798: function (e, t, n) { var r = n("7ddc"), i = n("e7ad"), o = "__core-js_shared__", a = i[o] || (i[o] = {}); (e.exports = function (e, t) { return a[e] || (a[e] = void 0 !== t ? t : {}) })("versions", []).push({ version: r.version, mode: n("550e") ? "pure" : "global", copyright: "漏 2019 Denis Pushkarev (zloirock.ru)" }) }, "690e": function (e, t) { function n(e, t) { var n = e[1] || "", i = e[3]; if (!i) return n; if (t && "function" === typeof btoa) { var o = r(i), a = i.sources.map((function (e) { return "/*# sourceURL=" + i.sourceRoot + e + " */" })); return [n].concat(a).concat([o]).join("\n") } return [n].join("\n") } function r(e) { var t = btoa(unescape(encodeURIComponent(JSON.stringify(e)))), n = "sourceMappingURL=data:application/json;charset=utf-8;base64," + t; return "/*# " + n + " */" } e.exports = function (e) { var t = []; return t.toString = function () { return this.map((function (t) { var r = n(t, e); return t[2] ? "@media " + t[2] + "{" + r + "}" : r })).join("") }, t.i = function (e, n) { "string" === typeof e && (e = [[null, e, ""]]); for (var r = {}, i = 0; i < this.length; i++) { var o = this[i][0]; "number" === typeof o && (r[o] = !0) } for (i = 0; i < e.length; i++) { var a = e[i]; "number" === typeof a[0] && r[a[0]] || (n && !a[2] ? a[2] = n : n && (a[2] = "(" + a[2] + ") and (" + n + ")"), t.push(a)) } }, t } }, "69b3": function (e, t, n) { var r = n("fb68"); e.exports = function (e) { if (!r(e)) throw TypeError(e + " is not an object!"); return e } }, "6d57": function (e, t, n) { for (var r = n("e44b"), i = n("80a9"), o = n("bf16"), a = n("e7ad"), s = n("86d4"), c = n("da6d"), l = n("cb3d"), u = l("iterator"), h = l("toStringTag"), f = c.Array, d = { CSSRuleList: !0, CSSStyleDeclaration: !1, CSSValueList: !1, ClientRectList: !1, DOMRectList: !1, DOMStringList: !1, DOMTokenList: !0, DataTransferItemList: !1, FileList: !1, HTMLAllCollection: !1, HTMLCollection: !1, HTMLFormElement: !1, HTMLSelectElement: !1, MediaList: !0, MimeTypeArray: !1, NamedNodeMap: !1, NodeList: !0, PaintRequestList: !1, Plugin: !1, PluginArray: !1, SVGLengthList: !1, SVGNumberList: !1, SVGPathSegList: !1, SVGPointList: !1, SVGStringList: !1, SVGTransformList: !1, SourceBufferList: !1, StyleSheetList: !0, TextTrackCueList: !1, TextTrackList: !1, TouchList: !1 }, p = i(d), v = 0; v < p.length; v++) { var m, g = p[v], y = d[g], b = a[g], x = b && b.prototype; if (x && (x[u] || s(x, u, f), x[h] || s(x, h, g), c[g] = f, y)) for (m in r) x[m] || o(x, m, r[m], !0) } }, "75c4": function (e, t) { var n = {}.toString; e.exports = function (e) { return n.call(e).slice(8, -1) } }, "7ddc": function (e, t) { var n = e.exports = { version: "2.6.11" }; "number" == typeof __e && (__e = n) }, "7e23": function (e, t, n) { var r = n("75c4"), i = n("cb3d")("toStringTag"), o = "Arguments" == r(function () { return arguments }()), a = function (e, t) { try { return e[t] } catch (n) { } }; e.exports = function (e) { var t, n, s; return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof (n = a(t = Object(e), i)) ? n : o ? r(t) : "Object" == (s = r(t)) && "function" == typeof t.callee ? "Arguments" : s } }, "80a9": function (e, t, n) { var r = n("c2f7"), i = n("ceac"); e.exports = Object.keys || function (e) { return r(e, i) } }, "85cb": function (e, t, n) { "use strict"; function r(e, t) { for (var n = [], r = {}, i = 0; i < t.length; i++) { var o = t[i], a = o[0], s = o[1], c = o[2], l = o[3], u = { id: e + ":" + i, css: s, media: c, sourceMap: l }; r[a] ? r[a].parts.push(u) : n.push(r[a] = { id: a, parts: [u] }) } return n } n.r(t), n.d(t, "default", (function () { return p })); var i = "undefined" !== typeof document; if ("undefined" !== typeof DEBUG && DEBUG && !i) throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."); var o = {}, a = i && (document.head || document.getElementsByTagName("head")[0]), s = null, c = 0, l = !1, u = function () { }, h = null, f = "data-vue-ssr-id", d = "undefined" !== typeof navigator && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase()); function p(e, t, n, i) { l = n, h = i || {}; var a = r(e, t); return v(a), function (t) { for (var n = [], i = 0; i < a.length; i++) { var s = a[i], c = o[s.id]; c.refs--, n.push(c) } for (t ? (a = r(e, t), v(a)) : a = [], i = 0; i < n.length; i++)if (c = n[i], 0 === c.refs) { for (var l = 0; l < c.parts.length; l++)c.parts[l](); delete o[c.id] } } } function v(e) { for (var t = 0; t < e.length; t++) { var n = e[t], r = o[n.id]; if (r) { r.refs++; for (var i = 0; i < r.parts.length; i++)r.parts[i](n.parts[i]); for (; i < n.parts.length; i++)r.parts.push(g(n.parts[i])); r.parts.length > n.parts.length && (r.parts.length = n.parts.length) } else { var a = []; for (i = 0; i < n.parts.length; i++)a.push(g(n.parts[i])); o[n.id] = { id: n.id, refs: 1, parts: a } } } } function m() { var e = document.createElement("style"); return e.type = "text/css", a.appendChild(e), e } function g(e) { var t, n, r = document.querySelector("style[" + f + '~="' + e.id + '"]'); if (r) { if (l) return u; r.parentNode.removeChild(r) } if (d) { var i = c++; r = s || (s = m()), t = b.bind(null, r, i, !1), n = b.bind(null, r, i, !0) } else r = m(), t = x.bind(null, r), n = function () { r.parentNode.removeChild(r) }; return t(e), function (r) { if (r) { if (r.css === e.css && r.media === e.media && r.sourceMap === e.sourceMap) return; t(e = r) } else n() } } var y = function () { var e = []; return function (t, n) { return e[t] = n, e.filter(Boolean).join("\n") } }(); function b(e, t, n, r) { var i = n ? "" : r.css; if (e.styleSheet) e.styleSheet.cssText = y(t, i); else { var o = document.createTextNode(i), a = e.childNodes; a[t] && e.removeChild(a[t]), a.length ? e.insertBefore(o, a[t]) : e.appendChild(o) } } function x(e, t) { var n = t.css, r = t.media, i = t.sourceMap; if (r && e.setAttribute("media", r), h.ssrId && e.setAttribute(f, t.id), i && (n += "\n/*# sourceURL=" + i.sources[0] + " */", n += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(i)))) + " */"), e.styleSheet) e.styleSheet.cssText = n; else { while (e.firstChild) e.removeChild(e.firstChild); e.appendChild(document.createTextNode(n)) } } }, "86d4": function (e, t, n) { var r = n("064e"), i = n("cc33"); e.exports = n("149f") ? function (e, t, n) { return r.f(e, t, i(1, n)) } : function (e, t, n) { return e[t] = n, e } }, "8df1": function (e, t, n) { var r = n("e7ad").document; e.exports = r && r.documentElement }, 9370: function (e, t, n) { var r = n("09b9"), i = n("2ea2").f, o = {}.toString, a = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [], s = function (e) { try { return i(e) } catch (t) { return a.slice() } }; e.exports.f = function (e) { return a && "[object Window]" == o.call(e) ? s(e) : i(r(e)) } }, "94b3": function (e, t, n) { var r = n("fb68"); e.exports = function (e, t) { if (!r(e)) return e; var n, i; if (t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; if ("function" == typeof (n = e.valueOf) && !r(i = n.call(e))) return i; if (!t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; throw TypeError("Can't convert object to primitive value") } }, a08d: function (e, t, n) { t.f = n("cb3d") }, b3a6: function (e, t, n) { var r = n("09b9"), i = n("eafa"), o = n("f58a"); e.exports = function (e) { return function (t, n, a) { var s, c = r(t), l = i(c.length), u = o(a, l); if (e && n != n) { while (l > u) if (s = c[u++], s != s) return !0 } else for (; l > u; u++)if ((e || u in c) && c[u] === n) return e || u || 0; return !e && -1 } } }, bf16: function (e, t, n) { var r = n("e7ad"), i = n("86d4"), o = n("e042"), a = n("ec45")("src"), s = n("d07e"), c = "toString", l = ("" + s).split(c); n("7ddc").inspectSource = function (e) { return s.call(e) }, (e.exports = function (e, t, n, s) { var c = "function" == typeof n; c && (o(n, "name") || i(n, "name", t)), e[t] !== n && (c && (o(n, a) || i(n, a, e[t] ? "" + e[t] : l.join(String(t)))), e === r ? e[t] = n : s ? e[t] ? e[t] = n : i(e, t, n) : (delete e[t], i(e, t, n))) })(Function.prototype, c, (function () { return "function" == typeof this && this[a] || s.call(this) })) }, bfe7: function (e, t, n) { var r = n("fb68"), i = n("e7ad").document, o = r(i) && r(i.createElement); e.exports = function (e) { return o ? i.createElement(e) : {} } }, c2f7: function (e, t, n) { var r = n("e042"), i = n("09b9"), o = n("b3a6")(!1), a = n("56f2")("IE_PROTO"); e.exports = function (e, t) { var n, s = i(e), c = 0, l = []; for (n in s) n != a && r(s, n) && l.push(n); while (t.length > c) r(s, n = t[c++]) && (~o(l, n) || l.push(n)); return l } }, ca06: function (e, t, n) { t = e.exports = n("690e")(!1), t.push([e.i, ".m-colorPicker[data-v-29accc04]{position:relative;text-align:left;font-size:14px;display:inline-block;outline:none}.m-colorPicker li[data-v-29accc04],.m-colorPicker ol[data-v-29accc04],.m-colorPicker ul[data-v-29accc04]{list-style:none;margin:0;padding:0}.m-colorPicker .colorBtn[data-v-29accc04]{width:15px;height:15px}.m-colorPicker .colorBtn.disabled[data-v-29accc04]{cursor:no-drop}.m-colorPicker .box[data-v-29accc04]{position:absolute;width:190px;background:#fff;border:1px solid #ddd;visibility:hidden;border-radius:2px;margin-top:2px;padding:10px;padding-bottom:5px;-webkit-box-shadow:0 0 5px rgba(0,0,0,.15);box-shadow:0 0 5px rgba(0,0,0,.15);opacity:0;-webkit-transition:all .3s ease;transition:all .3s ease;-webkit-box-sizing:content-box;box-sizing:content-box}.m-colorPicker .box h3[data-v-29accc04]{margin:0;font-size:14px;font-weight:400;margin-top:10px;margin-bottom:5px;line-height:1;color:#333}.m-colorPicker .box input[data-v-29accc04]{visibility:hidden;position:absolute;left:0;bottom:0}.m-colorPicker .box.open[data-v-29accc04]{visibility:visible;opacity:1;z-index:1}.m-colorPicker .hd[data-v-29accc04]{overflow:hidden;line-height:29px}.m-colorPicker .hd .colorView[data-v-29accc04]{width:100px;height:30px;float:left;-webkit-transition:background-color .3s ease;transition:background-color .3s ease}.m-colorPicker .hd .defaultColor[data-v-29accc04]{width:80px;float:right;text-align:center;border:1px solid #ddd;cursor:pointer;color:#333}.m-colorPicker .tColor li[data-v-29accc04]{width:15px;height:15px;display:inline-block;margin:0 2px;-webkit-transition:all .3s ease;transition:all .3s ease}.m-colorPicker .tColor li[data-v-29accc04]:hover{-webkit-box-shadow:0 0 5px rgba(0,0,0,.4);box-shadow:0 0 5px rgba(0,0,0,.4);-webkit-transform:scale(1.3);transform:scale(1.3)}.m-colorPicker .bColor li[data-v-29accc04]{width:15px;display:inline-block;margin:0 2px}.m-colorPicker .bColor li li[data-v-29accc04]{display:block;width:15px;height:15px;-webkit-transition:all .3s ease;transition:all .3s ease;margin:0}.m-colorPicker .bColor li li[data-v-29accc04]:hover{-webkit-box-shadow:0 0 5px rgba(0,0,0,.4);box-shadow:0 0 5px rgba(0,0,0,.4);-webkit-transform:scale(1.3);transform:scale(1.3)}", ""]) }, cb3d: function (e, t, n) { var r = n("6798")("wks"), i = n("ec45"), o = n("e7ad").Symbol, a = "function" == typeof o, s = e.exports = function (e) { return r[e] || (r[e] = a && o[e] || (a ? o : i)("Symbol." + e)) }; s.store = r }, cc33: function (e, t) { e.exports = function (e, t) { return { enumerable: !(1 & e), configurable: !(2 & e), writable: !(4 & e), value: t } } }, cc57: function (e, t, n) { var r = n("064e").f, i = Function.prototype, o = /^\s*function ([^ (]*)/, a = "name"; a in i || n("149f") && r(i, a, { configurable: !0, get: function () { try { return ("" + this).match(o)[1] } catch (e) { return "" } } }) }, ceac: function (e, t) { e.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",") }, d07e: function (e, t, n) { e.exports = n("6798")("native-function-to-string", Function.toString) }, d0bc: function (e, t, n) { var r = n("69b3"); e.exports = function (e, t, n, i) { try { return i ? t(r(n)[0], n[1]) : t(n) } catch (a) { var o = e["return"]; throw void 0 !== o && r(o.call(e)), a } } }, d0c5: function (e, t, n) { var r = n("cb3d")("iterator"), i = !1; try { var o = [7][r](); o["return"] = function () { i = !0 }, Array.from(o, (function () { throw 2 })) } catch (a) { } e.exports = function (e, t) { if (!t && !i) return !1; var n = !1; try { var o = [7], s = o[r](); s.next = function () { return { done: n = !0 } }, o[r] = function () { return s }, e(o) } catch (a) { } return n } }, da6d: function (e, t) { e.exports = {} }, db6b: function (e, t, n) { e.exports = !n("149f") && !n("238a")((function () { return 7 != Object.defineProperty(n("bfe7")("div"), "a", { get: function () { return 7 } }).a })) }, dcb7: function (e, t, n) { var r = n("4f18"), i = n("cc33"), o = n("09b9"), a = n("94b3"), s = n("e042"), c = n("db6b"), l = Object.getOwnPropertyDescriptor; t.f = n("149f") ? l : function (e, t) { if (e = o(e), t = a(t, !0), c) try { return l(e, t) } catch (n) { } if (s(e, t)) return i(!r.f.call(e, t), e[t]) } }, e005: function (e, t, n) { var r = n("69b3"), i = n("0dc8"), o = n("ceac"), a = n("56f2")("IE_PROTO"), s = function () { }, c = "prototype", l = function () { var e, t = n("bfe7")("iframe"), r = o.length, i = "<", a = ">"; t.style.display = "none", n("8df1").appendChild(t), t.src = "javascript:", e = t.contentWindow.document, e.open(), e.write(i + "script" + a + "document.F=Object" + i + "/script" + a), e.close(), l = e.F; while (r--) delete l[c][o[r]]; return l() }; e.exports = Object.create || function (e, t) { var n; return null !== e ? (s[c] = r(e), n = new s, s[c] = null, n[a] = e) : n = l(), void 0 === t ? n : i(n, t) } }, e042: function (e, t) { var n = {}.hasOwnProperty; e.exports = function (e, t) { return n.call(e, t) } }, e137: function (e, t, n) { "use strict"; var r = n("1b07"), i = n.n(r); i.a }, e44b: function (e, t, n) { "use strict"; var r = n("0e8b"), i = n("475d"), o = n("da6d"), a = n("09b9"); e.exports = n("492d")(Array, "Array", (function (e, t) { this._t = a(e), this._i = 0, this._k = t }), (function () { var e = this._t, t = this._k, n = this._i++; return !e || n >= e.length ? (this._t = void 0, i(1)) : i(0, "keys" == t ? n : "values" == t ? e[n] : [n, e[n]]) }), "values"), o.Arguments = o.Array, r("keys"), r("values"), r("entries") }, e46b: function (e, t, n) { var r = n("e7ad"), i = n("7ddc"), o = n("86d4"), a = n("bf16"), s = n("4ce5"), c = "prototype", l = function (e, t, n) { var u, h, f, d, p = e & l.F, v = e & l.G, m = e & l.S, g = e & l.P, y = e & l.B, b = v ? r : m ? r[t] || (r[t] = {}) : (r[t] || {})[c], x = v ? i : i[t] || (i[t] = {}), w = x[c] || (x[c] = {}); for (u in v && (n = t), n) h = !p && b && void 0 !== b[u], f = (h ? b : n)[u], d = y && h ? s(f, r) : g && "function" == typeof f ? s(Function.call, f) : f, b && a(b, u, f, e & l.U), x[u] != f && o(x, u, d), g && w[u] != f && (w[u] = f) }; r.core = i, l.F = 1, l.G = 2, l.S = 4, l.P = 8, l.B = 16, l.W = 32, l.U = 64, l.R = 128, e.exports = l }, e67d: function (e, t) { (function (e) { var t = "currentScript", n = e.getElementsByTagName("script"); t in e || Object.defineProperty(e, t, { get: function () { try { throw new Error } catch (r) { var e, t = (/.*at [^\(]*\((.*):.+:.+\)$/gi.exec(r.stack) || [!1])[1]; for (e in n) if (n[e].src == t || "interactive" == n[e].readyState) return n[e]; return null } } }) })(document) }, e7ad: function (e, t) { var n = e.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); "number" == typeof __g && (__g = n) }, eafa: function (e, t, n) { var r = n("ee21"), i = Math.min; e.exports = function (e) { return e > 0 ? i(r(e), 9007199254740991) : 0 } }, ebc3: function (e, t, n) { "use strict"; var r = n("064e"), i = n("cc33"); e.exports = function (e, t, n) { t in e ? r.f(e, t, i(0, n)) : e[t] = n } }, ec25: function (e, t, n) { "use strict"; var r = n("4ce5"), i = n("e46b"), o = n("008a"), a = n("d0bc"), s = n("2285"), c = n("eafa"), l = n("ebc3"), u = n("f878"); i(i.S + i.F * !n("d0c5")((function (e) { Array.from(e) })), "Array", { from: function (e) { var t, n, i, h, f = o(e), d = "function" == typeof this ? this : Array, p = arguments.length, v = p > 1 ? arguments[1] : void 0, m = void 0 !== v, g = 0, y = u(f); if (m && (v = r(v, p > 2 ? arguments[2] : void 0, 2)), void 0 == y || d == Array && s(y)) for (t = c(f.length), n = new d(t); t > g; g++)l(n, g, m ? v(f[g], g) : f[g]); else for (h = y.call(f), n = new d; !(i = h.next()).done; g++)l(n, g, m ? a(h, v, [i.value, g], !0) : i.value); return n.length = g, n } }) }, ec45: function (e, t) { var n = 0, r = Math.random(); e.exports = function (e) { return "Symbol(".concat(void 0 === e ? "" : e, ")_", (++n + r).toString(36)) } }, ee21: function (e, t) { var n = Math.ceil, r = Math.floor; e.exports = function (e) { return isNaN(e = +e) ? 0 : (e > 0 ? r : n)(e) } }, f091: function (e, t, n) { var r = n("80a9"), i = n("2f77"), o = n("4f18"); e.exports = function (e) { var t = r(e), n = i.f; if (n) { var a, s = n(e), c = o.f, l = 0; while (s.length > l) c.call(e, a = s[l++]) && t.push(a) } return t } }, f1fe: function (e, t, n) { "use strict"; var r = n("69b3"); e.exports = function () { var e = r(this), t = ""; return e.global && (t += "g"), e.ignoreCase && (t += "i"), e.multiline && (t += "m"), e.unicode && (t += "u"), e.sticky && (t += "y"), t } }, f58a: function (e, t, n) { var r = n("ee21"), i = Math.max, o = Math.min; e.exports = function (e, t) { return e = r(e), e < 0 ? i(e + t, 0) : o(e, t) } }, f6b4: function (e, t) { e.exports = function (e) { if (void 0 == e) throw TypeError("Can't call method on  " + e); return e } }, f71f: function (e, t, n) { var r = n("ec45")("meta"), i = n("fb68"), o = n("e042"), a = n("064e").f, s = 0, c = Object.isExtensible || function () { return !0 }, l = !n("238a")((function () { return c(Object.preventExtensions({})) })), u = function (e) { a(e, r, { value: { i: "O" + ++s, w: {} } }) }, h = function (e, t) { if (!i(e)) return "symbol" == typeof e ? e : ("string" == typeof e ? "S" : "P") + e; if (!o(e, r)) { if (!c(e)) return "F"; if (!t) return "E"; u(e) } return e[r].i }, f = function (e, t) { if (!o(e, r)) { if (!c(e)) return !0; if (!t) return !1; u(e) } return e[r].w }, d = function (e) { return l && p.NEED && c(e) && !o(e, r) && u(e), e }, p = e.exports = { KEY: r, NEED: !1, fastKey: h, getWeak: f, onFreeze: d } }, f878: function (e, t, n) { var r = n("7e23"), i = n("cb3d")("iterator"), o = n("da6d"); e.exports = n("7ddc").getIteratorMethod = function (e) { if (void 0 != e) return e[i] || e["@@iterator"] || o[r(e)] } }, fb68: function (e, t) { e.exports = function (e) { return "object" === typeof e ? null !== e : "function" === typeof e } }, fc81: function (e, t, n) { var r = n("ee21"), i = n("f6b4"); e.exports = function (e) { return function (t, n) { var o, a, s = String(i(t)), c = r(n), l = s.length; return c < 0 || c >= l ? e ? "" : void 0 : (o = s.charCodeAt(c), o < 55296 || o > 56319 || c + 1 === l || (a = s.charCodeAt(c + 1)) < 56320 || a > 57343 ? e ? s.charAt(c) : o : e ? s.slice(c, c + 2) : a - 56320 + (o - 55296 << 10) + 65536) } } } }) })) }, aa47: function (e, t, n) {
+                    "use strict";
+/**!
+ * Sortable 1.10.2
+ * @author	RubaXa   <trash@rubaxa.org>
+ * @author	owenm    <owen23355@gmail.com>
+ * @license MIT
+ */function r(e) { return r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r(e) } function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function o() { return o = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }, o.apply(this, arguments) } function a(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}, r = Object.keys(n); "function" === typeof Object.getOwnPropertySymbols && (r = r.concat(Object.getOwnPropertySymbols(n).filter((function (e) { return Object.getOwnPropertyDescriptor(n, e).enumerable })))), r.forEach((function (t) { i(e, t, n[t]) })) } return e } function s(e, t) { if (null == e) return {}; var n, r, i = {}, o = Object.keys(e); for (r = 0; r < o.length; r++)n = o[r], t.indexOf(n) >= 0 || (i[n] = e[n]); return i } function c(e, t) { if (null == e) return {}; var n, r, i = s(e, t); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); for (r = 0; r < o.length; r++)n = o[r], t.indexOf(n) >= 0 || Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n]) } return i } function l(e) { return u(e) || h(e) || f() } function u(e) { if (Array.isArray(e)) { for (var t = 0, n = new Array(e.length); t < e.length; t++)n[t] = e[t]; return n } } function h(e) { if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e) } function f() { throw new TypeError("Invalid attempt to spread non-iterable instance") } n.r(t), n.d(t, "MultiDrag", (function () { return It })), n.d(t, "Sortable", (function () { return Qe })), n.d(t, "Swap", (function () { return kt })); var d = "1.10.2"; function p(e) { if ("undefined" !== typeof window && window.navigator) return !!navigator.userAgent.match(e) } var v = p(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i), m = p(/Edge/i), g = p(/firefox/i), y = p(/safari/i) && !p(/chrome/i) && !p(/android/i), b = p(/iP(ad|od|hone)/i), x = p(/chrome/i) && p(/android/i), w = { capture: !1, passive: !1 }; function _(e, t, n) { e.addEventListener(t, n, !v && w) } function C(e, t, n) { e.removeEventListener(t, n, !v && w) } function M(e, t) { if (t) { if (">" === t[0] && (t = t.substring(1)), e) try { if (e.matches) return e.matches(t); if (e.msMatchesSelector) return e.msMatchesSelector(t); if (e.webkitMatchesSelector) return e.webkitMatchesSelector(t) } catch (n) { return !1 } return !1 } } function O(e) { return e.host && e !== document && e.host.nodeType ? e.host : e.parentNode } function k(e, t, n, r) { if (e) { n = n || document; do { if (null != t && (">" === t[0] ? e.parentNode === n && M(e, t) : M(e, t)) || r && e === n) return e; if (e === n) break } while (e = O(e)) } return null } var S, T = /\s+/g; function A(e, t, n) { if (e && t) if (e.classList) e.classList[n ? "add" : "remove"](t); else { var r = (" " + e.className + " ").replace(T, " ").replace(" " + t + " ", " "); e.className = (r + (n ? " " + t : "")).replace(T, " ") } } function L(e, t, n) { var r = e && e.style; if (r) { if (void 0 === n) return document.defaultView && document.defaultView.getComputedStyle ? n = document.defaultView.getComputedStyle(e, "") : e.currentStyle && (n = e.currentStyle), void 0 === t ? n : n[t]; t in r || -1 !== t.indexOf("webkit") || (t = "-webkit-" + t), r[t] = n + ("string" === typeof n ? "" : "px") } } function j(e, t) { var n = ""; if ("string" === typeof e) n = e; else do { var r = L(e, "transform"); r && "none" !== r && (n = r + " " + n) } while (!t && (e = e.parentNode)); var i = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix; return i && new i(n) } function z(e, t, n) { if (e) { var r = e.getElementsByTagName(t), i = 0, o = r.length; if (n) for (; i < o; i++)n(r[i], i); return r } return [] } function E() { var e = document.scrollingElement; return e || document.documentElement } function P(e, t, n, r, i) { if (e.getBoundingClientRect || e === window) { var o, a, s, c, l, u, h; if (e !== window && e !== E() ? (o = e.getBoundingClientRect(), a = o.top, s = o.left, c = o.bottom, l = o.right, u = o.height, h = o.width) : (a = 0, s = 0, c = window.innerHeight, l = window.innerWidth, u = window.innerHeight, h = window.innerWidth), (t || n) && e !== window && (i = i || e.parentNode, !v)) do { if (i && i.getBoundingClientRect && ("none" !== L(i, "transform") || n && "static" !== L(i, "position"))) { var f = i.getBoundingClientRect(); a -= f.top + parseInt(L(i, "border-top-width")), s -= f.left + parseInt(L(i, "border-left-width")), c = a + o.height, l = s + o.width; break } } while (i = i.parentNode); if (r && e !== window) { var d = j(i || e), p = d && d.a, m = d && d.d; d && (a /= m, s /= p, h /= p, u /= m, c = a + u, l = s + h) } return { top: a, left: s, bottom: c, right: l, width: h, height: u } } } function D(e, t, n) { var r = F(e, !0), i = P(e)[t]; while (r) { var o = P(r)[n], a = void 0; if (a = "top" === n || "left" === n ? i >= o : i <= o, !a) return r; if (r === E()) break; r = F(r, !1) } return !1 } function H(e, t, n) { var r = 0, i = 0, o = e.children; while (i < o.length) { if ("none" !== o[i].style.display && o[i] !== Qe.ghost && o[i] !== Qe.dragged && k(o[i], n.draggable, e, !1)) { if (r === t) return o[i]; r++ } i++ } return null } function V(e, t) { var n = e.lastElementChild; while (n && (n === Qe.ghost || "none" === L(n, "display") || t && !M(n, t))) n = n.previousElementSibling; return n || null } function I(e, t) { var n = 0; if (!e || !e.parentNode) return -1; while (e = e.previousElementSibling) "TEMPLATE" === e.nodeName.toUpperCase() || e === Qe.clone || t && !M(e, t) || n++; return n } function N(e) { var t = 0, n = 0, r = E(); if (e) do { var i = j(e), o = i.a, a = i.d; t += e.scrollLeft * o, n += e.scrollTop * a } while (e !== r && (e = e.parentNode)); return [t, n] } function R(e, t) { for (var n in e) if (e.hasOwnProperty(n)) for (var r in t) if (t.hasOwnProperty(r) && t[r] === e[n][r]) return Number(n); return -1 } function F(e, t) { if (!e || !e.getBoundingClientRect) return E(); var n = e, r = !1; do { if (n.clientWidth < n.scrollWidth || n.clientHeight < n.scrollHeight) { var i = L(n); if (n.clientWidth < n.scrollWidth && ("auto" == i.overflowX || "scroll" == i.overflowX) || n.clientHeight < n.scrollHeight && ("auto" == i.overflowY || "scroll" == i.overflowY)) { if (!n.getBoundingClientRect || n === document.body) return E(); if (r || t) return n; r = !0 } } } while (n = n.parentNode); return E() } function Y(e, t) { if (e && t) for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]); return e } function $(e, t) { return Math.round(e.top) === Math.round(t.top) && Math.round(e.left) === Math.round(t.left) && Math.round(e.height) === Math.round(t.height) && Math.round(e.width) === Math.round(t.width) } function B(e, t) { return function () { if (!S) { var n = arguments, r = this; 1 === n.length ? e.call(r, n[0]) : e.apply(r, n), S = setTimeout((function () { S = void 0 }), t) } } } function W() { clearTimeout(S), S = void 0 } function q(e, t, n) { e.scrollLeft += t, e.scrollTop += n } function U(e) { var t = window.Polymer, n = window.jQuery || window.Zepto; return t && t.dom ? t.dom(e).cloneNode(!0) : n ? n(e).clone(!0)[0] : e.cloneNode(!0) } function K(e, t) { L(e, "position", "absolute"), L(e, "top", t.top), L(e, "left", t.left), L(e, "width", t.width), L(e, "height", t.height) } function G(e) { L(e, "position", ""), L(e, "top", ""), L(e, "left", ""), L(e, "width", ""), L(e, "height", "") } var X = "Sortable" + (new Date).getTime(); function J() { var e, t = []; return { captureAnimationState: function () { if (t = [], this.options.animation) { var e = [].slice.call(this.el.children); e.forEach((function (e) { if ("none" !== L(e, "display") && e !== Qe.ghost) { t.push({ target: e, rect: P(e) }); var n = a({}, t[t.length - 1].rect); if (e.thisAnimationDuration) { var r = j(e, !0); r && (n.top -= r.f, n.left -= r.e) } e.fromRect = n } })) } }, addAnimationState: function (e) { t.push(e) }, removeAnimationState: function (e) { t.splice(R(t, { target: e }), 1) }, animateAll: function (n) { var r = this; if (!this.options.animation) return clearTimeout(e), void ("function" === typeof n && n()); var i = !1, o = 0; t.forEach((function (e) { var t = 0, n = e.target, a = n.fromRect, s = P(n), c = n.prevFromRect, l = n.prevToRect, u = e.rect, h = j(n, !0); h && (s.top -= h.f, s.left -= h.e), n.toRect = s, n.thisAnimationDuration && $(c, s) && !$(a, s) && (u.top - s.top) / (u.left - s.left) === (a.top - s.top) / (a.left - s.left) && (t = Z(u, c, l, r.options)), $(s, a) || (n.prevFromRect = a, n.prevToRect = s, t || (t = r.options.animation), r.animate(n, u, s, t)), t && (i = !0, o = Math.max(o, t), clearTimeout(n.animationResetTimer), n.animationResetTimer = setTimeout((function () { n.animationTime = 0, n.prevFromRect = null, n.fromRect = null, n.prevToRect = null, n.thisAnimationDuration = null }), t), n.thisAnimationDuration = t) })), clearTimeout(e), i ? e = setTimeout((function () { "function" === typeof n && n() }), o) : "function" === typeof n && n(), t = [] }, animate: function (e, t, n, r) { if (r) { L(e, "transition", ""), L(e, "transform", ""); var i = j(this.el), o = i && i.a, a = i && i.d, s = (t.left - n.left) / (o || 1), c = (t.top - n.top) / (a || 1); e.animatingX = !!s, e.animatingY = !!c, L(e, "transform", "translate3d(" + s + "px," + c + "px,0)"), Q(e), L(e, "transition", "transform " + r + "ms" + (this.options.easing ? " " + this.options.easing : "")), L(e, "transform", "translate3d(0,0,0)"), "number" === typeof e.animated && clearTimeout(e.animated), e.animated = setTimeout((function () { L(e, "transition", ""), L(e, "transform", ""), e.animated = !1, e.animatingX = !1, e.animatingY = !1 }), r) } } } } function Q(e) { return e.offsetWidth } function Z(e, t, n, r) { return Math.sqrt(Math.pow(t.top - e.top, 2) + Math.pow(t.left - e.left, 2)) / Math.sqrt(Math.pow(t.top - n.top, 2) + Math.pow(t.left - n.left, 2)) * r.animation } var ee = [], te = { initializeByDefault: !0 }, ne = { mount: function (e) { for (var t in te) te.hasOwnProperty(t) && !(t in e) && (e[t] = te[t]); ee.push(e) }, pluginEvent: function (e, t, n) { var r = this; this.eventCanceled = !1, n.cancel = function () { r.eventCanceled = !0 }; var i = e + "Global"; ee.forEach((function (r) { t[r.pluginName] && (t[r.pluginName][i] && t[r.pluginName][i](a({ sortable: t }, n)), t.options[r.pluginName] && t[r.pluginName][e] && t[r.pluginName][e](a({ sortable: t }, n))) })) }, initializePlugins: function (e, t, n, r) { for (var i in ee.forEach((function (r) { var i = r.pluginName; if (e.options[i] || r.initializeByDefault) { var a = new r(e, t, e.options); a.sortable = e, a.options = e.options, e[i] = a, o(n, a.defaults) } })), e.options) if (e.options.hasOwnProperty(i)) { var a = this.modifyOption(e, i, e.options[i]); "undefined" !== typeof a && (e.options[i] = a) } }, getEventProperties: function (e, t) { var n = {}; return ee.forEach((function (r) { "function" === typeof r.eventProperties && o(n, r.eventProperties.call(t[r.pluginName], e)) })), n }, modifyOption: function (e, t, n) { var r; return ee.forEach((function (i) { e[i.pluginName] && i.optionListeners && "function" === typeof i.optionListeners[t] && (r = i.optionListeners[t].call(e[i.pluginName], n)) })), r } }; function re(e) { var t = e.sortable, n = e.rootEl, r = e.name, i = e.targetEl, o = e.cloneEl, s = e.toEl, c = e.fromEl, l = e.oldIndex, u = e.newIndex, h = e.oldDraggableIndex, f = e.newDraggableIndex, d = e.originalEvent, p = e.putSortable, g = e.extraEventProperties; if (t = t || n && n[X], t) { var y, b = t.options, x = "on" + r.charAt(0).toUpperCase() + r.substr(1); !window.CustomEvent || v || m ? (y = document.createEvent("Event"), y.initEvent(r, !0, !0)) : y = new CustomEvent(r, { bubbles: !0, cancelable: !0 }), y.to = s || n, y.from = c || n, y.item = i || n, y.clone = o, y.oldIndex = l, y.newIndex = u, y.oldDraggableIndex = h, y.newDraggableIndex = f, y.originalEvent = d, y.pullMode = p ? p.lastPutMode : void 0; var w = a({}, g, ne.getEventProperties(r, t)); for (var _ in w) y[_] = w[_]; n && n.dispatchEvent(y), b[x] && b[x].call(t, y) } } var ie = function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, r = n.evt, i = c(n, ["evt"]); ne.pluginEvent.bind(Qe)(e, t, a({ dragEl: ae, parentEl: se, ghostEl: ce, rootEl: le, nextEl: ue, lastDownEl: he, cloneEl: fe, cloneHidden: de, dragStarted: ke, putSortable: be, activeSortable: Qe.active, originalEvent: r, oldIndex: pe, oldDraggableIndex: me, newIndex: ve, newDraggableIndex: ge, hideGhostForTarget: Ke, unhideGhostForTarget: Ge, cloneNowHidden: function () { de = !0 }, cloneNowShown: function () { de = !1 }, dispatchSortableEvent: function (e) { oe({ sortable: t, name: e, originalEvent: r }) } }, i)) }; function oe(e) { re(a({ putSortable: be, cloneEl: fe, targetEl: ae, rootEl: le, oldIndex: pe, oldDraggableIndex: me, newIndex: ve, newDraggableIndex: ge }, e)) } var ae, se, ce, le, ue, he, fe, de, pe, ve, me, ge, ye, be, xe, we, _e, Ce, Me, Oe, ke, Se, Te, Ae, Le, je = !1, ze = !1, Ee = [], Pe = !1, De = !1, He = [], Ve = !1, Ie = [], Ne = "undefined" !== typeof document, Re = b, Fe = m || v ? "cssFloat" : "float", Ye = Ne && !x && !b && "draggable" in document.createElement("div"), $e = function () { if (Ne) { if (v) return !1; var e = document.createElement("x"); return e.style.cssText = "pointer-events:auto", "auto" === e.style.pointerEvents } }(), Be = function (e, t) { var n = L(e), r = parseInt(n.width) - parseInt(n.paddingLeft) - parseInt(n.paddingRight) - parseInt(n.borderLeftWidth) - parseInt(n.borderRightWidth), i = H(e, 0, t), o = H(e, 1, t), a = i && L(i), s = o && L(o), c = a && parseInt(a.marginLeft) + parseInt(a.marginRight) + P(i).width, l = s && parseInt(s.marginLeft) + parseInt(s.marginRight) + P(o).width; if ("flex" === n.display) return "column" === n.flexDirection || "column-reverse" === n.flexDirection ? "vertical" : "horizontal"; if ("grid" === n.display) return n.gridTemplateColumns.split(" ").length <= 1 ? "vertical" : "horizontal"; if (i && a["float"] && "none" !== a["float"]) { var u = "left" === a["float"] ? "left" : "right"; return !o || "both" !== s.clear && s.clear !== u ? "horizontal" : "vertical" } return i && ("block" === a.display || "flex" === a.display || "table" === a.display || "grid" === a.display || c >= r && "none" === n[Fe] || o && "none" === n[Fe] && c + l > r) ? "vertical" : "horizontal" }, We = function (e, t, n) { var r = n ? e.left : e.top, i = n ? e.right : e.bottom, o = n ? e.width : e.height, a = n ? t.left : t.top, s = n ? t.right : t.bottom, c = n ? t.width : t.height; return r === a || i === s || r + o / 2 === a + c / 2 }, qe = function (e, t) { var n; return Ee.some((function (r) { if (!V(r)) { var i = P(r), o = r[X].options.emptyInsertThreshold, a = e >= i.left - o && e <= i.right + o, s = t >= i.top - o && t <= i.bottom + o; return o && a && s ? n = r : void 0 } })), n }, Ue = function (e) { function t(e, n) { return function (r, i, o, a) { var s = r.options.group.name && i.options.group.name && r.options.group.name === i.options.group.name; if (null == e && (n || s)) return !0; if (null == e || !1 === e) return !1; if (n && "clone" === e) return e; if ("function" === typeof e) return t(e(r, i, o, a), n)(r, i, o, a); var c = (n ? r : i).options.group.name; return !0 === e || "string" === typeof e && e === c || e.join && e.indexOf(c) > -1 } } var n = {}, i = e.group; i && "object" == r(i) || (i = { name: i }), n.name = i.name, n.checkPull = t(i.pull, !0), n.checkPut = t(i.put), n.revertClone = i.revertClone, e.group = n }, Ke = function () { !$e && ce && L(ce, "display", "none") }, Ge = function () { !$e && ce && L(ce, "display", "") }; Ne && document.addEventListener("click", (function (e) { if (ze) return e.preventDefault(), e.stopPropagation && e.stopPropagation(), e.stopImmediatePropagation && e.stopImmediatePropagation(), ze = !1, !1 }), !0); var Xe = function (e) { if (ae) { e = e.touches ? e.touches[0] : e; var t = qe(e.clientX, e.clientY); if (t) { var n = {}; for (var r in e) e.hasOwnProperty(r) && (n[r] = e[r]); n.target = n.rootEl = t, n.preventDefault = void 0, n.stopPropagation = void 0, t[X]._onDragOver(n) } } }, Je = function (e) { ae && ae.parentNode[X]._isOutsideThisEl(e.target) }; function Qe(e, t) { if (!e || !e.nodeType || 1 !== e.nodeType) throw "Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e)); this.el = e, this.options = t = o({}, t), e[X] = this; var n = { group: null, sort: !0, disabled: !1, store: null, handle: null, draggable: /^[uo]l$/i.test(e.nodeName) ? ">li" : ">*", swapThreshold: 1, invertSwap: !1, invertedSwapThreshold: null, removeCloneOnHide: !0, direction: function () { return Be(e, this.options) }, ghostClass: "sortable-ghost", chosenClass: "sortable-chosen", dragClass: "sortable-drag", ignore: "a, img", filter: null, preventOnFilter: !0, animation: 0, easing: null, setData: function (e, t) { e.setData("Text", t.textContent) }, dropBubble: !1, dragoverBubble: !1, dataIdAttr: "data-id", delay: 0, delayOnTouchOnly: !1, touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1, forceFallback: !1, fallbackClass: "sortable-fallback", fallbackOnBody: !1, fallbackTolerance: 0, fallbackOffset: { x: 0, y: 0 }, supportPointer: !1 !== Qe.supportPointer && "PointerEvent" in window, emptyInsertThreshold: 5 }; for (var r in ne.initializePlugins(this, e, n), n) !(r in t) && (t[r] = n[r]); for (var i in Ue(t), this) "_" === i.charAt(0) && "function" === typeof this[i] && (this[i] = this[i].bind(this)); this.nativeDraggable = !t.forceFallback && Ye, this.nativeDraggable && (this.options.touchStartThreshold = 1), t.supportPointer ? _(e, "pointerdown", this._onTapStart) : (_(e, "mousedown", this._onTapStart), _(e, "touchstart", this._onTapStart)), this.nativeDraggable && (_(e, "dragover", this), _(e, "dragenter", this)), Ee.push(this.el), t.store && t.store.get && this.sort(t.store.get(this) || []), o(this, J()) } function Ze(e) { e.dataTransfer && (e.dataTransfer.dropEffect = "move"), e.cancelable && e.preventDefault() } function et(e, t, n, r, i, o, a, s) { var c, l, u = e[X], h = u.options.onMove; return !window.CustomEvent || v || m ? (c = document.createEvent("Event"), c.initEvent("move", !0, !0)) : c = new CustomEvent("move", { bubbles: !0, cancelable: !0 }), c.to = t, c.from = e, c.dragged = n, c.draggedRect = r, c.related = i || t, c.relatedRect = o || P(t), c.willInsertAfter = s, c.originalEvent = a, e.dispatchEvent(c), h && (l = h.call(u, c, a)), l } function tt(e) { e.draggable = !1 } function nt() { Ve = !1 } function rt(e, t, n) { var r = P(V(n.el, n.options.draggable)), i = 10; return t ? e.clientX > r.right + i || e.clientX <= r.right && e.clientY > r.bottom && e.clientX >= r.left : e.clientX > r.right && e.clientY > r.top || e.clientX <= r.right && e.clientY > r.bottom + i } function it(e, t, n, r, i, o, a, s) { var c = r ? e.clientY : e.clientX, l = r ? n.height : n.width, u = r ? n.top : n.left, h = r ? n.bottom : n.right, f = !1; if (!a) if (s && Ae < l * i) { if (!Pe && (1 === Te ? c > u + l * o / 2 : c < h - l * o / 2) && (Pe = !0), Pe) f = !0; else if (1 === Te ? c < u + Ae : c > h - Ae) return -Te } else if (c > u + l * (1 - i) / 2 && c < h - l * (1 - i) / 2) return ot(t); return f = f || a, f && (c < u + l * o / 2 || c > h - l * o / 2) ? c > u + l / 2 ? 1 : -1 : 0 } function ot(e) { return I(ae) < I(e) ? 1 : -1 } function at(e) { var t = e.tagName + e.className + e.src + e.href + e.textContent, n = t.length, r = 0; while (n--) r += t.charCodeAt(n); return r.toString(36) } function st(e) { Ie.length = 0; var t = e.getElementsByTagName("input"), n = t.length; while (n--) { var r = t[n]; r.checked && Ie.push(r) } } function ct(e) { return setTimeout(e, 0) } function lt(e) { return clearTimeout(e) } Qe.prototype = { constructor: Qe, _isOutsideThisEl: function (e) { this.el.contains(e) || e === this.el || (Se = null) }, _getDirection: function (e, t) { return "function" === typeof this.options.direction ? this.options.direction.call(this, e, t, ae) : this.options.direction }, _onTapStart: function (e) { if (e.cancelable) { var t = this, n = this.el, r = this.options, i = r.preventOnFilter, o = e.type, a = e.touches && e.touches[0] || e.pointerType && "touch" === e.pointerType && e, s = (a || e).target, c = e.target.shadowRoot && (e.path && e.path[0] || e.composedPath && e.composedPath()[0]) || s, l = r.filter; if (st(n), !ae && !(/mousedown|pointerdown/.test(o) && 0 !== e.button || r.disabled) && !c.isContentEditable && (s = k(s, r.draggable, n, !1), (!s || !s.animated) && he !== s)) { if (pe = I(s), me = I(s, r.draggable), "function" === typeof l) { if (l.call(this, e, s, this)) return oe({ sortable: t, rootEl: c, name: "filter", targetEl: s, toEl: n, fromEl: n }), ie("filter", t, { evt: e }), void (i && e.cancelable && e.preventDefault()) } else if (l && (l = l.split(",").some((function (r) { if (r = k(c, r.trim(), n, !1), r) return oe({ sortable: t, rootEl: r, name: "filter", targetEl: s, fromEl: n, toEl: n }), ie("filter", t, { evt: e }), !0 })), l)) return void (i && e.cancelable && e.preventDefault()); r.handle && !k(c, r.handle, n, !1) || this._prepareDragStart(e, a, s) } } }, _prepareDragStart: function (e, t, n) { var r, i = this, o = i.el, a = i.options, s = o.ownerDocument; if (n && !ae && n.parentNode === o) { var c = P(n); if (le = o, ae = n, se = ae.parentNode, ue = ae.nextSibling, he = n, ye = a.group, Qe.dragged = ae, xe = { target: ae, clientX: (t || e).clientX, clientY: (t || e).clientY }, Me = xe.clientX - c.left, Oe = xe.clientY - c.top, this._lastX = (t || e).clientX, this._lastY = (t || e).clientY, ae.style["will-change"] = "all", r = function () { ie("delayEnded", i, { evt: e }), Qe.eventCanceled ? i._onDrop() : (i._disableDelayedDragEvents(), !g && i.nativeDraggable && (ae.draggable = !0), i._triggerDragStart(e, t), oe({ sortable: i, name: "choose", originalEvent: e }), A(ae, a.chosenClass, !0)) }, a.ignore.split(",").forEach((function (e) { z(ae, e.trim(), tt) })), _(s, "dragover", Xe), _(s, "mousemove", Xe), _(s, "touchmove", Xe), _(s, "mouseup", i._onDrop), _(s, "touchend", i._onDrop), _(s, "touchcancel", i._onDrop), g && this.nativeDraggable && (this.options.touchStartThreshold = 4, ae.draggable = !0), ie("delayStart", this, { evt: e }), !a.delay || a.delayOnTouchOnly && !t || this.nativeDraggable && (m || v)) r(); else { if (Qe.eventCanceled) return void this._onDrop(); _(s, "mouseup", i._disableDelayedDrag), _(s, "touchend", i._disableDelayedDrag), _(s, "touchcancel", i._disableDelayedDrag), _(s, "mousemove", i._delayedDragTouchMoveHandler), _(s, "touchmove", i._delayedDragTouchMoveHandler), a.supportPointer && _(s, "pointermove", i._delayedDragTouchMoveHandler), i._dragStartTimer = setTimeout(r, a.delay) } } }, _delayedDragTouchMoveHandler: function (e) { var t = e.touches ? e.touches[0] : e; Math.max(Math.abs(t.clientX - this._lastX), Math.abs(t.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1)) && this._disableDelayedDrag() }, _disableDelayedDrag: function () { ae && tt(ae), clearTimeout(this._dragStartTimer), this._disableDelayedDragEvents() }, _disableDelayedDragEvents: function () { var e = this.el.ownerDocument; C(e, "mouseup", this._disableDelayedDrag), C(e, "touchend", this._disableDelayedDrag), C(e, "touchcancel", this._disableDelayedDrag), C(e, "mousemove", this._delayedDragTouchMoveHandler), C(e, "touchmove", this._delayedDragTouchMoveHandler), C(e, "pointermove", this._delayedDragTouchMoveHandler) }, _triggerDragStart: function (e, t) { t = t || "touch" == e.pointerType && e, !this.nativeDraggable || t ? this.options.supportPointer ? _(document, "pointermove", this._onTouchMove) : _(document, t ? "touchmove" : "mousemove", this._onTouchMove) : (_(ae, "dragend", this), _(le, "dragstart", this._onDragStart)); try { document.selection ? ct((function () { document.selection.empty() })) : window.getSelection().removeAllRanges() } catch (n) { } }, _dragStarted: function (e, t) { if (je = !1, le && ae) { ie("dragStarted", this, { evt: t }), this.nativeDraggable && _(document, "dragover", Je); var n = this.options; !e && A(ae, n.dragClass, !1), A(ae, n.ghostClass, !0), Qe.active = this, e && this._appendGhost(), oe({ sortable: this, name: "start", originalEvent: t }) } else this._nulling() }, _emulateDragOver: function () { if (we) { this._lastX = we.clientX, this._lastY = we.clientY, Ke(); var e = document.elementFromPoint(we.clientX, we.clientY), t = e; while (e && e.shadowRoot) { if (e = e.shadowRoot.elementFromPoint(we.clientX, we.clientY), e === t) break; t = e } if (ae.parentNode[X]._isOutsideThisEl(e), t) do { if (t[X]) { var n = void 0; if (n = t[X]._onDragOver({ clientX: we.clientX, clientY: we.clientY, target: e, rootEl: t }), n && !this.options.dragoverBubble) break } e = t } while (t = t.parentNode); Ge() } }, _onTouchMove: function (e) { if (xe) { var t = this.options, n = t.fallbackTolerance, r = t.fallbackOffset, i = e.touches ? e.touches[0] : e, o = ce && j(ce, !0), a = ce && o && o.a, s = ce && o && o.d, c = Re && Le && N(Le), l = (i.clientX - xe.clientX + r.x) / (a || 1) + (c ? c[0] - He[0] : 0) / (a || 1), u = (i.clientY - xe.clientY + r.y) / (s || 1) + (c ? c[1] - He[1] : 0) / (s || 1); if (!Qe.active && !je) { if (n && Math.max(Math.abs(i.clientX - this._lastX), Math.abs(i.clientY - this._lastY)) < n) return; this._onDragStart(e, !0) } if (ce) { o ? (o.e += l - (_e || 0), o.f += u - (Ce || 0)) : o = { a: 1, b: 0, c: 0, d: 1, e: l, f: u }; var h = "matrix(".concat(o.a, ",").concat(o.b, ",").concat(o.c, ",").concat(o.d, ",").concat(o.e, ",").concat(o.f, ")"); L(ce, "webkitTransform", h), L(ce, "mozTransform", h), L(ce, "msTransform", h), L(ce, "transform", h), _e = l, Ce = u, we = i } e.cancelable && e.preventDefault() } }, _appendGhost: function () { if (!ce) { var e = this.options.fallbackOnBody ? document.body : le, t = P(ae, !0, Re, !0, e), n = this.options; if (Re) { Le = e; while ("static" === L(Le, "position") && "none" === L(Le, "transform") && Le !== document) Le = Le.parentNode; Le !== document.body && Le !== document.documentElement ? (Le === document && (Le = E()), t.top += Le.scrollTop, t.left += Le.scrollLeft) : Le = E(), He = N(Le) } ce = ae.cloneNode(!0), A(ce, n.ghostClass, !1), A(ce, n.fallbackClass, !0), A(ce, n.dragClass, !0), L(ce, "transition", ""), L(ce, "transform", ""), L(ce, "box-sizing", "border-box"), L(ce, "margin", 0), L(ce, "top", t.top), L(ce, "left", t.left), L(ce, "width", t.width), L(ce, "height", t.height), L(ce, "opacity", "0.8"), L(ce, "position", Re ? "absolute" : "fixed"), L(ce, "zIndex", "100000"), L(ce, "pointerEvents", "none"), Qe.ghost = ce, e.appendChild(ce), L(ce, "transform-origin", Me / parseInt(ce.style.width) * 100 + "% " + Oe / parseInt(ce.style.height) * 100 + "%") } }, _onDragStart: function (e, t) { var n = this, r = e.dataTransfer, i = n.options; ie("dragStart", this, { evt: e }), Qe.eventCanceled ? this._onDrop() : (ie("setupClone", this), Qe.eventCanceled || (fe = U(ae), fe.draggable = !1, fe.style["will-change"] = "", this._hideClone(), A(fe, this.options.chosenClass, !1), Qe.clone = fe), n.cloneId = ct((function () { ie("clone", n), Qe.eventCanceled || (n.options.removeCloneOnHide || le.insertBefore(fe, ae), n._hideClone(), oe({ sortable: n, name: "clone" })) })), !t && A(ae, i.dragClass, !0), t ? (ze = !0, n._loopId = setInterval(n._emulateDragOver, 50)) : (C(document, "mouseup", n._onDrop), C(document, "touchend", n._onDrop), C(document, "touchcancel", n._onDrop), r && (r.effectAllowed = "move", i.setData && i.setData.call(n, r, ae)), _(document, "drop", n), L(ae, "transform", "translateZ(0)")), je = !0, n._dragStartId = ct(n._dragStarted.bind(n, t, e)), _(document, "selectstart", n), ke = !0, y && L(document.body, "user-select", "none")) }, _onDragOver: function (e) { var t, n, r, i, o = this.el, s = e.target, c = this.options, l = c.group, u = Qe.active, h = ye === l, f = c.sort, d = be || u, p = this, v = !1; if (!Ve) { if (void 0 !== e.preventDefault && e.cancelable && e.preventDefault(), s = k(s, c.draggable, o, !0), z("dragOver"), Qe.eventCanceled) return v; if (ae.contains(e.target) || s.animated && s.animatingX && s.animatingY || p._ignoreWhileAnimating === s) return H(!1); if (ze = !1, u && !c.disabled && (h ? f || (r = !le.contains(ae)) : be === this || (this.lastPutMode = ye.checkPull(this, u, ae, e)) && l.checkPut(this, u, ae, e))) { if (i = "vertical" === this._getDirection(e, s), t = P(ae), z("dragOverValid"), Qe.eventCanceled) return v; if (r) return se = le, E(), this._hideClone(), z("revert"), Qe.eventCanceled || (ue ? le.insertBefore(ae, ue) : le.appendChild(ae)), H(!0); var m = V(o, c.draggable); if (!m || rt(e, i, this) && !m.animated) { if (m === ae) return H(!1); if (m && o === e.target && (s = m), s && (n = P(s)), !1 !== et(le, o, ae, t, s, n, e, !!s)) return E(), o.appendChild(ae), se = o, N(), H(!0) } else if (s.parentNode === o) { n = P(s); var g, y, b = 0, x = ae.parentNode !== o, w = !We(ae.animated && ae.toRect || t, s.animated && s.toRect || n, i), _ = i ? "top" : "left", C = D(s, "top", "top") || D(ae, "top", "top"), M = C ? C.scrollTop : void 0; if (Se !== s && (g = n[_], Pe = !1, De = !w && c.invertSwap || x), b = it(e, s, n, i, w ? 1 : c.swapThreshold, null == c.invertedSwapThreshold ? c.swapThreshold : c.invertedSwapThreshold, De, Se === s), 0 !== b) { var O = I(ae); do { O -= b, y = se.children[O] } while (y && ("none" === L(y, "display") || y === ce)) } if (0 === b || y === s) return H(!1); Se = s, Te = b; var S = s.nextElementSibling, T = !1; T = 1 === b; var j = et(le, o, ae, t, s, n, e, T); if (!1 !== j) return 1 !== j && -1 !== j || (T = 1 === j), Ve = !0, setTimeout(nt, 30), E(), T && !S ? o.appendChild(ae) : s.parentNode.insertBefore(ae, T ? S : s), C && q(C, 0, M - C.scrollTop), se = ae.parentNode, void 0 === g || De || (Ae = Math.abs(g - P(s)[_])), N(), H(!0) } if (o.contains(ae)) return H(!1) } return !1 } function z(c, l) { ie(c, p, a({ evt: e, isOwner: h, axis: i ? "vertical" : "horizontal", revert: r, dragRect: t, targetRect: n, canSort: f, fromSortable: d, target: s, completed: H, onMove: function (n, r) { return et(le, o, ae, t, n, P(n), e, r) }, changed: N }, l)) } function E() { z("dragOverAnimationCapture"), p.captureAnimationState(), p !== d && d.captureAnimationState() } function H(t) { return z("dragOverCompleted", { insertion: t }), t && (h ? u._hideClone() : u._showClone(p), p !== d && (A(ae, be ? be.options.ghostClass : u.options.ghostClass, !1), A(ae, c.ghostClass, !0)), be !== p && p !== Qe.active ? be = p : p === Qe.active && be && (be = null), d === p && (p._ignoreWhileAnimating = s), p.animateAll((function () { z("dragOverAnimationComplete"), p._ignoreWhileAnimating = null })), p !== d && (d.animateAll(), d._ignoreWhileAnimating = null)), (s === ae && !ae.animated || s === o && !s.animated) && (Se = null), c.dragoverBubble || e.rootEl || s === document || (ae.parentNode[X]._isOutsideThisEl(e.target), !t && Xe(e)), !c.dragoverBubble && e.stopPropagation && e.stopPropagation(), v = !0 } function N() { ve = I(ae), ge = I(ae, c.draggable), oe({ sortable: p, name: "change", toEl: o, newIndex: ve, newDraggableIndex: ge, originalEvent: e }) } }, _ignoreWhileAnimating: null, _offMoveEvents: function () { C(document, "mousemove", this._onTouchMove), C(document, "touchmove", this._onTouchMove), C(document, "pointermove", this._onTouchMove), C(document, "dragover", Xe), C(document, "mousemove", Xe), C(document, "touchmove", Xe) }, _offUpEvents: function () { var e = this.el.ownerDocument; C(e, "mouseup", this._onDrop), C(e, "touchend", this._onDrop), C(e, "pointerup", this._onDrop), C(e, "touchcancel", this._onDrop), C(document, "selectstart", this) }, _onDrop: function (e) { var t = this.el, n = this.options; ve = I(ae), ge = I(ae, n.draggable), ie("drop", this, { evt: e }), se = ae && ae.parentNode, ve = I(ae), ge = I(ae, n.draggable), Qe.eventCanceled || (je = !1, De = !1, Pe = !1, clearInterval(this._loopId), clearTimeout(this._dragStartTimer), lt(this.cloneId), lt(this._dragStartId), this.nativeDraggable && (C(document, "drop", this), C(t, "dragstart", this._onDragStart)), this._offMoveEvents(), this._offUpEvents(), y && L(document.body, "user-select", ""), L(ae, "transform", ""), e && (ke && (e.cancelable && e.preventDefault(), !n.dropBubble && e.stopPropagation()), ce && ce.parentNode && ce.parentNode.removeChild(ce), (le === se || be && "clone" !== be.lastPutMode) && fe && fe.parentNode && fe.parentNode.removeChild(fe), ae && (this.nativeDraggable && C(ae, "dragend", this), tt(ae), ae.style["will-change"] = "", ke && !je && A(ae, be ? be.options.ghostClass : this.options.ghostClass, !1), A(ae, this.options.chosenClass, !1), oe({ sortable: this, name: "unchoose", toEl: se, newIndex: null, newDraggableIndex: null, originalEvent: e }), le !== se ? (ve >= 0 && (oe({ rootEl: se, name: "add", toEl: se, fromEl: le, originalEvent: e }), oe({ sortable: this, name: "remove", toEl: se, originalEvent: e }), oe({ rootEl: se, name: "sort", toEl: se, fromEl: le, originalEvent: e }), oe({ sortable: this, name: "sort", toEl: se, originalEvent: e })), be && be.save()) : ve !== pe && ve >= 0 && (oe({ sortable: this, name: "update", toEl: se, originalEvent: e }), oe({ sortable: this, name: "sort", toEl: se, originalEvent: e })), Qe.active && (null != ve && -1 !== ve || (ve = pe, ge = me), oe({ sortable: this, name: "end", toEl: se, originalEvent: e }), this.save())))), this._nulling() }, _nulling: function () { ie("nulling", this), le = ae = se = ce = ue = fe = he = de = xe = we = ke = ve = ge = pe = me = Se = Te = be = ye = Qe.dragged = Qe.ghost = Qe.clone = Qe.active = null, Ie.forEach((function (e) { e.checked = !0 })), Ie.length = _e = Ce = 0 }, handleEvent: function (e) { switch (e.type) { case "drop": case "dragend": this._onDrop(e); break; case "dragenter": case "dragover": ae && (this._onDragOver(e), Ze(e)); break; case "selectstart": e.preventDefault(); break } }, toArray: function () { for (var e, t = [], n = this.el.children, r = 0, i = n.length, o = this.options; r < i; r++)e = n[r], k(e, o.draggable, this.el, !1) && t.push(e.getAttribute(o.dataIdAttr) || at(e)); return t }, sort: function (e) { var t = {}, n = this.el; this.toArray().forEach((function (e, r) { var i = n.children[r]; k(i, this.options.draggable, n, !1) && (t[e] = i) }), this), e.forEach((function (e) { t[e] && (n.removeChild(t[e]), n.appendChild(t[e])) })) }, save: function () { var e = this.options.store; e && e.set && e.set(this) }, closest: function (e, t) { return k(e, t || this.options.draggable, this.el, !1) }, option: function (e, t) { var n = this.options; if (void 0 === t) return n[e]; var r = ne.modifyOption(this, e, t); n[e] = "undefined" !== typeof r ? r : t, "group" === e && Ue(n) }, destroy: function () { ie("destroy", this); var e = this.el; e[X] = null, C(e, "mousedown", this._onTapStart), C(e, "touchstart", this._onTapStart), C(e, "pointerdown", this._onTapStart), this.nativeDraggable && (C(e, "dragover", this), C(e, "dragenter", this)), Array.prototype.forEach.call(e.querySelectorAll("[draggable]"), (function (e) { e.removeAttribute("draggable") })), this._onDrop(), this._disableDelayedDragEvents(), Ee.splice(Ee.indexOf(this.el), 1), this.el = e = null }, _hideClone: function () { if (!de) { if (ie("hideClone", this), Qe.eventCanceled) return; L(fe, "display", "none"), this.options.removeCloneOnHide && fe.parentNode && fe.parentNode.removeChild(fe), de = !0 } }, _showClone: function (e) { if ("clone" === e.lastPutMode) { if (de) { if (ie("showClone", this), Qe.eventCanceled) return; le.contains(ae) && !this.options.group.revertClone ? le.insertBefore(fe, ae) : ue ? le.insertBefore(fe, ue) : le.appendChild(fe), this.options.group.revertClone && this.animate(ae, fe), L(fe, "display", ""), de = !1 } } else this._hideClone() } }, Ne && _(document, "touchmove", (function (e) { (Qe.active || je) && e.cancelable && e.preventDefault() })), Qe.utils = { on: _, off: C, css: L, find: z, is: function (e, t) { return !!k(e, t, e, !1) }, extend: Y, throttle: B, closest: k, toggleClass: A, clone: U, index: I, nextTick: ct, cancelNextTick: lt, detectDirection: Be, getChild: H }, Qe.get = function (e) { return e[X] }, Qe.mount = function () { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; t[0].constructor === Array && (t = t[0]), t.forEach((function (e) { if (!e.prototype || !e.prototype.constructor) throw "Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(e)); e.utils && (Qe.utils = a({}, Qe.utils, e.utils)), ne.mount(e) })) }, Qe.create = function (e, t) { return new Qe(e, t) }, Qe.version = d; var ut, ht, ft, dt, pt, vt, mt = [], gt = !1; function yt() { function e() { for (var e in this.defaults = { scroll: !0, scrollSensitivity: 30, scrollSpeed: 10, bubbleScroll: !0 }, this) "_" === e.charAt(0) && "function" === typeof this[e] && (this[e] = this[e].bind(this)) } return e.prototype = { dragStarted: function (e) { var t = e.originalEvent; this.sortable.nativeDraggable ? _(document, "dragover", this._handleAutoScroll) : this.options.supportPointer ? _(document, "pointermove", this._handleFallbackAutoScroll) : t.touches ? _(document, "touchmove", this._handleFallbackAutoScroll) : _(document, "mousemove", this._handleFallbackAutoScroll) }, dragOverCompleted: function (e) { var t = e.originalEvent; this.options.dragOverBubble || t.rootEl || this._handleAutoScroll(t) }, drop: function () { this.sortable.nativeDraggable ? C(document, "dragover", this._handleAutoScroll) : (C(document, "pointermove", this._handleFallbackAutoScroll), C(document, "touchmove", this._handleFallbackAutoScroll), C(document, "mousemove", this._handleFallbackAutoScroll)), xt(), bt(), W() }, nulling: function () { pt = ht = ut = gt = vt = ft = dt = null, mt.length = 0 }, _handleFallbackAutoScroll: function (e) { this._handleAutoScroll(e, !0) }, _handleAutoScroll: function (e, t) { var n = this, r = (e.touches ? e.touches[0] : e).clientX, i = (e.touches ? e.touches[0] : e).clientY, o = document.elementFromPoint(r, i); if (pt = e, t || m || v || y) { _t(e, this.options, o, t); var a = F(o, !0); !gt || vt && r === ft && i === dt || (vt && xt(), vt = setInterval((function () { var o = F(document.elementFromPoint(r, i), !0); o !== a && (a = o, bt()), _t(e, n.options, o, t) }), 10), ft = r, dt = i) } else { if (!this.options.bubbleScroll || F(o, !0) === E()) return void bt(); _t(e, this.options, F(o, !1), !1) } } }, o(e, { pluginName: "scroll", initializeByDefault: !0 }) } function bt() { mt.forEach((function (e) { clearInterval(e.pid) })), mt = [] } function xt() { clearInterval(vt) } var wt, _t = B((function (e, t, n, r) { if (t.scroll) { var i, o = (e.touches ? e.touches[0] : e).clientX, a = (e.touches ? e.touches[0] : e).clientY, s = t.scrollSensitivity, c = t.scrollSpeed, l = E(), u = !1; ht !== n && (ht = n, bt(), ut = t.scroll, i = t.scrollFn, !0 === ut && (ut = F(n, !0))); var h = 0, f = ut; do { var d = f, p = P(d), v = p.top, m = p.bottom, g = p.left, y = p.right, b = p.width, x = p.height, w = void 0, _ = void 0, C = d.scrollWidth, M = d.scrollHeight, O = L(d), k = d.scrollLeft, S = d.scrollTop; d === l ? (w = b < C && ("auto" === O.overflowX || "scroll" === O.overflowX || "visible" === O.overflowX), _ = x < M && ("auto" === O.overflowY || "scroll" === O.overflowY || "visible" === O.overflowY)) : (w = b < C && ("auto" === O.overflowX || "scroll" === O.overflowX), _ = x < M && ("auto" === O.overflowY || "scroll" === O.overflowY)); var T = w && (Math.abs(y - o) <= s && k + b < C) - (Math.abs(g - o) <= s && !!k), A = _ && (Math.abs(m - a) <= s && S + x < M) - (Math.abs(v - a) <= s && !!S); if (!mt[h]) for (var j = 0; j <= h; j++)mt[j] || (mt[j] = {}); mt[h].vx == T && mt[h].vy == A && mt[h].el === d || (mt[h].el = d, mt[h].vx = T, mt[h].vy = A, clearInterval(mt[h].pid), 0 == T && 0 == A || (u = !0, mt[h].pid = setInterval(function () { r && 0 === this.layer && Qe.active._onTouchMove(pt); var t = mt[this.layer].vy ? mt[this.layer].vy * c : 0, n = mt[this.layer].vx ? mt[this.layer].vx * c : 0; "function" === typeof i && "continue" !== i.call(Qe.dragged.parentNode[X], n, t, e, pt, mt[this.layer].el) || q(mt[this.layer].el, n, t) }.bind({ layer: h }), 24))), h++ } while (t.bubbleScroll && f !== l && (f = F(f, !1))); gt = u } }), 30), Ct = function (e) { var t = e.originalEvent, n = e.putSortable, r = e.dragEl, i = e.activeSortable, o = e.dispatchSortableEvent, a = e.hideGhostForTarget, s = e.unhideGhostForTarget; if (t) { var c = n || i; a(); var l = t.changedTouches && t.changedTouches.length ? t.changedTouches[0] : t, u = document.elementFromPoint(l.clientX, l.clientY); s(), c && !c.el.contains(u) && (o("spill"), this.onSpill({ dragEl: r, putSortable: n })) } }; function Mt() { } function Ot() { } function kt() { function e() { this.defaults = { swapClass: "sortable-swap-highlight" } } return e.prototype = { dragStart: function (e) { var t = e.dragEl; wt = t }, dragOverValid: function (e) { var t = e.completed, n = e.target, r = e.onMove, i = e.activeSortable, o = e.changed, a = e.cancel; if (i.options.swap) { var s = this.sortable.el, c = this.options; if (n && n !== s) { var l = wt; !1 !== r(n) ? (A(n, c.swapClass, !0), wt = n) : wt = null, l && l !== wt && A(l, c.swapClass, !1) } o(), t(!0), a() } }, drop: function (e) { var t = e.activeSortable, n = e.putSortable, r = e.dragEl, i = n || this.sortable, o = this.options; wt && A(wt, o.swapClass, !1), wt && (o.swap || n && n.options.swap) && r !== wt && (i.captureAnimationState(), i !== t && t.captureAnimationState(), St(r, wt), i.animateAll(), i !== t && t.animateAll()) }, nulling: function () { wt = null } }, o(e, { pluginName: "swap", eventProperties: function () { return { swapItem: wt } } }) } function St(e, t) { var n, r, i = e.parentNode, o = t.parentNode; i && o && !i.isEqualNode(t) && !o.isEqualNode(e) && (n = I(e), r = I(t), i.isEqualNode(o) && n < r && r++, i.insertBefore(t, i.children[n]), o.insertBefore(e, o.children[r])) } Mt.prototype = { startIndex: null, dragStart: function (e) { var t = e.oldDraggableIndex; this.startIndex = t }, onSpill: function (e) { var t = e.dragEl, n = e.putSortable; this.sortable.captureAnimationState(), n && n.captureAnimationState(); var r = H(this.sortable.el, this.startIndex, this.options); r ? this.sortable.el.insertBefore(t, r) : this.sortable.el.appendChild(t), this.sortable.animateAll(), n && n.animateAll() }, drop: Ct }, o(Mt, { pluginName: "revertOnSpill" }), Ot.prototype = { onSpill: function (e) { var t = e.dragEl, n = e.putSortable, r = n || this.sortable; r.captureAnimationState(), t.parentNode && t.parentNode.removeChild(t), r.animateAll() }, drop: Ct }, o(Ot, { pluginName: "removeOnSpill" }); var Tt, At, Lt, jt, zt, Et = [], Pt = [], Dt = !1, Ht = !1, Vt = !1; function It() { function e(e) { for (var t in this) "_" === t.charAt(0) && "function" === typeof this[t] && (this[t] = this[t].bind(this)); e.options.supportPointer ? _(document, "pointerup", this._deselectMultiDrag) : (_(document, "mouseup", this._deselectMultiDrag), _(document, "touchend", this._deselectMultiDrag)), _(document, "keydown", this._checkKeyDown), _(document, "keyup", this._checkKeyUp), this.defaults = { selectedClass: "sortable-selected", multiDragKey: null, setData: function (t, n) { var r = ""; Et.length && At === e ? Et.forEach((function (e, t) { r += (t ? ", " : "") + e.textContent })) : r = n.textContent, t.setData("Text", r) } } } return e.prototype = { multiDragKeyDown: !1, isMultiDrag: !1, delayStartGlobal: function (e) { var t = e.dragEl; Lt = t }, delayEnded: function () { this.isMultiDrag = ~Et.indexOf(Lt) }, setupClone: function (e) { var t = e.sortable, n = e.cancel; if (this.isMultiDrag) { for (var r = 0; r < Et.length; r++)Pt.push(U(Et[r])), Pt[r].sortableIndex = Et[r].sortableIndex, Pt[r].draggable = !1, Pt[r].style["will-change"] = "", A(Pt[r], this.options.selectedClass, !1), Et[r] === Lt && A(Pt[r], this.options.chosenClass, !1); t._hideClone(), n() } }, clone: function (e) { var t = e.sortable, n = e.rootEl, r = e.dispatchSortableEvent, i = e.cancel; this.isMultiDrag && (this.options.removeCloneOnHide || Et.length && At === t && (Rt(!0, n), r("clone"), i())) }, showClone: function (e) { var t = e.cloneNowShown, n = e.rootEl, r = e.cancel; this.isMultiDrag && (Rt(!1, n), Pt.forEach((function (e) { L(e, "display", "") })), t(), zt = !1, r()) }, hideClone: function (e) { var t = this, n = (e.sortable, e.cloneNowHidden), r = e.cancel; this.isMultiDrag && (Pt.forEach((function (e) { L(e, "display", "none"), t.options.removeCloneOnHide && e.parentNode && e.parentNode.removeChild(e) })), n(), zt = !0, r()) }, dragStartGlobal: function (e) { e.sortable, !this.isMultiDrag && At && At.multiDrag._deselectMultiDrag(), Et.forEach((function (e) { e.sortableIndex = I(e) })), Et = Et.sort((function (e, t) { return e.sortableIndex - t.sortableIndex })), Vt = !0 }, dragStarted: function (e) { var t = this, n = e.sortable; if (this.isMultiDrag) { if (this.options.sort && (n.captureAnimationState(), this.options.animation)) { Et.forEach((function (e) { e !== Lt && L(e, "position", "absolute") })); var r = P(Lt, !1, !0, !0); Et.forEach((function (e) { e !== Lt && K(e, r) })), Ht = !0, Dt = !0 } n.animateAll((function () { Ht = !1, Dt = !1, t.options.animation && Et.forEach((function (e) { G(e) })), t.options.sort && Ft() })) } }, dragOver: function (e) { var t = e.target, n = e.completed, r = e.cancel; Ht && ~Et.indexOf(t) && (n(!1), r()) }, revert: function (e) { var t = e.fromSortable, n = e.rootEl, r = e.sortable, i = e.dragRect; Et.length > 1 && (Et.forEach((function (e) { r.addAnimationState({ target: e, rect: Ht ? P(e) : i }), G(e), e.fromRect = i, t.removeAnimationState(e) })), Ht = !1, Nt(!this.options.removeCloneOnHide, n)) }, dragOverCompleted: function (e) { var t = e.sortable, n = e.isOwner, r = e.insertion, i = e.activeSortable, o = e.parentEl, a = e.putSortable, s = this.options; if (r) { if (n && i._hideClone(), Dt = !1, s.animation && Et.length > 1 && (Ht || !n && !i.options.sort && !a)) { var c = P(Lt, !1, !0, !0); Et.forEach((function (e) { e !== Lt && (K(e, c), o.appendChild(e)) })), Ht = !0 } if (!n) if (Ht || Ft(), Et.length > 1) { var l = zt; i._showClone(t), i.options.animation && !zt && l && Pt.forEach((function (e) { i.addAnimationState({ target: e, rect: jt }), e.fromRect = jt, e.thisAnimationDuration = null })) } else i._showClone(t) } }, dragOverAnimationCapture: function (e) { var t = e.dragRect, n = e.isOwner, r = e.activeSortable; if (Et.forEach((function (e) { e.thisAnimationDuration = null })), r.options.animation && !n && r.multiDrag.isMultiDrag) { jt = o({}, t); var i = j(Lt, !0); jt.top -= i.f, jt.left -= i.e } }, dragOverAnimationComplete: function () { Ht && (Ht = !1, Ft()) }, drop: function (e) { var t = e.originalEvent, n = e.rootEl, r = e.parentEl, i = e.sortable, o = e.dispatchSortableEvent, a = e.oldIndex, s = e.putSortable, c = s || this.sortable; if (t) { var l = this.options, u = r.children; if (!Vt) if (l.multiDragKey && !this.multiDragKeyDown && this._deselectMultiDrag(), A(Lt, l.selectedClass, !~Et.indexOf(Lt)), ~Et.indexOf(Lt)) Et.splice(Et.indexOf(Lt), 1), Tt = null, re({ sortable: i, rootEl: n, name: "deselect", targetEl: Lt, originalEvt: t }); else { if (Et.push(Lt), re({ sortable: i, rootEl: n, name: "select", targetEl: Lt, originalEvt: t }), t.shiftKey && Tt && i.el.contains(Tt)) { var h, f, d = I(Tt), p = I(Lt); if (~d && ~p && d !== p) for (p > d ? (f = d, h = p) : (f = p, h = d + 1); f < h; f++)~Et.indexOf(u[f]) || (A(u[f], l.selectedClass, !0), Et.push(u[f]), re({ sortable: i, rootEl: n, name: "select", targetEl: u[f], originalEvt: t })) } else Tt = Lt; At = c } if (Vt && this.isMultiDrag) { if ((r[X].options.sort || r !== n) && Et.length > 1) { var v = P(Lt), m = I(Lt, ":not(." + this.options.selectedClass + ")"); if (!Dt && l.animation && (Lt.thisAnimationDuration = null), c.captureAnimationState(), !Dt && (l.animation && (Lt.fromRect = v, Et.forEach((function (e) { if (e.thisAnimationDuration = null, e !== Lt) { var t = Ht ? P(e) : v; e.fromRect = t, c.addAnimationState({ target: e, rect: t }) } }))), Ft(), Et.forEach((function (e) { u[m] ? r.insertBefore(e, u[m]) : r.appendChild(e), m++ })), a === I(Lt))) { var g = !1; Et.forEach((function (e) { e.sortableIndex === I(e) || (g = !0) })), g && o("update") } Et.forEach((function (e) { G(e) })), c.animateAll() } At = c } (n === r || s && "clone" !== s.lastPutMode) && Pt.forEach((function (e) { e.parentNode && e.parentNode.removeChild(e) })) } }, nullingGlobal: function () { this.isMultiDrag = Vt = !1, Pt.length = 0 }, destroyGlobal: function () { this._deselectMultiDrag(), C(document, "pointerup", this._deselectMultiDrag), C(document, "mouseup", this._deselectMultiDrag), C(document, "touchend", this._deselectMultiDrag), C(document, "keydown", this._checkKeyDown), C(document, "keyup", this._checkKeyUp) }, _deselectMultiDrag: function (e) { if (("undefined" === typeof Vt || !Vt) && At === this.sortable && (!e || !k(e.target, this.options.draggable, this.sortable.el, !1)) && (!e || 0 === e.button)) while (Et.length) { var t = Et[0]; A(t, this.options.selectedClass, !1), Et.shift(), re({ sortable: this.sortable, rootEl: this.sortable.el, name: "deselect", targetEl: t, originalEvt: e }) } }, _checkKeyDown: function (e) { e.key === this.options.multiDragKey && (this.multiDragKeyDown = !0) }, _checkKeyUp: function (e) { e.key === this.options.multiDragKey && (this.multiDragKeyDown = !1) } }, o(e, { pluginName: "multiDrag", utils: { select: function (e) { var t = e.parentNode[X]; t && t.options.multiDrag && !~Et.indexOf(e) && (At && At !== t && (At.multiDrag._deselectMultiDrag(), At = t), A(e, t.options.selectedClass, !0), Et.push(e)) }, deselect: function (e) { var t = e.parentNode[X], n = Et.indexOf(e); t && t.options.multiDrag && ~n && (A(e, t.options.selectedClass, !1), Et.splice(n, 1)) } }, eventProperties: function () { var e = this, t = [], n = []; return Et.forEach((function (r) { var i; t.push({ multiDragElement: r, index: r.sortableIndex }), i = Ht && r !== Lt ? -1 : Ht ? I(r, ":not(." + e.options.selectedClass + ")") : I(r), n.push({ multiDragElement: r, index: i }) })), { items: l(Et), clones: [].concat(Pt), oldIndicies: t, newIndicies: n } }, optionListeners: { multiDragKey: function (e) { return e = e.toLowerCase(), "ctrl" === e ? e = "Control" : e.length > 1 && (e = e.charAt(0).toUpperCase() + e.substr(1)), e } } }) } function Nt(e, t) { Et.forEach((function (n, r) { var i = t.children[n.sortableIndex + (e ? Number(r) : 0)]; i ? t.insertBefore(n, i) : t.appendChild(n) })) } function Rt(e, t) { Pt.forEach((function (n, r) { var i = t.children[n.sortableIndex + (e ? Number(r) : 0)]; i ? t.insertBefore(n, i) : t.appendChild(n) })) } function Ft() { Et.forEach((function (e) { e !== Lt && e.parentNode && e.parentNode.removeChild(e) })) } Qe.mount(new yt), Qe.mount(Ot, Mt), t["default"] = Qe
+                }, aa77: function (e, t, n) { var r = n("5ca1"), i = n("be13"), o = n("79e5"), a = n("fdef"), s = "[" + a + "]", c = "鈥嬄�", l = RegExp("^" + s + s + "*"), u = RegExp(s + s + "*$"), h = function (e, t, n) { var i = {}, s = o((function () { return !!a[e]() || c[e]() != c })), l = i[e] = s ? t(f) : a[e]; n && (i[n] = l), r(r.P + r.F * s, "String", i) }, f = h.trim = function (e, t) { return e = String(i(e)), 1 & t && (e = e.replace(l, "")), 2 & t && (e = e.replace(u, "")), e }; e.exports = h }, aae3: function (e, t, n) { var r = n("d3f4"), i = n("2d95"), o = n("2b4c")("match"); e.exports = function (e) { var t; return r(e) && (void 0 !== (t = e[o]) ? !!t : "RegExp" == i(e)) } }, aaf2: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t, n, r) { var i = { s: ["啶ム啶∴く啶� 啶膏啶曕啶∴ぞ啶傕え啷�", "啶ム啶∴ 啶膏啶曕啶�"], ss: [e + " 啶膏啶曕啶∴ぞ啶傕え啷�", e + " 啶膏啶曕啶�"], m: ["啶忇啶� 啶た啶`啶距え", "啶忇 啶た啶ㄠ啶�"], mm: [e + " 啶た啶`啶距啶ㄠ", e + " 啶た啶`啶距"], h: ["啶忇啶� 啶掂ぐ啶距え", "啶忇 啶掂ぐ"], hh: [e + " 啶掂ぐ啶距啶ㄠ", e + " 啶掂ぐ啶距"], d: ["啶忇啶� 啶︵た啶膏ぞ啶�", "啶忇 啶︵啶�"], dd: [e + " 啶︵た啶膏ぞ啶傕え啷�", e + " 啶︵啶�"], M: ["啶忇啶� 啶啶灌く啶ㄠ啶ぞ啶�", "啶忇 啶啶灌く啶ㄠ"], MM: [e + " 啶啶灌く啶ㄠ啶ぞ啶ㄠ", e + " 啶啶灌く啶ㄠ"], y: ["啶忇啶� 啶掂ぐ啷嵿じ啶距え", "啶忇 啶掂ぐ啷嵿じ"], yy: [e + " 啶掂ぐ啷嵿じ啶距啶ㄠ", e + " 啶掂ぐ啷嵿じ啶距"] }; return r ? i[n][0] : i[n][1] } var n = e.defineLocale("gom-deva", { months: { standalone: "啶溹ぞ啶ㄠ啶掂ぞ啶班_啶啶啶班啶掂ぞ啶班_啶ぞ啶班啶歘啶忇お啷嵿ぐ啷�啶瞋啶_啶溹啶╛啶溹啶侧く_啶戉啶膏啶焈啶膏お啷嵿啷囙啶ぐ_啶戉啷嵿啷嬥が啶癬啶ㄠ啶掂啶灌啶傕が啶癬啶∴た啶膏啶傕が啶�".split("_"), format: "啶溹ぞ啶ㄠ啶掂ぞ啶班啶氞啶ぞ_啶啶啶班啶掂ぞ啶班啶氞啶ぞ_啶ぞ啶班啶氞ぞ啶氞啶ぞ_啶忇お啷嵿ぐ啷�啶侧ぞ啶氞啶ぞ_啶啶ぞ啶氞啶ぞ_啶溹啶ㄠぞ啶氞啶ぞ_啶溹啶侧く啶距啷嵿く啶綺啶戉啶膏啶熰ぞ啶氞啶ぞ_啶膏お啷嵿啷囙啶ぐ啶距啷嵿く啶綺啶戉啷嵿啷嬥が啶班ぞ啶氞啶ぞ_啶ㄠ啶掂啶灌啶傕が啶班ぞ啶氞啶ぞ_啶∴た啶膏啶傕が啶班ぞ啶氞啶ぞ".split("_"), isFormat: /MMMM(\s)+D[oD]?/ }, monthsShort: "啶溹ぞ啶ㄠ._啶啶啶班._啶ぞ啶班啶歘啶忇お啷嵿ぐ啷�._啶_啶溹啶╛啶溹啶�._啶戉._啶膏お啷嵿啷囙._啶戉啷嵿啷�._啶ㄠ啶掂啶灌啶�._啶∴た啶膏啶�.".split("_"), monthsParseExact: !0, weekdays: "啶嗋く啶むぞ啶癬啶膏啶ぞ啶癬啶啶椸こ啶距ぐ_啶啶оさ啶距ぐ_啶た啶班啶膏啶むぞ啶癬啶膏啶曕啶班ぞ啶癬啶多啶ㄠさ啶距ぐ".split("_"), weekdaysShort: "啶嗋く啶�._啶膏啶�._啶啶椸こ._啶啶�._啶啶班啶膏啶�._啶膏啶曕啶�._啶多啶�.".split("_"), weekdaysMin: "啶哶啶膏_啶_啶_啶啶班_啶膏_啶多".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "A h:mm [啶掂ぞ啶溹い啶距]", LTS: "A h:mm:ss [啶掂ぞ啶溹い啶距]", L: "DD-MM-YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY A h:mm [啶掂ぞ啶溹い啶距]", LLLL: "dddd, MMMM Do, YYYY, A h:mm [啶掂ぞ啶溹い啶距]", llll: "ddd, D MMM YYYY, A h:mm [啶掂ぞ啶溹い啶距]" }, calendar: { sameDay: "[啶嗋く啶淽 LT", nextDay: "[啶ぞ啶侧啶ぞ啶俔 LT", nextWeek: "[啶啶∴げ啷媇 dddd[,] LT", lastDay: "[啶曕ぞ啶瞉 LT", lastWeek: "[啶ぞ啶熰げ啷媇 dddd[,] LT", sameElse: "L" }, relativeTime: { future: "%s", past: "%s 啶嗋う啷�啶�", s: t, ss: t, m: t, mm: t, h: t, hh: t, d: t, dd: t, M: t, MM: t, y: t, yy: t }, dayOfMonthOrdinalParse: /\d{1,2}(啶掂啶�)/, ordinal: function (e, t) { switch (t) { case "D": return e + "啶掂啶�"; default: case "M": case "Q": case "DDD": case "d": case "w": case "W": return e } }, week: { dow: 1, doy: 4 }, meridiemParse: /啶班ぞ啶む|啶膏啶距こ啷�啶倈啶︵え啶ぞ啶班ぞ啶倈啶膏ぞ啶傕啷�/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "啶班ぞ啶む" === t ? e < 4 ? e : e + 12 : "啶膏啶距こ啷�啶�" === t ? e : "啶︵え啶ぞ啶班ぞ啶�" === t ? e > 12 ? e : e + 12 : "啶膏ぞ啶傕啷�" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { return e < 4 ? "啶班ぞ啶む" : e < 12 ? "啶膏啶距こ啷�啶�" : e < 16 ? "啶︵え啶ぞ啶班ぞ啶�" : e < 20 ? "啶膏ぞ啶傕啷�" : "啶班ぞ啶む" } }); return n
+                    }))
+                }, ab3e: function (e, t, n) { var r = n("972ca"), i = n("4be8"), o = n("badf"); function a(e, t) { return r(e, o(t, 3), i) } e.exports = a }, ab93: function (e, t, n) { }, ac41: function (e, t) { function n(e) { var t = -1, n = Array(e.size); return e.forEach((function (e) { n[++t] = e })), n } e.exports = n }, ac6a: function (e, t, n) { for (var r = n("cadf"), i = n("0d58"), o = n("2aba"), a = n("7726"), s = n("32e9"), c = n("84f2"), l = n("2b4c"), u = l("iterator"), h = l("toStringTag"), f = c.Array, d = { CSSRuleList: !0, CSSStyleDeclaration: !1, CSSValueList: !1, ClientRectList: !1, DOMRectList: !1, DOMStringList: !1, DOMTokenList: !0, DataTransferItemList: !1, FileList: !1, HTMLAllCollection: !1, HTMLCollection: !1, HTMLFormElement: !1, HTMLSelectElement: !1, MediaList: !0, MimeTypeArray: !1, NamedNodeMap: !1, NodeList: !0, PaintRequestList: !1, Plugin: !1, PluginArray: !1, SVGLengthList: !1, SVGNumberList: !1, SVGPathSegList: !1, SVGPointList: !1, SVGStringList: !1, SVGTransformList: !1, SourceBufferList: !1, StyleSheetList: !0, TextTrackCueList: !1, TextTrackList: !1, TouchList: !1 }, p = i(d), v = 0; v < p.length; v++) { var m, g = p[v], y = d[g], b = a[g], x = b && b.prototype; if (x && (x[u] || s(x, u, f), x[h] || s(x, h, g), c[g] = f, y)) for (m in r) x[m] || o(x, m, r[m], !0) } }, ada2: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t) { var n = e.split("_"); return t % 10 === 1 && t % 100 !== 11 ? n[0] : t % 10 >= 2 && t % 10 <= 4 && (t % 100 < 10 || t % 100 >= 20) ? n[1] : n[2] } function n(e, n, r) { var i = { ss: n ? "褋械泻褍薪写邪_褋械泻褍薪写懈_褋械泻褍薪写" : "褋械泻褍薪写褍_褋械泻褍薪写懈_褋械泻褍薪写", mm: n ? "褏胁懈谢懈薪邪_褏胁懈谢懈薪懈_褏胁懈谢懈薪" : "褏胁懈谢懈薪褍_褏胁懈谢懈薪懈_褏胁懈谢懈薪", hh: n ? "谐芯写懈薪邪_谐芯写懈薪懈_谐芯写懈薪" : "谐芯写懈薪褍_谐芯写懈薪懈_谐芯写懈薪", dd: "写械薪褜_写薪褨_写薪褨胁", MM: "屑褨褋褟褑褜_屑褨褋褟褑褨_屑褨褋褟褑褨胁", yy: "褉褨泻_褉芯泻懈_褉芯泻褨胁" }; return "m" === r ? n ? "褏胁懈谢懈薪邪" : "褏胁懈谢懈薪褍" : "h" === r ? n ? "谐芯写懈薪邪" : "谐芯写懈薪褍" : e + " " + t(i[r], +e) } function r(e, t) { var n, r = { nominative: "薪械写褨谢褟_锌芯薪械写褨谢芯泻_胁褨胁褌芯褉芯泻_褋械褉械写邪_褔械褌胁械褉_锌鈥櫻徰傂叫秆喲廮褋褍斜芯褌邪".split("_"), accusative: "薪械写褨谢褞_锌芯薪械写褨谢芯泻_胁褨胁褌芯褉芯泻_褋械褉械写褍_褔械褌胁械褉_锌鈥櫻徰傂叫秆喲巁褋褍斜芯褌褍".split("_"), genitive: "薪械写褨谢褨_锌芯薪械写褨谢泻邪_胁褨胁褌芯褉泻邪_褋械褉械写懈_褔械褌胁械褉谐邪_锌鈥櫻徰傂叫秆喲朹褋褍斜芯褌懈".split("_") }; return !0 === e ? r["nominative"].slice(1, 7).concat(r["nominative"].slice(0, 1)) : e ? (n = /(\[[袙胁校褍]\]) ?dddd/.test(t) ? "accusative" : /\[?(?:屑懈薪褍谢芯褩|薪邪褋褌褍锌薪芯褩)? ?\] ?dddd/.test(t) ? "genitive" : "nominative", r[n][e.day()]) : r["nominative"] } function i(e) { return function () { return e + "芯" + (11 === this.hours() ? "斜" : "") + "] LT" } } var o = e.defineLocale("uk", { months: { format: "褋褨褔薪褟_谢褞褌芯谐芯_斜械褉械蟹薪褟_泻胁褨褌薪褟_褌褉邪胁薪褟_褔械褉胁薪褟_谢懈锌薪褟_褋械褉锌薪褟_胁械褉械褋薪褟_卸芯胁褌薪褟_谢懈褋褌芯锌邪写邪_谐褉褍写薪褟".split("_"), standalone: "褋褨褔械薪褜_谢褞褌懈泄_斜械褉械蟹械薪褜_泻胁褨褌械薪褜_褌褉邪胁械薪褜_褔械褉胁械薪褜_谢懈锌械薪褜_褋械褉锌械薪褜_胁械褉械褋械薪褜_卸芯胁褌械薪褜_谢懈褋褌芯锌邪写_谐褉褍写械薪褜".split("_") }, monthsShort: "褋褨褔_谢褞褌_斜械褉_泻胁褨褌_褌褉邪胁_褔械褉胁_谢懈锌_褋械褉锌_胁械褉_卸芯胁褌_谢懈褋褌_谐褉褍写".split("_"), weekdays: r, weekdaysShort: "薪写_锌薪_胁褌_褋褉_褔褌_锌褌_褋斜".split("_"), weekdaysMin: "薪写_锌薪_胁褌_褋褉_褔褌_锌褌_褋斜".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY 褉.", LLL: "D MMMM YYYY 褉., HH:mm", LLLL: "dddd, D MMMM YYYY 褉., HH:mm" }, calendar: { sameDay: i("[小褜芯谐芯写薪褨 "), nextDay: i("[袟邪胁褌褉邪 "), lastDay: i("[袙褔芯褉邪 "), nextWeek: i("[校] dddd ["), lastWeek: function () { switch (this.day()) { case 0: case 3: case 5: case 6: return i("[袦懈薪褍谢芯褩] dddd [").call(this); case 1: case 2: case 4: return i("[袦懈薪褍谢芯谐芯] dddd [").call(this) } }, sameElse: "L" }, relativeTime: { future: "蟹邪 %s", past: "%s 褌芯屑褍", s: "写械泻褨谢褜泻邪 褋械泻褍薪写", ss: n, m: n, mm: n, h: "谐芯写懈薪褍", hh: n, d: "写械薪褜", dd: n, M: "屑褨褋褟褑褜", MM: n, y: "褉褨泻", yy: n }, meridiemParse: /薪芯褔褨|褉邪薪泻褍|写薪褟|胁械褔芯褉邪/, isPM: function (e) { return /^(写薪褟|胁械褔芯褉邪)$/.test(e) }, meridiem: function (e, t, n) { return e < 4 ? "薪芯褔褨" : e < 12 ? "褉邪薪泻褍" : e < 17 ? "写薪褟" : "胁械褔芯褉邪" }, dayOfMonthOrdinalParse: /\d{1,2}-(泄|谐芯)/, ordinal: function (e, t) { switch (t) { case "M": case "d": case "DDD": case "w": case "W": return e + "-泄"; case "D": return e + "-谐芯"; default: return e } }, week: { dow: 1, doy: 7 } }); return o
+                    }))
+                }, adf5: function (e, t, n) { e.exports = { default: n("d2d5"), __esModule: !0 } }, aebd: function (e, t) { e.exports = function (e, t) { return { enumerable: !(1 & e), configurable: !(2 & e), writable: !(4 & e), value: t } } }, afb9: function (e, t, n) { var r = n("2d7c"), i = n("9520"); function o(e, t) { return r(t, (function (t) { return i(e[t]) })) } e.exports = o }, b047: function (e, t, n) { var r = n("1a8c"), i = n("408c"), o = n("b4b0"), a = "Expected a function", s = Math.max, c = Math.min; function l(e, t, n) { var l, u, h, f, d, p, v = 0, m = !1, g = !1, y = !0; if ("function" != typeof e) throw new TypeError(a); function b(t) { var n = l, r = u; return l = u = void 0, v = t, f = e.apply(r, n), f } function x(e) { return v = e, d = setTimeout(C, t), m ? b(e) : f } function w(e) { var n = e - p, r = e - v, i = t - n; return g ? c(i, h - r) : i } function _(e) { var n = e - p, r = e - v; return void 0 === p || n >= t || n < 0 || g && r >= h } function C() { var e = i(); if (_(e)) return M(e); d = setTimeout(C, w(e)) } function M(e) { return d = void 0, y && l ? b(e) : (l = u = void 0, f) } function O() { void 0 !== d && clearTimeout(d), v = 0, l = p = u = d = void 0 } function k() { return void 0 === d ? f : M(i()) } function S() { var e = i(), n = _(e); if (l = arguments, u = this, p = e, n) { if (void 0 === d) return x(p); if (g) return clearTimeout(d), d = setTimeout(C, t), b(p) } return void 0 === d && (d = setTimeout(C, t)), f } return t = o(t) || 0, r(n) && (m = !!n.leading, g = "maxWait" in n, h = g ? s(o(n.maxWait) || 0, t) : h, y = "trailing" in n ? !!n.trailing : y), S.cancel = O, S.flush = k, S } e.exports = l }, b047f: function (e, t) { function n(e) { return function (t) { return e(t) } } e.exports = n }, b0c5: function (e, t, n) { "use strict"; var r = n("520a"); n("5ca1")({ target: "RegExp", proto: !0, forced: r !== /./.exec }, { exec: r }) }, b0dc: function (e, t, n) { var r = n("e4ae"); e.exports = function (e, t, n, i) { try { return i ? t(r(n)[0], n[1]) : t(n) } catch (a) { var o = e["return"]; throw void 0 !== o && r(o.call(e)), a } } }, b1e5: function (e, t, n) { var r = n("a994"), i = 1, o = Object.prototype, a = o.hasOwnProperty; function s(e, t, n, o, s, c) { var l = n & i, u = r(e), h = u.length, f = r(t), d = f.length; if (h != d && !l) return !1; var p = h; while (p--) { var v = u[p]; if (!(l ? v in t : a.call(t, v))) return !1 } var m = c.get(e), g = c.get(t); if (m && g) return m == t && g == e; var y = !0; c.set(e, t), c.set(t, e); var b = l; while (++p < h) { v = u[p]; var x = e[v], w = t[v]; if (o) var _ = l ? o(w, x, v, t, e, c) : o(x, w, v, e, t, c); if (!(void 0 === _ ? x === w || s(x, w, n, o, c) : _)) { y = !1; break } b || (b = "constructor" == v) } if (y && !b) { var C = e.constructor, M = t.constructor; C == M || !("constructor" in e) || !("constructor" in t) || "function" == typeof C && C instanceof C && "function" == typeof M && M instanceof M || (y = !1) } return c["delete"](e), c["delete"](t), y } e.exports = s }, b218: function (e, t) { var n = 9007199254740991; function r(e) { return "number" == typeof e && e > -1 && e % 1 == 0 && e <= n } e.exports = r }, b24f: function (e, t, n) { "use strict"; t.__esModule = !0; var r = n("93ff"), i = s(r), o = n("1727"), a = s(o); function s(e) { return e && e.__esModule ? e : { default: e } } t.default = function () { function e(e, t) { var n = [], r = !0, i = !1, o = void 0; try { for (var s, c = (0, a.default)(e); !(r = (s = c.next()).done); r = !0)if (n.push(s.value), t && n.length === t) break } catch (l) { i = !0, o = l } finally { try { !r && c["return"] && c["return"]() } finally { if (i) throw o } } return n } return function (t, n) { if (Array.isArray(t)) return t; if ((0, i.default)(Object(t))) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }() }, b29d: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("lo", { months: "嗪∴罕嗪囙簛嗪簷_嗪佮焊嗪∴簽嗪瞋嗪∴旱嗪權翰_嗷�嗪∴邯嗪瞋嗪炧憾嗪斷邯嗪班簽嗪瞋嗪∴捍嗪栢焊嗪權翰_嗪佮粛嗪ム喊嗪佮夯嗪擾嗪捍嗪囙韩嗪瞋嗪佮罕嗪權簫嗪瞋嗪曕焊嗪ム翰_嗪炧喊嗪堗捍嗪乢嗪椸罕嗪權骇嗪�".split("_"), monthsShort: "嗪∴罕嗪囙簛嗪簷_嗪佮焊嗪∴簽嗪瞋嗪∴旱嗪權翰_嗷�嗪∴邯嗪瞋嗪炧憾嗪斷邯嗪班簽嗪瞋嗪∴捍嗪栢焊嗪權翰_嗪佮粛嗪ム喊嗪佮夯嗪擾嗪捍嗪囙韩嗪瞋嗪佮罕嗪權簫嗪瞋嗪曕焊嗪ム翰_嗪炧喊嗪堗捍嗪乢嗪椸罕嗪權骇嗪�".split("_"), weekdays: "嗪翰嗪椸捍嗪擾嗪堗罕嗪檁嗪罕嗪囙簞嗪侧簷_嗪炧焊嗪擾嗪炧喊嗪罕嗪擾嗪焊嗪乢嗷�嗪夯嗪�".split("_"), weekdaysShort: "嗪椸捍嗪擾嗪堗罕嗪檁嗪罕嗪囙簞嗪侧簷_嗪炧焊嗪擾嗪炧喊嗪罕嗪擾嗪焊嗪乢嗷�嗪夯嗪�".split("_"), weekdaysMin: "嗪梍嗪坃嗪簞_嗪瀇嗪炧韩_嗪簛_嗪�".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "嗪о罕嗪檇ddd D MMMM YYYY HH:mm" }, meridiemParse: /嗪曕涵嗪權粈嗪娻夯嗷夃翰|嗪曕涵嗪權粊嗪ム簢/, isPM: function (e) { return "嗪曕涵嗪權粊嗪ム簢" === e }, meridiem: function (e, t, n) { return e < 12 ? "嗪曕涵嗪權粈嗪娻夯嗷夃翰" : "嗪曕涵嗪權粊嗪ム簢" }, calendar: { sameDay: "[嗪∴悍嗷夃簷嗪掂粔嗷�嗪о亥嗪瞉 LT", nextDay: "[嗪∴悍嗷夃涵嗪粪粓嗪權粈嗪о亥嗪瞉 LT", nextWeek: "[嗪о罕嗪橾dddd[嗷溹粔嗪侧粈嗪о亥嗪瞉 LT", lastDay: "[嗪∴悍嗷夃骇嗪侧簷嗪權旱嗷夃粈嗪о亥嗪瞉 LT", lastWeek: "[嗪о罕嗪橾dddd[嗷佮亥嗷夃骇嗪權旱嗷夃粈嗪о亥嗪瞉 LT", sameElse: "L" }, relativeTime: { future: "嗪旱嗪� %s", past: "%s嗪溹粓嗪侧簷嗪∴翰", s: "嗪氞粛嗷堗粈嗪椸夯嗷堗翰嗷冟簲嗪о捍嗪權翰嗪椸旱", ss: "%d 嗪о捍嗪權翰嗪椸旱", m: "1 嗪權翰嗪椸旱", mm: "%d 嗪權翰嗪椸旱", h: "1 嗪娻夯嗷堗骇嗷傕骸嗪�", hh: "%d 嗪娻夯嗷堗骇嗷傕骸嗪�", d: "1 嗪∴悍嗷�", dd: "%d 嗪∴悍嗷�", M: "1 嗷�嗪斷悍嗪簷", MM: "%d 嗷�嗪斷悍嗪簷", y: "1 嗪涏旱", yy: "%d 嗪涏旱" }, dayOfMonthOrdinalParse: /(嗪椸旱嗷�)\d{1,2}/, ordinal: function (e) { return "嗪椸旱嗷�" + e } }); return t
+                    }))
+                }, b2a3: function (e, t, n) { }, b311: function (e, t, n) {
+                    /*!
+                     * clipboard.js v2.0.6
+                     * https://clipboardjs.com/
+                     *
+                     * Licensed MIT 漏 Zeno Rocha
+                     */
+                    (function (t, n) { e.exports = n() })(0, (function () { return function (e) { var t = {}; function n(r) { if (t[r]) return t[r].exports; var i = t[r] = { i: r, l: !1, exports: {} }; return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports } return n.m = e, n.c = t, n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: r }) }, n.r = function (e) { "undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }) }, n.t = function (e, t) { if (1 & t && (e = n(e)), 8 & t) return e; if (4 & t && "object" === typeof e && e && e.__esModule) return e; var r = Object.create(null); if (n.r(r), Object.defineProperty(r, "default", { enumerable: !0, value: e }), 2 & t && "string" != typeof e) for (var i in e) n.d(r, i, function (t) { return e[t] }.bind(null, i)); return r }, n.n = function (e) { var t = e && e.__esModule ? function () { return e["default"] } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = 6) }([function (e, t) { function n(e) { var t; if ("SELECT" === e.nodeName) e.focus(), t = e.value; else if ("INPUT" === e.nodeName || "TEXTAREA" === e.nodeName) { var n = e.hasAttribute("readonly"); n || e.setAttribute("readonly", ""), e.select(), e.setSelectionRange(0, e.value.length), n || e.removeAttribute("readonly"), t = e.value } else { e.hasAttribute("contenteditable") && e.focus(); var r = window.getSelection(), i = document.createRange(); i.selectNodeContents(e), r.removeAllRanges(), r.addRange(i), t = r.toString() } return t } e.exports = n }, function (e, t) { function n() { } n.prototype = { on: function (e, t, n) { var r = this.e || (this.e = {}); return (r[e] || (r[e] = [])).push({ fn: t, ctx: n }), this }, once: function (e, t, n) { var r = this; function i() { r.off(e, i), t.apply(n, arguments) } return i._ = t, this.on(e, i, n) }, emit: function (e) { var t = [].slice.call(arguments, 1), n = ((this.e || (this.e = {}))[e] || []).slice(), r = 0, i = n.length; for (r; r < i; r++)n[r].fn.apply(n[r].ctx, t); return this }, off: function (e, t) { var n = this.e || (this.e = {}), r = n[e], i = []; if (r && t) for (var o = 0, a = r.length; o < a; o++)r[o].fn !== t && r[o].fn._ !== t && i.push(r[o]); return i.length ? n[e] = i : delete n[e], this } }, e.exports = n, e.exports.TinyEmitter = n }, function (e, t, n) { var r = n(3), i = n(4); function o(e, t, n) { if (!e && !t && !n) throw new Error("Missing required arguments"); if (!r.string(t)) throw new TypeError("Second argument must be a String"); if (!r.fn(n)) throw new TypeError("Third argument must be a Function"); if (r.node(e)) return a(e, t, n); if (r.nodeList(e)) return s(e, t, n); if (r.string(e)) return c(e, t, n); throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList") } function a(e, t, n) { return e.addEventListener(t, n), { destroy: function () { e.removeEventListener(t, n) } } } function s(e, t, n) { return Array.prototype.forEach.call(e, (function (e) { e.addEventListener(t, n) })), { destroy: function () { Array.prototype.forEach.call(e, (function (e) { e.removeEventListener(t, n) })) } } } function c(e, t, n) { return i(document.body, e, t, n) } e.exports = o }, function (e, t) { t.node = function (e) { return void 0 !== e && e instanceof HTMLElement && 1 === e.nodeType }, t.nodeList = function (e) { var n = Object.prototype.toString.call(e); return void 0 !== e && ("[object NodeList]" === n || "[object HTMLCollection]" === n) && "length" in e && (0 === e.length || t.node(e[0])) }, t.string = function (e) { return "string" === typeof e || e instanceof String }, t.fn = function (e) { var t = Object.prototype.toString.call(e); return "[object Function]" === t } }, function (e, t, n) { var r = n(5); function i(e, t, n, r, i) { var o = a.apply(this, arguments); return e.addEventListener(n, o, i), { destroy: function () { e.removeEventListener(n, o, i) } } } function o(e, t, n, r, o) { return "function" === typeof e.addEventListener ? i.apply(null, arguments) : "function" === typeof n ? i.bind(null, document).apply(null, arguments) : ("string" === typeof e && (e = document.querySelectorAll(e)), Array.prototype.map.call(e, (function (e) { return i(e, t, n, r, o) }))) } function a(e, t, n, i) { return function (n) { n.delegateTarget = r(n.target, t), n.delegateTarget && i.call(e, n) } } e.exports = o }, function (e, t) { var n = 9; if ("undefined" !== typeof Element && !Element.prototype.matches) { var r = Element.prototype; r.matches = r.matchesSelector || r.mozMatchesSelector || r.msMatchesSelector || r.oMatchesSelector || r.webkitMatchesSelector } function i(e, t) { while (e && e.nodeType !== n) { if ("function" === typeof e.matches && e.matches(t)) return e; e = e.parentNode } } e.exports = i }, function (e, t, n) { "use strict"; n.r(t); var r = n(0), i = n.n(r), o = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, a = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(); function s(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var c = function () { function e(t) { s(this, e), this.resolveOptions(t), this.initSelection() } return a(e, [{ key: "resolveOptions", value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; this.action = e.action, this.container = e.container, this.emitter = e.emitter, this.target = e.target, this.text = e.text, this.trigger = e.trigger, this.selectedText = "" } }, { key: "initSelection", value: function () { this.text ? this.selectFake() : this.target && this.selectTarget() } }, { key: "selectFake", value: function () { var e = this, t = "rtl" == document.documentElement.getAttribute("dir"); this.removeFake(), this.fakeHandlerCallback = function () { return e.removeFake() }, this.fakeHandler = this.container.addEventListener("click", this.fakeHandlerCallback) || !0, this.fakeElem = document.createElement("textarea"), this.fakeElem.style.fontSize = "12pt", this.fakeElem.style.border = "0", this.fakeElem.style.padding = "0", this.fakeElem.style.margin = "0", this.fakeElem.style.position = "absolute", this.fakeElem.style[t ? "right" : "left"] = "-9999px"; var n = window.pageYOffset || document.documentElement.scrollTop; this.fakeElem.style.top = n + "px", this.fakeElem.setAttribute("readonly", ""), this.fakeElem.value = this.text, this.container.appendChild(this.fakeElem), this.selectedText = i()(this.fakeElem), this.copyText() } }, { key: "removeFake", value: function () { this.fakeHandler && (this.container.removeEventListener("click", this.fakeHandlerCallback), this.fakeHandler = null, this.fakeHandlerCallback = null), this.fakeElem && (this.container.removeChild(this.fakeElem), this.fakeElem = null) } }, { key: "selectTarget", value: function () { this.selectedText = i()(this.target), this.copyText() } }, { key: "copyText", value: function () { var e = void 0; try { e = document.execCommand(this.action) } catch (t) { e = !1 } this.handleResult(e) } }, { key: "handleResult", value: function (e) { this.emitter.emit(e ? "success" : "error", { action: this.action, text: this.selectedText, trigger: this.trigger, clearSelection: this.clearSelection.bind(this) }) } }, { key: "clearSelection", value: function () { this.trigger && this.trigger.focus(), document.activeElement.blur(), window.getSelection().removeAllRanges() } }, { key: "destroy", value: function () { this.removeFake() } }, { key: "action", set: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "copy"; if (this._action = e, "copy" !== this._action && "cut" !== this._action) throw new Error('Invalid "action" value, use either "copy" or "cut"') }, get: function () { return this._action } }, { key: "target", set: function (e) { if (void 0 !== e) { if (!e || "object" !== ("undefined" === typeof e ? "undefined" : o(e)) || 1 !== e.nodeType) throw new Error('Invalid "target" value, use a valid Element'); if ("copy" === this.action && e.hasAttribute("disabled")) throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); if ("cut" === this.action && (e.hasAttribute("readonly") || e.hasAttribute("disabled"))) throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); this._target = e } }, get: function () { return this._target } }]), e }(), l = c, u = n(1), h = n.n(u), f = n(2), d = n.n(f), p = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, v = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }(); function m(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function g(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" !== typeof t && "function" !== typeof t ? e : t } function y(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var b = function (e) { function t(e, n) { m(this, t); var r = g(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this)); return r.resolveOptions(n), r.listenClick(e), r } return y(t, e), v(t, [{ key: "resolveOptions", value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; this.action = "function" === typeof e.action ? e.action : this.defaultAction, this.target = "function" === typeof e.target ? e.target : this.defaultTarget, this.text = "function" === typeof e.text ? e.text : this.defaultText, this.container = "object" === p(e.container) ? e.container : document.body } }, { key: "listenClick", value: function (e) { var t = this; this.listener = d()(e, "click", (function (e) { return t.onClick(e) })) } }, { key: "onClick", value: function (e) { var t = e.delegateTarget || e.currentTarget; this.clipboardAction && (this.clipboardAction = null), this.clipboardAction = new l({ action: this.action(t), target: this.target(t), text: this.text(t), container: this.container, trigger: t, emitter: this }) } }, { key: "defaultAction", value: function (e) { return x("action", e) } }, { key: "defaultTarget", value: function (e) { var t = x("target", e); if (t) return document.querySelector(t) } }, { key: "defaultText", value: function (e) { return x("text", e) } }, { key: "destroy", value: function () { this.listener.destroy(), this.clipboardAction && (this.clipboardAction.destroy(), this.clipboardAction = null) } }], [{ key: "isSupported", value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ["copy", "cut"], t = "string" === typeof e ? [e] : e, n = !!document.queryCommandSupported; return t.forEach((function (e) { n = n && !!document.queryCommandSupported(e) })), n } }]), t }(h.a); function x(e, t) { var n = "data-clipboard-" + e; if (t.hasAttribute(n)) return t.getAttribute(n) } t["default"] = b }])["default"] }))
+                }, b39a: function (e, t, n) { var r = n("d3f4"); e.exports = function (e, t) { if (!r(e) || e._t !== t) throw TypeError("Incompatible receiver, " + t + " required!"); return e } }, b3eb: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t, n, r) { var i = { m: ["eine Minute", "einer Minute"], h: ["eine Stunde", "einer Stunde"], d: ["ein Tag", "einem Tag"], dd: [e + " Tage", e + " Tagen"], w: ["eine Woche", "einer Woche"], M: ["ein Monat", "einem Monat"], MM: [e + " Monate", e + " Monaten"], y: ["ein Jahr", "einem Jahr"], yy: [e + " Jahre", e + " Jahren"] }; return t ? i[n][0] : i[n][1] } var n = e.defineLocale("de-at", { months: "J盲nner_Februar_M盲rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), monthsShort: "J盲n._Feb._M盲rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"), monthsParseExact: !0, weekdays: "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"), weekdaysShort: "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"), weekdaysMin: "So_Mo_Di_Mi_Do_Fr_Sa".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY HH:mm", LLLL: "dddd, D. MMMM YYYY HH:mm" }, calendar: { sameDay: "[heute um] LT [Uhr]", sameElse: "L", nextDay: "[morgen um] LT [Uhr]", nextWeek: "dddd [um] LT [Uhr]", lastDay: "[gestern um] LT [Uhr]", lastWeek: "[letzten] dddd [um] LT [Uhr]" }, relativeTime: { future: "in %s", past: "vor %s", s: "ein paar Sekunden", ss: "%d Sekunden", m: t, mm: "%d Minuten", h: t, hh: "%d Stunden", d: t, dd: t, w: t, ww: "%d Wochen", M: t, MM: t, y: t, yy: t }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return n
+                    }))
+                }, b447: function (e, t, n) { var r = n("3a38"), i = Math.min; e.exports = function (e) { return e > 0 ? i(r(e), 9007199254740991) : 0 } }, b452: function (e, t, n) { "use strict"; var r = n("ab93"), i = n.n(r); i.a }, b469: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t, n, r) { var i = { m: ["eine Minute", "einer Minute"], h: ["eine Stunde", "einer Stunde"], d: ["ein Tag", "einem Tag"], dd: [e + " Tage", e + " Tagen"], w: ["eine Woche", "einer Woche"], M: ["ein Monat", "einem Monat"], MM: [e + " Monate", e + " Monaten"], y: ["ein Jahr", "einem Jahr"], yy: [e + " Jahre", e + " Jahren"] }; return t ? i[n][0] : i[n][1] } var n = e.defineLocale("de", { months: "Januar_Februar_M盲rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), monthsShort: "Jan._Feb._M盲rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"), monthsParseExact: !0, weekdays: "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"), weekdaysShort: "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"), weekdaysMin: "So_Mo_Di_Mi_Do_Fr_Sa".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY HH:mm", LLLL: "dddd, D. MMMM YYYY HH:mm" }, calendar: { sameDay: "[heute um] LT [Uhr]", sameElse: "L", nextDay: "[morgen um] LT [Uhr]", nextWeek: "dddd [um] LT [Uhr]", lastDay: "[gestern um] LT [Uhr]", lastWeek: "[letzten] dddd [um] LT [Uhr]" }, relativeTime: { future: "in %s", past: "vor %s", s: "ein paar Sekunden", ss: "%d Sekunden", m: t, mm: "%d Minuten", h: t, hh: "%d Stunden", d: t, dd: t, w: t, ww: "%d Wochen", M: t, MM: t, y: t, yy: t }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return n
+                    }))
+                }, b488: function (e, t, n) { "use strict"; var r = n("9b57"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("daa3"); t["a"] = { methods: { setState: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = arguments[1], n = "function" === typeof e ? e(this.$data, this.$props) : e; if (this.getDerivedStateFromProps) { var r = this.getDerivedStateFromProps(Object(s["l"])(this), a()({}, this.$data, n)); if (null === r) return; n = a()({}, n, r || {}) } a()(this.$data, n), this.$forceUpdate(), this.$nextTick((function () { t && t() })) }, __emit: function () { var e = [].slice.call(arguments, 0), t = e[0], n = this.$listeners[t]; if (e.length && n) if (Array.isArray(n)) for (var r = 0, o = n.length; r < o; r++)n[r].apply(n, i()(e.slice(1))); else n.apply(void 0, i()(e.slice(1))) } } } }, b4b0: function (e, t, n) { var r = n("8d74"), i = n("1a8c"), o = n("ffd6"), a = NaN, s = /^[-+]0x[0-9a-f]+$/i, c = /^0b[01]+$/i, l = /^0o[0-7]+$/i, u = parseInt; function h(e) { if ("number" == typeof e) return e; if (o(e)) return a; if (i(e)) { var t = "function" == typeof e.valueOf ? e.valueOf() : e; e = i(t) ? t + "" : t } if ("string" != typeof e) return 0 === e ? e : +e; e = r(e); var n = c.test(e); return n || l.test(e) ? u(e.slice(2), n ? 2 : 8) : s.test(e) ? a : +e } e.exports = h }, b4c0: function (e, t, n) { var r = n("cb5a"); function i(e) { var t = this.__data__, n = r(t, e); return n < 0 ? void 0 : t[n][1] } e.exports = i }, b53d: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("tzm-latn", { months: "innayr_br摔ayr摔_mar摔s摔_ibrir_mayyw_ywnyw_ywlywz_桑w拧t_拧wtanbir_kt摔wbr摔_nwwanbir_dwjnbir".split("_"), monthsShort: "innayr_br摔ayr摔_mar摔s摔_ibrir_mayyw_ywnyw_ywlywz_桑w拧t_拧wtanbir_kt摔wbr摔_nwwanbir_dwjnbir".split("_"), weekdays: "asamas_aynas_asinas_akras_akwas_asimwas_asi岣峺as".split("_"), weekdaysShort: "asamas_aynas_asinas_akras_akwas_asimwas_asi岣峺as".split("_"), weekdaysMin: "asamas_aynas_asinas_akras_akwas_asimwas_asi岣峺as".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[asdkh g] LT", nextDay: "[aska g] LT", nextWeek: "dddd [g] LT", lastDay: "[assant g] LT", lastWeek: "dddd [g] LT", sameElse: "L" }, relativeTime: { future: "dadkh s yan %s", past: "yan %s", s: "imik", ss: "%d imik", m: "minu岣�", mm: "%d minu岣�", h: "sa蓻a", hh: "%d tassa蓻in", d: "ass", dd: "%d ossan", M: "ayowr", MM: "%d iyyirn", y: "asgas", yy: "%d isgasn" }, week: { dow: 6, doy: 12 } }); return t
+                    }))
+                }, b540: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("jv", { months: "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"), monthsShort: "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"), weekdays: "Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"), weekdaysShort: "Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"), weekdaysMin: "Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"), longDateFormat: { LT: "HH.mm", LTS: "HH.mm.ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY [pukul] HH.mm", LLLL: "dddd, D MMMM YYYY [pukul] HH.mm" }, meridiemParse: /enjing|siyang|sonten|ndalu/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "enjing" === t ? e : "siyang" === t ? e >= 11 ? e : e + 12 : "sonten" === t || "ndalu" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { return e < 11 ? "enjing" : e < 15 ? "siyang" : e < 19 ? "sonten" : "ndalu" }, calendar: { sameDay: "[Dinten puniko pukul] LT", nextDay: "[Mbenjang pukul] LT", nextWeek: "dddd [pukul] LT", lastDay: "[Kala wingi pukul] LT", lastWeek: "dddd [kepengker pukul] LT", sameElse: "L" }, relativeTime: { future: "wonten ing %s", past: "%s ingkang kepengker", s: "sawetawis detik", ss: "%d detik", m: "setunggal menit", mm: "%d menit", h: "setunggal jam", hh: "%d jam", d: "sedinten", dd: "%d dinten", M: "sewulan", MM: "%d wulan", y: "setaun", yy: "%d taun" }, week: { dow: 1, doy: 7 } }); return t
+                    }))
+                }, b5a7: function (e, t, n) { var r = n("0b07"), i = n("2b3e"), o = r(i, "DataView"); e.exports = o }, b639: function (e, t, n) {
+                    "use strict"; (function (e) {
+                        /*!
+                         * The buffer module from node.js, for the browser.
+                         *
+                         * @author   Feross Aboukhadijeh <http://feross.org>
+                         * @license  MIT
+                         */
+                        var r = n("1fb5"), i = n("9152"), o = n("e3db"); function a() { try { var e = new Uint8Array(1); return e.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }, 42 === e.foo() && "function" === typeof e.subarray && 0 === e.subarray(1, 1).byteLength } catch (t) { return !1 } } function s() { return l.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823 } function c(e, t) { if (s() < t) throw new RangeError("Invalid typed array length"); return l.TYPED_ARRAY_SUPPORT ? (e = new Uint8Array(t), e.__proto__ = l.prototype) : (null === e && (e = new l(t)), e.length = t), e } function l(e, t, n) { if (!l.TYPED_ARRAY_SUPPORT && !(this instanceof l)) return new l(e, t, n); if ("number" === typeof e) { if ("string" === typeof t) throw new Error("If encoding is specified then the first argument must be a string"); return d(this, e) } return u(this, e, t, n) } function u(e, t, n, r) { if ("number" === typeof t) throw new TypeError('"value" argument must not be a number'); return "undefined" !== typeof ArrayBuffer && t instanceof ArrayBuffer ? m(e, t, n, r) : "string" === typeof t ? p(e, t, n) : g(e, t) } function h(e) { if ("number" !== typeof e) throw new TypeError('"size" argument must be a number'); if (e < 0) throw new RangeError('"size" argument must not be negative') } function f(e, t, n, r) { return h(t), t <= 0 ? c(e, t) : void 0 !== n ? "string" === typeof r ? c(e, t).fill(n, r) : c(e, t).fill(n) : c(e, t) } function d(e, t) { if (h(t), e = c(e, t < 0 ? 0 : 0 | y(t)), !l.TYPED_ARRAY_SUPPORT) for (var n = 0; n < t; ++n)e[n] = 0; return e } function p(e, t, n) { if ("string" === typeof n && "" !== n || (n = "utf8"), !l.isEncoding(n)) throw new TypeError('"encoding" must be a valid string encoding'); var r = 0 | x(t, n); e = c(e, r); var i = e.write(t, n); return i !== r && (e = e.slice(0, i)), e } function v(e, t) { var n = t.length < 0 ? 0 : 0 | y(t.length); e = c(e, n); for (var r = 0; r < n; r += 1)e[r] = 255 & t[r]; return e } function m(e, t, n, r) { if (t.byteLength, n < 0 || t.byteLength < n) throw new RangeError("'offset' is out of bounds"); if (t.byteLength < n + (r || 0)) throw new RangeError("'length' is out of bounds"); return t = void 0 === n && void 0 === r ? new Uint8Array(t) : void 0 === r ? new Uint8Array(t, n) : new Uint8Array(t, n, r), l.TYPED_ARRAY_SUPPORT ? (e = t, e.__proto__ = l.prototype) : e = v(e, t), e } function g(e, t) { if (l.isBuffer(t)) { var n = 0 | y(t.length); return e = c(e, n), 0 === e.length || t.copy(e, 0, 0, n), e } if (t) { if ("undefined" !== typeof ArrayBuffer && t.buffer instanceof ArrayBuffer || "length" in t) return "number" !== typeof t.length || te(t.length) ? c(e, 0) : v(e, t); if ("Buffer" === t.type && o(t.data)) return v(e, t.data) } throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.") } function y(e) { if (e >= s()) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + s().toString(16) + " bytes"); return 0 | e } function b(e) { return +e != e && (e = 0), l.alloc(+e) } function x(e, t) { if (l.isBuffer(e)) return e.length; if ("undefined" !== typeof ArrayBuffer && "function" === typeof ArrayBuffer.isView && (ArrayBuffer.isView(e) || e instanceof ArrayBuffer)) return e.byteLength; "string" !== typeof e && (e = "" + e); var n = e.length; if (0 === n) return 0; for (var r = !1; ;)switch (t) { case "ascii": case "latin1": case "binary": return n; case "utf8": case "utf-8": case void 0: return X(e).length; case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return 2 * n; case "hex": return n >>> 1; case "base64": return Z(e).length; default: if (r) return X(e).length; t = ("" + t).toLowerCase(), r = !0 } } function w(e, t, n) { var r = !1; if ((void 0 === t || t < 0) && (t = 0), t > this.length) return ""; if ((void 0 === n || n > this.length) && (n = this.length), n <= 0) return ""; if (n >>>= 0, t >>>= 0, n <= t) return ""; e || (e = "utf8"); while (1) switch (e) { case "hex": return V(this, t, n); case "utf8": case "utf-8": return z(this, t, n); case "ascii": return D(this, t, n); case "latin1": case "binary": return H(this, t, n); case "base64": return j(this, t, n); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return I(this, t, n); default: if (r) throw new TypeError("Unknown encoding: " + e); e = (e + "").toLowerCase(), r = !0 } } function _(e, t, n) { var r = e[t]; e[t] = e[n], e[n] = r } function C(e, t, n, r, i) { if (0 === e.length) return -1; if ("string" === typeof n ? (r = n, n = 0) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && (n = -2147483648), n = +n, isNaN(n) && (n = i ? 0 : e.length - 1), n < 0 && (n = e.length + n), n >= e.length) { if (i) return -1; n = e.length - 1 } else if (n < 0) { if (!i) return -1; n = 0 } if ("string" === typeof t && (t = l.from(t, r)), l.isBuffer(t)) return 0 === t.length ? -1 : M(e, t, n, r, i); if ("number" === typeof t) return t &= 255, l.TYPED_ARRAY_SUPPORT && "function" === typeof Uint8Array.prototype.indexOf ? i ? Uint8Array.prototype.indexOf.call(e, t, n) : Uint8Array.prototype.lastIndexOf.call(e, t, n) : M(e, [t], n, r, i); throw new TypeError("val must be string, number or Buffer") } function M(e, t, n, r, i) { var o, a = 1, s = e.length, c = t.length; if (void 0 !== r && (r = String(r).toLowerCase(), "ucs2" === r || "ucs-2" === r || "utf16le" === r || "utf-16le" === r)) { if (e.length < 2 || t.length < 2) return -1; a = 2, s /= 2, c /= 2, n /= 2 } function l(e, t) { return 1 === a ? e[t] : e.readUInt16BE(t * a) } if (i) { var u = -1; for (o = n; o < s; o++)if (l(e, o) === l(t, -1 === u ? 0 : o - u)) { if (-1 === u && (u = o), o - u + 1 === c) return u * a } else -1 !== u && (o -= o - u), u = -1 } else for (n + c > s && (n = s - c), o = n; o >= 0; o--) { for (var h = !0, f = 0; f < c; f++)if (l(e, o + f) !== l(t, f)) { h = !1; break } if (h) return o } return -1 } function O(e, t, n, r) { n = Number(n) || 0; var i = e.length - n; r ? (r = Number(r), r > i && (r = i)) : r = i; var o = t.length; if (o % 2 !== 0) throw new TypeError("Invalid hex string"); r > o / 2 && (r = o / 2); for (var a = 0; a < r; ++a) { var s = parseInt(t.substr(2 * a, 2), 16); if (isNaN(s)) return a; e[n + a] = s } return a } function k(e, t, n, r) { return ee(X(t, e.length - n), e, n, r) } function S(e, t, n, r) { return ee(J(t), e, n, r) } function T(e, t, n, r) { return S(e, t, n, r) } function A(e, t, n, r) { return ee(Z(t), e, n, r) } function L(e, t, n, r) { return ee(Q(t, e.length - n), e, n, r) } function j(e, t, n) { return 0 === t && n === e.length ? r.fromByteArray(e) : r.fromByteArray(e.slice(t, n)) } function z(e, t, n) { n = Math.min(e.length, n); var r = [], i = t; while (i < n) { var o, a, s, c, l = e[i], u = null, h = l > 239 ? 4 : l > 223 ? 3 : l > 191 ? 2 : 1; if (i + h <= n) switch (h) { case 1: l < 128 && (u = l); break; case 2: o = e[i + 1], 128 === (192 & o) && (c = (31 & l) << 6 | 63 & o, c > 127 && (u = c)); break; case 3: o = e[i + 1], a = e[i + 2], 128 === (192 & o) && 128 === (192 & a) && (c = (15 & l) << 12 | (63 & o) << 6 | 63 & a, c > 2047 && (c < 55296 || c > 57343) && (u = c)); break; case 4: o = e[i + 1], a = e[i + 2], s = e[i + 3], 128 === (192 & o) && 128 === (192 & a) && 128 === (192 & s) && (c = (15 & l) << 18 | (63 & o) << 12 | (63 & a) << 6 | 63 & s, c > 65535 && c < 1114112 && (u = c)) }null === u ? (u = 65533, h = 1) : u > 65535 && (u -= 65536, r.push(u >>> 10 & 1023 | 55296), u = 56320 | 1023 & u), r.push(u), i += h } return P(r) } t.Buffer = l, t.SlowBuffer = b, t.INSPECT_MAX_BYTES = 50, l.TYPED_ARRAY_SUPPORT = void 0 !== e.TYPED_ARRAY_SUPPORT ? e.TYPED_ARRAY_SUPPORT : a(), t.kMaxLength = s(), l.poolSize = 8192, l._augment = function (e) { return e.__proto__ = l.prototype, e }, l.from = function (e, t, n) { return u(null, e, t, n) }, l.TYPED_ARRAY_SUPPORT && (l.prototype.__proto__ = Uint8Array.prototype, l.__proto__ = Uint8Array, "undefined" !== typeof Symbol && Symbol.species && l[Symbol.species] === l && Object.defineProperty(l, Symbol.species, { value: null, configurable: !0 })), l.alloc = function (e, t, n) { return f(null, e, t, n) }, l.allocUnsafe = function (e) { return d(null, e) }, l.allocUnsafeSlow = function (e) { return d(null, e) }, l.isBuffer = function (e) { return !(null == e || !e._isBuffer) }, l.compare = function (e, t) { if (!l.isBuffer(e) || !l.isBuffer(t)) throw new TypeError("Arguments must be Buffers"); if (e === t) return 0; for (var n = e.length, r = t.length, i = 0, o = Math.min(n, r); i < o; ++i)if (e[i] !== t[i]) { n = e[i], r = t[i]; break } return n < r ? -1 : r < n ? 1 : 0 }, l.isEncoding = function (e) { switch (String(e).toLowerCase()) { case "hex": case "utf8": case "utf-8": case "ascii": case "latin1": case "binary": case "base64": case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return !0; default: return !1 } }, l.concat = function (e, t) { if (!o(e)) throw new TypeError('"list" argument must be an Array of Buffers'); if (0 === e.length) return l.alloc(0); var n; if (void 0 === t) for (t = 0, n = 0; n < e.length; ++n)t += e[n].length; var r = l.allocUnsafe(t), i = 0; for (n = 0; n < e.length; ++n) { var a = e[n]; if (!l.isBuffer(a)) throw new TypeError('"list" argument must be an Array of Buffers'); a.copy(r, i), i += a.length } return r }, l.byteLength = x, l.prototype._isBuffer = !0, l.prototype.swap16 = function () { var e = this.length; if (e % 2 !== 0) throw new RangeError("Buffer size must be a multiple of 16-bits"); for (var t = 0; t < e; t += 2)_(this, t, t + 1); return this }, l.prototype.swap32 = function () { var e = this.length; if (e % 4 !== 0) throw new RangeError("Buffer size must be a multiple of 32-bits"); for (var t = 0; t < e; t += 4)_(this, t, t + 3), _(this, t + 1, t + 2); return this }, l.prototype.swap64 = function () { var e = this.length; if (e % 8 !== 0) throw new RangeError("Buffer size must be a multiple of 64-bits"); for (var t = 0; t < e; t += 8)_(this, t, t + 7), _(this, t + 1, t + 6), _(this, t + 2, t + 5), _(this, t + 3, t + 4); return this }, l.prototype.toString = function () { var e = 0 | this.length; return 0 === e ? "" : 0 === arguments.length ? z(this, 0, e) : w.apply(this, arguments) }, l.prototype.equals = function (e) { if (!l.isBuffer(e)) throw new TypeError("Argument must be a Buffer"); return this === e || 0 === l.compare(this, e) }, l.prototype.inspect = function () { var e = "", n = t.INSPECT_MAX_BYTES; return this.length > 0 && (e = this.toString("hex", 0, n).match(/.{2}/g).join(" "), this.length > n && (e += " ... ")), "<Buffer " + e + ">" }, l.prototype.compare = function (e, t, n, r, i) { if (!l.isBuffer(e)) throw new TypeError("Argument must be a Buffer"); if (void 0 === t && (t = 0), void 0 === n && (n = e ? e.length : 0), void 0 === r && (r = 0), void 0 === i && (i = this.length), t < 0 || n > e.length || r < 0 || i > this.length) throw new RangeError("out of range index"); if (r >= i && t >= n) return 0; if (r >= i) return -1; if (t >= n) return 1; if (t >>>= 0, n >>>= 0, r >>>= 0, i >>>= 0, this === e) return 0; for (var o = i - r, a = n - t, s = Math.min(o, a), c = this.slice(r, i), u = e.slice(t, n), h = 0; h < s; ++h)if (c[h] !== u[h]) { o = c[h], a = u[h]; break } return o < a ? -1 : a < o ? 1 : 0 }, l.prototype.includes = function (e, t, n) { return -1 !== this.indexOf(e, t, n) }, l.prototype.indexOf = function (e, t, n) { return C(this, e, t, n, !0) }, l.prototype.lastIndexOf = function (e, t, n) { return C(this, e, t, n, !1) }, l.prototype.write = function (e, t, n, r) { if (void 0 === t) r = "utf8", n = this.length, t = 0; else if (void 0 === n && "string" === typeof t) r = t, n = this.length, t = 0; else { if (!isFinite(t)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported"); t |= 0, isFinite(n) ? (n |= 0, void 0 === r && (r = "utf8")) : (r = n, n = void 0) } var i = this.length - t; if ((void 0 === n || n > i) && (n = i), e.length > 0 && (n < 0 || t < 0) || t > this.length) throw new RangeError("Attempt to write outside buffer bounds"); r || (r = "utf8"); for (var o = !1; ;)switch (r) { case "hex": return O(this, e, t, n); case "utf8": case "utf-8": return k(this, e, t, n); case "ascii": return S(this, e, t, n); case "latin1": case "binary": return T(this, e, t, n); case "base64": return A(this, e, t, n); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return L(this, e, t, n); default: if (o) throw new TypeError("Unknown encoding: " + r); r = ("" + r).toLowerCase(), o = !0 } }, l.prototype.toJSON = function () { return { type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0) } }; var E = 4096; function P(e) { var t = e.length; if (t <= E) return String.fromCharCode.apply(String, e); var n = "", r = 0; while (r < t) n += String.fromCharCode.apply(String, e.slice(r, r += E)); return n } function D(e, t, n) { var r = ""; n = Math.min(e.length, n); for (var i = t; i < n; ++i)r += String.fromCharCode(127 & e[i]); return r } function H(e, t, n) { var r = ""; n = Math.min(e.length, n); for (var i = t; i < n; ++i)r += String.fromCharCode(e[i]); return r } function V(e, t, n) { var r = e.length; (!t || t < 0) && (t = 0), (!n || n < 0 || n > r) && (n = r); for (var i = "", o = t; o < n; ++o)i += G(e[o]); return i } function I(e, t, n) { for (var r = e.slice(t, n), i = "", o = 0; o < r.length; o += 2)i += String.fromCharCode(r[o] + 256 * r[o + 1]); return i } function N(e, t, n) { if (e % 1 !== 0 || e < 0) throw new RangeError("offset is not uint"); if (e + t > n) throw new RangeError("Trying to access beyond buffer length") } function R(e, t, n, r, i, o) { if (!l.isBuffer(e)) throw new TypeError('"buffer" argument must be a Buffer instance'); if (t > i || t < o) throw new RangeError('"value" argument is out of bounds'); if (n + r > e.length) throw new RangeError("Index out of range") } function F(e, t, n, r) { t < 0 && (t = 65535 + t + 1); for (var i = 0, o = Math.min(e.length - n, 2); i < o; ++i)e[n + i] = (t & 255 << 8 * (r ? i : 1 - i)) >>> 8 * (r ? i : 1 - i) } function Y(e, t, n, r) { t < 0 && (t = 4294967295 + t + 1); for (var i = 0, o = Math.min(e.length - n, 4); i < o; ++i)e[n + i] = t >>> 8 * (r ? i : 3 - i) & 255 } function $(e, t, n, r, i, o) { if (n + r > e.length) throw new RangeError("Index out of range"); if (n < 0) throw new RangeError("Index out of range") } function B(e, t, n, r, o) { return o || $(e, t, n, 4, 34028234663852886e22, -34028234663852886e22), i.write(e, t, n, r, 23, 4), n + 4 } function W(e, t, n, r, o) { return o || $(e, t, n, 8, 17976931348623157e292, -17976931348623157e292), i.write(e, t, n, r, 52, 8), n + 8 } l.prototype.slice = function (e, t) { var n, r = this.length; if (e = ~~e, t = void 0 === t ? r : ~~t, e < 0 ? (e += r, e < 0 && (e = 0)) : e > r && (e = r), t < 0 ? (t += r, t < 0 && (t = 0)) : t > r && (t = r), t < e && (t = e), l.TYPED_ARRAY_SUPPORT) n = this.subarray(e, t), n.__proto__ = l.prototype; else { var i = t - e; n = new l(i, void 0); for (var o = 0; o < i; ++o)n[o] = this[o + e] } return n }, l.prototype.readUIntLE = function (e, t, n) { e |= 0, t |= 0, n || N(e, t, this.length); var r = this[e], i = 1, o = 0; while (++o < t && (i *= 256)) r += this[e + o] * i; return r }, l.prototype.readUIntBE = function (e, t, n) { e |= 0, t |= 0, n || N(e, t, this.length); var r = this[e + --t], i = 1; while (t > 0 && (i *= 256)) r += this[e + --t] * i; return r }, l.prototype.readUInt8 = function (e, t) { return t || N(e, 1, this.length), this[e] }, l.prototype.readUInt16LE = function (e, t) { return t || N(e, 2, this.length), this[e] | this[e + 1] << 8 }, l.prototype.readUInt16BE = function (e, t) { return t || N(e, 2, this.length), this[e] << 8 | this[e + 1] }, l.prototype.readUInt32LE = function (e, t) { return t || N(e, 4, this.length), (this[e] | this[e + 1] << 8 | this[e + 2] << 16) + 16777216 * this[e + 3] }, l.prototype.readUInt32BE = function (e, t) { return t || N(e, 4, this.length), 16777216 * this[e] + (this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3]) }, l.prototype.readIntLE = function (e, t, n) { e |= 0, t |= 0, n || N(e, t, this.length); var r = this[e], i = 1, o = 0; while (++o < t && (i *= 256)) r += this[e + o] * i; return i *= 128, r >= i && (r -= Math.pow(2, 8 * t)), r }, l.prototype.readIntBE = function (e, t, n) { e |= 0, t |= 0, n || N(e, t, this.length); var r = t, i = 1, o = this[e + --r]; while (r > 0 && (i *= 256)) o += this[e + --r] * i; return i *= 128, o >= i && (o -= Math.pow(2, 8 * t)), o }, l.prototype.readInt8 = function (e, t) { return t || N(e, 1, this.length), 128 & this[e] ? -1 * (255 - this[e] + 1) : this[e] }, l.prototype.readInt16LE = function (e, t) { t || N(e, 2, this.length); var n = this[e] | this[e + 1] << 8; return 32768 & n ? 4294901760 | n : n }, l.prototype.readInt16BE = function (e, t) { t || N(e, 2, this.length); var n = this[e + 1] | this[e] << 8; return 32768 & n ? 4294901760 | n : n }, l.prototype.readInt32LE = function (e, t) { return t || N(e, 4, this.length), this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] << 24 }, l.prototype.readInt32BE = function (e, t) { return t || N(e, 4, this.length), this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3] }, l.prototype.readFloatLE = function (e, t) { return t || N(e, 4, this.length), i.read(this, e, !0, 23, 4) }, l.prototype.readFloatBE = function (e, t) { return t || N(e, 4, this.length), i.read(this, e, !1, 23, 4) }, l.prototype.readDoubleLE = function (e, t) { return t || N(e, 8, this.length), i.read(this, e, !0, 52, 8) }, l.prototype.readDoubleBE = function (e, t) { return t || N(e, 8, this.length), i.read(this, e, !1, 52, 8) }, l.prototype.writeUIntLE = function (e, t, n, r) { if (e = +e, t |= 0, n |= 0, !r) { var i = Math.pow(2, 8 * n) - 1; R(this, e, t, n, i, 0) } var o = 1, a = 0; this[t] = 255 & e; while (++a < n && (o *= 256)) this[t + a] = e / o & 255; return t + n }, l.prototype.writeUIntBE = function (e, t, n, r) { if (e = +e, t |= 0, n |= 0, !r) { var i = Math.pow(2, 8 * n) - 1; R(this, e, t, n, i, 0) } var o = n - 1, a = 1; this[t + o] = 255 & e; while (--o >= 0 && (a *= 256)) this[t + o] = e / a & 255; return t + n }, l.prototype.writeUInt8 = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 1, 255, 0), l.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), this[t] = 255 & e, t + 1 }, l.prototype.writeUInt16LE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 2, 65535, 0), l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8) : F(this, e, t, !0), t + 2 }, l.prototype.writeUInt16BE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 2, 65535, 0), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8, this[t + 1] = 255 & e) : F(this, e, t, !1), t + 2 }, l.prototype.writeUInt32LE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 4, 4294967295, 0), l.TYPED_ARRAY_SUPPORT ? (this[t + 3] = e >>> 24, this[t + 2] = e >>> 16, this[t + 1] = e >>> 8, this[t] = 255 & e) : Y(this, e, t, !0), t + 4 }, l.prototype.writeUInt32BE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 4, 4294967295, 0), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e) : Y(this, e, t, !1), t + 4 }, l.prototype.writeIntLE = function (e, t, n, r) { if (e = +e, t |= 0, !r) { var i = Math.pow(2, 8 * n - 1); R(this, e, t, n, i - 1, -i) } var o = 0, a = 1, s = 0; this[t] = 255 & e; while (++o < n && (a *= 256)) e < 0 && 0 === s && 0 !== this[t + o - 1] && (s = 1), this[t + o] = (e / a >> 0) - s & 255; return t + n }, l.prototype.writeIntBE = function (e, t, n, r) { if (e = +e, t |= 0, !r) { var i = Math.pow(2, 8 * n - 1); R(this, e, t, n, i - 1, -i) } var o = n - 1, a = 1, s = 0; this[t + o] = 255 & e; while (--o >= 0 && (a *= 256)) e < 0 && 0 === s && 0 !== this[t + o + 1] && (s = 1), this[t + o] = (e / a >> 0) - s & 255; return t + n }, l.prototype.writeInt8 = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 1, 127, -128), l.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), e < 0 && (e = 255 + e + 1), this[t] = 255 & e, t + 1 }, l.prototype.writeInt16LE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 2, 32767, -32768), l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8) : F(this, e, t, !0), t + 2 }, l.prototype.writeInt16BE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 2, 32767, -32768), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8, this[t + 1] = 255 & e) : F(this, e, t, !1), t + 2 }, l.prototype.writeInt32LE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 4, 2147483647, -2147483648), l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8, this[t + 2] = e >>> 16, this[t + 3] = e >>> 24) : Y(this, e, t, !0), t + 4 }, l.prototype.writeInt32BE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 4, 2147483647, -2147483648), e < 0 && (e = 4294967295 + e + 1), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e) : Y(this, e, t, !1), t + 4 }, l.prototype.writeFloatLE = function (e, t, n) { return B(this, e, t, !0, n) }, l.prototype.writeFloatBE = function (e, t, n) { return B(this, e, t, !1, n) }, l.prototype.writeDoubleLE = function (e, t, n) { return W(this, e, t, !0, n) }, l.prototype.writeDoubleBE = function (e, t, n) { return W(this, e, t, !1, n) }, l.prototype.copy = function (e, t, n, r) { if (n || (n = 0), r || 0 === r || (r = this.length), t >= e.length && (t = e.length), t || (t = 0), r > 0 && r < n && (r = n), r === n) return 0; if (0 === e.length || 0 === this.length) return 0; if (t < 0) throw new RangeError("targetStart out of bounds"); if (n < 0 || n >= this.length) throw new RangeError("sourceStart out of bounds"); if (r < 0) throw new RangeError("sourceEnd out of bounds"); r > this.length && (r = this.length), e.length - t < r - n && (r = e.length - t + n); var i, o = r - n; if (this === e && n < t && t < r) for (i = o - 1; i >= 0; --i)e[i + t] = this[i + n]; else if (o < 1e3 || !l.TYPED_ARRAY_SUPPORT) for (i = 0; i < o; ++i)e[i + t] = this[i + n]; else Uint8Array.prototype.set.call(e, this.subarray(n, n + o), t); return o }, l.prototype.fill = function (e, t, n, r) { if ("string" === typeof e) { if ("string" === typeof t ? (r = t, t = 0, n = this.length) : "string" === typeof n && (r = n, n = this.length), 1 === e.length) { var i = e.charCodeAt(0); i < 256 && (e = i) } if (void 0 !== r && "string" !== typeof r) throw new TypeError("encoding must be a string"); if ("string" === typeof r && !l.isEncoding(r)) throw new TypeError("Unknown encoding: " + r) } else "number" === typeof e && (e &= 255); if (t < 0 || this.length < t || this.length < n) throw new RangeError("Out of range index"); if (n <= t) return this; var o; if (t >>>= 0, n = void 0 === n ? this.length : n >>> 0, e || (e = 0), "number" === typeof e) for (o = t; o < n; ++o)this[o] = e; else { var a = l.isBuffer(e) ? e : X(new l(e, r).toString()), s = a.length; for (o = 0; o < n - t; ++o)this[o + t] = a[o % s] } return this }; var q = /[^+\/0-9A-Za-z-_]/g; function U(e) { if (e = K(e).replace(q, ""), e.length < 2) return ""; while (e.length % 4 !== 0) e += "="; return e } function K(e) { return e.trim ? e.trim() : e.replace(/^\s+|\s+$/g, "") } function G(e) { return e < 16 ? "0" + e.toString(16) : e.toString(16) } function X(e, t) { var n; t = t || 1 / 0; for (var r = e.length, i = null, o = [], a = 0; a < r; ++a) { if (n = e.charCodeAt(a), n > 55295 && n < 57344) { if (!i) { if (n > 56319) { (t -= 3) > -1 && o.push(239, 191, 189); continue } if (a + 1 === r) { (t -= 3) > -1 && o.push(239, 191, 189); continue } i = n; continue } if (n < 56320) { (t -= 3) > -1 && o.push(239, 191, 189), i = n; continue } n = 65536 + (i - 55296 << 10 | n - 56320) } else i && (t -= 3) > -1 && o.push(239, 191, 189); if (i = null, n < 128) { if ((t -= 1) < 0) break; o.push(n) } else if (n < 2048) { if ((t -= 2) < 0) break; o.push(n >> 6 | 192, 63 & n | 128) } else if (n < 65536) { if ((t -= 3) < 0) break; o.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128) } else { if (!(n < 1114112)) throw new Error("Invalid code point"); if ((t -= 4) < 0) break; o.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128) } } return o } function J(e) { for (var t = [], n = 0; n < e.length; ++n)t.push(255 & e.charCodeAt(n)); return t } function Q(e, t) { for (var n, r, i, o = [], a = 0; a < e.length; ++a) { if ((t -= 2) < 0) break; n = e.charCodeAt(a), r = n >> 8, i = n % 256, o.push(i), o.push(r) } return o } function Z(e) { return r.toByteArray(U(e)) } function ee(e, t, n, r) { for (var i = 0; i < r; ++i) { if (i + n >= t.length || i >= e.length) break; t[i + n] = e[i] } return i } function te(e) { return e !== e }
+                    }).call(this, n("c8ba"))
+                }, b760: function (e, t, n) { var r = n("872a"), i = n("9638"); function o(e, t, n) { (void 0 !== n && !i(e[t], n) || void 0 === n && !(t in e)) && r(e, t, n) } e.exports = o }, b7e9: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("en-sg", { months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" }, relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", ss: "%d seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (e) { var t = e % 10, n = 1 === ~~(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th"; return e + n }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, b84c: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("nn", { months: "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), monthsShort: "jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"), monthsParseExact: !0, weekdays: "sundag_m氓ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"), weekdaysShort: "su._m氓._ty._on._to._fr._lau.".split("_"), weekdaysMin: "su_m氓_ty_on_to_fr_la".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY [kl.] H:mm", LLLL: "dddd D. MMMM YYYY [kl.] HH:mm" }, calendar: { sameDay: "[I dag klokka] LT", nextDay: "[I morgon klokka] LT", nextWeek: "dddd [klokka] LT", lastDay: "[I g氓r klokka] LT", lastWeek: "[F酶reg氓ande] dddd [klokka] LT", sameElse: "L" }, relativeTime: { future: "om %s", past: "%s sidan", s: "nokre sekund", ss: "%d sekund", m: "eit minutt", mm: "%d minutt", h: "ein time", hh: "%d timar", d: "ein dag", dd: "%d dagar", M: "ein m氓nad", MM: "%d m氓nader", y: "eit 氓r", yy: "%d 氓r" }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, b8ad: function (e, t, n) { (function (t, n) { e.exports = n() })(0, (function () { "use strict"; function e(e, t, n) { n = n || {}, n.childrenKeyName = n.childrenKeyName || "children"; var r = e || [], i = [], o = 0; do { var a = r.filter((function (e) { return t(e, o) }))[0]; if (!a) break; i.push(a), r = a[n.childrenKeyName] || [], o += 1 } while (r.length > 0); return i } return e })) }, b8bb: function (e, t, n) { var r = n("4d8b"), i = n("c6cf"), o = i(r); e.exports = o }, b8e3: function (e, t) { e.exports = !0 }, b8e7: function (e, t, n) { }, b97c: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { ss: "sekundes_sekund膿m_sekunde_sekundes".split("_"), m: "min奴tes_min奴t膿m_min奴te_min奴tes".split("_"), mm: "min奴tes_min奴t膿m_min奴te_min奴tes".split("_"), h: "stundas_stund膩m_stunda_stundas".split("_"), hh: "stundas_stund膩m_stunda_stundas".split("_"), d: "dienas_dien膩m_diena_dienas".split("_"), dd: "dienas_dien膩m_diena_dienas".split("_"), M: "m膿ne拧a_m膿ne拧iem_m膿nesis_m膿ne拧i".split("_"), MM: "m膿ne拧a_m膿ne拧iem_m膿nesis_m膿ne拧i".split("_"), y: "gada_gadiem_gads_gadi".split("_"), yy: "gada_gadiem_gads_gadi".split("_") }; function n(e, t, n) { return n ? t % 10 === 1 && t % 100 !== 11 ? e[2] : e[3] : t % 10 === 1 && t % 100 !== 11 ? e[0] : e[1] } function r(e, r, i) { return e + " " + n(t[i], e, r) } function i(e, r, i) { return n(t[i], e, r) } function o(e, t) { return t ? "da啪as sekundes" : "da啪膩m sekund膿m" } var a = e.defineLocale("lv", { months: "janv膩ris_febru膩ris_marts_apr墨lis_maijs_j奴nijs_j奴lijs_augusts_septembris_oktobris_novembris_decembris".split("_"), monthsShort: "jan_feb_mar_apr_mai_j奴n_j奴l_aug_sep_okt_nov_dec".split("_"), weekdays: "sv膿tdiena_pirmdiena_otrdiena_tre拧diena_ceturtdiena_piektdiena_sestdiena".split("_"), weekdaysShort: "Sv_P_O_T_C_Pk_S".split("_"), weekdaysMin: "Sv_P_O_T_C_Pk_S".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY.", LL: "YYYY. [gada] D. MMMM", LLL: "YYYY. [gada] D. MMMM, HH:mm", LLLL: "YYYY. [gada] D. MMMM, dddd, HH:mm" }, calendar: { sameDay: "[艩odien pulksten] LT", nextDay: "[R墨t pulksten] LT", nextWeek: "dddd [pulksten] LT", lastDay: "[Vakar pulksten] LT", lastWeek: "[Pag膩ju拧膩] dddd [pulksten] LT", sameElse: "L" }, relativeTime: { future: "p膿c %s", past: "pirms %s", s: o, ss: r, m: i, mm: r, h: i, hh: r, d: i, dd: r, M: i, MM: r, y: i, yy: r }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return a
+                    }))
+                }, badf: function (e, t, n) { var r = n("642a"), i = n("1838"), o = n("cd9d"), a = n("6747"), s = n("f9ce"); function c(e) { return "function" == typeof e ? e : null == e ? o : "object" == typeof e ? a(e) ? i(e[0], e[1]) : r(e) : s(e) } e.exports = c }, bb71: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t, n, r) { var i = { m: ["eine Minute", "einer Minute"], h: ["eine Stunde", "einer Stunde"], d: ["ein Tag", "einem Tag"], dd: [e + " Tage", e + " Tagen"], w: ["eine Woche", "einer Woche"], M: ["ein Monat", "einem Monat"], MM: [e + " Monate", e + " Monaten"], y: ["ein Jahr", "einem Jahr"], yy: [e + " Jahre", e + " Jahren"] }; return t ? i[n][0] : i[n][1] } var n = e.defineLocale("de-ch", { months: "Januar_Februar_M盲rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), monthsShort: "Jan._Feb._M盲rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"), monthsParseExact: !0, weekdays: "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"), weekdaysShort: "So_Mo_Di_Mi_Do_Fr_Sa".split("_"), weekdaysMin: "So_Mo_Di_Mi_Do_Fr_Sa".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY HH:mm", LLLL: "dddd, D. MMMM YYYY HH:mm" }, calendar: { sameDay: "[heute um] LT [Uhr]", sameElse: "L", nextDay: "[morgen um] LT [Uhr]", nextWeek: "dddd [um] LT [Uhr]", lastDay: "[gestern um] LT [Uhr]", lastWeek: "[letzten] dddd [um] LT [Uhr]" }, relativeTime: { future: "in %s", past: "vor %s", s: "ein paar Sekunden", ss: "%d Sekunden", m: t, mm: "%d Minuten", h: t, hh: "%d Stunden", d: t, dd: t, w: t, ww: "%d Wochen", M: t, MM: t, y: t, yy: t }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return n
+                    }))
+                }, bbc0: function (e, t, n) { var r = n("6044"), i = "__lodash_hash_undefined__", o = Object.prototype, a = o.hasOwnProperty; function s(e) { var t = this.__data__; if (r) { var n = t[e]; return n === i ? void 0 : n } return a.call(t, e) ? t[e] : void 0 } e.exports = s }, bcaa: function (e, t, n) { var r = n("cb7c"), i = n("d3f4"), o = n("a5b8"); e.exports = function (e, t) { if (r(e), i(t) && t.constructor === e) return t; var n = o.f(e), a = n.resolve; return a(t), n.promise } }, bcdf: function (e, t) { function n() { } e.exports = n }, bcf7: function (e, t, n) { var r = n("9020"), i = n("217d").each; function o(e, t) { this.query = e, this.isUnconditional = t, this.handlers = [], this.mql = window.matchMedia(e); var n = this; this.listener = function (e) { n.mql = e.currentTarget || e, n.assess() }, this.mql.addListener(this.listener) } o.prototype = { constuctor: o, addHandler: function (e) { var t = new r(e); this.handlers.push(t), this.matches() && t.on() }, removeHandler: function (e) { var t = this.handlers; i(t, (function (n, r) { if (n.equals(e)) return n.destroy(), !t.splice(r, 1) })) }, matches: function () { return this.mql.matches || this.isUnconditional }, clear: function () { i(this.handlers, (function (e) { e.destroy() })), this.mql.removeListener(this.listener), this.handlers.length = 0 }, assess: function () { var e = this.matches() ? "on" : "off"; i(this.handlers, (function (t) { t[e]() })) } }, e.exports = o }, be13: function (e, t) { e.exports = function (e) { if (void 0 == e) throw TypeError("Can't call method on  " + e); return e } }, bf0b: function (e, t, n) { var r = n("355d"), i = n("aebd"), o = n("36c3"), a = n("1bc3"), s = n("07e3"), c = n("794b"), l = Object.getOwnPropertyDescriptor; t.f = n("8e60") ? l : function (e, t) { if (e = o(e), t = a(t, !0), c) try { return l(e, t) } catch (n) { } if (s(e, t)) return i(!r.f.call(e, t), e[t]) } }, c005: function (e, t, n) { var r = n("2686"), i = n("b047f"), o = n("99d3"), a = o && o.isRegExp, s = a ? i(a) : r; e.exports = s }, c05f: function (e, t, n) { var r = n("7b97"), i = n("1310"); function o(e, t, n, a, s) { return e === t || (null == e || null == t || !i(e) && !i(t) ? e !== e && t !== t : r(e, t, n, a, o, s)) } e.exports = o }, c098: function (e, t) { var n = 9007199254740991, r = /^(?:0|[1-9]\d*)$/; function i(e, t) { var i = typeof e; return t = null == t ? n : t, !!t && ("number" == i || "symbol" != i && r.test(e)) && e > -1 && e % 1 == 0 && e < t } e.exports = i }, c109: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("tzm", { months: "獾夆祻獾忊窗獾⑩禂_獯扁禃獯扳耽獾昣獾庘窗獾曗禋_獾夆幢獾斺祲獾擾獾庘窗獾⑩耽獾揰獾⑩祿獾忊耽獾揰獾⑩祿獾嶁耽獾撯担_獾栤祿獾涒禍_獾涒祿獾溾窗獾忊幢獾夆禂_獯解禑獾撯幢獾昣獾忊祿獾♀窗獾忊幢獾夆禂_獯封祿獾娾祻獯扁祲獾�".split("_"), monthsShort: "獾夆祻獾忊窗獾⑩禂_獯扁禃獯扳耽獾昣獾庘窗獾曗禋_獾夆幢獾斺祲獾擾獾庘窗獾⑩耽獾揰獾⑩祿獾忊耽獾揰獾⑩祿獾嶁耽獾撯担_獾栤祿獾涒禍_獾涒祿獾溾窗獾忊幢獾夆禂_獯解禑獾撯幢獾昣獾忊祿獾♀窗獾忊幢獾夆禂_獯封祿獾娾祻獯扁祲獾�".split("_"), weekdays: "獯扳禉獯扳祹獯扳禉_獯扳耽獾忊窗獾檁獯扳禉獾夆祻獯扳禉_獯扳唇獾斺窗獾檁獯扳唇獾♀窗獾檁獯扳禉獾夆祹獾♀窗獾檁獯扳禉獾夆垂獾⑩窗獾�".split("_"), weekdaysShort: "獯扳禉獯扳祹獯扳禉_獯扳耽獾忊窗獾檁獯扳禉獾夆祻獯扳禉_獯扳唇獾斺窗獾檁獯扳唇獾♀窗獾檁獯扳禉獾夆祹獾♀窗獾檁獯扳禉獾夆垂獾⑩窗獾�".split("_"), weekdaysMin: "獯扳禉獯扳祹獯扳禉_獯扳耽獾忊窗獾檁獯扳禉獾夆祻獯扳禉_獯扳唇獾斺窗獾檁獯扳唇獾♀窗獾檁獯扳禉獾夆祹獾♀窗獾檁獯扳禉獾夆垂獾⑩窗獾�".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[獯扳禉獯封祬 獯碷 LT", nextDay: "[獯扳禉獯解窗 獯碷 LT", nextWeek: "dddd [獯碷 LT", lastDay: "[獯扳禋獯扳祻獾� 獯碷 LT", lastWeek: "dddd [獯碷 LT", sameElse: "L" }, relativeTime: { future: "獯封窗獯封祬 獾� 獾⑩窗獾� %s", past: "獾⑩窗獾� %s", s: "獾夆祹獾夆唇", ss: "%d 獾夆祹獾夆唇", m: "獾庘祲獾忊祿獯�", mm: "%d 獾庘祲獾忊祿獯�", h: "獾欌窗獾勨窗", hh: "%d 獾溾窗獾欌禉獯扳祫獾夆祻", d: "獯扳禉獾�", dd: "%d o獾欌禉獯扳祻", M: "獯扳耽o獾撯禂", MM: "%d 獾夆耽獾⑩祲獾斺祻", y: "獯扳禉獯斥窗獾�", yy: "%d 獾夆禉獯斥窗獾欌祻" }, week: { dow: 6, doy: 12 } }); return t
+                    }))
+                }, c195: function (e, t, n) { var r = n("bcf7"), i = n("217d"), o = i.each, a = i.isFunction, s = i.isArray; function c() { if (!window.matchMedia) throw new Error("matchMedia not present, legacy browsers require a polyfill"); this.queries = {}, this.browserIsIncapable = !window.matchMedia("only all").matches } c.prototype = { constructor: c, register: function (e, t, n) { var i = this.queries, c = n && this.browserIsIncapable; return i[e] || (i[e] = new r(e, c)), a(t) && (t = { match: t }), s(t) || (t = [t]), o(t, (function (t) { a(t) && (t = { match: t }), i[e].addHandler(t) })), this }, unregister: function (e, t) { var n = this.queries[e]; return n && (t ? n.removeHandler(t) : (n.clear(), delete this.queries[e])), this } }, e.exports = c }, c1c9: function (e, t, n) { var r = n("a454"), i = n("f3c1"), o = i(r); e.exports = o }, c1df: function (e, t, n) {
+                    (function (e) {//! moment.js
+                        //! version : 2.27.0
+                        //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
+                        //! license : MIT
+                        //! momentjs.com
+                        (function (t, n) { e.exports = n() })(0, (function () {
+                            "use strict"; var t, r; function i() { return t.apply(null, arguments) } function o(e) { t = e } function a(e) { return e instanceof Array || "[object Array]" === Object.prototype.toString.call(e) } function s(e) { return null != e && "[object Object]" === Object.prototype.toString.call(e) } function c(e, t) { return Object.prototype.hasOwnProperty.call(e, t) } function l(e) { if (Object.getOwnPropertyNames) return 0 === Object.getOwnPropertyNames(e).length; var t; for (t in e) if (c(e, t)) return !1; return !0 } function u(e) { return void 0 === e } function h(e) { return "number" === typeof e || "[object Number]" === Object.prototype.toString.call(e) } function f(e) { return e instanceof Date || "[object Date]" === Object.prototype.toString.call(e) } function d(e, t) { var n, r = []; for (n = 0; n < e.length; ++n)r.push(t(e[n], n)); return r } function p(e, t) { for (var n in t) c(t, n) && (e[n] = t[n]); return c(t, "toString") && (e.toString = t.toString), c(t, "valueOf") && (e.valueOf = t.valueOf), e } function v(e, t, n, r) { return Kn(e, t, n, r, !0).utc() } function m() { return { empty: !1, unusedTokens: [], unusedInput: [], overflow: -2, charsLeftOver: 0, nullInput: !1, invalidEra: null, invalidMonth: null, invalidFormat: !1, userInvalidated: !1, iso: !1, parsedDateParts: [], era: null, meridiem: null, rfc2822: !1, weekdayMismatch: !1 } } function g(e) { return null == e._pf && (e._pf = m()), e._pf } function y(e) { if (null == e._isValid) { var t = g(e), n = r.call(t.parsedDateParts, (function (e) { return null != e })), i = !isNaN(e._d.getTime()) && t.overflow < 0 && !t.empty && !t.invalidEra && !t.invalidMonth && !t.invalidWeekday && !t.weekdayMismatch && !t.nullInput && !t.invalidFormat && !t.userInvalidated && (!t.meridiem || t.meridiem && n); if (e._strict && (i = i && 0 === t.charsLeftOver && 0 === t.unusedTokens.length && void 0 === t.bigHour), null != Object.isFrozen && Object.isFrozen(e)) return i; e._isValid = i } return e._isValid } function b(e) { var t = v(NaN); return null != e ? p(g(t), e) : g(t).userInvalidated = !0, t } r = Array.prototype.some ? Array.prototype.some : function (e) { var t, n = Object(this), r = n.length >>> 0; for (t = 0; t < r; t++)if (t in n && e.call(this, n[t], t, n)) return !0; return !1 }; var x = i.momentProperties = [], w = !1; function _(e, t) { var n, r, i; if (u(t._isAMomentObject) || (e._isAMomentObject = t._isAMomentObject), u(t._i) || (e._i = t._i), u(t._f) || (e._f = t._f), u(t._l) || (e._l = t._l), u(t._strict) || (e._strict = t._strict), u(t._tzm) || (e._tzm = t._tzm), u(t._isUTC) || (e._isUTC = t._isUTC), u(t._offset) || (e._offset = t._offset), u(t._pf) || (e._pf = g(t)), u(t._locale) || (e._locale = t._locale), x.length > 0) for (n = 0; n < x.length; n++)r = x[n], i = t[r], u(i) || (e[r] = i); return e } function C(e) { _(this, e), this._d = new Date(null != e._d ? e._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), !1 === w && (w = !0, i.updateOffset(this), w = !1) } function M(e) { return e instanceof C || null != e && null != e._isAMomentObject } function O(e) { !1 === i.suppressDeprecationWarnings && "undefined" !== typeof console && console.warn && console.warn("Deprecation warning: " + e) } function k(e, t) { var n = !0; return p((function () { if (null != i.deprecationHandler && i.deprecationHandler(null, e), n) { var r, o, a, s = []; for (o = 0; o < arguments.length; o++) { if (r = "", "object" === typeof arguments[o]) { for (a in r += "\n[" + o + "] ", arguments[0]) c(arguments[0], a) && (r += a + ": " + arguments[0][a] + ", "); r = r.slice(0, -2) } else r = arguments[o]; s.push(r) } O(e + "\nArguments: " + Array.prototype.slice.call(s).join("") + "\n" + (new Error).stack), n = !1 } return t.apply(this, arguments) }), t) } var S, T = {}; function A(e, t) { null != i.deprecationHandler && i.deprecationHandler(e, t), T[e] || (O(t), T[e] = !0) } function L(e) { return "undefined" !== typeof Function && e instanceof Function || "[object Function]" === Object.prototype.toString.call(e) } function j(e) { var t, n; for (n in e) c(e, n) && (t = e[n], L(t) ? this[n] = t : this["_" + n] = t); this._config = e, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source) } function z(e, t) { var n, r = p({}, e); for (n in t) c(t, n) && (s(e[n]) && s(t[n]) ? (r[n] = {}, p(r[n], e[n]), p(r[n], t[n])) : null != t[n] ? r[n] = t[n] : delete r[n]); for (n in e) c(e, n) && !c(t, n) && s(e[n]) && (r[n] = p({}, r[n])); return r } function E(e) { null != e && this.set(e) } i.suppressDeprecationWarnings = !1, i.deprecationHandler = null, S = Object.keys ? Object.keys : function (e) { var t, n = []; for (t in e) c(e, t) && n.push(t); return n }; var P = { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" }; function D(e, t, n) { var r = this._calendar[e] || this._calendar["sameElse"]; return L(r) ? r.call(t, n) : r } function H(e, t, n) { var r = "" + Math.abs(e), i = t - r.length, o = e >= 0; return (o ? n ? "+" : "" : "-") + Math.pow(10, Math.max(0, i)).toString().substr(1) + r } var V = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, I = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, N = {}, R = {}; function F(e, t, n, r) { var i = r; "string" === typeof r && (i = function () { return this[r]() }), e && (R[e] = i), t && (R[t[0]] = function () { return H(i.apply(this, arguments), t[1], t[2]) }), n && (R[n] = function () { return this.localeData().ordinal(i.apply(this, arguments), e) }) } function Y(e) { return e.match(/\[[\s\S]/) ? e.replace(/^\[|\]$/g, "") : e.replace(/\\/g, "") } function $(e) { var t, n, r = e.match(V); for (t = 0, n = r.length; t < n; t++)R[r[t]] ? r[t] = R[r[t]] : r[t] = Y(r[t]); return function (t) { var i, o = ""; for (i = 0; i < n; i++)o += L(r[i]) ? r[i].call(t, e) : r[i]; return o } } function B(e, t) { return e.isValid() ? (t = W(t, e.localeData()), N[t] = N[t] || $(t), N[t](e)) : e.localeData().invalidDate() } function W(e, t) { var n = 5; function r(e) { return t.longDateFormat(e) || e } I.lastIndex = 0; while (n >= 0 && I.test(e)) e = e.replace(I, r), I.lastIndex = 0, n -= 1; return e } var q = { LTS: "h:mm:ss A", LT: "h:mm A", L: "MM/DD/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY h:mm A", LLLL: "dddd, MMMM D, YYYY h:mm A" }; function U(e) { var t = this._longDateFormat[e], n = this._longDateFormat[e.toUpperCase()]; return t || !n ? t : (this._longDateFormat[e] = n.match(V).map((function (e) { return "MMMM" === e || "MM" === e || "DD" === e || "dddd" === e ? e.slice(1) : e })).join(""), this._longDateFormat[e]) } var K = "Invalid date"; function G() { return this._invalidDate } var X = "%d", J = /\d{1,2}/; function Q(e) { return this._ordinal.replace("%d", e) } var Z = { future: "in %s", past: "%s ago", s: "a few seconds", ss: "%d seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", w: "a week", ww: "%d weeks", M: "a month", MM: "%d months", y: "a year", yy: "%d years" }; function ee(e, t, n, r) { var i = this._relativeTime[n]; return L(i) ? i(e, t, n, r) : i.replace(/%d/i, e) } function te(e, t) { var n = this._relativeTime[e > 0 ? "future" : "past"]; return L(n) ? n(t) : n.replace(/%s/i, t) } var ne = {}; function re(e, t) { var n = e.toLowerCase(); ne[n] = ne[n + "s"] = ne[t] = e } function ie(e) { return "string" === typeof e ? ne[e] || ne[e.toLowerCase()] : void 0 } function oe(e) { var t, n, r = {}; for (n in e) c(e, n) && (t = ie(n), t && (r[t] = e[n])); return r } var ae = {}; function se(e, t) { ae[e] = t } function ce(e) { var t, n = []; for (t in e) c(e, t) && n.push({ unit: t, priority: ae[t] }); return n.sort((function (e, t) { return e.priority - t.priority })), n } function le(e) { return e % 4 === 0 && e % 100 !== 0 || e % 400 === 0 } function ue(e) { return e < 0 ? Math.ceil(e) || 0 : Math.floor(e) } function he(e) { var t = +e, n = 0; return 0 !== t && isFinite(t) && (n = ue(t)), n } function fe(e, t) { return function (n) { return null != n ? (pe(this, e, n), i.updateOffset(this, t), this) : de(this, e) } } function de(e, t) { return e.isValid() ? e._d["get" + (e._isUTC ? "UTC" : "") + t]() : NaN } function pe(e, t, n) { e.isValid() && !isNaN(n) && ("FullYear" === t && le(e.year()) && 1 === e.month() && 29 === e.date() ? (n = he(n), e._d["set" + (e._isUTC ? "UTC" : "") + t](n, e.month(), et(n, e.month()))) : e._d["set" + (e._isUTC ? "UTC" : "") + t](n)) } function ve(e) { return e = ie(e), L(this[e]) ? this[e]() : this } function me(e, t) { if ("object" === typeof e) { e = oe(e); var n, r = ce(e); for (n = 0; n < r.length; n++)this[r[n].unit](e[r[n].unit]) } else if (e = ie(e), L(this[e])) return this[e](t); return this } var ge, ye = /\d/, be = /\d\d/, xe = /\d{3}/, we = /\d{4}/, _e = /[+-]?\d{6}/, Ce = /\d\d?/, Me = /\d\d\d\d?/, Oe = /\d\d\d\d\d\d?/, ke = /\d{1,3}/, Se = /\d{1,4}/, Te = /[+-]?\d{1,6}/, Ae = /\d+/, Le = /[+-]?\d+/, je = /Z|[+-]\d\d:?\d\d/gi, ze = /Z|[+-]\d\d(?::?\d\d)?/gi, Ee = /[+-]?\d+(\.\d{1,3})?/, Pe = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i; function De(e, t, n) { ge[e] = L(t) ? t : function (e, r) { return e && n ? n : t } } function He(e, t) { return c(ge, e) ? ge[e](t._strict, t._locale) : new RegExp(Ve(e)) } function Ve(e) { return Ie(e.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, (function (e, t, n, r, i) { return t || n || r || i }))) } function Ie(e) { return e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") } ge = {}; var Ne = {}; function Re(e, t) { var n, r = t; for ("string" === typeof e && (e = [e]), h(t) && (r = function (e, n) { n[t] = he(e) }), n = 0; n < e.length; n++)Ne[e[n]] = r } function Fe(e, t) { Re(e, (function (e, n, r, i) { r._w = r._w || {}, t(e, r._w, r, i) })) } function Ye(e, t, n) { null != t && c(Ne, e) && Ne[e](t, n._a, n, e) } var $e, Be = 0, We = 1, qe = 2, Ue = 3, Ke = 4, Ge = 5, Xe = 6, Je = 7, Qe = 8; function Ze(e, t) { return (e % t + t) % t } function et(e, t) { if (isNaN(e) || isNaN(t)) return NaN; var n = Ze(t, 12); return e += (t - n) / 12, 1 === n ? le(e) ? 29 : 28 : 31 - n % 7 % 2 } $e = Array.prototype.indexOf ? Array.prototype.indexOf : function (e) { var t; for (t = 0; t < this.length; ++t)if (this[t] === e) return t; return -1 }, F("M", ["MM", 2], "Mo", (function () { return this.month() + 1 })), F("MMM", 0, 0, (function (e) { return this.localeData().monthsShort(this, e) })), F("MMMM", 0, 0, (function (e) { return this.localeData().months(this, e) })), re("month", "M"), se("month", 8), De("M", Ce), De("MM", Ce, be), De("MMM", (function (e, t) { return t.monthsShortRegex(e) })), De("MMMM", (function (e, t) { return t.monthsRegex(e) })), Re(["M", "MM"], (function (e, t) { t[We] = he(e) - 1 })), Re(["MMM", "MMMM"], (function (e, t, n, r) { var i = n._locale.monthsParse(e, r, n._strict); null != i ? t[We] = i : g(n).invalidMonth = e })); var tt = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), nt = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), rt = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, it = Pe, ot = Pe; function at(e, t) { return e ? a(this._months) ? this._months[e.month()] : this._months[(this._months.isFormat || rt).test(t) ? "format" : "standalone"][e.month()] : a(this._months) ? this._months : this._months["standalone"] } function st(e, t) { return e ? a(this._monthsShort) ? this._monthsShort[e.month()] : this._monthsShort[rt.test(t) ? "format" : "standalone"][e.month()] : a(this._monthsShort) ? this._monthsShort : this._monthsShort["standalone"] } function ct(e, t, n) { var r, i, o, a = e.toLocaleLowerCase(); if (!this._monthsParse) for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], r = 0; r < 12; ++r)o = v([2e3, r]), this._shortMonthsParse[r] = this.monthsShort(o, "").toLocaleLowerCase(), this._longMonthsParse[r] = this.months(o, "").toLocaleLowerCase(); return n ? "MMM" === t ? (i = $e.call(this._shortMonthsParse, a), -1 !== i ? i : null) : (i = $e.call(this._longMonthsParse, a), -1 !== i ? i : null) : "MMM" === t ? (i = $e.call(this._shortMonthsParse, a), -1 !== i ? i : (i = $e.call(this._longMonthsParse, a), -1 !== i ? i : null)) : (i = $e.call(this._longMonthsParse, a), -1 !== i ? i : (i = $e.call(this._shortMonthsParse, a), -1 !== i ? i : null)) } function lt(e, t, n) { var r, i, o; if (this._monthsParseExact) return ct.call(this, e, t, n); for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), r = 0; r < 12; r++) { if (i = v([2e3, r]), n && !this._longMonthsParse[r] && (this._longMonthsParse[r] = new RegExp("^" + this.months(i, "").replace(".", "") + "$", "i"), this._shortMonthsParse[r] = new RegExp("^" + this.monthsShort(i, "").replace(".", "") + "$", "i")), n || this._monthsParse[r] || (o = "^" + this.months(i, "") + "|^" + this.monthsShort(i, ""), this._monthsParse[r] = new RegExp(o.replace(".", ""), "i")), n && "MMMM" === t && this._longMonthsParse[r].test(e)) return r; if (n && "MMM" === t && this._shortMonthsParse[r].test(e)) return r; if (!n && this._monthsParse[r].test(e)) return r } } function ut(e, t) { var n; if (!e.isValid()) return e; if ("string" === typeof t) if (/^\d+$/.test(t)) t = he(t); else if (t = e.localeData().monthsParse(t), !h(t)) return e; return n = Math.min(e.date(), et(e.year(), t)), e._d["set" + (e._isUTC ? "UTC" : "") + "Month"](t, n), e } function ht(e) { return null != e ? (ut(this, e), i.updateOffset(this, !0), this) : de(this, "Month") } function ft() { return et(this.year(), this.month()) } function dt(e) { return this._monthsParseExact ? (c(this, "_monthsRegex") || vt.call(this), e ? this._monthsShortStrictRegex : this._monthsShortRegex) : (c(this, "_monthsShortRegex") || (this._monthsShortRegex = it), this._monthsShortStrictRegex && e ? this._monthsShortStrictRegex : this._monthsShortRegex) } function pt(e) { return this._monthsParseExact ? (c(this, "_monthsRegex") || vt.call(this), e ? this._monthsStrictRegex : this._monthsRegex) : (c(this, "_monthsRegex") || (this._monthsRegex = ot), this._monthsStrictRegex && e ? this._monthsStrictRegex : this._monthsRegex) } function vt() { function e(e, t) { return t.length - e.length } var t, n, r = [], i = [], o = []; for (t = 0; t < 12; t++)n = v([2e3, t]), r.push(this.monthsShort(n, "")), i.push(this.months(n, "")), o.push(this.months(n, "")), o.push(this.monthsShort(n, "")); for (r.sort(e), i.sort(e), o.sort(e), t = 0; t < 12; t++)r[t] = Ie(r[t]), i[t] = Ie(i[t]); for (t = 0; t < 24; t++)o[t] = Ie(o[t]); this._monthsRegex = new RegExp("^(" + o.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp("^(" + i.join("|") + ")", "i"), this._monthsShortStrictRegex = new RegExp("^(" + r.join("|") + ")", "i") } function mt(e) { return le(e) ? 366 : 365 } F("Y", 0, 0, (function () { var e = this.year(); return e <= 9999 ? H(e, 4) : "+" + e })), F(0, ["YY", 2], 0, (function () { return this.year() % 100 })), F(0, ["YYYY", 4], 0, "year"), F(0, ["YYYYY", 5], 0, "year"), F(0, ["YYYYYY", 6, !0], 0, "year"), re("year", "y"), se("year", 1), De("Y", Le), De("YY", Ce, be), De("YYYY", Se, we), De("YYYYY", Te, _e), De("YYYYYY", Te, _e), Re(["YYYYY", "YYYYYY"], Be), Re("YYYY", (function (e, t) { t[Be] = 2 === e.length ? i.parseTwoDigitYear(e) : he(e) })), Re("YY", (function (e, t) { t[Be] = i.parseTwoDigitYear(e) })), Re("Y", (function (e, t) { t[Be] = parseInt(e, 10) })), i.parseTwoDigitYear = function (e) { return he(e) + (he(e) > 68 ? 1900 : 2e3) }; var gt = fe("FullYear", !0); function yt() { return le(this.year()) } function bt(e, t, n, r, i, o, a) { var s; return e < 100 && e >= 0 ? (s = new Date(e + 400, t, n, r, i, o, a), isFinite(s.getFullYear()) && s.setFullYear(e)) : s = new Date(e, t, n, r, i, o, a), s } function xt(e) { var t, n; return e < 100 && e >= 0 ? (n = Array.prototype.slice.call(arguments), n[0] = e + 400, t = new Date(Date.UTC.apply(null, n)), isFinite(t.getUTCFullYear()) && t.setUTCFullYear(e)) : t = new Date(Date.UTC.apply(null, arguments)), t } function wt(e, t, n) { var r = 7 + t - n, i = (7 + xt(e, 0, r).getUTCDay() - t) % 7; return -i + r - 1 } function _t(e, t, n, r, i) { var o, a, s = (7 + n - r) % 7, c = wt(e, r, i), l = 1 + 7 * (t - 1) + s + c; return l <= 0 ? (o = e - 1, a = mt(o) + l) : l > mt(e) ? (o = e + 1, a = l - mt(e)) : (o = e, a = l), { year: o, dayOfYear: a } } function Ct(e, t, n) { var r, i, o = wt(e.year(), t, n), a = Math.floor((e.dayOfYear() - o - 1) / 7) + 1; return a < 1 ? (i = e.year() - 1, r = a + Mt(i, t, n)) : a > Mt(e.year(), t, n) ? (r = a - Mt(e.year(), t, n), i = e.year() + 1) : (i = e.year(), r = a), { week: r, year: i } } function Mt(e, t, n) { var r = wt(e, t, n), i = wt(e + 1, t, n); return (mt(e) - r + i) / 7 } function Ot(e) { return Ct(e, this._week.dow, this._week.doy).week } F("w", ["ww", 2], "wo", "week"), F("W", ["WW", 2], "Wo", "isoWeek"), re("week", "w"), re("isoWeek", "W"), se("week", 5), se("isoWeek", 5), De("w", Ce), De("ww", Ce, be), De("W", Ce), De("WW", Ce, be), Fe(["w", "ww", "W", "WW"], (function (e, t, n, r) { t[r.substr(0, 1)] = he(e) })); var kt = { dow: 0, doy: 6 }; function St() { return this._week.dow } function Tt() { return this._week.doy } function At(e) { var t = this.localeData().week(this); return null == e ? t : this.add(7 * (e - t), "d") } function Lt(e) { var t = Ct(this, 1, 4).week; return null == e ? t : this.add(7 * (e - t), "d") } function jt(e, t) { return "string" !== typeof e ? e : isNaN(e) ? (e = t.weekdaysParse(e), "number" === typeof e ? e : null) : parseInt(e, 10) } function zt(e, t) { return "string" === typeof e ? t.weekdaysParse(e) % 7 || 7 : isNaN(e) ? null : e } function Et(e, t) { return e.slice(t, 7).concat(e.slice(0, t)) } F("d", 0, "do", "day"), F("dd", 0, 0, (function (e) { return this.localeData().weekdaysMin(this, e) })), F("ddd", 0, 0, (function (e) { return this.localeData().weekdaysShort(this, e) })), F("dddd", 0, 0, (function (e) { return this.localeData().weekdays(this, e) })), F("e", 0, 0, "weekday"), F("E", 0, 0, "isoWeekday"), re("day", "d"), re("weekday", "e"), re("isoWeekday", "E"), se("day", 11), se("weekday", 11), se("isoWeekday", 11), De("d", Ce), De("e", Ce), De("E", Ce), De("dd", (function (e, t) { return t.weekdaysMinRegex(e) })), De("ddd", (function (e, t) { return t.weekdaysShortRegex(e) })), De("dddd", (function (e, t) { return t.weekdaysRegex(e) })), Fe(["dd", "ddd", "dddd"], (function (e, t, n, r) { var i = n._locale.weekdaysParse(e, r, n._strict); null != i ? t.d = i : g(n).invalidWeekday = e })), Fe(["d", "e", "E"], (function (e, t, n, r) { t[r] = he(e) })); var Pt = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), Dt = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), Ht = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), Vt = Pe, It = Pe, Nt = Pe; function Rt(e, t) { var n = a(this._weekdays) ? this._weekdays : this._weekdays[e && !0 !== e && this._weekdays.isFormat.test(t) ? "format" : "standalone"]; return !0 === e ? Et(n, this._week.dow) : e ? n[e.day()] : n } function Ft(e) { return !0 === e ? Et(this._weekdaysShort, this._week.dow) : e ? this._weekdaysShort[e.day()] : this._weekdaysShort } function Yt(e) { return !0 === e ? Et(this._weekdaysMin, this._week.dow) : e ? this._weekdaysMin[e.day()] : this._weekdaysMin } function $t(e, t, n) { var r, i, o, a = e.toLocaleLowerCase(); if (!this._weekdaysParse) for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], r = 0; r < 7; ++r)o = v([2e3, 1]).day(r), this._minWeekdaysParse[r] = this.weekdaysMin(o, "").toLocaleLowerCase(), this._shortWeekdaysParse[r] = this.weekdaysShort(o, "").toLocaleLowerCase(), this._weekdaysParse[r] = this.weekdays(o, "").toLocaleLowerCase(); return n ? "dddd" === t ? (i = $e.call(this._weekdaysParse, a), -1 !== i ? i : null) : "ddd" === t ? (i = $e.call(this._shortWeekdaysParse, a), -1 !== i ? i : null) : (i = $e.call(this._minWeekdaysParse, a), -1 !== i ? i : null) : "dddd" === t ? (i = $e.call(this._weekdaysParse, a), -1 !== i ? i : (i = $e.call(this._shortWeekdaysParse, a), -1 !== i ? i : (i = $e.call(this._minWeekdaysParse, a), -1 !== i ? i : null))) : "ddd" === t ? (i = $e.call(this._shortWeekdaysParse, a), -1 !== i ? i : (i = $e.call(this._weekdaysParse, a), -1 !== i ? i : (i = $e.call(this._minWeekdaysParse, a), -1 !== i ? i : null))) : (i = $e.call(this._minWeekdaysParse, a), -1 !== i ? i : (i = $e.call(this._weekdaysParse, a), -1 !== i ? i : (i = $e.call(this._shortWeekdaysParse, a), -1 !== i ? i : null))) } function Bt(e, t, n) { var r, i, o; if (this._weekdaysParseExact) return $t.call(this, e, t, n); for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), r = 0; r < 7; r++) { if (i = v([2e3, 1]).day(r), n && !this._fullWeekdaysParse[r] && (this._fullWeekdaysParse[r] = new RegExp("^" + this.weekdays(i, "").replace(".", "\\.?") + "$", "i"), this._shortWeekdaysParse[r] = new RegExp("^" + this.weekdaysShort(i, "").replace(".", "\\.?") + "$", "i"), this._minWeekdaysParse[r] = new RegExp("^" + this.weekdaysMin(i, "").replace(".", "\\.?") + "$", "i")), this._weekdaysParse[r] || (o = "^" + this.weekdays(i, "") + "|^" + this.weekdaysShort(i, "") + "|^" + this.weekdaysMin(i, ""), this._weekdaysParse[r] = new RegExp(o.replace(".", ""), "i")), n && "dddd" === t && this._fullWeekdaysParse[r].test(e)) return r; if (n && "ddd" === t && this._shortWeekdaysParse[r].test(e)) return r; if (n && "dd" === t && this._minWeekdaysParse[r].test(e)) return r; if (!n && this._weekdaysParse[r].test(e)) return r } } function Wt(e) { if (!this.isValid()) return null != e ? this : NaN; var t = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); return null != e ? (e = jt(e, this.localeData()), this.add(e - t, "d")) : t } function qt(e) { if (!this.isValid()) return null != e ? this : NaN; var t = (this.day() + 7 - this.localeData()._week.dow) % 7; return null == e ? t : this.add(e - t, "d") } function Ut(e) { if (!this.isValid()) return null != e ? this : NaN; if (null != e) { var t = zt(e, this.localeData()); return this.day(this.day() % 7 ? t : t - 7) } return this.day() || 7 } function Kt(e) { return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || Jt.call(this), e ? this._weekdaysStrictRegex : this._weekdaysRegex) : (c(this, "_weekdaysRegex") || (this._weekdaysRegex = Vt), this._weekdaysStrictRegex && e ? this._weekdaysStrictRegex : this._weekdaysRegex) } function Gt(e) { return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || Jt.call(this), e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (c(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = It), this._weekdaysShortStrictRegex && e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) } function Xt(e) { return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || Jt.call(this), e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (c(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = Nt), this._weekdaysMinStrictRegex && e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) } function Jt() { function e(e, t) { return t.length - e.length } var t, n, r, i, o, a = [], s = [], c = [], l = []; for (t = 0; t < 7; t++)n = v([2e3, 1]).day(t), r = Ie(this.weekdaysMin(n, "")), i = Ie(this.weekdaysShort(n, "")), o = Ie(this.weekdays(n, "")), a.push(r), s.push(i), c.push(o), l.push(r), l.push(i), l.push(o); a.sort(e), s.sort(e), c.sort(e), l.sort(e), this._weekdaysRegex = new RegExp("^(" + l.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + c.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + s.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + a.join("|") + ")", "i") } function Qt() { return this.hours() % 12 || 12 } function Zt() { return this.hours() || 24 } function en(e, t) { F(e, 0, 0, (function () { return this.localeData().meridiem(this.hours(), this.minutes(), t) })) } function tn(e, t) { return t._meridiemParse } function nn(e) { return "p" === (e + "").toLowerCase().charAt(0) } F("H", ["HH", 2], 0, "hour"), F("h", ["hh", 2], 0, Qt), F("k", ["kk", 2], 0, Zt), F("hmm", 0, 0, (function () { return "" + Qt.apply(this) + H(this.minutes(), 2) })), F("hmmss", 0, 0, (function () { return "" + Qt.apply(this) + H(this.minutes(), 2) + H(this.seconds(), 2) })), F("Hmm", 0, 0, (function () { return "" + this.hours() + H(this.minutes(), 2) })), F("Hmmss", 0, 0, (function () { return "" + this.hours() + H(this.minutes(), 2) + H(this.seconds(), 2) })), en("a", !0), en("A", !1), re("hour", "h"), se("hour", 13), De("a", tn), De("A", tn), De("H", Ce), De("h", Ce), De("k", Ce), De("HH", Ce, be), De("hh", Ce, be), De("kk", Ce, be), De("hmm", Me), De("hmmss", Oe), De("Hmm", Me), De("Hmmss", Oe), Re(["H", "HH"], Ue), Re(["k", "kk"], (function (e, t, n) { var r = he(e); t[Ue] = 24 === r ? 0 : r })), Re(["a", "A"], (function (e, t, n) { n._isPm = n._locale.isPM(e), n._meridiem = e })), Re(["h", "hh"], (function (e, t, n) { t[Ue] = he(e), g(n).bigHour = !0 })), Re("hmm", (function (e, t, n) { var r = e.length - 2; t[Ue] = he(e.substr(0, r)), t[Ke] = he(e.substr(r)), g(n).bigHour = !0 })), Re("hmmss", (function (e, t, n) { var r = e.length - 4, i = e.length - 2; t[Ue] = he(e.substr(0, r)), t[Ke] = he(e.substr(r, 2)), t[Ge] = he(e.substr(i)), g(n).bigHour = !0 })), Re("Hmm", (function (e, t, n) { var r = e.length - 2; t[Ue] = he(e.substr(0, r)), t[Ke] = he(e.substr(r)) })), Re("Hmmss", (function (e, t, n) { var r = e.length - 4, i = e.length - 2; t[Ue] = he(e.substr(0, r)), t[Ke] = he(e.substr(r, 2)), t[Ge] = he(e.substr(i)) })); var rn = /[ap]\.?m?\.?/i, on = fe("Hours", !0); function an(e, t, n) { return e > 11 ? n ? "pm" : "PM" : n ? "am" : "AM" } var sn, cn = { calendar: P, longDateFormat: q, invalidDate: K, ordinal: X, dayOfMonthOrdinalParse: J, relativeTime: Z, months: tt, monthsShort: nt, week: kt, weekdays: Pt, weekdaysMin: Ht, weekdaysShort: Dt, meridiemParse: rn }, ln = {}, un = {}; function hn(e, t) { var n, r = Math.min(e.length, t.length); for (n = 0; n < r; n += 1)if (e[n] !== t[n]) return n; return r } function fn(e) { return e ? e.toLowerCase().replace("_", "-") : e } function dn(e) { var t, n, r, i, o = 0; while (o < e.length) { i = fn(e[o]).split("-"), t = i.length, n = fn(e[o + 1]), n = n ? n.split("-") : null; while (t > 0) { if (r = pn(i.slice(0, t).join("-")), r) return r; if (n && n.length >= t && hn(i, n) >= t - 1) break; t-- } o++ } return sn } function pn(t) { var r = null; if (void 0 === ln[t] && "undefined" !== typeof e && e && e.exports) try { r = sn._abbr, n("4678")("./" + t), vn(r) } catch (i) { ln[t] = null } return ln[t] } function vn(e, t) { var n; return e && (n = u(t) ? yn(e) : mn(e, t), n ? sn = n : "undefined" !== typeof console && console.warn && console.warn("Locale " + e + " not found. Did you forget to load it?")), sn._abbr } function mn(e, t) { if (null !== t) { var n, r = cn; if (t.abbr = e, null != ln[e]) A("defineLocaleOverride", "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."), r = ln[e]._config; else if (null != t.parentLocale) if (null != ln[t.parentLocale]) r = ln[t.parentLocale]._config; else { if (n = pn(t.parentLocale), null == n) return un[t.parentLocale] || (un[t.parentLocale] = []), un[t.parentLocale].push({ name: e, config: t }), null; r = n._config } return ln[e] = new E(z(r, t)), un[e] && un[e].forEach((function (e) { mn(e.name, e.config) })), vn(e), ln[e] } return delete ln[e], null } function gn(e, t) { if (null != t) { var n, r, i = cn; null != ln[e] && null != ln[e].parentLocale ? ln[e].set(z(ln[e]._config, t)) : (r = pn(e), null != r && (i = r._config), t = z(i, t), null == r && (t.abbr = e), n = new E(t), n.parentLocale = ln[e], ln[e] = n), vn(e) } else null != ln[e] && (null != ln[e].parentLocale ? (ln[e] = ln[e].parentLocale, e === vn() && vn(e)) : null != ln[e] && delete ln[e]); return ln[e] } function yn(e) { var t; if (e && e._locale && e._locale._abbr && (e = e._locale._abbr), !e) return sn; if (!a(e)) { if (t = pn(e), t) return t; e = [e] } return dn(e) } function bn() { return S(ln) } function xn(e) { var t, n = e._a; return n && -2 === g(e).overflow && (t = n[We] < 0 || n[We] > 11 ? We : n[qe] < 1 || n[qe] > et(n[Be], n[We]) ? qe : n[Ue] < 0 || n[Ue] > 24 || 24 === n[Ue] && (0 !== n[Ke] || 0 !== n[Ge] || 0 !== n[Xe]) ? Ue : n[Ke] < 0 || n[Ke] > 59 ? Ke : n[Ge] < 0 || n[Ge] > 59 ? Ge : n[Xe] < 0 || n[Xe] > 999 ? Xe : -1, g(e)._overflowDayOfYear && (t < Be || t > qe) && (t = qe), g(e)._overflowWeeks && -1 === t && (t = Je), g(e)._overflowWeekday && -1 === t && (t = Qe), g(e).overflow = t), e } var wn = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, _n = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, Cn = /Z|[+-]\d\d(?::?\d\d)?/, Mn = [["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/], ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/], ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/], ["GGGG-[W]WW", /\d{4}-W\d\d/, !1], ["YYYY-DDD", /\d{4}-\d{3}/], ["YYYY-MM", /\d{4}-\d\d/, !1], ["YYYYYYMMDD", /[+-]\d{10}/], ["YYYYMMDD", /\d{8}/], ["GGGG[W]WWE", /\d{4}W\d{3}/], ["GGGG[W]WW", /\d{4}W\d{2}/, !1], ["YYYYDDD", /\d{7}/], ["YYYYMM", /\d{6}/, !1], ["YYYY", /\d{4}/, !1]], On = [["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/], ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/], ["HH:mm:ss", /\d\d:\d\d:\d\d/], ["HH:mm", /\d\d:\d\d/], ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/], ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/], ["HHmmss", /\d\d\d\d\d\d/], ["HHmm", /\d\d\d\d/], ["HH", /\d\d/]], kn = /^\/?Date\((-?\d+)/i, Sn = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, Tn = { UT: 0, GMT: 0, EDT: -240, EST: -300, CDT: -300, CST: -360, MDT: -360, MST: -420, PDT: -420, PST: -480 }; function An(e) { var t, n, r, i, o, a, s = e._i, c = wn.exec(s) || _n.exec(s); if (c) { for (g(e).iso = !0, t = 0, n = Mn.length; t < n; t++)if (Mn[t][1].exec(c[1])) { i = Mn[t][0], r = !1 !== Mn[t][2]; break } if (null == i) return void (e._isValid = !1); if (c[3]) { for (t = 0, n = On.length; t < n; t++)if (On[t][1].exec(c[3])) { o = (c[2] || " ") + On[t][0]; break } if (null == o) return void (e._isValid = !1) } if (!r && null != o) return void (e._isValid = !1); if (c[4]) { if (!Cn.exec(c[4])) return void (e._isValid = !1); a = "Z" } e._f = i + (o || "") + (a || ""), Fn(e) } else e._isValid = !1 } function Ln(e, t, n, r, i, o) { var a = [jn(e), nt.indexOf(t), parseInt(n, 10), parseInt(r, 10), parseInt(i, 10)]; return o && a.push(parseInt(o, 10)), a } function jn(e) { var t = parseInt(e, 10); return t <= 49 ? 2e3 + t : t <= 999 ? 1900 + t : t } function zn(e) { return e.replace(/\([^)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, "") } function En(e, t, n) { if (e) { var r = Dt.indexOf(e), i = new Date(t[0], t[1], t[2]).getDay(); if (r !== i) return g(n).weekdayMismatch = !0, n._isValid = !1, !1 } return !0 } function Pn(e, t, n) { if (e) return Tn[e]; if (t) return 0; var r = parseInt(n, 10), i = r % 100, o = (r - i) / 100; return 60 * o + i } function Dn(e) { var t, n = Sn.exec(zn(e._i)); if (n) { if (t = Ln(n[4], n[3], n[2], n[5], n[6], n[7]), !En(n[1], t, e)) return; e._a = t, e._tzm = Pn(n[8], n[9], n[10]), e._d = xt.apply(null, e._a), e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), g(e).rfc2822 = !0 } else e._isValid = !1 } function Hn(e) { var t = kn.exec(e._i); null === t ? (An(e), !1 === e._isValid && (delete e._isValid, Dn(e), !1 === e._isValid && (delete e._isValid, e._strict ? e._isValid = !1 : i.createFromInputFallback(e)))) : e._d = new Date(+t[1]) } function Vn(e, t, n) { return null != e ? e : null != t ? t : n } function In(e) { var t = new Date(i.now()); return e._useUTC ? [t.getUTCFullYear(), t.getUTCMonth(), t.getUTCDate()] : [t.getFullYear(), t.getMonth(), t.getDate()] } function Nn(e) { var t, n, r, i, o, a = []; if (!e._d) { for (r = In(e), e._w && null == e._a[qe] && null == e._a[We] && Rn(e), null != e._dayOfYear && (o = Vn(e._a[Be], r[Be]), (e._dayOfYear > mt(o) || 0 === e._dayOfYear) && (g(e)._overflowDayOfYear = !0), n = xt(o, 0, e._dayOfYear), e._a[We] = n.getUTCMonth(), e._a[qe] = n.getUTCDate()), t = 0; t < 3 && null == e._a[t]; ++t)e._a[t] = a[t] = r[t]; for (; t < 7; t++)e._a[t] = a[t] = null == e._a[t] ? 2 === t ? 1 : 0 : e._a[t]; 24 === e._a[Ue] && 0 === e._a[Ke] && 0 === e._a[Ge] && 0 === e._a[Xe] && (e._nextDay = !0, e._a[Ue] = 0), e._d = (e._useUTC ? xt : bt).apply(null, a), i = e._useUTC ? e._d.getUTCDay() : e._d.getDay(), null != e._tzm && e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), e._nextDay && (e._a[Ue] = 24), e._w && "undefined" !== typeof e._w.d && e._w.d !== i && (g(e).weekdayMismatch = !0) } } function Rn(e) { var t, n, r, i, o, a, s, c, l; t = e._w, null != t.GG || null != t.W || null != t.E ? (o = 1, a = 4, n = Vn(t.GG, e._a[Be], Ct(Gn(), 1, 4).year), r = Vn(t.W, 1), i = Vn(t.E, 1), (i < 1 || i > 7) && (c = !0)) : (o = e._locale._week.dow, a = e._locale._week.doy, l = Ct(Gn(), o, a), n = Vn(t.gg, e._a[Be], l.year), r = Vn(t.w, l.week), null != t.d ? (i = t.d, (i < 0 || i > 6) && (c = !0)) : null != t.e ? (i = t.e + o, (t.e < 0 || t.e > 6) && (c = !0)) : i = o), r < 1 || r > Mt(n, o, a) ? g(e)._overflowWeeks = !0 : null != c ? g(e)._overflowWeekday = !0 : (s = _t(n, r, i, o, a), e._a[Be] = s.year, e._dayOfYear = s.dayOfYear) } function Fn(e) { if (e._f !== i.ISO_8601) if (e._f !== i.RFC_2822) { e._a = [], g(e).empty = !0; var t, n, r, o, a, s, c = "" + e._i, l = c.length, u = 0; for (r = W(e._f, e._locale).match(V) || [], t = 0; t < r.length; t++)o = r[t], n = (c.match(He(o, e)) || [])[0], n && (a = c.substr(0, c.indexOf(n)), a.length > 0 && g(e).unusedInput.push(a), c = c.slice(c.indexOf(n) + n.length), u += n.length), R[o] ? (n ? g(e).empty = !1 : g(e).unusedTokens.push(o), Ye(o, n, e)) : e._strict && !n && g(e).unusedTokens.push(o); g(e).charsLeftOver = l - u, c.length > 0 && g(e).unusedInput.push(c), e._a[Ue] <= 12 && !0 === g(e).bigHour && e._a[Ue] > 0 && (g(e).bigHour = void 0), g(e).parsedDateParts = e._a.slice(0), g(e).meridiem = e._meridiem, e._a[Ue] = Yn(e._locale, e._a[Ue], e._meridiem), s = g(e).era, null !== s && (e._a[Be] = e._locale.erasConvertYear(s, e._a[Be])), Nn(e), xn(e) } else Dn(e); else An(e) } function Yn(e, t, n) { var r; return null == n ? t : null != e.meridiemHour ? e.meridiemHour(t, n) : null != e.isPM ? (r = e.isPM(n), r && t < 12 && (t += 12), r || 12 !== t || (t = 0), t) : t } function $n(e) { var t, n, r, i, o, a, s = !1; if (0 === e._f.length) return g(e).invalidFormat = !0, void (e._d = new Date(NaN)); for (i = 0; i < e._f.length; i++)o = 0, a = !1, t = _({}, e), null != e._useUTC && (t._useUTC = e._useUTC), t._f = e._f[i], Fn(t), y(t) && (a = !0), o += g(t).charsLeftOver, o += 10 * g(t).unusedTokens.length, g(t).score = o, s ? o < r && (r = o, n = t) : (null == r || o < r || a) && (r = o, n = t, a && (s = !0)); p(e, n || t) } function Bn(e) { if (!e._d) { var t = oe(e._i), n = void 0 === t.day ? t.date : t.day; e._a = d([t.year, t.month, n, t.hour, t.minute, t.second, t.millisecond], (function (e) { return e && parseInt(e, 10) })), Nn(e) } } function Wn(e) { var t = new C(xn(qn(e))); return t._nextDay && (t.add(1, "d"), t._nextDay = void 0), t } function qn(e) { var t = e._i, n = e._f; return e._locale = e._locale || yn(e._l), null === t || void 0 === n && "" === t ? b({ nullInput: !0 }) : ("string" === typeof t && (e._i = t = e._locale.preparse(t)), M(t) ? new C(xn(t)) : (f(t) ? e._d = t : a(n) ? $n(e) : n ? Fn(e) : Un(e), y(e) || (e._d = null), e)) } function Un(e) { var t = e._i; u(t) ? e._d = new Date(i.now()) : f(t) ? e._d = new Date(t.valueOf()) : "string" === typeof t ? Hn(e) : a(t) ? (e._a = d(t.slice(0), (function (e) { return parseInt(e, 10) })), Nn(e)) : s(t) ? Bn(e) : h(t) ? e._d = new Date(t) : i.createFromInputFallback(e) } function Kn(e, t, n, r, i) { var o = {}; return !0 !== t && !1 !== t || (r = t, t = void 0), !0 !== n && !1 !== n || (r = n, n = void 0), (s(e) && l(e) || a(e) && 0 === e.length) && (e = void 0), o._isAMomentObject = !0, o._useUTC = o._isUTC = i, o._l = n, o._i = e, o._f = t, o._strict = r, Wn(o) } function Gn(e, t, n, r) { return Kn(e, t, n, r, !1) } i.createFromInputFallback = k("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", (function (e) { e._d = new Date(e._i + (e._useUTC ? " UTC" : "")) })), i.ISO_8601 = function () { }, i.RFC_2822 = function () { }; var Xn = k("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", (function () { var e = Gn.apply(null, arguments); return this.isValid() && e.isValid() ? e < this ? this : e : b() })), Jn = k("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", (function () { var e = Gn.apply(null, arguments); return this.isValid() && e.isValid() ? e > this ? this : e : b() })); function Qn(e, t) { var n, r; if (1 === t.length && a(t[0]) && (t = t[0]), !t.length) return Gn(); for (n = t[0], r = 1; r < t.length; ++r)t[r].isValid() && !t[r][e](n) || (n = t[r]); return n } function Zn() { var e = [].slice.call(arguments, 0); return Qn("isBefore", e) } function er() { var e = [].slice.call(arguments, 0); return Qn("isAfter", e) } var tr = function () { return Date.now ? Date.now() : +new Date }, nr = ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"]; function rr(e) { var t, n, r = !1; for (t in e) if (c(e, t) && (-1 === $e.call(nr, t) || null != e[t] && isNaN(e[t]))) return !1; for (n = 0; n < nr.length; ++n)if (e[nr[n]]) { if (r) return !1; parseFloat(e[nr[n]]) !== he(e[nr[n]]) && (r = !0) } return !0 } function ir() { return this._isValid } function or() { return Tr(NaN) } function ar(e) { var t = oe(e), n = t.year || 0, r = t.quarter || 0, i = t.month || 0, o = t.week || t.isoWeek || 0, a = t.day || 0, s = t.hour || 0, c = t.minute || 0, l = t.second || 0, u = t.millisecond || 0; this._isValid = rr(t), this._milliseconds = +u + 1e3 * l + 6e4 * c + 1e3 * s * 60 * 60, this._days = +a + 7 * o, this._months = +i + 3 * r + 12 * n, this._data = {}, this._locale = yn(), this._bubble() } function sr(e) { return e instanceof ar } function cr(e) { return e < 0 ? -1 * Math.round(-1 * e) : Math.round(e) } function lr(e, t, n) { var r, i = Math.min(e.length, t.length), o = Math.abs(e.length - t.length), a = 0; for (r = 0; r < i; r++)(n && e[r] !== t[r] || !n && he(e[r]) !== he(t[r])) && a++; return a + o } function ur(e, t) { F(e, 0, 0, (function () { var e = this.utcOffset(), n = "+"; return e < 0 && (e = -e, n = "-"), n + H(~~(e / 60), 2) + t + H(~~e % 60, 2) })) } ur("Z", ":"), ur("ZZ", ""), De("Z", ze), De("ZZ", ze), Re(["Z", "ZZ"], (function (e, t, n) { n._useUTC = !0, n._tzm = fr(ze, e) })); var hr = /([\+\-]|\d\d)/gi; function fr(e, t) { var n, r, i, o = (t || "").match(e); return null === o ? null : (n = o[o.length - 1] || [], r = (n + "").match(hr) || ["-", 0, 0], i = 60 * r[1] + he(r[2]), 0 === i ? 0 : "+" === r[0] ? i : -i) } function dr(e, t) { var n, r; return t._isUTC ? (n = t.clone(), r = (M(e) || f(e) ? e.valueOf() : Gn(e).valueOf()) - n.valueOf(), n._d.setTime(n._d.valueOf() + r), i.updateOffset(n, !1), n) : Gn(e).local() } function pr(e) { return -Math.round(e._d.getTimezoneOffset()) } function vr(e, t, n) { var r, o = this._offset || 0; if (!this.isValid()) return null != e ? this : NaN; if (null != e) { if ("string" === typeof e) { if (e = fr(ze, e), null === e) return this } else Math.abs(e) < 16 && !n && (e *= 60); return !this._isUTC && t && (r = pr(this)), this._offset = e, this._isUTC = !0, null != r && this.add(r, "m"), o !== e && (!t || this._changeInProgress ? Er(this, Tr(e - o, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, i.updateOffset(this, !0), this._changeInProgress = null)), this } return this._isUTC ? o : pr(this) } function mr(e, t) { return null != e ? ("string" !== typeof e && (e = -e), this.utcOffset(e, t), this) : -this.utcOffset() } function gr(e) { return this.utcOffset(0, e) } function yr(e) { return this._isUTC && (this.utcOffset(0, e), this._isUTC = !1, e && this.subtract(pr(this), "m")), this } function br() { if (null != this._tzm) this.utcOffset(this._tzm, !1, !0); else if ("string" === typeof this._i) { var e = fr(je, this._i); null != e ? this.utcOffset(e) : this.utcOffset(0, !0) } return this } function xr(e) { return !!this.isValid() && (e = e ? Gn(e).utcOffset() : 0, (this.utcOffset() - e) % 60 === 0) } function wr() { return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() } function _r() { if (!u(this._isDSTShifted)) return this._isDSTShifted; var e, t = {}; return _(t, this), t = qn(t), t._a ? (e = t._isUTC ? v(t._a) : Gn(t._a), this._isDSTShifted = this.isValid() && lr(t._a, e.toArray()) > 0) : this._isDSTShifted = !1, this._isDSTShifted } function Cr() { return !!this.isValid() && !this._isUTC } function Mr() { return !!this.isValid() && this._isUTC } function Or() { return !!this.isValid() && this._isUTC && 0 === this._offset } i.updateOffset = function () { }; var kr = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, Sr = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; function Tr(e, t) { var n, r, i, o = e, a = null; return sr(e) ? o = { ms: e._milliseconds, d: e._days, M: e._months } : h(e) || !isNaN(+e) ? (o = {}, t ? o[t] = +e : o.milliseconds = +e) : (a = kr.exec(e)) ? (n = "-" === a[1] ? -1 : 1, o = { y: 0, d: he(a[qe]) * n, h: he(a[Ue]) * n, m: he(a[Ke]) * n, s: he(a[Ge]) * n, ms: he(cr(1e3 * a[Xe])) * n }) : (a = Sr.exec(e)) ? (n = "-" === a[1] ? -1 : 1, o = { y: Ar(a[2], n), M: Ar(a[3], n), w: Ar(a[4], n), d: Ar(a[5], n), h: Ar(a[6], n), m: Ar(a[7], n), s: Ar(a[8], n) }) : null == o ? o = {} : "object" === typeof o && ("from" in o || "to" in o) && (i = jr(Gn(o.from), Gn(o.to)), o = {}, o.ms = i.milliseconds, o.M = i.months), r = new ar(o), sr(e) && c(e, "_locale") && (r._locale = e._locale), sr(e) && c(e, "_isValid") && (r._isValid = e._isValid), r } function Ar(e, t) { var n = e && parseFloat(e.replace(",", ".")); return (isNaN(n) ? 0 : n) * t } function Lr(e, t) { var n = {}; return n.months = t.month() - e.month() + 12 * (t.year() - e.year()), e.clone().add(n.months, "M").isAfter(t) && --n.months, n.milliseconds = +t - +e.clone().add(n.months, "M"), n } function jr(e, t) { var n; return e.isValid() && t.isValid() ? (t = dr(t, e), e.isBefore(t) ? n = Lr(e, t) : (n = Lr(t, e), n.milliseconds = -n.milliseconds, n.months = -n.months), n) : { milliseconds: 0, months: 0 } } function zr(e, t) { return function (n, r) { var i, o; return null === r || isNaN(+r) || (A(t, "moment()." + t + "(period, number) is deprecated. Please use moment()." + t + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), o = n, n = r, r = o), i = Tr(n, r), Er(this, i, e), this } } function Er(e, t, n, r) { var o = t._milliseconds, a = cr(t._days), s = cr(t._months); e.isValid() && (r = null == r || r, s && ut(e, de(e, "Month") + s * n), a && pe(e, "Date", de(e, "Date") + a * n), o && e._d.setTime(e._d.valueOf() + o * n), r && i.updateOffset(e, a || s)) } Tr.fn = ar.prototype, Tr.invalid = or; var Pr = zr(1, "add"), Dr = zr(-1, "subtract"); function Hr(e) { return "string" === typeof e || e instanceof String } function Vr(e) { return M(e) || f(e) || Hr(e) || h(e) || Nr(e) || Ir(e) || null === e || void 0 === e } function Ir(e) { var t, n, r = s(e) && !l(e), i = !1, o = ["years", "year", "y", "months", "month", "M", "days", "day", "d", "dates", "date", "D", "hours", "hour", "h", "minutes", "minute", "m", "seconds", "second", "s", "milliseconds", "millisecond", "ms"]; for (t = 0; t < o.length; t += 1)n = o[t], i = i || c(e, n); return r && i } function Nr(e) { var t = a(e), n = !1; return t && (n = 0 === e.filter((function (t) { return !h(t) && Hr(e) })).length), t && n } function Rr(e) { var t, n, r = s(e) && !l(e), i = !1, o = ["sameDay", "nextDay", "lastDay", "nextWeek", "lastWeek", "sameElse"]; for (t = 0; t < o.length; t += 1)n = o[t], i = i || c(e, n); return r && i } function Fr(e, t) { var n = e.diff(t, "days", !0); return n < -6 ? "sameElse" : n < -1 ? "lastWeek" : n < 0 ? "lastDay" : n < 1 ? "sameDay" : n < 2 ? "nextDay" : n < 7 ? "nextWeek" : "sameElse" } function Yr(e, t) { 1 === arguments.length && (Vr(arguments[0]) ? (e = arguments[0], t = void 0) : Rr(arguments[0]) && (t = arguments[0], e = void 0)); var n = e || Gn(), r = dr(n, this).startOf("day"), o = i.calendarFormat(this, r) || "sameElse", a = t && (L(t[o]) ? t[o].call(this, n) : t[o]); return this.format(a || this.localeData().calendar(o, this, Gn(n))) } function $r() { return new C(this) } function Br(e, t) { var n = M(e) ? e : Gn(e); return !(!this.isValid() || !n.isValid()) && (t = ie(t) || "millisecond", "millisecond" === t ? this.valueOf() > n.valueOf() : n.valueOf() < this.clone().startOf(t).valueOf()) } function Wr(e, t) { var n = M(e) ? e : Gn(e); return !(!this.isValid() || !n.isValid()) && (t = ie(t) || "millisecond", "millisecond" === t ? this.valueOf() < n.valueOf() : this.clone().endOf(t).valueOf() < n.valueOf()) } function qr(e, t, n, r) { var i = M(e) ? e : Gn(e), o = M(t) ? t : Gn(t); return !!(this.isValid() && i.isValid() && o.isValid()) && (r = r || "()", ("(" === r[0] ? this.isAfter(i, n) : !this.isBefore(i, n)) && (")" === r[1] ? this.isBefore(o, n) : !this.isAfter(o, n))) } function Ur(e, t) { var n, r = M(e) ? e : Gn(e); return !(!this.isValid() || !r.isValid()) && (t = ie(t) || "millisecond", "millisecond" === t ? this.valueOf() === r.valueOf() : (n = r.valueOf(), this.clone().startOf(t).valueOf() <= n && n <= this.clone().endOf(t).valueOf())) } function Kr(e, t) { return this.isSame(e, t) || this.isAfter(e, t) } function Gr(e, t) { return this.isSame(e, t) || this.isBefore(e, t) } function Xr(e, t, n) { var r, i, o; if (!this.isValid()) return NaN; if (r = dr(e, this), !r.isValid()) return NaN; switch (i = 6e4 * (r.utcOffset() - this.utcOffset()), t = ie(t), t) { case "year": o = Jr(this, r) / 12; break; case "month": o = Jr(this, r); break; case "quarter": o = Jr(this, r) / 3; break; case "second": o = (this - r) / 1e3; break; case "minute": o = (this - r) / 6e4; break; case "hour": o = (this - r) / 36e5; break; case "day": o = (this - r - i) / 864e5; break; case "week": o = (this - r - i) / 6048e5; break; default: o = this - r }return n ? o : ue(o) } function Jr(e, t) { if (e.date() < t.date()) return -Jr(t, e); var n, r, i = 12 * (t.year() - e.year()) + (t.month() - e.month()), o = e.clone().add(i, "months"); return t - o < 0 ? (n = e.clone().add(i - 1, "months"), r = (t - o) / (o - n)) : (n = e.clone().add(i + 1, "months"), r = (t - o) / (n - o)), -(i + r) || 0 } function Qr() { return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ") } function Zr(e) { if (!this.isValid()) return null; var t = !0 !== e, n = t ? this.clone().utc() : this; return n.year() < 0 || n.year() > 9999 ? B(n, t ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ") : L(Date.prototype.toISOString) ? t ? this.toDate().toISOString() : new Date(this.valueOf() + 60 * this.utcOffset() * 1e3).toISOString().replace("Z", B(n, "Z")) : B(n, t ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ") } function ei() { if (!this.isValid()) return "moment.invalid(/* " + this._i + " */)"; var e, t, n, r, i = "moment", o = ""; return this.isLocal() || (i = 0 === this.utcOffset() ? "moment.utc" : "moment.parseZone", o = "Z"), e = "[" + i + '("]', t = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY", n = "-MM-DD[T]HH:mm:ss.SSS", r = o + '[")]', this.format(e + t + n + r) } function ti(e) { e || (e = this.isUtc() ? i.defaultFormatUtc : i.defaultFormat); var t = B(this, e); return this.localeData().postformat(t) } function ni(e, t) { return this.isValid() && (M(e) && e.isValid() || Gn(e).isValid()) ? Tr({ to: this, from: e }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate() } function ri(e) { return this.from(Gn(), e) } function ii(e, t) { return this.isValid() && (M(e) && e.isValid() || Gn(e).isValid()) ? Tr({ from: this, to: e }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate() } function oi(e) { return this.to(Gn(), e) } function ai(e) { var t; return void 0 === e ? this._locale._abbr : (t = yn(e), null != t && (this._locale = t), this) } i.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", i.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]"; var si = k("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", (function (e) { return void 0 === e ? this.localeData() : this.locale(e) })); function ci() { return this._locale } var li = 1e3, ui = 60 * li, hi = 60 * ui, fi = 3506328 * hi; function di(e, t) { return (e % t + t) % t } function pi(e, t, n) { return e < 100 && e >= 0 ? new Date(e + 400, t, n) - fi : new Date(e, t, n).valueOf() } function vi(e, t, n) { return e < 100 && e >= 0 ? Date.UTC(e + 400, t, n) - fi : Date.UTC(e, t, n) } function mi(e) { var t, n; if (e = ie(e), void 0 === e || "millisecond" === e || !this.isValid()) return this; switch (n = this._isUTC ? vi : pi, e) { case "year": t = n(this.year(), 0, 1); break; case "quarter": t = n(this.year(), this.month() - this.month() % 3, 1); break; case "month": t = n(this.year(), this.month(), 1); break; case "week": t = n(this.year(), this.month(), this.date() - this.weekday()); break; case "isoWeek": t = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1)); break; case "day": case "date": t = n(this.year(), this.month(), this.date()); break; case "hour": t = this._d.valueOf(), t -= di(t + (this._isUTC ? 0 : this.utcOffset() * ui), hi); break; case "minute": t = this._d.valueOf(), t -= di(t, ui); break; case "second": t = this._d.valueOf(), t -= di(t, li); break }return this._d.setTime(t), i.updateOffset(this, !0), this } function gi(e) { var t, n; if (e = ie(e), void 0 === e || "millisecond" === e || !this.isValid()) return this; switch (n = this._isUTC ? vi : pi, e) { case "year": t = n(this.year() + 1, 0, 1) - 1; break; case "quarter": t = n(this.year(), this.month() - this.month() % 3 + 3, 1) - 1; break; case "month": t = n(this.year(), this.month() + 1, 1) - 1; break; case "week": t = n(this.year(), this.month(), this.date() - this.weekday() + 7) - 1; break; case "isoWeek": t = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1; break; case "day": case "date": t = n(this.year(), this.month(), this.date() + 1) - 1; break; case "hour": t = this._d.valueOf(), t += hi - di(t + (this._isUTC ? 0 : this.utcOffset() * ui), hi) - 1; break; case "minute": t = this._d.valueOf(), t += ui - di(t, ui) - 1; break; case "second": t = this._d.valueOf(), t += li - di(t, li) - 1; break }return this._d.setTime(t), i.updateOffset(this, !0), this } function yi() { return this._d.valueOf() - 6e4 * (this._offset || 0) } function bi() { return Math.floor(this.valueOf() / 1e3) } function xi() { return new Date(this.valueOf()) } function wi() { var e = this; return [e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second(), e.millisecond()] } function _i() { var e = this; return { years: e.year(), months: e.month(), date: e.date(), hours: e.hours(), minutes: e.minutes(), seconds: e.seconds(), milliseconds: e.milliseconds() } } function Ci() { return this.isValid() ? this.toISOString() : null } function Mi() { return y(this) } function Oi() { return p({}, g(this)) } function ki() { return g(this).overflow } function Si() { return { input: this._i, format: this._f, locale: this._locale, isUTC: this._isUTC, strict: this._strict } } function Ti(e, t) { var n, r, o, a = this._eras || yn("en")._eras; for (n = 0, r = a.length; n < r; ++n) { switch (typeof a[n].since) { case "string": o = i(a[n].since).startOf("day"), a[n].since = o.valueOf(); break }switch (typeof a[n].until) { case "undefined": a[n].until = 1 / 0; break; case "string": o = i(a[n].until).startOf("day").valueOf(), a[n].until = o.valueOf(); break } } return a } function Ai(e, t, n) { var r, i, o, a, s, c = this.eras(); for (e = e.toUpperCase(), r = 0, i = c.length; r < i; ++r)if (o = c[r].name.toUpperCase(), a = c[r].abbr.toUpperCase(), s = c[r].narrow.toUpperCase(), n) switch (t) { case "N": case "NN": case "NNN": if (a === e) return c[r]; break; case "NNNN": if (o === e) return c[r]; break; case "NNNNN": if (s === e) return c[r]; break } else if ([o, a, s].indexOf(e) >= 0) return c[r] } function Li(e, t) { var n = e.since <= e.until ? 1 : -1; return void 0 === t ? i(e.since).year() : i(e.since).year() + (t - e.offset) * n } function ji() { var e, t, n, r = this.localeData().eras(); for (e = 0, t = r.length; e < t; ++e) { if (n = this.startOf("day").valueOf(), r[e].since <= n && n <= r[e].until) return r[e].name; if (r[e].until <= n && n <= r[e].since) return r[e].name } return "" } function zi() { var e, t, n, r = this.localeData().eras(); for (e = 0, t = r.length; e < t; ++e) { if (n = this.startOf("day").valueOf(), r[e].since <= n && n <= r[e].until) return r[e].narrow; if (r[e].until <= n && n <= r[e].since) return r[e].narrow } return "" } function Ei() { var e, t, n, r = this.localeData().eras(); for (e = 0, t = r.length; e < t; ++e) { if (n = this.startOf("day").valueOf(), r[e].since <= n && n <= r[e].until) return r[e].abbr; if (r[e].until <= n && n <= r[e].since) return r[e].abbr } return "" } function Pi() { var e, t, n, r, o = this.localeData().eras(); for (e = 0, t = o.length; e < t; ++e)if (n = o[e].since <= o[e].until ? 1 : -1, r = this.startOf("day").valueOf(), o[e].since <= r && r <= o[e].until || o[e].until <= r && r <= o[e].since) return (this.year() - i(o[e].since).year()) * n + o[e].offset; return this.year() } function Di(e) { return c(this, "_erasNameRegex") || Yi.call(this), e ? this._erasNameRegex : this._erasRegex } function Hi(e) { return c(this, "_erasAbbrRegex") || Yi.call(this), e ? this._erasAbbrRegex : this._erasRegex } function Vi(e) { return c(this, "_erasNarrowRegex") || Yi.call(this), e ? this._erasNarrowRegex : this._erasRegex } function Ii(e, t) { return t.erasAbbrRegex(e) } function Ni(e, t) { return t.erasNameRegex(e) } function Ri(e, t) { return t.erasNarrowRegex(e) } function Fi(e, t) { return t._eraYearOrdinalRegex || Ae } function Yi() { var e, t, n = [], r = [], i = [], o = [], a = this.eras(); for (e = 0, t = a.length; e < t; ++e)r.push(Ie(a[e].name)), n.push(Ie(a[e].abbr)), i.push(Ie(a[e].narrow)), o.push(Ie(a[e].name)), o.push(Ie(a[e].abbr)), o.push(Ie(a[e].narrow)); this._erasRegex = new RegExp("^(" + o.join("|") + ")", "i"), this._erasNameRegex = new RegExp("^(" + r.join("|") + ")", "i"), this._erasAbbrRegex = new RegExp("^(" + n.join("|") + ")", "i"), this._erasNarrowRegex = new RegExp("^(" + i.join("|") + ")", "i") } function $i(e, t) { F(0, [e, e.length], 0, t) } function Bi(e) { return Xi.call(this, e, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy) } function Wi(e) { return Xi.call(this, e, this.isoWeek(), this.isoWeekday(), 1, 4) } function qi() { return Mt(this.year(), 1, 4) } function Ui() { return Mt(this.isoWeekYear(), 1, 4) } function Ki() { var e = this.localeData()._week; return Mt(this.year(), e.dow, e.doy) } function Gi() { var e = this.localeData()._week; return Mt(this.weekYear(), e.dow, e.doy) } function Xi(e, t, n, r, i) { var o; return null == e ? Ct(this, r, i).year : (o = Mt(e, r, i), t > o && (t = o), Ji.call(this, e, t, n, r, i)) } function Ji(e, t, n, r, i) { var o = _t(e, t, n, r, i), a = xt(o.year, 0, o.dayOfYear); return this.year(a.getUTCFullYear()), this.month(a.getUTCMonth()), this.date(a.getUTCDate()), this } function Qi(e) { return null == e ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e - 1) + this.month() % 3) } F("N", 0, 0, "eraAbbr"), F("NN", 0, 0, "eraAbbr"), F("NNN", 0, 0, "eraAbbr"), F("NNNN", 0, 0, "eraName"), F("NNNNN", 0, 0, "eraNarrow"), F("y", ["y", 1], "yo", "eraYear"), F("y", ["yy", 2], 0, "eraYear"), F("y", ["yyy", 3], 0, "eraYear"), F("y", ["yyyy", 4], 0, "eraYear"), De("N", Ii), De("NN", Ii), De("NNN", Ii), De("NNNN", Ni), De("NNNNN", Ri), Re(["N", "NN", "NNN", "NNNN", "NNNNN"], (function (e, t, n, r) { var i = n._locale.erasParse(e, r, n._strict); i ? g(n).era = i : g(n).invalidEra = e })), De("y", Ae), De("yy", Ae), De("yyy", Ae), De("yyyy", Ae), De("yo", Fi), Re(["y", "yy", "yyy", "yyyy"], Be), Re(["yo"], (function (e, t, n, r) { var i; n._locale._eraYearOrdinalRegex && (i = e.match(n._locale._eraYearOrdinalRegex)), n._locale.eraYearOrdinalParse ? t[Be] = n._locale.eraYearOrdinalParse(e, i) : t[Be] = parseInt(e, 10) })), F(0, ["gg", 2], 0, (function () { return this.weekYear() % 100 })), F(0, ["GG", 2], 0, (function () { return this.isoWeekYear() % 100 })), $i("gggg", "weekYear"), $i("ggggg", "weekYear"), $i("GGGG", "isoWeekYear"), $i("GGGGG", "isoWeekYear"), re("weekYear", "gg"), re("isoWeekYear", "GG"), se("weekYear", 1), se("isoWeekYear", 1), De("G", Le), De("g", Le), De("GG", Ce, be), De("gg", Ce, be), De("GGGG", Se, we), De("gggg", Se, we), De("GGGGG", Te, _e), De("ggggg", Te, _e), Fe(["gggg", "ggggg", "GGGG", "GGGGG"], (function (e, t, n, r) { t[r.substr(0, 2)] = he(e) })), Fe(["gg", "GG"], (function (e, t, n, r) { t[r] = i.parseTwoDigitYear(e) })), F("Q", 0, "Qo", "quarter"), re("quarter", "Q"), se("quarter", 7), De("Q", ye), Re("Q", (function (e, t) { t[We] = 3 * (he(e) - 1) })), F("D", ["DD", 2], "Do", "date"), re("date", "D"), se("date", 9), De("D", Ce), De("DD", Ce, be), De("Do", (function (e, t) { return e ? t._dayOfMonthOrdinalParse || t._ordinalParse : t._dayOfMonthOrdinalParseLenient })), Re(["D", "DD"], qe), Re("Do", (function (e, t) { t[qe] = he(e.match(Ce)[0]) })); var Zi = fe("Date", !0); function eo(e) { var t = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1; return null == e ? t : this.add(e - t, "d") } F("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), re("dayOfYear", "DDD"), se("dayOfYear", 4), De("DDD", ke), De("DDDD", xe), Re(["DDD", "DDDD"], (function (e, t, n) { n._dayOfYear = he(e) })), F("m", ["mm", 2], 0, "minute"), re("minute", "m"), se("minute", 14), De("m", Ce), De("mm", Ce, be), Re(["m", "mm"], Ke); var to = fe("Minutes", !1); F("s", ["ss", 2], 0, "second"), re("second", "s"), se("second", 15), De("s", Ce), De("ss", Ce, be), Re(["s", "ss"], Ge); var no, ro, io = fe("Seconds", !1); for (F("S", 0, 0, (function () { return ~~(this.millisecond() / 100) })), F(0, ["SS", 2], 0, (function () { return ~~(this.millisecond() / 10) })), F(0, ["SSS", 3], 0, "millisecond"), F(0, ["SSSS", 4], 0, (function () { return 10 * this.millisecond() })), F(0, ["SSSSS", 5], 0, (function () { return 100 * this.millisecond() })), F(0, ["SSSSSS", 6], 0, (function () { return 1e3 * this.millisecond() })), F(0, ["SSSSSSS", 7], 0, (function () { return 1e4 * this.millisecond() })), F(0, ["SSSSSSSS", 8], 0, (function () { return 1e5 * this.millisecond() })), F(0, ["SSSSSSSSS", 9], 0, (function () { return 1e6 * this.millisecond() })), re("millisecond", "ms"), se("millisecond", 16), De("S", ke, ye), De("SS", ke, be), De("SSS", ke, xe), no = "SSSS"; no.length <= 9; no += "S")De(no, Ae); function oo(e, t) { t[Xe] = he(1e3 * ("0." + e)) } for (no = "S"; no.length <= 9; no += "S")Re(no, oo); function ao() { return this._isUTC ? "UTC" : "" } function so() { return this._isUTC ? "Coordinated Universal Time" : "" } ro = fe("Milliseconds", !1), F("z", 0, 0, "zoneAbbr"), F("zz", 0, 0, "zoneName"); var co = C.prototype; function lo(e) { return Gn(1e3 * e) } function uo() { return Gn.apply(null, arguments).parseZone() } function ho(e) { return e } co.add = Pr, co.calendar = Yr, co.clone = $r, co.diff = Xr, co.endOf = gi, co.format = ti, co.from = ni, co.fromNow = ri, co.to = ii, co.toNow = oi, co.get = ve, co.invalidAt = ki, co.isAfter = Br, co.isBefore = Wr, co.isBetween = qr, co.isSame = Ur, co.isSameOrAfter = Kr, co.isSameOrBefore = Gr, co.isValid = Mi, co.lang = si, co.locale = ai, co.localeData = ci, co.max = Jn, co.min = Xn, co.parsingFlags = Oi, co.set = me, co.startOf = mi, co.subtract = Dr, co.toArray = wi, co.toObject = _i, co.toDate = xi, co.toISOString = Zr, co.inspect = ei, "undefined" !== typeof Symbol && null != Symbol.for && (co[Symbol.for("nodejs.util.inspect.custom")] = function () { return "Moment<" + this.format() + ">" }), co.toJSON = Ci, co.toString = Qr, co.unix = bi, co.valueOf = yi, co.creationData = Si, co.eraName = ji, co.eraNarrow = zi, co.eraAbbr = Ei, co.eraYear = Pi, co.year = gt, co.isLeapYear = yt, co.weekYear = Bi, co.isoWeekYear = Wi, co.quarter = co.quarters = Qi, co.month = ht, co.daysInMonth = ft, co.week = co.weeks = At, co.isoWeek = co.isoWeeks = Lt, co.weeksInYear = Ki, co.weeksInWeekYear = Gi, co.isoWeeksInYear = qi, co.isoWeeksInISOWeekYear = Ui, co.date = Zi, co.day = co.days = Wt, co.weekday = qt, co.isoWeekday = Ut, co.dayOfYear = eo, co.hour = co.hours = on, co.minute = co.minutes = to, co.second = co.seconds = io, co.millisecond = co.milliseconds = ro, co.utcOffset = vr, co.utc = gr, co.local = yr, co.parseZone = br, co.hasAlignedHourOffset = xr, co.isDST = wr, co.isLocal = Cr, co.isUtcOffset = Mr, co.isUtc = Or, co.isUTC = Or, co.zoneAbbr = ao, co.zoneName = so, co.dates = k("dates accessor is deprecated. Use date instead.", Zi), co.months = k("months accessor is deprecated. Use month instead", ht), co.years = k("years accessor is deprecated. Use year instead", gt), co.zone = k("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", mr), co.isDSTShifted = k("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", _r); var fo = E.prototype; function po(e, t, n, r) { var i = yn(), o = v().set(r, t); return i[n](o, e) } function vo(e, t, n) { if (h(e) && (t = e, e = void 0), e = e || "", null != t) return po(e, t, n, "month"); var r, i = []; for (r = 0; r < 12; r++)i[r] = po(e, r, n, "month"); return i } function mo(e, t, n, r) { "boolean" === typeof e ? (h(t) && (n = t, t = void 0), t = t || "") : (t = e, n = t, e = !1, h(t) && (n = t, t = void 0), t = t || ""); var i, o = yn(), a = e ? o._week.dow : 0, s = []; if (null != n) return po(t, (n + a) % 7, r, "day"); for (i = 0; i < 7; i++)s[i] = po(t, (i + a) % 7, r, "day"); return s } function go(e, t) { return vo(e, t, "months") } function yo(e, t) { return vo(e, t, "monthsShort") } function bo(e, t, n) { return mo(e, t, n, "weekdays") } function xo(e, t, n) { return mo(e, t, n, "weekdaysShort") } function wo(e, t, n) { return mo(e, t, n, "weekdaysMin") } fo.calendar = D, fo.longDateFormat = U, fo.invalidDate = G, fo.ordinal = Q, fo.preparse = ho, fo.postformat = ho, fo.relativeTime = ee, fo.pastFuture = te, fo.set = j, fo.eras = Ti, fo.erasParse = Ai, fo.erasConvertYear = Li, fo.erasAbbrRegex = Hi, fo.erasNameRegex = Di, fo.erasNarrowRegex = Vi, fo.months = at, fo.monthsShort = st, fo.monthsParse = lt, fo.monthsRegex = pt, fo.monthsShortRegex = dt, fo.week = Ot, fo.firstDayOfYear = Tt, fo.firstDayOfWeek = St, fo.weekdays = Rt, fo.weekdaysMin = Yt, fo.weekdaysShort = Ft, fo.weekdaysParse = Bt, fo.weekdaysRegex = Kt, fo.weekdaysShortRegex = Gt, fo.weekdaysMinRegex = Xt, fo.isPM = nn, fo.meridiem = an, vn("en", { eras: [{ since: "0001-01-01", until: 1 / 0, offset: 1, name: "Anno Domini", narrow: "AD", abbr: "AD" }, { since: "0000-12-31", until: -1 / 0, offset: 1, name: "Before Christ", narrow: "BC", abbr: "BC" }], dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal: function (e) { var t = e % 10, n = 1 === he(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th"; return e + n } }), i.lang = k("moment.lang is deprecated. Use moment.locale instead.", vn), i.langData = k("moment.langData is deprecated. Use moment.localeData instead.", yn); var _o = Math.abs; function Co() { var e = this._data; return this._milliseconds = _o(this._milliseconds), this._days = _o(this._days), this._months = _o(this._months), e.milliseconds = _o(e.milliseconds), e.seconds = _o(e.seconds), e.minutes = _o(e.minutes), e.hours = _o(e.hours), e.months = _o(e.months), e.years = _o(e.years), this } function Mo(e, t, n, r) { var i = Tr(t, n); return e._milliseconds += r * i._milliseconds, e._days += r * i._days, e._months += r * i._months, e._bubble() } function Oo(e, t) { return Mo(this, e, t, 1) } function ko(e, t) { return Mo(this, e, t, -1) } function So(e) { return e < 0 ? Math.floor(e) : Math.ceil(e) } function To() { var e, t, n, r, i, o = this._milliseconds, a = this._days, s = this._months, c = this._data; return o >= 0 && a >= 0 && s >= 0 || o <= 0 && a <= 0 && s <= 0 || (o += 864e5 * So(Lo(s) + a), a = 0, s = 0), c.milliseconds = o % 1e3, e = ue(o / 1e3), c.seconds = e % 60, t = ue(e / 60), c.minutes = t % 60, n = ue(t / 60), c.hours = n % 24, a += ue(n / 24), i = ue(Ao(a)), s += i, a -= So(Lo(i)), r = ue(s / 12), s %= 12, c.days = a, c.months = s, c.years = r, this } function Ao(e) { return 4800 * e / 146097 } function Lo(e) { return 146097 * e / 4800 } function jo(e) { if (!this.isValid()) return NaN; var t, n, r = this._milliseconds; if (e = ie(e), "month" === e || "quarter" === e || "year" === e) switch (t = this._days + r / 864e5, n = this._months + Ao(t), e) { case "month": return n; case "quarter": return n / 3; case "year": return n / 12 } else switch (t = this._days + Math.round(Lo(this._months)), e) { case "week": return t / 7 + r / 6048e5; case "day": return t + r / 864e5; case "hour": return 24 * t + r / 36e5; case "minute": return 1440 * t + r / 6e4; case "second": return 86400 * t + r / 1e3; case "millisecond": return Math.floor(864e5 * t) + r; default: throw new Error("Unknown unit " + e) } } function zo() { return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * he(this._months / 12) : NaN } function Eo(e) { return function () { return this.as(e) } } var Po = Eo("ms"), Do = Eo("s"), Ho = Eo("m"), Vo = Eo("h"), Io = Eo("d"), No = Eo("w"), Ro = Eo("M"), Fo = Eo("Q"), Yo = Eo("y"); function $o() { return Tr(this) } function Bo(e) { return e = ie(e), this.isValid() ? this[e + "s"]() : NaN } function Wo(e) { return function () { return this.isValid() ? this._data[e] : NaN } } var qo = Wo("milliseconds"), Uo = Wo("seconds"), Ko = Wo("minutes"), Go = Wo("hours"), Xo = Wo("days"), Jo = Wo("months"), Qo = Wo("years"); function Zo() { return ue(this.days() / 7) } var ea = Math.round, ta = { ss: 44, s: 45, m: 45, h: 22, d: 26, w: null, M: 11 }; function na(e, t, n, r, i) { return i.relativeTime(t || 1, !!n, e, r) } function ra(e, t, n, r) { var i = Tr(e).abs(), o = ea(i.as("s")), a = ea(i.as("m")), s = ea(i.as("h")), c = ea(i.as("d")), l = ea(i.as("M")), u = ea(i.as("w")), h = ea(i.as("y")), f = o <= n.ss && ["s", o] || o < n.s && ["ss", o] || a <= 1 && ["m"] || a < n.m && ["mm", a] || s <= 1 && ["h"] || s < n.h && ["hh", s] || c <= 1 && ["d"] || c < n.d && ["dd", c]; return null != n.w && (f = f || u <= 1 && ["w"] || u < n.w && ["ww", u]), f = f || l <= 1 && ["M"] || l < n.M && ["MM", l] || h <= 1 && ["y"] || ["yy", h], f[2] = t, f[3] = +e > 0, f[4] = r, na.apply(null, f) } function ia(e) { return void 0 === e ? ea : "function" === typeof e && (ea = e, !0) } function oa(e, t) { return void 0 !== ta[e] && (void 0 === t ? ta[e] : (ta[e] = t, "s" === e && (ta.ss = t - 1), !0)) } function aa(e, t) { if (!this.isValid()) return this.localeData().invalidDate(); var n, r, i = !1, o = ta; return "object" === typeof e && (t = e, e = !1), "boolean" === typeof e && (i = e), "object" === typeof t && (o = Object.assign({}, ta, t), null != t.s && null == t.ss && (o.ss = t.s - 1)), n = this.localeData(), r = ra(this, !i, o, n), i && (r = n.pastFuture(+this, r)), n.postformat(r) } var sa = Math.abs; function ca(e) { return (e > 0) - (e < 0) || +e } function la() { if (!this.isValid()) return this.localeData().invalidDate(); var e, t, n, r, i, o, a, s, c = sa(this._milliseconds) / 1e3, l = sa(this._days), u = sa(this._months), h = this.asSeconds(); return h ? (e = ue(c / 60), t = ue(e / 60), c %= 60, e %= 60, n = ue(u / 12), u %= 12, r = c ? c.toFixed(3).replace(/\.?0+$/, "") : "", i = h < 0 ? "-" : "", o = ca(this._months) !== ca(h) ? "-" : "", a = ca(this._days) !== ca(h) ? "-" : "", s = ca(this._milliseconds) !== ca(h) ? "-" : "", i + "P" + (n ? o + n + "Y" : "") + (u ? o + u + "M" : "") + (l ? a + l + "D" : "") + (t || e || c ? "T" : "") + (t ? s + t + "H" : "") + (e ? s + e + "M" : "") + (c ? s + r + "S" : "")) : "P0D" } var ua = ar.prototype; return ua.isValid = ir, ua.abs = Co, ua.add = Oo, ua.subtract = ko, ua.as = jo, ua.asMilliseconds = Po, ua.asSeconds = Do, ua.asMinutes = Ho, ua.asHours = Vo, ua.asDays = Io, ua.asWeeks = No, ua.asMonths = Ro, ua.asQuarters = Fo, ua.asYears = Yo, ua.valueOf = zo, ua._bubble = To, ua.clone = $o, ua.get = Bo, ua.milliseconds = qo, ua.seconds = Uo, ua.minutes = Ko, ua.hours = Go, ua.days = Xo, ua.weeks = Zo, ua.months = Jo, ua.years = Qo, ua.humanize = aa, ua.toISOString = la, ua.toString = la, ua.toJSON = la, ua.locale = ai, ua.localeData = ci, ua.toIsoString = k("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", la), ua.lang = si, F("X", 0, 0, "unix"), F("x", 0, 0, "valueOf"), De("x", Le), De("X", Ee), Re("X", (function (e, t, n) { n._d = new Date(1e3 * parseFloat(e)) })), Re("x", (function (e, t, n) { n._d = new Date(he(e)) })),
+                                //! moment.js
+                                i.version = "2.27.0", o(Gn), i.fn = co, i.min = Zn, i.max = er, i.now = tr, i.utc = v, i.unix = lo, i.months = go, i.isDate = f, i.locale = vn, i.invalid = b, i.duration = Tr, i.isMoment = M, i.weekdays = bo, i.parseZone = uo, i.localeData = yn, i.isDuration = sr, i.monthsShort = yo, i.weekdaysMin = wo, i.defineLocale = mn, i.updateLocale = gn, i.locales = bn, i.weekdaysShort = xo, i.normalizeUnits = ie, i.relativeTimeRounding = ia, i.relativeTimeThreshold = oa, i.calendarFormat = Fr, i.prototype = co, i.HTML5_FMT = { DATETIME_LOCAL: "YYYY-MM-DDTHH:mm", DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss", DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS", DATE: "YYYY-MM-DD", TIME: "HH:mm", TIME_SECONDS: "HH:mm:ss", TIME_MS: "HH:mm:ss.SSS", WEEK: "GGGG-[W]WW", MONTH: "YYYY-MM" }, i
+                        }))
+                    }).call(this, n("62e4")(e))
+                }, c207: function (e, t) { }, c242: function (e, t, n) { }, c26b: function (e, t, n) { "use strict"; var r = n("86cc").f, i = n("2aeb"), o = n("dcbc"), a = n("9b43"), s = n("f605"), c = n("4a59"), l = n("01f9"), u = n("d53b"), h = n("7a56"), f = n("9e1e"), d = n("67ab").fastKey, p = n("b39a"), v = f ? "_s" : "size", m = function (e, t) { var n, r = d(t); if ("F" !== r) return e._i[r]; for (n = e._f; n; n = n.n)if (n.k == t) return n }; e.exports = { getConstructor: function (e, t, n, l) { var u = e((function (e, r) { s(e, u, t, "_i"), e._t = t, e._i = i(null), e._f = void 0, e._l = void 0, e[v] = 0, void 0 != r && c(r, n, e[l], e) })); return o(u.prototype, { clear: function () { for (var e = p(this, t), n = e._i, r = e._f; r; r = r.n)r.r = !0, r.p && (r.p = r.p.n = void 0), delete n[r.i]; e._f = e._l = void 0, e[v] = 0 }, delete: function (e) { var n = p(this, t), r = m(n, e); if (r) { var i = r.n, o = r.p; delete n._i[r.i], r.r = !0, o && (o.n = i), i && (i.p = o), n._f == r && (n._f = i), n._l == r && (n._l = o), n[v]-- } return !!r }, forEach: function (e) { p(this, t); var n, r = a(e, arguments.length > 1 ? arguments[1] : void 0, 3); while (n = n ? n.n : this._f) { r(n.v, n.k, this); while (n && n.r) n = n.p } }, has: function (e) { return !!m(p(this, t), e) } }), f && r(u.prototype, "size", { get: function () { return p(this, t)[v] } }), u }, def: function (e, t, n) { var r, i, o = m(e, t); return o ? o.v = n : (e._l = o = { i: i = d(t, !0), k: t, v: n, p: r = e._l, n: void 0, r: !1 }, e._f || (e._f = o), r && (r.n = o), e[v]++, "F" !== i && (e._i[i] = o)), e }, getEntry: m, setStrong: function (e, t, n) { l(e, t, (function (e, n) { this._t = p(e, t), this._k = n, this._l = void 0 }), (function () { var e = this, t = e._k, n = e._l; while (n && n.r) n = n.p; return e._t && (e._l = n = n ? n.n : e._t._f) ? u(0, "keys" == t ? n.k : "values" == t ? n.v : [n.k, n.v]) : (e._t = void 0, u(1)) }), n ? "entries" : "values", !n, !0), h(t) } } }, c2b3: function (e, t, n) { "use strict"; function r(e, t) { if (e === t) return !0; if (!e || !t) return !1; var n = e.length; if (t.length !== n) return !1; for (var r = 0; r < n; r++)if (e[r] !== t[r]) return !1; return !0 } e.exports = r }, c2b6: function (e, t, n) { var r = n("f8af"), i = n("5d89"), o = n("6f6c"), a = n("a2db"), s = n("c8fe"), c = "[object Boolean]", l = "[object Date]", u = "[object Map]", h = "[object Number]", f = "[object RegExp]", d = "[object Set]", p = "[object String]", v = "[object Symbol]", m = "[object ArrayBuffer]", g = "[object DataView]", y = "[object Float32Array]", b = "[object Float64Array]", x = "[object Int8Array]", w = "[object Int16Array]", _ = "[object Int32Array]", C = "[object Uint8Array]", M = "[object Uint8ClampedArray]", O = "[object Uint16Array]", k = "[object Uint32Array]"; function S(e, t, n) { var S = e.constructor; switch (t) { case m: return r(e); case c: case l: return new S(+e); case g: return i(e, n); case y: case b: case x: case w: case _: case C: case M: case O: case k: return s(e, n); case u: return new S; case h: case p: return new S(e); case f: return o(e); case d: return new S; case v: return a(e) } } e.exports = S }, c30c: function (e, t, n) { var r = n("8eeb"), i = n("2ec1"), o = n("9934"), a = i((function (e, t, n, i) { r(t, o(t), e, i) })); e.exports = a }, c366: function (e, t, n) { var r = n("6821"), i = n("9def"), o = n("77f1"); e.exports = function (e) { return function (t, n, a) { var s, c = r(t), l = i(c.length), u = o(a, l); if (e && n != n) { while (l > u) if (s = c[u++], s != s) return !0 } else for (; l > u; u++)if ((e || u in c) && c[u] === n) return e || u || 0; return !e && -1 } } }, c367: function (e, t, n) { "use strict"; var r = n("8436"), i = n("50ed"), o = n("481b"), a = n("36c3"); e.exports = n("30f1")(Array, "Array", (function (e, t) { this._t = a(e), this._i = 0, this._k = t }), (function () { var e = this._t, t = this._k, n = this._i++; return !e || n >= e.length ? (this._t = void 0, i(1)) : i(0, "keys" == t ? n : "values" == t ? e[n] : [n, e[n]]) }), "values"), o.Arguments = o.Array, r("keys"), r("values"), r("entries") }, c3a1: function (e, t, n) { var r = n("e6f3"), i = n("1691"); e.exports = Object.keys || function (e) { return r(e, i) } }, c3f4: function (e, t, n) { var r = n("5b01"), i = n("7530"); function o(e, t) { var n = i(e); return null == t ? n : r(n, t) } e.exports = o }, c3fc: function (e, t, n) { var r = n("42a2"), i = n("1310"), o = "[object Set]"; function a(e) { return i(e) && r(e) == o } e.exports = a }, c449: function (e, t, n) { (function (t) { for (var r = n("6d08"), i = "undefined" === typeof window ? t : window, o = ["moz", "webkit"], a = "AnimationFrame", s = i["request" + a], c = i["cancel" + a] || i["cancelRequest" + a], l = 0; !s && l < o.length; l++)s = i[o[l] + "Request" + a], c = i[o[l] + "Cancel" + a] || i[o[l] + "CancelRequest" + a]; if (!s || !c) { var u = 0, h = 0, f = [], d = 1e3 / 60; s = function (e) { if (0 === f.length) { var t = r(), n = Math.max(0, d - (t - u)); u = n + t, setTimeout((function () { var e = f.slice(0); f.length = 0; for (var t = 0; t < e.length; t++)if (!e[t].cancelled) try { e[t].callback(u) } catch (n) { setTimeout((function () { throw n }), 0) } }), Math.round(n)) } return f.push({ handle: ++h, callback: e, cancelled: !1 }), h }, c = function (e) { for (var t = 0; t < f.length; t++)f[t].handle === e && (f[t].cancelled = !0) } } e.exports = function (e) { return s.call(i, e) }, e.exports.cancel = function () { c.apply(i, arguments) }, e.exports.polyfill = function (e) { e || (e = i), e.requestAnimationFrame = s, e.cancelAnimationFrame = c } }).call(this, n("c8ba")) }, c4b2: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t["default"] = { items_per_page: "鏉�/椤�", jump_to: "璺宠嚦", jump_to_confirm: "纭畾", page: "椤�", prev_page: "涓婁竴椤�", next_page: "涓嬩竴椤�", prev_5: "鍚戝墠 5 椤�", next_5: "鍚戝悗 5 椤�", prev_3: "鍚戝墠 3 椤�", next_3: "鍚戝悗 3 椤�" } }, c544: function (e, t, n) { "use strict"; var r = { transitionstart: { transition: "transitionstart", WebkitTransition: "webkitTransitionStart", MozTransition: "mozTransitionStart", OTransition: "oTransitionStart", msTransition: "MSTransitionStart" }, animationstart: { animation: "animationstart", WebkitAnimation: "webkitAnimationStart", MozAnimation: "mozAnimationStart", OAnimation: "oAnimationStart", msAnimation: "MSAnimationStart" } }, i = { transitionend: { transition: "transitionend", WebkitTransition: "webkitTransitionEnd", MozTransition: "mozTransitionEnd", OTransition: "oTransitionEnd", msTransition: "MSTransitionEnd" }, animationend: { animation: "animationend", WebkitAnimation: "webkitAnimationEnd", MozAnimation: "mozAnimationEnd", OAnimation: "oAnimationEnd", msAnimation: "MSAnimationEnd" } }, o = [], a = []; function s() { var e = document.createElement("div"), t = e.style; function n(e, n) { for (var r in e) if (e.hasOwnProperty(r)) { var i = e[r]; for (var o in i) if (o in t) { n.push(i[o]); break } } } "AnimationEvent" in window || (delete r.animationstart.animation, delete i.animationend.animation), "TransitionEvent" in window || (delete r.transitionstart.transition, delete i.transitionend.transition), n(r, o), n(i, a) } function c(e, t, n) { e.addEventListener(t, n, !1) } function l(e, t, n) { e.removeEventListener(t, n, !1) } "undefined" !== typeof window && "undefined" !== typeof document && s(); var u = { startEvents: o, addStartEventListener: function (e, t) { 0 !== o.length ? o.forEach((function (n) { c(e, n, t) })) : window.setTimeout(t, 0) }, removeStartEventListener: function (e, t) { 0 !== o.length && o.forEach((function (n) { l(e, n, t) })) }, endEvents: a, addEndEventListener: function (e, t) { 0 !== a.length ? a.forEach((function (n) { c(e, n, t) })) : window.setTimeout(t, 0) }, removeEndEventListener: function (e, t) { 0 !== a.length && a.forEach((function (n) { l(e, n, t) })) } }; t["a"] = u }, c584: function (e, t) { function n(e, t) { return e.has(t) } e.exports = n }, c5f6: function (e, t, n) { "use strict"; var r = n("7726"), i = n("69a8"), o = n("2d95"), a = n("5dbc"), s = n("6a99"), c = n("79e5"), l = n("9093").f, u = n("11e9").f, h = n("86cc").f, f = n("aa77").trim, d = "Number", p = r[d], v = p, m = p.prototype, g = o(n("2aeb")(m)) == d, y = "trim" in String.prototype, b = function (e) { var t = s(e, !1); if ("string" == typeof t && t.length > 2) { t = y ? t.trim() : f(t, 3); var n, r, i, o = t.charCodeAt(0); if (43 === o || 45 === o) { if (n = t.charCodeAt(2), 88 === n || 120 === n) return NaN } else if (48 === o) { switch (t.charCodeAt(1)) { case 66: case 98: r = 2, i = 49; break; case 79: case 111: r = 8, i = 55; break; default: return +t }for (var a, c = t.slice(2), l = 0, u = c.length; l < u; l++)if (a = c.charCodeAt(l), a < 48 || a > i) return NaN; return parseInt(c, r) } } return +t }; if (!p(" 0o1") || !p("0b1") || p("+0x1")) { p = function (e) { var t = arguments.length < 1 ? 0 : e, n = this; return n instanceof p && (g ? c((function () { m.valueOf.call(n) })) : o(n) != d) ? a(new v(b(t)), n, p) : b(t) }; for (var x, w = n("9e1e") ? l(v) : "MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","), _ = 0; w.length > _; _++)i(v, x = w[_]) && !i(p, x) && h(p, x, u(v, x)); p.prototype = m, m.constructor = p, n("2aba")(r, d, p) } }, c69a: function (e, t, n) { e.exports = !n("9e1e") && !n("79e5")((function () { return 7 != Object.defineProperty(n("230e")("div"), "a", { get: function () { return 7 } }).a })) }, c6cf: function (e, t, n) { var r = n("4d8c"), i = n("2286"), o = n("c1c9"); function a(e) { return o(i(e, void 0, r), e + "") } e.exports = a }, c746: function (e, t, n) { }, c7aa: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("he", { months: "讬谞讜讗专_驻讘专讜讗专_诪专抓_讗驻专讬诇_诪讗讬_讬讜谞讬_讬讜诇讬_讗讜讙讜住讟_住驻讟诪讘专_讗讜拽讟讜讘专_谞讜讘诪讘专_讚爪诪讘专".split("_"), monthsShort: "讬谞讜壮_驻讘专壮_诪专抓_讗驻专壮_诪讗讬_讬讜谞讬_讬讜诇讬_讗讜讙壮_住驻讟壮_讗讜拽壮_谞讜讘壮_讚爪诪壮".split("_"), weekdays: "专讗砖讜谉_砖谞讬_砖诇讬砖讬_专讘讬注讬_讞诪讬砖讬_砖讬砖讬_砖讘转".split("_"), weekdaysShort: "讗壮_讘壮_讙壮_讚壮_讛壮_讜壮_砖壮".split("_"), weekdaysMin: "讗_讘_讙_讚_讛_讜_砖".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D [讘]MMMM YYYY", LLL: "D [讘]MMMM YYYY HH:mm", LLLL: "dddd, D [讘]MMMM YYYY HH:mm", l: "D/M/YYYY", ll: "D MMM YYYY", lll: "D MMM YYYY HH:mm", llll: "ddd, D MMM YYYY HH:mm" }, calendar: { sameDay: "[讛讬讜诐 讘志]LT", nextDay: "[诪讞专 讘志]LT", nextWeek: "dddd [讘砖注讛] LT", lastDay: "[讗转诪讜诇 讘志]LT", lastWeek: "[讘讬讜诐] dddd [讛讗讞专讜谉 讘砖注讛] LT", sameElse: "L" }, relativeTime: { future: "讘注讜讚 %s", past: "诇驻谞讬 %s", s: "诪住驻专 砖谞讬讜转", ss: "%d 砖谞讬讜转", m: "讚拽讛", mm: "%d 讚拽讜转", h: "砖注讛", hh: function (e) { return 2 === e ? "砖注转讬讬诐" : e + " 砖注讜转" }, d: "讬讜诐", dd: function (e) { return 2 === e ? "讬讜诪讬讬诐" : e + " 讬诪讬诐" }, M: "讞讜讚砖", MM: function (e) { return 2 === e ? "讞讜讚砖讬讬诐" : e + " 讞讜讚砖讬诐" }, y: "砖谞讛", yy: function (e) { return 2 === e ? "砖谞转讬讬诐" : e % 10 === 0 && 10 !== e ? e + " 砖谞讛" : e + " 砖谞讬诐" } }, meridiemParse: /讗讞讛"爪|诇驻谞讛"爪|讗讞专讬 讛爪讛专讬讬诐|诇驻谞讬 讛爪讛专讬讬诐|诇驻谞讜转 讘讜拽专|讘讘讜拽专|讘注专讘/i, isPM: function (e) { return /^(讗讞讛"爪|讗讞专讬 讛爪讛专讬讬诐|讘注专讘)$/.test(e) }, meridiem: function (e, t, n) { return e < 5 ? "诇驻谞讜转 讘讜拽专" : e < 10 ? "讘讘讜拽专" : e < 12 ? n ? '诇驻谞讛"爪' : "诇驻谞讬 讛爪讛专讬讬诐" : e < 18 ? n ? '讗讞讛"爪' : "讗讞专讬 讛爪讛专讬讬诐" : "讘注专讘" } }); return t
+                    }))
+                }, c869: function (e, t, n) { var r = n("0b07"), i = n("2b3e"), o = r(i, "Set"); e.exports = o }, c87c: function (e, t) { var n = Object.prototype, r = n.hasOwnProperty; function i(e) { var t = e.length, n = new e.constructor(t); return t && "string" == typeof e[0] && r.call(e, "index") && (n.index = e.index, n.input = e.input), n } e.exports = i }, c884: function (e, t, n) { var r = n("56b3"), i = n("7b34"); i = i.default || i, e.exports = { CodeMirror: r, codemirror: i, install: function (e) { e.component("codemirror", i) } } }, c8ba: function (e, t) { var n; n = function () { return this }(); try { n = n || new Function("return this")() } catch (r) { "object" === typeof window && (n = window) } e.exports = n }, c8f3: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("sq", { months: "Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N毛ntor_Dhjetor".split("_"), monthsShort: "Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N毛n_Dhj".split("_"), weekdays: "E Diel_E H毛n毛_E Mart毛_E M毛rkur毛_E Enjte_E Premte_E Shtun毛".split("_"), weekdaysShort: "Die_H毛n_Mar_M毛r_Enj_Pre_Sht".split("_"), weekdaysMin: "D_H_Ma_M毛_E_P_Sh".split("_"), weekdaysParseExact: !0, meridiemParse: /PD|MD/, isPM: function (e) { return "M" === e.charAt(0) }, meridiem: function (e, t, n) { return e < 12 ? "PD" : "MD" }, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Sot n毛] LT", nextDay: "[Nes毛r n毛] LT", nextWeek: "dddd [n毛] LT", lastDay: "[Dje n毛] LT", lastWeek: "dddd [e kaluar n毛] LT", sameElse: "L" }, relativeTime: { future: "n毛 %s", past: "%s m毛 par毛", s: "disa sekonda", ss: "%d sekonda", m: "nj毛 minut毛", mm: "%d minuta", h: "nj毛 or毛", hh: "%d or毛", d: "nj毛 dit毛", dd: "%d dit毛", M: "nj毛 muaj", MM: "%d muaj", y: "nj毛 vit", yy: "%d vite" }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, c8fe: function (e, t, n) { var r = n("f8af"); function i(e, t) { var n = t ? r(e.buffer) : e.buffer; return new e.constructor(n, e.byteOffset, e.length) } e.exports = i }, c9a4: function (e, t, n) { "use strict"; n.d(t, "o", (function () { return b })), n.d(t, "b", (function () { return x })), n.d(t, "a", (function () { return w })), n.d(t, "n", (function () { return _ })), n.d(t, "k", (function () { return C })), n.d(t, "j", (function () { return O })), n.d(t, "l", (function () { return T })), n.d(t, "i", (function () { return A })), n.d(t, "c", (function () { return L })), n.d(t, "d", (function () { return j })), n.d(t, "g", (function () { return E })), n.d(t, "h", (function () { return P })), n.d(t, "m", (function () { return D })), n.d(t, "e", (function () { return H })), n.d(t, "f", (function () { return V })); var r = n("9b57"), i = n.n(r), o = n("b24f"), a = n.n(o), s = n("1098"), c = n.n(s), l = n("8e8e"), u = n.n(l), h = n("d96e"), f = n.n(h), d = n("0464"), p = n("cdd1"), v = n("daa3"), m = .25, g = 2, y = !1; function b() { y || (y = !0, f()(!1, "Tree only accept TreeNode as children.")) } function x(e, t) { var n = e.slice(), r = n.indexOf(t); return r >= 0 && n.splice(r, 1), n } function w(e, t) { var n = e.slice(); return -1 === n.indexOf(t) && n.push(t), n } function _(e) { return e.split("-") } function C(e, t) { return e + "-" + t } function M(e) { return Object(v["o"])(e).isTreeNode } function O() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; return e.filter(M) } function k(e) { var t = Object(v["l"])(e) || {}, n = t.disabled, r = t.disableCheckbox, i = t.checkable; return !(!n && !r) || !1 === i } function S(e, t) { function n(r, i, o) { var a = r ? r.componentOptions.children : e, s = r ? C(o.pos, i) : 0, c = O(a); if (r) { var l = r.key; l || void 0 !== l && null !== l || (l = s); var u = { node: r, index: i, pos: s, key: l, parentPos: o.node ? o.pos : null }; t(u) } c.forEach((function (e, t) { n(e, t, { node: r, pos: s }) })) } n(null) } function T() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = arguments[1], n = e.map(t); return 1 === n.length ? n[0] : n } function A(e, t) { var n = Object(v["l"])(t), r = n.eventKey, i = n.pos, o = []; return S(e, (function (e) { var t = e.key; o.push(t) })), o.push(r || i), o } function L(e, t) { var n = e.clientY, r = t.$refs.selectHandle.getBoundingClientRect(), i = r.top, o = r.bottom, a = r.height, s = Math.max(a * m, g); return n <= i + s ? -1 : n >= o - s ? 1 : 0 } function j(e, t) { if (e) { var n = t.multiple; return n ? e.slice() : e.length ? [e[0]] : e } } var z = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return { props: Object(d["a"])(e, ["on", "key", "class", "className", "style"]), on: e.on || {}, class: e["class"] || e.className, style: e.style, key: e.key } }; function E(e, t, n) { if (!t) return []; var r = n || {}, i = r.processProps, o = void 0 === i ? z : i, a = Array.isArray(t) ? t : [t]; return a.map((function (t) { var r = t.children, i = u()(t, ["children"]), a = E(e, r, n); return e(p["a"], o(i), [a]) })) } function P(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.initWrapper, r = t.processEntity, i = t.onProcessFinished, o = new Map, a = new Map, s = { posEntities: o, keyEntities: a }; return n && (s = n(s) || s), S(e, (function (e) { var t = e.node, n = e.index, i = e.pos, c = e.key, l = e.parentPos, u = { node: t, index: n, key: c, pos: i }; o.set(i, u), a.set(c, u), u.parent = o.get(l), u.parent && (u.parent.children = u.parent.children || [], u.parent.children.push(u)), r && r(u, s) })), i && i(s), s } function D(e) { if (!e) return null; var t = void 0; if (Array.isArray(e)) t = { checkedKeys: e, halfCheckedKeys: void 0 }; else { if ("object" !== ("undefined" === typeof e ? "undefined" : c()(e))) return f()(!1, "`checkedKeys` is not an array or an object"), null; t = { checkedKeys: e.checked || void 0, halfCheckedKeys: e.halfChecked || void 0 } } return t } function H(e, t, n) { var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}, i = new Map, o = new Map; function s(e) { if (i.get(e) !== t) { var r = n.get(e); if (r) { var a = r.children, c = r.parent, l = r.node; if (!k(l)) { var u = !0, h = !1; (a || []).filter((function (e) { return !k(e.node) })).forEach((function (e) { var t = e.key, n = i.get(t), r = o.get(t); (n || r) && (h = !0), n || (u = !1) })), t ? i.set(e, u) : i.set(e, !1), o.set(e, h), c && s(c.key) } } } } function c(e) { if (i.get(e) !== t) { var r = n.get(e); if (r) { var o = r.children, a = r.node; k(a) || (i.set(e, t), (o || []).forEach((function (e) { c(e.key) }))) } } } function l(e) { var r = n.get(e); if (r) { var o = r.children, a = r.parent, l = r.node; i.set(e, t), k(l) || ((o || []).filter((function (e) { return !k(e.node) })).forEach((function (e) { c(e.key) })), a && s(a.key)) } else f()(!1, "'" + e + "' does not exist in the tree.") } (r.checkedKeys || []).forEach((function (e) { i.set(e, !0) })), (r.halfCheckedKeys || []).forEach((function (e) { o.set(e, !0) })), (e || []).forEach((function (e) { l(e) })); var u = [], h = [], d = !0, p = !1, v = void 0; try { for (var m, g = i[Symbol.iterator](); !(d = (m = g.next()).done); d = !0) { var y = m.value, b = a()(y, 2), x = b[0], w = b[1]; w && u.push(x) } } catch (z) { p = !0, v = z } finally { try { !d && g["return"] && g["return"]() } finally { if (p) throw v } } var _ = !0, C = !1, M = void 0; try { for (var O, S = o[Symbol.iterator](); !(_ = (O = S.next()).done); _ = !0) { var T = O.value, A = a()(T, 2), L = A[0], j = A[1]; !i.get(L) && j && h.push(L) } } catch (z) { C = !0, M = z } finally { try { !_ && S["return"] && S["return"]() } finally { if (C) throw M } } return { checkedKeys: u, halfCheckedKeys: h } } function V(e, t) { var n = new Map; function r(e) { if (!n.get(e)) { var i = t.get(e); if (i) { n.set(e, !0); var o = i.parent, a = i.node, s = Object(v["l"])(a); s && s.disabled || o && r(o.key) } } } return (e || []).forEach((function (e) { r(e) })), [].concat(i()(n.keys())) } }, ca5a: function (e, t) { var n = 0, r = Math.random(); e.exports = function (e) { return "Symbol(".concat(void 0 === e ? "" : e, ")_", (++n + r).toString(36)) } }, ca7c: function (e, t, n) { var r = n("4be8"), i = n("1304"); function o(e, t) { return e && r(e, i(t)) } e.exports = o }, cadf: function (e, t, n) { "use strict"; var r = n("9c6c"), i = n("d53b"), o = n("84f2"), a = n("6821"); e.exports = n("01f9")(Array, "Array", (function (e, t) { this._t = a(e), this._i = 0, this._k = t }), (function () { var e = this._t, t = this._k, n = this._i++; return !e || n >= e.length ? (this._t = void 0, i(1)) : i(0, "keys" == t ? n : "values" == t ? e[n] : [n, e[n]]) }), "values"), o.Arguments = o.Array, r("keys"), r("values"), r("entries") }, cb5a: function (e, t, n) { var r = n("9638"); function i(e, t) { var n = e.length; while (n--) if (r(e[n][0], t)) return n; return -1 } e.exports = i }, cb7c: function (e, t, n) { var r = n("d3f4"); e.exports = function (e) { if (!r(e)) throw TypeError(e + " is not an object!"); return e } }, cc45: function (e, t, n) { var r = n("1a2d"), i = n("b047f"), o = n("99d3"), a = o && o.isMap, s = a ? i(a) : r; e.exports = s }, ccb9: function (e, t, n) { t.f = n("5168") }, cd67: function (e, t, n) { "use strict"; var r = n("c242"), i = n.n(r); i.a }, cd9d: function (e, t) { function n(e) { return e } e.exports = n }, cdd1: function (e, t, n) { "use strict"; var r = n("6042"), i = n.n(r), o = n("1098"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("4d91"), u = n("4d26"), h = n.n(u), f = n("c9a4"), d = n("daa3"), p = n("b488"), v = n("94eb"); function m() { } var g = "open", y = "close", b = "---", x = { name: "TreeNode", mixins: [p["a"]], __ANT_TREE_NODE: !0, props: Object(d["t"])({ eventKey: l["a"].oneOfType([l["a"].string, l["a"].number]), prefixCls: l["a"].string, root: l["a"].object, expanded: l["a"].bool, selected: l["a"].bool, checked: l["a"].bool, loaded: l["a"].bool, loading: l["a"].bool, halfChecked: l["a"].bool, title: l["a"].any, pos: l["a"].string, dragOver: l["a"].bool, dragOverGapTop: l["a"].bool, dragOverGapBottom: l["a"].bool, isLeaf: l["a"].bool, checkable: l["a"].bool, selectable: l["a"].bool, disabled: l["a"].bool, disableCheckbox: l["a"].bool, icon: l["a"].any, dataRef: l["a"].object, switcherIcon: l["a"].any, label: l["a"].any, value: l["a"].any }, {}), data: function () { return { dragNodeHighlight: !1 } }, inject: { vcTree: { default: function () { return {} } }, vcTreeNode: { default: function () { return {} } } }, provide: function () { return { vcTreeNode: this } }, mounted: function () { var e = this.eventKey, t = this.vcTree.registerTreeNode; this.syncLoadData(this.$props), t && t(e, this) }, updated: function () { this.syncLoadData(this.$props) }, beforeDestroy: function () { var e = this.eventKey, t = this.vcTree.registerTreeNode; t && t(e, null) }, methods: { onSelectorClick: function (e) { var t = this.vcTree.onNodeClick; t(e, this), this.isSelectable() ? this.onSelect(e) : this.onCheck(e) }, onSelectorDoubleClick: function (e) { var t = this.vcTree.onNodeDoubleClick; t(e, this) }, onSelect: function (e) { if (!this.isDisabled()) { var t = this.vcTree.onNodeSelect; e.preventDefault(), t(e, this) } }, onCheck: function (e) { if (!this.isDisabled()) { var t = this.disableCheckbox, n = this.checked, r = this.vcTree.onNodeCheck; if (this.isCheckable() && !t) { e.preventDefault(); var i = !n; r(e, this, i) } } }, onMouseEnter: function (e) { var t = this.vcTree.onNodeMouseEnter; t(e, this) }, onMouseLeave: function (e) { var t = this.vcTree.onNodeMouseLeave; t(e, this) }, onContextMenu: function (e) { var t = this.vcTree.onNodeContextMenu; t(e, this) }, onDragStart: function (e) { var t = this.vcTree.onNodeDragStart; e.stopPropagation(), this.setState({ dragNodeHighlight: !0 }), t(e, this); try { e.dataTransfer.setData("text/plain", "") } catch (n) { } }, onDragEnter: function (e) { var t = this.vcTree.onNodeDragEnter; e.preventDefault(), e.stopPropagation(), t(e, this) }, onDragOver: function (e) { var t = this.vcTree.onNodeDragOver; e.preventDefault(), e.stopPropagation(), t(e, this) }, onDragLeave: function (e) { var t = this.vcTree.onNodeDragLeave; e.stopPropagation(), t(e, this) }, onDragEnd: function (e) { var t = this.vcTree.onNodeDragEnd; e.stopPropagation(), this.setState({ dragNodeHighlight: !1 }), t(e, this) }, onDrop: function (e) { var t = this.vcTree.onNodeDrop; e.preventDefault(), e.stopPropagation(), this.setState({ dragNodeHighlight: !1 }), t(e, this) }, onExpand: function (e) { var t = this.vcTree.onNodeExpand; t(e, this) }, getNodeChildren: function () { var e = this.$slots["default"], t = Object(d["c"])(e), n = Object(f["j"])(t); return t.length !== n.length && Object(f["o"])(), n }, getNodeState: function () { var e = this.expanded; return this.isLeaf2() ? null : e ? g : y }, isLeaf2: function () { var e = this.isLeaf, t = this.loaded, n = this.vcTree.loadData, r = 0 !== this.getNodeChildren().length; return !1 !== e && (e || !n && !r || n && t && !r) }, isDisabled: function () { var e = this.disabled, t = this.vcTree.disabled; return !1 !== e && !(!t && !e) }, isCheckable: function () { var e = this.$props.checkable, t = this.vcTree.checkable; return !(!t || !1 === e) && t }, syncLoadData: function (e) { var t = e.expanded, n = e.loading, r = e.loaded, i = this.vcTree, o = i.loadData, a = i.onNodeLoad; if (!n && o && t && !this.isLeaf2()) { var s = 0 !== this.getNodeChildren().length; s || r || a(this) } }, isSelectable: function () { var e = this.selectable, t = this.vcTree.selectable; return "boolean" === typeof e ? e : t }, renderSwitcher: function () { var e = this.$createElement, t = this.expanded, n = this.vcTree.prefixCls, r = Object(d["g"])(this, "switcherIcon", {}, !1) || Object(d["g"])(this.vcTree, "switcherIcon", {}, !1); if (this.isLeaf2()) return e("span", { key: "switcher", class: h()(n + "-switcher", n + "-switcher-noop") }, ["function" === typeof r ? r(c()({}, this.$props, this.$props.dataRef, { isLeaf: !0 })) : r]); var i = h()(n + "-switcher", n + "-switcher_" + (t ? g : y)); return e("span", { key: "switcher", on: { click: this.onExpand }, class: i }, ["function" === typeof r ? r(c()({}, this.$props, this.$props.dataRef, { isLeaf: !1 })) : r]) }, renderCheckbox: function () { var e = this.$createElement, t = this.checked, n = this.halfChecked, r = this.disableCheckbox, i = this.vcTree.prefixCls, o = this.isDisabled(), a = this.isCheckable(); if (!a) return null; var s = "boolean" !== typeof a ? a : null; return e("span", { key: "checkbox", class: h()(i + "-checkbox", t && i + "-checkbox-checked", !t && n && i + "-checkbox-indeterminate", (o || r) && i + "-checkbox-disabled"), on: { click: this.onCheck } }, [s]) }, renderIcon: function () { var e = this.$createElement, t = this.loading, n = this.vcTree.prefixCls; return e("span", { key: "icon", class: h()(n + "-iconEle", n + "-icon__" + (this.getNodeState() || "docu"), t && n + "-icon_loading") }) }, renderSelector: function (e) { var t = this.selected, n = this.loading, r = this.dragNodeHighlight, i = Object(d["g"])(this, "icon", {}, !1), o = this.vcTree, a = o.prefixCls, s = o.showIcon, l = o.icon, u = o.draggable, f = o.loadData, p = this.isDisabled(), v = Object(d["g"])(this, "title", {}, !1), g = a + "-node-content-wrapper", y = void 0; if (s) { var x = i || l; y = x ? e("span", { class: h()(a + "-iconEle", a + "-icon__customize") }, ["function" === typeof x ? x(c()({}, this.$props, this.$props.dataRef), e) : x]) : this.renderIcon() } else f && n && (y = this.renderIcon()); var w = v, _ = e("span", { class: a + "-title" }, w ? ["function" === typeof w ? w(c()({}, this.$props, this.$props.dataRef), e) : w] : [b]); return e("span", { key: "selector", ref: "selectHandle", attrs: { title: "string" === typeof v ? v : "", draggable: !p && u || void 0, "aria-grabbed": !p && u || void 0 }, class: h()("" + g, g + "-" + (this.getNodeState() || "normal"), !p && (t || r) && a + "-node-selected", !p && u && "draggable"), on: { mouseenter: this.onMouseEnter, mouseleave: this.onMouseLeave, contextmenu: this.onContextMenu, click: this.onSelectorClick, dblclick: this.onSelectorDoubleClick, dragstart: u ? this.onDragStart : m } }, [y, _]) }, renderChildren: function () { var e = this.$createElement, t = this.expanded, n = this.pos, r = this.vcTree, i = r.prefixCls, o = r.openTransitionName, s = r.openAnimation, l = r.renderTreeNode, u = {}; o ? u = Object(v["a"])(o) : "object" === ("undefined" === typeof s ? "undefined" : a()(s)) && (u = c()({}, s), u.props = c()({ css: !1 }, u.props)); var d = this.getNodeChildren(); if (0 === d.length) return null; var p = void 0; return t && (p = e("ul", { class: h()(i + "-child-tree", t && i + "-child-tree-open"), attrs: { "data-expanded": t, role: "group" } }, [Object(f["l"])(d, (function (e, t) { return l(e, t, n) }))])), e("transition", u, [p]) } }, render: function (e) { var t, n = this.$props, r = n.dragOver, o = n.dragOverGapTop, a = n.dragOverGapBottom, s = n.isLeaf, c = n.expanded, l = n.selected, u = n.checked, h = n.halfChecked, f = n.loading, d = this.vcTree, p = d.prefixCls, v = d.filterTreeNode, g = d.draggable, y = this.isDisabled(); return e("li", { class: (t = {}, i()(t, p + "-treenode-disabled", y), i()(t, p + "-treenode-switcher-" + (c ? "open" : "close"), !s), i()(t, p + "-treenode-checkbox-checked", u), i()(t, p + "-treenode-checkbox-indeterminate", h), i()(t, p + "-treenode-selected", l), i()(t, p + "-treenode-loading", f), i()(t, "drag-over", !y && r), i()(t, "drag-over-gap-top", !y && o), i()(t, "drag-over-gap-bottom", !y && a), i()(t, "filter-node", v && v(this)), t), attrs: { role: "treeitem" }, on: { dragenter: g ? this.onDragEnter : m, dragover: g ? this.onDragOver : m, dragleave: g ? this.onDragLeave : m, drop: g ? this.onDrop : m, dragend: g ? this.onDragEnd : m } }, [this.renderSwitcher(), this.renderCheckbox(), this.renderSelector(e), this.renderChildren()]) }, isTreeNode: 1 }; t["a"] = x }, cdd8: function (e, t, n) { e.exports = n("a9b9") }, ce10: function (e, t, n) { var r = n("69a8"), i = n("6821"), o = n("c366")(!1), a = n("613b")("IE_PROTO"); e.exports = function (e, t) { var n, s = i(e), c = 0, l = []; for (n in s) n != a && r(s, n) && l.push(n); while (t.length > c) r(s, n = t[c++]) && (~o(l, n) || l.push(n)); return l } }, ce86: function (e, t, n) { var r = n("9e69"), i = n("7948"), o = n("6747"), a = n("ffd6"), s = 1 / 0, c = r ? r.prototype : void 0, l = c ? c.toString : void 0; function u(e) { if ("string" == typeof e) return e; if (o(e)) return i(e, u) + ""; if (a(e)) return l ? l.call(e) : ""; var t = e + ""; return "0" == t && 1 / e == -s ? "-0" : t } e.exports = u }, cebd: function (e, t) { function n(e) { var t = -1, n = Array(e.size); return e.forEach((function (e) { n[++t] = [e, e] })), n } e.exports = n }, cecd: function (e, t) { e.exports = function (e, t) { if (e.indexOf) return e.indexOf(t); for (var n = 0; n < e.length; ++n)if (e[n] === t) return n; return -1 } }, cf1e: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { words: { ss: ["sekunda", "sekunde", "sekundi"], m: ["jedan minut", "jedne minute"], mm: ["minut", "minute", "minuta"], h: ["jedan sat", "jednog sata"], hh: ["sat", "sata", "sati"], dd: ["dan", "dana", "dana"], MM: ["mesec", "meseca", "meseci"], yy: ["godina", "godine", "godina"] }, correctGrammaticalCase: function (e, t) { return 1 === e ? t[0] : e >= 2 && e <= 4 ? t[1] : t[2] }, translate: function (e, n, r) { var i = t.words[r]; return 1 === r.length ? n ? i[0] : i[1] : e + " " + t.correctGrammaticalCase(e, i) } }, n = e.defineLocale("sr", { months: "januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"), monthsShort: "jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"), monthsParseExact: !0, weekdays: "nedelja_ponedeljak_utorak_sreda_膷etvrtak_petak_subota".split("_"), weekdaysShort: "ned._pon._uto._sre._膷et._pet._sub.".split("_"), weekdaysMin: "ne_po_ut_sr_膷e_pe_su".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd, D. MMMM YYYY H:mm" }, calendar: { sameDay: "[danas u] LT", nextDay: "[sutra u] LT", nextWeek: function () { switch (this.day()) { case 0: return "[u] [nedelju] [u] LT"; case 3: return "[u] [sredu] [u] LT"; case 6: return "[u] [subotu] [u] LT"; case 1: case 2: case 4: case 5: return "[u] dddd [u] LT" } }, lastDay: "[ju膷e u] LT", lastWeek: function () { var e = ["[pro拧le] [nedelje] [u] LT", "[pro拧log] [ponedeljka] [u] LT", "[pro拧log] [utorka] [u] LT", "[pro拧le] [srede] [u] LT", "[pro拧log] [膷etvrtka] [u] LT", "[pro拧log] [petka] [u] LT", "[pro拧le] [subote] [u] LT"]; return e[this.day()] }, sameElse: "L" }, relativeTime: { future: "za %s", past: "pre %s", s: "nekoliko sekundi", ss: t.translate, m: t.translate, mm: t.translate, h: t.translate, hh: t.translate, d: "dan", dd: t.translate, M: "mesec", MM: t.translate, y: "godinu", yy: t.translate }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 7 } }); return n
+                    }))
+                }, cf51: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("tzl", { months: "Januar_Fevraglh_Mar莽_Avr茂u_Mai_G眉n_Julia_Guscht_Setemvar_Listop盲ts_Noemvar_Zecemvar".split("_"), monthsShort: "Jan_Fev_Mar_Avr_Mai_G眉n_Jul_Gus_Set_Lis_Noe_Zec".split("_"), weekdays: "S煤ladi_L煤ne莽i_Maitzi_M谩rcuri_Xh煤adi_Vi茅ner莽i_S谩turi".split("_"), weekdaysShort: "S煤l_L煤n_Mai_M谩r_Xh煤_Vi茅_S谩t".split("_"), weekdaysMin: "S煤_L煤_Ma_M谩_Xh_Vi_S谩".split("_"), longDateFormat: { LT: "HH.mm", LTS: "HH.mm.ss", L: "DD.MM.YYYY", LL: "D. MMMM [dallas] YYYY", LLL: "D. MMMM [dallas] YYYY HH.mm", LLLL: "dddd, [li] D. MMMM [dallas] YYYY HH.mm" }, meridiemParse: /d\'o|d\'a/i, isPM: function (e) { return "d'o" === e.toLowerCase() }, meridiem: function (e, t, n) { return e > 11 ? n ? "d'o" : "D'O" : n ? "d'a" : "D'A" }, calendar: { sameDay: "[oxhi 脿] LT", nextDay: "[dem脿 脿] LT", nextWeek: "dddd [脿] LT", lastDay: "[ieiri 脿] LT", lastWeek: "[s眉r el] dddd [lasteu 脿] LT", sameElse: "L" }, relativeTime: { future: "osprei %s", past: "ja%s", s: n, ss: n, m: n, mm: n, h: n, hh: n, d: n, dd: n, M: n, MM: n, y: n, yy: n }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); function n(e, t, n, r) { var i = { s: ["viensas secunds", "'iensas secunds"], ss: [e + " secunds", e + " secunds"], m: ["'n m铆ut", "'iens m铆ut"], mm: [e + " m铆uts", e + " m铆uts"], h: ["'n 镁ora", "'iensa 镁ora"], hh: [e + " 镁oras", e + " 镁oras"], d: ["'n ziua", "'iensa ziua"], dd: [e + " ziuas", e + " ziuas"], M: ["'n mes", "'iens mes"], MM: [e + " mesen", e + " mesen"], y: ["'n ar", "'iens ar"], yy: [e + " ars", e + " ars"] }; return r || t ? i[n][0] : i[n][1] } return t
+                    }))
+                }, cf75: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = "pagh_wa鈥檁cha鈥檁wej_loS_vagh_jav_Soch_chorgh_Hut".split("_"); function n(e) { var t = e; return t = -1 !== e.indexOf("jaj") ? t.slice(0, -3) + "leS" : -1 !== e.indexOf("jar") ? t.slice(0, -3) + "waQ" : -1 !== e.indexOf("DIS") ? t.slice(0, -3) + "nem" : t + " pIq", t } function r(e) { var t = e; return t = -1 !== e.indexOf("jaj") ? t.slice(0, -3) + "Hu鈥�" : -1 !== e.indexOf("jar") ? t.slice(0, -3) + "wen" : -1 !== e.indexOf("DIS") ? t.slice(0, -3) + "ben" : t + " ret", t } function i(e, t, n, r) { var i = o(e); switch (n) { case "ss": return i + " lup"; case "mm": return i + " tup"; case "hh": return i + " rep"; case "dd": return i + " jaj"; case "MM": return i + " jar"; case "yy": return i + " DIS" } } function o(e) { var n = Math.floor(e % 1e3 / 100), r = Math.floor(e % 100 / 10), i = e % 10, o = ""; return n > 0 && (o += t[n] + "vatlh"), r > 0 && (o += ("" !== o ? " " : "") + t[r] + "maH"), i > 0 && (o += ("" !== o ? " " : "") + t[i]), "" === o ? "pagh" : o } var a = e.defineLocale("tlh", { months: "tera鈥� jar wa鈥檁tera鈥� jar cha鈥檁tera鈥� jar wej_tera鈥� jar loS_tera鈥� jar vagh_tera鈥� jar jav_tera鈥� jar Soch_tera鈥� jar chorgh_tera鈥� jar Hut_tera鈥� jar wa鈥檓aH_tera鈥� jar wa鈥檓aH wa鈥檁tera鈥� jar wa鈥檓aH cha鈥�".split("_"), monthsShort: "jar wa鈥檁jar cha鈥檁jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa鈥檓aH_jar wa鈥檓aH wa鈥檁jar wa鈥檓aH cha鈥�".split("_"), monthsParseExact: !0, weekdays: "lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"), weekdaysShort: "lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"), weekdaysMin: "lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[DaHjaj] LT", nextDay: "[wa鈥檒eS] LT", nextWeek: "LLL", lastDay: "[wa鈥橦u鈥橾 LT", lastWeek: "LLL", sameElse: "L" }, relativeTime: { future: n, past: r, s: "puS lup", ss: i, m: "wa鈥� tup", mm: i, h: "wa鈥� rep", hh: i, d: "wa鈥� jaj", dd: i, M: "wa鈥� jar", MM: i, y: "wa鈥� DIS", yy: i }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return a
+                    }))
+                }, d02c: function (e, t, n) { var r = n("5e2e"), i = n("79bc"), o = n("7b83"), a = 200; function s(e, t) { var n = this.__data__; if (n instanceof r) { var s = n.__data__; if (!i || s.length < a - 1) return s.push([e, t]), this.size = ++n.size, this; n = this.__data__ = new o(s) } return n.set(e, t), this.size = n.size, this } e.exports = s }, d26a: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "嗉�", 2: "嗉�", 3: "嗉�", 4: "嗉�", 5: "嗉�", 6: "嗉�", 7: "嗉�", 8: "嗉�", 9: "嗉�", 0: "嗉�" }, n = { "嗉�": "1", "嗉�": "2", "嗉�": "3", "嗉�": "4", "嗉�": "5", "嗉�": "6", "嗉�": "7", "嗉�": "8", "嗉�": "9", "嗉�": "0" }, r = e.defineLocale("bo", { months: "嘟熰境嗉嬥綎嗉嬥綉嘟勦紜嘟斷郊_嘟熰境嗉嬥綎嗉嬥絺嘟夃讲嘟︵紜嘟擾嘟熰境嗉嬥綎嗉嬥絺嘟︵酱嘟樴紜嘟擾嘟熰境嗉嬥綎嗉嬥綎嘟炧讲嗉嬥綌_嘟熰境嗉嬥綎嗉嬥剑嗑斷紜嘟擾嘟熰境嗉嬥綎嗉嬥綉嗑侧酱嘟傕紜嘟擾嘟熰境嗉嬥綎嗉嬥綎嘟戉酱嘟撪紜嘟擾嘟熰境嗉嬥綎嗉嬥綎嘟⑧緬嗑编綉嗉嬥綌_嘟熰境嗉嬥綎嗉嬥綉嘟傕酱嗉嬥綌_嘟熰境嗉嬥綎嗉嬥綎嘟呧酱嗉嬥綌_嘟熰境嗉嬥綎嗉嬥綎嘟呧酱嗉嬥絺嘟呧讲嘟傕紜嘟擾嘟熰境嗉嬥綎嗉嬥綎嘟呧酱嗉嬥絺嘟夃讲嘟︵紜嘟�".split("_"), monthsShort: "嘟熰境嗉�1_嘟熰境嗉�2_嘟熰境嗉�3_嘟熰境嗉�4_嘟熰境嗉�5_嘟熰境嗉�6_嘟熰境嗉�7_嘟熰境嗉�8_嘟熰境嗉�9_嘟熰境嗉�10_嘟熰境嗉�11_嘟熰境嗉�12".split("_"), monthsShortRegex: /^(嘟熰境嗉媆d{1,2})/, monthsParseExact: !0, weekdays: "嘟傕綗嘟犩紜嘟夃讲嗉嬥綐嗉媉嘟傕綗嘟犩紜嘟熰境嗉嬥綎嗉媉嘟傕綗嘟犩紜嘟樴讲嘟傕紜嘟戉綐嘟⑧紜_嘟傕綗嘟犩紜嘟`痉嘟傕紜嘟斷紜_嘟傕綗嘟犩紜嘟曕酱嘟⑧紜嘟栢酱_嘟傕綗嘟犩紜嘟斷紜嘟︵絼嘟︵紜_嘟傕綗嘟犩紜嘟︵兢嘟亨綋嗉嬥綌嗉�".split("_"), weekdaysShort: "嘟夃讲嗉嬥綐嗉媉嘟熰境嗉嬥綎嗉媉嘟樴讲嘟傕紜嘟戉綐嘟⑧紜_嘟`痉嘟傕紜嘟斷紜_嘟曕酱嘟⑧紜嘟栢酱_嘟斷紜嘟︵絼嘟︵紜_嘟︵兢嘟亨綋嗉嬥綌嗉�".split("_"), weekdaysMin: "嘟夃讲_嘟熰境_嘟樴讲嘟俖嘟`痉嘟俖嘟曕酱嘟嘟︵絼嘟嘟︵兢嘟亨綋".split("_"), longDateFormat: { LT: "A h:mm", LTS: "A h:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm", LLLL: "dddd, D MMMM YYYY, A h:mm" }, calendar: { sameDay: "[嘟戉讲嗉嬥舰嘟侧絼] LT", nextDay: "[嘟︵絼嗉嬥綁嘟侧綋] LT", nextWeek: "[嘟栢綉嘟脆綋嗉嬥綍嗑侧絺嗉嬥舰嗑椸胶嘟︵紜嘟榏, LT", lastDay: "[嘟佮紜嘟︵絼] LT", lastWeek: "[嘟栢綉嘟脆綋嗉嬥綍嗑侧絺嗉嬥綐嘟愢綘嗉嬥綐] dddd, LT", sameElse: "L" }, relativeTime: { future: "%s 嘟`紜", past: "%s 嘟︵緮嘟撪紜嘟�", s: "嘟`綐嗉嬥溅嘟�", ss: "%d 嘟︵緪嘟⑧紜嘟嗋紞", m: "嘟︵緪嘟⑧紜嘟樴紜嘟傕絽嘟侧絺", mm: "%d 嘟︵緪嘟⑧紜嘟�", h: "嘟嗋酱嗉嬥綒嘟监綉嗉嬥絺嘟呧讲嘟�", hh: "%d 嘟嗋酱嗉嬥綒嘟监綉", d: "嘟夃讲嘟撪紜嘟傕絽嘟侧絺", dd: "%d 嘟夃讲嘟撪紜", M: "嘟熰境嗉嬥綎嗉嬥絺嘟呧讲嘟�", MM: "%d 嘟熰境嗉嬥綎", y: "嘟`郊嗉嬥絺嘟呧讲嘟�", yy: "%d 嘟`郊" }, preparse: function (e) { return e.replace(/[嗉∴饥嗉`激嗉ム鸡嗉о绩嗉┼紶]/g, (function (e) { return n[e] })) }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })) }, meridiemParse: /嘟樴綒嘟撪紜嘟樴郊|嘟炧郊嘟傕溅嗉嬥絸嘟嘟夃讲嘟撪紜嘟傕酱嘟剕嘟戉絺嘟监絼嗉嬥綉嘟倈嘟樴綒嘟撪紜嘟樴郊/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "嘟樴綒嘟撪紜嘟樴郊" === t && e >= 4 || "嘟夃讲嘟撪紜嘟傕酱嘟�" === t && e < 5 || "嘟戉絺嘟监絼嗉嬥綉嘟�" === t ? e + 12 : e }, meridiem: function (e, t, n) { return e < 4 ? "嘟樴綒嘟撪紜嘟樴郊" : e < 10 ? "嘟炧郊嘟傕溅嗉嬥絸嘟�" : e < 17 ? "嘟夃讲嘟撪紜嘟傕酱嘟�" : e < 20 ? "嘟戉絺嘟监絼嗉嬥綉嘟�" : "嘟樴綒嘟撪紜嘟樴郊" }, week: { dow: 0, doy: 6 } }); return r
+                    }))
+                }, d2c8: function (e, t, n) { var r = n("aae3"), i = n("be13"); e.exports = function (e, t, n) { if (r(t)) throw TypeError("String#" + n + " doesn't accept regex!"); return String(i(e)) } }, d2d4: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("pt-br", { months: "janeiro_fevereiro_mar莽o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"), monthsShort: "jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"), weekdays: "domingo_segunda-feira_ter莽a-feira_quarta-feira_quinta-feira_sexta-feira_s谩bado".split("_"), weekdaysShort: "dom_seg_ter_qua_qui_sex_s谩b".split("_"), weekdaysMin: "do_2陋_3陋_4陋_5陋_6陋_s谩".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY [脿s] HH:mm", LLLL: "dddd, D [de] MMMM [de] YYYY [脿s] HH:mm" }, calendar: { sameDay: "[Hoje 脿s] LT", nextDay: "[Amanh茫 脿s] LT", nextWeek: "dddd [脿s] LT", lastDay: "[Ontem 脿s] LT", lastWeek: function () { return 0 === this.day() || 6 === this.day() ? "[脷ltimo] dddd [脿s] LT" : "[脷ltima] dddd [脿s] LT" }, sameElse: "L" }, relativeTime: { future: "em %s", past: "h谩 %s", s: "poucos segundos", ss: "%d segundos", m: "um minuto", mm: "%d minutos", h: "uma hora", hh: "%d horas", d: "um dia", dd: "%d dias", M: "um m锚s", MM: "%d meses", y: "um ano", yy: "%d anos" }, dayOfMonthOrdinalParse: /\d{1,2}潞/, ordinal: "%d潞" }); return t
+                    }))
+                }, d2d5: function (e, t, n) { n("1654"), n("549b"), e.exports = n("584a").Array.from }, d327: function (e, t) { function n() { return [] } e.exports = n }, d370: function (e, t, n) { var r = n("253c"), i = n("1310"), o = Object.prototype, a = o.hasOwnProperty, s = o.propertyIsEnumerable, c = r(function () { return arguments }()) ? r : function (e) { return i(e) && a.call(e, "callee") && !s.call(e, "callee") }; e.exports = c }, d3f4: function (e, t) { e.exports = function (e) { return "object" === typeof e ? null !== e : "function" === typeof e } }, d41d: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return c })), n.d(t, "b", (function () { return l })); var r = ["moz", "ms", "webkit"]; function i() { var e = 0; return function (t) { var n = (new Date).getTime(), r = Math.max(0, 16 - (n - e)), i = window.setTimeout((function () { t(n + r) }), r); return e = n + r, i } } function o() { if ("undefined" === typeof window) return function () { }; if (window.requestAnimationFrame) return window.requestAnimationFrame.bind(window); var e = r.filter((function (e) { return e + "RequestAnimationFrame" in window }))[0]; return e ? window[e + "RequestAnimationFrame"] : i() } function a(e) { if ("undefined" === typeof window) return null; if (window.cancelAnimationFrame) return window.cancelAnimationFrame(e); var t = r.filter((function (e) { return e + "CancelAnimationFrame" in window || e + "CancelRequestAnimationFrame" in window }))[0]; return t ? (window[t + "CancelAnimationFrame"] || window[t + "CancelRequestAnimationFrame"]).call(this, e) : clearTimeout(e) } var s = o(), c = function (e) { return a(e.id) }, l = function (e, t) { var n = Date.now(); function r() { Date.now() - n >= t ? e.call() : i.id = s(r) } var i = { id: s(r) }; return i } }, d53b: function (e, t) { e.exports = function (e, t) { return { value: t, done: !!e } } }, d612: function (e, t, n) { var r = n("7b83"), i = n("7ed2"), o = n("dc0f"); function a(e) { var t = -1, n = null == e ? 0 : e.length; this.__data__ = new r; while (++t < n) this.add(e[t]) } a.prototype.add = a.prototype.push = i, a.prototype.has = o, e.exports = a }, d69a: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("fil", { months: "Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"), monthsShort: "Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"), weekdays: "Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"), weekdaysShort: "Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"), weekdaysMin: "Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "MM/D/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY HH:mm", LLLL: "dddd, MMMM DD, YYYY HH:mm" }, calendar: { sameDay: "LT [ngayong araw]", nextDay: "[Bukas ng] LT", nextWeek: "LT [sa susunod na] dddd", lastDay: "LT [kahapon]", lastWeek: "LT [noong nakaraang] dddd", sameElse: "L" }, relativeTime: { future: "sa loob ng %s", past: "%s ang nakalipas", s: "ilang segundo", ss: "%d segundo", m: "isang minuto", mm: "%d minuto", h: "isang oras", hh: "%d oras", d: "isang araw", dd: "%d araw", M: "isang buwan", MM: "%d buwan", y: "isang taon", yy: "%d taon" }, dayOfMonthOrdinalParse: /\d{1,2}/, ordinal: function (e) { return e }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, d6b6: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("hy-am", { months: { format: "瞻崭謧斩站铡謤斋_謨榨湛謤站铡謤斋_沾铡謤湛斋_铡蘸謤斋宅斋_沾铡盏斋战斋_瞻崭謧斩斋战斋_瞻崭謧宅斋战斋_謪眨崭战湛崭战斋_战榨蘸湛榨沾闸榨謤斋_瞻崭寨湛榨沾闸榨謤斋_斩崭盏榨沾闸榨謤斋_栅榨寨湛榨沾闸榨謤斋".split("_"), standalone: "瞻崭謧斩站铡謤_謨榨湛謤站铡謤_沾铡謤湛_铡蘸謤斋宅_沾铡盏斋战_瞻崭謧斩斋战_瞻崭謧宅斋战_謪眨崭战湛崭战_战榨蘸湛榨沾闸榨謤_瞻崭寨湛榨沾闸榨謤_斩崭盏榨沾闸榨謤_栅榨寨湛榨沾闸榨謤".split("_") }, monthsShort: "瞻斩站_謨湛謤_沾謤湛_铡蘸謤_沾盏战_瞻斩战_瞻宅战_謪眨战_战蘸湛_瞻寨湛_斩沾闸_栅寨湛".split("_"), weekdays: "寨斋謤铡寨斋_榨謤寨崭謧辗铡闸诈斋_榨謤榨謩辗铡闸诈斋_展崭謤榨謩辗铡闸诈斋_瞻斋斩眨辗铡闸诈斋_崭謧謤闸铡诈_辗铡闸铡诈".split("_"), weekdaysShort: "寨謤寨_榨謤寨_榨謤謩_展謤謩_瞻斩眨_崭謧謤闸_辗闸诈".split("_"), weekdaysMin: "寨謤寨_榨謤寨_榨謤謩_展謤謩_瞻斩眨_崭謧謤闸_辗闸诈".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY 诈.", LLL: "D MMMM YYYY 诈., HH:mm", LLLL: "dddd, D MMMM YYYY 诈., HH:mm" }, calendar: { sameDay: "[铡盏战謪謤] LT", nextDay: "[站铡詹炸] LT", lastDay: "[榨謤榨寨] LT", nextWeek: function () { return "dddd [謪謤炸 摘铡沾炸] LT" }, lastWeek: function () { return "[铡斩謥铡债] dddd [謪謤炸 摘铡沾炸] LT" }, sameElse: "L" }, relativeTime: { future: "%s 瞻榨湛崭", past: "%s 铡占铡栈", s: "沾斋 謩铡斩斋 站铡盏謤寨盏铡斩", ss: "%d 站铡盏謤寨盏铡斩", m: "謤崭蘸榨", mm: "%d 謤崭蘸榨", h: "摘铡沾", hh: "%d 摘铡沾", d: "謪謤", dd: "%d 謪謤", M: "铡沾斋战", MM: "%d 铡沾斋战", y: "湛铡謤斋", yy: "%d 湛铡謤斋" }, meridiemParse: /眨斋辗榨謤站铡|铡占铡站崭湛站铡|謥榨謤榨寨站铡|榨謤榨寨崭盏铡斩/, isPM: function (e) { return /^(謥榨謤榨寨站铡|榨謤榨寨崭盏铡斩)$/.test(e) }, meridiem: function (e) { return e < 4 ? "眨斋辗榨謤站铡" : e < 12 ? "铡占铡站崭湛站铡" : e < 17 ? "謥榨謤榨寨站铡" : "榨謤榨寨崭盏铡斩" }, dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(斋斩|謤栅)/, ordinal: function (e, t) { switch (t) { case "DDD": case "w": case "W": case "DDDo": return 1 === e ? e + "-斋斩" : e + "-謤栅"; default: return e } }, week: { dow: 1, doy: 7 } }); return t
+                    }))
+                }, d6dd: function (e, t, n) { e.exports = n("c30c") }, d716: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("ca", { months: { standalone: "gener_febrer_mar莽_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"), format: "de gener_de febrer_de mar莽_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"), isFormat: /D[oD]?(\s)+MMMM/ }, monthsShort: "gen._febr._mar莽_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"), monthsParseExact: !0, weekdays: "diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"), weekdaysShort: "dg._dl._dt._dc._dj._dv._ds.".split("_"), weekdaysMin: "dg_dl_dt_dc_dj_dv_ds".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM [de] YYYY", ll: "D MMM YYYY", LLL: "D MMMM [de] YYYY [a les] H:mm", lll: "D MMM YYYY, H:mm", LLLL: "dddd D MMMM [de] YYYY [a les] H:mm", llll: "ddd D MMM YYYY, H:mm" }, calendar: { sameDay: function () { return "[avui a " + (1 !== this.hours() ? "les" : "la") + "] LT" }, nextDay: function () { return "[dem脿 a " + (1 !== this.hours() ? "les" : "la") + "] LT" }, nextWeek: function () { return "dddd [a " + (1 !== this.hours() ? "les" : "la") + "] LT" }, lastDay: function () { return "[ahir a " + (1 !== this.hours() ? "les" : "la") + "] LT" }, lastWeek: function () { return "[el] dddd [passat a " + (1 !== this.hours() ? "les" : "la") + "] LT" }, sameElse: "L" }, relativeTime: { future: "d'aqu铆 %s", past: "fa %s", s: "uns segons", ss: "%d segons", m: "un minut", mm: "%d minuts", h: "una hora", hh: "%d hores", d: "un dia", dd: "%d dies", M: "un mes", MM: "%d mesos", y: "un any", yy: "%d anys" }, dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|猫|a)/, ordinal: function (e, t) { var n = 1 === e ? "r" : 2 === e ? "n" : 3 === e ? "r" : 4 === e ? "t" : "猫"; return "w" !== t && "W" !== t || (n = "a"), e + n }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, d7ee: function (e, t, n) { var r = n("c3fc"), i = n("b047f"), o = n("99d3"), a = o && o.isSet, s = a ? i(a) : r; e.exports = s }, d864: function (e, t, n) { var r = n("79aa"); e.exports = function (e, t, n) { if (r(e), void 0 === t) return e; switch (n) { case 1: return function (n) { return e.call(t, n) }; case 2: return function (n, r) { return e.call(t, n, r) }; case 3: return function (n, r, i) { return e.call(t, n, r, i) } }return function () { return e.apply(t, arguments) } } }, d8d6: function (e, t, n) { n("1654"), n("6c1c"), e.exports = n("ccb9").f("iterator") }, d8e8: function (e, t) { e.exports = function (e) { if ("function" != typeof e) throw TypeError(e + " is not a function!"); return e } }, d96e: function (e, t, n) { "use strict"; var r = !1, i = function () { }; if (r) { var o = function (e, t) { var n = arguments.length; t = new Array(n > 1 ? n - 1 : 0); for (var r = 1; r < n; r++)t[r - 1] = arguments[r]; var i = 0, o = "Warning: " + e.replace(/%s/g, (function () { return t[i++] })); "undefined" !== typeof console && console.error(o); try { throw new Error(o) } catch (a) { } }; i = function (e, t, n) { var r = arguments.length; n = new Array(r > 2 ? r - 2 : 0); for (var i = 2; i < r; i++)n[i - 2] = arguments[i]; if (void 0 === t) throw new Error("`warning(condition, format, ...args)` requires a warning message argument"); e || o.apply(null, [t].concat(n)) } } e.exports = i }, d9a8: function (e, t) { function n(e) { return e !== e } e.exports = n }, d9f6: function (e, t, n) { var r = n("e4ae"), i = n("794b"), o = n("1bc3"), a = Object.defineProperty; t.f = n("8e60") ? Object.defineProperty : function (e, t, n) { if (r(e), t = o(t, !0), r(n), i) try { return a(e, t, n) } catch (s) { } if ("get" in n || "set" in n) throw TypeError("Accessors not supported!"); return "value" in n && (e[t] = n.value), e } }, d9f8: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("fr-ca", { months: "janvier_f茅vrier_mars_avril_mai_juin_juillet_ao没t_septembre_octobre_novembre_d茅cembre".split("_"), monthsShort: "janv._f茅vr._mars_avr._mai_juin_juil._ao没t_sept._oct._nov._d茅c.".split("_"), monthsParseExact: !0, weekdays: "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), weekdaysShort: "dim._lun._mar._mer._jeu._ven._sam.".split("_"), weekdaysMin: "di_lu_ma_me_je_ve_sa".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY-MM-DD", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Aujourd鈥檋ui 脿] LT", nextDay: "[Demain 脿] LT", nextWeek: "dddd [脿] LT", lastDay: "[Hier 脿] LT", lastWeek: "dddd [dernier 脿] LT", sameElse: "L" }, relativeTime: { future: "dans %s", past: "il y a %s", s: "quelques secondes", ss: "%d secondes", m: "une minute", mm: "%d minutes", h: "une heure", hh: "%d heures", d: "un jour", dd: "%d jours", M: "un mois", MM: "%d mois", y: "un an", yy: "%d ans" }, dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, ordinal: function (e, t) { switch (t) { default: case "M": case "Q": case "D": case "DDD": case "d": return e + (1 === e ? "er" : "e"); case "w": case "W": return e + (1 === e ? "re" : "e") } } }); return t
+                    }))
+                }, da03: function (e, t, n) { var r = n("2b3e"), i = r["__core-js_shared__"]; e.exports = i }, daa3: function (e, t, n) { "use strict"; n.d(t, "i", (function () { return L })), n.d(t, "h", (function () { return j })), n.d(t, "k", (function () { return z })), n.d(t, "f", (function () { return E })), n.d(t, "q", (function () { return P })), n.d(t, "u", (function () { return D })), n.d(t, "c", (function () { return H })), n.d(t, "w", (function () { return I })), n.d(t, "s", (function () { return g })), n.d(t, "l", (function () { return M })), n.d(t, "g", (function () { return O })), n.d(t, "o", (function () { return C })), n.d(t, "m", (function () { return k })), n.d(t, "j", (function () { return A })), n.d(t, "e", (function () { return T })), n.d(t, "r", (function () { return S })), n.d(t, "x", (function () { return m })), n.d(t, "t", (function () { return V })), n.d(t, "v", (function () { return N })), n.d(t, "a", (function () { return v })), n.d(t, "p", (function () { return x })), n.d(t, "n", (function () { return w })), n.d(t, "d", (function () { return _ })); var r = n("1098"), i = n.n(r), o = n("b24f"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("60ed"), u = n.n(l), h = n("4d26"), f = n.n(h); function d(e) { var t = e && e.toString().match(/^\s*function (\w+)/); return t ? t[1] : "" } var p = /-(\w)/g, v = function (e) { return e.replace(p, (function (e, t) { return t ? t.toUpperCase() : "" })) }, m = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", t = arguments[1], n = {}, r = /;(?![^(]*\))/g, i = /:(.+)/; return e.split(r).forEach((function (e) { if (e) { var r = e.split(i); if (r.length > 1) { var o = t ? v(r[0].trim()) : r[0].trim(); n[o] = r[1].trim() } } })), n }, g = function (e, t) { var n = e.$options || {}, r = n.propsData || {}; return t in r }, y = function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = {}; return Object.keys(e).forEach((function (r) { (r in t || void 0 !== e[r]) && (n[r] = e[r]) })), n }, b = function (e) { return e.data && e.data.scopedSlots || {} }, x = function (e) { var t = e.componentOptions || {}; e.$vnode && (t = e.$vnode.componentOptions || {}); var n = e.children || t.children || [], r = {}; return n.forEach((function (e) { if (!D(e)) { var t = e.data && e.data.slot || "default"; r[t] = r[t] || [], r[t].push(e) } })), c()({}, r, b(e)) }, w = function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "default", n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; return e.$scopedSlots && e.$scopedSlots[t] && e.$scopedSlots[t](n) || e.$slots[t] || [] }, _ = function (e) { var t = e.componentOptions || {}; return e.$vnode && (t = e.$vnode.componentOptions || {}), e.children || t.children || [] }, C = function (e) { if (e.fnOptions) return e.fnOptions; var t = e.componentOptions; return e.$vnode && (t = e.$vnode.componentOptions), t && t.Ctor.options || {} }, M = function (e) { if (e.componentOptions) { var t = e.componentOptions, n = t.propsData, r = void 0 === n ? {} : n, i = t.Ctor, o = void 0 === i ? {} : i, s = (o.options || {}).props || {}, l = {}, u = !0, h = !1, f = void 0; try { for (var p, v = Object.entries(s)[Symbol.iterator](); !(u = (p = v.next()).done); u = !0) { var m = p.value, g = a()(m, 2), b = g[0], x = g[1], w = x["default"]; void 0 !== w && (l[b] = "function" === typeof w && "Function" !== d(x.type) ? w.call(e) : w) } } catch (k) { h = !0, f = k } finally { try { !u && v["return"] && v["return"]() } finally { if (h) throw f } } return c()({}, l, r) } var _ = e.$options, C = void 0 === _ ? {} : _, M = e.$props, O = void 0 === M ? {} : M; return y(O, C.propsData) }, O = function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : e, r = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3]; if (e.$createElement) { var i = e.$createElement, o = e[t]; return void 0 !== o ? "function" === typeof o && r ? o(i, n) : o : e.$scopedSlots[t] && r && e.$scopedSlots[t](n) || e.$scopedSlots[t] || e.$slots[t] || void 0 } var a = e.context.$createElement, s = k(e)[t]; if (void 0 !== s) return "function" === typeof s && r ? s(a, n) : s; var c = b(e)[t]; if (void 0 !== c) return "function" === typeof c && r ? c(a, n) : c; var l = [], u = e.componentOptions || {}; return (u.children || []).forEach((function (e) { e.data && e.data.slot === t && (e.data.attrs && delete e.data.attrs.slot, "template" === e.tag ? l.push(e.children) : l.push(e)) })), l.length ? l : void 0 }, k = function (e) { var t = e.componentOptions; return e.$vnode && (t = e.$vnode.componentOptions), t && t.propsData || {} }, S = function (e, t) { return k(e)[t] }, T = function (e) { var t = e.data; return e.$vnode && (t = e.$vnode.data), t && t.attrs || {} }, A = function (e) { var t = e.key; return e.$vnode && (t = e.$vnode.key), t }; function L(e) { var t = {}; return e.componentOptions && e.componentOptions.listeners ? t = e.componentOptions.listeners : e.data && e.data.on && (t = e.data.on), c()({}, t) } function j(e) { var t = {}; return e.data && e.data.on && (t = e.data.on), c()({}, t) } function z(e) { return (e.$vnode ? e.$vnode.componentOptions.listeners : e.$listeners) || {} } function E(e) { var t = {}; e.data ? t = e.data : e.$vnode && e.$vnode.data && (t = e.$vnode.data); var n = t["class"] || {}, r = t.staticClass, i = {}; return r && r.split(" ").forEach((function (e) { i[e.trim()] = !0 })), "string" === typeof n ? n.split(" ").forEach((function (e) { i[e.trim()] = !0 })) : Array.isArray(n) ? f()(n).split(" ").forEach((function (e) { i[e.trim()] = !0 })) : i = c()({}, i, n), i } function P(e, t) { var n = {}; e.data ? n = e.data : e.$vnode && e.$vnode.data && (n = e.$vnode.data); var r = n.style || n.staticStyle; if ("string" === typeof r) r = m(r, t); else if (t && r) { var i = {}; return Object.keys(r).forEach((function (e) { return i[v(e)] = r[e] })), i } return r } function D(e) { return !(e.tag || e.text && "" !== e.text.trim()) } function H() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; return e.filter((function (e) { return !D(e) })) } var V = function (e, t) { return Object.keys(t).forEach((function (n) { if (!e[n]) throw new Error("not have " + n + " prop"); e[n].def && (e[n] = e[n].def(t[n])) })), e }; function I() { var e = [].slice.call(arguments, 0), t = {}; return e.forEach((function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = !0, r = !1, i = void 0; try { for (var o, s = Object.entries(e)[Symbol.iterator](); !(n = (o = s.next()).done); n = !0) { var l = o.value, h = a()(l, 2), f = h[0], d = h[1]; t[f] = t[f] || {}, u()(d) ? c()(t[f], d) : t[f] = d } } catch (p) { r = !0, i = p } finally { try { !n && s["return"] && s["return"]() } finally { if (r) throw i } } })), t } function N(e) { return e && "object" === ("undefined" === typeof e ? "undefined" : i()(e)) && "componentOptions" in e && "context" in e && void 0 !== e.tag } t["b"] = g }, db29: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"), n = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"), r = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i], i = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, o = e.defineLocale("nl-be", { months: "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"), monthsShort: function (e, r) { return e ? /-MMM-/.test(r) ? n[e.month()] : t[e.month()] : t }, monthsRegex: i, monthsShortRegex: i, monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, monthsParse: r, longMonthsParse: r, shortMonthsParse: r, weekdays: "zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"), weekdaysShort: "zo._ma._di._wo._do._vr._za.".split("_"), weekdaysMin: "zo_ma_di_wo_do_vr_za".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[vandaag om] LT", nextDay: "[morgen om] LT", nextWeek: "dddd [om] LT", lastDay: "[gisteren om] LT", lastWeek: "[afgelopen] dddd [om] LT", sameElse: "L" }, relativeTime: { future: "over %s", past: "%s geleden", s: "een paar seconden", ss: "%d seconden", m: "茅茅n minuut", mm: "%d minuten", h: "茅茅n uur", hh: "%d uur", d: "茅茅n dag", dd: "%d dagen", M: "茅茅n maand", MM: "%d maanden", y: "茅茅n jaar", yy: "%d jaar" }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, ordinal: function (e) { return e + (1 === e || 8 === e || e >= 20 ? "ste" : "de") }, week: { dow: 1, doy: 4 } }); return o
+                    }))
+                }, dbdb: function (e, t, n) { var r = n("584a"), i = n("e53d"), o = "__core-js_shared__", a = i[o] || (i[o] = {}); (e.exports = function (e, t) { return a[e] || (a[e] = void 0 !== t ? t : {}) })("versions", []).push({ version: r.version, mode: n("b8e3") ? "pure" : "global", copyright: "漏 2019 Denis Pushkarev (zloirock.ru)" }) }, dc0f: function (e, t) { function n(e) { return this.__data__.has(e) } e.exports = n }, dc4d: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "啷�", 2: "啷�", 3: "啷�", 4: "啷�", 5: "啷�", 6: "啷�", 7: "啷�", 8: "啷�", 9: "啷�", 0: "啷�" }, n = { "啷�": "1", "啷�": "2", "啷�": "3", "啷�": "4", "啷�": "5", "啷�": "6", "啷�": "7", "啷�": "8", "啷�": "9", "啷�": "0" }, r = e.defineLocale("hi", { months: "啶溹え啶掂ぐ啷�_啶ぜ啶班さ啶班_啶ぞ啶班啶歘啶呧お啷嵿ぐ啷堗げ_啶_啶溹啶╛啶溹啶侧ぞ啶坃啶呧啶膏啶啶膏た啶むぎ啷嵿が啶癬啶呧啷嵿啷傕が啶癬啶ㄠさ啶啶ぐ_啶︵た啶膏ぎ啷嵿が啶�".split("_"), monthsShort: "啶溹え._啶ぜ啶�._啶ぞ啶班啶歘啶呧お啷嵿ぐ啷�._啶_啶溹啶╛啶溹啶�._啶呧._啶膏た啶�._啶呧啷嵿啷�._啶ㄠさ._啶︵た啶�.".split("_"), monthsParseExact: !0, weekdays: "啶班さ啶苦さ啶距ぐ_啶膏啶さ啶距ぐ_啶啶椸げ啶掂ぞ啶癬啶啶оさ啶距ぐ_啶椸啶班啶掂ぞ啶癬啶多啶曕啶班さ啶距ぐ_啶多え啶苦さ啶距ぐ".split("_"), weekdaysShort: "啶班さ啶縚啶膏啶甠啶啶椸げ_啶啶啶椸啶班_啶多啶曕啶癬啶多え啶�".split("_"), weekdaysMin: "啶癬啶膏_啶_啶_啶椸_啶多_啶�".split("_"), longDateFormat: { LT: "A h:mm 啶啷�", LTS: "A h:mm:ss 啶啷�", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm 啶啷�", LLLL: "dddd, D MMMM YYYY, A h:mm 啶啷�" }, calendar: { sameDay: "[啶嗋] LT", nextDay: "[啶曕げ] LT", nextWeek: "dddd, LT", lastDay: "[啶曕げ] LT", lastWeek: "[啶た啶涏げ啷嘳 dddd, LT", sameElse: "L" }, relativeTime: { future: "%s 啶啶�", past: "%s 啶す啶侧", s: "啶曕啶� 啶灌 啶曕啶粪ぃ", ss: "%d 啶膏啶曕啶�", m: "啶忇 啶た啶ㄠ", mm: "%d 啶た啶ㄠ", h: "啶忇 啶樴啶熰ぞ", hh: "%d 啶樴啶熰", d: "啶忇 啶︵た啶�", dd: "%d 啶︵た啶�", M: "啶忇 啶す啷�啶ㄠ", MM: "%d 啶す啷�啶ㄠ", y: "啶忇 啶掂ぐ啷嵿し", yy: "%d 啶掂ぐ啷嵿し" }, preparse: function (e) { return e.replace(/[啷оエ啷┼オ啷ガ啷ギ啷ウ]/g, (function (e) { return n[e] })) }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })) }, meridiemParse: /啶班ぞ啶啶膏啶す|啶︵啶す啶皘啶多ぞ啶�/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "啶班ぞ啶�" === t ? e < 4 ? e : e + 12 : "啶膏啶す" === t ? e : "啶︵啶す啶�" === t ? e >= 10 ? e : e + 12 : "啶多ぞ啶�" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { return e < 4 ? "啶班ぞ啶�" : e < 10 ? "啶膏啶す" : e < 17 ? "啶︵啶す啶�" : e < 20 ? "啶多ぞ啶�" : "啶班ぞ啶�" }, week: { dow: 0, doy: 6 } }); return r
+                    }))
+                }, dc57: function (e, t) { var n = Function.prototype, r = n.toString; function i(e) { if (null != e) { try { return r.call(e) } catch (t) { } try { return e + "" } catch (t) { } } return "" } e.exports = i }, dcbc: function (e, t, n) { var r = n("2aba"); e.exports = function (e, t, n) { for (var i in t) r(e, i, t[i], n); return e } }, dcbe: function (e, t, n) { var r = n("30c9"), i = n("1310"); function o(e) { return i(e) && r(e) } e.exports = o }, dce5: function (e, t, n) { var r = n("32b3"), i = n("8eeb"), o = n("2ec1"), a = n("30c9"), s = n("eac5"), c = n("ec69"), l = Object.prototype, u = l.hasOwnProperty, h = o((function (e, t) { if (s(t) || a(t)) i(t, c(t), e); else for (var n in t) u.call(t, n) && r(e, n, t[n]) })); e.exports = h }, dd65: function (e, t, n) { var r = n("badf"), i = n("a0ac"), o = n("77c1"); function a(e, t) { return o(e, i(r(t))) } e.exports = a }, ded6: function (e, t, n) { }, df7c: function (e, t, n) { (function (e) { function n(e, t) { for (var n = 0, r = e.length - 1; r >= 0; r--) { var i = e[r]; "." === i ? e.splice(r, 1) : ".." === i ? (e.splice(r, 1), n++) : n && (e.splice(r, 1), n--) } if (t) for (; n--; n)e.unshift(".."); return e } function r(e) { "string" !== typeof e && (e += ""); var t, n = 0, r = -1, i = !0; for (t = e.length - 1; t >= 0; --t)if (47 === e.charCodeAt(t)) { if (!i) { n = t + 1; break } } else -1 === r && (i = !1, r = t + 1); return -1 === r ? "" : e.slice(n, r) } function i(e, t) { if (e.filter) return e.filter(t); for (var n = [], r = 0; r < e.length; r++)t(e[r], r, e) && n.push(e[r]); return n } t.resolve = function () { for (var t = "", r = !1, o = arguments.length - 1; o >= -1 && !r; o--) { var a = o >= 0 ? arguments[o] : e.cwd(); if ("string" !== typeof a) throw new TypeError("Arguments to path.resolve must be strings"); a && (t = a + "/" + t, r = "/" === a.charAt(0)) } return t = n(i(t.split("/"), (function (e) { return !!e })), !r).join("/"), (r ? "/" : "") + t || "." }, t.normalize = function (e) { var r = t.isAbsolute(e), a = "/" === o(e, -1); return e = n(i(e.split("/"), (function (e) { return !!e })), !r).join("/"), e || r || (e = "."), e && a && (e += "/"), (r ? "/" : "") + e }, t.isAbsolute = function (e) { return "/" === e.charAt(0) }, t.join = function () { var e = Array.prototype.slice.call(arguments, 0); return t.normalize(i(e, (function (e, t) { if ("string" !== typeof e) throw new TypeError("Arguments to path.join must be strings"); return e })).join("/")) }, t.relative = function (e, n) { function r(e) { for (var t = 0; t < e.length; t++)if ("" !== e[t]) break; for (var n = e.length - 1; n >= 0; n--)if ("" !== e[n]) break; return t > n ? [] : e.slice(t, n - t + 1) } e = t.resolve(e).substr(1), n = t.resolve(n).substr(1); for (var i = r(e.split("/")), o = r(n.split("/")), a = Math.min(i.length, o.length), s = a, c = 0; c < a; c++)if (i[c] !== o[c]) { s = c; break } var l = []; for (c = s; c < i.length; c++)l.push(".."); return l = l.concat(o.slice(s)), l.join("/") }, t.sep = "/", t.delimiter = ":", t.dirname = function (e) { if ("string" !== typeof e && (e += ""), 0 === e.length) return "."; for (var t = e.charCodeAt(0), n = 47 === t, r = -1, i = !0, o = e.length - 1; o >= 1; --o)if (t = e.charCodeAt(o), 47 === t) { if (!i) { r = o; break } } else i = !1; return -1 === r ? n ? "/" : "." : n && 1 === r ? "/" : e.slice(0, r) }, t.basename = function (e, t) { var n = r(e); return t && n.substr(-1 * t.length) === t && (n = n.substr(0, n.length - t.length)), n }, t.extname = function (e) { "string" !== typeof e && (e += ""); for (var t = -1, n = 0, r = -1, i = !0, o = 0, a = e.length - 1; a >= 0; --a) { var s = e.charCodeAt(a); if (47 !== s) -1 === r && (i = !1, r = a + 1), 46 === s ? -1 === t ? t = a : 1 !== o && (o = 1) : -1 !== t && (o = -1); else if (!i) { n = a + 1; break } } return -1 === t || -1 === r || 0 === o || 1 === o && t === r - 1 && t === n + 1 ? "" : e.slice(t, r) }; var o = "b" === "ab".substr(-1) ? function (e, t, n) { return e.substr(t, n) } : function (e, t, n) { return t < 0 && (t = e.length + t), e.substr(t, n) } }).call(this, n("4362")) }, e031: function (e, t, n) { var r = n("f909"), i = n("1a8c"); function o(e, t, n, a, s, c) { return i(e) && i(t) && (c.set(t, e), r(e, t, void 0, o, c), c["delete"](t)), e } e.exports = o }, e0b8: function (e, t, n) { "use strict"; var r = n("7726"), i = n("5ca1"), o = n("2aba"), a = n("dcbc"), s = n("67ab"), c = n("4a59"), l = n("f605"), u = n("d3f4"), h = n("79e5"), f = n("5cc5"), d = n("7f20"), p = n("5dbc"); e.exports = function (e, t, n, v, m, g) { var y = r[e], b = y, x = m ? "set" : "add", w = b && b.prototype, _ = {}, C = function (e) { var t = w[e]; o(w, e, "delete" == e || "has" == e ? function (e) { return !(g && !u(e)) && t.call(this, 0 === e ? 0 : e) } : "get" == e ? function (e) { return g && !u(e) ? void 0 : t.call(this, 0 === e ? 0 : e) } : "add" == e ? function (e) { return t.call(this, 0 === e ? 0 : e), this } : function (e, n) { return t.call(this, 0 === e ? 0 : e, n), this }) }; if ("function" == typeof b && (g || w.forEach && !h((function () { (new b).entries().next() })))) { var M = new b, O = M[x](g ? {} : -0, 1) != M, k = h((function () { M.has(1) })), S = f((function (e) { new b(e) })), T = !g && h((function () { var e = new b, t = 5; while (t--) e[x](t, t); return !e.has(-0) })); S || (b = t((function (t, n) { l(t, b, e); var r = p(new y, t, b); return void 0 != n && c(n, m, r[x], r), r })), b.prototype = w, w.constructor = b), (k || T) && (C("delete"), C("has"), m && C("get")), (T || O) && C(x), g && w.clear && delete w.clear } else b = v.getConstructor(t, e, m, x), a(b.prototype, n), s.NEED = !0; return d(b, e), _[e] = b, i(i.G + i.W + i.F * (b != y), _), g || v.setStrong(b, e, m), b } }, e0c5: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "喃�", 2: "喃�", 3: "喃�", 4: "喃�", 5: "喃�", 6: "喃�", 7: "喃�", 8: "喃�", 9: "喃�", 0: "喃�" }, n = { "喃�": "1", "喃�": "2", "喃�": "3", "喃�": "4", "喃�": "5", "喃�": "6", "喃�": "7", "喃�": "8", "喃�": "9", "喃�": "0" }, r = e.defineLocale("gu", { months: "嗒溹嗒ㄠ珝嗒珌嗒嗋喃�_嗒珖嗒珝嗒班珌嗒嗋喃�_嗒嗒班珝嗒歘嗒忇喃嵿嗒苦_嗒珖_嗒溹珎嗒╛嗒溹珌嗒侧嗒坃嗒戉獥嗒膏珝嗒焈嗒膏喃嵿獰喃囙喃嵿嗒癬嗒戉獣喃嵿獰喃嵿嗒癬嗒ㄠ喃囙喃嵿嗒癬嗒∴嗒膏珖嗒珝嗒".split("_"), monthsShort: "嗒溹嗒ㄠ珝嗒珌._嗒珖嗒珝嗒班珌._嗒嗒班珝嗒歘嗒忇喃嵿嗒�._嗒珖_嗒溹珎嗒╛嗒溹珌嗒侧._嗒戉獥._嗒膏喃嵿獰喃�._嗒戉獣喃嵿獰喃�._嗒ㄠ喃�._嗒∴嗒膏珖.".split("_"), monthsParseExact: !0, weekdays: "嗒班嗒苦嗒距_嗒膏珛嗒嗒距_嗒獋嗒椸嗒掂嗒癬嗒珌嗒о珝嗒掂嗒癬嗒椸珌嗒班珌嗒掂嗒癬嗒多珌嗒曕珝嗒班嗒距_嗒多嗒苦嗒距".split("_"), weekdaysShort: "嗒班嗒縚嗒膏珛嗒甠嗒獋嗒椸_嗒珌嗒о珝_嗒椸珌嗒班珌_嗒多珌嗒曕珝嗒癬嗒多嗒�".split("_"), weekdaysMin: "嗒癬嗒膏珛_嗒獋_嗒珌_嗒椸珌_嗒多珌_嗒�".split("_"), longDateFormat: { LT: "A h:mm 嗒掂嗒椸珝嗒珖", LTS: "A h:mm:ss 嗒掂嗒椸珝嗒珖", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm 嗒掂嗒椸珝嗒珖", LLLL: "dddd, D MMMM YYYY, A h:mm 嗒掂嗒椸珝嗒珖" }, calendar: { sameDay: "[嗒嗋獪] LT", nextDay: "[嗒曕嗒侧珖] LT", nextWeek: "dddd, LT", lastDay: "[嗒椸獓嗒曕嗒侧珖] LT", lastWeek: "[嗒嗒涏嗒綸 dddd, LT", sameElse: "L" }, relativeTime: { future: "%s 嗒", past: "%s 嗒喃囙嗒�", s: "嗒呧喃佮獣 嗒喃�", ss: "%d 嗒膏珖嗒曕獋嗒�", m: "嗒忇獣 嗒嗒ㄠ嗒�", mm: "%d 嗒嗒ㄠ嗒�", h: "嗒忇獣 嗒曕嗒距獣", hh: "%d 嗒曕嗒距獣", d: "嗒忇獣 嗒︵嗒掂", dd: "%d 嗒︵嗒掂", M: "嗒忇獣 嗒嗒苦喃�", MM: "%d 嗒嗒苦喃�", y: "嗒忇獣 嗒掂喃嵿", yy: "%d 嗒掂喃嵿" }, preparse: function (e) { return e.replace(/[喃о喃┼喃喃喃]/g, (function (e) { return n[e] })) }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })) }, meridiemParse: /嗒班嗒嗒喃嬥|嗒膏嗒距|嗒膏嗒傕獪/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "嗒班嗒�" === t ? e < 4 ? e : e + 12 : "嗒膏嗒距" === t ? e : "嗒喃嬥" === t ? e >= 10 ? e : e + 12 : "嗒膏嗒傕獪" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { return e < 4 ? "嗒班嗒�" : e < 10 ? "嗒膏嗒距" : e < 17 ? "嗒喃嬥" : e < 20 ? "嗒膏嗒傕獪" : "嗒班嗒�" }, week: { dow: 0, doy: 6 } }); return r
+                    }))
+                }, e0e7: function (e, t, n) { var r = n("60ed"); function i(e) { return r(e) ? void 0 : e } e.exports = i }, e11e: function (e, t) { e.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",") }, e1d3: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("en-ie", { months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" }, relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", ss: "%d seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (e) { var t = e % 10, n = 1 === ~~(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th"; return e + n }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, e24b: function (e, t, n) { var r = n("49f4"), i = n("1efc"), o = n("bbc0"), a = n("7a48"), s = n("2524"); function c(e) { var t = -1, n = null == e ? 0 : e.length; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } c.prototype.clear = r, c.prototype["delete"] = i, c.prototype.get = o, c.prototype.has = a, c.prototype.set = s, e.exports = c }, e2c0: function (e, t, n) { var r = n("e2e4"), i = n("d370"), o = n("6747"), a = n("c098"), s = n("b218"), c = n("f4d6"); function l(e, t, n) { t = r(t, e); var l = -1, u = t.length, h = !1; while (++l < u) { var f = c(t[l]); if (!(h = null != e && n(e, f))) break; e = e[f] } return h || ++l != u ? h : (u = null == e ? 0 : e.length, !!u && s(u) && a(f, u) && (o(e) || i(e))) } e.exports = l }, e2e4: function (e, t, n) { var r = n("6747"), i = n("f608"), o = n("18d8"), a = n("76dd"); function s(e, t) { return r(e) ? e : i(e, t) ? [e] : o(a(e)) } e.exports = s }, e380: function (e, t, n) { var r = n("7b83"), i = "Expected a function"; function o(e, t) { if ("function" != typeof e || null != t && "function" != typeof t) throw new TypeError(i); var n = function () { var r = arguments, i = t ? t.apply(this, r) : r[0], o = n.cache; if (o.has(i)) return o.get(i); var a = e.apply(this, r); return n.cache = o.set(i, a) || o, a }; return n.cache = new (o.Cache || r), n } o.Cache = r, e.exports = o }, e3db: function (e, t) { var n = {}.toString; e.exports = Array.isArray || function (e) { return "[object Array]" == n.call(e) } }, e3e9: function (e, t, n) { }, e3f8: function (e, t, n) { var r = n("656b"); function i(e) { return function (t) { return r(t, e) } } e.exports = i }, e4ae: function (e, t, n) { var r = n("f772"); e.exports = function (e) { if (!r(e)) throw TypeError(e + " is not an object!"); return e } }, e538: function (e, t, n) { (function (e) { var r = n("2b3e"), i = t && !t.nodeType && t, o = i && "object" == typeof e && e && !e.nodeType && e, a = o && o.exports === i, s = a ? r.Buffer : void 0, c = s ? s.allocUnsafe : void 0; function l(e, t) { if (t) return e.slice(); var n = e.length, r = c ? c(n) : new e.constructor(n); return e.copy(r), r } e.exports = l }).call(this, n("62e4")(e)) }, e53d: function (e, t) { var n = e.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); "number" == typeof __g && (__g = n) }, e679: function (e, t, n) { }, e6f3: function (e, t, n) { var r = n("07e3"), i = n("36c3"), o = n("5b4e")(!1), a = n("5559")("IE_PROTO"); e.exports = function (e, t) { var n, s = i(e), c = 0, l = []; for (n in s) n != a && r(s, n) && l.push(n); while (t.length > c) r(s, n = t[c++]) && (~o(l, n) || l.push(n)); return l } }, e759: function (e, t, n) { var r = n("badf"), i = n("43ad"), o = Object.prototype, a = o.hasOwnProperty, s = o.toString, c = i((function (e, t, n) { null != t && "function" != typeof t.toString && (t = s.call(t)), a.call(e, t) ? e[t].push(n) : e[t] = [n] }), r); e.exports = c }, e81d: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "釤�", 2: "釤�", 3: "釤�", 4: "釤�", 5: "釤�", 6: "釤�", 7: "釤�", 8: "釤�", 9: "釤�", 0: "釤�" }, n = { "釤�": "1", "釤�": "2", "釤�": "3", "釤�": "4", "釤�": "5", "釤�": "6", "釤�": "7", "釤�": "8", "釤�": "9", "釤�": "0" }, r = e.defineLocale("km", { months: "釣樶瀫釣氠灦_釣�釣会灅釤掅灄釤坃釣樶灨釣撫灦_釣樶焷釣熱灦_釣п灍釣椺灦_釣樶灧釣愥灮釣撫灦_釣�釣�釤掅瀫釣娽灦_釣熱灨釣犪灦_釣�釣夅煉釣夅灦_釣忈灮釣涐灦_釣溼灧釣呩煉釣嗎灧釣�釣禵釣掅煉釣撫灱".split("_"), monthsShort: "釣樶瀫釣氠灦_釣�釣会灅釤掅灄釤坃釣樶灨釣撫灦_釣樶焷釣熱灦_釣п灍釣椺灦_釣樶灧釣愥灮釣撫灦_釣�釣�釤掅瀫釣娽灦_釣熱灨釣犪灦_釣�釣夅煉釣夅灦_釣忈灮釣涐灦_釣溼灧釣呩煉釣嗎灧釣�釣禵釣掅煉釣撫灱".split("_"), weekdays: "釣⑨灦釣戓灧釣忈煉釣檁釣呩煇釣撫煉釣慱釣⑨瀯釤掅瀭釣夺灇_釣栣灮釣抇釣栣煉釣氠灎釣熱煉釣斸瀼釣丰煃_釣熱灮釣�釤掅灇_釣熱焻釣氠煃".split("_"), weekdaysShort: "釣⑨灦_釣卂釣釣朹釣栣煉釣歘釣熱灮_釣�".split("_"), weekdaysMin: "釣⑨灦_釣卂釣釣朹釣栣煉釣歘釣熱灮_釣�".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, meridiemParse: /釣栣煉釣氠灩釣�|釣涐煉釣勧灦釣�/, isPM: function (e) { return "釣涐煉釣勧灦釣�" === e }, meridiem: function (e, t, n) { return e < 12 ? "釣栣煉釣氠灩釣�" : "釣涐煉釣勧灦釣�" }, calendar: { sameDay: "[釣愥煉釣勧焹釣撫焷釤� 釣樶焿釤勧瀯] LT", nextDay: "[釣熱煉釣⑨焸釣� 釣樶焿釤勧瀯] LT", nextWeek: "dddd [釣樶焿釤勧瀯] LT", lastDay: "[釣樶煉釣熱灧釣涐灅釣丰瀴 釣樶焿釤勧瀯] LT", lastWeek: "dddd [釣熱灁釤掅瀼釣夺灎釤嶀灅釣会灀] [釣樶焿釤勧瀯] LT", sameElse: "L" }, relativeTime: { future: "%s釣戓焵釣�", past: "%s釣樶灮釣�", s: "釣斸焿釣会灀釤掅灅釣夺灀釣溼灧釣撫灦釣戓灨", ss: "%d 釣溼灧釣撫灦釣戓灨", m: "釣樶灲釣欋灀釣夺瀾釣�", mm: "%d 釣撫灦釣戓灨", h: "釣樶灲釣欋灅釤夅焺釣�", hh: "%d 釣樶焿釤勧瀯", d: "釣樶灲釣欋瀽釤掅瀯釤�", dd: "%d 釣愥煉釣勧焹", M: "釣樶灲釣欋瀬釤�", MM: "%d 釣佱焸", y: "釣樶灲釣欋瀱釤掅灀釣夺焼", yy: "%d 釣嗎煉釣撫灦釤�" }, dayOfMonthOrdinalParse: /釣戓灨\d{1,2}/, ordinal: "釣戓灨%d", preparse: function (e) { return e.replace(/[釤♂煝釤a煠釤メ煢釤п煥釤┽煚]/g, (function (e) { return n[e] })) }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })) }, week: { dow: 1, doy: 4 } }); return r
+                    }))
+                }, e9a3: function (e, t, n) { }, e9d1: function (e, t, n) { var r = n("a78b"), i = n("1304"); function o(e, t, n, o) { return o = "function" == typeof o ? o : void 0, null == e ? e : r(e, t, i(n), o) } e.exports = o }, eac5: function (e, t) { var n = Object.prototype; function r(e) { var t = e && e.constructor, r = "function" == typeof t && t.prototype || n; return e === r } e.exports = r }, ebd6: function (e, t, n) { var r = n("cb7c"), i = n("d8e8"), o = n("2b4c")("species"); e.exports = function (e, t) { var n, a = r(e).constructor; return void 0 === a || void 0 == (n = r(a)[o]) ? t : i(n) } }, ebe4: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("ms", { months: "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"), monthsShort: "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"), weekdays: "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"), weekdaysShort: "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"), weekdaysMin: "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"), longDateFormat: { LT: "HH.mm", LTS: "HH.mm.ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY [pukul] HH.mm", LLLL: "dddd, D MMMM YYYY [pukul] HH.mm" }, meridiemParse: /pagi|tengahari|petang|malam/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "pagi" === t ? e : "tengahari" === t ? e >= 11 ? e : e + 12 : "petang" === t || "malam" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { return e < 11 ? "pagi" : e < 15 ? "tengahari" : e < 19 ? "petang" : "malam" }, calendar: { sameDay: "[Hari ini pukul] LT", nextDay: "[Esok pukul] LT", nextWeek: "dddd [pukul] LT", lastDay: "[Kelmarin pukul] LT", lastWeek: "dddd [lepas pukul] LT", sameElse: "L" }, relativeTime: { future: "dalam %s", past: "%s yang lepas", s: "beberapa saat", ss: "%d saat", m: "seminit", mm: "%d minit", h: "sejam", hh: "%d jam", d: "sehari", dd: "%d hari", M: "sebulan", MM: "%d bulan", y: "setahun", yy: "%d tahun" }, week: { dow: 1, doy: 7 } }); return t
+                    }))
+                }, ebfd: function (e, t, n) { var r = n("62a0")("meta"), i = n("f772"), o = n("07e3"), a = n("d9f6").f, s = 0, c = Object.isExtensible || function () { return !0 }, l = !n("294c")((function () { return c(Object.preventExtensions({})) })), u = function (e) { a(e, r, { value: { i: "O" + ++s, w: {} } }) }, h = function (e, t) { if (!i(e)) return "symbol" == typeof e ? e : ("string" == typeof e ? "S" : "P") + e; if (!o(e, r)) { if (!c(e)) return "F"; if (!t) return "E"; u(e) } return e[r].i }, f = function (e, t) { if (!o(e, r)) { if (!c(e)) return !0; if (!t) return !1; u(e) } return e[r].w }, d = function (e) { return l && p.NEED && c(e) && !o(e, r) && u(e), e }, p = e.exports = { KEY: r, NEED: !1, fastKey: h, getWeak: f, onFreeze: d } }, ec18: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        function t(e, t, n, r) { var i = { s: ["m玫ne sekundi", "m玫ni sekund", "paar sekundit"], ss: [e + "sekundi", e + "sekundit"], m: ["眉he minuti", "眉ks minut"], mm: [e + " minuti", e + " minutit"], h: ["眉he tunni", "tund aega", "眉ks tund"], hh: [e + " tunni", e + " tundi"], d: ["眉he p盲eva", "眉ks p盲ev"], M: ["kuu aja", "kuu aega", "眉ks kuu"], MM: [e + " kuu", e + " kuud"], y: ["眉he aasta", "aasta", "眉ks aasta"], yy: [e + " aasta", e + " aastat"] }; return t ? i[n][2] ? i[n][2] : i[n][1] : r ? i[n][0] : i[n][1] } var n = e.defineLocale("et", { months: "jaanuar_veebruar_m盲rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"), monthsShort: "jaan_veebr_m盲rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"), weekdays: "p眉hap盲ev_esmasp盲ev_teisip盲ev_kolmap盲ev_neljap盲ev_reede_laup盲ev".split("_"), weekdaysShort: "P_E_T_K_N_R_L".split("_"), weekdaysMin: "P_E_T_K_N_R_L".split("_"), longDateFormat: { LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd, D. MMMM YYYY H:mm" }, calendar: { sameDay: "[T盲na,] LT", nextDay: "[Homme,] LT", nextWeek: "[J盲rgmine] dddd LT", lastDay: "[Eile,] LT", lastWeek: "[Eelmine] dddd LT", sameElse: "L" }, relativeTime: { future: "%s p盲rast", past: "%s tagasi", s: t, ss: t, m: t, mm: t, h: t, hh: t, d: t, dd: "%d p盲eva", M: t, MM: t, y: t, yy: t }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return n
+                    }))
+                }, ec2e: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("en-in", { months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), longDateFormat: { LT: "h:mm A", LTS: "h:mm:ss A", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY h:mm A", LLLL: "dddd, D MMMM YYYY h:mm A" }, calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" }, relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", ss: "%d seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (e) { var t = e % 10, n = 1 === ~~(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th"; return e + n }, week: { dow: 0, doy: 6 } }); return t
+                    }))
+                }, ec47: function (e, t, n) { var r = n("a3fd"), i = n("42a2"), o = n("edfa"), a = n("cebd"), s = "[object Map]", c = "[object Set]"; function l(e) { return function (t) { var n = i(t); return n == s ? o(t) : n == c ? a(t) : r(t, e(t)) } } e.exports = l }, ec69: function (e, t, n) { var r = n("6fcd"), i = n("03dd"), o = n("30c9"); function a(e) { return o(e) ? r(e) : i(e) } e.exports = a }, ec8c: function (e, t) { function n(e) { var t = []; if (null != e) for (var n in Object(e)) t.push(n); return t } e.exports = n }, eda5: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("si", { months: "喽⑧侗喾�喾忇痘喾抇喽脆窓喽多痘喾�喾忇痘喾抇喽膏窂喽秽穵喽窋_喽呧洞喾娾�嵿痘喾氞督喾奯喽膏窅喽亨窉_喽⑧窎喽编窉_喽⑧窎喽洁窉_喽呧稖喾澿穬喾娻董喾擾喾冟窅喽脆穵喽窅喽膏穵喽多痘喾奯喽斷稓喾娻董喾澿抖喽秽穵_喽编窚喾�喾愢陡喾娻抖喽秽穵_喽窓喾冟窅喽膏穵喽多痘喾�".split("_"), monthsShort: "喽⑧侗_喽脆窓喽禵喽膏窂喽秽穵_喽呧洞喾奯喽膏窅喽亨窉_喽⑧窎喽编窉_喽⑧窎喽洁窉_喽呧稖喾漘喾冟窅喽脆穵_喽斷稓喾奯喽编窚喾�喾恄喽窓喾冟窅".split("_"), weekdays: "喽夃痘喾掄动喾廮喾冟冻喾斷动喾廮喽呧稛喾勦痘喾斷穩喾忇动喾廮喽多动喾忇动喾廮喽多穵鈥嵿痘喾勦穬喾娻洞喽窉喽编穵喽窂_喾冟窉喽氞窋喽秽窂喽窂_喾冟窓喽编穬喾斷痘喾忇动喾�".split("_"), weekdaysShort: "喽夃痘喾抇喾冟冻喾擾喽呧稛_喽多动喾廮喽多穵鈥嵿痘喾刜喾冟窉喽氞窋_喾冟窓喽�".split("_"), weekdaysMin: "喽塤喾僟喽卂喽禵喽多穵鈥嵿痘_喾冟窉_喾冟窓".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "a h:mm", LTS: "a h:mm:ss", L: "YYYY/MM/DD", LL: "YYYY MMMM D", LLL: "YYYY MMMM D, a h:mm", LLLL: "YYYY MMMM D [喾�喾愢侗喾抅 dddd, a h:mm:ss" }, calendar: { sameDay: "[喽呧动] LT[喽", nextDay: "[喾勦窓喽 LT[喽", nextWeek: "dddd LT[喽", lastDay: "[喽娻逗喾歖 LT[喽", lastWeek: "[喽脆穬喾斷稖喾掄逗] dddd LT[喽", sameElse: "L" }, relativeTime: { future: "%s喽氞窉喽编穵", past: "%s喽氞锭 喽脆窓喽�", s: "喽董喾娻洞喽� 喽氞窉喾勦窉喽脆逗", ss: "喽董喾娻洞喽� %d", m: "喽膏窉喽编窉喽穵喽窋喾�", mm: "喽膏窉喽编窉喽穵喽窋 %d", h: "喽脆窅喽�", hh: "喽脆窅喽� %d", d: "喽窉喽编逗", dd: "喽窉喽� %d", M: "喽膏窂喾冟逗", MM: "喽膏窂喾� %d", y: "喾�喾冟痘", yy: "喾�喾冟痘 %d" }, dayOfMonthOrdinalParse: /\d{1,2} 喾�喾愢侗喾�/, ordinal: function (e) { return e + " 喾�喾愢侗喾�" }, meridiemParse: /喽脆窓喽� 喾�喽秽窋|喽脆穬喾� 喾�喽秽窋|喽脆窓.喾�|喽�.喾�./, isPM: function (e) { return "喽�.喾�." === e || "喽脆穬喾� 喾�喽秽窋" === e }, meridiem: function (e, t, n) { return e > 11 ? n ? "喽�.喾�." : "喽脆穬喾� 喾�喽秽窋" : n ? "喽脆窓.喾�." : "喽脆窓喽� 喾�喽秽窋" } }); return t
+                    }))
+                }, edfa: function (e, t) { function n(e) { var t = -1, n = Array(e.size); return e.forEach((function (e, r) { n[++t] = [r, e] })), n } e.exports = n }, ee45: function (e, t, n) { var r = n("a78b"), i = n("1304"); function o(e, t, n) { return null == e ? e : r(e, t, i(n)) } e.exports = o }, ef5d: function (e, t) { function n(e) { return function (t) { return null == t ? void 0 : t[e] } } e.exports = n }, efb6: function (e, t, n) { var r = n("5e2e"); function i() { this.__data__ = new r, this.size = 0 } e.exports = i }, f1ae: function (e, t, n) { "use strict"; var r = n("86cc"), i = n("4630"); e.exports = function (e, t, n) { t in e ? r.f(e, t, i(0, n)) : e[t] = n } }, f260: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("pt", { months: "janeiro_fevereiro_mar莽o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"), monthsShort: "jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"), weekdays: "Domingo_Segunda-feira_Ter莽a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S谩bado".split("_"), weekdaysShort: "Dom_Seg_Ter_Qua_Qui_Sex_S谩b".split("_"), weekdaysMin: "Do_2陋_3陋_4陋_5陋_6陋_S谩".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY HH:mm", LLLL: "dddd, D [de] MMMM [de] YYYY HH:mm" }, calendar: { sameDay: "[Hoje 脿s] LT", nextDay: "[Amanh茫 脿s] LT", nextWeek: "dddd [脿s] LT", lastDay: "[Ontem 脿s] LT", lastWeek: function () { return 0 === this.day() || 6 === this.day() ? "[脷ltimo] dddd [脿s] LT" : "[脷ltima] dddd [脿s] LT" }, sameElse: "L" }, relativeTime: { future: "em %s", past: "h谩 %s", s: "segundos", ss: "%d segundos", m: "um minuto", mm: "%d minutos", h: "uma hora", hh: "%d horas", d: "um dia", dd: "%d dias", M: "um m锚s", MM: "%d meses", y: "um ano", yy: "%d anos" }, dayOfMonthOrdinalParse: /\d{1,2}潞/, ordinal: "%d潞", week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, f29f: function (e, t, n) { "use strict"; var r = n("5579"), i = n.n(r); i.a }, f2cd: function (e, t, n) { "use strict"; var r = n("4d03"), i = n.n(r); i.a }, f3c1: function (e, t) { var n = 800, r = 16, i = Date.now; function o(e) { var t = 0, o = 0; return function () { var a = i(), s = r - (a - o); if (o = a, s > 0) { if (++t >= n) return arguments[0] } else t = 0; return e.apply(void 0, arguments) } } e.exports = o }, f3ff: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = { 1: "喋�", 2: "喋�", 3: "喋�", 4: "喋�", 5: "喋�", 6: "喋�", 7: "喋�", 8: "喋�", 9: "喋�", 0: "喋�" }, n = { "喋�": "1", "喋�": "2", "喋�": "3", "喋�": "4", "喋�": "5", "喋�": "6", "喋�": "7", "喋�": "8", "喋�": "9", "喋�": "0" }, r = e.defineLocale("pa-in", { months: "啜溹è啜掂ò喋�_啜啜班ǖ啜班﹢_啜ň啜班_啜呧í喋嵿ò喋堗ú_啜▓_啜溹﹤啜╛啜溹﹣啜侧ň啜坃啜呧啜膏à_啜膏à喋班ì啜癬啜呧〞啜む﹤啜ò_啜ㄠǖ喋班ì啜癬啜︵ǜ喋班ì啜�".split("_"), monthsShort: "啜溹è啜掂ò喋�_啜啜班ǖ啜班﹢_啜ň啜班_啜呧í喋嵿ò喋堗ú_啜▓_啜溹﹤啜╛啜溹﹣啜侧ň啜坃啜呧啜膏à_啜膏à喋班ì啜癬啜呧〞啜む﹤啜ò_啜ㄠǖ喋班ì啜癬啜︵ǜ喋班ì啜�".split("_"), weekdays: "啜愢à啜掂ň啜癬啜膏啜ǖ啜距ò_啜┌啜椸ú啜掂ň啜癬啜﹣啜оǖ啜距ò_啜掂﹢啜班ǖ啜距ò_啜膏喋佮┍啜曕ò啜掂ň啜癬啜膏啜ㄠ﹢啜氞ò啜掂ň啜�".split("_"), weekdaysShort: "啜愢à_啜膏啜甠啜┌啜椸ú_啜﹣啜啜掂﹢啜癬啜膏喋佮〞啜癬啜膏啜ㄠ﹢".split("_"), weekdaysMin: "啜愢à_啜膏啜甠啜┌啜椸ú_啜﹣啜啜掂﹢啜癬啜膏喋佮〞啜癬啜膏啜ㄠ﹢".split("_"), longDateFormat: { LT: "A h:mm 啜掂喋�", LTS: "A h:mm:ss 啜掂喋�", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm 啜掂喋�", LLLL: "dddd, D MMMM YYYY, A h:mm 啜掂喋�" }, calendar: { sameDay: "[啜呧] LT", nextDay: "[啜曕ú] LT", nextWeek: "[啜呧啜侧ň] dddd, LT", lastDay: "[啜曕ú] LT", lastWeek: "[啜啜涏ú喋嘳 dddd, LT", sameElse: "L" }, relativeTime: { future: "%s 啜掂喋编", past: "%s 啜啜涏ú喋�", s: "啜曕﹣啜� 啜膏〞啜苦┌啜�", ss: "%d 啜膏〞啜苦┌啜�", m: "啜囙〞 啜喋班", mm: "%d 啜喋班", h: "啜囙┍啜� 啜樴┌啜熰ň", hh: "%d 啜樴┌啜熰﹪", d: "啜囙┍啜� 啜︵啜�", dd: "%d 啜︵啜�", M: "啜囙┍啜� 啜ü喋�啜ㄠň", MM: "%d 啜ü喋�啜ㄠ﹪", y: "啜囙┍啜� 啜膏ň啜�", yy: "%d 啜膏ň啜�" }, preparse: function (e) { return e.replace(/[喋о┄喋┼┆喋┈喋┊喋│]/g, (function (e) { return n[e] })) }, postformat: function (e) { return e.replace(/\d/g, (function (e) { return t[e] })) }, meridiemParse: /啜班ň啜啜膏ǖ喋囙ò|啜︵﹣啜ü啜苦ò|啜膏啜距ó/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "啜班ň啜�" === t ? e < 4 ? e : e + 12 : "啜膏ǖ喋囙ò" === t ? e : "啜︵﹣啜ü啜苦ò" === t ? e >= 10 ? e : e + 12 : "啜膏啜距ó" === t ? e + 12 : void 0 }, meridiem: function (e, t, n) { return e < 4 ? "啜班ň啜�" : e < 10 ? "啜膏ǖ喋囙ò" : e < 17 ? "啜︵﹣啜ü啜苦ò" : e < 20 ? "啜膏啜距ó" : "啜班ň啜�" }, week: { dow: 0, doy: 6 } }); return r
+                    }))
+                }, f4d6: function (e, t, n) { var r = n("ffd6"), i = 1 / 0; function o(e) { if ("string" == typeof e || r(e)) return e; var t = e + ""; return "0" == t && 1 / e == -i ? "-0" : t } e.exports = o }, f542: function (e, t, n) { var r = n("ec47"), i = n("ec69"), o = r(i); e.exports = o }, f559: function (e, t, n) { "use strict"; var r = n("5ca1"), i = n("9def"), o = n("d2c8"), a = "startsWith", s = ""[a]; r(r.P + r.F * n("5147")(a), "String", { startsWith: function (e) { var t = o(this, e, a), n = i(Math.min(arguments.length > 1 ? arguments[1] : void 0, t.length)), r = String(e); return s ? s.call(t, r, n) : t.slice(n, n + r.length) === r } }) }, f605: function (e, t) { e.exports = function (e, t, n, r) { if (!(e instanceof t) || void 0 !== r && r in e) throw TypeError(n + ": incorrect invocation!"); return e } }, f608: function (e, t, n) { var r = n("6747"), i = n("ffd6"), o = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, a = /^\w*$/; function s(e, t) { if (r(e)) return !1; var n = typeof e; return !("number" != n && "symbol" != n && "boolean" != n && null != e && !i(e)) || a.test(e) || !o.test(e) || null != t && e in Object(t) } e.exports = s }, f614: function (e, t, n) { }, f6b4: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = ["Am Faoilleach", "An Gearran", "Am M脿rt", "An Giblean", "An C猫itean", "An t-脪gmhios", "An t-Iuchar", "An L霉nastal", "An t-Sultain", "An D脿mhair", "An t-Samhain", "An D霉bhlachd"], n = ["Faoi", "Gear", "M脿rt", "Gibl", "C猫it", "脪gmh", "Iuch", "L霉n", "Sult", "D脿mh", "Samh", "D霉bh"], r = ["Did貌mhnaich", "Diluain", "Dim脿irt", "Diciadain", "Diardaoin", "Dihaoine", "Disathairne"], i = ["Did", "Dil", "Dim", "Dic", "Dia", "Dih", "Dis"], o = ["D貌", "Lu", "M脿", "Ci", "Ar", "Ha", "Sa"], a = e.defineLocale("gd", { months: t, monthsShort: n, monthsParseExact: !0, weekdays: r, weekdaysShort: i, weekdaysMin: o, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[An-diugh aig] LT", nextDay: "[A-m脿ireach aig] LT", nextWeek: "dddd [aig] LT", lastDay: "[An-d猫 aig] LT", lastWeek: "dddd [seo chaidh] [aig] LT", sameElse: "L" }, relativeTime: { future: "ann an %s", past: "bho chionn %s", s: "beagan diogan", ss: "%d diogan", m: "mionaid", mm: "%d mionaidean", h: "uair", hh: "%d uairean", d: "latha", dd: "%d latha", M: "m矛os", MM: "%d m矛osan", y: "bliadhna", yy: "%d bliadhna" }, dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, ordinal: function (e) { var t = 1 === e ? "d" : e % 10 === 2 ? "na" : "mh"; return e + t }, week: { dow: 1, doy: 4 } }); return a
+                    }))
+                }, f6c0: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n("c4b2"), i = h(r), o = n("882a"), a = h(o), s = n("5669"), c = h(s), l = n("9a94"), u = h(l); function h(e) { return e && e.__esModule ? e : { default: e } } t["default"] = { locale: "zh-cn", Pagination: i["default"], DatePicker: a["default"], TimePicker: c["default"], Calendar: u["default"], global: { placeholder: "璇烽�夋嫨" }, Table: { filterTitle: "绛涢��", filterConfirm: "纭畾", filterReset: "閲嶇疆", selectAll: "鍏ㄩ�夊綋椤�", selectInvert: "鍙嶉�夊綋椤�", sortTitle: "鎺掑簭", expand: "灞曞紑琛�", collapse: "鍏抽棴琛�" }, Modal: { okText: "纭畾", cancelText: "鍙栨秷", justOkText: "鐭ラ亾浜�" }, Popconfirm: { cancelText: "鍙栨秷", okText: "纭畾" }, Transfer: { searchPlaceholder: "璇疯緭鍏ユ悳绱㈠唴瀹�", itemUnit: "椤�", itemsUnit: "椤�" }, Upload: { uploading: "鏂囦欢涓婁紶涓�", removeFile: "鍒犻櫎鏂囦欢", uploadError: "涓婁紶閿欒", previewFile: "棰勮鏂囦欢", downloadFile: "涓嬭浇鏂囦欢" }, Empty: { description: "鏆傛棤鏁版嵁" }, Icon: { icon: "鍥炬爣" }, Text: { edit: "缂栬緫", copy: "澶嶅埗", copied: "澶嶅埗鎴愬姛", expand: "灞曞紑" }, PageHeader: { back: "杩斿洖" } } }, f772: function (e, t) { e.exports = function (e) { return "object" === typeof e ? null !== e : "function" === typeof e } }, f893: function (e, t, n) { e.exports = { default: n("f921"), __esModule: !0 } }, f8af: function (e, t, n) { var r = n("2474"); function i(e) { var t = new e.constructor(e.byteLength); return new r(t).set(new r(e)), t } e.exports = i }, f909: function (e, t, n) { var r = n("7e64"), i = n("b760"), o = n("72af"), a = n("4f50"), s = n("1a8c"), c = n("9934"), l = n("8adb"); function u(e, t, n, h, f) { e !== t && o(t, (function (o, c) { if (f || (f = new r), s(o)) a(e, t, c, n, u, h, f); else { var d = h ? h(l(e, c), o, c + "", e, t, f) : void 0; void 0 === d && (d = o), i(e, c, d) } }), c) } e.exports = u }, f917: function (e, t, n) { "use strict"; var r = n("161b"), i = n.n(r); i.a }, f921: function (e, t, n) { n("014b"), n("c207"), n("69d3"), n("765d"), e.exports = n("584a").Symbol }, f9ce: function (e, t, n) { var r = n("ef5d"), i = n("e3f8"), o = n("f608"), a = n("f4d6"); function s(e) { return o(e) ? r(a(e)) : i(e) } e.exports = s }, f9d4: function (e, t, n) { (function (e) { e(n("56b3")) })((function (e) { "use strict"; e.defineMode("javascript", (function (t, n) { var r, i, o = t.indentUnit, a = n.statementIndent, s = n.jsonld, c = n.json || s, l = !1 !== n.trackScope, u = n.typescript, h = n.wordCharacters || /[\w$\xa1-\uffff]/, f = function () { function e(e) { return { type: e, style: "keyword" } } var t = e("keyword a"), n = e("keyword b"), r = e("keyword c"), i = e("keyword d"), o = e("operator"), a = { type: "atom", style: "atom" }; return { if: e("if"), while: t, with: t, else: n, do: n, try: n, finally: n, return: i, break: i, continue: i, new: e("new"), delete: r, void: r, throw: r, debugger: e("debugger"), var: e("var"), const: e("var"), let: e("var"), function: e("function"), catch: e("catch"), for: e("for"), switch: e("switch"), case: e("case"), default: e("default"), in: o, typeof: o, instanceof: o, true: a, false: a, null: a, undefined: a, NaN: a, Infinity: a, this: e("this"), class: e("class"), super: e("atom"), yield: r, export: e("export"), import: e("import"), extends: r, await: r } }(), d = /[+\-*&%=<>!?|~^@]/, p = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; function v(e) { var t, n = !1, r = !1; while (null != (t = e.next())) { if (!n) { if ("/" == t && !r) return; "[" == t ? r = !0 : r && "]" == t && (r = !1) } n = !n && "\\" == t } } function m(e, t, n) { return r = e, i = n, t } function g(e, t) { var n = e.next(); if ('"' == n || "'" == n) return t.tokenize = y(n), t.tokenize(e, t); if ("." == n && e.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/)) return m("number", "number"); if ("." == n && e.match("..")) return m("spread", "meta"); if (/[\[\]{}\(\),;\:\.]/.test(n)) return m(n); if ("=" == n && e.eat(">")) return m("=>", "operator"); if ("0" == n && e.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) return m("number", "number"); if (/\d/.test(n)) return e.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/), m("number", "number"); if ("/" == n) return e.eat("*") ? (t.tokenize = b, b(e, t)) : e.eat("/") ? (e.skipToEnd(), m("comment", "comment")) : nt(e, t, 1) ? (v(e), e.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/), m("regexp", "string-2")) : (e.eat("="), m("operator", "operator", e.current())); if ("`" == n) return t.tokenize = x, x(e, t); if ("#" == n && "!" == e.peek()) return e.skipToEnd(), m("meta", "meta"); if ("#" == n && e.eatWhile(h)) return m("variable", "property"); if ("<" == n && e.match("!--") || "-" == n && e.match("->") && !/\S/.test(e.string.slice(0, e.start))) return e.skipToEnd(), m("comment", "comment"); if (d.test(n)) return ">" == n && t.lexical && ">" == t.lexical.type || (e.eat("=") ? "!" != n && "=" != n || e.eat("=") : /[<>*+\-|&?]/.test(n) && (e.eat(n), ">" == n && e.eat(n))), "?" == n && e.eat(".") ? m(".") : m("operator", "operator", e.current()); if (h.test(n)) { e.eatWhile(h); var r = e.current(); if ("." != t.lastType) { if (f.propertyIsEnumerable(r)) { var i = f[r]; return m(i.type, i.style, r) } if ("async" == r && e.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/, !1)) return m("async", "keyword", r) } return m("variable", "variable", r) } } function y(e) { return function (t, n) { var r, i = !1; if (s && "@" == t.peek() && t.match(p)) return n.tokenize = g, m("jsonld-keyword", "meta"); while (null != (r = t.next())) { if (r == e && !i) break; i = !i && "\\" == r } return i || (n.tokenize = g), m("string", "string") } } function b(e, t) { var n, r = !1; while (n = e.next()) { if ("/" == n && r) { t.tokenize = g; break } r = "*" == n } return m("comment", "comment") } function x(e, t) { var n, r = !1; while (null != (n = e.next())) { if (!r && ("`" == n || "$" == n && e.eat("{"))) { t.tokenize = g; break } r = !r && "\\" == n } return m("quasi", "string-2", e.current()) } var w = "([{}])"; function _(e, t) { t.fatArrowAt && (t.fatArrowAt = null); var n = e.string.indexOf("=>", e.start); if (!(n < 0)) { if (u) { var r = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start, n)); r && (n = r.index) } for (var i = 0, o = !1, a = n - 1; a >= 0; --a) { var s = e.string.charAt(a), c = w.indexOf(s); if (c >= 0 && c < 3) { if (!i) { ++a; break } if (0 == --i) { "(" == s && (o = !0); break } } else if (c >= 3 && c < 6) ++i; else if (h.test(s)) o = !0; else if (/["'\/`]/.test(s)) for (; ; --a) { if (0 == a) return; var l = e.string.charAt(a - 1); if (l == s && "\\" != e.string.charAt(a - 2)) { a--; break } } else if (o && !i) { ++a; break } } o && !i && (t.fatArrowAt = a) } } var C = { atom: !0, number: !0, variable: !0, string: !0, regexp: !0, this: !0, import: !0, "jsonld-keyword": !0 }; function M(e, t, n, r, i, o) { this.indented = e, this.column = t, this.type = n, this.prev = i, this.info = o, null != r && (this.align = r) } function O(e, t) { if (!l) return !1; for (var n = e.localVars; n; n = n.next)if (n.name == t) return !0; for (var r = e.context; r; r = r.prev)for (n = r.vars; n; n = n.next)if (n.name == t) return !0 } function k(e, t, n, r, i) { var o = e.cc; S.state = e, S.stream = i, S.marked = null, S.cc = o, S.style = t, e.lexical.hasOwnProperty("align") || (e.lexical.align = !0); while (1) { var a = o.length ? o.pop() : c ? W : $; if (a(n, r)) { while (o.length && o[o.length - 1].lex) o.pop()(); return S.marked ? S.marked : "variable" == n && O(e, r) ? "variable-2" : t } } } var S = { state: null, column: null, marked: null, cc: null }; function T() { for (var e = arguments.length - 1; e >= 0; e--)S.cc.push(arguments[e]) } function A() { return T.apply(null, arguments), !0 } function L(e, t) { for (var n = t; n; n = n.next)if (n.name == e) return !0; return !1 } function j(e) { var t = S.state; if (S.marked = "def", l) { if (t.context) if ("var" == t.lexical.info && t.context && t.context.block) { var r = z(e, t.context); if (null != r) return void (t.context = r) } else if (!L(e, t.localVars)) return void (t.localVars = new D(e, t.localVars)); n.globalVars && !L(e, t.globalVars) && (t.globalVars = new D(e, t.globalVars)) } } function z(e, t) { if (t) { if (t.block) { var n = z(e, t.prev); return n ? n == t.prev ? t : new P(n, t.vars, !0) : null } return L(e, t.vars) ? t : new P(t.prev, new D(e, t.vars), !1) } return null } function E(e) { return "public" == e || "private" == e || "protected" == e || "abstract" == e || "readonly" == e } function P(e, t, n) { this.prev = e, this.vars = t, this.block = n } function D(e, t) { this.name = e, this.next = t } var H = new D("this", new D("arguments", null)); function V() { S.state.context = new P(S.state.context, S.state.localVars, !1), S.state.localVars = H } function I() { S.state.context = new P(S.state.context, S.state.localVars, !0), S.state.localVars = null } function N() { S.state.localVars = S.state.context.vars, S.state.context = S.state.context.prev } function R(e, t) { var n = function () { var n = S.state, r = n.indented; if ("stat" == n.lexical.type) r = n.lexical.indented; else for (var i = n.lexical; i && ")" == i.type && i.align; i = i.prev)r = i.indented; n.lexical = new M(r, S.stream.column(), e, null, n.lexical, t) }; return n.lex = !0, n } function F() { var e = S.state; e.lexical.prev && (")" == e.lexical.type && (e.indented = e.lexical.indented), e.lexical = e.lexical.prev) } function Y(e) { function t(n) { return n == e ? A() : ";" == e || "}" == n || ")" == n || "]" == n ? T() : A(t) } return t } function $(e, t) { return "var" == e ? A(R("vardef", t), ke, Y(";"), F) : "keyword a" == e ? A(R("form"), U, $, F) : "keyword b" == e ? A(R("form"), $, F) : "keyword d" == e ? S.stream.match(/^\s*$/, !1) ? A() : A(R("stat"), G, Y(";"), F) : "debugger" == e ? A(Y(";")) : "{" == e ? A(R("}"), I, fe, F, N) : ";" == e ? A() : "if" == e ? ("else" == S.state.lexical.info && S.state.cc[S.state.cc.length - 1] == F && S.state.cc.pop()(), A(R("form"), U, $, F, ze)) : "function" == e ? A(He) : "for" == e ? A(R("form"), I, Ee, $, N, F) : "class" == e || u && "interface" == t ? (S.marked = "keyword", A(R("form", "class" == e ? e : t), Fe, F)) : "variable" == e ? u && "declare" == t ? (S.marked = "keyword", A($)) : u && ("module" == t || "enum" == t || "type" == t) && S.stream.match(/^\s*\w/, !1) ? (S.marked = "keyword", "enum" == t ? A(Ze) : "type" == t ? A(Ie, Y("operator"), ge, Y(";")) : A(R("form"), Se, Y("{"), R("}"), fe, F, F)) : u && "namespace" == t ? (S.marked = "keyword", A(R("form"), W, $, F)) : u && "abstract" == t ? (S.marked = "keyword", A($)) : A(R("stat"), oe) : "switch" == e ? A(R("form"), U, Y("{"), R("}", "switch"), I, fe, F, F, N) : "case" == e ? A(W, Y(":")) : "default" == e ? A(Y(":")) : "catch" == e ? A(R("form"), V, B, $, F, N) : "export" == e ? A(R("stat"), We, F) : "import" == e ? A(R("stat"), Ue, F) : "async" == e ? A($) : "@" == t ? A(W, $) : T(R("stat"), W, Y(";"), F) } function B(e) { if ("(" == e) return A(Ne, Y(")")) } function W(e, t) { return K(e, t, !1) } function q(e, t) { return K(e, t, !0) } function U(e) { return "(" != e ? T() : A(R(")"), G, Y(")"), F) } function K(e, t, n) { if (S.state.fatArrowAt == S.stream.start) { var r = n ? te : ee; if ("(" == e) return A(V, R(")"), ue(Ne, ")"), F, Y("=>"), r, N); if ("variable" == e) return T(V, Se, Y("=>"), r, N) } var i = n ? J : X; return C.hasOwnProperty(e) ? A(i) : "function" == e ? A(He, i) : "class" == e || u && "interface" == t ? (S.marked = "keyword", A(R("form"), Re, F)) : "keyword c" == e || "async" == e ? A(n ? q : W) : "(" == e ? A(R(")"), G, Y(")"), F, i) : "operator" == e || "spread" == e ? A(n ? q : W) : "[" == e ? A(R("]"), Qe, F, i) : "{" == e ? he(se, "}", null, i) : "quasi" == e ? T(Q, i) : "new" == e ? A(ne(n)) : A() } function G(e) { return e.match(/[;\}\)\],]/) ? T() : T(W) } function X(e, t) { return "," == e ? A(G) : J(e, t, !1) } function J(e, t, n) { var r = 0 == n ? X : J, i = 0 == n ? W : q; return "=>" == e ? A(V, n ? te : ee, N) : "operator" == e ? /\+\+|--/.test(t) || u && "!" == t ? A(r) : u && "<" == t && S.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/, !1) ? A(R(">"), ue(ge, ">"), F, r) : "?" == t ? A(W, Y(":"), i) : A(i) : "quasi" == e ? T(Q, r) : ";" != e ? "(" == e ? he(q, ")", "call", r) : "." == e ? A(ae, r) : "[" == e ? A(R("]"), G, Y("]"), F, r) : u && "as" == t ? (S.marked = "keyword", A(ge, r)) : "regexp" == e ? (S.state.lastType = S.marked = "operator", S.stream.backUp(S.stream.pos - S.stream.start - 1), A(i)) : void 0 : void 0 } function Q(e, t) { return "quasi" != e ? T() : "${" != t.slice(t.length - 2) ? A(Q) : A(W, Z) } function Z(e) { if ("}" == e) return S.marked = "string-2", S.state.tokenize = x, A(Q) } function ee(e) { return _(S.stream, S.state), T("{" == e ? $ : W) } function te(e) { return _(S.stream, S.state), T("{" == e ? $ : q) } function ne(e) { return function (t) { return "." == t ? A(e ? ie : re) : "variable" == t && u ? A(Ce, e ? J : X) : T(e ? q : W) } } function re(e, t) { if ("target" == t) return S.marked = "keyword", A(X) } function ie(e, t) { if ("target" == t) return S.marked = "keyword", A(J) } function oe(e) { return ":" == e ? A(F, $) : T(X, Y(";"), F) } function ae(e) { if ("variable" == e) return S.marked = "property", A() } function se(e, t) { return "async" == e ? (S.marked = "property", A(se)) : "variable" == e || "keyword" == S.style ? (S.marked = "property", "get" == t || "set" == t ? A(ce) : (u && S.state.fatArrowAt == S.stream.start && (n = S.stream.match(/^\s*:\s*/, !1)) && (S.state.fatArrowAt = S.stream.pos + n[0].length), A(le))) : "number" == e || "string" == e ? (S.marked = s ? "property" : S.style + " property", A(le)) : "jsonld-keyword" == e ? A(le) : u && E(t) ? (S.marked = "keyword", A(se)) : "[" == e ? A(W, de, Y("]"), le) : "spread" == e ? A(q, le) : "*" == t ? (S.marked = "keyword", A(se)) : ":" == e ? T(le) : void 0; var n } function ce(e) { return "variable" != e ? T(le) : (S.marked = "property", A(He)) } function le(e) { return ":" == e ? A(q) : "(" == e ? T(He) : void 0 } function ue(e, t, n) { function r(i, o) { if (n ? n.indexOf(i) > -1 : "," == i) { var a = S.state.lexical; return "call" == a.info && (a.pos = (a.pos || 0) + 1), A((function (n, r) { return n == t || r == t ? T() : T(e) }), r) } return i == t || o == t ? A() : n && n.indexOf(";") > -1 ? T(e) : A(Y(t)) } return function (n, i) { return n == t || i == t ? A() : T(e, r) } } function he(e, t, n) { for (var r = 3; r < arguments.length; r++)S.cc.push(arguments[r]); return A(R(t, n), ue(e, t), F) } function fe(e) { return "}" == e ? A() : T($, fe) } function de(e, t) { if (u) { if (":" == e) return A(ge); if ("?" == t) return A(de) } } function pe(e, t) { if (u && (":" == e || "in" == t)) return A(ge) } function ve(e) { if (u && ":" == e) return S.stream.match(/^\s*\w+\s+is\b/, !1) ? A(W, me, ge) : A(ge) } function me(e, t) { if ("is" == t) return S.marked = "keyword", A() } function ge(e, t) { return "keyof" == t || "typeof" == t || "infer" == t || "readonly" == t ? (S.marked = "keyword", A("typeof" == t ? q : ge)) : "variable" == e || "void" == t ? (S.marked = "type", A(_e)) : "|" == t || "&" == t ? A(ge) : "string" == e || "number" == e || "atom" == e ? A(_e) : "[" == e ? A(R("]"), ue(ge, "]", ","), F, _e) : "{" == e ? A(R("}"), be, F, _e) : "(" == e ? A(ue(we, ")"), ye, _e) : "<" == e ? A(ue(ge, ">"), ge) : void 0 } function ye(e) { if ("=>" == e) return A(ge) } function be(e) { return e.match(/[\}\)\]]/) ? A() : "," == e || ";" == e ? A(be) : T(xe, be) } function xe(e, t) { return "variable" == e || "keyword" == S.style ? (S.marked = "property", A(xe)) : "?" == t || "number" == e || "string" == e ? A(xe) : ":" == e ? A(ge) : "[" == e ? A(Y("variable"), pe, Y("]"), xe) : "(" == e ? T(Ve, xe) : e.match(/[;\}\)\],]/) ? void 0 : A() } function we(e, t) { return "variable" == e && S.stream.match(/^\s*[?:]/, !1) || "?" == t ? A(we) : ":" == e ? A(ge) : "spread" == e ? A(we) : T(ge) } function _e(e, t) { return "<" == t ? A(R(">"), ue(ge, ">"), F, _e) : "|" == t || "." == e || "&" == t ? A(ge) : "[" == e ? A(ge, Y("]"), _e) : "extends" == t || "implements" == t ? (S.marked = "keyword", A(ge)) : "?" == t ? A(ge, Y(":"), ge) : void 0 } function Ce(e, t) { if ("<" == t) return A(R(">"), ue(ge, ">"), F, _e) } function Me() { return T(ge, Oe) } function Oe(e, t) { if ("=" == t) return A(ge) } function ke(e, t) { return "enum" == t ? (S.marked = "keyword", A(Ze)) : T(Se, de, Le, je) } function Se(e, t) { return u && E(t) ? (S.marked = "keyword", A(Se)) : "variable" == e ? (j(t), A()) : "spread" == e ? A(Se) : "[" == e ? he(Ae, "]") : "{" == e ? he(Te, "}") : void 0 } function Te(e, t) { return "variable" != e || S.stream.match(/^\s*:/, !1) ? ("variable" == e && (S.marked = "property"), "spread" == e ? A(Se) : "}" == e ? T() : "[" == e ? A(W, Y("]"), Y(":"), Te) : A(Y(":"), Se, Le)) : (j(t), A(Le)) } function Ae() { return T(Se, Le) } function Le(e, t) { if ("=" == t) return A(q) } function je(e) { if ("," == e) return A(ke) } function ze(e, t) { if ("keyword b" == e && "else" == t) return A(R("form", "else"), $, F) } function Ee(e, t) { return "await" == t ? A(Ee) : "(" == e ? A(R(")"), Pe, F) : void 0 } function Pe(e) { return "var" == e ? A(ke, De) : "variable" == e ? A(De) : T(De) } function De(e, t) { return ")" == e ? A() : ";" == e ? A(De) : "in" == t || "of" == t ? (S.marked = "keyword", A(W, De)) : T(W, De) } function He(e, t) { return "*" == t ? (S.marked = "keyword", A(He)) : "variable" == e ? (j(t), A(He)) : "(" == e ? A(V, R(")"), ue(Ne, ")"), F, ve, $, N) : u && "<" == t ? A(R(">"), ue(Me, ">"), F, He) : void 0 } function Ve(e, t) { return "*" == t ? (S.marked = "keyword", A(Ve)) : "variable" == e ? (j(t), A(Ve)) : "(" == e ? A(V, R(")"), ue(Ne, ")"), F, ve, N) : u && "<" == t ? A(R(">"), ue(Me, ">"), F, Ve) : void 0 } function Ie(e, t) { return "keyword" == e || "variable" == e ? (S.marked = "type", A(Ie)) : "<" == t ? A(R(">"), ue(Me, ">"), F) : void 0 } function Ne(e, t) { return "@" == t && A(W, Ne), "spread" == e ? A(Ne) : u && E(t) ? (S.marked = "keyword", A(Ne)) : u && "this" == e ? A(de, Le) : T(Se, de, Le) } function Re(e, t) { return "variable" == e ? Fe(e, t) : Ye(e, t) } function Fe(e, t) { if ("variable" == e) return j(t), A(Ye) } function Ye(e, t) { return "<" == t ? A(R(">"), ue(Me, ">"), F, Ye) : "extends" == t || "implements" == t || u && "," == e ? ("implements" == t && (S.marked = "keyword"), A(u ? ge : W, Ye)) : "{" == e ? A(R("}"), $e, F) : void 0 } function $e(e, t) { return "async" == e || "variable" == e && ("static" == t || "get" == t || "set" == t || u && E(t)) && S.stream.match(/^\s+[\w$\xa1-\uffff]/, !1) ? (S.marked = "keyword", A($e)) : "variable" == e || "keyword" == S.style ? (S.marked = "property", A(Be, $e)) : "number" == e || "string" == e ? A(Be, $e) : "[" == e ? A(W, de, Y("]"), Be, $e) : "*" == t ? (S.marked = "keyword", A($e)) : u && "(" == e ? T(Ve, $e) : ";" == e || "," == e ? A($e) : "}" == e ? A() : "@" == t ? A(W, $e) : void 0 } function Be(e, t) { if ("?" == t) return A(Be); if (":" == e) return A(ge, Le); if ("=" == t) return A(q); var n = S.state.lexical.prev, r = n && "interface" == n.info; return T(r ? Ve : He) } function We(e, t) { return "*" == t ? (S.marked = "keyword", A(Je, Y(";"))) : "default" == t ? (S.marked = "keyword", A(W, Y(";"))) : "{" == e ? A(ue(qe, "}"), Je, Y(";")) : T($) } function qe(e, t) { return "as" == t ? (S.marked = "keyword", A(Y("variable"))) : "variable" == e ? T(q, qe) : void 0 } function Ue(e) { return "string" == e ? A() : "(" == e ? T(W) : "." == e ? T(X) : T(Ke, Ge, Je) } function Ke(e, t) { return "{" == e ? he(Ke, "}") : ("variable" == e && j(t), "*" == t && (S.marked = "keyword"), A(Xe)) } function Ge(e) { if ("," == e) return A(Ke, Ge) } function Xe(e, t) { if ("as" == t) return S.marked = "keyword", A(Ke) } function Je(e, t) { if ("from" == t) return S.marked = "keyword", A(W) } function Qe(e) { return "]" == e ? A() : T(ue(q, "]")) } function Ze() { return T(R("form"), Se, Y("{"), R("}"), ue(et, "}"), F, F) } function et() { return T(Se, Le) } function tt(e, t) { return "operator" == e.lastType || "," == e.lastType || d.test(t.charAt(0)) || /[,.]/.test(t.charAt(0)) } function nt(e, t, n) { return t.tokenize == g && /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType) || "quasi" == t.lastType && /\{\s*$/.test(e.string.slice(0, e.pos - (n || 0))) } return N.lex = !0, F.lex = !0, { startState: function (e) { var t = { tokenize: g, lastType: "sof", cc: [], lexical: new M((e || 0) - o, 0, "block", !1), localVars: n.localVars, context: n.localVars && new P(null, null, !1), indented: e || 0 }; return n.globalVars && "object" == typeof n.globalVars && (t.globalVars = n.globalVars), t }, token: function (e, t) { if (e.sol() && (t.lexical.hasOwnProperty("align") || (t.lexical.align = !1), t.indented = e.indentation(), _(e, t)), t.tokenize != b && e.eatSpace()) return null; var n = t.tokenize(e, t); return "comment" == r ? n : (t.lastType = "operator" != r || "++" != i && "--" != i ? r : "incdec", k(t, n, r, i, e)) }, indent: function (t, r) { if (t.tokenize == b || t.tokenize == x) return e.Pass; if (t.tokenize != g) return 0; var i, s = r && r.charAt(0), c = t.lexical; if (!/^\s*else\b/.test(r)) for (var l = t.cc.length - 1; l >= 0; --l) { var u = t.cc[l]; if (u == F) c = c.prev; else if (u != ze && u != N) break } while (("stat" == c.type || "form" == c.type) && ("}" == s || (i = t.cc[t.cc.length - 1]) && (i == X || i == J) && !/^[,\.=+\-*:?[\(]/.test(r))) c = c.prev; a && ")" == c.type && "stat" == c.prev.type && (c = c.prev); var h = c.type, f = s == h; return "vardef" == h ? c.indented + ("operator" == t.lastType || "," == t.lastType ? c.info.length + 1 : 0) : "form" == h && "{" == s ? c.indented : "form" == h ? c.indented + o : "stat" == h ? c.indented + (tt(t, r) ? a || o : 0) : "switch" != c.info || f || 0 == n.doubleIndentSwitch ? c.align ? c.column + (f ? 0 : 1) : c.indented + (f ? 0 : o) : c.indented + (/^(?:case|default)\b/.test(r) ? o : 2 * o) }, electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, blockCommentStart: c ? null : "/*", blockCommentEnd: c ? null : "*/", blockCommentContinue: c ? null : " * ", lineComment: c ? null : "//", fold: "brace", closeBrackets: "()[]{}''\"\"``", helperType: c ? "json" : "javascript", jsonldMode: s, jsonMode: c, expressionAllowed: nt, skipExpression: function (e) { var t = e.cc[e.cc.length - 1]; t != W && t != q || e.cc.pop() } } })), e.registerHelper("wordChars", "javascript", /[\w$]/), e.defineMIME("text/javascript", "javascript"), e.defineMIME("text/ecmascript", "javascript"), e.defineMIME("application/javascript", "javascript"), e.defineMIME("application/x-javascript", "javascript"), e.defineMIME("application/ecmascript", "javascript"), e.defineMIME("application/json", { name: "javascript", json: !0 }), e.defineMIME("application/x-json", { name: "javascript", json: !0 }), e.defineMIME("application/manifest+json", { name: "javascript", json: !0 }), e.defineMIME("application/ld+json", { name: "javascript", jsonld: !0 }), e.defineMIME("text/typescript", { name: "javascript", typescript: !0 }), e.defineMIME("application/typescript", { name: "javascript", typescript: !0 }) })) }, fa21: function (e, t, n) { var r = n("7530"), i = n("2dcb"), o = n("eac5"); function a(e) { return "function" != typeof e.constructor || o(e) ? {} : r(i(e)) } e.exports = a }, fa5b: function (e, t, n) { e.exports = n("5537")("native-function-to-string", Function.toString) }, fab2: function (e, t, n) { var r = n("7726").document; e.exports = r && r.documentElement }, facd: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"), n = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"), r = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i], i = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, o = e.defineLocale("nl", { months: "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"), monthsShort: function (e, r) { return e ? /-MMM-/.test(r) ? n[e.month()] : t[e.month()] : t }, monthsRegex: i, monthsShortRegex: i, monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, monthsParse: r, longMonthsParse: r, shortMonthsParse: r, weekdays: "zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"), weekdaysShort: "zo._ma._di._wo._do._vr._za.".split("_"), weekdaysMin: "zo_ma_di_wo_do_vr_za".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD-MM-YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm" }, calendar: { sameDay: "[vandaag om] LT", nextDay: "[morgen om] LT", nextWeek: "dddd [om] LT", lastDay: "[gisteren om] LT", lastWeek: "[afgelopen] dddd [om] LT", sameElse: "L" }, relativeTime: { future: "over %s", past: "%s geleden", s: "een paar seconden", ss: "%d seconden", m: "茅茅n minuut", mm: "%d minuten", h: "茅茅n uur", hh: "%d uur", d: "茅茅n dag", dd: "%d dagen", M: "茅茅n maand", MM: "%d maanden", y: "茅茅n jaar", yy: "%d jaar" }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, ordinal: function (e) { return e + (1 === e || 8 === e || e >= 20 ? "ste" : "de") }, week: { dow: 1, doy: 4 } }); return o
+                    }))
+                }, fb15: function (e, t, n) { "use strict"; if (n.r(t), n.d(t, "setFormDesignConfig", (function () { return ck })), n.d(t, "setFormBuildConfig", (function () { return lk })), n.d(t, "KFormDesign", (function () { return uk })), n.d(t, "KFormPreview", (function () { return hk })), n.d(t, "KFormBuild", (function () { return fk })), n.d(t, "KFormItem", (function () { return dk })), "undefined" !== typeof window) { var r = window.document.currentScript, i = n("8875"); r = i(), "currentScript" in document || Object.defineProperty(document, "currentScript", { get: i }); var o = r && r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/); o && (n.p = o[1]) } n("b2a3"), n("a1bc"); var a = n("41b2"), s = n.n(a), c = n("8e8e"), l = n.n(c), u = n("6042"), h = n.n(u), f = n("8bbf"), d = n.n(f), p = n("4d91"), v = n("daa3"), m = n("b488"); function g() { var e = [].slice.call(arguments, 0); return 1 === e.length ? e[0] : function () { for (var t = 0; t < e.length; t++)e[t] && e[t].apply && e[t].apply(this, arguments) } } var y = n("94eb"); function b() { } var x = { mixins: [m["a"]], props: { duration: p["a"].number.def(1.5), closable: p["a"].bool, prefixCls: p["a"].string, update: p["a"].bool, closeIcon: p["a"].any }, watch: { duration: function () { this.restartCloseTimer() } }, mounted: function () { this.startCloseTimer() }, updated: function () { this.update && this.restartCloseTimer() }, beforeDestroy: function () { this.clearCloseTimer(), this.willDestroy = !0 }, methods: { close: function (e) { e && e.stopPropagation(), this.clearCloseTimer(), this.__emit("close") }, startCloseTimer: function () { var e = this; this.clearCloseTimer(), !this.willDestroy && this.duration && (this.closeTimer = setTimeout((function () { e.close() }), 1e3 * this.duration)) }, clearCloseTimer: function () { this.closeTimer && (clearTimeout(this.closeTimer), this.closeTimer = null) }, restartCloseTimer: function () { this.clearCloseTimer(), this.startCloseTimer() } }, render: function () { var e, t = arguments[0], n = this.prefixCls, r = this.closable, i = this.clearCloseTimer, o = this.startCloseTimer, a = this.$slots, s = this.close, c = n + "-notice", l = (e = {}, h()(e, "" + c, 1), h()(e, c + "-closable", r), e), u = Object(v["q"])(this), f = Object(v["g"])(this, "closeIcon"); return t("div", { class: l, style: u || { right: "50%" }, on: { mouseenter: i, mouseleave: o, click: Object(v["k"])(this).click || b } }, [t("div", { class: c + "-content" }, [a["default"]]), r ? t("a", { attrs: { tabIndex: "0" }, on: { click: s }, class: c + "-close" }, [f || t("span", { class: c + "-close-x" })]) : null]) } }, w = n("46cf"), _ = n.n(w), C = "undefined" !== typeof window, M = C && window.navigator.userAgent.toLowerCase(), O = M && M.indexOf("msie 9.0") > 0; function k(e, t) { for (var n = Object.create(null), r = e.split(","), i = 0; i < r.length; i++)n[r[i]] = !0; return t ? function (e) { return n[e.toLowerCase()] } : function (e) { return n[e] } } var S = k("text,number,password,search,email,tel,url"); function T(e) { e.target.composing = !0 } function A(e) { e.target.composing && (e.target.composing = !1, L(e.target, "input")) } function L(e, t) { var n = document.createEvent("HTMLEvents"); n.initEvent(t, !0, !0), e.dispatchEvent(n) } function j(e) { return e.directive("ant-input", { inserted: function (e, t, n) { ("textarea" === n.tag || S(e.type)) && (t.modifiers && t.modifiers.lazy || (e.addEventListener("compositionstart", T), e.addEventListener("compositionend", A), e.addEventListener("change", A), O && (e.vmodel = !0))) } }) } O && document.addEventListener("selectionchange", (function () { var e = document.activeElement; e && e.vmodel && L(e, "input") })); var z = { install: function (e) { j(e) } }; function E(e) { return e.directive("decorator", {}) } var P = { install: function (e) { E(e) } }; function D(e) { return e.directive("ant-portal", { inserted: function (e, t) { var n = t.value, r = "function" === typeof n ? n(e) : n; r !== e.parentNode && r.appendChild(e) }, componentUpdated: function (e, t) { var n = t.value, r = "function" === typeof n ? n(e) : n; r !== e.parentNode && r.appendChild(e) } }) } var H = { install: function (e) { e.use(_.a, { name: "ant-ref" }), j(e), E(e), D(e) } }, V = {}, I = function (e) { V.Vue = e, e.use(H) }; V.install = I; var N = V; function R() { } var F = 0, Y = Date.now(); function $() { return "rcNotification_" + Y + "_" + F++ } var B = { mixins: [m["a"]], props: { prefixCls: p["a"].string.def("rc-notification"), transitionName: p["a"].string, animation: p["a"].oneOfType([p["a"].string, p["a"].object]).def("fade"), maxCount: p["a"].number, closeIcon: p["a"].any }, data: function () { return { notices: [] } }, methods: { getTransitionName: function () { var e = this.$props, t = e.transitionName; return !t && e.animation && (t = e.prefixCls + "-" + e.animation), t }, add: function (e) { var t = e.key = e.key || $(), n = this.$props.maxCount; this.setState((function (r) { var i = r.notices, o = i.map((function (e) { return e.key })).indexOf(t), a = i.concat(); return -1 !== o ? a.splice(o, 1, e) : (n && i.length >= n && (e.updateKey = a[0].updateKey || a[0].key, a.shift()), a.push(e)), { notices: a } })) }, remove: function (e) { this.setState((function (t) { return { notices: t.notices.filter((function (t) { return t.key !== e })) } })) } }, render: function (e) { var t = this, n = this.prefixCls, r = this.notices, i = this.remove, o = this.getTransitionName, a = Object(y["a"])(o()), s = r.map((function (o, a) { var s = Boolean(a === r.length - 1 && o.updateKey), c = o.updateKey ? o.updateKey : o.key, l = o.content, u = o.duration, h = o.closable, f = o.onClose, d = o.style, p = o["class"], m = g(i.bind(t, o.key), f), y = { props: { prefixCls: n, duration: u, closable: h, update: s, closeIcon: Object(v["g"])(t, "closeIcon") }, on: { close: m, click: o.onClick || R }, style: d, class: p, key: c }; return e(x, y, ["function" === typeof l ? l(e) : l]) })), c = h()({}, n, 1), l = Object(v["q"])(this); return e("div", { class: c, style: l || { top: "65px", left: "50%" } }, [e("transition-group", a, [s])]) }, newInstance: function (e, t) { var n = e || {}, r = n.getContainer, i = n.style, o = n["class"], a = l()(n, ["getContainer", "style", "class"]), s = document.createElement("div"); if (r) { var c = r(); c.appendChild(s) } else document.body.appendChild(s); var u = N.Vue || d.a; new u({ el: s, mounted: function () { var e = this; this.$nextTick((function () { t({ notice: function (t) { e.$refs.notification.add(t) }, removeNotice: function (t) { e.$refs.notification.remove(t) }, component: e, destroy: function () { e.$destroy(), e.$el.parentNode.removeChild(e.$el) } }) })) }, render: function () { var e = arguments[0], t = { props: a, ref: "notification", style: i, class: o }; return e(B, t) } }) } }, W = B, q = W, U = n("92fa"), K = n.n(U), G = n("9b57"), X = n.n(G), J = n("4d26"), Q = n.n(J), Z = n("3a9b"), ee = n("2adb"), te = { primaryColor: "#333", secondaryColor: "#E6E6E6" }, ne = { name: "AntdIcon", props: ["type", "primaryColor", "secondaryColor"], displayName: "IconVue", definitions: new ee["a"], data: function () { return { twoToneColorPalette: te } }, add: function () { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; t.forEach((function (e) { ne.definitions.set(Object(ee["f"])(e.name, e.theme), e) })) }, clear: function () { ne.definitions.clear() }, get: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : te; if (e) { var n = ne.definitions.get(e); return n && "function" === typeof n.icon && (n = s()({}, n, { icon: n.icon(t.primaryColor, t.secondaryColor) })), n } }, setTwoToneColors: function (e) { var t = e.primaryColor, n = e.secondaryColor; te.primaryColor = t, te.secondaryColor = n || Object(ee["c"])(t) }, getTwoToneColors: function () { return s()({}, te) }, render: function (e) { var t = this.$props, n = t.type, r = t.primaryColor, i = t.secondaryColor, o = void 0, a = te; if (r && (a = { primaryColor: r, secondaryColor: i || Object(ee["c"])(r) }), Object(ee["d"])(n)) o = n; else if ("string" === typeof n && (o = ne.get(n, a), !o)) return null; return o ? (o && "function" === typeof o.icon && (o = s()({}, o, { icon: o.icon(a.primaryColor, a.secondaryColor) })), Object(ee["b"])(e, o.icon, "svg-" + o.name, { attrs: { "data-icon": o.name, width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, on: this.$listeners })) : (Object(ee["e"])("type should be string or icon definiton, but got " + n), null) }, install: function (e) { e.component(ne.name, ne) } }, re = ne, ie = re, oe = new Set; function ae(e) { var t = e.scriptUrl, n = e.extraCommonProps, r = void 0 === n ? {} : n; if ("undefined" !== typeof document && "undefined" !== typeof window && "function" === typeof document.createElement && "string" === typeof t && t.length && !oe.has(t)) { var i = document.createElement("script"); i.setAttribute("src", t), i.setAttribute("data-namespace", t), oe.add(t), document.body.appendChild(i) } var o = { functional: !0, name: "AIconfont", props: Ve.props, render: function (e, t) { var n = t.props, i = t.slots, o = t.listeners, a = t.data, s = n.type, c = l()(n, ["type"]), u = i(), h = u["default"], f = null; s && (f = e("use", { attrs: { "xlink:href": "#" + s } })), h && (f = h); var d = Object(v["w"])(r, a, { props: c, on: o }); return e(Ve, d, [f]) } }; return o } var se = {}; function ce(e, t) { } function le(e, t, n) { t || se[n] || (e(!1, n), se[n] = !0) } function ue(e, t) { le(ce, e, t) } var he = ue, fe = function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : ""; he(e, "[antdv: " + t + "] " + n) }, de = { width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true", focusable: "false" }, pe = /-fill$/, ve = /-o$/, me = /-twotone$/; function ge(e) { var t = null; return pe.test(e) ? t = "filled" : ve.test(e) ? t = "outlined" : me.test(e) && (t = "twoTone"), t } function ye(e) { return e.replace(pe, "").replace(ve, "").replace(me, "") } function be(e, t) { var n = e; return "filled" === t ? n += "-fill" : "outlined" === t ? n += "-o" : "twoTone" === t ? n += "-twotone" : fe(!1, "Icon", "This icon '" + e + "' has unknown theme '" + t + "'"), n } function xe(e) { var t = e; switch (e) { case "cross": t = "close"; break; case "interation": t = "interaction"; break; case "canlendar": t = "calendar"; break; case "colum-height": t = "column-height"; break; default: }return fe(t === e, "Icon", "Icon '" + e + "' was a typo and is now deprecated, please use '" + t + "' instead."), t } var we = { items_per_page: "/ page", jump_to: "Go to", jump_to_confirm: "confirm", page: "", prev_page: "Previous Page", next_page: "Next Page", prev_5: "Previous 5 Pages", next_5: "Next 5 Pages", prev_3: "Previous 3 Pages", next_3: "Next 3 Pages" }, _e = { today: "Today", now: "Now", backToToday: "Back to today", ok: "Ok", clear: "Clear", month: "Month", year: "Year", timeSelect: "select time", dateSelect: "select date", weekSelect: "Choose a week", monthSelect: "Choose a month", yearSelect: "Choose a year", decadeSelect: "Choose a decade", yearFormat: "YYYY", dateFormat: "M/D/YYYY", dayFormat: "D", dateTimeFormat: "M/D/YYYY HH:mm:ss", monthBeforeYear: !0, previousMonth: "Previous month (PageUp)", nextMonth: "Next month (PageDown)", previousYear: "Last year (Control + left)", nextYear: "Next year (Control + right)", previousDecade: "Last decade", nextDecade: "Next decade", previousCentury: "Last century", nextCentury: "Next century" }, Ce = { placeholder: "Select time" }, Me = Ce, Oe = { lang: s()({ placeholder: "Select date", rangePlaceholder: ["Start date", "End date"] }, _e), timePickerLocale: s()({}, Me) }, ke = Oe, Se = ke, Te = { locale: "en", Pagination: we, DatePicker: ke, TimePicker: Me, Calendar: Se, global: { placeholder: "Please select" }, Table: { filterTitle: "Filter menu", filterConfirm: "OK", filterReset: "Reset", selectAll: "Select current page", selectInvert: "Invert current page", sortTitle: "Sort", expand: "Expand row", collapse: "Collapse row" }, Modal: { okText: "OK", cancelText: "Cancel", justOkText: "OK" }, Popconfirm: { okText: "OK", cancelText: "Cancel" }, Transfer: { titles: ["", ""], searchPlaceholder: "Search here", itemUnit: "item", itemsUnit: "items" }, Upload: { uploading: "Uploading...", removeFile: "Remove file", uploadError: "Upload error", previewFile: "Preview file", downloadFile: "Download file" }, Empty: { description: "No Data" }, Icon: { icon: "icon" }, Text: { edit: "Edit", copy: "Copy", copied: "Copied", expand: "Expand" }, PageHeader: { back: "Back" } }, Ae = Te, Le = { name: "LocaleReceiver", props: { componentName: p["a"].string.def("global"), defaultLocale: p["a"].oneOfType([p["a"].object, p["a"].func]), children: p["a"].func }, inject: { localeData: { default: function () { return {} } } }, methods: { getLocale: function () { var e = this.componentName, t = this.defaultLocale, n = t || Ae[e || "global"], r = this.localeData.antLocale, i = e && r ? r[e] : {}; return s()({}, "function" === typeof n ? n() : n, i || {}) }, getLocaleCode: function () { var e = this.localeData.antLocale, t = e && e.locale; return e && e.exist && !t ? Ae.locale : t } }, render: function () { var e = this.$scopedSlots, t = this.children || e["default"], n = this.localeData.antLocale; return t(this.getLocale(), this.getLocaleCode(), n) } }; function je(e) { return ie.setTwoToneColors({ primaryColor: e }) } function ze() { var e = ie.getTwoToneColors(); return e.primaryColor } ie.add.apply(ie, X()(Object.keys(Z).map((function (e) { return Z[e] })))), je("#1890ff"); var Ee = "outlined", Pe = void 0; function De(e, t, n) { var r, i = n.$props, o = n.$slots, a = Object(v["k"])(n), c = i.type, l = i.component, u = i.viewBox, f = i.spin, d = i.theme, p = i.twoToneColor, m = i.rotate, g = i.tabIndex, y = Object(v["c"])(o["default"]); y = 0 === y.length ? void 0 : y, fe(Boolean(c || l || y), "Icon", "Icon should have `type` prop or `component` prop or `children`."); var b = Q()((r = {}, h()(r, "anticon", !0), h()(r, "anticon-" + c, !!c), r)), x = Q()(h()({}, "anticon-spin", !!f || "loading" === c)), w = m ? { msTransform: "rotate(" + m + "deg)", transform: "rotate(" + m + "deg)" } : void 0, _ = { attrs: s()({}, de, { viewBox: u }), class: x, style: w }; u || delete _.attrs.viewBox; var C = function () { if (l) return e(l, _, [y]); if (y) { fe(Boolean(u) || 1 === y.length && "use" === y[0].tag, "Icon", "Make sure that you provide correct `viewBox` prop (default `0 0 1024 1024`) to the icon."); var t = { attrs: s()({}, de), class: x, style: w }; return e("svg", K()([t, { attrs: { viewBox: u } }]), [y]) } if ("string" === typeof c) { var n = c; if (d) { var r = ge(c); fe(!r || d === r, "Icon", "The icon name '" + c + "' already specify a theme '" + r + "', the 'theme' prop '" + d + "' will be ignored.") } return n = be(ye(xe(n)), Pe || d || Ee), e(ie, { attrs: { focusable: "false", type: n, primaryColor: p }, class: x, style: w }) } }, M = g; void 0 === M && "click" in a && (M = -1); var O = { attrs: { "aria-label": c && t.icon + ": " + c, tabIndex: M }, on: a, class: b, staticClass: "" }; return e("i", O, [C()]) } var He = { name: "AIcon", props: { tabIndex: p["a"].number, type: p["a"].string, component: p["a"].any, viewBox: p["a"].any, spin: p["a"].bool.def(!1), rotate: p["a"].number, theme: p["a"].oneOf(["filled", "outlined", "twoTone"]), twoToneColor: p["a"].string, role: p["a"].string }, render: function (e) { var t = this; return e(Le, { attrs: { componentName: "Icon" }, scopedSlots: { default: function (n) { return De(e, n, t) } } }) } }; He.createFromIconfontCN = ae, He.getTwoToneColor = ze, He.setTwoToneColor = je, He.install = function (e) { e.use(N), e.component(He.name, He) }; var Ve = He, Ie = 3, Ne = void 0, Re = void 0, Fe = 1, Ye = "ant-message", $e = "move-up", Be = function () { return document.body }, We = void 0; function qe(e) { Re ? e(Re) : q.newInstance({ prefixCls: Ye, transitionName: $e, style: { top: Ne }, getContainer: Be, maxCount: We }, (function (t) { Re ? e(Re) : (Re = t, e(t)) })) } function Ue(e) { var t = void 0 !== e.duration ? e.duration : Ie, n = { info: "info-circle", success: "check-circle", error: "close-circle", warning: "exclamation-circle", loading: "loading" }[e.type], r = e.key || Fe++, i = new Promise((function (i) { var o = function () { return "function" === typeof e.onClose && e.onClose(), i(!0) }; qe((function (i) { i.notice({ key: r, duration: t, style: {}, content: function (t) { var r = t(Ve, { attrs: { type: n, theme: "loading" === n ? "outlined" : "filled" } }), i = n ? r : ""; return t("div", { class: Ye + "-custom-content" + (e.type ? " " + Ye + "-" + e.type : "") }, [e.icon ? "function" === typeof e.icon ? e.icon(t) : e.icon : i, t("span", ["function" === typeof e.content ? e.content(t) : e.content])]) }, onClose: o }) })) })), o = function () { Re && Re.removeNotice(r) }; return o.then = function (e, t) { return i.then(e, t) }, o.promise = i, o } function Ke(e) { return "[object Object]" === Object.prototype.toString.call(e) && !!e.content } var Ge = { open: Ue, config: function (e) { void 0 !== e.top && (Ne = e.top, Re = null), void 0 !== e.duration && (Ie = e.duration), void 0 !== e.prefixCls && (Ye = e.prefixCls), void 0 !== e.getContainer && (Be = e.getContainer), void 0 !== e.transitionName && ($e = e.transitionName, Re = null), void 0 !== e.maxCount && (We = e.maxCount, Re = null) }, destroy: function () { Re && (Re.destroy(), Re = null) } };["success", "info", "warning", "error", "loading"].forEach((function (e) { Ge[e] = function (t, n, r) { return Ke(t) ? Ge.open(s()({}, t, { type: e })) : ("function" === typeof n && (r = n, n = void 0), Ge.open({ content: t, duration: n, type: e, onClose: r })) } })), Ge.warn = Ge.warning; var Xe = Ge, Je = (n("6cd5"), n("1b98"), n("b8e7"), n("a8fc")), Qe = n.n(Je), Ze = n("51f5"), et = n.n(Ze), tt = n("2593"), nt = n.n(tt), rt = n("327d"), it = n.n(rt); function ot(e, t) { var n = "cannot " + e.method + " " + e.action + " " + t.status + "'", r = new Error(n); return r.status = t.status, r.method = e.method, r.url = e.action, r } function at(e) { var t = e.responseText || e.response; if (!t) return t; try { return JSON.parse(t) } catch (n) { return t } } function st(e) { var t = new window.XMLHttpRequest; e.onProgress && t.upload && (t.upload.onprogress = function (t) { t.total > 0 && (t.percent = t.loaded / t.total * 100), e.onProgress(t) }); var n = new window.FormData; e.data && Object.keys(e.data).forEach((function (t) { var r = e.data[t]; Array.isArray(r) ? r.forEach((function (e) { n.append(t + "[]", e) })) : n.append(t, e.data[t]) })), n.append(e.filename, e.file), t.onerror = function (t) { e.onError(t) }, t.onload = function () { if (t.status < 200 || t.status >= 300) return e.onError(ot(e, t), at(t)); e.onSuccess(at(t), t) }, t.open(e.method, e.action, !0), e.withCredentials && "withCredentials" in t && (t.withCredentials = !0); var r = e.headers || {}; for (var i in null !== r["X-Requested-With"] && t.setRequestHeader("X-Requested-With", "XMLHttpRequest"), r) r.hasOwnProperty(i) && null !== r[i] && t.setRequestHeader(i, r[i]); return t.send(n), { abort: function () { t.abort() } } } var ct = +new Date, lt = 0; function ut() { return "vc-upload-" + ct + "-" + ++lt } function ht(e, t) { return -1 !== e.indexOf(t, e.length - t.length) } var ft = function (e, t) { if (e && t) { var n = Array.isArray(t) ? t : t.split(","), r = e.name || "", i = e.type || "", o = i.replace(/\/.*$/, ""); return n.some((function (e) { var t = e.trim(); return "." === t.charAt(0) ? ht(r.toLowerCase(), t.toLowerCase()) : /\/\*$/.test(t) ? o === t.replace(/\/.*$/, "") : i === t })) } return !0 }; function dt(e, t) { var n = e.createReader(), r = []; function i() { n.readEntries((function (e) { var n = Array.prototype.slice.apply(e); r = r.concat(n); var o = !n.length; o ? t(r) : i() })) } i() } var pt = function (e, t, n) { var r = function e(r, i) { i = i || "", r.isFile ? r.file((function (e) { n(e) && (r.fullPath && !e.webkitRelativePath && (Object.defineProperties(e, { webkitRelativePath: { writable: !0 } }), e.webkitRelativePath = r.fullPath.replace(/^\//, ""), Object.defineProperties(e, { webkitRelativePath: { writable: !1 } })), t([e])) })) : r.isDirectory && dt(r, (function (t) { t.forEach((function (t) { e(t, "" + i + r.name + "/") })) })) }, i = !0, o = !1, a = void 0; try { for (var s, c = e[Symbol.iterator](); !(i = (s = c.next()).done); i = !0) { var l = s.value; r(l.webkitGetAsEntry()) } } catch (u) { o = !0, a = u } finally { try { !i && c["return"] && c["return"]() } finally { if (o) throw a } } }, vt = pt, mt = { componentTag: p["a"].string, prefixCls: p["a"].string, name: p["a"].string, multiple: p["a"].bool, directory: p["a"].bool, disabled: p["a"].bool, accept: p["a"].string, data: p["a"].oneOfType([p["a"].object, p["a"].func]), action: p["a"].oneOfType([p["a"].string, p["a"].func]), headers: p["a"].object, beforeUpload: p["a"].func, customRequest: p["a"].func, withCredentials: p["a"].bool, openFileDialogOnClick: p["a"].bool, transformFile: p["a"].func, method: p["a"].string }, gt = { inheritAttrs: !1, name: "ajaxUploader", mixins: [m["a"]], props: mt, data: function () { return this.reqs = {}, { uid: ut() } }, mounted: function () { this._isMounted = !0 }, beforeDestroy: function () { this._isMounted = !1, this.abort() }, methods: { onChange: function (e) { var t = e.target.files; this.uploadFiles(t), this.reset() }, onClick: function () { var e = this.$refs.fileInputRef; e && e.click() }, onKeyDown: function (e) { "Enter" === e.key && this.onClick() }, onFileDrop: function (e) { var t = this, n = this.$props.multiple; if (e.preventDefault(), "dragover" !== e.type) if (this.directory) vt(e.dataTransfer.items, this.uploadFiles, (function (e) { return ft(e, t.accept) })); else { var r = it()(Array.prototype.slice.call(e.dataTransfer.files), (function (e) { return ft(e, t.accept) })), i = r[0], o = r[1]; !1 === n && (i = i.slice(0, 1)), this.uploadFiles(i), o.length && this.$emit("reject", o) } }, uploadFiles: function (e) { var t = this, n = Array.prototype.slice.call(e); n.map((function (e) { return e.uid = ut(), e })).forEach((function (e) { t.upload(e, n) })) }, upload: function (e, t) { var n = this; if (!this.beforeUpload) return setTimeout((function () { return n.post(e) }), 0); var r = this.beforeUpload(e, t); r && r.then ? r.then((function (t) { var r = Object.prototype.toString.call(t); return "[object File]" === r || "[object Blob]" === r ? n.post(t) : n.post(e) }))["catch"]((function (e) { console && console.log(e) })) : !1 !== r && setTimeout((function () { return n.post(e) }), 0) }, post: function (e) { var t = this; if (this._isMounted) { var n = this.$props, r = n.data, i = n.transformFile, o = void 0 === i ? function (e) { return e } : i; new Promise((function (n) { var r = t.action; if ("function" === typeof r) return n(r(e)); n(r) })).then((function (i) { var a = e.uid, s = t.customRequest || st, c = Promise.resolve(o(e))["catch"]((function (e) { console.error(e) })); c.then((function (o) { "function" === typeof r && (r = r(e)); var c = { action: i, filename: t.name, data: r, file: o, headers: t.headers, withCredentials: t.withCredentials, method: n.method || "post", onProgress: function (n) { t.$emit("progress", n, e) }, onSuccess: function (n, r) { delete t.reqs[a], t.$emit("success", n, e, r) }, onError: function (n, r) { delete t.reqs[a], t.$emit("error", n, r, e) } }; t.reqs[a] = s(c), t.$emit("start", e) })) })) } }, reset: function () { this.setState({ uid: ut() }) }, abort: function (e) { var t = this.reqs; if (e) { var n = e; e && e.uid && (n = e.uid), t[n] && t[n].abort && t[n].abort(), delete t[n] } else Object.keys(t).forEach((function (e) { t[e] && t[e].abort && t[e].abort(), delete t[e] })) } }, render: function () { var e, t = arguments[0], n = this.$props, r = this.$attrs, i = n.componentTag, o = n.prefixCls, a = n.disabled, c = n.multiple, l = n.accept, u = n.directory, f = n.openFileDialogOnClick, d = Q()((e = {}, h()(e, o, !0), h()(e, o + "-disabled", a), e)), p = a ? {} : { click: f ? this.onClick : function () { }, keydown: f ? this.onKeyDown : function () { }, drop: this.onFileDrop, dragover: this.onFileDrop }, m = { on: s()({}, Object(v["k"])(this), p), attrs: { role: "button", tabIndex: a ? null : "0" }, class: d }; return t(i, m, [t("input", { attrs: { id: r.id, type: "file", accept: l, directory: u ? "directory" : null, webkitdirectory: u ? "webkitdirectory" : null, multiple: c }, ref: "fileInputRef", on: { click: function (e) { return e.stopPropagation() }, change: this.onChange }, key: this.uid, style: { display: "none" } }), this.$slots["default"]]) } }, yt = gt, bt = { position: "absolute", top: 0, opacity: 0, filter: "alpha(opacity=0)", left: 0, zIndex: 9999 }, xt = { mixins: [m["a"]], props: { componentTag: p["a"].string, disabled: p["a"].bool, prefixCls: p["a"].string, accept: p["a"].string, multiple: p["a"].bool, data: p["a"].oneOfType([p["a"].object, p["a"].func]), action: p["a"].oneOfType([p["a"].string, p["a"].func]), name: p["a"].string }, data: function () { return this.file = {}, { uploading: !1 } }, methods: { onLoad: function () { if (this.uploading) { var e = this.file, t = void 0; try { var n = this.getIframeDocument(), r = n.getElementsByTagName("script")[0]; r && r.parentNode === n.body && n.body.removeChild(r), t = n.body.innerHTML, this.$emit("success", t, e) } catch (i) { fe(!1, "cross domain error for Upload. Maybe server should return document.domain script. see Note from https://github.com/react-component/upload"), t = "cross-domain", this.$emit("error", i, null, e) } this.endUpload() } }, onChange: function () { var e = this, t = this.getFormInputNode(), n = this.file = { uid: ut(), name: t.value && t.value.substring(t.value.lastIndexOf("\\") + 1, t.value.length) }; this.startUpload(); var r = this.$props; if (!r.beforeUpload) return this.post(n); var i = r.beforeUpload(n); i && i.then ? i.then((function () { e.post(n) }), (function () { e.endUpload() })) : !1 !== i ? this.post(n) : this.endUpload() }, getIframeNode: function () { return this.$refs.iframeRef }, getIframeDocument: function () { return this.getIframeNode().contentDocument }, getFormNode: function () { return this.getIframeDocument().getElementById("form") }, getFormInputNode: function () { return this.getIframeDocument().getElementById("input") }, getFormDataNode: function () { return this.getIframeDocument().getElementById("data") }, getFileForMultiple: function (e) { return this.multiple ? [e] : e }, getIframeHTML: function (e) { var t = "", n = ""; if (e) { var r = "script"; t = "<" + r + '>document.domain="' + e + '";</' + r + ">", n = '<input name="_documentDomain" value="' + e + '" />' } return '\n      <!DOCTYPE html>\n      <html>\n      <head>\n      <meta http-equiv="X-UA-Compatible" content="IE=edge" />\n      <style>\n      body,html {padding:0;margin:0;border:0;overflow:hidden;}\n      </style>\n      ' + t + '\n      </head>\n      <body>\n      <form method="post"\n      encType="multipart/form-data"\n      action="" id="form"\n      style="display:block;height:9999px;position:relative;overflow:hidden;">\n      <input id="input" type="file"\n       name="' + this.name + '"\n       style="position:absolute;top:0;right:0;height:9999px;font-size:9999px;cursor:pointer;"/>\n      ' + n + '\n      <span id="data"></span>\n      </form>\n      </body>\n      </html>\n      ' }, initIframeSrc: function () { this.domain && (this.getIframeNode().src = "javascript:void((function(){\n          var d = document;\n          d.open();\n          d.domain='" + this.domain + "';\n          d.write('');\n          d.close();\n        })())") }, initIframe: function () { var e = this.getIframeNode(), t = e.contentWindow, n = void 0; this.domain = this.domain || "", this.initIframeSrc(); try { n = t.document } catch (r) { this.domain = document.domain, this.initIframeSrc(), t = e.contentWindow, n = t.document } n.open("text/html", "replace"), n.write(this.getIframeHTML(this.domain)), n.close(), this.getFormInputNode().onchange = this.onChange }, endUpload: function () { this.uploading && (this.file = {}, this.uploading = !1, this.setState({ uploading: !1 }), this.initIframe()) }, startUpload: function () { this.uploading || (this.uploading = !0, this.setState({ uploading: !0 })) }, updateIframeWH: function () { var e = this.$el, t = this.getIframeNode(); t.style.height = e.offsetHeight + "px", t.style.width = e.offsetWidth + "px" }, abort: function (e) { if (e) { var t = e; e && e.uid && (t = e.uid), t === this.file.uid && this.endUpload() } else this.endUpload() }, post: function (e) { var t = this, n = this.getFormNode(), r = this.getFormDataNode(), i = this.$props.data; "function" === typeof i && (i = i(e)); var o = document.createDocumentFragment(); for (var a in i) if (i.hasOwnProperty(a)) { var s = document.createElement("input"); s.setAttribute("name", a), s.value = i[a], o.appendChild(s) } r.appendChild(o), new Promise((function (n) { var r = t.action; if ("function" === typeof r) return n(r(e)); n(r) })).then((function (i) { n.setAttribute("action", i), n.submit(), r.innerHTML = "", t.$emit("start", e) })) } }, mounted: function () { var e = this; this.$nextTick((function () { e.updateIframeWH(), e.initIframe() })) }, updated: function () { var e = this; this.$nextTick((function () { e.updateIframeWH() })) }, render: function () { var e, t = arguments[0], n = this.$props, r = n.componentTag, i = n.disabled, o = n.prefixCls, a = s()({}, bt, { display: this.uploading || i ? "none" : "" }), c = Q()((e = {}, h()(e, o, !0), h()(e, o + "-disabled", i), e)); return t(r, { attrs: { className: c }, style: { position: "relative", zIndex: 0 } }, [t("iframe", { ref: "iframeRef", on: { load: this.onLoad }, style: a }), this.$slots["default"]]) } }, wt = xt; function _t() { } var Ct = { componentTag: p["a"].string, prefixCls: p["a"].string, action: p["a"].oneOfType([p["a"].string, p["a"].func]), name: p["a"].string, multipart: p["a"].bool, directory: p["a"].bool, data: p["a"].oneOfType([p["a"].object, p["a"].func]), headers: p["a"].object, accept: p["a"].string, multiple: p["a"].bool, disabled: p["a"].bool, beforeUpload: p["a"].func, customRequest: p["a"].func, withCredentials: p["a"].bool, supportServerRender: p["a"].bool, openFileDialogOnClick: p["a"].bool, transformFile: p["a"].func }, Mt = { name: "Upload", mixins: [m["a"]], inheritAttrs: !1, props: Object(v["t"])(Ct, { componentTag: "span", prefixCls: "rc-upload", data: {}, headers: {}, name: "file", multipart: !1, supportServerRender: !1, multiple: !1, beforeUpload: _t, withCredentials: !1, openFileDialogOnClick: !0 }), data: function () { return { Component: null } }, mounted: function () { var e = this; this.$nextTick((function () { e.supportServerRender && e.setState({ Component: e.getComponent() }, (function () { e.$emit("ready") })) })) }, methods: { getComponent: function () { return "undefined" !== typeof File ? yt : wt }, abort: function (e) { this.$refs.uploaderRef.abort(e) } }, render: function () { var e = arguments[0], t = { props: s()({}, this.$props), on: Object(v["k"])(this), ref: "uploaderRef", attrs: this.$attrs }; if (this.supportServerRender) { var n = this.Component; return n ? e(n, t, [this.$slots["default"]]) : null } var r = this.getComponent(); return e(r, t, [this.$slots["default"]]) } }, Ot = Mt, kt = Ot, St = n("1098"), Tt = n.n(St), At = { functional: !0, PRESENTED_IMAGE_DEFAULT: !0, render: function () { var e = arguments[0]; return e("svg", { attrs: { width: "184", height: "152", viewBox: "0 0 184 152", xmlns: "http://www.w3.org/2000/svg" } }, [e("g", { attrs: { fill: "none", fillRule: "evenodd" } }, [e("g", { attrs: { transform: "translate(24 31.67)" } }, [e("ellipse", { attrs: { fillOpacity: ".8", fill: "#F5F5F7", cx: "67.797", cy: "106.89", rx: "67.797", ry: "12.668" } }), e("path", { attrs: { d: "M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z", fill: "#AEB8C2" } }), e("path", { attrs: { d: "M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z", fill: "url(#linearGradient-1)", transform: "translate(13.56)" } }), e("path", { attrs: { d: "M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z", fill: "#F5F5F7" } }), e("path", { attrs: { d: "M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z", fill: "#DCE0E6" } })]), e("path", { attrs: { d: "M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z", fill: "#DCE0E6" } }), e("g", { attrs: { transform: "translate(149.65 15.383)", fill: "#FFF" } }, [e("ellipse", { attrs: { cx: "20.654", cy: "3.167", rx: "2.849", ry: "2.815" } }), e("path", { attrs: { d: "M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z" } })])])]) } }, Lt = { functional: !0, PRESENTED_IMAGE_SIMPLE: !0, render: function () { var e = arguments[0]; return e("svg", { attrs: { width: "64", height: "41", viewBox: "0 0 64 41", xmlns: "http://www.w3.org/2000/svg" } }, [e("g", { attrs: { transform: "translate(0 1)", fill: "none", fillRule: "evenodd" } }, [e("ellipse", { attrs: { fill: "#F5F5F5", cx: "32", cy: "33", rx: "32", ry: "7" } }), e("g", { attrs: { fillRule: "nonzero", stroke: "#D9D9D9" } }, [e("path", { attrs: { d: "M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z" } }), e("path", { attrs: { d: "M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z", fill: "#FAFAFA" } })])])]) } }, jt = function () { return { prefixCls: p["a"].string, image: p["a"].any, description: p["a"].any, imageStyle: p["a"].object } }, zt = { name: "AEmpty", props: s()({}, jt()), methods: { renderEmpty: function (e) { var t = this.$createElement, n = this.$props, r = n.prefixCls, i = n.imageStyle, o = Vt.getPrefixCls("empty", r), a = Object(v["g"])(this, "image") || t(At), s = Object(v["g"])(this, "description"), c = "undefined" !== typeof s ? s : e.description, l = "string" === typeof c ? c : "empty", u = h()({}, o, !0), f = null; if ("string" === typeof a) f = t("img", { attrs: { alt: l, src: a } }); else if ("object" === ("undefined" === typeof a ? "undefined" : Tt()(a)) && a.PRESENTED_IMAGE_SIMPLE) { var d = a; f = t(d), u[o + "-normal"] = !0 } else f = a; return t("div", K()([{ class: u }, { on: Object(v["k"])(this) }]), [t("div", { class: o + "-image", style: i }, [f]), c && t("p", { class: o + "-description" }, [c]), this.$slots["default"] && t("div", { class: o + "-footer" }, [this.$slots["default"]])]) } }, render: function () { var e = arguments[0]; return e(Le, { attrs: { componentName: "Empty" }, scopedSlots: { default: this.renderEmpty } }) } }; zt.PRESENTED_IMAGE_DEFAULT = At, zt.PRESENTED_IMAGE_SIMPLE = Lt, zt.install = function (e) { e.use(N), e.component(zt.name, zt) }; var Et = zt, Pt = { functional: !0, inject: { configProvider: { default: function () { return Vt } } }, props: { componentName: p["a"].string }, render: function (e, t) { var n = arguments[0], r = t.props, i = t.injections; function o(e) { var t = i.configProvider.getPrefixCls, r = t("empty"); switch (e) { case "Table": case "List": return n(Et, { attrs: { image: Et.PRESENTED_IMAGE_SIMPLE } }); case "Select": case "TreeSelect": case "Cascader": case "Transfer": case "Mentions": return n(Et, { attrs: { image: Et.PRESENTED_IMAGE_SIMPLE }, class: r + "-small" }); default: return n(Et) } } return o(r.componentName) } }; function Dt(e, t) { return e(Pt, { attrs: { componentName: t } }) } var Ht = Dt, Vt = { getPrefixCls: function (e, t) { return t || "ant-" + e }, renderEmpty: Ht }; function It(e) { var t = e.uid, n = e.name; return !(!t && 0 !== t) && !!["string", "number"].includes("undefined" === typeof t ? "undefined" : Tt()(t)) && "" !== n && "string" === typeof n } p["a"].oneOf(["error", "success", "done", "uploading", "removed"]), p["a"].custom(It), p["a"].arrayOf(p["a"].custom(It)), p["a"].object; var Nt = p["a"].shape({ showRemoveIcon: p["a"].bool, showPreviewIcon: p["a"].bool }).loose, Rt = p["a"].shape({ uploading: p["a"].string, removeFile: p["a"].string, downloadFile: p["a"].string, uploadError: p["a"].string, previewFile: p["a"].string }).loose, Ft = { type: p["a"].oneOf(["drag", "select"]), name: p["a"].string, defaultFileList: p["a"].arrayOf(p["a"].custom(It)), fileList: p["a"].arrayOf(p["a"].custom(It)), action: p["a"].oneOfType([p["a"].string, p["a"].func]), directory: p["a"].bool, data: p["a"].oneOfType([p["a"].object, p["a"].func]), method: p["a"].oneOf(["POST", "PUT", "post", "put"]), headers: p["a"].object, showUploadList: p["a"].oneOfType([p["a"].bool, Nt]), multiple: p["a"].bool, accept: p["a"].string, beforeUpload: p["a"].func, listType: p["a"].oneOf(["text", "picture", "picture-card"]), remove: p["a"].func, supportServerRender: p["a"].bool, disabled: p["a"].bool, prefixCls: p["a"].string, customRequest: p["a"].func, withCredentials: p["a"].bool, openFileDialogOnClick: p["a"].bool, locale: Rt, height: p["a"].number, id: p["a"].string, previewFile: p["a"].func, transformFile: p["a"].func }, Yt = (p["a"].arrayOf(p["a"].custom(It)), p["a"].string, { listType: p["a"].oneOf(["text", "picture", "picture-card"]), items: p["a"].arrayOf(p["a"].custom(It)), progressAttr: p["a"].object, prefixCls: p["a"].string, showRemoveIcon: p["a"].bool, showDownloadIcon: p["a"].bool, showPreviewIcon: p["a"].bool, locale: Rt, previewFile: p["a"].func }), $t = { name: "AUploadDragger", props: Ft, render: function () { var e = arguments[0], t = Object(v["l"])(this), n = { props: s()({}, t, { type: "drag" }), on: Object(v["k"])(this), style: { height: this.height } }; return e(Xi, n, [this.$slots["default"]]) } }; function Bt() { return !0 } function Wt(e) { return s()({}, e, { lastModified: e.lastModified, lastModifiedDate: e.lastModifiedDate, name: e.name, size: e.size, type: e.type, uid: e.uid, percent: 0, originFileObj: e }) } function qt() { var e = .1, t = .01, n = .98; return function (r) { var i = r; return i >= n || (i += e, e -= t, e < .001 && (e = .001)), i } } function Ut(e, t) { var n = void 0 !== e.uid ? "uid" : "name"; return t.filter((function (t) { return t[n] === e[n] }))[0] } function Kt(e, t) { var n = void 0 !== e.uid ? "uid" : "name", r = t.filter((function (t) { return t[n] !== e[n] })); return r.length === t.length ? null : r } var Gt = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", t = e.split("/"), n = t[t.length - 1], r = n.split(/#|\?/)[0]; return (/\.[^./\\]*$/.exec(r) || [""])[0] }, Xt = function (e) { return !!e && 0 === e.indexOf("image/") }, Jt = function (e) { if (Xt(e.type)) return !0; var t = e.thumbUrl || e.url, n = Gt(t); return !(!/^data:image\//.test(t) && !/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(n)) || !/^data:/.test(t) && !n }, Qt = 200; function Zt(e) { return new Promise((function (t) { if (Xt(e.type)) { var n = document.createElement("canvas"); n.width = Qt, n.height = Qt, n.style.cssText = "position: fixed; left: 0; top: 0; width: " + Qt + "px; height: " + Qt + "px; z-index: 9999; display: none;", document.body.appendChild(n); var r = n.getContext("2d"), i = new Image; i.onload = function () { var e = i.width, o = i.height, a = Qt, s = Qt, c = 0, l = 0; e < o ? (s = o * (Qt / e), l = -(s - a) / 2) : (a = e * (Qt / o), c = -(a - s) / 2), r.drawImage(i, c, l, a, s); var u = n.toDataURL(); document.body.removeChild(n), t(u) }, i.src = window.URL.createObjectURL(e) } else t("") })) } var en = n("7b05"); function tn(e, t) { var n = t; while (n) { if (n === e) return !0; n = n.parentNode } return !1 } var nn, rn = n("d41d"), on = n("2c80"), an = n.n(on); function sn(e, t, n, r) { return an()(e, t, n, r) } function cn(e) { return cn = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, cn(e) } function ln(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function un(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function hn(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? un(n, !0).forEach((function (t) { ln(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : un(n).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } var fn = { Webkit: "-webkit-", Moz: "-moz-", ms: "-ms-", O: "-o-" }; function dn() { if (void 0 !== nn) return nn; nn = ""; var e = document.createElement("p").style, t = "Transform"; for (var n in fn) n + t in e && (nn = n); return nn } function pn() { return dn() ? "".concat(dn(), "TransitionProperty") : "transitionProperty" } function vn() { return dn() ? "".concat(dn(), "Transform") : "transform" } function mn(e, t) { var n = pn(); n && (e.style[n] = t, "transitionProperty" !== n && (e.style.transitionProperty = t)) } function gn(e, t) { var n = vn(); n && (e.style[n] = t, "transform" !== n && (e.style.transform = t)) } function yn(e) { return e.style.transitionProperty || e.style[pn()] } function bn(e) { var t = window.getComputedStyle(e, null), n = t.getPropertyValue("transform") || t.getPropertyValue(vn()); if (n && "none" !== n) { var r = n.replace(/[^0-9\-.,]/g, "").split(","); return { x: parseFloat(r[12] || r[4], 0), y: parseFloat(r[13] || r[5], 0) } } return { x: 0, y: 0 } } var xn = /matrix\((.*)\)/, wn = /matrix3d\((.*)\)/; function _n(e, t) { var n = window.getComputedStyle(e, null), r = n.getPropertyValue("transform") || n.getPropertyValue(vn()); if (r && "none" !== r) { var i, o = r.match(xn); if (o) o = o[1], i = o.split(",").map((function (e) { return parseFloat(e, 10) })), i[4] = t.x, i[5] = t.y, gn(e, "matrix(".concat(i.join(","), ")")); else { var a = r.match(wn)[1]; i = a.split(",").map((function (e) { return parseFloat(e, 10) })), i[12] = t.x, i[13] = t.y, gn(e, "matrix3d(".concat(i.join(","), ")")) } } else gn(e, "translateX(".concat(t.x, "px) translateY(").concat(t.y, "px) translateZ(0)")) } var Cn, Mn = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source; function On(e) { var t = e.style.display; e.style.display = "none", e.offsetHeight, e.style.display = t } function kn(e, t, n) { var r = n; if ("object" !== cn(t)) return "undefined" !== typeof r ? ("number" === typeof r && (r = "".concat(r, "px")), void (e.style[t] = r)) : Cn(e, t); for (var i in t) t.hasOwnProperty(i) && kn(e, i, t[i]) } function Sn(e) { var t, n, r, i = e.ownerDocument, o = i.body, a = i && i.documentElement; return t = e.getBoundingClientRect(), n = t.left, r = t.top, n -= a.clientLeft || o.clientLeft || 0, r -= a.clientTop || o.clientTop || 0, { left: n, top: r } } function Tn(e, t) { var n = e["page".concat(t ? "Y" : "X", "Offset")], r = "scroll".concat(t ? "Top" : "Left"); if ("number" !== typeof n) { var i = e.document; n = i.documentElement[r], "number" !== typeof n && (n = i.body[r]) } return n } function An(e) { return Tn(e) } function Ln(e) { return Tn(e, !0) } function jn(e) { var t = Sn(e), n = e.ownerDocument, r = n.defaultView || n.parentWindow; return t.left += An(r), t.top += Ln(r), t } function zn(e) { return null !== e && void 0 !== e && e == e.window } function En(e) { return zn(e) ? e.document : 9 === e.nodeType ? e : e.ownerDocument } function Pn(e, t, n) { var r = n, i = "", o = En(e); return r = r || o.defaultView.getComputedStyle(e, null), r && (i = r.getPropertyValue(t) || r[t]), i } var Dn = new RegExp("^(".concat(Mn, ")(?!px)[a-z%]+$"), "i"), Hn = /^(top|right|bottom|left)$/, Vn = "currentStyle", In = "runtimeStyle", Nn = "left", Rn = "px"; function Fn(e, t) { var n = e[Vn] && e[Vn][t]; if (Dn.test(n) && !Hn.test(t)) { var r = e.style, i = r[Nn], o = e[In][Nn]; e[In][Nn] = e[Vn][Nn], r[Nn] = "fontSize" === t ? "1em" : n || 0, n = r.pixelLeft + Rn, r[Nn] = i, e[In][Nn] = o } return "" === n ? "auto" : n } function Yn(e, t) { return "left" === e ? t.useCssRight ? "right" : e : t.useCssBottom ? "bottom" : e } function $n(e) { return "left" === e ? "right" : "right" === e ? "left" : "top" === e ? "bottom" : "bottom" === e ? "top" : void 0 } function Bn(e, t, n) { "static" === kn(e, "position") && (e.style.position = "relative"); var r = -999, i = -999, o = Yn("left", n), a = Yn("top", n), s = $n(o), c = $n(a); "left" !== o && (r = 999), "top" !== a && (i = 999); var l = "", u = jn(e); ("left" in t || "top" in t) && (l = yn(e) || "", mn(e, "none")), "left" in t && (e.style[s] = "", e.style[o] = "".concat(r, "px")), "top" in t && (e.style[c] = "", e.style[a] = "".concat(i, "px")), On(e); var h = jn(e), f = {}; for (var d in t) if (t.hasOwnProperty(d)) { var p = Yn(d, n), v = "left" === d ? r : i, m = u[d] - h[d]; f[p] = p === d ? v + m : v - m } kn(e, f), On(e), ("left" in t || "top" in t) && mn(e, l); var g = {}; for (var y in t) if (t.hasOwnProperty(y)) { var b = Yn(y, n), x = t[y] - u[y]; g[b] = y === b ? f[b] + x : f[b] - x } kn(e, g) } function Wn(e, t) { var n = jn(e), r = bn(e), i = { x: r.x, y: r.y }; "left" in t && (i.x = r.x + t.left - n.left), "top" in t && (i.y = r.y + t.top - n.top), _n(e, i) } function qn(e, t, n) { if (n.ignoreShake) { var r = jn(e), i = r.left.toFixed(0), o = r.top.toFixed(0), a = t.left.toFixed(0), s = t.top.toFixed(0); if (i === a && o === s) return } n.useCssRight || n.useCssBottom ? Bn(e, t, n) : n.useCssTransform && vn() in document.body.style ? Wn(e, t) : Bn(e, t, n) } function Un(e, t) { for (var n = 0; n < e.length; n++)t(e[n]) } function Kn(e) { return "border-box" === Cn(e, "boxSizing") } "undefined" !== typeof window && (Cn = window.getComputedStyle ? Pn : Fn); var Gn = ["margin", "border", "padding"], Xn = -1, Jn = 2, Qn = 1, Zn = 0; function er(e, t, n) { var r, i = {}, o = e.style; for (r in t) t.hasOwnProperty(r) && (i[r] = o[r], o[r] = t[r]); for (r in n.call(e), t) t.hasOwnProperty(r) && (o[r] = i[r]) } function tr(e, t, n) { var r, i, o, a = 0; for (i = 0; i < t.length; i++)if (r = t[i], r) for (o = 0; o < n.length; o++) { var s = void 0; s = "border" === r ? "".concat(r).concat(n[o], "Width") : r + n[o], a += parseFloat(Cn(e, s)) || 0 } return a } var nr = { getParent: function (e) { var t = e; do { t = 11 === t.nodeType && t.host ? t.host : t.parentNode } while (t && 1 !== t.nodeType && 9 !== t.nodeType); return t } }; function rr(e, t, n) { var r = n; if (zn(e)) return "width" === t ? nr.viewportWidth(e) : nr.viewportHeight(e); if (9 === e.nodeType) return "width" === t ? nr.docWidth(e) : nr.docHeight(e); var i = "width" === t ? ["Left", "Right"] : ["Top", "Bottom"], o = "width" === t ? e.getBoundingClientRect().width : e.getBoundingClientRect().height, a = (Cn(e), Kn(e)), s = 0; (null === o || void 0 === o || o <= 0) && (o = void 0, s = Cn(e, t), (null === s || void 0 === s || Number(s) < 0) && (s = e.style[t] || 0), s = parseFloat(s) || 0), void 0 === r && (r = a ? Qn : Xn); var c = void 0 !== o || a, l = o || s; return r === Xn ? c ? l - tr(e, ["border", "padding"], i) : s : c ? r === Qn ? l : l + (r === Jn ? -tr(e, ["border"], i) : tr(e, ["margin"], i)) : s + tr(e, Gn.slice(r), i) } Un(["Width", "Height"], (function (e) { nr["doc".concat(e)] = function (t) { var n = t.document; return Math.max(n.documentElement["scroll".concat(e)], n.body["scroll".concat(e)], nr["viewport".concat(e)](n)) }, nr["viewport".concat(e)] = function (t) { var n = "client".concat(e), r = t.document, i = r.body, o = r.documentElement, a = o[n]; return "CSS1Compat" === r.compatMode && a || i && i[n] || a } })); var ir = { position: "absolute", visibility: "hidden", display: "block" }; function or() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; var r, i = t[0]; return 0 !== i.offsetWidth ? r = rr.apply(void 0, t) : er(i, ir, (function () { r = rr.apply(void 0, t) })), r } function ar(e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]); return e } Un(["width", "height"], (function (e) { var t = e.charAt(0).toUpperCase() + e.slice(1); nr["outer".concat(t)] = function (t, n) { return t && or(t, e, n ? Zn : Qn) }; var n = "width" === e ? ["Left", "Right"] : ["Top", "Bottom"]; nr[e] = function (t, r) { var i = r; if (void 0 === i) return t && or(t, e, Xn); if (t) { Cn(t); var o = Kn(t); return o && (i += tr(t, ["padding", "border"], n)), kn(t, e, i) } } })); var sr = { getWindow: function (e) { if (e && e.document && e.setTimeout) return e; var t = e.ownerDocument || e; return t.defaultView || t.parentWindow }, getDocument: En, offset: function (e, t, n) { if ("undefined" === typeof t) return jn(e); qn(e, t, n || {}) }, isWindow: zn, each: Un, css: kn, clone: function (e) { var t, n = {}; for (t in e) e.hasOwnProperty(t) && (n[t] = e[t]); var r = e.overflow; if (r) for (t in e) e.hasOwnProperty(t) && (n.overflow[t] = e.overflow[t]); return n }, mix: ar, getWindowScrollLeft: function (e) { return An(e) }, getWindowScrollTop: function (e) { return Ln(e) }, merge: function () { for (var e = {}, t = 0; t < arguments.length; t++)sr.mix(e, t < 0 || arguments.length <= t ? void 0 : arguments[t]); return e }, viewportWidth: 0, viewportHeight: 0 }; ar(sr, nr); var cr = sr.getParent; function lr(e) { if (sr.isWindow(e) || 9 === e.nodeType) return null; var t, n = sr.getDocument(e), r = n.body, i = sr.css(e, "position"), o = "fixed" === i || "absolute" === i; if (!o) return "html" === e.nodeName.toLowerCase() ? null : cr(e); for (t = cr(e); t && t !== r && 9 !== t.nodeType; t = cr(t))if (i = sr.css(t, "position"), "static" !== i) return t; return null } var ur = sr.getParent; function hr(e) { if (sr.isWindow(e) || 9 === e.nodeType) return !1; var t = sr.getDocument(e), n = t.body, r = null; for (r = ur(e); r && r !== n; r = ur(r)) { var i = sr.css(r, "position"); if ("fixed" === i) return !0 } return !1 } function fr(e, t) { var n = { left: 0, right: 1 / 0, top: 0, bottom: 1 / 0 }, r = lr(e), i = sr.getDocument(e), o = i.defaultView || i.parentWindow, a = i.body, s = i.documentElement; while (r) { if (-1 !== navigator.userAgent.indexOf("MSIE") && 0 === r.clientWidth || r === a || r === s || "visible" === sr.css(r, "overflow")) { if (r === a || r === s) break } else { var c = sr.offset(r); c.left += r.clientLeft, c.top += r.clientTop, n.top = Math.max(n.top, c.top), n.right = Math.min(n.right, c.left + r.clientWidth), n.bottom = Math.min(n.bottom, c.top + r.clientHeight), n.left = Math.max(n.left, c.left) } r = lr(r) } var l = null; if (!sr.isWindow(e) && 9 !== e.nodeType) { l = e.style.position; var u = sr.css(e, "position"); "absolute" === u && (e.style.position = "fixed") } var h = sr.getWindowScrollLeft(o), f = sr.getWindowScrollTop(o), d = sr.viewportWidth(o), p = sr.viewportHeight(o), v = s.scrollWidth, m = s.scrollHeight, g = window.getComputedStyle(a); if ("hidden" === g.overflowX && (v = o.innerWidth), "hidden" === g.overflowY && (m = o.innerHeight), e.style && (e.style.position = l), t || hr(e)) n.left = Math.max(n.left, h), n.top = Math.max(n.top, f), n.right = Math.min(n.right, h + d), n.bottom = Math.min(n.bottom, f + p); else { var y = Math.max(v, h + d); n.right = Math.min(n.right, y); var b = Math.max(m, f + p); n.bottom = Math.min(n.bottom, b) } return n.top >= 0 && n.left >= 0 && n.bottom > n.top && n.right > n.left ? n : null } function dr(e, t, n, r) { var i = sr.clone(e), o = { width: t.width, height: t.height }; return r.adjustX && i.left < n.left && (i.left = n.left), r.resizeWidth && i.left >= n.left && i.left + o.width > n.right && (o.width -= i.left + o.width - n.right), r.adjustX && i.left + o.width > n.right && (i.left = Math.max(n.right - o.width, n.left)), r.adjustY && i.top < n.top && (i.top = n.top), r.resizeHeight && i.top >= n.top && i.top + o.height > n.bottom && (o.height -= i.top + o.height - n.bottom), r.adjustY && i.top + o.height > n.bottom && (i.top = Math.max(n.bottom - o.height, n.top)), sr.mix(i, o) } function pr(e) { var t, n, r; if (sr.isWindow(e) || 9 === e.nodeType) { var i = sr.getWindow(e); t = { left: sr.getWindowScrollLeft(i), top: sr.getWindowScrollTop(i) }, n = sr.viewportWidth(i), r = sr.viewportHeight(i) } else t = sr.offset(e), n = sr.outerWidth(e), r = sr.outerHeight(e); return t.width = n, t.height = r, t } function vr(e, t) { var n = t.charAt(0), r = t.charAt(1), i = e.width, o = e.height, a = e.left, s = e.top; return "c" === n ? s += o / 2 : "b" === n && (s += o), "c" === r ? a += i / 2 : "r" === r && (a += i), { left: a, top: s } } function mr(e, t, n, r, i) { var o = vr(t, n[1]), a = vr(e, n[0]), s = [a.left - o.left, a.top - o.top]; return { left: Math.round(e.left - s[0] + r[0] - i[0]), top: Math.round(e.top - s[1] + r[1] - i[1]) } } function gr(e, t, n) { return e.left < n.left || e.left + t.width > n.right } function yr(e, t, n) { return e.top < n.top || e.top + t.height > n.bottom } function br(e, t, n) { return e.left > n.right || e.left + t.width < n.left } function xr(e, t, n) { return e.top > n.bottom || e.top + t.height < n.top } function wr(e, t, n) { var r = []; return sr.each(e, (function (e) { r.push(e.replace(t, (function (e) { return n[e] }))) })), r } function _r(e, t) { return e[t] = -e[t], e } function Cr(e, t) { var n; return n = /%$/.test(e) ? parseInt(e.substring(0, e.length - 1), 10) / 100 * t : parseInt(e, 10), n || 0 } function Mr(e, t) { e[0] = Cr(e[0], t.width), e[1] = Cr(e[1], t.height) } function Or(e, t, n, r) { var i = n.points, o = n.offset || [0, 0], a = n.targetOffset || [0, 0], s = n.overflow, c = n.source || e; o = [].concat(o), a = [].concat(a), s = s || {}; var l = {}, u = 0, h = !(!s || !s.alwaysByViewport), f = fr(c, h), d = pr(c); Mr(o, d), Mr(a, t); var p = mr(d, t, i, o, a), v = sr.merge(d, p); if (f && (s.adjustX || s.adjustY) && r) { if (s.adjustX && gr(p, d, f)) { var m = wr(i, /[lr]/gi, { l: "r", r: "l" }), g = _r(o, 0), y = _r(a, 0), b = mr(d, t, m, g, y); br(b, d, f) || (u = 1, i = m, o = g, a = y) } if (s.adjustY && yr(p, d, f)) { var x = wr(i, /[tb]/gi, { t: "b", b: "t" }), w = _r(o, 1), _ = _r(a, 1), C = mr(d, t, x, w, _); xr(C, d, f) || (u = 1, i = x, o = w, a = _) } u && (p = mr(d, t, i, o, a), sr.mix(v, p)); var M = gr(p, d, f), O = yr(p, d, f); if (M || O) { var k = i; M && (k = wr(i, /[lr]/gi, { l: "r", r: "l" })), O && (k = wr(i, /[tb]/gi, { t: "b", b: "t" })), i = k, o = n.offset || [0, 0], a = n.targetOffset || [0, 0] } l.adjustX = s.adjustX && M, l.adjustY = s.adjustY && O, (l.adjustX || l.adjustY) && (v = dr(p, d, f, l)) } return v.width !== d.width && sr.css(c, "width", sr.width(c) + v.width - d.width), v.height !== d.height && sr.css(c, "height", sr.height(c) + v.height - d.height), sr.offset(c, { left: v.left, top: v.top }, { useCssRight: n.useCssRight, useCssBottom: n.useCssBottom, useCssTransform: n.useCssTransform, ignoreShake: n.ignoreShake }), { points: i, offset: o, targetOffset: a, overflow: l } } function kr(e, t) { var n = fr(e, t), r = pr(e); return !n || r.left + r.width <= n.left || r.top + r.height <= n.top || r.left >= n.right || r.top >= n.bottom } function Sr(e, t, n) { var r = n.target || t, i = pr(r), o = !kr(r, n.overflow && n.overflow.alwaysByViewport); return Or(e, i, n, o) } function Tr(e, t, n) { var r, i, o = sr.getDocument(e), a = o.defaultView || o.parentWindow, s = sr.getWindowScrollLeft(a), c = sr.getWindowScrollTop(a), l = sr.viewportWidth(a), u = sr.viewportHeight(a); r = "pageX" in t ? t.pageX : s + t.clientX, i = "pageY" in t ? t.pageY : c + t.clientY; var h = { left: r, top: i, width: 0, height: 0 }, f = r >= 0 && r <= s + l && i >= 0 && i <= c + u, d = [n.points[0], "cc"]; return Or(e, h, hn({}, n, { points: d }), f) } function Ar(e, t) { var n = void 0; function r() { n && (clearTimeout(n), n = null) } function i() { r(), n = setTimeout(e, t) } return i.clear = r, i } function Lr(e, t) { return e === t || !(!e || !t) && ("pageX" in t && "pageY" in t ? e.pageX === t.pageX && e.pageY === t.pageY : "clientX" in t && "clientY" in t && e.clientX === t.clientX && e.clientY === t.clientY) } function jr(e) { return e && "object" === ("undefined" === typeof e ? "undefined" : Tt()(e)) && e.window === e } function zr(e, t) { var n = Math.floor(e), r = Math.floor(t); return Math.abs(n - r) <= 1 } function Er(e, t) { e !== document.activeElement && tn(t, e) && e.focus() } Sr.__getOffsetParent = lr, Sr.__getVisibleRectForElement = fr; var Pr = n("0644"), Dr = n.n(Pr); function Hr(e) { return "function" === typeof e && e ? e() : null } function Vr(e) { return "object" === ("undefined" === typeof e ? "undefined" : Tt()(e)) && e ? e : null } var Ir = { props: { childrenProps: p["a"].object, align: p["a"].object.isRequired, target: p["a"].oneOfType([p["a"].func, p["a"].object]).def((function () { return window })), monitorBufferTime: p["a"].number.def(50), monitorWindowResize: p["a"].bool.def(!1), disabled: p["a"].bool.def(!1) }, data: function () { return this.aligned = !1, {} }, mounted: function () { var e = this; this.$nextTick((function () { e.prevProps = s()({}, e.$props); var t = e.$props; !e.aligned && e.forceAlign(), !t.disabled && t.monitorWindowResize && e.startMonitorWindowResize() })) }, updated: function () { var e = this; this.$nextTick((function () { var t = e.prevProps, n = e.$props, r = !1; if (!n.disabled) { var i = e.$el, o = i ? i.getBoundingClientRect() : null; if (t.disabled) r = !0; else { var a = Hr(t.target), c = Hr(n.target), l = Vr(t.target), u = Vr(n.target); jr(a) && jr(c) ? r = !1 : (a !== c || a && !c && u || l && u && c || u && !Lr(l, u)) && (r = !0); var h = e.sourceRect || {}; r || !i || zr(h.width, o.width) && zr(h.height, o.height) || (r = !0) } e.sourceRect = o } r && e.forceAlign(), n.monitorWindowResize && !n.disabled ? e.startMonitorWindowResize() : e.stopMonitorWindowResize(), e.prevProps = s()({}, e.$props, { align: Dr()(e.$props.align) }) })) }, beforeDestroy: function () { this.stopMonitorWindowResize() }, methods: { startMonitorWindowResize: function () { this.resizeHandler || (this.bufferMonitor = Ar(this.forceAlign, this.$props.monitorBufferTime), this.resizeHandler = sn(window, "resize", this.bufferMonitor)) }, stopMonitorWindowResize: function () { this.resizeHandler && (this.bufferMonitor.clear(), this.resizeHandler.remove(), this.resizeHandler = null) }, forceAlign: function () { var e = this.$props, t = e.disabled, n = e.target, r = e.align; if (!t && n) { var i = this.$el, o = Object(v["k"])(this), a = void 0, s = Hr(n), c = Vr(n), l = document.activeElement; s ? a = Sr(i, s, r) : c && (a = Tr(i, c, r)), Er(l, i), this.aligned = !0, o.align && o.align(i, a) } } }, render: function () { var e = this.$props.childrenProps, t = Object(v["n"])(this)[0]; return t && e ? Object(en["a"])(t, { props: e }) : t } }, Nr = Ir, Rr = { props: { visible: p["a"].bool, hiddenClassName: p["a"].string }, render: function () { var e = arguments[0], t = this.$props, n = t.hiddenClassName, r = (t.visible, null); if (n || !this.$slots["default"] || this.$slots["default"].length > 1) { var i = ""; r = e("div", { class: i }, [this.$slots["default"]]) } else r = this.$slots["default"][0]; return r } }, Fr = { props: { hiddenClassName: p["a"].string.def(""), prefixCls: p["a"].string, visible: p["a"].bool }, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.visible, i = t.hiddenClassName, o = { on: Object(v["k"])(this) }; return e("div", K()([o, { class: r ? "" : i }]), [e(Rr, { class: n + "-content", attrs: { visible: r } }, [this.$slots["default"]])]) } }, Yr = n("18ce"), $r = { name: "VCTriggerPopup", mixins: [m["a"]], props: { visible: p["a"].bool, getClassNameFromAlign: p["a"].func, getRootDomNode: p["a"].func, align: p["a"].any, destroyPopupOnHide: p["a"].bool, prefixCls: p["a"].string, getContainer: p["a"].func, transitionName: p["a"].string, animation: p["a"].any, maskAnimation: p["a"].string, maskTransitionName: p["a"].string, mask: p["a"].bool, zIndex: p["a"].number, popupClassName: p["a"].any, popupStyle: p["a"].object.def((function () { return {} })), stretch: p["a"].string, point: p["a"].shape({ pageX: p["a"].number, pageY: p["a"].number }) }, data: function () { return this.domEl = null, { stretchChecked: !1, targetWidth: void 0, targetHeight: void 0 } }, mounted: function () { var e = this; this.$nextTick((function () { e.rootNode = e.getPopupDomNode(), e.setStretchSize() })) }, updated: function () { var e = this; this.$nextTick((function () { e.setStretchSize() })) }, beforeDestroy: function () { this.$el.parentNode ? this.$el.parentNode.removeChild(this.$el) : this.$el.remove && this.$el.remove() }, methods: { onAlign: function (e, t) { var n = this.$props, r = n.getClassNameFromAlign(t); this.currentAlignClassName !== r && (this.currentAlignClassName = r, e.className = this.getClassName(r)); var i = Object(v["k"])(this); i.align && i.align(e, t) }, setStretchSize: function () { var e = this.$props, t = e.stretch, n = e.getRootDomNode, r = e.visible, i = this.$data, o = i.stretchChecked, a = i.targetHeight, s = i.targetWidth; if (t && r) { var c = n(); if (c) { var l = c.offsetHeight, u = c.offsetWidth; a === l && s === u && o || this.setState({ stretchChecked: !0, targetHeight: l, targetWidth: u }) } } else o && this.setState({ stretchChecked: !1 }) }, getPopupDomNode: function () { return this.$refs.popupInstance ? this.$refs.popupInstance.$el : null }, getTargetElement: function () { return this.$props.getRootDomNode() }, getAlignTarget: function () { var e = this.$props.point; return e || this.getTargetElement }, getMaskTransitionName: function () { var e = this.$props, t = e.maskTransitionName, n = e.maskAnimation; return !t && n && (t = e.prefixCls + "-" + n), t }, getTransitionName: function () { var e = this.$props, t = e.transitionName, n = e.animation; return t || ("string" === typeof n ? t = "" + n : n && n.props && n.props.name && (t = n.props.name)), t }, getClassName: function (e) { return this.$props.prefixCls + " " + this.$props.popupClassName + " " + e }, getPopupElement: function () { var e = this, t = this.$createElement, n = this.$props, r = this.$slots, i = this.getTransitionName, o = this.$data, a = o.stretchChecked, c = o.targetHeight, l = o.targetWidth, u = n.align, h = n.visible, f = n.prefixCls, d = n.animation, p = n.popupStyle, m = n.getClassNameFromAlign, g = n.destroyPopupOnHide, y = n.stretch, b = this.getClassName(this.currentAlignClassName || m(u)); h || (this.currentAlignClassName = null); var x = {}; y && (-1 !== y.indexOf("height") ? x.height = "number" === typeof c ? c + "px" : c : -1 !== y.indexOf("minHeight") && (x.minHeight = "number" === typeof c ? c + "px" : c), -1 !== y.indexOf("width") ? x.width = "number" === typeof l ? l + "px" : l : -1 !== y.indexOf("minWidth") && (x.minWidth = "number" === typeof l ? l + "px" : l), a || setTimeout((function () { e.$refs.alignInstance && e.$refs.alignInstance.forceAlign() }), 0)); var w = { props: { prefixCls: f, visible: h }, class: b, on: Object(v["k"])(this), ref: "popupInstance", style: s()({}, x, p, this.getZIndexStyle()) }, _ = { props: { appear: !0, css: !1 } }, C = i(), M = !!C, O = { beforeEnter: function () { }, enter: function (t, n) { e.$nextTick((function () { e.$refs.alignInstance ? e.$refs.alignInstance.$nextTick((function () { e.domEl = t, Object(Yr["a"])(t, C + "-enter", n) })) : n() })) }, beforeLeave: function () { e.domEl = null }, leave: function (e, t) { Object(Yr["a"])(e, C + "-leave", t) } }; if ("object" === ("undefined" === typeof d ? "undefined" : Tt()(d))) { M = !0; var k = d.on, S = void 0 === k ? {} : k, T = d.props, A = void 0 === T ? {} : T; _.props = s()({}, _.props, A), _.on = s()({}, O, S) } else _.on = O; return M || (_ = {}), t("transition", _, g ? [h ? t(Nr, { attrs: { target: this.getAlignTarget(), monitorWindowResize: !0, align: u }, key: "popup", ref: "alignInstance", on: { align: this.onAlign } }, [t(Fr, w, [r["default"]])]) : null] : [t(Nr, { directives: [{ name: "show", value: h }], attrs: { target: this.getAlignTarget(), monitorWindowResize: !0, disabled: !h, align: u }, key: "popup", ref: "alignInstance", on: { align: this.onAlign } }, [t(Fr, w, [r["default"]])])]) }, getZIndexStyle: function () { var e = {}, t = this.$props; return void 0 !== t.zIndex && (e.zIndex = t.zIndex), e }, getMaskElement: function () { var e = this.$createElement, t = this.$props, n = null; if (t.mask) { var r = this.getMaskTransitionName(); n = e(Rr, { directives: [{ name: "show", value: t.visible }], style: this.getZIndexStyle(), key: "mask", class: t.prefixCls + "-mask", attrs: { visible: t.visible } }), r && (n = e("transition", { attrs: { appear: !0, name: r } }, [n])) } return n } }, render: function () { var e = arguments[0], t = this.getMaskElement, n = this.getPopupElement; return e("div", [t(), n()]) } }; function Br(e, t, n) { return n ? e[0] === t[0] : e[0] === t[0] && e[1] === t[1] } function Wr(e, t, n) { var r = e[t] || {}; return s()({}, r, n) } function qr(e, t, n, r) { var i = n.points; for (var o in e) if (e.hasOwnProperty(o) && Br(e[o].points, i, r)) return t + "-placement-" + o; return "" } function Ur() { } var Kr = { props: { autoMount: p["a"].bool.def(!0), autoDestroy: p["a"].bool.def(!0), visible: p["a"].bool, forceRender: p["a"].bool.def(!1), parent: p["a"].any, getComponent: p["a"].func.isRequired, getContainer: p["a"].func.isRequired, children: p["a"].func.isRequired }, mounted: function () { this.autoMount && this.renderComponent() }, updated: function () { this.autoMount && this.renderComponent() }, beforeDestroy: function () { this.autoDestroy && this.removeContainer() }, methods: { removeContainer: function () { this.container && (this._component && this._component.$destroy(), this.container.parentNode.removeChild(this.container), this.container = null, this._component = null) }, renderComponent: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = arguments[1], n = this.visible, r = this.forceRender, i = this.getContainer, o = this.parent, a = this; if (n || o._component || o.$refs._component || r) { var s = this.componentEl; this.container || (this.container = i(), s = document.createElement("div"), this.componentEl = s, this.container.appendChild(s)); var c = { component: a.getComponent(e) }; this._component ? this._component.setComponent(c) : this._component = new this.$root.constructor({ el: s, parent: a, data: { _com: c }, mounted: function () { this.$nextTick((function () { t && t.call(a) })) }, updated: function () { this.$nextTick((function () { t && t.call(a) })) }, methods: { setComponent: function (e) { this.$data._com = e } }, render: function () { return this.$data._com.component } }) } } }, render: function () { return this.children({ renderComponent: this.renderComponent, removeContainer: this.removeContainer }) } }; function Gr() { return "" } function Xr() { return window.document } d.a.use(_.a, { name: "ant-ref" }); var Jr = ["click", "mousedown", "touchstart", "mouseenter", "mouseleave", "focus", "blur", "contextmenu"], Qr = { name: "Trigger", mixins: [m["a"]], props: { action: p["a"].oneOfType([p["a"].string, p["a"].arrayOf(p["a"].string)]).def([]), showAction: p["a"].any.def([]), hideAction: p["a"].any.def([]), getPopupClassNameFromAlign: p["a"].any.def(Gr), afterPopupVisibleChange: p["a"].func.def(Ur), popup: p["a"].any, popupStyle: p["a"].object.def((function () { return {} })), prefixCls: p["a"].string.def("rc-trigger-popup"), popupClassName: p["a"].string.def(""), popupPlacement: p["a"].string, builtinPlacements: p["a"].object, popupTransitionName: p["a"].oneOfType([p["a"].string, p["a"].object]), popupAnimation: p["a"].any, mouseEnterDelay: p["a"].number.def(0), mouseLeaveDelay: p["a"].number.def(.1), zIndex: p["a"].number, focusDelay: p["a"].number.def(0), blurDelay: p["a"].number.def(.15), getPopupContainer: p["a"].func, getDocument: p["a"].func.def(Xr), forceRender: p["a"].bool, destroyPopupOnHide: p["a"].bool.def(!1), mask: p["a"].bool.def(!1), maskClosable: p["a"].bool.def(!0), popupAlign: p["a"].object.def((function () { return {} })), popupVisible: p["a"].bool, defaultPopupVisible: p["a"].bool.def(!1), maskTransitionName: p["a"].oneOfType([p["a"].string, p["a"].object]), maskAnimation: p["a"].string, stretch: p["a"].string, alignPoint: p["a"].bool }, provide: function () { return { vcTriggerContext: this } }, inject: { vcTriggerContext: { default: function () { return {} } }, savePopupRef: { default: function () { return Ur } }, dialogContext: { default: function () { return null } } }, data: function () { var e = this, t = this.$props, n = void 0; return n = Object(v["s"])(this, "popupVisible") ? !!t.popupVisible : !!t.defaultPopupVisible, Jr.forEach((function (t) { e["fire" + t] = function (n) { e.fireEvents(t, n) } })), { prevPopupVisible: n, sPopupVisible: n, point: null } }, watch: { popupVisible: function (e) { void 0 !== e && (this.prevPopupVisible = this.sPopupVisible, this.sPopupVisible = e) } }, deactivated: function () { this.setPopupVisible(!1) }, mounted: function () { var e = this; this.$nextTick((function () { e.renderComponent(null), e.updatedCal() })) }, updated: function () { var e = this, t = function () { e.sPopupVisible !== e.prevPopupVisible && e.afterPopupVisibleChange(e.sPopupVisible), e.prevPopupVisible = e.sPopupVisible }; this.renderComponent(null, t), this.$nextTick((function () { e.updatedCal() })) }, beforeDestroy: function () { this.clearDelayTimer(), this.clearOutsideHandler(), clearTimeout(this.mouseDownTimeout) }, methods: { updatedCal: function () { var e = this.$props, t = this.$data; if (t.sPopupVisible) { var n = void 0; this.clickOutsideHandler || !this.isClickToHide() && !this.isContextmenuToShow() || (n = e.getDocument(), this.clickOutsideHandler = sn(n, "mousedown", this.onDocumentClick)), this.touchOutsideHandler || (n = n || e.getDocument(), this.touchOutsideHandler = sn(n, "touchstart", this.onDocumentClick)), !this.contextmenuOutsideHandler1 && this.isContextmenuToShow() && (n = n || e.getDocument(), this.contextmenuOutsideHandler1 = sn(n, "scroll", this.onContextmenuClose)), !this.contextmenuOutsideHandler2 && this.isContextmenuToShow() && (this.contextmenuOutsideHandler2 = sn(window, "blur", this.onContextmenuClose)) } else this.clearOutsideHandler() }, onMouseenter: function (e) { var t = this.$props.mouseEnterDelay; this.fireEvents("mouseenter", e), this.delaySetPopupVisible(!0, t, t ? null : e) }, onMouseMove: function (e) { this.fireEvents("mousemove", e), this.setPoint(e) }, onMouseleave: function (e) { this.fireEvents("mouseleave", e), this.delaySetPopupVisible(!1, this.$props.mouseLeaveDelay) }, onPopupMouseenter: function () { this.clearDelayTimer() }, onPopupMouseleave: function (e) { e && e.relatedTarget && !e.relatedTarget.setTimeout && this._component && this._component.getPopupDomNode && tn(this._component.getPopupDomNode(), e.relatedTarget) || this.delaySetPopupVisible(!1, this.$props.mouseLeaveDelay) }, onFocus: function (e) { this.fireEvents("focus", e), this.clearDelayTimer(), this.isFocusToShow() && (this.focusTime = Date.now(), this.delaySetPopupVisible(!0, this.$props.focusDelay)) }, onMousedown: function (e) { this.fireEvents("mousedown", e), this.preClickTime = Date.now() }, onTouchstart: function (e) { this.fireEvents("touchstart", e), this.preTouchTime = Date.now() }, onBlur: function (e) { tn(e.target, e.relatedTarget || document.activeElement) || (this.fireEvents("blur", e), this.clearDelayTimer(), this.isBlurToHide() && this.delaySetPopupVisible(!1, this.$props.blurDelay)) }, onContextmenu: function (e) { e.preventDefault(), this.fireEvents("contextmenu", e), this.setPopupVisible(!0, e) }, onContextmenuClose: function () { this.isContextmenuToShow() && this.close() }, onClick: function (e) { if (this.fireEvents("click", e), this.focusTime) { var t = void 0; if (this.preClickTime && this.preTouchTime ? t = Math.min(this.preClickTime, this.preTouchTime) : this.preClickTime ? t = this.preClickTime : this.preTouchTime && (t = this.preTouchTime), Math.abs(t - this.focusTime) < 20) return; this.focusTime = 0 } this.preClickTime = 0, this.preTouchTime = 0, this.isClickToShow() && (this.isClickToHide() || this.isBlurToHide()) && e && e.preventDefault && e.preventDefault(), e && e.domEvent && e.domEvent.preventDefault(); var n = !this.$data.sPopupVisible; (this.isClickToHide() && !n || n && this.isClickToShow()) && this.setPopupVisible(!this.$data.sPopupVisible, e) }, onPopupMouseDown: function () { var e = this, t = this.vcTriggerContext, n = void 0 === t ? {} : t; this.hasPopupMouseDown = !0, clearTimeout(this.mouseDownTimeout), this.mouseDownTimeout = setTimeout((function () { e.hasPopupMouseDown = !1 }), 0), n.onPopupMouseDown && n.onPopupMouseDown.apply(n, arguments) }, onDocumentClick: function (e) { if (!this.$props.mask || this.$props.maskClosable) { var t = e.target, n = this.$el; tn(n, t) || this.hasPopupMouseDown || this.close() } }, getPopupDomNode: function () { return this._component && this._component.getPopupDomNode ? this._component.getPopupDomNode() : null }, getRootDomNode: function () { return this.$el }, handleGetPopupClassFromAlign: function (e) { var t = [], n = this.$props, r = n.popupPlacement, i = n.builtinPlacements, o = n.prefixCls, a = n.alignPoint, s = n.getPopupClassNameFromAlign; return r && i && t.push(qr(i, o, e, a)), s && t.push(s(e)), t.join(" ") }, getPopupAlign: function () { var e = this.$props, t = e.popupPlacement, n = e.popupAlign, r = e.builtinPlacements; return t && r ? Wr(r, t, n) : n }, savePopup: function (e) { this._component = e, this.savePopupRef(e) }, getComponent: function () { var e = this.$createElement, t = this, n = {}; this.isMouseEnterToShow() && (n.mouseenter = t.onPopupMouseenter), this.isMouseLeaveToHide() && (n.mouseleave = t.onPopupMouseleave), n.mousedown = this.onPopupMouseDown, n.touchstart = this.onPopupMouseDown; var r = t.handleGetPopupClassFromAlign, i = t.getRootDomNode, o = t.getContainer, a = t.$props, c = a.prefixCls, l = a.destroyPopupOnHide, u = a.popupClassName, h = a.action, f = a.popupAnimation, d = a.popupTransitionName, p = a.popupStyle, m = a.mask, g = a.maskAnimation, y = a.maskTransitionName, b = a.zIndex, x = a.stretch, w = a.alignPoint, _ = this.$data, C = _.sPopupVisible, M = _.point, O = this.getPopupAlign(), k = { props: { prefixCls: c, destroyPopupOnHide: l, visible: C, point: w && M, action: h, align: O, animation: f, getClassNameFromAlign: r, stretch: x, getRootDomNode: i, mask: m, zIndex: b, transitionName: d, maskAnimation: g, maskTransitionName: y, getContainer: o, popupClassName: u, popupStyle: p }, on: s()({ align: Object(v["k"])(this).popupAlign || Ur }, n), directives: [{ name: "ant-ref", value: this.savePopup }] }; return e($r, k, [Object(v["g"])(t, "popup")]) }, getContainer: function () { var e = this.$props, t = this.dialogContext, n = document.createElement("div"); n.style.position = "absolute", n.style.top = "0", n.style.left = "0", n.style.width = "100%"; var r = e.getPopupContainer ? e.getPopupContainer(this.$el, t) : e.getDocument().body; return r.appendChild(n), this.popupContainer = n, n }, setPopupVisible: function (e, t) { var n = this.alignPoint, r = this.sPopupVisible; if (this.clearDelayTimer(), r !== e) { Object(v["s"])(this, "popupVisible") || this.setState({ sPopupVisible: e, prevPopupVisible: r }); var i = Object(v["k"])(this); i.popupVisibleChange && i.popupVisibleChange(e) } n && t && this.setPoint(t) }, setPoint: function (e) { var t = this.$props.alignPoint; t && e && this.setState({ point: { pageX: e.pageX, pageY: e.pageY } }) }, delaySetPopupVisible: function (e, t, n) { var r = this, i = 1e3 * t; if (this.clearDelayTimer(), i) { var o = n ? { pageX: n.pageX, pageY: n.pageY } : null; this.delayTimer = Object(rn["b"])((function () { r.setPopupVisible(e, o), r.clearDelayTimer() }), i) } else this.setPopupVisible(e, n) }, clearDelayTimer: function () { this.delayTimer && (Object(rn["a"])(this.delayTimer), this.delayTimer = null) }, clearOutsideHandler: function () { this.clickOutsideHandler && (this.clickOutsideHandler.remove(), this.clickOutsideHandler = null), this.contextmenuOutsideHandler1 && (this.contextmenuOutsideHandler1.remove(), this.contextmenuOutsideHandler1 = null), this.contextmenuOutsideHandler2 && (this.contextmenuOutsideHandler2.remove(), this.contextmenuOutsideHandler2 = null), this.touchOutsideHandler && (this.touchOutsideHandler.remove(), this.touchOutsideHandler = null) }, createTwoChains: function (e) { var t = function () { }, n = Object(v["k"])(this); return this.childOriginEvents[e] && n[e] ? this["fire" + e] : (t = this.childOriginEvents[e] || n[e] || t, t) }, isClickToShow: function () { var e = this.$props, t = e.action, n = e.showAction; return -1 !== t.indexOf("click") || -1 !== n.indexOf("click") }, isContextmenuToShow: function () { var e = this.$props, t = e.action, n = e.showAction; return -1 !== t.indexOf("contextmenu") || -1 !== n.indexOf("contextmenu") }, isClickToHide: function () { var e = this.$props, t = e.action, n = e.hideAction; return -1 !== t.indexOf("click") || -1 !== n.indexOf("click") }, isMouseEnterToShow: function () { var e = this.$props, t = e.action, n = e.showAction; return -1 !== t.indexOf("hover") || -1 !== n.indexOf("mouseenter") }, isMouseLeaveToHide: function () { var e = this.$props, t = e.action, n = e.hideAction; return -1 !== t.indexOf("hover") || -1 !== n.indexOf("mouseleave") }, isFocusToShow: function () { var e = this.$props, t = e.action, n = e.showAction; return -1 !== t.indexOf("focus") || -1 !== n.indexOf("focus") }, isBlurToHide: function () { var e = this.$props, t = e.action, n = e.hideAction; return -1 !== t.indexOf("focus") || -1 !== n.indexOf("blur") }, forcePopupAlign: function () { this.$data.sPopupVisible && this._component && this._component.$refs.alignInstance && this._component.$refs.alignInstance.forceAlign() }, fireEvents: function (e, t) { this.childOriginEvents[e] && this.childOriginEvents[e](t), this.__emit(e, t) }, close: function () { this.setPopupVisible(!1) } }, render: function () { var e = this, t = arguments[0], n = this.sPopupVisible, r = Object(v["c"])(this.$slots["default"]), i = this.$props, o = i.forceRender, a = i.alignPoint; r.length > 1 && fe(!1, "Trigger $slots.default.length > 1, just support only one default", !0); var s = r[0]; this.childOriginEvents = Object(v["h"])(s); var c = { props: {}, nativeOn: {}, key: "trigger" }; return this.isContextmenuToShow() ? c.nativeOn.contextmenu = this.onContextmenu : c.nativeOn.contextmenu = this.createTwoChains("contextmenu"), this.isClickToHide() || this.isClickToShow() ? (c.nativeOn.click = this.onClick, c.nativeOn.mousedown = this.onMousedown, c.nativeOn.touchstart = this.onTouchstart) : (c.nativeOn.click = this.createTwoChains("click"), c.nativeOn.mousedown = this.createTwoChains("mousedown"), c.nativeOn.touchstart = this.createTwoChains("onTouchstart")), this.isMouseEnterToShow() ? (c.nativeOn.mouseenter = this.onMouseenter, a && (c.nativeOn.mousemove = this.onMouseMove)) : c.nativeOn.mouseenter = this.createTwoChains("mouseenter"), this.isMouseLeaveToHide() ? c.nativeOn.mouseleave = this.onMouseleave : c.nativeOn.mouseleave = this.createTwoChains("mouseleave"), this.isFocusToShow() || this.isBlurToHide() ? (c.nativeOn.focus = this.onFocus, c.nativeOn.blur = this.onBlur) : (c.nativeOn.focus = this.createTwoChains("focus"), c.nativeOn.blur = function (t) { !t || t.relatedTarget && tn(t.target, t.relatedTarget) || e.createTwoChains("blur")(t) }), this.trigger = Object(en["a"])(s, c), t(Kr, { attrs: { parent: this, visible: n, autoMount: !1, forceRender: o, getComponent: this.getComponent, getContainer: this.getContainer, children: function (t) { var n = t.renderComponent; return e.renderComponent = n, e.trigger } } }) } }, Zr = Qr, ei = { adjustX: 1, adjustY: 1 }, ti = [0, 0], ni = { left: { points: ["cr", "cl"], overflow: ei, offset: [-4, 0], targetOffset: ti }, right: { points: ["cl", "cr"], overflow: ei, offset: [4, 0], targetOffset: ti }, top: { points: ["bc", "tc"], overflow: ei, offset: [0, -4], targetOffset: ti }, bottom: { points: ["tc", "bc"], overflow: ei, offset: [0, 4], targetOffset: ti }, topLeft: { points: ["bl", "tl"], overflow: ei, offset: [0, -4], targetOffset: ti }, leftTop: { points: ["tr", "tl"], overflow: ei, offset: [-4, 0], targetOffset: ti }, topRight: { points: ["br", "tr"], overflow: ei, offset: [0, -4], targetOffset: ti }, rightTop: { points: ["tl", "tr"], overflow: ei, offset: [4, 0], targetOffset: ti }, bottomRight: { points: ["tr", "br"], overflow: ei, offset: [0, 4], targetOffset: ti }, rightBottom: { points: ["bl", "br"], overflow: ei, offset: [4, 0], targetOffset: ti }, bottomLeft: { points: ["tl", "bl"], overflow: ei, offset: [0, 4], targetOffset: ti }, leftBottom: { points: ["br", "bl"], overflow: ei, offset: [-4, 0], targetOffset: ti } }, ri = { props: { prefixCls: p["a"].string, overlay: p["a"].any, trigger: p["a"].any }, updated: function () { var e = this.trigger; e && e.forcePopupAlign() }, render: function () { var e = arguments[0], t = this.overlay, n = this.prefixCls; return e("div", { class: n + "-inner", attrs: { role: "tooltip" } }, ["function" === typeof t ? t() : t]) } }; function ii() { } var oi = { props: { trigger: p["a"].any.def(["hover"]), defaultVisible: p["a"].bool, visible: p["a"].bool, placement: p["a"].string.def("right"), transitionName: p["a"].oneOfType([p["a"].string, p["a"].object]), animation: p["a"].any, afterVisibleChange: p["a"].func.def((function () { })), overlay: p["a"].any, overlayStyle: p["a"].object, overlayClassName: p["a"].string, prefixCls: p["a"].string.def("rc-tooltip"), mouseEnterDelay: p["a"].number.def(0), mouseLeaveDelay: p["a"].number.def(.1), getTooltipContainer: p["a"].func, destroyTooltipOnHide: p["a"].bool.def(!1), align: p["a"].object.def((function () { return {} })), arrowContent: p["a"].any.def(null), tipId: p["a"].string, builtinPlacements: p["a"].object }, methods: { getPopupElement: function () { var e = this.$createElement, t = this.$props, n = t.prefixCls, r = t.tipId; return [e("div", { class: n + "-arrow", key: "arrow" }, [Object(v["g"])(this, "arrowContent")]), e(ri, { key: "content", attrs: { trigger: this.$refs.trigger, prefixCls: n, id: r, overlay: Object(v["g"])(this, "overlay") } })] }, getPopupDomNode: function () { return this.$refs.trigger.getPopupDomNode() } }, render: function (e) { var t = Object(v["l"])(this), n = t.overlayClassName, r = t.trigger, i = t.mouseEnterDelay, o = t.mouseLeaveDelay, a = t.overlayStyle, c = t.prefixCls, u = t.afterVisibleChange, h = t.transitionName, f = t.animation, d = t.placement, p = t.align, m = t.destroyTooltipOnHide, g = t.defaultVisible, y = t.getTooltipContainer, b = l()(t, ["overlayClassName", "trigger", "mouseEnterDelay", "mouseLeaveDelay", "overlayStyle", "prefixCls", "afterVisibleChange", "transitionName", "animation", "placement", "align", "destroyTooltipOnHide", "defaultVisible", "getTooltipContainer"]), x = s()({}, b); Object(v["s"])(this, "visible") && (x.popupVisible = this.$props.visible); var w = Object(v["k"])(this), _ = { props: s()({ popupClassName: n, prefixCls: c, action: r, builtinPlacements: ni, popupPlacement: d, popupAlign: p, getPopupContainer: y, afterPopupVisibleChange: u, popupTransitionName: h, popupAnimation: f, defaultPopupVisible: g, destroyPopupOnHide: m, mouseLeaveDelay: o, popupStyle: a, mouseEnterDelay: i }, x), on: s()({}, w, { popupVisibleChange: w.visibleChange || ii, popupAlign: w.popupAlign || ii }), ref: "trigger" }; return e(Zr, _, [e("template", { slot: "popup" }, [this.getPopupElement(e)]), this.$slots["default"]]) } }, ai = oi, si = { adjustX: 1, adjustY: 1 }, ci = { adjustX: 0, adjustY: 0 }, li = [0, 0]; function ui(e) { return "boolean" === typeof e ? e ? si : ci : s()({}, ci, e) } function hi(e) { var t = e.arrowWidth, n = void 0 === t ? 5 : t, r = e.horizontalArrowShift, i = void 0 === r ? 16 : r, o = e.verticalArrowShift, a = void 0 === o ? 12 : o, c = e.autoAdjustOverflow, l = void 0 === c || c, u = { left: { points: ["cr", "cl"], offset: [-4, 0] }, right: { points: ["cl", "cr"], offset: [4, 0] }, top: { points: ["bc", "tc"], offset: [0, -4] }, bottom: { points: ["tc", "bc"], offset: [0, 4] }, topLeft: { points: ["bl", "tc"], offset: [-(i + n), -4] }, leftTop: { points: ["tr", "cl"], offset: [-4, -(a + n)] }, topRight: { points: ["br", "tc"], offset: [i + n, -4] }, rightTop: { points: ["tl", "cr"], offset: [4, -(a + n)] }, bottomRight: { points: ["tr", "bc"], offset: [i + n, 4] }, rightBottom: { points: ["bl", "cr"], offset: [4, a + n] }, bottomLeft: { points: ["tl", "bc"], offset: [-(i + n), 4] }, leftBottom: { points: ["br", "cl"], offset: [-4, a + n] } }; return Object.keys(u).forEach((function (t) { u[t] = e.arrowPointAtCenter ? s()({}, u[t], { overflow: ui(l), targetOffset: li }) : s()({}, ni[t], { overflow: ui(l) }), u[t].ignoreShake = !0 })), u } var fi = p["a"].oneOf(["hover", "focus", "click", "contextmenu"]), di = function () { return { trigger: p["a"].oneOfType([fi, p["a"].arrayOf(fi)]).def("hover"), visible: p["a"].bool, defaultVisible: p["a"].bool, placement: p["a"].oneOf(["top", "left", "right", "bottom", "topLeft", "topRight", "bottomLeft", "bottomRight", "leftTop", "leftBottom", "rightTop", "rightBottom"]).def("top"), transitionName: p["a"].string.def("zoom-big-fast"), overlayStyle: p["a"].object.def((function () { return {} })), overlayClassName: p["a"].string, prefixCls: p["a"].string, mouseEnterDelay: p["a"].number.def(.1), mouseLeaveDelay: p["a"].number.def(.1), getPopupContainer: p["a"].func, arrowPointAtCenter: p["a"].bool.def(!1), autoAdjustOverflow: p["a"].oneOfType([p["a"].bool, p["a"].object]).def(!0), destroyTooltipOnHide: p["a"].bool.def(!1), align: p["a"].object.def((function () { return {} })), builtinPlacements: p["a"].object } }, pi = function (e, t) { var n = {}, r = s()({}, e); return t.forEach((function (t) { e && t in e && (n[t] = e[t], delete r[t]) })), { picked: n, omitted: r } }, vi = di(), mi = { name: "ATooltip", model: { prop: "visible", event: "visibleChange" }, props: s()({}, vi, { title: p["a"].any }), inject: { configProvider: { default: function () { return Vt } } }, data: function () { return { sVisible: !!this.$props.visible || !!this.$props.defaultVisible } }, watch: { visible: function (e) { this.sVisible = e } }, methods: { onVisibleChange: function (e) { Object(v["s"])(this, "visible") || (this.sVisible = !this.isNoTitle() && e), this.isNoTitle() || this.$emit("visibleChange", e) }, getPopupDomNode: function () { return this.$refs.tooltip.getPopupDomNode() }, getPlacements: function () { var e = this.$props, t = e.builtinPlacements, n = e.arrowPointAtCenter, r = e.autoAdjustOverflow; return t || hi({ arrowPointAtCenter: n, verticalArrowShift: 8, autoAdjustOverflow: r }) }, getDisabledCompatibleChildren: function (e) { var t = this.$createElement, n = e.componentOptions && e.componentOptions.Ctor.options || {}; if ((!0 === n.__ANT_BUTTON || !0 === n.__ANT_SWITCH || !0 === n.__ANT_CHECKBOX) && (e.componentOptions.propsData.disabled || "" === e.componentOptions.propsData.disabled) || "button" === e.tag && e.data && e.data.attrs && void 0 !== e.data.attrs.disabled) { var r = pi(Object(v["q"])(e), ["position", "left", "right", "top", "bottom", "float", "display", "zIndex"]), i = r.picked, o = r.omitted, a = s()({ display: "inline-block" }, i, { cursor: "not-allowed", width: e.componentOptions.propsData.block ? "100%" : null }), c = s()({}, o, { pointerEvents: "none" }), l = Object(v["f"])(e), u = Object(en["a"])(e, { style: c, class: null }); return t("span", { style: a, class: l }, [u]) } return e }, isNoTitle: function () { var e = Object(v["g"])(this, "title"); return !e && 0 !== e }, getOverlay: function () { var e = Object(v["g"])(this, "title"); return 0 === e ? e : e || "" }, onPopupAlign: function (e, t) { var n = this.getPlacements(), r = Object.keys(n).filter((function (e) { return n[e].points[0] === t.points[0] && n[e].points[1] === t.points[1] }))[0]; if (r) { var i = e.getBoundingClientRect(), o = { top: "50%", left: "50%" }; r.indexOf("top") >= 0 || r.indexOf("Bottom") >= 0 ? o.top = i.height - t.offset[1] + "px" : (r.indexOf("Top") >= 0 || r.indexOf("bottom") >= 0) && (o.top = -t.offset[1] + "px"), r.indexOf("left") >= 0 || r.indexOf("Right") >= 0 ? o.left = i.width - t.offset[0] + "px" : (r.indexOf("right") >= 0 || r.indexOf("Left") >= 0) && (o.left = -t.offset[0] + "px"), e.style.transformOrigin = o.left + " " + o.top } } }, render: function () { var e = arguments[0], t = this.$props, n = this.$data, r = this.$slots, i = t.prefixCls, o = t.openClassName, a = t.getPopupContainer, c = this.configProvider.getPopupContainer, l = this.configProvider.getPrefixCls, u = l("tooltip", i), f = (r["default"] || []).filter((function (e) { return e.tag || "" !== e.text.trim() })); f = 1 === f.length ? f[0] : f; var d = n.sVisible; if (!Object(v["s"])(this, "visible") && this.isNoTitle() && (d = !1), !f) return null; var p = this.getDisabledCompatibleChildren(Object(v["v"])(f) ? f : e("span", [f])), m = h()({}, o || u + "-open", !0), g = { props: s()({}, t, { prefixCls: u, getTooltipContainer: a || c, builtinPlacements: this.getPlacements(), overlay: this.getOverlay(), visible: d }), ref: "tooltip", on: s()({}, Object(v["k"])(this), { visibleChange: this.onVisibleChange, popupAlign: this.onPopupAlign }) }; return e(ai, g, [d ? Object(en["a"])(p, { class: m }) : p]) }, install: function (e) { e.use(N), e.component(mi.name, mi) } }, gi = mi, yi = n("b24f"), bi = n.n(yi); function xi(e) { return !e || e < 0 ? 0 : e > 100 ? 100 : e } var wi = function (e) { var t = [], n = !0, r = !1, i = void 0; try { for (var o, a = Object.entries(e)[Symbol.iterator](); !(n = (o = a.next()).done); n = !0) { var s = o.value, c = bi()(s, 2), l = c[0], u = c[1], h = parseFloat(l.replace(/%/g, "")); if (isNaN(h)) return {}; t.push({ key: h, value: u }) } } catch (f) { r = !0, i = f } finally { try { !n && a["return"] && a["return"]() } finally { if (r) throw i } } return t = t.sort((function (e, t) { return e.key - t.key })), t.map((function (e) { var t = e.key, n = e.value; return n + " " + t + "%" })).join(", ") }, _i = function (e) { var t = e.from, n = void 0 === t ? "#1890ff" : t, r = e.to, i = void 0 === r ? "#1890ff" : r, o = e.direction, a = void 0 === o ? "to right" : o, s = l()(e, ["from", "to", "direction"]); if (0 !== Object.keys(s).length) { var c = wi(s); return { backgroundImage: "linear-gradient(" + a + ", " + c + ")" } } return { backgroundImage: "linear-gradient(" + a + ", " + n + ", " + i + ")" } }, Ci = { functional: !0, render: function (e, t) { var n = t.props, r = t.children, i = n.prefixCls, o = n.percent, a = n.successPercent, c = n.strokeWidth, l = n.size, u = n.strokeColor, h = n.strokeLinecap, f = void 0; f = u && "string" !== typeof u ? _i(u) : { background: u }; var d = s()({ width: xi(o) + "%", height: (c || ("small" === l ? 6 : 8)) + "px", background: u, borderRadius: "square" === h ? 0 : "100px" }, f), p = { width: xi(a) + "%", height: (c || ("small" === l ? 6 : 8)) + "px", borderRadius: "square" === h ? 0 : "" }, v = void 0 !== a ? e("div", { class: i + "-success-bg", style: p }) : null; return e("div", [e("div", { class: i + "-outer" }, [e("div", { class: i + "-inner" }, [e("div", { class: i + "-bg", style: d }), v])]), r]) } }, Mi = Ci; function Oi(e) { return { mixins: [e], updated: function () { var e = this, t = Date.now(), n = !1; Object.keys(this.paths).forEach((function (r) { var i = e.paths[r]; if (i) { n = !0; var o = i.style; o.transitionDuration = ".3s, .3s, .3s, .06s", e.prevTimeStamp && t - e.prevTimeStamp < 100 && (o.transitionDuration = "0s, 0s") } })), n && (this.prevTimeStamp = Date.now()) } } } var ki = Oi, Si = { percent: 0, prefixCls: "rc-progress", strokeColor: "#2db7f5", strokeLinecap: "round", strokeWidth: 1, trailColor: "#D9D9D9", trailWidth: 1 }, Ti = p["a"].oneOfType([p["a"].number, p["a"].string]), Ai = { percent: p["a"].oneOfType([Ti, p["a"].arrayOf(Ti)]), prefixCls: p["a"].string, strokeColor: p["a"].oneOfType([p["a"].string, p["a"].arrayOf(p["a"].oneOfType([p["a"].string, p["a"].object])), p["a"].object]), strokeLinecap: p["a"].oneOf(["butt", "round", "square"]), strokeWidth: Ti, trailColor: p["a"].string, trailWidth: Ti }, Li = s()({}, Ai, { gapPosition: p["a"].oneOf(["top", "bottom", "left", "right"]), gapDegree: p["a"].oneOfType([p["a"].number, p["a"].string, p["a"].bool]) }), ji = s()({}, Si, { gapPosition: "top" }); d.a.use(_.a, { name: "ant-ref" }); var zi = 0; function Ei(e) { return +e.replace("%", "") } function Pi(e) { return Array.isArray(e) ? e : [e] } function Di(e, t, n, r) { var i = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0, o = arguments[5], a = 50 - r / 2, s = 0, c = -a, l = 0, u = -2 * a; switch (o) { case "left": s = -a, c = 0, l = 2 * a, u = 0; break; case "right": s = a, c = 0, l = -2 * a, u = 0; break; case "bottom": c = a, u = 2 * a; break; default: }var h = "M 50,50 m " + s + "," + c + "\n   a " + a + "," + a + " 0 1 1 " + l + "," + -u + "\n   a " + a + "," + a + " 0 1 1 " + -l + "," + u, f = 2 * Math.PI * a, d = { stroke: n, strokeDasharray: t / 100 * (f - i) + "px " + f + "px", strokeDashoffset: "-" + (i / 2 + e / 100 * (f - i)) + "px", transition: "stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s" }; return { pathString: h, pathStyle: d } } var Hi = { props: Object(v["t"])(Li, ji), created: function () { this.paths = {}, this.gradientId = zi, zi += 1 }, methods: { getStokeList: function () { var e = this, t = this.$createElement, n = this.$props, r = n.prefixCls, i = n.percent, o = n.strokeColor, a = n.strokeWidth, s = n.strokeLinecap, c = n.gapDegree, l = n.gapPosition, u = Pi(i), h = Pi(o), f = 0; return u.map((function (n, i) { var o = h[i] || h[h.length - 1], u = "[object Object]" === Object.prototype.toString.call(o) ? "url(#" + r + "-gradient-" + e.gradientId + ")" : "", d = Di(f, n, o, a, c, l), p = d.pathString, v = d.pathStyle; f += n; var m = { key: i, attrs: { d: p, stroke: u, "stroke-linecap": s, "stroke-width": a, opacity: 0 === n ? 0 : 1, "fill-opacity": "0" }, class: r + "-circle-path", style: v, directives: [{ name: "ant-ref", value: function (t) { e.paths[i] = t } }] }; return t("path", m) })) } }, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.strokeWidth, i = t.trailWidth, o = t.gapDegree, a = t.gapPosition, s = t.trailColor, c = t.strokeLinecap, u = t.strokeColor, h = l()(t, ["prefixCls", "strokeWidth", "trailWidth", "gapDegree", "gapPosition", "trailColor", "strokeLinecap", "strokeColor"]), f = Di(0, 100, s, r, o, a), d = f.pathString, p = f.pathStyle; delete h.percent; var v = Pi(u), m = v.find((function (e) { return "[object Object]" === Object.prototype.toString.call(e) })), g = { attrs: { d: d, stroke: s, "stroke-linecap": c, "stroke-width": i || r, "fill-opacity": "0" }, class: n + "-circle-trail", style: p }; return e("svg", K()([{ class: n + "-circle", attrs: { viewBox: "0 0 100 100" } }, h]), [m && e("defs", [e("linearGradient", { attrs: { id: n + "-gradient-" + this.gradientId, x1: "100%", y1: "0%", x2: "0%", y2: "0%" } }, [Object.keys(m).sort((function (e, t) { return Ei(e) - Ei(t) })).map((function (t, n) { return e("stop", { key: n, attrs: { offset: t, "stop-color": m[t] } }) }))])]), e("path", g), this.getStokeList().reverse()]) } }, Vi = ki(Hi), Ii = { normal: "#108ee9", exception: "#ff5500", success: "#87d068" }; function Ni(e) { var t = e.percent, n = e.successPercent, r = xi(t); if (!n) return r; var i = xi(n); return [n, xi(r - i)] } function Ri(e) { var t = e.progressStatus, n = e.successPercent, r = e.strokeColor, i = r || Ii[t]; return n ? [Ii.success, i] : i } var Fi = { functional: !0, render: function (e, t) { var n, r = t.props, i = t.children, o = r.prefixCls, a = r.width, s = r.strokeWidth, c = r.trailColor, l = r.strokeLinecap, u = r.gapPosition, f = r.gapDegree, d = r.type, p = a || 120, v = { width: "number" === typeof p ? p + "px" : p, height: "number" === typeof p ? p + "px" : p, fontSize: .15 * p + 6 }, m = s || 6, g = u || "dashboard" === d && "bottom" || "top", y = f || "dashboard" === d && 75, b = Ri(r), x = "[object Object]" === Object.prototype.toString.call(b), w = (n = {}, h()(n, o + "-inner", !0), h()(n, o + "-circle-gradient", x), n); return e("div", { class: w, style: v }, [e(Vi, { attrs: { percent: Ni(r), strokeWidth: m, trailWidth: m, strokeColor: b, strokeLinecap: l, trailColor: c, prefixCls: o, gapDegree: y, gapPosition: g } }), i]) } }, Yi = Fi, $i = ["normal", "exception", "active", "success"], Bi = p["a"].oneOf(["line", "circle", "dashboard"]), Wi = p["a"].oneOf(["default", "small"]), qi = { prefixCls: p["a"].string, type: Bi, percent: p["a"].number, successPercent: p["a"].number, format: p["a"].func, status: p["a"].oneOf($i), showInfo: p["a"].bool, strokeWidth: p["a"].number, strokeLinecap: p["a"].oneOf(["butt", "round", "square"]), strokeColor: p["a"].oneOfType([p["a"].string, p["a"].object]), trailColor: p["a"].string, width: p["a"].number, gapDegree: p["a"].number, gapPosition: p["a"].oneOf(["top", "bottom", "left", "right"]), size: Wi }, Ui = { name: "AProgress", props: Object(v["t"])(qi, { type: "line", percent: 0, showInfo: !0, trailColor: "#f3f3f3", size: "default", gapDegree: 0, strokeLinecap: "round" }), inject: { configProvider: { default: function () { return Vt } } }, methods: { getPercentNumber: function () { var e = this.$props, t = e.successPercent, n = e.percent, r = void 0 === n ? 0 : n; return parseInt(void 0 !== t ? t.toString() : r.toString(), 10) }, getProgressStatus: function () { var e = this.$props.status; return $i.indexOf(e) < 0 && this.getPercentNumber() >= 100 ? "success" : e || "normal" }, renderProcessInfo: function (e, t) { var n = this.$createElement, r = this.$props, i = r.showInfo, o = r.format, a = r.type, s = r.percent, c = r.successPercent; if (!i) return null; var l = void 0, u = o || this.$scopedSlots.format || function (e) { return e + "%" }, h = "circle" === a || "dashboard" === a ? "" : "-circle"; return o || this.$scopedSlots.format || "exception" !== t && "success" !== t ? l = u(xi(s), xi(c)) : "exception" === t ? l = n(Ve, { attrs: { type: "close" + h, theme: "line" === a ? "filled" : "outlined" } }) : "success" === t && (l = n(Ve, { attrs: { type: "check" + h, theme: "line" === a ? "filled" : "outlined" } })), n("span", { class: e + "-text", attrs: { title: "string" === typeof l ? l : void 0 } }, [l]) } }, render: function () { var e, t = arguments[0], n = Object(v["l"])(this), r = n.prefixCls, i = n.size, o = n.type, a = n.showInfo, c = this.configProvider.getPrefixCls, l = c("progress", r), u = this.getProgressStatus(), f = this.renderProcessInfo(l, u), d = void 0; if ("line" === o) { var p = { props: s()({}, n, { prefixCls: l }) }; d = t(Mi, p, [f]) } else if ("circle" === o || "dashboard" === o) { var m = { props: s()({}, n, { prefixCls: l, progressStatus: u }) }; d = t(Yi, m, [f]) } var g = Q()(l, (e = {}, h()(e, l + "-" + ("dashboard" === o ? "circle" : o), !0), h()(e, l + "-status-" + u, !0), h()(e, l + "-show-info", a), h()(e, l + "-" + i, i), e)), y = { on: Object(v["k"])(this), class: g }; return t("div", y, [d]) }, install: function (e) { e.use(N), e.component(Ui.name, Ui) } }, Ki = Ui, Gi = { name: "AUploadList", mixins: [m["a"]], props: Object(v["t"])(Yt, { listType: "text", progressAttr: { strokeWidth: 2, showInfo: !1 }, showRemoveIcon: !0, showDownloadIcon: !1, showPreviewIcon: !0, previewFile: Zt }), inject: { configProvider: { default: function () { return Vt } } }, updated: function () { var e = this; this.$nextTick((function () { var t = e.$props, n = t.listType, r = t.items, i = t.previewFile; "picture" !== n && "picture-card" !== n || (r || []).forEach((function (t) { "undefined" !== typeof document && "undefined" !== typeof window && window.FileReader && window.File && (t.originFileObj instanceof File || t.originFileObj instanceof Blob) && void 0 === t.thumbUrl && (t.thumbUrl = "", i && i(t.originFileObj).then((function (n) { t.thumbUrl = n || "", e.$forceUpdate() }))) })) })) }, methods: { handlePreview: function (e, t) { var n = Object(v["k"])(this), r = n.preview; if (r) return t.preventDefault(), this.$emit("preview", e) }, handleDownload: function (e) { var t = Object(v["k"])(this), n = t.download; "function" === typeof n ? n(e) : e.url && window.open(e.url) }, handleClose: function (e) { this.$emit("remove", e) } }, render: function () { var e, t = this, n = arguments[0], r = Object(v["l"])(this), i = r.prefixCls, o = r.items, a = void 0 === o ? [] : o, c = r.listType, l = r.showPreviewIcon, u = r.showRemoveIcon, f = r.showDownloadIcon, d = r.locale, p = r.progressAttr, m = this.configProvider.getPrefixCls, g = m("upload", i), b = a.map((function (e) { var r, i, o = void 0, a = n(Ve, { attrs: { type: "uploading" === e.status ? "loading" : "paper-clip" } }); if ("picture" === c || "picture-card" === c) if ("picture-card" === c && "uploading" === e.status) a = n("div", { class: g + "-list-item-uploading-text" }, [d.uploading]); else if (e.thumbUrl || e.url) { var v = Jt(e) ? n("img", { attrs: { src: e.thumbUrl || e.url, alt: e.name }, class: g + "-list-item-image" }) : n(Ve, { attrs: { type: "file", theme: "twoTone" }, class: g + "-list-item-icon" }); a = n("a", { class: g + "-list-item-thumbnail", on: { click: function (n) { return t.handlePreview(e, n) } }, attrs: { href: e.url || e.thumbUrl, target: "_blank", rel: "noopener noreferrer" } }, [v]) } else a = n(Ve, { class: g + "-list-item-thumbnail", attrs: { type: "picture", theme: "twoTone" } }); if ("uploading" === e.status) { var m = { props: s()({}, p, { type: "line", percent: e.percent }) }, b = "percent" in e ? n(Ki, m) : null; o = n("div", { class: g + "-list-item-progress", key: "progress" }, [b]) } var x = Q()((r = {}, h()(r, g + "-list-item", !0), h()(r, g + "-list-item-" + e.status, !0), h()(r, g + "-list-item-list-type-" + c, !0), r)), w = "string" === typeof e.linkProps ? JSON.parse(e.linkProps) : e.linkProps, _ = u ? n(Ve, { attrs: { type: "delete", title: d.removeFile }, on: { click: function () { return t.handleClose(e) } } }) : null, C = f && "done" === e.status ? n(Ve, { attrs: { type: "download", title: d.downloadFile }, on: { click: function () { return t.handleDownload(e) } } }) : null, M = "picture-card" !== c && n("span", { key: "download-delete", class: g + "-list-item-card-actions " + ("picture" === c ? "picture" : "") }, [C && n("a", { attrs: { title: d.downloadFile } }, [C]), _ && n("a", { attrs: { title: d.removeFile } }, [_])]), O = Q()((i = {}, h()(i, g + "-list-item-name", !0), h()(i, g + "-list-item-name-icon-count-" + [C, _].filter((function (e) { return e })).length, !0), i)), k = e.url ? [n("a", K()([{ attrs: { target: "_blank", rel: "noopener noreferrer", title: e.name }, class: O }, w, { attrs: { href: e.url }, on: { click: function (n) { return t.handlePreview(e, n) } } }]), [e.name]), M] : [n("span", { key: "view", class: g + "-list-item-name", on: { click: function (n) { return t.handlePreview(e, n) } }, attrs: { title: e.name } }, [e.name]), M], S = e.url || e.thumbUrl ? void 0 : { pointerEvents: "none", opacity: .5 }, T = l ? n("a", { attrs: { href: e.url || e.thumbUrl, target: "_blank", rel: "noopener noreferrer", title: d.previewFile }, style: S, on: { click: function (n) { return t.handlePreview(e, n) } } }, [n(Ve, { attrs: { type: "eye-o" } })]) : null, A = "picture-card" === c && "uploading" !== e.status && n("span", { class: g + "-list-item-actions" }, [T, "done" === e.status && C, _]), L = void 0; L = e.response && "string" === typeof e.response ? e.response : e.error && e.error.statusText || d.uploadError; var j = n("span", [a, k]), z = Object(y["a"])("fade"), E = n("div", { class: x, key: e.uid }, [n("div", { class: g + "-list-item-info" }, [j]), A, n("transition", z, [o])]), P = Q()(h()({}, g + "-list-picture-card-container", "picture-card" === c)); return n("div", { key: e.uid, class: P }, ["error" === e.status ? n(gi, { attrs: { title: L } }, [E]) : n("span", [E])]) })), x = Q()((e = {}, h()(e, g + "-list", !0), h()(e, g + "-list-" + c, !0), e)), w = "picture-card" === c ? "animate-inline" : "animate", _ = Object(y["a"])(g + "-" + w); return n("transition-group", K()([_, { attrs: { tag: "div" }, class: x }]), [b]) } }, Xi = { name: "AUpload", mixins: [m["a"]], inheritAttrs: !1, Dragger: $t, props: Object(v["t"])(Ft, { type: "select", multiple: !1, action: "", data: {}, accept: "", beforeUpload: Bt, showUploadList: !0, listType: "text", disabled: !1, supportServerRender: !0 }), inject: { configProvider: { default: function () { return Vt } } }, data: function () { return this.progressTimer = null, { sFileList: this.fileList || this.defaultFileList || [], dragState: "drop" } }, watch: { fileList: function (e) { this.sFileList = e || [] } }, beforeDestroy: function () { this.clearProgressTimer() }, methods: { onStart: function (e) { var t = Wt(e); t.status = "uploading"; var n = this.sFileList.concat(), r = et()(n, (function (e) { var n = e.uid; return n === t.uid })); -1 === r ? n.push(t) : n[r] = t, this.onChange({ file: t, fileList: n }), window.File && !Object({ NODE_ENV: "production", BASE_URL: "/" }).TEST_IE || this.autoUpdateProgress(0, t) }, onSuccess: function (e, t, n) { this.clearProgressTimer(); try { "string" === typeof e && (e = JSON.parse(e)) } catch (o) { } var r = this.sFileList, i = Ut(t, r); i && (i.status = "done", i.response = e, i.xhr = n, this.onChange({ file: s()({}, i), fileList: r })) }, onProgress: function (e, t) { var n = this.sFileList, r = Ut(t, n); r && (r.percent = e.percent, this.onChange({ event: e, file: s()({}, r), fileList: this.sFileList })) }, onError: function (e, t, n) { this.clearProgressTimer(); var r = this.sFileList, i = Ut(n, r); i && (i.error = e, i.response = t, i.status = "error", this.onChange({ file: s()({}, i), fileList: r })) }, onReject: function (e) { this.$emit("reject", e) }, handleRemove: function (e) { var t = this, n = this.remove, r = this.$data.sFileList; Promise.resolve("function" === typeof n ? n(e) : n).then((function (n) { if (!1 !== n) { var i = Kt(e, r); i && (e.status = "removed", t.upload && t.upload.abort(e), t.onChange({ file: e, fileList: i })) } })) }, handleManualRemove: function (e) { this.$refs.uploadRef && this.$refs.uploadRef.abort(e), this.handleRemove(e) }, onChange: function (e) { Object(v["s"])(this, "fileList") || this.setState({ sFileList: e.fileList }), this.$emit("change", e) }, onFileDrop: function (e) { this.setState({ dragState: e.type }) }, reBeforeUpload: function (e, t) { var n = this.$props.beforeUpload, r = this.$data.sFileList; if (!n) return !0; var i = n(e, t); return !1 === i ? (this.onChange({ file: e, fileList: Qe()(r.concat(t.map(Wt)), (function (e) { return e.uid })) }), !1) : !i || !i.then || i }, clearProgressTimer: function () { clearInterval(this.progressTimer) }, autoUpdateProgress: function (e, t) { var n = this, r = qt(), i = 0; this.clearProgressTimer(), this.progressTimer = setInterval((function () { i = r(i), n.onProgress({ percent: 100 * i }, t) }), 200) }, renderUploadList: function (e) { var t = this.$createElement, n = Object(v["l"])(this), r = n.showUploadList, i = void 0 === r ? {} : r, o = n.listType, a = n.previewFile, c = n.disabled, l = n.locale, u = i.showRemoveIcon, h = i.showPreviewIcon, f = i.showDownloadIcon, d = this.$data.sFileList, p = { props: { listType: o, items: d, previewFile: a, showRemoveIcon: !c && u, showPreviewIcon: h, showDownloadIcon: f, locale: s()({}, e, l) }, on: s()({ remove: this.handleManualRemove }, nt()(Object(v["k"])(this), ["download", "preview"])) }; return t(Gi, p) } }, render: function () { var e, t = arguments[0], n = Object(v["l"])(this), r = n.prefixCls, i = n.showUploadList, o = n.listType, a = n.type, c = n.disabled, l = this.$data, u = l.sFileList, f = l.dragState, d = this.configProvider.getPrefixCls, p = d("upload", r), m = { props: s()({}, this.$props, { prefixCls: p, beforeUpload: this.reBeforeUpload }), on: { start: this.onStart, error: this.onError, progress: this.onProgress, success: this.onSuccess, reject: this.onReject }, ref: "uploadRef", attrs: s()({}, this.$attrs) }, g = this.$slots["default"]; g && !c || (delete m.props.id, delete m.attrs.id); var y = i ? t(Le, { attrs: { componentName: "Upload", defaultLocale: Ae.Upload }, scopedSlots: { default: this.renderUploadList } }) : null; if ("drag" === a) { var b, x = Q()(p, (b = {}, h()(b, p + "-drag", !0), h()(b, p + "-drag-uploading", u.some((function (e) { return "uploading" === e.status }))), h()(b, p + "-drag-hover", "dragover" === f), h()(b, p + "-disabled", c), b)); return t("span", [t("div", { class: x, on: { drop: this.onFileDrop, dragover: this.onFileDrop, dragleave: this.onFileDrop } }, [t(kt, K()([m, { class: p + "-btn" }]), [t("div", { class: p + "-drag-container" }, [g])])]), y]) } var w = Q()(p, (e = {}, h()(e, p + "-select", !0), h()(e, p + "-select-" + o, !0), h()(e, p + "-disabled", c), e)), _ = t("div", { class: w, style: g ? void 0 : { display: "none" } }, [t(kt, m, [g])]); return "picture-card" === o ? t("span", { class: p + "-picture-card-wrapper" }, [y, _]) : t("span", [_, y]) } }; Xi.Dragger = $t, Xi.install = function (e) { e.use(N), e.component(Xi.name, Xi), e.component($t.name, $t) }; var Ji = Xi, Qi = (n("8c3f"), n("0464")), Zi = n("c1df"), eo = n.n(Zi), to = { mixins: [m["a"]], props: { format: p["a"].string, prefixCls: p["a"].string, disabledDate: p["a"].func, placeholder: p["a"].string, clearText: p["a"].string, value: p["a"].object, inputReadOnly: p["a"].bool.def(!1), hourOptions: p["a"].array, minuteOptions: p["a"].array, secondOptions: p["a"].array, disabledHours: p["a"].func, disabledMinutes: p["a"].func, disabledSeconds: p["a"].func, allowEmpty: p["a"].bool, defaultOpenValue: p["a"].object, currentSelectPanel: p["a"].string, focusOnOpen: p["a"].bool, clearIcon: p["a"].any }, data: function () { var e = this.value, t = this.format; return { str: e && e.format(t) || "", invalid: !1 } }, mounted: function () { var e = this; if (this.focusOnOpen) { var t = window.requestAnimationFrame || window.setTimeout; t((function () { e.$refs.input.focus(), e.$refs.input.select() })) } }, watch: { value: function (e) { var t = this; this.$nextTick((function () { t.setState({ str: e && e.format(t.format) || "", invalid: !1 }) })) } }, methods: { onInputChange: function (e) { var t = e.target, n = t.value, r = t.composing, i = this.str, o = void 0 === i ? "" : i; if (!e.isComposing && !r && o !== n) { this.setState({ str: n }); var a = this.format, s = this.hourOptions, c = this.minuteOptions, l = this.secondOptions, u = this.disabledHours, h = this.disabledMinutes, f = this.disabledSeconds, d = this.value; if (n) { var p = this.getProtoValue().clone(), v = eo()(n, a, !0); if (!v.isValid()) return void this.setState({ invalid: !0 }); if (p.hour(v.hour()).minute(v.minute()).second(v.second()), s.indexOf(p.hour()) < 0 || c.indexOf(p.minute()) < 0 || l.indexOf(p.second()) < 0) return void this.setState({ invalid: !0 }); var m = u(), g = h(p.hour()), y = f(p.hour(), p.minute()); if (m && m.indexOf(p.hour()) >= 0 || g && g.indexOf(p.minute()) >= 0 || y && y.indexOf(p.second()) >= 0) return void this.setState({ invalid: !0 }); if (d) { if (d.hour() !== p.hour() || d.minute() !== p.minute() || d.second() !== p.second()) { var b = d.clone(); b.hour(p.hour()), b.minute(p.minute()), b.second(p.second()), this.__emit("change", b) } } else d !== p && this.__emit("change", p) } else this.__emit("change", null); this.setState({ invalid: !1 }) } }, onKeyDown: function (e) { 27 === e.keyCode && this.__emit("esc"), this.__emit("keydown", e) }, getProtoValue: function () { return this.value || this.defaultOpenValue }, getInput: function () { var e = this.$createElement, t = this.prefixCls, n = this.placeholder, r = this.inputReadOnly, i = this.invalid, o = this.str, a = i ? t + "-input-invalid" : ""; return e("input", K()([{ class: t + "-input " + a, ref: "input", on: { keydown: this.onKeyDown, input: this.onInputChange }, domProps: { value: o }, attrs: { placeholder: n, readOnly: !!r } }, { directives: [{ name: "ant-input" }] }])) } }, render: function () { var e = arguments[0], t = this.prefixCls; return e("div", { class: t + "-input-wrap" }, [this.getInput()]) } }, no = to, ro = n("c449"), io = n.n(ro); function oo() { } var ao = function e(t, n, r) { if (r <= 0) io()((function () { t.scrollTop = n })); else { var i = n - t.scrollTop, o = i / r * 10; io()((function () { t.scrollTop += o, t.scrollTop !== n && e(t, n, r - 10) })) } }, so = { mixins: [m["a"]], props: { prefixCls: p["a"].string, options: p["a"].array, selectedIndex: p["a"].number, type: p["a"].string }, data: function () { return { active: !1 } }, mounted: function () { var e = this; this.$nextTick((function () { e.scrollToSelected(0) })) }, watch: { selectedIndex: function () { var e = this; this.$nextTick((function () { e.scrollToSelected(120) })) } }, methods: { onSelect: function (e) { var t = this.type; this.__emit("select", t, e) }, onEsc: function (e) { this.__emit("esc", e) }, getOptions: function () { var e = this, t = this.$createElement, n = this.options, r = this.selectedIndex, i = this.prefixCls; return n.map((function (n, o) { var a, s = Q()((a = {}, h()(a, i + "-select-option-selected", r === o), h()(a, i + "-select-option-disabled", n.disabled), a)), c = n.disabled ? oo : function () { e.onSelect(n.value) }, l = function (t) { 13 === t.keyCode ? c() : 27 === t.keyCode && e.onEsc() }; return t("li", { attrs: { role: "button", disabled: n.disabled, tabIndex: "0" }, on: { click: c, keydown: l }, class: s, key: o }, [n.value]) })) }, handleMouseEnter: function (e) { this.setState({ active: !0 }), this.__emit("mouseenter", e) }, handleMouseLeave: function () { this.setState({ active: !1 }) }, scrollToSelected: function (e) { var t = this.$el, n = this.$refs.list; if (n) { var r = this.selectedIndex; r < 0 && (r = 0); var i = n.children[r], o = i.offsetTop; ao(t, o, e) } } }, render: function () { var e, t = arguments[0], n = this.prefixCls, r = this.options, i = this.active; if (0 === r.length) return null; var o = (e = {}, h()(e, n + "-select", 1), h()(e, n + "-select-active", i), e); return t("div", { class: o, on: { mouseenter: this.handleMouseEnter, mouseleave: this.handleMouseLeave } }, [t("ul", { ref: "list" }, [this.getOptions()])]) } }, co = so, lo = function (e, t) { var n = "" + e; e < 10 && (n = "0" + e); var r = !1; return t && t.indexOf(e) >= 0 && (r = !0), { value: n, disabled: r } }, uo = { mixins: [m["a"]], name: "Combobox", props: { format: p["a"].string, defaultOpenValue: p["a"].object, prefixCls: p["a"].string, value: p["a"].object, showHour: p["a"].bool, showMinute: p["a"].bool, showSecond: p["a"].bool, hourOptions: p["a"].array, minuteOptions: p["a"].array, secondOptions: p["a"].array, disabledHours: p["a"].func, disabledMinutes: p["a"].func, disabledSeconds: p["a"].func, use12Hours: p["a"].bool, isAM: p["a"].bool }, methods: { onItemChange: function (e, t) { var n = this.defaultOpenValue, r = this.use12Hours, i = this.value, o = this.isAM, a = (i || n).clone(); if ("hour" === e) r ? o ? a.hour(+t % 12) : a.hour(+t % 12 + 12) : a.hour(+t); else if ("minute" === e) a.minute(+t); else if ("ampm" === e) { var s = t.toUpperCase(); r && ("PM" === s && a.hour() < 12 && a.hour(a.hour() % 12 + 12), "AM" === s && a.hour() >= 12 && a.hour(a.hour() - 12)), this.__emit("amPmChange", s) } else a.second(+t); this.__emit("change", a) }, onEnterSelectPanel: function (e) { this.__emit("currentSelectPanelChange", e) }, onEsc: function (e) { this.__emit("esc", e) }, getHourSelect: function (e) { var t = this, n = this.$createElement, r = this.prefixCls, i = this.hourOptions, o = this.disabledHours, a = this.showHour, s = this.use12Hours; if (!a) return null; var c = o(), l = void 0, u = void 0; return s ? (l = [12].concat(i.filter((function (e) { return e < 12 && e > 0 }))), u = e % 12 || 12) : (l = i, u = e), n(co, { attrs: { prefixCls: r, options: l.map((function (e) { return lo(e, c) })), selectedIndex: l.indexOf(u), type: "hour" }, on: { select: this.onItemChange, mouseenter: function () { return t.onEnterSelectPanel("hour") }, esc: this.onEsc } }) }, getMinuteSelect: function (e) { var t = this, n = this.$createElement, r = this.prefixCls, i = this.minuteOptions, o = this.disabledMinutes, a = this.defaultOpenValue, s = this.showMinute, c = this.value; if (!s) return null; var l = c || a, u = o(l.hour()); return n(co, { attrs: { prefixCls: r, options: i.map((function (e) { return lo(e, u) })), selectedIndex: i.indexOf(e), type: "minute" }, on: { select: this.onItemChange, mouseenter: function () { return t.onEnterSelectPanel("minute") }, esc: this.onEsc } }) }, getSecondSelect: function (e) { var t = this, n = this.$createElement, r = this.prefixCls, i = this.secondOptions, o = this.disabledSeconds, a = this.showSecond, s = this.defaultOpenValue, c = this.value; if (!a) return null; var l = c || s, u = o(l.hour(), l.minute()); return n(co, { attrs: { prefixCls: r, options: i.map((function (e) { return lo(e, u) })), selectedIndex: i.indexOf(e), type: "second" }, on: { select: this.onItemChange, mouseenter: function () { return t.onEnterSelectPanel("second") }, esc: this.onEsc } }) }, getAMPMSelect: function () { var e = this, t = this.$createElement, n = this.prefixCls, r = this.use12Hours, i = this.format, o = this.isAM; if (!r) return null; var a = ["am", "pm"].map((function (e) { return i.match(/\sA/) ? e.toUpperCase() : e })).map((function (e) { return { value: e } })), s = o ? 0 : 1; return t(co, { attrs: { prefixCls: n, options: a, selectedIndex: s, type: "ampm" }, on: { select: this.onItemChange, mouseenter: function () { return e.onEnterSelectPanel("ampm") }, esc: this.onEsc } }) } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.defaultOpenValue, r = this.value, i = r || n; return e("div", { class: t + "-combobox" }, [this.getHourSelect(i.hour()), this.getMinuteSelect(i.minute()), this.getSecondSelect(i.second()), this.getAMPMSelect(i.hour())]) } }, ho = uo; function fo() { } function po(e, t, n) { for (var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1, i = [], o = 0; o < e; o += r)(!t || t.indexOf(o) < 0 || !n) && i.push(o); return i } function vo(e, t, n, r) { var i = t.slice().sort((function (t, n) { return Math.abs(e.hour() - t) - Math.abs(e.hour() - n) }))[0], o = n.slice().sort((function (t, n) { return Math.abs(e.minute() - t) - Math.abs(e.minute() - n) }))[0], a = r.slice().sort((function (t, n) { return Math.abs(e.second() - t) - Math.abs(e.second() - n) }))[0]; return eo()(i + ":" + o + ":" + a, "HH:mm:ss") } var mo = { mixins: [m["a"]], props: { clearText: p["a"].string, prefixCls: p["a"].string.def("rc-time-picker-panel"), defaultOpenValue: { type: Object, default: function () { return eo()() } }, value: p["a"].any, defaultValue: p["a"].any, placeholder: p["a"].string, format: p["a"].string, inputReadOnly: p["a"].bool.def(!1), disabledHours: p["a"].func.def(fo), disabledMinutes: p["a"].func.def(fo), disabledSeconds: p["a"].func.def(fo), hideDisabledOptions: p["a"].bool, allowEmpty: p["a"].bool, showHour: p["a"].bool, showMinute: p["a"].bool, showSecond: p["a"].bool, use12Hours: p["a"].bool.def(!1), hourStep: p["a"].number, minuteStep: p["a"].number, secondStep: p["a"].number, addon: p["a"].func.def(fo), focusOnOpen: p["a"].bool, clearIcon: p["a"].any }, data: function () { return { sValue: this.value, selectionRange: [], currentSelectPanel: "" } }, watch: { value: function (e) { this.setState({ sValue: e }) } }, methods: { onChange: function (e) { this.setState({ sValue: e }), this.__emit("change", e) }, onAmPmChange: function (e) { this.__emit("amPmChange", e) }, onCurrentSelectPanelChange: function (e) { this.setState({ currentSelectPanel: e }) }, close: function () { this.__emit("esc") }, onEsc: function (e) { this.__emit("esc", e) }, disabledHours2: function () { var e = this.use12Hours, t = this.disabledHours, n = t(); return e && Array.isArray(n) && (n = this.isAM() ? n.filter((function (e) { return e < 12 })).map((function (e) { return 0 === e ? 12 : e })) : n.map((function (e) { return 12 === e ? 12 : e - 12 }))), n }, isAM: function () { var e = this.sValue || this.defaultOpenValue; return e.hour() >= 0 && e.hour() < 12 } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.placeholder, r = this.disabledMinutes, i = this.addon, o = this.disabledSeconds, a = this.hideDisabledOptions, s = this.showHour, c = this.showMinute, l = this.showSecond, u = this.format, h = this.defaultOpenValue, f = this.clearText, d = this.use12Hours, p = this.focusOnOpen, m = this.hourStep, g = this.minuteStep, y = this.secondStep, b = this.inputReadOnly, x = this.sValue, w = this.currentSelectPanel, _ = Object(v["g"])(this, "clearIcon"), C = Object(v["k"])(this), M = C.esc, O = void 0 === M ? fo : M, k = C.keydown, S = void 0 === k ? fo : k, T = this.disabledHours2(), A = r(x ? x.hour() : null), L = o(x ? x.hour() : null, x ? x.minute() : null), j = po(24, T, a, m), z = po(60, A, a, g), E = po(60, L, a, y), P = vo(h, j, z, E); return e("div", { class: t + "-inner" }, [e(no, { attrs: { clearText: f, prefixCls: t, defaultOpenValue: P, value: x, currentSelectPanel: w, format: u, placeholder: n, hourOptions: j, minuteOptions: z, secondOptions: E, disabledHours: this.disabledHours2, disabledMinutes: r, disabledSeconds: o, focusOnOpen: p, inputReadOnly: b, clearIcon: _ }, on: { esc: O, change: this.onChange, keydown: S } }), e(ho, { attrs: { prefixCls: t, value: x, defaultOpenValue: P, format: u, showHour: s, showMinute: c, showSecond: l, hourOptions: j, minuteOptions: z, secondOptions: E, disabledHours: this.disabledHours2, disabledMinutes: r, disabledSeconds: o, use12Hours: d, isAM: this.isAM() }, on: { change: this.onChange, amPmChange: this.onAmPmChange, currentSelectPanelChange: this.onCurrentSelectPanelChange, esc: this.onEsc } }), i(this)]) } }, go = mo, yo = { adjustX: 1, adjustY: 1 }, bo = [0, 0], xo = { bottomLeft: { points: ["tl", "tl"], overflow: yo, offset: [0, -3], targetOffset: bo }, bottomRight: { points: ["tr", "tr"], overflow: yo, offset: [0, -3], targetOffset: bo }, topRight: { points: ["br", "br"], overflow: yo, offset: [0, 3], targetOffset: bo }, topLeft: { points: ["bl", "bl"], overflow: yo, offset: [0, 3], targetOffset: bo } }, wo = xo; function _o() { } var Co = { name: "VcTimePicker", mixins: [m["a"]], props: Object(v["t"])({ prefixCls: p["a"].string, clearText: p["a"].string, value: p["a"].any, defaultOpenValue: { type: Object, default: function () { return eo()() } }, inputReadOnly: p["a"].bool, disabled: p["a"].bool, allowEmpty: p["a"].bool, defaultValue: p["a"].any, open: p["a"].bool, defaultOpen: p["a"].bool, align: p["a"].object, placement: p["a"].any, transitionName: p["a"].string, getPopupContainer: p["a"].func, placeholder: p["a"].string, format: p["a"].string, showHour: p["a"].bool, showMinute: p["a"].bool, showSecond: p["a"].bool, popupClassName: p["a"].string, popupStyle: p["a"].object, disabledHours: p["a"].func, disabledMinutes: p["a"].func, disabledSeconds: p["a"].func, hideDisabledOptions: p["a"].bool, name: p["a"].string, autoComplete: p["a"].string, use12Hours: p["a"].bool, hourStep: p["a"].number, minuteStep: p["a"].number, secondStep: p["a"].number, focusOnOpen: p["a"].bool, autoFocus: p["a"].bool, id: p["a"].string, inputIcon: p["a"].any, clearIcon: p["a"].any, addon: p["a"].func }, { clearText: "clear", prefixCls: "rc-time-picker", defaultOpen: !1, inputReadOnly: !1, popupClassName: "", popupStyle: {}, align: {}, allowEmpty: !0, showHour: !0, showMinute: !0, showSecond: !0, disabledHours: _o, disabledMinutes: _o, disabledSeconds: _o, hideDisabledOptions: !1, placement: "bottomLeft", use12Hours: !1, focusOnOpen: !1 }), data: function () { var e = this.defaultOpen, t = this.defaultValue, n = this.open, r = void 0 === n ? e : n, i = this.value, o = void 0 === i ? t : i; return { sOpen: r, sValue: o } }, watch: { value: function (e) { this.setState({ sValue: e }) }, open: function (e) { void 0 !== e && this.setState({ sOpen: e }) } }, mounted: function () { var e = this; this.$nextTick((function () { e.autoFocus && e.focus() })) }, methods: { onPanelChange: function (e) { this.setValue(e) }, onAmPmChange: function (e) { this.__emit("amPmChange", e) }, onClear: function (e) { e.stopPropagation(), this.setValue(null), this.setOpen(!1) }, onVisibleChange: function (e) { this.setOpen(e) }, onEsc: function () { this.setOpen(!1), this.focus() }, onKeyDown: function (e) { 40 === e.keyCode && this.setOpen(!0) }, onKeyDown2: function (e) { this.__emit("keydown", e) }, setValue: function (e) { Object(v["s"])(this, "value") || this.setState({ sValue: e }), this.__emit("change", e) }, getFormat: function () { var e = this.format, t = this.showHour, n = this.showMinute, r = this.showSecond, i = this.use12Hours; if (e) return e; if (i) { var o = [t ? "h" : "", n ? "mm" : "", r ? "ss" : ""].filter((function (e) { return !!e })).join(":"); return o.concat(" a") } return [t ? "HH" : "", n ? "mm" : "", r ? "ss" : ""].filter((function (e) { return !!e })).join(":") }, getPanelElement: function () { var e = this.$createElement, t = this.prefixCls, n = this.placeholder, r = this.disabledHours, i = this.addon, o = this.disabledMinutes, a = this.disabledSeconds, s = this.hideDisabledOptions, c = this.inputReadOnly, l = this.showHour, u = this.showMinute, h = this.showSecond, f = this.defaultOpenValue, d = this.clearText, p = this.use12Hours, m = this.focusOnOpen, g = this.onKeyDown2, y = this.hourStep, b = this.minuteStep, x = this.secondStep, w = this.sValue, _ = Object(v["g"])(this, "clearIcon"); return e(go, { attrs: { clearText: d, prefixCls: t + "-panel", value: w, inputReadOnly: c, defaultOpenValue: f, showHour: l, showMinute: u, showSecond: h, format: this.getFormat(), placeholder: n, disabledHours: r, disabledMinutes: o, disabledSeconds: a, hideDisabledOptions: s, use12Hours: p, hourStep: y, minuteStep: b, secondStep: x, focusOnOpen: m, clearIcon: _, addon: i }, ref: "panel", on: { change: this.onPanelChange, amPmChange: this.onAmPmChange, esc: this.onEsc, keydown: g } }) }, getPopupClassName: function () { var e = this.showHour, t = this.showMinute, n = this.showSecond, r = this.use12Hours, i = this.prefixCls, o = this.popupClassName, a = 0; return e && (a += 1), t && (a += 1), n && (a += 1), r && (a += 1), Q()(o, h()({}, i + "-panel-narrow", (!e || !t || !n) && !r), i + "-panel-column-" + a) }, setOpen: function (e) { this.sOpen !== e && (Object(v["s"])(this, "open") || this.setState({ sOpen: e }), e ? this.__emit("open", { open: e }) : this.__emit("close", { open: e })) }, focus: function () { this.$refs.picker.focus() }, blur: function () { this.$refs.picker.blur() }, onFocus: function (e) { this.__emit("focus", e) }, onBlur: function (e) { this.__emit("blur", e) }, renderClearButton: function () { var e = this, t = this.$createElement, n = this.sValue, r = this.$props, i = r.prefixCls, o = r.allowEmpty, a = r.clearText, s = r.disabled; if (!o || !n || s) return null; var c = Object(v["g"])(this, "clearIcon"); if (Object(v["v"])(c)) { var l = Object(v["i"])(c) || {}, u = l.click; return Object(en["a"])(c, { on: { click: function () { u && u.apply(void 0, arguments), e.onClear.apply(e, arguments) } } }) } return t("a", { attrs: { role: "button", title: a, tabIndex: 0 }, class: i + "-clear", on: { click: this.onClear } }, [c || t("i", { class: i + "-clear-icon" })]) } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.placeholder, r = this.placement, i = this.align, o = this.id, a = this.disabled, s = this.transitionName, c = this.getPopupContainer, l = this.name, u = this.autoComplete, h = this.autoFocus, f = this.inputReadOnly, d = this.sOpen, p = this.sValue, m = this.onFocus, g = this.onBlur, y = this.popupStyle, b = this.getPopupClassName(), x = Object(v["g"])(this, "inputIcon"); return e(Zr, { attrs: { prefixCls: t + "-panel", popupClassName: b, popupStyle: y, popupAlign: i, builtinPlacements: wo, popupPlacement: r, action: a ? [] : ["click"], destroyPopupOnHide: !0, getPopupContainer: c, popupTransitionName: s, popupVisible: d }, on: { popupVisibleChange: this.onVisibleChange } }, [e("template", { slot: "popup" }, [this.getPanelElement()]), e("span", { class: "" + t }, [e("input", { class: t + "-input", ref: "picker", attrs: { type: "text", placeholder: n, name: l, disabled: a, autoComplete: u, autoFocus: h, readOnly: !!f, id: o }, on: { keydown: this.onKeyDown, focus: m, blur: g }, domProps: { value: p && p.format(this.getFormat()) || "" } }), x || e("span", { class: t + "-icon" }), this.renderClearButton()])]) } }; function Mo(e) { return e["default"] || e } var Oo = n("2768"), ko = n.n(Oo), So = { validator: function (e) { return "string" === typeof e || ko()(e) || Zi["isMoment"](e) } }, To = { validator: function (e) { return !!Array.isArray(e) && (0 === e.length || -1 === e.findIndex((function (e) { return "string" !== typeof e })) || -1 === e.findIndex((function (e) { return !ko()(e) && !Zi["isMoment"](e) }))) } }, Ao = { validator: function (e) { return Array.isArray(e) ? 0 === e.length || -1 === e.findIndex((function (e) { return "string" !== typeof e })) || -1 === e.findIndex((function (e) { return !ko()(e) && !Zi["isMoment"](e) })) : "string" === typeof e || ko()(e) || Zi["isMoment"](e) } }; function Lo(e, t, n, r) { var i = Array.isArray(t) ? t : [t]; i.forEach((function (t) { t && (r && fe(Mo(Zi)(t, r).isValid(), e, "When set `valueFormat`, `" + n + "` should provides invalidate string time. "), !r && fe(Mo(Zi).isMoment(t) && t.isValid(), e, "`" + n + "` provides invalidate moment time. If you want to set empty value, use `null` instead.")) })) } var jo = function (e, t) { return Array.isArray(e) ? e.map((function (e) { return "string" === typeof e && e ? Mo(Zi)(e, t) : e || null })) : "string" === typeof e && e ? Mo(Zi)(e, t) : e || null }, zo = function (e, t) { return Array.isArray(e) ? e.map((function (e) { return Mo(Zi).isMoment(e) ? e.format(t) : e })) : Mo(Zi).isMoment(e) ? e.format(t) : e }; function Eo(e) { return { showHour: e.indexOf("H") > -1 || e.indexOf("h") > -1 || e.indexOf("k") > -1, showMinute: e.indexOf("m") > -1, showSecond: e.indexOf("s") > -1 } } var Po = function () { return { size: p["a"].oneOf(["large", "default", "small"]), value: Ao, defaultValue: Ao, open: p["a"].bool, format: p["a"].string, disabled: p["a"].bool, placeholder: p["a"].string, prefixCls: p["a"].string, hideDisabledOptions: p["a"].bool, disabledHours: p["a"].func, disabledMinutes: p["a"].func, disabledSeconds: p["a"].func, getPopupContainer: p["a"].func, use12Hours: p["a"].bool, focusOnOpen: p["a"].bool, hourStep: p["a"].number, minuteStep: p["a"].number, secondStep: p["a"].number, allowEmpty: p["a"].bool, allowClear: p["a"].bool, inputReadOnly: p["a"].bool, clearText: p["a"].string, defaultOpenValue: p["a"].object, popupClassName: p["a"].string, popupStyle: p["a"].object, suffixIcon: p["a"].any, align: p["a"].object, placement: p["a"].any, transitionName: p["a"].string, autoFocus: p["a"].bool, addon: p["a"].any, clearIcon: p["a"].any, locale: p["a"].object, valueFormat: p["a"].string } }, Do = { name: "ATimePicker", mixins: [m["a"]], props: Object(v["t"])(Po(), { align: { offset: [0, -2] }, disabled: !1, disabledHours: void 0, disabledMinutes: void 0, disabledSeconds: void 0, hideDisabledOptions: !1, placement: "bottomLeft", transitionName: "slide-up", focusOnOpen: !0, allowClear: !0 }), model: { prop: "value", event: "change" }, provide: function () { return { savePopupRef: this.savePopupRef } }, inject: { configProvider: { default: function () { return Vt } } }, data: function () { var e = this.value, t = this.defaultValue, n = this.valueFormat; return Lo("TimePicker", t, "defaultValue", n), Lo("TimePicker", e, "value", n), fe(!Object(v["s"])(this, "allowEmpty"), "TimePicker", "`allowEmpty` is deprecated. Please use `allowClear` instead."), { sValue: jo(e || t, n) } }, watch: { value: function (e) { Lo("TimePicker", e, "value", this.valueFormat), this.setState({ sValue: jo(e, this.valueFormat) }) } }, methods: { getDefaultFormat: function () { var e = this.format, t = this.use12Hours; return e || (t ? "h:mm:ss a" : "HH:mm:ss") }, getAllowClear: function () { var e = this.$props, t = e.allowClear, n = e.allowEmpty; return Object(v["s"])(this, "allowClear") ? t : n }, getDefaultLocale: function () { var e = s()({}, Me, this.$props.locale); return e }, savePopupRef: function (e) { this.popupRef = e }, handleChange: function (e) { Object(v["s"])(this, "value") || this.setState({ sValue: e }); var t = this.format, n = void 0 === t ? "HH:mm:ss" : t; this.$emit("change", this.valueFormat ? zo(e, this.valueFormat) : e, e && e.format(n) || "") }, handleOpenClose: function (e) { var t = e.open; this.$emit("openChange", t), this.$emit("update:open", t) }, focus: function () { this.$refs.timePicker.focus() }, blur: function () { this.$refs.timePicker.blur() }, renderInputIcon: function (e) { var t = this.$createElement, n = Object(v["g"])(this, "suffixIcon"); n = Array.isArray(n) ? n[0] : n; var r = n && Object(v["v"])(n) && Object(en["a"])(n, { class: e + "-clock-icon" }) || t(Ve, { attrs: { type: "clock-circle" }, class: e + "-clock-icon" }); return t("span", { class: e + "-icon" }, [r]) }, renderClearIcon: function (e) { var t = this.$createElement, n = Object(v["g"])(this, "clearIcon"), r = e + "-clear"; return n && Object(v["v"])(n) ? Object(en["a"])(n, { class: r }) : t(Ve, { attrs: { type: "close-circle", theme: "filled" }, class: r }) }, renderTimePicker: function (e) { var t = this.$createElement, n = Object(v["l"])(this); n = Object(Qi["a"])(n, ["defaultValue", "suffixIcon", "allowEmpty", "allowClear"]); var r = n, i = r.prefixCls, o = r.getPopupContainer, a = r.placeholder, c = r.size, l = this.configProvider.getPrefixCls, u = l("time-picker", i), f = this.getDefaultFormat(), d = h()({}, u + "-" + c, !!c), p = Object(v["g"])(this, "addon", {}, !1), m = function (e) { return p ? t("div", { class: u + "-panel-addon" }, ["function" === typeof p ? p(e) : p]) : null }, g = this.renderInputIcon(u), y = this.renderClearIcon(u), b = this.configProvider.getPopupContainer, x = { props: s()({}, Eo(f), n, { allowEmpty: this.getAllowClear(), prefixCls: u, getPopupContainer: o || b, format: f, value: this.sValue, placeholder: void 0 === a ? e.placeholder : a, addon: m, inputIcon: g, clearIcon: y }), class: d, ref: "timePicker", on: s()({}, Object(v["k"])(this), { change: this.handleChange, open: this.handleOpenClose, close: this.handleOpenClose }) }; return t(Co, x) } }, render: function () { var e = arguments[0]; return e(Le, { attrs: { componentName: "TimePicker", defaultLocale: this.getDefaultLocale() }, scopedSlots: { default: this.renderTimePicker } }) }, install: function (e) { e.use(N), e.component(Do.name, Do) } }, Ho = Do, Vo = (n("9868"), n("948e"), n("e679"), n("a54e"), { MAC_ENTER: 3, BACKSPACE: 8, TAB: 9, NUM_CENTER: 12, ENTER: 13, SHIFT: 16, CTRL: 17, ALT: 18, PAUSE: 19, CAPS_LOCK: 20, ESC: 27, SPACE: 32, PAGE_UP: 33, PAGE_DOWN: 34, END: 35, HOME: 36, LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, PRINT_SCREEN: 44, INSERT: 45, DELETE: 46, ZERO: 48, ONE: 49, TWO: 50, THREE: 51, FOUR: 52, FIVE: 53, SIX: 54, SEVEN: 55, EIGHT: 56, NINE: 57, QUESTION_MARK: 63, A: 65, B: 66, C: 67, D: 68, E: 69, F: 70, G: 71, H: 72, I: 73, J: 74, K: 75, L: 76, M: 77, N: 78, O: 79, P: 80, Q: 81, R: 82, S: 83, T: 84, U: 85, V: 86, W: 87, X: 88, Y: 89, Z: 90, META: 91, WIN_KEY_RIGHT: 92, CONTEXT_MENU: 93, NUM_ZERO: 96, NUM_ONE: 97, NUM_TWO: 98, NUM_THREE: 99, NUM_FOUR: 100, NUM_FIVE: 101, NUM_SIX: 102, NUM_SEVEN: 103, NUM_EIGHT: 104, NUM_NINE: 105, NUM_MULTIPLY: 106, NUM_PLUS: 107, NUM_MINUS: 109, NUM_PERIOD: 110, NUM_DIVISION: 111, F1: 112, F2: 113, F3: 114, F4: 115, F5: 116, F6: 117, F7: 118, F8: 119, F9: 120, F10: 121, F11: 122, F12: 123, NUMLOCK: 144, SEMICOLON: 186, DASH: 189, EQUALS: 187, COMMA: 188, PERIOD: 190, SLASH: 191, APOSTROPHE: 192, SINGLE_QUOTE: 222, OPEN_SQUARE_BRACKET: 219, BACKSLASH: 220, CLOSE_SQUARE_BRACKET: 221, WIN_KEY: 224, MAC_FF_META: 224, WIN_IME: 229, isTextModifyingKeyEvent: function (e) { var t = e.keyCode; if (e.altKey && !e.ctrlKey || e.metaKey || t >= Vo.F1 && t <= Vo.F12) return !1; switch (t) { case Vo.ALT: case Vo.CAPS_LOCK: case Vo.CONTEXT_MENU: case Vo.CTRL: case Vo.DOWN: case Vo.END: case Vo.ESC: case Vo.HOME: case Vo.INSERT: case Vo.LEFT: case Vo.MAC_FF_META: case Vo.META: case Vo.NUMLOCK: case Vo.NUM_CENTER: case Vo.PAGE_DOWN: case Vo.PAGE_UP: case Vo.PAUSE: case Vo.PRINT_SCREEN: case Vo.RIGHT: case Vo.SHIFT: case Vo.UP: case Vo.WIN_KEY: case Vo.WIN_KEY_RIGHT: return !1; default: return !0 } }, isCharacterKey: function (e) { if (e >= Vo.ZERO && e <= Vo.NINE) return !0; if (e >= Vo.NUM_ZERO && e <= Vo.NUM_MULTIPLY) return !0; if (e >= Vo.A && e <= Vo.Z) return !0; if (-1 !== window.navigation.userAgent.indexOf("WebKit") && 0 === e) return !0; switch (e) { case Vo.SPACE: case Vo.QUESTION_MARK: case Vo.NUM_PLUS: case Vo.NUM_MINUS: case Vo.NUM_PERIOD: case Vo.NUM_DIVISION: case Vo.SEMICOLON: case Vo.DASH: case Vo.EQUALS: case Vo.COMMA: case Vo.PERIOD: case Vo.SLASH: case Vo.APOSTROPHE: case Vo.SINGLE_QUOTE: case Vo.OPEN_SQUARE_BRACKET: case Vo.BACKSLASH: case Vo.CLOSE_SQUARE_BRACKET: return !0; default: return !1 } } }), Io = Vo, No = { DATE_ROW_COUNT: 6, DATE_COL_COUNT: 7 }, Ro = { functional: !0, render: function (e, t) { for (var n = arguments[0], r = t.props, i = r.value, o = i.localeData(), a = r.prefixCls, s = [], c = [], l = o.firstDayOfWeek(), u = void 0, h = eo()(), f = 0; f < No.DATE_COL_COUNT; f++) { var d = (l + f) % No.DATE_COL_COUNT; h.day(d), s[f] = o.weekdaysMin(h), c[f] = o.weekdaysShort(h) } r.showWeekNumber && (u = n("th", { attrs: { role: "columnheader" }, class: a + "-column-header " + a + "-week-number-header" }, [n("span", { class: a + "-column-header-inner" }, ["x"])])); var p = c.map((function (e, t) { return n("th", { key: t, attrs: { role: "columnheader", title: e }, class: a + "-column-header" }, [n("span", { class: a + "-column-header-inner" }, [s[t]])]) })); return n("thead", [n("tr", { attrs: { role: "row" } }, [u, p])]) } }, Fo = { disabledHours: function () { return [] }, disabledMinutes: function () { return [] }, disabledSeconds: function () { return [] } }; function Yo(e) { var t = eo()(); return t.locale(e.locale()).utcOffset(e.utcOffset()), t } function $o(e) { return e.format("LL") } function Bo(e) { var t = Yo(e); return $o(t) } function Wo(e) { var t = e.locale(), n = e.localeData(); return n["zh-cn" === t ? "months" : "monthsShort"](e) } function qo(e, t) { eo.a.isMoment(e) && eo.a.isMoment(t) && (t.hour(e.hour()), t.minute(e.minute()), t.second(e.second()), t.millisecond(e.millisecond())) } function Uo(e, t) { var n = t ? t(e) : {}; return n = s()({}, Fo, n), n } function Ko(e, t) { var n = !1; if (e) { var r = e.hour(), i = e.minute(), o = e.second(), a = t.disabledHours(); if (-1 === a.indexOf(r)) { var s = t.disabledMinutes(r); if (-1 === s.indexOf(i)) { var c = t.disabledSeconds(r, i); n = -1 !== c.indexOf(o) } else n = !0 } else n = !0 } return !n } function Go(e, t) { var n = Uo(e, t); return Ko(e, n) } function Xo(e, t, n) { return (!t || !t(e)) && !(n && !Go(e, n)) } function Jo(e, t) { if (!e) return ""; if (Array.isArray(t) && (t = t[0]), "function" === typeof t) { var n = t(e); if ("string" === typeof n) return n; throw new Error("The function of format does not return a string") } return e.format(t) } function Qo() { } function Zo(e, t) { return e && t && e.isSame(t, "day") } function ea(e, t) { return e.year() < t.year() ? 1 : e.year() === t.year() && e.month() < t.month() } function ta(e, t) { return e.year() > t.year() ? 1 : e.year() === t.year() && e.month() > t.month() } function na(e) { return "rc-calendar-" + e.year() + "-" + e.month() + "-" + e.date() } var ra = { props: { contentRender: p["a"].func, dateRender: p["a"].func, disabledDate: p["a"].func, prefixCls: p["a"].string, selectedValue: p["a"].oneOfType([p["a"].any, p["a"].arrayOf(p["a"].any)]), value: p["a"].object, hoverValue: p["a"].any.def([]), showWeekNumber: p["a"].bool }, render: function () { var e = arguments[0], t = Object(v["l"])(this), n = t.contentRender, r = t.prefixCls, i = t.selectedValue, o = t.value, a = t.showWeekNumber, s = t.dateRender, c = t.disabledDate, l = t.hoverValue, u = Object(v["k"])(this), f = u.select, d = void 0 === f ? Qo : f, p = u.dayHover, m = void 0 === p ? Qo : p, g = void 0, y = void 0, b = void 0, x = [], w = Yo(o), _ = r + "-cell", C = r + "-week-number-cell", M = r + "-date", O = r + "-today", k = r + "-selected-day", S = r + "-selected-date", T = r + "-selected-start-date", A = r + "-selected-end-date", L = r + "-in-range-cell", j = r + "-last-month-cell", z = r + "-next-month-btn-day", E = r + "-disabled-cell", P = r + "-disabled-cell-first-of-row", D = r + "-disabled-cell-last-of-row", H = r + "-last-day-of-month", V = o.clone(); V.date(1); var I = V.day(), N = (I + 7 - o.localeData().firstDayOfWeek()) % 7, R = V.clone(); R.add(0 - N, "days"); var F = 0; for (g = 0; g < No.DATE_ROW_COUNT; g++)for (y = 0; y < No.DATE_COL_COUNT; y++)b = R, F && (b = b.clone(), b.add(F, "days")), x.push(b), F++; var Y = []; for (F = 0, g = 0; g < No.DATE_ROW_COUNT; g++) { var $, B = void 0, W = void 0, q = !1, U = []; for (a && (W = e("td", { key: "week-" + x[F].week(), attrs: { role: "gridcell" }, class: C }, [x[F].week()])), y = 0; y < No.DATE_COL_COUNT; y++) { var K = null, G = null; b = x[F], y < No.DATE_COL_COUNT - 1 && (K = x[F + 1]), y > 0 && (G = x[F - 1]); var X = _, J = !1, Z = !1; Zo(b, w) && (X += " " + O, B = !0); var ee = ea(b, o), te = ta(b, o); if (i && Array.isArray(i)) { var ne = l.length ? l : i; if (!ee && !te) { var re = ne[0], ie = ne[1]; re && Zo(b, re) && (Z = !0, q = !0, X += " " + T), (re || ie) && (Zo(b, ie) ? (Z = !0, q = !0, X += " " + A) : ((null === re || void 0 === re) && b.isBefore(ie, "day") || (null === ie || void 0 === ie) && b.isAfter(re, "day") || b.isAfter(re, "day") && b.isBefore(ie, "day")) && (X += " " + L)) } } else Zo(b, o) && (Z = !0, q = !0); Zo(b, i) && (X += " " + S), ee && (X += " " + j), te && (X += " " + z), b.clone().endOf("month").date() === b.date() && (X += " " + H), c && c(b, o) && (J = !0, G && c(G, o) || (X += " " + P), K && c(K, o) || (X += " " + D)), Z && (X += " " + k), J && (X += " " + E); var oe = void 0; if (s) oe = s(b, o); else { var ae = n ? n(b, o) : b.date(); oe = e("div", { key: na(b), class: M, attrs: { "aria-selected": Z, "aria-disabled": J } }, [ae]) } U.push(e("td", { key: F, on: { click: J ? Qo : d.bind(null, b), mouseenter: J ? Qo : m.bind(null, b) }, attrs: { role: "gridcell", title: $o(b) }, class: X }, [oe])), F++ } Y.push(e("tr", { key: g, attrs: { role: "row" }, class: Q()(($ = {}, h()($, r + "-current-week", B), h()($, r + "-active-week", q), $)) }, [W, U])) } return e("tbody", { class: r + "-tbody" }, [Y]) } }, ia = ra, oa = { functional: !0, render: function (e, t) { var n = arguments[0], r = t.props, i = t.listeners, o = void 0 === i ? {} : i, a = r.prefixCls, s = { props: r, on: o }; return n("table", { class: a + "-table", attrs: { cellSpacing: "0", role: "grid" } }, [n(Ro, s), n(ia, s)]) } }, aa = 4, sa = 3; function ca() { } var la = { name: "MonthTable", mixins: [m["a"]], props: { cellRender: p["a"].func, prefixCls: p["a"].string, value: p["a"].object, locale: p["a"].any, contentRender: p["a"].any, disabledDate: p["a"].func }, data: function () { return { sValue: this.value } }, watch: { value: function (e) { this.setState({ sValue: e }) } }, methods: { setAndSelectValue: function (e) { this.setState({ sValue: e }), this.__emit("select", e) }, chooseMonth: function (e) { var t = this.sValue.clone(); t.month(e), this.setAndSelectValue(t) }, months: function () { for (var e = this.sValue, t = e.clone(), n = [], r = 0, i = 0; i < aa; i++) { n[i] = []; for (var o = 0; o < sa; o++) { t.month(r); var a = Wo(t); n[i][o] = { value: r, content: a, title: a }, r++ } } return n } }, render: function () { var e = this, t = arguments[0], n = this.$props, r = this.sValue, i = Yo(r), o = this.months(), a = r.month(), s = n.prefixCls, c = n.locale, l = n.contentRender, u = n.cellRender, f = n.disabledDate, d = o.map((function (n, o) { var d = n.map((function (n) { var o, d = !1; if (f) { var p = r.clone(); p.month(n.value), d = f(p) } var v = (o = {}, h()(o, s + "-cell", 1), h()(o, s + "-cell-disabled", d), h()(o, s + "-selected-cell", n.value === a), h()(o, s + "-current-cell", i.year() === r.year() && n.value === i.month()), o), m = void 0; if (u) { var g = r.clone(); g.month(n.value), m = u(g, c) } else { var y = void 0; if (l) { var b = r.clone(); b.month(n.value), y = l(b, c) } else y = n.content; m = t("a", { class: s + "-month" }, [y]) } return t("td", { attrs: { role: "gridcell", title: n.title }, key: n.value, on: { click: d ? ca : function () { return e.chooseMonth(n.value) } }, class: v }, [m]) })); return t("tr", { key: o, attrs: { role: "row" } }, [d]) })); return t("table", { class: s + "-table", attrs: { cellSpacing: "0", role: "grid" } }, [t("tbody", { class: s + "-tbody" }, [d])]) } }, ua = la; function ha(e) { this.changeYear(e) } function fa() { } var da = { name: "MonthPanel", mixins: [m["a"]], props: { value: p["a"].any, defaultValue: p["a"].any, cellRender: p["a"].any, contentRender: p["a"].any, locale: p["a"].any, rootPrefixCls: p["a"].string, disabledDate: p["a"].func, renderFooter: p["a"].func, changeYear: p["a"].func.def(fa) }, data: function () { var e = this.value, t = this.defaultValue; return this.nextYear = ha.bind(this, 1), this.previousYear = ha.bind(this, -1), { sValue: e || t } }, watch: { value: function (e) { this.setState({ sValue: e }) } }, methods: { setAndSelectValue: function (e) { this.setValue(e), this.__emit("select", e) }, setValue: function (e) { Object(v["s"])(this, "value") && this.setState({ sValue: e }) } }, render: function () { var e = arguments[0], t = this.sValue, n = this.cellRender, r = this.contentRender, i = this.locale, o = this.rootPrefixCls, a = this.disabledDate, s = this.renderFooter, c = t.year(), l = o + "-month-panel", u = s && s("month"); return e("div", { class: l }, [e("div", [e("div", { class: l + "-header" }, [e("a", { class: l + "-prev-year-btn", attrs: { role: "button", title: i.previousYear }, on: { click: this.previousYear } }), e("a", { class: l + "-year-select", attrs: { role: "button", title: i.yearSelect }, on: { click: Object(v["k"])(this).yearPanelShow || fa } }, [e("span", { class: l + "-year-select-content" }, [c]), e("span", { class: l + "-year-select-arrow" }, ["x"])]), e("a", { class: l + "-next-year-btn", attrs: { role: "button", title: i.nextYear }, on: { click: this.nextYear } })]), e("div", { class: l + "-body" }, [e(ua, { attrs: { disabledDate: a, locale: i, value: t, cellRender: n, contentRender: r, prefixCls: l }, on: { select: this.setAndSelectValue } })]), u && e("div", { class: l + "-footer" }, [u])])]) } }, pa = da, va = 4, ma = 3; function ga() { } function ya(e) { var t = this.sValue.clone(); t.add(e, "year"), this.setState({ sValue: t }) } function ba(e) { var t = this.sValue.clone(); t.year(e), t.month(this.sValue.month()), this.sValue = t, this.__emit("select", t) } var xa = { mixins: [m["a"]], props: { rootPrefixCls: p["a"].string, value: p["a"].object, defaultValue: p["a"].object, locale: p["a"].object, renderFooter: p["a"].func }, data: function () { return this.nextDecade = ya.bind(this, 10), this.previousDecade = ya.bind(this, -10), { sValue: this.value || this.defaultValue } }, watch: { value: function (e) { this.sValue = e } }, methods: { years: function () { for (var e = this.sValue, t = e.year(), n = 10 * parseInt(t / 10, 10), r = n - 1, i = [], o = 0, a = 0; a < va; a++) { i[a] = []; for (var s = 0; s < ma; s++) { var c = r + o, l = String(c); i[a][s] = { content: l, year: c, title: l }, o++ } } return i } }, render: function () { var e = this, t = arguments[0], n = this.sValue, r = this.locale, i = this.renderFooter, o = Object(v["k"])(this).decadePanelShow || ga, a = this.years(), s = n.year(), c = 10 * parseInt(s / 10, 10), l = c + 9, u = this.rootPrefixCls + "-year-panel", f = a.map((function (n, r) { var i = n.map((function (n) { var r, i = (r = {}, h()(r, u + "-cell", 1), h()(r, u + "-selected-cell", n.year === s), h()(r, u + "-last-decade-cell", n.year < c), h()(r, u + "-next-decade-cell", n.year > l), r), o = ga; return o = n.year < c ? e.previousDecade : n.year > l ? e.nextDecade : ba.bind(e, n.year), t("td", { attrs: { role: "gridcell", title: n.title }, key: n.content, on: { click: o }, class: i }, [t("a", { class: u + "-year" }, [n.content])]) })); return t("tr", { key: r, attrs: { role: "row" } }, [i]) })), d = i && i("year"); return t("div", { class: u }, [t("div", [t("div", { class: u + "-header" }, [t("a", { class: u + "-prev-decade-btn", attrs: { role: "button", title: r.previousDecade }, on: { click: this.previousDecade } }), t("a", { class: u + "-decade-select", attrs: { role: "button", title: r.decadeSelect }, on: { click: o } }, [t("span", { class: u + "-decade-select-content" }, [c, "-", l]), t("span", { class: u + "-decade-select-arrow" }, ["x"])]), t("a", { class: u + "-next-decade-btn", attrs: { role: "button", title: r.nextDecade }, on: { click: this.nextDecade } })]), t("div", { class: u + "-body" }, [t("table", { class: u + "-table", attrs: { cellSpacing: "0", role: "grid" } }, [t("tbody", { class: u + "-tbody" }, [f])])]), d && t("div", { class: u + "-footer" }, [d])])]) } }, wa = 4, _a = 3; function Ca() { } function Ma(e) { var t = this.sValue.clone(); t.add(e, "years"), this.setState({ sValue: t }) } function Oa(e, t) { var n = this.sValue.clone(); n.year(e), n.month(this.sValue.month()), this.__emit("select", n), t.preventDefault() } var ka = { mixins: [m["a"]], props: { locale: p["a"].object, value: p["a"].object, defaultValue: p["a"].object, rootPrefixCls: p["a"].string, renderFooter: p["a"].func }, data: function () { return this.nextCentury = Ma.bind(this, 100), this.previousCentury = Ma.bind(this, -100), { sValue: this.value || this.defaultValue } }, watch: { value: function (e) { this.sValue = e } }, render: function () { for (var e = this, t = arguments[0], n = this.sValue, r = this.$props, i = r.locale, o = r.renderFooter, a = n.year(), s = 100 * parseInt(a / 100, 10), c = s - 10, l = s + 99, u = [], f = 0, d = this.rootPrefixCls + "-decade-panel", p = 0; p < wa; p++) { u[p] = []; for (var v = 0; v < _a; v++) { var m = c + 10 * f, g = c + 10 * f + 9; u[p][v] = { startDecade: m, endDecade: g }, f++ } } var y = o && o("decade"), b = u.map((function (n, r) { var i = n.map((function (n) { var r, i = n.startDecade, o = n.endDecade, c = i < s, u = o > l, f = (r = {}, h()(r, d + "-cell", 1), h()(r, d + "-selected-cell", i <= a && a <= o), h()(r, d + "-last-century-cell", c), h()(r, d + "-next-century-cell", u), r), p = i + "-" + o, v = Ca; return v = c ? e.previousCentury : u ? e.nextCentury : Oa.bind(e, i), t("td", { key: i, on: { click: v }, attrs: { role: "gridcell" }, class: f }, [t("a", { class: d + "-decade" }, [p])]) })); return t("tr", { key: r, attrs: { role: "row" } }, [i]) })); return t("div", { class: d }, [t("div", { class: d + "-header" }, [t("a", { class: d + "-prev-century-btn", attrs: { role: "button", title: i.previousCentury }, on: { click: this.previousCentury } }), t("div", { class: d + "-century" }, [s, "-", l]), t("a", { class: d + "-next-century-btn", attrs: { role: "button", title: i.nextCentury }, on: { click: this.nextCentury } })]), t("div", { class: d + "-body" }, [t("table", { class: d + "-table", attrs: { cellSpacing: "0", role: "grid" } }, [t("tbody", { class: d + "-tbody" }, [b])])]), y && t("div", { class: d + "-footer" }, [y])]) } }; function Sa() { } function Ta(e) { var t = this.value.clone(); t.add(e, "months"), this.__emit("valueChange", t) } function Aa(e) { var t = this.value.clone(); t.add(e, "years"), this.__emit("valueChange", t) } function La(e, t) { return e ? t : null } var ja = { name: "CalendarHeader", mixins: [m["a"]], props: { prefixCls: p["a"].string, value: p["a"].object, showTimePicker: p["a"].bool, locale: p["a"].object, enablePrev: p["a"].any.def(1), enableNext: p["a"].any.def(1), disabledMonth: p["a"].func, mode: p["a"].any, monthCellRender: p["a"].func, monthCellContentRender: p["a"].func, renderFooter: p["a"].func }, data: function () { return this.nextMonth = Ta.bind(this, 1), this.previousMonth = Ta.bind(this, -1), this.nextYear = Aa.bind(this, 1), this.previousYear = Aa.bind(this, -1), { yearPanelReferer: null } }, methods: { onMonthSelect: function (e) { this.__emit("panelChange", e, "date"), Object(v["k"])(this).monthSelect ? this.__emit("monthSelect", e) : this.__emit("valueChange", e) }, onYearSelect: function (e) { var t = this.yearPanelReferer; this.setState({ yearPanelReferer: null }), this.__emit("panelChange", e, t), this.__emit("valueChange", e) }, onDecadeSelect: function (e) { this.__emit("panelChange", e, "year"), this.__emit("valueChange", e) }, changeYear: function (e) { e > 0 ? this.nextYear() : this.previousYear() }, monthYearElement: function (e) { var t = this, n = this.$createElement, r = this.$props, i = r.prefixCls, o = r.locale, a = r.value, s = a.localeData(), c = o.monthBeforeYear, l = i + "-" + (c ? "my-select" : "ym-select"), u = e ? " " + i + "-time-status" : "", h = n("a", { class: i + "-year-select" + u, attrs: { role: "button", title: e ? null : o.yearSelect }, on: { click: e ? Sa : function () { return t.showYearPanel("date") } } }, [a.format(o.yearFormat)]), f = n("a", { class: i + "-month-select" + u, attrs: { role: "button", title: e ? null : o.monthSelect }, on: { click: e ? Sa : this.showMonthPanel } }, [o.monthFormat ? a.format(o.monthFormat) : s.monthsShort(a)]), d = void 0; e && (d = n("a", { class: i + "-day-select" + u, attrs: { role: "button" } }, [a.format(o.dayFormat)])); var p = []; return p = c ? [f, d, h] : [h, f, d], n("span", { class: l }, [p]) }, showMonthPanel: function () { this.__emit("panelChange", null, "month") }, showYearPanel: function (e) { this.setState({ yearPanelReferer: e }), this.__emit("panelChange", null, "year") }, showDecadePanel: function () { this.__emit("panelChange", null, "decade") } }, render: function () { var e = this, t = arguments[0], n = Object(v["l"])(this), r = n.prefixCls, i = n.locale, o = n.mode, a = n.value, s = n.showTimePicker, c = n.enableNext, l = n.enablePrev, u = n.disabledMonth, h = n.renderFooter, f = null; return "month" === o && (f = t(pa, { attrs: { locale: i, value: a, rootPrefixCls: r, disabledDate: u, cellRender: n.monthCellRender, contentRender: n.monthCellContentRender, renderFooter: h, changeYear: this.changeYear }, on: { select: this.onMonthSelect, yearPanelShow: function () { return e.showYearPanel("month") } } })), "year" === o && (f = t(xa, { attrs: { locale: i, value: a, rootPrefixCls: r, renderFooter: h }, on: { select: this.onYearSelect, decadePanelShow: this.showDecadePanel } })), "decade" === o && (f = t(ka, { attrs: { locale: i, value: a, rootPrefixCls: r, renderFooter: h }, on: { select: this.onDecadeSelect } })), t("div", { class: r + "-header" }, [t("div", { style: { position: "relative" } }, [La(l && !s, t("a", { class: r + "-prev-year-btn", attrs: { role: "button", title: i.previousYear }, on: { click: this.previousYear } })), La(l && !s, t("a", { class: r + "-prev-month-btn", attrs: { role: "button", title: i.previousMonth }, on: { click: this.previousMonth } })), this.monthYearElement(s), La(c && !s, t("a", { class: r + "-next-month-btn", on: { click: this.nextMonth }, attrs: { title: i.nextMonth } })), La(c && !s, t("a", { class: r + "-next-year-btn", on: { click: this.nextYear }, attrs: { title: i.nextYear } }))]), f]) } }, za = ja; function Ea() { } var Pa = { functional: !0, render: function (e, t) { var n = arguments[0], r = t.props, i = t.listeners, o = void 0 === i ? {} : i, a = r.prefixCls, s = r.locale, c = r.value, l = r.timePicker, u = r.disabled, h = r.disabledDate, f = r.text, d = o.today, p = void 0 === d ? Ea : d, v = (!f && l ? s.now : f) || s.today, m = h && !Xo(Yo(c), h), g = m || u, y = g ? a + "-today-btn-disabled" : ""; return n("a", { class: a + "-today-btn " + y, attrs: { role: "button", title: Bo(c) }, on: { click: g ? Ea : p } }, [v]) } }; function Da() { } var Ha = { functional: !0, render: function (e, t) { var n = arguments[0], r = t.props, i = t.listeners, o = void 0 === i ? {} : i, a = r.prefixCls, s = r.locale, c = r.okDisabled, l = o.ok, u = void 0 === l ? Da : l, h = a + "-ok-btn"; return c && (h += " " + a + "-ok-btn-disabled"), n("a", { class: h, attrs: { role: "button" }, on: { click: c ? Da : u } }, [s.ok]) } }; function Va() { } var Ia = { functional: !0, render: function (e, t) { var n, r = t.props, i = t.listeners, o = void 0 === i ? {} : i, a = r.prefixCls, s = r.locale, c = r.showTimePicker, l = r.timePickerDisabled, u = o.closeTimePicker, f = void 0 === u ? Va : u, d = o.openTimePicker, p = void 0 === d ? Va : d, v = (n = {}, h()(n, a + "-time-picker-btn", !0), h()(n, a + "-time-picker-btn-disabled", l), n), m = Va; return l || (m = c ? f : p), e("a", { class: v, attrs: { role: "button" }, on: { click: m } }, [c ? s.dateSelect : s.timeSelect]) } }, Na = { mixins: [m["a"]], props: { prefixCls: p["a"].string, showDateInput: p["a"].bool, disabledTime: p["a"].any, timePicker: p["a"].any, selectedValue: p["a"].any, showOk: p["a"].bool, value: p["a"].object, renderFooter: p["a"].func, defaultValue: p["a"].object, locale: p["a"].object, showToday: p["a"].bool, disabledDate: p["a"].func, showTimePicker: p["a"].bool, okDisabled: p["a"].bool, mode: p["a"].string }, methods: { onSelect: function (e) { this.__emit("select", e) }, getRootDOMNode: function () { return this.$el } }, render: function () { var e = arguments[0], t = Object(v["l"])(this), n = t.value, r = t.prefixCls, i = t.showOk, o = t.timePicker, a = t.renderFooter, c = t.showToday, l = t.mode, u = null, f = a && a(l); if (c || o || f) { var d, p = { props: s()({}, t, { value: n }), on: Object(v["k"])(this) }, m = null; c && (m = e(Pa, K()([{ key: "todayButton" }, p]))), delete p.props.value; var g = null; (!0 === i || !1 !== i && o) && (g = e(Ha, K()([{ key: "okButton" }, p]))); var y = null; o && (y = e(Ia, K()([{ key: "timePickerButton" }, p]))); var b = void 0; (m || y || g || f) && (b = e("span", { class: r + "-footer-btn" }, [f, m, y, g])); var x = (d = {}, h()(d, r + "-footer", !0), h()(d, r + "-footer-show-ok", !!g), d); u = e("div", { class: x }, [b]) } return u } }, Ra = Na; function Fa() { } function Ya(e) { var t = void 0; return t = e ? Yo(e) : eo()(), t } function $a(e) { return Array.isArray(e) ? 0 === e.length || -1 !== e.findIndex((function (e) { return void 0 === e || eo.a.isMoment(e) })) : void 0 === e || eo.a.isMoment(e) } var Ba = p["a"].custom($a), Wa = { mixins: [m["a"]], name: "CalendarMixinWrapper", props: { value: Ba, defaultValue: Ba }, data: function () { var e = this.$props, t = e.value || e.defaultValue || Ya(); return { sValue: t, sSelectedValue: e.selectedValue || e.defaultSelectedValue } }, watch: { value: function (e) { var t = e || this.defaultValue || Ya(this.sValue); this.setState({ sValue: t }) }, selectedValue: function (e) { this.setState({ sSelectedValue: e }) } }, methods: { onSelect: function (e, t) { e && this.setValue(e), this.setSelectedValue(e, t) }, renderRoot: function (e) { var t, n = this.$createElement, r = this.$props, i = r.prefixCls, o = (t = {}, h()(t, i, 1), h()(t, i + "-hidden", !r.visible), h()(t, e["class"], !!e["class"]), t); return n("div", { ref: "rootInstance", class: o, attrs: { tabIndex: "0" }, on: { keydown: this.onKeyDown || Fa, blur: this.onBlur || Fa } }, [e.children]) }, setSelectedValue: function (e, t) { Object(v["s"])(this, "selectedValue") || this.setState({ sSelectedValue: e }), this.__emit("select", e, t) }, setValue: function (e) { var t = this.sValue; Object(v["s"])(this, "value") || this.setState({ sValue: e }), (t && e && !t.isSame(e) || !t && e || t && !e) && this.__emit("change", e) }, isAllowedDate: function (e) { var t = this.disabledDate, n = this.disabledTime; return Xo(e, t, n) } } }, qa = Wa, Ua = { methods: { getFormat: function () { var e = this.format, t = this.locale, n = this.timePicker; return e || (e = n ? t.dateTimeFormat : t.dateFormat), e }, focus: function () { this.focusElement ? this.focusElement.focus() : this.$refs.rootInstance && this.$refs.rootInstance.focus() }, saveFocusElement: function (e) { this.focusElement = e } } }, Ka = void 0, Ga = void 0, Xa = void 0, Ja = { mixins: [m["a"]], props: { prefixCls: p["a"].string, timePicker: p["a"].object, value: p["a"].object, disabledTime: p["a"].any, format: p["a"].oneOfType([p["a"].string, p["a"].arrayOf(p["a"].string), p["a"].func]), locale: p["a"].object, disabledDate: p["a"].func, placeholder: p["a"].string, selectedValue: p["a"].object, clearIcon: p["a"].any, inputMode: p["a"].string, inputReadOnly: p["a"].bool }, data: function () { var e = this.selectedValue; return { str: Jo(e, this.format), invalid: !1, hasFocus: !1 } }, watch: { selectedValue: function () { this.setState() }, format: function () { this.setState() } }, updated: function () { var e = this; this.$nextTick((function () { !Xa || !e.$data.hasFocus || e.invalid || 0 === Ka && 0 === Ga || Xa.setSelectionRange(Ka, Ga) })) }, getInstance: function () { return Xa }, methods: { getDerivedStateFromProps: function (e, t) { var n = {}; Xa && (Ka = Xa.selectionStart, Ga = Xa.selectionEnd); var r = e.selectedValue; return t.hasFocus || (n = { str: Jo(r, this.format), invalid: !1 }), n }, onClear: function () { this.setState({ str: "" }), this.__emit("clear", null) }, onInputChange: function (e) { var t = e.target, n = t.value, r = t.composing, i = this.str, o = void 0 === i ? "" : i; if (!e.isComposing && !r && o !== n) { var a = this.$props, s = a.disabledDate, c = a.format, l = a.selectedValue; if (!n) return this.__emit("change", null), void this.setState({ invalid: !1, str: n }); var u = eo()(n, c, !0); if (u.isValid()) { var h = this.value.clone(); h.year(u.year()).month(u.month()).date(u.date()).hour(u.hour()).minute(u.minute()).second(u.second()), !h || s && s(h) ? this.setState({ invalid: !0, str: n }) : (l !== h || l && h && !l.isSame(h)) && (this.setState({ invalid: !1, str: n }), this.__emit("change", h)) } else this.setState({ invalid: !0, str: n }) } }, onFocus: function () { this.setState({ hasFocus: !0 }) }, onBlur: function () { this.setState((function (e, t) { return { hasFocus: !1, str: Jo(t.value, t.format) } })) }, onKeyDown: function (e) { var t = e.keyCode, n = this.$props, r = n.value, i = n.disabledDate; if (t === Io.ENTER) { var o = !i || !i(r); o && this.__emit("select", r.clone()), e.preventDefault() } }, getRootDOMNode: function () { return this.$el }, focus: function () { Xa && Xa.focus() }, saveDateInput: function (e) { Xa = e } }, render: function () { var e = arguments[0], t = this.invalid, n = this.str, r = this.locale, i = this.prefixCls, o = this.placeholder, a = this.disabled, s = this.showClear, c = this.inputMode, l = this.inputReadOnly, u = Object(v["g"])(this, "clearIcon"), h = t ? i + "-input-invalid" : ""; return e("div", { class: i + "-input-wrap" }, [e("div", { class: i + "-date-input-wrap" }, [e("input", K()([{ directives: [{ name: "ant-ref", value: this.saveDateInput }, { name: "ant-input" }] }, { class: i + "-input " + h, domProps: { value: n }, attrs: { disabled: a, placeholder: o, inputMode: c, readOnly: l }, on: { input: this.onInputChange, keydown: this.onKeyDown, focus: this.onFocus, blur: this.onBlur } }]))]), s ? e("a", { attrs: { role: "button", title: r.clear }, on: { click: this.onClear } }, [u || e("span", { class: i + "-clear-btn" })]) : null]) } }, Qa = Ja; function Za(e) { return e.clone().startOf("month") } function es(e) { return e.clone().endOf("month") } function ts(e, t, n) { return e.clone().add(t, n) } function ns() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = arguments[1], n = arguments[2]; return e.some((function (e) { return e.isSame(t, n) })) } var rs = function (e) { return !(!eo.a.isMoment(e) || !e.isValid()) && e }, is = { name: "Calendar", props: { locale: p["a"].object.def(_e), format: p["a"].oneOfType([p["a"].string, p["a"].arrayOf(p["a"].string), p["a"].func]), visible: p["a"].bool.def(!0), prefixCls: p["a"].string.def("rc-calendar"), defaultValue: p["a"].object, value: p["a"].object, selectedValue: p["a"].object, defaultSelectedValue: p["a"].object, mode: p["a"].oneOf(["time", "date", "month", "year", "decade"]), showDateInput: p["a"].bool.def(!0), showWeekNumber: p["a"].bool, showToday: p["a"].bool.def(!0), showOk: p["a"].bool, timePicker: p["a"].any, dateInputPlaceholder: p["a"].any, disabledDate: p["a"].func, disabledTime: p["a"].any, dateRender: p["a"].func, renderFooter: p["a"].func.def((function () { return null })), renderSidebar: p["a"].func.def((function () { return null })), clearIcon: p["a"].any, focusablePanel: p["a"].bool.def(!0), inputMode: p["a"].string, inputReadOnly: p["a"].bool }, mixins: [m["a"], Ua, qa], data: function () { var e = this.$props; return { sMode: this.mode || "date", sValue: rs(e.value) || rs(e.defaultValue) || eo()(), sSelectedValue: e.selectedValue || e.defaultSelectedValue } }, watch: { mode: function (e) { this.setState({ sMode: e }) }, value: function (e) { this.setState({ sValue: rs(e) || rs(this.defaultValue) || Ya(this.sValue) }) }, selectedValue: function (e) { this.setState({ sSelectedValue: e }) } }, mounted: function () { var e = this; this.$nextTick((function () { e.saveFocusElement(Qa.getInstance()) })) }, methods: { onPanelChange: function (e, t) { var n = this.sValue; Object(v["s"])(this, "mode") || this.setState({ sMode: t }), this.__emit("panelChange", e || n, t) }, onKeyDown: function (e) { if ("input" !== e.target.nodeName.toLowerCase()) { var t = e.keyCode, n = e.ctrlKey || e.metaKey, r = this.disabledDate, i = this.sValue; switch (t) { case Io.DOWN: return this.goTime(1, "weeks"), e.preventDefault(), 1; case Io.UP: return this.goTime(-1, "weeks"), e.preventDefault(), 1; case Io.LEFT: return n ? this.goTime(-1, "years") : this.goTime(-1, "days"), e.preventDefault(), 1; case Io.RIGHT: return n ? this.goTime(1, "years") : this.goTime(1, "days"), e.preventDefault(), 1; case Io.HOME: return this.setValue(Za(i)), e.preventDefault(), 1; case Io.END: return this.setValue(es(i)), e.preventDefault(), 1; case Io.PAGE_DOWN: return this.goTime(1, "month"), e.preventDefault(), 1; case Io.PAGE_UP: return this.goTime(-1, "month"), e.preventDefault(), 1; case Io.ENTER: return r && r(i) || this.onSelect(i, { source: "keyboard" }), e.preventDefault(), 1; default: return this.__emit("keydown", e), 1 } } }, onClear: function () { this.onSelect(null), this.__emit("clear") }, onOk: function () { var e = this.sSelectedValue; this.isAllowedDate(e) && this.__emit("ok", e) }, onDateInputChange: function (e) { this.onSelect(e, { source: "dateInput" }) }, onDateInputSelect: function (e) { this.onSelect(e, { source: "dateInputSelect" }) }, onDateTableSelect: function (e) { var t = this.timePicker, n = this.sSelectedValue; if (!n && t) { var r = Object(v["l"])(t), i = r.defaultValue; i && qo(i, e) } this.onSelect(e) }, onToday: function () { var e = this.sValue, t = Yo(e); this.onSelect(t, { source: "todayButton" }) }, onBlur: function (e) { var t = this; setTimeout((function () { var n = Qa.getInstance(), r = t.rootInstance; !r || r.contains(document.activeElement) || n && n.contains(document.activeElement) || t.$emit("blur", e) }), 0) }, getRootDOMNode: function () { return this.$el }, openTimePicker: function () { this.onPanelChange(null, "time") }, closeTimePicker: function () { this.onPanelChange(null, "date") }, goTime: function (e, t) { this.setValue(ts(this.sValue, e, t)) } }, render: function () { var e = arguments[0], t = this.locale, n = this.prefixCls, r = this.disabledDate, i = this.dateInputPlaceholder, o = this.timePicker, a = this.disabledTime, c = this.showDateInput, l = this.sValue, u = this.sSelectedValue, h = this.sMode, f = this.renderFooter, d = this.inputMode, p = this.inputReadOnly, m = this.monthCellRender, g = this.monthCellContentRender, y = this.$props, b = Object(v["g"])(this, "clearIcon"), x = "time" === h, w = x && a && o ? Uo(u, a) : null, _ = null; if (o && x) { var C = Object(v["l"])(o), M = { props: s()({ showHour: !0, showSecond: !0, showMinute: !0 }, C, w, { value: u, disabledTime: a }), on: { change: this.onDateInputChange } }; void 0 !== C.defaultValue && (M.props.defaultOpenValue = C.defaultValue), _ = Object(en["a"])(o, M) } var O = c ? e(Qa, { attrs: { format: this.getFormat(), value: l, locale: t, placeholder: i, showClear: !0, disabledTime: a, disabledDate: r, prefixCls: n, selectedValue: u, clearIcon: b, inputMode: d, inputReadOnly: p }, key: "date-input", on: { clear: this.onClear, change: this.onDateInputChange, select: this.onDateInputSelect } }) : null, k = []; return y.renderSidebar && k.push(y.renderSidebar()), k.push(e("div", { class: n + "-panel", key: "panel" }, [O, e("div", { attrs: { tabIndex: y.focusablePanel ? 0 : void 0 }, class: n + "-date-panel" }, [e(za, { attrs: { locale: t, mode: h, value: l, renderFooter: f, showTimePicker: x, prefixCls: n, monthCellRender: m, monthCellContentRender: g }, on: { valueChange: this.setValue, panelChange: this.onPanelChange } }), o && x ? e("div", { class: n + "-time-picker" }, [e("div", { class: n + "-time-picker-panel" }, [_])]) : null, e("div", { class: n + "-body" }, [e(oa, { attrs: { locale: t, value: l, selectedValue: u, prefixCls: n, dateRender: y.dateRender, disabledDate: r, showWeekNumber: y.showWeekNumber }, on: { select: this.onDateTableSelect } })]), e(Ra, { attrs: { showOk: y.showOk, mode: h, renderFooter: y.renderFooter, locale: t, prefixCls: n, showToday: y.showToday, disabledTime: a, showTimePicker: x, showDateInput: y.showDateInput, timePicker: o, selectedValue: u, timePickerDisabled: !u, value: l, disabledDate: r, okDisabled: !1 !== y.showOk && (!u || !this.isAllowedDate(u)) }, on: { ok: this.onOk, select: this.onSelect, today: this.onToday, openTimePicker: this.openTimePicker, closeTimePicker: this.closeTimePicker } })])])), this.renderRoot({ children: k, class: y.showWeekNumber ? n + "-week-number" : "" }) } }, os = is, as = os; d.a.use(_.a, { name: "ant-ref" }); var ss = as, cs = { name: "MonthCalendar", props: { locale: p["a"].object.def(_e), format: p["a"].string, visible: p["a"].bool.def(!0), prefixCls: p["a"].string.def("rc-calendar"), monthCellRender: p["a"].func, value: p["a"].object, defaultValue: p["a"].object, selectedValue: p["a"].object, defaultSelectedValue: p["a"].object, disabledDate: p["a"].func, monthCellContentRender: p["a"].func, renderFooter: p["a"].func.def((function () { return null })), renderSidebar: p["a"].func.def((function () { return null })) }, mixins: [m["a"], Ua, qa], data: function () { var e = this.$props; return { mode: "month", sValue: e.value || e.defaultValue || eo()(), sSelectedValue: e.selectedValue || e.defaultSelectedValue } }, methods: { onKeyDown: function (e) { var t = e.keyCode, n = e.ctrlKey || e.metaKey, r = this.sValue, i = this.disabledDate, o = r; switch (t) { case Io.DOWN: o = r.clone(), o.add(3, "months"); break; case Io.UP: o = r.clone(), o.add(-3, "months"); break; case Io.LEFT: o = r.clone(), n ? o.add(-1, "years") : o.add(-1, "months"); break; case Io.RIGHT: o = r.clone(), n ? o.add(1, "years") : o.add(1, "months"); break; case Io.ENTER: return i && i(r) || this.onSelect(r), e.preventDefault(), 1; default: return }if (o !== r) return this.setValue(o), e.preventDefault(), 1 }, handlePanelChange: function (e, t) { "date" !== t && this.setState({ mode: t }) } }, render: function () { var e = arguments[0], t = this.mode, n = this.sValue, r = this.$props, i = this.$scopedSlots, o = r.prefixCls, a = r.locale, s = r.disabledDate, c = this.monthCellRender || i.monthCellRender, l = this.monthCellContentRender || i.monthCellContentRender, u = this.renderFooter || i.renderFooter, h = e("div", { class: o + "-month-calendar-content" }, [e("div", { class: o + "-month-header-wrap" }, [e(za, { attrs: { prefixCls: o, mode: t, value: n, locale: a, disabledMonth: s, monthCellRender: c, monthCellContentRender: l }, on: { monthSelect: this.onSelect, valueChange: this.setValue, panelChange: this.handlePanelChange } })]), e(Ra, { attrs: { prefixCls: o, renderFooter: u } })]); return this.renderRoot({ class: r.prefixCls + "-month-calendar", children: h }) } }, ls = cs, us = n("3eea"), hs = n.n(us), fs = { adjustX: 1, adjustY: 1 }, ds = [0, 0], ps = { bottomLeft: { points: ["tl", "tl"], overflow: fs, offset: [0, -3], targetOffset: ds }, bottomRight: { points: ["tr", "tr"], overflow: fs, offset: [0, -3], targetOffset: ds }, topRight: { points: ["br", "br"], overflow: fs, offset: [0, 3], targetOffset: ds }, topLeft: { points: ["bl", "bl"], overflow: fs, offset: [0, 3], targetOffset: ds } }, vs = ps, ms = { validator: function (e) { return Array.isArray(e) ? 0 === e.length || -1 === e.findIndex((function (e) { return !ko()(e) && !eo.a.isMoment(e) })) : ko()(e) || eo.a.isMoment(e) } }, gs = { name: "Picker", props: { animation: p["a"].oneOfType([p["a"].func, p["a"].string]), disabled: p["a"].bool, transitionName: p["a"].string, format: p["a"].oneOfType([p["a"].string, p["a"].array, p["a"].func]), children: p["a"].func, getCalendarContainer: p["a"].func, calendar: p["a"].any, open: p["a"].bool, defaultOpen: p["a"].bool.def(!1), prefixCls: p["a"].string.def("rc-calendar-picker"), placement: p["a"].any.def("bottomLeft"), value: ms, defaultValue: ms, align: p["a"].object.def((function () { return {} })), dropdownClassName: p["a"].string, dateRender: p["a"].func }, mixins: [m["a"]], data: function () { var e = this.$props, t = void 0; t = Object(v["s"])(this, "open") ? e.open : e.defaultOpen; var n = e.value || e.defaultValue; return { sOpen: t, sValue: n } }, watch: { value: function (e) { this.setState({ sValue: e }) }, open: function (e) { this.setState({ sOpen: e }) } }, mounted: function () { this.preSOpen = this.sOpen }, updated: function () { !this.preSOpen && this.sOpen && (this.focusTimeout = setTimeout(this.focusCalendar, 0)), this.preSOpen = this.sOpen }, beforeDestroy: function () { clearTimeout(this.focusTimeout) }, methods: { onCalendarKeyDown: function (e) { e.keyCode === Io.ESC && (e.stopPropagation(), this.closeCalendar(this.focus)) }, onCalendarSelect: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = this.$props; Object(v["s"])(this, "value") || this.setState({ sValue: e }); var r = Object(v["l"])(n.calendar); ("keyboard" === t.source || "dateInputSelect" === t.source || !r.timePicker && "dateInput" !== t.source || "todayButton" === t.source) && this.closeCalendar(this.focus), this.__emit("change", e) }, onKeyDown: function (e) { this.sOpen || e.keyCode !== Io.DOWN && e.keyCode !== Io.ENTER || (this.openCalendar(), e.preventDefault()) }, onCalendarOk: function () { this.closeCalendar(this.focus) }, onCalendarClear: function () { this.closeCalendar(this.focus) }, onCalendarBlur: function () { this.setOpen(!1) }, onVisibleChange: function (e) { this.setOpen(e) }, getCalendarElement: function () { var e = this.$props, t = Object(v["l"])(e.calendar), n = Object(v["i"])(e.calendar), r = this.sValue, i = r, o = { ref: "calendarInstance", props: { defaultValue: i || t.defaultValue, selectedValue: r }, on: { keydown: this.onCalendarKeyDown, ok: g(n.ok, this.onCalendarOk), select: g(n.select, this.onCalendarSelect), clear: g(n.clear, this.onCalendarClear), blur: g(n.blur, this.onCalendarBlur) } }; return Object(en["a"])(e.calendar, o) }, setOpen: function (e, t) { this.sOpen !== e && (Object(v["s"])(this, "open") || this.setState({ sOpen: e }, t), this.__emit("openChange", e)) }, openCalendar: function (e) { this.setOpen(!0, e) }, closeCalendar: function (e) { this.setOpen(!1, e) }, focus: function () { this.sOpen || this.$el.focus() }, focusCalendar: function () { this.sOpen && this.calendarInstance && this.calendarInstance.componentInstance && this.calendarInstance.componentInstance.focus() } }, render: function () { var e = arguments[0], t = Object(v["l"])(this), n = Object(v["q"])(this), r = t.prefixCls, i = t.placement, o = t.getCalendarContainer, a = t.align, s = t.animation, c = t.disabled, l = t.dropdownClassName, u = t.transitionName, h = this.sValue, f = this.sOpen, d = this.$scopedSlots["default"], p = { value: h, open: f }; return !this.sOpen && this.calendarInstance || (this.calendarInstance = this.getCalendarElement()), e(Zr, { attrs: { popupAlign: a, builtinPlacements: vs, popupPlacement: i, action: c && !f ? [] : ["click"], destroyPopupOnHide: !0, getPopupContainer: o, popupStyle: n, popupAnimation: s, popupTransitionName: u, popupVisible: f, prefixCls: r, popupClassName: l }, on: { popupVisibleChange: this.onVisibleChange } }, [e("template", { slot: "popup" }, [this.calendarInstance]), Object(en["a"])(d(p, t), { on: { keydown: this.onKeyDown } })]) } }, ys = gs; function bs(e, t) { if (!e) return ""; if (Array.isArray(t) && (t = t[0]), "function" === typeof t) { var n = t(e); if ("string" === typeof n) return n; throw new Error("The function of format does not return a string") } return e.format(t) } function xs() { } function ws(e, t) { return { props: Object(v["t"])(t, { allowClear: !0, showToday: !0 }), mixins: [m["a"]], model: { prop: "value", event: "change" }, inject: { configProvider: { default: function () { return Vt } } }, data: function () { var e = this.value || this.defaultValue; if (e && !Mo(Zi).isMoment(e)) throw new Error("The value/defaultValue of DatePicker or MonthPicker must be a moment object"); return { sValue: e, showDate: e, _open: !!this.open } }, watch: { open: function (e) { var t = Object(v["l"])(this), n = {}; n._open = e, "value" in t && !e && t.value !== this.showDate && (n.showDate = t.value), this.setState(n) }, value: function (e) { var t = {}; t.sValue = e, e !== this.sValue && (t.showDate = e), this.setState(t) }, _open: function (e, t) { var n = this; this.$nextTick((function () { Object(v["s"])(n, "open") || !t || e || n.focus() })) } }, methods: { clearSelection: function (e) { e.preventDefault(), e.stopPropagation(), this.handleChange(null) }, handleChange: function (e) { Object(v["s"])(this, "value") || this.setState({ sValue: e, showDate: e }), this.$emit("change", e, bs(e, this.format)) }, handleCalendarChange: function (e) { this.setState({ showDate: e }) }, handleOpenChange: function (e) { var t = Object(v["l"])(this); "open" in t || this.setState({ _open: e }), this.$emit("openChange", e) }, focus: function () { this.$refs.input.focus() }, blur: function () { this.$refs.input.blur() }, renderFooter: function () { var e = this.$createElement, t = this.$scopedSlots, n = this.$slots, r = this._prefixCls, i = this.renderExtraFooter || t.renderExtraFooter || n.renderExtraFooter; return i ? e("div", { class: r + "-footer-extra" }, ["function" === typeof i ? i.apply(void 0, arguments) : i]) : null }, onMouseEnter: function (e) { this.$emit("mouseenter", e) }, onMouseLeave: function (e) { this.$emit("mouseleave", e) } }, render: function () { var t, n = this, r = arguments[0], i = this.$scopedSlots, o = this.$data, a = o.sValue, c = o.showDate, l = o._open, u = Object(v["g"])(this, "suffixIcon"); u = Array.isArray(u) ? u[0] : u; var f = Object(v["k"])(this), d = f.panelChange, p = void 0 === d ? xs : d, m = f.focus, g = void 0 === m ? xs : m, y = f.blur, b = void 0 === y ? xs : y, x = f.ok, w = void 0 === x ? xs : x, _ = Object(v["l"])(this), C = _.prefixCls, M = _.locale, O = _.localeCode, k = _.inputReadOnly, S = this.configProvider.getPrefixCls, T = S("calendar", C); this._prefixCls = T; var A = _.dateRender || i.dateRender, L = _.monthCellContentRender || i.monthCellContentRender, j = "placeholder" in _ ? _.placeholder : M.lang.placeholder, z = _.showTime ? _.disabledTime : null, E = Q()((t = {}, h()(t, T + "-time", _.showTime), h()(t, T + "-month", ls === e), t)); a && O && a.locale(O); var P = { props: {}, on: {} }, D = { props: {}, on: {} }, H = {}; _.showTime ? (D.on.select = this.handleChange, H.minWidth = "195px") : P.on.change = this.handleChange, "mode" in _ && (D.props.mode = _.mode); var V = Object(v["w"])(D, { props: { disabledDate: _.disabledDate, disabledTime: z, locale: M.lang, timePicker: _.timePicker, defaultValue: _.defaultPickerValue || Mo(Zi)(), dateInputPlaceholder: j, prefixCls: T, dateRender: A, format: _.format, showToday: _.showToday, monthCellContentRender: L, renderFooter: this.renderFooter, value: c, inputReadOnly: k }, on: { ok: w, panelChange: p, change: this.handleCalendarChange }, class: E, scopedSlots: i }), I = r(e, V), N = !_.disabled && _.allowClear && a ? r(Ve, { attrs: { type: "close-circle", theme: "filled" }, class: T + "-picker-clear", on: { click: this.clearSelection } }) : null, R = u && (Object(v["v"])(u) ? Object(en["a"])(u, { class: T + "-picker-icon" }) : r("span", { class: T + "-picker-icon" }, [u])) || r(Ve, { attrs: { type: "calendar" }, class: T + "-picker-icon" }), F = function (e) { var t = e.value; return r("div", [r("input", { ref: "input", attrs: { disabled: _.disabled, readOnly: !0, placeholder: j, tabIndex: _.tabIndex, name: n.name }, on: { focus: g, blur: b }, domProps: { value: bs(t, n.format) }, class: _.pickerInputClass }), N, R]) }, Y = { props: s()({}, _, P.props, { calendar: I, value: a, prefixCls: T + "-picker-container" }), on: s()({}, hs()(f, "change"), P.on, { open: l, onOpenChange: this.handleOpenChange }), style: _.popupStyle, scopedSlots: s()({ default: F }, i) }; return r("span", { class: _.pickerClass, style: H, on: { mouseenter: this.onMouseEnter, mouseleave: this.onMouseLeave } }, [r(ys, Y)]) } } } var _s = { date: "YYYY-MM-DD", dateTime: "YYYY-MM-DD HH:mm:ss", week: "gggg-wo", month: "YYYY-MM" }, Cs = { date: "dateFormat", dateTime: "dateTimeFormat", week: "weekFormat", month: "monthFormat" }; function Ms(e) { var t = e.showHour, n = e.showMinute, r = e.showSecond, i = e.use12Hours, o = 0; return t && (o += 1), n && (o += 1), r && (o += 1), i && (o += 1), o } function Os(e, t, n) { return { name: e.name, props: Object(v["t"])(t, { transitionName: "slide-up", popupStyle: {}, locale: {} }), model: { prop: "value", event: "change" }, inject: { configProvider: { default: function () { return Vt } } }, provide: function () { return { savePopupRef: this.savePopupRef } }, mounted: function () { var e = this, t = this.autoFocus, n = this.disabled, r = this.value, i = this.defaultValue, o = this.valueFormat; Lo("DatePicker", i, "defaultValue", o), Lo("DatePicker", r, "value", o), t && !n && this.$nextTick((function () { e.focus() })) }, watch: { value: function (e) { Lo("DatePicker", e, "value", this.valueFormat) } }, methods: { getDefaultLocale: function () { var e = s()({}, ke, this.locale); return e.lang = s()({}, e.lang, (this.locale || {}).lang), e }, savePopupRef: function (e) { this.popupRef = e }, handleOpenChange: function (e) { this.$emit("openChange", e) }, handleFocus: function (e) { this.$emit("focus", e) }, handleBlur: function (e) { this.$emit("blur", e) }, handleMouseEnter: function (e) { this.$emit("mouseenter", e) }, handleMouseLeave: function (e) { this.$emit("mouseleave", e) }, handleChange: function (e, t) { this.$emit("change", this.valueFormat ? zo(e, this.valueFormat) : e, t) }, handleOk: function (e) { this.$emit("ok", this.valueFormat ? zo(e, this.valueFormat) : e) }, handleCalendarChange: function (e, t) { this.$emit("calendarChange", this.valueFormat ? zo(e, this.valueFormat) : e, t) }, focus: function () { this.$refs.picker.focus() }, blur: function () { this.$refs.picker.blur() }, transformValue: function (e) { "value" in e && (e.value = jo(e.value, this.valueFormat)), "defaultValue" in e && (e.defaultValue = jo(e.defaultValue, this.valueFormat)), "defaultPickerValue" in e && (e.defaultPickerValue = jo(e.defaultPickerValue, this.valueFormat)) }, renderPicker: function (t, r) { var i, o = this, a = this.$createElement, c = Object(v["l"])(this); this.transformValue(c); var l = c.prefixCls, u = c.inputPrefixCls, f = c.getCalendarContainer, d = c.size, p = c.showTime, m = c.disabled, g = c.format, y = p ? n + "Time" : n, b = g || t[Cs[y]] || _s[y], x = this.configProvider, w = x.getPrefixCls, _ = x.getPopupContainer, C = f || _, M = w("calendar", l), O = w("input", u), k = Q()(M + "-picker", h()({}, M + "-picker-" + d, !!d)), S = Q()(M + "-picker-input", O, (i = {}, h()(i, O + "-lg", "large" === d), h()(i, O + "-sm", "small" === d), h()(i, O + "-disabled", m), i)), T = p && p.format || "HH:mm:ss", A = s()({}, Eo(T), { format: T, use12Hours: p && p.use12Hours }), L = Ms(A), j = M + "-time-picker-column-" + L, z = { props: s()({}, A, p, { prefixCls: M + "-time-picker", placeholder: t.timePickerLocale.placeholder, transitionName: "slide-up" }), class: j, on: { esc: function () { } } }, E = p ? a(go, z) : null, P = { props: s()({}, c, { getCalendarContainer: C, format: b, pickerClass: k, pickerInputClass: S, locale: t, localeCode: r, timePicker: E }), on: s()({}, Object(v["k"])(this), { openChange: this.handleOpenChange, focus: this.handleFocus, blur: this.handleBlur, mouseenter: this.handleMouseEnter, mouseleave: this.handleMouseLeave, change: this.handleChange, ok: this.handleOk, calendarChange: this.handleCalendarChange }), ref: "picker", scopedSlots: this.$scopedSlots || {} }; return a(e, P, [this.$slots && Object.keys(this.$slots).map((function (e) { return a("template", { slot: e, key: e }, [o.$slots[e]]) }))]) } }, render: function () { var e = arguments[0]; return e(Le, { attrs: { componentName: "DatePicker", defaultLocale: this.getDefaultLocale }, scopedSlots: { default: this.renderPicker } }) } } } function ks() { } var Ss = { mixins: [m["a"]], props: { prefixCls: p["a"].string, value: p["a"].any, hoverValue: p["a"].any, selectedValue: p["a"].any, direction: p["a"].any, locale: p["a"].any, showDateInput: p["a"].bool, showTimePicker: p["a"].bool, showWeekNumber: p["a"].bool, format: p["a"].any, placeholder: p["a"].any, disabledDate: p["a"].any, timePicker: p["a"].any, disabledTime: p["a"].any, disabledMonth: p["a"].any, mode: p["a"].any, timePickerDisabledTime: p["a"].object, enableNext: p["a"].any, enablePrev: p["a"].any, clearIcon: p["a"].any, dateRender: p["a"].func, inputMode: p["a"].string, inputReadOnly: p["a"].bool }, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.value, i = t.hoverValue, o = t.selectedValue, a = t.mode, c = t.direction, l = t.locale, u = t.format, h = t.placeholder, f = t.disabledDate, d = t.timePicker, p = t.disabledTime, m = t.timePickerDisabledTime, g = t.showTimePicker, y = t.enablePrev, b = t.enableNext, x = t.disabledMonth, w = t.showDateInput, _ = t.dateRender, C = t.showWeekNumber, M = t.showClear, O = t.inputMode, k = t.inputReadOnly, S = Object(v["g"])(this, "clearIcon"), T = Object(v["k"])(this), A = T.inputChange, L = void 0 === A ? ks : A, j = T.inputSelect, z = void 0 === j ? ks : j, E = T.valueChange, P = void 0 === E ? ks : E, D = T.panelChange, H = void 0 === D ? ks : D, V = T.select, I = void 0 === V ? ks : V, N = T.dayHover, R = void 0 === N ? ks : N, F = g && d, Y = F && p ? Uo(o, p) : null, $ = n + "-range", B = { locale: l, value: r, prefixCls: n, showTimePicker: g }, W = "left" === c ? 0 : 1, q = null; if (F) { var U = Object(v["l"])(d); q = Object(en["a"])(d, { props: s()({ showHour: !0, showMinute: !0, showSecond: !0 }, U, Y, m, { defaultOpenValue: r, value: o[W] }), on: { change: L } }) } var K = w && e(Qa, { attrs: { format: u, locale: l, prefixCls: n, timePicker: d, disabledDate: f, placeholder: h, disabledTime: p, value: r, showClear: M || !1, selectedValue: o[W], clearIcon: S, inputMode: O, inputReadOnly: k }, on: { change: L, select: z } }), G = { props: s()({}, B, { mode: a, enableNext: b, enablePrev: y, disabledMonth: x }), on: { valueChange: P, panelChange: H } }, X = { props: s()({}, B, { hoverValue: i, selectedValue: o, dateRender: _, disabledDate: f, showWeekNumber: C }), on: { select: I, dayHover: R } }; return e("div", { class: $ + "-part " + $ + "-" + c }, [K, e("div", { style: { outline: "none" } }, [e(za, G), g ? e("div", { class: n + "-time-picker" }, [e("div", { class: n + "-time-picker-panel" }, [q])]) : null, e("div", { class: n + "-body" }, [e(oa, X)])])]) } }, Ts = Ss; function As() { } function Ls(e) { return Array.isArray(e) && (0 === e.length || e.every((function (e) { return !e }))) } function js(e, t) { if (e === t) return !0; if (null === e || "undefined" === typeof e || null === t || "undefined" === typeof t) return !1; if (e.length !== t.length) return !1; for (var n = 0; n < e.length; ++n)if (e[n] !== t[n]) return !1; return !0 } function zs(e) { var t = bi()(e, 2), n = t[0], r = t[1]; return !r || void 0 !== n && null !== n || (n = r.clone().subtract(1, "month")), !n || void 0 !== r && null !== r || (r = n.clone().add(1, "month")), [n, r] } function Es(e, t) { var n = e.selectedValue || t && e.defaultSelectedValue, r = e.value || t && e.defaultValue, i = zs(r || n); return Ls(i) ? t && [eo()(), eo()().add(1, "months")] : i } function Ps(e, t) { for (var n = t ? t().concat() : [], r = 0; r < e; r++)-1 === n.indexOf(r) && n.push(r); return n } function Ds(e, t, n) { if (t) { var r = this.sSelectedValue, i = r.concat(), o = "left" === e ? 0 : 1; i[o] = t, i[0] && this.compare(i[0], i[1]) > 0 && (i[1 - o] = this.sShowTimePicker ? i[o] : void 0), this.__emit("inputSelect", i), this.fireSelectValueChange(i, null, n || { source: "dateInput" }) } } var Hs = { props: { locale: p["a"].object.def(_e), visible: p["a"].bool.def(!0), prefixCls: p["a"].string.def("rc-calendar"), dateInputPlaceholder: p["a"].any, seperator: p["a"].string.def("~"), defaultValue: p["a"].any, value: p["a"].any, hoverValue: p["a"].any, mode: p["a"].arrayOf(p["a"].oneOf(["time", "date", "month", "year", "decade"])), showDateInput: p["a"].bool.def(!0), timePicker: p["a"].any, showOk: p["a"].bool, showToday: p["a"].bool.def(!0), defaultSelectedValue: p["a"].array.def([]), selectedValue: p["a"].array, showClear: p["a"].bool, showWeekNumber: p["a"].bool, format: p["a"].oneOfType([p["a"].string, p["a"].arrayOf(p["a"].string), p["a"].func]), type: p["a"].any.def("both"), disabledDate: p["a"].func, disabledTime: p["a"].func.def(As), renderFooter: p["a"].func.def((function () { return null })), renderSidebar: p["a"].func.def((function () { return null })), dateRender: p["a"].func, clearIcon: p["a"].any, inputReadOnly: p["a"].bool }, mixins: [m["a"], Ua], data: function () { var e = this.$props, t = e.selectedValue || e.defaultSelectedValue, n = Es(e, 1); return { sSelectedValue: t, prevSelectedValue: t, firstSelectedValue: null, sHoverValue: e.hoverValue || [], sValue: n, sShowTimePicker: !1, sMode: e.mode || ["date", "date"], sPanelTriggerSource: "" } }, watch: { value: function () { var e = {}; e.sValue = Es(this.$props, 0), this.setState(e) }, hoverValue: function (e) { js(this.sHoverValue, e) || this.setState({ sHoverValue: e }) }, selectedValue: function (e) { var t = {}; t.sSelectedValue = e, t.prevSelectedValue = e, this.setState(t) }, mode: function (e) { js(this.sMode, e) || this.setState({ sMode: e }) } }, methods: { onDatePanelEnter: function () { this.hasSelectedValue() && this.fireHoverValueChange(this.sSelectedValue.concat()) }, onDatePanelLeave: function () { this.hasSelectedValue() && this.fireHoverValueChange([]) }, onSelect: function (e) { var t = this.type, n = this.sSelectedValue, r = this.prevSelectedValue, i = this.firstSelectedValue, o = void 0; if ("both" === t) i ? this.compare(i, e) < 0 ? (qo(r[1], e), o = [i, e]) : (qo(r[0], e), qo(r[1], i), o = [e, i]) : (qo(r[0], e), o = [e]); else if ("start" === t) { qo(r[0], e); var a = n[1]; o = a && this.compare(a, e) > 0 ? [e, a] : [e] } else { var s = n[0]; s && this.compare(s, e) <= 0 ? (qo(r[1], e), o = [s, e]) : (qo(r[0], e), o = [e]) } this.fireSelectValueChange(o) }, onKeyDown: function (e) { var t = this; if ("input" !== e.target.nodeName.toLowerCase()) { var n = e.keyCode, r = e.ctrlKey || e.metaKey, i = this.$data, o = i.sSelectedValue, a = i.sHoverValue, s = i.firstSelectedValue, c = i.sValue, l = this.$props.disabledDate, u = function (n) { var r = void 0, i = void 0, l = void 0; if (s ? 1 === a.length ? (r = a[0].clone(), i = n(r), l = t.onDayHover(i)) : (r = a[0].isSame(s, "day") ? a[1] : a[0], i = n(r), l = t.onDayHover(i)) : (r = a[0] || o[0] || c[0] || eo()(), i = n(r), l = [i], t.fireHoverValueChange(l)), l.length >= 2) { var u = l.some((function (e) { return !ns(c, e, "month") })); if (u) { var h = l.slice().sort((function (e, t) { return e.valueOf() - t.valueOf() })); h[0].isSame(h[1], "month") && (h[1] = h[0].clone().add(1, "month")), t.fireValueChange(h) } } else if (1 === l.length) { var f = c.findIndex((function (e) { return e.isSame(r, "month") })); if (-1 === f && (f = 0), c.every((function (e) { return !e.isSame(i, "month") }))) { var d = c.slice(); d[f] = i.clone(), t.fireValueChange(d) } } return e.preventDefault(), i }; switch (n) { case Io.DOWN: return void u((function (e) { return ts(e, 1, "weeks") })); case Io.UP: return void u((function (e) { return ts(e, -1, "weeks") })); case Io.LEFT: return void u(r ? function (e) { return ts(e, -1, "years") } : function (e) { return ts(e, -1, "days") }); case Io.RIGHT: return void u(r ? function (e) { return ts(e, 1, "years") } : function (e) { return ts(e, 1, "days") }); case Io.HOME: return void u((function (e) { return Za(e) })); case Io.END: return void u((function (e) { return es(e) })); case Io.PAGE_DOWN: return void u((function (e) { return ts(e, 1, "month") })); case Io.PAGE_UP: return void u((function (e) { return ts(e, -1, "month") })); case Io.ENTER: var h = void 0; return h = 0 === a.length ? u((function (e) { return e })) : 1 === a.length ? a[0] : a[0].isSame(s, "day") ? a[1] : a[0], !h || l && l(h) || this.onSelect(h), void e.preventDefault(); default: this.__emit("keydown", e) } } }, onDayHover: function (e) { var t = [], n = this.sSelectedValue, r = this.firstSelectedValue, i = this.type; if ("start" === i && n[1]) t = this.compare(e, n[1]) < 0 ? [e, n[1]] : [e]; else if ("end" === i && n[0]) t = this.compare(e, n[0]) > 0 ? [n[0], e] : []; else { if (!r) return this.sHoverValue.length && this.setState({ sHoverValue: [] }), t; t = this.compare(e, r) < 0 ? [e, r] : [r, e] } return this.fireHoverValueChange(t), t }, onToday: function () { var e = Yo(this.sValue[0]), t = e.clone().add(1, "months"); this.setState({ sValue: [e, t] }) }, onOpenTimePicker: function () { this.setState({ sShowTimePicker: !0 }) }, onCloseTimePicker: function () { this.setState({ sShowTimePicker: !1 }) }, onOk: function () { var e = this.sSelectedValue; this.isAllowedDateAndTime(e) && this.__emit("ok", e) }, onStartInputChange: function () { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; var r = ["left"].concat(t); return Ds.apply(this, r) }, onEndInputChange: function () { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; var r = ["right"].concat(t); return Ds.apply(this, r) }, onStartInputSelect: function (e) { var t = ["left", e, { source: "dateInputSelect" }]; return Ds.apply(this, t) }, onEndInputSelect: function (e) { var t = ["right", e, { source: "dateInputSelect" }]; return Ds.apply(this, t) }, onStartValueChange: function (e) { var t = [].concat(X()(this.sValue)); return t[0] = e, this.fireValueChange(t) }, onEndValueChange: function (e) { var t = [].concat(X()(this.sValue)); return t[1] = e, this.fireValueChange(t) }, onStartPanelChange: function (e, t) { var n = this.sMode, r = this.sValue, i = [t, n[1]], o = [e || r[0], r[1]]; this.__emit("panelChange", o, i); var a = { sPanelTriggerSource: "start" }; Object(v["s"])(this, "mode") || (a.sMode = i), this.setState(a) }, onEndPanelChange: function (e, t) { var n = this.sMode, r = this.sValue, i = [n[0], t], o = [r[0], e || r[1]]; this.__emit("panelChange", o, i); var a = { sPanelTriggerSource: "end" }; Object(v["s"])(this, "mode") || (a.sMode = i), this.setState(a) }, getStartValue: function () { var e = this.$data, t = e.sSelectedValue, n = e.sShowTimePicker, r = e.sValue, i = e.sMode, o = e.sPanelTriggerSource, a = r[0]; return t[0] && this.$props.timePicker && (a = a.clone(), qo(t[0], a)), n && t[0] && (a = t[0]), "end" === o && "date" === i[0] && "date" === i[1] && a.isSame(r[1], "month") && (a = a.clone().subtract(1, "month")), a }, getEndValue: function () { var e = this.$data, t = e.sSelectedValue, n = e.sShowTimePicker, r = e.sValue, i = e.sMode, o = e.sPanelTriggerSource, a = r[1] ? r[1].clone() : r[0].clone().add(1, "month"); return t[1] && this.$props.timePicker && qo(t[1], a), n && (a = t[1] ? t[1] : this.getStartValue()), !n && "end" !== o && "date" === i[0] && "date" === i[1] && a.isSame(r[0], "month") && (a = a.clone().add(1, "month")), a }, getEndDisableTime: function () { var e = this.sSelectedValue, t = this.sValue, n = this.disabledTime, r = n(e, "end") || {}, i = e && e[0] || t[0].clone(); if (!e[1] || i.isSame(e[1], "day")) { var o = i.hour(), a = i.minute(), s = i.second(), c = r.disabledHours, l = r.disabledMinutes, u = r.disabledSeconds, h = l ? l() : [], f = u ? u() : []; return c = Ps(o, c), l = Ps(a, l), u = Ps(s, u), { disabledHours: function () { return c }, disabledMinutes: function (e) { return e === o ? l : h }, disabledSeconds: function (e, t) { return e === o && t === a ? u : f } } } return r }, isAllowedDateAndTime: function (e) { return Xo(e[0], this.disabledDate, this.disabledStartTime) && Xo(e[1], this.disabledDate, this.disabledEndTime) }, isMonthYearPanelShow: function (e) { return ["month", "year", "decade"].indexOf(e) > -1 }, hasSelectedValue: function () { var e = this.sSelectedValue; return !!e[1] && !!e[0] }, compare: function (e, t) { return this.timePicker ? e.diff(t) : e.diff(t, "days") }, fireSelectValueChange: function (e, t, n) { var r = this.timePicker, i = this.prevSelectedValue; if (r) { var o = Object(v["l"])(r); if (o.defaultValue) { var a = o.defaultValue; !i[0] && e[0] && qo(a[0], e[0]), !i[1] && e[1] && qo(a[1], e[1]) } } if (!this.sSelectedValue[0] || !this.sSelectedValue[1]) { var s = e[0] || eo()(), c = e[1] || s.clone().add(1, "months"); this.setState({ sSelectedValue: e, sValue: e && 2 === e.length ? zs([s, c]) : this.sValue }) } e[0] && !e[1] && (this.setState({ firstSelectedValue: e[0] }), this.fireHoverValueChange(e.concat())), this.__emit("change", e), (t || e[0] && e[1]) && (this.setState({ prevSelectedValue: e, firstSelectedValue: null }), this.fireHoverValueChange([]), this.__emit("select", e, n)), Object(v["s"])(this, "selectedValue") || this.setState({ sSelectedValue: e }) }, fireValueChange: function (e) { Object(v["s"])(this, "value") || this.setState({ sValue: e }), this.__emit("valueChange", e) }, fireHoverValueChange: function (e) { Object(v["s"])(this, "hoverValue") || this.setState({ sHoverValue: e }), this.__emit("hoverChange", e) }, clear: function () { this.fireSelectValueChange([], !0), this.__emit("clear") }, disabledStartTime: function (e) { return this.disabledTime(e, "start") }, disabledEndTime: function (e) { return this.disabledTime(e, "end") }, disabledStartMonth: function (e) { var t = this.sValue; return e.isAfter(t[1], "month") }, disabledEndMonth: function (e) { var t = this.sValue; return e.isBefore(t[0], "month") } }, render: function () { var e, t, n = arguments[0], r = Object(v["l"])(this), i = r.prefixCls, o = r.dateInputPlaceholder, a = r.timePicker, s = r.showOk, c = r.locale, l = r.showClear, u = r.showToday, f = r.type, d = r.seperator, p = Object(v["g"])(this, "clearIcon"), m = this.sHoverValue, g = this.sSelectedValue, y = this.sMode, b = this.sShowTimePicker, x = this.sValue, w = (e = {}, h()(e, i, 1), h()(e, i + "-hidden", !r.visible), h()(e, i + "-range", 1), h()(e, i + "-show-time-picker", b), h()(e, i + "-week-number", r.showWeekNumber), e), _ = { props: r, on: Object(v["k"])(this) }, C = { props: { selectedValue: g }, on: { select: this.onSelect, dayHover: "start" === f && g[1] || "end" === f && g[0] || m.length ? this.onDayHover : As } }, M = void 0, O = void 0; if (o) if (Array.isArray(o)) { var k = bi()(o, 2); M = k[0], O = k[1] } else M = O = o; var S = !0 === s || !1 !== s && !!a, T = (t = {}, h()(t, i + "-footer", !0), h()(t, i + "-range-bottom", !0), h()(t, i + "-footer-show-ok", S), t), A = this.getStartValue(), L = this.getEndValue(), j = Yo(A), z = j.month(), E = j.year(), P = A.year() === E && A.month() === z || L.year() === E && L.month() === z, D = A.clone().add(1, "months"), H = D.year() === L.year() && D.month() === L.month(), V = Object(v["w"])(_, C, { props: { hoverValue: m, direction: "left", disabledTime: this.disabledStartTime, disabledMonth: this.disabledStartMonth, format: this.getFormat(), value: A, mode: y[0], placeholder: M, showDateInput: this.showDateInput, timePicker: a, showTimePicker: b || "time" === y[0], enablePrev: !0, enableNext: !H || this.isMonthYearPanelShow(y[1]), clearIcon: p }, on: { inputChange: this.onStartInputChange, inputSelect: this.onStartInputSelect, valueChange: this.onStartValueChange, panelChange: this.onStartPanelChange } }), I = Object(v["w"])(_, C, { props: { hoverValue: m, direction: "right", format: this.getFormat(), timePickerDisabledTime: this.getEndDisableTime(), placeholder: O, value: L, mode: y[1], showDateInput: this.showDateInput, timePicker: a, showTimePicker: b || "time" === y[1], disabledTime: this.disabledEndTime, disabledMonth: this.disabledEndMonth, enablePrev: !H || this.isMonthYearPanelShow(y[0]), enableNext: !0, clearIcon: p }, on: { inputChange: this.onEndInputChange, inputSelect: this.onEndInputSelect, valueChange: this.onEndValueChange, panelChange: this.onEndPanelChange } }), N = null; if (u) { var R = Object(v["w"])(_, { props: { disabled: P, value: x[0], text: c.backToToday }, on: { today: this.onToday } }); N = n(Pa, K()([{ key: "todayButton" }, R])) } var F = null; if (r.timePicker) { var Y = Object(v["w"])(_, { props: { showTimePicker: b || "time" === y[0] && "time" === y[1], timePickerDisabled: !this.hasSelectedValue() || m.length }, on: { openTimePicker: this.onOpenTimePicker, closeTimePicker: this.onCloseTimePicker } }); F = n(Ia, K()([{ key: "timePickerButton" }, Y])) } var $ = null; if (S) { var B = Object(v["w"])(_, { props: { okDisabled: !this.isAllowedDateAndTime(g) || !this.hasSelectedValue() || m.length }, on: { ok: this.onOk } }); $ = n(Ha, K()([{ key: "okButtonNode" }, B])) } var W = this.renderFooter(y); return n("div", { ref: "rootInstance", class: w, attrs: { tabIndex: "0" }, on: { keydown: this.onKeyDown } }, [r.renderSidebar(), n("div", { class: i + "-panel" }, [l && g[0] && g[1] ? n("a", { attrs: { role: "button", title: c.clear }, on: { click: this.clear } }, [p || n("span", { class: i + "-clear-btn" })]) : null, n("div", { class: i + "-date-panel", on: { mouseleave: "both" !== f ? this.onDatePanelLeave : As, mouseenter: "both" !== f ? this.onDatePanelEnter : As } }, [n(Ts, V), n("span", { class: i + "-range-middle" }, [d]), n(Ts, I)]), n("div", { class: T }, [u || r.timePicker || S || W ? n("div", { class: i + "-footer-btn" }, [W, N, F, $]) : null])])]) } }, Vs = Hs, Is = n("1b2b"), Ns = n.n(Is), Rs = n("c544"), Fs = 0, Ys = {}; function $s(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1, n = Fs++, r = t; function i() { r -= 1, r <= 0 ? (e(), delete Ys[n]) : Ys[n] = io()(i) } return Ys[n] = io()(i), n } $s.cancel = function (e) { void 0 !== e && (io.a.cancel(Ys[e]), delete Ys[e]) }, $s.ids = Ys; var Bs = void 0; function Ws(e) { return !e || null === e.offsetParent } function qs(e) { var t = (e || "").match(/rgba?\((\d*), (\d*), (\d*)(, [\.\d]*)?\)/); return !(t && t[1] && t[2] && t[3]) || !(t[1] === t[2] && t[2] === t[3]) } var Us = { name: "Wave", props: ["insertExtraNode"], mounted: function () { var e = this; this.$nextTick((function () { var t = e.$el; 1 === t.nodeType && (e.instance = e.bindAnimationEvent(t)) })) }, inject: { configProvider: { default: function () { return Vt } } }, beforeDestroy: function () { this.instance && this.instance.cancel(), this.clickWaveTimeoutId && clearTimeout(this.clickWaveTimeoutId), this.destroy = !0 }, methods: { onClick: function (e, t) { if (!(!e || Ws(e) || e.className.indexOf("-leave") >= 0)) { var n = this.$props.insertExtraNode; this.extraNode = document.createElement("div"); var r = this.extraNode; r.className = "ant-click-animating-node"; var i = this.getAttributeName(); e.removeAttribute(i), e.setAttribute(i, "true"), Bs = Bs || document.createElement("style"), t && "#ffffff" !== t && "rgb(255, 255, 255)" !== t && qs(t) && !/rgba\(\d*, \d*, \d*, 0\)/.test(t) && "transparent" !== t && (this.csp && this.csp.nonce && (Bs.nonce = this.csp.nonce), r.style.borderColor = t, Bs.innerHTML = "\n        [ant-click-animating-without-extra-node='true']::after, .ant-click-animating-node {\n          --antd-wave-shadow-color: " + t + ";\n        }", document.body.contains(Bs) || document.body.appendChild(Bs)), n && e.appendChild(r), Rs["a"].addStartEventListener(e, this.onTransitionStart), Rs["a"].addEndEventListener(e, this.onTransitionEnd) } }, onTransitionStart: function (e) { if (!this.destroy) { var t = this.$el; e && e.target === t && (this.animationStart || this.resetEffect(t)) } }, onTransitionEnd: function (e) { e && "fadeEffect" === e.animationName && this.resetEffect(e.target) }, getAttributeName: function () { var e = this.$props.insertExtraNode; return e ? "ant-click-animating" : "ant-click-animating-without-extra-node" }, bindAnimationEvent: function (e) { var t = this; if (e && e.getAttribute && !e.getAttribute("disabled") && !(e.className.indexOf("disabled") >= 0)) { var n = function (n) { if ("INPUT" !== n.target.tagName && !Ws(n.target)) { t.resetEffect(e); var r = getComputedStyle(e).getPropertyValue("border-top-color") || getComputedStyle(e).getPropertyValue("border-color") || getComputedStyle(e).getPropertyValue("background-color"); t.clickWaveTimeoutId = window.setTimeout((function () { return t.onClick(e, r) }), 0), $s.cancel(t.animationStartId), t.animationStart = !0, t.animationStartId = $s((function () { t.animationStart = !1 }), 10) } }; return e.addEventListener("click", n, !0), { cancel: function () { e.removeEventListener("click", n, !0) } } } }, resetEffect: function (e) { if (e && e !== this.extraNode && e instanceof Element) { var t = this.$props.insertExtraNode, n = this.getAttributeName(); e.setAttribute(n, "false"), Bs && (Bs.innerHTML = ""), t && this.extraNode && e.contains(this.extraNode) && e.removeChild(this.extraNode), Rs["a"].removeStartEventListener(e, this.onTransitionStart), Rs["a"].removeEndEventListener(e, this.onTransitionEnd) } } }, render: function () { return this.configProvider.csp && (this.csp = this.configProvider.csp), this.$slots["default"] && this.$slots["default"][0] } }, Ks = ["pink", "red", "yellow", "orange", "cyan", "green", "blue", "purple", "geekblue", "magenta", "volcano", "gold", "lime"], Gs = new RegExp("^(" + Ks.join("|") + ")(-inverse)?$"), Xs = { name: "ATag", mixins: [m["a"]], model: { prop: "visible", event: "close.visible" }, props: { prefixCls: p["a"].string, color: p["a"].string, closable: p["a"].bool.def(!1), visible: p["a"].bool, afterClose: p["a"].func }, inject: { configProvider: { default: function () { return Vt } } }, data: function () { var e = !0, t = Object(v["l"])(this); return "visible" in t && (e = this.visible), fe(!("afterClose" in t), "Tag", "'afterClose' will be deprecated, please use 'close' event, we will remove this in the next version."), { _visible: e } }, watch: { visible: function (e) { this.setState({ _visible: e }) } }, methods: { setVisible: function (e, t) { this.$emit("close", t), this.$emit("close.visible", !1); var n = this.afterClose; n && n(), t.defaultPrevented || Object(v["s"])(this, "visible") || this.setState({ _visible: e }) }, handleIconClick: function (e) { e.stopPropagation(), this.setVisible(!1, e) }, isPresetColor: function () { var e = this.$props.color; return !!e && Gs.test(e) }, getTagStyle: function () { var e = this.$props.color, t = this.isPresetColor(); return { backgroundColor: e && !t ? e : void 0 } }, getTagClassName: function (e) { var t, n = this.$props.color, r = this.isPresetColor(); return t = {}, h()(t, e, !0), h()(t, e + "-" + n, r), h()(t, e + "-has-color", n && !r), t }, renderCloseIcon: function () { var e = this.$createElement, t = this.$props.closable; return t ? e(Ve, { attrs: { type: "close" }, on: { click: this.handleIconClick } }) : null } }, render: function () { var e = arguments[0], t = this.$props.prefixCls, n = this.configProvider.getPrefixCls, r = n("tag", t), i = this.$data._visible, o = e("span", K()([{ directives: [{ name: "show", value: i }] }, { on: Object(Qi["a"])(Object(v["k"])(this), ["close"]) }, { class: this.getTagClassName(r), style: this.getTagStyle() }]), [this.$slots["default"], this.renderCloseIcon()]), a = Object(y["a"])(r + "-zoom", { appear: !1 }); return e(Us, [e("transition", a, [o])]) } }, Js = { name: "ACheckableTag", model: { prop: "checked" }, props: { prefixCls: p["a"].string, checked: Boolean }, inject: { configProvider: { default: function () { return Vt } } }, computed: { classes: function () { var e, t = this.checked, n = this.prefixCls, r = this.configProvider.getPrefixCls, i = r("tag", n); return e = {}, h()(e, "" + i, !0), h()(e, i + "-checkable", !0), h()(e, i + "-checkable-checked", t), e } }, methods: { handleClick: function () { var e = this.checked; this.$emit("input", !e), this.$emit("change", !e) } }, render: function () { var e = arguments[0], t = this.classes, n = this.handleClick, r = this.$slots; return e("div", { class: t, on: { click: n } }, [r["default"]]) } }; Xs.CheckableTag = Js, Xs.install = function (e) { e.use(N), e.component(Xs.name, Xs), e.component(Xs.CheckableTag.name, Xs.CheckableTag) }; var Qs = Xs, Zs = function () { return { name: p["a"].string, transitionName: p["a"].string, prefixCls: p["a"].string, inputPrefixCls: p["a"].string, format: p["a"].oneOfType([p["a"].string, p["a"].array, p["a"].func]), disabled: p["a"].bool, allowClear: p["a"].bool, suffixIcon: p["a"].any, popupStyle: p["a"].object, dropdownClassName: p["a"].string, locale: p["a"].any, localeCode: p["a"].string, size: p["a"].oneOf(["large", "small", "default"]), getCalendarContainer: p["a"].func, open: p["a"].bool, disabledDate: p["a"].func, showToday: p["a"].bool, dateRender: p["a"].any, pickerClass: p["a"].string, pickerInputClass: p["a"].string, timePicker: p["a"].any, autoFocus: p["a"].bool, tagPrefixCls: p["a"].string, tabIndex: p["a"].oneOfType([p["a"].string, p["a"].number]), align: p["a"].object.def((function () { return {} })), inputReadOnly: p["a"].bool, valueFormat: p["a"].string } }, ec = function () { return { value: So, defaultValue: So, defaultPickerValue: So, renderExtraFooter: p["a"].any, placeholder: p["a"].string } }, tc = function () { return s()({}, Zs(), ec(), { showTime: p["a"].oneOfType([p["a"].object, p["a"].bool]), open: p["a"].bool, disabledTime: p["a"].func, mode: p["a"].oneOf(["time", "date", "month", "year", "decade"]) }) }, nc = function () { return s()({}, Zs(), ec(), { placeholder: p["a"].string, monthCellContentRender: p["a"].func }) }, rc = function () { return s()({}, Zs(), { tagPrefixCls: p["a"].string, value: To, defaultValue: To, defaultPickerValue: To, timePicker: p["a"].any, showTime: p["a"].oneOfType([p["a"].object, p["a"].bool]), ranges: p["a"].object, placeholder: p["a"].arrayOf(String), mode: p["a"].oneOfType([p["a"].string, p["a"].arrayOf(String)]), separator: p["a"].any, disabledTime: p["a"].func, showToday: p["a"].bool, renderExtraFooter: p["a"].any }) }, ic = function () { return s()({}, Zs(), ec(), { placeholder: p["a"].string }) }, oc = { functional: !0, render: function (e, t) { var n = t.props, r = n.suffixIcon, i = n.prefixCls; return (r && Object(v["v"])(r) ? Object(en["a"])(r, { class: i + "-picker-icon" }) : e("span", { class: i + "-picker-icon" }, [r])) || e(Ve, { attrs: { type: "calendar" }, class: i + "-picker-icon" }) } }; function ac() { } function sc(e, t) { var n = bi()(e, 2), r = n[0], i = n[1]; if (r || i) { if (t && "month" === t[0]) return [r, i]; var o = i && i.isSame(r, "month") ? i.clone().add(1, "month") : i; return [r, o] } } function cc(e) { if (e) return Array.isArray(e) ? e : [e, e.clone().add(1, "month")] } function lc(e) { return !!Array.isArray(e) && (0 === e.length || e.every((function (e) { return !e }))) } function uc(e, t) { if (t && e && 0 !== e.length) { var n = bi()(e, 2), r = n[0], i = n[1]; r && r.locale(t), i && i.locale(t) } } var hc = { name: "ARangePicker", mixins: [m["a"]], model: { prop: "value", event: "change" }, props: Object(v["t"])(rc(), { allowClear: !0, showToday: !1, separator: "~" }), inject: { configProvider: { default: function () { return Vt } } }, data: function () { var e = this.value || this.defaultValue || [], t = bi()(e, 2), n = t[0], r = t[1]; if (n && !Mo(Zi).isMoment(n) || r && !Mo(Zi).isMoment(r)) throw new Error("The value/defaultValue of RangePicker must be a moment object array after `antd@2.0`, see: https://u.ant.design/date-picker-value"); var i = !e || lc(e) ? this.defaultPickerValue : e; return { sValue: e, sShowDate: cc(i || Mo(Zi)()), sOpen: this.open, sHoverValue: [] } }, watch: { value: function (e) { var t = e || [], n = { sValue: t }; Ns()(e, this.sValue) || (n = s()({}, n, { sShowDate: sc(t, this.mode) || this.sShowDate })), this.setState(n) }, open: function (e) { var t = { sOpen: e }; this.setState(t) }, sOpen: function (e, t) { var n = this; this.$nextTick((function () { Object(v["s"])(n, "open") || !t || e || n.focus() })) } }, methods: { setValue: function (e, t) { this.handleChange(e), !t && this.showTime || Object(v["s"])(this, "open") || this.setState({ sOpen: !1 }) }, clearSelection: function (e) { e.preventDefault(), e.stopPropagation(), this.setState({ sValue: [] }), this.handleChange([]) }, clearHoverValue: function () { this.setState({ sHoverValue: [] }) }, handleChange: function (e) { Object(v["s"])(this, "value") || this.setState((function (t) { var n = t.sShowDate; return { sValue: e, sShowDate: sc(e) || n } })), e[0] && e[1] && e[0].diff(e[1]) > 0 && (e[1] = void 0); var t = bi()(e, 2), n = t[0], r = t[1]; this.$emit("change", e, [bs(n, this.format), bs(r, this.format)]) }, handleOpenChange: function (e) { Object(v["s"])(this, "open") || this.setState({ sOpen: e }), !1 === e && this.clearHoverValue(), this.$emit("openChange", e) }, handleShowDateChange: function (e) { this.setState({ sShowDate: e }) }, handleHoverChange: function (e) { this.setState({ sHoverValue: e }) }, handleRangeMouseLeave: function () { this.sOpen && this.clearHoverValue() }, handleCalendarInputSelect: function (e) { var t = bi()(e, 1), n = t[0]; n && this.setState((function (t) { var n = t.sShowDate; return { sValue: e, sShowDate: sc(e) || n } })) }, handleRangeClick: function (e) { "function" === typeof e && (e = e()), this.setValue(e, !0), this.$emit("ok", e), this.$emit("openChange", !1) }, onMouseEnter: function (e) { this.$emit("mouseenter", e) }, onMouseLeave: function (e) { this.$emit("mouseleave", e) }, focus: function () { this.$refs.picker.focus() }, blur: function () { this.$refs.picker.blur() }, renderFooter: function () { var e = this, t = this.$createElement, n = this.ranges, r = this.$scopedSlots, i = this.$slots, o = this._prefixCls, a = this._tagPrefixCls, s = this.renderExtraFooter || r.renderExtraFooter || i.renderExtraFooter; if (!n && !s) return null; var c = s ? t("div", { class: o + "-footer-extra", key: "extra" }, ["function" === typeof s ? s() : s]) : null, l = n && Object.keys(n).map((function (r) { var i = n[r], o = "function" === typeof i ? i.call(e) : i; return t(Qs, { key: r, attrs: { prefixCls: a, color: "blue" }, on: { click: function () { return e.handleRangeClick(i) }, mouseenter: function () { return e.setState({ sHoverValue: o }) }, mouseleave: e.handleRangeMouseLeave } }, [r]) })), u = l && l.length > 0 ? t("div", { class: o + "-footer-extra " + o + "-range-quick-selector", key: "range" }, [l]) : null; return [u, c] } }, render: function () { var e, t = this, n = arguments[0], r = Object(v["l"])(this), i = Object(v["g"])(this, "suffixIcon"); i = Array.isArray(i) ? i[0] : i; var o = this.sValue, a = this.sShowDate, c = this.sHoverValue, l = this.sOpen, u = this.$scopedSlots, f = Object(v["k"])(this), d = f.calendarChange, p = void 0 === d ? ac : d, m = f.ok, g = void 0 === m ? ac : m, y = f.focus, b = void 0 === y ? ac : y, x = f.blur, w = void 0 === x ? ac : x, _ = f.panelChange, C = void 0 === _ ? ac : _, M = r.prefixCls, O = r.tagPrefixCls, k = r.popupStyle, S = r.disabledDate, T = r.disabledTime, A = r.showTime, L = r.showToday, j = r.ranges, z = r.locale, E = r.localeCode, P = r.format, D = r.separator, H = r.inputReadOnly, V = this.configProvider.getPrefixCls, I = V("calendar", M), N = V("tag", O); this._prefixCls = I, this._tagPrefixCls = N; var R = r.dateRender || u.dateRender; uc(o, E), uc(a, E); var F = Q()((e = {}, h()(e, I + "-time", A), h()(e, I + "-range-with-ranges", j), e)), Y = { on: { change: this.handleChange } }, $ = { on: { ok: this.handleChange }, props: {} }; r.timePicker ? Y.on.change = function (e) { return t.handleChange(e) } : $ = { on: {}, props: {} }, "mode" in r && ($.props.mode = r.mode); var B = Array.isArray(r.placeholder) ? r.placeholder[0] : z.lang.rangePlaceholder[0], W = Array.isArray(r.placeholder) ? r.placeholder[1] : z.lang.rangePlaceholder[1], q = Object(v["w"])($, { props: { separator: D, format: P, prefixCls: I, renderFooter: this.renderFooter, timePicker: r.timePicker, disabledDate: S, disabledTime: T, dateInputPlaceholder: [B, W], locale: z.lang, dateRender: R, value: a, hoverValue: c, showToday: L, inputReadOnly: H }, on: { change: p, ok: g, valueChange: this.handleShowDateChange, hoverChange: this.handleHoverChange, panelChange: C, inputSelect: this.handleCalendarInputSelect }, class: F, scopedSlots: u }), U = n(Vs, q), K = {}; r.showTime && (K.width = "350px"); var G = bi()(o, 2), X = G[0], J = G[1], Z = !r.disabled && r.allowClear && o && (X || J) ? n(Ve, { attrs: { type: "close-circle", theme: "filled" }, class: I + "-picker-clear", on: { click: this.clearSelection } }) : null, ee = n(oc, { attrs: { suffixIcon: i, prefixCls: I } }), te = function (e) { var t = e.value, i = bi()(t, 2), o = i[0], a = i[1]; return n("span", { class: r.pickerInputClass }, [n("input", { attrs: { disabled: r.disabled, readOnly: !0, placeholder: B, tabIndex: -1 }, domProps: { value: bs(o, r.format) }, class: I + "-range-picker-input" }), n("span", { class: I + "-range-picker-separator" }, [" ", D, " "]), n("input", { attrs: { disabled: r.disabled, readOnly: !0, placeholder: W, tabIndex: -1 }, domProps: { value: bs(a, r.format) }, class: I + "-range-picker-input" }), Z, ee]) }, ne = Object(v["w"])({ props: r, on: f }, Y, { props: { calendar: U, value: o, open: l, prefixCls: I + "-picker-container" }, on: { openChange: this.handleOpenChange }, style: k, scopedSlots: s()({ default: te }, u) }); return n("span", { ref: "picker", class: r.pickerClass, style: K, attrs: { tabIndex: r.disabled ? -1 : 0 }, on: { focus: b, blur: w, mouseenter: this.onMouseEnter, mouseleave: this.onMouseLeave } }, [n(ys, ne)]) } }; function fc(e, t) { return e && e.format(t) || "" } function dc() { } var pc = { name: "AWeekPicker", mixins: [m["a"]], model: { prop: "value", event: "change" }, props: Object(v["t"])(ic(), { format: "gggg-wo", allowClear: !0 }), inject: { configProvider: { default: function () { return Vt } } }, data: function () { var e = this.value || this.defaultValue; if (e && !Mo(Zi).isMoment(e)) throw new Error("The value/defaultValue of WeekPicker or MonthPicker must be a moment object"); return { _value: e, _open: this.open } }, watch: { value: function (e) { var t = { _value: e }; this.setState(t), this.prevState = s()({}, this.$data, t) }, open: function (e) { var t = { _open: e }; this.setState(t), this.prevState = s()({}, this.$data, t) }, _open: function (e, t) { var n = this; this.$nextTick((function () { Object(v["s"])(n, "open") || !t || e || n.focus() })) } }, mounted: function () { this.prevState = s()({}, this.$data) }, updated: function () { var e = this; this.$nextTick((function () { Object(v["s"])(e, "open") || !e.prevState._open || e._open || e.focus() })) }, methods: { weekDateRender: function (e) { var t = this.$createElement, n = this.$data._value, r = this._prefixCls, i = this.$scopedSlots, o = this.dateRender || i.dateRender, a = o ? o(e) : e.date(); return n && e.year() === n.year() && e.week() === n.week() ? t("div", { class: r + "-selected-day" }, [t("div", { class: r + "-date" }, [a])]) : t("div", { class: r + "-date" }, [a]) }, handleChange: function (e) { Object(v["s"])(this, "value") || this.setState({ _value: e }), this.$emit("change", e, fc(e, this.format)) }, handleOpenChange: function (e) { Object(v["s"])(this, "open") || this.setState({ _open: e }), this.$emit("openChange", e) }, clearSelection: function (e) { e.preventDefault(), e.stopPropagation(), this.handleChange(null) }, focus: function () { this.$refs.input.focus() }, blur: function () { this.$refs.input.blur() }, renderFooter: function () { var e = this.$createElement, t = this._prefixCls, n = this.$scopedSlots, r = this.renderExtraFooter || n.renderExtraFooter; return r ? e("div", { class: t + "-footer-extra" }, [r.apply(void 0, arguments)]) : null } }, render: function () { var e = arguments[0], t = Object(v["l"])(this), n = Object(v["g"])(this, "suffixIcon"); n = Array.isArray(n) ? n[0] : n; var r = this.prefixCls, i = this.disabled, o = this.pickerClass, a = this.popupStyle, c = this.pickerInputClass, l = this.format, u = this.allowClear, h = this.locale, f = this.localeCode, d = this.disabledDate, p = this.defaultPickerValue, m = this.$data, g = this.$scopedSlots, y = Object(v["k"])(this), b = this.configProvider.getPrefixCls, x = b("calendar", r); this._prefixCls = x; var w = m._value, _ = m._open, C = y.focus, M = void 0 === C ? dc : C, O = y.blur, k = void 0 === O ? dc : O; w && f && w.locale(f); var S = Object(v["s"])(this, "placeholder") ? this.placeholder : h.lang.placeholder, T = this.dateRender || g.dateRender || this.weekDateRender, A = e(ss, { attrs: { showWeekNumber: !0, dateRender: T, prefixCls: x, format: l, locale: h.lang, showDateInput: !1, showToday: !1, disabledDate: d, renderFooter: this.renderFooter, defaultValue: p } }), L = !i && u && m._value ? e(Ve, { attrs: { type: "close-circle", theme: "filled" }, class: x + "-picker-clear", on: { click: this.clearSelection } }) : null, j = e(oc, { attrs: { suffixIcon: n, prefixCls: x } }), z = function (t) { var n = t.value; return e("span", { style: { display: "inline-block", width: "100%" } }, [e("input", { ref: "input", attrs: { disabled: i, readOnly: !0, placeholder: S }, domProps: { value: n && n.format(l) || "" }, class: c, on: { focus: M, blur: k } }), L, j]) }, E = { props: s()({}, t, { calendar: A, prefixCls: x + "-picker-container", value: w, open: _ }), on: s()({}, y, { change: this.handleChange, openChange: this.handleOpenChange }), style: a, scopedSlots: s()({ default: z }, g) }; return e("span", { class: o }, [e(ys, E)]) } }, vc = Os(s()({}, ws(ss, tc()), { name: "ADatePicker" }), tc(), "date"), mc = Os(s()({}, ws(ls, nc()), { name: "AMonthPicker" }), nc(), "month"); s()(vc, { RangePicker: Os(hc, rc(), "date"), MonthPicker: mc, WeekPicker: Os(pc, ic(), "week") }), vc.install = function (e) { e.use(N), e.component(vc.name, vc), e.component(vc.RangePicker.name, vc.RangePicker), e.component(vc.MonthPicker.name, vc.MonthPicker), e.component(vc.WeekPicker.name, vc.WeekPicker) }; var gc = vc, yc = (n("9083"), { name: "ADivider", props: { prefixCls: p["a"].string, type: p["a"].oneOf(["horizontal", "vertical", ""]).def("horizontal"), dashed: p["a"].bool, orientation: p["a"].oneOf(["left", "right", "center"]) }, inject: { configProvider: { default: function () { return Vt } } }, render: function () { var e, t = arguments[0], n = this.prefixCls, r = this.type, i = this.$slots, o = this.dashed, a = this.orientation, s = void 0 === a ? "center" : a, c = this.configProvider.getPrefixCls, l = c("divider", n), u = s.length > 0 ? "-" + s : s, f = (e = {}, h()(e, l, !0), h()(e, l + "-" + r, !0), h()(e, l + "-with-text" + u, i["default"]), h()(e, l + "-dashed", !!o), e); return t("div", { class: f, attrs: { role: "separator" } }, [i["default"] && t("span", { class: l + "-inner-text" }, [i["default"]])]) }, install: function (e) { e.use(N), e.component(yc.name, yc) } }), bc = yc; function xc() { } n("15aa"); var wc = { type: p["a"].oneOf(["success", "info", "warning", "error"]), closable: p["a"].bool, closeText: p["a"].any, message: p["a"].any, description: p["a"].any, afterClose: p["a"].func.def(xc), showIcon: p["a"].bool, iconType: p["a"].string, prefixCls: p["a"].string, banner: p["a"].bool, icon: p["a"].any }, _c = { name: "AAlert", props: wc, mixins: [m["a"]], inject: { configProvider: { default: function () { return Vt } } }, data: function () { return { closing: !1, closed: !1 } }, methods: { handleClose: function (e) { e.preventDefault(); var t = this.$el; t.style.height = t.offsetHeight + "px", t.style.height = t.offsetHeight + "px", this.setState({ closing: !0 }), this.$emit("close", e) }, animationEnd: function () { this.setState({ closing: !1, closed: !0 }), this.afterClose() } }, render: function () { var e, t = arguments[0], n = this.prefixCls, r = this.banner, i = this.closing, o = this.closed, a = this.configProvider.getPrefixCls, s = a("alert", n), c = this.closable, l = this.type, u = this.showIcon, f = this.iconType, d = Object(v["g"])(this, "closeText"), p = Object(v["g"])(this, "description"), m = Object(v["g"])(this, "message"), g = Object(v["g"])(this, "icon"); u = !(!r || void 0 !== u) || u, l = r && void 0 === l ? "warning" : l || "info"; var b = "filled"; if (!f) { switch (l) { case "success": f = "check-circle"; break; case "info": f = "info-circle"; break; case "error": f = "close-circle"; break; case "warning": f = "exclamation-circle"; break; default: f = "default" }p && (b = "outlined") } d && (c = !0); var x = Q()(s, (e = {}, h()(e, s + "-" + l, !0), h()(e, s + "-closing", i), h()(e, s + "-with-description", !!p), h()(e, s + "-no-icon", !u), h()(e, s + "-banner", !!r), h()(e, s + "-closable", c), e)), w = c ? t("button", { attrs: { type: "button", tabIndex: 0 }, on: { click: this.handleClose }, class: s + "-close-icon" }, [d ? t("span", { class: s + "-close-text" }, [d]) : t(Ve, { attrs: { type: "close" } })]) : null, _ = g && (Object(v["v"])(g) ? Object(en["a"])(g, { class: s + "-icon" }) : t("span", { class: s + "-icon" }, [g])) || t(Ve, { class: s + "-icon", attrs: { type: f, theme: b } }), C = Object(y["a"])(s + "-slide-up", { appear: !1, afterLeave: this.animationEnd }); return o ? null : t("transition", C, [t("div", { directives: [{ name: "show", value: !i }], class: x, attrs: { "data-show": !i } }, [u ? _ : null, t("span", { class: s + "-message" }, [m]), t("span", { class: s + "-description" }, [p]), w])]) }, install: function (e) { e.use(N), e.component(_c.name, _c) } }, Cc = _c, Mc = (n("266d"), n("b047")), Oc = n.n(Mc); function kc() { if ("undefined" !== typeof window && window.document && window.document.documentElement) { var e = window.document.documentElement; return "flex" in e.style || "webkitFlex" in e.style || "Flex" in e.style || "msFlex" in e.style } return !1 } var Sc = { name: "Steps", mixins: [m["a"]], props: { type: p["a"].string.def("default"), prefixCls: p["a"].string.def("rc-steps"), iconPrefix: p["a"].string.def("rc"), direction: p["a"].string.def("horizontal"), labelPlacement: p["a"].string.def("horizontal"), status: p["a"].string.def("process"), size: p["a"].string.def(""), progressDot: p["a"].oneOfType([p["a"].bool, p["a"].func]), initial: p["a"].number.def(0), current: p["a"].number.def(0), icons: p["a"].shape({ finish: p["a"].any, error: p["a"].any }).loose }, data: function () { return this.calcStepOffsetWidth = Oc()(this.calcStepOffsetWidth, 150), { flexSupported: !0, lastStepOffsetWidth: 0 } }, mounted: function () { var e = this; this.$nextTick((function () { e.calcStepOffsetWidth(), kc() || e.setState({ flexSupported: !1 }) })) }, updated: function () { var e = this; this.$nextTick((function () { e.calcStepOffsetWidth() })) }, beforeDestroy: function () { this.calcTimeout && clearTimeout(this.calcTimeout), this.calcStepOffsetWidth && this.calcStepOffsetWidth.cancel && this.calcStepOffsetWidth.cancel() }, methods: { onStepClick: function (e) { var t = this.$props.current; t !== e && this.$emit("change", e) }, calcStepOffsetWidth: function () { var e = this; if (!kc()) { var t = this.$data.lastStepOffsetWidth, n = this.$refs.vcStepsRef; n.children.length > 0 && (this.calcTimeout && clearTimeout(this.calcTimeout), this.calcTimeout = setTimeout((function () { var r = (n.lastChild.offsetWidth || 0) + 1; t === r || Math.abs(t - r) <= 3 || e.setState({ lastStepOffsetWidth: r }) }))) } } }, render: function () { var e, t = this, n = arguments[0], r = this.prefixCls, i = this.direction, o = this.type, a = this.labelPlacement, c = this.iconPrefix, l = this.status, u = this.size, f = this.current, d = this.$scopedSlots, p = this.initial, m = this.icons, g = "navigation" === o, y = this.progressDot; void 0 === y && (y = d.progressDot); var b = this.lastStepOffsetWidth, x = this.flexSupported, w = Object(v["c"])(this.$slots["default"]), _ = w.length - 1, C = y ? "vertical" : a, M = (e = {}, h()(e, r, !0), h()(e, r + "-" + i, !0), h()(e, r + "-" + u, u), h()(e, r + "-label-" + C, "horizontal" === i), h()(e, r + "-dot", !!y), h()(e, r + "-navigation", g), h()(e, r + "-flex-not-supported", !x), e), O = Object(v["k"])(this), k = { class: M, ref: "vcStepsRef", on: O }; return n("div", k, [w.map((function (e, n) { var o = Object(v["m"])(e), a = p + n, u = { props: s()({ stepNumber: "" + (a + 1), stepIndex: a, prefixCls: r, iconPrefix: c, progressDot: t.progressDot, icons: m }, o), on: Object(v["i"])(e), scopedSlots: d }; return O.change && (u.on.stepClick = t.onStepClick), x || "vertical" === i || (g ? (u.props.itemWidth = 100 / (_ + 1) + "%", u.props.adjustMarginRight = 0) : n !== _ && (u.props.itemWidth = 100 / _ + "%", u.props.adjustMarginRight = -Math.round(b / _ + 1) + "px")), "error" === l && n === f - 1 && (u["class"] = r + "-next-error"), o.status || (u.props.status = a === f ? l : a < f ? "finish" : "wait"), u.props.active = a === f, Object(en["a"])(e, u) }))]) } }; function Tc(e) { return "string" === typeof e } function Ac() { } var Lc = { name: "Step", props: { prefixCls: p["a"].string, wrapperStyle: p["a"].object, itemWidth: p["a"].string, active: p["a"].bool, disabled: p["a"].bool, status: p["a"].string, iconPrefix: p["a"].string, icon: p["a"].any, adjustMarginRight: p["a"].string, stepNumber: p["a"].string, stepIndex: p["a"].number, description: p["a"].any, title: p["a"].any, subTitle: p["a"].any, progressDot: p["a"].oneOfType([p["a"].bool, p["a"].func]), tailContent: p["a"].any, icons: p["a"].shape({ finish: p["a"].any, error: p["a"].any }).loose }, methods: { onClick: function () { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; this.$emit.apply(this, ["click"].concat(X()(t))), this.$emit("stepClick", this.stepIndex) }, renderIconNode: function () { var e, t = this.$createElement, n = Object(v["l"])(this), r = n.prefixCls, i = n.stepNumber, o = n.status, a = n.iconPrefix, s = n.icons, c = this.progressDot; void 0 === c && (c = this.$scopedSlots.progressDot); var l = Object(v["g"])(this, "icon"), u = Object(v["g"])(this, "title"), f = Object(v["g"])(this, "description"), d = void 0, p = (e = {}, h()(e, r + "-icon", !0), h()(e, a + "icon", !0), h()(e, a + "icon-" + l, l && Tc(l)), h()(e, a + "icon-check", !l && "finish" === o && s && !s.finish), h()(e, a + "icon-close", !l && "error" === o && s && !s.error), e), m = t("span", { class: r + "-icon-dot" }); return d = c ? t("span", { class: r + "-icon" }, "function" === typeof c ? [c({ index: i - 1, status: o, title: u, description: f, prefixCls: r })] : [m]) : l && !Tc(l) ? t("span", { class: r + "-icon" }, [l]) : s && s.finish && "finish" === o ? t("span", { class: r + "-icon" }, [s.finish]) : s && s.error && "error" === o ? t("span", { class: r + "-icon" }, [s.error]) : l || "finish" === o || "error" === o ? t("span", { class: p }) : t("span", { class: r + "-icon" }, [i]), d } }, render: function () { var e, t = arguments[0], n = Object(v["l"])(this), r = n.prefixCls, i = n.itemWidth, o = n.active, a = n.status, s = void 0 === a ? "wait" : a, c = n.tailContent, l = n.adjustMarginRight, u = n.disabled, f = Object(v["g"])(this, "title"), d = Object(v["g"])(this, "subTitle"), p = Object(v["g"])(this, "description"), m = (e = {}, h()(e, r + "-item", !0), h()(e, r + "-item-" + s, !0), h()(e, r + "-item-custom", Object(v["g"])(this, "icon")), h()(e, r + "-item-active", o), h()(e, r + "-item-disabled", !0 === u), e), g = { class: m, on: Object(v["k"])(this) }, y = {}; i && (y.width = i), l && (y.marginRight = l); var b = Object(v["k"])(this), x = { attrs: {}, on: { click: b.click || Ac } }; return b.stepClick && !u && (x.attrs.role = "button", x.attrs.tabIndex = 0, x.on.click = this.onClick), t("div", K()([g, { style: y }]), [t("div", K()([x, { class: r + "-item-container" }]), [t("div", { class: r + "-item-tail" }, [c]), t("div", { class: r + "-item-icon" }, [this.renderIconNode()]), t("div", { class: r + "-item-content" }, [t("div", { class: r + "-item-title" }, [f, d && t("div", { attrs: { title: d }, class: r + "-item-subtitle" }, [d])]), p && t("div", { class: r + "-item-description" }, [p])])])]) } }; Sc.Step = Lc; var jc = Sc, zc = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = { prefixCls: p["a"].string, iconPrefix: p["a"].string, current: p["a"].number, initial: p["a"].number, labelPlacement: p["a"].oneOf(["horizontal", "vertical"]).def("horizontal"), status: p["a"].oneOf(["wait", "process", "finish", "error"]), size: p["a"].oneOf(["default", "small"]), direction: p["a"].oneOf(["horizontal", "vertical"]), progressDot: p["a"].oneOfType([p["a"].bool, p["a"].func]), type: p["a"].oneOf(["default", "navigation"]) }; return Object(v["t"])(t, e) }, Ec = { name: "ASteps", props: zc({ current: 0 }), inject: { configProvider: { default: function () { return Vt } } }, model: { prop: "current", event: "change" }, Step: s()({}, jc.Step, { name: "AStep" }), render: function () { var e = arguments[0], t = Object(v["l"])(this), n = t.prefixCls, r = t.iconPrefix, i = this.configProvider.getPrefixCls, o = i("steps", n), a = i("", r), c = { finish: e(Ve, { attrs: { type: "check" }, class: o + "-finish-icon" }), error: e(Ve, { attrs: { type: "close" }, class: o + "-error-icon" }) }, l = { props: s()({ icons: c, iconPrefix: a, prefixCls: o }, t), on: Object(v["k"])(this), scopedSlots: this.$scopedSlots }; return e(jc, l, [this.$slots["default"]]) }, install: function (e) { e.use(N), e.component(Ec.name, Ec), e.component(Ec.Step.name, Ec.Step) } }, Pc = Ec, Dc = (n("c746"), n("13d0"), { width: 0, height: 0, overflow: "hidden", position: "absolute" }), Hc = { name: "Sentinel", props: { setRef: p["a"].func, prevElement: p["a"].any, nextElement: p["a"].any }, methods: { onKeyDown: function (e) { var t = e.target, n = e.which, r = e.shiftKey, i = this.$props, o = i.nextElement, a = i.prevElement; n === Io.TAB && document.activeElement === t && (!r && o && o.focus(), r && a && a.focus()) } }, render: function () { var e = arguments[0], t = this.$props.setRef; return e("div", K()([{ attrs: { tabIndex: 0 } }, { directives: [{ name: "ant-ref", value: t }] }, { style: Dc, on: { keydown: this.onKeyDown }, attrs: { role: "presentation" } }]), [this.$slots["default"]]) } }, Vc = { name: "TabPane", props: { active: p["a"].bool, destroyInactiveTabPane: p["a"].bool, forceRender: p["a"].bool, placeholder: p["a"].any, rootPrefixCls: p["a"].string, tab: p["a"].any, closable: p["a"].bool, disabled: p["a"].bool }, inject: { sentinelContext: { default: function () { return {} } } }, render: function () { var e, t = arguments[0], n = this.$props, r = n.destroyInactiveTabPane, i = n.active, o = n.forceRender, a = n.rootPrefixCls, s = this.$slots["default"], c = Object(v["g"])(this, "placeholder"); this._isActived = this._isActived || i; var l = a + "-tabpane", u = (e = {}, h()(e, l, 1), h()(e, l + "-inactive", !i), h()(e, l + "-active", i), e), f = r ? i : this._isActived, d = f || o, p = this.sentinelContext, m = p.sentinelStart, g = p.sentinelEnd, y = p.setPanelSentinelStart, b = p.setPanelSentinelEnd, x = void 0, w = void 0; return i && d && (x = t(Hc, { attrs: { setRef: y, prevElement: m } }), w = t(Hc, { attrs: { setRef: b, nextElement: g } })), t("div", { class: u, attrs: { role: "tabpanel", "aria-hidden": i ? "false" : "true" } }, [x, d ? s : c, w]) } }, Ic = { LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40 }, Nc = function (e) { return void 0 !== e && null !== e && "" !== e }, Rc = Nc; function Fc(e) { var t = void 0, n = e.children; return n.forEach((function (e) { !e || Rc(t) || e.disabled || (t = e.key) })), t } function Yc(e, t) { var n = e.children, r = n.map((function (e) { return e && e.key })); return r.indexOf(t) >= 0 } var $c = { name: "Tabs", mixins: [m["a"]], model: { prop: "activeKey", event: "change" }, props: { destroyInactiveTabPane: p["a"].bool, renderTabBar: p["a"].func.isRequired, renderTabContent: p["a"].func.isRequired, navWrapper: p["a"].func.def((function (e) { return e })), children: p["a"].any.def([]), prefixCls: p["a"].string.def("ant-tabs"), tabBarPosition: p["a"].string.def("top"), activeKey: p["a"].oneOfType([p["a"].string, p["a"].number]), defaultActiveKey: p["a"].oneOfType([p["a"].string, p["a"].number]), __propsSymbol__: p["a"].any, direction: p["a"].string.def("ltr"), tabBarGutter: p["a"].number }, data: function () { var e = Object(v["l"])(this), t = void 0; return t = "activeKey" in e ? e.activeKey : "defaultActiveKey" in e ? e.defaultActiveKey : Fc(e), { _activeKey: t } }, provide: function () { return { sentinelContext: this } }, watch: { __propsSymbol__: function () { var e = Object(v["l"])(this); "activeKey" in e ? this.setState({ _activeKey: e.activeKey }) : Yc(e, this.$data._activeKey) || this.setState({ _activeKey: Fc(e) }) } }, beforeDestroy: function () { this.destroy = !0, io.a.cancel(this.sentinelId) }, methods: { onTabClick: function (e, t) { this.tabBar.componentOptions && this.tabBar.componentOptions.listeners && this.tabBar.componentOptions.listeners.tabClick && this.tabBar.componentOptions.listeners.tabClick(e, t), this.setActiveKey(e) }, onNavKeyDown: function (e) { var t = e.keyCode; if (t === Ic.RIGHT || t === Ic.DOWN) { e.preventDefault(); var n = this.getNextActiveKey(!0); this.onTabClick(n) } else if (t === Ic.LEFT || t === Ic.UP) { e.preventDefault(); var r = this.getNextActiveKey(!1); this.onTabClick(r) } }, onScroll: function (e) { var t = e.target, n = e.currentTarget; t === n && t.scrollLeft > 0 && (t.scrollLeft = 0) }, setSentinelStart: function (e) { this.sentinelStart = e }, setSentinelEnd: function (e) { this.sentinelEnd = e }, setPanelSentinelStart: function (e) { e !== this.panelSentinelStart && this.updateSentinelContext(), this.panelSentinelStart = e }, setPanelSentinelEnd: function (e) { e !== this.panelSentinelEnd && this.updateSentinelContext(), this.panelSentinelEnd = e }, setActiveKey: function (e) { if (this.$data._activeKey !== e) { var t = Object(v["l"])(this); "activeKey" in t || this.setState({ _activeKey: e }), this.__emit("change", e) } }, getNextActiveKey: function (e) { var t = this.$data._activeKey, n = []; this.$props.children.forEach((function (t) { var r = Object(v["r"])(t, "disabled"); t && !r && "" !== r && (e ? n.push(t) : n.unshift(t)) })); var r = n.length, i = r && n[0].key; return n.forEach((function (e, o) { e.key === t && (i = o === r - 1 ? n[0].key : n[o + 1].key) })), i }, updateSentinelContext: function () { var e = this; this.destroy || (io.a.cancel(this.sentinelId), this.sentinelId = io()((function () { e.destroy || e.$forceUpdate() }))) } }, render: function () { var e, t = arguments[0], n = this.$props, r = n.prefixCls, i = n.navWrapper, o = n.tabBarPosition, a = n.renderTabContent, c = n.renderTabBar, l = n.destroyInactiveTabPane, u = n.direction, f = n.tabBarGutter, d = (e = {}, h()(e, r, 1), h()(e, r + "-" + o, 1), h()(e, r + "-rtl", "rtl" === u), e); this.tabBar = c(); var p = Object(en["a"])(this.tabBar, { props: { prefixCls: r, navWrapper: i, tabBarPosition: o, panels: n.children, activeKey: this.$data._activeKey, direction: u, tabBarGutter: f }, on: { keydown: this.onNavKeyDown, tabClick: this.onTabClick }, key: "tabBar" }), m = Object(en["a"])(a(), { props: { prefixCls: r, tabBarPosition: o, activeKey: this.$data._activeKey, destroyInactiveTabPane: l, direction: u }, on: { change: this.setActiveKey }, children: n.children, key: "tabContent" }), g = t(Hc, { key: "sentinelStart", attrs: { setRef: this.setSentinelStart, nextElement: this.panelSentinelStart } }), y = t(Hc, { key: "sentinelEnd", attrs: { setRef: this.setSentinelEnd, prevElement: this.panelSentinelEnd } }), b = []; "bottom" === o ? b.push(g, m, y, p) : b.push(p, g, m, y); var x = s()({}, Object(Qi["a"])(Object(v["k"])(this), ["change"]), { scroll: this.onScroll }); return t("div", { on: x, class: d }, [b]) } }; d.a.use(_.a, { name: "ant-ref" }); var Bc = $c; function Wc(e) { var t = []; return e.forEach((function (e) { e.data && t.push(e) })), t } function qc(e, t) { for (var n = Wc(e), r = 0; r < n.length; r++)if (n[r].key === t) return r; return -1 } function Uc(e, t) { e.transform = t, e.webkitTransform = t, e.mozTransform = t } function Kc(e) { return ("transform" in e || "webkitTransform" in e || "MozTransform" in e) && window.atob } function Gc(e) { return { transform: e, WebkitTransform: e, MozTransform: e } } function Xc(e) { return "left" === e || "right" === e } function Jc(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "ltr", r = Xc(t) ? "translateY" : "translateX"; return Xc(t) || "rtl" !== n ? r + "(" + 100 * -e + "%) translateZ(0)" : r + "(" + 100 * e + "%) translateZ(0)" } function Qc(e, t) { var n = Xc(t) ? "marginTop" : "marginLeft"; return h()({}, n, 100 * -e + "%") } function Zc(e, t) { return +window.getComputedStyle(e).getPropertyValue(t).replace("px", "") } function el(e, t) { return +e.getPropertyValue(t).replace("px", "") } function tl(e, t, n, r, i) { var o = Zc(i, "padding-" + e); if (!r || !r.parentNode) return o; var a = r.parentNode.childNodes; return Array.prototype.some.call(a, (function (i) { var a = window.getComputedStyle(i); return i !== r ? (o += el(a, "margin-" + e), o += i[t], o += el(a, "margin-" + n), "content-box" === a.boxSizing && (o += el(a, "border-" + e + "-width") + el(a, "border-" + n + "-width")), !1) : (o += el(a, "margin-" + e), !0) })), o } function nl(e, t) { return tl("left", "offsetWidth", "right", e, t) } function rl(e, t) { return tl("top", "offsetHeight", "bottom", e, t) } var il = { name: "TabContent", props: { animated: { type: Boolean, default: !0 }, animatedWithMargin: { type: Boolean, default: !0 }, prefixCls: { default: "ant-tabs", type: String }, activeKey: p["a"].oneOfType([p["a"].string, p["a"].number]), tabBarPosition: String, direction: p["a"].string, destroyInactiveTabPane: p["a"].bool }, computed: { classes: function () { var e, t = this.animated, n = this.prefixCls; return e = {}, h()(e, n + "-content", !0), h()(e, t ? n + "-content-animated" : n + "-content-no-animated", !0), e } }, methods: { getTabPanes: function () { var e = this.$props, t = e.activeKey, n = this.$slots["default"] || [], r = []; return n.forEach((function (n) { if (n) { var i = n.key, o = t === i; r.push(Object(en["a"])(n, { props: { active: o, destroyInactiveTabPane: e.destroyInactiveTabPane, rootPrefixCls: e.prefixCls } })) } })), r } }, render: function () { var e = arguments[0], t = this.activeKey, n = this.tabBarPosition, r = this.animated, i = this.animatedWithMargin, o = this.direction, a = this.classes, s = {}; if (r && this.$slots["default"]) { var c = qc(this.$slots["default"], t); if (-1 !== c) { var l = i ? Qc(c, n) : Gc(Jc(c, n, o)); s = l } else s = { display: "none" } } return e("div", { class: a, style: s }, [this.getTabPanes()]) } }, ol = function (e) { if ("undefined" !== typeof window && window.document && window.document.documentElement) { var t = Array.isArray(e) ? e : [e], n = window.document.documentElement; return t.some((function (e) { return e in n.style })) } return !1 }, al = ol(["flex", "webkitFlex", "Flex", "msFlex"]); function sl(e, t) { var n = e.$props, r = n.styles, i = void 0 === r ? {} : r, o = n.panels, a = n.activeKey, s = n.direction, c = e.getRef("root"), l = e.getRef("nav") || c, u = e.getRef("inkBar"), h = e.getRef("activeTab"), f = u.style, d = e.$props.tabBarPosition, p = qc(o, a); if (t && (f.display = "none"), h) { var v = h, m = Kc(f); if (Uc(f, ""), f.width = "", f.height = "", f.left = "", f.top = "", f.bottom = "", f.right = "", "top" === d || "bottom" === d) { var g = nl(v, l), y = v.offsetWidth; y === c.offsetWidth ? y = 0 : i.inkBar && void 0 !== i.inkBar.width && (y = parseFloat(i.inkBar.width, 10), y && (g += (v.offsetWidth - y) / 2)), "rtl" === s && (g = Zc(v, "margin-left") - g), m ? Uc(f, "translate3d(" + g + "px,0,0)") : f.left = g + "px", f.width = y + "px" } else { var b = rl(v, l, !0), x = v.offsetHeight; i.inkBar && void 0 !== i.inkBar.height && (x = parseFloat(i.inkBar.height, 10), x && (b += (v.offsetHeight - x) / 2)), m ? (Uc(f, "translate3d(0," + b + "px,0)"), f.top = "0") : f.top = b + "px", f.height = x + "px" } } f.display = -1 !== p ? "block" : "none" } var cl = { name: "InkTabBarNode", mixins: [m["a"]], props: { inkBarAnimated: { type: Boolean, default: !0 }, direction: p["a"].string, prefixCls: String, styles: Object, tabBarPosition: String, saveRef: p["a"].func.def((function () { })), getRef: p["a"].func.def((function () { })), panels: p["a"].array, activeKey: p["a"].oneOfType([p["a"].string, p["a"].number]) }, updated: function () { this.$nextTick((function () { sl(this) })) }, mounted: function () { this.$nextTick((function () { sl(this, !0) })) }, render: function () { var e, t = arguments[0], n = this.prefixCls, r = this.styles, i = void 0 === r ? {} : r, o = this.inkBarAnimated, a = n + "-ink-bar", s = (e = {}, h()(e, a, !0), h()(e, o ? a + "-animated" : a + "-no-animated", !0), e); return t("div", K()([{ style: i.inkBar, class: s, key: "inkBar" }, { directives: [{ name: "ant-ref", value: this.saveRef("inkBar") }] }])) } }, ll = n("d96e"), ul = n.n(ll); function hl() { } var fl = { name: "TabBarTabsNode", mixins: [m["a"]], props: { activeKey: p["a"].oneOfType([p["a"].string, p["a"].number]), panels: p["a"].any.def([]), prefixCls: p["a"].string.def(""), tabBarGutter: p["a"].any.def(null), onTabClick: p["a"].func, saveRef: p["a"].func.def(hl), getRef: p["a"].func.def(hl), renderTabBarNode: p["a"].func, tabBarPosition: p["a"].string, direction: p["a"].string }, render: function () { var e = this, t = arguments[0], n = this.$props, r = n.panels, i = n.activeKey, o = n.prefixCls, a = n.tabBarGutter, s = n.saveRef, c = n.tabBarPosition, l = n.direction, u = [], f = this.renderTabBarNode || this.$scopedSlots.renderTabBarNode; return r.forEach((function (n, d) { if (n) { var p = Object(v["l"])(n), m = n.key, g = i === m ? o + "-tab-active" : ""; g += " " + o + "-tab"; var y = { on: {} }, b = p.disabled || "" === p.disabled; b ? g += " " + o + "-tab-disabled" : y.on.click = function () { e.__emit("tabClick", m) }; var x = []; i === m && x.push({ name: "ant-ref", value: s("activeTab") }); var w = Object(v["g"])(n, "tab"), _ = a && d === r.length - 1 ? 0 : a; _ = "number" === typeof _ ? _ + "px" : _; var C = "rtl" === l ? "marginLeft" : "marginRight", M = h()({}, Xc(c) ? "marginBottom" : C, _); ul()(void 0 !== w, "There must be `tab` property or slot on children of Tabs."); var O = t("div", K()([{ attrs: { role: "tab", "aria-disabled": b ? "true" : "false", "aria-selected": i === m ? "true" : "false" } }, y, { class: g, key: m, style: M }, { directives: x }]), [w]); f && (O = f(O)), u.push(O) } })), t("div", { directives: [{ name: "ant-ref", value: this.saveRef("navTabsContainer") }] }, [u]) } }; function dl() { } var pl = { name: "TabBarRootNode", mixins: [m["a"]], props: { saveRef: p["a"].func.def(dl), getRef: p["a"].func.def(dl), prefixCls: p["a"].string.def(""), tabBarPosition: p["a"].string.def("top"), extraContent: p["a"].any }, methods: { onKeyDown: function (e) { this.__emit("keydown", e) } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.onKeyDown, r = this.tabBarPosition, i = this.extraContent, o = h()({}, t + "-bar", !0), a = "top" === r || "bottom" === r, c = a ? { float: "right" } : {}, l = this.$slots["default"], u = l; return i && (u = [Object(en["a"])(i, { key: "extra", style: s()({}, c) }), Object(en["a"])(l, { key: "content" })], u = a ? u : u.reverse()), e("div", K()([{ attrs: { role: "tablist", tabIndex: "0" }, class: o, on: { keydown: n } }, { directives: [{ name: "ant-ref", value: this.saveRef("root") }] }]), [u]) } }, vl = n("6dd8"); function ml() { } var gl = { name: "ScrollableTabBarNode", mixins: [m["a"]], props: { activeKey: p["a"].any, getRef: p["a"].func.def((function () { })), saveRef: p["a"].func.def((function () { })), tabBarPosition: p["a"].oneOf(["left", "right", "top", "bottom"]).def("left"), prefixCls: p["a"].string.def(""), scrollAnimated: p["a"].bool.def(!0), navWrapper: p["a"].func.def((function (e) { return e })), prevIcon: p["a"].any, nextIcon: p["a"].any, direction: p["a"].string }, data: function () { return this.offset = 0, this.prevProps = s()({}, this.$props), { next: !1, prev: !1 } }, watch: { tabBarPosition: function () { var e = this; this.tabBarPositionChange = !0, this.$nextTick((function () { e.setOffset(0) })) } }, mounted: function () { var e = this; this.$nextTick((function () { e.updatedCal(), e.debouncedResize = Oc()((function () { e.setNextPrev(), e.scrollToActiveTab() }), 200), e.resizeObserver = new vl["a"](e.debouncedResize), e.resizeObserver.observe(e.$props.getRef("container")) })) }, updated: function () { var e = this; this.$nextTick((function () { e.updatedCal(e.prevProps), e.prevProps = s()({}, e.$props) })) }, beforeDestroy: function () { this.resizeObserver && this.resizeObserver.disconnect(), this.debouncedResize && this.debouncedResize.cancel && this.debouncedResize.cancel() }, methods: { updatedCal: function (e) { var t = this, n = this.$props; e && e.tabBarPosition !== n.tabBarPosition ? this.setOffset(0) : this.isNextPrevShown(this.$data) !== this.isNextPrevShown(this.setNextPrev()) ? (this.$forceUpdate(), this.$nextTick((function () { t.scrollToActiveTab() }))) : e && n.activeKey === e.activeKey || this.scrollToActiveTab() }, setNextPrev: function () { var e = this.$props.getRef("nav"), t = this.$props.getRef("navTabsContainer"), n = this.getScrollWH(t || e), r = this.getOffsetWH(this.$props.getRef("container")) + 1, i = this.getOffsetWH(this.$props.getRef("navWrap")), o = this.offset, a = r - n, s = this.next, c = this.prev; if (a >= 0) s = !1, this.setOffset(0, !1), o = 0; else if (a < o) s = !0; else { s = !1; var l = i - n; this.setOffset(l, !1), o = l } return c = o < 0, this.setNext(s), this.setPrev(c), { next: s, prev: c } }, getOffsetWH: function (e) { var t = this.$props.tabBarPosition, n = "offsetWidth"; return "left" !== t && "right" !== t || (n = "offsetHeight"), e[n] }, getScrollWH: function (e) { var t = this.tabBarPosition, n = "scrollWidth"; return "left" !== t && "right" !== t || (n = "scrollHeight"), e[n] }, getOffsetLT: function (e) { var t = this.$props.tabBarPosition, n = "left"; return "left" !== t && "right" !== t || (n = "top"), e.getBoundingClientRect()[n] }, setOffset: function (e) { var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], n = Math.min(0, e); if (this.offset !== n) { this.offset = n; var r = {}, i = this.$props.tabBarPosition, o = this.$props.getRef("nav").style, a = Kc(o); "left" === i || "right" === i ? r = a ? { value: "translate3d(0," + n + "px,0)" } : { name: "top", value: n + "px" } : a ? ("rtl" === this.$props.direction && (n = -n), r = { value: "translate3d(" + n + "px,0,0)" }) : r = { name: "left", value: n + "px" }, a ? Uc(o, r.value) : o[r.name] = r.value, t && this.setNextPrev() } }, setPrev: function (e) { this.prev !== e && (this.prev = e) }, setNext: function (e) { this.next !== e && (this.next = e) }, isNextPrevShown: function (e) { return e ? e.next || e.prev : this.next || this.prev }, prevTransitionEnd: function (e) { if ("opacity" === e.propertyName) { var t = this.$props.getRef("container"); this.scrollToActiveTab({ target: t, currentTarget: t }) } }, scrollToActiveTab: function (e) { var t = this.$props.getRef("activeTab"), n = this.$props.getRef("navWrap"); if ((!e || e.target === e.currentTarget) && t) { var r = this.isNextPrevShown() && this.lastNextPrevShown; if (this.lastNextPrevShown = this.isNextPrevShown(), r) { var i = this.getScrollWH(t), o = this.getOffsetWH(n), a = this.offset, s = this.getOffsetLT(n), c = this.getOffsetLT(t); s > c ? (a += s - c, this.setOffset(a)) : s + o < c + i && (a -= c + i - (s + o), this.setOffset(a)) } } }, prevClick: function (e) { this.__emit("prevClick", e); var t = this.$props.getRef("navWrap"), n = this.getOffsetWH(t), r = this.offset; this.setOffset(r + n) }, nextClick: function (e) { this.__emit("nextClick", e); var t = this.$props.getRef("navWrap"), n = this.getOffsetWH(t), r = this.offset; this.setOffset(r - n) } }, render: function () { var e, t, n, r, i = arguments[0], o = this.next, a = this.prev, s = this.$props, c = s.prefixCls, l = s.scrollAnimated, u = s.navWrapper, f = Object(v["g"])(this, "prevIcon"), d = Object(v["g"])(this, "nextIcon"), p = a || o, m = i("span", { on: { click: a ? this.prevClick : ml, transitionend: this.prevTransitionEnd }, attrs: { unselectable: "unselectable" }, class: (e = {}, h()(e, c + "-tab-prev", 1), h()(e, c + "-tab-btn-disabled", !a), h()(e, c + "-tab-arrow-show", p), e) }, [f || i("span", { class: c + "-tab-prev-icon" })]), g = i("span", { on: { click: o ? this.nextClick : ml }, attrs: { unselectable: "unselectable" }, class: (t = {}, h()(t, c + "-tab-next", 1), h()(t, c + "-tab-btn-disabled", !o), h()(t, c + "-tab-arrow-show", p), t) }, [d || i("span", { class: c + "-tab-next-icon" })]), y = c + "-nav", b = (n = {}, h()(n, y, !0), h()(n, l ? y + "-animated" : y + "-no-animated", !0), n); return i("div", K()([{ class: (r = {}, h()(r, c + "-nav-container", 1), h()(r, c + "-nav-container-scrolling", p), r), key: "container" }, { directives: [{ name: "ant-ref", value: this.saveRef("container") }] }]), [m, g, i("div", K()([{ class: c + "-nav-wrap" }, { directives: [{ name: "ant-ref", value: this.saveRef("navWrap") }] }]), [i("div", { class: c + "-nav-scroll" }, [i("div", K()([{ class: b }, { directives: [{ name: "ant-ref", value: this.saveRef("nav") }] }]), [u(this.$slots["default"])])])])]) } }, yl = { props: { children: p["a"].func.def((function () { return null })) }, methods: { getRef: function (e) { return this[e] }, saveRef: function (e) { var t = this; return function (n) { n && (t[e] = n) } } }, render: function () { var e = this, t = function (t) { return e.saveRef(t) }, n = function (t) { return e.getRef(t) }; return this.children(t, n) } }, bl = { name: "ScrollableInkTabBar", inheritAttrs: !1, props: ["extraContent", "inkBarAnimated", "tabBarGutter", "prefixCls", "navWrapper", "tabBarPosition", "panels", "activeKey", "prevIcon", "nextIcon"], render: function () { var e = arguments[0], t = s()({}, this.$props), n = Object(v["k"])(this), r = this.$scopedSlots["default"]; return e(yl, { attrs: { children: function (i, o) { return e(pl, K()([{ attrs: { saveRef: i } }, { props: t, on: n }]), [e(gl, K()([{ attrs: { saveRef: i, getRef: o } }, { props: t, on: n }]), [e(fl, K()([{ attrs: { saveRef: i } }, { props: s()({}, t, { renderTabBarNode: r }), on: n }])), e(cl, K()([{ attrs: { saveRef: i, getRef: o } }, { props: t, on: n }]))])]) } } }) } }, xl = { name: "TabBar", inheritAttrs: !1, props: { prefixCls: p["a"].string, tabBarStyle: p["a"].object, tabBarExtraContent: p["a"].any, type: p["a"].oneOf(["line", "card", "editable-card"]), tabPosition: p["a"].oneOf(["top", "right", "bottom", "left"]).def("top"), tabBarPosition: p["a"].oneOf(["top", "right", "bottom", "left"]), size: p["a"].oneOf(["default", "small", "large"]), animated: p["a"].oneOfType([p["a"].bool, p["a"].object]), renderTabBar: p["a"].func, panels: p["a"].array.def([]), activeKey: p["a"].oneOfType([p["a"].string, p["a"].number]), tabBarGutter: p["a"].number }, render: function () { var e, t = arguments[0], n = this.$props, r = n.tabBarStyle, i = n.animated, o = void 0 === i || i, a = n.renderTabBar, c = n.tabBarExtraContent, l = n.tabPosition, u = n.prefixCls, f = n.type, d = void 0 === f ? "line" : f, p = n.size, m = "object" === ("undefined" === typeof o ? "undefined" : Tt()(o)) ? o.inkBar : o, g = "left" === l || "right" === l, y = g ? "up" : "left", b = g ? "down" : "right", x = t("span", { class: u + "-tab-prev-icon" }, [t(Ve, { attrs: { type: y }, class: u + "-tab-prev-icon-target" })]), w = t("span", { class: u + "-tab-next-icon" }, [t(Ve, { attrs: { type: b }, class: u + "-tab-next-icon-target" })]), _ = (e = {}, h()(e, u + "-" + l + "-bar", !0), h()(e, u + "-" + p + "-bar", !!p), h()(e, u + "-card-bar", d && d.indexOf("card") >= 0), e), C = { props: s()({}, this.$props, this.$attrs, { inkBarAnimated: m, extraContent: c, prevIcon: x, nextIcon: w }), style: r, on: Object(v["k"])(this), class: _ }, M = void 0; return a ? (M = a(C, bl), Object(en["a"])(M, C)) : t(bl, C) } }, wl = xl, _l = { TabPane: Vc, name: "ATabs", model: { prop: "activeKey", event: "change" }, props: { prefixCls: p["a"].string, activeKey: p["a"].oneOfType([p["a"].string, p["a"].number]), defaultActiveKey: p["a"].oneOfType([p["a"].string, p["a"].number]), hideAdd: p["a"].bool.def(!1), tabBarStyle: p["a"].object, tabBarExtraContent: p["a"].any, destroyInactiveTabPane: p["a"].bool.def(!1), type: p["a"].oneOf(["line", "card", "editable-card"]), tabPosition: p["a"].oneOf(["top", "right", "bottom", "left"]).def("top"), size: p["a"].oneOf(["default", "small", "large"]), animated: p["a"].oneOfType([p["a"].bool, p["a"].object]), tabBarGutter: p["a"].number, renderTabBar: p["a"].func }, inject: { configProvider: { default: function () { return Vt } } }, mounted: function () { var e = " no-flex", t = this.$el; t && !al && -1 === t.className.indexOf(e) && (t.className += e) }, methods: { removeTab: function (e, t) { t.stopPropagation(), Rc(e) && this.$emit("edit", e, "remove") }, handleChange: function (e) { this.$emit("change", e) }, createNewTab: function (e) { this.$emit("edit", e, "add") }, onTabClick: function (e) { this.$emit("tabClick", e) }, onPrevClick: function (e) { this.$emit("prevClick", e) }, onNextClick: function (e) { this.$emit("nextClick", e) } }, render: function () { var e, t, n = this, r = arguments[0], i = Object(v["l"])(this), o = i.prefixCls, a = i.size, c = i.type, l = void 0 === c ? "line" : c, u = i.tabPosition, f = i.animated, d = void 0 === f || f, p = i.hideAdd, m = i.renderTabBar, g = this.configProvider.getPrefixCls, y = g("tabs", o), b = Object(v["c"])(this.$slots["default"]), x = Object(v["g"])(this, "tabBarExtraContent"), w = "object" === ("undefined" === typeof d ? "undefined" : Tt()(d)) ? d.tabPane : d; "line" !== l && (w = "animated" in i && w); var _ = (e = {}, h()(e, y + "-vertical", "left" === u || "right" === u), h()(e, y + "-" + a, !!a), h()(e, y + "-card", l.indexOf("card") >= 0), h()(e, y + "-" + l, !0), h()(e, y + "-no-animation", !w), e), C = []; "editable-card" === l && (C = [], b.forEach((function (e, t) { var i = Object(v["l"])(e), o = i.closable; o = "undefined" === typeof o || o; var a = o ? r(Ve, { attrs: { type: "close" }, class: y + "-close-x", on: { click: function (t) { return n.removeTab(e.key, t) } } }) : null; C.push(Object(en["a"])(e, { props: { tab: r("div", { class: o ? void 0 : y + "-tab-unclosable" }, [Object(v["g"])(e, "tab"), a]) }, key: e.key || t })) })), p || (x = r("span", [r(Ve, { attrs: { type: "plus" }, class: y + "-new-tab", on: { click: this.createNewTab } }), x]))), x = x ? r("div", { class: y + "-extra-content" }, [x]) : null; var M = m || this.$scopedSlots.renderTabBar, O = Object(v["k"])(this), k = { props: s()({}, this.$props, { prefixCls: y, tabBarExtraContent: x, renderTabBar: M }), on: O }, S = (t = {}, h()(t, y + "-" + u + "-content", !0), h()(t, y + "-card-content", l.indexOf("card") >= 0), t), T = { props: s()({}, Object(v["l"])(this), { prefixCls: y, tabBarPosition: u, renderTabBar: function () { return r(wl, K()([{ key: "tabBar" }, k])) }, renderTabContent: function () { return r(il, { class: S, attrs: { animated: w, animatedWithMargin: !0 } }) }, children: C.length > 0 ? C : b, __propsSymbol__: Symbol() }), on: s()({}, O, { change: this.handleChange }), class: _ }; return r(Bc, T) } }; _l.TabPane = s()({}, Vc, { name: "ATabPane", __ANT_TAB_PANE: !0 }), _l.TabContent = s()({}, il, { name: "ATabContent" }), d.a.use(_.a, { name: "ant-ref" }), _l.install = function (e) { e.use(N), e.component(_l.name, _l), e.component(_l.TabPane.name, _l.TabPane), e.component(_l.TabContent.name, _l.TabContent) }; var Cl = _l, Ml = (n("a1ff"), n("2ee9"), n("40cb"), n("078a"), n("9958"), n("1a3b"), n("44d2"), void n("7d8a")), Ol = void 0, kl = { position: "absolute", top: "-9999px", width: "50px", height: "50px" }, Sl = "RC_TABLE_INTERNAL_COL_DEFINE"; function Tl(e) { var t = e.direction, n = void 0 === t ? "vertical" : t, r = e.prefixCls; if ("undefined" === typeof document || "undefined" === typeof window) return 0; var i = "vertical" === n; if (i && Ml) return Ml; if (!i && Ol) return Ol; var o = document.createElement("div"); Object.keys(kl).forEach((function (e) { o.style[e] = kl[e] })), o.className = r + "-hide-scrollbar scroll-div-append-to-body", i ? o.style.overflowY = "scroll" : o.style.overflowX = "scroll", document.body.appendChild(o); var a = 0; return i ? (a = o.offsetWidth - o.clientWidth, Ml = a) : (a = o.offsetHeight - o.clientHeight, Ol = a), document.body.removeChild(o), a } function Al(e, t, n) { var r = void 0; function i() { for (var i = arguments.length, o = Array(i), a = 0; a < i; a++)o[a] = arguments[a]; var s = this; o[0] && o[0].persist && o[0].persist(); var c = function () { r = null, n || e.apply(s, o) }, l = n && !r; clearTimeout(r), r = setTimeout(c, t), l && e.apply(s, o) } return i.cancel = function () { r && (clearTimeout(r), r = null) }, i } function Ll(e, t) { var n = e.indexOf(t), r = e.slice(0, n), i = e.slice(n + 1, e.length); return r.concat(i) } var jl = n("42454"), zl = n.n(jl), El = n("3c55"), Pl = n.n(El), Dl = n("8827"), Hl = n.n(Dl), Vl = n("57ba"), Il = n.n(Vl), Nl = function () { function e(t) { Hl()(this, e), this.columns = t, this._cached = {} } return Il()(e, [{ key: "isAnyColumnsFixed", value: function () { var e = this; return this._cache("isAnyColumnsFixed", (function () { return e.columns.some((function (e) { return !!e.fixed })) })) } }, { key: "isAnyColumnsLeftFixed", value: function () { var e = this; return this._cache("isAnyColumnsLeftFixed", (function () { return e.columns.some((function (e) { return "left" === e.fixed || !0 === e.fixed })) })) } }, { key: "isAnyColumnsRightFixed", value: function () { var e = this; return this._cache("isAnyColumnsRightFixed", (function () { return e.columns.some((function (e) { return "right" === e.fixed })) })) } }, { key: "leftColumns", value: function () { var e = this; return this._cache("leftColumns", (function () { return e.groupedColumns().filter((function (e) { return "left" === e.fixed || !0 === e.fixed })) })) } }, { key: "rightColumns", value: function () { var e = this; return this._cache("rightColumns", (function () { return e.groupedColumns().filter((function (e) { return "right" === e.fixed })) })) } }, { key: "leafColumns", value: function () { var e = this; return this._cache("leafColumns", (function () { return e._leafColumns(e.columns) })) } }, { key: "leftLeafColumns", value: function () { var e = this; return this._cache("leftLeafColumns", (function () { return e._leafColumns(e.leftColumns()) })) } }, { key: "rightLeafColumns", value: function () { var e = this; return this._cache("rightLeafColumns", (function () { return e._leafColumns(e.rightColumns()) })) } }, { key: "groupedColumns", value: function () { var e = this; return this._cache("groupedColumns", (function () { var t = function e(t) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : []; i[n] = i[n] || []; var o = [], a = function (e) { var t = i.length - n; e && !e.children && t > 1 && (!e.rowSpan || e.rowSpan < t) && (e.rowSpan = t) }; return t.forEach((function (c, l) { var u = s()({}, c); i[n].push(u), r.colSpan = r.colSpan || 0, u.children && u.children.length > 0 ? (u.children = e(u.children, n + 1, u, i), r.colSpan += u.colSpan) : r.colSpan += 1; for (var h = 0; h < i[n].length - 1; h += 1)a(i[n][h]); l + 1 === t.length && a(u), o.push(u) })), o }; return t(e.columns) })) } }, { key: "reset", value: function (e) { this.columns = e, this._cached = {} } }, { key: "_cache", value: function (e, t) { return e in this._cached || (this._cached[e] = t()), this._cached[e] } }, { key: "_leafColumns", value: function (e) { var t = this, n = []; return e.forEach((function (e) { e.children ? n.push.apply(n, X()(t._leafColumns(e.children))) : n.push(e) })), n } }]), e }(), Rl = Nl, Fl = { name: "ColGroup", props: { fixed: p["a"].string, columns: p["a"].array }, inject: { table: { default: function () { return {} } } }, render: function () { var e = arguments[0], t = this.fixed, n = this.table, r = n.prefixCls, i = n.expandIconAsCell, o = n.columnManager, a = []; i && "right" !== t && a.push(e("col", { class: r + "-expand-icon-col", key: "rc-table-expand-icon-col" })); var s = void 0; return s = "left" === t ? o.leftLeafColumns() : "right" === t ? o.rightLeafColumns() : o.leafColumns(), a = a.concat(s.map((function (t) { var n = t.key, r = t.dataIndex, i = t.width, o = t[Sl], a = void 0 !== n ? n : r, s = "number" === typeof i ? i + "px" : i; return e("col", K()([{ key: a, style: { width: s, minWidth: s } }, o])) }))), e("colgroup", [a]) } }, Yl = { inject: { store: { from: "table-store", default: function () { return {} } } }, props: { index: p["a"].number, fixed: p["a"].string, columns: p["a"].array, rows: p["a"].array, row: p["a"].array, components: p["a"].object, customHeaderRow: p["a"].func, prefixCls: p["a"].string }, name: "TableHeaderRow", computed: { height: function () { var e = this.store.fixedColumnsHeadRowsHeight, t = this.$props, n = t.columns, r = t.rows, i = t.fixed, o = e[0]; return i && o && n ? "auto" === o ? "auto" : o / r.length + "px" : null } }, render: function (e) { var t = this.row, n = this.index, r = this.height, i = this.components, o = this.customHeaderRow, a = this.prefixCls, c = i.header.row, u = i.header.cell, f = o(t.map((function (e) { return e.column })), n), d = f ? f.style : {}, p = s()({ height: r }, d); return null === p.height && delete p.height, e(c, K()([f, { style: p }]), [t.map((function (t, n) { var r, i = t.column, o = t.isLast, c = t.children, f = (t.className, l()(t, ["column", "isLast", "children", "className"])), d = i.customHeaderCell ? i.customHeaderCell(i) : {}, p = Object(v["w"])({ attrs: s()({}, f) }, s()({}, d, { key: i.key || i.dataIndex || n })); return i.align && (p.style = s()({}, d.style, { textAlign: i.align })), p["class"] = Q()(d["class"], d.className, i["class"], i.className, (r = {}, h()(r, a + "-align-" + i.align, !!i.align), h()(r, a + "-row-cell-ellipsis", !!i.ellipsis), h()(r, a + "-row-cell-break-word", !!i.width), h()(r, a + "-row-cell-last", o), r)), "function" === typeof u ? u(e, p, c) : e(u, p, [c]) }))]) } }, $l = Yl; function Bl(e) { var t = e.columns, n = void 0 === t ? [] : t, r = e.currentRow, i = void 0 === r ? 0 : r, o = e.rows, a = void 0 === o ? [] : o, s = e.isLast, c = void 0 === s || s; return a = a || [], a[i] = a[i] || [], n.forEach((function (e, t) { if (e.rowSpan && a.length < e.rowSpan) while (a.length < e.rowSpan) a.push([]); var r = c && t === n.length - 1, o = { key: e.key, className: e.className || e["class"] || "", children: e.title, isLast: r, column: e }; e.children && Bl({ columns: e.children, currentRow: i + 1, rows: a, isLast: r }), "colSpan" in e && (o.colSpan = e.colSpan), "rowSpan" in e && (o.rowSpan = e.rowSpan), 0 !== o.colSpan && a[i].push(o) })), a.filter((function (e) { return e.length > 0 })) } var Wl = { name: "TableHeader", props: { fixed: p["a"].string, columns: p["a"].array.isRequired, expander: p["a"].object.isRequired }, inject: { table: { default: function () { return {} } } }, render: function () { var e = arguments[0], t = this.table, n = t.sComponents, r = t.prefixCls, i = t.showHeader, o = t.customHeaderRow, a = this.expander, s = this.columns, c = this.fixed; if (!i) return null; var l = Bl({ columns: s }); a.renderExpandIndentCell(l, c); var u = n.header.wrapper; return e(u, { class: r + "-thead" }, [l.map((function (t, i) { return e($l, { attrs: { prefixCls: r, index: i, fixed: c, columns: s, rows: l, row: t, components: n, customHeaderRow: o }, key: i }) }))]) } }, ql = n("9b02"), Ul = n.n(ql); function Kl(e) { return e && !Object(v["v"])(e) && "[object Object]" === Object.prototype.toString.call(e) } var Gl = { name: "TableCell", props: { record: p["a"].object, prefixCls: p["a"].string, index: p["a"].number, indent: p["a"].number, indentSize: p["a"].number, column: p["a"].object, expandIcon: p["a"].any, component: p["a"].any }, inject: { table: { default: function () { return {} } } }, methods: { handleClick: function (e) { var t = this.record, n = this.column.onCellClick; n && n(t, e) } }, render: function () { var e, t = arguments[0], n = this.record, r = this.indentSize, i = this.prefixCls, o = this.indent, a = this.index, c = this.expandIcon, l = this.column, u = this.component, f = l.dataIndex, d = l.customRender, p = l.className, m = void 0 === p ? "" : p, g = this.table.transformCellText, y = void 0; y = "number" === typeof f || f && 0 !== f.length ? Ul()(n, f) : n; var b = { props: {}, attrs: {}, on: { click: this.handleClick } }, x = void 0, w = void 0; d && (y = d(y, n, a, l), Kl(y) && (b.attrs = y.attrs || {}, b.props = y.props || {}, b["class"] = y["class"], b.style = y.style, x = b.attrs.colSpan, w = b.attrs.rowSpan, y = y.children)), l.customCell && (b = Object(v["w"])(b, l.customCell(n, a))), Kl(y) && (y = null), g && (y = g({ text: y, column: l, record: n, index: a })); var _ = c ? t("span", { style: { paddingLeft: r * o + "px" }, class: i + "-indent indent-level-" + o }) : null; if (0 === w || 0 === x) return null; l.align && (b.style = s()({ textAlign: l.align }, b.style)); var C = Q()(m, l["class"], (e = {}, h()(e, i + "-cell-ellipsis", !!l.ellipsis), h()(e, i + "-cell-break-word", !!l.width), e)); return l.ellipsis && "string" === typeof y && (b.attrs.title = y), t(u, K()([{ class: C }, b]), [_, c, y]) } }; function Xl() { } var Jl = { name: "TableRow", mixins: [m["a"]], inject: { store: { from: "table-store", default: function () { return {} } } }, props: Object(v["t"])({ customRow: p["a"].func, record: p["a"].object, prefixCls: p["a"].string, columns: p["a"].array, index: p["a"].number, rowKey: p["a"].oneOfType([p["a"].string, p["a"].number]).isRequired, className: p["a"].string, indent: p["a"].number, indentSize: p["a"].number, hasExpandIcon: p["a"].func, fixed: p["a"].oneOfType([p["a"].string, p["a"].bool]), renderExpandIcon: p["a"].func, renderExpandIconCell: p["a"].func, components: p["a"].any, expandedRow: p["a"].bool, isAnyColumnsFixed: p["a"].bool, ancestorKeys: p["a"].array.isRequired, expandIconColumnIndex: p["a"].number, expandRowByClick: p["a"].bool }, { hasExpandIcon: function () { }, renderExpandIcon: function () { }, renderExpandIconCell: function () { } }), computed: { visible: function () { var e = this.store.expandedRowKeys, t = this.$props.ancestorKeys; return !(0 !== t.length && !t.every((function (t) { return e.includes(t) }))) }, height: function () { var e = this.store, t = e.expandedRowsHeight, n = e.fixedColumnsBodyRowsHeight, r = this.$props, i = r.fixed, o = r.rowKey; return i ? t[o] ? t[o] : n[o] ? n[o] : null : null }, hovered: function () { var e = this.store.currentHoverKey, t = this.$props.rowKey; return e === t } }, data: function () { return { shouldRender: this.visible } }, mounted: function () { var e = this; this.shouldRender && this.$nextTick((function () { e.saveRowRef() })) }, watch: { visible: { handler: function (e) { e && (this.shouldRender = !0) }, immediate: !0 } }, updated: function () { var e = this; this.shouldRender && !this.rowRef && this.$nextTick((function () { e.saveRowRef() })) }, methods: { onRowClick: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Xl, n = this.record, r = this.index; this.__emit("rowClick", n, r, e), t(e) }, onRowDoubleClick: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Xl, n = this.record, r = this.index; this.__emit("rowDoubleClick", n, r, e), t(e) }, onContextMenu: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Xl, n = this.record, r = this.index; this.__emit("rowContextmenu", n, r, e), t(e) }, onMouseEnter: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Xl, n = this.record, r = this.index, i = this.rowKey; this.__emit("hover", !0, i), this.__emit("rowMouseenter", n, r, e), t(e) }, onMouseLeave: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Xl, n = this.record, r = this.index, i = this.rowKey; this.__emit("hover", !1, i), this.__emit("rowMouseleave", n, r, e), t(e) }, setExpandedRowHeight: function () { var e = this.store, t = this.rowKey, n = e.expandedRowsHeight, r = this.rowRef.getBoundingClientRect().height; n = s()({}, n, h()({}, t, r)), e.expandedRowsHeight = n }, setRowHeight: function () { var e = this.store, t = this.rowKey, n = e.fixedColumnsBodyRowsHeight, r = this.rowRef.getBoundingClientRect().height; e.fixedColumnsBodyRowsHeight = s()({}, n, h()({}, t, r)) }, getStyle: function () { var e = this.height, t = this.visible, n = Object(v["q"])(this); return e && (n = s()({}, n, { height: e })), t || n.display || (n = s()({}, n, { display: "none" })), n }, saveRowRef: function () { this.rowRef = this.$el; var e = this.isAnyColumnsFixed, t = this.fixed, n = this.expandedRow, r = this.ancestorKeys; e && (!t && n && this.setExpandedRowHeight(), !t && r.length >= 0 && this.setRowHeight()) } }, render: function () { var e = this, t = arguments[0]; if (!this.shouldRender) return null; var n = this.prefixCls, r = this.columns, i = this.record, o = this.rowKey, a = this.index, c = this.customRow, u = void 0 === c ? Xl : c, h = this.indent, f = this.indentSize, d = this.hovered, p = this.height, m = this.visible, g = this.components, y = this.hasExpandIcon, b = this.renderExpandIcon, x = this.renderExpandIconCell, w = g.body.row, _ = g.body.cell, C = ""; d && (C += " " + n + "-hover"); var M = []; x(M); for (var O = 0; O < r.length; O += 1) { var k = r[O]; fe(void 0 === k.onCellClick, "column[onCellClick] is deprecated, please use column[customCell] instead."), M.push(t(Gl, { attrs: { prefixCls: n, record: i, indentSize: f, indent: h, index: a, column: k, expandIcon: y(O) && b(), component: _ }, key: k.key || k.dataIndex })) } var S = u(i, a) || {}, T = S["class"], A = S.className, L = S.style, j = l()(S, ["class", "className", "style"]), z = { height: "number" === typeof p ? p + "px" : p }; m || (z.display = "none"), z = s()({}, z, L); var E = Q()(n, C, n + "-level-" + h, A, T), P = j.on || {}, D = Object(v["w"])(s()({}, j, { style: z }), { on: { click: function (t) { e.onRowClick(t, P.click) }, dblclick: function (t) { e.onRowDoubleClick(t, P.dblclick) }, mouseenter: function (t) { e.onMouseEnter(t, P.mouseenter) }, mouseleave: function (t) { e.onMouseLeave(t, P.mouseleave) }, contextmenu: function (t) { e.onContextMenu(t, P.contextmenu) } }, class: E }, { attrs: { "data-row-key": o } }); return t(w, D, [M]) } }, Ql = Jl, Zl = { name: "ExpandIcon", mixins: [m["a"]], props: { record: p["a"].object, prefixCls: p["a"].string, expandable: p["a"].any, expanded: p["a"].bool, needIndentSpaced: p["a"].bool }, methods: { onExpand: function (e) { this.__emit("expand", this.record, e) } }, render: function () { var e = arguments[0], t = this.expandable, n = this.prefixCls, r = this.onExpand, i = this.needIndentSpaced, o = this.expanded; if (t) { var a = o ? "expanded" : "collapsed"; return e("span", { class: n + "-expand-icon " + n + "-" + a, on: { click: r } }) } return i ? e("span", { class: n + "-expand-icon " + n + "-spaced" }) : null } }, eu = { mixins: [m["a"]], name: "ExpandableRow", props: { prefixCls: p["a"].string.isRequired, rowKey: p["a"].oneOfType([p["a"].string, p["a"].number]).isRequired, fixed: p["a"].oneOfType([p["a"].string, p["a"].bool]), record: p["a"].oneOfType([p["a"].object, p["a"].array]).isRequired, indentSize: p["a"].number, needIndentSpaced: p["a"].bool.isRequired, expandRowByClick: p["a"].bool, expandIconAsCell: p["a"].bool, expandIconColumnIndex: p["a"].number, childrenColumnName: p["a"].string, expandedRowRender: p["a"].func, expandIcon: p["a"].func }, inject: { store: { from: "table-store", default: function () { return {} } } }, computed: { expanded: function () { return this.store.expandedRowKeys.includes(this.$props.rowKey) } }, beforeDestroy: function () { this.handleDestroy() }, methods: { hasExpandIcon: function (e) { var t = this.$props, n = t.expandRowByClick, r = t.expandIcon; return !this.tempExpandIconAsCell && e === this.tempExpandIconColumnIndex && (!!r || !n) }, handleExpandChange: function (e, t) { var n = this.expanded, r = this.rowKey; this.__emit("expandedChange", !n, e, t, r) }, handleDestroy: function () { var e = this.rowKey, t = this.record; this.__emit("expandedChange", !1, t, null, e, !0) }, handleRowClick: function (e, t, n) { var r = this.expandRowByClick; r && this.handleExpandChange(e, n), this.__emit("rowClick", e, t, n) }, renderExpandIcon: function () { var e = this.$createElement, t = this.prefixCls, n = this.expanded, r = this.record, i = this.needIndentSpaced, o = this.expandIcon; return o ? o({ prefixCls: t, expanded: n, record: r, needIndentSpaced: i, expandable: this.expandable, onExpand: this.handleExpandChange }) : e(Zl, { attrs: { expandable: this.expandable, prefixCls: t, needIndentSpaced: i, expanded: n, record: r }, on: { expand: this.handleExpandChange } }) }, renderExpandIconCell: function (e) { var t = this.$createElement; if (this.tempExpandIconAsCell) { var n = this.prefixCls; e.push(t("td", { class: n + "-expand-icon-cell", key: "rc-table-expand-icon-cell" }, [this.renderExpandIcon()])) } } }, render: function () { var e = this.childrenColumnName, t = this.expandedRowRender, n = this.indentSize, r = this.record, i = this.fixed, o = this.$scopedSlots, a = this.expanded; this.tempExpandIconAsCell = "right" !== i && this.expandIconAsCell, this.tempExpandIconColumnIndex = "right" !== i ? this.expandIconColumnIndex : -1; var s = r[e]; this.expandable = !(!s && !t); var c = { props: { indentSize: n, expanded: a, hasExpandIcon: this.hasExpandIcon, renderExpandIcon: this.renderExpandIcon, renderExpandIconCell: this.renderExpandIconCell }, on: { rowClick: this.handleRowClick } }; return o["default"] && o["default"](c) } }, tu = eu; function nu() { } var ru = { name: "BaseTable", props: { fixed: p["a"].oneOfType([p["a"].string, p["a"].bool]), columns: p["a"].array.isRequired, tableClassName: p["a"].string.isRequired, hasHead: p["a"].bool.isRequired, hasBody: p["a"].bool.isRequired, expander: p["a"].object.isRequired, getRowKey: p["a"].func, isAnyColumnsFixed: p["a"].bool }, inject: { table: { default: function () { return {} } }, store: { from: "table-store", default: function () { return {} } } }, methods: { getColumns: function (e) { var t = this.$props, n = t.columns, r = void 0 === n ? [] : n, i = t.fixed, o = this.table, a = o.$props.prefixCls; return (e || r).map((function (e) { return s()({}, e, { className: e.fixed && !i ? Q()(a + "-fixed-columns-in-body", e.className || e["class"]) : e.className || e["class"] }) })) }, handleRowHover: function (e, t) { this.store.currentHoverKey = e ? t : null }, renderRows: function (e, t) { for (var n = this, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [], i = this.$createElement, o = this.table, a = o.columnManager, c = o.sComponents, l = o.prefixCls, u = o.childrenColumnName, h = o.rowClassName, f = o.customRow, d = void 0 === f ? nu : f, p = Object(v["k"])(this.table), m = p.rowClick, g = void 0 === m ? nu : m, y = p.rowDoubleclick, b = void 0 === y ? nu : y, x = p.rowContextmenu, w = void 0 === x ? nu : x, _ = p.rowMouseenter, C = void 0 === _ ? nu : _, M = p.rowMouseleave, O = void 0 === M ? nu : M, k = this.getRowKey, S = this.fixed, T = this.expander, A = this.isAnyColumnsFixed, L = [], j = function (o) { var f = e[o], p = k(f, o), m = "string" === typeof h ? h : h(f, o, t), y = {}; a.isAnyColumnsFixed() && (y.hover = n.handleRowHover); var x = void 0; x = "left" === S ? a.leftLeafColumns() : "right" === S ? a.rightLeafColumns() : n.getColumns(a.leafColumns()); var _ = l + "-row", M = { props: s()({}, T.props, { fixed: S, index: o, prefixCls: _, record: f, rowKey: p, needIndentSpaced: T.needIndentSpaced }), key: p, on: { rowClick: g, expandedChange: T.handleExpandChange }, scopedSlots: { default: function (e) { var n = Object(v["w"])({ props: { fixed: S, indent: t, record: f, index: o, prefixCls: _, childrenColumnName: u, columns: x, rowKey: p, ancestorKeys: r, components: c, isAnyColumnsFixed: A, customRow: d }, on: s()({ rowDoubleclick: b, rowContextmenu: w, rowMouseenter: C, rowMouseleave: O }, y), class: m, ref: "row_" + o + "_" + t }, e); return i(Ql, n) } } }, j = i(tu, M); L.push(j), T.renderRows(n.renderRows, L, f, o, t, S, p, r) }, z = 0; z < e.length; z += 1)j(z); return L } }, render: function () { var e = arguments[0], t = this.table, n = t.sComponents, r = t.prefixCls, i = t.scroll, o = t.data, a = t.getBodyWrapper, s = this.$props, c = s.expander, l = s.tableClassName, u = s.hasHead, h = s.hasBody, f = s.fixed, d = s.isAnyColumnsFixed, p = this.getColumns(), v = {}; if (!f && i.x) { var m = d ? "max-content" : "auto"; v.width = !0 === i.x ? m : i.x, v.width = "number" === typeof v.width ? v.width + "px" : v.width } if (f) { var g = p.reduce((function (e, t) { var n = t.width; return e + parseFloat(n, 10) }), 0); g > 0 && (v.width = g + "px") } var y = h ? n.table : "table", b = n.body.wrapper, x = void 0; return h && (x = e(b, { class: r + "-tbody" }, [this.renderRows(o, 0)]), a && (x = a(x))), e(y, { class: l, style: v, key: "table" }, [e(Fl, { attrs: { columns: p, fixed: f } }), u && e(Wl, { attrs: { expander: c, columns: p, fixed: f } }), x]) } }, iu = ru, ou = { name: "HeadTable", props: { fixed: p["a"].oneOfType([p["a"].string, p["a"].bool]), columns: p["a"].array.isRequired, tableClassName: p["a"].string.isRequired, handleBodyScrollLeft: p["a"].func.isRequired, expander: p["a"].object.isRequired }, inject: { table: { default: function () { return {} } } }, render: function () { var e = arguments[0], t = this.columns, n = this.fixed, r = this.tableClassName, i = this.handleBodyScrollLeft, o = this.expander, a = this.table, s = a.prefixCls, c = a.scroll, l = a.showHeader, u = a.saveRef, f = a.useFixedHeader, d = {}, p = Tl({ direction: "vertical" }); if (c.y) { f = !0; var v = Tl({ direction: "horizontal", prefixCls: s }); v > 0 && !n && (d.marginBottom = "-" + v + "px", d.paddingBottom = "0px", d.minWidth = p + "px", d.overflowX = "scroll", d.overflowY = 0 === p ? "hidden" : "scroll") } return f && l ? e("div", K()([{ key: "headTable" }, { directives: [{ name: "ant-ref", value: n ? function () { } : u("headTable") }] }, { class: Q()(s + "-header", h()({}, s + "-hide-scrollbar", p > 0)), style: d, on: { scroll: i } }]), [e(iu, { attrs: { tableClassName: r, hasHead: !0, hasBody: !1, fixed: n, columns: t, expander: o } })]) : null } }, au = { name: "BodyTable", props: { fixed: p["a"].oneOfType([p["a"].string, p["a"].bool]), columns: p["a"].array.isRequired, tableClassName: p["a"].string.isRequired, handleBodyScroll: p["a"].func.isRequired, handleWheel: p["a"].func.isRequired, getRowKey: p["a"].func.isRequired, expander: p["a"].object.isRequired, isAnyColumnsFixed: p["a"].bool }, inject: { table: { default: function () { return {} } } }, render: function () { var e = arguments[0], t = this.table, n = t.prefixCls, r = t.scroll, i = this.columns, o = this.fixed, a = this.tableClassName, c = this.getRowKey, l = this.handleBodyScroll, u = this.handleWheel, h = this.expander, f = this.isAnyColumnsFixed, d = this.table, p = d.useFixedHeader, v = d.saveRef, m = s()({}, this.table.bodyStyle), g = {}; if ((r.x || o) && (m.overflowX = m.overflowX || "scroll", m.WebkitTransform = "translate3d (0, 0, 0)"), r.y) { var y = m.maxHeight || r.y; y = "number" === typeof y ? y + "px" : y, o ? (g.maxHeight = y, g.overflowY = m.overflowY || "scroll") : m.maxHeight = y, m.overflowY = m.overflowY || "scroll", p = !0; var b = Tl({ direction: "vertical" }); b > 0 && o && (m.marginBottom = "-" + b + "px", m.paddingBottom = "0px") } var x = e(iu, { attrs: { tableClassName: a, hasHead: !p, hasBody: !0, fixed: o, columns: i, expander: h, getRowKey: c, isAnyColumnsFixed: f } }); if (o && i.length) { var w = void 0; return "left" === i[0].fixed || !0 === i[0].fixed ? w = "fixedColumnsBodyLeft" : "right" === i[0].fixed && (w = "fixedColumnsBodyRight"), delete m.overflowX, delete m.overflowY, e("div", { key: "bodyTable", class: n + "-body-outer", style: s()({}, m) }, [e("div", K()([{ class: n + "-body-inner", style: g }, { directives: [{ name: "ant-ref", value: v(w) }] }, { on: { wheel: u, scroll: l } }]), [x])]) } var _ = r && (r.x || r.y); return e("div", K()([{ attrs: { tabIndex: _ ? -1 : void 0 }, key: "bodyTable", class: n + "-body", style: m }, { directives: [{ name: "ant-ref", value: v("bodyTable") }] }, { on: { wheel: u, scroll: l } }]), [x]) } }, su = function () { return { expandIconAsCell: p["a"].bool, expandRowByClick: p["a"].bool, expandedRowKeys: p["a"].array, expandedRowClassName: p["a"].func, defaultExpandAllRows: p["a"].bool, defaultExpandedRowKeys: p["a"].array, expandIconColumnIndex: p["a"].number, expandedRowRender: p["a"].func, expandIcon: p["a"].func, childrenColumnName: p["a"].string, indentSize: p["a"].number, columnManager: p["a"].object.isRequired, prefixCls: p["a"].string.isRequired, data: p["a"].array, getRowKey: p["a"].func } }, cu = { name: "ExpandableTable", mixins: [m["a"]], props: Object(v["t"])(su(), { expandIconAsCell: !1, expandedRowClassName: function () { return "" }, expandIconColumnIndex: 0, defaultExpandAllRows: !1, defaultExpandedRowKeys: [], childrenColumnName: "children", indentSize: 15 }), inject: { store: { from: "table-store", default: function () { return {} } } }, data: function () { var e = this.data, t = this.childrenColumnName, n = this.defaultExpandAllRows, r = this.expandedRowKeys, i = this.defaultExpandedRowKeys, o = this.getRowKey, a = [], s = [].concat(X()(e)); if (n) for (var c = 0; c < s.length; c += 1) { var l = s[c]; a.push(o(l, c)), s = s.concat(l[t] || []) } else a = r || i; return this.store.expandedRowsHeight = {}, this.store.expandedRowKeys = a, {} }, mounted: function () { this.handleUpdated() }, updated: function () { this.handleUpdated() }, watch: { expandedRowKeys: function (e) { var t = this; this.$nextTick((function () { t.store.expandedRowKeys = e })) } }, methods: { handleUpdated: function () { this.latestExpandedRows = null }, handleExpandChange: function (e, t, n, r) { var i = arguments.length > 4 && void 0 !== arguments[4] && arguments[4]; n && (n.preventDefault(), n.stopPropagation()); var o = this.store.expandedRowKeys; if (e) o = [].concat(X()(o), [r]); else { var a = o.indexOf(r); -1 !== a && (o = Ll(o, r)) } this.expandedRowKeys || (this.store.expandedRowKeys = o), this.latestExpandedRows && Ns()(this.latestExpandedRows, o) || (this.latestExpandedRows = o, this.__emit("expandedRowsChange", o)), i || this.__emit("expand", e, t) }, renderExpandIndentCell: function (e, t) { var n = this.prefixCls, r = this.expandIconAsCell; if (r && "right" !== t && e.length) { var i = { key: "rc-table-expand-icon-cell", className: n + "-expand-icon-th", title: "", rowSpan: e.length }; e[0].unshift(s()({}, i, { column: i })) } }, renderExpandedRow: function (e, t, n, r, i, o, a) { var s = this, c = this.$createElement, l = this.prefixCls, u = this.expandIconAsCell, h = this.indentSize, f = i[i.length - 1], d = f + "-extra-row", p = { body: { row: "tr", cell: "td" } }, v = void 0; v = "left" === a ? this.columnManager.leftLeafColumns().length : "right" === a ? this.columnManager.rightLeafColumns().length : this.columnManager.leafColumns().length; var m = [{ key: "extra-row", customRender: function () { var r = s.store.expandedRowKeys, i = r.includes(f); return { attrs: { colSpan: v }, children: "right" !== a ? n(e, t, o, i) : "&nbsp;" } } }]; return u && "right" !== a && m.unshift({ key: "expand-icon-placeholder", customRender: function () { return null } }), c(Ql, { key: d, attrs: { columns: m, rowKey: d, ancestorKeys: i, prefixCls: l + "-expanded-row", indentSize: h, indent: o, fixed: a, components: p, expandedRow: !0, hasExpandIcon: function () { } }, class: r }) }, renderRows: function (e, t, n, r, i, o, a, s) { var c = this.expandedRowClassName, l = this.expandedRowRender, u = this.childrenColumnName, h = n[u], f = [].concat(X()(s), [a]), d = i + 1; l && t.push(this.renderExpandedRow(n, r, l, c(n, r, i), f, d, o)), h && t.push.apply(t, X()(e(h, d, f))) } }, render: function () { var e = this.data, t = this.childrenColumnName, n = this.$scopedSlots, r = Object(v["l"])(this), i = e.some((function (e) { return e[t] })); return n["default"] && n["default"]({ props: r, on: Object(v["k"])(this), needIndentSpaced: i, renderRows: this.renderRows, handleExpandChange: this.handleExpandChange, renderExpandIndentCell: this.renderExpandIndentCell }) } }, lu = cu, uu = { name: "Table", mixins: [m["a"]], provide: function () { return { "table-store": this.store, table: this } }, props: Object(v["t"])({ data: p["a"].array, useFixedHeader: p["a"].bool, columns: p["a"].array, prefixCls: p["a"].string, bodyStyle: p["a"].object, rowKey: p["a"].oneOfType([p["a"].string, p["a"].func]), rowClassName: p["a"].oneOfType([p["a"].string, p["a"].func]), customRow: p["a"].func, customHeaderRow: p["a"].func, showHeader: p["a"].bool, title: p["a"].func, id: p["a"].string, footer: p["a"].func, emptyText: p["a"].any, scroll: p["a"].object, rowRef: p["a"].func, getBodyWrapper: p["a"].func, components: p["a"].shape({ table: p["a"].any, header: p["a"].shape({ wrapper: p["a"].any, row: p["a"].any, cell: p["a"].any }), body: p["a"].shape({ wrapper: p["a"].any, row: p["a"].any, cell: p["a"].any }) }), expandIconAsCell: p["a"].bool, expandedRowKeys: p["a"].array, expandedRowClassName: p["a"].func, defaultExpandAllRows: p["a"].bool, defaultExpandedRowKeys: p["a"].array, expandIconColumnIndex: p["a"].number, expandedRowRender: p["a"].func, childrenColumnName: p["a"].string, indentSize: p["a"].number, expandRowByClick: p["a"].bool, expandIcon: p["a"].func, tableLayout: p["a"].string, transformCellText: p["a"].func }, { data: [], useFixedHeader: !1, rowKey: "key", rowClassName: function () { return "" }, prefixCls: "rc-table", bodyStyle: {}, showHeader: !0, scroll: {}, rowRef: function () { return null }, emptyText: function () { return "No Data" }, customHeaderRow: function () { } }), data: function () { return this.preData = [].concat(X()(this.data)), this.store = d.a.observable({ currentHoverKey: null, fixedColumnsHeadRowsHeight: [], fixedColumnsBodyRowsHeight: {}, expandedRowsHeight: {}, expandedRowKeys: [] }), { columnManager: new Rl(this.columns), sComponents: zl()({ table: "table", header: { wrapper: "thead", row: "tr", cell: "th" }, body: { wrapper: "tbody", row: "tr", cell: "td" } }, this.components) } }, watch: { components: function () { this._components = zl()({ table: "table", header: { wrapper: "thead", row: "tr", cell: "th" }, body: { wrapper: "tbody", row: "tr", cell: "td" } }, this.components) }, columns: function (e) { e && this.columnManager.reset(e) }, data: function (e) { var t = this; 0 === e.length && this.hasScrollX() && this.$nextTick((function () { t.resetScrollX() })) } }, created: function () { var e = this;["rowClick", "rowDoubleclick", "rowContextmenu", "rowMouseenter", "rowMouseleave"].forEach((function (t) { fe(void 0 === Object(v["k"])(e)[t], t + " is deprecated, please use customRow instead.") })), fe(void 0 === this.getBodyWrapper, "getBodyWrapper is deprecated, please use custom components instead."), this.setScrollPosition("left"), this.debouncedWindowResize = Al(this.handleWindowResize, 150) }, mounted: function () { var e = this; this.$nextTick((function () { e.columnManager.isAnyColumnsFixed() && (e.handleWindowResize(), e.resizeEvent = sn(window, "resize", e.debouncedWindowResize)), e.ref_headTable && (e.ref_headTable.scrollLeft = 0), e.ref_bodyTable && (e.ref_bodyTable.scrollLeft = 0) })) }, updated: function () { var e = this; this.$nextTick((function () { e.columnManager.isAnyColumnsFixed() && (e.handleWindowResize(), e.resizeEvent || (e.resizeEvent = sn(window, "resize", e.debouncedWindowResize))) })) }, beforeDestroy: function () { this.resizeEvent && this.resizeEvent.remove(), this.debouncedWindowResize && this.debouncedWindowResize.cancel() }, methods: { getRowKey: function (e, t) { var n = this.rowKey, r = "function" === typeof n ? n(e, t) : e[n]; return fe(void 0 !== r, "Each record in table should have a unique `key` prop,or set `rowKey` to an unique primary key."), void 0 === r ? t : r }, setScrollPosition: function (e) { if (this.scrollPosition = e, this.tableNode) { var t = this.prefixCls; "both" === e ? Pl()(this.tableNode).remove(new RegExp("^" + t + "-scroll-position-.+$")).add(t + "-scroll-position-left").add(t + "-scroll-position-right") : Pl()(this.tableNode).remove(new RegExp("^" + t + "-scroll-position-.+$")).add(t + "-scroll-position-" + e) } }, setScrollPositionClassName: function () { var e = this.ref_bodyTable, t = 0 === e.scrollLeft, n = e.scrollLeft + 1 >= e.children[0].getBoundingClientRect().width - e.getBoundingClientRect().width; t && n ? this.setScrollPosition("both") : t ? this.setScrollPosition("left") : n ? this.setScrollPosition("right") : "middle" !== this.scrollPosition && this.setScrollPosition("middle") }, isTableLayoutFixed: function () { var e = this.$props, t = e.tableLayout, n = e.columns, r = void 0 === n ? [] : n, i = e.useFixedHeader, o = e.scroll, a = void 0 === o ? {} : o; return "undefined" !== typeof t ? "fixed" === t : !!r.some((function (e) { var t = e.ellipsis; return !!t })) || !(!i && !a.y) || !(!a.x || !0 === a.x || "max-content" === a.x) }, handleWindowResize: function () { this.syncFixedTableRowHeight(), this.setScrollPositionClassName() }, syncFixedTableRowHeight: function () { var e = this.tableNode.getBoundingClientRect(); if (!(void 0 !== e.height && e.height <= 0)) { var t = this.prefixCls, n = this.ref_headTable ? this.ref_headTable.querySelectorAll("thead") : this.ref_bodyTable.querySelectorAll("thead"), r = this.ref_bodyTable.querySelectorAll("." + t + "-row") || [], i = [].map.call(n, (function (e) { return e.getBoundingClientRect().height ? e.getBoundingClientRect().height - .5 : "auto" })), o = this.store, a = [].reduce.call(r, (function (e, t) { var n = t.getAttribute("data-row-key"), r = t.getBoundingClientRect().height || o.fixedColumnsBodyRowsHeight[n] || "auto"; return e[n] = r, e }), {}); Ns()(o.fixedColumnsHeadRowsHeight, i) && Ns()(o.fixedColumnsBodyRowsHeight, a) || (this.store.fixedColumnsHeadRowsHeight = i, this.store.fixedColumnsBodyRowsHeight = a) } }, resetScrollX: function () { this.ref_headTable && (this.ref_headTable.scrollLeft = 0), this.ref_bodyTable && (this.ref_bodyTable.scrollLeft = 0) }, hasScrollX: function () { var e = this.scroll, t = void 0 === e ? {} : e; return "x" in t }, handleBodyScrollLeft: function (e) { if (e.currentTarget === e.target) { var t = e.target, n = this.scroll, r = void 0 === n ? {} : n, i = this.ref_headTable, o = this.ref_bodyTable; t.scrollLeft !== this.lastScrollLeft && r.x && (t === o && i ? i.scrollLeft = t.scrollLeft : t === i && o && (o.scrollLeft = t.scrollLeft), this.setScrollPositionClassName()), this.lastScrollLeft = t.scrollLeft } }, handleBodyScrollTop: function (e) { var t = e.target; if (e.currentTarget === t) { var n = this.scroll, r = void 0 === n ? {} : n, i = this.ref_headTable, o = this.ref_bodyTable, a = this.ref_fixedColumnsBodyLeft, s = this.ref_fixedColumnsBodyRight; if (t.scrollTop !== this.lastScrollTop && r.y && t !== i) { var c = t.scrollTop; a && t !== a && (a.scrollTop = c), s && t !== s && (s.scrollTop = c), o && t !== o && (o.scrollTop = c) } this.lastScrollTop = t.scrollTop } }, handleBodyScroll: function (e) { this.handleBodyScrollLeft(e), this.handleBodyScrollTop(e) }, handleWheel: function (e) { var t = this.$props.scroll, n = void 0 === t ? {} : t; if (window.navigator.userAgent.match(/Trident\/7\./) && n.y) { e.preventDefault(); var r = e.deltaY, i = e.target, o = this.ref_bodyTable, a = this.ref_fixedColumnsBodyLeft, s = this.ref_fixedColumnsBodyRight, c = 0; c = this.lastScrollTop ? this.lastScrollTop + r : r, a && i !== a && (a.scrollTop = c), s && i !== s && (s.scrollTop = c), o && i !== o && (o.scrollTop = c) } }, saveRef: function (e) { var t = this; return function (n) { t["ref_" + e] = n } }, saveTableNodeRef: function (e) { this.tableNode = e }, renderMainTable: function () { var e = this.$createElement, t = this.scroll, n = this.prefixCls, r = this.columnManager.isAnyColumnsFixed(), i = r || t.x || t.y, o = [this.renderTable({ columns: this.columnManager.groupedColumns(), isAnyColumnsFixed: r }), this.renderEmptyText(), this.renderFooter()]; return i ? e("div", { class: n + "-scroll" }, [o]) : o }, renderLeftFixedTable: function () { var e = this.$createElement, t = this.prefixCls; return e("div", { class: t + "-fixed-left" }, [this.renderTable({ columns: this.columnManager.leftColumns(), fixed: "left" })]) }, renderRightFixedTable: function () { var e = this.$createElement, t = this.prefixCls; return e("div", { class: t + "-fixed-right" }, [this.renderTable({ columns: this.columnManager.rightColumns(), fixed: "right" })]) }, renderTable: function (e) { var t = this.$createElement, n = e.columns, r = e.fixed, i = e.isAnyColumnsFixed, o = this.prefixCls, a = this.scroll, s = void 0 === a ? {} : a, c = s.x || r ? o + "-fixed" : "", l = t(ou, { key: "head", attrs: { columns: n, fixed: r, tableClassName: c, handleBodyScrollLeft: this.handleBodyScrollLeft, expander: this.expander } }), u = t(au, { key: "body", attrs: { columns: n, fixed: r, tableClassName: c, getRowKey: this.getRowKey, handleWheel: this.handleWheel, handleBodyScroll: this.handleBodyScroll, expander: this.expander, isAnyColumnsFixed: i } }); return [l, u] }, renderTitle: function () { var e = this.$createElement, t = this.title, n = this.prefixCls, r = this.data; return t ? e("div", { class: n + "-title", key: "title" }, [t(r)]) : null }, renderFooter: function () { var e = this.$createElement, t = this.footer, n = this.prefixCls, r = this.data; return t ? e("div", { class: n + "-footer", key: "footer" }, [t(r)]) : null }, renderEmptyText: function () { var e = this.$createElement, t = this.emptyText, n = this.prefixCls, r = this.data; if (r.length) return null; var i = n + "-placeholder"; return e("div", { class: i, key: "emptyText" }, ["function" === typeof t ? t() : t]) } }, render: function () { var e, t = this, n = arguments[0], r = Object(v["l"])(this), i = this.columnManager, o = this.getRowKey, a = r.prefixCls, c = Q()(r.prefixCls, (e = {}, h()(e, a + "-fixed-header", r.useFixedHeader || r.scroll && r.scroll.y), h()(e, a + "-scroll-position-left " + a + "-scroll-position-right", "both" === this.scrollPosition), h()(e, a + "-scroll-position-" + this.scrollPosition, "both" !== this.scrollPosition), h()(e, a + "-layout-fixed", this.isTableLayoutFixed()), e)), l = i.isAnyColumnsLeftFixed(), u = i.isAnyColumnsRightFixed(), f = { props: s()({}, r, { columnManager: i, getRowKey: o }), on: Object(v["k"])(this), scopedSlots: { default: function (e) { return t.expander = e, n("div", K()([{ directives: [{ name: "ant-ref", value: t.saveTableNodeRef }] }, { class: c }]), [t.renderTitle(), n("div", { class: a + "-content" }, [t.renderMainTable(), l && t.renderLeftFixedTable(), u && t.renderRightFixedTable()])]) } } }; return n(lu, f) } }, hu = { name: "Column", props: { rowSpan: p["a"].number, colSpan: p["a"].number, title: p["a"].any, dataIndex: p["a"].string, width: p["a"].oneOfType([p["a"].number, p["a"].string]), ellipsis: p["a"].bool, fixed: p["a"].oneOf([!0, "left", "right"]), align: p["a"].oneOf(["left", "center", "right"]), customRender: p["a"].func, className: p["a"].string, customCell: p["a"].func, customHeaderCell: p["a"].func } }, fu = { name: "ColumnGroup", props: { title: p["a"].any }, isTableColumnGroup: !0 }, du = { name: "Table", Column: hu, ColumnGroup: fu, props: uu.props, methods: { getTableNode: function () { return this.$refs.table.tableNode }, getBodyTable: function () { return this.$refs.table.ref_bodyTable }, normalize: function () { var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], n = []; return t.forEach((function (t) { if (t.tag) { var r = Object(v["j"])(t), i = Object(v["q"])(t), o = Object(v["f"])(t), a = Object(v["l"])(t), c = Object(v["i"])(t), l = {}; Object.keys(c).forEach((function (e) { var t = "on-" + e; l[Object(v["a"])(t)] = c[e] })); var u = Object(v["p"])(t), h = u["default"], f = u.title, d = s()({ title: f }, a, { style: i, class: o }, l); if (r && (d.key = r), Object(v["o"])(t).isTableColumnGroup) d.children = e.normalize("function" === typeof h ? h() : h); else { var p = t.data && t.data.scopedSlots && t.data.scopedSlots["default"]; d.customRender = d.customRender || p } n.push(d) } })), n } }, render: function () { var e = arguments[0], t = this.$slots, n = this.normalize, r = Object(v["l"])(this), i = r.columns || n(t["default"]), o = { props: s()({}, r, { columns: i }), on: Object(v["k"])(this), ref: "table" }; return e(uu, o) } }, pu = du, vu = n("58c1"); function mu(e) { return e.name || "Component" } var gu = function () { return {} }; function yu(e) { var t = !!e, n = e || gu; return function (r) { var i = Object(Qi["a"])(r.props || {}, ["store"]), o = { __propsSymbol__: p["a"].any }; Object.keys(i).forEach((function (e) { o[e] = s()({}, i[e], { required: !1 }) })); var a = { name: "Connect_" + mu(r), props: o, inject: { storeContext: { default: function () { return {} } } }, data: function () { return this.store = this.storeContext.store, this.preProps = Object(Qi["a"])(Object(v["l"])(this), ["__propsSymbol__"]), { subscribed: n(this.store.getState(), this.$props) } }, watch: { __propsSymbol__: function () { e && 2 === e.length && (this.subscribed = n(this.store.getState(), this.$props)) } }, mounted: function () { this.trySubscribe() }, beforeDestroy: function () { this.tryUnsubscribe() }, methods: { handleChange: function () { if (this.unsubscribe) { var e = Object(Qi["a"])(Object(v["l"])(this), ["__propsSymbol__"]), t = n(this.store.getState(), e); Ns()(this.preProps, e) && Ns()(this.subscribed, t) || (this.subscribed = t) } }, trySubscribe: function () { t && (this.unsubscribe = this.store.subscribe(this.handleChange), this.handleChange()) }, tryUnsubscribe: function () { this.unsubscribe && (this.unsubscribe(), this.unsubscribe = null) }, getWrappedInstance: function () { return this.$refs.wrappedInstance } }, render: function () { var e = arguments[0], t = this.$slots, n = void 0 === t ? {} : t, i = this.$scopedSlots, o = this.subscribed, a = this.store, c = Object(v["l"])(this); this.preProps = s()({}, Object(Qi["a"])(c, ["__propsSymbol__"])); var l = { props: s()({}, c, o, { store: a }), on: Object(v["k"])(this), scopedSlots: i }; return e(r, K()([l, { ref: "wrappedInstance" }]), [Object.keys(n).map((function (t) { return e("template", { slot: t }, [n[t]]) }))]) } }; return Object(vu["a"])(a) } } var bu = /iPhone/i, xu = /iPod/i, wu = /iPad/i, _u = /\bAndroid(?:.+)Mobile\b/i, Cu = /Android/i, Mu = /\bAndroid(?:.+)SD4930UR\b/i, Ou = /\bAndroid(?:.+)(?:KF[A-Z]{2,4})\b/i, ku = /Windows Phone/i, Su = /\bWindows(?:.+)ARM\b/i, Tu = /BlackBerry/i, Au = /BB10/i, Lu = /Opera Mini/i, ju = /\b(CriOS|Chrome)(?:.+)Mobile/i, zu = /Mobile(?:.+)Firefox\b/i; function Eu(e, t) { return e.test(t) } function Pu(e) { var t = e || ("undefined" !== typeof navigator ? navigator.userAgent : ""), n = t.split("[FBAN"); if ("undefined" !== typeof n[1]) { var r = n, i = bi()(r, 1); t = i[0] } if (n = t.split("Twitter"), "undefined" !== typeof n[1]) { var o = n, a = bi()(o, 1); t = a[0] } var s = { apple: { phone: Eu(bu, t) && !Eu(ku, t), ipod: Eu(xu, t), tablet: !Eu(bu, t) && Eu(wu, t) && !Eu(ku, t), device: (Eu(bu, t) || Eu(xu, t) || Eu(wu, t)) && !Eu(ku, t) }, amazon: { phone: Eu(Mu, t), tablet: !Eu(Mu, t) && Eu(Ou, t), device: Eu(Mu, t) || Eu(Ou, t) }, android: { phone: !Eu(ku, t) && Eu(Mu, t) || !Eu(ku, t) && Eu(_u, t), tablet: !Eu(ku, t) && !Eu(Mu, t) && !Eu(_u, t) && (Eu(Ou, t) || Eu(Cu, t)), device: !Eu(ku, t) && (Eu(Mu, t) || Eu(Ou, t) || Eu(_u, t) || Eu(Cu, t)) || Eu(/\bokhttp\b/i, t) }, windows: { phone: Eu(ku, t), tablet: Eu(Su, t), device: Eu(ku, t) || Eu(Su, t) }, other: { blackberry: Eu(Tu, t), blackberry10: Eu(Au, t), opera: Eu(Lu, t), firefox: Eu(zu, t), chrome: Eu(ju, t), device: Eu(Tu, t) || Eu(Au, t) || Eu(Lu, t) || Eu(zu, t) || Eu(ju, t) }, any: null, phone: null, tablet: null }; return s.any = s.apple.device || s.android.device || s.windows.device || s.other.device, s.phone = s.apple.phone || s.android.phone || s.windows.phone, s.tablet = s.apple.tablet || s.android.tablet || s.windows.tablet, s } var Du = s()({}, Pu(), { isMobile: Pu }), Hu = Du; function Vu() { } function Iu(e, t, n) { var r = t || ""; return void 0 === e.key ? r + "item_" + n : e.key } function Nu(e) { return e + "-menu-" } function Ru(e, t) { var n = -1; e.forEach((function (e) { n++, e && e.type && e.type.isMenuItemGroup ? e.$slots["default"].forEach((function (r) { n++, e.componentOptions && t(r, n) })) : e.componentOptions && t(e, n) })) } function Fu(e, t, n) { e && !n.find && e.forEach((function (e) { if (!n.find && (!e.data || !e.data.slot || "default" === e.data.slot) && e && e.componentOptions) { var r = e.componentOptions.Ctor.options; if (!r || !(r.isSubMenu || r.isMenuItem || r.isMenuItemGroup)) return; -1 !== t.indexOf(e.key) ? n.find = !0 : e.componentOptions.children && Fu(e.componentOptions.children, t, n) } })) } var Yu = { props: ["defaultSelectedKeys", "selectedKeys", "defaultOpenKeys", "openKeys", "mode", "getPopupContainer", "openTransitionName", "openAnimation", "subMenuOpenDelay", "subMenuCloseDelay", "forceSubMenuRender", "triggerSubMenuAction", "level", "selectable", "multiple", "visible", "focusable", "defaultActiveFirst", "prefixCls", "inlineIndent", "parentMenu", "title", "rootPrefixCls", "eventKey", "active", "popupAlign", "popupOffset", "isOpen", "renderMenuItem", "manualRef", "subMenuKey", "disabled", "index", "isSelected", "store", "activeKey", "builtinPlacements", "overflowedIndicator", "attribute", "value", "popupClassName", "inlineCollapsed", "menu", "theme", "itemIcon", "expandIcon"], on: ["select", "deselect", "destroy", "openChange", "itemHover", "titleMouseenter", "titleMouseleave", "titleClick"] }, $u = function (e) { var t = e && "function" === typeof e.getBoundingClientRect && e.getBoundingClientRect().width; return t && (t = +t.toFixed(6)), t || 0 }, Bu = function (e, t, n) { e && "object" === Tt()(e.style) && (e.style[t] = n) }, Wu = function () { return Hu.any }, qu = !("undefined" === typeof window || !window.document || !window.document.createElement), Uu = "menuitem-overflowed", Ku = .5; qu && n("0cdd"); var Gu = { name: "DOMWrap", mixins: [m["a"]], data: function () { return this.resizeObserver = null, this.mutationObserver = null, this.originalTotalWidth = 0, this.overflowedItems = [], this.menuItemSizes = [], { lastVisibleIndex: void 0 } }, mounted: function () { var e = this; this.$nextTick((function () { if (e.setChildrenWidthAndResize(), 1 === e.level && "horizontal" === e.mode) { var t = e.$el; if (!t) return; e.resizeObserver = new vl["a"]((function (t) { t.forEach(e.setChildrenWidthAndResize) })), [].slice.call(t.children).concat(t).forEach((function (t) { e.resizeObserver.observe(t) })), "undefined" !== typeof MutationObserver && (e.mutationObserver = new MutationObserver((function () { e.resizeObserver.disconnect(), [].slice.call(t.children).concat(t).forEach((function (t) { e.resizeObserver.observe(t) })), e.setChildrenWidthAndResize() })), e.mutationObserver.observe(t, { attributes: !1, childList: !0, subTree: !1 })) } })) }, beforeDestroy: function () { this.resizeObserver && this.resizeObserver.disconnect(), this.mutationObserver && this.mutationObserver.disconnect() }, methods: { getMenuItemNodes: function () { var e = this.$props.prefixCls, t = this.$el; return t ? [].slice.call(t.children).filter((function (t) { return t.className.split(" ").indexOf(e + "-overflowed-submenu") < 0 })) : [] }, getOverflowedSubMenuItem: function (e, t, n) { var r = this.$createElement, i = this.$props, o = i.overflowedIndicator, a = i.level, c = i.mode, u = i.prefixCls, h = i.theme; if (1 !== a || "horizontal" !== c) return null; var f = this.$slots["default"][0], d = Object(v["m"])(f), p = (d.title, l()(d, ["title"])), m = Object(v["i"])(f), g = {}, y = e + "-overflowed-indicator", b = e + "-overflowed-indicator"; 0 === t.length && !0 !== n ? g = { display: "none" } : n && (g = { visibility: "hidden", position: "absolute" }, y += "-placeholder", b += "-placeholder"); var x = h ? u + "-" + h : "", w = {}, _ = {}; Yu.props.forEach((function (e) { void 0 !== p[e] && (w[e] = p[e]) })), Yu.on.forEach((function (e) { void 0 !== m[e] && (_[e] = m[e]) })); var C = { props: s()({ title: o, popupClassName: x }, w, { eventKey: b, disabled: !1 }), class: u + "-overflowed-submenu", key: y, style: g, on: _ }; return r(fh, C, [t]) }, setChildrenWidthAndResize: function () { if ("horizontal" === this.mode) { var e = this.$el; if (e) { var t = e.children; if (t && 0 !== t.length) { var n = e.children[t.length - 1]; Bu(n, "display", "inline-block"); var r = this.getMenuItemNodes(), i = r.filter((function (e) { return e.className.split(" ").indexOf(Uu) >= 0 })); i.forEach((function (e) { Bu(e, "display", "inline-block") })), this.menuItemSizes = r.map((function (e) { return $u(e) })), i.forEach((function (e) { Bu(e, "display", "none") })), this.overflowedIndicatorWidth = $u(e.children[e.children.length - 1]), this.originalTotalWidth = this.menuItemSizes.reduce((function (e, t) { return e + t }), 0), this.handleResize(), Bu(n, "display", "none") } } } }, handleResize: function () { var e = this; if ("horizontal" === this.mode) { var t = this.$el; if (t) { var n = $u(t); this.overflowedItems = []; var r = 0, i = void 0; this.originalTotalWidth > n + Ku && (i = -1, this.menuItemSizes.forEach((function (t) { r += t, r + e.overflowedIndicatorWidth <= n && (i += 1) }))), this.setState({ lastVisibleIndex: i }) } } }, renderChildren: function (e) { var t = this, n = this.$data.lastVisibleIndex, r = Object(v["f"])(this); return (e || []).reduce((function (i, o, a) { var s = o, c = Object(v["m"])(o).eventKey; if ("horizontal" === t.mode) { var l = t.getOverflowedSubMenuItem(c, []); void 0 !== n && -1 !== r[t.prefixCls + "-root"] && (a > n && (s = Object(en["a"])(o, { style: { display: "none" }, props: { eventKey: c + "-hidden" }, class: Uu })), a === n + 1 && (t.overflowedItems = e.slice(n + 1).map((function (e) { return Object(en["a"])(e, { key: Object(v["m"])(e).eventKey, props: { mode: "vertical-left" } }) })), l = t.getOverflowedSubMenuItem(c, t.overflowedItems))); var u = [].concat(X()(i), [l, s]); return a === e.length - 1 && u.push(t.getOverflowedSubMenuItem(c, [], !0)), u } return [].concat(X()(i), [s]) }), []) } }, render: function () { var e = arguments[0], t = this.$props.tag, n = { on: Object(v["k"])(this) }; return e(t, n, [this.renderChildren(this.$slots["default"])]) } }; Gu.props = { mode: p["a"].oneOf(["horizontal", "vertical", "vertical-left", "vertical-right", "inline"]), prefixCls: p["a"].string, level: p["a"].number, theme: p["a"].string, overflowedIndicator: p["a"].node, visible: p["a"].bool, hiddenClassName: p["a"].string, tag: p["a"].string.def("div") }; var Xu = Gu; function Ju(e) { return !e.length || e.every((function (e) { return !!e.disabled })) } function Qu(e, t, n) { var r = e.getState(); e.setState({ activeKey: s()({}, r.activeKey, h()({}, t, n)) }) } function Zu(e) { return e.eventKey || "0-menu-" } function eh(e, t) { if (t) { var n = this.instanceArrayKeyIndexMap[e]; this.instanceArray[n] = t } } function th(e, t) { var n = t, r = e.eventKey, i = e.defaultActiveFirst, o = e.children; if (void 0 !== n && null !== n) { var a = void 0; if (Ru(o, (function (e, t) { var i = e.componentOptions.propsData || {}; e && !i.disabled && n === Iu(e, r, t) && (a = !0) })), a) return n } return n = null, i ? (Ru(o, (function (e, t) { var i = e.componentOptions.propsData || {}, o = null === n || void 0 === n; o && e && !i.disabled && (n = Iu(e, r, t)) })), n) : n } var nh = { name: "SubPopupMenu", props: Object(v["t"])({ prefixCls: p["a"].string, openTransitionName: p["a"].string, openAnimation: p["a"].oneOfType([p["a"].string, p["a"].object]), openKeys: p["a"].arrayOf(p["a"].oneOfType([p["a"].string, p["a"].number])), visible: p["a"].bool, parentMenu: p["a"].object, eventKey: p["a"].string, store: p["a"].object, forceSubMenuRender: p["a"].bool, focusable: p["a"].bool, multiple: p["a"].bool, defaultActiveFirst: p["a"].bool, activeKey: p["a"].oneOfType([p["a"].string, p["a"].number]), selectedKeys: p["a"].arrayOf(p["a"].oneOfType([p["a"].string, p["a"].number])), defaultSelectedKeys: p["a"].arrayOf(p["a"].oneOfType([p["a"].string, p["a"].number])), defaultOpenKeys: p["a"].arrayOf(p["a"].oneOfType([p["a"].string, p["a"].number])), level: p["a"].number, mode: p["a"].oneOf(["horizontal", "vertical", "vertical-left", "vertical-right", "inline"]), triggerSubMenuAction: p["a"].oneOf(["click", "hover"]), inlineIndent: p["a"].oneOfType([p["a"].number, p["a"].string]), manualRef: p["a"].func, itemIcon: p["a"].any, expandIcon: p["a"].any, overflowedIndicator: p["a"].any, children: p["a"].any.def([]), __propsSymbol__: p["a"].any }, { prefixCls: "rc-menu", mode: "vertical", level: 1, inlineIndent: 24, visible: !0, focusable: !0, manualRef: Vu }), mixins: [m["a"]], created: function () { var e = Object(v["l"])(this); this.prevProps = s()({}, e), e.store.setState({ activeKey: s()({}, e.store.getState().activeKey, h()({}, e.eventKey, th(e, e.activeKey))) }), this.instanceArray = [] }, mounted: function () { this.manualRef && this.manualRef(this) }, updated: function () { var e = Object(v["l"])(this), t = this.prevProps, n = "activeKey" in e ? e.activeKey : e.store.getState().activeKey[Zu(e)], r = th(e, n); if (r !== n) Qu(e.store, Zu(e), r); else if ("activeKey" in t) { var i = th(t, t.activeKey); r !== i && Qu(e.store, Zu(e), r) } this.prevProps = s()({}, e) }, methods: { onKeyDown: function (e, t) { var n = e.keyCode, r = void 0; if (this.getFlatInstanceArray().forEach((function (t) { t && t.active && t.onKeyDown && (r = t.onKeyDown(e)) })), r) return 1; var i = null; return n !== Io.UP && n !== Io.DOWN || (i = this.step(n === Io.UP ? -1 : 1)), i ? (e.preventDefault(), Qu(this.$props.store, Zu(this.$props), i.eventKey), "function" === typeof t && t(i), 1) : void 0 }, onItemHover: function (e) { var t = e.key, n = e.hover; Qu(this.$props.store, Zu(this.$props), n ? t : null) }, onDeselect: function (e) { this.__emit("deselect", e) }, onSelect: function (e) { this.__emit("select", e) }, onClick: function (e) { this.__emit("click", e) }, onOpenChange: function (e) { this.__emit("openChange", e) }, onDestroy: function (e) { this.__emit("destroy", e) }, getFlatInstanceArray: function () { return this.instanceArray }, getOpenTransitionName: function () { return this.$props.openTransitionName }, step: function (e) { var t = this.getFlatInstanceArray(), n = this.$props.store.getState().activeKey[Zu(this.$props)], r = t.length; if (!r) return null; e < 0 && (t = t.concat().reverse()); var i = -1; if (t.every((function (e, t) { return !e || e.eventKey !== n || (i = t, !1) })), this.defaultActiveFirst || -1 === i || !Ju(t.slice(i, r - 1))) { var o = (i + 1) % r, a = o; do { var s = t[a]; if (s && !s.disabled) return s; a = (a + 1) % r } while (a !== o); return null } }, getIcon: function (e, t) { if (e.$createElement) { var n = e[t]; return void 0 !== n ? n : e.$slots[t] || e.$scopedSlots[t] } var r = Object(v["m"])(e)[t]; if (void 0 !== r) return r; var i = [], o = e.componentOptions || {}; return (o.children || []).forEach((function (e) { e.data && e.data.slot === t && ("template" === e.tag ? i.push(e.children) : i.push(e)) })), i.length ? i : void 0 }, renderCommonMenuItem: function (e, t, n) { var r = this; if (void 0 === e.tag) return e; var i = this.$props.store.getState(), o = this.$props, a = Iu(e, o.eventKey, t), c = e.componentOptions.propsData || {}, l = a === i.activeKey[Zu(this.$props)]; c.disabled || (this.instanceArrayKeyIndexMap[a] = Object.keys(this.instanceArrayKeyIndexMap).length); var u = Object(v["i"])(e), h = { props: s()({ mode: c.mode || o.mode, level: o.level, inlineIndent: o.inlineIndent, renderMenuItem: this.renderMenuItem, rootPrefixCls: o.prefixCls, index: t, parentMenu: o.parentMenu, manualRef: c.disabled ? Vu : eh.bind(this, a), eventKey: a, active: !c.disabled && l, multiple: o.multiple, openTransitionName: this.getOpenTransitionName(), openAnimation: o.openAnimation, subMenuOpenDelay: o.subMenuOpenDelay, subMenuCloseDelay: o.subMenuCloseDelay, forceSubMenuRender: o.forceSubMenuRender, builtinPlacements: o.builtinPlacements, itemIcon: this.getIcon(e, "itemIcon") || this.getIcon(this, "itemIcon"), expandIcon: this.getIcon(e, "expandIcon") || this.getIcon(this, "expandIcon") }, n), on: { click: function (e) { (u.click || Vu)(e), r.onClick(e) }, itemHover: this.onItemHover, openChange: this.onOpenChange, deselect: this.onDeselect, select: this.onSelect } }; return ("inline" === o.mode || Wu()) && (h.props.triggerSubMenuAction = "click"), Object(en["a"])(e, h) }, renderMenuItem: function (e, t, n) { if (!e) return null; var r = this.$props.store.getState(), i = { openKeys: r.openKeys, selectedKeys: r.selectedKeys, triggerSubMenuAction: this.triggerSubMenuAction, isRootMenu: !1, subMenuKey: n }; return this.renderCommonMenuItem(e, t, i) } }, render: function () { var e = this, t = arguments[0], n = l()(this.$props, []), r = n.eventKey, i = n.prefixCls, o = n.visible, a = n.level, s = n.mode, c = n.theme; this.instanceArray = [], this.instanceArrayKeyIndexMap = {}; var u = Q()(n.prefixCls, n.prefixCls + "-" + n.mode), h = { props: { tag: "ul", visible: o, prefixCls: i, level: a, mode: s, theme: c, overflowedIndicator: Object(v["g"])(this, "overflowedIndicator") }, attrs: { role: n.role || "menu" }, class: u, on: Object(Qi["a"])(Object(v["k"])(this), ["click"]) }; return n.focusable && (h.attrs.tabIndex = "0", h.on.keydown = this.onKeyDown), t(Xu, h, [n.children.map((function (t, n) { return e.renderMenuItem(t, n, r || "0-menu-") }))]) } }, rh = yu()(nh), ih = { adjustX: 1, adjustY: 1 }, oh = { topLeft: { points: ["bl", "tl"], overflow: ih, offset: [0, -7] }, bottomLeft: { points: ["tl", "bl"], overflow: ih, offset: [0, 7] }, leftTop: { points: ["tr", "tl"], overflow: ih, offset: [-4, 0] }, rightTop: { points: ["tl", "tr"], overflow: ih, offset: [4, 0] } }, ah = oh, sh = 0, ch = { horizontal: "bottomLeft", vertical: "rightTop", "vertical-left": "rightTop", "vertical-right": "leftTop" }, lh = function (e, t, n) { var r = Nu(t), i = e.getState(); e.setState({ defaultActiveFirst: s()({}, i.defaultActiveFirst, h()({}, r, n)) }) }, uh = { name: "SubMenu", props: { parentMenu: p["a"].object, title: p["a"].any, selectedKeys: p["a"].array.def([]), openKeys: p["a"].array.def([]), openChange: p["a"].func.def(Vu), rootPrefixCls: p["a"].string, eventKey: p["a"].oneOfType([p["a"].string, p["a"].number]), multiple: p["a"].bool, active: p["a"].bool, isRootMenu: p["a"].bool.def(!1), index: p["a"].number, triggerSubMenuAction: p["a"].string, popupClassName: p["a"].string, getPopupContainer: p["a"].func, forceSubMenuRender: p["a"].bool, openAnimation: p["a"].oneOfType([p["a"].string, p["a"].object]), disabled: p["a"].bool, subMenuOpenDelay: p["a"].number.def(.1), subMenuCloseDelay: p["a"].number.def(.1), level: p["a"].number.def(1), inlineIndent: p["a"].number.def(24), openTransitionName: p["a"].string, popupOffset: p["a"].array, isOpen: p["a"].bool, store: p["a"].object, mode: p["a"].oneOf(["horizontal", "vertical", "vertical-left", "vertical-right", "inline"]).def("vertical"), manualRef: p["a"].func.def(Vu), builtinPlacements: p["a"].object.def((function () { return {} })), itemIcon: p["a"].any, expandIcon: p["a"].any, subMenuKey: p["a"].string }, mixins: [m["a"]], isSubMenu: !0, data: function () { var e = this.$props, t = e.store, n = e.eventKey, r = t.getState().defaultActiveFirst, i = !1; return r && (i = r[n]), lh(t, n, i), {} }, mounted: function () { var e = this; this.$nextTick((function () { e.handleUpdated() })) }, updated: function () { var e = this; this.$nextTick((function () { e.handleUpdated() })) }, beforeDestroy: function () { var e = this.eventKey; this.__emit("destroy", e), this.minWidthTimeout && (Object(rn["a"])(this.minWidthTimeout), this.minWidthTimeout = null), this.mouseenterTimeout && (Object(rn["a"])(this.mouseenterTimeout), this.mouseenterTimeout = null) }, methods: { handleUpdated: function () { var e = this, t = this.$props, n = t.mode, r = t.parentMenu, i = t.manualRef; i && i(this), "horizontal" === n && r.isRootMenu && this.isOpen && (this.minWidthTimeout = Object(rn["b"])((function () { return e.adjustWidth() }), 0)) }, onKeyDown: function (e) { var t = e.keyCode, n = this.menuInstance, r = this.$props, i = r.store, o = r.isOpen; if (t === Io.ENTER) return this.onTitleClick(e), lh(i, this.eventKey, !0), !0; if (t === Io.RIGHT) return o ? n.onKeyDown(e) : (this.triggerOpenChange(!0), lh(i, this.eventKey, !0)), !0; if (t === Io.LEFT) { var a = void 0; if (!o) return; return a = n.onKeyDown(e), a || (this.triggerOpenChange(!1), a = !0), a } return !o || t !== Io.UP && t !== Io.DOWN ? void 0 : n.onKeyDown(e) }, onPopupVisibleChange: function (e) { this.triggerOpenChange(e, e ? "mouseenter" : "mouseleave") }, onMouseEnter: function (e) { var t = this.$props, n = t.eventKey, r = t.store; lh(r, n, !1), this.__emit("mouseenter", { key: n, domEvent: e }) }, onMouseLeave: function (e) { var t = this.eventKey, n = this.parentMenu; n.subMenuInstance = this, this.__emit("mouseleave", { key: t, domEvent: e }) }, onTitleMouseEnter: function (e) { var t = this.$props.eventKey; this.__emit("itemHover", { key: t, hover: !0 }), this.__emit("titleMouseenter", { key: t, domEvent: e }) }, onTitleMouseLeave: function (e) { var t = this.eventKey, n = this.parentMenu; n.subMenuInstance = this, this.__emit("itemHover", { key: t, hover: !1 }), this.__emit("titleMouseleave", { key: t, domEvent: e }) }, onTitleClick: function (e) { var t = this.$props, n = t.triggerSubMenuAction, r = t.eventKey, i = t.isOpen, o = t.store; this.__emit("titleClick", { key: r, domEvent: e }), "hover" !== n && (this.triggerOpenChange(!i, "click"), lh(o, r, !1)) }, onSubMenuClick: function (e) { this.__emit("click", this.addKeyPath(e)) }, getPrefixCls: function () { return this.$props.rootPrefixCls + "-submenu" }, getActiveClassName: function () { return this.getPrefixCls() + "-active" }, getDisabledClassName: function () { return this.getPrefixCls() + "-disabled" }, getSelectedClassName: function () { return this.getPrefixCls() + "-selected" }, getOpenClassName: function () { return this.$props.rootPrefixCls + "-submenu-open" }, saveMenuInstance: function (e) { this.menuInstance = e }, addKeyPath: function (e) { return s()({}, e, { keyPath: (e.keyPath || []).concat(this.$props.eventKey) }) }, triggerOpenChange: function (e, t) { var n = this, r = this.$props.eventKey, i = function () { n.__emit("openChange", { key: r, item: n, trigger: t, open: e }) }; "mouseenter" === t ? this.mouseenterTimeout = Object(rn["b"])((function () { i() }), 0) : i() }, isChildrenSelected: function () { var e = { find: !1 }; return Fu(this.$slots["default"], this.$props.selectedKeys, e), e.find }, adjustWidth: function () { if (this.$refs.subMenuTitle && this.menuInstance) { var e = this.menuInstance.$el; e.offsetWidth >= this.$refs.subMenuTitle.offsetWidth || (e.style.minWidth = this.$refs.subMenuTitle.offsetWidth + "px") } }, renderChildren: function (e) { var t = this.$createElement, n = this.$props, r = Object(v["k"])(this), i = r.select, o = r.deselect, a = r.openChange, c = { props: { mode: "horizontal" === n.mode ? "vertical" : n.mode, visible: n.isOpen, level: n.level + 1, inlineIndent: n.inlineIndent, focusable: !1, selectedKeys: n.selectedKeys, eventKey: n.eventKey + "-menu-", openKeys: n.openKeys, openTransitionName: n.openTransitionName, openAnimation: n.openAnimation, subMenuOpenDelay: n.subMenuOpenDelay, parentMenu: this, subMenuCloseDelay: n.subMenuCloseDelay, forceSubMenuRender: n.forceSubMenuRender, triggerSubMenuAction: n.triggerSubMenuAction, builtinPlacements: n.builtinPlacements, defaultActiveFirst: n.store.getState().defaultActiveFirst[Nu(n.eventKey)], multiple: n.multiple, prefixCls: n.rootPrefixCls, manualRef: this.saveMenuInstance, itemIcon: Object(v["g"])(this, "itemIcon"), expandIcon: Object(v["g"])(this, "expandIcon"), children: e }, on: { click: this.onSubMenuClick, select: i, deselect: o, openChange: a }, id: this.internalMenuId }, l = c.props, u = this.haveRendered; if (this.haveRendered = !0, this.haveOpened = this.haveOpened || l.visible || l.forceSubMenuRender, !this.haveOpened) return t("div"); var h = u || !l.visible || "inline" === !l.mode; c["class"] = " " + l.prefixCls + "-sub"; var f = { appear: h, css: !1 }, d = { props: f, on: {} }; return l.openTransitionName ? d = Object(y["a"])(l.openTransitionName, { appear: h }) : "object" === Tt()(l.openAnimation) ? (f = s()({}, f, l.openAnimation.props || {}), h || (f.appear = !1)) : "string" === typeof l.openAnimation && (d = Object(y["a"])(l.openAnimation, { appear: h })), "object" === Tt()(l.openAnimation) && l.openAnimation.on && (d.on = l.openAnimation.on), t("transition", d, [t(rh, K()([{ directives: [{ name: "show", value: n.isOpen }] }, c]))]) } }, render: function () { var e, t, n = arguments[0], r = this.$props, i = this.rootPrefixCls, o = this.parentMenu, a = r.isOpen, c = this.getPrefixCls(), l = "inline" === r.mode, u = (e = {}, h()(e, c, !0), h()(e, c + "-" + r.mode, !0), h()(e, this.getOpenClassName(), a), h()(e, this.getActiveClassName(), r.active || a && !l), h()(e, this.getDisabledClassName(), r.disabled), h()(e, this.getSelectedClassName(), this.isChildrenSelected()), e); this.internalMenuId || (r.eventKey ? this.internalMenuId = r.eventKey + "$Menu" : this.internalMenuId = "$__$" + ++sh + "$Menu"); var f = {}, d = {}, p = {}; r.disabled || (f = { mouseleave: this.onMouseLeave, mouseenter: this.onMouseEnter }, d = { click: this.onTitleClick }, p = { mouseenter: this.onTitleMouseEnter, mouseleave: this.onTitleMouseLeave }); var m = {}; l && (m.paddingLeft = r.inlineIndent * r.level + "px"); var g = {}; a && (g = { "aria-owns": this.internalMenuId }); var y = { attrs: s()({ "aria-expanded": a }, g, { "aria-haspopup": "true", title: "string" === typeof r.title ? r.title : void 0 }), on: s()({}, p, d), style: m, class: c + "-title", ref: "subMenuTitle" }, b = null; "horizontal" !== r.mode && (b = Object(v["g"])(this, "expandIcon", r)); var x = n("div", y, [Object(v["g"])(this, "title"), b || n("i", { class: c + "-arrow" })]), w = this.renderChildren(Object(v["c"])(this.$slots["default"])), _ = this.parentMenu.isRootMenu ? this.parentMenu.getPopupContainer : function (e) { return e.parentNode }, C = ch[r.mode], M = r.popupOffset ? { offset: r.popupOffset } : {}, O = "inline" === r.mode ? "" : r.popupClassName, k = { on: s()({}, Object(Qi["a"])(Object(v["k"])(this), ["click"]), f), class: u }; return n("li", K()([k, { attrs: { role: "menuitem" } }]), [l && x, l && w, !l && n(Zr, { attrs: (t = { prefixCls: c, popupClassName: c + "-popup " + i + "-" + o.theme + " " + (O || ""), getPopupContainer: _, builtinPlacements: ah }, h()(t, "builtinPlacements", s()({}, ah, r.builtinPlacements)), h()(t, "popupPlacement", C), h()(t, "popupVisible", a), h()(t, "popupAlign", M), h()(t, "action", r.disabled ? [] : [r.triggerSubMenuAction]), h()(t, "mouseEnterDelay", r.subMenuOpenDelay), h()(t, "mouseLeaveDelay", r.subMenuCloseDelay), h()(t, "forceRender", r.forceSubMenuRender), t), on: { popupVisibleChange: this.onPopupVisibleChange } }, [n("template", { slot: "popup" }, [w]), x])]) } }, hh = yu((function (e, t) { var n = e.openKeys, r = e.activeKey, i = e.selectedKeys, o = t.eventKey, a = t.subMenuKey; return { isOpen: n.indexOf(o) > -1, active: r[a] === o, selectedKeys: i } }))(uh); hh.isSubMenu = !0; var fh = hh; function dh(e) { return dh = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, dh(e) } function ph(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function vh(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function mh(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? vh(n, !0).forEach((function (t) { ph(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : vh(n).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } var gh = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source; function yh(e) { var t, n, r, i = e.ownerDocument, o = i.body, a = i && i.documentElement; return t = e.getBoundingClientRect(), n = t.left, r = t.top, n -= a.clientLeft || o.clientLeft || 0, r -= a.clientTop || o.clientTop || 0, { left: n, top: r } } function bh(e, t) { var n = e["page".concat(t ? "Y" : "X", "Offset")], r = "scroll".concat(t ? "Top" : "Left"); if ("number" !== typeof n) { var i = e.document; n = i.documentElement[r], "number" !== typeof n && (n = i.body[r]) } return n } function xh(e) { return bh(e) } function wh(e) { return bh(e, !0) } function _h(e) { var t = yh(e), n = e.ownerDocument, r = n.defaultView || n.parentWindow; return t.left += xh(r), t.top += wh(r), t } function Ch(e, t, n) { var r = "", i = e.ownerDocument, o = n || i.defaultView.getComputedStyle(e, null); return o && (r = o.getPropertyValue(t) || o[t]), r } var Mh, Oh = new RegExp("^(".concat(gh, ")(?!px)[a-z%]+$"), "i"), kh = /^(top|right|bottom|left)$/, Sh = "currentStyle", Th = "runtimeStyle", Ah = "left", Lh = "px"; function jh(e, t) { var n = e[Sh] && e[Sh][t]; if (Oh.test(n) && !kh.test(t)) { var r = e.style, i = r[Ah], o = e[Th][Ah]; e[Th][Ah] = e[Sh][Ah], r[Ah] = "fontSize" === t ? "1em" : n || 0, n = r.pixelLeft + Lh, r[Ah] = i, e[Th][Ah] = o } return "" === n ? "auto" : n } function zh(e, t) { for (var n = 0; n < e.length; n++)t(e[n]) } function Eh(e) { return "border-box" === Mh(e, "boxSizing") } "undefined" !== typeof window && (Mh = window.getComputedStyle ? Ch : jh); var Ph = ["margin", "border", "padding"], Dh = -1, Hh = 2, Vh = 1, Ih = 0; function Nh(e, t, n) { var r, i = {}, o = e.style; for (r in t) t.hasOwnProperty(r) && (i[r] = o[r], o[r] = t[r]); for (r in n.call(e), t) t.hasOwnProperty(r) && (o[r] = i[r]) } function Rh(e, t, n) { var r, i, o, a = 0; for (i = 0; i < t.length; i++)if (r = t[i], r) for (o = 0; o < n.length; o++) { var s = void 0; s = "border" === r ? "".concat(r + n[o], "Width") : r + n[o], a += parseFloat(Mh(e, s)) || 0 } return a } function Fh(e) { return null != e && e == e.window } var Yh = {}; function $h(e, t, n) { if (Fh(e)) return "width" === t ? Yh.viewportWidth(e) : Yh.viewportHeight(e); if (9 === e.nodeType) return "width" === t ? Yh.docWidth(e) : Yh.docHeight(e); var r = "width" === t ? ["Left", "Right"] : ["Top", "Bottom"], i = "width" === t ? e.offsetWidth : e.offsetHeight, o = (Mh(e), Eh(e)), a = 0; (null == i || i <= 0) && (i = void 0, a = Mh(e, t), (null == a || Number(a) < 0) && (a = e.style[t] || 0), a = parseFloat(a) || 0), void 0 === n && (n = o ? Vh : Dh); var s = void 0 !== i || o, c = i || a; if (n === Dh) return s ? c - Rh(e, ["border", "padding"], r) : a; if (s) { var l = n === Hh ? -Rh(e, ["border"], r) : Rh(e, ["margin"], r); return c + (n === Vh ? 0 : l) } return a + Rh(e, Ph.slice(n), r) } zh(["Width", "Height"], (function (e) { Yh["doc".concat(e)] = function (t) { var n = t.document; return Math.max(n.documentElement["scroll".concat(e)], n.body["scroll".concat(e)], Yh["viewport".concat(e)](n)) }, Yh["viewport".concat(e)] = function (t) { var n = "client".concat(e), r = t.document, i = r.body, o = r.documentElement, a = o[n]; return "CSS1Compat" === r.compatMode && a || i && i[n] || a } })); var Bh = { position: "absolute", visibility: "hidden", display: "block" }; function Wh(e) { var t, n = arguments; return 0 !== e.offsetWidth ? t = $h.apply(void 0, n) : Nh(e, Bh, (function () { t = $h.apply(void 0, n) })), t } function qh(e, t, n) { var r = n; if ("object" !== dh(t)) return "undefined" !== typeof r ? ("number" === typeof r && (r += "px"), void (e.style[t] = r)) : Mh(e, t); for (var i in t) t.hasOwnProperty(i) && qh(e, i, t[i]) } function Uh(e, t) { "static" === qh(e, "position") && (e.style.position = "relative"); var n, r, i = _h(e), o = {}; for (r in t) t.hasOwnProperty(r) && (n = parseFloat(qh(e, r)) || 0, o[r] = n + t[r] - i[r]); qh(e, o) } zh(["width", "height"], (function (e) { var t = e.charAt(0).toUpperCase() + e.slice(1); Yh["outer".concat(t)] = function (t, n) { return t && Wh(t, e, n ? Ih : Vh) }; var n = "width" === e ? ["Left", "Right"] : ["Top", "Bottom"]; Yh[e] = function (t, r) { if (void 0 === r) return t && Wh(t, e, Dh); if (t) { Mh(t); var i = Eh(t); return i && (r += Rh(t, ["padding", "border"], n)), qh(t, e, r) } } })); var Kh = mh({ getWindow: function (e) { var t = e.ownerDocument || e; return t.defaultView || t.parentWindow }, offset: function (e, t) { if ("undefined" === typeof t) return _h(e); Uh(e, t) }, isWindow: Fh, each: zh, css: qh, clone: function (e) { var t = {}; for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n]); var r = e.overflow; if (r) for (var i in e) e.hasOwnProperty(i) && (t.overflow[i] = e.overflow[i]); return t }, scrollLeft: function (e, t) { if (Fh(e)) { if (void 0 === t) return xh(e); window.scrollTo(t, wh(e)) } else { if (void 0 === t) return e.scrollLeft; e.scrollLeft = t } }, scrollTop: function (e, t) { if (Fh(e)) { if (void 0 === t) return wh(e); window.scrollTo(xh(e), t) } else { if (void 0 === t) return e.scrollTop; e.scrollTop = t } }, viewportWidth: 0, viewportHeight: 0 }, Yh); function Gh(e, t, n) { n = n || {}, 9 === t.nodeType && (t = Kh.getWindow(t)); var r = n.allowHorizontalScroll, i = n.onlyScrollIfNeeded, o = n.alignWithTop, a = n.alignWithLeft, s = n.offsetTop || 0, c = n.offsetLeft || 0, l = n.offsetBottom || 0, u = n.offsetRight || 0; r = void 0 === r || r; var h, f, d, p, v, m, g, y, b, x, w = Kh.isWindow(t), _ = Kh.offset(e), C = Kh.outerHeight(e), M = Kh.outerWidth(e); w ? (g = t, x = Kh.height(g), b = Kh.width(g), y = { left: Kh.scrollLeft(g), top: Kh.scrollTop(g) }, v = { left: _.left - y.left - c, top: _.top - y.top - s }, m = { left: _.left + M - (y.left + b) + u, top: _.top + C - (y.top + x) + l }, p = y) : (h = Kh.offset(t), f = t.clientHeight, d = t.clientWidth, p = { left: t.scrollLeft, top: t.scrollTop }, v = { left: _.left - (h.left + (parseFloat(Kh.css(t, "borderLeftWidth")) || 0)) - c, top: _.top - (h.top + (parseFloat(Kh.css(t, "borderTopWidth")) || 0)) - s }, m = { left: _.left + M - (h.left + d + (parseFloat(Kh.css(t, "borderRightWidth")) || 0)) + u, top: _.top + C - (h.top + f + (parseFloat(Kh.css(t, "borderBottomWidth")) || 0)) + l }), v.top < 0 || m.top > 0 ? !0 === o ? Kh.scrollTop(t, p.top + v.top) : !1 === o ? Kh.scrollTop(t, p.top + m.top) : v.top < 0 ? Kh.scrollTop(t, p.top + v.top) : Kh.scrollTop(t, p.top + m.top) : i || (o = void 0 === o || !!o, o ? Kh.scrollTop(t, p.top + v.top) : Kh.scrollTop(t, p.top + m.top)), r && (v.left < 0 || m.left > 0 ? !0 === a ? Kh.scrollLeft(t, p.left + v.left) : !1 === a ? Kh.scrollLeft(t, p.left + m.left) : v.left < 0 ? Kh.scrollLeft(t, p.left + v.left) : Kh.scrollLeft(t, p.left + m.left) : i || (a = void 0 === a || !!a, a ? Kh.scrollLeft(t, p.left + v.left) : Kh.scrollLeft(t, p.left + m.left))) } var Xh = Gh, Jh = { attribute: p["a"].object, rootPrefixCls: p["a"].string, eventKey: p["a"].oneOfType([p["a"].string, p["a"].number]), active: p["a"].bool, selectedKeys: p["a"].array, disabled: p["a"].bool, title: p["a"].any, index: p["a"].number, inlineIndent: p["a"].number.def(24), level: p["a"].number.def(1), mode: p["a"].oneOf(["horizontal", "vertical", "vertical-left", "vertical-right", "inline"]).def("vertical"), parentMenu: p["a"].object, multiple: p["a"].bool, value: p["a"].any, isSelected: p["a"].bool, manualRef: p["a"].func.def(Vu), role: p["a"].any, subMenuKey: p["a"].string, itemIcon: p["a"].any }, Qh = { name: "MenuItem", props: Jh, mixins: [m["a"]], isMenuItem: !0, created: function () { this.prevActive = this.active, this.callRef() }, updated: function () { var e = this; this.$nextTick((function () { var t = e.$props, n = t.active, r = t.parentMenu, i = t.eventKey; e.prevActive || !n || r && r["scrolled-" + i] ? r && r["scrolled-" + i] && delete r["scrolled-" + i] : (Xh(e.$el, e.parentMenu.$el, { onlyScrollIfNeeded: !0 }), r["scrolled-" + i] = !0), e.prevActive = n })), this.callRef() }, beforeDestroy: function () { var e = this.$props; this.__emit("destroy", e.eventKey) }, methods: { onKeyDown: function (e) { var t = e.keyCode; if (t === Io.ENTER) return this.onClick(e), !0 }, onMouseLeave: function (e) { var t = this.$props.eventKey; this.__emit("itemHover", { key: t, hover: !1 }), this.__emit("mouseleave", { key: t, domEvent: e }) }, onMouseEnter: function (e) { var t = this.eventKey; this.__emit("itemHover", { key: t, hover: !0 }), this.__emit("mouseenter", { key: t, domEvent: e }) }, onClick: function (e) { var t = this.$props, n = t.eventKey, r = t.multiple, i = t.isSelected, o = { key: n, keyPath: [n], item: this, domEvent: e }; this.__emit("click", o), r ? i ? this.__emit("deselect", o) : this.__emit("select", o) : i || this.__emit("select", o) }, getPrefixCls: function () { return this.$props.rootPrefixCls + "-item" }, getActiveClassName: function () { return this.getPrefixCls() + "-active" }, getSelectedClassName: function () { return this.getPrefixCls() + "-selected" }, getDisabledClassName: function () { return this.getPrefixCls() + "-disabled" }, callRef: function () { this.manualRef && this.manualRef(this) } }, render: function () { var e, t = arguments[0], n = s()({}, this.$props), r = (e = {}, h()(e, this.getPrefixCls(), !0), h()(e, this.getActiveClassName(), !n.disabled && n.active), h()(e, this.getSelectedClassName(), n.isSelected), h()(e, this.getDisabledClassName(), n.disabled), e), i = s()({}, n.attribute, { title: n.title, role: n.role || "menuitem", "aria-disabled": n.disabled }); "option" === n.role ? i = s()({}, i, { role: "option", "aria-selected": n.isSelected }) : null !== n.role && "none" !== n.role || (i.role = "none"); var o = { click: n.disabled ? Vu : this.onClick, mouseleave: n.disabled ? Vu : this.onMouseLeave, mouseenter: n.disabled ? Vu : this.onMouseEnter }, a = {}; "inline" === n.mode && (a.paddingLeft = n.inlineIndent * n.level + "px"); var c = s()({}, Object(v["k"])(this)); Yu.props.forEach((function (e) { return delete n[e] })), Yu.on.forEach((function (e) { return delete c[e] })); var l = { attrs: s()({}, n, i), on: s()({}, c, o) }; return t("li", K()([l, { style: a, class: r }]), [this.$slots["default"], Object(v["g"])(this, "itemIcon", n)]) } }, Zh = yu((function (e, t) { var n = e.activeKey, r = e.selectedKeys, i = t.eventKey, o = t.subMenuKey; return { active: n[o] === i, isSelected: -1 !== r.indexOf(i) } }))(Qh), ef = Zh; function tf(e) { var t = e, n = []; function r(e) { t = s()({}, t, e); for (var r = 0; r < n.length; r++)n[r]() } function i() { return t } function o(e) { return n.push(e), function () { var t = n.indexOf(e); n.splice(t, 1) } } return { setState: r, getState: i, subscribe: o } } var nf = p["a"].shape({ subscribe: p["a"].func.isRequired, setState: p["a"].func.isRequired, getState: p["a"].func.isRequired }), rf = { name: "StoreProvider", props: { store: nf.isRequired }, provide: function () { return { storeContext: this.$props } }, render: function () { return this.$slots["default"][0] } }, of = { prefixCls: p["a"].string.def("rc-menu"), focusable: p["a"].bool.def(!0), multiple: p["a"].bool, defaultActiveFirst: p["a"].bool, visible: p["a"].bool.def(!0), activeKey: p["a"].oneOfType([p["a"].string, p["a"].number]), selectedKeys: p["a"].arrayOf(p["a"].oneOfType([p["a"].string, p["a"].number])), defaultSelectedKeys: p["a"].arrayOf(p["a"].oneOfType([p["a"].string, p["a"].number])).def([]), defaultOpenKeys: p["a"].arrayOf(p["a"].oneOfType([p["a"].string, p["a"].number])).def([]), openKeys: p["a"].arrayOf(p["a"].oneOfType([p["a"].string, p["a"].number])), openAnimation: p["a"].oneOfType([p["a"].string, p["a"].object]), mode: p["a"].oneOf(["horizontal", "vertical", "vertical-left", "vertical-right", "inline"]).def("vertical"), triggerSubMenuAction: p["a"].string.def("hover"), subMenuOpenDelay: p["a"].number.def(.1), subMenuCloseDelay: p["a"].number.def(.1), level: p["a"].number.def(1), inlineIndent: p["a"].number.def(24), theme: p["a"].oneOf(["light", "dark"]).def("light"), getPopupContainer: p["a"].func, openTransitionName: p["a"].string, forceSubMenuRender: p["a"].bool, selectable: p["a"].bool, isRootMenu: p["a"].bool.def(!0), builtinPlacements: p["a"].object.def((function () { return {} })), itemIcon: p["a"].any, expandIcon: p["a"].any, overflowedIndicator: p["a"].any }, af = { name: "Menu", props: s()({}, of, { selectable: p["a"].bool.def(!0) }), mixins: [m["a"]], data: function () { var e = Object(v["l"])(this), t = e.defaultSelectedKeys, n = e.defaultOpenKeys; return "selectedKeys" in e && (t = e.selectedKeys || []), "openKeys" in e && (n = e.openKeys || []), this.store = tf({ selectedKeys: t, openKeys: n, activeKey: { "0-menu-": th(s()({}, e, { children: this.$slots["default"] || [] }), e.activeKey) } }), {} }, mounted: function () { this.updateMiniStore() }, updated: function () { this.updateMiniStore() }, methods: { onSelect: function (e) { var t = this.$props; if (t.selectable) { var n = this.store.getState().selectedKeys, r = e.key; n = t.multiple ? n.concat([r]) : [r], Object(v["b"])(this, "selectedKeys") || this.store.setState({ selectedKeys: n }), this.__emit("select", s()({}, e, { selectedKeys: n })) } }, onClick: function (e) { this.__emit("click", e) }, onKeyDown: function (e, t) { this.$refs.innerMenu.getWrappedInstance().onKeyDown(e, t) }, onOpenChange: function (e) { var t = this.store.getState().openKeys.concat(), n = !1, r = function (e) { var r = !1; if (e.open) r = -1 === t.indexOf(e.key), r && t.push(e.key); else { var i = t.indexOf(e.key); r = -1 !== i, r && t.splice(i, 1) } n = n || r }; Array.isArray(e) ? e.forEach(r) : r(e), n && (Object(v["b"])(this, "openKeys") || this.store.setState({ openKeys: t }), this.__emit("openChange", t)) }, onDeselect: function (e) { var t = this.$props; if (t.selectable) { var n = this.store.getState().selectedKeys.concat(), r = e.key, i = n.indexOf(r); -1 !== i && n.splice(i, 1), Object(v["b"])(this, "selectedKeys") || this.store.setState({ selectedKeys: n }), this.__emit("deselect", s()({}, e, { selectedKeys: n })) } }, getOpenTransitionName: function () { var e = this.$props, t = e.openTransitionName, n = e.openAnimation; return t || "string" !== typeof n || (t = e.prefixCls + "-open-" + n), t }, updateMiniStore: function () { var e = Object(v["l"])(this); "selectedKeys" in e && this.store.setState({ selectedKeys: e.selectedKeys || [] }), "openKeys" in e && this.store.setState({ openKeys: e.openKeys || [] }) } }, render: function () { var e = arguments[0], t = Object(v["l"])(this), n = { props: s()({}, t, { itemIcon: Object(v["g"])(this, "itemIcon", t), expandIcon: Object(v["g"])(this, "expandIcon", t), overflowedIndicator: Object(v["g"])(this, "overflowedIndicator", t) || e("span", ["路路路"]), openTransitionName: this.getOpenTransitionName(), parentMenu: this, children: Object(v["c"])(this.$slots["default"] || []) }), class: t.prefixCls + "-root", on: s()({}, Object(v["k"])(this), { click: this.onClick, openChange: this.onOpenChange, deselect: this.onDeselect, select: this.onSelect }), ref: "innerMenu" }; return e(rf, { attrs: { store: this.store } }, [e(rh, n)]) } }, sf = af, cf = sf, lf = n("61fe"), uf = n.n(lf), hf = { adjustX: 1, adjustY: 1 }, ff = [0, 0], df = { topLeft: { points: ["bl", "tl"], overflow: hf, offset: [0, -4], targetOffset: ff }, topCenter: { points: ["bc", "tc"], overflow: hf, offset: [0, -4], targetOffset: ff }, topRight: { points: ["br", "tr"], overflow: hf, offset: [0, -4], targetOffset: ff }, bottomLeft: { points: ["tl", "bl"], overflow: hf, offset: [0, 4], targetOffset: ff }, bottomCenter: { points: ["tc", "bc"], overflow: hf, offset: [0, 4], targetOffset: ff }, bottomRight: { points: ["tr", "br"], overflow: hf, offset: [0, 4], targetOffset: ff } }, pf = df, vf = { mixins: [m["a"]], props: { minOverlayWidthMatchTrigger: p["a"].bool, prefixCls: p["a"].string.def("rc-dropdown"), transitionName: p["a"].string, overlayClassName: p["a"].string.def(""), openClassName: p["a"].string, animation: p["a"].any, align: p["a"].object, overlayStyle: p["a"].object.def((function () { return {} })), placement: p["a"].string.def("bottomLeft"), overlay: p["a"].any, trigger: p["a"].array.def(["hover"]), alignPoint: p["a"].bool, showAction: p["a"].array.def([]), hideAction: p["a"].array.def([]), getPopupContainer: p["a"].func, visible: p["a"].bool, defaultVisible: p["a"].bool.def(!1), mouseEnterDelay: p["a"].number.def(.15), mouseLeaveDelay: p["a"].number.def(.1) }, data: function () { var e = this.defaultVisible; return Object(v["s"])(this, "visible") && (e = this.visible), { sVisible: e } }, watch: { visible: function (e) { void 0 !== e && this.setState({ sVisible: e }) } }, methods: { onClick: function (e) { Object(v["s"])(this, "visible") || this.setState({ sVisible: !1 }), this.$emit("overlayClick", e), this.childOriginEvents.click && this.childOriginEvents.click(e) }, onVisibleChange: function (e) { Object(v["s"])(this, "visible") || this.setState({ sVisible: e }), this.__emit("visibleChange", e) }, getMinOverlayWidthMatchTrigger: function () { var e = Object(v["l"])(this), t = e.minOverlayWidthMatchTrigger, n = e.alignPoint; return "minOverlayWidthMatchTrigger" in e ? t : !n }, getOverlayElement: function () { var e = this.overlay || this.$slots.overlay || this.$scopedSlots.overlay, t = void 0; return t = "function" === typeof e ? e() : e, t }, getMenuElement: function () { var e = this, t = this.onClick, n = this.prefixCls, r = this.$slots; this.childOriginEvents = Object(v["i"])(r.overlay[0]); var i = this.getOverlayElement(), o = { props: { prefixCls: n + "-menu", getPopupContainer: function () { return e.getPopupDomNode() } }, on: { click: t } }; return "string" === typeof i.type && delete o.props.prefixCls, Object(en["a"])(r.overlay[0], o) }, getMenuElementOrLambda: function () { var e = this.overlay || this.$slots.overlay || this.$scopedSlots.overlay; return "function" === typeof e ? this.getMenuElement : this.getMenuElement() }, getPopupDomNode: function () { return this.$refs.trigger.getPopupDomNode() }, getOpenClassName: function () { var e = this.$props, t = e.openClassName, n = e.prefixCls; return void 0 !== t ? t : n + "-open" }, afterVisibleChange: function (e) { if (e && this.getMinOverlayWidthMatchTrigger()) { var t = this.getPopupDomNode(), n = this.$el; n && t && n.offsetWidth > t.offsetWidth && (t.style.minWidth = n.offsetWidth + "px", this.$refs.trigger && this.$refs.trigger._component && this.$refs.trigger._component.$refs && this.$refs.trigger._component.$refs.alignInstance && this.$refs.trigger._component.$refs.alignInstance.forceAlign()) } }, renderChildren: function () { var e = this.$slots["default"] && this.$slots["default"][0], t = this.sVisible; return t && e ? Object(en["a"])(e, { class: this.getOpenClassName() }) : e } }, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.transitionName, i = t.animation, o = t.align, a = t.placement, c = t.getPopupContainer, u = t.showAction, h = t.hideAction, f = t.overlayClassName, d = t.overlayStyle, p = t.trigger, v = l()(t, ["prefixCls", "transitionName", "animation", "align", "placement", "getPopupContainer", "showAction", "hideAction", "overlayClassName", "overlayStyle", "trigger"]), m = h; m || -1 === p.indexOf("contextmenu") || (m = ["click"]); var g = { props: s()({}, v, { prefixCls: n, popupClassName: f, popupStyle: d, builtinPlacements: pf, action: p, showAction: u, hideAction: m || [], popupPlacement: a, popupAlign: o, popupTransitionName: r, popupAnimation: i, popupVisible: this.sVisible, afterPopupVisibleChange: this.afterVisibleChange, getPopupContainer: c }), on: { popupVisibleChange: this.onVisibleChange }, ref: "trigger" }; return e(Zr, g, [this.renderChildren(), e("template", { slot: "popup" }, [this.$slots.overlay && this.getMenuElement()])]) } }, mf = vf, gf = function () { return { prefixCls: p["a"].string, type: p["a"].string, htmlType: p["a"].oneOf(["button", "submit", "reset"]).def("button"), icon: p["a"].any, shape: p["a"].oneOf(["circle", "circle-outline", "round"]), size: p["a"].oneOf(["small", "large", "default"]).def("default"), loading: p["a"].oneOfType([p["a"].bool, p["a"].object]), disabled: p["a"].bool, ghost: p["a"].bool, block: p["a"].bool } }, yf = /^[\u4e00-\u9fa5]{2}$/, bf = yf.test.bind(yf), xf = gf(), wf = { name: "AButton", inheritAttrs: !1, __ANT_BUTTON: !0, props: xf, inject: { configProvider: { default: function () { return Vt } } }, data: function () { return { sizeMap: { large: "lg", small: "sm" }, sLoading: !!this.loading, hasTwoCNChar: !1 } }, computed: { classes: function () { var e, t = this.prefixCls, n = this.type, r = this.shape, i = this.size, o = this.hasTwoCNChar, a = this.sLoading, s = this.ghost, c = this.block, l = this.icon, u = this.$slots, f = this.configProvider.getPrefixCls, d = f("btn", t), p = !1 !== this.configProvider.autoInsertSpaceInButton, m = ""; switch (i) { case "large": m = "lg"; break; case "small": m = "sm"; break; default: break }var g = a ? "loading" : l, y = Object(v["c"])(u["default"]); return e = {}, h()(e, "" + d, !0), h()(e, d + "-" + n, n), h()(e, d + "-" + r, r), h()(e, d + "-" + m, m), h()(e, d + "-icon-only", 0 === y.length && g), h()(e, d + "-loading", a), h()(e, d + "-background-ghost", s || "ghost" === n), h()(e, d + "-two-chinese-chars", o && p), h()(e, d + "-block", c), e } }, watch: { loading: function (e, t) { var n = this; t && "boolean" !== typeof t && clearTimeout(this.delayTimeout), e && "boolean" !== typeof e && e.delay ? this.delayTimeout = setTimeout((function () { n.sLoading = !!e }), e.delay) : this.sLoading = !!e } }, mounted: function () { this.fixTwoCNChar() }, updated: function () { this.fixTwoCNChar() }, beforeDestroy: function () { this.delayTimeout && clearTimeout(this.delayTimeout) }, methods: { fixTwoCNChar: function () { var e = this.$refs.buttonNode; if (e) { var t = e.textContent; this.isNeedInserted() && bf(t) ? this.hasTwoCNChar || (this.hasTwoCNChar = !0) : this.hasTwoCNChar && (this.hasTwoCNChar = !1) } }, handleClick: function (e) { var t = this.$data.sLoading; t || this.$emit("click", e) }, insertSpace: function (e, t) { var n = this.$createElement, r = t ? " " : ""; if ("string" === typeof e.text) { var i = e.text.trim(); return bf(i) && (i = i.split("").join(r)), n("span", [i]) } return e }, isNeedInserted: function () { var e = this.$slots, t = this.type, n = Object(v["g"])(this, "icon"); return e["default"] && 1 === e["default"].length && !n && "link" !== t } }, render: function () { var e = this, t = arguments[0], n = this.type, r = this.htmlType, i = this.classes, o = this.disabled, a = this.handleClick, c = this.sLoading, l = this.$slots, u = this.$attrs, h = Object(v["g"])(this, "icon"), f = { attrs: s()({}, u, { disabled: o }), class: i, on: s()({}, Object(v["k"])(this), { click: a }) }, d = c ? "loading" : h, p = d ? t(Ve, { attrs: { type: d } }) : null, m = Object(v["c"])(l["default"]), g = !1 !== this.configProvider.autoInsertSpaceInButton, y = m.map((function (t) { return e.insertSpace(t, e.isNeedInserted() && g) })); if (void 0 !== u.href) return t("a", K()([f, { ref: "buttonNode" }]), [p, y]); var b = t("button", K()([f, { ref: "buttonNode", attrs: { type: r || "button" } }]), [p, y]); return "link" === n ? b : t(Us, [b]) } }, _f = { prefixCls: p["a"].string, size: { validator: function (e) { return ["small", "large", "default"].includes(e) } } }, Cf = { name: "AButtonGroup", props: _f, inject: { configProvider: { default: function () { return Vt } } }, data: function () { return { sizeMap: { large: "lg", small: "sm" } } }, render: function () { var e, t = arguments[0], n = this.prefixCls, r = this.size, i = this.$slots, o = this.configProvider.getPrefixCls, a = o("btn-group", n), s = ""; switch (r) { case "large": s = "lg"; break; case "small": s = "sm"; break; default: break }var c = (e = {}, h()(e, "" + a, !0), h()(e, a + "-" + s, s), e); return t("div", { class: c }, [Object(v["c"])(i["default"])]) } }; wf.Group = Cf, wf.install = function (e) { e.use(N), e.component(wf.name, wf), e.component(Cf.name, Cf) }; var Mf = wf, Of = function () { return { trigger: p["a"].array.def(["hover"]), overlay: p["a"].any, visible: p["a"].bool, disabled: p["a"].bool, align: p["a"].object, getPopupContainer: p["a"].func, prefixCls: p["a"].string, transitionName: p["a"].string, placement: p["a"].oneOf(["topLeft", "topCenter", "topRight", "bottomLeft", "bottomCenter", "bottomRight"]), overlayClassName: p["a"].string, overlayStyle: p["a"].object, forceRender: p["a"].bool, mouseEnterDelay: p["a"].number, mouseLeaveDelay: p["a"].number, openClassName: p["a"].string, minOverlayWidthMatchTrigger: p["a"].bool } }, kf = gf(), Sf = Of(), Tf = Mf.Group, Af = s()({}, _f, Sf, { type: p["a"].oneOf(["primary", "ghost", "dashed", "danger", "default"]).def("default"), size: p["a"].oneOf(["small", "large", "default"]).def("default"), htmlType: kf.htmlType, href: p["a"].string, disabled: p["a"].bool, prefixCls: p["a"].string, placement: Sf.placement.def("bottomRight"), icon: p["a"].any, title: p["a"].string }), Lf = { name: "ADropdownButton", model: { prop: "visible", event: "visibleChange" }, props: Af, provide: function () { return { savePopupRef: this.savePopupRef } }, inject: { configProvider: { default: function () { return Vt } } }, methods: { savePopupRef: function (e) { this.popupRef = e }, onClick: function (e) { this.$emit("click", e) }, onVisibleChange: function (e) { this.$emit("visibleChange", e) } }, render: function () { var e = arguments[0], t = this.$props, n = t.type, r = t.disabled, i = t.htmlType, o = t.prefixCls, a = t.trigger, c = t.align, u = t.visible, h = t.placement, f = t.getPopupContainer, d = t.href, p = t.title, m = l()(t, ["type", "disabled", "htmlType", "prefixCls", "trigger", "align", "visible", "placement", "getPopupContainer", "href", "title"]), g = Object(v["g"])(this, "icon") || e(Ve, { attrs: { type: "ellipsis" } }), y = this.configProvider.getPopupContainer, b = this.configProvider.getPrefixCls, x = b("dropdown-button", o), w = { props: { align: c, disabled: r, trigger: r ? [] : a, placement: h, getPopupContainer: f || y }, on: { visibleChange: this.onVisibleChange } }; Object(v["s"])(this, "visible") && (w.props.visible = u); var _ = { props: s()({}, m), class: x }; return e(Tf, _, [e(Mf, { attrs: { type: n, disabled: r, htmlType: i, href: d, title: p }, on: { click: this.onClick } }, [this.$slots["default"]]), e(Ef, w, [e("template", { slot: "overlay" }, [Object(v["g"])(this, "overlay")]), e(Mf, { attrs: { type: n } }, [g])])]) } }, jf = Of(), zf = { name: "ADropdown", props: s()({}, jf, { prefixCls: p["a"].string, mouseEnterDelay: p["a"].number.def(.15), mouseLeaveDelay: p["a"].number.def(.1), placement: jf.placement.def("bottomLeft") }), model: { prop: "visible", event: "visibleChange" }, provide: function () { return { savePopupRef: this.savePopupRef } }, inject: { configProvider: { default: function () { return Vt } } }, methods: { savePopupRef: function (e) { this.popupRef = e }, getTransitionName: function () { var e = this.$props, t = e.placement, n = void 0 === t ? "" : t, r = e.transitionName; return void 0 !== r ? r : n.indexOf("top") >= 0 ? "slide-down" : "slide-up" }, renderOverlay: function (e) { var t = this.$createElement, n = Object(v["g"])(this, "overlay"), r = Array.isArray(n) ? n[0] : n, i = r && Object(v["m"])(r), o = i || {}, a = o.selectable, s = void 0 !== a && a, c = o.focusable, l = void 0 === c || c, u = t("span", { class: e + "-menu-submenu-arrow" }, [t(Ve, { attrs: { type: "right" }, class: e + "-menu-submenu-arrow-icon" })]), h = r && r.componentOptions ? Object(en["a"])(r, { props: { mode: "vertical", selectable: s, focusable: l, expandIcon: u } }) : n; return h } }, render: function () { var e = arguments[0], t = this.$slots, n = Object(v["l"])(this), r = n.prefixCls, i = n.trigger, o = n.disabled, a = n.getPopupContainer, c = this.configProvider.getPopupContainer, l = this.configProvider.getPrefixCls, u = l("dropdown", r), h = Object(en["a"])(t["default"], { class: u + "-trigger", props: { disabled: o } }), f = o ? [] : i, d = void 0; f && -1 !== f.indexOf("contextmenu") && (d = !0); var p = { props: s()({ alignPoint: d }, n, { prefixCls: u, getPopupContainer: a || c, transitionName: this.getTransitionName(), trigger: f }), on: Object(v["k"])(this) }; return e(mf, p, [h, e("template", { slot: "overlay" }, [this.renderOverlay(u)])]) } }; zf.Button = Lf; var Ef = zf; Ef.Button = Lf, Ef.install = function (e) { e.use(N), e.component(Ef.name, Ef), e.component(Lf.name, Lf) }; var Pf = Ef, Df = { name: "Checkbox", mixins: [m["a"]], inheritAttrs: !1, model: { prop: "checked", event: "change" }, props: Object(v["t"])({ prefixCls: p["a"].string, name: p["a"].string, id: p["a"].string, type: p["a"].string, defaultChecked: p["a"].oneOfType([p["a"].number, p["a"].bool]), checked: p["a"].oneOfType([p["a"].number, p["a"].bool]), disabled: p["a"].bool, tabIndex: p["a"].oneOfType([p["a"].string, p["a"].number]), readOnly: p["a"].bool, autoFocus: p["a"].bool, value: p["a"].any }, { prefixCls: "rc-checkbox", type: "checkbox", defaultChecked: !1 }), data: function () { var e = Object(v["s"])(this, "checked") ? this.checked : this.defaultChecked; return { sChecked: e } }, watch: { checked: function (e) { this.sChecked = e } }, mounted: function () { var e = this; this.$nextTick((function () { e.autoFocus && e.$refs.input && e.$refs.input.focus() })) }, methods: { focus: function () { this.$refs.input.focus() }, blur: function () { this.$refs.input.blur() }, handleChange: function (e) { var t = Object(v["l"])(this); t.disabled || ("checked" in t || (this.sChecked = e.target.checked), this.$forceUpdate(), e.shiftKey = this.eventShiftKey, this.__emit("change", { target: s()({}, t, { checked: e.target.checked }), stopPropagation: function () { e.stopPropagation() }, preventDefault: function () { e.preventDefault() }, nativeEvent: e }), this.eventShiftKey = !1, "checked" in t && (this.$refs.input.checked = t.checked)) }, onClick: function (e) { this.__emit("click", e), this.eventShiftKey = e.shiftKey } }, render: function () { var e, t = arguments[0], n = Object(v["l"])(this), r = n.prefixCls, i = n.name, o = n.id, a = n.type, c = n.disabled, u = n.readOnly, f = n.tabIndex, d = n.autoFocus, p = n.value, m = l()(n, ["prefixCls", "name", "id", "type", "disabled", "readOnly", "tabIndex", "autoFocus", "value"]), g = Object(v["e"])(this), y = Object.keys(s()({}, m, g)).reduce((function (e, t) { return "aria-" !== t.substr(0, 5) && "data-" !== t.substr(0, 5) && "role" !== t || (e[t] = m[t]), e }), {}), b = this.sChecked, x = Q()(r, (e = {}, h()(e, r + "-checked", b), h()(e, r + "-disabled", c), e)); return t("span", { class: x }, [t("input", K()([{ attrs: { name: i, id: o, type: a, readOnly: u, disabled: c, tabIndex: f, autoFocus: d }, class: r + "-input", domProps: { checked: !!b, value: p }, ref: "input" }, { attrs: y, on: s()({}, Object(v["k"])(this), { change: this.handleChange, click: this.onClick }) }])), t("span", { class: r + "-inner" })]) } }, Hf = Df; function Vf() { } var If = { name: "ACheckbox", inheritAttrs: !1, __ANT_CHECKBOX: !0, model: { prop: "checked" }, props: { prefixCls: p["a"].string, defaultChecked: p["a"].bool, checked: p["a"].bool, disabled: p["a"].bool, isGroup: p["a"].bool, value: p["a"].any, name: p["a"].string, id: p["a"].string, indeterminate: p["a"].bool, type: p["a"].string.def("checkbox"), autoFocus: p["a"].bool }, inject: { configProvider: { default: function () { return Vt } }, checkboxGroupContext: { default: function () { } } }, watch: { value: function (e, t) { var n = this; this.$nextTick((function () { var r = n.checkboxGroupContext, i = void 0 === r ? {} : r; i.registerValue && i.cancelValue && (i.cancelValue(t), i.registerValue(e)) })) } }, mounted: function () { var e = this.value, t = this.checkboxGroupContext, n = void 0 === t ? {} : t; n.registerValue && n.registerValue(e), fe(Object(v["b"])(this, "checked") || this.checkboxGroupContext || !Object(v["b"])(this, "value"), "Checkbox", "`value` is not validate prop, do you mean `checked`?") }, beforeDestroy: function () { var e = this.value, t = this.checkboxGroupContext, n = void 0 === t ? {} : t; n.cancelValue && n.cancelValue(e) }, methods: { handleChange: function (e) { var t = e.target.checked; this.$emit("input", t), this.$emit("change", e) }, focus: function () { this.$refs.vcCheckbox.focus() }, blur: function () { this.$refs.vcCheckbox.blur() } }, render: function () { var e, t = this, n = arguments[0], r = this.checkboxGroupContext, i = this.$slots, o = Object(v["l"])(this), a = i["default"], c = Object(v["k"])(this), u = c.mouseenter, f = void 0 === u ? Vf : u, d = c.mouseleave, p = void 0 === d ? Vf : d, m = (c.input, l()(c, ["mouseenter", "mouseleave", "input"])), g = o.prefixCls, y = o.indeterminate, b = l()(o, ["prefixCls", "indeterminate"]), x = this.configProvider.getPrefixCls, w = x("checkbox", g), _ = { props: s()({}, b, { prefixCls: w }), on: m, attrs: Object(v["e"])(this) }; r ? (_.on.change = function () { for (var e = arguments.length, n = Array(e), i = 0; i < e; i++)n[i] = arguments[i]; t.$emit.apply(t, ["change"].concat(n)), r.toggleOption({ label: a, value: o.value }) }, _.props.name = r.name, _.props.checked = -1 !== r.sValue.indexOf(o.value), _.props.disabled = o.disabled || r.disabled, _.props.indeterminate = y) : _.on.change = this.handleChange; var C = Q()((e = {}, h()(e, w + "-wrapper", !0), h()(e, w + "-wrapper-checked", _.props.checked), h()(e, w + "-wrapper-disabled", _.props.disabled), e)), M = Q()(h()({}, w + "-indeterminate", y)); return n("label", { class: C, on: { mouseenter: f, mouseleave: p } }, [n(Hf, K()([_, { class: M, ref: "vcCheckbox" }])), void 0 !== a && n("span", [a])]) } }; function Nf() { } var Rf = { name: "ACheckboxGroup", model: { prop: "value" }, props: { name: p["a"].string, prefixCls: p["a"].string, defaultValue: p["a"].array, value: p["a"].array, options: p["a"].array.def([]), disabled: p["a"].bool }, provide: function () { return { checkboxGroupContext: this } }, inject: { configProvider: { default: function () { return Vt } } }, data: function () { var e = this.value, t = this.defaultValue; return { sValue: e || t || [], registeredValues: [] } }, watch: { value: function (e) { this.sValue = e || [] } }, methods: { getOptions: function () { var e = this.options, t = this.$scopedSlots; return e.map((function (e) { if ("string" === typeof e) return { label: e, value: e }; var n = e.label; return void 0 === n && t.label && (n = t.label(e)), s()({}, e, { label: n }) })) }, cancelValue: function (e) { this.registeredValues = this.registeredValues.filter((function (t) { return t !== e })) }, registerValue: function (e) { this.registeredValues = [].concat(X()(this.registeredValues), [e]) }, toggleOption: function (e) { var t = this.registeredValues, n = this.sValue.indexOf(e.value), r = [].concat(X()(this.sValue)); -1 === n ? r.push(e.value) : r.splice(n, 1), Object(v["b"])(this, "value") || (this.sValue = r); var i = this.getOptions(), o = r.filter((function (e) { return -1 !== t.indexOf(e) })).sort((function (e, t) { var n = i.findIndex((function (t) { return t.value === e })), r = i.findIndex((function (e) { return e.value === t })); return n - r })); this.$emit("input", o), this.$emit("change", o) } }, render: function () { var e = arguments[0], t = this.$props, n = this.$data, r = this.$slots, i = t.prefixCls, o = t.options, a = this.configProvider.getPrefixCls, s = a("checkbox", i), c = r["default"], l = s + "-group"; return o && o.length > 0 && (c = this.getOptions().map((function (r) { return e(If, { attrs: { prefixCls: s, disabled: "disabled" in r ? r.disabled : t.disabled, indeterminate: r.indeterminate, value: r.value, checked: -1 !== n.sValue.indexOf(r.value) }, key: r.value.toString(), on: { change: r.onChange || Nf }, class: l + "-item" }, [r.label]) }))), e("div", { class: l }, [c]) } }; If.Group = Rf, If.install = function (e) { e.use(N), e.component(If.name, If), e.component(Rf.name, Rf) }; var Ff = If; function Yf() { } var $f = { name: "ARadio", model: { prop: "checked" }, props: { prefixCls: p["a"].string, defaultChecked: Boolean, checked: { type: Boolean, default: void 0 }, disabled: Boolean, isGroup: Boolean, value: p["a"].any, name: String, id: String, autoFocus: Boolean, type: p["a"].string.def("radio") }, inject: { radioGroupContext: { default: void 0 }, configProvider: { default: function () { return Vt } } }, methods: { focus: function () { this.$refs.vcCheckbox.focus() }, blur: function () { this.$refs.vcCheckbox.blur() }, handleChange: function (e) { var t = e.target.checked; this.$emit("input", t), this.$emit("change", e) }, onChange: function (e) { this.$emit("change", e), this.radioGroupContext && this.radioGroupContext.onRadioChange && this.radioGroupContext.onRadioChange(e) } }, render: function () { var e, t = arguments[0], n = this.$slots, r = this.radioGroupContext, i = Object(v["l"])(this), o = n["default"], a = Object(v["k"])(this), c = a.mouseenter, u = void 0 === c ? Yf : c, f = a.mouseleave, d = void 0 === f ? Yf : f, p = l()(a, ["mouseenter", "mouseleave"]), m = i.prefixCls, g = l()(i, ["prefixCls"]), y = this.configProvider.getPrefixCls, b = y("radio", m), x = { props: s()({}, g, { prefixCls: b }), on: p, attrs: Object(v["e"])(this) }; r ? (x.props.name = r.name, x.on.change = this.onChange, x.props.checked = i.value === r.stateValue, x.props.disabled = i.disabled || r.disabled) : x.on.change = this.handleChange; var w = Q()((e = {}, h()(e, b + "-wrapper", !0), h()(e, b + "-wrapper-checked", x.props.checked), h()(e, b + "-wrapper-disabled", x.props.disabled), e)); return t("label", { class: w, on: { mouseenter: u, mouseleave: d } }, [t(Hf, K()([x, { ref: "vcCheckbox" }])), void 0 !== o ? t("span", [o]) : null]) } }; function Bf() { } var Wf = { name: "ARadioGroup", model: { prop: "value" }, props: { prefixCls: p["a"].string, defaultValue: p["a"].any, value: p["a"].any, size: { default: "default", validator: function (e) { return ["large", "default", "small"].includes(e) } }, options: { default: function () { return [] }, type: Array }, disabled: Boolean, name: String, buttonStyle: p["a"].string.def("outline") }, data: function () { var e = this.value, t = this.defaultValue; return this.updatingValue = !1, { stateValue: void 0 === e ? t : e } }, provide: function () { return { radioGroupContext: this } }, inject: { configProvider: { default: function () { return Vt } } }, computed: { radioOptions: function () { var e = this.disabled; return this.options.map((function (t) { return "string" === typeof t ? { label: t, value: t } : s()({}, t, { disabled: void 0 === t.disabled ? e : t.disabled }) })) }, classes: function () { var e, t = this.prefixCls, n = this.size; return e = {}, h()(e, "" + t, !0), h()(e, t + "-" + n, n), e } }, watch: { value: function (e) { this.updatingValue = !1, this.stateValue = e } }, methods: { onRadioChange: function (e) { var t = this, n = this.stateValue, r = e.target.value; Object(v["s"])(this, "value") || (this.stateValue = r), this.updatingValue || r === n || (this.updatingValue = !0, this.$emit("input", r), this.$emit("change", e)), this.$nextTick((function () { t.updatingValue = !1 })) } }, render: function () { var e = this, t = arguments[0], n = Object(v["k"])(this), r = n.mouseenter, i = void 0 === r ? Bf : r, o = n.mouseleave, a = void 0 === o ? Bf : o, s = Object(v["l"])(this), c = s.prefixCls, l = s.options, u = s.buttonStyle, f = this.configProvider.getPrefixCls, d = f("radio", c), p = d + "-group", m = Q()(p, p + "-" + u, h()({}, p + "-" + s.size, s.size)), g = Object(v["c"])(this.$slots["default"]); return l && l.length > 0 && (g = l.map((function (n) { return "string" === typeof n ? t($f, { key: n, attrs: { prefixCls: d, disabled: s.disabled, value: n, checked: e.stateValue === n } }, [n]) : t($f, { key: "radio-group-value-options-" + n.value, attrs: { prefixCls: d, disabled: n.disabled || s.disabled, value: n.value, checked: e.stateValue === n.value } }, [n.label]) }))), t("div", { class: m, on: { mouseenter: i, mouseleave: a } }, [g]) } }, qf = { name: "ARadioButton", props: s()({}, $f.props), inject: { radioGroupContext: { default: void 0 }, configProvider: { default: function () { return Vt } } }, render: function () { var e = arguments[0], t = Object(v["l"])(this), n = t.prefixCls, r = l()(t, ["prefixCls"]), i = this.configProvider.getPrefixCls, o = i("radio-button", n), a = { props: s()({}, r, { prefixCls: o }), on: Object(v["k"])(this) }; return this.radioGroupContext && (a.on.change = this.radioGroupContext.onRadioChange, a.props.checked = this.$props.value === this.radioGroupContext.stateValue, a.props.disabled = this.$props.disabled || this.radioGroupContext.disabled), e($f, a, [this.$slots["default"]]) } }; $f.Group = Wf, $f.Button = qf, $f.install = function (e) { e.use(N), e.component($f.name, $f), e.component($f.Group.name, $f.Group), e.component($f.Button.name, $f.Button) }; var Uf = $f, Kf = { name: "FilterDropdownMenuWrapper", methods: { handelClick: function (e) { e.stopPropagation() } }, render: function () { var e = arguments[0], t = this.$slots, n = this.handelClick; return e("div", { on: { click: n } }, [t["default"]]) } }, Gf = { props: { value: p["a"].oneOfType([p["a"].string, p["a"].number]), label: p["a"].oneOfType([p["a"].string, p["a"].number]), disabled: p["a"].bool, title: p["a"].oneOfType([p["a"].string, p["a"].number]) }, isSelectOption: !0 }, Xf = { props: { value: p["a"].oneOfType([p["a"].string, p["a"].number]), label: p["a"].oneOfType([p["a"].string, p["a"].number]) }, isSelectOptGroup: !0 }, Jf = { name: "MenuItemGroup", props: { renderMenuItem: p["a"].func, index: p["a"].number, className: p["a"].string, subMenuKey: p["a"].string, rootPrefixCls: p["a"].string, disabled: p["a"].bool.def(!0), title: p["a"].any }, isMenuItemGroup: !0, methods: { renderInnerMenuItem: function (e) { var t = this.$props, n = t.renderMenuItem, r = t.index, i = t.subMenuKey; return n(e, r, i) } }, render: function () { var e = arguments[0], t = s()({}, this.$props), n = t.rootPrefixCls, r = t.title, i = n + "-item-group-title", o = n + "-item-group-list", a = s()({}, Object(v["k"])(this)); return delete a.click, e("li", { on: a, class: n + "-item-group" }, [e("div", { class: i, attrs: { title: "string" === typeof r ? r : void 0 } }, [Object(v["g"])(this, "title")]), e("ul", { class: o }, [this.$slots["default"] && this.$slots["default"].map(this.renderInnerMenuItem)])]) } }, Qf = Jf; function Zf(e) { return "string" === typeof e ? e.trim() : "" } function ed(e) { if (!e) return null; var t = Object(v["m"])(e); if ("value" in t) return t.value; if (void 0 !== Object(v["j"])(e)) return Object(v["j"])(e); if (Object(v["o"])(e).isSelectOptGroup) { var n = Object(v["g"])(e, "label"); if (n) return n } throw new Error("Need at least a key or a value or a label (only for OptGroup) for " + e) } function td(e, t) { if ("value" === t) return ed(e); if ("children" === t) { var n = e.$slots ? Object(en["b"])(e.$slots["default"], !0) : Object(en["b"])(e.componentOptions.children, !0); return 1 !== n.length || n[0].tag ? n : n[0].text } var r = Object(v["m"])(e); return t in r ? r[t] : Object(v["e"])(e)[t] } function nd(e) { return e.multiple } function rd(e) { return e.combobox } function id(e) { return e.multiple || e.tags } function od(e) { return id(e) || rd(e) } function ad(e) { return !od(e) } function sd(e) { var t = e; return void 0 === e ? t = [] : Array.isArray(e) || (t = [e]), t } function cd(e) { return ("undefined" === typeof e ? "undefined" : Tt()(e)) + "-" + e } function ld(e) { e.preventDefault() } function ud(e, t) { var n = -1; if (e) for (var r = 0; r < e.length; r++)if (e[r] === t) { n = r; break } return n } function hd(e, t) { var n = void 0; if (e = sd(e), e) for (var r = 0; r < e.length; r++)if (e[r].key === t) { n = e[r].label; break } return n } function fd(e, t) { if (null === t || void 0 === t) return []; var n = []; return e.forEach((function (e) { if (Object(v["o"])(e).isMenuItemGroup) n = n.concat(fd(e.componentOptions.children, t)); else { var r = ed(e), i = e.key; -1 !== ud(t, r) && void 0 !== i && n.push(i) } })), n } var dd = { userSelect: "none", WebkitUserSelect: "none" }, pd = { unselectable: "on" }; function vd(e) { for (var t = 0; t < e.length; t++) { var n = e[t], r = Object(v["m"])(n); if (Object(v["o"])(n).isMenuItemGroup) { var i = vd(n.componentOptions.children); if (i) return i } else if (!r.disabled) return n } return null } function md(e, t) { for (var n = 0; n < t.length; ++n)if (e.lastIndexOf(t[n]) > 0) return !0; return !1 } function gd(e, t) { var n = new RegExp("[" + t.join() + "]"); return e.split(n).filter((function (e) { return e })) } function yd(e, t) { var n = Object(v["m"])(t); if (n.disabled) return !1; var r = td(t, this.optionFilterProp); return r = r.length && r[0].text ? r[0].text : String(r), r.toLowerCase().indexOf(e.toLowerCase()) > -1 } function bd(e, t) { if (!ad(t) && !nd(t) && "string" !== typeof e) throw new Error("Invalid `value` of type `" + ("undefined" === typeof e ? "undefined" : Tt()(e)) + "` supplied to Option, expected `string` when `tags/combobox` is `true`.") } function xd(e, t) { return function (n) { e[t] = n } } function wd() { var e = (new Date).getTime(), t = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function (t) { var n = (e + 16 * Math.random()) % 16 | 0; return e = Math.floor(e / 16), ("x" === t ? n : 7 & n | 8).toString(16) })); return t } var _d = { name: "DropdownMenu", mixins: [m["a"]], props: { ariaId: p["a"].string, defaultActiveFirstOption: p["a"].bool, value: p["a"].any, dropdownMenuStyle: p["a"].object, multiple: p["a"].bool, prefixCls: p["a"].string, menuItems: p["a"].any, inputValue: p["a"].string, visible: p["a"].bool, backfillValue: p["a"].any, firstActiveValue: p["a"].string, menuItemSelectedIcon: p["a"].any }, watch: { visible: function (e) { var t = this; e ? this.$nextTick((function () { t.scrollActiveItemToView() })) : this.lastVisible = e } }, created: function () { this.rafInstance = null, this.lastInputValue = this.$props.inputValue, this.lastVisible = !1 }, mounted: function () { var e = this; this.$nextTick((function () { e.scrollActiveItemToView() })), this.lastVisible = this.$props.visible }, updated: function () { var e = this.$props; this.lastVisible = e.visible, this.lastInputValue = e.inputValue, this.prevVisible = this.visible }, beforeDestroy: function () { this.rafInstance && io.a.cancel(this.rafInstance) }, methods: { scrollActiveItemToView: function () { var e = this, t = this.firstActiveItem && this.firstActiveItem.$el, n = this.$props, r = n.value, i = n.visible, o = n.firstActiveValue; if (t && i) { var a = { onlyScrollIfNeeded: !0 }; r && 0 !== r.length || !o || (a.alignWithTop = !0), this.rafInstance = io()((function () { Xh(t, e.$refs.menuRef.$el, a) })) } }, renderMenu: function () { var e = this, t = this.$createElement, n = this.$props, r = n.menuItems, i = n.defaultActiveFirstOption, o = n.value, a = n.prefixCls, c = n.multiple, l = n.inputValue, u = n.firstActiveValue, h = n.dropdownMenuStyle, f = n.backfillValue, d = n.visible, p = Object(v["g"])(this, "menuItemSelectedIcon"), m = Object(v["k"])(this), g = m.menuDeselect, y = m.menuSelect, b = m.popupScroll; if (r && r.length) { var x = fd(r, o), w = { props: { multiple: c, itemIcon: c ? p : null, selectedKeys: x, prefixCls: a + "-menu" }, on: {}, style: h, ref: "menuRef", attrs: { role: "listbox" } }; b && (w.on.scroll = b), c ? (w.on.deselect = g, w.on.select = y) : w.on.click = y; var _ = {}, C = i, M = r; if (x.length || u) { n.visible && !this.lastVisible ? _.activeKey = x[0] || u : d || (x[0] && (C = !1), _.activeKey = void 0); var O = !1, k = function (t) { return !O && -1 !== x.indexOf(t.key) || !O && !x.length && -1 !== u.indexOf(t.key) ? (O = !0, Object(en["a"])(t, { directives: [{ name: "ant-ref", value: function (t) { e.firstActiveItem = t } }] })) : t }; M = r.map((function (e) { if (Object(v["o"])(e).isMenuItemGroup) { var t = e.componentOptions.children.map(k); return Object(en["a"])(e, { children: t }) } return k(e) })) } else this.firstActiveItem = null; var S = o && o[o.length - 1]; return l === this.lastInputValue || S && S === f || (_.activeKey = ""), w.props = s()({}, _, w.props, { defaultActiveFirst: C }), t(cf, w, [M]) } return null } }, render: function () { var e = arguments[0], t = this.renderMenu(), n = Object(v["k"])(this), r = n.popupFocus, i = n.popupScroll; return t ? e("div", { style: { overflow: "auto", transform: "translateZ(0)" }, attrs: { id: this.$props.ariaId, tabIndex: "-1" }, on: { focus: r, mousedown: ld, scroll: i }, ref: "menuContainer" }, [t]) : null } }, Cd = { bottomLeft: { points: ["tl", "bl"], offset: [0, 4], overflow: { adjustX: 0, adjustY: 1 } }, topLeft: { points: ["bl", "tl"], offset: [0, -4], overflow: { adjustX: 0, adjustY: 1 } } }, Md = { name: "SelectTrigger", mixins: [m["a"]], props: { dropdownMatchSelectWidth: p["a"].bool, defaultActiveFirstOption: p["a"].bool, dropdownAlign: p["a"].object, visible: p["a"].bool, disabled: p["a"].bool, showSearch: p["a"].bool, dropdownClassName: p["a"].string, dropdownStyle: p["a"].object, dropdownMenuStyle: p["a"].object, multiple: p["a"].bool, inputValue: p["a"].string, filterOption: p["a"].any, empty: p["a"].bool, options: p["a"].any, prefixCls: p["a"].string, popupClassName: p["a"].string, value: p["a"].array, showAction: p["a"].arrayOf(p["a"].string), combobox: p["a"].bool, animation: p["a"].string, transitionName: p["a"].string, getPopupContainer: p["a"].func, backfillValue: p["a"].any, menuItemSelectedIcon: p["a"].any, dropdownRender: p["a"].func, ariaId: p["a"].string }, data: function () { return { dropdownWidth: 0 } }, created: function () { this.rafInstance = null, this.saveDropdownMenuRef = xd(this, "dropdownMenuRef"), this.saveTriggerRef = xd(this, "triggerRef") }, mounted: function () { var e = this; this.$nextTick((function () { e.setDropdownWidth() })) }, updated: function () { var e = this; this.$nextTick((function () { e.setDropdownWidth() })) }, beforeDestroy: function () { this.cancelRafInstance() }, methods: { setDropdownWidth: function () { var e = this; this.cancelRafInstance(), this.rafInstance = io()((function () { var t = e.$el.offsetWidth; t !== e.dropdownWidth && e.setState({ dropdownWidth: t }) })) }, cancelRafInstance: function () { this.rafInstance && io.a.cancel(this.rafInstance) }, getInnerMenu: function () { return this.dropdownMenuRef && this.dropdownMenuRef.$refs.menuRef }, getPopupDOMNode: function () { return this.triggerRef.getPopupDomNode() }, getDropdownElement: function (e) { var t = this.$createElement, n = this.value, r = this.firstActiveValue, i = this.defaultActiveFirstOption, o = this.dropdownMenuStyle, a = this.getDropdownPrefixCls, c = this.backfillValue, l = this.menuItemSelectedIcon, u = Object(v["k"])(this), h = u.menuSelect, f = u.menuDeselect, d = u.popupScroll, p = this.$props, m = p.dropdownRender, g = p.ariaId, y = { props: s()({}, e.props, { ariaId: g, prefixCls: a(), value: n, firstActiveValue: r, defaultActiveFirstOption: i, dropdownMenuStyle: o, backfillValue: c, menuItemSelectedIcon: l }), on: s()({}, e.on, { menuSelect: h, menuDeselect: f, popupScroll: d }), directives: [{ name: "ant-ref", value: this.saveDropdownMenuRef }] }, b = t(_d, y); return m ? m(b, p) : null }, getDropdownTransitionName: function () { var e = this.$props, t = e.transitionName; return !t && e.animation && (t = this.getDropdownPrefixCls() + "-" + e.animation), t }, getDropdownPrefixCls: function () { return this.prefixCls + "-dropdown" } }, render: function () { var e, t = arguments[0], n = this.$props, r = this.$slots, i = n.multiple, o = n.visible, a = n.inputValue, c = n.dropdownAlign, l = n.disabled, u = n.showSearch, f = n.dropdownClassName, d = n.dropdownStyle, p = n.dropdownMatchSelectWidth, m = n.options, g = n.getPopupContainer, y = n.showAction, b = n.empty, x = Object(v["k"])(this), w = x.mouseenter, _ = x.mouseleave, C = x.popupFocus, M = x.dropdownVisibleChange, O = this.getDropdownPrefixCls(), k = (e = {}, h()(e, f, !!f), h()(e, O + "--" + (i ? "multiple" : "single"), 1), h()(e, O + "--empty", b), e), S = this.getDropdownElement({ props: { menuItems: m, multiple: i, inputValue: a, visible: o }, on: { popupFocus: C } }), T = void 0; T = l ? [] : ad(n) && !u ? ["click"] : ["blur"]; var A = s()({}, d), L = p ? "width" : "minWidth"; this.dropdownWidth && (A[L] = this.dropdownWidth + "px"); var j = { props: s()({}, n, { showAction: l ? [] : y, hideAction: T, ref: "triggerRef", popupPlacement: "bottomLeft", builtinPlacements: Cd, prefixCls: O, popupTransitionName: this.getDropdownTransitionName(), popupAlign: c, popupVisible: o, getPopupContainer: g, popupClassName: Q()(k), popupStyle: A }), on: { popupVisibleChange: M }, directives: [{ name: "ant-ref", value: this.saveTriggerRef }] }; return w && (j.on.mouseenter = w), _ && (j.on.mouseleave = _), t(Zr, j, [r["default"], t("template", { slot: "popup" }, [S])]) } }, Od = { defaultActiveFirstOption: p["a"].bool, multiple: p["a"].bool, filterOption: p["a"].any, showSearch: p["a"].bool, disabled: p["a"].bool, allowClear: p["a"].bool, showArrow: p["a"].bool, tags: p["a"].bool, prefixCls: p["a"].string, transitionName: p["a"].string, optionLabelProp: p["a"].string, optionFilterProp: p["a"].string, animation: p["a"].string, choiceTransitionName: p["a"].string, open: p["a"].bool, defaultOpen: p["a"].bool, placeholder: p["a"].any, labelInValue: p["a"].bool, loading: p["a"].bool, value: p["a"].any, defaultValue: p["a"].any, dropdownStyle: p["a"].object, dropdownClassName: p["a"].string, maxTagTextLength: p["a"].number, maxTagCount: p["a"].number, maxTagPlaceholder: p["a"].any, tokenSeparators: p["a"].arrayOf(p["a"].string), getInputElement: p["a"].func, showAction: p["a"].arrayOf(p["a"].string), autoFocus: p["a"].bool, getPopupContainer: p["a"].func, clearIcon: p["a"].any, inputIcon: p["a"].any, removeIcon: p["a"].any, menuItemSelectedIcon: p["a"].any, dropdownRender: p["a"].func, mode: p["a"].oneOf(["multiple", "tags"]), backfill: p["a"].bool, dropdownAlign: p["a"].any, dropdownMatchSelectWidth: p["a"].bool, dropdownMenuStyle: p["a"].object, notFoundContent: p["a"].oneOfType([String, Number]), tabIndex: p["a"].oneOfType([String, Number]) }, kd = "undefined" !== typeof window, Sd = "undefined" !== typeof WXEnvironment && !!WXEnvironment.platform, Td = (Sd && WXEnvironment.platform.toLowerCase(), kd && window.navigator.userAgent.toLowerCase()), Ad = Td && /msie|trident/.test(Td), Ld = (Td && Td.indexOf("msie 9.0"), Td && Td.indexOf("edge/") > 0); Td && Td.indexOf("android"), Td && /iphone|ipad|ipod|ios/.test(Td), Td && /chrome\/\d+/.test(Td), Td && /phantomjs/.test(Td), Td && Td.match(/firefox\/(\d+)/), d.a.use(_.a, { name: "ant-ref" }); var jd = "RC_SELECT_EMPTY_VALUE_KEY", zd = function () { return null }; function Ed(e) { return !e || null === e.offsetParent } function Pd() { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return function () { for (var e = arguments.length, n = Array(e), r = 0; r < e; r++)n[r] = arguments[r]; for (var i = 0; i < t.length; i++)t[i] && "function" === typeof t[i] && t[i].apply(Pd, n) } } var Dd = { inheritAttrs: !1, Option: Gf, OptGroup: Xf, name: "Select", mixins: [m["a"]], props: s()({}, Od, { prefixCls: Od.prefixCls.def("rc-select"), defaultOpen: p["a"].bool.def(!1), labelInValue: Od.labelInValue.def(!1), defaultActiveFirstOption: Od.defaultActiveFirstOption.def(!0), showSearch: Od.showSearch.def(!0), allowClear: Od.allowClear.def(!1), placeholder: Od.placeholder.def(""), dropdownMatchSelectWidth: p["a"].bool.def(!0), dropdownStyle: Od.dropdownStyle.def((function () { return {} })), dropdownMenuStyle: p["a"].object.def((function () { return {} })), optionFilterProp: Od.optionFilterProp.def("value"), optionLabelProp: Od.optionLabelProp.def("value"), notFoundContent: p["a"].any.def("Not Found"), backfill: p["a"].bool.def(!1), showAction: Od.showAction.def(["click"]), combobox: p["a"].bool.def(!1), tokenSeparators: p["a"].arrayOf(p["a"].string).def([]), autoClearSearchValue: p["a"].bool.def(!0), tabIndex: p["a"].any.def(0), dropdownRender: p["a"].func.def((function (e) { return e })) }), model: { prop: "value", event: "change" }, created: function () { this.saveInputRef = xd(this, "inputRef"), this.saveInputMirrorRef = xd(this, "inputMirrorRef"), this.saveTopCtrlRef = xd(this, "topCtrlRef"), this.saveSelectTriggerRef = xd(this, "selectTriggerRef"), this.saveRootRef = xd(this, "rootRef"), this.saveSelectionRef = xd(this, "selectionRef"), this._focused = !1, this._mouseDown = !1, this._options = [], this._empty = !1 }, data: function () { var e = Object(v["l"])(this), t = this.getOptionsInfoFromProps(e); if (ul()(this.__propsSymbol__, "Replace slots.default with props.children and pass props.__propsSymbol__"), e.tags && "function" !== typeof e.filterOption) { var n = Object.keys(t).some((function (e) { return t[e].disabled })); ul()(!n, "Please avoid setting option to disabled in tags mode since user can always type text as tag.") } var r = { _value: this.getValueFromProps(e, !0), _inputValue: e.combobox ? this.getInputValueForCombobox(e, t, !0) : "", _open: e.defaultOpen, _optionsInfo: t, _backfillValue: "", _skipBuildOptionsInfo: !0, _ariaId: wd() }; return s()({}, r, { _mirrorInputValue: r._inputValue }, this.getDerivedState(e, r)) }, mounted: function () { var e = this; this.$nextTick((function () { (e.autoFocus || e._open) && e.focus() })) }, watch: { __propsSymbol__: function () { s()(this.$data, this.getDerivedState(Object(v["l"])(this), this.$data)) }, "$data._inputValue": function (e) { this.$data._mirrorInputValue = e } }, updated: function () { var e = this; this.$nextTick((function () { if (id(e.$props)) { var t = e.getInputDOMNode(), n = e.getInputMirrorDOMNode(); t && t.value && n ? (t.style.width = "", t.style.width = n.clientWidth + 10 + "px") : t && (t.style.width = "") } e.forcePopupAlign() })) }, beforeDestroy: function () { this.clearFocusTime(), this.clearBlurTime(), this.clearComboboxTime(), this.dropdownContainer && (document.body.removeChild(this.dropdownContainer), this.dropdownContainer = null) }, methods: { getDerivedState: function (e, t) { var n = t._skipBuildOptionsInfo ? t._optionsInfo : this.getOptionsInfoFromProps(e, t), r = { _optionsInfo: n, _skipBuildOptionsInfo: !1 }; if ("open" in e && (r._open = e.open), "value" in e) { var i = this.getValueFromProps(e); r._value = i, e.combobox && (r._inputValue = this.getInputValueForCombobox(e, n)) } return r }, getOptionsFromChildren: function () { var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : []; return t.forEach((function (t) { t.data && void 0 === t.data.slot && (Object(v["o"])(t).isSelectOptGroup ? e.getOptionsFromChildren(t.componentOptions.children, n) : n.push(t)) })), n }, getInputValueForCombobox: function (e, t, n) { var r = []; if ("value" in e && !n && (r = sd(e.value)), "defaultValue" in e && n && (r = sd(e.defaultValue)), !r.length) return ""; r = r[0]; var i = r; return e.labelInValue ? i = r.label : t[cd(r)] && (i = t[cd(r)].label), void 0 === i && (i = ""), i }, getLabelFromOption: function (e, t) { return td(t, e.optionLabelProp) }, getOptionsInfoFromProps: function (e, t) { var n = this, r = this.getOptionsFromChildren(this.$props.children), i = {}; if (r.forEach((function (t) { var r = ed(t); i[cd(r)] = { option: t, value: r, label: n.getLabelFromOption(e, t), title: Object(v["r"])(t, "title"), disabled: Object(v["r"])(t, "disabled") } })), t) { var o = t._optionsInfo, a = t._value; a && a.forEach((function (e) { var t = cd(e); i[t] || void 0 === o[t] || (i[t] = o[t]) })) } return i }, getValueFromProps: function (e, t) { var n = []; return "value" in e && !t && (n = sd(e.value)), "defaultValue" in e && t && (n = sd(e.defaultValue)), e.labelInValue && (n = n.map((function (e) { return e.key }))), n }, onInputChange: function (e) { var t = e.target, n = t.value, r = t.composing, i = this.$data._inputValue, o = void 0 === i ? "" : i; if (e.isComposing || r || o === n) this.setState({ _mirrorInputValue: n }); else { var a = this.$props.tokenSeparators; if (id(this.$props) && a.length && md(n, a)) { var s = this.getValueByInput(n); return void 0 !== s && this.fireChange(s), this.setOpenState(!1, { needFocus: !0 }), void this.setInputValue("", !1) } this.setInputValue(n), this.setState({ _open: !0 }), rd(this.$props) && this.fireChange([n]) } }, onDropdownVisibleChange: function (e) { e && !this._focused && (this.clearBlurTime(), this.timeoutFocus(), this._focused = !0, this.updateFocusClassName()), this.setOpenState(e) }, onKeyDown: function (e) { var t = this.$data._open, n = this.$props.disabled; if (!n) { var r = e.keyCode; t && !this.getInputDOMNode() ? this.onInputKeydown(e) : r === Io.ENTER || r === Io.DOWN ? (r !== Io.ENTER || id(this.$props) ? t || this.setOpenState(!0) : this.maybeFocus(!0), e.preventDefault()) : r === Io.SPACE && (t || (this.setOpenState(!0), e.preventDefault())) } }, onInputKeydown: function (e) { var t = this, n = this.$props, r = n.disabled, i = n.combobox, o = n.defaultActiveFirstOption; if (!r) { var a = this.$data, s = this.getRealOpenState(a), c = e.keyCode; if (!id(this.$props) || e.target.value || c !== Io.BACKSPACE) { if (c === Io.DOWN) { if (!a._open) return this.openIfHasChildren(), e.preventDefault(), void e.stopPropagation() } else if (c === Io.ENTER && a._open) !s && i || e.preventDefault(), s && i && !1 === o && (this.comboboxTimer = setTimeout((function () { t.setOpenState(!1) }))); else if (c === Io.ESC) return void (a._open && (this.setOpenState(!1), e.preventDefault(), e.stopPropagation())); if (s && this.selectTriggerRef) { var l = this.selectTriggerRef.getInnerMenu(); l && l.onKeyDown(e, this.handleBackfill) && (e.preventDefault(), e.stopPropagation()) } } else { e.preventDefault(); var u = a._value; u.length && this.removeSelected(u[u.length - 1]) } } }, onMenuSelect: function (e) { var t = e.item; if (t) { var n = this.$data._value, r = this.$props, i = ed(t), o = n[n.length - 1], a = !1; if (id(r) ? -1 !== ud(n, i) ? a = !0 : n = n.concat([i]) : rd(r) || void 0 === o || o !== i || i === this.$data._backfillValue ? (n = [i], this.setOpenState(!1, { needFocus: !0, fireSearch: !1 })) : (this.setOpenState(!1, { needFocus: !0, fireSearch: !1 }), a = !0), a || this.fireChange(n), !a) { this.fireSelect(i); var s = rd(r) ? td(t, r.optionLabelProp) : ""; r.autoClearSearchValue && this.setInputValue(s, !1) } } }, onMenuDeselect: function (e) { var t = e.item, n = e.domEvent; if ("keydown" !== n.type || n.keyCode !== Io.ENTER) "click" === n.type && this.removeSelected(ed(t)), this.autoClearSearchValue && this.setInputValue(""); else { var r = t.$el; Ed(r) || this.removeSelected(ed(t)) } }, onArrowClick: function (e) { e.stopPropagation(), e.preventDefault(), this.clearBlurTime(), this.disabled || this.setOpenState(!this.$data._open, { needFocus: !this.$data._open }) }, onPlaceholderClick: function () { this.getInputDOMNode() && this.getInputDOMNode() && this.getInputDOMNode().focus() }, onPopupFocus: function () { this.maybeFocus(!0, !0) }, onClearSelection: function (e) { var t = this.$props, n = this.$data; if (!t.disabled) { var r = n._inputValue, i = n._value; e.stopPropagation(), (r || i.length) && (i.length && this.fireChange([]), this.setOpenState(!1, { needFocus: !0 }), r && this.setInputValue("")) } }, onChoiceAnimationLeave: function () { this.forcePopupAlign() }, getOptionInfoBySingleValue: function (e, t) { var n = this.$createElement, r = void 0; if (t = t || this.$data._optionsInfo, t[cd(e)] && (r = t[cd(e)]), r) return r; var i = e; if (this.$props.labelInValue) { var o = hd(this.$props.value, e), a = hd(this.$props.defaultValue, e); void 0 !== o ? i = o : void 0 !== a && (i = a) } var s = { option: n(Gf, { attrs: { value: e }, key: e }, [e]), value: e, label: i }; return s }, getOptionBySingleValue: function (e) { var t = this.getOptionInfoBySingleValue(e), n = t.option; return n }, getOptionsBySingleValue: function (e) { var t = this; return e.map((function (e) { return t.getOptionBySingleValue(e) })) }, getValueByLabel: function (e) { var t = this; if (void 0 === e) return null; var n = null; return Object.keys(this.$data._optionsInfo).forEach((function (r) { var i = t.$data._optionsInfo[r], o = i.disabled; if (!o) { var a = sd(i.label); a && a.join("") === e && (n = i.value) } })), n }, getVLBySingleValue: function (e) { return this.$props.labelInValue ? { key: e, label: this.getLabelBySingleValue(e) } : e }, getVLForOnChange: function (e) { var t = this, n = e; return void 0 !== n ? (n = this.labelInValue ? n.map((function (e) { return { key: e, label: t.getLabelBySingleValue(e) } })) : n.map((function (e) { return e })), id(this.$props) ? n : n[0]) : n }, getLabelBySingleValue: function (e, t) { var n = this.getOptionInfoBySingleValue(e, t), r = n.label; return r }, getDropdownContainer: function () { return this.dropdownContainer || (this.dropdownContainer = document.createElement("div"), document.body.appendChild(this.dropdownContainer)), this.dropdownContainer }, getPlaceholderElement: function () { var e = this.$createElement, t = this.$props, n = this.$data, r = !1; n._mirrorInputValue && (r = !0); var i = n._value; i.length && (r = !0), !n._mirrorInputValue && rd(t) && 1 === i.length && n._value && !n._value[0] && (r = !1); var o = t.placeholder; if (o) { var a = { on: { mousedown: ld, click: this.onPlaceholderClick }, attrs: pd, style: s()({ display: r ? "none" : "block" }, dd), class: t.prefixCls + "-selection__placeholder" }; return e("div", a, [o]) } return null }, inputClick: function (e) { this.$data._open ? (this.clearBlurTime(), e.stopPropagation()) : this._focused = !1 }, inputBlur: function (e) { var t = this, n = e.relatedTarget || document.activeElement; if ((Ad || Ld) && (e.relatedTarget === this.$refs.arrow || n && this.selectTriggerRef && this.selectTriggerRef.getInnerMenu() && this.selectTriggerRef.getInnerMenu().$el === n || tn(e.target, n))) return e.target.focus(), void e.preventDefault(); this.clearBlurTime(), this.disabled ? e.preventDefault() : this.blurTimer = setTimeout((function () { t._focused = !1, t.updateFocusClassName(); var e = t.$props, n = t.$data._value, r = t.$data._inputValue; if (ad(e) && e.showSearch && r && e.defaultActiveFirstOption) { var i = t._options || []; if (i.length) { var o = vd(i); o && (n = [ed(o)], t.fireChange(n)) } } else if (id(e) && r) { t._mouseDown ? t.setInputValue("") : (t.$data._inputValue = "", t.getInputDOMNode && t.getInputDOMNode() && (t.getInputDOMNode().value = "")); var a = t.getValueByInput(r); void 0 !== a && (n = a, t.fireChange(n)) } if (id(e) && t._mouseDown) return t.maybeFocus(!0, !0), void (t._mouseDown = !1); t.setOpenState(!1), t.$emit("blur", t.getVLForOnChange(n)) }), 200) }, inputFocus: function (e) { if (this.$props.disabled) e.preventDefault(); else { this.clearBlurTime(); var t = this.getInputDOMNode(); t && e.target === this.rootRef || (od(this.$props) || e.target !== t) && (this._focused || (this._focused = !0, this.updateFocusClassName(), id(this.$props) && this._mouseDown || this.timeoutFocus())) } }, _getInputElement: function () { var e = this.$createElement, t = this.$props, n = this.$data, r = n._inputValue, i = n._mirrorInputValue, o = Object(v["e"])(this), a = e("input", { attrs: { id: o.id, autoComplete: "off" } }), c = t.getInputElement ? t.getInputElement() : a, l = Q()(Object(v["f"])(c), h()({}, t.prefixCls + "-search__field", !0)), u = Object(v["i"])(c); return c.data = c.data || {}, e("div", { class: t.prefixCls + "-search__field__wrap", on: { click: this.inputClick } }, [Object(en["a"])(c, { props: { disabled: t.disabled, value: r }, attrs: s()({}, c.data.attrs || {}, { disabled: t.disabled, value: r }), domProps: { value: r }, class: l, directives: [{ name: "ant-ref", value: this.saveInputRef }, { name: "ant-input" }], on: { input: this.onInputChange, keydown: Pd(this.onInputKeydown, u.keydown, Object(v["k"])(this).inputKeydown), focus: Pd(this.inputFocus, u.focus), blur: Pd(this.inputBlur, u.blur) } }), e("span", K()([{ directives: [{ name: "ant-ref", value: this.saveInputMirrorRef }] }, { class: t.prefixCls + "-search__field__mirror" }]), [i, "聽"])]) }, getInputDOMNode: function () { return this.topCtrlRef ? this.topCtrlRef.querySelector("input,textarea,div[contentEditable]") : this.inputRef }, getInputMirrorDOMNode: function () { return this.inputMirrorRef }, getPopupDOMNode: function () { if (this.selectTriggerRef) return this.selectTriggerRef.getPopupDOMNode() }, getPopupMenuComponent: function () { if (this.selectTriggerRef) return this.selectTriggerRef.getInnerMenu() }, setOpenState: function (e) { var t = this, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r = this.$props, i = this.$data, o = n.needFocus, a = n.fireSearch; if (i._open !== e) { this.__emit("dropdownVisibleChange", e); var s = { _open: e, _backfillValue: "" }; !e && ad(r) && r.showSearch && this.setInputValue("", a), e || this.maybeFocus(e, !!o), this.setState(s, (function () { e && t.maybeFocus(e, !!o) })) } else this.maybeFocus(e, !!o) }, setInputValue: function (e) { var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]; e !== this.$data._inputValue && (this.setState({ _inputValue: e }, this.forcePopupAlign), t && this.$emit("search", e)) }, getValueByInput: function (e) { var t = this, n = this.$props, r = n.multiple, i = n.tokenSeparators, o = this.$data._value, a = !1; return gd(e, i).forEach((function (e) { var n = [e]; if (r) { var i = t.getValueByLabel(e); i && -1 === ud(o, i) && (o = o.concat(i), a = !0, t.fireSelect(i)) } else -1 === ud(o, e) && (o = o.concat(n), a = !0, t.fireSelect(e)) })), a ? o : void 0 }, getRealOpenState: function (e) { var t = this.$props.open; if ("boolean" === typeof t) return t; var n = (e || this.$data)._open, r = this._options || []; return !od(this.$props) && this.$props.showSearch || n && !r.length && (n = !1), n }, focus: function () { ad(this.$props) && this.selectionRef ? this.selectionRef.focus() : this.getInputDOMNode() && this.getInputDOMNode().focus() }, blur: function () { ad(this.$props) && this.selectionRef ? this.selectionRef.blur() : this.getInputDOMNode() && this.getInputDOMNode().blur() }, markMouseDown: function () { this._mouseDown = !0 }, markMouseLeave: function () { this._mouseDown = !1 }, handleBackfill: function (e) { if (this.backfill && (ad(this.$props) || rd(this.$props))) { var t = ed(e); rd(this.$props) && this.setInputValue(t, !1), this.setState({ _value: [t], _backfillValue: t }) } }, _filterOption: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : yd, r = this.$data, i = r._value, o = r._backfillValue, a = i[i.length - 1]; if (!e || a && a === o) return !0; var s = this.$props.filterOption; return Object(v["s"])(this, "filterOption") ? !0 === s && (s = n.bind(this)) : s = n.bind(this), !s || ("function" === typeof s ? s.call(this, e, t) : !Object(v["r"])(t, "disabled")) }, timeoutFocus: function () { var e = this; this.focusTimer && this.clearFocusTime(), this.focusTimer = window.setTimeout((function () { e.$emit("focus") }), 10) }, clearFocusTime: function () { this.focusTimer && (clearTimeout(this.focusTimer), this.focusTimer = null) }, clearBlurTime: function () { this.blurTimer && (clearTimeout(this.blurTimer), this.blurTimer = null) }, clearComboboxTime: function () { this.comboboxTimer && (clearTimeout(this.comboboxTimer), this.comboboxTimer = null) }, updateFocusClassName: function () { var e = this.rootRef, t = this.prefixCls; this._focused ? Pl()(e).add(t + "-focused") : Pl()(e).remove(t + "-focused") }, maybeFocus: function (e, t) { if (t || e) { var n = this.getInputDOMNode(), r = document, i = r.activeElement; n && (e || od(this.$props)) ? i !== n && (n.focus(), this._focused = !0) : i !== this.selectionRef && this.selectionRef && (this.selectionRef.focus(), this._focused = !0) } }, removeSelected: function (e, t) { var n = this.$props; if (!n.disabled && !this.isChildDisabled(e)) { t && t.stopPropagation && t.stopPropagation(); var r = this.$data._value, i = r.filter((function (t) { return t !== e })), o = id(n); if (o) { var a = e; n.labelInValue && (a = { key: e, label: this.getLabelBySingleValue(e) }), this.$emit("deselect", a, this.getOptionBySingleValue(e)) } this.fireChange(i) } }, openIfHasChildren: function () { var e = this.$props; (e.children && e.children.length || ad(e)) && this.setOpenState(!0) }, fireSelect: function (e) { this.$emit("select", this.getVLBySingleValue(e), this.getOptionBySingleValue(e)) }, fireChange: function (e) { Object(v["s"])(this, "value") || this.setState({ _value: e }, this.forcePopupAlign); var t = this.getVLForOnChange(e), n = this.getOptionsBySingleValue(e); this._valueOptions = n, this.$emit("change", t, id(this.$props) ? n : n[0]) }, isChildDisabled: function (e) { return (this.$props.children || []).some((function (t) { var n = ed(t); return n === e && Object(v["r"])(t, "disabled") })) }, forcePopupAlign: function () { this.$data._open && this.selectTriggerRef && this.selectTriggerRef.triggerRef && this.selectTriggerRef.triggerRef.forcePopupAlign() }, renderFilterOptions: function () { var e = this.$createElement, t = this.$data._inputValue, n = this.$props, r = n.children, i = n.tags, o = n.notFoundContent, a = [], c = [], l = !1, u = this.renderFilterOptionsFromChildren(r, c, a); if (i) { var h = this.$data._value; if (h = h.filter((function (e) { return -1 === c.indexOf(e) && (!t || String(e).indexOf(String(t)) > -1) })), h.sort((function (e, t) { return e.length - t.length })), h.forEach((function (t) { var n = t, r = s()({}, pd, { role: "option" }), i = e(ef, K()([{ style: dd }, { attrs: r }, { attrs: { value: n }, key: n }]), [n]); u.push(i), a.push(i) })), t && a.every((function (e) { return ed(e) !== t }))) { var f = { attrs: pd, key: t, props: { value: t, role: "option" }, style: dd }; u.unshift(e(ef, f, [t])) } } if (!u.length && o) { l = !0; var d = { attrs: pd, key: "NOT_FOUND", props: { value: "NOT_FOUND", disabled: !0, role: "option" }, style: dd }; u = [e(ef, d, [o])] } return { empty: l, options: u } }, renderFilterOptionsFromChildren: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = this, n = arguments[1], r = arguments[2], i = this.$createElement, o = [], a = this.$props, c = this.$data._inputValue, l = a.tags; return e.forEach((function (e) { if (e.data && void 0 === e.data.slot) if (Object(v["o"])(e).isSelectOptGroup) { var a = Object(v["g"])(e, "label"), u = e.key; u || "string" !== typeof a ? !a && u && (a = u) : u = a; var h = Object(v["p"])(e)["default"]; if (h = "function" === typeof h ? h() : h, c && t._filterOption(c, e)) { var f = h.map((function (e) { var t = ed(e) || e.key; return i(ef, K()([{ key: t, attrs: { value: t } }, e.data]), [e.componentOptions.children]) })); o.push(i(Qf, { key: u, attrs: { title: a }, class: Object(v["f"])(e) }, [f])) } else { var d = t.renderFilterOptionsFromChildren(h, n, r); d.length && o.push(i(Qf, K()([{ key: u, attrs: { title: a } }, e.data]), [d])) } } else { ul()(Object(v["o"])(e).isSelectOption, "the children of `Select` should be `Select.Option` or `Select.OptGroup`, instead of `" + (Object(v["o"])(e).name || Object(v["o"])(e)) + "`."); var p = ed(e); if (bd(p, t.$props), t._filterOption(c, e)) { var m = { attrs: s()({}, pd, Object(v["e"])(e)), key: p, props: s()({ value: p }, Object(v["m"])(e), { role: "option" }), style: dd, on: Object(v["i"])(e), class: Object(v["f"])(e) }, g = i(ef, m, [e.componentOptions.children]); o.push(g), r.push(g) } l && n.push(p) } })), o }, renderTopControlNode: function () { var e = this, t = this.$createElement, n = this.$props, r = this.$data, i = r._value, o = r._inputValue, a = r._open, c = n.choiceTransitionName, l = n.prefixCls, u = n.maxTagTextLength, h = n.maxTagCount, f = n.maxTagPlaceholder, d = n.showSearch, p = Object(v["g"])(this, "removeIcon"), m = l + "-selection__rendered", g = null; if (ad(n)) { var b = null; if (i.length) { var x = !1, w = 1; d && a ? (x = !o, x && (w = .4)) : x = !0; var _ = i[0], C = this.getOptionInfoBySingleValue(_), M = C.label, O = C.title; b = t("div", { key: "value", class: l + "-selection-selected-value", attrs: { title: Zf(O || M) }, style: { display: x ? "block" : "none", opacity: w } }, [M]) } g = d ? [b, t("div", { class: l + "-search " + l + "-search--inline", key: "input", style: { display: a ? "block" : "none" } }, [this._getInputElement()])] : [b] } else { var k = [], S = i, T = void 0; if (void 0 !== h && i.length > h) { S = S.slice(0, h); var A = this.getVLForOnChange(i.slice(h, i.length)), L = "+ " + (i.length - h) + " ..."; f && (L = "function" === typeof f ? f(A) : f); var j = s()({}, pd, { role: "presentation", title: Zf(L) }); T = t("li", K()([{ style: dd }, { attrs: j }, { on: { mousedown: ld }, class: l + "-selection__choice " + l + "-selection__choice__disabled", key: "maxTagPlaceholder" }]), [t("div", { class: l + "-selection__choice__content" }, [L])]) } if (id(n) && (k = S.map((function (n) { var r = e.getOptionInfoBySingleValue(n), i = r.label, o = r.title || i; u && "string" === typeof i && i.length > u && (i = i.slice(0, u) + "..."); var a = e.isChildDisabled(n), c = a ? l + "-selection__choice " + l + "-selection__choice__disabled" : l + "-selection__choice", h = s()({}, pd, { role: "presentation", title: Zf(o) }); return t("li", K()([{ style: dd }, { attrs: h }, { on: { mousedown: ld }, class: c, key: n || jd }]), [t("div", { class: l + "-selection__choice__content" }, [i]), a ? null : t("span", { on: { click: function (t) { e.removeSelected(n, t) } }, class: l + "-selection__choice__remove" }, [p || t("i", { class: l + "-selection__choice__remove-icon" }, ["脳"])])]) }))), T && k.push(T), k.push(t("li", { class: l + "-search " + l + "-search--inline", key: "__input" }, [this._getInputElement()])), id(n) && c) { var z = Object(y["a"])(c, { tag: "ul", afterLeave: this.onChoiceAnimationLeave }); g = t("transition-group", z, [k]) } else g = t("ul", [k]) } return t("div", K()([{ class: m }, { directives: [{ name: "ant-ref", value: this.saveTopCtrlRef }] }, { on: { click: this.topCtrlContainerClick } }]), [this.getPlaceholderElement(), g]) }, renderArrow: function (e) { var t = this.$createElement, n = this.$props, r = n.showArrow, i = void 0 === r ? !e : r, o = n.loading, a = n.prefixCls, s = Object(v["g"])(this, "inputIcon"); if (!i && !o) return null; var c = t("i", o ? { class: a + "-arrow-loading" } : { class: a + "-arrow-icon" }); return t("span", K()([{ key: "arrow", class: a + "-arrow", style: dd }, { attrs: pd }, { on: { click: this.onArrowClick }, ref: "arrow" }]), [s || c]) }, topCtrlContainerClick: function (e) { this.$data._open && !ad(this.$props) && e.stopPropagation() }, renderClear: function () { var e = this.$createElement, t = this.$props, n = t.prefixCls, r = t.allowClear, i = this.$data, o = i._value, a = i._inputValue, s = Object(v["g"])(this, "clearIcon"), c = e("span", K()([{ key: "clear", class: n + "-selection__clear", on: { mousedown: ld }, style: dd }, { attrs: pd }, { on: { click: this.onClearSelection } }]), [s || e("i", { class: n + "-selection__clear-icon" }, ["脳"])]); return r ? rd(this.$props) ? a ? c : null : a || o.length ? c : null : null }, selectionRefClick: function () { if (!this.disabled) { var e = this.getInputDOMNode(); this._focused && this.$data._open ? (this.setOpenState(!1, !1), e && e.blur()) : (this.clearBlurTime(), this.setOpenState(!0, !0), e && e.focus()) } }, selectionRefFocus: function (e) { this._focused || this.disabled || od(this.$props) ? e.preventDefault() : (this._focused = !0, this.updateFocusClassName(), this.$emit("focus")) }, selectionRefBlur: function (e) { od(this.$props) ? e.preventDefault() : this.inputBlur(e) } }, render: function () { var e, t = arguments[0], n = this.$props, r = id(n), i = n.showArrow, o = void 0 === i || i, a = this.$data, s = n.disabled, c = n.prefixCls, l = n.loading, u = this.renderTopControlNode(), f = this.$data, d = f._open, p = f._inputValue, m = f._value; if (d) { var g = this.renderFilterOptions(); this._empty = g.empty, this._options = g.options } var y = this.getRealOpenState(), b = this._empty, x = this._options || [], w = Object(v["k"])(this), _ = w.mouseenter, C = void 0 === _ ? zd : _, M = w.mouseleave, O = void 0 === M ? zd : M, k = w.popupScroll, S = void 0 === k ? zd : k, T = { props: {}, attrs: { role: "combobox", "aria-autocomplete": "list", "aria-haspopup": "true", "aria-expanded": y, "aria-controls": this.$data._ariaId }, on: {}, class: c + "-selection " + c + "-selection--" + (r ? "multiple" : "single"), key: "selection" }, A = { attrs: { tabIndex: -1 } }; od(n) || (A.attrs.tabIndex = n.disabled ? -1 : n.tabIndex); var L = (e = {}, h()(e, c, !0), h()(e, c + "-open", d), h()(e, c + "-focused", d || !!this._focused), h()(e, c + "-combobox", rd(n)), h()(e, c + "-disabled", s), h()(e, c + "-enabled", !s), h()(e, c + "-allow-clear", !!n.allowClear), h()(e, c + "-no-arrow", !o), h()(e, c + "-loading", !!l), e); return t(Md, K()([{ attrs: { dropdownAlign: n.dropdownAlign, dropdownClassName: n.dropdownClassName, dropdownMatchSelectWidth: n.dropdownMatchSelectWidth, defaultActiveFirstOption: n.defaultActiveFirstOption, dropdownMenuStyle: n.dropdownMenuStyle, transitionName: n.transitionName, animation: n.animation, prefixCls: n.prefixCls, dropdownStyle: n.dropdownStyle, combobox: n.combobox, showSearch: n.showSearch, options: x, empty: b, multiple: r, disabled: s, visible: y, inputValue: p, value: m, backfillValue: a._backfillValue, firstActiveValue: n.firstActiveValue, getPopupContainer: n.getPopupContainer, showAction: n.showAction, menuItemSelectedIcon: Object(v["g"])(this, "menuItemSelectedIcon") }, on: { dropdownVisibleChange: this.onDropdownVisibleChange, menuSelect: this.onMenuSelect, menuDeselect: this.onMenuDeselect, popupScroll: S, popupFocus: this.onPopupFocus, mouseenter: C, mouseleave: O } }, { directives: [{ name: "ant-ref", value: this.saveSelectTriggerRef }] }, { attrs: { dropdownRender: n.dropdownRender, ariaId: this.$data._ariaId } }]), [t("div", K()([{ directives: [{ name: "ant-ref", value: Pd(this.saveRootRef, this.saveSelectionRef) }] }, { style: Object(v["q"])(this), class: Q()(L), on: { mousedown: this.markMouseDown, mouseup: this.markMouseLeave, mouseout: this.markMouseLeave } }, A, { on: { blur: this.selectionRefBlur, focus: this.selectionRefFocus, click: this.selectionRefClick, keydown: od(n) ? zd : this.onKeyDown } }]), [t("div", T, [u, this.renderClear(), this.renderArrow(!!r)])])]) } }, Hd = (Object(vu["a"])(Dd), function () { return { prefixCls: p["a"].string, size: p["a"].oneOf(["small", "large", "default"]), showAction: p["a"].oneOfType([p["a"].string, p["a"].arrayOf(String)]), notFoundContent: p["a"].any, transitionName: p["a"].string, choiceTransitionName: p["a"].string, showSearch: p["a"].bool, allowClear: p["a"].bool, disabled: p["a"].bool, tabIndex: p["a"].number, placeholder: p["a"].any, defaultActiveFirstOption: p["a"].bool, dropdownClassName: p["a"].string, dropdownStyle: p["a"].any, dropdownMenuStyle: p["a"].any, dropdownMatchSelectWidth: p["a"].bool, filterOption: p["a"].oneOfType([p["a"].bool, p["a"].func]), autoFocus: p["a"].bool, backfill: p["a"].bool, showArrow: p["a"].bool, getPopupContainer: p["a"].func, open: p["a"].bool, defaultOpen: p["a"].bool, autoClearSearchValue: p["a"].bool, dropdownRender: p["a"].func, loading: p["a"].bool } }), Vd = p["a"].shape({ key: p["a"].oneOfType([p["a"].string, p["a"].number]) }).loose, Id = p["a"].oneOfType([p["a"].string, p["a"].number, p["a"].arrayOf(p["a"].oneOfType([Vd, p["a"].string, p["a"].number])), Vd]), Nd = s()({}, Hd(), { value: Id, defaultValue: Id, mode: p["a"].string, optionLabelProp: p["a"].string, firstActiveValue: p["a"].oneOfType([String, p["a"].arrayOf(String)]), maxTagCount: p["a"].number, maxTagPlaceholder: p["a"].any, maxTagTextLength: p["a"].number, dropdownMatchSelectWidth: p["a"].bool, optionFilterProp: p["a"].string, labelInValue: p["a"].boolean, getPopupContainer: p["a"].func, tokenSeparators: p["a"].arrayOf(p["a"].string), getInputElement: p["a"].func, options: p["a"].array, suffixIcon: p["a"].any, removeIcon: p["a"].any, clearIcon: p["a"].any, menuItemSelectedIcon: p["a"].any }), Rd = { prefixCls: p["a"].string, size: p["a"].oneOf(["default", "large", "small"]), notFoundContent: p["a"].any, showSearch: p["a"].bool, optionLabelProp: p["a"].string, transitionName: p["a"].string, choiceTransitionName: p["a"].string }, Fd = "SECRET_COMBOBOX_MODE_DO_NOT_USE", Yd = { SECRET_COMBOBOX_MODE_DO_NOT_USE: Fd, Option: s()({}, Gf, { name: "ASelectOption" }), OptGroup: s()({}, Xf, { name: "ASelectOptGroup" }), name: "ASelect", props: s()({}, Nd, { showSearch: p["a"].bool.def(!1), transitionName: p["a"].string.def("slide-up"), choiceTransitionName: p["a"].string.def("zoom") }), propTypes: Rd, model: { prop: "value", event: "change" }, provide: function () { return { savePopupRef: this.savePopupRef } }, inject: { configProvider: { default: function () { return Vt } } }, created: function () { fe("combobox" !== this.$props.mode, "Select", "The combobox mode of Select is deprecated,it will be removed in next major version,please use AutoComplete instead") }, methods: { getNotFoundContent: function (e) { var t = this.$createElement, n = Object(v["g"])(this, "notFoundContent"); return void 0 !== n ? n : this.isCombobox() ? null : e(t, "Select") }, savePopupRef: function (e) { this.popupRef = e }, focus: function () { this.$refs.vcSelect.focus() }, blur: function () { this.$refs.vcSelect.blur() }, isCombobox: function () { var e = this.mode; return "combobox" === e || e === Fd }, renderSuffixIcon: function (e) { var t = this.$createElement, n = this.$props.loading, r = Object(v["g"])(this, "suffixIcon"); return r = Array.isArray(r) ? r[0] : r, r ? Object(v["v"])(r) ? Object(en["a"])(r, { class: e + "-arrow-icon" }) : r : t(Ve, n ? { attrs: { type: "loading" } } : { attrs: { type: "down" }, class: e + "-arrow-icon" }) } }, render: function () { var e, t = arguments[0], n = Object(v["l"])(this), r = n.prefixCls, i = n.size, o = n.mode, a = n.options, c = n.getPopupContainer, u = n.showArrow, f = l()(n, ["prefixCls", "size", "mode", "options", "getPopupContainer", "showArrow"]), d = this.configProvider.getPrefixCls, p = this.configProvider.renderEmpty, m = d("select", r), g = this.configProvider.getPopupContainer, y = Object(v["g"])(this, "removeIcon"); y = Array.isArray(y) ? y[0] : y; var b = Object(v["g"])(this, "clearIcon"); b = Array.isArray(b) ? b[0] : b; var x = Object(v["g"])(this, "menuItemSelectedIcon"); x = Array.isArray(x) ? x[0] : x; var w = Object(Qi["a"])(f, ["inputIcon", "removeIcon", "clearIcon", "suffixIcon", "menuItemSelectedIcon"]), _ = (e = {}, h()(e, m + "-lg", "large" === i), h()(e, m + "-sm", "small" === i), h()(e, m + "-show-arrow", u), e), C = this.$props.optionLabelProp; this.isCombobox() && (C = C || "value"); var M = { multiple: "multiple" === o, tags: "tags" === o, combobox: this.isCombobox() }, O = y && (Object(v["v"])(y) ? Object(en["a"])(y, { class: m + "-remove-icon" }) : y) || t(Ve, { attrs: { type: "close" }, class: m + "-remove-icon" }), k = b && (Object(v["v"])(b) ? Object(en["a"])(b, { class: m + "-clear-icon" }) : b) || t(Ve, { attrs: { type: "close-circle", theme: "filled" }, class: m + "-clear-icon" }), S = x && (Object(v["v"])(x) ? Object(en["a"])(x, { class: m + "-selected-icon" }) : x) || t(Ve, { attrs: { type: "check" }, class: m + "-selected-icon" }), T = { props: s()({ inputIcon: this.renderSuffixIcon(m), removeIcon: O, clearIcon: k, menuItemSelectedIcon: S, showArrow: u }, w, M, { prefixCls: m, optionLabelProp: C || "children", notFoundContent: this.getNotFoundContent(p), maxTagPlaceholder: Object(v["g"])(this, "maxTagPlaceholder"), placeholder: Object(v["g"])(this, "placeholder"), children: a ? a.map((function (e) { var n = e.key, r = e.label, i = void 0 === r ? e.title : r, o = e.on, a = e["class"], s = e.style, c = l()(e, ["key", "label", "on", "class", "style"]); return t(Gf, K()([{ key: n }, { props: c, on: o, class: a, style: s }]), [i]) })) : Object(v["c"])(this.$slots["default"]), __propsSymbol__: Symbol(), dropdownRender: Object(v["g"])(this, "dropdownRender", {}, !1), getPopupContainer: c || g }), on: Object(v["k"])(this), class: _, ref: "vcSelect" }; return t(Dd, T) }, install: function (e) { e.use(N), e.component(Yd.name, Yd), e.component(Yd.Option.name, Yd.Option), e.component(Yd.OptGroup.name, Yd.OptGroup) } }, $d = Yd, Bd = { props: s()({}, Nd), Option: $d.Option, render: function () { var e = arguments[0], t = Object(v["l"])(this), n = { props: s()({}, t, { size: "small" }), on: Object(v["k"])(this) }; return e($d, n, [Object(v["c"])(this.$slots["default"])]) } }, Wd = { name: "Pager", props: { rootPrefixCls: p["a"].string, page: p["a"].number, active: p["a"].bool, last: p["a"].bool, locale: p["a"].object, showTitle: p["a"].bool, itemRender: { type: Function, default: function () { } } }, methods: { handleClick: function () { this.$emit("click", this.page) }, handleKeyPress: function (e) { this.$emit("keypress", e, this.handleClick, this.page) } }, render: function () { var e, t = arguments[0], n = this.$props, r = n.rootPrefixCls + "-item", i = Q()(r, r + "-" + n.page, (e = {}, h()(e, r + "-active", n.active), h()(e, r + "-disabled", !n.page), e)); return t("li", { class: i, on: { click: this.handleClick, keypress: this.handleKeyPress }, attrs: { title: this.showTitle ? this.page : null, tabIndex: "0" } }, [this.itemRender(this.page, "page", t("a", [this.page]))]) } }, qd = { ZERO: 48, NINE: 57, NUMPAD_ZERO: 96, NUMPAD_NINE: 105, BACKSPACE: 8, DELETE: 46, ENTER: 13, ARROW_UP: 38, ARROW_DOWN: 40 }, Ud = { mixins: [m["a"]], props: { disabled: p["a"].bool, changeSize: p["a"].func, quickGo: p["a"].func, selectComponentClass: p["a"].any, current: p["a"].number, pageSizeOptions: p["a"].array.def(["10", "20", "30", "40"]), pageSize: p["a"].number, buildOptionText: p["a"].func, locale: p["a"].object, rootPrefixCls: p["a"].string, selectPrefixCls: p["a"].string, goButton: p["a"].any }, data: function () { return { goInputText: "" } }, methods: { getValidValue: function () { var e = this.goInputText, t = this.current; return !e || isNaN(e) ? t : Number(e) }, defaultBuildOptionText: function (e) { return e.value + " " + this.locale.items_per_page }, handleChange: function (e) { var t = e.target, n = t.value, r = t.composing; e.isComposing || r || this.goInputText === n || this.setState({ goInputText: n }) }, handleBlur: function (e) { var t = this.$props, n = t.goButton, r = t.quickGo, i = t.rootPrefixCls; n || e.relatedTarget && (e.relatedTarget.className.indexOf(i + "-prev") >= 0 || e.relatedTarget.className.indexOf(i + "-next") >= 0) || r(this.getValidValue()) }, go: function (e) { var t = this.goInputText; "" !== t && (e.keyCode !== qd.ENTER && "click" !== e.type || (this.quickGo(this.getValidValue()), this.setState({ goInputText: "" }))) } }, render: function () { var e = this, t = arguments[0], n = this.rootPrefixCls, r = this.locale, i = this.changeSize, o = this.quickGo, a = this.goButton, s = this.selectComponentClass, c = this.defaultBuildOptionText, l = this.selectPrefixCls, u = this.pageSize, h = this.pageSizeOptions, f = this.goInputText, d = this.disabled, p = n + "-options", v = null, m = null, g = null; if (!i && !o) return null; if (i && s) { var y = this.buildOptionText || c, b = h.map((function (e, n) { return t(s.Option, { key: n, attrs: { value: e } }, [y({ value: e })]) })); v = t(s, { attrs: { disabled: d, prefixCls: l, showSearch: !1, optionLabelProp: "children", dropdownMatchSelectWidth: !1, value: (u || h[0]).toString(), getPopupContainer: function (e) { return e.parentNode } }, class: p + "-size-changer", on: { change: function (t) { return e.changeSize(Number(t)) } } }, [b]) } return o && (a && (g = "boolean" === typeof a ? t("button", { attrs: { type: "button", disabled: d }, on: { click: this.go, keyup: this.go } }, [r.jump_to_confirm]) : t("span", { on: { click: this.go, keyup: this.go } }, [a])), m = t("div", { class: p + "-quick-jumper" }, [r.jump_to, t("input", K()([{ attrs: { disabled: d, type: "text" }, domProps: { value: f }, on: { input: this.handleChange, keyup: this.go, blur: this.handleBlur } }, { directives: [{ name: "ant-input" }] }])), r.page, g])), t("li", { class: "" + p }, [v, m]) } }, Kd = { items_per_page: "鏉�/椤�", jump_to: "璺宠嚦", jump_to_confirm: "纭畾", page: "椤�", prev_page: "涓婁竴椤�", next_page: "涓嬩竴椤�", prev_5: "鍚戝墠 5 椤�", next_5: "鍚戝悗 5 椤�", prev_3: "鍚戝墠 3 椤�", next_3: "鍚戝悗 3 椤�" }; function Gd() { } function Xd(e) { return "number" === typeof e && isFinite(e) && Math.floor(e) === e } function Jd(e, t, n) { return n } function Qd(e, t, n) { var r = e; return "undefined" === typeof r && (r = t.statePageSize), Math.floor((n.total - 1) / r) + 1 } var Zd = { name: "Pagination", mixins: [m["a"]], model: { prop: "current", event: "change.current" }, props: { disabled: p["a"].bool, prefixCls: p["a"].string.def("rc-pagination"), selectPrefixCls: p["a"].string.def("rc-select"), current: p["a"].number, defaultCurrent: p["a"].number.def(1), total: p["a"].number.def(0), pageSize: p["a"].number, defaultPageSize: p["a"].number.def(10), hideOnSinglePage: p["a"].bool.def(!1), showSizeChanger: p["a"].bool.def(!1), showLessItems: p["a"].bool.def(!1), selectComponentClass: p["a"].any, showPrevNextJumpers: p["a"].bool.def(!0), showQuickJumper: p["a"].oneOfType([p["a"].bool, p["a"].object]).def(!1), showTitle: p["a"].bool.def(!0), pageSizeOptions: p["a"].arrayOf(p["a"].string), buildOptionText: p["a"].func, showTotal: p["a"].func, simple: p["a"].bool, locale: p["a"].object.def(Kd), itemRender: p["a"].func.def(Jd), prevIcon: p["a"].any, nextIcon: p["a"].any, jumpPrevIcon: p["a"].any, jumpNextIcon: p["a"].any }, data: function () { var e = Object(v["l"])(this), t = this.onChange !== Gd, n = "current" in e; n && !t && console.warn("Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component."); var r = this.defaultCurrent; "current" in e && (r = this.current); var i = this.defaultPageSize; return "pageSize" in e && (i = this.pageSize), r = Math.min(r, Qd(i, void 0, e)), { stateCurrent: r, stateCurrentInputValue: r, statePageSize: i } }, watch: { current: function (e) { this.setState({ stateCurrent: e, stateCurrentInputValue: e }) }, pageSize: function (e) { var t = {}, n = this.stateCurrent, r = Qd(e, this.$data, this.$props); n = n > r ? r : n, Object(v["s"])(this, "current") || (t.stateCurrent = n, t.stateCurrentInputValue = n), t.statePageSize = e, this.setState(t) }, stateCurrent: function (e, t) { var n = this; this.$nextTick((function () { if (n.$refs.paginationNode) { var e = n.$refs.paginationNode.querySelector("." + n.prefixCls + "-item-" + t); e && document.activeElement === e && e.blur() } })) }, total: function () { var e = {}, t = Qd(this.pageSize, this.$data, this.$props); if (Object(v["s"])(this, "current")) { var n = Math.min(this.current, t); e.stateCurrent = n, e.stateCurrentInputValue = n } else { var r = this.stateCurrent; r = 0 === r && t > 0 ? 1 : Math.min(this.stateCurrent, t), e.stateCurrent = r } this.setState(e) } }, methods: { getJumpPrevPage: function () { return Math.max(1, this.stateCurrent - (this.showLessItems ? 3 : 5)) }, getJumpNextPage: function () { return Math.min(Qd(void 0, this.$data, this.$props), this.stateCurrent + (this.showLessItems ? 3 : 5)) }, getItemIcon: function (e) { var t = this.$createElement, n = this.$props.prefixCls, r = Object(v["g"])(this, e, this.$props) || t("a", { class: n + "-item-link" }); return r }, getValidValue: function (e) { var t = e.target.value, n = Qd(void 0, this.$data, this.$props), r = this.$data.stateCurrentInputValue, i = void 0; return i = "" === t ? t : isNaN(Number(t)) ? r : t >= n ? n : Number(t), i }, isValid: function (e) { return Xd(e) && e !== this.stateCurrent }, shouldDisplayQuickJumper: function () { var e = this.$props, t = e.showQuickJumper, n = e.pageSize, r = e.total; return !(r <= n) && t }, handleKeyDown: function (e) { e.keyCode !== qd.ARROW_UP && e.keyCode !== qd.ARROW_DOWN || e.preventDefault() }, handleKeyUp: function (e) { if (!e.isComposing && !e.target.composing) { var t = this.getValidValue(e), n = this.stateCurrentInputValue; t !== n && this.setState({ stateCurrentInputValue: t }), e.keyCode === qd.ENTER ? this.handleChange(t) : e.keyCode === qd.ARROW_UP ? this.handleChange(t - 1) : e.keyCode === qd.ARROW_DOWN && this.handleChange(t + 1) } }, changePageSize: function (e) { var t = this.stateCurrent, n = t, r = Qd(e, this.$data, this.$props); t = t > r ? r : t, 0 === r && (t = this.stateCurrent), "number" === typeof e && (Object(v["s"])(this, "pageSize") || this.setState({ statePageSize: e }), Object(v["s"])(this, "current") || this.setState({ stateCurrent: t, stateCurrentInputValue: t })), this.$emit("update:pageSize", e), this.$emit("showSizeChange", t, e), t !== n && this.$emit("change.current", t, e) }, handleChange: function (e) { var t = this.$props.disabled, n = e; if (this.isValid(n) && !t) { var r = Qd(void 0, this.$data, this.$props); return n > r ? n = r : n < 1 && (n = 1), Object(v["s"])(this, "current") || this.setState({ stateCurrent: n, stateCurrentInputValue: n }), this.$emit("change.current", n, this.statePageSize), this.$emit("change", n, this.statePageSize), n } return this.stateCurrent }, prev: function () { this.hasPrev() && this.handleChange(this.stateCurrent - 1) }, next: function () { this.hasNext() && this.handleChange(this.stateCurrent + 1) }, jumpPrev: function () { this.handleChange(this.getJumpPrevPage()) }, jumpNext: function () { this.handleChange(this.getJumpNextPage()) }, hasPrev: function () { return this.stateCurrent > 1 }, hasNext: function () { return this.stateCurrent < Qd(void 0, this.$data, this.$props) }, runIfEnter: function (e, t) { if ("Enter" === e.key || 13 === e.charCode) { for (var n = arguments.length, r = Array(n > 2 ? n - 2 : 0), i = 2; i < n; i++)r[i - 2] = arguments[i]; t.apply(void 0, X()(r)) } }, runIfEnterPrev: function (e) { this.runIfEnter(e, this.prev) }, runIfEnterNext: function (e) { this.runIfEnter(e, this.next) }, runIfEnterJumpPrev: function (e) { this.runIfEnter(e, this.jumpPrev) }, runIfEnterJumpNext: function (e) { this.runIfEnter(e, this.jumpNext) }, handleGoTO: function (e) { e.keyCode !== qd.ENTER && "click" !== e.type || this.handleChange(this.stateCurrentInputValue) } }, render: function () { var e, t = arguments[0], n = this.$props, r = n.prefixCls, i = n.disabled; if (!0 === this.hideOnSinglePage && this.total <= this.statePageSize) return null; var o = this.$props, a = this.locale, s = Qd(void 0, this.$data, this.$props), c = [], l = null, u = null, f = null, d = null, p = null, v = this.showQuickJumper && this.showQuickJumper.goButton, m = this.showLessItems ? 1 : 2, g = this.stateCurrent, y = this.statePageSize, b = g - 1 > 0 ? g - 1 : 0, x = g + 1 < s ? g + 1 : s; if (this.simple) { v && (p = "boolean" === typeof v ? t("button", { attrs: { type: "button" }, on: { click: this.handleGoTO, keyup: this.handleGoTO } }, [a.jump_to_confirm]) : t("span", { on: { click: this.handleGoTO, keyup: this.handleGoTO } }, [v]), p = t("li", { attrs: { title: this.showTitle ? "" + a.jump_to + this.stateCurrent + "/" + s : null }, class: r + "-simple-pager" }, [p])); var w = this.hasPrev(), _ = this.hasNext(); return t("ul", { class: r + " " + r + "-simple" }, [t("li", { attrs: { title: this.showTitle ? a.prev_page : null, tabIndex: w ? 0 : null, "aria-disabled": !this.hasPrev() }, on: { click: this.prev, keypress: this.runIfEnterPrev }, class: (w ? "" : r + "-disabled") + " " + r + "-prev" }, [this.itemRender(b, "prev", this.getItemIcon("prevIcon"))]), t("li", { attrs: { title: this.showTitle ? g + "/" + s : null }, class: r + "-simple-pager" }, [t("input", K()([{ attrs: { type: "text", size: "3" }, domProps: { value: this.stateCurrentInputValue }, on: { keydown: this.handleKeyDown, keyup: this.handleKeyUp, input: this.handleKeyUp } }, { directives: [{ name: "ant-input" }] }])), t("span", { class: r + "-slash" }, ["锛�"]), s]), t("li", { attrs: { title: this.showTitle ? a.next_page : null, tabIndex: this.hasNext ? 0 : null, "aria-disabled": !this.hasNext() }, on: { click: this.next, keypress: this.runIfEnterNext }, class: (_ ? "" : r + "-disabled") + " " + r + "-next" }, [this.itemRender(x, "next", this.getItemIcon("nextIcon"))]), p]) } if (s <= 5 + 2 * m) { var C = { props: { locale: a, rootPrefixCls: r, showTitle: o.showTitle, itemRender: o.itemRender }, on: { click: this.handleChange, keypress: this.runIfEnter } }; s || c.push(t(Wd, K()([C, { key: "noPager", attrs: { page: s }, class: r + "-disabled" }]))); for (var M = 1; M <= s; M++) { var O = g === M; c.push(t(Wd, K()([C, { key: M, attrs: { page: M, active: O } }]))) } } else { var k = this.showLessItems ? a.prev_3 : a.prev_5, S = this.showLessItems ? a.next_3 : a.next_5; if (this.showPrevNextJumpers) { var T = r + "-jump-prev"; o.jumpPrevIcon && (T += " " + r + "-jump-prev-custom-icon"), l = t("li", { attrs: { title: this.showTitle ? k : null, tabIndex: "0" }, key: "prev", on: { click: this.jumpPrev, keypress: this.runIfEnterJumpPrev }, class: T }, [this.itemRender(this.getJumpPrevPage(), "jump-prev", this.getItemIcon("jumpPrevIcon"))]); var A = r + "-jump-next"; o.jumpNextIcon && (A += " " + r + "-jump-next-custom-icon"), u = t("li", { attrs: { title: this.showTitle ? S : null, tabIndex: "0" }, key: "next", on: { click: this.jumpNext, keypress: this.runIfEnterJumpNext }, class: A }, [this.itemRender(this.getJumpNextPage(), "jump-next", this.getItemIcon("jumpNextIcon"))]) } d = t(Wd, { attrs: { locale: a, last: !0, rootPrefixCls: r, page: s, active: !1, showTitle: this.showTitle, itemRender: this.itemRender }, on: { click: this.handleChange, keypress: this.runIfEnter }, key: s }), f = t(Wd, { attrs: { locale: a, rootPrefixCls: r, page: 1, active: !1, showTitle: this.showTitle, itemRender: this.itemRender }, on: { click: this.handleChange, keypress: this.runIfEnter }, key: 1 }); var L = Math.max(1, g - m), j = Math.min(g + m, s); g - 1 <= m && (j = 1 + 2 * m), s - g <= m && (L = s - 2 * m); for (var z = L; z <= j; z++) { var E = g === z; c.push(t(Wd, { attrs: { locale: a, rootPrefixCls: r, page: z, active: E, showTitle: this.showTitle, itemRender: this.itemRender }, on: { click: this.handleChange, keypress: this.runIfEnter }, key: z })) } g - 1 >= 2 * m && 3 !== g && (c[0] = t(Wd, { attrs: { locale: a, rootPrefixCls: r, page: L, active: !1, showTitle: this.showTitle, itemRender: this.itemRender }, on: { click: this.handleChange, keypress: this.runIfEnter }, key: L, class: r + "-item-after-jump-prev" }), c.unshift(l)), s - g >= 2 * m && g !== s - 2 && (c[c.length - 1] = t(Wd, { attrs: { locale: a, rootPrefixCls: r, page: j, active: !1, showTitle: this.showTitle, itemRender: this.itemRender }, on: { click: this.handleChange, keypress: this.runIfEnter }, key: j, class: r + "-item-before-jump-next" }), c.push(u)), 1 !== L && c.unshift(f), j !== s && c.push(d) } var P = null; this.showTotal && (P = t("li", { class: r + "-total-text" }, [this.showTotal(this.total, [0 === this.total ? 0 : (g - 1) * y + 1, g * y > this.total ? this.total : g * y])])); var D = !this.hasPrev() || !s, H = !this.hasNext() || !s, V = this.buildOptionText || this.$scopedSlots.buildOptionText; return t("ul", { class: (e = {}, h()(e, "" + r, !0), h()(e, r + "-disabled", i), e), attrs: { unselectable: "unselectable" }, ref: "paginationNode" }, [P, t("li", { attrs: { title: this.showTitle ? a.prev_page : null, tabIndex: D ? null : 0, "aria-disabled": D }, on: { click: this.prev, keypress: this.runIfEnterPrev }, class: (D ? r + "-disabled" : "") + " " + r + "-prev" }, [this.itemRender(b, "prev", this.getItemIcon("prevIcon"))]), c, t("li", { attrs: { title: this.showTitle ? a.next_page : null, tabIndex: H ? null : 0, "aria-disabled": H }, on: { click: this.next, keypress: this.runIfEnterNext }, class: (H ? r + "-disabled" : "") + " " + r + "-next" }, [this.itemRender(x, "next", this.getItemIcon("nextIcon"))]), t(Ud, { attrs: { disabled: i, locale: a, rootPrefixCls: r, selectComponentClass: this.selectComponentClass, selectPrefixCls: this.selectPrefixCls, changeSize: this.showSizeChanger ? this.changePageSize : null, current: g, pageSize: y, pageSizeOptions: this.pageSizeOptions, buildOptionText: V || null, quickGo: this.shouldDisplayQuickJumper() ? this.handleChange : null, goButton: v } })]) } }, ep = function () { return { total: p["a"].number, defaultCurrent: p["a"].number, disabled: p["a"].bool, current: p["a"].number, defaultPageSize: p["a"].number, pageSize: p["a"].number, hideOnSinglePage: p["a"].bool, showSizeChanger: p["a"].bool, pageSizeOptions: p["a"].arrayOf(p["a"].oneOfType([p["a"].number, p["a"].string])), buildOptionText: p["a"].func, showSizeChange: p["a"].func, showQuickJumper: p["a"].oneOfType([p["a"].bool, p["a"].object]), showTotal: p["a"].any, size: p["a"].string, simple: p["a"].bool, locale: p["a"].object, prefixCls: p["a"].string, selectPrefixCls: p["a"].string, itemRender: p["a"].any, role: p["a"].string, showLessItems: p["a"].bool } }, tp = { name: "APagination", model: { prop: "current", event: "change.current" }, props: s()({}, ep()), inject: { configProvider: { default: function () { return Vt } } }, methods: { getIconsProps: function (e) { var t = this.$createElement, n = t("a", { class: e + "-item-link" }, [t(Ve, { attrs: { type: "left" } })]), r = t("a", { class: e + "-item-link" }, [t(Ve, { attrs: { type: "right" } })]), i = t("a", { class: e + "-item-link" }, [t("div", { class: e + "-item-container" }, [t(Ve, { class: e + "-item-link-icon", attrs: { type: "double-left" } }), t("span", { class: e + "-item-ellipsis" }, ["鈥⑩�⑩��"])])]), o = t("a", { class: e + "-item-link" }, [t("div", { class: e + "-item-container" }, [t(Ve, { class: e + "-item-link-icon", attrs: { type: "double-right" } }), t("span", { class: e + "-item-ellipsis" }, ["鈥⑩�⑩��"])])]); return { prevIcon: n, nextIcon: r, jumpPrevIcon: i, jumpNextIcon: o } }, renderPagination: function (e) { var t = this.$createElement, n = Object(v["l"])(this), r = n.prefixCls, i = n.selectPrefixCls, o = n.buildOptionText, a = n.size, c = n.locale, u = l()(n, ["prefixCls", "selectPrefixCls", "buildOptionText", "size", "locale"]), h = this.configProvider.getPrefixCls, f = h("pagination", r), d = h("select", i), p = "small" === a, m = { props: s()({ prefixCls: f, selectPrefixCls: d }, u, this.getIconsProps(f), { selectComponentClass: p ? Bd : $d, locale: s()({}, e, c), buildOptionText: o || this.$scopedSlots.buildOptionText }), class: { mini: p }, on: Object(v["k"])(this) }; return t(Zd, m) } }, render: function () { var e = arguments[0]; return e(Le, { attrs: { componentName: "Pagination", defaultLocale: we }, scopedSlots: { default: this.renderPagination } }) } }, np = p["a"].oneOf(["small", "default", "large"]), rp = function () { return { prefixCls: p["a"].string, spinning: p["a"].bool, size: np, wrapperClassName: p["a"].string, tip: p["a"].string, delay: p["a"].number, indicator: p["a"].any } }, ip = void 0; function op(e, t) { return !!e && !!t && !isNaN(Number(t)) } function ap(e) { ip = "function" === typeof e.indicator ? e.indicator : function (t) { return t(e.indicator) } } var sp = { name: "ASpin", mixins: [m["a"]], props: Object(v["t"])(rp(), { size: "default", spinning: !0, wrapperClassName: "" }), inject: { configProvider: { default: function () { return Vt } } }, data: function () { var e = this.spinning, t = this.delay, n = op(e, t); return this.originalUpdateSpinning = this.updateSpinning, this.debouncifyUpdateSpinning(this.$props), { sSpinning: e && !n } }, mounted: function () { this.updateSpinning() }, updated: function () { var e = this; this.$nextTick((function () { e.debouncifyUpdateSpinning(), e.updateSpinning() })) }, beforeDestroy: function () { this.cancelExistingSpin() }, methods: { debouncifyUpdateSpinning: function (e) { var t = e || this.$props, n = t.delay; n && (this.cancelExistingSpin(), this.updateSpinning = Oc()(this.originalUpdateSpinning, n)) }, updateSpinning: function () { var e = this.spinning, t = this.sSpinning; t !== e && this.setState({ sSpinning: e }) }, cancelExistingSpin: function () { var e = this.updateSpinning; e && e.cancel && e.cancel() }, getChildren: function () { return this.$slots && this.$slots["default"] ? Object(v["c"])(this.$slots["default"]) : null }, renderIndicator: function (e, t) { var n = t + "-dot", r = Object(v["g"])(this, "indicator"); return null === r ? null : (Array.isArray(r) && (r = Object(v["c"])(r), r = 1 === r.length ? r[0] : r), Object(v["v"])(r) ? Object(en["a"])(r, { class: n }) : ip && Object(v["v"])(ip(e)) ? Object(en["a"])(ip(e), { class: n }) : e("span", { class: n + " " + t + "-dot-spin" }, [e("i", { class: t + "-dot-item" }), e("i", { class: t + "-dot-item" }), e("i", { class: t + "-dot-item" }), e("i", { class: t + "-dot-item" })])) } }, render: function (e) { var t, n = this.$props, r = n.size, i = n.prefixCls, o = n.tip, a = n.wrapperClassName, s = l()(n, ["size", "prefixCls", "tip", "wrapperClassName"]), c = this.configProvider.getPrefixCls, u = c("spin", i), f = this.sSpinning, d = (t = {}, h()(t, u, !0), h()(t, u + "-sm", "small" === r), h()(t, u + "-lg", "large" === r), h()(t, u + "-spinning", f), h()(t, u + "-show-text", !!o), t), p = e("div", K()([s, { class: d }]), [this.renderIndicator(e, u), o ? e("div", { class: u + "-text" }, [o]) : null]), m = this.getChildren(); if (m) { var g, y = (g = {}, h()(g, u + "-container", !0), h()(g, u + "-blur", f), g); return e("div", K()([{ on: Object(v["k"])(this) }, { class: [u + "-nested-loading", a] }]), [f && e("div", { key: "loading" }, [p]), e("div", { class: y, key: "container" }, [m])]) } return p } }, cp = ep(), lp = rp(), up = p["a"].shape({ text: p["a"].string, value: p["a"].string, children: p["a"].array }).loose, hp = { title: p["a"].any, dataIndex: p["a"].string, customRender: p["a"].func, customCell: p["a"].func, customHeaderCell: p["a"].func, align: p["a"].oneOf(["left", "right", "center"]), ellipsis: p["a"].bool, filters: p["a"].arrayOf(up), filterMultiple: p["a"].bool, filterDropdown: p["a"].any, filterDropdownVisible: p["a"].bool, sorter: p["a"].oneOfType([p["a"].boolean, p["a"].func]), defaultSortOrder: p["a"].oneOf(["ascend", "descend"]), colSpan: p["a"].number, width: p["a"].oneOfType([p["a"].string, p["a"].number]), className: p["a"].string, fixed: p["a"].oneOfType([p["a"].bool, p["a"].oneOf(["left", "right"])]), filterIcon: p["a"].any, filteredValue: p["a"].array, filtered: p["a"].bool, defaultFilteredValue: p["a"].array, sortOrder: p["a"].oneOfType([p["a"].bool, p["a"].oneOf(["ascend", "descend"])]), sortDirections: p["a"].array }, fp = p["a"].shape({ filterTitle: p["a"].string, filterConfirm: p["a"].any, filterReset: p["a"].any, emptyText: p["a"].any, selectAll: p["a"].any, selectInvert: p["a"].any, sortTitle: p["a"].string, expand: p["a"].string, collapse: p["a"].string }).loose, dp = p["a"].oneOf(["checkbox", "radio"]), pp = { type: dp, selectedRowKeys: p["a"].array, getCheckboxProps: p["a"].func, selections: p["a"].oneOfType([p["a"].array, p["a"].bool]), hideDefaultSelections: p["a"].bool, fixed: p["a"].bool, columnWidth: p["a"].oneOfType([p["a"].string, p["a"].number]), selectWay: p["a"].oneOf(["onSelect", "onSelectMultiple", "onSelectAll", "onSelectInvert"]), columnTitle: p["a"].any }, vp = { prefixCls: p["a"].string, dropdownPrefixCls: p["a"].string, rowSelection: p["a"].oneOfType([p["a"].shape(pp).loose, null]), pagination: p["a"].oneOfType([p["a"].shape(s()({}, cp, { position: p["a"].oneOf(["top", "bottom", "both"]) })).loose, p["a"].bool]), size: p["a"].oneOf(["default", "middle", "small", "large"]), dataSource: p["a"].array, components: p["a"].object, columns: p["a"].array, rowKey: p["a"].oneOfType([p["a"].string, p["a"].func]), rowClassName: p["a"].func, expandedRowRender: p["a"].any, defaultExpandAllRows: p["a"].bool, defaultExpandedRowKeys: p["a"].array, expandedRowKeys: p["a"].array, expandIconAsCell: p["a"].bool, expandIconColumnIndex: p["a"].number, expandRowByClick: p["a"].bool, loading: p["a"].oneOfType([p["a"].shape(lp).loose, p["a"].bool]), locale: fp, indentSize: p["a"].number, customRow: p["a"].func, customHeaderRow: p["a"].func, useFixedHeader: p["a"].bool, bordered: p["a"].bool, showHeader: p["a"].bool, footer: p["a"].func, title: p["a"].func, scroll: p["a"].object, childrenColumnName: p["a"].oneOfType([p["a"].array, p["a"].string]), bodyStyle: p["a"].any, sortDirections: p["a"].array, tableLayout: p["a"].string, getPopupContainer: p["a"].func, expandIcon: p["a"].func, transformCellText: p["a"].func }, mp = { store: p["a"].any, locale: p["a"].any, disabled: p["a"].bool, getCheckboxPropsByItem: p["a"].func, getRecordKey: p["a"].func, data: p["a"].array, prefixCls: p["a"].string, hideDefaultSelections: p["a"].bool, selections: p["a"].oneOfType([p["a"].array, p["a"].bool]), getPopupContainer: p["a"].func }, gp = { store: p["a"].any, type: dp, defaultSelection: p["a"].arrayOf([p["a"].string, p["a"].number]), rowIndex: p["a"].oneOfType([p["a"].string, p["a"].number]), name: p["a"].string, disabled: p["a"].bool, id: p["a"].string }, yp = { _propsSymbol: p["a"].any, locale: fp, selectedKeys: p["a"].arrayOf([p["a"].string, p["a"].number]), column: p["a"].object, confirmFilter: p["a"].func, prefixCls: p["a"].string, dropdownPrefixCls: p["a"].string, getPopupContainer: p["a"].func, handleFilter: p["a"].func }; function bp() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "children", n = [], r = function e(r) { r.forEach((function (r) { if (r[t]) { var i = s()({}, r); delete i[t], n.push(i), r[t].length > 0 && e(r[t]) } else n.push(r) })) }; return r(e), n } function xp(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "children"; return e.map((function (e, r) { var i = {}; return e[n] && (i[n] = xp(e[n], t, n)), s()({}, t(e, r), i) })) } function wp(e, t) { return e.reduce((function (e, n) { if (t(n) && e.push(n), n.children) { var r = wp(n.children, t); e.push.apply(e, X()(r)) } return e }), []) } function _p(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return (e || []).forEach((function (e) { var n = e.value, r = e.children; t[n.toString()] = n, _p(r, t) })), t } function Cp(e) { e.stopPropagation() } var Mp = { name: "FilterMenu", mixins: [m["a"]], props: Object(v["t"])(yp, { handleFilter: function () { }, column: {} }), data: function () { var e = "filterDropdownVisible" in this.column && this.column.filterDropdownVisible; return this.preProps = s()({}, Object(v["l"])(this)), { sSelectedKeys: this.selectedKeys, sKeyPathOfSelectedItem: {}, sVisible: e, sValueKeys: _p(this.column.filters) } }, watch: { _propsSymbol: function () { var e = Object(v["l"])(this), t = e.column, n = {}; "selectedKeys" in e && !Ns()(this.preProps.selectedKeys, e.selectedKeys) && (n.sSelectedKeys = e.selectedKeys), Ns()((this.preProps.column || {}).filters, (e.column || {}).filters) || (n.sValueKeys = _p(e.column.filters)), "filterDropdownVisible" in t && (n.sVisible = t.filterDropdownVisible), Object.keys(n).length > 0 && this.setState(n), this.preProps = s()({}, e) } }, mounted: function () { var e = this, t = this.column; this.$nextTick((function () { e.setNeverShown(t) })) }, updated: function () { var e = this, t = this.column; this.$nextTick((function () { e.setNeverShown(t) })) }, methods: { getDropdownVisible: function () { return !this.neverShown && this.sVisible }, setNeverShown: function (e) { var t = this.$el, n = !!uf()(t, ".ant-table-scroll"); n && (this.neverShown = !!e.fixed) }, setSelectedKeys: function (e) { var t = e.selectedKeys; this.setState({ sSelectedKeys: t }) }, setVisible: function (e) { var t = this.column; "filterDropdownVisible" in t || this.setState({ sVisible: e }), t.onFilterDropdownVisibleChange && t.onFilterDropdownVisibleChange(e) }, handleClearFilters: function () { this.setState({ sSelectedKeys: [] }, this.handleConfirm) }, handleConfirm: function () { var e = this; this.setVisible(!1), this.confirmFilter2(), this.$forceUpdate(), this.$nextTick((function () { e.confirmFilter })) }, onVisibleChange: function (e) { this.setVisible(e); var t = this.$props.column; e || t.filterDropdown instanceof Function || this.confirmFilter2() }, handleMenuItemClick: function (e) { var t = this.$data.sSelectedKeys; if (e.keyPath && !(e.keyPath.length <= 1)) { var n = this.$data.sKeyPathOfSelectedItem; t && t.indexOf(e.key) >= 0 ? delete n[e.key] : n[e.key] = e.keyPath, this.setState({ sKeyPathOfSelectedItem: n }) } }, hasSubMenu: function () { var e = this.column.filters, t = void 0 === e ? [] : e; return t.some((function (e) { return !!(e.children && e.children.length > 0) })) }, confirmFilter2: function () { var e = this.$props, t = e.column, n = e.selectedKeys, r = e.confirmFilter, i = this.$data, o = i.sSelectedKeys, a = i.sValueKeys, s = t.filterDropdown; Ns()(o, n) || r(t, s ? o : o.map((function (e) { return a[e] })).filter((function (e) { return void 0 !== e }))) }, renderMenus: function (e) { var t = this, n = this.$createElement, r = this.$props, i = r.dropdownPrefixCls, o = r.prefixCls; return e.map((function (e) { if (e.children && e.children.length > 0) { var r = t.sKeyPathOfSelectedItem, a = Object.keys(r).some((function (t) { return r[t].indexOf(e.value) >= 0 })), s = Q()(o + "-dropdown-submenu", h()({}, i + "-submenu-contain-selected", a)); return n(fh, { attrs: { title: e.text, popupClassName: s }, key: e.value }, [t.renderMenus(e.children)]) } return t.renderMenuItem(e) })) }, renderFilterIcon: function () { var e, t = this.$createElement, n = this.column, r = this.locale, i = this.prefixCls, o = this.selectedKeys, a = o && o.length > 0, s = n.filterIcon; "function" === typeof s && (s = s(a, n)); var c = Q()((e = {}, h()(e, i + "-selected", "filtered" in n ? n.filtered : a), h()(e, i + "-open", this.getDropdownVisible()), e)); return s ? 1 === s.length && Object(v["v"])(s[0]) ? Object(en["a"])(s[0], { on: { click: Cp }, class: Q()(i + "-icon", c) }) : t("span", { class: Q()(i + "-icon", c) }, [s]) : t(Ve, { attrs: { title: r.filterTitle, type: "filter", theme: "filled" }, class: c, on: { click: Cp } }) }, renderMenuItem: function (e) { var t = this.$createElement, n = this.column, r = this.$data.sSelectedKeys, i = !("filterMultiple" in n) || n.filterMultiple, o = t(i ? Ff : Uf, { attrs: { checked: r && r.indexOf(e.value) >= 0 } }); return t(ef, { key: e.value }, [o, t("span", [e.text])]) } }, render: function () { var e = this, t = arguments[0], n = this.$data.sSelectedKeys, r = this.column, i = this.locale, o = this.prefixCls, a = this.dropdownPrefixCls, s = this.getPopupContainer, c = !("filterMultiple" in r) || r.filterMultiple, l = Q()(h()({}, a + "-menu-without-submenu", !this.hasSubMenu())), u = r.filterDropdown; u instanceof Function && (u = u({ prefixCls: a + "-custom", setSelectedKeys: function (t) { return e.setSelectedKeys({ selectedKeys: t }) }, selectedKeys: n, confirm: this.handleConfirm, clearFilters: this.handleClearFilters, filters: r.filters, visible: this.getDropdownVisible(), column: r })); var f = t(Kf, { class: o + "-dropdown" }, u ? [u] : [t(cf, { attrs: { multiple: c, prefixCls: a + "-menu", selectedKeys: n && n.map((function (e) { return e })), getPopupContainer: s }, on: { click: this.handleMenuItemClick, select: this.setSelectedKeys, deselect: this.setSelectedKeys }, class: l }, [this.renderMenus(r.filters)]), t("div", { class: o + "-dropdown-btns" }, [t("a", { class: o + "-dropdown-link confirm", on: { click: this.handleConfirm } }, [i.filterConfirm]), t("a", { class: o + "-dropdown-link clear", on: { click: this.handleClearFilters } }, [i.filterReset])])]); return t(Pf, { attrs: { trigger: ["click"], placement: "bottomRight", visible: this.getDropdownVisible(), getPopupContainer: s, forceRender: !0 }, on: { visibleChange: this.onVisibleChange } }, [t("template", { slot: "overlay" }, [f]), this.renderFilterIcon()]) } }, Op = { name: "SelectionBox", mixins: [m["a"]], props: gp, computed: { checked: function () { var e = this.$props, t = e.store, n = e.defaultSelection, r = e.rowIndex, i = !1; return i = t.selectionDirty ? t.selectedRowKeys.indexOf(r) >= 0 : t.selectedRowKeys.indexOf(r) >= 0 || n.indexOf(r) >= 0, i } }, render: function () { var e = arguments[0], t = Object(v["l"])(this), n = t.type, r = t.rowIndex, i = l()(t, ["type", "rowIndex"]), o = this.checked, a = { props: s()({ checked: o }, i), on: Object(v["k"])(this) }; return "radio" === n ? (a.props.value = r, e(Uf, a)) : e(Ff, a) } }, kp = { name: "MenuDivider", props: { disabled: { type: Boolean, default: !0 }, rootPrefixCls: String }, render: function () { var e = arguments[0], t = this.$props.rootPrefixCls; return e("li", { class: t + "-item-divider" }) } }, Sp = { name: "ASubMenu", isSubMenu: !0, props: s()({}, fh.props), inject: { menuPropsContext: { default: function () { return {} } } }, methods: { onKeyDown: function (e) { this.$refs.subMenu.onKeyDown(e) } }, render: function () { var e = arguments[0], t = this.$slots, n = this.$scopedSlots, r = this.$props, i = r.rootPrefixCls, o = r.popupClassName, a = this.menuPropsContext.theme, c = { props: s()({}, this.$props, { popupClassName: Q()(i + "-" + a, o) }), ref: "subMenu", on: Object(v["k"])(this), scopedSlots: n }, l = Object.keys(t); return e(fh, c, [l.length ? l.map((function (n) { return e("template", { slot: n }, [t[n]]) })) : null]) } }; function Tp(e, t, n) { var r = void 0, i = void 0, o = void 0; return Object(Yr["a"])(e, "ant-motion-collapse-legacy", { start: function () { o && io.a.cancel(o), t ? (r = e.offsetHeight, 0 === r ? o = io()((function () { r = e.offsetHeight, e.style.height = "0px", e.style.opacity = "0" })) : (e.style.height = "0px", e.style.opacity = "0")) : (e.style.height = e.offsetHeight + "px", e.style.opacity = "1") }, active: function () { i && io.a.cancel(i), i = io()((function () { e.style.height = (t ? r : 0) + "px", e.style.opacity = t ? "1" : "0" })) }, end: function () { o && io.a.cancel(o), i && io.a.cancel(i), e.style.height = "", e.style.opacity = "", n && n() } }) } var Ap = { enter: function (e, t) { d.a.nextTick((function () { Tp(e, !0, t) })) }, leave: function (e, t) { return Tp(e, !1, t) } }, Lp = Ap; function jp() { } var zp = { name: "MenuItem", inheritAttrs: !1, props: Jh, inject: { getInlineCollapsed: { default: function () { return jp } }, layoutSiderContext: { default: function () { return {} } } }, isMenuItem: !0, methods: { onKeyDown: function (e) { this.$refs.menuItem.onKeyDown(e) } }, render: function () { var e = arguments[0], t = Object(v["l"])(this), n = t.level, r = t.title, i = t.rootPrefixCls, o = this.getInlineCollapsed, a = this.$slots, c = this.$attrs, l = o(), u = r; "undefined" === typeof r ? u = 1 === n ? a["default"] : "" : !1 === r && (u = ""); var h = { title: u }, f = this.layoutSiderContext.sCollapsed; f || l || (h.title = null, h.visible = !1); var d = { props: s()({}, t, { title: r }), attrs: c, on: Object(v["k"])(this) }, p = { props: s()({}, h, { placement: "right", overlayClassName: i + "-inline-collapsed-tooltip" }) }; return e(gi, p, [e(ef, K()([d, { ref: "menuItem" }]), [a["default"]])]) } }, Ep = p["a"].oneOf(["vertical", "vertical-left", "vertical-right", "horizontal", "inline"]), Pp = s()({}, of, { theme: p["a"].oneOf(["light", "dark"]).def("light"), mode: Ep.def("vertical"), selectable: p["a"].bool, selectedKeys: p["a"].arrayOf(p["a"].oneOfType([p["a"].string, p["a"].number])), defaultSelectedKeys: p["a"].array, openKeys: p["a"].array, defaultOpenKeys: p["a"].array, openAnimation: p["a"].oneOfType([p["a"].string, p["a"].object]), openTransitionName: p["a"].string, prefixCls: p["a"].string, multiple: p["a"].bool, inlineIndent: p["a"].number.def(24), inlineCollapsed: p["a"].bool, isRootMenu: p["a"].bool.def(!0), focusable: p["a"].bool.def(!1) }), Dp = { name: "AMenu", props: Pp, Divider: s()({}, kp, { name: "AMenuDivider" }), Item: s()({}, zp, { name: "AMenuItem" }), SubMenu: s()({}, Sp, { name: "ASubMenu" }), ItemGroup: s()({}, Qf, { name: "AMenuItemGroup" }), provide: function () { return { getInlineCollapsed: this.getInlineCollapsed, menuPropsContext: this.$props } }, mixins: [m["a"]], inject: { layoutSiderContext: { default: function () { return {} } }, configProvider: { default: function () { return Vt } } }, model: { prop: "selectedKeys", event: "selectChange" }, updated: function () { this.propsUpdating = !1 }, watch: { mode: function (e, t) { "inline" === t && "inline" !== e && (this.switchingModeFromInline = !0) }, openKeys: function (e) { this.setState({ sOpenKeys: e }) }, inlineCollapsed: function (e) { this.collapsedChange(e) }, "layoutSiderContext.sCollapsed": function (e) { this.collapsedChange(e) } }, data: function () { var e = Object(v["l"])(this); fe(!("inlineCollapsed" in e && "inline" !== e.mode), "Menu", "`inlineCollapsed` should only be used when Menu's `mode` is inline."), this.switchingModeFromInline = !1, this.leaveAnimationExecutedWhenInlineCollapsed = !1, this.inlineOpenKeys = []; var t = void 0; return "openKeys" in e ? t = e.openKeys : "defaultOpenKeys" in e && (t = e.defaultOpenKeys), { sOpenKeys: t } }, methods: { collapsedChange: function (e) { this.propsUpdating || (this.propsUpdating = !0, Object(v["s"])(this, "openKeys") ? e && (this.switchingModeFromInline = !0) : e ? (this.switchingModeFromInline = !0, this.inlineOpenKeys = this.sOpenKeys, this.setState({ sOpenKeys: [] })) : (this.setState({ sOpenKeys: this.inlineOpenKeys }), this.inlineOpenKeys = [])) }, restoreModeVerticalFromInline: function () { this.switchingModeFromInline && (this.switchingModeFromInline = !1, this.$forceUpdate()) }, handleMouseEnter: function (e) { this.restoreModeVerticalFromInline(), this.$emit("mouseenter", e) }, handleTransitionEnd: function (e) { var t = "width" === e.propertyName && e.target === e.currentTarget, n = e.target.className, r = "[object SVGAnimatedString]" === Object.prototype.toString.call(n) ? n.animVal : n, i = "font-size" === e.propertyName && r.indexOf("anticon") >= 0; (t || i) && this.restoreModeVerticalFromInline() }, handleClick: function (e) { this.handleOpenChange([]), this.$emit("click", e) }, handleSelect: function (e) { this.$emit("select", e), this.$emit("selectChange", e.selectedKeys) }, handleDeselect: function (e) { this.$emit("deselect", e), this.$emit("selectChange", e.selectedKeys) }, handleOpenChange: function (e) { this.setOpenKeys(e), this.$emit("openChange", e), this.$emit("update:openKeys", e) }, setOpenKeys: function (e) { Object(v["s"])(this, "openKeys") || this.setState({ sOpenKeys: e }) }, getRealMenuMode: function () { var e = this.getInlineCollapsed(); if (this.switchingModeFromInline && e) return "inline"; var t = this.$props.mode; return e ? "vertical" : t }, getInlineCollapsed: function () { var e = this.$props.inlineCollapsed; return void 0 !== this.layoutSiderContext.sCollapsed ? this.layoutSiderContext.sCollapsed : e }, getMenuOpenAnimation: function (e) { var t = this.$props, n = t.openAnimation, r = t.openTransitionName, i = n || r; return void 0 === n && void 0 === r && ("horizontal" === e ? i = "slide-up" : "inline" === e ? i = { on: Lp } : this.switchingModeFromInline ? (i = "", this.switchingModeFromInline = !1) : i = "zoom-big"), i } }, render: function () { var e, t = this, n = arguments[0], r = this.layoutSiderContext, i = this.$slots, o = r.collapsedWidth, a = this.configProvider.getPopupContainer, c = Object(v["l"])(this), l = c.prefixCls, u = c.theme, f = c.getPopupContainer, d = this.configProvider.getPrefixCls, p = d("menu", l), m = this.getRealMenuMode(), g = this.getMenuOpenAnimation(m), y = (e = {}, h()(e, p + "-" + u, !0), h()(e, p + "-inline-collapsed", this.getInlineCollapsed()), e), b = { props: s()({}, Object(Qi["a"])(c, ["inlineCollapsed"]), { getPopupContainer: f || a, openKeys: this.sOpenKeys, mode: m, prefixCls: p }), on: s()({}, Object(v["k"])(this), { select: this.handleSelect, deselect: this.handleDeselect, openChange: this.handleOpenChange, mouseenter: this.handleMouseEnter }), nativeOn: { transitionend: this.handleTransitionEnd } }; Object(v["s"])(this, "selectedKeys") || delete b.props.selectedKeys, "inline" !== m ? (b.on.click = this.handleClick, b.props.openTransitionName = g) : (b.on.click = function (e) { t.$emit("click", e) }, b.props.openAnimation = g); var x = this.getInlineCollapsed() && (0 === o || "0" === o || "0px" === o); return x && (b.props.openKeys = []), n(cf, K()([b, { class: y }]), [i["default"]]) }, install: function (e) { e.use(N), e.component(Dp.name, Dp), e.component(Dp.Item.name, Dp.Item), e.component(Dp.SubMenu.name, Dp.SubMenu), e.component(Dp.Divider.name, Dp.Divider), e.component(Dp.ItemGroup.name, Dp.ItemGroup) } }, Hp = Dp; function Vp(e) { var t = e.store, n = e.getCheckboxPropsByItem, r = e.getRecordKey, i = e.data, o = e.type, a = e.byDefaultChecked; return a ? i[o]((function (e, t) { return n(e, t).defaultChecked })) : i[o]((function (e, n) { return t.selectedRowKeys.indexOf(r(e, n)) >= 0 })) } function Ip(e) { var t = e.store, n = e.data; if (!n.length) return !1; var r = Vp(s()({}, e, { data: n, type: "some", byDefaultChecked: !1 })) && !Vp(s()({}, e, { data: n, type: "every", byDefaultChecked: !1 })), i = Vp(s()({}, e, { data: n, type: "some", byDefaultChecked: !0 })) && !Vp(s()({}, e, { data: n, type: "every", byDefaultChecked: !0 })); return t.selectionDirty ? r : r || i } function Np(e) { var t = e.store, n = e.data; return !!n.length && (t.selectionDirty ? Vp(s()({}, e, { data: n, type: "every", byDefaultChecked: !1 })) : Vp(s()({}, e, { data: n, type: "every", byDefaultChecked: !1 })) || Vp(s()({}, e, { data: n, type: "every", byDefaultChecked: !0 }))) } var Rp = { name: "SelectionCheckboxAll", mixins: [m["a"]], props: mp, data: function () { var e = this.$props; return this.defaultSelections = e.hideDefaultSelections ? [] : [{ key: "all", text: e.locale.selectAll }, { key: "invert", text: e.locale.selectInvert }], { checked: Np(e), indeterminate: Ip(e) } }, watch: { $props: { handler: function () { this.setCheckState(this.$props) }, deep: !0, immediate: !0 } }, methods: { checkSelection: function (e, t, n, r) { var i = e || this.$props, o = i.store, a = i.getCheckboxPropsByItem, s = i.getRecordKey; return ("every" === n || "some" === n) && (r ? t[n]((function (e, t) { return a(e, t).props.defaultChecked })) : t[n]((function (e, t) { return o.selectedRowKeys.indexOf(s(e, t)) >= 0 }))) }, setCheckState: function (e) { var t = Np(e), n = Ip(e); this.setState((function (e) { var r = {}; return n !== e.indeterminate && (r.indeterminate = n), t !== e.checked && (r.checked = t), r })) }, handleSelectAllChange: function (e) { var t = e.target.checked; this.$emit("select", t ? "all" : "removeAll", 0, null) }, renderMenus: function (e) { var t = this, n = this.$createElement; return e.map((function (e, r) { return n(Hp.Item, { key: e.key || r }, [n("div", { on: { click: function () { t.$emit("select", e.key, r, e.onSelect) } } }, [e.text])]) })) } }, render: function () { var e = arguments[0], t = this.disabled, n = this.prefixCls, r = this.selections, i = this.getPopupContainer, o = this.checked, a = this.indeterminate, s = n + "-selection", c = null; if (r) { var l = Array.isArray(r) ? this.defaultSelections.concat(r) : this.defaultSelections, u = e(Hp, { class: s + "-menu", attrs: { selectedKeys: [] } }, [this.renderMenus(l)]); c = l.length > 0 ? e(Pf, { attrs: { getPopupContainer: i } }, [e("template", { slot: "overlay" }, [u]), e("div", { class: s + "-down" }, [e(Ve, { attrs: { type: "down" } })])]) : null } return e("div", { class: s }, [e(Ff, { class: Q()(h()({}, s + "-select-all-custom", c)), attrs: { checked: o, indeterminate: a, disabled: t }, on: { change: this.handleSelectAllChange } }), c]) } }, Fp = { name: "ATableColumn", props: hp }, Yp = { name: "ATableColumnGroup", props: { title: p["a"].any }, __ANT_TABLE_COLUMN_GROUP: !0 }, $p = { store: p["a"].any, rowKey: p["a"].oneOfType([p["a"].string, p["a"].number]), prefixCls: p["a"].string }; function Bp() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "tr", t = { name: "BodyRow", props: $p, computed: { selected: function () { return this.$props.store.selectedRowKeys.indexOf(this.$props.rowKey) >= 0 } }, render: function () { var t = arguments[0], n = h()({}, this.prefixCls + "-row-selected", this.selected); return t(e, K()([{ class: n }, { on: Object(v["k"])(this) }]), [this.$slots["default"]]) } }; return t } tp.install = function (e) { e.use(N), e.component(tp.name, tp) }; var Wp = tp; sp.setDefaultIndicator = ap, sp.install = function (e) { e.use(N), e.component(sp.name, sp) }; var qp = sp; function Up(e, t) { if ("undefined" === typeof window) return 0; var n = t ? "pageYOffset" : "pageXOffset", r = t ? "scrollTop" : "scrollLeft", i = e === window, o = i ? e[n] : e[r]; return i && "number" !== typeof o && (o = window.document.documentElement[r]), o } function Kp(e, t, n, r) { var i = n - t; return e /= r / 2, e < 1 ? i / 2 * e * e * e + t : i / 2 * ((e -= 2) * e * e + 2) + t } function Gp(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.getContainer, r = void 0 === n ? function () { return window } : n, i = t.callback, o = t.duration, a = void 0 === o ? 450 : o, s = r(), c = Up(s, !0), l = Date.now(), u = function t() { var n = Date.now(), r = n - l, o = Kp(r > a ? a : r, c, e, a); s === window ? window.scrollTo(window.pageXOffset, o) : s.scrollTop = o, r < a ? io()(t) : "function" === typeof i && i() }; io()(u) } var Xp = { border: 0, background: "transparent", padding: 0, lineHeight: "inherit", display: "inline-block" }, Jp = { props: { noStyle: p["a"].bool }, methods: { onKeyDown: function (e) { var t = e.keyCode; t === Io.ENTER && e.preventDefault() }, onKeyUp: function (e) { var t = e.keyCode; t === Io.ENTER && this.$emit("click", e) }, setRef: function (e) { this.div = e }, focus: function () { this.div && this.div.focus() }, blur: function () { this.div && this.div.blur() } }, render: function () { var e = arguments[0], t = this.$props.noStyle; return e("div", K()([{ attrs: { role: "button", tabIndex: 0 } }, { directives: [{ name: "ant-ref", value: this.setRef }], on: s()({}, this.$listeners, { keydown: this.onKeyDown, keyup: this.onKeyUp }) }, { style: s()({}, t ? null : Xp) }]), [this.$slots["default"]]) } }, Qp = Jp; function Zp() { } function ev(e) { e.stopPropagation() } function tv(e) { return e.rowSelection || {} } function nv(e, t) { return e.key || e.dataIndex || t } function rv(e, t) { return !!(e && t && e.key && e.key === t.key) || e === t || Ns()(e, t, (function (e, t) { return "function" === typeof e && "function" === typeof t ? e === t || e.toString() === t.toString() : Array.isArray(e) && Array.isArray(t) ? e === t || Ns()(e, t) : void 0 })) } var iv = { onChange: Zp, onShowSizeChange: Zp }, ov = {}, av = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = e && e.body && e.body.row; return s()({}, e, { body: s()({}, e.body, { row: Bp(t) }) }) }; function sv() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return e === t || ["table", "header", "body"].every((function (n) { return Ns()(e[n], t[n]) })) } function cv(e, t) { return wp(t || (e || {}).columns || [], (function (e) { return "undefined" !== typeof e.filteredValue })) } function lv(e, t) { var n = {}; return cv(e, t).forEach((function (e) { var t = nv(e); n[t] = e.filteredValue })), n } function uv(e, t) { return Object.keys(t).length !== Object.keys(e.filters).length || Object.keys(t).some((function (n) { return t[n] !== e.filters[n] })) } var hv = { name: "Table", Column: Fp, ColumnGroup: Yp, mixins: [m["a"]], inject: { configProvider: { default: function () { return Vt } } }, provide: function () { return { store: this.store } }, props: Object(v["t"])(vp, { dataSource: [], useFixedHeader: !1, size: "default", loading: !1, bordered: !1, indentSize: 20, locale: {}, rowKey: "key", showHeader: !0, sortDirections: ["ascend", "descend"], childrenColumnName: "children" }), data: function () { var e = Object(v["l"])(this); return fe(!e.expandedRowRender || !("scroll" in e) || !e.scroll.x, "`expandedRowRender` and `scroll` are not compatible. Please use one of them at one time."), this.CheckboxPropsCache = {}, this.store = d.a.observable({ selectedRowKeys: tv(this.$props).selectedRowKeys || [], selectionDirty: !1 }), s()({}, this.getDefaultSortOrder(e.columns || []), { sFilters: this.getDefaultFilters(e.columns), sPagination: this.getDefaultPagination(this.$props), pivot: void 0, sComponents: av(this.components), filterDataCnt: 0 }) }, watch: { pagination: { handler: function (e) { this.setState((function (t) { var n = s()({}, iv, t.sPagination, e); return n.current = n.current || 1, n.pageSize = n.pageSize || 10, { sPagination: !1 !== e ? n : ov } })) }, deep: !0 }, rowSelection: { handler: function (e, t) { if (e && "selectedRowKeys" in e) { this.store.selectedRowKeys = e.selectedRowKeys || []; var n = this.rowSelection; n && e.getCheckboxProps !== n.getCheckboxProps && (this.CheckboxPropsCache = {}) } else t && !e && (this.store.selectedRowKeys = []) }, deep: !0 }, dataSource: function () { this.store.selectionDirty = !1, this.CheckboxPropsCache = {} }, columns: function (e) { var t = cv({ columns: e }, e); if (t.length > 0) { var n = lv({ columns: e }, e), r = s()({}, this.sFilters); Object.keys(n).forEach((function (e) { r[e] = n[e] })), uv({ filters: this.sFilters }, r) && this.setState({ sFilters: r }) } this.$forceUpdate() }, components: { handler: function (e, t) { if (!sv(e, t)) { var n = av(e); this.setState({ sComponents: n }) } }, deep: !0 } }, updated: function () { var e = this.columns, t = this.sSortColumn, n = this.sSortOrder; if (this.getSortOrderColumns(e).length > 0) { var r = this.getSortStateFromColumns(e); rv(r.sSortColumn, t) && r.sSortOrder === n || this.setState(r) } }, methods: { getCheckboxPropsByItem: function (e, t) { var n = tv(this.$props); if (!n.getCheckboxProps) return { props: {} }; var r = this.getRecordKey(e, t); return this.CheckboxPropsCache[r] || (this.CheckboxPropsCache[r] = n.getCheckboxProps(e)), this.CheckboxPropsCache[r].props = this.CheckboxPropsCache[r].props || {}, this.CheckboxPropsCache[r] }, getDefaultSelection: function () { var e = this, t = tv(this.$props); return t.getCheckboxProps ? this.getFlatData().filter((function (t, n) { return e.getCheckboxPropsByItem(t, n).props.defaultChecked })).map((function (t, n) { return e.getRecordKey(t, n) })) : [] }, getDefaultPagination: function (e) { var t = "object" === Tt()(e.pagination) ? e.pagination : {}, n = void 0; "current" in t ? n = t.current : "defaultCurrent" in t && (n = t.defaultCurrent); var r = void 0; return "pageSize" in t ? r = t.pageSize : "defaultPageSize" in t && (r = t.defaultPageSize), this.hasPagination(e) ? s()({}, iv, t, { current: n || 1, pageSize: r || 10 }) : {} }, getSortOrderColumns: function (e) { return wp(e || this.columns || [], (function (e) { return "sortOrder" in e })) }, getDefaultFilters: function (e) { var t = lv({ columns: this.columns }, e), n = wp(e || [], (function (e) { return "undefined" !== typeof e.defaultFilteredValue })), r = n.reduce((function (e, t) { var n = nv(t); return e[n] = t.defaultFilteredValue, e }), {}); return s()({}, r, t) }, getDefaultSortOrder: function (e) { var t = this.getSortStateFromColumns(e), n = wp(e || [], (function (e) { return null != e.defaultSortOrder }))[0]; return n && !t.sortColumn ? { sSortColumn: n, sSortOrder: n.defaultSortOrder } : t }, getSortStateFromColumns: function (e) { var t = this.getSortOrderColumns(e).filter((function (e) { return e.sortOrder }))[0]; return t ? { sSortColumn: t, sSortOrder: t.sortOrder } : { sSortColumn: null, sSortOrder: null } }, getMaxCurrent: function (e) { var t = this.sPagination, n = t.current, r = t.pageSize; return (n - 1) * r >= e ? Math.floor((e - 1) / r) + 1 : n }, getRecordKey: function (e, t) { var n = this.rowKey, r = "function" === typeof n ? n(e, t) : e[n]; return fe(void 0 !== r, "Table", "Each record in dataSource of table should have a unique `key` prop, or set `rowKey` of Table to an unique primary key, "), void 0 === r ? t : r }, getSorterFn: function (e) { var t = e || this.$data, n = t.sSortOrder, r = t.sSortColumn; if (n && r && "function" === typeof r.sorter) return function (e, t) { var i = r.sorter(e, t, n); return 0 !== i ? "descend" === n ? -i : i : 0 } }, getCurrentPageData: function () { var e = this.getLocalData(); this.filterDataCnt = e.length; var t = void 0, n = void 0, r = this.sPagination; return this.hasPagination() ? (n = r.pageSize, t = this.getMaxCurrent(r.total || e.length)) : (n = Number.MAX_VALUE, t = 1), (e.length > n || n === Number.MAX_VALUE) && (e = e.slice((t - 1) * n, t * n)), e }, getFlatData: function () { var e = this.$props.childrenColumnName; return bp(this.getLocalData(null, !1), e) }, getFlatCurrentPageData: function () { var e = this.$props.childrenColumnName; return bp(this.getCurrentPageData(), e) }, getLocalData: function (e) { var t = this, n = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], r = e || this.$data, i = r.sFilters, o = this.$props.dataSource, a = o || []; a = a.slice(0); var s = this.getSorterFn(r); return s && (a = this.recursiveSort([].concat(X()(a)), s)), n && i && Object.keys(i).forEach((function (e) { var n = t.findColumn(e); if (n) { var r = i[e] || []; if (0 !== r.length) { var o = n.onFilter; a = o ? a.filter((function (e) { return r.some((function (t) { return o(t, e) })) })) : a } } })), a }, onRow: function (e, t, n) { var r = this.customRow, i = r ? r(t, n) : {}; return Object(v["w"])(i, { props: { prefixCls: e, store: this.store, rowKey: this.getRecordKey(t, n) } }) }, setSelectedRowKeys: function (e, t) { var n = this, r = t.selectWay, i = t.record, o = t.checked, a = t.changeRowKeys, s = t.nativeEvent, c = tv(this.$props); c && !("selectedRowKeys" in c) && (this.store.selectedRowKeys = e); var l = this.getFlatData(); if (c.onChange || c[r]) { var u = l.filter((function (t, r) { return e.indexOf(n.getRecordKey(t, r)) >= 0 })); if (c.onChange && c.onChange(e, u), "onSelect" === r && c.onSelect) c.onSelect(i, o, u, s); else if ("onSelectMultiple" === r && c.onSelectMultiple) { var h = l.filter((function (e, t) { return a.indexOf(n.getRecordKey(e, t)) >= 0 })); c.onSelectMultiple(o, u, h) } else if ("onSelectAll" === r && c.onSelectAll) { var f = l.filter((function (e, t) { return a.indexOf(n.getRecordKey(e, t)) >= 0 })); c.onSelectAll(o, u, f) } else "onSelectInvert" === r && c.onSelectInvert && c.onSelectInvert(e) } }, generatePopupContainerFunc: function (e) { var t = this.$props.scroll, n = this.$refs.vcTable; return e || (t && n ? function () { return n.getTableNode() } : void 0) }, scrollToFirstRow: function () { var e = this, t = this.$props.scroll; t && !1 !== t.scrollToFirstRowOnChange && Gp(0, { getContainer: function () { return e.$refs.vcTable.getBodyTable() } }) }, isSameColumn: function (e, t) { return !!(e && t && e.key && e.key === t.key) || e === t || Ns()(e, t, (function (e, t) { if ("function" === typeof e && "function" === typeof t) return e === t || e.toString() === t.toString() })) }, handleFilter: function (e, t) { var n = this, r = this.$props, i = s()({}, this.sPagination), o = s()({}, this.sFilters, h()({}, nv(e), t)), a = []; xp(this.columns, (function (e) { e.children || a.push(nv(e)) })), Object.keys(o).forEach((function (e) { a.indexOf(e) < 0 && delete o[e] })), r.pagination && (i.current = 1, i.onChange(i.current)); var c = { sPagination: i, sFilters: {} }, l = s()({}, o); cv({ columns: r.columns }).forEach((function (e) { var t = nv(e); t && delete l[t] })), Object.keys(l).length > 0 && (c.sFilters = l), "object" === Tt()(r.pagination) && "current" in r.pagination && (c.sPagination = s()({}, i, { current: this.sPagination.current })), this.setState(c, (function () { n.scrollToFirstRow(), n.store.selectionDirty = !1, n.$emit.apply(n, ["change"].concat(X()(n.prepareParamsArguments(s()({}, n.$data, { sSelectionDirty: !1, sFilters: o, sPagination: i }))))) })) }, handleSelect: function (e, t, n) { var r = this, i = n.target.checked, o = n.nativeEvent, a = this.store.selectionDirty ? [] : this.getDefaultSelection(), s = this.store.selectedRowKeys.concat(a), c = this.getRecordKey(e, t), l = this.$data.pivot, u = this.getFlatCurrentPageData(), h = t; if (this.$props.expandedRowRender && (h = u.findIndex((function (e) { return r.getRecordKey(e, t) === c }))), o.shiftKey && void 0 !== l && h !== l) { var f = [], d = Math.sign(l - h), p = Math.abs(l - h), v = 0, m = function () { var e = h + v * d; v += 1; var t = u[e], n = r.getRecordKey(t, e), o = r.getCheckboxPropsByItem(t, e); o.disabled || (s.includes(n) ? i || (s = s.filter((function (e) { return n !== e })), f.push(n)) : i && (s.push(n), f.push(n))) }; while (v <= p) m(); this.setState({ pivot: h }), this.store.selectionDirty = !0, this.setSelectedRowKeys(s, { selectWay: "onSelectMultiple", record: e, checked: i, changeRowKeys: f, nativeEvent: o }) } else i ? s.push(this.getRecordKey(e, h)) : s = s.filter((function (e) { return c !== e })), this.setState({ pivot: h }), this.store.selectionDirty = !0, this.setSelectedRowKeys(s, { selectWay: "onSelect", record: e, checked: i, changeRowKeys: void 0, nativeEvent: o }) }, handleRadioSelect: function (e, t, n) { var r = n.target.checked, i = n.nativeEvent, o = this.getRecordKey(e, t), a = [o]; this.store.selectionDirty = !0, this.setSelectedRowKeys(a, { selectWay: "onSelect", record: e, checked: r, changeRowKeys: void 0, nativeEvent: i }) }, handleSelectRow: function (e, t, n) { var r = this, i = this.getFlatCurrentPageData(), o = this.store.selectionDirty ? [] : this.getDefaultSelection(), a = this.store.selectedRowKeys.concat(o), s = i.filter((function (e, t) { return !r.getCheckboxPropsByItem(e, t).props.disabled })).map((function (e, t) { return r.getRecordKey(e, t) })), c = [], l = "onSelectAll", u = void 0; switch (e) { case "all": s.forEach((function (e) { a.indexOf(e) < 0 && (a.push(e), c.push(e)) })), l = "onSelectAll", u = !0; break; case "removeAll": s.forEach((function (e) { a.indexOf(e) >= 0 && (a.splice(a.indexOf(e), 1), c.push(e)) })), l = "onSelectAll", u = !1; break; case "invert": s.forEach((function (e) { a.indexOf(e) < 0 ? a.push(e) : a.splice(a.indexOf(e), 1), c.push(e), l = "onSelectInvert" })); break; default: break }this.store.selectionDirty = !0; var h = this.rowSelection, f = 2; if (h && h.hideDefaultSelections && (f = 0), t >= f && "function" === typeof n) return n(s); this.setSelectedRowKeys(a, { selectWay: l, checked: u, changeRowKeys: c }) }, handlePageChange: function (e) { var t = this.$props, n = s()({}, this.sPagination); n.current = e || n.current || 1; for (var r = arguments.length, i = Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++)i[o - 1] = arguments[o]; n.onChange.apply(n, [n.current].concat(X()(i))); var a = { sPagination: n }; t.pagination && "object" === Tt()(t.pagination) && "current" in t.pagination && (a.sPagination = s()({}, n, { current: this.sPagination.current })), this.setState(a, this.scrollToFirstRow), this.store.selectionDirty = !1, this.$emit.apply(this, ["change"].concat(X()(this.prepareParamsArguments(s()({}, this.$data, { sSelectionDirty: !1, sPagination: n }))))) }, handleShowSizeChange: function (e, t) { var n = this.sPagination; n.onShowSizeChange(e, t); var r = s()({}, n, { pageSize: t, current: e }); this.setState({ sPagination: r }, this.scrollToFirstRow), this.$emit.apply(this, ["change"].concat(X()(this.prepareParamsArguments(s()({}, this.$data, { sPagination: r }))))) }, toggleSortOrder: function (e) { var t = e.sortDirections || this.sortDirections, n = this.sSortOrder, r = this.sSortColumn, i = void 0; if (rv(r, e) && void 0 !== n) { var o = t.indexOf(n) + 1; i = o === t.length ? void 0 : t[o] } else i = t[0]; var a = { sSortOrder: i, sSortColumn: i ? e : null }; 0 === this.getSortOrderColumns().length && this.setState(a, this.scrollToFirstRow), this.$emit.apply(this, ["change"].concat(X()(this.prepareParamsArguments(s()({}, this.$data, a), e)))) }, hasPagination: function (e) { return !1 !== (e || this.$props).pagination }, isSortColumn: function (e) { var t = this.sSortColumn; return !(!e || !t) && nv(t) === nv(e) }, prepareParamsArguments: function (e, t) { var n = s()({}, e.sPagination); delete n.onChange, delete n.onShowSizeChange; var r = e.sFilters, i = {}, o = t; e.sSortColumn && e.sSortOrder && (o = e.sSortColumn, i.column = e.sSortColumn, i.order = e.sSortOrder), o && (i.field = o.dataIndex, i.columnKey = nv(o)); var a = { currentDataSource: this.getLocalData(e) }; return [n, r, i, a] }, findColumn: function (e) { var t = void 0; return xp(this.columns, (function (n) { nv(n) === e && (t = n) })), t }, recursiveSort: function (e, t) { var n = this, r = this.childrenColumnName, i = void 0 === r ? "children" : r; return e.sort(t).map((function (e) { return e[i] ? s()({}, e, h()({}, i, n.recursiveSort([].concat(X()(e[i])), t))) : e })) }, renderExpandIcon: function (e) { var t = this.$createElement; return function (n) { var r = n.expandable, i = n.expanded, o = n.needIndentSpaced, a = n.record, s = n.onExpand; return r ? t(Le, { attrs: { componentName: "Table", defaultLocale: Ae.Table } }, [function (n) { var r; return t(Qp, { class: Q()(e + "-row-expand-icon", (r = {}, h()(r, e + "-row-collapsed", !i), h()(r, e + "-row-expanded", i), r)), on: { click: function (e) { s(a, e) } }, attrs: { "aria-label": i ? n.collapse : n.expand, noStyle: !0 } }) }]) : o ? t("span", { class: e + "-row-expand-icon " + e + "-row-spaced" }) : null } }, renderPagination: function (e, t) { var n = this.$createElement; if (!this.hasPagination()) return null; var r = "default", i = this.sPagination; i.size ? r = i.size : "middle" !== this.size && "small" !== this.size || (r = "small"); var o = i.position || "bottom", a = i.total || this.filterDataCnt, c = i["class"], u = i.style, h = (i.onChange, i.onShowSizeChange, l()(i, ["class", "style", "onChange", "onShowSizeChange"])), f = Object(v["w"])({ key: "pagination-" + t, class: Q()(c, e + "-pagination"), props: s()({}, h, { total: a, size: r, current: this.getMaxCurrent(a) }), style: u, on: { change: this.handlePageChange, showSizeChange: this.handleShowSizeChange } }); return a > 0 && (o === t || "both" === o) ? n(Wp, f) : null }, renderSelectionBox: function (e) { var t = this, n = this.$createElement; return function (r, i, o) { var a = t.getRecordKey(i, o), s = t.getCheckboxPropsByItem(i, o), c = function (n) { "radio" === e ? t.handleRadioSelect(i, o, n) : t.handleSelect(i, o, n) }, l = Object(v["w"])({ props: { type: e, store: t.store, rowIndex: a, defaultSelection: t.getDefaultSelection() }, on: { change: c } }, s); return n("span", { on: { click: ev } }, [n(Op, l)]) } }, renderRowSelection: function (e) { var t = this, n = e.prefixCls, r = e.locale, i = e.getPopupContainer, o = this.$createElement, a = this.rowSelection, s = this.columns.concat(); if (a) { var c = this.getFlatCurrentPageData().filter((function (e, n) { return !a.getCheckboxProps || !t.getCheckboxPropsByItem(e, n).props.disabled })), l = Q()(n + "-selection-column", h()({}, n + "-selection-column-custom", a.selections)), u = h()({ key: "selection-column", customRender: this.renderSelectionBox(a.type), className: l, fixed: a.fixed, width: a.columnWidth, title: a.columnTitle }, Sl, { class: n + "-selection-col" }); if ("radio" !== a.type) { var f = c.every((function (e, n) { return t.getCheckboxPropsByItem(e, n).props.disabled })); u.title = u.title || o(Rp, { attrs: { store: this.store, locale: r, data: c, getCheckboxPropsByItem: this.getCheckboxPropsByItem, getRecordKey: this.getRecordKey, disabled: f, prefixCls: n, selections: a.selections, hideDefaultSelections: a.hideDefaultSelections, getPopupContainer: this.generatePopupContainerFunc(i) }, on: { select: this.handleSelectRow } }) } "fixed" in a ? u.fixed = a.fixed : s.some((function (e) { return "left" === e.fixed || !0 === e.fixed })) && (u.fixed = "left"), s[0] && "selection-column" === s[0].key ? s[0] = u : s.unshift(u) } return s }, renderColumnsDropdown: function (e) { var t = this, n = e.prefixCls, r = e.dropdownPrefixCls, i = e.columns, o = e.locale, a = e.getPopupContainer, c = this.$createElement, l = this.sSortOrder, u = this.sFilters; return xp(i, (function (e, i) { var f, d = nv(e, i), p = void 0, v = void 0, m = e.customHeaderCell, g = t.isSortColumn(e); if (e.filters && e.filters.length > 0 || e.filterDropdown) { var y = d in u ? u[d] : []; p = c(Mp, { attrs: { _propsSymbol: Symbol(), locale: o, column: e, selectedKeys: y, confirmFilter: t.handleFilter, prefixCls: n + "-filter", dropdownPrefixCls: r || "ant-dropdown", getPopupContainer: t.generatePopupContainerFunc(a) }, key: "filter-dropdown" }) } if (e.sorter) { var b = e.sortDirections || t.sortDirections, x = g && "ascend" === l, w = g && "descend" === l, _ = -1 !== b.indexOf("ascend") && c(Ve, { class: n + "-column-sorter-up " + (x ? "on" : "off"), attrs: { type: "caret-up", theme: "filled" }, key: "caret-up" }), C = -1 !== b.indexOf("descend") && c(Ve, { class: n + "-column-sorter-down " + (w ? "on" : "off"), attrs: { type: "caret-down", theme: "filled" }, key: "caret-down" }); v = c("div", { attrs: { title: o.sortTitle }, class: Q()(n + "-column-sorter-inner", _ && C && n + "-column-sorter-inner-full"), key: "sorter" }, [_, C]), m = function (n) { var r = {}; e.customHeaderCell && (r = s()({}, e.customHeaderCell(n))), r.on = r.on || {}; var i = r.on.click; return r.on.click = function () { t.toggleSortOrder(e), i && i.apply(void 0, arguments) }, r } } return s()({}, e, { className: Q()(e.className, (f = {}, h()(f, n + "-column-has-actions", v || p), h()(f, n + "-column-has-filters", p), h()(f, n + "-column-has-sorters", v), h()(f, n + "-column-sort", g && l), f)), title: [c("span", { key: "title", class: n + "-header-column" }, [c("div", { class: v ? n + "-column-sorters" : void 0 }, [c("span", { class: n + "-column-title" }, [t.renderColumnTitle(e.title)]), c("span", { class: n + "-column-sorter" }, [v])])]), p], customHeaderCell: m }) })) }, renderColumnTitle: function (e) { var t = this.$data, n = t.sFilters, r = t.sSortOrder, i = t.sSortColumn; return e instanceof Function ? e({ filters: n, sortOrder: r, sortColumn: i }) : e }, renderTable: function (e) { var t, n = this, r = e.prefixCls, i = e.renderEmpty, o = e.dropdownPrefixCls, a = e.contextLocale, c = e.getPopupContainer, u = e.transformCellText, f = this.$createElement, d = Object(v["l"])(this), p = d.showHeader, m = d.locale, g = d.getPopupContainer, y = l()(d, ["showHeader", "locale", "getPopupContainer"]), b = this.getCurrentPageData(), x = this.expandedRowRender && !1 !== this.expandIconAsCell, w = g || c, _ = s()({}, a, m); m && m.emptyText || (_.emptyText = i(f, "Table")); var C = Q()((t = {}, h()(t, r + "-" + this.size, !0), h()(t, r + "-bordered", this.bordered), h()(t, r + "-empty", !b.length), h()(t, r + "-without-column-header", !p), t)), M = this.renderRowSelection({ prefixCls: r, locale: _, getPopupContainer: w }), O = this.renderColumnsDropdown({ columns: M, prefixCls: r, dropdownPrefixCls: o, locale: _, getPopupContainer: w }).map((function (e, t) { var n = s()({}, e); return n.key = nv(n, t), n })), k = O[0] && "selection-column" === O[0].key ? 1 : 0; "expandIconColumnIndex" in y && (k = y.expandIconColumnIndex); var S = { key: "table", props: s()({ expandIcon: this.renderExpandIcon(r) }, y, { customRow: function (e, t) { return n.onRow(r, e, t) }, components: this.sComponents, prefixCls: r, data: b, columns: O, showHeader: p, expandIconColumnIndex: k, expandIconAsCell: x, emptyText: _.emptyText, transformCellText: u }), on: Object(v["k"])(this), class: C, ref: "vcTable" }; return f(pu, S) } }, render: function () { var e = this, t = arguments[0], n = this.prefixCls, r = this.dropdownPrefixCls, i = this.transformCellText, o = this.getCurrentPageData(), a = this.configProvider, c = a.getPopupContainer, l = a.transformCellText, u = this.getPopupContainer || c, h = i || l, f = this.loading; f = "boolean" === typeof f ? { props: { spinning: f } } : { props: s()({}, f) }; var d = this.configProvider.getPrefixCls, p = this.configProvider.renderEmpty, v = d("table", n), m = d("dropdown", r), g = t(Le, { attrs: { componentName: "Table", defaultLocale: Ae.Table, children: function (t) { return e.renderTable({ prefixCls: v, renderEmpty: p, dropdownPrefixCls: m, contextLocale: t, getPopupContainer: u, transformCellText: h }) } } }), y = this.hasPagination() && o && 0 !== o.length ? v + "-with-pagination" : v + "-without-pagination", b = s()({}, f, { class: f.props && f.props.spinning ? y + " " + v + "-spin-holder" : "" }); return t("div", { class: Q()(v + "-wrapper") }, [t(qp, b, [this.renderPagination(v, "top"), g, this.renderPagination(v, "bottom")])]) } }; d.a.use(_.a, { name: "ant-ref" }); var fv = { name: "ATable", Column: hv.Column, ColumnGroup: hv.ColumnGroup, props: hv.props, methods: { normalize: function () { var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], n = []; return t.forEach((function (t) { if (t.tag) { var r = Object(v["j"])(t), i = Object(v["q"])(t), o = Object(v["f"])(t), a = Object(v["l"])(t), c = Object(v["i"])(t), u = {}; Object.keys(c).forEach((function (e) { var t = "on-" + e; u[Object(v["a"])(t)] = c[e] })); var h = Object(v["p"])(t), f = h["default"], d = l()(h, ["default"]), p = s()({}, d, a, { style: i, class: o }, u); if (r && (p.key = r), Object(v["o"])(t).__ANT_TABLE_COLUMN_GROUP) p.children = e.normalize("function" === typeof f ? f() : f); else { var m = t.data && t.data.scopedSlots && t.data.scopedSlots["default"]; p.customRender = p.customRender || m } n.push(p) } })), n }, updateColumns: function () { var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], n = [], r = this.$slots, i = this.$scopedSlots; return t.forEach((function (t) { var o = t.slots, a = void 0 === o ? {} : o, c = t.scopedSlots, u = void 0 === c ? {} : c, h = l()(t, ["slots", "scopedSlots"]), f = s()({}, h); Object.keys(a).forEach((function (e) { var t = a[e]; void 0 === f[e] && r[t] && (f[e] = 1 === r[t].length ? r[t][0] : r[t]) })), Object.keys(u).forEach((function (e) { var t = u[e]; void 0 === f[e] && i[t] && (f[e] = i[t]) })), t.children && (f.children = e.updateColumns(f.children)), n.push(f) })), n } }, render: function () { var e = arguments[0], t = this.$slots, n = this.normalize, r = this.$scopedSlots, i = Object(v["l"])(this), o = i.columns ? this.updateColumns(i.columns) : n(t["default"]), a = i.title, c = i.footer, l = r.title, u = r.footer, h = r.expandedRowRender, f = void 0 === h ? i.expandedRowRender : h; a = a || l, c = c || u; var d = { props: s()({}, i, { columns: o, title: a, footer: c, expandedRowRender: f }), on: Object(v["k"])(this) }; return e(hv, d) }, install: function (e) { e.use(N), e.component(fv.name, fv), e.component(fv.Column.name, fv.Column), e.component(fv.ColumnGroup.name, fv.ColumnGroup) } }, dv = fv, pv = (n("f614"), { visible: p["a"].bool, hiddenClassName: p["a"].string, forceRender: p["a"].bool }), vv = { props: pv, render: function () { var e = arguments[0]; return e("div", { on: Object(v["k"])(this) }, [this.$slots["default"]]) } }, mv = void 0; function gv(e) { if (e || void 0 === mv) { var t = document.createElement("div"); t.style.width = "100%", t.style.height = "200px"; var n = document.createElement("div"), r = n.style; r.position = "absolute", r.top = 0, r.left = 0, r.pointerEvents = "none", r.visibility = "hidden", r.width = "200px", r.height = "150px", r.overflow = "hidden", n.appendChild(t), document.body.appendChild(n); var i = t.offsetWidth; n.style.overflow = "scroll"; var o = t.offsetWidth; i === o && (o = n.clientWidth), document.body.removeChild(n), mv = i - o } return mv } var yv = function (e) { var t = document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth; if (t) { if (e) return document.body.style.position = "", void (document.body.style.width = ""); var n = gv(); n && (document.body.style.position = "relative", document.body.style.width = "calc(100% - " + n + "px)") } }; function bv() { return { keyboard: p["a"].bool, mask: p["a"].bool, afterClose: p["a"].func, closable: p["a"].bool, maskClosable: p["a"].bool, visible: p["a"].bool, destroyOnClose: p["a"].bool, mousePosition: p["a"].shape({ x: p["a"].number, y: p["a"].number }).loose, title: p["a"].any, footer: p["a"].any, transitionName: p["a"].string, maskTransitionName: p["a"].string, animation: p["a"].any, maskAnimation: p["a"].any, wrapStyle: p["a"].object, bodyStyle: p["a"].object, maskStyle: p["a"].object, prefixCls: p["a"].string, wrapClassName: p["a"].string, width: p["a"].oneOfType([p["a"].string, p["a"].number]), height: p["a"].oneOfType([p["a"].string, p["a"].number]), zIndex: p["a"].number, bodyProps: p["a"].any, maskProps: p["a"].any, wrapProps: p["a"].any, getContainer: p["a"].any, dialogStyle: p["a"].object.def((function () { return {} })), dialogClass: p["a"].string.def(""), closeIcon: p["a"].any, forceRender: p["a"].bool, getOpenCount: p["a"].func, focusTriggerAfterClose: p["a"].bool } } var xv = bv, wv = xv(), _v = 0; function Cv() { } function Mv(e, t) { var n = e["page" + (t ? "Y" : "X") + "Offset"], r = "scroll" + (t ? "Top" : "Left"); if ("number" !== typeof n) { var i = e.document; n = i.documentElement[r], "number" !== typeof n && (n = i.body[r]) } return n } function Ov(e, t) { var n = e.style;["Webkit", "Moz", "Ms", "ms"].forEach((function (e) { n[e + "TransformOrigin"] = t })), n["transformOrigin"] = t } function kv(e) { var t = e.getBoundingClientRect(), n = { left: t.left, top: t.top }, r = e.ownerDocument, i = r.defaultView || r.parentWindow; return n.left += Mv(i), n.top += Mv(i, !0), n } var Sv = {}, Tv = { mixins: [m["a"]], props: Object(v["t"])(wv, { mask: !0, visible: !1, keyboard: !0, closable: !0, maskClosable: !0, destroyOnClose: !1, prefixCls: "rc-dialog", getOpenCount: function () { return null }, focusTriggerAfterClose: !0 }), data: function () { return { destroyPopup: !1 } }, provide: function () { return { dialogContext: this } }, watch: { visible: function (e) { var t = this; e && (this.destroyPopup = !1), this.$nextTick((function () { t.updatedCallback(!e) })) } }, beforeMount: function () { this.inTransition = !1, this.titleId = "rcDialogTitle" + _v++ }, mounted: function () { var e = this; this.$nextTick((function () { e.updatedCallback(!1), (e.forceRender || !1 === e.getContainer && !e.visible) && e.$refs.wrap && (e.$refs.wrap.style.display = "none") })) }, beforeDestroy: function () { var e = this.visible, t = this.getOpenCount; !e && !this.inTransition || t() || this.switchScrollingEffect(), clearTimeout(this.timeoutId) }, methods: { getDialogWrap: function () { return this.$refs.wrap }, updatedCallback: function (e) { var t = this.mousePosition, n = this.mask, r = this.focusTriggerAfterClose; if (this.visible) { if (!e) { this.openTime = Date.now(), this.switchScrollingEffect(), this.tryFocus(); var i = this.$refs.dialog.$el; if (t) { var o = kv(i); Ov(i, t.x - o.left + "px " + (t.y - o.top) + "px") } else Ov(i, "") } } else if (e && (this.inTransition = !0, n && this.lastOutSideFocusNode && r)) { try { this.lastOutSideFocusNode.focus() } catch (a) { this.lastOutSideFocusNode = null } this.lastOutSideFocusNode = null } }, tryFocus: function () { tn(this.$refs.wrap, document.activeElement) || (this.lastOutSideFocusNode = document.activeElement, this.$refs.sentinelStart.focus()) }, onAnimateLeave: function () { var e = this.afterClose, t = this.destroyOnClose; this.$refs.wrap && (this.$refs.wrap.style.display = "none"), t && (this.destroyPopup = !0), this.inTransition = !1, this.switchScrollingEffect(), e && e() }, onDialogMouseDown: function () { this.dialogMouseDown = !0 }, onMaskMouseUp: function () { var e = this; this.dialogMouseDown && (this.timeoutId = setTimeout((function () { e.dialogMouseDown = !1 }), 0)) }, onMaskClick: function (e) { Date.now() - this.openTime < 300 || e.target !== e.currentTarget || this.dialogMouseDown || this.close(e) }, onKeydown: function (e) { var t = this.$props; if (t.keyboard && e.keyCode === Io.ESC) return e.stopPropagation(), void this.close(e); if (t.visible && e.keyCode === Io.TAB) { var n = document.activeElement, r = this.$refs.sentinelStart; e.shiftKey ? n === r && this.$refs.sentinelEnd.focus() : n === this.$refs.sentinelEnd && r.focus() } }, getDialogElement: function () { var e = this.$createElement, t = this.closable, n = this.prefixCls, r = this.width, i = this.height, o = this.title, a = this.footer, c = this.bodyStyle, l = this.visible, u = this.bodyProps, f = this.forceRender, d = this.dialogStyle, p = this.dialogClass, m = s()({}, d); void 0 !== r && (m.width = "number" === typeof r ? r + "px" : r), void 0 !== i && (m.height = "number" === typeof i ? i + "px" : i); var g = void 0; a && (g = e("div", { key: "footer", class: n + "-footer", ref: "footer" }, [a])); var b = void 0; o && (b = e("div", { key: "header", class: n + "-header", ref: "header" }, [e("div", { class: n + "-title", attrs: { id: this.titleId } }, [o])])); var x = void 0; if (t) { var w = Object(v["g"])(this, "closeIcon"); x = e("button", { attrs: { type: "button", "aria-label": "Close" }, key: "close", on: { click: this.close || Cv }, class: n + "-close" }, [w || e("span", { class: n + "-close-x" })]) } var _ = m, C = { width: 0, height: 0, overflow: "hidden" }, M = h()({}, n, !0), O = this.getTransitionName(), k = e(vv, { directives: [{ name: "show", value: l }], key: "dialog-element", attrs: { role: "document", forceRender: f }, ref: "dialog", style: _, class: [M, p], on: { mousedown: this.onDialogMouseDown } }, [e("div", { attrs: { tabIndex: 0, "aria-hidden": "true" }, ref: "sentinelStart", style: C }), e("div", { class: n + "-content" }, [x, b, e("div", K()([{ key: "body", class: n + "-body", style: c, ref: "body" }, u]), [this.$slots["default"]]), g]), e("div", { attrs: { tabIndex: 0, "aria-hidden": "true" }, ref: "sentinelEnd", style: C })]), S = Object(y["a"])(O, { afterLeave: this.onAnimateLeave }); return e("transition", K()([{ key: "dialog" }, S]), [l || !this.destroyPopup ? k : null]) }, getZIndexStyle: function () { var e = {}, t = this.$props; return void 0 !== t.zIndex && (e.zIndex = t.zIndex), e }, getWrapStyle: function () { return s()({}, this.getZIndexStyle(), this.wrapStyle) }, getMaskStyle: function () { return s()({}, this.getZIndexStyle(), this.maskStyle) }, getMaskElement: function () { var e = this.$createElement, t = this.$props, n = void 0; if (t.mask) { var r = this.getMaskTransitionName(); if (n = e(vv, K()([{ directives: [{ name: "show", value: t.visible }], style: this.getMaskStyle(), key: "mask", class: t.prefixCls + "-mask" }, t.maskProps])), r) { var i = Object(y["a"])(r); n = e("transition", K()([{ key: "mask" }, i]), [n]) } } return n }, getMaskTransitionName: function () { var e = this.$props, t = e.maskTransitionName, n = e.maskAnimation; return !t && n && (t = e.prefixCls + "-" + n), t }, getTransitionName: function () { var e = this.$props, t = e.transitionName, n = e.animation; return !t && n && (t = e.prefixCls + "-" + n), t }, switchScrollingEffect: function () { var e = this.getOpenCount, t = e(); if (1 === t) { if (Sv.hasOwnProperty("overflowX")) return; Sv = { overflowX: document.body.style.overflowX, overflowY: document.body.style.overflowY, overflow: document.body.style.overflow }, yv(), document.body.style.overflow = "hidden" } else t || (void 0 !== Sv.overflow && (document.body.style.overflow = Sv.overflow), void 0 !== Sv.overflowX && (document.body.style.overflowX = Sv.overflowX), void 0 !== Sv.overflowY && (document.body.style.overflowY = Sv.overflowY), Sv = {}, yv(!0)) }, close: function (e) { this.__emit("close", e) } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.maskClosable, r = this.visible, i = this.wrapClassName, o = this.title, a = this.wrapProps, s = this.getWrapStyle(); return r && (s.display = null), e("div", { class: t + "-root" }, [this.getMaskElement(), e("div", K()([{ attrs: { tabIndex: -1, role: "dialog", "aria-labelledby": o ? this.titleId : null }, on: { keydown: this.onKeydown, click: n ? this.onMaskClick : Cv, mouseup: n ? this.onMaskMouseUp : Cv }, class: t + "-wrap " + (i || ""), ref: "wrap", style: s }, a]), [this.getDialogElement()])]) } }; function Av(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.element, r = void 0 === n ? document.body : n, i = {}, o = Object.keys(e); return o.forEach((function (e) { i[e] = r.style[e] })), o.forEach((function (t) { r.style[t] = e[t] })), i } var Lv = Av, jv = { name: "Portal", props: { getContainer: p["a"].func.isRequired, children: p["a"].any.isRequired, didUpdate: p["a"].func }, mounted: function () { this.createContainer() }, updated: function () { var e = this, t = this.$props.didUpdate; t && this.$nextTick((function () { t(e.$props) })) }, beforeDestroy: function () { this.removeContainer() }, methods: { createContainer: function () { this._container = this.$props.getContainer(), this.$forceUpdate() }, removeContainer: function () { this._container && this._container.parentNode && this._container.parentNode.removeChild(this._container) } }, render: function () { return this._container ? Object(en["a"])(this.$props.children, { directives: [{ name: "ant-portal", value: this._container }] }) : null } }, zv = 0, Ev = !("undefined" !== typeof window && window.document && window.document.createElement), Pv = {}, Dv = { name: "PortalWrapper", props: { wrapperClassName: p["a"].string, forceRender: p["a"].bool, getContainer: p["a"].any, children: p["a"].func, visible: p["a"].bool }, data: function () { var e = this.$props.visible; return zv = e ? zv + 1 : zv, {} }, updated: function () { this.setWrapperClassName() }, watch: { visible: function (e) { zv = e ? zv + 1 : zv - 1 }, getContainer: function (e, t) { var n = "function" === typeof e && "function" === typeof t; (n ? e.toString() !== t.toString() : e !== t) && this.removeCurrentContainer(!1) } }, beforeDestroy: function () { var e = this.$props.visible; zv = e && zv ? zv - 1 : zv, this.removeCurrentContainer(e) }, methods: { getParent: function () { var e = this.$props.getContainer; if (e) { if ("string" === typeof e) return document.querySelectorAll(e)[0]; if ("function" === typeof e) return e(); if ("object" === ("undefined" === typeof e ? "undefined" : Tt()(e)) && e instanceof window.HTMLElement) return e } return document.body }, getDomContainer: function () { if (Ev) return null; if (!this.container) { this.container = document.createElement("div"); var e = this.getParent(); e && e.appendChild(this.container) } return this.setWrapperClassName(), this.container }, setWrapperClassName: function () { var e = this.$props.wrapperClassName; this.container && e && e !== this.container.className && (this.container.className = e) }, savePortal: function (e) { this._component = e }, removeCurrentContainer: function () { this.container = null, this._component = null }, switchScrollingEffect: function () { 1 !== zv || Object.keys(Pv).length ? zv || (Lv(Pv), Pv = {}, yv(!0)) : (yv(), Pv = Lv({ overflow: "hidden", overflowX: "hidden", overflowY: "hidden" })) } }, render: function () { var e = arguments[0], t = this.$props, n = t.children, r = t.forceRender, i = t.visible, o = null, a = { getOpenCount: function () { return zv }, getContainer: this.getDomContainer, switchScrollingEffect: this.switchScrollingEffect }; return (r || i || this._component) && (o = e(jv, K()([{ attrs: { getContainer: this.getDomContainer, children: n(a) } }, { directives: [{ name: "ant-ref", value: this.savePortal }] }]))), o } }, Hv = xv(), Vv = { inheritAttrs: !1, props: s()({}, Hv, { visible: Hv.visible.def(!1) }), render: function () { var e = this, t = arguments[0], n = this.$props, r = n.visible, i = n.getContainer, o = n.forceRender, a = { props: this.$props, attrs: this.$attrs, ref: "_component", key: "dialog", on: Object(v["k"])(this) }; return !1 === i ? t(Tv, K()([a, { attrs: { getOpenCount: function () { return 2 } } }]), [this.$slots["default"]]) : t(Dv, { attrs: { visible: r, forceRender: o, getContainer: i, children: function (n) { return a.props = s()({}, a.props, n), t(Tv, a, [e.$slots["default"]]) } } }) } }, Iv = Vv, Nv = Iv, Rv = s()({}, Te.Modal); function Fv(e) { Rv = e ? s()({}, Rv, e) : s()({}, Te.Modal) } function Yv() { return Rv } var $v = gf().type, Bv = null, Wv = function (e) { Bv = { x: e.pageX, y: e.pageY }, setTimeout((function () { return Bv = null }), 100) }; function qv() { } "undefined" !== typeof window && window.document && window.document.documentElement && sn(document.documentElement, "click", Wv, !0); var Uv = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = { prefixCls: p["a"].string, visible: p["a"].bool, confirmLoading: p["a"].bool, title: p["a"].any, closable: p["a"].bool, closeIcon: p["a"].any, afterClose: p["a"].func.def(qv), centered: p["a"].bool, width: p["a"].oneOfType([p["a"].string, p["a"].number]), footer: p["a"].any, okText: p["a"].any, okType: $v, cancelText: p["a"].any, icon: p["a"].any, maskClosable: p["a"].bool, forceRender: p["a"].bool, okButtonProps: p["a"].object, cancelButtonProps: p["a"].object, destroyOnClose: p["a"].bool, wrapClassName: p["a"].string, maskTransitionName: p["a"].string, transitionName: p["a"].string, getContainer: p["a"].func, zIndex: p["a"].number, bodyStyle: p["a"].object, maskStyle: p["a"].object, mask: p["a"].bool, keyboard: p["a"].bool, wrapProps: p["a"].object, focusTriggerAfterClose: p["a"].bool }; return Object(v["t"])(t, e) }, Kv = [], Gv = { name: "AModal", inheritAttrs: !1, model: { prop: "visible", event: "change" }, props: Uv({ width: 520, transitionName: "zoom", maskTransitionName: "fade", confirmLoading: !1, visible: !1, okType: "primary" }), data: function () { return { sVisible: !!this.visible } }, watch: { visible: function (e) { this.sVisible = e } }, inject: { configProvider: { default: function () { return Vt } } }, methods: { handleCancel: function (e) { this.$emit("cancel", e), this.$emit("change", !1) }, handleOk: function (e) { this.$emit("ok", e) }, renderFooter: function (e) { var t = this.$createElement, n = this.okType, r = this.confirmLoading, i = Object(v["w"])({ on: { click: this.handleCancel } }, this.cancelButtonProps || {}), o = Object(v["w"])({ on: { click: this.handleOk }, props: { type: n, loading: r } }, this.okButtonProps || {}); return t("div", [t(Mf, i, [Object(v["g"])(this, "cancelText") || e.cancelText]), t(Mf, o, [Object(v["g"])(this, "okText") || e.okText])]) } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.sVisible, r = this.wrapClassName, i = this.centered, o = this.getContainer, a = this.$slots, c = this.$scopedSlots, l = this.$attrs, u = c["default"] ? c["default"]() : a["default"], f = this.configProvider, d = f.getPrefixCls, p = f.getPopupContainer, m = d("modal", t), g = e(Le, { attrs: { componentName: "Modal", defaultLocale: Yv() }, scopedSlots: { default: this.renderFooter } }), y = Object(v["g"])(this, "closeIcon"), b = e("span", { class: m + "-close-x" }, [y || e(Ve, { class: m + "-close-icon", attrs: { type: "close" } })]), x = Object(v["g"])(this, "footer"), w = Object(v["g"])(this, "title"), _ = { props: s()({}, this.$props, { getContainer: void 0 === o ? p : o, prefixCls: m, wrapClassName: Q()(h()({}, m + "-centered", !!i), r), title: w, footer: void 0 === x ? g : x, visible: n, mousePosition: Bv, closeIcon: b }), on: s()({}, Object(v["k"])(this), { close: this.handleCancel }), class: Object(v["f"])(this), style: Object(v["q"])(this), attrs: l }; return e(Nv, _, [u]) } }, Xv = gf().type, Jv = { type: Xv, actionFn: p["a"].func, closeModal: p["a"].func, autoFocus: p["a"].bool, buttonProps: p["a"].object }, Qv = { mixins: [m["a"]], props: Jv, data: function () { return { loading: !1 } }, mounted: function () { var e = this; this.autoFocus && (this.timeoutId = setTimeout((function () { return e.$el.focus() }))) }, beforeDestroy: function () { clearTimeout(this.timeoutId) }, methods: { onClick: function () { var e = this, t = this.actionFn, n = this.closeModal; if (t) { var r = void 0; t.length ? r = t(n) : (r = t(), r || n()), r && r.then && (this.setState({ loading: !0 }), r.then((function () { n.apply(void 0, arguments) }), (function (t) { console.error(t), e.setState({ loading: !1 }) }))) } else n() } }, render: function () { var e = arguments[0], t = this.type, n = this.$slots, r = this.loading, i = this.buttonProps; return e(Mf, K()([{ attrs: { type: t, loading: r }, on: { click: this.onClick } }, i]), [n["default"]]) } }, Zv = { functional: !0, render: function (e, t) { var n = t.props, r = n.onCancel, i = n.onOk, o = n.close, a = n.zIndex, s = n.afterClose, c = n.visible, l = n.keyboard, u = n.centered, f = n.getContainer, d = n.maskStyle, p = n.okButtonProps, v = n.cancelButtonProps, m = n.iconType, g = void 0 === m ? "question-circle" : m, y = n.closable, b = void 0 !== y && y; fe(!("iconType" in n), "Modal", "The property 'iconType' is deprecated. Use the property 'icon' instead."); var x = n.icon ? n.icon : g, w = n.okType || "primary", _ = n.prefixCls || "ant-modal", C = _ + "-confirm", M = !("okCancel" in n) || n.okCancel, O = n.width || 416, k = n.style || {}, S = void 0 === n.mask || n.mask, T = void 0 !== n.maskClosable && n.maskClosable, A = Yv(), L = n.okText || (M ? A.okText : A.justOkText), j = n.cancelText || A.cancelText, z = null !== n.autoFocusButton && (n.autoFocusButton || "ok"), E = n.transitionName || "zoom", P = n.maskTransitionName || "fade", D = Q()(C, C + "-" + n.type, _ + "-" + n.type, n["class"]), H = M && e(Qv, { attrs: { actionFn: r, closeModal: o, autoFocus: "cancel" === z, buttonProps: v } }, [j]), V = "string" === typeof x ? e(Ve, { attrs: { type: x } }) : x(e); return e(Gv, { attrs: { prefixCls: _, wrapClassName: Q()(h()({}, C + "-centered", !!u)), visible: c, closable: b, title: "", transitionName: E, footer: "", maskTransitionName: P, mask: S, maskClosable: T, maskStyle: d, width: O, zIndex: a, afterClose: s, keyboard: l, centered: u, getContainer: f }, class: D, on: { cancel: function (e) { return o({ triggerCancel: !0 }, e) } }, style: k }, [e("div", { class: C + "-body-wrapper" }, [e("div", { class: C + "-body" }, [V, void 0 === n.title ? null : e("span", { class: C + "-title" }, ["function" === typeof n.title ? n.title(e) : n.title]), e("div", { class: C + "-content" }, ["function" === typeof n.content ? n.content(e) : n.content])]), e("div", { class: C + "-btns" }, [H, e(Qv, { attrs: { type: w, actionFn: i, closeModal: o, autoFocus: "ok" === z, buttonProps: p } }, [L])])])]) } }; function em(e) { var t = document.createElement("div"), n = document.createElement("div"); t.appendChild(n), document.body.appendChild(t); var r = s()({}, Object(Qi["a"])(e, ["parentContext"]), { close: a, visible: !0 }), i = null, o = { props: {} }; function a() { l.apply(void 0, arguments) } function c(e) { r = s()({}, r, e), o.props = r } function l() { i && t.parentNode && (i.$destroy(), i = null, t.parentNode.removeChild(t)); for (var n = arguments.length, r = Array(n), o = 0; o < n; o++)r[o] = arguments[o]; var s = r.some((function (e) { return e && e.triggerCancel })); e.onCancel && s && e.onCancel.apply(e, r); for (var c = 0; c < Kv.length; c++) { var l = Kv[c]; if (l === a) { Kv.splice(c, 1); break } } } function u(t) { o.props = t; var r = N.Vue || d.a; return new r({ el: n, parent: e.parentContext, data: function () { return { confirmDialogProps: o } }, render: function () { var e = arguments[0], t = s()({}, this.confirmDialogProps); return e(Zv, t) } }) } return i = u(r), Kv.push(a), { destroy: a, update: c } } var tm = function (e) { var t = s()({ type: "info", icon: function (e) { return e(Ve, { attrs: { type: "info-circle" } }) }, okCancel: !1 }, e); return em(t) }, nm = function (e) { var t = s()({ type: "success", icon: function (e) { return e(Ve, { attrs: { type: "check-circle" } }) }, okCancel: !1 }, e); return em(t) }, rm = function (e) { var t = s()({ type: "error", icon: function (e) { return e(Ve, { attrs: { type: "close-circle" } }) }, okCancel: !1 }, e); return em(t) }, im = function (e) { var t = s()({ type: "warning", icon: function (e) { return e(Ve, { attrs: { type: "exclamation-circle" } }) }, okCancel: !1 }, e); return em(t) }, om = im, am = function (e) { var t = s()({ type: "confirm", okCancel: !0 }, e); return em(t) }; Gv.info = tm, Gv.success = nm, Gv.error = rm, Gv.warning = im, Gv.warn = om, Gv.confirm = am, Gv.destroyAll = function () { while (Kv.length) { var e = Kv.pop(); e && e() } }, Gv.install = function (e) { e.use(N), e.component(Gv.name, Gv) }; var sm = Gv, cm = (n("3de4"), p["a"].oneOfType([p["a"].string, p["a"].number])), lm = p["a"].shape({ span: cm, order: cm, offset: cm, push: cm, pull: cm }).loose, um = p["a"].oneOfType([p["a"].string, p["a"].number, lm]), hm = { span: cm, order: cm, offset: cm, push: cm, pull: cm, xs: um, sm: um, md: um, lg: um, xl: um, xxl: um, prefixCls: p["a"].string, flex: cm }, fm = { name: "ACol", props: hm, inject: { configProvider: { default: function () { return Vt } }, rowContext: { default: function () { return null } } }, methods: { parseFlex: function (e) { return "number" === typeof e ? e + " " + e + " auto" : /^\d+(\.\d+)?(px|em|rem|%)$/.test(e) ? "0 0 " + e : e } }, render: function () { var e, t = this, n = arguments[0], r = this.span, i = this.order, o = this.offset, a = this.push, c = this.pull, l = this.flex, u = this.prefixCls, f = this.$slots, d = this.rowContext, p = this.configProvider.getPrefixCls, m = p("col", u), g = {};["xs", "sm", "md", "lg", "xl", "xxl"].forEach((function (e) { var n, r = {}, i = t[e]; "number" === typeof i ? r.span = i : "object" === ("undefined" === typeof i ? "undefined" : Tt()(i)) && (r = i || {}), g = s()({}, g, (n = {}, h()(n, m + "-" + e + "-" + r.span, void 0 !== r.span), h()(n, m + "-" + e + "-order-" + r.order, r.order || 0 === r.order), h()(n, m + "-" + e + "-offset-" + r.offset, r.offset || 0 === r.offset), h()(n, m + "-" + e + "-push-" + r.push, r.push || 0 === r.push), h()(n, m + "-" + e + "-pull-" + r.pull, r.pull || 0 === r.pull), n)) })); var y = s()((e = {}, h()(e, "" + m, !0), h()(e, m + "-" + r, void 0 !== r), h()(e, m + "-order-" + i, i), h()(e, m + "-offset-" + o, o), h()(e, m + "-push-" + a, a), h()(e, m + "-pull-" + c, c), e), g), b = { on: Object(v["k"])(this), class: y, style: {} }; if (d) { var x = d.getGutter(); x && (b.style = s()({}, x[0] > 0 ? { paddingLeft: x[0] / 2 + "px", paddingRight: x[0] / 2 + "px" } : {}, x[1] > 0 ? { paddingTop: x[1] / 2 + "px", paddingBottom: x[1] / 2 + "px" } : {})) } return l && (b.style.flex = this.parseFlex(l)), n("div", b, [f["default"]]) }, install: function (e) { e.use(N), e.component(fm.name, fm) } }, dm = fm, pm = void 0; if ("undefined" !== typeof window) { var vm = function (e) { return { media: e, matches: !1, addListener: function () { }, removeListener: function () { } } }; window.matchMedia || (window.matchMedia = vm), pm = n("8e95") } var mm = { xs: "(max-width: 575px)", sm: "(min-width: 576px)", md: "(min-width: 768px)", lg: "(min-width: 992px)", xl: "(min-width: 1200px)", xxl: "(min-width: 1600px)" }, gm = [], ym = -1, bm = {}, xm = { dispatch: function (e) { return bm = e, !(gm.length < 1) && (gm.forEach((function (e) { e.func(bm) })), !0) }, subscribe: function (e) { 0 === gm.length && this.register(); var t = (++ym).toString(); return gm.push({ token: t, func: e }), e(bm), t }, unsubscribe: function (e) { gm = gm.filter((function (t) { return t.token !== e })), 0 === gm.length && this.unregister() }, unregister: function () { Object.keys(mm).map((function (e) { return pm.unregister(mm[e]) })) }, register: function () { var e = this; Object.keys(mm).map((function (t) { return pm.register(mm[t], { match: function () { var n = s()({}, bm, h()({}, t, !0)); e.dispatch(n) }, unmatch: function () { var n = s()({}, bm, h()({}, t, !1)); e.dispatch(n) }, destroy: function () { } }) })) } }, wm = xm, _m = { gutter: p["a"].oneOfType([p["a"].object, p["a"].number, p["a"].array]), type: p["a"].oneOf(["flex"]), align: p["a"].oneOf(["top", "middle", "bottom", "stretch"]), justify: p["a"].oneOf(["start", "end", "center", "space-around", "space-between"]), prefixCls: p["a"].string }, Cm = ["xxl", "xl", "lg", "md", "sm", "xs"], Mm = { name: "ARow", mixins: [m["a"]], props: s()({}, _m, { gutter: p["a"].oneOfType([p["a"].object, p["a"].number, p["a"].array]).def(0) }), provide: function () { return { rowContext: this } }, inject: { configProvider: { default: function () { return Vt } } }, data: function () { return { screens: {} } }, mounted: function () { var e = this; this.$nextTick((function () { e.token = wm.subscribe((function (t) { var n = e.gutter; ("object" === ("undefined" === typeof n ? "undefined" : Tt()(n)) || Array.isArray(n) && ("object" === Tt()(n[0]) || "object" === Tt()(n[1]))) && (e.screens = t) })) })) }, beforeDestroy: function () { wm.unsubscribe(this.token) }, methods: { getGutter: function () { var e = [0, 0], t = this.gutter, n = this.screens, r = Array.isArray(t) ? t : [t, 0]; return r.forEach((function (t, r) { if ("object" === ("undefined" === typeof t ? "undefined" : Tt()(t))) for (var i = 0; i < Cm.length; i++) { var o = Cm[i]; if (n[o] && void 0 !== t[o]) { e[r] = t[o]; break } } else e[r] = t || 0 })), e } }, render: function () { var e, t = arguments[0], n = this.type, r = this.justify, i = this.align, o = this.prefixCls, a = this.$slots, c = this.configProvider.getPrefixCls, l = c("row", o), u = this.getGutter(), f = (e = {}, h()(e, l, !n), h()(e, l + "-" + n, n), h()(e, l + "-" + n + "-" + r, n && r), h()(e, l + "-" + n + "-" + i, n && i), e), d = s()({}, u[0] > 0 ? { marginLeft: u[0] / -2 + "px", marginRight: u[0] / -2 + "px" } : {}, u[1] > 0 ? { marginTop: u[1] / -2 + "px", marginBottom: u[1] / -2 + "px" } : {}); return t("div", { class: f, style: d }, [a["default"]]) }, install: function (e) { e.use(N), e.component(Mm.name, Mm) } }, Om = Mm, km = (n("04a9"), n("c005")), Sm = n.n(km), Tm = n("3852"), Am = n.n(Tm), Lm = n("2a95"), jm = n("0f5c"), zm = n.n(jm), Em = n("9638"), Pm = n.n(Em), Dm = function e(t) { Hl()(this, e), s()(this, t) }; function Hm(e) { return e instanceof Dm } function Vm(e) { return Hm(e) ? e : new Dm(e) } function Im(e) { return e.name || "WrappedComponent" } function Nm(e, t) { return e.name = "Form_" + Im(t), e.WrappedComponent = t, e.props = s()({}, e.props, t.props), e } function Rm(e) { return e } function Fm(e) { return Array.prototype.concat.apply([], e) } function Ym() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", t = arguments[1], n = arguments[2], r = arguments[3], i = arguments[4]; if (n(e, t)) i(e, t); else if (void 0 === t || null === t); else if (Array.isArray(t)) t.forEach((function (t, o) { return Ym(e + "[" + o + "]", t, n, r, i) })); else { if ("object" !== ("undefined" === typeof t ? "undefined" : Tt()(t))) return void ul()(!1, r); Object.keys(t).forEach((function (o) { var a = t[o]; Ym(e + (e ? "." : "") + o, a, n, r, i) })) } } function $m(e, t, n) { var r = {}; return Ym(void 0, e, t, n, (function (e, t) { r[e] = t })), r } function Bm(e, t, n) { var r = e.map((function (e) { var t = s()({}, e, { trigger: e.trigger || [] }); return "string" === typeof t.trigger && (t.trigger = [t.trigger]), t })); return t && r.push({ trigger: n ? [].concat(n) : [], rules: t }), r } function Wm(e) { return e.filter((function (e) { return !!e.rules && e.rules.length })).map((function (e) { return e.trigger })).reduce((function (e, t) { return e.concat(t) }), []) } function qm(e) { if (!e || !e.target) return e; var t = e.target; return "checkbox" === t.type ? t.checked : t.value } function Um(e) { return e ? e.map((function (e) { return e && e.message ? e.message : e })) : e } function Km(e, t, n) { var r = e, i = t, o = n; return void 0 === n && ("function" === typeof r ? (o = r, i = {}, r = void 0) : Array.isArray(r) ? "function" === typeof i ? (o = i, i = {}) : i = i || {} : (o = i, i = r || {}, r = void 0)), { names: r, options: i, callback: o } } function Gm(e) { return 0 === Object.keys(e).length } function Xm(e) { return !!e && e.some((function (e) { return e.rules && e.rules.length })) } function Jm(e, t) { return 0 === e.lastIndexOf(t, 0) } function Qm(e, t) { return 0 === t.indexOf(e) && -1 !== [".", "["].indexOf(t[e.length]) } function Zm(e) { return $m(e, (function (e, t) { return Hm(t) }), "You must wrap field data with `createFormField`.") } var eg = function () { function e(t) { Hl()(this, e), tg.call(this), this.fields = Zm(t), this.fieldsMeta = {} } return Il()(e, [{ key: "updateFields", value: function (e) { this.fields = Zm(e) } }, { key: "flattenRegisteredFields", value: function (e) { var t = this.getAllFieldsName(); return $m(e, (function (e) { return t.indexOf(e) >= 0 }), 'You cannot set a form field before rendering a field associated with the value. You can use `getFieldDecorator(id, options)` instead `v-decorator="[id, options]"` to register it before render.') } }, { key: "setFields", value: function (e) { var t = this, n = this.fieldsMeta, r = s()({}, this.fields, e), i = {}; Object.keys(n).forEach((function (e) { i[e] = t.getValueFromFields(e, r) })), Object.keys(i).forEach((function (e) { var n = i[e], o = t.getFieldMeta(e); if (o && o.normalize) { var a = o.normalize(n, t.getValueFromFields(e, t.fields), i); a !== n && (r[e] = s()({}, r[e], { value: a })) } })), this.fields = r } }, { key: "resetFields", value: function (e) { var t = this.fields, n = e ? this.getValidFieldsFullName(e) : this.getAllFieldsName(); return n.reduce((function (e, n) { var r = t[n]; return r && "value" in r && (e[n] = {}), e }), {}) } }, { key: "setFieldMeta", value: function (e, t) { this.fieldsMeta[e] = t } }, { key: "setFieldsAsDirty", value: function () { var e = this; Object.keys(this.fields).forEach((function (t) { var n = e.fields[t], r = e.fieldsMeta[t]; n && r && Xm(r.validate) && (e.fields[t] = s()({}, n, { dirty: !0 })) })) } }, { key: "getFieldMeta", value: function (e) { return this.fieldsMeta[e] = this.fieldsMeta[e] || {}, this.fieldsMeta[e] } }, { key: "getValueFromFields", value: function (e, t) { var n = t[e]; if (n && "value" in n) return n.value; var r = this.getFieldMeta(e); return r && r.initialValue } }, { key: "getValidFieldsName", value: function () { var e = this, t = this.fieldsMeta; return t ? Object.keys(t).filter((function (t) { return !e.getFieldMeta(t).hidden })) : [] } }, { key: "getAllFieldsName", value: function () { var e = this.fieldsMeta; return e ? Object.keys(e) : [] } }, { key: "getValidFieldsFullName", value: function (e) { var t = Array.isArray(e) ? e : [e]; return this.getValidFieldsName().filter((function (e) { return t.some((function (t) { return e === t || Jm(e, t) && [".", "["].indexOf(e[t.length]) >= 0 })) })) } }, { key: "getFieldValuePropValue", value: function (e) { var t = e.name, n = e.getValueProps, r = e.valuePropName, i = this.getField(t), o = "value" in i ? i.value : e.initialValue; return n ? n(o) : h()({}, r, o) } }, { key: "getField", value: function (e) { return s()({}, this.fields[e], { name: e }) } }, { key: "getNotCollectedFields", value: function () { var e = this, t = this.getValidFieldsName(); return t.filter((function (t) { return !e.fields[t] })).map((function (t) { return { name: t, dirty: !1, value: e.getFieldMeta(t).initialValue } })).reduce((function (e, t) { return zm()(e, t.name, Vm(t)) }), {}) } }, { key: "getNestedAllFields", value: function () { var e = this; return Object.keys(this.fields).reduce((function (t, n) { return zm()(t, n, Vm(e.fields[n])) }), this.getNotCollectedFields()) } }, { key: "getFieldMember", value: function (e, t) { return this.getField(e)[t] } }, { key: "getNestedFields", value: function (e, t) { var n = e || this.getValidFieldsName(); return n.reduce((function (e, n) { return zm()(e, n, t(n)) }), {}) } }, { key: "getNestedField", value: function (e, t) { var n = this.getValidFieldsFullName(e); if (0 === n.length || 1 === n.length && n[0] === e) return t(e); var r = "[" === n[0][e.length], i = r ? e.length : e.length + 1; return n.reduce((function (e, n) { return zm()(e, n.slice(i), t(n)) }), r ? [] : {}) } }, { key: "isValidNestedFieldName", value: function (e) { var t = this.getAllFieldsName(); return t.every((function (t) { return !Qm(t, e) && !Qm(e, t) })) } }, { key: "clearField", value: function (e) { delete this.fields[e], delete this.fieldsMeta[e] } }]), e }(), tg = function () { var e = this; this.setFieldsInitialValue = function (t) { var n = e.flattenRegisteredFields(t), r = e.fieldsMeta; Object.keys(n).forEach((function (t) { r[t] && e.setFieldMeta(t, s()({}, e.getFieldMeta(t), { initialValue: n[t] })) })) }, this.getAllValues = function () { var t = e.fieldsMeta, n = e.fields; return Object.keys(t).reduce((function (t, r) { return zm()(t, r, e.getValueFromFields(r, n)) }), {}) }, this.getFieldsValue = function (t) { return e.getNestedFields(t, e.getFieldValue) }, this.getFieldValue = function (t) { var n = e.fields; return e.getNestedField(t, (function (t) { return e.getValueFromFields(t, n) })) }, this.getFieldsError = function (t) { return e.getNestedFields(t, e.getFieldError) }, this.getFieldError = function (t) { return e.getNestedField(t, (function (t) { return Um(e.getFieldMember(t, "errors")) })) }, this.isFieldValidating = function (t) { return e.getFieldMember(t, "validating") }, this.isFieldsValidating = function (t) { var n = t || e.getValidFieldsName(); return n.some((function (t) { return e.isFieldValidating(t) })) }, this.isFieldTouched = function (t) { return e.getFieldMember(t, "touched") }, this.isFieldsTouched = function (t) { var n = t || e.getValidFieldsName(); return n.some((function (t) { return e.isFieldTouched(t) })) } }; function ng(e) { return new eg(e) } var rg = "change"; function ig() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [], n = e.validateMessages, r = e.onFieldsChange, i = e.onValuesChange, o = e.mapProps, a = void 0 === o ? Rm : o, c = e.mapPropsToFields, u = e.fieldNameProp, f = e.fieldMetaProp, d = e.fieldDataProp, g = e.formPropName, y = void 0 === g ? "form" : g, b = e.name, x = e.props, w = void 0 === x ? {} : x, _ = e.templateContext; return function (e) { var o = {}; Array.isArray(w) ? w.forEach((function (e) { o[e] = p["a"].any })) : o = w; var g = { mixins: [m["a"]].concat(X()(t)), props: s()({}, o, { wrappedComponentRef: p["a"].func.def((function () { })) }), data: function () { var e = this, t = c && c(this.$props); return this.fieldsStore = ng(t || {}), this.templateContext = _, this.instances = {}, this.cachedBind = {}, this.clearedFieldMetaCache = {}, this.formItems = {}, this.renderFields = {}, this.domFields = {}, ["getFieldsValue", "getFieldValue", "setFieldsInitialValue", "getFieldsError", "getFieldError", "isFieldValidating", "isFieldsValidating", "isFieldsTouched", "isFieldTouched"].forEach((function (t) { e[t] = function () { var n; return (n = e.fieldsStore)[t].apply(n, arguments) } })), { submitting: !1 } }, watch: _ ? {} : { $props: { handler: function (e) { c && this.fieldsStore.updateFields(c(e)) }, deep: !0 } }, mounted: function () { this.cleanUpUselessFields() }, updated: function () { this.cleanUpUselessFields() }, methods: { updateFields: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; this.fieldsStore.updateFields(c(e)), _ && _.$forceUpdate() }, onCollectCommon: function (e, t, n) { var r = this.fieldsStore.getFieldMeta(e); if (r[t]) r[t].apply(r, X()(n)); else if (r.originalProps && r.originalProps[t]) { var o; (o = r.originalProps)[t].apply(o, X()(n)) } var a = r.getValueFromEvent ? r.getValueFromEvent.apply(r, X()(n)) : qm.apply(void 0, X()(n)); if (i && a !== this.fieldsStore.getFieldValue(e)) { var c = this.fieldsStore.getAllValues(), l = {}; c[e] = a, Object.keys(c).forEach((function (e) { return zm()(l, e, c[e]) })), i(s()(h()({}, y, this.getForm()), this.$props), zm()({}, e, a), l) } var u = this.fieldsStore.getField(e); return { name: e, field: s()({}, u, { value: a, touched: !0 }), fieldMeta: r } }, onCollect: function (e, t) { for (var n = arguments.length, r = Array(n > 2 ? n - 2 : 0), i = 2; i < n; i++)r[i - 2] = arguments[i]; var o = this.onCollectCommon(e, t, r), a = o.name, c = o.field, l = o.fieldMeta, u = l.validate; this.fieldsStore.setFieldsAsDirty(); var f = s()({}, c, { dirty: Xm(u) }); this.setFields(h()({}, a, f)) }, onCollectValidate: function (e, t) { for (var n = arguments.length, r = Array(n > 2 ? n - 2 : 0), i = 2; i < n; i++)r[i - 2] = arguments[i]; var o = this.onCollectCommon(e, t, r), a = o.field, c = o.fieldMeta, l = s()({}, a, { dirty: !0 }); this.fieldsStore.setFieldsAsDirty(), this.validateFieldsInternal([l], { action: t, options: { firstFields: !!c.validateFirst } }) }, getCacheBind: function (e, t, n) { this.cachedBind[e] || (this.cachedBind[e] = {}); var r = this.cachedBind[e]; return r[t] && r[t].oriFn === n || (r[t] = { fn: n.bind(this, e, t), oriFn: n }), r[t].fn }, getFieldDecorator: function (e, t, n) { var r = this, i = this.getFieldProps(e, t), o = i.props, a = l()(i, ["props"]); return this.formItems[e] = n, function (t) { r.renderFields[e] = !0; var n = r.fieldsStore.getFieldMeta(e), i = Object(v["l"])(t), c = Object(v["i"])(t); n.originalProps = i; var l = s()({ props: s()({}, o, r.fieldsStore.getFieldValuePropValue(n)) }, a); l.domProps.value = l.props.value; var u = {}; return Object.keys(l.on).forEach((function (e) { if (c[e]) { var t = l.on[e]; u[e] = function () { c[e].apply(c, arguments), t.apply(void 0, arguments) } } else u[e] = l.on[e] })), Object(en["a"])(t, s()({}, l, { on: u })) } }, getFieldProps: function (e) { var t = this, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; if (!e) throw new Error("Must call `getFieldProps` with valid name string!"); delete this.clearedFieldMetaCache[e]; var r = s()({ name: e, trigger: rg, valuePropName: "value", validate: [] }, n), i = r.rules, o = r.trigger, a = r.validateTrigger, c = void 0 === a ? o : a, l = r.validate, h = this.fieldsStore.getFieldMeta(e); "initialValue" in r && (h.initialValue = r.initialValue); var p = s()({}, this.fieldsStore.getFieldValuePropValue(r)), v = {}, m = {}; u && (p[u] = b ? b + "_" + e : e); var g = Bm(l, i, c), y = Wm(g); y.forEach((function (n) { v[n] || (v[n] = t.getCacheBind(e, n, t.onCollectValidate)) })), o && -1 === y.indexOf(o) && (v[o] = this.getCacheBind(e, o, this.onCollect)); var x = s()({}, h, r, { validate: g }); return this.fieldsStore.setFieldMeta(e, x), f && (m[f] = x), d && (m[d] = this.fieldsStore.getField(e)), this.renderFields[e] = !0, { props: hs()(p, ["id"]), domProps: { value: p.value }, attrs: s()({}, m, { id: p.id }), directives: [{ name: "ant-ref", value: this.getCacheBind(e, e + "__ref", this.saveRef) }], on: v } }, getFieldInstance: function (e) { return this.instances[e] }, getRules: function (e, t) { var n = e.validate.filter((function (e) { return !t || e.trigger.indexOf(t) >= 0 })).map((function (e) { return e.rules })); return Fm(n) }, setFields: function (e, t) { var n = this, i = this.fieldsStore.flattenRegisteredFields(e); this.fieldsStore.setFields(i); var o = Object.keys(i).reduce((function (e, t) { return zm()(e, t, n.fieldsStore.getField(t)) }), {}); if (r) { var a = Object.keys(i).reduce((function (e, t) { return zm()(e, t, n.fieldsStore.getField(t)) }), {}); r(this, a, this.fieldsStore.getNestedAllFields()) } var s = _ || this, c = !1; Object.keys(o).forEach((function (e) { var t = n.formItems[e]; t = "function" === typeof t ? t() : t, t && t.itemSelfUpdate ? t.$forceUpdate() : c = !0 })), c && s.$forceUpdate(), this.$nextTick((function () { t && t() })) }, setFieldsValue: function (e, t) { var n = this.fieldsStore.fieldsMeta, r = this.fieldsStore.flattenRegisteredFields(e), o = Object.keys(r).reduce((function (e, t) { var i = n[t]; if (i) { var o = r[t]; e[t] = { value: o } } return e }), {}); if (this.setFields(o, t), i) { var a = this.fieldsStore.getAllValues(); i(s()(h()({}, y, this.getForm()), this.$props), e, a) } }, saveRef: function (e, t, n) { if (!n) { var r = this.fieldsStore.getFieldMeta(e); return r.preserve || (this.clearedFieldMetaCache[e] = { field: this.fieldsStore.getField(e), meta: r }, this.clearField(e)), void delete this.domFields[e] } this.domFields[e] = !0, this.recoverClearedField(e), this.instances[e] = n }, cleanUpUselessFields: function () { var e = this, t = this.fieldsStore.getAllFieldsName(), n = t.filter((function (t) { var n = e.fieldsStore.getFieldMeta(t); return !e.renderFields[t] && !e.domFields[t] && !n.preserve })); n.length && n.forEach(this.clearField), this.renderFields = {} }, clearField: function (e) { this.fieldsStore.clearField(e), delete this.instances[e], delete this.cachedBind[e] }, resetFields: function (e) { var t = this, n = this.fieldsStore.resetFields(e); if (Object.keys(n).length > 0 && this.setFields(n), e) { var r = Array.isArray(e) ? e : [e]; r.forEach((function (e) { return delete t.clearedFieldMetaCache[e] })) } else this.clearedFieldMetaCache = {} }, recoverClearedField: function (e) { this.clearedFieldMetaCache[e] && (this.fieldsStore.setFields(h()({}, e, this.clearedFieldMetaCache[e].field)), this.fieldsStore.setFieldMeta(e, this.clearedFieldMetaCache[e].meta), delete this.clearedFieldMetaCache[e]) }, validateFieldsInternal: function (e, t, r) { var i = this, o = t.fieldNames, a = t.action, c = t.options, l = void 0 === c ? {} : c, u = {}, h = {}, f = {}, d = {}; if (e.forEach((function (e) { var t = e.name; if (!0 === l.force || !1 !== e.dirty) { var n = i.fieldsStore.getFieldMeta(t), r = s()({}, e); r.errors = void 0, r.validating = !0, r.dirty = !0, u[t] = i.getRules(n, a), h[t] = r.value, f[t] = r } else e.errors && zm()(d, t, { errors: e.errors }) })), this.setFields(f), Object.keys(h).forEach((function (e) { h[e] = i.fieldsStore.getFieldValue(e) })), r && Gm(f)) r(Gm(d) ? null : d, this.fieldsStore.getFieldsValue(o)); else { var p = new Lm["a"](u); n && p.messages(n), p.validate(h, l, (function (e) { var t = s()({}, d); e && e.length && e.forEach((function (e) { var n = e.field, r = n; Object.keys(u).some((function (e) { var t = u[e] || []; if (e === n) return r = e, !0; if (t.every((function (e) { var t = e.type; return "array" !== t })) && 0 !== n.indexOf(e)) return !1; var i = n.slice(e.length + 1); return !!/^\d+$/.test(i) && (r = e, !0) })); var i = Ul()(t, r); ("object" !== ("undefined" === typeof i ? "undefined" : Tt()(i)) || Array.isArray(i)) && zm()(t, r, { errors: [] }); var o = Ul()(t, r.concat(".errors")); o.push(e) })); var n = [], a = {}; Object.keys(u).forEach((function (e) { var r = Ul()(t, e), o = i.fieldsStore.getField(e); Pm()(o.value, h[e]) ? (o.errors = r && r.errors, o.value = h[e], o.validating = !1, o.dirty = !1, a[e] = o) : n.push({ name: e }) })), i.setFields(a), r && (n.length && n.forEach((function (e) { var n = e.name, r = [{ message: n + " need to revalidate", field: n }]; zm()(t, n, { expired: !0, errors: r }) })), r(Gm(t) ? null : t, i.fieldsStore.getFieldsValue(o))) })) } }, validateFields: function (e, t, n) { var r = this, i = new Promise((function (i, o) { var a = Km(e, t, n), s = a.names, c = a.options, l = Km(e, t, n), u = l.callback; if (!u || "function" === typeof u) { var h = u; u = function (e, t) { h ? h(e, t) : e ? o({ errors: e, values: t }) : i(t) } } var f = s ? r.fieldsStore.getValidFieldsFullName(s) : r.fieldsStore.getValidFieldsName(), d = f.filter((function (e) { var t = r.fieldsStore.getFieldMeta(e); return Xm(t.validate) })).map((function (e) { var t = r.fieldsStore.getField(e); return t.value = r.fieldsStore.getFieldValue(e), t })); d.length ? ("firstFields" in c || (c.firstFields = f.filter((function (e) { var t = r.fieldsStore.getFieldMeta(e); return !!t.validateFirst }))), r.validateFieldsInternal(d, { fieldNames: f, options: c }, u)) : u(null, r.fieldsStore.getFieldsValue(f)) })); return i["catch"]((function (e) { return console.error, e })), i }, isSubmitting: function () { return this.submitting }, submit: function (e) { var t = this, n = function () { t.setState({ submitting: !1 }) }; this.setState({ submitting: !0 }), e(n) } }, render: function () { var t = arguments[0], n = this.$slots, r = this.$scopedSlots, i = h()({}, y, this.getForm()), o = Object(v["l"])(this), c = o.wrappedComponentRef, u = l()(o, ["wrappedComponentRef"]), f = { props: a.call(this, s()({}, i, u)), on: Object(v["k"])(this), ref: "WrappedComponent", directives: [{ name: "ant-ref", value: c }] }; Object.keys(r).length && (f.scopedSlots = r); var d = Object.keys(n); return e ? t(e, f, [d.length ? d.map((function (e) { return t("template", { slot: e }, [n[e]]) })) : null]) : null } }; if (!e) return g; if (Array.isArray(e.props)) { var x = {}; e.props.forEach((function (e) { x[e] = p["a"].any })), x[y] = Object, e.props = x } else e.props = e.props || {}, y in e.props || (e.props[y] = Object); return Nm(g, e) } } var og = ig, ag = { methods: { getForm: function () { return { getFieldsValue: this.fieldsStore.getFieldsValue, getFieldValue: this.fieldsStore.getFieldValue, getFieldInstance: this.getFieldInstance, setFieldsValue: this.setFieldsValue, setFields: this.setFields, setFieldsInitialValue: this.fieldsStore.setFieldsInitialValue, getFieldDecorator: this.getFieldDecorator, getFieldProps: this.getFieldProps, getFieldsError: this.fieldsStore.getFieldsError, getFieldError: this.fieldsStore.getFieldError, isFieldValidating: this.fieldsStore.isFieldValidating, isFieldsValidating: this.fieldsStore.isFieldsValidating, isFieldsTouched: this.fieldsStore.isFieldsTouched, isFieldTouched: this.fieldsStore.isFieldTouched, isSubmitting: this.isSubmitting, submit: this.submit, validateFields: this.validateFields, resetFields: this.resetFields } } } }; function sg(e, t) { var n = window.getComputedStyle, r = n ? n(e) : e.currentStyle; if (r) return r[t.replace(/-(\w)/gi, (function (e, t) { return t.toUpperCase() }))] } function cg(e) { var t = e, n = void 0; while ("body" !== (n = t.nodeName.toLowerCase())) { var r = sg(t, "overflowY"); if (t !== e && ("auto" === r || "scroll" === r) && t.scrollHeight > t.clientHeight) return t; t = t.parentNode } return "body" === n ? t.ownerDocument : t } var lg = { methods: { getForm: function () { return s()({}, ag.methods.getForm.call(this), { validateFieldsAndScroll: this.validateFieldsAndScroll }) }, validateFieldsAndScroll: function (e, t, n) { var r = this, i = Km(e, t, n), o = i.names, a = i.callback, c = i.options, l = function (e, t) { if (e) { var n = r.fieldsStore.getValidFieldsName(), i = void 0, o = void 0; if (n.forEach((function (t) { if (Am()(e, t)) { var n = r.getFieldInstance(t); if (n) { var a = n.$el || n.elm, s = a.getBoundingClientRect().top; "hidden" !== a.type && (void 0 === o || o > s) && (o = s, i = a) } } })), i) { var l = c.container || cg(i); Xh(i, l, s()({ onlyScrollIfNeeded: !0 }, c.scroll)) } } "function" === typeof a && a(e, t) }; return this.validateFields(o, c, l) } } }; function ug(e) { return og(s()({}, e), [lg]) } var hg = ug, fg = n("2769"), dg = n.n(fg), pg = "data-__meta", vg = "data-__field"; function mg() { } function gg(e) { return e.reduce((function (e, t) { return [].concat(X()(e), [" ", t]) }), []).slice(1) } var yg = { id: p["a"].string, htmlFor: p["a"].string, prefixCls: p["a"].string, label: p["a"].any, labelCol: p["a"].shape(hm).loose, wrapperCol: p["a"].shape(hm).loose, help: p["a"].any, extra: p["a"].any, validateStatus: p["a"].oneOf(["", "success", "warning", "error", "validating"]), hasFeedback: p["a"].bool, required: p["a"].bool, colon: p["a"].bool, fieldDecoratorId: p["a"].string, fieldDecoratorOptions: p["a"].object, selfUpdate: p["a"].bool, labelAlign: p["a"].oneOf(["left", "right"]) }; function bg() { for (var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = arguments[1], n = !1, r = 0, i = e.length; r < i; r++) { var o = e[r]; if (!o || o !== t && o.$vnode !== t) { var a = o.componentOptions || o.$vnode && o.$vnode.componentOptions, s = a ? a.children : o.$children; n = bg(s, t) } else n = !0; if (n) break } return n } var xg = { name: "AFormItem", __ANT_FORM_ITEM: !0, mixins: [m["a"]], props: Object(v["t"])(yg, { hasFeedback: !1 }), provide: function () { return { isFormItemChildren: !0 } }, inject: { isFormItemChildren: { default: !1 }, FormContext: { default: function () { return {} } }, decoratorFormProps: { default: function () { return {} } }, collectFormItemContext: { default: function () { return mg } }, configProvider: { default: function () { return Vt } } }, data: function () { return { helpShow: !1 } }, computed: { itemSelfUpdate: function () { return !!(void 0 === this.selfUpdate ? this.FormContext.selfUpdate : this.selfUpdate) } }, created: function () { this.collectContext() }, beforeUpdate: function () { }, beforeDestroy: function () { this.collectFormItemContext(this.$vnode && this.$vnode.context, "delete") }, mounted: function () { var e = this.$props, t = e.help, n = e.validateStatus; fe(this.getControls(this.slotDefault, !0).length <= 1 || void 0 !== t || void 0 !== n, "Form.Item", "Cannot generate `validateStatus` and `help` automatically, while there are more than one `getFieldDecorator` in it."), fe(!this.fieldDecoratorId, "Form.Item", "`fieldDecoratorId` is deprecated. please use `v-decorator={id, options}` instead.") }, methods: { collectContext: function () { if (this.FormContext.form && this.FormContext.form.templateContext) { var e = this.FormContext.form.templateContext, t = Object.values(e.$slots || {}).reduce((function (e, t) { return [].concat(X()(e), X()(t)) }), []), n = bg(t, this.$vnode); fe(!n, "You can not set FormItem from slot, please use slot-scope instead slot"); var r = !1; n || this.$vnode.context === e || (r = bg(this.$vnode.context.$children, e.$vnode)), r || n || this.collectFormItemContext(this.$vnode.context) } }, getHelpMessage: function () { var e = Object(v["g"])(this, "help"), t = this.getOnlyControl(); if (void 0 === e && t) { var n = this.getField().errors; return n ? gg(n.map((function (e, t) { var n = null; return Object(v["v"])(e) ? n = e : Object(v["v"])(e.message) && (n = e.message), n ? Object(en["a"])(n, { key: t }) : e.message }))) : "" } return e }, getControls: function () { for (var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = arguments[1], n = [], r = 0; r < e.length; r++) { if (!t && n.length > 0) break; var i = e[r]; if ((i.tag || "" !== i.text.trim()) && !Object(v["o"])(i).__ANT_FORM_ITEM) { var o = Object(v["d"])(i), a = i.data && i.data.attrs || {}; pg in a ? n.push(i) : o && (n = n.concat(this.getControls(o, t))) } } return n }, getOnlyControl: function () { var e = this.getControls(this.slotDefault, !1)[0]; return void 0 !== e ? e : null }, getChildAttr: function (e) { var t = this.getOnlyControl(), n = {}; if (t) return t.data ? n = t.data : t.$vnode && t.$vnode.data && (n = t.$vnode.data), n[e] || n.attrs[e] }, getId: function () { return this.getChildAttr("id") }, getMeta: function () { return this.getChildAttr(pg) }, getField: function () { return this.getChildAttr(vg) }, getValidateStatus: function () { var e = this.getOnlyControl(); if (!e) return ""; var t = this.getField(); if (t.validating) return "validating"; if (t.errors) return "error"; var n = "value" in t ? t.value : this.getMeta().initialValue; return void 0 !== n && null !== n && "" !== n ? "success" : "" }, onLabelClick: function () { var e = this.id || this.getId(); if (e) { var t = this.$el, n = t.querySelector('[id="' + e + '"]'); n && n.focus && n.focus() } }, onHelpAnimEnd: function (e, t) { this.helpShow = t, t || this.$forceUpdate() }, isRequired: function () { var e = this.required; if (void 0 !== e) return e; if (this.getOnlyControl()) { var t = this.getMeta() || {}, n = t.validate || []; return n.filter((function (e) { return !!e.rules })).some((function (e) { return e.rules.some((function (e) { return e.required })) })) } return !1 }, renderHelp: function (e) { var t = this, n = this.$createElement, r = this.getHelpMessage(), i = r ? n("div", { class: e + "-explain", key: "help" }, [r]) : null; i && (this.helpShow = !!i); var o = Object(y["a"])("show-help", { afterEnter: function () { return t.onHelpAnimEnd("help", !0) }, afterLeave: function () { return t.onHelpAnimEnd("help", !1) } }); return n("transition", K()([o, { key: "help" }]), [i]) }, renderExtra: function (e) { var t = this.$createElement, n = Object(v["g"])(this, "extra"); return n ? t("div", { class: e + "-extra" }, [n]) : null }, renderValidateWrapper: function (e, t, n, r) { var i = this.$createElement, o = this.$props, a = this.getOnlyControl, s = void 0 === o.validateStatus && a ? this.getValidateStatus() : o.validateStatus, c = e + "-item-control"; s && (c = Q()(e + "-item-control", { "has-feedback": s && o.hasFeedback, "has-success": "success" === s, "has-warning": "warning" === s, "has-error": "error" === s, "is-validating": "validating" === s })); var l = ""; switch (s) { case "success": l = "check-circle"; break; case "warning": l = "exclamation-circle"; break; case "error": l = "close-circle"; break; case "validating": l = "loading"; break; default: l = ""; break }var u = o.hasFeedback && l ? i("span", { class: e + "-item-children-icon" }, [i(Ve, { attrs: { type: l, theme: "loading" === l ? "outlined" : "filled" } })]) : null; return i("div", { class: c }, [i("span", { class: e + "-item-children" }, [t, u]), n, r]) }, renderWrapper: function (e, t) { var n = this.$createElement, r = this.isFormItemChildren ? {} : this.FormContext, i = r.wrapperCol, o = this.wrapperCol, a = o || i || {}, s = a.style, c = a.id, u = a.on, h = l()(a, ["style", "id", "on"]), f = Q()(e + "-item-control-wrapper", a["class"]), d = { props: h, class: f, key: "wrapper", style: s, id: c, on: u }; return n(fm, d, [t]) }, renderLabel: function (e) { var t, n = this.$createElement, r = this.FormContext, i = r.vertical, o = r.labelAlign, a = r.labelCol, s = r.colon, c = this.labelAlign, u = this.labelCol, f = this.colon, d = this.id, p = this.htmlFor, m = Object(v["g"])(this, "label"), g = this.isRequired(), y = u || a || {}, b = c || o, x = e + "-item-label", w = Q()(x, "left" === b && x + "-left", y["class"]), _ = (y["class"], y.style), C = y.id, M = y.on, O = l()(y, ["class", "style", "id", "on"]), k = m, S = !0 === f || !1 !== s && !1 !== f, T = S && !i; T && "string" === typeof m && "" !== m.trim() && (k = m.replace(/[锛�:]\s*$/, "")); var A = Q()((t = {}, h()(t, e + "-item-required", g), h()(t, e + "-item-no-colon", !S), t)), L = { props: O, class: w, key: "label", style: _, id: C, on: M }; return m ? n(fm, L, [n("label", { attrs: { for: p || d || this.getId(), title: "string" === typeof m ? m : "" }, class: A, on: { click: this.onLabelClick } }, [k])]) : null }, renderChildren: function (e) { return [this.renderLabel(e), this.renderWrapper(e, this.renderValidateWrapper(e, this.slotDefault, this.renderHelp(e), this.renderExtra(e)))] }, renderFormItem: function () { var e, t = this.$createElement, n = this.$props.prefixCls, r = this.configProvider.getPrefixCls, i = r("form", n), o = this.renderChildren(i), a = (e = {}, h()(e, i + "-item", !0), h()(e, i + "-item-with-help", this.helpShow), e); return t(Mm, { class: Q()(a), key: "row" }, [o]) }, decoratorOption: function (e) { if (e.data && e.data.directives) { var t = dg()(e.data.directives, ["name", "decorator"]); return fe(!t || t && Array.isArray(t.value), "Form", 'Invalid directive: type check failed for directive "decorator". Expected Array, got ' + Tt()(t ? t.value : t) + ". At " + e.tag + "."), t ? t.value : null } return null }, decoratorChildren: function (e) { for (var t = this.FormContext, n = t.form.getFieldDecorator, r = 0, i = e.length; r < i; r++) { var o = e[r]; if (Object(v["o"])(o).__ANT_FORM_ITEM) break; o.children ? o.children = this.decoratorChildren(Object(en["b"])(o.children)) : o.componentOptions && o.componentOptions.children && (o.componentOptions.children = this.decoratorChildren(Object(en["b"])(o.componentOptions.children))); var a = this.decoratorOption(o); a && a[0] && (e[r] = n(a[0], a[1], this)(o)) } return e } }, render: function () { var e = this.$slots, t = this.decoratorFormProps, n = this.fieldDecoratorId, r = this.fieldDecoratorOptions, i = void 0 === r ? {} : r, o = this.FormContext, a = Object(v["c"])(e["default"] || []); if (t.form && n && a.length) { var s = t.form.getFieldDecorator; a[0] = s(n, i, this)(a[0]), fe(!(a.length > 1), "Form", "`autoFormCreate` just `decorator` then first children. but you can use JSX to support multiple children"), this.slotDefault = a } else o.form ? (a = Object(en["b"])(a), this.slotDefault = this.decoratorChildren(a)) : this.slotDefault = a; return this.renderFormItem() } }, wg = (p["a"].func, p["a"].func, p["a"].func, p["a"].any, p["a"].bool, p["a"].string, p["a"].func, p["a"].func, p["a"].func, p["a"].func, p["a"].func, p["a"].func, p["a"].func, p["a"].func, p["a"].func, p["a"].func, p["a"].func, p["a"].func, p["a"].func, { layout: p["a"].oneOf(["horizontal", "inline", "vertical"]), labelCol: p["a"].shape(hm).loose, wrapperCol: p["a"].shape(hm).loose, colon: p["a"].bool, labelAlign: p["a"].oneOf(["left", "right"]), form: p["a"].object, prefixCls: p["a"].string, hideRequiredMark: p["a"].bool, autoFormCreate: p["a"].func, options: p["a"].object, selfUpdate: p["a"].bool }), _g = (p["a"].oneOfType([p["a"].string, p["a"].func]), p["a"].string, p["a"].boolean, p["a"].boolean, p["a"].number, p["a"].number, p["a"].number, p["a"].oneOfType([String, p["a"].arrayOf(String)]), p["a"].custom(Sm.a), p["a"].func, p["a"].func, { name: "AForm", props: Object(v["t"])(wg, { layout: "horizontal", hideRequiredMark: !1, colon: !0 }), Item: xg, createFormField: Vm, create: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return hg(s()({ fieldNameProp: "id" }, e, { fieldMetaProp: pg, fieldDataProp: vg })) }, createForm: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = N.Vue || d.a; return new n(_g.create(s()({}, t, { templateContext: e }))()) }, created: function () { this.formItemContexts = new Map }, provide: function () { var e = this; return { FormContext: this, collectFormItemContext: this.form && this.form.templateContext ? function (t) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "add", r = e.formItemContexts, i = r.get(t) || 0; "delete" === n ? i <= 1 ? r["delete"](t) : r.set(t, i - 1) : t !== e.form.templateContext && r.set(t, i + 1) } : function () { } } }, inject: { configProvider: { default: function () { return Vt } } }, watch: { form: function () { this.$forceUpdate() } }, computed: { vertical: function () { return "vertical" === this.layout } }, beforeUpdate: function () { this.formItemContexts.forEach((function (e, t) { t.$forceUpdate && t.$forceUpdate() })) }, updated: function () { this.form && this.form.cleanUpUselessFields && this.form.cleanUpUselessFields() }, methods: { onSubmit: function (e) { Object(v["k"])(this).submit ? this.$emit("submit", e) : e.preventDefault() } }, render: function () { var e, t = this, n = arguments[0], r = this.prefixCls, i = this.hideRequiredMark, o = this.layout, a = this.onSubmit, c = this.$slots, l = this.autoFormCreate, u = this.options, f = void 0 === u ? {} : u, d = this.configProvider.getPrefixCls, p = d("form", r), v = Q()(p, (e = {}, h()(e, p + "-horizontal", "horizontal" === o), h()(e, p + "-vertical", "vertical" === o), h()(e, p + "-inline", "inline" === o), h()(e, p + "-hide-required-mark", i), e)); if (l) { fe(!1, "Form", "`autoFormCreate` is deprecated. please use `form` instead."); var m = this.DomForm || hg(s()({ fieldNameProp: "id" }, f, { fieldMetaProp: pg, fieldDataProp: vg, templateContext: this.$vnode.context }))({ provide: function () { return { decoratorFormProps: this.$props } }, data: function () { return { children: c["default"], formClassName: v, submit: a } }, created: function () { l(this.form) }, render: function () { var e = arguments[0], t = this.children, n = this.formClassName, r = this.submit; return e("form", { on: { submit: r }, class: n }, [t]) } }); return this.domForm && (this.domForm.children = c["default"], this.domForm.submit = a, this.domForm.formClassName = v), this.DomForm = m, n(m, { attrs: { wrappedComponentRef: function (e) { t.domForm = e } } }) } return n("form", { on: { submit: a }, class: v }, [c["default"]]) } }), Cg = _g; d.a.use(_.a, { name: "ant-ref" }), d.a.use(P), d.a.prototype.$form = Cg, Cg.install = function (e) { e.use(N), e.component(Cg.name, Cg), e.component(Cg.Item.name, Cg.Item), e.prototype.$form = Cg }; var Mg = Cg, Og = (n("2c6a"), Cl.TabPane), kg = { name: "ACard", mixins: [m["a"]], props: { prefixCls: p["a"].string, title: p["a"].any, extra: p["a"].any, bordered: p["a"].bool.def(!0), bodyStyle: p["a"].object, headStyle: p["a"].object, loading: p["a"].bool.def(!1), hoverable: p["a"].bool.def(!1), type: p["a"].string, size: p["a"].oneOf(["default", "small"]), actions: p["a"].any, tabList: p["a"].array, tabBarExtraContent: p["a"].any, activeTabKey: p["a"].string, defaultActiveTabKey: p["a"].string }, inject: { configProvider: { default: function () { return Vt } } }, data: function () { return { widerPadding: !1 } }, methods: { getAction: function (e) { var t = this.$createElement, n = e.map((function (n, r) { return t("li", { style: { width: 100 / e.length + "%" }, key: "action-" + r }, [t("span", [n])]) })); return n }, onTabChange: function (e) { this.$emit("tabChange", e) }, isContainGrid: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = void 0; return e.forEach((function (e) { e && Object(v["o"])(e).__ANT_CARD_GRID && (t = !0) })), t } }, render: function () { var e, t, n = arguments[0], r = this.$props, i = r.prefixCls, o = r.headStyle, a = void 0 === o ? {} : o, s = r.bodyStyle, c = void 0 === s ? {} : s, l = r.loading, u = r.bordered, f = void 0 === u || u, d = r.size, p = void 0 === d ? "default" : d, m = r.type, g = r.tabList, y = r.hoverable, b = r.activeTabKey, x = r.defaultActiveTabKey, w = this.configProvider.getPrefixCls, _ = w("card", i), C = this.$slots, M = this.$scopedSlots, O = Object(v["g"])(this, "tabBarExtraContent"), k = (e = {}, h()(e, "" + _, !0), h()(e, _ + "-loading", l), h()(e, _ + "-bordered", f), h()(e, _ + "-hoverable", !!y), h()(e, _ + "-contain-grid", this.isContainGrid(C["default"])), h()(e, _ + "-contain-tabs", g && g.length), h()(e, _ + "-" + p, "default" !== p), h()(e, _ + "-type-" + m, !!m), e), S = 0 === c.padding || "0px" === c.padding ? { padding: 24 } : void 0, T = n("div", { class: _ + "-loading-content", style: S }, [n(Om, { attrs: { gutter: 8 } }, [n(dm, { attrs: { span: 22 } }, [n("div", { class: _ + "-loading-block" })])]), n(Om, { attrs: { gutter: 8 } }, [n(dm, { attrs: { span: 8 } }, [n("div", { class: _ + "-loading-block" })]), n(dm, { attrs: { span: 15 } }, [n("div", { class: _ + "-loading-block" })])]), n(Om, { attrs: { gutter: 8 } }, [n(dm, { attrs: { span: 6 } }, [n("div", { class: _ + "-loading-block" })]), n(dm, { attrs: { span: 18 } }, [n("div", { class: _ + "-loading-block" })])]), n(Om, { attrs: { gutter: 8 } }, [n(dm, { attrs: { span: 13 } }, [n("div", { class: _ + "-loading-block" })]), n(dm, { attrs: { span: 9 } }, [n("div", { class: _ + "-loading-block" })])]), n(Om, { attrs: { gutter: 8 } }, [n(dm, { attrs: { span: 4 } }, [n("div", { class: _ + "-loading-block" })]), n(dm, { attrs: { span: 3 } }, [n("div", { class: _ + "-loading-block" })]), n(dm, { attrs: { span: 16 } }, [n("div", { class: _ + "-loading-block" })])])]), A = void 0 !== b, L = { props: (t = { size: "large" }, h()(t, A ? "activeKey" : "defaultActiveKey", A ? b : x), h()(t, "tabBarExtraContent", O), t), on: { change: this.onTabChange }, class: _ + "-head-tabs" }, j = void 0, z = g && g.length ? n(Cl, L, [g.map((function (e) { var t = e.tab, r = e.scopedSlots, i = void 0 === r ? {} : r, o = i.tab, a = void 0 !== t ? t : M[o] ? M[o](e) : null; return n(Og, { attrs: { tab: a, disabled: e.disabled }, key: e.key }) }))]) : null, E = Object(v["g"])(this, "title"), P = Object(v["g"])(this, "extra"); (E || P || z) && (j = n("div", { class: _ + "-head", style: a }, [n("div", { class: _ + "-head-wrapper" }, [E && n("div", { class: _ + "-head-title" }, [E]), P && n("div", { class: _ + "-extra" }, [P])]), z])); var D = C["default"], H = Object(v["g"])(this, "cover"), V = H ? n("div", { class: _ + "-cover" }, [H]) : null, I = n("div", { class: _ + "-body", style: c }, [l ? T : D]), N = Object(v["c"])(this.$slots.actions), R = N && N.length ? n("ul", { class: _ + "-actions" }, [this.getAction(N)]) : null; return n("div", K()([{ class: k, ref: "cardContainerRef" }, { on: Object(Qi["a"])(Object(v["k"])(this), ["tabChange", "tab-change"]) }]), [j, V, D ? I : null, R]) } }, Sg = { name: "ACardMeta", props: { prefixCls: p["a"].string, title: p["a"].any, description: p["a"].any }, inject: { configProvider: { default: function () { return Vt } } }, render: function () { var e = arguments[0], t = this.$props.prefixCls, n = this.configProvider.getPrefixCls, r = n("card", t), i = h()({}, r + "-meta", !0), o = Object(v["g"])(this, "avatar"), a = Object(v["g"])(this, "title"), s = Object(v["g"])(this, "description"), c = o ? e("div", { class: r + "-meta-avatar" }, [o]) : null, l = a ? e("div", { class: r + "-meta-title" }, [a]) : null, u = s ? e("div", { class: r + "-meta-description" }, [s]) : null, f = l || u ? e("div", { class: r + "-meta-detail" }, [l, u]) : null; return e("div", K()([{ on: Object(v["k"])(this) }, { class: i }]), [c, f]) } }, Tg = { name: "ACardGrid", __ANT_CARD_GRID: !0, props: { prefixCls: p["a"].string, hoverable: p["a"].bool }, inject: { configProvider: { default: function () { return Vt } } }, render: function () { var e, t = arguments[0], n = this.$props, r = n.prefixCls, i = n.hoverable, o = void 0 === i || i, a = this.configProvider.getPrefixCls, s = a("card", r), c = (e = {}, h()(e, s + "-grid", !0), h()(e, s + "-grid-hoverable", o), e); return t("div", K()([{ on: Object(v["k"])(this) }, { class: c }]), [this.$slots["default"]]) } }; kg.Meta = Sg, kg.Grid = Tg, kg.install = function (e) { e.use(N), e.component(kg.name, kg), e.component(Sg.name, Sg), e.component(Tg.name, Tg) }; var Ag = kg, Lg = (n("0242"), { prefixCls: p["a"].string, hasSider: p["a"].boolean, tagName: p["a"].string }); function jg(e) { var t = e.suffixCls, n = e.tagName, r = e.name; return function (e) { return { name: r, props: e.props, inject: { configProvider: { default: function () { return Vt } } }, render: function () { var r = arguments[0], i = this.$props.prefixCls, o = this.configProvider.getPrefixCls, a = o(t, i), c = { props: s()({ prefixCls: a }, Object(v["l"])(this), { tagName: n }), on: Object(v["k"])(this) }; return r(e, c, [this.$slots["default"]]) } } } } var zg = { props: Lg, render: function () { var e = arguments[0], t = this.prefixCls, n = this.tagName, r = this.$slots, i = { class: t, on: Object(v["k"])(this) }; return e(n, i, [r["default"]]) } }, Eg = { props: Lg, data: function () { return { siders: [] } }, provide: function () { var e = this; return { siderHook: { addSider: function (t) { e.siders = [].concat(X()(e.siders), [t]) }, removeSider: function (t) { e.siders = e.siders.filter((function (e) { return e !== t })) } } } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.$slots, r = this.hasSider, i = this.tagName, o = Q()(t, h()({}, t + "-has-sider", "boolean" === typeof r ? r : this.siders.length > 0)), a = { class: o, on: v["k"] }; return e(i, a, [n["default"]]) } }, Pg = jg({ suffixCls: "layout", tagName: "section", name: "ALayout" })(Eg), Dg = jg({ suffixCls: "layout-header", tagName: "header", name: "ALayoutHeader" })(zg), Hg = jg({ suffixCls: "layout-footer", tagName: "footer", name: "ALayoutFooter" })(zg), Vg = jg({ suffixCls: "layout-content", tagName: "main", name: "ALayoutContent" })(zg); Pg.Header = Dg, Pg.Footer = Hg, Pg.Content = Vg; var Ig = Pg, Ng = function (e) { return !isNaN(parseFloat(e)) && isFinite(e) }, Rg = Ng; if ("undefined" !== typeof window) { var Fg = function (e) { return { media: e, matches: !1, addListener: function () { }, removeListener: function () { } } }; window.matchMedia = window.matchMedia || Fg } var Yg = { xs: "479.98px", sm: "575.98px", md: "767.98px", lg: "991.98px", xl: "1199.98px", xxl: "1599.98px" }, $g = { prefixCls: p["a"].string, collapsible: p["a"].bool, collapsed: p["a"].bool, defaultCollapsed: p["a"].bool, reverseArrow: p["a"].bool, zeroWidthTriggerStyle: p["a"].object, trigger: p["a"].any, width: p["a"].oneOfType([p["a"].number, p["a"].string]), collapsedWidth: p["a"].oneOfType([p["a"].number, p["a"].string]), breakpoint: p["a"].oneOf(["xs", "sm", "md", "lg", "xl", "xxl"]), theme: p["a"].oneOf(["light", "dark"]).def("dark") }, Bg = function () { var e = 0; return function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ""; return e += 1, "" + t + e } }(), Wg = { name: "ALayoutSider", __ANT_LAYOUT_SIDER: !0, mixins: [m["a"]], model: { prop: "collapsed", event: "collapse" }, props: Object(v["t"])($g, { collapsible: !1, defaultCollapsed: !1, reverseArrow: !1, width: 200, collapsedWidth: 80 }), data: function () { this.uniqueId = Bg("ant-sider-"); var e = void 0; "undefined" !== typeof window && (e = window.matchMedia); var t = Object(v["l"])(this); e && t.breakpoint && t.breakpoint in Yg && (this.mql = e("(max-width: " + Yg[t.breakpoint] + ")")); var n = void 0; return n = "collapsed" in t ? t.collapsed : t.defaultCollapsed, { sCollapsed: n, below: !1, belowShow: !1 } }, provide: function () { return { layoutSiderContext: this } }, inject: { siderHook: { default: function () { return {} } }, configProvider: { default: function () { return Vt } } }, watch: { collapsed: function (e) { this.setState({ sCollapsed: e }) } }, mounted: function () { var e = this; this.$nextTick((function () { e.mql && (e.mql.addListener(e.responsiveHandler), e.responsiveHandler(e.mql)), e.siderHook.addSider && e.siderHook.addSider(e.uniqueId) })) }, beforeDestroy: function () { this.mql && this.mql.removeListener(this.responsiveHandler), this.siderHook.removeSider && this.siderHook.removeSider(this.uniqueId) }, methods: { responsiveHandler: function (e) { this.setState({ below: e.matches }), this.$emit("breakpoint", e.matches), this.sCollapsed !== e.matches && this.setCollapsed(e.matches, "responsive") }, setCollapsed: function (e, t) { Object(v["s"])(this, "collapsed") || this.setState({ sCollapsed: e }), this.$emit("collapse", e, t) }, toggle: function () { var e = !this.sCollapsed; this.setCollapsed(e, "clickTrigger") }, belowShowChange: function () { this.setState({ belowShow: !this.belowShow }) } }, render: function () { var e, t = arguments[0], n = Object(v["l"])(this), r = n.prefixCls, i = n.theme, o = n.collapsible, a = n.reverseArrow, s = n.width, c = n.collapsedWidth, l = n.zeroWidthTriggerStyle, u = this.configProvider.getPrefixCls, f = u("layout-sider", r), d = Object(v["g"])(this, "trigger"), p = this.sCollapsed ? c : s, m = Rg(p) ? p + "px" : String(p), g = 0 === parseFloat(String(c || 0)) ? t("span", { on: { click: this.toggle }, class: f + "-zero-width-trigger " + f + "-zero-width-trigger-" + (a ? "right" : "left"), style: l }, [t(Ve, { attrs: { type: "bars" } })]) : null, y = { expanded: t(Ve, a ? { attrs: { type: "right" } } : { attrs: { type: "left" } }), collapsed: t(Ve, a ? { attrs: { type: "left" } } : { attrs: { type: "right" } }) }, b = this.sCollapsed ? "collapsed" : "expanded", x = y[b], w = null !== d ? g || t("div", { class: f + "-trigger", on: { click: this.toggle }, style: { width: m } }, [d || x]) : null, _ = { flex: "0 0 " + m, maxWidth: m, minWidth: m, width: m }, C = Q()(f, f + "-" + i, (e = {}, h()(e, f + "-collapsed", !!this.sCollapsed), h()(e, f + "-has-trigger", o && null !== d && !g), h()(e, f + "-below", !!this.below), h()(e, f + "-zero-width", 0 === parseFloat(m)), e)), M = { on: Object(v["k"])(this), class: C, style: _ }; return t("aside", M, [t("div", { class: f + "-children" }, [this.$slots["default"]]), o || this.below && g ? w : null]) } }; Ig.Sider = Wg, Ig.install = function (e) { e.use(N), e.component(Ig.name, Ig), e.component(Ig.Header.name, Ig.Header), e.component(Ig.Footer.name, Ig.Footer), e.component(Ig.Sider.name, Ig.Sider), e.component(Ig.Content.name, Ig.Content) }; var qg = Ig, Ug = (n("3de7"), function () { return { prefixCls: p["a"].string, activeKey: p["a"].oneOfType([p["a"].string, p["a"].number, p["a"].arrayOf(p["a"].oneOfType([p["a"].string, p["a"].number]))]), defaultActiveKey: p["a"].oneOfType([p["a"].string, p["a"].number, p["a"].arrayOf(p["a"].oneOfType([p["a"].string, p["a"].number]))]), accordion: p["a"].bool, destroyInactivePanel: p["a"].bool, bordered: p["a"].bool, expandIcon: p["a"].func, openAnimation: p["a"].object, expandIconPosition: p["a"].oneOf(["left", "right"]) } }), Kg = function () { return { openAnimation: p["a"].object, prefixCls: p["a"].string, header: p["a"].oneOfType([p["a"].string, p["a"].number, p["a"].node]), headerClass: p["a"].string, showArrow: p["a"].bool, isActive: p["a"].bool, destroyInactivePanel: p["a"].bool, disabled: p["a"].bool, accordion: p["a"].bool, forceRender: p["a"].bool, expandIcon: p["a"].func, extra: p["a"].any, panelKey: p["a"].any } }, Gg = { name: "PanelContent", props: { prefixCls: p["a"].string, isActive: p["a"].bool, destroyInactivePanel: p["a"].bool, forceRender: p["a"].bool, role: p["a"].any }, data: function () { return { _isActive: void 0 } }, render: function () { var e, t = arguments[0]; if (this._isActive = this.forceRender || this._isActive || this.isActive, !this._isActive) return null; var n = this.$props, r = n.prefixCls, i = n.isActive, o = n.destroyInactivePanel, a = n.forceRender, s = n.role, c = this.$slots, l = (e = {}, h()(e, r + "-content", !0), h()(e, r + "-content-active", i), e), u = a || i || !o ? t("div", { class: r + "-content-box" }, [c["default"]]) : null; return t("div", { class: l, attrs: { role: s } }, [u]) } }, Xg = { name: "Panel", props: Object(v["t"])(Kg(), { showArrow: !0, isActive: !1, destroyInactivePanel: !1, headerClass: "", forceRender: !1 }), methods: { handleItemClick: function () { this.$emit("itemClick", this.panelKey) }, handleKeyPress: function (e) { "Enter" !== e.key && 13 !== e.keyCode && 13 !== e.which || this.handleItemClick() } }, render: function () { var e, t, n = arguments[0], r = this.$props, i = r.prefixCls, o = r.headerClass, a = r.isActive, c = r.showArrow, l = r.destroyInactivePanel, u = r.disabled, f = r.openAnimation, d = r.accordion, p = r.forceRender, m = r.expandIcon, g = r.extra, y = this.$slots, b = { props: s()({ appear: !0, css: !1 }), on: s()({}, f) }, x = (e = {}, h()(e, i + "-header", !0), h()(e, o, o), e), w = Object(v["g"])(this, "header"), _ = (t = {}, h()(t, i + "-item", !0), h()(t, i + "-item-active", a), h()(t, i + "-item-disabled", u), t), C = n("i", { class: "arrow" }); return c && "function" === typeof m && (C = m(this.$props)), n("div", { class: _, attrs: { role: "tablist" } }, [n("div", { class: x, on: { click: this.handleItemClick.bind(this), keypress: this.handleKeyPress }, attrs: { role: d ? "tab" : "button", tabIndex: u ? -1 : 0, "aria-expanded": a } }, [c && C, w, g && n("div", { class: i + "-extra" }, [g])]), n("transition", b, [n(Gg, { directives: [{ name: "show", value: a }], attrs: { prefixCls: i, isActive: a, destroyInactivePanel: l, forceRender: p, role: d ? "tabpanel" : null } }, [y["default"]])])]) } }; function Jg(e, t, n, r) { var i = void 0; return Object(Yr["a"])(e, n, { start: function () { t ? (i = e.offsetHeight, e.style.height = 0) : e.style.height = e.offsetHeight + "px" }, active: function () { e.style.height = (t ? i : 0) + "px" }, end: function () { e.style.height = "", r() } }) } function Qg(e) { return { enter: function (t, n) { return Jg(t, !0, e + "-anim", n) }, leave: function (t, n) { return Jg(t, !1, e + "-anim", n) } } } var Zg = Qg; function ey(e) { var t = e; return Array.isArray(t) || (t = t ? [t] : []), t.map((function (e) { return String(e) })) } var ty = { name: "Collapse", mixins: [m["a"]], model: { prop: "activeKey", event: "change" }, props: Object(v["t"])(Ug(), { prefixCls: "rc-collapse", accordion: !1, destroyInactivePanel: !1 }), data: function () { var e = this.$props, t = e.activeKey, n = e.defaultActiveKey, r = e.openAnimation, i = e.prefixCls, o = n; Object(v["s"])(this, "activeKey") && (o = t); var a = r || Zg(i); return { currentOpenAnimations: a, stateActiveKey: ey(o) } }, watch: { activeKey: function (e) { this.setState({ stateActiveKey: ey(e) }) }, openAnimation: function (e) { this.setState({ currentOpenAnimations: e }) } }, methods: { onClickItem: function (e) { var t = this.stateActiveKey; if (this.accordion) t = t[0] === e ? [] : [e]; else { t = [].concat(X()(t)); var n = t.indexOf(e), r = n > -1; r ? t.splice(n, 1) : t.push(e) } this.setActiveKey(t) }, getNewChild: function (e, t) { if (!Object(v["u"])(e)) { var n = this.stateActiveKey, r = this.$props, i = r.prefixCls, o = r.accordion, a = r.destroyInactivePanel, s = r.expandIcon, c = e.key || String(t), l = Object(v["m"])(e), u = l.header, h = l.headerClass, f = l.disabled, d = !1; d = o ? n[0] === c : n.indexOf(c) > -1; var p = {}; f || "" === f || (p = { itemClick: this.onClickItem }); var m = { key: c, props: { panelKey: c, header: u, headerClass: h, isActive: d, prefixCls: i, destroyInactivePanel: a, openAnimation: this.currentOpenAnimations, accordion: o, expandIcon: s }, on: p }; return Object(en["a"])(e, m) } }, getItems: function () { var e = this, t = []; return this.$slots["default"] && this.$slots["default"].forEach((function (n, r) { t.push(e.getNewChild(n, r)) })), t }, setActiveKey: function (e) { this.setState({ stateActiveKey: e }), this.$emit("change", this.accordion ? e[0] : e) } }, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.accordion, i = h()({}, n, !0); return e("div", { class: i, attrs: { role: r ? "tablist" : null } }, [this.getItems()]) } }; ty.Panel = Xg; var ny = ty, ry = { name: "ACollapse", model: { prop: "activeKey", event: "change" }, props: Object(v["t"])(Ug(), { bordered: !0, openAnimation: Lp, expandIconPosition: "left" }), inject: { configProvider: { default: function () { return Vt } } }, methods: { renderExpandIcon: function (e, t) { var n = this.$createElement, r = Object(v["g"])(this, "expandIcon", e), i = r || n(Ve, { attrs: { type: "right", rotate: e.isActive ? 90 : void 0 } }); return Object(v["v"])(Array.isArray(r) ? i[0] : i) ? Object(en["a"])(i, { class: t + "-arrow" }) : i } }, render: function () { var e, t = this, n = arguments[0], r = this.prefixCls, i = this.bordered, o = this.expandIconPosition, a = this.configProvider.getPrefixCls, c = a("collapse", r), l = (e = {}, h()(e, c + "-borderless", !i), h()(e, c + "-icon-position-" + o, !0), e), u = { props: s()({}, Object(v["l"])(this), { prefixCls: c, expandIcon: function (e) { return t.renderExpandIcon(e, c) } }), class: l, on: Object(v["k"])(this) }; return n(ny, u, [this.$slots["default"]]) } }, iy = { name: "ACollapsePanel", props: s()({}, Kg()), inject: { configProvider: { default: function () { return Vt } } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.showArrow, r = void 0 === n || n, i = this.configProvider.getPrefixCls, o = i("collapse", t), a = h()({}, o + "-no-arrow", !r), c = { props: s()({}, Object(v["l"])(this), { prefixCls: o, extra: Object(v["g"])(this, "extra") }), class: a, on: Object(v["k"])(this) }, l = Object(v["g"])(this, "header"); return e(ny.Panel, c, [this.$slots["default"], l ? e("template", { slot: "header" }, [l]) : null]) } }; ry.Panel = iy, ry.install = function (e) { e.use(N), e.component(ry.name, ry), e.component(iy.name, iy) }; var oy = ry; function ay() { } function sy(e, t, n) { var r = e; t = t.replace(/\[(\w+)\]/g, ".$1"), t = t.replace(/^\./, ""); for (var i = t.split("."), o = 0, a = i.length; o < a - 1; ++o) { if (!r && !n) break; var s = i[o]; if (!(s in r)) { if (n) throw new Error("please transfer a valid prop path to form item!"); break } r = r[s] } return { o: r, k: i[o], v: r ? r[i[o]] : null } } n("02f8"); var cy = { id: p["a"].string, htmlFor: p["a"].string, prefixCls: p["a"].string, label: p["a"].any, help: p["a"].any, extra: p["a"].any, labelCol: p["a"].shape(hm).loose, wrapperCol: p["a"].shape(hm).loose, hasFeedback: p["a"].bool, colon: p["a"].bool, labelAlign: p["a"].oneOf(["left", "right"]), prop: p["a"].string, rules: p["a"].oneOfType([Array, Object]), autoLink: p["a"].bool, required: p["a"].bool, validateStatus: p["a"].oneOf(["", "success", "warning", "error", "validating"]) }, ly = { name: "AFormModelItem", __ANT_NEW_FORM_ITEM: !0, mixins: [m["a"]], props: Object(v["t"])(cy, { hasFeedback: !1, autoLink: !0 }), inject: { configProvider: { default: function () { return Vt } }, FormContext: { default: function () { return {} } } }, data: function () { return { validateState: this.validateStatus, validateMessage: "", validateDisabled: !1, validator: {} } }, computed: { fieldValue: function () { var e = this.FormContext.model; if (e && this.prop) { var t = this.prop; return -1 !== t.indexOf(":") && (t = t.replace(/:/g, ".")), sy(e, t, !0).v } }, isRequired: function () { var e = this.getRules(), t = !1; return e && e.length && e.every((function (e) { return !e.required || (t = !0, !1) })), t } }, watch: { validateStatus: function (e) { this.validateState = e } }, mounted: function () { if (this.prop) { var e = this.FormContext.addField; e && e(this), this.initialValue = Dr()(this.fieldValue) } }, beforeDestroy: function () { var e = this.FormContext.removeField; e && e(this) }, methods: { validate: function (e) { var t = this, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ay; this.validateDisabled = !1; var r = this.getFilteredRule(e); if (!r || 0 === r.length) return n(), !0; this.validateState = "validating"; var i = {}; r && r.length > 0 && r.forEach((function (e) { delete e.trigger })), i[this.prop] = r; var o = new Lm["a"](i); this.FormContext && this.FormContext.validateMessages && o.messages(this.FormContext.validateMessages); var a = {}; a[this.prop] = this.fieldValue, o.validate(a, { firstFields: !0 }, (function (e, r) { t.validateState = e ? "error" : "success", t.validateMessage = e ? e[0].message : "", n(t.validateMessage, r), t.FormContext && t.FormContext.$emit && t.FormContext.$emit("validate", t.prop, !e, t.validateMessage || null) })) }, getRules: function () { var e = this.FormContext.rules, t = this.rules, n = void 0 !== this.required ? { required: !!this.required, trigger: "change" } : [], r = sy(e, this.prop || ""); return e = e ? r.o[this.prop || ""] || r.v : [], [].concat(t || e || []).concat(n) }, getFilteredRule: function (e) { var t = this.getRules(); return t.filter((function (t) { return !t.trigger || "" === e || (Array.isArray(t.trigger) ? t.trigger.indexOf(e) > -1 : t.trigger === e) })).map((function (e) { return s()({}, e) })) }, onFieldBlur: function () { this.validate("blur") }, onFieldChange: function () { this.validateDisabled ? this.validateDisabled = !1 : this.validate("change") }, clearValidate: function () { this.validateState = "", this.validateMessage = "", this.validateDisabled = !1 }, resetField: function () { var e = this; this.validateState = "", this.validateMessage = ""; var t = this.FormContext.model || {}, n = this.fieldValue, r = this.prop; -1 !== r.indexOf(":") && (r = r.replace(/:/, ".")); var i = sy(t, r, !0); this.validateDisabled = !0, Array.isArray(n) ? i.o[i.k] = [].concat(this.initialValue) : i.o[i.k] = this.initialValue, this.$nextTick((function () { e.validateDisabled = !1 })) } }, render: function () { var e = this, t = arguments[0], n = this.$slots, r = this.$scopedSlots, i = Object(v["l"])(this), o = Object(v["g"])(this, "label"), a = Object(v["g"])(this, "extra"), c = Object(v["g"])(this, "help"), l = { props: s()({}, i, { label: o, extra: a, validateStatus: this.validateState, help: this.validateMessage || c, required: this.isRequired || i.required }) }, u = Object(v["c"])(r["default"] ? r["default"]() : n["default"]), h = u[0]; if (this.prop && this.autoLink && Object(v["v"])(h)) { var f = Object(v["i"])(h), d = f.blur, p = f.change; h = Object(en["a"])(h, { on: { blur: function () { d && d.apply(void 0, arguments), e.onFieldBlur() }, change: function () { if (Array.isArray(p)) for (var t = 0, n = p.length; t < n; t++)p[t].apply(p, arguments); else p && p.apply(void 0, arguments); e.onFieldChange() } } }) } return t(xg, l, [h, u.slice(1)]) } }, uy = { layout: p["a"].oneOf(["horizontal", "inline", "vertical"]), labelCol: p["a"].shape(hm).loose, wrapperCol: p["a"].shape(hm).loose, colon: p["a"].bool, labelAlign: p["a"].oneOf(["left", "right"]), prefixCls: p["a"].string, hideRequiredMark: p["a"].bool, model: p["a"].object, rules: p["a"].object, validateMessages: p["a"].any, validateOnRuleChange: p["a"].bool }, hy = (p["a"].oneOfType([p["a"].string, p["a"].func]), p["a"].string, p["a"].boolean, p["a"].boolean, p["a"].number, p["a"].number, p["a"].number, p["a"].oneOfType([String, p["a"].arrayOf(String)]), p["a"].custom(Sm.a), p["a"].func, p["a"].func, { name: "AFormModel", props: Object(v["t"])(uy, { layout: "horizontal", hideRequiredMark: !1, colon: !0 }), Item: ly, created: function () { this.fields = [] }, provide: function () { return { FormContext: this } }, inject: { configProvider: { default: function () { return Vt } } }, watch: { rules: function () { this.validateOnRuleChange && this.validate((function () { })) } }, computed: { vertical: function () { return "vertical" === this.layout } }, methods: { addField: function (e) { e && this.fields.push(e) }, removeField: function (e) { e.prop && this.fields.splice(this.fields.indexOf(e), 1) }, onSubmit: function (e) { Object(v["k"])(this).submit ? this.$emit("submit", e) : e.preventDefault() }, resetFields: function () { this.model ? this.fields.forEach((function (e) { e.resetField() })) : fe(!1, "FormModel", "model is required for resetFields to work.") }, clearValidate: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = e.length ? "string" === typeof e ? this.fields.filter((function (t) { return e === t.prop })) : this.fields.filter((function (t) { return e.indexOf(t.prop) > -1 })) : this.fields; t.forEach((function (e) { e.clearValidate() })) }, validate: function (e) { var t = this; if (this.model) { var n = void 0; "function" !== typeof e && window.Promise && (n = new window.Promise((function (t, n) { e = function (e) { e ? t(e) : n(e) } }))); var r = !0, i = 0; 0 === this.fields.length && e && e(!0); var o = {}; return this.fields.forEach((function (n) { n.validate("", (function (n, a) { n && (r = !1), o = s()({}, o, a), "function" === typeof e && ++i === t.fields.length && e(r, o) })) })), n || void 0 } fe(!1, "FormModel", "model is required for resetFields to work.") }, validateField: function (e, t) { e = [].concat(e); var n = this.fields.filter((function (t) { return -1 !== e.indexOf(t.prop) })); n.length ? n.forEach((function (e) { e.validate("", t) })) : fe(!1, "FormModel", "please pass correct props!") } }, render: function () { var e, t = arguments[0], n = this.prefixCls, r = this.hideRequiredMark, i = this.layout, o = this.onSubmit, a = this.$slots, s = this.configProvider.getPrefixCls, c = s("form", n), l = Q()(c, (e = {}, h()(e, c + "-horizontal", "horizontal" === i), h()(e, c + "-vertical", "vertical" === i), h()(e, c + "-inline", "inline" === i), h()(e, c + "-hide-required-mark", r), e)); return t("form", { on: { submit: o }, class: l }, [a["default"]]) } }), fy = hy; d.a.use(_.a, { name: "ant-ref" }), d.a.use(P), fy.install = function (e) { e.use(N), e.component(fy.name, fy), e.component(fy.Item.name, fy.Item) }; var dy = fy, py = (n("8b79"), "internalMark"); function vy(e) { e && e.locale ? Mo(Zi).locale(e.locale) : Mo(Zi).locale("en") } var my = { name: "ALocaleProvider", props: { locale: p["a"].object.def((function () { return {} })), _ANT_MARK__: p["a"].string }, data: function () { return fe(this._ANT_MARK__ === py, "LocaleProvider", "`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead"), { antLocale: s()({}, this.locale, { exist: !0 }) } }, provide: function () { return { localeData: this.$data } }, watch: { locale: function (e) { this.antLocale = s()({}, this.locale, { exist: !0 }), vy(e), Fv(e && e.Modal) } }, created: function () { var e = this.locale; vy(e), Fv(e && e.Modal) }, beforeDestroy: function () { Fv() }, render: function () { return this.$slots["default"] ? this.$slots["default"][0] : null }, install: function (e) { e.use(N), e.component(my.name, my) } }, gy = my; function yy() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = {}; return e.forEach((function (e) { t[e] = function (t) { this._proxyVm._data[e] = t } })), t } var by = { name: "AConfigProvider", props: { getPopupContainer: p["a"].func, prefixCls: p["a"].string, renderEmpty: p["a"].func, csp: p["a"].object, autoInsertSpaceInButton: p["a"].bool, locale: p["a"].object, pageHeader: p["a"].object, transformCellText: p["a"].func }, provide: function () { var e = this; return this._proxyVm = new d.a({ data: function () { return s()({}, e.$props, { getPrefixCls: e.getPrefixCls, renderEmpty: e.renderEmptyComponent }) } }), { configProvider: this._proxyVm._data } }, watch: s()({}, yy(["prefixCls", "csp", "autoInsertSpaceInButton", "locale", "pageHeader", "transformCellText"])), methods: { renderEmptyComponent: function (e, t) { var n = Object(v["g"])(this, "renderEmpty", {}, !1) || Ht; return n(e, t) }, getPrefixCls: function (e, t) { var n = this.$props.prefixCls, r = void 0 === n ? "ant" : n; return t || (e ? r + "-" + e : r) }, renderProvider: function (e) { var t = this.$createElement; return t(gy, { attrs: { locale: this.locale || e, _ANT_MARK__: py } }, [this.$slots["default"] ? Object(v["c"])(this.$slots["default"])[0] : null]) } }, render: function () { var e = this, t = arguments[0]; return t(Le, { scopedSlots: { default: function (t, n, r) { return e.renderProvider(r) } } }) }, install: function (e) { e.use(N), e.component(by.name, by) } }, xy = by, wy = (n("7fd0"), n("b8ad")), _y = n.n(wy), Cy = { name: "CascaderMenus", mixins: [m["a"]], props: { value: p["a"].array.def([]), activeValue: p["a"].array.def([]), options: p["a"].array, prefixCls: p["a"].string.def("rc-cascader-menus"), expandTrigger: p["a"].string.def("click"), visible: p["a"].bool.def(!1), dropdownMenuColumnStyle: p["a"].object, defaultFieldNames: p["a"].object, fieldNames: p["a"].object, expandIcon: p["a"].any, loadingIcon: p["a"].any }, data: function () { return this.menuItems = {}, {} }, watch: { visible: function (e) { var t = this; e && this.$nextTick((function () { t.scrollActiveItemToView() })) } }, mounted: function () { var e = this; this.$nextTick((function () { e.scrollActiveItemToView() })) }, methods: { getFieldName: function (e) { var t = this.$props, n = t.fieldNames, r = t.defaultFieldNames; return n[e] || r[e] }, getOption: function (e, t) { var n = this, r = this.$createElement, i = this.prefixCls, o = this.expandTrigger, a = Object(v["g"])(this, "loadingIcon"), s = Object(v["g"])(this, "expandIcon"), c = function (r) { n.__emit("select", e, t, r) }, l = function (r) { n.__emit("itemDoubleClick", e, t, r) }, u = e[this.getFieldName("value")], h = { attrs: { role: "menuitem" }, on: { click: c, dblclick: l, mousedown: function (e) { return e.preventDefault() } }, key: Array.isArray(u) ? u.join("__ant__") : u }, f = i + "-menu-item", d = null, p = e[this.getFieldName("children")] && e[this.getFieldName("children")].length > 0; (p || !1 === e.isLeaf) && (f += " " + i + "-menu-item-expand", e.loading || (d = r("span", { class: i + "-menu-item-expand-icon" }, [s]))), "hover" !== o || !p && !1 !== e.isLeaf || (h.on = { mouseenter: this.delayOnSelect.bind(this, c), mouseleave: this.delayOnSelect.bind(this), click: c }), this.isActiveOption(e, t) && (f += " " + i + "-menu-item-active", h.ref = this.getMenuItemRef(t)), e.disabled && (f += " " + i + "-menu-item-disabled"); var m = null; e.loading && (f += " " + i + "-menu-item-loading", m = a || null); var g = ""; return e.title ? g = e.title : "string" === typeof e[this.getFieldName("label")] && (g = e[this.getFieldName("label")]), h.attrs.title = g, h["class"] = f, r("li", h, [e[this.getFieldName("label")], d, m]) }, getActiveOptions: function (e) { var t = this, n = e || this.activeValue, r = this.options; return _y()(r, (function (e, r) { return e[t.getFieldName("value")] === n[r] }), { childrenKeyName: this.getFieldName("children") }) }, getShowOptions: function () { var e = this, t = this.options, n = this.getActiveOptions().map((function (t) { return t[e.getFieldName("children")] })).filter((function (e) { return !!e })); return n.unshift(t), n }, delayOnSelect: function (e) { for (var t = this, n = arguments.length, r = Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++)r[i - 1] = arguments[i]; this.delayTimer && (clearTimeout(this.delayTimer), this.delayTimer = null), "function" === typeof e && (this.delayTimer = setTimeout((function () { e(r), t.delayTimer = null }), 150)) }, scrollActiveItemToView: function () { for (var e = this.getShowOptions().length, t = 0; t < e; t++) { var n = this.$refs["menuItems_" + t]; if (n) { var r = n; r.parentNode.scrollTop = r.offsetTop } } }, isActiveOption: function (e, t) { var n = this.activeValue, r = void 0 === n ? [] : n; return r[t] === e[this.getFieldName("value")] }, getMenuItemRef: function (e) { return "menuItems_" + e } }, render: function () { var e = this, t = arguments[0], n = this.prefixCls, r = this.dropdownMenuColumnStyle; return t("div", [this.getShowOptions().map((function (i, o) { return t("ul", { class: n + "-menu", key: o, style: r }, [i.map((function (t) { return e.getOption(t, o) }))]) }))]) } }, My = n("c2b3"), Oy = n.n(My), ky = { bottomLeft: { points: ["tl", "bl"], offset: [0, 4], overflow: { adjustX: 1, adjustY: 1 } }, topLeft: { points: ["bl", "tl"], offset: [0, -4], overflow: { adjustX: 1, adjustY: 1 } }, bottomRight: { points: ["tr", "br"], offset: [0, 4], overflow: { adjustX: 1, adjustY: 1 } }, topRight: { points: ["br", "tr"], offset: [0, -4], overflow: { adjustX: 1, adjustY: 1 } } }, Sy = { mixins: [m["a"]], model: { prop: "value", event: "change" }, props: { value: p["a"].array, defaultValue: p["a"].array, options: p["a"].array, popupVisible: p["a"].bool, disabled: p["a"].bool.def(!1), transitionName: p["a"].string.def(""), popupClassName: p["a"].string.def(""), popupStyle: p["a"].object.def((function () { return {} })), popupPlacement: p["a"].string.def("bottomLeft"), prefixCls: p["a"].string.def("rc-cascader"), dropdownMenuColumnStyle: p["a"].object, builtinPlacements: p["a"].object.def(ky), loadData: p["a"].func, changeOnSelect: p["a"].bool, expandTrigger: p["a"].string.def("click"), fieldNames: p["a"].object.def((function () { return { label: "label", value: "value", children: "children" } })), expandIcon: p["a"].any, loadingIcon: p["a"].any, getPopupContainer: p["a"].func }, data: function () { var e = [], t = this.value, n = this.defaultValue, r = this.popupVisible; return Object(v["s"])(this, "value") ? e = t || [] : Object(v["s"])(this, "defaultValue") && (e = n || []), { sPopupVisible: r, sActiveValue: e, sValue: e } }, watch: { value: function (e, t) { if (!Oy()(e, t)) { var n = { sValue: e || [] }; Object(v["s"])(this, "loadData") || (n.sActiveValue = e || []), this.setState(n) } }, popupVisible: function (e) { this.setState({ sPopupVisible: e }) } }, methods: { getPopupDOMNode: function () { return this.$refs.trigger.getPopupDomNode() }, getFieldName: function (e) { var t = this.defaultFieldNames, n = this.fieldNames; return n[e] || t[e] }, getFieldNames: function () { return this.fieldNames }, getCurrentLevelOptions: function () { var e = this, t = this.options, n = void 0 === t ? [] : t, r = this.sActiveValue, i = void 0 === r ? [] : r, o = _y()(n, (function (t, n) { return t[e.getFieldName("value")] === i[n] }), { childrenKeyName: this.getFieldName("children") }); return o[o.length - 2] ? o[o.length - 2][this.getFieldName("children")] : [].concat(X()(n)).filter((function (e) { return !e.disabled })) }, getActiveOptions: function (e) { var t = this; return _y()(this.options || [], (function (n, r) { return n[t.getFieldName("value")] === e[r] }), { childrenKeyName: this.getFieldName("children") }) }, setPopupVisible: function (e) { Object(v["s"])(this, "popupVisible") || this.setState({ sPopupVisible: e }), e && !this.sPopupVisible && this.setState({ sActiveValue: this.sValue }), this.__emit("popupVisibleChange", e) }, handleChange: function (e, t, n) { var r = this; "keydown" === n.type && n.keyCode !== Io.ENTER || (this.__emit("change", e.map((function (e) { return e[r.getFieldName("value")] })), e), this.setPopupVisible(t.visible)) }, handlePopupVisibleChange: function (e) { this.setPopupVisible(e) }, handleMenuSelect: function (e, t, n) { var r = this.$refs.trigger.getRootDomNode(); r && r.focus && r.focus(); var i = this.changeOnSelect, o = this.loadData, a = this.expandTrigger; if (e && !e.disabled) { var s = this.sActiveValue; s = s.slice(0, t + 1), s[t] = e[this.getFieldName("value")]; var c = this.getActiveOptions(s); if (!1 === e.isLeaf && !e[this.getFieldName("children")] && o) return i && this.handleChange(c, { visible: !0 }, n), this.setState({ sActiveValue: s }), void o(c); var l = {}; e[this.getFieldName("children")] && e[this.getFieldName("children")].length ? !i || "click" !== n.type && "keydown" !== n.type || ("hover" === a ? this.handleChange(c, { visible: !1 }, n) : this.handleChange(c, { visible: !0 }, n), l.sValue = s) : (this.handleChange(c, { visible: !1 }, n), l.sValue = s), l.sActiveValue = s, (Object(v["s"])(this, "value") || "keydown" === n.type && n.keyCode !== Io.ENTER) && delete l.sValue, this.setState(l) } }, handleItemDoubleClick: function () { var e = this.$props.changeOnSelect; e && this.setPopupVisible(!1) }, handleKeyDown: function (e) { var t = this, n = this.$slots, r = n["default"] && n["default"][0]; if (r) { var i = Object(v["i"])(r).keydown; if (i) return void i(e) } var o = [].concat(X()(this.sActiveValue)), a = o.length - 1 < 0 ? 0 : o.length - 1, s = this.getCurrentLevelOptions(), c = s.map((function (e) { return e[t.getFieldName("value")] })).indexOf(o[a]); if (e.keyCode === Io.DOWN || e.keyCode === Io.UP || e.keyCode === Io.LEFT || e.keyCode === Io.RIGHT || e.keyCode === Io.ENTER || e.keyCode === Io.SPACE || e.keyCode === Io.BACKSPACE || e.keyCode === Io.ESC || e.keyCode === Io.TAB) if (this.sPopupVisible || e.keyCode === Io.BACKSPACE || e.keyCode === Io.LEFT || e.keyCode === Io.RIGHT || e.keyCode === Io.ESC || e.keyCode === Io.TAB) { if (e.keyCode === Io.DOWN || e.keyCode === Io.UP) { e.preventDefault(); var l = c; -1 !== l ? e.keyCode === Io.DOWN ? (l += 1, l = l >= s.length ? 0 : l) : (l -= 1, l = l < 0 ? s.length - 1 : l) : l = 0, o[a] = s[l][this.getFieldName("value")] } else if (e.keyCode === Io.LEFT || e.keyCode === Io.BACKSPACE) e.preventDefault(), o.splice(o.length - 1, 1); else if (e.keyCode === Io.RIGHT) e.preventDefault(), s[c] && s[c][this.getFieldName("children")] && o.push(s[c][this.getFieldName("children")][0][this.getFieldName("value")]); else if (e.keyCode === Io.ESC || e.keyCode === Io.TAB) return void this.setPopupVisible(!1); o && 0 !== o.length || this.setPopupVisible(!1); var u = this.getActiveOptions(o), h = u[u.length - 1]; this.handleMenuSelect(h, u.length - 1, e), this.__emit("keydown", e) } else this.setPopupVisible(!0) } }, render: function () { var e = arguments[0], t = this.$props, n = this.sActiveValue, r = this.handleMenuSelect, i = this.sPopupVisible, o = this.handlePopupVisibleChange, a = this.handleKeyDown, c = Object(v["k"])(this), u = t.prefixCls, h = t.transitionName, f = t.popupClassName, d = t.options, p = void 0 === d ? [] : d, m = t.disabled, g = t.builtinPlacements, y = t.popupPlacement, b = l()(t, ["prefixCls", "transitionName", "popupClassName", "options", "disabled", "builtinPlacements", "popupPlacement"]), x = e("div"), w = ""; if (p && p.length > 0) { var _ = Object(v["g"])(this, "loadingIcon"), C = Object(v["g"])(this, "expandIcon") || ">", M = { props: s()({}, t, { fieldNames: this.getFieldNames(), defaultFieldNames: this.defaultFieldNames, activeValue: n, visible: i, loadingIcon: _, expandIcon: C }), on: s()({}, c, { select: r, itemDoubleClick: this.handleItemDoubleClick }) }; x = e(Cy, M) } else w = " " + u + "-menus-empty"; var O = { props: s()({}, b, { disabled: m, popupPlacement: y, builtinPlacements: g, popupTransitionName: h, action: m ? [] : ["click"], popupVisible: !m && i, prefixCls: u + "-menus", popupClassName: f + w }), on: s()({}, c, { popupVisibleChange: o }), ref: "trigger" }, k = Object(v["n"])(this, "default")[0]; return e(Zr, O, [k && Object(en["a"])(k, { on: { keydown: a }, attrs: { tabIndex: m ? void 0 : 0 } }), e("template", { slot: "popup" }, [x])]) } }, Ty = Sy; function Ay(e) { return !!(Object(v["g"])(e, "prefix") || Object(v["g"])(e, "suffix") || e.$props.allowClear) } var Ly = ["text", "input"], jy = { props: { prefixCls: p["a"].string, inputType: p["a"].oneOf(Ly), value: p["a"].any, defaultValue: p["a"].any, allowClear: p["a"].bool, element: p["a"].any, handleReset: p["a"].func, disabled: p["a"].bool, size: p["a"].oneOf(["small", "large", "default"]), suffix: p["a"].any, prefix: p["a"].any, addonBefore: p["a"].any, addonAfter: p["a"].any, className: p["a"].string, readOnly: p["a"].bool }, methods: { renderClearIcon: function (e) { var t = this.$createElement, n = this.$props, r = n.allowClear, i = n.value, o = n.disabled, a = n.readOnly, s = n.inputType, c = n.handleReset; if (!r || o || a || void 0 === i || null === i || "" === i) return null; var l = s === Ly[0] ? e + "-textarea-clear-icon" : e + "-clear-icon"; return t(Ve, { attrs: { type: "close-circle", theme: "filled", role: "button" }, on: { click: c }, class: l }) }, renderSuffix: function (e) { var t = this.$createElement, n = this.$props, r = n.suffix, i = n.allowClear; return r || i ? t("span", { class: e + "-suffix" }, [this.renderClearIcon(e), r]) : null }, renderLabeledIcon: function (e, t) { var n, r = this.$createElement, i = this.$props, o = this.renderSuffix(e); if (!Ay(this)) return Object(en["a"])(t, { props: { value: i.value } }); var a = i.prefix ? r("span", { class: e + "-prefix" }, [i.prefix]) : null, s = Q()(i.className, e + "-affix-wrapper", (n = {}, h()(n, e + "-affix-wrapper-sm", "small" === i.size), h()(n, e + "-affix-wrapper-lg", "large" === i.size), h()(n, e + "-affix-wrapper-input-with-clear-btn", i.suffix && i.allowClear && this.$props.value), n)); return r("span", { class: s, style: i.style }, [a, Object(en["a"])(t, { style: null, props: { value: i.value }, class: Zy(e, i.size, i.disabled) }), o]) }, renderInputWithLabel: function (e, t) { var n, r = this.$createElement, i = this.$props, o = i.addonBefore, a = i.addonAfter, s = i.style, c = i.size, l = i.className; if (!o && !a) return t; var u = e + "-group", f = u + "-addon", d = o ? r("span", { class: f }, [o]) : null, p = a ? r("span", { class: f }, [a]) : null, v = Q()(e + "-wrapper", h()({}, u, o || a)), m = Q()(l, e + "-group-wrapper", (n = {}, h()(n, e + "-group-wrapper-sm", "small" === c), h()(n, e + "-group-wrapper-lg", "large" === c), n)); return r("span", { class: m, style: s }, [r("span", { class: v }, [d, Object(en["a"])(t, { style: null }), p])]) }, renderTextAreaWithClearIcon: function (e, t) { var n = this.$createElement, r = this.$props, i = r.value, o = r.allowClear, a = r.className, s = r.style; if (!o) return Object(en["a"])(t, { props: { value: i } }); var c = Q()(a, e + "-affix-wrapper", e + "-affix-wrapper-textarea-with-clear-btn"); return n("span", { class: c, style: s }, [Object(en["a"])(t, { style: null, props: { value: i } }), this.renderClearIcon(e)]) }, renderClearableLabeledInput: function () { var e = this.$props, t = e.prefixCls, n = e.inputType, r = e.element; return n === Ly[0] ? this.renderTextAreaWithClearIcon(t, r) : this.renderInputWithLabel(t, this.renderLabeledIcon(t, r)) } }, render: function () { return this.renderClearableLabeledInput() } }, zy = jy, Ey = { name: "ResizeObserver", props: { disabled: Boolean }, data: function () { return this.currentElement = null, this.resizeObserver = null, { width: 0, height: 0 } }, mounted: function () { this.onComponentUpdated() }, updated: function () { this.onComponentUpdated() }, beforeDestroy: function () { this.destroyObserver() }, methods: { onComponentUpdated: function () { var e = this.$props.disabled; if (e) this.destroyObserver(); else { var t = this.$el, n = t !== this.currentElement; n && (this.destroyObserver(), this.currentElement = t), !this.resizeObserver && t && (this.resizeObserver = new vl["a"](this.onResize), this.resizeObserver.observe(t)) } }, onResize: function (e) { var t = e[0].target, n = t.getBoundingClientRect(), r = n.width, i = n.height, o = Math.floor(r), a = Math.floor(i); if (this.width !== o || this.height !== a) { var s = { width: o, height: a }; this.width = o, this.height = a, this.$emit("resize", s) } }, destroyObserver: function () { this.resizeObserver && (this.resizeObserver.disconnect(), this.resizeObserver = null) } }, render: function () { return this.$slots["default"][0] } }, Py = Ey, Dy = "\n  min-height:0 !important;\n  max-height:none !important;\n  height:0 !important;\n  visibility:hidden !important;\n  overflow:hidden !important;\n  position:absolute !important;\n  z-index:-1000 !important;\n  top:0 !important;\n  right:0 !important\n", Hy = ["letter-spacing", "line-height", "padding-top", "padding-bottom", "font-family", "font-weight", "font-size", "font-variant", "text-rendering", "text-transform", "width", "text-indent", "padding-left", "padding-right", "border-width", "box-sizing"], Vy = {}, Iy = void 0; function Ny(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = e.getAttribute("id") || e.getAttribute("data-reactid") || e.getAttribute("name"); if (t && Vy[n]) return Vy[n]; var r = window.getComputedStyle(e), i = r.getPropertyValue("box-sizing") || r.getPropertyValue("-moz-box-sizing") || r.getPropertyValue("-webkit-box-sizing"), o = parseFloat(r.getPropertyValue("padding-bottom")) + parseFloat(r.getPropertyValue("padding-top")), a = parseFloat(r.getPropertyValue("border-bottom-width")) + parseFloat(r.getPropertyValue("border-top-width")), s = Hy.map((function (e) { return e + ":" + r.getPropertyValue(e) })).join(";"), c = { sizingStyle: s, paddingSize: o, borderSize: a, boxSizing: i }; return t && n && (Vy[n] = c), c } function Ry(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null; Iy || (Iy = document.createElement("textarea"), document.body.appendChild(Iy)), e.getAttribute("wrap") ? Iy.setAttribute("wrap", e.getAttribute("wrap")) : Iy.removeAttribute("wrap"); var i = Ny(e, t), o = i.paddingSize, a = i.borderSize, s = i.boxSizing, c = i.sizingStyle; Iy.setAttribute("style", c + ";" + Dy), Iy.value = e.value || e.placeholder || ""; var l = Number.MIN_SAFE_INTEGER, u = Number.MAX_SAFE_INTEGER, h = Iy.scrollHeight, f = void 0; if ("border-box" === s ? h += a : "content-box" === s && (h -= o), null !== n || null !== r) { Iy.value = " "; var d = Iy.scrollHeight - o; null !== n && (l = d * n, "border-box" === s && (l = l + o + a), h = Math.max(l, h)), null !== r && (u = d * r, "border-box" === s && (u = u + o + a), f = h > u ? "" : "hidden", h = Math.min(u, h)) } return { height: h + "px", minHeight: l + "px", maxHeight: u + "px", overflowY: f } } var Fy = { prefixCls: p["a"].string, inputPrefixCls: p["a"].string, defaultValue: p["a"].oneOfType([p["a"].string, p["a"].number]), value: p["a"].oneOfType([p["a"].string, p["a"].number]), placeholder: [String, Number], type: { default: "text", type: String }, name: String, size: p["a"].oneOf(["small", "large", "default"]), disabled: p["a"].bool, readOnly: p["a"].bool, addonBefore: p["a"].any, addonAfter: p["a"].any, prefix: p["a"].any, suffix: p["a"].any, autoFocus: Boolean, allowClear: Boolean, lazy: { default: !0, type: Boolean }, maxLength: p["a"].number, loading: p["a"].bool, className: p["a"].string }, Yy = 0, $y = 1, By = 2, Wy = s()({}, Fy, { autosize: p["a"].oneOfType([Object, Boolean]), autoSize: p["a"].oneOfType([Object, Boolean]) }), qy = { name: "ResizableTextArea", props: Wy, data: function () { return { textareaStyles: {}, resizeStatus: Yy } }, mixins: [m["a"]], mounted: function () { var e = this; this.$nextTick((function () { e.resizeTextarea() })) }, beforeDestroy: function () { $s.cancel(this.nextFrameActionId), $s.cancel(this.resizeFrameId) }, watch: { value: function () { var e = this; this.$nextTick((function () { e.resizeTextarea() })) } }, methods: { handleResize: function (e) { var t = this.$data.resizeStatus, n = this.$props.autoSize; t === Yy && (this.$emit("resize", e), n && this.resizeOnNextFrame()) }, resizeOnNextFrame: function () { $s.cancel(this.nextFrameActionId), this.nextFrameActionId = $s(this.resizeTextarea) }, resizeTextarea: function () { var e = this, t = this.$props.autoSize || this.$props.autosize; if (t && this.$refs.textArea) { var n = t.minRows, r = t.maxRows, i = Ry(this.$refs.textArea, !1, n, r); this.setState({ textareaStyles: i, resizeStatus: $y }, (function () { $s.cancel(e.resizeFrameId), e.resizeFrameId = $s((function () { e.setState({ resizeStatus: By }, (function () { e.resizeFrameId = $s((function () { e.setState({ resizeStatus: Yy }), e.fixFirefoxAutoScroll() })) })) })) })) } }, fixFirefoxAutoScroll: function () { try { if (document.activeElement === this.$refs.textArea) { var e = this.$refs.textArea.selectionStart, t = this.$refs.textArea.selectionEnd; this.$refs.textArea.setSelectionRange(e, t) } } catch (n) { } }, renderTextArea: function () { var e = this.$createElement, t = Object(v["l"])(this), n = t.prefixCls, r = t.autoSize, i = t.autosize, o = t.disabled, a = this.$data, c = a.textareaStyles, l = a.resizeStatus; fe(void 0 === i, "Input.TextArea", "autosize is deprecated, please use autoSize instead."); var u = Object(Qi["a"])(t, ["prefixCls", "autoSize", "autosize", "defaultValue", "allowClear", "type", "lazy", "value"]), f = Q()(n, h()({}, n + "-disabled", o)), d = {}; "value" in t && (d.value = t.value || ""); var p = s()({}, c, l === $y ? { overflowX: "hidden", overflowY: "hidden" } : null), m = { attrs: u, domProps: d, style: p, class: f, on: Object(Qi["a"])(Object(v["k"])(this), "pressEnter"), directives: [{ name: "ant-input" }] }; return e(Py, { on: { resize: this.handleResize }, attrs: { disabled: !(r || i) } }, [e("textarea", K()([m, { ref: "textArea" }]))]) } }, render: function () { return this.renderTextArea() } }, Uy = qy, Ky = s()({}, Fy, { autosize: p["a"].oneOfType([Object, Boolean]), autoSize: p["a"].oneOfType([Object, Boolean]) }), Gy = { name: "ATextarea", inheritAttrs: !1, model: { prop: "value", event: "change.value" }, props: s()({}, Ky), inject: { configProvider: { default: function () { return Vt } } }, data: function () { var e = "undefined" === typeof this.value ? this.defaultValue : this.value; return { stateValue: "undefined" === typeof e ? "" : e } }, computed: {}, watch: { value: function (e) { this.stateValue = e } }, mounted: function () { var e = this; this.$nextTick((function () { e.autoFocus && e.focus() })) }, methods: { setValue: function (e, t) { Object(v["b"])(this, "value") || (this.stateValue = e, this.$nextTick((function () { t && t() }))) }, handleKeyDown: function (e) { 13 === e.keyCode && this.$emit("pressEnter", e), this.$emit("keydown", e) }, onChange: function (e) { this.$emit("change.value", e.target.value), this.$emit("change", e), this.$emit("input", e) }, handleChange: function (e) { var t = this, n = e.target, r = n.value, i = n.composing; (e.isComposing || i) && this.lazy || this.stateValue === r || (this.setValue(e.target.value, (function () { t.$refs.resizableTextArea.resizeTextarea() })), Qy(this.$refs.resizableTextArea.$refs.textArea, e, this.onChange)) }, focus: function () { this.$refs.resizableTextArea.$refs.textArea.focus() }, blur: function () { this.$refs.resizableTextArea.$refs.textArea.blur() }, handleReset: function (e) { var t = this; this.setValue("", (function () { t.$refs.resizableTextArea.renderTextArea(), t.focus() })), Qy(this.$refs.resizableTextArea.$refs.textArea, e, this.onChange) }, renderTextArea: function (e) { var t = this.$createElement, n = Object(v["l"])(this), r = { props: s()({}, n, { prefixCls: e }), on: s()({}, Object(v["k"])(this), { input: this.handleChange, keydown: this.handleKeyDown }), attrs: this.$attrs }; return t(Uy, K()([r, { ref: "resizableTextArea" }])) } }, render: function () { var e = arguments[0], t = this.stateValue, n = this.prefixCls, r = this.configProvider.getPrefixCls, i = r("input", n), o = { props: s()({}, Object(v["l"])(this), { prefixCls: i, inputType: "text", value: Jy(t), element: this.renderTextArea(i), handleReset: this.handleReset }), on: Object(v["k"])(this) }; return e(zy, o) } }; function Xy() { } function Jy(e) { return "undefined" === typeof e || null === e ? "" : e } function Qy(e, t, n) { if (n) { var r = t; if ("click" === t.type) { Object.defineProperty(r, "target", { writable: !0 }), Object.defineProperty(r, "currentTarget", { writable: !0 }), r.target = e, r.currentTarget = e; var i = e.value; return e.value = "", n(r), void (e.value = i) } n(r) } } function Zy(e, t, n) { var r; return Q()(e, (r = {}, h()(r, e + "-sm", "small" === t), h()(r, e + "-lg", "large" === t), h()(r, e + "-disabled", n), r)) } var eb = { name: "AInput", inheritAttrs: !1, model: { prop: "value", event: "change.value" }, props: s()({}, Fy), inject: { configProvider: { default: function () { return Vt } } }, data: function () { var e = this.$props, t = "undefined" === typeof e.value ? e.defaultValue : e.value; return { stateValue: "undefined" === typeof t ? "" : t } }, watch: { value: function (e) { this.stateValue = e } }, mounted: function () { var e = this; this.$nextTick((function () { e.autoFocus && e.focus(), e.clearPasswordValueAttribute() })) }, beforeDestroy: function () { this.removePasswordTimeout && clearTimeout(this.removePasswordTimeout) }, methods: { focus: function () { this.$refs.input.focus() }, blur: function () { this.$refs.input.blur() }, select: function () { this.$refs.input.select() }, setValue: function (e, t) { this.stateValue !== e && (Object(v["s"])(this, "value") || (this.stateValue = e, this.$nextTick((function () { t && t() })))) }, onChange: function (e) { this.$emit("change.value", e.target.value), this.$emit("change", e), this.$emit("input", e) }, handleReset: function (e) { var t = this; this.setValue("", (function () { t.focus() })), Qy(this.$refs.input, e, this.onChange) }, renderInput: function (e) { var t = this.$createElement, n = Object(Qi["a"])(this.$props, ["prefixCls", "addonBefore", "addonAfter", "prefix", "suffix", "allowClear", "value", "defaultValue", "lazy", "size", "inputType", "className"]), r = this.stateValue, i = this.handleKeyDown, o = this.handleChange, a = this.size, c = this.disabled, l = { directives: [{ name: "ant-input" }], domProps: { value: Jy(r) }, attrs: s()({}, n, this.$attrs), on: s()({}, Object(v["k"])(this), { keydown: i, input: o, change: Xy }), class: Zy(e, a, c), ref: "input", key: "ant-input" }; return t("input", l) }, clearPasswordValueAttribute: function () { var e = this; this.removePasswordTimeout = setTimeout((function () { e.$refs.input && e.$refs.input.getAttribute && "password" === e.$refs.input.getAttribute("type") && e.$refs.input.hasAttribute("value") && e.$refs.input.removeAttribute("value") })) }, handleChange: function (e) { var t = e.target, n = t.value, r = t.composing; (e.isComposing || r) && this.lazy || this.stateValue === n || (this.setValue(n, this.clearPasswordValueAttribute), Qy(this.$refs.input, e, this.onChange)) }, handleKeyDown: function (e) { 13 === e.keyCode && this.$emit("pressEnter", e), this.$emit("keydown", e) } }, render: function () { var e = arguments[0]; if ("textarea" === this.$props.type) { var t = { props: this.$props, attrs: this.$attrs, on: s()({}, Object(v["k"])(this), { input: this.handleChange, keydown: this.handleKeyDown, change: Xy }) }; return e(Gy, K()([t, { ref: "input" }])) } var n = this.$props.prefixCls, r = this.$data.stateValue, i = this.configProvider.getPrefixCls, o = i("input", n), a = Object(v["g"])(this, "addonAfter"), c = Object(v["g"])(this, "addonBefore"), l = Object(v["g"])(this, "suffix"), u = Object(v["g"])(this, "prefix"), h = { props: s()({}, Object(v["l"])(this), { prefixCls: o, inputType: "input", value: Jy(r), element: this.renderInput(o), handleReset: this.handleReset, addonAfter: a, addonBefore: c, suffix: l, prefix: u }), on: Object(v["k"])(this) }; return e(zy, h) } }, tb = { name: "AInputGroup", props: { prefixCls: p["a"].string, size: { validator: function (e) { return ["small", "large", "default"].includes(e) } }, compact: Boolean }, inject: { configProvider: { default: function () { return Vt } } }, computed: { classes: function () { var e, t = this.prefixCls, n = this.size, r = this.compact, i = void 0 !== r && r, o = this.configProvider.getPrefixCls, a = o("input-group", t); return e = {}, h()(e, "" + a, !0), h()(e, a + "-lg", "large" === n), h()(e, a + "-sm", "small" === n), h()(e, a + "-compact", i), e } }, methods: {}, render: function () { var e = arguments[0]; return e("span", K()([{ class: this.classes }, { on: Object(v["k"])(this) }]), [Object(v["c"])(this.$slots["default"])]) } }, nb = n("8df8"), rb = { name: "AInputSearch", inheritAttrs: !1, model: { prop: "value", event: "change.value" }, props: s()({}, Fy, { enterButton: p["a"].any }), inject: { configProvider: { default: function () { return Vt } } }, methods: { onChange: function (e) { e && e.target && "click" === e.type && this.$emit("search", e.target.value, e), this.$emit("change", e) }, onSearch: function (e) { this.loading || this.disabled || (this.$emit("search", this.$refs.input.stateValue, e), Object(nb["isMobile"])({ tablet: !0 }) || this.$refs.input.focus()) }, focus: function () { this.$refs.input.focus() }, blur: function () { this.$refs.input.blur() }, renderLoading: function (e) { var t = this.$createElement, n = this.$props.size, r = Object(v["g"])(this, "enterButton"); return r = r || "" === r, r ? t(Mf, { class: e + "-button", attrs: { type: "primary", size: n }, key: "enterButton" }, [t(Ve, { attrs: { type: "loading" } })]) : t(Ve, { class: e + "-icon", attrs: { type: "loading" }, key: "loadingIcon" }) }, renderSuffix: function (e) { var t = this.$createElement, n = this.loading, r = Object(v["g"])(this, "suffix"), i = Object(v["g"])(this, "enterButton"); if (i = i || "" === i, n && !i) return [r, this.renderLoading(e)]; if (i) return r; var o = t(Ve, { class: e + "-icon", attrs: { type: "search" }, key: "searchIcon", on: { click: this.onSearch } }); return r ? [r, o] : o }, renderAddonAfter: function (e) { var t = this.$createElement, n = this.size, r = this.disabled, i = this.loading, o = e + "-button", a = Object(v["g"])(this, "enterButton"); a = a || "" === a; var s = Object(v["g"])(this, "addonAfter"); if (i && a) return [this.renderLoading(e), s]; if (!a) return s; var c = Array.isArray(a) ? a[0] : a, l = void 0, u = c.componentOptions && c.componentOptions.Ctor.extendOptions.__ANT_BUTTON; return l = "button" === c.tag || u ? Object(en["a"])(c, { key: "enterButton", class: u ? o : "", props: u ? { size: n } : {}, on: { click: this.onSearch } }) : t(Mf, { class: o, attrs: { type: "primary", size: n, disabled: r }, key: "enterButton", on: { click: this.onSearch } }, [!0 === a || "" === a ? t(Ve, { attrs: { type: "search" } }) : a]), s ? [l, s] : l } }, render: function () { var e = arguments[0], t = Object(v["l"])(this), n = t.prefixCls, r = t.inputPrefixCls, i = t.size, o = (t.loading, l()(t, ["prefixCls", "inputPrefixCls", "size", "loading"])), a = this.configProvider.getPrefixCls, c = a("input-search", n), u = a("input", r), f = Object(v["g"])(this, "enterButton"), d = Object(v["g"])(this, "addonBefore"); f = f || "" === f; var p, m = void 0; m = f ? Q()(c, (p = {}, h()(p, c + "-enter-button", !!f), h()(p, c + "-" + i, !!i), p)) : c; var g = s()({}, Object(v["k"])(this)); delete g.search; var y = { props: s()({}, o, { prefixCls: u, size: i, suffix: this.renderSuffix(c), prefix: Object(v["g"])(this, "prefix"), addonAfter: this.renderAddonAfter(c), addonBefore: d, className: m }), attrs: this.$attrs, ref: "input", on: s()({ pressEnter: this.onSearch }, g, { change: this.onChange }) }; return e(eb, y) } }, ib = { click: "click", hover: "mouseover" }, ob = { name: "AInputPassword", mixins: [m["a"]], inheritAttrs: !1, model: { prop: "value", event: "change.value" }, props: s()({}, Fy, { prefixCls: p["a"].string.def("ant-input-password"), inputPrefixCls: p["a"].string.def("ant-input"), action: p["a"].string.def("click"), visibilityToggle: p["a"].bool.def(!0) }), data: function () { return { visible: !1 } }, methods: { focus: function () { this.$refs.input.focus() }, blur: function () { this.$refs.input.blur() }, onVisibleChange: function () { this.disabled || this.setState({ visible: !this.visible }) }, getIcon: function () { var e, t = this.$createElement, n = this.$props, r = n.prefixCls, i = n.action, o = ib[i] || "", a = { props: { type: this.visible ? "eye" : "eye-invisible" }, on: (e = {}, h()(e, o, this.onVisibleChange), h()(e, "mousedown", (function (e) { e.preventDefault() })), h()(e, "mouseup", (function (e) { e.preventDefault() })), e), class: r + "-icon", key: "passwordIcon" }; return t(Ve, a) } }, render: function () { var e = arguments[0], t = Object(v["l"])(this), n = t.prefixCls, r = t.inputPrefixCls, i = t.size, o = (t.suffix, t.visibilityToggle), a = l()(t, ["prefixCls", "inputPrefixCls", "size", "suffix", "visibilityToggle"]), c = o && this.getIcon(), u = Q()(n, h()({}, n + "-" + i, !!i)), f = { props: s()({}, a, { prefixCls: r, size: i, suffix: c, prefix: Object(v["g"])(this, "prefix"), addonAfter: Object(v["g"])(this, "addonAfter"), addonBefore: Object(v["g"])(this, "addonBefore") }), attrs: s()({}, this.$attrs, { type: this.visible ? "text" : "password" }), class: u, ref: "input", on: Object(v["k"])(this) }; return e(eb, f) } }; d.a.use(z), eb.Group = tb, eb.Search = rb, eb.TextArea = Gy, eb.Password = ob, eb.install = function (e) { e.use(N), e.component(eb.name, eb), e.component(eb.Group.name, eb.Group), e.component(eb.Search.name, eb.Search), e.component(eb.TextArea.name, eb.TextArea), e.component(eb.Password.name, eb.Password) }; var ab = eb, sb = p["a"].shape({ value: p["a"].oneOfType([p["a"].string, p["a"].number]), label: p["a"].any, disabled: p["a"].bool, children: p["a"].array, key: p["a"].oneOfType([p["a"].string, p["a"].number]) }).loose, cb = p["a"].shape({ value: p["a"].string.isRequired, label: p["a"].string.isRequired, children: p["a"].string }).loose, lb = p["a"].oneOf(["click", "hover"]), ub = p["a"].shape({ filter: p["a"].func, render: p["a"].func, sort: p["a"].func, matchInputWidth: p["a"].bool, limit: p["a"].oneOfType([Boolean, Number]) }).loose; function hb() { } var fb = { options: p["a"].arrayOf(sb).def([]), defaultValue: p["a"].array, value: p["a"].array, displayRender: p["a"].func, transitionName: p["a"].string.def("slide-up"), popupStyle: p["a"].object.def((function () { return {} })), popupClassName: p["a"].string, popupPlacement: p["a"].oneOf(["bottomLeft", "bottomRight", "topLeft", "topRight"]).def("bottomLeft"), placeholder: p["a"].string.def("Please select"), size: p["a"].oneOf(["large", "default", "small"]), disabled: p["a"].bool.def(!1), allowClear: p["a"].bool.def(!0), showSearch: p["a"].oneOfType([Boolean, ub]), notFoundContent: p["a"].any, loadData: p["a"].func, expandTrigger: lb, changeOnSelect: p["a"].bool, prefixCls: p["a"].string, inputPrefixCls: p["a"].string, getPopupContainer: p["a"].func, popupVisible: p["a"].bool, fieldNames: cb, autoFocus: p["a"].bool, suffixIcon: p["a"].any }, db = 50; function pb(e, t, n) { return t.some((function (t) { return t[n.label].indexOf(e) > -1 })) } function vb(e, t, n, r) { function i(e) { return e[r.label].indexOf(n) > -1 } return e.findIndex(i) - t.findIndex(i) } function mb(e) { var t = e.fieldNames, n = void 0 === t ? {} : t, r = { children: n.children || "children", label: n.label || "label", value: n.value || "value" }; return r } function gb() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = arguments[1], n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [], r = mb(t), i = [], o = r.children; return e.forEach((function (e) { var r = n.concat(e); !t.changeOnSelect && e[o] && e[o].length || i.push(r), e[o] && (i = i.concat(gb(e[o], t, r))) })), i } var yb = function (e) { var t = e.labels; return t.join(" / ") }, bb = { inheritAttrs: !1, name: "ACascader", mixins: [m["a"]], props: fb, model: { prop: "value", event: "change" }, provide: function () { return { savePopupRef: this.savePopupRef } }, inject: { configProvider: { default: function () { return Vt } }, localeData: { default: function () { return {} } } }, data: function () { this.cachedOptions = []; var e = this.value, t = this.defaultValue, n = this.popupVisible, r = this.showSearch, i = this.options; return { sValue: e || t || [], inputValue: "", inputFocused: !1, sPopupVisible: n, flattenOptions: r ? gb(i, this.$props) : void 0 } }, mounted: function () { var e = this; this.$nextTick((function () { !e.autoFocus || e.showSearch || e.disabled || e.$refs.picker.focus() })) }, watch: { value: function (e) { this.setState({ sValue: e || [] }) }, popupVisible: function (e) { this.setState({ sPopupVisible: e }) }, options: function (e) { this.showSearch && this.setState({ flattenOptions: gb(e, this.$props) }) } }, methods: { savePopupRef: function (e) { this.popupRef = e }, highlightKeyword: function (e, t, n) { var r = this.$createElement; return e.split(t).map((function (e, i) { return 0 === i ? e : [r("span", { class: n + "-menu-item-keyword" }, [t]), e] })) }, defaultRenderFilteredOption: function (e) { var t = this, n = e.inputValue, r = e.path, i = e.prefixCls, o = e.names; return r.map((function (e, r) { var a = e[o.label], s = a.indexOf(n) > -1 ? t.highlightKeyword(a, n, i) : a; return 0 === r ? s : [" / ", s] })) }, handleChange: function (e, t) { if (this.setState({ inputValue: "" }), t[0].__IS_FILTERED_OPTION) { var n = e[0], r = t[0].path; this.setValue(n, r) } else this.setValue(e, t) }, handlePopupVisibleChange: function (e) { Object(v["s"])(this, "popupVisible") || this.setState((function (t) { return { sPopupVisible: e, inputFocused: e, inputValue: e ? t.inputValue : "" } })), this.$emit("popupVisibleChange", e) }, handleInputFocus: function (e) { this.$emit("focus", e) }, handleInputBlur: function (e) { this.setState({ inputFocused: !1 }), this.$emit("blur", e) }, handleInputClick: function (e) { var t = this.inputFocused, n = this.sPopupVisible; (t || n) && (e.stopPropagation(), e.nativeEvent && e.nativeEvent.stopImmediatePropagation && e.nativeEvent.stopImmediatePropagation()) }, handleKeyDown: function (e) { e.keyCode !== Io.BACKSPACE && e.keyCode !== Io.SPACE || e.stopPropagation() }, handleInputChange: function (e) { var t = e.target.value; this.setState({ inputValue: t }), this.$emit("search", t) }, setValue: function (e, t) { Object(v["s"])(this, "value") || this.setState({ sValue: e }), this.$emit("change", e, t) }, getLabel: function () { var e = this.options, t = this.$scopedSlots, n = mb(this.$props), r = this.displayRender || t.displayRender || yb, i = this.sValue, o = Array.isArray(i[0]) ? i[0] : i, a = _y()(e, (function (e, t) { return e[n.value] === o[t] }), { childrenKeyName: n.children }), s = a.map((function (e) { return e[n.label] })); return r({ labels: s, selectedOptions: a }) }, clearSelection: function (e) { e.preventDefault(), e.stopPropagation(), this.inputValue ? this.setState({ inputValue: "" }) : (this.setValue([]), this.handlePopupVisibleChange(!1)) }, generateFilteredOptions: function (e, t) { var n, r = this.$createElement, i = this.showSearch, o = this.notFoundContent, a = this.$scopedSlots, s = mb(this.$props), c = i.filter, l = void 0 === c ? pb : c, u = i.sort, f = void 0 === u ? vb : u, d = i.limit, p = void 0 === d ? db : d, v = i.render || a.showSearchRender || this.defaultRenderFilteredOption, m = this.$data, g = m.flattenOptions, y = void 0 === g ? [] : g, b = m.inputValue, x = void 0; if (p > 0) { x = []; var w = 0; y.some((function (e) { var t = l(b, e, s); return t && (x.push(e), w += 1), w >= p })) } else fe("number" !== typeof p, "Cascader", "'limit' of showSearch in Cascader should be positive number or false."), x = y.filter((function (e) { return l(b, e, s) })); return x.sort((function (e, t) { return f(e, t, b, s) })), x.length > 0 ? x.map((function (t) { var n; return n = { __IS_FILTERED_OPTION: !0, path: t }, h()(n, s.label, v({ inputValue: b, path: t, prefixCls: e, names: s })), h()(n, s.value, t.map((function (e) { return e[s.value] }))), h()(n, "disabled", t.some((function (e) { return !!e.disabled }))), n })) : [(n = {}, h()(n, s.label, o || t(r, "Cascader")), h()(n, s.value, "ANT_CASCADER_NOT_FOUND"), h()(n, "disabled", !0), n)] }, focus: function () { this.showSearch ? this.$refs.input.focus() : this.$refs.picker.focus() }, blur: function () { this.showSearch ? this.$refs.input.blur() : this.$refs.picker.blur() } }, render: function () { var e, t, n, r = arguments[0], i = this.$slots, o = this.sPopupVisible, a = this.inputValue, c = this.configProvider, u = this.localeData, f = this.$data, d = f.sValue, p = f.inputFocused, m = Object(v["l"])(this), g = Object(v["g"])(this, "suffixIcon"); g = Array.isArray(g) ? g[0] : g; var y, b = c.getPopupContainer, x = m.prefixCls, w = m.inputPrefixCls, _ = m.placeholder, C = void 0 === _ ? u.placeholder : _, M = m.size, O = m.disabled, k = m.allowClear, S = m.showSearch, T = void 0 !== S && S, A = m.notFoundContent, L = l()(m, ["prefixCls", "inputPrefixCls", "placeholder", "size", "disabled", "allowClear", "showSearch", "notFoundContent"]), j = this.configProvider.getPrefixCls, z = this.configProvider.renderEmpty, E = j("cascader", x), P = j("input", w), D = Q()((e = {}, h()(e, P + "-lg", "large" === M), h()(e, P + "-sm", "small" === M), e)), H = k && !O && d.length > 0 || a ? r(Ve, { attrs: { type: "close-circle", theme: "filled" }, class: E + "-picker-clear", on: { click: this.clearSelection }, key: "clear-icon" }) : null, V = Q()((t = {}, h()(t, E + "-picker-arrow", !0), h()(t, E + "-picker-arrow-expand", o), t)), I = Q()(Object(v["f"])(this), E + "-picker", (n = {}, h()(n, E + "-picker-with-value", a), h()(n, E + "-picker-disabled", O), h()(n, E + "-picker-" + M, !!M), h()(n, E + "-picker-show-search", !!T), h()(n, E + "-picker-focused", p), n)), N = Object(Qi["a"])(L, ["options", "popupPlacement", "transitionName", "displayRender", "changeOnSelect", "expandTrigger", "popupVisible", "getPopupContainer", "loadData", "popupClassName", "filterOption", "renderFilteredOption", "sortFilteredOption", "notFoundContent", "defaultValue", "fieldNames"]), R = m.options, F = mb(this.$props); R && R.length > 0 ? a && (R = this.generateFilteredOptions(E, z)) : R = [(y = {}, h()(y, F.label, A || z(r, "Cascader")), h()(y, F.value, "ANT_CASCADER_NOT_FOUND"), h()(y, "disabled", !0), y)], o ? this.cachedOptions = R : R = this.cachedOptions; var Y = {}, $ = 1 === (R || []).length && "ANT_CASCADER_NOT_FOUND" === R[0].value; $ && (Y.height = "auto"); var B = !1 !== T.matchInputWidth; B && (a || $) && this.$refs.input && (Y.width = this.$refs.input.$el.offsetWidth + "px"); var W = { props: s()({}, N, { prefixCls: P, placeholder: d && d.length > 0 ? void 0 : C, value: a, disabled: O, readOnly: !T, autoComplete: "off" }), class: E + "-input " + D, ref: "input", on: { focus: T ? this.handleInputFocus : hb, click: T ? this.handleInputClick : hb, blur: T ? this.handleInputBlur : hb, keydown: this.handleKeyDown, change: T ? this.handleInputChange : hb }, attrs: Object(v["e"])(this) }, q = Object(v["c"])(i["default"]), U = g && (Object(v["v"])(g) ? Object(en["a"])(g, { class: h()({}, E + "-picker-arrow", !0) }) : r("span", { class: E + "-picker-arrow" }, [g])) || r(Ve, { attrs: { type: "down" }, class: V }), K = q.length ? q : r("span", { class: I, style: Object(v["q"])(this), ref: "picker" }, [T ? r("span", { class: E + "-picker-label" }, [this.getLabel()]) : null, r(ab, W), T ? null : r("span", { class: E + "-picker-label" }, [this.getLabel()]), H, U]), G = r(Ve, { attrs: { type: "right" } }), X = r("span", { class: E + "-menu-item-loading-icon" }, [r(Ve, { attrs: { type: "redo", spin: !0 } })]), J = m.getPopupContainer || b, Z = { props: s()({}, m, { getPopupContainer: J, options: R, prefixCls: E, value: d, popupVisible: o, dropdownMenuColumnStyle: Y, expandIcon: G, loadingIcon: X }), on: s()({}, Object(v["k"])(this), { popupVisibleChange: this.handlePopupVisibleChange, change: this.handleChange }) }; return r(Ty, Z, [K]) }, install: function (e) { e.use(N), e.component(bb.name, bb) } }, xb = bb, wb = (n("ded6"), n("c9a4")); function _b(e, t) { if (e.classList) return e.classList.contains(t); var n = e.className; return (" " + n + " ").indexOf(" " + t + " ") > -1 } var Cb = "SHOW_ALL", Mb = "SHOW_PARENT", Ob = "SHOW_CHILD", kb = !1; function Sb(e, t) { var n = e; while (n) { if (_b(n, t)) return n; n = n.parentNode } return null } function Tb(e) { return "string" === typeof e ? e : null } function Ab(e) { return void 0 === e || null === e ? [] : Array.isArray(e) ? e : [e] } function Lb() { var e = function (t) { e.current = t }; return e } var jb = { userSelect: "none", WebkitUserSelect: "none" }, zb = { unselectable: "unselectable" }; function Eb(e) { if (!e.length) return []; var t = {}, n = {}, r = e.slice().map((function (e) { var t = s()({}, e, { fields: e.pos.split("-") }); return delete t.children, t })); return r.forEach((function (e) { n[e.pos] = e })), r.sort((function (e, t) { return e.fields.length - t.fields.length })), r.forEach((function (e) { var r = e.fields.slice(0, -1).join("-"), i = n[r]; i ? (i.children = i.children || [], i.children.push(e)) : t[e.pos] = e, delete e.key, delete e.fields })), Object.keys(t).map((function (e) { return t[e] })) } var Pb = 0; function Db(e) { return Pb += 1, e + "_" + Pb } function Hb(e) { var t = e.treeCheckable, n = e.treeCheckStrictly, r = e.labelInValue; return !(!t || !n) || r || !1 } function Vb(e, t) { var n = t.id, r = t.pId, i = t.rootPId, o = {}, a = [], c = e.map((function (e) { var t = s()({}, e), r = t[n]; return o[r] = t, t.key = t.key || r, t })); return c.forEach((function (e) { var t = e[r], n = o[t]; n && (n.children = n.children || [], n.children.push(e)), (t === i || !n && null === i) && a.push(e) })), a } function Ib(e, t) { for (var n = e.split("-"), r = t.split("-"), i = Math.min(n.length, r.length), o = 0; o < i; o += 1)if (n[o] !== r[o]) return !1; return !0 } function Nb(e) { var t = e.node, n = e.pos, r = e.children, i = { node: t, pos: n }; return r && (i.children = r.map(Nb)), i } function Rb(e, t, n, r, i, o) { if (!n) return null; function a(t) { if (!t || Object(v["u"])(t)) return null; var s = !1; r(n, t) && (s = !0); var c = Object(v["p"])(t)["default"]; return c = (("function" === typeof c ? c() : c) || []).map(a).filter((function (e) { return e })), c.length || s ? e(o, K()([t.data, { key: i[Object(v["m"])(t).value].key }]), [c]) : null } return t.map(a).filter((function (e) { return e })) } function Fb(e, t) { var n = Ab(e); return Hb(t) ? n.map((function (e) { return "object" === ("undefined" === typeof e ? "undefined" : Tt()(e)) && e ? e : { value: "", label: "" } })) : n.map((function (e) { return { value: e } })) } function Yb(e, t, n) { if (e.label) return e.label; if (t) { var r = Object(v["m"])(t.node); if (Object.keys(r).length) return r[n] } return e.value } function $b(e, t, n) { var r = t.treeNodeLabelProp, i = t.treeCheckable, o = t.treeCheckStrictly, a = t.showCheckedStrategy; if (i && !o) { var s = {}; e.forEach((function (e) { s[e.value] = e })); var c = Eb(e.map((function (e) { var t = e.value; return n[t] }))); if (a === Mb) return c.map((function (e) { var t = e.node, i = Object(v["m"])(t).value; return { label: Yb(s[i], n[i], r), value: i } })); if (a === Ob) { var l = [], u = function e(t) { var i = t.node, o = t.children, a = Object(v["m"])(i).value; o && 0 !== o.length ? o.forEach((function (t) { e(t) })) : l.push({ label: Yb(s[a], n[a], r), value: a }) }; return c.forEach((function (e) { u(e) })), l } } return e.map((function (e) { return { label: Yb(e, n[e.value], r), value: e.value } })) } function Bb(e) { var t = e.title, n = e.label, r = e.value, i = e["class"], o = e.style, a = e.on, s = void 0 === a ? {} : a, c = e.key; c || void 0 !== c && null !== c || (c = r); var l = { props: Object(Qi["a"])(e, ["on", "key", "class", "className", "style"]), on: s, class: i || e.className, style: o, key: c }; return n && !t && (kb || (ul()(!1, "'label' in treeData is deprecated. Please use 'title' instead."), kb = !0), l.props.title = n), l } function Wb(e, t) { return Object(wb["g"])(e, t, { processProps: Bb }) } function qb(e) { return s()({}, e, { valueEntities: {} }) } function Ub(e, t) { var n = Object(v["m"])(e.node).value; e.value = n; var r = t.valueEntities[n]; r && ul()(!1, "Conflict! value of node '" + e.key + "' (" + n + ") has already used by node '" + r.key + "'."), t.valueEntities[n] = e } function Kb(e) { return Object(wb["h"])(e, { initWrapper: qb, processEntity: Ub }) } function Gb(e, t) { var n = {}; return e.forEach((function (e) { var t = e.value; n[t] = !1 })), e.forEach((function (e) { var r = e.value, i = t[r]; while (i && i.parent) { var o = i.parent.value; if (o in n) break; n[o] = !0, i = i.parent } })), Object.keys(n).filter((function (e) { return n[e] })).map((function (e) { return t[e].key })) } var Xb = wb["e"], Jb = { bottomLeft: { points: ["tl", "bl"], offset: [0, 4], overflow: { adjustX: 0, adjustY: 1 }, ignoreShake: !0 }, topLeft: { points: ["bl", "tl"], offset: [0, -4], overflow: { adjustX: 0, adjustY: 1 }, ignoreShake: !0 } }, Qb = { name: "SelectTrigger", props: { disabled: p["a"].bool, showSearch: p["a"].bool, prefixCls: p["a"].string, dropdownPopupAlign: p["a"].object, dropdownClassName: p["a"].string, dropdownStyle: p["a"].object, transitionName: p["a"].string, animation: p["a"].string, getPopupContainer: p["a"].func, dropdownMatchSelectWidth: p["a"].bool, isMultiple: p["a"].bool, dropdownPrefixCls: p["a"].string, dropdownVisibleChange: p["a"].func, popupElement: p["a"].node, open: p["a"].bool }, created: function () { this.triggerRef = Lb() }, methods: { getDropdownTransitionName: function () { var e = this.$props, t = e.transitionName, n = e.animation, r = e.dropdownPrefixCls; return !t && n ? r + "-" + n : t }, forcePopupAlign: function () { var e = this.triggerRef.current; e && e.forcePopupAlign() } }, render: function () { var e, t = arguments[0], n = this.$props, r = n.disabled, i = n.isMultiple, o = n.dropdownPopupAlign, a = n.dropdownMatchSelectWidth, s = n.dropdownClassName, c = n.dropdownStyle, l = n.dropdownVisibleChange, u = n.getPopupContainer, f = n.dropdownPrefixCls, d = n.popupElement, p = n.open, v = void 0; return !1 !== a && (v = a ? "width" : "minWidth"), t(Zr, K()([{ directives: [{ name: "ant-ref", value: this.triggerRef }] }, { attrs: { action: r ? [] : ["click"], popupPlacement: "bottomLeft", builtinPlacements: Jb, popupAlign: o, prefixCls: f, popupTransitionName: this.getDropdownTransitionName(), popup: d, popupVisible: p, getPopupContainer: u, stretch: v, popupClassName: Q()(s, (e = {}, h()(e, f + "--multiple", i), h()(e, f + "--single", !i), e)), popupStyle: c }, on: { popupVisibleChange: l } }]), [this.$slots["default"]]) } }, Zb = Qb, ex = function () { return { prefixCls: p["a"].string, className: p["a"].string, open: p["a"].bool, selectorValueList: p["a"].array, allowClear: p["a"].bool, showArrow: p["a"].bool, removeSelected: p["a"].func, choiceTransitionName: p["a"].string, ariaId: p["a"].string, inputIcon: p["a"].any, clearIcon: p["a"].any, removeIcon: p["a"].any, placeholder: p["a"].any, disabled: p["a"].bool, focused: p["a"].bool } }; function tx() { } var nx = function (e) { var t = { name: "BaseSelector", mixins: [m["a"]], props: Object(v["t"])(s()({}, ex(), { renderSelection: p["a"].func.isRequired, renderPlaceholder: p["a"].func, tabIndex: p["a"].number }), { tabIndex: 0 }), inject: { vcTreeSelect: { default: function () { return {} } } }, created: function () { this.domRef = Lb() }, methods: { onFocus: function (e) { var t = this.$props.focused, n = this.vcTreeSelect.onSelectorFocus; t || n(), this.__emit("focus", e) }, onBlur: function (e) { var t = this.vcTreeSelect.onSelectorBlur; t(), this.__emit("blur", e) }, focus: function () { this.domRef.current.focus() }, blur: function () { this.domRef.current.blur() }, renderClear: function () { var e = this.$createElement, t = this.$props, n = t.prefixCls, r = t.allowClear, i = t.selectorValueList, o = this.vcTreeSelect.onSelectorClear; if (!r || !i.length || !i[0].value) return null; var a = Object(v["g"])(this, "clearIcon"); return e("span", { key: "clear", class: n + "-selection__clear", on: { click: o } }, [a]) }, renderArrow: function () { var e = this.$createElement, t = this.$props, n = t.prefixCls, r = t.showArrow; if (!r) return null; var i = Object(v["g"])(this, "inputIcon"); return e("span", { key: "arrow", class: n + "-arrow", style: { outline: "none" } }, [i]) } }, render: function () { var t, n = arguments[0], r = this.$props, i = r.prefixCls, o = r.className, a = r.style, s = r.open, c = r.focused, l = r.disabled, u = r.allowClear, f = r.ariaId, d = r.renderSelection, p = r.renderPlaceholder, m = r.tabIndex, g = this.vcTreeSelect.onSelectorKeyDown, y = m; return l && (y = null), n("span", K()([{ style: a, on: { click: Object(v["k"])(this).click || tx }, class: Q()(o, i, (t = {}, h()(t, i + "-open", s), h()(t, i + "-focused", s || c), h()(t, i + "-disabled", l), h()(t, i + "-enabled", !l), h()(t, i + "-allow-clear", u), t)) }, { directives: [{ name: "ant-ref", value: this.domRef }] }, { attrs: { role: "combobox", "aria-expanded": s, "aria-owns": s ? f : void 0, "aria-controls": s ? f : void 0, "aria-haspopup": "listbox", "aria-disabled": l, tabIndex: y }, on: { focus: this.onFocus, blur: this.onBlur, keydown: g } }]), [n("span", { key: "selection", class: Q()(i + "-selection", i + "-selection--" + e) }, [d(), this.renderClear(), this.renderArrow(), p && p()])]) } }; return t }, rx = nx("single"), ix = { name: "SingleSelector", props: ex(), created: function () { this.selectorRef = Lb() }, methods: { focus: function () { this.selectorRef.current.focus() }, blur: function () { this.selectorRef.current.blur() }, renderSelection: function () { var e = this.$createElement, t = this.$props, n = t.selectorValueList, r = t.placeholder, i = t.prefixCls, o = void 0; if (n.length) { var a = n[0], s = a.label, c = a.value; o = e("span", { key: "value", attrs: { title: Tb(s) }, class: i + "-selection-selected-value" }, [s || c]) } else o = e("span", { key: "placeholder", class: i + "-selection__placeholder" }, [r]); return e("span", { class: i + "-selection__rendered" }, [o]) } }, render: function () { var e = arguments[0], t = { props: s()({}, Object(v["l"])(this), { renderSelection: this.renderSelection }), on: Object(v["k"])(this), directives: [{ name: "ant-ref", value: this.selectorRef }] }; return e(rx, t) } }, ox = ix, ax = { name: "SearchInput", props: { open: p["a"].bool, searchValue: p["a"].string, prefixCls: p["a"].string, disabled: p["a"].bool, renderPlaceholder: p["a"].func, needAlign: p["a"].bool, ariaId: p["a"].string }, inject: { vcTreeSelect: { default: function () { return {} } } }, data: function () { return { mirrorSearchValue: this.searchValue } }, watch: { searchValue: function (e) { this.mirrorSearchValue = e } }, created: function () { this.inputRef = Lb(), this.mirrorInputRef = Lb(), this.prevProps = s()({}, this.$props) }, mounted: function () { var e = this; this.$nextTick((function () { var t = e.$props, n = t.open, r = t.needAlign; r && e.alignInputWidth(), n && e.focus(!0) })) }, updated: function () { var e = this, t = this.$props, n = t.open, r = t.searchValue, i = t.needAlign, o = this.prevProps; this.$nextTick((function () { n && o.open !== n && e.focus(), i && r !== o.searchValue && e.alignInputWidth(), e.prevProps = s()({}, e.$props) })) }, methods: { alignInputWidth: function () { this.inputRef.current.style.width = (this.mirrorInputRef.current.clientWidth || this.mirrorInputRef.current.offsetWidth) + "px" }, focus: function (e) { var t = this; this.inputRef.current && (e ? setTimeout((function () { t.inputRef.current.focus() }), 0) : this.inputRef.current.focus()) }, blur: function () { this.inputRef.current && this.inputRef.current.blur() }, handleInputChange: function (e) { var t = e.target, n = t.value, r = t.composing, i = this.searchValue, o = void 0 === i ? "" : i; e.isComposing || r || o === n ? this.mirrorSearchValue = n : this.vcTreeSelect.onSearchInputChange(e) } }, render: function () { var e = arguments[0], t = this.$props, n = t.searchValue, r = t.prefixCls, i = t.disabled, o = t.renderPlaceholder, a = t.open, s = t.ariaId, c = this.vcTreeSelect.onSearchInputKeyDown, l = this.handleInputChange, u = this.mirrorSearchValue; return e("span", { class: r + "-search__field__wrap" }, [e("input", K()([{ attrs: { type: "text" } }, { directives: [{ name: "ant-ref", value: this.inputRef }, { name: "ant-input" }] }, { on: { input: l, keydown: c }, domProps: { value: n }, attrs: { disabled: i, "aria-label": "filter select", "aria-autocomplete": "list", "aria-controls": a ? s : void 0, "aria-multiline": "false" }, class: r + "-search__field" }])), e("span", K()([{ directives: [{ name: "ant-ref", value: this.mirrorInputRef }] }, { class: r + "-search__field__mirror" }]), [u, "聽"]), o && !u ? o() : null]) } }, sx = ax, cx = { mixins: [m["a"]], props: { prefixCls: p["a"].string, maxTagTextLength: p["a"].number, label: p["a"].any, value: p["a"].oneOfType([p["a"].string, p["a"].number]), removeIcon: p["a"].any }, methods: { onRemove: function (e) { var t = this.$props.value; this.__emit("remove", e, t), e.stopPropagation() } }, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.maxTagTextLength, i = t.label, o = t.value, a = i || o; return r && "string" === typeof a && a.length > r && (a = a.slice(0, r) + "..."), e("li", K()([{ style: jb }, { attrs: zb }, { attrs: { role: "menuitem", title: Tb(i) }, class: n + "-selection__choice" }]), [Object(v["k"])(this).remove && e("span", { class: n + "-selection__choice__remove", on: { click: this.onRemove } }, [Object(v["g"])(this, "removeIcon")]), e("span", { class: n + "-selection__choice__content" }, [a])]) } }, lx = cx, ux = "RC_TREE_SELECT_EMPTY_VALUE_KEY", hx = nx("multiple"), fx = { mixins: [m["a"]], props: s()({}, ex(), sx.props, { selectorValueList: p["a"].array, disabled: p["a"].bool, searchValue: p["a"].string, labelInValue: p["a"].bool, maxTagCount: p["a"].number, maxTagPlaceholder: p["a"].any }), inject: { vcTreeSelect: { default: function () { return {} } } }, created: function () { this.inputRef = Lb() }, methods: { onPlaceholderClick: function () { this.inputRef.current.focus() }, focus: function () { this.inputRef.current.focus() }, blur: function () { this.inputRef.current.blur() }, _renderPlaceholder: function () { var e = this.$createElement, t = this.$props, n = t.prefixCls, r = t.placeholder, i = t.searchPlaceholder, o = t.searchValue, a = t.selectorValueList, s = r || i; if (!s) return null; var c = o || a.length; return e("span", { style: { display: c ? "none" : "block" }, on: { click: this.onPlaceholderClick }, class: n + "-search__field__placeholder" }, [s]) }, onChoiceAnimationLeave: function () { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; this.__emit.apply(this, ["choiceAnimationLeave"].concat(X()(t))) }, renderSelection: function () { var e = this, t = this.$createElement, n = this.$props, r = n.selectorValueList, i = n.choiceTransitionName, o = n.prefixCls, a = n.labelInValue, c = n.maxTagCount, l = this.vcTreeSelect.onMultipleSelectorRemove, u = this.$slots, h = Object(v["k"])(this), f = r; c >= 0 && (f = r.slice(0, c)); var d = f.map((function (n) { var r = n.label, i = n.value; return t(lx, K()([{ props: s()({}, e.$props, { label: r, value: i }), on: s()({}, h, { remove: l }) }, { key: i || ux }]), [u["default"]]) })); if (c >= 0 && c < r.length) { var p = "+ " + (r.length - c) + " ...", m = Object(v["g"])(this, "maxTagPlaceholder", {}, !1); if ("string" === typeof m) p = m; else if ("function" === typeof m) { var g = r.slice(c); p = m(a ? g : g.map((function (e) { var t = e.value; return t }))) } var b = t(lx, K()([{ props: s()({}, this.$props, { label: p, value: null }), on: h }, { key: "rc-tree-select-internal-max-tag-counter" }]), [u["default"]]); d.push(b) } d.push(t("li", { class: o + "-search " + o + "-search--inline", key: "__input" }, [t(sx, { props: s()({}, this.$props, { needAlign: !0 }), on: h, directives: [{ name: "ant-ref", value: this.inputRef }] }, [u["default"]])])); var x = o + "-selection__rendered"; if (i) { var w = Object(y["a"])(i, { tag: "ul", afterLeave: this.onChoiceAnimationLeave }); return t("transition-group", K()([{ class: x }, w]), [d]) } return t("ul", { class: x, attrs: { role: "menubar" } }, [d]) } }, render: function () { var e = arguments[0], t = this.$slots, n = Object(v["k"])(this); return e(hx, { props: s()({}, this.$props, { tabIndex: -1, showArrow: !1, renderSelection: this.renderSelection, renderPlaceholder: this._renderPlaceholder }), on: n }, [t["default"]]) } }, dx = fx, px = n("7d1c"); function vx(e, t) { var n = t || {}, r = n._prevProps, i = void 0 === r ? {} : r, o = n._loadedKeys, a = n._expandedKeyList, c = n._cachedExpandedKeyList, l = e.valueList, u = e.valueEntities, h = e.keyEntities, f = e.treeExpandedKeys, d = e.filteredTreeNodes, p = e.upperSearchValue, v = { _prevProps: s()({}, e) }; return l !== i.valueList && (v._keyList = l.map((function (e) { var t = e.value; return u[t] })).filter((function (e) { return e })).map((function (e) { var t = e.key; return t }))), !f && d && d.length && d !== i.filteredTreeNodes && (v._expandedKeyList = [].concat(X()(h.keys()))), p && !i.upperSearchValue ? v._cachedExpandedKeyList = a : p || !i.upperSearchValue || f || (v._expandedKeyList = c || [], v._cachedExpandedKeyList = []), i.treeExpandedKeys !== f && (v._expandedKeyList = f), e.loadData && (v._loadedKeys = o.filter((function (e) { return h.has(e) }))), v } var mx = { mixins: [m["a"]], name: "BasePopup", props: { prefixCls: p["a"].string, upperSearchValue: p["a"].string, valueList: p["a"].array, searchHalfCheckedKeys: p["a"].array, valueEntities: p["a"].object, keyEntities: Map, treeIcon: p["a"].bool, treeLine: p["a"].bool, treeNodeFilterProp: p["a"].string, treeCheckable: p["a"].any, treeCheckStrictly: p["a"].bool, treeDefaultExpandAll: p["a"].bool, treeDefaultExpandedKeys: p["a"].array, treeExpandedKeys: p["a"].array, loadData: p["a"].func, multiple: p["a"].bool, searchValue: p["a"].string, treeNodes: p["a"].any, filteredTreeNodes: p["a"].any, notFoundContent: p["a"].any, ariaId: p["a"].string, switcherIcon: p["a"].any, renderSearch: p["a"].func, __propsSymbol__: p["a"].any }, inject: { vcTreeSelect: { default: function () { return {} } } }, watch: { __propsSymbol__: function () { var e = vx(this.$props, this.$data); this.setState(e) } }, data: function () { this.treeRef = Lb(), ul()(this.$props.__propsSymbol__, "must pass __propsSymbol__"); var e = this.$props, t = e.treeDefaultExpandAll, n = e.treeDefaultExpandedKeys, r = e.keyEntities, i = n; t && (i = [].concat(X()(r.keys()))); var o = { _keyList: [], _expandedKeyList: i, _cachedExpandedKeyList: [], _loadedKeys: [], _prevProps: {} }; return s()({}, o, vx(this.$props, o)) }, methods: { onTreeExpand: function (e) { var t = this, n = this.$props.treeExpandedKeys; n || this.setState({ _expandedKeyList: e }, (function () { t.__emit("treeExpanded") })), this.__emit("update:treeExpandedKeys", e), this.__emit("treeExpand", e) }, onLoad: function (e) { this.setState({ _loadedKeys: e }) }, getTree: function () { return this.treeRef.current }, getLoadData: function () { var e = this.$props, t = e.loadData, n = e.upperSearchValue; return n ? null : t }, filterTreeNode: function (e) { var t = this.$props, n = t.upperSearchValue, r = t.treeNodeFilterProp, i = e[r]; return "string" === typeof i && n && -1 !== i.toUpperCase().indexOf(n) }, renderNotFound: function () { var e = this.$createElement, t = this.$props, n = t.prefixCls, r = t.notFoundContent; return e("span", { class: n + "-not-found" }, [r]) } }, render: function () { var e = arguments[0], t = this.$data, n = t._keyList, r = t._expandedKeyList, i = t._loadedKeys, o = this.$props, a = o.prefixCls, c = o.treeNodes, l = o.filteredTreeNodes, u = o.treeIcon, h = o.treeLine, f = o.treeCheckable, d = o.treeCheckStrictly, p = o.multiple, v = o.ariaId, m = o.renderSearch, g = o.switcherIcon, y = o.searchHalfCheckedKeys, b = this.vcTreeSelect, x = b.onPopupKeyDown, w = b.onTreeNodeSelect, _ = b.onTreeNodeCheck, C = this.getLoadData(), M = {}; f ? M.checkedKeys = n : M.selectedKeys = n; var O = void 0, k = void 0; l ? l.length ? (M.checkStrictly = !0, k = l, f && !d && (M.checkedKeys = { checked: n, halfChecked: y })) : O = this.renderNotFound() : c && c.length ? k = c : O = this.renderNotFound(); var S = void 0; if (O) S = O; else { var T = { props: s()({ prefixCls: a + "-tree", showIcon: u, showLine: h, selectable: !f, checkable: f, checkStrictly: d, multiple: p, loadData: C, loadedKeys: i, expandedKeys: r, filterTreeNode: this.filterTreeNode, switcherIcon: g }, M, { __propsSymbol__: Symbol(), children: k }), on: { select: w, check: _, expand: this.onTreeExpand, load: this.onLoad }, directives: [{ name: "ant-ref", value: this.treeRef }] }; S = e(px["Tree"], T) } return e("div", { attrs: { role: "listbox", id: v, tabIndex: -1 }, on: { keydown: x } }, [m ? m() : null, S]) } }, gx = mx, yx = { name: "SinglePopup", props: s()({}, gx.props, sx.props, { searchValue: p["a"].string, showSearch: p["a"].bool, dropdownPrefixCls: p["a"].string, disabled: p["a"].bool, searchPlaceholder: p["a"].string }), created: function () { this.inputRef = Lb(), this.searchRef = Lb(), this.popupRef = Lb() }, methods: { onPlaceholderClick: function () { this.inputRef.current.focus() }, getTree: function () { return this.popupRef.current && this.popupRef.current.getTree() }, _renderPlaceholder: function () { var e = this.$createElement, t = this.$props, n = t.searchPlaceholder, r = t.searchValue, i = t.prefixCls; return n ? e("span", { style: { display: r ? "none" : "block" }, on: { click: this.onPlaceholderClick }, class: i + "-search__field__placeholder" }, [n]) : null }, _renderSearch: function () { var e = this.$createElement, t = this.$props, n = t.showSearch, r = t.dropdownPrefixCls; return n ? e("span", K()([{ class: r + "-search" }, { directives: [{ name: "ant-ref", value: this.searchRef }] }]), [e(sx, { props: s()({}, this.$props, { renderPlaceholder: this._renderPlaceholder }), on: Object(v["k"])(this), directives: [{ name: "ant-ref", value: this.inputRef }] })]) : null } }, render: function () { var e = arguments[0]; return e(gx, { props: s()({}, this.$props, { renderSearch: this._renderSearch, __propsSymbol__: Symbol() }), on: Object(v["k"])(this), directives: [{ name: "ant-ref", value: this.popupRef }] }) } }, bx = yx, xx = gx, wx = { name: "SelectNode", functional: !0, isTreeNode: !0, props: px["TreeNode"].props, render: function (e, t) { var n = t.props, r = t.slots, i = t.listeners, o = t.data, a = t.scopedSlots, c = r() || {}, l = c["default"], u = Object.keys(c), h = {}; u.forEach((function (e) { h[e] = function () { return c[e] } })); var f = s()({}, o, { on: s()({}, i, o.nativeOn), props: n, scopedSlots: s()({}, h, a) }); return e(px["TreeNode"], f, [l]) } }; function _x() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = {}; return e.forEach((function (e) { t[e] = function () { this.needSyncKeys[e] = !0 } })), t } var Cx = { name: "Select", mixins: [m["a"]], props: Object(v["t"])({ prefixCls: p["a"].string, prefixAria: p["a"].string, multiple: p["a"].bool, showArrow: p["a"].bool, open: p["a"].bool, value: p["a"].any, autoFocus: p["a"].bool, defaultOpen: p["a"].bool, defaultValue: p["a"].any, showSearch: p["a"].bool, placeholder: p["a"].any, inputValue: p["a"].string, searchValue: p["a"].string, autoClearSearchValue: p["a"].bool, searchPlaceholder: p["a"].any, disabled: p["a"].bool, children: p["a"].any, labelInValue: p["a"].bool, maxTagCount: p["a"].number, maxTagPlaceholder: p["a"].oneOfType([p["a"].any, p["a"].func]), maxTagTextLength: p["a"].number, showCheckedStrategy: p["a"].oneOf([Cb, Mb, Ob]), dropdownClassName: p["a"].string, dropdownStyle: p["a"].object, dropdownVisibleChange: p["a"].func, dropdownMatchSelectWidth: p["a"].bool, treeData: p["a"].array, treeDataSimpleMode: p["a"].oneOfType([p["a"].bool, p["a"].object]), treeNodeFilterProp: p["a"].string, treeNodeLabelProp: p["a"].string, treeCheckable: p["a"].oneOfType([p["a"].any, p["a"].object, p["a"].bool]), treeCheckStrictly: p["a"].bool, treeIcon: p["a"].bool, treeLine: p["a"].bool, treeDefaultExpandAll: p["a"].bool, treeDefaultExpandedKeys: p["a"].array, treeExpandedKeys: p["a"].array, loadData: p["a"].func, filterTreeNode: p["a"].oneOfType([p["a"].func, p["a"].bool]), notFoundContent: p["a"].any, getPopupContainer: p["a"].func, allowClear: p["a"].bool, transitionName: p["a"].string, animation: p["a"].string, choiceTransitionName: p["a"].string, inputIcon: p["a"].any, clearIcon: p["a"].any, removeIcon: p["a"].any, switcherIcon: p["a"].any, __propsSymbol__: p["a"].any }, { prefixCls: "rc-tree-select", prefixAria: "rc-tree-select", showArrow: !0, showSearch: !0, autoClearSearchValue: !0, showCheckedStrategy: Ob, treeNodeFilterProp: "value", treeNodeLabelProp: "title", treeIcon: !1, notFoundContent: "Not Found", dropdownStyle: {}, dropdownVisibleChange: function () { return !0 } }), data: function () { ul()(this.$props.__propsSymbol__, "must pass __propsSymbol__"); var e = this.$props, t = e.prefixAria, n = e.defaultOpen, r = e.open; this.needSyncKeys = {}, this.selectorRef = Lb(), this.selectTriggerRef = Lb(), this.ariaId = Db(t + "-list"); var i = { _open: r || n, _valueList: [], _searchHalfCheckedKeys: [], _missValueList: [], _selectorValueList: [], _valueEntities: {}, _posEntities: new Map, _keyEntities: new Map, _searchValue: "", _prevProps: {}, _init: !0, _focused: void 0, _treeNodes: void 0, _filteredTreeNodes: void 0 }, o = this.getDerivedState(this.$props, i); return s()({}, i, o) }, provide: function () { return { vcTreeSelect: { onSelectorFocus: this.onSelectorFocus, onSelectorBlur: this.onSelectorBlur, onSelectorKeyDown: this.onComponentKeyDown, onSelectorClear: this.onSelectorClear, onMultipleSelectorRemove: this.onMultipleSelectorRemove, onTreeNodeSelect: this.onTreeNodeSelect, onTreeNodeCheck: this.onTreeNodeCheck, onPopupKeyDown: this.onComponentKeyDown, onSearchInputChange: this.onSearchInputChange, onSearchInputKeyDown: this.onSearchInputKeyDown } } }, watch: s()({}, _x(["treeData", "defaultValue", "value"]), { __propsSymbol__: function () { var e = this.getDerivedState(this.$props, this.$data); this.setState(e), this.needSyncKeys = {} }, "$data._valueList": function () { var e = this; this.$nextTick((function () { e.forcePopupAlign() })) }, "$data._open": function (e) { var t = this; setTimeout((function () { var n = t.$props.prefixCls, r = t.$data, i = r._selectorValueList, o = r._valueEntities, a = t.isMultiple(); if (!a && i.length && e && t.popup) { var s = i[0].value, c = t.popup.getTree(), l = c.domTreeNodes, u = o[s] || {}, h = u.key, f = l[h]; if (f) { var d = f.$el; io()((function () { var e = t.popup.$el, r = Sb(e, n + "-dropdown"), i = t.popup.searchRef.current; d && r && i && Xh(d, r, { onlyScrollIfNeeded: !0, offsetTop: i.offsetHeight }) })) } } })) } }), mounted: function () { var e = this; this.$nextTick((function () { var t = e.$props, n = t.autoFocus, r = t.disabled; n && !r && e.focus() })) }, methods: { getDerivedState: function (e, t) { var n = this.$createElement, r = t._prevProps, i = void 0 === r ? {} : r, o = e.treeCheckable, a = e.treeCheckStrictly, c = e.filterTreeNode, l = e.treeNodeFilterProp, u = e.treeDataSimpleMode, h = { _prevProps: s()({}, e), _init: !1 }, f = this; function d(t, n) { return !(i[t] === e[t] && !f.needSyncKeys[t]) && (n(e[t], i[t]), !0) } var p = !1; d("open", (function (e) { h._open = e })); var m = void 0, g = !1, y = !1; if (d("treeData", (function (e) { m = Wb(n, e), g = !0 })), d("treeDataSimpleMode", (function (e, t) { if (e) { var n = t && !0 !== t ? t : {}; Ns()(e, n) || (y = !0) } })), u && (g || y)) { var b = s()({ id: "id", pId: "pId", rootPId: null }, !0 !== u ? u : {}); m = Wb(n, Vb(e.treeData, b)) } if (e.treeData || (m = Object(v["c"])(this.$slots["default"])), m) { var x = Kb(m); h._treeNodes = m, h._posEntities = x.posEntities, h._valueEntities = x.valueEntities, h._keyEntities = x.keyEntities, p = !0 } if (t._init && d("defaultValue", (function (t) { h._valueList = Fb(t, e), p = !0 })), d("value", (function (t) { h._valueList = Fb(t, e), p = !0 })), p) { var w = [], _ = [], C = [], M = h._valueList; M || (M = [].concat(X()(t._valueList), X()(t._missValueList))); var O = {}; if (M.forEach((function (e) { var n = e.value, r = e.label, i = (h._valueEntities || t._valueEntities)[n]; if (O[n] = r, i) return C.push(i.key), void _.push(e); w.push(e) })), o && !a) { var k = Xb(C, !0, h._keyEntities || t._keyEntities), S = k.checkedKeys; h._valueList = S.map((function (e) { var n = (h._keyEntities || t._keyEntities).get(e).value, r = { value: n }; return void 0 !== O[n] && (r.label = O[n]), r })) } else h._valueList = _; h._missValueList = w, h._selectorValueList = $b(h._valueList, e, h._valueEntities || t._valueEntities) } if (d("inputValue", (function (e) { null !== e && (h._searchValue = e) })), d("searchValue", (function (e) { h._searchValue = e })), void 0 !== h._searchValue || t._searchValue && m) { var T = void 0 !== h._searchValue ? h._searchValue : t._searchValue, A = String(T).toUpperCase(), L = c; !1 === c ? L = function () { return !0 } : "function" !== typeof L && (L = function (e, t) { var n = String(Object(v["m"])(t)[l]).toUpperCase(); return -1 !== n.indexOf(A) }), h._filteredTreeNodes = Rb(this.$createElement, h._treeNodes || t._treeNodes, T, L, h._valueEntities || t._valueEntities, wx) } return p && o && !a && (h._searchValue || t._searchValue) && (h._searchHalfCheckedKeys = Gb(h._valueList, h._valueEntities || t._valueEntities)), d("showCheckedStrategy", (function () { h._selectorValueList = h._selectorValueList || $b(h._valueList || t._valueList, e, h._valueEntities || t._valueEntities) })), h }, onSelectorFocus: function () { this.setState({ _focused: !0 }) }, onSelectorBlur: function () { this.setState({ _focused: !1 }) }, onComponentKeyDown: function (e) { var t = this.$data._open, n = e.keyCode; t ? Io.ESC === n ? this.setOpenState(!1) : -1 !== [Io.UP, Io.DOWN, Io.LEFT, Io.RIGHT].indexOf(n) && e.stopPropagation() : -1 !== [Io.ENTER, Io.DOWN].indexOf(n) && this.setOpenState(!0) }, onDeselect: function (e, t, n) { this.__emit("deselect", e, t, n) }, onSelectorClear: function (e) { var t = this.$props.disabled; t || (this.triggerChange([], []), this.isSearchValueControlled() || this.setUncontrolledState({ _searchValue: "", _filteredTreeNodes: null }), e.stopPropagation()) }, onMultipleSelectorRemove: function (e, t) { e.stopPropagation(); var n = this.$data, r = n._valueList, i = n._missValueList, o = n._valueEntities, a = this.$props, s = a.treeCheckable, c = a.treeCheckStrictly, l = a.treeNodeLabelProp, u = a.disabled; if (!u) { var h = o[t], f = r; h && (f = s && !c ? r.filter((function (e) { var t = e.value, n = o[t]; return !Ib(n.pos, h.pos) })) : r.filter((function (e) { var n = e.value; return n !== t }))); var d = h ? h.node : null, p = { triggerValue: t, triggerNode: d }, m = { node: d }; if (s) { var g = f.map((function (e) { var t = e.value; return o[t] })); m.event = "check", m.checked = !1, m.checkedNodes = g.map((function (e) { var t = e.node; return t })), m.checkedNodesPositions = g.map((function (e) { var t = e.node, n = e.pos; return { node: t, pos: n } })), p.allCheckedNodes = c ? m.checkedNodes : Eb(g).map((function (e) { var t = e.node; return t })) } else m.event = "select", m.selected = !1, m.selectedNodes = f.map((function (e) { var t = e.value; return (o[t] || {}).node })); var y = i.filter((function (e) { var n = e.value; return n !== t })), b = void 0; b = this.isLabelInValue() ? { label: d ? Object(v["m"])(d)[l] : null, value: t } : t, this.onDeselect(b, d, m), this.triggerChange(y, f, p) } }, onValueTrigger: function (e, t, n, r) { var i = n.node, o = i.$props.value, a = this.$data, c = a._missValueList, l = a._valueEntities, u = a._keyEntities, h = a._searchValue, f = this.$props, d = f.disabled, p = f.inputValue, m = f.treeNodeLabelProp, g = f.multiple, y = f.treeCheckable, b = f.treeCheckStrictly, x = f.autoClearSearchValue, w = i.$props[m]; if (!d) { var _ = void 0; _ = this.isLabelInValue() ? { value: o, label: w } : o, e ? this.__emit("select", _, i, n) : this.__emit("deselect", _, i, n); var C = t.map((function (e) { var t = Object(v["m"])(e); return { value: t.value, label: t[m] } })); if (y && !b) { var M = C.map((function (e) { var t = e.value; return l[t].key })); M = e ? Xb(M, !0, u).checkedKeys : Xb([l[o].key], !1, u, { checkedKeys: M }).checkedKeys, C = M.map((function (e) { var t = Object(v["m"])(u.get(e).node); return { value: t.value, label: t[m] } })) } (x || null === p) && (this.isSearchValueControlled() || !g && !y || this.setUncontrolledState({ _searchValue: "", _filteredTreeNodes: null }), h && h.length && (this.__emit("update:searchValue", ""), this.__emit("search", ""))); var O = s()({}, r, { triggerValue: o, triggerNode: i }); this.triggerChange(c, C, O) } }, onTreeNodeSelect: function (e, t) { var n = this.$data, r = n._valueList, i = n._valueEntities, o = this.$props, a = o.treeCheckable, s = o.multiple; if (!a) { s || this.setOpenState(!1); var c = t.selected, l = t.node.$props.value, u = void 0; s ? (u = r.filter((function (e) { var t = e.value; return t !== l })), c && u.push({ value: l })) : u = [{ value: l }]; var h = u.map((function (e) { var t = e.value; return i[t] })).filter((function (e) { return e })).map((function (e) { var t = e.node; return t })); this.onValueTrigger(c, h, t, { selected: c }) } }, onTreeNodeCheck: function (e, t) { var n = this.$data, r = n._searchValue, i = n._keyEntities, o = n._valueEntities, a = n._valueList, s = this.$props.treeCheckStrictly, c = t.checkedNodes, l = t.checkedNodesPositions, u = t.checked, h = { checked: u }, f = c; if (r) { var d = a.map((function (e) { var t = e.value; return o[t] })).filter((function (e) { return e })).map((function (e) { var t = e.key; return t })), p = void 0; p = u ? Array.from(new Set([].concat(X()(d), X()(f.map((function (e) { var t = Object(v["m"])(e), n = t.value; return o[n].key })))))) : Xb([Object(v["m"])(t.node).eventKey], !1, i, { checkedKeys: d }).checkedKeys, f = p.map((function (e) { return i.get(e).node })), h.allCheckedNodes = p.map((function (e) { return Nb(i.get(e)) })) } else h.allCheckedNodes = s ? t.checkedNodes : Eb(l); this.onValueTrigger(u, f, t, h) }, onDropdownVisibleChange: function (e) { var t = this.$props, n = t.multiple, r = t.treeCheckable, i = this.$data._searchValue; e && !n && !r && i && this.setUncontrolledState({ _searchValue: "", _filteredTreeNodes: null }), this.setOpenState(e, !0) }, onSearchInputChange: function (e) { var t = e.target.value, n = this.$data, r = n._treeNodes, i = n._valueEntities, o = this.$props, a = o.filterTreeNode, s = o.treeNodeFilterProp; this.__emit("update:searchValue", t), this.__emit("search", t); var c = !1; if (this.isSearchValueControlled() || (c = this.setUncontrolledState({ _searchValue: t }), this.setOpenState(!0)), c) { var l = String(t).toUpperCase(), u = a; !1 === a ? u = function () { return !0 } : u || (u = function (e, t) { var n = String(Object(v["m"])(t)[s]).toUpperCase(); return -1 !== n.indexOf(l) }), this.setState({ _filteredTreeNodes: Rb(this.$createElement, r, t, u, i, wx) }) } }, onSearchInputKeyDown: function (e) { var t = this.$data, n = t._searchValue, r = t._valueList, i = e.keyCode; if (Io.BACKSPACE === i && this.isMultiple() && !n && r.length) { var o = r[r.length - 1].value; this.onMultipleSelectorRemove(e, o) } }, onChoiceAnimationLeave: function () { var e = this; io()((function () { e.forcePopupAlign() })) }, setPopupRef: function (e) { this.popup = e }, setUncontrolledState: function (e) { var t = !1, n = {}, r = Object(v["l"])(this); return Object.keys(e).forEach((function (i) { i.slice(1) in r || (t = !0, n[i] = e[i]) })), t && this.setState(n), t }, setOpenState: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = this.$props.dropdownVisibleChange; n && !1 === n(e, { documentClickClose: !e && t }) || this.setUncontrolledState({ _open: e }) }, isMultiple: function () { var e = this.$props, t = e.multiple, n = e.treeCheckable; return !(!t && !n) }, isLabelInValue: function () { return Hb(this.$props) }, isSearchValueControlled: function () { var e = Object(v["l"])(this), t = e.inputValue; return "searchValue" in e || "inputValue" in e && null !== t }, forcePopupAlign: function () { var e = this.selectTriggerRef.current; e && e.forcePopupAlign() }, delayForcePopupAlign: function () { var e = this; io()((function () { io()(e.forcePopupAlign) })) }, triggerChange: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, r = this.$data, i = r._valueEntities, o = r._searchValue, a = r._selectorValueList, c = Object(v["l"])(this), l = c.disabled, u = c.treeCheckable, h = c.treeCheckStrictly; if (!l) { var f = s()({ preValue: a.map((function (e) { var t = e.label, n = e.value; return { label: t, value: n } })) }, n), d = $b(t, c, i); if (!("value" in c)) { var p = { _missValueList: e, _valueList: t, _selectorValueList: d }; o && u && !h && (p._searchHalfCheckedKeys = Gb(t, i)), this.setState(p) } if (Object(v["k"])(this).change) { var m = void 0; m = this.isMultiple() ? [].concat(X()(e), X()(d)) : d.slice(0, 1); var g = null, y = void 0; this.isLabelInValue() ? y = m.map((function (e) { var t = e.label, n = e.value; return { label: t, value: n } })) : (g = [], y = m.map((function (e) { var t = e.label, n = e.value; return g.push(t), n }))), this.isMultiple() || (y = y[0]), this.__emit("change", y, g, f) } } }, focus: function () { this.selectorRef.current.focus() }, blur: function () { this.selectorRef.current.blur() } }, render: function () { var e = arguments[0], t = this.$data, n = t._valueList, r = t._missValueList, i = t._selectorValueList, o = t._searchHalfCheckedKeys, a = t._valueEntities, c = t._keyEntities, l = t._searchValue, u = t._open, h = t._focused, f = t._treeNodes, d = t._filteredTreeNodes, p = Object(v["l"])(this), m = p.prefixCls, g = p.treeExpandedKeys, y = this.isMultiple(), b = { props: s()({}, p, { isMultiple: y, valueList: n, searchHalfCheckedKeys: o, selectorValueList: [].concat(X()(r), X()(i)), valueEntities: a, keyEntities: c, searchValue: l, upperSearchValue: (l || "").toUpperCase(), open: u, focused: h, dropdownPrefixCls: m + "-dropdown", ariaId: this.ariaId }), on: s()({}, Object(v["k"])(this), { choiceAnimationLeave: this.onChoiceAnimationLeave }), scopedSlots: this.$scopedSlots }, x = Object(v["w"])(b, { props: { treeNodes: f, filteredTreeNodes: d, treeExpandedKeys: g, __propsSymbol__: Symbol() }, on: { treeExpanded: this.delayForcePopupAlign }, directives: [{ name: "ant-ref", value: this.setPopupRef }] }), w = y ? xx : bx, _ = e(w, x), C = y ? dx : ox, M = e(C, K()([b, { directives: [{ name: "ant-ref", value: this.selectorRef }] }])), O = Object(v["w"])(b, { props: { popupElement: _, dropdownVisibleChange: this.onDropdownVisibleChange }, directives: [{ name: "ant-ref", value: this.selectTriggerRef }] }); return e(Zb, O, [M]) } }; Cx.TreeNode = wx, Cx.SHOW_ALL = Cb, Cx.SHOW_PARENT = Mb, Cx.SHOW_CHILD = Ob, Cx.name = "TreeSelect"; var Mx = Cx, Ox = wx, kx = Mx; d.a.use(_.a, { name: "ant-ref" }); var Sx = kx, Tx = (p["a"].shape({ key: p["a"].string, value: p["a"].string, label: p["a"].any, scopedSlots: p["a"].object, children: p["a"].array }).loose, function () { return s()({}, Hd(), { autoFocus: p["a"].bool, dropdownStyle: p["a"].object, filterTreeNode: p["a"].oneOfType([Function, Boolean]), getPopupContainer: p["a"].func, labelInValue: p["a"].bool, loadData: p["a"].func, maxTagCount: p["a"].number, maxTagPlaceholder: p["a"].any, value: p["a"].oneOfType([p["a"].string, p["a"].object, p["a"].array, p["a"].number]), defaultValue: p["a"].oneOfType([p["a"].string, p["a"].object, p["a"].array, p["a"].number]), multiple: p["a"].bool, notFoundContent: p["a"].any, searchPlaceholder: p["a"].string, searchValue: p["a"].string, showCheckedStrategy: p["a"].oneOf(["SHOW_ALL", "SHOW_PARENT", "SHOW_CHILD"]), suffixIcon: p["a"].any, treeCheckable: p["a"].oneOfType([p["a"].any, p["a"].bool]), treeCheckStrictly: p["a"].bool, treeData: p["a"].arrayOf(Object), treeDataSimpleMode: p["a"].oneOfType([Boolean, Object]), dropdownClassName: p["a"].string, dropdownMatchSelectWidth: p["a"].bool, treeDefaultExpandAll: p["a"].bool, treeExpandedKeys: p["a"].array, treeIcon: p["a"].bool, treeDefaultExpandedKeys: p["a"].array, treeNodeFilterProp: p["a"].string, treeNodeLabelProp: p["a"].string, replaceFields: p["a"].object.def({}) }) }), Ax = { TreeNode: s()({}, Ox, { name: "ATreeSelectNode" }), SHOW_ALL: Cb, SHOW_PARENT: Mb, SHOW_CHILD: Ob, name: "ATreeSelect", props: Object(v["t"])(Tx(), { transitionName: "slide-up", choiceTransitionName: "zoom", showSearch: !1 }), model: { prop: "value", event: "change" }, inject: { configProvider: { default: function () { return Vt } } }, created: function () { fe(!1 !== this.multiple || !this.treeCheckable, "TreeSelect", "`multiple` will alway be `true` when `treeCheckable` is true") }, methods: { focus: function () { this.$refs.vcTreeSelect.focus() }, blur: function () { this.$refs.vcTreeSelect.blur() }, renderSwitcherIcon: function (e, t) { var n = t.isLeaf, r = t.loading, i = this.$createElement; return r ? i(Ve, { attrs: { type: "loading" }, class: e + "-switcher-loading-icon" }) : n ? null : i(Ve, { attrs: { type: "caret-down" }, class: e + "-switcher-icon" }) }, onChange: function () { this.$emit.apply(this, ["change"].concat(Array.prototype.slice.call(arguments))) }, updateTreeData: function (e) { var t = this, n = this.$scopedSlots, r = { children: "children", title: "title", key: "key", label: "label", value: "value" }, i = s()({}, r, this.$props.replaceFields); return e.map((function (e) { var r = e.scopedSlots, o = void 0 === r ? {} : r, a = e[i.label], c = e[i.title], l = e[i.value], u = e[i.key], h = e[i.children], f = "function" === typeof a ? a(t.$createElement) : a, d = "function" === typeof c ? c(t.$createElement) : c; !f && o.label && n[o.label] && (f = n[o.label](e)), !d && o.title && n[o.title] && (d = n[o.title](e)); var p = s()({}, e, { title: d || f, value: l, dataRef: e, key: u }); return h ? s()({}, p, { children: t.updateTreeData(h) }) : p })) } }, render: function (e) { var t, n = this, r = Object(v["l"])(this), i = r.prefixCls, o = r.size, a = r.dropdownStyle, c = r.dropdownClassName, u = r.getPopupContainer, f = l()(r, ["prefixCls", "size", "dropdownStyle", "dropdownClassName", "getPopupContainer"]), d = this.configProvider.getPrefixCls, p = d("select", i), m = this.configProvider.renderEmpty, g = Object(v["g"])(this, "notFoundContent"), y = Object(v["g"])(this, "removeIcon"), b = Object(v["g"])(this, "clearIcon"), x = this.configProvider.getPopupContainer, w = Object(Qi["a"])(f, ["inputIcon", "removeIcon", "clearIcon", "switcherIcon", "suffixIcon"]), _ = Object(v["g"])(this, "suffixIcon"); _ = Array.isArray(_) ? _[0] : _; var C = r.treeData; C && (C = this.updateTreeData(C)); var M = (t = {}, h()(t, p + "-lg", "large" === o), h()(t, p + "-sm", "small" === o), t), O = f.showSearch; "showSearch" in f || (O = !(!f.multiple && !f.treeCheckable)); var k = Object(v["g"])(this, "treeCheckable"); k && (k = e("span", { class: p + "-tree-checkbox-inner" })); var S = _ || e(Ve, { attrs: { type: "down" }, class: p + "-arrow-icon" }), T = y || e(Ve, { attrs: { type: "close" }, class: p + "-remove-icon" }), A = b || e(Ve, { attrs: { type: "close-circle", theme: "filled" }, class: p + "-clear-icon" }), L = { props: s()(s()({ switcherIcon: function (e) { return n.renderSwitcherIcon(p, e) }, inputIcon: S, removeIcon: T, clearIcon: A }, w, { showSearch: O, getPopupContainer: u || x, dropdownClassName: Q()(c, p + "-tree-dropdown"), prefixCls: p, dropdownStyle: s()({ maxHeight: "100vh", overflow: "auto" }, a), treeCheckable: k, notFoundContent: g || m(e, "Select"), __propsSymbol__: Symbol() }), C ? { treeData: C } : {}), class: M, on: s()({}, Object(v["k"])(this), { change: this.onChange }), ref: "vcTreeSelect", scopedSlots: this.$scopedSlots }; return e(Sx, L, [Object(v["c"])(this.$slots["default"])]) }, install: function (e) { e.use(N), e.component(Ax.name, Ax), e.component(Ax.TreeNode.name, Ax.TreeNode) } }, Lx = Ax, jx = (n("81ff"), { prefixCls: p["a"].string, disabled: p["a"].bool.def(!1), checkedChildren: p["a"].any, unCheckedChildren: p["a"].any, tabIndex: p["a"].oneOfType([p["a"].string, p["a"].number]), checked: p["a"].bool.def(!1), defaultChecked: p["a"].bool.def(!1), autoFocus: p["a"].bool.def(!1), loadingIcon: p["a"].any }), zx = { name: "VcSwitch", mixins: [m["a"]], model: { prop: "checked", event: "change" }, props: s()({}, jx, { prefixCls: jx.prefixCls.def("rc-switch") }), data: function () { var e = !1; return e = Object(v["s"])(this, "checked") ? !!this.checked : !!this.defaultChecked, { stateChecked: e } }, watch: { checked: function (e) { this.stateChecked = e } }, mounted: function () { var e = this; this.$nextTick((function () { var t = e.autoFocus, n = e.disabled; t && !n && e.focus() })) }, methods: { setChecked: function (e, t) { this.disabled || (Object(v["s"])(this, "checked") || (this.stateChecked = e), this.$emit("change", e, t)) }, handleClick: function (e) { var t = !this.stateChecked; this.setChecked(t, e), this.$emit("click", t, e) }, handleKeyDown: function (e) { 37 === e.keyCode ? this.setChecked(!1, e) : 39 === e.keyCode && this.setChecked(!0, e) }, handleMouseUp: function (e) { this.$refs.refSwitchNode && this.$refs.refSwitchNode.blur(), this.$emit("mouseup", e) }, focus: function () { this.$refs.refSwitchNode.focus() }, blur: function () { this.$refs.refSwitchNode.blur() } }, render: function () { var e, t = arguments[0], n = Object(v["l"])(this), r = n.prefixCls, i = n.disabled, o = n.loadingIcon, a = n.tabIndex, c = l()(n, ["prefixCls", "disabled", "loadingIcon", "tabIndex"]), u = this.stateChecked, f = (e = {}, h()(e, r, !0), h()(e, r + "-checked", u), h()(e, r + "-disabled", i), e), d = { props: s()({}, c), on: s()({}, Object(v["k"])(this), { keydown: this.handleKeyDown, click: this.handleClick, mouseup: this.handleMouseUp }), attrs: { type: "button", role: "switch", "aria-checked": u, disabled: i, tabIndex: a }, class: f, ref: "refSwitchNode" }; return t("button", d, [o, t("span", { class: r + "-inner" }, [u ? Object(v["g"])(this, "checkedChildren") : Object(v["g"])(this, "unCheckedChildren")])]) } }, Ex = zx, Px = { name: "ASwitch", __ANT_SWITCH: !0, model: { prop: "checked", event: "change" }, props: { prefixCls: p["a"].string, size: p["a"].oneOf(["small", "default", "large"]), disabled: p["a"].bool, checkedChildren: p["a"].any, unCheckedChildren: p["a"].any, tabIndex: p["a"].oneOfType([p["a"].string, p["a"].number]), checked: p["a"].bool, defaultChecked: p["a"].bool, autoFocus: p["a"].bool, loading: p["a"].bool }, inject: { configProvider: { default: function () { return Vt } } }, methods: { focus: function () { this.$refs.refSwitchNode.focus() }, blur: function () { this.$refs.refSwitchNode.blur() } }, created: function () { fe(Object(v["b"])(this, "checked") || !Object(v["b"])(this, "value"), "Switch", "`value` is not validate prop, do you mean `checked`?") }, render: function () { var e, t = arguments[0], n = Object(v["l"])(this), r = n.prefixCls, i = n.size, o = n.loading, a = n.disabled, c = l()(n, ["prefixCls", "size", "loading", "disabled"]), u = this.configProvider.getPrefixCls, f = u("switch", r), d = (e = {}, h()(e, f + "-small", "small" === i), h()(e, f + "-loading", o), e), p = o ? t(Ve, { attrs: { type: "loading" }, class: f + "-loading-icon" }) : null, m = { props: s()({}, c, { prefixCls: f, loadingIcon: p, checkedChildren: Object(v["g"])(this, "checkedChildren"), unCheckedChildren: Object(v["g"])(this, "unCheckedChildren"), disabled: a || o }), on: Object(v["k"])(this), class: d, ref: "refSwitchNode" }; return t(Us, { attrs: { insertExtraNode: !0 } }, [t(Ex, m)]) }, install: function (e) { e.use(N), e.component(Px.name, Px) } }, Dx = Px, Hx = (n("7b81"), { functional: !0, render: function (e, t) { var n, r, i = t.props, o = i.included, a = i.vertical, c = i.offset, l = i.length, u = i.reverse, f = t.data, d = f.style, p = f["class"], v = a ? (n = {}, h()(n, u ? "top" : "bottom", c + "%"), h()(n, u ? "bottom" : "top", "auto"), h()(n, "height", l + "%"), n) : (r = {}, h()(r, u ? "right" : "left", c + "%"), h()(r, u ? "left" : "right", "auto"), h()(r, "width", l + "%"), r), m = s()({}, d, v); return o ? e("div", { class: p, style: m }) : null } }), Vx = Hx, Ix = function (e, t, n, r, i, o) { fe(!n || r > 0, "Slider", "`Slider[step]` should be a positive number in order to make Slider[dots] work."); var a = Object.keys(t).map(parseFloat).sort((function (e, t) { return e - t })); if (n && r) for (var s = i; s <= o; s += r)-1 === a.indexOf(s) && a.push(s); return a }, Nx = { functional: !0, render: function (e, t) { var n = t.props, r = n.prefixCls, i = n.vertical, o = n.reverse, a = n.marks, c = n.dots, l = n.step, u = n.included, f = n.lowerBound, d = n.upperBound, p = n.max, v = n.min, m = n.dotStyle, g = n.activeDotStyle, y = p - v, b = Ix(i, a, c, l, v, p).map((function (t) { var n, a = Math.abs(t - v) / y * 100 + "%", c = !u && t === d || u && t <= d && t >= f, l = i ? s()({}, m, h()({}, o ? "top" : "bottom", a)) : s()({}, m, h()({}, o ? "right" : "left", a)); c && (l = s()({}, l, g)); var p = Q()((n = {}, h()(n, r + "-dot", !0), h()(n, r + "-dot-active", c), h()(n, r + "-dot-reverse", o), n)); return e("span", { class: p, style: l, key: t }) })); return e("div", { class: r + "-step" }, [b]) } }, Rx = Nx, Fx = { functional: !0, render: function (e, t) { var n = t.props, r = n.className, i = n.vertical, o = n.reverse, a = n.marks, c = n.included, l = n.upperBound, u = n.lowerBound, f = n.max, d = n.min, p = t.listeners.clickLabel, m = Object.keys(a), g = f - d, y = m.map(parseFloat).sort((function (e, t) { return e - t })).map((function (t) { var n, f = "function" === typeof a[t] ? a[t](e) : a[t], m = "object" === ("undefined" === typeof f ? "undefined" : Tt()(f)) && !Object(v["v"])(f), y = m ? f.label : f; if (!y && 0 !== y) return null; var b = !c && t === l || c && t <= l && t >= u, x = Q()((n = {}, h()(n, r + "-text", !0), h()(n, r + "-text-active", b), n)), w = h()({ marginBottom: "-50%" }, o ? "top" : "bottom", (t - d) / g * 100 + "%"), _ = h()({ transform: "translateX(-50%)", msTransform: "translateX(-50%)" }, o ? "right" : "left", o ? (t - d / 4) / g * 100 + "%" : (t - d) / g * 100 + "%"), C = i ? w : _, M = m ? s()({}, C, f.style) : C; return e("span", { class: x, style: M, key: t, on: { mousedown: function (e) { return p(e, t) }, touchstart: function (e) { return p(e, t) } } }, [y]) })); return e("div", { class: r }, [y]) } }, Yx = Fx, $x = { name: "Handle", mixins: [m["a"]], props: { prefixCls: p["a"].string, vertical: p["a"].bool, offset: p["a"].number, disabled: p["a"].bool, min: p["a"].number, max: p["a"].number, value: p["a"].number, tabIndex: p["a"].number, className: p["a"].string, reverse: p["a"].bool }, data: function () { return { clickFocused: !1 } }, mounted: function () { this.onMouseUpListener = sn(document, "mouseup", this.handleMouseUp) }, beforeDestroy: function () { this.onMouseUpListener && this.onMouseUpListener.remove() }, methods: { setClickFocus: function (e) { this.setState({ clickFocused: e }) }, handleMouseUp: function () { document.activeElement === this.$refs.handle && this.setClickFocus(!0) }, handleBlur: function (e) { this.setClickFocus(!1), this.__emit("blur", e) }, handleKeyDown: function () { this.setClickFocus(!1) }, clickFocus: function () { this.setClickFocus(!0), this.focus() }, focus: function () { this.$refs.handle.focus() }, blur: function () { this.$refs.handle.blur() }, handleMousedown: function (e) { this.focus(), this.__emit("mousedown", e) } }, render: function () { var e, t, n = arguments[0], r = Object(v["l"])(this), i = r.prefixCls, o = r.vertical, a = r.reverse, c = r.offset, l = r.disabled, u = r.min, f = r.max, d = r.value, p = r.tabIndex, m = Q()(this.$props.className, h()({}, i + "-handle-click-focused", this.clickFocused)), g = o ? (e = {}, h()(e, a ? "top" : "bottom", c + "%"), h()(e, a ? "bottom" : "top", "auto"), h()(e, "transform", "translateY(+50%)"), e) : (t = {}, h()(t, a ? "right" : "left", c + "%"), h()(t, a ? "left" : "right", "auto"), h()(t, "transform", "translateX(" + (a ? "+" : "-") + "50%)"), t), y = { "aria-valuemin": u, "aria-valuemax": f, "aria-valuenow": d, "aria-disabled": !!l }, b = p || 0; (l || null === p) && (b = null); var x = { attrs: s()({ role: "slider", tabIndex: b }, y), class: m, on: s()({}, Object(v["k"])(this), { blur: this.handleBlur, keydown: this.handleKeyDown, mousedown: this.handleMousedown }), ref: "handle", style: g }; return n("div", x) } }; function Bx(e, t) { try { return Object.keys(t).some((function (n) { return e.target === t[n].$el || e.target === t[n] })) } catch (n) { return !1 } } function Wx(e, t) { var n = t.min, r = t.max; return e < n || e > r } function qx(e) { return e.touches.length > 1 || "touchend" === e.type.toLowerCase() && e.touches.length > 0 } function Ux(e, t) { var n = t.marks, r = t.step, i = t.min, o = t.max, a = Object.keys(n).map(parseFloat); if (null !== r) { var s = Math.pow(10, Kx(r)), c = Math.floor((o * s - i * s) / (r * s)), l = Math.min((e - i) / r, c), u = Math.round(l) * r + i; a.push(u) } var h = a.map((function (t) { return Math.abs(e - t) })); return a[h.indexOf(Math.min.apply(Math, X()(h)))] } function Kx(e) { var t = e.toString(), n = 0; return t.indexOf(".") >= 0 && (n = t.length - t.indexOf(".") - 1), n } function Gx(e, t) { var n = 1; return window.visualViewport && (n = +(window.visualViewport.width / document.body.getBoundingClientRect().width).toFixed(2)), (e ? t.clientY : t.pageX) / n } function Xx(e, t) { var n = 1; return window.visualViewport && (n = +(window.visualViewport.width / document.body.getBoundingClientRect().width).toFixed(2)), (e ? t.touches[0].clientY : t.touches[0].pageX) / n } function Jx(e, t) { var n = t.getBoundingClientRect(); return e ? n.top + .5 * n.height : window.pageXOffset + n.left + .5 * n.width } function Qx(e, t) { var n = t.max, r = t.min; return e <= r ? r : e >= n ? n : e } function Zx(e, t) { var n = t.step, r = isFinite(Ux(e, t)) ? Ux(e, t) : 0; return null === n ? r : parseFloat(r.toFixed(Kx(n))) } function ew(e) { e.stopPropagation(), e.preventDefault() } function tw(e, t, n) { var r = { increase: function (e, t) { return e + t }, decrease: function (e, t) { return e - t } }, i = r[e](Object.keys(n.marks).indexOf(JSON.stringify(t)), 1), o = Object.keys(n.marks)[i]; return n.step ? r[e](t, n.step) : Object.keys(n.marks).length && n.marks[o] ? n.marks[o] : t } function nw(e, t, n) { var r = "increase", i = "decrease", o = r; switch (e.keyCode) { case Io.UP: o = t && n ? i : r; break; case Io.RIGHT: o = !t && n ? i : r; break; case Io.DOWN: o = t && n ? r : i; break; case Io.LEFT: o = !t && n ? r : i; break; case Io.END: return function (e, t) { return t.max }; case Io.HOME: return function (e, t) { return t.min }; case Io.PAGE_UP: return function (e, t) { return e + 2 * t.step }; case Io.PAGE_DOWN: return function (e, t) { return e - 2 * t.step }; default: return }return function (e, t) { return tw(o, e, t) } } function rw() { } function iw(e) { var t = { min: p["a"].number, max: p["a"].number, step: p["a"].number, marks: p["a"].object, included: p["a"].bool, prefixCls: p["a"].string, disabled: p["a"].bool, handle: p["a"].func, dots: p["a"].bool, vertical: p["a"].bool, reverse: p["a"].bool, minimumTrackStyle: p["a"].object, maximumTrackStyle: p["a"].object, handleStyle: p["a"].oneOfType([p["a"].object, p["a"].arrayOf(p["a"].object)]), trackStyle: p["a"].oneOfType([p["a"].object, p["a"].arrayOf(p["a"].object)]), railStyle: p["a"].object, dotStyle: p["a"].object, activeDotStyle: p["a"].object, autoFocus: p["a"].bool }; return { name: "createSlider", mixins: [e], model: { prop: "value", event: "change" }, props: Object(v["t"])(t, { prefixCls: "rc-slider", min: 0, max: 100, step: 1, marks: {}, included: !0, disabled: !1, dots: !1, vertical: !1, reverse: !1, trackStyle: [{}], handleStyle: [{}], railStyle: {}, dotStyle: {}, activeDotStyle: {} }), data: function () { var e = this.step, t = this.max, n = this.min, r = !isFinite(t - n) || (t - n) % e === 0; return fe(!e || Math.floor(e) !== e || r, "Slider", "Slider[max] - Slider[min] (%s) should be a multiple of Slider[step] (%s)", t - n, e), this.handlesRefs = {}, {} }, mounted: function () { var e = this; this.$nextTick((function () { e.document = e.$refs.sliderRef && e.$refs.sliderRef.ownerDocument; var t = e.autoFocus, n = e.disabled; t && !n && e.focus() })) }, beforeDestroy: function () { var e = this; this.$nextTick((function () { e.removeDocumentEvents() })) }, methods: { defaultHandle: function (e) { var t = e.index, n = e.directives, r = e.className, i = e.style, o = e.on, a = l()(e, ["index", "directives", "className", "style", "on"]), c = this.$createElement; if (delete a.dragging, null === a.value) return null; var u = { props: s()({}, a), class: r, style: i, key: t, directives: n, on: o }; return c($x, u) }, onMouseDown: function (e) { if (0 === e.button) { var t = this.vertical, n = Gx(t, e); if (Bx(e, this.handlesRefs)) { var r = Jx(t, e.target); this.dragOffset = n - r, n = r } else this.dragOffset = 0; this.removeDocumentEvents(), this.onStart(n), this.addDocumentMouseEvents(), ew(e) } }, onTouchStart: function (e) { if (!qx(e)) { var t = this.vertical, n = Xx(t, e); if (Bx(e, this.handlesRefs)) { var r = Jx(t, e.target); this.dragOffset = n - r, n = r } else this.dragOffset = 0; this.onStart(n), this.addDocumentTouchEvents(), ew(e) } }, onFocus: function (e) { var t = this.vertical; if (Bx(e, this.handlesRefs)) { var n = Jx(t, e.target); this.dragOffset = 0, this.onStart(n), ew(e), this.$emit("focus", e) } }, onBlur: function (e) { this.onEnd(), this.$emit("blur", e) }, onMouseUp: function () { this.handlesRefs[this.prevMovedHandleIndex] && this.handlesRefs[this.prevMovedHandleIndex].clickFocus() }, onMouseMove: function (e) { if (this.$refs.sliderRef) { var t = Gx(this.vertical, e); this.onMove(e, t - this.dragOffset) } else this.onEnd() }, onTouchMove: function (e) { if (!qx(e) && this.$refs.sliderRef) { var t = Xx(this.vertical, e); this.onMove(e, t - this.dragOffset) } else this.onEnd() }, onKeyDown: function (e) { this.$refs.sliderRef && Bx(e, this.handlesRefs) && this.onKeyboard(e) }, onClickMarkLabel: function (e, t) { var n = this; e.stopPropagation(), this.onChange({ sValue: t }), this.setState({ sValue: t }, (function () { return n.onEnd(!0) })) }, getSliderStart: function () { var e = this.$refs.sliderRef, t = this.vertical, n = this.reverse, r = e.getBoundingClientRect(); return t ? n ? r.bottom : r.top : window.pageXOffset + (n ? r.right : r.left) }, getSliderLength: function () { var e = this.$refs.sliderRef; if (!e) return 0; var t = e.getBoundingClientRect(); return this.vertical ? t.height : t.width }, addDocumentTouchEvents: function () { this.onTouchMoveListener = sn(this.document, "touchmove", this.onTouchMove), this.onTouchUpListener = sn(this.document, "touchend", this.onEnd) }, addDocumentMouseEvents: function () { this.onMouseMoveListener = sn(this.document, "mousemove", this.onMouseMove), this.onMouseUpListener = sn(this.document, "mouseup", this.onEnd) }, removeDocumentEvents: function () { this.onTouchMoveListener && this.onTouchMoveListener.remove(), this.onTouchUpListener && this.onTouchUpListener.remove(), this.onMouseMoveListener && this.onMouseMoveListener.remove(), this.onMouseUpListener && this.onMouseUpListener.remove() }, focus: function () { this.disabled || this.handlesRefs[0].focus() }, blur: function () { var e = this; this.disabled || Object.keys(this.handlesRefs).forEach((function (t) { e.handlesRefs[t] && e.handlesRefs[t].blur && e.handlesRefs[t].blur() })) }, calcValue: function (e) { var t = this.vertical, n = this.min, r = this.max, i = Math.abs(Math.max(e, 0) / this.getSliderLength()), o = t ? (1 - i) * (r - n) + n : i * (r - n) + n; return o }, calcValueByPos: function (e) { var t = this.reverse ? -1 : 1, n = t * (e - this.getSliderStart()), r = this.trimAlignValue(this.calcValue(n)); return r }, calcOffset: function (e) { var t = this.min, n = this.max, r = (e - t) / (n - t); return 100 * r }, saveHandle: function (e, t) { this.handlesRefs[e] = t } }, render: function (e) { var t, n = this.prefixCls, r = this.marks, i = this.dots, o = this.step, a = this.included, c = this.disabled, l = this.vertical, u = this.reverse, f = this.min, d = this.max, p = this.maximumTrackStyle, v = this.railStyle, m = this.dotStyle, g = this.activeDotStyle, y = this.renderSlider(e), b = y.tracks, x = y.handles, w = Q()(n, (t = {}, h()(t, n + "-with-marks", Object.keys(r).length), h()(t, n + "-disabled", c), h()(t, n + "-vertical", l), t)), _ = { props: { vertical: l, marks: r, included: a, lowerBound: this.getLowerBound(), upperBound: this.getUpperBound(), max: d, min: f, reverse: u, className: n + "-mark" }, on: { clickLabel: c ? rw : this.onClickMarkLabel } }; return e("div", { ref: "sliderRef", attrs: { tabIndex: "-1" }, class: w, on: { touchstart: c ? rw : this.onTouchStart, mousedown: c ? rw : this.onMouseDown, mouseup: c ? rw : this.onMouseUp, keydown: c ? rw : this.onKeyDown, focus: c ? rw : this.onFocus, blur: c ? rw : this.onBlur } }, [e("div", { class: n + "-rail", style: s()({}, p, v) }), b, e(Rx, { attrs: { prefixCls: n, vertical: l, reverse: u, marks: r, dots: i, step: o, included: a, lowerBound: this.getLowerBound(), upperBound: this.getUpperBound(), max: d, min: f, dotStyle: m, activeDotStyle: g } }), x, e(Yx, _), this.$slots["default"]]) } } } var ow = { name: "Slider", mixins: [m["a"]], props: { defaultValue: p["a"].number, value: p["a"].number, disabled: p["a"].bool, autoFocus: p["a"].bool, tabIndex: p["a"].number, reverse: p["a"].bool, min: p["a"].number, max: p["a"].number }, data: function () { var e = void 0 !== this.defaultValue ? this.defaultValue : this.min, t = void 0 !== this.value ? this.value : e; return fe(!Object(v["s"])(this, "minimumTrackStyle"), "Slider", "minimumTrackStyle will be deprecate, please use trackStyle instead."), fe(!Object(v["s"])(this, "maximumTrackStyle"), "Slider", "maximumTrackStyle will be deprecate, please use railStyle instead."), { sValue: this.trimAlignValue(t), dragging: !1 } }, watch: { value: { handler: function (e) { this.setChangeValue(e) }, deep: !0 }, min: function () { var e = this.sValue; this.setChangeValue(e) }, max: function () { var e = this.sValue; this.setChangeValue(e) } }, methods: { setChangeValue: function (e) { var t = void 0 !== e ? e : this.sValue, n = this.trimAlignValue(t, this.$props); n !== this.sValue && (this.setState({ sValue: n }), Wx(t, this.$props) && this.$emit("change", n)) }, onChange: function (e) { var t = !Object(v["s"])(this, "value"), n = e.sValue > this.max ? s()({}, e, { sValue: this.max }) : e; t && this.setState(n); var r = n.sValue; this.$emit("change", r) }, onStart: function (e) { this.setState({ dragging: !0 }); var t = this.sValue; this.$emit("beforeChange", t); var n = this.calcValueByPos(e); this.startValue = n, this.startPosition = e, n !== t && (this.prevMovedHandleIndex = 0, this.onChange({ sValue: n })) }, onEnd: function (e) { var t = this.dragging; this.removeDocumentEvents(), (t || e) && this.$emit("afterChange", this.sValue), this.setState({ dragging: !1 }) }, onMove: function (e, t) { ew(e); var n = this.sValue, r = this.calcValueByPos(t); r !== n && this.onChange({ sValue: r }) }, onKeyboard: function (e) { var t = this.$props, n = t.reverse, r = t.vertical, i = nw(e, r, n); if (i) { ew(e); var o = this.sValue, a = i(o, this.$props), s = this.trimAlignValue(a); if (s === o) return; this.onChange({ sValue: s }), this.$emit("afterChange", s), this.onEnd() } }, getLowerBound: function () { return this.min }, getUpperBound: function () { return this.sValue }, trimAlignValue: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; if (null === e) return null; var n = s()({}, this.$props, t), r = Qx(e, n); return Zx(r, n) }, getTrack: function (e) { var t = e.prefixCls, n = e.reverse, r = e.vertical, i = e.included, o = e.offset, a = e.minimumTrackStyle, c = e._trackStyle, l = this.$createElement; return l(Vx, { class: t + "-track", attrs: { vertical: r, included: i, offset: 0, reverse: n, length: o }, style: s()({}, a, c) }) }, renderSlider: function () { var e = this, t = this.prefixCls, n = this.vertical, r = this.included, i = this.disabled, o = this.minimumTrackStyle, a = this.trackStyle, s = this.handleStyle, c = this.tabIndex, l = this.min, u = this.max, h = this.reverse, f = this.handle, d = this.defaultHandle, p = f || d, v = this.sValue, m = this.dragging, g = this.calcOffset(v), y = p({ className: t + "-handle", prefixCls: t, vertical: n, offset: g, value: v, dragging: m, disabled: i, min: l, max: u, reverse: h, index: 0, tabIndex: c, style: s[0] || s, directives: [{ name: "ant-ref", value: function (t) { return e.saveHandle(0, t) } }], on: { focus: this.onFocus, blur: this.onBlur } }), b = a[0] || a; return { tracks: this.getTrack({ prefixCls: t, reverse: h, vertical: n, included: r, offset: g, minimumTrackStyle: o, _trackStyle: b }), handles: y } } } }, aw = iw(ow), sw = function (e) { var t = e.value, n = e.handle, r = e.bounds, i = e.props, o = i.allowCross, a = i.pushable, s = Number(a), c = Qx(t, i), l = c; return o || null == n || void 0 === r || (n > 0 && c <= r[n - 1] + s && (l = r[n - 1] + s), n < r.length - 1 && c >= r[n + 1] - s && (l = r[n + 1] - s)), Zx(l, i) }, cw = { defaultValue: p["a"].arrayOf(p["a"].number), value: p["a"].arrayOf(p["a"].number), count: p["a"].number, pushable: p["a"].oneOfType([p["a"].bool, p["a"].number]), allowCross: p["a"].bool, disabled: p["a"].bool, reverse: p["a"].bool, tabIndex: p["a"].arrayOf(p["a"].number), prefixCls: p["a"].string, min: p["a"].number, max: p["a"].number, autoFocus: p["a"].bool }, lw = { name: "Range", displayName: "Range", mixins: [m["a"]], props: Object(v["t"])(cw, { count: 1, allowCross: !0, pushable: !1, tabIndex: [] }), data: function () { var e = this, t = this.count, n = this.min, r = this.max, i = Array.apply(void 0, X()(Array(t + 1))).map((function () { return n })), o = Object(v["s"])(this, "defaultValue") ? this.defaultValue : i, a = this.value; void 0 === a && (a = o); var s = a.map((function (t, n) { return sw({ value: t, handle: n, props: e.$props }) })), c = s[0] === r ? 0 : s.length - 1; return { sHandle: null, recent: c, bounds: s } }, watch: { value: { handler: function (e) { var t = this.bounds; this.setChangeValue(e || t) }, deep: !0 }, min: function () { var e = this.value; this.setChangeValue(e || this.bounds) }, max: function () { var e = this.value; this.setChangeValue(e || this.bounds) } }, methods: { setChangeValue: function (e) { var t = this, n = this.bounds, r = e.map((function (e, r) { return sw({ value: e, handle: r, bounds: n, props: t.$props }) })); if ((r.length !== n.length || !r.every((function (e, t) { return e === n[t] }))) && (this.setState({ bounds: r }), e.some((function (e) { return Wx(e, t.$props) })))) { var i = e.map((function (e) { return Qx(e, t.$props) })); this.$emit("change", i) } }, onChange: function (e) { var t = !Object(v["s"])(this, "value"); if (t) this.setState(e); else { var n = {};["sHandle", "recent"].forEach((function (t) { void 0 !== e[t] && (n[t] = e[t]) })), Object.keys(n).length && this.setState(n) } var r = s()({}, this.$data, e), i = r.bounds; this.$emit("change", i) }, onStart: function (e) { var t = this.bounds; this.$emit("beforeChange", t); var n = this.calcValueByPos(e); this.startValue = n, this.startPosition = e; var r = this.getClosestBound(n); this.prevMovedHandleIndex = this.getBoundNeedMoving(n, r), this.setState({ sHandle: this.prevMovedHandleIndex, recent: this.prevMovedHandleIndex }); var i = t[this.prevMovedHandleIndex]; if (n !== i) { var o = [].concat(X()(t)); o[this.prevMovedHandleIndex] = n, this.onChange({ bounds: o }) } }, onEnd: function (e) { var t = this.sHandle; this.removeDocumentEvents(), (null !== t || e) && this.$emit("afterChange", this.bounds), this.setState({ sHandle: null }) }, onMove: function (e, t) { ew(e); var n = this.bounds, r = this.sHandle, i = this.calcValueByPos(t), o = n[r]; i !== o && this.moveTo(i) }, onKeyboard: function (e) { var t = this.$props, n = t.reverse, r = t.vertical, i = nw(e, r, n); if (i) { ew(e); var o = this.bounds, a = this.sHandle, s = o[null === a ? this.recent : a], c = i(s, this.$props), l = sw({ value: c, handle: a, bounds: o, props: this.$props }); if (l === s) return; var u = !0; this.moveTo(l, u) } }, getClosestBound: function (e) { for (var t = this.bounds, n = 0, r = 1; r < t.length - 1; ++r)e > t[r] && (n = r); return Math.abs(t[n + 1] - e) < Math.abs(t[n] - e) && (n += 1), n }, getBoundNeedMoving: function (e, t) { var n = this.bounds, r = this.recent, i = t, o = n[t + 1] === n[t]; return o && n[r] === n[t] && (i = r), o && e !== n[t + 1] && (i = e < n[t + 1] ? t : t + 1), i }, getLowerBound: function () { return this.bounds[0] }, getUpperBound: function () { var e = this.bounds; return e[e.length - 1] }, getPoints: function () { var e = this.marks, t = this.step, n = this.min, r = this.max, i = this._getPointsCache; if (!i || i.marks !== e || i.step !== t) { var o = s()({}, e); if (null !== t) for (var a = n; a <= r; a += t)o[a] = a; var c = Object.keys(o).map(parseFloat); c.sort((function (e, t) { return e - t })), this._getPointsCache = { marks: e, step: t, points: c } } return this._getPointsCache.points }, moveTo: function (e, t) { var n = this, r = [].concat(X()(this.bounds)), i = this.sHandle, o = this.recent, a = null === i ? o : i; r[a] = e; var s = a; !1 !== this.$props.pushable ? this.pushSurroundingHandles(r, s) : this.$props.allowCross && (r.sort((function (e, t) { return e - t })), s = r.indexOf(e)), this.onChange({ recent: s, sHandle: s, bounds: r }), t && (this.$emit("afterChange", r), this.setState({}, (function () { n.handlesRefs[s].focus() })), this.onEnd()) }, pushSurroundingHandles: function (e, t) { var n = e[t], r = this.pushable; r = Number(r); var i = 0; if (e[t + 1] - n < r && (i = 1), n - e[t - 1] < r && (i = -1), 0 !== i) { var o = t + i, a = i * (e[o] - n); this.pushHandle(e, o, i, r - a) || (e[t] = e[o] - i * r) } }, pushHandle: function (e, t, n, r) { var i = e[t], o = e[t]; while (n * (o - i) < r) { if (!this.pushHandleOnePoint(e, t, n)) return e[t] = i, !1; o = e[t] } return !0 }, pushHandleOnePoint: function (e, t, n) { var r = this.getPoints(), i = r.indexOf(e[t]), o = i + n; if (o >= r.length || o < 0) return !1; var a = t + n, s = r[o], c = this.pushable, l = n * (e[a] - s); return !!this.pushHandle(e, a, n, c - l) && (e[t] = s, !0) }, trimAlignValue: function (e) { var t = this.sHandle, n = this.bounds; return sw({ value: e, handle: t, bounds: n, props: this.$props }) }, ensureValueNotConflict: function (e, t, n) { var r = n.allowCross, i = n.pushable, o = this.$data || {}, a = o.bounds; if (e = void 0 === e ? o.sHandle : e, i = Number(i), !r && null != e && void 0 !== a) { if (e > 0 && t <= a[e - 1] + i) return a[e - 1] + i; if (e < a.length - 1 && t >= a[e + 1] - i) return a[e + 1] - i } return t }, getTrack: function (e) { var t = e.bounds, n = e.prefixCls, r = e.reverse, i = e.vertical, o = e.included, a = e.offsets, s = e.trackStyle, c = this.$createElement; return t.slice(0, -1).map((function (e, t) { var l, u = t + 1, f = Q()((l = {}, h()(l, n + "-track", !0), h()(l, n + "-track-" + u, !0), l)); return c(Vx, { class: f, attrs: { vertical: i, reverse: r, included: o, offset: a[u - 1], length: a[u] - a[u - 1] }, style: s[t], key: u }) })) }, renderSlider: function () { var e = this, t = this.sHandle, n = this.bounds, r = this.prefixCls, i = this.vertical, o = this.included, a = this.disabled, s = this.min, c = this.max, l = this.reverse, u = this.handle, f = this.defaultHandle, d = this.trackStyle, p = this.handleStyle, v = this.tabIndex, m = u || f, g = n.map((function (t) { return e.calcOffset(t) })), y = r + "-handle", b = n.map((function (n, o) { var u, f = v[o] || 0; return (a || null === v[o]) && (f = null), m({ className: Q()((u = {}, h()(u, y, !0), h()(u, y + "-" + (o + 1), !0), u)), prefixCls: r, vertical: i, offset: g[o], value: n, dragging: t === o, index: o, tabIndex: f, min: s, max: c, reverse: l, disabled: a, style: p[o], directives: [{ name: "ant-ref", value: function (t) { return e.saveHandle(o, t) } }], on: { focus: e.onFocus, blur: e.onBlur } }) })); return { tracks: this.getTrack({ bounds: n, prefixCls: r, reverse: l, vertical: i, included: o, offsets: g, trackStyle: d }), handles: b } } } }, uw = iw(lw), hw = di(), fw = function () { return { prefixCls: p["a"].string, tooltipPrefixCls: p["a"].string, range: p["a"].bool, reverse: p["a"].bool, min: p["a"].number, max: p["a"].number, step: p["a"].oneOfType([p["a"].number, p["a"].any]), marks: p["a"].object, dots: p["a"].bool, value: p["a"].oneOfType([p["a"].number, p["a"].arrayOf(p["a"].number)]), defaultValue: p["a"].oneOfType([p["a"].number, p["a"].arrayOf(p["a"].number)]), included: p["a"].bool, disabled: p["a"].bool, vertical: p["a"].bool, tipFormatter: p["a"].oneOfType([p["a"].func, p["a"].object]), tooltipVisible: p["a"].bool, tooltipPlacement: hw.placement, getTooltipPopupContainer: p["a"].func } }, dw = { name: "ASlider", model: { prop: "value", event: "change" }, mixins: [m["a"]], inject: { configProvider: { default: function () { return Vt } } }, props: s()({}, fw(), { tipFormatter: p["a"].oneOfType([p["a"].func, p["a"].object]).def((function (e) { return e.toString() })) }), data: function () { return { visibles: {} } }, methods: { toggleTooltipVisible: function (e, t) { this.setState((function (n) { var r = n.visibles; return { visibles: s()({}, r, h()({}, e, t)) } })) }, handleWithTooltip: function (e, t, n) { var r = this, i = n.value, o = n.dragging, a = n.index, c = n.directives, u = n.on, h = l()(n, ["value", "dragging", "index", "directives", "on"]), f = this.$createElement, d = this.$props, p = d.tipFormatter, v = d.tooltipVisible, m = d.tooltipPlacement, g = d.getTooltipPopupContainer, y = this.visibles, b = !!p && (y[a] || o), x = v || void 0 === v && b, w = { props: { prefixCls: e, title: p ? p(i) : "", visible: x, placement: m || "top", transitionName: "zoom-down", overlayClassName: t + "-tooltip", getPopupContainer: g || function () { return document.body } }, key: a }, _ = { props: s()({ value: i }, h), directives: c, on: s()({}, u, { mouseenter: function () { return r.toggleTooltipVisible(a, !0) }, mouseleave: function () { return r.toggleTooltipVisible(a, !1) } }) }; return f(gi, w, [f($x, _)]) }, focus: function () { this.$refs.sliderRef.focus() }, blur: function () { this.$refs.sliderRef.blur() } }, render: function () { var e = this, t = arguments[0], n = Object(v["l"])(this), r = n.range, i = n.prefixCls, o = n.tooltipPrefixCls, a = l()(n, ["range", "prefixCls", "tooltipPrefixCls"]), c = this.configProvider.getPrefixCls, u = c("slider", i), h = c("tooltip", o), f = Object(v["k"])(this); if (r) { var d = { props: s()({}, a, { prefixCls: u, tooltipPrefixCls: h, handle: function (t) { return e.handleWithTooltip(h, u, t) } }), ref: "sliderRef", on: f }; return t(uw, d) } var p = { props: s()({}, a, { prefixCls: u, tooltipPrefixCls: h, handle: function (t) { return e.handleWithTooltip(h, u, t) } }), ref: "sliderRef", on: f }; return t(aw, p) }, install: function (e) { e.use(N), e.component(dw.name, dw) } }, pw = dw; function vw(e, t) { var n = t ? e.pageYOffset : e.pageXOffset, r = t ? "scrollTop" : "scrollLeft"; if ("number" !== typeof n) { var i = e.document; n = i.documentElement[r], "number" !== typeof n && (n = i.body[r]) } return n } function mw(e) { var t = void 0, n = void 0, r = e.ownerDocument, i = r.body, o = r && r.documentElement, a = e.getBoundingClientRect(); return t = a.left, n = a.top, t -= o.clientLeft || i.clientLeft || 0, n -= o.clientTop || i.clientTop || 0, { left: t, top: n } } function gw(e) { var t = mw(e), n = e.ownerDocument, r = n.defaultView || n.parentWindow; return t.left += vw(r), t.left } function yw() { } n("e3e9"); var bw = { name: "Star", mixins: [m["a"]], props: { value: p["a"].number, index: p["a"].number, prefixCls: p["a"].string, allowHalf: p["a"].bool, disabled: p["a"].bool, character: p["a"].any, characterRender: p["a"].func, focused: p["a"].bool, count: p["a"].number }, methods: { onHover: function (e) { var t = this.index; this.$emit("hover", e, t) }, onClick: function (e) { var t = this.index; this.$emit("click", e, t) }, onKeyDown: function (e) { var t = this.$props.index; 13 === e.keyCode && this.__emit("click", e, t) }, getClassName: function () { var e = this.prefixCls, t = this.index, n = this.value, r = this.allowHalf, i = this.focused, o = t + 1, a = e; return 0 === n && 0 === t && i ? a += " " + e + "-focused" : r && n + .5 === o ? (a += " " + e + "-half " + e + "-active", i && (a += " " + e + "-focused")) : (a += o <= n ? " " + e + "-full" : " " + e + "-zero", o === n && i && (a += " " + e + "-focused")), a } }, render: function () { var e = arguments[0], t = this.onHover, n = this.onClick, r = this.onKeyDown, i = this.disabled, o = this.prefixCls, a = this.characterRender, s = this.index, c = this.count, l = this.value, u = Object(v["g"])(this, "character"), h = e("li", { class: this.getClassName() }, [e("div", { on: { click: i ? yw : n, keydown: i ? yw : r, mousemove: i ? yw : t }, attrs: { role: "radio", "aria-checked": l > s ? "true" : "false", "aria-posinset": s + 1, "aria-setsize": c, tabIndex: 0 } }, [e("div", { class: o + "-first" }, [u]), e("div", { class: o + "-second" }, [u])])]); return a && (h = a(h, this.$props)), h } }, xw = { disabled: p["a"].bool, value: p["a"].number, defaultValue: p["a"].number, count: p["a"].number, allowHalf: p["a"].bool, allowClear: p["a"].bool, prefixCls: p["a"].string, character: p["a"].any, characterRender: p["a"].func, tabIndex: p["a"].number, autoFocus: p["a"].bool }; function ww() { } var _w = { name: "Rate", mixins: [m["a"]], model: { prop: "value", event: "change" }, props: Object(v["t"])(xw, { defaultValue: 0, count: 5, allowHalf: !1, allowClear: !0, prefixCls: "rc-rate", tabIndex: 0, character: "鈽�" }), data: function () { var e = this.value; return Object(v["s"])(this, "value") || (e = this.defaultValue), { sValue: e, focused: !1, cleanedValue: null, hoverValue: void 0 } }, watch: { value: function (e) { this.setState({ sValue: e }) } }, mounted: function () { var e = this; this.$nextTick((function () { e.autoFocus && !e.disabled && e.focus() })) }, methods: { onHover: function (e, t) { var n = this.getStarValue(t, e.pageX), r = this.cleanedValue; n !== r && this.setState({ hoverValue: n, cleanedValue: null }), this.$emit("hoverChange", n) }, onMouseLeave: function () { this.setState({ hoverValue: void 0, cleanedValue: null }), this.$emit("hoverChange", void 0) }, onClick: function (e, t) { var n = this.allowClear, r = this.sValue, i = this.getStarValue(t, e.pageX), o = !1; n && (o = i === r), this.onMouseLeave(!0), this.changeValue(o ? 0 : i), this.setState({ cleanedValue: o ? i : null }) }, onFocus: function () { this.setState({ focused: !0 }), this.$emit("focus") }, onBlur: function () { this.setState({ focused: !1 }), this.$emit("blur") }, onKeyDown: function (e) { var t = e.keyCode, n = this.count, r = this.allowHalf, i = this.sValue; t === Io.RIGHT && i < n ? (i += r ? .5 : 1, this.changeValue(i), e.preventDefault()) : t === Io.LEFT && i > 0 && (i -= r ? .5 : 1, this.changeValue(i), e.preventDefault()), this.$emit("keydown", e) }, getStarDOM: function (e) { return this.$refs["stars" + e].$el }, getStarValue: function (e, t) { var n = e + 1; if (this.allowHalf) { var r = this.getStarDOM(e), i = gw(r), o = r.clientWidth; t - i < o / 2 && (n -= .5) } return n }, focus: function () { this.disabled || this.$refs.rateRef.focus() }, blur: function () { this.disabled || this.$refs.rateRef.blur() }, changeValue: function (e) { Object(v["s"])(this, "value") || this.setState({ sValue: e }), this.$emit("change", e) } }, render: function () { for (var e = arguments[0], t = Object(v["l"])(this), n = t.count, r = t.allowHalf, i = t.prefixCls, o = t.disabled, a = t.tabIndex, s = this.sValue, c = this.hoverValue, l = this.focused, u = [], h = o ? i + "-disabled" : "", f = Object(v["g"])(this, "character"), d = this.characterRender || this.$scopedSlots.characterRender, p = 0; p < n; p++) { var m = { props: { index: p, count: n, disabled: o, prefixCls: i + "-star", allowHalf: r, value: void 0 === c ? s : c, character: f, characterRender: d, focused: l }, on: { click: this.onClick, hover: this.onHover }, key: p, ref: "stars" + p }; u.push(e(bw, m)) } return e("ul", { class: Q()(i, h), on: { mouseleave: o ? ww : this.onMouseLeave, focus: o ? ww : this.onFocus, blur: o ? ww : this.onBlur, keydown: o ? ww : this.onKeyDown }, attrs: { tabIndex: o ? -1 : a, role: "radiogroup" }, ref: "rateRef" }, [u]) } }, Cw = _w, Mw = Cw, Ow = { prefixCls: p["a"].string, count: p["a"].number, value: p["a"].value, defaultValue: p["a"].value, allowHalf: p["a"].bool, allowClear: p["a"].bool, tooltips: p["a"].arrayOf(p["a"].string), disabled: p["a"].bool, character: p["a"].any, autoFocus: p["a"].bool }, kw = { name: "ARate", model: { prop: "value", event: "change" }, props: Ow, inject: { configProvider: { default: function () { return Vt } } }, methods: { characterRender: function (e, t) { var n = t.index, r = this.$createElement, i = this.$props.tooltips; return i ? r(gi, { attrs: { title: i[n] } }, [e]) : e }, focus: function () { this.$refs.refRate.focus() }, blur: function () { this.$refs.refRate.blur() } }, render: function () { var e = arguments[0], t = Object(v["l"])(this), n = t.prefixCls, r = l()(t, ["prefixCls"]), i = this.configProvider.getPrefixCls, o = i("rate", n), a = Object(v["g"])(this, "character") || e(Ve, { attrs: { type: "star", theme: "filled" } }), c = { props: s()({ character: a, characterRender: this.characterRender, prefixCls: o }, Object(Qi["a"])(r, ["tooltips"])), on: Object(v["k"])(this), ref: "refRate" }; return e(Mw, c) }, install: function (e) { e.use(N), e.component(kw.name, kw) } }, Sw = kw, Tw = (n("8d1e"), { disabled: p["a"].bool, activeClassName: p["a"].string, activeStyle: p["a"].any }), Aw = { name: "TouchFeedback", mixins: [m["a"]], props: Object(v["t"])(Tw, { disabled: !1 }), data: function () { return { active: !1 } }, mounted: function () { var e = this; this.$nextTick((function () { e.disabled && e.active && e.setState({ active: !1 }) })) }, methods: { triggerEvent: function (e, t, n) { this.$emit(e, n), t !== this.active && this.setState({ active: t }) }, onTouchStart: function (e) { this.triggerEvent("touchstart", !0, e) }, onTouchMove: function (e) { this.triggerEvent("touchmove", !1, e) }, onTouchEnd: function (e) { this.triggerEvent("touchend", !1, e) }, onTouchCancel: function (e) { this.triggerEvent("touchcancel", !1, e) }, onMouseDown: function (e) { this.triggerEvent("mousedown", !0, e) }, onMouseUp: function (e) { this.triggerEvent("mouseup", !1, e) }, onMouseLeave: function (e) { this.triggerEvent("mouseleave", !1, e) } }, render: function () { var e = this.$props, t = e.disabled, n = e.activeClassName, r = void 0 === n ? "" : n, i = e.activeStyle, o = void 0 === i ? {} : i, a = this.$slots["default"]; if (1 !== a.length) return fe(!1, "m-feedback缁勪欢鍙兘鍖呭惈涓�涓瓙鍏冪礌"), null; var c = { on: t ? {} : { touchstart: this.onTouchStart, touchmove: this.onTouchMove, touchend: this.onTouchEnd, touchcancel: this.onTouchCancel, mousedown: this.onMouseDown, mouseup: this.onMouseUp, mouseleave: this.onMouseLeave } }; return !t && this.active && (c = s()({}, c, { style: o, class: r })), Object(en["a"])(a, c) } }, Lw = Aw, jw = { name: "InputHandler", props: { prefixCls: p["a"].string, disabled: p["a"].bool }, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.disabled, i = { props: { disabled: r, activeClassName: n + "-handler-active" }, on: Object(v["k"])(this) }; return e(Lw, i, [e("span", [this.$slots["default"]])]) } }, zw = jw; function Ew() { } function Pw(e) { e.preventDefault() } function Dw(e) { return e.replace(/[^\w\.-]+/g, "") } var Hw = 200, Vw = 600, Iw = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1, Nw = function (e) { return void 0 !== e && null !== e }, Rw = function (e, t) { return t === e || "number" === typeof t && "number" === typeof e && isNaN(t) && isNaN(e) }, Fw = { value: p["a"].oneOfType([p["a"].number, p["a"].string]), defaultValue: p["a"].oneOfType([p["a"].number, p["a"].string]), focusOnUpDown: p["a"].bool, autoFocus: p["a"].bool, prefixCls: p["a"].string, tabIndex: p["a"].oneOfType([p["a"].string, p["a"].number]), placeholder: p["a"].string, disabled: p["a"].bool, readOnly: p["a"].bool, max: p["a"].number, min: p["a"].number, step: p["a"].oneOfType([p["a"].number, p["a"].string]), upHandler: p["a"].any, downHandler: p["a"].any, useTouch: p["a"].bool, formatter: p["a"].func, parser: p["a"].func, precision: p["a"].number, required: p["a"].bool, pattern: p["a"].string, decimalSeparator: p["a"].string, autoComplete: p["a"].string, title: p["a"].string, name: p["a"].string, id: p["a"].string }, Yw = { name: "VCInputNumber", mixins: [m["a"]], model: { prop: "value", event: "change" }, props: Object(v["t"])(Fw, { focusOnUpDown: !0, useTouch: !1, prefixCls: "rc-input-number", min: -Iw, step: 1, parser: Dw, required: !1, autoComplete: "off" }), data: function () { var e = Object(v["l"])(this); this.prevProps = s()({}, e); var t = void 0; t = "value" in e ? this.value : this.defaultValue; var n = this.getValidValue(this.toNumber(t)); return { inputValue: this.toPrecisionAsStep(n), sValue: n, focused: this.autoFocus } }, mounted: function () { var e = this; this.$nextTick((function () { e.autoFocus && !e.disabled && e.focus(), e.updatedFunc() })) }, updated: function () { var e = this, t = this.$props, n = t.value, r = t.max, i = t.min, o = this.$data.focused, a = this.prevProps, c = Object(v["l"])(this); if (a) { if (!Rw(a.value, n) || !Rw(a.max, r) || !Rw(a.min, i)) { var l = o ? n : this.getValidValue(n), u = void 0; u = this.pressingUpOrDown ? l : this.inputting ? this.rawInput : this.toPrecisionAsStep(l), this.setState({ sValue: l, inputValue: u }) } var h = "value" in c ? n : this.sValue; "max" in c && a.max !== r && "number" === typeof h && h > r && this.$emit("change", r), "min" in c && a.min !== i && "number" === typeof h && h < i && this.$emit("change", i) } this.prevProps = s()({}, c), this.$nextTick((function () { e.updatedFunc() })) }, beforeDestroy: function () { this.stop() }, methods: { updatedFunc: function () { var e = this.$refs.inputRef; try { if (void 0 !== this.cursorStart && this.focused) if (this.partRestoreByAfter(this.cursorAfter) || this.sValue === this.value) { if (this.currentValue === e.value) switch (this.lastKeyCode) { case Io.BACKSPACE: this.fixCaret(this.cursorStart - 1, this.cursorStart - 1); break; case Io.DELETE: this.fixCaret(this.cursorStart + 1, this.cursorStart + 1); break; default: } } else { var t = this.cursorStart + 1; this.cursorAfter ? this.lastKeyCode === Io.BACKSPACE ? t = this.cursorStart - 1 : this.lastKeyCode === Io.DELETE && (t = this.cursorStart) : t = e.value.length, this.fixCaret(t, t) } } catch (n) { } this.lastKeyCode = null, this.pressingUpOrDown && (this.focusOnUpDown && this.focused && document.activeElement !== e && this.focus(), this.pressingUpOrDown = !1) }, onKeyDown: function (e) { if (e.keyCode === Io.UP) { var t = this.getRatio(e); this.up(e, t), this.stop() } else if (e.keyCode === Io.DOWN) { var n = this.getRatio(e); this.down(e, n), this.stop() } else e.keyCode === Io.ENTER && this.$emit("pressEnter", e); this.recordCursorPosition(), this.lastKeyCode = e.keyCode; for (var r = arguments.length, i = Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++)i[o - 1] = arguments[o]; this.$emit.apply(this, ["keydown", e].concat(X()(i))) }, onKeyUp: function (e) { this.stop(), this.recordCursorPosition(); for (var t = arguments.length, n = Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++)n[r - 1] = arguments[r]; this.$emit.apply(this, ["keyup", e].concat(X()(n))) }, onChange: function (e) { this.focused && (this.inputting = !0), this.rawInput = this.parser(this.getValueFromEvent(e)), this.setState({ inputValue: this.rawInput }), this.$emit("change", this.toNumber(this.rawInput)) }, onFocus: function () { this.setState({ focused: !0 }); for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; this.$emit.apply(this, ["focus"].concat(X()(t))) }, onBlur: function () { this.inputting = !1, this.setState({ focused: !1 }); var e = this.getCurrentValidValue(this.inputValue), t = this.setValue(e); if (this.$listeners.blur) { var n = this.$refs.inputRef.value, r = this.getInputDisplayValue({ focused: !1, sValue: t }); this.$refs.inputRef.value = r; for (var i = arguments.length, o = Array(i), a = 0; a < i; a++)o[a] = arguments[a]; this.$emit.apply(this, ["blur"].concat(X()(o))), this.$refs.inputRef.value = n } }, getCurrentValidValue: function (e) { var t = e; return t = "" === t ? "" : this.isNotCompleteNumber(parseFloat(t, 10)) ? this.sValue : this.getValidValue(t), this.toNumber(t) }, getRatio: function (e) { var t = 1; return e.metaKey || e.ctrlKey ? t = .1 : e.shiftKey && (t = 10), t }, getValueFromEvent: function (e) { var t = e.target.value.trim().replace(/銆�/g, "."); return Nw(this.decimalSeparator) && (t = t.replace(this.decimalSeparator, ".")), t }, getValidValue: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.min, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.max, r = parseFloat(e, 10); return isNaN(r) ? e : (r < t && (r = t), r > n && (r = n), r) }, setValue: function (e, t) { var n = this.$props.precision, r = this.isNotCompleteNumber(parseFloat(e, 10)) ? null : parseFloat(e, 10), i = this.$data, o = i.sValue, a = void 0 === o ? null : o, s = i.inputValue, c = void 0 === s ? null : s, l = "number" === typeof r ? r.toFixed(n) : "" + r, u = r !== a || l !== "" + c; return Object(v["s"])(this, "value") ? this.setState({ inputValue: this.toPrecisionAsStep(this.sValue) }, t) : this.setState({ sValue: r, inputValue: this.toPrecisionAsStep(e) }, t), u && this.$emit("change", r), r }, getPrecision: function (e) { if (Nw(this.precision)) return this.precision; var t = e.toString(); if (t.indexOf("e-") >= 0) return parseInt(t.slice(t.indexOf("e-") + 2), 10); var n = 0; return t.indexOf(".") >= 0 && (n = t.length - t.indexOf(".") - 1), n }, getMaxPrecision: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1; if (Nw(this.precision)) return this.precision; var n = this.step, r = this.getPrecision(t), i = this.getPrecision(n), o = this.getPrecision(e); return e ? Math.max(o, r + i) : r + i }, getPrecisionFactor: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1, n = this.getMaxPrecision(e, t); return Math.pow(10, n) }, getInputDisplayValue: function (e) { var t = e || this.$data, n = t.focused, r = t.inputValue, i = t.sValue, o = void 0; o = n ? r : this.toPrecisionAsStep(i), void 0 !== o && null !== o || (o = ""); var a = this.formatWrapper(o); return Nw(this.$props.decimalSeparator) && (a = a.toString().replace(".", this.$props.decimalSeparator)), a }, recordCursorPosition: function () { try { var e = this.$refs.inputRef; this.cursorStart = e.selectionStart, this.cursorEnd = e.selectionEnd, this.currentValue = e.value, this.cursorBefore = e.value.substring(0, this.cursorStart), this.cursorAfter = e.value.substring(this.cursorEnd) } catch (t) { } }, fixCaret: function (e, t) { if (void 0 !== e && void 0 !== t && this.$refs.inputRef && this.$refs.inputRef.value) try { var n = this.$refs.inputRef, r = n.selectionStart, i = n.selectionEnd; e === r && t === i || n.setSelectionRange(e, t) } catch (o) { } }, restoreByAfter: function (e) { if (void 0 === e) return !1; var t = this.$refs.inputRef.value, n = t.lastIndexOf(e); if (-1 === n) return !1; var r = this.cursorBefore.length; return this.lastKeyCode === Io.DELETE && this.cursorBefore.charAt(r - 1) === e[0] ? (this.fixCaret(r, r), !0) : n + e.length === t.length && (this.fixCaret(n, n), !0) }, partRestoreByAfter: function (e) { var t = this; return void 0 !== e && Array.prototype.some.call(e, (function (n, r) { var i = e.substring(r); return t.restoreByAfter(i) })) }, focus: function () { this.$refs.inputRef.focus(), this.recordCursorPosition() }, blur: function () { this.$refs.inputRef.blur() }, formatWrapper: function (e) { return this.formatter ? this.formatter(e) : e }, toPrecisionAsStep: function (e) { if (this.isNotCompleteNumber(e) || "" === e) return e; var t = Math.abs(this.getMaxPrecision(e)); return isNaN(t) ? e.toString() : Number(e).toFixed(t) }, isNotCompleteNumber: function (e) { return isNaN(e) || "" === e || null === e || e && e.toString().indexOf(".") === e.toString().length - 1 }, toNumber: function (e) { var t = this.$props, n = t.precision, r = t.autoFocus, i = this.focused, o = void 0 === i ? r : i, a = e && e.length > 16 && o; return this.isNotCompleteNumber(e) || a ? e : Nw(n) ? Math.round(e * Math.pow(10, n)) / Math.pow(10, n) : Number(e) }, upStep: function (e, t) { var n = this.step, r = this.getPrecisionFactor(e, t), i = Math.abs(this.getMaxPrecision(e, t)), o = ((r * e + r * n * t) / r).toFixed(i); return this.toNumber(o) }, downStep: function (e, t) { var n = this.step, r = this.getPrecisionFactor(e, t), i = Math.abs(this.getMaxPrecision(e, t)), o = ((r * e - r * n * t) / r).toFixed(i); return this.toNumber(o) }, stepFn: function (e, t) { var n = this, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1, i = arguments[3]; if (this.stop(), t && t.preventDefault(), !this.disabled) { var o = this.max, a = this.min, s = this.getCurrentValidValue(this.inputValue) || 0; if (!this.isNotCompleteNumber(s)) { var c = this[e + "Step"](s, r), l = c > o || c < a; c > o ? c = o : c < a && (c = a), this.setValue(c), this.setState({ focused: !0 }), l || (this.autoStepTimer = setTimeout((function () { n[e](t, r, !0) }), i ? Hw : Vw)) } } }, stop: function () { this.autoStepTimer && clearTimeout(this.autoStepTimer) }, down: function (e, t, n) { this.pressingUpOrDown = !0, this.stepFn("down", e, t, n) }, up: function (e, t, n) { this.pressingUpOrDown = !0, this.stepFn("up", e, t, n) }, handleInputClick: function () { this.$emit("click") } }, render: function () { var e, t = arguments[0], n = this.$props, r = n.prefixCls, i = n.disabled, o = n.readOnly, a = n.useTouch, s = n.autoComplete, c = n.upHandler, l = n.downHandler, u = Q()((e = {}, h()(e, r, !0), h()(e, r + "-disabled", i), h()(e, r + "-focused", this.focused), e)), f = "", d = "", p = this.sValue; if (p || 0 === p) if (isNaN(p)) f = r + "-handler-up-disabled", d = r + "-handler-down-disabled"; else { var m = Number(p); m >= this.max && (f = r + "-handler-up-disabled"), m <= this.min && (d = r + "-handler-down-disabled") } var g = !this.readOnly && !this.disabled, y = this.getInputDisplayValue(), b = void 0, x = void 0; a ? (b = { touchstart: g && !f ? this.up : Ew, touchend: this.stop }, x = { touchstart: g && !d ? this.down : Ew, touchend: this.stop }) : (b = { mousedown: g && !f ? this.up : Ew, mouseup: this.stop, mouseleave: this.stop }, x = { mousedown: g && !d ? this.down : Ew, mouseup: this.stop, mouseleave: this.stop }); var w = !!f || i || o, _ = !!d || i || o, C = Object(v["k"])(this), M = C.mouseenter, O = void 0 === M ? Ew : M, k = C.mouseleave, S = void 0 === k ? Ew : k, T = C.mouseover, A = void 0 === T ? Ew : T, L = C.mouseout, j = void 0 === L ? Ew : L, z = { on: { mouseenter: O, mouseleave: S, mouseover: A, mouseout: j }, class: u, attrs: { title: this.$props.title } }, E = { props: { disabled: w, prefixCls: r }, attrs: { unselectable: "unselectable", role: "button", "aria-label": "Increase Value", "aria-disabled": !!w }, class: r + "-handler " + r + "-handler-up " + f, on: b, ref: "up" }, P = { props: { disabled: _, prefixCls: r }, attrs: { unselectable: "unselectable", role: "button", "aria-label": "Decrease Value", "aria-disabled": !!_ }, class: r + "-handler " + r + "-handler-down " + d, on: x, ref: "down" }; return t("div", z, [t("div", { class: r + "-handler-wrap" }, [t(zw, E, [c || t("span", { attrs: { unselectable: "unselectable" }, class: r + "-handler-up-inner", on: { click: Pw } })]), t(zw, P, [l || t("span", { attrs: { unselectable: "unselectable" }, class: r + "-handler-down-inner", on: { click: Pw } })])]), t("div", { class: r + "-input-wrap" }, [t("input", { attrs: { role: "spinbutton", "aria-valuemin": this.min, "aria-valuemax": this.max, "aria-valuenow": p, required: this.required, type: this.type, placeholder: this.placeholder, tabIndex: this.tabIndex, autoComplete: s, readOnly: this.readOnly, disabled: this.disabled, max: this.max, min: this.min, step: this.step, name: this.name, title: this.title, id: this.id, pattern: this.pattern }, on: { click: this.handleInputClick, focus: this.onFocus, blur: this.onBlur, keydown: g ? this.onKeyDown : Ew, keyup: g ? this.onKeyUp : Ew, input: this.onChange }, class: r + "-input", ref: "inputRef", domProps: { value: y } })])]) } }, $w = { prefixCls: p["a"].string, min: p["a"].number, max: p["a"].number, value: p["a"].oneOfType([p["a"].number, p["a"].string]), step: p["a"].oneOfType([p["a"].number, p["a"].string]), defaultValue: p["a"].oneOfType([p["a"].number, p["a"].string]), tabIndex: p["a"].number, disabled: p["a"].bool, size: p["a"].oneOf(["large", "small", "default"]), formatter: p["a"].func, parser: p["a"].func, decimalSeparator: p["a"].string, placeholder: p["a"].string, name: p["a"].string, id: p["a"].string, precision: p["a"].number, autoFocus: p["a"].bool }, Bw = { name: "AInputNumber", model: { prop: "value", event: "change" }, props: Object(v["t"])($w, { step: 1 }), inject: { configProvider: { default: function () { return Vt } } }, methods: { focus: function () { this.$refs.inputNumberRef.focus() }, blur: function () { this.$refs.inputNumberRef.blur() } }, render: function () { var e, t = arguments[0], n = Object(v["l"])(this), r = n.prefixCls, i = n.size, o = l()(n, ["prefixCls", "size"]), a = this.configProvider.getPrefixCls, c = a("input-number", r), u = Q()((e = {}, h()(e, c + "-lg", "large" === i), h()(e, c + "-sm", "small" === i), e)), f = t(Ve, { attrs: { type: "up" }, class: c + "-handler-up-inner" }), d = t(Ve, { attrs: { type: "down" }, class: c + "-handler-down-inner" }), p = { props: s()({ prefixCls: c, upHandler: f, downHandler: d }, o), class: u, ref: "inputNumberRef", on: Object(v["k"])(this) }; return t(Yw, p) }, install: function (e) { e.use(N), e.component(Bw.name, Bw) } }, Ww = Bw, qw = n("a9f5"), Uw = n.n(qw), Kw = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-form-model", { ref: "dynamicValidateForm", attrs: { layout: "inline", model: e.dynamicValidateForm } }, [n("a-table", { staticClass: "batch-table", attrs: { pagination: !1, rowKey: function (e) { return e.key }, columns: e.columns, dataSource: e.dynamicValidateForm.domains, bordered: "", scroll: { x: 190 * e.listLength + 80 + (e.record.options.hideSequence ? 0 : 60), y: e.record.options.scrollY } }, scopedSlots: e._u([e._l(e.record.list, (function (t) { return { key: t.key, fn: function (r, i, o) { return [n("KFormModelItem", { key: t.key + "1", attrs: { record: t, config: e.config, parentDisabled: e.disabled, index: o, domains: e.dynamicValidateForm.domains, dynamicData: e.dynamicData }, on: { input: e.handleInput }, model: { value: i[t.model], callback: function (n) { e.$set(i, t.model, n) }, expression: "record[item.model]" } })] } } })), { key: "dynamic-opr-button", fn: function (t, r) { return [e.disabled ? e._e() : n("a-icon", { staticClass: "dynamic-opr-button", attrs: { title: "鍒犻櫎鏀硅", type: "minus-circle-o" }, on: { click: function (t) { return e.removeDomain(r) } } }), e.disabled ? e._e() : n("a-icon", { staticClass: "dynamic-opr-button", attrs: { title: "澶嶅埗娣诲姞", type: "copy-o" }, on: { click: function (t) { return e.copyDomain(r) } } })] } }], null, !0) }), n("a-button", { attrs: { type: "dashed", disabled: e.disabled }, on: { click: e.addDomain } }, [n("a-icon", { attrs: { type: "plus" } }), e._v("澧炲姞 ")], 1)], 1) }, Gw = []; function Xw(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function Jw(e, t) { (null == t || t > e.length) && (t = e.length); for (var n = 0, r = new Array(t); n < t; n++)r[n] = e[n]; return r } function Qw(e) { if (Array.isArray(e)) return Jw(e) } function Zw(e) { if ("undefined" !== typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e) } function e_(e, t) { if (e) { if ("string" === typeof e) return Jw(e, t); var n = Object.prototype.toString.call(e).slice(8, -1); return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Jw(e, t) : void 0 } } function t_() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") } function n_(e) { return Qw(e) || Zw(e) || e_(e) || t_() } n("8e6e"), n("cadf"), n("456d"), n("ac6a"); var r_ = function () { var e = this, t = e.$createElement, n = e._self._c || t; return ["input", "textarea", "date", "time", "number", "radio", "checkbox", "select", "rate", "switch", "slider", "uploadImg", "uploadFile", "cascader", "treeSelect"].includes(e.record.type) ? n("a-form-model-item", { attrs: { prop: "domains." + e.index + "." + e.record.model, rules: e.record.rules } }, ["textarea" === e.record.type ? n("a-textarea", { style: "width:" + e.record.options.width, attrs: { autoSize: { minRows: e.record.options.minRows, maxRows: e.record.options.maxRows }, disabled: e.record.options.disabled || e.parentDisabled, placeholder: e.record.options.placeholder, allowClear: e.record.options.clearable, maxLength: e.record.options.maxLength, rows: 4, value: e.value }, on: { change: function (t) { return e.handleChange(t.target.value) } } }) : "radio" === e.record.type ? n("a-radio-group", { attrs: { options: e.record.options.dynamic ? e.dynamicData[e.record.options.dynamicKey] ? e.dynamicData[e.record.options.dynamicKey] : [] : e.record.options.options, disabled: e.record.options.disabled || e.parentDisabled, placeholder: e.record.options.placeholder, value: e.value, checked: e.value }, on: { change: function (t) { return e.handleChange(t.target.value) } } }) : "checkbox" === e.record.type ? n("a-checkbox-group", { attrs: { options: e.record.options.dynamic ? e.dynamicData[e.record.options.dynamicKey] ? e.dynamicData[e.record.options.dynamicKey] : [] : e.record.options.options, disabled: e.record.options.disabled || e.parentDisabled, placeholder: e.record.options.placeholder, value: e.value }, on: { change: e.handleChange } }) : "slider" === e.record.type ? n("div", { staticClass: "slider-box", style: "width:" + e.record.options.width }, [n("div", { staticClass: "slider" }, [n("a-slider", { attrs: { disabled: e.record.options.disabled || e.parentDisabled, min: e.record.options.min, max: e.record.options.max, step: e.record.options.step, value: e.value }, on: { change: e.handleChange } })], 1), e.record.options.showInput ? n("div", { staticClass: "number" }, [n("a-input-number", { staticStyle: { width: "100%" }, attrs: { disabled: e.record.options.disabled || e.parentDisabled, min: e.record.options.min, max: e.record.options.max, step: e.record.options.step, value: e.value }, on: { change: e.handleChange } })], 1) : e._e()]) : n(e.componentItem, e._b({ tag: "component", style: "width:" + e.record.options.width, attrs: { min: e.record.options.min || 0 === e.record.options.min ? e.record.options.min : -1 / 0, max: e.record.options.max || 0 === e.record.options.max ? e.record.options.max : 1 / 0, count: e.record.options.max, precision: e.record.options.precision > 50 || !e.record.options.precision && 0 !== e.record.options.precision ? null : e.record.options.precision, record: e.record, config: e.config, disabled: e.record.options.disabled || e.parentDisabled, parentDisabled: e.record.options.disabled || e.parentDisabled, allowClear: e.record.options.clearable, dynamicData: e.dynamicData, filterOption: !!e.record.options.showSearch && function (e, t) { return t.componentOptions.children[0].text.toLowerCase().indexOf(e.toLowerCase()) >= 0 }, treeData: e.record.options.dynamic ? e.dynamicData[e.record.options.dynamicKey] ? e.dynamicData[e.record.options.dynamicKey] : [] : e.record.options.options, options: e.record.options.dynamic ? e.dynamicData[e.record.options.dynamicKey] ? e.dynamicData[e.record.options.dynamicKey] : [] : e.record.options.options, mode: e.record.options.multiple ? "multiple" : "", checked: e.value, value: e.value }, on: { change: function (t) { return e.handleChange(t) } } }, "component", e.componentOption, !1))], 1) : "text" === e.record.type ? n("a-form-model-item", [n("div", { style: { textAlign: e.record.options.textAlign } }, [n("label", { class: { "ant-form-item-required": e.record.options.showRequiredMark }, style: { fontFamily: e.record.options.fontFamily, fontSize: e.record.options.fontSize, color: e.record.options.color }, domProps: { textContent: e._s(e.record.label) } })])]) : "html" === e.record.type ? n("div", { domProps: { innerHTML: e._s(e.record.options.defaultValue) } }) : n("div") }, i_ = [], o_ = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { style: { width: e.record.options.width } }, [e.record.options.drag ? n("a-upload-dragger", { class: { "hide-upload-drag": !(e.fileList.length < e.record.options.limit) }, attrs: { disabled: e.record.options.disabled || e.parentDisabled, name: e.config.uploadFileName || e.record.options.fileName, headers: e.config.uploadFileHeaders || e.record.options.headers, data: e.config.uploadFileData || e.optionsData, action: e.config.uploadFile || e.record.options.action, multiple: e.record.options.multiple, fileList: e.fileList, remove: e.remove, beforeUpload: e.beforeUpload }, on: { preview: e.handlePreview, change: e.handleChange } }, [n("p", { staticClass: "ant-upload-drag-icon" }, [n("a-icon", { attrs: { type: "cloud-upload" } })], 1), n("p", { staticClass: "ant-upload-text" }, [e._v("鍗曞嚮鎴栨嫋鍔ㄦ枃浠跺埌姝ゅ尯鍩�")])]) : n("a-upload", { attrs: { disabled: e.record.options.disabled || e.parentDisabled, name: e.config.uploadFileName || e.record.options.fileName, headers: e.config.uploadFileHeaders || e.record.options.headers, data: e.config.uploadFileData || e.optionsData, action: e.config.uploadFile || e.record.options.action, multiple: e.record.options.multiple, fileList: e.fileList, remove: e.remove, beforeUpload: e.beforeUpload }, on: { preview: e.handlePreview, change: e.handleChange } }, [e.fileList.length < e.record.options.limit ? n("a-button", { attrs: { disabled: e.record.options.disabled || e.parentDisabled } }, [n("a-icon", { attrs: { type: "upload" } }), e._v(" " + e._s(e.record.options.placeholder) + " ")], 1) : e._e()], 1)], 1) }, a_ = [], s_ = (n("551c"), n("7f7f"), { name: "KUploadFile", props: ["record", "value", "config", "parentDisabled", "dynamicData"], data: function () { return { fileList: [] } }, watch: { value: { handler: function (e) { e && this.setFileList() }, immediate: !0, deep: !0 } }, computed: { optionsData: function () { try { return JSON.parse(this.record.options.data) } catch (e) { return console.error(e), {} } } }, methods: { setFileList: function () { "string" === typeof this.value ? (this.fileList = JSON.parse(this.value), this.handleSelectChange()) : this.fileList = this.value }, handleSelectChange: function () { var e = this; setTimeout((function () { var t = e.fileList.map((function (e) { if ("undefined" !== typeof e.response) { var t = e.response; return { type: "file", name: e.name, status: e.status, uid: t.data.fileId || Date.now(), url: t.data.url || "" } } return { type: "file", name: e.name, status: e.status, uid: e.uid, url: e.url || "" } })); e.$emit("change", t), e.$emit("input", t) }), 10) }, handlePreview: function (e) { var t = this, n = this.record.options.downloadWay, r = this.record.options.dynamicFun; if ("a" === n) { var i = document.createElement("a"); i.href = e.url || e.thumbUrl, i.download = e.name, i.click() } else "ajax" === n ? this.getBlob(e.url || e.thumbUrl).then((function (n) { t.saveAs(n, e.name) })) : "dynamic" === n && this.dynamicData[r](e) }, getBlob: function (e) { return new Promise((function (t) { var n = new XMLHttpRequest; n.open("GET", e, !0), n.responseType = "blob", n.onload = function () { 200 === n.status && t(n.response) }, n.send() })) }, saveAs: function (e, t) { if (window.navigator.msSaveOrOpenBlob) navigator.msSaveBlob(e, t); else { var n = document.createElement("a"), r = document.querySelector("body"); n.href = window.URL.createObjectURL(e), n.download = t, n.style.display = "none", r.appendChild(n), n.click(), r.removeChild(n), window.URL.revokeObjectURL(n.href) } }, remove: function () { this.handleSelectChange() }, beforeUpload: function (e, t) { t.length + this.fileList.length > this.record.options.limit && (this.$message.warning("鏈�澶т笂浼犳暟閲忎负".concat(this.record.options.limit)), t.splice(this.record.options.limit - this.fileList.length)) }, handleChange: function (e) { if (this.fileList = e.fileList, "done" === e.file.status) { var t = e.file.response; 0 === t.code ? this.handleSelectChange() : (this.fileList.pop(), this.$message.error("鏂囦欢涓婁紶澶辫触")) } else "error" === e.file.status && this.$message.error("鏂囦欢涓婁紶澶辫触") } } }), c_ = s_, l_ = n("2877"), u_ = Object(l_["a"])(c_, o_, a_, !1, null, null, null), h_ = u_.exports, f_ = h_, d_ = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "upload-img-box-9136076486841527", style: { width: e.record.options.width } }, [n("a-upload", { attrs: { name: e.config.uploadImageName || e.record.options.fileName, headers: e.config.uploadImageHeaders || e.record.options.headers, data: e.config.uploadImageData || e.optionsData, action: e.config.uploadImage || e.record.options.action, multiple: e.record.options.multiple, listType: e.record.options.listType, disabled: e.record.options.disabled || e.parentDisabled, fileList: e.fileList, accept: "image/gif, image/jpeg, image/png", remove: e.remove, beforeUpload: e.beforeUpload }, on: { change: e.handleChange, preview: e.handlePreview } }, ["picture-card" !== e.record.options.listType && e.fileList.length < e.record.options.limit ? n("a-button", { attrs: { disabled: e.record.options.disabled || e.parentDisabled } }, [n("a-icon", { attrs: { type: "upload" } }), e._v(" " + e._s(e.record.options.placeholder) + " ")], 1) : e._e(), "picture-card" === e.record.options.listType && e.fileList.length < e.record.options.limit ? n("div", { attrs: { disabled: e.record.options.disabled || e.parentDisabled } }, [n("a-icon", { attrs: { type: "plus" } }), n("div", { staticClass: "ant-upload-text" }, [e._v(e._s(e.record.options.placeholder))])], 1) : e._e()], 1), n("a-modal", { attrs: { visible: e.previewVisible, footer: null }, on: { cancel: e.handleCancel } }, [n("img", { staticStyle: { width: "100%" }, attrs: { alt: "example", src: e.previewImageUrl } })])], 1) }, p_ = [], v_ = { name: "KUploadImg", props: ["record", "value", "config", "parentDisabled"], data: function () { return { fileList: [], previewVisible: !1, previewImageUrl: "" } }, watch: { value: { handler: function (e) { e && this.setFileList() }, immediate: !0, deep: !0 } }, computed: { optionsData: function () { try { return JSON.parse(this.record.options.data) } catch (e) { return console.error(e), {} } } }, methods: { setFileList: function () { "string" === typeof this.value ? (this.fileList = JSON.parse(this.value), this.handleSelectChange()) : this.fileList = this.value }, handleSelectChange: function () { var e = this; setTimeout((function () { var t = e.fileList.map((function (e) { if ("undefined" !== typeof e.response) { var t = e.response; return { type: "img", name: e.name, status: e.status, uid: e.uid, url: t.data.url || "" } } return { type: "img", name: e.name, status: e.status, uid: e.uid, url: e.url || "" } })); e.$emit("change", t), e.$emit("input", t) }), 10) }, handlePreview: function (e) { this.previewImageUrl = e.url || e.thumbUrl, this.previewVisible = !0 }, handleCancel: function () { this.previewVisible = !1 }, remove: function () { this.handleSelectChange() }, beforeUpload: function (e, t) { t.length + this.fileList.length > this.record.options.limit && (this.$message.warning("鏈�澶т笂浼犳暟閲忎负".concat(this.record.options.limit)), t.splice(this.record.options.limit - this.fileList.length)) }, handleChange: function (e) { if (this.fileList = e.fileList, "done" === e.file.status) { var t = e.file.response; 0 === t.code ? this.handleSelectChange() : (this.fileList.pop(), this.$message.error("鍥剧墖涓婁紶澶辫触")) } else "error" === e.file.status && this.$message.error("鍥剧墖涓婁紶澶辫触") } } }, m_ = v_, g_ = (n("f2cd"), Object(l_["a"])(m_, d_, p_, !1, null, null, null)), y_ = g_.exports, b_ = y_, x_ = function () { var e = this, t = e.$createElement, n = e._self._c || t; return "date" === e.record.type && "YYYY-MM" === e.record.options.format && !1 === e.record.options.range ? n("a-month-picker", { style: "width:" + e.record.options.width, attrs: { disabled: e.record.options.disabled || e.parentDisabled, allowClear: e.record.options.clearable, placeholder: e.record.options.placeholder, format: e.record.options.format, value: e.date }, on: { change: e.handleSelectChange } }) : "date" === e.record.type && !1 === e.record.options.range ? n("a-date-picker", { style: "width:" + e.record.options.width, attrs: { disabled: e.record.options.disabled || e.parentDisabled, "show-time": e.record.options.showTime, allowClear: e.record.options.clearable, placeholder: e.record.options.placeholder, format: e.record.options.format, value: e.date }, on: { change: e.handleSelectChange } }) : "date" === e.record.type && !0 === e.record.options.range ? n("a-range-picker", { style: "width:" + e.record.options.width, attrs: { "show-time": e.record.options.showTime, disabled: e.record.options.disabled || e.parentDisabled, allowClear: e.record.options.clearable, placeholder: e.record.options.rangePlaceholder, format: e.record.options.format, value: e.date }, on: { change: e.handleSelectChange } }) : e._e() }, w_ = [], __ = { props: ["record", "value", "parentDisabled"], data: function () { return {} }, computed: { date: function () { var e = this; return !this.value || this.record.options.range && 0 === this.value.length ? void 0 : this.record.options.range ? this.value.map((function (t) { return eo()(t, e.record.options.format) })) : eo()(this.value, this.record.options.format) } }, methods: { handleSelectChange: function (e) { var t, n = this; t = !e || this.record.options.range && 0 === e.length ? "" : this.record.options.range ? e.map((function (e) { return e.format(n.record.options.format) })) : e.format(this.record.options.format), this.$emit("change", t), this.$emit("input", t) } } }, C_ = __, M_ = Object(l_["a"])(C_, x_, w_, !1, null, null, null), O_ = M_.exports, k_ = O_, S_ = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-time-picker", { style: "width:" + e.record.options.width, attrs: { disabled: e.record.options.disabled || e.parentDisabled, allowClear: e.record.options.clearable, placeholder: e.record.options.placeholder, format: e.record.options.format, value: e.time }, on: { change: e.handleSelectChange } }) }, T_ = [], A_ = { props: ["record", "value", "parentDisabled"], computed: { time: function () { return this.value ? eo()(this.value, this.record.options.format) : void 0 } }, methods: { handleSelectChange: function (e) { var t; t = e ? e.format(this.record.options.format) : "", this.$emit("change", t), this.$emit("input", t) } } }, L_ = A_, j_ = Object(l_["a"])(L_, S_, T_, !1, null, null, null), z_ = j_.exports, E_ = z_, P_ = n("a6fb"), D_ = { name: "KFormItem", props: ["record", "domains", "index", "value", "parentDisabled", "dynamicData", "config"], components: { UploadImg: b_, UploadFile: f_, KDatePicker: k_, KTimePicker: E_ }, computed: { componentItem: function () { return pC[this.record.type] }, componentOption: function () { return P_.omit(this.record.options, ["defaultValue", "disabled"]) } }, methods: { handleChange: function (e) { var t = e; e.target && (t = e.target.value), this.$emit("input", t) } } }, H_ = D_, V_ = (n("b452"), Object(l_["a"])(H_, r_, i_, !1, null, "6f1c9c0c", null)), I_ = V_.exports; function N_(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function R_(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? N_(Object(n), !0).forEach((function (t) { Xw(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : N_(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } var F_ = { name: "KBatch", props: ["record", "value", "dynamicData", "config", "parentDisabled"], components: { KFormModelItem: I_ }, watch: { value: { handler: function (e) { this.dynamicValidateForm.domains = e || [] }, immediate: !0, deep: !0 } }, data: function () { return { dynamicValidateForm: { domains: [] } } }, computed: { listLength: function () { return this.record.list.filter((function (e) { return !e.options.hidden })).length }, columns: function () { var e = this, t = []; return this.record.options.hideSequence || t.push({ title: "搴忓彿", dataIndex: "sequence_index_number", width: "60px", align: "center", customRender: function (e, t, n) { return n + 1 } }), t.push.apply(t, n_(this.record.list.filter((function (e) { return !e.options.hidden })).map((function (t, n) { return { title: t.label, dataIndex: t.key, width: n === e.record.list.length - 1 ? "" : "190px", scopedSlots: { customRender: t.key } } })))), t.push({ title: "鎿嶄綔", dataIndex: "dynamic-opr-button", fixed: "right", width: "80px", align: "center", scopedSlots: { customRender: "dynamic-opr-button" } }), t }, disabled: function () { return this.record.options.disabled || this.parentDisabled } }, methods: { validationSubform: function () { var e; return this.$refs.dynamicValidateForm.validate((function (t) { e = t })), e }, resetForm: function () { this.$refs.dynamicValidateForm.resetFields() }, removeDomain: function (e) { var t = this.dynamicValidateForm.domains.indexOf(e); -1 !== t && this.dynamicValidateForm.domains.splice(t, 1) }, copyDomain: function (e) { var t = {}; this.record.list.forEach((function (n) { t[n.model] = e[n.model] })), this.dynamicValidateForm.domains.push(R_(R_({}, t), {}, { key: Date.now() })), this.handleInput() }, addDomain: function () { var e = {}; this.record.list.forEach((function (t) { e[t.model] = t.options.defaultValue })), this.dynamicValidateForm.domains.push(R_(R_({}, e), {}, { key: Date.now() })), this.handleInput() }, handleInput: function () { this.$emit("change", this.dynamicValidateForm.domains) } } }, Y_ = F_, $_ = (n("9363"), Object(l_["a"])(Y_, Kw, Gw, !1, null, "3c514c7c", null)), B_ = $_.exports, W_ = B_, q_ = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-form-model", { ref: "dynamicValidateForm", staticClass: "select-input-list-box", attrs: { layout: "inline", model: e.dynamicValidateForm } }, e._l(e.record.columns, (function (t, r) { return n("div", { key: r }, [n("a-form-model-item", [e.record.options.multiple ? n("a-checkbox", { attrs: { checked: e.dynamicValidateForm.domains[r].checked }, on: { change: function (t) { return e.onCheckboxChange(t, r) } } }, [e._v(" " + e._s(t.label) + " ")]) : n("a-radio", { attrs: { checked: e.dynamicValidateForm.domains[r].checked }, on: { change: function (t) { return e.onRadioChange(t, r) } } }, [e._v(e._s(t.label))])], 1), e._l(t.list, (function (t, i) { return n("span", { key: i }, [n("KFormModelItem", { key: t.key + "1", attrs: { record: t, config: e.config, parentDisabled: e.disabled, domains: e.dynamicValidateForm.domains[r], dynamicData: e.dynamicData }, on: { input: e.handleInput }, model: { value: e.dynamicValidateForm.domains[r][t.model], callback: function (n) { e.$set(e.dynamicValidateForm.domains[r], t.model, n) }, expression: "dynamicValidateForm.domains[i][item.model]" } })], 1) }))], 2) })), 0) }, U_ = [], K_ = function () { var e = this, t = e.$createElement, n = e._self._c || t; return ["input", "textarea", "date", "time", "number", "radio", "checkbox", "select", "rate", "switch", "slider", "uploadImg", "uploadFile", "cascader", "treeSelect"].includes(e.record.type) ? n("a-form-model-item", { attrs: { prop: "domains." + e.record.model, rules: e.record.rules } }, ["textarea" === e.record.type ? n("a-textarea", { style: "width:" + e.record.options.width, attrs: { autoSize: { minRows: e.record.options.minRows, maxRows: e.record.options.maxRows }, disabled: e.record.options.disabled || e.parentDisabled, placeholder: e.record.options.placeholder, allowClear: e.record.options.clearable, maxLength: e.record.options.maxLength, rows: 4, value: e.value }, on: { change: function (t) { return e.handleChange(t.target.value) } } }) : "radio" === e.record.type ? n("a-radio-group", { attrs: { options: e.record.options.dynamic ? e.dynamicData[e.record.options.dynamicKey] ? e.dynamicData[e.record.options.dynamicKey] : [] : e.record.options.options, disabled: e.record.options.disabled || e.parentDisabled, placeholder: e.record.options.placeholder, value: e.value, checked: e.value }, on: { change: function (t) { return e.handleChange(t.target.value) } } }) : "checkbox" === e.record.type ? n("a-checkbox-group", { attrs: { options: e.record.options.dynamic ? e.dynamicData[e.record.options.dynamicKey] ? e.dynamicData[e.record.options.dynamicKey] : [] : e.record.options.options, disabled: e.record.options.disabled || e.parentDisabled, placeholder: e.record.options.placeholder, value: e.value }, on: { change: e.handleChange } }) : "slider" === e.record.type ? n("div", { staticClass: "slider-box", style: "width:" + e.record.options.width }, [n("div", { staticClass: "slider" }, [n("a-slider", { attrs: { disabled: e.record.options.disabled || e.parentDisabled, min: e.record.options.min, max: e.record.options.max, step: e.record.options.step, value: e.value }, on: { change: e.handleChange } })], 1), e.record.options.showInput ? n("div", { staticClass: "number" }, [n("a-input-number", { staticStyle: { width: "100%" }, attrs: { disabled: e.record.options.disabled || e.parentDisabled, min: e.record.options.min, max: e.record.options.max, step: e.record.options.step, value: e.value }, on: { change: e.handleChange } })], 1) : e._e()]) : n(e.componentItem, e._b({ tag: "component", style: "width:" + ("100%" !== e.record.options.width ? e.record.options.width : "120px"), attrs: { min: e.record.options.min || 0 === e.record.options.min ? e.record.options.min : -1 / 0, max: e.record.options.max || 0 === e.record.options.max ? e.record.options.max : 1 / 0, count: e.record.options.max, precision: e.record.options.precision > 50 || !e.record.options.precision && 0 !== e.record.options.precision ? null : e.record.options.precision, record: e.record, config: e.config, disabled: e.record.options.disabled || e.parentDisabled, parentDisabled: e.record.options.disabled || e.parentDisabled, allowClear: e.record.options.clearable, dynamicData: e.dynamicData, filterOption: !!e.record.options.showSearch && function (e, t) { return t.componentOptions.children[0].text.toLowerCase().indexOf(e.toLowerCase()) >= 0 }, treeData: e.record.options.dynamic ? e.dynamicData[e.record.options.dynamicKey] ? e.dynamicData[e.record.options.dynamicKey] : [] : e.record.options.options, options: e.record.options.dynamic ? e.dynamicData[e.record.options.dynamicKey] ? e.dynamicData[e.record.options.dynamicKey] : [] : e.record.options.options, mode: e.record.options.multiple ? "multiple" : "", checked: e.value, value: e.value }, on: { change: function (t) { return e.handleChange(t) } } }, "component", e.componentOption, !1))], 1) : "text" === e.record.type ? n("a-form-model-item", [n("div", { style: { textAlign: e.record.options.textAlign } }, [n("label", { class: { "ant-form-item-required": e.record.options.showRequiredMark }, style: { fontFamily: e.record.options.fontFamily, fontSize: e.record.options.fontSize, color: e.record.options.color }, domProps: { textContent: e._s(e.record.label) } })])]) : "html" === e.record.type ? n("div", { domProps: { innerHTML: e._s(e.record.options.defaultValue) } }) : n("div") }, G_ = [], X_ = n("a6fb"), J_ = { name: "KFormItem", props: ["record", "domains", "index", "value", "parentDisabled", "dynamicData", "config"], components: { UploadImg: b_, UploadFile: f_, KDatePicker: k_, KTimePicker: E_ }, computed: { componentItem: function () { return pC[this.record.type] }, componentOption: function () { return X_.omit(this.record.options, ["defaultValue", "disabled"]) } }, methods: { handleChange: function (e) { var t = e; e.target && (t = e.target.value), this.$emit("input", t) } } }, Q_ = J_, Z_ = (n("6da1"), Object(l_["a"])(Q_, K_, G_, !1, null, "c2f27656", null)), eC = Z_.exports, tC = { name: "KBatch", props: ["record", "value", "dynamicData", "config", "parentDisabled"], components: { KFormModelItem: eC }, watch: { value: { handler: function (e) { var t = e || []; t.length || this.record.columns.forEach((function (e) { var n = {}; e.list.forEach((function (e) { return e.model && (n[e.model] = null) })), n.checked = !1, n.value = e.value, n.label = e.label, t.push(n) })), this.dynamicValidateForm.domains = t }, immediate: !0, deep: !0 } }, data: function () { return { dynamicValidateForm: { domains: [] } } }, computed: { disabled: function () { return this.record.options.disabled || this.parentDisabled } }, methods: { validationSubform: function () { var e; return this.$refs.dynamicValidateForm.validate((function (t) { e = t })), e }, resetForm: function () { this.$refs.dynamicValidateForm.resetFields() }, onCheckboxChange: function (e, t) { this.dynamicValidateForm.domains[t].checked = e.target.checked, this.handleInput() }, onRadioChange: function (e, t) { this.dynamicValidateForm.domains.forEach((function (e) { return e.checked = !1 })), this.dynamicValidateForm.domains[t].checked = e.target.checked, this.handleInput() }, handleInput: function () { this.$emit("change", this.dynamicValidateForm.domains) } }, mounted: function () { this.handleInput() } }, nC = tC, rC = Object(l_["a"])(nC, q_, U_, !1, null, null, null), iC = rC.exports, oC = iC, aC = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("quillEditor", { ref: "vueQuillEditor", staticClass: "ql-editor-class", class: { chinesization: e.record.options.chinesization }, style: { height: e.record.options.height + "px" }, attrs: { value: e.value, options: e.editorOption, disabled: e.record.options.disabled || e.parentDisabled }, on: { blur: function (t) { return e.onEditorBlur(t) }, focus: function (t) { return e.onEditorFocus(t) }, change: function (t) { return e.onEditorChange(t) } } }) }, sC = [], cC = n("953d"), lC = (n("a753"), n("8096"), n("14e1"), { name: "editor", props: ["value", "record", "parentDisabled"], components: { quillEditor: cC["quillEditor"] }, data: function () { return { editorOption: { placeholder: this.record.options.placeholder } } }, methods: { onEditorBlur: function () { }, onEditorFocus: function () { }, onEditorChange: function (e) { this.$emit("change", e.html) } } }), uC = lC, hC = (n("7b4f"), Object(l_["a"])(uC, aC, sC, !1, null, "a8cc5f22", null)), fC = hC.exports, dC = fC, pC = { input: ab, number: Ww, select: $d, checkbox: Ff, radio: Uf, date: k_, time: E_, rate: Sw, slider: pw, switch: Dx, uploadFile: f_, uploadImg: b_, treeSelect: Lx, cascader: xb, batch: W_, selectInputList: oC, editor: dC }; d.a.use(xy), d.a.use(gi), d.a.use(Et), d.a.use(dy), d.a.use(oy), d.a.use(qg), d.a.use(ab), d.a.use(Sw), d.a.use(pw), d.a.use(Ww), d.a.use(Mf), d.a.use(Dx), d.a.use(Uf), d.a.use(Ff), d.a.use($d), d.a.use(Ag), d.a.use(Mg), d.a.use(Om), d.a.use(dm), d.a.use(sm), d.a.use(dv), d.a.use(Cl), d.a.use(Ve), d.a.use(Pc), d.a.use(Cc), d.a.use(Qs), d.a.use(bc), d.a.use(gc), d.a.use(Ho), d.a.use(Ji), d.a.use(Uw.a), d.a.prototype.$confirm = sm.confirm, d.a.prototype.$message = Xe; var vC = n("53ca"), mC = (n("43f7"), n("96bd"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-config-provider", { attrs: { locale: e.locale } }, [n("div", { staticClass: "form-designer-container-9136076486841527" }, [e.showHead ? n("k-header", { attrs: { title: e.title } }) : e._e(), e.toolbarsTop ? n("operatingArea", { attrs: { showToolbarsText: e.showToolbarsText, toolbars: e.toolbars, recordList: e.recordList, redoList: e.redoList }, on: { handleSave: e.handleSave, handlePreview: e.handlePreview, handleOpenImportJsonModal: e.handleOpenImportJsonModal, handleOpenCodeModal: e.handleOpenCodeModal, handleOpenJsonModal: e.handleOpenJsonModal, handleReset: e.handleReset, handleClose: e.handleClose, handleUndo: e.handleUndo, handleRedo: e.handleRedo } }, [n("template", { slot: "left-action" }, [e._t("left-action")], 2), n("template", { slot: "right-action" }, [e._t("right-action")], 2)], 2) : e._e(), n("div", { staticClass: "content", class: { "show-head": e.showHead, "toolbars-top": e.toolbarsTop, "show-head-and-toolbars-top": e.toolbarsTop && e.showHead } }, [n("aside", { staticClass: "left" }, [n("a-collapse", { attrs: { defaultActiveKey: e.collapseDefaultActiveKey }, on: { change: e.collapseChange } }, [e.basicsArray.length > 0 ? n("a-collapse-panel", { key: "1", attrs: { header: "鍩虹鎺т欢" } }, [n("collapseItem", { attrs: { list: e.basicsArray }, on: { generateKey: e.generateKey, handleListPush: e.handleListPush, start: e.handleStart } })], 1) : e._e(), e.customComponents.list.length > 0 ? n("a-collapse-panel", { key: "3", attrs: { header: e.customComponents.title } }, [n("collapseItem", { attrs: { list: e.customComponents.list }, on: { generateKey: e.generateKey, handleListPush: e.handleListPush, start: e.handleStart } })], 1) : e._e(), e.layoutArray.length > 0 ? n("a-collapse-panel", { key: "4", attrs: { header: "甯冨眬鎺т欢" } }, [n("collapseItem", { attrs: { list: e.layoutArray }, on: { generateKey: e.generateKey, handleListPush: e.handleListPush, start: e.handleStart } })], 1) : e._e()], 1)], 1), n("section", [e.toolbarsTop ? e._e() : n("operatingArea", { attrs: { showToolbarsText: e.showToolbarsText, toolbars: e.toolbars, recordList: e.recordList, redoList: e.redoList }, on: { handleSave: e.handleSave, handlePreview: e.handlePreview, handleOpenImportJsonModal: e.handleOpenImportJsonModal, handleOpenCodeModal: e.handleOpenCodeModal, handleOpenJsonModal: e.handleOpenJsonModal, handleReset: e.handleReset, handleClose: e.handleClose, handleUndo: e.handleUndo, handleRedo: e.handleRedo } }, [n("template", { slot: "left-action" }, [e._t("left-action")], 2), n("template", { slot: "right-action" }, [e._t("right-action")], 2)], 2), n("k-form-component-panel", { ref: "KFCP", class: { "no-toolbars-top": !e.toolbarsTop }, attrs: { data: e.data, selectItem: e.selectItem, noModel: e.noModel, hideModel: e.hideModel, startType: e.startType }, on: { handleSetSelectItem: e.handleSetSelectItem } }), n("k-json-modal", { ref: "jsonModal" }), n("k-code-modal", { ref: "codeModal" }), n("importJsonModal", { ref: "importJsonModal" }), n("previewModal", { ref: "previewModal" })], 1), n("aside", { staticClass: "right" }, [n("a-tabs", { attrs: { activeKey: e.activeKey, tabBarStyle: { margin: 0 } }, on: { change: e.changeTab } }, [n("a-tab-pane", { key: 1, attrs: { tab: "琛ㄥ崟灞炴�ц缃�" } }, [n("formProperties", { attrs: { config: e.data.config, previewOptions: e.previewOptions } })], 1), n("a-tab-pane", { key: 2, attrs: { tab: "鎺т欢灞炴�ц缃�" } }, [n("formItemProperties", { staticClass: "form-item-properties", attrs: { selectItem: e.selectItem, hideModel: e.hideModel } })], 1)], 1)], 1)])], 1)]) }), gC = [], yC = (n("28a5"), n("6762"), n("2fdb"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("header", { staticClass: "header", domProps: { textContent: e._s(e.title) } }) }), bC = [], xC = { props: { title: { type: String, default: "琛ㄥ崟璁捐鍣� --by kcz" } } }, wC = xC, _C = Object(l_["a"])(wC, yC, bC, !1, null, null, null), CC = _C.exports, MC = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "operating-area" }, [n("div", { staticClass: "left-btn-box" }, [n("a-tooltip", { attrs: { title: "淇濆瓨" } }, [e.toolbars.includes("save") ? n("a", { on: { click: function (t) { return e.$emit("handleSave") } } }, [n("a-icon", { attrs: { type: "save" } }), e.showToolbarsText ? n("span", [e._v("淇濆瓨")]) : e._e()], 1) : e._e()]), n("a-tooltip", { attrs: { title: "棰勮" } }, [e.toolbars.includes("preview") ? n("a", { on: { click: function (t) { return e.$emit("handlePreview") } } }, [n("a-icon", { attrs: { type: "chrome" } }), e.showToolbarsText ? n("span", [e._v("棰勮")]) : e._e()], 1) : e._e()]), n("a-tooltip", { attrs: { title: "瀵煎叆" } }, [e.toolbars.includes("importJson") ? n("a", { on: { click: function (t) { return e.$emit("handleOpenImportJsonModal") } } }, [n("a-icon", { attrs: { type: "upload" } }), e.showToolbarsText ? n("span", [e._v("瀵煎叆")]) : e._e()], 1) : e._e()]), n("a-tooltip", { attrs: { title: "鐢熸垚JSON" } }, [e.toolbars.includes("exportJson") ? n("a", { on: { click: function (t) { return e.$emit("handleOpenJsonModal") } } }, [n("a-icon", { attrs: { type: "credit-card" } }), e.showToolbarsText ? n("span", [e._v("鐢熸垚JSON")]) : e._e()], 1) : e._e()]), n("a-tooltip", { attrs: { title: "鐢熸垚浠g爜" } }, [e.toolbars.includes("exportCode") ? n("a", { on: { click: function (t) { return e.$emit("handleOpenCodeModal") } } }, [n("a-icon", { attrs: { type: "code" } }), e.showToolbarsText ? n("span", [e._v("鐢熸垚浠g爜")]) : e._e()], 1) : e._e()]), n("a-tooltip", { attrs: { title: "娓呯┖" } }, [e.toolbars.includes("reset") ? n("a", { on: { click: function (t) { return e.$emit("handleReset") } } }, [n("a-icon", { attrs: { type: "delete" } }), e.showToolbarsText ? n("span", [e._v("娓呯┖")]) : e._e()], 1) : e._e()]), n("a-divider", { attrs: { type: "vertical" } }), n("a-tooltip", { attrs: { title: "鎾ら攢" } }, [e.toolbars.includes("undo") ? n("a", { class: { disabled: !(e.recordList.length > 0) }, on: { click: function (t) { return e.$emit("handleUndo") } } }, [n("a-icon", { attrs: { type: "undo" } }), e.showToolbarsText ? n("span", [e._v("鎾ら攢")]) : e._e()], 1) : e._e()]), n("a-tooltip", { attrs: { title: "閲嶅仛" } }, [e.toolbars.includes("redo") ? n("a", { class: { disabled: !(e.redoList.length > 0) }, on: { click: function (t) { return e.$emit("handleRedo") } } }, [n("a-icon", { attrs: { type: "redo" } }), e.showToolbarsText ? n("span", [e._v("閲嶅仛")]) : e._e()], 1) : e._e()]), e._t("left-action")], 2), n("div", { staticClass: "right-btn-box" }, [e._t("right-action"), n("a-tooltip", { attrs: { title: "鍏抽棴" } }, [e.toolbars.includes("close") ? n("a", { on: { click: function (t) { return e.$emit("handleClose") } } }, [n("a-icon", { attrs: { type: "close" } })], 1) : e._e()])], 2)]) }, OC = [], kC = { props: { toolbars: { type: Array, default: function () { return ["save", "preview", "importJson", "exportJson", "exportCode", "reset", "close"] } }, recordList: { type: Array, require: !0 }, redoList: { type: Array, require: !0 }, showToolbarsText: { type: Boolean, default: !1 } } }, SC = kC, TC = Object(l_["a"])(SC, MC, OC, !1, null, null, null), AC = TC.exports, LC = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "form-panel" }, [n("p", { directives: [{ name: "show", rawName: "v-show", value: 0 === e.data.list.length, expression: "data.list.length === 0" }], staticClass: "hint-text" }, [n("a-empty", { attrs: { description: "浠庡乏渚ч�夋嫨鎺т欢娣诲姞" } })], 1), n("a-form", { staticClass: "a-form-box k-form-build", style: e.data.config.customStyle, attrs: { form: e.form, layout: e.data.config.layout, hideRequiredMark: e.data.config.hideRequiredMark } }, [n("draggable", e._b({ staticClass: "draggable-box", attrs: { tag: "div" }, on: { add: e.deepClone, start: function (t) { return e.dragStart(t, e.data.list) } }, model: { value: e.data.list, callback: function (t) { e.$set(e.data, "list", t) }, expression: "data.list" } }, "draggable", { group: "form-draggable", ghostClass: "moving", animation: 180, handle: ".drag-move" }, !1), [n("transition-group", { staticClass: "list-main", attrs: { tag: "div", name: "list" } }, e._l(e.data.list, (function (t) { return n("layoutItem", { key: t.key, staticClass: "drag-move", attrs: { record: t, config: e.data.config, selectItem: e.selectItem, startType: e.startType, insertAllowedType: e.insertAllowedType, hideModel: e.hideModel }, on: { "update:selectItem": function (t) { e.selectItem = t }, "update:select-item": function (t) { e.selectItem = t }, dragStart: e.dragStart, handleSelectItem: e.handleSelectItem, handleCopy: e.handleCopy, handleDelete: e.handleDelete, handleColAdd: e.handleColAdd, handleShowRightMenu: e.handleShowRightMenu } }) })), 1)], 1)], 1), n("div", { directives: [{ name: "show", rawName: "v-show", value: e.showRightMenu, expression: "showRightMenu" }], staticClass: "right-menu", style: { top: e.menuTop + "px", left: e.menuLeft + "px" } }, [n("ul", [n("li", { on: { click: e.handleDownMerge } }, [n("a-icon", { attrs: { type: "caret-down" } }), e._v("鍚戜笅鍚堝苟")], 1), n("li", { on: { click: e.handleRightMerge } }, [n("a-icon", { attrs: { type: "caret-right" } }), e._v("鍚戝彸鍚堝苟")], 1), n("li", { on: { click: e.handleRightSplit } }, [n("a-icon", { attrs: { type: "border-inner" } }), e._v("鎷嗗垎鍗曞厓鏍� ")], 1), n("li", { on: { click: e.handleAddCol } }, [n("a-icon", { attrs: { type: "border-horizontal" } }), e._v("澧炲姞涓�鍒� ")], 1), n("li", { on: { click: e.handleAddRow } }, [n("a-icon", { attrs: { type: "border-verticle" } }), e._v("澧炲姞涓�琛�")], 1)])])], 1) }, jC = [], zC = n("310e"), EC = n.n(zC), PC = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { class: { "layout-width": ["grid", "table", "card", "divider", "html"].includes(e.record.type) } }, ["batch" === e.record.type ? [n("div", { staticClass: "batch-box", class: { active: e.record.key === e.selectItem.key }, on: { click: function (t) { return t.stopPropagation(), e.handleSelectItem(e.record) } } }, [n("a-form-item", { style: "horizontal" === e.config.layout && "flex" === e.config.labelLayout && e.record.options.showLabel ? { display: "flex" } : {}, attrs: { label: e.record.options.showLabel ? e.record.label : "", "label-col": "horizontal" === e.config.layout && e.record.options.showLabel ? "flex" === e.config.labelLayout ? { style: "width:" + e.config.labelWidth + "px" } : e.config.labelCol : {}, "wrapper-col": "horizontal" === e.config.layout && e.record.options.showLabel ? "flex" === e.config.labelLayout ? { style: "width:auto;flex:1" } : e.config.wrapperCol : {} } }, [n("draggable", e._b({ staticClass: "draggable-box", attrs: { tag: "div" }, on: { start: function (t) { return e.$emit("dragStart", t, e.record.list) }, add: function (t) { return e.$emit("handleColAdd", t, e.record.list) } }, model: { value: e.record.list, callback: function (t) { e.$set(e.record, "list", t) }, expression: "record.list" } }, "draggable", { group: e.insertAllowed ? "form-draggable" : "", ghostClass: "moving", animation: 180, handle: ".drag-move" }, !1), [n("transition-group", { staticClass: "list-main", attrs: { tag: "div", name: "list" } }, e._l(e.record.list, (function (t) { return n("formNode", { key: t.key, staticClass: "drag-move", attrs: { selectItem: e.selectItem, record: t, hideModel: e.hideModel, config: e.config }, on: { "update:selectItem": function (t) { e.selectItem = t }, "update:select-item": function (t) { e.selectItem = t }, handleSelectItem: e.handleSelectItem, handleColAdd: e.handleColAdd, handleCopy: function (t) { return e.$emit("handleCopy") }, handleShowRightMenu: e.handleShowRightMenu, handleDelete: function (t) { return e.$emit("handleDelete") } } }) })), 1)], 1)], 1), n("div", { staticClass: "copy", class: e.record.key === e.selectItem.key ? "active" : "unactivated", on: { click: function (t) { return t.stopPropagation(), e.$emit("handleCopy") } } }, [n("a-icon", { attrs: { type: "copy" } })], 1), n("div", { staticClass: "delete", class: e.record.key === e.selectItem.key ? "active" : "unactivated", on: { click: function (t) { return t.stopPropagation(), e.$emit("handleDelete") } } }, [n("a-icon", { attrs: { type: "delete" } })], 1)], 1)] : "selectInputList" === e.record.type ? [n("div", { staticClass: "select-input-list-box", class: { active: e.record.key === e.selectItem.key }, on: { click: function (t) { return t.stopPropagation(), e.handleSelectItem(e.record) } } }, [n("a-form-item", { style: "horizontal" === e.config.layout && "flex" === e.config.labelLayout && e.record.options.showLabel ? { display: "flex" } : {}, attrs: { label: e.record.options.showLabel ? e.record.label : "", "label-col": "horizontal" === e.config.layout && e.record.options.showLabel ? "flex" === e.config.labelLayout ? { style: "width:" + e.config.labelWidth + "px" } : e.config.labelCol : {}, "wrapper-col": "horizontal" === e.config.layout && e.record.options.showLabel ? "flex" === e.config.labelLayout ? { style: "width:auto;flex:1" } : e.config.wrapperCol : {} } }, e._l(e.record.columns, (function (t, r) { return n("div", { key: r, staticClass: "column-box" }, [n("div", { staticClass: "check-box" }, [e.record.options.multiple ? n("a-checkbox", { attrs: { disabled: "" } }, [e._v(" " + e._s(t.label) + " ")]) : n("a-radio-group", { attrs: { disabled: "", name: "radio" } }, [n("a-radio", { attrs: { value: t.value } }, [e._v(e._s(t.label))])], 1)], 1), n("draggable", e._b({ staticClass: "draggable-box", attrs: { tag: "div" }, on: { start: function (n) { return e.$emit("dragStart", n, t.list) }, add: function (n) { return e.$emit("handleColAdd", n, t.list) } }, model: { value: t.list, callback: function (n) { e.$set(t, "list", n) }, expression: "column.list" } }, "draggable", { group: e.insertAllowed ? "form-draggable" : "", ghostClass: "moving", animation: 180, handle: ".drag-move" }, !1), [n("transition-group", { staticClass: "list-main", attrs: { tag: "div", name: "list" } }, e._l(t.list, (function (t) { return n("formNode", { key: t.key, staticClass: "drag-move", attrs: { selectItem: e.selectItem, record: t, hideModel: e.hideModel, config: e.config }, on: { "update:selectItem": function (t) { e.selectItem = t }, "update:select-item": function (t) { e.selectItem = t }, handleSelectItem: e.handleSelectItem, handleColAdd: e.handleColAdd, handleCopy: function (t) { return e.$emit("handleCopy") }, handleShowRightMenu: e.handleShowRightMenu, handleDelete: function (t) { return e.$emit("handleDelete") } } }) })), 1)], 1)], 1) })), 0), n("div", { staticClass: "copy", class: e.record.key === e.selectItem.key ? "active" : "unactivated", on: { click: function (t) { return t.stopPropagation(), e.$emit("handleCopy") } } }, [n("a-icon", { attrs: { type: "copy" } })], 1), n("div", { staticClass: "delete", class: e.record.key === e.selectItem.key ? "active" : "unactivated", on: { click: function (t) { return t.stopPropagation(), e.$emit("handleDelete") } } }, [n("a-icon", { attrs: { type: "delete" } })], 1)], 1)] : "tabs" === e.record.type ? [n("div", { staticClass: "grid-box", class: { active: e.record.key === e.selectItem.key }, on: { click: function (t) { return t.stopPropagation(), e.handleSelectItem(e.record) } } }, [n("a-tabs", { staticClass: "grid-row", attrs: { "default-active-key": 0, tabBarGutter: e.record.options.tabBarGutter || null, type: e.record.options.type, size: e.record.options.size, tabPosition: e.record.options.tabPosition, animated: e.record.options.animated } }, e._l(e.record.columns, (function (t, r) { return n("a-tab-pane", { key: r, attrs: { tab: t.label } }, [n("div", { staticClass: "grid-col" }, [n("draggable", e._b({ staticClass: "draggable-box", attrs: { tag: "div" }, on: { start: function (n) { return e.$emit("dragStart", n, t.list) }, add: function (n) { return e.$emit("handleColAdd", n, t.list) } }, model: { value: t.list, callback: function (n) { e.$set(t, "list", n) }, expression: "tabItem.list" } }, "draggable", { group: "form-draggable", ghostClass: "moving", animation: 180, handle: ".drag-move" }, !1), [n("transition-group", { staticClass: "list-main", attrs: { tag: "div", name: "list" } }, e._l(t.list, (function (t) { return n("layoutItem", { key: t.key, staticClass: "drag-move", attrs: { selectItem: e.selectItem, startType: e.startType, insertAllowedType: e.insertAllowedType, record: t, hideModel: e.hideModel, config: e.config }, on: { "update:selectItem": function (t) { e.selectItem = t }, "update:select-item": function (t) { e.selectItem = t }, handleSelectItem: e.handleSelectItem, handleColAdd: e.handleColAdd, handleCopy: function (t) { return e.$emit("handleCopy") }, handleShowRightMenu: e.handleShowRightMenu, handleDelete: function (t) { return e.$emit("handleDelete") } } }) })), 1)], 1)], 1)]) })), 1), n("div", { staticClass: "copy", class: e.record.key === e.selectItem.key ? "active" : "unactivated", on: { click: function (t) { return t.stopPropagation(), e.$emit("handleCopy") } } }, [n("a-icon", { attrs: { type: "copy" } })], 1), n("div", { staticClass: "delete", class: e.record.key === e.selectItem.key ? "active" : "unactivated", on: { click: function (t) { return t.stopPropagation(), e.$emit("handleDelete") } } }, [n("a-icon", { attrs: { type: "delete" } })], 1)], 1)] : "grid" === e.record.type ? [n("div", { staticClass: "grid-box", class: { active: e.record.key === e.selectItem.key }, on: { click: function (t) { return t.stopPropagation(), e.handleSelectItem(e.record) } } }, [n("a-row", { staticClass: "grid-row", attrs: { gutter: e.record.options.gutter } }, e._l(e.record.columns, (function (t, r) { return n("a-col", { key: r, staticClass: "grid-col", attrs: { span: t.span || 0 } }, [n("draggable", e._b({ staticClass: "draggable-box", attrs: { tag: "div" }, on: { start: function (n) { return e.$emit("dragStart", n, t.list) }, add: function (n) { return e.$emit("handleColAdd", n, t.list) } }, model: { value: t.list, callback: function (n) { e.$set(t, "list", n) }, expression: "colItem.list" } }, "draggable", { group: "form-draggable", ghostClass: "moving", animation: 180, handle: ".drag-move" }, !1), [n("transition-group", { staticClass: "list-main", attrs: { tag: "div", name: "list" } }, e._l(t.list, (function (t) { return n("layoutItem", { key: t.key, staticClass: "drag-move", attrs: { selectItem: e.selectItem, startType: e.startType, insertAllowedType: e.insertAllowedType, record: t, hideModel: e.hideModel, config: e.config }, on: { "update:selectItem": function (t) { e.selectItem = t }, "update:select-item": function (t) { e.selectItem = t }, handleSelectItem: e.handleSelectItem, handleColAdd: e.handleColAdd, handleCopy: function (t) { return e.$emit("handleCopy") }, handleShowRightMenu: e.handleShowRightMenu, handleDelete: function (t) { return e.$emit("handleDelete") } } }) })), 1)], 1)], 1) })), 1), n("div", { staticClass: "copy", class: e.record.key === e.selectItem.key ? "active" : "unactivated", on: { click: function (t) { return t.stopPropagation(), e.$emit("handleCopy") } } }, [n("a-icon", { attrs: { type: "copy" } })], 1), n("div", { staticClass: "delete", class: e.record.key === e.selectItem.key ? "active" : "unactivated", on: { click: function (t) { return t.stopPropagation(), e.$emit("handleDelete") } } }, [n("a-icon", { attrs: { type: "delete" } })], 1)], 1)] : "card" === e.record.type ? [n("div", { staticClass: "grid-box", class: { active: e.record.key === e.selectItem.key }, on: { click: function (t) { return t.stopPropagation(), e.handleSelectItem(e.record) } } }, [n("a-card", { staticClass: "grid-row", attrs: { title: e.record.label } }, [n("div", { staticClass: "grid-col" }, [n("draggable", e._b({ staticClass: "draggable-box", attrs: { tag: "div" }, on: { start: function (t) { return e.$emit("dragStart", t, e.record.list) }, add: function (t) { return e.$emit("handleColAdd", t, e.record.list) } }, model: { value: e.record.list, callback: function (t) { e.$set(e.record, "list", t) }, expression: "record.list" } }, "draggable", { group: "form-draggable", ghostClass: "moving", animation: 180, handle: ".drag-move" }, !1), [n("transition-group", { staticClass: "list-main", attrs: { tag: "div", name: "list" } }, e._l(e.record.list, (function (t) { return n("layoutItem", { key: t.key, staticClass: "drag-move", attrs: { selectItem: e.selectItem, startType: e.startType, insertAllowedType: e.insertAllowedType, record: t, hideModel: e.hideModel, config: e.config }, on: { "update:selectItem": function (t) { e.selectItem = t }, "update:select-item": function (t) { e.selectItem = t }, handleSelectItem: e.handleSelectItem, handleColAdd: e.handleColAdd, handleCopy: function (t) { return e.$emit("handleCopy") }, handleShowRightMenu: e.handleShowRightMenu, handleDelete: function (t) { return e.$emit("handleDelete") } } }) })), 1)], 1)], 1)]), n("div", { staticClass: "copy", class: e.record.key === e.selectItem.key ? "active" : "unactivated", on: { click: function (t) { return t.stopPropagation(), e.$emit("handleCopy") } } }, [n("a-icon", { attrs: { type: "copy" } })], 1), n("div", { staticClass: "delete", class: e.record.key === e.selectItem.key ? "active" : "unactivated", on: { click: function (t) { return t.stopPropagation(), e.$emit("handleDelete") } } }, [n("a-icon", { attrs: { type: "delete" } })], 1)], 1)] : "table" === e.record.type ? [n("div", { staticClass: "table-box", class: { active: e.record.key === e.selectItem.key }, on: { click: function (t) { return t.stopPropagation(), e.handleSelectItem(e.record) } } }, [n("table", { staticClass: "table-layout kk-table-9136076486841527", class: { bright: e.record.options.bright, small: e.record.options.small, bordered: e.record.options.bordered }, style: e.record.options.customStyle }, e._l(e.record.trs, (function (t, r) { return n("tr", { key: r }, e._l(t.tds, (function (t, i) { return n("td", { directives: [{ name: "show", rawName: "v-show", value: t.colspan && t.rowspan, expression: "tdItem.colspan && tdItem.rowspan" }], key: i, staticClass: "table-td", attrs: { colspan: t.colspan, rowspan: t.rowspan }, on: { contextmenu: function (t) { return t.preventDefault(), e.$emit("handleShowRightMenu", t, e.record, r, i) } } }, [n("draggable", e._b({ staticClass: "draggable-box", attrs: { tag: "div" }, on: { start: function (n) { return e.$emit("dragStart", n, t.list) }, add: function (n) { return e.$emit("handleColAdd", n, t.list) } }, model: { value: t.list, callback: function (n) { e.$set(t, "list", n) }, expression: "tdItem.list" } }, "draggable", { group: "form-draggable", ghostClass: "moving", animation: 180, handle: ".drag-move" }, !1), [n("transition-group", { staticClass: "list-main", attrs: { tag: "div", name: "list" } }, e._l(t.list, (function (t) { return n("layoutItem", { key: t.key, staticClass: "drag-move", attrs: { selectItem: e.selectItem, startType: e.startType, insertAllowedType: e.insertAllowedType, record: t, hideModel: e.hideModel, config: e.config }, on: { "update:selectItem": function (t) { e.selectItem = t }, "update:select-item": function (t) { e.selectItem = t }, handleSelectItem: e.handleSelectItem, handleColAdd: e.handleColAdd, handleCopy: function (t) { return e.$emit("handleCopy") }, handleShowRightMenu: e.handleShowRightMenu, handleDelete: function (t) { return e.$emit("handleDelete") } } }) })), 1)], 1)], 1) })), 0) })), 0), n("div", { staticClass: "copy", class: e.record.key === e.selectItem.key ? "active" : "unactivated", on: { click: function (t) { return t.stopPropagation(), e.$emit("handleCopy") } } }, [n("a-icon", { attrs: { type: "copy" } })], 1), n("div", { staticClass: "delete", class: e.record.key === e.selectItem.key ? "active" : "unactivated", on: { click: function (t) { return t.stopPropagation(), e.$emit("handleDelete") } } }, [n("a-icon", { attrs: { type: "delete" } })], 1)])] : [n("formNode", { key: e.record.key, attrs: { selectItem: e.selectItem, record: e.record, config: e.config, hideModel: e.hideModel }, on: { "update:selectItem": function (t) { e.selectItem = t }, "update:select-item": function (t) { e.selectItem = t }, handleSelectItem: e.handleSelectItem, handleCopy: function (t) { return e.$emit("handleCopy") }, handleDelete: function (t) { return e.$emit("handleDelete") }, handleShowRightMenu: function (t) { return e.$emit("handleShowRightMenu") } } })]], 2) }, DC = [], HC = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "drag-move-box", class: { active: e.record.key === e.selectItem.key }, on: { click: function (t) { return t.stopPropagation(), e.$emit("handleSelectItem", e.record) } } }, [n("div", { staticClass: "form-item-box" }, [n("kFormItem", { attrs: { formConfig: e.config, record: e.record } })], 1), e.hideModel ? e._e() : n("div", { staticClass: "show-key-box", domProps: { textContent: e._s(e.record.label + (e.record.model ? "/" + e.record.model : "")) } }), n("div", { staticClass: "copy", class: e.record.key === e.selectItem.key ? "active" : "unactivated", on: { click: function (t) { return t.stopPropagation(), e.$emit("handleCopy") } } }, [n("a-icon", { attrs: { type: "copy" } })], 1), n("div", { staticClass: "delete", class: e.record.key === e.selectItem.key ? "active" : "unactivated", on: { click: function (t) { return t.stopPropagation(), e.$emit("handleDelete") } } }, [n("a-icon", { attrs: { type: "delete" } })], 1)]) }, VC = [], IC = function () { var e = this, t = e.$createElement, n = e._self._c || t; return ["input", "textarea", "date", "time", "number", "radio", "checkbox", "select", "rate", "switch", "slider", "uploadImg", "uploadFile", "cascader", "treeSelect"].includes(e.record.type) ? n("a-form-item", { style: "horizontal" === e.formConfig.layout && "flex" === e.formConfig.labelLayout ? { display: "flex" } : {}, attrs: { "label-col": "horizontal" === e.formConfig.layout ? "flex" === e.formConfig.labelLayout ? { style: "width:" + e.formConfig.labelWidth + "px" } : e.formConfig.labelCol : {}, "wrapper-col": "horizontal" === e.formConfig.layout ? "flex" === e.formConfig.labelLayout ? { style: "width:auto;flex:1" } : e.formConfig.wrapperCol : {} } }, [n("span", { attrs: { slot: "label" }, slot: "label" }, [n("a-tooltip", [n("span", { domProps: { textContent: e._s(e.record.label) } }), e.record.help ? n("span", { attrs: { slot: "title" }, domProps: { innerHTML: e._s(e.record.help) }, slot: "title" }) : e._e(), e.record.help ? n("a-icon", { staticClass: "question-circle", attrs: { type: "question-circle-o" } }) : e._e()], 1)], 1), "textarea" === e.record.type ? n("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: [e.record.model, { initialValue: e.record.options.defaultValue, rules: e.record.rules }], expression: "[\n      record.model, // input 鐨� name\n      {\n        initialValue: record.options.defaultValue, // 榛樿鍊糪n        rules: record.rules // 楠岃瘉瑙勫垯\n      }\n    ]" }], style: "width:" + e.record.options.width, attrs: { autoSize: { minRows: e.record.options.minRows, maxRows: e.record.options.maxRows }, disabled: e.disabled || e.record.options.disabled, placeholder: e.record.options.placeholder, allowClear: e.record.options.clearable, maxLength: e.record.options.maxLength, rows: 4 }, on: { change: function (t) { return e.handleChange(t.target.value, e.record.model) } } }) : "radio" === e.record.type ? n("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: [e.record.model, { initialValue: e.record.options.defaultValue, rules: e.record.rules }], expression: "[\n      record.model,\n      {\n        initialValue: record.options.defaultValue,\n        rules: record.rules\n      }\n    ]" }], attrs: { options: e.record.options.dynamic ? e.dynamicData[e.record.options.dynamicKey] ? e.dynamicData[e.record.options.dynamicKey] : [] : e.record.options.options, disabled: e.disabled || e.record.options.disabled, placeholder: e.record.options.placeholder }, on: { change: function (t) { return e.handleChange(t.target.value, e.record.model) } } }) : "checkbox" === e.record.type ? n("a-checkbox-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: [e.record.model, { initialValue: e.record.options.defaultValue, rules: e.record.rules }], expression: "[\n      record.model,\n      {\n        initialValue: record.options.defaultValue,\n        rules: record.rules\n      }\n    ]" }], attrs: { options: e.record.options.dynamic ? e.dynamicData[e.record.options.dynamicKey] ? e.dynamicData[e.record.options.dynamicKey] : [] : e.record.options.options, disabled: e.disabled || e.record.options.disabled, placeholder: e.record.options.placeholder }, on: { change: function (t) { return e.handleChange(t, e.record.model) } } }) : "switch" === e.record.type ? n("a-switch", { directives: [{ name: "decorator", rawName: "v-decorator", value: [e.record.model, { initialValue: e.record.options.defaultValue, valuePropName: "checked", rules: e.record.rules }], expression: "[\n      record.model,\n      {\n        initialValue: record.options.defaultValue,\n        valuePropName: 'checked',\n        rules: record.rules\n      }\n    ]" }], attrs: { disabled: e.disabled || e.record.options.disabled }, on: { change: function (t) { return e.handleChange(t, e.record.model) } } }) : "slider" === e.record.type ? n("div", { staticClass: "slider-box", style: "width:" + e.record.options.width }, [n("div", { staticClass: "slider" }, [n("a-slider", { directives: [{ name: "decorator", rawName: "v-decorator", value: [e.record.model, { initialValue: e.record.options.defaultValue, rules: e.record.rules }], expression: "[\n          record.model,\n          {\n            initialValue: record.options.defaultValue,\n            rules: record.rules\n          }\n        ]" }], attrs: { disabled: e.disabled || e.record.options.disabled, min: e.record.options.min, max: e.record.options.max, step: e.record.options.step }, on: { change: function (t) { return e.handleChange(t, e.record.model) } } })], 1), e.record.options.showInput ? n("div", { staticClass: "number" }, [n("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: [e.record.model, { initialValue: e.record.options.defaultValue, rules: [{ validator: function (t, n, r) { e.record.options.step && n % e.record.options.step !== 0 && r("杈撳叆鍊煎繀椤绘槸姝ラ暱鐨勫�嶆暟"), r() } }] }], expression: "[\n          record.model,\n          {\n            initialValue: record.options.defaultValue,\n            rules: [\n              {\n                validator: (rule, value, callback) => {\n                  if (\n                    record.options.step &&\n                    value % record.options.step !== 0\n                  ) {\n                    callback('杈撳叆鍊煎繀椤绘槸姝ラ暱鐨勫�嶆暟');\n                  }\n                  callback();\n                }\n              }\n            ]\n          }\n        ]" }], staticStyle: { width: "100%" }, attrs: { disabled: e.disabled || e.record.options.disabled, min: e.record.options.min, max: e.record.options.max, step: e.record.options.step }, on: { change: function (t) { return e.handleChange(t, e.record.model) } } })], 1) : e._e()]) : n(e.componentItem, e._b({ directives: [{ name: "decorator", rawName: "v-decorator", value: [e.record.model, { initialValue: e.record.options.defaultValue, rules: e.record.rules }], expression: "[\n      record.model, // input 鐨� name\n      {\n        initialValue: record.options.defaultValue, // 榛樿鍊糪n        rules: record.rules // 楠岃瘉瑙勫垯\n      }\n    ]" }], tag: "component", style: "width:" + e.record.options.width, attrs: { min: e.record.options.min || 0 === e.record.options.min ? e.record.options.min : -1 / 0, max: e.record.options.max || 0 === e.record.options.max ? e.record.options.max : 1 / 0, precision: e.record.options.precision > 50 || !e.record.options.precision && 0 !== e.record.options.precision ? null : e.record.options.precision, parentDisabled: e.disabled || e.record.options.disabled, disabled: e.disabled || e.record.options.disabled, record: e.record, config: e.config, filterOption: !!e.record.options.showSearch && function (e, t) { return t.componentOptions.children[0].text.toLowerCase().indexOf(e.toLowerCase()) >= 0 }, allowClear: e.record.options.clearable, dynamicData: e.dynamicData, treeData: e.record.options.dynamic ? e.dynamicData[e.record.options.dynamicKey] ? e.dynamicData[e.record.options.dynamicKey] : [] : e.record.options.options, options: e.record.options.dynamic ? e.dynamicData[e.record.options.dynamicKey] ? e.dynamicData[e.record.options.dynamicKey] : [] : e.record.options.options, mode: e.record.options.multiple ? "multiple" : "" }, on: { change: function (t) { return e.handleChange(t, e.record.model) } } }, "component", e.componentOption, !1))], 1) : ["batch", "editor", "selectInputList"].includes(e.record.type) ? n("a-form-item", { style: "horizontal" === e.formConfig.layout && "flex" === e.formConfig.labelLayout && e.record.options.showLabel ? { display: "flex" } : {}, attrs: { label: e.record.options.showLabel ? e.record.label : "", "label-col": "horizontal" === e.formConfig.layout && e.record.options.showLabel ? "flex" === e.formConfig.labelLayout ? { style: "width:" + e.formConfig.labelWidth + "px" } : e.formConfig.labelCol : {}, "wrapper-col": "horizontal" === e.formConfig.layout && e.record.options.showLabel ? "flex" === e.formConfig.labelLayout ? { style: "width:auto;flex:1" } : e.formConfig.wrapperCol : {} } }, [n(e.componentItem, e._b({ directives: [{ name: "decorator", rawName: "v-decorator", value: [e.record.model, { initialValue: e.record.options.defaultValue, rules: e.record.rules }], expression: "[\n      record.model, // input 鐨� name\n      {\n        initialValue: record.options.defaultValue, // 榛樿鍊糪n        rules: record.rules // 楠岃瘉瑙勫垯\n      }\n    ]" }], ref: ["batch", "selectInputList"].includes(e.record.type) && "KBatch", tag: "component", style: "width:" + e.record.options.width, attrs: { record: e.record, config: e.config, parentDisabled: e.disabled || e.record.options.disabled, disabled: e.disabled || e.record.options.disabled, dynamicData: e.dynamicData }, on: { change: function (t) { return e.handleChange(t, e.record.model) } } }, "component", e.componentOption, !1))], 1) : "button" === e.record.type ? n("a-form-item", [n("a-button", { attrs: { disabled: e.disabled || e.record.options.disabled, type: e.record.options.type, "html-type": "submit" === e.record.options.handle ? "submit" : void 0 }, domProps: { textContent: e._s(e.record.label) }, on: { click: function (t) { "submit" !== e.record.options.handle && ("reset" === e.record.options.handle ? e.$emit("handleReset") : e.dynamicData[e.record.options.dynamicFun] && e.dynamicData[e.record.options.dynamicFun]()) } } })], 1) : "alert" === e.record.type ? n("a-form-item", [n("a-alert", { attrs: { message: e.record.label, description: e.record.options.description, type: e.record.options.type, showIcon: e.record.options.showIcon, closable: e.record.options.closable, banner: e.record.options.banner } })], 1) : "text" === e.record.type ? n("a-form-item", [n("div", { style: { textAlign: e.record.options.textAlign } }, [n("label", { class: { "ant-form-item-required": e.record.options.showRequiredMark }, style: { fontFamily: e.record.options.fontFamily, fontSize: e.record.options.fontSize, color: e.record.options.color }, domProps: { textContent: e._s(e.record.label) } })])]) : "html" === e.record.type ? n("div", { domProps: { innerHTML: e._s(e.record.options.defaultValue) } }) : e.customList.includes(e.record.type) ? n("customComponent", { attrs: { record: e.record, disabled: e.disabled, dynamicData: e.dynamicData, formConfig: e.formConfig }, on: { change: function (t) { return e.handleChange(t, e.record.model) } } }) : n("div", ["divider" === e.record.type && "" !== e.record.label && e.record.options.orientation ? n("a-divider", { attrs: { orientation: e.record.options.orientation } }, [e._v(e._s(e.record.label))]) : "divider" === e.record.type && "" !== e.record.label ? n("a-divider", [e._v(e._s(e.record.label))]) : "divider" === e.record.type && "" === e.record.label ? n("a-divider") : e._e()], 1) }, NC = [], RC = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-form-item", { style: "horizontal" === e.formConfig.layout && "flex" === e.formConfig.labelLayout ? { display: "flex" } : {}, attrs: { label: e.record.label, "label-col": "horizontal" === e.formConfig.layout ? "flex" === e.formConfig.labelLayout ? { style: "width:" + e.formConfig.labelWidth + "px" } : e.formConfig.labelCol : {}, "wrapper-col": "horizontal" === e.formConfig.layout ? "flex" === e.formConfig.labelLayout ? { style: "width:auto;flex:1" } : e.formConfig.wrapperCol : {} } }, [n(e.customComponent, { directives: [{ name: "decorator", rawName: "v-decorator", value: [e.record.model, { initialValue: e.record.options.defaultValue, rules: e.record.rules }], expression: "[\n      record.model,\n      {\n        initialValue: record.options.defaultValue,\n        rules: record.rules\n      }\n    ]" }], tag: "component", style: "width:" + e.record.options.width, attrs: { record: e.record, disabled: e.disabled, dynamicData: e.dynamicData, height: "undefined" !== typeof e.record.options.height ? e.record.options.height : "" }, on: { change: e.handleChange } })], 1) }, FC = [], YC = { name: "customComponent", props: ["record", "formConfig", "disabled", "dynamicData"], computed: { customComponent: function () { var e = {}; return window.$customComponentList && window.$customComponentList.forEach((function (t) { e[t.type] = t.component })), e[this.record.type] } }, methods: { handleChange: function (e, t) { this.$emit("change", e, t) } } }, $C = YC, BC = Object(l_["a"])($C, RC, FC, !1, null, null, null), WC = BC.exports, qC = n("a6fb"), UC = { name: "KFormItem", props: { record: { type: Object, required: !0 }, formConfig: { type: Object, required: !0 }, config: { type: Object, default: function () { return {} } }, dynamicData: { type: Object, default: function () { return {} } }, disabled: { type: Boolean, default: !1 } }, components: { customComponent: WC }, computed: { customList: function () { return window.$customComponentList ? window.$customComponentList.map((function (e) { return e.type })) : [] }, componentItem: function () { return pC[this.record.type] }, componentOption: function () { return qC.omit(this.record.options, ["defaultValue", "disabled"]) } }, methods: { validationSubform: function () { return !this.$refs.KBatch || this.$refs.KBatch.validationSubform() }, handleChange: function (e, t) { var n = e; e && e.target && (n = e.target.value), this.$emit("change", n, t) } } }, KC = UC, GC = (n("608e"), Object(l_["a"])(KC, IC, NC, !1, null, "1e330349", null)), XC = GC.exports; XC.install = function (e) { e.component(XC.name, XC) }; var JC = XC, QC = { props: { record: { type: Object, required: !0 }, selectItem: { type: Object, default: function () { } }, config: { type: Object, required: !0 }, hideModel: { type: Boolean, default: !1 } }, components: { kFormItem: JC } }, ZC = QC, eM = Object(l_["a"])(ZC, HC, VC, !1, null, null, null), tM = eM.exports, nM = { name: "layoutItem", props: { record: { type: Object, required: !0 }, selectItem: { type: Object, required: !0 }, config: { type: Object, required: !0 }, startType: { type: String, required: !0 }, insertAllowedType: { type: Array, required: !0 }, hideModel: { type: Boolean, default: !1 } }, computed: { insertAllowed: function () { return this.insertAllowedType.includes(this.startType) } }, components: { formNode: tM, draggable: EC.a }, methods: { handleShowRightMenu: function (e, t, n, r) { this.$emit("handleShowRightMenu", e, t, n, r) }, handleSelectItem: function (e) { this.$emit("handleSelectItem", e) }, handleColAdd: function (e, t) { this.$emit("handleColAdd", e, t) } } }, rM = nM, iM = Object(l_["a"])(rM, PC, DC, !1, null, null, null), oM = iM.exports; function aM(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function sM(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? aM(Object(n), !0).forEach((function (t) { Xw(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : aM(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } n("f9d4"); var cM = { name: "KCenter", data: function () { return { form: this.$form.createForm(this), insertAllowedType: ["input", "textarea", "number", "select", "checkbox", "radio", "date", "time", "rate", "slider", "uploadFile", "uploadImg", "cascader", "treeSelect", "switch", "text", "html"], rightMenuSelectValue: {}, showRightMenu: !1, menuTop: 0, menuLeft: 0, trIndex: 0, tdIndex: 0 } }, props: { noModel: { type: Array, required: !0 }, startType: { type: String, required: !0 }, data: { type: Object, required: !0 }, selectItem: { type: Object, default: function () { } }, hideModel: { type: Boolean, default: !1 } }, components: { draggable: EC.a, layoutItem: oM }, methods: { deepClone: function (e) { var t = e.newIndex, n = JSON.stringify(this.data.list); this.data.list = JSON.parse(n), delete this.data.list[t].icon, delete this.data.list[t].component, this.$emit("handleSetSelectItem", this.data.list[t]) }, handleColAdd: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], r = e.newIndex, i = t[r].type + "_" + (new Date).getTime(); if ("" === t[r].key || n) { if (this.$set(t, r, sM(sM({}, t[r]), {}, { key: i, model: i })), this.noModel.includes(t[r].type) && delete t[r].model, "undefined" !== typeof t[r].options) { var o = JSON.stringify(t[r].options); t[r].options = JSON.parse(o) } if ("undefined" !== typeof t[r].rules) { var a = JSON.stringify(t[r].rules); t[r].rules = JSON.parse(a) } if ("undefined" !== typeof t[r].list && (t[r].list = []), "undefined" !== typeof t[r].columns) { var s = JSON.stringify(t[r].columns); t[r].columns = JSON.parse(s), t[r].columns.forEach((function (e) { e.list = [] })) } if ("table" === t[r].type) { var c = JSON.stringify(t[r].trs); t[r].trs = JSON.parse(c), t[r].trs.forEach((function (e) { e.tds.forEach((function (e) { e.list = [] })) })) } } var l = JSON.stringify(t[r]); t[r] = JSON.parse(l), this.$emit("handleSetSelectItem", t[r]) }, dragStart: function (e, t) { this.$emit("handleSetSelectItem", t[e.oldIndex]) }, handleSelectItem: function (e) { this.$emit("handleSetSelectItem", e) }, handleCopy: function () { var e = this, t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0], n = arguments.length > 1 ? arguments[1] : void 0, r = function r(i) { i.forEach((function (o, a) { if (o.key !== e.selectItem.key) { if (["grid", "tabs", "selectInputList"].includes(o.type)) o.columns.forEach((function (e) { r(e.list) })); else if ("card" === o.type) r(o.list); else if ("batch" === o.type) { if (!t && !e.insertAllowedType.includes(n.type)) return !1; r(o.list) } "table" === o.type && o.trs.forEach((function (e) { e.tds.forEach((function (e) { r(e.list) })) })) } else { t ? i.splice(a + 1, 0, o) : i.splice(a + 1, 0, n); var s = { newIndex: a + 1 }; e.handleColAdd(s, i, !0) } })) }; r(this.data.list) }, handleDelete: function () { var e = this, t = function t(n) { return n = n.filter((function (r, i) { return ["grid", "tabs", "selectInputList"].includes(r.type) && r.columns.forEach((function (e) { e.list = t(e.list) })), "card" !== r.type && "batch" !== r.type || (r.list = t(r.list)), "table" === r.type && r.trs.forEach((function (e) { e.tds.forEach((function (e) { e.list = t(e.list) })) })), r.key !== e.selectItem.key || (1 === n.length ? e.handleSelectItem({ key: "" }) : n.length - 1 > i ? e.handleSelectItem(n[i + 1]) : e.handleSelectItem(n[i - 1]), !1) })), n }; this.data.list = t(this.data.list) }, handleDownMerge: function () { if (this.rightMenuSelectValue.trs.length - this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex].rowspan <= this.trIndex) return this.$message.error("褰撳墠鏄渶鍚庝竴琛岋紝鏃犳硶鍚戜笅鍚堝苟"), !1; var e = this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex].rowspan; if (this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex].colspan !== this.rightMenuSelectValue.trs[this.trIndex + e].tds[this.tdIndex].colspan) return this.$message.error("褰撳墠琛ㄦ牸鏃犳硶鍚戜笅鍚堝苟"), !1; var t = this.rightMenuSelectValue.trs[this.trIndex + e].tds[this.tdIndex].rowspan; this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex].rowspan = e + t, this.rightMenuSelectValue.trs[this.trIndex + e].tds[this.tdIndex].rowspan = 0, this.rightMenuSelectValue.trs[this.trIndex + e].tds[this.tdIndex].list = [] }, handleRightMerge: function () { var e = this.rightMenuSelectValue.trs[this.trIndex].tds.map((function (e) { return e.colspan })).reduce((function (e, t) { return e + t })); if (e - this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex].colspan <= this.tdIndex) return this.$message.error("褰撳墠鏄渶鍚庝竴鍒楋紝鏃犳硶鍚戝彸鍚堝苟"), !1; var t = this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex].colspan; if (this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex].rowspan !== this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex + t].rowspan) return this.$message.error("褰撳墠琛ㄦ牸鏃犳硶鍚戝彸鍚堝苟"), !1; this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex].colspan += this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex + t].colspan, this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex + t].colspan = 0, this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex + t].list = [] }, handleRightSplit: function () { for (var e = this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex], t = e.colspan, n = e.rowspan, r = this.trIndex, i = this.trIndex + n; r < i; r++)for (var o = this.tdIndex, a = this.tdIndex + t; o < a; o++)r === this.trIndex && o === this.tdIndex || this.rightMenuSelectValue.trs[r].tds.splice(o, 1, { colspan: 1, rowspan: 1, list: [] }); this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex].colspan = 1, this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex].rowspan = 1 }, handleAddCol: function () { var e = this; this.rightMenuSelectValue.trs.forEach((function (t) { t.tds.splice(e.tdIndex + 1, 0, { colspan: 1, rowspan: 1, list: [] }) })) }, handleAddRow: function () { for (var e = this.rightMenuSelectValue.trs[0].tds.map((function (e) { return e.colspan })).reduce((function (e, t) { return e + t })), t = { tds: [] }, n = 0; n < e; n++)t.tds.push({ colspan: 1, rowspan: 1, list: [] }); var r = 1; this.rightMenuSelectValue.trs[this.trIndex].tds.forEach((function (e) { r < e.rowspan && (r = e.rowspan) })), this.rightMenuSelectValue.trs.splice(this.trIndex + r, 0, t) }, handleShowRightMenu: function (e, t, n, r) { return e.stopPropagation(), this.showRightMenu = !0, this.menuTop = e.clientY, this.menuLeft = e.clientX, this.activeArr = [t], this.rightMenuSelectValue = t, this.trIndex = n, this.tdIndex = r, !1 }, handleRemoveRightMenu: function () { this.showRightMenu = !1 } }, mounted: function () { document.addEventListener("click", this.handleRemoveRightMenu, !0), document.addEventListener("contextmenu", this.handleRemoveRightMenu, !0) }, destroyed: function () { document.removeEventListener("click", this.handleRemoveRightMenu, !0), document.removeEventListener("contextmenu", this.handleRemoveRightMenu, !0) } }, lM = cM, uM = Object(l_["a"])(lM, LC, jC, !1, null, null, null), hM = uM.exports, fM = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-modal", { staticStyle: { top: "20px" }, attrs: { title: "JSON鏁版嵁", footer: null, visible: e.visible, destroyOnClose: !0, wrapClassName: "code-modal-9136076486841527", width: "850px" }, on: { cancel: e.handleCancel } }, [n("previewCode", { attrs: { editorJson: e.editorJson } })], 1) }, dM = [], pM = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", [n("div", { staticClass: "json-box-9136076486841527" }, [n("codemirror", { ref: "myEditor", staticStyle: { height: "100%" }, attrs: { value: e.editorJson } })], 1), n("div", { staticClass: "copy-btn-box-9136076486841527" }, [n("a-button", { staticClass: "copy-btn", attrs: { type: "primary", "data-clipboard-action": "copy", "data-clipboard-text": e.editorJson }, on: { click: e.handleCopyJson } }, [e._v(" 澶嶅埗鏁版嵁 ")]), n("a-button", { attrs: { type: "primary" }, on: { click: e.handleExportJson } }, [e._v(" 瀵煎嚭浠g爜 ")])], 1)]) }, vM = [], mM = n("b311"), gM = n.n(mM), yM = n("c884"), bM = { name: "PreviewCode", props: { fileFormat: { type: String, default: "json" }, editorJson: { type: String, default: "" } }, data: function () { return { visible: !1 } }, components: { codemirror: yM["codemirror"] }, methods: { exportData: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "demo.".concat(this.fileFormat), n = "data:text/csv;charset=utf-8,"; n += e; var r = encodeURI(n), i = document.createElement("a"); i.setAttribute("href", r), i.setAttribute("download", t), i.click() }, handleExportJson: function () { this.exportData(this.editorJson) }, handleCopyJson: function () { var e = this, t = new gM.a(".copy-btn"); t.on("success", (function () { e.$message.success("澶嶅埗鎴愬姛") })), t.on("error", (function () { e.$message.error("澶嶅埗澶辫触") })), setTimeout((function () { t.destroy() }), 122) } } }, xM = bM, wM = Object(l_["a"])(xM, pM, vM, !1, null, null, null), _M = wM.exports, CM = { name: "JsonModal", data: function () { return { visible: !1, editorJson: "", jsonData: {} } }, watch: { visible: function (e) { e && (this.editorJson = JSON.stringify(this.jsonData, null, "\t")) } }, components: { previewCode: _M }, methods: { handleCancel: function () { this.visible = !1 } } }, MM = CM, OM = Object(l_["a"])(MM, fM, dM, !1, null, null, null), kM = OM.exports, SM = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-modal", { staticStyle: { top: "20px" }, attrs: { title: "浠g爜", footer: null, visible: e.visible, wrapClassName: "code-modal-9136076486841527", width: "850px", destroyOnClose: !0 }, on: { cancel: e.handleCancel } }, [n("a-tabs", { staticStyle: { height: "100%" }, attrs: { tabPosition: "left" } }, [n("a-tab-pane", { key: "1", attrs: { tab: "VUE" } }, [n("previewCode", { attrs: { editorJson: e.editorVueJson, fileFormat: "vue" } })], 1), n("a-tab-pane", { key: "2", attrs: { tab: "HTML" } }, [n("previewCode", { attrs: { editorJson: e.editorHtmlJson, fileFormat: "html" } })], 1)], 1)], 1) }, TM = [], AM = '<template>\n  <div>\n    <k-form-build\n      :value="jsonData"\n      ref="KFB"\n      @submit="handleSubmit"\n    />\n    <button @click="getData">鎻愪氦</button>\n  </div>\n</template>\n<script>\nexport default {\n  name: \'Demo\',\n  data () {\n    return {\n      jsonData: ', LM = "\n    }\n  },\n  methods: {\n    handleSubmit(p) {\n       // 閫氳繃琛ㄥ崟鎻愪氦鎸夐挳瑙﹀彂锛岃幏鍙杙romise瀵硅薄\n       p().then(res => {\n         // 鑾峰彇鏁版嵁鎴愬姛\n         alert(JSON.stringify(res))\n       })\n         .catch(err => {\n           console.log(err, '鏍¢獙澶辫触')\n         })\n     },\n     getData() {\n       // 閫氳繃鍑芥暟鑾峰彇鏁版嵁\n       this.$refs.KFB.getData().then(res => {\n         // 鑾峰彇鏁版嵁鎴愬姛\n         alert(JSON.stringify(res))\n       })\n         .catch(err => {\n           console.log(err, '鏍¢獙澶辫触')\n         })\n     }\n  }\n}\n<\/script>", jM = '<!DOCTYPE html>\n<html>\n\n<head>\n  <title>琛ㄥ崟璁捐鍣╧cz</title>\n  <meta charset="UTF-8">\n  <link rel="stylesheet" href="http://unpkg.com/k-form-design/lib/k-form-design.css">\n</head>\n\n<body>\n  <div class="app">\n    <k-form-build ref="KFB" @submit="handleSubmit" :value="jsonData"></k-form-build>\n    <button @click="getData">鎻愪氦</button>\n  </div>\n  <script src="http://cdn.kcz66.com/vue.min.js"><\/script>\n  <script src="http://unpkg.com/k-form-design/lib/k-form-design.umd.min.js"><\/script>\n  <script>\n    let jsonData = ', zM = "\n    let vm = new Vue({\n      el: '.app',\n      data: {\n        jsonData\n      },\n      methods: {\n        handleSubmit(p) {\n          // 閫氳繃琛ㄥ崟鎻愪氦鎸夐挳瑙﹀彂锛岃幏鍙杙romise瀵硅薄\n          p().then(res => {\n            // 鑾峰彇鏁版嵁鎴愬姛\n            alert(JSON.stringify(res))\n          })\n            .catch(err => {\n              console.log(err, '鏍¢獙澶辫触')\n            })\n        },\n        getData() {\n          // 閫氳繃鍑芥暟鑾峰彇鏁版嵁\n          this.$refs.KFB.getData().then(res => {\n            // 鑾峰彇鏁版嵁鎴愬姛\n            alert(JSON.stringify(res))\n          })\n            .catch(err => {\n              console.log(err, '鏍¢獙澶辫触')\n            })\n        }\n      }\n    })\n  <\/script>\n</body>\n\n</html>", EM = { name: "CodeModal", data: function () { return { visible: !1, editorVueJson: "", editorHtmlJson: "", jsonData: {} } }, watch: { visible: function (e) { e && (this.editorVueJson = AM + JSON.stringify(this.jsonData) + LM, this.editorHtmlJson = jM + JSON.stringify(this.jsonData) + zM) } }, components: { previewCode: _M }, methods: { handleCancel: function () { this.visible = !1 } } }, PM = EM, DM = Object(l_["a"])(PM, SM, TM, !1, null, null, null), HM = DM.exports, VM = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("draggable", e._b({ attrs: { tag: "ul", value: e.list }, on: { start: function (t) { return e.handleStart(t, e.list) } } }, "draggable", { group: { name: "form-draggable", pull: "clone", put: !1 }, sort: !1, animation: 180, ghostClass: "moving" }, !1), e._l(e.list, (function (t, r) { return n("li", { key: r, on: { dragstart: function (t) { return e.$emit("generateKey", e.list, r) }, click: function (n) { return e.$emit("handleListPush", t) } } }, [t.icon ? n("svg", { staticClass: "icon", attrs: { "aria-hidden": "true" } }, [n("use", { attrs: { "xlink:href": "#" + t.icon } })]) : e._e(), e._v(" " + e._s(t.label) + " ")]) })), 0) }, IM = [], NM = { name: "collapseItem", props: ["list"], components: { draggable: EC.a }, methods: { handleStart: function (e, t) { this.$emit("start", t[e.oldIndex].type) } } }, RM = NM, FM = Object(l_["a"])(RM, VM, IM, !1, null, null, null), YM = FM.exports, $M = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-modal", { staticStyle: { top: "20px" }, attrs: { title: "JSON鏁版嵁", visible: e.visible, cancelText: "鍏抽棴", destroyOnClose: !0, wrapClassName: "code-modal-9136076486841527", width: "850px" }, on: { ok: e.handleImportJson, cancel: e.handleCancel } }, [n("p", { staticClass: "hint-box" }, [e._v("瀵煎叆鏍煎紡濡備笅:")]), n("div", { staticClass: "json-box-9136076486841527" }, [n("codemirror", { ref: "myEditor", staticStyle: { height: "100%" }, model: { value: e.jsonFormat, callback: function (t) { e.jsonFormat = t }, expression: "jsonFormat" } })], 1), n("a-upload", { attrs: { action: "/abc", beforeUpload: e.beforeUpload, showUploadList: !1, accept: "application/json" } }, [n("a-button", { attrs: { type: "primary" } }, [e._v(" 瀵煎叆json鏂囦欢 ")])], 1)], 1) }, BM = [], WM = '{\n\t"list": [\n\t\t{\n\t\t\t"type": "input",\n\t\t\t"label": "杈撳叆妗�",\n\t\t\t"options": {\n\t\t\t\t"type": "text",\n\t\t\t\t"width": "100%",\n\t\t\t\t"defaultValue": "",\n\t\t\t\t"placeholder": "璇疯緭鍏�",\n\t\t\t\t"clearable": false,\n\t\t\t\t"maxLength": null,\n\t\t\t\t"hidden": false,\n\t\t\t\t"disabled": false\n\t\t\t},\n\t\t\t"model": "input_1603939737389",\n\t\t\t"key": "input_1603939737389",\n\t\t\t"rules": [\n\t\t\t\t{\n\t\t\t\t\t"required": false,\n\t\t\t\t\t"message": "蹇呭~椤�"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t],\n\t"config": {\n\t\t"layout": "horizontal",\n\t\t"labelCol": {\n\t\t\t"xs": 4,\n\t\t\t"sm": 4,\n\t\t\t"md": 4,\n\t\t\t"lg": 4,\n\t\t\t"xl": 4,\n\t\t\t"xxl": 4\n\t\t},\n\t\t"wrapperCol": {\n\t\t\t"xs": 18,\n\t\t\t"sm": 18,\n\t\t\t"md": 18,\n\t\t\t"lg": 18,\n\t\t\t"xl": 18,\n\t\t\t"xxl": 18\n\t\t},\n\t\t"hideRequiredMark": false,\n\t\t"customStyle": ""\n\t}\n}', qM = { name: "importJsonModal", data: function () { return { visible: !1, jsonFormat: WM, jsonData: {}, handleSetSelectItem: null } }, watch: { visible: function (e) { e && (this.jsonFormat = WM) } }, components: { codemirror: yM["codemirror"] }, computed: { editor: function () { return this.$refs.myEditor.editor } }, methods: { handleCancel: function () { this.visible = !1 }, beforeUpload: function (e) { var t = this, n = new FileReader; return n.readAsText(e), n.onload = function () { t.jsonFormat = this.result, t.handleImportJson() }, !1 }, handleImportJson: function () { try { var e = JSON.parse(this.jsonFormat); this.jsonData.list = e.list, this.jsonData.config = e.config, this.jsonData.config.layout = e.config.layout, this.handleCancel(), this.handleSetSelectItem({ key: "" }), this.$message.success("瀵煎叆鎴愬姛") } catch (t) { console.error(t), this.$message.error("瀵煎叆澶辫触锛屾暟鎹牸寮忎笉瀵�") } } } }, UM = qM, KM = (n("f29f"), Object(l_["a"])(UM, $M, BM, !1, null, "2ccc7242", null)), GM = KM.exports, XM = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-modal", { staticStyle: { top: "20px" }, attrs: { title: "棰勮", visible: e.visible, okText: "鑾峰彇鏁版嵁", cancelText: "鍏抽棴", destroyOnClose: !0, width: e.previewWidth + "px" }, on: { ok: e.handleGetData, cancel: e.handleCancel } }, [n("k-form-build", { ref: "KFormBuild", attrs: { value: e.jsonData }, on: { submit: e.handleSubmit } }), n("jsonModel", { ref: "jsonModel" })], 1) }, JM = [], QM = { name: "KFormPreview", data: function () { return { visible: !1, previewWidth: 850, jsonData: {} } }, components: { jsonModel: kM }, methods: { handleSubmit: function (e) { var t = this; e.then((function (e) { console.log(e, "鑾峰彇鏁版嵁鎴愬姛"), t.$refs.jsonModel.jsonData = e, t.$refs.jsonModel.visible = !0 })).catch((function (e) { console.error(e, "鑾峰彇鏁版嵁澶辫触") })) }, handleGetData: function () { var e = this; this.$refs.KFormBuild.getData().then((function (t) { console.log(t, "鑾峰彇鏁版嵁鎴愬姛"), e.$refs.jsonModel.jsonData = t, e.$refs.jsonModel.visible = !0 })).catch((function (e) { console.log(e, "鑾峰彇鏁版嵁澶辫触") })) }, handleCancel: function () { this.visible = !1 } } }, ZM = QM, eO = Object(l_["a"])(ZM, XM, JM, !1, null, null, null), tO = eO.exports, nO = n("677e"), rO = n.n(nO); function iO(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function oO(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } function aO(e, t, n) { return t && oO(e.prototype, t), n && oO(e, n), e } var sO = function () { function e() { iO(this, e), Xw(this, "recordList", []), Xw(this, "redoList", []), Xw(this, "currentRecord", null), Xw(this, "time", 0) } return aO(e, [{ key: "push", value: function (e) { var t = Date.now(); return this.time + 100 > t ? (this.currentRecord = JSON.stringify(e), !1) : (this.time = t, this.currentRecord && (this.recordList.push(this.currentRecord), this.redoList.splice(0, this.redoList.length)), this.currentRecord = JSON.stringify(e), this.length > 20 && this.recordList.unshift(), !0) } }, { key: "undo", value: function () { if (0 === this.recordList.length) return !1; var e = this.recordList.pop(); return this.currentRecord && this.redoList.push(this.currentRecord), this.currentRecord = null, JSON.parse(e) } }, { key: "redo", value: function () { if (0 === this.redoList.length) return !1; var e = this.redoList.pop(); return this.currentRecord && this.recordList.push(this.currentRecord), this.currentRecord = null, JSON.parse(e) } }]), e }(), cO = [{ type: "input", label: "杈撳叆妗�", icon: "icon-write", options: { type: "text", width: "100%", defaultValue: "", placeholder: "璇疯緭鍏�", clearable: !1, maxLength: null, addonBefore: "", addonAfter: "", hidden: !1, disabled: !1 }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "textarea", label: "鏂囨湰妗�", icon: "icon-edit", options: { width: "100%", minRows: 4, maxRows: 6, maxLength: null, defaultValue: "", clearable: !1, hidden: !1, disabled: !1, placeholder: "璇疯緭鍏�" }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "number", label: "鏁板瓧杈撳叆妗�", icon: "icon-number", options: { width: "100%", defaultValue: 0, min: null, max: null, precision: null, step: 1, hidden: !1, disabled: !1, placeholder: "璇疯緭鍏�" }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "select", label: "涓嬫媺閫夋嫨鍣�", icon: "icon-xiala", options: { width: "100%", defaultValue: void 0, multiple: !1, disabled: !1, clearable: !1, hidden: !1, placeholder: "璇烽�夋嫨", dynamicKey: "", dynamic: !1, options: [{ value: "1", label: "涓嬫媺妗�1" }, { value: "2", label: "涓嬫媺妗�2" }], showSearch: !1 }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "checkbox", label: "澶氶�夋", icon: "icon-duoxuan1", options: { disabled: !1, hidden: !1, defaultValue: [], dynamicKey: "", dynamic: !1, options: [{ value: "1", label: "閫夐」1" }, { value: "2", label: "閫夐」2" }, { value: "3", label: "閫夐」3" }] }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "radio", label: "鍗曢�夋", icon: "icon-danxuan-cuxiantiao", options: { disabled: !1, hidden: !1, defaultValue: "", dynamicKey: "", dynamic: !1, options: [{ value: "1", label: "閫夐」1" }, { value: "2", label: "閫夐」2" }, { value: "3", label: "閫夐」3" }] }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "date", label: "鏃ユ湡閫夋嫨妗�", icon: "icon-calendar", options: { width: "100%", defaultValue: "", rangeDefaultValue: [], range: !1, showTime: !1, disabled: !1, hidden: !1, clearable: !1, placeholder: "璇烽�夋嫨", rangePlaceholder: ["寮�濮嬫椂闂�", "缁撴潫鏃堕棿"], format: "YYYY-MM-DD" }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "time", label: "鏃堕棿閫夋嫨妗�", icon: "icon-time", options: { width: "100%", defaultValue: "", disabled: !1, hidden: !1, clearable: !1, placeholder: "璇烽�夋嫨", format: "HH:mm:ss" }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "rate", label: "璇勫垎", icon: "icon-pingfen_moren", options: { defaultValue: 0, max: 5, disabled: !1, hidden: !1, allowHalf: !1 }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "slider", label: "婊戝姩杈撳叆鏉�", icon: "icon-menu", options: { width: "100%", defaultValue: 0, disabled: !1, hidden: !1, min: 0, max: 100, step: 1, showInput: !1 }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "uploadFile", label: "涓婁紶鏂囦欢", icon: "icon-upload", options: { defaultValue: "[]", multiple: !1, disabled: !1, hidden: !1, drag: !1, downloadWay: "a", dynamicFun: "", width: "100%", limit: 3, data: "{}", fileName: "file", headers: {}, action: "http://cdn.kcz66.com/uploadFile.txt", placeholder: "涓婁紶" }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "uploadImg", label: "涓婁紶鍥剧墖", icon: "icon-image", options: { defaultValue: "[]", multiple: !1, hidden: !1, disabled: !1, width: "100%", data: "{}", limit: 3, placeholder: "涓婁紶", fileName: "image", headers: {}, action: "http://cdn.kcz66.com/upload-img.txt", listType: "picture-card" }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "treeSelect", label: "鏍戦�夋嫨鍣�", icon: "icon-tree", options: { disabled: !1, defaultValue: void 0, multiple: !1, hidden: !1, clearable: !1, showSearch: !1, treeCheckable: !1, placeholder: "璇烽�夋嫨", dynamicKey: "", dynamic: !0, options: [{ value: "1", label: "閫夐」1", children: [{ value: "11", label: "閫夐」11" }] }, { value: "2", label: "閫夐」2", children: [{ value: "22", label: "閫夐」22" }] }] }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "cascader", label: "绾ц仈閫夋嫨鍣�", icon: "icon-guanlian", options: { disabled: !1, hidden: !1, defaultValue: void 0, showSearch: !1, placeholder: "璇烽�夋嫨", clearable: !1, dynamicKey: "", dynamic: !0, options: [{ value: "1", label: "閫夐」1", children: [{ value: "11", label: "閫夐」11" }] }, { value: "2", label: "閫夐」2", children: [{ value: "22", label: "閫夐」22" }] }] }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "batch", label: "鍔ㄦ�佽〃鏍�", icon: "icon-biaoge", list: [], options: { scrollY: 0, disabled: !1, hidden: !1, showLabel: !1, hideSequence: !1, width: "100%" }, model: "", key: "", help: "" }, { type: "selectInputList", label: "閫夋嫨杈撳叆鍒�", icon: "icon-biaoge", columns: [{ value: "1", label: "閫夐」1", list: [] }, { value: "2", label: "閫夐」2", list: [] }], options: { disabled: !1, multiple: !0, hidden: !1, showLabel: !1, width: "100%" }, model: "", key: "", help: "" }, { type: "editor", label: "瀵屾枃鏈�", icon: "icon-LC_icon_edit_line_1", list: [], options: { height: 300, placeholder: "璇疯緭鍏�", defaultValue: "", chinesization: !0, hidden: !1, disabled: !1, showLabel: !1, width: "100%" }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "switch", label: "寮�鍏�", icon: "icon-kaiguan3", options: { defaultValue: !1, hidden: !1, disabled: !1 }, model: "", key: "", help: "", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "button", label: "鎸夐挳", icon: "icon-button-remove", options: { type: "primary", handle: "submit", dynamicFun: "", hidden: !1, disabled: !1 }, key: "" }, { type: "alert", label: "璀﹀憡鎻愮ず", icon: "icon-zu", options: { type: "success", description: "", showIcon: !1, banner: !1, hidden: !1, closable: !1 }, key: "" }, { type: "text", label: "鏂囧瓧", icon: "icon-zihao", options: { textAlign: "left", hidden: !1, showRequiredMark: !1, color: "rgb(0, 0, 0)", fontFamily: "SimHei", fontSize: "16pt" }, key: "" }, { type: "html", label: "HTML", icon: "icon-ai-code", options: { hidden: !1, defaultValue: "<strong>HTML</strong>" }, key: "" }], lO = { title: "鑷畾涔夌粍浠�", list: [] }, uO = [{ type: "divider", label: "鍒嗗壊绾�", icon: "icon-fengexian", options: { orientation: "left" }, key: "", model: "" }, { type: "card", label: "鍗$墖甯冨眬", icon: "icon-qiapian", list: [], key: "", model: "" }, { type: "tabs", label: "鏍囩椤靛竷灞�", icon: "icon-tabs", options: { tabBarGutter: null, type: "line", tabPosition: "top", size: "default", animated: !0 }, columns: [{ value: "1", label: "閫夐」1", list: [] }, { value: "2", label: "閫夐」2", list: [] }], key: "", model: "" }, { type: "grid", label: "鏍呮牸甯冨眬", icon: "icon-zhage", columns: [{ span: 12, list: [] }, { span: 12, list: [] }], options: { gutter: 0 }, key: "", model: "" }, { type: "table", label: "琛ㄦ牸甯冨眬", icon: "icon-biaoge", trs: [{ tds: [{ colspan: 1, rowspan: 1, list: [] }, { colspan: 1, rowspan: 1, list: [] }] }, { tds: [{ colspan: 1, rowspan: 1, list: [] }, { colspan: 1, rowspan: 1, list: [] }] }], options: { width: "100%", bordered: !0, bright: !1, small: !0, customStyle: "" }, key: "", model: "" }], hO = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "properties-centent kk-checkbox" }, [n("div", { staticClass: "properties-body" }, [n("a-empty", { directives: [{ name: "show", rawName: "v-show", value: "" === e.selectItem.key, expression: "selectItem.key === ''" }], staticClass: "hint-box", attrs: { description: "鏈�夋嫨鎺т欢" } }), n("a-form", { directives: [{ name: "show", rawName: "v-show", value: "" !== e.selectItem.key, expression: "selectItem.key !== ''" }] }, ["undefined" !== typeof e.selectItem.label ? n("a-form-item", { attrs: { label: "鏍囩" } }, [n("a-input", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.selectItem.label, callback: function (t) { e.$set(e.selectItem, "label", t) }, expression: "selectItem.label" } })], 1) : e._e(), e.hideModel || "undefined" === typeof e.selectItem.model ? e._e() : n("a-form-item", { attrs: { label: "鏁版嵁瀛楁" } }, [n("a-input", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.selectItem.model, callback: function (t) { e.$set(e.selectItem, "model", t) }, expression: "selectItem.model" } })], 1), "input" === e.selectItem.type ? n("a-form-item", { attrs: { label: "杈撳叆妗唗ype" } }, [n("a-input", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.options.type, callback: function (t) { e.$set(e.options, "type", t) }, expression: "options.type" } })], 1) : e._e(), "undefined" !== typeof e.options.rangePlaceholder && e.options.range ? n("a-form-item", { attrs: { label: "鍗犱綅鍐呭" } }, [n("a-input", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.options.rangePlaceholder[0], callback: function (t) { e.$set(e.options.rangePlaceholder, 0, t) }, expression: "options.rangePlaceholder[0]" } }), n("a-input", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.options.rangePlaceholder[1], callback: function (t) { e.$set(e.options.rangePlaceholder, 1, t) }, expression: "options.rangePlaceholder[1]" } })], 1) : "undefined" !== typeof e.options.placeholder ? n("a-form-item", { attrs: { label: "鍗犱綅鍐呭" } }, [n("a-input", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.options.placeholder, callback: function (t) { e.$set(e.options, "placeholder", t) }, expression: "options.placeholder" } })], 1) : e._e(), "textarea" === e.selectItem.type ? n("a-form-item", { attrs: { label: "鑷�傚簲鍐呭楂樺害" } }, [n("a-input-number", { staticStyle: { width: "100%" }, attrs: { placeholder: "鏈�灏忛珮搴�" }, model: { value: e.options.minRows, callback: function (t) { e.$set(e.options, "minRows", t) }, expression: "options.minRows" } }), n("a-input-number", { staticStyle: { width: "100%" }, attrs: { placeholder: "鏈�澶ч珮搴�" }, model: { value: e.options.maxRows, callback: function (t) { e.$set(e.options, "maxRows", t) }, expression: "options.maxRows" } })], 1) : e._e(), "undefined" !== typeof e.options.width ? n("a-form-item", { attrs: { label: "瀹藉害" } }, [n("a-input", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.options.width, callback: function (t) { e.$set(e.options, "width", t) }, expression: "options.width" } })], 1) : e._e(), "undefined" !== typeof e.options.height ? n("a-form-item", { attrs: { label: "楂樺害" } }, [n("a-input-number", { model: { value: e.options.height, callback: function (t) { e.$set(e.options, "height", t) }, expression: "options.height" } })], 1) : e._e(), "undefined" !== typeof e.options.step ? n("a-form-item", { attrs: { label: "姝ラ暱" } }, [n("a-input-number", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.options.step, callback: function (t) { e.$set(e.options, "step", t) }, expression: "options.step" } })], 1) : e._e(), "undefined" !== typeof e.options.min ? n("a-form-item", { attrs: { label: "鏈�灏忓��" } }, [n("a-input-number", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.options.min, callback: function (t) { e.$set(e.options, "min", t) }, expression: "options.min" } })], 1) : e._e(), "undefined" !== typeof e.options.max ? n("a-form-item", { attrs: { label: "鏈�澶у��" } }, [n("a-input-number", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.options.max, callback: function (t) { e.$set(e.options, "max", t) }, expression: "options.max" } })], 1) : e._e(), "undefined" !== typeof e.options.maxLength ? n("a-form-item", { attrs: { label: "鏈�澶ч暱搴�" } }, [n("a-input-number", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.options.maxLength, callback: function (t) { e.$set(e.options, "maxLength", t) }, expression: "options.maxLength" } })], 1) : e._e(), "undefined" !== typeof e.options.tabBarGutter ? n("a-form-item", { attrs: { label: "鏍囩闂磋窛" } }, [n("a-input-number", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.options.tabBarGutter, callback: function (t) { e.$set(e.options, "tabBarGutter", t) }, expression: "options.tabBarGutter" } })], 1) : e._e(), "undefined" !== typeof e.options.precision ? n("a-form-item", { attrs: { label: "鏁板�肩簿搴�" } }, [n("a-input-number", { attrs: { min: 0, max: 50, placeholder: "璇疯緭鍏�" }, model: { value: e.options.precision, callback: function (t) { e.$set(e.options, "precision", t) }, expression: "options.precision" } })], 1) : e._e(), "undefined" !== typeof e.options.dictCode ? n("a-form-item", { attrs: { label: "dictCode" } }, [n("a-input", { model: { value: e.options.dictCode, callback: function (t) { e.$set(e.options, "dictCode", t) }, expression: "options.dictCode" } })], 1) : e._e(), "undefined" !== typeof e.options.options ? n("a-form-item", { attrs: { label: "閫夐」閰嶇疆" } }, [n("a-radio-group", { attrs: { buttonStyle: "solid" }, model: { value: e.options.dynamic, callback: function (t) { e.$set(e.options, "dynamic", t) }, expression: "options.dynamic" } }, [n("a-radio-button", { attrs: { value: !1 } }, [e._v("闈欐�佹暟鎹�")]), n("a-radio-button", { attrs: { value: !0 } }, [e._v("鍔ㄦ�佹暟鎹�")])], 1), n("a-input", { directives: [{ name: "show", rawName: "v-show", value: e.options.dynamic, expression: "options.dynamic" }], attrs: { placeholder: "鍔ㄦ�佹暟鎹彉閲忓悕" }, model: { value: e.options.dynamicKey, callback: function (t) { e.$set(e.options, "dynamicKey", t) }, expression: "options.dynamicKey" } }), n("KChangeOption", { directives: [{ name: "show", rawName: "v-show", value: !e.options.dynamic, expression: "!options.dynamic" }], model: { value: e.options.options, callback: function (t) { e.$set(e.options, "options", t) }, expression: "options.options" } })], 1) : e._e(), ["tabs", "selectInputList"].includes(e.selectItem.type) ? n("a-form-item", { attrs: { label: "tabs" === e.selectItem.type ? "椤电閰嶇疆" : "鍒楅�夐」閰嶇疆" } }, [n("KChangeOption", { attrs: { type: "tab" }, model: { value: e.selectItem.columns, callback: function (t) { e.$set(e.selectItem, "columns", t) }, expression: "selectItem.columns" } })], 1) : e._e(), "grid" === e.selectItem.type ? n("a-form-item", { attrs: { label: "鏍呮牸闂磋窛" } }, [n("a-input-number", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.selectItem.options.gutter, callback: function (t) { e.$set(e.selectItem.options, "gutter", t) }, expression: "selectItem.options.gutter" } })], 1) : e._e(), "grid" === e.selectItem.type ? n("a-form-item", { attrs: { label: "鍒楅厤缃」" } }, [n("KChangeOption", { attrs: { type: "colspan" }, model: { value: e.selectItem.columns, callback: function (t) { e.$set(e.selectItem, "columns", t) }, expression: "selectItem.columns" } })], 1) : e._e(), "switch" === e.selectItem.type ? n("a-form-item", { attrs: { label: "榛樿鍊�" } }, [n("a-switch", { model: { value: e.options.defaultValue, callback: function (t) { e.$set(e.options, "defaultValue", t) }, expression: "options.defaultValue" } })], 1) : e._e(), ["number", "slider"].indexOf(e.selectItem.type) >= 0 ? n("a-form-item", { attrs: { label: "榛樿鍊�" } }, [n("a-input-number", { attrs: { step: e.options.step, min: e.options.min || -1 / 0, max: e.options.max || 1 / 0 }, model: { value: e.options.defaultValue, callback: function (t) { e.$set(e.options, "defaultValue", t) }, expression: "options.defaultValue" } })], 1) : e._e(), "rate" === e.selectItem.type ? n("a-form-item", { attrs: { label: "榛樿鍊�" } }, [n("a-rate", { attrs: { allowHalf: e.options.allowHalf, count: e.options.max }, model: { value: e.options.defaultValue, callback: function (t) { e.$set(e.options, "defaultValue", t) }, expression: "options.defaultValue" } })], 1) : e._e(), "select" === e.selectItem.type ? n("a-form-item", { attrs: { label: "榛樿鍊�" } }, [n("a-select", { attrs: { options: e.options.options }, model: { value: e.options.defaultValue, callback: function (t) { e.$set(e.options, "defaultValue", t) }, expression: "options.defaultValue" } })], 1) : e._e(), "radio" === e.selectItem.type ? n("a-form-item", { attrs: { label: "榛樿鍊�" } }, [n("a-radio-group", { attrs: { options: e.options.options }, model: { value: e.options.defaultValue, callback: function (t) { e.$set(e.options, "defaultValue", t) }, expression: "options.defaultValue" } })], 1) : e._e(), "checkbox" === e.selectItem.type ? n("a-form-item", { attrs: { label: "榛樿鍊�" } }, [n("a-checkbox-group", { attrs: { options: e.options.options }, model: { value: e.options.defaultValue, callback: function (t) { e.$set(e.options, "defaultValue", t) }, expression: "options.defaultValue" } })], 1) : e._e(), "date" === e.selectItem.type ? n("a-form-item", { attrs: { label: "榛樿鍊�" } }, [e.options.range ? e._e() : n("a-input", { attrs: { placeholder: "undefined" === typeof e.options.format ? "" : e.options.format }, model: { value: e.options.defaultValue, callback: function (t) { e.$set(e.options, "defaultValue", t) }, expression: "options.defaultValue" } }), e.options.range ? n("a-input", { attrs: { placeholder: "undefined" === typeof e.options.format ? "" : e.options.format }, model: { value: e.options.rangeDefaultValue[0], callback: function (t) { e.$set(e.options.rangeDefaultValue, 0, t) }, expression: "options.rangeDefaultValue[0]" } }) : e._e(), e.options.range ? n("a-input", { attrs: { placeholder: "undefined" === typeof e.options.format ? "" : e.options.format }, model: { value: e.options.rangeDefaultValue[1], callback: function (t) { e.$set(e.options.rangeDefaultValue, 1, t) }, expression: "options.rangeDefaultValue[1]" } }) : e._e()], 1) : e._e(), ["number", "radio", "checkbox", "date", "rate", "select", "switch", "slider", "html"].includes(e.selectItem.type) || "undefined" === typeof e.options.defaultValue ? e._e() : n("a-form-item", { attrs: { label: "榛樿鍊�" } }, [n("a-input", { attrs: { placeholder: "undefined" === typeof e.options.format ? "璇疯緭鍏�" : e.options.format }, model: { value: e.options.defaultValue, callback: function (t) { e.$set(e.options, "defaultValue", t) }, expression: "options.defaultValue" } })], 1), "html" === e.selectItem.type ? n("a-form-item", { attrs: { label: "榛樿鍊�" } }, [n("a-textarea", { attrs: { autoSize: { minRows: 4, maxRows: 8 } }, model: { value: e.options.defaultValue, callback: function (t) { e.$set(e.options, "defaultValue", t) }, expression: "options.defaultValue" } })], 1) : e._e(), "undefined" !== typeof e.options.format ? n("a-form-item", { attrs: { label: "鏃堕棿鏍煎紡" } }, [n("a-input", { attrs: { placeholder: "鏃堕棿鏍煎紡濡傦細YYYY-MM-DD HH:mm:ss" }, model: { value: e.options.format, callback: function (t) { e.$set(e.options, "format", t) }, expression: "options.format" } })], 1) : e._e(), "undefined" !== typeof e.options.orientation ? n("a-form-item", { attrs: { label: "鏍囩浣嶇疆" } }, [n("a-radio-group", { attrs: { buttonStyle: "solid" }, model: { value: e.options.orientation, callback: function (t) { e.$set(e.options, "orientation", t) }, expression: "options.orientation" } }, [n("a-radio-button", { attrs: { value: "left" } }, [e._v("宸�")]), n("a-radio-button", { attrs: { value: "" } }, [e._v("灞呬腑")]), n("a-radio-button", { attrs: { value: "right" } }, [e._v("鍙�")])], 1)], 1) : e._e(), "tabs" === e.selectItem.type ? n("a-form-item", { attrs: { label: "椤电浣嶇疆" } }, [n("a-radio-group", { attrs: { buttonStyle: "solid" }, model: { value: e.options.tabPosition, callback: function (t) { e.$set(e.options, "tabPosition", t) }, expression: "options.tabPosition" } }, [n("a-radio", { attrs: { value: "top" } }, [e._v("top")]), n("a-radio", { attrs: { value: "right" } }, [e._v("right")]), n("a-radio", { attrs: { value: "bottom" } }, [e._v("bottom")]), n("a-radio", { attrs: { value: "left" } }, [e._v("left")])], 1)], 1) : e._e(), "tabs" === e.selectItem.type ? n("a-form-item", { attrs: { label: "椤电绫诲瀷" } }, [n("a-radio-group", { attrs: { buttonStyle: "solid" }, model: { value: e.options.type, callback: function (t) { e.$set(e.options, "type", t) }, expression: "options.type" } }, [n("a-radio-button", { attrs: { value: "line" } }, [e._v("line")]), n("a-radio-button", { attrs: { value: "card" } }, [e._v("card")])], 1)], 1) : e._e(), "undefined" !== typeof e.options.size ? n("a-form-item", { attrs: { label: "澶у皬" } }, [n("a-radio-group", { attrs: { buttonStyle: "solid" }, model: { value: e.options.size, callback: function (t) { e.$set(e.options, "size", t) }, expression: "options.size" } }, [n("a-radio-button", { attrs: { value: "large" } }, [e._v("large")]), n("a-radio-button", { attrs: { value: "default" } }, [e._v("default")]), n("a-radio-button", { attrs: { value: "small" } }, [e._v("small")])], 1)], 1) : e._e(), "button" === e.selectItem.type ? n("a-form-item", { attrs: { label: "绫诲瀷" } }, [n("a-radio-group", { attrs: { buttonStyle: "solid" }, model: { value: e.options.type, callback: function (t) { e.$set(e.options, "type", t) }, expression: "options.type" } }, [n("a-radio", { attrs: { value: "primary" } }, [e._v("Primary")]), n("a-radio", { attrs: { value: "default" } }, [e._v("Default")]), n("a-radio", { attrs: { value: "dashed" } }, [e._v("Dashed")]), n("a-radio", { attrs: { value: "danger" } }, [e._v("Danger")])], 1)], 1) : e._e(), "undefined" !== typeof e.options.downloadWay ? n("a-form-item", { attrs: { label: "涓嬭浇鏂瑰紡" } }, [n("a-radio-group", { attrs: { buttonStyle: "solid" }, model: { value: e.options.downloadWay, callback: function (t) { e.$set(e.options, "downloadWay", t) }, expression: "options.downloadWay" } }, [n("a-radio-button", { attrs: { value: "a" } }, [e._v("a鏍囩")]), n("a-radio-button", { attrs: { value: "ajax" } }, [e._v("ajax")]), n("a-radio-button", { attrs: { value: "dynamic" } }, [e._v("鍔ㄦ�佸嚱鏁�")])], 1), n("a-input", { directives: [{ name: "show", rawName: "v-show", value: "dynamic" === e.options.downloadWay, expression: "options.downloadWay === 'dynamic'" }], attrs: { placeholder: "鍔ㄦ�佸嚱鏁板悕" }, model: { value: e.options.dynamicFun, callback: function (t) { e.$set(e.options, "dynamicFun", t) }, expression: "options.dynamicFun" } })], 1) : e._e(), "button" === e.selectItem.type ? n("a-form-item", { attrs: { label: "鎸夐挳鎿嶄綔" } }, [n("a-radio-group", { attrs: { buttonStyle: "solid" }, model: { value: e.options.handle, callback: function (t) { e.$set(e.options, "handle", t) }, expression: "options.handle" } }, [n("a-radio-button", { attrs: { value: "submit" } }, [e._v("鎻愪氦")]), n("a-radio-button", { attrs: { value: "reset" } }, [e._v("閲嶇疆")]), n("a-radio-button", { attrs: { value: "dynamic" } }, [e._v("鍔ㄦ�佸嚱鏁�")])], 1), n("a-input", { directives: [{ name: "show", rawName: "v-show", value: "dynamic" === e.options.handle, expression: "options.handle === 'dynamic'" }], attrs: { placeholder: "鍔ㄦ�佸嚱鏁板悕" }, model: { value: e.options.dynamicFun, callback: function (t) { e.$set(e.options, "dynamicFun", t) }, expression: "options.dynamicFun" } })], 1) : e._e(), "alert" === e.selectItem.type ? n("a-form-item", { attrs: { label: "杈呭姪鎻忚堪" } }, [n("a-input", { model: { value: e.options.description, callback: function (t) { e.$set(e.options, "description", t) }, expression: "options.description" } })], 1) : e._e(), "alert" === e.selectItem.type ? n("a-form-item", { attrs: { label: "绫诲瀷" } }, [n("a-radio-group", { attrs: { buttonStyle: "solid" }, model: { value: e.options.type, callback: function (t) { e.$set(e.options, "type", t) }, expression: "options.type" } }, [n("a-radio", { attrs: { value: "success" } }, [e._v("success")]), n("a-radio", { attrs: { value: "info" } }, [e._v("info")]), n("a-radio", { attrs: { value: "warning" } }, [e._v("warning")]), n("a-radio", { attrs: { value: "error" } }, [e._v("error")])], 1)], 1) : e._e(), "alert" === e.selectItem.type ? n("a-form-item", { attrs: { label: "鎿嶄綔灞炴��" } }, [n("kCheckbox", { attrs: { label: "鏄剧ず鍥炬爣" }, model: { value: e.options.showIcon, callback: function (t) { e.$set(e.options, "showIcon", t) }, expression: "options.showIcon" } }), n("kCheckbox", { attrs: { label: "鏃犺竟妗�" }, model: { value: e.options.banner, callback: function (t) { e.$set(e.options, "banner", t) }, expression: "options.banner" } }), n("kCheckbox", { attrs: { label: "鍙叧闂�" }, model: { value: e.options.closable, callback: function (t) { e.$set(e.options, "closable", t) }, expression: "options.closable" } })], 1) : e._e(), "uploadImg" === e.selectItem.type ? n("a-form-item", { attrs: { label: "鏍峰紡" } }, [n("a-radio-group", { attrs: { buttonStyle: "solid" }, model: { value: e.options.listType, callback: function (t) { e.$set(e.options, "listType", t) }, expression: "options.listType" } }, [n("a-radio-button", { attrs: { value: "text" } }, [e._v("text")]), n("a-radio-button", { attrs: { value: "picture" } }, [e._v("picture")]), n("a-radio-button", { attrs: { value: "picture-card" } }, [e._v("card")])], 1)], 1) : e._e(), "undefined" !== typeof e.options.limit ? n("a-form-item", { attrs: { label: "鏈�澶т笂浼犳暟閲�" } }, [n("a-input-number", { attrs: { min: 1 }, model: { value: e.options.limit, callback: function (t) { e.$set(e.options, "limit", t) }, expression: "options.limit" } })], 1) : e._e(), "undefined" !== typeof e.options.scrollY ? n("a-form-item", { attrs: { label: "scrollY" } }, [n("a-input-number", { attrs: { min: 0 }, model: { value: e.options.scrollY, callback: function (t) { e.$set(e.options, "scrollY", t) }, expression: "options.scrollY" } })], 1) : e._e(), "undefined" !== typeof e.options.action ? n("a-form-item", { attrs: { label: "涓婁紶鍦板潃" } }, [n("a-input", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.options.action, callback: function (t) { e.$set(e.options, "action", t) }, expression: "options.action" } })], 1) : e._e(), "undefined" !== typeof e.options.fileName ? n("a-form-item", { attrs: { label: "鏂囦欢name" } }, [n("a-input", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.options.fileName, callback: function (t) { e.$set(e.options, "fileName", t) }, expression: "options.fileName" } })], 1) : e._e(), "undefined" !== typeof e.options.data ? n("a-form-item", { attrs: { label: "棰濆鍙傛暟锛圝SON鏍煎紡锛�" } }, [n("a-textarea", { attrs: { placeholder: "涓ユ牸JSON鏍煎紡" }, model: { value: e.options.data, callback: function (t) { e.$set(e.options, "data", t) }, expression: "options.data" } })], 1) : e._e(), "text" === e.selectItem.type ? n("a-form-item", { attrs: { label: "鏂囧瓧瀵归綈鏂瑰紡" } }, [n("a-radio-group", { attrs: { buttonStyle: "solid" }, model: { value: e.options.textAlign, callback: function (t) { e.$set(e.options, "textAlign", t) }, expression: "options.textAlign" } }, [n("a-radio-button", { attrs: { value: "left" } }, [e._v("宸�")]), n("a-radio-button", { attrs: { value: "center" } }, [e._v("灞呬腑")]), n("a-radio-button", { attrs: { value: "right" } }, [e._v("鍙�")])], 1)], 1) : e._e(), "text" === e.selectItem.type ? n("a-form-item", { attrs: { label: "瀛椾綋灞炴�ц缃�" } }, [n("colorPicker", { model: { value: e.options.color, callback: function (t) { e.$set(e.options, "color", t) }, expression: "options.color" } }), n("a-select", { staticStyle: { width: "36%", "margin-left": "2%", "vertical-align": "bottom" }, attrs: { options: e.familyOptions }, model: { value: e.options.fontFamily, callback: function (t) { e.$set(e.options, "fontFamily", t) }, expression: "options.fontFamily" } }), n("a-select", { staticStyle: { width: "35%", "margin-left": "2%", "vertical-align": "bottom" }, attrs: { options: e.sizeOptions }, model: { value: e.options.fontSize, callback: function (t) { e.$set(e.options, "fontSize", t) }, expression: "options.fontSize" } })], 1) : e._e(), "text" === e.selectItem.type ? n("a-form-item", { attrs: { label: "鎿嶄綔灞炴��" } }, [n("kCheckbox", { attrs: { label: "鏄剧ず蹇呴�夋爣璁�" }, model: { value: e.options.showRequiredMark, callback: function (t) { e.$set(e.options, "showRequiredMark", t) }, expression: "options.showRequiredMark" } })], 1) : e._e(), "undefined" !== typeof e.options.hidden || "undefined" !== typeof e.options.disabled || "undefined" !== typeof e.options.readonly || "undefined" !== typeof e.options.clearable || "undefined" !== typeof e.options.multiple || "undefined" !== typeof e.options.range || "undefined" !== typeof e.options.showTime || "undefined" !== typeof e.options.allowHalf || "undefined" !== typeof e.options.showInput || "undefined" !== typeof e.options.animated ? n("a-form-item", { attrs: { label: "鎿嶄綔灞炴��" } }, ["undefined" !== typeof e.options.hidden ? n("kCheckbox", { attrs: { label: "闅愯棌" }, model: { value: e.options.hidden, callback: function (t) { e.$set(e.options, "hidden", t) }, expression: "options.hidden" } }) : e._e(), "undefined" !== typeof e.options.disabled ? n("kCheckbox", { attrs: { label: "绂佺敤" }, model: { value: e.options.disabled, callback: function (t) { e.$set(e.options, "disabled", t) }, expression: "options.disabled" } }) : e._e(), "undefined" !== typeof e.options.readonly ? n("kCheckbox", { attrs: { label: "鍙" }, model: { value: e.options.readonly, callback: function (t) { e.$set(e.options, "readonly", t) }, expression: "options.readonly" } }) : e._e(), "undefined" !== typeof e.options.clearable ? n("kCheckbox", { attrs: { label: "鍙竻闄�" }, model: { value: e.options.clearable, callback: function (t) { e.$set(e.options, "clearable", t) }, expression: "options.clearable" } }) : e._e(), "undefined" !== typeof e.options.multiple ? n("kCheckbox", { attrs: { label: "澶氶��" }, model: { value: e.options.multiple, callback: function (t) { e.$set(e.options, "multiple", t) }, expression: "options.multiple" } }) : e._e(), "undefined" !== typeof e.options.range ? n("kCheckbox", { attrs: { label: "鑼冨洿閫夋嫨" }, model: { value: e.options.range, callback: function (t) { e.$set(e.options, "range", t) }, expression: "options.range" } }) : e._e(), "undefined" !== typeof e.options.showTime ? n("kCheckbox", { attrs: { label: "鏃堕棿閫夋嫨鍣�" }, model: { value: e.options.showTime, callback: function (t) { e.$set(e.options, "showTime", t) }, expression: "options.showTime" } }) : e._e(), "undefined" !== typeof e.options.allowHalf ? n("kCheckbox", { attrs: { label: "鍏佽鍗婇��" }, model: { value: e.options.allowHalf, callback: function (t) { e.$set(e.options, "allowHalf", t) }, expression: "options.allowHalf" } }) : e._e(), "undefined" !== typeof e.options.showInput ? n("kCheckbox", { attrs: { label: "鏄剧ず杈撳叆妗�" }, model: { value: e.options.showInput, callback: function (t) { e.$set(e.options, "showInput", t) }, expression: "options.showInput" } }) : e._e(), "undefined" !== typeof e.options.showLabel ? n("kCheckbox", { attrs: { label: "鏄剧ずLabel" }, model: { value: e.options.showLabel, callback: function (t) { e.$set(e.options, "showLabel", t) }, expression: "options.showLabel" } }) : e._e(), "undefined" !== typeof e.options.chinesization ? n("kCheckbox", { attrs: { label: "姹夊寲" }, model: { value: e.options.chinesization, callback: function (t) { e.$set(e.options, "chinesization", t) }, expression: "options.chinesization" } }) : e._e(), "undefined" !== typeof e.options.hideSequence ? n("kCheckbox", { attrs: { label: "闅愯棌搴忓彿" }, model: { value: e.options.hideSequence, callback: function (t) { e.$set(e.options, "hideSequence", t) }, expression: "options.hideSequence" } }) : e._e(), "undefined" !== typeof e.options.drag ? n("kCheckbox", { attrs: { label: "鍏佽鎷栨嫿" }, model: { value: e.options.drag, callback: function (t) { e.$set(e.options, "drag", t) }, expression: "options.drag" } }) : e._e(), "undefined" !== typeof e.options.showSearch ? n("kCheckbox", { attrs: { label: "鍙悳绱�" }, model: { value: e.options.showSearch, callback: function (t) { e.$set(e.options, "showSearch", t) }, expression: "options.showSearch" } }) : e._e(), "undefined" !== typeof e.options.treeCheckable ? n("kCheckbox", { attrs: { label: "鍙嬀閫�" }, model: { value: e.options.treeCheckable, callback: function (t) { e.$set(e.options, "treeCheckable", t) }, expression: "options.treeCheckable" } }) : e._e(), "undefined" !== typeof e.options.animated ? n("kCheckbox", { attrs: { label: "鍔ㄧ敾鍒囨崲" }, model: { value: e.options.animated, callback: function (t) { e.$set(e.options, "animated", t) }, expression: "options.animated" } }) : e._e()], 1) : e._e(), "undefined" !== typeof e.selectItem.rules && e.selectItem.rules.length > 0 ? n("a-form-item", { attrs: { label: "鏍¢獙" } }, [n("kCheckbox", { attrs: { label: "蹇呭~" }, model: { value: e.selectItem.rules[0].required, callback: function (t) { e.$set(e.selectItem.rules[0], "required", t) }, expression: "selectItem.rules[0].required" } }), n("a-input", { attrs: { placeholder: "蹇呭~鏍¢獙鎻愮ず淇℃伅" }, model: { value: e.selectItem.rules[0].message, callback: function (t) { e.$set(e.selectItem.rules[0], "message", t) }, expression: "selectItem.rules[0].message" } }), n("KChangeOption", { attrs: { type: "rules" }, model: { value: e.selectItem.rules, callback: function (t) { e.$set(e.selectItem, "rules", t) }, expression: "selectItem.rules" } })], 1) : e._e(), "table" === e.selectItem.type ? n("a-form-item", { attrs: { label: "琛ㄦ牸鏍峰紡CSS" } }, [n("a-input", { model: { value: e.selectItem.options.customStyle, callback: function (t) { e.$set(e.selectItem.options, "customStyle", t) }, expression: "selectItem.options.customStyle" } })], 1) : e._e(), "table" === e.selectItem.type ? n("a-form-item", { attrs: { label: "灞炴��" } }, [n("kCheckbox", { attrs: { label: "鏄剧ず杈规" }, model: { value: e.selectItem.options.bordered, callback: function (t) { e.$set(e.selectItem.options, "bordered", t) }, expression: "selectItem.options.bordered" } }), n("kCheckbox", { attrs: { label: "榧犳爣缁忚繃鐐逛寒" }, model: { value: e.selectItem.options.bright, callback: function (t) { e.$set(e.selectItem.options, "bright", t) }, expression: "selectItem.options.bright" } }), n("kCheckbox", { attrs: { label: "绱у噾鍨�" }, model: { value: e.selectItem.options.small, callback: function (t) { e.$set(e.selectItem.options, "small", t) }, expression: "selectItem.options.small" } })], 1) : e._e(), "table" === e.selectItem.type ? n("a-form-item", { attrs: { label: "鎻愮ず" } }, [n("p", { staticStyle: { "line-height": "26px" } }, [e._v("璇风偣鍑诲彸閿鍔犺鍒楋紝鎴栬�呭悎骞跺崟鍏冩牸")])]) : e._e(), "undefined" !== typeof e.selectItem.help ? n("a-form-item", { attrs: { label: "甯姪淇℃伅" } }, [n("a-input", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.selectItem.help, callback: function (t) { e.$set(e.selectItem, "help", t) }, expression: "selectItem.help" } })], 1) : e._e(), "undefined" !== typeof e.options.addonBefore ? n("a-form-item", { attrs: { label: "鍓嶇紑" } }, [n("a-input", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.options.addonBefore, callback: function (t) { e.$set(e.options, "addonBefore", t) }, expression: "options.addonBefore" } })], 1) : e._e(), "undefined" !== typeof e.options.addonAfter ? n("a-form-item", { attrs: { label: "鍚庣紑" } }, [n("a-input", { attrs: { placeholder: "璇疯緭鍏�" }, model: { value: e.options.addonAfter, callback: function (t) { e.$set(e.options, "addonAfter", t) }, expression: "options.addonAfter" } })], 1) : e._e()], 1)], 1)]) }, fO = [], dO = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "option-change-container" }, ["option" === e.type || "tab" === e.type ? n("a-row", { attrs: { gutter: 8 } }, [e._l(e.value, (function (t, r) { return n("div", { key: r, staticClass: "option-change-box" }, [n("a-col", { attrs: { span: 9 } }, [n("a-input", { attrs: { placeholder: "鍚嶇О" }, model: { value: t.label, callback: function (n) { e.$set(t, "label", n) }, expression: "val.label" } })], 1), n("a-col", { attrs: { span: 9 } }, [n("a-input", { attrs: { placeholder: "鍊�" }, model: { value: t.value, callback: function (n) { e.$set(t, "value", n) }, expression: "val.value" } })], 1), n("a-col", { attrs: { span: 6 } }, [n("div", { staticClass: "option-delete-box", on: { click: function (t) { return e.handleDelete(r) } } }, [n("a-icon", { attrs: { type: "delete" } })], 1)])], 1) })), n("a-col", { attrs: { span: 24 } }, [n("a", { on: { click: e.handleAdd } }, [e._v("娣诲姞")])])], 2) : e._e(), "rules" === e.type ? n("a-row", { attrs: { gutter: 8 } }, [e._l(e.value, (function (t, r) { return n("span", { key: r }, [0 !== r ? n("div", { staticClass: "option-change-box" }, [n("a-col", { attrs: { span: 18 } }, [n("a-input", { attrs: { placeholder: "鎻愮ず淇℃伅" }, model: { value: t.message, callback: function (n) { e.$set(t, "message", n) }, expression: "val.message" } })], 1), n("a-col", { attrs: { span: 18 } }, [n("a-input", { attrs: { placeholder: "姝e垯琛ㄨ揪寮弍attern" }, model: { value: t.pattern, callback: function (n) { e.$set(t, "pattern", n) }, expression: "val.pattern" } })], 1), n("a-col", { attrs: { span: 6 } }, [n("div", { staticClass: "option-delete-box", on: { click: function (t) { return e.handleDelete(r) } } }, [n("a-icon", { attrs: { type: "delete" } })], 1)])], 1) : e._e()]) })), n("a-col", { attrs: { span: 24 } }, [n("a", { on: { click: e.handleAddRules } }, [e._v("澧炲姞鏍¢獙")])])], 2) : "colspan" === e.type ? n("a-row", { attrs: { gutter: 8 } }, [e._l(e.value, (function (t, r) { return n("div", { key: r, staticClass: "option-change-box" }, [n("a-col", { attrs: { span: 18 } }, [n("a-input-number", { staticStyle: { width: "100%" }, attrs: { max: 24, placeholder: "鍚嶇О" }, model: { value: t.span, callback: function (n) { e.$set(t, "span", n) }, expression: "val.span" } })], 1), n("a-col", { attrs: { span: 6 } }, [n("div", { staticClass: "option-delete-box", on: { click: function (t) { return e.handleDelete(r) } } }, [n("a-icon", { attrs: { type: "delete" } })], 1)])], 1) })), n("a-col", { attrs: { span: 24 } }, [n("a", { on: { click: e.handleAddCol } }, [e._v("娣诲姞")])])], 2) : e._e()], 1) }, pO = [], vO = { name: "KChangeOption", props: { value: { type: Array, required: !0 }, type: { type: String, default: "option" } }, methods: { handleAdd: function () { var e = [].concat(n_(this.value), [{ value: "".concat(this.value.length + 1), label: "閫夐」" + (this.value.length + 1), list: "tab" === this.type ? [] : void 0 }]); this.$emit("input", e) }, handleAddCol: function () { var e = [].concat(n_(this.value), [{ span: 12, list: [] }]); this.$emit("input", e) }, handleAddRules: function () { var e = [].concat(n_(this.value), [{ pattern: "", message: "" }]); this.$emit("input", e) }, handleDelete: function (e) { this.$emit("input", this.value.filter((function (t, n) { return n !== e }))) } } }, mO = vO, gO = (n("12d2"), Object(l_["a"])(mO, dO, pO, !1, null, "5270f08a", null)), yO = gO.exports, bO = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-checkbox", { attrs: { val: e._val, checked: e.chackboxVal }, on: { change: e.handleChange } }, [e._v(" " + e._s(e.label) + " ")]) }, xO = [], wO = { name: "kCheckbox", data: function () { return { chackboxVal: !1 } }, props: { value: { type: Boolean, default: !1 }, label: { type: String, default: "" } }, computed: { _val: function () { return this.handleSetChackboxVal(this.value), this.value } }, methods: { handleChange: function (e) { this.$emit("input", e.target.checked) }, handleSetChackboxVal: function (e) { this.chackboxVal = e } } }, _O = wO, CO = Object(l_["a"])(_O, bO, xO, !1, null, null, null), MO = CO.exports, OO = { name: "formItemProperties", data: function () { return { familyOptions: [{ value: "SimSun", label: "瀹嬩綋" }, { value: "FangSong", label: "浠垮畫" }, { value: "SimHei", label: "榛戜綋" }, { value: "PingFangSC-Regular", label: "鑻规柟" }, { value: "KaiTi", label: "妤蜂綋" }, { value: "LiSu", label: "闅朵功" }], sizeOptions: [{ value: "26pt", label: "涓�鍙�" }, { value: "24pt", label: "灏忎竴" }, { value: "22pt", label: "浜屽彿" }, { value: "18pt", label: "灏忎簩" }, { value: "16pt", label: "涓夊彿" }, { value: "15pt", label: "灏忎笁" }, { value: "14pt", label: "鍥涘彿" }, { value: "12pt", label: "灏忓洓" }, { value: "10.5pt", label: "浜斿彿" }, { value: "9pt", label: "灏忎簲" }] } }, computed: { options: function () { return this.selectItem.options || {} } }, props: { selectItem: { type: Object, required: !0 }, hideModel: { type: Boolean, default: !1 } }, components: { KChangeOption: yO, kCheckbox: MO } }, kO = OO, SO = Object(l_["a"])(kO, hO, fO, !1, null, null, null), TO = SO.exports, AO = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "properties-centent kk-checkbox" }, [n("div", { staticClass: "properties-body" }, [n("a-form", [n("a-form-item", { attrs: { label: "琛ㄥ崟甯冨眬" } }, [n("a-radio-group", { attrs: { buttonStyle: "solid" }, model: { value: e.config.layout, callback: function (t) { e.$set(e.config, "layout", t) }, expression: "config.layout" } }, [n("a-radio-button", { attrs: { value: "horizontal" } }, [e._v("姘村钩")]), n("a-radio-button", { attrs: { value: "vertical" } }, [e._v("鍨傜洿")]), n("a-radio-button", { attrs: { value: "inline" } }, [e._v("琛屽唴")])], 1)], 1), n("a-form-item", { attrs: { label: "鏍囩甯冨眬锛堟按骞冲竷灞�鐢熸晥锛�" } }, [n("a-radio-group", { attrs: { buttonStyle: "solid" }, model: { value: e.config.labelLayout, callback: function (t) { e.$set(e.config, "labelLayout", t) }, expression: "config.labelLayout" } }, [n("a-radio-button", { attrs: { value: "flex" } }, [e._v("鍥哄畾")]), n("a-radio-button", { attrs: { value: "Grid" } }, [e._v("鏍呮牸")])], 1)], 1), n("a-form-item", { directives: [{ name: "show", rawName: "v-show", value: "flex" === e.config.labelLayout, expression: "config.labelLayout === 'flex'" }], attrs: { label: "鏍囩瀹藉害锛坧x锛�" } }, [n("a-input-number", { model: { value: e.config.labelWidth, callback: function (t) { e.$set(e.config, "labelWidth", t) }, expression: "config.labelWidth" } })], 1), n("a-form-item", { directives: [{ name: "show", rawName: "v-show", value: "flex" !== e.config.labelLayout, expression: "config.labelLayout !== 'flex'" }], attrs: { label: "labelCol" } }, [n("div", { staticClass: "change-col-box" }, [n("a-slider", { attrs: { id: "test", max: 24, min: 0 }, on: { change: e.handleChangeCol }, model: { value: e.config.labelCol.xs, callback: function (t) { e.$set(e.config.labelCol, "xs", t) }, expression: "config.labelCol.xs" } }), n("div", [n("label", [e._v("xs:")]), n("a-input-number", { model: { value: e.config.labelCol.xs, callback: function (t) { e.$set(e.config.labelCol, "xs", t) }, expression: "config.labelCol.xs" } })], 1), n("div", [n("label", [e._v("sm:")]), n("a-input-number", { model: { value: e.config.labelCol.sm, callback: function (t) { e.$set(e.config.labelCol, "sm", t) }, expression: "config.labelCol.sm" } })], 1), n("div", [n("label", [e._v("md:")]), n("a-input-number", { model: { value: e.config.labelCol.md, callback: function (t) { e.$set(e.config.labelCol, "md", t) }, expression: "config.labelCol.md" } })], 1), n("div", [n("label", [e._v("lg:")]), n("a-input-number", { model: { value: e.config.labelCol.lg, callback: function (t) { e.$set(e.config.labelCol, "lg", t) }, expression: "config.labelCol.lg" } })], 1), n("div", [n("label", [e._v("xl:")]), n("a-input-number", { model: { value: e.config.labelCol.xl, callback: function (t) { e.$set(e.config.labelCol, "xl", t) }, expression: "config.labelCol.xl" } })], 1), n("div", [n("label", [e._v("xxl:")]), n("a-input-number", { model: { value: e.config.labelCol.xxl, callback: function (t) { e.$set(e.config.labelCol, "xxl", t) }, expression: "config.labelCol.xxl" } })], 1)], 1)]), n("a-form-item", { directives: [{ name: "show", rawName: "v-show", value: "flex" !== e.config.labelLayout, expression: "config.labelLayout !== 'flex'" }], attrs: { label: "wrapperCol" } }, [n("div", { staticClass: "change-col-box" }, [n("div", [n("label", [e._v("xs:")]), n("a-input-number", { model: { value: e.config.wrapperCol.xs, callback: function (t) { e.$set(e.config.wrapperCol, "xs", t) }, expression: "config.wrapperCol.xs" } })], 1), n("div", [n("label", [e._v("sm:")]), n("a-input-number", { model: { value: e.config.wrapperCol.sm, callback: function (t) { e.$set(e.config.wrapperCol, "sm", t) }, expression: "config.wrapperCol.sm" } })], 1), n("div", [n("label", [e._v("md:")]), n("a-input-number", { model: { value: e.config.wrapperCol.md, callback: function (t) { e.$set(e.config.wrapperCol, "md", t) }, expression: "config.wrapperCol.md" } })], 1), n("div", [n("label", [e._v("lg:")]), n("a-input-number", { model: { value: e.config.wrapperCol.lg, callback: function (t) { e.$set(e.config.wrapperCol, "lg", t) }, expression: "config.wrapperCol.lg" } })], 1), n("div", [n("label", [e._v("xl:")]), n("a-input-number", { model: { value: e.config.wrapperCol.xl, callback: function (t) { e.$set(e.config.wrapperCol, "xl", t) }, expression: "config.wrapperCol.xl" } })], 1), n("div", [n("label", [e._v("xxl:")]), n("a-input-number", { model: { value: e.config.wrapperCol.xxl, callback: function (t) { e.$set(e.config.wrapperCol, "xxl", t) }, expression: "config.wrapperCol.xxl" } })], 1)])]), n("a-form-item", { attrs: { label: "棰勮妯℃�佹瀹藉害" } }, [n("a-input-number", { staticStyle: { width: "100%" }, model: { value: e.previewOptions.width, callback: function (t) { e.$set(e.previewOptions, "width", t) }, expression: "previewOptions.width" } })], 1), n("a-form-item", { attrs: { label: "琛ㄥ崟CSS" } }, [n("a-textarea", { model: { value: e.config.customStyle, callback: function (t) { e.$set(e.config, "customStyle", t) }, expression: "config.customStyle" } })], 1), n("a-form-item", { attrs: { label: "琛ㄥ崟灞炴��" } }, [n("kCheckbox", { attrs: { label: "闅愯棌蹇呴�夋爣璁�" }, model: { value: e.config.hideRequiredMark, callback: function (t) { e.$set(e.config, "hideRequiredMark", t) }, expression: "config.hideRequiredMark" } })], 1), n("a-form-item", { attrs: { label: "鎻愮ず" } }, [e._v(" 瀹為檯棰勮鏁堟灉璇风偣鍑婚瑙堟煡鐪� ")])], 1)], 1)]) }, LO = [], jO = { name: "formProperties", components: { kCheckbox: MO }, props: { config: { type: Object, required: !0 }, previewOptions: { type: Object, required: !0 } }, methods: { handleChangeCol: function (e) { this.config.labelCol.xs = this.config.labelCol.sm = this.config.labelCol.md = this.config.labelCol.lg = this.config.labelCol.xl = this.config.labelCol.xxl = e, this.config.wrapperCol.xs = this.config.wrapperCol.sm = this.config.wrapperCol.md = this.config.wrapperCol.lg = this.config.wrapperCol.xl = this.config.wrapperCol.xxl = 24 - e } } }, zO = jO, EO = (n("cd67"), Object(l_["a"])(zO, AO, LO, !1, null, "0e18ad9a", null)), PO = EO.exports; function DO(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function HO(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? DO(Object(n), !0).forEach((function (t) { Xw(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : DO(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } var VO = { name: "KFormDesign", props: { title: { type: String, default: "琛ㄥ崟璁捐鍣� --by kcz" }, showHead: { type: Boolean, default: !0 }, hideResetHint: { type: Boolean, default: !1 }, toolbarsTop: { type: Boolean, default: !1 }, toolbars: { type: Array, default: function () { return ["save", "preview", "importJson", "exportJson", "exportCode", "reset", "close", "undo", "redo"] } }, showToolbarsText: { type: Boolean, default: !1 }, fields: { type: Array, default: function () { return ["input", "textarea", "number", "select", "checkbox", "radio", "date", "time", "rate", "slider", "uploadFile", "uploadImg", "cascader", "treeSelect", "batch", "selectInputList", "editor", "switch", "button", "alert", "text", "html", "divider", "card", "tabs", "grid", "table"] } }, hideModel: { type: Boolean, default: !1 } }, data: function () { return { locale: rO.a, customComponents: lO, activeKey: 1, updateTime: 0, updateRecordTime: 0, startType: "", revoke: null, recordList: [], redoList: [], noModel: ["button", "divider", "card", "grid", "tabs", "table", "alert", "text", "html"], data: { list: [], config: { layout: "horizontal", labelCol: { xs: 4, sm: 4, md: 4, lg: 4, xl: 4, xxl: 4 }, labelWidth: 100, labelLayout: "flex", wrapperCol: { xs: 18, sm: 18, md: 18, lg: 18, xl: 18, xxl: 18 }, hideRequiredMark: !1, customStyle: "" } }, previewOptions: { width: 850 }, selectItem: { key: "" } } }, components: { kHeader: CC, operatingArea: AC, collapseItem: YM, kJsonModal: kM, kCodeModal: HM, importJsonModal: GM, previewModal: tO, kFormComponentPanel: hM, formItemProperties: TO, formProperties: PO }, watch: { data: { handler: function (e) { var t = this; this.$nextTick((function () { t.revoke.push(e) })) }, deep: !0, immediate: !0 } }, computed: { basicsArray: function () { var e = this; return cO.filter((function (t) { return e.fields.includes(t.type) })) }, layoutArray: function () { var e = this; return uO.filter((function (t) { return e.fields.includes(t.type) })) }, collapseDefaultActiveKey: function () { var e = window.localStorage.getItem("collapseDefaultActiveKey"); return e ? e.split(",") : ["1"] } }, methods: { generateKey: function (e, t) { var n = e[t].type + "_" + (new Date).getTime(); this.$set(e, t, HO(HO({}, e[t]), {}, { key: n, model: n })), this.noModel.includes(e[t].type) && delete e[t].model }, handleListPush: function (e) { if (!this.selectItem.key) { var t = e.type + "_" + (new Date).getTime(); e = HO(HO({}, e), {}, { key: t, model: t }), this.noModel.includes(e.type) && delete e.model; var n = JSON.stringify(e), r = JSON.parse(n); return delete r.icon, delete r.component, this.data.list.push(r), this.handleSetSelectItem(r), !1 } this.$refs.KFCP.handleCopy(!1, e) }, handleOpenJsonModal: function () { this.$refs.jsonModal.jsonData = this.data, this.$refs.jsonModal.visible = !0 }, handleOpenCodeModal: function () { this.$refs.codeModal.jsonData = this.data, this.$refs.codeModal.visible = !0 }, handleOpenImportJsonModal: function () { this.$refs.importJsonModal.jsonData = this.data, this.$refs.importJsonModal.handleSetSelectItem = this.handleSetSelectItem, this.$refs.importJsonModal.visible = !0 }, handlePreview: function () { this.$refs.previewModal.jsonData = this.data, this.$refs.previewModal.previewWidth = this.previewOptions.width, this.$refs.previewModal.visible = !0 }, handleReset: function () { var e = this; this.hideResetHint ? this.resetData() : this.$confirm({ title: "璀﹀憡", content: "鏄惁纭娓呯┖鍐呭?", okText: "鏄�", okType: "danger", cancelText: "鍚�", onOk: function () { e.resetData() } }) }, resetData: function () { this.data = { list: [], config: { layout: "horizontal", labelCol: { xs: 4, sm: 4, md: 4, lg: 4, xl: 4, xxl: 4 }, labelWidth: 100, labelLayout: "flex", wrapperCol: { xs: 18, sm: 18, md: 18, lg: 18, xl: 18, xxl: 18 }, hideRequiredMark: !1, customStyle: "" } }, this.handleSetSelectItem({ key: "" }), this.$message.success("宸叉竻绌�") }, handleSetSelectItem: function (e) { var t = (new Date).getTime(); if (t - this.updateTime < 100) return !1; this.updateTime = t, this.selectItem = e, e.key ? (this.startType = e.type, this.changeTab(2)) : this.changeTab(1) }, changeTab: function (e) { this.activeKey = e }, getFieldSchema: function () { var e = [], t = function t(n) { n.forEach((function (n) { "grid" === n.type || "tabs" === n.type ? n.columns.forEach((function (e) { t(e.list) })) : "card" === n.type || "batch" === n.type ? t(n.list) : "table" === n.type ? n.trs.forEach((function (e) { e.tds.forEach((function (e) { t(e.list) })) })) : n.model && e.push(n) })) }; return t(this.data.list), e }, handleSetData: function (e) { try { return "object" === Object(vC["a"])(e) && (this.data = e, this.handleSetSelectItem({ key: "" }), !0) } catch (t) { return console.error(t), !1 } }, collapseChange: function (e) { window.localStorage.setItem("collapseDefaultActiveKey", e) }, handleStart: function (e) { this.startType = e }, handleUndo: function () { var e = this.revoke.undo(); if (!e) return !1; this.data = e, this.handleSetSelectItem({ key: "" }) }, handleRedo: function () { var e = this.revoke.redo(); if (!e) return !1; this.data = e }, handleSave: function () { this.$emit("save", JSON.stringify(this.data)) }, getValue: function () { return this.data }, handleClose: function () { this.$emit("close") } }, created: function () { this.revoke = new sO, this.recordList = this.revoke.recordList, this.redoList = this.revoke.redoList } }, IO = VO, NO = Object(l_["a"])(IO, mC, gC, !1, null, null, null), RO = NO.exports; RO.install = function (e) { e.component(RO.name, RO) }; var FO = RO; tO.install = function (e) { e.component(tO.name, tO) }; var YO = tO, $O = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("a-config-provider", { attrs: { locale: e.locale } }, ["undefined" !== typeof e.value.list && "undefined" !== typeof e.value.config ? n("a-form", { staticClass: "k-form-build-9136076486841527", style: e.value.config.customStyle, attrs: { layout: e.value.config.layout, hideRequiredMark: e.value.config.hideRequiredMark, form: e.form }, on: { submit: e.handleSubmit } }, e._l(e.value.list, (function (t, r) { return n("buildBlocks", { key: r, ref: "buildBlocks", refInFor: !0, attrs: { record: t, dynamicData: e.getDynamicData, config: e.config, disabled: e.disabled, formConfig: e.value.config, validatorError: e.validatorError }, on: { handleReset: e.reset, change: e.handleChange } }) })), 1) : e._e()], 1) }, BO = [], WO = (n("5df3"), n("4f7f"), n("c5f6"), n("f559"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return "tabs" === e.record.type ? n("a-tabs", { staticClass: "grid-row", attrs: { "default-active-key": 0, tabBarGutter: e.record.options.tabBarGutter, type: e.record.options.type, size: e.record.options.size, tabPosition: e.record.options.tabPosition, animated: e.record.options.animated }, model: { value: e.activeKey, callback: function (t) { e.activeKey = t }, expression: "activeKey" } }, e._l(e.record.columns, (function (t, r) { return n("a-tab-pane", { key: r, attrs: { tab: t.label, forceRender: !0 } }, e._l(t.list, (function (t) { return n("buildBlocks", { key: t.key, ref: "nestedComponents", refInFor: !0, attrs: { disabled: e.disabled, dynamicData: e.dynamicData, record: t, formConfig: e.formConfig, config: e.config }, on: { handleReset: function (t) { return e.$emit("handleReset") }, change: e.handleChange } }) })), 1) })), 1) : "grid" === e.record.type ? n("a-row", { staticClass: "grid-row", attrs: { gutter: e.record.options.gutter } }, e._l(e.record.columns, (function (t, r) { return n("a-col", { key: r, staticClass: "grid-col", attrs: { span: t.span || 0 } }, e._l(t.list, (function (t) { return n("buildBlocks", { key: t.key, ref: "nestedComponents", refInFor: !0, attrs: { disabled: e.disabled, dynamicData: e.dynamicData, record: t, formConfig: e.formConfig, config: e.config }, on: { handleReset: function (t) { return e.$emit("handleReset") }, change: e.handleChange } }) })), 1) })), 1) : "card" === e.record.type ? n("a-card", { staticClass: "grid-row", attrs: { title: e.record.label } }, e._l(e.record.list, (function (t) { return n("buildBlocks", { key: t.key, ref: "nestedComponents", refInFor: !0, attrs: { disabled: e.disabled, dynamicData: e.dynamicData, record: t, formConfig: e.formConfig, config: e.config }, on: { handleReset: function (t) { return e.$emit("handleReset") }, change: e.handleChange } }) })), 1) : "table" === e.record.type ? n("table", { staticClass: "kk-table-9136076486841527", class: { bright: e.record.options.bright, small: e.record.options.small, bordered: e.record.options.bordered }, style: e.record.options.customStyle }, e._l(e.record.trs, (function (t, r) { return n("tr", { key: r }, e._l(t.tds.filter((function (e) { return e.colspan && e.rowspan })), (function (t, r) { return n("td", { key: r, staticClass: "table-td", attrs: { colspan: t.colspan, rowspan: t.rowspan } }, e._l(t.list, (function (t) { return n("buildBlocks", { key: t.key, ref: "nestedComponents", refInFor: !0, attrs: { disabled: e.disabled, dynamicData: e.dynamicData, record: t, formConfig: e.formConfig, config: e.config }, on: { handleReset: function (t) { return e.$emit("handleReset") }, change: e.handleChange } }) })), 1) })), 0) })), 0) : e.record.options.hidden ? e._e() : n("KFormItem", { key: e.record.key, ref: "nestedComponents", attrs: { disabled: e.disabled, dynamicData: e.dynamicData, record: e.record, formConfig: e.formConfig, config: e.config }, on: { handleReset: function (t) { return e.$emit("handleReset") }, change: e.handleChange } }) }), qO = [], UO = { name: "buildBlocks", props: { record: { type: Object, required: !0 }, formConfig: { type: Object, required: !0 }, config: { type: Object, default: function () { return {} } }, dynamicData: { type: Object, required: !0 }, disabled: { type: Boolean, default: !1 }, validatorError: { type: [Object, null], default: function () { return {} } } }, components: { KFormItem: JC }, data: function () { return { activeKey: 0 } }, methods: { validationSubform: function () { var e = this.$refs.nestedComponents; if ("object" === Object(vC["a"])(e) && e instanceof Array) { for (var t = 0; e.length > t; t++)if (!e[t].validationSubform()) return !1; return !0 } return "undefined" === typeof e || e.validationSubform() }, handleChange: function (e, t) { this.$emit("change", e, t) } }, watch: { validatorError: { deep: !0, handler: function (e) { var t = Object.keys(e); if (t.length) { if (!this.record.columns) return !1; for (var n = 0; n < this.record.columns.length; n++) { var r = this.record.columns[n].list.filter((function (e) { return t.includes(e.model) })); if (r.length) { this.activeKey = n; break } } } } } } }, KO = UO, GO = Object(l_["a"])(KO, WO, qO, !1, null, null, null), XO = GO.exports, JO = { name: "KFormBuild", data: function () { return { locale: rO.a, form: this.$form.createForm(this), validatorError: {}, defaultDynamicData: {} } }, props: { value: { type: Object, required: !0 }, dynamicData: { type: Object, default: function () { return {} } }, config: { type: Object, default: function () { return {} } }, disabled: { type: Boolean, default: !1 }, outputString: { type: Boolean, default: !1 }, defaultValue: { type: Object, default: function () { return {} } } }, components: { buildBlocks: XO }, computed: { getDynamicData: function () { return "object" === Object(vC["a"])(this.dynamicData) && Object.keys(this.dynamicData).length ? this.dynamicData : window.$kfb_dynamicData || {} } }, methods: { handleSubmit: function (e) { e.preventDefault(), this.$emit("submit", this.getData) }, reset: function () { this.form.resetFields() }, getData: function () { var e = this; return new Promise((function (t, n) { try { e.form.validateFields((function (r, i) { if (r) return n(r), void (e.validatorError = r); if (e.validatorError = {}, e.$refs.buildBlocks.forEach((function (e) { e.validationSubform() || n(r) })), e.outputString) { for (var o in i) { var a = Object(vC["a"])(i[o]); "string" !== a && "undefined" !== a && (i[o] = "object" === a ? "k-form-design#".concat(a, "#").concat(JSON.stringify(i[o])) : "k-form-design#".concat(a, "#").concat(String(i[o]))) } t(i) } else t(i) })) } catch (r) { console.error(r), n(r) } })) }, setData: function (e) { var t = this; return new Promise((function (n, r) { try { if (t.outputString) { for (var i in e) if (e[i].startsWith("k-form-design#")) { var o = e[i].split("#"); "object" === o[1] ? e[i] = JSON.parse(o[2]) : "number" === o[1] ? e[i] = Number(o[2]) : "boolean" === o[1] && (e[i] = Boolean(o[2])) } t.form.setFieldsValue(e) } else t.form.setFieldsValue(e); n(!0) } catch (a) { console.error(a), r(a) } })) }, setOptions: function (e, t, n) { var r = this; e = new Set(e); var i = function i(o) { o.forEach((function (o) { e.has(o.model) && r.$set(o.options, t, n), "grid" === o.type || "tabs" === o.type ? o.columns.forEach((function (e) { i(e.list) })) : "card" === o.type || "batch" === o.type ? i(o.list) : "table" === o.type && o.trs.forEach((function (e) { e.tds.forEach((function (e) { i(e.list) })) })) })) }; i(this.value.list) }, hide: function (e) { this.setOptions(e, "hidden", !0) }, show: function (e) { this.setOptions(e, "hidden", !1) }, disable: function (e) { this.setOptions(e, "disabled", !0) }, enable: function (e) { this.setOptions(e, "disabled", !1) }, handleChange: function (e, t) { this.$emit("change", e, t) } }, mounted: function () { var e = this; this.$nextTick((function () { e.setData(e.defaultValue) })) } }, QO = JO, ZO = Object(l_["a"])(QO, $O, BO, !1, null, null, null), ek = ZO.exports; ek.install = function (e) { e.component(ek.name, ek) }; var tk = ek, nk = [FO, tk, JC, YO], rk = function e(t) { e.installed || (e.installed = !0, nk.map((function (e) { t.component(e.name, e) }))) }; function ik(e) { if (!e || "object" !== Object(vC["a"])(e)) return console.error("浼犲叆config鐨勫弬鏁板繀椤讳负瀵硅薄"), !1; try { lO.title = e.title || "鑷箟瀹氱粍浠�", lO.list = e.list || [], window.$customComponentList = e.list || []; var t = cO.filter((function (e) { return "uploadFile" === e.type }))[0]; t.options.action = e.uploadFile || "http://cdn.kcz66.com/uploadFile.txt", t.options.data = JSON.stringify(e.uploadFileData || {}), t.options.fileName = e.uploadFileName || "file", t.options.headers = e.uploadFileHeaders || {}; var n = cO.filter((function (e) { return "uploadImg" === e.type }))[0]; return n.options.action = e.uploadImage || "http://cdn.kcz66.com/upload-img.txt", n.options.data = JSON.stringify(e.uploadImageData || {}), n.options.fileName = e.uploadImageName || "image", n.options.headers = e.uploadImageHeaders || {}, !0 } catch (r) { return console.error(r), !1 } } function ok(e) { if (!e || "object" !== Object(vC["a"])(e)) return console.error("浼犲叆setFormBuildConfig鐨勫弬鏁板繀椤讳负瀵硅薄"), !1; e.dynamicData && (window.$kfb_dynamicData = e.dynamicData) } "undefined" !== typeof window && window.Vue && rk(window.Vue); var ak = { install: rk, setConfig: ik, setFormDesignConfig: ik, setFormBuildConfig: ok }, sk = ak, ck = ik, lk = ok, uk = FO, hk = YO, fk = tk, dk = JC; t["default"] = sk }, fb25: function (e, t, n) { var r = n("afb9"), i = n("ec69"); function o(e) { return null == e ? [] : r(e, i(e)) } e.exports = o }, fba5: function (e, t, n) { var r = n("cb5a"); function i(e) { return r(this.__data__, e) > -1 } e.exports = i }, fd7e: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("x-pseudo", { months: "J~谩帽煤谩~r媒_F~茅br煤~谩r媒_~M谩rc~h_脕p~r铆l_~M谩媒_~J煤帽茅~_J煤l~媒_脕煤~g煤st~_S茅p~t茅mb~茅r_脫~ct贸b~茅r_脩~贸v茅m~b茅r_~D茅c茅~mb茅r".split("_"), monthsShort: "J~谩帽_~F茅b_~M谩r_~脕pr_~M谩媒_~J煤帽_~J煤l_~脕煤g_~S茅p_~脫ct_~脩贸v_~D茅c".split("_"), monthsParseExact: !0, weekdays: "S~煤帽d谩~媒_M贸~帽d谩媒~_T煤茅~sd谩媒~_W茅d~帽茅sd~谩媒_T~h煤rs~d谩媒_~Fr铆d~谩媒_S~谩t煤r~d谩媒".split("_"), weekdaysShort: "S~煤帽_~M贸帽_~T煤茅_~W茅d_~Th煤_~Fr铆_~S谩t".split("_"), weekdaysMin: "S~煤_M贸~_T煤_~W茅_T~h_Fr~_S谩".split("_"), weekdaysParseExact: !0, longDateFormat: { LT: "HH:mm", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, calendar: { sameDay: "[T~贸d谩~媒 谩t] LT", nextDay: "[T~贸m贸~rr贸~w 谩t] LT", nextWeek: "dddd [谩t] LT", lastDay: "[脻~茅st~茅rd谩~媒 谩t] LT", lastWeek: "[L~谩st] dddd [谩t] LT", sameElse: "L" }, relativeTime: { future: "铆~帽 %s", past: "%s 谩~g贸", s: "谩 ~f茅w ~s茅c贸~帽ds", ss: "%d s~茅c贸帽~ds", m: "谩 ~m铆帽~煤t茅", mm: "%d m~铆帽煤~t茅s", h: "谩~帽 h贸~煤r", hh: "%d h~贸煤rs", d: "谩 ~d谩媒", dd: "%d d~谩媒s", M: "谩 ~m贸帽~th", MM: "%d m~贸帽t~hs", y: "谩 ~媒茅谩r", yy: "%d 媒~茅谩rs" }, dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal: function (e) { var t = e % 10, n = 1 === ~~(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th"; return e + n }, week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }, fdef: function (e, t) { e.exports = "\t\n\v\f\r 聽釟�釥庘��鈥佲�傗�冣�勨�呪�嗏�団�堚�夆�娾�仧銆�\u2028\u2029\ufeff" }, ffd6: function (e, t, n) { var r = n("3729"), i = n("1310"), o = "[object Symbol]"; function a(e) { return "symbol" == typeof e || i(e) && r(e) == o } e.exports = a }, ffff: function (e, t, n) {
+                    (function (e, t) { t(n("c1df")) })(0, (function (e) {
+                        "use strict";
+                        //! moment.js locale configuration
+                        var t = e.defineLocale("se", { months: "o膽膽ajagem谩nnu_guovvam谩nnu_njuk膷am谩nnu_cuo艐om谩nnu_miessem谩nnu_geassem谩nnu_suoidnem谩nnu_borgem谩nnu_膷ak膷am谩nnu_golggotm谩nnu_sk谩bmam谩nnu_juovlam谩nnu".split("_"), monthsShort: "o膽膽j_guov_njuk_cuo_mies_geas_suoi_borg_膷ak膷_golg_sk谩b_juov".split("_"), weekdays: "sotnabeaivi_vuoss谩rga_ma艐艐eb谩rga_gaskavahkku_duorastat_bearjadat_l谩vvardat".split("_"), weekdaysShort: "sotn_vuos_ma艐_gask_duor_bear_l谩v".split("_"), weekdaysMin: "s_v_m_g_d_b_L".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "MMMM D. [b.] YYYY", LLL: "MMMM D. [b.] YYYY [ti.] HH:mm", LLLL: "dddd, MMMM D. [b.] YYYY [ti.] HH:mm" }, calendar: { sameDay: "[otne ti] LT", nextDay: "[ihttin ti] LT", nextWeek: "dddd [ti] LT", lastDay: "[ikte ti] LT", lastWeek: "[ovddit] dddd [ti] LT", sameElse: "L" }, relativeTime: { future: "%s gea啪es", past: "ma艐it %s", s: "moadde sekunddat", ss: "%d sekunddat", m: "okta minuhta", mm: "%d minuhtat", h: "okta diimmu", hh: "%d diimmut", d: "okta beaivi", dd: "%d beaivvit", M: "okta m谩nnu", MM: "%d m谩nut", y: "okta jahki", yy: "%d jagit" }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: "%d.", week: { dow: 1, doy: 4 } }); return t
+                    }))
+                }
+            })
+        }))
+    }, 5692: function (e, t, n) { var r = n("c430"), i = n("c6cd"); (e.exports = function (e, t) { return i[e] || (i[e] = void 0 !== t ? t : {}) })("versions", []).push({ version: "3.16.2", mode: r ? "pure" : "global", copyright: "漏 2021 Denis Pushkarev (zloirock.ru)" }) }, "56cd": function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("2fcd"), a = n("0c63"), s = {}, c = 4.5, l = "24px", u = "24px", h = "topRight", f = function () { return document.body }, d = null; function p(e) { var t = e.duration, n = e.placement, r = e.bottom, i = e.top, o = e.getContainer, a = e.closeIcon; void 0 !== t && (c = t), void 0 !== n && (h = n), void 0 !== r && (u = "number" === typeof r ? r + "px" : r), void 0 !== i && (l = "number" === typeof i ? i + "px" : i), void 0 !== o && (f = o), void 0 !== a && (d = a) } function v(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : l, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : u, r = void 0; switch (e) { case "topLeft": r = { left: 0, top: t, bottom: "auto" }; break; case "topRight": r = { right: 0, top: t, bottom: "auto" }; break; case "bottomLeft": r = { left: 0, top: "auto", bottom: n }; break; default: r = { right: 0, top: "auto", bottom: n }; break }return r } function m(e, t) { var n = e.prefixCls, r = e.placement, i = void 0 === r ? h : r, c = e.getContainer, l = void 0 === c ? f : c, u = e.top, p = e.bottom, m = e.closeIcon, g = void 0 === m ? d : m, y = n + "-" + i; s[y] ? t(s[y]) : o["a"].newInstance({ prefixCls: n, class: n + "-" + i, style: v(i, u, p), getContainer: l, closeIcon: function (e) { var t = "function" === typeof g ? g(e) : g, r = e("span", { class: n + "-close-x" }, [t || e(a["a"], { class: n + "-close-icon", attrs: { type: "close" } })]); return r } }, (function (e) { s[y] = e, t(e) })) } var g = { success: "check-circle-o", info: "info-circle-o", error: "close-circle-o", warning: "exclamation-circle-o" }; function y(e) { var t = e.icon, n = e.type, r = e.description, i = e.message, o = e.btn, s = e.prefixCls || "ant-notification", l = s + "-notice", u = void 0 === e.duration ? c : e.duration, h = null; if (t) h = function (e) { return e("span", { class: l + "-icon" }, ["function" === typeof t ? t(e) : t]) }; else if (n) { var f = g[n]; h = function (e) { return e(a["a"], { class: l + "-icon " + l + "-icon-" + n, attrs: { type: f } }) } } var d = e.placement, p = e.top, v = e.bottom, y = e.getContainer, b = e.closeIcon; m({ prefixCls: s, placement: d, top: p, bottom: v, getContainer: y, closeIcon: b }, (function (t) { t.notice({ content: function (e) { return e("div", { class: h ? l + "-with-icon" : "" }, [h && h(e), e("div", { class: l + "-message" }, [!r && h ? e("span", { class: l + "-message-single-line-auto-margin" }) : null, "function" === typeof i ? i(e) : i]), e("div", { class: l + "-description" }, ["function" === typeof r ? r(e) : r]), o ? e("span", { class: l + "-btn" }, ["function" === typeof o ? o(e) : o]) : null]) }, duration: u, closable: !0, onClose: e.onClose, onClick: e.onClick, key: e.key, style: e.style || {}, class: e["class"] }) })) } var b = { open: y, close: function (e) { Object.keys(s).forEach((function (t) { return s[t].removeNotice(e) })) }, config: p, destroy: function () { Object.keys(s).forEach((function (e) { s[e].destroy(), delete s[e] })) } };["success", "info", "warning", "error"].forEach((function (e) { b[e] = function (t) { return b.open(i()({}, t, { type: e })) } })), b.warn = b.warning, t["a"] = b }, "56ef": function (e, t, n) { var r = n("d066"), i = n("241c"), o = n("7418"), a = n("825a"); e.exports = r("Reflect", "ownKeys") || function (e) { var t = i.f(a(e)), n = o.f; return n ? t.concat(n(e)) : t } }, 5704: function (e, t, n) { "use strict"; n("b2a3"), n("948e"), n("6ba6") }, "577e": function (e, t, n) { var r = n("d9b5"); e.exports = function (e) { if (r(e)) throw TypeError("Cannot convert a Symbol value to a string"); return String(e) } }, 5783: function (e, t, n) { "use strict"; n("b2a3"), n("40cb") }, "57a5": function (e, t, n) { var r = n("91e9"), i = r(Object.keys, Object); e.exports = i }, "57ba": function (e, t, n) { "use strict"; t.__esModule = !0; var r = n("4849"), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } t.default = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), (0, i.default)(e, r.key, r) } } return function (t, n, r) { return n && e(t.prototype, n), r && e(t, r), t } }() }, "583b": function (e, t, n) { var r = n("23e7"), i = n("5e89"), o = Math.abs; r({ target: "Number", stat: !0 }, { isSafeInteger: function (e) { return i(e) && o(e) <= 9007199254740991 } }) }, "585a": function (e, t, n) { (function (t) { var n = "object" == typeof t && t && t.Object === Object && t; e.exports = n }).call(this, n("c8ba")) }, 5899: function (e, t) { e.exports = "\t\n\v\f\r 聽釟�鈥�鈥佲�傗�冣�勨�呪�嗏�団�堚�夆�娾�仧銆�\u2028\u2029\ufeff" }, "58a8": function (e, t, n) { var r = n("1d80"), i = n("577e"), o = n("5899"), a = "[" + o + "]", s = RegExp("^" + a + a + "*"), c = RegExp(a + a + "*$"), l = function (e) { return function (t) { var n = i(r(t)); return 1 & e && (n = n.replace(s, "")), 2 & e && (n = n.replace(c, "")), n } }; e.exports = { start: l(1), end: l(2), trim: l(3) } }, "58c1": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return u })); var r = n("92fa"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("4d91"), c = n("daa3"); function l(e) { return e.name || "Component" } function u(e) { var t = e.props || {}, n = e.methods || {}, r = {}; Object.keys(t).forEach((function (e) { r[e] = a()({}, t[e], { required: !1 }) })), e.props.__propsSymbol__ = s["a"].any, e.props.children = s["a"].array.def([]); var o = { props: r, model: e.model, name: "Proxy_" + l(e), methods: { getProxyWrappedInstance: function () { return this.$refs.wrappedInstance } }, render: function () { var t = arguments[0], n = this.$slots, r = void 0 === n ? {} : n, o = this.$scopedSlots, s = Object(c["l"])(this), l = { props: a()({}, s, { __propsSymbol__: Symbol(), componentWillReceiveProps: a()({}, s), children: r["default"] || s.children || [] }), on: Object(c["k"])(this) }; Object.keys(o).length && (l.scopedSlots = o); var u = Object.keys(r); return t(e, i()([l, { ref: "wrappedInstance" }]), [u.length ? u.map((function (e) { return t("template", { slot: e }, [r[e]]) })) : null]) } }; return Object.keys(n).map((function (e) { o.methods[e] = function () { var t; return (t = this.getProxyWrappedInstance())[e].apply(t, arguments) } })), o } }, "59a5": function (e, t, n) { "use strict"; var r = n("92fa"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("8e8e"), u = n.n(l), h = n("4d91"), f = n("f971"), d = n("4d26"), p = n.n(d), v = n("daa3"), m = n("9cba"); function g() { } var y = { name: "ARadio", model: { prop: "checked" }, props: { prefixCls: h["a"].string, defaultChecked: Boolean, checked: { type: Boolean, default: void 0 }, disabled: Boolean, isGroup: Boolean, value: h["a"].any, name: String, id: String, autoFocus: Boolean, type: h["a"].string.def("radio") }, inject: { radioGroupContext: { default: void 0 }, configProvider: { default: function () { return m["a"] } } }, methods: { focus: function () { this.$refs.vcCheckbox.focus() }, blur: function () { this.$refs.vcCheckbox.blur() }, handleChange: function (e) { var t = e.target.checked; this.$emit("input", t), this.$emit("change", e) }, onChange: function (e) { this.$emit("change", e), this.radioGroupContext && this.radioGroupContext.onRadioChange && this.radioGroupContext.onRadioChange(e) } }, render: function () { var e, t = arguments[0], n = this.$slots, r = this.radioGroupContext, o = Object(v["l"])(this), s = n["default"], l = Object(v["k"])(this), h = l.mouseenter, d = void 0 === h ? g : h, m = l.mouseleave, y = void 0 === m ? g : m, b = u()(l, ["mouseenter", "mouseleave"]), x = o.prefixCls, w = u()(o, ["prefixCls"]), _ = this.configProvider.getPrefixCls, C = _("radio", x), M = { props: c()({}, w, { prefixCls: C }), on: b, attrs: Object(v["e"])(this) }; r ? (M.props.name = r.name, M.on.change = this.onChange, M.props.checked = o.value === r.stateValue, M.props.disabled = o.disabled || r.disabled) : M.on.change = this.handleChange; var O = p()((e = {}, a()(e, C + "-wrapper", !0), a()(e, C + "-wrapper-checked", M.props.checked), a()(e, C + "-wrapper-disabled", M.props.disabled), e)); return t("label", { class: O, on: { mouseenter: d, mouseleave: y } }, [t(f["a"], i()([M, { ref: "vcCheckbox" }])), void 0 !== s ? t("span", [s]) : null]) } }; function b() { } var x = { name: "ARadioGroup", model: { prop: "value" }, props: { prefixCls: h["a"].string, defaultValue: h["a"].any, value: h["a"].any, size: { default: "default", validator: function (e) { return ["large", "default", "small"].includes(e) } }, options: { default: function () { return [] }, type: Array }, disabled: Boolean, name: String, buttonStyle: h["a"].string.def("outline") }, data: function () { var e = this.value, t = this.defaultValue; return this.updatingValue = !1, { stateValue: void 0 === e ? t : e } }, provide: function () { return { radioGroupContext: this } }, inject: { configProvider: { default: function () { return m["a"] } } }, computed: { radioOptions: function () { var e = this.disabled; return this.options.map((function (t) { return "string" === typeof t ? { label: t, value: t } : c()({}, t, { disabled: void 0 === t.disabled ? e : t.disabled }) })) }, classes: function () { var e, t = this.prefixCls, n = this.size; return e = {}, a()(e, "" + t, !0), a()(e, t + "-" + n, n), e } }, watch: { value: function (e) { this.updatingValue = !1, this.stateValue = e } }, methods: { onRadioChange: function (e) { var t = this, n = this.stateValue, r = e.target.value; Object(v["s"])(this, "value") || (this.stateValue = r), this.updatingValue || r === n || (this.updatingValue = !0, this.$emit("input", r), this.$emit("change", e)), this.$nextTick((function () { t.updatingValue = !1 })) } }, render: function () { var e = this, t = arguments[0], n = Object(v["k"])(this), r = n.mouseenter, i = void 0 === r ? b : r, o = n.mouseleave, s = void 0 === o ? b : o, c = Object(v["l"])(this), l = c.prefixCls, u = c.options, h = c.buttonStyle, f = this.configProvider.getPrefixCls, d = f("radio", l), m = d + "-group", g = p()(m, m + "-" + h, a()({}, m + "-" + c.size, c.size)), x = Object(v["c"])(this.$slots["default"]); return u && u.length > 0 && (x = u.map((function (n) { return "string" === typeof n ? t(y, { key: n, attrs: { prefixCls: d, disabled: c.disabled, value: n, checked: e.stateValue === n } }, [n]) : t(y, { key: "radio-group-value-options-" + n.value, attrs: { prefixCls: d, disabled: n.disabled || c.disabled, value: n.value, checked: e.stateValue === n.value } }, [n.label]) }))), t("div", { class: g, on: { mouseenter: i, mouseleave: s } }, [x]) } }, w = { name: "ARadioButton", props: c()({}, y.props), inject: { radioGroupContext: { default: void 0 }, configProvider: { default: function () { return m["a"] } } }, render: function () { var e = arguments[0], t = Object(v["l"])(this), n = t.prefixCls, r = u()(t, ["prefixCls"]), i = this.configProvider.getPrefixCls, o = i("radio-button", n), a = { props: c()({}, r, { prefixCls: o }), on: Object(v["k"])(this) }; return this.radioGroupContext && (a.on.change = this.radioGroupContext.onRadioChange, a.props.checked = this.$props.value === this.radioGroupContext.stateValue, a.props.disabled = this.$props.disabled || this.radioGroupContext.disabled), e(y, a, [this.$slots["default"]]) } }, _ = n("db14"); y.Group = x, y.Button = w, y.install = function (e) { e.use(_["a"]), e.component(y.name, y), e.component(y.Group.name, y.Group), e.component(y.Button.name, y.Button) }; t["a"] = y }, "5a34": function (e, t, n) { var r = n("44e7"); e.exports = function (e) { if (r(e)) throw TypeError("The method doesn't accept regular expressions"); return e } }, "5a43": function (e, t) { function n(e, t) { (null == t || t > e.length) && (t = e.length); for (var n = 0, r = new Array(t); n < t; n++)r[n] = e[n]; return r } e.exports = n, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, "5a94": function (e, t, n) { var r = n("b367")("keys"), i = n("8b1a"); e.exports = function (e) { return r[e] || (r[e] = i(e)) } }, "5b01": function (e, t, n) { var r = n("8eeb"), i = n("ec69"); function o(e, t) { return e && r(t, i(t), e) } e.exports = o }, "5b90": function (e, t, n) { "use strict"; function r(e, t) { var n = window.Element.prototype, r = n.matches || n.mozMatchesSelector || n.msMatchesSelector || n.oMatchesSelector || n.webkitMatchesSelector; if (!e || 1 !== e.nodeType) return !1; var i = e.parentNode; if (r) return r.call(e, t); for (var o = i.querySelectorAll(t), a = o.length, s = 0; s < a; s++)if (o[s] === e) return !0; return !1 } e.exports = r }, "5bf7": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("83ab"), o = n("eb1d"), a = n("7b0b"), s = n("a04b"), c = n("e163"), l = n("06cf").f; i && r({ target: "Object", proto: !0, forced: o }, { __lookupSetter__: function (e) { var t, n = a(this), r = s(e); do { if (t = l(n, r)) return t.set } while (n = c(n)) } }) }, "5c3a": function (e, t, n) {
+        (function (e, t) { t(n("c1df")) })(0, (function (e) {
+            "use strict";
+            //! moment.js locale configuration
+            var t = e.defineLocale("zh-cn", { months: "涓�鏈坃浜屾湀_涓夋湀_鍥涙湀_浜旀湀_鍏湀_涓冩湀_鍏湀_涔濇湀_鍗佹湀_鍗佷竴鏈坃鍗佷簩鏈�".split("_"), monthsShort: "1鏈坃2鏈坃3鏈坃4鏈坃5鏈坃6鏈坃7鏈坃8鏈坃9鏈坃10鏈坃11鏈坃12鏈�".split("_"), weekdays: "鏄熸湡鏃鏄熸湡涓�_鏄熸湡浜宊鏄熸湡涓塤鏄熸湡鍥沖鏄熸湡浜擾鏄熸湡鍏�".split("_"), weekdaysShort: "鍛ㄦ棩_鍛ㄤ竴_鍛ㄤ簩_鍛ㄤ笁_鍛ㄥ洓_鍛ㄤ簲_鍛ㄥ叚".split("_"), weekdaysMin: "鏃涓�_浜宊涓塤鍥沖浜擾鍏�".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY/MM/DD", LL: "YYYY骞碝鏈圖鏃�", LLL: "YYYY骞碝鏈圖鏃h鐐筸m鍒�", LLLL: "YYYY骞碝鏈圖鏃dddAh鐐筸m鍒�", l: "YYYY/M/D", ll: "YYYY骞碝鏈圖鏃�", lll: "YYYY骞碝鏈圖鏃� HH:mm", llll: "YYYY骞碝鏈圖鏃ddd HH:mm" }, meridiemParse: /鍑屾櫒|鏃╀笂|涓婂崍|涓崍|涓嬪崍|鏅氫笂/, meridiemHour: function (e, t) { return 12 === e && (e = 0), "鍑屾櫒" === t || "鏃╀笂" === t || "涓婂崍" === t ? e : "涓嬪崍" === t || "鏅氫笂" === t ? e + 12 : e >= 11 ? e : e + 12 }, meridiem: function (e, t, n) { var r = 100 * e + t; return r < 600 ? "鍑屾櫒" : r < 900 ? "鏃╀笂" : r < 1130 ? "涓婂崍" : r < 1230 ? "涓崍" : r < 1800 ? "涓嬪崍" : "鏅氫笂" }, calendar: { sameDay: "[浠婂ぉ]LT", nextDay: "[鏄庡ぉ]LT", nextWeek: function (e) { return e.week() !== this.week() ? "[涓媇dddLT" : "[鏈琞dddLT" }, lastDay: "[鏄ㄥぉ]LT", lastWeek: function (e) { return this.week() !== e.week() ? "[涓奭dddLT" : "[鏈琞dddLT" }, sameElse: "L" }, dayOfMonthOrdinalParse: /\d{1,2}(鏃鏈坾鍛�)/, ordinal: function (e, t) { switch (t) { case "d": case "D": case "DDD": return e + "鏃�"; case "M": return e + "鏈�"; case "w": case "W": return e + "鍛�"; default: return e } }, relativeTime: { future: "%s鍚�", past: "%s鍓�", s: "鍑犵", ss: "%d 绉�", m: "1 鍒嗛挓", mm: "%d 鍒嗛挓", h: "1 灏忔椂", hh: "%d 灏忔椂", d: "1 澶�", dd: "%d 澶�", w: "1 鍛�", ww: "%d 鍛�", M: "1 涓湀", MM: "%d 涓湀", y: "1 骞�", yy: "%d 骞�" }, week: { dow: 1, doy: 4 } }); return t
+        }))
+    }, "5c69": function (e, t, n) { var r = n("087d"), i = n("0621"); function o(e, t, n, a, s) { var c = -1, l = e.length; n || (n = i), s || (s = []); while (++c < l) { var u = e[c]; t > 0 && n(u) ? t > 1 ? o(u, t - 1, n, a, s) : r(s, u) : a || (s[s.length] = u) } return s } e.exports = o }, "5c6c": function (e, t) { e.exports = function (e, t) { return { enumerable: !(1 & e), configurable: !(2 & e), writable: !(4 & e), value: t } } }, "5ca0": function (e, t, n) { var r = n("badf"), i = n("30c9"), o = n("ec69"); function a(e) { return function (t, n, a) { var s = Object(t); if (!i(t)) { var c = r(n, 3); t = o(t), n = function (e) { return c(s[e], e, s) } } var l = e(t, n, a); return l > -1 ? s[c ? t[l] : l] : void 0 } } e.exports = a }, "5cad": function (e, t, n) { "use strict"; n("b2a3"), n("b071"), n("06f4"), n("ee00"), n("6ba6"), n("5704") }, "5cc6": function (e, t, n) { var r = n("74e8"); r("Uint8", (function (e) { return function (t, n, r) { return e(this, t, n, r) } })) }, "5cdc": function (e, t, n) { }, "5d41": function (e, t, n) { var r = n("23e7"), i = n("861d"), o = n("825a"), a = n("5135"), s = n("06cf"), c = n("e163"); function l(e, t) { var n, r, u = arguments.length < 3 ? e : arguments[2]; return o(e) === u ? e[t] : (n = s.f(e, t)) ? a(n, "value") ? n.value : void 0 === n.get ? void 0 : n.get.call(u) : i(r = c(e)) ? l(r, t, u) : void 0 } r({ target: "Reflect", stat: !0 }, { get: l }) }, "5d89": function (e, t, n) { var r = n("f8af"); function i(e, t) { var n = t ? r(e.buffer) : e.buffer; return new e.constructor(n, e.byteOffset, e.byteLength) } e.exports = i }, "5db7": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("a2bf"), o = n("7b0b"), a = n("50c4"), s = n("1c0b"), c = n("65f0"); r({ target: "Array", proto: !0 }, { flatMap: function (e) { var t, n = o(this), r = a(n.length); return s(e), t = c(n, 0), t.length = i(t, n, n, r, 0, 1, e, arguments.length > 1 ? arguments[1] : void 0), t } }) }, "5ded": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("d039"), o = n("8418"), a = i((function () { function e() { } return !(Array.of.call(e) instanceof e) })); r({ target: "Array", stat: !0, forced: a }, { of: function () { var e = 0, t = arguments.length, n = new ("function" == typeof this ? this : Array)(t); while (t > e) o(n, e, arguments[e++]); return n.length = t, n } }) }, "5e07": function (e, t, n) { }, "5e2e": function (e, t, n) { var r = n("28c9"), i = n("69d5"), o = n("b4c0"), a = n("fba5"), s = n("67ca"); function c(e) { var t = -1, n = null == e ? 0 : e.length; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } c.prototype.clear = r, c.prototype["delete"] = i, c.prototype.get = o, c.prototype.has = a, c.prototype.set = s, e.exports = c }, "5e89": function (e, t, n) { var r = n("861d"), i = Math.floor; e.exports = function (e) { return !r(e) && isFinite(e) && i(e) === e } }, "5eb5": function (e, t, n) { }, "5edf": function (e, t) { function n(e, t, n) { var r = -1, i = null == e ? 0 : e.length; while (++r < i) if (n(t, e[r])) return !0; return !1 } e.exports = n }, "5efb": function (e, t, n) { "use strict"; var r = n("92fa"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("6042"), c = n.n(s), l = n("a9d4"), u = n("0c63"), h = n("b92b"), f = n("daa3"), d = n("9cba"), p = /^[\u4e00-\u9fa5]{2}$/, v = p.test.bind(p), m = Object(h["a"])(), g = { name: "AButton", inheritAttrs: !1, __ANT_BUTTON: !0, props: m, inject: { configProvider: { default: function () { return d["a"] } } }, data: function () { return { sizeMap: { large: "lg", small: "sm" }, sLoading: !!this.loading, hasTwoCNChar: !1 } }, computed: { classes: function () { var e, t = this.prefixCls, n = this.type, r = this.shape, i = this.size, o = this.hasTwoCNChar, a = this.sLoading, s = this.ghost, l = this.block, u = this.icon, h = this.$slots, d = this.configProvider.getPrefixCls, p = d("btn", t), v = !1 !== this.configProvider.autoInsertSpaceInButton, m = ""; switch (i) { case "large": m = "lg"; break; case "small": m = "sm"; break; default: break }var g = a ? "loading" : u, y = Object(f["c"])(h["default"]); return e = {}, c()(e, "" + p, !0), c()(e, p + "-" + n, n), c()(e, p + "-" + r, r), c()(e, p + "-" + m, m), c()(e, p + "-icon-only", 0 === y.length && g), c()(e, p + "-loading", a), c()(e, p + "-background-ghost", s || "ghost" === n), c()(e, p + "-two-chinese-chars", o && v), c()(e, p + "-block", l), e } }, watch: { loading: function (e, t) { var n = this; t && "boolean" !== typeof t && clearTimeout(this.delayTimeout), e && "boolean" !== typeof e && e.delay ? this.delayTimeout = setTimeout((function () { n.sLoading = !!e }), e.delay) : this.sLoading = !!e } }, mounted: function () { this.fixTwoCNChar() }, updated: function () { this.fixTwoCNChar() }, beforeDestroy: function () { this.delayTimeout && clearTimeout(this.delayTimeout) }, methods: { fixTwoCNChar: function () { var e = this.$refs.buttonNode; if (e) { var t = e.textContent; this.isNeedInserted() && v(t) ? this.hasTwoCNChar || (this.hasTwoCNChar = !0) : this.hasTwoCNChar && (this.hasTwoCNChar = !1) } }, handleClick: function (e) { var t = this.$data.sLoading; t || this.$emit("click", e) }, insertSpace: function (e, t) { var n = this.$createElement, r = t ? " " : ""; if ("string" === typeof e.text) { var i = e.text.trim(); return v(i) && (i = i.split("").join(r)), n("span", [i]) } return e }, isNeedInserted: function () { var e = this.$slots, t = this.type, n = Object(f["g"])(this, "icon"); return e["default"] && 1 === e["default"].length && !n && "link" !== t } }, render: function () { var e = this, t = arguments[0], n = this.type, r = this.htmlType, o = this.classes, s = this.disabled, c = this.handleClick, h = this.sLoading, d = this.$slots, p = this.$attrs, v = Object(f["g"])(this, "icon"), m = { attrs: a()({}, p, { disabled: s }), class: o, on: a()({}, Object(f["k"])(this), { click: c }) }, g = h ? "loading" : v, y = g ? t(u["a"], { attrs: { type: g } }) : null, b = Object(f["c"])(d["default"]), x = !1 !== this.configProvider.autoInsertSpaceInButton, w = b.map((function (t) { return e.insertSpace(t, e.isNeedInserted() && x) })); if (void 0 !== p.href) return t("a", i()([m, { ref: "buttonNode" }]), [y, w]); var _ = t("button", i()([m, { ref: "buttonNode", attrs: { type: r || "button" } }]), [y, w]); return "link" === n ? _ : t(l["a"], [_]) } }, y = n("83ab2"), b = n("db14"); g.Group = y["b"], g.install = function (e) { e.use(b["a"]), e.component(g.name, g), e.component(y["b"].name, y["b"]) }; t["a"] = g }, "5f96": function (e, t, n) { "use strict"; var r = n("ebb5"), i = r.aTypedArray, o = r.exportTypedArrayMethod, a = [].join; o("join", (function (e) { return a.apply(i(this), arguments) })) }, "5fb2": function (e, t, n) { "use strict"; var r = 2147483647, i = 36, o = 1, a = 26, s = 38, c = 700, l = 72, u = 128, h = "-", f = /[^\0-\u007E]/, d = /[.\u3002\uFF0E\uFF61]/g, p = "Overflow: input needs wider integers to process", v = i - o, m = Math.floor, g = String.fromCharCode, y = function (e) { var t = [], n = 0, r = e.length; while (n < r) { var i = e.charCodeAt(n++); if (i >= 55296 && i <= 56319 && n < r) { var o = e.charCodeAt(n++); 56320 == (64512 & o) ? t.push(((1023 & i) << 10) + (1023 & o) + 65536) : (t.push(i), n--) } else t.push(i) } return t }, b = function (e) { return e + 22 + 75 * (e < 26) }, x = function (e, t, n) { var r = 0; for (e = n ? m(e / c) : e >> 1, e += m(e / t); e > v * a >> 1; r += i)e = m(e / v); return m(r + (v + 1) * e / (e + s)) }, w = function (e) { var t = []; e = y(e); var n, s, c = e.length, f = u, d = 0, v = l; for (n = 0; n < e.length; n++)s = e[n], s < 128 && t.push(g(s)); var w = t.length, _ = w; w && t.push(h); while (_ < c) { var C = r; for (n = 0; n < e.length; n++)s = e[n], s >= f && s < C && (C = s); var M = _ + 1; if (C - f > m((r - d) / M)) throw RangeError(p); for (d += (C - f) * M, f = C, n = 0; n < e.length; n++) { if (s = e[n], s < f && ++d > r) throw RangeError(p); if (s == f) { for (var O = d, k = i; ; k += i) { var S = k <= v ? o : k >= v + a ? a : k - v; if (O < S) break; var T = O - S, A = i - S; t.push(g(b(S + T % A))), O = m(T / A) } t.push(g(b(O))), v = x(d, M, _ == w), d = 0, ++_ } } ++d, ++f } return t.join("") }; e.exports = function (e) { var t, n, r = [], i = e.toLowerCase().replace(d, ".").split("."); for (t = 0; t < i.length; t++)n = i[t], r.push(f.test(n) ? "xn--" + w(n) : n); return r.join(".") } }, 6042: function (e, t, n) { "use strict"; t.__esModule = !0; var r = n("4849"), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } t.default = function (e, t, n) { return t in e ? (0, i.default)(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } }, 6044: function (e, t, n) { var r = n("0b07"), i = r(Object, "create"); e.exports = i }, "605d": function (e, t, n) { var r = n("c6b6"), i = n("da84"); e.exports = "process" == r(i.process) }, 6062: function (e, t, n) { "use strict"; var r = n("6d61"), i = n("6566"); e.exports = r("Set", (function (e) { return function () { return e(this, arguments.length ? arguments[0] : void 0) } }), i) }, 6069: function (e, t) { e.exports = "object" == typeof window }, "60bd": function (e, t, n) { "use strict"; var r = n("da84"), i = n("ebb5"), o = n("e260"), a = n("b622"), s = a("iterator"), c = r.Uint8Array, l = o.values, u = o.keys, h = o.entries, f = i.aTypedArray, d = i.exportTypedArrayMethod, p = c && c.prototype[s], v = !!p && ("values" == p.name || void 0 == p.name), m = function () { return l.call(f(this)) }; d("entries", (function () { return h.call(f(this)) })), d("keys", (function () { return u.call(f(this)) })), d("values", m, !v), d(s, m, !v) }, "60da": function (e, t, n) { "use strict"; var r = n("83ab"), i = n("d039"), o = n("df75"), a = n("7418"), s = n("d1e7"), c = n("7b0b"), l = n("44ad"), u = Object.assign, h = Object.defineProperty; e.exports = !u || i((function () { if (r && 1 !== u({ b: 1 }, u(h({}, "a", { enumerable: !0, get: function () { h(this, "b", { value: 3, enumerable: !1 }) } }), { b: 2 })).b) return !0; var e = {}, t = {}, n = Symbol(), i = "abcdefghijklmnopqrst"; return e[n] = 7, i.split("").forEach((function (e) { t[e] = e })), 7 != u({}, e)[n] || o(u({}, t)).join("") != i })) ? function (e, t) { var n = c(e), i = arguments.length, u = 1, h = a.f, f = s.f; while (i > u) { var d, p = l(arguments[u++]), v = h ? o(p).concat(h(p)) : o(p), m = v.length, g = 0; while (m > g) d = v[g++], r && !f.call(p, d) || (n[d] = p[d]) } return n } : u }, "60ed": function (e, t, n) { var r = n("3729"), i = n("2dcb"), o = n("1310"), a = "[object Object]", s = Function.prototype, c = Object.prototype, l = s.toString, u = c.hasOwnProperty, h = l.call(Object); function f(e) { if (!o(e) || r(e) != a) return !1; var t = i(e); if (null === t) return !0; var n = u.call(t, "constructor") && t.constructor; return "function" == typeof n && n instanceof n && l.call(n) == h } e.exports = f }, "60f1": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.legendConfig = void 0; var r = { show: !0, orient: "horizontal", left: "auto", right: "auto", top: "auto", bottom: "auto", itemGap: 10, iconWidth: 25, iconHeight: 10, selectAble: !0, data: [], textStyle: { fontFamily: "Arial", fontSize: 13, fill: "#000" }, iconStyle: {}, textUnselectedStyle: { fontFamily: "Arial", fontSize: 13, fill: "#999" }, iconUnselectedStyle: { fill: "#999" }, rLevel: 20, animationCurve: "easeOutCubic", animationFrame: 50 }; t.legendConfig = r }, "60f7": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.legend = h; var i = r(n("9523")), o = r(n("278c")), a = r(n("7037")), s = n("18ad"), c = n("5557"), l = n("9d85"), u = n("becb"); function h(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.legend; n ? (n = (0, u.deepMerge)((0, c.deepClone)(l.legendConfig, !0), n), n = f(n), n = d(n, t, e), n = p(n, e), n = g(n, e), n = [n]) : n = [], (0, s.doUpdate)({ chart: e, series: n, key: "legendIcon", getGraphConfig: T }), (0, s.doUpdate)({ chart: e, series: n, key: "legendText", getGraphConfig: j }) } function f(e) { var t = e.data; return e.data = t.map((function (e) { var t = (0, a["default"])(e); return "string" === t ? { name: e } : "object" === t ? e : { name: "" } })), e } function d(e, t, n) { var r = t.series, i = n.legendStatus, o = e.data.filter((function (e) { var t = e.name, n = r.find((function (e) { var n = e.name; return t === n })); return !!n && (e.color || (e.color = n.color), e.icon || (e.icon = n.type), e) })); return i && i.length === e.data.length || (i = new Array(e.data.length).fill(!0)), o.forEach((function (e, t) { return e.status = i[t] })), e.data = o, n.legendStatus = i, e } function p(e, t) { var n = t.render.ctx, r = e.data, i = e.textStyle, o = e.textUnselectedStyle; return r.forEach((function (e) { var t = e.status, r = e.name; e.textWidth = v(n, r, t ? i : o) })), e } function v(e, t, n) { return e.font = m(n), e.measureText(t).width } function m(e) { var t = e.fontFamily, n = e.fontSize; return "".concat(n, "px ").concat(t) } function g(e, t) { var n = e.orient; return "vertical" === n ? M(e, t) : y(e, t), e } function y(e, t) { var n = e.iconHeight, r = e.itemGap, i = b(e, t), o = i.map((function (n) { return w(n, e, t) })), a = _(e, t), s = { textAlign: "left", textBaseline: "middle" }; i.forEach((function (e, t) { return e.forEach((function (e) { var i = e.iconPosition, c = e.textPosition, l = o[t], u = a + t * (r + n); e.iconPosition = C(i, [l, u]), e.textPosition = C(c, [l, u]), e.align = s })) })) } function b(e, t) { var n = e.data, r = e.iconWidth, i = t.render.area[0], o = 0, a = [[]]; return n.forEach((function (t, n) { var s = x(o, n, e), c = s + r + 5 + t.textWidth; c >= i && (o = n, s = x(o, n, e), a.push([])), t.iconPosition = [s, 0], t.textPosition = [s + r + 5, 0], a.slice(-1)[0].push(t) })), a } function x(e, t, n) { var r = n.data, i = n.iconWidth, o = n.itemGap, a = r.slice(e, t); return (0, u.mulAdd)(a.map((function (e) { var t = e.textWidth; return t }))) + (t - e) * (o + 5 + i) } function w(e, t, n) { var r = t.left, i = t.right, o = t.iconWidth, a = t.itemGap, s = n.render.area[0], c = e.length, l = (0, u.mulAdd)(e.map((function (e) { var t = e.textWidth; return t }))) + c * (5 + o) + (c - 1) * a, h = [r, i].findIndex((function (e) { return "auto" !== e })); return -1 === h ? (s - l) / 2 : 0 === h ? "number" === typeof r ? r : parseInt(r) / 100 * s : ("number" !== typeof i && (i = parseInt(i) / 100 * s), s - (l + i)) } function _(e, t) { var n = e.top, r = e.bottom, i = e.iconHeight, o = t.render.area[1], a = [n, r].findIndex((function (e) { return "auto" !== e })), s = i / 2; if (-1 === a) { var c = t.gridArea, l = c.y, u = c.h; return l + u + 45 - s } return 0 === a ? "number" === typeof n ? n - s : parseInt(n) / 100 * o - s : ("number" !== typeof r && (r = parseInt(r) / 100 * o), o - r - s) } function C(e, t) { var n = (0, o["default"])(e, 2), r = n[0], i = n[1], a = (0, o["default"])(t, 2), s = a[0], c = a[1]; return [r + s, i + c] } function M(e, t) { var n = O(e, t), r = (0, o["default"])(n, 2), i = r[0], a = r[1], s = k(e, t); S(e, i); var c = { textAlign: "left", textBaseline: "middle" }; e.data.forEach((function (e) { var t = e.textPosition, n = e.iconPosition; e.textPosition = C(t, [a, s]), e.iconPosition = C(n, [a, s]), e.align = c })) } function O(e, t) { var n = e.left, r = e.right, i = t.render.area[0], o = [n, r].findIndex((function (e) { return "auto" !== e })); if (-1 === o) return [!0, i - 10]; var a = [n, r][o]; return "number" !== typeof a && (a = parseInt(a) / 100 * i), [Boolean(o), a] } function k(e, t) { var n = e.iconHeight, r = e.itemGap, i = e.data, o = e.top, a = e.bottom, s = t.render.area[1], c = i.length, l = c * n + (c - 1) * r, u = [o, a].findIndex((function (e) { return "auto" !== e })); if (-1 === u) return (s - l) / 2; var h = [o, a][u]; return "number" !== typeof h && (h = parseInt(h) / 100 * s), 1 === u && (h = s - h - l), h } function S(e, t) { var n = e.data, r = e.iconWidth, i = e.iconHeight, o = e.itemGap, a = i / 2; n.forEach((function (e, n) { var s = e.textWidth, c = (i + o) * n + a, l = t ? 0 - r : 0, u = t ? l - 5 - s : r + 5; e.iconPosition = [l, c], e.textPosition = [u, c] })) } function T(e, t) { var n = e.data, r = e.selectAble, o = e.animationCurve, a = e.animationFrame, s = e.rLevel; return n.map((function (n, c) { return (0, i["default"])({ name: "line" === n.icon ? "lineIcon" : "rect", index: s, visible: e.show, hover: r, click: r, animationCurve: o, animationFrame: a, shape: A(e, c), style: L(e, c) }, "click", D(e, c, t)) })) } function A(e, t) { var n = e.data, r = e.iconWidth, i = e.iconHeight, a = (0, o["default"])(n[t].iconPosition, 2), s = a[0], c = a[1], l = i / 2; return { x: s, y: c - l, w: r, h: i } } function L(e, t) { var n = e.data, r = e.iconStyle, i = e.iconUnselectedStyle, o = n[t], a = o.status, s = o.color, c = a ? r : i; return (0, u.deepMerge)({ fill: s }, c) } function j(e, t) { var n = e.data, r = e.selectAble, i = e.animationCurve, o = e.animationFrame, a = e.rLevel; return n.map((function (n, s) { return { name: "text", index: a, visible: e.show, hover: r, animationCurve: i, animationFrame: o, hoverRect: P(e, s), shape: z(e, s), style: E(e, s), click: D(e, s, t) } })) } function z(e, t) { var n = e.data[t], r = n.textPosition, i = n.name; return { content: i, position: r } } function E(e, t) { var n = e.textStyle, r = e.textUnselectedStyle, i = e.data[t], o = i.status, a = i.align, s = o ? n : r; return (0, u.deepMerge)((0, c.deepClone)(s, !0), a) } function P(e, t) { var n = e.textStyle, r = e.textUnselectedStyle, i = e.data[t], a = i.status, s = (0, o["default"])(i.textPosition, 2), c = s[0], l = s[1], u = i.textWidth, h = a ? n : r, f = h.fontSize; return [c, l - f / 2, u, f] } function D(e, t, n) { var r = e.data[t].name; return function () { var e = n.chart, i = e.legendStatus, o = e.option, a = !i[t], s = o.series.find((function (e) { var t = e.name; return t === r })); s.show = a, i[t] = a, n.chart.setOption(o) } } }, "61fe": function (e, t, n) { var r = n("5b90"); e.exports = function (e, t, n) { n = n || document, e = { parentNode: e }; while ((e = e.parentNode) && e !== n) if (r(e, t)) return e } }, "621a": function (e, t, n) { "use strict"; var r = n("da84"), i = n("83ab"), o = n("a981"), a = n("9112"), s = n("e2cc"), c = n("d039"), l = n("19aa"), u = n("a691"), h = n("50c4"), f = n("0b25"), d = n("77a7"), p = n("e163"), v = n("d2bb"), m = n("241c").f, g = n("9bf2").f, y = n("81d5"), b = n("d44e"), x = n("69f3"), w = x.get, _ = x.set, C = "ArrayBuffer", M = "DataView", O = "prototype", k = "Wrong length", S = "Wrong index", T = r[C], A = T, L = r[M], j = L && L[O], z = Object.prototype, E = r.RangeError, P = d.pack, D = d.unpack, H = function (e) { return [255 & e] }, V = function (e) { return [255 & e, e >> 8 & 255] }, I = function (e) { return [255 & e, e >> 8 & 255, e >> 16 & 255, e >> 24 & 255] }, N = function (e) { return e[3] << 24 | e[2] << 16 | e[1] << 8 | e[0] }, R = function (e) { return P(e, 23, 4) }, F = function (e) { return P(e, 52, 8) }, Y = function (e, t) { g(e[O], t, { get: function () { return w(this)[t] } }) }, $ = function (e, t, n, r) { var i = f(n), o = w(e); if (i + t > o.byteLength) throw E(S); var a = w(o.buffer).bytes, s = i + o.byteOffset, c = a.slice(s, s + t); return r ? c : c.reverse() }, B = function (e, t, n, r, i, o) { var a = f(n), s = w(e); if (a + t > s.byteLength) throw E(S); for (var c = w(s.buffer).bytes, l = a + s.byteOffset, u = r(+i), h = 0; h < t; h++)c[l + h] = u[o ? h : t - h - 1] }; if (o) { if (!c((function () { T(1) })) || !c((function () { new T(-1) })) || c((function () { return new T, new T(1.5), new T(NaN), T.name != C }))) { A = function (e) { return l(this, A), new T(f(e)) }; for (var W, q = A[O] = T[O], U = m(T), K = 0; U.length > K;)(W = U[K++]) in A || a(A, W, T[W]); q.constructor = A } v && p(j) !== z && v(j, z); var G = new L(new A(2)), X = j.setInt8; G.setInt8(0, 2147483648), G.setInt8(1, 2147483649), !G.getInt8(0) && G.getInt8(1) || s(j, { setInt8: function (e, t) { X.call(this, e, t << 24 >> 24) }, setUint8: function (e, t) { X.call(this, e, t << 24 >> 24) } }, { unsafe: !0 }) } else A = function (e) { l(this, A, C); var t = f(e); _(this, { bytes: y.call(new Array(t), 0), byteLength: t }), i || (this.byteLength = t) }, L = function (e, t, n) { l(this, L, M), l(e, A, M); var r = w(e).byteLength, o = u(t); if (o < 0 || o > r) throw E("Wrong offset"); if (n = void 0 === n ? r - o : h(n), o + n > r) throw E(k); _(this, { buffer: e, byteLength: n, byteOffset: o }), i || (this.buffer = e, this.byteLength = n, this.byteOffset = o) }, i && (Y(A, "byteLength"), Y(L, "buffer"), Y(L, "byteLength"), Y(L, "byteOffset")), s(L[O], { getInt8: function (e) { return $(this, 1, e)[0] << 24 >> 24 }, getUint8: function (e) { return $(this, 1, e)[0] }, getInt16: function (e) { var t = $(this, 2, e, arguments.length > 1 ? arguments[1] : void 0); return (t[1] << 8 | t[0]) << 16 >> 16 }, getUint16: function (e) { var t = $(this, 2, e, arguments.length > 1 ? arguments[1] : void 0); return t[1] << 8 | t[0] }, getInt32: function (e) { return N($(this, 4, e, arguments.length > 1 ? arguments[1] : void 0)) }, getUint32: function (e) { return N($(this, 4, e, arguments.length > 1 ? arguments[1] : void 0)) >>> 0 }, getFloat32: function (e) { return D($(this, 4, e, arguments.length > 1 ? arguments[1] : void 0), 23) }, getFloat64: function (e) { return D($(this, 8, e, arguments.length > 1 ? arguments[1] : void 0), 52) }, setInt8: function (e, t) { B(this, 1, e, H, t) }, setUint8: function (e, t) { B(this, 1, e, H, t) }, setInt16: function (e, t) { B(this, 2, e, V, t, arguments.length > 2 ? arguments[2] : void 0) }, setUint16: function (e, t) { B(this, 2, e, V, t, arguments.length > 2 ? arguments[2] : void 0) }, setInt32: function (e, t) { B(this, 4, e, I, t, arguments.length > 2 ? arguments[2] : void 0) }, setUint32: function (e, t) { B(this, 4, e, I, t, arguments.length > 2 ? arguments[2] : void 0) }, setFloat32: function (e, t) { B(this, 4, e, R, t, arguments.length > 2 ? arguments[2] : void 0) }, setFloat64: function (e, t) { B(this, 8, e, F, t, arguments.length > 2 ? arguments[2] : void 0) } }); b(A, C), b(L, M), e.exports = { ArrayBuffer: A, DataView: L } }, "62e4": function (e, t) { e.exports = function (e) { return e.webpackPolyfill || (e.deprecate = function () { }, e.paths = [], e.children || (e.children = []), Object.defineProperty(e, "loaded", { enumerable: !0, get: function () { return e.l } }), Object.defineProperty(e, "id", { enumerable: !0, get: function () { return e.i } }), e.webpackPolyfill = 1), e } }, "62fd": function (e, t, n) { }, "63c4": function (e, t, n) { "use strict"; var r = n("92fa"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("18a7"), c = n("4d91"), l = { border: 0, background: "transparent", padding: 0, lineHeight: "inherit", display: "inline-block" }, u = { props: { noStyle: c["a"].bool }, methods: { onKeyDown: function (e) { var t = e.keyCode; t === s["a"].ENTER && e.preventDefault() }, onKeyUp: function (e) { var t = e.keyCode; t === s["a"].ENTER && this.$emit("click", e) }, setRef: function (e) { this.div = e }, focus: function () { this.div && this.div.focus() }, blur: function () { this.div && this.div.blur() } }, render: function () { var e = arguments[0], t = this.$props.noStyle; return e("div", i()([{ attrs: { role: "button", tabIndex: 0 } }, { directives: [{ name: "ant-ref", value: this.setRef }], on: a()({}, this.$listeners, { keydown: this.onKeyDown, keyup: this.onKeyUp }) }, { style: a()({}, t ? null : l) }]), [this.$slots["default"]]) } }; t["a"] = u }, 6428: function (e, t, n) { var r = n("b4b0"), i = 1 / 0, o = 17976931348623157e292; function a(e) { if (!e) return 0 === e ? e : 0; if (e = r(e), e === i || e === -i) { var t = e < 0 ? -1 : 1; return t * o } return e === e ? e : 0 } e.exports = a }, "642a": function (e, t, n) { var r = n("966f"), i = n("3bb4"), o = n("20ec"); function a(e) { var t = i(e); return 1 == t.length && t[0][2] ? o(t[0][0], t[0][1]) : function (n) { return n === e || r(n, e, t) } } e.exports = a }, 6438: function (e, t, n) { var r = n("03d6"), i = n("9742").concat("length", "prototype"); t.f = Object.getOwnPropertyNames || function (e) { return r(e, i) } }, "649e": function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("b727").some, o = r.aTypedArray, a = r.exportTypedArrayMethod; a("some", (function (e) { return i(o(this), e, arguments.length > 1 ? arguments[1] : void 0) })) }, 6547: function (e, t, n) { var r = n("a691"), i = n("577e"), o = n("1d80"), a = function (e) { return function (t, n) { var a, s, c = i(o(t)), l = r(n), u = c.length; return l < 0 || l >= u ? e ? "" : void 0 : (a = c.charCodeAt(l), a < 55296 || a > 56319 || l + 1 === u || (s = c.charCodeAt(l + 1)) < 56320 || s > 57343 ? e ? c.charAt(l) : a : e ? c.slice(l, l + 2) : s - 56320 + (a - 55296 << 10) + 65536) } }; e.exports = { codeAt: a(!1), charAt: a(!0) } }, 6566: function (e, t, n) { "use strict"; var r = n("9bf2").f, i = n("7c73"), o = n("e2cc"), a = n("0366"), s = n("19aa"), c = n("2266"), l = n("7dd0"), u = n("2626"), h = n("83ab"), f = n("f183").fastKey, d = n("69f3"), p = d.set, v = d.getterFor; e.exports = { getConstructor: function (e, t, n, l) { var u = e((function (e, r) { s(e, u, t), p(e, { type: t, index: i(null), first: void 0, last: void 0, size: 0 }), h || (e.size = 0), void 0 != r && c(r, e[l], { that: e, AS_ENTRIES: n }) })), d = v(t), m = function (e, t, n) { var r, i, o = d(e), a = g(e, t); return a ? a.value = n : (o.last = a = { index: i = f(t, !0), key: t, value: n, previous: r = o.last, next: void 0, removed: !1 }, o.first || (o.first = a), r && (r.next = a), h ? o.size++ : e.size++, "F" !== i && (o.index[i] = a)), e }, g = function (e, t) { var n, r = d(e), i = f(t); if ("F" !== i) return r.index[i]; for (n = r.first; n; n = n.next)if (n.key == t) return n }; return o(u.prototype, { clear: function () { var e = this, t = d(e), n = t.index, r = t.first; while (r) r.removed = !0, r.previous && (r.previous = r.previous.next = void 0), delete n[r.index], r = r.next; t.first = t.last = void 0, h ? t.size = 0 : e.size = 0 }, delete: function (e) { var t = this, n = d(t), r = g(t, e); if (r) { var i = r.next, o = r.previous; delete n.index[r.index], r.removed = !0, o && (o.next = i), i && (i.previous = o), n.first == r && (n.first = i), n.last == r && (n.last = o), h ? n.size-- : t.size-- } return !!r }, forEach: function (e) { var t, n = d(this), r = a(e, arguments.length > 1 ? arguments[1] : void 0, 3); while (t = t ? t.next : n.first) { r(t.value, t.key, this); while (t && t.removed) t = t.previous } }, has: function (e) { return !!g(this, e) } }), o(u.prototype, n ? { get: function (e) { var t = g(this, e); return t && t.value }, set: function (e, t) { return m(this, 0 === e ? 0 : e, t) } } : { add: function (e) { return m(this, e = 0 === e ? 0 : e, e) } }), h && r(u.prototype, "size", { get: function () { return d(this).size } }), u }, setStrong: function (e, t, n) { var r = t + " Iterator", i = v(t), o = v(r); l(e, t, (function (e, t) { p(this, { type: r, target: e, state: i(e), kind: t, last: void 0 }) }), (function () { var e = o(this), t = e.kind, n = e.last; while (n && n.removed) n = n.previous; return e.target && (e.last = n = n ? n.next : e.state.first) ? "keys" == t ? { value: n.key, done: !1 } : "values" == t ? { value: n.value, done: !1 } : { value: [n.key, n.value], done: !1 } : (e.target = void 0, { value: void 0, done: !0 }) }), n ? "entries" : "values", !n, !0), u(t) } } }, "656b": function (e, t, n) { var r = n("e2e4"), i = n("f4d6"); function o(e, t) { t = r(t, e); var n = 0, o = t.length; while (null != e && n < o) e = e[i(t[n++])]; return n && n == o ? e : void 0 } e.exports = o }, "658f": function (e, t, n) { n("6858"); for (var r = n("ef08"), i = n("051b"), o = n("8a0d"), a = n("cc15")("toStringTag"), s = "CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","), c = 0; c < s.length; c++) { var l = s[c], u = r[l], h = u && u.prototype; h && !h[a] && i(h, a, l), o[l] = o.Array } }, "65f0": function (e, t, n) { var r = n("0b42"); e.exports = function (e, t) { return new (r(e))(0 === t ? 0 : t) } }, 6604: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t["default"] = { today: "浠婂ぉ", now: "姝ゅ埢", backToToday: "杩斿洖浠婂ぉ", ok: "纭畾", timeSelect: "閫夋嫨鏃堕棿", dateSelect: "閫夋嫨鏃ユ湡", weekSelect: "閫夋嫨鍛�", clear: "娓呴櫎", month: "鏈�", year: "骞�", previousMonth: "涓婁釜鏈� (缈婚〉涓婇敭)", nextMonth: "涓嬩釜鏈� (缈婚〉涓嬮敭)", monthSelect: "閫夋嫨鏈堜唤", yearSelect: "閫夋嫨骞翠唤", decadeSelect: "閫夋嫨骞翠唬", yearFormat: "YYYY骞�", dayFormat: "D鏃�", dateFormat: "YYYY骞碝鏈圖鏃�", dateTimeFormat: "YYYY骞碝鏈圖鏃� HH鏃秏m鍒唖s绉�", previousYear: "涓婁竴骞� (Control閿姞宸︽柟鍚戦敭)", nextYear: "涓嬩竴骞� (Control閿姞鍙虫柟鍚戦敭)", previousDecade: "涓婁竴骞翠唬", nextDecade: "涓嬩竴骞翠唬", previousCentury: "涓婁竴涓栫邯", nextCentury: "涓嬩竴涓栫邯" } }, 6613: function (e, t, n) { n("fb6a"), n("d3b7"), n("b0c0"), n("a630"), n("3ca3"); var r = n("5a43"); function i(e, t) { if (e) { if ("string" === typeof e) return r(e, t); var n = Object.prototype.toString.call(e).slice(8, -1); return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? r(e, t) : void 0 } } e.exports = i, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, 6634: function (e, t, n) { "use strict"; var r = n("6042"), i = n.n(r), o = n("1098"), a = n.n(o), s = n("6a21"), c = n("ae55"), l = n("9cba"), u = n("4d91"), h = n("daa3"), f = { child: u["a"].any, bordered: u["a"].bool, colon: u["a"].bool, type: u["a"].oneOf(["label", "content"]), layout: u["a"].oneOf(["horizontal", "vertical"]) }, d = { functional: !0, props: f, render: function (e, t) { var n, r = t.props, o = r.child, a = r.bordered, s = r.colon, c = r.type, l = r.layout, u = Object(h["l"])(o), f = u.prefixCls, d = u.span, p = void 0 === d ? 1 : d, v = t.data.key, m = Object(h["g"])(o, "label"), g = Object(h["p"])(o), y = { attrs: {}, class: [f + "-item-label", (n = {}, i()(n, f + "-item-colon", s), i()(n, f + "-item-no-label", !m), n)], key: v + "-label" }; return "vertical" === l && (y.attrs.colSpan = 2 * p - 1), a ? "label" === c ? e("th", y, [m]) : e("td", { class: f + "-item-content", key: v + "-content", attrs: { colSpan: 2 * p - 1 } }, [g["default"]]) : e("td", { attrs: { colSpan: p }, class: f + "-item" }, "vertical" === l ? "content" === c ? [e("span", { class: f + "-item-content", key: v + "-content" }, [g["default"]])] : [e("span", { class: [f + "-item-label", i()({}, f + "-item-colon", s)], key: v + "-label" }, [m])] : [e("span", y, [m]), e("span", { class: f + "-item-content", key: v + "-content" }, [g["default"]])]) } }, p = d, v = n("b488"), m = n("db14"), g = n("7b05"), y = { prefixCls: u["a"].string, label: u["a"].any, span: u["a"].number }; function b(e) { var t = e; return void 0 === e ? t = [] : Array.isArray(e) || (t = [e]), t } var x = { name: "ADescriptionsItem", props: Object(h["t"])(y, { span: 1 }) }, w = { prefixCls: u["a"].string, bordered: u["a"].bool, size: u["a"].oneOf(["default", "middle", "small"]).def("default"), title: u["a"].any, column: u["a"].oneOfType([u["a"].number, u["a"].object]), layout: u["a"].oneOf(["horizontal", "vertical"]), colon: u["a"].bool }, _ = function (e, t) { var n = [], r = null, i = void 0, o = b(e); return o.forEach((function (e, a) { var c = Object(h["l"])(e), l = e; r || (i = t, r = [], n.push(r)); var u = a === o.length - 1, f = !0; u && (f = !c.span || c.span === i, l = Object(g["a"])(l, { props: { span: i } })); var d = c.span, p = void 0 === d ? 1 : d; r.push(l), i -= p, i <= 0 && (r = null, Object(s["a"])(0 === i && f, "Descriptions", "Sum of column `span` in a line exceeds `column` of Descriptions.")) })), n }, C = { xxl: 3, xl: 3, lg: 3, md: 3, sm: 2, xs: 1 }, M = { name: "ADescriptions", Item: x, mixins: [v["a"]], inject: { configProvider: { default: function () { return l["a"] } } }, props: Object(h["t"])(w, { column: C }), data: function () { return { screens: {}, token: void 0 } }, methods: { getColumn: function () { var e = this.$props.column; if ("object" === ("undefined" === typeof e ? "undefined" : a()(e))) for (var t = 0; t < c["b"].length; t++) { var n = c["b"][t]; if (this.screens[n] && void 0 !== e[n]) return e[n] || C[n] } return "number" === typeof e ? e : 3 }, renderRow: function (e, t, n, r, i, o) { var a = n.prefixCls, s = this.$createElement, c = function (e, t, n) { return s(p, { attrs: { child: e, bordered: r, colon: o, type: t, layout: i }, key: t + "-" + (e.key || n) }) }, l = [], u = []; return b(e).forEach((function (e, t) { l.push(c(e, "label", t)), "vertical" === i ? u.push(c(e, "content", t)) : r && l.push(c(e, "content", t)) })), "vertical" === i ? [s("tr", { class: a + "-row", key: "label-" + t }, [l]), s("tr", { class: a + "-row", key: "content-" + t }, [u])] : s("tr", { class: a + "-row", key: t }, [l]) } }, mounted: function () { var e = this, t = this.$props.column; this.token = c["a"].subscribe((function (n) { "object" === ("undefined" === typeof t ? "undefined" : a()(t)) && e.setState({ screens: n }) })) }, beforeDestroy: function () { c["a"].unsubscribe(this.token) }, render: function () { var e, t = this, n = arguments[0], r = this.$props, o = r.prefixCls, a = r.size, s = r.bordered, c = void 0 !== s && s, l = r.layout, u = void 0 === l ? "horizontal" : l, f = r.colon, d = void 0 === f || f, p = Object(h["g"])(this, "title") || null, v = this.configProvider.getPrefixCls, m = v("descriptions", o), y = this.getColumn(), x = this.$slots["default"], w = b(x).map((function (e) { return Object(h["w"])(e) ? Object(g["a"])(e, { props: { prefixCls: m } }) : null })).filter((function (e) { return e })), C = _(w, y); return n("div", { class: [m, (e = {}, i()(e, m + "-" + a, "default" !== a), i()(e, m + "-bordered", !!c), e)] }, [p && n("div", { class: m + "-title" }, [p]), n("div", { class: m + "-view" }, [n("table", [n("tbody", [C.map((function (e, n) { return t.renderRow(e, n, { prefixCls: m }, c, u, d) }))])])])]) }, install: function (e) { e.use(m["a"]), e.component(M.name, M), e.component(M.Item.name, M.Item) } }; t["a"] = M }, "664f": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("857a"), o = n("af03"); r({ target: "String", proto: !0, forced: o("sup") }, { sup: function () { return i(this, "sup", "", "") } }) }, "66cb": function (e, t, n) { var r; (function (i) { var o = /^\s+/, a = /\s+$/, s = 0, c = i.round, l = i.min, u = i.max, h = i.random; function f(e, t) { if (e = e || "", t = t || {}, e instanceof f) return e; if (!(this instanceof f)) return new f(e, t); var n = d(e); this._originalInput = e, this._r = n.r, this._g = n.g, this._b = n.b, this._a = n.a, this._roundA = c(100 * this._a) / 100, this._format = t.format || n.format, this._gradientType = t.gradientType, this._r < 1 && (this._r = c(this._r)), this._g < 1 && (this._g = c(this._g)), this._b < 1 && (this._b = c(this._b)), this._ok = n.ok, this._tc_id = s++ } function d(e) { var t = { r: 0, g: 0, b: 0 }, n = 1, r = null, i = null, o = null, a = !1, s = !1; return "string" == typeof e && (e = X(e)), "object" == typeof e && (G(e.r) && G(e.g) && G(e.b) ? (t = p(e.r, e.g, e.b), a = !0, s = "%" === String(e.r).substr(-1) ? "prgb" : "rgb") : G(e.h) && G(e.s) && G(e.v) ? (r = W(e.s), i = W(e.v), t = y(e.h, r, i), a = !0, s = "hsv") : G(e.h) && G(e.s) && G(e.l) && (r = W(e.s), o = W(e.l), t = m(e.h, r, o), a = !0, s = "hsl"), e.hasOwnProperty("a") && (n = e.a)), n = I(n), { ok: a, format: e.format || s, r: l(255, u(t.r, 0)), g: l(255, u(t.g, 0)), b: l(255, u(t.b, 0)), a: n } } function p(e, t, n) { return { r: 255 * N(e, 255), g: 255 * N(t, 255), b: 255 * N(n, 255) } } function v(e, t, n) { e = N(e, 255), t = N(t, 255), n = N(n, 255); var r, i, o = u(e, t, n), a = l(e, t, n), s = (o + a) / 2; if (o == a) r = i = 0; else { var c = o - a; switch (i = s > .5 ? c / (2 - o - a) : c / (o + a), o) { case e: r = (t - n) / c + (t < n ? 6 : 0); break; case t: r = (n - e) / c + 2; break; case n: r = (e - t) / c + 4; break }r /= 6 } return { h: r, s: i, l: s } } function m(e, t, n) { var r, i, o; function a(e, t, n) { return n < 0 && (n += 1), n > 1 && (n -= 1), n < 1 / 6 ? e + 6 * (t - e) * n : n < .5 ? t : n < 2 / 3 ? e + (t - e) * (2 / 3 - n) * 6 : e } if (e = N(e, 360), t = N(t, 100), n = N(n, 100), 0 === t) r = i = o = n; else { var s = n < .5 ? n * (1 + t) : n + t - n * t, c = 2 * n - s; r = a(c, s, e + 1 / 3), i = a(c, s, e), o = a(c, s, e - 1 / 3) } return { r: 255 * r, g: 255 * i, b: 255 * o } } function g(e, t, n) { e = N(e, 255), t = N(t, 255), n = N(n, 255); var r, i, o = u(e, t, n), a = l(e, t, n), s = o, c = o - a; if (i = 0 === o ? 0 : c / o, o == a) r = 0; else { switch (o) { case e: r = (t - n) / c + (t < n ? 6 : 0); break; case t: r = (n - e) / c + 2; break; case n: r = (e - t) / c + 4; break }r /= 6 } return { h: r, s: i, v: s } } function y(e, t, n) { e = 6 * N(e, 360), t = N(t, 100), n = N(n, 100); var r = i.floor(e), o = e - r, a = n * (1 - t), s = n * (1 - o * t), c = n * (1 - (1 - o) * t), l = r % 6, u = [n, s, a, a, c, n][l], h = [c, n, n, s, a, a][l], f = [a, a, c, n, n, s][l]; return { r: 255 * u, g: 255 * h, b: 255 * f } } function b(e, t, n, r) { var i = [B(c(e).toString(16)), B(c(t).toString(16)), B(c(n).toString(16))]; return r && i[0].charAt(0) == i[0].charAt(1) && i[1].charAt(0) == i[1].charAt(1) && i[2].charAt(0) == i[2].charAt(1) ? i[0].charAt(0) + i[1].charAt(0) + i[2].charAt(0) : i.join("") } function x(e, t, n, r, i) { var o = [B(c(e).toString(16)), B(c(t).toString(16)), B(c(n).toString(16)), B(q(r))]; return i && o[0].charAt(0) == o[0].charAt(1) && o[1].charAt(0) == o[1].charAt(1) && o[2].charAt(0) == o[2].charAt(1) && o[3].charAt(0) == o[3].charAt(1) ? o[0].charAt(0) + o[1].charAt(0) + o[2].charAt(0) + o[3].charAt(0) : o.join("") } function w(e, t, n, r) { var i = [B(q(r)), B(c(e).toString(16)), B(c(t).toString(16)), B(c(n).toString(16))]; return i.join("") } function _(e, t) { t = 0 === t ? 0 : t || 10; var n = f(e).toHsl(); return n.s -= t / 100, n.s = R(n.s), f(n) } function C(e, t) { t = 0 === t ? 0 : t || 10; var n = f(e).toHsl(); return n.s += t / 100, n.s = R(n.s), f(n) } function M(e) { return f(e).desaturate(100) } function O(e, t) { t = 0 === t ? 0 : t || 10; var n = f(e).toHsl(); return n.l += t / 100, n.l = R(n.l), f(n) } function k(e, t) { t = 0 === t ? 0 : t || 10; var n = f(e).toRgb(); return n.r = u(0, l(255, n.r - c(-t / 100 * 255))), n.g = u(0, l(255, n.g - c(-t / 100 * 255))), n.b = u(0, l(255, n.b - c(-t / 100 * 255))), f(n) } function S(e, t) { t = 0 === t ? 0 : t || 10; var n = f(e).toHsl(); return n.l -= t / 100, n.l = R(n.l), f(n) } function T(e, t) { var n = f(e).toHsl(), r = (n.h + t) % 360; return n.h = r < 0 ? 360 + r : r, f(n) } function A(e) { var t = f(e).toHsl(); return t.h = (t.h + 180) % 360, f(t) } function L(e) { var t = f(e).toHsl(), n = t.h; return [f(e), f({ h: (n + 120) % 360, s: t.s, l: t.l }), f({ h: (n + 240) % 360, s: t.s, l: t.l })] } function j(e) { var t = f(e).toHsl(), n = t.h; return [f(e), f({ h: (n + 90) % 360, s: t.s, l: t.l }), f({ h: (n + 180) % 360, s: t.s, l: t.l }), f({ h: (n + 270) % 360, s: t.s, l: t.l })] } function z(e) { var t = f(e).toHsl(), n = t.h; return [f(e), f({ h: (n + 72) % 360, s: t.s, l: t.l }), f({ h: (n + 216) % 360, s: t.s, l: t.l })] } function E(e, t, n) { t = t || 6, n = n || 30; var r = f(e).toHsl(), i = 360 / n, o = [f(e)]; for (r.h = (r.h - (i * t >> 1) + 720) % 360; --t;)r.h = (r.h + i) % 360, o.push(f(r)); return o } function P(e, t) { t = t || 6; var n = f(e).toHsv(), r = n.h, i = n.s, o = n.v, a = [], s = 1 / t; while (t--) a.push(f({ h: r, s: i, v: o })), o = (o + s) % 1; return a } f.prototype = { isDark: function () { return this.getBrightness() < 128 }, isLight: function () { return !this.isDark() }, isValid: function () { return this._ok }, getOriginalInput: function () { return this._originalInput }, getFormat: function () { return this._format }, getAlpha: function () { return this._a }, getBrightness: function () { var e = this.toRgb(); return (299 * e.r + 587 * e.g + 114 * e.b) / 1e3 }, getLuminance: function () { var e, t, n, r, o, a, s = this.toRgb(); return e = s.r / 255, t = s.g / 255, n = s.b / 255, r = e <= .03928 ? e / 12.92 : i.pow((e + .055) / 1.055, 2.4), o = t <= .03928 ? t / 12.92 : i.pow((t + .055) / 1.055, 2.4), a = n <= .03928 ? n / 12.92 : i.pow((n + .055) / 1.055, 2.4), .2126 * r + .7152 * o + .0722 * a }, setAlpha: function (e) { return this._a = I(e), this._roundA = c(100 * this._a) / 100, this }, toHsv: function () { var e = g(this._r, this._g, this._b); return { h: 360 * e.h, s: e.s, v: e.v, a: this._a } }, toHsvString: function () { var e = g(this._r, this._g, this._b), t = c(360 * e.h), n = c(100 * e.s), r = c(100 * e.v); return 1 == this._a ? "hsv(" + t + ", " + n + "%, " + r + "%)" : "hsva(" + t + ", " + n + "%, " + r + "%, " + this._roundA + ")" }, toHsl: function () { var e = v(this._r, this._g, this._b); return { h: 360 * e.h, s: e.s, l: e.l, a: this._a } }, toHslString: function () { var e = v(this._r, this._g, this._b), t = c(360 * e.h), n = c(100 * e.s), r = c(100 * e.l); return 1 == this._a ? "hsl(" + t + ", " + n + "%, " + r + "%)" : "hsla(" + t + ", " + n + "%, " + r + "%, " + this._roundA + ")" }, toHex: function (e) { return b(this._r, this._g, this._b, e) }, toHexString: function (e) { return "#" + this.toHex(e) }, toHex8: function (e) { return x(this._r, this._g, this._b, this._a, e) }, toHex8String: function (e) { return "#" + this.toHex8(e) }, toRgb: function () { return { r: c(this._r), g: c(this._g), b: c(this._b), a: this._a } }, toRgbString: function () { return 1 == this._a ? "rgb(" + c(this._r) + ", " + c(this._g) + ", " + c(this._b) + ")" : "rgba(" + c(this._r) + ", " + c(this._g) + ", " + c(this._b) + ", " + this._roundA + ")" }, toPercentageRgb: function () { return { r: c(100 * N(this._r, 255)) + "%", g: c(100 * N(this._g, 255)) + "%", b: c(100 * N(this._b, 255)) + "%", a: this._a } }, toPercentageRgbString: function () { return 1 == this._a ? "rgb(" + c(100 * N(this._r, 255)) + "%, " + c(100 * N(this._g, 255)) + "%, " + c(100 * N(this._b, 255)) + "%)" : "rgba(" + c(100 * N(this._r, 255)) + "%, " + c(100 * N(this._g, 255)) + "%, " + c(100 * N(this._b, 255)) + "%, " + this._roundA + ")" }, toName: function () { return 0 === this._a ? "transparent" : !(this._a < 1) && (H[b(this._r, this._g, this._b, !0)] || !1) }, toFilter: function (e) { var t = "#" + w(this._r, this._g, this._b, this._a), n = t, r = this._gradientType ? "GradientType = 1, " : ""; if (e) { var i = f(e); n = "#" + w(i._r, i._g, i._b, i._a) } return "progid:DXImageTransform.Microsoft.gradient(" + r + "startColorstr=" + t + ",endColorstr=" + n + ")" }, toString: function (e) { var t = !!e; e = e || this._format; var n = !1, r = this._a < 1 && this._a >= 0, i = !t && r && ("hex" === e || "hex6" === e || "hex3" === e || "hex4" === e || "hex8" === e || "name" === e); return i ? "name" === e && 0 === this._a ? this.toName() : this.toRgbString() : ("rgb" === e && (n = this.toRgbString()), "prgb" === e && (n = this.toPercentageRgbString()), "hex" !== e && "hex6" !== e || (n = this.toHexString()), "hex3" === e && (n = this.toHexString(!0)), "hex4" === e && (n = this.toHex8String(!0)), "hex8" === e && (n = this.toHex8String()), "name" === e && (n = this.toName()), "hsl" === e && (n = this.toHslString()), "hsv" === e && (n = this.toHsvString()), n || this.toHexString()) }, clone: function () { return f(this.toString()) }, _applyModification: function (e, t) { var n = e.apply(null, [this].concat([].slice.call(t))); return this._r = n._r, this._g = n._g, this._b = n._b, this.setAlpha(n._a), this }, lighten: function () { return this._applyModification(O, arguments) }, brighten: function () { return this._applyModification(k, arguments) }, darken: function () { return this._applyModification(S, arguments) }, desaturate: function () { return this._applyModification(_, arguments) }, saturate: function () { return this._applyModification(C, arguments) }, greyscale: function () { return this._applyModification(M, arguments) }, spin: function () { return this._applyModification(T, arguments) }, _applyCombination: function (e, t) { return e.apply(null, [this].concat([].slice.call(t))) }, analogous: function () { return this._applyCombination(E, arguments) }, complement: function () { return this._applyCombination(A, arguments) }, monochromatic: function () { return this._applyCombination(P, arguments) }, splitcomplement: function () { return this._applyCombination(z, arguments) }, triad: function () { return this._applyCombination(L, arguments) }, tetrad: function () { return this._applyCombination(j, arguments) } }, f.fromRatio = function (e, t) { if ("object" == typeof e) { var n = {}; for (var r in e) e.hasOwnProperty(r) && (n[r] = "a" === r ? e[r] : W(e[r])); e = n } return f(e, t) }, f.equals = function (e, t) { return !(!e || !t) && f(e).toRgbString() == f(t).toRgbString() }, f.random = function () { return f.fromRatio({ r: h(), g: h(), b: h() }) }, f.mix = function (e, t, n) { n = 0 === n ? 0 : n || 50; var r = f(e).toRgb(), i = f(t).toRgb(), o = n / 100, a = { r: (i.r - r.r) * o + r.r, g: (i.g - r.g) * o + r.g, b: (i.b - r.b) * o + r.b, a: (i.a - r.a) * o + r.a }; return f(a) }, f.readability = function (e, t) { var n = f(e), r = f(t); return (i.max(n.getLuminance(), r.getLuminance()) + .05) / (i.min(n.getLuminance(), r.getLuminance()) + .05) }, f.isReadable = function (e, t, n) { var r, i, o = f.readability(e, t); switch (i = !1, r = J(n), r.level + r.size) { case "AAsmall": case "AAAlarge": i = o >= 4.5; break; case "AAlarge": i = o >= 3; break; case "AAAsmall": i = o >= 7; break }return i }, f.mostReadable = function (e, t, n) { var r, i, o, a, s = null, c = 0; n = n || {}, i = n.includeFallbackColors, o = n.level, a = n.size; for (var l = 0; l < t.length; l++)r = f.readability(e, t[l]), r > c && (c = r, s = f(t[l])); return f.isReadable(e, s, { level: o, size: a }) || !i ? s : (n.includeFallbackColors = !1, f.mostReadable(e, ["#fff", "#000"], n)) }; var D = f.names = { aliceblue: "f0f8ff", antiquewhite: "faebd7", aqua: "0ff", aquamarine: "7fffd4", azure: "f0ffff", beige: "f5f5dc", bisque: "ffe4c4", black: "000", blanchedalmond: "ffebcd", blue: "00f", blueviolet: "8a2be2", brown: "a52a2a", burlywood: "deb887", burntsienna: "ea7e5d", cadetblue: "5f9ea0", chartreuse: "7fff00", chocolate: "d2691e", coral: "ff7f50", cornflowerblue: "6495ed", cornsilk: "fff8dc", crimson: "dc143c", cyan: "0ff", darkblue: "00008b", darkcyan: "008b8b", darkgoldenrod: "b8860b", darkgray: "a9a9a9", darkgreen: "006400", darkgrey: "a9a9a9", darkkhaki: "bdb76b", darkmagenta: "8b008b", darkolivegreen: "556b2f", darkorange: "ff8c00", darkorchid: "9932cc", darkred: "8b0000", darksalmon: "e9967a", darkseagreen: "8fbc8f", darkslateblue: "483d8b", darkslategray: "2f4f4f", darkslategrey: "2f4f4f", darkturquoise: "00ced1", darkviolet: "9400d3", deeppink: "ff1493", deepskyblue: "00bfff", dimgray: "696969", dimgrey: "696969", dodgerblue: "1e90ff", firebrick: "b22222", floralwhite: "fffaf0", forestgreen: "228b22", fuchsia: "f0f", gainsboro: "dcdcdc", ghostwhite: "f8f8ff", gold: "ffd700", goldenrod: "daa520", gray: "808080", green: "008000", greenyellow: "adff2f", grey: "808080", honeydew: "f0fff0", hotpink: "ff69b4", indianred: "cd5c5c", indigo: "4b0082", ivory: "fffff0", khaki: "f0e68c", lavender: "e6e6fa", lavenderblush: "fff0f5", lawngreen: "7cfc00", lemonchiffon: "fffacd", lightblue: "add8e6", lightcoral: "f08080", lightcyan: "e0ffff", lightgoldenrodyellow: "fafad2", lightgray: "d3d3d3", lightgreen: "90ee90", lightgrey: "d3d3d3", lightpink: "ffb6c1", lightsalmon: "ffa07a", lightseagreen: "20b2aa", lightskyblue: "87cefa", lightslategray: "789", lightslategrey: "789", lightsteelblue: "b0c4de", lightyellow: "ffffe0", lime: "0f0", limegreen: "32cd32", linen: "faf0e6", magenta: "f0f", maroon: "800000", mediumaquamarine: "66cdaa", mediumblue: "0000cd", mediumorchid: "ba55d3", mediumpurple: "9370db", mediumseagreen: "3cb371", mediumslateblue: "7b68ee", mediumspringgreen: "00fa9a", mediumturquoise: "48d1cc", mediumvioletred: "c71585", midnightblue: "191970", mintcream: "f5fffa", mistyrose: "ffe4e1", moccasin: "ffe4b5", navajowhite: "ffdead", navy: "000080", oldlace: "fdf5e6", olive: "808000", olivedrab: "6b8e23", orange: "ffa500", orangered: "ff4500", orchid: "da70d6", palegoldenrod: "eee8aa", palegreen: "98fb98", paleturquoise: "afeeee", palevioletred: "db7093", papayawhip: "ffefd5", peachpuff: "ffdab9", peru: "cd853f", pink: "ffc0cb", plum: "dda0dd", powderblue: "b0e0e6", purple: "800080", rebeccapurple: "663399", red: "f00", rosybrown: "bc8f8f", royalblue: "4169e1", saddlebrown: "8b4513", salmon: "fa8072", sandybrown: "f4a460", seagreen: "2e8b57", seashell: "fff5ee", sienna: "a0522d", silver: "c0c0c0", skyblue: "87ceeb", slateblue: "6a5acd", slategray: "708090", slategrey: "708090", snow: "fffafa", springgreen: "00ff7f", steelblue: "4682b4", tan: "d2b48c", teal: "008080", thistle: "d8bfd8", tomato: "ff6347", turquoise: "40e0d0", violet: "ee82ee", wheat: "f5deb3", white: "fff", whitesmoke: "f5f5f5", yellow: "ff0", yellowgreen: "9acd32" }, H = f.hexNames = V(D); function V(e) { var t = {}; for (var n in e) e.hasOwnProperty(n) && (t[e[n]] = n); return t } function I(e) { return e = parseFloat(e), (isNaN(e) || e < 0 || e > 1) && (e = 1), e } function N(e, t) { Y(e) && (e = "100%"); var n = $(e); return e = l(t, u(0, parseFloat(e))), n && (e = parseInt(e * t, 10) / 100), i.abs(e - t) < 1e-6 ? 1 : e % t / parseFloat(t) } function R(e) { return l(1, u(0, e)) } function F(e) { return parseInt(e, 16) } function Y(e) { return "string" == typeof e && -1 != e.indexOf(".") && 1 === parseFloat(e) } function $(e) { return "string" === typeof e && -1 != e.indexOf("%") } function B(e) { return 1 == e.length ? "0" + e : "" + e } function W(e) { return e <= 1 && (e = 100 * e + "%"), e } function q(e) { return i.round(255 * parseFloat(e)).toString(16) } function U(e) { return F(e) / 255 } var K = function () { var e = "[-\\+]?\\d+%?", t = "[-\\+]?\\d*\\.\\d+%?", n = "(?:" + t + ")|(?:" + e + ")", r = "[\\s|\\(]+(" + n + ")[,|\\s]+(" + n + ")[,|\\s]+(" + n + ")\\s*\\)?", i = "[\\s|\\(]+(" + n + ")[,|\\s]+(" + n + ")[,|\\s]+(" + n + ")[,|\\s]+(" + n + ")\\s*\\)?"; return { CSS_UNIT: new RegExp(n), rgb: new RegExp("rgb" + r), rgba: new RegExp("rgba" + i), hsl: new RegExp("hsl" + r), hsla: new RegExp("hsla" + i), hsv: new RegExp("hsv" + r), hsva: new RegExp("hsva" + i), hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ } }(); function G(e) { return !!K.CSS_UNIT.exec(e) } function X(e) { e = e.replace(o, "").replace(a, "").toLowerCase(); var t, n = !1; if (D[e]) e = D[e], n = !0; else if ("transparent" == e) return { r: 0, g: 0, b: 0, a: 0, format: "name" }; return (t = K.rgb.exec(e)) ? { r: t[1], g: t[2], b: t[3] } : (t = K.rgba.exec(e)) ? { r: t[1], g: t[2], b: t[3], a: t[4] } : (t = K.hsl.exec(e)) ? { h: t[1], s: t[2], l: t[3] } : (t = K.hsla.exec(e)) ? { h: t[1], s: t[2], l: t[3], a: t[4] } : (t = K.hsv.exec(e)) ? { h: t[1], s: t[2], v: t[3] } : (t = K.hsva.exec(e)) ? { h: t[1], s: t[2], v: t[3], a: t[4] } : (t = K.hex8.exec(e)) ? { r: F(t[1]), g: F(t[2]), b: F(t[3]), a: U(t[4]), format: n ? "name" : "hex8" } : (t = K.hex6.exec(e)) ? { r: F(t[1]), g: F(t[2]), b: F(t[3]), format: n ? "name" : "hex" } : (t = K.hex4.exec(e)) ? { r: F(t[1] + "" + t[1]), g: F(t[2] + "" + t[2]), b: F(t[3] + "" + t[3]), a: U(t[4] + "" + t[4]), format: n ? "name" : "hex8" } : !!(t = K.hex3.exec(e)) && { r: F(t[1] + "" + t[1]), g: F(t[2] + "" + t[2]), b: F(t[3] + "" + t[3]), format: n ? "name" : "hex" } } function J(e) { var t, n; return e = e || { level: "AA", size: "small" }, t = (e.level || "AA").toUpperCase(), n = (e.size || "small").toLowerCase(), "AA" !== t && "AAA" !== t && (t = "AA"), "small" !== n && "large" !== n && (n = "small"), { level: t, size: n } } e.exports ? e.exports = f : (r = function () { return f }.call(t, n, t, e), void 0 === r || (e.exports = r)) })(Math) }, 6747: function (e, t) { var n = Array.isArray; e.exports = n }, "677a": function (e, t, n) { "use strict"; (function (e) { n.d(t, "a", (function () { return o })); var r = n("3ccc"), i = n("7ed1"), o = function () { function t() { } return t.prototype.writeHandshakeRequest = function (e) { return r["a"].write(JSON.stringify(e)) }, t.prototype.parseHandshakeResponse = function (t) { var n, o, a; if (Object(i["i"])(t) || "undefined" !== typeof e && t instanceof e) { var s = new Uint8Array(t), c = s.indexOf(r["a"].RecordSeparatorCode); if (-1 === c) throw new Error("Message is incomplete."); var l = c + 1; o = String.fromCharCode.apply(null, s.slice(0, l)), a = s.byteLength > l ? s.slice(l).buffer : null } else { var u = t; c = u.indexOf(r["a"].RecordSeparator); if (-1 === c) throw new Error("Message is incomplete."); l = c + 1; o = u.substring(0, l), a = u.length > l ? u.substring(l) : null } var h = r["a"].parse(o), f = JSON.parse(h[0]); if (f.type) throw new Error("Expected a handshake response from the server."); return n = f, [a, n] }, t }() }).call(this, n("b639").Buffer) }, "677e": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n("f6c0"), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } t["default"] = i["default"] }, "67ca": function (e, t, n) { var r = n("cb5a"); function i(e, t) { var n = this.__data__, i = r(n, e); return i < 0 ? (++this.size, n.push([e, t])) : n[i][1] = t, this } e.exports = i }, "681b": function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("f933"), a = n("f54f"), s = n("4d91"), c = n("daa3"), l = n("9cba"), u = n("db14"), h = Object(a["a"])(), f = { name: "APopover", props: i()({}, h, { prefixCls: s["a"].string, transitionName: s["a"].string.def("zoom-big"), content: s["a"].any, title: s["a"].any }), model: { prop: "visible", event: "visibleChange" }, inject: { configProvider: { default: function () { return l["a"] } } }, methods: { getPopupDomNode: function () { return this.$refs.tooltip.getPopupDomNode() } }, render: function () { var e = arguments[0], t = this.title, n = this.prefixCls, r = this.$slots, a = this.configProvider.getPrefixCls, s = a("popover", n), l = Object(c["l"])(this); delete l.title, delete l.content; var u = { props: i()({}, l, { prefixCls: s }), ref: "tooltip", on: Object(c["k"])(this) }; return e(o["a"], u, [e("template", { slot: "title" }, [e("div", [(t || r.title) && e("div", { class: s + "-title" }, [Object(c["g"])(this, "title")]), e("div", { class: s + "-inner-content" }, [Object(c["g"])(this, "content")])])]), this.$slots["default"]]) }, install: function (e) { e.use(u["a"]), e.component(f.name, f) } }; t["a"] = f }, 6858: function (e, t, n) { "use strict"; var r = n("2f9a"), i = n("ea34"), o = n("8a0d"), a = n("6ca1"); e.exports = n("393a")(Array, "Array", (function (e, t) { this._t = a(e), this._i = 0, this._k = t }), (function () { var e = this._t, t = this._k, n = this._i++; return !e || n >= e.length ? (this._t = void 0, i(1)) : i(0, "keys" == t ? n : "values" == t ? e[n] : [n, e[n]]) }), "values"), o.Arguments = o.Array, r("keys"), r("values"), r("entries") }, "68c7": function (e, t, n) { "use strict"; n("b2a3"), n("44d29"), n("2ef0f") }, "693d": function (e, t, n) { "use strict"; var r = n("ef08"), i = n("9c0e"), o = n("0bad"), a = n("512c"), s = n("ba01"), c = n("e34a").KEY, l = n("4b8b"), u = n("b367"), h = n("92f0"), f = n("8b1a"), d = n("cc15"), p = n("fcd4"), v = n("e198"), m = n("0ae2"), g = n("4ebc"), y = n("77e9"), b = n("7a41"), x = n("0983"), w = n("6ca1"), _ = n("3397"), C = n("10db"), M = n("6f4f"), O = n("1836"), k = n("4d20"), S = n("fed5"), T = n("1a14"), A = n("9876"), L = k.f, j = T.f, z = O.f, E = r.Symbol, P = r.JSON, D = P && P.stringify, H = "prototype", V = d("_hidden"), I = d("toPrimitive"), N = {}.propertyIsEnumerable, R = u("symbol-registry"), F = u("symbols"), Y = u("op-symbols"), $ = Object[H], B = "function" == typeof E && !!S.f, W = r.QObject, q = !W || !W[H] || !W[H].findChild, U = o && l((function () { return 7 != M(j({}, "a", { get: function () { return j(this, "a", { value: 7 }).a } })).a })) ? function (e, t, n) { var r = L($, t); r && delete $[t], j(e, t, n), r && e !== $ && j($, t, r) } : j, K = function (e) { var t = F[e] = M(E[H]); return t._k = e, t }, G = B && "symbol" == typeof E.iterator ? function (e) { return "symbol" == typeof e } : function (e) { return e instanceof E }, X = function (e, t, n) { return e === $ && X(Y, t, n), y(e), t = _(t, !0), y(n), i(F, t) ? (n.enumerable ? (i(e, V) && e[V][t] && (e[V][t] = !1), n = M(n, { enumerable: C(0, !1) })) : (i(e, V) || j(e, V, C(1, {})), e[V][t] = !0), U(e, t, n)) : j(e, t, n) }, J = function (e, t) { y(e); var n, r = m(t = w(t)), i = 0, o = r.length; while (o > i) X(e, n = r[i++], t[n]); return e }, Q = function (e, t) { return void 0 === t ? M(e) : J(M(e), t) }, Z = function (e) { var t = N.call(this, e = _(e, !0)); return !(this === $ && i(F, e) && !i(Y, e)) && (!(t || !i(this, e) || !i(F, e) || i(this, V) && this[V][e]) || t) }, ee = function (e, t) { if (e = w(e), t = _(t, !0), e !== $ || !i(F, t) || i(Y, t)) { var n = L(e, t); return !n || !i(F, t) || i(e, V) && e[V][t] || (n.enumerable = !0), n } }, te = function (e) { var t, n = z(w(e)), r = [], o = 0; while (n.length > o) i(F, t = n[o++]) || t == V || t == c || r.push(t); return r }, ne = function (e) { var t, n = e === $, r = z(n ? Y : w(e)), o = [], a = 0; while (r.length > a) !i(F, t = r[a++]) || n && !i($, t) || o.push(F[t]); return o }; B || (E = function () { if (this instanceof E) throw TypeError("Symbol is not a constructor!"); var e = f(arguments.length > 0 ? arguments[0] : void 0), t = function (n) { this === $ && t.call(Y, n), i(this, V) && i(this[V], e) && (this[V][e] = !1), U(this, e, C(1, n)) }; return o && q && U($, e, { configurable: !0, set: t }), K(e) }, s(E[H], "toString", (function () { return this._k })), k.f = ee, T.f = X, n("6438").f = O.f = te, n("1917").f = Z, S.f = ne, o && !n("e444") && s($, "propertyIsEnumerable", Z, !0), p.f = function (e) { return K(d(e)) }), a(a.G + a.W + a.F * !B, { Symbol: E }); for (var re = "hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","), ie = 0; re.length > ie;)d(re[ie++]); for (var oe = A(d.store), ae = 0; oe.length > ae;)v(oe[ae++]); a(a.S + a.F * !B, "Symbol", { for: function (e) { return i(R, e += "") ? R[e] : R[e] = E(e) }, keyFor: function (e) { if (!G(e)) throw TypeError(e + " is not a symbol!"); for (var t in R) if (R[t] === e) return t }, useSetter: function () { q = !0 }, useSimple: function () { q = !1 } }), a(a.S + a.F * !B, "Object", { create: Q, defineProperty: X, defineProperties: J, getOwnPropertyDescriptor: ee, getOwnPropertyNames: te, getOwnPropertySymbols: ne }); var se = l((function () { S.f(1) })); a(a.S + a.F * se, "Object", { getOwnPropertySymbols: function (e) { return S.f(x(e)) } }), P && a(a.S + a.F * (!B || l((function () { var e = E(); return "[null]" != D([e]) || "{}" != D({ a: e }) || "{}" != D(Object(e)) }))), "JSON", { stringify: function (e) { var t, n, r = [e], i = 1; while (arguments.length > i) r.push(arguments[i++]); if (n = t = r[1], (b(t) || void 0 !== e) && !G(e)) return g(t) || (t = function (e, t) { if ("function" == typeof n && (t = n.call(this, e, t)), !G(t)) return t }), r[1] = t, D.apply(P, r) } }), E[H][I] || n("051b")(E[H], I, E[H].valueOf), h(E, "Symbol"), h(Math, "Math", !0), h(r.JSON, "JSON", !0) }, 6981: function (e, t, n) {
+        /*!
+         * clipboard.js v2.0.8
+         * https://clipboardjs.com/
+         *
+         * Licensed MIT 漏 Zeno Rocha
+         */
+        !function (t, n) { e.exports = n() }(0, (function () { return t = { 134: function (e, t, n) { "use strict"; n.d(t, { default: function () { return v } }); t = n(279); var r = n.n(t), i = (t = n(370), n.n(t)), o = (t = n(817), n.n(t)); function a(e) { return (a = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e })(e) } function s(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } var c = function () { function e(t) { !function (t) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this), this.resolveOptions(t), this.initSelection() } var t, n, r; return t = e, (n = [{ key: "resolveOptions", value: function () { var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}; this.action = e.action, this.container = e.container, this.emitter = e.emitter, this.target = e.target, this.text = e.text, this.trigger = e.trigger, this.selectedText = "" } }, { key: "initSelection", value: function () { this.text ? this.selectFake() : this.target && this.selectTarget() } }, { key: "createFakeElement", value: function () { var e = "rtl" === document.documentElement.getAttribute("dir"); return this.fakeElem = document.createElement("textarea"), this.fakeElem.style.fontSize = "12pt", this.fakeElem.style.border = "0", this.fakeElem.style.padding = "0", this.fakeElem.style.margin = "0", this.fakeElem.style.position = "absolute", this.fakeElem.style[e ? "right" : "left"] = "-9999px", e = window.pageYOffset || document.documentElement.scrollTop, this.fakeElem.style.top = "".concat(e, "px"), this.fakeElem.setAttribute("readonly", ""), this.fakeElem.value = this.text, this.fakeElem } }, { key: "selectFake", value: function () { var e = this, t = this.createFakeElement(); this.fakeHandlerCallback = function () { return e.removeFake() }, this.fakeHandler = this.container.addEventListener("click", this.fakeHandlerCallback) || !0, this.container.appendChild(t), this.selectedText = o()(t), this.copyText(), this.removeFake() } }, { key: "removeFake", value: function () { this.fakeHandler && (this.container.removeEventListener("click", this.fakeHandlerCallback), this.fakeHandler = null, this.fakeHandlerCallback = null), this.fakeElem && (this.container.removeChild(this.fakeElem), this.fakeElem = null) } }, { key: "selectTarget", value: function () { this.selectedText = o()(this.target), this.copyText() } }, { key: "copyText", value: function () { var e; try { e = document.execCommand(this.action) } catch (t) { e = !1 } this.handleResult(e) } }, { key: "handleResult", value: function (e) { this.emitter.emit(e ? "success" : "error", { action: this.action, text: this.selectedText, trigger: this.trigger, clearSelection: this.clearSelection.bind(this) }) } }, { key: "clearSelection", value: function () { this.trigger && this.trigger.focus(), document.activeElement.blur(), window.getSelection().removeAllRanges() } }, { key: "destroy", value: function () { this.removeFake() } }, { key: "action", set: function () { var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "copy"; if (this._action = e, "copy" !== this._action && "cut" !== this._action) throw new Error('Invalid "action" value, use either "copy" or "cut"') }, get: function () { return this._action } }, { key: "target", set: function (e) { if (void 0 !== e) { if (!e || "object" !== a(e) || 1 !== e.nodeType) throw new Error('Invalid "target" value, use a valid Element'); if ("copy" === this.action && e.hasAttribute("disabled")) throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); if ("cut" === this.action && (e.hasAttribute("readonly") || e.hasAttribute("disabled"))) throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); this._target = e } }, get: function () { return this._target } }]) && s(t.prototype, n), r && s(t, r), e }(); function l(e) { return (l = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e })(e) } function u(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } function h(e, t) { return (h = Object.setPrototypeOf || function (e, t) { return e.__proto__ = t, e })(e, t) } function f(t) { var n = function () { if ("undefined" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } }(); return function () { var e, r = d(t); return e = n ? (e = d(this).constructor, Reflect.construct(r, arguments, e)) : r.apply(this, arguments), r = this, !(e = e) || "object" !== l(e) && "function" != typeof e ? function (e) { if (void 0 !== e) return e; throw new ReferenceError("this hasn't been initialised - super() hasn't been called") }(r) : e } } function d(e) { return (d = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) })(e) } function p(e, t) { if (e = "data-clipboard-".concat(e), t.hasAttribute(e)) return t.getAttribute(e) } var v = function () { !function (e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function"); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, writable: !0, configurable: !0 } }), t && h(e, t) }(a, r()); var e, t, n, o = f(a); function a(e, t) { var n; return function (e) { if (!(e instanceof a)) throw new TypeError("Cannot call a class as a function") }(this), (n = o.call(this)).resolveOptions(t), n.listenClick(e), n } return e = a, n = [{ key: "isSupported", value: function () { var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : ["copy", "cut"], t = (e = "string" == typeof e ? [e] : e, !!document.queryCommandSupported); return e.forEach((function (e) { t = t && !!document.queryCommandSupported(e) })), t } }], (t = [{ key: "resolveOptions", value: function () { var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}; this.action = "function" == typeof e.action ? e.action : this.defaultAction, this.target = "function" == typeof e.target ? e.target : this.defaultTarget, this.text = "function" == typeof e.text ? e.text : this.defaultText, this.container = "object" === l(e.container) ? e.container : document.body } }, { key: "listenClick", value: function (e) { var t = this; this.listener = i()(e, "click", (function (e) { return t.onClick(e) })) } }, { key: "onClick", value: function (e) { e = e.delegateTarget || e.currentTarget, this.clipboardAction && (this.clipboardAction = null), this.clipboardAction = new c({ action: this.action(e), target: this.target(e), text: this.text(e), container: this.container, trigger: e, emitter: this }) } }, { key: "defaultAction", value: function (e) { return p("action", e) } }, { key: "defaultTarget", value: function (e) { if (e = p("target", e), e) return document.querySelector(e) } }, { key: "defaultText", value: function (e) { return p("text", e) } }, { key: "destroy", value: function () { this.listener.destroy(), this.clipboardAction && (this.clipboardAction.destroy(), this.clipboardAction = null) } }]) && u(e.prototype, t), n && u(e, n), a }() }, 828: function (e) { var t; "undefined" == typeof Element || Element.prototype.matches || ((t = Element.prototype).matches = t.matchesSelector || t.mozMatchesSelector || t.msMatchesSelector || t.oMatchesSelector || t.webkitMatchesSelector), e.exports = function (e, t) { for (; e && 9 !== e.nodeType;) { if ("function" == typeof e.matches && e.matches(t)) return e; e = e.parentNode } } }, 438: function (e, t, n) { var r = n(828); function i(e, t, n, i, o) { var a = function (e, t, n, i) { return function (n) { n.delegateTarget = r(n.target, t), n.delegateTarget && i.call(e, n) } }.apply(this, arguments); return e.addEventListener(n, a, o), { destroy: function () { e.removeEventListener(n, a, o) } } } e.exports = function (e, t, n, r, o) { return "function" == typeof e.addEventListener ? i.apply(null, arguments) : "function" == typeof n ? i.bind(null, document).apply(null, arguments) : ("string" == typeof e && (e = document.querySelectorAll(e)), Array.prototype.map.call(e, (function (e) { return i(e, t, n, r, o) }))) } }, 879: function (e, t) { t.node = function (e) { return void 0 !== e && e instanceof HTMLElement && 1 === e.nodeType }, t.nodeList = function (e) { var n = Object.prototype.toString.call(e); return void 0 !== e && ("[object NodeList]" === n || "[object HTMLCollection]" === n) && "length" in e && (0 === e.length || t.node(e[0])) }, t.string = function (e) { return "string" == typeof e || e instanceof String }, t.fn = function (e) { return "[object Function]" === Object.prototype.toString.call(e) } }, 370: function (e, t, n) { var r = n(879), i = n(438); e.exports = function (e, t, n) { if (!e && !t && !n) throw new Error("Missing required arguments"); if (!r.string(t)) throw new TypeError("Second argument must be a String"); if (!r.fn(n)) throw new TypeError("Third argument must be a Function"); if (r.node(e)) return l = t, u = n, (c = e).addEventListener(l, u), { destroy: function () { c.removeEventListener(l, u) } }; if (r.nodeList(e)) return o = e, a = t, s = n, Array.prototype.forEach.call(o, (function (e) { e.addEventListener(a, s) })), { destroy: function () { Array.prototype.forEach.call(o, (function (e) { e.removeEventListener(a, s) })) } }; if (r.string(e)) return e = e, t = t, n = n, i(document.body, e, t, n); throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList"); var o, a, s, c, l, u } }, 817: function (e) { e.exports = function (e) { var t, n = "SELECT" === e.nodeName ? (e.focus(), e.value) : "INPUT" === e.nodeName || "TEXTAREA" === e.nodeName ? ((t = e.hasAttribute("readonly")) || e.setAttribute("readonly", ""), e.select(), e.setSelectionRange(0, e.value.length), t || e.removeAttribute("readonly"), e.value) : (e.hasAttribute("contenteditable") && e.focus(), n = window.getSelection(), (t = document.createRange()).selectNodeContents(e), n.removeAllRanges(), n.addRange(t), n.toString()); return n } }, 279: function (e) { function t() { } t.prototype = { on: function (e, t, n) { var r = this.e || (this.e = {}); return (r[e] || (r[e] = [])).push({ fn: t, ctx: n }), this }, once: function (e, t, n) { var r = this; function i() { r.off(e, i), t.apply(n, arguments) } return i._ = t, this.on(e, i, n) }, emit: function (e) { for (var t = [].slice.call(arguments, 1), n = ((this.e || (this.e = {}))[e] || []).slice(), r = 0, i = n.length; r < i; r++)n[r].fn.apply(n[r].ctx, t); return this }, off: function (e, t) { var n = this.e || (this.e = {}), r = n[e], i = []; if (r && t) for (var o = 0, a = r.length; o < a; o++)r[o].fn !== t && r[o].fn._ !== t && i.push(r[o]); return i.length ? n[e] = i : delete n[e], this } }, e.exports = t, e.exports.TinyEmitter = t } }, n = {}, e.n = function (t) { var n = t && t.__esModule ? function () { return t.default } : function () { return t }; return e.d(n, { a: n }), n }, e.d = function (t, n) { for (var r in n) e.o(n, r) && !e.o(t, r) && Object.defineProperty(t, r, { enumerable: !0, get: n[r] }) }, e.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, e(134).default; function e(r) { if (n[r]) return n[r].exports; var i = n[r] = { exports: {} }; return t[r](i, i.exports, e), i.exports } var t, n }))
+    }, "69d5": function (e, t, n) { var r = n("cb5a"), i = Array.prototype, o = i.splice; function a(e) { var t = this.__data__, n = r(t, e); if (n < 0) return !1; var i = t.length - 1; return n == i ? t.pop() : o.call(t, n, 1), --this.size, !0 } e.exports = a }, "69f3": function (e, t, n) { var r, i, o, a = n("7f9a"), s = n("da84"), c = n("861d"), l = n("9112"), u = n("5135"), h = n("c6cd"), f = n("f772"), d = n("d012"), p = "Object already initialized", v = s.WeakMap, m = function (e) { return o(e) ? i(e) : r(e, {}) }, g = function (e) { return function (t) { var n; if (!c(t) || (n = i(t)).type !== e) throw TypeError("Incompatible receiver, " + e + " required"); return n } }; if (a || h.state) { var y = h.state || (h.state = new v), b = y.get, x = y.has, w = y.set; r = function (e, t) { if (x.call(y, e)) throw new TypeError(p); return t.facade = e, w.call(y, e, t), t }, i = function (e) { return b.call(y, e) || {} }, o = function (e) { return x.call(y, e) } } else { var _ = f("state"); d[_] = !0, r = function (e, t) { if (u(e, _)) throw new TypeError(p); return t.facade = e, l(e, _, t), t }, i = function (e) { return u(e, _) ? e[_] : {} }, o = function (e) { return u(e, _) } } e.exports = { set: r, get: i, has: o, enforce: m, getterFor: g } }, "6a21": function (e, t, n) { "use strict"; var r = {}; function i(e, t) { 0 } function o(e, t, n) { t || r[n] || (e(!1, n), r[n] = !0) } function a(e, t) { o(i, e, t) } var s = a; t["a"] = function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : ""; s(e, "[antdv: " + t + "] " + n) } }, "6a71": function (e, t, n) { var r = n("a243"), i = n("13e8"); e.exports = { changer: r, varyColor: i } }, "6aa8": function (e, t, n) { var r = n("4d88"), i = n("cc15")("toStringTag"), o = "Arguments" == r(function () { return arguments }()), a = function (e, t) { try { return e[t] } catch (n) { } }; e.exports = function (e) { var t, n, s; return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof (n = a(t = Object(e), i)) ? n : o ? r(t) : "Object" == (s = r(t)) && "function" == typeof t.callee ? "Arguments" : s } }, "6b75": function (e, t, n) { "use strict"; function r(e, t) { (null == t || t > e.length) && (t = e.length); for (var n = 0, r = new Array(t); n < t; n++)r[n] = e[n]; return r } n.d(t, "a", (function () { return r })) }, "6b93": function (e, t, n) { var r = n("23e7"), i = Math.log, o = Math.LOG10E; r({ target: "Math", stat: !0 }, { log10: function (e) { return i(e) * o } }) }, "6b9e": function (e, t, n) { var r = n("746f"); r("search") }, "6ba6": function (e, t, n) { "use strict"; n("b2a3"), n("e679") }, "6bb4": function (e, t, n) { "use strict"; function r(e, t) { var n = t; while (n) { if (n === e) return !0; n = n.parentNode } return !1 } n.d(t, "a", (function () { return r })) }, "6c02": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), Object.defineProperty(t, "changeDefaultConfig", { enumerable: !0, get: function () { return o.changeDefaultConfig } }), t["default"] = void 0; var i = r(n("04fb")), o = n("9d85"), a = i["default"]; t["default"] = a }, "6c29": function (e, t, n) { "use strict"; n("62fd"); var r = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "dv-active-ring-chart" }, [n("div", { ref: "active-ring-chart", staticClass: "active-ring-chart-container" }), n("div", { staticClass: "active-ring-info" }, [n("dv-digital-flop", { attrs: { config: e.digitalFlop } }), n("div", { staticClass: "active-ring-name", style: e.fontSize }, [e._v(e._s(e.ringName))])], 1)]) }, i = [], o = n("2909"), a = n("5530"), s = (n("d81d"), n("b0c0"), n("159b"), n("6c02")), c = n.n(s), l = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "dv-digital-flop" }, [n("canvas", { ref: "digital-flop" })]) }, u = [], h = n("3835"), f = (n("b680"), n("9886")), d = n.n(f), p = (n("0ca1"), n("becb")), v = n("5557"), m = { name: "DvDigitalFlop", props: { config: { type: Object, default: function () { return {} } } }, data: function () { return { renderer: null, defaultConfig: { number: [], content: "", toFixed: 0, textAlign: "center", rowGap: 0, style: { fontSize: 30, fill: "#3de7c9" }, formatter: void 0, animationCurve: "easeOutCubic", animationFrame: 50 }, mergedConfig: null, graph: null } }, watch: { config: function () { var e = this.update; e() } }, methods: { init: function () { var e = this.initRender, t = this.mergeConfig, n = this.initGraph; e(), t(), n() }, initRender: function () { var e = this.$refs; this.renderer = new d.a(e["digital-flop"]) }, mergeConfig: function () { var e = this.defaultConfig, t = this.config; this.mergedConfig = Object(p["deepMerge"])(Object(v["deepClone"])(e, !0), t || {}) }, initGraph: function () { var e = this.getShape, t = this.getStyle, n = this.renderer, r = this.mergedConfig, i = r.animationCurve, o = r.animationFrame, a = e(), s = t(); this.graph = n.add({ name: "numberText", animationCurve: i, animationFrame: o, shape: a, style: s }) }, getShape: function () { var e = this.mergedConfig, t = e.number, n = e.content, r = e.toFixed, i = e.textAlign, o = e.rowGap, a = e.formatter, s = Object(h["a"])(this.renderer.area, 2), c = s[0], l = s[1], u = [c / 2, l / 2]; return "left" === i && (u[0] = 0), "right" === i && (u[0] = c), { number: t, content: n, toFixed: r, position: u, rowGap: o, formatter: a } }, getStyle: function () { var e = this.mergedConfig, t = e.style, n = e.textAlign; return Object(p["deepMerge"])(t, { textAlign: n, textBaseline: "middle" }) }, update: function () { var e = this.mergeConfig, t = this.mergeShape, n = this.getShape, r = this.getStyle, i = this.graph, o = this.mergedConfig; if (i.animationEnd(), e(), i) { var a = o.animationCurve, s = o.animationFrame, c = n(), l = r(); t(i, c), i.animationCurve = a, i.animationFrame = s, i.animation("style", l, !0), i.animation("shape", c) } }, mergeShape: function (e, t) { var n = e.shape.number.length, r = t.number.length; n !== r && (e.shape.number = t.number) } }, mounted: function () { var e = this.init; e() } }, g = m, y = n("2877"), b = Object(y["a"])(g, l, u, !1, null, null, null), x = b.exports, w = { name: "DvActiveRingChart", components: { dvDigitalFlop: x }, props: { config: { type: Object, default: function () { return {} } } }, data: function () { return { defaultConfig: { radius: "50%", activeRadius: "55%", data: [{ name: "", value: 0 }], lineWidth: 20, activeTimeGap: 3e3, color: [], digitalFlopStyle: { fontSize: 25, fill: "#fff" }, digitalFlopToFixed: 0, digitalFlopUnit: "", animationCurve: "easeOutCubic", animationFrame: 50, showOriginValue: !1 }, mergedConfig: null, chart: null, activeIndex: 0, animationHandler: "" } }, computed: { digitalFlop: function () { var e = this.mergedConfig, t = this.activeIndex; if (!e) return {}; var n, r = e.digitalFlopStyle, i = e.digitalFlopToFixed, o = e.data, a = e.showOriginValue, s = e.digitalFlopUnit, c = o.map((function (e) { var t = e.value; return t })); if (a) n = c[t]; else { var l = c.reduce((function (e, t) { return e + t }), 0), u = parseFloat(c[t] / l * 100) || 0; n = u } return { content: "{nt}".concat(a ? s : s || "%"), number: [n], style: r, toFixed: i } }, ringName: function () { var e = this.mergedConfig, t = this.activeIndex; return e ? e.data[t].name : "" }, fontSize: function () { var e = this.mergedConfig; return e ? "font-size: ".concat(e.digitalFlopStyle.fontSize, "px;") : "" } }, watch: { config: function () { var e = this.animationHandler, t = this.mergeConfig, n = this.setRingOption; clearTimeout(e), this.activeIndex = 0, t(), n() } }, methods: { init: function () { var e = this.initChart, t = this.mergeConfig, n = this.setRingOption; e(), t(), n() }, initChart: function () { var e = this.$refs; this.chart = new c.a(e["active-ring-chart"]) }, mergeConfig: function () { var e = this.defaultConfig, t = this.config; this.mergedConfig = Object(p["deepMerge"])(Object(v["deepClone"])(e, !0), t || {}) }, setRingOption: function () { var e = this.getRingOption, t = this.chart, n = this.ringAnimation, r = e(); t.setOption(r, !0), n() }, getRingOption: function () { var e = this.mergedConfig, t = this.getRealRadius, n = t(); return e.data.forEach((function (e) { e.radius = n })), { series: [Object(a["a"])(Object(a["a"])({ type: "pie" }, e), {}, { outsideLabel: { show: !1 } })], color: e.color } }, getRealRadius: function () { var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0], t = this.mergedConfig, n = this.chart, r = t.radius, i = t.activeRadius, a = t.lineWidth, s = Math.min.apply(Math, Object(o["a"])(n.render.area)) / 2, c = a / 2, l = e ? i : r; "number" !== typeof l && (l = parseInt(l) / 100 * s); var u = l - c, h = l + c; return [u, h] }, ringAnimation: function () { var e = this, t = this.activeIndex, n = this.getRingOption, r = this.chart, i = this.getRealRadius, o = i(), a = i(!0), s = n(), c = s.series[0].data; c.forEach((function (e, n) { e.radius = n === t ? a : o })), r.setOption(s, !0); var l = s.series[0].activeTimeGap; this.animationHandler = setTimeout((function (n) { t += 1, t >= c.length && (t = 0), e.activeIndex = t, e.ringAnimation() }), l) } }, mounted: function () { var e = this.init; e() }, beforeDestroy: function () { var e = this.animationHandler; clearTimeout(e) } }, _ = w, C = Object(y["a"])(_, r, i, !1, null, null, null), M = C.exports, O = function (e) { e.component(M.name, M) }, k = (n("fe7b"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-border-box-1" }, [n("svg", { staticClass: "border", attrs: { width: e.width, height: e.height } }, [n("polygon", { attrs: { fill: e.backgroundColor, points: "10, 27 10, " + (e.height - 27) + " 13, " + (e.height - 24) + " 13, " + (e.height - 21) + " 24, " + (e.height - 11) + "\n    38, " + (e.height - 11) + " 41, " + (e.height - 8) + " 73, " + (e.height - 8) + " 75, " + (e.height - 10) + " 81, " + (e.height - 10) + "\n    85, " + (e.height - 6) + " " + (e.width - 85) + ", " + (e.height - 6) + " " + (e.width - 81) + ", " + (e.height - 10) + " " + (e.width - 75) + ", " + (e.height - 10) + "\n    " + (e.width - 73) + ", " + (e.height - 8) + " " + (e.width - 41) + ", " + (e.height - 8) + " " + (e.width - 38) + ", " + (e.height - 11) + "\n    " + (e.width - 24) + ", " + (e.height - 11) + " " + (e.width - 13) + ", " + (e.height - 21) + " " + (e.width - 13) + ", " + (e.height - 24) + "\n    " + (e.width - 10) + ", " + (e.height - 27) + " " + (e.width - 10) + ", 27 " + (e.width - 13) + ", 25 " + (e.width - 13) + ", 21\n    " + (e.width - 24) + ", 11 " + (e.width - 38) + ", 11 " + (e.width - 41) + ", 8 " + (e.width - 73) + ", 8 " + (e.width - 75) + ", 10\n    " + (e.width - 81) + ", 10 " + (e.width - 85) + ", 6 85, 6 81, 10 75, 10 73, 8 41, 8 38, 11 24, 11 13, 21 13, 24" } })]), e._l(e.border, (function (t) { return n("svg", { key: t, class: t + " border", attrs: { width: "150px", height: "150px" } }, [n("polygon", { attrs: { fill: e.mergedColor[0], points: "6,66 6,18 12,12 18,12 24,6 27,6 30,9 36,9 39,6 84,6 81,9 75,9 73.2,7 40.8,7 37.8,10.2 24,10.2 12,21 12,24 9,27 9,51 7.8,54 7.8,63" } }, [n("animate", { attrs: { attributeName: "fill", values: e.mergedColor[0] + ";" + e.mergedColor[1] + ";" + e.mergedColor[0], dur: "0.5s", begin: "0s", repeatCount: "indefinite" } })]), n("polygon", { attrs: { fill: e.mergedColor[1], points: "27.599999999999998,4.8 38.4,4.8 35.4,7.8 30.599999999999998,7.8" } }, [n("animate", { attrs: { attributeName: "fill", values: e.mergedColor[1] + ";" + e.mergedColor[0] + ";" + e.mergedColor[1], dur: "0.5s", begin: "0s", repeatCount: "indefinite" } })]), n("polygon", { attrs: { fill: e.mergedColor[0], points: "9,54 9,63 7.199999999999999,66 7.199999999999999,75 7.8,78 7.8,110 8.4,110 8.4,66 9.6,66 9.6,54" } }, [n("animate", { attrs: { attributeName: "fill", values: e.mergedColor[0] + ";" + e.mergedColor[1] + ";transparent", dur: "1s", begin: "0s", repeatCount: "indefinite" } })])]) })), n("div", { staticClass: "border-box-content" }, [e._t("default")], 2)], 2) }), S = []; function T(e, t) { return 1 === arguments.length ? parseInt(Math.random() * e + 1, 10) : parseInt(Math.random() * (t - e + 1) + e, 10) } function A(e, t) { let n; return function () { clearTimeout(n); const [r, i] = [this, arguments]; n = setTimeout(() => { t.apply(r, i) }, e) } } function L(e, t) { const n = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver, r = new n(t); return r.observe(e, { attributes: !0, attributeFilter: ["style"], attributeOldValue: !0 }), r } function j(e, t) { const n = Math.abs(e[0] - t[0]), r = Math.abs(e[1] - t[1]); return Math.sqrt(n * n + r * r) } function z(e) { return (e ? "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx" : "xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx").replace(/[xy]/g, (function (e) { const t = 16 * Math.random() | 0, n = "x" == e ? t : 3 & t | 8; return n.toString(16) })) } var E = { data() { return { dom: "", width: 0, height: 0, debounceInitWHFun: "", domObserver: "" } }, methods: { async autoResizeMixinInit() { const { initWH: e, getDebounceInitWHFun: t, bindDomResizeCallback: n, afterAutoResizeMixinInit: r } = this; await e(!1), t(), n(), "function" === typeof r && r() }, initWH(e = !0) { const { $nextTick: t, $refs: n, ref: r, onResize: i } = this; return new Promise(o => { t(t => { const a = this.dom = n[r]; this.width = a ? a.clientWidth : 0, this.height = a ? a.clientHeight : 0, a ? this.width && this.height || console.warn("DataV: Component width or height is 0px, rendering abnormality may occur!") : console.warn("DataV: Failed to get dom node, component rendering may be abnormal!"), "function" === typeof i && e && i(), o() }) }) }, getDebounceInitWHFun() { const { initWH: e } = this; this.debounceInitWHFun = A(100, e) }, bindDomResizeCallback() { const { dom: e, debounceInitWHFun: t } = this; this.domObserver = L(e, t), window.addEventListener("resize", t) }, unbindDomResizeCallback() { let { domObserver: e, debounceInitWHFun: t } = this; e && (e.disconnect(), e.takeRecords(), e = null, window.removeEventListener("resize", t)) } }, mounted() { const { autoResizeMixinInit: e } = this; e() }, beforeDestroy() { const { unbindDomResizeCallback: e } = this; e() } }, P = { name: "DvBorderBox1", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, backgroundColor: { type: String, default: "transparent" } }, data: function () { return { ref: "border-box-1", border: ["left-top", "right-top", "left-bottom", "right-bottom"], defaultColor: ["#4fd2dd", "#235fa7"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, D = P, H = Object(y["a"])(D, k, S, !1, null, null, null), V = H.exports, I = function (e) { e.component(V.name, V) }, N = (n("6ccd"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-border-box-10", style: "box-shadow: inset 0 0 25px 3px " + e.mergedColor[0] }, [n("svg", { staticClass: "dv-border-svg-container", attrs: { width: e.width, height: e.height } }, [n("polygon", { attrs: { fill: e.backgroundColor, points: "\n      4, 0 " + (e.width - 4) + ", 0 " + e.width + ", 4 " + e.width + ", " + (e.height - 4) + " " + (e.width - 4) + ", " + e.height + "\n      4, " + e.height + " 0, " + (e.height - 4) + " 0, 4\n    " } })]), e._l(e.border, (function (t) { return n("svg", { key: t, class: t + " dv-border-svg-container", attrs: { width: "150px", height: "150px" } }, [n("polygon", { attrs: { fill: e.mergedColor[1], points: "40, 0 5, 0 0, 5 0, 16 3, 19 3, 7 7, 3 35, 3" } })]) })), n("div", { staticClass: "border-box-content" }, [e._t("default")], 2)], 2) }), R = [], F = { name: "DvBorderBox10", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, backgroundColor: { type: String, default: "transparent" } }, data: function () { return { ref: "border-box-10", border: ["left-top", "right-top", "left-bottom", "right-bottom"], defaultColor: ["#1d48c4", "#d3e1f8"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, Y = F, $ = Object(y["a"])(Y, N, R, !1, null, null, null), B = $.exports, W = function (e) { e.component(B.name, B) }, q = (n("4656"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-border-box-11" }, [n("svg", { staticClass: "dv-border-svg-container", attrs: { width: e.width, height: e.height } }, [n("defs", [n("filter", { attrs: { id: e.filterId, height: "150%", width: "150%", x: "-25%", y: "-25%" } }, [n("feMorphology", { attrs: { operator: "dilate", radius: "2", in: "SourceAlpha", result: "thicken" } }), n("feGaussianBlur", { attrs: { in: "thicken", stdDeviation: "3", result: "blurred" } }), n("feFlood", { attrs: { "flood-color": e.mergedColor[1], result: "glowColor" } }), n("feComposite", { attrs: { in: "glowColor", in2: "blurred", operator: "in", result: "softGlowColored" } }), n("feMerge", [n("feMergeNode", { attrs: { in: "softGlowColored" } }), n("feMergeNode", { attrs: { in: "SourceGraphic" } })], 1)], 1)]), n("polygon", { attrs: { fill: e.backgroundColor, points: "\n      20, 32 " + (.5 * e.width - e.titleWidth / 2) + ", 32 " + (.5 * e.width - e.titleWidth / 2 + 20) + ", 53\n      " + (.5 * e.width + e.titleWidth / 2 - 20) + ", 53 " + (.5 * e.width + e.titleWidth / 2) + ", 32\n      " + (e.width - 20) + ", 32 " + (e.width - 8) + ", 48 " + (e.width - 8) + ", " + (e.height - 25) + " " + (e.width - 20) + ", " + (e.height - 8) + "\n      20, " + (e.height - 8) + " 8, " + (e.height - 25) + " 8, 50\n    " } }), n("polyline", { attrs: { stroke: e.mergedColor[0], filter: "url(#" + e.filterId + ")", points: "\n        " + (e.width - e.titleWidth) / 2 + ", 30\n        20, 30 7, 50 7, " + (50 + (e.height - 167) / 2) + "\n        13, " + (55 + (e.height - 167) / 2) + " 13, " + (135 + (e.height - 167) / 2) + "\n        7, " + (140 + (e.height - 167) / 2) + " 7, " + (e.height - 27) + "\n        20, " + (e.height - 7) + " " + (e.width - 20) + ", " + (e.height - 7) + " " + (e.width - 7) + ", " + (e.height - 27) + "\n        " + (e.width - 7) + ", " + (140 + (e.height - 167) / 2) + " " + (e.width - 13) + ", " + (135 + (e.height - 167) / 2) + "\n        " + (e.width - 13) + ", " + (55 + (e.height - 167) / 2) + " " + (e.width - 7) + ", " + (50 + (e.height - 167) / 2) + "\n        " + (e.width - 7) + ", 50 " + (e.width - 20) + ", 30 " + (e.width + e.titleWidth) / 2 + ", 30\n        " + ((e.width + e.titleWidth) / 2 - 20) + ", 7 " + ((e.width - e.titleWidth) / 2 + 20) + ", 7\n        " + (e.width - e.titleWidth) / 2 + ", 30 " + ((e.width - e.titleWidth) / 2 + 20) + ", 52\n        " + ((e.width + e.titleWidth) / 2 - 20) + ", 52 " + (e.width + e.titleWidth) / 2 + ", 30\n      " } }), n("polygon", { attrs: { stroke: e.mergedColor[0], fill: "transparent", points: "\n        " + ((e.width + e.titleWidth) / 2 - 5) + ", 30 " + ((e.width + e.titleWidth) / 2 - 21) + ", 11\n        " + ((e.width + e.titleWidth) / 2 - 27) + ", 11 " + ((e.width + e.titleWidth) / 2 - 8) + ", 34\n      " } }), n("polygon", { attrs: { stroke: e.mergedColor[0], fill: "transparent", points: "\n        " + ((e.width - e.titleWidth) / 2 + 5) + ", 30 " + ((e.width - e.titleWidth) / 2 + 22) + ", 49\n        " + ((e.width - e.titleWidth) / 2 + 28) + ", 49 " + ((e.width - e.titleWidth) / 2 + 8) + ", 26\n      " } }), n("polygon", { attrs: { stroke: e.mergedColor[0], fill: e.fade(e.mergedColor[1] || e.defaultColor[1], 30), filter: "url(#" + e.filterId + ")", points: "\n        " + ((e.width + e.titleWidth) / 2 - 11) + ", 37 " + ((e.width + e.titleWidth) / 2 - 32) + ", 11\n        " + ((e.width - e.titleWidth) / 2 + 23) + ", 11 " + ((e.width - e.titleWidth) / 2 + 11) + ", 23\n        " + ((e.width - e.titleWidth) / 2 + 33) + ", 49 " + ((e.width + e.titleWidth) / 2 - 22) + ", 49\n      " } }), n("polygon", { attrs: { filter: "url(#" + e.filterId + ")", fill: e.mergedColor[0], opacity: "1", points: "\n        " + ((e.width - e.titleWidth) / 2 - 10) + ", 37 " + ((e.width - e.titleWidth) / 2 - 31) + ", 37\n        " + ((e.width - e.titleWidth) / 2 - 25) + ", 46 " + ((e.width - e.titleWidth) / 2 - 4) + ", 46\n      " } }, [n("animate", { attrs: { attributeName: "opacity", values: "1;0.7;1", dur: "2s", begin: "0s", repeatCount: "indefinite" } })]), n("polygon", { attrs: { filter: "url(#" + e.filterId + ")", fill: e.mergedColor[0], opacity: "0.7", points: "\n        " + ((e.width - e.titleWidth) / 2 - 40) + ", 37 " + ((e.width - e.titleWidth) / 2 - 61) + ", 37\n        " + ((e.width - e.titleWidth) / 2 - 55) + ", 46 " + ((e.width - e.titleWidth) / 2 - 34) + ", 46\n      " } }, [n("animate", { attrs: { attributeName: "opacity", values: "0.7;0.4;0.7", dur: "2s", begin: "0s", repeatCount: "indefinite" } })]), n("polygon", { attrs: { filter: "url(#" + e.filterId + ")", fill: e.mergedColor[0], opacity: "0.5", points: "\n        " + ((e.width - e.titleWidth) / 2 - 70) + ", 37 " + ((e.width - e.titleWidth) / 2 - 91) + ", 37\n        " + ((e.width - e.titleWidth) / 2 - 85) + ", 46 " + ((e.width - e.titleWidth) / 2 - 64) + ", 46\n      " } }, [n("animate", { attrs: { attributeName: "opacity", values: "0.5;0.2;0.5", dur: "2s", begin: "0s", repeatCount: "indefinite" } })]), n("polygon", { attrs: { filter: "url(#" + e.filterId + ")", fill: e.mergedColor[0], opacity: "1", points: "\n        " + ((e.width + e.titleWidth) / 2 + 30) + ", 37 " + ((e.width + e.titleWidth) / 2 + 9) + ", 37\n        " + ((e.width + e.titleWidth) / 2 + 3) + ", 46 " + ((e.width + e.titleWidth) / 2 + 24) + ", 46\n      " } }, [n("animate", { attrs: { attributeName: "opacity", values: "1;0.7;1", dur: "2s", begin: "0s", repeatCount: "indefinite" } })]), n("polygon", { attrs: { filter: "url(#" + e.filterId + ")", fill: e.mergedColor[0], opacity: "0.7", points: "\n        " + ((e.width + e.titleWidth) / 2 + 60) + ", 37 " + ((e.width + e.titleWidth) / 2 + 39) + ", 37\n        " + ((e.width + e.titleWidth) / 2 + 33) + ", 46 " + ((e.width + e.titleWidth) / 2 + 54) + ", 46\n      " } }, [n("animate", { attrs: { attributeName: "opacity", values: "0.7;0.4;0.7", dur: "2s", begin: "0s", repeatCount: "indefinite" } })]), n("polygon", { attrs: { filter: "url(#" + e.filterId + ")", fill: e.mergedColor[0], opacity: "0.5", points: "\n        " + ((e.width + e.titleWidth) / 2 + 90) + ", 37 " + ((e.width + e.titleWidth) / 2 + 69) + ", 37\n        " + ((e.width + e.titleWidth) / 2 + 63) + ", 46 " + ((e.width + e.titleWidth) / 2 + 84) + ", 46\n      " } }, [n("animate", { attrs: { attributeName: "opacity", values: "0.5;0.2;0.5", dur: "2s", begin: "0s", repeatCount: "indefinite" } })]), n("text", { staticClass: "dv-border-box-11-title", attrs: { x: "" + e.width / 2, y: "32", fill: "#fff", "font-size": "18", "text-anchor": "middle", "dominant-baseline": "middle" } }, [e._v(" " + e._s(e.title) + " ")]), n("polygon", { attrs: { fill: e.mergedColor[0], filter: "url(#" + e.filterId + ")", points: "\n        7, " + (53 + (e.height - 167) / 2) + " 11, " + (57 + (e.height - 167) / 2) + "\n        11, " + (133 + (e.height - 167) / 2) + " 7, " + (137 + (e.height - 167) / 2) + "\n      " } }), n("polygon", { attrs: { fill: e.mergedColor[0], filter: "url(#" + e.filterId + ")", points: "\n        " + (e.width - 7) + ", " + (53 + (e.height - 167) / 2) + " " + (e.width - 11) + ", " + (57 + (e.height - 167) / 2) + "\n        " + (e.width - 11) + ", " + (133 + (e.height - 167) / 2) + " " + (e.width - 7) + ", " + (137 + (e.height - 167) / 2) + "\n      " } })]), n("div", { staticClass: "border-box-content" }, [e._t("default")], 2)]) }), U = [], K = (n("a9e3"), n("53b8")), G = { name: "DvBorderBox11", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, titleWidth: { type: Number, default: 250 }, title: { type: String, default: "" }, backgroundColor: { type: String, default: "transparent" } }, data: function () { var e = z(); return { ref: "border-box-11", filterId: "border-box-11-filterId-".concat(e), defaultColor: ["#8aaafb", "#1f33a2"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) }, fade: K["fade"] }, mounted: function () { var e = this.mergeColor; e() } }, X = G, J = Object(y["a"])(X, q, U, !1, null, null, null), Q = J.exports, Z = function (e) { e.component(Q.name, Q) }, ee = (n("3c0e"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-border-box-12" }, [n("svg", { staticClass: "dv-border-svg-container", attrs: { width: e.width, height: e.height } }, [n("defs", [n("filter", { attrs: { id: e.filterId, height: "150%", width: "150%", x: "-25%", y: "-25%" } }, [n("feMorphology", { attrs: { operator: "dilate", radius: "1", in: "SourceAlpha", result: "thicken" } }), n("feGaussianBlur", { attrs: { in: "thicken", stdDeviation: "2", result: "blurred" } }), n("feFlood", { attrs: { "flood-color": e.fade(e.mergedColor[1] || e.defaultColor[1], 70), result: "glowColor" } }, [n("animate", { attrs: { attributeName: "flood-color", values: "\n              " + e.fade(e.mergedColor[1] || e.defaultColor[1], 70) + ";\n              " + e.fade(e.mergedColor[1] || e.defaultColor[1], 30) + ";\n              " + e.fade(e.mergedColor[1] || e.defaultColor[1], 70) + ";\n            ", dur: "3s", begin: "0s", repeatCount: "indefinite" } })]), n("feComposite", { attrs: { in: "glowColor", in2: "blurred", operator: "in", result: "softGlowColored" } }), n("feMerge", [n("feMergeNode", { attrs: { in: "softGlowColored" } }), n("feMergeNode", { attrs: { in: "SourceGraphic" } })], 1)], 1)]), e.width && e.height ? n("path", { attrs: { fill: e.backgroundColor, "stroke-width": "2", stroke: e.mergedColor[0], d: "\n        M15 5 L " + (e.width - 15) + " 5 Q " + (e.width - 5) + " 5, " + (e.width - 5) + " 15\n        L " + (e.width - 5) + " " + (e.height - 15) + " Q " + (e.width - 5) + " " + (e.height - 5) + ", " + (e.width - 15) + " " + (e.height - 5) + "\n        L 15, " + (e.height - 5) + " Q 5 " + (e.height - 5) + " 5 " + (e.height - 15) + " L 5 15\n        Q 5 5 15 5\n      " } }) : e._e(), n("path", { attrs: { "stroke-width": "2", fill: "transparent", "stroke-linecap": "round", filter: "url(#" + e.filterId + ")", stroke: e.mergedColor[1], d: "M 20 5 L 15 5 Q 5 5 5 15 L 5 20" } }), n("path", { attrs: { "stroke-width": "2", fill: "transparent", "stroke-linecap": "round", filter: "url(#" + e.filterId + ")", stroke: e.mergedColor[1], d: "M " + (e.width - 20) + " 5 L " + (e.width - 15) + " 5 Q " + (e.width - 5) + " 5 " + (e.width - 5) + " 15 L " + (e.width - 5) + " 20" } }), n("path", { attrs: { "stroke-width": "2", fill: "transparent", "stroke-linecap": "round", filter: "url(#" + e.filterId + ")", stroke: e.mergedColor[1], d: "\n        M " + (e.width - 20) + " " + (e.height - 5) + " L " + (e.width - 15) + " " + (e.height - 5) + "\n        Q " + (e.width - 5) + " " + (e.height - 5) + " " + (e.width - 5) + " " + (e.height - 15) + "\n        L " + (e.width - 5) + " " + (e.height - 20) + "\n      " } }), n("path", { attrs: { "stroke-width": "2", fill: "transparent", "stroke-linecap": "round", filter: "url(#" + e.filterId + ")", stroke: e.mergedColor[1], d: "\n        M 20 " + (e.height - 5) + " L 15 " + (e.height - 5) + "\n        Q 5 " + (e.height - 5) + " 5 " + (e.height - 15) + "\n        L 5 " + (e.height - 20) + "\n      " } })]), n("div", { staticClass: "border-box-content" }, [e._t("default")], 2)]) }), te = [], ne = { name: "DvBorderBox12", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, backgroundColor: { type: String, default: "transparent" } }, data: function () { var e = z(); return { ref: "border-box-12", filterId: "borderr-box-12-filterId-".concat(e), defaultColor: ["#2e6099", "#7ce7fd"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) }, fade: K["fade"] }, mounted: function () { var e = this.mergeColor; e() } }, re = ne, ie = Object(y["a"])(re, ee, te, !1, null, null, null), oe = ie.exports, ae = function (e) { e.component(oe.name, oe) }, se = (n("470c"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-border-box-13" }, [n("svg", { staticClass: "dv-border-svg-container", attrs: { width: e.width, height: e.height } }, [n("path", { attrs: { fill: e.backgroundColor, stroke: e.mergedColor[0], d: "\n        M 5 20 L 5 10 L 12 3  L 60 3 L 68 10\n        L " + (e.width - 20) + " 10 L " + (e.width - 5) + " 25\n        L " + (e.width - 5) + " " + (e.height - 5) + " L 20 " + (e.height - 5) + "\n        L 5 " + (e.height - 20) + " L 5 20\n      " } }), n("path", { attrs: { fill: "transparent", "stroke-width": "3", "stroke-linecap": "round", "stroke-dasharray": "10, 5", stroke: e.mergedColor[0], d: "M 16 9 L 61 9" } }), n("path", { attrs: { fill: "transparent", stroke: e.mergedColor[1], d: "M 5 20 L 5 10 L 12 3  L 60 3 L 68 10" } }), n("path", { attrs: { fill: "transparent", stroke: e.mergedColor[1], d: "M " + (e.width - 5) + " " + (e.height - 30) + " L " + (e.width - 5) + " " + (e.height - 5) + " L " + (e.width - 30) + " " + (e.height - 5) } })]), n("div", { staticClass: "border-box-content" }, [e._t("default")], 2)]) }), ce = [], le = { name: "DvBorderBox13", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, backgroundColor: { type: String, default: "transparent" } }, data: function () { return { ref: "border-box-13", defaultColor: ["#6586ec", "#2cf7fe"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, ue = le, he = Object(y["a"])(ue, se, ce, !1, null, null, null), fe = he.exports, de = function (e) { e.component(fe.name, fe) }, pe = (n("b72d"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-border-box-2" }, [n("svg", { staticClass: "dv-border-svg-container", attrs: { width: e.width, height: e.height } }, [n("polygon", { attrs: { fill: e.backgroundColor, points: "\n      7, 7 " + (e.width - 7) + ", 7 " + (e.width - 7) + ", " + (e.height - 7) + " 7, " + (e.height - 7) + "\n    " } }), n("polyline", { attrs: { stroke: e.mergedColor[0], points: "2, 2 " + (e.width - 2) + " ,2 " + (e.width - 2) + ", " + (e.height - 2) + " 2, " + (e.height - 2) + " 2, 2" } }), n("polyline", { attrs: { stroke: e.mergedColor[1], points: "6, 6 " + (e.width - 6) + ", 6 " + (e.width - 6) + ", " + (e.height - 6) + " 6, " + (e.height - 6) + " 6, 6" } }), n("circle", { attrs: { fill: e.mergedColor[0], cx: "11", cy: "11", r: "1" } }), n("circle", { attrs: { fill: e.mergedColor[0], cx: e.width - 11, cy: "11", r: "1" } }), n("circle", { attrs: { fill: e.mergedColor[0], cx: e.width - 11, cy: e.height - 11, r: "1" } }), n("circle", { attrs: { fill: e.mergedColor[0], cx: "11", cy: e.height - 11, r: "1" } })]), n("div", { staticClass: "border-box-content" }, [e._t("default")], 2)]) }), ve = [], me = { name: "DvBorderBox2", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, backgroundColor: { type: String, default: "transparent" } }, data: function () { return { ref: "border-box-2", defaultColor: ["#fff", "rgba(255, 255, 255, 0.6)"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, ge = me, ye = Object(y["a"])(ge, pe, ve, !1, null, null, null), be = ye.exports, xe = function (e) { e.component(be.name, be) }, we = (n("1e4c"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-border-box-3" }, [n("svg", { staticClass: "dv-border-svg-container", attrs: { width: e.width, height: e.height } }, [n("polygon", { attrs: { fill: e.backgroundColor, points: "\n      23, 23 " + (e.width - 24) + ", 23 " + (e.width - 24) + ", " + (e.height - 24) + " 23, " + (e.height - 24) + "\n    " } }), n("polyline", { staticClass: "dv-bb3-line1", attrs: { stroke: e.mergedColor[0], points: "4, 4 " + (e.width - 22) + " ,4 " + (e.width - 22) + ", " + (e.height - 22) + " 4, " + (e.height - 22) + " 4, 4" } }), n("polyline", { staticClass: "dv-bb3-line2", attrs: { stroke: e.mergedColor[1], points: "10, 10 " + (e.width - 16) + ", 10 " + (e.width - 16) + ", " + (e.height - 16) + " 10, " + (e.height - 16) + " 10, 10" } }), n("polyline", { staticClass: "dv-bb3-line2", attrs: { stroke: e.mergedColor[1], points: "16, 16 " + (e.width - 10) + ", 16 " + (e.width - 10) + ", " + (e.height - 10) + " 16, " + (e.height - 10) + " 16, 16" } }), n("polyline", { staticClass: "dv-bb3-line2", attrs: { stroke: e.mergedColor[1], points: "22, 22 " + (e.width - 4) + ", 22 " + (e.width - 4) + ", " + (e.height - 4) + " 22, " + (e.height - 4) + " 22, 22" } })]), n("div", { staticClass: "border-box-content" }, [e._t("default")], 2)]) }), _e = [], Ce = { name: "DvBorderBox3", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, backgroundColor: { type: String, default: "transparent" } }, data: function () { return { ref: "border-box-3", defaultColor: ["#2862b7", "#2862b7"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, Me = Ce, Oe = Object(y["a"])(Me, we, _e, !1, null, null, null), ke = Oe.exports, Se = function (e) { e.component(ke.name, ke) }, Te = (n("1dac"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-border-box-4" }, [n("svg", { class: "dv-border-svg-container " + (e.reverse && "dv-reverse"), attrs: { width: e.width, height: e.height } }, [n("polygon", { attrs: { fill: e.backgroundColor, points: "\n      " + (e.width - 15) + ", 22 170, 22 150, 7 40, 7 28, 21 32, 24\n      16, 42 16, " + (e.height - 32) + " 41, " + (e.height - 7) + " " + (e.width - 15) + ", " + (e.height - 7) + "\n    " } }), n("polyline", { staticClass: "dv-bb4-line-1", attrs: { stroke: e.mergedColor[0], points: "145, " + (e.height - 5) + " 40, " + (e.height - 5) + " 10, " + (e.height - 35) + "\n        10, 40 40, 5 150, 5 170, 20 " + (e.width - 15) + ", 20" } }), n("polyline", { staticClass: "dv-bb4-line-2", attrs: { stroke: e.mergedColor[1], points: "245, " + (e.height - 1) + " 36, " + (e.height - 1) + " 14, " + (e.height - 23) + "\n        14, " + (e.height - 100) } }), n("polyline", { staticClass: "dv-bb4-line-3", attrs: { stroke: e.mergedColor[0], points: "7, " + (e.height - 40) + " 7, " + (e.height - 75) } }), n("polyline", { staticClass: "dv-bb4-line-4", attrs: { stroke: e.mergedColor[0], points: "28, 24 13, 41 13, 64" } }), n("polyline", { staticClass: "dv-bb4-line-5", attrs: { stroke: e.mergedColor[0], points: "5, 45 5, 140" } }), n("polyline", { staticClass: "dv-bb4-line-6", attrs: { stroke: e.mergedColor[1], points: "14, 75 14, 180" } }), n("polyline", { staticClass: "dv-bb4-line-7", attrs: { stroke: e.mergedColor[1], points: "55, 11 147, 11 167, 26 250, 26" } }), n("polyline", { staticClass: "dv-bb4-line-8", attrs: { stroke: e.mergedColor[1], points: "158, 5 173, 16" } }), n("polyline", { staticClass: "dv-bb4-line-9", attrs: { stroke: e.mergedColor[0], points: "200, 17 " + (e.width - 10) + ", 17" } }), n("polyline", { staticClass: "dv-bb4-line-10", attrs: { stroke: e.mergedColor[1], points: "385, 17 " + (e.width - 10) + ", 17" } })]), n("div", { staticClass: "border-box-content" }, [e._t("default")], 2)]) }), Ae = [], Le = { name: "DvBorderBox4", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, reverse: { type: Boolean, default: !1 }, backgroundColor: { type: String, default: "transparent" } }, data: function () { return { ref: "border-box-4", defaultColor: ["red", "rgba(0,0,255,0.8)"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, je = Le, ze = Object(y["a"])(je, Te, Ae, !1, null, null, null), Ee = ze.exports, Pe = function (e) { e.component(Ee.name, Ee) }, De = (n("042d"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-border-box-5" }, [n("svg", { class: "dv-border-svg-container  " + (e.reverse && "dv-reverse"), attrs: { width: e.width, height: e.height } }, [n("polygon", { attrs: { fill: e.backgroundColor, points: "\n      10, 22 " + (e.width - 22) + ", 22 " + (e.width - 22) + ", " + (e.height - 86) + " " + (e.width - 84) + ", " + (e.height - 24) + " 10, " + (e.height - 24) + "\n    " } }), n("polyline", { staticClass: "dv-bb5-line-1", attrs: { stroke: e.mergedColor[0], points: "8, 5 " + (e.width - 5) + ", 5 " + (e.width - 5) + ", " + (e.height - 100) + "\n        " + (e.width - 100) + ", " + (e.height - 5) + " 8, " + (e.height - 5) + " 8, 5" } }), n("polyline", { staticClass: "dv-bb5-line-2", attrs: { stroke: e.mergedColor[1], points: "3, 5 " + (e.width - 20) + ", 5 " + (e.width - 20) + ", " + (e.height - 60) + "\n        " + (e.width - 74) + ", " + (e.height - 5) + " 3, " + (e.height - 5) + " 3, 5" } }), n("polyline", { staticClass: "dv-bb5-line-3", attrs: { stroke: e.mergedColor[1], points: "50, 13 " + (e.width - 35) + ", 13" } }), n("polyline", { staticClass: "dv-bb5-line-4", attrs: { stroke: e.mergedColor[1], points: "15, 20 " + (e.width - 35) + ", 20" } }), n("polyline", { staticClass: "dv-bb5-line-5", attrs: { stroke: e.mergedColor[1], points: "15, " + (e.height - 20) + " " + (e.width - 110) + ", " + (e.height - 20) } }), n("polyline", { staticClass: "dv-bb5-line-6", attrs: { stroke: e.mergedColor[1], points: "15, " + (e.height - 13) + " " + (e.width - 110) + ", " + (e.height - 13) } })]), n("div", { staticClass: "border-box-content" }, [e._t("default")], 2)]) }), He = [], Ve = { name: "DvBorderBox5", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, reverse: { type: Boolean, default: !1 }, backgroundColor: { type: String, default: "transparent" } }, data: function () { return { ref: "border-box-5", defaultColor: ["rgba(255, 255, 255, 0.35)", "rgba(255, 255, 255, 0.20)"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, Ie = Ve, Ne = Object(y["a"])(Ie, De, He, !1, null, null, null), Re = Ne.exports, Fe = function (e) { e.component(Re.name, Re) }, Ye = (n("4e86"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-border-box-6" }, [n("svg", { staticClass: "dv-border-svg-container", attrs: { width: e.width, height: e.height } }, [n("polygon", { attrs: { fill: e.backgroundColor, points: "\n      9, 7 " + (e.width - 9) + ", 7 " + (e.width - 9) + ", " + (e.height - 7) + " 9, " + (e.height - 7) + "\n    " } }), n("circle", { attrs: { fill: e.mergedColor[1], cx: "5", cy: "5", r: "2" } }), n("circle", { attrs: { fill: e.mergedColor[1], cx: e.width - 5, cy: "5", r: "2" } }), n("circle", { attrs: { fill: e.mergedColor[1], cx: e.width - 5, cy: e.height - 5, r: "2" } }), n("circle", { attrs: { fill: e.mergedColor[1], cx: "5", cy: e.height - 5, r: "2" } }), n("polyline", { attrs: { stroke: e.mergedColor[0], points: "10, 4 " + (e.width - 10) + ", 4" } }), n("polyline", { attrs: { stroke: e.mergedColor[0], points: "10, " + (e.height - 4) + " " + (e.width - 10) + ", " + (e.height - 4) } }), n("polyline", { attrs: { stroke: e.mergedColor[0], points: "5, 70 5, " + (e.height - 70) } }), n("polyline", { attrs: { stroke: e.mergedColor[0], points: e.width - 5 + ", 70 " + (e.width - 5) + ", " + (e.height - 70) } }), n("polyline", { attrs: { stroke: e.mergedColor[0], points: "3, 10, 3, 50" } }), n("polyline", { attrs: { stroke: e.mergedColor[0], points: "7, 30 7, 80" } }), n("polyline", { attrs: { stroke: e.mergedColor[0], points: e.width - 3 + ", 10 " + (e.width - 3) + ", 50" } }), n("polyline", { attrs: { stroke: e.mergedColor[0], points: e.width - 7 + ", 30 " + (e.width - 7) + ", 80" } }), n("polyline", { attrs: { stroke: e.mergedColor[0], points: "3, " + (e.height - 10) + " 3, " + (e.height - 50) } }), n("polyline", { attrs: { stroke: e.mergedColor[0], points: "7, " + (e.height - 30) + " 7, " + (e.height - 80) } }), n("polyline", { attrs: { stroke: e.mergedColor[0], points: e.width - 3 + ", " + (e.height - 10) + " " + (e.width - 3) + ", " + (e.height - 50) } }), n("polyline", { attrs: { stroke: e.mergedColor[0], points: e.width - 7 + ", " + (e.height - 30) + " " + (e.width - 7) + ", " + (e.height - 80) } })]), n("div", { staticClass: "border-box-content" }, [e._t("default")], 2)]) }), $e = [], Be = { name: "DvBorderBox6", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, backgroundColor: { type: String, default: "transparent" } }, data: function () { return { ref: "border-box-6", defaultColor: ["rgba(255, 255, 255, 0.35)", "gray"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, We = Be, qe = Object(y["a"])(We, Ye, $e, !1, null, null, null), Ue = qe.exports, Ke = function (e) { e.component(Ue.name, Ue) }, Ge = (n("3648"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-border-box-7", style: "box-shadow: inset 0 0 40px " + e.mergedColor[0] + "; border: 1px solid " + e.mergedColor[0] + "; background-color: " + e.backgroundColor }, [n("svg", { staticClass: "dv-border-svg-container", attrs: { width: e.width, height: e.height } }, [n("polyline", { staticClass: "dv-bb7-line-width-2", attrs: { stroke: e.mergedColor[0], points: "0, 25 0, 0 25, 0" } }), n("polyline", { staticClass: "dv-bb7-line-width-2", attrs: { stroke: e.mergedColor[0], points: e.width - 25 + ", 0 " + e.width + ", 0 " + e.width + ", 25" } }), n("polyline", { staticClass: "dv-bb7-line-width-2", attrs: { stroke: e.mergedColor[0], points: e.width - 25 + ", " + e.height + " " + e.width + ", " + e.height + " " + e.width + ", " + (e.height - 25) } }), n("polyline", { staticClass: "dv-bb7-line-width-2", attrs: { stroke: e.mergedColor[0], points: "0, " + (e.height - 25) + " 0, " + e.height + " 25, " + e.height } }), n("polyline", { staticClass: "dv-bb7-line-width-5", attrs: { stroke: e.mergedColor[1], points: "0, 10 0, 0 10, 0" } }), n("polyline", { staticClass: "dv-bb7-line-width-5", attrs: { stroke: e.mergedColor[1], points: e.width - 10 + ", 0 " + e.width + ", 0 " + e.width + ", 10" } }), n("polyline", { staticClass: "dv-bb7-line-width-5", attrs: { stroke: e.mergedColor[1], points: e.width - 10 + ", " + e.height + " " + e.width + ", " + e.height + " " + e.width + ", " + (e.height - 10) } }), n("polyline", { staticClass: "dv-bb7-line-width-5", attrs: { stroke: e.mergedColor[1], points: "0, " + (e.height - 10) + " 0, " + e.height + " 10, " + e.height } })]), n("div", { staticClass: "border-box-content" }, [e._t("default")], 2)]) }), Xe = [], Je = { name: "DvBorderBox7", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, backgroundColor: { type: String, default: "transparent" } }, data: function () { return { ref: "border-box-7", defaultColor: ["rgba(128,128,128,0.3)", "rgba(128,128,128,0.5)"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, Qe = Je, Ze = Object(y["a"])(Qe, Ge, Xe, !1, null, null, null), et = Ze.exports, tt = function (e) { e.component(et.name, et) }, nt = (n("733c"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-border-box-8" }, [n("svg", { staticClass: "dv-border-svg-container", attrs: { width: e.width, height: e.height } }, [n("defs", [n("path", { attrs: { id: e.path, d: e.pathD, fill: "transparent" } }), n("radialGradient", { attrs: { id: e.gradient, cx: "50%", cy: "50%", r: "50%" } }, [n("stop", { attrs: { offset: "0%", "stop-color": "#fff", "stop-opacity": "1" } }), n("stop", { attrs: { offset: "100%", "stop-color": "#fff", "stop-opacity": "0" } })], 1), n("mask", { attrs: { id: e.mask } }, [n("circle", { attrs: { cx: "0", cy: "0", r: "150", fill: "url(#" + e.gradient + ")" } }, [n("animateMotion", { attrs: { dur: e.dur + "s", path: e.pathD, rotate: "auto", repeatCount: "indefinite" } })], 1)])], 1), n("polygon", { attrs: { fill: e.backgroundColor, points: "5, 5 " + (e.width - 5) + ", 5 " + (e.width - 5) + " " + (e.height - 5) + " 5, " + (e.height - 5) } }), n("use", { attrs: { stroke: e.mergedColor[0], "stroke-width": "1", "xlink:href": "#" + e.path } }), n("use", { attrs: { stroke: e.mergedColor[1], "stroke-width": "3", "xlink:href": "#" + e.path, mask: "url(#" + e.mask + ")" } }, [n("animate", { attrs: { attributeName: "stroke-dasharray", from: "0, " + e.length, to: e.length + ", 0", dur: e.dur + "s", repeatCount: "indefinite" } })])]), n("div", { staticClass: "border-box-content" }, [e._t("default")], 2)]) }), rt = [], it = (n("99af"), { name: "DvBorderBox8", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, dur: { type: Number, default: 3 }, backgroundColor: { type: String, default: "transparent" }, reverse: { type: Boolean, default: !1 } }, data: function () { var e = z(); return { ref: "border-box-8", path: "border-box-8-path-".concat(e), gradient: "border-box-8-gradient-".concat(e), mask: "border-box-8-mask-".concat(e), defaultColor: ["#235fa7", "#4fd2dd"], mergedColor: [] } }, computed: { length: function () { var e = this.width, t = this.height; return 2 * (e + t - 5) }, pathD: function () { var e = this.reverse, t = this.width, n = this.height; return e ? "M 2.5, 2.5 L 2.5, ".concat(n - 2.5, " L ").concat(t - 2.5, ", ").concat(n - 2.5, " L ").concat(t - 2.5, ", 2.5 L 2.5, 2.5") : "M2.5, 2.5 L".concat(t - 2.5, ", 2.5 L").concat(t - 2.5, ", ").concat(n - 2.5, " L2.5, ").concat(n - 2.5, " L2.5, 2.5") } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }), ot = it, at = Object(y["a"])(ot, nt, rt, !1, null, null, null), st = at.exports, ct = function (e) { e.component(st.name, st) }, lt = (n("6fc2"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-border-box-9" }, [n("svg", { staticClass: "dv-border-svg-container", attrs: { width: e.width, height: e.height } }, [n("defs", [n("linearGradient", { attrs: { id: e.gradientId, x1: "0%", y1: "0%", x2: "100%", y2: "100%" } }, [n("animate", { attrs: { attributeName: "x1", values: "0%;100%;0%", dur: "10s", begin: "0s", repeatCount: "indefinite" } }), n("animate", { attrs: { attributeName: "x2", values: "100%;0%;100%", dur: "10s", begin: "0s", repeatCount: "indefinite" } }), n("stop", { attrs: { offset: "0%", "stop-color": e.mergedColor[0] } }, [n("animate", { attrs: { attributeName: "stop-color", values: e.mergedColor[0] + ";" + e.mergedColor[1] + ";" + e.mergedColor[0], dur: "10s", begin: "0s", repeatCount: "indefinite" } })]), n("stop", { attrs: { offset: "100%", "stop-color": e.mergedColor[1] } }, [n("animate", { attrs: { attributeName: "stop-color", values: e.mergedColor[1] + ";" + e.mergedColor[0] + ";" + e.mergedColor[1], dur: "10s", begin: "0s", repeatCount: "indefinite" } })])], 1), n("mask", { attrs: { id: e.maskId } }, [n("polyline", { attrs: { stroke: "#fff", "stroke-width": "3", fill: "transparent", points: "8, " + .4 * e.height + " 8, 3, " + (.4 * e.width + 7) + ", 3" } }), n("polyline", { attrs: { fill: "#fff", points: "8, " + .15 * e.height + " 8, 3, " + (.1 * e.width + 7) + ", 3\n            " + .1 * e.width + ", 8 14, 8 14, " + (.15 * e.height - 7) + "\n          " } }), n("polyline", { attrs: { stroke: "#fff", "stroke-width": "3", fill: "transparent", points: .5 * e.width + ", 3 " + (e.width - 3) + ", 3, " + (e.width - 3) + ", " + .25 * e.height } }), n("polyline", { attrs: { fill: "#fff", points: "\n            " + .52 * e.width + ", 3 " + .58 * e.width + ", 3\n            " + (.58 * e.width - 7) + ", 9 " + (.52 * e.width + 7) + ", 9\n          " } }), n("polyline", { attrs: { fill: "#fff", points: "\n            " + .9 * e.width + ", 3 " + (e.width - 3) + ", 3 " + (e.width - 3) + ", " + .1 * e.height + "\n            " + (e.width - 9) + ", " + (.1 * e.height - 7) + " " + (e.width - 9) + ", 9 " + (.9 * e.width + 7) + ", 9\n          " } }), n("polyline", { attrs: { stroke: "#fff", "stroke-width": "3", fill: "transparent", points: "8, " + .5 * e.height + " 8, " + (e.height - 3) + " " + (.3 * e.width + 7) + ", " + (e.height - 3) } }), n("polyline", { attrs: { fill: "#fff", points: "\n            8, " + .55 * e.height + " 8, " + .7 * e.height + "\n            2, " + (.7 * e.height - 7) + " 2, " + (.55 * e.height + 7) + "\n          " } }), n("polyline", { attrs: { stroke: "#fff", "stroke-width": "3", fill: "transparent", points: .35 * e.width + ", " + (e.height - 3) + " " + (e.width - 3) + ", " + (e.height - 3) + " " + (e.width - 3) + ", " + .35 * e.height } }), n("polyline", { attrs: { fill: "#fff", points: "\n            " + .92 * e.width + ", " + (e.height - 3) + " " + (e.width - 3) + ", " + (e.height - 3) + " " + (e.width - 3) + ", " + .8 * e.height + "\n            " + (e.width - 9) + ", " + (.8 * e.height + 7) + " " + (e.width - 9) + ", " + (e.height - 9) + " " + (.92 * e.width + 7) + ", " + (e.height - 9) + "\n          " } })])], 1), n("polygon", { attrs: { fill: e.backgroundColor, points: "\n      15, 9 " + (.1 * e.width + 1) + ", 9 " + (.1 * e.width + 4) + ", 6 " + (.52 * e.width + 2) + ", 6\n      " + (.52 * e.width + 6) + ", 10 " + (.58 * e.width - 7) + ", 10 " + (.58 * e.width - 2) + ", 6\n      " + (.9 * e.width + 2) + ", 6 " + (.9 * e.width + 6) + ", 10 " + (e.width - 10) + ", 10 " + (e.width - 10) + ", " + (.1 * e.height - 6) + "\n      " + (e.width - 6) + ", " + (.1 * e.height - 1) + " " + (e.width - 6) + ", " + (.8 * e.height + 1) + " " + (e.width - 10) + ", " + (.8 * e.height + 6) + "\n      " + (e.width - 10) + ", " + (e.height - 10) + " " + (.92 * e.width + 7) + ", " + (e.height - 10) + "  " + (.92 * e.width + 2) + ", " + (e.height - 6) + "\n      11, " + (e.height - 6) + " 11, " + (.15 * e.height - 2) + " 15, " + (.15 * e.height - 7) + "\n    " } }), n("rect", { attrs: { x: "0", y: "0", width: e.width, height: e.height, fill: "url(#" + e.gradientId + ")", mask: "url(#" + e.maskId + ")" } })]), n("div", { staticClass: "border-box-content" }, [e._t("default")], 2)]) }), ut = [], ht = { name: "DvBorderBox9", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, backgroundColor: { type: String, default: "transparent" } }, data: function () { var e = z(); return { ref: "border-box-9", gradientId: "border-box-9-gradient-".concat(e), maskId: "border-box-9-mask-".concat(e), defaultColor: ["#11eefd", "#0078d2"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, ft = ht, dt = Object(y["a"])(ft, lt, ut, !1, null, null, null), pt = dt.exports, vt = function (e) { e.component(pt.name, pt) }, mt = (n("335d"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "dv-capsule-chart" }, [e.mergedConfig ? [n("div", { staticClass: "label-column" }, [e._l(e.mergedConfig.data, (function (t) { return n("div", { key: t.name }, [e._v(e._s(t.name))]) })), n("div", [e._v("聽")])], 2), n("div", { staticClass: "capsule-container" }, [e._l(e.capsuleLength, (function (t, r) { return n("div", { key: r, staticClass: "capsule-item" }, [n("div", { staticClass: "capsule-item-column", style: "width: " + 100 * t + "%; background-color: " + e.mergedConfig.colors[r % e.mergedConfig.colors.length] + ";" }, [e.mergedConfig.showValue ? n("div", { staticClass: "capsule-item-value" }, [e._v(e._s(e.capsuleValue[r]))]) : e._e()])]) })), n("div", { staticClass: "unit-label" }, e._l(e.labelData, (function (t, r) { return n("div", { key: t + r }, [e._v(e._s(t))]) })), 0)], 2), e.mergedConfig.unit ? n("div", { staticClass: "unit-text" }, [e._v(e._s(e.mergedConfig.unit))]) : e._e()] : e._e()], 2) }), gt = [], yt = (n("a630"), n("3ca3"), n("d3b7"), n("6062"), n("ddb0"), n("cb29"), { name: "DvCapsuleChart", props: { config: { type: Object, default: function () { return {} } } }, data: function () { return { defaultConfig: { data: [], colors: ["#37a2da", "#32c5e9", "#67e0e3", "#9fe6b8", "#ffdb5c", "#ff9f7f", "#fb7293"], unit: "", showValue: !1 }, mergedConfig: null, capsuleLength: [], capsuleValue: [], labelData: [], labelDataLength: [] } }, watch: { config: function () { var e = this.calcData; e() } }, methods: { calcData: function () { var e = this.mergeConfig, t = this.calcCapsuleLengthAndLabelData; e(), t() }, mergeConfig: function () { var e = this.config, t = this.defaultConfig; this.mergedConfig = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || {}) }, calcCapsuleLengthAndLabelData: function () { var e = this.mergedConfig.data; if (e.length) { var t = e.map((function (e) { var t = e.value; return t })), n = Math.max.apply(Math, Object(o["a"])(t)); this.capsuleValue = t, this.capsuleLength = t.map((function (e) { return n ? e / n : 0 })); var r = n / 5, i = Array.from(new Set(new Array(6).fill(0).map((function (e, t) { return Math.ceil(t * r) })))); this.labelData = i, this.labelDataLength = Array.from(i).map((function (e) { return n ? e / n : 0 })) } } }, mounted: function () { var e = this.calcData; e() } }), bt = yt, xt = Object(y["a"])(bt, mt, gt, !1, null, null, null), wt = xt.exports, _t = function (e) { e.component(wt.name, wt) }, Ct = (n("8261"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-charts-container" }, [n("div", { ref: e.chartRef, staticClass: "charts-canvas-container" })]) }), Mt = [], Ot = { name: "DvCharts", mixins: [E], props: { option: { type: Object, default: function () { return {} } } }, data: function () { var e = z(); return { ref: "charts-container-".concat(e), chartRef: "chart-".concat(e), chart: null } }, watch: { option: function () { var e = this.chart, t = this.option; e && (t || (t = {}), e.setOption(t, !0)) } }, methods: { afterAutoResizeMixinInit: function () { var e = this.initChart; e() }, initChart: function () { var e = this.$refs, t = this.chartRef, n = this.option, r = this.chart = new c.a(e[t]); n && r.setOption(n) }, onResize: function () { var e = this.chart; e && e.resize() } } }, kt = Ot, St = Object(y["a"])(kt, Ct, Mt, !1, null, null, null), Tt = St.exports, At = function (e) { e.component(Tt.name, Tt) }, Lt = (n("7ed35"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-conical-column-chart" }, [n("svg", { attrs: { width: e.width, height: e.height } }, e._l(e.column, (function (t, r) { return n("g", { key: r }, [n("path", { attrs: { d: t.d, fill: e.mergedConfig.columnColor } }), n("text", { style: "fontSize:" + e.mergedConfig.fontSize + "px", attrs: { fill: e.mergedConfig.textColor, x: t.x, y: e.height - 4 } }, [e._v(" " + e._s(t.name) + " ")]), e.mergedConfig.img.length ? n("image", { attrs: { "xlink:href": e.mergedConfig.img[r % e.mergedConfig.img.length], width: e.mergedConfig.imgSideLength, height: e.mergedConfig.imgSideLength, x: t.x - e.mergedConfig.imgSideLength / 2, y: t.y - e.mergedConfig.imgSideLength } }) : e._e(), e.mergedConfig.showValue ? n("text", { style: "fontSize:" + e.mergedConfig.fontSize + "px", attrs: { fill: e.mergedConfig.textColor, x: t.x, y: t.textY } }, [e._v(" " + e._s(t.value) + " ")]) : e._e()]) })), 0)]) }), jt = [], zt = (n("4e82"), { name: "DvConicalColumnChart", mixins: [E], props: { config: { type: Object, default: function () { return {} } } }, data: function () { return { ref: "conical-column-chart", defaultConfig: { data: [], img: [], fontSize: 12, imgSideLength: 30, columnColor: "rgba(0, 194, 255, 0.4)", textColor: "#fff", showValue: !1 }, mergedConfig: null, column: [] } }, watch: { config: function () { var e = this.calcData; e() } }, methods: { afterAutoResizeMixinInit: function () { var e = this.calcData; e() }, onResize: function () { var e = this.calcData; e() }, calcData: function () { var e = this.mergeConfig, t = this.initData, n = this.calcSVGPath; e(), t(), n() }, mergeConfig: function () { var e = this.defaultConfig, t = this.config; this.mergedConfig = Object(p["deepMerge"])(Object(v["deepClone"])(e, !0), t || {}) }, initData: function () { var e = this.mergedConfig, t = e.data; t = Object(v["deepClone"])(t, !0), t.sort((function (e, t) { var n = e.value, r = t.value; return n > r ? -1 : n < r ? 1 : n === r ? 0 : void 0 })); var n = t[0] ? t[0].value : 10; t = t.map((function (e) { return Object(a["a"])(Object(a["a"])({}, e), {}, { percent: e.value / n }) })), e.data = t }, calcSVGPath: function () { var e = this.mergedConfig, t = this.width, n = this.height, r = e.imgSideLength, i = e.fontSize, o = e.data, s = o.length, c = t / (s + 1), l = n - r - i - 5, u = n - i - 5; this.column = o.map((function (e, t) { var n = e.percent, r = c * (t + 1), o = c * t, s = c * (t + 2), h = u - l * n, f = l * n * .6 + h, d = "\n          M".concat(o, ", ").concat(u, "\n          Q").concat(r, ", ").concat(f, " ").concat(r, ",").concat(h, "\n          M").concat(r, ",").concat(h, "\n          Q").concat(r, ", ").concat(f, " ").concat(s, ",").concat(u, "\n          L").concat(o, ", ").concat(u, "\n          Z\n        "), p = (u + h) / 2 + i / 2; return Object(a["a"])(Object(a["a"])({}, e), {}, { d: d, x: r, y: h, textY: p }) })) } } }), Et = zt, Pt = Object(y["a"])(Et, Lt, jt, !1, null, null, null), Dt = Pt.exports, Ht = function (e) { e.component(Dt.name, Dt) }, Vt = (n("11b09"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-decoration-1" }, [n("svg", { style: "transform:scale(" + e.svgScale[0] + "," + e.svgScale[1] + ");", attrs: { width: e.svgWH[0] + "px", height: e.svgWH[1] + "px" } }, [e._l(e.points, (function (t, r) { return [Math.random() > .6 ? n("rect", { key: r, attrs: { fill: e.mergedColor[0], x: t[0] - e.halfPointSideLength, y: t[1] - e.halfPointSideLength, width: e.pointSideLength, height: e.pointSideLength } }, [Math.random() > .6 ? n("animate", { attrs: { attributeName: "fill", values: e.mergedColor[0] + ";transparent", dur: "1s", begin: 2 * Math.random(), repeatCount: "indefinite" } }) : e._e()]) : e._e()] })), e.rects[0] ? n("rect", { attrs: { fill: e.mergedColor[1], x: e.rects[0][0] - e.pointSideLength, y: e.rects[0][1] - e.pointSideLength, width: 2 * e.pointSideLength, height: 2 * e.pointSideLength } }, [n("animate", { attrs: { attributeName: "width", values: "0;" + 2 * e.pointSideLength, dur: "2s", repeatCount: "indefinite" } }), n("animate", { attrs: { attributeName: "height", values: "0;" + 2 * e.pointSideLength, dur: "2s", repeatCount: "indefinite" } }), n("animate", { attrs: { attributeName: "x", values: e.rects[0][0] + ";" + (e.rects[0][0] - e.pointSideLength), dur: "2s", repeatCount: "indefinite" } }), n("animate", { attrs: { attributeName: "y", values: e.rects[0][1] + ";" + (e.rects[0][1] - e.pointSideLength), dur: "2s", repeatCount: "indefinite" } })]) : e._e(), e.rects[1] ? n("rect", { attrs: { fill: e.mergedColor[1], x: e.rects[1][0] - 40, y: e.rects[1][1] - e.pointSideLength, width: 40, height: 2 * e.pointSideLength } }, [n("animate", { attrs: { attributeName: "width", values: "0;40;0", dur: "2s", repeatCount: "indefinite" } }), n("animate", { attrs: { attributeName: "x", values: e.rects[1][0] + ";" + (e.rects[1][0] - 40) + ";" + e.rects[1][0], dur: "2s", repeatCount: "indefinite" } })]) : e._e()], 2)]) }), It = [], Nt = { name: "DvDecoration1", mixins: [E], props: { color: { type: Array, default: function () { return [] } } }, data: function () { var e = 2.5; return { ref: "decoration-1", svgWH: [200, 50], svgScale: [1, 1], rowNum: 4, rowPoints: 20, pointSideLength: e, halfPointSideLength: e / 2, points: [], rects: [], defaultColor: ["#fff", "#0de7c2"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { afterAutoResizeMixinInit: function () { var e = this.calcSVGData; e() }, calcSVGData: function () { var e = this.calcPointsPosition, t = this.calcRectsPosition, n = this.calcScale; e(), t(), n() }, calcPointsPosition: function () { var e = this.svgWH, t = this.rowNum, n = this.rowPoints, r = Object(h["a"])(e, 2), i = r[0], a = r[1], s = i / (n + 1), c = a / (t + 1), l = new Array(t).fill(0).map((function (e, t) { return new Array(n).fill(0).map((function (e, n) { return [s * (n + 1), c * (t + 1)] })) })); this.points = l.reduce((function (e, t) { return [].concat(Object(o["a"])(e), Object(o["a"])(t)) }), []) }, calcRectsPosition: function () { var e = this.points, t = this.rowPoints, n = e[2 * t - 1], r = e[2 * t - 3]; this.rects = [n, r] }, calcScale: function () { var e = this.width, t = this.height, n = this.svgWH, r = Object(h["a"])(n, 2), i = r[0], o = r[1]; this.svgScale = [e / i, t / o] }, onResize: function () { var e = this.calcSVGData; e() }, mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, Rt = Nt, Ft = Object(y["a"])(Rt, Vt, It, !1, null, null, null), Yt = Ft.exports, $t = function (e) { e.component(Yt.name, Yt) }, Bt = (n("c423"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-decoration-10" }, [n("svg", { attrs: { width: e.width, height: e.height } }, [n("polyline", { attrs: { stroke: e.mergedColor[1], "stroke-width": "2", points: "0, " + e.height / 2 + " " + e.width + ", " + e.height / 2 } }), n("polyline", { attrs: { stroke: e.mergedColor[0], "stroke-width": "2", points: "5, " + e.height / 2 + " " + (.2 * e.width - 3) + ", " + e.height / 2, "stroke-dasharray": "0, " + .2 * e.width, fill: "freeze" } }, [n("animate", { attrs: { id: e.animationId2, attributeName: "stroke-dasharray", values: "0, " + .2 * e.width + ";" + .2 * e.width + ", 0;", dur: "3s", begin: e.animationId1 + ".end", fill: "freeze" } }), n("animate", { attrs: { attributeName: "stroke-dasharray", values: .2 * e.width + ", 0;0, " + .2 * e.width, dur: "0.01s", begin: e.animationId7 + ".end", fill: "freeze" } })]), n("polyline", { attrs: { stroke: e.mergedColor[0], "stroke-width": "2", points: .2 * e.width + 3 + ", " + e.height / 2 + " " + (.8 * e.width - 3) + ", " + e.height / 2, "stroke-dasharray": "0, " + .6 * e.width } }, [n("animate", { attrs: { id: e.animationId4, attributeName: "stroke-dasharray", values: "0, " + .6 * e.width + ";" + .6 * e.width + ", 0", dur: "3s", begin: e.animationId3 + ".end + 1s", fill: "freeze" } }), n("animate", { attrs: { attributeName: "stroke-dasharray", values: .6 * e.width + ", 0;0, " + .6 * e.width, dur: "0.01s", begin: e.animationId7 + ".end", fill: "freeze" } })]), n("polyline", { attrs: { stroke: e.mergedColor[0], "stroke-width": "2", points: .8 * e.width + 3 + ", " + e.height / 2 + " " + (e.width - 5) + ", " + e.height / 2, "stroke-dasharray": "0, " + .2 * e.width } }, [n("animate", { attrs: { id: e.animationId6, attributeName: "stroke-dasharray", values: "0, " + .2 * e.width + ";" + .2 * e.width + ", 0", dur: "3s", begin: e.animationId5 + ".end + 1s", fill: "freeze" } }), n("animate", { attrs: { attributeName: "stroke-dasharray", values: .2 * e.width + ", 0;0, " + .3 * e.width, dur: "0.01s", begin: e.animationId7 + ".end", fill: "freeze" } })]), n("circle", { attrs: { cx: "2", cy: e.height / 2, r: "2", fill: e.mergedColor[1] } }, [n("animate", { attrs: { id: e.animationId1, attributeName: "fill", values: e.mergedColor[1] + ";" + e.mergedColor[0], begin: "0s;" + e.animationId7 + ".end", dur: "0.3s", fill: "freeze" } })]), n("circle", { attrs: { cx: .2 * e.width, cy: e.height / 2, r: "2", fill: e.mergedColor[1] } }, [n("animate", { attrs: { id: e.animationId3, attributeName: "fill", values: e.mergedColor[1] + ";" + e.mergedColor[0], begin: e.animationId2 + ".end", dur: "0.3s", fill: "freeze" } }), n("animate", { attrs: { attributeName: "fill", values: e.mergedColor[1] + ";" + e.mergedColor[1], dur: "0.01s", begin: e.animationId7 + ".end", fill: "freeze" } })]), n("circle", { attrs: { cx: .8 * e.width, cy: e.height / 2, r: "2", fill: e.mergedColor[1] } }, [n("animate", { attrs: { id: e.animationId5, attributeName: "fill", values: e.mergedColor[1] + ";" + e.mergedColor[0], begin: e.animationId4 + ".end", dur: "0.3s", fill: "freeze" } }), n("animate", { attrs: { attributeName: "fill", values: e.mergedColor[1] + ";" + e.mergedColor[1], dur: "0.01s", begin: e.animationId7 + ".end", fill: "freeze" } })]), n("circle", { attrs: { cx: e.width - 2, cy: e.height / 2, r: "2", fill: e.mergedColor[1] } }, [n("animate", { attrs: { id: e.animationId7, attributeName: "fill", values: e.mergedColor[1] + ";" + e.mergedColor[0], begin: e.animationId6 + ".end", dur: "0.3s", fill: "freeze" } }), n("animate", { attrs: { attributeName: "fill", values: e.mergedColor[1] + ";" + e.mergedColor[1], dur: "0.01s", begin: e.animationId7 + ".end", fill: "freeze" } })])])]) }), Wt = [], qt = { name: "DvDecoration10", mixins: [E], props: { color: { type: Array, default: function () { return [] } } }, data: function () { var e = z(); return { ref: "decoration-10", animationId1: "d10ani1".concat(e), animationId2: "d10ani2".concat(e), animationId3: "d10ani3".concat(e), animationId4: "d10ani4".concat(e), animationId5: "d10ani5".concat(e), animationId6: "d10ani6".concat(e), animationId7: "d10ani7".concat(e), defaultColor: ["#00c2ff", "rgba(0, 194, 255, 0.3)"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, Ut = qt, Kt = Object(y["a"])(Ut, Bt, Wt, !1, null, null, null), Gt = Kt.exports, Xt = function (e) { e.component(Gt.name, Gt) }, Jt = (n("3e8a"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-decoration-11" }, [n("svg", { attrs: { width: e.width, height: e.height } }, [n("polygon", { attrs: { fill: e.fade(e.mergedColor[1] || e.defaultColor[1], 10), stroke: e.mergedColor[1], points: "20 10, 25 4, 55 4 60 10" } }), n("polygon", { attrs: { fill: e.fade(e.mergedColor[1] || e.defaultColor[1], 10), stroke: e.mergedColor[1], points: "20 " + (e.height - 10) + ", 25 " + (e.height - 4) + ", 55 " + (e.height - 4) + " 60 " + (e.height - 10) } }), n("polygon", { attrs: { fill: e.fade(e.mergedColor[1] || e.defaultColor[1], 10), stroke: e.mergedColor[1], points: e.width - 20 + " 10, " + (e.width - 25) + " 4, " + (e.width - 55) + " 4 " + (e.width - 60) + " 10" } }), n("polygon", { attrs: { fill: e.fade(e.mergedColor[1] || e.defaultColor[1], 10), stroke: e.mergedColor[1], points: e.width - 20 + " " + (e.height - 10) + ", " + (e.width - 25) + " " + (e.height - 4) + ", " + (e.width - 55) + " " + (e.height - 4) + " " + (e.width - 60) + " " + (e.height - 10) } }), n("polygon", { attrs: { fill: e.fade(e.mergedColor[0] || e.defaultColor[0], 20), stroke: e.mergedColor[0], points: "\n        20 10, 5 " + e.height / 2 + " 20 " + (e.height - 10) + "\n        " + (e.width - 20) + " " + (e.height - 10) + " " + (e.width - 5) + " " + e.height / 2 + " " + (e.width - 20) + " 10\n      " } }), n("polyline", { attrs: { fill: "transparent", stroke: e.fade(e.mergedColor[0] || e.defaultColor[0], 70), points: "25 18, 15 " + e.height / 2 + " 25 " + (e.height - 18) } }), n("polyline", { attrs: { fill: "transparent", stroke: e.fade(e.mergedColor[0] || e.defaultColor[0], 70), points: e.width - 25 + " 18, " + (e.width - 15) + " " + e.height / 2 + " " + (e.width - 25) + " " + (e.height - 18) } })]), n("div", { staticClass: "decoration-content" }, [e._t("default")], 2)]) }), Qt = [], Zt = { name: "DvDecoration11", mixins: [E], props: { color: { type: Array, default: function () { return [] } } }, data: function () { return { ref: "decoration-11", defaultColor: ["#1a98fc", "#2cf7fe"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) }, fade: K["fade"] }, mounted: function () { var e = this.mergeColor; e() } }, en = Zt, tn = Object(y["a"])(en, Jt, Qt, !1, null, null, null), nn = tn.exports, rn = function (e) { e.component(nn.name, nn) }, on = (n("e11f"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-decoration-12" }, [n("svg", { attrs: { width: e.width, height: e.height } }, [n("defs", [n("g", { attrs: { id: e.gId } }, e._l(e.pathD, (function (t, r) { return n("path", { key: t, attrs: { stroke: e.pathColor[r], "stroke-width": e.width / 2, fill: "transparent", d: t } }) })), 0), n("radialGradient", { attrs: { id: e.gradientId, cx: "50%", cy: "50%", r: "50%" } }, [n("stop", { attrs: { offset: "0%", "stop-color": "transparent", "stop-opacity": "1" } }), n("stop", { attrs: { offset: "100%", "stop-color": e.fade(e.mergedColor[1] || e.defaultColor[1], 30), "stop-opacity": "1" } })], 1)], 1), e._l(e.circleR, (function (t) { return n("circle", { key: t, attrs: { r: t, cx: e.x, cy: e.y, stroke: e.mergedColor[1], "stroke-width": .5, fill: "transparent" } }) })), n("circle", { attrs: { r: "1", cx: e.x, cy: e.y, stroke: "transparent", fill: "url(#" + e.gradientId + ")" } }, [n("animate", { attrs: { attributeName: "r", values: "1;" + e.width / 2, dur: e.haloDur + "s", repeatCount: "indefinite" } }), n("animate", { attrs: { attributeName: "opacity", values: "1;0", dur: e.haloDur + "s", repeatCount: "indefinite" } })]), n("circle", { attrs: { r: "2", cx: e.x, cy: e.y, fill: e.mergedColor[1] } }), e.showSplitLine ? n("g", e._l(e.splitLinePoints, (function (t) { return n("polyline", { key: t, attrs: { points: t, stroke: e.mergedColor[1], "stroke-width": .5, opacity: "0.5" } }) })), 0) : e._e(), e._l(e.arcD, (function (t) { return n("path", { key: t, attrs: { d: t, stroke: e.mergedColor[1], "stroke-width": "2", fill: "transparent" } }) })), n("use", { attrs: { "xlink:href": "#" + e.gId } }, [n("animateTransform", { attrs: { attributeName: "transform", type: "rotate", values: "0, " + e.x + " " + e.y + ";360, " + e.x + " " + e.y, dur: e.scanDur + "s", repeatCount: "indefinite" } })], 1)], 2), n("div", { staticClass: "decoration-content" }, [e._t("default")], 2)]) }), an = [], sn = (n("a15b"), { name: "DvDecoration12", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, scanDur: { type: Number, default: 3 }, haloDur: { type: Number, default: 2 } }, data: function () { var e = z(); return { ref: "decoration-12", gId: "decoration-12-g-".concat(e), gradientId: "decoration-12-gradient-".concat(e), defaultColor: ["#2783ce", "#2cf7fe"], mergedColor: [], pathD: [], pathColor: [], circleR: [], splitLinePoints: [], arcD: [], segment: 30, sectorAngle: Math.PI / 3, ringNum: 3, ringWidth: 1, showSplitLine: !0 } }, watch: { color: function () { var e = this.mergeColor; e() } }, computed: { x: function () { var e = this.width; return e / 2 }, y: function () { var e = this.height; return e / 2 } }, methods: { init: function () { var e = this.mergeColor, t = this.calcPathD, n = this.calcPathColor, r = this.calcCircleR, i = this.calcSplitLinePoints, o = this.calcArcD; e(), t(), n(), r(), i(), o() }, mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) }, calcPathD: function () { var e = this.x, t = this.y, n = this.width, r = this.segment, i = this.sectorAngle, o = -Math.PI / 2, a = i / r, s = n / 4, c = Object(v["getCircleRadianPoint"])(e, t, s, o); this.pathD = new Array(r).fill("").map((function (n, r) { var i = Object(v["getCircleRadianPoint"])(e, t, s, o - (r + 1) * a).map((function (e) { return e.toFixed(5) })), l = "M".concat(c.join(","), " A").concat(s, ", ").concat(s, " 0 0 0 ").concat(i.join(",")); return c = i, l })) }, calcPathColor: function () { var e = Object(h["a"])(this.mergedColor, 1), t = e[0], n = this.segment, r = 100 / (n - 1); this.pathColor = new Array(n).fill(t).map((function (e, n) { return Object(K["fade"])(t, 100 - n * r) })) }, calcCircleR: function () { this.segment; var e = this.ringNum, t = this.width, n = this.ringWidth, r = (t / 2 - n / 2) / e; this.circleR = new Array(e).fill(0).map((function (e, t) { return r * (t + 1) })) }, calcSplitLinePoints: function () { var e = this.x, t = this.y, n = this.width, r = Math.PI / 6, i = n / 2; this.splitLinePoints = new Array(6).fill("").map((function (n, o) { var a = r * (o + 1), s = a + Math.PI, c = Object(v["getCircleRadianPoint"])(e, t, i, a), l = Object(v["getCircleRadianPoint"])(e, t, i, s); return "".concat(c.join(","), " ").concat(l.join(",")) })) }, calcArcD: function () { var e = this.x, t = this.y, n = this.width, r = Math.PI / 6, i = n / 2 - 1; this.arcD = new Array(4).fill("").map((function (n, o) { var a = r * (3 * o + 1), s = a + r, c = Object(v["getCircleRadianPoint"])(e, t, i, a), l = Object(v["getCircleRadianPoint"])(e, t, i, s); return "M".concat(c.join(","), " A").concat(e, ", ").concat(t, " 0 0 1 ").concat(l.join(",")) })) }, afterAutoResizeMixinInit: function () { var e = this.init; e() }, fade: K["fade"] } }), cn = sn, ln = Object(y["a"])(cn, on, an, !1, null, null, null), un = ln.exports, hn = function (e) { e.component(un.name, un) }, fn = (n("9b06"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-decoration-2" }, [n("svg", { attrs: { width: e.width + "px", height: e.height + "px" } }, [n("rect", { attrs: { x: e.x, y: e.y, width: e.w, height: e.h, fill: e.mergedColor[0] } }, [n("animate", { attrs: { attributeName: e.reverse ? "height" : "width", from: "0", to: e.reverse ? e.height : e.width, dur: e.dur + "s", calcMode: "spline", keyTimes: "0;1", keySplines: ".42,0,.58,1", repeatCount: "indefinite" } })]), n("rect", { attrs: { x: e.x, y: e.y, width: "1", height: "1", fill: e.mergedColor[1] } }, [n("animate", { attrs: { attributeName: e.reverse ? "y" : "x", from: "0", to: e.reverse ? e.height : e.width, dur: e.dur + "s", calcMode: "spline", keyTimes: "0;1", keySplines: "0.42,0,0.58,1", repeatCount: "indefinite" } })])])]) }), dn = [], pn = { name: "DvDecoration2", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, reverse: { type: Boolean, default: !1 }, dur: { type: Number, default: 6 } }, data: function () { return { ref: "decoration-2", x: 0, y: 0, w: 0, h: 0, defaultColor: ["#3faacb", "#fff"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() }, reverse: function () { var e = this.calcSVGData; e() } }, methods: { afterAutoResizeMixinInit: function () { var e = this.calcSVGData; e() }, calcSVGData: function () { var e = this.reverse, t = this.width, n = this.height; e ? (this.w = 1, this.h = n, this.x = t / 2, this.y = 0) : (this.w = t, this.h = 1, this.x = 0, this.y = n / 2) }, onResize: function () { var e = this.calcSVGData; e() }, mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, vn = pn, mn = Object(y["a"])(vn, fn, dn, !1, null, null, null), gn = mn.exports, yn = function (e) { e.component(gn.name, gn) }, bn = (n("5e07"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-decoration-3" }, [n("svg", { style: "transform:scale(" + e.svgScale[0] + "," + e.svgScale[1] + ");", attrs: { width: e.svgWH[0] + "px", height: e.svgWH[1] + "px" } }, [e._l(e.points, (function (t, r) { return [n("rect", { key: r, attrs: { fill: e.mergedColor[0], x: t[0] - e.halfPointSideLength, y: t[1] - e.halfPointSideLength, width: e.pointSideLength, height: e.pointSideLength } }, [Math.random() > .6 ? n("animate", { attrs: { attributeName: "fill", values: "" + e.mergedColor.join(";"), dur: Math.random() + 1 + "s", begin: 2 * Math.random(), repeatCount: "indefinite" } }) : e._e()])] }))], 2)]) }), xn = [], wn = { name: "DvDecoration3", mixins: [E], props: { color: { type: Array, default: function () { return [] } } }, data: function () { var e = 7; return { ref: "decoration-3", svgWH: [300, 35], svgScale: [1, 1], rowNum: 2, rowPoints: 25, pointSideLength: e, halfPointSideLength: e / 2, points: [], defaultColor: ["#7acaec", "transparent"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { afterAutoResizeMixinInit: function () { var e = this.calcSVGData; e() }, calcSVGData: function () { var e = this.calcPointsPosition, t = this.calcScale; e(), t() }, calcPointsPosition: function () { var e = this.svgWH, t = this.rowNum, n = this.rowPoints, r = Object(h["a"])(e, 2), i = r[0], a = r[1], s = i / (n + 1), c = a / (t + 1), l = new Array(t).fill(0).map((function (e, t) { return new Array(n).fill(0).map((function (e, n) { return [s * (n + 1), c * (t + 1)] })) })); this.points = l.reduce((function (e, t) { return [].concat(Object(o["a"])(e), Object(o["a"])(t)) }), []) }, calcScale: function () { var e = this.width, t = this.height, n = this.svgWH, r = Object(h["a"])(n, 2), i = r[0], o = r[1]; this.svgScale = [e / i, t / o] }, onResize: function () { var e = this.calcSVGData; e() }, mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, _n = wn, Cn = Object(y["a"])(_n, bn, xn, !1, null, null, null), Mn = Cn.exports, On = function (e) { e.component(Mn.name, Mn) }, kn = (n("c2ca"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-decoration-4" }, [n("div", { class: "container " + (e.reverse ? "reverse" : "normal"), style: e.reverse ? "width:" + e.width + "px;height:5px;animation-duration:" + e.dur + "s" : "width:5px;height:" + e.height + "px;animation-duration:" + e.dur + "s" }, [n("svg", { attrs: { width: e.reverse ? e.width : 5, height: e.reverse ? 5 : e.height } }, [n("polyline", { attrs: { stroke: e.mergedColor[0], points: e.reverse ? "0, 2.5 " + e.width + ", 2.5" : "2.5, 0 2.5, " + e.height } }), n("polyline", { staticClass: "bold-line", attrs: { stroke: e.mergedColor[1], "stroke-width": "3", "stroke-dasharray": "20, 80", "stroke-dashoffset": "-30", points: e.reverse ? "0, 2.5 " + e.width + ", 2.5" : "2.5, 0 2.5, " + e.height } })])])]) }), Sn = [], Tn = { name: "DvDecoration4", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, reverse: { type: Boolean, default: !1 }, dur: { type: Number, default: 3 } }, data: function () { return { ref: "decoration-4", defaultColor: ["rgba(255, 255, 255, 0.3)", "rgba(255, 255, 255, 0.3)"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, An = Tn, Ln = Object(y["a"])(An, kn, Sn, !1, null, null, null), jn = Ln.exports, zn = function (e) { e.component(jn.name, jn) }, En = (n("2848"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-decoration-5" }, [n("svg", { attrs: { width: e.width, height: e.height } }, [n("polyline", { attrs: { fill: "transparent", stroke: e.mergedColor[0], "stroke-width": "3", points: e.line1Points } }, [n("animate", { attrs: { attributeName: "stroke-dasharray", attributeType: "XML", from: "0, " + e.line1Length / 2 + ", 0, " + e.line1Length / 2, to: "0, 0, " + e.line1Length + ", 0", dur: e.dur + "s", begin: "0s", calcMode: "spline", keyTimes: "0;1", keySplines: "0.4,1,0.49,0.98", repeatCount: "indefinite" } })]), n("polyline", { attrs: { fill: "transparent", stroke: e.mergedColor[1], "stroke-width": "2", points: e.line2Points } }, [n("animate", { attrs: { attributeName: "stroke-dasharray", attributeType: "XML", from: "0, " + e.line2Length / 2 + ", 0, " + e.line2Length / 2, to: "0, 0, " + e.line2Length + ", 0", dur: e.dur + "s", begin: "0s", calcMode: "spline", keyTimes: "0;1", keySplines: ".4,1,.49,.98", repeatCount: "indefinite" } })])])]) }), Pn = [], Dn = { name: "DvDecoration5", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, dur: { type: Number, default: 1.2 } }, data: function () { return { ref: "decoration-5", line1Points: "", line2Points: "", line1Length: 0, line2Length: 0, defaultColor: ["#3f96a5", "#3f96a5"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { afterAutoResizeMixinInit: function () { var e = this.calcSVGData; e() }, calcSVGData: function () { var e = this.width, t = this.height, n = [[0, .2 * t], [.18 * e, .2 * t], [.2 * e, .4 * t], [.25 * e, .4 * t], [.27 * e, .6 * t], [.72 * e, .6 * t], [.75 * e, .4 * t], [.8 * e, .4 * t], [.82 * e, .2 * t], [e, .2 * t]], r = [[.3 * e, .8 * t], [.7 * e, .8 * t]], i = Object(p["getPolylineLength"])(n), o = Object(p["getPolylineLength"])(r); n = n.map((function (e) { return e.join(",") })).join(" "), r = r.map((function (e) { return e.join(",") })).join(" "), this.line1Points = n, this.line2Points = r, this.line1Length = i, this.line2Length = o }, onResize: function () { var e = this.calcSVGData; e() }, mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, Hn = Dn, Vn = Object(y["a"])(Hn, En, Pn, !1, null, null, null), In = Vn.exports, Nn = function (e) { e.component(In.name, In) }, Rn = (n("c7c8"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-decoration-6" }, [n("svg", { style: "transform:scale(" + e.svgScale[0] + "," + e.svgScale[1] + ");", attrs: { width: e.svgWH[0] + "px", height: e.svgWH[1] + "px" } }, [e._l(e.points, (function (t, r) { return [n("rect", { key: r, attrs: { fill: e.mergedColor[Math.random() > .5 ? 0 : 1], x: t[0] - e.halfRectWidth, y: t[1] - e.heights[r] / 2, width: e.rectWidth, height: e.heights[r] } }, [n("animate", { attrs: { attributeName: "y", values: t[1] - e.minHeights[r] / 2 + ";" + (t[1] - e.heights[r] / 2) + ";" + (t[1] - e.minHeights[r] / 2), dur: e.randoms[r] + "s", keyTimes: "0;0.5;1", calcMode: "spline", keySplines: "0.42,0,0.58,1;0.42,0,0.58,1", begin: "0s", repeatCount: "indefinite" } }), n("animate", { attrs: { attributeName: "height", values: e.minHeights[r] + ";" + e.heights[r] + ";" + e.minHeights[r], dur: e.randoms[r] + "s", keyTimes: "0;0.5;1", calcMode: "spline", keySplines: "0.42,0,0.58,1;0.42,0,0.58,1", begin: "0s", repeatCount: "indefinite" } })])] }))], 2)]) }), Fn = [], Yn = { name: "DvDecoration6", mixins: [E], props: { color: { type: Array, default: function () { return [] } } }, data: function () { var e = 7; return { ref: "decoration-6", svgWH: [300, 35], svgScale: [1, 1], rowNum: 1, rowPoints: 40, rectWidth: e, halfRectWidth: e / 2, points: [], heights: [], minHeights: [], randoms: [], defaultColor: ["#7acaec", "#7acaec"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { afterAutoResizeMixinInit: function () { var e = this.calcSVGData; e() }, calcSVGData: function () { var e = this.calcPointsPosition, t = this.calcScale; e(), t() }, calcPointsPosition: function () { var e = this.svgWH, t = this.rowNum, n = this.rowPoints, r = Object(h["a"])(e, 2), i = r[0], a = r[1], s = i / (n + 1), c = a / (t + 1), l = new Array(t).fill(0).map((function (e, t) { return new Array(n).fill(0).map((function (e, n) { return [s * (n + 1), c * (t + 1)] })) })); this.points = l.reduce((function (e, t) { return [].concat(Object(o["a"])(e), Object(o["a"])(t)) }), []); var u = this.heights = new Array(t * n).fill(0).map((function (e) { return Math.random() > .8 ? T(.7 * a, a) : T(.2 * a, .5 * a) })); this.minHeights = new Array(t * n).fill(0).map((function (e, t) { return u[t] * Math.random() })), this.randoms = new Array(t * n).fill(0).map((function (e) { return Math.random() + 1.5 })) }, calcScale: function () { var e = this.width, t = this.height, n = this.svgWH, r = Object(h["a"])(n, 2), i = r[0], o = r[1]; this.svgScale = [e / i, t / o] }, onResize: function () { var e = this.calcSVGData; e() }, mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, $n = Yn, Bn = Object(y["a"])($n, Rn, Fn, !1, null, null, null), Wn = Bn.exports, qn = function (e) { e.component(Wn.name, Wn) }, Un = (n("d51d"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "dv-decoration-7" }, [n("svg", { attrs: { width: "21px", height: "20px" } }, [n("polyline", { attrs: { "stroke-width": "4", fill: "transparent", stroke: e.mergedColor[0], points: "10, 0 19, 10 10, 20" } }), n("polyline", { attrs: { "stroke-width": "2", fill: "transparent", stroke: e.mergedColor[1], points: "2, 0 11, 10 2, 20" } })]), e._t("default"), n("svg", { attrs: { width: "21px", height: "20px" } }, [n("polyline", { attrs: { "stroke-width": "4", fill: "transparent", stroke: e.mergedColor[0], points: "11, 0 2, 10 11, 20" } }), n("polyline", { attrs: { "stroke-width": "2", fill: "transparent", stroke: e.mergedColor[1], points: "19, 0 10, 10 19, 20" } })])], 2) }), Kn = [], Gn = { name: "DvDecoration7", props: { color: { type: Array, default: function () { return [] } } }, data: function () { return { defaultColor: ["#1dc1f5", "#1dc1f5"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, Xn = Gn, Jn = Object(y["a"])(Xn, Un, Kn, !1, null, null, null), Qn = Jn.exports, Zn = function (e) { e.component(Qn.name, Qn) }, er = (n("357d"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-decoration-8" }, [n("svg", { attrs: { width: e.width, height: e.height } }, [n("polyline", { attrs: { stroke: e.mergedColor[0], "stroke-width": "2", fill: "transparent", points: e.xPos(0) + ", 0 " + e.xPos(30) + ", " + e.height / 2 } }), n("polyline", { attrs: { stroke: e.mergedColor[0], "stroke-width": "2", fill: "transparent", points: e.xPos(20) + ", 0 " + e.xPos(50) + ", " + e.height / 2 + " " + e.xPos(e.width) + ", " + e.height / 2 } }), n("polyline", { attrs: { stroke: e.mergedColor[1], fill: "transparent", "stroke-width": "3", points: e.xPos(0) + ", " + (e.height - 3) + ", " + e.xPos(200) + ", " + (e.height - 3) } })])]) }), tr = [], nr = { name: "DvDecoration8", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, reverse: { type: Boolean, default: !1 } }, data: function () { return { ref: "decoration-8", defaultColor: ["#3f96a5", "#3f96a5"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { xPos: function (e) { var t = this.reverse, n = this.width; return t ? n - e : e }, mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) } }, mounted: function () { var e = this.mergeColor; e() } }, rr = nr, ir = Object(y["a"])(rr, er, tr, !1, null, null, null), or = ir.exports, ar = function (e) { e.component(or.name, or) }, sr = (n("9ab4"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-decoration-9" }, [n("svg", { style: "transform:scale(" + e.svgScale[0] + "," + e.svgScale[1] + ");", attrs: { width: e.svgWH[0] + "px", height: e.svgWH[1] + "px" } }, [n("defs", [n("polygon", { attrs: { id: e.polygonId, points: "15, 46.5, 21, 47.5, 21, 52.5, 15, 53.5" } })]), n("circle", { attrs: { cx: "50", cy: "50", r: "45", fill: "transparent", stroke: e.mergedColor[1], "stroke-width": "10", "stroke-dasharray": "80, 100, 30, 100" } }, [n("animateTransform", { attrs: { attributeName: "transform", type: "rotate", values: "0 50 50;360 50 50", dur: e.dur + "s", repeatCount: "indefinite" } })], 1), n("circle", { attrs: { cx: "50", cy: "50", r: "45", fill: "transparent", stroke: e.mergedColor[0], "stroke-width": "6", "stroke-dasharray": "50, 66, 100, 66" } }, [n("animateTransform", { attrs: { attributeName: "transform", type: "rotate", values: "0 50 50;-360 50 50", dur: e.dur + "s", repeatCount: "indefinite" } })], 1), n("circle", { attrs: { cx: "50", cy: "50", r: "38", fill: "transparent", stroke: e.fade(e.mergedColor[1] || e.defaultColor[1], 30), "stroke-width": "1", "stroke-dasharray": "5, 1" } }), e._l(new Array(20).fill(0), (function (t, r) { return n("use", { key: r, attrs: { "xlink:href": "#" + e.polygonId, stroke: e.mergedColor[1], fill: Math.random() > .4 ? "transparent" : e.mergedColor[0] } }, [n("animateTransform", { attrs: { attributeName: "transform", type: "rotate", values: "0 50 50;360 50 50", dur: e.dur + "s", begin: r * e.dur / 20 + "s", repeatCount: "indefinite" } })], 1) })), n("circle", { attrs: { cx: "50", cy: "50", r: "26", fill: "transparent", stroke: e.fade(e.mergedColor[1] || e.defaultColor[1], 30), "stroke-width": "1", "stroke-dasharray": "5, 1" } })], 2), e._t("default")], 2) }), cr = [], lr = { name: "DvDecoration9", mixins: [E], props: { color: { type: Array, default: function () { return [] } }, dur: { type: Number, default: 3 } }, data: function () { var e = z(); return { ref: "decoration-9", polygonId: "decoration-9-polygon-".concat(e), svgWH: [100, 100], svgScale: [1, 1], defaultColor: ["rgba(3, 166, 224, 0.8)", "rgba(3, 166, 224, 0.5)"], mergedColor: [] } }, watch: { color: function () { var e = this.mergeColor; e() } }, methods: { afterAutoResizeMixinInit: function () { var e = this.calcScale; e() }, calcScale: function () { var e = this.width, t = this.height, n = this.svgWH, r = Object(h["a"])(n, 2), i = r[0], o = r[1]; this.svgScale = [e / i, t / o] }, onResize: function () { var e = this.calcScale; e() }, mergeColor: function () { var e = this.color, t = this.defaultColor; this.mergedColor = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || []) }, fade: K["fade"] }, mounted: function () { var e = this.mergeColor; e() } }, ur = lr, hr = Object(y["a"])(ur, sr, cr, !1, null, null, null), fr = hr.exports, dr = function (e) { e.component(fr.name, fr) }, pr = (n("bc96"), function (e) { e.component(x.name, x) }), vr = (n("41f6"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: "dv-flyline-chart", staticClass: "dv-flyline-chart", style: "background-image: url(" + (e.mergedConfig ? e.mergedConfig.bgImgUrl : "") + ")", on: { click: e.consoleClickPos } }, [e.mergedConfig ? n("svg", { attrs: { width: e.width, height: e.height } }, [n("defs", [n("radialGradient", { attrs: { id: e.gradientId, cx: "50%", cy: "50%", r: "50%" } }, [n("stop", { attrs: { offset: "0%", "stop-color": "#fff", "stop-opacity": "1" } }), n("stop", { attrs: { offset: "100%", "stop-color": "#fff", "stop-opacity": "0" } })], 1), n("radialGradient", { attrs: { id: e.gradient2Id, cx: "50%", cy: "50%", r: "50%" } }, [n("stop", { attrs: { offset: "0%", "stop-color": "#fff", "stop-opacity": "0" } }), n("stop", { attrs: { offset: "100%", "stop-color": "#fff", "stop-opacity": "1" } })], 1), e.paths[0] ? n("circle", { attrs: { id: "circle" + e.paths[0].toString(), cx: e.paths[0][2][0], cy: e.paths[0][2][1] } }, [n("animate", { attrs: { attributeName: "r", values: "1;" + e.mergedConfig.halo.radius, dur: e.mergedConfig.halo.duration / 10 + "s", repeatCount: "indefinite" } }), n("animate", { attrs: { attributeName: "opacity", values: "1;0", dur: e.mergedConfig.halo.duration / 10 + "s", repeatCount: "indefinite" } })]) : e._e()], 1), e.paths[0] ? n("image", { attrs: { "xlink:href": e.mergedConfig.centerPointImg.url, width: e.mergedConfig.centerPointImg.width, height: e.mergedConfig.centerPointImg.height, x: e.paths[0][2][0] - e.mergedConfig.centerPointImg.width / 2, y: e.paths[0][2][1] - e.mergedConfig.centerPointImg.height / 2 } }) : e._e(), n("mask", { attrs: { id: "maskhalo" + e.paths[0].toString() } }, [e.paths[0] ? n("use", { attrs: { "xlink:href": "#circle" + e.paths[0].toString(), fill: "url(#" + e.gradient2Id + ")" } }) : e._e()]), e.paths[0] && e.mergedConfig.halo.show ? n("use", { attrs: { "xlink:href": "#circle" + e.paths[0].toString(), fill: e.mergedConfig.halo.color, mask: "url(#maskhalo" + e.paths[0].toString() + ")" } }) : e._e(), e._l(e.paths, (function (t, r) { return n("g", { key: r }, [n("defs", [n("path", { ref: "path" + r, refInFor: !0, attrs: { id: "path" + t.toString(), d: "M" + t[0].toString() + " Q" + t[1].toString() + " " + t[2].toString(), fill: "transparent" } })]), n("use", { attrs: { "xlink:href": "#path" + t.toString(), "stroke-width": e.mergedConfig.lineWidth, stroke: e.mergedConfig.orbitColor } }), e.lengths[r] ? n("use", { attrs: { "xlink:href": "#path" + t.toString(), "stroke-width": e.mergedConfig.lineWidth, stroke: e.mergedConfig.flylineColor, mask: "url(#mask" + e.unique + t.toString() + ")" } }, [n("animate", { attrs: { attributeName: "stroke-dasharray", from: "0, " + e.lengths[r], to: e.lengths[r] + ", 0", dur: e.times[r] || 0, repeatCount: "indefinite" } })]) : e._e(), n("mask", { attrs: { id: "mask" + e.unique + t.toString() } }, [n("circle", { attrs: { cx: "0", cy: "0", r: e.mergedConfig.flylineRadius, fill: "url(#" + e.gradientId + ")" } }, [n("animateMotion", { attrs: { dur: e.times[r] || 0, path: "M" + t[0].toString() + " Q" + t[1].toString() + " " + t[2].toString(), rotate: "auto", repeatCount: "indefinite" } })], 1)]), n("image", { attrs: { "xlink:href": e.mergedConfig.pointsImg.url, width: e.mergedConfig.pointsImg.width, height: e.mergedConfig.pointsImg.height, x: t[0][0] - e.mergedConfig.pointsImg.width / 2, y: t[0][1] - e.mergedConfig.pointsImg.height / 2 } }), n("text", { style: "fontSize:" + e.mergedConfig.text.fontSize + "px;", attrs: { fill: e.mergedConfig.text.color, x: t[0][0] + e.mergedConfig.text.offset[0], y: t[0][1] + e.mergedConfig.text.offset[1] } }, [e._v(" " + e._s(e.texts[r]) + " ")])]) }))], 2) : e._e()]) }), mr = [], gr = n("1da1"), yr = (n("96cf"), { name: "DvFlylineChart", mixins: [E], props: { config: { type: Object, default: function () { return {} } }, dev: { type: Boolean, default: !1 } }, data: function () { var e = z(); return { ref: "dv-flyline-chart", unique: Math.random(), maskId: "flyline-mask-id-".concat(e), maskCircleId: "mask-circle-id-".concat(e), gradientId: "gradient-id-".concat(e), gradient2Id: "gradient2-id-".concat(e), defaultConfig: { centerPoint: [0, 0], points: [], lineWidth: 1, orbitColor: "rgba(103, 224, 227, .2)", flylineColor: "#ffde93", k: -.5, curvature: 5, flylineRadius: 100, duration: [20, 30], relative: !0, bgImgUrl: "", text: { offset: [0, 15], color: "#ffdb5c", fontSize: 12 }, halo: { show: !0, duration: 30, color: "#fb7293", radius: 120 }, centerPointImg: { width: 40, height: 40, url: "" }, pointsImg: { width: 15, height: 15, url: "" } }, mergedConfig: null, paths: [], lengths: [], times: [], texts: [] } }, watch: { config: function () { var e = this.calcData; e() } }, methods: { afterAutoResizeMixinInit: function () { var e = this.calcData; e() }, onResize: function () { var e = this.calcData; e() }, calcData: function () { var e = this; return Object(gr["a"])(regeneratorRuntime.mark((function t() { var n, r, i, o, a; return regeneratorRuntime.wrap((function (t) { while (1) switch (t.prev = t.next) { case 0: return n = e.mergeConfig, r = e.createFlylinePaths, i = e.calcLineLengths, n(), r(), t.next = 5, i(); case 5: o = e.calcTimes, a = e.calcTexts, o(), a(); case 8: case "end": return t.stop() } }), t) })))() }, mergeConfig: function () { var e = this.config, t = this.defaultConfig, n = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || {}), r = n.points; n.points = r.map((function (e) { return e instanceof Array ? { position: e, text: "" } : e })), this.mergedConfig = n }, createFlylinePaths: function () { var e = this.getPath, t = this.mergedConfig, n = this.width, r = this.height, i = t.centerPoint, o = t.points, a = t.relative; o = o.map((function (e) { var t = e.position; return t })), a && (i = [n * i[0], r * i[1]], o = o.map((function (e) { var t = Object(h["a"])(e, 2), i = t[0], o = t[1]; return [n * i, r * o] }))), this.paths = o.map((function (t) { return e(i, t) })) }, getPath: function (e, t) { var n = this.getControlPoint, r = n(e, t); return [t, r, e] }, getControlPoint: function (e, t) { var n = Object(h["a"])(e, 2), r = n[0], i = n[1], o = Object(h["a"])(t, 2), a = o[0], s = o[1], c = this.getKLinePointByx, l = this.mergedConfig, u = l.curvature, f = l.k, d = (r + a) / 2, p = (i + s) / 2, v = j([r, i], [a, s]), m = v / u, g = m / 2, y = d, b = p; do { y += g, b = c(f, [d, p], y)[1] } while (j([d, p], [y, b]) < m); return [y, b] }, getKLinePointByx: function (e, t, n) { var r = Object(h["a"])(t, 2), i = r[0], o = r[1], a = o - e * i + e * n; return [n, a] }, calcLineLengths: function () { var e = this; return Object(gr["a"])(regeneratorRuntime.mark((function t() { var n, r, i; return regeneratorRuntime.wrap((function (t) { while (1) switch (t.prev = t.next) { case 0: return n = e.$nextTick, r = e.paths, i = e.$refs, t.next = 3, n(); case 3: e.lengths = r.map((function (e, t) { return i["path".concat(t)][0].getTotalLength() })); case 4: case "end": return t.stop() } }), t) })))() }, calcTimes: function () { var e = this.mergedConfig, t = e.duration, n = e.points; this.times = n.map((function (e) { return T.apply(void 0, Object(o["a"])(t)) / 10 })) }, calcTexts: function () { var e = this.mergedConfig.points; this.texts = e.map((function (e) { var t = e.text; return t })) }, consoleClickPos: function (e) { var t = e.offsetX, n = e.offsetY, r = this.width, i = this.height, o = this.dev; if (o) (t / r).toFixed(2), (n / i).toFixed(2) } } }), br = yr, xr = Object(y["a"])(br, vr, mr, !1, null, null, null), wr = xr.exports, _r = function (e) { e.component(wr.name, wr) }, Cr = (n("dbbf"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-flyline-chart-enhanced", style: "background-image: url(" + (e.mergedConfig ? e.mergedConfig.bgImgSrc : "") + ")", on: { click: e.consoleClickPos } }, [e.flylines.length ? n("svg", { attrs: { width: e.width, height: e.height } }, [n("defs", [n("radialGradient", { attrs: { id: e.flylineGradientId, cx: "50%", cy: "50%", r: "50%" } }, [n("stop", { attrs: { offset: "0%", "stop-color": "#fff", "stop-opacity": "1" } }), n("stop", { attrs: { offset: "100%", "stop-color": "#fff", "stop-opacity": "0" } })], 1), n("radialGradient", { attrs: { id: e.haloGradientId, cx: "50%", cy: "50%", r: "50%" } }, [n("stop", { attrs: { offset: "0%", "stop-color": "#fff", "stop-opacity": "0" } }), n("stop", { attrs: { offset: "100%", "stop-color": "#fff", "stop-opacity": "1" } })], 1)], 1), e._l(e.flylinePoints, (function (t) { return n("g", { key: t.key + Math.random() }, [n("defs", [t.halo.show ? n("circle", { attrs: { id: "halo" + e.unique + t.key, cx: t.coordinate[0], cy: t.coordinate[1] } }, [n("animate", { attrs: { attributeName: "r", values: "1;" + t.halo.radius, dur: t.halo.time + "s", repeatCount: "indefinite" } }), n("animate", { attrs: { attributeName: "opacity", values: "1;0", dur: t.halo.time + "s", repeatCount: "indefinite" } })]) : e._e()]), n("mask", { attrs: { id: "mask" + e.unique + t.key } }, [t.halo.show ? n("use", { attrs: { "xlink:href": "#halo" + e.unique + t.key, fill: "url(#" + e.haloGradientId + ")" } }) : e._e()]), t.halo.show ? n("use", { attrs: { "xlink:href": "#halo" + e.unique + t.key, fill: t.halo.color, mask: "url(#mask" + e.unique + t.key + ")" } }) : e._e(), t.icon.show ? n("image", { attrs: { "xlink:href": t.icon.src, width: t.icon.width, height: t.icon.height, x: t.icon.x, y: t.icon.y } }) : e._e(), t.text.show ? n("text", { style: "fontSize:" + t.text.fontSize + "px;color:" + t.text.color, attrs: { fill: t.text.color, x: t.text.x, y: t.text.y } }, [e._v(" " + e._s(t.name) + " ")]) : e._e()]) })), e._l(e.flylines, (function (t, r) { return n("g", { key: t.key + Math.random() }, [n("defs", [n("path", { ref: t.key, refInFor: !0, attrs: { id: t.key, d: t.d, fill: "transparent" } })]), n("use", { attrs: { "xlink:href": "#" + t.key, "stroke-width": t.width, stroke: t.orbitColor } }), n("mask", { attrs: { id: "mask" + e.unique + t.key } }, [n("circle", { attrs: { cx: "0", cy: "0", r: t.radius, fill: "url(#" + e.flylineGradientId + ")" } }, [n("animateMotion", { attrs: { dur: t.time, path: t.d, rotate: "auto", repeatCount: "indefinite" } })], 1)]), e.flylineLengths[r] ? n("use", { attrs: { "xlink:href": "#" + t.key, "stroke-width": t.width, stroke: t.color, mask: "url(#mask" + e.unique + t.key + ")" } }, [n("animate", { attrs: { attributeName: "stroke-dasharray", from: "0, " + e.flylineLengths[r], to: e.flylineLengths[r] + ", 0", dur: t.time, repeatCount: "indefinite" } })]) : e._e()]) }))], 2) : e._e()]) }), Mr = [], Or = (n("25f0"), n("7db0"), { name: "DvFlylineChartEnhanced", mixins: [E], props: { config: { type: Object, default: function () { return {} } }, dev: { type: Boolean, default: !1 } }, data: function () { var e = z(); return { ref: "dv-flyline-chart-enhanced", unique: Math.random(), flylineGradientId: "flyline-gradient-id-".concat(e), haloGradientId: "halo-gradient-id-".concat(e), defaultConfig: { points: [], lines: [], halo: { show: !1, duration: [20, 30], color: "#fb7293", radius: 120 }, text: { show: !1, offset: [0, 15], color: "#ffdb5c", fontSize: 12 }, icon: { show: !1, src: "", width: 15, height: 15 }, line: { width: 1, color: "#ffde93", orbitColor: "rgba(103, 224, 227, .2)", duration: [20, 30], radius: 100 }, bgImgSrc: "", k: -.5, curvature: 5, relative: !0 }, flylines: [], flylineLengths: [], flylinePoints: [], mergedConfig: null } }, watch: { config: function () { var e = this.calcData; e() } }, methods: { afterAutoResizeMixinInit: function () { var e = this.calcData; e() }, onResize: function () { var e = this.calcData; e() }, calcData: function () { var e = this; return Object(gr["a"])(regeneratorRuntime.mark((function t() { var n, r, i, o; return regeneratorRuntime.wrap((function (t) { while (1) switch (t.prev = t.next) { case 0: return n = e.mergeConfig, r = e.calcflylinePoints, i = e.calcLinePaths, n(), r(), i(), o = e.calcLineLengths, t.next = 7, o(); case 7: case "end": return t.stop() } }), t) })))() }, mergeConfig: function () { var e = this.config, t = this.defaultConfig, n = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || {}), r = n.points, i = n.lines, o = n.halo, a = n.text, s = n.icon, c = n.line; n.points = r.map((function (e) { return e.halo = Object(p["deepMerge"])(Object(v["deepClone"])(o, !0), e.halo || {}), e.text = Object(p["deepMerge"])(Object(v["deepClone"])(a, !0), e.text || {}), e.icon = Object(p["deepMerge"])(Object(v["deepClone"])(s, !0), e.icon || {}), e })), n.lines = i.map((function (e) { return Object(p["deepMerge"])(Object(v["deepClone"])(c, !0), e) })), this.mergedConfig = n }, calcflylinePoints: function () { var e = this.mergedConfig, t = this.width, n = this.height, r = e.relative, i = e.points; this.flylinePoints = i.map((function (e, i) { var a = Object(h["a"])(e.coordinate, 2), s = a[0], c = a[1], l = e.halo, u = e.icon, f = e.text; r && (e.coordinate = [s * t, c * n]), e.halo.time = T.apply(void 0, Object(o["a"])(l.duration)) / 10; var d = u.width, p = u.height; e.icon.x = e.coordinate[0] - d / 2, e.icon.y = e.coordinate[1] - p / 2; var v = Object(h["a"])(f.offset, 2), m = v[0], g = v[1]; return e.text.x = e.coordinate[0] + m, e.text.y = e.coordinate[1] + g, e.key = "".concat(e.coordinate.toString()).concat(i), e })) }, calcLinePaths: function () { var e = this.getPath, t = this.mergedConfig, n = t.points, r = t.lines; this.flylines = r.map((function (t) { var r = t.source, i = t.target, s = t.duration, c = n.find((function (e) { var t = e.name; return t === r })).coordinate, l = n.find((function (e) { var t = e.name; return t === i })).coordinate, u = e(c, l).map((function (e) { return e.map((function (e) { return parseFloat(e.toFixed(10)) })) })), h = "M".concat(u[0].toString(), " Q").concat(u[1].toString(), " ").concat(u[2].toString()), f = "path".concat(u.toString()), d = T.apply(void 0, Object(o["a"])(s)) / 10; return Object(a["a"])(Object(a["a"])({}, t), {}, { path: u, key: f, d: h, time: d }) })) }, getPath: function (e, t) { var n = this.getControlPoint, r = n(e, t); return [e, r, t] }, getControlPoint: function (e, t) { var n = Object(h["a"])(e, 2), r = n[0], i = n[1], o = Object(h["a"])(t, 2), a = o[0], s = o[1], c = this.getKLinePointByx, l = this.mergedConfig, u = l.curvature, f = l.k, d = (r + a) / 2, p = (i + s) / 2, v = j([r, i], [a, s]), m = v / u, g = m / 2, y = d, b = p; do { y += g, b = c(f, [d, p], y)[1] } while (j([d, p], [y, b]) < m); return [y, b] }, getKLinePointByx: function (e, t, n) { var r = Object(h["a"])(t, 2), i = r[0], o = r[1], a = o - e * i + e * n; return [n, a] }, calcLineLengths: function () { var e = this; return Object(gr["a"])(regeneratorRuntime.mark((function t() { var n, r, i; return regeneratorRuntime.wrap((function (t) { while (1) switch (t.prev = t.next) { case 0: return n = e.$nextTick, r = e.flylines, i = e.$refs, t.next = 3, n(); case 3: e.flylineLengths = r.map((function (e) { var t = e.key; return i[t][0].getTotalLength() })); case 4: case "end": return t.stop() } }), t) })))() }, consoleClickPos: function (e) { var t = e.offsetX, n = e.offsetY, r = this.width, i = this.height, o = this.dev; if (o) (t / r).toFixed(2), (n / i).toFixed(2) } } }), kr = Or, Sr = Object(y["a"])(kr, Cr, Mr, !1, null, null, null), Tr = Sr.exports, Ar = function (e) { e.component(Tr.name, Tr) }, Lr = (n("7cc8"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, attrs: { id: "dv-full-screen-container" } }, [e.ready ? [e._t("default")] : e._e()], 2) }), jr = [], zr = { name: "DvFullScreenContainer", mixins: [E], data: function () { return { ref: "full-screen-container", allWidth: 0, scale: 0, datavRoot: "", ready: !1 } }, methods: { afterAutoResizeMixinInit: function () { var e = this.initConfig, t = this.setAppScale; e(), t(), this.ready = !0 }, initConfig: function () { var e = this.dom, t = screen, n = t.width, r = t.height; this.allWidth = n, e.style.width = "".concat(n, "px"), e.style.height = "".concat(r, "px") }, setAppScale: function () { var e = this.allWidth, t = this.dom, n = document.body.clientWidth; t.style.transform = "scale(".concat(n / e, ")") }, onResize: function () { var e = this.setAppScale; e() } } }, Er = zr, Pr = Object(y["a"])(Er, Lr, jr, !1, null, null, null), Dr = Pr.exports, Hr = function (e) { e.component(Dr.name, Dr) }, Vr = (n("84cd"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "dv-loading" }, [n("svg", { attrs: { width: "50px", height: "50px" } }, [n("circle", { attrs: { cx: "25", cy: "25", r: "20", fill: "transparent", "stroke-width": "3", "stroke-dasharray": "31.415, 31.415", stroke: "#02bcfe", "stroke-linecap": "round" } }, [n("animateTransform", { attrs: { attributeName: "transform", type: "rotate", values: "0, 25 25;360, 25 25", dur: "1.5s", repeatCount: "indefinite" } }), n("animate", { attrs: { attributeName: "stroke", values: "#02bcfe;#3be6cb;#02bcfe", dur: "3s", repeatCount: "indefinite" } })], 1), n("circle", { attrs: { cx: "25", cy: "25", r: "10", fill: "transparent", "stroke-width": "3", "stroke-dasharray": "15.7, 15.7", stroke: "#3be6cb", "stroke-linecap": "round" } }, [n("animateTransform", { attrs: { attributeName: "transform", type: "rotate", values: "360, 25 25;0, 25 25", dur: "1.5s", repeatCount: "indefinite" } }), n("animate", { attrs: { attributeName: "stroke", values: "#3be6cb;#02bcfe;#3be6cb", dur: "3s", repeatCount: "indefinite" } })], 1)]), n("div", { staticClass: "loading-tip" }, [e._t("default")], 2)]) }), Ir = [], Nr = { name: "DvLoading" }, Rr = Nr, Fr = Object(y["a"])(Rr, Vr, Ir, !1, null, null, null), Yr = Fr.exports, $r = function (e) { e.component(Yr.name, Yr) }, Br = (n("a157"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: "percent-pond", staticClass: "dv-percent-pond" }, [n("svg", [n("defs", [n("linearGradient", { attrs: { id: e.gradientId1, x1: "0%", y1: "0%", x2: "100%", y2: "0%" } }, e._l(e.linearGradient, (function (e) { return n("stop", { key: e[0], attrs: { offset: e[0] + "%", "stop-color": e[1] } }) })), 1), n("linearGradient", { attrs: { id: e.gradientId2, x1: "0%", y1: "0%", x2: e.gradient2XPos, y2: "0%" } }, e._l(e.linearGradient, (function (e) { return n("stop", { key: e[0], attrs: { offset: e[0] + "%", "stop-color": e[1] } }) })), 1)], 1), n("rect", { attrs: { x: e.mergedConfig ? e.mergedConfig.borderWidth / 2 : "0", y: e.mergedConfig ? e.mergedConfig.borderWidth / 2 : "0", rx: e.mergedConfig ? e.mergedConfig.borderRadius : "0", ry: e.mergedConfig ? e.mergedConfig.borderRadius : "0", fill: "transparent", "stroke-width": e.mergedConfig ? e.mergedConfig.borderWidth : "0", stroke: "url(#" + e.gradientId1 + ")", width: e.rectWidth > 0 ? e.rectWidth : 0, height: e.rectHeight > 0 ? e.rectHeight : 0 } }), n("polyline", { attrs: { "stroke-width": e.polylineWidth, "stroke-dasharray": e.mergedConfig ? e.mergedConfig.lineDash.join(",") : "0", stroke: "url(#" + e.polylineGradient + ")", points: e.points } }), n("text", { attrs: { stroke: e.mergedConfig ? e.mergedConfig.textColor : "#fff", fill: e.mergedConfig ? e.mergedConfig.textColor : "#fff", x: e.width / 2, y: e.height / 2 } }, [e._v(" " + e._s(e.details) + " ")])])]) }), Wr = [], qr = (n("ac1f"), n("5319"), { name: "DvPercentPond", props: { config: { type: Object, default: function () { return {} } } }, data: function () { var e = z(); return { gradientId1: "percent-pond-gradientId1-".concat(e), gradientId2: "percent-pond-gradientId2-".concat(e), width: 0, height: 0, defaultConfig: { value: 0, colors: ["#3DE7C9", "#00BAFF"], borderWidth: 3, borderGap: 3, lineDash: [5, 1], textColor: "#fff", borderRadius: 5, localGradient: !1, formatter: "{value}%" }, mergedConfig: null } }, computed: { rectWidth: function () { var e = this.mergedConfig, t = this.width; if (!e) return 0; var n = e.borderWidth; return t - n }, rectHeight: function () { var e = this.mergedConfig, t = this.height; if (!e) return 0; var n = e.borderWidth; return t - n }, points: function () { var e = this.mergedConfig, t = this.width, n = this.height, r = n / 2; if (!e) return "0, ".concat(r, " 0, ").concat(r); var i = e.borderWidth, o = e.borderGap, a = e.value, s = (t - 2 * (i + o)) / 100 * a; return "\n        ".concat(i + o, ", ").concat(r, "\n        ").concat(i + o + s, ", ").concat(r + .001, "\n      ") }, polylineWidth: function () { var e = this.mergedConfig, t = this.height; if (!e) return 0; var n = e.borderWidth, r = e.borderGap; return t - 2 * (n + r) }, linearGradient: function () { var e = this.mergedConfig; if (!e) return []; var t = e.colors, n = t.length, r = 100 / (n - 1); return t.map((function (e, t) { return [r * t, e] })) }, polylineGradient: function () { var e = this.gradientId1, t = this.gradientId2, n = this.mergedConfig; return n && n.localGradient ? e : t }, gradient2XPos: function () { var e = this.mergedConfig; if (!e) return "100%"; var t = e.value; return "".concat(200 - t, "%") }, details: function () { var e = this.mergedConfig; if (!e) return ""; var t = e.value, n = e.formatter; return n.replace("{value}", t) } }, watch: { config: function () { var e = this.mergeConfig; e() } }, methods: { init: function () { var e = this; return Object(gr["a"])(regeneratorRuntime.mark((function t() { var n, r, i; return regeneratorRuntime.wrap((function (t) { while (1) switch (t.prev = t.next) { case 0: return n = e.initWH, r = e.config, i = e.mergeConfig, t.next = 3, n(); case 3: if (r) { t.next = 5; break } return t.abrupt("return"); case 5: i(); case 6: case "end": return t.stop() } }), t) })))() }, initWH: function () { var e = this; return Object(gr["a"])(regeneratorRuntime.mark((function t() { var n, r, i, o, a; return regeneratorRuntime.wrap((function (t) { while (1) switch (t.prev = t.next) { case 0: return n = e.$nextTick, r = e.$refs, t.next = 3, n(); case 3: i = r["percent-pond"], o = i.clientWidth, a = i.clientHeight, e.width = o, e.height = a; case 6: case "end": return t.stop() } }), t) })))() }, mergeConfig: function () { var e = this.config, t = this.defaultConfig; this.mergedConfig = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || {}) } }, mounted: function () { var e = this.init; e() } }), Ur = qr, Kr = Object(y["a"])(Ur, Br, Wr, !1, null, null, null), Gr = Kr.exports, Xr = function (e) { e.component(Gr.name, Gr) }, Jr = (n("037e"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-scroll-board" }, [e.header.length && e.mergedConfig ? n("div", { staticClass: "header", style: "background-color: " + e.mergedConfig.headerBGC + ";" }, e._l(e.header, (function (t, r) { return n("div", { key: "" + t + r, staticClass: "header-item", style: "\n        height: " + e.mergedConfig.headerHeight + "px;\n        line-height: " + e.mergedConfig.headerHeight + "px;\n        width: " + e.widths[r] + "px;\n      ", attrs: { align: e.aligns[r] }, domProps: { innerHTML: e._s(t) } }) })), 0) : e._e(), e.mergedConfig ? n("div", { staticClass: "rows", style: "height: " + (e.height - (e.header.length ? e.mergedConfig.headerHeight : 0)) + "px;" }, e._l(e.rows, (function (t, r) { return n("div", { key: "" + t.toString() + t.scroll, staticClass: "row-item", style: "\n        height: " + e.heights[r] + "px;\n        line-height: " + e.heights[r] + "px;\n        background-color: " + e.mergedConfig[t.rowIndex % 2 === 0 ? "evenRowBGC" : "oddRowBGC"] + ";\n      " }, e._l(t.ceils, (function (i, o) { return n("div", { key: "" + i + r + o, staticClass: "ceil", style: "width: " + e.widths[o] + "px;", attrs: { align: e.aligns[o] }, domProps: { innerHTML: e._s(i) }, on: { click: function (n) { return e.emitEvent("click", r, o, t, i) }, mouseenter: function (n) { return e.handleHover(!0, r, o, t, i) }, mouseleave: function (t) { return e.handleHover(!1) } } }) })), 0) })), 0) : e._e()]) }), Qr = [], Zr = (n("fb6a"), n("a434"), { name: "DvScrollBoard", mixins: [E], props: { config: { type: Object, default: function () { return {} } } }, data: function () { return { ref: "scroll-board", defaultConfig: { header: [], data: [], rowNum: 5, headerBGC: "#00BAFF", oddRowBGC: "#003B51", evenRowBGC: "#0A2732", waitTime: 2e3, headerHeight: 35, columnWidth: [], align: [], index: !1, indexHeader: "#", carousel: "single", hoverPause: !0 }, mergedConfig: null, header: [], rowsData: [], rows: [], widths: [], heights: [], avgHeight: 0, aligns: [], animationIndex: 0, animationHandler: "", updater: 0, needCalc: !1 } }, watch: { config: function () { var e = this.stopAnimation, t = this.calcData; e(), this.animationIndex = 0, t() } }, methods: { handleHover: function (e, t, n, r, i) { var o = this.mergedConfig, a = this.emitEvent, s = this.stopAnimation, c = this.animation; e && a("mouseover", t, n, r, i), o.hoverPause && (e ? s() : c(!0)) }, afterAutoResizeMixinInit: function () { var e = this.calcData; e() }, onResize: function () { var e = this.mergedConfig, t = this.calcWidths, n = this.calcHeights; e && (t(), n()) }, calcData: function () { var e = this.mergeConfig, t = this.calcHeaderData, n = this.calcRowsData; e(), t(), n(); var r = this.calcWidths, i = this.calcHeights, o = this.calcAligns; r(), i(), o(); var a = this.animation; a(!0) }, mergeConfig: function () { var e = this.config, t = this.defaultConfig; this.mergedConfig = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || {}) }, calcHeaderData: function () { var e = this.mergedConfig, t = e.header, n = e.index, r = e.indexHeader; t.length ? (t = Object(o["a"])(t), n && t.unshift(r), this.header = t) : this.header = [] }, calcRowsData: function () { var e = this.mergedConfig, t = e.data, n = e.index, r = e.headerBGC, i = e.rowNum; n && (t = t.map((function (e, t) { e = Object(o["a"])(e); var n = '<span class="index" style="background-color: '.concat(r, ';">').concat(t + 1, "</span>"); return e.unshift(n), e }))), t = t.map((function (e, t) { return { ceils: e, rowIndex: t } })); var s = t.length; s > i && s < 2 * i && (t = [].concat(Object(o["a"])(t), Object(o["a"])(t))), t = t.map((function (e, t) { return Object(a["a"])(Object(a["a"])({}, e), {}, { scroll: t }) })), this.rowsData = t, this.rows = t }, calcWidths: function () { var e = this.width, t = this.mergedConfig, n = this.rowsData, r = t.columnWidth, i = t.header, o = r.reduce((function (e, t) { return e + t }), 0), a = 0; n[0] ? a = n[0].ceils.length : i.length && (a = i.length); var s = (e - o) / (a - r.length), c = new Array(a).fill(s); this.widths = Object(p["deepMerge"])(c, r) }, calcHeights: function () { var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0], t = this.height, n = this.mergedConfig, r = this.header, i = n.headerHeight, o = n.rowNum, a = n.data, s = t; r.length && (s -= i); var c = s / o; this.avgHeight = c, e || (this.heights = new Array(a.length).fill(c)) }, calcAligns: function () { var e = this.header, t = this.mergedConfig, n = e.length, r = new Array(n).fill("left"), i = t.align; this.aligns = Object(p["deepMerge"])(r, i) }, animation: function () { var e = arguments, t = this; return Object(gr["a"])(regeneratorRuntime.mark((function n() { var r, i, a, s, c, l, u, h, f, d, p, v, m, g, y, b, x, w; return regeneratorRuntime.wrap((function (n) { while (1) switch (n.prev = n.next) { case 0: if (i = e.length > 0 && void 0 !== e[0] && e[0], a = t.needCalc, s = t.calcHeights, c = t.calcRowsData, a && (c(), s(), t.needCalc = !1), l = t.avgHeight, u = t.animationIndex, h = t.mergedConfig, f = t.rowsData, d = t.animation, p = t.updater, v = h.waitTime, m = h.carousel, g = h.rowNum, y = f.length, !(g >= y)) { n.next = 8; break } return n.abrupt("return"); case 8: if (!i) { n.next = 13; break } return n.next = 11, new Promise((function (e) { return setTimeout(e, v) })); case 11: if (p === t.updater) { n.next = 13; break } return n.abrupt("return"); case 13: return b = "single" === m ? 1 : g, x = f.slice(u), x.push.apply(x, Object(o["a"])(f.slice(0, u))), t.rows = x.slice(0, "page" === m ? 2 * g : g + 1), t.heights = new Array(y).fill(l), n.next = 20, new Promise((function (e) { return setTimeout(e, 300) })); case 20: if (p === t.updater) { n.next = 22; break } return n.abrupt("return"); case 22: (r = t.heights).splice.apply(r, [0, b].concat(Object(o["a"])(new Array(b).fill(0)))), u += b, w = u - y, w >= 0 && (u = w), t.animationIndex = u, t.animationHandler = setTimeout(d, v - 300); case 28: case "end": return n.stop() } }), n) })))() }, stopAnimation: function () { var e = this.animationHandler, t = this.updater; this.updater = (t + 1) % 999999, e && clearTimeout(e) }, emitEvent: function (e, t, n, r, i) { var o = r.ceils, a = r.rowIndex; this.$emit(e, { row: o, ceil: i, rowIndex: a, columnIndex: n }) }, updateRows: function (e, t) { var n = this.mergedConfig, r = this.animationHandler, i = this.animation; this.mergedConfig = Object(a["a"])(Object(a["a"])({}, n), {}, { data: Object(o["a"])(e) }), this.needCalc = !0, "number" === typeof t && (this.animationIndex = t), r || i(!0) } }, destroyed: function () { var e = this.stopAnimation; e() } }), ei = Zr, ti = Object(y["a"])(ei, Jr, Qr, !1, null, null, null), ni = ti.exports, ri = function (e) { e.component(ni.name, ni) }, ii = (n("c280"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: e.ref, staticClass: "dv-scroll-ranking-board" }, e._l(e.rows, (function (t, r) { return n("div", { key: t.toString() + t.scroll, staticClass: "row-item", style: "height: " + e.heights[r] + "px;" }, [n("div", { staticClass: "ranking-info" }, [n("div", { staticClass: "rank" }, [e._v("No." + e._s(t.ranking))]), n("div", { staticClass: "info-name", domProps: { innerHTML: e._s(t.name) } }), n("div", { staticClass: "ranking-value" }, [e._v(e._s(e.mergedConfig.valueFormatter ? e.mergedConfig.valueFormatter(t) : t.value + e.mergedConfig.unit))])]), n("div", { staticClass: "ranking-column" }, [n("div", { staticClass: "inside-column", style: "width: " + t.percent + "%;" }, [n("div", { staticClass: "shine" })])])]) })), 0) }), oi = [], ai = { name: "DvScrollRankingBoard", mixins: [E], props: { config: { type: Object, default: function () { return {} } } }, data: function () { return { ref: "scroll-ranking-board", defaultConfig: { data: [], rowNum: 5, waitTime: 2e3, carousel: "single", unit: "", sort: !0, valueFormatter: null }, mergedConfig: null, rowsData: [], rows: [], heights: [], animationIndex: 0, animationHandler: "", updater: 0 } }, watch: { config: function () { var e = this.stopAnimation, t = this.calcData; e(), t() } }, methods: { afterAutoResizeMixinInit: function () { var e = this.calcData; e() }, onResize: function () { var e = this.mergedConfig, t = this.calcHeights; e && t(!0) }, calcData: function () { var e = this.mergeConfig, t = this.calcRowsData; e(), t(); var n = this.calcHeights; n(); var r = this.animation; r(!0) }, mergeConfig: function () { var e = this.config, t = this.defaultConfig; this.mergedConfig = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e || {}) }, calcRowsData: function () { var e = this.mergedConfig, t = e.data, n = e.rowNum, r = e.sort; r && t.sort((function (e, t) { var n = e.value, r = t.value; return n > r ? -1 : n < r ? 1 : n === r ? 0 : void 0 })); var i = t.map((function (e) { var t = e.value; return t })), s = Math.min.apply(Math, Object(o["a"])(i)) || 0, c = Math.abs(s), l = Math.max.apply(Math, Object(o["a"])(i)) || 0, u = (Math.abs(l), l + c); t = t.map((function (e, t) { return Object(a["a"])(Object(a["a"])({}, e), {}, { ranking: t + 1, percent: (e.value + c) / u * 100 }) })); var h = t.length; h > n && h < 2 * n && (t = [].concat(Object(o["a"])(t), Object(o["a"])(t))), t = t.map((function (e, t) { return Object(a["a"])(Object(a["a"])({}, e), {}, { scroll: t }) })), this.rowsData = t, this.rows = t }, calcHeights: function () { var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0], t = this.height, n = this.mergedConfig, r = n.rowNum, i = n.data, o = t / r; this.avgHeight = o, e || (this.heights = new Array(i.length).fill(o)) }, animation: function () { var e = arguments, t = this; return Object(gr["a"])(regeneratorRuntime.mark((function n() { var r, i, a, s, c, l, u, h, f, d, p, v, m, g, y; return regeneratorRuntime.wrap((function (n) { while (1) switch (n.prev = n.next) { case 0: if (i = e.length > 0 && void 0 !== e[0] && e[0], a = t.avgHeight, s = t.animationIndex, c = t.mergedConfig, l = t.rowsData, u = t.animation, h = t.updater, f = c.waitTime, d = c.carousel, p = c.rowNum, v = l.length, !(p >= v)) { n.next = 6; break } return n.abrupt("return"); case 6: if (!i) { n.next = 11; break } return n.next = 9, new Promise((function (e) { return setTimeout(e, f) })); case 9: if (h === t.updater) { n.next = 11; break } return n.abrupt("return"); case 11: return m = "single" === d ? 1 : p, g = l.slice(s), g.push.apply(g, Object(o["a"])(l.slice(0, s))), t.rows = g.slice(0, p + 1), t.heights = new Array(v).fill(a), n.next = 18, new Promise((function (e) { return setTimeout(e, 300) })); case 18: if (h === t.updater) { n.next = 20; break } return n.abrupt("return"); case 20: (r = t.heights).splice.apply(r, [0, m].concat(Object(o["a"])(new Array(m).fill(0)))), s += m, y = s - v, y >= 0 && (s = y), t.animationIndex = s, t.animationHandler = setTimeout(u, f - 300); case 26: case "end": return n.stop() } }), n) })))() }, stopAnimation: function () { var e = this.animationHandler, t = this.updater; this.updater = (t + 1) % 999999, e && clearTimeout(e) } }, destroyed: function () { var e = this.stopAnimation; e() } }, si = ai, ci = Object(y["a"])(si, ii, oi, !1, null, null, null), li = ci.exports, ui = function (e) { e.component(li.name, li) }, hi = (n("fa10"), function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { staticClass: "dv-water-pond-level" }, [e.renderer ? n("svg", [n("defs", [n("linearGradient", { attrs: { id: e.gradientId, x1: "0%", y1: "0%", x2: "0%", y2: "100%" } }, e._l(e.svgBorderGradient, (function (e) { return n("stop", { key: e[0], attrs: { offset: e[0], "stop-color": e[1] } }) })), 1)], 1), e.renderer ? n("text", { attrs: { stroke: "url(#" + e.gradientId + ")", fill: "url(#" + e.gradientId + ")", x: e.renderer.area[0] / 2 + 8, y: e.renderer.area[1] / 2 + 8 } }, [e._v(" " + e._s(e.details) + " ")]) : e._e(), e.shape && "round" !== e.shape ? n("rect", { attrs: { x: "2", y: "2", rx: "roundRect" === e.shape ? 10 : 0, ry: "roundRect" === e.shape ? 10 : 0, width: e.renderer.area[0] + 12, height: e.renderer.area[1] + 12, stroke: "url(#" + e.gradientId + ")" } }) : n("ellipse", { attrs: { cx: e.renderer.area[0] / 2 + 8, cy: e.renderer.area[1] / 2 + 8, rx: e.renderer.area[0] / 2 + 5, ry: e.renderer.area[1] / 2 + 5, stroke: "url(#" + e.gradientId + ")" } })]) : e._e(), n("canvas", { ref: "water-pond-level", style: "border-radius: " + e.radius + ";" })]) }), fi = [], di = { name: "DvWaterLevelPond", props: { config: Object, default: function () { return {} } }, data: function () { var e = z(); return { gradientId: "water-level-pond-".concat(e), defaultConfig: { data: [], shape: "rect", waveNum: 3, waveHeight: 40, waveOpacity: .4, colors: ["#3DE7C9", "#00BAFF"], formatter: "{value}%" }, mergedConfig: {}, renderer: null, svgBorderGradient: [], details: "", waves: [], animation: !1 } }, computed: { radius: function () { var e = this.mergedConfig.shape; return "round" === e ? "50%" : "rect" === e ? "0" : "roundRect" === e ? "10px" : "0" }, shape: function () { var e = this.mergedConfig.shape; return e || "rect" } }, watch: { config: function () { var e = this.calcData, t = this.renderer; t.delAllGraph(), this.waves = [], setTimeout(e, 0) } }, methods: { init: function () { var e = this.initRender, t = this.config, n = this.calcData; e(), t && n() }, initRender: function () { var e = this.$refs; this.renderer = new d.a(e["water-pond-level"]) }, calcData: function () { var e = this.mergeConfig, t = this.calcSvgBorderGradient, n = this.calcDetails; e(), t(), n(); var r = this.addWave, i = this.animationWave; r(), i() }, mergeConfig: function () { var e = this.config, t = this.defaultConfig; this.mergedConfig = Object(p["deepMerge"])(Object(v["deepClone"])(t, !0), e) }, calcSvgBorderGradient: function () { var e = this.mergedConfig.colors, t = e.length, n = 100 / (t - 1); this.svgBorderGradient = e.map((function (e, t) { return [n * t, e] })) }, calcDetails: function () { var e = this.mergedConfig, t = e.data, n = e.formatter; if (t.length) { var r = Math.max.apply(Math, Object(o["a"])(t)); this.details = n.replace("{value}", r) } else this.details = "" }, addWave: function () { var e = this.renderer, t = this.getWaveShapes, n = this.getWaveStyle, r = this.drawed, i = t(), o = n(); this.waves = i.map((function (t) { return e.add({ name: "smoothline", animationFrame: 300, shape: t, style: o, drawed: r }) })) }, getWaveShapes: function () { var e = this.mergedConfig, t = this.renderer, n = this.mergeOffset, r = e.waveNum, i = e.waveHeight, o = e.data, a = Object(h["a"])(t.area, 2), s = a[0], c = a[1], l = 4 * r + 4, u = s / r / 2; return o.map((function (e) { var t = new Array(l).fill(0).map((function (t, n) { var r = s - u * n, o = (1 - e / 100) * c, a = n % 2 === 0 ? o : o - i; return [r, a] })); return t = t.map((function (e) { return n(e, [2 * u, 0]) })), { points: t } })) }, mergeOffset: function (e, t) { var n = Object(h["a"])(e, 2), r = n[0], i = n[1], o = Object(h["a"])(t, 2), a = o[0], s = o[1]; return [r + a, i + s] }, getWaveStyle: function () { var e = this.renderer, t = this.mergedConfig, n = e.area[1]; return { gradientColor: t.colors, gradientType: "linear", gradientParams: [0, 0, 0, n], gradientWith: "fill", opacity: t.waveOpacity, translate: [0, 0] } }, drawed: function (e, t) { var n = e.shape.points, r = t.ctx, i = t.area, o = n[0], a = n.slice(-1)[0], s = i[1]; r.lineTo(a[0], s), r.lineTo(o[0], s), r.closePath(), r.fill() }, animationWave: function () { var e = arguments, t = this; return Object(gr["a"])(regeneratorRuntime.mark((function n() { var r, i, o, a, s; return regeneratorRuntime.wrap((function (n) { while (1) switch (n.prev = n.next) { case 0: if (r = e.length > 0 && void 0 !== e[0] ? e[0] : 1, i = t.waves, o = t.renderer, a = t.animation, !a) { n.next = 4; break } return n.abrupt("return"); case 4: return t.animation = !0, s = o.area[0], i.forEach((function (e) { e.attr("style", { translate: [0, 0] }), e.animation("style", { translate: [s, 0] }, !0) })), n.next = 9, o.launchAnimation(); case 9: if (t.animation = !1, o.graphs.length) { n.next = 12; break } return n.abrupt("return"); case 12: t.animationWave(r + 1); case 13: case "end": return n.stop() } }), n) })))() } }, mounted: function () { var e = this.init; e() }, beforeDestroy: function () { var e = this.renderer; e.delAllGraph(), this.waves = [] } }, pi = di, vi = Object(y["a"])(pi, hi, fi, !1, null, null, null), mi = vi.exports, gi = function (e) { e.component(mi.name, mi) }; t["a"] = function (e) { e.use(Hr), e.use($r), e.use(I), e.use(xe), e.use(Se), e.use(Pe), e.use(Fe), e.use(Ke), e.use(tt), e.use(ct), e.use(vt), e.use(W), e.use(Z), e.use(ae), e.use(de), e.use($t), e.use(yn), e.use(On), e.use(zn), e.use(Nn), e.use(qn), e.use(Zn), e.use(ar), e.use(dr), e.use(Xt), e.use(rn), e.use(hn), e.use(At), e.use(O), e.use(_t), e.use(gi), e.use(Xr), e.use(_r), e.use(Ar), e.use(Ht), e.use(pr), e.use(ri), e.use(ui) } }, "6c57": function (e, t, n) { var r = n("23e7"), i = n("da84"); r({ global: !0 }, { globalThis: i }) }, "6ca1": function (e, t, n) { var r = n("9fbb"), i = n("c901"); e.exports = function (e) { return r(i(e)) } }, "6ccd": function (e, t, n) { }, "6cd5": function (e, t, n) { }, "6d08": function (e, t, n) { (function (t) { (function () { var n, r, i, o, a, s; "undefined" !== typeof performance && null !== performance && performance.now ? e.exports = function () { return performance.now() } : "undefined" !== typeof t && null !== t && t.hrtime ? (e.exports = function () { return (n() - a) / 1e6 }, r = t.hrtime, n = function () { var e; return e = r(), 1e9 * e[0] + e[1] }, o = n(), s = 1e9 * t.uptime(), a = o - s) : Date.now ? (e.exports = function () { return Date.now() - i }, i = Date.now()) : (e.exports = function () { return (new Date).getTime() - i }, i = (new Date).getTime()) }).call(this) }).call(this, n("4362")) }, "6d2a": function (e, t, n) { "use strict"; n("b2a3"), n("5cdc") }, "6d2f": function (e, t, n) { var r = n("8a0d"), i = n("cc15")("iterator"), o = Array.prototype; e.exports = function (e) { return void 0 !== e && (r.Array === e || o[i] === e) } }, "6d61": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("da84"), o = n("94ca"), a = n("6eeb"), s = n("f183"), c = n("2266"), l = n("19aa"), u = n("861d"), h = n("d039"), f = n("1c7e"), d = n("d44e"), p = n("7156"); e.exports = function (e, t, n) { var v = -1 !== e.indexOf("Map"), m = -1 !== e.indexOf("Weak"), g = v ? "set" : "add", y = i[e], b = y && y.prototype, x = y, w = {}, _ = function (e) { var t = b[e]; a(b, e, "add" == e ? function (e) { return t.call(this, 0 === e ? 0 : e), this } : "delete" == e ? function (e) { return !(m && !u(e)) && t.call(this, 0 === e ? 0 : e) } : "get" == e ? function (e) { return m && !u(e) ? void 0 : t.call(this, 0 === e ? 0 : e) } : "has" == e ? function (e) { return !(m && !u(e)) && t.call(this, 0 === e ? 0 : e) } : function (e, n) { return t.call(this, 0 === e ? 0 : e, n), this }) }, C = o(e, "function" != typeof y || !(m || b.forEach && !h((function () { (new y).entries().next() })))); if (C) x = n.getConstructor(t, e, v, g), s.enable(); else if (o(e, !0)) { var M = new x, O = M[g](m ? {} : -0, 1) != M, k = h((function () { M.has(1) })), S = f((function (e) { new y(e) })), T = !m && h((function () { var e = new y, t = 5; while (t--) e[g](t, t); return !e.has(-0) })); S || (x = t((function (t, n) { l(t, x, e); var r = p(new y, t, x); return void 0 != n && c(n, r[g], { that: r, AS_ENTRIES: v }), r })), x.prototype = b, b.constructor = x), (k || T) && (_("delete"), _("has"), v && _("get")), (T || O) && _(g), m && b.clear && delete b.clear } return w[e] = x, r({ global: !0, forced: x != y }, w), d(x, e), m || n.setStrong(x, e, v), x } }, "6dd8": function (e, t, n) { "use strict"; (function (e) { var n = function () { if ("undefined" !== typeof Map) return Map; function e(e, t) { var n = -1; return e.some((function (e, r) { return e[0] === t && (n = r, !0) })), n } return function () { function t() { this.__entries__ = [] } return Object.defineProperty(t.prototype, "size", { get: function () { return this.__entries__.length }, enumerable: !0, configurable: !0 }), t.prototype.get = function (t) { var n = e(this.__entries__, t), r = this.__entries__[n]; return r && r[1] }, t.prototype.set = function (t, n) { var r = e(this.__entries__, t); ~r ? this.__entries__[r][1] = n : this.__entries__.push([t, n]) }, t.prototype.delete = function (t) { var n = this.__entries__, r = e(n, t); ~r && n.splice(r, 1) }, t.prototype.has = function (t) { return !!~e(this.__entries__, t) }, t.prototype.clear = function () { this.__entries__.splice(0) }, t.prototype.forEach = function (e, t) { void 0 === t && (t = null); for (var n = 0, r = this.__entries__; n < r.length; n++) { var i = r[n]; e.call(t, i[1], i[0]) } }, t }() }(), r = "undefined" !== typeof window && "undefined" !== typeof document && window.document === document, i = function () { return "undefined" !== typeof e && e.Math === Math ? e : "undefined" !== typeof self && self.Math === Math ? self : "undefined" !== typeof window && window.Math === Math ? window : Function("return this")() }(), o = function () { return "function" === typeof requestAnimationFrame ? requestAnimationFrame.bind(i) : function (e) { return setTimeout((function () { return e(Date.now()) }), 1e3 / 60) } }(), a = 2; function s(e, t) { var n = !1, r = !1, i = 0; function s() { n && (n = !1, e()), r && l() } function c() { o(s) } function l() { var e = Date.now(); if (n) { if (e - i < a) return; r = !0 } else n = !0, r = !1, setTimeout(c, t); i = e } return l } var c = 20, l = ["top", "right", "bottom", "left", "width", "height", "size", "weight"], u = "undefined" !== typeof MutationObserver, h = function () { function e() { this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh = s(this.refresh.bind(this), c) } return e.prototype.addObserver = function (e) { ~this.observers_.indexOf(e) || this.observers_.push(e), this.connected_ || this.connect_() }, e.prototype.removeObserver = function (e) { var t = this.observers_, n = t.indexOf(e); ~n && t.splice(n, 1), !t.length && this.connected_ && this.disconnect_() }, e.prototype.refresh = function () { var e = this.updateObservers_(); e && this.refresh() }, e.prototype.updateObservers_ = function () { var e = this.observers_.filter((function (e) { return e.gatherActive(), e.hasActive() })); return e.forEach((function (e) { return e.broadcastActive() })), e.length > 0 }, e.prototype.connect_ = function () { r && !this.connected_ && (document.addEventListener("transitionend", this.onTransitionEnd_), window.addEventListener("resize", this.refresh), u ? (this.mutationsObserver_ = new MutationObserver(this.refresh), this.mutationsObserver_.observe(document, { attributes: !0, childList: !0, characterData: !0, subtree: !0 })) : (document.addEventListener("DOMSubtreeModified", this.refresh), this.mutationEventsAdded_ = !0), this.connected_ = !0) }, e.prototype.disconnect_ = function () { r && this.connected_ && (document.removeEventListener("transitionend", this.onTransitionEnd_), window.removeEventListener("resize", this.refresh), this.mutationsObserver_ && this.mutationsObserver_.disconnect(), this.mutationEventsAdded_ && document.removeEventListener("DOMSubtreeModified", this.refresh), this.mutationsObserver_ = null, this.mutationEventsAdded_ = !1, this.connected_ = !1) }, e.prototype.onTransitionEnd_ = function (e) { var t = e.propertyName, n = void 0 === t ? "" : t, r = l.some((function (e) { return !!~n.indexOf(e) })); r && this.refresh() }, e.getInstance = function () { return this.instance_ || (this.instance_ = new e), this.instance_ }, e.instance_ = null, e }(), f = function (e, t) { for (var n = 0, r = Object.keys(t); n < r.length; n++) { var i = r[n]; Object.defineProperty(e, i, { value: t[i], enumerable: !1, writable: !1, configurable: !0 }) } return e }, d = function (e) { var t = e && e.ownerDocument && e.ownerDocument.defaultView; return t || i }, p = M(0, 0, 0, 0); function v(e) { return parseFloat(e) || 0 } function m(e) { for (var t = [], n = 1; n < arguments.length; n++)t[n - 1] = arguments[n]; return t.reduce((function (t, n) { var r = e["border-" + n + "-width"]; return t + v(r) }), 0) } function g(e) { for (var t = ["top", "right", "bottom", "left"], n = {}, r = 0, i = t; r < i.length; r++) { var o = i[r], a = e["padding-" + o]; n[o] = v(a) } return n } function y(e) { var t = e.getBBox(); return M(0, 0, t.width, t.height) } function b(e) { var t = e.clientWidth, n = e.clientHeight; if (!t && !n) return p; var r = d(e).getComputedStyle(e), i = g(r), o = i.left + i.right, a = i.top + i.bottom, s = v(r.width), c = v(r.height); if ("border-box" === r.boxSizing && (Math.round(s + o) !== t && (s -= m(r, "left", "right") + o), Math.round(c + a) !== n && (c -= m(r, "top", "bottom") + a)), !w(e)) { var l = Math.round(s + o) - t, u = Math.round(c + a) - n; 1 !== Math.abs(l) && (s -= l), 1 !== Math.abs(u) && (c -= u) } return M(i.left, i.top, s, c) } var x = function () { return "undefined" !== typeof SVGGraphicsElement ? function (e) { return e instanceof d(e).SVGGraphicsElement } : function (e) { return e instanceof d(e).SVGElement && "function" === typeof e.getBBox } }(); function w(e) { return e === d(e).document.documentElement } function _(e) { return r ? x(e) ? y(e) : b(e) : p } function C(e) { var t = e.x, n = e.y, r = e.width, i = e.height, o = "undefined" !== typeof DOMRectReadOnly ? DOMRectReadOnly : Object, a = Object.create(o.prototype); return f(a, { x: t, y: n, width: r, height: i, top: n, right: t + r, bottom: i + n, left: t }), a } function M(e, t, n, r) { return { x: e, y: t, width: n, height: r } } var O = function () { function e(e) { this.broadcastWidth = 0, this.broadcastHeight = 0, this.contentRect_ = M(0, 0, 0, 0), this.target = e } return e.prototype.isActive = function () { var e = _(this.target); return this.contentRect_ = e, e.width !== this.broadcastWidth || e.height !== this.broadcastHeight }, e.prototype.broadcastRect = function () { var e = this.contentRect_; return this.broadcastWidth = e.width, this.broadcastHeight = e.height, e }, e }(), k = function () { function e(e, t) { var n = C(t); f(this, { target: e, contentRect: n }) } return e }(), S = function () { function e(e, t, r) { if (this.activeObservations_ = [], this.observations_ = new n, "function" !== typeof e) throw new TypeError("The callback provided as parameter 1 is not a function."); this.callback_ = e, this.controller_ = t, this.callbackCtx_ = r } return e.prototype.observe = function (e) { if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); if ("undefined" !== typeof Element && Element instanceof Object) { if (!(e instanceof d(e).Element)) throw new TypeError('parameter 1 is not of type "Element".'); var t = this.observations_; t.has(e) || (t.set(e, new O(e)), this.controller_.addObserver(this), this.controller_.refresh()) } }, e.prototype.unobserve = function (e) { if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); if ("undefined" !== typeof Element && Element instanceof Object) { if (!(e instanceof d(e).Element)) throw new TypeError('parameter 1 is not of type "Element".'); var t = this.observations_; t.has(e) && (t.delete(e), t.size || this.controller_.removeObserver(this)) } }, e.prototype.disconnect = function () { this.clearActive(), this.observations_.clear(), this.controller_.removeObserver(this) }, e.prototype.gatherActive = function () { var e = this; this.clearActive(), this.observations_.forEach((function (t) { t.isActive() && e.activeObservations_.push(t) })) }, e.prototype.broadcastActive = function () { if (this.hasActive()) { var e = this.callbackCtx_, t = this.activeObservations_.map((function (e) { return new k(e.target, e.broadcastRect()) })); this.callback_.call(e, t, e), this.clearActive() } }, e.prototype.clearActive = function () { this.activeObservations_.splice(0) }, e.prototype.hasActive = function () { return this.activeObservations_.length > 0 }, e }(), T = "undefined" !== typeof WeakMap ? new WeakMap : new n, A = function () { function e(t) { if (!(this instanceof e)) throw new TypeError("Cannot call a class as a function."); if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); var n = h.getInstance(), r = new S(t, n, this); T.set(this, r) } return e }();["observe", "unobserve", "disconnect"].forEach((function (e) { A.prototype[e] = function () { var t; return (t = T.get(this))[e].apply(t, arguments) } })); var L = function () { return "undefined" !== typeof i.ResizeObserver ? i.ResizeObserver : A }(); t["a"] = L }).call(this, n("c8ba")) }, "6eb9": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.lineConfig = void 0; var r = { show: !0, name: "", stack: "", smooth: !1, xAxisIndex: 0, yAxisIndex: 0, data: [], lineStyle: { lineWidth: 1 }, linePoint: { show: !0, radius: 2, style: { fill: "#fff", lineWidth: 1 } }, lineArea: { show: !1, gradient: [], style: { opacity: .5 } }, label: { show: !1, position: "top", offset: [0, -10], formatter: null, style: { fontSize: 10 } }, rLevel: 10, animationCurve: "easeOutCubic", animationFrame: 50 }; t.lineConfig = r }, "6eeb": function (e, t, n) { var r = n("da84"), i = n("9112"), o = n("5135"), a = n("ce4e"), s = n("8925"), c = n("69f3"), l = c.get, u = c.enforce, h = String(String).split("String"); (e.exports = function (e, t, n, s) { var c, l = !!s && !!s.unsafe, f = !!s && !!s.enumerable, d = !!s && !!s.noTargetGet; "function" == typeof n && ("string" != typeof t || o(n, "name") || i(n, "name", t), c = u(n), c.source || (c.source = h.join("string" == typeof t ? t : ""))), e !== r ? (l ? !d && e[t] && (f = !0) : delete e[t], f ? e[t] = n : i(e, t, n)) : f ? e[t] = n : a(t, n) })(Function.prototype, "toString", (function () { return "function" == typeof this && l(this).source || s(this) })) }, "6f4f": function (e, t, n) { var r = n("77e9"), i = n("85e7"), o = n("9742"), a = n("5a94")("IE_PROTO"), s = function () { }, c = "prototype", l = function () { var e, t = n("05f5")("iframe"), r = o.length, i = "<", a = ">"; t.style.display = "none", n("9141").appendChild(t), t.src = "javascript:", e = t.contentWindow.document, e.open(), e.write(i + "script" + a + "document.F=Object" + i + "/script" + a), e.close(), l = e.F; while (r--) delete l[c][o[r]]; return l() }; e.exports = Object.create || function (e, t) { var n; return null !== e ? (s[c] = r(e), n = new s, s[c] = null, n[a] = e) : n = l(), void 0 === t ? n : i(n, t) } }, "6f53": function (e, t, n) { var r = n("83ab"), i = n("df75"), o = n("fc6a"), a = n("d1e7").f, s = function (e) { return function (t) { var n, s = o(t), c = i(s), l = c.length, u = 0, h = []; while (l > u) n = c[u++], r && !a.call(s, n) || h.push(e ? [n, s[n]] : s[n]); return h } }; e.exports = { entries: s(!0), values: s(!1) } }, "6f6c": function (e, t) { var n = /\w*$/; function r(e) { var t = new e.constructor(e.source, n.exec(e)); return t.lastIndex = e.lastIndex, t } e.exports = r }, "6f7a": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return i })); var r = void 0; function i(e) { if (e || void 0 === r) { var t = document.createElement("div"); t.style.width = "100%", t.style.height = "200px"; var n = document.createElement("div"), i = n.style; i.position = "absolute", i.top = 0, i.left = 0, i.pointerEvents = "none", i.visibility = "hidden", i.width = "200px", i.height = "150px", i.overflow = "hidden", n.appendChild(t), document.body.appendChild(n); var o = t.offsetWidth; n.style.overflow = "scroll"; var a = t.offsetWidth; o === a && (a = n.clientWidth), document.body.removeChild(n), r = o - a } return r } }, "6fc2": function (e, t, n) { }, "6fcd": function (e, t, n) { var r = n("50d8"), i = n("d370"), o = n("6747"), a = n("0d24"), s = n("c098"), c = n("73ac"), l = Object.prototype, u = l.hasOwnProperty; function h(e, t) { var n = o(e), l = !n && i(e), h = !n && !l && a(e), f = !n && !l && !h && c(e), d = n || l || h || f, p = d ? r(e.length, String) : [], v = p.length; for (var m in e) !t && !u.call(e, m) || d && ("length" == m || h && ("offset" == m || "parent" == m) || f && ("buffer" == m || "byteLength" == m || "byteOffset" == m) || s(m, v)) || p.push(m); return p } e.exports = h }, 7037: function (e, t, n) { function r(t) { return "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? (e.exports = r = function (e) { return typeof e }, e.exports["default"] = e.exports, e.exports.__esModule = !0) : (e.exports = r = function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, e.exports["default"] = e.exports, e.exports.__esModule = !0), r(t) } n("a4d3"), n("e01a"), n("d3b7"), n("d28b"), n("3ca3"), n("ddb0"), e.exports = r, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, 7039: function (e, t, n) { var r = n("23e7"), i = n("d039"), o = n("057f").f, a = i((function () { return !Object.getOwnPropertyNames(1) })); r({ target: "Object", stat: !0, forced: a }, { getOwnPropertyNames: o }) }, 7104: function (e, t, n) {
+        (function (t, n) { e.exports = n() })("undefined" !== typeof self && self, (function () {
+            return function (e) { var t = {}; function n(r) { if (t[r]) return t[r].exports; var i = t[r] = { i: r, l: !1, exports: {} }; return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports } return n.m = e, n.c = t, n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { configurable: !1, enumerable: !0, get: r }) }, n.n = function (e) { var t = e && e.__esModule ? function () { return e["default"] } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = 195) }([function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(103); n.d(t, "geoArea", (function () { return r["c"] })); var i = n(197); n.d(t, "geoBounds", (function () { return i["a"] })); var o = n(198); n.d(t, "geoCentroid", (function () { return o["a"] })); var a = n(104); n.d(t, "geoCircle", (function () { return a["b"] })); var s = n(65); n.d(t, "geoClipExtent", (function () { return s["b"] })); var c = n(217); n.d(t, "geoContains", (function () { return c["a"] })); var l = n(122); n.d(t, "geoDistance", (function () { return l["a"] })); var u = n(218); n.d(t, "geoGraticule", (function () { return u["a"] })), n.d(t, "geoGraticule10", (function () { return u["b"] })); var h = n(219); n.d(t, "geoInterpolate", (function () { return h["a"] })); var f = n(123); n.d(t, "geoLength", (function () { return f["a"] })); var d = n(220); n.d(t, "geoPath", (function () { return d["a"] })); var p = n(125); n.d(t, "geoAlbers", (function () { return p["a"] })); var v = n(230); n.d(t, "geoAlbersUsa", (function () { return v["a"] })); var m = n(231); n.d(t, "geoAzimuthalEqualArea", (function () { return m["b"] })), n.d(t, "geoAzimuthalEqualAreaRaw", (function () { return m["a"] })); var g = n(232); n.d(t, "geoAzimuthalEquidistant", (function () { return g["b"] })), n.d(t, "geoAzimuthalEquidistantRaw", (function () { return g["a"] })); var y = n(233); n.d(t, "geoConicConformal", (function () { return y["b"] })), n.d(t, "geoConicConformalRaw", (function () { return y["a"] })); var b = n(68); n.d(t, "geoConicEqualArea", (function () { return b["b"] })), n.d(t, "geoConicEqualAreaRaw", (function () { return b["a"] })); var x = n(234); n.d(t, "geoConicEquidistant", (function () { return x["b"] })), n.d(t, "geoConicEquidistantRaw", (function () { return x["a"] })); var w = n(127); n.d(t, "geoEquirectangular", (function () { return w["a"] })), n.d(t, "geoEquirectangularRaw", (function () { return w["b"] })); var _ = n(235); n.d(t, "geoGnomonic", (function () { return _["a"] })), n.d(t, "geoGnomonicRaw", (function () { return _["b"] })); var C = n(236); n.d(t, "geoIdentity", (function () { return C["a"] })); var M = n(17); n.d(t, "geoProjection", (function () { return M["a"] })), n.d(t, "geoProjectionMutator", (function () { return M["b"] })); var O = n(71); n.d(t, "geoMercator", (function () { return O["a"] })), n.d(t, "geoMercatorRaw", (function () { return O["c"] })); var k = n(237); n.d(t, "geoOrthographic", (function () { return k["a"] })), n.d(t, "geoOrthographicRaw", (function () { return k["b"] })); var S = n(238); n.d(t, "geoStereographic", (function () { return S["a"] })), n.d(t, "geoStereographicRaw", (function () { return S["b"] })); var T = n(239); n.d(t, "geoTransverseMercator", (function () { return T["a"] })), n.d(t, "geoTransverseMercatorRaw", (function () { return T["b"] })); var A = n(50); n.d(t, "geoRotation", (function () { return A["a"] })); var L = n(22); n.d(t, "geoStream", (function () { return L["a"] })); var j = n(51); n.d(t, "geoTransform", (function () { return j["a"] })) }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return r })), n.d(t, "f", (function () { return i })), n.d(t, "g", (function () { return o })), n.d(t, "h", (function () { return a })), n.d(t, "m", (function () { return s })), n.d(t, "n", (function () { return c })), n.d(t, "p", (function () { return l })), n.d(t, "q", (function () { return u })), n.d(t, "r", (function () { return h })), n.d(t, "t", (function () { return f })), n.d(t, "w", (function () { return d })), n.d(t, "x", (function () { return p })), n.d(t, "y", (function () { return v })), n.d(t, "F", (function () { return m })), n.d(t, "k", (function () { return g })), n.d(t, "l", (function () { return y })), n.d(t, "s", (function () { return b })), n.d(t, "o", (function () { return x })), n.d(t, "u", (function () { return w })), n.d(t, "C", (function () { return _ })), n.d(t, "D", (function () { return C })), n.d(t, "E", (function () { return M })), n.d(t, "H", (function () { return O })), n.d(t, "j", (function () { return k })), n.d(t, "v", (function () { return S })), t["z"] = T, t["e"] = A, t["b"] = L, t["B"] = j, t["G"] = z, t["A"] = E, t["i"] = P, t["d"] = D, t["c"] = H; var r = Math.abs, i = Math.atan, o = Math.atan2, a = (Math.ceil, Math.cos), s = Math.exp, c = Math.floor, l = Math.log, u = Math.max, h = Math.min, f = Math.pow, d = Math.round, p = Math.sign || function (e) { return e > 0 ? 1 : e < 0 ? -1 : 0 }, v = Math.sin, m = Math.tan, g = 1e-6, y = 1e-12, b = Math.PI, x = b / 2, w = b / 4, _ = Math.SQRT1_2, C = j(2), M = j(b), O = 2 * b, k = 180 / b, S = b / 180; function T(e) { return e ? e / Math.sin(e) : 1 } function A(e) { return e > 1 ? x : e < -1 ? -x : Math.asin(e) } function L(e) { return e > 1 ? 0 : e < -1 ? b : Math.acos(e) } function j(e) { return e > 0 ? Math.sqrt(e) : 0 } function z(e) { return e = s(2 * e), (e - 1) / (e + 1) } function E(e) { return (s(e) - s(-e)) / 2 } function P(e) { return (s(e) + s(-e)) / 2 } function D(e) { return l(e + j(e * e + 1)) } function H(e) { return l(e + j(e * e - 1)) } }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } function i(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var o = n(3), a = n(77), s = n(76), c = n(356), l = n(139), u = n(39), h = n(84), f = function (e) { function t(n) { var r; void 0 === n && (n = { state: {} }), r = e.call(this) || this; var a = i(i(r)); return o(a, { _onChangeTimer: null, DataSet: t, isDataSet: !0, views: {} }, n), r } r(t, e); var n = t.prototype; return n._getUniqueViewName = function () { var e = this, t = c("view_"); while (e.views[t]) t = c("view_"); return t }, n.createView = function (e, t) { void 0 === t && (t = {}); var n = this; if (a(e) && (e = n._getUniqueViewName()), s(e) && (t = e, e = n._getUniqueViewName()), n.views[e]) throw new Error("data view exists: " + e); var r = new u(n, t); return n.views[e] = r, r }, n.getView = function (e) { return this.views[e] }, n.setView = function (e, t) { this.views[e] = t }, n.setState = function (e, t) { var n = this; n.state[e] = t, n._onChangeTimer && (clearTimeout(n._onChangeTimer), n._onChangeTimer = null), n._onChangeTimer = setTimeout((function () { n.emit("statechange", e, t) }), 16) }, t }(l); o(f, { CONSTANTS: h, DataSet: f, DataView: u, View: u, connectors: {}, transforms: {}, registerConnector: function (e, t) { f.connectors[e] = t }, getConnector: function (e) { return f.connectors[e] || f.connectors.default }, registerTransform: function (e, t) { f.transforms[e] = t }, getTransform: function (e) { return f.transforms[e] || f.transforms.default } }, h), u.DataSet = f, o(f.prototype, { view: f.prototype.createView }), f.version = "0.10.2", e.exports = f }, function (e, t) { function n(e, t) { for (var n in t) t.hasOwnProperty(n) && "constructor" !== n && void 0 !== t[n] && (e[n] = t[n]) } var r = function (e, t, r, i) { return t && n(e, t), r && n(e, r), i && n(e, i), e }; e.exports = r }, function (e, t, n) { "use strict"; n.d(t, "i", (function () { return r })), n.d(t, "j", (function () { return i })), n.d(t, "o", (function () { return o })), n.d(t, "l", (function () { return a })), n.d(t, "q", (function () { return s })), n.d(t, "w", (function () { return c })), n.d(t, "h", (function () { return l })), n.d(t, "r", (function () { return u })), n.d(t, "a", (function () { return h })), n.d(t, "d", (function () { return f })), n.d(t, "e", (function () { return d })), n.d(t, "g", (function () { return p })), n.d(t, "f", (function () { return v })), n.d(t, "k", (function () { return m })), n.d(t, "n", (function () { return g })), n.d(t, "p", (function () { return y })), n.d(t, "t", (function () { return b })), n.d(t, "s", (function () { return x })), n.d(t, "u", (function () { return w })), n.d(t, "v", (function () { return _ })), t["b"] = C, t["c"] = M, t["m"] = O; var r = 1e-6, i = 1e-12, o = Math.PI, a = o / 2, s = o / 4, c = 2 * o, l = 180 / o, u = o / 180, h = Math.abs, f = Math.atan, d = Math.atan2, p = Math.cos, v = Math.ceil, m = Math.exp, g = (Math.floor, Math.log), y = Math.pow, b = Math.sin, x = Math.sign || function (e) { return e > 0 ? 1 : e < 0 ? -1 : 0 }, w = Math.sqrt, _ = Math.tan; function C(e) { return e > 1 ? 0 : e < -1 ? o : Math.acos(e) } function M(e) { return e > 1 ? a : e < -1 ? -a : Math.asin(e) } function O(e) { return (e = b(e / 2)) * e } }, function (e, t, n) { "use strict"; n.d(t, "i", (function () { return r })), n.d(t, "j", (function () { return i })), n.d(t, "o", (function () { return o })), n.d(t, "l", (function () { return a })), n.d(t, "q", (function () { return s })), n.d(t, "w", (function () { return c })), n.d(t, "h", (function () { return l })), n.d(t, "r", (function () { return u })), n.d(t, "a", (function () { return h })), n.d(t, "d", (function () { return f })), n.d(t, "e", (function () { return d })), n.d(t, "g", (function () { return p })), n.d(t, "f", (function () { return v })), n.d(t, "k", (function () { return m })), n.d(t, "n", (function () { return g })), n.d(t, "p", (function () { return y })), n.d(t, "t", (function () { return b })), n.d(t, "s", (function () { return x })), n.d(t, "u", (function () { return w })), n.d(t, "v", (function () { return _ })), t["b"] = C, t["c"] = M, t["m"] = O; var r = 1e-6, i = 1e-12, o = Math.PI, a = o / 2, s = o / 4, c = 2 * o, l = 180 / o, u = o / 180, h = Math.abs, f = Math.atan, d = Math.atan2, p = Math.cos, v = Math.ceil, m = Math.exp, g = (Math.floor, Math.log), y = Math.pow, b = Math.sin, x = Math.sign || function (e) { return e > 0 ? 1 : e < 0 ? -1 : 0 }, w = Math.sqrt, _ = Math.tan; function C(e) { return e > 1 ? 0 : e < -1 ? o : Math.acos(e) } function M(e) { return e > 1 ? a : e < -1 ? -a : Math.asin(e) } function O(e) { return (e = b(e / 2)) * e } }, function (e, t, n) { var r = n(41), i = Array.isArray ? Array.isArray : function (e) { return r(e, "Array") }; e.exports = i }, function (e, t, n) { var r = n(6), i = n(10), o = "Invalid field: it must be a string!", a = "Invalid fields: it must be an array!"; e.exports = { getField: function (e, t) { var n = e.field, a = e.fields; if (i(n)) return n; if (r(n)) return console.warn(o), n[0]; if (console.warn(o + " will try to get fields instead."), i(a)) return a; if (r(a) && a.length) return a[0]; if (t) return t; throw new TypeError(o) }, getFields: function (e, t) { var n = e.field, o = e.fields; if (r(o)) return o; if (i(o)) return console.warn(a), [o]; if (console.warn(a + " will try to get field instead."), i(n)) return console.warn(a), [n]; if (r(n) && n.length) return console.warn(a), n; if (t) return t; throw new TypeError(a) } } }, function (e, t, n) { var r; try { r = n(169) } catch (i) { } r || (r = window._), e.exports = r }, function (e, t, n) { var r = n(76), i = n(6), o = function (e, t) { if (e) { var n = void 0; if (i(e)) { for (var o = 0, a = e.length; o < a; o++)if (n = t(e[o], o), !1 === n) break } else if (r(e)) for (var s in e) if (e.hasOwnProperty(s) && (n = t(e[s], s), !1 === n)) break } }; e.exports = o }, function (e, t, n) { var r = n(41), i = function (e) { return r(e, "String") }; e.exports = i }, function (e, t, n) { var r = n(41), i = function (e) { return r(e, "Function") }; e.exports = i }, function (e, t, n) { "use strict"; var r = n(8), i = n(16).Graph; function o(e, t, n, i) { var o; do { o = r.uniqueId(i) } while (e.hasNode(o)); return n.dummy = t, e.setNode(o, n), o } function a(e) { var t = (new i).setGraph(e.graph()); return r.forEach(e.nodes(), (function (n) { t.setNode(n, e.node(n)) })), r.forEach(e.edges(), (function (n) { var r = t.edge(n.v, n.w) || { weight: 0, minlen: 1 }, i = e.edge(n); t.setEdge(n.v, n.w, { weight: r.weight + i.weight, minlen: Math.max(r.minlen, i.minlen) }) })), t } function s(e) { var t = new i({ multigraph: e.isMultigraph() }).setGraph(e.graph()); return r.forEach(e.nodes(), (function (n) { e.children(n).length || t.setNode(n, e.node(n)) })), r.forEach(e.edges(), (function (n) { t.setEdge(n, e.edge(n)) })), t } function c(e) { var t = r.map(e.nodes(), (function (t) { var n = {}; return r.forEach(e.outEdges(t), (function (t) { n[t.w] = (n[t.w] || 0) + e.edge(t).weight })), n })); return r.zipObject(e.nodes(), t) } function l(e) { var t = r.map(e.nodes(), (function (t) { var n = {}; return r.forEach(e.inEdges(t), (function (t) { n[t.v] = (n[t.v] || 0) + e.edge(t).weight })), n })); return r.zipObject(e.nodes(), t) } function u(e, t) { var n, r, i = e.x, o = e.y, a = t.x - i, s = t.y - o, c = e.width / 2, l = e.height / 2; if (!a && !s) throw new Error("Not possible to find intersection inside of the rectangle"); return Math.abs(s) * c > Math.abs(a) * l ? (s < 0 && (l = -l), n = l * a / s, r = l) : (a < 0 && (c = -c), n = c, r = c * s / a), { x: i + n, y: o + r } } function h(e) { var t = r.map(r.range(v(e) + 1), (function () { return [] })); return r.forEach(e.nodes(), (function (n) { var i = e.node(n), o = i.rank; r.isUndefined(o) || (t[o][i.order] = n) })), t } function f(e) { var t = r.minBy(r.map(e.nodes(), (function (t) { return e.node(t).rank }))); r.forEach(e.nodes(), (function (n) { var i = e.node(n); r.has(i, "rank") && (i.rank -= t) })) } function d(e) { var t = r.minBy(r.map(e.nodes(), (function (t) { return e.node(t).rank }))), n = []; r.forEach(e.nodes(), (function (r) { var i = e.node(r).rank - t; n[i] || (n[i] = []), n[i].push(r) })); var i = 0, o = e.graph().nodeRankFactor; r.forEach(n, (function (t, n) { r.isUndefined(t) && n % o !== 0 ? --i : i && r.forEach(t, (function (t) { e.node(t).rank += i })) })) } function p(e, t, n, r) { var i = { width: 0, height: 0 }; return arguments.length >= 4 && (i.rank = n, i.order = r), o(e, "border", i, t) } function v(e) { return r.max(r.map(e.nodes(), (function (t) { var n = e.node(t).rank; if (!r.isUndefined(n)) return n }))) } function m(e, t) { var n = { lhs: [], rhs: [] }; return r.forEach(e, (function (e) { t(e) ? n.lhs.push(e) : n.rhs.push(e) })), n } function g(e, t) { var n = r.now(); try { return t() } finally { console.log(e + " time: " + (r.now() - n) + "ms") } } function y(e, t) { return t() } e.exports = { addDummyNode: o, simplify: a, asNonCompoundGraph: s, successorWeights: c, predecessorWeights: l, intersectRect: u, buildLayerMatrix: h, normalizeRanks: f, removeEmptyRanks: d, addBorderNode: p, maxRank: v, partition: m, time: g, notime: y } }, function (e, t, n) { var r; try { r = n(169) } catch (i) { } r || (r = window._), e.exports = r }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(109); n.d(t, "bisect", (function () { return r["c"] })), n.d(t, "bisectRight", (function () { return r["b"] })), n.d(t, "bisectLeft", (function () { return r["a"] })); var i = n(30); n.d(t, "ascending", (function () { return i["a"] })); var o = n(110); n.d(t, "bisector", (function () { return o["a"] })); var a = n(201); n.d(t, "cross", (function () { return a["a"] })); var s = n(202); n.d(t, "descending", (function () { return s["a"] })); var c = n(112); n.d(t, "deviation", (function () { return c["a"] })); var l = n(114); n.d(t, "extent", (function () { return l["a"] })); var u = n(203); n.d(t, "histogram", (function () { return u["a"] })); var h = n(206); n.d(t, "thresholdFreedmanDiaconis", (function () { return h["a"] })); var f = n(207); n.d(t, "thresholdScott", (function () { return f["a"] })); var d = n(118); n.d(t, "thresholdSturges", (function () { return d["a"] })); var p = n(208); n.d(t, "max", (function () { return p["a"] })); var v = n(209); n.d(t, "mean", (function () { return v["a"] })); var m = n(210); n.d(t, "median", (function () { return m["a"] })); var g = n(211); n.d(t, "merge", (function () { return g["a"] })); var y = n(119); n.d(t, "min", (function () { return y["a"] })); var b = n(111); n.d(t, "pairs", (function () { return b["a"] })); var x = n(212); n.d(t, "permute", (function () { return x["a"] })); var w = n(66); n.d(t, "quantile", (function () { return w["a"] })); var _ = n(116); n.d(t, "range", (function () { return _["a"] })); var C = n(213); n.d(t, "scan", (function () { return C["a"] })); var M = n(214); n.d(t, "shuffle", (function () { return M["a"] })); var O = n(215); n.d(t, "sum", (function () { return O["a"] })); var k = n(117); n.d(t, "ticks", (function () { return k["a"] })), n.d(t, "tickIncrement", (function () { return k["b"] })), n.d(t, "tickStep", (function () { return k["c"] })); var S = n(120); n.d(t, "transpose", (function () { return S["a"] })); var T = n(113); n.d(t, "variance", (function () { return T["a"] })); var A = n(216); n.d(t, "zip", (function () { return A["a"] })) }, function (e, t, n) { var r = n(6), i = n(11), o = n(10), a = n(352), s = n(353); e.exports = function (e, t, n) { void 0 === n && (n = []); var c, l = e; n && n.length && (l = s(e, n)), i(t) ? c = t : r(t) ? c = function (e) { return "_" + t.map((function (t) { return e[t] })).join("-") } : o(t) && (c = function (e) { return "_" + e[t] }); var u = a(l, c); return u } }, function (e, t, n) { var r; try { r = n(433) } catch (i) { } r || (r = window.graphlib), e.exports = r }, function (e, t, n) { "use strict"; t["a"] = p, t["b"] = v; var r = n(226), i = n(227), o = n(65), a = n(105), s = n(67), c = n(4), l = n(50), u = n(51), h = n(70), f = n(228), d = Object(u["b"])({ point: function (e, t) { this.stream.point(e * c["r"], t * c["r"]) } }); function p(e) { return v((function () { return e }))() } function v(e) { var t, n, u, p, v, m, g, y, b, x, w = 150, _ = 480, C = 250, M = 0, O = 0, k = 0, S = 0, T = 0, A = null, L = r["a"], j = null, z = s["a"], E = .5, P = Object(f["a"])(V, E); function D(e) { return e = v(e[0] * c["r"], e[1] * c["r"]), [e[0] * w + n, u - e[1] * w] } function H(e) { return e = v.invert((e[0] - n) / w, (u - e[1]) / w), e && [e[0] * c["h"], e[1] * c["h"]] } function V(e, r) { return e = t(e, r), [e[0] * w + n, u - e[1] * w] } function I() { v = Object(a["a"])(p = Object(l["b"])(k, S, T), t); var e = t(M, O); return n = _ - e[0] * w, u = C + e[1] * w, N() } function N() { return b = x = null, D } return D.stream = function (e) { return b && x === e ? b : b = d(L(p, P(z(x = e)))) }, D.clipAngle = function (e) { return arguments.length ? (L = +e ? Object(i["a"])(A = e * c["r"], 6 * c["r"]) : (A = null, r["a"]), N()) : A * c["h"] }, D.clipExtent = function (e) { return arguments.length ? (z = null == e ? (j = m = g = y = null, s["a"]) : Object(o["a"])(j = +e[0][0], m = +e[0][1], g = +e[1][0], y = +e[1][1]), N()) : null == j ? null : [[j, m], [g, y]] }, D.scale = function (e) { return arguments.length ? (w = +e, I()) : w }, D.translate = function (e) { return arguments.length ? (_ = +e[0], C = +e[1], I()) : [_, C] }, D.center = function (e) { return arguments.length ? (M = e[0] % 360 * c["r"], O = e[1] % 360 * c["r"], I()) : [M * c["h"], O * c["h"]] }, D.rotate = function (e) { return arguments.length ? (k = e[0] % 360 * c["r"], S = e[1] % 360 * c["r"], T = e.length > 2 ? e[2] % 360 * c["r"] : 0, I()) : [k * c["h"], S * c["h"], T * c["h"]] }, D.precision = function (e) { return arguments.length ? (P = Object(f["a"])(V, E = e * e), N()) : Object(c["u"])(E) }, D.fitExtent = function (e, t) { return Object(h["a"])(D, e, t) }, D.fitSize = function (e, t) { return Object(h["b"])(D, e, t) }, function () { return t = e.apply(this, arguments), D.invert = t.invert && H, I() } } }, function (e, t, n) { "use strict"; t["a"] = p, t["b"] = v; var r = n(336), i = n(338), o = n(145), a = n(144), s = n(150), c = n(5), l = n(78), u = n(81), h = n(154), f = n(339), d = Object(u["b"])({ point: function (e, t) { this.stream.point(e * c["r"], t * c["r"]) } }); function p(e) { return v((function () { return e }))() } function v(e) { var t, n, u, p, v, m, g, y, b, x, w = 150, _ = 480, C = 250, M = 0, O = 0, k = 0, S = 0, T = 0, A = null, L = r["a"], j = null, z = s["a"], E = .5, P = Object(f["a"])(V, E); function D(e) { return e = v(e[0] * c["r"], e[1] * c["r"]), [e[0] * w + n, u - e[1] * w] } function H(e) { return e = v.invert((e[0] - n) / w, (u - e[1]) / w), e && [e[0] * c["h"], e[1] * c["h"]] } function V(e, r) { return e = t(e, r), [e[0] * w + n, u - e[1] * w] } function I() { v = Object(a["a"])(p = Object(l["b"])(k, S, T), t); var e = t(M, O); return n = _ - e[0] * w, u = C + e[1] * w, N() } function N() { return b = x = null, D } return D.stream = function (e) { return b && x === e ? b : b = d(L(p, P(z(x = e)))) }, D.clipAngle = function (e) { return arguments.length ? (L = +e ? Object(i["a"])(A = e * c["r"], 6 * c["r"]) : (A = null, r["a"]), N()) : A * c["h"] }, D.clipExtent = function (e) { return arguments.length ? (z = null == e ? (j = m = g = y = null, s["a"]) : Object(o["a"])(j = +e[0][0], m = +e[0][1], g = +e[1][0], y = +e[1][1]), N()) : null == j ? null : [[j, m], [g, y]] }, D.scale = function (e) { return arguments.length ? (w = +e, I()) : w }, D.translate = function (e) { return arguments.length ? (_ = +e[0], C = +e[1], I()) : [_, C] }, D.center = function (e) { return arguments.length ? (M = e[0] % 360 * c["r"], O = e[1] % 360 * c["r"], I()) : [M * c["h"], O * c["h"]] }, D.rotate = function (e) { return arguments.length ? (k = e[0] % 360 * c["r"], S = e[1] % 360 * c["r"], T = e.length > 2 ? e[2] % 360 * c["r"] : 0, I()) : [k * c["h"], S * c["h"], T * c["h"]] }, D.precision = function (e) { return arguments.length ? (P = Object(f["a"])(V, E = e * e), N()) : Object(c["u"])(E) }, D.fitExtent = Object(h["a"])(D), D.fitSize = Object(h["b"])(D), function () { return t = e.apply(this, arguments), D.invert = t.invert && H, I() } } }, function (e, t, n) { !function (e, n) { n(t) }(0, (function (e) { "use strict"; function t(e) { if (0 === e.length) return 0; for (var t, n = e[0], r = 0, i = 1; i < e.length; i++)t = n + e[i], Math.abs(n) >= Math.abs(e[i]) ? r += n - t + e[i] : r += e[i] - t + n, n = t; return n + r } function n(e) { if (0 === e.length) throw new Error("mean requires at least one data point"); return t(e) / e.length } function r(e, t) { var r, i, o = n(e), a = 0; if (2 === t) for (i = 0; i < e.length; i++)a += (r = e[i] - o) * r; else for (i = 0; i < e.length; i++)a += Math.pow(e[i] - o, t); return a } function i(e) { if (0 === e.length) throw new Error("variance requires at least one data point"); return r(e, 2) / e.length } function o(e) { if (1 === e.length) return 0; var t = i(e); return Math.sqrt(t) } function a(e) { if (0 === e.length) throw new Error("mode requires at least one data point"); if (1 === e.length) return e[0]; for (var t = e[0], n = NaN, r = 0, i = 1, o = 1; o < e.length + 1; o++)e[o] !== t ? (r < i && (r = i, n = t), i = 1, t = e[o]) : i++; return n } function s(e) { return e.slice().sort((function (e, t) { return e - t })) } function c(e) { if (0 === e.length) throw new Error("min requires at least one data point"); for (var t = e[0], n = 1; n < e.length; n++)e[n] < t && (t = e[n]); return t } function l(e) { if (0 === e.length) throw new Error("max requires at least one data point"); for (var t = e[0], n = 1; n < e.length; n++)e[n] > t && (t = e[n]); return t } function u(e, t) { var n = e.length * t; if (0 === e.length) throw new Error("quantile requires at least one data point."); if (t < 0 || 1 < t) throw new Error("quantiles must be between 0 and 1"); return 1 === t ? e[e.length - 1] : 0 === t ? e[0] : n % 1 != 0 ? e[Math.ceil(n) - 1] : e.length % 2 == 0 ? (e[n - 1] + e[n]) / 2 : e[n] } function h(e, t, n, r) { for (n = n || 0, r = r || e.length - 1; n < r;) { if (600 < r - n) { var i = r - n + 1, o = t - n + 1, a = Math.log(i), s = .5 * Math.exp(2 * a / 3), c = .5 * Math.sqrt(a * s * (i - s) / i); o - i / 2 < 0 && (c *= -1), h(e, t, Math.max(n, Math.floor(t - o * s / i + c)), Math.min(r, Math.floor(t + (i - o) * s / i + c))) } var l = e[t], u = n, d = r; for (f(e, n, t), e[r] > l && f(e, n, r); u < d;) { for (f(e, u, d), u++, d--; e[u] < l;)u++; for (; e[d] > l;)d-- } e[n] === l ? f(e, n, d) : f(e, ++d, r), d <= t && (n = d + 1), t <= d && (r = d - 1) } } function f(e, t, n) { var r = e[t]; e[t] = e[n], e[n] = r } function d(e, t) { var n = e.slice(); if (Array.isArray(t)) { !function (e, t) { for (var n = [0], r = 0; r < t.length; r++)n.push(m(e.length, t[r])); n.push(e.length - 1), n.sort(v); for (var i = [0, n.length - 1]; i.length;) { var o = Math.ceil(i.pop()), a = Math.floor(i.pop()); if (!(o - a <= 1)) { var s = Math.floor((a + o) / 2); p(e, n[s], n[a], n[o]), i.push(a, s, s, o) } } }(n, t); for (var r = [], i = 0; i < t.length; i++)r[i] = u(n, t[i]); return r } return p(n, m(n.length, t), 0, n.length - 1), u(n, t) } function p(e, t, n, r) { t % 1 == 0 ? h(e, t, n, r) : (h(e, t = Math.floor(t), n, r), h(e, t + 1, t + 1, r)) } function v(e, t) { return e - t } function m(e, t) { var n = e * t; return 1 === t ? e - 1 : 0 === t ? 0 : n % 1 != 0 ? Math.ceil(n) - 1 : e % 2 == 0 ? n - .5 : n } function g(e, t) { if (t < e[0]) return 0; if (t > e[e.length - 1]) return 1; var n = function (e, t) { for (var n = 0, r = 0, i = e.length; r < i;)t <= e[n = r + i >>> 1] ? i = n : r = -~n; return r }(e, t); if (e[n] !== t) return n / e.length; n++; var r = function (e, t) { for (var n = 0, r = 0, i = e.length; r < i;)t >= e[n = r + i >>> 1] ? r = -~n : i = n; return r }(e, t); if (r === n) return n / e.length; var i = r - n + 1; return i * (r + n) / 2 / i / e.length } function y(e) { var t = d(e, .75), n = d(e, .25); if ("number" == typeof t && "number" == typeof n) return t - n } function b(e) { return +d(e, .5) } function x(e) { for (var t = b(e), n = [], r = 0; r < e.length; r++)n.push(Math.abs(e[r] - t)); return b(n) } function w(e, t) { t = t || Math.random; for (var n, r, i = e.length; 0 < i;)r = Math.floor(t() * i--), n = e[i], e[i] = e[r], e[r] = n; return e } function _(e, t) { return w(e.slice().slice(), t) } function C(e) { for (var t, n = 0, r = 0; r < e.length; r++)0 !== r && e[r] === t || (t = e[r], n++); return n } function M(e, t) { for (var n = [], r = 0; r < e; r++) { for (var i = [], o = 0; o < t; o++)i.push(0); n.push(i) } return n } function O(e, t, n, r) { var i; if (0 < e) { var o = (n[t] - n[e - 1]) / (t - e + 1); i = r[t] - r[e - 1] - (t - e + 1) * o * o } else i = r[t] - n[t] * n[t] / (t + 1); return i < 0 ? 0 : i } function k(e, t, n, r, i, o, a) { if (!(t < e)) { var s = Math.floor((e + t) / 2); r[n][s] = r[n - 1][s - 1], i[n][s] = s; var c = n; n < e && (c = Math.max(c, i[n][e - 1] || 0)), c = Math.max(c, i[n - 1][s] || 0); var l, u, h, f = s - 1; t < r.length - 1 && (f = Math.min(f, i[n][t + 1] || 0)); for (var d = f; c <= d && !((l = O(d, s, o, a)) + r[n - 1][c - 1] >= r[n][s]); --d)(u = O(c, s, o, a) + r[n - 1][c - 1]) < r[n][s] && (r[n][s] = u, i[n][s] = c), c++, (h = l + r[n - 1][d - 1]) < r[n][s] && (r[n][s] = h, i[n][s] = d); k(e, s - 1, n, r, i, o, a), k(s + 1, t, n, r, i, o, a) } } function S(e, t) { if (e.length !== t.length) throw new Error("sampleCovariance requires samples with equal lengths"); if (e.length < 2) throw new Error("sampleCovariance requires at least two data points in each sample"); for (var r = n(e), i = n(t), o = 0, a = 0; a < e.length; a++)o += (e[a] - r) * (t[a] - i); return o / (e.length - 1) } function T(e) { if (e.length < 2) throw new Error("sampleVariance requires at least two data points"); return r(e, 2) / (e.length - 1) } function A(e) { var t = T(e); return Math.sqrt(t) } function L(e, t, n, r) { return (e * t + n * r) / (t + r) } function j(e) { if (0 === e.length) throw new Error("rootMeanSquare requires at least one data point"); for (var t = 0, n = 0; n < e.length; n++)t += Math.pow(e[n], 2); return Math.sqrt(t / e.length) } function z() { this.totalCount = 0, this.data = {} } function E() { this.weights = [], this.bias = 0 } z.prototype.train = function (e, t) { for (var n in this.data[t] || (this.data[t] = {}), e) { var r = e[n]; void 0 === this.data[t][n] && (this.data[t][n] = {}), void 0 === this.data[t][n][r] && (this.data[t][n][r] = 0), this.data[t][n][r]++ } this.totalCount++ }, z.prototype.score = function (e) { var t, n = {}; for (var r in e) { var i = e[r]; for (t in this.data) n[t] = {}, this.data[t][r] ? n[t][r + "_" + i] = (this.data[t][r][i] || 0) / this.totalCount : n[t][r + "_" + i] = 0 } var o = {}; for (t in n) for (var a in o[t] = 0, n[t]) o[t] += n[t][a]; return o }, E.prototype.predict = function (e) { if (e.length !== this.weights.length) return null; for (var t = 0, n = 0; n < this.weights.length; n++)t += this.weights[n] * e[n]; return 0 < (t += this.bias) ? 1 : 0 }, E.prototype.train = function (e, t) { if (0 !== t && 1 !== t) return null; e.length !== this.weights.length && (this.weights = e, this.bias = 1); var n = this.predict(e); if (n !== t) { for (var r = t - n, i = 0; i < this.weights.length; i++)this.weights[i] += r * e[i]; this.bias += r } return this }; var P = 1e-4; function D(e) { if (e < 0) throw new Error("factorial requires a non-negative value"); if (Math.floor(e) !== e) throw new Error("factorial requires an integer input"); for (var t = 1, n = 2; n <= e; n++)t *= n; return t } var H = [.9999999999999971, 57.15623566586292, -59.59796035547549, 14.136097974741746, -.4919138160976202, 3399464998481189e-20, 4652362892704858e-20, -9837447530487956e-20, .0001580887032249125, -.00021026444172410488, .00021743961811521265, -.0001643181065367639, 8441822398385275e-20, -26190838401581408e-21, 36899182659531625e-22], V = Math.log(Math.sqrt(2 * Math.PI)), I = { 1: { .995: 0, .99: 0, .975: 0, .95: 0, .9: .02, .5: .45, .1: 2.71, .05: 3.84, .025: 5.02, .01: 6.63, .005: 7.88 }, 2: { .995: .01, .99: .02, .975: .05, .95: .1, .9: .21, .5: 1.39, .1: 4.61, .05: 5.99, .025: 7.38, .01: 9.21, .005: 10.6 }, 3: { .995: .07, .99: .11, .975: .22, .95: .35, .9: .58, .5: 2.37, .1: 6.25, .05: 7.81, .025: 9.35, .01: 11.34, .005: 12.84 }, 4: { .995: .21, .99: .3, .975: .48, .95: .71, .9: 1.06, .5: 3.36, .1: 7.78, .05: 9.49, .025: 11.14, .01: 13.28, .005: 14.86 }, 5: { .995: .41, .99: .55, .975: .83, .95: 1.15, .9: 1.61, .5: 4.35, .1: 9.24, .05: 11.07, .025: 12.83, .01: 15.09, .005: 16.75 }, 6: { .995: .68, .99: .87, .975: 1.24, .95: 1.64, .9: 2.2, .5: 5.35, .1: 10.65, .05: 12.59, .025: 14.45, .01: 16.81, .005: 18.55 }, 7: { .995: .99, .99: 1.25, .975: 1.69, .95: 2.17, .9: 2.83, .5: 6.35, .1: 12.02, .05: 14.07, .025: 16.01, .01: 18.48, .005: 20.28 }, 8: { .995: 1.34, .99: 1.65, .975: 2.18, .95: 2.73, .9: 3.49, .5: 7.34, .1: 13.36, .05: 15.51, .025: 17.53, .01: 20.09, .005: 21.96 }, 9: { .995: 1.73, .99: 2.09, .975: 2.7, .95: 3.33, .9: 4.17, .5: 8.34, .1: 14.68, .05: 16.92, .025: 19.02, .01: 21.67, .005: 23.59 }, 10: { .995: 2.16, .99: 2.56, .975: 3.25, .95: 3.94, .9: 4.87, .5: 9.34, .1: 15.99, .05: 18.31, .025: 20.48, .01: 23.21, .005: 25.19 }, 11: { .995: 2.6, .99: 3.05, .975: 3.82, .95: 4.57, .9: 5.58, .5: 10.34, .1: 17.28, .05: 19.68, .025: 21.92, .01: 24.72, .005: 26.76 }, 12: { .995: 3.07, .99: 3.57, .975: 4.4, .95: 5.23, .9: 6.3, .5: 11.34, .1: 18.55, .05: 21.03, .025: 23.34, .01: 26.22, .005: 28.3 }, 13: { .995: 3.57, .99: 4.11, .975: 5.01, .95: 5.89, .9: 7.04, .5: 12.34, .1: 19.81, .05: 22.36, .025: 24.74, .01: 27.69, .005: 29.82 }, 14: { .995: 4.07, .99: 4.66, .975: 5.63, .95: 6.57, .9: 7.79, .5: 13.34, .1: 21.06, .05: 23.68, .025: 26.12, .01: 29.14, .005: 31.32 }, 15: { .995: 4.6, .99: 5.23, .975: 6.27, .95: 7.26, .9: 8.55, .5: 14.34, .1: 22.31, .05: 25, .025: 27.49, .01: 30.58, .005: 32.8 }, 16: { .995: 5.14, .99: 5.81, .975: 6.91, .95: 7.96, .9: 9.31, .5: 15.34, .1: 23.54, .05: 26.3, .025: 28.85, .01: 32, .005: 34.27 }, 17: { .995: 5.7, .99: 6.41, .975: 7.56, .95: 8.67, .9: 10.09, .5: 16.34, .1: 24.77, .05: 27.59, .025: 30.19, .01: 33.41, .005: 35.72 }, 18: { .995: 6.26, .99: 7.01, .975: 8.23, .95: 9.39, .9: 10.87, .5: 17.34, .1: 25.99, .05: 28.87, .025: 31.53, .01: 34.81, .005: 37.16 }, 19: { .995: 6.84, .99: 7.63, .975: 8.91, .95: 10.12, .9: 11.65, .5: 18.34, .1: 27.2, .05: 30.14, .025: 32.85, .01: 36.19, .005: 38.58 }, 20: { .995: 7.43, .99: 8.26, .975: 9.59, .95: 10.85, .9: 12.44, .5: 19.34, .1: 28.41, .05: 31.41, .025: 34.17, .01: 37.57, .005: 40 }, 21: { .995: 8.03, .99: 8.9, .975: 10.28, .95: 11.59, .9: 13.24, .5: 20.34, .1: 29.62, .05: 32.67, .025: 35.48, .01: 38.93, .005: 41.4 }, 22: { .995: 8.64, .99: 9.54, .975: 10.98, .95: 12.34, .9: 14.04, .5: 21.34, .1: 30.81, .05: 33.92, .025: 36.78, .01: 40.29, .005: 42.8 }, 23: { .995: 9.26, .99: 10.2, .975: 11.69, .95: 13.09, .9: 14.85, .5: 22.34, .1: 32.01, .05: 35.17, .025: 38.08, .01: 41.64, .005: 44.18 }, 24: { .995: 9.89, .99: 10.86, .975: 12.4, .95: 13.85, .9: 15.66, .5: 23.34, .1: 33.2, .05: 36.42, .025: 39.36, .01: 42.98, .005: 45.56 }, 25: { .995: 10.52, .99: 11.52, .975: 13.12, .95: 14.61, .9: 16.47, .5: 24.34, .1: 34.28, .05: 37.65, .025: 40.65, .01: 44.31, .005: 46.93 }, 26: { .995: 11.16, .99: 12.2, .975: 13.84, .95: 15.38, .9: 17.29, .5: 25.34, .1: 35.56, .05: 38.89, .025: 41.92, .01: 45.64, .005: 48.29 }, 27: { .995: 11.81, .99: 12.88, .975: 14.57, .95: 16.15, .9: 18.11, .5: 26.34, .1: 36.74, .05: 40.11, .025: 43.19, .01: 46.96, .005: 49.65 }, 28: { .995: 12.46, .99: 13.57, .975: 15.31, .95: 16.93, .9: 18.94, .5: 27.34, .1: 37.92, .05: 41.34, .025: 44.46, .01: 48.28, .005: 50.99 }, 29: { .995: 13.12, .99: 14.26, .975: 16.05, .95: 17.71, .9: 19.77, .5: 28.34, .1: 39.09, .05: 42.56, .025: 45.72, .01: 49.59, .005: 52.34 }, 30: { .995: 13.79, .99: 14.95, .975: 16.79, .95: 18.49, .9: 20.6, .5: 29.34, .1: 40.26, .05: 43.77, .025: 46.98, .01: 50.89, .005: 53.67 }, 40: { .995: 20.71, .99: 22.16, .975: 24.43, .95: 26.51, .9: 29.05, .5: 39.34, .1: 51.81, .05: 55.76, .025: 59.34, .01: 63.69, .005: 66.77 }, 50: { .995: 27.99, .99: 29.71, .975: 32.36, .95: 34.76, .9: 37.69, .5: 49.33, .1: 63.17, .05: 67.5, .025: 71.42, .01: 76.15, .005: 79.49 }, 60: { .995: 35.53, .99: 37.48, .975: 40.48, .95: 43.19, .9: 46.46, .5: 59.33, .1: 74.4, .05: 79.08, .025: 83.3, .01: 88.38, .005: 91.95 }, 70: { .995: 43.28, .99: 45.44, .975: 48.76, .95: 51.74, .9: 55.33, .5: 69.33, .1: 85.53, .05: 90.53, .025: 95.02, .01: 100.42, .005: 104.22 }, 80: { .995: 51.17, .99: 53.54, .975: 57.15, .95: 60.39, .9: 64.28, .5: 79.33, .1: 96.58, .05: 101.88, .025: 106.63, .01: 112.33, .005: 116.32 }, 90: { .995: 59.2, .99: 61.75, .975: 65.65, .95: 69.13, .9: 73.29, .5: 89.33, .1: 107.57, .05: 113.14, .025: 118.14, .01: 124.12, .005: 128.3 }, 100: { .995: 67.33, .99: 70.06, .975: 74.22, .95: 77.93, .9: 82.36, .5: 99.33, .1: 118.5, .05: 124.34, .025: 129.56, .01: 135.81, .005: 140.17 } }, N = Math.sqrt(2 * Math.PI), R = { gaussian: function (e) { return Math.exp(-.5 * e * e) / N } }, F = { nrd: function (e) { var t = A(e), n = y(e); return "number" == typeof n && (t = Math.min(t, n / 1.34)), 1.06 * t * Math.pow(e.length, -.2) } }; function Y(e, t, n) { var r, i; if (void 0 === t) r = R.gaussian; else if ("string" == typeof t) { if (!R[t]) throw new Error('Unknown kernel "' + t + '"'); r = R[t] } else r = t; if (void 0 === n) i = F.nrd(e); else if ("string" == typeof n) { if (!F[n]) throw new Error('Unknown bandwidth method "' + n + '"'); i = F[n](e) } else i = n; return function (t) { var n = 0, o = 0; for (n = 0; n < e.length; n++)o += r((t - e[n]) / i); return o / i / e.length } } var $ = Math.sqrt(2 * Math.PI); function B(e) { for (var t = e, n = e, r = 1; r < 15; r++)t += n *= e * e / (2 * r + 1); return Math.round(1e4 * (.5 + t / $ * Math.exp(-e * e / 2))) / 1e4 } for (var W = [], q = 0; q <= 3.09; q += .01)W.push(B(q)); function U(e) { var t = 1 / (1 + .5 * Math.abs(e)), n = t * Math.exp(-Math.pow(e, 2) - 1.26551223 + 1.00002368 * t + .37409196 * Math.pow(t, 2) + .09678418 * Math.pow(t, 3) - .18628806 * Math.pow(t, 4) + .27886807 * Math.pow(t, 5) - 1.13520398 * Math.pow(t, 6) + 1.48851587 * Math.pow(t, 7) - .82215223 * Math.pow(t, 8) + .17087277 * Math.pow(t, 9)); return 0 <= e ? 1 - n : n - 1 } function K(e) { var t = 8 * (Math.PI - 3) / (3 * Math.PI * (4 - Math.PI)), n = Math.sqrt(Math.sqrt(Math.pow(2 / (Math.PI * t) + Math.log(1 - e * e) / 2, 2) - Math.log(1 - e * e) / t) - (2 / (Math.PI * t) + Math.log(1 - e * e) / 2)); return 0 <= e ? n : -n } function G(e) { if ("number" == typeof e) return e < 0 ? -1 : 0 === e ? 0 : 1; throw new TypeError("not a number") } e.linearRegression = function (e) { var t, n, r = e.length; if (1 === r) n = e[t = 0][1]; else { for (var i, o, a, s = 0, c = 0, l = 0, u = 0, h = 0; h < r; h++)s += o = (i = e[h])[0], c += a = i[1], l += o * o, u += o * a; n = c / r - (t = (r * u - s * c) / (r * l - s * s)) * s / r } return { m: t, b: n } }, e.linearRegressionLine = function (e) { return function (t) { return e.b + e.m * t } }, e.standardDeviation = o, e.rSquared = function (e, t) { if (e.length < 2) return 1; for (var n, r = 0, i = 0; i < e.length; i++)r += e[i][1]; n = r / e.length; for (var o = 0, a = 0; a < e.length; a++)o += Math.pow(n - e[a][1], 2); for (var s = 0, c = 0; c < e.length; c++)s += Math.pow(e[c][1] - t(e[c][0]), 2); return 1 - s / o }, e.mode = function (e) { return a(s(e)) }, e.modeFast = function (e) { for (var t, n = new Map, r = 0, i = 0; i < e.length; i++) { var o = n.get(e[i]); void 0 === o ? o = 1 : o++, r < o && (t = e[i], r = o), n.set(e[i], o) } if (0 === r) throw new Error("mode requires at last one data point"); return t }, e.modeSorted = a, e.min = c, e.max = l, e.extent = function (e) { if (0 === e.length) throw new Error("extent requires at least one data point"); for (var t = e[0], n = e[0], r = 1; r < e.length; r++)e[r] > n && (n = e[r]), e[r] < t && (t = e[r]); return [t, n] }, e.minSorted = function (e) { return e[0] }, e.maxSorted = function (e) { return e[e.length - 1] }, e.extentSorted = function (e) { return [e[0], e[e.length - 1]] }, e.sum = t, e.sumSimple = function (e) { for (var t = 0, n = 0; n < e.length; n++)t += e[n]; return t }, e.product = function (e) { for (var t = 1, n = 0; n < e.length; n++)t *= e[n]; return t }, e.quantile = d, e.quantileSorted = u, e.quantileRank = function (e, t) { return g(s(e), t) }, e.quantileRankSorted = g, e.interquartileRange = y, e.iqr = y, e.medianAbsoluteDeviation = x, e.mad = x, e.chunk = function (e, t) { var n = []; if (t < 1) throw new Error("chunk size must be a positive number"); if (Math.floor(t) !== t) throw new Error("chunk size must be an integer"); for (var r = 0; r < e.length; r += t)n.push(e.slice(r, r + t)); return n }, e.sampleWithReplacement = function (e, t, n) { if (0 === e.length) return []; n = n || Math.random; for (var r = e.length, i = [], o = 0; o < t; o++) { var a = Math.floor(n() * r); i.push(e[a]) } return i }, e.shuffle = _, e.shuffleInPlace = w, e.sample = function (e, t, n) { return _(e, n).slice(0, t) }, e.ckmeans = function (e, t) { if (t > e.length) throw new Error("cannot generate more classes than there are data values"); var n = s(e); if (1 === C(n)) return [n]; var r = M(t, n.length), i = M(t, n.length); !function (e, t, n) { for (var r, i = t[0].length, o = e[Math.floor(i / 2)], a = [], s = [], c = 0; c < i; ++c)r = e[c] - o, 0 === c ? (a.push(r), s.push(r * r)) : (a.push(a[c - 1] + r), s.push(s[c - 1] + r * r)), t[0][c] = O(0, c, a, s), n[0][c] = 0; for (var l = 1; l < t.length; ++l)k(l < t.length - 1 ? l : i - 1, i - 1, l, t, n, a, s) }(n, r, i); for (var o = [], a = i[0].length - 1, c = i.length - 1; 0 <= c; c--) { var l = i[c][a]; o[c] = n.slice(l, a + 1), 0 < c && (a = l - 1) } return o }, e.uniqueCountSorted = C, e.sumNthPowerDeviations = r, e.equalIntervalBreaks = function (e, t) { if (e.length < 2) return e; for (var n = c(e), r = l(e), i = [n], o = (r - n) / t, a = 1; a < t; a++)i.push(i[0] + o * a); return i.push(r), i }, e.sampleCovariance = S, e.sampleCorrelation = function (e, t) { return S(e, t) / A(e) / A(t) }, e.sampleVariance = T, e.sampleStandardDeviation = A, e.sampleSkewness = function (e) { if (e.length < 3) throw new Error("sampleSkewness requires at least three data points"); for (var t, r = n(e), i = 0, o = 0, a = 0; a < e.length; a++)i += (t = e[a] - r) * t, o += t * t * t; var s = e.length - 1, c = Math.sqrt(i / s), l = e.length; return l * o / ((l - 1) * (l - 2) * Math.pow(c, 3)) }, e.sampleKurtosis = function (e) { var t = e.length; if (t < 4) throw new Error("sampleKurtosis requires at least four data points"); for (var r, i = n(e), o = 0, a = 0, s = 0; s < t; s++)o += (r = e[s] - i) * r, a += r * r * r * r; return (t - 1) / ((t - 2) * (t - 3)) * (t * (t + 1) * a / (o * o) - 3 * (t - 1)) }, e.permutationsHeap = function (e) { for (var t = new Array(e.length), n = [e.slice()], r = 0; r < e.length; r++)t[r] = 0; for (r = 0; r < e.length;)if (t[r] < r) { var i = 0; r % 2 != 0 && (i = t[r]); var o = e[i]; e[i] = e[r], e[r] = o, n.push(e.slice()), t[r]++, r = 0 } else t[r] = 0, r++; return n }, e.combinations = function e(t, n) { var r, i, o, a, s = []; for (r = 0; r < t.length; r++)if (1 === n) s.push([t[r]]); else for (o = e(t.slice(r + 1, t.length), n - 1), i = 0; i < o.length; i++)(a = o[i]).unshift(t[r]), s.push(a); return s }, e.combinationsReplacement = function e(t, n) { for (var r = [], i = 0; i < t.length; i++)if (1 === n) r.push([t[i]]); else for (var o = e(t.slice(i, t.length), n - 1), a = 0; a < o.length; a++)r.push([t[i]].concat(o[a])); return r }, e.addToMean = function (e, t, n) { return e + (n - e) / (t + 1) }, e.combineMeans = L, e.combineVariances = function (e, t, n, r, i, o) { var a = L(t, n, i, o); return (n * (e + Math.pow(t - a, 2)) + o * (r + Math.pow(i - a, 2))) / (n + o) }, e.geometricMean = function (e) { if (0 === e.length) throw new Error("geometricMean requires at least one data point"); for (var t = 1, n = 0; n < e.length; n++) { if (e[n] <= 0) throw new Error("geometricMean requires only positive numbers as input"); t *= e[n] } return Math.pow(t, 1 / e.length) }, e.harmonicMean = function (e) { if (0 === e.length) throw new Error("harmonicMean requires at least one data point"); for (var t = 0, n = 0; n < e.length; n++) { if (e[n] <= 0) throw new Error("harmonicMean requires only positive numbers as input"); t += 1 / e[n] } return e.length / t }, e.average = n, e.mean = n, e.median = b, e.medianSorted = function (e) { return u(e, .5) }, e.subtractFromMean = function (e, t, n) { return (e * t - n) / (t - 1) }, e.rootMeanSquare = j, e.rms = j, e.variance = i, e.tTest = function (e, t) { return (n(e) - t) / (o(e) / Math.sqrt(e.length)) }, e.tTestTwoSample = function (e, t, r) { var i = e.length, o = t.length; if (!i || !o) return null; r || (r = 0); var a = n(e), s = n(t), c = T(e), l = T(t); if ("number" == typeof a && "number" == typeof s && "number" == typeof c && "number" == typeof l) { var u = ((i - 1) * c + (o - 1) * l) / (i + o - 2); return (a - s - r) / Math.sqrt(u * (1 / i + 1 / o)) } }, e.BayesianClassifier = z, e.bayesian = z, e.PerceptronModel = E, e.perceptron = E, e.epsilon = P, e.factorial = D, e.gamma = function e(t) { if ("number" == typeof (n = t) && isFinite(n) && Math.floor(n) === n) return t <= 0 ? NaN : D(t - 1); var n; if (--t < 0) return Math.PI / (Math.sin(Math.PI * -t) * e(-t)); var r = t + .25; return Math.pow(t / Math.E, t) * Math.sqrt(2 * Math.PI * (t + 1 / 6)) * (1 + 1 / 144 / Math.pow(r, 2) - 1 / 12960 / Math.pow(r, 3) - 257 / 207360 / Math.pow(r, 4) - 52 / 2612736 / Math.pow(r, 5) + 5741173 / 9405849600 / Math.pow(r, 6) + 37529 / 18811699200 / Math.pow(r, 7)) }, e.gammaln = function (e) { if (e <= 0) return 1 / 0; e--; for (var t = H[0], n = 1; n < 15; n++)t += H[n] / (e + n); var r = 5.2421875 + e; return V + Math.log(t) - r + (e + .5) * Math.log(r) }, e.bernoulliDistribution = function (e) { if (e < 0 || 1 < e) throw new Error("bernoulliDistribution requires probability to be between 0 and 1 inclusive"); return [1 - e, e] }, e.binomialDistribution = function (e, t) { if (!(t < 0 || 1 < t || e <= 0 || e % 1 != 0)) { for (var n = 0, r = 0, i = [], o = 1; i[n] = o * Math.pow(t, n) * Math.pow(1 - t, e - n), r += i[n], o = o * (e - ++n + 1) / n, r < 1 - P;); return i } }, e.poissonDistribution = function (e) { if (!(e <= 0)) { for (var t = 0, n = 0, r = [], i = 1; r[t] = Math.exp(-e) * Math.pow(e, t) / i, n += r[t], i *= ++t, n < 1 - P;); return r } }, e.chiSquaredDistributionTable = I, e.chiSquaredGoodnessOfFit = function (e, t, r) { for (var i, o, a = 0, s = t(n(e)), c = [], l = [], u = 0; u < e.length; u++)void 0 === c[e[u]] && (c[e[u]] = 0), c[e[u]]++; for (u = 0; u < c.length; u++)void 0 === c[u] && (c[u] = 0); for (o in s) o in c && (l[+o] = s[o] * e.length); for (o = l.length - 1; 0 <= o; o--)l[o] < 3 && (l[o - 1] += l[o], l.pop(), c[o - 1] += c[o], c.pop()); for (o = 0; o < c.length; o++)a += Math.pow(c[o] - l[o], 2) / l[o]; return i = c.length - 1 - 1, I[i][r] < a }, e.kernelDensityEstimation = Y, e.kde = Y, e.zScore = function (e, t, n) { return (e - t) / n }, e.cumulativeStdNormalProbability = function (e) { var t = Math.abs(e), n = Math.min(Math.round(100 * t), W.length - 1); return 0 <= e ? W[n] : +(1 - W[n]).toFixed(4) }, e.standardNormalTable = W, e.errorFunction = U, e.erf = U, e.inverseErrorFunction = K, e.probit = function (e) { return 0 === e ? e = P : 1 <= e && (e = 1 - P), Math.sqrt(2) * K(2 * e - 1) }, e.permutationTest = function (e, t, r, i) { if (void 0 === i && (i = 1e4), void 0 === r && (r = "two_side"), "two_side" !== r && "greater" !== r && "less" !== r) throw new Error("`alternative` must be either 'two_side', 'greater', or 'less'"); for (var o = n(e) - n(t), a = new Array(i), s = e.concat(t), c = Math.floor(s.length / 2), l = 0; l < i; l++) { w(s); var u = s.slice(0, c), h = s.slice(c, s.length), f = n(u) - n(h); a[l] = f } var d = 0; if ("two_side" === r) for (l = 0; l <= i; l++)Math.abs(a[l]) >= Math.abs(o) && (d += 1); else if ("greater" === r) for (l = 0; l <= i; l++)a[l] >= o && (d += 1); else for (l = 0; l <= i; l++)a[l] <= o && (d += 1); return d / i }, e.bisect = function (e, t, n, r, i) { if ("function" != typeof e) throw new TypeError("func must be a function"); for (var o = 0; o < r; o++) { var a = (t + n) / 2; if (0 === e(a) || Math.abs((n - t) / 2) < i) return a; G(e(a)) === G(e(t)) ? t = a : n = a } throw new Error("maximum number of iterations exceeded") }, e.quickselect = h, e.sign = G, e.numericSort = s, Object.defineProperty(e, "__esModule", { value: !0 }) })) }, function (e, t, n) { "use strict"; function r() { } t["a"] = r }, function (e, t, n) { "use strict"; t["c"] = o, t["b"] = a, n.d(t, "d", (function () { return s })); var r = n(0), i = n(1); function o(e, t) { var n, r = e * Object(i["y"])(t), o = 30; do { t -= n = (t + Object(i["y"])(t) - r) / (1 + Object(i["h"])(t)) } while (Object(i["a"])(n) > i["k"] && --o > 0); return t / 2 } function a(e, t, n) { function r(r, a) { return [e * r * Object(i["h"])(a = o(n, a)), t * Object(i["y"])(a)] } return r.invert = function (r, o) { return o = Object(i["e"])(o / t), [r / (e * Object(i["h"])(o)), Object(i["e"])((2 * o + Object(i["y"])(2 * o)) / n)] }, r } var s = a(i["D"] / i["o"], i["D"], i["s"]); t["a"] = function () { return Object(r["geoProjection"])(s).scale(169.529) } }, function (e, t, n) { "use strict"; function r(e, t) { e && o.hasOwnProperty(e.type) && o[e.type](e, t) } var i = { Feature: function (e, t) { r(e.geometry, t) }, FeatureCollection: function (e, t) { var n = e.features, i = -1, o = n.length; while (++i < o) r(n[i].geometry, t) } }, o = { Sphere: function (e, t) { t.sphere() }, Point: function (e, t) { e = e.coordinates, t.point(e[0], e[1], e[2]) }, MultiPoint: function (e, t) { var n = e.coordinates, r = -1, i = n.length; while (++r < i) e = n[r], t.point(e[0], e[1], e[2]) }, LineString: function (e, t) { a(e.coordinates, t, 0) }, MultiLineString: function (e, t) { var n = e.coordinates, r = -1, i = n.length; while (++r < i) a(n[r], t, 0) }, Polygon: function (e, t) { s(e.coordinates, t) }, MultiPolygon: function (e, t) { var n = e.coordinates, r = -1, i = n.length; while (++r < i) s(n[r], t) }, GeometryCollection: function (e, t) { var n = e.geometries, i = -1, o = n.length; while (++i < o) r(n[i], t) } }; function a(e, t, n) { var r, i = -1, o = e.length - n; t.lineStart(); while (++i < o) r = e[i], t.point(r[0], r[1], r[2]); t.lineEnd() } function s(e, t) { var n = -1, r = e.length; t.polygonStart(); while (++n < r) a(e[n], t, 1); t.polygonEnd() } t["a"] = function (e, t) { e && i.hasOwnProperty(e.type) ? i[e.type](e, t) : r(e, t) } }, function (e, t, n) { "use strict"; var r = n(14), i = n(0), o = n(1); function a(e, t) { return Object(o["a"])(e[0] - t[0]) < o["k"] && Object(o["a"])(e[1] - t[1]) < o["k"] } function s(e, t) { var n, r, i, o = -1, a = e.length, s = e[0], c = []; while (++o < a) { n = e[o], r = (n[0] - s[0]) / t, i = (n[1] - s[1]) / t; for (var l = 0; l < t; ++l)c.push([s[0] + l * r, s[1] + l * i]); s = n } return c.push(n), c } function c(e) { var t, n, i, a, c, l, u, h = [], f = e[0].length; for (u = 0; u < f; ++u)t = e[0][u], n = t[0][0], i = t[0][1], a = t[1][1], c = t[2][0], l = t[2][1], h.push(s([[n + o["k"], i + o["k"]], [n + o["k"], a - o["k"]], [c - o["k"], a - o["k"]], [c - o["k"], l + o["k"]]], 30)); for (u = e[1].length - 1; u >= 0; --u)t = e[1][u], n = t[0][0], i = t[0][1], a = t[1][1], c = t[2][0], l = t[2][1], h.push(s([[c - o["k"], l - o["k"]], [c - o["k"], a + o["k"]], [n + o["k"], a + o["k"]], [n + o["k"], i - o["k"]]], 30)); return { type: "Polygon", coordinates: [Object(r["merge"])(h)] } } t["a"] = function (e, t) { var n = c(t); t = t.map((function (e) { return e.map((function (e) { return [[e[0][0] * o["v"], e[0][1] * o["v"]], [e[1][0] * o["v"], e[1][1] * o["v"]], [e[2][0] * o["v"], e[2][1] * o["v"]]] })) })); var r = t.map((function (t) { return t.map((function (t) { var n, r = e(t[0][0], t[0][1])[0], i = e(t[2][0], t[2][1])[0], o = e(t[1][0], t[0][1])[1], a = e(t[1][0], t[1][1])[1]; return o > a && (n = o, o = a, a = n), [[r, o], [i, a]] })) })); function s(n, r) { for (var i = r < 0 ? -1 : 1, o = t[+(r < 0)], a = 0, s = o.length - 1; a < s && n > o[a][2][0]; ++a); var c = e(n - o[a][1][0], r); return c[0] += e(o[a][1][0], i * r > i * o[a][0][1] ? o[a][0][1] : r)[0], c } e.invert && (s.invert = function (n, i) { for (var o = r[+(i < 0)], c = t[+(i < 0)], l = 0, u = o.length; l < u; ++l) { var h = o[l]; if (h[0][0] <= n && n < h[1][0] && h[0][1] <= i && i < h[1][1]) { var f = e.invert(n - e(c[l][1][0], 0)[0], i); return f[0] += c[l][1][0], a(s(f[0], f[1]), [n, i]) ? f : null } } }); var l = Object(i["geoProjection"])(s), u = l.stream; return l.stream = function (e) { var t = l.rotate(), r = u(e), o = (l.rotate([0, 0]), u(e)); return l.rotate(t), r.sphere = function () { Object(i["geoStream"])(n, o) }, r }, l } }, function (e, t, n) { var r = n(9), i = n(11), o = Object.keys ? function (e) { return Object.keys(e) } : function (e) { var t = []; return r(e, (function (n, r) { i(e) && "prototype" === r || t.push(r) })), t }; e.exports = o }, function (e, t, n) { "use strict"; function r() { } t["a"] = r }, function (e, t, n) { "use strict"; function r(e, t) { e && o.hasOwnProperty(e.type) && o[e.type](e, t) } var i = { Feature: function (e, t) { r(e.geometry, t) }, FeatureCollection: function (e, t) { var n = e.features, i = -1, o = n.length; while (++i < o) r(n[i].geometry, t) } }, o = { Sphere: function (e, t) { t.sphere() }, Point: function (e, t) { e = e.coordinates, t.point(e[0], e[1], e[2]) }, MultiPoint: function (e, t) { var n = e.coordinates, r = -1, i = n.length; while (++r < i) e = n[r], t.point(e[0], e[1], e[2]) }, LineString: function (e, t) { a(e.coordinates, t, 0) }, MultiLineString: function (e, t) { var n = e.coordinates, r = -1, i = n.length; while (++r < i) a(n[r], t, 0) }, Polygon: function (e, t) { s(e.coordinates, t) }, MultiPolygon: function (e, t) { var n = e.coordinates, r = -1, i = n.length; while (++r < i) s(n[r], t) }, GeometryCollection: function (e, t) { var n = e.geometries, i = -1, o = n.length; while (++i < o) r(n[i], t) } }; function a(e, t, n) { var r, i = -1, o = e.length - n; t.lineStart(); while (++i < o) r = e[i], t.point(r[0], r[1], r[2]); t.lineEnd() } function s(e, t) { var n = -1, r = e.length; t.polygonStart(); while (++n < r) a(e[n], t, 1); t.polygonEnd() } t["a"] = function (e, t) { e && i.hasOwnProperty(e.type) ? i[e.type](e, t) : r(e, t) } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return function () { return e } } }, function (e, t, n) { var r = n(3); e.exports = { assign: r } }, function (e, t, n) { "use strict"; function r() { this.reset() } t["a"] = function () { return new r }, r.prototype = { constructor: r, reset: function () { this.s = this.t = 0 }, add: function (e) { o(i, e, this.t), o(this, i.s, this.s), this.s ? this.t += i.t : this.s = i.t }, valueOf: function () { return this.s } }; var i = new r; function o(e, t, n) { var r = e.s = t + n, i = r - t, o = r - i; e.t = t - o + (n - i) } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { return e < t ? -1 : e > t ? 1 : e >= t ? 0 : NaN } }, function (e, t, n) { "use strict"; var r = n(0), i = n(1); t["a"] = function (e) { var t = 0, n = Object(r["geoProjectionMutator"])(e), o = n(t); return o.parallel = function (e) { return arguments.length ? n(t = e * i["v"]) : t * i["j"] }, o } }, function (e, t, n) { var r = n(9), i = n(54), o = Object.prototype.hasOwnProperty, a = function (e, t) { if (null === e || !i(e)) return {}; var n = {}; return r(t, (function (t) { o.call(e, t) && (n[t] = e[t]) })), n }; e.exports = a }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(349); n.d(t, "path", (function () { return r["a"] })) }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(369); n.d(t, "cluster", (function () { return r["a"] })); var i = n(86); n.d(t, "hierarchy", (function () { return i["c"] })); var o = n(381); n.d(t, "pack", (function () { return o["a"] })); var a = n(160); n.d(t, "packSiblings", (function () { return a["a"] })); var s = n(161); n.d(t, "packEnclose", (function () { return s["a"] })); var c = n(383); n.d(t, "partition", (function () { return c["a"] })); var l = n(384); n.d(t, "stratify", (function () { return l["a"] })); var u = n(385); n.d(t, "tree", (function () { return u["a"] })); var h = n(386); n.d(t, "treemap", (function () { return h["a"] })); var f = n(387); n.d(t, "treemapBinary", (function () { return f["a"] })); var d = n(45); n.d(t, "treemapDice", (function () { return d["a"] })); var p = n(55); n.d(t, "treemapSlice", (function () { return p["a"] })); var v = n(388); n.d(t, "treemapSliceDice", (function () { return v["a"] })); var m = n(88); n.d(t, "treemapSquarify", (function () { return m["a"] })); var g = n(389); n.d(t, "treemapResquarify", (function () { return g["a"] })) }, function (e, t, n) { "use strict"; t["g"] = i, t["a"] = o, t["d"] = a, t["c"] = s, t["b"] = c, t["f"] = l, t["e"] = u; var r = n(4); function i(e) { return [Object(r["e"])(e[1], e[0]), Object(r["c"])(e[2])] } function o(e) { var t = e[0], n = e[1], i = Object(r["g"])(n); return [i * Object(r["g"])(t), i * Object(r["t"])(t), Object(r["t"])(n)] } function a(e, t) { return e[0] * t[0] + e[1] * t[1] + e[2] * t[2] } function s(e, t) { return [e[1] * t[2] - e[2] * t[1], e[2] * t[0] - e[0] * t[2], e[0] * t[1] - e[1] * t[0]] } function c(e, t) { e[0] += t[0], e[1] += t[1], e[2] += t[2] } function l(e, t) { return [e[0] * t, e[1] * t, e[2] * t] } function u(e) { var t = Object(r["u"])(e[0] * e[0] + e[1] * e[1] + e[2] * e[2]); e[0] /= t, e[1] /= t, e[2] /= t } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return null === e ? NaN : +e } }, function (e, t, n) { "use strict"; t["b"] = i, t["a"] = o; var r = n(4); function i(e) { return function (t, n) { var i = Object(r["g"])(t), o = Object(r["g"])(n), a = e(i * o); return [a * o * Object(r["t"])(t), a * Object(r["t"])(n)] } } function o(e) { return function (t, n) { var i = Object(r["u"])(t * t + n * n), o = e(i), a = Object(r["t"])(o), s = Object(r["g"])(o); return [Object(r["e"])(t * a, i * s), Object(r["c"])(i && n * a / i)] } } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { return [e * Object(i["h"])(t), t] } o.invert = function (e, t) { return [e / Object(i["h"])(t), t] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(152.63) } }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } function i(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var o = n(139), a = n(3), s = n(40), c = n(40), l = n(320), u = n(9), h = n(6), f = n(54), d = n(140), p = n(76), v = n(10), m = n(24), g = n(32); function y(e) { var t = {}; return u(e, (function (e, n) { p(e) && e.isView ? t[n] = e : h(e) ? t[n] = e.concat([]) : f(e) ? t[n] = s(e) : t[n] = e })), t } var b = function (e) { function t(t, n) { var r; r = e.call(this) || this; var o = i(i(r)); if (n = n || {}, t = t || {}, t.isDataSet || (n = t, t = null), a(o, { dataSet: t, loose: !t, dataType: "table", isView: !0, isDataView: !0, origin: [], rows: [], transforms: [], watchingStates: null }, n), !o.loose) { var s = o.watchingStates; t.on("statechange", (function (e) { h(s) ? s.indexOf(e) > -1 && o._reExecute() : o._reExecute() })) } return r } r(t, e); var n = t.prototype; return n._parseStateExpression = function (e) { var t = this.dataSet, n = /^\$state\.(\w+)/.exec(e); return n ? t.state[n[1]] : e }, n._preparseOptions = function (e) { var t = this, n = y(e); return t.loose || u(n, (function (e, r) { v(e) && /^\$state\./.test(e) && (n[r] = t._parseStateExpression(e)) })), n }, n._prepareSource = function (e, n) { var r = this, i = t.DataSet; if (r._source = { source: e, options: n }, n) n = r._preparseOptions(n), r.origin = i.getConnector(n.type)(e, n, r); else if (e instanceof t || v(e)) r.origin = i.getConnector("default")(e, r.dataSet); else if (h(e)) r.origin = e; else { if (!p(e) || !e.type) throw new TypeError("Invalid source"); n = r._preparseOptions(e), r.origin = i.getConnector(n.type)(n, r) } return r.rows = c(r.origin), r }, n.source = function (e, t) { var n = this; return n._prepareSource(e, t), n._reExecuteTransforms(), n.trigger("change"), n }, n.transform = function (e) { void 0 === e && (e = {}); var t = this; return t.transforms.push(e), t._executeTransform(e), t }, n._executeTransform = function (e) { var n = this; e = n._preparseOptions(e); var r = t.DataSet.getTransform(e.type); r(n, e) }, n._reExecuteTransforms = function () { var e = this; e.transforms.forEach((function (t) { e._executeTransform(t) })) }, n.addRow = function (e) { this.rows.push(e) }, n.removeRow = function (e) { this.rows.splice(e, 1) }, n.updateRow = function (e, t) { a(this.rows[e], t) }, n.findRows = function (e) { return this.rows.filter((function (t) { return d(t, e) })) }, n.findRow = function (e) { return l(this.rows, e) }, n.getColumnNames = function () { var e = this.rows[0]; return e ? m(e) : [] }, n.getColumnName = function (e) { return this.getColumnNames()[e] }, n.getColumnIndex = function (e) { var t = this.getColumnNames(); return t.indexOf(e) }, n.getColumn = function (e) { return this.rows.map((function (t) { return t[e] })) }, n.getColumnData = function (e) { return this.getColumn(e) }, n.getSubset = function (e, t, n) { for (var r = [], i = e; i <= t; i++)r.push(g(this.rows[i], n)); return r }, n.toString = function (e) { var t = this; return e ? JSON.stringify(t.rows, null, 2) : JSON.stringify(t.rows) }, n._reExecute = function () { var e = this, t = e._source, n = t.source, r = t.options; e._prepareSource(n, r), e._reExecuteTransforms(), e.trigger("change") }, t }(o); e.exports = b }, function (e, t, n) { var r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, i = n(6), o = function e(t) { if ("object" !== ("undefined" === typeof t ? "undefined" : r(t)) || null === t) return t; var n = void 0; if (i(t)) { n = []; for (var o = 0, a = t.length; o < a; o++)"object" === r(t[o]) && null != t[o] ? n[o] = e(t[o]) : n[o] = t[o] } else for (var s in n = {}, t) "object" === r(t[s]) && null != t[s] ? n[s] = e(t[s]) : n[s] = t[s]; return n }; e.exports = o }, function (e, t) { var n = {}.toString, r = function (e, t) { return n.call(e) === "[object " + t + "]" }; e.exports = r }, function (e, t, n) { "use strict"; function r() { this.reset() } t["a"] = function () { return new r }, r.prototype = { constructor: r, reset: function () { this.s = this.t = 0 }, add: function (e) { o(i, e, this.t), o(this, i.s, this.s), this.s ? this.t += i.t : this.s = i.t }, valueOf: function () { return this.s } }; var i = new r; function o(e, t, n) { var r = e.s = t + n, i = r - t, o = r - i; e.t = t - o + (n - i) } }, function (e, t, n) { "use strict"; t["g"] = i, t["a"] = o, t["d"] = a, t["c"] = s, t["b"] = c, t["f"] = l, t["e"] = u; var r = n(5); function i(e) { return [Object(r["e"])(e[1], e[0]), Object(r["c"])(e[2])] } function o(e) { var t = e[0], n = e[1], i = Object(r["g"])(n); return [i * Object(r["g"])(t), i * Object(r["t"])(t), Object(r["t"])(n)] } function a(e, t) { return e[0] * t[0] + e[1] * t[1] + e[2] * t[2] } function s(e, t) { return [e[1] * t[2] - e[2] * t[1], e[2] * t[0] - e[0] * t[2], e[0] * t[1] - e[1] * t[0]] } function c(e, t) { e[0] += t[0], e[1] += t[1], e[2] += t[2] } function l(e, t) { return [e[0] * t, e[1] * t, e[2] * t] } function u(e) { var t = Object(r["u"])(e[0] * e[0] + e[1] * e[1] + e[2] * e[2]); e[0] /= t, e[1] /= t, e[2] /= t } }, function (e, t, n) { "use strict"; t["b"] = i, t["a"] = o; var r = n(5); function i(e) { return function (t, n) { var i = Object(r["g"])(t), o = Object(r["g"])(n), a = e(i * o); return [a * o * Object(r["t"])(t), a * Object(r["t"])(n)] } } function o(e) { return function (t, n) { var i = Object(r["u"])(t * t + n * n), o = e(i), a = Object(r["t"])(o), s = Object(r["g"])(o); return [Object(r["e"])(t * a, i * s), Object(r["c"])(i && n * a / i)] } } }, function (e, t, n) { "use strict"; t["a"] = function (e, t, n, r, i) { var o, a = e.children, s = -1, c = a.length, l = e.value && (r - t) / e.value; while (++s < c) o = a[s], o.y0 = n, o.y1 = i, o.x0 = t, o.x1 = t += o.value * l } }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return r })), n.d(t, "d", (function () { return i })), n.d(t, "e", (function () { return o })), n.d(t, "h", (function () { return a })), n.d(t, "i", (function () { return s })), n.d(t, "k", (function () { return c })), n.d(t, "l", (function () { return l })), n.d(t, "f", (function () { return u })), n.d(t, "j", (function () { return h })), n.d(t, "g", (function () { return f })), n.d(t, "m", (function () { return d })), t["b"] = p, t["c"] = v; var r = Math.abs, i = Math.atan2, o = Math.cos, a = Math.max, s = Math.min, c = Math.sin, l = Math.sqrt, u = 1e-12, h = Math.PI, f = h / 2, d = 2 * h; function p(e) { return e > 1 ? 0 : e < -1 ? h : Math.acos(e) } function v(e) { return e >= 1 ? f : e <= -1 ? -f : Math.asin(e) } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { if ((i = e.length) > 1) for (var n, r, i, o = 1, a = e[t[0]], s = a.length; o < i; ++o)for (r = a, a = e[t[o]], n = 0; n < s; ++n)a[n][1] += a[n][0] = isNaN(r[n][1]) ? r[n][0] : r[n][1] } }, function (e, t, n) { "use strict"; t["a"] = function (e) { var t = e.length, n = new Array(t); while (--t >= 0) n[t] = t; return n } }, function (e, t, n) { "use strict"; n.d(t, "f", (function () { return f })), n.d(t, "g", (function () { return d })), n.d(t, "a", (function () { return r })), n.d(t, "b", (function () { return i })), n.d(t, "c", (function () { return o })), n.d(t, "e", (function () { return a })), t["d"] = m; var r, i, o, a, s = n(513), c = n(191), l = n(192), u = n(100), h = n(99), f = 1e-6, d = 1e-12; function p(e, t, n) { return (e[0] - n[0]) * (t[1] - e[1]) - (e[0] - t[0]) * (n[1] - e[1]) } function v(e, t) { return t[1] - e[1] || t[0] - e[0] } function m(e, t) { var n, f, d, p = e.sort(v).pop(); a = [], i = new Array(e.length), r = new h["b"], o = new h["b"]; while (1) if (d = l["c"], p && (!d || p[1] < d.y || p[1] === d.y && p[0] < d.x)) p[0] === n && p[1] === f || (Object(s["a"])(p), n = p[0], f = p[1]), p = e.pop(); else { if (!d) break; Object(s["b"])(d.arc) } if (Object(c["d"])(), t) { var m = +t[0][0], g = +t[0][1], y = +t[1][0], b = +t[1][1]; Object(u["a"])(m, g, y, b), Object(c["b"])(m, g, y, b) } this.edges = a, this.cells = i, r = o = a = i = null } m.prototype = { constructor: m, polygons: function () { var e = this.edges; return this.cells.map((function (t) { var n = t.halfedges.map((function (n) { return Object(c["a"])(t, e[n]) })); return n.data = t.site.data, n })) }, triangles: function () { var e = [], t = this.edges; return this.cells.forEach((function (n, r) { if (o = (i = n.halfedges).length) { var i, o, a, s = n.site, c = -1, l = t[i[o - 1]], u = l.left === s ? l.right : l.left; while (++c < o) a = u, l = t[i[c]], u = l.left === s ? l.right : l.left, a && u && r < a.index && r < u.index && p(s, a, u) < 0 && e.push([s.data, a.data, u.data]) } })), e }, links: function () { return this.edges.filter((function (e) { return e.right })).map((function (e) { return { source: e.left.data, target: e.right.data } })) }, find: function (e, t, n) { var r, i, o = this, a = o._found || 0, s = o.cells.length; while (!(i = o.cells[a])) if (++a >= s) return null; var c = e - i.site[0], l = t - i.site[1], u = c * c + l * l; do { i = o.cells[r = a], a = null, i.halfedges.forEach((function (n) { var r = o.edges[n], s = r.left; if (s !== i.site && s || (s = r.right)) { var c = e - s[0], l = t - s[1], h = c * c + l * l; h < u && (u = h, a = s.index) } })) } while (null !== a); return o._found = r, null == n || u <= n * n ? i.site : null } } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(105), i = n(4); function o(e, t) { return [e > i["o"] ? e - i["w"] : e < -i["o"] ? e + i["w"] : e, t] } function a(e, t, n) { return (e %= i["w"]) ? t || n ? Object(r["a"])(c(e), l(t, n)) : c(e) : t || n ? l(t, n) : o } function s(e) { return function (t, n) { return t += e, [t > i["o"] ? t - i["w"] : t < -i["o"] ? t + i["w"] : t, n] } } function c(e) { var t = s(e); return t.invert = s(-e), t } function l(e, t) { var n = Object(i["g"])(e), r = Object(i["t"])(e), o = Object(i["g"])(t), a = Object(i["t"])(t); function s(e, t) { var s = Object(i["g"])(t), c = Object(i["g"])(e) * s, l = Object(i["t"])(e) * s, u = Object(i["t"])(t), h = u * n + c * r; return [Object(i["e"])(l * o - h * a, c * n - u * r), Object(i["c"])(h * o + l * a)] } return s.invert = function (e, t) { var s = Object(i["g"])(t), c = Object(i["g"])(e) * s, l = Object(i["t"])(e) * s, u = Object(i["t"])(t), h = u * o - l * a; return [Object(i["e"])(l * o + u * a, c * n + h * r), Object(i["c"])(h * n - c * r)] }, s } o.invert = o, t["a"] = function (e) { function t(t) { return t = e(t[0] * i["r"], t[1] * i["r"]), t[0] *= i["h"], t[1] *= i["h"], t } return e = a(e[0] * i["r"], e[1] * i["r"], e.length > 2 ? e[2] * i["r"] : 0), t.invert = function (t) { return t = e.invert(t[0] * i["r"], t[1] * i["r"]), t[0] *= i["h"], t[1] *= i["h"], t }, t } }, function (e, t, n) { "use strict"; function r(e) { return function (t) { var n = new i; for (var r in e) n[r] = e[r]; return n.stream = t, n } } function i() { } t["b"] = r, t["a"] = function (e) { return { stream: r(e) } }, i.prototype = { constructor: i, point: function (e, t) { this.stream.point(e, t) }, sphere: function () { this.stream.sphere() }, lineStart: function () { this.stream.lineStart() }, lineEnd: function () { this.stream.lineEnd() }, polygonStart: function () { this.stream.polygonStart() }, polygonEnd: function () { this.stream.polygonEnd() } } }, function (e, t, n) { "use strict"; var r = n(1); t["a"] = function (e, t, n, i, o, a, s, c) { function l(l, u) { if (!u) return [e * l / r["s"], 0]; var h = u * u, f = e + h * (t + h * (n + h * i)), d = u * (o - 1 + h * (a - c + h * s)), p = (f * f + d * d) / (2 * d), v = l * Object(r["e"])(f / p) / r["s"]; return [p * Object(r["y"])(v), u * (1 + h * c) + p * (1 - Object(r["h"])(v))] } return arguments.length < 8 && (c = 0), l.invert = function (l, u) { var h, f, d = r["s"] * l / e, p = u, v = 50; do { var m = p * p, g = e + m * (t + m * (n + m * i)), y = p * (o - 1 + m * (a - c + m * s)), b = g * g + y * y, x = 2 * y, w = b / x, _ = w * w, C = Object(r["e"])(g / w) / r["s"], M = d * C, O = g * g, k = (2 * t + m * (4 * n + 6 * m * i)) * p, S = o + m * (3 * a + 5 * m * s), T = 2 * (g * k + y * (S - 1)), A = 2 * (S - 1), L = (T * x - b * A) / (x * x), j = Object(r["h"])(M), z = Object(r["y"])(M), E = w * j, P = w * z, D = d / r["s"] * (1 / Object(r["B"])(1 - O / _)) * (k * w - g * L) / _, H = P - l, V = p * (1 + m * c) + w - E - u, I = L * z + E * D, N = E * C, R = 1 + L - (L * j - P * D), F = P * C, Y = I * F - R * N; if (!Y) break; d -= h = (V * I - H * R) / Y, p -= f = (H * F - V * N) / Y } while ((Object(r["a"])(h) > r["k"] || Object(r["a"])(f) > r["k"]) && --v > 0); return [d, p] }, l } }, function (e, t, n) { "use strict"; var r = n(0), i = n(1), o = n(294); function a(e, t, n) { var o, s, c = t.edges, l = c.length, u = { type: "MultiPoint", coordinates: t.face }, h = t.face.filter((function (e) { return 90 !== Object(i["a"])(e[1]) })), f = Object(r["geoBounds"])({ type: "MultiPoint", coordinates: h }), d = !1, p = -1, v = f[1][0] - f[0][0], m = 180 === v || 360 === v ? [(f[0][0] + f[1][0]) / 2, (f[0][1] + f[1][1]) / 2] : Object(r["geoCentroid"])(u); if (n) while (++p < l) if (c[p] === n) break; ++p; for (var g = 0; g < l; ++g)s = c[(g + p) % l], Array.isArray(s) ? (d || (e.point((o = Object(r["geoInterpolate"])(s[0], m)(i["k"]))[0], o[1]), d = !0), e.point((o = Object(r["geoInterpolate"])(s[1], m)(i["k"]))[0], o[1])) : (d = !1, s !== n && a(e, s, t)) } function s(e, t) { return e && t && e[0] === t[0] && e[1] === t[1] } function c(e, t) { for (var n, r, i = e.length, o = null, a = 0; a < i; ++a) { n = e[a]; for (var s = t.length; --s >= 0;)if (r = t[s], n[0] === r[0] && n[1] === r[1]) { if (o) return [o, n]; o = n } } } function l(e) { for (var t = e.length, n = [], r = e[t - 1], i = 0; i < t; ++i)n.push([r, r = e[i]]); return n } function u(e) { return e.project.invert || e.children && e.children.some(u) } t["a"] = function (e, t, n) { function h(e, t) { if (e.edges = l(e.face), t.face) { var n = e.shared = c(e.face, t.face), r = Object(o["a"])(n.map(t.project), n.map(e.project)); e.transform = t.transform ? Object(o["c"])(t.transform, r) : r; for (var i = t.edges, a = 0, u = i.length; a < u; ++a)s(n[0], i[a][1]) && s(n[1], i[a][0]) && (i[a] = e), s(n[0], i[a][0]) && s(n[1], i[a][1]) && (i[a] = e); for (i = e.edges, a = 0, u = i.length; a < u; ++a)s(n[0], i[a][0]) && s(n[1], i[a][1]) && (i[a] = t), s(n[0], i[a][1]) && s(n[1], i[a][0]) && (i[a] = t) } else e.transform = t.transform; return e.children && e.children.forEach((function (t) { h(t, e) })), e } function f(e, n) { var r, o = t(e, n), a = o.project([e * i["j"], n * i["j"]]); return (r = o.transform) ? [r[0] * a[0] + r[1] * a[1] + r[2], -(r[3] * a[0] + r[4] * a[1] + r[5])] : (a[1] = -a[1], a) } function d(e, t) { var n = e.project.invert, r = e.transform, i = t; if (r && (r = Object(o["b"])(r), i = [r[0] * i[0] + r[1] * i[1] + r[2], r[3] * i[0] + r[4] * i[1] + r[5]]), n && e === p(a = n(i))) return a; for (var a, s = e.children, c = 0, l = s && s.length; c < l; ++c)if (a = d(s[c], t)) return a } function p(e) { return t(e[0] * i["v"], e[1] * i["v"]) } n = null == n ? -i["s"] / 6 : n, h(e, { transform: [Object(i["h"])(n), Object(i["y"])(n), 0, -Object(i["y"])(n), Object(i["h"])(n), 0] }), u(e) && (f.invert = function (t, n) { var r = d(e, [t, -n]); return r && (r[0] *= i["v"], r[1] *= i["v"], r) }); var v = Object(r["geoProjection"])(f), m = v.stream; return v.stream = function (t) { var n = v.rotate(), r = m(t), i = (v.rotate([0, 0]), m(t)); return v.rotate(n), r.sphere = function () { i.polygonStart(), i.lineStart(), a(i, e), i.lineEnd(), i.polygonEnd() }, r }, v } }, function (e, t, n) { var r = n(321), i = n(41), o = function (e) { if (!r(e) || !i(e, "Object")) return !1; if (null === Object.getPrototypeOf(e)) return !0; var t = e; while (null !== Object.getPrototypeOf(t)) t = Object.getPrototypeOf(t); return Object.getPrototypeOf(e) === t }; e.exports = o }, function (e, t, n) { "use strict"; t["a"] = function (e, t, n, r, i) { var o, a = e.children, s = -1, c = a.length, l = e.value && (i - n) / e.value; while (++s < c) o = a[s], o.x0 = t, o.x1 = r, o.y0 = n, o.y1 = n += o.value * l } }, function (e, t, n) { var r = n(41), i = function (e) { return r(e, "Number") }; e.exports = i }, function (e, t) { e.exports = function (e, t) { var n = t || 1, r = e[0], i = e[1], o = [], a = r; while (a < i) o.push(a), a += n; return o.push(i), o } }, function (e, t, n) { var r = n(19), i = r.standardDeviation, o = r.interquartileRange; e.exports = { silverman: function (e) { var t = i(e), n = 4 * Math.pow(t, 5), r = 3 * e.length; return Math.pow(n / r, .2) }, nrd: function (e) { var t = i(e), n = o(e); return "number" === typeof n && (t = Math.min(t, n / 1.34)), 1.06 * t * Math.pow(e.length, -.2) } } }, function (e, t, n) { "use strict"; var r = n(8); function i(e) { var t = {}; function n(i) { var o = e.node(i); if (r.has(t, i)) return o.rank; t[i] = !0; var a = r.minBy(r.map(e.outEdges(i), (function (t) { return n(t.w) - e.edge(t).minlen }))); return a !== Number.POSITIVE_INFINITY && void 0 !== a && null !== a || (a = 0), o.rank = a } r.forEach(e.sources(), n) } function o(e, t) { return e.node(t.w).rank - e.node(t.v).rank - e.edge(t).minlen } e.exports = { longestPath: i, slack: o } }, function (e, t, n) { "use strict"; function r(e) { this._context = e } r.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._point = 0 }, lineEnd: function () { (this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (e, t) { switch (e = +e, t = +t, this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(e, t) : this._context.moveTo(e, t); break; case 1: this._point = 2; default: this._context.lineTo(e, t); break } } }, t["a"] = function (e) { return new r(e) } }, function (e, t, n) { "use strict"; t["a"] = function () { } }, function (e, t, n) { "use strict"; function r(e, t, n) { e._context.bezierCurveTo((2 * e._x0 + e._x1) / 3, (2 * e._y0 + e._y1) / 3, (e._x0 + 2 * e._x1) / 3, (e._y0 + 2 * e._y1) / 3, (e._x0 + 4 * e._x1 + t) / 6, (e._y0 + 4 * e._y1 + n) / 6) } function i(e) { this._context = e } t["b"] = r, t["a"] = i, i.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._y0 = this._y1 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 3: r(this, this._x1, this._y1); case 2: this._context.lineTo(this._x1, this._y1); break }(this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (e, t) { switch (e = +e, t = +t, this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(e, t) : this._context.moveTo(e, t); break; case 1: this._point = 2; break; case 2: this._point = 3, this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); default: r(this, e, t); break }this._x0 = this._x1, this._x1 = e, this._y0 = this._y1, this._y1 = t } } }, function (e, t, n) { "use strict"; function r(e, t, n) { e._context.bezierCurveTo(e._x1 + e._k * (e._x2 - e._x0), e._y1 + e._k * (e._y2 - e._y0), e._x2 + e._k * (e._x1 - t), e._y2 + e._k * (e._y1 - n), e._x2, e._y2) } function i(e, t) { this._context = e, this._k = (1 - t) / 6 } t["b"] = r, t["a"] = i, i.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 2: this._context.lineTo(this._x2, this._y2); break; case 3: r(this, this._x1, this._y1); break }(this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (e, t) { switch (e = +e, t = +t, this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(e, t) : this._context.moveTo(e, t); break; case 1: this._point = 2, this._x1 = e, this._y1 = t; break; case 2: this._point = 3; default: r(this, e, t); break }this._x0 = this._x1, this._x1 = this._x2, this._x2 = e, this._y0 = this._y1, this._y1 = this._y2, this._y2 = t } }; (function e(t) { function n(e) { return new i(e, t) } return n.tension = function (t) { return e(+t) }, n })(0) }, function (e, t, n) { var r = n(193), i = function () { function e(e, t) { void 0 === t && (t = {}); var n = this; n.options = t, n.rootNode = r(e, t) } var t = e.prototype; return t.execute = function () { throw new Error("please override this method") }, e }(); e.exports = i }, function (e, t, n) { "use strict"; t["a"] = u; var r = n(4), i = n(106), o = n(200), a = n(107), s = n(14), c = 1e9, l = -c; function u(e, t, n, u) { function h(r, i) { return e <= r && r <= n && t <= i && i <= u } function f(r, i, o, a) { var s = 0, c = 0; if (null == r || (s = d(r, o)) !== (c = d(i, o)) || v(r, i) < 0 ^ o > 0) do { a.point(0 === s || 3 === s ? e : n, s > 1 ? u : t) } while ((s = (s + o + 4) % 4) !== c); else a.point(i[0], i[1]) } function d(i, o) { return Object(r["a"])(i[0] - e) < r["i"] ? o > 0 ? 0 : 3 : Object(r["a"])(i[0] - n) < r["i"] ? o > 0 ? 2 : 1 : Object(r["a"])(i[1] - t) < r["i"] ? o > 0 ? 1 : 0 : o > 0 ? 3 : 2 } function p(e, t) { return v(e.x, t.x) } function v(e, t) { var n = d(e, 1), r = d(t, 1); return n !== r ? n - r : 0 === n ? t[1] - e[1] : 1 === n ? e[0] - t[0] : 2 === n ? e[1] - t[1] : t[0] - e[0] } return function (r) { var d, v, m, g, y, b, x, w, _, C, M, O = r, k = Object(i["a"])(), S = { point: T, lineStart: z, lineEnd: E, polygonStart: L, polygonEnd: j }; function T(e, t) { h(e, t) && O.point(e, t) } function A() { for (var t = 0, n = 0, r = v.length; n < r; ++n)for (var i, o, a = v[n], s = 1, c = a.length, l = a[0], h = l[0], f = l[1]; s < c; ++s)i = h, o = f, l = a[s], h = l[0], f = l[1], o <= u ? f > u && (h - i) * (u - o) > (f - o) * (e - i) && ++t : f <= u && (h - i) * (u - o) < (f - o) * (e - i) && --t; return t } function L() { O = k, d = [], v = [], M = !0 } function j() { var e = A(), t = M && e, n = (d = Object(s["merge"])(d)).length; (t || n) && (r.polygonStart(), t && (r.lineStart(), f(null, null, 1, r), r.lineEnd()), n && Object(a["a"])(d, p, e, f, r), r.polygonEnd()), O = r, d = v = m = null } function z() { S.point = P, v && v.push(m = []), C = !0, _ = !1, x = w = NaN } function E() { d && (P(g, y), b && _ && k.rejoin(), d.push(k.result())), S.point = T, _ && O.lineEnd() } function P(r, i) { var a = h(r, i); if (v && m.push([r, i]), C) g = r, y = i, b = a, C = !1, a && (O.lineStart(), O.point(r, i)); else if (a && _) O.point(r, i); else { var s = [x = Math.max(l, Math.min(c, x)), w = Math.max(l, Math.min(c, w))], f = [r = Math.max(l, Math.min(c, r)), i = Math.max(l, Math.min(c, i))]; Object(o["a"])(s, f, e, t, n, u) ? (_ || (O.lineStart(), O.point(s[0], s[1])), O.point(f[0], f[1]), a || O.lineEnd(), M = !1) : a && (O.lineStart(), O.point(r, i), M = !1) } x = r, w = i, _ = a } return S } } t["b"] = function () { var e, t, n, r = 0, i = 0, o = 960, a = 500; return n = { stream: function (n) { return e && t === n ? e : e = u(r, i, o, a)(t = n) }, extent: function (s) { return arguments.length ? (r = +s[0][0], i = +s[0][1], o = +s[1][0], a = +s[1][1], e = t = null, n) : [[r, i], [o, a]] } } } }, function (e, t, n) { "use strict"; var r = n(36); t["a"] = function (e, t, n) { if (null == n && (n = r["a"]), i = e.length) { if ((t = +t) <= 0 || i < 2) return +n(e[0], 0, e); if (t >= 1) return +n(e[i - 1], i - 1, e); var i, o = (i - 1) * t, a = Math.floor(o), s = +n(e[a], a, e), c = +n(e[a + 1], a + 1, e); return s + (c - s) * (o - a) } } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return e } }, function (e, t, n) { "use strict"; t["a"] = a; var r = n(4), i = n(69), o = n(229); function a(e, t) { var n = Object(r["t"])(e), i = (n + Object(r["t"])(t)) / 2; if (Object(r["a"])(i) < r["i"]) return Object(o["a"])(e); var a = 1 + n * (2 * i - n), s = Object(r["u"])(a) / i; function c(e, t) { var n = Object(r["u"])(a - 2 * i * Object(r["t"])(t)) / i; return [n * Object(r["t"])(e *= i), s - n * Object(r["g"])(e)] } return c.invert = function (e, t) { var n = s - t; return [Object(r["e"])(e, Object(r["a"])(n)) / i * Object(r["s"])(n), Object(r["c"])((a - (e * e + n * n) * i * i) / (2 * i))] }, c } t["b"] = function () { return Object(i["a"])(a).scale(155.424).center([0, 33.6442]) } }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(4), i = n(17); function o(e) { var t = 0, n = r["o"] / 3, o = Object(i["b"])(e), a = o(t, n); return a.parallels = function (e) { return arguments.length ? o(t = e[0] * r["r"], n = e[1] * r["r"]) : [t * r["h"], n * r["h"]] }, a } }, function (e, t, n) { "use strict"; t["a"] = o, t["b"] = a; var r = n(22), i = n(124); function o(e, t, n) { var o = t[1][0] - t[0][0], a = t[1][1] - t[0][1], s = e.clipExtent && e.clipExtent(); e.scale(150).translate([0, 0]), null != s && e.clipExtent(null), Object(r["a"])(n, e.stream(i["a"])); var c = i["a"].result(), l = Math.min(o / (c[1][0] - c[0][0]), a / (c[1][1] - c[0][1])), u = +t[0][0] + (o - l * (c[1][0] + c[0][0])) / 2, h = +t[0][1] + (a - l * (c[1][1] + c[0][1])) / 2; return null != s && e.clipExtent(s), e.scale(150 * l).translate([u, h]) } function a(e, t, n) { return o(e, [[0, 0], t], n) } }, function (e, t, n) { "use strict"; t["c"] = a, t["b"] = s; var r = n(4), i = n(50), o = n(17); function a(e, t) { return [e, Object(r["n"])(Object(r["v"])((r["l"] + t) / 2))] } function s(e) { var t, n, s, c = Object(o["a"])(e), l = c.center, u = c.scale, h = c.translate, f = c.clipExtent, d = null; function p() { var o = r["o"] * u(), l = c(Object(i["a"])(c.rotate()).invert([0, 0])); return f(null == d ? [[l[0] - o, l[1] - o], [l[0] + o, l[1] + o]] : e === a ? [[Math.max(l[0] - o, d), t], [Math.min(l[0] + o, n), s]] : [[d, Math.max(l[1] - o, t)], [n, Math.min(l[1] + o, s)]]) } return c.scale = function (e) { return arguments.length ? (u(e), p()) : u() }, c.translate = function (e) { return arguments.length ? (h(e), p()) : h() }, c.center = function (e) { return arguments.length ? (l(e), p()) : l() }, c.clipExtent = function (e) { return arguments.length ? (null == e ? d = t = n = s = null : (d = +e[0][0], t = +e[0][1], n = +e[1][0], s = +e[1][1]), p()) : null == d ? null : [[d, t], [n, s]] }, p() } a.invert = function (e, t) { return [e, 2 * Object(r["d"])(Object(r["k"])(t)) - r["l"]] }, t["a"] = function () { return s(a).scale(961 / r["w"]) } }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(0), i = n(1); function o(e, t) { var n = Object(i["B"])(1 - Object(i["y"])(t)); return [2 / i["E"] * e * n, i["E"] * (1 - n)] } o.invert = function (e, t) { var n = (n = t / i["E"] - 1) * n; return [n > 0 ? e * Object(i["B"])(i["s"] / n) / 2 : 0, Object(i["e"])(1 - n)] }, t["b"] = function () { return Object(r["geoProjection"])(o).scale(95.6464).center([0, 30]) } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return a })), n.d(t, "d", (function () { return s })), t["c"] = c; var r = n(0), i = n(21), o = n(38), a = .7109889596207567, s = .0528035274542; function c(e, t) { return t > -a ? (e = Object(i["d"])(e, t), e[1] += s, e) : Object(o["b"])(e, t) } c.invert = function (e, t) { return t > -a ? i["d"].invert(e, t - s) : o["b"].invert(e, t) }, t["a"] = function () { return Object(r["geoProjection"])(c).rotate([-20, -55]).scale(164.263).center([0, -5.4036]) } }, function (e, t, n) { "use strict"; var r = [[0, 90], [-90, 0], [0, 0], [90, 0], [180, 0], [0, -90]]; t["a"] = [[0, 2, 1], [0, 3, 2], [5, 1, 2], [5, 2, 3], [0, 1, 4], [0, 4, 3], [5, 4, 1], [5, 3, 4]].map((function (e) { return e.map((function (e) { return r[e] })) })) }, function (e, t, n) { "use strict"; var r = n(0), i = n(1); t["a"] = function (e) { var t = e(i["o"], 0)[0] - e(-i["o"], 0)[0]; function n(n, r) { var o = Object(i["a"])(n) < i["o"], a = e(o ? n : n > 0 ? n - i["s"] : n + i["s"], r), s = (a[0] - a[1]) * i["C"], c = (a[0] + a[1]) * i["C"]; if (o) return [s, c]; var l = t * i["C"], u = s > 0 ^ c > 0 ? -1 : 1; return [u * s - Object(i["x"])(c) * l, u * c - Object(i["x"])(s) * l] } return e.invert && (n.invert = function (n, r) { var o = (n + r) * i["C"], a = (r - n) * i["C"], s = Object(i["a"])(o) < .5 * t && Object(i["a"])(a) < .5 * t; if (!s) { var c = t * i["C"], l = o > 0 ^ a > 0 ? -1 : 1, u = -l * n + (a > 0 ? 1 : -1) * c, h = -l * r + (o > 0 ? 1 : -1) * c; o = (-u - h) * i["C"], a = (u - h) * i["C"] } var f = e.invert(o, a); return s || (f[0] += o > 0 ? i["s"] : -i["s"]), f }), Object(r["geoProjection"])(n).rotate([-90, -90, 45]).clipAngle(179.999) } }, function (e, t) { var n = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r = function (e) { var t = "undefined" === typeof e ? "undefined" : n(e); return null !== e && "object" === t || "function" === t }; e.exports = r }, function (e, t) { var n = function (e) { return null === e || void 0 === e }; e.exports = n }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(144), i = n(5); function o(e, t) { return [e > i["o"] ? e - i["w"] : e < -i["o"] ? e + i["w"] : e, t] } function a(e, t, n) { return (e %= i["w"]) ? t || n ? Object(r["a"])(c(e), l(t, n)) : c(e) : t || n ? l(t, n) : o } function s(e) { return function (t, n) { return t += e, [t > i["o"] ? t - i["w"] : t < -i["o"] ? t + i["w"] : t, n] } } function c(e) { var t = s(e); return t.invert = s(-e), t } function l(e, t) { var n = Object(i["g"])(e), r = Object(i["t"])(e), o = Object(i["g"])(t), a = Object(i["t"])(t); function s(e, t) { var s = Object(i["g"])(t), c = Object(i["g"])(e) * s, l = Object(i["t"])(e) * s, u = Object(i["t"])(t), h = u * n + c * r; return [Object(i["e"])(l * o - h * a, c * n - u * r), Object(i["c"])(h * o + l * a)] } return s.invert = function (e, t) { var s = Object(i["g"])(t), c = Object(i["g"])(e) * s, l = Object(i["t"])(e) * s, u = Object(i["t"])(t), h = u * o - l * a; return [Object(i["e"])(l * o + u * a, c * n + h * r), Object(i["c"])(h * n - c * r)] }, s } o.invert = o, t["a"] = function (e) { function t(t) { return t = e(t[0] * i["r"], t[1] * i["r"]), t[0] *= i["h"], t[1] *= i["h"], t } return e = a(e[0] * i["r"], e[1] * i["r"], e.length > 2 ? e[2] * i["r"] : 0), t.invert = function (t) { return t = e.invert(t[0] * i["r"], t[1] * i["r"]), t[0] *= i["h"], t[1] *= i["h"], t }, t } }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(5), i = n(80); function o(e, t) { var n = Object(r["t"])(e), i = (n + Object(r["t"])(t)) / 2, o = 1 + n * (2 * i - n), a = Object(r["u"])(o) / i; function s(e, t) { var n = Object(r["u"])(o - 2 * i * Object(r["t"])(t)) / i; return [n * Object(r["t"])(e *= i), a - n * Object(r["g"])(e)] } return s.invert = function (e, t) { var n = a - t; return [Object(r["e"])(e, n) / i, Object(r["c"])((o - (e * e + n * n) * i * i) / (2 * i))] }, s } t["b"] = function () { return Object(i["a"])(o).scale(155.424).center([0, 33.6442]) } }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(5), i = n(18); function o(e) { var t = 0, n = r["o"] / 3, o = Object(i["b"])(e), a = o(t, n); return a.parallels = function (e) { return arguments.length ? o(t = e[0] * r["r"], n = e[1] * r["r"]) : [t * r["h"], n * r["h"]] }, a } }, function (e, t, n) { "use strict"; function r(e) { function t() { } var n = t.prototype = Object.create(i.prototype); for (var r in e) n[r] = e[r]; return function (e) { var n = new t; return n.stream = e, n } } function i() { } t["b"] = r, t["a"] = function (e) { return { stream: r(e) } }, i.prototype = { point: function (e, t) { this.stream.point(e, t) }, sphere: function () { this.stream.sphere() }, lineStart: function () { this.stream.lineStart() }, lineEnd: function () { this.stream.lineEnd() }, polygonStart: function () { this.stream.polygonStart() }, polygonEnd: function () { this.stream.polygonEnd() } } }, function (e, t, n) { "use strict"; t["c"] = o, t["b"] = a; var r = n(18), i = n(5); function o(e, t) { return [e, Object(i["n"])(Object(i["v"])((i["l"] + t) / 2))] } function a(e) { var t, n = Object(r["a"])(e), o = n.scale, a = n.translate, s = n.clipExtent; return n.scale = function (e) { return arguments.length ? (o(e), t && n.clipExtent(null), n) : o() }, n.translate = function (e) { return arguments.length ? (a(e), t && n.clipExtent(null), n) : a() }, n.clipExtent = function (e) { if (!arguments.length) return t ? null : s(); if (t = null == e) { var r = i["o"] * o(), c = a(); e = [[c[0] - r, c[1] - r], [c[0] + r, c[1] + r]] } return s(e), n }, n.clipExtent(null) } o.invert = function (e, t) { return [e, 2 * Object(i["d"])(Object(i["k"])(t)) - i["l"]] }, t["a"] = function () { return a(o).scale(961 / i["w"]) } }, function (e, t, n) { var r = n(9), i = n(11), o = Object.values ? function (e) { return Object.values(e) } : function (e) { var t = []; return r(e, (function (n, r) { i(e) && "prototype" === r || t.push(n) })), t }; e.exports = o }, function (e, t) { e.exports = { HIERARCHY: "hierarchy", GEO: "geo", HEX: "hex", GRAPH: "graph", TABLE: "table", GEO_GRATICULE: "geo-graticule", STATISTICS_METHODS: ["max", "mean", "median", "min", "mode", "product", "standardDeviation", "sum", "sumSimple", "variance"] } }, function (e, t, n) { "use strict"; var r = {}, i = {}, o = 34, a = 10, s = 13; function c(e) { return new Function("d", "return {" + e.map((function (e, t) { return JSON.stringify(e) + ": d[" + t + "]" })).join(",") + "}") } function l(e, t) { var n = c(e); return function (r, i) { return t(n(r), i, e) } } function u(e) { var t = Object.create(null), n = []; return e.forEach((function (e) { for (var r in e) r in t || n.push(t[r] = r) })), n } t["a"] = function (e) { var t = new RegExp('["' + e + "\n\r]"), n = e.charCodeAt(0); function h(e, t) { var n, r, i = f(e, (function (e, i) { if (n) return n(e, i - 1); r = e, n = t ? l(e, t) : c(e) })); return i.columns = r || [], i } function f(e, t) { var c, l = [], u = e.length, h = 0, f = 0, d = u <= 0, p = !1; function v() { if (d) return i; if (p) return p = !1, r; var t, c, l = h; if (e.charCodeAt(l) === o) { while (h++ < u && e.charCodeAt(h) !== o || e.charCodeAt(++h) === o); return (t = h) >= u ? d = !0 : (c = e.charCodeAt(h++)) === a ? p = !0 : c === s && (p = !0, e.charCodeAt(h) === a && ++h), e.slice(l + 1, t - 1).replace(/""/g, '"') } while (h < u) { if ((c = e.charCodeAt(t = h++)) === a) p = !0; else if (c === s) p = !0, e.charCodeAt(h) === a && ++h; else if (c !== n) continue; return e.slice(l, t) } return d = !0, e.slice(l, u) } e.charCodeAt(u - 1) === a && --u, e.charCodeAt(u - 1) === s && --u; while ((c = v()) !== i) { var m = []; while (c !== r && c !== i) m.push(c), c = v(); t && null == (m = t(m, f++)) || l.push(m) } return l } function d(t, n) { return null == n && (n = u(t)), [n.map(m).join(e)].concat(t.map((function (t) { return n.map((function (e) { return m(t[e]) })).join(e) }))).join("\n") } function p(e) { return e.map(v).join("\n") } function v(t) { return t.map(m).join(e) } function m(e) { return null == e ? "" : t.test(e += "") ? '"' + e.replace(/"/g, '""') + '"' : e } return { parse: h, parseRows: f, format: d, formatRows: p } } }, function (e, t, n) { "use strict"; t["c"] = p, t["b"] = y, t["a"] = b; var r = n(370), i = n(371), o = n(372), a = n(373), s = n(374), c = n(375), l = n(376), u = n(377), h = n(378), f = n(379), d = n(380); function p(e, t) { var n, r, i, o, a, s = new b(e), c = +e.value && (s.value = e.value), l = [s]; null == t && (t = m); while (n = l.pop()) if (c && (n.value = +n.data.value), (i = t(n.data)) && (a = i.length)) for (n.children = new Array(a), o = a - 1; o >= 0; --o)l.push(r = n.children[o] = new b(i[o])), r.parent = n, r.depth = n.depth + 1; return s.eachBefore(y) } function v() { return p(this).eachBefore(g) } function m(e) { return e.children } function g(e) { e.data = e.data.data } function y(e) { var t = 0; do { e.height = t } while ((e = e.parent) && e.height < ++t) } function b(e) { this.data = e, this.depth = this.height = 0, this.parent = null } b.prototype = p.prototype = { constructor: b, count: r["a"], each: i["a"], eachAfter: a["a"], eachBefore: o["a"], sum: s["a"], sort: c["a"], path: l["a"], ancestors: u["a"], descendants: h["a"], leaves: f["a"], links: d["a"], copy: v } }, function (e, t, n) { "use strict"; function r(e) { return null == e ? null : i(e) } function i(e) { if ("function" !== typeof e) throw new Error; return e } t["a"] = r, t["b"] = i }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return o })), t["c"] = a; var r = n(45), i = n(55), o = (1 + Math.sqrt(5)) / 2; function a(e, t, n, o, a, s) { var c, l, u, h, f, d, p, v, m, g, y, b = [], x = t.children, w = 0, _ = 0, C = x.length, M = t.value; while (w < C) { u = a - n, h = s - o; do { f = x[_++].value } while (!f && _ < C); for (d = p = f, g = Math.max(h / u, u / h) / (M * e), y = f * f * g, m = Math.max(p / y, y / d); _ < C; ++_) { if (f += l = x[_].value, l < d && (d = l), l > p && (p = l), y = f * f * g, v = Math.max(p / y, y / d), v > m) { f -= l; break } m = v } b.push(c = { value: f, dice: u < h, children: x.slice(w, _) }), c.dice ? Object(r["a"])(c, n, o, a, M ? o += h * f / M : s) : Object(i["a"])(c, n, o, M ? n += u * f / M : a, s), M -= f, w = _ } return b } t["a"] = function e(t) { function n(e, n, r, i, o) { a(t, e, n, r, i, o) } return n.ratio = function (t) { return e((t = +t) > 1 ? t : 1) }, n }(o) }, function (e, t, n) { "use strict"; var r = n(165); t["a"] = function (e) { if (null == e) return r["a"]; var t, n, i = e.scale[0], o = e.scale[1], a = e.translate[0], s = e.translate[1]; return function (e, r) { r || (t = n = 0); var c = 2, l = e.length, u = new Array(l); u[0] = (t += e[0]) * i + a, u[1] = (n += e[1]) * o + s; while (c < l) u[c] = e[c], ++c; return u } } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(392), i = n(89); function o(e, t) { var n = t.id, r = t.bbox, i = null == t.properties ? {} : t.properties, o = a(e, t); return null == n && null == r ? { type: "Feature", properties: i, geometry: o } : null == r ? { type: "Feature", id: n, properties: i, geometry: o } : { type: "Feature", id: n, bbox: r, properties: i, geometry: o } } function a(e, t) { var n = Object(i["a"])(e.transform), o = e.arcs; function a(e, t) { t.length && t.pop(); for (var i = o[e < 0 ? ~e : e], a = 0, s = i.length; a < s; ++a)t.push(n(i[a], a)); e < 0 && Object(r["a"])(t, s) } function s(e) { return n(e) } function c(e) { for (var t = [], n = 0, r = e.length; n < r; ++n)a(e[n], t); return t.length < 2 && t.push(t[0]), t } function l(e) { var t = c(e); while (t.length < 4) t.push(t[0]); return t } function u(e) { return e.map(l) } function h(e) { var t, n = e.type; switch (n) { case "GeometryCollection": return { type: n, geometries: e.geometries.map(h) }; case "Point": t = s(e.coordinates); break; case "MultiPoint": t = e.coordinates.map(s); break; case "LineString": t = c(e.arcs); break; case "MultiLineString": t = e.arcs.map(c); break; case "Polygon": t = u(e.arcs); break; case "MultiPolygon": t = e.arcs.map(u); break; default: return null }return { type: n, coordinates: t } } return h(t) } t["a"] = function (e, t) { return "GeometryCollection" === t.type ? { type: "FeatureCollection", features: t.geometries.map((function (t) { return o(e, t) })) } : o(e, t) } }, function (e, t) { var n = function (e) { return null !== e && "function" !== typeof e && isFinite(e.length) }; e.exports = n }, function (e, t) { function n(e) { return Math.abs(e) <= 1 ? .5 : 0 } function r(e) { var t = 1 - Math.pow(Math.abs(e), 3); return Math.pow(t, 3) } e.exports = { boxcar: n, cosine: function (e) { return Math.abs(e) <= 1 ? Math.PI / 4 * Math.cos(Math.PI / 2 * e) : 0 }, epanechnikov: function (e) { return Math.abs(e) < 1 ? .75 * (1 - e * e) : 0 }, gaussian: function (e) { return .3989422804 * Math.exp(-.5 * e * e) }, quartic: function (e) { if (Math.abs(e) < 1) { var t = 1 - e * e; return 15 / 16 * t * t } return 0 }, triangular: function (e) { var t = Math.abs(e); return t < 1 ? 1 - t : 0 }, tricube: function (e) { return Math.abs(e) < 1 ? 70 / 81 * r(e) : 0 }, triweight: function (e) { if (Math.abs(e) < 1) { var t = 1 - e * e; return 35 / 32 * t * t * t } return 0 }, uniform: n } }, function (e, t, n) { "use strict"; var r = n(13); e.exports = s; var i = "\0", o = "\0", a = ""; function s(e) { this._isDirected = !r.has(e, "directed") || e.directed, this._isMultigraph = !!r.has(e, "multigraph") && e.multigraph, this._isCompound = !!r.has(e, "compound") && e.compound, this._label = void 0, this._defaultNodeLabelFn = r.constant(void 0), this._defaultEdgeLabelFn = r.constant(void 0), this._nodes = {}, this._isCompound && (this._parent = {}, this._children = {}, this._children[o] = {}), this._in = {}, this._preds = {}, this._out = {}, this._sucs = {}, this._edgeObjs = {}, this._edgeLabels = {} } function c(e, t) { e[t] ? e[t]++ : e[t] = 1 } function l(e, t) { --e[t] || delete e[t] } function u(e, t, n, o) { var s = "" + t, c = "" + n; if (!e && s > c) { var l = s; s = c, c = l } return s + a + c + a + (r.isUndefined(o) ? i : o) } function h(e, t, n, r) { var i = "" + t, o = "" + n; if (!e && i > o) { var a = i; i = o, o = a } var s = { v: i, w: o }; return r && (s.name = r), s } function f(e, t) { return u(e, t.v, t.w, t.name) } s.prototype._nodeCount = 0, s.prototype._edgeCount = 0, s.prototype.isDirected = function () { return this._isDirected }, s.prototype.isMultigraph = function () { return this._isMultigraph }, s.prototype.isCompound = function () { return this._isCompound }, s.prototype.setGraph = function (e) { return this._label = e, this }, s.prototype.graph = function () { return this._label }, s.prototype.setDefaultNodeLabel = function (e) { return r.isFunction(e) || (e = r.constant(e)), this._defaultNodeLabelFn = e, this }, s.prototype.nodeCount = function () { return this._nodeCount }, s.prototype.nodes = function () { return r.keys(this._nodes) }, s.prototype.sources = function () { var e = this; return r.filter(this.nodes(), (function (t) { return r.isEmpty(e._in[t]) })) }, s.prototype.sinks = function () { var e = this; return r.filter(this.nodes(), (function (t) { return r.isEmpty(e._out[t]) })) }, s.prototype.setNodes = function (e, t) { var n = arguments, i = this; return r.each(e, (function (e) { n.length > 1 ? i.setNode(e, t) : i.setNode(e) })), this }, s.prototype.setNode = function (e, t) { return r.has(this._nodes, e) ? (arguments.length > 1 && (this._nodes[e] = t), this) : (this._nodes[e] = arguments.length > 1 ? t : this._defaultNodeLabelFn(e), this._isCompound && (this._parent[e] = o, this._children[e] = {}, this._children[o][e] = !0), this._in[e] = {}, this._preds[e] = {}, this._out[e] = {}, this._sucs[e] = {}, ++this._nodeCount, this) }, s.prototype.node = function (e) { return this._nodes[e] }, s.prototype.hasNode = function (e) { return r.has(this._nodes, e) }, s.prototype.removeNode = function (e) { var t = this; if (r.has(this._nodes, e)) { var n = function (e) { t.removeEdge(t._edgeObjs[e]) }; delete this._nodes[e], this._isCompound && (this._removeFromParentsChildList(e), delete this._parent[e], r.each(this.children(e), (function (e) { t.setParent(e) })), delete this._children[e]), r.each(r.keys(this._in[e]), n), delete this._in[e], delete this._preds[e], r.each(r.keys(this._out[e]), n), delete this._out[e], delete this._sucs[e], --this._nodeCount } return this }, s.prototype.setParent = function (e, t) { if (!this._isCompound) throw new Error("Cannot set parent in a non-compound graph"); if (r.isUndefined(t)) t = o; else { t += ""; for (var n = t; !r.isUndefined(n); n = this.parent(n))if (n === e) throw new Error("Setting " + t + " as parent of " + e + " would create a cycle"); this.setNode(t) } return this.setNode(e), this._removeFromParentsChildList(e), this._parent[e] = t, this._children[t][e] = !0, this }, s.prototype._removeFromParentsChildList = function (e) { delete this._children[this._parent[e]][e] }, s.prototype.parent = function (e) { if (this._isCompound) { var t = this._parent[e]; if (t !== o) return t } }, s.prototype.children = function (e) { if (r.isUndefined(e) && (e = o), this._isCompound) { var t = this._children[e]; if (t) return r.keys(t) } else { if (e === o) return this.nodes(); if (this.hasNode(e)) return [] } }, s.prototype.predecessors = function (e) { var t = this._preds[e]; if (t) return r.keys(t) }, s.prototype.successors = function (e) { var t = this._sucs[e]; if (t) return r.keys(t) }, s.prototype.neighbors = function (e) { var t = this.predecessors(e); if (t) return r.union(t, this.successors(e)) }, s.prototype.isLeaf = function (e) { var t; return t = this.isDirected() ? this.successors(e) : this.neighbors(e), 0 === t.length }, s.prototype.filterNodes = function (e) { var t = new this.constructor({ directed: this._isDirected, multigraph: this._isMultigraph, compound: this._isCompound }); t.setGraph(this.graph()); var n = this; r.each(this._nodes, (function (n, r) { e(r) && t.setNode(r, n) })), r.each(this._edgeObjs, (function (e) { t.hasNode(e.v) && t.hasNode(e.w) && t.setEdge(e, n.edge(e)) })); var i = {}; function o(e) { var r = n.parent(e); return void 0 === r || t.hasNode(r) ? (i[e] = r, r) : r in i ? i[r] : o(r) } return this._isCompound && r.each(t.nodes(), (function (e) { t.setParent(e, o(e)) })), t }, s.prototype.setDefaultEdgeLabel = function (e) { return r.isFunction(e) || (e = r.constant(e)), this._defaultEdgeLabelFn = e, this }, s.prototype.edgeCount = function () { return this._edgeCount }, s.prototype.edges = function () { return r.values(this._edgeObjs) }, s.prototype.setPath = function (e, t) { var n = this, i = arguments; return r.reduce(e, (function (e, r) { return i.length > 1 ? n.setEdge(e, r, t) : n.setEdge(e, r), r })), this }, s.prototype.setEdge = function () { var e, t, n, i, o = !1, a = arguments[0]; "object" === typeof a && null !== a && "v" in a ? (e = a.v, t = a.w, n = a.name, 2 === arguments.length && (i = arguments[1], o = !0)) : (e = a, t = arguments[1], n = arguments[3], arguments.length > 2 && (i = arguments[2], o = !0)), e = "" + e, t = "" + t, r.isUndefined(n) || (n = "" + n); var s = u(this._isDirected, e, t, n); if (r.has(this._edgeLabels, s)) return o && (this._edgeLabels[s] = i), this; if (!r.isUndefined(n) && !this._isMultigraph) throw new Error("Cannot set a named edge when isMultigraph = false"); this.setNode(e), this.setNode(t), this._edgeLabels[s] = o ? i : this._defaultEdgeLabelFn(e, t, n); var l = h(this._isDirected, e, t, n); return e = l.v, t = l.w, Object.freeze(l), this._edgeObjs[s] = l, c(this._preds[t], e), c(this._sucs[e], t), this._in[t][s] = l, this._out[e][s] = l, this._edgeCount++, this }, s.prototype.edge = function (e, t, n) { var r = 1 === arguments.length ? f(this._isDirected, arguments[0]) : u(this._isDirected, e, t, n); return this._edgeLabels[r] }, s.prototype.hasEdge = function (e, t, n) { var i = 1 === arguments.length ? f(this._isDirected, arguments[0]) : u(this._isDirected, e, t, n); return r.has(this._edgeLabels, i) }, s.prototype.removeEdge = function (e, t, n) { var r = 1 === arguments.length ? f(this._isDirected, arguments[0]) : u(this._isDirected, e, t, n), i = this._edgeObjs[r]; return i && (e = i.v, t = i.w, delete this._edgeLabels[r], delete this._edgeObjs[r], l(this._preds[t], e), l(this._sucs[e], t), delete this._in[t][r], delete this._out[e][r], this._edgeCount--), this }, s.prototype.inEdges = function (e, t) { var n = this._in[e]; if (n) { var i = r.values(n); return t ? r.filter(i, (function (e) { return e.v === t })) : i } }, s.prototype.outEdges = function (e, t) { var n = this._out[e]; if (n) { var i = r.values(n); return t ? r.filter(i, (function (e) { return e.w === t })) : i } }, s.prototype.nodeEdges = function (e, t) { var n = this.inEdges(e, t); if (n) return n.concat(this.outEdges(e, t)) } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return r })); var r = "$"; function i() { } function o(e, t) { var n = new i; if (e instanceof i) e.each((function (e, t) { n.set(t, e) })); else if (Array.isArray(e)) { var r, o = -1, a = e.length; if (null == t) while (++o < a) n.set(o, e[o]); else while (++o < a) n.set(t(r = e[o], o, e), r) } else if (e) for (var s in e) n.set(s, e[s]); return n } i.prototype = o.prototype = { constructor: i, has: function (e) { return r + e in this }, get: function (e) { return this[r + e] }, set: function (e, t) { return this[r + e] = t, this }, remove: function (e) { var t = r + e; return t in this && delete this[t] }, clear: function () { for (var e in this) e[0] === r && delete this[e] }, keys: function () { var e = []; for (var t in this) t[0] === r && e.push(t.slice(1)); return e }, values: function () { var e = []; for (var t in this) t[0] === r && e.push(this[t]); return e }, entries: function () { var e = []; for (var t in this) t[0] === r && e.push({ key: t.slice(1), value: this[t] }); return e }, size: function () { var e = 0; for (var t in this) t[0] === r && ++e; return e }, empty: function () { for (var e in this) if (e[0] === r) return !1; return !0 }, each: function (e) { for (var t in this) t[0] === r && e(this[t], t.slice(1), this) } }, t["a"] = o }, function (e, t, n) { "use strict"; var r = n(33), i = n(27), o = n(60), a = n(96); t["a"] = function () { var e = a["a"], t = a["b"], n = Object(i["a"])(!0), s = null, c = o["a"], l = null; function u(i) { var o, a, u, h = i.length, f = !1; for (null == s && (l = c(u = Object(r["path"])())), o = 0; o <= h; ++o)!(o < h && n(a = i[o], o, i)) === f && ((f = !f) ? l.lineStart() : l.lineEnd()), f && l.point(+e(a, o, i), +t(a, o, i)); if (u) return l = null, u + "" || null } return u.x = function (t) { return arguments.length ? (e = "function" === typeof t ? t : Object(i["a"])(+t), u) : e }, u.y = function (e) { return arguments.length ? (t = "function" === typeof e ? e : Object(i["a"])(+e), u) : t }, u.defined = function (e) { return arguments.length ? (n = "function" === typeof e ? e : Object(i["a"])(!!e), u) : n }, u.curve = function (e) { return arguments.length ? (c = e, null != s && (l = c(s)), u) : c }, u.context = function (e) { return arguments.length ? (null == e ? s = l = null : l = c(s = e), u) : s }, u } }, function (e, t, n) { "use strict"; function r(e) { return e[0] } function i(e) { return e[1] } t["a"] = r, t["b"] = i }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(46), i = n(63); function o(e, t, n) { var i = e._x1, o = e._y1, a = e._x2, s = e._y2; if (e._l01_a > r["f"]) { var c = 2 * e._l01_2a + 3 * e._l01_a * e._l12_a + e._l12_2a, l = 3 * e._l01_a * (e._l01_a + e._l12_a); i = (i * c - e._x0 * e._l12_2a + e._x2 * e._l01_2a) / l, o = (o * c - e._y0 * e._l12_2a + e._y2 * e._l01_2a) / l } if (e._l23_a > r["f"]) { var u = 2 * e._l23_2a + 3 * e._l23_a * e._l12_a + e._l12_2a, h = 3 * e._l23_a * (e._l23_a + e._l12_a); a = (a * u + e._x1 * e._l23_2a - t * e._l12_2a) / h, s = (s * u + e._y1 * e._l23_2a - n * e._l12_2a) / h } e._context.bezierCurveTo(i, o, a, s, e._x2, e._y2) } function a(e, t) { this._context = e, this._alpha = t } a.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0 }, lineEnd: function () { switch (this._point) { case 2: this._context.lineTo(this._x2, this._y2); break; case 3: this.point(this._x2, this._y2); break }(this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (e, t) { if (e = +e, t = +t, this._point) { var n = this._x2 - e, r = this._y2 - t; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(n * n + r * r, this._alpha)) } switch (this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(e, t) : this._context.moveTo(e, t); break; case 1: this._point = 2; break; case 2: this._point = 3; default: o(this, e, t); break }this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = e, this._y0 = this._y1, this._y1 = this._y2, this._y2 = t } }; (function e(t) { function n(e) { return t ? new a(e, t) : new i["a"](e, 0) } return n.alpha = function (t) { return e(+t) }, n })(.5) }, function (e, t, n) { "use strict"; t["b"] = i; var r = n(48); function i(e) { var t, n = 0, r = -1, i = e.length; while (++r < i) (t = +e[r][1]) && (n += t); return n } t["a"] = function (e) { var t = e.map(i); return Object(r["a"])(e).sort((function (e, n) { return t[e] - t[n] })) } }, function (e, t, n) { "use strict"; function r() { this._ = null } function i(e) { e.U = e.C = e.L = e.R = e.P = e.N = null } function o(e, t) { var n = t, r = t.R, i = n.U; i ? i.L === n ? i.L = r : i.R = r : e._ = r, r.U = i, n.U = r, n.R = r.L, n.R && (n.R.U = n), r.L = n } function a(e, t) { var n = t, r = t.L, i = n.U; i ? i.L === n ? i.L = r : i.R = r : e._ = r, r.U = i, n.U = r, n.L = r.R, n.L && (n.L.U = n), r.R = n } function s(e) { while (e.L) e = e.L; return e } t["a"] = i, r.prototype = { constructor: r, insert: function (e, t) { var n, r, i; if (e) { if (t.P = e, t.N = e.N, e.N && (e.N.P = t), e.N = t, e.R) { e = e.R; while (e.L) e = e.L; e.L = t } else e.R = t; n = e } else this._ ? (e = s(this._), t.P = null, t.N = e, e.P = e.L = t, n = e) : (t.P = t.N = null, this._ = t, n = null); t.L = t.R = null, t.U = n, t.C = !0, e = t; while (n && n.C) r = n.U, n === r.L ? (i = r.R, i && i.C ? (n.C = i.C = !1, r.C = !0, e = r) : (e === n.R && (o(this, n), e = n, n = e.U), n.C = !1, r.C = !0, a(this, r))) : (i = r.L, i && i.C ? (n.C = i.C = !1, r.C = !0, e = r) : (e === n.L && (a(this, n), e = n, n = e.U), n.C = !1, r.C = !0, o(this, r))), n = e.U; this._.C = !1 }, remove: function (e) { e.N && (e.N.P = e.P), e.P && (e.P.N = e.N), e.N = e.P = null; var t, n, r, i = e.U, c = e.L, l = e.R; if (n = c ? l ? s(l) : c : l, i ? i.L === e ? i.L = n : i.R = n : this._ = n, c && l ? (r = n.C, n.C = e.C, n.L = c, c.U = n, n !== l ? (i = n.U, n.U = e.U, e = n.R, i.L = e, n.R = l, l.U = n) : (n.U = i, i = n, e = n.R)) : (r = e.C, e = n), e && (e.U = i), !r) if (e && e.C) e.C = !1; else { do { if (e === this._) break; if (e === i.L) { if (t = i.R, t.C && (t.C = !1, i.C = !0, o(this, i), t = i.R), t.L && t.L.C || t.R && t.R.C) { t.R && t.R.C || (t.L.C = !1, t.C = !0, a(this, t), t = i.R), t.C = i.C, i.C = t.R.C = !1, o(this, i), e = this._; break } } else if (t = i.L, t.C && (t.C = !1, i.C = !0, a(this, i), t = i.L), t.L && t.L.C || t.R && t.R.C) { t.L && t.L.C || (t.R.C = !1, t.C = !0, o(this, t), t = i.L), t.C = i.C, i.C = t.L.C = !1, a(this, i), e = this._; break } t.C = !0, e = i, i = i.U } while (!e.C); e && (e.C = !1) } } }, t["b"] = r }, function (e, t, n) { "use strict"; t["c"] = i, t["b"] = o, t["d"] = a, t["a"] = l; var r = n(49); function i(e, t, n, i) { var o = [null, null], s = r["e"].push(o) - 1; return o.left = e, o.right = t, n && a(o, e, t, n), i && a(o, t, e, i), r["b"][e.index].halfedges.push(s), r["b"][t.index].halfedges.push(s), o } function o(e, t, n) { var r = [t, n]; return r.left = e, r } function a(e, t, n, r) { e[0] || e[1] ? e.left === n ? e[1] = r : e[0] = r : (e[0] = r, e.left = t, e.right = n) } function s(e, t, n, r, i) { var o, a = e[0], s = e[1], c = a[0], l = a[1], u = s[0], h = s[1], f = 0, d = 1, p = u - c, v = h - l; if (o = t - c, p || !(o > 0)) { if (o /= p, p < 0) { if (o < f) return; o < d && (d = o) } else if (p > 0) { if (o > d) return; o > f && (f = o) } if (o = r - c, p || !(o < 0)) { if (o /= p, p < 0) { if (o > d) return; o > f && (f = o) } else if (p > 0) { if (o < f) return; o < d && (d = o) } if (o = n - l, v || !(o > 0)) { if (o /= v, v < 0) { if (o < f) return; o < d && (d = o) } else if (v > 0) { if (o > d) return; o > f && (f = o) } if (o = i - l, v || !(o < 0)) { if (o /= v, v < 0) { if (o > d) return; o > f && (f = o) } else if (v > 0) { if (o < f) return; o < d && (d = o) } return !(f > 0 || d < 1) || (f > 0 && (e[0] = [c + f * p, l + f * v]), d < 1 && (e[1] = [c + d * p, l + d * v]), !0) } } } } } function c(e, t, n, r, i) { var o = e[1]; if (o) return !0; var a, s, c = e[0], l = e.left, u = e.right, h = l[0], f = l[1], d = u[0], p = u[1], v = (h + d) / 2, m = (f + p) / 2; if (p === f) { if (v < t || v >= r) return; if (h > d) { if (c) { if (c[1] >= i) return } else c = [v, n]; o = [v, i] } else { if (c) { if (c[1] < n) return } else c = [v, i]; o = [v, n] } } else if (a = (h - d) / (p - f), s = m - a * v, a < -1 || a > 1) if (h > d) { if (c) { if (c[1] >= i) return } else c = [(n - s) / a, n]; o = [(i - s) / a, i] } else { if (c) { if (c[1] < n) return } else c = [(i - s) / a, i]; o = [(n - s) / a, n] } else if (f < p) { if (c) { if (c[0] >= r) return } else c = [t, a * t + s]; o = [r, a * r + s] } else { if (c) { if (c[0] < t) return } else c = [r, a * r + s]; o = [t, a * t + s] } return e[0] = c, e[1] = o, !0 } function l(e, t, n, i) { var o, a = r["e"].length; while (a--) c(o = r["e"][a], e, t, n, i) && s(o, e, t, n, i) && (Math.abs(o[0][0] - o[1][0]) > r["f"] || Math.abs(o[0][1] - o[1][1]) > r["f"]) || delete r["e"][a] } }, function (e, t, n) { var r = { compactBox: n(516), dendrogram: n(518), indented: n(520), mindmap: n(522) }; e.exports = r }, function (e, t, n) { var r = n(194), i = ["LR", "RL", "TB", "BT", "H", "V"], o = ["LR", "RL", "H"], a = function (e) { return o.indexOf(e) > -1 }, s = i[0]; e.exports = function (e, t, n) { var o = t.direction || s; if (t.isHorizontal = a(o), o && -1 === i.indexOf(o)) throw new TypeError("Invalid direction: " + o); if (o === i[0]) n(e, t); else if (o === i[1]) n(e, t), e.right2left(); else if (o === i[2]) n(e, t); else if (o === i[3]) n(e, t), e.bottom2top(); else if (o === i[4] || o === i[5]) { var c = r(e, t), l = c.left, u = c.right; n(l, t), n(u, t), t.isHorizontal ? l.right2left() : l.bottom2top(), u.translate(l.x - u.x, l.y - u.y), e.x = l.x, e.y = u.y; var h = e.getBoundingBox(); t.isHorizontal ? h.top < 0 && e.translate(0, -h.top) : h.left < 0 && e.translate(-h.left, 0) } return e.translate(-(e.x + e.width / 2 + e.hgap), -(e.y + e.height / 2 + e.vgap)), e } }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return f })), n.d(t, "b", (function () { return p })); var r, i, o, a, s, c = n(29), l = n(4), u = n(20), h = n(22), f = Object(c["a"])(), d = Object(c["a"])(), p = { point: u["a"], lineStart: u["a"], lineEnd: u["a"], polygonStart: function () { f.reset(), p.lineStart = v, p.lineEnd = m }, polygonEnd: function () { var e = +f; d.add(e < 0 ? l["w"] + e : e), this.lineStart = this.lineEnd = this.point = u["a"] }, sphere: function () { d.add(l["w"]) } }; function v() { p.point = g } function m() { y(r, i) } function g(e, t) { p.point = y, r = e, i = t, e *= l["r"], t *= l["r"], o = e, a = Object(l["g"])(t = t / 2 + l["q"]), s = Object(l["t"])(t) } function y(e, t) { e *= l["r"], t *= l["r"], t = t / 2 + l["q"]; var n = e - o, r = n >= 0 ? 1 : -1, i = r * n, c = Object(l["g"])(t), u = Object(l["t"])(t), h = s * u, d = a * c + h * Object(l["g"])(i), p = h * r * Object(l["t"])(i); f.add(Object(l["e"])(p, d)), o = e, a = c, s = u } t["c"] = function (e) { return d.reset(), Object(h["a"])(e, p), 2 * d } }, function (e, t, n) { "use strict"; t["a"] = s; var r = n(35), i = n(199), o = n(4), a = n(50); function s(e, t, n, i, a, s) { if (n) { var l = Object(o["g"])(t), u = Object(o["t"])(t), h = i * n; null == a ? (a = t + i * o["w"], s = t - h / 2) : (a = c(l, a), s = c(l, s), (i > 0 ? a < s : a > s) && (a += i * o["w"])); for (var f, d = a; i > 0 ? d > s : d < s; d -= h)f = Object(r["g"])([l, -u * Object(o["g"])(d), -u * Object(o["t"])(d)]), e.point(f[0], f[1]) } } function c(e, t) { t = Object(r["a"])(t), t[0] -= e, Object(r["e"])(t); var n = Object(o["b"])(-t[1]); return ((-t[2] < 0 ? -n : n) + o["w"] - o["i"]) % o["w"] } t["b"] = function () { var e, t, n = Object(i["a"])([0, 0]), r = Object(i["a"])(90), c = Object(i["a"])(6), l = { point: u }; function u(n, r) { e.push(n = t(n, r)), n[0] *= o["h"], n[1] *= o["h"] } function h() { var i = n.apply(this, arguments), u = r.apply(this, arguments) * o["r"], h = c.apply(this, arguments) * o["r"]; return e = [], t = Object(a["b"])(-i[0] * o["r"], -i[1] * o["r"], 0).invert, s(l, u, h, 1), i = { type: "Polygon", coordinates: [e] }, e = t = null, i } return h.center = function (e) { return arguments.length ? (n = "function" === typeof e ? e : Object(i["a"])([+e[0], +e[1]]), h) : n }, h.radius = function (e) { return arguments.length ? (r = "function" === typeof e ? e : Object(i["a"])(+e), h) : r }, h.precision = function (e) { return arguments.length ? (c = "function" === typeof e ? e : Object(i["a"])(+e), h) : c }, h } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { function n(n, r) { return n = e(n, r), t(n[0], n[1]) } return e.invert && t.invert && (n.invert = function (n, r) { return n = t.invert(n, r), n && e.invert(n[0], n[1]) }), n } }, function (e, t, n) { "use strict"; var r = n(20); t["a"] = function () { var e, t = []; return { point: function (t, n) { e.push([t, n]) }, lineStart: function () { t.push(e = []) }, lineEnd: r["a"], rejoin: function () { t.length > 1 && t.push(t.pop().concat(t.shift())) }, result: function () { var n = t; return t = [], e = null, n } } } }, function (e, t, n) { "use strict"; var r = n(108); function i(e, t, n, r) { this.x = e, this.z = t, this.o = n, this.e = r, this.v = !1, this.n = this.p = null } function o(e) { if (t = e.length) { var t, n, r = 0, i = e[0]; while (++r < t) i.n = n = e[r], n.p = i, i = n; i.n = n = e[0], n.p = i } } t["a"] = function (e, t, n, a, s) { var c, l, u = [], h = []; if (e.forEach((function (e) { if (!((t = e.length - 1) <= 0)) { var t, n, o = e[0], a = e[t]; if (Object(r["a"])(o, a)) { for (s.lineStart(), c = 0; c < t; ++c)s.point((o = e[c])[0], o[1]); s.lineEnd() } else u.push(n = new i(o, e, null, !0)), h.push(n.o = new i(o, null, n, !1)), u.push(n = new i(a, e, null, !1)), h.push(n.o = new i(a, null, n, !0)) } })), u.length) { for (h.sort(t), o(u), o(h), c = 0, l = h.length; c < l; ++c)h[c].e = n = !n; var f, d, p = u[0]; while (1) { var v = p, m = !0; while (v.v) if ((v = v.n) === p) return; f = v.z, s.lineStart(); do { if (v.v = v.o.v = !0, v.e) { if (m) for (c = 0, l = f.length; c < l; ++c)s.point((d = f[c])[0], d[1]); else a(v.x, v.n.x, 1, s); v = v.n } else { if (m) for (f = v.p.z, c = f.length - 1; c >= 0; --c)s.point((d = f[c])[0], d[1]); else a(v.x, v.p.x, -1, s); v = v.p } v = v.o, f = v.z, m = !m } while (!v.v); s.lineEnd() } } } }, function (e, t, n) { "use strict"; var r = n(4); t["a"] = function (e, t) { return Object(r["a"])(e[0] - t[0]) < r["i"] && Object(r["a"])(e[1] - t[1]) < r["i"] } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return a })), n.d(t, "a", (function () { return s })); var r = n(30), i = n(110), o = Object(i["a"])(r["a"]), a = o.right, s = o.left; t["c"] = a }, function (e, t, n) { "use strict"; var r = n(30); function i(e) { return function (t, n) { return Object(r["a"])(e(t), n) } } t["a"] = function (e) { return 1 === e.length && (e = i(e)), { left: function (t, n, r, i) { null == r && (r = 0), null == i && (i = t.length); while (r < i) { var o = r + i >>> 1; e(t[o], n) < 0 ? r = o + 1 : i = o } return r }, right: function (t, n, r, i) { null == r && (r = 0), null == i && (i = t.length); while (r < i) { var o = r + i >>> 1; e(t[o], n) > 0 ? i = o : r = o + 1 } return r } } } }, function (e, t, n) { "use strict"; function r(e, t) { return [e, t] } t["b"] = r, t["a"] = function (e, t) { null == t && (t = r); var n = 0, i = e.length - 1, o = e[0], a = new Array(i < 0 ? 0 : i); while (n < i) a[n] = t(o, o = e[++n]); return a } }, function (e, t, n) { "use strict"; var r = n(113); t["a"] = function (e, t) { var n = Object(r["a"])(e, t); return n ? Math.sqrt(n) : n } }, function (e, t, n) { "use strict"; var r = n(36); t["a"] = function (e, t) { var n, i, o = e.length, a = 0, s = -1, c = 0, l = 0; if (null == t) while (++s < o) isNaN(n = Object(r["a"])(e[s])) || (i = n - c, c += i / ++a, l += i * (n - c)); else while (++s < o) isNaN(n = Object(r["a"])(t(e[s], s, e))) || (i = n - c, c += i / ++a, l += i * (n - c)); if (a > 1) return l / (a - 1) } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { var n, r, i, o = e.length, a = -1; if (null == t) { while (++a < o) if (null != (n = e[a]) && n >= n) { r = i = n; while (++a < o) null != (n = e[a]) && (r > n && (r = n), i < n && (i = n)) } } else while (++a < o) if (null != (n = t(e[a], a, e)) && n >= n) { r = i = n; while (++a < o) null != (n = t(e[a], a, e)) && (r > n && (r = n), i < n && (i = n)) } return [r, i] } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return i })), n.d(t, "a", (function () { return o })); var r = Array.prototype, i = r.slice, o = r.map }, function (e, t, n) { "use strict"; t["a"] = function (e, t, n) { e = +e, t = +t, n = (i = arguments.length) < 2 ? (t = e, e = 0, 1) : i < 3 ? 1 : +n; var r = -1, i = 0 | Math.max(0, Math.ceil((t - e) / n)), o = new Array(i); while (++r < i) o[r] = e + r * n; return o } }, function (e, t, n) { "use strict"; t["b"] = a, t["c"] = s; var r = Math.sqrt(50), i = Math.sqrt(10), o = Math.sqrt(2); function a(e, t, n) { var a = (t - e) / Math.max(0, n), s = Math.floor(Math.log(a) / Math.LN10), c = a / Math.pow(10, s); return s >= 0 ? (c >= r ? 10 : c >= i ? 5 : c >= o ? 2 : 1) * Math.pow(10, s) : -Math.pow(10, -s) / (c >= r ? 10 : c >= i ? 5 : c >= o ? 2 : 1) } function s(e, t, n) { var a = Math.abs(t - e) / Math.max(0, n), s = Math.pow(10, Math.floor(Math.log(a) / Math.LN10)), c = a / s; return c >= r ? s *= 10 : c >= i ? s *= 5 : c >= o && (s *= 2), t < e ? -s : s } t["a"] = function (e, t, n) { var r, i, o, s, c = -1; if (t = +t, e = +e, n = +n, e === t && n > 0) return [e]; if ((r = t < e) && (i = e, e = t, t = i), 0 === (s = a(e, t, n)) || !isFinite(s)) return []; if (s > 0) { e = Math.ceil(e / s), t = Math.floor(t / s), o = new Array(i = Math.ceil(t - e + 1)); while (++c < i) o[c] = (e + c) * s } else { e = Math.floor(e * s), t = Math.ceil(t * s), o = new Array(i = Math.ceil(e - t + 1)); while (++c < i) o[c] = (e - c) / s } return r && o.reverse(), o } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return Math.ceil(Math.log(e.length) / Math.LN2) + 1 } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { var n, r, i = e.length, o = -1; if (null == t) { while (++o < i) if (null != (n = e[o]) && n >= n) { r = n; while (++o < i) null != (n = e[o]) && r > n && (r = n) } } else while (++o < i) if (null != (n = t(e[o], o, e)) && n >= n) { r = n; while (++o < i) null != (n = t(e[o], o, e)) && r > n && (r = n) } return r } }, function (e, t, n) { "use strict"; var r = n(119); function i(e) { return e.length } t["a"] = function (e) { if (!(a = e.length)) return []; for (var t = -1, n = Object(r["a"])(e, i), o = new Array(n); ++t < n;)for (var a, s = -1, c = o[t] = new Array(a); ++s < a;)c[s] = e[s][t]; return o } }, function (e, t, n) { "use strict"; var r = n(29), i = n(35), o = n(4), a = Object(r["a"])(); t["a"] = function (e, t) { var n = t[0], r = t[1], s = [Object(o["t"])(n), -Object(o["g"])(n), 0], c = 0, l = 0; a.reset(); for (var u = 0, h = e.length; u < h; ++u)if (d = (f = e[u]).length) for (var f, d, p = f[d - 1], v = p[0], m = p[1] / 2 + o["q"], g = Object(o["t"])(m), y = Object(o["g"])(m), b = 0; b < d; ++b, v = w, g = C, y = M, p = x) { var x = f[b], w = x[0], _ = x[1] / 2 + o["q"], C = Object(o["t"])(_), M = Object(o["g"])(_), O = w - v, k = O >= 0 ? 1 : -1, S = k * O, T = S > o["o"], A = g * C; if (a.add(Object(o["e"])(A * k * Object(o["t"])(S), y * M + A * Object(o["g"])(S))), c += T ? O + k * o["w"] : O, T ^ v >= n ^ w >= n) { var L = Object(i["c"])(Object(i["a"])(p), Object(i["a"])(x)); Object(i["e"])(L); var j = Object(i["c"])(s, L); Object(i["e"])(j); var z = (T ^ O >= 0 ? -1 : 1) * Object(o["c"])(j[2]); (r > z || r === z && (L[0] || L[1])) && (l += T ^ O >= 0 ? 1 : -1) } } return (c < -o["i"] || c < o["i"] && a < -o["i"]) ^ 1 & l } }, function (e, t, n) { "use strict"; var r = n(123), i = [null, null], o = { type: "LineString", coordinates: i }; t["a"] = function (e, t) { return i[0] = e, i[1] = t, Object(r["a"])(o) } }, function (e, t, n) { "use strict"; var r, i, o, a = n(29), s = n(4), c = n(20), l = n(22), u = Object(a["a"])(), h = { sphere: c["a"], point: c["a"], lineStart: f, lineEnd: c["a"], polygonStart: c["a"], polygonEnd: c["a"] }; function f() { h.point = p, h.lineEnd = d } function d() { h.point = h.lineEnd = c["a"] } function p(e, t) { e *= s["r"], t *= s["r"], r = e, i = Object(s["t"])(t), o = Object(s["g"])(t), h.point = v } function v(e, t) { e *= s["r"], t *= s["r"]; var n = Object(s["t"])(t), a = Object(s["g"])(t), c = Object(s["a"])(e - r), l = Object(s["g"])(c), h = Object(s["t"])(c), f = a * h, d = o * n - i * a * l, p = i * n + o * a * l; u.add(Object(s["e"])(Object(s["u"])(f * f + d * d), p)), r = e, i = n, o = a } t["a"] = function (e) { return u.reset(), Object(l["a"])(e, h), +u } }, function (e, t, n) { "use strict"; var r = n(20), i = 1 / 0, o = i, a = -i, s = a, c = { point: l, lineStart: r["a"], lineEnd: r["a"], polygonStart: r["a"], polygonEnd: r["a"], result: function () { var e = [[i, o], [a, s]]; return a = s = -(o = i = 1 / 0), e } }; function l(e, t) { e < i && (i = e), e > a && (a = e), t < o && (o = t), t > s && (s = t) } t["a"] = c }, function (e, t, n) { "use strict"; var r = n(68); t["a"] = function () { return Object(r["b"])().parallels([29.5, 45.5]).scale(1070).translate([480, 250]).rotate([96, 0]).center([-.6, 38.7]) } }, function (e, t, n) { "use strict"; var r = n(106), i = n(107), o = n(4), a = n(121), s = n(14); function c(e) { return e.length > 1 } function l(e, t) { return ((e = e.x)[0] < 0 ? e[1] - o["l"] - o["i"] : o["l"] - e[1]) - ((t = t.x)[0] < 0 ? t[1] - o["l"] - o["i"] : o["l"] - t[1]) } t["a"] = function (e, t, n, o) { return function (u, h) { var f, d, p, v = t(h), m = u.invert(o[0], o[1]), g = Object(r["a"])(), y = t(g), b = !1, x = { point: w, lineStart: C, lineEnd: M, polygonStart: function () { x.point = O, x.lineStart = k, x.lineEnd = S, d = [], f = [] }, polygonEnd: function () { x.point = w, x.lineStart = C, x.lineEnd = M, d = Object(s["merge"])(d); var e = Object(a["a"])(f, m); d.length ? (b || (h.polygonStart(), b = !0), Object(i["a"])(d, l, e, n, h)) : e && (b || (h.polygonStart(), b = !0), h.lineStart(), n(null, null, 1, h), h.lineEnd()), b && (h.polygonEnd(), b = !1), d = f = null }, sphere: function () { h.polygonStart(), h.lineStart(), n(null, null, 1, h), h.lineEnd(), h.polygonEnd() } }; function w(t, n) { var r = u(t, n); e(t = r[0], n = r[1]) && h.point(t, n) } function _(e, t) { var n = u(e, t); v.point(n[0], n[1]) } function C() { x.point = _, v.lineStart() } function M() { x.point = w, v.lineEnd() } function O(e, t) { p.push([e, t]); var n = u(e, t); y.point(n[0], n[1]) } function k() { y.lineStart(), p = [] } function S() { O(p[0][0], p[0][1]), y.lineEnd(); var e, t, n, r, i = y.clean(), o = g.result(), a = o.length; if (p.pop(), f.push(p), p = null, a) if (1 & i) { if (n = o[0], (t = n.length - 1) > 0) { for (b || (h.polygonStart(), b = !0), h.lineStart(), e = 0; e < t; ++e)h.point((r = n[e])[0], r[1]); h.lineEnd() } } else a > 1 && 2 & i && o.push(o.pop().concat(o.shift())), d.push(o.filter(c)) } return x } } }, function (e, t, n) { "use strict"; t["b"] = i; var r = n(17); function i(e, t) { return [e, t] } i.invert = i, t["a"] = function () { return Object(r["a"])(i).scale(152.63) } }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(240); n.d(t, "geoAiry", (function () { return r["b"] })), n.d(t, "geoAiryRaw", (function () { return r["a"] })); var i = n(129); n.d(t, "geoAitoff", (function () { return i["b"] })), n.d(t, "geoAitoffRaw", (function () { return i["a"] })); var o = n(241); n.d(t, "geoArmadillo", (function () { return o["b"] })), n.d(t, "geoArmadilloRaw", (function () { return o["a"] })); var a = n(130); n.d(t, "geoAugust", (function () { return a["b"] })), n.d(t, "geoAugustRaw", (function () { return a["a"] })); var s = n(242); n.d(t, "geoBaker", (function () { return s["b"] })), n.d(t, "geoBakerRaw", (function () { return s["a"] })); var c = n(243); n.d(t, "geoBerghaus", (function () { return c["b"] })), n.d(t, "geoBerghausRaw", (function () { return c["a"] })); var l = n(131); n.d(t, "geoBoggs", (function () { return l["b"] })), n.d(t, "geoBoggsRaw", (function () { return l["a"] })); var u = n(244); n.d(t, "geoBonne", (function () { return u["b"] })), n.d(t, "geoBonneRaw", (function () { return u["a"] })); var h = n(245); n.d(t, "geoBottomley", (function () { return h["b"] })), n.d(t, "geoBottomleyRaw", (function () { return h["a"] })); var f = n(246); n.d(t, "geoBromley", (function () { return f["b"] })), n.d(t, "geoBromleyRaw", (function () { return f["a"] })); var d = n(247); n.d(t, "geoChamberlin", (function () { return d["c"] })), n.d(t, "geoChamberlinRaw", (function () { return d["b"] })), n.d(t, "geoChamberlinAfrica", (function () { return d["a"] })); var p = n(72); n.d(t, "geoCollignon", (function () { return p["b"] })), n.d(t, "geoCollignonRaw", (function () { return p["a"] })); var v = n(248); n.d(t, "geoCraig", (function () { return v["b"] })), n.d(t, "geoCraigRaw", (function () { return v["a"] })); var m = n(249); n.d(t, "geoCraster", (function () { return m["b"] })), n.d(t, "geoCrasterRaw", (function () { return m["a"] })); var g = n(132); n.d(t, "geoCylindricalEqualArea", (function () { return g["b"] })), n.d(t, "geoCylindricalEqualAreaRaw", (function () { return g["a"] })); var y = n(250); n.d(t, "geoCylindricalStereographic", (function () { return y["b"] })), n.d(t, "geoCylindricalStereographicRaw", (function () { return y["a"] })); var b = n(251); n.d(t, "geoEckert1", (function () { return b["a"] })), n.d(t, "geoEckert1Raw", (function () { return b["b"] })); var x = n(252); n.d(t, "geoEckert2", (function () { return x["a"] })), n.d(t, "geoEckert2Raw", (function () { return x["b"] })); var w = n(253); n.d(t, "geoEckert3", (function () { return w["a"] })), n.d(t, "geoEckert3Raw", (function () { return w["b"] })); var _ = n(254); n.d(t, "geoEckert4", (function () { return _["a"] })), n.d(t, "geoEckert4Raw", (function () { return _["b"] })); var C = n(255); n.d(t, "geoEckert5", (function () { return C["a"] })), n.d(t, "geoEckert5Raw", (function () { return C["b"] })); var M = n(256); n.d(t, "geoEckert6", (function () { return M["a"] })), n.d(t, "geoEckert6Raw", (function () { return M["b"] })); var O = n(257); n.d(t, "geoEisenlohr", (function () { return O["a"] })), n.d(t, "geoEisenlohrRaw", (function () { return O["b"] })); var k = n(258); n.d(t, "geoFahey", (function () { return k["a"] })), n.d(t, "geoFaheyRaw", (function () { return k["b"] })); var S = n(259); n.d(t, "geoFoucaut", (function () { return S["a"] })), n.d(t, "geoFoucautRaw", (function () { return S["b"] })); var T = n(260); n.d(t, "geoGilbert", (function () { return T["a"] })); var A = n(261); n.d(t, "geoGingery", (function () { return A["a"] })), n.d(t, "geoGingeryRaw", (function () { return A["b"] })); var L = n(262); n.d(t, "geoGinzburg4", (function () { return L["a"] })), n.d(t, "geoGinzburg4Raw", (function () { return L["b"] })); var j = n(263); n.d(t, "geoGinzburg5", (function () { return j["a"] })), n.d(t, "geoGinzburg5Raw", (function () { return j["b"] })); var z = n(264); n.d(t, "geoGinzburg6", (function () { return z["a"] })), n.d(t, "geoGinzburg6Raw", (function () { return z["b"] })); var E = n(265); n.d(t, "geoGinzburg8", (function () { return E["a"] })), n.d(t, "geoGinzburg8Raw", (function () { return E["b"] })); var P = n(266); n.d(t, "geoGinzburg9", (function () { return P["a"] })), n.d(t, "geoGinzburg9Raw", (function () { return P["b"] })); var D = n(133); n.d(t, "geoGringorten", (function () { return D["a"] })), n.d(t, "geoGringortenRaw", (function () { return D["b"] })); var H = n(135); n.d(t, "geoGuyou", (function () { return H["a"] })), n.d(t, "geoGuyouRaw", (function () { return H["b"] })); var V = n(268); n.d(t, "geoHammer", (function () { return V["a"] })), n.d(t, "geoHammerRaw", (function () { return V["b"] })); var I = n(269); n.d(t, "geoHammerRetroazimuthal", (function () { return I["a"] })), n.d(t, "geoHammerRetroazimuthalRaw", (function () { return I["b"] })); var N = n(270); n.d(t, "geoHealpix", (function () { return N["a"] })), n.d(t, "geoHealpixRaw", (function () { return N["b"] })); var R = n(271); n.d(t, "geoHill", (function () { return R["a"] })), n.d(t, "geoHillRaw", (function () { return R["b"] })); var F = n(136); n.d(t, "geoHomolosine", (function () { return F["a"] })), n.d(t, "geoHomolosineRaw", (function () { return F["b"] })); var Y = n(23); n.d(t, "geoInterrupt", (function () { return Y["a"] })); var $ = n(272); n.d(t, "geoInterruptedBoggs", (function () { return $["a"] })); var B = n(273); n.d(t, "geoInterruptedHomolosine", (function () { return B["a"] })); var W = n(274); n.d(t, "geoInterruptedMollweide", (function () { return W["a"] })); var q = n(275); n.d(t, "geoInterruptedMollweideHemispheres", (function () { return q["a"] })); var U = n(276); n.d(t, "geoInterruptedSinuMollweide", (function () { return U["a"] })); var K = n(277); n.d(t, "geoInterruptedSinusoidal", (function () { return K["a"] })); var G = n(278); n.d(t, "geoKavrayskiy7", (function () { return G["a"] })), n.d(t, "geoKavrayskiy7Raw", (function () { return G["b"] })); var X = n(279); n.d(t, "geoLagrange", (function () { return X["a"] })), n.d(t, "geoLagrangeRaw", (function () { return X["b"] })); var J = n(280); n.d(t, "geoLarrivee", (function () { return J["a"] })), n.d(t, "geoLarriveeRaw", (function () { return J["b"] })); var Q = n(281); n.d(t, "geoLaskowski", (function () { return Q["a"] })), n.d(t, "geoLaskowskiRaw", (function () { return Q["b"] })); var Z = n(282); n.d(t, "geoLittrow", (function () { return Z["a"] })), n.d(t, "geoLittrowRaw", (function () { return Z["b"] })); var ee = n(283); n.d(t, "geoLoximuthal", (function () { return ee["a"] })), n.d(t, "geoLoximuthalRaw", (function () { return ee["b"] })); var te = n(284); n.d(t, "geoMiller", (function () { return te["a"] })), n.d(t, "geoMillerRaw", (function () { return te["b"] })); var ne = n(285); n.d(t, "geoModifiedStereographic", (function () { return ne["a"] })), n.d(t, "geoModifiedStereographicRaw", (function () { return ne["g"] })), n.d(t, "geoModifiedStereographicAlaska", (function () { return ne["b"] })), n.d(t, "geoModifiedStereographicGs48", (function () { return ne["c"] })), n.d(t, "geoModifiedStereographicGs50", (function () { return ne["d"] })), n.d(t, "geoModifiedStereographicMiller", (function () { return ne["f"] })), n.d(t, "geoModifiedStereographicLee", (function () { return ne["e"] })); var re = n(21); n.d(t, "geoMollweide", (function () { return re["a"] })), n.d(t, "geoMollweideRaw", (function () { return re["d"] })); var ie = n(286); n.d(t, "geoMtFlatPolarParabolic", (function () { return ie["a"] })), n.d(t, "geoMtFlatPolarParabolicRaw", (function () { return ie["b"] })); var oe = n(287); n.d(t, "geoMtFlatPolarQuartic", (function () { return oe["a"] })), n.d(t, "geoMtFlatPolarQuarticRaw", (function () { return oe["b"] })); var ae = n(288); n.d(t, "geoMtFlatPolarSinusoidal", (function () { return ae["a"] })), n.d(t, "geoMtFlatPolarSinusoidalRaw", (function () { return ae["b"] })); var se = n(289); n.d(t, "geoNaturalEarth", (function () { return se["a"] })), n.d(t, "geoNaturalEarthRaw", (function () { return se["b"] })); var ce = n(290); n.d(t, "geoNaturalEarth2", (function () { return ce["a"] })), n.d(t, "geoNaturalEarth2Raw", (function () { return ce["b"] })); var le = n(291); n.d(t, "geoNellHammer", (function () { return le["a"] })), n.d(t, "geoNellHammerRaw", (function () { return le["b"] })); var ue = n(292); n.d(t, "geoPatterson", (function () { return ue["a"] })), n.d(t, "geoPattersonRaw", (function () { return ue["b"] })); var he = n(293); n.d(t, "geoPolyconic", (function () { return he["a"] })), n.d(t, "geoPolyconicRaw", (function () { return he["b"] })); var fe = n(53); n.d(t, "geoPolyhedral", (function () { return fe["a"] })); var de = n(295); n.d(t, "geoPolyhedralButterfly", (function () { return de["a"] })); var pe = n(296); n.d(t, "geoPolyhedralCollignon", (function () { return pe["a"] })); var ve = n(297); n.d(t, "geoPolyhedralWaterman", (function () { return ve["a"] })); var me = n(298); n.d(t, "geoProject", (function () { return me["a"] })); var ge = n(302); n.d(t, "geoGringortenQuincuncial", (function () { return ge["a"] })); var ye = n(137); n.d(t, "geoPeirceQuincuncial", (function () { return ye["a"] })), n.d(t, "geoPierceQuincuncial", (function () { return ye["a"] })); var be = n(303); n.d(t, "geoQuantize", (function () { return be["a"] })); var xe = n(75); n.d(t, "geoQuincuncial", (function () { return xe["a"] })); var we = n(304); n.d(t, "geoRectangularPolyconic", (function () { return we["a"] })), n.d(t, "geoRectangularPolyconicRaw", (function () { return we["b"] })); var _e = n(305); n.d(t, "geoRobinson", (function () { return _e["a"] })), n.d(t, "geoRobinsonRaw", (function () { return _e["b"] })); var Ce = n(306); n.d(t, "geoSatellite", (function () { return Ce["a"] })), n.d(t, "geoSatelliteRaw", (function () { return Ce["b"] })); var Me = n(73); n.d(t, "geoSinuMollweide", (function () { return Me["a"] })), n.d(t, "geoSinuMollweideRaw", (function () { return Me["c"] })); var Oe = n(38); n.d(t, "geoSinusoidal", (function () { return Oe["a"] })), n.d(t, "geoSinusoidalRaw", (function () { return Oe["b"] })); var ke = n(307); n.d(t, "geoStitch", (function () { return ke["a"] })); var Se = n(308); n.d(t, "geoTimes", (function () { return Se["a"] })), n.d(t, "geoTimesRaw", (function () { return Se["b"] })); var Te = n(309); n.d(t, "geoTwoPointAzimuthal", (function () { return Te["a"] })), n.d(t, "geoTwoPointAzimuthalRaw", (function () { return Te["b"] })), n.d(t, "geoTwoPointAzimuthalUsa", (function () { return Te["c"] })); var Ae = n(310); n.d(t, "geoTwoPointEquidistant", (function () { return Ae["a"] })), n.d(t, "geoTwoPointEquidistantRaw", (function () { return Ae["b"] })), n.d(t, "geoTwoPointEquidistantUsa", (function () { return Ae["c"] })); var Le = n(311); n.d(t, "geoVanDerGrinten", (function () { return Le["a"] })), n.d(t, "geoVanDerGrintenRaw", (function () { return Le["b"] })); var je = n(312); n.d(t, "geoVanDerGrinten2", (function () { return je["a"] })), n.d(t, "geoVanDerGrinten2Raw", (function () { return je["b"] })); var ze = n(313); n.d(t, "geoVanDerGrinten3", (function () { return ze["a"] })), n.d(t, "geoVanDerGrinten3Raw", (function () { return ze["b"] })); var Ee = n(314); n.d(t, "geoVanDerGrinten4", (function () { return Ee["a"] })), n.d(t, "geoVanDerGrinten4Raw", (function () { return Ee["b"] })); var Pe = n(315); n.d(t, "geoWagner4", (function () { return Pe["a"] })), n.d(t, "geoWagner4Raw", (function () { return Pe["b"] })); var De = n(316); n.d(t, "geoWagner6", (function () { return De["a"] })), n.d(t, "geoWagner6Raw", (function () { return De["b"] })); var He = n(317); n.d(t, "geoWagner7", (function () { return He["a"] })), n.d(t, "geoWagner7Raw", (function () { return He["b"] })); var Ve = n(318); n.d(t, "geoWiechel", (function () { return Ve["a"] })), n.d(t, "geoWiechelRaw", (function () { return Ve["b"] })); var Ie = n(319); n.d(t, "geoWinkel3", (function () { return Ie["a"] })), n.d(t, "geoWinkel3Raw", (function () { return Ie["b"] })) }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(0), i = n(1); function o(e, t) { var n = Object(i["h"])(t), r = Object(i["z"])(Object(i["b"])(n * Object(i["h"])(e /= 2))); return [2 * n * Object(i["y"])(e) * r, Object(i["y"])(t) * r] } o.invert = function (e, t) { if (!(e * e + 4 * t * t > i["s"] * i["s"] + i["k"])) { var n = e, r = t, o = 25; do { var a, s = Object(i["y"])(n), c = Object(i["y"])(n / 2), l = Object(i["h"])(n / 2), u = Object(i["y"])(r), h = Object(i["h"])(r), f = Object(i["y"])(2 * r), d = u * u, p = h * h, v = c * c, m = 1 - p * l * l, g = m ? Object(i["b"])(h * l) * Object(i["B"])(a = 1 / m) : a = 0, y = 2 * g * h * c - e, b = g * u - t, x = a * (p * v + g * h * l * d), w = a * (.5 * s * f - 2 * g * u * c), _ = .25 * a * (f * c - g * u * p * s), C = a * (d * l + g * v * h), M = w * _ - C * x; if (!M) break; var O = (b * w - y * C) / M, k = (y * _ - b * x) / M; n -= O, r -= k } while ((Object(i["a"])(O) > i["k"] || Object(i["a"])(k) > i["k"]) && --o > 0); return [n, r] } }, t["b"] = function () { return Object(r["geoProjection"])(o).scale(152.63) } }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(0), i = n(1); function o(e, t) { var n = Object(i["F"])(t / 2), r = Object(i["B"])(1 - n * n), o = 1 + r * Object(i["h"])(e /= 2), a = Object(i["y"])(e) * r / o, s = n / o, c = a * a, l = s * s; return [4 / 3 * a * (3 + c - 3 * l), 4 / 3 * s * (3 + 3 * c - l)] } o.invert = function (e, t) { if (e *= 3 / 8, t *= 3 / 8, !e && Object(i["a"])(t) > 1) return null; var n = e * e, r = t * t, o = 1 + n + r, a = Object(i["B"])((o - Object(i["B"])(o * o - 4 * t * t)) / 2), s = Object(i["e"])(a) / 3, c = a ? Object(i["c"])(Object(i["a"])(t / a)) / 3 : Object(i["d"])(Object(i["a"])(e)) / 3, l = Object(i["h"])(s), u = Object(i["i"])(c), h = u * u - l * l; return [2 * Object(i["x"])(e) * Object(i["g"])(Object(i["A"])(c) * l, .25 - h), 2 * Object(i["x"])(t) * Object(i["g"])(u * Object(i["y"])(s), .25 + h)] }, t["b"] = function () { return Object(r["geoProjection"])(o).scale(66.1603) } }, function (e, t, n) { "use strict"; t["a"] = c; var r = n(0), i = n(21), o = n(1), a = 2.00276, s = 1.11072; function c(e, t) { var n = Object(i["c"])(o["s"], t); return [a * e / (1 / Object(o["h"])(t) + s / Object(o["h"])(n)), (t + o["D"] * Object(o["y"])(n)) / a] } c.invert = function (e, t) { var n, r, i = a * t, c = t < 0 ? -o["u"] : o["u"], l = 25; do { r = i - o["D"] * Object(o["y"])(c), c -= n = (Object(o["y"])(2 * c) + 2 * c - o["s"] * Object(o["y"])(r)) / (2 * Object(o["h"])(2 * c) + 2 + o["s"] * Object(o["h"])(r) * o["D"] * Object(o["h"])(c)) } while (Object(o["a"])(n) > o["k"] && --l > 0); return r = i - o["D"] * Object(o["y"])(c), [e * (1 / Object(o["h"])(r) + s / Object(o["h"])(c)) / a, r] }, t["b"] = function () { return Object(r["geoProjection"])(c).scale(160.857) } }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(1), i = n(31); function o(e) { var t = Object(r["h"])(e); function n(e, n) { return [e * t, Object(r["y"])(n) / t] } return n.invert = function (e, n) { return [e / t, Object(r["e"])(n * t)] }, n } t["b"] = function () { return Object(i["a"])(o).parallel(38.58).scale(195.044) } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(0), i = n(1), o = n(134); function a(e, t) { var n = Object(i["x"])(e), r = Object(i["x"])(t), o = Object(i["h"])(t), a = Object(i["h"])(e) * o, c = Object(i["y"])(e) * o, l = Object(i["y"])(r * t); e = Object(i["a"])(Object(i["g"])(c, l)), t = Object(i["e"])(a), Object(i["a"])(e - i["o"]) > i["k"] && (e %= i["o"]); var u = s(e > i["s"] / 4 ? i["o"] - e : e, t); return e > i["s"] / 4 && (l = u[0], u[0] = -u[1], u[1] = -l), u[0] *= n, u[1] *= -r, u } function s(e, t) { if (t === i["o"]) return [0, 0]; var n, r, o = Object(i["y"])(t), a = o * o, s = a * a, c = 1 + s, l = 1 + 3 * s, u = 1 - s, h = Object(i["e"])(1 / Object(i["B"])(c)), f = u + a * c * h, d = (1 - o) / f, p = Object(i["B"])(d), v = d * c, m = Object(i["B"])(v), g = p * u; if (0 === e) return [0, -(g + a * m)]; var y, b = Object(i["h"])(t), x = 1 / b, w = 2 * o * b, _ = (-3 * a + h * l) * w, C = (-f * b - (1 - o) * _) / (f * f), M = .5 * C / p, O = u * M - 2 * a * p * w, k = a * c * C + d * l * w, S = -x * w, T = -x * k, A = -2 * x * O, L = 4 * e / i["s"]; if (e > .222 * i["s"] || t < i["s"] / 4 && e > .175 * i["s"]) { if (n = (g + a * Object(i["B"])(v * (1 + s) - g * g)) / (1 + s), e > i["s"] / 4) return [n, n]; var j = n, z = .5 * n; n = .5 * (z + j), r = 50; do { var E = Object(i["B"])(v - n * n), P = n * (A + S * E) + T * Object(i["e"])(n / m) - L; if (!P) break; P < 0 ? z = n : j = n, n = .5 * (z + j) } while (Object(i["a"])(j - z) > i["k"] && --r > 0) } else { n = i["k"], r = 25; do { var D = n * n, H = Object(i["B"])(v - D), V = A + S * H, I = n * V + T * Object(i["e"])(n / m) - L, N = V + (T - S * D) / H; n -= y = H ? I / N : 0 } while (Object(i["a"])(y) > i["k"] && --r > 0) } return [n, -g - a * Object(i["B"])(v - n * n)] } function c(e, t) { var n = 0, r = 1, o = .5, a = 50; while (1) { var s = o * o, c = Object(i["B"])(o), l = Object(i["e"])(1 / Object(i["B"])(1 + s)), u = 1 - s + o * (1 + s) * l, h = (1 - c) / u, f = Object(i["B"])(h), d = h * (1 + s), p = f * (1 - s), v = d - e * e, m = Object(i["B"])(v), g = t + p + o * m; if (Object(i["a"])(r - n) < i["l"] || 0 === --a || 0 === g) break; g > 0 ? n = o : r = o, o = .5 * (n + r) } if (!a) return null; var y = Object(i["e"])(c), b = Object(i["h"])(y), x = 1 / b, w = 2 * c * b, _ = (-3 * o + l * (1 + 3 * s)) * w, C = (-u * b - (1 - c) * _) / (u * u), M = .5 * C / f, O = (1 - s) * M - 2 * o * f * w, k = -2 * x * O, S = -x * w, T = -x * (o * (1 + s) * C + h * (1 + 3 * s) * w); return [i["s"] / 4 * (e * (k + S * m) + T * Object(i["e"])(e / Object(i["B"])(d))), y] } a.invert = function (e, t) { Object(i["a"])(e) > 1 && (e = 2 * Object(i["x"])(e) - e), Object(i["a"])(t) > 1 && (t = 2 * Object(i["x"])(t) - t); var n = Object(i["x"])(e), r = Object(i["x"])(t), o = -n * e, a = -r * t, s = a / o < 1, l = c(s ? a : o, s ? o : a), u = l[0], h = l[1], f = Object(i["h"])(h); return s && (u = -i["o"] - u), [n * (Object(i["g"])(Object(i["y"])(u) * f, -Object(i["y"])(h)) + i["s"]), r * Object(i["e"])(Object(i["h"])(u) * f)] }, t["a"] = function () { return Object(r["geoProjection"])(Object(o["a"])(a)).scale(239.75) } }, function (e, t, n) { "use strict"; var r = n(1); t["a"] = function (e) { var t = e(r["o"], 0)[0] - e(-r["o"], 0)[0]; function n(n, i) { var o = n > 0 ? -.5 : .5, a = e(n + o * r["s"], i); return a[0] -= o * t, a } return e.invert && (n.invert = function (n, i) { var o = n > 0 ? -.5 : .5, a = e.invert(n + o * t, i), s = a[0] - o * r["s"]; return s < -r["s"] ? s += 2 * r["s"] : s > r["s"] && (s -= 2 * r["s"]), a[0] = s, a }), n } }, function (e, t, n) { "use strict"; t["b"] = s; var r = n(0), i = n(267), o = n(1), a = n(134); function s(e, t) { var n = (o["D"] - 1) / (o["D"] + 1), r = Object(o["B"])(1 - n * n), a = Object(i["a"])(o["o"], r * r), s = -1, l = Object(o["p"])(Object(o["F"])(o["s"] / 4 + Object(o["a"])(t) / 2)), u = Object(o["m"])(s * l) / Object(o["B"])(n), h = c(u * Object(o["h"])(s * e), u * Object(o["y"])(s * e)), f = Object(i["b"])(h[0], h[1], r * r); return [-f[1], (t >= 0 ? 1 : -1) * (.5 * a - f[0])] } function c(e, t) { var n = e * e, r = t + 1, i = 1 - n - t * t; return [.5 * ((e >= 0 ? o["o"] : -o["o"]) - Object(o["g"])(i, 2 * e)), -.25 * Object(o["p"])(i * i + 4 * n) + .5 * Object(o["p"])(r * r + n)] } function l(e, t) { var n = t[0] * t[0] + t[1] * t[1]; return [(e[0] * t[0] + e[1] * t[1]) / n, (e[1] * t[0] - e[0] * t[1]) / n] } s.invert = function (e, t) { var n = (o["D"] - 1) / (o["D"] + 1), r = Object(o["B"])(1 - n * n), a = Object(i["a"])(o["o"], r * r), s = -1, c = Object(i["c"])(.5 * a - t, -e, r * r), u = l(c[0], c[1]), h = Object(o["g"])(u[1], u[0]) / s; return [h, 2 * Object(o["f"])(Object(o["m"])(.5 / s * Object(o["p"])(n * u[0] * u[0] + n * u[1] * u[1]))) - o["o"]] }, t["a"] = function () { return Object(r["geoProjection"])(Object(a["a"])(s)).scale(151.496) } }, function (e, t, n) { "use strict"; t["b"] = c; var r = n(0), i = n(1), o = n(21), a = n(38), s = n(73); function c(e, t) { return Object(i["a"])(t) > s["b"] ? (e = Object(o["d"])(e, t), e[1] -= t > 0 ? s["d"] : -s["d"], e) : Object(a["b"])(e, t) } c.invert = function (e, t) { return Object(i["a"])(t) > s["b"] ? o["d"].invert(e, t + (t > 0 ? s["d"] : -s["d"])) : a["b"].invert(e, t) }, t["a"] = function () { return Object(r["geoProjection"])(c).scale(152.63) } }, function (e, t, n) { "use strict"; var r = n(135), i = n(75); t["a"] = function () { return Object(i["a"])(r["b"]).scale(111.48) } }, function (e, t, n) { "use strict"; var r = n(0), i = n(1); t["a"] = function (e, t, n) { var o = Object(r["geoInterpolate"])(t, n), a = o(.5), s = Object(r["geoRotation"])([-a[0], -a[1]])(t), c = o.distance / 2, l = -Object(i["e"])(Object(i["y"])(s[1] * i["v"]) / Object(i["y"])(c)), u = [-a[0], -a[1], -(s[0] > 0 ? i["s"] - l : l) * i["j"]], h = Object(r["geoProjection"])(e(c)).rotate(u), f = Object(r["geoRotation"])(u), d = h.center; return delete h.rotate, h.center = function (e) { return arguments.length ? d(f(e)) : f.invert(d()) }, h.clipAngle(90) } }, function (e, t, n) {
+                var r;
+/*!
+ * EventEmitter v5.1.0 - git.io/ee
+ * Unlicense - http://unlicense.org/
+ * Oliver Caldwell - http://oli.me.uk/
+ * @preserve
+ */(function (t) { "use strict"; function i() { } var o = i.prototype, a = t.EventEmitter; function s(e, t) { var n = e.length; while (n--) if (e[n].listener === t) return n; return -1 } function c(e) { return function () { return this[e].apply(this, arguments) } } function l(e) { return "function" === typeof e || e instanceof RegExp || !(!e || "object" !== typeof e) && l(e.listener) } o.getListeners = function (e) { var t, n, r = this._getEvents(); if (e instanceof RegExp) for (n in t = {}, r) r.hasOwnProperty(n) && e.test(n) && (t[n] = r[n]); else t = r[e] || (r[e] = []); return t }, o.flattenListeners = function (e) { var t, n = []; for (t = 0; t < e.length; t += 1)n.push(e[t].listener); return n }, o.getListenersAsObject = function (e) { var t, n = this.getListeners(e); return n instanceof Array && (t = {}, t[e] = n), t || n }, o.addListener = function (e, t) { if (!l(t)) throw new TypeError("listener must be a function"); var n, r = this.getListenersAsObject(e), i = "object" === typeof t; for (n in r) r.hasOwnProperty(n) && -1 === s(r[n], t) && r[n].push(i ? t : { listener: t, once: !1 }); return this }, o.on = c("addListener"), o.addOnceListener = function (e, t) { return this.addListener(e, { listener: t, once: !0 }) }, o.once = c("addOnceListener"), o.defineEvent = function (e) { return this.getListeners(e), this }, o.defineEvents = function (e) { for (var t = 0; t < e.length; t += 1)this.defineEvent(e[t]); return this }, o.removeListener = function (e, t) { var n, r, i = this.getListenersAsObject(e); for (r in i) i.hasOwnProperty(r) && (n = s(i[r], t), -1 !== n && i[r].splice(n, 1)); return this }, o.off = c("removeListener"), o.addListeners = function (e, t) { return this.manipulateListeners(!1, e, t) }, o.removeListeners = function (e, t) { return this.manipulateListeners(!0, e, t) }, o.manipulateListeners = function (e, t, n) { var r, i, o = e ? this.removeListener : this.addListener, a = e ? this.removeListeners : this.addListeners; if ("object" !== typeof t || t instanceof RegExp) { r = n.length; while (r--) o.call(this, t, n[r]) } else for (r in t) t.hasOwnProperty(r) && (i = t[r]) && ("function" === typeof i ? o.call(this, r, i) : a.call(this, r, i)); return this }, o.removeEvent = function (e) { var t, n = typeof e, r = this._getEvents(); if ("string" === n) delete r[e]; else if (e instanceof RegExp) for (t in r) r.hasOwnProperty(t) && e.test(t) && delete r[t]; else delete this._events; return this }, o.removeAllListeners = c("removeEvent"), o.emitEvent = function (e, t) { var n, r, i, o, a, s = this.getListenersAsObject(e); for (o in s) if (s.hasOwnProperty(o)) for (n = s[o].slice(0), i = 0; i < n.length; i++)r = n[i], !0 === r.once && this.removeListener(e, r.listener), a = r.listener.apply(this, t || []), a === this._getOnceReturnValue() && this.removeListener(e, r.listener); return this }, o.trigger = c("emitEvent"), o.emit = function (e) { var t = Array.prototype.slice.call(arguments, 1); return this.emitEvent(e, t) }, o.setOnceReturnValue = function (e) { return this._onceReturnValue = e, this }, o._getOnceReturnValue = function () { return !this.hasOwnProperty("_onceReturnValue") || this._onceReturnValue }, o._getEvents = function () { return this._events || (this._events = {}) }, i.noConflict = function () { return t.EventEmitter = a, i }, r = function () { return i }.call(t, n, t, e), void 0 === r || (e.exports = r) })(this || {})
+            }, function (e, t, n) { var r = n(24), i = n(77); function o(e, t) { var n = r(t), o = n.length; if (i(e)) return !o; for (var a = 0; a < o; a += 1) { var s = n[a]; if (t[s] !== e[s] || !(s in e)) return !1 } return !0 } e.exports = o }, function (e, t, n) { var r = n(11), i = n(10), o = n(0), a = n(128), s = n(322); e.exports = function (e, t) { if (r(e)) return t ? e : e(); if (i(e)) { if (o[e]) return t ? o[e] : o[e](); if (a[e]) return t ? a[e] : a[e](); if (s[e]) return t ? s[e] : s[e]() } return null } }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return f })), n.d(t, "b", (function () { return p })); var r, i, o, a, s, c = n(42), l = n(5), u = n(25), h = n(26), f = Object(c["a"])(), d = Object(c["a"])(), p = { point: u["a"], lineStart: u["a"], lineEnd: u["a"], polygonStart: function () { f.reset(), p.lineStart = v, p.lineEnd = m }, polygonEnd: function () { var e = +f; d.add(e < 0 ? l["w"] + e : e), this.lineStart = this.lineEnd = this.point = u["a"] }, sphere: function () { d.add(l["w"]) } }; function v() { p.point = g } function m() { y(r, i) } function g(e, t) { p.point = y, r = e, i = t, e *= l["r"], t *= l["r"], o = e, a = Object(l["g"])(t = t / 2 + l["q"]), s = Object(l["t"])(t) } function y(e, t) { e *= l["r"], t *= l["r"], t = t / 2 + l["q"]; var n = e - o, r = n >= 0 ? 1 : -1, i = r * n, c = Object(l["g"])(t), u = Object(l["t"])(t), h = s * u, d = a * c + h * Object(l["g"])(i), p = h * r * Object(l["t"])(i); f.add(Object(l["e"])(p, d)), o = e, a = c, s = u } t["c"] = function (e) { return d.reset(), Object(h["a"])(e, p), 2 * d } }, function (e, t, n) { "use strict"; t["a"] = s; var r = n(43), i = n(326), o = n(5), a = n(78); function s(e, t, n, i, a, s) { if (n) { var l = Object(o["g"])(t), u = Object(o["t"])(t), h = i * n; null == a ? (a = t + i * o["w"], s = t - h / 2) : (a = c(l, a), s = c(l, s), (i > 0 ? a < s : a > s) && (a += i * o["w"])); for (var f, d = a; i > 0 ? d > s : d < s; d -= h)f = Object(r["g"])([l, -u * Object(o["g"])(d), -u * Object(o["t"])(d)]), e.point(f[0], f[1]) } } function c(e, t) { t = Object(r["a"])(t), t[0] -= e, Object(r["e"])(t); var n = Object(o["b"])(-t[1]); return ((-t[2] < 0 ? -n : n) + o["w"] - o["i"]) % o["w"] } t["b"] = function () { var e, t, n = Object(i["a"])([0, 0]), r = Object(i["a"])(90), c = Object(i["a"])(6), l = { point: u }; function u(n, r) { e.push(n = t(n, r)), n[0] *= o["h"], n[1] *= o["h"] } function h() { var i = n.apply(this, arguments), u = r.apply(this, arguments) * o["r"], h = c.apply(this, arguments) * o["r"]; return e = [], t = Object(a["b"])(-i[0] * o["r"], -i[1] * o["r"], 0).invert, s(l, u, h, 1), i = { type: "Polygon", coordinates: [e] }, e = t = null, i } return h.center = function (e) { return arguments.length ? (n = "function" === typeof e ? e : Object(i["a"])([+e[0], +e[1]]), h) : n }, h.radius = function (e) { return arguments.length ? (r = "function" === typeof e ? e : Object(i["a"])(+e), h) : r }, h.precision = function (e) { return arguments.length ? (c = "function" === typeof e ? e : Object(i["a"])(+e), h) : c }, h } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { function n(n, r) { return n = e(n, r), t(n[0], n[1]) } return e.invert && t.invert && (n.invert = function (n, r) { return n = t.invert(n, r), n && e.invert(n[0], n[1]) }), n } }, function (e, t, n) { "use strict"; t["a"] = u; var r = n(5), i = n(146), o = n(327), a = n(147), s = n(14), c = 1e9, l = -c; function u(e, t, n, u) { function h(r, i) { return e <= r && r <= n && t <= i && i <= u } function f(r, i, o, a) { var s = 0, c = 0; if (null == r || (s = d(r, o)) !== (c = d(i, o)) || v(r, i) < 0 ^ o > 0) do { a.point(0 === s || 3 === s ? e : n, s > 1 ? u : t) } while ((s = (s + o + 4) % 4) !== c); else a.point(i[0], i[1]) } function d(i, o) { return Object(r["a"])(i[0] - e) < r["i"] ? o > 0 ? 0 : 3 : Object(r["a"])(i[0] - n) < r["i"] ? o > 0 ? 2 : 1 : Object(r["a"])(i[1] - t) < r["i"] ? o > 0 ? 1 : 0 : o > 0 ? 3 : 2 } function p(e, t) { return v(e.x, t.x) } function v(e, t) { var n = d(e, 1), r = d(t, 1); return n !== r ? n - r : 0 === n ? t[1] - e[1] : 1 === n ? e[0] - t[0] : 2 === n ? e[1] - t[1] : t[0] - e[0] } return function (r) { var d, v, m, g, y, b, x, w, _, C, M, O = r, k = Object(i["a"])(), S = { point: T, lineStart: z, lineEnd: E, polygonStart: L, polygonEnd: j }; function T(e, t) { h(e, t) && O.point(e, t) } function A() { for (var t = 0, n = 0, r = v.length; n < r; ++n)for (var i, o, a = v[n], s = 1, c = a.length, l = a[0], h = l[0], f = l[1]; s < c; ++s)i = h, o = f, l = a[s], h = l[0], f = l[1], o <= u ? f > u && (h - i) * (u - o) > (f - o) * (e - i) && ++t : f <= u && (h - i) * (u - o) < (f - o) * (e - i) && --t; return t } function L() { O = k, d = [], v = [], M = !0 } function j() { var e = A(), t = M && e, n = (d = Object(s["merge"])(d)).length; (t || n) && (r.polygonStart(), t && (r.lineStart(), f(null, null, 1, r), r.lineEnd()), n && Object(a["a"])(d, p, e, f, r), r.polygonEnd()), O = r, d = v = m = null } function z() { S.point = P, v && v.push(m = []), C = !0, _ = !1, x = w = NaN } function E() { d && (P(g, y), b && _ && k.rejoin(), d.push(k.result())), S.point = T, _ && O.lineEnd() } function P(r, i) { var a = h(r, i); if (v && m.push([r, i]), C) g = r, y = i, b = a, C = !1, a && (O.lineStart(), O.point(r, i)); else if (a && _) O.point(r, i); else { var s = [x = Math.max(l, Math.min(c, x)), w = Math.max(l, Math.min(c, w))], f = [r = Math.max(l, Math.min(c, r)), i = Math.max(l, Math.min(c, i))]; Object(o["a"])(s, f, e, t, n, u) ? (_ || (O.lineStart(), O.point(s[0], s[1])), O.point(f[0], f[1]), a || O.lineEnd(), M = !1) : a && (O.lineStart(), O.point(r, i), M = !1) } x = r, w = i, _ = a } return S } } t["b"] = function () { var e, t, n, r = 0, i = 0, o = 960, a = 500; return n = { stream: function (n) { return e && t === n ? e : e = u(r, i, o, a)(t = n) }, extent: function (s) { return arguments.length ? (r = +s[0][0], i = +s[0][1], o = +s[1][0], a = +s[1][1], e = t = null, n) : [[r, i], [o, a]] } } } }, function (e, t, n) { "use strict"; var r = n(25); t["a"] = function () { var e, t = []; return { point: function (t, n) { e.push([t, n]) }, lineStart: function () { t.push(e = []) }, lineEnd: r["a"], rejoin: function () { t.length > 1 && t.push(t.pop().concat(t.shift())) }, result: function () { var n = t; return t = [], e = null, n } } } }, function (e, t, n) { "use strict"; var r = n(148); function i(e, t, n, r) { this.x = e, this.z = t, this.o = n, this.e = r, this.v = !1, this.n = this.p = null } function o(e) { if (t = e.length) { var t, n, r = 0, i = e[0]; while (++r < t) i.n = n = e[r], n.p = i, i = n; i.n = n = e[0], n.p = i } } t["a"] = function (e, t, n, a, s) { var c, l, u = [], h = []; if (e.forEach((function (e) { if (!((t = e.length - 1) <= 0)) { var t, n, o = e[0], a = e[t]; if (Object(r["a"])(o, a)) { for (s.lineStart(), c = 0; c < t; ++c)s.point((o = e[c])[0], o[1]); s.lineEnd() } else u.push(n = new i(o, e, null, !0)), h.push(n.o = new i(o, null, n, !1)), u.push(n = new i(a, e, null, !1)), h.push(n.o = new i(a, null, n, !0)) } })), u.length) { for (h.sort(t), o(u), o(h), c = 0, l = h.length; c < l; ++c)h[c].e = n = !n; var f, d, p = u[0]; while (1) { var v = p, m = !0; while (v.v) if ((v = v.n) === p) return; f = v.z, s.lineStart(); do { if (v.v = v.o.v = !0, v.e) { if (m) for (c = 0, l = f.length; c < l; ++c)s.point((d = f[c])[0], d[1]); else a(v.x, v.n.x, 1, s); v = v.n } else { if (m) for (f = v.p.z, c = f.length - 1; c >= 0; --c)s.point((d = f[c])[0], d[1]); else a(v.x, v.p.x, -1, s); v = v.p } v = v.o, f = v.z, m = !m } while (!v.v); s.lineEnd() } } } }, function (e, t, n) { "use strict"; var r = n(5); t["a"] = function (e, t) { return Object(r["a"])(e[0] - t[0]) < r["i"] && Object(r["a"])(e[1] - t[1]) < r["i"] } }, function (e, t, n) { "use strict"; var r, i, o, a = n(42), s = n(5), c = n(25), l = n(26), u = Object(a["a"])(), h = { sphere: c["a"], point: c["a"], lineStart: f, lineEnd: c["a"], polygonStart: c["a"], polygonEnd: c["a"] }; function f() { h.point = p, h.lineEnd = d } function d() { h.point = h.lineEnd = c["a"] } function p(e, t) { e *= s["r"], t *= s["r"], r = e, i = Object(s["t"])(t), o = Object(s["g"])(t), h.point = v } function v(e, t) { e *= s["r"], t *= s["r"]; var n = Object(s["t"])(t), a = Object(s["g"])(t), c = Object(s["a"])(e - r), l = Object(s["g"])(c), h = Object(s["t"])(c), f = a * h, d = o * n - i * a * l, p = i * n + o * a * l; u.add(Object(s["e"])(Object(s["u"])(f * f + d * d), p)), r = e, i = n, o = a } t["a"] = function (e) { return u.reset(), Object(l["a"])(e, h), +u } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return e } }, function (e, t, n) { "use strict"; var r = n(25), i = 1 / 0, o = i, a = -i, s = a, c = { point: l, lineStart: r["a"], lineEnd: r["a"], polygonStart: r["a"], polygonEnd: r["a"], result: function () { var e = [[i, o], [a, s]]; return a = s = -(o = i = 1 / 0), e } }; function l(e, t) { e < i && (i = e), e > a && (a = e), t < o && (o = t), t > s && (s = t) } t["a"] = c }, function (e, t, n) { "use strict"; var r = n(79); t["a"] = function () { return Object(r["b"])().parallels([29.5, 45.5]).scale(1070).translate([480, 250]).rotate([96, 0]).center([-.6, 38.7]) } }, function (e, t, n) { "use strict"; var r = n(146), i = n(147), o = n(5), a = n(337), s = n(14); function c(e) { return e.length > 1 } function l(e, t) { return ((e = e.x)[0] < 0 ? e[1] - o["l"] - o["i"] : o["l"] - e[1]) - ((t = t.x)[0] < 0 ? t[1] - o["l"] - o["i"] : o["l"] - t[1]) } t["a"] = function (e, t, n, o) { return function (u, h) { var f, d, p, v = t(h), m = u.invert(o[0], o[1]), g = Object(r["a"])(), y = t(g), b = !1, x = { point: w, lineStart: C, lineEnd: M, polygonStart: function () { x.point = O, x.lineStart = k, x.lineEnd = S, d = [], f = [] }, polygonEnd: function () { x.point = w, x.lineStart = C, x.lineEnd = M, d = Object(s["merge"])(d); var e = Object(a["a"])(f, m); d.length ? (b || (h.polygonStart(), b = !0), Object(i["a"])(d, l, e, n, h)) : e && (b || (h.polygonStart(), b = !0), h.lineStart(), n(null, null, 1, h), h.lineEnd()), b && (h.polygonEnd(), b = !1), d = f = null }, sphere: function () { h.polygonStart(), h.lineStart(), n(null, null, 1, h), h.lineEnd(), h.polygonEnd() } }; function w(t, n) { var r = u(t, n); e(t = r[0], n = r[1]) && h.point(t, n) } function _(e, t) { var n = u(e, t); v.point(n[0], n[1]) } function C() { x.point = _, v.lineStart() } function M() { x.point = w, v.lineEnd() } function O(e, t) { p.push([e, t]); var n = u(e, t); y.point(n[0], n[1]) } function k() { y.lineStart(), p = [] } function S() { O(p[0][0], p[0][1]), y.lineEnd(); var e, t, n, r, i = y.clean(), o = g.result(), a = o.length; if (p.pop(), f.push(p), p = null, a) if (1 & i) { if (n = o[0], (t = n.length - 1) > 0) { for (b || (h.polygonStart(), b = !0), h.lineStart(), e = 0; e < t; ++e)h.point((r = n[e])[0], r[1]); h.lineEnd() } } else a > 1 && 2 & i && o.push(o.pop().concat(o.shift())), d.push(o.filter(c)) } return x } } }, function (e, t, n) { "use strict"; t["b"] = a, t["a"] = s; var r = n(26), i = n(151); function o(e, t, n) { var o = t[1][0] - t[0][0], a = t[1][1] - t[0][1], s = e.clipExtent && e.clipExtent(); e.scale(150).translate([0, 0]), null != s && e.clipExtent(null), Object(r["a"])(n, e.stream(i["a"])); var c = i["a"].result(), l = Math.min(o / (c[1][0] - c[0][0]), a / (c[1][1] - c[0][1])), u = +t[0][0] + (o - l * (c[1][0] + c[0][0])) / 2, h = +t[0][1] + (a - l * (c[1][1] + c[0][1])) / 2; return null != s && e.clipExtent(s), e.scale(150 * l).translate([u, h]) } function a(e) { return function (t, n) { return o(e, [[0, 0], t], n) } } function s(e) { return function (t, n) { return o(e, t, n) } } }, function (e, t, n) { "use strict"; t["b"] = i; var r = n(18); function i(e, t) { return [e, t] } i.invert = i, t["a"] = function () { return Object(r["a"])(i).scale(152.63) } }, function (e, t, n) { var r = n(6), i = function e(t) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : []; if (r(t)) for (var i = 0; i < t.length; i += 1)e(t[i], n); else n.push(t); return n }; e.exports = i }, function (e, t) { e.exports = function (e) { for (var t = 1 / e, n = [], r = 0; r <= 1; r += t)n.push(r); return n } }, function (e, t, n) { var r = n(159), i = n(40), o = n(0), a = o.geoPath, s = n(2), c = s.GEO, l = s.registerConnector, u = a(); function h(e, t, n) { n.dataType = c; var o = i(e.features); return o.forEach((function (e) { e.name = e.properties.name, e.longitude = [], e.latitude = []; var t = e.pathData = u(e), n = r(t); n._path.forEach((function (t) { e.longitude.push(t[1]), e.latitude.push(t[2]) })); var i = u.centroid(e); e.centroidX = i[0], e.centroidY = i[1] })), o } l("geo", h), l("geojson", h), l("GeoJSON", h), e.exports = h }, function (e, t, n) { var r = n(362), i = n(363), o = n(364); function a(e) { if (!(this instanceof a)) return new a(e); this._path = i(e) ? e : r(e), this._path = o(this._path), this._path = c(this._path) } function s(e, t, n, r) { var i = e - n, o = t - r; return Math.sqrt(i * i + o * o) } function c(e) { for (var t = [], n = ["L", 0, 0], r = 0, i = e.length; r < i; r++) { var o = e[r]; switch (o[0]) { case "M": n = ["L", o[1], o[2]], t.push(o); break; case "Z": t.push(n); break; default: t.push(o) } } return t } e.exports = a, a.prototype.at = function (e, t) { return this._walk(e, t).pos }, a.prototype.length = function () { return this._walk(null).length }, a.prototype._walk = function (e, t) { var n = [0, 0], r = [0, 0, 0], i = 0, o = 1.045; "number" === typeof e && (e *= o); for (var a = 0; a < this._path.length; a++) { var c = this._path[a]; if ("M" === c[0]) { if (n[0] = c[1], n[1] = c[2], 0 === e) return { length: i, pos: n } } else if ("C" === c[0]) { r[0] = n[0], r[1] = n[1], r[2] = i; for (var l = 100, u = 0; u <= l; u++) { var h = u / l, f = m(c, h), d = g(c, h); if (i += s(n[0], n[1], f, d), n[0] = f, n[1] = d, "number" === typeof e && i >= e) { var p = (i - e) / (i - r[2]), v = [n[0] * (1 - p) + r[0] * p, n[1] * (1 - p) + r[1] * p]; return { length: i, pos: v } } r[0] = n[0], r[1] = n[1], r[2] = i } } else if ("Q" === c[0]) { r[0] = n[0], r[1] = n[1], r[2] = i; for (l = 100, u = 0; u <= l; u++) { h = u / l, f = y(c, h), d = b(c, h); if (i += s(n[0], n[1], f, d), n[0] = f, n[1] = d, "number" === typeof e && i >= e) { p = (i - e) / (i - r[2]), v = [n[0] * (1 - p) + r[0] * p, n[1] * (1 - p) + r[1] * p]; return { length: i, pos: v } } r[0] = n[0], r[1] = n[1], r[2] = i } } else if ("L" === c[0]) { if (r[0] = n[0], r[1] = n[1], r[2] = i, i += s(n[0], n[1], c[1], c[2]), n[0] = c[1], n[1] = c[2], "number" === typeof e && i >= e) { p = (i - e) / (i - r[2]), v = [n[0] * (1 - p) + r[0] * p, n[1] * (1 - p) + r[1] * p]; return { length: i, pos: v } } r[0] = n[0], r[1] = n[1], r[2] = i } } return { length: i / o, pos: n }; function m(e, t) { return Math.pow(1 - t, 3) * n[0] + 3 * Math.pow(1 - t, 2) * t * e[1] + 3 * (1 - t) * Math.pow(t, 2) * e[3] + Math.pow(t, 3) * e[5] } function g(e, t) { return Math.pow(1 - t, 3) * n[1] + 3 * Math.pow(1 - t, 2) * t * e[2] + 3 * (1 - t) * Math.pow(t, 2) * e[4] + Math.pow(t, 3) * e[6] } function y(e, t) { return Math.pow(1 - t, 2) * n[0] + 2 * (1 - t) * t * e[1] + Math.pow(t, 2) * e[3] } function b(e, t) { return Math.pow(1 - t, 2) * n[1] + 2 * (1 - t) * t * e[2] + Math.pow(t, 2) * e[4] } } }, function (e, t, n) { "use strict"; t["b"] = c; var r = n(161); function i(e, t, n) { var r = e.x, i = e.y, o = t.r + n.r, a = e.r + n.r, s = t.x - r, c = t.y - i, l = s * s + c * c; if (l) { var u = .5 + ((a *= a) - (o *= o)) / (2 * l), h = Math.sqrt(Math.max(0, 2 * o * (a + l) - (a -= l) * a - o * o)) / (2 * l); n.x = r + u * s + h * c, n.y = i + u * c - h * s } else n.x = r + a, n.y = i } function o(e, t) { var n = t.x - e.x, r = t.y - e.y, i = e.r + t.r; return i * i - 1e-6 > n * n + r * r } function a(e) { var t = e._, n = e.next._, r = t.r + n.r, i = (t.x * n.r + n.x * t.r) / r, o = (t.y * n.r + n.y * t.r) / r; return i * i + o * o } function s(e) { this._ = e, this.next = null, this.previous = null } function c(e) { if (!(l = e.length)) return 0; var t, n, c, l, u, h, f, d, p, v, m; if (t = e[0], t.x = 0, t.y = 0, !(l > 1)) return t.r; if (n = e[1], t.x = -n.r, n.x = t.r, n.y = 0, !(l > 2)) return t.r + n.r; i(n, t, c = e[2]), t = new s(t), n = new s(n), c = new s(c), t.next = c.previous = n, n.next = t.previous = c, c.next = n.previous = t; e: for (f = 3; f < l; ++f) { i(t._, n._, c = e[f]), c = new s(c), d = n.next, p = t.previous, v = n._.r, m = t._.r; do { if (v <= m) { if (o(d._, c._)) { n = d, t.next = n, n.previous = t, --f; continue e } v += d._.r, d = d.next } else { if (o(p._, c._)) { t = p, t.next = n, n.previous = t, --f; continue e } m += p._.r, p = p.previous } } while (d !== p.next); c.previous = t, c.next = n, t.next = n.previous = n = c, u = a(t); while ((c = c.next) !== n) (h = a(c)) < u && (t = c, u = h); n = t.next } t = [n._], c = n; while ((c = c.next) !== n) t.push(c._); for (c = Object(r["a"])(t), f = 0; f < l; ++f)t = e[f], t.x -= c.x, t.y -= c.y; return c.r } t["a"] = function (e) { return c(e), e } }, function (e, t, n) { "use strict"; var r = n(382); function i(e, t) { var n, r; if (s(t, e)) return [t]; for (n = 0; n < e.length; ++n)if (o(t, e[n]) && s(u(e[n], t), e)) return [e[n], t]; for (n = 0; n < e.length - 1; ++n)for (r = n + 1; r < e.length; ++r)if (o(u(e[n], e[r]), t) && o(u(e[n], t), e[r]) && o(u(e[r], t), e[n]) && s(h(e[n], e[r], t), e)) return [e[n], e[r], t]; throw new Error } function o(e, t) { var n = e.r - t.r, r = t.x - e.x, i = t.y - e.y; return n < 0 || n * n < r * r + i * i } function a(e, t) { var n = e.r - t.r + 1e-6, r = t.x - e.x, i = t.y - e.y; return n > 0 && n * n > r * r + i * i } function s(e, t) { for (var n = 0; n < t.length; ++n)if (!a(e, t[n])) return !1; return !0 } function c(e) { switch (e.length) { case 1: return l(e[0]); case 2: return u(e[0], e[1]); case 3: return h(e[0], e[1], e[2]) } } function l(e) { return { x: e.x, y: e.y, r: e.r } } function u(e, t) { var n = e.x, r = e.y, i = e.r, o = t.x, a = t.y, s = t.r, c = o - n, l = a - r, u = s - i, h = Math.sqrt(c * c + l * l); return { x: (n + o + c / h * u) / 2, y: (r + a + l / h * u) / 2, r: (h + i + s) / 2 } } function h(e, t, n) { var r = e.x, i = e.y, o = e.r, a = t.x, s = t.y, c = t.r, l = n.x, u = n.y, h = n.r, f = r - a, d = r - l, p = i - s, v = i - u, m = c - o, g = h - o, y = r * r + i * i - o * o, b = y - a * a - s * s + c * c, x = y - l * l - u * u + h * h, w = d * p - f * v, _ = (p * x - v * b) / (2 * w) - r, C = (v * m - p * g) / w, M = (d * b - f * x) / (2 * w) - i, O = (f * g - d * m) / w, k = C * C + O * O - 1, S = 2 * (o + _ * C + M * O), T = _ * _ + M * M - o * o, A = -(k ? (S + Math.sqrt(S * S - 4 * k * T)) / (2 * k) : T / S); return { x: r + _ + C * A, y: i + M + O * A, r: A } } t["a"] = function (e) { var t, n, o = 0, s = (e = Object(r["a"])(r["b"].call(e))).length, l = []; while (o < s) t = e[o], n && a(n, t) ? ++o : (n = c(l = i(l, t)), o = 0); return n } }, function (e, t, n) { "use strict"; function r() { return 0 } t["a"] = r, t["b"] = function (e) { return function () { return e } } }, function (e, t, n) { "use strict"; t["a"] = function (e) { e.x0 = Math.round(e.x0), e.y0 = Math.round(e.y0), e.x1 = Math.round(e.x1), e.y1 = Math.round(e.y1) } }, function (e, t, n) { "use strict"; var r = n(89); t["a"] = function (e) { var t, n = Object(r["a"])(e.transform), i = 1 / 0, o = i, a = -i, s = -i; function c(e) { e = n(e), e[0] < i && (i = e[0]), e[0] > a && (a = e[0]), e[1] < o && (o = e[1]), e[1] > s && (s = e[1]) } function l(e) { switch (e.type) { case "GeometryCollection": e.geometries.forEach(l); break; case "Point": c(e.coordinates); break; case "MultiPoint": e.coordinates.forEach(c); break } } for (t in e.arcs.forEach((function (e) { var t, r = -1, c = e.length; while (++r < c) t = n(e[r], r), t[0] < i && (i = t[0]), t[0] > a && (a = t[0]), t[1] < o && (o = t[1]), t[1] > s && (s = t[1]) })), e.objects) l(e.objects[t]); return [i, o, a, s] } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return e } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { var n = {}, r = {}, i = {}, o = [], a = -1; function s(t) { var n, r = e.arcs[t < 0 ? ~t : t], i = r[0]; return e.transform ? (n = [0, 0], r.forEach((function (e) { n[0] += e[0], n[1] += e[1] }))) : n = r[r.length - 1], t < 0 ? [n, i] : [i, n] } function c(e, t) { for (var r in e) { var i = e[r]; delete t[i.start], delete i.start, delete i.end, i.forEach((function (e) { n[e < 0 ? ~e : e] = 1 })), o.push(i) } } return t.forEach((function (n, r) { var i, o = e.arcs[n < 0 ? ~n : n]; o.length < 3 && !o[1][0] && !o[1][1] && (i = t[++a], t[a] = n, t[r] = i) })), t.forEach((function (e) { var t, n, o = s(e), a = o[0], c = o[1]; if (t = i[a]) if (delete i[t.end], t.push(e), t.end = c, n = r[c]) { delete r[n.start]; var l = n === t ? t : t.concat(n); r[l.start = t.start] = i[l.end = n.end] = l } else r[t.start] = i[t.end] = t; else if (t = r[c]) if (delete r[t.start], t.unshift(e), t.start = a, n = i[a]) { delete i[n.end]; var u = n === t ? t : n.concat(t); r[u.start = n.start] = i[u.end = t.end] = u } else r[t.start] = i[t.end] = t; else t = [e], r[t.start = a] = i[t.end = c] = t })), c(i, r), c(r, i), t.forEach((function (e) { n[e < 0 ? ~e : e] || o.push([e]) })), o } }, function (e, t, n) { "use strict"; var r = n(165); t["a"] = function (e) { if (null == e) return r["a"]; var t, n, i = e.scale[0], o = e.scale[1], a = e.translate[0], s = e.translate[1]; return function (e, r) { r || (t = n = 0); var c = 2, l = e.length, u = new Array(l), h = Math.round((e[0] - a) / i), f = Math.round((e[1] - s) / o); u[0] = h - t, t = h, u[1] = f - n, n = f; while (c < l) u[c] = e[c], ++c; return u } } }, function (e, t, n) { var r = n(91), i = Array.prototype.indexOf, o = function (e, t) { return !!r(e) && i.call(e, t) > -1 }; e.exports = o }, function (e, t, n) {
+                (function (e, r) {
+                    var i;
+/**
+ * @license
+ * Lodash <https://lodash.com/>
+ * Copyright JS Foundation and other contributors <https://js.foundation/>
+ * Released under MIT license <https://lodash.com/license>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */(function () { var o, a = "4.17.4", s = 200, c = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", l = "Expected a function", u = "__lodash_hash_undefined__", h = 500, f = "__lodash_placeholder__", d = 1, p = 2, v = 4, m = 1, g = 2, y = 1, b = 2, x = 4, w = 8, _ = 16, C = 32, M = 64, O = 128, k = 256, S = 512, T = 30, A = "...", L = 800, j = 16, z = 1, E = 2, P = 3, D = 1 / 0, H = 9007199254740991, V = 17976931348623157e292, I = NaN, N = 4294967295, R = N - 1, F = N >>> 1, Y = [["ary", O], ["bind", y], ["bindKey", b], ["curry", w], ["curryRight", _], ["flip", S], ["partial", C], ["partialRight", M], ["rearg", k]], $ = "[object Arguments]", B = "[object Array]", W = "[object AsyncFunction]", q = "[object Boolean]", U = "[object Date]", K = "[object DOMException]", G = "[object Error]", X = "[object Function]", J = "[object GeneratorFunction]", Q = "[object Map]", Z = "[object Number]", ee = "[object Null]", te = "[object Object]", ne = "[object Promise]", re = "[object Proxy]", ie = "[object RegExp]", oe = "[object Set]", ae = "[object String]", se = "[object Symbol]", ce = "[object Undefined]", le = "[object WeakMap]", ue = "[object WeakSet]", he = "[object ArrayBuffer]", fe = "[object DataView]", de = "[object Float32Array]", pe = "[object Float64Array]", ve = "[object Int8Array]", me = "[object Int16Array]", ge = "[object Int32Array]", ye = "[object Uint8Array]", be = "[object Uint8ClampedArray]", xe = "[object Uint16Array]", we = "[object Uint32Array]", _e = /\b__p \+= '';/g, Ce = /\b(__p \+=) '' \+/g, Me = /(__e\(.*?\)|\b__t\)) \+\n'';/g, Oe = /&(?:amp|lt|gt|quot|#39);/g, ke = /[&<>"']/g, Se = RegExp(Oe.source), Te = RegExp(ke.source), Ae = /<%-([\s\S]+?)%>/g, Le = /<%([\s\S]+?)%>/g, je = /<%=([\s\S]+?)%>/g, ze = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, Ee = /^\w*$/, Pe = /^\./, De = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, He = /[\\^$.*+?()[\]{}|]/g, Ve = RegExp(He.source), Ie = /^\s+|\s+$/g, Ne = /^\s+/, Re = /\s+$/, Fe = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, Ye = /\{\n\/\* \[wrapped with (.+)\] \*/, $e = /,? & /, Be = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, We = /\\(\\)?/g, qe = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, Ue = /\w*$/, Ke = /^[-+]0x[0-9a-f]+$/i, Ge = /^0b[01]+$/i, Xe = /^\[object .+?Constructor\]$/, Je = /^0o[0-7]+$/i, Qe = /^(?:0|[1-9]\d*)$/, Ze = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, et = /($^)/, tt = /['\n\r\u2028\u2029\\]/g, nt = "\\ud800-\\udfff", rt = "\\u0300-\\u036f", it = "\\ufe20-\\ufe2f", ot = "\\u20d0-\\u20ff", at = rt + it + ot, st = "\\u2700-\\u27bf", ct = "a-z\\xdf-\\xf6\\xf8-\\xff", lt = "\\xac\\xb1\\xd7\\xf7", ut = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", ht = "\\u2000-\\u206f", ft = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", dt = "A-Z\\xc0-\\xd6\\xd8-\\xde", pt = "\\ufe0e\\ufe0f", vt = lt + ut + ht + ft, mt = "['鈥橾", gt = "[" + nt + "]", yt = "[" + vt + "]", bt = "[" + at + "]", xt = "\\d+", wt = "[" + st + "]", _t = "[" + ct + "]", Ct = "[^" + nt + vt + xt + st + ct + dt + "]", Mt = "\\ud83c[\\udffb-\\udfff]", Ot = "(?:" + bt + "|" + Mt + ")", kt = "[^" + nt + "]", St = "(?:\\ud83c[\\udde6-\\uddff]){2}", Tt = "[\\ud800-\\udbff][\\udc00-\\udfff]", At = "[" + dt + "]", Lt = "\\u200d", jt = "(?:" + _t + "|" + Ct + ")", zt = "(?:" + At + "|" + Ct + ")", Et = "(?:" + mt + "(?:d|ll|m|re|s|t|ve))?", Pt = "(?:" + mt + "(?:D|LL|M|RE|S|T|VE))?", Dt = Ot + "?", Ht = "[" + pt + "]?", Vt = "(?:" + Lt + "(?:" + [kt, St, Tt].join("|") + ")" + Ht + Dt + ")*", It = "\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)", Nt = "\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)", Rt = Ht + Dt + Vt, Ft = "(?:" + [wt, St, Tt].join("|") + ")" + Rt, Yt = "(?:" + [kt + bt + "?", bt, St, Tt, gt].join("|") + ")", $t = RegExp(mt, "g"), Bt = RegExp(bt, "g"), Wt = RegExp(Mt + "(?=" + Mt + ")|" + Yt + Rt, "g"), qt = RegExp([At + "?" + _t + "+" + Et + "(?=" + [yt, At, "$"].join("|") + ")", zt + "+" + Pt + "(?=" + [yt, At + jt, "$"].join("|") + ")", At + "?" + jt + "+" + Et, At + "+" + Pt, Nt, It, xt, Ft].join("|"), "g"), Ut = RegExp("[" + Lt + nt + at + pt + "]"), Kt = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/, Gt = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"], Xt = -1, Jt = {}; Jt[de] = Jt[pe] = Jt[ve] = Jt[me] = Jt[ge] = Jt[ye] = Jt[be] = Jt[xe] = Jt[we] = !0, Jt[$] = Jt[B] = Jt[he] = Jt[q] = Jt[fe] = Jt[U] = Jt[G] = Jt[X] = Jt[Q] = Jt[Z] = Jt[te] = Jt[ie] = Jt[oe] = Jt[ae] = Jt[le] = !1; var Qt = {}; Qt[$] = Qt[B] = Qt[he] = Qt[fe] = Qt[q] = Qt[U] = Qt[de] = Qt[pe] = Qt[ve] = Qt[me] = Qt[ge] = Qt[Q] = Qt[Z] = Qt[te] = Qt[ie] = Qt[oe] = Qt[ae] = Qt[se] = Qt[ye] = Qt[be] = Qt[xe] = Qt[we] = !0, Qt[G] = Qt[X] = Qt[le] = !1; var Zt = { "脌": "A", "脕": "A", "脗": "A", "脙": "A", "脛": "A", "脜": "A", "脿": "a", "谩": "a", "芒": "a", "茫": "a", "盲": "a", "氓": "a", "脟": "C", "莽": "c", "脨": "D", "冒": "d", "脠": "E", "脡": "E", "脢": "E", "脣": "E", "猫": "e", "茅": "e", "锚": "e", "毛": "e", "脤": "I", "脥": "I", "脦": "I", "脧": "I", "矛": "i", "铆": "i", "卯": "i", "茂": "i", "脩": "N", "帽": "n", "脪": "O", "脫": "O", "脭": "O", "脮": "O", "脰": "O", "脴": "O", "貌": "o", "贸": "o", "么": "o", "玫": "o", "枚": "o", "酶": "o", "脵": "U", "脷": "U", "脹": "U", "脺": "U", "霉": "u", "煤": "u", "没": "u", "眉": "u", "脻": "Y", "媒": "y", "每": "y", "脝": "Ae", "忙": "ae", "脼": "Th", "镁": "th", "脽": "ss", "膧": "A", "膫": "A", "膭": "A", "膩": "a", "膬": "a", "膮": "a", "膯": "C", "膱": "C", "膴": "C", "膶": "C", "膰": "c", "膲": "c", "膵": "c", "膷": "c", "膸": "D", "膼": "D", "膹": "d", "膽": "d", "膾": "E", "臄": "E", "臇": "E", "臉": "E", "臍": "E", "膿": "e", "臅": "e", "臈": "e", "臋": "e", "臎": "e", "臏": "G", "臑": "G", "臓": "G", "蘑": "G", "臐": "g", "臒": "g", "摹": "g", "模": "g", "膜": "H", "摩": "H", "磨": "h", "魔": "h", "抹": "I", "莫": "I", "默": "I", "漠": "I", "陌": "I", "末": "i", "墨": "i", "沫": "i", "寞": "i", "谋": "i", "拇": "J", "牡": "j", "亩": "K", "姆": "k", "母": "k", "墓": "L", "幕": "L", "慕": "L", "目": "L", "艁": "L", "暮": "l", "募": "l", "木": "l", "艀": "l", "艂": "l", "艃": "N", "艆": "N", "艊": "N", "艎": "N", "艅": "n", "艈": "n", "艌": "n", "艐": "n", "艑": "O", "艓": "O", "艕": "O", "艒": "o", "艔": "o", "艖": "o", "艛": "R", "艝": "R", "艠": "R", "艜": "r", "艞": "r", "艡": "r", "艢": "S", "艤": "S", "艦": "S", "艩": "S", "艣": "s", "艥": "s", "艧": "s", "拧": "s", "泞": "T", "扭": "T", "纽": "T", "牛": "t", "钮": "t", "脓": "t", "浓": "U", "弄": "U", "努": "U", "女": "U", "虐": "U", "挪": "U", "农": "u", "奴": "u", "怒": "u", "暖": "u", "疟": "u", "懦": "u", "糯": "W", "诺": "w", "哦": "Y", "欧": "y", "鸥": "Y", "殴": "Z", "呕": "Z", "沤": "Z", "藕": "z", "偶": "z", "啪": "z", "牟": "IJ", "某": "ij", "艗": "Oe", "艙": "oe", "艍": "'n", "趴": "s" }, en = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" }, tn = { "&amp;": "&", "&lt;": "<", "&gt;": ">", "&quot;": '"', "&#39;": "'" }, nn = { "\\": "\\", "'": "'", "\n": "n", "\r": "r", "\u2028": "u2028", "\u2029": "u2029" }, rn = parseFloat, on = parseInt, an = "object" == typeof e && e && e.Object === Object && e, sn = "object" == typeof self && self && self.Object === Object && self, cn = an || sn || Function("return this")(), ln = "object" == typeof t && t && !t.nodeType && t, un = ln && "object" == typeof r && r && !r.nodeType && r, hn = un && un.exports === ln, fn = hn && an.process, dn = function () { try { return fn && fn.binding && fn.binding("util") } catch (e) { } }(), pn = dn && dn.isArrayBuffer, vn = dn && dn.isDate, mn = dn && dn.isMap, gn = dn && dn.isRegExp, yn = dn && dn.isSet, bn = dn && dn.isTypedArray; function xn(e, t) { return e.set(t[0], t[1]), e } function wn(e, t) { return e.add(t), e } function _n(e, t, n) { switch (n.length) { case 0: return e.call(t); case 1: return e.call(t, n[0]); case 2: return e.call(t, n[0], n[1]); case 3: return e.call(t, n[0], n[1], n[2]) }return e.apply(t, n) } function Cn(e, t, n, r) { var i = -1, o = null == e ? 0 : e.length; while (++i < o) { var a = e[i]; t(r, a, n(a), e) } return r } function Mn(e, t) { var n = -1, r = null == e ? 0 : e.length; while (++n < r) if (!1 === t(e[n], n, e)) break; return e } function On(e, t) { var n = null == e ? 0 : e.length; while (n--) if (!1 === t(e[n], n, e)) break; return e } function kn(e, t) { var n = -1, r = null == e ? 0 : e.length; while (++n < r) if (!t(e[n], n, e)) return !1; return !0 } function Sn(e, t) { var n = -1, r = null == e ? 0 : e.length, i = 0, o = []; while (++n < r) { var a = e[n]; t(a, n, e) && (o[i++] = a) } return o } function Tn(e, t) { var n = null == e ? 0 : e.length; return !!n && Rn(e, t, 0) > -1 } function An(e, t, n) { var r = -1, i = null == e ? 0 : e.length; while (++r < i) if (n(t, e[r])) return !0; return !1 } function Ln(e, t) { var n = -1, r = null == e ? 0 : e.length, i = Array(r); while (++n < r) i[n] = t(e[n], n, e); return i } function jn(e, t) { var n = -1, r = t.length, i = e.length; while (++n < r) e[i + n] = t[n]; return e } function zn(e, t, n, r) { var i = -1, o = null == e ? 0 : e.length; r && o && (n = e[++i]); while (++i < o) n = t(n, e[i], i, e); return n } function En(e, t, n, r) { var i = null == e ? 0 : e.length; r && i && (n = e[--i]); while (i--) n = t(n, e[i], i, e); return n } function Pn(e, t) { var n = -1, r = null == e ? 0 : e.length; while (++n < r) if (t(e[n], n, e)) return !0; return !1 } var Dn = Bn("length"); function Hn(e) { return e.split("") } function Vn(e) { return e.match(Be) || [] } function In(e, t, n) { var r; return n(e, (function (e, n, i) { if (t(e, n, i)) return r = n, !1 })), r } function Nn(e, t, n, r) { var i = e.length, o = n + (r ? 1 : -1); while (r ? o-- : ++o < i) if (t(e[o], o, e)) return o; return -1 } function Rn(e, t, n) { return t === t ? vr(e, t, n) : Nn(e, Yn, n) } function Fn(e, t, n, r) { var i = n - 1, o = e.length; while (++i < o) if (r(e[i], t)) return i; return -1 } function Yn(e) { return e !== e } function $n(e, t) { var n = null == e ? 0 : e.length; return n ? Kn(e, t) / n : I } function Bn(e) { return function (t) { return null == t ? o : t[e] } } function Wn(e) { return function (t) { return null == e ? o : e[t] } } function qn(e, t, n, r, i) { return i(e, (function (e, i, o) { n = r ? (r = !1, e) : t(n, e, i, o) })), n } function Un(e, t) { var n = e.length; e.sort(t); while (n--) e[n] = e[n].value; return e } function Kn(e, t) { var n, r = -1, i = e.length; while (++r < i) { var a = t(e[r]); a !== o && (n = n === o ? a : n + a) } return n } function Gn(e, t) { var n = -1, r = Array(e); while (++n < e) r[n] = t(n); return r } function Xn(e, t) { return Ln(t, (function (t) { return [t, e[t]] })) } function Jn(e) { return function (t) { return e(t) } } function Qn(e, t) { return Ln(t, (function (t) { return e[t] })) } function Zn(e, t) { return e.has(t) } function er(e, t) { var n = -1, r = e.length; while (++n < r && Rn(t, e[n], 0) > -1); return n } function tr(e, t) { var n = e.length; while (n-- && Rn(t, e[n], 0) > -1); return n } function nr(e, t) { var n = e.length, r = 0; while (n--) e[n] === t && ++r; return r } var rr = Wn(Zt), ir = Wn(en); function or(e) { return "\\" + nn[e] } function ar(e, t) { return null == e ? o : e[t] } function sr(e) { return Ut.test(e) } function cr(e) { return Kt.test(e) } function lr(e) { var t, n = []; while (!(t = e.next()).done) n.push(t.value); return n } function ur(e) { var t = -1, n = Array(e.size); return e.forEach((function (e, r) { n[++t] = [r, e] })), n } function hr(e, t) { return function (n) { return e(t(n)) } } function fr(e, t) { var n = -1, r = e.length, i = 0, o = []; while (++n < r) { var a = e[n]; a !== t && a !== f || (e[n] = f, o[i++] = n) } return o } function dr(e) { var t = -1, n = Array(e.size); return e.forEach((function (e) { n[++t] = e })), n } function pr(e) { var t = -1, n = Array(e.size); return e.forEach((function (e) { n[++t] = [e, e] })), n } function vr(e, t, n) { var r = n - 1, i = e.length; while (++r < i) if (e[r] === t) return r; return -1 } function mr(e, t, n) { var r = n + 1; while (r--) if (e[r] === t) return r; return r } function gr(e) { return sr(e) ? xr(e) : Dn(e) } function yr(e) { return sr(e) ? wr(e) : Hn(e) } var br = Wn(tn); function xr(e) { var t = Wt.lastIndex = 0; while (Wt.test(e)) ++t; return t } function wr(e) { return e.match(Wt) || [] } function _r(e) { return e.match(qt) || [] } var Cr = function e(t) { t = null == t ? cn : Mr.defaults(cn.Object(), t, Mr.pick(cn, Gt)); var n = t.Array, r = t.Date, i = t.Error, Be = t.Function, nt = t.Math, rt = t.Object, it = t.RegExp, ot = t.String, at = t.TypeError, st = n.prototype, ct = Be.prototype, lt = rt.prototype, ut = t["__core-js_shared__"], ht = ct.toString, ft = lt.hasOwnProperty, dt = 0, pt = function () { var e = /[^.]+$/.exec(ut && ut.keys && ut.keys.IE_PROTO || ""); return e ? "Symbol(src)_1." + e : "" }(), vt = lt.toString, mt = ht.call(rt), gt = cn._, yt = it("^" + ht.call(ft).replace(He, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), bt = hn ? t.Buffer : o, xt = t.Symbol, wt = t.Uint8Array, _t = bt ? bt.allocUnsafe : o, Ct = hr(rt.getPrototypeOf, rt), Mt = rt.create, Ot = lt.propertyIsEnumerable, kt = st.splice, St = xt ? xt.isConcatSpreadable : o, Tt = xt ? xt.iterator : o, At = xt ? xt.toStringTag : o, Lt = function () { try { var e = Xa(rt, "defineProperty"); return e({}, "", {}), e } catch (t) { } }(), jt = t.clearTimeout !== cn.clearTimeout && t.clearTimeout, zt = r && r.now !== cn.Date.now && r.now, Et = t.setTimeout !== cn.setTimeout && t.setTimeout, Pt = nt.ceil, Dt = nt.floor, Ht = rt.getOwnPropertySymbols, Vt = bt ? bt.isBuffer : o, It = t.isFinite, Nt = st.join, Rt = hr(rt.keys, rt), Ft = nt.max, Yt = nt.min, Wt = r.now, qt = t.parseInt, Ut = nt.random, Kt = st.reverse, Zt = Xa(t, "DataView"), en = Xa(t, "Map"), tn = Xa(t, "Promise"), nn = Xa(t, "Set"), an = Xa(t, "WeakMap"), sn = Xa(rt, "create"), ln = an && new an, un = {}, fn = Ps(Zt), dn = Ps(en), Dn = Ps(tn), Hn = Ps(nn), Wn = Ps(an), vr = xt ? xt.prototype : o, xr = vr ? vr.valueOf : o, wr = vr ? vr.toString : o; function Cr(e) { if (Su(e) && !uu(e) && !(e instanceof Tr)) { if (e instanceof Sr) return e; if (ft.call(e, "__wrapped__")) return Hs(e) } return new Sr(e) } var Or = function () { function e() { } return function (t) { if (!ku(t)) return {}; if (Mt) return Mt(t); e.prototype = t; var n = new e; return e.prototype = o, n } }(); function kr() { } function Sr(e, t) { this.__wrapped__ = e, this.__actions__ = [], this.__chain__ = !!t, this.__index__ = 0, this.__values__ = o } function Tr(e) { this.__wrapped__ = e, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = N, this.__views__ = [] } function Ar() { var e = new Tr(this.__wrapped__); return e.__actions__ = sa(this.__actions__), e.__dir__ = this.__dir__, e.__filtered__ = this.__filtered__, e.__iteratees__ = sa(this.__iteratees__), e.__takeCount__ = this.__takeCount__, e.__views__ = sa(this.__views__), e } function Lr() { if (this.__filtered__) { var e = new Tr(this); e.__dir__ = -1, e.__filtered__ = !0 } else e = this.clone(), e.__dir__ *= -1; return e } function jr() { var e = this.__wrapped__.value(), t = this.__dir__, n = uu(e), r = t < 0, i = n ? e.length : 0, o = ts(0, i, this.__views__), a = o.start, s = o.end, c = s - a, l = r ? s : a - 1, u = this.__iteratees__, h = u.length, f = 0, d = Yt(c, this.__takeCount__); if (!n || !r && i == c && d == c) return Ro(e, this.__actions__); var p = []; e: while (c-- && f < d) { l += t; var v = -1, m = e[l]; while (++v < h) { var g = u[v], y = g.iteratee, b = g.type, x = y(m); if (b == E) m = x; else if (!x) { if (b == z) continue e; break e } } p[f++] = m } return p } function zr(e) { var t = -1, n = null == e ? 0 : e.length; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } function Er() { this.__data__ = sn ? sn(null) : {}, this.size = 0 } function Pr(e) { var t = this.has(e) && delete this.__data__[e]; return this.size -= t ? 1 : 0, t } function Dr(e) { var t = this.__data__; if (sn) { var n = t[e]; return n === u ? o : n } return ft.call(t, e) ? t[e] : o } function Hr(e) { var t = this.__data__; return sn ? t[e] !== o : ft.call(t, e) } function Vr(e, t) { var n = this.__data__; return this.size += this.has(e) ? 0 : 1, n[e] = sn && t === o ? u : t, this } function Ir(e) { var t = -1, n = null == e ? 0 : e.length; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } function Nr() { this.__data__ = [], this.size = 0 } function Rr(e) { var t = this.__data__, n = hi(t, e); if (n < 0) return !1; var r = t.length - 1; return n == r ? t.pop() : kt.call(t, n, 1), --this.size, !0 } function Fr(e) { var t = this.__data__, n = hi(t, e); return n < 0 ? o : t[n][1] } function Yr(e) { return hi(this.__data__, e) > -1 } function $r(e, t) { var n = this.__data__, r = hi(n, e); return r < 0 ? (++this.size, n.push([e, t])) : n[r][1] = t, this } function Br(e) { var t = -1, n = null == e ? 0 : e.length; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } function Wr() { this.size = 0, this.__data__ = { hash: new zr, map: new (en || Ir), string: new zr } } function qr(e) { var t = Ka(this, e)["delete"](e); return this.size -= t ? 1 : 0, t } function Ur(e) { return Ka(this, e).get(e) } function Kr(e) { return Ka(this, e).has(e) } function Gr(e, t) { var n = Ka(this, e), r = n.size; return n.set(e, t), this.size += n.size == r ? 0 : 1, this } function Xr(e) { var t = -1, n = null == e ? 0 : e.length; this.__data__ = new Br; while (++t < n) this.add(e[t]) } function Jr(e) { return this.__data__.set(e, u), this } function Qr(e) { return this.__data__.has(e) } function Zr(e) { var t = this.__data__ = new Ir(e); this.size = t.size } function ei() { this.__data__ = new Ir, this.size = 0 } function ti(e) { var t = this.__data__, n = t["delete"](e); return this.size = t.size, n } function ni(e) { return this.__data__.get(e) } function ri(e) { return this.__data__.has(e) } function ii(e, t) { var n = this.__data__; if (n instanceof Ir) { var r = n.__data__; if (!en || r.length < s - 1) return r.push([e, t]), this.size = ++n.size, this; n = this.__data__ = new Br(r) } return n.set(e, t), this.size = n.size, this } function oi(e, t) { var n = uu(e), r = !n && lu(e), i = !n && !r && vu(e), o = !n && !r && !i && Yu(e), a = n || r || i || o, s = a ? Gn(e.length, ot) : [], c = s.length; for (var l in e) !t && !ft.call(e, l) || a && ("length" == l || i && ("offset" == l || "parent" == l) || o && ("buffer" == l || "byteLength" == l || "byteOffset" == l) || ls(l, c)) || s.push(l); return s } function ai(e) { var t = e.length; return t ? e[bo(0, t - 1)] : o } function si(e, t) { return js(sa(e), gi(t, 0, e.length)) } function ci(e) { return js(sa(e)) } function li(e, t, n) { (n !== o && !au(e[t], n) || n === o && !(t in e)) && vi(e, t, n) } function ui(e, t, n) { var r = e[t]; ft.call(e, t) && au(r, n) && (n !== o || t in e) || vi(e, t, n) } function hi(e, t) { var n = e.length; while (n--) if (au(e[n][0], t)) return n; return -1 } function fi(e, t, n, r) { return Ci(e, (function (e, i, o) { t(r, e, n(e), o) })), r } function di(e, t) { return e && ca(t, Mh(t), e) } function pi(e, t) { return e && ca(t, Oh(t), e) } function vi(e, t, n) { "__proto__" == t && Lt ? Lt(e, t, { configurable: !0, enumerable: !0, value: n, writable: !0 }) : e[t] = n } function mi(e, t) { var r = -1, i = t.length, a = n(i), s = null == e; while (++r < i) a[r] = s ? o : yh(e, t[r]); return a } function gi(e, t, n) { return e === e && (n !== o && (e = e <= n ? e : n), t !== o && (e = e >= t ? e : t)), e } function yi(e, t, n, r, i, a) { var s, c = t & d, l = t & p, u = t & v; if (n && (s = i ? n(e, r, i, a) : n(e)), s !== o) return s; if (!ku(e)) return e; var h = uu(e); if (h) { if (s = is(e), !c) return sa(e, s) } else { var f = es(e), m = f == X || f == J; if (vu(e)) return Go(e, c); if (f == te || f == $ || m && !i) { if (s = l || m ? {} : os(e), !c) return l ? ua(e, pi(s, e)) : la(e, di(s, e)) } else { if (!Qt[f]) return i ? e : {}; s = as(e, f, yi, c) } } a || (a = new Zr); var g = a.get(e); if (g) return g; a.set(e, s); var y = u ? l ? $a : Ya : l ? Oh : Mh, b = h ? o : y(e); return Mn(b || e, (function (r, i) { b && (i = r, r = e[i]), ui(s, i, yi(r, t, n, i, e, a)) })), s } function bi(e) { var t = Mh(e); return function (n) { return xi(n, e, t) } } function xi(e, t, n) { var r = n.length; if (null == e) return !r; e = rt(e); while (r--) { var i = n[r], a = t[i], s = e[i]; if (s === o && !(i in e) || !a(s)) return !1 } return !0 } function wi(e, t, n) { if ("function" != typeof e) throw new at(l); return Ss((function () { e.apply(o, n) }), t) } function _i(e, t, n, r) { var i = -1, o = Tn, a = !0, c = e.length, l = [], u = t.length; if (!c) return l; n && (t = Ln(t, Jn(n))), r ? (o = An, a = !1) : t.length >= s && (o = Zn, a = !1, t = new Xr(t)); e: while (++i < c) { var h = e[i], f = null == n ? h : n(h); if (h = r || 0 !== h ? h : 0, a && f === f) { var d = u; while (d--) if (t[d] === f) continue e; l.push(h) } else o(t, f, r) || l.push(h) } return l } Cr.templateSettings = { escape: Ae, evaluate: Le, interpolate: je, variable: "", imports: { _: Cr } }, Cr.prototype = kr.prototype, Cr.prototype.constructor = Cr, Sr.prototype = Or(kr.prototype), Sr.prototype.constructor = Sr, Tr.prototype = Or(kr.prototype), Tr.prototype.constructor = Tr, zr.prototype.clear = Er, zr.prototype["delete"] = Pr, zr.prototype.get = Dr, zr.prototype.has = Hr, zr.prototype.set = Vr, Ir.prototype.clear = Nr, Ir.prototype["delete"] = Rr, Ir.prototype.get = Fr, Ir.prototype.has = Yr, Ir.prototype.set = $r, Br.prototype.clear = Wr, Br.prototype["delete"] = qr, Br.prototype.get = Ur, Br.prototype.has = Kr, Br.prototype.set = Gr, Xr.prototype.add = Xr.prototype.push = Jr, Xr.prototype.has = Qr, Zr.prototype.clear = ei, Zr.prototype["delete"] = ti, Zr.prototype.get = ni, Zr.prototype.has = ri, Zr.prototype.set = ii; var Ci = da(zi), Mi = da(Ei, !0); function Oi(e, t) { var n = !0; return Ci(e, (function (e, r, i) { return n = !!t(e, r, i), n })), n } function ki(e, t, n) { var r = -1, i = e.length; while (++r < i) { var a = e[r], s = t(a); if (null != s && (c === o ? s === s && !Fu(s) : n(s, c))) var c = s, l = a } return l } function Si(e, t, n, r) { var i = e.length; n = Xu(n), n < 0 && (n = -n > i ? 0 : i + n), r = r === o || r > i ? i : Xu(r), r < 0 && (r += i), r = n > r ? 0 : Ju(r); while (n < r) e[n++] = t; return e } function Ti(e, t) { var n = []; return Ci(e, (function (e, r, i) { t(e, r, i) && n.push(e) })), n } function Ai(e, t, n, r, i) { var o = -1, a = e.length; n || (n = cs), i || (i = []); while (++o < a) { var s = e[o]; t > 0 && n(s) ? t > 1 ? Ai(s, t - 1, n, r, i) : jn(i, s) : r || (i[i.length] = s) } return i } var Li = pa(), ji = pa(!0); function zi(e, t) { return e && Li(e, t, Mh) } function Ei(e, t) { return e && ji(e, t, Mh) } function Pi(e, t) { return Sn(t, (function (t) { return Cu(e[t]) })) } function Di(e, t) { t = Wo(t, e); var n = 0, r = t.length; while (null != e && n < r) e = e[Es(t[n++])]; return n && n == r ? e : o } function Hi(e, t, n) { var r = t(e); return uu(e) ? r : jn(r, n(e)) } function Vi(e) { return null == e ? e === o ? ce : ee : At && At in rt(e) ? Ja(e) : _s(e) } function Ii(e, t) { return e > t } function Ni(e, t) { return null != e && ft.call(e, t) } function Ri(e, t) { return null != e && t in rt(e) } function Fi(e, t, n) { return e >= Yt(t, n) && e < Ft(t, n) } function Yi(e, t, r) { var i = r ? An : Tn, a = e[0].length, s = e.length, c = s, l = n(s), u = 1 / 0, h = []; while (c--) { var f = e[c]; c && t && (f = Ln(f, Jn(t))), u = Yt(f.length, u), l[c] = !r && (t || a >= 120 && f.length >= 120) ? new Xr(c && f) : o } f = e[0]; var d = -1, p = l[0]; e: while (++d < a && h.length < u) { var v = f[d], m = t ? t(v) : v; if (v = r || 0 !== v ? v : 0, !(p ? Zn(p, m) : i(h, m, r))) { c = s; while (--c) { var g = l[c]; if (!(g ? Zn(g, m) : i(e[c], m, r))) continue e } p && p.push(m), h.push(v) } } return h } function $i(e, t, n, r) { return zi(e, (function (e, i, o) { t(r, n(e), i, o) })), r } function Bi(e, t, n) { t = Wo(t, e), e = Ms(e, t); var r = null == e ? e : e[Es(sc(t))]; return null == r ? o : _n(r, e, n) } function Wi(e) { return Su(e) && Vi(e) == $ } function qi(e) { return Su(e) && Vi(e) == he } function Ui(e) { return Su(e) && Vi(e) == U } function Ki(e, t, n, r, i) { return e === t || (null == e || null == t || !Su(e) && !Su(t) ? e !== e && t !== t : Gi(e, t, n, r, Ki, i)) } function Gi(e, t, n, r, i, o) { var a = uu(e), s = uu(t), c = a ? B : es(e), l = s ? B : es(t); c = c == $ ? te : c, l = l == $ ? te : l; var u = c == te, h = l == te, f = c == l; if (f && vu(e)) { if (!vu(t)) return !1; a = !0, u = !1 } if (f && !u) return o || (o = new Zr), a || Yu(e) ? Ia(e, t, n, r, i, o) : Na(e, t, c, n, r, i, o); if (!(n & m)) { var d = u && ft.call(e, "__wrapped__"), p = h && ft.call(t, "__wrapped__"); if (d || p) { var v = d ? e.value() : e, g = p ? t.value() : t; return o || (o = new Zr), i(v, g, n, r, o) } } return !!f && (o || (o = new Zr), Ra(e, t, n, r, i, o)) } function Xi(e) { return Su(e) && es(e) == Q } function Ji(e, t, n, r) { var i = n.length, a = i, s = !r; if (null == e) return !a; e = rt(e); while (i--) { var c = n[i]; if (s && c[2] ? c[1] !== e[c[0]] : !(c[0] in e)) return !1 } while (++i < a) { c = n[i]; var l = c[0], u = e[l], h = c[1]; if (s && c[2]) { if (u === o && !(l in e)) return !1 } else { var f = new Zr; if (r) var d = r(u, h, l, e, t, f); if (!(d === o ? Ki(h, u, m | g, r, f) : d)) return !1 } } return !0 } function Qi(e) { if (!ku(e) || ps(e)) return !1; var t = Cu(e) ? yt : Xe; return t.test(Ps(e)) } function Zi(e) { return Su(e) && Vi(e) == ie } function eo(e) { return Su(e) && es(e) == oe } function to(e) { return Su(e) && Ou(e.length) && !!Jt[Vi(e)] } function no(e) { return "function" == typeof e ? e : null == e ? Ef : "object" == typeof e ? uu(e) ? co(e[0], e[1]) : so(e) : qf(e) } function ro(e) { if (!ms(e)) return Rt(e); var t = []; for (var n in rt(e)) ft.call(e, n) && "constructor" != n && t.push(n); return t } function io(e) { if (!ku(e)) return ws(e); var t = ms(e), n = []; for (var r in e) ("constructor" != r || !t && ft.call(e, r)) && n.push(r); return n } function oo(e, t) { return e < t } function ao(e, t) { var r = -1, i = fu(e) ? n(e.length) : []; return Ci(e, (function (e, n, o) { i[++r] = t(e, n, o) })), i } function so(e) { var t = Ga(e); return 1 == t.length && t[0][2] ? ys(t[0][0], t[0][1]) : function (n) { return n === e || Ji(n, e, t) } } function co(e, t) { return hs(e) && gs(t) ? ys(Es(e), t) : function (n) { var r = yh(n, e); return r === o && r === t ? xh(n, e) : Ki(t, r, m | g) } } function lo(e, t, n, r, i) { e !== t && Li(t, (function (a, s) { if (ku(a)) i || (i = new Zr), uo(e, t, s, n, lo, r, i); else { var c = r ? r(e[s], a, s + "", e, t, i) : o; c === o && (c = a), li(e, s, c) } }), Oh) } function uo(e, t, n, r, i, a, s) { var c = e[n], l = t[n], u = s.get(l); if (u) li(e, n, u); else { var h = a ? a(c, l, n + "", e, t, s) : o, f = h === o; if (f) { var d = uu(l), p = !d && vu(l), v = !d && !p && Yu(l); h = l, d || p || v ? uu(c) ? h = c : du(c) ? h = sa(c) : p ? (f = !1, h = Go(l, !0)) : v ? (f = !1, h = na(l, !0)) : h = [] : Hu(l) || lu(l) ? (h = c, lu(c) ? h = Zu(c) : (!ku(c) || r && Cu(c)) && (h = os(l))) : f = !1 } f && (s.set(l, h), i(h, l, r, a, s), s["delete"](l)), li(e, n, h) } } function ho(e, t) { var n = e.length; if (n) return t += t < 0 ? n : 0, ls(t, n) ? e[t] : o } function fo(e, t, n) { var r = -1; t = Ln(t.length ? t : [Ef], Jn(Ua())); var i = ao(e, (function (e, n, i) { var o = Ln(t, (function (t) { return t(e) })); return { criteria: o, index: ++r, value: e } })); return Un(i, (function (e, t) { return ia(e, t, n) })) } function po(e, t) { return vo(e, t, (function (t, n) { return xh(e, n) })) } function vo(e, t, n) { var r = -1, i = t.length, o = {}; while (++r < i) { var a = t[r], s = Di(e, a); n(s, a) && Oo(o, Wo(a, e), s) } return o } function mo(e) { return function (t) { return Di(t, e) } } function go(e, t, n, r) { var i = r ? Fn : Rn, o = -1, a = t.length, s = e; e === t && (t = sa(t)), n && (s = Ln(e, Jn(n))); while (++o < a) { var c = 0, l = t[o], u = n ? n(l) : l; while ((c = i(s, u, c, r)) > -1) s !== e && kt.call(s, c, 1), kt.call(e, c, 1) } return e } function yo(e, t) { var n = e ? t.length : 0, r = n - 1; while (n--) { var i = t[n]; if (n == r || i !== o) { var o = i; ls(i) ? kt.call(e, i, 1) : Vo(e, i) } } return e } function bo(e, t) { return e + Dt(Ut() * (t - e + 1)) } function xo(e, t, r, i) { var o = -1, a = Ft(Pt((t - e) / (r || 1)), 0), s = n(a); while (a--) s[i ? a : ++o] = e, e += r; return s } function wo(e, t) { var n = ""; if (!e || t < 1 || t > H) return n; do { t % 2 && (n += e), t = Dt(t / 2), t && (e += e) } while (t); return n } function _o(e, t) { return Ts(Cs(e, t, Ef), e + "") } function Co(e) { return ai($h(e)) } function Mo(e, t) { var n = $h(e); return js(n, gi(t, 0, n.length)) } function Oo(e, t, n, r) { if (!ku(e)) return e; t = Wo(t, e); var i = -1, a = t.length, s = a - 1, c = e; while (null != c && ++i < a) { var l = Es(t[i]), u = n; if (i != s) { var h = c[l]; u = r ? r(h, l, c) : o, u === o && (u = ku(h) ? h : ls(t[i + 1]) ? [] : {}) } ui(c, l, u), c = c[l] } return e } var ko = ln ? function (e, t) { return ln.set(e, t), e } : Ef, So = Lt ? function (e, t) { return Lt(e, "toString", { configurable: !0, enumerable: !1, value: Af(t), writable: !0 }) } : Ef; function To(e) { return js($h(e)) } function Ao(e, t, r) { var i = -1, o = e.length; t < 0 && (t = -t > o ? 0 : o + t), r = r > o ? o : r, r < 0 && (r += o), o = t > r ? 0 : r - t >>> 0, t >>>= 0; var a = n(o); while (++i < o) a[i] = e[i + t]; return a } function Lo(e, t) { var n; return Ci(e, (function (e, r, i) { return n = t(e, r, i), !n })), !!n } function jo(e, t, n) { var r = 0, i = null == e ? r : e.length; if ("number" == typeof t && t === t && i <= F) { while (r < i) { var o = r + i >>> 1, a = e[o]; null !== a && !Fu(a) && (n ? a <= t : a < t) ? r = o + 1 : i = o } return i } return zo(e, t, Ef, n) } function zo(e, t, n, r) { t = n(t); var i = 0, a = null == e ? 0 : e.length, s = t !== t, c = null === t, l = Fu(t), u = t === o; while (i < a) { var h = Dt((i + a) / 2), f = n(e[h]), d = f !== o, p = null === f, v = f === f, m = Fu(f); if (s) var g = r || v; else g = u ? v && (r || d) : c ? v && d && (r || !p) : l ? v && d && !p && (r || !m) : !p && !m && (r ? f <= t : f < t); g ? i = h + 1 : a = h } return Yt(a, R) } function Eo(e, t) { var n = -1, r = e.length, i = 0, o = []; while (++n < r) { var a = e[n], s = t ? t(a) : a; if (!n || !au(s, c)) { var c = s; o[i++] = 0 === a ? 0 : a } } return o } function Po(e) { return "number" == typeof e ? e : Fu(e) ? I : +e } function Do(e) { if ("string" == typeof e) return e; if (uu(e)) return Ln(e, Do) + ""; if (Fu(e)) return wr ? wr.call(e) : ""; var t = e + ""; return "0" == t && 1 / e == -D ? "-0" : t } function Ho(e, t, n) { var r = -1, i = Tn, o = e.length, a = !0, c = [], l = c; if (n) a = !1, i = An; else if (o >= s) { var u = t ? null : za(e); if (u) return dr(u); a = !1, i = Zn, l = new Xr } else l = t ? [] : c; e: while (++r < o) { var h = e[r], f = t ? t(h) : h; if (h = n || 0 !== h ? h : 0, a && f === f) { var d = l.length; while (d--) if (l[d] === f) continue e; t && l.push(f), c.push(h) } else i(l, f, n) || (l !== c && l.push(f), c.push(h)) } return c } function Vo(e, t) { return t = Wo(t, e), e = Ms(e, t), null == e || delete e[Es(sc(t))] } function Io(e, t, n, r) { return Oo(e, t, n(Di(e, t)), r) } function No(e, t, n, r) { var i = e.length, o = r ? i : -1; while ((r ? o-- : ++o < i) && t(e[o], o, e)); return n ? Ao(e, r ? 0 : o, r ? o + 1 : i) : Ao(e, r ? o + 1 : 0, r ? i : o) } function Ro(e, t) { var n = e; return n instanceof Tr && (n = n.value()), zn(t, (function (e, t) { return t.func.apply(t.thisArg, jn([e], t.args)) }), n) } function Fo(e, t, r) { var i = e.length; if (i < 2) return i ? Ho(e[0]) : []; var o = -1, a = n(i); while (++o < i) { var s = e[o], c = -1; while (++c < i) c != o && (a[o] = _i(a[o] || s, e[c], t, r)) } return Ho(Ai(a, 1), t, r) } function Yo(e, t, n) { var r = -1, i = e.length, a = t.length, s = {}; while (++r < i) { var c = r < a ? t[r] : o; n(s, e[r], c) } return s } function $o(e) { return du(e) ? e : [] } function Bo(e) { return "function" == typeof e ? e : Ef } function Wo(e, t) { return uu(e) ? e : hs(e, t) ? [e] : zs(th(e)) } var qo = _o; function Uo(e, t, n) { var r = e.length; return n = n === o ? r : n, !t && n >= r ? e : Ao(e, t, n) } var Ko = jt || function (e) { return cn.clearTimeout(e) }; function Go(e, t) { if (t) return e.slice(); var n = e.length, r = _t ? _t(n) : new e.constructor(n); return e.copy(r), r } function Xo(e) { var t = new e.constructor(e.byteLength); return new wt(t).set(new wt(e)), t } function Jo(e, t) { var n = t ? Xo(e.buffer) : e.buffer; return new e.constructor(n, e.byteOffset, e.byteLength) } function Qo(e, t, n) { var r = t ? n(ur(e), d) : ur(e); return zn(r, xn, new e.constructor) } function Zo(e) { var t = new e.constructor(e.source, Ue.exec(e)); return t.lastIndex = e.lastIndex, t } function ea(e, t, n) { var r = t ? n(dr(e), d) : dr(e); return zn(r, wn, new e.constructor) } function ta(e) { return xr ? rt(xr.call(e)) : {} } function na(e, t) { var n = t ? Xo(e.buffer) : e.buffer; return new e.constructor(n, e.byteOffset, e.length) } function ra(e, t) { if (e !== t) { var n = e !== o, r = null === e, i = e === e, a = Fu(e), s = t !== o, c = null === t, l = t === t, u = Fu(t); if (!c && !u && !a && e > t || a && s && l && !c && !u || r && s && l || !n && l || !i) return 1; if (!r && !a && !u && e < t || u && n && i && !r && !a || c && n && i || !s && i || !l) return -1 } return 0 } function ia(e, t, n) { var r = -1, i = e.criteria, o = t.criteria, a = i.length, s = n.length; while (++r < a) { var c = ra(i[r], o[r]); if (c) { if (r >= s) return c; var l = n[r]; return c * ("desc" == l ? -1 : 1) } } return e.index - t.index } function oa(e, t, r, i) { var o = -1, a = e.length, s = r.length, c = -1, l = t.length, u = Ft(a - s, 0), h = n(l + u), f = !i; while (++c < l) h[c] = t[c]; while (++o < s) (f || o < a) && (h[r[o]] = e[o]); while (u--) h[c++] = e[o++]; return h } function aa(e, t, r, i) { var o = -1, a = e.length, s = -1, c = r.length, l = -1, u = t.length, h = Ft(a - c, 0), f = n(h + u), d = !i; while (++o < h) f[o] = e[o]; var p = o; while (++l < u) f[p + l] = t[l]; while (++s < c) (d || o < a) && (f[p + r[s]] = e[o++]); return f } function sa(e, t) { var r = -1, i = e.length; t || (t = n(i)); while (++r < i) t[r] = e[r]; return t } function ca(e, t, n, r) { var i = !n; n || (n = {}); var a = -1, s = t.length; while (++a < s) { var c = t[a], l = r ? r(n[c], e[c], c, n, e) : o; l === o && (l = e[c]), i ? vi(n, c, l) : ui(n, c, l) } return n } function la(e, t) { return ca(e, Qa(e), t) } function ua(e, t) { return ca(e, Za(e), t) } function ha(e, t) { return function (n, r) { var i = uu(n) ? Cn : fi, o = t ? t() : {}; return i(n, e, Ua(r, 2), o) } } function fa(e) { return _o((function (t, n) { var r = -1, i = n.length, a = i > 1 ? n[i - 1] : o, s = i > 2 ? n[2] : o; a = e.length > 3 && "function" == typeof a ? (i--, a) : o, s && us(n[0], n[1], s) && (a = i < 3 ? o : a, i = 1), t = rt(t); while (++r < i) { var c = n[r]; c && e(t, c, r, a) } return t })) } function da(e, t) { return function (n, r) { if (null == n) return n; if (!fu(n)) return e(n, r); var i = n.length, o = t ? i : -1, a = rt(n); while (t ? o-- : ++o < i) if (!1 === r(a[o], o, a)) break; return n } } function pa(e) { return function (t, n, r) { var i = -1, o = rt(t), a = r(t), s = a.length; while (s--) { var c = a[e ? s : ++i]; if (!1 === n(o[c], c, o)) break } return t } } function va(e, t, n) { var r = t & y, i = ya(e); function o() { var t = this && this !== cn && this instanceof o ? i : e; return t.apply(r ? n : this, arguments) } return o } function ma(e) { return function (t) { t = th(t); var n = sr(t) ? yr(t) : o, r = n ? n[0] : t.charAt(0), i = n ? Uo(n, 1).join("") : t.slice(1); return r[e]() + i } } function ga(e) { return function (t) { return zn(Mf(Xh(t).replace($t, "")), e, "") } } function ya(e) { return function () { var t = arguments; switch (t.length) { case 0: return new e; case 1: return new e(t[0]); case 2: return new e(t[0], t[1]); case 3: return new e(t[0], t[1], t[2]); case 4: return new e(t[0], t[1], t[2], t[3]); case 5: return new e(t[0], t[1], t[2], t[3], t[4]); case 6: return new e(t[0], t[1], t[2], t[3], t[4], t[5]); case 7: return new e(t[0], t[1], t[2], t[3], t[4], t[5], t[6]) }var n = Or(e.prototype), r = e.apply(n, t); return ku(r) ? r : n } } function ba(e, t, r) { var i = ya(e); function a() { var s = arguments.length, c = n(s), l = s, u = qa(a); while (l--) c[l] = arguments[l]; var h = s < 3 && c[0] !== u && c[s - 1] !== u ? [] : fr(c, u); if (s -= h.length, s < r) return La(e, t, _a, a.placeholder, o, c, h, o, o, r - s); var f = this && this !== cn && this instanceof a ? i : e; return _n(f, this, c) } return a } function xa(e) { return function (t, n, r) { var i = rt(t); if (!fu(t)) { var a = Ua(n, 3); t = Mh(t), n = function (e) { return a(i[e], e, i) } } var s = e(t, n, r); return s > -1 ? i[a ? t[s] : s] : o } } function wa(e) { return Fa((function (t) { var n = t.length, r = n, i = Sr.prototype.thru; e && t.reverse(); while (r--) { var a = t[r]; if ("function" != typeof a) throw new at(l); if (i && !s && "wrapper" == Wa(a)) var s = new Sr([], !0) } r = s ? r : n; while (++r < n) { a = t[r]; var c = Wa(a), u = "wrapper" == c ? Ba(a) : o; s = u && ds(u[0]) && u[1] == (O | w | C | k) && !u[4].length && 1 == u[9] ? s[Wa(u[0])].apply(s, u[3]) : 1 == a.length && ds(a) ? s[c]() : s.thru(a) } return function () { var e = arguments, r = e[0]; if (s && 1 == e.length && uu(r)) return s.plant(r).value(); var i = 0, o = n ? t[i].apply(this, e) : r; while (++i < n) o = t[i].call(this, o); return o } })) } function _a(e, t, r, i, a, s, c, l, u, h) { var f = t & O, d = t & y, p = t & b, v = t & (w | _), m = t & S, g = p ? o : ya(e); function x() { var o = arguments.length, y = n(o), b = o; while (b--) y[b] = arguments[b]; if (v) var w = qa(x), _ = nr(y, w); if (i && (y = oa(y, i, a, v)), s && (y = aa(y, s, c, v)), o -= _, v && o < h) { var C = fr(y, w); return La(e, t, _a, x.placeholder, r, y, C, l, u, h - o) } var M = d ? r : this, O = p ? M[e] : e; return o = y.length, l ? y = Os(y, l) : m && o > 1 && y.reverse(), f && u < o && (y.length = u), this && this !== cn && this instanceof x && (O = g || ya(O)), O.apply(M, y) } return x } function Ca(e, t) { return function (n, r) { return $i(n, e, t(r), {}) } } function Ma(e, t) { return function (n, r) { var i; if (n === o && r === o) return t; if (n !== o && (i = n), r !== o) { if (i === o) return r; "string" == typeof n || "string" == typeof r ? (n = Do(n), r = Do(r)) : (n = Po(n), r = Po(r)), i = e(n, r) } return i } } function Oa(e) { return Fa((function (t) { return t = Ln(t, Jn(Ua())), _o((function (n) { var r = this; return e(t, (function (e) { return _n(e, r, n) })) })) })) } function ka(e, t) { t = t === o ? " " : Do(t); var n = t.length; if (n < 2) return n ? wo(t, e) : t; var r = wo(t, Pt(e / gr(t))); return sr(t) ? Uo(yr(r), 0, e).join("") : r.slice(0, e) } function Sa(e, t, r, i) { var o = t & y, a = ya(e); function s() { var t = -1, c = arguments.length, l = -1, u = i.length, h = n(u + c), f = this && this !== cn && this instanceof s ? a : e; while (++l < u) h[l] = i[l]; while (c--) h[l++] = arguments[++t]; return _n(f, o ? r : this, h) } return s } function Ta(e) { return function (t, n, r) { return r && "number" != typeof r && us(t, n, r) && (n = r = o), t = Gu(t), n === o ? (n = t, t = 0) : n = Gu(n), r = r === o ? t < n ? 1 : -1 : Gu(r), xo(t, n, r, e) } } function Aa(e) { return function (t, n) { return "string" == typeof t && "string" == typeof n || (t = Qu(t), n = Qu(n)), e(t, n) } } function La(e, t, n, r, i, a, s, c, l, u) { var h = t & w, f = h ? s : o, d = h ? o : s, p = h ? a : o, v = h ? o : a; t |= h ? C : M, t &= ~(h ? M : C), t & x || (t &= ~(y | b)); var m = [e, t, i, p, f, v, d, c, l, u], g = n.apply(o, m); return ds(e) && ks(g, m), g.placeholder = r, As(g, e, t) } function ja(e) { var t = nt[e]; return function (e, n) { if (e = Qu(e), n = null == n ? 0 : Yt(Xu(n), 292), n) { var r = (th(e) + "e").split("e"), i = t(r[0] + "e" + (+r[1] + n)); return r = (th(i) + "e").split("e"), +(r[0] + "e" + (+r[1] - n)) } return t(e) } } var za = nn && 1 / dr(new nn([, -0]))[1] == D ? function (e) { return new nn(e) } : Ff; function Ea(e) { return function (t) { var n = es(t); return n == Q ? ur(t) : n == oe ? pr(t) : Xn(t, e(t)) } } function Pa(e, t, n, r, i, a, s, c) { var u = t & b; if (!u && "function" != typeof e) throw new at(l); var h = r ? r.length : 0; if (h || (t &= ~(C | M), r = i = o), s = s === o ? s : Ft(Xu(s), 0), c = c === o ? c : Xu(c), h -= i ? i.length : 0, t & M) { var f = r, d = i; r = i = o } var p = u ? o : Ba(e), v = [e, t, n, r, i, f, d, a, s, c]; if (p && xs(v, p), e = v[0], t = v[1], n = v[2], r = v[3], i = v[4], c = v[9] = v[9] === o ? u ? 0 : e.length : Ft(v[9] - h, 0), !c && t & (w | _) && (t &= ~(w | _)), t && t != y) m = t == w || t == _ ? ba(e, t, c) : t != C && t != (y | C) || i.length ? _a.apply(o, v) : Sa(e, t, n, r); else var m = va(e, t, n); var g = p ? ko : ks; return As(g(m, v), e, t) } function Da(e, t, n, r) { return e === o || au(e, lt[n]) && !ft.call(r, n) ? t : e } function Ha(e, t, n, r, i, a) { return ku(e) && ku(t) && (a.set(t, e), lo(e, t, o, Ha, a), a["delete"](t)), e } function Va(e) { return Hu(e) ? o : e } function Ia(e, t, n, r, i, a) { var s = n & m, c = e.length, l = t.length; if (c != l && !(s && l > c)) return !1; var u = a.get(e); if (u && a.get(t)) return u == t; var h = -1, f = !0, d = n & g ? new Xr : o; a.set(e, t), a.set(t, e); while (++h < c) { var p = e[h], v = t[h]; if (r) var y = s ? r(v, p, h, t, e, a) : r(p, v, h, e, t, a); if (y !== o) { if (y) continue; f = !1; break } if (d) { if (!Pn(t, (function (e, t) { if (!Zn(d, t) && (p === e || i(p, e, n, r, a))) return d.push(t) }))) { f = !1; break } } else if (p !== v && !i(p, v, n, r, a)) { f = !1; break } } return a["delete"](e), a["delete"](t), f } function Na(e, t, n, r, i, o, a) { switch (n) { case fe: if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1; e = e.buffer, t = t.buffer; case he: return !(e.byteLength != t.byteLength || !o(new wt(e), new wt(t))); case q: case U: case Z: return au(+e, +t); case G: return e.name == t.name && e.message == t.message; case ie: case ae: return e == t + ""; case Q: var s = ur; case oe: var c = r & m; if (s || (s = dr), e.size != t.size && !c) return !1; var l = a.get(e); if (l) return l == t; r |= g, a.set(e, t); var u = Ia(s(e), s(t), r, i, o, a); return a["delete"](e), u; case se: if (xr) return xr.call(e) == xr.call(t) }return !1 } function Ra(e, t, n, r, i, a) { var s = n & m, c = Ya(e), l = c.length, u = Ya(t), h = u.length; if (l != h && !s) return !1; var f = l; while (f--) { var d = c[f]; if (!(s ? d in t : ft.call(t, d))) return !1 } var p = a.get(e); if (p && a.get(t)) return p == t; var v = !0; a.set(e, t), a.set(t, e); var g = s; while (++f < l) { d = c[f]; var y = e[d], b = t[d]; if (r) var x = s ? r(b, y, d, t, e, a) : r(y, b, d, e, t, a); if (!(x === o ? y === b || i(y, b, n, r, a) : x)) { v = !1; break } g || (g = "constructor" == d) } if (v && !g) { var w = e.constructor, _ = t.constructor; w == _ || !("constructor" in e) || !("constructor" in t) || "function" == typeof w && w instanceof w && "function" == typeof _ && _ instanceof _ || (v = !1) } return a["delete"](e), a["delete"](t), v } function Fa(e) { return Ts(Cs(e, o, Xs), e + "") } function Ya(e) { return Hi(e, Mh, Qa) } function $a(e) { return Hi(e, Oh, Za) } var Ba = ln ? function (e) { return ln.get(e) } : Ff; function Wa(e) { var t = e.name + "", n = un[t], r = ft.call(un, t) ? n.length : 0; while (r--) { var i = n[r], o = i.func; if (null == o || o == e) return i.name } return t } function qa(e) { var t = ft.call(Cr, "placeholder") ? Cr : e; return t.placeholder } function Ua() { var e = Cr.iteratee || Pf; return e = e === Pf ? no : e, arguments.length ? e(arguments[0], arguments[1]) : e } function Ka(e, t) { var n = e.__data__; return fs(t) ? n["string" == typeof t ? "string" : "hash"] : n.map } function Ga(e) { var t = Mh(e), n = t.length; while (n--) { var r = t[n], i = e[r]; t[n] = [r, i, gs(i)] } return t } function Xa(e, t) { var n = ar(e, t); return Qi(n) ? n : o } function Ja(e) { var t = ft.call(e, At), n = e[At]; try { e[At] = o; var r = !0 } catch (a) { } var i = vt.call(e); return r && (t ? e[At] = n : delete e[At]), i } var Qa = Ht ? function (e) { return null == e ? [] : (e = rt(e), Sn(Ht(e), (function (t) { return Ot.call(e, t) }))) } : Xf, Za = Ht ? function (e) { var t = []; while (e) jn(t, Qa(e)), e = Ct(e); return t } : Xf, es = Vi; function ts(e, t, n) { var r = -1, i = n.length; while (++r < i) { var o = n[r], a = o.size; switch (o.type) { case "drop": e += a; break; case "dropRight": t -= a; break; case "take": t = Yt(t, e + a); break; case "takeRight": e = Ft(e, t - a); break } } return { start: e, end: t } } function ns(e) { var t = e.match(Ye); return t ? t[1].split($e) : [] } function rs(e, t, n) { t = Wo(t, e); var r = -1, i = t.length, o = !1; while (++r < i) { var a = Es(t[r]); if (!(o = null != e && n(e, a))) break; e = e[a] } return o || ++r != i ? o : (i = null == e ? 0 : e.length, !!i && Ou(i) && ls(a, i) && (uu(e) || lu(e))) } function is(e) { var t = e.length, n = e.constructor(t); return t && "string" == typeof e[0] && ft.call(e, "index") && (n.index = e.index, n.input = e.input), n } function os(e) { return "function" != typeof e.constructor || ms(e) ? {} : Or(Ct(e)) } function as(e, t, n, r) { var i = e.constructor; switch (t) { case he: return Xo(e); case q: case U: return new i(+e); case fe: return Jo(e, r); case de: case pe: case ve: case me: case ge: case ye: case be: case xe: case we: return na(e, r); case Q: return Qo(e, r, n); case Z: case ae: return new i(e); case ie: return Zo(e); case oe: return ea(e, r, n); case se: return ta(e) } } function ss(e, t) { var n = t.length; if (!n) return e; var r = n - 1; return t[r] = (n > 1 ? "& " : "") + t[r], t = t.join(n > 2 ? ", " : " "), e.replace(Fe, "{\n/* [wrapped with " + t + "] */\n") } function cs(e) { return uu(e) || lu(e) || !!(St && e && e[St]) } function ls(e, t) { return t = null == t ? H : t, !!t && ("number" == typeof e || Qe.test(e)) && e > -1 && e % 1 == 0 && e < t } function us(e, t, n) { if (!ku(n)) return !1; var r = typeof t; return !!("number" == r ? fu(n) && ls(t, n.length) : "string" == r && t in n) && au(n[t], e) } function hs(e, t) { if (uu(e)) return !1; var n = typeof e; return !("number" != n && "symbol" != n && "boolean" != n && null != e && !Fu(e)) || (Ee.test(e) || !ze.test(e) || null != t && e in rt(t)) } function fs(e) { var t = typeof e; return "string" == t || "number" == t || "symbol" == t || "boolean" == t ? "__proto__" !== e : null === e } function ds(e) { var t = Wa(e), n = Cr[t]; if ("function" != typeof n || !(t in Tr.prototype)) return !1; if (e === n) return !0; var r = Ba(n); return !!r && e === r[0] } function ps(e) { return !!pt && pt in e } (Zt && es(new Zt(new ArrayBuffer(1))) != fe || en && es(new en) != Q || tn && es(tn.resolve()) != ne || nn && es(new nn) != oe || an && es(new an) != le) && (es = function (e) { var t = Vi(e), n = t == te ? e.constructor : o, r = n ? Ps(n) : ""; if (r) switch (r) { case fn: return fe; case dn: return Q; case Dn: return ne; case Hn: return oe; case Wn: return le }return t }); var vs = ut ? Cu : Jf; function ms(e) { var t = e && e.constructor, n = "function" == typeof t && t.prototype || lt; return e === n } function gs(e) { return e === e && !ku(e) } function ys(e, t) { return function (n) { return null != n && (n[e] === t && (t !== o || e in rt(n))) } } function bs(e) { var t = Yl(e, (function (e) { return n.size === h && n.clear(), e })), n = t.cache; return t } function xs(e, t) { var n = e[1], r = t[1], i = n | r, o = i < (y | b | O), a = r == O && n == w || r == O && n == k && e[7].length <= t[8] || r == (O | k) && t[7].length <= t[8] && n == w; if (!o && !a) return e; r & y && (e[2] = t[2], i |= n & y ? 0 : x); var s = t[3]; if (s) { var c = e[3]; e[3] = c ? oa(c, s, t[4]) : s, e[4] = c ? fr(e[3], f) : t[4] } return s = t[5], s && (c = e[5], e[5] = c ? aa(c, s, t[6]) : s, e[6] = c ? fr(e[5], f) : t[6]), s = t[7], s && (e[7] = s), r & O && (e[8] = null == e[8] ? t[8] : Yt(e[8], t[8])), null == e[9] && (e[9] = t[9]), e[0] = t[0], e[1] = i, e } function ws(e) { var t = []; if (null != e) for (var n in rt(e)) t.push(n); return t } function _s(e) { return vt.call(e) } function Cs(e, t, r) { return t = Ft(t === o ? e.length - 1 : t, 0), function () { var i = arguments, o = -1, a = Ft(i.length - t, 0), s = n(a); while (++o < a) s[o] = i[t + o]; o = -1; var c = n(t + 1); while (++o < t) c[o] = i[o]; return c[t] = r(s), _n(e, this, c) } } function Ms(e, t) { return t.length < 2 ? e : Di(e, Ao(t, 0, -1)) } function Os(e, t) { var n = e.length, r = Yt(t.length, n), i = sa(e); while (r--) { var a = t[r]; e[r] = ls(a, n) ? i[a] : o } return e } var ks = Ls(ko), Ss = Et || function (e, t) { return cn.setTimeout(e, t) }, Ts = Ls(So); function As(e, t, n) { var r = t + ""; return Ts(e, ss(r, Ds(ns(r), n))) } function Ls(e) { var t = 0, n = 0; return function () { var r = Wt(), i = j - (r - n); if (n = r, i > 0) { if (++t >= L) return arguments[0] } else t = 0; return e.apply(o, arguments) } } function js(e, t) { var n = -1, r = e.length, i = r - 1; t = t === o ? r : t; while (++n < t) { var a = bo(n, i), s = e[a]; e[a] = e[n], e[n] = s } return e.length = t, e } var zs = bs((function (e) { var t = []; return Pe.test(e) && t.push(""), e.replace(De, (function (e, n, r, i) { t.push(r ? i.replace(We, "$1") : n || e) })), t })); function Es(e) { if ("string" == typeof e || Fu(e)) return e; var t = e + ""; return "0" == t && 1 / e == -D ? "-0" : t } function Ps(e) { if (null != e) { try { return ht.call(e) } catch (t) { } try { return e + "" } catch (t) { } } return "" } function Ds(e, t) { return Mn(Y, (function (n) { var r = "_." + n[0]; t & n[1] && !Tn(e, r) && e.push(r) })), e.sort() } function Hs(e) { if (e instanceof Tr) return e.clone(); var t = new Sr(e.__wrapped__, e.__chain__); return t.__actions__ = sa(e.__actions__), t.__index__ = e.__index__, t.__values__ = e.__values__, t } function Vs(e, t, r) { t = (r ? us(e, t, r) : t === o) ? 1 : Ft(Xu(t), 0); var i = null == e ? 0 : e.length; if (!i || t < 1) return []; var a = 0, s = 0, c = n(Pt(i / t)); while (a < i) c[s++] = Ao(e, a, a += t); return c } function Is(e) { var t = -1, n = null == e ? 0 : e.length, r = 0, i = []; while (++t < n) { var o = e[t]; o && (i[r++] = o) } return i } function Ns() { var e = arguments.length; if (!e) return []; var t = n(e - 1), r = arguments[0], i = e; while (i--) t[i - 1] = arguments[i]; return jn(uu(r) ? sa(r) : [r], Ai(t, 1)) } var Rs = _o((function (e, t) { return du(e) ? _i(e, Ai(t, 1, du, !0)) : [] })), Fs = _o((function (e, t) { var n = sc(t); return du(n) && (n = o), du(e) ? _i(e, Ai(t, 1, du, !0), Ua(n, 2)) : [] })), Ys = _o((function (e, t) { var n = sc(t); return du(n) && (n = o), du(e) ? _i(e, Ai(t, 1, du, !0), o, n) : [] })); function $s(e, t, n) { var r = null == e ? 0 : e.length; return r ? (t = n || t === o ? 1 : Xu(t), Ao(e, t < 0 ? 0 : t, r)) : [] } function Bs(e, t, n) { var r = null == e ? 0 : e.length; return r ? (t = n || t === o ? 1 : Xu(t), t = r - t, Ao(e, 0, t < 0 ? 0 : t)) : [] } function Ws(e, t) { return e && e.length ? No(e, Ua(t, 3), !0, !0) : [] } function qs(e, t) { return e && e.length ? No(e, Ua(t, 3), !0) : [] } function Us(e, t, n, r) { var i = null == e ? 0 : e.length; return i ? (n && "number" != typeof n && us(e, t, n) && (n = 0, r = i), Si(e, t, n, r)) : [] } function Ks(e, t, n) { var r = null == e ? 0 : e.length; if (!r) return -1; var i = null == n ? 0 : Xu(n); return i < 0 && (i = Ft(r + i, 0)), Nn(e, Ua(t, 3), i) } function Gs(e, t, n) { var r = null == e ? 0 : e.length; if (!r) return -1; var i = r - 1; return n !== o && (i = Xu(n), i = n < 0 ? Ft(r + i, 0) : Yt(i, r - 1)), Nn(e, Ua(t, 3), i, !0) } function Xs(e) { var t = null == e ? 0 : e.length; return t ? Ai(e, 1) : [] } function Js(e) { var t = null == e ? 0 : e.length; return t ? Ai(e, D) : [] } function Qs(e, t) { var n = null == e ? 0 : e.length; return n ? (t = t === o ? 1 : Xu(t), Ai(e, t)) : [] } function Zs(e) { var t = -1, n = null == e ? 0 : e.length, r = {}; while (++t < n) { var i = e[t]; r[i[0]] = i[1] } return r } function ec(e) { return e && e.length ? e[0] : o } function tc(e, t, n) { var r = null == e ? 0 : e.length; if (!r) return -1; var i = null == n ? 0 : Xu(n); return i < 0 && (i = Ft(r + i, 0)), Rn(e, t, i) } function nc(e) { var t = null == e ? 0 : e.length; return t ? Ao(e, 0, -1) : [] } var rc = _o((function (e) { var t = Ln(e, $o); return t.length && t[0] === e[0] ? Yi(t) : [] })), ic = _o((function (e) { var t = sc(e), n = Ln(e, $o); return t === sc(n) ? t = o : n.pop(), n.length && n[0] === e[0] ? Yi(n, Ua(t, 2)) : [] })), oc = _o((function (e) { var t = sc(e), n = Ln(e, $o); return t = "function" == typeof t ? t : o, t && n.pop(), n.length && n[0] === e[0] ? Yi(n, o, t) : [] })); function ac(e, t) { return null == e ? "" : Nt.call(e, t) } function sc(e) { var t = null == e ? 0 : e.length; return t ? e[t - 1] : o } function cc(e, t, n) { var r = null == e ? 0 : e.length; if (!r) return -1; var i = r; return n !== o && (i = Xu(n), i = i < 0 ? Ft(r + i, 0) : Yt(i, r - 1)), t === t ? mr(e, t, i) : Nn(e, Yn, i, !0) } function lc(e, t) { return e && e.length ? ho(e, Xu(t)) : o } var uc = _o(hc); function hc(e, t) { return e && e.length && t && t.length ? go(e, t) : e } function fc(e, t, n) { return e && e.length && t && t.length ? go(e, t, Ua(n, 2)) : e } function dc(e, t, n) { return e && e.length && t && t.length ? go(e, t, o, n) : e } var pc = Fa((function (e, t) { var n = null == e ? 0 : e.length, r = mi(e, t); return yo(e, Ln(t, (function (e) { return ls(e, n) ? +e : e })).sort(ra)), r })); function vc(e, t) { var n = []; if (!e || !e.length) return n; var r = -1, i = [], o = e.length; t = Ua(t, 3); while (++r < o) { var a = e[r]; t(a, r, e) && (n.push(a), i.push(r)) } return yo(e, i), n } function mc(e) { return null == e ? e : Kt.call(e) } function gc(e, t, n) { var r = null == e ? 0 : e.length; return r ? (n && "number" != typeof n && us(e, t, n) ? (t = 0, n = r) : (t = null == t ? 0 : Xu(t), n = n === o ? r : Xu(n)), Ao(e, t, n)) : [] } function yc(e, t) { return jo(e, t) } function bc(e, t, n) { return zo(e, t, Ua(n, 2)) } function xc(e, t) { var n = null == e ? 0 : e.length; if (n) { var r = jo(e, t); if (r < n && au(e[r], t)) return r } return -1 } function wc(e, t) { return jo(e, t, !0) } function _c(e, t, n) { return zo(e, t, Ua(n, 2), !0) } function Cc(e, t) { var n = null == e ? 0 : e.length; if (n) { var r = jo(e, t, !0) - 1; if (au(e[r], t)) return r } return -1 } function Mc(e) { return e && e.length ? Eo(e) : [] } function Oc(e, t) { return e && e.length ? Eo(e, Ua(t, 2)) : [] } function kc(e) { var t = null == e ? 0 : e.length; return t ? Ao(e, 1, t) : [] } function Sc(e, t, n) { return e && e.length ? (t = n || t === o ? 1 : Xu(t), Ao(e, 0, t < 0 ? 0 : t)) : [] } function Tc(e, t, n) { var r = null == e ? 0 : e.length; return r ? (t = n || t === o ? 1 : Xu(t), t = r - t, Ao(e, t < 0 ? 0 : t, r)) : [] } function Ac(e, t) { return e && e.length ? No(e, Ua(t, 3), !1, !0) : [] } function Lc(e, t) { return e && e.length ? No(e, Ua(t, 3)) : [] } var jc = _o((function (e) { return Ho(Ai(e, 1, du, !0)) })), zc = _o((function (e) { var t = sc(e); return du(t) && (t = o), Ho(Ai(e, 1, du, !0), Ua(t, 2)) })), Ec = _o((function (e) { var t = sc(e); return t = "function" == typeof t ? t : o, Ho(Ai(e, 1, du, !0), o, t) })); function Pc(e) { return e && e.length ? Ho(e) : [] } function Dc(e, t) { return e && e.length ? Ho(e, Ua(t, 2)) : [] } function Hc(e, t) { return t = "function" == typeof t ? t : o, e && e.length ? Ho(e, o, t) : [] } function Vc(e) { if (!e || !e.length) return []; var t = 0; return e = Sn(e, (function (e) { if (du(e)) return t = Ft(e.length, t), !0 })), Gn(t, (function (t) { return Ln(e, Bn(t)) })) } function Ic(e, t) { if (!e || !e.length) return []; var n = Vc(e); return null == t ? n : Ln(n, (function (e) { return _n(t, o, e) })) } var Nc = _o((function (e, t) { return du(e) ? _i(e, t) : [] })), Rc = _o((function (e) { return Fo(Sn(e, du)) })), Fc = _o((function (e) { var t = sc(e); return du(t) && (t = o), Fo(Sn(e, du), Ua(t, 2)) })), Yc = _o((function (e) { var t = sc(e); return t = "function" == typeof t ? t : o, Fo(Sn(e, du), o, t) })), $c = _o(Vc); function Bc(e, t) { return Yo(e || [], t || [], ui) } function Wc(e, t) { return Yo(e || [], t || [], Oo) } var qc = _o((function (e) { var t = e.length, n = t > 1 ? e[t - 1] : o; return n = "function" == typeof n ? (e.pop(), n) : o, Ic(e, n) })); function Uc(e) { var t = Cr(e); return t.__chain__ = !0, t } function Kc(e, t) { return t(e), e } function Gc(e, t) { return t(e) } var Xc = Fa((function (e) { var t = e.length, n = t ? e[0] : 0, r = this.__wrapped__, i = function (t) { return mi(t, e) }; return !(t > 1 || this.__actions__.length) && r instanceof Tr && ls(n) ? (r = r.slice(n, +n + (t ? 1 : 0)), r.__actions__.push({ func: Gc, args: [i], thisArg: o }), new Sr(r, this.__chain__).thru((function (e) { return t && !e.length && e.push(o), e }))) : this.thru(i) })); function Jc() { return Uc(this) } function Qc() { return new Sr(this.value(), this.__chain__) } function Zc() { this.__values__ === o && (this.__values__ = Ku(this.value())); var e = this.__index__ >= this.__values__.length, t = e ? o : this.__values__[this.__index__++]; return { done: e, value: t } } function el() { return this } function tl(e) { var t, n = this; while (n instanceof kr) { var r = Hs(n); r.__index__ = 0, r.__values__ = o, t ? i.__wrapped__ = r : t = r; var i = r; n = n.__wrapped__ } return i.__wrapped__ = e, t } function nl() { var e = this.__wrapped__; if (e instanceof Tr) { var t = e; return this.__actions__.length && (t = new Tr(this)), t = t.reverse(), t.__actions__.push({ func: Gc, args: [mc], thisArg: o }), new Sr(t, this.__chain__) } return this.thru(mc) } function rl() { return Ro(this.__wrapped__, this.__actions__) } var il = ha((function (e, t, n) { ft.call(e, n) ? ++e[n] : vi(e, n, 1) })); function ol(e, t, n) { var r = uu(e) ? kn : Oi; return n && us(e, t, n) && (t = o), r(e, Ua(t, 3)) } function al(e, t) { var n = uu(e) ? Sn : Ti; return n(e, Ua(t, 3)) } var sl = xa(Ks), cl = xa(Gs); function ll(e, t) { return Ai(yl(e, t), 1) } function ul(e, t) { return Ai(yl(e, t), D) } function hl(e, t, n) { return n = n === o ? 1 : Xu(n), Ai(yl(e, t), n) } function fl(e, t) { var n = uu(e) ? Mn : Ci; return n(e, Ua(t, 3)) } function dl(e, t) { var n = uu(e) ? On : Mi; return n(e, Ua(t, 3)) } var pl = ha((function (e, t, n) { ft.call(e, n) ? e[n].push(t) : vi(e, n, [t]) })); function vl(e, t, n, r) { e = fu(e) ? e : $h(e), n = n && !r ? Xu(n) : 0; var i = e.length; return n < 0 && (n = Ft(i + n, 0)), Ru(e) ? n <= i && e.indexOf(t, n) > -1 : !!i && Rn(e, t, n) > -1 } var ml = _o((function (e, t, r) { var i = -1, o = "function" == typeof t, a = fu(e) ? n(e.length) : []; return Ci(e, (function (e) { a[++i] = o ? _n(t, e, r) : Bi(e, t, r) })), a })), gl = ha((function (e, t, n) { vi(e, n, t) })); function yl(e, t) { var n = uu(e) ? Ln : ao; return n(e, Ua(t, 3)) } function bl(e, t, n, r) { return null == e ? [] : (uu(t) || (t = null == t ? [] : [t]), n = r ? o : n, uu(n) || (n = null == n ? [] : [n]), fo(e, t, n)) } var xl = ha((function (e, t, n) { e[n ? 0 : 1].push(t) }), (function () { return [[], []] })); function wl(e, t, n) { var r = uu(e) ? zn : qn, i = arguments.length < 3; return r(e, Ua(t, 4), n, i, Ci) } function _l(e, t, n) { var r = uu(e) ? En : qn, i = arguments.length < 3; return r(e, Ua(t, 4), n, i, Mi) } function Cl(e, t) { var n = uu(e) ? Sn : Ti; return n(e, $l(Ua(t, 3))) } function Ml(e) { var t = uu(e) ? ai : Co; return t(e) } function Ol(e, t, n) { t = (n ? us(e, t, n) : t === o) ? 1 : Xu(t); var r = uu(e) ? si : Mo; return r(e, t) } function kl(e) { var t = uu(e) ? ci : To; return t(e) } function Sl(e) { if (null == e) return 0; if (fu(e)) return Ru(e) ? gr(e) : e.length; var t = es(e); return t == Q || t == oe ? e.size : ro(e).length } function Tl(e, t, n) { var r = uu(e) ? Pn : Lo; return n && us(e, t, n) && (t = o), r(e, Ua(t, 3)) } var Al = _o((function (e, t) { if (null == e) return []; var n = t.length; return n > 1 && us(e, t[0], t[1]) ? t = [] : n > 2 && us(t[0], t[1], t[2]) && (t = [t[0]]), fo(e, Ai(t, 1), []) })), Ll = zt || function () { return cn.Date.now() }; function jl(e, t) { if ("function" != typeof t) throw new at(l); return e = Xu(e), function () { if (--e < 1) return t.apply(this, arguments) } } function zl(e, t, n) { return t = n ? o : t, t = e && null == t ? e.length : t, Pa(e, O, o, o, o, o, t) } function El(e, t) { var n; if ("function" != typeof t) throw new at(l); return e = Xu(e), function () { return --e > 0 && (n = t.apply(this, arguments)), e <= 1 && (t = o), n } } var Pl = _o((function (e, t, n) { var r = y; if (n.length) { var i = fr(n, qa(Pl)); r |= C } return Pa(e, r, t, n, i) })), Dl = _o((function (e, t, n) { var r = y | b; if (n.length) { var i = fr(n, qa(Dl)); r |= C } return Pa(t, r, e, n, i) })); function Hl(e, t, n) { t = n ? o : t; var r = Pa(e, w, o, o, o, o, o, t); return r.placeholder = Hl.placeholder, r } function Vl(e, t, n) { t = n ? o : t; var r = Pa(e, _, o, o, o, o, o, t); return r.placeholder = Vl.placeholder, r } function Il(e, t, n) { var r, i, a, s, c, u, h = 0, f = !1, d = !1, p = !0; if ("function" != typeof e) throw new at(l); function v(t) { var n = r, a = i; return r = i = o, h = t, s = e.apply(a, n), s } function m(e) { return h = e, c = Ss(b, t), f ? v(e) : s } function g(e) { var n = e - u, r = e - h, i = t - n; return d ? Yt(i, a - r) : i } function y(e) { var n = e - u, r = e - h; return u === o || n >= t || n < 0 || d && r >= a } function b() { var e = Ll(); if (y(e)) return x(e); c = Ss(b, g(e)) } function x(e) { return c = o, p && r ? v(e) : (r = i = o, s) } function w() { c !== o && Ko(c), h = 0, r = u = i = c = o } function _() { return c === o ? s : x(Ll()) } function C() { var e = Ll(), n = y(e); if (r = arguments, i = this, u = e, n) { if (c === o) return m(u); if (d) return c = Ss(b, t), v(u) } return c === o && (c = Ss(b, t)), s } return t = Qu(t) || 0, ku(n) && (f = !!n.leading, d = "maxWait" in n, a = d ? Ft(Qu(n.maxWait) || 0, t) : a, p = "trailing" in n ? !!n.trailing : p), C.cancel = w, C.flush = _, C } var Nl = _o((function (e, t) { return wi(e, 1, t) })), Rl = _o((function (e, t, n) { return wi(e, Qu(t) || 0, n) })); function Fl(e) { return Pa(e, S) } function Yl(e, t) { if ("function" != typeof e || null != t && "function" != typeof t) throw new at(l); var n = function () { var r = arguments, i = t ? t.apply(this, r) : r[0], o = n.cache; if (o.has(i)) return o.get(i); var a = e.apply(this, r); return n.cache = o.set(i, a) || o, a }; return n.cache = new (Yl.Cache || Br), n } function $l(e) { if ("function" != typeof e) throw new at(l); return function () { var t = arguments; switch (t.length) { case 0: return !e.call(this); case 1: return !e.call(this, t[0]); case 2: return !e.call(this, t[0], t[1]); case 3: return !e.call(this, t[0], t[1], t[2]) }return !e.apply(this, t) } } function Bl(e) { return El(2, e) } Yl.Cache = Br; var Wl = qo((function (e, t) { t = 1 == t.length && uu(t[0]) ? Ln(t[0], Jn(Ua())) : Ln(Ai(t, 1), Jn(Ua())); var n = t.length; return _o((function (r) { var i = -1, o = Yt(r.length, n); while (++i < o) r[i] = t[i].call(this, r[i]); return _n(e, this, r) })) })), ql = _o((function (e, t) { var n = fr(t, qa(ql)); return Pa(e, C, o, t, n) })), Ul = _o((function (e, t) { var n = fr(t, qa(Ul)); return Pa(e, M, o, t, n) })), Kl = Fa((function (e, t) { return Pa(e, k, o, o, o, t) })); function Gl(e, t) { if ("function" != typeof e) throw new at(l); return t = t === o ? t : Xu(t), _o(e, t) } function Xl(e, t) { if ("function" != typeof e) throw new at(l); return t = null == t ? 0 : Ft(Xu(t), 0), _o((function (n) { var r = n[t], i = Uo(n, 0, t); return r && jn(i, r), _n(e, this, i) })) } function Jl(e, t, n) { var r = !0, i = !0; if ("function" != typeof e) throw new at(l); return ku(n) && (r = "leading" in n ? !!n.leading : r, i = "trailing" in n ? !!n.trailing : i), Il(e, t, { leading: r, maxWait: t, trailing: i }) } function Ql(e) { return zl(e, 1) } function Zl(e, t) { return ql(Bo(t), e) } function eu() { if (!arguments.length) return []; var e = arguments[0]; return uu(e) ? e : [e] } function tu(e) { return yi(e, v) } function nu(e, t) { return t = "function" == typeof t ? t : o, yi(e, v, t) } function ru(e) { return yi(e, d | v) } function iu(e, t) { return t = "function" == typeof t ? t : o, yi(e, d | v, t) } function ou(e, t) { return null == t || xi(e, t, Mh(t)) } function au(e, t) { return e === t || e !== e && t !== t } var su = Aa(Ii), cu = Aa((function (e, t) { return e >= t })), lu = Wi(function () { return arguments }()) ? Wi : function (e) { return Su(e) && ft.call(e, "callee") && !Ot.call(e, "callee") }, uu = n.isArray, hu = pn ? Jn(pn) : qi; function fu(e) { return null != e && Ou(e.length) && !Cu(e) } function du(e) { return Su(e) && fu(e) } function pu(e) { return !0 === e || !1 === e || Su(e) && Vi(e) == q } var vu = Vt || Jf, mu = vn ? Jn(vn) : Ui; function gu(e) { return Su(e) && 1 === e.nodeType && !Hu(e) } function yu(e) { if (null == e) return !0; if (fu(e) && (uu(e) || "string" == typeof e || "function" == typeof e.splice || vu(e) || Yu(e) || lu(e))) return !e.length; var t = es(e); if (t == Q || t == oe) return !e.size; if (ms(e)) return !ro(e).length; for (var n in e) if (ft.call(e, n)) return !1; return !0 } function bu(e, t) { return Ki(e, t) } function xu(e, t, n) { n = "function" == typeof n ? n : o; var r = n ? n(e, t) : o; return r === o ? Ki(e, t, o, n) : !!r } function wu(e) { if (!Su(e)) return !1; var t = Vi(e); return t == G || t == K || "string" == typeof e.message && "string" == typeof e.name && !Hu(e) } function _u(e) { return "number" == typeof e && It(e) } function Cu(e) { if (!ku(e)) return !1; var t = Vi(e); return t == X || t == J || t == W || t == re } function Mu(e) { return "number" == typeof e && e == Xu(e) } function Ou(e) { return "number" == typeof e && e > -1 && e % 1 == 0 && e <= H } function ku(e) { var t = typeof e; return null != e && ("object" == t || "function" == t) } function Su(e) { return null != e && "object" == typeof e } var Tu = mn ? Jn(mn) : Xi; function Au(e, t) { return e === t || Ji(e, t, Ga(t)) } function Lu(e, t, n) { return n = "function" == typeof n ? n : o, Ji(e, t, Ga(t), n) } function ju(e) { return Du(e) && e != +e } function zu(e) { if (vs(e)) throw new i(c); return Qi(e) } function Eu(e) { return null === e } function Pu(e) { return null == e } function Du(e) { return "number" == typeof e || Su(e) && Vi(e) == Z } function Hu(e) { if (!Su(e) || Vi(e) != te) return !1; var t = Ct(e); if (null === t) return !0; var n = ft.call(t, "constructor") && t.constructor; return "function" == typeof n && n instanceof n && ht.call(n) == mt } var Vu = gn ? Jn(gn) : Zi; function Iu(e) { return Mu(e) && e >= -H && e <= H } var Nu = yn ? Jn(yn) : eo; function Ru(e) { return "string" == typeof e || !uu(e) && Su(e) && Vi(e) == ae } function Fu(e) { return "symbol" == typeof e || Su(e) && Vi(e) == se } var Yu = bn ? Jn(bn) : to; function $u(e) { return e === o } function Bu(e) { return Su(e) && es(e) == le } function Wu(e) { return Su(e) && Vi(e) == ue } var qu = Aa(oo), Uu = Aa((function (e, t) { return e <= t })); function Ku(e) { if (!e) return []; if (fu(e)) return Ru(e) ? yr(e) : sa(e); if (Tt && e[Tt]) return lr(e[Tt]()); var t = es(e), n = t == Q ? ur : t == oe ? dr : $h; return n(e) } function Gu(e) { if (!e) return 0 === e ? e : 0; if (e = Qu(e), e === D || e === -D) { var t = e < 0 ? -1 : 1; return t * V } return e === e ? e : 0 } function Xu(e) { var t = Gu(e), n = t % 1; return t === t ? n ? t - n : t : 0 } function Ju(e) { return e ? gi(Xu(e), 0, N) : 0 } function Qu(e) { if ("number" == typeof e) return e; if (Fu(e)) return I; if (ku(e)) { var t = "function" == typeof e.valueOf ? e.valueOf() : e; e = ku(t) ? t + "" : t } if ("string" != typeof e) return 0 === e ? e : +e; e = e.replace(Ie, ""); var n = Ge.test(e); return n || Je.test(e) ? on(e.slice(2), n ? 2 : 8) : Ke.test(e) ? I : +e } function Zu(e) { return ca(e, Oh(e)) } function eh(e) { return e ? gi(Xu(e), -H, H) : 0 === e ? e : 0 } function th(e) { return null == e ? "" : Do(e) } var nh = fa((function (e, t) { if (ms(t) || fu(t)) ca(t, Mh(t), e); else for (var n in t) ft.call(t, n) && ui(e, n, t[n]) })), rh = fa((function (e, t) { ca(t, Oh(t), e) })), ih = fa((function (e, t, n, r) { ca(t, Oh(t), e, r) })), oh = fa((function (e, t, n, r) { ca(t, Mh(t), e, r) })), ah = Fa(mi); function sh(e, t) { var n = Or(e); return null == t ? n : di(n, t) } var ch = _o((function (e) { return e.push(o, Da), _n(ih, o, e) })), lh = _o((function (e) { return e.push(o, Ha), _n(Ah, o, e) })); function uh(e, t) { return In(e, Ua(t, 3), zi) } function hh(e, t) { return In(e, Ua(t, 3), Ei) } function fh(e, t) { return null == e ? e : Li(e, Ua(t, 3), Oh) } function dh(e, t) { return null == e ? e : ji(e, Ua(t, 3), Oh) } function ph(e, t) { return e && zi(e, Ua(t, 3)) } function vh(e, t) { return e && Ei(e, Ua(t, 3)) } function mh(e) { return null == e ? [] : Pi(e, Mh(e)) } function gh(e) { return null == e ? [] : Pi(e, Oh(e)) } function yh(e, t, n) { var r = null == e ? o : Di(e, t); return r === o ? n : r } function bh(e, t) { return null != e && rs(e, t, Ni) } function xh(e, t) { return null != e && rs(e, t, Ri) } var wh = Ca((function (e, t, n) { e[t] = n }), Af(Ef)), _h = Ca((function (e, t, n) { ft.call(e, t) ? e[t].push(n) : e[t] = [n] }), Ua), Ch = _o(Bi); function Mh(e) { return fu(e) ? oi(e) : ro(e) } function Oh(e) { return fu(e) ? oi(e, !0) : io(e) } function kh(e, t) { var n = {}; return t = Ua(t, 3), zi(e, (function (e, r, i) { vi(n, t(e, r, i), e) })), n } function Sh(e, t) { var n = {}; return t = Ua(t, 3), zi(e, (function (e, r, i) { vi(n, r, t(e, r, i)) })), n } var Th = fa((function (e, t, n) { lo(e, t, n) })), Ah = fa((function (e, t, n, r) { lo(e, t, n, r) })), Lh = Fa((function (e, t) { var n = {}; if (null == e) return n; var r = !1; t = Ln(t, (function (t) { return t = Wo(t, e), r || (r = t.length > 1), t })), ca(e, $a(e), n), r && (n = yi(n, d | p | v, Va)); var i = t.length; while (i--) Vo(n, t[i]); return n })); function jh(e, t) { return Eh(e, $l(Ua(t))) } var zh = Fa((function (e, t) { return null == e ? {} : po(e, t) })); function Eh(e, t) { if (null == e) return {}; var n = Ln($a(e), (function (e) { return [e] })); return t = Ua(t), vo(e, n, (function (e, n) { return t(e, n[0]) })) } function Ph(e, t, n) { t = Wo(t, e); var r = -1, i = t.length; i || (i = 1, e = o); while (++r < i) { var a = null == e ? o : e[Es(t[r])]; a === o && (r = i, a = n), e = Cu(a) ? a.call(e) : a } return e } function Dh(e, t, n) { return null == e ? e : Oo(e, t, n) } function Hh(e, t, n, r) { return r = "function" == typeof r ? r : o, null == e ? e : Oo(e, t, n, r) } var Vh = Ea(Mh), Ih = Ea(Oh); function Nh(e, t, n) { var r = uu(e), i = r || vu(e) || Yu(e); if (t = Ua(t, 4), null == n) { var o = e && e.constructor; n = i ? r ? new o : [] : ku(e) && Cu(o) ? Or(Ct(e)) : {} } return (i ? Mn : zi)(e, (function (e, r, i) { return t(n, e, r, i) })), n } function Rh(e, t) { return null == e || Vo(e, t) } function Fh(e, t, n) { return null == e ? e : Io(e, t, Bo(n)) } function Yh(e, t, n, r) { return r = "function" == typeof r ? r : o, null == e ? e : Io(e, t, Bo(n), r) } function $h(e) { return null == e ? [] : Qn(e, Mh(e)) } function Bh(e) { return null == e ? [] : Qn(e, Oh(e)) } function Wh(e, t, n) { return n === o && (n = t, t = o), n !== o && (n = Qu(n), n = n === n ? n : 0), t !== o && (t = Qu(t), t = t === t ? t : 0), gi(Qu(e), t, n) } function qh(e, t, n) { return t = Gu(t), n === o ? (n = t, t = 0) : n = Gu(n), e = Qu(e), Fi(e, t, n) } function Uh(e, t, n) { if (n && "boolean" != typeof n && us(e, t, n) && (t = n = o), n === o && ("boolean" == typeof t ? (n = t, t = o) : "boolean" == typeof e && (n = e, e = o)), e === o && t === o ? (e = 0, t = 1) : (e = Gu(e), t === o ? (t = e, e = 0) : t = Gu(t)), e > t) { var r = e; e = t, t = r } if (n || e % 1 || t % 1) { var i = Ut(); return Yt(e + i * (t - e + rn("1e-" + ((i + "").length - 1))), t) } return bo(e, t) } var Kh = ga((function (e, t, n) { return t = t.toLowerCase(), e + (n ? Gh(t) : t) })); function Gh(e) { return Cf(th(e).toLowerCase()) } function Xh(e) { return e = th(e), e && e.replace(Ze, rr).replace(Bt, "") } function Jh(e, t, n) { e = th(e), t = Do(t); var r = e.length; n = n === o ? r : gi(Xu(n), 0, r); var i = n; return n -= t.length, n >= 0 && e.slice(n, i) == t } function Qh(e) { return e = th(e), e && Te.test(e) ? e.replace(ke, ir) : e } function Zh(e) { return e = th(e), e && Ve.test(e) ? e.replace(He, "\\$&") : e } var ef = ga((function (e, t, n) { return e + (n ? "-" : "") + t.toLowerCase() })), tf = ga((function (e, t, n) { return e + (n ? " " : "") + t.toLowerCase() })), nf = ma("toLowerCase"); function rf(e, t, n) { e = th(e), t = Xu(t); var r = t ? gr(e) : 0; if (!t || r >= t) return e; var i = (t - r) / 2; return ka(Dt(i), n) + e + ka(Pt(i), n) } function of(e, t, n) { e = th(e), t = Xu(t); var r = t ? gr(e) : 0; return t && r < t ? e + ka(t - r, n) : e } function af(e, t, n) { e = th(e), t = Xu(t); var r = t ? gr(e) : 0; return t && r < t ? ka(t - r, n) + e : e } function sf(e, t, n) { return n || null == t ? t = 0 : t && (t = +t), qt(th(e).replace(Ne, ""), t || 0) } function cf(e, t, n) { return t = (n ? us(e, t, n) : t === o) ? 1 : Xu(t), wo(th(e), t) } function lf() { var e = arguments, t = th(e[0]); return e.length < 3 ? t : t.replace(e[1], e[2]) } var uf = ga((function (e, t, n) { return e + (n ? "_" : "") + t.toLowerCase() })); function hf(e, t, n) { return n && "number" != typeof n && us(e, t, n) && (t = n = o), n = n === o ? N : n >>> 0, n ? (e = th(e), e && ("string" == typeof t || null != t && !Vu(t)) && (t = Do(t), !t && sr(e)) ? Uo(yr(e), 0, n) : e.split(t, n)) : [] } var ff = ga((function (e, t, n) { return e + (n ? " " : "") + Cf(t) })); function df(e, t, n) { return e = th(e), n = null == n ? 0 : gi(Xu(n), 0, e.length), t = Do(t), e.slice(n, n + t.length) == t } function pf(e, t, n) { var r = Cr.templateSettings; n && us(e, t, n) && (t = o), e = th(e), t = ih({}, t, r, Da); var i, a, s = ih({}, t.imports, r.imports, Da), c = Mh(s), l = Qn(s, c), u = 0, h = t.interpolate || et, f = "__p += '", d = it((t.escape || et).source + "|" + h.source + "|" + (h === je ? qe : et).source + "|" + (t.evaluate || et).source + "|$", "g"), p = "//# sourceURL=" + ("sourceURL" in t ? t.sourceURL : "lodash.templateSources[" + ++Xt + "]") + "\n"; e.replace(d, (function (t, n, r, o, s, c) { return r || (r = o), f += e.slice(u, c).replace(tt, or), n && (i = !0, f += "' +\n__e(" + n + ") +\n'"), s && (a = !0, f += "';\n" + s + ";\n__p += '"), r && (f += "' +\n((__t = (" + r + ")) == null ? '' : __t) +\n'"), u = c + t.length, t })), f += "';\n"; var v = t.variable; v || (f = "with (obj) {\n" + f + "\n}\n"), f = (a ? f.replace(_e, "") : f).replace(Ce, "$1").replace(Me, "$1;"), f = "function(" + (v || "obj") + ") {\n" + (v ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (i ? ", __e = _.escape" : "") + (a ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + f + "return __p\n}"; var m = Of((function () { return Be(c, p + "return " + f).apply(o, l) })); if (m.source = f, wu(m)) throw m; return m } function vf(e) { return th(e).toLowerCase() } function mf(e) { return th(e).toUpperCase() } function gf(e, t, n) { if (e = th(e), e && (n || t === o)) return e.replace(Ie, ""); if (!e || !(t = Do(t))) return e; var r = yr(e), i = yr(t), a = er(r, i), s = tr(r, i) + 1; return Uo(r, a, s).join("") } function yf(e, t, n) { if (e = th(e), e && (n || t === o)) return e.replace(Re, ""); if (!e || !(t = Do(t))) return e; var r = yr(e), i = tr(r, yr(t)) + 1; return Uo(r, 0, i).join("") } function bf(e, t, n) { if (e = th(e), e && (n || t === o)) return e.replace(Ne, ""); if (!e || !(t = Do(t))) return e; var r = yr(e), i = er(r, yr(t)); return Uo(r, i).join("") } function xf(e, t) { var n = T, r = A; if (ku(t)) { var i = "separator" in t ? t.separator : i; n = "length" in t ? Xu(t.length) : n, r = "omission" in t ? Do(t.omission) : r } e = th(e); var a = e.length; if (sr(e)) { var s = yr(e); a = s.length } if (n >= a) return e; var c = n - gr(r); if (c < 1) return r; var l = s ? Uo(s, 0, c).join("") : e.slice(0, c); if (i === o) return l + r; if (s && (c += l.length - c), Vu(i)) { if (e.slice(c).search(i)) { var u, h = l; i.global || (i = it(i.source, th(Ue.exec(i)) + "g")), i.lastIndex = 0; while (u = i.exec(h)) var f = u.index; l = l.slice(0, f === o ? c : f) } } else if (e.indexOf(Do(i), c) != c) { var d = l.lastIndexOf(i); d > -1 && (l = l.slice(0, d)) } return l + r } function wf(e) { return e = th(e), e && Se.test(e) ? e.replace(Oe, br) : e } var _f = ga((function (e, t, n) { return e + (n ? " " : "") + t.toUpperCase() })), Cf = ma("toUpperCase"); function Mf(e, t, n) { return e = th(e), t = n ? o : t, t === o ? cr(e) ? _r(e) : Vn(e) : e.match(t) || [] } var Of = _o((function (e, t) { try { return _n(e, o, t) } catch (n) { return wu(n) ? n : new i(n) } })), kf = Fa((function (e, t) { return Mn(t, (function (t) { t = Es(t), vi(e, t, Pl(e[t], e)) })), e })); function Sf(e) { var t = null == e ? 0 : e.length, n = Ua(); return e = t ? Ln(e, (function (e) { if ("function" != typeof e[1]) throw new at(l); return [n(e[0]), e[1]] })) : [], _o((function (n) { var r = -1; while (++r < t) { var i = e[r]; if (_n(i[0], this, n)) return _n(i[1], this, n) } })) } function Tf(e) { return bi(yi(e, d)) } function Af(e) { return function () { return e } } function Lf(e, t) { return null == e || e !== e ? t : e } var jf = wa(), zf = wa(!0); function Ef(e) { return e } function Pf(e) { return no("function" == typeof e ? e : yi(e, d)) } function Df(e) { return so(yi(e, d)) } function Hf(e, t) { return co(e, yi(t, d)) } var Vf = _o((function (e, t) { return function (n) { return Bi(n, e, t) } })), If = _o((function (e, t) { return function (n) { return Bi(e, n, t) } })); function Nf(e, t, n) { var r = Mh(t), i = Pi(t, r); null != n || ku(t) && (i.length || !r.length) || (n = t, t = e, e = this, i = Pi(t, Mh(t))); var o = !(ku(n) && "chain" in n) || !!n.chain, a = Cu(e); return Mn(i, (function (n) { var r = t[n]; e[n] = r, a && (e.prototype[n] = function () { var t = this.__chain__; if (o || t) { var n = e(this.__wrapped__), i = n.__actions__ = sa(this.__actions__); return i.push({ func: r, args: arguments, thisArg: e }), n.__chain__ = t, n } return r.apply(e, jn([this.value()], arguments)) }) })), e } function Rf() { return cn._ === this && (cn._ = gt), this } function Ff() { } function Yf(e) { return e = Xu(e), _o((function (t) { return ho(t, e) })) } var $f = Oa(Ln), Bf = Oa(kn), Wf = Oa(Pn); function qf(e) { return hs(e) ? Bn(Es(e)) : mo(e) } function Uf(e) { return function (t) { return null == e ? o : Di(e, t) } } var Kf = Ta(), Gf = Ta(!0); function Xf() { return [] } function Jf() { return !1 } function Qf() { return {} } function Zf() { return "" } function ed() { return !0 } function td(e, t) { if (e = Xu(e), e < 1 || e > H) return []; var n = N, r = Yt(e, N); t = Ua(t), e -= N; var i = Gn(r, t); while (++n < e) t(n); return i } function nd(e) { return uu(e) ? Ln(e, Es) : Fu(e) ? [e] : sa(zs(th(e))) } function rd(e) { var t = ++dt; return th(e) + t } var id = Ma((function (e, t) { return e + t }), 0), od = ja("ceil"), ad = Ma((function (e, t) { return e / t }), 1), sd = ja("floor"); function cd(e) { return e && e.length ? ki(e, Ef, Ii) : o } function ld(e, t) { return e && e.length ? ki(e, Ua(t, 2), Ii) : o } function ud(e) { return $n(e, Ef) } function hd(e, t) { return $n(e, Ua(t, 2)) } function fd(e) { return e && e.length ? ki(e, Ef, oo) : o } function dd(e, t) { return e && e.length ? ki(e, Ua(t, 2), oo) : o } var pd = Ma((function (e, t) { return e * t }), 1), vd = ja("round"), md = Ma((function (e, t) { return e - t }), 0); function gd(e) { return e && e.length ? Kn(e, Ef) : 0 } function yd(e, t) { return e && e.length ? Kn(e, Ua(t, 2)) : 0 } return Cr.after = jl, Cr.ary = zl, Cr.assign = nh, Cr.assignIn = rh, Cr.assignInWith = ih, Cr.assignWith = oh, Cr.at = ah, Cr.before = El, Cr.bind = Pl, Cr.bindAll = kf, Cr.bindKey = Dl, Cr.castArray = eu, Cr.chain = Uc, Cr.chunk = Vs, Cr.compact = Is, Cr.concat = Ns, Cr.cond = Sf, Cr.conforms = Tf, Cr.constant = Af, Cr.countBy = il, Cr.create = sh, Cr.curry = Hl, Cr.curryRight = Vl, Cr.debounce = Il, Cr.defaults = ch, Cr.defaultsDeep = lh, Cr.defer = Nl, Cr.delay = Rl, Cr.difference = Rs, Cr.differenceBy = Fs, Cr.differenceWith = Ys, Cr.drop = $s, Cr.dropRight = Bs, Cr.dropRightWhile = Ws, Cr.dropWhile = qs, Cr.fill = Us, Cr.filter = al, Cr.flatMap = ll, Cr.flatMapDeep = ul, Cr.flatMapDepth = hl, Cr.flatten = Xs, Cr.flattenDeep = Js, Cr.flattenDepth = Qs, Cr.flip = Fl, Cr.flow = jf, Cr.flowRight = zf, Cr.fromPairs = Zs, Cr.functions = mh, Cr.functionsIn = gh, Cr.groupBy = pl, Cr.initial = nc, Cr.intersection = rc, Cr.intersectionBy = ic, Cr.intersectionWith = oc, Cr.invert = wh, Cr.invertBy = _h, Cr.invokeMap = ml, Cr.iteratee = Pf, Cr.keyBy = gl, Cr.keys = Mh, Cr.keysIn = Oh, Cr.map = yl, Cr.mapKeys = kh, Cr.mapValues = Sh, Cr.matches = Df, Cr.matchesProperty = Hf, Cr.memoize = Yl, Cr.merge = Th, Cr.mergeWith = Ah, Cr.method = Vf, Cr.methodOf = If, Cr.mixin = Nf, Cr.negate = $l, Cr.nthArg = Yf, Cr.omit = Lh, Cr.omitBy = jh, Cr.once = Bl, Cr.orderBy = bl, Cr.over = $f, Cr.overArgs = Wl, Cr.overEvery = Bf, Cr.overSome = Wf, Cr.partial = ql, Cr.partialRight = Ul, Cr.partition = xl, Cr.pick = zh, Cr.pickBy = Eh, Cr.property = qf, Cr.propertyOf = Uf, Cr.pull = uc, Cr.pullAll = hc, Cr.pullAllBy = fc, Cr.pullAllWith = dc, Cr.pullAt = pc, Cr.range = Kf, Cr.rangeRight = Gf, Cr.rearg = Kl, Cr.reject = Cl, Cr.remove = vc, Cr.rest = Gl, Cr.reverse = mc, Cr.sampleSize = Ol, Cr.set = Dh, Cr.setWith = Hh, Cr.shuffle = kl, Cr.slice = gc, Cr.sortBy = Al, Cr.sortedUniq = Mc, Cr.sortedUniqBy = Oc, Cr.split = hf, Cr.spread = Xl, Cr.tail = kc, Cr.take = Sc, Cr.takeRight = Tc, Cr.takeRightWhile = Ac, Cr.takeWhile = Lc, Cr.tap = Kc, Cr.throttle = Jl, Cr.thru = Gc, Cr.toArray = Ku, Cr.toPairs = Vh, Cr.toPairsIn = Ih, Cr.toPath = nd, Cr.toPlainObject = Zu, Cr.transform = Nh, Cr.unary = Ql, Cr.union = jc, Cr.unionBy = zc, Cr.unionWith = Ec, Cr.uniq = Pc, Cr.uniqBy = Dc, Cr.uniqWith = Hc, Cr.unset = Rh, Cr.unzip = Vc, Cr.unzipWith = Ic, Cr.update = Fh, Cr.updateWith = Yh, Cr.values = $h, Cr.valuesIn = Bh, Cr.without = Nc, Cr.words = Mf, Cr.wrap = Zl, Cr.xor = Rc, Cr.xorBy = Fc, Cr.xorWith = Yc, Cr.zip = $c, Cr.zipObject = Bc, Cr.zipObjectDeep = Wc, Cr.zipWith = qc, Cr.entries = Vh, Cr.entriesIn = Ih, Cr.extend = rh, Cr.extendWith = ih, Nf(Cr, Cr), Cr.add = id, Cr.attempt = Of, Cr.camelCase = Kh, Cr.capitalize = Gh, Cr.ceil = od, Cr.clamp = Wh, Cr.clone = tu, Cr.cloneDeep = ru, Cr.cloneDeepWith = iu, Cr.cloneWith = nu, Cr.conformsTo = ou, Cr.deburr = Xh, Cr.defaultTo = Lf, Cr.divide = ad, Cr.endsWith = Jh, Cr.eq = au, Cr.escape = Qh, Cr.escapeRegExp = Zh, Cr.every = ol, Cr.find = sl, Cr.findIndex = Ks, Cr.findKey = uh, Cr.findLast = cl, Cr.findLastIndex = Gs, Cr.findLastKey = hh, Cr.floor = sd, Cr.forEach = fl, Cr.forEachRight = dl, Cr.forIn = fh, Cr.forInRight = dh, Cr.forOwn = ph, Cr.forOwnRight = vh, Cr.get = yh, Cr.gt = su, Cr.gte = cu, Cr.has = bh, Cr.hasIn = xh, Cr.head = ec, Cr.identity = Ef, Cr.includes = vl, Cr.indexOf = tc, Cr.inRange = qh, Cr.invoke = Ch, Cr.isArguments = lu, Cr.isArray = uu, Cr.isArrayBuffer = hu, Cr.isArrayLike = fu, Cr.isArrayLikeObject = du, Cr.isBoolean = pu, Cr.isBuffer = vu, Cr.isDate = mu, Cr.isElement = gu, Cr.isEmpty = yu, Cr.isEqual = bu, Cr.isEqualWith = xu, Cr.isError = wu, Cr.isFinite = _u, Cr.isFunction = Cu, Cr.isInteger = Mu, Cr.isLength = Ou, Cr.isMap = Tu, Cr.isMatch = Au, Cr.isMatchWith = Lu, Cr.isNaN = ju, Cr.isNative = zu, Cr.isNil = Pu, Cr.isNull = Eu, Cr.isNumber = Du, Cr.isObject = ku, Cr.isObjectLike = Su, Cr.isPlainObject = Hu, Cr.isRegExp = Vu, Cr.isSafeInteger = Iu, Cr.isSet = Nu, Cr.isString = Ru, Cr.isSymbol = Fu, Cr.isTypedArray = Yu, Cr.isUndefined = $u, Cr.isWeakMap = Bu, Cr.isWeakSet = Wu, Cr.join = ac, Cr.kebabCase = ef, Cr.last = sc, Cr.lastIndexOf = cc, Cr.lowerCase = tf, Cr.lowerFirst = nf, Cr.lt = qu, Cr.lte = Uu, Cr.max = cd, Cr.maxBy = ld, Cr.mean = ud, Cr.meanBy = hd, Cr.min = fd, Cr.minBy = dd, Cr.stubArray = Xf, Cr.stubFalse = Jf, Cr.stubObject = Qf, Cr.stubString = Zf, Cr.stubTrue = ed, Cr.multiply = pd, Cr.nth = lc, Cr.noConflict = Rf, Cr.noop = Ff, Cr.now = Ll, Cr.pad = rf, Cr.padEnd = of, Cr.padStart = af, Cr.parseInt = sf, Cr.random = Uh, Cr.reduce = wl, Cr.reduceRight = _l, Cr.repeat = cf, Cr.replace = lf, Cr.result = Ph, Cr.round = vd, Cr.runInContext = e, Cr.sample = Ml, Cr.size = Sl, Cr.snakeCase = uf, Cr.some = Tl, Cr.sortedIndex = yc, Cr.sortedIndexBy = bc, Cr.sortedIndexOf = xc, Cr.sortedLastIndex = wc, Cr.sortedLastIndexBy = _c, Cr.sortedLastIndexOf = Cc, Cr.startCase = ff, Cr.startsWith = df, Cr.subtract = md, Cr.sum = gd, Cr.sumBy = yd, Cr.template = pf, Cr.times = td, Cr.toFinite = Gu, Cr.toInteger = Xu, Cr.toLength = Ju, Cr.toLower = vf, Cr.toNumber = Qu, Cr.toSafeInteger = eh, Cr.toString = th, Cr.toUpper = mf, Cr.trim = gf, Cr.trimEnd = yf, Cr.trimStart = bf, Cr.truncate = xf, Cr.unescape = wf, Cr.uniqueId = rd, Cr.upperCase = _f, Cr.upperFirst = Cf, Cr.each = fl, Cr.eachRight = dl, Cr.first = ec, Nf(Cr, function () { var e = {}; return zi(Cr, (function (t, n) { ft.call(Cr.prototype, n) || (e[n] = t) })), e }(), { chain: !1 }), Cr.VERSION = a, Mn(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], (function (e) { Cr[e].placeholder = Cr })), Mn(["drop", "take"], (function (e, t) { Tr.prototype[e] = function (n) { n = n === o ? 1 : Ft(Xu(n), 0); var r = this.__filtered__ && !t ? new Tr(this) : this.clone(); return r.__filtered__ ? r.__takeCount__ = Yt(n, r.__takeCount__) : r.__views__.push({ size: Yt(n, N), type: e + (r.__dir__ < 0 ? "Right" : "") }), r }, Tr.prototype[e + "Right"] = function (t) { return this.reverse()[e](t).reverse() } })), Mn(["filter", "map", "takeWhile"], (function (e, t) { var n = t + 1, r = n == z || n == P; Tr.prototype[e] = function (e) { var t = this.clone(); return t.__iteratees__.push({ iteratee: Ua(e, 3), type: n }), t.__filtered__ = t.__filtered__ || r, t } })), Mn(["head", "last"], (function (e, t) { var n = "take" + (t ? "Right" : ""); Tr.prototype[e] = function () { return this[n](1).value()[0] } })), Mn(["initial", "tail"], (function (e, t) { var n = "drop" + (t ? "" : "Right"); Tr.prototype[e] = function () { return this.__filtered__ ? new Tr(this) : this[n](1) } })), Tr.prototype.compact = function () { return this.filter(Ef) }, Tr.prototype.find = function (e) { return this.filter(e).head() }, Tr.prototype.findLast = function (e) { return this.reverse().find(e) }, Tr.prototype.invokeMap = _o((function (e, t) { return "function" == typeof e ? new Tr(this) : this.map((function (n) { return Bi(n, e, t) })) })), Tr.prototype.reject = function (e) { return this.filter($l(Ua(e))) }, Tr.prototype.slice = function (e, t) { e = Xu(e); var n = this; return n.__filtered__ && (e > 0 || t < 0) ? new Tr(n) : (e < 0 ? n = n.takeRight(-e) : e && (n = n.drop(e)), t !== o && (t = Xu(t), n = t < 0 ? n.dropRight(-t) : n.take(t - e)), n) }, Tr.prototype.takeRightWhile = function (e) { return this.reverse().takeWhile(e).reverse() }, Tr.prototype.toArray = function () { return this.take(N) }, zi(Tr.prototype, (function (e, t) { var n = /^(?:filter|find|map|reject)|While$/.test(t), r = /^(?:head|last)$/.test(t), i = Cr[r ? "take" + ("last" == t ? "Right" : "") : t], a = r || /^find/.test(t); i && (Cr.prototype[t] = function () { var t = this.__wrapped__, s = r ? [1] : arguments, c = t instanceof Tr, l = s[0], u = c || uu(t), h = function (e) { var t = i.apply(Cr, jn([e], s)); return r && f ? t[0] : t }; u && n && "function" == typeof l && 1 != l.length && (c = u = !1); var f = this.__chain__, d = !!this.__actions__.length, p = a && !f, v = c && !d; if (!a && u) { t = v ? t : new Tr(this); var m = e.apply(t, s); return m.__actions__.push({ func: Gc, args: [h], thisArg: o }), new Sr(m, f) } return p && v ? e.apply(this, s) : (m = this.thru(h), p ? r ? m.value()[0] : m.value() : m) }) })), Mn(["pop", "push", "shift", "sort", "splice", "unshift"], (function (e) { var t = st[e], n = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru", r = /^(?:pop|shift)$/.test(e); Cr.prototype[e] = function () { var e = arguments; if (r && !this.__chain__) { var i = this.value(); return t.apply(uu(i) ? i : [], e) } return this[n]((function (n) { return t.apply(uu(n) ? n : [], e) })) } })), zi(Tr.prototype, (function (e, t) { var n = Cr[t]; if (n) { var r = n.name + "", i = un[r] || (un[r] = []); i.push({ name: t, func: n }) } })), un[_a(o, b).name] = [{ name: "wrapper", func: o }], Tr.prototype.clone = Ar, Tr.prototype.reverse = Lr, Tr.prototype.value = jr, Cr.prototype.at = Xc, Cr.prototype.chain = Jc, Cr.prototype.commit = Qc, Cr.prototype.next = Zc, Cr.prototype.plant = tl, Cr.prototype.reverse = nl, Cr.prototype.toJSON = Cr.prototype.valueOf = Cr.prototype.value = rl, Cr.prototype.first = Cr.prototype.head, Tt && (Cr.prototype[Tt] = el), Cr }, Mr = Cr(); cn._ = Mr, i = function () { return Mr }.call(t, n, t, r), i === o || (r.exports = i) }).call(this)
+                }).call(t, n(435), n(436)(e))
+            }, function (e, t, n) { var r = n(13), i = n(171); e.exports = a; var o = r.constant(1); function a(e, t, n, r) { return s(e, String(t), n || o, r || function (t) { return e.outEdges(t) }) } function s(e, t, n, r) { var o, a, s = {}, c = new i, l = function (e) { var t = e.v !== o ? e.v : e.w, r = s[t], i = n(e), l = a.distance + i; if (i < 0) throw new Error("dijkstra does not allow negative edge weights. Bad edge: " + e + " Weight: " + i); l < r.distance && (r.distance = l, r.predecessor = o, c.decrease(t, l)) }; e.nodes().forEach((function (e) { var n = e === t ? 0 : Number.POSITIVE_INFINITY; s[e] = { distance: n }, c.add(e, n) })); while (c.size() > 0) { if (o = c.removeMin(), a = s[o], a.distance === Number.POSITIVE_INFINITY) break; r(o).forEach(l) } return s } }, function (e, t, n) { var r = n(13); function i() { this._arr = [], this._keyIndices = {} } e.exports = i, i.prototype.size = function () { return this._arr.length }, i.prototype.keys = function () { return this._arr.map((function (e) { return e.key })) }, i.prototype.has = function (e) { return r.has(this._keyIndices, e) }, i.prototype.priority = function (e) { var t = this._keyIndices[e]; if (void 0 !== t) return this._arr[t].priority }, i.prototype.min = function () { if (0 === this.size()) throw new Error("Queue underflow"); return this._arr[0].key }, i.prototype.add = function (e, t) { var n = this._keyIndices; if (e = String(e), !r.has(n, e)) { var i = this._arr, o = i.length; return n[e] = o, i.push({ key: e, priority: t }), this._decrease(o), !0 } return !1 }, i.prototype.removeMin = function () { this._swap(0, this._arr.length - 1); var e = this._arr.pop(); return delete this._keyIndices[e.key], this._heapify(0), e.key }, i.prototype.decrease = function (e, t) { var n = this._keyIndices[e]; if (t > this._arr[n].priority) throw new Error("New priority is greater than current priority. Key: " + e + " Old: " + this._arr[n].priority + " New: " + t); this._arr[n].priority = t, this._decrease(n) }, i.prototype._heapify = function (e) { var t = this._arr, n = 2 * e, r = n + 1, i = e; n < t.length && (i = t[n].priority < t[i].priority ? n : i, r < t.length && (i = t[r].priority < t[i].priority ? r : i), i !== e && (this._swap(e, i), this._heapify(i))) }, i.prototype._decrease = function (e) { var t, n = this._arr, r = n[e].priority; while (0 !== e) { if (t = e >> 1, n[t].priority < r) break; this._swap(e, t), e = t } }, i.prototype._swap = function (e, t) { var n = this._arr, r = this._keyIndices, i = n[e], o = n[t]; n[e] = o, n[t] = i, r[o.key] = e, r[i.key] = t } }, function (e, t, n) { var r = n(13); function i(e) { var t = 0, n = [], i = {}, o = []; function a(s) { var c = i[s] = { onStack: !0, lowlink: t, index: t++ }; if (n.push(s), e.successors(s).forEach((function (e) { r.has(i, e) ? i[e].onStack && (c.lowlink = Math.min(c.lowlink, i[e].index)) : (a(e), c.lowlink = Math.min(c.lowlink, i[e].lowlink)) })), c.lowlink === c.index) { var l, u = []; do { l = n.pop(), i[l].onStack = !1, u.push(l) } while (s !== l); o.push(u) } } return e.nodes().forEach((function (e) { r.has(i, e) || a(e) })), o } e.exports = i }, function (e, t, n) { var r = n(13); function i(e) { var t = {}, n = {}, i = []; function a(s) { if (r.has(n, s)) throw new o; r.has(t, s) || (n[s] = !0, t[s] = !0, r.each(e.predecessors(s), a), delete n[s], i.push(s)) } if (r.each(e.sinks(), a), r.size(t) !== e.nodeCount()) throw new o; return i } function o() { } e.exports = i, i.CycleException = o }, function (e, t, n) { var r = n(13); function i(e, t, n) { r.isArray(t) || (t = [t]); var i = (e.isDirected() ? e.successors : e.neighbors).bind(e), a = [], s = {}; return r.each(t, (function (t) { if (!e.hasNode(t)) throw new Error("Graph does not have node: " + t); o(e, t, "post" === n, s, i, a) })), a } function o(e, t, n, i, a, s) { r.has(i, t) || (i[t] = !0, n || s.push(t), r.each(a(t), (function (t) { o(e, t, n, i, a, s) })), n && s.push(t)) } e.exports = i }, function (e, t, n) { "use strict"; var r = n(8), i = n(16).Graph, o = n(59).slack; function a(e) { var t, n, r = new i({ directed: !1 }), a = e.nodes()[0], u = e.nodeCount(); r.setNode(a, {}); while (s(r, e) < u) t = c(r, e), n = r.hasNode(t.v) ? o(e, t) : -o(e, t), l(r, e, n); return r } function s(e, t) { function n(i) { r.forEach(t.nodeEdges(i), (function (r) { var a = r.v, s = i === a ? r.w : a; e.hasNode(s) || o(t, r) || (e.setNode(s, {}), e.setEdge(i, s, {}), n(s)) })) } return r.forEach(e.nodes(), n), e.nodeCount() } function c(e, t) { return r.minBy(t.edges(), (function (n) { if (e.hasNode(n.v) !== e.hasNode(n.w)) return o(t, n) })) } function l(e, t, n) { r.forEach(e.nodes(), (function (e) { t.node(e).rank += n })) } e.exports = a }, function (e, t, n) { "use strict"; t["c"] = o, t["d"] = a, t["b"] = s, t["a"] = c; var r = n(14); function i(e) { return e.target.depth } function o(e) { return e.depth } function a(e, t) { return t - 1 - e.height } function s(e, t) { return e.sourceLinks.length ? e.depth : t - 1 } function c(e) { return e.targetLinks.length ? e.depth : e.sourceLinks.length ? Object(r["min"])(e.sourceLinks, i) - 1 : 0 } }, function (e, t, n) { "use strict"; var r = n(33), i = n(27), o = n(60), a = n(95), s = n(96); t["a"] = function () { var e = s["a"], t = null, n = Object(i["a"])(0), c = s["b"], l = Object(i["a"])(!0), u = null, h = o["a"], f = null; function d(i) { var o, a, s, d, p, v = i.length, m = !1, g = new Array(v), y = new Array(v); for (null == u && (f = h(p = Object(r["path"])())), o = 0; o <= v; ++o) { if (!(o < v && l(d = i[o], o, i)) === m) if (m = !m) a = o, f.areaStart(), f.lineStart(); else { for (f.lineEnd(), f.lineStart(), s = o - 1; s >= a; --s)f.point(g[s], y[s]); f.lineEnd(), f.areaEnd() } m && (g[o] = +e(d, o, i), y[o] = +n(d, o, i), f.point(t ? +t(d, o, i) : g[o], c ? +c(d, o, i) : y[o])) } if (p) return f = null, p + "" || null } function p() { return Object(a["a"])().defined(l).curve(h).context(u) } return d.x = function (n) { return arguments.length ? (e = "function" === typeof n ? n : Object(i["a"])(+n), t = null, d) : e }, d.x0 = function (t) { return arguments.length ? (e = "function" === typeof t ? t : Object(i["a"])(+t), d) : e }, d.x1 = function (e) { return arguments.length ? (t = null == e ? null : "function" === typeof e ? e : Object(i["a"])(+e), d) : t }, d.y = function (e) { return arguments.length ? (n = "function" === typeof e ? e : Object(i["a"])(+e), c = null, d) : n }, d.y0 = function (e) { return arguments.length ? (n = "function" === typeof e ? e : Object(i["a"])(+e), d) : n }, d.y1 = function (e) { return arguments.length ? (c = null == e ? null : "function" === typeof e ? e : Object(i["a"])(+e), d) : c }, d.lineX0 = d.lineY0 = function () { return p().x(e).y(n) }, d.lineY1 = function () { return p().x(e).y(c) }, d.lineX1 = function () { return p().x(t).y(n) }, d.defined = function (e) { return arguments.length ? (l = "function" === typeof e ? e : Object(i["a"])(!!e), d) : l }, d.curve = function (e) { return arguments.length ? (h = e, null != u && (f = h(u)), d) : h }, d.context = function (e) { return arguments.length ? (null == e ? u = f = null : f = h(u = e), d) : u }, d } }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return i })), t["b"] = a; var r = n(60), i = a(r["a"]); function o(e) { this._curve = e } function a(e) { function t(t) { return new o(e(t)) } return t._curve = e, t } o.prototype = { areaStart: function () { this._curve.areaStart() }, areaEnd: function () { this._curve.areaEnd() }, lineStart: function () { this._curve.lineStart() }, lineEnd: function () { this._curve.lineEnd() }, point: function (e, t) { this._curve.point(t * Math.sin(e), t * -Math.cos(e)) } } }, function (e, t, n) { "use strict"; t["a"] = i; var r = n(178); n(95); function i(e) { var t = e.curve; return e.angle = e.x, delete e.x, e.radius = e.y, delete e.y, e.curve = function (e) { return arguments.length ? t(Object(r["b"])(e)) : t()._curve }, e } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { return [(t = +t) * Math.cos(e -= Math.PI / 2), t * Math.sin(e)] } }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return r })); var r = Array.prototype.slice }, function (e, t, n) { "use strict"; var r = n(46); t["a"] = { draw: function (e, t) { var n = Math.sqrt(t / r["j"]); e.moveTo(n, 0), e.arc(0, 0, n, 0, r["m"]) } } }, function (e, t, n) { "use strict"; t["a"] = { draw: function (e, t) { var n = Math.sqrt(t / 5) / 2; e.moveTo(-3 * n, -n), e.lineTo(-n, -n), e.lineTo(-n, -3 * n), e.lineTo(n, -3 * n), e.lineTo(n, -n), e.lineTo(3 * n, -n), e.lineTo(3 * n, n), e.lineTo(n, n), e.lineTo(n, 3 * n), e.lineTo(-n, 3 * n), e.lineTo(-n, n), e.lineTo(-3 * n, n), e.closePath() } } }, function (e, t, n) { "use strict"; var r = Math.sqrt(1 / 3), i = 2 * r; t["a"] = { draw: function (e, t) { var n = Math.sqrt(t / i), o = n * r; e.moveTo(0, -n), e.lineTo(o, 0), e.lineTo(0, n), e.lineTo(-o, 0), e.closePath() } } }, function (e, t, n) { "use strict"; var r = n(46), i = .8908130915292852, o = Math.sin(r["j"] / 10) / Math.sin(7 * r["j"] / 10), a = Math.sin(r["m"] / 10) * o, s = -Math.cos(r["m"] / 10) * o; t["a"] = { draw: function (e, t) { var n = Math.sqrt(t * i), o = a * n, c = s * n; e.moveTo(0, -n), e.lineTo(o, c); for (var l = 1; l < 5; ++l) { var u = r["m"] * l / 5, h = Math.cos(u), f = Math.sin(u); e.lineTo(f * n, -h * n), e.lineTo(h * o - f * c, f * o + h * c) } e.closePath() } } }, function (e, t, n) { "use strict"; t["a"] = { draw: function (e, t) { var n = Math.sqrt(t), r = -n / 2; e.rect(r, r, n, n) } } }, function (e, t, n) { "use strict"; var r = Math.sqrt(3); t["a"] = { draw: function (e, t) { var n = -Math.sqrt(t / (3 * r)); e.moveTo(0, 2 * n), e.lineTo(-r * n, -n), e.lineTo(r * n, -n), e.closePath() } } }, function (e, t, n) { "use strict"; var r = -.5, i = Math.sqrt(3) / 2, o = 1 / Math.sqrt(12), a = 3 * (o / 2 + 1); t["a"] = { draw: function (e, t) { var n = Math.sqrt(t / a), s = n / 2, c = n * o, l = s, u = n * o + n, h = -l, f = u; e.moveTo(s, c), e.lineTo(l, u), e.lineTo(h, f), e.lineTo(r * s - i * c, i * s + r * c), e.lineTo(r * l - i * u, i * l + r * u), e.lineTo(r * h - i * f, i * h + r * f), e.lineTo(r * s + i * c, r * c - i * s), e.lineTo(r * l + i * u, r * u - i * l), e.lineTo(r * h + i * f, r * f - i * h), e.closePath() } } }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(61), i = n(63); function o(e, t) { this._context = e, this._k = (1 - t) / 6 } o.prototype = { areaStart: r["a"], areaEnd: r["a"], lineStart: function () { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 1: this._context.moveTo(this._x3, this._y3), this._context.closePath(); break; case 2: this._context.lineTo(this._x3, this._y3), this._context.closePath(); break; case 3: this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5); break } }, point: function (e, t) { switch (e = +e, t = +t, this._point) { case 0: this._point = 1, this._x3 = e, this._y3 = t; break; case 1: this._point = 2, this._context.moveTo(this._x4 = e, this._y4 = t); break; case 2: this._point = 3, this._x5 = e, this._y5 = t; break; default: Object(i["b"])(this, e, t); break }this._x0 = this._x1, this._x1 = this._x2, this._x2 = e, this._y0 = this._y1, this._y1 = this._y2, this._y2 = t } }; (function e(t) { function n(e) { return new o(e, t) } return n.tension = function (t) { return e(+t) }, n })(0) }, function (e, t, n) { "use strict"; t["a"] = i; var r = n(63); function i(e, t) { this._context = e, this._k = (1 - t) / 6 } i.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._point = 0 }, lineEnd: function () { (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (e, t) { switch (e = +e, t = +t, this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3, this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; case 3: this._point = 4; default: Object(r["b"])(this, e, t); break }this._x0 = this._x1, this._x1 = this._x2, this._x2 = e, this._y0 = this._y1, this._y1 = this._y2, this._y2 = t } }; (function e(t) { function n(e) { return new i(e, t) } return n.tension = function (t) { return e(+t) }, n })(0) }, function (e, t, n) { "use strict"; t["c"] = o, t["a"] = s, t["d"] = l, t["b"] = u; var r = n(100), i = n(49); function o(e) { return i["b"][e.index] = { site: e, halfedges: [] } } function a(e, t) { var n = e.site, r = t.left, i = t.right; return n === i && (i = r, r = n), i ? Math.atan2(i[1] - r[1], i[0] - r[0]) : (n === r ? (r = t[1], i = t[0]) : (r = t[0], i = t[1]), Math.atan2(r[0] - i[0], i[1] - r[1])) } function s(e, t) { return t[+(t.left !== e.site)] } function c(e, t) { return t[+(t.left === e.site)] } function l() { for (var e, t, n, r, o = 0, s = i["b"].length; o < s; ++o)if ((e = i["b"][o]) && (r = (t = e.halfedges).length)) { var c = new Array(r), l = new Array(r); for (n = 0; n < r; ++n)c[n] = n, l[n] = a(e, i["e"][t[n]]); for (c.sort((function (e, t) { return l[t] - l[e] })), n = 0; n < r; ++n)l[n] = t[c[n]]; for (n = 0; n < r; ++n)t[n] = l[n] } } function u(e, t, n, o) { var a, l, u, h, f, d, p, v, m, g, y, b, x = i["b"].length, w = !0; for (a = 0; a < x; ++a)if (l = i["b"][a]) { u = l.site, f = l.halfedges, h = f.length; while (h--) i["e"][f[h]] || f.splice(h, 1); h = 0, d = f.length; while (h < d) g = c(l, i["e"][f[h]]), y = g[0], b = g[1], p = s(l, i["e"][f[++h % d]]), v = p[0], m = p[1], (Math.abs(y - v) > i["f"] || Math.abs(b - m) > i["f"]) && (f.splice(h, 0, i["e"].push(Object(r["b"])(u, g, Math.abs(y - e) < i["f"] && o - b > i["f"] ? [e, Math.abs(v - e) < i["f"] ? m : o] : Math.abs(b - o) < i["f"] && n - y > i["f"] ? [Math.abs(m - o) < i["f"] ? v : n, o] : Math.abs(y - n) < i["f"] && b - t > i["f"] ? [n, Math.abs(v - n) < i["f"] ? m : t] : Math.abs(b - t) < i["f"] && y - e > i["f"] ? [Math.abs(m - t) < i["f"] ? v : e, t] : null)) - 1), ++d); d && (w = !1) } if (w) { var _, C, M, O = 1 / 0; for (a = 0, w = null; a < x; ++a)(l = i["b"][a]) && (u = l.site, _ = u[0] - e, C = u[1] - t, M = _ * _ + C * C, M < O && (O = M, w = l)); if (w) { var k = [e, t], S = [e, o], T = [n, o], A = [n, t]; w.halfedges.push(i["e"].push(Object(r["b"])(u = w.site, k, S)) - 1, i["e"].push(Object(r["b"])(u, S, T)) - 1, i["e"].push(Object(r["b"])(u, T, A)) - 1, i["e"].push(Object(r["b"])(u, A, k)) - 1) } } for (a = 0; a < x; ++a)(l = i["b"][a]) && (l.halfedges.length || delete i["b"][a]) } }, function (e, t, n) { "use strict"; n.d(t, "c", (function () { return r })), t["a"] = c, t["b"] = l; var r, i = n(99), o = n(49), a = []; function s() { Object(i["a"])(this), this.x = this.y = this.arc = this.site = this.cy = null } function c(e) { var t = e.P, n = e.N; if (t && n) { var i = t.site, c = e.site, l = n.site; if (i !== l) { var u = c[0], h = c[1], f = i[0] - u, d = i[1] - h, p = l[0] - u, v = l[1] - h, m = 2 * (f * v - d * p); if (!(m >= -o["g"])) { var g = f * f + d * d, y = p * p + v * v, b = (v * g - d * y) / m, x = (f * y - p * g) / m, w = a.pop() || new s; w.arc = e, w.site = c, w.x = b + u, w.y = (w.cy = x + h) + Math.sqrt(b * b + x * x), e.circle = w; var _ = null, C = o["c"]._; while (C) if (w.y < C.y || w.y === C.y && w.x <= C.x) { if (!C.L) { _ = C.P; break } C = C.L } else { if (!C.R) { _ = C; break } C = C.R } o["c"].insert(_, w), _ || (r = w) } } } } function l(e) { var t = e.circle; t && (t.P || (r = t.N), o["c"].remove(t), a.push(t), Object(i["a"])(t), e.circle = null) } }, function (e, t, n) { var r = n(28), i = 18, o = 2 * i, a = i, s = { getId: function (e) { return e.id || e.name }, getHGap: function (e) { return e.hgap || a }, getVGap: function (e) { return e.vgap || a }, getChildren: function (e) { return e.children }, getHeight: function (e) { return e.height || o }, getWidth: function (e) { var t = e.name || " "; return e.width || t.split("").length * i } }; function c(e, t) { var n = this; if (n.vgap = n.hgap = 0, e instanceof c) return e; n.data = e; var r = t.getHGap(e), i = t.getVGap(e); return n.width = t.getWidth(e), n.height = t.getHeight(e), n.id = t.getId(e), n.x = n.y = 0, n.depth = 0, n.children || (n.children = []), n.addGap(r, i), n } function l(e, t, n) { void 0 === t && (t = {}), t = r.assign({}, s, t); var i, o = new c(e, t), a = [o]; if (!n && !e.collapsed) while (i = a.pop()) if (!i.data.collapsed) { var l = t.getChildren(i.data), u = l ? l.length : 0; if (i.children = new Array(u), l && u) for (var h = 0; h < u; h++) { var f = new c(l[h], t); i.children[h] = f, a.push(f), f.parent = i, f.depth = i.depth + 1 } } return o } r.assign(c.prototype, { isRoot: function () { return 0 === this.depth }, isLeaf: function () { return 0 === this.children.length }, addGap: function (e, t) { var n = this; n.hgap += e, n.vgap += t, n.width += 2 * e, n.height += 2 * t }, eachNode: function (e) { var t, n = this, r = [n]; while (t = r.pop()) e(t), r = r.concat(t.children) }, DFTraverse: function (e) { this.eachNode(e) }, BFTraverse: function (e) { var t, n = this, r = [n]; while (t = r.shift()) e(t), r = r.concat(t.children) }, getBoundingBox: function () { var e = { left: Number.MAX_VALUE, top: Number.MAX_VALUE, width: 0, height: 0 }; return this.eachNode((function (t) { e.left = Math.min(e.left, t.x), e.top = Math.min(e.top, t.y), e.width = Math.max(e.width, t.x + t.width), e.height = Math.max(e.height, t.y + t.height) })), e }, translate: function (e, t) { void 0 === e && (e = 0), void 0 === t && (t = 0), this.eachNode((function (n) { n.x += e, n.y += t })) }, right2left: function () { var e = this, t = e.getBoundingBox(); e.eachNode((function (e) { e.x = e.x - 2 * (e.x - t.left) - e.width })), e.translate(t.width, 0) }, bottom2top: function () { var e = this, t = e.getBoundingBox(); e.eachNode((function (e) { e.y = e.y - 2 * (e.y - t.top) - e.height })), e.translate(0, t.height) } }), e.exports = l }, function (e, t, n) { var r = n(193); e.exports = function (e, t) { for (var n = r(e.data, t, !0), i = r(e.data, t, !0), o = e.children.length, a = Math.round(o / 2), s = t.getSide || function (e, t) { return t < a ? "right" : "left" }, c = 0; c < o; c++) { var l = e.children[c], u = s(l, c); "right" === u ? i.children.push(l) : n.children.push(l) } return n.eachNode((function (e) { e.isRoot() || (e.side = "left") })), i.eachNode((function (e) { e.isRoot() || (e.side = "right") })), { left: n, right: i } } }, function (e, t, n) { n(196), n(350), n(351), n(354), n(355), n(357), n(361), n(158), n(365), n(366), n(368), n(390), n(398), n(399), n(400), n(403), n(404), n(405), n(406), n(407), n(408), n(409), n(410), n(411), n(413), n(414), n(415), n(418), n(420), n(422), n(423), n(424), n(425), n(426), n(427), n(428), n(429), n(430), n(431), n(472), n(508), n(514), n(515), n(524), n(525), n(526), n(527), n(528), n(529), n(530), n(532), n(534), n(535), e.exports = n(2) }, function (e, t, n) { var r = n(3), i = n(0), o = i.geoArea, a = i.geoCentroid, s = i.geoContains, c = i.geoDistance, l = i.geoLength, u = n(128), h = u.geoProject, f = n(39), d = n(141); r(f.prototype, { geoArea: function (e) { return o(e) }, geoAreaByName: function (e) { return o(this.geoFeatureByName(e)) }, geoCentroid: function (e) { return a(e) }, geoCentroidByName: function (e) { return a(this.geoFeatureByName(e)) }, geoDistance: function (e, t) { return c(e, t) }, geoLength: function (e) { return l(e) }, geoLengthByName: function (e) { return l(this.geoFeatureByName(e)) }, geoContains: function (e, t) { return s(e, t) }, geoFeatureByName: function (e) { var t, n = this.rows; return n.some((function (n) { return n.name === e && (t = n, !0) })), t }, geoFeatureByPosition: function (e) { var t, n = this.rows; return n.some((function (n) { return !!s(n, e) && (t = n, !0) })), t }, geoNameByPosition: function (e) { var t = this.geoFeatureByPosition(e); if (t) return t.name }, getGeoProjection: d, geoProject: function (e, t, n) { return t = d(t, n), h(e, t) }, geoProjectByName: function (e, t, n) { return t = d(t, n), h(this.geoFeatureByName(e), t) }, geoProjectPosition: function (e, t, n) { return t = d(t, n), t(e) }, geoProjectInvert: function (e, t, n) { return t = d(t, n), t.invert(e) } }) }, function (e, t, n) { "use strict"; var r, i, o, a, s, c, l, u, h, f, d = n(29), p = n(103), v = n(35), m = n(4), g = n(22), y = Object(d["a"])(), b = { point: x, lineStart: _, lineEnd: C, polygonStart: function () { b.point = M, b.lineStart = O, b.lineEnd = k, y.reset(), p["b"].polygonStart() }, polygonEnd: function () { p["b"].polygonEnd(), b.point = x, b.lineStart = _, b.lineEnd = C, p["a"] < 0 ? (r = -(o = 180), i = -(a = 90)) : y > m["i"] ? a = 90 : y < -m["i"] && (i = -90), f[0] = r, f[1] = o } }; function x(e, t) { h.push(f = [r = e, o = e]), t < i && (i = t), t > a && (a = t) } function w(e, t) { var n = Object(v["a"])([e * m["r"], t * m["r"]]); if (u) { var c = Object(v["c"])(u, n), l = [c[1], -c[0], 0], d = Object(v["c"])(l, c); Object(v["e"])(d), d = Object(v["g"])(d); var p, g = e - s, y = g > 0 ? 1 : -1, b = d[0] * m["h"] * y, x = Object(m["a"])(g) > 180; x ^ (y * s < b && b < y * e) ? (p = d[1] * m["h"], p > a && (a = p)) : (b = (b + 360) % 360 - 180, x ^ (y * s < b && b < y * e) ? (p = -d[1] * m["h"], p < i && (i = p)) : (t < i && (i = t), t > a && (a = t))), x ? e < s ? S(r, e) > S(r, o) && (o = e) : S(e, o) > S(r, o) && (r = e) : o >= r ? (e < r && (r = e), e > o && (o = e)) : e > s ? S(r, e) > S(r, o) && (o = e) : S(e, o) > S(r, o) && (r = e) } else h.push(f = [r = e, o = e]); t < i && (i = t), t > a && (a = t), u = n, s = e } function _() { b.point = w } function C() { f[0] = r, f[1] = o, b.point = x, u = null } function M(e, t) { if (u) { var n = e - s; y.add(Object(m["a"])(n) > 180 ? n + (n > 0 ? 360 : -360) : n) } else c = e, l = t; p["b"].point(e, t), w(e, t) } function O() { p["b"].lineStart() } function k() { M(c, l), p["b"].lineEnd(), Object(m["a"])(y) > m["i"] && (r = -(o = 180)), f[0] = r, f[1] = o, u = null } function S(e, t) { return (t -= e) < 0 ? t + 360 : t } function T(e, t) { return e[0] - t[0] } function A(e, t) { return e[0] <= e[1] ? e[0] <= t && t <= e[1] : t < e[0] || e[1] < t } t["a"] = function (e) { var t, n, s, c, l, u, d; if (a = o = -(r = i = 1 / 0), h = [], Object(g["a"])(e, b), n = h.length) { for (h.sort(T), t = 1, s = h[0], l = [s]; t < n; ++t)c = h[t], A(s, c[0]) || A(s, c[1]) ? (S(s[0], c[1]) > S(s[0], s[1]) && (s[1] = c[1]), S(c[0], s[1]) > S(s[0], s[1]) && (s[0] = c[0])) : l.push(s = c); for (u = -1 / 0, n = l.length - 1, t = 0, s = l[n]; t <= n; s = c, ++t)c = l[t], (d = S(s[1], c[0])) > u && (u = d, r = c[0], o = s[1]) } return h = f = null, r === 1 / 0 || i === 1 / 0 ? [[NaN, NaN], [NaN, NaN]] : [[r, i], [o, a]] } }, function (e, t, n) { "use strict"; var r, i, o, a, s, c, l, u, h, f, d, p, v, m, g, y, b = n(4), x = n(20), w = n(22), _ = { sphere: x["a"], point: C, lineStart: O, lineEnd: T, polygonStart: function () { _.lineStart = A, _.lineEnd = L }, polygonEnd: function () { _.lineStart = O, _.lineEnd = T } }; function C(e, t) { e *= b["r"], t *= b["r"]; var n = Object(b["g"])(t); M(n * Object(b["g"])(e), n * Object(b["t"])(e), Object(b["t"])(t)) } function M(e, t, n) { ++r, o += (e - o) / r, a += (t - a) / r, s += (n - s) / r } function O() { _.point = k } function k(e, t) { e *= b["r"], t *= b["r"]; var n = Object(b["g"])(t); m = n * Object(b["g"])(e), g = n * Object(b["t"])(e), y = Object(b["t"])(t), _.point = S, M(m, g, y) } function S(e, t) { e *= b["r"], t *= b["r"]; var n = Object(b["g"])(t), r = n * Object(b["g"])(e), o = n * Object(b["t"])(e), a = Object(b["t"])(t), s = Object(b["e"])(Object(b["u"])((s = g * a - y * o) * s + (s = y * r - m * a) * s + (s = m * o - g * r) * s), m * r + g * o + y * a); i += s, c += s * (m + (m = r)), l += s * (g + (g = o)), u += s * (y + (y = a)), M(m, g, y) } function T() { _.point = C } function A() { _.point = j } function L() { z(p, v), _.point = C } function j(e, t) { p = e, v = t, e *= b["r"], t *= b["r"], _.point = z; var n = Object(b["g"])(t); m = n * Object(b["g"])(e), g = n * Object(b["t"])(e), y = Object(b["t"])(t), M(m, g, y) } function z(e, t) { e *= b["r"], t *= b["r"]; var n = Object(b["g"])(t), r = n * Object(b["g"])(e), o = n * Object(b["t"])(e), a = Object(b["t"])(t), s = g * a - y * o, p = y * r - m * a, v = m * o - g * r, x = Object(b["u"])(s * s + p * p + v * v), w = Object(b["c"])(x), _ = x && -w / x; h += _ * s, f += _ * p, d += _ * v, i += w, c += w * (m + (m = r)), l += w * (g + (g = o)), u += w * (y + (y = a)), M(m, g, y) } t["a"] = function (e) { r = i = o = a = s = c = l = u = h = f = d = 0, Object(w["a"])(e, _); var t = h, n = f, p = d, v = t * t + n * n + p * p; return v < b["j"] && (t = c, n = l, p = u, i < b["i"] && (t = o, n = a, p = s), v = t * t + n * n + p * p, v < b["j"]) ? [NaN, NaN] : [Object(b["e"])(n, t) * b["h"], Object(b["c"])(p / Object(b["u"])(v)) * b["h"]] } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return function () { return e } } }, function (e, t, n) { "use strict"; t["a"] = function (e, t, n, r, i, o) { var a, s = e[0], c = e[1], l = t[0], u = t[1], h = 0, f = 1, d = l - s, p = u - c; if (a = n - s, d || !(a > 0)) { if (a /= d, d < 0) { if (a < h) return; a < f && (f = a) } else if (d > 0) { if (a > f) return; a > h && (h = a) } if (a = i - s, d || !(a < 0)) { if (a /= d, d < 0) { if (a > f) return; a > h && (h = a) } else if (d > 0) { if (a < h) return; a < f && (f = a) } if (a = r - c, p || !(a > 0)) { if (a /= p, p < 0) { if (a < h) return; a < f && (f = a) } else if (p > 0) { if (a > f) return; a > h && (h = a) } if (a = o - c, p || !(a < 0)) { if (a /= p, p < 0) { if (a > f) return; a > h && (h = a) } else if (p > 0) { if (a < h) return; a < f && (f = a) } return h > 0 && (e[0] = s + h * d, e[1] = c + h * p), f < 1 && (t[0] = s + f * d, t[1] = c + f * p), !0 } } } } } }, function (e, t, n) { "use strict"; var r = n(111); t["a"] = function (e, t, n) { var i, o, a, s, c = e.length, l = t.length, u = new Array(c * l); for (null == n && (n = r["b"]), i = a = 0; i < c; ++i)for (s = e[i], o = 0; o < l; ++o, ++a)u[a] = n(s, t[o]); return u } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { return t < e ? -1 : t > e ? 1 : t >= e ? 0 : NaN } }, function (e, t, n) { "use strict"; var r = n(115), i = n(109), o = n(204), a = n(114), s = n(205), c = n(116), l = n(117), u = n(118); t["a"] = function () { var e = s["a"], t = a["a"], n = u["a"]; function h(r) { var o, a, s = r.length, u = new Array(s); for (o = 0; o < s; ++o)u[o] = e(r[o], o, r); var h = t(u), f = h[0], d = h[1], p = n(u, f, d); Array.isArray(p) || (p = Object(l["c"])(f, d, p), p = Object(c["a"])(Math.ceil(f / p) * p, Math.floor(d / p) * p, p)); var v = p.length; while (p[0] <= f) p.shift(), --v; while (p[v - 1] > d) p.pop(), --v; var m, g = new Array(v + 1); for (o = 0; o <= v; ++o)m = g[o] = [], m.x0 = o > 0 ? p[o - 1] : f, m.x1 = o < v ? p[o] : d; for (o = 0; o < s; ++o)a = u[o], f <= a && a <= d && g[Object(i["c"])(p, a, 0, v)].push(r[o]); return g } return h.value = function (t) { return arguments.length ? (e = "function" === typeof t ? t : Object(o["a"])(t), h) : e }, h.domain = function (e) { return arguments.length ? (t = "function" === typeof e ? e : Object(o["a"])([e[0], e[1]]), h) : t }, h.thresholds = function (e) { return arguments.length ? (n = "function" === typeof e ? e : Array.isArray(e) ? Object(o["a"])(r["b"].call(e)) : Object(o["a"])(e), h) : n }, h } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return function () { return e } } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return e } }, function (e, t, n) { "use strict"; var r = n(115), i = n(30), o = n(36), a = n(66); t["a"] = function (e, t, n) { return e = r["a"].call(e, o["a"]).sort(i["a"]), Math.ceil((n - t) / (2 * (Object(a["a"])(e, .75) - Object(a["a"])(e, .25)) * Math.pow(e.length, -1 / 3))) } }, function (e, t, n) { "use strict"; var r = n(112); t["a"] = function (e, t, n) { return Math.ceil((n - t) / (3.5 * Object(r["a"])(e) * Math.pow(e.length, -1 / 3))) } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { var n, r, i = e.length, o = -1; if (null == t) { while (++o < i) if (null != (n = e[o]) && n >= n) { r = n; while (++o < i) null != (n = e[o]) && n > r && (r = n) } } else while (++o < i) if (null != (n = t(e[o], o, e)) && n >= n) { r = n; while (++o < i) null != (n = t(e[o], o, e)) && n > r && (r = n) } return r } }, function (e, t, n) { "use strict"; var r = n(36); t["a"] = function (e, t) { var n, i = e.length, o = i, a = -1, s = 0; if (null == t) while (++a < i) isNaN(n = Object(r["a"])(e[a])) ? --o : s += n; else while (++a < i) isNaN(n = Object(r["a"])(t(e[a], a, e))) ? --o : s += n; if (o) return s / o } }, function (e, t, n) { "use strict"; var r = n(30), i = n(36), o = n(66); t["a"] = function (e, t) { var n, a = e.length, s = -1, c = []; if (null == t) while (++s < a) isNaN(n = Object(i["a"])(e[s])) || c.push(n); else while (++s < a) isNaN(n = Object(i["a"])(t(e[s], s, e))) || c.push(n); return Object(o["a"])(c.sort(r["a"]), .5) } }, function (e, t, n) { "use strict"; t["a"] = function (e) { var t, n, r, i = e.length, o = -1, a = 0; while (++o < i) a += e[o].length; n = new Array(a); while (--i >= 0) { r = e[i], t = r.length; while (--t >= 0) n[--a] = r[t] } return n } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { var n = t.length, r = new Array(n); while (n--) r[n] = e[t[n]]; return r } }, function (e, t, n) { "use strict"; var r = n(30); t["a"] = function (e, t) { if (n = e.length) { var n, i, o = 0, a = 0, s = e[a]; null == t && (t = r["a"]); while (++o < n) (t(i = e[o], s) < 0 || 0 !== t(s, s)) && (s = i, a = o); return 0 === t(s, s) ? a : void 0 } } }, function (e, t, n) { "use strict"; t["a"] = function (e, t, n) { var r, i, o = (null == n ? e.length : n) - (t = null == t ? 0 : +t); while (o) i = Math.random() * o-- | 0, r = e[o + t], e[o + t] = e[i + t], e[i + t] = r; return e } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { var n, r = e.length, i = -1, o = 0; if (null == t) while (++i < r) (n = +e[i]) && (o += n); else while (++i < r) (n = +t(e[i], i, e)) && (o += n); return o } }, function (e, t, n) { "use strict"; var r = n(120); t["a"] = function () { return Object(r["a"])(arguments) } }, function (e, t, n) { "use strict"; var r = n(121), i = n(122), o = n(4), a = { Feature: function (e, t) { return c(e.geometry, t) }, FeatureCollection: function (e, t) { var n = e.features, r = -1, i = n.length; while (++r < i) if (c(n[r].geometry, t)) return !0; return !1 } }, s = { Sphere: function () { return !0 }, Point: function (e, t) { return l(e.coordinates, t) }, MultiPoint: function (e, t) { var n = e.coordinates, r = -1, i = n.length; while (++r < i) if (l(n[r], t)) return !0; return !1 }, LineString: function (e, t) { return u(e.coordinates, t) }, MultiLineString: function (e, t) { var n = e.coordinates, r = -1, i = n.length; while (++r < i) if (u(n[r], t)) return !0; return !1 }, Polygon: function (e, t) { return h(e.coordinates, t) }, MultiPolygon: function (e, t) { var n = e.coordinates, r = -1, i = n.length; while (++r < i) if (h(n[r], t)) return !0; return !1 }, GeometryCollection: function (e, t) { var n = e.geometries, r = -1, i = n.length; while (++r < i) if (c(n[r], t)) return !0; return !1 } }; function c(e, t) { return !(!e || !s.hasOwnProperty(e.type)) && s[e.type](e, t) } function l(e, t) { return 0 === Object(i["a"])(e, t) } function u(e, t) { var n = Object(i["a"])(e[0], e[1]), r = Object(i["a"])(e[0], t), a = Object(i["a"])(t, e[1]); return r + a <= n + o["i"] } function h(e, t) { return !!Object(r["a"])(e.map(f), d(t)) } function f(e) { return e = e.map(d), e.pop(), e } function d(e) { return [e[0] * o["r"], e[1] * o["r"]] } t["a"] = function (e, t) { return (e && a.hasOwnProperty(e.type) ? a[e.type] : c)(e, t) } }, function (e, t, n) { "use strict"; t["a"] = s, t["b"] = c; var r = n(14), i = n(4); function o(e, t, n) { var o = Object(r["range"])(e, t - i["i"], n).concat(t); return function (e) { return o.map((function (t) { return [e, t] })) } } function a(e, t, n) { var o = Object(r["range"])(e, t - i["i"], n).concat(t); return function (e) { return o.map((function (t) { return [t, e] })) } } function s() { var e, t, n, s, c, l, u, h, f, d, p, v, m = 10, g = m, y = 90, b = 360, x = 2.5; function w() { return { type: "MultiLineString", coordinates: _() } } function _() { return Object(r["range"])(Object(i["f"])(s / y) * y, n, y).map(p).concat(Object(r["range"])(Object(i["f"])(h / b) * b, u, b).map(v)).concat(Object(r["range"])(Object(i["f"])(t / m) * m, e, m).filter((function (e) { return Object(i["a"])(e % y) > i["i"] })).map(f)).concat(Object(r["range"])(Object(i["f"])(l / g) * g, c, g).filter((function (e) { return Object(i["a"])(e % b) > i["i"] })).map(d)) } return w.lines = function () { return _().map((function (e) { return { type: "LineString", coordinates: e } })) }, w.outline = function () { return { type: "Polygon", coordinates: [p(s).concat(v(u).slice(1), p(n).reverse().slice(1), v(h).reverse().slice(1))] } }, w.extent = function (e) { return arguments.length ? w.extentMajor(e).extentMinor(e) : w.extentMinor() }, w.extentMajor = function (e) { return arguments.length ? (s = +e[0][0], n = +e[1][0], h = +e[0][1], u = +e[1][1], s > n && (e = s, s = n, n = e), h > u && (e = h, h = u, u = e), w.precision(x)) : [[s, h], [n, u]] }, w.extentMinor = function (n) { return arguments.length ? (t = +n[0][0], e = +n[1][0], l = +n[0][1], c = +n[1][1], t > e && (n = t, t = e, e = n), l > c && (n = l, l = c, c = n), w.precision(x)) : [[t, l], [e, c]] }, w.step = function (e) { return arguments.length ? w.stepMajor(e).stepMinor(e) : w.stepMinor() }, w.stepMajor = function (e) { return arguments.length ? (y = +e[0], b = +e[1], w) : [y, b] }, w.stepMinor = function (e) { return arguments.length ? (m = +e[0], g = +e[1], w) : [m, g] }, w.precision = function (r) { return arguments.length ? (x = +r, f = o(l, c, 90), d = a(t, e, x), p = o(h, u, 90), v = a(s, n, x), w) : x }, w.extentMajor([[-180, -90 + i["i"]], [180, 90 - i["i"]]]).extentMinor([[-180, -80 - i["i"]], [180, 80 + i["i"]]]) } function c() { return s()() } }, function (e, t, n) { "use strict"; var r = n(4); t["a"] = function (e, t) { var n = e[0] * r["r"], i = e[1] * r["r"], o = t[0] * r["r"], a = t[1] * r["r"], s = Object(r["g"])(i), c = Object(r["t"])(i), l = Object(r["g"])(a), u = Object(r["t"])(a), h = s * Object(r["g"])(n), f = s * Object(r["t"])(n), d = l * Object(r["g"])(o), p = l * Object(r["t"])(o), v = 2 * Object(r["c"])(Object(r["u"])(Object(r["m"])(a - i) + s * l * Object(r["m"])(o - n))), m = Object(r["t"])(v), g = v ? function (e) { var t = Object(r["t"])(e *= v) / m, n = Object(r["t"])(v - e) / m, i = n * h + t * d, o = n * f + t * p, a = n * c + t * u; return [Object(r["e"])(o, i) * r["h"], Object(r["e"])(a, Object(r["u"])(i * i + o * o)) * r["h"]] } : function () { return [n * r["h"], i * r["h"]] }; return g.distance = v, g } }, function (e, t, n) { "use strict"; var r = n(67), i = n(22), o = n(221), a = n(124), s = n(222), c = n(223), l = n(224), u = n(225); t["a"] = function (e, t) { var n, h, f = 4.5; function d(e) { return e && ("function" === typeof f && h.pointRadius(+f.apply(this, arguments)), Object(i["a"])(e, n(h))), h.result() } return d.area = function (e) { return Object(i["a"])(e, n(o["a"])), o["a"].result() }, d.measure = function (e) { return Object(i["a"])(e, n(l["a"])), l["a"].result() }, d.bounds = function (e) { return Object(i["a"])(e, n(a["a"])), a["a"].result() }, d.centroid = function (e) { return Object(i["a"])(e, n(s["a"])), s["a"].result() }, d.projection = function (t) { return arguments.length ? (n = null == t ? (e = null, r["a"]) : (e = t).stream, d) : e }, d.context = function (e) { return arguments.length ? (h = null == e ? (t = null, new u["a"]) : new c["a"](t = e), "function" !== typeof f && h.pointRadius(f), d) : t }, d.pointRadius = function (e) { return arguments.length ? (f = "function" === typeof e ? e : (h.pointRadius(+e), +e), d) : f }, d.projection(e).context(t) } }, function (e, t, n) { "use strict"; var r, i, o, a, s = n(29), c = n(4), l = n(20), u = Object(s["a"])(), h = Object(s["a"])(), f = { point: l["a"], lineStart: l["a"], lineEnd: l["a"], polygonStart: function () { f.lineStart = d, f.lineEnd = m }, polygonEnd: function () { f.lineStart = f.lineEnd = f.point = l["a"], u.add(Object(c["a"])(h)), h.reset() }, result: function () { var e = u / 2; return u.reset(), e } }; function d() { f.point = p } function p(e, t) { f.point = v, r = o = e, i = a = t } function v(e, t) { h.add(a * e - o * t), o = e, a = t } function m() { v(r, i) } t["a"] = f }, function (e, t, n) { "use strict"; var r, i, o, a, s = n(4), c = 0, l = 0, u = 0, h = 0, f = 0, d = 0, p = 0, v = 0, m = 0, g = { point: y, lineStart: b, lineEnd: _, polygonStart: function () { g.lineStart = C, g.lineEnd = M }, polygonEnd: function () { g.point = y, g.lineStart = b, g.lineEnd = _ }, result: function () { var e = m ? [p / m, v / m] : d ? [h / d, f / d] : u ? [c / u, l / u] : [NaN, NaN]; return c = l = u = h = f = d = p = v = m = 0, e } }; function y(e, t) { c += e, l += t, ++u } function b() { g.point = x } function x(e, t) { g.point = w, y(o = e, a = t) } function w(e, t) { var n = e - o, r = t - a, i = Object(s["u"])(n * n + r * r); h += i * (o + e) / 2, f += i * (a + t) / 2, d += i, y(o = e, a = t) } function _() { g.point = y } function C() { g.point = O } function M() { k(r, i) } function O(e, t) { g.point = k, y(r = o = e, i = a = t) } function k(e, t) { var n = e - o, r = t - a, i = Object(s["u"])(n * n + r * r); h += i * (o + e) / 2, f += i * (a + t) / 2, d += i, i = a * e - o * t, p += i * (o + e), v += i * (a + t), m += 3 * i, y(o = e, a = t) } t["a"] = g }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(4), i = n(20); function o(e) { this._context = e } o.prototype = { _radius: 4.5, pointRadius: function (e) { return this._radius = e, this }, polygonStart: function () { this._line = 0 }, polygonEnd: function () { this._line = NaN }, lineStart: function () { this._point = 0 }, lineEnd: function () { 0 === this._line && this._context.closePath(), this._point = NaN }, point: function (e, t) { switch (this._point) { case 0: this._context.moveTo(e, t), this._point = 1; break; case 1: this._context.lineTo(e, t); break; default: this._context.moveTo(e + this._radius, t), this._context.arc(e, t, this._radius, 0, r["w"]); break } }, result: i["a"] } }, function (e, t, n) { "use strict"; var r, i, o, a, s, c = n(29), l = n(4), u = n(20), h = Object(c["a"])(), f = { point: u["a"], lineStart: function () { f.point = d }, lineEnd: function () { r && p(i, o), f.point = u["a"] }, polygonStart: function () { r = !0 }, polygonEnd: function () { r = null }, result: function () { var e = +h; return h.reset(), e } }; function d(e, t) { f.point = p, i = a = e, o = s = t } function p(e, t) { a -= e, s -= t, h.add(Object(l["u"])(a * a + s * s)), a = e, s = t } t["a"] = f }, function (e, t, n) { "use strict"; function r() { this._string = [] } function i(e) { return "m0," + e + "a" + e + "," + e + " 0 1,1 0," + -2 * e + "a" + e + "," + e + " 0 1,1 0," + 2 * e + "z" } t["a"] = r, r.prototype = { _radius: 4.5, _circle: i(4.5), pointRadius: function (e) { return (e = +e) !== this._radius && (this._radius = e, this._circle = null), this }, polygonStart: function () { this._line = 0 }, polygonEnd: function () { this._line = NaN }, lineStart: function () { this._point = 0 }, lineEnd: function () { 0 === this._line && this._string.push("Z"), this._point = NaN }, point: function (e, t) { switch (this._point) { case 0: this._string.push("M", e, ",", t), this._point = 1; break; case 1: this._string.push("L", e, ",", t); break; default: null == this._circle && (this._circle = i(this._radius)), this._string.push("M", e, ",", t, this._circle); break } }, result: function () { if (this._string.length) { var e = this._string.join(""); return this._string = [], e } return null } } }, function (e, t, n) { "use strict"; var r = n(126), i = n(4); function o(e) { var t, n = NaN, r = NaN, o = NaN; return { lineStart: function () { e.lineStart(), t = 1 }, point: function (s, c) { var l = s > 0 ? i["o"] : -i["o"], u = Object(i["a"])(s - n); Object(i["a"])(u - i["o"]) < i["i"] ? (e.point(n, r = (r + c) / 2 > 0 ? i["l"] : -i["l"]), e.point(o, r), e.lineEnd(), e.lineStart(), e.point(l, r), e.point(s, r), t = 0) : o !== l && u >= i["o"] && (Object(i["a"])(n - o) < i["i"] && (n -= o * i["i"]), Object(i["a"])(s - l) < i["i"] && (s -= l * i["i"]), r = a(n, r, s, c), e.point(o, r), e.lineEnd(), e.lineStart(), e.point(l, r), t = 0), e.point(n = s, r = c), o = l }, lineEnd: function () { e.lineEnd(), n = r = NaN }, clean: function () { return 2 - t } } } function a(e, t, n, r) { var o, a, s = Object(i["t"])(e - n); return Object(i["a"])(s) > i["i"] ? Object(i["d"])((Object(i["t"])(t) * (a = Object(i["g"])(r)) * Object(i["t"])(n) - Object(i["t"])(r) * (o = Object(i["g"])(t)) * Object(i["t"])(e)) / (o * a * s)) : (t + r) / 2 } function s(e, t, n, r) { var o; if (null == e) o = n * i["l"], r.point(-i["o"], o), r.point(0, o), r.point(i["o"], o), r.point(i["o"], 0), r.point(i["o"], -o), r.point(0, -o), r.point(-i["o"], -o), r.point(-i["o"], 0), r.point(-i["o"], o); else if (Object(i["a"])(e[0] - t[0]) > i["i"]) { var a = e[0] < t[0] ? i["o"] : -i["o"]; o = n * a / 2, r.point(-a, o), r.point(0, o), r.point(a, o) } else r.point(t[0], t[1]) } t["a"] = Object(r["a"])((function () { return !0 }), o, s, [-i["o"], -i["l"]]) }, function (e, t, n) { "use strict"; var r = n(35), i = n(104), o = n(4), a = n(108), s = n(126); t["a"] = function (e, t) { var n = Object(o["g"])(e), c = n > 0, l = Object(o["a"])(n) > o["i"]; function u(n, r, o, a) { Object(i["a"])(a, e, t, o, n, r) } function h(e, t) { return Object(o["g"])(e) * Object(o["g"])(t) > n } function f(e) { var t, n, r, i, s; return { lineStart: function () { i = r = !1, s = 1 }, point: function (u, f) { var v, m = [u, f], g = h(u, f), y = c ? g ? 0 : p(u, f) : g ? p(u + (u < 0 ? o["o"] : -o["o"]), f) : 0; if (!t && (i = r = g) && e.lineStart(), g !== r && (v = d(t, m), (!v || Object(a["a"])(t, v) || Object(a["a"])(m, v)) && (m[0] += o["i"], m[1] += o["i"], g = h(m[0], m[1]))), g !== r) s = 0, g ? (e.lineStart(), v = d(m, t), e.point(v[0], v[1])) : (v = d(t, m), e.point(v[0], v[1]), e.lineEnd()), t = v; else if (l && t && c ^ g) { var b; y & n || !(b = d(m, t, !0)) || (s = 0, c ? (e.lineStart(), e.point(b[0][0], b[0][1]), e.point(b[1][0], b[1][1]), e.lineEnd()) : (e.point(b[1][0], b[1][1]), e.lineEnd(), e.lineStart(), e.point(b[0][0], b[0][1]))) } !g || t && Object(a["a"])(t, m) || e.point(m[0], m[1]), t = m, r = g, n = y }, lineEnd: function () { r && e.lineEnd(), t = null }, clean: function () { return s | (i && r) << 1 } } } function d(e, t, i) { var a = Object(r["a"])(e), s = Object(r["a"])(t), c = [1, 0, 0], l = Object(r["c"])(a, s), u = Object(r["d"])(l, l), h = l[0], f = u - h * h; if (!f) return !i && e; var d = n * u / f, p = -n * h / f, v = Object(r["c"])(c, l), m = Object(r["f"])(c, d), g = Object(r["f"])(l, p); Object(r["b"])(m, g); var y = v, b = Object(r["d"])(m, y), x = Object(r["d"])(y, y), w = b * b - x * (Object(r["d"])(m, m) - 1); if (!(w < 0)) { var _ = Object(o["u"])(w), C = Object(r["f"])(y, (-b - _) / x); if (Object(r["b"])(C, m), C = Object(r["g"])(C), !i) return C; var M, O = e[0], k = t[0], S = e[1], T = t[1]; k < O && (M = O, O = k, k = M); var A = k - O, L = Object(o["a"])(A - o["o"]) < o["i"], j = L || A < o["i"]; if (!L && T < S && (M = S, S = T, T = M), j ? L ? S + T > 0 ^ C[1] < (Object(o["a"])(C[0] - O) < o["i"] ? S : T) : S <= C[1] && C[1] <= T : A > o["o"] ^ (O <= C[0] && C[0] <= k)) { var z = Object(r["f"])(y, (-b + _) / x); return Object(r["b"])(z, m), [C, Object(r["g"])(z)] } } } function p(t, n) { var r = c ? e : o["o"] - e, i = 0; return t < -r ? i |= 1 : t > r && (i |= 2), n < -r ? i |= 4 : n > r && (i |= 8), i } return Object(s["a"])(h, f, u, c ? [0, -e] : [-o["o"], e - o["o"]]) } }, function (e, t, n) { "use strict"; var r = n(35), i = n(4), o = n(51), a = 16, s = Object(i["g"])(30 * i["r"]); function c(e) { return Object(o["b"])({ point: function (t, n) { t = e(t, n), this.stream.point(t[0], t[1]) } }) } function l(e, t) { function n(r, o, a, c, l, u, h, f, d, p, v, m, g, y) { var b = h - r, x = f - o, w = b * b + x * x; if (w > 4 * t && g--) { var _ = c + p, C = l + v, M = u + m, O = Object(i["u"])(_ * _ + C * C + M * M), k = Object(i["c"])(M /= O), S = Object(i["a"])(Object(i["a"])(M) - 1) < i["i"] || Object(i["a"])(a - d) < i["i"] ? (a + d) / 2 : Object(i["e"])(C, _), T = e(S, k), A = T[0], L = T[1], j = A - r, z = L - o, E = x * j - b * z; (E * E / w > t || Object(i["a"])((b * j + x * z) / w - .5) > .3 || c * p + l * v + u * m < s) && (n(r, o, a, c, l, u, A, L, S, _ /= O, C /= O, M, g, y), y.point(A, L), n(A, L, S, _, C, M, h, f, d, p, v, m, g, y)) } } return function (t) { var i, o, s, c, l, u, h, f, d, p, v, m, g = { point: y, lineStart: b, lineEnd: w, polygonStart: function () { t.polygonStart(), g.lineStart = _ }, polygonEnd: function () { t.polygonEnd(), g.lineStart = b } }; function y(n, r) { n = e(n, r), t.point(n[0], n[1]) } function b() { f = NaN, g.point = x, t.lineStart() } function x(i, o) { var s = Object(r["a"])([i, o]), c = e(i, o); n(f, d, h, p, v, m, f = c[0], d = c[1], h = i, p = s[0], v = s[1], m = s[2], a, t), t.point(f, d) } function w() { g.point = y, t.lineEnd() } function _() { b(), g.point = C, g.lineEnd = M } function C(e, t) { x(i = e, t), o = f, s = d, c = p, l = v, u = m, g.point = x } function M() { n(f, d, h, p, v, m, o, s, i, c, l, u, a, t), g.lineEnd = w, w() } return g } } t["a"] = function (e, t) { return +t ? l(e, t) : c(e) } }, function (e, t, n) { "use strict"; t["a"] = i; var r = n(4); function i(e) { var t = Object(r["g"])(e); function n(e, n) { return [e * t, Object(r["t"])(n) / t] } return n.invert = function (e, n) { return [e / t, Object(r["c"])(n * t)] }, n } }, function (e, t, n) { "use strict"; var r = n(4), i = n(125), o = n(68), a = n(70); function s(e) { var t = e.length; return { point: function (n, r) { var i = -1; while (++i < t) e[i].point(n, r) }, sphere: function () { var n = -1; while (++n < t) e[n].sphere() }, lineStart: function () { var n = -1; while (++n < t) e[n].lineStart() }, lineEnd: function () { var n = -1; while (++n < t) e[n].lineEnd() }, polygonStart: function () { var n = -1; while (++n < t) e[n].polygonStart() }, polygonEnd: function () { var n = -1; while (++n < t) e[n].polygonEnd() } } } t["a"] = function () { var e, t, n, c, l, u, h = Object(i["a"])(), f = Object(o["b"])().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), d = Object(o["b"])().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), p = { point: function (e, t) { u = [e, t] } }; function v(e) { var t = e[0], r = e[1]; return u = null, n.point(t, r), u || (c.point(t, r), u) || (l.point(t, r), u) } function m() { return e = t = null, v } return v.invert = function (e) { var t = h.scale(), n = h.translate(), r = (e[0] - n[0]) / t, i = (e[1] - n[1]) / t; return (i >= .12 && i < .234 && r >= -.425 && r < -.214 ? f : i >= .166 && i < .234 && r >= -.214 && r < -.115 ? d : h).invert(e) }, v.stream = function (n) { return e && t === n ? e : e = s([h.stream(t = n), f.stream(n), d.stream(n)]) }, v.precision = function (e) { return arguments.length ? (h.precision(e), f.precision(e), d.precision(e), m()) : h.precision() }, v.scale = function (e) { return arguments.length ? (h.scale(e), f.scale(.35 * e), d.scale(e), v.translate(h.translate())) : h.scale() }, v.translate = function (e) { if (!arguments.length) return h.translate(); var t = h.scale(), i = +e[0], o = +e[1]; return n = h.translate(e).clipExtent([[i - .455 * t, o - .238 * t], [i + .455 * t, o + .238 * t]]).stream(p), c = f.translate([i - .307 * t, o + .201 * t]).clipExtent([[i - .425 * t + r["i"], o + .12 * t + r["i"]], [i - .214 * t - r["i"], o + .234 * t - r["i"]]]).stream(p), l = d.translate([i - .205 * t, o + .212 * t]).clipExtent([[i - .214 * t + r["i"], o + .166 * t + r["i"]], [i - .115 * t - r["i"], o + .234 * t - r["i"]]]).stream(p), m() }, v.fitExtent = function (e, t) { return Object(a["a"])(v, e, t) }, v.fitSize = function (e, t) { return Object(a["b"])(v, e, t) }, v.scale(1070) } }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return a })); var r = n(4), i = n(37), o = n(17), a = Object(i["b"])((function (e) { return Object(r["u"])(2 / (1 + e)) })); a.invert = Object(i["a"])((function (e) { return 2 * Object(r["c"])(e / 2) })), t["b"] = function () { return Object(o["a"])(a).scale(124.75).clipAngle(179.999) } }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return a })); var r = n(4), i = n(37), o = n(17), a = Object(i["b"])((function (e) { return (e = Object(r["b"])(e)) && e / Object(r["t"])(e) })); a.invert = Object(i["a"])((function (e) { return e })), t["b"] = function () { return Object(o["a"])(a).scale(79.4188).clipAngle(179.999) } }, function (e, t, n) { "use strict"; t["a"] = s; var r = n(4), i = n(69), o = n(71); function a(e) { return Object(r["v"])((r["l"] + e) / 2) } function s(e, t) { var n = Object(r["g"])(e), i = e === t ? Object(r["t"])(e) : Object(r["n"])(n / Object(r["g"])(t)) / Object(r["n"])(a(t) / a(e)), s = n * Object(r["p"])(a(e), i) / i; if (!i) return o["c"]; function c(e, t) { s > 0 ? t < -r["l"] + r["i"] && (t = -r["l"] + r["i"]) : t > r["l"] - r["i"] && (t = r["l"] - r["i"]); var n = s / Object(r["p"])(a(t), i); return [n * Object(r["t"])(i * e), s - n * Object(r["g"])(i * e)] } return c.invert = function (e, t) { var n = s - t, o = Object(r["s"])(i) * Object(r["u"])(e * e + n * n); return [Object(r["e"])(e, Object(r["a"])(n)) / i * Object(r["s"])(n), 2 * Object(r["d"])(Object(r["p"])(s / o, 1 / i)) - r["l"]] }, c } t["b"] = function () { return Object(i["a"])(s).scale(109.5).parallels([30, 30]) } }, function (e, t, n) { "use strict"; t["a"] = a; var r = n(4), i = n(69), o = n(127); function a(e, t) { var n = Object(r["g"])(e), i = e === t ? Object(r["t"])(e) : (n - Object(r["g"])(t)) / (t - e), a = n / i + e; if (Object(r["a"])(i) < r["i"]) return o["b"]; function s(e, t) { var n = a - t, o = i * e; return [n * Object(r["t"])(o), a - n * Object(r["g"])(o)] } return s.invert = function (e, t) { var n = a - t; return [Object(r["e"])(e, Object(r["a"])(n)) / i * Object(r["s"])(n), a - Object(r["s"])(i) * Object(r["u"])(e * e + n * n)] }, s } t["b"] = function () { return Object(i["a"])(a).scale(131.154).center([0, 13.9389]) } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(4), i = n(37), o = n(17); function a(e, t) { var n = Object(r["g"])(t), i = Object(r["g"])(e) * n; return [n * Object(r["t"])(e) / i, Object(r["t"])(t) / i] } a.invert = Object(i["a"])(r["d"]), t["a"] = function () { return Object(o["a"])(a).scale(144.049).clipAngle(60) } }, function (e, t, n) { "use strict"; var r = n(65), i = n(67), o = n(51), a = n(70); function s(e, t, n, r) { return 1 === e && 1 === t && 0 === n && 0 === r ? i["a"] : Object(o["b"])({ point: function (i, o) { this.stream.point(i * e + n, o * t + r) } }) } t["a"] = function () { var e, t, n, o, c, l, u = 1, h = 0, f = 0, d = 1, p = 1, v = i["a"], m = null, g = i["a"]; function y() { return o = c = null, l } return l = { stream: function (e) { return o && c === e ? o : o = v(g(c = e)) }, clipExtent: function (o) { return arguments.length ? (g = null == o ? (m = e = t = n = null, i["a"]) : Object(r["a"])(m = +o[0][0], e = +o[0][1], t = +o[1][0], n = +o[1][1]), y()) : null == m ? null : [[m, e], [t, n]] }, scale: function (e) { return arguments.length ? (v = s((u = +e) * d, u * p, h, f), y()) : u }, translate: function (e) { return arguments.length ? (v = s(u * d, u * p, h = +e[0], f = +e[1]), y()) : [h, f] }, reflectX: function (e) { return arguments.length ? (v = s(u * (d = e ? -1 : 1), u * p, h, f), y()) : d < 0 }, reflectY: function (e) { return arguments.length ? (v = s(u * d, u * (p = e ? -1 : 1), h, f), y()) : p < 0 }, fitExtent: function (e, t) { return Object(a["a"])(l, e, t) }, fitSize: function (e, t) { return Object(a["b"])(l, e, t) } } } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(4), i = n(37), o = n(17); function a(e, t) { return [Object(r["g"])(t) * Object(r["t"])(e), Object(r["t"])(t)] } a.invert = Object(i["a"])(r["c"]), t["a"] = function () { return Object(o["a"])(a).scale(249.5).clipAngle(90 + r["i"]) } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(4), i = n(37), o = n(17); function a(e, t) { var n = Object(r["g"])(t), i = 1 + Object(r["g"])(e) * n; return [n * Object(r["t"])(e) / i, Object(r["t"])(t) / i] } a.invert = Object(i["a"])((function (e) { return 2 * Object(r["d"])(e) })), t["a"] = function () { return Object(o["a"])(a).scale(250).clipAngle(142) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(4), i = n(71); function o(e, t) { return [Object(r["n"])(Object(r["v"])((r["l"] + t) / 2)), -e] } o.invert = function (e, t) { return [-t, 2 * Object(r["d"])(Object(r["k"])(e)) - r["l"]] }, t["a"] = function () { var e = Object(i["b"])(o), t = e.center, n = e.rotate; return e.center = function (e) { return arguments.length ? t([-e[1], e[0]]) : (e = t(), [e[1], -e[0]]) }, e.rotate = function (e) { return arguments.length ? n([e[0], e[1], e.length > 2 ? e[2] + 90 : 90]) : (e = n(), [e[0], e[1], e[2] - 90]) }, n([0, 0, 90]).scale(159.155) } }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(0), i = n(1); function o(e) { var t = Object(i["F"])(e / 2), n = 2 * Object(i["p"])(Object(i["h"])(e / 2)) / (t * t); function r(e, t) { var r = Object(i["h"])(e), o = Object(i["h"])(t), a = Object(i["y"])(t), s = o * r, c = -((1 - s ? Object(i["p"])((1 + s) / 2) / (1 - s) : -.5) + n / (1 + s)); return [c * o * Object(i["y"])(e), c * a] } return r.invert = function (t, r) { var o, a = Object(i["B"])(t * t + r * r), s = -e / 2, c = 50; if (!a) return [0, 0]; do { var l = s / 2, u = Object(i["h"])(l), h = Object(i["y"])(l), f = Object(i["F"])(l), d = Object(i["p"])(1 / u); s -= o = (2 / f * d - n * f - a) / (-d / (h * h) + 1 - n / (2 * u * u)) } while (Object(i["a"])(o) > i["k"] && --c > 0); var p = Object(i["y"])(s); return [Object(i["g"])(t * p, a * Object(i["h"])(s)), Object(i["e"])(r * p / a)] }, r } t["b"] = function () { var e = i["o"], t = Object(r["geoProjectionMutator"])(o), n = t(e); return n.radius = function (n) { return arguments.length ? t(e = n * i["v"]) : e * i["j"] }, n.scale(179.976).clipAngle(147) } }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(0), i = n(1); function o(e) { var t = Object(i["y"])(e), n = Object(i["h"])(e), r = e >= 0 ? 1 : -1, o = Object(i["F"])(r * e), a = (1 + t - n) / 2; function s(e, s) { var c = Object(i["h"])(s), l = Object(i["h"])(e /= 2); return [(1 + c) * Object(i["y"])(e), (r * s > -Object(i["g"])(l, o) - .001 ? 0 : 10 * -r) + a + Object(i["y"])(s) * n - (1 + c) * t * l] } return s.invert = function (e, s) { var c = 0, l = 0, u = 50; do { var h = Object(i["h"])(c), f = Object(i["y"])(c), d = Object(i["h"])(l), p = Object(i["y"])(l), v = 1 + d, m = v * f - e, g = a + p * n - v * t * h - s, y = v * h / 2, b = -f * p, x = t * v * f / 2, w = n * d + t * h * p, _ = b * x - w * y, C = (g * b - m * w) / _ / 2, M = (m * x - g * y) / _; c -= C, l -= M } while ((Object(i["a"])(C) > i["k"] || Object(i["a"])(M) > i["k"]) && --u > 0); return r * l > -Object(i["g"])(Object(i["h"])(c), o) - .001 ? [2 * c, l] : null }, s } t["b"] = function () { var e = 20 * i["v"], t = e >= 0 ? 1 : -1, n = Object(i["F"])(t * e), a = Object(r["geoProjectionMutator"])(o), s = a(e), c = s.stream; return s.parallel = function (r) { return arguments.length ? (n = Object(i["F"])((t = (e = r * i["v"]) >= 0 ? 1 : -1) * e), a(e)) : e * i["j"] }, s.stream = function (r) { var o = s.rotate(), a = c(r), l = (s.rotate([0, 0]), c(r)); return s.rotate(o), a.sphere = function () { l.polygonStart(), l.lineStart(); for (var r = -180 * t; t * r < 180; r += 90 * t)l.point(r, 90 * t); while (t * (r -= e) >= -180) l.point(r, t * -Object(i["g"])(Object(i["h"])(r * i["v"] / 2), n) * i["j"]); l.lineEnd(), l.polygonEnd() }, a }, s.scale(218.695).center([0, 28.0974]) } }, function (e, t, n) { "use strict"; t["a"] = s; var r = n(0), i = n(1), o = Object(i["B"])(8), a = Object(i["p"])(1 + i["D"]); function s(e, t) { var n = Object(i["a"])(t); return n < i["u"] ? [e, Object(i["p"])(Object(i["F"])(i["u"] + t / 2))] : [e * Object(i["h"])(n) * (2 * i["D"] - 1 / Object(i["y"])(n)), Object(i["x"])(t) * (2 * i["D"] * (n - i["u"]) - Object(i["p"])(Object(i["F"])(n / 2)))] } s.invert = function (e, t) { if ((r = Object(i["a"])(t)) < a) return [e, 2 * Object(i["f"])(Object(i["m"])(t)) - i["o"]]; var n, r, s = i["u"], c = 25; do { var l = Object(i["h"])(s / 2), u = Object(i["F"])(s / 2); s -= n = (o * (s - i["u"]) - Object(i["p"])(u) - r) / (o - l * l / (2 * u)) } while (Object(i["a"])(n) > i["l"] && --c > 0); return [e / (Object(i["h"])(s) * (o - 1 / Object(i["y"])(s))), Object(i["x"])(t) * s] }, t["b"] = function () { return Object(r["geoProjection"])(s).scale(112.314) } }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(0), i = n(1); function o(e) { var t = 2 * i["s"] / e; function n(e, n) { var o = Object(r["geoAzimuthalEquidistantRaw"])(e, n); if (Object(i["a"])(e) > i["o"]) { var a = Object(i["g"])(o[1], o[0]), s = Object(i["B"])(o[0] * o[0] + o[1] * o[1]), c = t * Object(i["w"])((a - i["o"]) / t) + i["o"], l = Object(i["g"])(Object(i["y"])(a -= c), 2 - Object(i["h"])(a)); a = c + Object(i["e"])(i["s"] / s * Object(i["y"])(l)) - l, o[0] = s * Object(i["h"])(a), o[1] = s * Object(i["y"])(a) } return o } return n.invert = function (e, n) { var o = Object(i["B"])(e * e + n * n); if (o > i["o"]) { var a = Object(i["g"])(n, e), s = t * Object(i["w"])((a - i["o"]) / t) + i["o"], c = a > s ? -1 : 1, l = o * Object(i["h"])(s - a), u = 1 / Object(i["F"])(c * Object(i["b"])((l - i["s"]) / Object(i["B"])(i["s"] * (i["s"] - 2 * l) + o * o))); a = s + 2 * Object(i["f"])((u + c * Object(i["B"])(u * u - 3)) / 3), e = o * Object(i["h"])(a), n = o * Object(i["y"])(a) } return r["geoAzimuthalEquidistantRaw"].invert(e, n) }, n } t["b"] = function () { var e = 5, t = Object(r["geoProjectionMutator"])(o), n = t(e), a = n.stream, s = .01, c = -Object(i["h"])(s * i["v"]), l = Object(i["y"])(s * i["v"]); return n.lobes = function (n) { return arguments.length ? t(e = +n) : e }, n.stream = function (t) { var r = n.rotate(), o = a(t), u = (n.rotate([0, 0]), a(t)); return n.rotate(r), o.sphere = function () { u.polygonStart(), u.lineStart(); for (var t = 0, n = 360 / e, r = 2 * i["s"] / e, o = 90 - 180 / e, a = i["o"]; t < e; ++t, o -= n, a -= r)u.point(Object(i["g"])(l * Object(i["h"])(a), c) * i["j"], Object(i["e"])(l * Object(i["y"])(a)) * i["j"]), o < -90 ? (u.point(-90, -180 - o - s), u.point(-90, -180 - o + s)) : (u.point(90, o + s), u.point(90, o - s)); u.lineEnd(), u.polygonEnd() }, o }, n.scale(87.8076).center([0, 17.1875]).clipAngle(179.999) } }, function (e, t, n) { "use strict"; t["a"] = a; var r = n(31), i = n(1), o = n(38); function a(e) { if (!e) return o["b"]; var t = 1 / Object(i["F"])(e); function n(n, r) { var o = t + e - r, a = o ? n * Object(i["h"])(r) / o : o; return [o * Object(i["y"])(a), t - o * Object(i["h"])(a)] } return n.invert = function (n, r) { var o = Object(i["B"])(n * n + (r = t - r) * r), a = t + e - o; return [o / Object(i["h"])(a) * Object(i["g"])(n, r), a] }, n } t["b"] = function () { return Object(r["a"])(a).scale(123.082).center([0, 26.1441]).parallel(45) } }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(0), i = n(1); function o(e) { function t(t, n) { var r = i["o"] - n, o = r ? t * e * Object(i["y"])(r) / r : r; return [r * Object(i["y"])(o) / e, i["o"] - r * Object(i["h"])(o)] } return t.invert = function (t, n) { var r = t * e, o = i["o"] - n, a = Object(i["B"])(r * r + o * o), s = Object(i["g"])(r, o); return [(a ? a / Object(i["y"])(a) : 1) * s / e, i["o"] - a] }, t } t["b"] = function () { var e = .5, t = Object(r["geoProjectionMutator"])(o), n = t(e); return n.fraction = function (n) { return arguments.length ? t(e = +n) : e }, n.scale(158.837) } }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return a })); var r = n(0), i = n(1), o = n(21), a = Object(o["b"])(1, 4 / i["s"], i["s"]); t["b"] = function () { return Object(r["geoProjection"])(a).scale(152.63) } }, function (e, t, n) { "use strict"; t["b"] = c, t["a"] = u, t["c"] = h; var r = n(0), i = n(1); function o(e, t, n, r, o, a) { var s, c = Object(i["h"])(a); if (Object(i["a"])(e) > 1 || Object(i["a"])(a) > 1) s = Object(i["b"])(n * o + t * r * c); else { var l = Object(i["y"])(e / 2), u = Object(i["y"])(a / 2); s = 2 * Object(i["e"])(Object(i["B"])(l * l + t * r * u * u)) } return Object(i["a"])(s) > i["k"] ? [s, Object(i["g"])(r * Object(i["y"])(a), t * o - n * r * c)] : [0, 0] } function a(e, t, n) { return Object(i["b"])((e * e + t * t - n * n) / (2 * e * t)) } function s(e) { return e - 2 * i["s"] * Object(i["n"])((e + i["s"]) / (2 * i["s"])) } function c(e, t, n) { for (var r, c = [[e[0], e[1], Object(i["y"])(e[1]), Object(i["h"])(e[1])], [t[0], t[1], Object(i["y"])(t[1]), Object(i["h"])(t[1])], [n[0], n[1], Object(i["y"])(n[1]), Object(i["h"])(n[1])]], l = c[2], u = 0; u < 3; ++u, l = r)r = c[u], l.v = o(r[1] - l[1], l[3], l[2], r[3], r[2], r[0] - l[0]), l.point = [0, 0]; var h = a(c[0].v[0], c[2].v[0], c[1].v[0]), f = a(c[0].v[0], c[1].v[0], c[2].v[0]), d = i["s"] - h; c[2].point[1] = 0, c[0].point[0] = -(c[1].point[0] = c[0].v[0] / 2); var p = [c[2].point[0] = c[0].point[0] + c[2].v[0] * Object(i["h"])(h), 2 * (c[0].point[1] = c[1].point[1] = c[2].v[0] * Object(i["y"])(h))]; function v(e, t) { var n, r = Object(i["y"])(t), l = Object(i["h"])(t), u = new Array(3); for (n = 0; n < 3; ++n) { var h = c[n]; if (u[n] = o(t - h[1], h[3], h[2], l, r, e - h[0]), !u[n][0]) return h.point; u[n][1] = s(u[n][1] - h.v[1]) } var v = p.slice(); for (n = 0; n < 3; ++n) { var m = 2 == n ? 0 : n + 1, g = a(c[n].v[0], u[n][0], u[m][0]); u[n][1] < 0 && (g = -g), n ? 1 == n ? (g = f - g, v[0] -= u[n][0] * Object(i["h"])(g), v[1] -= u[n][0] * Object(i["y"])(g)) : (g = d - g, v[0] += u[n][0] * Object(i["h"])(g), v[1] += u[n][0] * Object(i["y"])(g)) : (v[0] += u[n][0] * Object(i["h"])(g), v[1] -= u[n][0] * Object(i["y"])(g)) } return v[0] /= 3, v[1] /= 3, v } return v } function l(e) { return e[0] *= i["v"], e[1] *= i["v"], e } function u() { return h([0, 22], [45, 22], [22.5, -22]).scale(380).center([22.5, 2]) } function h(e, t, n) { var i = Object(r["geoCentroid"])({ type: "MultiPoint", coordinates: [e, t, n] }), o = [-i[0], -i[1]], a = Object(r["geoRotation"])(o), s = Object(r["geoProjection"])(c(l(a(e)), l(a(t)), l(a(n)))).rotate(o), u = s.center; return delete s.rotate, s.center = function (e) { return arguments.length ? u(a(e)) : a.invert(u()) }, s.clipAngle(90) } }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(1), i = n(31); function o(e) { var t = Object(r["F"])(e); function n(e, n) { return [e, (e ? e / Object(r["y"])(e) : 1) * (Object(r["y"])(n) * Object(r["h"])(e) - t * Object(r["h"])(n))] } return n.invert = t ? function (e, n) { e && (n *= Object(r["y"])(e) / e); var i = Object(r["h"])(e); return [e, 2 * Object(r["g"])(Object(r["B"])(i * i + t * t - n * n) - i, t - n)] } : function (e, t) { return [e, Object(r["e"])(e ? t * Object(r["F"])(e) / e : t)] }, n } t["b"] = function () { return Object(i["a"])(o).scale(249.828).clipAngle(90) } }, function (e, t, n) { "use strict"; t["a"] = a; var r = n(0), i = n(1), o = Object(i["B"])(3); function a(e, t) { return [o * e * (2 * Object(i["h"])(2 * t / 3) - 1) / i["E"], o * i["E"] * Object(i["y"])(t / 3)] } a.invert = function (e, t) { var n = 3 * Object(i["e"])(t / (o * i["E"])); return [i["E"] * e / (o * (2 * Object(i["h"])(2 * n / 3) - 1)), n] }, t["b"] = function () { return Object(r["geoProjection"])(a).scale(156.19) } }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(1), i = n(31); function o(e) { var t = Object(r["h"])(e); function n(e, n) { return [e * t, (1 + t) * Object(r["F"])(n / 2)] } return n.invert = function (e, n) { return [e / t, 2 * Object(r["f"])(n / (1 + t))] }, n } t["b"] = function () { return Object(i["a"])(o).scale(124.75) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { var n = Object(i["B"])(8 / (3 * i["s"])); return [n * e * (1 - Object(i["a"])(t) / i["s"]), n * t] } o.invert = function (e, t) { var n = Object(i["B"])(8 / (3 * i["s"])), r = t / n; return [e / (n * (1 - Object(i["a"])(r) / i["s"])), r] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(165.664) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { var n = Object(i["B"])(4 - 3 * Object(i["y"])(Object(i["a"])(t))); return [2 / Object(i["B"])(6 * i["s"]) * e * n, Object(i["x"])(t) * Object(i["B"])(2 * i["s"] / 3) * (2 - n)] } o.invert = function (e, t) { var n = 2 - Object(i["a"])(t) / Object(i["B"])(2 * i["s"] / 3); return [e * Object(i["B"])(6 * i["s"]) / (2 * n), Object(i["x"])(t) * Object(i["e"])((4 - n * n) / 3)] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(165.664) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { var n = Object(i["B"])(i["s"] * (4 + i["s"])); return [2 / n * e * (1 + Object(i["B"])(1 - 4 * t * t / (i["s"] * i["s"]))), 4 / n * t] } o.invert = function (e, t) { var n = Object(i["B"])(i["s"] * (4 + i["s"])) / 2; return [e * n / (1 + Object(i["B"])(1 - t * t * (4 + i["s"]) / (4 * i["s"]))), t * n / 2] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(180.739) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { var n = (2 + i["o"]) * Object(i["y"])(t); t /= 2; for (var r = 0, o = 1 / 0; r < 10 && Object(i["a"])(o) > i["k"]; r++) { var a = Object(i["h"])(t); t -= o = (t + Object(i["y"])(t) * (a + 2) - n) / (2 * a * (1 + a)) } return [2 / Object(i["B"])(i["s"] * (4 + i["s"])) * e * (1 + Object(i["h"])(t)), 2 * Object(i["B"])(i["s"] / (4 + i["s"])) * Object(i["y"])(t)] } o.invert = function (e, t) { var n = t * Object(i["B"])((4 + i["s"]) / i["s"]) / 2, r = Object(i["e"])(n), o = Object(i["h"])(r); return [e / (2 / Object(i["B"])(i["s"] * (4 + i["s"])) * (1 + o)), Object(i["e"])((r + n * (o + 2)) / (2 + i["o"]))] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(180.739) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { return [e * (1 + Object(i["h"])(t)) / Object(i["B"])(2 + i["s"]), 2 * t / Object(i["B"])(2 + i["s"])] } o.invert = function (e, t) { var n = Object(i["B"])(2 + i["s"]), r = t * n / 2; return [n * e / (1 + Object(i["h"])(r)), r] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(173.044) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { for (var n = (1 + i["o"]) * Object(i["y"])(t), r = 0, o = 1 / 0; r < 10 && Object(i["a"])(o) > i["k"]; r++)t -= o = (t + Object(i["y"])(t) - n) / (1 + Object(i["h"])(t)); return n = Object(i["B"])(2 + i["s"]), [e * (1 + Object(i["h"])(t)) / n, 2 * t / n] } o.invert = function (e, t) { var n = 1 + i["o"], r = Object(i["B"])(n / 2); return [2 * e * r / (1 + Object(i["h"])(t *= r)), Object(i["e"])((t + Object(i["y"])(t)) / n)] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(173.044) } }, function (e, t, n) { "use strict"; t["b"] = s; var r = n(0), i = n(130), o = n(1), a = 3 + 2 * o["D"]; function s(e, t) { var n = Object(o["y"])(e /= 2), r = Object(o["h"])(e), i = Object(o["B"])(Object(o["h"])(t)), s = Object(o["h"])(t /= 2), c = Object(o["y"])(t) / (s + o["D"] * r * i), l = Object(o["B"])(2 / (1 + c * c)), u = Object(o["B"])((o["D"] * s + (r + n) * i) / (o["D"] * s + (r - n) * i)); return [a * (l * (u - 1 / u) - 2 * Object(o["p"])(u)), a * (l * c * (u + 1 / u) - 2 * Object(o["f"])(c))] } s.invert = function (e, t) { if (!(n = i["a"].invert(e / 1.2, 1.065 * t))) return null; var n, r = n[0], s = n[1], c = 20; e /= a, t /= a; do { var l = r / 2, u = s / 2, h = Object(o["y"])(l), f = Object(o["h"])(l), d = Object(o["y"])(u), p = Object(o["h"])(u), v = Object(o["h"])(s), m = Object(o["B"])(v), g = d / (p + o["D"] * f * m), y = g * g, b = Object(o["B"])(2 / (1 + y)), x = o["D"] * p + (f + h) * m, w = o["D"] * p + (f - h) * m, _ = x / w, C = Object(o["B"])(_), M = C - 1 / C, O = C + 1 / C, k = b * M - 2 * Object(o["p"])(C) - e, S = b * g * O - 2 * Object(o["f"])(g) - t, T = d && o["C"] * m * h * y / d, A = (o["D"] * f * p + m) / (2 * (p + o["D"] * f * m) * (p + o["D"] * f * m) * m), L = -.5 * g * b * b * b, j = L * T, z = L * A, E = (E = 2 * p + o["D"] * m * (f - h)) * E * C, P = (o["D"] * f * p * m + v) / E, D = -o["D"] * h * d / (m * E), H = M * j - 2 * P / C + b * (P + P / _), V = M * z - 2 * D / C + b * (D + D / _), I = g * O * j - 2 * T / (1 + y) + b * O * T + b * g * (P - P / _), N = g * O * z - 2 * A / (1 + y) + b * O * A + b * g * (D - D / _), R = V * I - N * H; if (!R) break; var F = (S * V - k * N) / R, Y = (k * I - S * H) / R; r -= F, s = Object(o["q"])(-o["o"], Object(o["r"])(o["o"], s - Y)) } while ((Object(o["a"])(F) > o["k"] || Object(o["a"])(Y) > o["k"]) && --c > 0); return Object(o["a"])(Object(o["a"])(s) - o["o"]) < o["k"] ? [0, s] : c && [r, s] }, t["a"] = function () { return Object(r["geoProjection"])(s).scale(62.5271) } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(0), i = n(1), o = Object(i["h"])(35 * i["v"]); function a(e, t) { var n = Object(i["F"])(t / 2); return [e * o * Object(i["B"])(1 - n * n), (1 + o) * n] } a.invert = function (e, t) { var n = t / (1 + o); return [e && e / (o * Object(i["B"])(1 - n * n)), 2 * Object(i["f"])(n)] }, t["a"] = function () { return Object(r["geoProjection"])(a).scale(137.152) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { var n = t / 2, r = Object(i["h"])(n); return [2 * e / i["E"] * Object(i["h"])(t) * r * r, i["E"] * Object(i["F"])(n)] } o.invert = function (e, t) { var n = Object(i["f"])(t / i["E"]), r = Object(i["h"])(n), o = 2 * n; return [e * i["E"] / 2 / (Object(i["h"])(o) * r * r), o] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(135.264) } }, function (e, t, n) { "use strict"; var r = n(0), i = n(1); function o(e) { return [e[0] / 2, Object(i["e"])(Object(i["F"])(e[1] / 2 * i["v"])) * i["j"]] } function a(e) { return [2 * e[0], 2 * Object(i["f"])(Object(i["y"])(e[1] * i["v"])) * i["j"]] } t["a"] = function (e) { null == e && (e = r["geoOrthographic"]); var t = e(), n = Object(r["geoEquirectangular"])().scale(i["j"]).precision(0).clipAngle(null).translate([0, 0]); function s(e) { return t(o(e)) } function c(e) { s[e] = function (n) { return arguments.length ? (t[e](n), s) : t[e]() } } return t.invert && (s.invert = function (e) { return a(t.invert(e)) }), s.stream = function (e) { var r = t.stream(e), o = n.stream({ point: function (e, t) { r.point(e / 2, Object(i["e"])(Object(i["F"])(-t / 2 * i["v"])) * i["j"]) }, lineStart: function () { r.lineStart() }, lineEnd: function () { r.lineEnd() }, polygonStart: function () { r.polygonStart() }, polygonEnd: function () { r.polygonEnd() } }); return o.sphere = r.sphere, o }, s.rotate = function (e) { return arguments.length ? (n.rotate(e), s) : n.rotate() }, s.center = function (e) { return arguments.length ? (t.center(o(e)), s) : a(t.center()) }, c("clipAngle"), c("clipExtent"), c("scale"), c("translate"), c("precision"), s.scale(249.5) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { var n = 2 * i["s"] / t, o = e * e; function c(t, c) { var l = Object(r["geoAzimuthalEquidistantRaw"])(t, c), u = l[0], h = l[1], f = u * u + h * h; if (f > o) { var d = Object(i["B"])(f), p = Object(i["g"])(h, u), v = n * Object(i["w"])(p / n), m = p - v, g = e * Object(i["h"])(m), y = (e * Object(i["y"])(m) - m * Object(i["y"])(g)) / (i["o"] - g), b = a(m, y), x = (i["s"] - e) / s(b, g, i["s"]); u = d; var w, _ = 50; do { u -= w = (e + s(b, g, u) * x - d) / (b(u) * x) } while (Object(i["a"])(w) > i["k"] && --_ > 0); h = m * Object(i["y"])(u), u < i["o"] && (h -= y * (u - i["o"])); var C = Object(i["y"])(v), M = Object(i["h"])(v); l[0] = u * M - h * C, l[1] = u * C + h * M } return l } return c.invert = function (t, c) { var l = t * t + c * c; if (l > o) { var u = Object(i["B"])(l), h = Object(i["g"])(c, t), f = n * Object(i["w"])(h / n), d = h - f; t = u * Object(i["h"])(d), c = u * Object(i["y"])(d); var p = t - i["o"], v = Object(i["y"])(t), m = c / v, g = t < i["o"] ? 1 / 0 : 0, y = 10; while (1) { var b = e * Object(i["y"])(m), x = e * Object(i["h"])(m), w = Object(i["y"])(x), _ = i["o"] - x, C = (b - m * w) / _, M = a(m, C); if (Object(i["a"])(g) < i["l"] || !--y) break; m -= g = (m * v - C * p - c) / (v - 2 * p * (_ * (x + m * b * Object(i["h"])(x) - w) - b * (b - m * w)) / (_ * _)) } u = e + s(M, x, t) * (i["s"] - e) / s(M, x, i["s"]), h = f + m, t = u * Object(i["h"])(h), c = u * Object(i["y"])(h) } return r["geoAzimuthalEquidistantRaw"].invert(t, c) }, c } function a(e, t) { return function (n) { var r = e * Object(i["h"])(n); return n < i["o"] && (r -= t), Object(i["B"])(1 + r * r) } } function s(e, t, n) { for (var r = 50, i = (n - t) / r, o = e(t) + e(n), a = 1, s = t; a < r; ++a)o += 2 * e(s += i); return .5 * o * i } t["a"] = function () { var e = 6, t = 30 * i["v"], n = Object(i["h"])(t), a = Object(i["y"])(t), s = Object(r["geoProjectionMutator"])(o), c = s(t, e), l = c.stream, u = .01, h = -Object(i["h"])(u * i["v"]), f = Object(i["y"])(u * i["v"]); return c.radius = function (r) { return arguments.length ? (n = Object(i["h"])(t = r * i["v"]), a = Object(i["y"])(t), s(t, e)) : t * i["j"] }, c.lobes = function (n) { return arguments.length ? s(t, e = +n) : e }, c.stream = function (t) { var r = c.rotate(), o = l(t), s = (c.rotate([0, 0]), l(t)); return c.rotate(r), o.sphere = function () { s.polygonStart(), s.lineStart(); for (var t = 0, r = 2 * i["s"] / e, o = 0; t < e; ++t, o -= r)s.point(Object(i["g"])(f * Object(i["h"])(o), h) * i["j"], Object(i["e"])(f * Object(i["y"])(o)) * i["j"]), s.point(Object(i["g"])(a * Object(i["h"])(o - r / 2), n) * i["j"], Object(i["e"])(a * Object(i["y"])(o - r / 2)) * i["j"]); s.lineEnd(), s.polygonEnd() }, o }, c.rotate([90, -40]).scale(91.7095).clipAngle(179.999) } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return o })); var r = n(0), i = n(52), o = Object(i["a"])(2.8284, -1.6988, .75432, -.18071, 1.76003, -.38914, .042555); t["a"] = function () { return Object(r["geoProjection"])(o).scale(149.995) } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return o })); var r = n(0), i = n(52), o = Object(i["a"])(2.583819, -.835827, .170354, -.038094, 1.543313, -.411435, .082742); t["a"] = function () { return Object(r["geoProjection"])(o).scale(153.93) } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return a })); var r = n(0), i = n(52), o = n(1), a = Object(i["a"])(5 / 6 * o["s"], -.62636, -.0344, 0, 1.3493, -.05524, 0, .045); t["a"] = function () { return Object(r["geoProjection"])(a).scale(130.945) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { var n = e * e, r = t * t; return [e * (1 - .162388 * r) * (.87 - 952426e-9 * n * n), t * (1 + r / 12)] } o.invert = function (e, t) { var n, r = e, o = t, a = 50; do { var s = o * o; o -= n = (o * (1 + s / 12) - t) / (1 + s / 4) } while (Object(i["a"])(n) > i["k"] && --a > 0); a = 50, e /= 1 - .162388 * s; do { var c = (c = r * r) * c; r -= n = (r * (.87 - 952426e-9 * c) - e) / (.87 - .00476213 * c) } while (Object(i["a"])(n) > i["k"] && --a > 0); return [r, o] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(131.747) } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return o })); var r = n(0), i = n(52), o = Object(i["a"])(2.6516, -.76534, .19123, -.047094, 1.36289, -.13965, .031762); t["a"] = function () { return Object(r["geoProjection"])(o).scale(131.087) } }, function (e, t, n) { "use strict"; t["c"] = i, t["b"] = a, t["a"] = s; var r = n(1); function i(e, t, n) { var r, i, a; return e ? (r = o(e, n), t ? (i = o(t, 1 - n), a = i[1] * i[1] + n * r[0] * r[0] * i[0] * i[0], [[r[0] * i[2] / a, r[1] * r[2] * i[0] * i[1] / a], [r[1] * i[1] / a, -r[0] * r[2] * i[0] * i[2] / a], [r[2] * i[1] * i[2] / a, -n * r[0] * r[1] * i[0] / a]]) : [[r[0], 0], [r[1], 0], [r[2], 0]]) : (i = o(t, 1 - n), [[0, i[0] / i[1]], [1 / i[1], 0], [i[2] / i[1], 0]]) } function o(e, t) { var n, i, o, a, s; if (t < r["k"]) return a = Object(r["y"])(e), i = Object(r["h"])(e), n = t * (e - a * i) / 4, [a - n * i, i + n * a, 1 - t * a * a / 2, e - n]; if (t >= 1 - r["k"]) return n = (1 - t) / 4, i = Object(r["i"])(e), a = Object(r["G"])(e), o = 1 / i, s = i * Object(r["A"])(e), [a + n * (s - e) / (i * i), o - n * a * o * (s - e), o + n * a * o * (s + e), 2 * Object(r["f"])(Object(r["m"])(e)) - r["o"] + n * (s - e) / i]; var c = [1, 0, 0, 0, 0, 0, 0, 0, 0], l = [Object(r["B"])(t), 0, 0, 0, 0, 0, 0, 0, 0], u = 0; i = Object(r["B"])(1 - t), s = 1; while (Object(r["a"])(l[u] / c[u]) > r["k"] && u < 8) n = c[u++], l[u] = (n - i) / 2, c[u] = (n + i) / 2, i = Object(r["B"])(n * i), s *= 2; o = s * c[u] * e; do { a = l[u] * Object(r["y"])(i = o) / c[u], o = (Object(r["e"])(a) + o) / 2 } while (--u); return [Object(r["y"])(o), a = Object(r["h"])(o), a / Object(r["h"])(o - i), o] } function a(e, t, n) { var i = Object(r["a"])(e), o = Object(r["a"])(t), a = Object(r["A"])(o); if (i) { var c = 1 / Object(r["y"])(i), l = 1 / (Object(r["F"])(i) * Object(r["F"])(i)), u = -(l + n * (a * a * c * c) - 1 + n), h = (n - 1) * l, f = (-u + Object(r["B"])(u * u - 4 * h)) / 2; return [s(Object(r["f"])(1 / Object(r["B"])(f)), n) * Object(r["x"])(e), s(Object(r["f"])(Object(r["B"])((f / l - 1) / n)), 1 - n) * Object(r["x"])(t)] } return [0, s(Object(r["f"])(a), 1 - n) * Object(r["x"])(t)] } function s(e, t) { if (!t) return e; if (1 === t) return Object(r["p"])(Object(r["F"])(e / 2 + r["u"])); for (var n = 1, i = Object(r["B"])(1 - t), o = Object(r["B"])(t), a = 0; Object(r["a"])(o) > r["k"]; a++) { if (e % r["s"]) { var s = Object(r["f"])(i * Object(r["F"])(e) / n); s < 0 && (s += r["s"]), e += s + ~~(e / r["s"]) * r["s"] } else e += e; o = (n + i) / 2, i = Object(r["B"])(n * i), o = ((n = o) - i) / 2 } return e / (Object(r["t"])(2, a) * n) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { if (arguments.length < 2 && (t = e), 1 === t) return r["geoAzimuthalEqualAreaRaw"]; if (t === 1 / 0) return a; function n(n, i) { var o = Object(r["geoAzimuthalEqualAreaRaw"])(n / t, i); return o[0] *= e, o } return n.invert = function (n, i) { var o = r["geoAzimuthalEqualAreaRaw"].invert(n / e, i); return o[0] *= t, o }, n } function a(e, t) { return [e * Object(i["h"])(t) / Object(i["h"])(t /= 2), 2 * Object(i["y"])(t)] } a.invert = function (e, t) { var n = 2 * Object(i["e"])(t / 2); return [e * Object(i["h"])(n / 2) / Object(i["h"])(n), n] }, t["a"] = function () { var e = 2, t = Object(r["geoProjectionMutator"])(o), n = t(e); return n.coefficient = function (n) { return arguments.length ? t(e = +n) : e }, n.scale(169.529) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e) { var t = Object(i["y"])(e), n = Object(i["h"])(e), r = a(e); function o(e, o) { var a = r(e, o); e = a[0], o = a[1]; var s = Object(i["y"])(o), c = Object(i["h"])(o), l = Object(i["h"])(e), u = Object(i["b"])(t * s + n * c * l), h = Object(i["y"])(u), f = Object(i["a"])(h) > i["k"] ? u / h : 1; return [f * n * Object(i["y"])(e), (Object(i["a"])(e) > i["o"] ? f : -f) * (t * c - n * s * l)] } return r.invert = a(-e), o.invert = function (e, n) { var o = Object(i["B"])(e * e + n * n), a = -Object(i["y"])(o), s = Object(i["h"])(o), c = o * s, l = -n * a, u = o * t, h = Object(i["B"])(c * c + l * l - u * u), f = Object(i["g"])(c * u + l * h, l * u - c * h), d = (o > i["o"] ? -1 : 1) * Object(i["g"])(e * a, o * Object(i["h"])(f) * s + n * Object(i["y"])(f) * a); return r.invert(d, f) }, o } function a(e) { var t = Object(i["y"])(e), n = Object(i["h"])(e); return function (e, r) { var o = Object(i["h"])(r), a = Object(i["h"])(e) * o, s = Object(i["y"])(e) * o, c = Object(i["y"])(r); return [Object(i["g"])(s, a * n - c * t), Object(i["e"])(c * n + a * t)] } } t["a"] = function () { var e = 0, t = Object(r["geoProjectionMutator"])(o), n = t(e), a = n.rotate, s = n.stream, c = Object(r["geoCircle"])(); return n.parallel = function (r) { if (!arguments.length) return e * i["j"]; var o = n.rotate(); return t(e = r * i["v"]).rotate(o) }, n.rotate = function (t) { return arguments.length ? (a.call(n, [t[0], t[1] - e * i["j"]]), c.center([-t[0], -t[1]]), n) : (t = a.call(n), t[1] += e * i["j"], t) }, n.stream = function (e) { return e = s(e), e.sphere = function () { e.polygonStart(); var t, n = .01, r = c.radius(90 - n)().coordinates[0], i = r.length - 1, o = -1; e.lineStart(); while (++o < i) e.point((t = r[o])[0], t[1]); e.lineEnd(), r = c.radius(90 + n)().coordinates[0], i = r.length - 1, e.lineStart(); while (--o >= 0) e.point((t = r[o])[0], t[1]); e.lineEnd(), e.polygonEnd() }, e }, n.scale(79.4187).parallel(45).clipAngle(179.999) } }, function (e, t, n) { "use strict"; t["b"] = u; var r = n(14), i = n(0), o = n(72), a = n(132), s = n(1), c = 41 + 48 / 36 + 37 / 3600, l = Object(a["a"])(0); function u(e) { var t = c * s["v"], n = Object(o["a"])(s["s"], t)[0] - Object(o["a"])(-s["s"], t)[0], r = l(0, t)[1], i = Object(o["a"])(0, t)[1], a = s["E"] - i, u = s["H"] / e, h = 4 / s["H"], f = r + a * a * 4 / s["H"]; function d(c, d) { var p, v = Object(s["a"])(d); if (v > t) { var m = Object(s["r"])(e - 1, Object(s["q"])(0, Object(s["n"])((c + s["s"]) / u))); c += s["s"] * (e - 1) / e - m * u, p = Object(o["a"])(c, v), p[0] = p[0] * s["H"] / n - s["H"] * (e - 1) / (2 * e) + m * s["H"] / e, p[1] = r + 4 * (p[1] - i) * a / s["H"], d < 0 && (p[1] = -p[1]) } else p = l(c, d); return p[0] *= h, p[1] /= f, p } return d.invert = function (t, c) { t /= h, c *= f; var d = Object(s["a"])(c); if (d > r) { var p = Object(s["r"])(e - 1, Object(s["q"])(0, Object(s["n"])((t + s["s"]) / u))); t = (t + s["s"] * (e - 1) / e - p * u) * n / s["H"]; var v = o["a"].invert(t, .25 * (d - r) * s["H"] / a + i); return v[0] -= s["s"] * (e - 1) / e - p * u, c < 0 && (v[1] = -v[1]), v } return l.invert(t, c) }, d } function h(e) { return { type: "Polygon", coordinates: [Object(r["range"])(-180, 180 + e / 2, e).map((function (e, t) { return [e, 1 & t ? 89.999999 : c] })).concat(Object(r["range"])(180, -180 - e / 2, -e).map((function (e, t) { return [e, 1 & t ? -89.999999 : -c] })))] } } t["a"] = function () { var e = 4, t = Object(i["geoProjectionMutator"])(u), n = t(e), r = n.stream; return n.lobes = function (n) { return arguments.length ? t(e = +n) : e }, n.stream = function (t) { var o = n.rotate(), a = r(t), s = (n.rotate([0, 0]), r(t)); return n.rotate(o), a.sphere = function () { Object(i["geoStream"])(h(180 / e), s) }, a }, n.scale(239.75) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e) { var t, n = 1 + e, r = Object(i["y"])(1 / n), o = Object(i["e"])(r), a = 2 * Object(i["B"])(i["s"] / (t = i["s"] + 4 * o * n)), s = .5 * a * (n + Object(i["B"])(e * (2 + e))), c = e * e, l = n * n; function u(r, u) { var h, f, d = 1 - Object(i["y"])(u); if (d && d < 2) { var p, v = i["o"] - u, m = 25; do { var g = Object(i["y"])(v), y = Object(i["h"])(v), b = o + Object(i["g"])(g, n - y), x = 1 + l - 2 * n * y; v -= p = (v - c * o - n * g + x * b - .5 * d * t) / (2 * n * g * b) } while (Object(i["a"])(p) > i["l"] && --m > 0); h = a * Object(i["B"])(x), f = r * b / i["s"] } else h = a * (e + d), f = r * o / i["s"]; return [h * Object(i["y"])(f), s - h * Object(i["h"])(f)] } return u.invert = function (e, r) { var u = e * e + (r -= s) * r, h = (1 + l - u / (a * a)) / (2 * n), f = Object(i["b"])(h), d = Object(i["y"])(f), p = o + Object(i["g"])(d, n - h); return [Object(i["e"])(e / Object(i["B"])(u)) * i["s"] / p, Object(i["e"])(1 - 2 * (f - c * o - n * d + (1 + l - 2 * n * h) * p) / t)] }, u } t["a"] = function () { var e = 1, t = Object(r["geoProjectionMutator"])(o), n = t(e); return n.ratio = function (n) { return arguments.length ? t(e = +n) : e }, n.scale(167.774).center([0, 18.67]) } }, function (e, t, n) { "use strict"; var r = n(131), i = n(23), o = [[[[-180, 0], [-100, 90], [-40, 0]], [[-40, 0], [30, 90], [180, 0]]], [[[-180, 0], [-160, -90], [-100, 0]], [[-100, 0], [-60, -90], [-20, 0]], [[-20, 0], [20, -90], [80, 0]], [[80, 0], [140, -90], [180, 0]]]]; t["a"] = function () { return Object(i["a"])(r["a"], o).scale(160.857) } }, function (e, t, n) { "use strict"; var r = n(136), i = n(23), o = [[[[-180, 0], [-100, 90], [-40, 0]], [[-40, 0], [30, 90], [180, 0]]], [[[-180, 0], [-160, -90], [-100, 0]], [[-100, 0], [-60, -90], [-20, 0]], [[-20, 0], [20, -90], [80, 0]], [[80, 0], [140, -90], [180, 0]]]]; t["a"] = function () { return Object(i["a"])(r["b"], o).scale(152.63) } }, function (e, t, n) { "use strict"; var r = n(21), i = n(23), o = [[[[-180, 0], [-100, 90], [-40, 0]], [[-40, 0], [30, 90], [180, 0]]], [[[-180, 0], [-160, -90], [-100, 0]], [[-100, 0], [-60, -90], [-20, 0]], [[-20, 0], [20, -90], [80, 0]], [[80, 0], [140, -90], [180, 0]]]]; t["a"] = function () { return Object(i["a"])(r["d"], o).scale(169.529) } }, function (e, t, n) { "use strict"; var r = n(21), i = n(23), o = [[[[-180, 0], [-90, 90], [0, 0]], [[0, 0], [90, 90], [180, 0]]], [[[-180, 0], [-90, -90], [0, 0]], [[0, 0], [90, -90], [180, 0]]]]; t["a"] = function () { return Object(i["a"])(r["d"], o).scale(169.529).rotate([20, 0]) } }, function (e, t, n) { "use strict"; var r = n(73), i = n(23), o = [[[[-180, 35], [-30, 90], [0, 35]], [[0, 35], [30, 90], [180, 35]]], [[[-180, -10], [-102, -90], [-65, -10]], [[-65, -10], [5, -90], [77, -10]], [[77, -10], [103, -90], [180, -10]]]]; t["a"] = function () { return Object(i["a"])(r["c"], o).rotate([-20, -55]).scale(164.263).center([0, -5.4036]) } }, function (e, t, n) { "use strict"; var r = n(38), i = n(23), o = [[[[-180, 0], [-110, 90], [-40, 0]], [[-40, 0], [0, 90], [40, 0]], [[40, 0], [110, 90], [180, 0]]], [[[-180, 0], [-110, -90], [-40, 0]], [[-40, 0], [0, -90], [40, 0]], [[40, 0], [110, -90], [180, 0]]]]; t["a"] = function () { return Object(i["a"])(r["b"], o).scale(152.63).rotate([-20, 0]) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { return [3 / i["H"] * e * Object(i["B"])(i["s"] * i["s"] / 3 - t * t), t] } o.invert = function (e, t) { return [i["H"] / 3 * e / Object(i["B"])(i["s"] * i["s"] / 3 - t * t), t] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(158.837) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e) { function t(t, n) { if (Object(i["a"])(Object(i["a"])(n) - i["o"]) < i["k"]) return [0, n < 0 ? -2 : 2]; var r = Object(i["y"])(n), o = Object(i["t"])((1 + r) / (1 - r), e / 2), a = .5 * (o + 1 / o) + Object(i["h"])(t *= e); return [2 * Object(i["y"])(t) / a, (o - 1 / o) / a] } return t.invert = function (t, n) { var r = Object(i["a"])(n); if (Object(i["a"])(r - 2) < i["k"]) return t ? null : [0, Object(i["x"])(n) * i["o"]]; if (r > 2) return null; t /= 2, n /= 2; var o = t * t, a = n * n, s = 2 * n / (1 + o + a); return s = Object(i["t"])((1 + s) / (1 - s), 1 / e), [Object(i["g"])(2 * t, 1 - o - a) / e, Object(i["e"])((s - 1) / (s + 1))] }, t } t["a"] = function () { var e = .5, t = Object(r["geoProjectionMutator"])(o), n = t(e); return n.spacing = function (n) { return arguments.length ? t(e = +n) : e }, n.scale(124.75) } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(0), i = n(1), o = i["s"] / i["D"]; function a(e, t) { return [e * (1 + Object(i["B"])(Object(i["h"])(t))) / 2, t / (Object(i["h"])(t / 2) * Object(i["h"])(e / 6))] } a.invert = function (e, t) { var n = Object(i["a"])(e), r = Object(i["a"])(t), a = i["k"], s = i["o"]; r < o ? s *= r / o : a += 6 * Object(i["b"])(o / r); for (var c = 0; c < 25; c++) { var l = Object(i["y"])(s), u = Object(i["B"])(Object(i["h"])(s)), h = Object(i["y"])(s / 2), f = Object(i["h"])(s / 2), d = Object(i["y"])(a / 6), p = Object(i["h"])(a / 6), v = .5 * a * (1 + u) - n, m = s / (f * p) - r, g = u ? -.25 * a * l / u : 0, y = .5 * (1 + u), b = (1 + .5 * s * h / f) / (f * p), x = s / f * (d / 6) / (p * p), w = g * x - b * y, _ = (v * x - m * y) / w, C = (m * g - v * b) / w; if (s -= _, a -= C, Object(i["a"])(_) < i["k"] && Object(i["a"])(C) < i["k"]) break } return [e < 0 ? -a : a, t < 0 ? -s : s] }, t["a"] = function () { return Object(r["geoProjection"])(a).scale(97.2672) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { var n = e * e, r = t * t; return [e * (.975534 + r * (-.0143059 * n - .119161 + -.0547009 * r)), t * (1.00384 + n * (.0802894 + -.02855 * r + 199025e-9 * n) + r * (.0998909 + -.0491032 * r))] } o.invert = function (e, t) { var n = Object(i["x"])(e) * i["s"], r = t / 2, o = 50; do { var a = n * n, s = r * r, c = n * r, l = n * (.975534 + s * (-.0143059 * a - .119161 + -.0547009 * s)) - e, u = r * (1.00384 + a * (.0802894 + -.02855 * s + 199025e-9 * a) + s * (.0998909 + -.0491032 * s)) - t, h = .975534 - s * (.119161 + 3 * a * .0143059 + .0547009 * s), f = -c * (.238322 + .2188036 * s + .0286118 * a), d = c * (.1605788 + 7961e-7 * a + -.0571 * s), p = 1.00384 + a * (.0802894 + 199025e-9 * a) + s * (3 * (.0998909 - .02855 * a) - .245516 * s), v = f * d - p * h, m = (u * f - l * p) / v, g = (l * d - u * h) / v; n -= m, r -= g } while ((Object(i["a"])(m) > i["k"] || Object(i["a"])(g) > i["k"]) && --o > 0); return o && [n, r] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(139.98) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { return [Object(i["y"])(e) / Object(i["h"])(t), Object(i["F"])(t) * Object(i["h"])(e)] } o.invert = function (e, t) { var n = e * e, r = t * t, o = r + 1, a = e ? i["C"] * Object(i["B"])((o - Object(i["B"])(n * n + 2 * n * (r - 1) + o * o)) / n + 1) : 1 / Object(i["B"])(o); return [Object(i["e"])(e * a), Object(i["x"])(t) * Object(i["b"])(a)] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(144.049).clipAngle(89.999) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(31), i = n(1); function o(e) { var t = Object(i["h"])(e), n = Object(i["F"])(i["u"] + e / 2); function r(r, o) { var a = o - e, s = Object(i["a"])(a) < i["k"] ? r * t : Object(i["a"])(s = i["u"] + o / 2) < i["k"] || Object(i["a"])(Object(i["a"])(s) - i["o"]) < i["k"] ? 0 : r * a / Object(i["p"])(Object(i["F"])(s) / n); return [s, a] } return r.invert = function (r, o) { var a, s = o + e; return [Object(i["a"])(o) < i["k"] ? r / t : Object(i["a"])(a = i["u"] + s / 2) < i["k"] || Object(i["a"])(Object(i["a"])(a) - i["o"]) < i["k"] ? 0 : r * Object(i["p"])(Object(i["F"])(a) / n) / o, s] }, r } t["a"] = function () { return Object(r["a"])(o).parallel(40).scale(158.837) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { return [e, 1.25 * Object(i["p"])(Object(i["F"])(i["u"] + .4 * t))] } o.invert = function (e, t) { return [e, 2.5 * Object(i["f"])(Object(i["m"])(.8 * t)) - .625 * i["s"]] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(108.318) } }, function (e, t, n) { "use strict"; t["g"] = o, t["b"] = h, t["c"] = f, t["d"] = d, t["f"] = p, t["e"] = v, t["a"] = m; var r = n(0), i = n(1); function o(e) { var t = e.length - 1; function n(n, r) { var o, a = Object(i["h"])(r), s = 2 / (1 + a * Object(i["h"])(n)), c = s * a * Object(i["y"])(n), l = s * Object(i["y"])(r), u = t, h = e[u], f = h[0], d = h[1]; while (--u >= 0) h = e[u], f = h[0] + c * (o = f) - l * d, d = h[1] + c * d + l * o; return f = c * (o = f) - l * d, d = c * d + l * o, [f, d] } return n.invert = function (n, r) { var o = 20, a = n, s = r; do { var c, l = t, u = e[l], h = u[0], f = u[1], d = 0, p = 0; while (--l >= 0) u = e[l], d = h + a * (c = d) - s * p, p = f + a * p + s * c, h = u[0] + a * (c = h) - s * f, f = u[1] + a * f + s * c; d = h + a * (c = d) - s * p, p = f + a * p + s * c, h = a * (c = h) - s * f - n, f = a * f + s * c - r; var v, m, g = d * d + p * p; a -= v = (h * d + f * p) / g, s -= m = (f * d - h * p) / g } while (Object(i["a"])(v) + Object(i["a"])(m) > i["k"] * i["k"] && --o > 0); if (o) { var y = Object(i["B"])(a * a + s * s), b = 2 * Object(i["f"])(.5 * y), x = Object(i["y"])(b); return [Object(i["g"])(a * x, y * Object(i["h"])(b)), y ? Object(i["e"])(s * x / y) : 0] } }, n } var a = [[.9972523, 0], [.0052513, -.0041175], [.0074606, .0048125], [-.0153783, -.1968253], [.0636871, -.1408027], [.3660976, -.2937382]], s = [[.98879, 0], [0, 0], [-.050909, 0], [0, 0], [.075528, 0]], c = [[.984299, 0], [.0211642, .0037608], [-.1036018, -.0575102], [-.0329095, -.0320119], [.0499471, .1223335], [.026046, .0899805], [7388e-7, -.1435792], [.0075848, -.1334108], [-.0216473, .0776645], [-.0225161, .0853673]], l = [[.9245, 0], [0, 0], [.01943, 0]], u = [[.721316, 0], [0, 0], [-.00881625, -.00617325]]; function h() { return m(a, [152, -64]).scale(1500).center([-160.908, 62.4864]).clipAngle(25) } function f() { return m(s, [95, -38]).scale(1e3).clipAngle(55).center([-96.5563, 38.8675]) } function d() { return m(c, [120, -45]).scale(359.513).clipAngle(55).center([-117.474, 53.0628]) } function p() { return m(l, [-20, -18]).scale(209.091).center([20, 16.7214]).clipAngle(82) } function v() { return m(u, [165, 10]).scale(250).clipAngle(130).center([-165, -10]) } function m(e, t) { var n = Object(r["geoProjection"])(o(e)).rotate(t).clipAngle(90), i = Object(r["geoRotation"])(t), a = n.center; return delete n.rotate, n.center = function (e) { return arguments.length ? a(i(e)) : i.invert(a()) }, n } }, function (e, t, n) { "use strict"; t["b"] = s; var r = n(0), i = n(1), o = Object(i["B"])(6), a = Object(i["B"])(7); function s(e, t) { var n = Object(i["e"])(7 * Object(i["y"])(t) / (3 * o)); return [o * e * (2 * Object(i["h"])(2 * n / 3) - 1) / a, 9 * Object(i["y"])(n / 3) / a] } s.invert = function (e, t) { var n = 3 * Object(i["e"])(t * a / 9); return [e * a / (o * (2 * Object(i["h"])(2 * n / 3) - 1)), Object(i["e"])(3 * Object(i["y"])(n) * o / 7)] }, t["a"] = function () { return Object(r["geoProjection"])(s).scale(164.859) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { for (var n, r = (1 + i["C"]) * Object(i["y"])(t), o = t, a = 0; a < 25; a++)if (o -= n = (Object(i["y"])(o / 2) + Object(i["y"])(o) - r) / (.5 * Object(i["h"])(o / 2) + Object(i["h"])(o)), Object(i["a"])(n) < i["k"]) break; return [e * (1 + 2 * Object(i["h"])(o) / Object(i["h"])(o / 2)) / (3 * i["D"]), 2 * Object(i["B"])(3) * Object(i["y"])(o / 2) / Object(i["B"])(2 + i["D"])] } o.invert = function (e, t) { var n = t * Object(i["B"])(2 + i["D"]) / (2 * Object(i["B"])(3)), r = 2 * Object(i["e"])(n); return [3 * i["D"] * e / (1 + 2 * Object(i["h"])(r) / Object(i["h"])(r / 2)), Object(i["e"])((n + Object(i["y"])(r)) / (1 + i["C"]))] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(188.209) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { for (var n, r = Object(i["B"])(6 / (4 + i["s"])), o = (1 + i["s"] / 4) * Object(i["y"])(t), a = t / 2, s = 0; s < 25; s++)if (a -= n = (a / 2 + Object(i["y"])(a) - o) / (.5 + Object(i["h"])(a)), Object(i["a"])(n) < i["k"]) break; return [r * (.5 + Object(i["h"])(a)) * e / 1.5, r * a] } o.invert = function (e, t) { var n = Object(i["B"])(6 / (4 + i["s"])), r = t / n; return Object(i["a"])(Object(i["a"])(r) - i["o"]) < i["k"] && (r = r < 0 ? -i["o"] : i["o"]), [1.5 * e / (n * (.5 + Object(i["h"])(r))), Object(i["e"])((r / 2 + Object(i["y"])(r)) / (1 + i["s"] / 4))] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(166.518) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { var n = t * t, r = n * n; return [e * (.8707 - .131979 * n + r * (r * (.003971 * n - .001529 * r) - .013791)), t * (1.007226 + n * (.015085 + r * (.028874 * n - .044475 - .005916 * r)))] } o.invert = function (e, t) { var n, r = t, o = 25; do { var a = r * r, s = a * a; r -= n = (r * (1.007226 + a * (.015085 + s * (.028874 * a - .044475 - .005916 * s))) - t) / (1.007226 + a * (.045255 + s * (.259866 * a - .311325 - .005916 * 11 * s))) } while (Object(i["a"])(n) > i["k"] && --o > 0); return [e / (.8707 + (a = r * r) * (a * (a * a * a * (.003971 - .001529 * a) - .013791) - .131979)), r] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(175.295) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { var n = t * t, r = n * n, i = n * r; return [e * (.84719 - .13063 * n + i * i * (.05494 * n - .04515 - .02326 * r + .00331 * i)), t * (1.01183 + r * r * (.01926 * n - .02625 - .00396 * r))] } o.invert = function (e, t) { var n, r, o, a, s = t, c = 25; do { r = s * s, o = r * r, s -= n = (s * (1.01183 + o * o * (.01926 * r - .02625 - .00396 * o)) - t) / (1.01183 + o * o * (.21186 * r - .23625 + -.05148 * o)) } while (Object(i["a"])(n) > i["l"] && --c > 0); return r = s * s, o = r * r, a = r * o, [e / (.84719 - .13063 * r + a * a * (.05494 * r - .04515 - .02326 * o + .00331 * a)), s] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(175.295) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { return [e * (1 + Object(i["h"])(t)) / 2, 2 * (t - Object(i["F"])(t / 2))] } o.invert = function (e, t) { for (var n = t / 2, r = 0, o = 1 / 0; r < 10 && Object(i["a"])(o) > i["k"]; ++r) { var a = Object(i["h"])(t / 2); t -= o = (t - Object(i["F"])(t / 2) - n) / (1 - .5 / (a * a)) } return [2 * e / (1 + Object(i["h"])(t)), t] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(152.63) } }, function (e, t, n) { "use strict"; t["b"] = p; var r = n(0), i = n(1), o = 1.0148, a = .23185, s = -.14499, c = .02406, l = o, u = 5 * a, h = 7 * s, f = 9 * c, d = 1.790857183; function p(e, t) { var n = t * t; return [e, t * (o + n * n * (a + n * (s + c * n)))] } p.invert = function (e, t) { t > d ? t = d : t < -d && (t = -d); var n, r = t; do { var p = r * r; r -= n = (r * (o + p * p * (a + p * (s + c * p))) - t) / (l + p * p * (u + p * (h + f * p))) } while (Object(i["a"])(n) > i["k"]); return [e, r] }, t["a"] = function () { return Object(r["geoProjection"])(p).scale(139.319) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { if (Object(i["a"])(t) < i["k"]) return [e, 0]; var n = Object(i["F"])(t), r = e * Object(i["y"])(t); return [Object(i["y"])(r) / n, t + (1 - Object(i["h"])(r)) / n] } o.invert = function (e, t) { if (Object(i["a"])(t) < i["k"]) return [e, 0]; var n, r = e * e + t * t, o = .5 * t, a = 10; do { var s = Object(i["F"])(o), c = 1 / Object(i["h"])(o), l = r - 2 * t * o + o * o; o -= n = (s * l + 2 * (o - t)) / (2 + l * c * c + 2 * (o - t) * s) } while (Object(i["a"])(n) > i["k"] && --a > 0); return s = Object(i["F"])(o), [(Object(i["a"])(t) < Object(i["a"])(o + 1 / s) ? Object(i["e"])(e * s) : Object(i["x"])(e) * (Object(i["b"])(Object(i["a"])(e * s)) + i["o"])) / Object(i["y"])(o), o] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(103.74) } }, function (e, t, n) { "use strict"; t["b"] = i, t["c"] = o; var r = n(1); function i(e) { var t = 1 / (e[0] * e[4] - e[1] * e[3]); return [t * e[4], -t * e[1], t * (e[1] * e[5] - e[2] * e[4]), -t * e[3], t * e[0], t * (e[2] * e[3] - e[0] * e[5])] } function o(e, t) { return [e[0] * t[0] + e[1] * t[3], e[0] * t[1] + e[1] * t[4], e[0] * t[2] + e[1] * t[5] + e[2], e[3] * t[0] + e[4] * t[3], e[3] * t[1] + e[4] * t[4], e[3] * t[2] + e[4] * t[5] + e[5]] } function a(e, t) { return [e[0] - t[0], e[1] - t[1]] } function s(e) { return Object(r["B"])(e[0] * e[0] + e[1] * e[1]) } function c(e, t) { return Object(r["g"])(e[0] * t[1] - e[1] * t[0], e[0] * t[0] + e[1] * t[1]) } t["a"] = function (e, t) { var n = a(e[1], e[0]), i = a(t[1], t[0]), l = c(n, i), u = s(n) / s(i); return o([1, 0, e[0][0], 0, 1, e[0][1]], o([u, 0, 0, 0, u, 0], o([Object(r["h"])(l), Object(r["y"])(l), 0, -Object(r["y"])(l), Object(r["h"])(l), 0], [1, 0, -t[0][0], 0, 1, -t[0][1]]))) } }, function (e, t, n) { "use strict"; var r = n(0), i = n(1), o = n(53), a = n(74); t["a"] = function (e) { e = e || function (e) { var t = Object(r["geoCentroid"])({ type: "MultiPoint", coordinates: e }); return Object(r["geoGnomonic"])().scale(1).translate([0, 0]).rotate([-t[0], -t[1]]) }; var t = a["a"].map((function (t) { return { face: t, project: e(t) } })); return [-1, 0, 0, 1, 0, 1, 4, 5].forEach((function (e, n) { var r = t[e]; r && (r.children || (r.children = [])).push(t[n]) })), Object(o["a"])(t[0], (function (e, n) { return t[e < -i["s"] / 2 ? n < 0 ? 6 : 4 : e < 0 ? n < 0 ? 2 : 0 : e < i["s"] / 2 ? n < 0 ? 3 : 1 : n < 0 ? 7 : 5] })).scale(101.858).center([0, 45]) } }, function (e, t, n) { "use strict"; var r = n(0), i = n(72), o = n(1), a = n(53), s = n(74), c = 2 / Object(o["B"])(3); function l(e, t) { var n = Object(i["a"])(e, t); return [n[0] * c, n[1]] } l.invert = function (e, t) { return i["a"].invert(e / c, t) }, t["a"] = function (e) { e = e || function (e) { var t = Object(r["geoCentroid"])({ type: "MultiPoint", coordinates: e }); return Object(r["geoProjection"])(l).translate([0, 0]).scale(1).rotate(t[1] > 0 ? [-t[0], 0] : [180 - t[0], 180]) }; var t = s["a"].map((function (t) { return { face: t, project: e(t) } })); return [-1, 0, 0, 1, 0, 1, 4, 5].forEach((function (e, n) { var r = t[e]; r && (r.children || (r.children = [])).push(t[n]) })), Object(a["a"])(t[0], (function (e, n) { return t[e < -o["s"] / 2 ? n < 0 ? 6 : 4 : e < 0 ? n < 0 ? 2 : 0 : e < o["s"] / 2 ? n < 0 ? 3 : 1 : n < 0 ? 7 : 5] })).scale(121.906).center([0, 48.5904]) } }, function (e, t, n) { "use strict"; var r = n(0), i = n(1), o = n(53), a = n(74); function s(e, t) { for (var n = 0, r = e.length, i = 0; n < r; ++n)i += e[n] * t[n]; return i } function c(e, t) { return [e[1] * t[2] - e[2] * t[1], e[2] * t[0] - e[0] * t[2], e[0] * t[1] - e[1] * t[0]] } function l(e) { return [Object(i["g"])(e[1], e[0]) * i["j"], Object(i["e"])(Object(i["q"])(-1, Object(i["r"])(1, e[2]))) * i["j"]] } function u(e) { var t = e[0] * i["v"], n = e[1] * i["v"], r = Object(i["h"])(n); return [r * Object(i["h"])(t), r * Object(i["y"])(t), Object(i["y"])(n)] } t["a"] = function (e) { e = e || function (e) { var t = 6 === e.length ? Object(r["geoCentroid"])({ type: "MultiPoint", coordinates: e }) : e[0]; return Object(r["geoGnomonic"])().scale(1).translate([0, 0]).rotate([-t[0], -t[1]]) }; var t = a["a"].map((function (e) { for (var t, n = e.map(u), r = n.length, i = n[r - 1], o = [], a = 0; a < r; ++a)t = n[a], o.push(l([.9486832980505138 * i[0] + .31622776601683794 * t[0], .9486832980505138 * i[1] + .31622776601683794 * t[1], .9486832980505138 * i[2] + .31622776601683794 * t[2]]), l([.9486832980505138 * t[0] + .31622776601683794 * i[0], .9486832980505138 * t[1] + .31622776601683794 * i[1], .9486832980505138 * t[2] + .31622776601683794 * i[2]])), i = t; return o })), n = [], h = [-1, 0, 0, 1, 0, 1, 4, 5]; t.forEach((function (e, r) { for (var i = a["a"][r], o = i.length, s = n[r] = [], l = 0; l < o; ++l)t.push([i[l], e[(2 * l + 2) % (2 * o)], e[(2 * l + 1) % (2 * o)]]), h.push(r), s.push(c(u(e[(2 * l + 2) % (2 * o)]), u(e[(2 * l + 1) % (2 * o)]))) })); var f = t.map((function (t) { return { project: e(t), face: t } })); function d(e, t) { var r = Object(i["h"])(t), o = [r * Object(i["h"])(e), r * Object(i["y"])(e), Object(i["y"])(t)], a = e < -i["s"] / 2 ? t < 0 ? 6 : 4 : e < 0 ? t < 0 ? 2 : 0 : e < i["s"] / 2 ? t < 0 ? 3 : 1 : t < 0 ? 7 : 5, c = n[a]; return f[s(c[0], o) < 0 ? 8 + 3 * a : s(c[1], o) < 0 ? 8 + 3 * a + 1 : s(c[2], o) < 0 ? 8 + 3 * a + 2 : a] } return h.forEach((function (e, t) { var n = f[e]; n && (n.children || (n.children = [])).push(f[t]) })), Object(o["a"])(f[0], d).scale(110.625).center([0, 45]) } }, function (e, t, n) { "use strict"; var r = n(0), i = n(299), o = n(300), a = n(301); function s(e, t) { return { type: "FeatureCollection", features: e.features.map((function (e) { return c(e, t) })) } } function c(e, t) { return { type: "Feature", id: e.id, properties: e.properties, geometry: u(e.geometry, t) } } function l(e, t) { return { type: "GeometryCollection", geometries: e.geometries.map((function (e) { return u(e, t) })) } } function u(e, t) { if (!e) return null; if ("GeometryCollection" === e.type) return l(e, t); var n; switch (e.type) { case "Point": n = d; break; case "MultiPoint": n = d; break; case "LineString": n = p; break; case "MultiLineString": n = p; break; case "Polygon": n = v; break; case "MultiPolygon": n = v; break; case "Sphere": n = v; break; default: return null }return Object(r["geoStream"])(e, t(n)), n.result() } t["a"] = function (e, t) { var n, r = t.stream; if (!r) throw new Error("invalid projection"); switch (e && e.type) { case "Feature": n = c; break; case "FeatureCollection": n = s; break; default: n = u; break }return n(e, r) }; var h = [], f = [], d = { point: function (e, t) { h.push([e, t]) }, result: function () { var e = h.length ? h.length < 2 ? { type: "Point", coordinates: h[0] } : { type: "MultiPoint", coordinates: h } : null; return h = [], e } }, p = { lineStart: i["a"], point: function (e, t) { h.push([e, t]) }, lineEnd: function () { h.length && (f.push(h), h = []) }, result: function () { var e = f.length ? f.length < 2 ? { type: "LineString", coordinates: f[0] } : { type: "MultiLineString", coordinates: f } : null; return f = [], e } }, v = { polygonStart: i["a"], lineStart: i["a"], point: function (e, t) { h.push([e, t]) }, lineEnd: function () { var e = h.length; if (e) { do { h.push(h[0].slice()) } while (++e < 4); f.push(h), h = [] } }, polygonEnd: i["a"], result: function () { if (!f.length) return null; var e = [], t = []; return f.forEach((function (n) { Object(o["a"])(n) ? e.push([n]) : t.push(n) })), t.forEach((function (t) { var n = t[0]; e.some((function (e) { if (Object(a["a"])(e[0], n)) return e.push(t), !0 })) || e.push([t]) })), f = [], e.length ? e.length > 1 ? { type: "MultiPolygon", coordinates: e } : { type: "Polygon", coordinates: e[0] } : null } } }, function (e, t, n) { "use strict"; t["a"] = function () { } }, function (e, t, n) { "use strict"; t["a"] = function (e) { if ((t = e.length) < 4) return !1; var t, n = 0, r = e[t - 1][1] * e[0][0] - e[t - 1][0] * e[0][1]; while (++n < t) r += e[n - 1][1] * e[n][0] - e[n - 1][0] * e[n][1]; return r <= 0 } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { for (var n = t[0], r = t[1], i = !1, o = 0, a = e.length, s = a - 1; o < a; s = o++) { var c = e[o], l = c[0], u = c[1], h = e[s], f = h[0], d = h[1]; u > r ^ d > r && n < (f - l) * (r - u) / (d - u) + l && (i = !i) } return i } }, function (e, t, n) { "use strict"; var r = n(133), i = n(75); t["a"] = function () { return Object(i["a"])(r["b"]).scale(176.423) } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { if (!(0 <= (t = +t) && t <= 20)) throw new Error("invalid digits"); function n(e) { var n = e.length, r = 2, i = new Array(n); i[0] = +e[0].toFixed(t), i[1] = +e[1].toFixed(t); while (r < n) i[r] = e[r], ++r; return i } function r(e) { return e.map(n) } function i(e) { return e.map(r) } function o(e) { if (null == e) return e; var t; switch (e.type) { case "GeometryCollection": t = { type: "GeometryCollection", geometries: e.geometries.map(o) }; break; case "Point": t = { type: "Point", coordinates: n(e.coordinates) }; break; case "MultiPoint": case "LineString": t = { type: e.type, coordinates: r(e.coordinates) }; break; case "MultiLineString": case "Polygon": t = { type: e.type, coordinates: i(e.coordinates) }; break; case "MultiPolygon": t = { type: "MultiPolygon", coordinates: e.coordinates.map(i) }; break; default: return e }return null != e.bbox && (t.bbox = e.bbox), t } function a(e) { var t = { type: "Feature", properties: e.properties, geometry: o(e.geometry) }; return null != e.id && (t.id = e.id), null != e.bbox && (t.bbox = e.bbox), t } if (null != e) switch (e.type) { case "Feature": return a(e); case "FeatureCollection": var s = { type: "FeatureCollection", features: e.features.map(a) }; return null != e.bbox && (s.bbox = e.bbox), s; default: return o(e) }return e } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(1), i = n(31); function o(e) { var t = Object(r["y"])(e); function n(n, i) { var o = t ? Object(r["F"])(n * t / 2) / t : n / 2; if (!i) return [2 * o, -e]; var a = 2 * Object(r["f"])(o * Object(r["y"])(i)), s = 1 / Object(r["F"])(i); return [Object(r["y"])(a) * s, i + (1 - Object(r["h"])(a)) * s - e] } return n.invert = function (n, i) { if (Object(r["a"])(i += e) < r["k"]) return [t ? 2 * Object(r["f"])(t * n / 2) / t : n, 0]; var o, a = n * n + i * i, s = 0, c = 10; do { var l = Object(r["F"])(s), u = 1 / Object(r["h"])(s), h = a - 2 * i * s + s * s; s -= o = (l * h + 2 * (s - i)) / (2 + h * u * u + 2 * (s - i) * l) } while (Object(r["a"])(o) > r["k"] && --c > 0); var f = n * (l = Object(r["F"])(s)), d = Object(r["F"])(Object(r["a"])(i) < Object(r["a"])(s + 1 / l) ? .5 * Object(r["e"])(f) : .5 * Object(r["b"])(f) + r["s"] / 4) / Object(r["y"])(s); return [t ? 2 * Object(r["f"])(t * d) / t : 2 * d, s] }, n } t["a"] = function () { return Object(i["a"])(o).scale(131.215) } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(0), i = n(1), o = [[.9986, -.062], [1, 0], [.9986, .062], [.9954, .124], [.99, .186], [.9822, .248], [.973, .31], [.96, .372], [.9427, .434], [.9216, .4958], [.8962, .5571], [.8679, .6176], [.835, .6769], [.7986, .7346], [.7597, .7903], [.7186, .8435], [.6732, .8936], [.6213, .9394], [.5722, .9761], [.5322, 1]]; function a(e, t) { var n, r = Object(i["r"])(18, 36 * Object(i["a"])(t) / i["s"]), a = Object(i["n"])(r), s = r - a, c = (n = o[a])[0], l = n[1], u = (n = o[++a])[0], h = n[1], f = (n = o[Object(i["r"])(19, ++a)])[0], d = n[1]; return [e * (u + s * (f - c) / 2 + s * s * (f - 2 * u + c) / 2), (t > 0 ? i["o"] : -i["o"]) * (h + s * (d - l) / 2 + s * s * (d - 2 * h + l) / 2)] } o.forEach((function (e) { e[1] *= 1.0144 })), a.invert = function (e, t) { var n = t / i["o"], r = 90 * n, a = Object(i["r"])(18, Object(i["a"])(r / 5)), s = Object(i["q"])(0, Object(i["n"])(a)); do { var c = o[s][1], l = o[s + 1][1], u = o[Object(i["r"])(19, s + 2)][1], h = u - c, f = u - 2 * l + c, d = 2 * (Object(i["a"])(n) - l) / h, p = f / h, v = d * (1 - p * d * (1 - 2 * p * d)); if (v >= 0 || 1 === s) { r = (t >= 0 ? 5 : -5) * (v + a); var m, g = 50; do { a = Object(i["r"])(18, Object(i["a"])(r) / 5), s = Object(i["n"])(a), v = a - s, c = o[s][1], l = o[s + 1][1], u = o[Object(i["r"])(19, s + 2)][1], r -= (m = (t >= 0 ? i["o"] : -i["o"]) * (l + v * (u - c) / 2 + v * v * (u - 2 * l + c) / 2) - t) * i["j"] } while (Object(i["a"])(m) > i["l"] && --g > 0); break } } while (--s >= 0); var y = o[s][0], b = o[s + 1][0], x = o[Object(i["r"])(19, s + 2)][0]; return [e / (b + v * (x - y) / 2 + v * v * (x - 2 * b + y) / 2), r * i["v"]] }, t["a"] = function () { return Object(r["geoProjection"])(a).scale(152.63) } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(0), i = n(1); function o(e) { function t(t, n) { var r = Object(i["h"])(n), o = (e - 1) / (e - r * Object(i["h"])(t)); return [o * r * Object(i["y"])(t), o * Object(i["y"])(n)] } return t.invert = function (t, n) { var r = t * t + n * n, o = Object(i["B"])(r), a = (e - Object(i["B"])(1 - r * (e + 1) / (e - 1))) / ((e - 1) / o + o / (e - 1)); return [Object(i["g"])(t * a, o * Object(i["B"])(1 - a * a)), o ? Object(i["e"])(n * a / o) : 0] }, t } function a(e, t) { var n = o(e); if (!t) return n; var r = Object(i["h"])(t), a = Object(i["y"])(t); function s(t, i) { var o = n(t, i), s = o[1], c = s * a / (e - 1) + r; return [o[0] * r / c, s / c] } return s.invert = function (t, i) { var o = (e - 1) / (e - 1 - i * a); return n.invert(o * t, o * i * r) }, s } t["a"] = function () { var e = 2, t = 0, n = Object(r["geoProjectionMutator"])(a), o = n(e, t); return o.distance = function (r) { return arguments.length ? n(e = +r, t) : e }, o.tilt = function (r) { return arguments.length ? n(e, t = r * i["v"]) : t * i["j"] }, o.scale(432.147).clipAngle(Object(i["b"])(1 / e) * i["j"] - 1e-6) } }, function (e, t, n) { "use strict"; var r = 1e-4, i = 1e4, o = -180, a = o + r, s = 180, c = s - r, l = -90, u = l + r, h = 90, f = h - r; function d(e) { return e.length > 0 } function p(e) { return Math.floor(e * i) / i } function v(e) { return e === l || e === h ? [0, e] : [o, p(e)] } function m(e) { var t = e[0], n = e[1], r = !1; return t <= a ? (t = o, r = !0) : t >= c && (t = s, r = !0), n <= u ? (n = l, r = !0) : n >= f && (n = h, r = !0), r ? [t, n] : e } function g(e) { return e.map(m) } function y(e, t, n) { for (var r = 0, i = e.length; r < i; ++r) { var o = e[r].slice(); n.push({ index: -1, polygon: t, ring: o }); for (var s = 0, l = o.length; s < l; ++s) { var h = o[s], d = h[0], p = h[1]; if (d <= a || d >= c || p <= u || p >= f) { o[s] = m(h); for (var g = s + 1; g < l; ++g) { var y = o[g], b = y[0], x = y[1]; if (b > a && b < c && x > u && x < f) break } if (g === s + 1) continue; if (s) { var w = { index: -1, polygon: t, ring: o.slice(0, s + 1) }; w.ring[w.ring.length - 1] = v(p), n[n.length - 1] = w } else n.pop(); if (g >= l) break; n.push({ index: -1, polygon: t, ring: o = o.slice(g - 1) }), o[0] = v(o[0][1]), s = -1, l = o.length } } } } function b(e) { var t, n, r, i, o, a, s = e.length, c = {}, l = {}; for (t = 0; t < s; ++t)n = e[t], r = n.ring[0], o = n.ring[n.ring.length - 1], r[0] !== o[0] || r[1] !== o[1] ? (n.index = t, c[r] = l[o] = n) : (n.polygon.push(n.ring), e[t] = null); for (t = 0; t < s; ++t)if (n = e[t], n) { if (r = n.ring[0], o = n.ring[n.ring.length - 1], i = l[r], a = c[o], delete c[r], delete l[o], r[0] === o[0] && r[1] === o[1]) { n.polygon.push(n.ring); continue } i ? (delete l[r], delete c[i.ring[0]], i.ring.pop(), e[i.index] = null, n = { index: -1, polygon: i.polygon, ring: i.ring.concat(n.ring) }, i === a ? n.polygon.push(n.ring) : (n.index = s++, e.push(c[n.ring[0]] = l[n.ring[n.ring.length - 1]] = n))) : a ? (delete c[o], delete l[a.ring[a.ring.length - 1]], n.ring.pop(), n = { index: s++, polygon: a.polygon, ring: n.ring.concat(a.ring) }, e[a.index] = null, e.push(c[n.ring[0]] = l[n.ring[n.ring.length - 1]] = n)) : (n.ring.push(n.ring[0]), n.polygon.push(n.ring)) } } function x(e) { var t = { type: "Feature", geometry: w(e.geometry) }; return null != e.id && (t.id = e.id), null != e.bbox && (t.bbox = e.bbox), null != e.properties && (t.properties = e.properties), t } function w(e) { if (null == e) return e; var t, n, r, i; switch (e.type) { case "GeometryCollection": t = { type: "GeometryCollection", geometries: e.geometries.map(w) }; break; case "Point": t = { type: "Point", coordinates: m(e.coordinates) }; break; case "MultiPoint": case "LineString": t = { type: e.type, coordinates: g(e.coordinates) }; break; case "MultiLineString": t = { type: "MultiLineString", coordinates: e.coordinates.map(g) }; break; case "Polygon": var o = []; y(e.coordinates, o, n = []), b(n), t = { type: "Polygon", coordinates: o }; break; case "MultiPolygon": n = [], r = -1, i = e.coordinates.length; var a = new Array(i); while (++r < i) y(e.coordinates[r], a[r] = [], n); b(n), t = { type: "MultiPolygon", coordinates: a.filter(d) }; break; default: return e }return null != e.bbox && (t.bbox = e.bbox), t } t["a"] = function (e) { if (null == e) return e; switch (e.type) { case "Feature": return x(e); case "FeatureCollection": var t = { type: "FeatureCollection", features: e.features.map(x) }; return null != e.bbox && (t.bbox = e.bbox), t; default: return w(e) } } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { var n = Object(i["F"])(t / 2), r = Object(i["y"])(i["u"] * n); return [e * (.74482 - .34588 * r * r), 1.70711 * n] } o.invert = function (e, t) { var n = t / 1.70711, r = Object(i["y"])(i["u"] * n); return [e / (.74482 - .34588 * r * r), 2 * Object(i["f"])(n)] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(146.153) } }, function (e, t, n) { "use strict"; t["b"] = a, t["c"] = s, t["a"] = c; var r = n(0), i = n(1), o = n(138); function a(e) { var t = Object(i["h"])(e); function n(e, n) { var i = Object(r["geoGnomonicRaw"])(e, n); return i[0] *= t, i } return n.invert = function (e, n) { return r["geoGnomonicRaw"].invert(e / t, n) }, n } function s() { return c([-158, 21.5], [-77, 39]).clipAngle(60).scale(400) } function c(e, t) { return Object(o["a"])(a, e, t) } }, function (e, t, n) { "use strict"; t["b"] = a, t["c"] = s, t["a"] = c; var r = n(0), i = n(1), o = n(138); function a(e) { if (!(e *= 2)) return r["geoAzimuthalEquidistantRaw"]; var t = -e / 2, n = -t, o = e * e, a = Object(i["F"])(n), s = .5 / Object(i["y"])(n); function c(r, a) { var s = Object(i["b"])(Object(i["h"])(a) * Object(i["h"])(r - t)), c = Object(i["b"])(Object(i["h"])(a) * Object(i["h"])(r - n)), l = a < 0 ? -1 : 1; return s *= s, c *= c, [(s - c) / (2 * e), l * Object(i["B"])(4 * o * c - (o - s + c) * (o - s + c)) / (2 * e)] } return c.invert = function (e, r) { var o, c, l = r * r, u = Object(i["h"])(Object(i["B"])(l + (o = e + t) * o)), h = Object(i["h"])(Object(i["B"])(l + (o = e + n) * o)); return [Object(i["g"])(c = u - h, o = (u + h) * a), (r < 0 ? -1 : 1) * Object(i["b"])(Object(i["B"])(o * o + c * c) * s)] }, c } function s() { return c([-158, 21.5], [-77, 39]).clipAngle(130).scale(122.571) } function c(e, t) { return Object(o["a"])(a, e, t) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { if (Object(i["a"])(t) < i["k"]) return [e, 0]; var n = Object(i["a"])(t / i["o"]), r = Object(i["e"])(n); if (Object(i["a"])(e) < i["k"] || Object(i["a"])(Object(i["a"])(t) - i["o"]) < i["k"]) return [0, Object(i["x"])(t) * i["s"] * Object(i["F"])(r / 2)]; var o = Object(i["h"])(r), a = Object(i["a"])(i["s"] / e - e / i["s"]) / 2, s = a * a, c = o / (n + o - 1), l = c * (2 / n - 1), u = l * l, h = u + s, f = c - u, d = s + c; return [Object(i["x"])(e) * i["s"] * (a * f + Object(i["B"])(s * f * f - h * (c * c - u))) / h, Object(i["x"])(t) * i["s"] * (l * d - a * Object(i["B"])((s + 1) * h - d * d)) / h] } o.invert = function (e, t) { if (Object(i["a"])(t) < i["k"]) return [e, 0]; if (Object(i["a"])(e) < i["k"]) return [0, i["o"] * Object(i["y"])(2 * Object(i["f"])(t / i["s"]))]; var n = (e /= i["s"]) * e, r = (t /= i["s"]) * t, o = n + r, a = o * o, s = -Object(i["a"])(t) * (1 + o), c = s - 2 * r + n, l = -2 * s + 1 + 2 * r + a, u = r / l + (2 * c * c * c / (l * l * l) - 9 * s * c / (l * l)) / 27, h = (s - c * c / (3 * l)) / l, f = 2 * Object(i["B"])(-h / 3), d = Object(i["b"])(3 * u / (h * f)) / 3; return [i["s"] * (o - 1 + Object(i["B"])(1 + 2 * (n - r) + a)) / (2 * e), Object(i["x"])(t) * i["s"] * (-f * Object(i["h"])(d + i["s"] / 3) - c / (3 * l))] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(79.4183) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { if (Object(i["a"])(t) < i["k"]) return [e, 0]; var n = Object(i["a"])(t / i["o"]), r = Object(i["e"])(n); if (Object(i["a"])(e) < i["k"] || Object(i["a"])(Object(i["a"])(t) - i["o"]) < i["k"]) return [0, Object(i["x"])(t) * i["s"] * Object(i["F"])(r / 2)]; var o = Object(i["h"])(r), a = Object(i["a"])(i["s"] / e - e / i["s"]) / 2, s = a * a, c = o * (Object(i["B"])(1 + s) - a * o) / (1 + s * n * n); return [Object(i["x"])(e) * i["s"] * c, Object(i["x"])(t) * i["s"] * Object(i["B"])(1 - c * (2 * a + c))] } o.invert = function (e, t) { if (!e) return [0, i["o"] * Object(i["y"])(2 * Object(i["f"])(t / i["s"]))]; var n = Object(i["a"])(e / i["s"]), r = (1 - n * n - (t /= i["s"]) * t) / (2 * n), o = r * r, a = Object(i["B"])(o + 1); return [Object(i["x"])(e) * i["s"] * (a - r), Object(i["x"])(t) * i["o"] * Object(i["y"])(2 * Object(i["g"])(Object(i["B"])((1 - 2 * r * n) * (r + a) - n), Object(i["B"])(a + r + n)))] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(79.4183) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { if (Object(i["a"])(t) < i["k"]) return [e, 0]; var n = t / i["o"], r = Object(i["e"])(n); if (Object(i["a"])(e) < i["k"] || Object(i["a"])(Object(i["a"])(t) - i["o"]) < i["k"]) return [0, i["s"] * Object(i["F"])(r / 2)]; var o = (i["s"] / e - e / i["s"]) / 2, a = n / (1 + Object(i["h"])(r)); return [i["s"] * (Object(i["x"])(e) * Object(i["B"])(o * o + 1 - a * a) - o), i["s"] * a] } o.invert = function (e, t) { if (!t) return [e, 0]; var n = t / i["s"], r = (i["s"] * i["s"] * (1 - n * n) - e * e) / (2 * i["s"] * e); return [e ? i["s"] * (Object(i["x"])(e) * Object(i["B"])(r * r + 1) - r) : 0, i["o"] * Object(i["y"])(2 * Object(i["f"])(n))] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(79.4183) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { if (!t) return [e, 0]; var n = Object(i["a"])(t); if (!e || n === i["o"]) return [0, t]; var r = n / i["o"], o = r * r, a = (8 * r - o * (o + 2) - 5) / (2 * o * (r - 1)), s = a * a, c = r * a, l = o + s + 2 * c, u = r + 3 * a, h = e / i["o"], f = h + 1 / h, d = Object(i["x"])(Object(i["a"])(e) - i["o"]) * Object(i["B"])(f * f - 4), p = d * d, v = l * (o + s * p - 1) + (1 - o) * (o * (u * u + 4 * s) + 12 * c * s + 4 * s * s), m = (d * (l + s - 1) + 2 * Object(i["B"])(v)) / (4 * l + p); return [Object(i["x"])(e) * i["o"] * m, Object(i["x"])(t) * i["o"] * Object(i["B"])(1 + d * Object(i["a"])(m) - m * m)] } o.invert = function (e, t) { var n; if (!e || !t) return [e, t]; t /= i["s"]; var r = Object(i["x"])(e) * e / i["o"], o = (r * r - 1 + 4 * t * t) / Object(i["a"])(r), a = o * o, s = 2 * t, c = 50; do { var l = s * s, u = (8 * s - l * (l + 2) - 5) / (2 * l * (s - 1)), h = (3 * s - l * s - 10) / (2 * l * s), f = u * u, d = s * u, p = s + u, v = p * p, m = s + 3 * u, g = v * (l + f * a - 1) + (1 - l) * (l * (m * m + 4 * f) + f * (12 * d + 4 * f)), y = -2 * p * (4 * d * f + (1 - 4 * l + 3 * l * l) * (1 + h) + f * (14 * l - 6 - a + (8 * l - 8 - 2 * a) * h) + d * (12 * l - 8 + (10 * l - 10 - a) * h)), b = Object(i["B"])(g), x = o * (v + f - 1) + 2 * b - r * (4 * v + a), w = o * (2 * u * h + 2 * p * (1 + h)) + y / b - 8 * p * (o * (-1 + f + v) + 2 * b) * (1 + h) / (a + 4 * v); s -= n = x / w } while (n > i["k"] && --c > 0); return [Object(i["x"])(e) * (Object(i["B"])(o * o + 4) + o) * i["s"] / 4, i["o"] * s] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(127.16) } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return c })); var r = n(0), i = n(1), o = n(21), a = 4 * i["s"] + 3 * Object(i["B"])(3), s = 2 * Object(i["B"])(2 * i["s"] * Object(i["B"])(3) / a), c = Object(o["b"])(s * Object(i["B"])(3) / i["s"], s, a / 6); t["a"] = function () { return Object(r["geoProjection"])(c).scale(176.84) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { return [e * Object(i["B"])(1 - 3 * t * t / (i["s"] * i["s"])), t] } o.invert = function (e, t) { return [e / Object(i["B"])(1 - 3 * t * t / (i["s"] * i["s"])), t] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(152.63) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { var n = .90631 * Object(i["y"])(t), r = Object(i["B"])(1 - n * n), o = Object(i["B"])(2 / (1 + r * Object(i["h"])(e /= 3))); return [2.66723 * r * o * Object(i["y"])(e), 1.24104 * n * o] } o.invert = function (e, t) { var n = e / 2.66723, r = t / 1.24104, o = Object(i["B"])(n * n + r * r), a = 2 * Object(i["e"])(o / 2); return [3 * Object(i["g"])(e * Object(i["F"])(a), 2.66723 * o), o && Object(i["e"])(t * Object(i["y"])(a) / (1.24104 * .90631 * o))] }, t["a"] = function () { return Object(r["geoProjection"])(o).scale(172.632) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(0), i = n(1); function o(e, t) { var n = Object(i["h"])(t), r = Object(i["h"])(e) * n, o = 1 - r, a = Object(i["h"])(e = Object(i["g"])(Object(i["y"])(e) * n, -Object(i["y"])(t))), s = Object(i["y"])(e); return n = Object(i["B"])(1 - r * r), [s * n - a * o, -a * n - s * o] } o.invert = function (e, t) { var n = (e * e + t * t) / -2, r = Object(i["B"])(-n * (2 + n)), o = t * n + e * r, a = e * n - t * r, s = Object(i["B"])(a * a + o * o); return [Object(i["g"])(r * o, s * (1 + n)), s ? -Object(i["e"])(r * a / s) : 0] }, t["a"] = function () { return Object(r["geoProjection"])(o).rotate([0, -90, 45]).scale(124.75).clipAngle(179.999) } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(0), i = n(129), o = n(1); function a(e, t) { var n = Object(i["a"])(e, t); return [(n[0] + e / o["o"]) / 2, (n[1] + t) / 2] } a.invert = function (e, t) { var n = e, r = t, i = 25; do { var a, s = Object(o["h"])(r), c = Object(o["y"])(r), l = Object(o["y"])(2 * r), u = c * c, h = s * s, f = Object(o["y"])(n), d = Object(o["h"])(n / 2), p = Object(o["y"])(n / 2), v = p * p, m = 1 - h * d * d, g = m ? Object(o["b"])(s * d) * Object(o["B"])(a = 1 / m) : a = 0, y = .5 * (2 * g * s * p + n / o["o"]) - e, b = .5 * (g * c + r) - t, x = .5 * a * (h * v + g * s * d * u) + .5 / o["o"], w = a * (f * l / 4 - g * c * p), _ = .125 * a * (l * p - g * c * h * f), C = .5 * a * (u * d + g * v * s) + .5, M = w * _ - C * x, O = (b * w - y * C) / M, k = (y * _ - b * x) / M; n -= O, r -= k } while ((Object(o["a"])(O) > o["k"] || Object(o["a"])(k) > o["k"]) && --i > 0); return [n, r] }, t["a"] = function () { return Object(r["geoProjection"])(a).scale(158.837) } }, function (e, t, n) { var r = n(11), i = n(54), o = n(140); function a(e, t) { var n = void 0; if (r(t) && (n = t), i(t) && (n = function (e) { return o(e, t) }), n) for (var a = 0; a < e.length; a += 1)if (n(e[a])) return e[a]; return null } e.exports = a }, function (e, t) { var n = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r = function (e) { return "object" === ("undefined" === typeof e ? "undefined" : n(e)) && null !== e }; e.exports = r }, function (e, t, n) { (function (e, r) { r(t, n(323), n(33)) })(0, (function (e, t, n) { "use strict"; var r = 1e-6; function i() { } var o = 1 / 0, a = o, s = -o, c = s, l = { point: u, lineStart: i, lineEnd: i, polygonStart: i, polygonEnd: i, result: function () { var e = [[o, a], [s, c]]; return s = c = -(a = o = 1 / 0), e } }; function u(e, t) { e < o && (o = e), e > s && (s = e), t < a && (a = t), t > c && (c = t) } function h(e, n, r) { var i = n[1][0] - n[0][0], o = n[1][1] - n[0][1], a = e.clipExtent && e.clipExtent(); e.scale(150).translate([0, 0]), null != a && e.clipExtent(null), t.geoStream(r, e.stream(l)); var s = l.result(), c = Math.min(i / (s[1][0] - s[0][0]), o / (s[1][1] - s[0][1])), u = +n[0][0] + (i - c * (s[1][0] + s[0][0])) / 2, h = +n[0][1] + (o - c * (s[1][1] + s[0][1])) / 2; return null != a && e.clipExtent(a), e.scale(150 * c).translate([u, h]) } function f(e, t, n) { return h(e, [[0, 0], t], n) } function d(e) { var t = e.length; return { point: function (n, r) { var i = -1; while (++i < t) e[i].point(n, r) }, sphere: function () { var n = -1; while (++n < t) e[n].sphere() }, lineStart: function () { var n = -1; while (++n < t) e[n].lineStart() }, lineEnd: function () { var n = -1; while (++n < t) e[n].lineEnd() }, polygonStart: function () { var n = -1; while (++n < t) e[n].polygonStart() }, polygonEnd: function () { var n = -1; while (++n < t) e[n].polygonEnd() } } } function p() { var e, i, o, a, s, c, l = t.geoAlbers(), u = t.geoConicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), p = t.geoConicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), v = { point: function (e, t) { c = [e, t] } }; function m(e) { var t = e[0], n = e[1]; return c = null, o.point(t, n), c || (a.point(t, n), c) || (s.point(t, n), c) } function g() { return e = i = null, m } return m.invert = function (e) { var t = l.scale(), n = l.translate(), r = (e[0] - n[0]) / t, i = (e[1] - n[1]) / t; return (i >= .12 && i < .234 && r >= -.425 && r < -.214 ? u : i >= .166 && i < .234 && r >= -.214 && r < -.115 ? p : l).invert(e) }, m.stream = function (t) { return e && i === t ? e : e = d([l.stream(i = t), u.stream(t), p.stream(t)]) }, m.precision = function (e) { return arguments.length ? (l.precision(e), u.precision(e), p.precision(e), g()) : l.precision() }, m.scale = function (e) { return arguments.length ? (l.scale(e), u.scale(.35 * e), p.scale(e), m.translate(l.translate())) : l.scale() }, m.translate = function (e) { if (!arguments.length) return l.translate(); var t = l.scale(), n = +e[0], i = +e[1]; return o = l.translate(e).clipExtent([[n - .455 * t, i - .238 * t], [n + .455 * t, i + .238 * t]]).stream(v), a = u.translate([n - .307 * t, i + .201 * t]).clipExtent([[n - .425 * t + r, i + .12 * t + r], [n - .214 * t - r, i + .234 * t - r]]).stream(v), s = p.translate([n - .205 * t, i + .212 * t]).clipExtent([[n - .214 * t + r, i + .166 * t + r], [n - .115 * t - r, i + .234 * t - r]]).stream(v), g() }, m.fitExtent = function (e, t) { return h(m, e, t) }, m.fitSize = function (e, t) { return f(m, e, t) }, m.drawCompositionBorders = function (e) { var t = l([-102.91, 26.3]), n = l([-104, 27.5]), r = l([-108, 29.1]), i = l([-110, 29.1]), o = l([-110, 26.7]), a = l([-112.8, 27.6]), s = l([-114.3, 30.6]), c = l([-119.3, 30.1]); e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.moveTo(o[0], o[1]), e.lineTo(a[0], a[1]), e.lineTo(s[0], s[1]), e.lineTo(c[0], c[1]) }, m.getCompositionBorders = function () { var e = n.path(); return this.drawCompositionBorders(e), e.toString() }, m.scale(1070) } function v(e) { var t = e.length; return { point: function (n, r) { var i = -1; while (++i < t) e[i].point(n, r) }, sphere: function () { var n = -1; while (++n < t) e[n].sphere() }, lineStart: function () { var n = -1; while (++n < t) e[n].lineStart() }, lineEnd: function () { var n = -1; while (++n < t) e[n].lineEnd() }, polygonStart: function () { var n = -1; while (++n < t) e[n].polygonStart() }, polygonEnd: function () { var n = -1; while (++n < t) e[n].polygonEnd() } } } function m() { var e, i, o, a, s, c, l, u, d, p = t.geoAlbers(), m = t.geoConicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), g = t.geoConicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), y = t.geoConicEqualArea().rotate([66, 0]).center([0, 18]).parallels([8, 18]), b = t.geoEquirectangular().rotate([173, 14]), x = t.geoEquirectangular().rotate([-145, -16.8]), w = { point: function (e, t) { d = [e, t] } }; function _(e) { var t = e[0], n = e[1]; return d = null, o.point(t, n), d || (a.point(t, n), d) || (s.point(t, n), d) || (c.point(t, n), d) || (l.point(t, n), d) || (u.point(t, n), d) } function C() { return e = i = null, _ } return _.invert = function (e) { var t = p.scale(), n = p.translate(), r = (e[0] - n[0]) / t, i = (e[1] - n[1]) / t; return (i >= .12 && i < .234 && r >= -.425 && r < -.214 ? m : i >= .166 && i < .234 && r >= -.214 && r < -.115 ? g : i >= .2064 && i < .2413 && r >= .312 && r < .385 ? y : i >= .09 && i < .1197 && r >= -.4243 && r < -.3232 ? b : i >= -.0518 && i < .0895 && r >= -.4243 && r < -.3824 ? x : p).invert(e) }, _.stream = function (t) { return e && i === t ? e : e = v([p.stream(i = t), m.stream(t), g.stream(t), y.stream(t), b.stream(t), x.stream(t)]) }, _.precision = function (e) { return arguments.length ? (p.precision(e), m.precision(e), g.precision(e), y.precision(e), b.precision(e), x.precision(e), C()) : p.precision() }, _.scale = function (e) { return arguments.length ? (p.scale(e), m.scale(.35 * e), g.scale(e), y.scale(e), b.scale(2 * e), x.scale(e), _.translate(p.translate())) : p.scale() }, _.translate = function (e) { if (!arguments.length) return p.translate(); var t = p.scale(), n = +e[0], i = +e[1]; return o = p.translate(e).clipExtent([[n - .455 * t, i - .238 * t], [n + .455 * t, i + .238 * t]]).stream(w), a = m.translate([n - .307 * t, i + .201 * t]).clipExtent([[n - .425 * t + r, i + .12 * t + r], [n - .214 * t - r, i + .233 * t - r]]).stream(w), s = g.translate([n - .205 * t, i + .212 * t]).clipExtent([[n - .214 * t + r, i + .166 * t + r], [n - .115 * t - r, i + .233 * t - r]]).stream(w), c = y.translate([n + .35 * t, i + .224 * t]).clipExtent([[n + .312 * t + r, i + .2064 * t + r], [n + .385 * t - r, i + .233 * t - r]]).stream(w), l = b.translate([n - .492 * t, i + .09 * t]).clipExtent([[n - .4243 * t + r, i + .0903 * t + r], [n - .3233 * t - r, i + .1197 * t - r]]).stream(w), u = x.translate([n - .408 * t, i + .018 * t]).clipExtent([[n - .4244 * t + r, i - .0519 * t + r], [n - .3824 * t - r, i + .0895 * t - r]]).stream(w), C() }, _.fitExtent = function (e, t) { return h(_, e, t) }, _.fitSize = function (e, t) { return f(_, e, t) }, _.drawCompositionBorders = function (e) { var t = p([-110.4641, 28.2805]), n = p([-104.0597, 28.9528]), r = p([-103.7049, 25.1031]), i = p([-109.8337, 24.4531]), o = p([-124.4745, 28.1407]), a = p([-110.931, 30.8844]), s = p([-109.8337, 24.4531]), c = p([-122.4628, 21.8562]), l = p([-76.8579, 25.1544]), u = p([-72.429, 24.2097]), h = p([-72.8265, 22.7056]), f = p([-77.1852, 23.6392]), d = p([-125.0093, 29.7791]), v = p([-118.5193, 31.3262]), m = p([-118.064, 29.6912]), g = p([-124.4369, 28.169]), y = p([-128.1314, 37.4582]), b = p([-125.2132, 38.214]), x = p([-122.3616, 30.5115]), w = p([-125.0315, 29.8211]); e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), e.moveTo(o[0], o[1]), e.lineTo(a[0], a[1]), e.lineTo(s[0], s[1]), e.lineTo(s[0], s[1]), e.lineTo(c[0], c[1]), e.closePath(), e.moveTo(l[0], l[1]), e.lineTo(u[0], u[1]), e.lineTo(h[0], h[1]), e.lineTo(h[0], h[1]), e.lineTo(f[0], f[1]), e.closePath(), e.moveTo(d[0], d[1]), e.lineTo(v[0], v[1]), e.lineTo(m[0], m[1]), e.lineTo(m[0], m[1]), e.lineTo(g[0], g[1]), e.closePath(), e.moveTo(y[0], y[1]), e.lineTo(b[0], b[1]), e.lineTo(x[0], x[1]), e.lineTo(x[0], x[1]), e.lineTo(w[0], w[1]), e.closePath() }, _.getCompositionBorders = function () { var e = n.path(); return this.drawCompositionBorders(e), e.toString() }, _.scale(1070) } function g(e) { var t = e.length; return { point: function (n, r) { var i = -1; while (++i < t) e[i].point(n, r) }, sphere: function () { var n = -1; while (++n < t) e[n].sphere() }, lineStart: function () { var n = -1; while (++n < t) e[n].lineStart() }, lineEnd: function () { var n = -1; while (++n < t) e[n].lineEnd() }, polygonStart: function () { var n = -1; while (++n < t) e[n].polygonStart() }, polygonEnd: function () { var n = -1; while (++n < t) e[n].polygonEnd() } } } function y() { var e, i, o, a, s, c = t.geoConicConformal().rotate([5, -38.6]).parallels([0, 60]), l = t.geoConicConformal().rotate([5, -38.6]).parallels([0, 60]), u = { point: function (e, t) { s = [e, t] } }; function d(e) { var t = e[0], n = e[1]; return s = null, o.point(t, n), s || (a.point(t, n), s) } function p() { return e = i = null, d } return d.invert = function (e) { var t = c.scale(), n = c.translate(), r = (e[0] - n[0]) / t, i = (e[1] - n[1]) / t; return (i >= .05346 && i < .0897 && r >= -.13388 && r < -.0322 ? l : c).invert(e) }, d.stream = function (t) { return e && i === t ? e : e = g([c.stream(i = t), l.stream(t)]) }, d.precision = function (e) { return arguments.length ? (c.precision(e), l.precision(e), p()) : c.precision() }, d.scale = function (e) { return arguments.length ? (c.scale(e), l.scale(e), d.translate(c.translate())) : c.scale() }, d.translate = function (e) { if (!arguments.length) return c.translate(); var t = c.scale(), n = +e[0], i = +e[1]; return o = c.translate(e).clipExtent([[n - .06857 * t, i - .1288 * t], [n + .13249 * t, i + .06 * t]]).stream(u), a = l.translate([n + .1 * t, i - .094 * t]).clipExtent([[n - .1331 * t + r, i + .053457 * t + r], [n - .0354 * t - r, i + .08969 * t - r]]).stream(u), p() }, d.fitExtent = function (e, t) { return h(d, e, t) }, d.fitSize = function (e, t) { return f(d, e, t) }, d.drawCompositionBorders = function (e) { var t = c([-14.034675, 34.965007]), n = c([-7.4208899, 35.536988]), r = c([-7.3148275, 33.54359]); e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]) }, d.getCompositionBorders = function () { var e = n.path(); return this.drawCompositionBorders(e), e.toString() }, d.scale(2700) } function b(e) { var t = e.length; return { point: function (n, r) { var i = -1; while (++i < t) e[i].point(n, r) }, sphere: function () { var n = -1; while (++n < t) e[n].sphere() }, lineStart: function () { var n = -1; while (++n < t) e[n].lineStart() }, lineEnd: function () { var n = -1; while (++n < t) e[n].lineEnd() }, polygonStart: function () { var n = -1; while (++n < t) e[n].polygonStart() }, polygonEnd: function () { var n = -1; while (++n < t) e[n].polygonEnd() } } } function x() { var e, i, o, a, s, c, l = t.geoConicConformal().rotate([10, -39.3]).parallels([0, 60]), u = t.geoConicConformal().rotate([17, -32.7]).parallels([0, 60]), d = t.geoConicConformal().rotate([27.8, -38.6]).parallels([0, 60]), p = { point: function (e, t) { c = [e, t] } }; function v(e) { var t = e[0], n = e[1]; return c = null, o.point(t, n), c || (a.point(t, n), c) || (s.point(t, n), c) } function m() { return e = i = null, v } return v.invert = function (e) { var t = l.scale(), n = l.translate(), r = (e[0] - n[0]) / t, i = (e[1] - n[1]) / t; return (i >= .0093 && i < .03678 && r >= -.03875 && r < -.0116 ? u : i >= -.0412 && i < .0091 && r >= -.07782 && r < -.01166 ? d : l).invert(e) }, v.stream = function (t) { return e && i === t ? e : e = b([l.stream(i = t), u.stream(t), d.stream(t)]) }, v.precision = function (e) { return arguments.length ? (l.precision(e), u.precision(e), d.precision(e), m()) : l.precision() }, v.scale = function (e) { return arguments.length ? (l.scale(e), u.scale(e), d.scale(.6 * e), v.translate(l.translate())) : l.scale() }, v.translate = function (e) { if (!arguments.length) return l.translate(); var t = l.scale(), n = +e[0], i = +e[1]; return o = l.translate(e).clipExtent([[n - .0115 * t, i - .1138 * t], [n + .2105 * t, i + .0673 * t]]).stream(p), a = u.translate([n - .0265 * t, i + .025 * t]).clipExtent([[n - .0388 * t + r, i + .0093 * t + r], [n - .0116 * t - r, i + .0368 * t - r]]).stream(p), s = d.translate([n - .045 * t, i + -.02 * t]).clipExtent([[n - .0778 * t + r, i - .0413 * t + r], [n - .0117 * t - r, i + .0091 * t - r]]).stream(p), m() }, v.fitExtent = function (e, t) { return h(v, e, t) }, v.fitSize = function (e, t) { return f(v, e, t) }, v.drawCompositionBorders = function (e) { var t = l([-12.8351, 38.7113]), n = l([-10.8482, 38.7633]), r = l([-10.8181, 37.2072]), i = l([-12.7345, 37.1573]), o = l([-16.0753, 41.4436]), a = l([-10.9168, 41.6861]), s = l([-10.8557, 38.7747]), c = l([-15.6728, 38.5505]); e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), e.moveTo(o[0], o[1]), e.lineTo(a[0], a[1]), e.lineTo(s[0], s[1]), e.lineTo(s[0], s[1]), e.lineTo(c[0], c[1]), e.closePath() }, v.getCompositionBorders = function () { var e = n.path(); return this.drawCompositionBorders(e), e.toString() }, v.scale(4200) } function w(e) { var t = e.length; return { point: function (n, r) { var i = -1; while (++i < t) e[i].point(n, r) }, sphere: function () { var n = -1; while (++n < t) e[n].sphere() }, lineStart: function () { var n = -1; while (++n < t) e[n].lineStart() }, lineEnd: function () { var n = -1; while (++n < t) e[n].lineEnd() }, polygonStart: function () { var n = -1; while (++n < t) e[n].polygonStart() }, polygonEnd: function () { var n = -1; while (++n < t) e[n].polygonEnd() } } } function _() { var e, i, o, a, s, c = t.geoMercator().rotate([80, 1.5]), l = t.geoMercator().rotate([90.73, 1]), u = { point: function (e, t) { s = [e, t] } }; function d(e) { var t = e[0], n = e[1]; return s = null, o.point(t, n), s || (a.point(t, n), s) } function p() { return e = i = null, d } return d.invert = function (e) { var t = c.scale(), n = c.translate(), r = (e[0] - n[0]) / t, i = (e[1] - n[1]) / t; return (i >= -.0676 && i < -.026 && r >= -.0857 && r < -.0263 ? l : c).invert(e) }, d.stream = function (t) { return e && i === t ? e : e = w([c.stream(i = t), l.stream(t)]) }, d.precision = function (e) { return arguments.length ? (c.precision(e), l.precision(e), p()) : c.precision() }, d.scale = function (e) { return arguments.length ? (c.scale(e), l.scale(e), d.translate(c.translate())) : c.scale() }, d.translate = function (e) { if (!arguments.length) return c.translate(); var t = c.scale(), n = +e[0], i = +e[1]; return o = c.translate(e).clipExtent([[n - .0262 * t, i - .0734 * t], [n + .1741 * t, i + .079 * t]]).stream(u), a = l.translate([n - .06 * t, i - .04 * t]).clipExtent([[n - .0857 * t + r, i - .0676 * t + r], [n - .0263 * t - r, i - .026 * t - r]]).stream(u), p() }, d.fitExtent = function (e, t) { return h(d, e, t) }, d.fitSize = function (e, t) { return f(d, e, t) }, d.drawCompositionBorders = function (e) { var t = c([-84.9032, 2.3757]), n = c([-81.5047, 2.3708]), r = c([-81.5063, -.01]), i = c([-84.9086, -.005]); e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath() }, d.getCompositionBorders = function () { var e = n.path(); return this.drawCompositionBorders(e), e.toString() }, d.scale(3500) } function C(e) { var t = e.length; return { point: function (n, r) { var i = -1; while (++i < t) e[i].point(n, r) }, sphere: function () { var n = -1; while (++n < t) e[n].sphere() }, lineStart: function () { var n = -1; while (++n < t) e[n].lineStart() }, lineEnd: function () { var n = -1; while (++n < t) e[n].lineEnd() }, polygonStart: function () { var n = -1; while (++n < t) e[n].polygonStart() }, polygonEnd: function () { var n = -1; while (++n < t) e[n].polygonEnd() } } } function M() { var e, i, o, a, s, c, l, u = t.geoTransverseMercator().rotate([72, 37]), d = t.geoStereographic().rotate([72, 0]), p = t.geoMercator().rotate([80, 33.5]), v = t.geoMercator().rotate([110, 25]), m = { point: function (e, t) { l = [e, t] } }; function g(e) { var t = e[0], n = e[1]; return l = null, o.point(t, n), l || (a.point(t, n), l) || (s.point(t, n), l) || (c.point(t, n), l) } function y() { return e = i = null, g } return g.invert = function (e) { var t = u.scale(), n = u.translate(), r = (e[0] - n[0]) / t, i = (e[1] - n[1]) / t; return (i >= .2582 && i < .32 && r >= -.1036 && r < -.087 ? d : i >= -.01298 && i < .0133 && r >= -.11396 && r < -.05944 ? p : i >= .01539 && i < .03911 && r >= -.089 && r < -.0588 ? v : u).invert(e) }, g.stream = function (t) { return e && i === t ? e : e = C([u.stream(i = t), d.stream(t), p.stream(t), v.stream(t)]) }, g.precision = function (e) { return arguments.length ? (u.precision(e), d.precision(e), p.precision(e), v.precision(e), y()) : u.precision() }, g.scale = function (e) { return arguments.length ? (u.scale(e), d.scale(.15 * e), p.scale(1.5 * e), v.scale(1.5 * e), g.translate(u.translate())) : u.scale() }, g.translate = function (e) { if (!arguments.length) return u.translate(); var t = u.scale(), n = +e[0], i = +e[1]; return o = u.translate(e).clipExtent([[n - .059 * t, i - .3835 * t], [n + .4498 * t, i + .3375 * t]]).stream(m), a = d.translate([n - .087 * t, i + .17 * t]).clipExtent([[n - .1166 * t + r, i + .2582 * t + r], [n - .06 * t - r, i + .32 * t - r]]).stream(m), s = p.translate([n - .092 * t, i - 0 * t]).clipExtent([[n - .114 * t + r, i - .013 * t + r], [n - .0594 * t - r, i + .0133 * t - r]]).stream(m), c = v.translate([n - .089 * t, i - .0265 * t]).clipExtent([[n - .089 * t + r, i + .0154 * t + r], [n - .0588 * t - r, i + .0391 * t - r]]).stream(m), y() }, g.fitExtent = function (e, t) { return h(g, e, t) }, g.fitSize = function (e, t) { return f(g, e, t) }, g.drawCompositionBorders = function (e) { var t = u([-82.6999, -51.3043]), n = u([-77.5442, -51.6631]), r = u([-78.0254, -55.186]), i = u([-83.6106, -54.7785]), o = u([-80.0638, -35.984]), a = u([-76.2153, -36.1811]), s = u([-76.2994, -37.6839]), c = u([-80.2231, -37.4757]), l = u([-78.442, -37.706]), h = u([-76.263, -37.8054]), f = u([-76.344, -39.1595]), d = u([-78.5638, -39.0559]); e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), e.moveTo(o[0], o[1]), e.lineTo(a[0], a[1]), e.lineTo(s[0], s[1]), e.lineTo(s[0], s[1]), e.lineTo(c[0], c[1]), e.closePath(), e.moveTo(l[0], l[1]), e.lineTo(h[0], h[1]), e.lineTo(f[0], f[1]), e.lineTo(f[0], f[1]), e.lineTo(d[0], d[1]), e.closePath() }, g.getCompositionBorders = function () { var e = n.path(); return this.drawCompositionBorders(e), e.toString() }, g.scale(700) } function O(e) { var t = e.length; return { point: function (n, r) { var i = -1; while (++i < t) e[i].point(n, r) }, sphere: function () { var n = -1; while (++n < t) e[n].sphere() }, lineStart: function () { var n = -1; while (++n < t) e[n].lineStart() }, lineEnd: function () { var n = -1; while (++n < t) e[n].lineEnd() }, polygonStart: function () { var n = -1; while (++n < t) e[n].polygonStart() }, polygonEnd: function () { var n = -1; while (++n < t) e[n].polygonEnd() } } } function k() { var e, i, o, a, s, c, l = t.geoConicEquidistant().rotate([-136, -22]).parallels([40, 34]), u = t.geoConicEquidistant().rotate([-146, -26]).parallels([40, 34]), d = t.geoConicEquidistant().rotate([-126, -19]).parallels([40, 34]), p = { point: function (e, t) { c = [e, t] } }; function v(e) { var t = e[0], n = e[1]; return c = null, o.point(t, n), c || (a.point(t, n), c) || (s.point(t, n), c) } function m() { return e = i = null, v } return v.invert = function (e) { var t = l.scale(), n = l.translate(), r = (e[0] - n[0]) / t, i = (e[1] - n[1]) / t; return (i >= -.10925 && i < -.02701 && r >= -.135 && r < -.0397 ? u : i >= .04713 && i < .11138 && r >= -.03986 && r < .051 ? d : l).invert(e) }, v.stream = function (t) { return e && i === t ? e : e = O([l.stream(i = t), u.stream(t), d.stream(t)]) }, v.precision = function (e) { return arguments.length ? (l.precision(e), u.precision(e), d.precision(e), m()) : l.precision() }, v.scale = function (e) { return arguments.length ? (l.scale(e), u.scale(e), d.scale(.7 * e), v.translate(l.translate())) : l.scale() }, v.translate = function (e) { if (!arguments.length) return l.translate(); var t = l.scale(), n = +e[0], i = +e[1]; return o = l.translate(e).clipExtent([[n - .1352 * t, i - .1091 * t], [n + .117 * t, i + .098 * t]]).stream(p), a = u.translate([n - .0425 * t, i - .005 * t]).clipExtent([[n - .135 * t + r, i - .1093 * t + r], [n - .0397 * t - r, i - .027 * t - r]]).stream(p), s = d.translate(e).clipExtent([[n - .0399 * t + r, i + .0471 * t + r], [n + .051 * t - r, i + .1114 * t - r]]).stream(p), m() }, v.fitExtent = function (e, t) { return h(v, e, t) }, v.fitSize = function (e, t) { return f(v, e, t) }, v.drawCompositionBorders = function (e) { var t = l([126.01320483689143, 41.621090310215585]), n = l([133.04304387025903, 42.15087523707186]), r = l([133.3021766080688, 37.43975444725098]), i = l([126.87889168628224, 36.95488945159779]), o = l([132.9, 29.8]), a = l([134, 33]), s = l([139.3, 33.2]), c = l([139.16, 30.5]); e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), e.moveTo(o[0], o[1]), e.lineTo(a[0], a[1]), e.lineTo(s[0], s[1]), e.lineTo(c[0], c[1]) }, v.getCompositionBorders = function () { var e = n.path(); return this.drawCompositionBorders(e), e.toString() }, v.scale(2200) } function S(e) { var t = e.length; return { point: function (n, r) { var i = -1; while (++i < t) e[i].point(n, r) }, sphere: function () { var n = -1; while (++n < t) e[n].sphere() }, lineStart: function () { var n = -1; while (++n < t) e[n].lineStart() }, lineEnd: function () { var n = -1; while (++n < t) e[n].lineEnd() }, polygonStart: function () { var n = -1; while (++n < t) e[n].polygonStart() }, polygonEnd: function () { var n = -1; while (++n < t) e[n].polygonEnd() } } } function T() { var e, i, o, a, s, c, l, u, d, p, v, m, g, y, b, x = t.geoConicConformal().rotate([-3, -46.2]).parallels([0, 60]), w = t.geoMercator().center([-53.2, 3.9]), _ = t.geoMercator().center([-61.03, 14.67]), C = t.geoMercator().center([-61.46, 16.14]), M = t.geoMercator().center([-62.85, 17.92]), O = t.geoMercator().center([-56.23, 46.93]), k = t.geoMercator().center([45.16, -12.8]), T = t.geoMercator().center([55.52, -21.13]), A = t.geoMercator().center([165.8, -21.07]), L = t.geoMercator().center([-178.1, -14.3]), j = t.geoMercator().center([-150.55, -17.11]), z = t.geoMercator().center([-150.55, -17.11]), E = { point: function (e, t) { b = [e, t] } }; function P(e) { var t = e[0], n = e[1]; return b = null, o.point(t, n), b || (a.point(t, n), b) || (s.point(t, n), b) || (c.point(t, n), b) || (l.point(t, n), b) || (u.point(t, n), b) || (d.point(t, n), b) || (p.point(t, n), b) || (v.point(t, n), b) || (m.point(t, n), b) || (g.point(t, n), b) || (y.point(t, n), b) } function D() { return e = i = null, P } return P.invert = function (e) { var t = x.scale(), n = x.translate(), r = (e[0] - n[0]) / t, i = (e[1] - n[1]) / t; return (i >= .029 && i < .0864 && r >= -.14 && r < -.0996 ? w : i >= 0 && i < .029 && r >= -.14 && r < -.0996 ? _ : i >= -.032 && i < 0 && r >= -.14 && r < -.0996 ? C : i >= -.052 && i < -.032 && r >= -.14 && r < -.0996 ? M : i >= -.076 && i < .052 && r >= -.14 && r < -.0996 ? O : i >= -.076 && i < -.052 && r >= .0967 && r < .1371 ? k : i >= -.052 && i < -.02 && r >= .0967 && r < .1371 ? T : i >= -.02 && i < .012 && r >= .0967 && r < .1371 ? A : i >= .012 && i < .033 && r >= .0967 && r < .1371 ? L : i >= .033 && i < .0864 && r >= .0967 && r < .1371 ? j : x).invert(e) }, P.stream = function (t) { return e && i === t ? e : e = S([x.stream(i = t), w.stream(t), _.stream(t), C.stream(t), M.stream(t), O.stream(t), k.stream(t), T.stream(t), A.stream(t), L.stream(t), j.stream(t), z.stream(t)]) }, P.precision = function (e) { return arguments.length ? (x.precision(e), w.precision(e), _.precision(e), C.precision(e), M.precision(e), O.precision(e), k.precision(e), T.precision(e), A.precision(e), L.precision(e), j.precision(e), z.precision(e), D()) : x.precision() }, P.scale = function (e) { return arguments.length ? (x.scale(e), w.scale(.6 * e), _.scale(1.6 * e), C.scale(1.4 * e), M.scale(5 * e), O.scale(1.3 * e), k.scale(1.6 * e), T.scale(1.2 * e), A.scale(.3 * e), L.scale(2.7 * e), j.scale(.5 * e), z.scale(.06 * e), P.translate(x.translate())) : x.scale() }, P.translate = function (e) { if (!arguments.length) return x.translate(); var t = x.scale(), n = +e[0], i = +e[1]; return o = x.translate(e).clipExtent([[n - .0996 * t, i - .0908 * t], [n + .0967 * t, i + .0864 * t]]).stream(E), a = w.translate([n - .12 * t, i + .0575 * t]).clipExtent([[n - .14 * t + r, i + .029 * t + r], [n - .0996 * t - r, i + .0864 * t - r]]).stream(E), s = _.translate([n - .12 * t, i + .013 * t]).clipExtent([[n - .14 * t + r, i + 0 * t + r], [n - .0996 * t - r, i + .029 * t - r]]).stream(E), c = C.translate([n - .12 * t, i - .014 * t]).clipExtent([[n - .14 * t + r, i - .032 * t + r], [n - .0996 * t - r, i + 0 * t - r]]).stream(E), l = M.translate([n - .12 * t, i - .044 * t]).clipExtent([[n - .14 * t + r, i - .052 * t + r], [n - .0996 * t - r, i - .032 * t - r]]).stream(E), u = O.translate([n - .12 * t, i - .065 * t]).clipExtent([[n - .14 * t + r, i - .076 * t + r], [n - .0996 * t - r, i - .052 * t - r]]).stream(E), d = k.translate([n + .117 * t, i - .064 * t]).clipExtent([[n + .0967 * t + r, i - .076 * t + r], [n + .1371 * t - r, i - .052 * t - r]]).stream(E), p = T.translate([n + .116 * t, i - .0355 * t]).clipExtent([[n + .0967 * t + r, i - .052 * t + r], [n + .1371 * t - r, i - .02 * t - r]]).stream(E), v = A.translate([n + .116 * t, i - .0048 * t]).clipExtent([[n + .0967 * t + r, i - .02 * t + r], [n + .1371 * t - r, i + .012 * t - r]]).stream(E), m = L.translate([n + .116 * t, i + .022 * t]).clipExtent([[n + .0967 * t + r, i + .012 * t + r], [n + .1371 * t - r, i + .033 * t - r]]).stream(E), y = z.translate([n + .11 * t, i + .045 * t]).clipExtent([[n + .0967 * t + r, i + .033 * t + r], [n + .1371 * t - r, i + .06 * t - r]]).stream(E), g = j.translate([n + .115 * t, i + .075 * t]).clipExtent([[n + .0967 * t + r, i + .06 * t + r], [n + .1371 * t - r, i + .0864 * t - r]]).stream(E), D() }, P.fitExtent = function (e, t) { return h(P, e, t) }, P.fitSize = function (e, t) { return f(P, e, t) }, P.drawCompositionBorders = function (e) { var t, n, r, i; t = x([-7.938886725111036, 43.7219460918835]), n = x([-4.832080896458295, 44.12930268549372]), r = x([-4.205299743793263, 40.98096346967365]), i = x([-7.071796453126152, 40.610037319181444]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([-8.42751373617692, 45.32889452553031]), n = x([-5.18599305777107, 45.7566442062976]), r = x([-4.832080905154431, 44.129302726751426]), i = x([-7.938886737126192, 43.72194613263854]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([-9.012656899657046, 47.127733821030176]), n = x([-5.6105244772793155, 47.579777861410626]), r = x([-5.185993067168585, 45.756644248170346]), i = x([-8.427513749141811, 45.32889456686326]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([-9.405747558985553, 48.26506375557457]), n = x([-5.896175018439575, 48.733352850851624]), r = x([-5.610524487556043, 47.57977790393761]), i = x([-9.012656913808351, 47.127733862971255]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([-9.908436061346974, 49.642448789505856]), n = x([-6.262026716233124, 50.131426841787174]), r = x([-5.896175029331232, 48.73335289377258]), i = x([-9.40574757396393, 48.26506379787767]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([11.996907706504462, 50.16039028163579]), n = x([15.649907879773343, 49.68279246765253]), r = x([15.156712840526632, 48.30371557625831]), i = x([11.64122661754411, 48.761078240546816]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([11.641226606955788, 48.7610781975889]), n = x([15.156712825832164, 48.30371553390465]), r = x([14.549932166241172, 46.4866532486199]), i = x([11.204443787952183, 46.91899233914248]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([11.204443778297161, 46.918992296823646]), n = x([14.549932152815039, 46.486653206856396]), r = x([13.994409796764009, 44.695833444323256]), i = x([10.805306599253848, 45.105133870684924]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([10.805306590412085, 45.10513382903308]), n = x([13.99440978444733, 44.695833403183606]), r = x([13.654633799024392, 43.53552468558152]), i = x([10.561516803980956, 43.930671459798624]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([10.561516795617383, 43.93067141859757]), n = x([13.654633787361952, 43.5355246448671]), r = x([12.867691604239901, 40.640701985019405]), i = x([9.997809515987688, 41.00288343254471]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([10.8, 42.4]), n = x([12.8, 42.13]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]) }, P.getCompositionBorders = function () { var e = n.path(); return this.drawCompositionBorders(e), e.toString() }, P.scale(2700) } function A(e) { var t = e.length; return { point: function (n, r) { var i = -1; while (++i < t) e[i].point(n, r) }, sphere: function () { var n = -1; while (++n < t) e[n].sphere() }, lineStart: function () { var n = -1; while (++n < t) e[n].lineStart() }, lineEnd: function () { var n = -1; while (++n < t) e[n].lineEnd() }, polygonStart: function () { var n = -1; while (++n < t) e[n].polygonStart() }, polygonEnd: function () { var n = -1; while (++n < t) e[n].polygonEnd() } } } function L() { var e, i, o, a, s, c, l, u, d, p, v, m, g, y, b, x = t.geoConicConformal().rotate([-10, -53]).parallels([0, 60]), w = t.geoMercator().center([-61.46, 16.14]), _ = t.geoMercator().center([-53.2, 3.9]), C = t.geoConicConformal().rotate([27.8, -38.9]).parallels([0, 60]), M = t.geoConicConformal().rotate([25.43, -37.398]).parallels([0, 60]), O = t.geoConicConformal().rotate([31.17, -39.539]).parallels([0, 60]), k = t.geoConicConformal().rotate([17, -32.7]).parallels([0, 60]), S = t.geoConicConformal().rotate([16, -28.5]).parallels([0, 60]), T = t.geoMercator().center([-61.03, 14.67]), L = t.geoMercator().center([45.16, -12.8]), j = t.geoMercator().center([55.52, -21.13]), z = t.geoConicConformal().rotate([-14.4, -35.95]).parallels([0, 60]), E = { point: function (e, t) { b = [e, t] } }; function P(e) { var t = e[0], n = e[1]; return b = null, o.point(t, n), b || (s.point(t, n), b) || (v.point(t, n), b) || (a.point(t, n), b) || (p.point(t, n), b) || (d.point(t, n), b) || (m.point(t, n), b) || (g.point(t, n), b) || (y.point(t, n), b) || (c.point(t, n), b) || (l.point(t, n), b) || (u.point(t, n), b) } function D() { return e = i = null, P } return P.invert = function (e) { var t = x.scale(), n = x.translate(), r = (e[0] - (n[0] + .08 * t)) / t, i = (e[1] - n[1]) / t; return (i >= -.31 && i < -.24 && r >= .14 && r < .24 ? w : i >= -.24 && i < -.17 && r >= .14 && r < .24 ? _ : i >= -.17 && i < -.12 && r >= .21 && r < .24 ? M : i >= -.17 && i < -.14 && r >= .14 && r < .165 ? O : i >= -.17 && i < -.1 && r >= .14 && r < .24 ? C : i >= -.1 && i < -.03 && r >= .14 && r < .24 ? k : i >= -.03 && i < .04 && r >= .14 && r < .24 ? S : i >= -.31 && i < -.24 && r >= .24 && r < .34 ? T : i >= -.24 && i < -.17 && r >= .24 && r < .34 ? L : i >= -.17 && i < -.1 && r >= .24 && r < .34 ? j : i >= -.1 && i < -.03 && r >= .24 && r < .34 ? z : x).invert(e) }, P.stream = function (t) { return e && i === t ? e : e = A([x.stream(i = t), _.stream(t), T.stream(t), w.stream(t), S.stream(t), k.stream(t), L.stream(t), j.stream(t), z.stream(t), C.stream(t), M.stream(t), O.stream(t)]) }, P.precision = function (e) { return arguments.length ? (x.precision(e), _.precision(e), T.precision(e), w.precision(e), S.precision(e), k.precision(e), L.precision(e), j.precision(e), z.precision(e), C.precision(e), M.precision(e), O.precision(e), D()) : x.precision() }, P.scale = function (e) { return arguments.length ? (x.scale(e), w.scale(3 * e), _.scale(.8 * e), T.scale(3.5 * e), j.scale(2.7 * e), C.scale(2 * e), M.scale(2 * e), O.scale(2 * e), k.scale(3 * e), S.scale(e), L.scale(5.5 * e), z.scale(6 * e), P.translate(x.translate())) : x.scale() }, P.translate = function (e) { if (!arguments.length) return x.translate(); var t = x.scale(), n = +e[0], i = +e[1]; return o = x.translate([n - .08 * t, i]).clipExtent([[n - .51 * t, i - .33 * t], [n + .5 * t, i + .33 * t]]).stream(E), a = w.translate([n + .19 * t, i - .275 * t]).clipExtent([[n + .14 * t + r, i - .31 * t + r], [n + .24 * t - r, i - .24 * t - r]]).stream(E), s = _.translate([n + .19 * t, i - .205 * t]).clipExtent([[n + .14 * t + r, i - .24 * t + r], [n + .24 * t - r, i - .17 * t - r]]).stream(E), c = C.translate([n + .19 * t, i - .135 * t]).clipExtent([[n + .14 * t + r, i - .17 * t + r], [n + .24 * t - r, i - .1 * t - r]]).stream(E), l = M.translate([n + .225 * t, i - .147 * t]).clipExtent([[n + .21 * t + r, i - .17 * t + r], [n + .24 * t - r, i - .12 * t - r]]).stream(E), u = O.translate([n + .153 * t, i - .15 * t]).clipExtent([[n + .14 * t + r, i - .17 * t + r], [n + .165 * t - r, i - .14 * t - r]]).stream(E), d = k.translate([n + .19 * t, i - .065 * t]).clipExtent([[n + .14 * t + r, i - .1 * t + r], [n + .24 * t - r, i - .03 * t - r]]).stream(E), p = S.translate([n + .19 * t, i + .005 * t]).clipExtent([[n + .14 * t + r, i - .03 * t + r], [n + .24 * t - r, i + .04 * t - r]]).stream(E), v = T.translate([n + .29 * t, i - .275 * t]).clipExtent([[n + .24 * t + r, i - .31 * t + r], [n + .34 * t - r, i - .24 * t - r]]).stream(E), m = L.translate([n + .29 * t, i - .205 * t]).clipExtent([[n + .24 * t + r, i - .24 * t + r], [n + .34 * t - r, i - .17 * t - r]]).stream(E), g = j.translate([n + .29 * t, i - .135 * t]).clipExtent([[n + .24 * t + r, i - .17 * t + r], [n + .34 * t - r, i - .1 * t - r]]).stream(E), y = z.translate([n + .29 * t, i - .065 * t]).clipExtent([[n + .24 * t + r, i - .1 * t + r], [n + .34 * t - r, i - .03 * t - r]]).stream(E), D() }, P.fitExtent = function (e, t) { return h(P, e, t) }, P.fitSize = function (e, t) { return f(P, e, t) }, P.drawCompositionBorders = function (e) { var t, n, r, i; t = x([42.45755610828648, 63.343658547914934]), n = x([52.65837266667029, 59.35045080290929]), r = x([47.19754502247785, 56.12653496548117]), i = x([37.673034273363044, 59.61638268506111]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([59.41110754003403, 62.35069727399336]), n = x([66.75050228640794, 57.11797303636038]), r = x([60.236065725110436, 54.63331433818992]), i = x([52.65837313153311, 59.350450804599355]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([48.81091130080243, 66.93353402634641]), n = x([59.41110730654679, 62.35069740653086]), r = x([52.6583728974441, 59.3504509222445]), i = x([42.45755631675751, 63.34365868805821]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([31.054198418446475, 52.1080673766184]), n = x([39.09869284884117, 49.400700047190554]), r = x([36.0580811499175, 46.02944174908498]), i = x([28.690508588835726, 48.433126979386415]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([33.977877745912025, 55.849945501331]), n = x([42.75328432167726, 52.78455122462353]), r = x([39.09869297540224, 49.400700176148625]), i = x([31.05419851807008, 52.10806751810923]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([52.658372900759296, 59.35045068526415]), n = x([60.23606549583304, 54.63331423800264]), r = x([54.6756370953122, 51.892298789399455]), i = x([47.19754524788189, 56.126534861222794]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([47.19754506082455, 56.126534735591456]), n = x([54.675636900123514, 51.892298681337095]), r = x([49.94448648951486, 48.98775484983285]), i = x([42.75328468716108, 52.78455126060818]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([42.75328453416769, 52.78455113209101]), n = x([49.94448632339758, 48.98775473706457]), r = x([45.912339990394315, 45.99361784987003]), i = x([39.09869317356607, 49.40070009378711]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([37.673034114296634, 59.61638254183119]), n = x([47.197544835420544, 56.126534839849846]), r = x([42.75328447467064, 52.78455135314068]), i = x([33.977877870363905, 55.849945644671145]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([44.56748486446032, 57.26489367845818]), r = x([43.9335791193588, 53.746540942601726]), i = x([43, 56]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = x([37.673034114296634, 59.61638254183119]), n = x([40.25902691953466, 58.83002044222639]), r = x([38.458270492742024, 57.26232178028002]), i = x([35.97754948030156, 58.00266637992386]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath() }, P.getCompositionBorders = function () { var e = n.path(); return this.drawCompositionBorders(e), e.toString() }, P.scale(750) } function j(e) { var t = e.length; return { point: function (n, r) { var i = -1; while (++i < t) e[i].point(n, r) }, sphere: function () { var n = -1; while (++n < t) e[n].sphere() }, lineStart: function () { var n = -1; while (++n < t) e[n].lineStart() }, lineEnd: function () { var n = -1; while (++n < t) e[n].lineEnd() }, polygonStart: function () { var n = -1; while (++n < t) e[n].polygonStart() }, polygonEnd: function () { var n = -1; while (++n < t) e[n].polygonEnd() } } } function z() { var e, i, o, a, s, c = t.geoMercator().center([105.25, 4]), l = t.geoMercator().center([118.65, 2.86]), u = { point: function (e, t) { s = [e, t] } }; function d(e) { var t = e[0], n = e[1]; return s = null, o.point(t, n), s || (a.point(t, n), s) } function p() { return e = i = null, d } return d.invert = function (e) { var t = c.scale(), n = c.translate(), r = (e[0] - n[0]) / t, i = (e[1] - n[1]) / t; return (i >= -.0521 && i < .0229 && r >= -.0111 && r < .1 ? l : c).invert(e) }, d.stream = function (t) { return e && i === t ? e : e = j([c.stream(i = t), l.stream(t)]) }, d.precision = function (e) { return arguments.length ? (c.precision(e), l.precision(e), p()) : c.precision() }, d.scale = function (e) { return arguments.length ? (c.scale(e), l.scale(.615 * e), d.translate(c.translate())) : c.scale() }, d.translate = function (e) { if (!arguments.length) return c.translate(); var t = c.scale(), n = +e[0], i = +e[1]; return o = c.translate(e).clipExtent([[n - .11 * t, i - .0521 * t], [n - .0111 * t, i + .0521 * t]]).stream(u), a = l.translate([n + .09 * t, i - 0 * t]).clipExtent([[n - .0111 * t + r, i - .0521 * t + r], [n + .1 * t - r, i + .024 * t - r]]).stream(u), p() }, d.fitExtent = function (e, t) { return h(d, e, t) }, d.fitSize = function (e, t) { return f(d, e, t) }, d.drawCompositionBorders = function (e) { var t = c([106.3214, 2.0228]), n = c([105.1843, 2.3761]), r = c([104.2151, 3.3618]), i = c([104.215, 4.5651]); e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]) }, d.getCompositionBorders = function () { var e = n.path(); return this.drawCompositionBorders(e), e.toString() }, d.scale(4800) } function E(e) { var t = e.length; return { point: function (n, r) { var i = -1; while (++i < t) e[i].point(n, r) }, sphere: function () { var n = -1; while (++n < t) e[n].sphere() }, lineStart: function () { var n = -1; while (++n < t) e[n].lineStart() }, lineEnd: function () { var n = -1; while (++n < t) e[n].lineEnd() }, polygonStart: function () { var n = -1; while (++n < t) e[n].polygonStart() }, polygonEnd: function () { var n = -1; while (++n < t) e[n].polygonEnd() } } } function P() { var e, i, o, a, s, c, l = t.geoMercator().rotate([-9.5, -1.5]), u = t.geoMercator().rotate([-8.6, -3.5]), d = t.geoMercator().rotate([-5.6, 1.45]), p = { point: function (e, t) { c = [e, t] } }; function v(e) { var t = e[0], n = e[1]; return c = null, o.point(t, n), c || (a.point(t, n), c) || (s.point(t, n), c) } function m() { return e = i = null, v } return v.invert = function (e) { var t = l.scale(), n = l.translate(), r = (e[0] - n[0]) / t, i = (e[1] - n[1]) / t; return (i >= -.02 && i < 0 && r >= -.038 && r < -.005 ? u : i >= 0 && i < .02 && r >= -.038 && r < -.005 ? d : l).invert(e) }, v.stream = function (t) { return e && i === t ? e : e = E([l.stream(i = t), u.stream(t), d.stream(t)]) }, v.precision = function (e) { return arguments.length ? (l.precision(e), u.precision(e), d.precision(e), m()) : l.precision() }, v.scale = function (e) { return arguments.length ? (l.scale(e), u.scale(1.5 * e), d.scale(4 * e), v.translate(l.translate())) : l.scale() }, v.translate = function (e) { if (!arguments.length) return l.translate(); var t = l.scale(), n = +e[0], i = +e[1]; return o = l.translate(e).clipExtent([[n - .005 * t, i - .02 * t], [n + .038 * t, i + .02 * t]]).stream(p), a = u.translate([n - .025 * t, i - .01 * t]).clipExtent([[n - .038 * t + r, i - .02 * t + r], [n - .005 * t - r, i + 0 * t - r]]).stream(p), s = d.translate([n - .025 * t, i + .01 * t]).clipExtent([[n - .038 * t + r, i - 0 * t + r], [n - .005 * t - r, i + .02 * t - r]]).stream(p), m() }, v.fitExtent = function (e, t) { return h(v, e, t) }, v.fitSize = function (e, t) { return f(v, e, t) }, v.drawCompositionBorders = function (e) { var t, n, r, i; t = l([9.21327272751682, 2.645820439454123]), n = l([11.679126293239872, 2.644755519268689]), r = l([11.676845389029227, .35307824637606433]), i = l([9.213572917774014, .35414205204417754]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = l([7.320873711543669, 2.64475551449975]), n = l([9.213272722738658, 2.645820434679803]), r = l([9.213422896480349, 1.4999812505283054]), i = l([7.322014760520787, 1.4989168878985566]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath(), t = l([7.3220147605302905, 1.4989168783492766]), n = l([9.213422896481598, 1.499981240979021]), r = l([9.213572912999604, .354142056817247]), i = l([7.323154615739809, .353078251154504]), e.moveTo(t[0], t[1]), e.lineTo(n[0], n[1]), e.lineTo(r[0], r[1]), e.lineTo(i[0], i[1]), e.closePath() }, v.getCompositionBorders = function () { var e = n.path(); return this.drawCompositionBorders(e), e.toString() }, v.scale(12e3) } e.geoAlbersUsa = p, e.geoAlbersUsaTerritories = m, e.geoConicConformalSpain = y, e.geoConicConformalPortugal = x, e.geoMercatorEcuador = _, e.geoTransverseMercatorChile = M, e.geoConicEquidistantJapan = k, e.geoConicConformalFrance = T, e.geoConicConformalEurope = L, e.geoMercatorMalaysia = z, e.geoMercatorEquatorialGuinea = P, Object.defineProperty(e, "__esModule", { value: !0 }) })) }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(142); n.d(t, "geoArea", (function () { return r["c"] })); var i = n(324); n.d(t, "geoBounds", (function () { return i["a"] })); var o = n(325); n.d(t, "geoCentroid", (function () { return o["a"] })); var a = n(143); n.d(t, "geoCircle", (function () { return a["b"] })); var s = n(145); n.d(t, "geoClipExtent", (function () { return s["b"] })); var c = n(328); n.d(t, "geoDistance", (function () { return c["a"] })); var l = n(329); n.d(t, "geoGraticule", (function () { return l["a"] })); var u = n(330); n.d(t, "geoInterpolate", (function () { return u["a"] })); var h = n(149); n.d(t, "geoLength", (function () { return h["a"] })); var f = n(331); n.d(t, "geoPath", (function () { return f["a"] })); var d = n(152); n.d(t, "geoAlbers", (function () { return d["a"] })); var p = n(340); n.d(t, "geoAlbersUsa", (function () { return p["a"] })); var v = n(341); n.d(t, "geoAzimuthalEqualArea", (function () { return v["b"] })), n.d(t, "geoAzimuthalEqualAreaRaw", (function () { return v["a"] })); var m = n(342); n.d(t, "geoAzimuthalEquidistant", (function () { return m["b"] })), n.d(t, "geoAzimuthalEquidistantRaw", (function () { return m["a"] })); var g = n(343); n.d(t, "geoConicConformal", (function () { return g["b"] })), n.d(t, "geoConicConformalRaw", (function () { return g["a"] })); var y = n(79); n.d(t, "geoConicEqualArea", (function () { return y["b"] })), n.d(t, "geoConicEqualAreaRaw", (function () { return y["a"] })); var b = n(344); n.d(t, "geoConicEquidistant", (function () { return b["b"] })), n.d(t, "geoConicEquidistantRaw", (function () { return b["a"] })); var x = n(155); n.d(t, "geoEquirectangular", (function () { return x["a"] })), n.d(t, "geoEquirectangularRaw", (function () { return x["b"] })); var w = n(345); n.d(t, "geoGnomonic", (function () { return w["a"] })), n.d(t, "geoGnomonicRaw", (function () { return w["b"] })); var _ = n(18); n.d(t, "geoProjection", (function () { return _["a"] })), n.d(t, "geoProjectionMutator", (function () { return _["b"] })); var C = n(82); n.d(t, "geoMercator", (function () { return C["a"] })), n.d(t, "geoMercatorRaw", (function () { return C["c"] })); var M = n(346); n.d(t, "geoOrthographic", (function () { return M["a"] })), n.d(t, "geoOrthographicRaw", (function () { return M["b"] })); var O = n(347); n.d(t, "geoStereographic", (function () { return O["a"] })), n.d(t, "geoStereographicRaw", (function () { return O["b"] })); var k = n(348); n.d(t, "geoTransverseMercator", (function () { return k["a"] })), n.d(t, "geoTransverseMercatorRaw", (function () { return k["b"] })); var S = n(78); n.d(t, "geoRotation", (function () { return S["a"] })); var T = n(26); n.d(t, "geoStream", (function () { return T["a"] })); var A = n(81); n.d(t, "geoTransform", (function () { return A["a"] })) }, function (e, t, n) { "use strict"; var r, i, o, a, s, c, l, u, h, f, d = n(42), p = n(142), v = n(43), m = n(5), g = n(26), y = Object(d["a"])(), b = { point: x, lineStart: _, lineEnd: C, polygonStart: function () { b.point = M, b.lineStart = O, b.lineEnd = k, y.reset(), p["b"].polygonStart() }, polygonEnd: function () { p["b"].polygonEnd(), b.point = x, b.lineStart = _, b.lineEnd = C, p["a"] < 0 ? (r = -(o = 180), i = -(a = 90)) : y > m["i"] ? a = 90 : y < -m["i"] && (i = -90), f[0] = r, f[1] = o } }; function x(e, t) { h.push(f = [r = e, o = e]), t < i && (i = t), t > a && (a = t) } function w(e, t) { var n = Object(v["a"])([e * m["r"], t * m["r"]]); if (u) { var c = Object(v["c"])(u, n), l = [c[1], -c[0], 0], h = Object(v["c"])(l, c); Object(v["e"])(h), h = Object(v["g"])(h); var f, d = e - s, p = d > 0 ? 1 : -1, g = h[0] * m["h"] * p, y = Object(m["a"])(d) > 180; y ^ (p * s < g && g < p * e) ? (f = h[1] * m["h"], f > a && (a = f)) : (g = (g + 360) % 360 - 180, y ^ (p * s < g && g < p * e) ? (f = -h[1] * m["h"], f < i && (i = f)) : (t < i && (i = t), t > a && (a = t))), y ? e < s ? S(r, e) > S(r, o) && (o = e) : S(e, o) > S(r, o) && (r = e) : o >= r ? (e < r && (r = e), e > o && (o = e)) : e > s ? S(r, e) > S(r, o) && (o = e) : S(e, o) > S(r, o) && (r = e) } else x(e, t); u = n, s = e } function _() { b.point = w } function C() { f[0] = r, f[1] = o, b.point = x, u = null } function M(e, t) { if (u) { var n = e - s; y.add(Object(m["a"])(n) > 180 ? n + (n > 0 ? 360 : -360) : n) } else c = e, l = t; p["b"].point(e, t), w(e, t) } function O() { p["b"].lineStart() } function k() { M(c, l), p["b"].lineEnd(), Object(m["a"])(y) > m["i"] && (r = -(o = 180)), f[0] = r, f[1] = o, u = null } function S(e, t) { return (t -= e) < 0 ? t + 360 : t } function T(e, t) { return e[0] - t[0] } function A(e, t) { return e[0] <= e[1] ? e[0] <= t && t <= e[1] : t < e[0] || e[1] < t } t["a"] = function (e) { var t, n, s, c, l, u, d; if (a = o = -(r = i = 1 / 0), h = [], Object(g["a"])(e, b), n = h.length) { for (h.sort(T), t = 1, s = h[0], l = [s]; t < n; ++t)c = h[t], A(s, c[0]) || A(s, c[1]) ? (S(s[0], c[1]) > S(s[0], s[1]) && (s[1] = c[1]), S(c[0], s[1]) > S(s[0], s[1]) && (s[0] = c[0])) : l.push(s = c); for (u = -1 / 0, n = l.length - 1, t = 0, s = l[n]; t <= n; s = c, ++t)c = l[t], (d = S(s[1], c[0])) > u && (u = d, r = c[0], o = s[1]) } return h = f = null, r === 1 / 0 || i === 1 / 0 ? [[NaN, NaN], [NaN, NaN]] : [[r, i], [o, a]] } }, function (e, t, n) { "use strict"; var r, i, o, a, s, c, l, u, h, f, d, p, v, m, g, y, b = n(5), x = n(25), w = n(26), _ = { sphere: x["a"], point: C, lineStart: O, lineEnd: T, polygonStart: function () { _.lineStart = A, _.lineEnd = L }, polygonEnd: function () { _.lineStart = O, _.lineEnd = T } }; function C(e, t) { e *= b["r"], t *= b["r"]; var n = Object(b["g"])(t); M(n * Object(b["g"])(e), n * Object(b["t"])(e), Object(b["t"])(t)) } function M(e, t, n) { ++r, o += (e - o) / r, a += (t - a) / r, s += (n - s) / r } function O() { _.point = k } function k(e, t) { e *= b["r"], t *= b["r"]; var n = Object(b["g"])(t); m = n * Object(b["g"])(e), g = n * Object(b["t"])(e), y = Object(b["t"])(t), _.point = S, M(m, g, y) } function S(e, t) { e *= b["r"], t *= b["r"]; var n = Object(b["g"])(t), r = n * Object(b["g"])(e), o = n * Object(b["t"])(e), a = Object(b["t"])(t), s = Object(b["e"])(Object(b["u"])((s = g * a - y * o) * s + (s = y * r - m * a) * s + (s = m * o - g * r) * s), m * r + g * o + y * a); i += s, c += s * (m + (m = r)), l += s * (g + (g = o)), u += s * (y + (y = a)), M(m, g, y) } function T() { _.point = C } function A() { _.point = j } function L() { z(p, v), _.point = C } function j(e, t) { p = e, v = t, e *= b["r"], t *= b["r"], _.point = z; var n = Object(b["g"])(t); m = n * Object(b["g"])(e), g = n * Object(b["t"])(e), y = Object(b["t"])(t), M(m, g, y) } function z(e, t) { e *= b["r"], t *= b["r"]; var n = Object(b["g"])(t), r = n * Object(b["g"])(e), o = n * Object(b["t"])(e), a = Object(b["t"])(t), s = g * a - y * o, p = y * r - m * a, v = m * o - g * r, x = Object(b["u"])(s * s + p * p + v * v), w = m * r + g * o + y * a, _ = x && -Object(b["b"])(w) / x, C = Object(b["e"])(x, w); h += _ * s, f += _ * p, d += _ * v, i += C, c += C * (m + (m = r)), l += C * (g + (g = o)), u += C * (y + (y = a)), M(m, g, y) } t["a"] = function (e) { r = i = o = a = s = c = l = u = h = f = d = 0, Object(w["a"])(e, _); var t = h, n = f, p = d, v = t * t + n * n + p * p; return v < b["j"] && (t = c, n = l, p = u, i < b["i"] && (t = o, n = a, p = s), v = t * t + n * n + p * p, v < b["j"]) ? [NaN, NaN] : [Object(b["e"])(n, t) * b["h"], Object(b["c"])(p / Object(b["u"])(v)) * b["h"]] } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return function () { return e } } }, function (e, t, n) { "use strict"; t["a"] = function (e, t, n, r, i, o) { var a, s = e[0], c = e[1], l = t[0], u = t[1], h = 0, f = 1, d = l - s, p = u - c; if (a = n - s, d || !(a > 0)) { if (a /= d, d < 0) { if (a < h) return; a < f && (f = a) } else if (d > 0) { if (a > f) return; a > h && (h = a) } if (a = i - s, d || !(a < 0)) { if (a /= d, d < 0) { if (a > f) return; a > h && (h = a) } else if (d > 0) { if (a < h) return; a < f && (f = a) } if (a = r - c, p || !(a > 0)) { if (a /= p, p < 0) { if (a < h) return; a < f && (f = a) } else if (p > 0) { if (a > f) return; a > h && (h = a) } if (a = o - c, p || !(a < 0)) { if (a /= p, p < 0) { if (a > f) return; a > h && (h = a) } else if (p > 0) { if (a < h) return; a < f && (f = a) } return h > 0 && (e[0] = s + h * d, e[1] = c + h * p), f < 1 && (t[0] = s + f * d, t[1] = c + f * p), !0 } } } } } }, function (e, t, n) { "use strict"; var r = n(149), i = [null, null], o = { type: "LineString", coordinates: i }; t["a"] = function (e, t) { return i[0] = e, i[1] = t, Object(r["a"])(o) } }, function (e, t, n) { "use strict"; var r = n(14), i = n(5); function o(e, t, n) { var o = Object(r["range"])(e, t - i["i"], n).concat(t); return function (e) { return o.map((function (t) { return [e, t] })) } } function a(e, t, n) { var o = Object(r["range"])(e, t - i["i"], n).concat(t); return function (e) { return o.map((function (t) { return [t, e] })) } } t["a"] = function () { var e, t, n, s, c, l, u, h, f, d, p, v, m = 10, g = m, y = 90, b = 360, x = 2.5; function w() { return { type: "MultiLineString", coordinates: _() } } function _() { return Object(r["range"])(Object(i["f"])(s / y) * y, n, y).map(p).concat(Object(r["range"])(Object(i["f"])(h / b) * b, u, b).map(v)).concat(Object(r["range"])(Object(i["f"])(t / m) * m, e, m).filter((function (e) { return Object(i["a"])(e % y) > i["i"] })).map(f)).concat(Object(r["range"])(Object(i["f"])(l / g) * g, c, g).filter((function (e) { return Object(i["a"])(e % b) > i["i"] })).map(d)) } return w.lines = function () { return _().map((function (e) { return { type: "LineString", coordinates: e } })) }, w.outline = function () { return { type: "Polygon", coordinates: [p(s).concat(v(u).slice(1), p(n).reverse().slice(1), v(h).reverse().slice(1))] } }, w.extent = function (e) { return arguments.length ? w.extentMajor(e).extentMinor(e) : w.extentMinor() }, w.extentMajor = function (e) { return arguments.length ? (s = +e[0][0], n = +e[1][0], h = +e[0][1], u = +e[1][1], s > n && (e = s, s = n, n = e), h > u && (e = h, h = u, u = e), w.precision(x)) : [[s, h], [n, u]] }, w.extentMinor = function (n) { return arguments.length ? (t = +n[0][0], e = +n[1][0], l = +n[0][1], c = +n[1][1], t > e && (n = t, t = e, e = n), l > c && (n = l, l = c, c = n), w.precision(x)) : [[t, l], [e, c]] }, w.step = function (e) { return arguments.length ? w.stepMajor(e).stepMinor(e) : w.stepMinor() }, w.stepMajor = function (e) { return arguments.length ? (y = +e[0], b = +e[1], w) : [y, b] }, w.stepMinor = function (e) { return arguments.length ? (m = +e[0], g = +e[1], w) : [m, g] }, w.precision = function (r) { return arguments.length ? (x = +r, f = o(l, c, 90), d = a(t, e, x), p = o(h, u, 90), v = a(s, n, x), w) : x }, w.extentMajor([[-180, -90 + i["i"]], [180, 90 - i["i"]]]).extentMinor([[-180, -80 - i["i"]], [180, 80 + i["i"]]]) } }, function (e, t, n) { "use strict"; var r = n(5); t["a"] = function (e, t) { var n = e[0] * r["r"], i = e[1] * r["r"], o = t[0] * r["r"], a = t[1] * r["r"], s = Object(r["g"])(i), c = Object(r["t"])(i), l = Object(r["g"])(a), u = Object(r["t"])(a), h = s * Object(r["g"])(n), f = s * Object(r["t"])(n), d = l * Object(r["g"])(o), p = l * Object(r["t"])(o), v = 2 * Object(r["c"])(Object(r["u"])(Object(r["m"])(a - i) + s * l * Object(r["m"])(o - n))), m = Object(r["t"])(v), g = v ? function (e) { var t = Object(r["t"])(e *= v) / m, n = Object(r["t"])(v - e) / m, i = n * h + t * d, o = n * f + t * p, a = n * c + t * u; return [Object(r["e"])(o, i) * r["h"], Object(r["e"])(a, Object(r["u"])(i * i + o * o)) * r["h"]] } : function () { return [n * r["h"], i * r["h"]] }; return g.distance = v, g } }, function (e, t, n) { "use strict"; var r = n(150), i = n(26), o = n(332), a = n(151), s = n(333), c = n(334), l = n(335); t["a"] = function () { var e, t, n, u, h = 4.5; function f(e) { return e && ("function" === typeof h && u.pointRadius(+h.apply(this, arguments)), Object(i["a"])(e, t(u))), u.result() } return f.area = function (e) { return Object(i["a"])(e, t(o["a"])), o["a"].result() }, f.bounds = function (e) { return Object(i["a"])(e, t(a["a"])), a["a"].result() }, f.centroid = function (e) { return Object(i["a"])(e, t(s["a"])), s["a"].result() }, f.projection = function (n) { return arguments.length ? (t = null == (e = n) ? r["a"] : n.stream, f) : e }, f.context = function (e) { return arguments.length ? (u = null == (n = e) ? new l["a"] : new c["a"](e), "function" !== typeof h && u.pointRadius(h), f) : n }, f.pointRadius = function (e) { return arguments.length ? (h = "function" === typeof e ? e : (u.pointRadius(+e), +e), f) : h }, f.projection(null).context(null) } }, function (e, t, n) { "use strict"; var r, i, o, a, s = n(42), c = n(5), l = n(25), u = Object(s["a"])(), h = Object(s["a"])(), f = { point: l["a"], lineStart: l["a"], lineEnd: l["a"], polygonStart: function () { f.lineStart = d, f.lineEnd = m }, polygonEnd: function () { f.lineStart = f.lineEnd = f.point = l["a"], u.add(Object(c["a"])(h)), h.reset() }, result: function () { var e = u / 2; return u.reset(), e } }; function d() { f.point = p } function p(e, t) { f.point = v, r = o = e, i = a = t } function v(e, t) { h.add(a * e - o * t), o = e, a = t } function m() { v(r, i) } t["a"] = f }, function (e, t, n) { "use strict"; var r, i, o, a, s = n(5), c = 0, l = 0, u = 0, h = 0, f = 0, d = 0, p = 0, v = 0, m = 0, g = { point: y, lineStart: b, lineEnd: _, polygonStart: function () { g.lineStart = C, g.lineEnd = M }, polygonEnd: function () { g.point = y, g.lineStart = b, g.lineEnd = _ }, result: function () { var e = m ? [p / m, v / m] : d ? [h / d, f / d] : u ? [c / u, l / u] : [NaN, NaN]; return c = l = u = h = f = d = p = v = m = 0, e } }; function y(e, t) { c += e, l += t, ++u } function b() { g.point = x } function x(e, t) { g.point = w, y(o = e, a = t) } function w(e, t) { var n = e - o, r = t - a, i = Object(s["u"])(n * n + r * r); h += i * (o + e) / 2, f += i * (a + t) / 2, d += i, y(o = e, a = t) } function _() { g.point = y } function C() { g.point = O } function M() { k(r, i) } function O(e, t) { g.point = k, y(r = o = e, i = a = t) } function k(e, t) { var n = e - o, r = t - a, i = Object(s["u"])(n * n + r * r); h += i * (o + e) / 2, f += i * (a + t) / 2, d += i, i = a * e - o * t, p += i * (o + e), v += i * (a + t), m += 3 * i, y(o = e, a = t) } t["a"] = g }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(5), i = n(25); function o(e) { this._context = e } o.prototype = { _radius: 4.5, pointRadius: function (e) { return this._radius = e, this }, polygonStart: function () { this._line = 0 }, polygonEnd: function () { this._line = NaN }, lineStart: function () { this._point = 0 }, lineEnd: function () { 0 === this._line && this._context.closePath(), this._point = NaN }, point: function (e, t) { switch (this._point) { case 0: this._context.moveTo(e, t), this._point = 1; break; case 1: this._context.lineTo(e, t); break; default: this._context.moveTo(e + this._radius, t), this._context.arc(e, t, this._radius, 0, r["w"]); break } }, result: i["a"] } }, function (e, t, n) { "use strict"; function r() { this._string = [] } function i(e) { return "m0," + e + "a" + e + "," + e + " 0 1,1 0," + -2 * e + "a" + e + "," + e + " 0 1,1 0," + 2 * e + "z" } t["a"] = r, r.prototype = { _circle: i(4.5), pointRadius: function (e) { return this._circle = i(e), this }, polygonStart: function () { this._line = 0 }, polygonEnd: function () { this._line = NaN }, lineStart: function () { this._point = 0 }, lineEnd: function () { 0 === this._line && this._string.push("Z"), this._point = NaN }, point: function (e, t) { switch (this._point) { case 0: this._string.push("M", e, ",", t), this._point = 1; break; case 1: this._string.push("L", e, ",", t); break; default: this._string.push("M", e, ",", t, this._circle); break } }, result: function () { if (this._string.length) { var e = this._string.join(""); return this._string = [], e } } } }, function (e, t, n) { "use strict"; var r = n(153), i = n(5); function o(e) { var t, n = NaN, r = NaN, o = NaN; return { lineStart: function () { e.lineStart(), t = 1 }, point: function (s, c) { var l = s > 0 ? i["o"] : -i["o"], u = Object(i["a"])(s - n); Object(i["a"])(u - i["o"]) < i["i"] ? (e.point(n, r = (r + c) / 2 > 0 ? i["l"] : -i["l"]), e.point(o, r), e.lineEnd(), e.lineStart(), e.point(l, r), e.point(s, r), t = 0) : o !== l && u >= i["o"] && (Object(i["a"])(n - o) < i["i"] && (n -= o * i["i"]), Object(i["a"])(s - l) < i["i"] && (s -= l * i["i"]), r = a(n, r, s, c), e.point(o, r), e.lineEnd(), e.lineStart(), e.point(l, r), t = 0), e.point(n = s, r = c), o = l }, lineEnd: function () { e.lineEnd(), n = r = NaN }, clean: function () { return 2 - t } } } function a(e, t, n, r) { var o, a, s = Object(i["t"])(e - n); return Object(i["a"])(s) > i["i"] ? Object(i["d"])((Object(i["t"])(t) * (a = Object(i["g"])(r)) * Object(i["t"])(n) - Object(i["t"])(r) * (o = Object(i["g"])(t)) * Object(i["t"])(e)) / (o * a * s)) : (t + r) / 2 } function s(e, t, n, r) { var o; if (null == e) o = n * i["l"], r.point(-i["o"], o), r.point(0, o), r.point(i["o"], o), r.point(i["o"], 0), r.point(i["o"], -o), r.point(0, -o), r.point(-i["o"], -o), r.point(-i["o"], 0), r.point(-i["o"], o); else if (Object(i["a"])(e[0] - t[0]) > i["i"]) { var a = e[0] < t[0] ? i["o"] : -i["o"]; o = n * a / 2, r.point(-a, o), r.point(0, o), r.point(a, o) } else r.point(t[0], t[1]) } t["a"] = Object(r["a"])((function () { return !0 }), o, s, [-i["o"], -i["l"]]) }, function (e, t, n) { "use strict"; var r = n(42), i = n(43), o = n(5), a = Object(r["a"])(); t["a"] = function (e, t) { var n = t[0], r = t[1], s = [Object(o["t"])(n), -Object(o["g"])(n), 0], c = 0, l = 0; a.reset(); for (var u = 0, h = e.length; u < h; ++u)if (d = (f = e[u]).length) for (var f, d, p = f[d - 1], v = p[0], m = p[1] / 2 + o["q"], g = Object(o["t"])(m), y = Object(o["g"])(m), b = 0; b < d; ++b, v = w, g = C, y = M, p = x) { var x = f[b], w = x[0], _ = x[1] / 2 + o["q"], C = Object(o["t"])(_), M = Object(o["g"])(_), O = w - v, k = O >= 0 ? 1 : -1, S = k * O, T = S > o["o"], A = g * C; if (a.add(Object(o["e"])(A * k * Object(o["t"])(S), y * M + A * Object(o["g"])(S))), c += T ? O + k * o["w"] : O, T ^ v >= n ^ w >= n) { var L = Object(i["c"])(Object(i["a"])(p), Object(i["a"])(x)); Object(i["e"])(L); var j = Object(i["c"])(s, L); Object(i["e"])(j); var z = (T ^ O >= 0 ? -1 : 1) * Object(o["c"])(j[2]); (r > z || r === z && (L[0] || L[1])) && (l += T ^ O >= 0 ? 1 : -1) } } return (c < -o["i"] || c < o["i"] && a < -o["i"]) ^ 1 & l } }, function (e, t, n) { "use strict"; var r = n(43), i = n(143), o = n(5), a = n(148), s = n(153); t["a"] = function (e, t) { var n = Object(o["g"])(e), c = n > 0, l = Object(o["a"])(n) > o["i"]; function u(n, r, o, a) { Object(i["a"])(a, e, t, o, n, r) } function h(e, t) { return Object(o["g"])(e) * Object(o["g"])(t) > n } function f(e) { var t, n, r, i, s; return { lineStart: function () { i = r = !1, s = 1 }, point: function (u, f) { var v, m = [u, f], g = h(u, f), y = c ? g ? 0 : p(u, f) : g ? p(u + (u < 0 ? o["o"] : -o["o"]), f) : 0; if (!t && (i = r = g) && e.lineStart(), g !== r && (v = d(t, m), (Object(a["a"])(t, v) || Object(a["a"])(m, v)) && (m[0] += o["i"], m[1] += o["i"], g = h(m[0], m[1]))), g !== r) s = 0, g ? (e.lineStart(), v = d(m, t), e.point(v[0], v[1])) : (v = d(t, m), e.point(v[0], v[1]), e.lineEnd()), t = v; else if (l && t && c ^ g) { var b; y & n || !(b = d(m, t, !0)) || (s = 0, c ? (e.lineStart(), e.point(b[0][0], b[0][1]), e.point(b[1][0], b[1][1]), e.lineEnd()) : (e.point(b[1][0], b[1][1]), e.lineEnd(), e.lineStart(), e.point(b[0][0], b[0][1]))) } !g || t && Object(a["a"])(t, m) || e.point(m[0], m[1]), t = m, r = g, n = y }, lineEnd: function () { r && e.lineEnd(), t = null }, clean: function () { return s | (i && r) << 1 } } } function d(e, t, i) { var a = Object(r["a"])(e), s = Object(r["a"])(t), c = [1, 0, 0], l = Object(r["c"])(a, s), u = Object(r["d"])(l, l), h = l[0], f = u - h * h; if (!f) return !i && e; var d = n * u / f, p = -n * h / f, v = Object(r["c"])(c, l), m = Object(r["f"])(c, d), g = Object(r["f"])(l, p); Object(r["b"])(m, g); var y = v, b = Object(r["d"])(m, y), x = Object(r["d"])(y, y), w = b * b - x * (Object(r["d"])(m, m) - 1); if (!(w < 0)) { var _ = Object(o["u"])(w), C = Object(r["f"])(y, (-b - _) / x); if (Object(r["b"])(C, m), C = Object(r["g"])(C), !i) return C; var M, O = e[0], k = t[0], S = e[1], T = t[1]; k < O && (M = O, O = k, k = M); var A = k - O, L = Object(o["a"])(A - o["o"]) < o["i"], j = L || A < o["i"]; if (!L && T < S && (M = S, S = T, T = M), j ? L ? S + T > 0 ^ C[1] < (Object(o["a"])(C[0] - O) < o["i"] ? S : T) : S <= C[1] && C[1] <= T : A > o["o"] ^ (O <= C[0] && C[0] <= k)) { var z = Object(r["f"])(y, (-b + _) / x); return Object(r["b"])(z, m), [C, Object(r["g"])(z)] } } } function p(t, n) { var r = c ? e : o["o"] - e, i = 0; return t < -r ? i |= 1 : t > r && (i |= 2), n < -r ? i |= 4 : n > r && (i |= 8), i } return Object(s["a"])(h, f, u, c ? [0, -e] : [-o["o"], e - o["o"]]) } }, function (e, t, n) { "use strict"; var r = n(43), i = n(5), o = n(81), a = 16, s = Object(i["g"])(30 * i["r"]); function c(e) { return Object(o["b"])({ point: function (t, n) { t = e(t, n), this.stream.point(t[0], t[1]) } }) } function l(e, t) { function n(r, o, a, c, l, u, h, f, d, p, v, m, g, y) { var b = h - r, x = f - o, w = b * b + x * x; if (w > 4 * t && g--) { var _ = c + p, C = l + v, M = u + m, O = Object(i["u"])(_ * _ + C * C + M * M), k = Object(i["c"])(M /= O), S = Object(i["a"])(Object(i["a"])(M) - 1) < i["i"] || Object(i["a"])(a - d) < i["i"] ? (a + d) / 2 : Object(i["e"])(C, _), T = e(S, k), A = T[0], L = T[1], j = A - r, z = L - o, E = x * j - b * z; (E * E / w > t || Object(i["a"])((b * j + x * z) / w - .5) > .3 || c * p + l * v + u * m < s) && (n(r, o, a, c, l, u, A, L, S, _ /= O, C /= O, M, g, y), y.point(A, L), n(A, L, S, _, C, M, h, f, d, p, v, m, g, y)) } } return function (t) { var i, o, s, c, l, u, h, f, d, p, v, m, g = { point: y, lineStart: b, lineEnd: w, polygonStart: function () { t.polygonStart(), g.lineStart = _ }, polygonEnd: function () { t.polygonEnd(), g.lineStart = b } }; function y(n, r) { n = e(n, r), t.point(n[0], n[1]) } function b() { f = NaN, g.point = x, t.lineStart() } function x(i, o) { var s = Object(r["a"])([i, o]), c = e(i, o); n(f, d, h, p, v, m, f = c[0], d = c[1], h = i, p = s[0], v = s[1], m = s[2], a, t), t.point(f, d) } function w() { g.point = y, t.lineEnd() } function _() { b(), g.point = C, g.lineEnd = M } function C(e, t) { x(i = e, t), o = f, s = d, c = p, l = v, u = m, g.point = x } function M() { n(f, d, h, p, v, m, o, s, i, c, l, u, a, t), g.lineEnd = w, w() } return g } } t["a"] = function (e, t) { return +t ? l(e, t) : c(e) } }, function (e, t, n) { "use strict"; var r = n(5), i = n(152), o = n(79), a = n(154); function s(e) { var t = e.length; return { point: function (n, r) { var i = -1; while (++i < t) e[i].point(n, r) }, sphere: function () { var n = -1; while (++n < t) e[n].sphere() }, lineStart: function () { var n = -1; while (++n < t) e[n].lineStart() }, lineEnd: function () { var n = -1; while (++n < t) e[n].lineEnd() }, polygonStart: function () { var n = -1; while (++n < t) e[n].polygonStart() }, polygonEnd: function () { var n = -1; while (++n < t) e[n].polygonEnd() } } } t["a"] = function () { var e, t, n, c, l, u, h = Object(i["a"])(), f = Object(o["b"])().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), d = Object(o["b"])().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), p = { point: function (e, t) { u = [e, t] } }; function v(e) { var t = e[0], r = e[1]; return u = null, n.point(t, r), u || (c.point(t, r), u) || (l.point(t, r), u) } return v.invert = function (e) { var t = h.scale(), n = h.translate(), r = (e[0] - n[0]) / t, i = (e[1] - n[1]) / t; return (i >= .12 && i < .234 && r >= -.425 && r < -.214 ? f : i >= .166 && i < .234 && r >= -.214 && r < -.115 ? d : h).invert(e) }, v.stream = function (n) { return e && t === n ? e : e = s([h.stream(t = n), f.stream(n), d.stream(n)]) }, v.precision = function (e) { return arguments.length ? (h.precision(e), f.precision(e), d.precision(e), v) : h.precision() }, v.scale = function (e) { return arguments.length ? (h.scale(e), f.scale(.35 * e), d.scale(e), v.translate(h.translate())) : h.scale() }, v.translate = function (e) { if (!arguments.length) return h.translate(); var t = h.scale(), i = +e[0], o = +e[1]; return n = h.translate(e).clipExtent([[i - .455 * t, o - .238 * t], [i + .455 * t, o + .238 * t]]).stream(p), c = f.translate([i - .307 * t, o + .201 * t]).clipExtent([[i - .425 * t + r["i"], o + .12 * t + r["i"]], [i - .214 * t - r["i"], o + .234 * t - r["i"]]]).stream(p), l = d.translate([i - .205 * t, o + .212 * t]).clipExtent([[i - .214 * t + r["i"], o + .166 * t + r["i"]], [i - .115 * t - r["i"], o + .234 * t - r["i"]]]).stream(p), v }, v.fitExtent = Object(a["a"])(v), v.fitSize = Object(a["b"])(v), v.scale(1070) } }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return a })); var r = n(5), i = n(44), o = n(18), a = Object(i["b"])((function (e) { return Object(r["u"])(2 / (1 + e)) })); a.invert = Object(i["a"])((function (e) { return 2 * Object(r["c"])(e / 2) })), t["b"] = function () { return Object(o["a"])(a).scale(124.75).clipAngle(179.999) } }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return a })); var r = n(5), i = n(44), o = n(18), a = Object(i["b"])((function (e) { return (e = Object(r["b"])(e)) && e / Object(r["t"])(e) })); a.invert = Object(i["a"])((function (e) { return e })), t["b"] = function () { return Object(o["a"])(a).scale(79.4188).clipAngle(179.999) } }, function (e, t, n) { "use strict"; t["a"] = s; var r = n(5), i = n(80), o = n(82); function a(e) { return Object(r["v"])((r["l"] + e) / 2) } function s(e, t) { var n = Object(r["g"])(e), i = e === t ? Object(r["t"])(e) : Object(r["n"])(n / Object(r["g"])(t)) / Object(r["n"])(a(t) / a(e)), s = n * Object(r["p"])(a(e), i) / i; if (!i) return o["c"]; function c(e, t) { s > 0 ? t < -r["l"] + r["i"] && (t = -r["l"] + r["i"]) : t > r["l"] - r["i"] && (t = r["l"] - r["i"]); var n = s / Object(r["p"])(a(t), i); return [n * Object(r["t"])(i * e), s - n * Object(r["g"])(i * e)] } return c.invert = function (e, t) { var n = s - t, o = Object(r["s"])(i) * Object(r["u"])(e * e + n * n); return [Object(r["e"])(e, n) / i, 2 * Object(r["d"])(Object(r["p"])(s / o, 1 / i)) - r["l"]] }, c } t["b"] = function () { return Object(i["a"])(s).scale(109.5).parallels([30, 30]) } }, function (e, t, n) { "use strict"; t["a"] = a; var r = n(5), i = n(80), o = n(155); function a(e, t) { var n = Object(r["g"])(e), i = e === t ? Object(r["t"])(e) : (n - Object(r["g"])(t)) / (t - e), a = n / i + e; if (Object(r["a"])(i) < r["i"]) return o["b"]; function s(e, t) { var n = a - t, o = i * e; return [n * Object(r["t"])(o), a - n * Object(r["g"])(o)] } return s.invert = function (e, t) { var n = a - t; return [Object(r["e"])(e, n) / i, a - Object(r["s"])(i) * Object(r["u"])(e * e + n * n)] }, s } t["b"] = function () { return Object(i["a"])(a).scale(131.154).center([0, 13.9389]) } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(5), i = n(44), o = n(18); function a(e, t) { var n = Object(r["g"])(t), i = Object(r["g"])(e) * n; return [n * Object(r["t"])(e) / i, Object(r["t"])(t) / i] } a.invert = Object(i["a"])(r["d"]), t["a"] = function () { return Object(o["a"])(a).scale(144.049).clipAngle(60) } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(5), i = n(44), o = n(18); function a(e, t) { return [Object(r["g"])(t) * Object(r["t"])(e), Object(r["t"])(t)] } a.invert = Object(i["a"])(r["c"]), t["a"] = function () { return Object(o["a"])(a).scale(249.5).clipAngle(90 + r["i"]) } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(5), i = n(44), o = n(18); function a(e, t) { var n = Object(r["g"])(t), i = 1 + Object(r["g"])(e) * n; return [n * Object(r["t"])(e) / i, Object(r["t"])(t) / i] } a.invert = Object(i["a"])((function (e) { return 2 * Object(r["d"])(e) })), t["a"] = function () { return Object(o["a"])(a).scale(250).clipAngle(142) } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(5), i = n(82); function o(e, t) { return [Object(r["n"])(Object(r["v"])((r["l"] + t) / 2)), -e] } o.invert = function (e, t) { return [-t, 2 * Object(r["d"])(Object(r["k"])(e)) - r["l"]] }, t["a"] = function () { var e = Object(i["b"])(o), t = e.center, n = e.rotate; return e.center = function (e) { return arguments.length ? t([-e[1], e[0]]) : (e = t(), [e[1], -e[0]]) }, e.rotate = function (e) { return arguments.length ? n([e[0], e[1], e.length > 2 ? e[2] + 90 : 90]) : (e = n(), [e[0], e[1], e[2] - 90]) }, n([0, 0, 90]).scale(159.155) } }, function (e, t, n) { "use strict"; var r = Math.PI, i = 2 * r, o = 1e-6, a = i - o; function s() { this._x0 = this._y0 = this._x1 = this._y1 = null, this._ = "" } function c() { return new s } s.prototype = c.prototype = { constructor: s, moveTo: function (e, t) { this._ += "M" + (this._x0 = this._x1 = +e) + "," + (this._y0 = this._y1 = +t) }, closePath: function () { null !== this._x1 && (this._x1 = this._x0, this._y1 = this._y0, this._ += "Z") }, lineTo: function (e, t) { this._ += "L" + (this._x1 = +e) + "," + (this._y1 = +t) }, quadraticCurveTo: function (e, t, n, r) { this._ += "Q" + +e + "," + +t + "," + (this._x1 = +n) + "," + (this._y1 = +r) }, bezierCurveTo: function (e, t, n, r, i, o) { this._ += "C" + +e + "," + +t + "," + +n + "," + +r + "," + (this._x1 = +i) + "," + (this._y1 = +o) }, arcTo: function (e, t, n, i, a) { e = +e, t = +t, n = +n, i = +i, a = +a; var s = this._x1, c = this._y1, l = n - e, u = i - t, h = s - e, f = c - t, d = h * h + f * f; if (a < 0) throw new Error("negative radius: " + a); if (null === this._x1) this._ += "M" + (this._x1 = e) + "," + (this._y1 = t); else if (d > o) if (Math.abs(f * l - u * h) > o && a) { var p = n - s, v = i - c, m = l * l + u * u, g = p * p + v * v, y = Math.sqrt(m), b = Math.sqrt(d), x = a * Math.tan((r - Math.acos((m + d - g) / (2 * y * b))) / 2), w = x / b, _ = x / y; Math.abs(w - 1) > o && (this._ += "L" + (e + w * h) + "," + (t + w * f)), this._ += "A" + a + "," + a + ",0,0," + +(f * p > h * v) + "," + (this._x1 = e + _ * l) + "," + (this._y1 = t + _ * u) } else this._ += "L" + (this._x1 = e) + "," + (this._y1 = t); else; }, arc: function (e, t, n, s, c, l) { e = +e, t = +t, n = +n; var u = n * Math.cos(s), h = n * Math.sin(s), f = e + u, d = t + h, p = 1 ^ l, v = l ? s - c : c - s; if (n < 0) throw new Error("negative radius: " + n); null === this._x1 ? this._ += "M" + f + "," + d : (Math.abs(this._x1 - f) > o || Math.abs(this._y1 - d) > o) && (this._ += "L" + f + "," + d), n && (v < 0 && (v = v % i + i), v > a ? this._ += "A" + n + "," + n + ",0,1," + p + "," + (e - u) + "," + (t - h) + "A" + n + "," + n + ",0,1," + p + "," + (this._x1 = f) + "," + (this._y1 = d) : v > o && (this._ += "A" + n + "," + n + ",0," + +(v >= r) + "," + p + "," + (this._x1 = e + n * Math.cos(c)) + "," + (this._y1 = t + n * Math.sin(c)))) }, rect: function (e, t, n, r) { this._ += "M" + (this._x0 = this._x1 = +e) + "," + (this._y0 = this._y1 = +t) + "h" + +n + "v" + +r + "h" + -n + "Z" }, toString: function () { return this._ } }, t["a"] = c }, function (e, t, n) { var r = n(3), i = n(39); r(i.prototype, { getAllNodes: function () { var e = this, t = [], n = e.root; return n.each ? n.each((function (e) { t.push(e) })) : n.eachNode && n.eachNode((function (e) { t.push(e) })), t }, getAllLinks: function () { var e, t = [], n = [this.root]; while (e = n.pop()) { var r = e.children; r && r.forEach((function (r) { t.push({ source: e, target: r }), n.push(r) })) } return t } }), r(i.prototype, { getAllEdges: i.prototype.getAllLinks }) }, function (e, t, n) { var r = n(3), i = n(83), o = n(15), a = n(39); r(a.prototype, { partition: function (e, t) { return void 0 === e && (e = []), void 0 === t && (t = []), o(this.rows, e, t) }, group: function (e, t) { var n = this.partition(e, t); return i(n) }, groups: function (e, t) { return this.group(e, t) } }) }, function (e, t, n) { var r = n(9), i = n(6), o = Object.prototype.hasOwnProperty, a = function (e, t) { if (!t || !i(e)) return e; var n = {}, a = null; return r(e, (function (e) { a = t(e), o.call(n, a) ? n[a].push(e) : n[a] = [e] })), n }; e.exports = a }, function (e, t, n) { var r = n(6), i = n(11), o = n(10); e.exports = function (e, t) { var n; return void 0 === t && (t = []), i(t) ? n = t : r(t) ? n = function (e, n) { for (var r = 0; r < t.length; r++) { var i = t[r]; if (e[i] < n[i]) return -1; if (e[i] > n[i]) return 1 } return 0 } : o(t) && (n = function (e, n) { return e[t] < n[t] ? -1 : e[t] > n[t] ? 1 : 0 }), e.sort(n) } }, function (e, t, n) { var r = n(3), i = n(156), o = n(6), a = n(19), s = n(39), c = n(157), l = n(84), u = l.STATISTICS_METHODS; function h(e, t) { var n = e.getColumn(t); return o(n) && o(n[0]) && (n = i(n)), n } u.forEach((function (e) { s.prototype[e] = function (t) { return a[e](h(this, t)) } })); var f = a.quantile; r(s.prototype, { average: s.prototype.mean, quantile: function (e, t) { return f(h(this, e), t) }, quantiles: function (e, t) { var n = h(this, e); return t.map((function (e) { return f(n, e) })) }, quantilesByFraction: function (e, t) { return this.quantiles(e, c(t)) }, range: function (e) { var t = this; return [t.min(e), t.max(e)] }, extent: function (e) { return this.range(e) } }) }, function (e, t, n) { var r = n(10), i = n(40), o = n(2), a = o.registerConnector; a("default", (function (e, t) { if (r(e) && (e = t.getView(e)), !e) throw new TypeError("Invalid dataView"); return i(e.rows) })) }, function (e, t) { var n = function () { var e = {}; return function (t) { return t = t || "g", e[t] ? e[t] += 1 : e[t] = 1, t + e[t] } }(); e.exports = n }, function (e, t, n) { var r = n(10), i = n(358), o = i.dsvFormat, a = i.csvParse, s = i.tsvParse, c = n(2), l = c.registerConnector; l("dsv", (function (e, t) { void 0 === t && (t = {}); var n = t.delimiter || ","; if (!r(n)) throw new TypeError("Invalid delimiter: must be a string!"); return o(n).parse(e) })), l("csv", (function (e) { return a(e) })), l("tsv", (function (e) { return s(e) })) }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(85); n.d(t, "dsvFormat", (function () { return r["a"] })); var i = n(359); n.d(t, "csvParse", (function () { return i["c"] })), n.d(t, "csvParseRows", (function () { return i["d"] })), n.d(t, "csvFormat", (function () { return i["a"] })), n.d(t, "csvFormatRows", (function () { return i["b"] })); var o = n(360); n.d(t, "tsvParse", (function () { return o["c"] })), n.d(t, "tsvParseRows", (function () { return o["d"] })), n.d(t, "tsvFormat", (function () { return o["a"] })), n.d(t, "tsvFormatRows", (function () { return o["b"] })) }, function (e, t, n) { "use strict"; n.d(t, "c", (function () { return o })), n.d(t, "d", (function () { return a })), n.d(t, "a", (function () { return s })), n.d(t, "b", (function () { return c })); var r = n(85), i = Object(r["a"])(","), o = i.parse, a = i.parseRows, s = i.format, c = i.formatRows }, function (e, t, n) { "use strict"; n.d(t, "c", (function () { return o })), n.d(t, "d", (function () { return a })), n.d(t, "a", (function () { return s })), n.d(t, "b", (function () { return c })); var r = n(85), i = Object(r["a"])("\t"), o = i.parse, a = i.parseRows, s = i.format, c = i.formatRows }, function (e, t, n) { var r = n(0), i = r.geoGraticule, o = n(2), a = o.registerConnector; function s(e, t) { t.dataType = "geo-graticule"; var n = i().lines(); return n.map((function (e, t) { return e.index = "" + t, e })), t.rows = n, n } a("geo-graticule", s), e.exports = s }, function (e, t) { e.exports = i; var n = { a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0 }, r = /([astvzqmhlc])([^astvzqmhlc]*)/gi; function i(e) { var t = []; return e.replace(r, (function (e, r, i) { var o = r.toLowerCase(); i = a(i), "m" == o && i.length > 2 && (t.push([r].concat(i.splice(0, 2))), o = "l", r = "m" == r ? "l" : "L"); while (1) { if (i.length == n[o]) return i.unshift(r), t.push(i); if (i.length < n[o]) throw new Error("malformed path data"); t.push([r].concat(i.splice(0, n[o]))) } })), t } var o = /-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi; function a(e) { var t = e.match(o); return t ? t.map(Number) : [] } }, function (e, t) { e.exports = Array.isArray || function (e) { return "[object Array]" == Object.prototype.toString.call(e) } }, function (e, t) { function n(e) { var t = 0, n = 0, r = 0, i = 0; return e.map((function (e) { e = e.slice(); var o = e[0], a = o.toUpperCase(); if (o != a) switch (e[0] = a, o) { case "a": e[6] += r, e[7] += i; break; case "v": e[1] += i; break; case "h": e[1] += r; break; default: for (var s = 1; s < e.length;)e[s++] += r, e[s++] += i }switch (a) { case "Z": r = t, i = n; break; case "H": r = e[1]; break; case "V": i = e[1]; break; case "M": r = t = e[1], i = n = e[2]; break; default: r = e[e.length - 2], i = e[e.length - 1] }return e })) } e.exports = n }, function (e, t, n) { var r = n(3), i = n(11), o = n(2), a = o.GRAPH, s = o.registerConnector, c = { nodes: function (e) { return e.nodes }, edges: function (e) { return e.edges } }; function l(e, t, n) { t = r({}, c, t), n.dataType = a; var o = t, s = o.nodes, l = o.edges; if (s && !i(s)) throw new TypeError("Invalid nodes: must be a function!"); if (l && !i(l)) throw new TypeError("Invalid edges: must be a function!"); return n.rows = n.graph = { nodes: s(e), edges: l(e) }, r(n, n.graph), n.rows } s("graph", l), s("diagram", l) }, function (e, t, n) { var r = n(3), i = n(40), o = n(367), a = o.getGridForHexJSON, s = o.renderHexJSON, c = n(2), l = c.HEX, u = c.registerConnector, h = { width: 1, height: 1 }; function f(e) { return e.cx = e.x, e.cy = e.y, e.x = [], e.y = [], e.vertices.forEach((function (t) { e.x.push(t.x + e.cx), e.y.push(t.y + e.cy) })), e } function d(e, t, n) { n.dataType = l, t = r({}, h, t); var o = t, c = o.width, u = o.height, d = i(e); n._HexJSON = d; var p = n._GridHexJSON = a(d), v = n.rows = s(d, c, u).map(f); return n._gridRows = s(p, c, u).map(f), v } u("hex", d), u("hexjson", d), u("hex-json", d), u("HexJSON", d), e.exports = d }, function (e, t, n) { (function (e, r) { r(t, n(14)) })(0, (function (e, t) { "use strict"; function n(e, n, s) { var c = e.layout, l = [], u = 0; Object.keys(e.hexes).forEach((function (t) { e.hexes[t].key = t, l.push(e.hexes[t]) })); var h = t.max(l, (function (e) { return +e.q })), f = t.min(l, (function (e) { return +e.q })), d = t.max(l, (function (e) { return +e.r })), p = t.min(l, (function (e) { return +e.r })), v = h - f + 1, m = d - p + 1; u = "odd-r" === c || "even-r" === c ? t.min([n / ((v + .5) * Math.sqrt(3)), s / (1.5 * (m + 1 / 3))]) : t.min([s / ((m + .5) * Math.sqrt(3)), n / (1.5 * (v + 1 / 3))]); var g = u * Math.sqrt(3), y = o(c, g, u), b = a(y); return l.forEach((function (e) { e.qc = e.q - f, e.rc = d - e.r, e.x = r(e, c, g, u), e.y = i(e, c, g, u), e.vertices = y, e.points = b })), l } function r(e, t, n, r) { var i = 0, o = 0; switch (t) { case "odd-r": o = e.rc % 2 === 1 ? n : n / 2, i = e.qc * n + o; break; case "even-r": o = e.rc % 2 === 0 ? n : n / 2, i = e.qc * n + o; break; case "odd-q": case "even-q": i = e.qc * r * 1.5 + r; break }return i } function i(e, t, n, r) { var i = 0, o = 0; switch (t) { case "odd-r": case "even-r": i = e.rc * r * 1.5 + r; break; case "odd-q": o = e.qc % 2 === 1 ? n : n / 2, i = e.rc * n + o; break; case "even-q": o = e.qc % 2 === 0 ? n : n / 2, i = e.rc * n + o; break }return i } function o(e, t, n) { var r = []; switch (e) { case "odd-r": case "even-r": r.push({ x: 0, y: 0 - n }), r.push({ x: 0 + .5 * t, y: 0 - .5 * n }), r.push({ x: 0 + .5 * t, y: 0 + .5 * n }), r.push({ x: 0, y: 0 + n }), r.push({ x: 0 - .5 * t, y: 0 + .5 * n }), r.push({ x: 0 - .5 * t, y: 0 - .5 * n }); break; case "odd-q": case "even-q": r.push({ x: 0 - n, y: 0 }), r.push({ x: 0 - .5 * n, y: 0 - .5 * t }), r.push({ x: 0 + .5 * n, y: 0 - .5 * t }), r.push({ x: 0 + n, y: 0 }), r.push({ x: 0 + .5 * n, y: 0 + .5 * t }), r.push({ x: 0 - .5 * n, y: 0 + .5 * t }); break }return r } function a(e) { var t = ""; return e.forEach((function (e) { t += e.x + "," + e.y + " " })), t.substring(0, t.length - 1) } function s(e) { var n = {}; n.layout = e.layout, n.hexes = {}; var r = []; Object.keys(e.hexes).forEach((function (t) { r.push(e.hexes[t]) })); var i, o, a, s = t.max(r, (function (e) { return +e.q })), c = t.min(r, (function (e) { return +e.q })), l = t.max(r, (function (e) { return +e.r })), u = t.min(r, (function (e) { return +e.r })); for (i = c; i <= s; i++)for (o = u; o <= l; o++)a = "Q" + i + "R" + o, n.hexes[a] = { q: i, r: o }; return n } e.renderHexJSON = n, e.getGridForHexJSON = s, Object.defineProperty(e, "__esModule", { value: !0 }) })) }, function (e, t, n) { var r = n(11), i = n(34), o = i.hierarchy, a = n(2), s = a.HIERARCHY, c = a.registerConnector; function l(e, t, n) { n.dataType = s; var i = t && t.children ? t.children : null; if (i && !r(i)) throw new TypeError("Invalid children: must be a function!"); return t.pureData ? n.rows = n.root = e : n.rows = n.root = o(e, i), e } c("hierarchy", l), c("tree", l) }, function (e, t, n) { "use strict"; function r(e, t) { return e.parent === t.parent ? 1 : 2 } function i(e) { return e.reduce(o, 0) / e.length } function o(e, t) { return e + t.x } function a(e) { return 1 + e.reduce(s, 0) } function s(e, t) { return Math.max(e, t.y) } function c(e) { var t; while (t = e.children) e = t[0]; return e } function l(e) { var t; while (t = e.children) e = t[t.length - 1]; return e } t["a"] = function () { var e = r, t = 1, n = 1, o = !1; function s(r) { var s, u = 0; r.eachAfter((function (t) { var n = t.children; n ? (t.x = i(n), t.y = a(n)) : (t.x = s ? u += e(t, s) : 0, t.y = 0, s = t) })); var h = c(r), f = l(r), d = h.x - e(h, f) / 2, p = f.x + e(f, h) / 2; return r.eachAfter(o ? function (e) { e.x = (e.x - r.x) * t, e.y = (r.y - e.y) * n } : function (e) { e.x = (e.x - d) / (p - d) * t, e.y = (1 - (r.y ? e.y / r.y : 1)) * n }) } return s.separation = function (t) { return arguments.length ? (e = t, s) : e }, s.size = function (e) { return arguments.length ? (o = !1, t = +e[0], n = +e[1], s) : o ? null : [t, n] }, s.nodeSize = function (e) { return arguments.length ? (o = !0, t = +e[0], n = +e[1], s) : o ? [t, n] : null }, s } }, function (e, t, n) { "use strict"; function r(e) { var t = 0, n = e.children, r = n && n.length; if (r) while (--r >= 0) t += n[r].value; else t = 1; e.value = t } t["a"] = function () { return this.eachAfter(r) } }, function (e, t, n) { "use strict"; t["a"] = function (e) { var t, n, r, i, o = this, a = [o]; do { t = a.reverse(), a = []; while (o = t.pop()) if (e(o), n = o.children, n) for (r = 0, i = n.length; r < i; ++r)a.push(n[r]) } while (a.length); return this } }, function (e, t, n) { "use strict"; t["a"] = function (e) { var t, n, r = this, i = [r]; while (r = i.pop()) if (e(r), t = r.children, t) for (n = t.length - 1; n >= 0; --n)i.push(t[n]); return this } }, function (e, t, n) { "use strict"; t["a"] = function (e) { var t, n, r, i = this, o = [i], a = []; while (i = o.pop()) if (a.push(i), t = i.children, t) for (n = 0, r = t.length; n < r; ++n)o.push(t[n]); while (i = a.pop()) e(i); return this } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return this.eachAfter((function (t) { var n = +e(t.data) || 0, r = t.children, i = r && r.length; while (--i >= 0) n += r[i].value; t.value = n })) } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return this.eachBefore((function (t) { t.children && t.children.sort(e) })) } }, function (e, t, n) { "use strict"; function r(e, t) { if (e === t) return e; var n = e.ancestors(), r = t.ancestors(), i = null; e = n.pop(), t = r.pop(); while (e === t) i = e, e = n.pop(), t = r.pop(); return i } t["a"] = function (e) { var t = this, n = r(t, e), i = [t]; while (t !== n) t = t.parent, i.push(t); var o = i.length; while (e !== n) i.splice(o, 0, e), e = e.parent; return i } }, function (e, t, n) { "use strict"; t["a"] = function () { var e = this, t = [e]; while (e = e.parent) t.push(e); return t } }, function (e, t, n) { "use strict"; t["a"] = function () { var e = []; return this.each((function (t) { e.push(t) })), e } }, function (e, t, n) { "use strict"; t["a"] = function () { var e = []; return this.eachBefore((function (t) { t.children || e.push(t) })), e } }, function (e, t, n) { "use strict"; t["a"] = function () { var e = this, t = []; return e.each((function (n) { n !== e && t.push({ source: n.parent, target: n }) })), t } }, function (e, t, n) { "use strict"; var r = n(160), i = n(87), o = n(162); function a(e) { return Math.sqrt(e.value) } function s(e) { return function (t) { t.children || (t.r = Math.max(0, +e(t) || 0)) } } function c(e, t) { return function (n) { if (i = n.children) { var i, o, a, s = i.length, c = e(n) * t || 0; if (c) for (o = 0; o < s; ++o)i[o].r += c; if (a = Object(r["b"])(i), c) for (o = 0; o < s; ++o)i[o].r -= c; n.r = a + c } } } function l(e) { return function (t) { var n = t.parent; t.r *= e, n && (t.x = n.x + e * t.x, t.y = n.y + e * t.y) } } t["a"] = function () { var e = null, t = 1, n = 1, r = o["a"]; function u(i) { return i.x = t / 2, i.y = n / 2, e ? i.eachBefore(s(e)).eachAfter(c(r, .5)).eachBefore(l(1)) : i.eachBefore(s(a)).eachAfter(c(o["a"], 1)).eachAfter(c(r, i.r / Math.min(t, n))).eachBefore(l(Math.min(t, n) / (2 * i.r))), i } return u.radius = function (t) { return arguments.length ? (e = Object(i["a"])(t), u) : e }, u.size = function (e) { return arguments.length ? (t = +e[0], n = +e[1], u) : [t, n] }, u.padding = function (e) { return arguments.length ? (r = "function" === typeof e ? e : Object(o["b"])(+e), u) : r }, u } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return r })), t["a"] = i; var r = Array.prototype.slice; function i(e) { var t, n, r = e.length; while (r) n = Math.random() * r-- | 0, t = e[r], e[r] = e[n], e[n] = t; return e } }, function (e, t, n) { "use strict"; var r = n(163), i = n(45); t["a"] = function () { var e = 1, t = 1, n = 0, o = !1; function a(i) { var a = i.height + 1; return i.x0 = i.y0 = n, i.x1 = e, i.y1 = t / a, i.eachBefore(s(t, a)), o && i.eachBefore(r["a"]), i } function s(e, t) { return function (r) { r.children && Object(i["a"])(r, r.x0, e * (r.depth + 1) / t, r.x1, e * (r.depth + 2) / t); var o = r.x0, a = r.y0, s = r.x1 - n, c = r.y1 - n; s < o && (o = s = (o + s) / 2), c < a && (a = c = (a + c) / 2), r.x0 = o, r.y0 = a, r.x1 = s, r.y1 = c } } return a.round = function (e) { return arguments.length ? (o = !!e, a) : o }, a.size = function (n) { return arguments.length ? (e = +n[0], t = +n[1], a) : [e, t] }, a.padding = function (e) { return arguments.length ? (n = +e, a) : n }, a } }, function (e, t, n) { "use strict"; var r = n(87), i = n(86), o = "$", a = { depth: -1 }, s = {}; function c(e) { return e.id } function l(e) { return e.parentId } t["a"] = function () { var e = c, t = l; function n(n) { var r, c, l, u, h, f, d, p = n.length, v = new Array(p), m = {}; for (c = 0; c < p; ++c)r = n[c], h = v[c] = new i["a"](r), null != (f = e(r, c, n)) && (f += "") && (d = o + (h.id = f), m[d] = d in m ? s : h); for (c = 0; c < p; ++c)if (h = v[c], f = t(n[c], c, n), null != f && (f += "")) { if (u = m[o + f], !u) throw new Error("missing: " + f); if (u === s) throw new Error("ambiguous: " + f); u.children ? u.children.push(h) : u.children = [h], h.parent = u } else { if (l) throw new Error("multiple roots"); l = h } if (!l) throw new Error("no root"); if (l.parent = a, l.eachBefore((function (e) { e.depth = e.parent.depth + 1, --p })).eachBefore(i["b"]), l.parent = null, p > 0) throw new Error("cycle"); return l } return n.id = function (t) { return arguments.length ? (e = Object(r["b"])(t), n) : e }, n.parentId = function (e) { return arguments.length ? (t = Object(r["b"])(e), n) : t }, n } }, function (e, t, n) { "use strict"; var r = n(86); function i(e, t) { return e.parent === t.parent ? 1 : 2 } function o(e) { var t = e.children; return t ? t[0] : e.t } function a(e) { var t = e.children; return t ? t[t.length - 1] : e.t } function s(e, t, n) { var r = n / (t.i - e.i); t.c -= r, t.s += n, e.c += r, t.z += n, t.m += n } function c(e) { var t, n = 0, r = 0, i = e.children, o = i.length; while (--o >= 0) t = i[o], t.z += n, t.m += n, n += t.s + (r += t.c) } function l(e, t, n) { return e.a.parent === t.parent ? e.a : n } function u(e, t) { this._ = e, this.parent = null, this.children = null, this.A = null, this.a = this, this.z = 0, this.m = 0, this.c = 0, this.s = 0, this.t = null, this.i = t } function h(e) { var t, n, r, i, o, a = new u(e, 0), s = [a]; while (t = s.pop()) if (r = t._.children) for (t.children = new Array(o = r.length), i = o - 1; i >= 0; --i)s.push(n = t.children[i] = new u(r[i], i)), n.parent = t; return (a.parent = new u(null, 0)).children = [a], a } u.prototype = Object.create(r["a"].prototype), t["a"] = function () { var e = i, t = 1, n = 1, r = null; function u(i) { var o = h(i); if (o.eachAfter(f), o.parent.m = -o.z, o.eachBefore(d), r) i.eachBefore(v); else { var a = i, s = i, c = i; i.eachBefore((function (e) { e.x < a.x && (a = e), e.x > s.x && (s = e), e.depth > c.depth && (c = e) })); var l = a === s ? 1 : e(a, s) / 2, u = l - a.x, p = t / (s.x + l + u), m = n / (c.depth || 1); i.eachBefore((function (e) { e.x = (e.x + u) * p, e.y = e.depth * m })) } return i } function f(t) { var n = t.children, r = t.parent.children, i = t.i ? r[t.i - 1] : null; if (n) { c(t); var o = (n[0].z + n[n.length - 1].z) / 2; i ? (t.z = i.z + e(t._, i._), t.m = t.z - o) : t.z = o } else i && (t.z = i.z + e(t._, i._)); t.parent.A = p(t, i, t.parent.A || r[0]) } function d(e) { e._.x = e.z + e.parent.m, e.m += e.parent.m } function p(t, n, r) { if (n) { var i, c = t, u = t, h = n, f = c.parent.children[0], d = c.m, p = u.m, v = h.m, m = f.m; while (h = a(h), c = o(c), h && c) f = o(f), u = a(u), u.a = t, i = h.z + v - c.z - d + e(h._, c._), i > 0 && (s(l(h, t, r), t, i), d += i, p += i), v += h.m, d += c.m, m += f.m, p += u.m; h && !a(u) && (u.t = h, u.m += v - p), c && !o(f) && (f.t = c, f.m += d - m, r = t) } return r } function v(e) { e.x *= t, e.y = e.depth * n } return u.separation = function (t) { return arguments.length ? (e = t, u) : e }, u.size = function (e) { return arguments.length ? (r = !1, t = +e[0], n = +e[1], u) : r ? null : [t, n] }, u.nodeSize = function (e) { return arguments.length ? (r = !0, t = +e[0], n = +e[1], u) : r ? [t, n] : null }, u } }, function (e, t, n) { "use strict"; var r = n(163), i = n(88), o = n(87), a = n(162); t["a"] = function () { var e = i["a"], t = !1, n = 1, s = 1, c = [0], l = a["a"], u = a["a"], h = a["a"], f = a["a"], d = a["a"]; function p(e) { return e.x0 = e.y0 = 0, e.x1 = n, e.y1 = s, e.eachBefore(v), c = [0], t && e.eachBefore(r["a"]), e } function v(t) { var n = c[t.depth], r = t.x0 + n, i = t.y0 + n, o = t.x1 - n, a = t.y1 - n; o < r && (r = o = (r + o) / 2), a < i && (i = a = (i + a) / 2), t.x0 = r, t.y0 = i, t.x1 = o, t.y1 = a, t.children && (n = c[t.depth + 1] = l(t) / 2, r += d(t) - n, i += u(t) - n, o -= h(t) - n, a -= f(t) - n, o < r && (r = o = (r + o) / 2), a < i && (i = a = (i + a) / 2), e(t, r, i, o, a)) } return p.round = function (e) { return arguments.length ? (t = !!e, p) : t }, p.size = function (e) { return arguments.length ? (n = +e[0], s = +e[1], p) : [n, s] }, p.tile = function (t) { return arguments.length ? (e = Object(o["b"])(t), p) : e }, p.padding = function (e) { return arguments.length ? p.paddingInner(e).paddingOuter(e) : p.paddingInner() }, p.paddingInner = function (e) { return arguments.length ? (l = "function" === typeof e ? e : Object(a["b"])(+e), p) : l }, p.paddingOuter = function (e) { return arguments.length ? p.paddingTop(e).paddingRight(e).paddingBottom(e).paddingLeft(e) : p.paddingTop() }, p.paddingTop = function (e) { return arguments.length ? (u = "function" === typeof e ? e : Object(a["b"])(+e), p) : u }, p.paddingRight = function (e) { return arguments.length ? (h = "function" === typeof e ? e : Object(a["b"])(+e), p) : h }, p.paddingBottom = function (e) { return arguments.length ? (f = "function" === typeof e ? e : Object(a["b"])(+e), p) : f }, p.paddingLeft = function (e) { return arguments.length ? (d = "function" === typeof e ? e : Object(a["b"])(+e), p) : d }, p } }, function (e, t, n) { "use strict"; t["a"] = function (e, t, n, r, i) { var o, a, s = e.children, c = s.length, l = new Array(c + 1); for (l[0] = a = o = 0; o < c; ++o)l[o + 1] = a += s[o].value; function u(e, t, n, r, i, o, a) { if (e >= t - 1) { var c = s[e]; return c.x0 = r, c.y0 = i, c.x1 = o, void (c.y1 = a) } var h = l[e], f = n / 2 + h, d = e + 1, p = t - 1; while (d < p) { var v = d + p >>> 1; l[v] < f ? d = v + 1 : p = v } f - l[d - 1] < l[d] - f && e + 1 < d && --d; var m = l[d] - h, g = n - m; if (o - r > a - i) { var y = (r * g + o * m) / n; u(e, d, m, r, i, y, a), u(d, t, g, y, i, o, a) } else { var b = (i * g + a * m) / n; u(e, d, m, r, i, o, b), u(d, t, g, r, b, o, a) } } u(0, c, e.value, t, n, r, i) } }, function (e, t, n) { "use strict"; var r = n(45), i = n(55); t["a"] = function (e, t, n, o, a) { (1 & e.depth ? i["a"] : r["a"])(e, t, n, o, a) } }, function (e, t, n) { "use strict"; var r = n(45), i = n(55), o = n(88); t["a"] = function e(t) { function n(e, n, a, s, c) { if ((l = e._squarify) && l.ratio === t) { var l, u, h, f, d, p = -1, v = l.length, m = e.value; while (++p < v) { for (u = l[p], h = u.children, f = u.value = 0, d = h.length; f < d; ++f)u.value += h[f].value; u.dice ? Object(r["a"])(u, n, a, s, a += (c - a) * u.value / m) : Object(i["a"])(u, n, a, n += (s - n) * u.value / m, c), m -= u.value } } else e._squarify = l = Object(o["c"])(t, e, n, a, s, c), l.ratio = t } return n.ratio = function (t) { return e((t = +t) > 1 ? t : 1) }, n }(o["b"]) }, function (e, t, n) { var r = n(10), i = n(391), o = i.feature, a = n(158), s = n(2), c = s.registerConnector; function l(e, t, n) { var i = t.object; if (!r(i)) throw new TypeError("Invalid object: must be a string!"); var s = o(e, e.objects[i]); return a(s, t, n) } c("topojson", l), c("TopoJSON", l) }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(164); n.d(t, "bbox", (function () { return r["a"] })); var i = n(90); n.d(t, "feature", (function () { return i["a"] })); var o = n(393); n.d(t, "mesh", (function () { return o["a"] })), n.d(t, "meshArcs", (function () { return o["b"] })); var a = n(394); n.d(t, "merge", (function () { return a["a"] })), n.d(t, "mergeArcs", (function () { return a["b"] })); var s = n(395); n.d(t, "neighbors", (function () { return s["a"] })); var c = n(397); n.d(t, "quantize", (function () { return c["a"] })); var l = n(89); n.d(t, "transform", (function () { return l["a"] })); var u = n(167); n.d(t, "untransform", (function () { return u["a"] })) }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { var n, r = e.length, i = r - t; while (i < --r) n = e[i], e[i++] = e[r], e[r] = n } }, function (e, t, n) { "use strict"; t["b"] = o; var r = n(90), i = n(166); function o(e, t, n) { var r, o, s; if (arguments.length > 1) r = a(e, t, n); else for (o = 0, r = new Array(s = e.arcs.length); o < s; ++o)r[o] = o; return { type: "MultiLineString", arcs: Object(i["a"])(e, r) } } function a(e, t, n) { var r, i = [], o = []; function a(e) { var t = e < 0 ? ~e : e; (o[t] || (o[t] = [])).push({ i: e, g: r }) } function s(e) { e.forEach(a) } function c(e) { e.forEach(s) } function l(e) { e.forEach(c) } function u(e) { switch (r = e, e.type) { case "GeometryCollection": e.geometries.forEach(u); break; case "LineString": s(e.arcs); break; case "MultiLineString": case "Polygon": c(e.arcs); break; case "MultiPolygon": l(e.arcs); break } } return u(t), o.forEach(null == n ? function (e) { i.push(e[0].i) } : function (e) { n(e[0].g, e[e.length - 1].g) && i.push(e[0].i) }), i } t["a"] = function (e) { return Object(r["b"])(e, o.apply(this, arguments)) } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(90), i = n(166); function o(e) { var t, n = -1, r = e.length, i = e[r - 1], o = 0; while (++n < r) t = i, i = e[n], o += t[0] * i[1] - t[1] * i[0]; return Math.abs(o) } function a(e, t) { var n = {}, a = [], s = []; function c(e) { switch (e.type) { case "GeometryCollection": e.geometries.forEach(c); break; case "Polygon": l(e.arcs); break; case "MultiPolygon": e.arcs.forEach(l); break } } function l(e) { e.forEach((function (t) { t.forEach((function (t) { (n[t = t < 0 ? ~t : t] || (n[t] = [])).push(e) })) })), a.push(e) } function u(t) { return o(Object(r["b"])(e, { type: "Polygon", arcs: [t] }).coordinates[0]) } return t.forEach(c), a.forEach((function (e) { if (!e._) { var t = [], r = [e]; e._ = 1, s.push(t); while (e = r.pop()) t.push(e), e.forEach((function (e) { e.forEach((function (e) { n[e < 0 ? ~e : e].forEach((function (e) { e._ || (e._ = 1, r.push(e)) })) })) })) } })), a.forEach((function (e) { delete e._ })), { type: "MultiPolygon", arcs: s.map((function (t) { var r, o = []; if (t.forEach((function (e) { e.forEach((function (e) { e.forEach((function (e) { n[e < 0 ? ~e : e].length < 2 && o.push(e) })) })) })), o = Object(i["a"])(e, o), (r = o.length) > 1) for (var a, s, c = 1, l = u(o[0]); c < r; ++c)(a = u(o[c])) > l && (s = o[0], o[0] = o[c], o[c] = s, l = a); return o })) } } t["a"] = function (e) { return Object(r["b"])(e, a.apply(this, arguments)) } }, function (e, t, n) { "use strict"; var r = n(396); t["a"] = function (e) { var t = {}, n = e.map((function () { return [] })); function i(e, n) { e.forEach((function (e) { e < 0 && (e = ~e); var r = t[e]; r ? r.push(n) : t[e] = [n] })) } function o(e, t) { e.forEach((function (e) { i(e, t) })) } function a(e, t) { "GeometryCollection" === e.type ? e.geometries.forEach((function (e) { a(e, t) })) : e.type in s && s[e.type](e.arcs, t) } var s = { LineString: i, MultiLineString: o, Polygon: o, MultiPolygon: function (e, t) { e.forEach((function (e) { o(e, t) })) } }; for (var c in e.forEach(a), t) for (var l = t[c], u = l.length, h = 0; h < u; ++h)for (var f = h + 1; f < u; ++f) { var d, p = l[h], v = l[f]; (d = n[p])[c = Object(r["a"])(d, v)] !== v && d.splice(c, 0, v), (d = n[v])[c = Object(r["a"])(d, p)] !== p && d.splice(c, 0, p) } return n } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { var n = 0, r = e.length; while (n < r) { var i = n + r >>> 1; e[i] < t ? n = i + 1 : r = i } return n } }, function (e, t, n) { "use strict"; var r = n(164), i = n(167); t["a"] = function (e, t) { if (e.transform) throw new Error("already quantized"); if (t && t.scale) l = e.bbox; else { if (!((n = Math.floor(t)) >= 2)) throw new Error("n must be 鈮�2"); l = e.bbox || Object(r["a"])(e); var n, o = l[0], a = l[1], s = l[2], c = l[3]; t = { scale: [s - o ? (s - o) / (n - 1) : 1, c - a ? (c - a) / (n - 1) : 1], translate: [o, a] } } var l, u, h = Object(i["a"])(t), f = e.objects, d = {}; function p(e) { return h(e) } function v(e) { var t; switch (e.type) { case "GeometryCollection": t = { type: "GeometryCollection", geometries: e.geometries.map(v) }; break; case "Point": t = { type: "Point", coordinates: p(e.coordinates) }; break; case "MultiPoint": t = { type: "MultiPoint", coordinates: e.coordinates.map(p) }; break; default: return e }return null != e.id && (t.id = e.id), null != e.bbox && (t.bbox = e.bbox), null != e.properties && (t.properties = e.properties), t } function m(e) { var t, n = 0, r = 1, i = e.length, o = new Array(i); o[0] = h(e[0], 0); while (++n < i) ((t = h(e[n], n))[0] || t[1]) && (o[r++] = t); return 1 === r && (o[r++] = [0, 0]), o.length = r, o } for (u in f) d[u] = v(f[u]); return { type: "Topology", bbox: l, transform: t, objects: d, arcs: e.arcs.map(m) } } }, function (e, t, n) { var r = n(2), i = r.registerTransform; i("default", (function (e) { return e })) }, function (e, t, n) { var r = n(2), i = r.registerTransform; function o(e) { return !!e } i("filter", (function (e, t) { void 0 === t && (t = {}), e.rows = e.rows.filter(t.callback || o) })) }, function (e, t, n) { var r = n(3), i = n(401), o = n(32), a = n(2), s = a.registerTransform, c = n(7), l = c.getFields, u = { fields: [], key: "key", retains: [], value: "value" }; s("fold", (function (e, t) { var n = e.getColumnNames(); t = r({}, u, t); var a = l(t); 0 === a.length && (console.warn("warning: option fields is not specified, will fold all columns."), a = n); var s = t.key, c = t.value, h = t.retains; 0 === h.length && (h = i(n, a)); var f = []; e.rows.forEach((function (e) { a.forEach((function (t) { var n = o(e, h); n[s] = t, n[c] = e[t], f.push(n) })) })), e.rows = f })) }, function (e, t, n) { var r = n(402), i = n(168), o = function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : []; return r(e, (function (e) { return !i(t, e) })) }; e.exports = o }, function (e, t, n) { var r = n(9), i = n(91), o = function (e, t) { if (!i(e)) return e; var n = []; return r(e, (function (e, r) { t(e, r) && n.push(e) })), n }; e.exports = o }, function (e, t, n) { var r = n(2), i = r.registerTransform; function o(e) { return e } i("map", (function (e, t) { void 0 === t && (t = {}), e.rows = e.rows.map(t.callback || o) })) }, function (e, t, n) { var r = n(3), i = n(83), o = n(15), a = n(2), s = a.registerTransform, c = { groupBy: [], orderBy: [] }; function l(e, t) { void 0 === t && (t = {}), t = r({}, c, t), e.rows = i(o(e.rows, t.groupBy, t.orderBy)) } s("partition", (function (e, t) { void 0 === t && (t = {}), t = r({}, c, t), e.rows = o(e.rows, t.groupBy, t.orderBy) })), s("group", l), s("groups", l) }, function (e, t, n) { var r = n(3), i = n(9), o = n(6), a = n(10), s = n(19), c = s.sum, l = n(15), u = n(2), h = u.registerTransform, f = n(7), d = f.getField, p = { groupBy: [], as: "_percent" }; function v(e, t) { void 0 === t && (t = {}), t = r({}, p, t); var n = d(t), s = t.dimension, u = t.groupBy, h = t.as; if (!a(s)) throw new TypeError("Invalid dimension: must be a string!"); if (o(h) && (console.warn("Invalid as: must be a string, will use the first element of the array specified."), h = h[0]), !a(h)) throw new TypeError("Invalid as: must be a string!"); var f = e.rows, v = [], m = l(f, u); i(m, (function (e) { var t = c(e.map((function (e) { return e[n] }))); 0 === t && console.warn("Invalid data: total sum of field " + n + " is 0!"); var r = l(e, [s]); i(r, (function (e) { var r = c(e.map((function (e) { return e[n] }))), i = e[0], o = i[s]; i[n] = r, i[s] = o, i[h] = 0 === t ? 0 : r / t, v.push(i) })) })), e.rows = v } h("percent", v) }, function (e, t, n) { var r = n(32), i = n(2), o = i.registerTransform, a = n(7), s = a.getFields; o("pick", (function (e, t) { void 0 === t && (t = {}); var n = s(t, e.getColumnNames()); e.rows = e.rows.map((function (e) { return r(e, n) })) })) }, function (e, t, n) { var r = n(3), i = n(9), o = n(6), a = n(10), s = n(15), c = n(2), l = c.registerTransform, u = n(7), h = u.getField, f = { groupBy: [], as: "_proportion" }; function d(e, t) { void 0 === t && (t = {}), t = r({}, f, t); var n = h(t), c = t.dimension, l = t.groupBy, u = t.as; if (!a(c)) throw new TypeError("Invalid dimension: must be a string!"); if (o(u) && (console.warn("Invalid as: must be a string, will use the first element of the array specified."), u = u[0]), !a(u)) throw new TypeError("Invalid as: must be a string!"); var d = e.rows, p = [], v = s(d, l); i(v, (function (e) { var t = e.length, r = s(e, [c]); i(r, (function (e) { var r = e.length, i = e[0], o = i[c]; i[n] = r, i[c] = o, i[u] = r / t, p.push(i) })) })), e.rows = p } l("proportion", d) }, function (e, t, n) { var r = n(9), i = n(54), o = n(10), a = n(2), s = a.registerTransform; function c(e, t) { void 0 === t && (t = {}); var n = t.map || {}, a = {}; i(n) && r(n, (function (e, t) { o(e) && o(t) && (a[t] = e) })), e.rows.forEach((function (e) { r(n, (function (t, n) { var r = e[n]; delete e[n], e[t] = r })) })) } s("rename", c), s("rename-fields", c) }, function (e, t, n) { var r = n(2), i = r.registerTransform; i("reverse", (function (e) { e.rows.reverse() })) }, function (e, t, n) { var r = n(2), i = r.registerTransform; i("sort", (function (e, t) { void 0 === t && (t = {}); var n = e.getColumnName(0); e.rows.sort(t.callback || function (e, t) { return e[n] - t[n] }) })) }, function (e, t, n) { var r = n(6), i = n(412), o = n(2), a = o.registerTransform, s = n(7), c = s.getFields, l = ["ASC", "DESC"]; function u(e, t) { void 0 === t && (t = {}); var n = c(t, [e.getColumnName(0)]); if (!r(n)) throw new TypeError("Invalid fields: must be an array with strings!"); e.rows = i(e.rows, n); var o = t.order; if (o && -1 === l.indexOf(o)) throw new TypeError("Invalid order: " + o + " must be one of " + l.join(", ")); "DESC" === o && e.rows.reverse() } a("sort-by", u), a("sortBy", u) }, function (e, t, n) { var r = n(10), i = n(11), o = n(6); function a(e, t) { var n = void 0; if (i(t)) n = function (e, n) { return t(e) - t(n) }; else { var a = []; r(t) ? a.push(t) : o(t) && (a = t), n = function (e, t) { for (var n = 0; n < a.length; n += 1) { var r = a[n]; if (e[r] > t[r]) return 1; if (e[r] < t[r]) return -1 } return 0 } } return e.sort(n), e } e.exports = a }, function (e, t, n) { var r = n(2), i = r.registerTransform, o = n(7), a = o.getFields; i("subset", (function (e, t) { void 0 === t && (t = {}); var n = t.startRowIndex || 0, r = t.endRowIndex || e.rows.length - 1, i = a(t, e.getColumnNames()); e.rows = e.getSubset(n, r, i) })) }, function (e, t, n) { var r = n(3), i = n(9), o = n(15), a = n(2), s = a.registerTransform, c = { fillBy: "group", groupBy: [], orderBy: [] }; function l(e, t) { var n = e.map((function (e) { return e })); return t.forEach((function (e) { var t = n.indexOf(e); t > -1 && n.splice(t, 1) })), n } function u(e, t) { void 0 === t && (t = {}), t = r({}, c, t); var n = e.rows, a = t.groupBy, s = t.orderBy, u = o(n, a, s), h = 0, f = []; i(u, (function (e) { e.length > h && (h = e.length, f = e) })); var d = [], p = {}; if (f.forEach((function (e) { var t = s.map((function (t) { return e[t] })).join("-"); d.push(t), p[t] = e })), "order" === t.fillBy) { var v = f[0], m = [], g = {}; n.forEach((function (e) { var t = s.map((function (t) { return e[t] })).join("-"); -1 === m.indexOf(t) && (m.push(t), g[t] = e) })); var y = l(m, d); y.forEach((function (e) { var t = {}; a.forEach((function (e) { t[e] = v[e] })), s.forEach((function (n) { t[n] = g[e][n] })), n.push(t), f.push(t), d.push(e), p[e] = t })), h = f.length } i(u, (function (e) { if (e !== f && e.length < h) { var t = e[0], r = []; e.forEach((function (e) { r.push(s.map((function (t) { return e[t] })).join("-")) })); var i = l(d, r); i.some((function (r, i) { if (i >= h - e.length) return !0; var o = p[r], c = {}; return a.forEach((function (e) { c[e] = t[e] })), s.forEach((function (e) { c[e] = o[e] })), n.push(c), !1 })) } })) } s("fill-rows", u), s("fillRows", u) }, function (e, t, n) { var r = n(3), i = n(9), o = n(416), a = n(11), s = n(417), c = n(10), l = n(19), u = n(15), h = n(2), f = h.registerTransform, d = n(7), p = d.getField, v = { groupBy: [] }; function m(e) { return e.filter((function (e) { return !s(e) })) } var g = ["mean", "median", "max", "min"], y = {}; function b(e, t) { void 0 === t && (t = {}), t = r({}, v, t); var n = p(t), l = t.method; if (!l) throw new TypeError("Invalid method!"); if ("value" === l && !o(t, "value")) throw new TypeError("Invalid value: it is nil."); var h = m(e.getColumn(n)), f = u(e.rows, t.groupBy); i(f, (function (e) { var r = m(e.map((function (e) { return e[n] }))); 0 === r.length && (r = h), e.forEach((function (i) { if (s(i[n])) if (a(l)) i[n] = l(i, r, t.value, e); else { if (!c(l)) throw new TypeError("Invalid method: must be a function or one of " + g.join(", ")); i[n] = y[l](i, r, t.value) } })) })) } g.forEach((function (e) { y[e] = function (t, n) { return l[e](n) } })), y.value = function (e, t, n) { return n }, f("impute", b) }, function (e, t) { e.exports = function (e, t) { return e.hasOwnProperty(t) } }, function (e, t) { var n = function (e) { return void 0 === e }; e.exports = n }, function (e, t, n) { var r = n(3), i = n(156), o = n(9), a = n(6), s = n(10), c = n(24), l = n(419), u = n(19), h = n(15), f = n(2), d = f.registerTransform, p = n(84), v = p.STATISTICS_METHODS, m = n(7), g = m.getFields, y = { as: [], fields: [], groupBy: [], operations: [] }, b = "count", x = { count: function (e) { return e.length }, distinct: function (e, t) { var n = l(e.map((function (e) { return e[t] }))); return n.length } }; function w(e, t) { t = r({}, y, t); var n = g(t); if (!a(n)) throw new TypeError("Invalid fields: it must be an array with one or more strings!"); var i = t.as || []; s(i) && (i = [i]); var c = t.operations; s(c) && (c = [c]); var l = [b]; if (a(c) && c.length || (console.warn('operations is not defined, will use [ "count" ] directly.'), c = l, i = c), 1 !== c.length || c[0] !== b) { if (c.length !== n.length) throw new TypeError("Invalid operations: it's length must be the same as fields!"); if (i.length !== n.length) throw new TypeError("Invalid as: it's length must be the same as fields!") } var u = h(e.rows, t.groupBy), f = []; o(u, (function (e) { var t = e[0]; c.forEach((function (r, o) { var a = i[o], s = n[o]; t[a] = x[r](e, s) })), f.push(t) })), e.rows = f } v.forEach((function (e) { x[e] = function (t, n) { var r = t.map((function (e) { return e[n] })); return a(r) && a(r[0]) && (r = i(r)), u[e](r) } })), x.average = x.mean, d("aggregate", w), d("summary", w), e.exports = { VALID_AGGREGATES: c(x) } }, function (e, t, n) { var r = n(9), i = n(168), o = function (e) { var t = []; return r(e, (function (e) { i(t, e) || t.push(e) })), t }; e.exports = o }, function (e, t, n) { var r = n(3), i = n(6), o = n(56), a = n(421), s = n(57), c = n(2), l = c.registerTransform, u = n(7), h = u.getFields, f = n(58), d = f.silverman, p = { as: ["x", "y"], method: "linear", order: 2, precision: 2 }, v = ["linear", "exponential", "logarithmic", "power", "polynomial"]; function m(e, t) { t = r({}, p, t); var n = h(t); if (!i(n) || 2 !== n.length) throw new TypeError("invalid fields: must be an array of 2 strings."); var c = n[0], l = n[1], u = t.method; if (-1 === v.indexOf(u)) throw new TypeError("invalid method: " + u + ". Must be one of " + v.join(", ")); var f = e.rows.map((function (e) { return [e[c], e[l]] })), m = a[u](f, t), g = t.extent; i(g) && 2 === g.length || (g = e.range(c)); var y = t.bandwidth; (!o(y) || y <= 0) && (y = d(e.getColumn(c))); var b = s(g, y), x = [], w = t.as, _ = w[0], C = w[1]; b.forEach((function (e) { var t = {}, n = m.predict(e), r = n[0], i = n[1]; t[_] = r, t[C] = i, isFinite(i) && x.push(t) })), e.rows = x } l("regression", m), e.exports = { REGRESSION_METHODS: v } }, function (e, t, n) { var r, i, o; (function (n, a) { i = [e], r = a, o = "function" === typeof r ? r.apply(t, i) : r, void 0 === o || (e.exports = o) })(0, (function (e) { "use strict"; function t(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var n = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }; function r(e) { if (Array.isArray(e)) { for (var t = 0, n = Array(e.length); t < e.length; t++)n[t] = e[t]; return n } return Array.from(e) } var i = { order: 2, precision: 2, period: null }; function o(e, t) { var n = [], r = []; e.forEach((function (e, i) { null !== e[1] && (r.push(e), n.push(t[i])) })); var i = r.reduce((function (e, t) { return e + t[1] }), 0), o = i / r.length, a = r.reduce((function (e, t) { var n = t[1] - o; return e + n * n }), 0), s = r.reduce((function (e, t, r) { var i = n[r], o = t[1] - i[1]; return e + o * o }), 0); return 1 - s / a } function a(e, t) { for (var n = e, r = e.length - 1, i = [t], o = 0; o < r; o++) { for (var a = o, s = o + 1; s < r; s++)Math.abs(n[o][s]) > Math.abs(n[o][a]) && (a = s); for (var c = o; c < r + 1; c++) { var l = n[c][o]; n[c][o] = n[c][a], n[c][a] = l } for (var u = o + 1; u < r; u++)for (var h = r; h >= o; h--)n[h][u] -= n[h][o] * n[o][u] / n[o][o] } for (var f = r - 1; f >= 0; f--) { for (var d = 0, p = f + 1; p < r; p++)d += n[p][f] * i[p]; i[f] = (n[r][f] - d) / n[f][f] } return i } function s(e, t) { var n = Math.pow(10, t); return Math.round(e * n) / n } var c = { linear: function (e, t) { for (var n = [0, 0, 0, 0, 0], r = 0, i = 0; i < e.length; i++)null !== e[i][1] && (r++, n[0] += e[i][0], n[1] += e[i][1], n[2] += e[i][0] * e[i][0], n[3] += e[i][0] * e[i][1], n[4] += e[i][1] * e[i][1]); var a = r * n[2] - n[0] * n[0], c = r * n[3] - n[0] * n[1], l = 0 === a ? 0 : s(c / a, t.precision), u = s(n[1] / r - l * n[0] / r, t.precision), h = function (e) { return [s(e, t.precision), s(l * e + u, t.precision)] }, f = e.map((function (e) { return h(e[0]) })); return { points: f, predict: h, equation: [l, u], r2: s(o(e, f), t.precision), string: 0 === u ? "y = " + l + "x" : "y = " + l + "x + " + u } }, exponential: function (e, t) { for (var n = [0, 0, 0, 0, 0, 0], r = 0; r < e.length; r++)null !== e[r][1] && (n[0] += e[r][0], n[1] += e[r][1], n[2] += e[r][0] * e[r][0] * e[r][1], n[3] += e[r][1] * Math.log(e[r][1]), n[4] += e[r][0] * e[r][1] * Math.log(e[r][1]), n[5] += e[r][0] * e[r][1]); var i = n[1] * n[2] - n[5] * n[5], a = Math.exp((n[2] * n[3] - n[5] * n[4]) / i), c = (n[1] * n[4] - n[5] * n[3]) / i, l = s(a, t.precision), u = s(c, t.precision), h = function (e) { return [s(e, t.precision), s(l * Math.exp(u * e), t.precision)] }, f = e.map((function (e) { return h(e[0]) })); return { points: f, predict: h, equation: [l, u], string: "y = " + l + "e^(" + u + "x)", r2: s(o(e, f), t.precision) } }, logarithmic: function (e, t) { for (var n = [0, 0, 0, 0], r = e.length, i = 0; i < r; i++)null !== e[i][1] && (n[0] += Math.log(e[i][0]), n[1] += e[i][1] * Math.log(e[i][0]), n[2] += e[i][1], n[3] += Math.pow(Math.log(e[i][0]), 2)); var a = (r * n[1] - n[2] * n[0]) / (r * n[3] - n[0] * n[0]), c = s(a, t.precision), l = s((n[2] - c * n[0]) / r, t.precision), u = function (e) { return [s(e, t.precision), s(s(l + c * Math.log(e), t.precision), t.precision)] }, h = e.map((function (e) { return u(e[0]) })); return { points: h, predict: u, equation: [l, c], string: "y = " + l + " + " + c + " ln(x)", r2: s(o(e, h), t.precision) } }, power: function (e, t) { for (var n = [0, 0, 0, 0, 0], r = e.length, i = 0; i < r; i++)null !== e[i][1] && (n[0] += Math.log(e[i][0]), n[1] += Math.log(e[i][1]) * Math.log(e[i][0]), n[2] += Math.log(e[i][1]), n[3] += Math.pow(Math.log(e[i][0]), 2)); var a = (r * n[1] - n[0] * n[2]) / (r * n[3] - Math.pow(n[0], 2)), c = (n[2] - a * n[0]) / r, l = s(Math.exp(c), t.precision), u = s(a, t.precision), h = function (e) { return [s(e, t.precision), s(s(l * Math.pow(e, u), t.precision), t.precision)] }, f = e.map((function (e) { return h(e[0]) })); return { points: f, predict: h, equation: [l, u], string: "y = " + l + "x^" + u, r2: s(o(e, f), t.precision) } }, polynomial: function (e, t) { for (var n = [], i = [], c = 0, l = 0, u = e.length, h = t.order + 1, f = 0; f < h; f++) { for (var d = 0; d < u; d++)null !== e[d][1] && (c += Math.pow(e[d][0], f) * e[d][1]); n.push(c), c = 0; for (var p = [], v = 0; v < h; v++) { for (var m = 0; m < u; m++)null !== e[m][1] && (l += Math.pow(e[m][0], f + v)); p.push(l), l = 0 } i.push(p) } i.push(n); for (var g = a(i, h).map((function (e) { return s(e, t.precision) })), y = function (e) { return [s(e, t.precision), s(g.reduce((function (t, n, r) { return t + n * Math.pow(e, r) }), 0), t.precision)] }, b = e.map((function (e) { return y(e[0]) })), x = "y = ", w = g.length - 1; w >= 0; w--)x += w > 1 ? g[w] + "x^" + w + " + " : 1 === w ? g[w] + "x + " : g[w]; return { string: x, points: b, predict: y, equation: [].concat(r(g)).reverse(), r2: s(o(e, b), t.precision) } } }; function l() { var e = function (e, r) { return n({ _round: s }, e, t({}, r, (function (e, t) { return c[r](e, n({}, i, t)) }))) }; return Object.keys(c).reduce(e, {}) } e.exports = l() })) }, function (e, t, n) { var r = n(3), i = n(9), o = n(9), a = n(6), s = n(11), c = n(56), l = n(10), u = n(24), h = n(32), f = n(57), d = n(92), p = n(58), v = n(15), m = n(2), g = m.registerTransform, y = n(7), b = y.getFields, x = n(19), w = x.kernelDensityEstimation, _ = { minSize: .01, as: ["key", "y", "size"], extent: [], method: "gaussian", bandwidth: "nrd", step: 0, groupBy: [] }, C = u(d), M = u(p); function O(e, t) { t = r({}, _, t); var n = b(t); if (!a(n) || n.length < 1) throw new TypeError("invalid fields: must be an array of at least 1 strings!"); var u = t.as; if (!a(u) || 3 !== u.length) throw new TypeError("invalid as: must be an array of 3 strings!"); var m = t.method; if (l(m)) { if (-1 === C.indexOf(m)) throw new TypeError("invalid method: " + m + ". Must be one of " + C.join(", ")); m = d[m] } if (!s(m)) throw new TypeError("invalid method: kernel method must be a function!"); var g = t.extent; if (!a(g) || 0 === g.length) { var y = []; i(n, (function (t) { var n = e.range(t); y = y.concat(n) })), g = [Math.min.apply(Math, y), Math.max.apply(Math, y)] } var x = t.bandwidth; l(x) && p[x] ? x = p[x](e.getColumn(n[0])) : s(x) ? x = x(e.getColumn(n[0])) : (!c(x) || x <= 0) && (x = p.nrd(e.getColumn(n[0]))); var M = f(g, t.step ? t.step : x), O = [], k = t.groupBy, S = v(e.rows, k); o(S, (function (e) { var r = {}; i(n, (function (n) { var o = h(e[0], k); r[n] = w(e.map((function (e) { return e[n] })), m, x); var a = u[0], s = u[1], c = u[2]; o[a] = n, o[s] = [], o[c] = [], i(M, (function (e) { var i = r[n](e); i >= t.minSize && (o[s].push(e), o[c].push(i)) })), O.push(o) })) })), e.rows = O } g("kernel-density-estimation", O), g("kde", O), g("KDE", O), e.exports = { KERNEL_METHODS: C, BANDWIDTH_METHODS: M } }, function (e, t, n) { var r = n(3), i = n(9), o = n(6), a = n(2), s = a.registerTransform, c = n(7), l = c.getFields, u = { as: ["x", "y", "count"], bins: [30, 30], offset: [0, 0], sizeByCount: !1 }, h = Math.sqrt(3), f = Math.PI / 3, d = [0, f, 2 * f, 3 * f, 4 * f, 5 * f]; function p(e, t, n, r) { return Math.sqrt((e - n) * (e - n) + (t - r) * (t - r)) } function v(e, t, n) { var r = e - n; t /= 2; var i = Math.floor(r / t), o = t * (i + (1 === Math.abs(i % 2) ? 1 : 0)), a = t * (i + (1 === Math.abs(i % 2) ? 0 : 1)); return [o + n, a + n] } function m(e, t, n) { void 0 === t && (t = [1, 1]), void 0 === n && (n = [0, 0]); var r = {}, i = t, o = i[0], a = i[1], s = n, c = s[0], l = s[1]; return e.forEach((function (e) { var t, n, i, s = e[0], u = e[1], h = v(s, o, c), f = h[0], d = h[1], m = v(u, a, l), g = m[0], y = m[1], b = p(s, u, f, g), x = p(s, u, d, y); b < x ? (t = "x" + f + "y" + g, n = f, i = g) : (t = "x" + d + "y" + y, n = d, i = y), r[t] = r[t] || { x: n, y: i, count: 0 }, r[t].count++ })), r } function g(e, t) { t = r({}, u, t); var n = l(t); if (!o(n) || 2 !== n.length) throw new TypeError("Invalid fields: it must be an array with 2 strings!"); var a = n[0], s = n[1], c = e.range(a), f = e.range(s), p = c[1] - c[0], v = f[1] - f[0], g = t.binWidth || []; if (2 !== g.length) { var y = t.bins, b = y[0], x = y[1]; if (b <= 0 || x <= 0) throw new TypeError("Invalid bins: must be an array with two positive numbers (e.g. [ 30, 30 ])!"); g = [p / b, v / x] } var w = t.offset, _ = w[0], C = w[1], M = 3 * g[0] / (h * g[1]), O = e.rows.map((function (e) { return [e[a], M * e[s]] })), k = m(O, [g[0], M * g[1]], [_, M * C]), S = t.as, T = S[0], A = S[1], L = S[2]; if (!T || !A || !L) throw new TypeError('Invalid as: it must be an array with three elements (e.g. [ "x", "y", "count" ])!'); var j = g[0] / h, z = d.map((function (e) { return [Math.sin(e) * j, -Math.cos(e) * j] })), E = [], P = 0; t.sizeByCount && i(k, (function (e) { e.count > P && (P = e.count) })), i(k, (function (e) { var n = e.x, r = e.y, i = e.count, o = {}; o[L] = i, t.sizeByCount ? (o[T] = z.map((function (t) { return n + e.count / P * t[0] })), o[A] = z.map((function (t) { return (r + e.count / P * t[1]) / M }))) : (o[T] = z.map((function (e) { return n + e[0] })), o[A] = z.map((function (e) { return (r + e[1]) / M }))), E.push(o) })), e.rows = E } s("bin.hexagon", g), s("bin.hex", g), s("hexbin", g) }, function (e, t, n) { var r = n(3), i = n(9), o = n(32), a = n(15), s = n(2), c = s.registerTransform, l = n(7), u = l.getField, h = { as: ["x", "count"], bins: 30, offset: 0, groupBy: [] }; function f(e, t, n) { var r = e - n, i = Math.floor(r / t); return [i * t + n, (i + 1) * t + n] } function d(e, t) { t = r({}, h, t); var n = u(t); if (0 !== e.rows.length) { var s = e.range(n), c = s[1] - s[0], l = t.binWidth; if (!l) { var d = t.bins; if (d <= 0) throw new TypeError("Invalid bins: it must be a positive number!"); l = c / d } var p = t.offset % l, v = [], m = t.groupBy, g = a(e.rows, m); i(g, (function (e) { var a = {}, s = e.map((function (e) { return e[n] })); s.forEach((function (e) { var t = f(e, l, p), n = t[0], r = t[1], i = n + "-" + r; a[i] = a[i] || { x0: n, x1: r, count: 0 }, a[i].count++ })); var c = t.as, u = c[0], h = c[1]; if (!u || !h) throw new TypeError('Invalid as: it must be an array with 2 elements (e.g. [ "x", "count" ])!'); var d = o(e[0], m); i(a, (function (e) { var t = r({}, d); t[u] = [e.x0, e.x1], t[h] = e.count, v.push(t) })) })), e.rows = v } } c("bin.histogram", d), c("bin.dot", d) }, function (e, t, n) { var r = n(3), i = n(9), o = n(6), a = n(10), s = n(19), c = s.quantile, l = n(15), u = n(157), h = n(2), f = h.registerTransform, d = n(7), p = d.getField, v = { as: "_bin", groupBy: [], fraction: 4 }; function m(e, t) { t = r({}, v, t); var n = p(t), s = t.as; if (!a(s)) throw new TypeError('Invalid as: it must be a string (e.g. "_bin")!'); var h = t.p, f = t.fraction; o(h) && 0 !== h.length || (h = u(f)); var d = e.rows, m = t.groupBy, g = l(d, m), y = []; i(g, (function (e) { var t = e[0], r = e.map((function (e) { return e[n] })), i = h.map((function (e) { return c(r, e) })); t[s] = i, y.push(t) })), e.rows = y } f("bin.quantile", m) }, function (e, t, n) { var r = n(3), i = n(9), o = n(2), a = o.registerTransform, s = n(7), c = s.getFields, l = { as: ["x", "y", "count"], bins: [30, 30], offset: [0, 0], sizeByCount: !1 }; function u(e, t, n) { var r = e - n, i = Math.floor(r / t); return [i * t + n, (i + 1) * t + n] } function h(e, t) { t = r({}, l, t); var n = c(t), o = n[0], a = n[1]; if (!o || !a) throw new TypeError("Invalid fields: must be an array with 2 strings!"); var s = e.range(o), h = e.range(a), f = s[1] - s[0], d = h[1] - h[0], p = t.binWidth || []; if (2 !== p.length) { var v = t.bins, m = v[0], g = v[1]; if (m <= 0 || g <= 0) throw new TypeError("Invalid bins: must be an array with 2 positive numbers (e.g. [ 30, 30 ])!"); p = [f / m, d / g] } var y = e.rows.map((function (e) { return [e[o], e[a]] })), b = {}, x = t.offset, w = x[0], _ = x[1]; y.forEach((function (e) { var t = u(e[0], p[0], w), n = t[0], r = t[1], i = u(e[1], p[1], _), o = i[0], a = i[1], s = n + "-" + r + "-" + o + "-" + a; b[s] = b[s] || { x0: n, x1: r, y0: o, y1: a, count: 0 }, b[s].count++ })); var C = [], M = t.as, O = M[0], k = M[1], S = M[2]; if (!O || !k || !S) throw new TypeError('Invalid as: it must be an array with 3 strings (e.g. [ "x", "y", "count" ])!'); if (t.sizeByCount) { var T = 0; i(b, (function (e) { e.count > T && (T = e.count) })), i(b, (function (e) { var t = e.x0, n = e.x1, r = e.y0, i = e.y1, o = e.count, a = o / T, s = (t + n) / 2, c = (r + i) / 2, l = (n - t) * a / 2, u = (i - r) * a / 2, h = s - l, f = s + l, d = c - u, p = c + u, v = {}; v[O] = [h, f, f, h], v[k] = [d, d, p, p], v[S] = o, C.push(v) })) } else i(b, (function (e) { var t = {}; t[O] = [e.x0, e.x1, e.x1, e.x0], t[k] = [e.y0, e.y0, e.y1, e.y1], t[S] = e.count, C.push(t) })); e.rows = C } a("bin.rectangle", h), a("bin.rect", h) }, function (e, t, n) { var r = n(3), i = n(6), o = n(10), a = n(2), s = a.registerTransform, c = n(7), l = c.getField, u = { as: ["_centroid_x", "_centroid_y"] }; function h(e, t) { t = r({}, u, t); var n = l(t), a = t.geoView || t.geoDataView; if (o(a) && (a = e.dataSet.getView(a)), !a || "geo" !== a.dataType) throw new TypeError("Invalid geoView: must be a DataView of GEO dataType!"); var s = t.as; if (!i(s) || 2 !== s.length) throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ "cX", "cY" ])!'); var c = s[0], h = s[1]; e.rows.forEach((function (e) { var t = a.geoFeatureByName(e[n]); t && (a._projectedAs ? (e[c] = t[a._projectedAs[2]], e[h] = t[a._projectedAs[3]]) : (e[c] = t.centroidX, e[h] = t.centroidY)) })) } s("geo.centroid", h) }, function (e, t, n) { var r = n(3), i = n(0), o = n(159), a = n(6), s = n(2), c = s.registerTransform, l = n(141), u = i.geoPath, h = { as: ["_x", "_y", "_centroid_x", "_centroid_y"] }; function f(e, t) { if ("geo" !== e.dataType && "geo-graticule" !== e.dataType) throw new TypeError("Invalid dataView: this transform is for Geo data only!"); t = r({}, h, t); var n = t.projection; if (!n) throw new TypeError("Invalid projection!"); n = l(n); var i = u(n), s = t.as; if (!a(s) || 4 !== s.length) throw new TypeError('Invalid as: it must be an array with 4 strings (e.g. [ "x", "y", "cX", "cY" ])!'); e._projectedAs = s; var c = s[0], f = s[1], d = s[2], p = s[3]; e.rows.forEach((function (e) { e[c] = [], e[f] = []; var t = i(e); if (t) { var n = o(t); n._path.forEach((function (t) { e[c].push(t[1]), e[f].push(t[2]) })); var r = i.centroid(e); e[d] = r[0], e[p] = r[1] } })), e.rows = e.rows.filter((function (e) { return 0 !== e[c].length })) } c("geo.projection", f) }, function (e, t, n) { var r = n(3), i = n(6), o = n(10), a = n(2), s = a.registerTransform, c = n(7), l = c.getField, u = { as: ["_x", "_y"] }; function h(e, t) { t = r({}, u, t); var n = l(t), a = t.geoView || t.geoDataView; if (o(a) && (a = e.dataSet.getView(a)), !a || "geo" !== a.dataType) throw new TypeError("Invalid geoView: must be a DataView of GEO dataType!"); var s = t.as; if (!i(s) || 2 !== s.length) throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ "x", "y" ])!'); var c = s[0], h = s[1]; e.rows.forEach((function (e) { var t = a.geoFeatureByName(e[n]); t && (a._projectedAs ? (e[c] = t[a._projectedAs[0]], e[h] = t[a._projectedAs[1]]) : (e[c] = t.longitude, e[h] = t.latitude)) })) } s("geo.region", h) }, function (e, t, n) { var r = n(3), i = n(9), o = n(6), a = n(83), s = n(11), c = n(2), l = c.registerTransform, u = { y: 0, thickness: .05, weight: !1, marginRatio: .1, id: function (e) { return e.id }, source: function (e) { return e.source }, target: function (e) { return e.target }, sourceWeight: function (e) { return e.value || 1 }, targetWeight: function (e) { return e.value || 1 }, sortBy: null }; function h(e, t, n) { return void 0 === n && (n = {}), e.forEach((function (e) { var r = t.edgeSource(e), i = t.edgeTarget(e); n[r] || (n[r] = { id: r }), n[i] || (n[i] = { id: i }) })), a(n) } function f(e, t, n) { i(e, (function (e, r) { e.inEdges = t.filter((function (e) { return "" + n.target(e) === "" + r })), e.outEdges = t.filter((function (e) { return "" + n.source(e) === "" + r })), e.edges = e.outEdges.concat(e.inEdges), e.frequency = e.edges.length, e.value = 0, e.inEdges.forEach((function (t) { e.value += n.targetWeight(t) })), e.outEdges.forEach((function (t) { e.value += n.sourceWeight(t) })) })) } function d(e, t) { var n = { weight: function (e, t) { return t.value - e.value }, frequency: function (e, t) { return t.frequency - e.frequency }, id: function (e, n) { return ("" + t.id(e)).localeCompare("" + t.id(n)) } }, r = n[t.sortBy]; !r && s(t.sortBy) && (r = t.sortBy), r && e.sort(r) } function p(e, t) { var n = e.length; if (!n) throw new TypeError("Invalid nodes: it's empty!"); if (t.weight) { var r = t.marginRatio; if (r < 0 || r >= 1) throw new TypeError("Invalid marginRatio: it must be in range [0, 1)!"); var i = r / (2 * n), o = t.thickness; if (o <= 0 || o >= 1) throw new TypeError("Invalid thickness: it must be in range (0, 1)!"); var a = 0; e.forEach((function (e) { a += e.value })), e.forEach((function (e) { e.weight = e.value / a, e.width = e.weight * (1 - r), e.height = o })), e.forEach((function (n, r) { for (var a = 0, s = r - 1; s >= 0; s--)a += e[s].width + 2 * i; var c = n.minX = i + a, l = n.maxX = n.minX + n.width, u = n.minY = t.y - o / 2, h = n.maxY = u + o; n.x = [c, l, l, c], n.y = [u, u, h, h] })) } else { var s = 1 / n; e.forEach((function (e, n) { e.x = (n + .5) * s, e.y = t.y })) } } function v(e, t, n) { if (n.weight) { var r = {}; i(e, (function (e, t) { r[t] = e.value })), t.forEach((function (t) { var i = n.source(t), o = n.target(t), a = e[i], s = e[o]; if (a && s) { var c = r[i], l = n.sourceWeight(t), u = a.minX + (a.value - c) / a.value * a.width, h = u + l / a.value * a.width; r[i] -= l; var f = r[o], d = n.targetWeight(t), p = s.minX + (s.value - f) / s.value * s.width, v = p + d / s.value * s.width; r[o] -= d; var m = n.y; t.x = [u, h, p, v], t.y = [m, m, m, m] } })) } else t.forEach((function (t) { var r = e[n.source(t)], i = e[n.target(t)]; r && i && (t.x = [r.x, i.x], t.y = [r.y, i.y]) })) } function m(e, t) { t = r({}, u, t); var n = {}, i = e.nodes, a = e.edges; o(i) && 0 !== i.length || (i = h(a, t, n)), i.forEach((function (e) { var r = t.id(e); n[r] = e })), f(n, a, t), d(i, t), p(i, t), v(n, a, t), e.nodes = i, e.edges = a } l("diagram.arc", m), l("arc", m) }, function (e, t, n) { var r = n(3), i = n(432), o = n(2), a = o.registerTransform, s = { rankdir: "TB", align: "TB", nodesep: 50, edgesep: 10, ranksep: 50, source: function (e) { return e.source }, target: function (e) { return e.target } }; function c(e, t) { t = r({}, s, t); var n = new i.graphlib.Graph; n.setGraph({}), n.setDefaultEdgeLabel((function () { return {} })), e.nodes.forEach((function (e) { var r = t.nodeId ? t.nodeId(e) : e.id; e.height || e.width || (e.height = e.width = t.edgesep), n.setNode(r, e) })), e.edges.forEach((function (e) { n.setEdge(t.source(e), t.target(e)) })), i.layout(n); var o = [], a = []; n.nodes().forEach((function (e) { var t = n.node(e), r = t.x, i = t.y, a = t.height, s = t.width; t.x = [r - s / 2, r + s / 2, r + s / 2, r - s / 2], t.y = [i + a / 2, i + a / 2, i - a / 2, i - a / 2], o.push(t) })), n.edges().forEach((function (e) { var t = n.edge(e), r = t.points, i = {}; i.x = r.map((function (e) { return e.x })), i.y = r.map((function (e) { return e.y })), a.push(i) })), e.nodes = o, e.edges = a } a("diagram.dagre", c), a("dagre", c) }, function (e, t, n) { e.exports = { graphlib: n(16), layout: n(448), debug: n(470), util: { time: n(12).time, notime: n(12).notime }, version: n(471) } }, function (e, t, n) { var r = n(434); e.exports = { Graph: r.Graph, json: n(438), alg: n(439), version: r.version } }, function (e, t, n) { e.exports = { Graph: n(93), version: n(437) } }, function (e, t) { var n; n = function () { return this }(); try { n = n || Function("return this")() || (0, eval)("this") } catch (r) { "object" === typeof window && (n = window) } e.exports = n }, function (e, t) { e.exports = function (e) { return e.webpackPolyfill || (e.deprecate = function () { }, e.paths = [], e.children || (e.children = []), Object.defineProperty(e, "loaded", { enumerable: !0, get: function () { return e.l } }), Object.defineProperty(e, "id", { enumerable: !0, get: function () { return e.i } }), e.webpackPolyfill = 1), e } }, function (e, t) { e.exports = "2.1.5" }, function (e, t, n) { var r = n(13), i = n(93); function o(e) { var t = { options: { directed: e.isDirected(), multigraph: e.isMultigraph(), compound: e.isCompound() }, nodes: a(e), edges: s(e) }; return r.isUndefined(e.graph()) || (t.value = r.clone(e.graph())), t } function a(e) { return r.map(e.nodes(), (function (t) { var n = e.node(t), i = e.parent(t), o = { v: t }; return r.isUndefined(n) || (o.value = n), r.isUndefined(i) || (o.parent = i), o })) } function s(e) { return r.map(e.edges(), (function (t) { var n = e.edge(t), i = { v: t.v, w: t.w }; return r.isUndefined(t.name) || (i.name = t.name), r.isUndefined(n) || (i.value = n), i })) } function c(e) { var t = new i(e.options).setGraph(e.value); return r.each(e.nodes, (function (e) { t.setNode(e.v, e.value), e.parent && t.setParent(e.v, e.parent) })), r.each(e.edges, (function (e) { t.setEdge({ v: e.v, w: e.w, name: e.name }, e.value) })), t } e.exports = { write: o, read: c } }, function (e, t, n) { e.exports = { components: n(440), dijkstra: n(170), dijkstraAll: n(441), findCycles: n(442), floydWarshall: n(443), isAcyclic: n(444), postorder: n(445), preorder: n(446), prim: n(447), tarjan: n(172), topsort: n(173) } }, function (e, t, n) { var r = n(13); function i(e) { var t, n = {}, i = []; function o(i) { r.has(n, i) || (n[i] = !0, t.push(i), r.each(e.successors(i), o), r.each(e.predecessors(i), o)) } return r.each(e.nodes(), (function (e) { t = [], o(e), t.length && i.push(t) })), i } e.exports = i }, function (e, t, n) { var r = n(170), i = n(13); function o(e, t, n) { return i.transform(e.nodes(), (function (i, o) { i[o] = r(e, o, t, n) }), {}) } e.exports = o }, function (e, t, n) { var r = n(13), i = n(172); function o(e) { return r.filter(i(e), (function (t) { return t.length > 1 || 1 === t.length && e.hasEdge(t[0], t[0]) })) } e.exports = o }, function (e, t, n) { var r = n(13); e.exports = o; var i = r.constant(1); function o(e, t, n) { return a(e, t || i, n || function (t) { return e.outEdges(t) }) } function a(e, t, n) { var r = {}, i = e.nodes(); return i.forEach((function (e) { r[e] = {}, r[e][e] = { distance: 0 }, i.forEach((function (t) { e !== t && (r[e][t] = { distance: Number.POSITIVE_INFINITY }) })), n(e).forEach((function (n) { var i = n.v === e ? n.w : n.v, o = t(n); r[e][i] = { distance: o, predecessor: e } })) })), i.forEach((function (e) { var t = r[e]; i.forEach((function (n) { var o = r[n]; i.forEach((function (n) { var r = o[e], i = t[n], a = o[n], s = r.distance + i.distance; s < a.distance && (a.distance = s, a.predecessor = i.predecessor) })) })) })), r } }, function (e, t, n) { var r = n(173); function i(e) { try { r(e) } catch (t) { if (t instanceof r.CycleException) return !1; throw t } return !0 } e.exports = i }, function (e, t, n) { var r = n(174); function i(e, t) { return r(e, t, "post") } e.exports = i }, function (e, t, n) { var r = n(174); function i(e, t) { return r(e, t, "pre") } e.exports = i }, function (e, t, n) { var r = n(13), i = n(93), o = n(171); function a(e, t) { var n, a = new i, s = {}, c = new o; function l(e) { var r = e.v === n ? e.w : e.v, i = c.priority(r); if (void 0 !== i) { var o = t(e); o < i && (s[r] = n, c.decrease(r, o)) } } if (0 === e.nodeCount()) return a; r.each(e.nodes(), (function (e) { c.add(e, Number.POSITIVE_INFINITY), a.setNode(e) })), c.decrease(e.nodes()[0], 0); var u = !1; while (c.size() > 0) { if (n = c.removeMin(), r.has(s, n)) a.setEdge(n, s[n]); else { if (u) throw new Error("Input graph is not connected: " + e); u = !0 } e.nodeEdges(n).forEach(l) } return a } e.exports = a }, function (e, t, n) { "use strict"; var r = n(8), i = n(449), o = n(452), a = n(453), s = n(12).normalizeRanks, c = n(455), l = n(12).removeEmptyRanks, u = n(456), h = n(457), f = n(458), d = n(459), p = n(468), v = n(12), m = n(16).Graph; function g(e, t) { var n = t && t.debugTiming ? v.time : v.notime; n("layout", (function () { var t = n("  buildLayoutGraph", (function () { return T(e) })); n("  runLayout", (function () { y(t, n) })), n("  updateInputGraph", (function () { b(e, t) })) })) } function y(e, t) { t("    makeSpaceForEdgeLabels", (function () { A(e) })), t("    removeSelfEdges", (function () { I(e) })), t("    acyclic", (function () { i.run(e) })), t("    nestingGraph.run", (function () { u.run(e) })), t("    rank", (function () { a(v.asNonCompoundGraph(e)) })), t("    injectEdgeLabelProxies", (function () { L(e) })), t("    removeEmptyRanks", (function () { l(e) })), t("    nestingGraph.cleanup", (function () { u.cleanup(e) })), t("    normalizeRanks", (function () { s(e) })), t("    assignRankMinMax", (function () { j(e) })), t("    removeEdgeLabelProxies", (function () { z(e) })), t("    normalize.run", (function () { o.run(e) })), t("    parentDummyChains", (function () { c(e) })), t("    addBorderSegments", (function () { h(e) })), t("    order", (function () { d(e) })), t("    insertSelfEdges", (function () { N(e) })), t("    adjustCoordinateSystem", (function () { f.adjust(e) })), t("    position", (function () { p(e) })), t("    positionSelfEdges", (function () { R(e) })), t("    removeBorderNodes", (function () { V(e) })), t("    normalize.undo", (function () { o.undo(e) })), t("    fixupEdgeLabelCoords", (function () { D(e) })), t("    undoCoordinateSystem", (function () { f.undo(e) })), t("    translateGraph", (function () { E(e) })), t("    assignNodeIntersects", (function () { P(e) })), t("    reversePoints", (function () { H(e) })), t("    acyclic.undo", (function () { i.undo(e) })) } function b(e, t) { r.forEach(e.nodes(), (function (n) { var r = e.node(n), i = t.node(n); r && (r.x = i.x, r.y = i.y, t.children(n).length && (r.width = i.width, r.height = i.height)) })), r.forEach(e.edges(), (function (n) { var i = e.edge(n), o = t.edge(n); i.points = o.points, r.has(o, "x") && (i.x = o.x, i.y = o.y) })), e.graph().width = t.graph().width, e.graph().height = t.graph().height } e.exports = g; var x = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"], w = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: "tb" }, _ = ["acyclicer", "ranker", "rankdir", "align"], C = ["width", "height"], M = { width: 0, height: 0 }, O = ["minlen", "weight", "width", "height", "labeloffset"], k = { minlen: 1, weight: 1, width: 0, height: 0, labeloffset: 10, labelpos: "r" }, S = ["labelpos"]; function T(e) { var t = new m({ multigraph: !0, compound: !0 }), n = Y(e.graph()); return t.setGraph(r.merge({}, w, F(n, x), r.pick(n, _))), r.forEach(e.nodes(), (function (n) { var i = Y(e.node(n)); t.setNode(n, r.defaults(F(i, C), M)), t.setParent(n, e.parent(n)) })), r.forEach(e.edges(), (function (n) { var i = Y(e.edge(n)); t.setEdge(n, r.merge({}, k, F(i, O), r.pick(i, S))) })), t } function A(e) { var t = e.graph(); t.ranksep /= 2, r.forEach(e.edges(), (function (n) { var r = e.edge(n); r.minlen *= 2, "c" !== r.labelpos.toLowerCase() && ("TB" === t.rankdir || "BT" === t.rankdir ? r.width += r.labeloffset : r.height += r.labeloffset) })) } function L(e) { r.forEach(e.edges(), (function (t) { var n = e.edge(t); if (n.width && n.height) { var r = e.node(t.v), i = e.node(t.w), o = { rank: (i.rank - r.rank) / 2 + r.rank, e: t }; v.addDummyNode(e, "edge-proxy", o, "_ep") } })) } function j(e) { var t = 0; r.forEach(e.nodes(), (function (n) { var i = e.node(n); i.borderTop && (i.minRank = e.node(i.borderTop).rank, i.maxRank = e.node(i.borderBottom).rank, t = r.max(t, i.maxRank)) })), e.graph().maxRank = t } function z(e) { r.forEach(e.nodes(), (function (t) { var n = e.node(t); "edge-proxy" === n.dummy && (e.edge(n.e).labelRank = n.rank, e.removeNode(t)) })) } function E(e) { var t = Number.POSITIVE_INFINITY, n = 0, i = Number.POSITIVE_INFINITY, o = 0, a = e.graph(), s = a.marginx || 0, c = a.marginy || 0; function l(e) { var r = e.x, a = e.y, s = e.width, c = e.height; t = Math.min(t, r - s / 2), n = Math.max(n, r + s / 2), i = Math.min(i, a - c / 2), o = Math.max(o, a + c / 2) } r.forEach(e.nodes(), (function (t) { l(e.node(t)) })), r.forEach(e.edges(), (function (t) { var n = e.edge(t); r.has(n, "x") && l(n) })), t -= s, i -= c, r.forEach(e.nodes(), (function (n) { var r = e.node(n); r.x -= t, r.y -= i })), r.forEach(e.edges(), (function (n) { var o = e.edge(n); r.forEach(o.points, (function (e) { e.x -= t, e.y -= i })), r.has(o, "x") && (o.x -= t), r.has(o, "y") && (o.y -= i) })), a.width = n - t + s, a.height = o - i + c } function P(e) { r.forEach(e.edges(), (function (t) { var n, r, i = e.edge(t), o = e.node(t.v), a = e.node(t.w); i.points ? (n = i.points[0], r = i.points[i.points.length - 1]) : (i.points = [], n = a, r = o), i.points.unshift(v.intersectRect(o, n)), i.points.push(v.intersectRect(a, r)) })) } function D(e) { r.forEach(e.edges(), (function (t) { var n = e.edge(t); if (r.has(n, "x")) switch ("l" !== n.labelpos && "r" !== n.labelpos || (n.width -= n.labeloffset), n.labelpos) { case "l": n.x -= n.width / 2 + n.labeloffset; break; case "r": n.x += n.width / 2 + n.labeloffset; break } })) } function H(e) { r.forEach(e.edges(), (function (t) { var n = e.edge(t); n.reversed && n.points.reverse() })) } function V(e) { r.forEach(e.nodes(), (function (t) { if (e.children(t).length) { var n = e.node(t), i = e.node(n.borderTop), o = e.node(n.borderBottom), a = e.node(r.last(n.borderLeft)), s = e.node(r.last(n.borderRight)); n.width = Math.abs(s.x - a.x), n.height = Math.abs(o.y - i.y), n.x = a.x + n.width / 2, n.y = i.y + n.height / 2 } })), r.forEach(e.nodes(), (function (t) { "border" === e.node(t).dummy && e.removeNode(t) })) } function I(e) { r.forEach(e.edges(), (function (t) { if (t.v === t.w) { var n = e.node(t.v); n.selfEdges || (n.selfEdges = []), n.selfEdges.push({ e: t, label: e.edge(t) }), e.removeEdge(t) } })) } function N(e) { var t = v.buildLayerMatrix(e); r.forEach(t, (function (t) { var n = 0; r.forEach(t, (function (t, i) { var o = e.node(t); o.order = i + n, r.forEach(o.selfEdges, (function (t) { v.addDummyNode(e, "selfedge", { width: t.label.width, height: t.label.height, rank: o.rank, order: i + ++n, e: t.e, label: t.label }, "_se") })), delete o.selfEdges })) })) } function R(e) { r.forEach(e.nodes(), (function (t) { var n = e.node(t); if ("selfedge" === n.dummy) { var r = e.node(n.e.v), i = r.x + r.width / 2, o = r.y, a = n.x - i, s = r.height / 2; e.setEdge(n.e, n.label), e.removeNode(t), n.label.points = [{ x: i + 2 * a / 3, y: o - s }, { x: i + 5 * a / 6, y: o - s }, { x: i + a, y: o }, { x: i + 5 * a / 6, y: o + s }, { x: i + 2 * a / 3, y: o + s }], n.label.x = n.x, n.label.y = n.y } })) } function F(e, t) { return r.mapValues(r.pick(e, t), Number) } function Y(e) { var t = {}; return r.forEach(e, (function (e, n) { t[n.toLowerCase()] = e })), t } }, function (e, t, n) { "use strict"; var r = n(8), i = n(450); function o(e) { var t = "greedy" === e.graph().acyclicer ? i(e, n(e)) : a(e); function n(e) { return function (t) { return e.edge(t).weight } } r.forEach(t, (function (t) { var n = e.edge(t); e.removeEdge(t), n.forwardName = t.name, n.reversed = !0, e.setEdge(t.w, t.v, n, r.uniqueId("rev")) })) } function a(e) { var t = [], n = {}, i = {}; function o(a) { r.has(i, a) || (i[a] = !0, n[a] = !0, r.forEach(e.outEdges(a), (function (e) { r.has(n, e.w) ? t.push(e) : o(e.w) })), delete n[a]) } return r.forEach(e.nodes(), o), t } function s(e) { r.forEach(e.edges(), (function (t) { var n = e.edge(t); if (n.reversed) { e.removeEdge(t); var r = n.forwardName; delete n.reversed, delete n.forwardName, e.setEdge(t.w, t.v, n, r) } })) } e.exports = { run: o, undo: s } }, function (e, t, n) { var r = n(8), i = n(16).Graph, o = n(451); e.exports = s; var a = r.constant(1); function s(e, t) { if (e.nodeCount() <= 1) return []; var n = u(e, t || a), i = c(n.graph, n.buckets, n.zeroIdx); return r.flatten(r.map(i, (function (t) { return e.outEdges(t.v, t.w) })), !0) } function c(e, t, n) { var r, i = [], o = t[t.length - 1], a = t[0]; while (e.nodeCount()) { while (r = a.dequeue()) l(e, t, n, r); while (r = o.dequeue()) l(e, t, n, r); if (e.nodeCount()) for (var s = t.length - 2; s > 0; --s)if (r = t[s].dequeue(), r) { i = i.concat(l(e, t, n, r, !0)); break } } return i } function l(e, t, n, i, o) { var a = o ? [] : void 0; return r.forEach(e.inEdges(i.v), (function (r) { var i = e.edge(r), s = e.node(r.v); o && a.push({ v: r.v, w: r.w }), s.out -= i, h(t, n, s) })), r.forEach(e.outEdges(i.v), (function (r) { var i = e.edge(r), o = r.w, a = e.node(o); a["in"] -= i, h(t, n, a) })), e.removeNode(i.v), a } function u(e, t) { var n = new i, a = 0, s = 0; r.forEach(e.nodes(), (function (e) { n.setNode(e, { v: e, in: 0, out: 0 }) })), r.forEach(e.edges(), (function (e) { var r = n.edge(e.v, e.w) || 0, i = t(e), o = r + i; n.setEdge(e.v, e.w, o), s = Math.max(s, n.node(e.v).out += i), a = Math.max(a, n.node(e.w)["in"] += i) })); var c = r.range(s + a + 3).map((function () { return new o })), l = a + 1; return r.forEach(n.nodes(), (function (e) { h(c, l, n.node(e)) })), { graph: n, buckets: c, zeroIdx: l } } function h(e, t, n) { n.out ? n["in"] ? e[n.out - n["in"] + t].enqueue(n) : e[e.length - 1].enqueue(n) : e[0].enqueue(n) } }, function (e, t) { function n() { var e = {}; e._next = e._prev = e, this._sentinel = e } function r(e) { e._prev._next = e._next, e._next._prev = e._prev, delete e._next, delete e._prev } function i(e, t) { if ("_next" !== e && "_prev" !== e) return t } e.exports = n, n.prototype.dequeue = function () { var e = this._sentinel, t = e._prev; if (t !== e) return r(t), t }, n.prototype.enqueue = function (e) { var t = this._sentinel; e._prev && e._next && r(e), e._next = t._next, t._next._prev = e, t._next = e, e._prev = t }, n.prototype.toString = function () { var e = [], t = this._sentinel, n = t._prev; while (n !== t) e.push(JSON.stringify(n, i)), n = n._prev; return "[" + e.join(", ") + "]" } }, function (e, t, n) { "use strict"; var r = n(8), i = n(12); function o(e) { e.graph().dummyChains = [], r.forEach(e.edges(), (function (t) { a(e, t) })) } function a(e, t) { var n = t.v, r = e.node(n).rank, o = t.w, a = e.node(o).rank, s = t.name, c = e.edge(t), l = c.labelRank; if (a !== r + 1) { var u, h, f; for (e.removeEdge(t), f = 0, ++r; r < a; ++f, ++r)c.points = [], h = { width: 0, height: 0, edgeLabel: c, edgeObj: t, rank: r }, u = i.addDummyNode(e, "edge", h, "_d"), r === l && (h.width = c.width, h.height = c.height, h.dummy = "edge-label", h.labelpos = c.labelpos), e.setEdge(n, u, { weight: c.weight }, s), 0 === f && e.graph().dummyChains.push(u), n = u; e.setEdge(n, o, { weight: c.weight }, s) } } function s(e) { r.forEach(e.graph().dummyChains, (function (t) { var n, r = e.node(t), i = r.edgeLabel; e.setEdge(r.edgeObj, i); while (r.dummy) n = e.successors(t)[0], e.removeNode(t), i.points.push({ x: r.x, y: r.y }), "edge-label" === r.dummy && (i.x = r.x, i.y = r.y, i.width = r.width, i.height = r.height), t = n, r = e.node(t) })) } e.exports = { run: o, undo: s } }, function (e, t, n) { "use strict"; var r = n(59), i = r.longestPath, o = n(175), a = n(454); function s(e) { switch (e.graph().ranker) { case "network-simplex": u(e); break; case "tight-tree": l(e); break; case "longest-path": c(e); break; default: u(e) } } e.exports = s; var c = i; function l(e) { i(e), o(e) } function u(e) { a(e) } }, function (e, t, n) { "use strict"; var r = n(8), i = n(175), o = n(59).slack, a = n(59).longestPath, s = n(16).alg.preorder, c = n(16).alg.postorder, l = n(12).simplify; function u(e) { e = l(e), a(e); var t, n, r = i(e); p(r), h(r, e); while (t = m(r)) n = g(r, e, t), y(r, e, t, n) } function h(e, t) { var n = c(e, e.nodes()); n = n.slice(0, n.length - 1), r.forEach(n, (function (n) { f(e, t, n) })) } function f(e, t, n) { var r = e.node(n), i = r.parent; e.edge(n, i).cutvalue = d(e, t, n) } function d(e, t, n) { var i = e.node(n), o = i.parent, a = !0, s = t.edge(n, o), c = 0; return s || (a = !1, s = t.edge(o, n)), c = s.weight, r.forEach(t.nodeEdges(n), (function (r) { var i = r.v === n, s = i ? r.w : r.v; if (s !== o) { var l = i === a, u = t.edge(r).weight; if (c += l ? u : -u, x(e, n, s)) { var h = e.edge(n, s).cutvalue; c += l ? -h : h } } })), c } function p(e, t) { arguments.length < 2 && (t = e.nodes()[0]), v(e, {}, 1, t) } function v(e, t, n, i, o) { var a = n, s = e.node(i); return t[i] = !0, r.forEach(e.neighbors(i), (function (o) { r.has(t, o) || (n = v(e, t, n, o, i)) })), s.low = a, s.lim = n++, o ? s.parent = o : delete s.parent, n } function m(e) { return r.find(e.edges(), (function (t) { return e.edge(t).cutvalue < 0 })) } function g(e, t, n) { var i = n.v, a = n.w; t.hasEdge(i, a) || (i = n.w, a = n.v); var s = e.node(i), c = e.node(a), l = s, u = !1; s.lim > c.lim && (l = c, u = !0); var h = r.filter(t.edges(), (function (t) { return u === w(e, e.node(t.v), l) && u !== w(e, e.node(t.w), l) })); return r.minBy(h, (function (e) { return o(t, e) })) } function y(e, t, n, r) { var i = n.v, o = n.w; e.removeEdge(i, o), e.setEdge(r.v, r.w, {}), p(e), h(e, t), b(e, t) } function b(e, t) { var n = r.find(e.nodes(), (function (e) { return !t.node(e).parent })), i = s(e, n); i = i.slice(1), r.forEach(i, (function (n) { var r = e.node(n).parent, i = t.edge(n, r), o = !1; i || (i = t.edge(r, n), o = !0), t.node(n).rank = t.node(r).rank + (o ? i.minlen : -i.minlen) })) } function x(e, t, n) { return e.hasEdge(t, n) } function w(e, t, n) { return n.low <= t.lim && t.lim <= n.lim } e.exports = u, u.initLowLimValues = p, u.initCutValues = h, u.calcCutValue = d, u.leaveEdge = m, u.enterEdge = g, u.exchangeEdges = y }, function (e, t, n) { var r = n(8); function i(e) { var t = a(e); r.forEach(e.graph().dummyChains, (function (n) { var r = e.node(n), i = r.edgeObj, a = o(e, t, i.v, i.w), s = a.path, c = a.lca, l = 0, u = s[l], h = !0; while (n !== i.w) { if (r = e.node(n), h) { while ((u = s[l]) !== c && e.node(u).maxRank < r.rank) l++; u === c && (h = !1) } if (!h) { while (l < s.length - 1 && e.node(u = s[l + 1]).minRank <= r.rank) l++; u = s[l] } e.setParent(n, u), n = e.successors(n)[0] } })) } function o(e, t, n, r) { var i, o, a = [], s = [], c = Math.min(t[n].low, t[r].low), l = Math.max(t[n].lim, t[r].lim); i = n; do { i = e.parent(i), a.push(i) } while (i && (t[i].low > c || l > t[i].lim)); o = i, i = r; while ((i = e.parent(i)) !== o) s.push(i); return { path: a.concat(s.reverse()), lca: o } } function a(e) { var t = {}, n = 0; function i(o) { var a = n; r.forEach(e.children(o), i), t[o] = { low: a, lim: n++ } } return r.forEach(e.children(), i), t } e.exports = i }, function (e, t, n) { var r = n(8), i = n(12); function o(e) { var t = i.addDummyNode(e, "root", {}, "_root"), n = s(e), o = r.max(r.values(n)) - 1, l = 2 * o + 1; e.graph().nestingRoot = t, r.forEach(e.edges(), (function (t) { e.edge(t).minlen *= l })); var u = c(e) + 1; r.forEach(e.children(), (function (r) { a(e, t, l, u, o, n, r) })), e.graph().nodeRankFactor = l } function a(e, t, n, o, s, c, l) { var u = e.children(l); if (u.length) { var h = i.addBorderNode(e, "_bt"), f = i.addBorderNode(e, "_bb"), d = e.node(l); e.setParent(h, l), d.borderTop = h, e.setParent(f, l), d.borderBottom = f, r.forEach(u, (function (r) { a(e, t, n, o, s, c, r); var i = e.node(r), u = i.borderTop ? i.borderTop : r, d = i.borderBottom ? i.borderBottom : r, p = i.borderTop ? o : 2 * o, v = u !== d ? 1 : s - c[l] + 1; e.setEdge(h, u, { weight: p, minlen: v, nestingEdge: !0 }), e.setEdge(d, f, { weight: p, minlen: v, nestingEdge: !0 }) })), e.parent(l) || e.setEdge(t, h, { weight: 0, minlen: s + c[l] }) } else l !== t && e.setEdge(t, l, { weight: 0, minlen: n }) } function s(e) { var t = {}; function n(i, o) { var a = e.children(i); a && a.length && r.forEach(a, (function (e) { n(e, o + 1) })), t[i] = o } return r.forEach(e.children(), (function (e) { n(e, 1) })), t } function c(e) { return r.reduce(e.edges(), (function (t, n) { return t + e.edge(n).weight }), 0) } function l(e) { var t = e.graph(); e.removeNode(t.nestingRoot), delete t.nestingRoot, r.forEach(e.edges(), (function (t) { var n = e.edge(t); n.nestingEdge && e.removeEdge(t) })) } e.exports = { run: o, cleanup: l } }, function (e, t, n) { var r = n(8), i = n(12); function o(e) { function t(n) { var i = e.children(n), o = e.node(n); if (i.length && r.forEach(i, t), r.has(o, "minRank")) { o.borderLeft = [], o.borderRight = []; for (var s = o.minRank, c = o.maxRank + 1; s < c; ++s)a(e, "borderLeft", "_bl", n, o, s), a(e, "borderRight", "_br", n, o, s) } } r.forEach(e.children(), t) } function a(e, t, n, r, o, a) { var s = { width: 0, height: 0, rank: a, borderType: t }, c = o[t][a - 1], l = i.addDummyNode(e, "border", s, n); o[t][a] = l, e.setParent(l, r), c && e.setEdge(c, l, { weight: 1 }) } e.exports = o }, function (e, t, n) { "use strict"; var r = n(8); function i(e) { var t = e.graph().rankdir.toLowerCase(); "lr" !== t && "rl" !== t || a(e) } function o(e) { var t = e.graph().rankdir.toLowerCase(); "bt" !== t && "rl" !== t || c(e), "lr" !== t && "rl" !== t || (u(e), a(e)) } function a(e) { r.forEach(e.nodes(), (function (t) { s(e.node(t)) })), r.forEach(e.edges(), (function (t) { s(e.edge(t)) })) } function s(e) { var t = e.width; e.width = e.height, e.height = t } function c(e) { r.forEach(e.nodes(), (function (t) { l(e.node(t)) })), r.forEach(e.edges(), (function (t) { var n = e.edge(t); r.forEach(n.points, l), r.has(n, "y") && l(n) })) } function l(e) { e.y = -e.y } function u(e) { r.forEach(e.nodes(), (function (t) { h(e.node(t)) })), r.forEach(e.edges(), (function (t) { var n = e.edge(t); r.forEach(n.points, h), r.has(n, "x") && h(n) })) } function h(e) { var t = e.x; e.x = e.y, e.y = t } e.exports = { adjust: i, undo: o } }, function (e, t, n) { "use strict"; var r = n(8), i = n(460), o = n(461), a = n(462), s = n(466), c = n(467), l = n(16).Graph, u = n(12); function h(e) { var t = u.maxRank(e), n = f(e, r.range(1, t + 1), "inEdges"), a = f(e, r.range(t - 1, -1, -1), "outEdges"), s = i(e); p(e, s); for (var c, l = Number.POSITIVE_INFINITY, h = 0, v = 0; v < 4; ++h, ++v) { d(h % 2 ? n : a, h % 4 >= 2), s = u.buildLayerMatrix(e); var m = o(e, s); m < l && (v = 0, c = r.cloneDeep(s), l = m) } p(e, c) } function f(e, t, n) { return r.map(t, (function (t) { return s(e, t, n) })) } function d(e, t) { var n = new l; r.forEach(e, (function (e) { var i = e.graph().root, o = a(e, i, n, t); r.forEach(o.vs, (function (t, n) { e.node(t).order = n })), c(e, n, o.vs) })) } function p(e, t) { r.forEach(t, (function (t) { r.forEach(t, (function (t, n) { e.node(t).order = n })) })) } e.exports = h }, function (e, t, n) { "use strict"; var r = n(8); function i(e) { var t = {}, n = r.filter(e.nodes(), (function (t) { return !e.children(t).length })), i = r.max(r.map(n, (function (t) { return e.node(t).rank }))), o = r.map(r.range(i + 1), (function () { return [] })); function a(n) { if (!r.has(t, n)) { t[n] = !0; var i = e.node(n); o[i.rank].push(n), r.forEach(e.successors(n), a) } } var s = r.sortBy(n, (function (t) { return e.node(t).rank })); return r.forEach(s, a), o } e.exports = i }, function (e, t, n) { "use strict"; var r = n(8); function i(e, t) { for (var n = 0, r = 1; r < t.length; ++r)n += o(e, t[r - 1], t[r]); return n } function o(e, t, n) { var i = r.zipObject(n, r.map(n, (function (e, t) { return t }))), o = r.flatten(r.map(t, (function (t) { return r.chain(e.outEdges(t)).map((function (t) { return { pos: i[t.w], weight: e.edge(t).weight } })).sortBy("pos").value() })), !0), a = 1; while (a < n.length) a <<= 1; var s = 2 * a - 1; a -= 1; var c = r.map(new Array(s), (function () { return 0 })), l = 0; return r.forEach(o.forEach((function (e) { var t = e.pos + a; c[t] += e.weight; var n = 0; while (t > 0) t % 2 && (n += c[t + 1]), t = t - 1 >> 1, c[t] += e.weight; l += e.weight * n }))), l } e.exports = i }, function (e, t, n) { var r = n(8), i = n(463), o = n(464), a = n(465); function s(e, t, n, u) { var h = e.children(t), f = e.node(t), d = f ? f.borderLeft : void 0, p = f ? f.borderRight : void 0, v = {}; d && (h = r.filter(h, (function (e) { return e !== d && e !== p }))); var m = i(e, h); r.forEach(m, (function (t) { if (e.children(t.v).length) { var i = s(e, t.v, n, u); v[t.v] = i, r.has(i, "barycenter") && l(t, i) } })); var g = o(m, n); c(g, v); var y = a(g, u); if (d && (y.vs = r.flatten([d, y.vs, p], !0), e.predecessors(d).length)) { var b = e.node(e.predecessors(d)[0]), x = e.node(e.predecessors(p)[0]); r.has(y, "barycenter") || (y.barycenter = 0, y.weight = 0), y.barycenter = (y.barycenter * y.weight + b.order + x.order) / (y.weight + 2), y.weight += 2 } return y } function c(e, t) { r.forEach(e, (function (e) { e.vs = r.flatten(e.vs.map((function (e) { return t[e] ? t[e].vs : e })), !0) })) } function l(e, t) { r.isUndefined(e.barycenter) ? (e.barycenter = t.barycenter, e.weight = t.weight) : (e.barycenter = (e.barycenter * e.weight + t.barycenter * t.weight) / (e.weight + t.weight), e.weight += t.weight) } e.exports = s }, function (e, t, n) { var r = n(8); function i(e, t) { return r.map(t, (function (t) { var n = e.inEdges(t); if (n.length) { var i = r.reduce(n, (function (t, n) { var r = e.edge(n), i = e.node(n.v); return { sum: t.sum + r.weight * i.order, weight: t.weight + r.weight } }), { sum: 0, weight: 0 }); return { v: t, barycenter: i.sum / i.weight, weight: i.weight } } return { v: t } })) } e.exports = i }, function (e, t, n) { "use strict"; var r = n(8); function i(e, t) { var n = {}; r.forEach(e, (function (e, t) { var i = n[e.v] = { indegree: 0, in: [], out: [], vs: [e.v], i: t }; r.isUndefined(e.barycenter) || (i.barycenter = e.barycenter, i.weight = e.weight) })), r.forEach(t.edges(), (function (e) { var t = n[e.v], i = n[e.w]; r.isUndefined(t) || r.isUndefined(i) || (i.indegree++, t.out.push(n[e.w])) })); var i = r.filter(n, (function (e) { return !e.indegree })); return o(i) } function o(e) { var t = []; function n(e) { return function (t) { t.merged || (r.isUndefined(t.barycenter) || r.isUndefined(e.barycenter) || t.barycenter >= e.barycenter) && a(e, t) } } function i(t) { return function (n) { n["in"].push(t), 0 === --n.indegree && e.push(n) } } while (e.length) { var o = e.pop(); t.push(o), r.forEach(o["in"].reverse(), n(o)), r.forEach(o.out, i(o)) } return r.chain(t).filter((function (e) { return !e.merged })).map((function (e) { return r.pick(e, ["vs", "i", "barycenter", "weight"]) })).value() } function a(e, t) { var n = 0, r = 0; e.weight && (n += e.barycenter * e.weight, r += e.weight), t.weight && (n += t.barycenter * t.weight, r += t.weight), e.vs = t.vs.concat(e.vs), e.barycenter = n / r, e.weight = r, e.i = Math.min(t.i, e.i), t.merged = !0 } e.exports = i }, function (e, t, n) { var r = n(8), i = n(12); function o(e, t) { var n = i.partition(e, (function (e) { return r.has(e, "barycenter") })), o = n.lhs, c = r.sortBy(n.rhs, (function (e) { return -e.i })), l = [], u = 0, h = 0, f = 0; o.sort(s(!!t)), f = a(l, c, f), r.forEach(o, (function (e) { f += e.vs.length, l.push(e.vs), u += e.barycenter * e.weight, h += e.weight, f = a(l, c, f) })); var d = { vs: r.flatten(l, !0) }; return h && (d.barycenter = u / h, d.weight = h), d } function a(e, t, n) { var i; while (t.length && (i = r.last(t)).i <= n) t.pop(), e.push(i.vs), n++; return n } function s(e) { return function (t, n) { return t.barycenter < n.barycenter ? -1 : t.barycenter > n.barycenter ? 1 : e ? n.i - t.i : t.i - n.i } } e.exports = o }, function (e, t, n) { var r = n(8), i = n(16).Graph; function o(e, t, n) { var o = a(e), s = new i({ compound: !0 }).setGraph({ root: o }).setDefaultNodeLabel((function (t) { return e.node(t) })); return r.forEach(e.nodes(), (function (i) { var a = e.node(i), c = e.parent(i); (a.rank === t || a.minRank <= t && t <= a.maxRank) && (s.setNode(i), s.setParent(i, c || o), r.forEach(e[n](i), (function (t) { var n = t.v === i ? t.w : t.v, o = s.edge(n, i), a = r.isUndefined(o) ? 0 : o.weight; s.setEdge(n, i, { weight: e.edge(t).weight + a }) })), r.has(a, "minRank") && s.setNode(i, { borderLeft: a.borderLeft[t], borderRight: a.borderRight[t] })) })), s } function a(e) { var t; while (e.hasNode(t = r.uniqueId("_root"))); return t } e.exports = o }, function (e, t, n) { var r = n(8); function i(e, t, n) { var i, o = {}; r.forEach(n, (function (n) { var r, a, s = e.parent(n); while (s) { if (r = e.parent(s), r ? (a = o[r], o[r] = s) : (a = i, i = s), a && a !== s) return void t.setEdge(a, s); s = r } })) } e.exports = i }, function (e, t, n) { "use strict"; var r = n(8), i = n(12), o = n(469).positionX; function a(e) { e = i.asNonCompoundGraph(e), s(e), r.forEach(o(e), (function (t, n) { e.node(n).x = t })) } function s(e) { var t = i.buildLayerMatrix(e), n = e.graph().ranksep, o = 0; r.forEach(t, (function (t) { var i = r.max(r.map(t, (function (t) { return e.node(t).height }))); r.forEach(t, (function (t) { e.node(t).y = o + i / 2 })), o += i + n })) } e.exports = a }, function (e, t, n) { "use strict"; var r = n(8), i = n(16).Graph, o = n(12); function a(e, t) { var n = {}; function i(t, i) { var o = 0, a = 0, s = t.length, u = r.last(i); return r.forEach(i, (function (t, h) { var f = c(e, t), d = f ? e.node(f).order : s; (f || t === u) && (r.forEach(i.slice(a, h + 1), (function (t) { r.forEach(e.predecessors(t), (function (r) { var i = e.node(r), a = i.order; !(a < o || d < a) || i.dummy && e.node(t).dummy || l(n, r, t) })) })), a = h + 1, o = d) })), i } return r.reduce(t, i), n } function s(e, t) { var n = {}; function i(t, i, o, a, s) { var c; r.forEach(r.range(i, o), (function (i) { c = t[i], e.node(c).dummy && r.forEach(e.predecessors(c), (function (t) { var r = e.node(t); r.dummy && (r.order < a || r.order > s) && l(n, t, c) })) })) } function o(t, n) { var o, a = -1, s = 0; return r.forEach(n, (function (r, c) { if ("border" === e.node(r).dummy) { var l = e.predecessors(r); l.length && (o = e.node(l[0]).order, i(n, s, c, a, o), s = c, a = o) } i(n, s, n.length, o, t.length) })), n } return r.reduce(t, o), n } function c(e, t) { if (e.node(t).dummy) return r.find(e.predecessors(t), (function (t) { return e.node(t).dummy })) } function l(e, t, n) { if (t > n) { var r = t; t = n, n = r } var i = e[t]; i || (e[t] = i = {}), i[n] = !0 } function u(e, t, n) { if (t > n) { var i = t; t = n, n = i } return r.has(e[t], n) } function h(e, t, n, i) { var o = {}, a = {}, s = {}; return r.forEach(t, (function (e) { r.forEach(e, (function (e, t) { o[e] = e, a[e] = e, s[e] = t })) })), r.forEach(t, (function (e) { var t = -1; r.forEach(e, (function (e) { var c = i(e); if (c.length) { c = r.sortBy(c, (function (e) { return s[e] })); for (var l = (c.length - 1) / 2, h = Math.floor(l), f = Math.ceil(l); h <= f; ++h) { var d = c[h]; a[e] === e && t < s[d] && !u(n, e, d) && (a[d] = e, a[e] = o[e] = o[d], t = s[d]) } } })) })), { root: o, align: a } } function f(e, t, n, i, o) { var a = {}, s = d(e, t, n, o), c = o ? "borderLeft" : "borderRight"; function l(e, t) { var n = s.nodes(), r = n.pop(), i = {}; while (r) i[r] ? e(r) : (i[r] = !0, n.push(r), n = n.concat(t(r))), r = n.pop() } function u(e) { a[e] = s.inEdges(e).reduce((function (e, t) { return Math.max(e, a[t.v] + s.edge(t)) }), 0) } function h(t) { var n = s.outEdges(t).reduce((function (e, t) { return Math.min(e, a[t.w] - s.edge(t)) }), Number.POSITIVE_INFINITY), r = e.node(t); n !== Number.POSITIVE_INFINITY && r.borderType !== c && (a[t] = Math.max(a[t], n)) } return l(u, r.bind(s.predecessors, s)), l(h, r.bind(s.successors, s)), r.forEach(i, (function (e) { a[e] = a[n[e]] })), a } function d(e, t, n, o) { var a = new i, s = e.graph(), c = y(s.nodesep, s.edgesep, o); return r.forEach(t, (function (t) { var i; r.forEach(t, (function (t) { var r = n[t]; if (a.setNode(r), i) { var o = n[i], s = a.edge(o, r); a.setEdge(o, r, Math.max(c(e, t, i), s || 0)) } i = t })) })), a } function p(e, t) { return r.minBy(r.values(t), (function (t) { var n = Number.NEGATIVE_INFINITY, i = Number.POSITIVE_INFINITY; return r.forIn(t, (function (t, r) { var o = b(e, r) / 2; n = Math.max(t + o, n), i = Math.min(t - o, i) })), n - i })) } function v(e, t) { var n = r.values(t), i = r.min(n), o = r.max(n); r.forEach(["u", "d"], (function (n) { r.forEach(["l", "r"], (function (a) { var s, c = n + a, l = e[c]; if (l !== t) { var u = r.values(l); s = "l" === a ? i - r.min(u) : o - r.max(u), s && (e[c] = r.mapValues(l, (function (e) { return e + s }))) } })) })) } function m(e, t) { return r.mapValues(e.ul, (function (n, i) { if (t) return e[t.toLowerCase()][i]; var o = r.sortBy(r.map(e, i)); return (o[1] + o[2]) / 2 })) } function g(e) { var t, n = o.buildLayerMatrix(e), i = r.merge(a(e, n), s(e, n)), c = {}; r.forEach(["u", "d"], (function (o) { t = "u" === o ? n : r.values(n).reverse(), r.forEach(["l", "r"], (function (n) { "r" === n && (t = r.map(t, (function (e) { return r.values(e).reverse() }))); var a = r.bind("u" === o ? e.predecessors : e.successors, e), s = h(e, t, i, a), l = f(e, t, s.root, s.align, "r" === n); "r" === n && (l = r.mapValues(l, (function (e) { return -e }))), c[o + n] = l })) })); var l = p(e, c); return v(c, l), m(c, e.graph().align) } function y(e, t, n) { return function (i, o, a) { var s, c = i.node(o), l = i.node(a), u = 0; if (u += c.width / 2, r.has(c, "labelpos")) switch (c.labelpos.toLowerCase()) { case "l": s = -c.width / 2; break; case "r": s = c.width / 2; break }if (s && (u += n ? s : -s), s = 0, u += (c.dummy ? t : e) / 2, u += (l.dummy ? t : e) / 2, u += l.width / 2, r.has(l, "labelpos")) switch (l.labelpos.toLowerCase()) { case "l": s = l.width / 2; break; case "r": s = -l.width / 2; break }return s && (u += n ? s : -s), s = 0, u } } function b(e, t) { return e.node(t).width } e.exports = { positionX: g, findType1Conflicts: a, findType2Conflicts: s, addConflict: l, hasConflict: u, verticalAlignment: h, horizontalCompaction: f, alignCoordinates: v, findSmallestWidthAlignment: p, balance: m } }, function (e, t, n) { var r = n(8), i = n(12), o = n(16).Graph; function a(e) { var t = i.buildLayerMatrix(e), n = new o({ compound: !0, multigraph: !0 }).setGraph({}); return r.forEach(e.nodes(), (function (t) { n.setNode(t, { label: t }), n.setParent(t, "layer" + e.node(t).rank) })), r.forEach(e.edges(), (function (e) { n.setEdge(e.v, e.w, {}, e.name) })), r.forEach(t, (function (e, t) { var i = "layer" + t; n.setNode(i, { rank: "same" }), r.reduce(e, (function (e, t) { return n.setEdge(e, t, { style: "invis" }), t })) })), n } e.exports = { debugOrdering: a } }, function (e, t) { e.exports = "0.8.2" }, function (e, t, n) { var r = n(3), i = n(10), o = n(11), a = n(473), s = a.sankey, c = a.sankeyLeft, l = a.sankeyRight, u = a.sankeyCenter, h = a.sankeyJustify, f = n(2), d = f.registerTransform, p = { sankeyLeft: c, sankeyRight: l, sankeyCenter: u, sankeyJustify: h }, v = { value: function (e) { return e.value }, source: function (e) { return e.source }, target: function (e) { return e.target }, nodeAlign: "sankeyJustify", nodeWidth: .02, nodePadding: .02 }; function m(e, t) { t = r({}, v, t); var n = null; i(t.nodeAlign) ? n = p[t.nodeAlign] : o(t.nodeAlign) && (n = t.nodeAlign); var a = s().links((function (e) { return e.edges })).nodeWidth(t.nodeWidth).nodePadding(t.nodePadding).extent([[0, 0], [1, 1]]); o(t.nodeId) && a.nodeId(t.nodeId), n && a.nodeAlign(n), a(e), e.nodes.forEach((function (e) { var t = e.x0, n = e.x1, r = e.y0, i = e.y1; e.x = [t, n, n, t], e.y = [r, r, i, i] })), e.edges.forEach((function (e) { var t = e.source, n = e.target, r = t.x1, i = n.x0; e.x = [r, r, i, i]; var o = e.width / 2; e.y = [e.y0 + o, e.y0 - o, e.y1 + o, e.y1 - o] })) } d("diagram.sankey", m), d("sankey", m) }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(474); n.d(t, "sankey", (function () { return r["a"] })); var i = n(176); n.d(t, "sankeyCenter", (function () { return i["a"] })), n.d(t, "sankeyLeft", (function () { return i["c"] })), n.d(t, "sankeyRight", (function () { return i["d"] })), n.d(t, "sankeyJustify", (function () { return i["b"] })); var o = n(482); n.d(t, "sankeyLinkHorizontal", (function () { return o["a"] })) }, function (e, t, n) { "use strict"; var r = n(14), i = n(475), o = n(176), a = n(481); function s(e, t) { return l(e.source, t.source) || e.index - t.index } function c(e, t) { return l(e.target, t.target) || e.index - t.index } function l(e, t) { return e.y0 - t.y0 } function u(e) { return e.value } function h(e) { return (e.y0 + e.y1) / 2 } function f(e) { return h(e.source) * e.value } function d(e) { return h(e.target) * e.value } function p(e) { return e.index } function v(e) { return e.nodes } function m(e) { return e.links } function g(e, t) { var n = e.get(t); if (!n) throw new Error("missing: " + t); return n } t["a"] = function () { var e = 0, t = 0, n = 1, y = 1, b = 24, x = 8, w = p, _ = o["b"], C = v, M = m, O = 32; function k() { var e = { nodes: C.apply(null, arguments), links: M.apply(null, arguments) }; return S(e), T(e), A(e), L(e, O), j(e), e } function S(e) { e.nodes.forEach((function (e, t) { e.index = t, e.sourceLinks = [], e.targetLinks = [] })); var t = Object(i["a"])(e.nodes, w); e.links.forEach((function (e, n) { e.index = n; var r = e.source, i = e.target; "object" !== typeof r && (r = e.source = g(t, r)), "object" !== typeof i && (i = e.target = g(t, i)), r.sourceLinks.push(e), i.targetLinks.push(e) })) } function T(e) { e.nodes.forEach((function (e) { e.value = Math.max(Object(r["sum"])(e.sourceLinks, u), Object(r["sum"])(e.targetLinks, u)) })) } function A(t) { var r, i, o; for (r = t.nodes, i = [], o = 0; r.length; ++o, r = i, i = [])r.forEach((function (e) { e.depth = o, e.sourceLinks.forEach((function (e) { i.indexOf(e.target) < 0 && i.push(e.target) })) })); for (r = t.nodes, i = [], o = 0; r.length; ++o, r = i, i = [])r.forEach((function (e) { e.height = o, e.targetLinks.forEach((function (e) { i.indexOf(e.source) < 0 && i.push(e.source) })) })); var a = (n - e - b) / (o - 1); t.nodes.forEach((function (t) { t.x1 = (t.x0 = e + Math.max(0, Math.min(o - 1, Math.floor(_.call(null, t, o)))) * a) + b })) } function L(e) { var n = Object(i["b"])().key((function (e) { return e.x0 })).sortKeys(r["ascending"]).entries(e.nodes).map((function (e) { return e.values })); s(), v(); for (var o = 1, a = O; a > 0; --a)p(o *= .99), v(), c(o), v(); function s() { var i = Object(r["min"])(n, (function (e) { return (y - t - (e.length - 1) * x) / Object(r["sum"])(e, u) })); n.forEach((function (e) { e.forEach((function (e, t) { e.y1 = (e.y0 = t) + e.value * i })) })), e.links.forEach((function (e) { e.width = e.value * i })) } function c(e) { n.forEach((function (t) { t.forEach((function (t) { if (t.targetLinks.length) { var n = (Object(r["sum"])(t.targetLinks, f) / Object(r["sum"])(t.targetLinks, u) - h(t)) * e; t.y0 += n, t.y1 += n } })) })) } function p(e) { n.slice().reverse().forEach((function (t) { t.forEach((function (t) { if (t.sourceLinks.length) { var n = (Object(r["sum"])(t.sourceLinks, d) / Object(r["sum"])(t.sourceLinks, u) - h(t)) * e; t.y0 += n, t.y1 += n } })) })) } function v() { n.forEach((function (e) { var n, r, i, o = t, a = e.length; for (e.sort(l), i = 0; i < a; ++i)n = e[i], r = o - n.y0, r > 0 && (n.y0 += r, n.y1 += r), o = n.y1 + x; if (r = o - x - y, r > 0) for (o = n.y0 -= r, n.y1 -= r, i = a - 2; i >= 0; --i)n = e[i], r = n.y1 + x - o, r > 0 && (n.y0 -= r, n.y1 -= r), o = n.y0 })) } } function j(e) { e.nodes.forEach((function (e) { e.sourceLinks.sort(c), e.targetLinks.sort(s) })), e.nodes.forEach((function (e) { var t = e.y0, n = t; e.sourceLinks.forEach((function (e) { e.y0 = t + e.width / 2, t += e.width })), e.targetLinks.forEach((function (e) { e.y1 = n + e.width / 2, n += e.width })) })) } return k.update = function (e) { return j(e), e }, k.nodeId = function (e) { return arguments.length ? (w = "function" === typeof e ? e : Object(a["a"])(e), k) : w }, k.nodeAlign = function (e) { return arguments.length ? (_ = "function" === typeof e ? e : Object(a["a"])(e), k) : _ }, k.nodeWidth = function (e) { return arguments.length ? (b = +e, k) : b }, k.nodePadding = function (e) { return arguments.length ? (x = +e, k) : x }, k.nodes = function (e) { return arguments.length ? (C = "function" === typeof e ? e : Object(a["a"])(e), k) : C }, k.links = function (e) { return arguments.length ? (M = "function" === typeof e ? e : Object(a["a"])(e), k) : M }, k.size = function (r) { return arguments.length ? (e = t = 0, n = +r[0], y = +r[1], k) : [n - e, y - t] }, k.extent = function (r) { return arguments.length ? (e = +r[0][0], n = +r[1][0], t = +r[0][1], y = +r[1][1], k) : [[e, t], [n, y]] }, k.iterations = function (e) { return arguments.length ? (O = +e, k) : O }, k } }, function (e, t, n) { "use strict"; var r = n(476); n.d(t, "b", (function () { return r["a"] })); n(477); var i = n(94); n.d(t, "a", (function () { return i["a"] })); n(478), n(479), n(480) }, function (e, t, n) { "use strict"; var r = n(94); function i() { return {} } function o(e, t, n) { e[t] = n } function a() { return Object(r["a"])() } function s(e, t, n) { e.set(t, n) } t["a"] = function () { var e, t, n, c = [], l = []; function u(n, i, o, a) { if (i >= c.length) return null != e && n.sort(e), null != t ? t(n) : n; var s, l, h, f = -1, d = n.length, p = c[i++], v = Object(r["a"])(), m = o(); while (++f < d) (h = v.get(s = p(l = n[f]) + "")) ? h.push(l) : v.set(s, [l]); return v.each((function (e, t) { a(m, t, u(e, i, o, a)) })), m } function h(e, n) { if (++n > c.length) return e; var r, i = l[n - 1]; return null != t && n >= c.length ? r = e.entries() : (r = [], e.each((function (e, t) { r.push({ key: t, values: h(e, n) }) }))), null != i ? r.sort((function (e, t) { return i(e.key, t.key) })) : r } return n = { object: function (e) { return u(e, 0, i, o) }, map: function (e) { return u(e, 0, a, s) }, entries: function (e) { return h(u(e, 0, a, s), 0) }, key: function (e) { return c.push(e), n }, sortKeys: function (e) { return l[c.length - 1] = e, n }, sortValues: function (t) { return e = t, n }, rollup: function (e) { return t = e, n } } } }, function (e, t, n) { "use strict"; var r = n(94); function i() { } var o = r["a"].prototype; function a(e, t) { var n = new i; if (e instanceof i) e.each((function (e) { n.add(e) })); else if (e) { var r = -1, o = e.length; if (null == t) while (++r < o) n.add(e[r]); else while (++r < o) n.add(t(e[r], r, e)) } return n } i.prototype = a.prototype = { constructor: i, has: o.has, add: function (e) { return e += "", this[r["b"] + e] = e, this }, remove: o.remove, clear: o.clear, values: o.keys, size: o.size, empty: o.empty, each: o.each } }, function (e, t, n) { "use strict" }, function (e, t, n) { "use strict" }, function (e, t, n) { "use strict" }, function (e, t, n) { "use strict"; function r(e) { return function () { return e } } t["a"] = r }, function (e, t, n) { "use strict"; var r = n(483); function i(e) { return [e.source.x1, e.y0] } function o(e) { return [e.target.x0, e.y1] } t["a"] = function () { return Object(r["a"])().source(i).target(o) } }, function (e, t, n) { "use strict"; n(484), n(177), n(95), n(485), n(488), n(179), n(180); var r = n(489); n.d(t, "a", (function () { return r["a"] })); n(490), n(182), n(183), n(184), n(186), n(185), n(187), n(188), n(491), n(492), n(62), n(493), n(189), n(190), n(63), n(494), n(495), n(97), n(496), n(60), n(497), n(498), n(499), n(500), n(501), n(502), n(47), n(503), n(504), n(98), n(505), n(506), n(48), n(507) }, function (e, t, n) { "use strict"; n(33), n(27), n(46) }, function (e, t, n) { "use strict"; n(27), n(486), n(487), n(46) }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { return t < e ? -1 : t > e ? 1 : t >= e ? 0 : NaN } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return e } }, function (e, t, n) { "use strict"; n(178), n(177), n(179) }, function (e, t, n) { "use strict"; t["a"] = h; var r = n(33), i = n(181), o = n(27), a = n(96); n(180); function s(e) { return e.source } function c(e) { return e.target } function l(e) { var t = s, n = c, l = a["a"], u = a["b"], h = null; function f() { var o, a = i["a"].call(arguments), s = t.apply(this, a), c = n.apply(this, a); if (h || (h = o = Object(r["path"])()), e(h, +l.apply(this, (a[0] = s, a)), +u.apply(this, a), +l.apply(this, (a[0] = c, a)), +u.apply(this, a)), o) return h = null, o + "" || null } return f.source = function (e) { return arguments.length ? (t = e, f) : t }, f.target = function (e) { return arguments.length ? (n = e, f) : n }, f.x = function (e) { return arguments.length ? (l = "function" === typeof e ? e : Object(o["a"])(+e), f) : l }, f.y = function (e) { return arguments.length ? (u = "function" === typeof e ? e : Object(o["a"])(+e), f) : u }, f.context = function (e) { return arguments.length ? (h = null == e ? null : e, f) : h }, f } function u(e, t, n, r, i) { e.moveTo(t, n), e.bezierCurveTo(t = (t + r) / 2, n, t, i, r, i) } function h() { return l(u) } }, function (e, t, n) { "use strict"; n(33); var r = n(182), i = n(183), o = n(184), a = n(185), s = n(186), c = n(187), l = n(188); n(27), r["a"], i["a"], o["a"], s["a"], a["a"], c["a"], l["a"] }, function (e, t, n) { "use strict"; var r = n(61), i = n(62); function o(e) { this._context = e } o.prototype = { areaStart: r["a"], areaEnd: r["a"], lineStart: function () { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 1: this._context.moveTo(this._x2, this._y2), this._context.closePath(); break; case 2: this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3), this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3), this._context.closePath(); break; case 3: this.point(this._x2, this._y2), this.point(this._x3, this._y3), this.point(this._x4, this._y4); break } }, point: function (e, t) { switch (e = +e, t = +t, this._point) { case 0: this._point = 1, this._x2 = e, this._y2 = t; break; case 1: this._point = 2, this._x3 = e, this._y3 = t; break; case 2: this._point = 3, this._x4 = e, this._y4 = t, this._context.moveTo((this._x0 + 4 * this._x1 + e) / 6, (this._y0 + 4 * this._y1 + t) / 6); break; default: Object(i["b"])(this, e, t); break }this._x0 = this._x1, this._x1 = e, this._y0 = this._y1, this._y1 = t } } }, function (e, t, n) { "use strict"; var r = n(62); function i(e) { this._context = e } i.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._y0 = this._y1 = NaN, this._point = 0 }, lineEnd: function () { (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (e, t) { switch (e = +e, t = +t, this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3; var n = (this._x0 + 4 * this._x1 + e) / 6, i = (this._y0 + 4 * this._y1 + t) / 6; this._line ? this._context.lineTo(n, i) : this._context.moveTo(n, i); break; case 3: this._point = 4; default: Object(r["b"])(this, e, t); break }this._x0 = this._x1, this._x1 = e, this._y0 = this._y1, this._y1 = t } } }, function (e, t, n) { "use strict"; var r = n(62); function i(e, t) { this._basis = new r["a"](e), this._beta = t } i.prototype = { lineStart: function () { this._x = [], this._y = [], this._basis.lineStart() }, lineEnd: function () { var e = this._x, t = this._y, n = e.length - 1; if (n > 0) { var r, i = e[0], o = t[0], a = e[n] - i, s = t[n] - o, c = -1; while (++c <= n) r = c / n, this._basis.point(this._beta * e[c] + (1 - this._beta) * (i + r * a), this._beta * t[c] + (1 - this._beta) * (o + r * s)) } this._x = this._y = null, this._basis.lineEnd() }, point: function (e, t) { this._x.push(+e), this._y.push(+t) } }; (function e(t) { function n(e) { return 1 === t ? new r["a"](e) : new i(e, t) } return n.beta = function (t) { return e(+t) }, n })(.85) }, function (e, t, n) { "use strict"; var r = n(189), i = n(61), o = n(97); function a(e, t) { this._context = e, this._alpha = t } a.prototype = { areaStart: i["a"], areaEnd: i["a"], lineStart: function () { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0 }, lineEnd: function () { switch (this._point) { case 1: this._context.moveTo(this._x3, this._y3), this._context.closePath(); break; case 2: this._context.lineTo(this._x3, this._y3), this._context.closePath(); break; case 3: this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5); break } }, point: function (e, t) { if (e = +e, t = +t, this._point) { var n = this._x2 - e, r = this._y2 - t; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(n * n + r * r, this._alpha)) } switch (this._point) { case 0: this._point = 1, this._x3 = e, this._y3 = t; break; case 1: this._point = 2, this._context.moveTo(this._x4 = e, this._y4 = t); break; case 2: this._point = 3, this._x5 = e, this._y5 = t; break; default: Object(o["a"])(this, e, t); break }this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = e, this._y0 = this._y1, this._y1 = this._y2, this._y2 = t } }; (function e(t) { function n(e) { return t ? new a(e, t) : new r["a"](e, 0) } return n.alpha = function (t) { return e(+t) }, n })(.5) }, function (e, t, n) { "use strict"; var r = n(190), i = n(97); function o(e, t) { this._context = e, this._alpha = t } o.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0 }, lineEnd: function () { (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (e, t) { if (e = +e, t = +t, this._point) { var n = this._x2 - e, r = this._y2 - t; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(n * n + r * r, this._alpha)) } switch (this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3, this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; case 3: this._point = 4; default: Object(i["a"])(this, e, t); break }this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = e, this._y0 = this._y1, this._y1 = this._y2, this._y2 = t } }; (function e(t) { function n(e) { return t ? new o(e, t) : new r["a"](e, 0) } return n.alpha = function (t) { return e(+t) }, n })(.5) }, function (e, t, n) { "use strict"; var r = n(61); function i(e) { this._context = e } i.prototype = { areaStart: r["a"], areaEnd: r["a"], lineStart: function () { this._point = 0 }, lineEnd: function () { this._point && this._context.closePath() }, point: function (e, t) { e = +e, t = +t, this._point ? this._context.lineTo(e, t) : (this._point = 1, this._context.moveTo(e, t)) } } }, function (e, t, n) { "use strict"; function r(e) { return e < 0 ? -1 : 1 } function i(e, t, n) { var i = e._x1 - e._x0, o = t - e._x1, a = (e._y1 - e._y0) / (i || o < 0 && -0), s = (n - e._y1) / (o || i < 0 && -0), c = (a * o + s * i) / (i + o); return (r(a) + r(s)) * Math.min(Math.abs(a), Math.abs(s), .5 * Math.abs(c)) || 0 } function o(e, t) { var n = e._x1 - e._x0; return n ? (3 * (e._y1 - e._y0) / n - t) / 2 : t } function a(e, t, n) { var r = e._x0, i = e._y0, o = e._x1, a = e._y1, s = (o - r) / 3; e._context.bezierCurveTo(r + s, i + s * t, o - s, a - s * n, o, a) } function s(e) { this._context = e } function c(e) { this._context = new l(e) } function l(e) { this._context = e } s.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 2: this._context.lineTo(this._x1, this._y1); break; case 3: a(this, this._t0, o(this, this._t0)); break }(this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (e, t) { var n = NaN; if (e = +e, t = +t, e !== this._x1 || t !== this._y1) { switch (this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(e, t) : this._context.moveTo(e, t); break; case 1: this._point = 2; break; case 2: this._point = 3, a(this, o(this, n = i(this, e, t)), n); break; default: a(this, this._t0, n = i(this, e, t)); break }this._x0 = this._x1, this._x1 = e, this._y0 = this._y1, this._y1 = t, this._t0 = n } } }, (c.prototype = Object.create(s.prototype)).point = function (e, t) { s.prototype.point.call(this, t, e) }, l.prototype = { moveTo: function (e, t) { this._context.moveTo(t, e) }, closePath: function () { this._context.closePath() }, lineTo: function (e, t) { this._context.lineTo(t, e) }, bezierCurveTo: function (e, t, n, r, i, o) { this._context.bezierCurveTo(t, e, r, n, o, i) } } }, function (e, t, n) { "use strict"; function r(e) { this._context = e } function i(e) { var t, n, r = e.length - 1, i = new Array(r), o = new Array(r), a = new Array(r); for (i[0] = 0, o[0] = 2, a[0] = e[0] + 2 * e[1], t = 1; t < r - 1; ++t)i[t] = 1, o[t] = 4, a[t] = 4 * e[t] + 2 * e[t + 1]; for (i[r - 1] = 2, o[r - 1] = 7, a[r - 1] = 8 * e[r - 1] + e[r], t = 1; t < r; ++t)n = i[t] / o[t - 1], o[t] -= n, a[t] -= n * a[t - 1]; for (i[r - 1] = a[r - 1] / o[r - 1], t = r - 2; t >= 0; --t)i[t] = (a[t] - i[t + 1]) / o[t]; for (o[r - 1] = (e[r] + i[r - 1]) / 2, t = 0; t < r - 1; ++t)o[t] = 2 * e[t + 1] - i[t + 1]; return [i, o] } r.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x = [], this._y = [] }, lineEnd: function () { var e = this._x, t = this._y, n = e.length; if (n) if (this._line ? this._context.lineTo(e[0], t[0]) : this._context.moveTo(e[0], t[0]), 2 === n) this._context.lineTo(e[1], t[1]); else for (var r = i(e), o = i(t), a = 0, s = 1; s < n; ++a, ++s)this._context.bezierCurveTo(r[0][a], o[0][a], r[1][a], o[1][a], e[s], t[s]); (this._line || 0 !== this._line && 1 === n) && this._context.closePath(), this._line = 1 - this._line, this._x = this._y = null }, point: function (e, t) { this._x.push(+e), this._y.push(+t) } } }, function (e, t, n) { "use strict"; function r(e, t) { this._context = e, this._t = t } r.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x = this._y = NaN, this._point = 0 }, lineEnd: function () { 0 < this._t && this._t < 1 && 2 === this._point && this._context.lineTo(this._x, this._y), (this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line >= 0 && (this._t = 1 - this._t, this._line = 1 - this._line) }, point: function (e, t) { switch (e = +e, t = +t, this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(e, t) : this._context.moveTo(e, t); break; case 1: this._point = 2; default: if (this._t <= 0) this._context.lineTo(this._x, t), this._context.lineTo(e, t); else { var n = this._x * (1 - this._t) + e * this._t; this._context.lineTo(n, this._y), this._context.lineTo(n, t) } break }this._x = e, this._y = t } } }, function (e, t, n) { "use strict"; n(181), n(27), n(47), n(48) }, function (e, t, n) { "use strict"; n(47) }, function (e, t, n) { "use strict" }, function (e, t, n) { "use strict"; n(47) }, function (e, t, n) { "use strict"; n(47) }, function (e, t, n) { "use strict"; n(98) }, function (e, t, n) { "use strict"; n(48), n(98) }, function (e, t, n) { "use strict"; n(48) }, function (e, t, n) { var r = n(3), i = n(509), o = n(6), a = n(2), s = a.registerTransform, c = n(7), l = c.getFields, u = { as: ["_x", "_y"] }; function h(e, t) { t = r({}, u, t); var n = t.as; if (!o(n) || 2 !== n.length) throw new TypeError("Invalid as: must be an array with two strings!"); var a = n[0], s = n[1], c = l(t); if (!o(c) && 2 !== c.length) throw new TypeError("Invalid fields: must be an array with two strings!"); var h = c[0], f = c[1], d = e.rows, p = d.map((function (e) { return [e[h], e[f]] })), v = i.voronoi(); t.extend && v.extent(t.extend), t.size && v.size(t.size); var m = v(p).polygons(); d.forEach((function (e, t) { var n = m[t].filter((function (e) { return !!e })); e[a] = n.map((function (e) { return e[0] })), e[s] = n.map((function (e) { return e[1] })) })) } s("diagram.voronoi", h), s("voronoi", h) }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(510); n.d(t, "voronoi", (function () { return r["a"] })) }, function (e, t, n) { "use strict"; var r = n(511), i = n(512), o = n(49); t["a"] = function () { var e = i["a"], t = i["b"], n = null; function a(r) { return new o["d"](r.map((function (n, i) { var a = [Math.round(e(n, i, r) / o["f"]) * o["f"], Math.round(t(n, i, r) / o["f"]) * o["f"]]; return a.index = i, a.data = n, a })), n) } return a.polygons = function (e) { return a(e).polygons() }, a.links = function (e) { return a(e).links() }, a.triangles = function (e) { return a(e).triangles() }, a.x = function (t) { return arguments.length ? (e = "function" === typeof t ? t : Object(r["a"])(+t), a) : e }, a.y = function (e) { return arguments.length ? (t = "function" === typeof e ? e : Object(r["a"])(+e), a) : t }, a.extent = function (e) { return arguments.length ? (n = null == e ? null : [[+e[0][0], +e[0][1]], [+e[1][0], +e[1][1]]], a) : n && [[n[0][0], n[0][1]], [n[1][0], n[1][1]]] }, a.size = function (e) { return arguments.length ? (n = null == e ? null : [[0, 0], [+e[0], +e[1]]], a) : n && [n[1][0] - n[0][0], n[1][1] - n[0][1]] }, a } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return function () { return e } } }, function (e, t, n) { "use strict"; function r(e) { return e[0] } function i(e) { return e[1] } t["a"] = r, t["b"] = i }, function (e, t, n) { "use strict"; t["b"] = f, t["a"] = d; var r = n(99), i = n(191), o = n(192), a = n(100), s = n(49), c = []; function l() { Object(r["a"])(this), this.edge = this.site = this.circle = null } function u(e) { var t = c.pop() || new l; return t.site = e, t } function h(e) { Object(o["b"])(e), s["a"].remove(e), c.push(e), Object(r["a"])(e) } function f(e) { var t = e.circle, n = t.x, r = t.cy, i = [n, r], c = e.P, l = e.N, u = [e]; h(e); var f = c; while (f.circle && Math.abs(n - f.circle.x) < s["f"] && Math.abs(r - f.circle.cy) < s["f"]) c = f.P, u.unshift(f), h(f), f = c; u.unshift(f), Object(o["b"])(f); var d = l; while (d.circle && Math.abs(n - d.circle.x) < s["f"] && Math.abs(r - d.circle.cy) < s["f"]) l = d.N, u.push(d), h(d), d = l; u.push(d), Object(o["b"])(d); var p, v = u.length; for (p = 1; p < v; ++p)d = u[p], f = u[p - 1], Object(a["d"])(d.edge, f.site, d.site, i); f = u[0], d = u[v - 1], d.edge = Object(a["c"])(f.site, d.site, null, i), Object(o["a"])(f), Object(o["a"])(d) } function d(e) { var t, n, r, c, l = e[0], h = e[1], f = s["a"]._; while (f) if (r = p(f, h) - l, r > s["f"]) f = f.L; else { if (c = l - v(f, h), !(c > s["f"])) { r > -s["f"] ? (t = f.P, n = f) : c > -s["f"] ? (t = f, n = f.N) : t = n = f; break } if (!f.R) { t = f; break } f = f.R } Object(i["c"])(e); var d = u(e); if (s["a"].insert(t, d), t || n) { if (t === n) return Object(o["b"])(t), n = u(t.site), s["a"].insert(d, n), d.edge = n.edge = Object(a["c"])(t.site, d.site), Object(o["a"])(t), void Object(o["a"])(n); if (n) { Object(o["b"])(t), Object(o["b"])(n); var m = t.site, g = m[0], y = m[1], b = e[0] - g, x = e[1] - y, w = n.site, _ = w[0] - g, C = w[1] - y, M = 2 * (b * C - x * _), O = b * b + x * x, k = _ * _ + C * C, S = [(C * O - x * k) / M + g, (b * k - _ * O) / M + y]; Object(a["d"])(n.edge, m, w, S), d.edge = Object(a["c"])(m, e, null, S), n.edge = Object(a["c"])(e, w, null, S), Object(o["a"])(t), Object(o["a"])(n) } else d.edge = Object(a["c"])(t.site, d.site) } } function p(e, t) { var n = e.site, r = n[0], i = n[1], o = i - t; if (!o) return r; var a = e.P; if (!a) return -1 / 0; n = a.site; var s = n[0], c = n[1], l = c - t; if (!l) return s; var u = s - r, h = 1 / o - 1 / l, f = u / l; return h ? (-f + Math.sqrt(f * f - 2 * h * (u * u / (-2 * l) - c + l / 2 + i - o / 2))) / h + r : (r + s) / 2 } function v(e, t) { var n = e.N; if (n) return p(n, t); var r = e.site; return r[1] === t ? r[0] : 1 / 0 } }, function (e, t, n) { var r = n(3), i = n(34), o = n(6), a = n(2), s = a.HIERARCHY, c = a.registerTransform, l = n(7), u = l.getField, h = { field: "value", size: [1, 1], nodeSize: null, separation: null, as: ["x", "y"] }; function f(e, t) { if (e.dataType !== s) throw new TypeError("Invalid DataView: This transform is for Hierarchy data only!"); var n = e.root; t = r({}, h, t); var a, c = t.as; if (!o(c) || 2 !== c.length) throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ "x", "y" ])!'); try { a = u(t) } catch (p) { console.warn(p) } a && n.sum((function (e) { return e[a] })); var l = i.cluster(); l.size(t.size), t.nodeSize && l.nodeSize(t.nodeSize), t.separation && l.separation(t.separation), l(n); var f = c[0], d = c[1]; n.each((function (e) { e[f] = e.x, e[d] = e.y })) } c("hierarchy.cluster", f), c("dendrogram", f) }, function (e, t, n) { var r = n(101), i = n(2), o = i.HIERARCHY, a = i.registerTransform, s = {}; function c(e, t) { var n = e.root; if (t = Object.assign({}, s, t), e.dataType !== o) throw new TypeError("Invalid DataView: This transform is for Hierarchy data only!"); e.root = r.compactBox(n, t) } a("hierarchy.compact-box", c), a("compact-box-tree", c), a("non-layered-tidy-tree", c), a("mindmap-logical", c) }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(64), o = n(517), a = n(102), s = n(28), c = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.execute = function () { var e = this; return a(e.rootNode, e.options, o) }, t }(i), l = {}; function u(e, t) { return t = s.assign({}, l, t), new c(e, t).execute() } e.exports = u }, function (e, t) { function n(e, t, n, r) { void 0 === r && (r = []); var i = this; i.w = e || 0, i.h = t || 0, i.y = n || 0, i.x = 0, i.c = r || [], i.cs = r.length, i.prelim = 0, i.mod = 0, i.shift = 0, i.change = 0, i.tl = null, i.tr = null, i.el = null, i.er = null, i.msel = 0, i.mser = 0 } function r(e, t, n) { n ? e.y += t : e.x += t, e.children.forEach((function (e) { r(e, t, n) })) } function i(e, t) { var n = t ? e.y : e.x; return e.children.forEach((function (e) { n = Math.min(i(e, t), n) })), n } function o(e, t) { var n = i(e, t); r(e, -n, t) } function a(e, t, n) { n ? t.y = e.x : t.x = e.x, e.c.forEach((function (e, r) { a(e, t.children[r], n) })) } function s(e, t, n) { void 0 === n && (n = 0), t ? (e.x = n, n += e.width) : (e.y = n, n += e.height), e.children.forEach((function (e) { s(e, t, n) })) } n.fromNode = function (e, t) { if (!e) return null; var r = []; return e.children.forEach((function (e) { r.push(n.fromNode(e, t)) })), t ? new n(e.height, e.width, e.x, r) : new n(e.width, e.height, e.y, r) }, e.exports = function (e, t) { void 0 === t && (t = {}); var r = t.isHorizontal; function i(e) { if (0 !== e.cs) { i(e.c[0]); for (var t = x(d(e.c[0].el), 0, null), n = 1; n < e.cs; ++n) { i(e.c[n]); var r = d(e.c[n].er); l(e, n, t), t = x(r, n, t) } m(e), c(e) } else c(e) } function c(e) { 0 === e.cs ? (e.el = e, e.er = e, e.msel = e.mser = 0) : (e.el = e.c[0].el, e.msel = e.c[0].msel, e.er = e.c[e.cs - 1].er, e.mser = e.c[e.cs - 1].mser) } function l(e, t, n) { var r = e.c[t - 1], i = r.mod, o = e.c[t], a = o.mod; while (null !== r && null !== o) { d(r) > n.low && (n = n.nxt); var s = i + r.prelim + r.w - (a + o.prelim); s > 0 && (a += s, u(e, t, n.index, s)); var c = d(r), l = d(o); c <= l && (r = f(r), null !== r && (i += r.mod)), c >= l && (o = h(o), null !== o && (a += o.mod)) } !r && o ? p(e, t, o, a) : r && !o && v(e, t, r, i) } function u(e, t, n, r) { e.c[t].mod += r, e.c[t].msel += r, e.c[t].mser += r, y(e, t, n, r) } function h(e) { return 0 === e.cs ? e.tl : e.c[0] } function f(e) { return 0 === e.cs ? e.tr : e.c[e.cs - 1] } function d(e) { return e.y + e.h } function p(e, t, n, r) { var i = e.c[0].el; i.tl = n; var o = r - n.mod - e.c[0].msel; i.mod += o, i.prelim -= o, e.c[0].el = e.c[t].el, e.c[0].msel = e.c[t].msel } function v(e, t, n, r) { var i = e.c[t].er; i.tr = n; var o = r - n.mod - e.c[t].mser; i.mod += o, i.prelim -= o, e.c[t].er = e.c[t - 1].er, e.c[t].mser = e.c[t - 1].mser } function m(e) { e.prelim = (e.c[0].prelim + e.c[0].mod + e.c[e.cs - 1].mod + e.c[e.cs - 1].prelim + e.c[e.cs - 1].w) / 2 - e.w / 2 } function g(e, t) { t += e.mod, e.x = e.prelim + t, b(e); for (var n = 0; n < e.cs; n++)g(e.c[n], t) } function y(e, t, n, r) { if (n !== t - 1) { var i = t - n; e.c[n + 1].shift += r / i, e.c[t].shift -= r / i, e.c[t].change -= r - r / i } } function b(e) { for (var t = 0, n = 0, r = 0; r < e.cs; r++)t += e.c[r].shift, n += t + e.c[r].change, e.c[r].mod += n } function x(e, t, n) { while (null !== n && e >= n.low) n = n.nxt; return { low: e, index: t, nxt: n } } s(e, r); var w = n.fromNode(e, r); return i(w), g(w, 0), a(w, e, r), o(e, r), e } }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(64), o = n(519), a = n(102), s = n(28), c = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.execute = function () { var e = this; return e.rootNode.width = 0, a(e.rootNode, e.options, o) }, t }(i), l = {}; function u(e, t) { return t = s.assign({}, l, t), new c(e, t).execute() } e.exports = u }, function (e, t, n) { var r = n(28); function i(e, t) { void 0 === e && (e = 0), void 0 === t && (t = []); var n = this; n.x = n.y = 0, n.leftChild = n.rightChild = null, n.height = 0, n.children = t } var o = { isHorizontal: !0, nodeSep: 20, nodeSize: 20, rankSep: 200, subTreeSep: 10 }; function a(e, t, n) { n ? (t.x = e.x, t.y = e.y) : (t.x = e.y, t.y = e.x), e.children.forEach((function (e, r) { a(e, t.children[r], n) })) } e.exports = function (e, t) { void 0 === t && (t = {}), t = r.assign({}, o, t); var n, s = 0; function c(e) { if (!e) return null; e.width = 0, e.depth && e.depth > s && (s = e.depth); var t = e.children, n = t.length, r = new i(e.height, []); return t.forEach((function (e, t) { var i = c(e); r.children.push(i), 0 === t && (r.leftChild = i), t === n - 1 && (r.rightChild = i) })), r.originNode = e, r.isLeaf = e.isLeaf(), r } function l(e) { if (e.isLeaf || 0 === e.children.length) e.drawingDepth = s; else { var t = e.children.map((function (e) { return l(e) })), n = Math.min.apply(null, t); e.drawingDepth = n - 1 } return e.drawingDepth } function u(e) { e.x = e.drawingDepth * t.rankSep, e.isLeaf ? (e.y = 0, n && (e.y = n.y + n.height + t.nodeSep, e.originNode.parent !== n.originNode.parent && (e.y += t.subTreeSep)), n = e) : (e.children.forEach((function (e) { u(e) })), e.y = (e.leftChild.y + e.rightChild.y) / 2) } var h = c(e); return l(h), u(h), a(h, e, t.isHorizontal), e } }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(64), o = n(521), a = n(194), s = n(28), c = ["LR", "RL", "H"], l = c[0], u = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.execute = function () { var e = this, t = e.options, n = e.rootNode; t.isHorizontal = !0; var r = t.indent, i = t.direction || l; if (i && -1 === c.indexOf(i)) throw new TypeError("Invalid direction: " + i); if (i === c[0]) o(n, r); else if (i === c[1]) o(n, r), n.right2left(); else if (i === c[2]) { var s = a(n, t), u = s.left, h = s.right; o(u, r), u.right2left(), o(h, r); var f = u.getBoundingBox(); h.translate(f.width, 0), n.x = h.x - n.width / 2 } return n }, t }(i), h = {}; function f(e, t) { return t = s.assign({}, h, t), new u(e, t).execute() } e.exports = f }, function (e, t) { var n = 20; function r(e, t, n) { e.x += n * e.depth, e.y = t ? t.y + t.height : 0 } e.exports = function (e, t) { void 0 === t && (t = n); var i = null; e.eachNode((function (e) { r(e, i, t), i = e })) } }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(64), o = n(523), a = n(102), s = n(28), c = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.execute = function () { var e = this; return a(e.rootNode, e.options, o) }, t }(i), l = {}; function u(e, t) { return t = s.assign({}, l, t), new c(e, t).execute() } e.exports = u }, function (e, t, n) { var r = n(28); function i(e, t) { var n = 0; return e.children.length ? e.children.forEach((function (e) { n += i(e, t) })) : n = e.height, e._subTreeSep = t.getSubTreeSep(e.data), e.totalHeight = Math.max(e.height, n) + 2 * e._subTreeSep, e.totalHeight } function o(e) { var t = e.children, n = t.length; if (n) { t.forEach((function (e) { o(e) })); var r = t[0], i = t[n - 1], a = i.y - r.y + i.height, s = 0; if (t.forEach((function (e) { s += e.totalHeight })), a > e.height) e.y = r.y + a / 2 - e.height / 2; else if (1 !== t.length || e.height > s) { var c = e.y + (e.height - a) / 2 - r.y; t.forEach((function (e) { e.translate(0, c) })) } else e.y = (r.y + r.height / 2 + i.y + i.height / 2) / 2 - e.height / 2 } } var a = { getSubTreeSep: function () { return 0 } }; e.exports = function (e, t) { void 0 === t && (t = {}), t = r.assign({}, a, t), e.parent = { x: 0, width: 0, height: 0, y: 0 }, e.BFTraverse((function (e) { e.x = e.parent.x + e.parent.width })), e.parent = null, i(e, t), e.startY = 0, e.y = e.totalHeight / 2 - e.height / 2, e.eachNode((function (e) { var t = e.children, n = t.length; if (n) { var r = t[0]; if (r.startY = e.startY + e._subTreeSep, 1 === n) r.y = e.y + e.height / 2 - r.height / 2; else { r.y = r.startY + r.totalHeight / 2 - r.height / 2; for (var i = 1; i < n; i++) { var o = t[i]; o.startY = t[i - 1].startY + t[i - 1].totalHeight, o.y = o.startY + o.totalHeight / 2 - o.height / 2 } } } })), o(e) } }, function (e, t, n) { var r = n(101), i = n(2), o = i.HIERARCHY, a = i.registerTransform, s = {}; function c(e, t) { var n = e.root; if (t = Object.assign({}, s, t), e.dataType !== o) throw new TypeError("Invalid DataView: This transform is for Hierarchy data only!"); e.root = r.dendrogram(n, t) } a("hierarchy.dendrogram", c), a("dendrogram", c) }, function (e, t, n) { var r = n(101), i = n(2), o = i.HIERARCHY, a = i.registerTransform, s = {}; function c(e, t) { var n = e.root; if (t = Object.assign({}, s, t), e.dataType !== o) throw new TypeError("Invalid DataView: This transform is for Hierarchy data only!"); e.root = r.indented(n, t) } a("hierarchy.indented", c), a("indented-tree", c) }, function (e, t, n) { var r = n(3), i = n(34), o = n(6), a = n(2), s = a.HIERARCHY, c = a.registerTransform, l = n(7), u = l.getField, h = { field: "value", size: [1, 1], padding: 0, as: ["x", "y", "r"] }; function f(e, t) { if (e.dataType !== s) throw new TypeError("Invalid DataView: This transform is for Hierarchy data only!"); var n = e.root; t = r({}, h, t); var a, c = t.as; if (!o(c) || 3 !== c.length) throw new TypeError('Invalid as: it must be an array with 3 strings (e.g. [ "x", "y", "r" ])!'); try { a = u(t) } catch (v) { console.warn(v) } a && n.sum((function (e) { return e[a] })).sort((function (e, t) { return t[a] - e[a] })); var l = i.pack(); l.size(t.size), t.padding && l.padding(t.padding), l(n); var f = c[0], d = c[1], p = c[2]; n.each((function (e) { e[f] = e.x, e[d] = e.y, e[p] = e.r })) } c("hierarchy.pack", f), c("hierarchy.circle-packing", f), c("circle-packing", f) }, function (e, t, n) { var r = n(3), i = n(34), o = n(6), a = n(2), s = a.HIERARCHY, c = a.registerTransform, l = n(7), u = l.getField, h = { field: "value", size: [1, 1], round: !1, padding: 0, sort: !0, as: ["x", "y"] }; function f(e, t) { if (e.dataType !== s) throw new TypeError("Invalid DataView: This transform is for Hierarchy data only!"); var n = e.root; t = r({}, h, t); var a, c = t.as; if (!o(c) || 2 !== c.length) throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ "x", "y" ])!'); try { a = u(t) } catch (p) { console.warn(p) } a && n.sum((function (e) { return e[a] })); var l = i.partition(); l.size(t.size).round(t.round).padding(t.padding), l(n); var f = c[0], d = c[1]; n.each((function (e) { e[f] = [e.x0, e.x1, e.x1, e.x0], e[d] = [e.y1, e.y1, e.y0, e.y0], ["x0", "x1", "y0", "y1"].forEach((function (t) { -1 === c.indexOf(t) && delete e[t] })) })) } c("hierarchy.partition", f), c("adjacency", f) }, function (e, t, n) { var r = n(3), i = n(34), o = n(6), a = n(2), s = a.HIERARCHY, c = a.registerTransform, l = n(7), u = l.getField, h = { field: "value", size: [1, 1], nodeSize: null, separation: null, as: ["x", "y"] }; function f(e, t) { if (e.dataType !== s) throw new TypeError("Invalid DataView: This transform is for Hierarchy data only!"); var n = e.root; t = r({}, h, t); var a, c = t.as; if (!o(c) || 2 !== c.length) throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ "x", "y" ])!'); try { a = u(t) } catch (p) { console.warn(p) } a && n.sum((function (e) { return e[a] })); var l = i.tree(); l.size(t.size), t.nodeSize && l.nodeSize(t.nodeSize), t.separation && l.separation(t.separation), l(n); var f = c[0], d = c[1]; n.each((function (e) { e[f] = e.x, e[d] = e.y })) } c("hierarchy.tree", f), c("tree", f) }, function (e, t, n) { var r = n(3), i = n(34), o = n(6), a = n(2), s = a.HIERARCHY, c = a.registerTransform, l = n(7), u = l.getField, h = { field: "value", tile: "treemapSquarify", size: [1, 1], round: !1, padding: 0, paddingInner: 0, paddingOuter: 0, paddingTop: 0, paddingRight: 0, paddingBottom: 0, paddingLeft: 0, as: ["x", "y"] }; function f(e, t) { if (e.dataType !== s) throw new TypeError("Invalid DataView: This transform is for Hierarchy data only!"); var n = e.root; t = r({}, h, t); var a, c = t.as; if (!o(c) || 2 !== c.length) throw new TypeError('Invalid as: it must be an array with 2 strings (e.g. [ "x", "y" ])!'); try { a = u(t) } catch (p) { console.warn(p) } a && n.sum((function (e) { return e[a] })); var l = i.treemap(); l.tile(i[t.tile]).size(t.size).round(t.round).padding(t.padding).paddingInner(t.paddingInner).paddingOuter(t.paddingOuter).paddingTop(t.paddingTop).paddingRight(t.paddingRight).paddingBottom(t.paddingBottom).paddingLeft(t.paddingLeft), l(n); var f = c[0], d = c[1]; n.each((function (e) { e[f] = [e.x0, e.x1, e.x1, e.x0], e[d] = [e.y1, e.y1, e.y0, e.y0], ["x0", "x1", "y0", "y1"].forEach((function (t) { -1 === c.indexOf(t) && delete e[t] })) })) } c("hierarchy.treemap", f), c("treemap", f) }, function (e, t, n) { var r = n(3), i = n(10), o = n(2), a = o.registerTransform, s = n(531), c = n(7), l = c.getFields, u = { fields: ["text", "value"], font: function () { return "serif" }, padding: 1, size: [500, 500], spiral: "archimedean", timeInterval: 500 }; function h(e, t) { t = r({}, u, t); var n = s();["font", "fontSize", "padding", "rotate", "size", "spiral", "timeInterval"].forEach((function (e) { t[e] && n[e](t[e]) })); var o = l(t), a = o[0], c = o[1]; if (!i(a) || !i(c)) throw new TypeError('Invalid fields: must be an array with 2 strings (e.g. [ "text", "value" ])!'); var h = e.rows.map((function (e) { return e.text = e[a], e.value = e[c], e })); n.words(h), t.imageMask && n.createMask(t.imageMask); var f = n.start(), d = f._tags, p = f._bounds; d.forEach((function (e) { e.x += t.size[0] / 2, e.y += t.size[1] / 2 })); var v = t.size, m = v[0], g = v[1], y = f.hasImage; d.push({ text: "", value: 0, x: y ? 0 : p[0].x, y: y ? 0 : p[0].y, opacity: 0 }), d.push({ text: "", value: 0, x: y ? m : p[1].x, y: y ? g : p[1].y, opacity: 0 }), e.rows = d, e._tagCloud = f } a("tag-cloud", h), a("word-cloud", h) }, function (e, t) { var n = Math.PI / 180, r = 64, i = 2048; function o(e) { return e.text } function a() { return "serif" } function s() { return "normal" } function c(e) { return e.value } function l() { return 90 * ~~(2 * Math.random()) } function u() { return 1 } function h(e, t, o, a) { if (!t.sprite) { var s = e.context, c = e.ratio; s.clearRect(0, 0, (r << 5) / c, i / c); var l = 0, u = 0, h = 0, f = o.length; --a; while (++a < f) { t = o[a], s.save(), s.font = t.style + " " + t.weight + " " + ~~((t.size + 1) / c) + "px " + t.font; var d = s.measureText(t.text + "m").width * c, p = t.size << 1; if (t.rotate) { var v = Math.sin(t.rotate * n), m = Math.cos(t.rotate * n), g = d * m, y = d * v, b = p * m, x = p * v; d = Math.max(Math.abs(g + x), Math.abs(g - x)) + 31 >> 5 << 5, p = ~~Math.max(Math.abs(y + b), Math.abs(y - b)) } else d = d + 31 >> 5 << 5; if (p > h && (h = p), l + d >= r << 5 && (l = 0, u += h, h = 0), u + p >= i) break; s.translate((l + (d >> 1)) / c, (u + (p >> 1)) / c), t.rotate && s.rotate(t.rotate * n), s.fillText(t.text, 0, 0), t.padding && (s.lineWidth = 2 * t.padding, s.strokeText(t.text, 0, 0)), s.restore(), t.width = d, t.height = p, t.xoff = l, t.yoff = u, t.x1 = d >> 1, t.y1 = p >> 1, t.x0 = -t.x1, t.y0 = -t.y1, t.hasText = !0, l += d } var w = s.getImageData(0, 0, (r << 5) / c, i / c).data, _ = []; while (--a >= 0) if (t = o[a], t.hasText) { for (var C = t.width, M = C >> 5, O = t.y1 - t.y0, k = 0; k < O * M; k++)_[k] = 0; if (l = t.xoff, null == l) return; u = t.yoff; for (var S = 0, T = -1, A = 0; A < O; A++) { for (var L = 0; L < C; L++) { var j = M * A + (L >> 5), z = w[(u + A) * (r << 5) + (l + L) << 2] ? 1 << 31 - L % 32 : 0; _[j] |= z, S |= z } S ? T = A : (t.y0++, O--, A--, u++) } t.y1 = t.y0 + T, t.sprite = _.slice(0, (t.y1 - t.y0) * M) } } } function f(e, t, n) { n >>= 5; for (var r, i = e.sprite, o = e.width >> 5, a = e.x - (o << 4), s = 127 & a, c = 32 - s, l = e.y1 - e.y0, u = (e.y + e.y0) * n + (a >> 5), h = 0; h < l; h++) { r = 0; for (var f = 0; f <= o; f++)if ((r << c | (f < o ? (r = i[h * o + f]) >>> s : 0)) & t[u + f]) return !0; u += n } return !1 } function d(e, t) { var n = e[0], r = e[1]; t.x + t.x0 < n.x && (n.x = t.x + t.x0), t.y + t.y0 < n.y && (n.y = t.y + t.y0), t.x + t.x1 > r.x && (r.x = t.x + t.x1), t.y + t.y1 > r.y && (r.y = t.y + t.y1) } function p(e, t) { return e.x + e.x1 > t[0].x && e.x + e.x0 < t[1].x && e.y + e.y1 > t[0].y && e.y + e.y0 < t[1].y } function v(e) { var t = e[0] / e[1]; return function (e) { return [t * (e *= .1) * Math.cos(e), e * Math.sin(e)] } } function m(e) { var t = 4, n = t * e[0] / e[1], r = 0, i = 0; return function (e) { var o = e < 0 ? -1 : 1; switch (Math.sqrt(1 + 4 * o * e) - o & 3) { case 0: r += n; break; case 1: i += t; break; case 2: r -= n; break; default: i -= t; break }return [r, i] } } function g(e) { var t = [], n = -1; while (++n < e) t[n] = 0; return t } function y() { return document.createElement("canvas") } function b(e) { return "function" === typeof e ? e : function () { return e } } var x = { archimedean: v, rectangular: m }; e.exports = function () { var e = [256, 256], t = o, n = a, m = c, w = s, _ = s, C = l, M = u, O = v, k = [], S = 1 / 0, T = Math.random, A = y, L = {}; function j(e) { e.width = e.height = 1; var t = Math.sqrt(e.getContext("2d").getImageData(0, 0, 1, 1).data.length >> 2); e.width = (r << 5) / t, e.height = i / t; var n = e.getContext("2d"); return n.fillStyle = n.strokeStyle = "red", n.textAlign = "center", { context: n, ratio: t } } function z(t, n, r) { var i, o, a, s = n.x, c = n.y, l = Math.sqrt(e[0] * e[0] + e[1] * e[1]), u = O(e), h = T() < .5 ? 1 : -1, d = -h; while (i = u(d += h)) { if (o = ~~i[0], a = ~~i[1], Math.min(Math.abs(o), Math.abs(a)) >= l) break; if (n.x = s + o, n.y = c + a, !(n.x + n.x0 < 0 || n.y + n.y0 < 0 || n.x + n.x1 > e[0] || n.y + n.y1 > e[1]) && (!r || !f(n, t, e[0])) && (!r || p(n, r))) { for (var v = n.sprite, m = n.width >> 5, g = e[0] >> 5, y = n.x - (m << 4), b = 127 & y, x = 32 - b, w = n.y1 - n.y0, _ = void 0, C = (n.y + n.y0) * g + (y >> 5), M = 0; M < w; M++) { _ = 0; for (var k = 0; k <= m; k++)t[C + k] |= _ << x | (k < m ? (_ = v[M * m + k]) >>> b : 0); C += g } return delete n.sprite, !0 } } return !1 } return L.canvas = function (e) { return arguments.length ? (A = b(e), L) : A }, L.start = function () { var r = e, i = r[0], o = r[1], a = j(A()), s = L.board ? L.board : g((e[0] >> 5) * e[1]), c = k.length, l = [], u = k.map((function (e, r) { return e.text = t.call(this, e, r), e.font = n.call(this, e, r), e.style = w.call(this, e, r), e.weight = _.call(this, e, r), e.rotate = C.call(this, e, r), e.size = ~~m.call(this, e, r), e.padding = M.call(this, e, r), e })).sort((function (e, t) { return t.size - e.size })), f = -1, p = L.board ? [{ x: 0, y: 0 }, { x: i, y: o }] : null; function v() { var t = Date.now(); while (Date.now() - t < S && ++f < c) { var n = u[f]; n.x = i * (T() + .5) >> 1, n.y = o * (T() + .5) >> 1, h(a, n, u, f), n.hasText && z(s, n, p) && (l.push(n), p ? L.hasImage || d(p, n) : p = [{ x: n.x + n.x0, y: n.y + n.y0 }, { x: n.x + n.x1, y: n.y + n.y1 }], n.x -= e[0] >> 1, n.y -= e[1] >> 1) } L._tags = l, L._bounds = p } return v(), L }, L.createMask = function (t) { var n = document.createElement("canvas"), r = e, i = r[0], o = r[1], a = i >> 5, s = g((i >> 5) * o); n.width = i, n.height = o; var c = n.getContext("2d"); c.drawImage(t, 0, 0, t.width, t.height, 0, 0, i, o); for (var l = c.getImageData(0, 0, i, o).data, u = 0; u < o; u++)for (var h = 0; h < i; h++) { var f = a * u + (h >> 5), d = u * i + h << 2, p = l[d] >= 250 && l[d + 1] >= 250 && l[d + 2] >= 250, v = p ? 1 << 31 - h % 32 : 0; s[f] |= v } L.board = s, L.hasImage = !0 }, L.timeInterval = function (e) { return arguments.length ? (S = null == e ? 1 / 0 : e, L) : S }, L.words = function (e) { return arguments.length ? (k = e, L) : k }, L.size = function (t) { return arguments.length ? (e = [+t[0], +t[1]], L) : e }, L.font = function (e) { return arguments.length ? (n = b(e), L) : n }, L.fontStyle = function (e) { return arguments.length ? (w = b(e), L) : w }, L.fontWeight = function (e) { return arguments.length ? (_ = b(e), L) : _ }, L.rotate = function (e) { return arguments.length ? (C = b(e), L) : C }, L.text = function (e) { return arguments.length ? (t = b(e), L) : t }, L.spiral = function (e) { return arguments.length ? (O = x[e] || e, L) : O }, L.fontSize = function (e) { return arguments.length ? (m = b(e), L) : m }, L.padding = function (e) { return arguments.length ? (M = b(e), L) : M }, L.random = function (e) { return arguments.length ? (T = e, L) : T }, L } }, function (e, t, n) { var r = n(3), i = n(9), o = n(9), a = n(24), s = n(533), c = n(32), l = n(19), u = l.sum, h = n(15), f = n(2), d = f.registerTransform, p = n(7), v = p.getFields, m = { fields: ["name", "value"], rows: 5, size: [1, 1], scale: 1, groupBy: [], maxCount: 1e3, gapRatio: .1, as: ["x", "y"] }; function g(e, t) { t = r({}, m, t); var n = v(t), l = n[0], f = n[1], d = t.as, p = d[0], g = d[1], y = t.groupBy, b = h(e.rows, y), x = a(b), w = t.size, _ = w[0], C = w[1], M = t.maxCount, O = x.length, k = C / O, S = t.rows, T = t.gapRatio, A = [], L = t.scale, j = 0, z = 0; o(b, (function (e) { var t = u(s(e, (function (e) { return e[f] }))), n = Math.ceil(t * L / S); t * L > M && (L = M / t, n = Math.ceil(t * L / S)), z = _ / n })), o(b, (function (e) { var t = [j * k, (j + 1) * k], n = t[1] - t[0], r = n * (1 - T) / S, o = 0, a = 0; i(e, (function (e) { for (var n = e[f], i = Math.round(n * L), s = 0; s < i; s++) { a === S && (a = 0, o++); var u = c(e, [l, f].concat(y)); u[p] = o * z + z / 2, u[g] = a * r + r / 2 + t[0], u._wStep = z, u._hStep = r, a++, A.push(u) } })), j += 1 })), e.rows = A } d("waffle", g) }, function (e, t, n) { var r = n(9), i = n(91), o = function (e, t) { if (!i(e)) return e; var n = []; return r(e, (function (e, r) { n.push(t(e, r)) })), n }; e.exports = o }, function (e, t, n) { var r = n(3), i = n(6), o = n(11), a = n(56), s = n(10), c = n(24), l = n(57), u = n(92), h = n(2), f = h.registerTransform, d = n(7), p = d.getFields, v = n(58), m = v.silverman, g = { as: ["x", "y", "z"], method: "gaussian", extent: [], bandwidth: [] }, y = c(u); function b(e, t) { t = r({}, g, t); var n = p(t); if (!i(n) || 2 !== n.length) throw new TypeError("invalid fields: must be an array of 2 strings!"); var c = t.as, h = c[0], f = c[1], d = c[2]; if (!s(h) || !s(f) || !s(d)) throw new TypeError("invalid as: must be an array of 3 strings!"); var v = t.method; if (s(v)) { if (-1 === y.indexOf(v)) throw new TypeError("invalid method: " + v + ". Must be one of " + y.join(", ")); v = u[v] } if (!o(v)) throw new TypeError("invalid method: kernel method must be a function!"); var b = n[0], x = n[1], w = t.extent, _ = w[0], C = w[1]; i(_) && i(C) || (_ = e.range(b), C = e.range(x)); var M = t.bandwidth, O = M[0], k = M[1]; (!a(O) || O <= 0 || !a(k) || k <= 0) && (O = m(e.getColumn(b)), k = m(e.getColumn(x))); for (var S = l(_, O), T = l(C, k), A = e.rows.length, L = [], j = 0; j < S.length; j++)for (var z = 0; z < T.length; z++) { for (var E = 0, P = S[j], D = T[z], H = 0; H < A; H++)E += v((P - e.rows[H][b]) / O) * v((D - e.rows[H][x]) / k); var V = 1 / (A * O * k) * E, I = {}; I[h] = P, I[f] = D, I[d] = V, L.push(I) } e.rows = L } f("kernel-smooth.density", b), f("kernel.density", b), e.exports = { KERNEL_METHODS: y } }, function (e, t, n) { var r = n(3), i = n(6), o = n(11), a = n(77), s = n(56), c = n(10), l = n(24), u = n(19), h = u.sum, f = n(57), d = n(92), p = n(2), v = p.registerTransform, m = n(7), g = m.getFields, y = n(58), b = y.silverman, x = { as: ["x", "y"], method: "gaussian" }, w = l(d); function _(e, t, n, r) { var i = (r - n) / t; return e(i) } function C(e) { return function (t) { return i(t) ? t.map((function (t) { return e(t) })) : e(t) } } function M(e, t) { t = r({}, x, t); var n = g(t); if (!i(n) || 1 !== n.length && 2 !== n.length) throw new TypeError("invalid fields: must be an array of 1 or 2 strings!"); var l = t.as, u = l[0], p = l[1]; if (!c(u) || !c(p)) throw new TypeError("invalid as: must be an array of 2 strings!"); var v = t.method; if (c(v)) { if (-1 === w.indexOf(v)) throw new TypeError("invalid method: " + v + ". Must be one of " + w.join(", ")); v = d[v] } if (!o(v)) throw new TypeError("invalid method: kernel method must be a function!"); var m = n[0], y = n[1], M = e.getColumn(m), O = t.extent; i(O) || (O = e.range(m)); var k = t.bandwidth; (!s(k) || k <= 0) && (k = b(M)); var S, T = f(O, k), A = M.length, L = _.bind(null, v, k); if (a(y)) S = C((function (e) { var t = M.map((function (t) { return L(e, t) })), n = h(t), r = A * k; return n && r ? n / r : 0 })); else { var j = e.getColumn(y); S = C((function (e) { var t = M.map((function (t) { return L(e, t) })), n = h(t.map((function (e, t) { return e * j[t] }))), r = h(t); return n && r ? n / r : 0 })) } var z = T.map((function (e) { var t = {}; return t[u] = e, t[p] = S(e), t })); e.rows = z } v("kernel-smooth.regression", M), v("kernel.regression", M), e.exports = { KERNEL_METHODS: w } }])
+        }))
+    }, 7156: function (e, t, n) { var r = n("861d"), i = n("d2bb"); e.exports = function (e, t, n) { var o, a; return i && "function" == typeof (o = t.constructor) && o !== n && r(a = o.prototype) && a !== n.prototype && i(e, a), e } }, "729e": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.pie = p; var i = r(n("9523")), o = r(n("7037")), a = r(n("278c")), s = r(n("448a")), c = n("18ad"), l = n("222a"), u = n("5557"), h = n("becb"); function f(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function d(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? f(Object(n), !0).forEach((function (t) { (0, i["default"])(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : f(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } function p(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.series; n || (n = []); var r = (0, h.initNeedSeries)(n, l.pieConfig, "pie"); r = v(r, e), r = m(r, e), r = y(r, e), r = w(r), r = M(r, e), r = k(r), r = T(r), r = A(r), (0, c.doUpdate)({ chart: e, series: r, key: "pie", getGraphConfig: D, getStartGraphConfig: H, beforeChange: V }), (0, c.doUpdate)({ chart: e, series: r, key: "pieInsideLabel", getGraphConfig: R }), (0, c.doUpdate)({ chart: e, series: r, key: "pieOutsideLabelLine", getGraphConfig: $, getStartGraphConfig: B }), (0, c.doUpdate)({ chart: e, series: r, key: "pieOutsideLabel", getGraphConfig: U, getStartGraphConfig: K }) } function v(e, t) { var n = t.render.area; return e.forEach((function (e) { var t = e.center; t = t.map((function (e, t) { return "number" === typeof e ? e : parseInt(e) / 100 * n[t] })), e.center = t })), e } function m(e, t) { var n = Math.min.apply(Math, (0, s["default"])(t.render.area)) / 2; return e.forEach((function (e) { var t = e.radius, r = e.data; t = g(t, n), r.forEach((function (e) { var r = e.radius; r || (r = t), r = g(r, n), e.radius = r })), e.radius = t })), e } function g(e, t) { return e instanceof Array || (e = [0, e]), e = e.map((function (e) { return "number" === typeof e ? e : parseInt(e) / 100 * t })), e } function y(e, t) { var n = e.filter((function (e) { var t = e.roseType; return t })); return n.forEach((function (e) { var t = e.radius, n = e.data, r = e.roseSort, i = x(e), o = (0, s["default"])(n); n = b(n), n.forEach((function (e, n) { e.radius[1] = t[1] - i * n })), r ? n.reverse() : e.data = o, e.roseIncrement = i })), e } function b(e) { return e.sort((function (e, t) { var n = e.value, r = t.value; return n === r ? 0 : n > r ? -1 : n < r ? 1 : void 0 })) } function x(e) { var t = e.radius, n = e.roseIncrement; if ("number" === typeof n) return n; if ("auto" === n) { var r = e.data, i = r.reduce((function (e, t) { var n = t.radius; return [].concat((0, s["default"])(e), (0, s["default"])(n)) }), []), o = Math.min.apply(Math, (0, s["default"])(i)), a = Math.max.apply(Math, (0, s["default"])(i)); return .6 * (a - o) / (r.length - 1 || 1) } return parseInt(n) / 100 * t[1] } function w(e) { return e.forEach((function (e) { var t = e.data, n = e.percentToFixed, r = C(t); t.forEach((function (e) { var t = e.value; e.percent = t / r * 100, e.percentForLabel = _(t / r * 100, n) })); var i = (0, h.mulAdd)(t.slice(0, -1).map((function (e) { var t = e.percent; return t }))); t.slice(-1)[0].percent = 100 - i, t.slice(-1)[0].percentForLabel = _(100 - i, n) })), e } function _(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = e.toString(), r = n.split("."), i = r[1] || "0", o = i.slice(0, t); return r[1] = o, parseFloat(r.join(".")) } function C(e) { return (0, h.mulAdd)(e.map((function (e) { var t = e.value; return t }))) } function M(e) { return e.forEach((function (e) { var t = e.startAngle, n = e.data; n.forEach((function (e, r) { var i = O(n, r), o = (0, a["default"])(i, 2), s = o[0], c = o[1]; e.startAngle = t + s, e.endAngle = t + c })) })), e } function O(e, t) { var n = 2 * Math.PI, r = e.slice(0, t + 1), i = (0, h.mulAdd)(r.map((function (e) { var t = e.percent; return t }))), o = e[t].percent, a = i - o; return [n * a / 100, n * i / 100] } function k(e) { return e.forEach((function (e) { var t = e.data; t.forEach((function (t) { t.insideLabelPos = S(e, t) })) })), e } function S(e, t) { var n = e.center, r = t.startAngle, i = t.endAngle, o = (0, a["default"])(t.radius, 2), c = o[0], l = o[1], h = (c + l) / 2, f = (r + i) / 2; return u.getCircleRadianPoint.apply(void 0, (0, s["default"])(n).concat([h, f])) } function T(e) { return e.forEach((function (e) { var t = e.data, n = e.center; t.forEach((function (e) { var t = e.startAngle, r = e.endAngle, i = e.radius, o = (t + r) / 2, a = u.getCircleRadianPoint.apply(void 0, (0, s["default"])(n).concat([i[1], o])); e.edgeCenterPos = a })) })), e } function A(e) { return e.forEach((function (e) { var t = z(e), n = z(e, !1); t = E(t), n = E(n), P(t, e), P(n, e, !1) })), e } function L(e) { var t = e.outsideLabel.labelLineBendGap, n = j(e); return "number" !== typeof t && (t = parseInt(t) / 100 * n), t + n } function j(e) { var t = e.data, n = t.map((function (e) { var t = (0, a["default"])(e.radius, 2), n = (t[0], t[1]); return n })); return Math.max.apply(Math, (0, s["default"])(n)) } function z(e) { var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], n = e.data, r = e.center, i = r[0]; return n.filter((function (e) { var n = e.edgeCenterPos, r = n[0]; return t ? r <= i : r > i })) } function E(e) { return e.sort((function (e, t) { var n = (0, a["default"])(e.edgeCenterPos, 2), r = (n[0], n[1]), i = (0, a["default"])(t.edgeCenterPos, 2), o = (i[0], i[1]); return r > o ? 1 : r < o ? -1 : r === o ? 0 : void 0 })), e } function P(e, t) { var n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], r = t.center, i = t.outsideLabel, o = L(t); e.forEach((function (e) { var t = e.edgeCenterPos, a = e.startAngle, c = e.endAngle, l = i.labelLineEndLength, f = (a + c) / 2, d = u.getCircleRadianPoint.apply(void 0, (0, s["default"])(r).concat([o, f])), p = (0, s["default"])(d); p[0] += l * (n ? -1 : 1), e.labelLine = [t, d, p], e.labelLineLength = (0, h.getPolylineLength)(e.labelLine), e.align = { textAlign: "left", textBaseline: "middle" }, n && (e.align.textAlign = "right") })) } function D(e) { var t = e.data, n = e.animationCurve, r = e.animationFrame, i = e.rLevel; return t.map((function (t, o) { return { name: "pie", index: i, animationCurve: n, animationFrame: r, shape: I(e, o), style: N(e, o) } })) } function H(e) { var t = e.animationDelayGap, n = e.startAnimationCurve, r = D(e); return r.forEach((function (e, r) { e.animationCurve = n, e.animationDelay = r * t, e.shape.or = e.shape.ir })), r } function V(e) { e.animationDelay = 0 } function I(e, t) { var n = e.center, r = e.data, i = r[t], o = i.radius, a = i.startAngle, s = i.endAngle; return { startAngle: a, endAngle: s, ir: o[0], or: o[1], rx: n[0], ry: n[1] } } function N(e, t) { var n = e.pieStyle, r = e.data, i = r[t], o = i.color; return (0, h.deepMerge)({ fill: o }, n) } function R(e) { var t = e.animationCurve, n = e.animationFrame, r = e.data, i = e.rLevel; return r.map((function (r, o) { return { name: "text", index: i, visible: e.insideLabel.show, animationCurve: t, animationFrame: n, shape: F(e, o), style: Y(e, o) } })) } function F(e, t) { var n = e.insideLabel, r = e.data, i = n.formatter, a = r[t], s = (0, o["default"])(i), c = ""; return "string" === s && (c = i.replace("{name}", a.name), c = c.replace("{percent}", a.percentForLabel), c = c.replace("{value}", a.value)), "function" === s && (c = i(a)), { content: c, position: a.insideLabelPos } } function Y(e, t) { var n = e.insideLabel.style; return n } function $(e) { var t = e.animationCurve, n = e.animationFrame, r = e.data, i = e.rLevel; return r.map((function (r, o) { return { name: "polyline", index: i, visible: e.outsideLabel.show, animationCurve: t, animationFrame: n, shape: W(e, o), style: q(e, o) } })) } function B(e) { var t = e.data, n = $(e); return n.forEach((function (e, n) { e.style.lineDash = [0, t[n].labelLineLength] })), n } function W(e, t) { var n = e.data, r = n[t]; return { points: r.labelLine } } function q(e, t) { var n = e.outsideLabel, r = e.data, i = n.labelLineStyle, o = r[t].color; return (0, h.deepMerge)({ stroke: o, lineDash: [r[t].labelLineLength, 0] }, i) } function U(e) { var t = e.animationCurve, n = e.animationFrame, r = e.data, i = e.rLevel; return r.map((function (r, o) { return { name: "text", index: i, visible: e.outsideLabel.show, animationCurve: t, animationFrame: n, shape: G(e, o), style: X(e, o) } })) } function K(e) { var t = e.data, n = U(e); return n.forEach((function (e, n) { e.shape.position = t[n].labelLine[1] })), n } function G(e, t) { var n = e.outsideLabel, r = e.data, i = n.formatter, a = r[t], s = a.labelLine, c = a.name, l = a.percentForLabel, u = a.value, h = (0, o["default"])(i), f = ""; return "string" === h && (f = i.replace("{name}", c), f = f.replace("{percent}", l), f = f.replace("{value}", u)), "function" === h && (f = i(r[t])), { content: f, position: s[2] } } function X(e, t) { var n = e.outsideLabel, r = e.data, i = r[t], o = i.color, a = i.align, s = n.style; return (0, h.deepMerge)(d({ fill: o }, a), s) } }, "72af": function (e, t, n) { var r = n("99cd"), i = r(); e.exports = i }, "72f0": function (e, t) { function n(e) { return function () { return e } } e.exports = n }, "72f7": function (e, t, n) { "use strict"; var r = n("ebb5").exportTypedArrayMethod, i = n("d039"), o = n("da84"), a = o.Uint8Array, s = a && a.prototype || {}, c = [].toString, l = [].join; i((function () { c.call({}) })) && (c = function () { return l.call(this) }); var u = s.toString != c; r("toString", c, u) }, 7320: function (e, t, n) { "use strict"; var r = n("2deb"), i = n("b4a0"), o = n("01c2"), a = i["a"]; t["a"] = { locale: "en", Pagination: r["a"], DatePicker: i["a"], TimePicker: o["a"], Calendar: a, global: { placeholder: "Please select" }, Table: { filterTitle: "Filter menu", filterConfirm: "OK", filterReset: "Reset", selectAll: "Select current page", selectInvert: "Invert current page", sortTitle: "Sort", expand: "Expand row", collapse: "Collapse row" }, Modal: { okText: "OK", cancelText: "Cancel", justOkText: "OK" }, Popconfirm: { okText: "OK", cancelText: "Cancel" }, Transfer: { titles: ["", ""], searchPlaceholder: "Search here", itemUnit: "item", itemsUnit: "items" }, Upload: { uploading: "Uploading...", removeFile: "Remove file", uploadError: "Upload error", previewFile: "Preview file", downloadFile: "Download file" }, Empty: { description: "No Data" }, Icon: { icon: "icon" }, Text: { edit: "Edit", copy: "Copy", copied: "Copied", expand: "Expand" }, PageHeader: { back: "Back" } } }, "733c": function (e, t, n) { }, "735e": function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("81d5"), o = r.aTypedArray, a = r.exportTypedArrayMethod; a("fill", (function (e) { return i.apply(o(this), arguments) })) }, "73ac": function (e, t, n) { var r = n("743f"), i = n("b047f"), o = n("99d3"), a = o && o.isTypedArray, s = a ? i(a) : r; e.exports = s }, "73d9": function (e, t, n) { var r = n("44d2"); r("flatMap") }, 7418: function (e, t) { t.f = Object.getOwnPropertySymbols }, "743f": function (e, t, n) { var r = n("3729"), i = n("b218"), o = n("1310"), a = "[object Arguments]", s = "[object Array]", c = "[object Boolean]", l = "[object Date]", u = "[object Error]", h = "[object Function]", f = "[object Map]", d = "[object Number]", p = "[object Object]", v = "[object RegExp]", m = "[object Set]", g = "[object String]", y = "[object WeakMap]", b = "[object ArrayBuffer]", x = "[object DataView]", w = "[object Float32Array]", _ = "[object Float64Array]", C = "[object Int8Array]", M = "[object Int16Array]", O = "[object Int32Array]", k = "[object Uint8Array]", S = "[object Uint8ClampedArray]", T = "[object Uint16Array]", A = "[object Uint32Array]", L = {}; function j(e) { return o(e) && i(e.length) && !!L[r(e)] } L[w] = L[_] = L[C] = L[M] = L[O] = L[k] = L[S] = L[T] = L[A] = !0, L[a] = L[s] = L[b] = L[c] = L[x] = L[l] = L[u] = L[h] = L[f] = L[d] = L[p] = L[v] = L[m] = L[g] = L[y] = !1, e.exports = j }, "746f": function (e, t, n) { var r = n("428f"), i = n("5135"), o = n("e538"), a = n("9bf2").f; e.exports = function (e) { var t = r.Symbol || (r.Symbol = {}); i(t, e) || a(t, e, { value: o.f(e) }) } }, "74e8": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("da84"), o = n("83ab"), a = n("8aa7"), s = n("ebb5"), c = n("621a"), l = n("19aa"), u = n("5c6c"), h = n("9112"), f = n("5e89"), d = n("50c4"), p = n("0b25"), v = n("182d"), m = n("a04b"), g = n("5135"), y = n("f5df"), b = n("861d"), x = n("d9b5"), w = n("7c73"), _ = n("d2bb"), C = n("241c").f, M = n("a078"), O = n("b727").forEach, k = n("2626"), S = n("9bf2"), T = n("06cf"), A = n("69f3"), L = n("7156"), j = A.get, z = A.set, E = S.f, P = T.f, D = Math.round, H = i.RangeError, V = c.ArrayBuffer, I = c.DataView, N = s.NATIVE_ARRAY_BUFFER_VIEWS, R = s.TYPED_ARRAY_CONSTRUCTOR, F = s.TYPED_ARRAY_TAG, Y = s.TypedArray, $ = s.TypedArrayPrototype, B = s.aTypedArrayConstructor, W = s.isTypedArray, q = "BYTES_PER_ELEMENT", U = "Wrong length", K = function (e, t) { var n = 0, r = t.length, i = new (B(e))(r); while (r > n) i[n] = t[n++]; return i }, G = function (e, t) { E(e, t, { get: function () { return j(this)[t] } }) }, X = function (e) { var t; return e instanceof V || "ArrayBuffer" == (t = y(e)) || "SharedArrayBuffer" == t }, J = function (e, t) { return W(e) && !x(t) && t in e && f(+t) && t >= 0 }, Q = function (e, t) { return t = m(t), J(e, t) ? u(2, e[t]) : P(e, t) }, Z = function (e, t, n) { return t = m(t), !(J(e, t) && b(n) && g(n, "value")) || g(n, "get") || g(n, "set") || n.configurable || g(n, "writable") && !n.writable || g(n, "enumerable") && !n.enumerable ? E(e, t, n) : (e[t] = n.value, e) }; o ? (N || (T.f = Q, S.f = Z, G($, "buffer"), G($, "byteOffset"), G($, "byteLength"), G($, "length")), r({ target: "Object", stat: !0, forced: !N }, { getOwnPropertyDescriptor: Q, defineProperty: Z }), e.exports = function (e, t, n) { var o = e.match(/\d+$/)[0] / 8, s = e + (n ? "Clamped" : "") + "Array", c = "get" + e, u = "set" + e, f = i[s], m = f, g = m && m.prototype, y = {}, x = function (e, t) { var n = j(e); return n.view[c](t * o + n.byteOffset, !0) }, S = function (e, t, r) { var i = j(e); n && (r = (r = D(r)) < 0 ? 0 : r > 255 ? 255 : 255 & r), i.view[u](t * o + i.byteOffset, r, !0) }, T = function (e, t) { E(e, t, { get: function () { return x(this, t) }, set: function (e) { return S(this, t, e) }, enumerable: !0 }) }; N ? a && (m = t((function (e, t, n, r) { return l(e, m, s), L(function () { return b(t) ? X(t) ? void 0 !== r ? new f(t, v(n, o), r) : void 0 !== n ? new f(t, v(n, o)) : new f(t) : W(t) ? K(m, t) : M.call(m, t) : new f(p(t)) }(), e, m) })), _ && _(m, Y), O(C(f), (function (e) { e in m || h(m, e, f[e]) })), m.prototype = g) : (m = t((function (e, t, n, r) { l(e, m, s); var i, a, c, u = 0, h = 0; if (b(t)) { if (!X(t)) return W(t) ? K(m, t) : M.call(m, t); i = t, h = v(n, o); var f = t.byteLength; if (void 0 === r) { if (f % o) throw H(U); if (a = f - h, a < 0) throw H(U) } else if (a = d(r) * o, a + h > f) throw H(U); c = a / o } else c = p(t), a = c * o, i = new V(a); z(e, { buffer: i, byteOffset: h, byteLength: a, length: c, view: new I(i) }); while (u < c) T(e, u++) })), _ && _(m, Y), g = m.prototype = w($)), g.constructor !== m && h(g, "constructor", m), h(g, R, m), F && h(g, F, s), y[s] = m, r({ global: !0, forced: m != f, sham: !N }, y), q in m || h(m, q, o), q in g || h(g, q, o), k(s) }) : e.exports = function () { } }, "750a": function (e, t, n) { var r = n("c869"), i = n("bcdf"), o = n("ac41"), a = 1 / 0, s = r && 1 / o(new r([, -0]))[1] == a ? function (e) { return new r(e) } : i; e.exports = s }, 7530: function (e, t, n) { var r = n("1a8c"), i = Object.create, o = function () { function e() { } return function (t) { if (!r(t)) return {}; if (i) return i(t); e.prototype = t; var n = new e; return e.prototype = void 0, n } }(); e.exports = o }, 7571: function (e, t, n) { "use strict"; var r = n("92fa"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("4d91"), c = n("0c63"), l = n("94eb"), u = n("0464"), h = n("a9d4"), f = n("daa3"), d = n("b488"), p = n("9cba"), v = n("6a21"), m = ["pink", "red", "yellow", "orange", "cyan", "green", "blue", "purple", "geekblue", "magenta", "volcano", "gold", "lime"], g = new RegExp("^(" + m.join("|") + ")(-inverse)?$"), y = { name: "ATag", mixins: [d["a"]], model: { prop: "visible", event: "close.visible" }, props: { prefixCls: s["a"].string, color: s["a"].string, closable: s["a"].bool.def(!1), visible: s["a"].bool, afterClose: s["a"].func }, inject: { configProvider: { default: function () { return p["a"] } } }, data: function () { var e = !0, t = Object(f["l"])(this); return "visible" in t && (e = this.visible), Object(v["a"])(!("afterClose" in t), "Tag", "'afterClose' will be deprecated, please use 'close' event, we will remove this in the next version."), { _visible: e } }, watch: { visible: function (e) { this.setState({ _visible: e }) } }, methods: { setVisible: function (e, t) { this.$emit("close", t), this.$emit("close.visible", !1); var n = this.afterClose; n && n(), t.defaultPrevented || Object(f["s"])(this, "visible") || this.setState({ _visible: e }) }, handleIconClick: function (e) { e.stopPropagation(), this.setVisible(!1, e) }, isPresetColor: function () { var e = this.$props.color; return !!e && g.test(e) }, getTagStyle: function () { var e = this.$props.color, t = this.isPresetColor(); return { backgroundColor: e && !t ? e : void 0 } }, getTagClassName: function (e) { var t, n = this.$props.color, r = this.isPresetColor(); return t = {}, a()(t, e, !0), a()(t, e + "-" + n, r), a()(t, e + "-has-color", n && !r), t }, renderCloseIcon: function () { var e = this.$createElement, t = this.$props.closable; return t ? e(c["a"], { attrs: { type: "close" }, on: { click: this.handleIconClick } }) : null } }, render: function () { var e = arguments[0], t = this.$props.prefixCls, n = this.configProvider.getPrefixCls, r = n("tag", t), o = this.$data._visible, a = e("span", i()([{ directives: [{ name: "show", value: o }] }, { on: Object(u["a"])(Object(f["k"])(this), ["close"]) }, { class: this.getTagClassName(r), style: this.getTagStyle() }]), [this.$slots["default"], this.renderCloseIcon()]), s = Object(l["a"])(r + "-zoom", { appear: !1 }); return e(h["a"], [e("transition", s, [a])]) } }, b = { name: "ACheckableTag", model: { prop: "checked" }, props: { prefixCls: s["a"].string, checked: Boolean }, inject: { configProvider: { default: function () { return p["a"] } } }, computed: { classes: function () { var e, t = this.checked, n = this.prefixCls, r = this.configProvider.getPrefixCls, i = r("tag", n); return e = {}, a()(e, "" + i, !0), a()(e, i + "-checkable", !0), a()(e, i + "-checkable-checked", t), e } }, methods: { handleClick: function () { var e = this.checked; this.$emit("input", !e), this.$emit("change", !e) } }, render: function () { var e = arguments[0], t = this.classes, n = this.handleClick, r = this.$slots; return e("div", { class: t, on: { click: n } }, [r["default"]]) } }, x = n("db14"); y.CheckableTag = b, y.install = function (e) { e.use(x["a"]), e.component(y.name, y), e.component(y.CheckableTag.name, y.CheckableTag) }; t["a"] = y }, "768f": function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("0464"), a = n("f933"), s = n("f54f"), c = n("4d91"), l = n("daa3"), u = n("b488"), h = n("b92b"), f = n("0c63"), d = n("5efb"), p = n("e5cd"), v = n("02ea"), m = n("9cba"), g = n("db14"), y = Object(s["a"])(), b = Object(h["a"])(), x = { name: "APopconfirm", props: i()({}, y, { prefixCls: c["a"].string, transitionName: c["a"].string.def("zoom-big"), content: c["a"].any, title: c["a"].any, trigger: y.trigger.def("click"), okType: b.type.def("primary"), disabled: c["a"].bool.def(!1), okText: c["a"].any, cancelText: c["a"].any, icon: c["a"].any, okButtonProps: c["a"].object, cancelButtonProps: c["a"].object }), mixins: [u["a"]], model: { prop: "visible", event: "visibleChange" }, watch: { visible: function (e) { this.sVisible = e } }, inject: { configProvider: { default: function () { return m["a"] } } }, data: function () { var e = Object(l["l"])(this), t = { sVisible: !1 }; return "visible" in e && (t.sVisible = e.visible), "defaultVisible" in e && (t.sVisible = e.defaultVisible), t }, methods: { onConfirm: function (e) { this.setVisible(!1, e), this.$emit("confirm", e) }, onCancel: function (e) { this.setVisible(!1, e), this.$emit("cancel", e) }, onVisibleChange: function (e) { var t = this.$props.disabled; t || this.setVisible(e) }, setVisible: function (e, t) { Object(l["s"])(this, "visible") || this.setState({ sVisible: e }), this.$emit("visibleChange", e, t) }, getPopupDomNode: function () { return this.$refs.tooltip.getPopupDomNode() }, renderOverlay: function (e, t) { var n = this.$createElement, r = this.okType, i = this.okButtonProps, o = this.cancelButtonProps, a = Object(l["g"])(this, "icon") || n(f["a"], { attrs: { type: "exclamation-circle", theme: "filled" } }), s = Object(l["x"])({ props: { size: "small" }, on: { click: this.onCancel } }, o), c = Object(l["x"])({ props: { type: r, size: "small" }, on: { click: this.onConfirm } }, i); return n("div", { class: e + "-inner-content" }, [n("div", { class: e + "-message" }, [a, n("div", { class: e + "-message-title" }, [Object(l["g"])(this, "title")])]), n("div", { class: e + "-buttons" }, [n(d["a"], s, [Object(l["g"])(this, "cancelText") || t.cancelText]), n(d["a"], c, [Object(l["g"])(this, "okText") || t.okText])])]) } }, render: function () { var e = this, t = arguments[0], n = Object(l["l"])(this), r = n.prefixCls, s = this.configProvider.getPrefixCls, c = s("popover", r), u = Object(o["a"])(n, ["title", "content", "cancelText", "okText"]), h = { props: i()({}, u, { prefixCls: c, visible: this.sVisible }), ref: "tooltip", on: { visibleChange: this.onVisibleChange } }, f = t(p["a"], { attrs: { componentName: "Popconfirm", defaultLocale: v["a"].Popconfirm }, scopedSlots: { default: function (t) { return e.renderOverlay(c, t) } } }); return t(a["a"], h, [t("template", { slot: "title" }, [f]), this.$slots["default"]]) }, install: function (e) { e.use(g["a"]), e.component(x.name, x) } }; t["a"] = x }, "76dd": function (e, t, n) { var r = n("ce86"); function i(e) { return null == e ? "" : r(e) } e.exports = i }, 7746: function (e, t, n) { "use strict"; var r = this && this.__importDefault || function (e) { return e && e.__esModule ? e : { default: e } }; Object.defineProperty(t, "__esModule", { value: !0 }); var i = r(n("66cb")), o = 2, a = 16, s = 5, c = 5, l = 15, u = 5, h = 4; function f(e, t, n) { var r; return r = Math.round(e.h) >= 60 && Math.round(e.h) <= 240 ? n ? Math.round(e.h) - o * t : Math.round(e.h) + o * t : n ? Math.round(e.h) + o * t : Math.round(e.h) - o * t, r < 0 ? r += 360 : r >= 360 && (r -= 360), r } function d(e, t, n) { return 0 === e.h && 0 === e.s ? e.s : (r = n ? Math.round(100 * e.s) - a * t : t === h ? Math.round(100 * e.s) + a : Math.round(100 * e.s) + s * t, r > 100 && (r = 100), n && t === u && r > 10 && (r = 10), r < 6 && (r = 6), r); var r } function p(e, t, n) { return n ? Math.round(100 * e.v) + c * t : Math.round(100 * e.v) - l * t } function v(e) { for (var t = [], n = i.default(e), r = u; r > 0; r -= 1) { var o = n.toHsv(), a = i.default({ h: f(o, r, !0), s: d(o, r, !0), v: p(o, r, !0) }).toHexString(); t.push(a) } t.push(n.toHexString()); for (r = 1; r <= h; r += 1) { o = n.toHsv(), a = i.default({ h: f(o, r), s: d(o, r), v: p(o, r) }).toHexString(); t.push(a) } return t } t.default = v }, "77a7": function (e, t) { var n = Math.abs, r = Math.pow, i = Math.floor, o = Math.log, a = Math.LN2, s = function (e, t, s) { var c, l, u, h = new Array(s), f = 8 * s - t - 1, d = (1 << f) - 1, p = d >> 1, v = 23 === t ? r(2, -24) - r(2, -77) : 0, m = e < 0 || 0 === e && 1 / e < 0 ? 1 : 0, g = 0; for (e = n(e), e != e || e === 1 / 0 ? (l = e != e ? 1 : 0, c = d) : (c = i(o(e) / a), e * (u = r(2, -c)) < 1 && (c--, u *= 2), e += c + p >= 1 ? v / u : v * r(2, 1 - p), e * u >= 2 && (c++, u /= 2), c + p >= d ? (l = 0, c = d) : c + p >= 1 ? (l = (e * u - 1) * r(2, t), c += p) : (l = e * r(2, p - 1) * r(2, t), c = 0)); t >= 8; h[g++] = 255 & l, l /= 256, t -= 8); for (c = c << t | l, f += t; f > 0; h[g++] = 255 & c, c /= 256, f -= 8); return h[--g] |= 128 * m, h }, c = function (e, t) { var n, i = e.length, o = 8 * i - t - 1, a = (1 << o) - 1, s = a >> 1, c = o - 7, l = i - 1, u = e[l--], h = 127 & u; for (u >>= 7; c > 0; h = 256 * h + e[l], l--, c -= 8); for (n = h & (1 << -c) - 1, h >>= -c, c += t; c > 0; n = 256 * n + e[l], l--, c -= 8); if (0 === h) h = 1 - s; else { if (h === a) return n ? NaN : u ? -1 / 0 : 1 / 0; n += r(2, t), h -= s } return (u ? -1 : 1) * n * r(2, h - t) }; e.exports = { pack: s, unpack: c } }, "77e9": function (e, t, n) { var r = n("7a41"); e.exports = function (e) { if (!r(e)) throw TypeError(e + " is not an object!"); return e } }, 7839: function (e, t) { e.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"] }, 7898: function (e, t, n) { var r = n("23e7"), i = n("8eb5"), o = Math.exp; r({ target: "Math", stat: !0 }, { tanh: function (e) { var t = i(e = +e), n = i(-e); return t == 1 / 0 ? 1 : n == 1 / 0 ? -1 : (t - n) / (o(e) + o(-e)) } }) }, 7948: function (e, t) { function n(e, t) { var n = -1, r = null == e ? 0 : e.length, i = Array(r); while (++n < r) i[n] = t(e[n], n, e); return i } e.exports = n }, "79a8": function (e, t, n) { var r = n("23e7"), i = Math.asinh, o = Math.log, a = Math.sqrt; function s(e) { return isFinite(e = +e) && 0 != e ? e < 0 ? -s(-e) : o(e + a(e * e + 1)) : e } r({ target: "Math", stat: !0, forced: !(i && 1 / i(0) > 0) }, { asinh: s }) }, "79bc": function (e, t, n) { var r = n("0b07"), i = n("2b3e"), o = r(i, "Map"); e.exports = o }, "7a41": function (e, t) { e.exports = function (e) { return "object" === typeof e ? null !== e : "function" === typeof e } }, "7a48": function (e, t, n) { var r = n("6044"), i = Object.prototype, o = i.hasOwnProperty; function a(e) { var t = this.__data__; return r ? void 0 !== t[e] : o.call(t, e) } e.exports = a }, "7b05": function (e, t, n) { "use strict"; n.d(t, "b", (function () { return h })), n.d(t, "a", (function () { return f })); var r = n("9b57"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("daa3"), c = n("4d26"), l = n.n(c); function u(e, t) { var n = e.componentOptions, r = e.data, i = {}; n && n.listeners && (i = a()({}, n.listeners)); var o = {}; r && r.on && (o = a()({}, r.on)); var s = new e.constructor(e.tag, r ? a()({}, r, { on: o }) : r, e.children, e.text, e.elm, e.context, n ? a()({}, n, { listeners: i }) : n, e.asyncFactory); return s.ns = e.ns, s.isStatic = e.isStatic, s.key = e.key, s.isComment = e.isComment, s.fnContext = e.fnContext, s.fnOptions = e.fnOptions, s.fnScopeId = e.fnScopeId, s.isCloned = !0, t && (e.children && (s.children = h(e.children, !0)), n && n.children && (n.children = h(n.children, !0))), s } function h(e, t) { for (var n = e.length, r = new Array(n), i = 0; i < n; i++)r[i] = u(e[i], t); return r } function f(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = arguments[2], r = e; if (Array.isArray(e) && (r = Object(s["c"])(e)[0]), !r) return null; var o = u(r, n), c = t.props, h = void 0 === c ? {} : c, f = t.key, d = t.on, p = void 0 === d ? {} : d, v = t.nativeOn, m = void 0 === v ? {} : v, g = t.children, y = t.directives, b = void 0 === y ? [] : y, x = o.data || {}, w = {}, _ = {}, C = t.attrs, M = void 0 === C ? {} : C, O = t.ref, k = t.domProps, S = void 0 === k ? {} : k, T = t.style, A = void 0 === T ? {} : T, L = t["class"], j = void 0 === L ? {} : L, z = t.scopedSlots, E = void 0 === z ? {} : z; return _ = "string" === typeof x.style ? Object(s["y"])(x.style) : a()({}, x.style, _), _ = "string" === typeof A ? a()({}, _, Object(s["y"])(_)) : a()({}, _, A), "string" === typeof x["class"] && "" !== x["class"].trim() ? x["class"].split(" ").forEach((function (e) { w[e.trim()] = !0 })) : Array.isArray(x["class"]) ? l()(x["class"]).split(" ").forEach((function (e) { w[e.trim()] = !0 })) : w = a()({}, x["class"], w), "string" === typeof j && "" !== j.trim() ? j.split(" ").forEach((function (e) { w[e.trim()] = !0 })) : w = a()({}, w, j), o.data = a()({}, x, { style: _, attrs: a()({}, x.attrs, M), class: w, domProps: a()({}, x.domProps, S), scopedSlots: a()({}, x.scopedSlots, E), directives: [].concat(i()(x.directives || []), i()(b)) }), o.componentOptions ? (o.componentOptions.propsData = o.componentOptions.propsData || {}, o.componentOptions.listeners = o.componentOptions.listeners || {}, o.componentOptions.propsData = a()({}, o.componentOptions.propsData, h), o.componentOptions.listeners = a()({}, o.componentOptions.listeners, p), g && (o.componentOptions.children = g)) : (g && (o.children = g), o.data.on = a()({}, o.data.on || {}, p)), o.data.on = a()({}, o.data.on || {}, m), void 0 !== f && (o.key = f, o.data.key = f), "string" === typeof O && (o.data.ref = O), o } }, "7b0b": function (e, t, n) { var r = n("1d80"); e.exports = function (e) { return Object(r(e)) } }, "7b2d": function (e, t, n) { "use strict"; var r = n("9b57"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("4d91"), u = n("daa3"), h = n("b488"), f = n("4d26"), d = n.n(f), p = n("bb76"), v = n("0c63"), m = n("b558"), g = { prefixCls: l["a"].string, placeholder: l["a"].string, value: l["a"].any, handleClear: l["a"].func, disabled: l["a"].bool }, y = { name: "Search", props: Object(u["t"])(g, { placeholder: "" }), methods: { handleChange: function (e) { this.$emit("change", e) }, handleClear2: function (e) { e.preventDefault(); var t = this.$props, n = t.handleClear, r = t.disabled; !r && n && n(e) } }, render: function () { var e = arguments[0], t = Object(u["l"])(this), n = t.placeholder, r = t.value, i = t.prefixCls, o = t.disabled, a = r && r.length > 0 ? e("a", { attrs: { href: "#" }, class: i + "-action", on: { click: this.handleClear2 } }, [e(v["a"], { attrs: { type: "close-circle", theme: "filled" } })]) : e("span", { class: i + "-action" }, [e(v["a"], { attrs: { type: "search" } })]); return e("div", [e(m["a"], { attrs: { placeholder: n, value: r, disabled: o }, class: i, on: { change: this.handleChange } }), a]) } }, b = n("92fa"), x = n.n(b), w = n("b6bb"), _ = n("c8c6"), C = n("6a21"), M = n("b047"), O = n.n(M), k = n("0f32"), S = n.n(k), T = function (e, t) { var n = ""; return n = "undefined" !== typeof getComputedStyle ? window.getComputedStyle(e, null).getPropertyValue(t) : e.style[t], n }, A = function (e) { return T(e, "overflow") + T(e, "overflow-y") + T(e, "overflow-x") }, L = function (e) { if (!(e instanceof window.HTMLElement)) return window; var t = e; while (t) { if (t === document.body || t === document.documentElement) break; if (!t.parentNode) break; if (/(scroll|auto)/.test(A(t))) return t; t = t.parentNode } return window }, j = L; function z(e) { var t = e.getBoundingClientRect(); return { top: t.top + window.pageYOffset, left: t.left + window.pageXOffset } } var E = function (e) { return null === e.offsetParent }; function P(e, t, n) { if (E(e)) return !1; var r = void 0, i = void 0, o = void 0, a = void 0; if ("undefined" === typeof t || t === window) r = window.pageYOffset, o = window.pageXOffset, i = r + window.innerHeight, a = o + window.innerWidth; else { var s = z(t); r = s.top, o = s.left, i = r + t.offsetHeight, a = o + t.offsetWidth } var c = z(e); return r <= c.top + e.offsetHeight + n.top && i >= c.top - n.bottom && o <= c.left + e.offsetWidth + n.left && a >= c.left - n.right } var D = { debounce: l["a"].bool, elementType: l["a"].string, height: l["a"].oneOfType([l["a"].string, l["a"].number]), offset: l["a"].number, offsetBottom: l["a"].number, offsetHorizontal: l["a"].number, offsetLeft: l["a"].number, offsetRight: l["a"].number, offsetTop: l["a"].number, offsetVertical: l["a"].number, threshold: l["a"].number, throttle: l["a"].number, width: l["a"].oneOfType([l["a"].string, l["a"].number]), _propsSymbol: l["a"].any }, H = { name: "LazyLoad", mixins: [h["a"]], props: Object(u["t"])(D, { elementType: "div", debounce: !0, offset: 0, offsetBottom: 0, offsetHorizontal: 0, offsetLeft: 0, offsetRight: 0, offsetTop: 0, offsetVertical: 0, throttle: 250 }), data: function () { return this.throttle > 0 && (this.debounce ? this.lazyLoadHandler = O()(this.lazyLoadHandler, this.throttle) : this.lazyLoadHandler = S()(this.lazyLoadHandler, this.throttle)), { visible: !1 } }, watch: { _propsSymbol: function () { this.visible || this.lazyLoadHandler() } }, mounted: function () { var e = this; this.$nextTick((function () { e._mounted = !0; var t = e.getEventNode(); e.lazyLoadHandler(), e.lazyLoadHandler.flush && e.lazyLoadHandler.flush(), e.resizeHander = Object(_["a"])(window, "resize", e.lazyLoadHandler), e.scrollHander = Object(_["a"])(t, "scroll", e.lazyLoadHandler) })) }, beforeDestroy: function () { this._mounted = !1, this.lazyLoadHandler.cancel && this.lazyLoadHandler.cancel(), this.detachListeners() }, methods: { getEventNode: function () { return j(this.$el) }, getOffset: function () { var e = this.$props, t = e.offset, n = e.offsetVertical, r = e.offsetHorizontal, i = e.offsetTop, o = e.offsetBottom, a = e.offsetLeft, s = e.offsetRight, c = e.threshold, l = c || t, u = n || l, h = r || l; return { top: i || u, bottom: o || u, left: a || h, right: s || h } }, lazyLoadHandler: function () { var e = this; if (this._mounted) { var t = this.getOffset(), n = this.$el, r = this.getEventNode(); P(n, r, t) && (this.setState({ visible: !0 }, (function () { e.__emit("contentVisible") })), this.detachListeners()) } }, detachListeners: function () { this.resizeHander && this.resizeHander.remove(), this.scrollHander && this.scrollHander.remove() } }, render: function (e) { var t = this.$slots["default"]; if (1 !== t.length) return Object(C["a"])(!1, "lazyLoad缁勪欢鍙兘鍖呭惈涓�涓瓙鍏冪礌"), null; var n = this.$props, r = n.height, i = n.width, o = n.elementType, a = this.visible, s = { height: "number" === typeof r ? r + "px" : r, width: "number" === typeof i ? i + "px" : i }, c = { LazyLoad: !0, "is-visible": a }; return e(o, { class: c, style: s }, [a ? t[0] : null]) } }, V = H; function I() { } var N = { name: "ListItem", props: { renderedText: l["a"].any, renderedEl: l["a"].any, item: l["a"].any, lazy: l["a"].oneOfType([l["a"].bool, l["a"].object]), checked: l["a"].bool, prefixCls: l["a"].string, disabled: l["a"].bool }, render: function () { var e, t = this, n = arguments[0], r = this.$props, i = r.renderedText, o = r.renderedEl, s = r.item, l = r.lazy, u = r.checked, h = r.disabled, f = r.prefixCls, v = d()((e = {}, a()(e, f + "-content-item", !0), a()(e, f + "-content-item-disabled", h || s.disabled), e)), m = void 0; "string" !== typeof i && "number" !== typeof i || (m = String(i)); var g = n("li", { class: v, attrs: { title: m }, on: { click: h || s.disabled ? I : function () { t.$emit("click", s) } } }, [n(p["a"], { attrs: { checked: u, disabled: h || s.disabled } }), n("span", { class: f + "-content-item-text" }, [o])]), y = null; if (l) { var b = { props: c()({ height: 32, offset: 500, throttle: 0, debounce: !1 }, l, { _propsSymbol: Symbol() }) }; y = n(V, b, [g]) } else y = g; return y } }, R = n("94eb"); function F() { } var Y = { name: "ListBody", inheritAttrs: !1, props: { prefixCls: l["a"].string, filteredRenderItems: l["a"].array.def([]), lazy: l["a"].oneOfType([l["a"].bool, l["a"].object]), selectedKeys: l["a"].array, disabled: l["a"].bool }, data: function () { return { mounted: !1 } }, computed: { itemsLength: function () { return this.filteredRenderItems ? this.filteredRenderItems.length : 0 } }, watch: { itemsLength: function () { var e = this; this.$nextTick((function () { var t = e.$props.lazy; if (!1 !== t) { var n = e.$el; w["a"].cancel(e.lazyId), e.lazyId = Object(w["a"])((function () { if (n) { var e = new Event("scroll", { bubbles: !0 }); n.dispatchEvent(e) } })) } })) } }, mounted: function () { var e = this; this.mountId = Object(w["a"])((function () { e.mounted = !0 })) }, beforeDestroy: function () { w["a"].cancel(this.mountId), w["a"].cancel(this.lazyId) }, methods: { onItemSelect: function (e) { var t = this.$props.selectedKeys, n = t.indexOf(e.key) >= 0; this.$emit("itemSelect", e.key, !n) }, onScroll: function (e) { this.$emit("scroll", e) } }, render: function () { var e = this, t = arguments[0], n = this.$data.mounted, r = this.$props, i = r.prefixCls, o = r.filteredRenderItems, a = r.lazy, s = r.selectedKeys, c = r.disabled, l = o.map((function (n) { var r = n.renderedEl, o = n.renderedText, l = n.item, u = l.disabled, h = s.indexOf(l.key) >= 0; return t(N, { attrs: { disabled: c || u, item: l, lazy: a, renderedText: o, renderedEl: r, checked: h, prefixCls: i }, key: l.key, on: { click: e.onItemSelect } }) })), u = Object(R["a"])(n ? i + "-content-item-highlight" : "", { tag: "ul", nativeOn: { scroll: this.onScroll }, leave: F }); return t("transition-group", x()([{ class: i + "-content" }, u]), [l]) } }, $ = function (e, t) { return e(Y, t) }; function B(e, t) { if ("createEvent" in document) { var n = document.createEvent("HTMLEvents"); n.initEvent(t, !1, !0), e.dispatchEvent(n) } } var W = function () { return null }, q = { key: l["a"].string.isRequired, title: l["a"].string.isRequired, description: l["a"].string, disabled: l["a"].bool }; function U(e) { return e && !Object(u["w"])(e) && "[object Object]" === Object.prototype.toString.call(e) } var K = { prefixCls: l["a"].string, titleText: l["a"].string, dataSource: l["a"].arrayOf(l["a"].shape(q).loose), filter: l["a"].string, filterOption: l["a"].func, checkedKeys: l["a"].arrayOf(l["a"].string), handleFilter: l["a"].func, handleSelect: l["a"].func, handleSelectAll: l["a"].func, handleClear: l["a"].func, renderItem: l["a"].func, showSearch: l["a"].bool, searchPlaceholder: l["a"].string, notFoundContent: l["a"].any, itemUnit: l["a"].string, itemsUnit: l["a"].string, body: l["a"].any, renderList: l["a"].any, footer: l["a"].any, lazy: l["a"].oneOfType([l["a"].bool, l["a"].object]), disabled: l["a"].bool, direction: l["a"].string, showSelectAll: l["a"].bool }; function G(e, t, n) { var r = t ? t(n) : null, i = !!r; return i || (r = $(e, n)), { customize: i, bodyContent: r } } var X = { name: "TransferList", mixins: [h["a"]], props: Object(u["t"])(K, { dataSource: [], titleText: "", showSearch: !1, lazy: {} }), data: function () { return this.timer = null, this.triggerScrollTimer = null, { filterValue: "" } }, beforeDestroy: function () { clearTimeout(this.triggerScrollTimer) }, updated: function () { var e = this; this.$nextTick((function () { if (e.scrollEvent && e.scrollEvent.remove(), e.$refs.listContentWrapper) { var t = e.$refs.listContentWrapper.$el; e.scrollEvent = Object(_["a"])(t, "scroll", e.handleScroll) } })) }, methods: { handleScroll: function (e) { this.$emit("scroll", e) }, getCheckStatus: function (e) { var t = this.$props.checkedKeys; return 0 === t.length ? "none" : e.every((function (e) { return t.indexOf(e.key) >= 0 || !!e.disabled })) ? "all" : "part" }, getFilteredItems: function (e, t) { var n = this, r = [], i = []; return e.forEach((function (e) { var o = n.renderItemHtml(e), a = o.renderedText; if (t && t.trim() && !n.matchFilter(a, e)) return null; r.push(e), i.push(o) })), { filteredItems: r, filteredRenderItems: i } }, getListBody: function (e, t, n, r, i, o, a, s, l, h, f) { var p = this.$createElement, v = h ? p("div", { class: e + "-body-search-wrapper" }, [p(y, { attrs: { prefixCls: e + "-search", handleClear: this._handleClear, placeholder: t, value: n, disabled: f }, on: { change: this._handleFilter } })]) : null, m = o; if (!m) { var g = void 0, b = G(this.$createElement, l, { props: c()({}, this.$props, { filteredItems: r, filteredRenderItems: a, selectedKeys: s }), on: Object(u["k"])(this) }), x = b.bodyContent, w = b.customize; g = w ? p("div", { class: e + "-body-customize-wrapper" }, [x]) : r.length ? x : p("div", { class: e + "-body-not-found" }, [i]), m = p("div", { class: d()(h ? e + "-body " + e + "-body-with-search" : e + "-body") }, [v, g]) } return m }, getCheckBox: function (e, t, n) { var r = this, i = this.$createElement, o = this.getCheckStatus(e), a = "all" === o, s = !1 !== t && i(p["a"], { attrs: { disabled: n, checked: a, indeterminate: "part" === o }, on: { change: function () { r.$emit("itemSelectAll", e.filter((function (e) { return !e.disabled })).map((function (e) { var t = e.key; return t })), !a) } } }); return s }, _handleSelect: function (e) { var t = this.$props.checkedKeys, n = t.some((function (t) { return t === e.key })); this.handleSelect(e, !n) }, _handleFilter: function (e) { var t = this, n = this.$props.handleFilter, r = e.target.value; this.setState({ filterValue: r }), n(e), r && (this.triggerScrollTimer = setTimeout((function () { var e = t.$el, n = e.querySelectorAll(".ant-transfer-list-content")[0]; n && B(n, "scroll") }), 0)) }, _handleClear: function (e) { this.setState({ filterValue: "" }), this.handleClear(e) }, matchFilter: function (e, t) { var n = this.$data.filterValue, r = this.$props.filterOption; return r ? r(n, t) : e.indexOf(n) >= 0 }, renderItemHtml: function (e) { var t = this.$props.renderItem, n = void 0 === t ? W : t, r = n(e), i = U(r); return { renderedText: i ? r.value : r, renderedEl: i ? r.label : r, item: e } }, filterNull: function (e) { return e.filter((function (e) { return null !== e })) } }, render: function () { var e = arguments[0], t = this.$data.filterValue, n = this.$props, r = n.prefixCls, i = n.dataSource, o = n.titleText, s = n.checkedKeys, l = n.disabled, u = n.body, h = n.footer, f = n.showSearch, p = n.searchPlaceholder, v = n.notFoundContent, m = n.itemUnit, g = n.itemsUnit, y = n.renderList, b = n.showSelectAll, x = h && h(c()({}, this.$props)), w = u && u(c()({}, this.$props)), _ = d()(r, a()({}, r + "-with-footer", !!x)), C = this.getFilteredItems(i, t), M = C.filteredItems, O = C.filteredRenderItems, k = i.length > 1 ? g : m, S = this.getListBody(r, p, t, M, v, w, O, s, y, f, l), T = x ? e("div", { class: r + "-footer" }, [x]) : null, A = this.getCheckBox(M, b, l); return e("div", { class: _ }, [e("div", { class: r + "-header" }, [A, e("span", { class: r + "-header-selected" }, [e("span", [(s.length > 0 ? s.length + "/" : "") + M.length, " ", k]), e("span", { class: r + "-header-title" }, [o])])]), S, T]) } }, J = n("5efb"); function Q() { } var Z = { className: l["a"].string, leftArrowText: l["a"].string, rightArrowText: l["a"].string, moveToLeft: l["a"].any, moveToRight: l["a"].any, leftActive: l["a"].bool, rightActive: l["a"].bool, disabled: l["a"].bool }, ee = { name: "Operation", props: c()({}, Z), render: function () { var e = arguments[0], t = Object(u["l"])(this), n = t.disabled, r = t.moveToLeft, i = void 0 === r ? Q : r, o = t.moveToRight, a = void 0 === o ? Q : o, s = t.leftArrowText, c = void 0 === s ? "" : s, l = t.rightArrowText, h = void 0 === l ? "" : l, f = t.leftActive, d = t.rightActive; return e("div", [e(J["a"], { attrs: { type: "primary", size: "small", disabled: n || !d, icon: "right" }, on: { click: a } }, [h]), e(J["a"], { attrs: { type: "primary", size: "small", disabled: n || !f, icon: "left" }, on: { click: i } }, [c])]) } }, te = n("e5cd"), ne = n("02ea"), re = n("9cba"), ie = n("db14"), oe = { key: l["a"].string.isRequired, title: l["a"].string.isRequired, description: l["a"].string, disabled: l["a"].bool }, ae = { prefixCls: l["a"].string, dataSource: l["a"].arrayOf(l["a"].shape(oe).loose), disabled: l["a"].boolean, targetKeys: l["a"].arrayOf(l["a"].string), selectedKeys: l["a"].arrayOf(l["a"].string), render: l["a"].func, listStyle: l["a"].oneOfType([l["a"].func, l["a"].object]), operationStyle: l["a"].object, titles: l["a"].arrayOf(l["a"].string), operations: l["a"].arrayOf(l["a"].string), showSearch: l["a"].bool, filterOption: l["a"].func, searchPlaceholder: l["a"].string, notFoundContent: l["a"].any, locale: l["a"].object, rowKey: l["a"].func, lazy: l["a"].oneOfType([l["a"].object, l["a"].bool]), showSelectAll: l["a"].bool }, se = (l["a"].arrayOf(l["a"].string), l["a"].string, l["a"].string, l["a"].string, { name: "ATransfer", mixins: [h["a"]], props: Object(u["t"])(ae, { dataSource: [], locale: {}, showSearch: !1, listStyle: function () { } }), inject: { configProvider: { default: function () { return re["a"] } } }, data: function () { var e = this.selectedKeys, t = void 0 === e ? [] : e, n = this.targetKeys, r = void 0 === n ? [] : n; return { leftFilter: "", rightFilter: "", sourceSelectedKeys: t.filter((function (e) { return -1 === r.indexOf(e) })), targetSelectedKeys: t.filter((function (e) { return r.indexOf(e) > -1 })) } }, mounted: function () { }, watch: { targetKeys: function () { if (this.updateState(), this.selectedKeys) { var e = this.targetKeys || []; this.setState({ sourceSelectedKeys: this.selectedKeys.filter((function (t) { return !e.includes(t) })), targetSelectedKeys: this.selectedKeys.filter((function (t) { return e.includes(t) })) }) } }, dataSource: function () { this.updateState() }, selectedKeys: function () { if (this.selectedKeys) { var e = this.targetKeys || []; this.setState({ sourceSelectedKeys: this.selectedKeys.filter((function (t) { return !e.includes(t) })), targetSelectedKeys: this.selectedKeys.filter((function (t) { return e.includes(t) })) }) } } }, methods: { getSelectedKeysName: function (e) { return "left" === e ? "sourceSelectedKeys" : "targetSelectedKeys" }, getTitles: function (e) { return this.titles ? this.titles : e.titles || ["", ""] }, getLocale: function (e, t) { var n = this.$createElement, r = { notFoundContent: t(n, "Transfer") }, i = Object(u["g"])(this, "notFoundContent"); return i && (r.notFoundContent = i), Object(u["s"])(this, "searchPlaceholder") && (r.searchPlaceholder = this.$props.searchPlaceholder), c()({}, e, r, this.$props.locale) }, updateState: function () { var e = this.sourceSelectedKeys, t = this.targetSelectedKeys; if (this.separatedDataSource = null, !this.selectedKeys) { var n = this.dataSource, r = this.targetKeys, i = void 0 === r ? [] : r, o = [], a = []; n.forEach((function (n) { var r = n.key; e.includes(r) && !i.includes(r) && o.push(r), t.includes(r) && i.includes(r) && a.push(r) })), this.setState({ sourceSelectedKeys: o, targetSelectedKeys: a }) } }, moveTo: function (e) { var t = this.$props, n = t.targetKeys, r = void 0 === n ? [] : n, i = t.dataSource, o = void 0 === i ? [] : i, s = this.sourceSelectedKeys, c = this.targetSelectedKeys, l = "right" === e ? s : c, u = l.filter((function (e) { return !o.some((function (t) { return !(e !== t.key || !t.disabled) })) })), h = "right" === e ? u.concat(r) : r.filter((function (e) { return -1 === u.indexOf(e) })), f = "right" === e ? "left" : "right"; this.setState(a()({}, this.getSelectedKeysName(f), [])), this.handleSelectChange(f, []), this.$emit("change", h, e, u) }, moveToLeft: function () { this.moveTo("left") }, moveToRight: function () { this.moveTo("right") }, onItemSelectAll: function (e, t, n) { var r = this.$data[this.getSelectedKeysName(e)] || [], o = []; o = n ? Array.from(new Set([].concat(i()(r), i()(t)))) : r.filter((function (e) { return -1 === t.indexOf(e) })), this.handleSelectChange(e, o), this.$props.selectedKeys || this.setState(a()({}, this.getSelectedKeysName(e), o)) }, handleSelectAll: function (e, t, n) { this.onItemSelectAll(e, t.map((function (e) { var t = e.key; return t })), !n) }, handleLeftSelectAll: function (e, t) { return this.handleSelectAll("left", e, !t) }, handleRightSelectAll: function (e, t) { return this.handleSelectAll("right", e, !t) }, onLeftItemSelectAll: function (e, t) { return this.onItemSelectAll("left", e, t) }, onRightItemSelectAll: function (e, t) { return this.onItemSelectAll("right", e, t) }, handleFilter: function (e, t) { var n = t.target.value; Object(u["k"])(this).searchChange && (Object(C["a"])(!1, "Transfer", "`searchChange` in Transfer is deprecated. Please use `search` instead."), this.$emit("searchChange", e, t)), this.$emit("search", e, n) }, handleLeftFilter: function (e) { this.handleFilter("left", e) }, handleRightFilter: function (e) { this.handleFilter("right", e) }, handleClear: function (e) { this.$emit("search", e, "") }, handleLeftClear: function () { this.handleClear("left") }, handleRightClear: function () { this.handleClear("right") }, onItemSelect: function (e, t, n) { var r = this.sourceSelectedKeys, o = this.targetSelectedKeys, s = [].concat("left" === e ? i()(r) : i()(o)), c = s.indexOf(t); c > -1 && s.splice(c, 1), n && s.push(t), this.handleSelectChange(e, s), this.selectedKeys || this.setState(a()({}, this.getSelectedKeysName(e), s)) }, handleSelect: function (e, t, n) { Object(C["a"])(!1, "Transfer", "`handleSelect` will be removed, please use `onSelect` instead."), this.onItemSelect(e, t.key, n) }, handleLeftSelect: function (e, t) { return this.handleSelect("left", e, t) }, handleRightSelect: function (e, t) { return this.handleSelect("right", e, t) }, onLeftItemSelect: function (e, t) { return this.onItemSelect("left", e, t) }, onRightItemSelect: function (e, t) { return this.onItemSelect("right", e, t) }, handleScroll: function (e, t) { this.$emit("scroll", e, t) }, handleLeftScroll: function (e) { this.handleScroll("left", e) }, handleRightScroll: function (e) { this.handleScroll("right", e) }, handleSelectChange: function (e, t) { var n = this.sourceSelectedKeys, r = this.targetSelectedKeys; "left" === e ? this.$emit("selectChange", t, r) : this.$emit("selectChange", n, t) }, handleListStyle: function (e, t) { return "function" === typeof e ? e({ direction: t }) : e }, separateDataSource: function () { var e = this.$props, t = e.dataSource, n = e.rowKey, r = e.targetKeys, i = void 0 === r ? [] : r, o = [], a = new Array(i.length); return t.forEach((function (e) { n && (e.key = n(e)); var t = i.indexOf(e.key); -1 !== t ? a[t] = e : o.push(e) })), { leftDataSource: o, rightDataSource: a } }, renderTransfer: function (e) { var t, n = this.$createElement, r = Object(u["l"])(this), i = r.prefixCls, o = r.disabled, s = r.operations, c = void 0 === s ? [] : s, l = r.showSearch, h = r.listStyle, f = r.operationStyle, p = r.filterOption, v = r.lazy, m = r.showSelectAll, g = Object(u["g"])(this, "children", {}, !1), y = this.configProvider.getPrefixCls, b = y("transfer", i), x = this.configProvider.renderEmpty, w = this.getLocale(e, x), _ = this.sourceSelectedKeys, C = this.targetSelectedKeys, M = this.$scopedSlots, O = M.body, k = M.footer, S = r.render, T = this.separateDataSource(), A = T.leftDataSource, L = T.rightDataSource, j = C.length > 0, z = _.length > 0, E = d()(b, (t = {}, a()(t, b + "-disabled", o), a()(t, b + "-customize-list", !!g), t)), P = this.getTitles(w); return n("div", { class: E }, [n(X, { key: "leftList", attrs: { prefixCls: b + "-list", titleText: P[0], dataSource: A, filterOption: p, checkedKeys: _, handleFilter: this.handleLeftFilter, handleClear: this.handleLeftClear, handleSelect: this.handleLeftSelect, handleSelectAll: this.handleLeftSelectAll, renderItem: S, showSearch: l, body: O, renderList: g, footer: k, lazy: v, disabled: o, direction: "left", showSelectAll: m, itemUnit: w.itemUnit, itemsUnit: w.itemsUnit, notFoundContent: w.notFoundContent, searchPlaceholder: w.searchPlaceholder }, style: this.handleListStyle(h, "left"), on: { itemSelect: this.onLeftItemSelect, itemSelectAll: this.onLeftItemSelectAll, scroll: this.handleLeftScroll } }), n(ee, { key: "operation", class: b + "-operation", attrs: { rightActive: z, rightArrowText: c[0], moveToRight: this.moveToRight, leftActive: j, leftArrowText: c[1], moveToLeft: this.moveToLeft, disabled: o }, style: f }), n(X, { key: "rightList", attrs: { prefixCls: b + "-list", titleText: P[1], dataSource: L, filterOption: p, checkedKeys: C, handleFilter: this.handleRightFilter, handleClear: this.handleRightClear, handleSelect: this.handleRightSelect, handleSelectAll: this.handleRightSelectAll, renderItem: S, showSearch: l, body: O, renderList: g, footer: k, lazy: v, disabled: o, direction: "right", showSelectAll: m, itemUnit: w.itemUnit, itemsUnit: w.itemsUnit, notFoundContent: w.notFoundContent, searchPlaceholder: w.searchPlaceholder }, style: this.handleListStyle(h, "right"), on: { itemSelect: this.onRightItemSelect, itemSelectAll: this.onRightItemSelectAll, scroll: this.handleRightScroll } })]) } }, render: function () { var e = arguments[0]; return e(te["a"], { attrs: { componentName: "Transfer", defaultLocale: ne["a"].Transfer }, scopedSlots: { default: this.renderTransfer } }) }, install: function (e) { e.use(ie["a"]), e.component(se.name, se) } }); t["a"] = se }, "7b83": function (e, t, n) { var r = n("7c64"), i = n("93ed"), o = n("2478"), a = n("a524"), s = n("1fc8"); function c(e) { var t = -1, n = null == e ? 0 : e.length; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } c.prototype.clear = r, c.prototype["delete"] = i, c.prototype.get = o, c.prototype.has = a, c.prototype.set = s, e.exports = c }, "7b97": function (e, t, n) { var r = n("7e64"), i = n("a2be"), o = n("1c3c"), a = n("b1e5"), s = n("42a2"), c = n("6747"), l = n("0d24"), u = n("73ac"), h = 1, f = "[object Arguments]", d = "[object Array]", p = "[object Object]", v = Object.prototype, m = v.hasOwnProperty; function g(e, t, n, v, g, y) { var b = c(e), x = c(t), w = b ? d : s(e), _ = x ? d : s(t); w = w == f ? p : w, _ = _ == f ? p : _; var C = w == p, M = _ == p, O = w == _; if (O && l(e)) { if (!l(t)) return !1; b = !0, C = !1 } if (O && !C) return y || (y = new r), b || u(e) ? i(e, t, n, v, g, y) : o(e, t, w, n, v, g, y); if (!(n & h)) { var k = C && m.call(e, "__wrapped__"), S = M && m.call(t, "__wrapped__"); if (k || S) { var T = k ? e.value() : e, A = S ? t.value() : t; return y || (y = new r), g(T, A, n, v, y) } } return !!O && (y || (y = new r), a(e, t, n, v, g, y)) } e.exports = g }, "7b9e": function (e, t, n) { n("658f"), n("0b99"), e.exports = n("8aab") }, "7bec": function (e, t, n) { "use strict"; var r = n("6042"), i = n.n(r), o = n("8e8e"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("92fa"), u = n.n(l), h = n("9b57"), f = n.n(h), d = n("1b2b"), p = n.n(d), v = n("c449"), m = n.n(v), g = n("ec44"), y = n("d96e"), b = n.n(y), x = n("4d91"), w = n("18a7"), _ = n("8496"), C = n("1098"), M = n.n(C), O = n("0464"), k = n("c9a4"); function S(e, t) { if (e.classList) return e.classList.contains(t); var n = e.className; return (" " + n + " ").indexOf(" " + t + " ") > -1 } var T = "SHOW_ALL", A = "SHOW_PARENT", L = "SHOW_CHILD", j = n("daa3"), z = !1; function E(e, t) { var n = e; while (n) { if (S(n, t)) return n; n = n.parentNode } return null } function P(e) { return "string" === typeof e ? e : null } function D(e) { return void 0 === e || null === e ? [] : Array.isArray(e) ? e : [e] } function H() { var e = function (t) { e.current = t }; return e } var V = { userSelect: "none", WebkitUserSelect: "none" }, I = { unselectable: "unselectable" }; function N(e) { if (!e.length) return []; var t = {}, n = {}, r = e.slice().map((function (e) { var t = c()({}, e, { fields: e.pos.split("-") }); return delete t.children, t })); return r.forEach((function (e) { n[e.pos] = e })), r.sort((function (e, t) { return e.fields.length - t.fields.length })), r.forEach((function (e) { var r = e.fields.slice(0, -1).join("-"), i = n[r]; i ? (i.children = i.children || [], i.children.push(e)) : t[e.pos] = e, delete e.key, delete e.fields })), Object.keys(t).map((function (e) { return t[e] })) } var R = 0; function F(e) { return R += 1, e + "_" + R } function Y(e) { var t = e.treeCheckable, n = e.treeCheckStrictly, r = e.labelInValue; return !(!t || !n) || (r || !1) } function $(e, t) { var n = t.id, r = t.pId, i = t.rootPId, o = {}, a = [], s = e.map((function (e) { var t = c()({}, e), r = t[n]; return o[r] = t, t.key = t.key || r, t })); return s.forEach((function (e) { var t = e[r], n = o[t]; n && (n.children = n.children || [], n.children.push(e)), (t === i || !n && null === i) && a.push(e) })), a } function B(e, t) { for (var n = e.split("-"), r = t.split("-"), i = Math.min(n.length, r.length), o = 0; o < i; o += 1)if (n[o] !== r[o]) return !1; return !0 } function W(e) { var t = e.node, n = e.pos, r = e.children, i = { node: t, pos: n }; return r && (i.children = r.map(W)), i } function q(e, t, n, r, i, o) { if (!n) return null; function a(t) { if (!t || Object(j["u"])(t)) return null; var s = !1; r(n, t) && (s = !0); var c = Object(j["p"])(t)["default"]; return c = (("function" === typeof c ? c() : c) || []).map(a).filter((function (e) { return e })), c.length || s ? e(o, u()([t.data, { key: i[Object(j["m"])(t).value].key }]), [c]) : null } return t.map(a).filter((function (e) { return e })) } function U(e, t) { var n = D(e); return Y(t) ? n.map((function (e) { return "object" === ("undefined" === typeof e ? "undefined" : M()(e)) && e ? e : { value: "", label: "" } })) : n.map((function (e) { return { value: e } })) } function K(e, t, n) { if (e.label) return e.label; if (t) { var r = Object(j["m"])(t.node); if (Object.keys(r).length) return r[n] } return e.value } function G(e, t, n) { var r = t.treeNodeLabelProp, i = t.treeCheckable, o = t.treeCheckStrictly, a = t.showCheckedStrategy; if (i && !o) { var s = {}; e.forEach((function (e) { s[e.value] = e })); var c = N(e.map((function (e) { var t = e.value; return n[t] }))); if (a === A) return c.map((function (e) { var t = e.node, i = Object(j["m"])(t).value; return { label: K(s[i], n[i], r), value: i } })); if (a === L) { var l = [], u = function e(t) { var i = t.node, o = t.children, a = Object(j["m"])(i).value; o && 0 !== o.length ? o.forEach((function (t) { e(t) })) : l.push({ label: K(s[a], n[a], r), value: a }) }; return c.forEach((function (e) { u(e) })), l } } return e.map((function (e) { return { label: K(e, n[e.value], r), value: e.value } })) } function X(e) { var t = e.title, n = e.label, r = e.value, i = e["class"], o = e.style, a = e.on, s = void 0 === a ? {} : a, c = e.key; c || void 0 !== c && null !== c || (c = r); var l = { props: Object(O["a"])(e, ["on", "key", "class", "className", "style"]), on: s, class: i || e.className, style: o, key: c }; return n && !t && (z || (b()(!1, "'label' in treeData is deprecated. Please use 'title' instead."), z = !0), l.props.title = n), l } function J(e, t) { return Object(k["g"])(e, t, { processProps: X }) } function Q(e) { return c()({}, e, { valueEntities: {} }) } function Z(e, t) { var n = Object(j["m"])(e.node).value; e.value = n; var r = t.valueEntities[n]; r && b()(!1, "Conflict! value of node '" + e.key + "' (" + n + ") has already used by node '" + r.key + "'."), t.valueEntities[n] = e } function ee(e) { return Object(k["h"])(e, { initWrapper: Q, processEntity: Z }) } function te(e, t) { var n = {}; return e.forEach((function (e) { var t = e.value; n[t] = !1 })), e.forEach((function (e) { var r = e.value, i = t[r]; while (i && i.parent) { var o = i.parent.value; if (o in n) break; n[o] = !0, i = i.parent } })), Object.keys(n).filter((function (e) { return n[e] })).map((function (e) { return t[e].key })) } var ne = k["e"], re = n("4d26"), ie = n.n(re), oe = { bottomLeft: { points: ["tl", "bl"], offset: [0, 4], overflow: { adjustX: 0, adjustY: 1 }, ignoreShake: !0 }, topLeft: { points: ["bl", "tl"], offset: [0, -4], overflow: { adjustX: 0, adjustY: 1 }, ignoreShake: !0 } }, ae = { name: "SelectTrigger", props: { disabled: x["a"].bool, showSearch: x["a"].bool, prefixCls: x["a"].string, dropdownPopupAlign: x["a"].object, dropdownClassName: x["a"].string, dropdownStyle: x["a"].object, transitionName: x["a"].string, animation: x["a"].string, getPopupContainer: x["a"].func, dropdownMatchSelectWidth: x["a"].bool, isMultiple: x["a"].bool, dropdownPrefixCls: x["a"].string, dropdownVisibleChange: x["a"].func, popupElement: x["a"].node, open: x["a"].bool }, created: function () { this.triggerRef = H() }, methods: { getDropdownTransitionName: function () { var e = this.$props, t = e.transitionName, n = e.animation, r = e.dropdownPrefixCls; return !t && n ? r + "-" + n : t }, forcePopupAlign: function () { var e = this.triggerRef.current; e && e.forcePopupAlign() } }, render: function () { var e, t = arguments[0], n = this.$props, r = n.disabled, o = n.isMultiple, a = n.dropdownPopupAlign, s = n.dropdownMatchSelectWidth, c = n.dropdownClassName, l = n.dropdownStyle, h = n.dropdownVisibleChange, f = n.getPopupContainer, d = n.dropdownPrefixCls, p = n.popupElement, v = n.open, m = void 0; return !1 !== s && (m = s ? "width" : "minWidth"), t(_["a"], u()([{ directives: [{ name: "ant-ref", value: this.triggerRef }] }, { attrs: { action: r ? [] : ["click"], popupPlacement: "bottomLeft", builtinPlacements: oe, popupAlign: a, prefixCls: d, popupTransitionName: this.getDropdownTransitionName(), popup: p, popupVisible: v, getPopupContainer: f, stretch: m, popupClassName: ie()(c, (e = {}, i()(e, d + "--multiple", o), i()(e, d + "--single", !o), e)), popupStyle: l }, on: { popupVisibleChange: h } }]), [this.$slots["default"]]) } }, se = ae, ce = n("b488"), le = function () { return { prefixCls: x["a"].string, className: x["a"].string, open: x["a"].bool, selectorValueList: x["a"].array, allowClear: x["a"].bool, showArrow: x["a"].bool, removeSelected: x["a"].func, choiceTransitionName: x["a"].string, ariaId: x["a"].string, inputIcon: x["a"].any, clearIcon: x["a"].any, removeIcon: x["a"].any, placeholder: x["a"].any, disabled: x["a"].bool, focused: x["a"].bool } }; function ue() { } var he = function (e) { var t = { name: "BaseSelector", mixins: [ce["a"]], props: Object(j["t"])(c()({}, le(), { renderSelection: x["a"].func.isRequired, renderPlaceholder: x["a"].func, tabIndex: x["a"].number }), { tabIndex: 0 }), inject: { vcTreeSelect: { default: function () { return {} } } }, created: function () { this.domRef = H() }, methods: { onFocus: function (e) { var t = this.$props.focused, n = this.vcTreeSelect.onSelectorFocus; t || n(), this.__emit("focus", e) }, onBlur: function (e) { var t = this.vcTreeSelect.onSelectorBlur; t(), this.__emit("blur", e) }, focus: function () { this.domRef.current.focus() }, blur: function () { this.domRef.current.blur() }, renderClear: function () { var e = this.$createElement, t = this.$props, n = t.prefixCls, r = t.allowClear, i = t.selectorValueList, o = this.vcTreeSelect.onSelectorClear; if (!r || !i.length || !i[0].value) return null; var a = Object(j["g"])(this, "clearIcon"); return e("span", { key: "clear", class: n + "-selection__clear", on: { click: o } }, [a]) }, renderArrow: function () { var e = this.$createElement, t = this.$props, n = t.prefixCls, r = t.showArrow; if (!r) return null; var i = Object(j["g"])(this, "inputIcon"); return e("span", { key: "arrow", class: n + "-arrow", style: { outline: "none" } }, [i]) } }, render: function () { var t, n = arguments[0], r = this.$props, o = r.prefixCls, a = r.className, s = r.style, c = r.open, l = r.focused, h = r.disabled, f = r.allowClear, d = r.ariaId, p = r.renderSelection, v = r.renderPlaceholder, m = r.tabIndex, g = this.vcTreeSelect.onSelectorKeyDown, y = m; return h && (y = null), n("span", u()([{ style: s, on: { click: Object(j["k"])(this).click || ue }, class: ie()(a, o, (t = {}, i()(t, o + "-open", c), i()(t, o + "-focused", c || l), i()(t, o + "-disabled", h), i()(t, o + "-enabled", !h), i()(t, o + "-allow-clear", f), t)) }, { directives: [{ name: "ant-ref", value: this.domRef }] }, { attrs: { role: "combobox", "aria-expanded": c, "aria-owns": c ? d : void 0, "aria-controls": c ? d : void 0, "aria-haspopup": "listbox", "aria-disabled": h, tabIndex: y }, on: { focus: this.onFocus, blur: this.onBlur, keydown: g } }]), [n("span", { key: "selection", class: ie()(o + "-selection", o + "-selection--" + e) }, [p(), this.renderClear(), this.renderArrow(), v && v()])]) } }; return t }, fe = he("single"), de = { name: "SingleSelector", props: le(), created: function () { this.selectorRef = H() }, methods: { focus: function () { this.selectorRef.current.focus() }, blur: function () { this.selectorRef.current.blur() }, renderSelection: function () { var e = this.$createElement, t = this.$props, n = t.selectorValueList, r = t.placeholder, i = t.prefixCls, o = void 0; if (n.length) { var a = n[0], s = a.label, c = a.value; o = e("span", { key: "value", attrs: { title: P(s) }, class: i + "-selection-selected-value" }, [s || c]) } else o = e("span", { key: "placeholder", class: i + "-selection__placeholder" }, [r]); return e("span", { class: i + "-selection__rendered" }, [o]) } }, render: function () { var e = arguments[0], t = { props: c()({}, Object(j["l"])(this), { renderSelection: this.renderSelection }), on: Object(j["k"])(this), directives: [{ name: "ant-ref", value: this.selectorRef }] }; return e(fe, t) } }, pe = de, ve = { name: "SearchInput", props: { open: x["a"].bool, searchValue: x["a"].string, prefixCls: x["a"].string, disabled: x["a"].bool, renderPlaceholder: x["a"].func, needAlign: x["a"].bool, ariaId: x["a"].string }, inject: { vcTreeSelect: { default: function () { return {} } } }, data: function () { return { mirrorSearchValue: this.searchValue } }, watch: { searchValue: function (e) { this.mirrorSearchValue = e } }, created: function () { this.inputRef = H(), this.mirrorInputRef = H(), this.prevProps = c()({}, this.$props) }, mounted: function () { var e = this; this.$nextTick((function () { var t = e.$props, n = t.open, r = t.needAlign; r && e.alignInputWidth(), n && e.focus(!0) })) }, updated: function () { var e = this, t = this.$props, n = t.open, r = t.searchValue, i = t.needAlign, o = this.prevProps; this.$nextTick((function () { n && o.open !== n && e.focus(), i && r !== o.searchValue && e.alignInputWidth(), e.prevProps = c()({}, e.$props) })) }, methods: { alignInputWidth: function () { this.inputRef.current.style.width = (this.mirrorInputRef.current.clientWidth || this.mirrorInputRef.current.offsetWidth) + "px" }, focus: function (e) { var t = this; this.inputRef.current && (e ? setTimeout((function () { t.inputRef.current.focus() }), 0) : this.inputRef.current.focus()) }, blur: function () { this.inputRef.current && this.inputRef.current.blur() }, handleInputChange: function (e) { var t = e.target, n = t.value, r = t.composing, i = this.searchValue, o = void 0 === i ? "" : i; e.isComposing || r || o === n ? this.mirrorSearchValue = n : this.vcTreeSelect.onSearchInputChange(e) } }, render: function () { var e = arguments[0], t = this.$props, n = t.searchValue, r = t.prefixCls, i = t.disabled, o = t.renderPlaceholder, a = t.open, s = t.ariaId, c = this.vcTreeSelect.onSearchInputKeyDown, l = this.handleInputChange, h = this.mirrorSearchValue; return e("span", { class: r + "-search__field__wrap" }, [e("input", u()([{ attrs: { type: "text" } }, { directives: [{ name: "ant-ref", value: this.inputRef }, { name: "ant-input" }] }, { on: { input: l, keydown: c }, domProps: { value: n }, attrs: { disabled: i, "aria-label": "filter select", "aria-autocomplete": "list", "aria-controls": a ? s : void 0, "aria-multiline": "false" }, class: r + "-search__field" }])), e("span", u()([{ directives: [{ name: "ant-ref", value: this.mirrorInputRef }] }, { class: r + "-search__field__mirror" }]), [h, "聽"]), o && !h ? o() : null]) } }, me = ve, ge = { mixins: [ce["a"]], props: { prefixCls: x["a"].string, maxTagTextLength: x["a"].number, label: x["a"].any, value: x["a"].oneOfType([x["a"].string, x["a"].number]), removeIcon: x["a"].any }, methods: { onRemove: function (e) { var t = this.$props.value; this.__emit("remove", e, t), e.stopPropagation() } }, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.maxTagTextLength, i = t.label, o = t.value, a = i || o; return r && "string" === typeof a && a.length > r && (a = a.slice(0, r) + "..."), e("li", u()([{ style: V }, { attrs: I }, { attrs: { role: "menuitem", title: P(i) }, class: n + "-selection__choice" }]), [Object(j["k"])(this).remove && e("span", { class: n + "-selection__choice__remove", on: { click: this.onRemove } }, [Object(j["g"])(this, "removeIcon")]), e("span", { class: n + "-selection__choice__content" }, [a])]) } }, ye = ge, be = n("94eb"), xe = "RC_TREE_SELECT_EMPTY_VALUE_KEY", we = he("multiple"), _e = { mixins: [ce["a"]], props: c()({}, le(), me.props, { selectorValueList: x["a"].array, disabled: x["a"].bool, searchValue: x["a"].string, labelInValue: x["a"].bool, maxTagCount: x["a"].number, maxTagPlaceholder: x["a"].any }), inject: { vcTreeSelect: { default: function () { return {} } } }, created: function () { this.inputRef = H() }, methods: { onPlaceholderClick: function () { this.inputRef.current.focus() }, focus: function () { this.inputRef.current.focus() }, blur: function () { this.inputRef.current.blur() }, _renderPlaceholder: function () { var e = this.$createElement, t = this.$props, n = t.prefixCls, r = t.placeholder, i = t.searchPlaceholder, o = t.searchValue, a = t.selectorValueList, s = r || i; if (!s) return null; var c = o || a.length; return e("span", { style: { display: c ? "none" : "block" }, on: { click: this.onPlaceholderClick }, class: n + "-search__field__placeholder" }, [s]) }, onChoiceAnimationLeave: function () { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; this.__emit.apply(this, ["choiceAnimationLeave"].concat(f()(t))) }, renderSelection: function () { var e = this, t = this.$createElement, n = this.$props, r = n.selectorValueList, i = n.choiceTransitionName, o = n.prefixCls, a = n.labelInValue, s = n.maxTagCount, l = this.vcTreeSelect.onMultipleSelectorRemove, h = this.$slots, f = Object(j["k"])(this), d = r; s >= 0 && (d = r.slice(0, s)); var p = d.map((function (n) { var r = n.label, i = n.value; return t(ye, u()([{ props: c()({}, e.$props, { label: r, value: i }), on: c()({}, f, { remove: l }) }, { key: i || xe }]), [h["default"]]) })); if (s >= 0 && s < r.length) { var v = "+ " + (r.length - s) + " ...", m = Object(j["g"])(this, "maxTagPlaceholder", {}, !1); if ("string" === typeof m) v = m; else if ("function" === typeof m) { var g = r.slice(s); v = m(a ? g : g.map((function (e) { var t = e.value; return t }))) } var y = t(ye, u()([{ props: c()({}, this.$props, { label: v, value: null }), on: f }, { key: "rc-tree-select-internal-max-tag-counter" }]), [h["default"]]); p.push(y) } p.push(t("li", { class: o + "-search " + o + "-search--inline", key: "__input" }, [t(me, { props: c()({}, this.$props, { needAlign: !0 }), on: f, directives: [{ name: "ant-ref", value: this.inputRef }] }, [h["default"]])])); var b = o + "-selection__rendered"; if (i) { var x = Object(be["a"])(i, { tag: "ul", afterLeave: this.onChoiceAnimationLeave }); return t("transition-group", u()([{ class: b }, x]), [p]) } return t("ul", { class: b, attrs: { role: "menubar" } }, [p]) } }, render: function () { var e = arguments[0], t = this.$slots, n = Object(j["k"])(this); return e(we, { props: c()({}, this.$props, { tabIndex: -1, showArrow: !1, renderSelection: this.renderSelection, renderPlaceholder: this._renderPlaceholder }), on: n }, [t["default"]]) } }, Ce = _e, Me = n("7d1c"); function Oe(e, t) { var n = t || {}, r = n._prevProps, i = void 0 === r ? {} : r, o = n._loadedKeys, a = n._expandedKeyList, s = n._cachedExpandedKeyList, l = e.valueList, u = e.valueEntities, h = e.keyEntities, d = e.treeExpandedKeys, p = e.filteredTreeNodes, v = e.upperSearchValue, m = { _prevProps: c()({}, e) }; return l !== i.valueList && (m._keyList = l.map((function (e) { var t = e.value; return u[t] })).filter((function (e) { return e })).map((function (e) { var t = e.key; return t }))), !d && p && p.length && p !== i.filteredTreeNodes && (m._expandedKeyList = [].concat(f()(h.keys()))), v && !i.upperSearchValue ? m._cachedExpandedKeyList = a : v || !i.upperSearchValue || d || (m._expandedKeyList = s || [], m._cachedExpandedKeyList = []), i.treeExpandedKeys !== d && (m._expandedKeyList = d), e.loadData && (m._loadedKeys = o.filter((function (e) { return h.has(e) }))), m } var ke = { mixins: [ce["a"]], name: "BasePopup", props: { prefixCls: x["a"].string, upperSearchValue: x["a"].string, valueList: x["a"].array, searchHalfCheckedKeys: x["a"].array, valueEntities: x["a"].object, keyEntities: Map, treeIcon: x["a"].bool, treeLine: x["a"].bool, treeNodeFilterProp: x["a"].string, treeCheckable: x["a"].any, treeCheckStrictly: x["a"].bool, treeDefaultExpandAll: x["a"].bool, treeDefaultExpandedKeys: x["a"].array, treeExpandedKeys: x["a"].array, loadData: x["a"].func, multiple: x["a"].bool, searchValue: x["a"].string, treeNodes: x["a"].any, filteredTreeNodes: x["a"].any, notFoundContent: x["a"].any, ariaId: x["a"].string, switcherIcon: x["a"].any, renderSearch: x["a"].func, __propsSymbol__: x["a"].any }, inject: { vcTreeSelect: { default: function () { return {} } } }, watch: { __propsSymbol__: function () { var e = Oe(this.$props, this.$data); this.setState(e) } }, data: function () { this.treeRef = H(), b()(this.$props.__propsSymbol__, "must pass __propsSymbol__"); var e = this.$props, t = e.treeDefaultExpandAll, n = e.treeDefaultExpandedKeys, r = e.keyEntities, i = n; t && (i = [].concat(f()(r.keys()))); var o = { _keyList: [], _expandedKeyList: i, _cachedExpandedKeyList: [], _loadedKeys: [], _prevProps: {} }; return c()({}, o, Oe(this.$props, o)) }, methods: { onTreeExpand: function (e) { var t = this, n = this.$props.treeExpandedKeys; n || this.setState({ _expandedKeyList: e }, (function () { t.__emit("treeExpanded") })), this.__emit("update:treeExpandedKeys", e), this.__emit("treeExpand", e) }, onLoad: function (e) { this.setState({ _loadedKeys: e }) }, getTree: function () { return this.treeRef.current }, getLoadData: function () { var e = this.$props, t = e.loadData, n = e.upperSearchValue; return n ? null : t }, filterTreeNode: function (e) { var t = this.$props, n = t.upperSearchValue, r = t.treeNodeFilterProp, i = e[r]; return "string" === typeof i && (n && -1 !== i.toUpperCase().indexOf(n)) }, renderNotFound: function () { var e = this.$createElement, t = this.$props, n = t.prefixCls, r = t.notFoundContent; return e("span", { class: n + "-not-found" }, [r]) } }, render: function () { var e = arguments[0], t = this.$data, n = t._keyList, r = t._expandedKeyList, i = t._loadedKeys, o = this.$props, a = o.prefixCls, s = o.treeNodes, l = o.filteredTreeNodes, u = o.treeIcon, h = o.treeLine, f = o.treeCheckable, d = o.treeCheckStrictly, p = o.multiple, v = o.ariaId, m = o.renderSearch, g = o.switcherIcon, y = o.searchHalfCheckedKeys, b = this.vcTreeSelect, x = b.onPopupKeyDown, w = b.onTreeNodeSelect, _ = b.onTreeNodeCheck, C = this.getLoadData(), M = {}; f ? M.checkedKeys = n : M.selectedKeys = n; var O = void 0, k = void 0; l ? l.length ? (M.checkStrictly = !0, k = l, f && !d && (M.checkedKeys = { checked: n, halfChecked: y })) : O = this.renderNotFound() : s && s.length ? k = s : O = this.renderNotFound(); var S = void 0; if (O) S = O; else { var T = { props: c()({ prefixCls: a + "-tree", showIcon: u, showLine: h, selectable: !f, checkable: f, checkStrictly: d, multiple: p, loadData: C, loadedKeys: i, expandedKeys: r, filterTreeNode: this.filterTreeNode, switcherIcon: g }, M, { __propsSymbol__: Symbol(), children: k }), on: { select: w, check: _, expand: this.onTreeExpand, load: this.onLoad }, directives: [{ name: "ant-ref", value: this.treeRef }] }; S = e(Me["Tree"], T) } return e("div", { attrs: { role: "listbox", id: v, tabIndex: -1 }, on: { keydown: x } }, [m ? m() : null, S]) } }, Se = ke, Te = { name: "SinglePopup", props: c()({}, Se.props, me.props, { searchValue: x["a"].string, showSearch: x["a"].bool, dropdownPrefixCls: x["a"].string, disabled: x["a"].bool, searchPlaceholder: x["a"].string }), created: function () { this.inputRef = H(), this.searchRef = H(), this.popupRef = H() }, methods: { onPlaceholderClick: function () { this.inputRef.current.focus() }, getTree: function () { return this.popupRef.current && this.popupRef.current.getTree() }, _renderPlaceholder: function () { var e = this.$createElement, t = this.$props, n = t.searchPlaceholder, r = t.searchValue, i = t.prefixCls; return n ? e("span", { style: { display: r ? "none" : "block" }, on: { click: this.onPlaceholderClick }, class: i + "-search__field__placeholder" }, [n]) : null }, _renderSearch: function () { var e = this.$createElement, t = this.$props, n = t.showSearch, r = t.dropdownPrefixCls; return n ? e("span", u()([{ class: r + "-search" }, { directives: [{ name: "ant-ref", value: this.searchRef }] }]), [e(me, { props: c()({}, this.$props, { renderPlaceholder: this._renderPlaceholder }), on: Object(j["k"])(this), directives: [{ name: "ant-ref", value: this.inputRef }] })]) : null } }, render: function () { var e = arguments[0]; return e(Se, { props: c()({}, this.$props, { renderSearch: this._renderSearch, __propsSymbol__: Symbol() }), on: Object(j["k"])(this), directives: [{ name: "ant-ref", value: this.popupRef }] }) } }, Ae = Te, Le = Se, je = { name: "SelectNode", functional: !0, isTreeNode: !0, props: Me["TreeNode"].props, render: function (e, t) { var n = t.props, r = t.slots, i = t.listeners, o = t.data, a = t.scopedSlots, s = r() || {}, l = s["default"], u = Object.keys(s), h = {}; u.forEach((function (e) { h[e] = function () { return s[e] } })); var f = c()({}, o, { on: c()({}, i, o.nativeOn), props: n, scopedSlots: c()({}, h, a) }); return e(Me["TreeNode"], f, [l]) } }; function ze() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = {}; return e.forEach((function (e) { t[e] = function () { this.needSyncKeys[e] = !0 } })), t } var Ee = { name: "Select", mixins: [ce["a"]], props: Object(j["t"])({ prefixCls: x["a"].string, prefixAria: x["a"].string, multiple: x["a"].bool, showArrow: x["a"].bool, open: x["a"].bool, value: x["a"].any, autoFocus: x["a"].bool, defaultOpen: x["a"].bool, defaultValue: x["a"].any, showSearch: x["a"].bool, placeholder: x["a"].any, inputValue: x["a"].string, searchValue: x["a"].string, autoClearSearchValue: x["a"].bool, searchPlaceholder: x["a"].any, disabled: x["a"].bool, children: x["a"].any, labelInValue: x["a"].bool, maxTagCount: x["a"].number, maxTagPlaceholder: x["a"].oneOfType([x["a"].any, x["a"].func]), maxTagTextLength: x["a"].number, showCheckedStrategy: x["a"].oneOf([T, A, L]), dropdownClassName: x["a"].string, dropdownStyle: x["a"].object, dropdownVisibleChange: x["a"].func, dropdownMatchSelectWidth: x["a"].bool, treeData: x["a"].array, treeDataSimpleMode: x["a"].oneOfType([x["a"].bool, x["a"].object]), treeNodeFilterProp: x["a"].string, treeNodeLabelProp: x["a"].string, treeCheckable: x["a"].oneOfType([x["a"].any, x["a"].object, x["a"].bool]), treeCheckStrictly: x["a"].bool, treeIcon: x["a"].bool, treeLine: x["a"].bool, treeDefaultExpandAll: x["a"].bool, treeDefaultExpandedKeys: x["a"].array, treeExpandedKeys: x["a"].array, loadData: x["a"].func, filterTreeNode: x["a"].oneOfType([x["a"].func, x["a"].bool]), notFoundContent: x["a"].any, getPopupContainer: x["a"].func, allowClear: x["a"].bool, transitionName: x["a"].string, animation: x["a"].string, choiceTransitionName: x["a"].string, inputIcon: x["a"].any, clearIcon: x["a"].any, removeIcon: x["a"].any, switcherIcon: x["a"].any, __propsSymbol__: x["a"].any }, { prefixCls: "rc-tree-select", prefixAria: "rc-tree-select", showArrow: !0, showSearch: !0, autoClearSearchValue: !0, showCheckedStrategy: L, treeNodeFilterProp: "value", treeNodeLabelProp: "title", treeIcon: !1, notFoundContent: "Not Found", dropdownStyle: {}, dropdownVisibleChange: function () { return !0 } }), data: function () { b()(this.$props.__propsSymbol__, "must pass __propsSymbol__"); var e = this.$props, t = e.prefixAria, n = e.defaultOpen, r = e.open; this.needSyncKeys = {}, this.selectorRef = H(), this.selectTriggerRef = H(), this.ariaId = F(t + "-list"); var i = { _open: r || n, _valueList: [], _searchHalfCheckedKeys: [], _missValueList: [], _selectorValueList: [], _valueEntities: {}, _posEntities: new Map, _keyEntities: new Map, _searchValue: "", _prevProps: {}, _init: !0, _focused: void 0, _treeNodes: void 0, _filteredTreeNodes: void 0 }, o = this.getDerivedState(this.$props, i); return c()({}, i, o) }, provide: function () { return { vcTreeSelect: { onSelectorFocus: this.onSelectorFocus, onSelectorBlur: this.onSelectorBlur, onSelectorKeyDown: this.onComponentKeyDown, onSelectorClear: this.onSelectorClear, onMultipleSelectorRemove: this.onMultipleSelectorRemove, onTreeNodeSelect: this.onTreeNodeSelect, onTreeNodeCheck: this.onTreeNodeCheck, onPopupKeyDown: this.onComponentKeyDown, onSearchInputChange: this.onSearchInputChange, onSearchInputKeyDown: this.onSearchInputKeyDown } } }, watch: c()({}, ze(["treeData", "defaultValue", "value"]), { __propsSymbol__: function () { var e = this.getDerivedState(this.$props, this.$data); this.setState(e), this.needSyncKeys = {} }, "$data._valueList": function () { var e = this; this.$nextTick((function () { e.forcePopupAlign() })) }, "$data._open": function (e) { var t = this; setTimeout((function () { var n = t.$props.prefixCls, r = t.$data, i = r._selectorValueList, o = r._valueEntities, a = t.isMultiple(); if (!a && i.length && e && t.popup) { var s = i[0].value, c = t.popup.getTree(), l = c.domTreeNodes, u = o[s] || {}, h = u.key, f = l[h]; if (f) { var d = f.$el; m()((function () { var e = t.popup.$el, r = E(e, n + "-dropdown"), i = t.popup.searchRef.current; d && r && i && Object(g["a"])(d, r, { onlyScrollIfNeeded: !0, offsetTop: i.offsetHeight }) })) } } })) } }), mounted: function () { var e = this; this.$nextTick((function () { var t = e.$props, n = t.autoFocus, r = t.disabled; n && !r && e.focus() })) }, methods: { getDerivedState: function (e, t) { var n = this.$createElement, r = t._prevProps, i = void 0 === r ? {} : r, o = e.treeCheckable, a = e.treeCheckStrictly, s = e.filterTreeNode, l = e.treeNodeFilterProp, u = e.treeDataSimpleMode, h = { _prevProps: c()({}, e), _init: !1 }, d = this; function v(t, n) { return !(i[t] === e[t] && !d.needSyncKeys[t]) && (n(e[t], i[t]), !0) } var m = !1; v("open", (function (e) { h._open = e })); var g = void 0, y = !1, b = !1; if (v("treeData", (function (e) { g = J(n, e), y = !0 })), v("treeDataSimpleMode", (function (e, t) { if (e) { var n = t && !0 !== t ? t : {}; p()(e, n) || (b = !0) } })), u && (y || b)) { var x = c()({ id: "id", pId: "pId", rootPId: null }, !0 !== u ? u : {}); g = J(n, $(e.treeData, x)) } if (e.treeData || (g = Object(j["c"])(this.$slots["default"])), g) { var w = ee(g); h._treeNodes = g, h._posEntities = w.posEntities, h._valueEntities = w.valueEntities, h._keyEntities = w.keyEntities, m = !0 } if (t._init && v("defaultValue", (function (t) { h._valueList = U(t, e), m = !0 })), v("value", (function (t) { h._valueList = U(t, e), m = !0 })), m) { var _ = [], C = [], M = [], O = h._valueList; O || (O = [].concat(f()(t._valueList), f()(t._missValueList))); var k = {}; if (O.forEach((function (e) { var n = e.value, r = e.label, i = (h._valueEntities || t._valueEntities)[n]; if (k[n] = r, i) return M.push(i.key), void C.push(e); _.push(e) })), o && !a) { var S = ne(M, !0, h._keyEntities || t._keyEntities), T = S.checkedKeys; h._valueList = T.map((function (e) { var n = (h._keyEntities || t._keyEntities).get(e).value, r = { value: n }; return void 0 !== k[n] && (r.label = k[n]), r })) } else h._valueList = C; h._missValueList = _, h._selectorValueList = G(h._valueList, e, h._valueEntities || t._valueEntities) } if (v("inputValue", (function (e) { null !== e && (h._searchValue = e) })), v("searchValue", (function (e) { h._searchValue = e })), void 0 !== h._searchValue || t._searchValue && g) { var A = void 0 !== h._searchValue ? h._searchValue : t._searchValue, L = String(A).toUpperCase(), z = s; !1 === s ? z = function () { return !0 } : "function" !== typeof z && (z = function (e, t) { var n = String(Object(j["m"])(t)[l]).toUpperCase(); return -1 !== n.indexOf(L) }), h._filteredTreeNodes = q(this.$createElement, h._treeNodes || t._treeNodes, A, z, h._valueEntities || t._valueEntities, je) } return m && o && !a && (h._searchValue || t._searchValue) && (h._searchHalfCheckedKeys = te(h._valueList, h._valueEntities || t._valueEntities)), v("showCheckedStrategy", (function () { h._selectorValueList = h._selectorValueList || G(h._valueList || t._valueList, e, h._valueEntities || t._valueEntities) })), h }, onSelectorFocus: function () { this.setState({ _focused: !0 }) }, onSelectorBlur: function () { this.setState({ _focused: !1 }) }, onComponentKeyDown: function (e) { var t = this.$data._open, n = e.keyCode; t ? w["a"].ESC === n ? this.setOpenState(!1) : -1 !== [w["a"].UP, w["a"].DOWN, w["a"].LEFT, w["a"].RIGHT].indexOf(n) && e.stopPropagation() : -1 !== [w["a"].ENTER, w["a"].DOWN].indexOf(n) && this.setOpenState(!0) }, onDeselect: function (e, t, n) { this.__emit("deselect", e, t, n) }, onSelectorClear: function (e) { var t = this.$props.disabled; t || (this.triggerChange([], []), this.isSearchValueControlled() || this.setUncontrolledState({ _searchValue: "", _filteredTreeNodes: null }), e.stopPropagation()) }, onMultipleSelectorRemove: function (e, t) { e.stopPropagation(); var n = this.$data, r = n._valueList, i = n._missValueList, o = n._valueEntities, a = this.$props, s = a.treeCheckable, c = a.treeCheckStrictly, l = a.treeNodeLabelProp, u = a.disabled; if (!u) { var h = o[t], f = r; h && (f = s && !c ? r.filter((function (e) { var t = e.value, n = o[t]; return !B(n.pos, h.pos) })) : r.filter((function (e) { var n = e.value; return n !== t }))); var d = h ? h.node : null, p = { triggerValue: t, triggerNode: d }, v = { node: d }; if (s) { var m = f.map((function (e) { var t = e.value; return o[t] })); v.event = "check", v.checked = !1, v.checkedNodes = m.map((function (e) { var t = e.node; return t })), v.checkedNodesPositions = m.map((function (e) { var t = e.node, n = e.pos; return { node: t, pos: n } })), p.allCheckedNodes = c ? v.checkedNodes : N(m).map((function (e) { var t = e.node; return t })) } else v.event = "select", v.selected = !1, v.selectedNodes = f.map((function (e) { var t = e.value; return (o[t] || {}).node })); var g = i.filter((function (e) { var n = e.value; return n !== t })), y = void 0; y = this.isLabelInValue() ? { label: d ? Object(j["m"])(d)[l] : null, value: t } : t, this.onDeselect(y, d, v), this.triggerChange(g, f, p) } }, onValueTrigger: function (e, t, n, r) { var i = n.node, o = i.$props.value, a = this.$data, s = a._missValueList, l = a._valueEntities, u = a._keyEntities, h = a._searchValue, f = this.$props, d = f.disabled, p = f.inputValue, v = f.treeNodeLabelProp, m = f.multiple, g = f.treeCheckable, y = f.treeCheckStrictly, b = f.autoClearSearchValue, x = i.$props[v]; if (!d) { var w = void 0; w = this.isLabelInValue() ? { value: o, label: x } : o, e ? this.__emit("select", w, i, n) : this.__emit("deselect", w, i, n); var _ = t.map((function (e) { var t = Object(j["m"])(e); return { value: t.value, label: t[v] } })); if (g && !y) { var C = _.map((function (e) { var t = e.value; return l[t].key })); C = e ? ne(C, !0, u).checkedKeys : ne([l[o].key], !1, u, { checkedKeys: C }).checkedKeys, _ = C.map((function (e) { var t = Object(j["m"])(u.get(e).node); return { value: t.value, label: t[v] } })) } (b || null === p) && (this.isSearchValueControlled() || !m && !g || this.setUncontrolledState({ _searchValue: "", _filteredTreeNodes: null }), h && h.length && (this.__emit("update:searchValue", ""), this.__emit("search", ""))); var M = c()({}, r, { triggerValue: o, triggerNode: i }); this.triggerChange(s, _, M) } }, onTreeNodeSelect: function (e, t) { var n = this.$data, r = n._valueList, i = n._valueEntities, o = this.$props, a = o.treeCheckable, s = o.multiple; if (!a) { s || this.setOpenState(!1); var c = t.selected, l = t.node.$props.value, u = void 0; s ? (u = r.filter((function (e) { var t = e.value; return t !== l })), c && u.push({ value: l })) : u = [{ value: l }]; var h = u.map((function (e) { var t = e.value; return i[t] })).filter((function (e) { return e })).map((function (e) { var t = e.node; return t })); this.onValueTrigger(c, h, t, { selected: c }) } }, onTreeNodeCheck: function (e, t) { var n = this.$data, r = n._searchValue, i = n._keyEntities, o = n._valueEntities, a = n._valueList, s = this.$props.treeCheckStrictly, c = t.checkedNodes, l = t.checkedNodesPositions, u = t.checked, h = { checked: u }, d = c; if (r) { var p = a.map((function (e) { var t = e.value; return o[t] })).filter((function (e) { return e })).map((function (e) { var t = e.key; return t })), v = void 0; v = u ? Array.from(new Set([].concat(f()(p), f()(d.map((function (e) { var t = Object(j["m"])(e), n = t.value; return o[n].key })))))) : ne([Object(j["m"])(t.node).eventKey], !1, i, { checkedKeys: p }).checkedKeys, d = v.map((function (e) { return i.get(e).node })), h.allCheckedNodes = v.map((function (e) { return W(i.get(e)) })) } else h.allCheckedNodes = s ? t.checkedNodes : N(l); this.onValueTrigger(u, d, t, h) }, onDropdownVisibleChange: function (e) { var t = this.$props, n = t.multiple, r = t.treeCheckable, i = this.$data._searchValue; e && !n && !r && i && this.setUncontrolledState({ _searchValue: "", _filteredTreeNodes: null }), this.setOpenState(e, !0) }, onSearchInputChange: function (e) { var t = e.target.value, n = this.$data, r = n._treeNodes, i = n._valueEntities, o = this.$props, a = o.filterTreeNode, s = o.treeNodeFilterProp; this.__emit("update:searchValue", t), this.__emit("search", t); var c = !1; if (this.isSearchValueControlled() || (c = this.setUncontrolledState({ _searchValue: t }), this.setOpenState(!0)), c) { var l = String(t).toUpperCase(), u = a; !1 === a ? u = function () { return !0 } : u || (u = function (e, t) { var n = String(Object(j["m"])(t)[s]).toUpperCase(); return -1 !== n.indexOf(l) }), this.setState({ _filteredTreeNodes: q(this.$createElement, r, t, u, i, je) }) } }, onSearchInputKeyDown: function (e) { var t = this.$data, n = t._searchValue, r = t._valueList, i = e.keyCode; if (w["a"].BACKSPACE === i && this.isMultiple() && !n && r.length) { var o = r[r.length - 1].value; this.onMultipleSelectorRemove(e, o) } }, onChoiceAnimationLeave: function () { var e = this; m()((function () { e.forcePopupAlign() })) }, setPopupRef: function (e) { this.popup = e }, setUncontrolledState: function (e) { var t = !1, n = {}, r = Object(j["l"])(this); return Object.keys(e).forEach((function (i) { i.slice(1) in r || (t = !0, n[i] = e[i]) })), t && this.setState(n), t }, setOpenState: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = this.$props.dropdownVisibleChange; n && !1 === n(e, { documentClickClose: !e && t }) || this.setUncontrolledState({ _open: e }) }, isMultiple: function () { var e = this.$props, t = e.multiple, n = e.treeCheckable; return !(!t && !n) }, isLabelInValue: function () { return Y(this.$props) }, isSearchValueControlled: function () { var e = Object(j["l"])(this), t = e.inputValue; return "searchValue" in e || "inputValue" in e && null !== t }, forcePopupAlign: function () { var e = this.selectTriggerRef.current; e && e.forcePopupAlign() }, delayForcePopupAlign: function () { var e = this; m()((function () { m()(e.forcePopupAlign) })) }, triggerChange: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, r = this.$data, i = r._valueEntities, o = r._searchValue, a = r._selectorValueList, s = Object(j["l"])(this), l = s.disabled, u = s.treeCheckable, h = s.treeCheckStrictly; if (!l) { var d = c()({ preValue: a.map((function (e) { var t = e.label, n = e.value; return { label: t, value: n } })) }, n), p = G(t, s, i); if (!("value" in s)) { var v = { _missValueList: e, _valueList: t, _selectorValueList: p }; o && u && !h && (v._searchHalfCheckedKeys = te(t, i)), this.setState(v) } if (Object(j["k"])(this).change) { var m = void 0; m = this.isMultiple() ? [].concat(f()(e), f()(p)) : p.slice(0, 1); var g = null, y = void 0; this.isLabelInValue() ? y = m.map((function (e) { var t = e.label, n = e.value; return { label: t, value: n } })) : (g = [], y = m.map((function (e) { var t = e.label, n = e.value; return g.push(t), n }))), this.isMultiple() || (y = y[0]), this.__emit("change", y, g, d) } } }, focus: function () { this.selectorRef.current.focus() }, blur: function () { this.selectorRef.current.blur() } }, render: function () { var e = arguments[0], t = this.$data, n = t._valueList, r = t._missValueList, i = t._selectorValueList, o = t._searchHalfCheckedKeys, a = t._valueEntities, s = t._keyEntities, l = t._searchValue, h = t._open, d = t._focused, p = t._treeNodes, v = t._filteredTreeNodes, m = Object(j["l"])(this), g = m.prefixCls, y = m.treeExpandedKeys, b = this.isMultiple(), x = { props: c()({}, m, { isMultiple: b, valueList: n, searchHalfCheckedKeys: o, selectorValueList: [].concat(f()(r), f()(i)), valueEntities: a, keyEntities: s, searchValue: l, upperSearchValue: (l || "").toUpperCase(), open: h, focused: d, dropdownPrefixCls: g + "-dropdown", ariaId: this.ariaId }), on: c()({}, Object(j["k"])(this), { choiceAnimationLeave: this.onChoiceAnimationLeave }), scopedSlots: this.$scopedSlots }, w = Object(j["x"])(x, { props: { treeNodes: p, filteredTreeNodes: v, treeExpandedKeys: y, __propsSymbol__: Symbol() }, on: { treeExpanded: this.delayForcePopupAlign }, directives: [{ name: "ant-ref", value: this.setPopupRef }] }), _ = b ? Le : Ae, C = e(_, w), M = b ? Ce : pe, O = e(M, u()([x, { directives: [{ name: "ant-ref", value: this.selectorRef }] }])), k = Object(j["x"])(x, { props: { popupElement: C, dropdownVisibleChange: this.onDropdownVisibleChange }, directives: [{ name: "ant-ref", value: this.selectTriggerRef }] }); return e(se, k, [O]) } }; Ee.TreeNode = je, Ee.SHOW_ALL = T, Ee.SHOW_PARENT = A, Ee.SHOW_CHILD = L, Ee.name = "TreeSelect"; var Pe = Ee, De = je, He = Pe, Ve = n("8bbf"), Ie = n.n(Ve), Ne = n("46cf"), Re = n.n(Ne); Ie.a.use(Re.a, { name: "ant-ref" }); var Fe = He, Ye = n("9839"), $e = (x["a"].shape({ key: x["a"].string, value: x["a"].string, label: x["a"].any, scopedSlots: x["a"].object, children: x["a"].array }).loose, function () { return c()({}, Object(Ye["a"])(), { autoFocus: x["a"].bool, dropdownStyle: x["a"].object, filterTreeNode: x["a"].oneOfType([Function, Boolean]), getPopupContainer: x["a"].func, labelInValue: x["a"].bool, loadData: x["a"].func, maxTagCount: x["a"].number, maxTagPlaceholder: x["a"].any, value: x["a"].oneOfType([x["a"].string, x["a"].object, x["a"].array, x["a"].number]), defaultValue: x["a"].oneOfType([x["a"].string, x["a"].object, x["a"].array, x["a"].number]), multiple: x["a"].bool, notFoundContent: x["a"].any, searchPlaceholder: x["a"].string, searchValue: x["a"].string, showCheckedStrategy: x["a"].oneOf(["SHOW_ALL", "SHOW_PARENT", "SHOW_CHILD"]), suffixIcon: x["a"].any, treeCheckable: x["a"].oneOfType([x["a"].any, x["a"].bool]), treeCheckStrictly: x["a"].bool, treeData: x["a"].arrayOf(Object), treeDataSimpleMode: x["a"].oneOfType([Boolean, Object]), dropdownClassName: x["a"].string, dropdownMatchSelectWidth: x["a"].bool, treeDefaultExpandAll: x["a"].bool, treeExpandedKeys: x["a"].array, treeIcon: x["a"].bool, treeDefaultExpandedKeys: x["a"].array, treeNodeFilterProp: x["a"].string, treeNodeLabelProp: x["a"].string, replaceFields: x["a"].object.def({}) }) }), Be = n("6a21"), We = n("9cba"), qe = n("db14"), Ue = n("0c63"), Ke = { TreeNode: c()({}, De, { name: "ATreeSelectNode" }), SHOW_ALL: T, SHOW_PARENT: A, SHOW_CHILD: L, name: "ATreeSelect", props: Object(j["t"])($e(), { transitionName: "slide-up", choiceTransitionName: "zoom", showSearch: !1 }), model: { prop: "value", event: "change" }, inject: { configProvider: { default: function () { return We["a"] } } }, created: function () { Object(Be["a"])(!1 !== this.multiple || !this.treeCheckable, "TreeSelect", "`multiple` will alway be `true` when `treeCheckable` is true") }, methods: { focus: function () { this.$refs.vcTreeSelect.focus() }, blur: function () { this.$refs.vcTreeSelect.blur() }, renderSwitcherIcon: function (e, t) { var n = t.isLeaf, r = t.loading, i = this.$createElement; return r ? i(Ue["a"], { attrs: { type: "loading" }, class: e + "-switcher-loading-icon" }) : n ? null : i(Ue["a"], { attrs: { type: "caret-down" }, class: e + "-switcher-icon" }) }, onChange: function () { this.$emit.apply(this, ["change"].concat(Array.prototype.slice.call(arguments))) }, updateTreeData: function (e) { var t = this, n = this.$scopedSlots, r = { children: "children", title: "title", key: "key", label: "label", value: "value" }, i = c()({}, r, this.$props.replaceFields); return e.map((function (e) { var r = e.scopedSlots, o = void 0 === r ? {} : r, a = e[i.label], s = e[i.title], l = e[i.value], u = e[i.key], h = e[i.children], f = "function" === typeof a ? a(t.$createElement) : a, d = "function" === typeof s ? s(t.$createElement) : s; !f && o.label && n[o.label] && (f = n[o.label](e)), !d && o.title && n[o.title] && (d = n[o.title](e)); var p = c()({}, e, { title: d || f, value: l, dataRef: e, key: u }); return h ? c()({}, p, { children: t.updateTreeData(h) }) : p })) } }, render: function (e) { var t, n = this, r = Object(j["l"])(this), o = r.prefixCls, s = r.size, l = r.dropdownStyle, u = r.dropdownClassName, h = r.getPopupContainer, f = a()(r, ["prefixCls", "size", "dropdownStyle", "dropdownClassName", "getPopupContainer"]), d = this.configProvider.getPrefixCls, p = d("select", o), v = this.configProvider.renderEmpty, m = Object(j["g"])(this, "notFoundContent"), g = Object(j["g"])(this, "removeIcon"), y = Object(j["g"])(this, "clearIcon"), b = this.configProvider.getPopupContainer, x = Object(O["a"])(f, ["inputIcon", "removeIcon", "clearIcon", "switcherIcon", "suffixIcon"]), w = Object(j["g"])(this, "suffixIcon"); w = Array.isArray(w) ? w[0] : w; var _ = r.treeData; _ && (_ = this.updateTreeData(_)); var C = (t = {}, i()(t, p + "-lg", "large" === s), i()(t, p + "-sm", "small" === s), t), M = f.showSearch; "showSearch" in f || (M = !(!f.multiple && !f.treeCheckable)); var k = Object(j["g"])(this, "treeCheckable"); k && (k = e("span", { class: p + "-tree-checkbox-inner" })); var S = w || e(Ue["a"], { attrs: { type: "down" }, class: p + "-arrow-icon" }), T = g || e(Ue["a"], { attrs: { type: "close" }, class: p + "-remove-icon" }), A = y || e(Ue["a"], { attrs: { type: "close-circle", theme: "filled" }, class: p + "-clear-icon" }), L = { props: c()(c()({ switcherIcon: function (e) { return n.renderSwitcherIcon(p, e) }, inputIcon: S, removeIcon: T, clearIcon: A }, x, { showSearch: M, getPopupContainer: h || b, dropdownClassName: ie()(u, p + "-tree-dropdown"), prefixCls: p, dropdownStyle: c()({ maxHeight: "100vh", overflow: "auto" }, l), treeCheckable: k, notFoundContent: m || v(e, "Select"), __propsSymbol__: Symbol() }), _ ? { treeData: _ } : {}), class: C, on: c()({}, Object(j["k"])(this), { change: this.onChange }), ref: "vcTreeSelect", scopedSlots: this.$scopedSlots }; return e(Fe, L, [Object(j["c"])(this.$slots["default"])]) }, install: function (e) { e.use(qe["a"]), e.component(Ke.name, Ke), e.component(Ke.TreeNode.name, Ke.TreeNode) } }; t["a"] = Ke }, "7c64": function (e, t, n) { var r = n("e24b"), i = n("5e2e"), o = n("79bc"); function a() { this.size = 0, this.__data__ = { hash: new r, map: new (o || i), string: new r } } e.exports = a }, "7c73": function (e, t, n) { var r, i = n("825a"), o = n("37e8"), a = n("7839"), s = n("d012"), c = n("1be4"), l = n("cc12"), u = n("f772"), h = ">", f = "<", d = "prototype", p = "script", v = u("IE_PROTO"), m = function () { }, g = function (e) { return f + p + h + e + f + "/" + p + h }, y = function (e) { e.write(g("")), e.close(); var t = e.parentWindow.Object; return e = null, t }, b = function () { var e, t = l("iframe"), n = "java" + p + ":"; return t.style.display = "none", c.appendChild(t), t.src = String(n), e = t.contentWindow.document, e.open(), e.write(g("document.F=Object")), e.close(), e.F }, x = function () { try { r = new ActiveXObject("htmlfile") } catch (t) { } x = "undefined" != typeof document ? document.domain && r ? y(r) : b() : y(r); var e = a.length; while (e--) delete x[d][a[e]]; return x() }; s[v] = !0, e.exports = Object.create || function (e, t) { var n; return null !== e ? (m[d] = i(e), n = new m, m[d] = null, n[v] = e) : n = x(), void 0 === t ? n : o(n, t) } }, "7cc8": function (e, t, n) { }, "7d1c": function (e, t, n) { "use strict"; e.exports = n("1d31") }, "7d1f": function (e, t, n) { var r = n("087d"), i = n("6747"); function o(e, t, n) { var o = t(e); return i(e) ? o : r(o, n(e)) } e.exports = o }, "7d42": function (e, t, n) { n("658f"), n("0b99"), e.exports = n("b1b3") }, "7d8a": function (e, t, n) { }, "7db0": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("b727").find, o = n("44d2"), a = "find", s = !0; a in [] && Array(1)[a]((function () { s = !1 })), r({ target: "Array", proto: !0, forced: s }, { find: function (e) { return i(this, e, arguments.length > 1 ? arguments[1] : void 0) } }), o(a) }, "7dd0": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("9ed3"), o = n("e163"), a = n("d2bb"), s = n("d44e"), c = n("9112"), l = n("6eeb"), u = n("b622"), h = n("c430"), f = n("3f8c"), d = n("ae93"), p = d.IteratorPrototype, v = d.BUGGY_SAFARI_ITERATORS, m = u("iterator"), g = "keys", y = "values", b = "entries", x = function () { return this }; e.exports = function (e, t, n, u, d, w, _) { i(n, t, u); var C, M, O, k = function (e) { if (e === d && j) return j; if (!v && e in A) return A[e]; switch (e) { case g: return function () { return new n(this, e) }; case y: return function () { return new n(this, e) }; case b: return function () { return new n(this, e) } }return function () { return new n(this) } }, S = t + " Iterator", T = !1, A = e.prototype, L = A[m] || A["@@iterator"] || d && A[d], j = !v && L || k(d), z = "Array" == t && A.entries || L; if (z && (C = o(z.call(new e)), p !== Object.prototype && C.next && (h || o(C) === p || (a ? a(C, p) : "function" != typeof C[m] && c(C, m, x)), s(C, S, !0, !0), h && (f[S] = x))), d == y && L && L.name !== y && (T = !0, j = function () { return L.call(this) }), h && !_ || A[m] === j || c(A, m, j), f[t] = j, d) if (M = { values: k(y), keys: w ? j : k(g), entries: k(b) }, _) for (O in M) (v || T || !(O in A)) && l(A, O, M[O]); else r({ target: t, proto: !0, forced: v || T }, M); return M } }, "7e12": function (e, t, n) { var r = n("da84"), i = n("577e"), o = n("58a8").trim, a = n("5899"), s = r.parseFloat, c = 1 / s(a + "-0") !== -1 / 0; e.exports = c ? function (e) { var t = o(i(e)), n = s(t); return 0 === n && "-" == t.charAt(0) ? -0 : n } : s }, "7e64": function (e, t, n) { var r = n("5e2e"), i = n("efb6"), o = n("2fcc"), a = n("802a"), s = n("55a3"), c = n("d02c"); function l(e) { var t = this.__data__ = new r(e); this.size = t.size } l.prototype.clear = i, l.prototype["delete"] = o, l.prototype.get = a, l.prototype.has = s, l.prototype.set = c, e.exports = l }, "7e79": function (e, t, n) { !function (t, n) { e.exports = n() }(window, (function () { return function (e) { var t = {}; function n(r) { if (t[r]) return t[r].exports; var i = t[r] = { i: r, l: !1, exports: {} }; return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports } return n.m = e, n.c = t, n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: r }) }, n.r = function (e) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }) }, n.t = function (e, t) { if (1 & t && (e = n(e)), 8 & t) return e; if (4 & t && "object" == typeof e && e && e.__esModule) return e; var r = Object.create(null); if (n.r(r), Object.defineProperty(r, "default", { enumerable: !0, value: e }), 2 & t && "string" != typeof e) for (var i in e) n.d(r, i, function (t) { return e[t] }.bind(null, i)); return r }, n.n = function (e) { var t = e && e.__esModule ? function () { return e.default } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = 6) }([function (e, t, n) { var r = n(2); "string" == typeof r && (r = [[e.i, r, ""]]); var i = { hmr: !0, transform: void 0, insertInto: void 0 }; n(4)(r, i), r.locals && (e.exports = r.locals) }, function (e, t, n) { "use strict"; var r = n(0); n.n(r).a }, function (e, t, n) { (e.exports = n(3)(!1)).push([e.i, '\n.vue-cropper[data-v-6dae58fd] {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  box-sizing: border-box;\n  user-select: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  direction: ltr;\n  touch-action: none;\n  text-align: left;\n  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC");\n}\n.cropper-box[data-v-6dae58fd],\n.cropper-box-canvas[data-v-6dae58fd],\n.cropper-drag-box[data-v-6dae58fd],\n.cropper-crop-box[data-v-6dae58fd],\n.cropper-face[data-v-6dae58fd] {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  user-select: none;\n}\n.cropper-box-canvas img[data-v-6dae58fd] {\n  position: relative;\n  text-align: left;\n  user-select: none;\n  transform: none;\n  max-width: none;\n  max-height: none;\n}\n.cropper-box[data-v-6dae58fd] {\n  overflow: hidden;\n}\n.cropper-move[data-v-6dae58fd] {\n  cursor: move;\n}\n.cropper-crop[data-v-6dae58fd] {\n  cursor: crosshair;\n}\n.cropper-modal[data-v-6dae58fd] {\n  background: rgba(0, 0, 0, 0.5);\n}\n.cropper-crop-box[data-v-6dae58fd] {\n  /*border: 2px solid #39f;*/\n}\n.cropper-view-box[data-v-6dae58fd] {\n  display: block;\n  overflow: hidden;\n  width: 100%;\n  height: 100%;\n  outline: 1px solid #39f;\n  outline-color: rgba(51, 153, 255, 0.75);\n  user-select: none;\n}\n.cropper-view-box img[data-v-6dae58fd] {\n  user-select: none;\n  text-align: left;\n  max-width: none;\n  max-height: none;\n}\n.cropper-face[data-v-6dae58fd] {\n  top: 0;\n  left: 0;\n  background-color: #fff;\n  opacity: 0.1;\n}\n.crop-info[data-v-6dae58fd] {\n  position: absolute;\n  left: 0px;\n  min-width: 65px;\n  text-align: center;\n  color: white;\n  line-height: 20px;\n  background-color: rgba(0, 0, 0, 0.8);\n  font-size: 12px;\n}\n.crop-line[data-v-6dae58fd] {\n  position: absolute;\n  display: block;\n  width: 100%;\n  height: 100%;\n  opacity: 0.1;\n}\n.line-w[data-v-6dae58fd] {\n  top: -3px;\n  left: 0;\n  height: 5px;\n  cursor: n-resize;\n}\n.line-a[data-v-6dae58fd] {\n  top: 0;\n  left: -3px;\n  width: 5px;\n  cursor: w-resize;\n}\n.line-s[data-v-6dae58fd] {\n  bottom: -3px;\n  left: 0;\n  height: 5px;\n  cursor: s-resize;\n}\n.line-d[data-v-6dae58fd] {\n  top: 0;\n  right: -3px;\n  width: 5px;\n  cursor: e-resize;\n}\n.crop-point[data-v-6dae58fd] {\n  position: absolute;\n  width: 8px;\n  height: 8px;\n  opacity: 0.75;\n  background-color: #39f;\n  border-radius: 100%;\n}\n.point1[data-v-6dae58fd] {\n  top: -4px;\n  left: -4px;\n  cursor: nw-resize;\n}\n.point2[data-v-6dae58fd] {\n  top: -5px;\n  left: 50%;\n  margin-left: -3px;\n  cursor: n-resize;\n}\n.point3[data-v-6dae58fd] {\n  top: -4px;\n  right: -4px;\n  cursor: ne-resize;\n}\n.point4[data-v-6dae58fd] {\n  top: 50%;\n  left: -4px;\n  margin-top: -3px;\n  cursor: w-resize;\n}\n.point5[data-v-6dae58fd] {\n  top: 50%;\n  right: -4px;\n  margin-top: -3px;\n  cursor: e-resize;\n}\n.point6[data-v-6dae58fd] {\n  bottom: -5px;\n  left: -4px;\n  cursor: sw-resize;\n}\n.point7[data-v-6dae58fd] {\n  bottom: -5px;\n  left: 50%;\n  margin-left: -3px;\n  cursor: s-resize;\n}\n.point8[data-v-6dae58fd] {\n  bottom: -5px;\n  right: -4px;\n  cursor: se-resize;\n}\n@media screen and (max-width: 500px) {\n.crop-point[data-v-6dae58fd] {\n    position: absolute;\n    width: 20px;\n    height: 20px;\n    opacity: 0.45;\n    background-color: #39f;\n    border-radius: 100%;\n}\n.point1[data-v-6dae58fd] {\n    top: -10px;\n    left: -10px;\n}\n.point2[data-v-6dae58fd],\n  .point4[data-v-6dae58fd],\n  .point5[data-v-6dae58fd],\n  .point7[data-v-6dae58fd] {\n    display: none;\n}\n.point3[data-v-6dae58fd] {\n    top: -10px;\n    right: -10px;\n}\n.point4[data-v-6dae58fd] {\n    top: 0;\n    left: 0;\n}\n.point6[data-v-6dae58fd] {\n    bottom: -10px;\n    left: -10px;\n}\n.point8[data-v-6dae58fd] {\n    bottom: -10px;\n    right: -10px;\n}\n}\n', ""]) }, function (e, t) { e.exports = function (e) { var t = []; return t.toString = function () { return this.map((function (t) { var n = function (e, t) { var n = e[1] || "", r = e[3]; if (!r) return n; if (t && "function" == typeof btoa) { var i = function (e) { return "/*# sourceMappingURL=data:application/json;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(e)))) + " */" }(r), o = r.sources.map((function (e) { return "/*# sourceURL=" + r.sourceRoot + e + " */" })); return [n].concat(o).concat([i]).join("\n") } return [n].join("\n") }(t, e); return t[2] ? "@media " + t[2] + "{" + n + "}" : n })).join("") }, t.i = function (e, n) { "string" == typeof e && (e = [[null, e, ""]]); for (var r = {}, i = 0; i < this.length; i++) { var o = this[i][0]; "number" == typeof o && (r[o] = !0) } for (i = 0; i < e.length; i++) { var a = e[i]; "number" == typeof a[0] && r[a[0]] || (n && !a[2] ? a[2] = n : n && (a[2] = "(" + a[2] + ") and (" + n + ")"), t.push(a)) } }, t } }, function (e, t, n) { var r = {}, i = function (e) { var t; return function () { return void 0 === t && (t = e.apply(this, arguments)), t } }((function () { return window && document && document.all && !window.atob })), o = function (e) { var t = {}; return function (e, n) { if ("function" == typeof e) return e(); if (void 0 === t[e]) { var r = function (e, t) { return t ? t.querySelector(e) : document.querySelector(e) }.call(this, e, n); if (window.HTMLIFrameElement && r instanceof window.HTMLIFrameElement) try { r = r.contentDocument.head } catch (e) { r = null } t[e] = r } return t[e] } }(), a = null, s = 0, c = [], l = n(5); function u(e, t) { for (var n = 0; n < e.length; n++) { var i = e[n], o = r[i.id]; if (o) { o.refs++; for (var a = 0; a < o.parts.length; a++)o.parts[a](i.parts[a]); for (; a < i.parts.length; a++)o.parts.push(m(i.parts[a], t)) } else { var s = []; for (a = 0; a < i.parts.length; a++)s.push(m(i.parts[a], t)); r[i.id] = { id: i.id, refs: 1, parts: s } } } } function h(e, t) { for (var n = [], r = {}, i = 0; i < e.length; i++) { var o = e[i], a = t.base ? o[0] + t.base : o[0], s = { css: o[1], media: o[2], sourceMap: o[3] }; r[a] ? r[a].parts.push(s) : n.push(r[a] = { id: a, parts: [s] }) } return n } function f(e, t) { var n = o(e.insertInto); if (!n) throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid."); var r = c[c.length - 1]; if ("top" === e.insertAt) r ? r.nextSibling ? n.insertBefore(t, r.nextSibling) : n.appendChild(t) : n.insertBefore(t, n.firstChild), c.push(t); else if ("bottom" === e.insertAt) n.appendChild(t); else { if ("object" != typeof e.insertAt || !e.insertAt.before) throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n"); var i = o(e.insertAt.before, n); n.insertBefore(t, i) } } function d(e) { if (null === e.parentNode) return !1; e.parentNode.removeChild(e); var t = c.indexOf(e); t >= 0 && c.splice(t, 1) } function p(e) { var t = document.createElement("style"); if (void 0 === e.attrs.type && (e.attrs.type = "text/css"), void 0 === e.attrs.nonce) { var r = function () { return n.nc }(); r && (e.attrs.nonce = r) } return v(t, e.attrs), f(e, t), t } function v(e, t) { Object.keys(t).forEach((function (n) { e.setAttribute(n, t[n]) })) } function m(e, t) { var n, r, i, o; if (t.transform && e.css) { if (!(o = "function" == typeof t.transform ? t.transform(e.css) : t.transform.default(e.css))) return function () { }; e.css = o } if (t.singleton) { var c = s++; n = a || (a = p(t)), r = y.bind(null, n, c, !1), i = y.bind(null, n, c, !0) } else e.sourceMap && "function" == typeof URL && "function" == typeof URL.createObjectURL && "function" == typeof URL.revokeObjectURL && "function" == typeof Blob && "function" == typeof btoa ? (n = function (e) { var t = document.createElement("link"); return void 0 === e.attrs.type && (e.attrs.type = "text/css"), e.attrs.rel = "stylesheet", v(t, e.attrs), f(e, t), t }(t), r = function (e, t, n) { var r = n.css, i = n.sourceMap, o = void 0 === t.convertToAbsoluteUrls && i; (t.convertToAbsoluteUrls || o) && (r = l(r)), i && (r += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(i)))) + " */"); var a = new Blob([r], { type: "text/css" }), s = e.href; e.href = URL.createObjectURL(a), s && URL.revokeObjectURL(s) }.bind(null, n, t), i = function () { d(n), n.href && URL.revokeObjectURL(n.href) }) : (n = p(t), r = function (e, t) { var n = t.css, r = t.media; if (r && e.setAttribute("media", r), e.styleSheet) e.styleSheet.cssText = n; else { for (; e.firstChild;)e.removeChild(e.firstChild); e.appendChild(document.createTextNode(n)) } }.bind(null, n), i = function () { d(n) }); return r(e), function (t) { if (t) { if (t.css === e.css && t.media === e.media && t.sourceMap === e.sourceMap) return; r(e = t) } else i() } } e.exports = function (e, t) { if ("undefined" != typeof DEBUG && DEBUG && "object" != typeof document) throw new Error("The style-loader cannot be used in a non-browser environment"); (t = t || {}).attrs = "object" == typeof t.attrs ? t.attrs : {}, t.singleton || "boolean" == typeof t.singleton || (t.singleton = i()), t.insertInto || (t.insertInto = "head"), t.insertAt || (t.insertAt = "bottom"); var n = h(e, t); return u(n, t), function (e) { for (var i = [], o = 0; o < n.length; o++) { var a = n[o]; (s = r[a.id]).refs--, i.push(s) } for (e && u(h(e, t), t), o = 0; o < i.length; o++) { var s; if (0 === (s = i[o]).refs) { for (var c = 0; c < s.parts.length; c++)s.parts[c](); delete r[s.id] } } } }; var g = function () { var e = []; return function (t, n) { return e[t] = n, e.filter(Boolean).join("\n") } }(); function y(e, t, n, r) { var i = n ? "" : r.css; if (e.styleSheet) e.styleSheet.cssText = g(t, i); else { var o = document.createTextNode(i), a = e.childNodes; a[t] && e.removeChild(a[t]), a.length ? e.insertBefore(o, a[t]) : e.appendChild(o) } } }, function (e, t) { e.exports = function (e) { var t = "undefined" != typeof window && window.location; if (!t) throw new Error("fixUrls requires window.location"); if (!e || "string" != typeof e) return e; var n = t.protocol + "//" + t.host, r = n + t.pathname.replace(/\/[^\/]*$/, "/"); return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, (function (e, t) { var i, o = t.trim().replace(/^"(.*)"$/, (function (e, t) { return t })).replace(/^'(.*)'$/, (function (e, t) { return t })); return /^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(o) ? e : (i = 0 === o.indexOf("//") ? o : 0 === o.indexOf("/") ? n + o : r + o.replace(/^\.\//, ""), "url(" + JSON.stringify(i) + ")") })) } }, function (e, t, n) { "use strict"; n.r(t); var r = function () { var e = this, t = e.$createElement, n = e._self._c || t; return n("div", { ref: "cropper", staticClass: "vue-cropper", on: { mouseover: e.scaleImg, mouseout: e.cancelScale } }, [n("div", { staticClass: "cropper-box" }, [n("div", { directives: [{ name: "show", rawName: "v-show", value: !e.loading, expression: "!loading" }], staticClass: "cropper-box-canvas", style: { width: e.trueWidth + "px", height: e.trueHeight + "px", transform: "scale(" + e.scale + "," + e.scale + ") translate3d(" + e.x / e.scale + "px," + e.y / e.scale + "px,0)rotateZ(" + 90 * e.rotate + "deg)" } }, [n("img", { ref: "cropperImg", attrs: { src: e.imgs, alt: "cropper-img" } })])]), e._v(" "), n("div", { staticClass: "cropper-drag-box", class: { "cropper-move": e.move && !e.crop, "cropper-crop": e.crop, "cropper-modal": e.cropping }, on: { mousedown: e.startMove, touchstart: e.startMove } }), e._v(" "), n("div", { directives: [{ name: "show", rawName: "v-show", value: e.cropping, expression: "cropping" }], staticClass: "cropper-crop-box", style: { width: e.cropW + "px", height: e.cropH + "px", transform: "translate3d(" + e.cropOffsertX + "px," + e.cropOffsertY + "px,0)" } }, [n("span", { staticClass: "cropper-view-box" }, [n("img", { style: { width: e.trueWidth + "px", height: e.trueHeight + "px", transform: "scale(" + e.scale + "," + e.scale + ") translate3d(" + (e.x - e.cropOffsertX) / e.scale + "px," + (e.y - e.cropOffsertY) / e.scale + "px,0)rotateZ(" + 90 * e.rotate + "deg)" }, attrs: { src: e.imgs, alt: "cropper-img" } })]), e._v(" "), n("span", { staticClass: "cropper-face cropper-move", on: { mousedown: e.cropMove, touchstart: e.cropMove } }), e._v(" "), e.info ? n("span", { staticClass: "crop-info", style: { top: e.cropInfo.top } }, [e._v(e._s(this.cropInfo.width) + " 脳 " + e._s(this.cropInfo.height))]) : e._e(), e._v(" "), e.fixedBox ? e._e() : n("span", [n("span", { staticClass: "crop-line line-w", on: { mousedown: function (t) { e.changeCropSize(t, !1, !0, 0, 1) }, touchstart: function (t) { e.changeCropSize(t, !1, !0, 0, 1) } } }), e._v(" "), n("span", { staticClass: "crop-line line-a", on: { mousedown: function (t) { e.changeCropSize(t, !0, !1, 1, 0) }, touchstart: function (t) { e.changeCropSize(t, !0, !1, 1, 0) } } }), e._v(" "), n("span", { staticClass: "crop-line line-s", on: { mousedown: function (t) { e.changeCropSize(t, !1, !0, 0, 2) }, touchstart: function (t) { e.changeCropSize(t, !1, !0, 0, 2) } } }), e._v(" "), n("span", { staticClass: "crop-line line-d", on: { mousedown: function (t) { e.changeCropSize(t, !0, !1, 2, 0) }, touchstart: function (t) { e.changeCropSize(t, !0, !1, 2, 0) } } }), e._v(" "), n("span", { staticClass: "crop-point point1", on: { mousedown: function (t) { e.changeCropSize(t, !0, !0, 1, 1) }, touchstart: function (t) { e.changeCropSize(t, !0, !0, 1, 1) } } }), e._v(" "), n("span", { staticClass: "crop-point point2", on: { mousedown: function (t) { e.changeCropSize(t, !1, !0, 0, 1) }, touchstart: function (t) { e.changeCropSize(t, !1, !0, 0, 1) } } }), e._v(" "), n("span", { staticClass: "crop-point point3", on: { mousedown: function (t) { e.changeCropSize(t, !0, !0, 2, 1) }, touchstart: function (t) { e.changeCropSize(t, !0, !0, 2, 1) } } }), e._v(" "), n("span", { staticClass: "crop-point point4", on: { mousedown: function (t) { e.changeCropSize(t, !0, !1, 1, 0) }, touchstart: function (t) { e.changeCropSize(t, !0, !1, 1, 0) } } }), e._v(" "), n("span", { staticClass: "crop-point point5", on: { mousedown: function (t) { e.changeCropSize(t, !0, !1, 2, 0) }, touchstart: function (t) { e.changeCropSize(t, !0, !1, 2, 0) } } }), e._v(" "), n("span", { staticClass: "crop-point point6", on: { mousedown: function (t) { e.changeCropSize(t, !0, !0, 1, 2) }, touchstart: function (t) { e.changeCropSize(t, !0, !0, 1, 2) } } }), e._v(" "), n("span", { staticClass: "crop-point point7", on: { mousedown: function (t) { e.changeCropSize(t, !1, !0, 0, 2) }, touchstart: function (t) { e.changeCropSize(t, !1, !0, 0, 2) } } }), e._v(" "), n("span", { staticClass: "crop-point point8", on: { mousedown: function (t) { e.changeCropSize(t, !0, !0, 2, 2) }, touchstart: function (t) { e.changeCropSize(t, !0, !0, 2, 2) } } })])])]) }; r._withStripped = !0; var i = { getData: function (e) { return new Promise((function (t, n) { var r = {}; (function (e) { var t = null; return new Promise((function (n, r) { if (e.src) if (/^data\:/i.test(e.src)) t = function (e) { e = e.replace(/^data\:([^\;]+)\;base64,/gim, ""); for (var t = atob(e), n = t.length, r = new ArrayBuffer(n), i = new Uint8Array(r), o = 0; o < n; o++)i[o] = t.charCodeAt(o); return r }(e.src), n(t); else if (/^blob\:/i.test(e.src)) { var i = new FileReader; i.onload = function (e) { t = e.target.result, n(t) }, function (e, t) { var n = new XMLHttpRequest; n.open("GET", e, !0), n.responseType = "blob", n.onload = function (e) { 200 != this.status && 0 !== this.status || t(this.response) }, n.send() }(e.src, (function (e) { i.readAsArrayBuffer(e) })) } else { var o = new XMLHttpRequest; o.onload = function () { if (200 != this.status && 0 !== this.status) throw "Could not load image"; t = o.response, n(t), o = null }, o.open("GET", e.src, !0), o.responseType = "arraybuffer", o.send(null) } else r("img error") })) })(e).then((function (e) { r.arrayBuffer = e, r.orientation = function (e) { var t, n, r, i, o, a, s, c, l, u = new DataView(e), h = u.byteLength; if (255 === u.getUint8(0) && 216 === u.getUint8(1)) for (c = 2; c < h;) { if (255 === u.getUint8(c) && 225 === u.getUint8(c + 1)) { a = c; break } c++ } if (a && (n = a + 10, "Exif" === function (e, t, n) { var r, i = ""; for (r = t, n += t; r < n; r++)i += String.fromCharCode(e.getUint8(r)); return i }(u, a + 4, 4) && (o = u.getUint16(n), ((i = 18761 === o) || 19789 === o) && 42 === u.getUint16(n + 2, i) && (r = u.getUint32(n + 4, i)) >= 8 && (s = n + r))), s) for (h = u.getUint16(s, i), l = 0; l < h; l++)if (c = s + 12 * l + 2, 274 === u.getUint16(c, i)) { c += 8, t = u.getUint16(c, i); break } return t }(e), t(r) })).catch((function (e) { n(e) })) })) } }, o = i, a = { data: function () { return { w: 0, h: 0, scale: 1, x: 0, y: 0, loading: !0, trueWidth: 0, trueHeight: 0, move: !0, moveX: 0, moveY: 0, crop: !1, cropping: !1, cropW: 0, cropH: 0, cropOldW: 0, cropOldH: 0, canChangeX: !1, canChangeY: !1, changeCropTypeX: 1, changeCropTypeY: 1, cropX: 0, cropY: 0, cropChangeX: 0, cropChangeY: 0, cropOffsertX: 0, cropOffsertY: 0, support: "", touches: [], touchNow: !1, rotate: 0, isIos: !1, orientation: 0, imgs: "", coe: .2, scaling: !1, scalingSet: "", coeStatus: "", isCanShow: !0 } }, props: { img: { type: [String, Blob, null, File], default: "" }, outputSize: { type: Number, default: 1 }, outputType: { type: String, default: "jpeg" }, info: { type: Boolean, default: !0 }, canScale: { type: Boolean, default: !0 }, autoCrop: { type: Boolean, default: !1 }, autoCropWidth: { type: [Number, String], default: 0 }, autoCropHeight: { type: [Number, String], default: 0 }, fixed: { type: Boolean, default: !1 }, fixedNumber: { type: Array, default: function () { return [1, 1] } }, fixedBox: { type: Boolean, default: !1 }, full: { type: Boolean, default: !1 }, canMove: { type: Boolean, default: !0 }, canMoveBox: { type: Boolean, default: !0 }, original: { type: Boolean, default: !1 }, centerBox: { type: Boolean, default: !1 }, high: { type: Boolean, default: !0 }, infoTrue: { type: Boolean, default: !1 }, maxImgSize: { type: Number, default: 2e3 }, enlarge: { type: [Number, String], default: 1 }, preW: { type: [Number, String], default: 0 }, mode: { type: String, default: "contain" } }, computed: { cropInfo: function () { var e = {}; if (e.top = this.cropOffsertY > 21 ? "-21px" : "0px", e.width = this.cropW > 0 ? this.cropW : 0, e.height = this.cropH > 0 ? this.cropH : 0, this.infoTrue) { var t = 1; this.high && !this.full && (t = window.devicePixelRatio), 1 !== this.enlarge & !this.full && (t = Math.abs(Number(this.enlarge))), e.width = e.width * t, e.height = e.height * t, this.full && (e.width = e.width / this.scale, e.height = e.height / this.scale) } return e.width = e.width.toFixed(0), e.height = e.height.toFixed(0), e }, isIE: function () { var e = navigator.userAgent, t = e.indexOf("compatible") > -1 && e.indexOf("MSIE") > -1; return t } }, watch: { img: function () { this.checkedImg() }, imgs: function (e) { "" !== e && this.reload() }, cropW: function () { this.showPreview() }, cropH: function () { this.showPreview() }, cropOffsertX: function () { this.showPreview() }, cropOffsertY: function () { this.showPreview() }, scale: function (e, t) { this.showPreview() }, x: function () { this.showPreview() }, y: function () { this.showPreview() }, autoCrop: function (e) { e && this.goAutoCrop() }, autoCropWidth: function () { this.autoCrop && this.goAutoCrop() }, autoCropHeight: function () { this.autoCrop && this.goAutoCrop() }, mode: function () { this.checkedImg() }, rotate: function () { this.showPreview(), (this.autoCrop || this.cropW > 0 || this.cropH > 0) && this.goAutoCrop(this.cropW, this.cropH) } }, methods: { checkOrientationImage: function (e, t, n, r) { var i = this, o = document.createElement("canvas"), a = o.getContext("2d"); switch (a.save(), t) { case 2: o.width = n, o.height = r, a.translate(n, 0), a.scale(-1, 1); break; case 3: o.width = n, o.height = r, a.translate(n / 2, r / 2), a.rotate(180 * Math.PI / 180), a.translate(-n / 2, -r / 2); break; case 4: o.width = n, o.height = r, a.translate(0, r), a.scale(1, -1); break; case 5: o.height = n, o.width = r, a.rotate(.5 * Math.PI), a.scale(1, -1); break; case 6: o.width = r, o.height = n, a.translate(r / 2, n / 2), a.rotate(90 * Math.PI / 180), a.translate(-n / 2, -r / 2); break; case 7: o.height = n, o.width = r, a.rotate(.5 * Math.PI), a.translate(n, -r), a.scale(-1, 1); break; case 8: o.height = n, o.width = r, a.translate(r / 2, n / 2), a.rotate(-90 * Math.PI / 180), a.translate(-n / 2, -r / 2); break; default: o.width = n, o.height = r }a.drawImage(e, 0, 0, n, r), a.restore(), o.toBlob((function (e) { var t = URL.createObjectURL(e); i.imgs = t }), "image/" + this.outputType, 1) }, checkedImg: function () { var e = this; if ("" !== this.img) { this.loading = !0, this.scale = 1, this.rotate = 0, this.clearCrop(); var t = new Image; if (t.onload = function () { if ("" === e.img) return e.$emit("imgLoad", "error"), e.$emit("img-load", "error"), !1; var n = t.width, r = t.height; o.getData(t).then((function (i) { e.orientation = i.orientation || 1; var o = e.maxImgSize; !e.orientation && n < o & r < o ? e.imgs = e.img : (n > o && (r = r / n * o, n = o), r > o && (n = n / r * o, r = o), e.checkOrientationImage(t, e.orientation, n, r)) })) }, t.onerror = function () { e.$emit("imgLoad", "error"), e.$emit("img-load", "error") }, "data" !== this.img.substr(0, 4) && (t.crossOrigin = ""), this.isIE) { var n = new XMLHttpRequest; n.onload = function () { var e = URL.createObjectURL(this.response); t.src = e }, n.open("GET", this.img, !0), n.responseType = "blob", n.send() } else t.src = this.img } }, startMove: function (e) { if (e.preventDefault(), this.move && !this.crop) { if (!this.canMove) return !1; this.moveX = (e.clientX ? e.clientX : e.touches[0].clientX) - this.x, this.moveY = (e.clientY ? e.clientY : e.touches[0].clientY) - this.y, e.touches ? (window.addEventListener("touchmove", this.moveImg), window.addEventListener("touchend", this.leaveImg), 2 == e.touches.length && (this.touches = e.touches, window.addEventListener("touchmove", this.touchScale), window.addEventListener("touchend", this.cancelTouchScale))) : (window.addEventListener("mousemove", this.moveImg), window.addEventListener("mouseup", this.leaveImg)), this.$emit("imgMoving", { moving: !0, axis: this.getImgAxis() }), this.$emit("img-moving", { moving: !0, axis: this.getImgAxis() }) } else this.cropping = !0, window.addEventListener("mousemove", this.createCrop), window.addEventListener("mouseup", this.endCrop), window.addEventListener("touchmove", this.createCrop), window.addEventListener("touchend", this.endCrop), this.cropOffsertX = e.offsetX ? e.offsetX : e.touches[0].pageX - this.$refs.cropper.offsetLeft, this.cropOffsertY = e.offsetY ? e.offsetY : e.touches[0].pageY - this.$refs.cropper.offsetTop, this.cropX = e.clientX ? e.clientX : e.touches[0].clientX, this.cropY = e.clientY ? e.clientY : e.touches[0].clientY, this.cropChangeX = this.cropOffsertX, this.cropChangeY = this.cropOffsertY, this.cropW = 0, this.cropH = 0 }, touchScale: function (e) { var t = this; e.preventDefault(); var n = this.scale, r = this.touches[0].clientX, i = this.touches[0].clientY, o = e.touches[0].clientX, a = e.touches[0].clientY, s = this.touches[1].clientX, c = this.touches[1].clientY, l = e.touches[1].clientX, u = e.touches[1].clientY, h = Math.sqrt(Math.pow(r - s, 2) + Math.pow(i - c, 2)), f = Math.sqrt(Math.pow(o - l, 2) + Math.pow(a - u, 2)) - h, d = 1, p = (d = (d = d / this.trueWidth > d / this.trueHeight ? d / this.trueHeight : d / this.trueWidth) > .1 ? .1 : d) * f; if (!this.touchNow) { if (this.touchNow = !0, f > 0 ? n += Math.abs(p) : f < 0 && n > Math.abs(p) && (n -= Math.abs(p)), this.touches = e.touches, setTimeout((function () { t.touchNow = !1 }), 8), !this.checkoutImgAxis(this.x, this.y, n)) return !1; this.scale = n } }, cancelTouchScale: function (e) { window.removeEventListener("touchmove", this.touchScale) }, moveImg: function (e) { var t = this; if (e.preventDefault(), e.touches && 2 === e.touches.length) return this.touches = e.touches, window.addEventListener("touchmove", this.touchScale), window.addEventListener("touchend", this.cancelTouchScale), window.removeEventListener("touchmove", this.moveImg), !1; var n, r, i = e.clientX ? e.clientX : e.touches[0].clientX, o = e.clientY ? e.clientY : e.touches[0].clientY; n = i - this.moveX, r = o - this.moveY, this.$nextTick((function () { if (t.centerBox) { var e, i, o, a, s = t.getImgAxis(n, r, t.scale), c = t.getCropAxis(), l = t.trueHeight * t.scale, u = t.trueWidth * t.scale; switch (t.rotate) { case 1: case -1: case 3: case -3: e = t.cropOffsertX - t.trueWidth * (1 - t.scale) / 2 + (l - u) / 2, i = t.cropOffsertY - t.trueHeight * (1 - t.scale) / 2 + (u - l) / 2, o = e - l + t.cropW, a = i - u + t.cropH; break; default: e = t.cropOffsertX - t.trueWidth * (1 - t.scale) / 2, i = t.cropOffsertY - t.trueHeight * (1 - t.scale) / 2, o = e - u + t.cropW, a = i - l + t.cropH }s.x1 >= c.x1 && (n = e), s.y1 >= c.y1 && (r = i), s.x2 <= c.x2 && (n = o), s.y2 <= c.y2 && (r = a) } t.x = n, t.y = r, t.$emit("imgMoving", { moving: !0, axis: t.getImgAxis() }), t.$emit("img-moving", { moving: !0, axis: t.getImgAxis() }) })) }, leaveImg: function (e) { window.removeEventListener("mousemove", this.moveImg), window.removeEventListener("touchmove", this.moveImg), window.removeEventListener("mouseup", this.leaveImg), window.removeEventListener("touchend", this.leaveImg), this.$emit("imgMoving", { moving: !1, axis: this.getImgAxis() }), this.$emit("img-moving", { moving: !1, axis: this.getImgAxis() }) }, scaleImg: function () { this.canScale && window.addEventListener(this.support, this.changeSize, { passive: !1 }) }, cancelScale: function () { this.canScale && window.removeEventListener(this.support, this.changeSize) }, changeSize: function (e) { var t = this; e.preventDefault(); var n = this.scale, r = e.deltaY || e.wheelDelta; r = navigator.userAgent.indexOf("Firefox") > 0 ? 30 * r : r, this.isIE && (r = -r); var i = this.coe, o = (i = i / this.trueWidth > i / this.trueHeight ? i / this.trueHeight : i / this.trueWidth) * r; o < 0 ? n += Math.abs(o) : n > Math.abs(o) && (n -= Math.abs(o)); var a = o < 0 ? "add" : "reduce"; if (a !== this.coeStatus && (this.coeStatus = a, this.coe = .2), this.scaling || (this.scalingSet = setTimeout((function () { t.scaling = !1, t.coe = t.coe += .01 }), 50)), this.scaling = !0, !this.checkoutImgAxis(this.x, this.y, n)) return !1; this.scale = n }, changeScale: function (e) { var t = this.scale; e = e || 1; var n = 20; if ((e *= n = n / this.trueWidth > n / this.trueHeight ? n / this.trueHeight : n / this.trueWidth) > 0 ? t += Math.abs(e) : t > Math.abs(e) && (t -= Math.abs(e)), !this.checkoutImgAxis(this.x, this.y, t)) return !1; this.scale = t }, createCrop: function (e) { var t = this; e.preventDefault(); var n = e.clientX ? e.clientX : e.touches ? e.touches[0].clientX : 0, r = e.clientY ? e.clientY : e.touches ? e.touches[0].clientY : 0; this.$nextTick((function () { var e = n - t.cropX, i = r - t.cropY; if (e > 0 ? (t.cropW = e + t.cropChangeX > t.w ? t.w - t.cropChangeX : e, t.cropOffsertX = t.cropChangeX) : (t.cropW = t.w - t.cropChangeX + Math.abs(e) > t.w ? t.cropChangeX : Math.abs(e), t.cropOffsertX = t.cropChangeX + e > 0 ? t.cropChangeX + e : 0), t.fixed) { var o = t.cropW / t.fixedNumber[0] * t.fixedNumber[1]; o + t.cropOffsertY > t.h ? (t.cropH = t.h - t.cropOffsertY, t.cropW = t.cropH / t.fixedNumber[1] * t.fixedNumber[0], t.cropOffsertX = e > 0 ? t.cropChangeX : t.cropChangeX - t.cropW) : t.cropH = o, t.cropOffsertY = t.cropOffsertY } else i > 0 ? (t.cropH = i + t.cropChangeY > t.h ? t.h - t.cropChangeY : i, t.cropOffsertY = t.cropChangeY) : (t.cropH = t.h - t.cropChangeY + Math.abs(i) > t.h ? t.cropChangeY : Math.abs(i), t.cropOffsertY = t.cropChangeY + i > 0 ? t.cropChangeY + i : 0) })) }, changeCropSize: function (e, t, n, r, i) { e.preventDefault(), window.addEventListener("mousemove", this.changeCropNow), window.addEventListener("mouseup", this.changeCropEnd), window.addEventListener("touchmove", this.changeCropNow), window.addEventListener("touchend", this.changeCropEnd), this.canChangeX = t, this.canChangeY = n, this.changeCropTypeX = r, this.changeCropTypeY = i, this.cropX = e.clientX ? e.clientX : e.touches[0].clientX, this.cropY = e.clientY ? e.clientY : e.touches[0].clientY, this.cropOldW = this.cropW, this.cropOldH = this.cropH, this.cropChangeX = this.cropOffsertX, this.cropChangeY = this.cropOffsertY, this.fixed && this.canChangeX && this.canChangeY && (this.canChangeY = 0) }, changeCropNow: function (e) { var t = this; e.preventDefault(); var n = e.clientX ? e.clientX : e.touches ? e.touches[0].clientX : 0, r = e.clientY ? e.clientY : e.touches ? e.touches[0].clientY : 0, i = this.w, o = this.h, a = 0, s = 0; if (this.centerBox) { var c = this.getImgAxis(), l = c.x2, u = c.y2; a = c.x1 > 0 ? c.x1 : 0, s = c.y1 > 0 ? c.y1 : 0, i > l && (i = l), o > u && (o = u) } this.$nextTick((function () { var e = n - t.cropX, c = r - t.cropY; if (t.canChangeX && (1 === t.changeCropTypeX ? t.cropOldW - e > 0 ? (t.cropW = i - t.cropChangeX - e <= i - a ? t.cropOldW - e : t.cropOldW + t.cropChangeX - a, t.cropOffsertX = i - t.cropChangeX - e <= i - a ? t.cropChangeX + e : a) : (t.cropW = Math.abs(e) + t.cropChangeX <= i ? Math.abs(e) - t.cropOldW : i - t.cropOldW - t.cropChangeX, t.cropOffsertX = t.cropChangeX + t.cropOldW) : 2 === t.changeCropTypeX && (t.cropOldW + e > 0 ? (t.cropW = t.cropOldW + e + t.cropOffsertX <= i ? t.cropOldW + e : i - t.cropOffsertX, t.cropOffsertX = t.cropChangeX) : (t.cropW = i - t.cropChangeX + Math.abs(e + t.cropOldW) <= i - a ? Math.abs(e + t.cropOldW) : t.cropChangeX - a, t.cropOffsertX = i - t.cropChangeX + Math.abs(e + t.cropOldW) <= i - a ? t.cropChangeX - Math.abs(e + t.cropOldW) : a))), t.canChangeY && (1 === t.changeCropTypeY ? t.cropOldH - c > 0 ? (t.cropH = o - t.cropChangeY - c <= o - s ? t.cropOldH - c : t.cropOldH + t.cropChangeY - s, t.cropOffsertY = o - t.cropChangeY - c <= o - s ? t.cropChangeY + c : s) : (t.cropH = Math.abs(c) + t.cropChangeY <= o ? Math.abs(c) - t.cropOldH : o - t.cropOldH - t.cropChangeY, t.cropOffsertY = t.cropChangeY + t.cropOldH) : 2 === t.changeCropTypeY && (t.cropOldH + c > 0 ? (t.cropH = t.cropOldH + c + t.cropOffsertY <= o ? t.cropOldH + c : o - t.cropOffsertY, t.cropOffsertY = t.cropChangeY) : (t.cropH = o - t.cropChangeY + Math.abs(c + t.cropOldH) <= o - s ? Math.abs(c + t.cropOldH) : t.cropChangeY - s, t.cropOffsertY = o - t.cropChangeY + Math.abs(c + t.cropOldH) <= o - s ? t.cropChangeY - Math.abs(c + t.cropOldH) : s))), t.canChangeX && t.fixed) { var l = t.cropW / t.fixedNumber[0] * t.fixedNumber[1]; l + t.cropOffsertY > o ? (t.cropH = o - t.cropOffsertY, t.cropW = t.cropH / t.fixedNumber[1] * t.fixedNumber[0]) : t.cropH = l } if (t.canChangeY && t.fixed) { var u = t.cropH / t.fixedNumber[1] * t.fixedNumber[0]; u + t.cropOffsertX > i ? (t.cropW = i - t.cropOffsertX, t.cropH = t.cropW / t.fixedNumber[0] * t.fixedNumber[1]) : t.cropW = u } })) }, changeCropEnd: function (e) { window.removeEventListener("mousemove", this.changeCropNow), window.removeEventListener("mouseup", this.changeCropEnd), window.removeEventListener("touchmove", this.changeCropNow), window.removeEventListener("touchend", this.changeCropEnd) }, endCrop: function () { 0 === this.cropW && 0 === this.cropH && (this.cropping = !1), window.removeEventListener("mousemove", this.createCrop), window.removeEventListener("mouseup", this.endCrop), window.removeEventListener("touchmove", this.createCrop), window.removeEventListener("touchend", this.endCrop) }, startCrop: function () { this.crop = !0 }, stopCrop: function () { this.crop = !1 }, clearCrop: function () { this.cropping = !1, this.cropW = 0, this.cropH = 0 }, cropMove: function (e) { if (e.preventDefault(), !this.canMoveBox) return this.crop = !1, this.startMove(e), !1; if (e.touches && 2 === e.touches.length) return this.crop = !1, this.startMove(e), this.leaveCrop(), !1; window.addEventListener("mousemove", this.moveCrop), window.addEventListener("mouseup", this.leaveCrop), window.addEventListener("touchmove", this.moveCrop), window.addEventListener("touchend", this.leaveCrop); var t, n, r = e.clientX ? e.clientX : e.touches[0].clientX, i = e.clientY ? e.clientY : e.touches[0].clientY; t = r - this.cropOffsertX, n = i - this.cropOffsertY, this.cropX = t, this.cropY = n, this.$emit("cropMoving", { moving: !0, axis: this.getCropAxis() }), this.$emit("crop-moving", { moving: !0, axis: this.getCropAxis() }) }, moveCrop: function (e, t) { var n = this, r = 0, i = 0; e && (e.preventDefault(), r = e.clientX ? e.clientX : e.touches[0].clientX, i = e.clientY ? e.clientY : e.touches[0].clientY), this.$nextTick((function () { var e, o, a = r - n.cropX, s = i - n.cropY; if (t && (a = n.cropOffsertX, s = n.cropOffsertY), e = a <= 0 ? 0 : a + n.cropW > n.w ? n.w - n.cropW : a, o = s <= 0 ? 0 : s + n.cropH > n.h ? n.h - n.cropH : s, n.centerBox) { var c = n.getImgAxis(); e <= c.x1 && (e = c.x1), e + n.cropW > c.x2 && (e = c.x2 - n.cropW), o <= c.y1 && (o = c.y1), o + n.cropH > c.y2 && (o = c.y2 - n.cropH) } n.cropOffsertX = e, n.cropOffsertY = o, n.$emit("cropMoving", { moving: !0, axis: n.getCropAxis() }), n.$emit("crop-moving", { moving: !0, axis: n.getCropAxis() }) })) }, getImgAxis: function (e, t, n) { e = e || this.x, t = t || this.y, n = n || this.scale; var r = { x1: 0, x2: 0, y1: 0, y2: 0 }, i = this.trueWidth * n, o = this.trueHeight * n; switch (this.rotate) { case 0: r.x1 = e + this.trueWidth * (1 - n) / 2, r.x2 = r.x1 + this.trueWidth * n, r.y1 = t + this.trueHeight * (1 - n) / 2, r.y2 = r.y1 + this.trueHeight * n; break; case 1: case -1: case 3: case -3: r.x1 = e + this.trueWidth * (1 - n) / 2 + (i - o) / 2, r.x2 = r.x1 + this.trueHeight * n, r.y1 = t + this.trueHeight * (1 - n) / 2 + (o - i) / 2, r.y2 = r.y1 + this.trueWidth * n; break; default: r.x1 = e + this.trueWidth * (1 - n) / 2, r.x2 = r.x1 + this.trueWidth * n, r.y1 = t + this.trueHeight * (1 - n) / 2, r.y2 = r.y1 + this.trueHeight * n }return r }, getCropAxis: function () { var e = { x1: 0, x2: 0, y1: 0, y2: 0 }; return e.x1 = this.cropOffsertX, e.x2 = e.x1 + this.cropW, e.y1 = this.cropOffsertY, e.y2 = e.y1 + this.cropH, e }, leaveCrop: function (e) { window.removeEventListener("mousemove", this.moveCrop), window.removeEventListener("mouseup", this.leaveCrop), window.removeEventListener("touchmove", this.moveCrop), window.removeEventListener("touchend", this.leaveCrop), this.$emit("cropMoving", { moving: !1, axis: this.getCropAxis() }), this.$emit("crop-moving", { moving: !1, axis: this.getCropAxis() }) }, getCropChecked: function (e) { var t = this, n = document.createElement("canvas"), r = new Image, i = this.rotate, o = this.trueWidth, a = this.trueHeight, s = this.cropOffsertX, c = this.cropOffsertY; function l(e, t) { n.width = Math.round(e), n.height = Math.round(t) } r.onload = function () { if (0 !== t.cropW) { var u = n.getContext("2d"), h = 1; t.high & !t.full && (h = window.devicePixelRatio), 1 !== t.enlarge & !t.full && (h = Math.abs(Number(t.enlarge)), console.log(h)); var f = t.cropW * h, d = t.cropH * h, p = o * t.scale * h, v = a * t.scale * h, m = (t.x - s + t.trueWidth * (1 - t.scale) / 2) * h, g = (t.y - c + t.trueHeight * (1 - t.scale) / 2) * h; switch (l(f, d), u.save(), i) { case 0: t.full ? (l(f / t.scale, d / t.scale), u.drawImage(r, m / t.scale, g / t.scale, p / t.scale, v / t.scale)) : u.drawImage(r, m, g, p, v); break; case 1: case -3: t.full ? (l(f / t.scale, d / t.scale), m = m / t.scale + (p / t.scale - v / t.scale) / 2, g = g / t.scale + (v / t.scale - p / t.scale) / 2, u.rotate(90 * i * Math.PI / 180), u.drawImage(r, g, -m - v / t.scale, p / t.scale, v / t.scale)) : (m += (p - v) / 2, g += (v - p) / 2, u.rotate(90 * i * Math.PI / 180), u.drawImage(r, g, -m - v, p, v)); break; case 2: case -2: t.full ? (l(f / t.scale, d / t.scale), u.rotate(90 * i * Math.PI / 180), m /= t.scale, g /= t.scale, u.drawImage(r, -m - p / t.scale, -g - v / t.scale, p / t.scale, v / t.scale)) : (u.rotate(90 * i * Math.PI / 180), u.drawImage(r, -m - p, -g - v, p, v)); break; case 3: case -1: t.full ? (l(f / t.scale, d / t.scale), m = m / t.scale + (p / t.scale - v / t.scale) / 2, g = g / t.scale + (v / t.scale - p / t.scale) / 2, u.rotate(90 * i * Math.PI / 180), u.drawImage(r, -g - p / t.scale, m, p / t.scale, v / t.scale)) : (m += (p - v) / 2, g += (v - p) / 2, u.rotate(90 * i * Math.PI / 180), u.drawImage(r, -g - p, m, p, v)); break; default: t.full ? (l(f / t.scale, d / t.scale), u.drawImage(r, m / t.scale, g / t.scale, p / t.scale, v / t.scale)) : u.drawImage(r, m, g, p, v) }u.restore() } else { var y = o * t.scale, b = a * t.scale, x = n.getContext("2d"); switch (x.save(), i) { case 0: l(y, b), x.drawImage(r, 0, 0, y, b); break; case 1: case -3: l(b, y), x.rotate(90 * i * Math.PI / 180), x.drawImage(r, 0, -b, y, b); break; case 2: case -2: l(y, b), x.rotate(90 * i * Math.PI / 180), x.drawImage(r, -y, -b, y, b); break; case 3: case -1: l(b, y), x.rotate(90 * i * Math.PI / 180), x.drawImage(r, -y, 0, y, b); break; default: l(y, b), x.drawImage(r, 0, 0, y, b) }x.restore() } e(n) }, "data" !== this.img.substr(0, 4) && (r.crossOrigin = "Anonymous"), r.src = this.imgs }, getCropData: function (e) { var t = this; this.getCropChecked((function (n) { e(n.toDataURL("image/" + t.outputType, t.outputSize)) })) }, getCropBlob: function (e) { var t = this; this.getCropChecked((function (n) { n.toBlob((function (t) { return e(t) }), "image/" + t.outputType, t.outputSize) })) }, showPreview: function () { var e = this; if (!this.isCanShow) return !1; this.isCanShow = !1, setTimeout((function () { e.isCanShow = !0 }), 16); var t = this.cropW, n = this.cropH, r = this.scale, i = {}; i.div = { width: "".concat(t, "px"), height: "".concat(n, "px") }; var o = (this.x - this.cropOffsertX) / r, a = (this.y - this.cropOffsertY) / r; i.w = t, i.h = n, i.url = this.imgs, i.img = { width: "".concat(this.trueWidth, "px"), height: "".concat(this.trueHeight, "px"), transform: "scale(".concat(r, ")translate3d(").concat(o, "px, ").concat(a, "px, ").concat(0, "px)rotateZ(").concat(90 * this.rotate, "deg)") }, i.html = '\n      <div class="show-preview" style="width: '.concat(i.w, "px; height: ").concat(i.h, 'px,; overflow: hidden">\n        <div style="width: ').concat(t, "px; height: ").concat(n, 'px">\n          <img src=').concat(i.url, ' style="width: ').concat(this.trueWidth, "px; height: ").concat(this.trueHeight, "px; transform:\n          scale(").concat(r, ")translate3d(").concat(o, "px, ").concat(a, "px, ").concat(0, "px)rotateZ(").concat(90 * this.rotate, 'deg)">\n        </div>\n      </div>'), this.$emit("realTime", i), this.$emit("real-time", i) }, reload: function () { var e = this, t = new Image; t.onload = function () { e.w = parseFloat(window.getComputedStyle(e.$refs.cropper).width), e.h = parseFloat(window.getComputedStyle(e.$refs.cropper).height), e.trueWidth = t.width, e.trueHeight = t.height, e.original ? e.scale = 1 : e.scale = e.checkedMode(), e.$nextTick((function () { e.x = -(e.trueWidth - e.trueWidth * e.scale) / 2 + (e.w - e.trueWidth * e.scale) / 2, e.y = -(e.trueHeight - e.trueHeight * e.scale) / 2 + (e.h - e.trueHeight * e.scale) / 2, e.loading = !1, e.autoCrop && e.goAutoCrop(), e.$emit("img-load", "success"), e.$emit("imgLoad", "success"), setTimeout((function () { e.showPreview() }), 20) })) }, t.onerror = function () { e.$emit("imgLoad", "error"), e.$emit("img-load", "error") }, t.src = this.imgs }, checkedMode: function () { var e = 1, t = (this.trueWidth, this.trueHeight), n = this.mode.split(" "); switch (n[0]) { case "contain": this.trueWidth > this.w && (e = this.w / this.trueWidth), this.trueHeight * e > this.h && (e = this.h / this.trueHeight); break; case "cover": (t *= e = this.w / this.trueWidth) < this.h && (e = (t = this.h) / this.trueHeight); break; default: try { var r = n[0]; if (-1 !== r.search("px") && (r = r.replace("px", ""), e = parseFloat(r) / this.trueWidth), -1 !== r.search("%") && (r = r.replace("%", ""), e = parseFloat(r) / 100 * this.w / this.trueWidth), 2 === n.length && "auto" === r) { var i = n[1]; -1 !== i.search("px") && (i = i.replace("px", ""), e = (t = parseFloat(i)) / this.trueHeight), -1 !== i.search("%") && (i = i.replace("%", ""), e = (t = parseFloat(i) / 100 * this.h) / this.trueHeight) } } catch (t) { e = 1 } }return e }, goAutoCrop: function (e, t) { this.clearCrop(), this.cropping = !0; var n = this.w, r = this.h; if (this.centerBox) { var i = this.trueWidth * this.scale, o = this.trueHeight * this.scale; n = i < n ? i : n, r = o < r ? o : r } var a = e || parseFloat(this.autoCropWidth), s = t || parseFloat(this.autoCropHeight); 0 !== a && 0 !== s || (a = .8 * n, s = .8 * r), a = a > n ? n : a, s = s > r ? r : s, this.fixed && (s = a / this.fixedNumber[0] * this.fixedNumber[1]), s > this.h && (a = (s = this.h) / this.fixedNumber[1] * this.fixedNumber[0]), this.changeCrop(a, s) }, changeCrop: function (e, t) { var n = this; if (this.centerBox) { var r = this.getImgAxis(); e > r.x2 - r.x1 && (t = (e = r.x2 - r.x1) / this.fixedNumber[0] * this.fixedNumber[1]), t > r.y2 - r.y1 && (e = (t = r.y2 - r.y1) / this.fixedNumber[1] * this.fixedNumber[0]) } this.cropW = e, this.cropH = t, this.cropOffsertX = (this.w - e) / 2, this.cropOffsertY = (this.h - t) / 2, this.centerBox && this.$nextTick((function () { n.moveCrop(null, !0) })) }, refresh: function () { var e = this; this.img, this.imgs = "", this.scale = 1, this.crop = !1, this.rotate = 0, this.w = 0, this.h = 0, this.trueWidth = 0, this.trueHeight = 0, this.clearCrop(), this.$nextTick((function () { e.checkedImg() })) }, rotateLeft: function () { this.rotate = this.rotate <= -3 ? 0 : this.rotate - 1 }, rotateRight: function () { this.rotate = this.rotate >= 3 ? 0 : this.rotate + 1 }, rotateClear: function () { this.rotate = 0 }, checkoutImgAxis: function (e, t, n) { e = e || this.x, t = t || this.y, n = n || this.scale; var r = !0; if (this.centerBox) { var i = this.getImgAxis(e, t, n), o = this.getCropAxis(); i.x1 >= o.x1 && (r = !1), i.x2 <= o.x2 && (r = !1), i.y1 >= o.y1 && (r = !1), i.y2 <= o.y2 && (r = !1) } return r } }, mounted: function () { this.support = "onwheel" in document.createElement("div") ? "wheel" : void 0 !== document.onmousewheel ? "mousewheel" : "DOMMouseScroll"; var e = this, t = navigator.userAgent; this.isIOS = !!t.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), HTMLCanvasElement.prototype.toBlob || Object.defineProperty(HTMLCanvasElement.prototype, "toBlob", { value: function (t, n, r) { for (var i = atob(this.toDataURL(n, r).split(",")[1]), o = i.length, a = new Uint8Array(o), s = 0; s < o; s++)a[s] = i.charCodeAt(s); t(new Blob([a], { type: e.type || "image/png" })) } }), this.showPreview(), this.checkedImg() }, destroyed: function () { window.removeEventListener("mousemove", this.moveCrop), window.removeEventListener("mouseup", this.leaveCrop), window.removeEventListener("touchmove", this.moveCrop), window.removeEventListener("touchend", this.leaveCrop) } }; n(1); var s = function (e, t, n, r, i, o, a, s) { var c, l = "function" == typeof e ? e.options : e; if (t && (l.render = t, l.staticRenderFns = n, l._compiled = !0), r && (l.functional = !0), o && (l._scopeId = "data-v-" + o), a ? (c = function (e) { (e = e || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) || "undefined" == typeof __VUE_SSR_CONTEXT__ || (e = __VUE_SSR_CONTEXT__), i && i.call(this, e), e && e._registeredComponents && e._registeredComponents.add(a) }, l._ssrRegister = c) : i && (c = s ? function () { i.call(this, this.$root.$options.shadowRoot) } : i), c) if (l.functional) { l._injectStyles = c; var u = l.render; l.render = function (e, t) { return c.call(t), u(e, t) } } else { var h = l.beforeCreate; l.beforeCreate = h ? [].concat(h, c) : [c] } return { exports: e, options: l } }(a, r, [], !1, null, "6dae58fd", null); s.options.__file = "src/vue-cropper.vue"; var c = s.exports; n.d(t, "VueCropper", (function () { return c })); var l = function (e) { e.component("VueCropper", c) }; "undefined" != typeof window && window.Vue && l(window.Vue), t.default = { version: "0.4.8", install: l, VueCropper: c, vueCropper: c } }]) })) }, "7ed1": function (e, t, n) { "use strict"; (function (e) { n.d(t, "e", (function () { return c })), n.d(t, "a", (function () { return l })), n.d(t, "c", (function () { return u })), n.d(t, "g", (function () { return h })), n.d(t, "i", (function () { return d })), n.d(t, "j", (function () { return p })), n.d(t, "f", (function () { return v })), n.d(t, "d", (function () { return m })), n.d(t, "b", (function () { return g })), n.d(t, "h", (function () { return y })); var r = n("33e1"), i = n("bf71"), o = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, a = function (e, t, n, r) { return new (n || (n = Promise))((function (i, o) { function a(e) { try { c(r.next(e)) } catch (t) { o(t) } } function s(e) { try { c(r["throw"](e)) } catch (t) { o(t) } } function c(e) { e.done ? i(e.value) : new n((function (t) { t(e.value) })).then(a, s) } c((r = r.apply(e, t || [])).next()) })) }, s = function (e, t) { var n, r, i, o, a = { label: 0, sent: function () { if (1 & i[0]) throw i[1]; return i[1] }, trys: [], ops: [] }; return o = { next: s(0), throw: s(1), return: s(2) }, "function" === typeof Symbol && (o[Symbol.iterator] = function () { return this }), o; function s(e) { return function (t) { return c([e, t]) } } function c(o) { if (n) throw new TypeError("Generator is already executing."); while (a) try { if (n = 1, r && (i = 2 & o[0] ? r["return"] : o[0] ? r["throw"] || ((i = r["return"]) && i.call(r), 0) : r.next) && !(i = i.call(r, o[1])).done) return i; switch (r = 0, i && (o = [2 & o[0], i.value]), o[0]) { case 0: case 1: i = o; break; case 4: return a.label++, { value: o[1], done: !1 }; case 5: a.label++, r = o[1], o = [0]; continue; case 7: o = a.ops.pop(), a.trys.pop(); continue; default: if (i = a.trys, !(i = i.length > 0 && i[i.length - 1]) && (6 === o[0] || 2 === o[0])) { a = 0; continue } if (3 === o[0] && (!i || o[1] > i[0] && o[1] < i[3])) { a.label = o[1]; break } if (6 === o[0] && a.label < i[1]) { a.label = i[1], i = o; break } if (i && a.label < i[2]) { a.label = i[2], a.ops.push(o); break } i[2] && a.ops.pop(), a.trys.pop(); continue }o = t.call(e, a) } catch (s) { o = [6, s], r = 0 } finally { n = i = 0 } if (5 & o[0]) throw o[1]; return { value: o[0] ? o[1] : void 0, done: !0 } } }, c = "5.0.9", l = function () { function e() { } return e.isRequired = function (e, t) { if (null === e || void 0 === e) throw new Error("The '" + t + "' argument is required.") }, e.isNotEmpty = function (e, t) { if (!e || e.match(/^\s*$/)) throw new Error("The '" + t + "' argument should not be empty.") }, e.isIn = function (e, t, n) { if (!(e in t)) throw new Error("Unknown " + n + " value: " + e + ".") }, e }(), u = function () { function e() { } return Object.defineProperty(e, "isBrowser", { get: function () { return "object" === typeof window }, enumerable: !0, configurable: !0 }), Object.defineProperty(e, "isWebWorker", { get: function () { return "object" === typeof self && "importScripts" in self }, enumerable: !0, configurable: !0 }), Object.defineProperty(e, "isNode", { get: function () { return !this.isBrowser && !this.isWebWorker }, enumerable: !0, configurable: !0 }), e }(); function h(e, t) { var n = ""; return d(e) ? (n = "Binary data of length " + e.byteLength, t && (n += ". Content: '" + f(e) + "'")) : "string" === typeof e && (n = "String data of length " + e.length, t && (n += ". Content: '" + e + "'")), n } function f(e) { var t = new Uint8Array(e), n = ""; return t.forEach((function (e) { var t = e < 16 ? "0" : ""; n += "0x" + t + e.toString(16) + " " })), n.substr(0, n.length - 1) } function d(e) { return e && "undefined" !== typeof ArrayBuffer && (e instanceof ArrayBuffer || e.constructor && "ArrayBuffer" === e.constructor.name) } function p(e, t, n, i, c, l, u, f, p) { return a(this, void 0, void 0, (function () { var a, v, m, g, b, x, w, _; return s(this, (function (s) { switch (s.label) { case 0: return v = {}, c ? [4, c()] : [3, 2]; case 1: m = s.sent(), m && (a = {}, a["Authorization"] = "Bearer " + m, v = a), s.label = 2; case 2: return g = y(), b = g[0], x = g[1], v[b] = x, e.log(r["a"].Trace, "(" + t + " transport) sending data. " + h(l, u) + "."), w = d(l) ? "arraybuffer" : "text", [4, n.post(i, { content: l, headers: o({}, v, p), responseType: w, withCredentials: f })]; case 3: return _ = s.sent(), e.log(r["a"].Trace, "(" + t + " transport) request complete. Response status: " + _.statusCode + "."), [2] } })) })) } function v(e) { return void 0 === e ? new g(r["a"].Information) : null === e ? i["a"].instance : e.log ? e : new g(e) } var m = function () { function e(e, t) { this.subject = e, this.observer = t } return e.prototype.dispose = function () { var e = this.subject.observers.indexOf(this.observer); e > -1 && this.subject.observers.splice(e, 1), 0 === this.subject.observers.length && this.subject.cancelCallback && this.subject.cancelCallback().catch((function (e) { })) }, e }(), g = function () { function e(e) { this.minimumLogLevel = e, this.outputConsole = console } return e.prototype.log = function (e, t) { if (e >= this.minimumLogLevel) switch (e) { case r["a"].Critical: case r["a"].Error: this.outputConsole.error("[" + (new Date).toISOString() + "] " + r["a"][e] + ": " + t); break; case r["a"].Warning: this.outputConsole.warn("[" + (new Date).toISOString() + "] " + r["a"][e] + ": " + t); break; case r["a"].Information: this.outputConsole.info("[" + (new Date).toISOString() + "] " + r["a"][e] + ": " + t); break; default: this.outputConsole.log("[" + (new Date).toISOString() + "] " + r["a"][e] + ": " + t); break } }, e }(); function y() { var e = "X-SignalR-User-Agent"; return u.isNode && (e = "User-Agent"), [e, b(c, x(), _(), w())] } function b(e, t, n, r) { var i = "Microsoft SignalR/", o = e.split("."); return i += o[0] + "." + o[1], i += " (" + e + "; ", i += t && "" !== t ? t + "; " : "Unknown OS; ", i += "" + n, i += r ? "; " + r : "; Unknown Runtime Version", i += ")", i } function x() { if (!u.isNode) return ""; switch (e.platform) { case "win32": return "Windows NT"; case "darwin": return "macOS"; case "linux": return "Linux"; default: return e.platform } } function w() { if (u.isNode) return e.versions.node } function _() { return u.isNode ? "NodeJS" : "Browser" } }).call(this, n("4362")) }, "7ed2": function (e, t) { var n = "__lodash_hash_undefined__"; function r(e) { return this.__data__.set(e, n), this } e.exports = r }, "7ed3": function (e, t, n) { var r = n("23e7"), i = n("825a"), o = n("861d"), a = n("5135"), s = n("d039"), c = n("9bf2"), l = n("06cf"), u = n("e163"), h = n("5c6c"); function f(e, t, n) { var r, s, d = arguments.length < 4 ? e : arguments[3], p = l.f(i(e), t); if (!p) { if (o(s = u(e))) return f(s, t, n, d); p = h(0) } if (a(p, "value")) { if (!1 === p.writable || !o(d)) return !1; if (r = l.f(d, t)) { if (r.get || r.set || !1 === r.writable) return !1; r.value = n, c.f(d, t, r) } else c.f(d, t, h(0, n)); return !0 } return void 0 !== p.set && (p.set.call(d, n), !0) } var d = s((function () { var e = function () { }, t = c.f(new e, "a", { configurable: !0 }); return !1 !== Reflect.set(e.prototype, "a", 1, t) })); r({ target: "Reflect", stat: !0, forced: d }, { set: f }) }, "7ed35": function (e, t, n) { }, "7f1a": function (e, t, n) {
+        (function (t, n) { e.exports = n() })("undefined" !== typeof self && self, (function () {
+            return function (e) { var t = {}; function n(r) { if (t[r]) return t[r].exports; var i = t[r] = { i: r, l: !1, exports: {} }; return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports } return n.m = e, n.c = t, n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { configurable: !1, enumerable: !0, get: r }) }, n.n = function (e) { var t = e && e.__esModule ? function () { return e["default"] } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = 458) }([function (e, t, n) { var r = n(142), i = n(18), o = r.mix({}, r, { assign: r.mix, merge: r.deepMix, cloneDeep: r.clone, isFinite: isFinite, isNaN: isNaN, snapEqual: r.isNumberEqual, remove: r.pull, inArray: r.contains, toAllPadding: function (e) { var t = 0, n = 0, r = 0, i = 0; return o.isNumber(e) || o.isString(e) ? t = n = r = i = e : o.isArray(e) ? (t = e[0], r = o.isNil(e[1]) ? e[0] : e[1], i = o.isNil(e[2]) ? e[0] : e[2], n = o.isNil(e[3]) ? r : e[3]) : o.isObject(e) && (t = e.top || 0, r = e.right || 0, i = e.bottom || 0, n = e.left || 0), [t, r, i, n] }, getClipByRange: function (e) { var t = e.tl, n = e.br, r = new i.Rect({ attrs: { x: t.x, y: t.y, width: n.x - t.x, height: n.y - t.y } }); return r } }); o.Array = { groupToMap: r.groupToMap, group: r.group, merge: r.merge, values: r.valuesOfKey, getRange: r.getRange, firstValue: r.firstValue, remove: r.pull }, e.exports = o }, function (e, t, n) { var r = n(59), i = {}; r.merge(i, r, { isColorProp: function (e) { return ["fill", "stroke", "fillStyle", "strokeStyle"].includes(e) }, isGradientColor: function (e) { return /^[r,R,L,l]{1}[\s]*\(/.test(e) }, mixin: function (e, t) { var n = e.CFG ? "CFG" : "ATTRS"; if (e && t) { e._mixins = t, e[n] = e[n] || {}; var r = {}; i.each(t, (function (t) { i.augment(e, t); var o = t[n]; o && i.merge(r, o) })), e[n] = i.merge(r, e[n]) } } }), e.exports = i }, function (e, t, n) { var r = n(168), i = {}; r.merge(i, r, { mixin: function (e, t) { var n = e.CFG ? "CFG" : "ATTRS"; if (e && t) { e._mixins = t, e[n] = e[n] || {}; var r = {}; i.each(t, (function (t) { i.augment(e, t); var o = t[n]; o && i.merge(r, o) })), e[n] = i.merge(r, e[n]) } } }), e.exports = i }, function (e, t, n) { var r = n(22), i = n(5), o = function (e, t) { if (e) { var n = void 0; if (i(e)) { for (var o = 0, a = e.length; o < a; o++)if (n = t(e[o], o), !1 === n) break } else if (r(e)) for (var s in e) if (e.hasOwnProperty(s) && (n = t(e[s], s), !1 === n)) break } }; e.exports = o }, function (e, t, n) { var r = n(51), i = n(142), o = i.mix({ assign: i.mix, isFinite: isFinite, isNaN: isNaN, Group: r.Group, Event: r.Event }, i); e.exports = o }, function (e, t, n) { var r = n(14), i = Array.isArray ? Array.isArray : function (e) { return r(e, "Array") }; e.exports = i }, function (e, t) { var n = function (e) { return null === e || void 0 === e }; e.exports = n }, function (e, t, n) { var r = n(1), i = n(226), o = n(116), a = n(79), s = ["zIndex", "capture", "visible"], c = function e(t) { e.superclass.constructor.call(this, t) }; c.ATTRS = {}, r.extend(c, o); var l = { matrix: "matrix", path: "path", points: "points", lineDash: "lineDash" }; function u(e) { for (var t = [], n = 0; n < e.length; n++)r.isArray(e[n]) ? t.push([].concat(e[n])) : t.push(e[n]); return t } r.augment(c, i, { isShape: !0, drawInner: function (e) { var t = this, n = t._attrs; t.createPath(e); var i = e.globalAlpha; if (t.hasFill()) { var o = n.fillOpacity; r.isNil(o) || 1 === o ? e.fill() : (e.globalAlpha = o, e.fill(), e.globalAlpha = i) } if (t.hasStroke()) { var a = t._attrs.lineWidth; if (a > 0) { var s = n.strokeOpacity; r.isNil(s) || 1 === s || (e.globalAlpha = s), e.stroke() } } t.afterPath(e) }, afterPath: function () { }, isHitBox: function () { return !0 }, isHit: function (e, t) { var n = this, r = [e, t, 1]; if (n.invert(r), n.isHitBox()) { var i = n.getBBox(); if (i && !a.box(i.minX, i.maxX, i.minY, i.maxY, r[0], r[1])) return !1 } var o = n._attrs.clip; return o ? (o.invert(r, n.get("canvas")), !!o.isPointInPath(r[0], r[1]) && n.isPointInPath(r[0], r[1])) : n.isPointInPath(r[0], r[1]) }, calculateBox: function () { return null }, getHitLineWidth: function () { var e = this._attrs, t = e.lineAppendWidth || 0, n = e.lineWidth || 0; return n + t }, clearTotalMatrix: function () { this._cfg.totalMatrix = null, this._cfg.region = null }, clearBBox: function () { this._cfg.box = null, this._cfg.region = null }, getBBox: function () { var e = this._cfg.box; return e || (e = this.calculateBox(), e && (e.x = e.minX, e.y = e.minY, e.width = e.maxX - e.minX, e.height = e.maxY - e.minY), this._cfg.box = e), e }, clone: function () { var e = this, t = null, n = e._attrs, i = {}; return r.each(n, (function (e, t) { l[t] && r.isArray(n[t]) ? i[t] = u(n[t]) : i[t] = n[t] })), t = new e.constructor({ attrs: i }), r.each(s, (function (n) { t._cfg[n] = e._cfg[n] })), t } }), e.exports = c }, function (e, t, n) { var r = n(0), i = n(166), o = { version: "3.5.17", renderer: "canvas", trackingInfo: {}, animate: !0, widthRatio: { column: .5, rose: .9999999, multiplePie: 1 / 1.3 }, showSinglePoint: !1, connectNulls: !1, scales: {}, registerTheme: function (e, t) { i[e] = t }, setTheme: function (e) { var t = {}; t = r.isObject(e) ? e : -1 !== r.indexOf(Object.keys(i), e) ? i[e] : i.default, r.deepMix(o, t) } }; o.setTheme("default"), e.exports = o }, function (e, t, n) { var r = n(2), i = n(349), o = n(171), a = n(93), s = function e(t) { e.superclass.constructor.call(this, t) }; s.ATTRS = {}, r.extend(s, o); var c = { matrix: "matrix", path: "path", points: "points", lineDash: "lineDash" }; function l(e) { for (var t = [], n = 0; n < e.length; n++)r.isArray(e[n]) ? t.push([].concat(e[n])) : t.push(e[n]); return t } r.augment(s, i, { isShape: !0, drawInner: function (e) { var t = this, n = t._attrs; t.createPath(e); var i = e.globalAlpha; if (t.hasFill()) { var o = n.fillOpacity; r.isNil(o) || 1 === o ? e.fill() : (e.globalAlpha = o, e.fill(), e.globalAlpha = i) } if (t.hasStroke()) { var a = t._attrs.lineWidth; if (a > 0) { var s = n.strokeOpacity; r.isNil(s) || 1 === s || (e.globalAlpha = s), e.stroke() } } t.afterPath(e) }, afterPath: function () { }, isHitBox: function () { return !0 }, isHit: function (e, t) { var n = this, r = [e, t, 1]; if (n.invert(r), n.isHitBox()) { var i = n.getBBox(); if (i && !a.box(i.minX, i.maxX, i.minY, i.maxY, r[0], r[1])) return !1 } var o = n._attrs.clip; return o ? (o.invert(r, n.get("canvas")), !!o.isPointInPath(r[0], r[1]) && n.isPointInPath(r[0], r[1])) : n.isPointInPath(r[0], r[1]) }, calculateBox: function () { return null }, getHitLineWidth: function () { var e = this._attrs, t = e.lineAppendWidth || 0, n = e.lineWidth || 0; return n + t }, clearTotalMatrix: function () { this._cfg.totalMatrix = null, this._cfg.region = null }, clearBBox: function () { this._cfg.box = null, this._cfg.region = null }, getBBox: function () { var e = this._cfg.box; return e || (e = this.calculateBox(), e && (e.x = e.minX, e.y = e.minY, e.width = e.maxX - e.minX, e.height = e.maxY - e.minY), this._cfg.box = e), e }, clone: function () { var e = this, t = null, n = e._attrs, i = {}; return r.each(n, (function (e, t) { c[t] && r.isArray(n[t]) ? i[t] = l(n[t]) : i[t] = n[t] })), t = new e.constructor({ attrs: i }), t._cfg.zIndex = e._cfg.zIndex, t } }), e.exports = s }, function (e, t) { function n(e, t) { for (var n in t) t.hasOwnProperty(n) && "constructor" !== n && void 0 !== t[n] && (e[n] = t[n]) } var r = function (e, t, r, i) { return t && n(e, t), r && n(e, r), i && n(e, i), e }; e.exports = r }, function (e, t, n) { var r = n(14), i = function (e) { return r(e, "Number") }; e.exports = i }, function (e, t, n) { var r = n(14), i = function (e) { return r(e, "String") }; e.exports = i }, function (e, t, n) { var r = n(14), i = function (e) { return r(e, "Function") }; e.exports = i }, function (e, t) { var n = {}.toString, r = function (e, t) { return n.call(e) === "[object " + t + "]" }; e.exports = r }, function (e, t) { var n = function (e) { return null !== e && "function" !== typeof e && isFinite(e.length) }; e.exports = n }, function (e, t) { e.exports = { FONT_FAMILY: '"-apple-system", BlinkMacSystemFont, "Segoe UI", Roboto,"Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",SimSun, "sans-serif"' } }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(189), h = n(36), f = ["min", "max", "median", "start", "end"], d = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { xScales: null, yScales: null, el: null }) }, n.render = function () { }, n.clear = function () { var e = this, t = e.get("el"); t && t.remove(), this.set("el", null) }, n.destroy = function () { this.clear(), e.prototype.destroy.call(this) }, n.changeVisible = function (e) { var t = this; t.set("visible", e); var n = t.get("el"); n && (n.set ? n.set("visible", e) : n.style.display = e ? "" : "none") }, n.parsePoint = function (e, t) { var n, r, i = this, o = i.get("xScales"), a = i.get("yScales"); if (l.isFunction(t) && (t = t(o, a)), l.isArray(t) && l.isString(t[0]) && -1 !== t[0].indexOf("%")) return this._parsePercentPoint(e, t); if (l.isArray(t)) n = i._getNormalizedValue(t[0], u.getFirstScale(o)), r = i._getNormalizedValue(t[1], u.getFirstScale(a)); else for (var s in t) { var c = t[s]; o[s] && (n = i._getNormalizedValue(c, o[s])), a[s] && (r = i._getNormalizedValue(c, a[s], "y")) } return l.isNil(n) || l.isNil(r) || isNaN(n) || isNaN(r) ? null : e.convert({ x: n, y: r }) }, n._getNormalizedValue = function (e, t) { var n, r; -1 !== l.indexOf(f, e) ? "start" === e ? n = 0 : "end" === e ? n = 1 : "median" === e ? (r = t.isCategory ? (t.values.length - 1) / 2 : (t.min + t.max) / 2, n = t.scale(r)) : (r = t.isCategory ? "min" === e ? 0 : t.values.length - 1 : t[e], n = t.scale(r)) : n = t.scale(e); return n }, n._parsePercentPoint = function (e, t) { var n = parseFloat(t[0]) / 100, r = parseFloat(t[1]) / 100, i = e.start, o = e.end, a = { x: Math.min(i.x, o.x), y: Math.min(i.y, o.y) }, s = e.width * n + a.x, c = e.height * r + a.y; return { x: s, y: c } }, t }(h); e.exports = d }, function (e, t, n) { var r = n(112); e.exports = r }, function (e, t, n) { "use strict"; var r = n(85); n.d(t, "a", (function () { return r["e"] })), n.d(t, "f", (function () { return r["g"] })), n.d(t, "d", (function () { return r["f"] })); var i = n(240); n.d(t, "e", (function () { return i["a"] })), n.d(t, "c", (function () { return i["b"] })); var o = n(241); n.d(t, "b", (function () { return o["a"] })) }, function (e, t, n) { var r = n(10), i = n(3), o = n(22), a = n(6), s = function () { var e = t.prototype; function t(e) { this._initDefaultCfg(), r(this, e), this.init() } return e._initDefaultCfg = function () { this.type = "base", this.formatter = null, this.range = [0, 1], this.ticks = null, this.values = [] }, e.init = function () { }, e.getTicks = function () { var e = this, t = e.ticks, n = []; return i(t, (function (t) { var r; r = o(t) ? t : { text: e.getText(t), tickValue: t, value: e.scale(t) }, n.push(r) })), n }, e.getText = function (e, t) { var n = this.formatter; return e = n ? n(e, t) : e, !a(e) && e.toString || (e = ""), e.toString() }, e.rangeMin = function () { return this.range[0] }, e.rangeMax = function () { var e = this.range; return e[e.length - 1] }, e.invert = function (e) { return e }, e.translate = function (e) { return e }, e.scale = function (e) { return e }, e.clone = function () { var e = this, t = e.constructor, n = {}; return i(e, (function (t, r) { n[r] = e[r] })), new t(n) }, e.change = function (e) { return this.ticks = null, r(this, e), this.init(), this }, t }(); e.exports = s }, function (e, t, n) { var r = n(0), i = n(25), o = r.PathUtil, a = {}, s = { _coord: null, draw: function (e, t) { return this.drawShape ? this.drawShape(e, t) : null }, setCoord: function (e) { this._coord = e }, parsePath: function (e, t) { var n = this._coord; return e = o.parsePathString(e), e = n.isPolar && !1 !== t ? i.convertPolarPath(n, e) : i.convertNormalPath(n, e), e }, parsePoint: function (e) { var t = this._coord; return t.convertPoint(e) }, parsePoints: function (e) { var t = this._coord, n = []; return r.each(e, (function (e) { n.push(t.convertPoint(e)) })), n } }, c = { defaultShapeType: null, setCoord: function (e) { this._coord = e }, getShape: function (e) { var t = this; r.isArray(e) && (e = e[0]); var n = t[e] || t[t.defaultShapeType]; return n._coord = t._coord, n }, getShapePoints: function (e, t) { var n = this.getShape(e), r = n.getPoints || n.getShapePoints || this.getDefaultPoints, i = r(t); return i }, getDefaultPoints: function () { return [] }, getMarkerCfg: function (e, t) { var n = this.getShape(e); if (!n.getMarkerCfg) { var r = this.defaultShapeType; n = this.getShape(r) } return n.getMarkerCfg(t) }, getSelectedCfg: function () { return {} }, drawShape: function (e, t, n) { var r = this.getShape(e), i = r.draw(t, n); return i && (i.setSilent("origin", t.origin), i._id = t.yIndex ? t._id + t.yIndex : t._id, i.name = this.name), i } }; a.registerFactory = function (e, t) { var n = r.upperFirst(e), i = r.assign({}, c, t); return a[n] = i, i.name = e, i }, a.registerShape = function (e, t, n) { var i = r.upperFirst(e), o = a[i], c = r.assign({}, s, n); return o[t] = c, c }, a.getShapeFactory = function (e) { var t = this; e = e || "point"; var n = r.upperFirst(e); return t[n] }, e.exports = a }, function (e, t) { var n = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r = function (e) { var t = "undefined" === typeof e ? "undefined" : n(e); return null !== e && "object" === t || "function" === t }; e.exports = r }, function (e, t, n) { function r(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function i(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var o = n(104), a = n(334), s = n(163), c = n(0), l = n(8), u = n(342), h = n(21), f = n(394), d = n(395), p = n(396), v = n(397), m = ["color", "shape", "size"], g = "_origin"; function y(e) { return (c.isString(e) || c.isPlainObject(e)) && (e = [e]), c.each(e, (function (t, n) { c.isObject(t) || (e[n] = { type: t }) })), e } var b = function (e) { i(n, e); var t = n.prototype; function n(t) { var n; return n = e.call(this, t) || this, n.viewTheme = n.get("viewTheme"), c.assign(r(n), f, d, p), n.get("container") && n._initContainer(), n._initOptions(), n } return t.getDefaultCfg = function () { return { _id: null, type: "base", coord: null, attrs: {}, view: null, data: [], scales: {}, container: null, labelContainer: null, shapeContainer: null, attrOptions: {}, styleOptions: null, selectedOptions: null, activedOptions: null, hasDefaultAdjust: !1, adjusts: null, shapeType: null, generatePoints: !1, sortable: !1, labelCfg: null, shareTooltip: !0, tooltipCfg: null, animate: !0, animateCfg: null, visible: !0 } }, t._initOptions = function () { var e = this.get("adjusts"); e && (e = y(e), this.set("adjusts", e)) }, t._createScale = function (e, t) { var n = this.get("scales"), r = n[e]; return r || (r = this.get("view").createScale(e, t), n[e] = r), r }, t._setAttrOptions = function (e, t) { var n = this.get("attrOptions"); n[e] = t }, t._createAttrOption = function (e, t, n, r) { var i = {}; i.field = t, n ? c.isFunction(n) ? i.callback = n : i.values = n : "color" !== e && (i.values = r), this._setAttrOptions(e, i) }, t.position = function (e) { return this._setAttrOptions("position", { field: e }), this }, t.color = function (e, t) { var n = this.viewTheme || l; return this._createAttrOption("color", e, t, n.colors), this }, t.size = function (e, t) { var n = this.viewTheme || l; return this._createAttrOption("size", e, t, n.sizes), this }, t.shape = function (e, t) { var n = this.viewTheme || l, r = this.get("type"), i = n.shapes[r] || []; return this._createAttrOption("shape", e, t, i), this }, t.opacity = function (e, t) { var n = this.viewTheme || l; return this._createAttrOption("opacity", e, t, n.opacities), this }, t.style = function (e, t) { var n, r = this.get("styleOptions"); return r || (r = {}, this.set("styleOptions", r)), c.isObject(e) && (t = e, e = null), e && (n = v(e)), r.fields = n, r.style = t, this }, t.label = function (e, t, n) { var r, i = this, o = i.get("labelCfg"); return o || (o = {}, i.set("labelCfg", o)), e && (r = v(e)), o.fields = r, c.isFunction(t) ? (n || (n = {}), o.callback = t) : c.isObject(t) && (n = t), o.globalCfg = n, this }, t.tooltip = function (e, t) { var n, r = this.get("tooltipCfg"); (r || (r = {}), !1 === e) ? this.set("tooltipCfg", !1) : (e && (n = v(e)), r.fields = n, r.cfg = t); return this.set("tooltipCfg", r), this }, t.animate = function (e) { return this.set("animateCfg", e), this }, t.active = function (e, t) { return !1 === e ? this.set("allowActive", !1) : c.isObject(e) ? (this.set("allowActive", !0), this.set("activedOptions", e)) : (this.set("allowActive", !0), this.set("activedOptions", t)), this }, t.adjust = function (e) { return this.get("hasDefaultAdjust") || (e && (e = y(e)), this.set("adjusts", e)), this }, t.select = function (e, t) { return !1 === e ? this.set("allowSelect", !1) : c.isObject(e) ? (this.set("allowSelect", !0), this.set("selectedOptions", e)) : (this.set("allowSelect", !0), this.set("selectedOptions", t)), this }, t.hasAdjust = function (e) { var t = this, n = t.get("adjusts"); if (!e) return !1; var r = !1; return c.each(n, (function (t) { if (t.type === e) return r = !0, !1 })), r }, t.hasStack = function () { var e = this.get("isStacked"); return c.isNil(e) && (e = this.hasAdjust("stack"), this.set("isStacked", e)), e }, t.isInCircle = function () { var e = this.get("coord"); return e && e.isPolar }, t._initContainer = function () { var e = this, t = e.get("shapeContainer"); if (!t) { var n = e.get("container"), r = e.get("view"), i = r && r.get("_id"); t = n.addGroup({ viewId: i, visible: e.get("visible") }), e.set("shapeContainer", t) } }, t.init = function () { var e = this; if (e._initContainer(), e._initAttrs(), e.get("tooltipCfg") && e.get("tooltipCfg").fields) { var t = e.get("tooltipCfg").fields; c.each(t, (function (t) { e._createScale(t) })) } var n = e._processData(); e.get("adjusts") && e._adjust(n), e.set("dataArray", n) }, t._initAttrs = function () { var e = this, t = e.get("attrs"), n = e.get("attrOptions"), r = e.get("coord"), i = e.viewTheme || l, a = !1; for (var s in n) if (n.hasOwnProperty(s)) { var u = n[s], h = c.upperFirst(s), f = v(u.field); "position" === s && (u.coord = r, 1 === f.length && "theta" === r.type && (f.unshift("1"), a = !0)); for (var d = [], p = 0; p < f.length; p++) { var m = f[p], g = e._createScale(m); "color" === s && c.isNil(u.values) && (g.values.length <= 8 ? u.values = a ? i.colors_pie : i.colors : g.values.length <= 16 ? u.values = a ? i.colors_pie_16 : i.colors_16 : u.values = i.colors_24, c.isNil(u.values) && (u.values = i.colors)), d.push(g) } if ("theta" === r.type && "position" === s && d.length > 1) { var y = d[1], b = 0, x = Math.max.apply(null, y.values); isFinite(x) || (x = 1), y.change({ nice: !1, min: b, max: x }) } u.scales = d; var w = new o[h](u); t[s] = w } }, t._processData = function () { for (var e = this, t = this.get("data"), n = [], r = this._groupData(t), i = 0; i < r.length; i++) { var o = r[i], a = e._saveOrigin(o); n.push(e._numberic(a)) } return n }, t._groupData = function (e) { var t = this._getGroupScales(), n = t.map((function (e) { return e.field })); return c.Array.group(e, n) }, t._saveOrigin = function (e) { for (var t = [], n = 0; n < e.length; n++) { var r = e[n], i = {}; for (var o in r) i[o] = r[o]; i[g] = r, t.push(i) } return t }, t._numberic = function (e) { for (var t = this.getAttr("position"), n = t.scales, r = [], i = 0; i < e.length; i++) { for (var o = e[i], a = !0, s = 0; s < Math.min(2, n.length); s++) { var c = n[s]; if (c.isCategory) { var l = c.field; o[l] = c.translate(o[l]), Number.isNaN(o[l]) && (a = !1) } } a && r.push(o) } return r }, t._getGroupScales = function () { var e = this, t = e.get("groupScales"); if (!t) { t = []; var n = e.get("attrs"); c.each(n, (function (e) { if (m.includes(e.type)) { var n = e.scales; c.each(n, (function (e) { e.isCategory && -1 === c.indexOf(t, e) && t.push(e) })) } })), e.set("groupScales", t) } return t }, t._updateStackRange = function (e, t, n) { for (var r = c.Array.merge(n), i = t.min, o = t.max, a = 0; a < r.length; a++) { var s = r[a]; if (c.isArray(s[e])) { var l = Math.min.apply(null, s[e]), u = Math.max.apply(null, s[e]); l < i && (i = l), u > o && (o = u) } } (i < t.min || o > t.max) && t.change({ min: i, max: o }) }, t._adjust = function (e) { if (e && e.length) { var t = this, n = t.get("adjusts"), r = this.viewTheme || l, i = t.getYScale(), o = t.getXScale(), s = o.field, u = i ? i.field : null; c.each(n, (function (n) { var l = c.mix({ xField: s, yField: u }, n), h = c.upperFirst(n.type); if ("Dodge" === h) { var f = []; if (o.isCategory || o.isIdentity) f.push("x"); else { if (i) throw new Error("dodge is not support linear attribute, please use category attribute!"); f.push("y") } l.adjustNames = f, l.dodgeRatio = l.dodgeRatio || r.widthRatio.column } else if ("Stack" === h) { var d = t.get("coord"); if (!i) { l.height = d.getHeight(); var p = t.getDefaultValue("size") || 3; l.size = p } !d.isTransposed && c.isNil(l.reverseOrder) && (l.reverseOrder = !0) } var v = new a[h](l); v.processAdjust(e), "Stack" === h && i && t._updateStackRange(u, i, e) })) } }, t.setCoord = function (e) { this.set("coord", e); var t = this.getAttr("position"), n = this.get("shapeContainer"); n.setMatrix(e.matrix), t && (t.coord = e) }, t.paint = function () { var e = this, t = e.get("dataArray"), n = [], r = e.getShapeFactory(); r.setCoord(e.get("coord")), e.set("shapeFactory", r); var i = e.get("shapeContainer"); e._beforeMapping(t); for (var o = 0; o < t.length; o++) { var a = t[o], s = o; a = e._mapping(a), n.push(a), e.draw(a, i, r, s) } e.get("labelCfg") && e._addLabels(c.union.apply(null, n), i.get("children")), e.get("sortable") ? e.set("dataArray", n) : e._sort(n) }, t._sort = function (e) { var t = this, n = t.getXScale(), r = n.field; c.each(e, (function (e) { e.sort((function (e, t) { return n.translate(e[g][r]) - n.translate(t[g][r]) })) })), t.set("dataArray", e) }, t._beforeMapping = function (e) { var t = this; if (t.get("sortable")) { var n = t.getXScale(), r = n.field; c.each(e, (function (e) { e.sort((function (e, t) { return n.translate(e[r]) - n.translate(t[r]) })) })) } t.get("generatePoints") && (c.each(e, (function (e) { t._generatePoints(e) })), c.each(e, (function (t, n) { var r = e[n + 1]; r && (t[0].nextPoints = r[0].points) }))) }, t._addLabels = function (e, t) { var n = this, r = n.get("type"), i = n.get("viewTheme") || l, o = n.get("coord"), a = u.getLabelsClass(o.type, r), s = n.get("container"), h = c.map(n.get("labelCfg").fields, (function (e) { return n._createScale(e) })), f = s.addGroup(a, { _id: this.get("_id"), labelCfg: c.mix({ scales: h }, n.get("labelCfg")), coord: o, geom: n, geomType: r, yScale: n.getYScale(), viewTheme: i, visible: n.get("visible") }); f.showLabels(e, t), n.set("labelContainer", f) }, t.getShapeFactory = function () { var e = this.get("shapeFactory"); if (!e) { var t = this.get("shapeType"); e = h.getShapeFactory(t), this.set("shapeFactory", e) } return e }, t._generatePoints = function (e) { for (var t = this, n = t.getShapeFactory(), r = t.getAttr("shape"), i = 0; i < e.length; i++) { var o = e[i], a = t.createShapePointsCfg(o), s = r ? t._getAttrValues(r, o) : null, c = n.getShapePoints(s, a); o.points = c } }, t.createShapePointsCfg = function (e) { var t, n = this.getXScale(), r = this.getYScale(), i = this._normalizeValues(e[n.field], n); return t = r ? this._normalizeValues(e[r.field], r) : e.y ? e.y : .1, { x: i, y: t, y0: r ? r.scale(this.getYMinValue()) : void 0 } }, t.getYMinValue = function () { var e, t = this.getYScale(), n = t.min, r = t.max; return e = n >= 0 ? n : r <= 0 ? r : 0, e }, t._normalizeValues = function (e, t) { var n = []; if (c.isArray(e)) for (var r = 0; r < e.length; r++) { var i = e[r]; n.push(t.scale(i)) } else n = t.scale(e); return n }, t._mapping = function (e) { for (var t = this, n = t.get("attrs"), r = [], i = 0; i < e.length; i++) { var o = e[i], a = {}; for (var s in a[g] = o[g], a.points = o.points, a.nextPoints = o.nextPoints, n) if (n.hasOwnProperty(s)) { var l = n[s], u = l.names, h = t._getAttrValues(l, o); if (u.length > 1) for (var f = 0; f < h.length; f++) { var d = h[f], p = u[f]; a[p] = c.isArray(d) && 1 === d.length ? d[0] : d } else a[u[0]] = 1 === h.length ? h[0] : h } r.push(a) } return r }, t._getAttrValues = function (e, t) { for (var n = e.scales, r = [], i = 0; i < n.length; i++) { var o = n[i], a = o.field; "identity" === o.type ? r.push(o.value) : r.push(t[a]) } var s = e.mapping.apply(e, r); return s }, t.getAttrValue = function (e, t) { var n = this.getAttr(e), r = null; if (n) { var i = this._getAttrValues(n, t); r = i[0] } return r }, t.getDefaultValue = function (e) { var t = this.get(e), n = this.getAttr(e); if (n) { var r = n.getScale(e); "identity" === r.type && (t = r.value) } return t }, t.draw = function (e, t, n, r) { for (var i = this, o = 0; o < e.length; o++) { var a = e[o]; i.drawPoint(a, t, n, r + o) } }, t.getCallbackCfg = function (e, t, n) { if (!e) return t; var r = {}, i = e.map((function (e) { return n[e] })); return c.each(t, (function (e, t) { c.isFunction(e) ? r[t] = e.apply(null, i) : r[t] = e })), r }, t._getShapeId = function (e) { var t = this.get("_id"), n = this.get("keyFields"); if (n && n.length > 0) c.each(n, (function (n) { t += "-" + e[n] })); else { var r, i = this.get("type"), o = this.getXScale(), a = this.getYScale(), s = o.field || "x", l = a.field || "y", u = e[l]; r = o.isIdentity ? o.value : e[s], t += "interval" === i || "schema" === i ? "-" + r : "line" === i || "area" === i || "path" === i ? "-" + i : "-" + r + "-" + u; var h = this._getGroupScales(); c.isEmpty(h) || c.each(h, (function (n) { var r = n.field; "identity" !== n.type && (t += "-" + e[r]) })) } return t }, t.getDrawCfg = function (e) { var t = this, n = { origin: e, x: e.x, y: e.y, color: e.color, size: e.size, shape: e.shape, isInCircle: t.isInCircle(), opacity: e.opacity }, r = t.get("styleOptions"); return r && r.style && (n.style = t.getCallbackCfg(r.fields, r.style, e[g])), t.get("generatePoints") && (n.points = e.points, n.nextPoints = e.nextPoints), t.get("animate") && (n._id = t._getShapeId(e[g])), n }, t.appendShapeInfo = function (e, t) { e && (e.setSilent("index", t), e.setSilent("coord", this.get("coord")), this.get("animate") && this.get("animateCfg") && e.setSilent("animateCfg", this.get("animateCfg"))) }, t._applyViewThemeShapeStyle = function (e, t, n) { var r = this, i = r.viewTheme || l, o = n.name; t ? t && (t.indexOf("hollow") > -1 || t.indexOf("liquid") > -1) && (o = "hollow" + c.upperFirst(o)) : n.defaultShapeType.indexOf("hollow") > -1 && (o = "hollow" + c.upperFirst(o)); var a = i.shape[o] || {}; e.style = c.mix({}, a, e.style) }, t.drawPoint = function (e, t, n, r) { var i = this, o = e.shape, a = i.getDrawCfg(e); i._applyViewThemeShapeStyle(a, o, n); var s = n.drawShape(o, a, t); i.appendShapeInfo(s, r) }, t.getAttr = function (e) { return this.get("attrs")[e] }, t.getXScale = function () { return this.getAttr("position").scales[0] }, t.getYScale = function () { return this.getAttr("position").scales[1] }, t.getShapes = function () { var e = [], t = this.get("shapeContainer"), n = t.get("children"); return c.each(n, (function (t) { t.get("origin") && e.push(t) })), e }, t.getAttrsForLegend = function () { var e = this.get("attrs"), t = []; return c.each(e, (function (e) { m.includes(e.type) && t.push(e) })), t }, t.getFieldsForLegend = function () { var e = [], t = this.get("attrOptions"); return c.each(m, (function (n) { var r = t[n]; r && r.field && c.isString(r.field) && (e = e.concat(r.field.split("*"))) })), c.uniq(e) }, t.changeVisible = function (e, t) { var n = this; n.set("visible", e); var r = this.get("shapeContainer"); r && r.set("visible", e); var i = this.get("labelContainer"); if (i && i.set("visible", e), !t && r) { var o = r.get("canvas"); o.draw() } }, t.reset = function () { this.set("attrOptions", {}), this.clearInner() }, t.clearInner = function () { this.clearActivedShapes(), this.clearSelected(); var e = this.get("shapeContainer"); e && e.clear(); var t = this.get("labelContainer"); t && t.remove(), this.set("attrs", {}), this.set("groupScales", null), this.set("labelContainer", null), this.set("xDistance", null), this.set("isStacked", null) }, t.clear = function () { this.clearInner(), this.set("scales", {}) }, t.destroy = function () { this.clear(); var t = this.get("shapeContainer"); t && t.remove(), this.offEvents(), e.prototype.destroy.call(this) }, t.bindEvents = function () { this.get("view") && (this._bindActiveAction(), this._bindSelectedAction()) }, t.offEvents = function () { this.get("view") && (this._offActiveAction(), this._offSelectedAction()) }, n }(s); e.exports = b }, function (e, t, n) { e.exports = { Axis: n(343), Component: n(92), Guide: n(371), Label: n(380), Legend: n(381), Tooltip: n(387) } }, function (e, t, n) { var r = n(0), i = n(391); function o(e, t) { if (!e.length) return []; for (var n = [], r = 0, i = e.length; r < i; r++) { var o = e[r]; 0 === r ? n.push(["M", o.x, o.y]) : n.push(["L", o.x, o.y]) } return t && n.push(["Z"]), n } function a(e, t) { var n = e.getCenter(), r = Math.sqrt(Math.pow(t.x - n.x, 2) + Math.pow(t.y - n.y, 2)); return r } function s(e, t) { for (var n = e.length, r = [e[0]], i = 1; i < n; i += 2) { var o = t.convertPoint({ x: e[i], y: e[i + 1] }); r.push(o.x, o.y) } return r } function c(e, t, n) { var r = n.isTransposed, i = n.startAngle, o = n.endAngle, s = { x: e[1], y: e[2] }, c = { x: t[1], y: t[2] }, l = [], u = r ? "y" : "x", h = Math.abs(c[u] - s[u]) * (o - i), f = c[u] >= s[u] ? 1 : 0, d = h > Math.PI ? 1 : 0, p = n.convertPoint(c), v = a(n, p); if (v >= .5) if (h === 2 * Math.PI) { var m = { x: (c.x + s.x) / 2, y: (c.y + s.y) / 2 }, g = n.convertPoint(m); l.push(["A", v, v, 0, d, f, g.x, g.y]), l.push(["A", v, v, 0, d, f, p.x, p.y]) } else l.push(["A", v, v, 0, d, f, p.x, p.y]); return l } function l(e) { r.each(e, (function (t, n) { var r = t; if ("a" === r[0].toLowerCase()) { var i = e[n - 1], o = e[n + 1]; o && "a" === o[0].toLowerCase() ? i && "l" === i[0].toLowerCase() && (i[0] = "M") : i && "a" === i[0].toLowerCase() && o && "l" === o[0].toLowerCase() && (o[0] = "M") } })) } var u = { getLinePath: function (e, t) { return o(e, t) }, getSplinePath: function (e, t, n) { var o = [], a = e[0], s = null; if (e.length <= 2) return u.getLinePath(e, t); r.each(e, (function (e) { s && s.x === e.x && s.y === e.y || (o.push(e.x), o.push(e.y), s = e) })), n = n || [[0, 0], [1, 1]]; var c = i.catmullRom2bezier(o, t, n); return c.unshift(["M", a.x, a.y]), c }, getPointRadius: function (e, t) { var n = a(e, t); return n }, getPointAngle: function (e, t) { var n = e.getCenter(), r = Math.atan2(t.y - n.y, t.x - n.x); return r }, convertNormalPath: function (e, t) { var n = []; return r.each(t, (function (t) { var r = t[0]; switch (r.toLowerCase()) { case "m": case "l": case "c": n.push(s(t, e)); break; case "z": default: n.push(t); break } })), n }, convertPolarPath: function (e, t) { var n, i, o, a, u = []; return r.each(t, (function (r, l) { var h = r[0]; switch (h.toLowerCase()) { case "m": case "c": case "q": u.push(s(r, e)); break; case "l": n = t[l - 1], i = r, o = e.isTransposed, a = o ? n[n.length - 2] === i[1] : n[n.length - 1] === i[2], a ? u = u.concat(c(n, i, e)) : u.push(s(r, e)); break; case "z": default: u.push(r); break } })), l(u), u } }; e.exports = u }, function (e, t, n) { var r = n(6); function i(e) { return r(e) ? "" : e.toString() } e.exports = i }, function (e, t, n) { var r = n(28), i = n(5), o = 5; function a(e, t, n, s) { for (var c in n = n || 0, s = s || o, t) if (t.hasOwnProperty(c)) { var l = t[c]; null !== l && r(l) ? (r(e[c]) || (e[c] = {}), n < s ? a(e[c], l, n + 1, s) : e[c] = t[c]) : i(l) ? (e[c] = [], e[c] = e[c].concat(l)) : void 0 !== l && (e[c] = l) } } var s = function () { for (var e = new Array(arguments.length), t = e.length, n = 0; n < t; n++)e[n] = arguments[n]; for (var r = e[0], i = 1; i < t; i++)a(r, e[i]); return r }; e.exports = s }, function (e, t, n) { var r = n(63), i = n(14), o = function (e) { if (!r(e) || !i(e, "Object")) return !1; if (null === Object.getPrototypeOf(e)) return !0; var t = e; while (null !== Object.getPrototypeOf(t)) t = Object.getPrototypeOf(t); return Object.getPrototypeOf(e) === t }; e.exports = o }, function (e, t, n) { var r = n(15); function i(e) { return r(e) ? Array.prototype.slice.call(e) : [] } e.exports = i }, function (e, t) { var n = 1e-5; e.exports = function (e, t) { var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : n; return Math.abs(e - t) < r } }, function (e, t, n) { var r = n(1), i = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi, o = /[^\s\,]+/gi; e.exports = { parseRadius: function (e) { var t = 0, n = 0, i = 0, o = 0; return r.isArray(e) ? 1 === e.length ? t = n = i = o = e[0] : 2 === e.length ? (t = i = e[0], n = o = e[1]) : 3 === e.length ? (t = e[0], n = o = e[1], i = e[2]) : (t = e[0], n = e[1], i = e[2], o = e[3]) : t = n = i = o = e, { r1: t, r2: n, r3: i, r4: o } }, parsePath: function (e) { return e = e || [], r.isArray(e) ? e : r.isString(e) ? (e = e.match(i), r.each(e, (function (t, n) { if (t = t.match(o), t[0].length > 1) { var i = t[0].charAt(0); t.splice(1, 0, t[0].substr(1)), t[0] = i } r.each(t, (function (e, n) { isNaN(e) || (t[n] = +e) })), e[n] = t })), e) : void 0 } } }, function (e, t, n) { "use strict"; t["c"] = a, t["b"] = s, t["a"] = c; var r = n(136); function i(e, t) { return function (n) { return e + n * t } } function o(e, t, n) { return e = Math.pow(e, n), t = Math.pow(t, n) - e, n = 1 / n, function (r) { return Math.pow(e + r * t, n) } } function a(e, t) { var n = t - e; return n ? i(e, n > 180 || n < -180 ? n - 360 * Math.round(n / 360) : n) : Object(r["a"])(isNaN(e) ? t : e) } function s(e) { return 1 === (e = +e) ? c : function (t, n) { return n - t ? o(t, n, e) : Object(r["a"])(isNaN(t) ? n : t) } } function c(e, t) { var n = t - e; return n ? i(e, n) : Object(r["a"])(isNaN(e) ? t : e) } }, function (e, t, n) { var r = n(12), i = n(5), o = n(6), a = n(10), s = n(3); function c(e, t) { return r(t) ? t : e.invert(e.scale(t)) } var l = function () { function e(e) { var t = this; this.type = "base", this.name = null, this.method = null, this.values = [], this.scales = [], this.linear = null; var n = null, r = this.callback; if (e.callback) { var i = e.callback; n = function () { for (var e = arguments.length, n = new Array(e), a = 0; a < e; a++)n[a] = arguments[a]; var s = i.apply(void 0, n); return o(s) && (s = r.apply(t, n)), s } } a(this, e), n && a(this, { callback: n }) } var t = e.prototype; return t._getAttrValue = function (e, t) { var n = this.values; if (e.isCategory && !this.linear) { var r = e.translate(t); return n[r % n.length] } var i = e.scale(t); return this.getLinearValue(i) }, t.getLinearValue = function (e) { var t = this.values, n = t.length - 1, r = Math.floor(n * e), i = n * e - r, o = t[r], a = r === n ? o : t[r + 1], s = o + (a - o) * i; return s }, t.callback = function (e) { var t = this, n = t.scales[0], r = null; return r = "identity" === n.type ? n.value : t._getAttrValue(n, e), r }, t.getNames = function () { for (var e = this.scales, t = this.names, n = Math.min(e.length, t.length), r = [], i = 0; i < n; i++)r.push(t[i]); return r }, t.getFields = function () { var e = this.scales, t = []; return s(e, (function (e) { t.push(e.field) })), t }, t.getScale = function (e) { var t = this.scales, n = this.names, r = n.indexOf(e); return t[r] }, t.mapping = function () { for (var e = this.scales, t = this.callback, n = arguments.length, r = new Array(n), i = 0; i < n; i++)r[i] = arguments[i]; var o = r; if (t) { for (var a = 0, s = r.length; a < s; a++)r[a] = this._toOriginParam(r[a], e[a]); o = t.apply(this, r) } return o = [].concat(o), o }, t._toOriginParam = function (e, t) { var n = e; if (!t.isLinear) if (i(e)) { n = []; for (var r = 0, o = e.length; r < o; r++)n.push(c(t, e[r])) } else n = c(t, e); return n }, e }(); e.exports = l }, function (e, t, n) { var r = n(10), i = function () { var e = t.prototype; function t(e) { this._initDefaultCfg(), r(this, e) } return e._initDefaultCfg = function () { this.adjustNames = ["x", "y"] }, e.processAdjust = function () { }, t }(); e.exports = i }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(36), u = n(4), h = n(186), f = n(187), d = n(16), p = d.FONT_FAMILY, v = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return u.mix({}, t, { _id: null, zIndex: 4, ticks: null, line: null, tickLine: null, subTickCount: 0, subTickLine: null, grid: null, label: { offset: 0, offsetX: 0, offsetY: 0, textStyle: {}, autoRotate: !0, autoHide: !1, formatter: null }, labelItems: [], title: { autoRotate: !0, textStyle: {} }, autoPaint: !0 }) }, n.beforeRender = function () { var e = this, t = e.get("title"), n = e.get("label"), r = e.get("grid"); t && e.set("title", u.deepMix({ autoRotate: !0, textStyle: { fontSize: 12, fill: "#ccc", textBaseline: "middle", fontFamily: p, textAlign: "center" }, offset: 48 }, t)), n && e.set("label", u.deepMix({ autoRotate: !0, autoHide: !0, textStyle: { fontSize: 12, fill: "#ccc", textBaseline: "middle", fontFamily: p }, offset: 10 }, n)), r && e.set("grid", u.deepMix({ lineStyle: { lineWidth: 1, stroke: "#C0D0E0" } }, r)) }, n.render = function () { var e = this; e.beforeRender(); var t = e.get("label"); t && e.renderLabels(), e.get("autoPaint") && e.paint(), u.isNil(e.get("title")) || e.renderTitle(), e.get("group").sort() }, n.renderLabels = function () { var e = this, t = e.get("group"), n = e.get("label"), r = new f({ name: "axis-label" }); e.set("labelRenderer", r), r.set("labelCfg", n); var i = ["formatter", "htmlTemplate", "labelLine", "textStyle", "useHtml"]; u.each(i, (function (e) { n[e] && r.set(e, n[e]) })), r.set("coord", e.get("coord")), r.set("group", t.addGroup()), r.set("canvas", e.get("canvas")) }, n._parseTicks = function (e) { e = e || []; for (var t = e.length, n = 0; n < t; n++) { var r = e[n]; u.isObject(r) || (e[n] = this.parseTick(r, n, t)) } return this.set("ticks", e), e }, n._addTickItem = function (e, t, n, r) { void 0 === r && (r = ""); var i = this.get("tickItems"), o = this.get("subTickItems"), a = this.getTickEnd(t, n, e), s = { x1: t.x, y1: t.y, x2: a.x, y2: a.y }; i || (i = []), o || (o = []), "sub" === r ? o.push(s) : i.push(s), this.set("tickItems", i), this.set("subTickItems", o) }, n._renderLine = function () { var e, t = this, n = t.get("line"); if (n) { e = t.getLinePath(), n = u.mix({ path: e }, n); var r = t.get("group"), i = r.addShape("path", { attrs: n }); i.name = "axis-line", t.get("appendInfo") && i.setSilent("appendInfo", t.get("appendInfo")), t.set("lineShape", i) } }, n._processCatTicks = function () { var e = this, t = e.get("label"), n = e.get("tickLine"), r = e.get("ticks"); r = e._parseTicks(r); for (var i = e._getNormalizedTicks(r), o = 0; o < i.length; o += 3) { var a = e.getTickPoint(i[o]), s = e.getTickPoint(i[o + 1]), c = e.getTickPoint(i[o + 2]), l = Math.floor(o / 3), u = r[l]; n && (0 === l && e._addTickItem(l, s, n.length), e._addTickItem(l, c, n.length)), t && e.addLabel(u, a, l) } }, n._getNormalizedTicks = function (e) { var t = 0; e.length > 1 && (t = (e[1].value - e[0].value) / 2); for (var n = [], r = 0; r < e.length; r++) { var i = e[r], o = i.value, a = i.value - t, s = i.value + t; n.push(o, a, s) } var c = u.arrayUtil.getRange(n); return n.map((function (e) { var t = (e - c.min) / (c.max - c.min); return t })) }, n.addLabel = function (e, t, n) { var r, i = this, o = i.get("labelItems"), a = i.get("labelRenderer"), s = u.deepMix({}, i.get("label")); if (a) { var c = i.get("_labelOffset"); u.isNil(i.get("label").offset) || (c = i.get("label").offset); var l = i.getSideVector(c, t, n); t = { x: t.x + l[0] + s.offsetX, y: t.y + l[1] + s.offsetY }, s.text = e.text, s.x = t.x, s.y = t.y, s.point = t, s.textAlign = i.getTextAnchor(l), t.rotate && (s.rotate = t.rotate), o.push(s) } return r }, n._processTicks = function () { var e = this, t = e.get("label"), n = e.get("subTickCount"), r = e.get("tickLine"), i = e.get("ticks"); if (i = e._parseTicks(i), u.each(i, (function (n, i) { var o = e.getTickPoint(n.value, i); r && e._addTickItem(i, o, r.length), t && e.addLabel(n, o, i) })), n) { var o = e.get("subTickLine"); u.each(i, (function (t, a) { if (a > 0) { var s = t.value - i[a - 1].value; s /= e.get("subTickCount") + 1; for (var c = 1; c <= n; c++) { var l = { text: "", value: a ? i[a - 1].value + c * s : c * s }, u = e.getTickPoint(l.value), h = void 0; h = o && o.length ? o.length : parseInt(.6 * r.length, 10), e._addTickItem(c - 1, u, h, "sub") } } })) } }, n._addTickLine = function (e, t) { var n = this, r = u.mix({}, t), i = []; u.each(e, (function (e) { i.push(["M", e.x1, e.y1]), i.push(["L", e.x2, e.y2]) })), delete r.length, r.path = i; var o = n.get("group"), a = o.addShape("path", { attrs: r }); a.name = "axis-ticks", a._id = n.get("_id") + "-ticks", a.set("coord", n.get("coord")), n.get("appendInfo") && a.setSilent("appendInfo", n.get("appendInfo")) }, n._renderTicks = function () { var e = this, t = e.get("tickItems"), n = e.get("subTickItems"); if (!u.isEmpty(t)) { var r = e.get("tickLine"); e._addTickLine(t, r) } if (!u.isEmpty(n)) { var i = e.get("subTickLine") || e.get("tickLine"); e._addTickLine(n, i) } }, n._renderGrid = function () { var e = this.get("grid"); if (e) { e.coord = this.get("coord"), e.appendInfo = this.get("appendInfo"); var t = this.get("group"); this.set("gridGroup", t.addGroup(h, e)) } }, n._renderLabels = function () { var e = this, t = e.get("labelRenderer"), n = e.get("labelItems"); t && (t.set("items", n), t._dryDraw()) }, n.paint = function () { var e = this, t = e.get("tickLine"), n = !0; t && t.hasOwnProperty("alignWithLabel") && (n = t.alignWithLabel), e._renderLine(); var r = e.get("type"), i = "cat" === r || "timeCat" === r; i && !1 === n ? e._processCatTicks() : e._processTicks(), e._renderTicks(), e._renderGrid(), e._renderLabels(); var o = this.get("label"); o && o.autoRotate && e.autoRotateLabels(), o && o.autoHide && e.autoHideLabels() }, n.parseTick = function (e, t, n) { return { text: e, value: t / (n - 1) } }, n.getTextAnchor = function (e) { var t, n = Math.abs(e[1] / e[0]); return t = n >= 1 ? "center" : e[0] > 0 ? "start" : "end", t }, n.getMaxLabelWidth = function (e) { var t = e.getLabels(), n = 0; return u.each(t, (function (e) { var t = e.getBBox(), r = t.width; n < r && (n = r) })), n }, n.getMaxLabelHeight = function (e) { var t = e.getLabels(), n = 0; return u.each(t, (function (e) { var t = e.getBBox(), r = t.height; n < r && (n = r) })), n }, n.destroy = function () { var t = this; if (!t.destroyed) { var n = t.get("gridGroup"); n && n.remove(); var r = this.get("labelRenderer"); r && r.destroy(); var i = t.get("group"); i.destroy(), e.prototype.destroy.call(this) } }, n.clear = function () { var e = this, t = e.get("group"); if (!t.get("destroyed") && t.get("children").length) { var n = e.get("gridGroup"); n && n.clear(); var r = this.get("labelRenderer"); r && r.clear(); var i = e.get("group"); i.clear() } }, n.autoRotateLabels = function () { }, n.autoHideLabels = function () { }, n.renderTitle = function () { }, n.getLinePath = function () { }, n.getTickPoint = function () { }, n.getTickEnd = function () { }, n.getSideVector = function () { }, t }(l); e.exports = v }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(92), u = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { return { _id: null, canvas: null, container: null, group: null, capture: !1, coord: null, offset: [0, 0], plotRange: null, position: [0, 0], visible: !0, zIndex: 1 } }, n._init = function () { }, n.clear = function () { }, n.destroy = function () { e.prototype.destroy.call(this) }, n.beforeRender = function () { }, n.render = function () { }, n.afterRender = function () { }, n.beforeDraw = function () { }, n.draw = function () { }, n.afterDraw = function () { }, n.show = function () { }, n.hide = function () { }, n.setOffset = function () { }, n.setPosition = function () { }, n.setVisible = function () { }, n.setZIndex = function () { }, t }(l); e.exports = u }, function (e, t, n) { var r = n(2), i = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi, o = /[^\s\,]+/gi, a = {}; e.exports = { parseRadius: function (e) { var t = 0, n = 0, i = 0, o = 0; return r.isArray(e) ? 1 === e.length ? t = n = i = o = e[0] : 2 === e.length ? (t = i = e[0], n = o = e[1]) : 3 === e.length ? (t = e[0], n = o = e[1], i = e[2]) : (t = e[0], n = e[1], i = e[2], o = e[3]) : t = n = i = o = e, { r1: t, r2: n, r3: i, r4: o } }, parsePath: function (e) { return e = e || [], r.isArray(e) ? e : r.isString(e) ? (e = e.match(i), r.each(e, (function (t, n) { if (t = t.match(o), t[0].length > 1) { var i = t[0].charAt(0); t.splice(1, 0, t[0].substr(1)), t[0] = i } r.each(t, (function (e, n) { isNaN(e) || (t[n] = +e) })), e[n] = t })), e) : void 0 }, numberToColor: function (e) { var t = a[e]; if (!t) { for (var n = e.toString(16), r = n.length; r < 6; r++)n = "0" + n; t = "#" + n, a[e] = t } return t } } }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(6), o = n(3), a = n(20), s = n(207), c = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n._initDefaultCfg = function () { e.prototype._initDefaultCfg.call(this); var t = this; t.type = "linear", t.isLinear = !0, t.nice = !1, t.min = null, t.minLimit = null, t.max = null, t.maxLimit = null, t.tickCount = null, t.tickInterval = null, t.minTickInterval = null, t.snapArray = null }, n.init = function () { var e = this; if (e.ticks) { var t = e.ticks, n = e.translate(t[0]), r = e.translate(t[t.length - 1]); (i(e.min) || e.min > n) && (e.min = n), (i(e.max) || e.max < r) && (e.max = r) } else e.min = e.translate(e.min), e.max = e.translate(e.max), e.initTicks() }, n.calculateTicks = function () { var e = this.min, t = this.max, n = this.minLimit, r = this.maxLimit, i = this.tickCount, o = this.tickInterval, a = this.minTickInterval, c = this.snapArray; if (1 === i) throw new Error("linear scale'tickCount should not be 1"); if (t < e) throw new Error("max: " + t + " should not be less than min: " + e); var l = s({ min: e, max: t, minLimit: n, maxLimit: r, minCount: i, maxCount: i, interval: o, minTickInterval: a, snapArray: c }); return l.ticks }, n.initTicks = function () { var e = this, t = e.calculateTicks(); if (e.nice) e.ticks = t, e.min = t[0], e.max = t[t.length - 1]; else { var n = []; o(t, (function (t) { t >= e.min && t <= e.max && n.push(t) })), n.length || (n.push(e.min), n.push(e.max)), e.ticks = n } }, n.scale = function (e) { if (i(e)) return NaN; var t = this.max, n = this.min; if (t === n) return 0; var r = (e - n) / (t - n), o = this.rangeMin(), a = this.rangeMax(); return o + r * (a - o) }, n.invert = function (e) { var t = (e - this.rangeMin()) / (this.rangeMax() - this.rangeMin()); return this.min + t * (this.max - this.min) }, t }(a); a.Linear = c, e.exports = c }, function (e, t, n) { var r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, i = n(5), o = function e(t) { if ("object" !== ("undefined" === typeof t ? "undefined" : r(t)) || null === t) return t; var n = void 0; if (i(t)) { n = []; for (var o = 0, a = t.length; o < a; o++)"object" === r(t[o]) && null != t[o] ? n[o] = e(t[o]) : n[o] = t[o] } else for (var s in n = {}, t) "object" === r(t[s]) && null != t[s] ? n[s] = e(t[s]) : n[s] = t[s]; return n }; e.exports = o }, function (e, t, n) { var r = n(63), i = n(15), o = n(12), a = function e(t, n) { if (t === n) return !0; if (!t || !n) return !1; if (o(t) || o(n)) return !1; if (i(t) || i(n)) { if (t.length !== n.length) return !1; for (var a = !0, s = 0; s < t.length; s++)if (a = e(t[s], n[s]), !a) break; return a } if (r(t) || r(n)) { var c = Object.keys(t), l = Object.keys(n); if (c.length !== l.length) return !1; for (var u = !0, h = 0; h < c.length; h++)if (u = e(t[c[h]], n[c[h]]), !u) break; return u } return !1 }; e.exports = a }, function (e, t) { var n = function (e, t, n) { return e < t ? t : e > n ? n : e }; e.exports = n }, function (e, t, n) { var r = n(217); r.translate = function (e, t, n) { var i = new Array(9); return r.fromTranslation(i, n), r.multiply(e, i, t) }, r.rotate = function (e, t, n) { var i = new Array(9); return r.fromRotation(i, n), r.multiply(e, i, t) }, r.scale = function (e, t, n) { var i = new Array(9); return r.fromScaling(i, n), r.multiply(e, i, t) }, e.exports = r }, function (e, t, n) { var r = n(1).vec2; e.exports = { at: function (e, t, n) { return (t - e) * n + e }, pointDistance: function (e, t, n, i, o, a) { var s = [n - e, i - t]; if (r.exactEquals(s, [0, 0])) return NaN; var c = [-s[1], s[0]]; r.normalize(c, c); var l = [o - e, a - t]; return Math.abs(r.dot(l, c)) }, box: function (e, t, n, r, i) { var o = i / 2, a = Math.min(e, n), s = Math.max(e, n), c = Math.min(t, r), l = Math.max(t, r); return { minX: a - o, minY: c - o, maxX: s + o, maxY: l + o } }, len: function (e, t, n, r) { return Math.sqrt((n - e) * (n - e) + (r - t) * (r - t)) } } }, function (e, t, n) { var r = n(1); function i(e, t, n, r) { return { x: Math.cos(r) * n + e, y: Math.sin(r) * n + t } } function o(e, t, n, r) { var i, o; return r ? e < t ? (i = t - e, o = 2 * Math.PI - n + e) : e > n && (i = 2 * Math.PI - e + t, o = e - n) : (i = e - t, o = n - e), i > o ? n : t } function a(e, t, n, i) { var a = 0; return n - t >= 2 * Math.PI && (a = 2 * Math.PI), t = r.mod(t, 2 * Math.PI), n = r.mod(n, 2 * Math.PI) + a, e = r.mod(e, 2 * Math.PI), i ? t >= n ? e > n && e < t ? e : o(e, n, t, !0) : e < t || e > n ? e : o(e, t, n) : t <= n ? t < e && e < n ? e : o(e, t, n, !0) : e > t || e < n ? e : o(e, n, t) } function s(e, t, n, i, o, s, c, l, u) { var h = [c, l], f = [e, t], d = [1, 0], p = r.vec2.subtract([], h, f), v = r.vec2.angleTo(d, p); v = a(v, i, o, s); var m = [n * Math.cos(v) + e, n * Math.sin(v) + t]; u && (u.x = m[0], u.y = m[1]); var g = r.vec2.distance(m, h); return g } function c(e, t, n, o, s, c) { var l = 0, u = Math.PI / 2, h = Math.PI, f = 3 * Math.PI / 2, d = [], p = a(l, o, s, c); p === l && d.push(i(e, t, n, l)), p = a(u, o, s, c), p === u && d.push(i(e, t, n, u)), p = a(h, o, s, c), p === h && d.push(i(e, t, n, h)), p = a(f, o, s, c), p === f && d.push(i(e, t, n, f)), d.push(i(e, t, n, o)), d.push(i(e, t, n, s)); var v = 1 / 0, m = -1 / 0, g = 1 / 0, y = -1 / 0; return r.each(d, (function (e) { v > e.x && (v = e.x), m < e.x && (m = e.x), g > e.y && (g = e.y), y < e.y && (y = e.y) })), { minX: v, minY: g, maxX: m, maxY: y } } e.exports = { nearAngle: a, projectPoint: function (e, t, n, r, i, o, a, c) { var l = {}; return s(e, t, n, r, i, o, a, c, l), l }, pointDistance: s, box: c } }, function (e, t, n) { var r = n(31), i = n(46), o = Math.PI, a = Math.sin, s = Math.cos, c = Math.atan2, l = 10, u = o / 3; function h(e, t, n, r, i, h, f) { var d, p, v, m, g, y, b; if (!t.fill) { var x = t.arrowLength || l, w = t.arrowAngle ? t.arrowAngle * o / 180 : u; b = c(r - h, n - i), g = Math.abs(t.lineWidth * s(b)) / 2, y = Math.abs(t.lineWidth * a(b)) / 2, f && (g = -g, y = -y), d = i + x * s(b + w / 2), p = h + x * a(b + w / 2), v = i + x * s(b - w / 2), m = h + x * a(b - w / 2), e.beginPath(), e.moveTo(d - g, p - y), e.lineTo(i - g, h - y), e.lineTo(v - g, m - y), e.moveTo(i - g, h - y), e.lineTo(i + g, h + y), e.moveTo(i, h), e.stroke() } } function f(e) { var t, n = [], o = r.parsePath(e.path); if (!Array.isArray(o) || 0 === o.length || "M" !== o[0][0] && "m" !== o[0][0]) return !1; for (var a = o.length, s = 0; s < o.length; s++) { var c = o[s]; t = new i(c, t, s === a - 1), n.push(t) } return n } function d(e, t, n, r, i) { var o = Math.atan2(r - t, n - e); return { dx: s(o) * i, dy: a(o) * i } } function p(e, t, n, r, i, o, c) { var l = c ? t.startArrow : t.endArrow, u = l.d, h = i - n, d = o - r, p = Math.atan2(d, h), v = f(l); if (v) { u && (i -= s(p) * u, o -= a(p) * u), e.save(), e.beginPath(), e.translate(i, o), e.rotate(p); for (var m = 0; m < v.length; m++)v[m].draw(e); e.setTransform(1, 0, 0, 1, 0, 0), e.fillStyle = e.strokeStyle, e.fill(), e.restore() } } e.exports = { addStartArrow: function (e, t, n, r, i, o) { "object" === typeof t.startArrow ? p(e, t, n, r, i, o, !0) : t.startArrow && h(e, t, n, r, i, o, !0) }, addEndArrow: function (e, t, n, r, i, o) { "object" === typeof t.endArrow ? p(e, t, n, r, i, o, !1) : t.endArrow && h(e, t, n, r, i, o, !1) }, getShortenOffset: d } }, function (e, t, n) { var r = n(1), i = n(79), o = n(80), a = n(118), s = n(119), c = r.vec3, l = r.mat3, u = ["m", "l", "c", "a", "q", "h", "v", "t", "s", "z"]; function h(e, t, n) { return { x: n.x + e, y: n.y + t } } function f(e, t) { return { x: t.x + (t.x - e.x), y: t.y + (t.y - e.y) } } function d(e) { return Math.sqrt(e[0] * e[0] + e[1] * e[1]) } function p(e, t) { return (e[0] * t[0] + e[1] * t[1]) / (d(e) * d(t)) } function v(e, t) { return (e[0] * t[1] < e[1] * t[0] ? -1 : 1) * Math.acos(p(e, t)) } function m(e, t, n, i, o, a, s) { var c = r.mod(r.toRadian(s), 2 * Math.PI), l = e.x, u = e.y, h = t.x, f = t.y, d = Math.cos(c) * (l - h) / 2 + Math.sin(c) * (u - f) / 2, m = -1 * Math.sin(c) * (l - h) / 2 + Math.cos(c) * (u - f) / 2, g = d * d / (o * o) + m * m / (a * a); g > 1 && (o *= Math.sqrt(g), a *= Math.sqrt(g)); var y = o * o * (m * m) + a * a * (d * d), b = Math.sqrt((o * o * (a * a) - y) / y); n === i && (b *= -1), isNaN(b) && (b = 0); var x = b * o * m / a, w = b * -a * d / o, _ = (l + h) / 2 + Math.cos(c) * x - Math.sin(c) * w, C = (u + f) / 2 + Math.sin(c) * x + Math.cos(c) * w, M = v([1, 0], [(d - x) / o, (m - w) / a]), O = [(d - x) / o, (m - w) / a], k = [(-1 * d - x) / o, (-1 * m - w) / a], S = v(O, k); return p(O, k) <= -1 && (S = Math.PI), p(O, k) >= 1 && (S = 0), 0 === i && S > 0 && (S -= 2 * Math.PI), 1 === i && S < 0 && (S += 2 * Math.PI), [e, _, C, o, a, M, S, c, i] } var g = function (e, t, n) { this.preSegment = t, this.isLast = n, this.init(e, t) }; r.augment(g, { init: function (e, t) { var n = e[0]; t = t || { endPoint: { x: 0, y: 0 } }; var i, o, a, s, c = u.indexOf(n) >= 0, l = c ? n.toUpperCase() : n, d = e, p = t.endPoint, v = d[1], g = d[2]; switch (l) { default: break; case "M": s = c ? h(v, g, p) : { x: v, y: g }, this.command = "M", this.params = [p, s], this.subStart = s, this.endPoint = s; break; case "L": s = c ? h(v, g, p) : { x: v, y: g }, this.command = "L", this.params = [p, s], this.subStart = t.subStart, this.endPoint = s, this.endTangent = function () { return [s.x - p.x, s.y - p.y] }, this.startTangent = function () { return [p.x - s.x, p.y - s.y] }; break; case "H": s = c ? h(v, 0, p) : { x: v, y: p.y }, this.command = "L", this.params = [p, s], this.subStart = t.subStart, this.endPoint = s, this.endTangent = function () { return [s.x - p.x, s.y - p.y] }, this.startTangent = function () { return [p.x - s.x, p.y - s.y] }; break; case "V": s = c ? h(0, v, p) : { x: p.x, y: v }, this.command = "L", this.params = [p, s], this.subStart = t.subStart, this.endPoint = s, this.endTangent = function () { return [s.x - p.x, s.y - p.y] }, this.startTangent = function () { return [p.x - s.x, p.y - s.y] }; break; case "Q": c ? (i = h(v, g, p), o = h(d[3], d[4], p)) : (i = { x: v, y: g }, o = { x: d[3], y: d[4] }), this.command = "Q", this.params = [p, i, o], this.subStart = t.subStart, this.endPoint = o, this.endTangent = function () { return [o.x - i.x, o.y - i.y] }, this.startTangent = function () { return [p.x - i.x, p.y - i.y] }; break; case "T": o = c ? h(v, g, p) : { x: v, y: g }, "Q" === t.command ? (i = f(t.params[1], p), this.command = "Q", this.params = [p, i, o], this.subStart = t.subStart, this.endPoint = o, this.endTangent = function () { return [o.x - i.x, o.y - i.y] }, this.startTangent = function () { return [p.x - i.x, p.y - i.y] }) : (this.command = "TL", this.params = [p, o], this.subStart = t.subStart, this.endPoint = o, this.endTangent = function () { return [o.x - p.x, o.y - p.y] }, this.startTangent = function () { return [p.x - o.x, p.y - o.y] }); break; case "C": c ? (i = h(v, g, p), o = h(d[3], d[4], p), a = h(d[5], d[6], p)) : (i = { x: v, y: g }, o = { x: d[3], y: d[4] }, a = { x: d[5], y: d[6] }), this.command = "C", this.params = [p, i, o, a], this.subStart = t.subStart, this.endPoint = a, this.endTangent = function () { return [a.x - o.x, a.y - o.y] }, this.startTangent = function () { return [p.x - i.x, p.y - i.y] }; break; case "S": c ? (o = h(v, g, p), a = h(d[3], d[4], p)) : (o = { x: v, y: g }, a = { x: d[3], y: d[4] }), "C" === t.command ? (i = f(t.params[2], p), this.command = "C", this.params = [p, i, o, a], this.subStart = t.subStart, this.endPoint = a, this.endTangent = function () { return [a.x - o.x, a.y - o.y] }, this.startTangent = function () { return [p.x - i.x, p.y - i.y] }) : (this.command = "SQ", this.params = [p, o, a], this.subStart = t.subStart, this.endPoint = a, this.endTangent = function () { return [a.x - o.x, a.y - o.y] }, this.startTangent = function () { return [p.x - o.x, p.y - o.y] }); break; case "A": var y = v, b = g, x = d[3], w = d[4], _ = d[5]; s = c ? h(d[6], d[7], p) : { x: d[6], y: d[7] }, this.command = "A"; var C = m(p, s, w, _, y, b, x); this.params = C; var M = t.subStart; this.subStart = M, this.endPoint = s; var O = C[5] % (2 * Math.PI); r.isNumberEqual(O, 2 * Math.PI) && (O = 0); var k = C[6] % (2 * Math.PI); r.isNumberEqual(k, 2 * Math.PI) && (k = 0); var S = .001; this.startTangent = function () { 0 === _ && (S *= -1); var e = C[3] * Math.cos(O - S) + C[1], t = C[4] * Math.sin(O - S) + C[2]; return [e - M.x, t - M.y] }, this.endTangent = function () { var e = C[6]; e - 2 * Math.PI < 1e-4 && (e = 0); var t = C[3] * Math.cos(O + e + S) + C[1], n = C[4] * Math.sin(O + e - S) + C[2]; return [p.x - t, p.y - n] }; break; case "Z": this.command = "Z", this.params = [p, t.subStart], this.subStart = t.subStart, this.endPoint = t.subStart } }, isInside: function (e, t, n) { var r = this, o = r.command, a = r.params, s = r.box; if (s && !i.box(s.minX, s.maxX, s.minY, s.maxY, e, t)) return !1; switch (o) { default: break; case "M": return !1; case "TL": case "L": case "Z": return i.line(a[0].x, a[0].y, a[1].x, a[1].y, n, e, t); case "SQ": case "Q": return i.quadraticline(a[0].x, a[0].y, a[1].x, a[1].y, a[2].x, a[2].y, n, e, t); case "C": return i.cubicline(a[0].x, a[0].y, a[1].x, a[1].y, a[2].x, a[2].y, a[3].x, a[3].y, n, e, t); case "A": var u = a, h = u[1], f = u[2], d = u[3], p = u[4], v = u[5], m = u[6], g = u[7], y = u[8], b = d > p ? d : p, x = d > p ? 1 : d / p, w = d > p ? p / d : 1; u = [e, t, 1]; var _ = [1, 0, 0, 0, 1, 0, 0, 0, 1]; return l.translate(_, _, [-h, -f]), l.rotate(_, _, -g), l.scale(_, _, [1 / x, 1 / w]), c.transformMat3(u, u, _), i.arcline(0, 0, b, v, v + m, 1 - y, n, u[0], u[1]) }return !1 }, draw: function (e) { var t, n, r, i = this.command, o = this.params; switch (i) { default: break; case "M": e.moveTo(o[1].x, o[1].y); break; case "TL": case "L": e.lineTo(o[1].x, o[1].y); break; case "SQ": case "Q": t = o[1], n = o[2], e.quadraticCurveTo(t.x, t.y, n.x, n.y); break; case "C": t = o[1], n = o[2], r = o[3], e.bezierCurveTo(t.x, t.y, n.x, n.y, r.x, r.y); break; case "A": var a = o, s = a[1], c = a[2], l = s, u = c, h = a[3], f = a[4], d = a[5], p = a[6], v = a[7], m = a[8], g = h > f ? h : f, y = h > f ? 1 : h / f, b = h > f ? f / h : 1; e.translate(l, u), e.rotate(v), e.scale(y, b), e.arc(0, 0, g, d, d + p, 1 - m), e.scale(1 / y, 1 / b), e.rotate(-v), e.translate(-l, -u); break; case "Z": e.closePath(); break } }, shortenDraw: function (e, t, n) { var r, i, o, a = this.command, s = this.params; switch (a) { default: break; case "M": e.moveTo(s[1].x - t, s[1].y - n); break; case "TL": case "L": e.lineTo(s[1].x - t, s[1].y - n); break; case "SQ": case "Q": r = s[1], i = s[2], e.quadraticCurveTo(r.x, r.y, i.x - t, i.y - n); break; case "C": r = s[1], i = s[2], o = s[3], e.bezierCurveTo(r.x, r.y, i.x, i.y, o.x - t, o.y - n); break; case "A": var c = s, l = c[1], u = c[2], h = l, f = u, d = c[3], p = c[4], v = c[5], m = c[6], g = c[7], y = c[8], b = d > p ? d : p, x = d > p ? 1 : d / p, w = d > p ? p / d : 1; e.translate(h, f), e.rotate(g), e.scale(x, w), e.arc(0, 0, b, v, v + m, 1 - y), e.scale(1 / x, 1 / w), e.rotate(-g), e.translate(-h, -f); break; case "Z": e.closePath(); break } }, getBBox: function (e) { var t, n, r, i, c = e / 2, l = this.params; switch (this.command) { default: case "M": case "Z": break; case "TL": case "L": this.box = { minX: Math.min(l[0].x, l[1].x) - c, maxX: Math.max(l[0].x, l[1].x) + c, minY: Math.min(l[0].y, l[1].y) - c, maxY: Math.max(l[0].y, l[1].y) + c }; break; case "SQ": case "Q": for (n = a.extrema(l[0].x, l[1].x, l[2].x), r = 0, i = n.length; r < i; r++)n[r] = a.at(l[0].x, l[1].x, l[2].x, n[r]); for (n.push(l[0].x, l[2].x), t = a.extrema(l[0].y, l[1].y, l[2].y), r = 0, i = t.length; r < i; r++)t[r] = a.at(l[0].y, l[1].y, l[2].y, t); t.push(l[0].y, l[2].y), this.box = { minX: Math.min.apply(Math, n) - c, maxX: Math.max.apply(Math, n) + c, minY: Math.min.apply(Math, t) - c, maxY: Math.max.apply(Math, t) + c }; break; case "C": for (n = o.extrema(l[0].x, l[1].x, l[2].x, l[3].x), r = 0, i = n.length; r < i; r++)n[r] = o.at(l[0].x, l[1].x, l[2].x, l[3].x, n[r]); for (t = o.extrema(l[0].y, l[1].y, l[2].y, l[3].y), r = 0, i = t.length; r < i; r++)t[r] = o.at(l[0].y, l[1].y, l[2].y, l[3].y, t[r]); n.push(l[0].x, l[3].x), t.push(l[0].y, l[3].y), this.box = { minX: Math.min.apply(Math, n) - c, maxX: Math.max.apply(Math, n) + c, minY: Math.min.apply(Math, t) - c, maxY: Math.max.apply(Math, t) + c }; break; case "A": var u = l, h = u[1], f = u[2], d = u[3], p = u[4], v = u[5], m = u[6], g = u[7], y = u[8], b = v, x = v + m, w = s.xExtrema(g, d, p), _ = 1 / 0, C = -1 / 0, M = [b, x]; for (r = 2 * -Math.PI; r <= 2 * Math.PI; r += Math.PI) { var O = w + r; 1 === y ? b < O && O < x && M.push(O) : x < O && O < b && M.push(O) } for (r = 0, i = M.length; r < i; r++) { var k = s.xAt(g, d, p, h, M[r]); k < _ && (_ = k), k > C && (C = k) } var S = s.yExtrema(g, d, p), T = 1 / 0, A = -1 / 0, L = [b, x]; for (r = 2 * -Math.PI; r <= 2 * Math.PI; r += Math.PI) { var j = S + r; 1 === y ? b < j && j < x && L.push(j) : x < j && j < b && L.push(j) } for (r = 0, i = L.length; r < i; r++) { var z = s.yAt(g, d, p, f, L[r]); z < T && (T = z), z > A && (A = z) } this.box = { minX: _ - c, maxX: C + c, minY: T - c, maxY: A + c }; break } } }), e.exports = g }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { return e = +e, t -= e, function (n) { return e + t * n } } }, function (e, t, n) { var r = n(15), i = Array.prototype.indexOf, o = function (e, t) { return !!r(e) && i.call(e, t) > -1 }; e.exports = o }, function (e, t) { var n = function (e) { for (var t = [], n = 0; n < e.length; n++)t = t.concat(e[n]); return t }; e.exports = n }, function (e, t, n) { e.exports = { mat3: n(42), vec2: n(75), vec3: n(76), transform: n(77) } }, function (e, t, n) { e.exports = { Canvas: n(344), Group: n(170), Shape: n(9), Arc: n(174), Circle: n(175), Dom: n(176), Ellipse: n(177), Fan: n(178), Image: n(179), Line: n(180), Marker: n(95), Path: n(181), Polygon: n(182), Polyline: n(183), Rect: n(184), Text: n(185), PathSegment: n(55), PathUtil: n(96), Event: n(169), version: "3.3.6" } }, function (e, t, n) { var r = n(2).vec2; e.exports = { at: function (e, t, n) { return (t - e) * n + e }, pointDistance: function (e, t, n, i, o, a) { var s = [n - e, i - t]; if (r.exactEquals(s, [0, 0])) return NaN; var c = [-s[1], s[0]]; r.normalize(c, c); var l = [o - e, a - t]; return Math.abs(r.dot(l, c)) }, box: function (e, t, n, r, i) { var o = i / 2, a = Math.min(e, n), s = Math.max(e, n), c = Math.min(t, r), l = Math.max(t, r); return { minX: a - o, minY: c - o, maxX: s + o, maxY: l + o } }, len: function (e, t, n, r) { return Math.sqrt((n - e) * (n - e) + (r - t) * (r - t)) } } }, function (e, t, n) { var r = n(2); function i(e, t, n, r) { return { x: Math.cos(r) * n + e, y: Math.sin(r) * n + t } } function o(e, t, n, r) { var i, o; return r ? e < t ? (i = t - e, o = 2 * Math.PI - n + e) : e > n && (i = 2 * Math.PI - e + t, o = e - n) : (i = e - t, o = n - e), i > o ? n : t } function a(e, t, n, i) { var a = 0; return n - t >= 2 * Math.PI && (a = 2 * Math.PI), t = r.mod(t, 2 * Math.PI), n = r.mod(n, 2 * Math.PI) + a, e = r.mod(e, 2 * Math.PI), i ? t >= n ? e > n && e < t ? e : o(e, n, t, !0) : e < t || e > n ? e : o(e, t, n) : t <= n ? t < e && e < n ? e : o(e, t, n, !0) : e > t || e < n ? e : o(e, n, t) } function s(e, t, n, i, o, s, c, l, u) { var h = [c, l], f = [e, t], d = [1, 0], p = r.vec2.subtract([], h, f), v = r.vec2.angleTo(d, p); v = a(v, i, o, s); var m = [n * Math.cos(v) + e, n * Math.sin(v) + t]; u && (u.x = m[0], u.y = m[1]); var g = r.vec2.distance(m, h); return g } function c(e, t, n, o, s, c) { var l = 0, u = Math.PI / 2, h = Math.PI, f = 3 * Math.PI / 2, d = [], p = a(l, o, s, c); p === l && d.push(i(e, t, n, l)), p = a(u, o, s, c), p === u && d.push(i(e, t, n, u)), p = a(h, o, s, c), p === h && d.push(i(e, t, n, h)), p = a(f, o, s, c), p === f && d.push(i(e, t, n, f)), d.push(i(e, t, n, o)), d.push(i(e, t, n, s)); var v = 1 / 0, m = -1 / 0, g = 1 / 0, y = -1 / 0; return r.each(d, (function (e) { v > e.x && (v = e.x), m < e.x && (m = e.x), g > e.y && (g = e.y), y < e.y && (y = e.y) })), { minX: v, minY: g, maxX: m, maxY: y } } e.exports = { nearAngle: a, projectPoint: function (e, t, n, r, i, o, a, c) { var l = {}; return s(e, t, n, r, i, o, a, c, l), l }, pointDistance: s, box: c } }, function (e, t, n) { var r = n(37), i = n(55), o = Math.PI, a = Math.sin, s = Math.cos, c = Math.atan2, l = 10, u = o / 3; function h(e, t, n, r, i, h, f) { var d, p, v, m, g, y, b; if (!t.fill) { var x = t.arrowLength || l, w = t.arrowAngle ? t.arrowAngle * o / 180 : u; b = c(r - h, n - i), g = Math.abs(t.lineWidth * s(b)) / 2, y = Math.abs(t.lineWidth * a(b)) / 2, f && (g = -g, y = -y), d = i + x * s(b + w / 2), p = h + x * a(b + w / 2), v = i + x * s(b - w / 2), m = h + x * a(b - w / 2), e.beginPath(), e.moveTo(d - g, p - y), e.lineTo(i - g, h - y), e.lineTo(v - g, m - y), e.moveTo(i - g, h - y), e.lineTo(i + g, h + y), e.moveTo(i, h), e.stroke() } } function f(e) { var t, n = [], o = r.parsePath(e.path); if (!Array.isArray(o) || 0 === o.length || "M" !== o[0][0] && "m" !== o[0][0]) return !1; for (var a = o.length, s = 0; s < o.length; s++) { var c = o[s]; t = new i(c, t, s === a - 1), n.push(t) } return n } function d(e, t, n, r, i, o, a) { var s = a ? t.startArrow : t.endArrow, c = s.d, l = 0, u = i - n, h = o - r, d = Math.atan(u / h); 0 === h && u < 0 ? l = Math.PI : u > 0 && h > 0 ? l = Math.PI / 2 - d : u < 0 && h < 0 ? l = -Math.PI / 2 - d : u >= 0 && h < 0 ? l = -d - Math.PI / 2 : u <= 0 && h > 0 && (l = Math.PI / 2 - d); var p = f(s); if (p) { c && (a ? (i += Math.sin(Math.abs(d)) * c, o = o + Math.cos(Math.abs(d)) * c - .5 * e.lineWidth) : (i -= Math.sin(Math.abs(d)) * c, o = o - Math.cos(Math.abs(d)) * c + .5 * e.lineWidth)), e.save(), e.beginPath(), e.translate(i, o), e.rotate(l); for (var v = 0; v < p.length; v++)p[v].draw(e); e.setTransform(1, 0, 0, 1, 0, 0), e.fillStyle = e.strokeStyle, e.fill(), e.restore() } } e.exports = { addStartArrow: function (e, t, n, r, i, o) { "object" === typeof t.startArrow ? d(e, t, n, r, i, o, !0) : t.startArrow && h(e, t, n, r, i, o, !0) }, addEndArrow: function (e, t, n, r, i, o) { "object" === typeof t.endArrow ? d(e, t, n, r, i, o, !1) : t.endArrow && h(e, t, n, r, i, o, !1) } } }, function (e, t, n) { var r = n(2), i = n(93), o = n(94), a = n(172), s = n(173), c = r.vec3, l = r.mat3, u = ["m", "l", "c", "a", "q", "h", "v", "t", "s", "z"]; function h(e, t, n) { return { x: n.x + e, y: n.y + t } } function f(e, t) { return { x: t.x + (t.x - e.x), y: t.y + (t.y - e.y) } } function d(e) { return Math.sqrt(e[0] * e[0] + e[1] * e[1]) } function p(e, t) { return (e[0] * t[0] + e[1] * t[1]) / (d(e) * d(t)) } function v(e, t) { return (e[0] * t[1] < e[1] * t[0] ? -1 : 1) * Math.acos(p(e, t)) } function m(e, t, n, i, o, a, s) { var c = r.mod(r.toRadian(s), 2 * Math.PI), l = e.x, u = e.y, h = t.x, f = t.y, d = Math.cos(c) * (l - h) / 2 + Math.sin(c) * (u - f) / 2, m = -1 * Math.sin(c) * (l - h) / 2 + Math.cos(c) * (u - f) / 2, g = d * d / (o * o) + m * m / (a * a); g > 1 && (o *= Math.sqrt(g), a *= Math.sqrt(g)); var y = o * o * (m * m) + a * a * (d * d), b = Math.sqrt((o * o * (a * a) - y) / y); n === i && (b *= -1), isNaN(b) && (b = 0); var x = b * o * m / a, w = b * -a * d / o, _ = (l + h) / 2 + Math.cos(c) * x - Math.sin(c) * w, C = (u + f) / 2 + Math.sin(c) * x + Math.cos(c) * w, M = v([1, 0], [(d - x) / o, (m - w) / a]), O = [(d - x) / o, (m - w) / a], k = [(-1 * d - x) / o, (-1 * m - w) / a], S = v(O, k); return p(O, k) <= -1 && (S = Math.PI), p(O, k) >= 1 && (S = 0), 0 === i && S > 0 && (S -= 2 * Math.PI), 1 === i && S < 0 && (S += 2 * Math.PI), [e, _, C, o, a, M, S, c, i] } var g = function (e, t, n) { this.preSegment = t, this.isLast = n, this.init(e, t) }; r.augment(g, { init: function (e, t) { var n = e[0]; t = t || { endPoint: { x: 0, y: 0 } }; var i, o, a, s, c = u.indexOf(n) >= 0, l = c ? n.toUpperCase() : n, d = e, p = t.endPoint, v = d[1], g = d[2]; switch (l) { default: break; case "M": s = c ? h(v, g, p) : { x: v, y: g }, this.command = "M", this.params = [p, s], this.subStart = s, this.endPoint = s; break; case "L": s = c ? h(v, g, p) : { x: v, y: g }, this.command = "L", this.params = [p, s], this.subStart = t.subStart, this.endPoint = s, this.endTangent = function () { return [s.x - p.x, s.y - p.y] }, this.startTangent = function () { return [p.x - s.x, p.y - s.y] }; break; case "H": s = c ? h(v, 0, p) : { x: v, y: p.y }, this.command = "L", this.params = [p, s], this.subStart = t.subStart, this.endPoint = s, this.endTangent = function () { return [s.x - p.x, s.y - p.y] }, this.startTangent = function () { return [p.x - s.x, p.y - s.y] }; break; case "V": s = c ? h(0, v, p) : { x: p.x, y: v }, this.command = "L", this.params = [p, s], this.subStart = t.subStart, this.endPoint = s, this.endTangent = function () { return [s.x - p.x, s.y - p.y] }, this.startTangent = function () { return [p.x - s.x, p.y - s.y] }; break; case "Q": c ? (i = h(v, g, p), o = h(d[3], d[4], p)) : (i = { x: v, y: g }, o = { x: d[3], y: d[4] }), this.command = "Q", this.params = [p, i, o], this.subStart = t.subStart, this.endPoint = o, this.endTangent = function () { return [o.x - i.x, o.y - i.y] }, this.startTangent = function () { return [p.x - i.x, p.y - i.y] }; break; case "T": o = c ? h(v, g, p) : { x: v, y: g }, "Q" === t.command ? (i = f(t.params[1], p), this.command = "Q", this.params = [p, i, o], this.subStart = t.subStart, this.endPoint = o, this.endTangent = function () { return [o.x - i.x, o.y - i.y] }, this.startTangent = function () { return [p.x - i.x, p.y - i.y] }) : (this.command = "TL", this.params = [p, o], this.subStart = t.subStart, this.endPoint = o, this.endTangent = function () { return [o.x - p.x, o.y - p.y] }, this.startTangent = function () { return [p.x - o.x, p.y - o.y] }); break; case "C": c ? (i = h(v, g, p), o = h(d[3], d[4], p), a = h(d[5], d[6], p)) : (i = { x: v, y: g }, o = { x: d[3], y: d[4] }, a = { x: d[5], y: d[6] }), this.command = "C", this.params = [p, i, o, a], this.subStart = t.subStart, this.endPoint = a, this.endTangent = function () { return [a.x - o.x, a.y - o.y] }, this.startTangent = function () { return [p.x - i.x, p.y - i.y] }; break; case "S": c ? (o = h(v, g, p), a = h(d[3], d[4], p)) : (o = { x: v, y: g }, a = { x: d[3], y: d[4] }), "C" === t.command ? (i = f(t.params[2], p), this.command = "C", this.params = [p, i, o, a], this.subStart = t.subStart, this.endPoint = a, this.endTangent = function () { return [a.x - o.x, a.y - o.y] }, this.startTangent = function () { return [p.x - i.x, p.y - i.y] }) : (this.command = "SQ", this.params = [p, o, a], this.subStart = t.subStart, this.endPoint = a, this.endTangent = function () { return [a.x - o.x, a.y - o.y] }, this.startTangent = function () { return [p.x - o.x, p.y - o.y] }); break; case "A": var y = v, b = g, x = d[3], w = d[4], _ = d[5]; s = c ? h(d[6], d[7], p) : { x: d[6], y: d[7] }, this.command = "A"; var C = m(p, s, w, _, y, b, x); this.params = C; var M = t.subStart; this.subStart = M, this.endPoint = s; var O = C[5] % (2 * Math.PI); r.isNumberEqual(O, 2 * Math.PI) && (O = 0); var k = C[6] % (2 * Math.PI); r.isNumberEqual(k, 2 * Math.PI) && (k = 0); var S = .001; this.startTangent = function () { 0 === _ && (S *= -1); var e = C[3] * Math.cos(O - S) + C[1], t = C[4] * Math.sin(O - S) + C[2]; return [e - M.x, t - M.y] }, this.endTangent = function () { var e = C[6]; e - 2 * Math.PI < 1e-4 && (e = 0); var t = C[3] * Math.cos(O + e + S) + C[1], n = C[4] * Math.sin(O + e - S) + C[2]; return [p.x - t, p.y - n] }; break; case "Z": this.command = "Z", this.params = [p, t.subStart], this.subStart = t.subStart, this.endPoint = t.subStart } }, isInside: function (e, t, n) { var r = this, o = r.command, a = r.params, s = r.box; if (s && !i.box(s.minX, s.maxX, s.minY, s.maxY, e, t)) return !1; switch (o) { default: break; case "M": return !1; case "TL": case "L": case "Z": return i.line(a[0].x, a[0].y, a[1].x, a[1].y, n, e, t); case "SQ": case "Q": return i.quadraticline(a[0].x, a[0].y, a[1].x, a[1].y, a[2].x, a[2].y, n, e, t); case "C": return i.cubicline(a[0].x, a[0].y, a[1].x, a[1].y, a[2].x, a[2].y, a[3].x, a[3].y, n, e, t); case "A": var u = a, h = u[1], f = u[2], d = u[3], p = u[4], v = u[5], m = u[6], g = u[7], y = u[8], b = d > p ? d : p, x = d > p ? 1 : d / p, w = d > p ? p / d : 1; u = [e, t, 1]; var _ = [1, 0, 0, 0, 1, 0, 0, 0, 1]; return l.translate(_, _, [-h, -f]), l.rotate(_, _, -g), l.scale(_, _, [1 / x, 1 / w]), c.transformMat3(u, u, _), i.arcline(0, 0, b, v, v + m, 1 - y, n, u[0], u[1]) }return !1 }, draw: function (e) { var t, n, r, i = this.command, o = this.params; switch (i) { default: break; case "M": e.moveTo(o[1].x, o[1].y); break; case "TL": case "L": e.lineTo(o[1].x, o[1].y); break; case "SQ": case "Q": t = o[1], n = o[2], e.quadraticCurveTo(t.x, t.y, n.x, n.y); break; case "C": t = o[1], n = o[2], r = o[3], e.bezierCurveTo(t.x, t.y, n.x, n.y, r.x, r.y); break; case "A": var a = o, s = a[1], c = a[2], l = s, u = c, h = a[3], f = a[4], d = a[5], p = a[6], v = a[7], m = a[8], g = h > f ? h : f, y = h > f ? 1 : h / f, b = h > f ? f / h : 1; e.translate(l, u), e.rotate(v), e.scale(y, b), e.arc(0, 0, g, d, d + p, 1 - m), e.scale(1 / y, 1 / b), e.rotate(-v), e.translate(-l, -u); break; case "Z": e.closePath(); break } }, getBBox: function (e) { var t, n, r, i, c = e / 2, l = this.params; switch (this.command) { default: case "M": case "Z": break; case "TL": case "L": this.box = { minX: Math.min(l[0].x, l[1].x) - c, maxX: Math.max(l[0].x, l[1].x) + c, minY: Math.min(l[0].y, l[1].y) - c, maxY: Math.max(l[0].y, l[1].y) + c }; break; case "SQ": case "Q": for (n = a.extrema(l[0].x, l[1].x, l[2].x), r = 0, i = n.length; r < i; r++)n[r] = a.at(l[0].x, l[1].x, l[2].x, n[r]); for (n.push(l[0].x, l[2].x), t = a.extrema(l[0].y, l[1].y, l[2].y), r = 0, i = t.length; r < i; r++)t[r] = a.at(l[0].y, l[1].y, l[2].y, t); t.push(l[0].y, l[2].y), this.box = { minX: Math.min.apply(Math, n) - c, maxX: Math.max.apply(Math, n) + c, minY: Math.min.apply(Math, t) - c, maxY: Math.max.apply(Math, t) + c }; break; case "C": for (n = o.extrema(l[0].x, l[1].x, l[2].x, l[3].x), r = 0, i = n.length; r < i; r++)n[r] = o.at(l[0].x, l[1].x, l[2].x, l[3].x, n[r]); for (t = o.extrema(l[0].y, l[1].y, l[2].y, l[3].y), r = 0, i = t.length; r < i; r++)t[r] = o.at(l[0].y, l[1].y, l[2].y, l[3].y, t[r]); n.push(l[0].x, l[3].x), t.push(l[0].y, l[3].y), this.box = { minX: Math.min.apply(Math, n) - c, maxX: Math.max.apply(Math, n) + c, minY: Math.min.apply(Math, t) - c, maxY: Math.max.apply(Math, t) + c }; break; case "A": var u = l, h = u[1], f = u[2], d = u[3], p = u[4], v = u[5], m = u[6], g = u[7], y = u[8], b = v, x = v + m, w = s.xExtrema(g, d, p), _ = 1 / 0, C = -1 / 0, M = [b, x]; for (r = 2 * -Math.PI; r <= 2 * Math.PI; r += Math.PI) { var O = w + r; 1 === y ? b < O && O < x && M.push(O) : x < O && O < b && M.push(O) } for (r = 0, i = M.length; r < i; r++) { var k = s.xAt(g, d, p, h, M[r]); k < _ && (_ = k), k > C && (C = k) } var S = s.yExtrema(g, d, p), T = 1 / 0, A = -1 / 0, L = [b, x]; for (r = 2 * -Math.PI; r <= 2 * Math.PI; r += Math.PI) { var j = S + r; 1 === y ? b < j && j < x && L.push(j) : x < j && j < b && L.push(j) } for (r = 0, i = L.length; r < i; r++) { var z = s.yAt(g, d, p, f, L[r]); z < T && (T = z), z > A && (A = z) } this.box = { minX: _ - c, maxX: C + c, minY: T - c, maxY: A + c }; break } } }), e.exports = g }, function (e, t, n) { "use strict"; function r(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function i(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } function o(e, t, n) { return t && i(e.prototype, t), n && i(e, n), e } var a = n(50), s = n(10), c = a.mat3, l = a.vec3, u = function () { function e(t) { r(this, e); var n = this.getDefaultCfg(); s(this, n, t), this.init() } return o(e, [{ key: "getDefaultCfg", value: function () { return { isTransposed: !1, matrix: [1, 0, 0, 0, 1, 0, 0, 0, 1] } } }]), o(e, [{ key: "init", value: function () { var e = this.start, t = this.end, n = { x: (e.x + t.x) / 2, y: (e.y + t.y) / 2 }; this.center = n, this.width = Math.abs(t.x - e.x), this.height = Math.abs(t.y - e.y) } }, { key: "_swapDim", value: function (e) { var t = this[e]; if (t) { var n = t.start; t.start = t.end, t.end = n } } }, { key: "getCenter", value: function () { return this.center } }, { key: "getWidth", value: function () { return this.width } }, { key: "getHeight", value: function () { return this.height } }, { key: "convertDim", value: function (e, t) { var n = this[t], r = n.start, i = n.end; return r + e * (i - r) } }, { key: "invertDim", value: function (e, t) { var n = this[t], r = n.start, i = n.end; return (e - r) / (i - r) } }, { key: "convertPoint", value: function (e) { return e } }, { key: "invertPoint", value: function (e) { return e } }, { key: "applyMatrix", value: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, r = this.matrix, i = [e, t, n]; return l.transformMat3(i, i, r), i } }, { key: "invertMatrix", value: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, r = this.matrix, i = c.invert([], r), o = [e, t, n]; return l.transformMat3(o, o, i), o } }, { key: "convert", value: function (e) { var t = this.convertPoint(e), n = t.x, r = t.y, i = this.applyMatrix(n, r, 1); return { x: i[0], y: i[1] } } }, { key: "invert", value: function (e) { var t = this.invertMatrix(e.x, e.y, 1); return this.invertPoint({ x: t[0], y: t[1] }) } }, { key: "rotate", value: function (e) { var t = this.matrix, n = this.center; return c.translate(t, t, [-n.x, -n.y]), c.rotate(t, t, e), c.translate(t, t, [n.x, n.y]), this } }, { key: "reflect", value: function (e) { switch (e) { case "x": this._swapDim("x"); break; case "y": this._swapDim("y"); break; default: this._swapDim("y") }return this } }, { key: "scale", value: function (e, t) { var n = this.matrix, r = this.center; return c.translate(n, n, [-r.x, -r.y]), c.scale(n, n, [e, t]), c.translate(n, n, [r.x, r.y]), this } }, { key: "translate", value: function (e, t) { var n = this.matrix; return c.translate(n, n, [e, t]), this } }, { key: "transpose", value: function () { return this.isTransposed = !this.isTransposed, this } }]), e }(); e.exports = u }, function (e, t, n) { var r = n(0), i = { splitPoints: function (e) { var t = [], n = e.x, i = e.y; return i = r.isArray(i) ? i : [i], r.each(i, (function (e, i) { var o = { x: r.isArray(n) ? n[i] : n, y: e }; t.push(o) })), t }, addFillAttrs: function (e, t) { t.color && (e.fill = t.color), r.isNumber(t.opacity) && (e.opacity = e.fillOpacity = t.opacity) }, addStrokeAttrs: function (e, t) { t.color && (e.stroke = t.color), r.isNumber(t.opacity) && (e.opacity = e.strokeOpacity = t.opacity) } }; e.exports = i }, function (e, t, n) { "use strict"; n.d(t, "c", (function () { return c })), n.d(t, "d", (function () { return l })), n.d(t, "b", (function () { return f })), n.d(t, "a", (function () { return d })), t["g"] = p, t["h"] = v, t["f"] = m; var r = n(508), i = n(101), o = Object(r["a"])("start", "end", "cancel", "interrupt"), a = [], s = 0, c = 1, l = 2, u = 3, h = 4, f = 5, d = 6; function p(e, t) { var n = m(e, t); if (n.state > s) throw new Error("too late; already scheduled"); return n } function v(e, t) { var n = m(e, t); if (n.state > u) throw new Error("too late; already running"); return n } function m(e, t) { var n = e.__transition; if (!n || !(n = n[t])) throw new Error("transition not found"); return n } function g(e, t, n) { var r, o = e.__transition; function a(e) { n.state = c, n.timer.restart(s, n.delay, n.time), n.delay <= e && s(e - n.delay) } function s(a) { var f, m, g, y; if (n.state !== c) return v(); for (f in o) if (y = o[f], y.name === n.name) { if (y.state === u) return Object(i["timeout"])(s); y.state === h ? (y.state = d, y.timer.stop(), y.on.call("interrupt", e, e.__data__, y.index, y.group), delete o[f]) : +f < t && (y.state = d, y.timer.stop(), y.on.call("cancel", e, e.__data__, y.index, y.group), delete o[f]) } if (Object(i["timeout"])((function () { n.state === u && (n.state = h, n.timer.restart(p, n.delay, n.time), p(a)) })), n.state = l, n.on.call("start", e, e.__data__, n.index, n.group), n.state === l) { for (n.state = u, r = new Array(g = n.tween.length), f = 0, m = -1; f < g; ++f)(y = n.tween[f].value.call(e, e.__data__, n.index, n.group)) && (r[++m] = y); r.length = m + 1 } } function p(t) { var i = t < n.duration ? n.ease.call(null, t / n.duration) : (n.timer.restart(v), n.state = f, 1), o = -1, a = r.length; while (++o < a) r[o].call(e, i); n.state === f && (n.on.call("end", e, e.__data__, n.index, n.group), v()) } function v() { for (var r in n.state = d, n.timer.stop(), delete o[t], o) return; delete e.__transition } o[t] = n, n.timer = Object(i["timer"])(a, 0, n.time) } t["e"] = function (e, t, n, r, i, c) { var l = e.__transition; if (l) { if (n in l) return } else e.__transition = {}; g(e, n, { name: t, index: r, group: i, on: o, tween: a, time: c.time, delay: c.delay, duration: c.duration, ease: c.ease, timer: null, state: s }) } }, function (e, t, n) { e.exports = { isFunction: n(13), isObject: n(22), isBoolean: n(60), isNil: n(6), isString: n(12), isArray: n(5), isNumber: n(11), isEmpty: n(61), uniqueId: n(62), clone: n(39), deepMix: n(27), assign: n(10), merge: n(27), upperFirst: n(64), each: n(3), isEqual: n(40), toArray: n(29), extend: n(65), augment: n(66), remove: n(67), isNumberEqual: n(30), toRadian: n(68), toDegree: n(69), mod: n(70), clamp: n(41), createDom: n(71), modifyCSS: n(72), requestAnimationFrame: n(73), getRatio: function () { return window.devicePixelRatio ? window.devicePixelRatio : 2 }, mat3: n(42), vec2: n(75), vec3: n(76), transform: n(77) } }, function (e, t, n) { var r = n(14), i = function (e) { return r(e, "Boolean") }; e.exports = i }, function (e, t, n) { var r = n(6), i = n(15), o = n(113), a = n(114), s = Object.prototype.hasOwnProperty; function c(e) { if (r(e)) return !0; if (i(e)) return !e.length; var t = o(e); if ("Map" === t || "Set" === t) return !e.size; if (a(e)) return !Object.keys(e).length; for (var n in e) if (s.call(e, n)) return !1; return !0 } e.exports = c }, function (e, t) { var n = function () { var e = {}; return function (t) { return t = t || "g", e[t] ? e[t] += 1 : e[t] = 1, t + e[t] } }(); e.exports = n }, function (e, t) { var n = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r = function (e) { return "object" === ("undefined" === typeof e ? "undefined" : n(e)) && null !== e }; e.exports = r }, function (e, t, n) { var r = n(26), i = function (e) { var t = r(e); return t.charAt(0).toUpperCase() + t.substring(1) }; e.exports = i }, function (e, t, n) { var r = n(13), i = n(10), o = function (e, t, n, o) { r(t) || (n = t, t = e, e = function () { }); var a = Object.create ? function (e, t) { return Object.create(e, { constructor: { value: t } }) } : function (e, t) { function n() { } n.prototype = e; var r = new n; return r.constructor = t, r }, s = a(t.prototype, e); return e.prototype = i(s, e.prototype), e.superclass = a(t.prototype, t), i(s, n), i(e, o), e }; e.exports = o }, function (e, t, n) { var r = n(13), i = n(29), o = n(10), a = function (e) { for (var t = i(arguments), n = 1; n < t.length; n++) { var a = t[n]; r(a) && (a = a.prototype), o(e.prototype, a) } }; e.exports = a }, function (e, t) { var n = Array.prototype, r = n.splice, i = n.indexOf, o = n.slice, a = function (e) { for (var t = o.call(arguments, 1), n = 0; n < t.length; n++) { var a = t[n], s = -1; while ((s = i.call(e, a)) > -1) r.call(e, s, 1) } return e }; e.exports = a }, function (e, t) { var n = Math.PI / 180, r = function (e) { return n * e }; e.exports = r }, function (e, t) { var n = 180 / Math.PI, r = function (e) { return n * e }; e.exports = r }, function (e, t) { var n = function (e, t) { return (e % t + t) % t }; e.exports = n }, function (e, t) { var n = document.createElement("table"), r = document.createElement("tr"), i = /^\s*<(\w+|!)[^>]*>/, o = { tr: document.createElement("tbody"), tbody: n, thead: n, tfoot: n, td: r, th: r, "*": document.createElement("div") }; e.exports = function (e) { var t = i.test(e) && RegExp.$1; t in o || (t = "*"); var n = o[t]; e = e.replace(/(^\s*)|(\s*$)/g, ""), n.innerHTML = "" + e; var r = n.childNodes[0]; return n.removeChild(r), r } }, function (e, t) { e.exports = function (e, t) { if (e) for (var n in t) t.hasOwnProperty(n) && (e.style[n] = t[n]); return e } }, function (e, t) { e.exports = function (e) { var t = window.requestAnimationFrame || window.webkitRequestAnimationFrame || function (e) { return setTimeout(e, 16) }; return t(e) } }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.setMatrixArrayType = i, t.toRadian = a, t.equals = s; var r = t.EPSILON = 1e-6; t.ARRAY_TYPE = "undefined" !== typeof Float32Array ? Float32Array : Array, t.RANDOM = Math.random; function i(e) { t.ARRAY_TYPE = e } var o = Math.PI / 180; function a(e) { return e * o } function s(e, t) { return Math.abs(e - t) <= r * Math.max(1, Math.abs(e), Math.abs(t)) } }, function (e, t, n) { var r = n(218), i = n(41); r.angle = function (e, t) { var n = r.dot(e, t) / (r.length(e) * r.length(t)); return Math.acos(i(n, -1, 1)) }, r.direction = function (e, t) { return e[0] * t[1] - t[0] * e[1] }, r.angleTo = function (e, t, n) { var i = r.angle(e, t), o = r.direction(e, t) >= 0; return n ? o ? 2 * Math.PI - i : i : o ? i : 2 * Math.PI - i }, r.vertical = function (e, t, n) { return n ? (e[0] = t[1], e[1] = -1 * t[0]) : (e[0] = -1 * t[1], e[1] = t[0]), e }, e.exports = r }, function (e, t, n) { var r = n(219); e.exports = r }, function (e, t, n) { var r = n(39), i = n(3), o = n(42); e.exports = function (e, t) { return e = r(e), i(t, (function (t) { switch (t[0]) { case "t": o.translate(e, e, [t[1], t[2]]); break; case "s": o.scale(e, e, [t[1], t[2]]); break; case "r": o.rotate(e, e, t[1]); break; case "m": o.multiply(e, e, t[1]); break; default: return !1 } })), e } }, function (e, t, n) { var r = n(1), i = function (e, t, n, r) { this.type = e, this.target = null, this.currentTarget = null, this.bubbles = n, this.cancelable = r, this.timeStamp = (new Date).getTime(), this.defaultPrevented = !1, this.propagationStopped = !1, this.removed = !1, this.event = t }; r.augment(i, { preventDefault: function () { this.defaultPrevented = this.cancelable && !0 }, stopPropagation: function () { this.propagationStopped = !0 }, remove: function () { this.remove = !0 }, clone: function () { return r.clone(this) }, toString: function () { return "[Event (type=" + this.type + ")]" } }), e.exports = i }, function (e, t, n) { var r = n(43), i = n(118), o = n(80), a = n(44); e.exports = { line: function (e, t, n, i, o, a, s) { var c = r.box(e, t, n, i, o); if (!this.box(c.minX, c.maxX, c.minY, c.maxY, a, s)) return !1; var l = r.pointDistance(e, t, n, i, a, s); return !isNaN(l) && l <= o / 2 }, polyline: function (e, t, n, r) { var i = e.length - 1; if (i < 1) return !1; for (var o = 0; o < i; o++) { var a = e[o][0], s = e[o][1], c = e[o + 1][0], l = e[o + 1][1]; if (this.line(a, s, c, l, t, n, r)) return !0 } return !1 }, cubicline: function (e, t, n, r, i, a, s, c, l, u, h) { return o.pointDistance(e, t, n, r, i, a, s, c, u, h) <= l / 2 }, quadraticline: function (e, t, n, r, o, a, s, c, l) { return i.pointDistance(e, t, n, r, o, a, c, l) <= s / 2 }, arcline: function (e, t, n, r, i, o, s, c, l) { return a.pointDistance(e, t, n, r, i, o, c, l) <= s / 2 }, rect: function (e, t, n, r, i, o) { return e <= i && i <= e + n && t <= o && o <= t + r }, circle: function (e, t, n, r, i) { return Math.pow(r - e, 2) + Math.pow(i - t, 2) <= Math.pow(n, 2) }, box: function (e, t, n, r, i, o) { return e <= i && i <= t && n <= o && o <= r } } }, function (e, t, n) { var r = n(1), i = r.vec2; function o(e, t, n, r, i) { var o = 1 - i; return o * o * (o * r + 3 * i * n) + i * i * (i * e + 3 * o * t) } function a(e, t, n, r, i) { var o = 1 - i; return 3 * (((t - e) * o + 2 * (n - t) * i) * o + (r - n) * i * i) } function s(e, t, n, r, a, s, c, l, u, h, f) { var d, p, v, m, g, y, b, x, w = .005, _ = 1 / 0, C = 1e-4, M = [u, h]; for (p = 0; p < 1; p += .05)v = [o(e, n, a, c, p), o(t, r, s, l, p)], m = i.squaredDistance(M, v), m < _ && (d = p, _ = m); _ = 1 / 0; for (var O = 0; O < 32; O++) { if (w < C) break; b = d - w, x = d + w, v = [o(e, n, a, c, b), o(t, r, s, l, b)], m = i.squaredDistance(M, v), b >= 0 && m < _ ? (d = b, _ = m) : (y = [o(e, n, a, c, x), o(t, r, s, l, x)], g = i.squaredDistance(M, y), x <= 1 && g < _ ? (d = x, _ = g) : w *= .5) } return f && (f.x = o(e, n, a, c, d), f.y = o(t, r, s, l, d)), Math.sqrt(_) } function c(e, t, n, i) { var o, a, s, c = 3 * e - 9 * t + 9 * n - 3 * i, l = 6 * t - 12 * n + 6 * i, u = 3 * n - 3 * i, h = []; if (r.isNumberEqual(c, 0)) r.isNumberEqual(l, 0) || (o = -u / l, o >= 0 && o <= 1 && h.push(o)); else { var f = l * l - 4 * c * u; r.isNumberEqual(f, 0) ? h.push(-l / (2 * c)) : f > 0 && (s = Math.sqrt(f), o = (-l + s) / (2 * c), a = (-l - s) / (2 * c), o >= 0 && o <= 1 && h.push(o), a >= 0 && a <= 1 && h.push(a)) } return h } function l(e, t, n, r, i) { var o = -3 * t + 9 * n - 9 * r + 3 * i, a = e * o + 6 * t - 12 * n + 6 * r; return e * a - 3 * t + 3 * n } function u(e, t, n, i, o, a, s, c, u) { r.isNil(u) && (u = 1), u = u > 1 ? 1 : u < 0 ? 0 : u; for (var h = u / 2, f = 12, d = [-.1252, .1252, -.3678, .3678, -.5873, .5873, -.7699, .7699, -.9041, .9041, -.9816, .9816], p = [.2491, .2491, .2335, .2335, .2032, .2032, .1601, .1601, .1069, .1069, .0472, .0472], v = 0, m = 0; m < f; m++) { var g = h * d[m] + h, y = l(g, e, n, o, s), b = l(g, t, i, a, c), x = y * y + b * b; v += p[m] * Math.sqrt(x) } return h * v } e.exports = { at: o, derivativeAt: a, projectPoint: function (e, t, n, r, i, o, a, c, l, u) { var h = {}; return s(e, t, n, r, i, o, a, c, l, u, h), h }, pointDistance: s, extrema: c, len: u } }, function (e, t, n) { var r = n(1), i = n(7), o = n(31), a = n(46), s = function e(t) { e.superclass.constructor.call(this, t) }; s.Symbols = { circle: function (e, t, n) { return [["M", e, t], ["m", -n, 0], ["a", n, n, 0, 1, 0, 2 * n, 0], ["a", n, n, 0, 1, 0, 2 * -n, 0]] }, square: function (e, t, n) { return [["M", e - n, t - n], ["L", e + n, t - n], ["L", e + n, t + n], ["L", e - n, t + n], ["Z"]] }, diamond: function (e, t, n) { return [["M", e - n, t], ["L", e, t - n], ["L", e + n, t], ["L", e, t + n], ["Z"]] }, triangle: function (e, t, n) { var r = n * Math.sin(1 / 3 * Math.PI); return [["M", e - n, t + r], ["L", e, t - r], ["L", e + n, t + r], ["z"]] }, "triangle-down": function (e, t, n) { var r = n * Math.sin(1 / 3 * Math.PI); return [["M", e - n, t - r], ["L", e + n, t - r], ["L", e, t + r], ["Z"]] } }, s.ATTRS = { path: null, lineWidth: 1 }, r.extend(s, i), r.augment(s, { type: "marker", canFill: !0, canStroke: !0, getDefaultAttrs: function () { return { x: 0, y: 0, lineWidth: 1 } }, calculateBox: function () { var e = this._attrs, t = e.x, n = e.y, r = e.radius || e.r, i = this.getHitLineWidth(), o = i / 2 + r; return { minX: t - o, minY: n - o, maxX: t + o, maxY: n + o } }, _getPath: function () { var e, t = this._attrs, n = t.x, i = t.y, o = t.radius || t.r, a = t.symbol || "circle"; return e = r.isFunction(a) ? a : s.Symbols[a], e ? e(n, i, o) : (console.warn(a + " marker is not supported."), null) }, createPath: function (e) { var t = this._cfg.segments; if (!t || this._cfg.hasUpdate) { var n, r = o.parsePath(this._getPath()); e.beginPath(), t = []; for (var i = 0; i < r.length; i++) { var s = r[i]; n = new a(s, n, i === r.length - 1), t.push(n), n.draw(e) } this._cfg.segments = t, this._cfg.hasUpdate = !1 } else { e.beginPath(); for (var c = 0; c < t.length; c++)t[c].draw(e) } } }), e.exports = s }, function (e, t, n) { var r = n(59), i = "\t\n\v\f\r 聽釟�釥庘��鈥佲�傗�冣�勨�呪�嗏�団�堚�夆�娾�仧銆�\u2028\u2029", o = new RegExp("([a-z])[" + i + ",]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[" + i + "]*,?[" + i + "]*)+)", "ig"), a = new RegExp("(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[" + i + "]*,?[" + i + "]*", "ig"), s = function (e) { if (!e) return null; if (typeof e === typeof []) return e; var t = { a: 7, c: 6, o: 2, h: 1, l: 2, m: 2, r: 4, q: 4, s: 4, t: 2, v: 1, u: 3, z: 0 }, n = []; return String(e).replace(o, (function (e, r, i) { var o = [], s = r.toLowerCase(); if (i.replace(a, (function (e, t) { t && o.push(+t) })), "m" === s && o.length > 2 && (n.push([r].concat(o.splice(0, 2))), s = "l", r = "m" === r ? "l" : "L"), "o" === s && 1 === o.length && n.push([r, o[0]]), "r" === s) n.push([r].concat(o)); else while (o.length >= t[s]) if (n.push([r].concat(o.splice(0, t[s]))), !t[s]) break })), n }, c = function (e, t) { for (var n = [], r = 0, i = e.length; i - 2 * !t > r; r += 2) { var o = [{ x: +e[r - 2], y: +e[r - 1] }, { x: +e[r], y: +e[r + 1] }, { x: +e[r + 2], y: +e[r + 3] }, { x: +e[r + 4], y: +e[r + 5] }]; t ? r ? i - 4 === r ? o[3] = { x: +e[0], y: +e[1] } : i - 2 === r && (o[2] = { x: +e[0], y: +e[1] }, o[3] = { x: +e[2], y: +e[3] }) : o[0] = { x: +e[i - 2], y: +e[i - 1] } : i - 4 === r ? o[3] = o[2] : r || (o[0] = { x: +e[r], y: +e[r + 1] }), n.push(["C", (-o[0].x + 6 * o[1].x + o[2].x) / 6, (-o[0].y + 6 * o[1].y + o[2].y) / 6, (o[1].x + 6 * o[2].x - o[3].x) / 6, (o[1].y + 6 * o[2].y - o[3].y) / 6, o[2].x, o[2].y]) } return n }, l = function (e, t, n, r, i) { var o = []; if (null === i && null === r && (r = n), e = +e, t = +t, n = +n, r = +r, null !== i) { var a = Math.PI / 180, s = e + n * Math.cos(-r * a), c = e + n * Math.cos(-i * a), l = t + n * Math.sin(-r * a), u = t + n * Math.sin(-i * a); o = [["M", s, l], ["A", n, n, 0, +(i - r > 180), 0, c, u]] } else o = [["M", e, t], ["m", 0, -r], ["a", n, r, 0, 1, 1, 0, 2 * r], ["a", n, r, 0, 1, 1, 0, -2 * r], ["z"]]; return o }, u = function (e) { if (e = s(e), !e || !e.length) return [["M", 0, 0]]; var t, n, r = [], i = 0, o = 0, a = 0, u = 0, h = 0; "M" === e[0][0] && (i = +e[0][1], o = +e[0][2], a = i, u = o, h++, r[0] = ["M", i, o]); for (var f, d, p = 3 === e.length && "M" === e[0][0] && "R" === e[1][0].toUpperCase() && "Z" === e[2][0].toUpperCase(), v = h, m = e.length; v < m; v++) { if (r.push(f = []), d = e[v], t = d[0], t !== t.toUpperCase()) switch (f[0] = t.toUpperCase(), f[0]) { case "A": f[1] = d[1], f[2] = d[2], f[3] = d[3], f[4] = d[4], f[5] = d[5], f[6] = +d[6] + i, f[7] = +d[7] + o; break; case "V": f[1] = +d[1] + o; break; case "H": f[1] = +d[1] + i; break; case "R": n = [i, o].concat(d.slice(1)); for (var g = 2, y = n.length; g < y; g++)n[g] = +n[g] + i, n[++g] = +n[g] + o; r.pop(), r = r.concat(c(n, p)); break; case "O": r.pop(), n = l(i, o, d[1], d[2]), n.push(n[0]), r = r.concat(n); break; case "U": r.pop(), r = r.concat(l(i, o, d[1], d[2], d[3])), f = ["U"].concat(r[r.length - 1].slice(-2)); break; case "M": a = +d[1] + i, u = +d[2] + o; break; default: for (var b = 1, x = d.length; b < x; b++)f[b] = +d[b] + (b % 2 ? i : o) } else if ("R" === t) n = [i, o].concat(d.slice(1)), r.pop(), r = r.concat(c(n, p)), f = ["R"].concat(d.slice(-2)); else if ("O" === t) r.pop(), n = l(i, o, d[1], d[2]), n.push(n[0]), r = r.concat(n); else if ("U" === t) r.pop(), r = r.concat(l(i, o, d[1], d[2], d[3])), f = ["U"].concat(r[r.length - 1].slice(-2)); else for (var w = 0, _ = d.length; w < _; w++)f[w] = d[w]; if (t = t.toUpperCase(), "O" !== t) switch (f[0]) { case "Z": i = +a, o = +u; break; case "H": i = f[1]; break; case "V": o = f[1]; break; case "M": a = f[f.length - 2], u = f[f.length - 1]; break; default: i = f[f.length - 2], o = f[f.length - 1] } } return r }, h = function (e, t, n, r) { return [e, t, n, r, n, r] }, f = function (e, t, n, r, i, o) { var a = 1 / 3, s = 2 / 3; return [a * e + s * n, a * t + s * r, a * i + s * n, a * o + s * r, i, o] }, d = function e(t, n, r, i, o, a, s, c, l, u) { r === i && (r += 1); var h, f, d, p, v, m = 120 * Math.PI / 180, g = Math.PI / 180 * (+o || 0), y = [], b = function (e, t, n) { var r = e * Math.cos(n) - t * Math.sin(n), i = e * Math.sin(n) + t * Math.cos(n); return { x: r, y: i } }; if (u) f = u[0], d = u[1], p = u[2], v = u[3]; else { h = b(t, n, -g), t = h.x, n = h.y, h = b(c, l, -g), c = h.x, l = h.y, t === c && n === l && (c += 1, l += 1); var x = (t - c) / 2, w = (n - l) / 2, _ = x * x / (r * r) + w * w / (i * i); _ > 1 && (_ = Math.sqrt(_), r *= _, i *= _); var C = r * r, M = i * i, O = (a === s ? -1 : 1) * Math.sqrt(Math.abs((C * M - C * w * w - M * x * x) / (C * w * w + M * x * x))); p = O * r * w / i + (t + c) / 2, v = O * -i * x / r + (n + l) / 2, f = Math.asin(((n - v) / i).toFixed(9)), d = Math.asin(((l - v) / i).toFixed(9)), f = t < p ? Math.PI - f : f, d = c < p ? Math.PI - d : d, f < 0 && (f = 2 * Math.PI + f), d < 0 && (d = 2 * Math.PI + d), s && f > d && (f -= 2 * Math.PI), !s && d > f && (d -= 2 * Math.PI) } var k = d - f; if (Math.abs(k) > m) { var S = d, T = c, A = l; d = f + m * (s && d > f ? 1 : -1), c = p + r * Math.cos(d), l = v + i * Math.sin(d), y = e(c, l, r, i, o, 0, s, T, A, [d, S, p, v]) } k = d - f; var L = Math.cos(f), j = Math.sin(f), z = Math.cos(d), E = Math.sin(d), P = Math.tan(k / 4), D = 4 / 3 * r * P, H = 4 / 3 * i * P, V = [t, n], I = [t + D * j, n - H * L], N = [c + D * E, l - H * z], R = [c, l]; if (I[0] = 2 * V[0] - I[0], I[1] = 2 * V[1] - I[1], u) return [I, N, R].concat(y); y = [I, N, R].concat(y).join().split(","); for (var F = [], Y = 0, $ = y.length; Y < $; Y++)F[Y] = Y % 2 ? b(y[Y - 1], y[Y], g).y : b(y[Y], y[Y + 1], g).x; return F }, p = function (e, t) { var n, r = u(e), i = t && u(t), o = { x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null }, a = { x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null }, s = [], c = [], l = "", p = "", v = function (e, t, n) { var r, i; if (!e) return ["C", t.x, t.y, t.x, t.y, t.x, t.y]; switch (!(e[0] in { T: 1, Q: 1 }) && (t.qx = t.qy = null), e[0]) { case "M": t.X = e[1], t.Y = e[2]; break; case "A": e = ["C"].concat(d.apply(0, [t.x, t.y].concat(e.slice(1)))); break; case "S": "C" === n || "S" === n ? (r = 2 * t.x - t.bx, i = 2 * t.y - t.by) : (r = t.x, i = t.y), e = ["C", r, i].concat(e.slice(1)); break; case "T": "Q" === n || "T" === n ? (t.qx = 2 * t.x - t.qx, t.qy = 2 * t.y - t.qy) : (t.qx = t.x, t.qy = t.y), e = ["C"].concat(f(t.x, t.y, t.qx, t.qy, e[1], e[2])); break; case "Q": t.qx = e[1], t.qy = e[2], e = ["C"].concat(f(t.x, t.y, e[1], e[2], e[3], e[4])); break; case "L": e = ["C"].concat(h(t.x, t.y, e[1], e[2])); break; case "H": e = ["C"].concat(h(t.x, t.y, e[1], t.y)); break; case "V": e = ["C"].concat(h(t.x, t.y, t.x, e[1])); break; case "Z": e = ["C"].concat(h(t.x, t.y, t.X, t.Y)); break; default: break }return e }, m = function (e, t) { if (e[t].length > 7) { e[t].shift(); var o = e[t]; while (o.length) s[t] = "A", i && (c[t] = "A"), e.splice(t++, 0, ["C"].concat(o.splice(0, 6))); e.splice(t, 1), n = Math.max(r.length, i && i.length || 0) } }, g = function (e, t, o, a, s) { e && t && "M" === e[s][0] && "M" !== t[s][0] && (t.splice(s, 0, ["M", a.x, a.y]), o.bx = 0, o.by = 0, o.x = e[s][1], o.y = e[s][2], n = Math.max(r.length, i && i.length || 0)) }; n = Math.max(r.length, i && i.length || 0); for (var y = 0; y < n; y++) { r[y] && (l = r[y][0]), "C" !== l && (s[y] = l, y && (p = s[y - 1])), r[y] = v(r[y], o, p), "A" !== s[y] && "C" === l && (s[y] = "C"), m(r, y), i && (i[y] && (l = i[y][0]), "C" !== l && (c[y] = l, y && (p = c[y - 1])), i[y] = v(i[y], a, p), "A" !== c[y] && "C" === l && (c[y] = "C"), m(i, y)), g(r, i, o, a, y), g(i, r, a, o, y); var b = r[y], x = i && i[y], w = b.length, _ = i && x.length; o.x = b[w - 2], o.y = b[w - 1], o.bx = parseFloat(b[w - 4]) || o.x, o.by = parseFloat(b[w - 3]) || o.y, a.bx = i && (parseFloat(x[_ - 4]) || a.x), a.by = i && (parseFloat(x[_ - 3]) || a.y), a.x = i && x[_ - 2], a.y = i && x[_ - 1] } return i ? [r, i] : r }, v = /,?([a-z]),?/gi, m = function (e) { return e.join(",").replace(v, "$1") }, g = function (e, t, n, r, i) { var o = -3 * t + 9 * n - 9 * r + 3 * i, a = e * o + 6 * t - 12 * n + 6 * r; return e * a - 3 * t + 3 * n }, y = function (e, t, n, r, i, o, a, s, c) { null === c && (c = 1), c = c > 1 ? 1 : c < 0 ? 0 : c; for (var l = c / 2, u = 12, h = [-.1252, .1252, -.3678, .3678, -.5873, .5873, -.7699, .7699, -.9041, .9041, -.9816, .9816], f = [.2491, .2491, .2335, .2335, .2032, .2032, .1601, .1601, .1069, .1069, .0472, .0472], d = 0, p = 0; p < u; p++) { var v = l * h[p] + l, m = g(v, e, n, i, a), y = g(v, t, r, o, s), b = m * m + y * y; d += f[p] * Math.sqrt(b) } return l * d }, b = function (e, t, n, r, i, o, a, s) { for (var c, l, u, h, f = [], d = [[], []], p = 0; p < 2; ++p)if (0 === p ? (l = 6 * e - 12 * n + 6 * i, c = -3 * e + 9 * n - 9 * i + 3 * a, u = 3 * n - 3 * e) : (l = 6 * t - 12 * r + 6 * o, c = -3 * t + 9 * r - 9 * o + 3 * s, u = 3 * r - 3 * t), Math.abs(c) < 1e-12) { if (Math.abs(l) < 1e-12) continue; h = -u / l, h > 0 && h < 1 && f.push(h) } else { var v = l * l - 4 * u * c, m = Math.sqrt(v); if (!(v < 0)) { var g = (-l + m) / (2 * c); g > 0 && g < 1 && f.push(g); var y = (-l - m) / (2 * c); y > 0 && y < 1 && f.push(y) } } var b, x = f.length, w = x; while (x--) h = f[x], b = 1 - h, d[0][x] = b * b * b * e + 3 * b * b * h * n + 3 * b * h * h * i + h * h * h * a, d[1][x] = b * b * b * t + 3 * b * b * h * r + 3 * b * h * h * o + h * h * h * s; return d[0][w] = e, d[1][w] = t, d[0][w + 1] = a, d[1][w + 1] = s, d[0].length = d[1].length = w + 2, { min: { x: Math.min.apply(0, d[0]), y: Math.min.apply(0, d[1]) }, max: { x: Math.max.apply(0, d[0]), y: Math.max.apply(0, d[1]) } } }, x = function (e, t, n, r, i, o, a, s) { if (!(Math.max(e, n) < Math.min(i, a) || Math.min(e, n) > Math.max(i, a) || Math.max(t, r) < Math.min(o, s) || Math.min(t, r) > Math.max(o, s))) { var c = (e * r - t * n) * (i - a) - (e - n) * (i * s - o * a), l = (e * r - t * n) * (o - s) - (t - r) * (i * s - o * a), u = (e - n) * (o - s) - (t - r) * (i - a); if (u) { var h = c / u, f = l / u, d = +h.toFixed(2), p = +f.toFixed(2); if (!(d < +Math.min(e, n).toFixed(2) || d > +Math.max(e, n).toFixed(2) || d < +Math.min(i, a).toFixed(2) || d > +Math.max(i, a).toFixed(2) || p < +Math.min(t, r).toFixed(2) || p > +Math.max(t, r).toFixed(2) || p < +Math.min(o, s).toFixed(2) || p > +Math.max(o, s).toFixed(2))) return { x: h, y: f } } } }, w = function (e, t, n) { return t >= e.x && t <= e.x + e.width && n >= e.y && n <= e.y + e.height }, _ = function (e, t, n, r, i) { if (i) return [["M", +e + +i, t], ["l", n - 2 * i, 0], ["a", i, i, 0, 0, 1, i, i], ["l", 0, r - 2 * i], ["a", i, i, 0, 0, 1, -i, i], ["l", 2 * i - n, 0], ["a", i, i, 0, 0, 1, -i, -i], ["l", 0, 2 * i - r], ["a", i, i, 0, 0, 1, i, -i], ["z"]]; var o = [["M", e, t], ["l", n, 0], ["l", 0, r], ["l", -n, 0], ["z"]]; return o.parsePathArray = m, o }, C = function (e, t, n, r) { return null === e && (e = t = n = r = 0), null === t && (t = e.y, n = e.width, r = e.height, e = e.x), { x: e, y: t, width: n, w: n, height: r, h: r, x2: e + n, y2: t + r, cx: e + n / 2, cy: t + r / 2, r1: Math.min(n, r) / 2, r2: Math.max(n, r) / 2, r0: Math.sqrt(n * n + r * r) / 2, path: _(e, t, n, r), vb: [e, t, n, r].join(" ") } }, M = function (e, t) { return e = C(e), t = C(t), w(t, e.x, e.y) || w(t, e.x2, e.y) || w(t, e.x, e.y2) || w(t, e.x2, e.y2) || w(e, t.x, t.y) || w(e, t.x2, t.y) || w(e, t.x, t.y2) || w(e, t.x2, t.y2) || (e.x < t.x2 && e.x > t.x || t.x < e.x2 && t.x > e.x) && (e.y < t.y2 && e.y > t.y || t.y < e.y2 && t.y > e.y) }, O = function (e, t, n, i, o, a, s, c) { r.isArray(e) || (e = [e, t, n, i, o, a, s, c]); var l = b.apply(null, e); return C(l.min.x, l.min.y, l.max.x - l.min.x, l.max.y - l.min.y) }, k = function (e, t, n, r, i, o, a, s, c) { var l = 1 - c, u = Math.pow(l, 3), h = Math.pow(l, 2), f = c * c, d = f * c, p = u * e + 3 * h * c * n + 3 * l * c * c * i + d * a, v = u * t + 3 * h * c * r + 3 * l * c * c * o + d * s, m = e + 2 * c * (n - e) + f * (i - 2 * n + e), g = t + 2 * c * (r - t) + f * (o - 2 * r + t), y = n + 2 * c * (i - n) + f * (a - 2 * i + n), b = r + 2 * c * (o - r) + f * (s - 2 * o + r), x = l * e + c * n, w = l * t + c * r, _ = l * i + c * a, C = l * o + c * s, M = 90 - 180 * Math.atan2(m - y, g - b) / Math.PI; return { x: p, y: v, m: { x: m, y: g }, n: { x: y, y: b }, start: { x: x, y: w }, end: { x: _, y: C }, alpha: M } }, S = function (e, t, n) { var r = O(e), i = O(t); if (!M(r, i)) return n ? 0 : []; for (var o = y.apply(0, e), a = y.apply(0, t), s = ~~(o / 8), c = ~~(a / 8), l = [], u = [], h = {}, f = n ? 0 : [], d = 0; d < s + 1; d++) { var p = k.apply(0, e.concat(d / s)); l.push({ x: p.x, y: p.y, t: d / s }) } for (var v = 0; v < c + 1; v++) { var m = k.apply(0, t.concat(v / c)); u.push({ x: m.x, y: m.y, t: v / c }) } for (var g = 0; g < s; g++)for (var b = 0; b < c; b++) { var w = l[g], _ = l[g + 1], C = u[b], S = u[b + 1], T = Math.abs(_.x - w.x) < .001 ? "y" : "x", A = Math.abs(S.x - C.x) < .001 ? "y" : "x", L = x(w.x, w.y, _.x, _.y, C.x, C.y, S.x, S.y); if (L) { if (h[L.x.toFixed(4)] === L.y.toFixed(4)) continue; h[L.x.toFixed(4)] = L.y.toFixed(4); var j = w.t + Math.abs((L[T] - w[T]) / (_[T] - w[T])) * (_.t - w.t), z = C.t + Math.abs((L[A] - C[A]) / (S[A] - C[A])) * (S.t - C.t); j >= 0 && j <= 1 && z >= 0 && z <= 1 && (n ? f++ : f.push({ x: L.x, y: L.y, t1: j, t2: z })) } } return f }, T = function (e, t, n) { var r, i, o, a, s, c, l, u, h, f; e = p(e), t = p(t); for (var d = n ? 0 : [], v = 0, m = e.length; v < m; v++) { var g = e[v]; if ("M" === g[0]) r = s = g[1], i = c = g[2]; else { "C" === g[0] ? (h = [r, i].concat(g.slice(1)), r = h[6], i = h[7]) : (h = [r, i, r, i, s, c, s, c], r = s, i = c); for (var y = 0, b = t.length; y < b; y++) { var x = t[y]; if ("M" === x[0]) o = l = x[1], a = u = x[2]; else { "C" === x[0] ? (f = [o, a].concat(x.slice(1)), o = f[6], a = f[7]) : (f = [o, a, o, a, l, u, l, u], o = l, a = u); var w = S(h, f, n); if (n) d += w; else { for (var _ = 0, C = w.length; _ < C; _++)w[_].segment1 = v, w[_].segment2 = y, w[_].bez1 = h, w[_].bez2 = f; d = d.concat(w) } } } } } return d }, A = function (e, t) { return T(e, t) }; function L(e, t) { var n = [], r = []; function i(e, t) { if (1 === e.length) n.push(e[0]), r.push(e[0]); else { for (var o = [], a = 0; a < e.length - 1; a++)0 === a && n.push(e[0]), a === e.length - 2 && r.push(e[a + 1]), o[a] = [(1 - t) * e[a][0] + t * e[a + 1][0], (1 - t) * e[a][1] + t * e[a + 1][1]]; i(o, t) } } return e.length && i(e, t), { left: n, right: r.reverse() } } function j(e, t, n) { var r = [[e[1], e[2]]]; n = n || 2; var i = []; "A" === t[0] ? (r.push(t[6]), r.push(t[7])) : "C" === t[0] ? (r.push([t[1], t[2]]), r.push([t[3], t[4]]), r.push([t[5], t[6]])) : "S" === t[0] || "Q" === t[0] ? (r.push([t[1], t[2]]), r.push([t[3], t[4]])) : r.push([t[1], t[2]]); for (var o = r, a = 1 / n, s = 0; s < n - 1; s++) { var c = a / (1 - a * s), l = L(o, c); i.push(l.left), o = l.right } i.push(o); var u = i.map((function (e) { var t = []; return 4 === e.length && (t.push("C"), t = t.concat(e[2])), e.length >= 3 && (3 === e.length && t.push("Q"), t = t.concat(e[1])), 2 === e.length && t.push("L"), t = t.concat(e[e.length - 1]), t })); return u } var z = function (e, t, n) { if (1 === n) return [[].concat(e)]; var r = []; if ("L" === t[0] || "C" === t[0] || "Q" === t[0]) r = r.concat(j(e, t, n)); else { var i = [].concat(e); "M" === i[0] && (i[0] = "L"); for (var o = 0; o <= n - 1; o++)r.push(i) } return r }, E = function (e, t) { if (1 === e.length) return e; var n = e.length - 1, r = t.length - 1, i = n / r, o = []; if (1 === e.length && "M" === e[0][0]) { for (var a = 0; a < r - n; a++)e.push(e[0]); return e } for (var s = 0; s < r; s++) { var c = Math.floor(i * s); o[c] = (o[c] || 0) + 1 } var l = o.reduce((function (t, r, i) { return i === n ? t.concat(e[n]) : t.concat(z(e[i], e[i + 1], r)) }), []); return l.unshift(e[0]), "Z" !== t[r] && "z" !== t[r] || l.push("Z"), l }, P = function (e, t) { if (e.length !== t.length) return !1; var n = !0; return r.each(e, (function (e, r) { if (e !== t[r]) return n = !1, !1 })), n }; function D(e, t, n) { var r = null, i = n; return t < i && (i = t, r = "add"), e < i && (i = e, r = "del"), { type: r, min: i } } var H = function (e, t) { var n, r, i = e.length, o = t.length, a = 0; if (0 === i || 0 === o) return null; for (var s = [], c = 0; c <= i; c++)s[c] = [], s[c][0] = { min: c }; for (var l = 0; l <= o; l++)s[0][l] = { min: l }; for (var u = 1; u <= i; u++) { n = e[u - 1]; for (var h = 1; h <= o; h++) { r = t[h - 1], a = P(n, r) ? 0 : 1; var f = s[u - 1][h].min + 1, d = s[u][h - 1].min + 1, p = s[u - 1][h - 1].min + a; s[u][h] = D(f, d, p) } } return s }, V = function (e, t) { var n = H(e, t), r = e.length, i = t.length, o = [], a = 1, s = 1; if (n[r][i] !== r) { for (var c = 1; c <= r; c++) { var l = n[c][c].min; s = c; for (var u = a; u <= i; u++)n[c][u].min < l && (l = n[c][u].min, s = u); a = s, n[c][a].type && o.push({ index: c - 1, type: n[c][a].type }) } for (var h = o.length - 1; h >= 0; h--)a = o[h].index, "add" === o[h].type ? e.splice(a, 0, [].concat(e[a])) : e.splice(a, 1) } r = e.length; var f = i - r; if (r < i) for (var d = 0; d < f; d++)"z" === e[r - 1][0] || "Z" === e[r - 1][0] ? e.splice(r - 2, 0, e[r - 2]) : e.push(e[r - 1]), r += 1; return e }; function I(e, t, n) { for (var r, i = [].concat(e), o = 1 / (n + 1), a = N(t)[0], s = 1; s <= n; s++)o *= s, r = Math.floor(e.length * o), 0 === r ? i.unshift([a[0] * o + e[r][0] * (1 - o), a[1] * o + e[r][1] * (1 - o)]) : i.splice(r, 0, [a[0] * o + e[r][0] * (1 - o), a[1] * o + e[r][1] * (1 - o)]); return i } function N(e) { var t = []; switch (e[0]) { case "M": t.push([e[1], e[2]]); break; case "L": t.push([e[1], e[2]]); break; case "A": t.push([e[6], e[7]]); break; case "Q": t.push([e[3], e[4]]), t.push([e[1], e[2]]); break; case "T": t.push([e[1], e[2]]); break; case "C": t.push([e[5], e[6]]), t.push([e[1], e[2]]), t.push([e[3], e[4]]); break; case "S": t.push([e[3], e[4]]), t.push([e[1], e[2]]); break; case "H": t.push([e[1], e[1]]); break; case "V": t.push([e[1], e[1]]); break; default: }return t } var R = function (e, t) { if (e.length <= 1) return e; for (var n, r = 0; r < t.length; r++)if (e[r][0] !== t[r][0]) switch (n = N(e[r]), t[r][0]) { case "M": e[r] = ["M"].concat(n[0]); break; case "L": e[r] = ["L"].concat(n[0]); break; case "A": e[r] = [].concat(t[r]), e[r][6] = n[0][0], e[r][7] = n[0][1]; break; case "Q": if (n.length < 2) { if (!(r > 0)) { e[r] = t[r]; break } n = I(n, e[r - 1], 1) } e[r] = ["Q"].concat(n.reduce((function (e, t) { return e.concat(t) }), [])); break; case "T": e[r] = ["T"].concat(n[0]); break; case "C": if (n.length < 3) { if (!(r > 0)) { e[r] = t[r]; break } n = I(n, e[r - 1], 2) } e[r] = ["C"].concat(n.reduce((function (e, t) { return e.concat(t) }), [])); break; case "S": if (n.length < 2) { if (!(r > 0)) { e[r] = t[r]; break } n = I(n, e[r - 1], 1) } e[r] = ["S"].concat(n.reduce((function (e, t) { return e.concat(t) }), [])); break; default: e[r] = t[r] }return e }; e.exports = { parsePathString: s, parsePathArray: m, pathTocurve: p, pathToAbsolute: u, catmullRomToBezier: c, rectPath: _, fillPath: E, fillPathByDiff: V, formatPath: R, intersection: A } }, function (e, t, n) { "use strict"; t["b"] = p, t["a"] = m, t["c"] = g, t["d"] = y; var r, i, o = 0, a = 0, s = 0, c = 1e3, l = 0, u = 0, h = 0, f = "object" === typeof performance && performance.now ? performance : Date, d = "object" === typeof window && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function (e) { setTimeout(e, 17) }; function p() { return u || (d(v), u = f.now() + h) } function v() { u = 0 } function m() { this._call = this._time = this._next = null } function g(e, t, n) { var r = new m; return r.restart(e, t, n), r } function y() { p(), ++o; var e, t = r; while (t) (e = u - t._time) >= 0 && t._call.call(null, e), t = t._next; --o } function b() { u = (l = f.now()) + h, o = a = 0; try { y() } finally { o = 0, w(), u = 0 } } function x() { var e = f.now(), t = e - l; t > c && (h -= t, l = e) } function w() { var e, t, n = r, o = 1 / 0; while (n) n._call ? (o > n._time && (o = n._time), e = n, n = n._next) : (t = n._next, n._next = null, n = e ? e._next = t : r = t); i = e, _(o) } function _(e) { if (!o) { a && (a = clearTimeout(a)); var t = e - u; t > 24 ? (e < 1 / 0 && (a = setTimeout(b, e - f.now() - h)), s && (s = clearInterval(s))) : (s || (l = f.now(), s = setInterval(x, c)), o = 1, d(b)) } } m.prototype = g.prototype = { constructor: m, restart: function (e, t, n) { if ("function" !== typeof e) throw new TypeError("callback is not a function"); n = (null == n ? p() : +n) + (null == t ? 0 : +t), this._next || i === this || (i ? i._next = this : r = this, i = this), this._call = e, this._time = n, _() }, stop: function () { this._call && (this._call = null, this._time = 1 / 0, _()) } } }, function (e, t, n) { "use strict"; var r = n(19), i = n(134), o = n(137), a = n(138), s = n(47), c = n(139), l = n(140), u = n(136); t["a"] = function (e, t) { var n, h = typeof t; return null == t || "boolean" === h ? Object(u["a"])(t) : ("number" === h ? s["a"] : "string" === h ? (n = Object(r["a"])(t)) ? (t = n, i["a"]) : l["a"] : t instanceof r["a"] ? i["a"] : t instanceof Date ? a["a"] : Array.isArray(t) ? o["a"] : "function" !== typeof t.valueOf && "function" !== typeof t.toString || isNaN(t) ? c["a"] : s["a"])(e, t) } }, function (e, t, n) { "use strict"; t["a"] = i, n.d(t, "d", (function () { return o })), n.d(t, "c", (function () { return a })), t["e"] = w, t["h"] = M, t["g"] = O, t["b"] = k, t["f"] = z; var r = n(86); function i() { } var o = .7, a = 1 / o, s = "\\s*([+-]?\\d+)\\s*", c = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*", l = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*", u = /^#([0-9a-f]{3,8})$/, h = new RegExp("^rgb\\(" + [s, s, s] + "\\)$"), f = new RegExp("^rgb\\(" + [l, l, l] + "\\)$"), d = new RegExp("^rgba\\(" + [s, s, s, c] + "\\)$"), p = new RegExp("^rgba\\(" + [l, l, l, c] + "\\)$"), v = new RegExp("^hsl\\(" + [c, l, l] + "\\)$"), m = new RegExp("^hsla\\(" + [c, l, l, c] + "\\)$"), g = { aliceblue: 15792383, antiquewhite: 16444375, aqua: 65535, aquamarine: 8388564, azure: 15794175, beige: 16119260, bisque: 16770244, black: 0, blanchedalmond: 16772045, blue: 255, blueviolet: 9055202, brown: 10824234, burlywood: 14596231, cadetblue: 6266528, chartreuse: 8388352, chocolate: 13789470, coral: 16744272, cornflowerblue: 6591981, cornsilk: 16775388, crimson: 14423100, cyan: 65535, darkblue: 139, darkcyan: 35723, darkgoldenrod: 12092939, darkgray: 11119017, darkgreen: 25600, darkgrey: 11119017, darkkhaki: 12433259, darkmagenta: 9109643, darkolivegreen: 5597999, darkorange: 16747520, darkorchid: 10040012, darkred: 9109504, darksalmon: 15308410, darkseagreen: 9419919, darkslateblue: 4734347, darkslategray: 3100495, darkslategrey: 3100495, darkturquoise: 52945, darkviolet: 9699539, deeppink: 16716947, deepskyblue: 49151, dimgray: 6908265, dimgrey: 6908265, dodgerblue: 2003199, firebrick: 11674146, floralwhite: 16775920, forestgreen: 2263842, fuchsia: 16711935, gainsboro: 14474460, ghostwhite: 16316671, gold: 16766720, goldenrod: 14329120, gray: 8421504, green: 32768, greenyellow: 11403055, grey: 8421504, honeydew: 15794160, hotpink: 16738740, indianred: 13458524, indigo: 4915330, ivory: 16777200, khaki: 15787660, lavender: 15132410, lavenderblush: 16773365, lawngreen: 8190976, lemonchiffon: 16775885, lightblue: 11393254, lightcoral: 15761536, lightcyan: 14745599, lightgoldenrodyellow: 16448210, lightgray: 13882323, lightgreen: 9498256, lightgrey: 13882323, lightpink: 16758465, lightsalmon: 16752762, lightseagreen: 2142890, lightskyblue: 8900346, lightslategray: 7833753, lightslategrey: 7833753, lightsteelblue: 11584734, lightyellow: 16777184, lime: 65280, limegreen: 3329330, linen: 16445670, magenta: 16711935, maroon: 8388608, mediumaquamarine: 6737322, mediumblue: 205, mediumorchid: 12211667, mediumpurple: 9662683, mediumseagreen: 3978097, mediumslateblue: 8087790, mediumspringgreen: 64154, mediumturquoise: 4772300, mediumvioletred: 13047173, midnightblue: 1644912, mintcream: 16121850, mistyrose: 16770273, moccasin: 16770229, navajowhite: 16768685, navy: 128, oldlace: 16643558, olive: 8421376, olivedrab: 7048739, orange: 16753920, orangered: 16729344, orchid: 14315734, palegoldenrod: 15657130, palegreen: 10025880, paleturquoise: 11529966, palevioletred: 14381203, papayawhip: 16773077, peachpuff: 16767673, peru: 13468991, pink: 16761035, plum: 14524637, powderblue: 11591910, purple: 8388736, rebeccapurple: 6697881, red: 16711680, rosybrown: 12357519, royalblue: 4286945, saddlebrown: 9127187, salmon: 16416882, sandybrown: 16032864, seagreen: 3050327, seashell: 16774638, sienna: 10506797, silver: 12632256, skyblue: 8900331, slateblue: 6970061, slategray: 7372944, slategrey: 7372944, snow: 16775930, springgreen: 65407, steelblue: 4620980, tan: 13808780, teal: 32896, thistle: 14204888, tomato: 16737095, turquoise: 4251856, violet: 15631086, wheat: 16113331, white: 16777215, whitesmoke: 16119285, yellow: 16776960, yellowgreen: 10145074 }; function y() { return this.rgb().formatHex() } function b() { return j(this).formatHsl() } function x() { return this.rgb().formatRgb() } function w(e) { var t, n; return e = (e + "").trim().toLowerCase(), (t = u.exec(e)) ? (n = t[1].length, t = parseInt(t[1], 16), 6 === n ? _(t) : 3 === n ? new k(t >> 8 & 15 | t >> 4 & 240, t >> 4 & 15 | 240 & t, (15 & t) << 4 | 15 & t, 1) : 8 === n ? C(t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, (255 & t) / 255) : 4 === n ? C(t >> 12 & 15 | t >> 8 & 240, t >> 8 & 15 | t >> 4 & 240, t >> 4 & 15 | 240 & t, ((15 & t) << 4 | 15 & t) / 255) : null) : (t = h.exec(e)) ? new k(t[1], t[2], t[3], 1) : (t = f.exec(e)) ? new k(255 * t[1] / 100, 255 * t[2] / 100, 255 * t[3] / 100, 1) : (t = d.exec(e)) ? C(t[1], t[2], t[3], t[4]) : (t = p.exec(e)) ? C(255 * t[1] / 100, 255 * t[2] / 100, 255 * t[3] / 100, t[4]) : (t = v.exec(e)) ? L(t[1], t[2] / 100, t[3] / 100, 1) : (t = m.exec(e)) ? L(t[1], t[2] / 100, t[3] / 100, t[4]) : g.hasOwnProperty(e) ? _(g[e]) : "transparent" === e ? new k(NaN, NaN, NaN, 0) : null } function _(e) { return new k(e >> 16 & 255, e >> 8 & 255, 255 & e, 1) } function C(e, t, n, r) { return r <= 0 && (e = t = n = NaN), new k(e, t, n, r) } function M(e) { return e instanceof i || (e = w(e)), e ? (e = e.rgb(), new k(e.r, e.g, e.b, e.opacity)) : new k } function O(e, t, n, r) { return 1 === arguments.length ? M(e) : new k(e, t, n, null == r ? 1 : r) } function k(e, t, n, r) { this.r = +e, this.g = +t, this.b = +n, this.opacity = +r } function S() { return "#" + A(this.r) + A(this.g) + A(this.b) } function T() { var e = this.opacity; return e = isNaN(e) ? 1 : Math.max(0, Math.min(1, e)), (1 === e ? "rgb(" : "rgba(") + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + (1 === e ? ")" : ", " + e + ")") } function A(e) { return e = Math.max(0, Math.min(255, Math.round(e) || 0)), (e < 16 ? "0" : "") + e.toString(16) } function L(e, t, n, r) { return r <= 0 ? e = t = n = NaN : n <= 0 || n >= 1 ? e = t = NaN : t <= 0 && (e = NaN), new E(e, t, n, r) } function j(e) { if (e instanceof E) return new E(e.h, e.s, e.l, e.opacity); if (e instanceof i || (e = w(e)), !e) return new E; if (e instanceof E) return e; e = e.rgb(); var t = e.r / 255, n = e.g / 255, r = e.b / 255, o = Math.min(t, n, r), a = Math.max(t, n, r), s = NaN, c = a - o, l = (a + o) / 2; return c ? (s = t === a ? (n - r) / c + 6 * (n < r) : n === a ? (r - t) / c + 2 : (t - n) / c + 4, c /= l < .5 ? a + o : 2 - a - o, s *= 60) : c = l > 0 && l < 1 ? 0 : s, new E(s, c, l, e.opacity) } function z(e, t, n, r) { return 1 === arguments.length ? j(e) : new E(e, t, n, null == r ? 1 : r) } function E(e, t, n, r) { this.h = +e, this.s = +t, this.l = +n, this.opacity = +r } function P(e, t, n) { return 255 * (e < 60 ? t + (n - t) * e / 60 : e < 180 ? n : e < 240 ? t + (n - t) * (240 - e) / 60 : t) } Object(r["a"])(i, w, { copy: function (e) { return Object.assign(new this.constructor, this, e) }, displayable: function () { return this.rgb().displayable() }, hex: y, formatHex: y, formatHsl: b, formatRgb: x, toString: x }), Object(r["a"])(k, O, Object(r["b"])(i, { brighter: function (e) { return e = null == e ? a : Math.pow(a, e), new k(this.r * e, this.g * e, this.b * e, this.opacity) }, darker: function (e) { return e = null == e ? o : Math.pow(o, e), new k(this.r * e, this.g * e, this.b * e, this.opacity) }, rgb: function () { return this }, displayable: function () { return -.5 <= this.r && this.r < 255.5 && -.5 <= this.g && this.g < 255.5 && -.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1 }, hex: S, formatHex: S, formatRgb: T, toString: T })), Object(r["a"])(E, z, Object(r["b"])(i, { brighter: function (e) { return e = null == e ? a : Math.pow(a, e), new E(this.h, this.s, this.l * e, this.opacity) }, darker: function (e) { return e = null == e ? o : Math.pow(o, e), new E(this.h, this.s, this.l * e, this.opacity) }, rgb: function () { var e = this.h % 360 + 360 * (this.h < 0), t = isNaN(e) || isNaN(this.s) ? 0 : this.s, n = this.l, r = n + (n < .5 ? n : 1 - n) * t, i = 2 * n - r; return new k(P(e >= 240 ? e - 240 : e + 120, i, r), P(e, i, r), P(e < 120 ? e + 240 : e - 120, i, r), this.opacity) }, displayable: function () { return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1 }, formatHsl: function () { var e = this.opacity; return e = isNaN(e) ? 1 : Math.max(0, Math.min(1, e)), (1 === e ? "hsl(" : "hsla(") + (this.h || 0) + ", " + 100 * (this.s || 0) + "%, " + 100 * (this.l || 0) + "%" + (1 === e ? ")" : ", " + e + ")") } })) }, function (e, t, n) { "use strict"; function r(e, t) { var n = Object.create(e.prototype); for (var r in t) n[r] = t[r]; return n } t["b"] = r, t["a"] = function (e, t, n) { e.prototype = t.prototype = n, n.constructor = e } }, function (e, t, n) { "use strict"; function r(e, t, n, r, i) { var o = e * e, a = o * e; return ((1 - 3 * e + 3 * o - a) * t + (4 - 6 * o + 3 * a) * n + (1 + 3 * e + 3 * o - 3 * a) * r + a * i) / 6 } t["a"] = r, t["b"] = function (e) { var t = e.length - 1; return function (n) { var i = n <= 0 ? n = 0 : n >= 1 ? (n = 1, t - 1) : Math.floor(n * t), o = e[i], a = e[i + 1], s = i > 0 ? e[i - 1] : 2 * o - a, c = i < t - 1 ? e[i + 2] : 2 * a - o; return r((n - i / t) * t, s, o, a, c) } } }, function (e, t, n) { var r = n(3), i = n(15), o = function (e, t) { if (!i(e)) return e; var n = []; return r(e, (function (e, r) { t(e, r) && n.push(e) })), n }; e.exports = o }, function (e, t, n) { var r = n(6), i = n(5), o = n(3); e.exports = function (e, t) { for (var n = [], a = {}, s = 0; s < e.length; s++) { var c = e[s], l = c[t]; r(l) || (i(l) || (l = [l]), o(l, (function (e) { a[e] || (n.push(e), a[e] = !0) }))) } return n } }, function (e, t, n) {
+                var r;
+/*!
+ * EventEmitter v5.1.0 - git.io/ee
+ * Unlicense - http://unlicense.org/
+ * Oliver Caldwell - http://oli.me.uk/
+ * @preserve
+ */(function (t) { "use strict"; function i() { } var o = i.prototype, a = t.EventEmitter; function s(e, t) { var n = e.length; while (n--) if (e[n].listener === t) return n; return -1 } function c(e) { return function () { return this[e].apply(this, arguments) } } function l(e) { return "function" === typeof e || e instanceof RegExp || !(!e || "object" !== typeof e) && l(e.listener) } o.getListeners = function (e) { var t, n, r = this._getEvents(); if (e instanceof RegExp) for (n in t = {}, r) r.hasOwnProperty(n) && e.test(n) && (t[n] = r[n]); else t = r[e] || (r[e] = []); return t }, o.flattenListeners = function (e) { var t, n = []; for (t = 0; t < e.length; t += 1)n.push(e[t].listener); return n }, o.getListenersAsObject = function (e) { var t, n = this.getListeners(e); return n instanceof Array && (t = {}, t[e] = n), t || n }, o.addListener = function (e, t) { if (!l(t)) throw new TypeError("listener must be a function"); var n, r = this.getListenersAsObject(e), i = "object" === typeof t; for (n in r) r.hasOwnProperty(n) && -1 === s(r[n], t) && r[n].push(i ? t : { listener: t, once: !1 }); return this }, o.on = c("addListener"), o.addOnceListener = function (e, t) { return this.addListener(e, { listener: t, once: !0 }) }, o.once = c("addOnceListener"), o.defineEvent = function (e) { return this.getListeners(e), this }, o.defineEvents = function (e) { for (var t = 0; t < e.length; t += 1)this.defineEvent(e[t]); return this }, o.removeListener = function (e, t) { var n, r, i = this.getListenersAsObject(e); for (r in i) i.hasOwnProperty(r) && (n = s(i[r], t), -1 !== n && i[r].splice(n, 1)); return this }, o.off = c("removeListener"), o.addListeners = function (e, t) { return this.manipulateListeners(!1, e, t) }, o.removeListeners = function (e, t) { return this.manipulateListeners(!0, e, t) }, o.manipulateListeners = function (e, t, n) { var r, i, o = e ? this.removeListener : this.addListener, a = e ? this.removeListeners : this.addListeners; if ("object" !== typeof t || t instanceof RegExp) { r = n.length; while (r--) o.call(this, t, n[r]) } else for (r in t) t.hasOwnProperty(r) && (i = t[r]) && ("function" === typeof i ? o.call(this, r, i) : a.call(this, r, i)); return this }, o.removeEvent = function (e) { var t, n = typeof e, r = this._getEvents(); if ("string" === n) delete r[e]; else if (e instanceof RegExp) for (t in r) r.hasOwnProperty(t) && e.test(t) && delete r[t]; else delete this._events; return this }, o.removeAllListeners = c("removeEvent"), o.emitEvent = function (e, t) { var n, r, i, o, a, s = this.getListenersAsObject(e); for (o in s) if (s.hasOwnProperty(o)) for (n = s[o].slice(0), i = 0; i < n.length; i++)r = n[i], !0 === r.once && this.removeListener(e, r.listener), a = r.listener.apply(this, t || []), a === this._getOnceReturnValue() && this.removeListener(e, r.listener); return this }, o.trigger = c("emitEvent"), o.emit = function (e) { var t = Array.prototype.slice.call(arguments, 1); return this.emitEvent(e, t) }, o.setOnceReturnValue = function (e) { return this._onceReturnValue = e, this }, o._getOnceReturnValue = function () { return !this.hasOwnProperty("_onceReturnValue") || this._onceReturnValue }, o._getEvents = function () { return this._events || (this._events = {}) }, i.noConflict = function () { return t.EventEmitter = a, i }, r = function () { return i }.call(t, n, t, e), void 0 === r || (e.exports = r) })(this || {})
+            }, function (e, t, n) { var r = n(18), i = r.Group, o = n(24), a = o.Label, s = n(8), c = n(0), l = ["line", "point", "path"], u = "_origin"; function h(e) { var t = 0; return c.each(e, (function (e) { t += e })), t / e.length } function f(e, t) { if (c.isNumber(e) && c.isNumber(t)) return [e, t]; var n, r, i = -1, o = 0, a = 0, s = e.length - 1, l = 0; while (++i < e.length) n = s, s = i, l += r = e[n] * t[s] - e[s] * t[n], o += (e[n] + e[s]) * r, a += (t[n] + t[s]) * r; return l *= 3, [o / l, a / l] } var d = function e(t) { e.superclass.constructor.call(this, t) }; c.extend(d, i), c.augment(d, { getDefaultCfg: function () { return { label: s.label, labelCfg: null, coord: null, geomType: null, zIndex: 6 } }, _renderUI: function () { d.superclass._renderUI.call(this), this.initLabelsCfg(); var e = this.addGroup(), t = this.addGroup({ elCls: "x-line-group" }), n = this.get("labelRenderer"); this.set("labelsGroup", e), this.set("lineGroup", t), this.get("labelRenderer").set("group", e), n.set("group", e), n.set("lineGroup", t) }, initLabelsCfg: function () { var e = this, t = new a, n = e.getDefaultLabelCfg(), r = e.get("labelCfg"); c.deepMix(n, r.globalCfg || r.cfg), t.set("config", !1), n.labelLine && t.set("labelLine", n.labelLine), t.set("coord", e.get("coord")), this.set("labelRenderer", t), e.set("label", n) }, getDefaultLabelCfg: function () { var e = this, t = e.get("labelCfg").cfg || e.get("labelCfg").globalCfg, n = e.get("geomType"), r = e.get("viewTheme") || s; return "polygon" === n || t && t.offset < 0 && -1 === c.indexOf(l, n) ? c.deepMix({}, e.get("label"), r.innerLabels, t) : c.deepMix({}, e.get("label"), r.label, t) }, getLabelsItems: function (e, t) { var n = this, r = [], i = n.get("geom"), o = n.get("coord"); n._getLabelCfgs(e, t); var a = n.get("labelItemCfgs"); return c.each(e, (function (e, t) { var s = e[u], l = a[t]; if (l) { c.isArray(l.text) || (l.text = [l.text]); var h = l.text.length; c.each(l.text, (function (t, a) { if (c.isNil(t) || "" === t) r.push(null); else { var u = n.getLabelPoint(l, e, a); u = c.mix({}, l, u), u.textAlign || (u.textAlign = n.getLabelAlign(u, a, h)), i && (u._id = i._getShapeId(s) + "-glabel-" + a + "-" + u.text), u.coord = o, r.push(u) } })) } else r.push(null) })), r }, adjustItems: function (e) { return c.each(e, (function (e) { e && (e.offsetX && (e.x += e.offsetX), e.offsetY && (e.y += e.offsetY)) })), e }, drawLines: function (e) { var t = this; c.each(e, (function (e) { e && e.offset > 0 && t.lineToLabel(e) })) }, lineToLabel: function () { }, getLabelPoint: function (e, t, n) { var r = this, i = r.get("coord"), o = e.text.length; function a(t, n) { return c.isArray(t) && (t = 1 === e.text.length ? t.length <= 2 ? t[t.length - 1] : h(t) : t[n]), t } var s = { text: e.text[n] }; if (t && "polygon" === this.get("geomType")) { var l = f(t.x, t.y); s.x = l[0], s.y = l[1] } else s.x = a(t.x, n), s.y = a(t.y, n); if (t && t.nextPoints && ("funnel" === t.shape || "pyramid" === t.shape)) { var u = -1 / 0; t.nextPoints.forEach((function (e) { e = i.convert(e), e.x > u && (u = e.x) })), s.x = (s.x + u) / 2 } "pyramid" === t.shape && !t.nextPoints && t.points && t.points.forEach((function (e) { e = i.convert(e), (c.isArray(e.x) && !t.x.includes(e.x) || c.isNumber(e.x) && t.x !== e.x) && (s.x = (s.x + e.x) / 2) })), e.position && r.setLabelPosition(s, t, n, e.position); var d = r.getLabelOffset(e, n, o); return e.offsetX && (d.x += e.offsetX), e.offsetY && (d.y += e.offsetY), r.transLabelPoint(s), s.start = { x: s.x, y: s.y }, s.x += d.x, s.y += d.y, s.color = t.color, s }, setLabelPosition: function () { }, transLabelPoint: function (e) { var t = this, n = t.get("coord"), r = n.applyMatrix(e.x, e.y, 1); e.x = r[0], e.y = r[1] }, getOffsetVector: function (e) { var t, n = this, r = e.offset || 0, i = n.get("coord"); return t = i.isTransposed ? i.applyMatrix(r, 0) : i.applyMatrix(0, r), t }, getDefaultOffset: function (e) { var t = this, n = 0, r = t.get("coord"), i = t.getOffsetVector(e); n = r.isTransposed ? i[0] : i[1]; var o = this.get("yScale"); if (o && e.point) { var a = e.point[o.field]; a < 0 && (n *= -1) } return n }, getLabelOffset: function (e, t, n) { var r = this, i = r.getDefaultOffset(e), o = r.get("coord"), a = o.isTransposed, s = a ? "x" : "y", c = a ? 1 : -1, l = { x: 0, y: 0 }; return l[s] = t > 0 || 1 === n ? i * c : i * c * -1, l }, getLabelAlign: function (e, t, n) { var r = this, i = "center", o = r.get("coord"); if (o.isTransposed) { var a = r.getDefaultOffset(e); i = a < 0 ? "right" : 0 === a ? "center" : "left", n > 1 && 0 === t && ("right" === i ? i = "left" : "left" === i && (i = "right")) } return i }, _getLabelValue: function (e, t) { c.isArray(t) || (t = [t]); var n = []; return c.each(t, (function (t) { var r = e[t.field]; if (c.isArray(r)) { var i = []; c.each(r, (function (e) { i.push(t.getText(e)) })), r = i } else r = t.getText(r); (c.isNil(r) || "" === r) && n.push(null), n.push(r) })), n }, _getLabelCfgs: function (e) { var t = this, n = this.get("labelCfg"), r = n.scales, i = this.get("label"), o = t.get("viewTheme") || s, a = []; n.globalCfg && n.globalCfg.type && t.set("type", n.globalCfg.type), c.each(e, (function (e, s) { var l = {}, h = e[u], f = t._getLabelValue(h, r); if (n.callback) { var d = r.map((function (e) { return h[e.field] })); l = n.callback.apply(null, [].concat(d, [e, s])) } if (l || 0 === l) { if (c.isString(l) || c.isNumber(l) ? l = { text: l } : (l.text = l.content || f[0], delete l.content), l = c.mix({}, i, n.globalCfg || {}, l), e.point = h, l.point = h, l.htmlTemplate && (l.useHtml = !0, l.text = l.htmlTemplate.call(null, l.text, e, s), delete l.htmlTemplate), l.formatter && (l.text = l.formatter.call(null, l.text, e, s), delete l.formatter), l.label) { var p = l.label; delete l.label, l = c.mix(l, p) } if (l.textStyle) { delete l.textStyle.offset; var v = l.textStyle; c.isFunction(v) && (l.textStyle = v.call(null, l.text, e, s)) } l.labelLine && (l.labelLine = c.mix({}, i.labelLine, l.labelLine)), l.textStyle = c.mix({}, i.textStyle, o.label.textStyle, l.textStyle), delete l.items, a.push(l) } else a.push(null) })), this.set("labelItemCfgs", a) }, showLabels: function (e, t) { var n = this, r = n.get("labelRenderer"), i = n.getLabelsItems(e, t); t = [].concat(t); var o = n.get("type"); i = n.adjustItems(i, t), n.drawLines(i), r.set("items", i.filter((function (e, n) { return !!e || (t.splice(n, 1), !1) }))), o && (r.set("shapes", t), r.set("type", o), r.set("points", e)), r.set("canvas", this.get("canvas")), r.draw() }, destroy: function () { this.get("labelRenderer").destroy(), d.superclass.destroy.call(this) } }), e.exports = d }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(90), u = n(4), h = function (e) { c(n, e); r(n); var t = n.prototype; function n(t) { var n; n = e.call(this) || this; var r = o(n), i = { visible: !0 }, a = r.getDefaultCfg(); return r._attrs = i, u.deepMix(i, a, t), n } return t.getDefaultCfg = function () { return {} }, t.get = function (e) { return this._attrs[e] }, t.set = function (e, t) { this._attrs[e] = t }, t.changeVisible = function () { }, t.destroy = function () { var e = this; e._attrs = {}, e.removeAllListeners(), e.destroyed = !0 }, n }(l); e.exports = h }, function (e, t, n) { var r = n(52), i = n(172), o = n(94), a = n(53); e.exports = { line: function (e, t, n, i, o, a, s) { var c = r.box(e, t, n, i, o); if (!this.box(c.minX, c.maxX, c.minY, c.maxY, a, s)) return !1; var l = r.pointDistance(e, t, n, i, a, s); return !isNaN(l) && l <= o / 2 }, polyline: function (e, t, n, r) { var i = e.length - 1; if (i < 1) return !1; for (var o = 0; o < i; o++) { var a = e[o][0], s = e[o][1], c = e[o + 1][0], l = e[o + 1][1]; if (this.line(a, s, c, l, t, n, r)) return !0 } return !1 }, cubicline: function (e, t, n, r, i, a, s, c, l, u, h) { return o.pointDistance(e, t, n, r, i, a, s, c, u, h) <= l / 2 }, quadraticline: function (e, t, n, r, o, a, s, c, l) { return i.pointDistance(e, t, n, r, o, a, c, l) <= s / 2 }, arcline: function (e, t, n, r, i, o, s, c, l) { return a.pointDistance(e, t, n, r, i, o, c, l) <= s / 2 }, rect: function (e, t, n, r, i, o) { return e <= i && i <= e + n && t <= o && o <= t + r }, circle: function (e, t, n, r, i) { return Math.pow(r - e, 2) + Math.pow(i - t, 2) <= Math.pow(n, 2) }, box: function (e, t, n, r, i, o) { return e <= i && i <= t && n <= o && o <= r } } }, function (e, t, n) { var r = n(2), i = r.vec2; function o(e, t, n, r, i) { var o = 1 - i; return o * o * (o * r + 3 * i * n) + i * i * (i * e + 3 * o * t) } function a(e, t, n, r, i) { var o = 1 - i; return 3 * (((t - e) * o + 2 * (n - t) * i) * o + (r - n) * i * i) } function s(e, t, n, r, a, s, c, l, u, h, f) { var d, p, v, m, g, y, b, x, w = .005, _ = 1 / 0, C = 1e-4, M = [u, h]; for (p = 0; p < 1; p += .05)v = [o(e, n, a, c, p), o(t, r, s, l, p)], m = i.squaredDistance(M, v), m < _ && (d = p, _ = m); _ = 1 / 0; for (var O = 0; O < 32; O++) { if (w < C) break; b = d - w, x = d + w, v = [o(e, n, a, c, b), o(t, r, s, l, b)], m = i.squaredDistance(M, v), b >= 0 && m < _ ? (d = b, _ = m) : (y = [o(e, n, a, c, x), o(t, r, s, l, x)], g = i.squaredDistance(M, y), x <= 1 && g < _ ? (d = x, _ = g) : w *= .5) } return f && (f.x = o(e, n, a, c, d), f.y = o(t, r, s, l, d)), Math.sqrt(_) } function c(e, t, n, i) { var o, a, s, c = 3 * e - 9 * t + 9 * n - 3 * i, l = 6 * t - 12 * n + 6 * i, u = 3 * n - 3 * i, h = []; if (r.isNumberEqual(c, 0)) r.isNumberEqual(l, 0) || (o = -u / l, o >= 0 && o <= 1 && h.push(o)); else { var f = l * l - 4 * c * u; r.isNumberEqual(f, 0) ? h.push(-l / (2 * c)) : f > 0 && (s = Math.sqrt(f), o = (-l + s) / (2 * c), a = (-l - s) / (2 * c), o >= 0 && o <= 1 && h.push(o), a >= 0 && a <= 1 && h.push(a)) } return h } function l(e, t, n, r, i) { var o = -3 * t + 9 * n - 9 * r + 3 * i, a = e * o + 6 * t - 12 * n + 6 * r; return e * a - 3 * t + 3 * n } function u(e, t, n, i, o, a, s, c, u) { r.isNil(u) && (u = 1), u = u > 1 ? 1 : u < 0 ? 0 : u; for (var h = u / 2, f = 12, d = [-.1252, .1252, -.3678, .3678, -.5873, .5873, -.7699, .7699, -.9041, .9041, -.9816, .9816], p = [.2491, .2491, .2335, .2335, .2032, .2032, .1601, .1601, .1069, .1069, .0472, .0472], v = 0, m = 0; m < f; m++) { var g = h * d[m] + h, y = l(g, e, n, o, s), b = l(g, t, i, a, c), x = y * y + b * b; v += p[m] * Math.sqrt(x) } return h * v } e.exports = { at: o, derivativeAt: a, projectPoint: function (e, t, n, r, i, o, a, c, l, u) { var h = {}; return s(e, t, n, r, i, o, a, c, l, u, h), h }, pointDistance: s, extrema: c, len: u } }, function (e, t, n) { var r = n(2), i = n(9), o = n(37), a = n(55), s = function e(t) { e.superclass.constructor.call(this, t) }; s.Symbols = { circle: function (e, t, n) { return [["M", e, t], ["m", -n, 0], ["a", n, n, 0, 1, 0, 2 * n, 0], ["a", n, n, 0, 1, 0, 2 * -n, 0]] }, square: function (e, t, n) { return [["M", e - n, t - n], ["L", e + n, t - n], ["L", e + n, t + n], ["L", e - n, t + n], ["Z"]] }, diamond: function (e, t, n) { return [["M", e - n, t], ["L", e, t - n], ["L", e + n, t], ["L", e, t + n], ["Z"]] }, triangle: function (e, t, n) { var r = n * Math.sin(1 / 3 * Math.PI); return [["M", e - n, t + r], ["L", e, t - r], ["L", e + n, t + r], ["z"]] }, "triangle-down": function (e, t, n) { var r = n * Math.sin(1 / 3 * Math.PI); return [["M", e - n, t - r], ["L", e + n, t - r], ["L", e, t + r], ["Z"]] } }, s.ATTRS = { path: null, lineWidth: 1 }, r.extend(s, i), r.augment(s, { type: "marker", canFill: !0, canStroke: !0, getDefaultAttrs: function () { return { x: 0, y: 0, lineWidth: 1 } }, calculateBox: function () { var e = this._attrs, t = e.x, n = e.y, r = e.radius, i = this.getHitLineWidth(), o = i / 2 + r; return { minX: t - o, minY: n - o, maxX: t + o, maxY: n + o } }, _getPath: function () { var e, t = this._attrs, n = t.x, i = t.y, o = t.radius || t.r, a = t.symbol || "circle"; return e = r.isFunction(a) ? a : s.Symbols[a], e ? e(n, i, o) : (console.warn(a + " marker is not supported."), null) }, createPath: function (e) { var t = this._cfg.segments; if (!t || this._cfg.hasUpdate) { var n, r = o.parsePath(this._getPath()); e.beginPath(), t = []; for (var i = 0; i < r.length; i++) { var s = r[i]; n = new a(s, n, i === r.length - 1), t.push(n), n.draw(e) } this._cfg.segments = t, this._cfg.hasUpdate = !1 } else { e.beginPath(); for (var c = 0; c < t.length; c++)t[c].draw(e) } } }), e.exports = s }, function (e, t, n) { var r = n(168), i = "\t\n\v\f\r 聽釟�釥庘��鈥佲�傗�冣�勨�呪�嗏�団�堚�夆�娾�仧銆�\u2028\u2029", o = new RegExp("([a-z])[" + i + ",]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[" + i + "]*,?[" + i + "]*)+)", "ig"), a = new RegExp("(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[" + i + "]*,?[" + i + "]*", "ig"), s = function (e) { if (!e) return null; if (typeof e === typeof []) return e; var t = { a: 7, c: 6, o: 2, h: 1, l: 2, m: 2, r: 4, q: 4, s: 4, t: 2, v: 1, u: 3, z: 0 }, n = []; return String(e).replace(o, (function (e, r, i) { var o = [], s = r.toLowerCase(); if (i.replace(a, (function (e, t) { t && o.push(+t) })), "m" === s && o.length > 2 && (n.push([r].concat(o.splice(0, 2))), s = "l", r = "m" === r ? "l" : "L"), "o" === s && 1 === o.length && n.push([r, o[0]]), "r" === s) n.push([r].concat(o)); else while (o.length >= t[s]) if (n.push([r].concat(o.splice(0, t[s]))), !t[s]) break })), n }, c = function (e, t) { for (var n = [], r = 0, i = e.length; i - 2 * !t > r; r += 2) { var o = [{ x: +e[r - 2], y: +e[r - 1] }, { x: +e[r], y: +e[r + 1] }, { x: +e[r + 2], y: +e[r + 3] }, { x: +e[r + 4], y: +e[r + 5] }]; t ? r ? i - 4 === r ? o[3] = { x: +e[0], y: +e[1] } : i - 2 === r && (o[2] = { x: +e[0], y: +e[1] }, o[3] = { x: +e[2], y: +e[3] }) : o[0] = { x: +e[i - 2], y: +e[i - 1] } : i - 4 === r ? o[3] = o[2] : r || (o[0] = { x: +e[r], y: +e[r + 1] }), n.push(["C", (-o[0].x + 6 * o[1].x + o[2].x) / 6, (-o[0].y + 6 * o[1].y + o[2].y) / 6, (o[1].x + 6 * o[2].x - o[3].x) / 6, (o[1].y + 6 * o[2].y - o[3].y) / 6, o[2].x, o[2].y]) } return n }, l = function (e, t, n, r, i) { var o = []; if (null === i && null === r && (r = n), e = +e, t = +t, n = +n, r = +r, null !== i) { var a = Math.PI / 180, s = e + n * Math.cos(-r * a), c = e + n * Math.cos(-i * a), l = t + n * Math.sin(-r * a), u = t + n * Math.sin(-i * a); o = [["M", s, l], ["A", n, n, 0, +(i - r > 180), 0, c, u]] } else o = [["M", e, t], ["m", 0, -r], ["a", n, r, 0, 1, 1, 0, 2 * r], ["a", n, r, 0, 1, 1, 0, -2 * r], ["z"]]; return o }, u = function (e) { if (e = s(e), !e || !e.length) return [["M", 0, 0]]; var t, n, r = [], i = 0, o = 0, a = 0, u = 0, h = 0; "M" === e[0][0] && (i = +e[0][1], o = +e[0][2], a = i, u = o, h++, r[0] = ["M", i, o]); for (var f, d, p = 3 === e.length && "M" === e[0][0] && "R" === e[1][0].toUpperCase() && "Z" === e[2][0].toUpperCase(), v = h, m = e.length; v < m; v++) { if (r.push(f = []), d = e[v], t = d[0], t !== t.toUpperCase()) switch (f[0] = t.toUpperCase(), f[0]) { case "A": f[1] = d[1], f[2] = d[2], f[3] = d[3], f[4] = d[4], f[5] = d[5], f[6] = +d[6] + i, f[7] = +d[7] + o; break; case "V": f[1] = +d[1] + o; break; case "H": f[1] = +d[1] + i; break; case "R": n = [i, o].concat(d.slice(1)); for (var g = 2, y = n.length; g < y; g++)n[g] = +n[g] + i, n[++g] = +n[g] + o; r.pop(), r = r.concat(c(n, p)); break; case "O": r.pop(), n = l(i, o, d[1], d[2]), n.push(n[0]), r = r.concat(n); break; case "U": r.pop(), r = r.concat(l(i, o, d[1], d[2], d[3])), f = ["U"].concat(r[r.length - 1].slice(-2)); break; case "M": a = +d[1] + i, u = +d[2] + o; break; default: for (var b = 1, x = d.length; b < x; b++)f[b] = +d[b] + (b % 2 ? i : o) } else if ("R" === t) n = [i, o].concat(d.slice(1)), r.pop(), r = r.concat(c(n, p)), f = ["R"].concat(d.slice(-2)); else if ("O" === t) r.pop(), n = l(i, o, d[1], d[2]), n.push(n[0]), r = r.concat(n); else if ("U" === t) r.pop(), r = r.concat(l(i, o, d[1], d[2], d[3])), f = ["U"].concat(r[r.length - 1].slice(-2)); else for (var w = 0, _ = d.length; w < _; w++)f[w] = d[w]; if (t = t.toUpperCase(), "O" !== t) switch (f[0]) { case "Z": i = +a, o = +u; break; case "H": i = f[1]; break; case "V": o = f[1]; break; case "M": a = f[f.length - 2], u = f[f.length - 1]; break; default: i = f[f.length - 2], o = f[f.length - 1] } } return r }, h = function (e, t, n, r) { return [e, t, n, r, n, r] }, f = function (e, t, n, r, i, o) { var a = 1 / 3, s = 2 / 3; return [a * e + s * n, a * t + s * r, a * i + s * n, a * o + s * r, i, o] }, d = function e(t, n, r, i, o, a, s, c, l, u) { r === i && (r += 1); var h, f, d, p, v, m = 120 * Math.PI / 180, g = Math.PI / 180 * (+o || 0), y = [], b = function (e, t, n) { var r = e * Math.cos(n) - t * Math.sin(n), i = e * Math.sin(n) + t * Math.cos(n); return { x: r, y: i } }; if (u) f = u[0], d = u[1], p = u[2], v = u[3]; else { h = b(t, n, -g), t = h.x, n = h.y, h = b(c, l, -g), c = h.x, l = h.y, t === c && n === l && (c += 1, l += 1); var x = (t - c) / 2, w = (n - l) / 2, _ = x * x / (r * r) + w * w / (i * i); _ > 1 && (_ = Math.sqrt(_), r *= _, i *= _); var C = r * r, M = i * i, O = (a === s ? -1 : 1) * Math.sqrt(Math.abs((C * M - C * w * w - M * x * x) / (C * w * w + M * x * x))); p = O * r * w / i + (t + c) / 2, v = O * -i * x / r + (n + l) / 2, f = Math.asin(((n - v) / i).toFixed(9)), d = Math.asin(((l - v) / i).toFixed(9)), f = t < p ? Math.PI - f : f, d = c < p ? Math.PI - d : d, f < 0 && (f = 2 * Math.PI + f), d < 0 && (d = 2 * Math.PI + d), s && f > d && (f -= 2 * Math.PI), !s && d > f && (d -= 2 * Math.PI) } var k = d - f; if (Math.abs(k) > m) { var S = d, T = c, A = l; d = f + m * (s && d > f ? 1 : -1), c = p + r * Math.cos(d), l = v + i * Math.sin(d), y = e(c, l, r, i, o, 0, s, T, A, [d, S, p, v]) } k = d - f; var L = Math.cos(f), j = Math.sin(f), z = Math.cos(d), E = Math.sin(d), P = Math.tan(k / 4), D = 4 / 3 * r * P, H = 4 / 3 * i * P, V = [t, n], I = [t + D * j, n - H * L], N = [c + D * E, l - H * z], R = [c, l]; if (I[0] = 2 * V[0] - I[0], I[1] = 2 * V[1] - I[1], u) return [I, N, R].concat(y); y = [I, N, R].concat(y).join().split(","); for (var F = [], Y = 0, $ = y.length; Y < $; Y++)F[Y] = Y % 2 ? b(y[Y - 1], y[Y], g).y : b(y[Y], y[Y + 1], g).x; return F }, p = function (e, t) { var n, r = u(e), i = t && u(t), o = { x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null }, a = { x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null }, s = [], c = [], l = "", p = "", v = function (e, t, n) { var r, i; if (!e) return ["C", t.x, t.y, t.x, t.y, t.x, t.y]; switch (!(e[0] in { T: 1, Q: 1 }) && (t.qx = t.qy = null), e[0]) { case "M": t.X = e[1], t.Y = e[2]; break; case "A": e = ["C"].concat(d.apply(0, [t.x, t.y].concat(e.slice(1)))); break; case "S": "C" === n || "S" === n ? (r = 2 * t.x - t.bx, i = 2 * t.y - t.by) : (r = t.x, i = t.y), e = ["C", r, i].concat(e.slice(1)); break; case "T": "Q" === n || "T" === n ? (t.qx = 2 * t.x - t.qx, t.qy = 2 * t.y - t.qy) : (t.qx = t.x, t.qy = t.y), e = ["C"].concat(f(t.x, t.y, t.qx, t.qy, e[1], e[2])); break; case "Q": t.qx = e[1], t.qy = e[2], e = ["C"].concat(f(t.x, t.y, e[1], e[2], e[3], e[4])); break; case "L": e = ["C"].concat(h(t.x, t.y, e[1], e[2])); break; case "H": e = ["C"].concat(h(t.x, t.y, e[1], t.y)); break; case "V": e = ["C"].concat(h(t.x, t.y, t.x, e[1])); break; case "Z": e = ["C"].concat(h(t.x, t.y, t.X, t.Y)); break; default: break }return e }, m = function (e, t) { if (e[t].length > 7) { e[t].shift(); var o = e[t]; while (o.length) s[t] = "A", i && (c[t] = "A"), e.splice(t++, 0, ["C"].concat(o.splice(0, 6))); e.splice(t, 1), n = Math.max(r.length, i && i.length || 0) } }, g = function (e, t, o, a, s) { e && t && "M" === e[s][0] && "M" !== t[s][0] && (t.splice(s, 0, ["M", a.x, a.y]), o.bx = 0, o.by = 0, o.x = e[s][1], o.y = e[s][2], n = Math.max(r.length, i && i.length || 0)) }; n = Math.max(r.length, i && i.length || 0); for (var y = 0; y < n; y++) { r[y] && (l = r[y][0]), "C" !== l && (s[y] = l, y && (p = s[y - 1])), r[y] = v(r[y], o, p), "A" !== s[y] && "C" === l && (s[y] = "C"), m(r, y), i && (i[y] && (l = i[y][0]), "C" !== l && (c[y] = l, y && (p = c[y - 1])), i[y] = v(i[y], a, p), "A" !== c[y] && "C" === l && (c[y] = "C"), m(i, y)), g(r, i, o, a, y), g(i, r, a, o, y); var b = r[y], x = i && i[y], w = b.length, _ = i && x.length; o.x = b[w - 2], o.y = b[w - 1], o.bx = parseFloat(b[w - 4]) || o.x, o.by = parseFloat(b[w - 3]) || o.y, a.bx = i && (parseFloat(x[_ - 4]) || a.x), a.by = i && (parseFloat(x[_ - 3]) || a.y), a.x = i && x[_ - 2], a.y = i && x[_ - 1] } return i ? [r, i] : r }, v = /,?([a-z]),?/gi, m = function (e) { return e.join(",").replace(v, "$1") }, g = function (e, t, n, r, i) { var o = -3 * t + 9 * n - 9 * r + 3 * i, a = e * o + 6 * t - 12 * n + 6 * r; return e * a - 3 * t + 3 * n }, y = function (e, t, n, r, i, o, a, s, c) { null === c && (c = 1), c = c > 1 ? 1 : c < 0 ? 0 : c; for (var l = c / 2, u = 12, h = [-.1252, .1252, -.3678, .3678, -.5873, .5873, -.7699, .7699, -.9041, .9041, -.9816, .9816], f = [.2491, .2491, .2335, .2335, .2032, .2032, .1601, .1601, .1069, .1069, .0472, .0472], d = 0, p = 0; p < u; p++) { var v = l * h[p] + l, m = g(v, e, n, i, a), y = g(v, t, r, o, s), b = m * m + y * y; d += f[p] * Math.sqrt(b) } return l * d }, b = function (e, t, n, r, i, o, a, s) { for (var c, l, u, h, f = [], d = [[], []], p = 0; p < 2; ++p)if (0 === p ? (l = 6 * e - 12 * n + 6 * i, c = -3 * e + 9 * n - 9 * i + 3 * a, u = 3 * n - 3 * e) : (l = 6 * t - 12 * r + 6 * o, c = -3 * t + 9 * r - 9 * o + 3 * s, u = 3 * r - 3 * t), Math.abs(c) < 1e-12) { if (Math.abs(l) < 1e-12) continue; h = -u / l, h > 0 && h < 1 && f.push(h) } else { var v = l * l - 4 * u * c, m = Math.sqrt(v); if (!(v < 0)) { var g = (-l + m) / (2 * c); g > 0 && g < 1 && f.push(g); var y = (-l - m) / (2 * c); y > 0 && y < 1 && f.push(y) } } var b, x = f.length, w = x; while (x--) h = f[x], b = 1 - h, d[0][x] = b * b * b * e + 3 * b * b * h * n + 3 * b * h * h * i + h * h * h * a, d[1][x] = b * b * b * t + 3 * b * b * h * r + 3 * b * h * h * o + h * h * h * s; return d[0][w] = e, d[1][w] = t, d[0][w + 1] = a, d[1][w + 1] = s, d[0].length = d[1].length = w + 2, { min: { x: Math.min.apply(0, d[0]), y: Math.min.apply(0, d[1]) }, max: { x: Math.max.apply(0, d[0]), y: Math.max.apply(0, d[1]) } } }, x = function (e, t, n, r, i, o, a, s) { if (!(Math.max(e, n) < Math.min(i, a) || Math.min(e, n) > Math.max(i, a) || Math.max(t, r) < Math.min(o, s) || Math.min(t, r) > Math.max(o, s))) { var c = (e * r - t * n) * (i - a) - (e - n) * (i * s - o * a), l = (e * r - t * n) * (o - s) - (t - r) * (i * s - o * a), u = (e - n) * (o - s) - (t - r) * (i - a); if (u) { var h = c / u, f = l / u, d = +h.toFixed(2), p = +f.toFixed(2); if (!(d < +Math.min(e, n).toFixed(2) || d > +Math.max(e, n).toFixed(2) || d < +Math.min(i, a).toFixed(2) || d > +Math.max(i, a).toFixed(2) || p < +Math.min(t, r).toFixed(2) || p > +Math.max(t, r).toFixed(2) || p < +Math.min(o, s).toFixed(2) || p > +Math.max(o, s).toFixed(2))) return { x: h, y: f } } } }, w = function (e, t, n) { return t >= e.x && t <= e.x + e.width && n >= e.y && n <= e.y + e.height }, _ = function (e, t, n, r, i) { if (i) return [["M", +e + +i, t], ["l", n - 2 * i, 0], ["a", i, i, 0, 0, 1, i, i], ["l", 0, r - 2 * i], ["a", i, i, 0, 0, 1, -i, i], ["l", 2 * i - n, 0], ["a", i, i, 0, 0, 1, -i, -i], ["l", 0, 2 * i - r], ["a", i, i, 0, 0, 1, i, -i], ["z"]]; var o = [["M", e, t], ["l", n, 0], ["l", 0, r], ["l", -n, 0], ["z"]]; return o.parsePathArray = m, o }, C = function (e, t, n, r) { return null === e && (e = t = n = r = 0), null === t && (t = e.y, n = e.width, r = e.height, e = e.x), { x: e, y: t, width: n, w: n, height: r, h: r, x2: e + n, y2: t + r, cx: e + n / 2, cy: t + r / 2, r1: Math.min(n, r) / 2, r2: Math.max(n, r) / 2, r0: Math.sqrt(n * n + r * r) / 2, path: _(e, t, n, r), vb: [e, t, n, r].join(" ") } }, M = function (e, t) { return e = C(e), t = C(t), w(t, e.x, e.y) || w(t, e.x2, e.y) || w(t, e.x, e.y2) || w(t, e.x2, e.y2) || w(e, t.x, t.y) || w(e, t.x2, t.y) || w(e, t.x, t.y2) || w(e, t.x2, t.y2) || (e.x < t.x2 && e.x > t.x || t.x < e.x2 && t.x > e.x) && (e.y < t.y2 && e.y > t.y || t.y < e.y2 && t.y > e.y) }, O = function (e, t, n, i, o, a, s, c) { r.isArray(e) || (e = [e, t, n, i, o, a, s, c]); var l = b.apply(null, e); return C(l.min.x, l.min.y, l.max.x - l.min.x, l.max.y - l.min.y) }, k = function (e, t, n, r, i, o, a, s, c) { var l = 1 - c, u = Math.pow(l, 3), h = Math.pow(l, 2), f = c * c, d = f * c, p = u * e + 3 * h * c * n + 3 * l * c * c * i + d * a, v = u * t + 3 * h * c * r + 3 * l * c * c * o + d * s, m = e + 2 * c * (n - e) + f * (i - 2 * n + e), g = t + 2 * c * (r - t) + f * (o - 2 * r + t), y = n + 2 * c * (i - n) + f * (a - 2 * i + n), b = r + 2 * c * (o - r) + f * (s - 2 * o + r), x = l * e + c * n, w = l * t + c * r, _ = l * i + c * a, C = l * o + c * s, M = 90 - 180 * Math.atan2(m - y, g - b) / Math.PI; return { x: p, y: v, m: { x: m, y: g }, n: { x: y, y: b }, start: { x: x, y: w }, end: { x: _, y: C }, alpha: M } }, S = function (e, t, n) { var r = O(e), i = O(t); if (!M(r, i)) return n ? 0 : []; for (var o = y.apply(0, e), a = y.apply(0, t), s = ~~(o / 8), c = ~~(a / 8), l = [], u = [], h = {}, f = n ? 0 : [], d = 0; d < s + 1; d++) { var p = k.apply(0, e.concat(d / s)); l.push({ x: p.x, y: p.y, t: d / s }) } for (var v = 0; v < c + 1; v++) { var m = k.apply(0, t.concat(v / c)); u.push({ x: m.x, y: m.y, t: v / c }) } for (var g = 0; g < s; g++)for (var b = 0; b < c; b++) { var w = l[g], _ = l[g + 1], C = u[b], S = u[b + 1], T = Math.abs(_.x - w.x) < .001 ? "y" : "x", A = Math.abs(S.x - C.x) < .001 ? "y" : "x", L = x(w.x, w.y, _.x, _.y, C.x, C.y, S.x, S.y); if (L) { if (h[L.x.toFixed(4)] === L.y.toFixed(4)) continue; h[L.x.toFixed(4)] = L.y.toFixed(4); var j = w.t + Math.abs((L[T] - w[T]) / (_[T] - w[T])) * (_.t - w.t), z = C.t + Math.abs((L[A] - C[A]) / (S[A] - C[A])) * (S.t - C.t); j >= 0 && j <= 1 && z >= 0 && z <= 1 && (n ? f++ : f.push({ x: L.x, y: L.y, t1: j, t2: z })) } } return f }, T = function (e, t, n) { var r, i, o, a, s, c, l, u, h, f; e = p(e), t = p(t); for (var d = n ? 0 : [], v = 0, m = e.length; v < m; v++) { var g = e[v]; if ("M" === g[0]) r = s = g[1], i = c = g[2]; else { "C" === g[0] ? (h = [r, i].concat(g.slice(1)), r = h[6], i = h[7]) : (h = [r, i, r, i, s, c, s, c], r = s, i = c); for (var y = 0, b = t.length; y < b; y++) { var x = t[y]; if ("M" === x[0]) o = l = x[1], a = u = x[2]; else { "C" === x[0] ? (f = [o, a].concat(x.slice(1)), o = f[6], a = f[7]) : (f = [o, a, o, a, l, u, l, u], o = l, a = u); var w = S(h, f, n); if (n) d += w; else { for (var _ = 0, C = w.length; _ < C; _++)w[_].segment1 = v, w[_].segment2 = y, w[_].bez1 = h, w[_].bez2 = f; d = d.concat(w) } } } } } return d }, A = function (e, t) { return T(e, t) }; function L(e, t) { var n = [], r = []; function i(e, t) { if (1 === e.length) n.push(e[0]), r.push(e[0]); else { for (var o = [], a = 0; a < e.length - 1; a++)0 === a && n.push(e[0]), a === e.length - 2 && r.push(e[a + 1]), o[a] = [(1 - t) * e[a][0] + t * e[a + 1][0], (1 - t) * e[a][1] + t * e[a + 1][1]]; i(o, t) } } return e.length && i(e, t), { left: n, right: r.reverse() } } function j(e, t, n) { var r = [[e[1], e[2]]]; n = n || 2; var i = []; "A" === t[0] ? (r.push(t[6]), r.push(t[7])) : "C" === t[0] ? (r.push([t[1], t[2]]), r.push([t[3], t[4]]), r.push([t[5], t[6]])) : "S" === t[0] || "Q" === t[0] ? (r.push([t[1], t[2]]), r.push([t[3], t[4]])) : r.push([t[1], t[2]]); for (var o = r, a = 1 / n, s = 0; s < n - 1; s++) { var c = a / (1 - a * s), l = L(o, c); i.push(l.left), o = l.right } i.push(o); var u = i.map((function (e) { var t = []; return 4 === e.length && (t.push("C"), t = t.concat(e[2])), e.length >= 3 && (3 === e.length && t.push("Q"), t = t.concat(e[1])), 2 === e.length && t.push("L"), t = t.concat(e[e.length - 1]), t })); return u } var z = function (e, t, n) { if (1 === n) return [[].concat(e)]; var r = []; if ("L" === t[0] || "C" === t[0] || "Q" === t[0]) r = r.concat(j(e, t, n)); else { var i = [].concat(e); "M" === i[0] && (i[0] = "L"); for (var o = 0; o <= n - 1; o++)r.push(i) } return r }, E = function (e, t) { if (1 === e.length) return e; var n = e.length - 1, r = t.length - 1, i = n / r, o = []; if (1 === e.length && "M" === e[0][0]) { for (var a = 0; a < r - n; a++)e.push(e[0]); return e } for (var s = 0; s < r; s++) { var c = Math.floor(i * s); o[c] = (o[c] || 0) + 1 } var l = o.reduce((function (t, r, i) { return i === n ? t.concat(e[n]) : t.concat(z(e[i], e[i + 1], r)) }), []); return l.unshift(e[0]), "Z" !== t[r] && "z" !== t[r] || l.push("Z"), l }, P = function (e, t) { if (e.length !== t.length) return !1; var n = !0; return r.each(e, (function (e, r) { if (e !== t[r]) return n = !1, !1 })), n }; function D(e, t, n) { var r = null, i = n; return t < i && (i = t, r = "add"), e < i && (i = e, r = "del"), { type: r, min: i } } var H = function (e, t) { var n, r, i = e.length, o = t.length, a = 0; if (0 === i || 0 === o) return null; for (var s = [], c = 0; c <= i; c++)s[c] = [], s[c][0] = { min: c }; for (var l = 0; l <= o; l++)s[0][l] = { min: l }; for (var u = 1; u <= i; u++) { n = e[u - 1]; for (var h = 1; h <= o; h++) { r = t[h - 1], a = P(n, r) ? 0 : 1; var f = s[u - 1][h].min + 1, d = s[u][h - 1].min + 1, p = s[u - 1][h - 1].min + a; s[u][h] = D(f, d, p) } } return s }, V = function (e, t) { var n = H(e, t), r = e.length, i = t.length, o = [], a = 1, s = 1; if (n[r][i] !== r) { for (var c = 1; c <= r; c++) { var l = n[c][c].min; s = c; for (var u = a; u <= i; u++)n[c][u].min < l && (l = n[c][u].min, s = u); a = s, n[c][a].type && o.push({ index: c - 1, type: n[c][a].type }) } for (var h = o.length - 1; h >= 0; h--)a = o[h].index, "add" === o[h].type ? e.splice(a, 0, [].concat(e[a])) : e.splice(a, 1) } r = e.length; var f = i - r; if (r < i) for (var d = 0; d < f; d++)"z" === e[r - 1][0] || "Z" === e[r - 1][0] ? e.splice(r - 2, 0, e[r - 2]) : e.push(e[r - 1]), r += 1; return e }; function I(e, t, n) { for (var r, i = [].concat(e), o = 1 / (n + 1), a = N(t)[0], s = 1; s <= n; s++)o *= s, r = Math.floor(e.length * o), 0 === r ? i.unshift([a[0] * o + e[r][0] * (1 - o), a[1] * o + e[r][1] * (1 - o)]) : i.splice(r, 0, [a[0] * o + e[r][0] * (1 - o), a[1] * o + e[r][1] * (1 - o)]); return i } function N(e) { var t = []; switch (e[0]) { case "M": t.push([e[1], e[2]]); break; case "L": t.push([e[1], e[2]]); break; case "A": t.push([e[6], e[7]]); break; case "Q": t.push([e[3], e[4]]), t.push([e[1], e[2]]); break; case "T": t.push([e[1], e[2]]); break; case "C": t.push([e[5], e[6]]), t.push([e[1], e[2]]), t.push([e[3], e[4]]); break; case "S": t.push([e[3], e[4]]), t.push([e[1], e[2]]); break; case "H": t.push([e[1], e[1]]); break; case "V": t.push([e[1], e[1]]); break; default: }return t } var R = function (e, t) { if (e.length <= 1) return e; for (var n, r = 0; r < t.length; r++)if (e[r][0] !== t[r][0]) switch (n = N(e[r]), t[r][0]) { case "M": e[r] = ["M"].concat(n[0]); break; case "L": e[r] = ["L"].concat(n[0]); break; case "A": e[r] = [].concat(t[r]), e[r][6] = n[0][0], e[r][7] = n[0][1]; break; case "Q": if (n.length < 2) { if (!(r > 0)) { e[r] = t[r]; break } n = I(n, e[r - 1], 1) } e[r] = ["Q"].concat(n.reduce((function (e, t) { return e.concat(t) }), [])); break; case "T": e[r] = ["T"].concat(n[0]); break; case "C": if (n.length < 3) { if (!(r > 0)) { e[r] = t[r]; break } n = I(n, e[r - 1], 2) } e[r] = ["C"].concat(n.reduce((function (e, t) { return e.concat(t) }), [])); break; case "S": if (n.length < 2) { if (!(r > 0)) { e[r] = t[r]; break } n = I(n, e[r - 1], 1) } e[r] = ["S"].concat(n.reduce((function (e, t) { return e.concat(t) }), [])); break; default: e[r] = t[r] }return e }; e.exports = { parsePathString: s, parsePathArray: m, pathTocurve: p, pathToAbsolute: u, catmullRomToBezier: c, rectPath: _, fillPath: E, fillPathByDiff: V, formatPath: R, intersection: A } }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(191), h = n(384), f = n(16), d = f.FONT_FAMILY, p = 8, v = l.Event, m = l.Group, g = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { type: "continuous-legend", items: null, layout: "vertical", width: 20, height: 156, textStyle: { fill: "#333", textAlign: "center", textBaseline: "middle", stroke: "#fff", lineWidth: 5, fontFamily: d }, hoverTextStyle: { fill: "rgba(0,0,0,0.25)" }, slidable: !0, triggerAttr: { fill: "#fff", shadowBlur: 10, shadowColor: "rgba(0,0,0,0.65)", radius: 2 }, _range: [0, 100], middleBackgroundStyle: { fill: "#D9D9D9" }, textOffset: 4, lineStyle: { lineWidth: 1, stroke: "#fff" }, pointerStyle: { fill: "rgb(230, 230, 230)" } }) }, n._calStartPoint = function () { var e = { x: 10, y: this.get("titleGap") - p }, t = this.get("titleShape"); if (t) { var n = t.getBBox(); e.y += n.height } return e }, n.beforeRender = function () { var t = this.get("items"); l.isArray(t) && !l.isEmpty(t) && (e.prototype.beforeRender.call(this), this.set("firstItem", t[0]), this.set("lastItem", t[t.length - 1])) }, n._formatItemValue = function (e) { var t = this.get("formatter") || this.get("itemFormatter"); return t && (e = t.call(this, e)), e }, n.render = function () { e.prototype.render.call(this), this.get("slidable") ? this._renderSlider() : this._renderUnslidable() }, n._renderSlider = function () { var e = new m, t = new m, n = new m, r = this._calStartPoint(), i = this.get("group"), o = i.addGroup(h, { minHandleElement: e, maxHandleElement: t, backgroundElement: n, layout: this.get("layout"), range: this.get("_range"), width: this.get("width"), height: this.get("height") }); o.translate(r.x, r.y), this.set("slider", o); var a = this._renderSliderShape(); a.attr("clip", o.get("middleHandleElement")), this._renderTrigger() }, n._addMiddleBar = function (e, t, n) { return e.addShape(t, { attrs: l.mix({}, n, this.get("middleBackgroundStyle")) }), e.addShape(t, { attrs: n }) }, n._renderTrigger = function () { var e = this.get("firstItem"), t = this.get("lastItem"), n = this.get("layout"), r = this.get("textStyle"), i = this.get("triggerAttr"), o = l.mix({}, i), a = l.mix({}, i), s = l.mix({ text: this._formatItemValue(e.value) + "" }, r), c = l.mix({ text: this._formatItemValue(t.value) + "" }, r); "vertical" === n ? (this._addVerticalTrigger("min", o, s), this._addVerticalTrigger("max", a, c)) : (this._addHorizontalTrigger("min", o, s), this._addHorizontalTrigger("max", a, c)) }, n._addVerticalTrigger = function (e, t, n) { var r = this.get("slider"), i = r.get(e + "HandleElement"), o = this.get("width"), a = i.addShape("rect", { attrs: l.mix({ x: o / 2 - p - 2, y: "min" === e ? 0 : -p, width: 2 * p + 2, height: p }, t) }), s = i.addShape("text", { attrs: l.mix(n, { x: o + this.get("textOffset"), y: "max" === e ? -4 : 4, textAlign: "start", lineHeight: 1, textBaseline: "middle" }) }), c = this.get("layout"), u = "vertical" === c ? "ns-resize" : "ew-resize"; a.attr("cursor", u), s.attr("cursor", u), this.set(e + "ButtonElement", a), this.set(e + "TextElement", s) }, n._addHorizontalTrigger = function (e, t, n) { var r = this.get("slider"), i = r.get(e + "HandleElement"), o = i.addShape("rect", { attrs: l.mix({ x: "min" === e ? -p : 0, y: -p - this.get("height") / 2, width: p, height: 2 * p }, t) }), a = i.addShape("text", { attrs: l.mix(n, { x: "min" === e ? -p - 4 : p + 4, y: p / 2 + this.get("textOffset") + 10, textAlign: "min" === e ? "end" : "start", textBaseline: "middle" }) }), s = this.get("layout"), c = "vertical" === s ? "ns-resize" : "ew-resize"; o.attr("cursor", c), a.attr("cursor", c), this.set(e + "ButtonElement", o), this.set(e + "TextElement", a) }, n._bindEvents = function () { var e = this; if (this.get("slidable")) { var t = this.get("slider"); t.on("sliderchange", (function (t) { var n = t.range, r = e.get("firstItem").value, i = e.get("lastItem").value, o = r + n[0] / 100 * (i - r), a = r + n[1] / 100 * (i - r); e._updateElement(o, a); var s = new v("itemfilter", t, !0, !0); s.range = [o, a], e.emit("itemfilter", s) })) } this.get("hoverable") && (this.get("group").on("mousemove", l.wrapBehavior(this, "_onMouseMove")), this.get("group").on("mouseleave", l.wrapBehavior(this, "_onMouseLeave"))) }, n._updateElement = function (e, t) { var n = this.get("minTextElement"), r = this.get("maxTextElement"); t > 1 && (e = parseInt(e, 10), t = parseInt(t, 10)), n.attr("text", this._formatItemValue(e) + ""), r.attr("text", this._formatItemValue(t) + "") }, n._onMouseLeave = function () { var e = this.get("group").findById("hoverPointer"); e && e.destroy(); var t = this.get("group").findById("hoverText"); t && t.destroy(), this.get("canvas").draw() }, n._onMouseMove = function (e) { var t, n = this.get("height"), r = this.get("width"), i = this.get("items"), o = this.get("canvas").get("el"), a = o.getBoundingClientRect(), s = this.get("group").getBBox(); if ("vertical" === this.get("layout")) { var c = 5; "color-legend" === this.get("type") && (c = 30); var l = this.get("titleGap"), u = this.get("titleShape"); u && (l += u.getBBox().maxY - u.getBBox().minY); var h = e.clientY || e.event.clientY; h = h - a.y - this.get("group").attr("matrix")[7] + s.y - c + l, t = i[0].value + (1 - h / n) * (i[i.length - 1].value - i[0].value) } else { var f = e.clientX || e.event.clientX; f = f - a.x - this.get("group").attr("matrix")[6], t = i[0].value + f / r * (i[i.length - 1].value - i[0].value) } t = t.toFixed(2), this.activate(t), this.emit("mousehover", { value: t }) }, n.activate = function (e) { if (e) { var t = this.get("group").findById("hoverPointer"), n = this.get("group").findById("hoverText"), r = this.get("items"); if (!(e < r[0].value || e > r[r.length - 1].value)) { var i, o = this.get("height"), a = this.get("width"), s = this.get("titleShape"), c = this.get("titleGap"), u = [], h = (e - r[0].value) / (r[r.length - 1].value - r[0].value); if ("vertical" === this.get("layout")) { var f = 0, d = 0; "color-legend" === this.get("type") && (f = c, s && (f += s.getBBox().height)), this.get("slidable") && ("color-legend" === this.get("type") ? f -= 13 : (f = c - 15, s && (f += s.getBBox().height)), d += 10), h = (1 - h) * o, u = [[d, h + f], [d - 10, h + f - 5], [d - 10, h + f + 5]], i = l.mix({}, { x: a + this.get("textOffset") / 2 + d, y: h + f, text: this._formatItemValue(e) + "" }, this.get("textStyle"), { textAlign: "start" }) } else { var p = 0, v = 0; "color-legend" === this.get("type") && (p = c, s && (p += s.getBBox().height)), this.get("slidable") && ("color-legend" === this.get("type") ? p -= 7 : (p = c, s || (p -= 7)), v += 10), h *= a, u = [[h + v, p], [h + v - 5, p - 10], [h + v + 5, p - 10]], i = l.mix({}, { x: h - 5, y: o + this.get("textOffset") + p, text: this._formatItemValue(e) + "" }, this.get("textStyle")) } var m = l.mix(i, this.get("hoverTextStyle")); n ? n.attr(m) : (n = this.get("group").addShape("text", { attrs: m }), n.set("id", "hoverText")), t ? t.attr(l.mix({ points: u }, this.get("pointerStyle"))) : (t = this.get("group").addShape("Polygon", { attrs: l.mix({ points: u }, this.get("pointerStyle")) }), t.set("id", "hoverPointer")), this.get("canvas").draw() } } }, n.deactivate = function () { var e = this.get("group").findById("hoverPointer"); e && e.destroy(); var t = this.get("group").findById("hoverText"); t && t.destroy(), this.get("canvas").draw() }, t }(u); e.exports = g }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(92), u = n(4), h = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return u.mix({}, t, { x: 0, y: 0, items: null, titleContent: null, showTitle: !0, plotRange: null, offset: 10, timeStamp: 0, inPlot: !0, crosshairs: null }) }, n.isContentChange = function (e, t) { var n = this.get("titleContent"), r = this.get("items"), i = !(e === n && r.length === t.length); return i || u.each(t, (function (e, t) { var n = r[t]; for (var o in e) if (e.hasOwnProperty(o) && !u.isObject(e[o]) && e[o] !== n[o]) { i = !0; break } if (i) return !1 })), i }, n.setContent = function (e, t) { var n = (new Date).valueOf(); return this.set("items", t), this.set("titleContent", e), this.set("timeStamp", n), this.render(), this }, n.setPosition = function (e, t) { this.set("x", e), this.set("y", t) }, n.render = function () { }, n.clear = function () { }, n.show = function () { this.set("visible", !0) }, n.hide = function () { this.set("visible", !1) }, t }(l); e.exports = h }, function (e, t, n) { "use strict"; n.d(t, "c", (function () { return P })), t["a"] = D; var r = n(471), i = n(472), o = n(473), a = n(474), s = n(444), c = n(476), l = n(477), u = n(478), h = n(479), f = n(480), d = n(481), p = n(482), v = n(483), m = n(484), g = n(485), y = n(486), b = n(487), x = n(446), w = n(488), _ = n(489), C = n(490), M = n(491), O = n(492), k = n(493), S = n(494), T = n(495), A = n(496), L = n(497), j = n(498), z = n(432), E = n(499), P = [null]; function D(e, t) { this._groups = e, this._parents = t } function H() { return new D([[document.documentElement]], P) } D.prototype = H.prototype = { constructor: D, select: r["a"], selectAll: i["a"], filter: o["a"], data: a["a"], enter: s["b"], exit: c["a"], join: l["a"], merge: u["a"], order: h["a"], sort: f["a"], call: d["a"], nodes: p["a"], node: v["a"], size: m["a"], empty: g["a"], each: y["a"], attr: b["a"], style: x["a"], property: w["a"], classed: _["a"], text: C["a"], html: M["a"], raise: O["a"], lower: k["a"], append: S["a"], insert: T["a"], remove: A["a"], clone: L["a"], datum: j["a"], on: z["b"], dispatch: E["a"] }, t["b"] = H }, function (e, t, n) { var r = n(12), i = n(111); e.exports = { toTimeStamp: function (e) { return r(e) && (e = e.indexOf("T") > 0 ? new Date(e).getTime() : new Date(e.replace(/-/gi, "/")).getTime()), i(e) && (e = e.getTime()), e } } }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(83); n.d(t, "now", (function () { return r["b"] })), n.d(t, "timer", (function () { return r["c"] })), n.d(t, "timerFlush", (function () { return r["d"] })); var i = n(228); n.d(t, "timeout", (function () { return i["a"] })); var o = n(229); n.d(t, "interval", (function () { return o["a"] })) }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(470); n.d(t, "create", (function () { return r["a"] })); var i = n(417); n.d(t, "creator", (function () { return i["a"] })); var o = n(500); n.d(t, "local", (function () { return o["a"] })); var a = n(443); n.d(t, "matcher", (function () { return a["a"] })); var s = n(501); n.d(t, "mouse", (function () { return s["a"] })); var c = n(428); n.d(t, "namespace", (function () { return c["a"] })); var l = n(429); n.d(t, "namespaces", (function () { return l["a"] })); var u = n(418); n.d(t, "clientPoint", (function () { return u["a"] })); var h = n(441); n.d(t, "select", (function () { return h["a"] })); var f = n(502); n.d(t, "selectAll", (function () { return f["a"] })); var d = n(99); n.d(t, "selection", (function () { return d["b"] })); var p = n(430); n.d(t, "selector", (function () { return p["a"] })); var v = n(442); n.d(t, "selectorAll", (function () { return v["a"] })); var m = n(446); n.d(t, "style", (function () { return m["b"] })); var g = n(503); n.d(t, "touch", (function () { return g["a"] })); var y = n(504); n.d(t, "touches", (function () { return y["a"] })); var b = n(431); n.d(t, "window", (function () { return b["a"] })); var x = n(432); n.d(t, "event", (function () { return x["c"] })), n.d(t, "customEvent", (function () { return x["a"] })) }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(230); n.d(t, "easeLinear", (function () { return r["a"] })); var i = n(231); n.d(t, "easeQuad", (function () { return i["b"] })), n.d(t, "easeQuadIn", (function () { return i["a"] })), n.d(t, "easeQuadOut", (function () { return i["c"] })), n.d(t, "easeQuadInOut", (function () { return i["b"] })); var o = n(232); n.d(t, "easeCubic", (function () { return o["b"] })), n.d(t, "easeCubicIn", (function () { return o["a"] })), n.d(t, "easeCubicOut", (function () { return o["c"] })), n.d(t, "easeCubicInOut", (function () { return o["b"] })); var a = n(233); n.d(t, "easePoly", (function () { return a["b"] })), n.d(t, "easePolyIn", (function () { return a["a"] })), n.d(t, "easePolyOut", (function () { return a["c"] })), n.d(t, "easePolyInOut", (function () { return a["b"] })); var s = n(234); n.d(t, "easeSin", (function () { return s["b"] })), n.d(t, "easeSinIn", (function () { return s["a"] })), n.d(t, "easeSinOut", (function () { return s["c"] })), n.d(t, "easeSinInOut", (function () { return s["b"] })); var c = n(235); n.d(t, "easeExp", (function () { return c["b"] })), n.d(t, "easeExpIn", (function () { return c["a"] })), n.d(t, "easeExpOut", (function () { return c["c"] })), n.d(t, "easeExpInOut", (function () { return c["b"] })); var l = n(236); n.d(t, "easeCircle", (function () { return l["b"] })), n.d(t, "easeCircleIn", (function () { return l["a"] })), n.d(t, "easeCircleOut", (function () { return l["c"] })), n.d(t, "easeCircleInOut", (function () { return l["b"] })); var u = n(237); n.d(t, "easeBounce", (function () { return u["c"] })), n.d(t, "easeBounceIn", (function () { return u["a"] })), n.d(t, "easeBounceOut", (function () { return u["c"] })), n.d(t, "easeBounceInOut", (function () { return u["b"] })); var h = n(238); n.d(t, "easeBack", (function () { return h["b"] })), n.d(t, "easeBackIn", (function () { return h["a"] })), n.d(t, "easeBackOut", (function () { return h["c"] })), n.d(t, "easeBackInOut", (function () { return h["b"] })); var f = n(239); n.d(t, "easeElastic", (function () { return f["c"] })), n.d(t, "easeElasticIn", (function () { return f["a"] })), n.d(t, "easeElasticOut", (function () { return f["c"] })), n.d(t, "easeElasticInOut", (function () { return f["b"] })) }, function (e, t, n) { e.exports = { Position: n(329), Color: n(330), Shape: n(331), Size: n(332), Opacity: n(333), ColorUtil: n(164) } }, function (e, t, n) { var r = n(106), i = n(20); i.Linear = n(38), i.Identity = n(208), i.Cat = n(108), i.Time = n(209), i.TimeCat = n(211), i.Log = n(212), i.Pow = n(213); var o = function (e) { if (i.hasOwnProperty(e)) { var t = r(e); i[t] = function (t) { return new i[e](t) } } }; for (var a in i) o(a); var s = ["cat", "timeCat"]; i.isCategory = function (e) { return s.indexOf(e) >= 0 }, e.exports = i }, function (e, t, n) { var r = n(26), i = function (e) { var t = r(e); return t.charAt(0).toLowerCase() + t.substring(1) }; e.exports = i }, function (e, t) { var n = 12; function r(e) { var t = 1; if (e === 1 / 0 || e === -1 / 0) throw new Error("Not support Infinity!"); if (e < 1) { var r = 0; while (e < 1) t /= 10, e *= 10, r++; t.toString().length > n && (t = parseFloat(t.toFixed(r))) } else while (e > 10) t *= 10, e /= 10; return t } function i(e, t) { var n = e.length; if (0 === n) return NaN; var r = e[0]; if (t < e[0]) return NaN; if (t >= e[n - 1]) return e[n - 1]; for (var i = 1; i < e.length; i++) { if (t < e[i]) break; r = e[i] } return r } function o(e, t) { var n, r = e.length; if (0 === r) return NaN; if (t > e[r - 1]) return NaN; if (t < e[0]) return e[0]; for (var i = 1; i < e.length; i++)if (t <= e[i]) { n = e[i]; break } return n } var a = { snapFactorTo: function (e, t, i) { if (isNaN(e)) return NaN; var o = 1; if (0 !== e) { e < 0 && (o = -1), e *= o; var s = r(e); o *= s, e /= s } e = "floor" === i ? a.snapFloor(t, e) : "ceil" === i ? a.snapCeiling(t, e) : a.snapTo(t, e); var c = parseFloat((e * o).toPrecision(n)); if (Math.abs(o) < 1 && c.toString().length > n) { var l = parseInt(1 / o), u = o > 0 ? 1 : -1; c = e / l * u } return c }, snapMultiple: function (e, t, n) { var r; return r = "ceil" === n ? Math.ceil(e / t) : "floor" === n ? Math.floor(e / t) : Math.round(e / t), r * t }, snapTo: function (e, t) { var n = i(e, t), r = o(e, t); if (isNaN(n) || isNaN(r)) { if (e[0] >= t) return e[0]; var a = e[e.length - 1]; if (a <= t) return a } return Math.abs(t - n) < Math.abs(r - t) ? n : r }, snapFloor: function (e, t) { return i(e, t) }, snapCeiling: function (e, t) { return o(e, t) }, fixedBase: function (e, t) { var n = t.toString(), r = n.indexOf("."), i = n.indexOf("e-"); if (r < 0 && i < 0) return Math.round(e); var o = i >= 0 ? parseInt(n.substr(i + 2), 10) : n.substr(r + 1).length; return o > 20 && (o = 20), parseFloat(e.toFixed(o)) } }; e.exports = a }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(20), o = n(109), a = n(3), s = n(11), c = n(12), l = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n._initDefaultCfg = function () { e.prototype._initDefaultCfg.call(this), this.type = "cat", this.isCategory = !0, this.isRounding = !0 }, n.init = function () { var e = this, t = e.values, n = e.tickCount; if (a(t, (function (e, n) { t[n] = e.toString() })), !e.ticks) { var r = t; if (n) { var i = o({ maxCount: n, data: t, isRounding: e.isRounding }); r = i.ticks } this.ticks = r } }, n.getText = function (t) { return -1 === this.values.indexOf(t) && s(t) && (t = this.values[Math.round(t)]), e.prototype.getText.call(this, t) }, n.translate = function (e) { var t = this.values.indexOf(e); return -1 === t && s(e) ? t = e : -1 === t && (t = NaN), t }, n.scale = function (e) { var t, n = this.rangeMin(), r = this.rangeMax(); return (c(e) || -1 !== this.values.indexOf(e)) && (e = this.translate(e)), t = this.values.length > 1 ? e / (this.values.length - 1) : e, n + t * (r - n) }, n.invert = function (e) { if (c(e)) return e; var t = this.rangeMin(), n = this.rangeMax(); e < t && (e = t), e > n && (e = n); var r = (e - t) / (n - t), i = Math.round(r * (this.values.length - 1)) % this.values.length; return i = i || 0, this.values[i] }, t }(i); i.Cat = l, e.exports = l }, function (e, t, n) { var r = n(3), i = 8, o = 4; function a(e) { var t = []; return r(e, (function (e) { t = t.concat(e) })), t } function s(e, t) { var n; for (n = t; n > 0; n--)if (e % n === 0) break; if (1 === n) for (n = t; n > 0; n--)if ((e - 1) % n === 0) break; return n } e.exports = function (e) { var t, n = {}, r = [], c = e.isRounding, l = a(e.data), u = l.length, h = e.maxCount || i; if (c ? (t = s(u - 1, h - 1) + 1, 2 === t ? t = h : t < h - o && (t = h - o)) : t = h, !c && u <= t + t / 2) r = [].concat(l); else { for (var f = parseInt(u / (t - 1), 10), d = l.map((function (e, t) { return t % f === 0 ? l.slice(t, t + f) : null })).filter((function (e) { return e })), p = 1, v = d.length; p < v && (c ? p * f < u - f : p < t - 1); p++)r.push(d[p][0]); if (l.length) { r.unshift(l[0]); var m = l[u - 1]; -1 === r.indexOf(m) && r.push(m) } } return n.categories = l, n.ticks = r, n } }, function (e, t, n) { var r; (function (i) { "use strict"; var o = {}, a = /d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g, s = /\d\d?/, c = /\d{3}/, l = /\d{4}/, u = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, h = /\[([^]*?)\]/gm, f = function () { }; function d(e, t) { for (var n = [], r = 0, i = e.length; r < i; r++)n.push(e[r].substr(0, t)); return n } function p(e) { return function (t, n, r) { var i = r[e].indexOf(n.charAt(0).toUpperCase() + n.substr(1).toLowerCase()); ~i && (t.month = i) } } function v(e, t) { e = String(e), t = t || 2; while (e.length < t) e = "0" + e; return e } var m = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], g = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], y = d(g, 3), b = d(m, 3); o.i18n = { dayNamesShort: b, dayNames: m, monthNamesShort: y, monthNames: g, amPm: ["am", "pm"], DoFn: function (e) { return e + ["th", "st", "nd", "rd"][e % 10 > 3 ? 0 : (e - e % 10 !== 10) * e % 10] } }; var x = { D: function (e) { return e.getDate() }, DD: function (e) { return v(e.getDate()) }, Do: function (e, t) { return t.DoFn(e.getDate()) }, d: function (e) { return e.getDay() }, dd: function (e) { return v(e.getDay()) }, ddd: function (e, t) { return t.dayNamesShort[e.getDay()] }, dddd: function (e, t) { return t.dayNames[e.getDay()] }, M: function (e) { return e.getMonth() + 1 }, MM: function (e) { return v(e.getMonth() + 1) }, MMM: function (e, t) { return t.monthNamesShort[e.getMonth()] }, MMMM: function (e, t) { return t.monthNames[e.getMonth()] }, YY: function (e) { return String(e.getFullYear()).substr(2) }, YYYY: function (e) { return v(e.getFullYear(), 4) }, h: function (e) { return e.getHours() % 12 || 12 }, hh: function (e) { return v(e.getHours() % 12 || 12) }, H: function (e) { return e.getHours() }, HH: function (e) { return v(e.getHours()) }, m: function (e) { return e.getMinutes() }, mm: function (e) { return v(e.getMinutes()) }, s: function (e) { return e.getSeconds() }, ss: function (e) { return v(e.getSeconds()) }, S: function (e) { return Math.round(e.getMilliseconds() / 100) }, SS: function (e) { return v(Math.round(e.getMilliseconds() / 10), 2) }, SSS: function (e) { return v(e.getMilliseconds(), 3) }, a: function (e, t) { return e.getHours() < 12 ? t.amPm[0] : t.amPm[1] }, A: function (e, t) { return e.getHours() < 12 ? t.amPm[0].toUpperCase() : t.amPm[1].toUpperCase() }, ZZ: function (e) { var t = e.getTimezoneOffset(); return (t > 0 ? "-" : "+") + v(100 * Math.floor(Math.abs(t) / 60) + Math.abs(t) % 60, 4) } }, w = { D: [s, function (e, t) { e.day = t }], Do: [new RegExp(s.source + u.source), function (e, t) { e.day = parseInt(t, 10) }], M: [s, function (e, t) { e.month = t - 1 }], YY: [s, function (e, t) { var n = new Date, r = +("" + n.getFullYear()).substr(0, 2); e.year = "" + (t > 68 ? r - 1 : r) + t }], h: [s, function (e, t) { e.hour = t }], m: [s, function (e, t) { e.minute = t }], s: [s, function (e, t) { e.second = t }], YYYY: [l, function (e, t) { e.year = t }], S: [/\d/, function (e, t) { e.millisecond = 100 * t }], SS: [/\d{2}/, function (e, t) { e.millisecond = 10 * t }], SSS: [c, function (e, t) { e.millisecond = t }], d: [s, f], ddd: [u, f], MMM: [u, p("monthNamesShort")], MMMM: [u, p("monthNames")], a: [u, function (e, t, n) { var r = t.toLowerCase(); r === n.amPm[0] ? e.isPm = !1 : r === n.amPm[1] && (e.isPm = !0) }], ZZ: [/([\+\-]\d\d:?\d\d|Z)/, function (e, t) { "Z" === t && (t = "+00:00"); var n, r = (t + "").match(/([\+\-]|\d\d)/gi); r && (n = 60 * r[1] + parseInt(r[2], 10), e.timezoneOffset = "+" === r[0] ? n : -n) }] }; w.dd = w.d, w.dddd = w.ddd, w.DD = w.D, w.mm = w.m, w.hh = w.H = w.HH = w.h, w.MM = w.M, w.ss = w.s, w.A = w.a, o.masks = { default: "ddd MMM DD YYYY HH:mm:ss", shortDate: "M/D/YY", mediumDate: "MMM D, YYYY", longDate: "MMMM D, YYYY", fullDate: "dddd, MMMM D, YYYY", shortTime: "HH:mm", mediumTime: "HH:mm:ss", longTime: "HH:mm:ss.SSS" }, o.format = function (e, t, n) { var r = n || o.i18n; if ("number" === typeof e && (e = new Date(e)), "[object Date]" !== Object.prototype.toString.call(e) || isNaN(e.getTime())) throw new Error("Invalid Date in fecha.format"); t = o.masks[t] || t || o.masks["default"]; var i = []; return t = t.replace(h, (function (e, t) { return i.push(t), "??" })), t = t.replace(a, (function (t) { return t in x ? x[t](e, r) : t.slice(1, t.length - 1) })), t.replace(/\?\?/g, (function () { return i.shift() })) }, o.parse = function (e, t, n) { var r = n || o.i18n; if ("string" !== typeof t) throw new Error("Invalid format in fecha.parse"); if (t = o.masks[t] || t, e.length > 1e3) return !1; var i = !0, s = {}; if (t.replace(a, (function (t) { if (w[t]) { var n = w[t], o = e.search(n[0]); ~o ? e.replace(n[0], (function (t) { return n[1](s, t, r), e = e.substr(o + t.length), t })) : i = !1 } return w[t] ? "" : t.slice(1, t.length - 1) })), !i) return !1; var c, l = new Date; return !0 === s.isPm && null != s.hour && 12 !== +s.hour ? s.hour = +s.hour + 12 : !1 === s.isPm && 12 === +s.hour && (s.hour = 0), null != s.timezoneOffset ? (s.minute = +(s.minute || 0) - +s.timezoneOffset, c = new Date(Date.UTC(s.year || l.getFullYear(), s.month || 0, s.day || 1, s.hour || 0, s.minute || 0, s.second || 0, s.millisecond || 0))) : c = new Date(s.year || l.getFullYear(), s.month || 0, s.day || 1, s.hour || 0, s.minute || 0, s.second || 0, s.millisecond || 0), c }, "undefined" !== typeof e && e.exports ? e.exports = o : (r = function () { return o }.call(t, n, t, e), void 0 === r || (e.exports = r)) })() }, function (e, t, n) { var r = n(14), i = function (e) { return r(e, "Date") }; e.exports = i }, function (e, t, n) { e.exports = { Canvas: n(214), Group: n(115), Shape: n(7), Arc: n(120), Circle: n(121), Dom: n(122), Ellipse: n(123), Fan: n(124), Image: n(125), Line: n(126), Marker: n(81), Path: n(127), Polygon: n(128), Polyline: n(129), Rect: n(130), Text: n(131), PathSegment: n(46), PathUtil: n(82), Event: n(78), EventEmitter: n(117), version: "3.4.10" } }, function (e, t) { var n = {}.toString, r = function (e) { return n.call(e).replace(/^\[object /, "").replace(/\]$/, "") }; e.exports = r }, function (e, t) { var n = Object.prototype, r = function (e) { var t = e && e.constructor, r = "function" === typeof t && t.prototype || n; return e === r }; e.exports = r }, function (e, t, n) { var r = n(1), i = n(116), o = n(225), a = {}, s = "_INDEX", c = ["zIndex", "capture", "visible"]; function l(e) { return function (t, n) { var r = e(t, n); return 0 === r ? t[s] - n[s] : r } } function u(e, t, n) { for (var r, i = e.length - 1; i >= 0; i--) { var o = e[i]; if (o._cfg.visible && o._cfg.capture && (o.isGroup ? r = o.getShape(t, n) : o.isHit(t, n) && (r = o)), r) break } return r } function h(e) { for (var t = [], n = 0; n < e.length; n++)t.push(e[n]); return t } var f = function e(t) { e.superclass.constructor.call(this, t), this.set("children", []), this.set("tobeRemoved", []), this._beforeRenderUI(), this._renderUI(), this._bindUI() }; function d(e) { if (!e._cfg && e !== f) { var t = e.superclass.constructor; t && !t._cfg && d(t), e._cfg = {}, r.merge(e._cfg, t._cfg), r.merge(e._cfg, e.CFG) } } r.extend(f, i), r.augment(f, { isGroup: !0, type: "group", canFill: !0, canStroke: !0, getDefaultCfg: function () { return d(this.constructor), r.merge({}, this.constructor._cfg) }, _beforeRenderUI: function () { }, _renderUI: function () { }, _bindUI: function () { }, addShape: function (e, t) { var n = this.get("canvas"); t = t || {}; var i = a[e]; if (i || (i = r.upperFirst(e), a[e] = i), t.attrs && n) { var s = t.attrs; if ("text" === e) { var c = n.get("fontFamily"); c && (s.fontFamily = s.fontFamily ? s.fontFamily : c) } } t.canvas = n, t.type = e; var l = new o[i](t); return this.add(l), l }, addGroup: function (e, t) { var n, i = this.get("canvas"); if (t = r.merge({}, t), r.isFunction(e)) t ? (t.canvas = i, t.parent = this, n = new e(t)) : n = new e({ canvas: i, parent: this }), this.add(n); else if (r.isObject(e)) e.canvas = i, n = new f(e), this.add(n); else { if (void 0 !== e) return !1; n = new f, this.add(n) } return n }, renderBack: function (e, t) { var n = this.get("backShape"), i = this.getBBox(); return r.merge(t, { x: i.minX - e[3], y: i.minY - e[0], width: i.width + e[1] + e[3], height: i.height + e[0] + e[2] }), n ? n.attr(t) : n = this.addShape("rect", { zIndex: -1, attrs: t }), this.set("backShape", n), this.sort(), n }, removeChild: function (e, t) { if (arguments.length >= 2) this.contain(e) && e.remove(t); else { if (1 === arguments.length) { if (!r.isBoolean(e)) return this.contain(e) && e.remove(!0), this; t = e } 0 === arguments.length && (t = !0), f.superclass.remove.call(this, t) } return this }, add: function (e) { var t = this, n = t.get("children"); if (r.isArray(e)) r.each(e, (function (e) { var n = e.get("parent"); n && n.removeChild(e, !1), t._setCfgProperty(e) })), t._cfg.children = n.concat(e); else { var i = e, o = i.get("parent"); o && o.removeChild(i, !1), t._setCfgProperty(i), n.push(i) } return t }, _setCfgProperty: function (e) { var t = this._cfg; e.set("parent", this), e.set("canvas", t.canvas), t.timeline && e.set("timeline", t.timeline) }, contain: function (e) { var t = this.get("children"); return t.indexOf(e) > -1 }, getChildByIndex: function (e) { var t = this.get("children"); return t[e] }, getFirst: function () { return this.getChildByIndex(0) }, getLast: function () { var e = this.get("children").length - 1; return this.getChildByIndex(e) }, getBBox: function () { var e = this, t = 1 / 0, n = -1 / 0, i = 1 / 0, o = -1 / 0, a = e.get("children"); a.length > 0 ? r.each(a, (function (e) { if (e.get("visible")) { if (e.isGroup && 0 === e.get("children").length) return; var r = e.getBBox(); if (!r) return !0; var a = [r.minX, r.minY, 1], s = [r.minX, r.maxY, 1], c = [r.maxX, r.minY, 1], l = [r.maxX, r.maxY, 1]; e.apply(a), e.apply(s), e.apply(c), e.apply(l); var u = Math.min(a[0], s[0], c[0], l[0]), h = Math.max(a[0], s[0], c[0], l[0]), f = Math.min(a[1], s[1], c[1], l[1]), d = Math.max(a[1], s[1], c[1], l[1]); u < t && (t = u), h > n && (n = h), f < i && (i = f), d > o && (o = d) } })) : (t = 0, n = 0, i = 0, o = 0); var s = { minX: t, minY: i, maxX: n, maxY: o }; return s.x = s.minX, s.y = s.minY, s.width = s.maxX - s.minX, s.height = s.maxY - s.minY, s }, getCount: function () { return this.get("children").length }, sort: function () { var e = this.get("children"); return r.each(e, (function (e, t) { return e[s] = t, e })), e.sort(l((function (e, t) { return e.get("zIndex") - t.get("zIndex") }))), this }, findById: function (e) { return this.find((function (t) { return t.get("id") === e })) }, find: function (e) { if (r.isString(e)) return this.findById(e); var t = this.get("children"), n = null; return r.each(t, (function (t) { if (e(t) ? n = t : t.find && (n = t.find(e)), n) return !1 })), n }, findAll: function (e) { var t = this.get("children"), n = [], i = []; return r.each(t, (function (t) { e(t) && n.push(t), t.findAllBy && (i = t.findAllBy(e), n = n.concat(i)) })), n }, findBy: function (e) { var t = this.get("children"), n = null; return r.each(t, (function (t) { if (e(t) ? n = t : t.findBy && (n = t.findBy(e)), n) return !1 })), n }, findAllBy: function (e) { var t = this.get("children"), n = [], i = []; return r.each(t, (function (t) { e(t) && n.push(t), t.findAllBy && (i = t.findAllBy(e), n = n.concat(i)) })), n }, getShape: function (e, t) { var n, r = this, i = r._attrs.clip, o = r._cfg.children; if (i) { var a = [e, t, 1]; i.invert(a, r.get("canvas")), i.isPointInPath(a[0], a[1]) && (n = u(o, e, t)) } else n = u(o, e, t); return n }, clearTotalMatrix: function () { var e = this.get("totalMatrix"); if (e) { this.setSilent("totalMatrix", null); for (var t = this._cfg.children, n = 0; n < t.length; n++) { var r = t[n]; r.clearTotalMatrix() } } }, clear: function (e) { if (!this.get("destroyed")) { for (var t = this._cfg.children, n = t.length - 1; n >= 0; n--)t[n].remove(!0, e); return this._cfg.children = [], this } }, destroy: function () { this.get("destroyed") || (this.clear(), f.superclass.destroy.call(this)) }, clone: function () { var e = this, t = e._cfg.children, n = e._attrs, i = {}; r.each(n, (function (e, t) { i[t] = "matrix" === t ? h(n[t]) : n[t] })); var o = new f({ attrs: i, canvas: e.get("canvas") }); return r.each(t, (function (e) { o.add(e.clone()) })), r.each(c, (function (t) { o._cfg[t] = e._cfg[t] })), o } }), e.exports = f }, function (e, t, n) { var r = n(1), i = n(221), o = n(222), a = n(223), s = n(224), c = function (e) { this._cfg = { zIndex: 0, capture: !0, visible: !0, destroyed: !1 }, r.assign(this._cfg, this.getDefaultCfg(), e), this.initAttrs(this._cfg.attrs), this._cfg.attrs = {}, this.initTransform(), this.init() }; c.CFG = { id: null, zIndex: 0, canvas: null, parent: null, capture: !0, context: null, visible: !0, destroyed: !1 }, r.augment(c, i, o, s, a, { init: function () { this.setSilent("animable", !0), this.setSilent("animating", !1) }, getParent: function () { return this._cfg.parent }, getDefaultCfg: function () { return {} }, set: function (e, t) { return "zIndex" === e && this._beforeSetZIndex && this._beforeSetZIndex(t), "loading" === e && this._beforeSetLoading && this._beforeSetLoading(t), this._cfg[e] = t, this }, setSilent: function (e, t) { this._cfg[e] = t }, get: function (e) { return this._cfg[e] }, show: function () { return this._cfg.visible = !0, this }, hide: function () { return this._cfg.visible = !1, this }, remove: function (e, t) { var n = this._cfg, i = n.parent, o = n.el; return i && r.remove(i.get("children"), this), o && (t ? i && i._cfg.tobeRemoved.push(o) : o.parentNode.removeChild(o)), (e || void 0 === e) && this.destroy(), this }, destroy: function () { var e = this.get("destroyed"); e || (this._attrs = null, this.removeEvent(), this._cfg = { destroyed: !0 }) }, toFront: function () { var e = this._cfg, t = e.parent; if (t) { var n = t._cfg.children, r = e.el, i = n.indexOf(this); n.splice(i, 1), n.push(this), r && (r.parentNode.removeChild(r), e.el = null) } }, toBack: function () { var e = this._cfg, t = e.parent; if (t) { var n = t._cfg.children, r = e.el, i = n.indexOf(this); if (n.splice(i, 1), n.unshift(this), r) { var o = r.parentNode; o.removeChild(r), o.insertBefore(r, o.firstChild) } } }, _beforeSetZIndex: function (e) { var t = this._cfg.parent; this._cfg.zIndex = e, r.isNil(t) || t.sort(); var n = this._cfg.el; if (n) { var i = t._cfg.children, o = i.indexOf(this), a = n.parentNode; a.removeChild(n), o === i.length - 1 ? a.appendChild(n) : a.insertBefore(n, a.childNodes[o]) } return e }, _setAttrs: function (e) { return this.attr(e), e }, setZIndex: function (e) { return this._cfg.zIndex = e, this._beforeSetZIndex(e) }, clone: function () { return r.clone(this) }, getBBox: function () { } }), e.exports = c }, function (e, t, n) { var r = n(59), i = Array.prototype.slice; function o(e, t) { var n = e.length; while (n--) if (e[n].callback === t) return n; return -1 } var a = function () { }; r.augment(a, { on: function (e, t, n) { var i = this; if (!r.isFunction(t)) throw new TypeError("listener should be a function"); return i._cfg._events || (i._cfg._events = {}), i._cfg._events[e] || (i._cfg._events[e] = []), i._cfg._events[e].push({ callback: t, one: n }), this }, one: function (e, t) { return this.on(e, t, !0), this }, emit: function (e) { if (!this.get("destroyed") && this._cfg._events && !r.isEmpty(this._cfg._events)) { var t = this._cfg._events[e]; if (!r.isEmpty(t)) for (var n = arguments, o = i.call(n, 1), a = t.length, s = 0; s < a;)t[s] && (t[s].callback.apply(this, o), t[s] && t[s].one ? (t.splice(s, 1), a--) : s++) } }, trigger: function () { this.emit.apply(this, arguments) }, off: function (e, t) { var n = this._cfg._events; if (n && !r.isEmpty(n)) { if (0 === arguments.length) return this._cfg._events = {}, this; if (n[e]) { var i = o(n[e], t); i >= 0 && n[e].splice(i, 1), 0 === n[e].length && delete n[e] } } }, removeEvent: function (e) { return "undefined" === typeof e ? this._cfg._events = {} : delete this._cfg._events[e], this }, _getEvents: function () { return this._cfg._events || {} } }), e.exports = a }, function (e, t, n) { var r = n(1), i = r.vec2; function o(e, t, n, r) { var i = 1 - r; return i * (i * e + 2 * r * t) + r * r * n } function a(e, t, n, r, a, s, c, l, u) { var h, f, d, p, v, m, g, y = .005, b = 1 / 0, x = 1e-4, w = [c, l]; for (v = 0; v < 1; v += .05)d = [o(e, n, a, v), o(t, r, s, v)], f = i.squaredDistance(w, d), f < b && (h = v, b = f); for (b = 1 / 0, g = 0; g < 32; g++) { if (y < x) break; var _ = h - y, C = h + y; d = [o(e, n, a, _), o(t, r, s, _)], f = i.squaredDistance(w, d), _ >= 0 && f < b ? (h = _, b = f) : (p = [o(e, n, a, C), o(t, r, s, C)], m = i.squaredDistance(w, p), C <= 1 && m < b ? (h = C, b = m) : y *= .5) } return u && (u.x = o(e, n, a, h), u.y = o(t, r, s, h)), Math.sqrt(b) } function s(e, t, n) { var i = e + n - 2 * t; if (r.isNumberEqual(i, 0)) return [.5]; var o = (e - t) / i; return o <= 1 && o >= 0 ? [o] : [] } e.exports = { at: o, projectPoint: function (e, t, n, r, i, o, s, c) { var l = {}; return a(e, t, n, r, i, o, s, c, l), l }, pointDistance: a, extrema: s } }, function (e, t) { e.exports = { xAt: function (e, t, n, r, i) { return t * Math.cos(e) * Math.cos(i) - n * Math.sin(e) * Math.sin(i) + r }, yAt: function (e, t, n, r, i) { return t * Math.sin(e) * Math.cos(i) + n * Math.cos(e) * Math.sin(i) + r }, xExtrema: function (e, t, n) { return Math.atan(-n / t * Math.tan(e)) }, yExtrema: function (e, t, n) { return Math.atan(n / (t * Math.tan(e))) } } }, function (e, t, n) { var r = n(1), i = n(7), o = n(44), a = n(45); function s(e, t, n) { return e + t * Math.cos(n) } function c(e, t, n) { return e + t * Math.sin(n) } var l = function e(t) { e.superclass.constructor.call(this, t) }; l.ATTRS = { x: 0, y: 0, r: 0, startAngle: 0, endAngle: 0, clockwise: !1, lineWidth: 1, startArrow: !1, endArrow: !1 }, r.extend(l, i), r.augment(l, { canStroke: !0, type: "arc", getDefaultAttrs: function () { return { x: 0, y: 0, r: 0, startAngle: 0, endAngle: 0, clockwise: !1, lineWidth: 1, startArrow: !1, endArrow: !1 } }, calculateBox: function () { var e = this._attrs, t = e.x, n = e.y, r = e.r, i = e.startAngle, a = e.endAngle, s = e.clockwise, c = this.getHitLineWidth(), l = c / 2, u = o.box(t, n, r, i, a, s); return u.minX -= l, u.minY -= l, u.maxX += l, u.maxY += l, u }, getStartTangent: function () { var e = this._attrs, t = e.x, n = e.y, r = e.startAngle, i = e.r, o = e.clockwise, a = Math.PI / 180; o && (a *= -1); var l = [], u = s(t, i, r + a), h = c(n, i, r + a), f = s(t, i, r), d = c(n, i, r); return l.push([u, h]), l.push([f, d]), l }, getEndTangent: function () { var e = this._attrs, t = e.x, n = e.y, r = e.endAngle, i = e.r, o = e.clockwise, a = Math.PI / 180, l = []; o && (a *= -1); var u = s(t, i, r + a), h = c(n, i, r + a), f = s(t, i, r), d = c(n, i, r); return l.push([f, d]), l.push([u, h]), l }, createPath: function (e) { var t = this._attrs, n = t.x, r = t.y, i = t.r, o = t.startAngle, a = t.endAngle, s = t.clockwise; e = e || self.get("context"), e.beginPath(), e.arc(n, r, i, o, a, s) }, afterPath: function (e) { var t = this._attrs; if (e = e || this.get("context"), t.startArrow) { var n = this.getStartTangent(); a.addStartArrow(e, t, n[0][0], n[0][1], n[1][0], n[1][1]) } if (t.endArrow) { var r = this.getEndTangent(); a.addEndArrow(e, t, r[0][0], r[0][1], r[1][0], r[1][1]) } } }), e.exports = l }, function (e, t, n) { var r = n(1), i = n(7), o = function e(t) { e.superclass.constructor.call(this, t) }; o.ATTRS = { x: 0, y: 0, r: 0, lineWidth: 1 }, r.extend(o, i), r.augment(o, { canFill: !0, canStroke: !0, type: "circle", getDefaultAttrs: function () { return { lineWidth: 1 } }, calculateBox: function () { var e = this._attrs, t = e.x, n = e.y, r = e.r, i = this.getHitLineWidth(), o = i / 2 + r; return { minX: t - o, minY: n - o, maxX: t + o, maxY: n + o } }, createPath: function (e) { var t = this._attrs, n = t.x, r = t.y, i = t.r; e.beginPath(), e.arc(n, r, i, 0, 2 * Math.PI, !1), e.closePath() } }), e.exports = o }, function (e, t, n) { var r = n(1), i = n(7), o = function e(t) { e.superclass.constructor.call(this, t) }; r.extend(o, i), r.augment(o, { canFill: !0, canStroke: !0, type: "dom", calculateBox: function () { var e = this, t = e._attrs, n = t.x, r = t.y, i = t.width, o = t.height, a = this.getHitLineWidth(), s = a / 2; return { minX: n - s, minY: r - s, maxX: n + i + s, maxY: r + o + s } } }), e.exports = o }, function (e, t, n) { var r = n(1), i = n(7), o = function e(t) { e.superclass.constructor.call(this, t) }; o.ATTRS = { x: 0, y: 0, rx: 1, ry: 1, lineWidth: 1 }, r.extend(o, i), r.augment(o, { canFill: !0, canStroke: !0, type: "ellipse", getDefaultAttrs: function () { return { lineWidth: 1 } }, calculateBox: function () { var e = this._attrs, t = e.x, n = e.y, r = e.rx, i = e.ry, o = this.getHitLineWidth(), a = r + o / 2, s = i + o / 2; return { minX: t - a, minY: n - s, maxX: t + a, maxY: n + s } }, createPath: function (e) { var t = this._attrs, n = t.x, i = t.y, o = t.rx, a = t.ry; e = e || self.get("context"); var s = o > a ? o : a, c = o > a ? 1 : o / a, l = o > a ? a / o : 1, u = [1, 0, 0, 0, 1, 0, 0, 0, 1]; r.mat3.scale(u, u, [c, l]), r.mat3.translate(u, u, [n, i]), e.beginPath(), e.save(), e.transform(u[0], u[1], u[3], u[4], u[6], u[7]), e.arc(0, 0, s, 0, 2 * Math.PI), e.restore(), e.closePath() } }), e.exports = o }, function (e, t, n) { var r = n(1), i = n(7), o = n(44), a = function e(t) { e.superclass.constructor.call(this, t) }; a.ATTRS = { x: 0, y: 0, rs: 0, re: 0, startAngle: 0, endAngle: 0, clockwise: !1, lineWidth: 1 }, r.extend(a, i), r.augment(a, { canFill: !0, canStroke: !0, type: "fan", getDefaultAttrs: function () { return { clockwise: !1, lineWidth: 1, rs: 0, re: 0 } }, calculateBox: function () { var e = this, t = e._attrs, n = t.x, r = t.y, i = t.rs, a = t.re, s = t.startAngle, c = t.endAngle, l = t.clockwise, u = this.getHitLineWidth(), h = o.box(n, r, i, s, c, l), f = o.box(n, r, a, s, c, l), d = Math.min(h.minX, f.minX), p = Math.min(h.minY, f.minY), v = Math.max(h.maxX, f.maxX), m = Math.max(h.maxY, f.maxY), g = u / 2; return { minX: d - g, minY: p - g, maxX: v + g, maxY: m + g } }, createPath: function (e) { var t = this._attrs, n = t.x, r = t.y, i = t.rs, o = t.re, a = t.startAngle, s = t.endAngle, c = t.clockwise, l = { x: Math.cos(a) * i + n, y: Math.sin(a) * i + r }, u = { x: Math.cos(a) * o + n, y: Math.sin(a) * o + r }, h = { x: Math.cos(s) * i + n, y: Math.sin(s) * i + r }; e = e || self.get("context"), e.beginPath(), e.moveTo(l.x, l.y), e.lineTo(u.x, u.y), e.arc(n, r, o, a, s, c), e.lineTo(h.x, h.y), e.arc(n, r, i, s, a, !c), e.closePath() } }), e.exports = a }, function (e, t, n) { var r = n(1), i = n(7), o = function e(t) { e.superclass.constructor.call(this, t) }; o.ATTRS = { x: 0, y: 0, img: void 0, width: 0, height: 0, sx: null, sy: null, swidth: null, sheight: null }, r.extend(o, i), r.augment(o, { type: "image", isHitBox: function () { return !1 }, calculateBox: function () { var e = this._attrs; this._cfg.attrs && this._cfg.attrs.img === e.img || this._setAttrImg(); var t = e.x, n = e.y, r = e.width, i = e.height; return { minX: t, minY: n, maxX: t + r, maxY: n + i } }, _beforeSetLoading: function (e) { var t = this.get("canvas"); return !1 === e && !0 === this.get("toDraw") && (this._cfg.loading = !1, t.draw()), e }, _setAttrImg: function () { var e = this, t = e._attrs, n = t.img; if (!r.isString(n)) return n instanceof Image ? (t.width || e.attr("width", n.width), t.height || e.attr("height", n.height), n) : n instanceof HTMLElement && r.isString(n.nodeName) && "CANVAS" === n.nodeName.toUpperCase() ? (t.width || e.attr("width", Number(n.getAttribute("width"))), t.height || e.attr("height", Number(n.getAttribute("height"))), n) : n instanceof ImageData ? (t.width || e.attr("width", n.width), t.height || e.attr("height", n.height), n) : null; var i = new Image; i.onload = function () { if (e.get("destroyed")) return !1; e.attr("imgSrc", n), e.attr("img", i); var t = e.get("callback"); t && t.call(e), e.set("loading", !1) }, i.src = n, i.crossOrigin = "Anonymous", e.set("loading", !0) }, drawInner: function (e) { this._cfg.hasUpdate && this._setAttrImg(), this.get("loading") ? this.set("toDraw", !0) : (this._drawImage(e), this._cfg.hasUpdate = !1) }, _drawImage: function (e) { var t = this._attrs, n = t.x, i = t.y, o = t.img, a = t.width, s = t.height, c = t.sx, l = t.sy, u = t.swidth, h = t.sheight; this.set("toDraw", !1); var f = o; if (f instanceof ImageData && (f = new Image, f.src = o), f instanceof Image || f instanceof HTMLElement && r.isString(f.nodeName) && "CANVAS" === f.nodeName.toUpperCase()) { if (r.isNil(c) || r.isNil(l) || r.isNil(u) || r.isNil(h)) return void e.drawImage(f, n, i, a, s); if (!r.isNil(c) && !r.isNil(l) && !r.isNil(u) && !r.isNil(h)) return void e.drawImage(f, c, l, u, h, n, i, a, s) } } }), e.exports = o }, function (e, t, n) { var r = n(1), i = n(7), o = n(45), a = n(43), s = function e(t) { e.superclass.constructor.call(this, t) }; s.ATTRS = { x1: 0, y1: 0, x2: 0, y2: 0, lineWidth: 1, startArrow: !1, endArrow: !1 }, r.extend(s, i), r.augment(s, { canStroke: !0, type: "line", getDefaultAttrs: function () { return { lineWidth: 1, startArrow: !1, endArrow: !1 } }, calculateBox: function () { var e = this._attrs, t = e.x1, n = e.y1, r = e.x2, i = e.y2, o = this.getHitLineWidth(); return a.box(t, n, r, i, o) }, createPath: function (e) { var t = this, n = this._attrs, r = n.x1, i = n.y1, a = n.x2, s = n.y2; if (n.startArrow && n.startArrow.d) { var c = o.getShortenOffset(r, i, a, s, n.startArrow.d); r += c.dx, i += c.dy } if (n.endArrow && n.endArrow.d) { var l = o.getShortenOffset(r, i, a, s, n.endArrow.d); a -= l.dx, s -= l.dy } e = e || t.get("context"), e.beginPath(), e.moveTo(r, i), e.lineTo(a, s) }, afterPath: function (e) { var t = this, n = t._attrs, r = n.x1, i = n.y1, a = n.x2, s = n.y2; e = e || t.get("context"), n.startArrow && o.addStartArrow(e, n, a, s, r, i), n.endArrow && o.addEndArrow(e, n, r, i, a, s) }, getPoint: function (e) { var t = this._attrs; return { x: a.at(t.x1, t.x2, e), y: a.at(t.y1, t.y2, e) } } }), e.exports = s }, function (e, t, n) { var r = n(1), i = n(7), o = n(46), a = n(31), s = n(45), c = n(82), l = n(80), u = function e(t) { e.superclass.constructor.call(this, t) }; u.ATTRS = { path: null, lineWidth: 1, startArrow: !1, endArrow: !1 }, r.extend(u, i), r.augment(u, { canFill: !0, canStroke: !0, type: "path", getDefaultAttrs: function () { return { lineWidth: 1, startArrow: !1, endArrow: !1 } }, _afterSetAttrPath: function (e) { var t = this; if (r.isNil(e)) return t.setSilent("segments", null), void t.setSilent("box", void 0); var n, i = a.parsePath(e), s = []; if (r.isArray(i) && 0 !== i.length && ("M" === i[0][0] || "m" === i[0][0])) { for (var c = i.length, l = 0; l < i.length; l++) { var u = i[l]; n = new o(u, n, l === c - 1), s.push(n) } t.setSilent("segments", s), t.setSilent("tCache", null), t.setSilent("totalLength", null), t.setSilent("box", null) } }, calculateBox: function () { var e = this, t = e.get("segments"); if (!t) return null; var n = this.getHitLineWidth(), i = 1 / 0, o = -1 / 0, a = 1 / 0, s = -1 / 0; return r.each(t, (function (e) { e.getBBox(n); var t = e.box; t && (t.minX < i && (i = t.minX), t.maxX > o && (o = t.maxX), t.minY < a && (a = t.minY), t.maxY > s && (s = t.maxY)) })), i === 1 / 0 || a === 1 / 0 ? { minX: 0, minY: 0, maxX: 0, maxY: 0 } : { minX: i, minY: a, maxX: o, maxY: s } }, _setTcache: function () { var e, t, n, i, o = 0, a = 0, s = [], c = this._cfg.curve; c && (r.each(c, (function (e, t) { n = c[t + 1], i = e.length, n && (o += l.len(e[i - 2], e[i - 1], n[1], n[2], n[3], n[4], n[5], n[6])) })), this._cfg.totalLength = o, 0 !== o ? (r.each(c, (function (r, u) { n = c[u + 1], i = r.length, n && (e = [], e[0] = a / o, t = l.len(r[i - 2], r[i - 1], n[1], n[2], n[3], n[4], n[5], n[6]), a += t, e[1] = a / o, s.push(e)) })), this._cfg.tCache = s) : this._cfg.tCache = []) }, getTotalLength: function () { var e = this.get("totalLength"); return r.isNil(e) ? (this._calculateCurve(), this._setTcache(), this.get("totalLength")) : e }, _calculateCurve: function () { var e = this, t = e._attrs, n = t.path; this._cfg.curve = c.pathTocurve(n) }, getStartTangent: function () { var e, t, n, i, o = this.get("segments"); if (o.length > 1) if (e = o[0].endPoint, t = o[1].endPoint, n = o[1].startTangent, i = [], r.isFunction(n)) { var a = n(); i.push([e.x - a[0], e.y - a[1]]), i.push([e.x, e.y]) } else i.push([t.x, t.y]), i.push([e.x, e.y]); return i }, getEndTangent: function () { var e, t, n, i, o = this.get("segments"), a = o.length; if (a > 1) if (e = o[a - 2].endPoint, t = o[a - 1].endPoint, n = o[a - 1].endTangent, i = [], r.isFunction(n)) { var s = n(); i.push([t.x - s[0], t.y - s[1]]), i.push([t.x, t.y]) } else i.push([e.x, e.y]), i.push([t.x, t.y]); return i }, getPoint: function (e) { var t, n, i = this._cfg.tCache; i || (this._calculateCurve(), this._setTcache(), i = this._cfg.tCache); var o = this._cfg.curve; if (!i || 0 === i.length) return o ? { x: o[0][1], y: o[0][2] } : null; r.each(i, (function (r, i) { e >= r[0] && e <= r[1] && (t = (e - r[0]) / (r[1] - r[0]), n = i) })); var a = o[n]; if (r.isNil(a) || r.isNil(n)) return null; var s = a.length, c = o[n + 1]; return { x: l.at(a[s - 2], c[1], c[3], c[5], 1 - t), y: l.at(a[s - 1], c[2], c[4], c[6], 1 - t) } }, createPath: function (e) { var t = this, n = t._attrs, i = t.get("segments"); if (r.isArray(i)) { var o = i.length; if (0 !== o) { if (e = e || t.get("context"), e.beginPath(), n.startArrow && n.startArrow.d) { var a = t.getStartTangent(), c = s.getShortenOffset(a[0][0], a[0][1], a[1][0], a[1][1], n.startArrow.d); i[0].shortenDraw(e, c.dx, c.dy) } else i[0].draw(e); for (var l = 1; l < o - 2; l++)i[l].draw(e); if (n.endArrow && n.endArrow.d) { var u = t.getEndTangent(), h = s.getShortenOffset(u[0][0], u[0][1], u[1][0], u[1][1], n.endArrow.d), f = i[o - 1]; "Z" === f.command.toUpperCase() ? (i[o - 2] && i[o - 2].shortenDraw(e, h.dx, h.dy), f.draw(e)) : (o > 2 && i[o - 2].draw(e), f.shortenDraw(e, h.dx, h.dy)) } else i[o - 2] && i[o - 2].draw(e), i[o - 1].draw(e) } } }, afterPath: function (e) { var t = this, n = t._attrs, i = t.get("segments"), o = n.path; if (e = e || t.get("context"), r.isArray(i) && 1 !== i.length && (n.startArrow || n.endArrow) && "z" !== o[o.length - 1] && "Z" !== o[o.length - 1] && !n.fill) { var a = t.getStartTangent(); s.addStartArrow(e, n, a[0][0], a[0][1], a[1][0], a[1][1]); var c = t.getEndTangent(); s.addEndArrow(e, n, c[0][0], c[0][1], c[1][0], c[1][1]) } } }), e.exports = u }, function (e, t, n) { var r = n(1), i = n(7), o = function e(t) { e.superclass.constructor.call(this, t) }; o.ATTRS = { points: null, lineWidth: 1 }, r.extend(o, i), r.augment(o, { canFill: !0, canStroke: !0, type: "polygon", getDefaultAttrs: function () { return { lineWidth: 1 } }, calculateBox: function () { var e = this, t = e._attrs, n = t.points, i = this.getHitLineWidth(); if (!n || 0 === n.length) return null; var o = 1 / 0, a = 1 / 0, s = -1 / 0, c = -1 / 0; r.each(n, (function (e) { var t = e[0], n = e[1]; t < o && (o = t), t > s && (s = t), n < a && (a = n), n > c && (c = n) })); var l = i / 2; return { minX: o - l, minY: a - l, maxX: s + l, maxY: c + l } }, createPath: function (e) { var t = this, n = t._attrs, i = n.points; i.length < 2 || (e = e || t.get("context"), e.beginPath(), r.each(i, (function (t, n) { 0 === n ? e.moveTo(t[0], t[1]) : e.lineTo(t[0], t[1]) })), e.closePath()) } }), e.exports = o }, function (e, t, n) { var r = n(1), i = n(7), o = n(45), a = n(43), s = function e(t) { e.superclass.constructor.call(this, t) }; s.ATTRS = { points: null, lineWidth: 1, startArrow: !1, endArrow: !1, tCache: null }, r.extend(s, i), r.augment(s, { canStroke: !0, type: "polyline", tCache: null, getDefaultAttrs: function () { return { lineWidth: 1, startArrow: !1, endArrow: !1 } }, calculateBox: function () { var e = this, t = e._attrs, n = this.getHitLineWidth(), i = t.points; if (!i || 0 === i.length) return null; var o = 1 / 0, a = 1 / 0, s = -1 / 0, c = -1 / 0; r.each(i, (function (e) { var t = e[0], n = e[1]; t < o && (o = t), t > s && (s = t), n < a && (a = n), n > c && (c = n) })); var l = n / 2; return { minX: o - l, minY: a - l, maxX: s + l, maxY: c + l } }, _setTcache: function () { var e, t, n = this, i = n._attrs, o = i.points, s = 0, c = 0, l = []; o && 0 !== o.length && (r.each(o, (function (e, t) { o[t + 1] && (s += a.len(e[0], e[1], o[t + 1][0], o[t + 1][1])) })), s <= 0 || (r.each(o, (function (n, r) { o[r + 1] && (e = [], e[0] = c / s, t = a.len(n[0], n[1], o[r + 1][0], o[r + 1][1]), c += t, e[1] = c / s, l.push(e)) })), this.tCache = l)) }, createPath: function (e) { var t, n = this, r = n._attrs, i = r.points; if (!(i.length < 2)) { var a = i.length - 1, s = i[0][0], c = i[0][1], l = i[a][0], u = i[a][1]; if (r.startArrow && r.startArrow.d) { var h = o.getShortenOffset(i[0][0], i[0][1], i[1][0], i[1][1], r.startArrow.d); s += h.dx, c += h.dy } if (r.endArrow && r.endArrow.d) { var f = o.getShortenOffset(i[a - 1][0], i[a - 1][1], i[a][0], i[a][1], r.endArrow.d); l -= f.dx, u -= f.dy } for (e = e || n.get("context"), e.beginPath(), e.moveTo(s, c), t = 1; t < a; t++)e.lineTo(i[t][0], i[t][1]); e.lineTo(l, u) } }, getStartTangent: function () { var e = this.__attrs.points, t = []; return t.push([e[1][0], e[1][1]]), t.push([e[0][0], e[0][1]]), t }, getEndTangent: function () { var e = this.__attrs.points, t = e.length - 1, n = []; return n.push([e[t - 1][0], e[t - 1][1]]), n.push([e[t][0], e[t][1]]), n }, afterPath: function (e) { var t = this, n = t._attrs, r = n.points, i = r.length - 1; e = e || t.get("context"), n.startArrow && o.addStartArrow(e, n, r[1][0], r[1][1], r[0][0], r[0][1]), n.endArrow && o.addEndArrow(e, n, r[i - 1][0], r[i - 1][1], r[i][0], r[i][1]) }, getPoint: function (e) { var t, n, i = this._attrs, o = i.points, s = this.tCache; return s || (this._setTcache(), s = this.tCache), r.each(s, (function (r, i) { e >= r[0] && e <= r[1] && (t = (e - r[0]) / (r[1] - r[0]), n = i) })), { x: a.at(o[n][0], o[n + 1][0], t), y: a.at(o[n][1], o[n + 1][1], t) } } }), e.exports = s }, function (e, t, n) { var r = n(1), i = n(31), o = i.parseRadius, a = n(7), s = function e(t) { e.superclass.constructor.call(this, t) }; s.ATTRS = { x: 0, y: 0, width: 0, height: 0, radius: 0, lineWidth: 1 }, r.extend(s, a), r.augment(s, { canFill: !0, canStroke: !0, type: "rect", getDefaultAttrs: function () { return { lineWidth: 1, radius: 0 } }, calculateBox: function () { var e = this, t = e._attrs, n = t.x, r = t.y, i = t.width, o = t.height, a = this.getHitLineWidth(), s = a / 2; return { minX: n - s, minY: r - s, maxX: n + i + s, maxY: r + o + s } }, createPath: function (e) { var t = this, n = t._attrs, r = n.x, i = n.y, a = n.width, s = n.height, c = n.radius; if (e = e || t.get("context"), e.beginPath(), 0 === c) e.rect(r, i, a, s); else { var l = o(c); e.moveTo(r + l.r1, i), e.lineTo(r + a - l.r2, i), 0 !== l.r2 && e.arc(r + a - l.r2, i + l.r2, l.r2, -Math.PI / 2, 0), e.lineTo(r + a, i + s - l.r3), 0 !== l.r3 && e.arc(r + a - l.r3, i + s - l.r3, l.r3, 0, Math.PI / 2), e.lineTo(r + l.r4, i + s), 0 !== l.r4 && e.arc(r + l.r4, i + s - l.r4, l.r4, Math.PI / 2, Math.PI), e.lineTo(r, i + l.r1), 0 !== l.r1 && e.arc(r + l.r1, i + l.r1, l.r1, Math.PI, 1.5 * Math.PI), e.closePath() } } }), e.exports = s }, function (e, t, n) { var r = n(1), i = n(7), o = function e(t) { e.superclass.constructor.call(this, t) }; o.ATTRS = { x: 0, y: 0, text: null, fontSize: 12, fontFamily: "sans-serif", fontStyle: "normal", fontWeight: "normal", fontVariant: "normal", textAlign: "start", textBaseline: "bottom", lineHeight: null, textArr: null }, r.extend(o, i), r.augment(o, { canFill: !0, canStroke: !0, type: "text", getDefaultAttrs: function () { return { lineWidth: 1, lineCount: 1, fontSize: 12, fontFamily: "sans-serif", fontStyle: "normal", fontWeight: "normal", fontVariant: "normal", textAlign: "start", textBaseline: "bottom" } }, initTransform: function () { var e = this._attrs.fontSize; e && +e < 12 && this.transform([["t", -1 * this._attrs.x, -1 * this._attrs.y], ["s", +e / 12, +e / 12], ["t", this._attrs.x, this._attrs.y]]) }, _assembleFont: function () { var e = this._attrs, t = e.fontSize, n = e.fontFamily, r = e.fontWeight, i = e.fontStyle, o = e.fontVariant; e.font = [i, o, r, t + "px", n].join(" ") }, _setAttrText: function () { var e = this._attrs, t = e.text, n = null; if (r.isString(t)) if (-1 !== t.indexOf("\n")) { n = t.split("\n"); var i = n.length; e.lineCount = i } else e.lineCount = 1; e.textArr = n }, _getTextHeight: function () { var e = this._attrs, t = e.lineCount, n = 1 * e.fontSize; if (t > 1) { var r = this._getSpaceingY(); return n * t + r * (t - 1) } return n }, isHitBox: function () { return !1 }, calculateBox: function () { var e = this, t = e._attrs, n = this._cfg; n.attrs && !n.hasUpdate || (this._assembleFont(), this._setAttrText()), t.textArr || this._setAttrText(); var r = t.x, i = t.y, o = e.measureText(); if (!o) return { minX: r, minY: i, maxX: r, maxY: i }; var a = e._getTextHeight(), s = t.textAlign, c = t.textBaseline, l = e.getHitLineWidth(), u = { x: r, y: i - a }; s && ("end" === s || "right" === s ? u.x -= o : "center" === s && (u.x -= o / 2)), c && ("top" === c ? u.y += a : "middle" === c && (u.y += a / 2)), this.set("startPoint", u); var h = l / 2; return { minX: u.x - h, minY: u.y - h, maxX: u.x + o + h, maxY: u.y + a + h } }, _getSpaceingY: function () { var e = this._attrs, t = e.lineHeight, n = 1 * e.fontSize; return t ? t - n : .14 * n }, drawInner: function (e) { var t = this, n = t._attrs, i = this._cfg; i.attrs && !i.hasUpdate || (this._assembleFont(), this._setAttrText()), e.font = n.font; var o = n.text; if (o) { var a = n.textArr, s = n.x, c = n.y; if (e.beginPath(), t.hasStroke()) { var l = n.strokeOpacity; r.isNil(l) || 1 === l || (e.globalAlpha = l), a ? t._drawTextArr(e, !1) : e.strokeText(o, s, c), e.globalAlpha = 1 } if (t.hasFill()) { var u = n.fillOpacity; r.isNil(u) || 1 === u || (e.globalAlpha = u), a ? t._drawTextArr(e, !0) : e.fillText(o, s, c) } i.hasUpdate = !1 } }, _drawTextArr: function (e, t) { var n, i = this._attrs.textArr, o = this._attrs.textBaseline, a = 1 * this._attrs.fontSize, s = this._getSpaceingY(), c = this._attrs.x, l = this._attrs.y, u = this.getBBox(), h = u.maxY - u.minY; r.each(i, (function (r, i) { n = l + i * (s + a) - h + a, "middle" === o && (n += h - a - (h - a) / 2), "top" === o && (n += h - a), t ? e.fillText(r, c, n) : e.strokeText(r, c, n) })) }, measureText: function () { var e, t = this, n = t._attrs, i = n.text, o = n.font, a = n.textArr, s = 0; if (!r.isNil(i)) { var c = document.createElement("canvas").getContext("2d"); return c.save(), c.font = o, a ? r.each(a, (function (t) { e = c.measureText(t).width, s < e && (s = e), c.restore() })) : (s = c.measureText(i).width, c.restore()), s } } }), e.exports = o }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n(84); n.d(t, "interpolate", (function () { return r["a"] })); var i = n(137); n.d(t, "interpolateArray", (function () { return i["a"] })); var o = n(87); n.d(t, "interpolateBasis", (function () { return o["b"] })); var a = n(135); n.d(t, "interpolateBasisClosed", (function () { return a["a"] })); var s = n(138); n.d(t, "interpolateDate", (function () { return s["a"] })); var c = n(47); n.d(t, "interpolateNumber", (function () { return c["a"] })); var l = n(139); n.d(t, "interpolateObject", (function () { return l["a"] })); var u = n(242); n.d(t, "interpolateRound", (function () { return u["a"] })); var h = n(140); n.d(t, "interpolateString", (function () { return h["a"] })); var f = n(243); n.d(t, "interpolateTransformCss", (function () { return f["a"] })), n.d(t, "interpolateTransformSvg", (function () { return f["b"] })); var d = n(246); n.d(t, "interpolateZoom", (function () { return d["a"] })); var p = n(134); n.d(t, "interpolateRgb", (function () { return p["a"] })), n.d(t, "interpolateRgbBasis", (function () { return p["b"] })), n.d(t, "interpolateRgbBasisClosed", (function () { return p["c"] })); var v = n(247); n.d(t, "interpolateHsl", (function () { return v["a"] })), n.d(t, "interpolateHslLong", (function () { return v["b"] })); var m = n(248); n.d(t, "interpolateLab", (function () { return m["a"] })); var g = n(249); n.d(t, "interpolateHcl", (function () { return g["a"] })), n.d(t, "interpolateHclLong", (function () { return g["b"] })); var y = n(250); n.d(t, "interpolateCubehelix", (function () { return y["b"] })), n.d(t, "interpolateCubehelixLong", (function () { return y["a"] })); var b = n(251); n.d(t, "quantize", (function () { return b["a"] })) }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return r })), n.d(t, "b", (function () { return i })); var r = Math.PI / 180, i = 180 / Math.PI }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return c })), n.d(t, "c", (function () { return l })); var r = n(19), i = n(87), o = n(135), a = n(32); function s(e) { return function (t) { var n, i, o = t.length, a = new Array(o), s = new Array(o), c = new Array(o); for (n = 0; n < o; ++n)i = Object(r["f"])(t[n]), a[n] = i.r || 0, s[n] = i.g || 0, c[n] = i.b || 0; return a = e(a), s = e(s), c = e(c), i.opacity = 1, function (e) { return i.r = a(e), i.g = s(e), i.b = c(e), i + "" } } } t["a"] = function e(t) { var n = Object(a["b"])(t); function i(e, t) { var i = n((e = Object(r["f"])(e)).r, (t = Object(r["f"])(t)).r), o = n(e.g, t.g), s = n(e.b, t.b), c = Object(a["a"])(e.opacity, t.opacity); return function (t) { return e.r = i(t), e.g = o(t), e.b = s(t), e.opacity = c(t), e + "" } } return i.gamma = e, i }(1); var c = s(i["b"]), l = s(o["a"]) }, function (e, t, n) { "use strict"; var r = n(87); t["a"] = function (e) { var t = e.length; return function (n) { var i = Math.floor(((n %= 1) < 0 ? ++n : n) * t), o = e[(i + t - 1) % t], a = e[i % t], s = e[(i + 1) % t], c = e[(i + 2) % t]; return Object(r["a"])((n - i / t) * t, o, a, s, c) } } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return function () { return e } } }, function (e, t, n) { "use strict"; var r = n(84); t["a"] = function (e, t) { var n, i = t ? t.length : 0, o = e ? Math.min(i, e.length) : 0, a = new Array(o), s = new Array(i); for (n = 0; n < o; ++n)a[n] = Object(r["a"])(e[n], t[n]); for (; n < i; ++n)s[n] = t[n]; return function (e) { for (n = 0; n < o; ++n)s[n] = a[n](e); return s } } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { var n = new Date; return e = +e, t -= e, function (r) { return n.setTime(e + t * r), n } } }, function (e, t, n) { "use strict"; var r = n(84); t["a"] = function (e, t) { var n, i = {}, o = {}; for (n in null !== e && "object" === typeof e || (e = {}), null !== t && "object" === typeof t || (t = {}), t) n in e ? i[n] = Object(r["a"])(e[n], t[n]) : o[n] = t[n]; return function (e) { for (n in i) o[n] = i[n](e); return o } } }, function (e, t, n) { "use strict"; var r = n(47), i = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, o = new RegExp(i.source, "g"); function a(e) { return function () { return e } } function s(e) { return function (t) { return e(t) + "" } } t["a"] = function (e, t) { var n, c, l, u = i.lastIndex = o.lastIndex = 0, h = -1, f = [], d = []; e += "", t += ""; while ((n = i.exec(e)) && (c = o.exec(t))) (l = c.index) > u && (l = t.slice(u, l), f[h] ? f[h] += l : f[++h] = l), (n = n[0]) === (c = c[0]) ? f[h] ? f[h] += c : f[++h] = c : (f[++h] = null, d.push({ i: h, x: Object(r["a"])(n, c) })), u = o.lastIndex; return u < t.length && (l = t.slice(u), f[h] ? f[h] += l : f[++h] = l), f.length < 2 ? d[0] ? s(d[0].x) : a(t) : (t = d.length, function (e) { for (var n, r = 0; r < t; ++r)f[(n = d[r]).i] = n.x(e); return f.join("") }) } }, function (e, t, n) { var r = n(0), i = n(327), o = { appear: { duration: 450, easing: "easeQuadOut" }, update: { duration: 450, easing: "easeQuadInOut" }, enter: { duration: 400, easing: "easeQuadInOut", delay: 100 }, leave: { duration: 350, easing: "easeQuadIn" } }, a = { line: { appear: function () { return i.appear.clipIn }, enter: function () { return i.enter.clipIn }, leave: function () { return i.leave.lineWidthOut } }, path: { appear: function () { return i.appear.clipIn }, enter: function () { return i.enter.clipIn }, leave: function () { return i.leave.lineWidthOut } }, area: { appear: function () { return i.appear.clipIn }, enter: function () { return i.enter.fadeIn }, leave: function () { return i.leave.fadeOut }, cfg: { appear: { duration: 500, easing: "easeQuadOut" }, update: { duration: 450, easing: "easeQuadInOut" }, enter: { duration: 600, delay: 150, easing: "easeQuadInOut" }, leave: { easing: "easeQuadOut", duration: 350 } } }, polygon: { appear: function () { return i.appear.zoomIn }, enter: function () { return i.enter.zoomIn }, leave: function () { return i.leave.zoomOut } }, edge: { appear: function () { return i.appear.pathIn }, enter: function () { return i.enter.pathIn }, leave: function () { return i.leave.pathOut } }, interval: { appear: function (e) { var t; return e.isPolar ? (t = i.appear.zoomIn, (e.isTransposed || "theta" === e.type) && (t = i.appear.fanIn)) : t = e.isRect ? e.isTransposed ? i.appear.scaleInX : i.appear.scaleInY : i.appear.zoomIn, t }, enter: function (e) { return e.isRect || e.isTransposed || "theta" === e.type ? i.enter.fadeIn : i.enter.zoomIn }, leave: function () { return i.leave.fadeOut }, update: function (e) { if ("theta" === e.type) return i.update.fanIn } }, point: { appear: function () { return i.appear.zoomIn }, enter: function () { return i.enter.zoomIn }, leave: function () { return i.leave.zoomOut } }, schema: { appear: function () { return i.appear.clipIn }, enter: function () { return i.enter.clipIn }, leave: function () { return i.leave.lineWidthOut } }, contour: null, heatmap: null, label: { appear: function () { return i.appear.fadeIn }, enter: function () { return i.enter.fadeIn }, leave: function () { return i.leave.fadeOut }, cfg: { appear: { duration: 900 } } }, "axis-label": { enter: function () { return i.appear.fadeIn }, leave: function () { return i.leave.fadeOut }, update: function (e) { if (e.isPolar) return i.appear.fadeIn } }, "axis-ticks": { enter: function () { return i.appear.fadeIn }, leave: function () { return i.leave.fadeOut }, update: function (e) { if (e.isPolar) return i.appear.fadeIn } }, "axis-grid": { enter: function () { return i.appear.fadeIn }, leave: function () { return i.leave.fadeOut }, update: function (e) { if (e.isPolar) return i.appear.fadeIn } }, "axis-grid-rect": { enter: function () { return i.appear.fadeIn }, leave: function () { return i.leave.fadeOut }, update: function () { return i.leave.fadeIn } }, labelLine: { appear: function () { return i.appear.pathIn }, enter: function () { return i.enter.pathIn }, leave: function () { return i.leave.pathOut } } }; a.Action = i, a.defaultCfg = o, a.getAnimation = function (e, t, n) { var i = this[e]; if (i) { var o = i[n]; if (r.isFunction(o)) return o(t) } return !1 }, a.getAnimateCfg = function (e, t) { var n = o[t]; return this[e] && this[e].cfg && this[e].cfg[t] ? r.deepMix({}, n, this[e].cfg[t]) : n }, a.registerAnimation = function (e, t, n) { this.Action[e] || (this.Action[e] = {}), this.Action[e][t] = n }, e.exports = a }, function (e, t, n) { var r = n(3), i = n(10), o = n(265), a = n(274), s = n(285), c = n(288), l = n(292), u = n(50), h = n(301), f = n(305), d = n(311), p = n(315), v = { DOMUtil: o, DomUtil: o, MatrixUtil: u, PathUtil: f, arrayUtil: a, domUtil: o, eventUtil: s, formatUtil: c, mathUtil: l, matrixUtil: u, objectUtil: h, stringUtil: d, pathUtil: f, typeUtil: p, augment: n(66), clone: n(39), debounce: n(321), deepMix: n(27), each: r, extend: n(65), filter: n(88), group: n(159), groupBy: n(161), groupToMap: n(160), indexOf: n(322), isEmpty: n(61), isEqual: n(40), isEqualWith: n(323), map: n(324), mix: i, pick: n(325), throttle: n(326), toArray: n(29), toString: n(26), uniqueId: n(62) }; r([o, a, s, c, l, u, h, f, d, p], (function (e) { i(v, e) })), e.exports = v }, function (e, t, n) { var r = n(144), i = n(6); function o(e, t) { var n = r(t), o = n.length; if (i(e)) return !o; for (var a = 0; a < o; a += 1) { var s = n[a]; if (t[s] !== e[s] || !(s in e)) return !1 } return !0 } e.exports = o }, function (e, t, n) { var r = n(3), i = n(13), o = Object.keys ? function (e) { return Object.keys(e) } : function (e) { var t = []; return r(e, (function (n, r) { i(e) && "prototype" === r || t.push(r) })), t }; e.exports = o }, function (e, t, n) { var r = n(15), i = Array.prototype.splice, o = function (e, t) { if (!r(e)) return []; var n = e ? t.length : 0, o = n - 1; while (n--) { var a = void 0, s = t[n]; n !== o && s === a || (a = s, i.call(e, s, 1)) } return e }; e.exports = o }, function (e, t, n) { var r = n(3), i = n(48), o = function (e) { var t = []; return r(e, (function (e) { i(t, e) || t.push(e) })), t }; e.exports = o }, function (e, t, n) { var r = n(5), i = n(13), o = n(3), a = function (e, t) { if (r(e)) { var n = e[0], a = void 0; a = i(t) ? t(e[0]) : e[0][t]; var s = void 0; return o(e, (function (e) { s = i(t) ? t(e) : e[t], s > a && (n = e, a = s) })), n } }; e.exports = a }, function (e, t) { e.exports = parseInt }, function (e, t) { e.exports = function (e, t) { return e.hasOwnProperty(t) } }, function (e, t, n) { var r = n(3), i = n(13), o = Object.values ? function (e) { return Object.values(e) } : function (e) { var t = []; return r(e, (function (n, r) { i(e) && "prototype" === r || t.push(n) })), t }; e.exports = o }, function (e, t, n) { var r = n(152); e.exports = function (e, t, n, i, o) { if (o) return [["M", +e + +o, t], ["l", n - 2 * o, 0], ["a", o, o, 0, 0, 1, o, o], ["l", 0, i - 2 * o], ["a", o, o, 0, 0, 1, -o, o], ["l", 2 * o - n, 0], ["a", o, o, 0, 0, 1, -o, -o], ["l", 0, 2 * o - i], ["a", o, o, 0, 0, 1, o, -o], ["z"]]; var a = [["M", e, t], ["l", n, 0], ["l", 0, i], ["l", -n, 0], ["z"]]; return a.parsePathArray = r, a } }, function (e, t) { var n = /,?([a-z]),?/gi; e.exports = function (e) { return e.join(",").replace(n, "$1") } }, function (e, t, n) { var r = n(154), i = function e(t, n, r, i, o, a, s, c, l, u) { r === i && (r += 1); var h = 120 * Math.PI / 180, f = Math.PI / 180 * (+o || 0), d = [], p = void 0, v = void 0, m = void 0, g = void 0, y = void 0, b = function (e, t, n) { var r = e * Math.cos(n) - t * Math.sin(n), i = e * Math.sin(n) + t * Math.cos(n); return { x: r, y: i } }; if (u) v = u[0], m = u[1], g = u[2], y = u[3]; else { p = b(t, n, -f), t = p.x, n = p.y, p = b(c, l, -f), c = p.x, l = p.y, t === c && n === l && (c += 1, l += 1); var x = (t - c) / 2, w = (n - l) / 2, _ = x * x / (r * r) + w * w / (i * i); _ > 1 && (_ = Math.sqrt(_), r *= _, i *= _); var C = r * r, M = i * i, O = (a === s ? -1 : 1) * Math.sqrt(Math.abs((C * M - C * w * w - M * x * x) / (C * w * w + M * x * x))); g = O * r * w / i + (t + c) / 2, y = O * -i * x / r + (n + l) / 2, v = Math.asin(((n - y) / i).toFixed(9)), m = Math.asin(((l - y) / i).toFixed(9)), v = t < g ? Math.PI - v : v, m = c < g ? Math.PI - m : m, v < 0 && (v = 2 * Math.PI + v), m < 0 && (m = 2 * Math.PI + m), s && v > m && (v -= 2 * Math.PI), !s && m > v && (m -= 2 * Math.PI) } var k = m - v; if (Math.abs(k) > h) { var S = m, T = c, A = l; m = v + h * (s && m > v ? 1 : -1), c = g + r * Math.cos(m), l = y + i * Math.sin(m), d = e(c, l, r, i, o, 0, s, T, A, [m, S, g, y]) } k = m - v; var L = Math.cos(v), j = Math.sin(v), z = Math.cos(m), E = Math.sin(m), P = Math.tan(k / 4), D = 4 / 3 * r * P, H = 4 / 3 * i * P, V = [t, n], I = [t + D * j, n - H * L], N = [c + D * E, l - H * z], R = [c, l]; if (I[0] = 2 * V[0] - I[0], I[1] = 2 * V[1] - I[1], u) return [I, N, R].concat(d); d = [I, N, R].concat(d).join().split(","); for (var F = [], Y = 0, $ = d.length; Y < $; Y++)F[Y] = Y % 2 ? b(d[Y - 1], d[Y], f).y : b(d[Y], d[Y + 1], f).x; return F }, o = function (e, t, n, r) { return [e, t, n, r, n, r] }, a = function (e, t, n, r, i, o) { var a = 1 / 3, s = 2 / 3; return [a * e + s * n, a * t + s * r, a * i + s * n, a * o + s * r, i, o] }; e.exports = function (e, t) { var n = r(e), s = t && r(t), c = { x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null }, l = { x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null }, u = [], h = [], f = "", d = "", p = void 0, v = function (e, t, n) { var r = void 0, s = void 0; if (!e) return ["C", t.x, t.y, t.x, t.y, t.x, t.y]; switch (!(e[0] in { T: 1, Q: 1 }) && (t.qx = t.qy = null), e[0]) { case "M": t.X = e[1], t.Y = e[2]; break; case "A": e = ["C"].concat(i.apply(0, [t.x, t.y].concat(e.slice(1)))); break; case "S": "C" === n || "S" === n ? (r = 2 * t.x - t.bx, s = 2 * t.y - t.by) : (r = t.x, s = t.y), e = ["C", r, s].concat(e.slice(1)); break; case "T": "Q" === n || "T" === n ? (t.qx = 2 * t.x - t.qx, t.qy = 2 * t.y - t.qy) : (t.qx = t.x, t.qy = t.y), e = ["C"].concat(a(t.x, t.y, t.qx, t.qy, e[1], e[2])); break; case "Q": t.qx = e[1], t.qy = e[2], e = ["C"].concat(a(t.x, t.y, e[1], e[2], e[3], e[4])); break; case "L": e = ["C"].concat(o(t.x, t.y, e[1], e[2])); break; case "H": e = ["C"].concat(o(t.x, t.y, e[1], t.y)); break; case "V": e = ["C"].concat(o(t.x, t.y, t.x, e[1])); break; case "Z": e = ["C"].concat(o(t.x, t.y, t.X, t.Y)); break; default: break }return e }, m = function (e, t) { if (e[t].length > 7) { e[t].shift(); var r = e[t]; while (r.length) u[t] = "A", s && (h[t] = "A"), e.splice(t++, 0, ["C"].concat(r.splice(0, 6))); e.splice(t, 1), p = Math.max(n.length, s && s.length || 0) } }, g = function (e, t, r, i, o) { e && t && "M" === e[o][0] && "M" !== t[o][0] && (t.splice(o, 0, ["M", i.x, i.y]), r.bx = 0, r.by = 0, r.x = e[o][1], r.y = e[o][2], p = Math.max(n.length, s && s.length || 0)) }; p = Math.max(n.length, s && s.length || 0); for (var y = 0; y < p; y++) { n[y] && (f = n[y][0]), "C" !== f && (u[y] = f, y && (d = u[y - 1])), n[y] = v(n[y], c, d), "A" !== u[y] && "C" === f && (u[y] = "C"), m(n, y), s && (s[y] && (f = s[y][0]), "C" !== f && (h[y] = f, y && (d = h[y - 1])), s[y] = v(s[y], l, d), "A" !== h[y] && "C" === f && (h[y] = "C"), m(s, y)), g(n, s, c, l, y), g(s, n, l, c, y); var b = n[y], x = s && s[y], w = b.length, _ = s && x.length; c.x = b[w - 2], c.y = b[w - 1], c.bx = parseFloat(b[w - 4]) || c.x, c.by = parseFloat(b[w - 3]) || c.y, l.bx = s && (parseFloat(x[_ - 4]) || l.x), l.by = s && (parseFloat(x[_ - 3]) || l.y), l.x = s && x[_ - 2], l.y = s && x[_ - 1] } return s ? [n, s] : n } }, function (e, t, n) { var r = n(155), i = n(156); function o(e, t, n, r, i) { var o = []; if (null === i && null === r && (r = n), e = +e, t = +t, n = +n, r = +r, null !== i) { var a = Math.PI / 180, s = e + n * Math.cos(-r * a), c = e + n * Math.cos(-i * a), l = t + n * Math.sin(-r * a), u = t + n * Math.sin(-i * a); o = [["M", s, l], ["A", n, n, 0, +(i - r > 180), 0, c, u]] } else o = [["M", e, t], ["m", 0, -r], ["a", n, r, 0, 1, 1, 0, 2 * r], ["a", n, r, 0, 1, 1, 0, -2 * r], ["z"]]; return o } e.exports = function (e) { if (e = r(e), !e || !e.length) return [["M", 0, 0]]; var t = [], n = 0, a = 0, s = 0, c = 0, l = 0, u = void 0, h = void 0; "M" === e[0][0] && (n = +e[0][1], a = +e[0][2], s = n, c = a, l++, t[0] = ["M", n, a]); for (var f, d, p = 3 === e.length && "M" === e[0][0] && "R" === e[1][0].toUpperCase() && "Z" === e[2][0].toUpperCase(), v = l, m = e.length; v < m; v++) { if (t.push(f = []), d = e[v], u = d[0], u !== u.toUpperCase()) switch (f[0] = u.toUpperCase(), f[0]) { case "A": f[1] = d[1], f[2] = d[2], f[3] = d[3], f[4] = d[4], f[5] = d[5], f[6] = +d[6] + n, f[7] = +d[7] + a; break; case "V": f[1] = +d[1] + a; break; case "H": f[1] = +d[1] + n; break; case "R": h = [n, a].concat(d.slice(1)); for (var g = 2, y = h.length; g < y; g++)h[g] = +h[g] + n, h[++g] = +h[g] + a; t.pop(), t = t.concat(i(h, p)); break; case "O": t.pop(), h = o(n, a, d[1], d[2]), h.push(h[0]), t = t.concat(h); break; case "U": t.pop(), t = t.concat(o(n, a, d[1], d[2], d[3])), f = ["U"].concat(t[t.length - 1].slice(-2)); break; case "M": s = +d[1] + n, c = +d[2] + a; break; default: for (var b = 1, x = d.length; b < x; b++)f[b] = +d[b] + (b % 2 ? n : a) } else if ("R" === u) h = [n, a].concat(d.slice(1)), t.pop(), t = t.concat(i(h, p)), f = ["R"].concat(d.slice(-2)); else if ("O" === u) t.pop(), h = o(n, a, d[1], d[2]), h.push(h[0]), t = t.concat(h); else if ("U" === u) t.pop(), t = t.concat(o(n, a, d[1], d[2], d[3])), f = ["U"].concat(t[t.length - 1].slice(-2)); else for (var w = 0, _ = d.length; w < _; w++)f[w] = d[w]; if (u = u.toUpperCase(), "O" !== u) switch (f[0]) { case "Z": n = +s, a = +c; break; case "H": n = f[1]; break; case "V": a = f[1]; break; case "M": s = f[f.length - 2], c = f[f.length - 1]; break; default: n = f[f.length - 2], a = f[f.length - 1] } } return t } }, function (e, t) { var n = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r = "\t\n\v\f\r 聽釟�釥庘��鈥佲�傗�冣�勨�呪�嗏�団�堚�夆�娾�仧銆�\u2028\u2029", i = new RegExp("([a-z])[" + r + ",]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[" + r + "]*,?[" + r + "]*)+)", "ig"), o = new RegExp("(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[" + r + "]*,?[" + r + "]*", "ig"); e.exports = function (e) { if (!e) return null; if (("undefined" === typeof e ? "undefined" : n(e)) === n([])) return e; var t = { a: 7, c: 6, o: 2, h: 1, l: 2, m: 2, r: 4, q: 4, s: 4, t: 2, v: 1, u: 3, z: 0 }, r = []; return String(e).replace(i, (function (e, n, i) { var a = [], s = n.toLowerCase(); if (i.replace(o, (function (e, t) { t && a.push(+t) })), "m" === s && a.length > 2 && (r.push([n].concat(a.splice(0, 2))), s = "l", n = "m" === n ? "l" : "L"), "o" === s && 1 === a.length && r.push([n, a[0]]), "r" === s) r.push([n].concat(a)); else while (a.length >= t[s]) if (r.push([n].concat(a.splice(0, t[s]))), !t[s]) break })), r } }, function (e, t) { e.exports = function (e, t) { for (var n = [], r = 0, i = e.length; i - 2 * !t > r; r += 2) { var o = [{ x: +e[r - 2], y: +e[r - 1] }, { x: +e[r], y: +e[r + 1] }, { x: +e[r + 2], y: +e[r + 3] }, { x: +e[r + 4], y: +e[r + 5] }]; t ? r ? i - 4 === r ? o[3] = { x: +e[0], y: +e[1] } : i - 2 === r && (o[2] = { x: +e[0], y: +e[1] }, o[3] = { x: +e[2], y: +e[3] }) : o[0] = { x: +e[i - 2], y: +e[i - 1] } : i - 4 === r ? o[3] = o[2] : r || (o[0] = { x: +e[r], y: +e[r + 1] }), n.push(["C", (-o[0].x + 6 * o[1].x + o[2].x) / 6, (-o[0].y + 6 * o[1].y + o[2].y) / 6, (o[1].x + 6 * o[2].x - o[3].x) / 6, (o[1].y + 6 * o[2].y - o[3].y) / 6, o[2].x, o[2].y]) } return n } }, function (e, t, n) { var r = n(26), i = function (e) { return r(e).toLowerCase() }; e.exports = i }, function (e, t, n) { var r = n(26), i = function (e) { return r(e).toUpperCase() }; e.exports = i }, function (e, t, n) { var r = n(160), i = function (e, t) { if (!t) return [e]; var n = r(e, t), i = []; for (var o in n) i.push(n[o]); return i }; e.exports = i }, function (e, t, n) { var r = n(13), i = n(5), o = n(161), a = function (e, t) { if (!t) return { 0: e }; if (!r(t)) { var n = i(t) ? t : t.replace(/\s+/g, "").split("*"); t = function (e) { for (var t = "_", r = 0, i = n.length; r < i; r++)t += e[n[r]] && e[n[r]].toString(); return t } } var a = o(e, t); return a }; e.exports = a }, function (e, t, n) { var r = n(3), i = n(5), o = Object.prototype.hasOwnProperty, a = function (e, t) { if (!t || !i(e)) return e; var n = {}, a = null; return r(e, (function (e) { a = t(e), o.call(n, a) ? n[a].push(e) : n[a] = [e] })), n }; e.exports = a }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(0), o = n(328), a = n(18), s = a.Canvas, c = i.DomUtil, l = n(8), u = n(413), h = n(199), f = n(201), d = n(200), p = n(202), v = "auto"; function m(e, t) { var n = !1; return i.each(e, (function (e) { var r = [].concat(e.values), i = [].concat(t.values); e.type !== t.type || e.field !== t.field || r.sort().toString() !== i.sort().toString() || (n = !0) })), n } function g(e, t) { return i.isEqualWith(e, t, (function (e, t) { return e === t })) } var y = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return i.mix(t, { id: null, forceFit: !1, container: null, wrapperEl: null, canvas: null, width: 500, height: 500, pixelRatio: null, backPlot: null, frontPlot: null, plotBackground: null, padding: l.plotCfg.padding, background: null, autoPaddingAppend: 5, limitInPlot: !1, renderer: l.renderer, views: [] }) }, n.init = function () { var t = this, n = t.get("viewTheme"); t._initCanvas(), t._initPlot(), t._initEvents(), e.prototype.init.call(this); var r = new h.Tooltip({ chart: t, viewTheme: n, options: {} }); t.set("tooltipController", r); var i = new h.Legend({ chart: t, viewTheme: n }); t.set("legendController", i), t.set("_id", "chart"), t.emit("afterinit") }, n._isAutoPadding = function () { var e = this.get("padding"); return i.isArray(e) ? e.includes(v) : e === v }, n._getAutoPadding = function () { for (var e = this.get("padding"), t = this.get("frontPlot"), n = t.getBBox(), r = this.get("backPlot"), o = d(r, p(this.get("plotRange"))), a = f(n, o), s = [0 - a.minY, a.maxX - this.get("width"), a.maxY - this.get("height"), 0 - a.minX], c = i.toAllPadding(e), l = 0; l < c.length; l++)if (c[l] === v) { var u = Math.max(0, s[l]); c[l] = u + this.get("autoPaddingAppend") } return c }, n._initCanvas = function () { var e = this.get("container"), t = this.get("id"); !e && t && (e = t, this.set("container", t)); var n = this.get("width"), r = this.get("height"); if (i.isString(e)) { if (e = document.getElementById(e), !e) throw new Error("Please specify the container for the chart!"); this.set("container", e) } var o = c.createDom('<div style="position:relative;"></div>'); e.appendChild(o), this.set("wrapperEl", o), this.get("forceFit") && (n = c.getWidth(e, n), this.set("width", n)); var a = this.get("renderer"), l = new s({ containerDOM: o, width: n, height: r, pixelRatio: "svg" === a ? 1 : this.get("pixelRatio"), renderer: a }); this.set("canvas", l) }, n._initPlot = function () { var e = this; e._initPlotBack(); var t = e.get("canvas"), n = t.addGroup({ zIndex: 1 }), r = t.addGroup({ zIndex: 0 }), i = t.addGroup({ zIndex: 3 }); e.set("backPlot", n), e.set("middlePlot", r), e.set("frontPlot", i) }, n._initPlotBack = function () { var e = this, t = e.get("canvas"), n = e.get("viewTheme"), r = t.addGroup(u, { padding: this.get("padding"), plotBackground: i.mix({}, n.plotBackground, e.get("plotBackground")), background: i.mix({}, n.background, e.get("background")) }); e.set("plot", r), e.set("plotRange", r.get("plotRange")) }, n._initEvents = function () { this.get("forceFit") && window.addEventListener("resize", i.wrapBehavior(this, "_initForceFitEvent")) }, n._initForceFitEvent = function () { var e = setTimeout(i.wrapBehavior(this, "forceFit"), 200); clearTimeout(this.get("resizeTimer")), this.set("resizeTimer", e) }, n._renderLegends = function () { var e = this.get("options"), t = e.legends; if (i.isNil(t) || !1 !== t) { var n = this.get("legendController"); if (n.options = t || {}, n.plotRange = this.get("plotRange"), t && t.custom) n.addCustomLegend(); else { var r = this.getAllGeoms(), o = []; i.each(r, (function (e) { var t = e.get("view"), r = e.getAttrsForLegend(); i.each(r, (function (r) { var i = r.type, a = r.getScale(i); if (a.field && "identity" !== a.type && !m(o, a)) { o.push(a); var s = t.getFilteredOutValues(a.field); n.addLegend(a, r, e, s) } })) })); var a = this.getYScales(); 0 === o.length && a.length > 1 && n.addMixedLegend(a, r) } n.alignLegends() } }, n._renderTooltips = function () { var e = this.get("options"); if (i.isNil(e.tooltip) || !1 !== e.tooltip) { var t = this.get("tooltipController"); t.options = e.tooltip || {}, t.renderTooltip() } }, n.getAllGeoms = function () { var e = []; e = e.concat(this.get("geoms")); var t = this.get("views"); return i.each(t, (function (t) { e = e.concat(t.get("geoms")) })), e }, n.forceFit = function () { var e = this; if (e && !e.destroyed) { var t = e.get("container"), n = e.get("width"), r = c.getWidth(t, n); if (0 !== r && r !== n) { var i = e.get("height"); e.changeSize(r, i) } return e } }, n.resetPlot = function () { var e = this.get("plot"), t = this.get("padding"); g(t, e.get("padding")) || (e.set("padding", t), e.repaint()) }, n.changeSize = function (e, t) { var n = this, r = n.get("canvas"); r.changeSize(e, t); var i = this.get("plot"); return n.set("width", e), n.set("height", t), i.repaint(), this.set("keepPadding", !0), n.repaint(), this.set("keepPadding", !1), this.emit("afterchangesize"), n }, n.changeWidth = function (e) { return this.changeSize(e, this.get("height")) }, n.changeHeight = function (e) { return this.changeSize(this.get("width"), e) }, n.view = function (e) { e = e || {}, e.theme = this.get("theme"), e.parent = this, e.backPlot = this.get("backPlot"), e.middlePlot = this.get("middlePlot"), e.frontPlot = this.get("frontPlot"), e.canvas = this.get("canvas"), i.isNil(e.animate) && (e.animate = this.get("animate")), e.options = i.mix({}, this._getSharedOptions(), e.options); var t = new o(e); return t.set("_id", "view" + this.get("views").length), this.get("views").push(t), this.emit("addview", { view: t }), t }, n.removeView = function (e) { var t = this.get("views"); i.Array.remove(t, e), e.destroy() }, n._getSharedOptions = function () { var e = this.get("options"), t = {}; return i.each(["scales", "coord", "axes"], (function (n) { t[n] = i.cloneDeep(e[n]) })), t }, n.getViewRegion = function () { var e = this.get("plotRange"); return { start: e.bl, end: e.tr } }, n.legend = function (e, t) { var n = this.get("options"); n.legends || (n.legends = {}); var r = {}; return !1 === e ? n.legends = !1 : i.isObject(e) ? r = e : i.isString(e) ? r[e] = t : r = t, i.mix(n.legends, r), this }, n.tooltip = function (e, t) { var n = this.get("options"); return n.tooltip || (n.tooltip = {}), !1 === e ? n.tooltip = !1 : i.isObject(e) ? i.mix(n.tooltip, e) : i.mix(n.tooltip, t), this }, n.clear = function () { this.emit("beforeclear"); var t = this.get("views"); while (t.length > 0) { var n = t.shift(); n.destroy() } e.prototype.clear.call(this); var r = this.get("canvas"); return this.resetPlot(), r.draw(), this.emit("afterclear"), this }, n.clearInner = function () { var t = this.get("views"); i.each(t, (function (e) { e.clearInner() })); var n = this.get("tooltipController"); if (n && n.clear(), !this.get("keepLegend")) { var r = this.get("legendController"); r && r.clear() } e.prototype.clearInner.call(this) }, n.drawComponents = function () { e.prototype.drawComponents.call(this), this.get("keepLegend") || this._renderLegends() }, n.render = function () { var t = this; if (!t.get("keepPadding") && t._isAutoPadding()) { t.beforeRender(), t.drawComponents(); var n = t._getAutoPadding(), r = t.get("plot"); g(r.get("padding"), n) || (r.set("padding", n), r.repaint()) } var o = t.get("middlePlot"); if (t.get("limitInPlot") && !o.attr("clip")) { var a = i.getClipByRange(t.get("plotRange")); o.attr("clip", a) } e.prototype.render.call(this), t._renderTooltips() }, n.repaint = function () { this.get("keepPadding") || this.resetPlot(), e.prototype.repaint.call(this) }, n.changeVisible = function (e) { var t = this.get("wrapperEl"), n = e ? "" : "none"; t.style.display = n }, n.toDataURL = function () { var e = this, t = e.get("canvas"), n = e.get("renderer"), r = t.get("el"), i = ""; if ("svg" === n) { var o = r.cloneNode(!0), a = document.implementation.createDocumentType("svg", "-//W3C//DTD SVG 1.1//EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"), s = document.implementation.createDocument("http://www.w3.org/2000/svg", "svg", a); s.replaceChild(o, s.documentElement); var c = (new XMLSerializer).serializeToString(s); i = "data:image/svg+xml;charset=utf8," + encodeURIComponent(c) } else "canvas" === n && (i = r.toDataURL("image/png")); return i }, n.downloadImage = function (e) { var t = this, n = document.createElement("a"), r = t.get("renderer"), i = (e || "chart") + ("svg" === r ? ".svg" : ".png"), o = t.get("canvas"); o.get("timeline").stopAllAnimations(), setTimeout((function () { var e = t.toDataURL(); if (window.Blob && window.URL && "svg" !== r) { var o = e.split(","), a = o[0].match(/:(.*?);/)[1], s = atob(o[1]), c = s.length, l = new Uint8Array(c); while (c--) l[c] = s.charCodeAt(c); var u = new Blob([l], { type: a }); window.navigator.msSaveBlob ? window.navigator.msSaveBlob(u, i) : n.addEventListener("click", (function () { n.download = i, n.href = window.URL.createObjectURL(u) })) } else n.addEventListener("click", (function () { n.download = i, n.href = e })); var h = document.createEvent("MouseEvents"); h.initEvent("click", !1, !1), n.dispatchEvent(h) }), 16) }, n.showTooltip = function (e) { var t = this.getViewsByPoint(e); if (t.length) { var n = this.get("tooltipController"); n.showTooltip(e, t) } return this }, n.lockTooltip = function () { var e = this.get("tooltipController"); return e.lockTooltip(), this }, n.unlockTooltip = function () { var e = this.get("tooltipController"); return e.unlockTooltip(), this }, n.hideTooltip = function () { var e = this.get("tooltipController"); return e.hideTooltip(), this }, n.getTooltipItems = function (e) { var t = this, n = t.getViewsByPoint(e), r = []; return i.each(n, (function (t) { var n = t.get("geoms"); i.each(n, (function (t) { var n = t.get("dataArray"), o = []; i.each(n, (function (n) { var r = t.findPoint(e, n); if (r) { var i = t.getTipItems(r); o = o.concat(i) } })), r = r.concat(o) })) })), r }, n.destroy = function () { this.emit("beforedestroy"), clearTimeout(this.get("resizeTimer")); var t = this.get("canvas"), n = this.get("wrapperEl"); n.parentNode.removeChild(n), e.prototype.destroy.call(this), t.destroy(), window.removeEventListener("resize", i.getWrapBehavior(this, "_initForceFitEvent")), this.emit("afterdestroy") }, t }(o); e.exports = y }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(90), o = n(0), a = function (e) { r(n, e); var t = n.prototype; function n(t) { var n; n = e.call(this) || this; var r = { visible: !0 }, i = n.getDefaultCfg(); return n._attrs = r, o.assign(r, i, t), n } return t.getDefaultCfg = function () { return {} }, t.get = function (e) { return this._attrs[e] }, t.set = function (e, t) { this._attrs[e] = t }, t.show = function () { var e = this.get("visible"); e || (this.set("visible", !0), this.changeVisible(!0)) }, t.hide = function () { var e = this.get("visible"); e && (this.set("visible", !1), this.changeVisible(!1)) }, t.changeVisible = function () { }, t.destroy = function () { this._attrs = {}, this.removeAllListeners(), this.destroyed = !0 }, n }(i); e.exports = a }, function (e, t, n) { var r = n(11), i = n(12), o = n(3), a = /rgba?\(([\s.,0-9]+)\)/; function s() { var e = document.createElement("i"); return e.title = "Web Colour Picker", e.style.display = "none", document.body.appendChild(e), e } function c(e, t, n, r) { var i = e[r] + (t[r] - e[r]) * n; return i } function l(e) { return "#" + u(e[0]) + u(e[1]) + u(e[2]) } function u(e) { return e = Math.round(e), e = e.toString(16), 1 === e.length && (e = "0" + e), e } function h(e, t) { (isNaN(t) || !r(t) || t < 0) && (t = 0), t > 1 && (t = 1); var n = e.length - 1, i = Math.floor(n * t), o = n * t - i, a = e[i], s = i === n ? a : e[i + 1], u = l([c(a, s, o, 0), c(a, s, o, 1), c(a, s, o, 2)]); return u } function f(e) { var t = []; return t.push(parseInt(e.substr(1, 2), 16)), t.push(parseInt(e.substr(3, 2), 16)), t.push(parseInt(e.substr(5, 2), 16)), t } var d = {}, p = null, v = { toRGB: function (e) { if ("#" === e[0] && 7 === e.length) return e; var t; if (p || (p = s()), d[e]) t = d[e]; else { p.style.color = e, t = document.defaultView.getComputedStyle(p, "").getPropertyValue("color"); var n = a.exec(t), r = n[1].split(/\s*,\s*/); t = l(r), d[e] = t } return t }, rgb2arr: f, gradient: function (e) { var t = []; return i(e) && (e = e.split("-")), o(e, (function (e) { -1 === e.indexOf("#") && (e = v.toRGB(e)), t.push(f(e)) })), function (e) { return h(t, e) } } }; e.exports = v }, function (e, t, n) { var r = 0, i = n(3), o = { values: n(89) }; e.exports = { isAdjust: function (e) { return this.adjustNames.indexOf(e) >= 0 }, _getDimValues: function (e) { var t = this, n = {}, a = []; if (t.xField && t.isAdjust("x") && a.push(t.xField), t.yField && t.isAdjust("y") && a.push(t.yField), i(a, (function (t) { var r = o.values(e, t); r.sort((function (e, t) { return e - t })), n[t] = r })), !t.yField && t.isAdjust("y")) { var s = "y", c = [r, 1]; n[s] = c } return n }, adjustData: function (e, t) { var n = this, r = n._getDimValues(t); i(e, (function (t, o) { i(r, (function (r, i) { n.adjustDim(i, r, t, e.length, o) })) })) }, getAdjustRange: function (e, t, n) { var r, i, o = this, a = n.indexOf(t), s = n.length; return !o.yField && o.isAdjust("y") ? (r = 0, i = 1) : s > 1 ? (r = 0 === a ? n[0] : n[a - 1], i = a === s - 1 ? n[s - 1] : n[a + 1], 0 !== a ? r += (t - r) / 2 : r -= (i - t) / 2, a !== s - 1 ? i -= (i - t) / 2 : i += (t - n[s - 2]) / 2) : (r = 0 === t ? 0 : t - .5, i = 0 === t ? 1 : t + .5), { pre: r, next: i } }, groupData: function (e, t) { var n = {}; return i(e, (function (e) { var i = e[t]; void 0 === i && (i = e[t] = r), n[i] || (n[i] = []), n[i].push(e) })), n } } }, function (e, t, n) { var r = { default: n(167), dark: n(341) }; e.exports = r }, function (e, t) { var n, r, i = "#1890FF", o = ["#1890FF", "#2FC25B", "#FACC14", "#223273", "#8543E0", "#13C2C2", "#3436C7", "#F04864"], a = ["#1890FF", "#41D9C7", "#2FC25B", "#FACC14", "#E6965C", "#223273", "#7564CC", "#8543E0", "#5C8EE6", "#13C2C2", "#5CA3E6", "#3436C7", "#B381E6", "#F04864", "#D598D9"], s = ["#1890FF", "#66B5FF", "#41D9C7", "#2FC25B", "#6EDB8F", "#9AE65C", "#FACC14", "#E6965C", "#57AD71", "#223273", "#738AE6", "#7564CC", "#8543E0", "#A877ED", "#5C8EE6", "#13C2C2", "#70E0E0", "#5CA3E6", "#3436C7", "#8082FF", "#DD81E6", "#F04864", "#FA7D92", "#D598D9"], c = ["#1890FF", "#13C2C2", "#2FC25B", "#FACC14", "#F04864", "#8543E0", "#3436C7", "#223273"], l = ["#1890FF", "#73C9E6", "#13C2C2", "#6CD9B3", "#2FC25B", "#9DD96C", "#FACC14", "#E6965C", "#F04864", "#D66BCA", "#8543E0", "#8E77ED", "#3436C7", "#737EE6", "#223273", "#7EA2E6"], u = '"-apple-system", BlinkMacSystemFont, "Segoe UI", Roboto,"Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",SimSun, "sans-serif"', h = "g2-tooltip", f = "g2-tooltip-title", d = "g2-tooltip-list", p = "g2-tooltip-list-item", v = "g2-tooltip-marker", m = "g2-tooltip-value", g = "g2-legend", y = "g2-legend-title", b = "g2-legend-list", x = "g2-legend-list-item", w = "g2-legend-marker", _ = { defaultColor: i, plotCfg: { padding: [20, 20, 95, 80] }, fontFamily: u, defaultLegendPosition: "bottom", colors: o, colors_16: a, colors_24: s, colors_pie: c, colors_pie_16: l, shapes: { point: ["hollowCircle", "hollowSquare", "hollowDiamond", "hollowBowtie", "hollowTriangle", "hollowHexagon", "cross", "tick", "plus", "hyphen", "line"], line: ["line", "dash", "dot"], area: ["area"] }, sizes: [1, 10], opacities: [.1, .9], axis: { top: { position: "top", title: null, label: { offset: 16, textStyle: { fill: "#545454", fontSize: 12, lineHeight: 16, textBaseline: "middle", fontFamily: u }, autoRotate: !0 }, line: { lineWidth: 1, stroke: "#BFBFBF" }, tickLine: { lineWidth: 1, stroke: "#BFBFBF", length: 4, alignWithLabel: !0 } }, bottom: { position: "bottom", title: null, label: { offset: 16, autoRotate: !0, textStyle: { fill: "#545454", fontSize: 12, lineHeight: 16, textBaseline: "middle", fontFamily: u } }, line: { lineWidth: 1, stroke: "#BFBFBF" }, tickLine: { lineWidth: 1, stroke: "#BFBFBF", length: 4, alignWithLabel: !0 } }, left: { position: "left", title: null, label: { offset: 8, autoRotate: !0, textStyle: { fill: "#545454", fontSize: 12, lineHeight: 16, textBaseline: "middle", fontFamily: u } }, line: null, tickLine: null, grid: { zIndex: -1, lineStyle: { stroke: "#E9E9E9", lineWidth: 1, lineDash: [3, 3] }, hideFirstLine: !0 } }, right: { position: "right", title: null, label: { offset: 8, autoRotate: !0, textStyle: { fill: "#545454", fontSize: 12, lineHeight: 16, textBaseline: "middle", fontFamily: u } }, line: null, tickLine: null, grid: { lineStyle: { stroke: "#E9E9E9", lineWidth: 1, lineDash: [3, 3] }, hideFirstLine: !0 } }, circle: { zIndex: 1, title: null, label: { offset: 8, textStyle: { fill: "#545454", fontSize: 12, lineHeight: 16, fontFamily: u } }, line: { lineWidth: 1, stroke: "#BFBFBF" }, tickLine: { lineWidth: 1, stroke: "#BFBFBF", length: 4, alignWithLabel: !0 }, grid: { lineStyle: { stroke: "#E9E9E9", lineWidth: 1, lineDash: [3, 3] }, hideFirstLine: !0 } }, radius: { zIndex: 0, label: { offset: 12, textStyle: { fill: "#545454", fontSize: 12, textBaseline: "middle", lineHeight: 16, fontFamily: u } }, line: { lineWidth: 1, stroke: "#BFBFBF" }, tickLine: { lineWidth: 1, stroke: "#BFBFBF", length: 4, alignWithLabel: !0 }, grid: { lineStyle: { stroke: "#E9E9E9", lineWidth: 1, lineDash: [3, 3] }, type: "circle" } }, helix: { grid: null, label: null, title: null, line: { lineWidth: 1, stroke: "#BFBFBF" }, tickLine: { lineWidth: 1, length: 4, stroke: "#BFBFBF", alignWithLabel: !0 } } }, label: { offset: 20, textStyle: { fill: "#545454", fontSize: 12, textBaseline: "middle", fontFamily: u } }, treemapLabels: { offset: 10, textStyle: { fill: "#fff", fontSize: 12, textBaseline: "top", fontStyle: "bold", fontFamily: u } }, innerLabels: { textStyle: { fill: "#fff", fontSize: 12, textBaseline: "middle", fontFamily: u } }, thetaLabels: { labelHeight: 14, offset: 30 }, legend: { right: { position: "right", layout: "vertical", itemMarginBottom: 8, width: 16, height: 156, title: null, legendStyle: { LIST_CLASS: { textAlign: "left" } }, textStyle: { fill: "#8C8C8C", fontSize: 12, textAlign: "start", textBaseline: "middle", lineHeight: 0, fontFamily: u }, unCheckColor: "#bfbfbf" }, left: { position: "left", layout: "vertical", itemMarginBottom: 8, width: 16, height: 156, title: null, textStyle: { fill: "#8C8C8C", fontSize: 12, textAlign: "start", textBaseline: "middle", lineHeight: 20, fontFamily: u }, unCheckColor: "#bfbfbf" }, top: { position: "top", offset: [0, 6], layout: "horizontal", title: null, itemGap: 10, width: 156, height: 16, textStyle: { fill: "#8C8C8C", fontSize: 12, textAlign: "start", textBaseline: "middle", lineHeight: 20, fontFamily: u }, unCheckColor: "#bfbfbf" }, bottom: { position: "bottom", offset: [0, 6], layout: "horizontal", title: null, itemGap: 10, width: 156, height: 16, textStyle: { fill: "#8C8C8C", fontSize: 12, textAlign: "start", textBaseline: "middle", lineHeight: 20, fontFamily: u }, unCheckColor: "#bfbfbf" }, html: (n = {}, n["" + g] = { height: "auto", width: "auto", position: "absolute", overflow: "auto", fontSize: "12px", fontFamily: u, lineHeight: "20px", color: "#8C8C8C" }, n["" + y] = { marginBottom: "4px" }, n["" + b] = { listStyleType: "none", margin: 0, padding: 0 }, n["" + x] = { listStyleType: "none", cursor: "pointer", marginBottom: "5px", marginRight: "24px" }, n["" + w] = { width: "9px", height: "9px", borderRadius: "50%", display: "inline-block", marginRight: "8px", verticalAlign: "middle" }, n), gradient: { textStyle: { fill: "#8C8C8C", fontSize: 12, textAlign: "center", textBaseline: "middle", lineHeight: 20, fontFamily: u }, lineStyle: { lineWidth: 1, stroke: "#fff" }, unCheckColor: "#bfbfbf" }, margin: [0, 5, 24, 5], legendMargin: 24 }, tooltip: (r = { useHtml: !0, crosshairs: !1, offset: 15, marker: { symbol: "circle", activeSymbol: "circle" } }, r["" + h] = { position: "absolute", visibility: "hidden", zIndex: 8, transition: "visibility 0.2s cubic-bezier(0.23, 1, 0.32, 1), left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)", backgroundColor: "rgba(255, 255, 255, 0.9)", boxShadow: "0px 0px 10px #aeaeae", borderRadius: "3px", color: "rgb(87, 87, 87)", fontSize: "12px", fontFamily: u, lineHeight: "20px", padding: "10px 10px 6px 10px" }, r["" + f] = { marginBottom: "4px" }, r["" + d] = { margin: 0, listStyleType: "none", padding: 0 }, r["" + p] = { listStyleType: "none", marginBottom: "4px", padding: 0, marginTop: 0, marginLeft: 0, marginRight: 0 }, r["" + v] = { width: "5px", height: "5px", display: "inline-block", marginRight: "8px" }, r["" + m] = { display: "inline-block", float: "right", marginLeft: "30px" }, r), tooltipMarker: { symbol: function (e, t, n) { return [["M", e, t], ["m", -n, 0], ["a", n, n, 0, 1, 0, 2 * n, 0], ["a", n, n, 0, 1, 0, 2 * -n, 0]] }, stroke: "#fff", shadowBlur: 10, shadowOffsetX: 0, shadowOffSetY: 0, shadowColor: "rgba(0,0,0,0.09)", lineWidth: 2, radius: 4 }, tooltipCrosshairsRect: { type: "rect", rectStyle: { fill: "#CCD6EC", opacity: .3 } }, tooltipCrosshairsLine: { lineStyle: { stroke: "rgba(0, 0, 0, 0.25)", lineWidth: 1 } }, shape: { point: { lineWidth: 1, fill: i, radius: 4 }, hollowPoint: { fill: "#fff", lineWidth: 1, stroke: i, radius: 3 }, interval: { lineWidth: 0, fill: i, fillOpacity: .85 }, hollowInterval: { fill: "#fff", stroke: i, fillOpacity: 0, lineWidth: 2 }, area: { lineWidth: 0, fill: i, fillOpacity: .6 }, polygon: { lineWidth: 0, fill: i, fillOpacity: 1 }, hollowPolygon: { fill: "#fff", stroke: i, fillOpacity: 0, lineWidth: 2 }, hollowArea: { fill: "#fff", stroke: i, fillOpacity: 0, lineWidth: 2 }, line: { stroke: i, lineWidth: 2, fill: null }, edge: { stroke: i, lineWidth: 1, fill: null }, schema: { stroke: i, lineWidth: 1, fill: null } }, guide: { line: { lineStyle: { stroke: "rgba(0, 0, 0, .65)", lineDash: [2, 2], lineWidth: 1 }, text: { position: "start", autoRotate: !0, style: { fill: "rgba(0, 0, 0, .45)", fontSize: 12, textAlign: "start", fontFamily: u, textBaseline: "bottom" } } }, text: { style: { fill: "rgba(0,0,0,.5)", fontSize: 12, textBaseline: "middle", textAlign: "start", fontFamily: u } }, region: { style: { lineWidth: 0, fill: "#000", fillOpacity: .04 } }, html: { alignX: "middle", alignY: "middle" }, dataRegion: { style: { region: { lineWidth: 0, fill: "#000000", opacity: .04 }, text: { textAlign: "center", textBaseline: "bottom", fontSize: 12, fill: "rgba(0, 0, 0, .65)" } } }, dataMarker: { top: !0, style: { point: { r: 3, fill: "#FFFFFF", stroke: "#1890FF", lineWidth: 2 }, line: { stroke: "#A3B1BF", lineWidth: 1 }, text: { fill: "rgba(0, 0, 0, .65)", opacity: 1, fontSize: 12, textAlign: "start" } }, display: { point: !0, line: !0, text: !0 }, lineLength: 20, direction: "upward", autoAdjust: !0 } }, pixelRatio: null }; e.exports = _ }, function (e, t, n) { e.exports = { isFunction: n(13), isObject: n(22), isBoolean: n(60), isNil: n(6), isString: n(12), isArray: n(5), isNumber: n(11), isEmpty: n(61), uniqueId: n(62), clone: n(39), deepMix: n(27), assign: n(10), merge: n(27), upperFirst: n(64), each: n(3), isEqual: n(40), toArray: n(29), extend: n(65), augment: n(66), remove: n(67), isNumberEqual: n(30), toRadian: n(68), toDegree: n(69), mod: n(70), clamp: n(41), createDom: n(71), modifyCSS: n(72), requestAnimationFrame: n(73), getRatio: function () { return window.devicePixelRatio ? window.devicePixelRatio : 2 }, mat3: n(42), vec2: n(75), vec3: n(76), transform: n(77) } }, function (e, t, n) { var r = n(2), i = function (e, t, n, r) { this.type = e, this.target = null, this.currentTarget = null, this.bubbles = n, this.cancelable = r, this.timeStamp = (new Date).getTime(), this.defaultPrevented = !1, this.propagationStopped = !1, this.removed = !1, this.event = t }; r.augment(i, { preventDefault: function () { this.defaultPrevented = this.cancelable && !0 }, stopPropagation: function () { this.propagationStopped = !0 }, remove: function () { this.remove = !0 }, clone: function () { return r.clone(this) }, toString: function () { return "[Event (type=" + this.type + ")]" } }), e.exports = i }, function (e, t, n) { var r = n(2), i = n(171), o = n(348), a = {}, s = "_INDEX"; function c(e) { return function (t, n) { var r = e(t, n); return 0 === r ? t[s] - n[s] : r } } function l(e, t, n) { for (var r, i = e.length - 1; i >= 0; i--) { var o = e[i]; if (o._cfg.visible && o._cfg.capture && (o.isGroup ? r = o.getShape(t, n) : o.isHit(t, n) && (r = o)), r) break } return r } var u = function e(t) { e.superclass.constructor.call(this, t), this.set("children", []), this.set("tobeRemoved", []), this._beforeRenderUI(), this._renderUI(), this._bindUI() }; function h(e) { if (!e._cfg && e !== u) { var t = e.superclass.constructor; t && !t._cfg && h(t), e._cfg = {}, r.merge(e._cfg, t._cfg), r.merge(e._cfg, e.CFG) } } r.extend(u, i), r.augment(u, { isGroup: !0, type: "group", canFill: !0, canStroke: !0, getDefaultCfg: function () { return h(this.constructor), r.merge({}, this.constructor._cfg) }, _beforeRenderUI: function () { }, _renderUI: function () { }, _bindUI: function () { }, addShape: function (e, t) { var n = this.get("canvas"); t = t || {}; var i = a[e]; if (i || (i = r.upperFirst(e), a[e] = i), t.attrs && n) { var s = t.attrs; if ("text" === e) { var c = n.get("fontFamily"); c && (s.fontFamily = s.fontFamily ? s.fontFamily : c) } } t.canvas = n, t.type = e; var l = new o[i](t); return this.add(l), l }, addGroup: function (e, t) { var n, i = this.get("canvas"); if (t = r.merge({}, t), r.isFunction(e)) t ? (t.canvas = i, t.parent = this, n = new e(t)) : n = new e({ canvas: i, parent: this }), this.add(n); else if (r.isObject(e)) e.canvas = i, n = new u(e), this.add(n); else { if (void 0 !== e) return !1; n = new u, this.add(n) } return n }, renderBack: function (e, t) { var n = this.get("backShape"), i = this.getBBox(); return r.merge(t, { x: i.minX - e[3], y: i.minY - e[0], width: i.width + e[1] + e[3], height: i.height + e[0] + e[2] }), n ? n.attr(t) : n = this.addShape("rect", { zIndex: -1, attrs: t }), this.set("backShape", n), this.sort(), n }, removeChild: function (e, t) { if (arguments.length >= 2) this.contain(e) && e.remove(t); else { if (1 === arguments.length) { if (!r.isBoolean(e)) return this.contain(e) && e.remove(!0), this; t = e } 0 === arguments.length && (t = !0), u.superclass.remove.call(this, t) } return this }, add: function (e) { var t = this, n = t.get("children"); if (r.isArray(e)) r.each(e, (function (e) { var n = e.get("parent"); n && n.removeChild(e, !1), t._setCfgProperty(e) })), t._cfg.children = n.concat(e); else { var i = e, o = i.get("parent"); o && o.removeChild(i, !1), t._setCfgProperty(i), n.push(i) } return t }, _setCfgProperty: function (e) { var t = this._cfg; e.set("parent", this), e.set("canvas", t.canvas), t.timeline && e.set("timeline", t.timeline) }, contain: function (e) { var t = this.get("children"); return t.indexOf(e) > -1 }, getChildByIndex: function (e) { var t = this.get("children"); return t[e] }, getFirst: function () { return this.getChildByIndex(0) }, getLast: function () { var e = this.get("children").length - 1; return this.getChildByIndex(e) }, getBBox: function () { var e = this, t = 1 / 0, n = -1 / 0, i = 1 / 0, o = -1 / 0, a = e.get("children"); a.length > 0 ? r.each(a, (function (e) { if (e.get("visible")) { if (e.isGroup && 0 === e.get("children").length) return; var r = e.getBBox(); if (!r) return !0; var a = [r.minX, r.minY, 1], s = [r.minX, r.maxY, 1], c = [r.maxX, r.minY, 1], l = [r.maxX, r.maxY, 1]; e.apply(a), e.apply(s), e.apply(c), e.apply(l); var u = Math.min(a[0], s[0], c[0], l[0]), h = Math.max(a[0], s[0], c[0], l[0]), f = Math.min(a[1], s[1], c[1], l[1]), d = Math.max(a[1], s[1], c[1], l[1]); u < t && (t = u), h > n && (n = h), f < i && (i = f), d > o && (o = d) } })) : (t = 0, n = 0, i = 0, o = 0); var s = { minX: t, minY: i, maxX: n, maxY: o }; return s.x = s.minX, s.y = s.minY, s.width = s.maxX - s.minX, s.height = s.maxY - s.minY, s }, getCount: function () { return this.get("children").length }, sort: function () { var e = this.get("children"); return r.each(e, (function (e, t) { return e[s] = t, e })), e.sort(c((function (e, t) { return e.get("zIndex") - t.get("zIndex") }))), this }, findById: function (e) { return this.find((function (t) { return t.get("id") === e })) }, find: function (e) { if (r.isString(e)) return this.findById(e); var t = this.get("children"), n = null; return r.each(t, (function (t) { if (e(t) ? n = t : t.find && (n = t.find(e)), n) return !1 })), n }, findAll: function (e) { var t = this.get("children"), n = [], i = []; return r.each(t, (function (t) { e(t) && n.push(t), t.findAllBy && (i = t.findAllBy(e), n = n.concat(i)) })), n }, findBy: function (e) { var t = this.get("children"), n = null; return r.each(t, (function (t) { if (e(t) ? n = t : t.findBy && (n = t.findBy(e)), n) return !1 })), n }, findAllBy: function (e) { var t = this.get("children"), n = [], i = []; return r.each(t, (function (t) { e(t) && n.push(t), t.findAllBy && (i = t.findAllBy(e), n = n.concat(i)) })), n }, getShape: function (e, t) { var n, r = this, i = r._attrs.clip, o = r._cfg.children; if (i) { var a = [e, t, 1]; i.invert(a, r.get("canvas")), i.isPointInPath(a[0], a[1]) && (n = l(o, e, t)) } else n = l(o, e, t); return n }, clearTotalMatrix: function () { var e = this.get("totalMatrix"); if (e) { this.setSilent("totalMatrix", null); for (var t = this._cfg.children, n = 0; n < t.length; n++) { var r = t[n]; r.clearTotalMatrix() } } }, clear: function (e) { for (var t = this._cfg.children, n = t.length - 1; n >= 0; n--)t[n].remove(!0, e); return this._cfg.children = [], this }, destroy: function () { this.get("destroyed") || (this.clear(), u.superclass.destroy.call(this)) }, clone: function () { var e = this, t = e._cfg.children, n = new u; return r.each(t, (function (e) { n.add(e.clone()) })), n } }), e.exports = u }, function (e, t, n) { var r = n(2), i = n(345), o = n(346), a = n(347), s = n(90), c = function (e) { this._cfg = { zIndex: 0, capture: !0, visible: !0, destroyed: !1 }, r.assign(this._cfg, this.getDefaultCfg(), e), this.initAttrs(this._cfg.attrs), this._cfg.attrs = {}, this.initTransform(), this.init() }; c.CFG = { id: null, zIndex: 0, canvas: null, parent: null, capture: !0, context: null, visible: !0, destroyed: !1 }, r.augment(c, i, o, s, a, { init: function () { this.setSilent("animable", !0), this.setSilent("animating", !1) }, getParent: function () { return this._cfg.parent }, getDefaultCfg: function () { return {} }, set: function (e, t) { return "zIndex" === e && this._beforeSetZIndex && this._beforeSetZIndex(t), "loading" === e && this._beforeSetLoading && this._beforeSetLoading(t), this._cfg[e] = t, this }, setSilent: function (e, t) { this._cfg[e] = t }, get: function (e) { return this._cfg[e] }, show: function () { return this._cfg.visible = !0, this }, hide: function () { return this._cfg.visible = !1, this }, remove: function (e, t) { var n = this._cfg, i = n.parent, o = n.el; return i && r.remove(i.get("children"), this), o && (t ? i && i._cfg.tobeRemoved.push(o) : o.parentNode.removeChild(o)), (e || void 0 === e) && this.destroy(), this }, destroy: function () { var e = this.get("destroyed"); e || (this._attrs = null, this.removeEvent(), this._cfg = { destroyed: !0 }) }, toFront: function () { var e = this._cfg, t = e.parent; if (t) { var n = t._cfg.children, r = e.el, i = n.indexOf(this); n.splice(i, 1), n.push(this), r && (r.parentNode.removeChild(r), e.el = null) } }, toBack: function () { var e = this._cfg, t = e.parent; if (t) { var n = t._cfg.children, r = e.el, i = n.indexOf(this); if (n.splice(i, 1), n.unshift(this), r) { var o = r.parentNode; o.removeChild(r), o.insertBefore(r, o.firstChild) } } }, _beforeSetZIndex: function (e) { var t = this._cfg.parent; this._cfg.zIndex = e, r.isNil(t) || t.sort(); var n = this._cfg.el; if (n) { var i = t._cfg.children, o = i.indexOf(this), a = n.parentNode; a.removeChild(n), o === i.length - 1 ? a.appendChild(n) : a.insertBefore(n, a.childNodes[o]) } return e }, _setAttrs: function (e) { return this.attr(e), e }, setZIndex: function (e) { return this._cfg.zIndex = e, this._beforeSetZIndex(e) }, clone: function () { return r.clone(this) }, getBBox: function () { } }), e.exports = c }, function (e, t, n) { var r = n(2), i = r.vec2; function o(e, t, n, r) { var i = 1 - r; return i * (i * e + 2 * r * t) + r * r * n } function a(e, t, n, r, a, s, c, l, u) { var h, f, d, p, v, m, g, y = .005, b = 1 / 0, x = 1e-4, w = [c, l]; for (v = 0; v < 1; v += .05)d = [o(e, n, a, v), o(t, r, s, v)], f = i.squaredDistance(w, d), f < b && (h = v, b = f); for (b = 1 / 0, g = 0; g < 32; g++) { if (y < x) break; var _ = h - y, C = h + y; d = [o(e, n, a, _), o(t, r, s, _)], f = i.squaredDistance(w, d), _ >= 0 && f < b ? (h = _, b = f) : (p = [o(e, n, a, C), o(t, r, s, C)], m = i.squaredDistance(w, p), C <= 1 && m < b ? (h = C, b = m) : y *= .5) } return u && (u.x = o(e, n, a, h), u.y = o(t, r, s, h)), Math.sqrt(b) } function s(e, t, n) { var i = e + n - 2 * t; if (r.isNumberEqual(i, 0)) return [.5]; var o = (e - t) / i; return o <= 1 && o >= 0 ? [o] : [] } e.exports = { at: o, projectPoint: function (e, t, n, r, i, o, s, c) { var l = {}; return a(e, t, n, r, i, o, s, c, l), l }, pointDistance: a, extrema: s } }, function (e, t) { e.exports = { xAt: function (e, t, n, r, i) { return t * Math.cos(e) * Math.cos(i) - n * Math.sin(e) * Math.sin(i) + r }, yAt: function (e, t, n, r, i) { return t * Math.sin(e) * Math.cos(i) + n * Math.cos(e) * Math.sin(i) + r }, xExtrema: function (e, t, n) { return Math.atan(-n / t * Math.tan(e)) }, yExtrema: function (e, t, n) { return Math.atan(n / (t * Math.tan(e))) } } }, function (e, t, n) { var r = n(2), i = n(9), o = n(53), a = n(54); function s(e, t, n) { return e + t * Math.cos(n) } function c(e, t, n) { return e + t * Math.sin(n) } var l = function e(t) { e.superclass.constructor.call(this, t) }; l.ATTRS = { x: 0, y: 0, r: 0, startAngle: 0, endAngle: 0, clockwise: !1, lineWidth: 1, startArrow: !1, endArrow: !1 }, r.extend(l, i), r.augment(l, { canStroke: !0, type: "arc", getDefaultAttrs: function () { return { x: 0, y: 0, r: 0, startAngle: 0, endAngle: 0, clockwise: !1, lineWidth: 1, startArrow: !1, endArrow: !1 } }, calculateBox: function () { var e = this._attrs, t = e.x, n = e.y, r = e.r, i = e.startAngle, a = e.endAngle, s = e.clockwise, c = this.getHitLineWidth(), l = c / 2, u = o.box(t, n, r, i, a, s); return u.minX -= l, u.minY -= l, u.maxX += l, u.maxY += l, u }, getStartTangent: function () { var e = this._attrs, t = e.x, n = e.y, r = e.startAngle, i = e.r, o = e.clockwise, a = Math.PI / 180; o && (a *= -1); var l = [], u = s(t, i, r + a), h = c(n, i, r + a), f = s(t, i, r), d = c(n, i, r); return l.push([u, h]), l.push([f, d]), l }, getEndTangent: function () { var e = this._attrs, t = e.x, n = e.y, r = e.endAngle, i = e.r, o = e.clockwise, a = Math.PI / 180, l = []; o && (a *= -1); var u = s(t, i, r + a), h = c(n, i, r + a), f = s(t, i, r), d = c(n, i, r); return l.push([f, d]), l.push([u, h]), l }, createPath: function (e) { var t = this._attrs, n = t.x, r = t.y, i = t.r, o = t.startAngle, a = t.endAngle, s = t.clockwise; e = e || self.get("context"), e.beginPath(), e.arc(n, r, i, o, a, s) }, afterPath: function (e) { var t = this._attrs; if (e = e || this.get("context"), t.startArrow) { var n = this.getStartTangent(); a.addStartArrow(e, t, n[0][0], n[0][1], n[1][0], n[1][1]) } if (t.endArrow) { var r = this.getEndTangent(); a.addEndArrow(e, t, r[0][0], r[0][1], r[1][0], r[1][1]) } } }), e.exports = l }, function (e, t, n) { var r = n(2), i = n(9), o = function e(t) { e.superclass.constructor.call(this, t) }; o.ATTRS = { x: 0, y: 0, r: 0, lineWidth: 1 }, r.extend(o, i), r.augment(o, { canFill: !0, canStroke: !0, type: "circle", getDefaultAttrs: function () { return { lineWidth: 1 } }, calculateBox: function () { var e = this._attrs, t = e.x, n = e.y, r = e.r, i = this.getHitLineWidth(), o = i / 2 + r; return { minX: t - o, minY: n - o, maxX: t + o, maxY: n + o } }, createPath: function (e) { var t = this._attrs, n = t.x, r = t.y, i = t.r; e.beginPath(), e.arc(n, r, i, 0, 2 * Math.PI, !1), e.closePath() } }), e.exports = o }, function (e, t, n) { var r = n(2), i = n(9), o = function e(t) { e.superclass.constructor.call(this, t) }; r.extend(o, i), r.augment(o, { canFill: !0, canStroke: !0, type: "dom", calculateBox: function () { var e = this, t = e._attrs, n = t.x, r = t.y, i = t.width, o = t.height, a = this.getHitLineWidth(), s = a / 2; return { minX: n - s, minY: r - s, maxX: n + i + s, maxY: r + o + s } } }), e.exports = o }, function (e, t, n) { var r = n(2), i = n(9), o = function e(t) { e.superclass.constructor.call(this, t) }; o.ATTRS = { x: 0, y: 0, rx: 1, ry: 1, lineWidth: 1 }, r.extend(o, i), r.augment(o, { canFill: !0, canStroke: !0, type: "ellipse", getDefaultAttrs: function () { return { lineWidth: 1 } }, calculateBox: function () { var e = this._attrs, t = e.x, n = e.y, r = e.rx, i = e.ry, o = this.getHitLineWidth(), a = r + o / 2, s = i + o / 2; return { minX: t - a, minY: n - s, maxX: t + a, maxY: n + s } }, createPath: function (e) { var t = this._attrs, n = t.x, i = t.y, o = t.rx, a = t.ry; e = e || self.get("context"); var s = o > a ? o : a, c = o > a ? 1 : o / a, l = o > a ? a / o : 1, u = [1, 0, 0, 0, 1, 0, 0, 0, 1]; r.mat3.scale(u, u, [c, l]), r.mat3.translate(u, u, [n, i]), e.beginPath(), e.save(), e.transform(u[0], u[1], u[3], u[4], u[6], u[7]), e.arc(0, 0, s, 0, 2 * Math.PI), e.restore(), e.closePath() } }), e.exports = o }, function (e, t, n) { var r = n(2), i = n(9), o = n(53), a = function e(t) { e.superclass.constructor.call(this, t) }; a.ATTRS = { x: 0, y: 0, rs: 0, re: 0, startAngle: 0, endAngle: 0, clockwise: !1, lineWidth: 1 }, r.extend(a, i), r.augment(a, { canFill: !0, canStroke: !0, type: "fan", getDefaultAttrs: function () { return { clockwise: !1, lineWidth: 1, rs: 0, re: 0 } }, calculateBox: function () { var e = this, t = e._attrs, n = t.x, r = t.y, i = t.rs, a = t.re, s = t.startAngle, c = t.endAngle, l = t.clockwise, u = this.getHitLineWidth(), h = o.box(n, r, i, s, c, l), f = o.box(n, r, a, s, c, l), d = Math.min(h.minX, f.minX), p = Math.min(h.minY, f.minY), v = Math.max(h.maxX, f.maxX), m = Math.max(h.maxY, f.maxY), g = u / 2; return { minX: d - g, minY: p - g, maxX: v + g, maxY: m + g } }, createPath: function (e) { var t = this._attrs, n = t.x, r = t.y, i = t.rs, o = t.re, a = t.startAngle, s = t.endAngle, c = t.clockwise, l = { x: Math.cos(a) * i + n, y: Math.sin(a) * i + r }, u = { x: Math.cos(a) * o + n, y: Math.sin(a) * o + r }, h = { x: Math.cos(s) * i + n, y: Math.sin(s) * i + r }; e = e || self.get("context"), e.beginPath(), e.moveTo(l.x, l.y), e.lineTo(u.x, u.y), e.arc(n, r, o, a, s, c), e.lineTo(h.x, h.y), e.arc(n, r, i, s, a, !c), e.closePath() } }), e.exports = a }, function (e, t, n) { var r = n(2), i = n(9), o = function e(t) { e.superclass.constructor.call(this, t) }; o.ATTRS = { x: 0, y: 0, img: void 0, width: 0, height: 0, sx: null, sy: null, swidth: null, sheight: null }, r.extend(o, i), r.augment(o, { type: "image", isHitBox: function () { return !1 }, calculateBox: function () { var e = this._attrs; this._cfg.attrs && this._cfg.attrs.img === e.img || this._setAttrImg(); var t = e.x, n = e.y, r = e.width, i = e.height; return { minX: t, minY: n, maxX: t + r, maxY: n + i } }, _beforeSetLoading: function (e) { var t = this.get("canvas"); return !1 === e && !0 === this.get("toDraw") && (this._cfg.loading = !1, t.draw()), e }, _setAttrImg: function () { var e = this, t = e._attrs, n = t.img; if (!r.isString(n)) return n instanceof Image ? (t.width || e.attr("width", n.width), t.height || e.attr("height", n.height), n) : n instanceof HTMLElement && r.isString(n.nodeName) && "CANVAS" === n.nodeName.toUpperCase() ? (t.width || e.attr("width", Number(n.getAttribute("width"))), t.height || e.attr("height", Number(n.getAttribute("height"))), n) : n instanceof ImageData ? (t.width || e.attr("width", n.width), t.height || e.attr("height", n.height), n) : null; var i = new Image; i.onload = function () { if (e.get("destroyed")) return !1; e.attr("imgSrc", n), e.attr("img", i); var t = e.get("callback"); t && t.call(e), e.set("loading", !1) }, i.src = n, i.crossOrigin = "Anonymous", e.set("loading", !0) }, drawInner: function (e) { this._cfg.hasUpdate && this._setAttrImg(), this.get("loading") ? this.set("toDraw", !0) : (this._drawImage(e), this._cfg.hasUpdate = !1) }, _drawImage: function (e) { var t = this._attrs, n = t.x, i = t.y, o = t.img, a = t.width, s = t.height, c = t.sx, l = t.sy, u = t.swidth, h = t.sheight; this.set("toDraw", !1); var f = o; if (f instanceof ImageData && (f = new Image, f.src = o), f instanceof Image || f instanceof HTMLElement && r.isString(f.nodeName) && "CANVAS" === f.nodeName.toUpperCase()) { if (r.isNil(c) || r.isNil(l) || r.isNil(u) || r.isNil(h)) return void e.drawImage(f, n, i, a, s); if (!r.isNil(c) && !r.isNil(l) && !r.isNil(u) && !r.isNil(h)) return void e.drawImage(f, c, l, u, h, n, i, a, s) } } }), e.exports = o }, function (e, t, n) { var r = n(2), i = n(9), o = n(54), a = n(52), s = function e(t) { e.superclass.constructor.call(this, t) }; s.ATTRS = { x1: 0, y1: 0, x2: 0, y2: 0, lineWidth: 1, startArrow: !1, endArrow: !1 }, r.extend(s, i), r.augment(s, { canStroke: !0, type: "line", getDefaultAttrs: function () { return { lineWidth: 1, startArrow: !1, endArrow: !1 } }, calculateBox: function () { var e = this._attrs, t = e.x1, n = e.y1, r = e.x2, i = e.y2, o = this.getHitLineWidth(); return a.box(t, n, r, i, o) }, createPath: function (e) { var t = this._attrs, n = t.x1, r = t.y1, i = t.x2, o = t.y2; e = e || self.get("context"), e.beginPath(), e.moveTo(n, r), e.lineTo(i, o) }, afterPath: function (e) { var t = this._attrs, n = t.x1, r = t.y1, i = t.x2, a = t.y2; e = e || this.get("context"), t.startArrow && o.addStartArrow(e, t, i, a, n, r), t.endArrow && o.addEndArrow(e, t, n, r, i, a) }, getPoint: function (e) { var t = this._attrs; return { x: a.at(t.x1, t.x2, e), y: a.at(t.y1, t.y2, e) } } }), e.exports = s }, function (e, t, n) { var r = n(2), i = n(9), o = n(55), a = n(37), s = n(54), c = n(96), l = n(94), u = function e(t) { e.superclass.constructor.call(this, t) }; u.ATTRS = { path: null, lineWidth: 1, startArrow: !1, endArrow: !1 }, r.extend(u, i), r.augment(u, { canFill: !0, canStroke: !0, type: "path", getDefaultAttrs: function () { return { lineWidth: 1, startArrow: !1, endArrow: !1 } }, _afterSetAttrPath: function (e) { var t = this; if (r.isNil(e)) return t.setSilent("segments", null), void t.setSilent("box", void 0); var n, i = a.parsePath(e), s = []; if (r.isArray(i) && 0 !== i.length && ("M" === i[0][0] || "m" === i[0][0])) { for (var c = i.length, l = 0; l < i.length; l++) { var u = i[l]; n = new o(u, n, l === c - 1), s.push(n) } t.setSilent("segments", s), t.setSilent("tCache", null), t.setSilent("box", null) } }, calculateBox: function () { var e = this, t = e.get("segments"); if (!t) return null; var n = this.getHitLineWidth(), i = 1 / 0, o = -1 / 0, a = 1 / 0, s = -1 / 0; return r.each(t, (function (e) { e.getBBox(n); var t = e.box; t && (t.minX < i && (i = t.minX), t.maxX > o && (o = t.maxX), t.minY < a && (a = t.minY), t.maxY > s && (s = t.maxY)) })), i === 1 / 0 || a === 1 / 0 ? { minX: 0, minY: 0, maxX: 0, maxY: 0 } : { minX: i, minY: a, maxX: o, maxY: s } }, _setTcache: function () { var e, t, n, i, o = 0, a = 0, s = [], c = this._cfg.curve; c && (r.each(c, (function (e, t) { n = c[t + 1], i = e.length, n && (o += l.len(e[i - 2], e[i - 1], n[1], n[2], n[3], n[4], n[5], n[6])) })), r.each(c, (function (r, u) { n = c[u + 1], i = r.length, n && (e = [], e[0] = a / o, t = l.len(r[i - 2], r[i - 1], n[1], n[2], n[3], n[4], n[5], n[6]), a += t, e[1] = a / o, s.push(e)) })), this._cfg.tCache = s) }, _calculateCurve: function () { var e = this, t = e._attrs, n = t.path; this._cfg.curve = c.pathTocurve(n) }, getStartTangent: function () { var e, t, n, i, o = this.get("segments"); if (o.length > 1) if (e = o[0].endPoint, t = o[1].endPoint, n = o[1].startTangent, i = [], r.isFunction(n)) { var a = n(); i.push([e.x - a[0], e.y - a[1]]), i.push([e.x, e.y]) } else i.push([t.x, t.y]), i.push([e.x, e.y]); return i }, getEndTangent: function () { var e, t, n, i, o = this.get("segments"), a = o.length; if (a > 1) if (e = o[a - 2].endPoint, t = o[a - 1].endPoint, n = o[a - 1].endTangent, i = [], r.isFunction(n)) { var s = n(); i.push([t.x - s[0], t.y - s[1]]), i.push([t.x, t.y]) } else i.push([e.x, e.y]), i.push([t.x, t.y]); return i }, getPoint: function (e) { var t, n, i = this._cfg.tCache; i || (this._calculateCurve(), this._setTcache(), i = this._cfg.tCache); var o = this._cfg.curve; if (!i) return o ? { x: o[0][1], y: o[0][2] } : null; r.each(i, (function (r, i) { e >= r[0] && e <= r[1] && (t = (e - r[0]) / (r[1] - r[0]), n = i) })); var a = o[n]; if (r.isNil(a) || r.isNil(n)) return null; var s = a.length, c = o[n + 1]; return { x: l.at(a[s - 2], c[1], c[3], c[5], 1 - t), y: l.at(a[s - 1], c[2], c[4], c[6], 1 - t) } }, createPath: function (e) { var t = this, n = t.get("segments"); if (r.isArray(n)) { e = e || t.get("context"), e.beginPath(); for (var i = n.length, o = 0; o < i; o++)n[o].draw(e) } }, afterPath: function (e) { var t = this, n = t._attrs, i = t.get("segments"), o = n.path; if (e = e || t.get("context"), r.isArray(i) && 1 !== i.length && (n.startArrow || n.endArrow) && "z" !== o[o.length - 1] && "Z" !== o[o.length - 1] && !n.fill) { var a = t.getStartTangent(); s.addStartArrow(e, n, a[0][0], a[0][1], a[1][0], a[1][1]); var c = t.getEndTangent(); s.addEndArrow(e, n, c[0][0], c[0][1], c[1][0], c[1][1]) } } }), e.exports = u }, function (e, t, n) { var r = n(2), i = n(9), o = function e(t) { e.superclass.constructor.call(this, t) }; o.ATTRS = { points: null, lineWidth: 1 }, r.extend(o, i), r.augment(o, { canFill: !0, canStroke: !0, type: "polygon", getDefaultAttrs: function () { return { lineWidth: 1 } }, calculateBox: function () { var e = this, t = e._attrs, n = t.points, i = this.getHitLineWidth(); if (!n || 0 === n.length) return null; var o = 1 / 0, a = 1 / 0, s = -1 / 0, c = -1 / 0; r.each(n, (function (e) { var t = e[0], n = e[1]; t < o && (o = t), t > s && (s = t), n < a && (a = n), n > c && (c = n) })); var l = i / 2; return { minX: o - l, minY: a - l, maxX: s + l, maxY: c + l } }, createPath: function (e) { var t = this, n = t._attrs, i = n.points; i.length < 2 || (e = e || t.get("context"), e.beginPath(), r.each(i, (function (t, n) { 0 === n ? e.moveTo(t[0], t[1]) : e.lineTo(t[0], t[1]) })), e.closePath()) } }), e.exports = o }, function (e, t, n) { var r = n(2), i = n(9), o = n(54), a = n(52), s = function e(t) { e.superclass.constructor.call(this, t) }; s.ATTRS = { points: null, lineWidth: 1, startArrow: !1, endArrow: !1, tCache: null }, r.extend(s, i), r.augment(s, { canStroke: !0, type: "polyline", tCache: null, getDefaultAttrs: function () { return { lineWidth: 1, startArrow: !1, endArrow: !1 } }, calculateBox: function () { var e = this, t = e._attrs, n = this.getHitLineWidth(), i = t.points; if (!i || 0 === i.length) return null; var o = 1 / 0, a = 1 / 0, s = -1 / 0, c = -1 / 0; r.each(i, (function (e) { var t = e[0], n = e[1]; t < o && (o = t), t > s && (s = t), n < a && (a = n), n > c && (c = n) })); var l = n / 2; return { minX: o - l, minY: a - l, maxX: s + l, maxY: c + l } }, _setTcache: function () { var e, t, n = this, i = n._attrs, o = i.points, s = 0, c = 0, l = []; o && 0 !== o.length && (r.each(o, (function (e, t) { o[t + 1] && (s += a.len(e[0], e[1], o[t + 1][0], o[t + 1][1])) })), s <= 0 || (r.each(o, (function (n, r) { o[r + 1] && (e = [], e[0] = c / s, t = a.len(n[0], n[1], o[r + 1][0], o[r + 1][1]), c += t, e[1] = c / s, l.push(e)) })), this.tCache = l)) }, createPath: function (e) { var t, n, r = this, i = r._attrs, o = i.points; if (!(o.length < 2)) { for (e = e || r.get("context"), e.beginPath(), e.moveTo(o[0][0], o[0][1]), n = 1, t = o.length - 1; n < t; n++)e.lineTo(o[n][0], o[n][1]); e.lineTo(o[t][0], o[t][1]) } }, getStartTangent: function () { var e = this.__attrs.points, t = []; return t.push([e[1][0], e[1][1]]), t.push([e[0][0], e[0][1]]), t }, getEndTangent: function () { var e = this.__attrs.points, t = e.length - 1, n = []; return n.push([e[t - 1][0], e[t - 1][1]]), n.push([e[t][0], e[t][1]]), n }, afterPath: function (e) { var t = this, n = t._attrs, r = n.points, i = r.length - 1; e = e || t.get("context"), n.startArrow && o.addStartArrow(e, n, r[1][0], r[1][1], r[0][0], r[0][1]), n.endArrow && o.addEndArrow(e, n, r[i - 1][0], r[i - 1][1], r[i][0], r[i][1]) }, getPoint: function (e) { var t, n, i = this._attrs, o = i.points, s = this.tCache; return s || (this._setTcache(), s = this.tCache), r.each(s, (function (r, i) { e >= r[0] && e <= r[1] && (t = (e - r[0]) / (r[1] - r[0]), n = i) })), { x: a.at(o[n][0], o[n + 1][0], t), y: a.at(o[n][1], o[n + 1][1], t) } } }), e.exports = s }, function (e, t, n) { var r = n(2), i = n(37), o = i.parseRadius, a = n(9), s = function e(t) { e.superclass.constructor.call(this, t) }; s.ATTRS = { x: 0, y: 0, width: 0, height: 0, radius: 0, lineWidth: 1 }, r.extend(s, a), r.augment(s, { canFill: !0, canStroke: !0, type: "rect", getDefaultAttrs: function () { return { lineWidth: 1, radius: 0 } }, calculateBox: function () { var e = this, t = e._attrs, n = t.x, r = t.y, i = t.width, o = t.height, a = this.getHitLineWidth(), s = a / 2; return { minX: n - s, minY: r - s, maxX: n + i + s, maxY: r + o + s } }, createPath: function (e) { var t = this, n = t._attrs, r = n.x, i = n.y, a = n.width, s = n.height, c = n.radius; if (e = e || t.get("context"), e.beginPath(), 0 === c) e.rect(r, i, a, s); else { var l = o(c); e.moveTo(r + l.r1, i), e.lineTo(r + a - l.r2, i), 0 !== l.r2 && e.arc(r + a - l.r2, i + l.r2, l.r2, -Math.PI / 2, 0), e.lineTo(r + a, i + s - l.r3), 0 !== l.r3 && e.arc(r + a - l.r3, i + s - l.r3, l.r3, 0, Math.PI / 2), e.lineTo(r + l.r4, i + s), 0 !== l.r4 && e.arc(r + l.r4, i + s - l.r4, l.r4, Math.PI / 2, Math.PI), e.lineTo(r, i + l.r1), 0 !== l.r1 && e.arc(r + l.r1, i + l.r1, l.r1, Math.PI, 1.5 * Math.PI), e.closePath() } } }), e.exports = s }, function (e, t, n) { var r = n(2), i = n(9), o = function e(t) { e.superclass.constructor.call(this, t) }; o.ATTRS = { x: 0, y: 0, text: null, fontSize: 12, fontFamily: "sans-serif", fontStyle: "normal", fontWeight: "normal", fontVariant: "normal", textAlign: "start", textBaseline: "bottom", lineHeight: null, textArr: null }, r.extend(o, i), r.augment(o, { canFill: !0, canStroke: !0, type: "text", getDefaultAttrs: function () { return { lineWidth: 1, lineCount: 1, fontSize: 12, fontFamily: "sans-serif", fontStyle: "normal", fontWeight: "normal", fontVariant: "normal", textAlign: "start", textBaseline: "bottom" } }, initTransform: function () { var e = this._attrs.fontSize; e && +e < 12 && this.transform([["t", -1 * this._attrs.x, -1 * this._attrs.y], ["s", +e / 12, +e / 12], ["t", this._attrs.x, this._attrs.y]]) }, _assembleFont: function () { var e = this._attrs, t = e.fontSize, n = e.fontFamily, r = e.fontWeight, i = e.fontStyle, o = e.fontVariant; e.font = [i, o, r, t + "px", n].join(" ") }, _setAttrText: function () { var e = this._attrs, t = e.text, n = null; if (r.isString(t) && -1 !== t.indexOf("\n")) { n = t.split("\n"); var i = n.length; e.lineCount = i } e.textArr = n }, _getTextHeight: function () { var e = this._attrs, t = e.lineCount, n = 1 * e.fontSize; if (t > 1) { var r = this._getSpaceingY(); return n * t + r * (t - 1) } return n }, isHitBox: function () { return !1 }, calculateBox: function () { var e = this, t = e._attrs, n = this._cfg; n.attrs && !n.hasUpdate || (this._assembleFont(), this._setAttrText()), t.textArr || this._setAttrText(); var r = t.x, i = t.y, o = e.measureText(); if (!o) return { minX: r, minY: i, maxX: r, maxY: i }; var a = e._getTextHeight(), s = t.textAlign, c = t.textBaseline, l = e.getHitLineWidth(), u = { x: r, y: i - a }; s && ("end" === s || "right" === s ? u.x -= o : "center" === s && (u.x -= o / 2)), c && ("top" === c ? u.y += a : "middle" === c && (u.y += a / 2)), this.set("startPoint", u); var h = l / 2; return { minX: u.x - h, minY: u.y - h, maxX: u.x + o + h, maxY: u.y + a + h } }, _getSpaceingY: function () { var e = this._attrs, t = e.lineHeight, n = 1 * e.fontSize; return t ? t - n : .14 * n }, drawInner: function (e) { var t = this, n = t._attrs, i = this._cfg; i.attrs && !i.hasUpdate || (this._assembleFont(), this._setAttrText()), e.font = n.font; var o = n.text; if (o) { var a = n.textArr, s = n.x, c = n.y; if (e.beginPath(), t.hasStroke()) { var l = n.strokeOpacity; r.isNil(l) || 1 === l || (e.globalAlpha = l), a ? t._drawTextArr(e, !1) : e.strokeText(o, s, c), e.globalAlpha = 1 } if (t.hasFill()) { var u = n.fillOpacity; r.isNil(u) || 1 === u || (e.globalAlpha = u), a ? t._drawTextArr(e, !0) : e.fillText(o, s, c) } i.hasUpdate = !1 } }, _drawTextArr: function (e, t) { var n, i = this._attrs.textArr, o = this._attrs.textBaseline, a = 1 * this._attrs.fontSize, s = this._getSpaceingY(), c = this._attrs.x, l = this._attrs.y, u = this.getBBox(), h = u.maxY - u.minY; r.each(i, (function (r, i) { n = l + i * (s + a) - h + a, "middle" === o && (n += h - a - (h - a) / 2), "top" === o && (n += h - a), t ? e.fillText(r, c, n) : e.strokeText(r, c, n) })) }, measureText: function () { var e, t = this, n = t._attrs, i = n.text, o = n.font, a = n.textArr, s = 0; if (!r.isNil(i)) { var c = document.createElement("canvas").getContext("2d"); return c.save(), c.font = o, a ? r.each(a, (function (t) { e = c.measureText(t).width, s < e && (s = e), c.restore() })) : (s = c.measureText(i).width, c.restore()), s } } }), e.exports = o }, function (e, t, n) { var r = n(51), i = r.Group, o = n(4), a = function e(t) { e.superclass.constructor.call(this, t) }; o.extend(a, i), o.augment(a, { getDefaultCfg: function () { return { zIndex: 1, type: "line", lineStyle: null, items: null, alternateColor: null, matrix: null, hideFirstLine: !1, hideLastLine: !1, hightLightZero: !1, zeroLineStyle: { stroke: "#595959", lineDash: [0, 0] } } }, _renderUI: function () { a.superclass._renderUI.call(this), this._drawLines() }, _drawLines: function () { var e = this, t = e.get("lineStyle"), n = e.get("items"); n && n.length && (e._precessItems(n), e._drawGridLines(n, t)) }, _precessItems: function (e) { var t, n = this; o.each(e, (function (e, r) { t && n.get("alternateColor") && n._drawAlternativeBg(e, t, r), t = e })) }, _drawGridLines: function (e, t) { var n, r, i, a, s = this, c = this.get("type"), l = e.length; "line" === c || "polygon" === c ? o.each(e, (function (e, u) { s.get("hideFirstLine") && 0 === u || s.get("hideLastLine") && u === l - 1 || (a = e.points, r = [], "line" === c ? (r.push(["M", a[0].x, a[0].y]), r.push(["L", a[a.length - 1].x, a[a.length - 1].y])) : o.each(a, (function (e, t) { 0 === t ? r.push(["M", e.x, e.y]) : r.push(["L", e.x, e.y]) })), i = s._drawZeroLine(c, u) ? o.mix({}, s.get("zeroLineStyle"), { path: r }) : o.mix({}, t, { path: r }), n = s.addShape("path", { attrs: i }), n.name = "axis-grid", n._id = e._id, n.set("coord", s.get("coord")), s.get("appendInfo") && n.setSilent("appendInfo", s.get("appendInfo"))) })) : o.each(e, (function (e, c) { s.get("hideFirstLine") && 0 === c || s.get("hideLastLine") && c === l - 1 || (a = e.points, r = [], o.each(a, (function (e, t) { var n = e.radius; 0 === t ? r.push(["M", e.x, e.y]) : r.push(["A", n, n, 0, 0, e.flag, e.x, e.y]) })), i = o.mix({}, t, { path: r }), n = s.addShape("path", { attrs: i }), n.name = "axis-grid", n._id = e._id, n.set("coord", s.get("coord")), s.get("appendInfo") && n.setSilent("appendInfo", s.get("appendInfo"))) })) }, _drawZeroLine: function (e, t) { var n = this, r = n.get("tickValues"); return !("line" !== e || !r || 0 !== r[t] || !n.get("hightLightZero")) }, _drawAlternativeBg: function (e, t, n) { var r, i, a, s = this, c = s.get("alternateColor"); o.isString(c) ? i = c : o.isArray(c) && (i = c[0], a = c[1]), n % 2 === 0 ? a && (r = s._getBackItem(t.points, e.points, a)) : i && (r = s._getBackItem(t.points, e.points, i)); var l = s.addShape("Path", { attrs: r }); l.name = "axis-grid-rect", l._id = e._id && e._id.replace("grid", "grid-rect"), l.set("coord", s.get("coord")), s.get("appendInfo") && l.setSilent("appendInfo", s.get("appendInfo")) }, _getBackItem: function (e, t, n) { var r = [], i = this.get("type"); if ("line" === i) r.push(["M", e[0].x, e[0].y]), r.push(["L", e[e.length - 1].x, e[e.length - 1].y]), r.push(["L", t[t.length - 1].x, t[t.length - 1].y]), r.push(["L", t[0].x, t[0].y]), r.push(["Z"]); else if ("polygon" === i) { o.each(e, (function (e, t) { 0 === t ? r.push(["M", e.x, e.y]) : r.push(["L", e.x, e.y]) })); for (var a = t.length - 1; a >= 0; a--)r.push(["L", t[a].x, t[a].y]); r.push(["Z"]) } else { var s = e[0].flag; o.each(e, (function (e, t) { var n = e.radius; 0 === t ? r.push(["M", e.x, e.y]) : r.push(["A", n, n, 0, 0, e.flag, e.x, e.y]) })); for (var c = t.length - 1; c >= 0; c--) { var l = t[c], u = l.radius; c === t.length - 1 ? r.push(["M", l.x, l.y]) : r.push(["A", u, u, 0, 0, 1 === s ? 0 : 1, l.x, l.y]) } } return { fill: n, path: r } } }), e.exports = a }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = l.DomUtil, h = n(36), f = n(364), d = n(365), p = n(366), v = { scatter: f, map: d, treemap: p }, m = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { name: "label", type: "default", textStyle: null, formatter: null, items: null, useHtml: !1, containerTpl: '<div class="g-labels" style="position:absolute;top:0;left:0;"></div>', itemTpl: '<div class="g-label" style="position:absolute;">{text}</div>', labelLine: !1, lineGroup: null, shapes: null, config: !0, capture: !0 }) }, n.clear = function () { var t = this.get("group"), n = this.get("container"); t && !t.get("destroyed") && t.clear(), n && (n.innerHTML = ""), e.prototype.clear.call(this) }, n.destroy = function () { var t = this.get("group"), n = this.get("container"); t.destroy || t.destroy(), n && n.parentNode && n.parentNode.removeChild(n), e.prototype.destroy.call(this) }, n.render = function () { this.clear(), this._init(), this.beforeDraw(), this.draw(), this.afterDraw() }, n._dryDraw = function () { var e = this, t = e.get("items"), n = e.getLabels(), r = n.length; l.each(t, (function (t, i) { if (i < r) { var o = n[i]; e.changeLabel(o, t) } else { var a = e._addLabel(t, i); a && (a._id = t._id, a.set("coord", t.coord)) } })); for (var i = r - 1; i >= t.length; i--)n[i].remove(); e._adjustLabels(), !e.get("labelLine") && e.get("config") || e.drawLines() }, n.draw = function () { this._dryDraw(), this.get("canvas").draw() }, n.changeLabel = function (e, t) { if (e) if (e.tagName) { var n = this._createDom(t); e.innerHTML = n.innerHTML, this._setCustomPosition(t, e) } else e._id = t._id, e.attr("text", t.text), e.attr("x") === t.x && e.attr("y") === t.y || (e.resetMatrix(), t.textStyle.rotate && (e.rotateAtStart(t.textStyle.rotate), delete t.textStyle.rotate), e.attr(t)) }, n.show = function () { var e = this.get("group"), t = this.get("container"); e && e.show(), t && (t.style.opacity = 1) }, n.hide = function () { var e = this.get("group"), t = this.get("container"); e && e.hide(), t && (t.style.opacity = 0) }, n.drawLines = function () { var e = this, t = e.get("labelLine"); "boolean" === typeof t && e.set("labelLine", {}); var n = e.get("lineGroup"); !n || n.get("destroyed") ? (n = e.get("group").addGroup({ elCls: "x-line-group" }), e.set("lineGroup", n)) : n.clear(), l.each(e.get("items"), (function (t) { e.lineToLabel(t, n) })) }, n.lineToLabel = function (e, t) { var n = this; if (n.get("config") || e.labelLine) { var r = e.labelLine || n.get("labelLine"), i = "undefined" === typeof e.capture ? n.get("capture") : e.capture, o = r.path; if (o && l.isFunction(r.path) && (o = r.path(e)), !o) { var a = e.start || { x: e.x - e._offset.x, y: e.y - e._offset.y }; o = [["M", a.x, a.y], ["L", e.x, e.y]] } var s = e.color; s || (s = e.textStyle && e.textStyle.fill ? e.textStyle.fill : "#000"); var c = t.addShape("path", { attrs: l.mix({ path: o, fill: null, stroke: s }, r), capture: i }); c.name = n.get("name"), c._id = e._id && e._id.replace("glabel", "glabelline"), c.set("coord", n.get("coord")) } }, n._adjustLabels = function () { var e = this, t = e.get("type"), n = e.getLabels(), r = e.get("shapes"), i = v[t]; "default" !== t && i && i(n, r) }, n.getLabels = function () { var e = this.get("container"); return e ? l.toArray(e.childNodes) : this.get("group").get("children") }, n._addLabel = function (e, t) { var n = e; return this.get("config") && (n = this._getLabelCfg(e, t)), this._createText(n) }, n._getLabelCfg = function (e, t) { var n = this.get("textStyle") || {}, r = this.get("formatter"), i = this.get("htmlTemplate"); if (!l.isObject(e)) { var o = e; e = {}, e.text = o } l.isFunction(n) && (n = n(e.text, e, t)), r && (e.text = r(e.text, e, t)), i && (e.useHtml = !0, l.isFunction(i) && (e.text = i(e.text, e, t))), l.isNil(e.text) && (e.text = ""), e.text = e.text + ""; var a = l.mix({}, e, { textStyle: n }, { x: e.x || 0, y: e.y || 0 }); return a }, n._init = function () { if (!this.get("group")) { var e = this.get("canvas").addGroup({ id: "label-group" }); this.set("group", e) } }, n.initHtmlContainer = function () { var e = this.get("container"); if (e) l.isString(e) && (e = document.getElementById(e), e && this.set("container", e)); else { var t = this.get("containerTpl"), n = this.get("canvas").get("el").parentNode; e = u.createDom(t), n.style.position = "relative", n.appendChild(e), this.set("container", e) } return e }, n._createText = function (e) { var t, n = l.deepMix({}, e), r = this.get("container"), i = "undefined" === typeof n.capture ? this.get("capture") : n.capture; if (!n.useHtml && !n.htmlTemplate) { var o = this.get("name"), a = n.point, s = this.get("group"); delete n.point; var c = n.rotate; return n.textStyle && (n.textStyle.rotate && (c = n.textStyle.rotate, delete n.textStyle.rotate), n = l.mix({ x: n.x, y: n.y, textAlign: n.textAlign, text: n.text }, n.textStyle)), t = s.addShape("text", { attrs: n, capture: i }), c && (Math.abs(c) > 2 * Math.PI && (c = c / 180 * Math.PI), t.transform([["t", -n.x, -n.y], ["r", c], ["t", n.x, n.y]])), t.setSilent("origin", a || n), t.name = o, this.get("appendInfo") && t.setSilent("appendInfo", this.get("appendInfo")), t } r || (r = this.initHtmlContainer()); var u = this._createDom(n); r.appendChild(u), this._setCustomPosition(n, u) }, n._createDom = function (e) { var t = this.get("itemTpl"), n = l.substitute(t, { text: e.text }); return u.createDom(n) }, n._setCustomPosition = function (e, t) { var n = e.textAlign || "left", r = e.y, i = e.x, o = u.getOuterWidth(t), a = u.getOuterHeight(t); r -= a / 2, "center" === n ? i -= o / 2 : "right" === n && (i -= o), t.style.top = parseInt(r, 10) + "px", t.style.left = parseInt(i, 10) + "px" }, t }(h); e.exports = m }, function (e, t) { var n = function () { function e() { this.bitmap = [] } var t = e.prototype; return t.hasGap = function (e) { for (var t = !0, n = this.bitmap, r = Math.floor(e.minX), i = Math.ceil(e.maxX), o = Math.floor(e.minY), a = Math.ceil(e.maxY) - 1, s = r; s < i; s++)if (n[s]) { if (s === r || s === i - 1) { for (var c = o; c <= a; c++)if (n[s][c]) { t = !1; break } } else if (n[s][o] || n[s][a]) { t = !1; break } } else n[s] = []; return t }, t.fillGap = function (e) { for (var t = this.bitmap, n = Math.floor(e.minX), r = Math.ceil(e.maxX) - 1, i = Math.floor(e.minY), o = Math.ceil(e.maxY) - 1, a = n; a <= r; a++) { for (var s = i; s < o; s += 8)t[a] || (t[a] = []), t[a][s] = !0; t[a][o] = !0 } for (var c = i; c <= o; c++)t[n][c] = !0, t[r][c] = !0 }, e }(); e.exports = n }, function (e, t, n) { var r = n(4); e.exports = { getFirstScale: function (e) { var t; return r.each(e, (function (e) { if (e) return t = e, !1 })), t } } }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(191), h = n(16), f = h.FONT_FAMILY, d = l.Event, p = l.Group; function v(e, t) { var n = null, r = t instanceof p || "legendGroup" === t.name ? t.get("value") : t; return l.each(e, (function (e) { if (e.value === r) return n = e, !1 })), n } function m(e, t) { return e.findBy((function (e) { return e.name === t })) } var g = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { type: "category-legend", items: null, itemGap: 5, itemMarginBottom: 8, itemsGroup: null, layout: "horizontal", allowAllCanceled: !1, backPadding: [0, 0, 0, 0], unCheckColor: "#ccc", background: { fill: "#fff", fillOpacity: 0 }, itemWidth: null, textStyle: { fill: "#333", fontSize: 12, textAlign: "start", textBaseline: "middle", fontFamily: f }, _wordSpaceing: 8, clickable: !0, selectedMode: "multiple", reversed: !1, autoWrap: !0, highlight: !1, activeOpacity: .7, inactiveOpacity: 1 }) }, n.render = function () { e.prototype.render.call(this), this._renderItems(), this.get("autoWrap") && this._adjustItems() }, n._bindEvents = function () { this.get("hoverable") && (this.get("group").on("mousemove", l.wrapBehavior(this, "_onMousemove")), this.get("group").on("mouseleave", l.wrapBehavior(this, "_onMouseleave"))), this.get("clickable") && this.get("group").on("click", l.wrapBehavior(this, "_onClick")) }, n._getLegendItem = function (e) { var t = e.get("parent"); return t && "legendGroup" === t.name ? t : null }, n.activate = function (e) { var t = this, n = this, r = n.get("itemsGroup"), i = r.get("children"), o = void 0; i.forEach((function (r) { if (o = m(r, "legend-marker"), o) { var i = r.get("checked"); t.get("highlight") ? r.get("value") === e && i ? o.attr("stroke", "#333") : o.attr("stroke", null) : r.get("value") === e && o.attr("fillOpacity", n.get("activeOpacity")) } })), this.get("canvas").draw() }, n.deactivate = function () { var e = this, t = this, n = t.get("itemsGroup"), r = n.get("children"), i = void 0, o = this.get("unCheckColor"); r.forEach((function (n) { if (i = m(n, "legend-marker"), i) if (e.get("highlight")) { var r = i.get("oriStroke"), a = n.get("checked"); r = r && !a ? o : "", i.attr("stroke", r) } else i.attr("fillOpacity", t.get("inactiveOpacity")) })), this.get("canvas").draw() }, n._onMousemove = function (e) { var t = this._getLegendItem(e.currentTarget); if (t && t.get("checked")) { var n = this.get("items"), r = new d("itemhover", e, !0, !0); r.item = v(n, t), r.checked = t.get("checked"), r.currentTarget = e.currentTarget, this.deactivate(), this.activate(t.get("value")), this.emit("itemhover", r) } else this.deactivate(), this.emit("itemunhover", e); this.get("canvas").draw() }, n._onMouseleave = function (e) { this.deactivate(), this.get("canvas").draw(), this.emit("itemunhover", e) }, n._onClick = function (e) { var t = this._getLegendItem(e.currentTarget), n = this.get("items"); if (t && !t.get("destroyed")) { var r = t.get("checked"), i = this.get("selectedMode"), o = v(n, t), a = new d("itemclick", e, !0, !0); if (a.item = o, a.currentTarget = t, a.appendInfo = e.currentTarget.get("appendInfo"), a.checked = "single" === i || !r, !this.get("allowAllCanceled") && r && 1 === this.getCheckedCount()) return void this.emit("clicklastitem", a); var s = this.get("unCheckColor"), c = this.get("textStyle").fill, u = void 0, h = void 0, f = void 0; if ("single" === i) { var p = this.get("itemsGroup"), g = p.get("children"); l.each(g, (function (e) { u = m(e, "legend-marker"), h = m(e, "legend-text"), f = m(e, "legend-item"), e !== t ? (u.attr("fill") && u.attr("fill", s), u.attr("stroke") && u.attr("stroke", s), h.attr("fill", s), u.setSilent("checked", !1), h.setSilent("checked", !1), f.setSilent("checked", !1), e.setSilent("checked", !1)) : (u.attr("fill") && o && o.marker && u.attr("fill", o.marker.fill), u.attr("stroke") && o && o.marker && u.attr("stroke", o.marker.stroke), h.attr("fill", c), u.setSilent("checked", !0), h.setSilent("checked", !0), f.setSilent("checked", !0), e.setSilent("checked", !0)) })) } else u = m(t, "legend-marker"), h = m(t, "legend-text"), f = m(t, "legend-item"), u.attr("fill") && o && o.marker && u.attr("fill", r ? s : o.marker.fill), u.attr("stroke") && o && o.marker && u.attr("stroke", r ? s : o.marker.stroke), h.attr("fill", r ? s : c), t.setSilent("checked", !r), u.setSilent("checked", !r), h.setSilent("checked", !r), f.setSilent("checked", !r); this.emit("itemclick", a) } this.get("canvas").draw() }, n._renderItems = function () { var e = this, t = this.get("items"); if (this.get("reversed") && t.reverse(), l.each(t, (function (t, n) { e._addItem(t, n) })), this.get("highlight")) { var n = this.get("itemsGroup"), r = n.get("children"), i = void 0; r.forEach((function (e) { i = m(e, "legend-marker"); var t = i.get("oriStroke"); t || (i.attr("stroke") ? i.set("oriStroke", i.attr("stroke")) : i.set("oriStroke", "")) })) } }, n._formatItemValue = function (e) { var t = this.get("formatter") || this.get("itemFormatter"); return t && (e = t.call(this, e)), e }, n._getNextX = function () { var e = this.get("layout"), t = this.get("itemGap"), n = this.get("itemsGroup"), r = this.get("itemWidth"), i = n.get("children"), o = 0; return "horizontal" === e && l.each(i, (function (e) { o += (r || e.getBBox().width) + t })), o }, n._getNextY = function () { var e = this.get("itemMarginBottom"), t = this.get("titleShape") ? this.get("titleGap") : 0, n = this.get("layout"), r = this.get("itemsGroup"), i = this.get("titleShape"), o = r.get("children"), a = t; return i && (a += i.getBBox().height), "vertical" === n && l.each(o, (function (t) { a += t.getBBox().height + e })), a }, n._addItem = function (e) { var t = this.get("itemsGroup"), n = this._getNextX(), r = this._getNextY(), i = this.get("unCheckColor"), o = t.addGroup({ x: n, y: r, value: e.value, checked: e.checked }); o.set("viewId", this.get("viewId")); var a = this.get("textStyle"), s = this.get("_wordSpaceing"), c = 0; if (e.marker) { var u = l.mix({}, e.marker, { x: e.marker.radius + n, y: r }); e.checked || (u.fill && (u.fill = i), u.stroke && (u.stroke = i)); var h = o.addShape("marker", { type: "marker", attrs: u }); h.attr("cursor", "pointer"), h.name = "legend-marker", c += h.getBBox().width + s } var d = l.mix({}, { fill: "#333", fontSize: 12, textAlign: "start", textBaseline: "middle", fontFamily: f }, a, { x: c + n, y: r, text: this._formatItemValue(e.value) }); e.checked || l.mix(d, { fill: i }); var p = o.addShape("text", { attrs: d }); p.attr("cursor", "pointer"), p.name = "legend-text", this.get("appendInfo") && p.setSilent("appendInfo", this.get("appendInfo")); var v = o.getBBox(), m = this.get("itemWidth"), g = o.addShape("rect", { attrs: { x: n, y: r - v.height / 2, fill: "#fff", fillOpacity: 0, width: m || v.width, height: v.height } }); return g.attr("cursor", "pointer"), g.setSilent("origin", e), g.name = "legend-item", this.get("appendInfo") && g.setSilent("appendInfo", this.get("appendInfo")), o.name = "legendGroup", o }, n._adjustHorizontal = function () { var e = this.get("itemsGroup"), t = e.get("children"), n = this.get("maxLength"), r = this.get("itemGap"), i = this.get("itemMarginBottom"), o = this.get("titleShape") ? this.get("titleGap") : 0, a = 0, s = 0, c = void 0, u = void 0, h = void 0, f = this.get("itemWidth"); e.getBBox().width > n && l.each(t, (function (e) { h = e.getBBox(), c = f || h.width, u = h.height + i, n - s < c && (a++, s = 0), e.move(s, a * u + o), s += c + r })) }, n._adjustVertical = function () { var e = this.get("itemsGroup"), t = this.get("titleShape"), n = e.get("children"), r = this.get("maxLength"), i = this.get("itemGap"), o = this.get("itemMarginBottom"), a = this.get("titleGap"), s = t ? t.getBBox().height + a : 0, c = this.get("itemWidth"), u = s, h = void 0, f = void 0, d = void 0, p = 0, v = 0; e.getBBox().height > r && l.each(n, (function (e) { d = e.getBBox(), h = d.width, f = d.height, c ? p = c + i : h > p && (p = h + i), r - u < f ? (u = s, v += p, e.move(v, s)) : e.move(v, u), u += f + o })) }, n._adjustItems = function () { var e = this.get("layout"); "horizontal" === e ? this._adjustHorizontal() : this._adjustVertical() }, n.getWidth = function () { return e.prototype.getWidth.call(this) }, n.getHeight = function () { return e.prototype.getHeight.call(this) }, n.move = function (t, n) { e.prototype.move.call(this, t, n) }, t }(u); e.exports = g }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(36), h = n(16), f = h.FONT_FAMILY, d = function (e) { c(n, e); r(n); var t = n.prototype; function n(t) { var n; return n = e.call(this, t) || this, n._init(), n.beforeRender(), n.render(), n._adjustPositionOffset(), n._bindEvents(), n } return t.getDefaultCfg = function () { return { container: null, title: null, formatter: null, hoverable: !0, titleGap: 15, position: [0, 0], offset: [0, 0], offsetX: null, offsetY: null } }, t._init = function () { var e = this.get("group"), t = this.get("container"); this.set("canvas", t.get("canvas")); var n = this.get("position"); e || (e = t.addGroup({ x: 0 - n[0], y: 0 - n[1] })), this.set("group", e) }, t._adjustPositionOffset = function () { var e = this.get("position"), t = this.get("offset"), n = this.get("offsetX"), r = this.get("offsetY"); if (!l.isArray(t)) { var i = this.get("layout"); t = "vertical" === i ? [t, 0] : [0, t] } n && (t[0] = n), r && (t[1] = r); var o = this.get("group").getBBox(); this.move(-o.minX + e[0] + t[0], -o.minY + e[1] + t[1]) }, t.beforeRender = function () { var e = this.get("group"), t = e.addGroup(); this.set("itemsGroup", t) }, t.render = function () { this._renderTitle() }, t._renderTitle = function () { var e = this.get("title"), t = this.get("titleGap"); if (t = t || 0, e && e.text) { var n = this.get("group"), r = n.addShape("text", { attrs: l.mix({ x: 0, y: 0 - t, fill: "#333", textBaseline: "middle", fontFamily: f }, e) }); r.name = "legend-title", this.get("appendInfo") && r.setSilent("appendInfo", this.get("appendInfo")), this.set("titleShape", r) } }, t.getCheckedCount = function () { var e = this.get("itemsGroup"), t = e.get("children"), n = l.filter(t, (function (e) { return e.get("checked") })); return n.length }, t.setItems = function (e) { this.set("items", e), this.clear(), this.render() }, t.addItem = function (e) { var t = this.get("items"); t.push(e), this.clear(), this.render() }, t.clear = function () { var e = this.get("itemsGroup"); e.clear(); var t = this.get("group"); t.clear(), this.beforeRender() }, t.destroy = function () { var t = this.get("group"); t && t.destroy(), this._attrs = {}, this.removeAllListeners(), e.prototype.destroy.call(this) }, t.getWidth = function () { var e = this.get("group").getBBox(); return e.width }, t.getHeight = function () { var e = this.get("group").getBBox(); return e.height }, t.move = function (e, t) { this.get("group").move(e, t) }, t.draw = function () { this.get("canvas").draw() }, n }(u); e.exports = d }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(190), h = n(16), f = h.FONT_FAMILY, d = l.DomUtil, p = l.Group, v = "g2-legend", m = "g2-legend-title", g = "g2-legend-list", y = "g2-legend-list-item", b = "g2-legend-text", x = "g2-legend-marker"; function w(e, t) { return e.getElementsByClassName(t)[0] } function _(e, t) { var n = e.className; return l.isNil(n) ? e : (n = n.split(" "), n.indexOf(t) > -1 ? e : e.parentNode ? e.parentNode.className === v ? e.parentNode : _(e.parentNode, t) : null) } function C(e, t) { var n = null, r = t instanceof p ? t.get("value") : t; return l.each(e, (function (e) { if (e.value === r) return n = e, !1 })), n } var M = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { type: "category-legend", container: null, containerTpl: '<div class="' + v + '"><h4 class="' + m + '"></h4><ul class="' + g + '"></ul></div>', itemTpl: '<li class="' + y + ' item-{index} {checked}" data-color="{originColor}" data-value="{originValue}"><i class="' + x + '" style="background-color:{color};"></i><span class="' + b + '">{value}</span></li>', legendStyle: {}, textStyle: { fill: "#333", fontSize: 12, textAlign: "middle", textBaseline: "top", fontFamily: f }, abridgeText: !1, tipTpl: '<div class="textTip"></div>', tipStyle: { display: "none", fontSize: "12px", backgroundColor: "#fff", position: "absolute", width: "auto", height: "auto", padding: "3px", boxShadow: "2px 2px 5px #888" }, autoPosition: !0 }) }, n._init = function () { }, n.beforeRender = function () { }, n.render = function () { this._renderHTML() }, n._bindEvents = function () { var e = this, t = this.get("legendWrapper"), n = w(t, g); this.get("hoverable") && (n.onmousemove = function (t) { return e._onMousemove(t) }, n.onmouseout = function (t) { return e._onMouseleave(t) }), this.get("clickable") && (n.onclick = function (t) { return e._onClick(t) }) }, n._onMousemove = function (e) { var t = this.get("items"), n = e.target, r = n.className; if (r = r.split(" "), !(r.indexOf(v) > -1 || r.indexOf(g) > -1)) { var i = _(n, y), o = C(t, i.getAttribute("data-value")); o ? (this.deactivate(), this.activate(i.getAttribute("data-value")), this.emit("itemhover", { item: o, currentTarget: i, checked: o.checked })) : o || (this.deactivate(), this.emit("itemunhover", e)) } }, n._onMouseleave = function (e) { this.deactivate(), this.emit("itemunhover", e) }, n._onClick = function (e) { var t = this, n = this.get("legendWrapper"), r = w(n, g), i = this.get("unCheckColor"), o = this.get("items"), a = this.get("selectedMode"), s = r.childNodes, c = e.target, u = c.className; if (u = u.split(" "), !(u.indexOf(v) > -1 || u.indexOf(g) > -1)) { var h = _(c, y), f = w(h, b), d = w(h, x), p = C(o, h.getAttribute("data-value")); if (p) { var m = h.className, M = h.getAttribute("data-color"); if ("single" === a) p.checked = !0, l.each(s, (function (e) { if (e !== h) { var n = w(e, x); n.style.backgroundColor = i, e.className = e.className.replace("checked", "unChecked"), e.style.color = i; var r = C(o, e.getAttribute("data-value")); r.checked = !1 } else f && (f.style.color = t.get("textStyle").fill), d && (d.style.backgroundColor = M), h.className = m.replace("unChecked", "checked") })); else { var O = -1 !== m.indexOf("checked"), k = 0; if (l.each(s, (function (e) { -1 !== e.className.indexOf("checked") && k++ })), !this.get("allowAllCanceled") && O && 1 === k) return void this.emit("clicklastitem", { item: p, currentTarget: h, checked: "single" === a || p.checked }); p.checked = !p.checked, O ? (d && (d.style.backgroundColor = i), h.className = m.replace("checked", "unChecked"), h.style.color = i) : (d && (d.style.backgroundColor = M), h.className = m.replace("unChecked", "checked"), h.style.color = this.get("textStyle").fill) } this.emit("itemclick", { item: p, currentTarget: h, checked: "single" === a || p.checked }) } } }, n.activate = function (e) { var t = this, n = this, r = n.get("items"), i = C(r, e), o = n.get("legendWrapper"), a = w(o, g), s = a.childNodes; s.forEach((function (e) { var o = w(e, x), a = C(r, e.getAttribute("data-value")); if (t.get("highlight")) { if (a === i && a.checked) return void (o.style.border = "1px solid #333") } else a === i ? o.style.opacity = n.get("activeOpacity") : a.checked && (o.style.opacity = n.get("inactiveOpacity")) })) }, n.deactivate = function () { var e = this, t = this, n = t.get("legendWrapper"), r = w(n, g), i = r.childNodes; i.forEach((function (n) { var r = w(n, x); e.get("highlight") ? r.style.border = "1px solid #fff" : r.style.opacity = t.get("inactiveOpacity") })) }, n._renderHTML = function () { var e = this, t = this.get("container"), n = this.get("title"), r = this.get("containerTpl"), i = d.createDom(r), o = w(i, m), a = w(i, g), s = this.get("unCheckColor"), c = l.deepMix({}, { CONTAINER_CLASS: { height: "auto", width: "auto", position: "absolute", overflowY: "auto", fontSize: "12px", fontFamily: f, lineHeight: "20px", color: "#8C8C8C" }, TITLE_CLASS: { marginBottom: this.get("titleGap") + "px", fontSize: "12px", color: "#333", textBaseline: "middle", fontFamily: f }, LIST_CLASS: { listStyleType: "none", margin: 0, padding: 0, textAlign: "center" }, LIST_ITEM_CLASS: { cursor: "pointer", marginBottom: "5px", marginRight: "24px" }, MARKER_CLASS: { width: "9px", height: "9px", borderRadius: "50%", display: "inline-block", marginRight: "4px", verticalAlign: "middle" } }, this.get("legendStyle")); if (/^\#/.test(t) || "string" === typeof t && t.constructor === String) { var u = t.replace("#", ""); t = document.getElementById(u), t.appendChild(i) } else { var h = this.get("position"), p = {}; p = "left" === h || "right" === h ? { maxHeight: (this.get("maxLength") || t.offsetHeight) + "px" } : { maxWidth: (this.get("maxLength") || t.offsetWidth) + "px" }, d.modifyCSS(i, l.mix({}, c.CONTAINER_CLASS, p, this.get(v))), t.appendChild(i) } d.modifyCSS(a, l.mix({}, c.LIST_CLASS, this.get(g))), o && (n && n.text ? (o.innerHTML = n.text, d.modifyCSS(o, l.mix({}, c.TITLE_CLASS, this.get(m), n))) : i.removeChild(o)); var _ = this.get("items"), C = this.get("itemTpl"), M = this.get("position"), O = this.get("layout"), k = "right" === M || "left" === M || "vertical" === O ? "block" : "inline-block", S = l.mix({}, c.LIST_ITEM_CLASS, { display: k }, this.get(y)), T = l.mix({}, c.MARKER_CLASS, this.get(x)); if (l.each(_, (function (t, n) { var r, o = t.checked, c = e._formatItemValue(t.value), u = t.marker.fill || t.marker.stroke, h = o ? u : s; r = l.isFunction(C) ? C(c, h, o, n) : C; var f = l.substitute(r, l.mix({}, t, { index: n, checked: o ? "checked" : "unChecked", value: c, color: h, originColor: u, originValue: t.value.replace(/\"/g, "&quot;") })), p = d.createDom(f); p.style.color = e.get("textStyle").fill; var v = w(p, x), m = w(p, b); if (d.modifyCSS(p, S), v && d.modifyCSS(v, T), o || (p.style.color = s, v && (v.style.backgroundColor = s)), a.appendChild(p), e.get("abridgeText")) { var g = c, y = p.offsetWidth, _ = e.get("textStyle").fontSize; isNaN(_) && (-1 !== _.indexOf("pt") ? _ = 1 * parseFloat(_.substr(0, _.length - 2)) / 72 * 96 : -1 !== _.indexOf("px") && (_ = parseFloat(_.substr(0, _.length - 2)))); var M = _ * g.length, O = Math.floor(y / _); y < 2 * _ ? g = "" : y < M && O > 1 && (g = g.substr(0, O - 1) + "..."), m.innerText = g, p.addEventListener("mouseover", (function () { var e = w(i.parentNode, "textTip"); e.style.display = "block", e.style.left = p.offsetLeft + p.offsetWidth + "px", e.style.top = p.offsetTop + 15 + "px", e.innerText = c })), p.addEventListener("mouseout", (function () { var e = w(i.parentNode, "textTip"); e.style.display = "none" })) } })), this.get("abridgeText")) { var A = this.get("tipTpl"), L = d.createDom(A), j = this.get("tipStyle"); d.modifyCSS(L, j), i.parentNode.appendChild(L), L.addEventListener("mouseover", (function () { L.style.display = "none" })) } this.set("legendWrapper", i) }, n._adjustPositionOffset = function () { var e = this.get("autoPosition"); if (!1 !== e) { var t = this.get("position"), n = this.get("offset"), r = this.get("offsetX"), i = this.get("offsetY"); r && (n[0] = r), i && (n[1] = i); var o = this.get("legendWrapper"); o.style.left = t[0] + "px", o.style.top = t[1] + "px", o.style.marginLeft = n[0] + "px", o.style.marginTop = n[1] + "px" } }, n.getWidth = function () { return d.getOuterWidth(this.get("legendWrapper")) }, n.getHeight = function () { return d.getOuterHeight(this.get("legendWrapper")) }, n.move = function (t, n) { /^\#/.test(this.get("container")) ? e.prototype.move.call(this, t, n) : (d.modifyCSS(this.get("legendWrapper"), { left: t + "px", top: n + "px" }), this.set("x", t), this.set("y", n)) }, n.destroy = function () { var t = this.get("legendWrapper"); t && t.parentNode && t.parentNode.removeChild(t), e.prototype.destroy.call(this) }, t }(u); e.exports = M }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(36), u = n(4), h = function (e) { c(n, e); r(n); var t = n.prototype; function n(t) { var n; return n = e.call(this, t) || this, n._init_(), n.render(), n } return t.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return u.mix({}, t, { type: null, plot: null, plotRange: null, rectStyle: { fill: "#CCD6EC", opacity: .3 }, lineStyle: { stroke: "rgba(0, 0, 0, 0.25)", lineWidth: 1 }, isTransposed: !1 }) }, t._init_ = function () { var e, t = this, n = t.get("plot"); e = "rect" === t.type ? n.addGroup({ zIndex: 0 }) : n.addGroup(), this.set("container", e) }, t._addLineShape = function (e, t) { var n = this.get("container"), r = n.addShape("line", { capture: !1, attrs: e }); return this.set("crossLineShape" + t, r), r }, t._renderHorizontalLine = function (e, t) { var n = u.mix(this.get("lineStyle"), this.get("style")), r = u.mix({ x1: t ? t.bl.x : e.get("width"), y1: 0, x2: t ? t.br.x : 0, y2: 0 }, n); this._addLineShape(r, "X") }, t._renderVerticalLine = function (e, t) { var n = u.mix(this.get("lineStyle"), this.get("style")), r = u.mix({ x1: 0, y1: t ? t.bl.y : e.get("height"), x2: 0, y2: t ? t.tl.y : 0 }, n); this._addLineShape(r, "Y") }, t._renderBackground = function (e, t) { var n = u.mix(this.get("rectStyle"), this.get("style")), r = this.get("container"), i = u.mix({ x: t ? t.tl.x : 0, y: t ? t.tl.y : e.get("height"), width: t ? t.br.x - t.bl.x : e.get("width"), height: t ? Math.abs(t.tl.y - t.bl.y) : e.get("height") }, n), o = r.addShape("rect", { attrs: i, capture: !1 }); return this.set("crosshairsRectShape", o), o }, t._updateRectShape = function (e) { var t, n = this.get("crosshairsRectShape"), r = this.get("isTransposed"), i = e[0], o = e[e.length - 1], a = r ? "y" : "x", s = r ? "height" : "width", c = i[a]; if (e.length > 1 && i[a] > o[a] && (c = o[a]), this.get("width")) n.attr(a, c - this.get("crosshairs").width / 2), n.attr(s, this.get("width")); else if (u.isArray(i.point[a]) && !i.size) { var l = i.point[a][1] - i.point[a][0]; n.attr(a, i.point[a][0]), n.attr(s, l) } else t = 3 * i.size / 4, n.attr(a, c - t), 1 === e.length ? n.attr(s, 3 * i.size / 2) : n.attr(s, Math.abs(o[a] - i[a]) + 2 * t) }, t.render = function () { var e = this.get("canvas"), t = this.get("plotRange"), n = this.get("isTransposed"); switch (this.clear(), this.get("type")) { case "x": this._renderHorizontalLine(e, t); break; case "y": this._renderVerticalLine(e, t); break; case "cross": this._renderHorizontalLine(e, t), this._renderVerticalLine(e, t); break; case "rect": this._renderBackground(e, t); break; default: n ? this._renderHorizontalLine(e, t) : this._renderVerticalLine(e, t) } }, t.show = function () { var t = this.get("container"); e.prototype.show.call(this), t.show() }, t.hide = function () { var t = this.get("container"); e.prototype.hide.call(this), t.hide() }, t.clear = function () { var t = this.get("container"); this.set("crossLineShapeX", null), this.set("crossLineShapeY", null), this.set("crosshairsRectShape", null), e.prototype.clear.call(this), t.clear() }, t.destroy = function () { var t = this.get("container"); e.prototype.destroy.call(this), t.remove() }, t.setPosition = function (e, t, n) { var r = this.get("crossLineShapeX"), i = this.get("crossLineShapeY"), o = this.get("crosshairsRectShape"); i && !i.get("destroyed") && i.move(e, 0), r && !r.get("destroyed") && r.move(0, t), o && !o.get("destroyed") && this._updateRectShape(n) }, n }(l); e.exports = h }, function (e, t) { var n = 20, r = { _calcTooltipPosition: function (e, t, n, r, i, o) { var a = 0, s = 0, c = 20; if (o) { var l = o.getBBox(); a = l.width, s = l.height, e = l.x, t = l.y, c = 5 } switch (n) { case "inside": e = e + a / 2 - r / 2, t = t + s / 2 - i / 2; break; case "top": e = e + a / 2 - r / 2, t = t - i - c; break; case "left": e = e - r - c, t = t + s / 2 - i / 2; break; case "right": e = e + a + c, t = t + s / 2 - i / 2; break; case "bottom": default: e = e + a / 2 - r / 2, t = t + s + c; break }return [e, t] }, _constraintPositionInBoundary: function (e, t, r, i, o, a) { return e + r + n > o ? (e -= r + n, e = e < 0 ? 0 : e) : e + n < 0 ? e = n : e += n, t + i + n > a ? (t -= i + n, t = t < 0 ? 0 : t) : t + n < 0 ? t = n : t += n, [e, t] }, _constraintPositionInPlot: function (e, t, r, i, o, a) { return e + r > o.tr.x && (e -= a ? r + 1 : r + 2 * n), e < o.tl.x && (e = o.tl.x), a || (t + i > o.bl.y && (t -= i + 2 * n), t < o.tl.y && (t = o.tl.y)), [e, t] } }; e.exports = r }, function (e, t, n) { var r = n(4), i = { setMarkers: function (e, t) { var n = this, i = n.get("markerGroup"), o = n.get("frontPlot"); i ? i.clear() : (i = o.addGroup({ zIndex: 1, capture: !1 }), n.set("markerGroup", i)), r.each(e, (function (e) { var n = r.mix({ fill: e.color, symbol: "circle", shadowColor: e.color }, t, { x: e.x, y: e.y }); e.marker && e.marker.activeSymbol && (n.symbol = e.marker.activeSymbol), i.addShape("marker", { color: e.color, attrs: n }) })), this.set("markerItems", e) }, clearMarkers: function () { var e = this.get("markerGroup"); e && e.clear() } }; e.exports = i }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(51), u = n(193), h = n(195), f = n(194), d = n(98), p = n(4), v = n(16), m = v.FONT_FAMILY, g = p.DomUtil, y = p.MatrixUtil, b = function (e) { c(n, e); r(n); var t = n.prototype; function n(t) { var n; n = e.call(this, t) || this, p.assign(o(n), f), p.assign(o(n), h); var r = n.get("crosshairs"); if (r) { var i = "rect" === r.type ? n.get("backPlot") : n.get("frontPlot"), a = new u(p.mix({ plot: i, plotRange: n.get("plotRange"), canvas: n.get("canvas") }, n.get("crosshairs"))); a.hide(), n.set("crosshairGroup", a) } return n._init_(), n.get("items") && n.render(), n } return t.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return p.mix({}, t, { boardStyle: { x: 0, y: 0, width: 100, height: 100, fill: "rgba(255, 255, 255, 0.9)", radius: 4, stroke: "#e2e2e2", lineWidth: 1 }, titleStyle: { fontFamily: m, text: "", textBaseline: "top", fontSize: 12, fill: "rgb(87, 87, 87)", lineHeight: 20, padding: 20 }, markerStyle: { radius: 4 }, nameStyle: { fontFamily: m, fontSize: 12, fill: "rgb(87, 87, 87)", textBaseline: "middle", textAlign: "start", padding: 8 }, valueStyle: { fontFamily: m, fontSize: 12, fill: "rgb(87, 87, 87)", textBaseline: "middle", textAlign: "start", padding: 30 }, padding: { top: 20, right: 20, bottom: 20, left: 20 }, itemGap: 10, animationDuration: 200 }) }, t._init_ = function () { var e = this, t = e.get("padding"), n = e.get("frontPlot"), r = n.addGroup({ capture: !1 }); e.set("markerGroup", r); var i = n.addGroup(); i.hide(), e.set("container", i); var o = i.addShape("rect", { attrs: p.mix({}, e.get("boardStyle")) }); e.set("board", o); var a = e.get("titleStyle"); if (e.get("showTitle")) { var s = i.addShape("text", { attrs: p.mix({ x: t.left, y: t.top }, a) }); e.set("titleShape", s), s.name = "tooltip-title" } var c = i.addGroup(); c.move(t.left, t.top + a.lineHeight + a.padding), e.set("itemsGroup", c) }, t.render = function () { var e = this; e.clear(); var t = e.get("container"), n = e.get("board"), r = e.get("showTitle"), i = e.get("titleContent"), o = this.get("titleShape"), a = this.get("itemsGroup"), s = e.get("items"), c = e.get("padding"); if (o && r && o.attr("text", i), a) { var l = e.get("itemGap"), u = 0, h = 0; p.each(s, (function (t) { var n = e._addItem(t); n.move(u, h), a.add(n); var r = n.getBBox().height; h += r + l })) } var f = t.getBBox(), d = f.width + c.right, v = f.height + c.bottom; n.attr("width", d), n.attr("height", v), e._alignToRight(d) }, t.clear = function () { var e = this.get("titleShape"), t = this.get("itemsGroup"), n = this.get("board"); e.text = "", t.clear(), n.attr("width", 0), n.attr("height", 0) }, t.show = function () { var t = this.get("container"); t.show(); var n = this.get("crosshairGroup"); n && n.show(); var r = this.get("markerGroup"); r && r.show(), e.prototype.show.call(this), this.get("canvas").draw() }, t.hide = function () { var t = this.get("container"); t.hide(); var n = this.get("crosshairGroup"); n && n.hide(); var r = this.get("markerGroup"); r && r.hide(), e.prototype.hide.call(this), this.get("canvas").draw() }, t.destroy = function () { var t = this.get("container"), n = this.get("crosshairGroup"); n && n.destroy(); var r = this.get("markerGroup"); r && r.remove(), e.prototype.destroy.call(this), t.remove() }, t.setPosition = function (t, n, r) { var i, o = this.get("container"), a = this.get("canvas").get("el"), s = g.getWidth(a), c = g.getHeight(a), l = o.getBBox(), u = l.width, h = l.height, f = t, d = n; if (this.get("position")) { var v = l.width, m = l.height; i = this._calcTooltipPosition(t, n, this.get("position"), v, m, r), t = i[0], n = i[1] } else i = this._constraintPositionInBoundary(t, n, u, h, s, c), t = i[0], n = i[1]; if (this.get("inPlot")) { var b = this.get("plotRange"); i = this._constraintPositionInPlot(t, n, u, h, b, this.get("enterable")), t = i[0], n = i[1] } var x = this.get("markerItems"); p.isEmpty(x) || (f = x[0].x, d = x[0].y); var w = [1, 0, 0, 0, 1, 0, 0, 0, 1], _ = y.transform(w, [["t", t, n]]); o.stopAnimate(), o.animate({ matrix: _ }, this.get("animationDuration")); var C = this.get("crosshairGroup"); if (C) { var M = this.get("items"); C.setPosition(f, d, M) } e.prototype.setPosition.call(this, t, n) }, t._addItem = function (e) { var t = new l.Group, n = this.get("markerStyle").radius; if (e.marker) { var r = p.mix({}, e.marker, { x: e.marker.radius / 2, y: 0, symbol: e.marker.activeSymbol || e.marker.symbol }); t.addShape("marker", { attrs: r }), n = e.marker.radius } var i = this.get("nameStyle"); t.addShape("text", { attrs: p.mix({ x: n + i.padding, y: 0, text: e.name }, i) }); var o = this.get("valueStyle"); return t.addShape("text", { attrs: p.mix({ x: t.getBBox().width + o.padding, y: 0, text: e.value }, o) }), t }, t._alignToRight = function (e) { var t = this, n = this.get("itemsGroup"), r = n.get("children"); p.each(r, (function (n) { var r = n.get("children"), i = r[2], o = i.getBBox().width, a = e - o - 2 * t.get("padding").right; i.attr("x", a) })) }, n }(d); e.exports = b }, function (e, t, n) { var r = n(91), i = n(25), o = n(0), a = function e(t) { e.superclass.constructor.call(this, t) }; o.extend(a, r), o.augment(a, { getPointRauis: function (e, t) { return i.getPointRadius(e, t) }, getCirclePoint: function (e, t, n) { var r = this, i = r.get("coord"), o = i.getCenter(), a = r._isEmitLabels(), s = r.getPointRauis(i, n); if (0 === s) return null; if (i.isTransposed && s > t && !a) { var c = Math.asin(t / (2 * s)); e += 2 * c } else s += t; return { x: o.x + s * Math.cos(e), y: o.y + s * Math.sin(e), angle: e, r: s } }, getArcPoint: function (e, t) { var n, r = this; return t = t || 0, n = o.isArray(e.x) || o.isArray(e.y) ? { x: o.isArray(e.x) ? e.x[t] : e.x, y: o.isArray(e.y) ? e.y[t] : e.y } : e, r.transLabelPoint(n), n }, getPointAngle: function (e) { var t = this, n = t.get("coord"); return i.getPointAngle(n, e) }, getMiddlePoint: function (e) { var t = this, n = t.get("coord"), r = e.length, i = { x: 0, y: 0 }; return o.each(e, (function (e) { i.x += e.x, i.y += e.y })), i.x /= r, i.y /= r, i = n.convert(i), i }, _isToMiddle: function (e) { return e.x.length > 2 }, getLabelPoint: function (e, t, n) { var r, i = this, o = e.text[n], a = 1; i._isToMiddle(t) ? r = i.getMiddlePoint(t.points) : (1 === e.text.length && 0 === n ? n = 1 : 0 === n && (a = -1), r = i.getArcPoint(t, n)); var s = i.getDefaultOffset(e); s *= a; var c = i.getPointAngle(r), l = i.getCirclePoint(c, s, r); if (l ? (l.text = o, l.angle = c, l.color = t.color) : l = { text: "" }, e.autoRotate || "undefined" === typeof e.autoRotate) { var u = l.textStyle ? l.textStyle.rotate : null; u || (u = l.rotate || i.getLabelRotate(c, s, t)), l.rotate = u } return l.start = { x: r.x, y: r.y }, l }, _isEmitLabels: function () { var e = this.get("label"); return e.labelEmit }, getLabelRotate: function (e) { var t, n = this; return t = 180 * e / Math.PI, t += 90, n._isEmitLabels() && (t -= 90), t && (t > 90 ? t -= 180 : t < -90 && (t += 180)), t / 180 * Math.PI }, getLabelAlign: function (e) { var t, n = this, r = n.get("coord"); if (n._isEmitLabels()) t = e.angle <= Math.PI / 2 && e.angle > -Math.PI / 2 ? "left" : "right"; else if (r.isTransposed) { var i = r.getCenter(), o = n.getDefaultOffset(e); t = Math.abs(e.x - i.x) < 1 ? "center" : e.angle > Math.PI || e.angle <= 0 ? o > 0 ? "left" : "right" : o > 0 ? "right" : "left" } else t = "center"; return t } }), e.exports = a }, function (e, t) { e.exports = { toFront: function (e) { var t = e.get("parent"), n = t.get("children").indexOf(e); e.set("_originIndex", n), e.toFront() }, resetZIndex: function (e) { var t = e.get("parent"), n = e.get("_originIndex"), r = t.get("children"), i = r.indexOf(e); n >= 0 && n !== i && (r.splice(i, 1), r.splice(n, 0, e)) } } }, function (e, t, n) { e.exports = { Scale: n(398), Coord: n(399), Axis: n(404), Guide: n(405), Legend: n(408), Tooltip: n(410), Event: n(411) } }, function (e, t, n) { var r = n(18), i = n(0), o = n(201); function a(e, t, n) { void 0 === n && (n = 1); var r = [e.x, e.y, n]; return i.vec3.transformMat3(r, r, t), { x: r[0], y: r[1] } } function s(e) { var t = e.getBBox(), n = { x: t.minX, y: t.minY }, r = { x: t.maxX, y: t.maxY }, i = e.attr("matrix"); return n = a(n, i), r = a(r, i), { minX: n.x, minY: n.y, maxX: r.x, maxY: r.y } } e.exports = function (e, t) { var n = t; return i.each(e.get("children"), (function (e) { e instanceof r.Group && i.each(e.get("children"), (function (e) { if (e instanceof r.Group && e.get("children").length || e instanceof r.Path) n = o(n, e.getBBox()); else if (e instanceof r.Text) { var t = s(e); n = o(n, t) } })) })), n } }, function (e, t) { e.exports = function (e, t) { return { minX: Math.min(e.minX, t.minX), minY: Math.min(e.minY, t.minY), maxX: Math.max(e.maxX, t.maxX), maxY: Math.max(e.maxY, t.maxY) } } }, function (e, t) { e.exports = function (e) { return { minX: e.tl.x, minY: e.tl.y, maxX: e.br.x, maxY: e.br.y } } }, function (e, t, n) { "use strict"; t["a"] = M, t["b"] = O, t["c"] = k; var r = n(102), i = n(511), o = n(525), a = n(526), s = n(527), c = n(528), l = n(529), u = n(530), h = n(531), f = n(532), d = n(533), p = n(534), v = n(535), m = n(536), g = n(537), y = n(538), b = n(539), x = n(540), w = n(420), _ = n(541), C = 0; function M(e, t, n, r) { this._groups = e, this._parents = t, this._name = n, this._id = r } function O(e) { return Object(r["selection"])().transition(e) } function k() { return ++C } var S = r["selection"].prototype; M.prototype = O.prototype = { constructor: M, select: d["a"], selectAll: p["a"], filter: l["a"], merge: u["a"], selection: v["a"], transition: x["a"], call: S.call, nodes: S.nodes, node: S.node, size: S.size, empty: S.empty, each: S.each, on: h["a"], attr: i["a"], attrTween: o["a"], style: m["a"], styleTween: g["a"], text: y["a"], textTween: b["a"], remove: f["a"], tween: w["a"], delay: a["a"], duration: s["a"], ease: c["a"], end: _["a"] } }, function (e, t, n) { var r = n(0), i = r.DomUtil, o = ["start", "process", "end", "reset"], a = function () { var e = t.prototype; function t(e, t) { var n = this, i = n.getDefaultCfg(); r.assign(n, i, e), n.view = n.chart = t, n.canvas = t.get("canvas"), n._bindEvents() } return e.getDefaultCfg = function () { return { startEvent: "mousedown", processEvent: "mousemove", endEvent: "mouseup", resetEvent: "dblclick" } }, e._start = function (e) { var t = this; t.preStart && t.preStart(e), t.start(e), t.onStart && t.onStart(e) }, e._process = function (e) { var t = this; t.preProcess && t.preProcess(e), t.process(e), t.onProcess && t.onProcess(e) }, e._end = function (e) { var t = this; t.preEnd && t.preEnd(e), t.end(e), t.onEnd && t.onEnd(e) }, e._reset = function (e) { var t = this; t.preReset && t.preReset(e), t.reset(e), t.onReset && t.onReset(e) }, e.start = function () { }, e.process = function () { }, e.end = function () { }, e.reset = function () { }, e._bindEvents = function () { var e = this, t = e.canvas, n = t.get("canvasDOM"); e._clearEvents(), r.each(o, (function (t) { var o = r.upperFirst(t); e["_on" + o + "Listener"] = i.addEventListener(n, e[t + "Event"], r.wrapBehavior(e, "_" + t)) })) }, e._clearEvents = function () { var e = this; r.each(o, (function (t) { var n = "_on" + r.upperFirst(t) + "Listener"; e[n] && e[n].remove() })) }, e.destroy = function () { this._clearEvents() }, t }(); e.exports = a }, function (e, t, n) { var r = n(105), i = n(18), o = n(141), a = n(162), s = n(8), c = n(21), l = n(0), u = { version: s.version, Animate: o, Chart: a, Global: s, Scale: r, Shape: c, Util: l, G: i, DomUtil: l.DomUtil, MatrixUtil: l.MatrixUtil, PathUtil: l.PathUtil, track: function () { console.warn("G2 tracks nothing ;-)") } }; "undefined" !== typeof window && (window.G2 ? console.warn("There are multiple versions of G2. Version " + u.version + "'s reference is 'window.G2_3'") : window.G2 = u), e.exports = u }, function (e, t, n) { "use strict"; t["c"] = a, t["b"] = s, t["a"] = c; var r = n(450); function i(e, t) { return function (n) { return e + n * t } } function o(e, t, n) { return e = Math.pow(e, n), t = Math.pow(t, n) - e, n = 1 / n, function (r) { return Math.pow(e + r * t, n) } } function a(e, t) { var n = t - e; return n ? i(e, n > 180 || n < -180 ? n - 360 * Math.round(n / 360) : n) : Object(r["a"])(isNaN(e) ? t : e) } function s(e) { return 1 === (e = +e) ? c : function (t, n) { return n - t ? o(t, n, e) : Object(r["a"])(isNaN(t) ? n : t) } } function c(e, t) { var n = t - e; return n ? i(e, n) : Object(r["a"])(isNaN(e) ? t : e) } }, function (e, t, n) { var r = n(6), i = n(11), o = n(107), a = 5, s = 7, c = [1, 1.2, 1.5, 1.6, 2, 2.2, 2.4, 2.5, 3, 4, 5, 6, 7.5, 8, 10], l = [1, 2, 4, 5, 10], u = 1e-12; e.exports = function (e) { var t = e.min, n = e.max, h = e.interval, f = e.minTickInterval, d = [], p = e.minCount || a, v = e.maxCount || s, m = p === v, g = r(e.minLimit) ? -1 / 0 : e.minLimit, y = r(e.maxLimit) ? 1 / 0 : e.maxLimit, b = (p + v) / 2, x = b, w = e.snapArray ? e.snapArray : m ? c : l; if (t === g && n === y && m && (h = (n - t) / (x - 1)), r(t) && (t = 0), r(n) && (n = 0), Math.abs(n - t) < u && (0 === t ? n = 1 : t > 0 ? t = 0 : n = 0, n - t < 5 && !h && n - t >= 1 && (h = 1)), r(h)) { var _ = (n - t) / (b - 1); h = o.snapFactorTo(_, w, "ceil"), v !== p && (x = parseInt((n - t) / h, 10), x > v && (x = v), x < p && (x = p), h = o.snapFactorTo((n - t) / (x - 1), w)) } if (i(f) && h < f && (h = f), e.interval || v !== p) { n = Math.min(o.snapMultiple(n, h, "ceil"), y), t = Math.max(o.snapMultiple(t, h, "floor"), g), x = Math.round((n - t) / h), t = o.fixedBase(t, h), n = o.fixedBase(n, h); var C = null; while (t > g && g > -1 / 0 && (null === C || t < C)) C = t, t = o.fixedBase(t - h, h) } else { b = parseInt(b, 10); var M, O = (n + t) / 2, k = o.snapMultiple(O, h, "ceil"), S = Math.floor((b - 2) / 2), T = k + S * h; M = b % 2 === 0 ? k - S * h : k - (S + 1) * h; var A = null; while (T < n && (null === A || T > A)) A = T, T = o.fixedBase(T + h, h); var L = null; while (M > t && (null === L || M < L)) L = M, M = o.fixedBase(M - h, h); n = T, t = M } n = Math.min(n, y), t = Math.max(t, g), d.push(t); for (var j = 1; j < x; j++) { var z = o.fixedBase(h * j + t, h); z < n && d.push(z) } return d[d.length - 1] < n && d.push(n), { min: t, max: n, interval: h, count: x, ticks: d } } }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(20), o = n(11), a = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n._initDefaultCfg = function () { e.prototype._initDefaultCfg.call(this), this.isIdentity = !0, this.type = "identity", this.value = null }, n.getText = function () { return this.value.toString() }, n.scale = function (e) { return this.value !== e && o(e) ? e : this.range[0] }, n.invert = function () { return this.value }, t }(i); i.Identity = a, e.exports = a }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(110), o = n(3), a = n(6), s = n(12), c = n(20), l = n(38), u = n(210), h = n(100), f = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n._initDefaultCfg = function () { e.prototype._initDefaultCfg.call(this), this.type = "time", this.mask = "YYYY-MM-DD" }, n.init = function () { var t = this, n = t.values; if (n && n.length) { var r = [], i = 1 / 0, s = i, c = 0; o(n, (function (e) { var n = t._toTimeStamp(e); if (isNaN(n)) throw new TypeError("Invalid Time: " + e); i > n ? (s = i, i = n) : s > n && (s = n), c < n && (c = n), r.push(n) })), n.length > 1 && (t.minTickInterval = s - i), (a(t.min) || t._toTimeStamp(t.min) > i) && (t.min = i), (a(t.max) || t._toTimeStamp(t.max) < c) && (t.max = c) } e.prototype.init.call(this) }, n.calculateTicks = function () { var e = this, t = e.min, n = e.max, r = e.tickCount, i = e.tickInterval, o = u({ min: t, max: n, minCount: r, maxCount: r, interval: i, minInterval: e.minTickInterval }); return o.ticks }, n.getText = function (e) { var t = this.formatter; return e = this.translate(e), e = t ? t(e) : i.format(e, this.mask), e }, n.scale = function (t) { return s(t) && (t = this.translate(t)), e.prototype.scale.call(this, t) }, n.translate = function (e) { return this._toTimeStamp(e) }, n._toTimeStamp = function (e) { return h.toTimeStamp(e) }, t }(l); c.Time = f, e.exports = f }, function (e, t, n) { var r = n(107), i = n(6), o = 6, a = [1, 2, 4, 6, 8, 12], s = 6e4, c = 36e5, l = 864e5; function u(e) { return new Date(e).getFullYear() } function h(e) { return new Date(e, 0, 1).getTime() } function f(e) { return new Date(e).getMonth() } function d(e, t) { var n = u(e), r = u(t), i = f(e), o = f(t); return 12 * (r - n) + (o - i) % 12 } function p(e, t) { return new Date(e, t, 1).getTime() } function v(e, t) { return Math.ceil((t - e) / l) } function m(e, t) { return Math.ceil((t - e) / c) } function g(e, t) { return Math.ceil((t - e) / 6e4) } e.exports = function (e) { var t, n = e.minInterval, y = [], b = e.min, x = e.max, w = e.interval; if (x === b && (x = b + l), i(w)) { var _ = x - b, C = l, M = 365 * C; w = parseInt(_ / (e.maxCount || o), 10), n && n > w && (w = n); var O = w / M, k = u(b); if (O > .51) { for (var S = Math.ceil(O), T = u(x), A = k; A <= T + S; A += S)y.push(h(A)); w = null } else if (O > .0834) { for (var L = Math.ceil(O / .0834), j = f(b), z = d(b, x), E = 0; E <= z + L; E += L)y.push(p(k, E + j)); w = null } else if (w > .5 * C) { var P = new Date(b), D = P.getFullYear(), H = P.getMonth(b), V = P.getDate(), I = Math.ceil(w / C), N = v(b, x); w = I * C; for (var R = 0; R < N + I; R += I)y.push(new Date(D, H, V + R).getTime()) } else if (w > c) { var F = new Date(b), Y = F.getFullYear(), $ = F.getMonth(b), B = F.getDate(), W = F.getHours(), q = r.snapTo(a, Math.ceil(w / c)), U = m(b, x); w = q * c; for (var K = 0; K <= U + q; K += q)y.push(new Date(Y, $, B, W + K).getTime()) } else if (w > s) { var G = g(b, x), X = Math.ceil(w / s); w = X * s; for (var J = 0; J <= G + X; J += X)y.push(b + J * s) } else { w < 1e3 && (w = 1e3), b = 1e3 * Math.floor(b / 1e3); var Q = Math.ceil((x - b) / 1e3), Z = Math.ceil(w / 1e3); w = 1e3 * Z; for (var ee = 0; ee < Q + Z; ee += Z)y.push(b + 1e3 * ee) } } if (!y.length) { b = 1e3 * Math.floor(b / 1e3), x = 1e3 * Math.ceil(x / 1e3), t = (x - b) / w; for (var te = 0; te <= t; te++)y.push(r.fixedBase(w * te + b, w)) } return { max: x, min: b, interval: w, ticks: y, count: y.length } } }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(20), o = n(108), a = n(110), s = n(109), c = n(100), l = n(3), u = n(11), h = n(22), f = n(12), d = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n._initDefaultCfg = function () { e.prototype._initDefaultCfg.call(this), this.type = "timeCat", this.sortable = !0, this.tickCount = 5, this.mask = "YYYY-MM-DD" }, n.init = function () { var e = this, t = this.values; l(t, (function (n, r) { t[r] = e._toTimeStamp(n) })), this.sortable && t.sort((function (e, t) { return e - t })), e.ticks || (e.ticks = this.calculateTicks()) }, n.calculateTicks = function () { var e, t = this, n = t.tickCount; if (n) { var r = s({ maxCount: n, data: t.values, isRounding: t.isRounding }); e = r.ticks } else e = t.values; return e }, n.translate = function (e) { e = this._toTimeStamp(e); var t = this.values.indexOf(e); return -1 === t && (t = u(e) && e < this.values.length ? e : NaN), t }, n.scale = function (e) { var t, n = this.rangeMin(), r = this.rangeMax(), i = this.translate(e); return t = 1 === this.values.length || isNaN(i) ? i : i > -1 ? i / (this.values.length - 1) : 0, n + t * (r - n) }, n.getText = function (e) { var t = "", n = this.translate(e); t = n > -1 ? this.values[n] : e; var r = this.formatter; return t = parseInt(t, 10), t = r ? r(t) : a.format(t, this.mask), t }, n.getTicks = function () { var e = this, t = this.ticks, n = []; return l(t, (function (t) { var r; r = h(t) ? t : { text: f(t) ? t : e.getText(t), value: e.scale(t), tickValue: t }, n.push(r) })), n }, n._toTimeStamp = function (e) { return c.toTimeStamp(e) }, t }(o); i.TimeCat = d, e.exports = d }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(3), o = n(20), a = n(38); function s(e, t) { return 1 === e ? 1 : Math.log(t) / Math.log(e) } var c = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n._initDefaultCfg = function () { e.prototype._initDefaultCfg.call(this), this.type = "log", this.tickCount = 10, this.base = 2, this._minTick = null }, n.calculateTicks = function () { var e, t = this, n = t.base; if (t.min < 0) throw new Error("The minimum value must be greater than zero!"); var r = s(n, t.max); if (t.min > 0) e = Math.floor(s(n, t.min)); else { var o = t.values, a = t.max; i(o, (function (e) { e > 0 && e < a && (a = e) })), a === t.max && (a = t.max / n), a > 1 && (a = 1), e = Math.floor(s(n, a)), t._minTick = e, t.positiveMin = a } for (var c = r - e, l = t.tickCount, u = Math.ceil(c / l), h = [], f = e; f < r + u; f += u)h.push(Math.pow(n, f)); return 0 === t.min && h.unshift(0), h }, n._getScalePercent = function (e) { var t = this.max, n = this.min; if (t === n) return 0; if (e <= 0) return 0; var r, i = this.base, o = this.positiveMin; return o && (n = 1 * o / i), r = e < o ? e / o / (s(i, t) - s(i, n)) : (s(i, e) - s(i, n)) / (s(i, t) - s(i, n)), r }, n.scale = function (e) { var t = this._getScalePercent(e), n = this.rangeMin(), r = this.rangeMax(); return n + t * (r - n) }, n.invert = function (e) { var t, n = this.base, r = s(n, this.max), i = this.rangeMin(), o = this.rangeMax() - i, a = this.positiveMin; if (a) { if (0 === e) return 0; t = s(n, a / n); var c = 1 / (r - t) * o; if (e < c) return e / c * a } else t = s(n, this.min); var l = (e - i) / o, u = l * (r - t) + t; return Math.pow(n, u) }, t }(a); o.Log = c, e.exports = c }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(20), o = n(38); function a(e, t) { var n = Math.E, r = Math.pow(n, Math.log(t) / e); return r } var s = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n._initDefaultCfg = function () { e.prototype._initDefaultCfg.call(this), this.type = "pow", this.tickCount = 10, this.exponent = 2 }, n.calculateTicks = function () { var e, t = this, n = t.exponent, r = Math.ceil(a(n, t.max)); if (e = t.min >= 0 ? Math.floor(a(n, t.min)) : 0, e > r) { var i = r; r = e, e = i } for (var o = r - e, s = t.tickCount, c = Math.ceil(o / s), l = [], u = e; u < r + c; u += c)l.push(Math.pow(u, n)); return l }, n._getScalePercent = function (e) { var t = this.max, n = this.min; if (t === n) return 0; var r = this.exponent, i = (a(r, e) - a(r, n)) / (a(r, t) - a(r, n)); return i }, n.scale = function (e) { var t = this._getScalePercent(e), n = this.rangeMin(), r = this.rangeMax(); return n + t * (r - n) }, n.invert = function (e) { var t = (e - this.rangeMin()) / (this.rangeMax() - this.rangeMin()), n = this.exponent, r = a(n, this.max), i = a(n, this.min), o = t * (r - i) + i; return Math.pow(o, n) }, t }(o); i.Pow = s, e.exports = s }, function (e, t, n) { var r = n(215), i = r.detect, o = n(1), a = n(220), s = n(115), c = n(227), l = n(252), u = i(), h = u && "firefox" === u.name, f = function e(t) { e.superclass.constructor.call(this, t) }; f.CFG = { eventEnable: !0, width: null, height: null, widthCanvas: null, heightCanvas: null, widthStyle: null, heightStyle: null, containerDOM: null, canvasDOM: null, pixelRatio: null, renderer: "canvas", supportCSSTransform: !1 }, o.extend(f, s), o.augment(f, a, { init: function () { f.superclass.init.call(this), this._setGlobalParam(), this._setContainer(), this._initPainter(), this._scale(), this.get("eventEnable") && this.registerEvent(this) }, _scale: function () { if ("svg" !== this._cfg.renderType) { var e = this.get("pixelRatio"); this.scale(e, e) } }, _setGlobalParam: function () { var e = this.get("renderer") || "canvas"; "svg" === e ? this.set("pixelRatio", 1) : this.get("pixelRatio") || this.set("pixelRatio", o.getRatio()), this._cfg.renderType = e; var t = l[e]; this._cfg.renderer = t, this._cfg.canvas = this; var n = new c(this); this._cfg.timeline = n }, _setContainer: function () { var e = this.get("containerId"), t = this.get("containerDOM"); t || (t = document.getElementById(e), this.set("containerDOM", t)), o.modifyCSS(t, { position: "relative" }) }, _initPainter: function () { var e = this.get("containerDOM"), t = new this._cfg.renderer.painter(e); this._cfg.painter = t, this._cfg.canvasDOM = this._cfg.el = t.canvas, this.changeSize(this.get("width"), this.get("height")) }, _resize: function () { var e = this.get("canvasDOM"), t = this.get("widthCanvas"), n = this.get("heightCanvas"), r = this.get("widthStyle"), i = this.get("heightStyle"); e.style.width = r, e.style.height = i, e.setAttribute("width", t), e.setAttribute("height", n) }, getWidth: function () { var e = this.get("pixelRatio"), t = this.get("width"); return t * e }, getHeight: function () { var e = this.get("pixelRatio"), t = this.get("height"); return t * e }, changeSize: function (e, t) { var n = this.get("pixelRatio"), r = e * n, i = t * n; this.set("widthCanvas", r), this.set("heightCanvas", i), this.set("widthStyle", e + "px"), this.set("heightStyle", t + "px"), this.set("width", e), this.set("height", t), this._resize() }, getPointByEvent: function (e) { var t = this.get("supportCSSTransform"); if (t) { var n = this.get("pixelRatio") || 1; if (h && !o.isNil(e.layerX) && e.layerX !== e.offsetX) return { x: e.layerX * n, y: e.layerY * n }; if (!o.isNil(e.offsetX)) return { x: e.offsetX * n, y: e.offsetY * n } } var r = this.getClientByEvent(e), i = r.x, a = r.y; return this.getPointByClient(i, a) }, getClientByEvent: function (e) { var t = e; return e.touches && (t = "touchend" === e.type ? e.changedTouches[0] : e.touches[0]), { x: t.clientX, y: t.clientY } }, getPointByClient: function (e, t) { var n = this.get("el"), r = this.get("pixelRatio") || 1, i = n.getBoundingClientRect(); return { x: (e - i.left) * r, y: (t - i.top) * r } }, getClientByPoint: function (e, t) { var n = this.get("el"), r = n.getBoundingClientRect(), i = this.get("pixelRatio") || 1; return { clientX: e / i + r.left, clientY: t / i + r.top } }, draw: function () { this._cfg.painter.draw(this) }, getShape: function (e, t, n) { return 3 === arguments.length && this._cfg.renderer.getShape ? this._cfg.renderer.getShape.call(this, e, t, n) : f.superclass.getShape.call(this, e, t) }, getRenderer: function () { return this._cfg.renderType }, _drawSync: function () { this._cfg.painter.drawSync(this) }, destroy: function () { var e = this._cfg, t = e.containerDOM, n = e.canvasDOM; n && t && t.removeChild(n), e.timeline.stop(), f.superclass.destroy.call(this) } }), e.exports = f }, function (e, t, n) { "use strict"; (function (e) { var n = this && this.__spreadArrays || function () { for (var e = 0, t = 0, n = arguments.length; t < n; t++)e += arguments[t].length; var r = Array(e), i = 0; for (t = 0; t < n; t++)for (var o = arguments[t], a = 0, s = o.length; a < s; a++, i++)r[i] = o[a]; return r }; Object.defineProperty(t, "__esModule", { value: !0 }); var r = function () { function e(e, t, n) { this.name = e, this.version = t, this.os = n, this.type = "browser" } return e }(); t.BrowserInfo = r; var i = function () { function t(t) { this.version = t, this.type = "node", this.name = "node", this.os = e.platform } return t }(); t.NodeInfo = i; var o = function () { function e(e, t, n, r) { this.name = e, this.version = t, this.os = n, this.bot = r, this.type = "bot-device" } return e }(); t.SearchBotDeviceInfo = o; var a = function () { function e() { this.type = "bot", this.bot = !0, this.name = "bot", this.version = null, this.os = null } return e }(); t.BotInfo = a; var s = function () { function e() { this.type = "react-native", this.name = "react-native", this.version = null, this.os = null } return e }(); t.ReactNativeInfo = s; var c = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/, l = /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/, u = 3, h = [["aol", /AOLShield\/([0-9\._]+)/], ["edge", /Edge\/([0-9\._]+)/], ["edge-ios", /EdgiOS\/([0-9\._]+)/], ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], ["samsung", /SamsungBrowser\/([0-9\.]+)/], ["silk", /\bSilk\/([0-9._-]+)\b/], ["miui", /MiuiBrowser\/([0-9\.]+)$/], ["beaker", /BeakerBrowser\/([0-9\.]+)/], ["edge-chromium", /Edg\/([0-9\.]+)/], ["chromium-webview", /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], ["fxios", /FxiOS\/([0-9\.]+)/], ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], ["ie", /MSIE\s(7\.0)/], ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], ["android", /Android\s([0-9\.]+)/], ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], ["safari", /Version\/([0-9\._]+).*Safari/], ["facebook", /FBAV\/([0-9\.]+)/], ["instagram", /Instagram\s([0-9\.]+)/], ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], ["searchbot", c]], f = [["iOS", /iP(hone|od|ad)/], ["Android OS", /Android/], ["BlackBerry OS", /BlackBerry|BB10/], ["Windows Mobile", /IEMobile/], ["Amazon OS", /Kindle/], ["Windows 3.11", /Win16/], ["Windows 95", /(Windows 95)|(Win95)|(Windows_95)/], ["Windows 98", /(Windows 98)|(Win98)/], ["Windows 2000", /(Windows NT 5.0)|(Windows 2000)/], ["Windows XP", /(Windows NT 5.1)|(Windows XP)/], ["Windows Server 2003", /(Windows NT 5.2)/], ["Windows Vista", /(Windows NT 6.0)/], ["Windows 7", /(Windows NT 6.1)/], ["Windows 8", /(Windows NT 6.2)/], ["Windows 8.1", /(Windows NT 6.3)/], ["Windows 10", /(Windows NT 10.0)/], ["Windows ME", /Windows ME/], ["Open BSD", /OpenBSD/], ["Sun OS", /SunOS/], ["Chrome OS", /CrOS/], ["Linux", /(Linux)|(X11)/], ["Mac OS", /(Mac_PowerPC)|(Macintosh)/], ["QNX", /QNX/], ["BeOS", /BeOS/], ["OS/2", /OS\/2/]]; function d(e) { return e ? m(e) : "undefined" === typeof document && "undefined" !== typeof navigator && "ReactNative" === navigator.product ? new s : "undefined" !== typeof navigator ? m(navigator.userAgent) : y() } function p(e) { return "" !== e && h.reduce((function (t, n) { var r = n[0], i = n[1]; if (t) return t; var o = i.exec(e); return !!o && [r, o] }), !1) } function v(e) { var t = p(e); return t ? t[0] : null } function m(e) { var t = p(e); if (!t) return null; var i = t[0], s = t[1]; if ("searchbot" === i) return new a; var c = s[1] && s[1].split(/[._]/).slice(0, 3); c ? c.length < u && (c = n(c, b(u - c.length))) : c = []; var h = c.join("."), f = g(e), d = l.exec(e); return d && d[1] ? new o(i, h, f, d[1]) : new r(i, c.join("."), f) } function g(e) { for (var t = 0, n = f.length; t < n; t++) { var r = f[t], i = r[0], o = r[1], a = o.exec(e); if (a) return i } return null } function y() { var t = "undefined" !== typeof e && e.version; return t ? new i(e.version.slice(1)) : null } function b(e) { for (var t = [], n = 0; n < e; n++)t.push("0"); return t } t.detect = d, t.browserName = v, t.parseUserAgent = m, t.detectOS = g, t.getNodeVersion = y }).call(t, n(216)) }, function (e, t) { var n, r, i = e.exports = {}; function o() { throw new Error("setTimeout has not been defined") } function a() { throw new Error("clearTimeout has not been defined") } function s(e) { if (n === setTimeout) return setTimeout(e, 0); if ((n === o || !n) && setTimeout) return n = setTimeout, setTimeout(e, 0); try { return n(e, 0) } catch (t) { try { return n.call(null, e, 0) } catch (t) { return n.call(this, e, 0) } } } function c(e) { if (r === clearTimeout) return clearTimeout(e); if ((r === a || !r) && clearTimeout) return r = clearTimeout, clearTimeout(e); try { return r(e) } catch (t) { try { return r.call(null, e) } catch (t) { return r.call(this, e) } } } (function () { try { n = "function" === typeof setTimeout ? setTimeout : o } catch (e) { n = o } try { r = "function" === typeof clearTimeout ? clearTimeout : a } catch (e) { r = a } })(); var l, u = [], h = !1, f = -1; function d() { h && l && (h = !1, l.length ? u = l.concat(u) : f = -1, u.length && p()) } function p() { if (!h) { var e = s(d); h = !0; var t = u.length; while (t) { l = u, u = []; while (++f < t) l && l[f].run(); f = -1, t = u.length } l = null, h = !1, c(e) } } function v(e, t) { this.fun = e, this.array = t } function m() { } i.nextTick = function (e) { var t = new Array(arguments.length - 1); if (arguments.length > 1) for (var n = 1; n < arguments.length; n++)t[n - 1] = arguments[n]; u.push(new v(e, t)), 1 !== u.length || h || s(p) }, v.prototype.run = function () { this.fun.apply(null, this.array) }, i.title = "browser", i.browser = !0, i.env = {}, i.argv = [], i.version = "", i.versions = {}, i.on = m, i.addListener = m, i.once = m, i.off = m, i.removeListener = m, i.removeAllListeners = m, i.emit = m, i.prependListener = m, i.prependOnceListener = m, i.listeners = function (e) { return [] }, i.binding = function (e) { throw new Error("process.binding is not supported") }, i.cwd = function () { return "/" }, i.chdir = function (e) { throw new Error("process.chdir is not supported") }, i.umask = function () { return 0 } }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.sub = t.mul = void 0, t.create = a, t.fromMat4 = s, t.clone = c, t.copy = l, t.fromValues = u, t.set = h, t.identity = f, t.transpose = d, t.invert = p, t.adjoint = v, t.determinant = m, t.multiply = g, t.translate = y, t.rotate = b, t.scale = x, t.fromTranslation = w, t.fromRotation = _, t.fromScaling = C, t.fromMat2d = M, t.fromQuat = O, t.normalFromMat4 = k, t.projection = S, t.str = T, t.frob = A, t.add = L, t.subtract = j, t.multiplyScalar = z, t.multiplyScalarAndAdd = E, t.exactEquals = P, t.equals = D; var r = n(74), i = o(r); function o(e) { if (e && e.__esModule) return e; var t = {}; if (null != e) for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]); return t.default = e, t } function a() { var e = new i.ARRAY_TYPE(9); return i.ARRAY_TYPE != Float32Array && (e[1] = 0, e[2] = 0, e[3] = 0, e[5] = 0, e[6] = 0, e[7] = 0), e[0] = 1, e[4] = 1, e[8] = 1, e } function s(e, t) { return e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[4], e[4] = t[5], e[5] = t[6], e[6] = t[8], e[7] = t[9], e[8] = t[10], e } function c(e) { var t = new i.ARRAY_TYPE(9); return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4], t[5] = e[5], t[6] = e[6], t[7] = e[7], t[8] = e[8], t } function l(e, t) { return e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], e[4] = t[4], e[5] = t[5], e[6] = t[6], e[7] = t[7], e[8] = t[8], e } function u(e, t, n, r, o, a, s, c, l) { var u = new i.ARRAY_TYPE(9); return u[0] = e, u[1] = t, u[2] = n, u[3] = r, u[4] = o, u[5] = a, u[6] = s, u[7] = c, u[8] = l, u } function h(e, t, n, r, i, o, a, s, c, l) { return e[0] = t, e[1] = n, e[2] = r, e[3] = i, e[4] = o, e[5] = a, e[6] = s, e[7] = c, e[8] = l, e } function f(e) { return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 1, e[5] = 0, e[6] = 0, e[7] = 0, e[8] = 1, e } function d(e, t) { if (e === t) { var n = t[1], r = t[2], i = t[5]; e[1] = t[3], e[2] = t[6], e[3] = n, e[5] = t[7], e[6] = r, e[7] = i } else e[0] = t[0], e[1] = t[3], e[2] = t[6], e[3] = t[1], e[4] = t[4], e[5] = t[7], e[6] = t[2], e[7] = t[5], e[8] = t[8]; return e } function p(e, t) { var n = t[0], r = t[1], i = t[2], o = t[3], a = t[4], s = t[5], c = t[6], l = t[7], u = t[8], h = u * a - s * l, f = -u * o + s * c, d = l * o - a * c, p = n * h + r * f + i * d; return p ? (p = 1 / p, e[0] = h * p, e[1] = (-u * r + i * l) * p, e[2] = (s * r - i * a) * p, e[3] = f * p, e[4] = (u * n - i * c) * p, e[5] = (-s * n + i * o) * p, e[6] = d * p, e[7] = (-l * n + r * c) * p, e[8] = (a * n - r * o) * p, e) : null } function v(e, t) { var n = t[0], r = t[1], i = t[2], o = t[3], a = t[4], s = t[5], c = t[6], l = t[7], u = t[8]; return e[0] = a * u - s * l, e[1] = i * l - r * u, e[2] = r * s - i * a, e[3] = s * c - o * u, e[4] = n * u - i * c, e[5] = i * o - n * s, e[6] = o * l - a * c, e[7] = r * c - n * l, e[8] = n * a - r * o, e } function m(e) { var t = e[0], n = e[1], r = e[2], i = e[3], o = e[4], a = e[5], s = e[6], c = e[7], l = e[8]; return t * (l * o - a * c) + n * (-l * i + a * s) + r * (c * i - o * s) } function g(e, t, n) { var r = t[0], i = t[1], o = t[2], a = t[3], s = t[4], c = t[5], l = t[6], u = t[7], h = t[8], f = n[0], d = n[1], p = n[2], v = n[3], m = n[4], g = n[5], y = n[6], b = n[7], x = n[8]; return e[0] = f * r + d * a + p * l, e[1] = f * i + d * s + p * u, e[2] = f * o + d * c + p * h, e[3] = v * r + m * a + g * l, e[4] = v * i + m * s + g * u, e[5] = v * o + m * c + g * h, e[6] = y * r + b * a + x * l, e[7] = y * i + b * s + x * u, e[8] = y * o + b * c + x * h, e } function y(e, t, n) { var r = t[0], i = t[1], o = t[2], a = t[3], s = t[4], c = t[5], l = t[6], u = t[7], h = t[8], f = n[0], d = n[1]; return e[0] = r, e[1] = i, e[2] = o, e[3] = a, e[4] = s, e[5] = c, e[6] = f * r + d * a + l, e[7] = f * i + d * s + u, e[8] = f * o + d * c + h, e } function b(e, t, n) { var r = t[0], i = t[1], o = t[2], a = t[3], s = t[4], c = t[5], l = t[6], u = t[7], h = t[8], f = Math.sin(n), d = Math.cos(n); return e[0] = d * r + f * a, e[1] = d * i + f * s, e[2] = d * o + f * c, e[3] = d * a - f * r, e[4] = d * s - f * i, e[5] = d * c - f * o, e[6] = l, e[7] = u, e[8] = h, e } function x(e, t, n) { var r = n[0], i = n[1]; return e[0] = r * t[0], e[1] = r * t[1], e[2] = r * t[2], e[3] = i * t[3], e[4] = i * t[4], e[5] = i * t[5], e[6] = t[6], e[7] = t[7], e[8] = t[8], e } function w(e, t) { return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 1, e[5] = 0, e[6] = t[0], e[7] = t[1], e[8] = 1, e } function _(e, t) { var n = Math.sin(t), r = Math.cos(t); return e[0] = r, e[1] = n, e[2] = 0, e[3] = -n, e[4] = r, e[5] = 0, e[6] = 0, e[7] = 0, e[8] = 1, e } function C(e, t) { return e[0] = t[0], e[1] = 0, e[2] = 0, e[3] = 0, e[4] = t[1], e[5] = 0, e[6] = 0, e[7] = 0, e[8] = 1, e } function M(e, t) { return e[0] = t[0], e[1] = t[1], e[2] = 0, e[3] = t[2], e[4] = t[3], e[5] = 0, e[6] = t[4], e[7] = t[5], e[8] = 1, e } function O(e, t) { var n = t[0], r = t[1], i = t[2], o = t[3], a = n + n, s = r + r, c = i + i, l = n * a, u = r * a, h = r * s, f = i * a, d = i * s, p = i * c, v = o * a, m = o * s, g = o * c; return e[0] = 1 - h - p, e[3] = u - g, e[6] = f + m, e[1] = u + g, e[4] = 1 - l - p, e[7] = d - v, e[2] = f - m, e[5] = d + v, e[8] = 1 - l - h, e } function k(e, t) { var n = t[0], r = t[1], i = t[2], o = t[3], a = t[4], s = t[5], c = t[6], l = t[7], u = t[8], h = t[9], f = t[10], d = t[11], p = t[12], v = t[13], m = t[14], g = t[15], y = n * s - r * a, b = n * c - i * a, x = n * l - o * a, w = r * c - i * s, _ = r * l - o * s, C = i * l - o * c, M = u * v - h * p, O = u * m - f * p, k = u * g - d * p, S = h * m - f * v, T = h * g - d * v, A = f * g - d * m, L = y * A - b * T + x * S + w * k - _ * O + C * M; return L ? (L = 1 / L, e[0] = (s * A - c * T + l * S) * L, e[1] = (c * k - a * A - l * O) * L, e[2] = (a * T - s * k + l * M) * L, e[3] = (i * T - r * A - o * S) * L, e[4] = (n * A - i * k + o * O) * L, e[5] = (r * k - n * T - o * M) * L, e[6] = (v * C - m * _ + g * w) * L, e[7] = (m * x - p * C - g * b) * L, e[8] = (p * _ - v * x + g * y) * L, e) : null } function S(e, t, n) { return e[0] = 2 / t, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = -2 / n, e[5] = 0, e[6] = -1, e[7] = 1, e[8] = 1, e } function T(e) { return "mat3(" + e[0] + ", " + e[1] + ", " + e[2] + ", " + e[3] + ", " + e[4] + ", " + e[5] + ", " + e[6] + ", " + e[7] + ", " + e[8] + ")" } function A(e) { return Math.sqrt(Math.pow(e[0], 2) + Math.pow(e[1], 2) + Math.pow(e[2], 2) + Math.pow(e[3], 2) + Math.pow(e[4], 2) + Math.pow(e[5], 2) + Math.pow(e[6], 2) + Math.pow(e[7], 2) + Math.pow(e[8], 2)) } function L(e, t, n) { return e[0] = t[0] + n[0], e[1] = t[1] + n[1], e[2] = t[2] + n[2], e[3] = t[3] + n[3], e[4] = t[4] + n[4], e[5] = t[5] + n[5], e[6] = t[6] + n[6], e[7] = t[7] + n[7], e[8] = t[8] + n[8], e } function j(e, t, n) { return e[0] = t[0] - n[0], e[1] = t[1] - n[1], e[2] = t[2] - n[2], e[3] = t[3] - n[3], e[4] = t[4] - n[4], e[5] = t[5] - n[5], e[6] = t[6] - n[6], e[7] = t[7] - n[7], e[8] = t[8] - n[8], e } function z(e, t, n) { return e[0] = t[0] * n, e[1] = t[1] * n, e[2] = t[2] * n, e[3] = t[3] * n, e[4] = t[4] * n, e[5] = t[5] * n, e[6] = t[6] * n, e[7] = t[7] * n, e[8] = t[8] * n, e } function E(e, t, n, r) { return e[0] = t[0] + n[0] * r, e[1] = t[1] + n[1] * r, e[2] = t[2] + n[2] * r, e[3] = t[3] + n[3] * r, e[4] = t[4] + n[4] * r, e[5] = t[5] + n[5] * r, e[6] = t[6] + n[6] * r, e[7] = t[7] + n[7] * r, e[8] = t[8] + n[8] * r, e } function P(e, t) { return e[0] === t[0] && e[1] === t[1] && e[2] === t[2] && e[3] === t[3] && e[4] === t[4] && e[5] === t[5] && e[6] === t[6] && e[7] === t[7] && e[8] === t[8] } function D(e, t) { var n = e[0], r = e[1], o = e[2], a = e[3], s = e[4], c = e[5], l = e[6], u = e[7], h = e[8], f = t[0], d = t[1], p = t[2], v = t[3], m = t[4], g = t[5], y = t[6], b = t[7], x = t[8]; return Math.abs(n - f) <= i.EPSILON * Math.max(1, Math.abs(n), Math.abs(f)) && Math.abs(r - d) <= i.EPSILON * Math.max(1, Math.abs(r), Math.abs(d)) && Math.abs(o - p) <= i.EPSILON * Math.max(1, Math.abs(o), Math.abs(p)) && Math.abs(a - v) <= i.EPSILON * Math.max(1, Math.abs(a), Math.abs(v)) && Math.abs(s - m) <= i.EPSILON * Math.max(1, Math.abs(s), Math.abs(m)) && Math.abs(c - g) <= i.EPSILON * Math.max(1, Math.abs(c), Math.abs(g)) && Math.abs(l - y) <= i.EPSILON * Math.max(1, Math.abs(l), Math.abs(y)) && Math.abs(u - b) <= i.EPSILON * Math.max(1, Math.abs(u), Math.abs(b)) && Math.abs(h - x) <= i.EPSILON * Math.max(1, Math.abs(h), Math.abs(x)) } t.mul = g, t.sub = j }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.forEach = t.sqrLen = t.sqrDist = t.dist = t.div = t.mul = t.sub = t.len = void 0, t.create = a, t.clone = s, t.fromValues = c, t.copy = l, t.set = u, t.add = h, t.subtract = f, t.multiply = d, t.divide = p, t.ceil = v, t.floor = m, t.min = g, t.max = y, t.round = b, t.scale = x, t.scaleAndAdd = w, t.distance = _, t.squaredDistance = C, t.length = M, t.squaredLength = O, t.negate = k, t.inverse = S, t.normalize = T, t.dot = A, t.cross = L, t.lerp = j, t.random = z, t.transformMat2 = E, t.transformMat2d = P, t.transformMat3 = D, t.transformMat4 = H, t.rotate = V, t.angle = I, t.str = N, t.exactEquals = R, t.equals = F; var r = n(74), i = o(r); function o(e) { if (e && e.__esModule) return e; var t = {}; if (null != e) for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]); return t.default = e, t } function a() { var e = new i.ARRAY_TYPE(2); return i.ARRAY_TYPE != Float32Array && (e[0] = 0, e[1] = 0), e } function s(e) { var t = new i.ARRAY_TYPE(2); return t[0] = e[0], t[1] = e[1], t } function c(e, t) { var n = new i.ARRAY_TYPE(2); return n[0] = e, n[1] = t, n } function l(e, t) { return e[0] = t[0], e[1] = t[1], e } function u(e, t, n) { return e[0] = t, e[1] = n, e } function h(e, t, n) { return e[0] = t[0] + n[0], e[1] = t[1] + n[1], e } function f(e, t, n) { return e[0] = t[0] - n[0], e[1] = t[1] - n[1], e } function d(e, t, n) { return e[0] = t[0] * n[0], e[1] = t[1] * n[1], e } function p(e, t, n) { return e[0] = t[0] / n[0], e[1] = t[1] / n[1], e } function v(e, t) { return e[0] = Math.ceil(t[0]), e[1] = Math.ceil(t[1]), e } function m(e, t) { return e[0] = Math.floor(t[0]), e[1] = Math.floor(t[1]), e } function g(e, t, n) { return e[0] = Math.min(t[0], n[0]), e[1] = Math.min(t[1], n[1]), e } function y(e, t, n) { return e[0] = Math.max(t[0], n[0]), e[1] = Math.max(t[1], n[1]), e } function b(e, t) { return e[0] = Math.round(t[0]), e[1] = Math.round(t[1]), e } function x(e, t, n) { return e[0] = t[0] * n, e[1] = t[1] * n, e } function w(e, t, n, r) { return e[0] = t[0] + n[0] * r, e[1] = t[1] + n[1] * r, e } function _(e, t) { var n = t[0] - e[0], r = t[1] - e[1]; return Math.sqrt(n * n + r * r) } function C(e, t) { var n = t[0] - e[0], r = t[1] - e[1]; return n * n + r * r } function M(e) { var t = e[0], n = e[1]; return Math.sqrt(t * t + n * n) } function O(e) { var t = e[0], n = e[1]; return t * t + n * n } function k(e, t) { return e[0] = -t[0], e[1] = -t[1], e } function S(e, t) { return e[0] = 1 / t[0], e[1] = 1 / t[1], e } function T(e, t) { var n = t[0], r = t[1], i = n * n + r * r; return i > 0 && (i = 1 / Math.sqrt(i), e[0] = t[0] * i, e[1] = t[1] * i), e } function A(e, t) { return e[0] * t[0] + e[1] * t[1] } function L(e, t, n) { var r = t[0] * n[1] - t[1] * n[0]; return e[0] = e[1] = 0, e[2] = r, e } function j(e, t, n, r) { var i = t[0], o = t[1]; return e[0] = i + r * (n[0] - i), e[1] = o + r * (n[1] - o), e } function z(e, t) { t = t || 1; var n = 2 * i.RANDOM() * Math.PI; return e[0] = Math.cos(n) * t, e[1] = Math.sin(n) * t, e } function E(e, t, n) { var r = t[0], i = t[1]; return e[0] = n[0] * r + n[2] * i, e[1] = n[1] * r + n[3] * i, e } function P(e, t, n) { var r = t[0], i = t[1]; return e[0] = n[0] * r + n[2] * i + n[4], e[1] = n[1] * r + n[3] * i + n[5], e } function D(e, t, n) { var r = t[0], i = t[1]; return e[0] = n[0] * r + n[3] * i + n[6], e[1] = n[1] * r + n[4] * i + n[7], e } function H(e, t, n) { var r = t[0], i = t[1]; return e[0] = n[0] * r + n[4] * i + n[12], e[1] = n[1] * r + n[5] * i + n[13], e } function V(e, t, n, r) { var i = t[0] - n[0], o = t[1] - n[1], a = Math.sin(r), s = Math.cos(r); return e[0] = i * s - o * a + n[0], e[1] = i * a + o * s + n[1], e } function I(e, t) { var n = e[0], r = e[1], i = t[0], o = t[1], a = n * n + r * r; a > 0 && (a = 1 / Math.sqrt(a)); var s = i * i + o * o; s > 0 && (s = 1 / Math.sqrt(s)); var c = (n * i + r * o) * a * s; return c > 1 ? 0 : c < -1 ? Math.PI : Math.acos(c) } function N(e) { return "vec2(" + e[0] + ", " + e[1] + ")" } function R(e, t) { return e[0] === t[0] && e[1] === t[1] } function F(e, t) { var n = e[0], r = e[1], o = t[0], a = t[1]; return Math.abs(n - o) <= i.EPSILON * Math.max(1, Math.abs(n), Math.abs(o)) && Math.abs(r - a) <= i.EPSILON * Math.max(1, Math.abs(r), Math.abs(a)) } t.len = M, t.sub = f, t.mul = d, t.div = p, t.dist = _, t.sqrDist = C, t.sqrLen = O, t.forEach = function () { var e = a(); return function (t, n, r, i, o, a) { var s = void 0, c = void 0; for (n || (n = 2), r || (r = 0), c = i ? Math.min(i * n + r, t.length) : t.length, s = r; s < c; s += n)e[0] = t[s], e[1] = t[s + 1], o(e, e, a), t[s] = e[0], t[s + 1] = e[1]; return t } }() }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.forEach = t.sqrLen = t.len = t.sqrDist = t.dist = t.div = t.mul = t.sub = void 0, t.create = a, t.clone = s, t.length = c, t.fromValues = l, t.copy = u, t.set = h, t.add = f, t.subtract = d, t.multiply = p, t.divide = v, t.ceil = m, t.floor = g, t.min = y, t.max = b, t.round = x, t.scale = w, t.scaleAndAdd = _, t.distance = C, t.squaredDistance = M, t.squaredLength = O, t.negate = k, t.inverse = S, t.normalize = T, t.dot = A, t.cross = L, t.lerp = j, t.hermite = z, t.bezier = E, t.random = P, t.transformMat4 = D, t.transformMat3 = H, t.transformQuat = V, t.rotateX = I, t.rotateY = N, t.rotateZ = R, t.angle = F, t.str = Y, t.exactEquals = $, t.equals = B; var r = n(74), i = o(r); function o(e) { if (e && e.__esModule) return e; var t = {}; if (null != e) for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]); return t.default = e, t } function a() { var e = new i.ARRAY_TYPE(3); return i.ARRAY_TYPE != Float32Array && (e[0] = 0, e[1] = 0, e[2] = 0), e } function s(e) { var t = new i.ARRAY_TYPE(3); return t[0] = e[0], t[1] = e[1], t[2] = e[2], t } function c(e) { var t = e[0], n = e[1], r = e[2]; return Math.sqrt(t * t + n * n + r * r) } function l(e, t, n) { var r = new i.ARRAY_TYPE(3); return r[0] = e, r[1] = t, r[2] = n, r } function u(e, t) { return e[0] = t[0], e[1] = t[1], e[2] = t[2], e } function h(e, t, n, r) { return e[0] = t, e[1] = n, e[2] = r, e } function f(e, t, n) { return e[0] = t[0] + n[0], e[1] = t[1] + n[1], e[2] = t[2] + n[2], e } function d(e, t, n) { return e[0] = t[0] - n[0], e[1] = t[1] - n[1], e[2] = t[2] - n[2], e } function p(e, t, n) { return e[0] = t[0] * n[0], e[1] = t[1] * n[1], e[2] = t[2] * n[2], e } function v(e, t, n) { return e[0] = t[0] / n[0], e[1] = t[1] / n[1], e[2] = t[2] / n[2], e } function m(e, t) { return e[0] = Math.ceil(t[0]), e[1] = Math.ceil(t[1]), e[2] = Math.ceil(t[2]), e } function g(e, t) { return e[0] = Math.floor(t[0]), e[1] = Math.floor(t[1]), e[2] = Math.floor(t[2]), e } function y(e, t, n) { return e[0] = Math.min(t[0], n[0]), e[1] = Math.min(t[1], n[1]), e[2] = Math.min(t[2], n[2]), e } function b(e, t, n) { return e[0] = Math.max(t[0], n[0]), e[1] = Math.max(t[1], n[1]), e[2] = Math.max(t[2], n[2]), e } function x(e, t) { return e[0] = Math.round(t[0]), e[1] = Math.round(t[1]), e[2] = Math.round(t[2]), e } function w(e, t, n) { return e[0] = t[0] * n, e[1] = t[1] * n, e[2] = t[2] * n, e } function _(e, t, n, r) { return e[0] = t[0] + n[0] * r, e[1] = t[1] + n[1] * r, e[2] = t[2] + n[2] * r, e } function C(e, t) { var n = t[0] - e[0], r = t[1] - e[1], i = t[2] - e[2]; return Math.sqrt(n * n + r * r + i * i) } function M(e, t) { var n = t[0] - e[0], r = t[1] - e[1], i = t[2] - e[2]; return n * n + r * r + i * i } function O(e) { var t = e[0], n = e[1], r = e[2]; return t * t + n * n + r * r } function k(e, t) { return e[0] = -t[0], e[1] = -t[1], e[2] = -t[2], e } function S(e, t) { return e[0] = 1 / t[0], e[1] = 1 / t[1], e[2] = 1 / t[2], e } function T(e, t) { var n = t[0], r = t[1], i = t[2], o = n * n + r * r + i * i; return o > 0 && (o = 1 / Math.sqrt(o), e[0] = t[0] * o, e[1] = t[1] * o, e[2] = t[2] * o), e } function A(e, t) { return e[0] * t[0] + e[1] * t[1] + e[2] * t[2] } function L(e, t, n) { var r = t[0], i = t[1], o = t[2], a = n[0], s = n[1], c = n[2]; return e[0] = i * c - o * s, e[1] = o * a - r * c, e[2] = r * s - i * a, e } function j(e, t, n, r) { var i = t[0], o = t[1], a = t[2]; return e[0] = i + r * (n[0] - i), e[1] = o + r * (n[1] - o), e[2] = a + r * (n[2] - a), e } function z(e, t, n, r, i, o) { var a = o * o, s = a * (2 * o - 3) + 1, c = a * (o - 2) + o, l = a * (o - 1), u = a * (3 - 2 * o); return e[0] = t[0] * s + n[0] * c + r[0] * l + i[0] * u, e[1] = t[1] * s + n[1] * c + r[1] * l + i[1] * u, e[2] = t[2] * s + n[2] * c + r[2] * l + i[2] * u, e } function E(e, t, n, r, i, o) { var a = 1 - o, s = a * a, c = o * o, l = s * a, u = 3 * o * s, h = 3 * c * a, f = c * o; return e[0] = t[0] * l + n[0] * u + r[0] * h + i[0] * f, e[1] = t[1] * l + n[1] * u + r[1] * h + i[1] * f, e[2] = t[2] * l + n[2] * u + r[2] * h + i[2] * f, e } function P(e, t) { t = t || 1; var n = 2 * i.RANDOM() * Math.PI, r = 2 * i.RANDOM() - 1, o = Math.sqrt(1 - r * r) * t; return e[0] = Math.cos(n) * o, e[1] = Math.sin(n) * o, e[2] = r * t, e } function D(e, t, n) { var r = t[0], i = t[1], o = t[2], a = n[3] * r + n[7] * i + n[11] * o + n[15]; return a = a || 1, e[0] = (n[0] * r + n[4] * i + n[8] * o + n[12]) / a, e[1] = (n[1] * r + n[5] * i + n[9] * o + n[13]) / a, e[2] = (n[2] * r + n[6] * i + n[10] * o + n[14]) / a, e } function H(e, t, n) { var r = t[0], i = t[1], o = t[2]; return e[0] = r * n[0] + i * n[3] + o * n[6], e[1] = r * n[1] + i * n[4] + o * n[7], e[2] = r * n[2] + i * n[5] + o * n[8], e } function V(e, t, n) { var r = n[0], i = n[1], o = n[2], a = n[3], s = t[0], c = t[1], l = t[2], u = i * l - o * c, h = o * s - r * l, f = r * c - i * s, d = i * f - o * h, p = o * u - r * f, v = r * h - i * u, m = 2 * a; return u *= m, h *= m, f *= m, d *= 2, p *= 2, v *= 2, e[0] = s + u + d, e[1] = c + h + p, e[2] = l + f + v, e } function I(e, t, n, r) { var i = [], o = []; return i[0] = t[0] - n[0], i[1] = t[1] - n[1], i[2] = t[2] - n[2], o[0] = i[0], o[1] = i[1] * Math.cos(r) - i[2] * Math.sin(r), o[2] = i[1] * Math.sin(r) + i[2] * Math.cos(r), e[0] = o[0] + n[0], e[1] = o[1] + n[1], e[2] = o[2] + n[2], e } function N(e, t, n, r) { var i = [], o = []; return i[0] = t[0] - n[0], i[1] = t[1] - n[1], i[2] = t[2] - n[2], o[0] = i[2] * Math.sin(r) + i[0] * Math.cos(r), o[1] = i[1], o[2] = i[2] * Math.cos(r) - i[0] * Math.sin(r), e[0] = o[0] + n[0], e[1] = o[1] + n[1], e[2] = o[2] + n[2], e } function R(e, t, n, r) { var i = [], o = []; return i[0] = t[0] - n[0], i[1] = t[1] - n[1], i[2] = t[2] - n[2], o[0] = i[0] * Math.cos(r) - i[1] * Math.sin(r), o[1] = i[0] * Math.sin(r) + i[1] * Math.cos(r), o[2] = i[2], e[0] = o[0] + n[0], e[1] = o[1] + n[1], e[2] = o[2] + n[2], e } function F(e, t) { var n = l(e[0], e[1], e[2]), r = l(t[0], t[1], t[2]); T(n, n), T(r, r); var i = A(n, r); return i > 1 ? 0 : i < -1 ? Math.PI : Math.acos(i) } function Y(e) { return "vec3(" + e[0] + ", " + e[1] + ", " + e[2] + ")" } function $(e, t) { return e[0] === t[0] && e[1] === t[1] && e[2] === t[2] } function B(e, t) { var n = e[0], r = e[1], o = e[2], a = t[0], s = t[1], c = t[2]; return Math.abs(n - a) <= i.EPSILON * Math.max(1, Math.abs(n), Math.abs(a)) && Math.abs(r - s) <= i.EPSILON * Math.max(1, Math.abs(r), Math.abs(s)) && Math.abs(o - c) <= i.EPSILON * Math.max(1, Math.abs(o), Math.abs(c)) } t.sub = d, t.mul = p, t.div = v, t.dist = C, t.sqrDist = M, t.len = c, t.sqrLen = O, t.forEach = function () { var e = a(); return function (t, n, r, i, o, a) { var s = void 0, c = void 0; for (n || (n = 3), r || (r = 0), c = i ? Math.min(i * n + r, t.length) : t.length, s = r; s < c; s += n)e[0] = t[s], e[1] = t[s + 1], e[2] = t[s + 2], o(e, e, a), t[s] = e[0], t[s + 1] = e[1], t[s + 2] = e[2]; return t } }() }, function (e, t, n) { var r = n(1), i = n(78), o = ["mousedown", "mouseup", "dblclick", "mouseenter", "mouseout", "mouseover", "mousemove", "mouseleave"], a = function () { var e = new Date; return e.getTime() }, s = 40, c = 0, l = null, u = null, h = {}, f = null, d = 0; e.exports = { registerEvent: function () { var e = this, t = this.get("el"); r.each(o, (function (n) { t.addEventListener(n, (function (t) { e._triggerEvent(n, t) }), !1) })), t.addEventListener("touchstart", (function (t) { r.isEmpty(t.touches) || e._triggerEvent("touchstart", t.touches[0]) }), !1), t.addEventListener("touchmove", (function (t) { r.isEmpty(t.touches) || e._triggerEvent("touchmove", t.touches[0]) }), !1), t.addEventListener("touchend", (function (t) { r.isEmpty(t.changedTouches) || e._triggerEvent("touchend", t.changedTouches[0]) }), !1), t.addEventListener("contextmenu", (function (t) { e._triggerEvent("contextmenu", t), t.preventDefault() }), !1) }, _getEmitter: function (e, t) { if (e) { if (!r.isEmpty(e._getEvents())) return e; var n = e.get("parent"); if (n && !t.propagationStopped) return this._getEmitter(n, t) } }, _getEventObj: function (e, t, n, r) { var o = new i(e, t, !0, !0); return o.x = n.x, o.y = n.y, o.clientX = t.clientX, o.clientY = t.clientY, o.currentTarget = r, o.target = r, o }, _triggerEvent: function (e, t) { var n = this, r = n.getPointByEvent(t), i = n.getShape(r.x, r.y, t), o = n.get("el"); if (f && "svg" === n.getRenderer() && (i = n.getShape(r.x, r.y)), "mousemove" === e) { if (l && l !== i && (n._emitEvent("mouseout", t, r, l), n._emitEvent("mouseleave", t, r, l), f && n._emitEvent("dragleave", t, r, l), i && !i.destroyed || (o.style.cursor = "default")), f && (n._emitEvent("drag", t, r, f), n._emitEvent("mousemove", t, r, i)), i) { if (!f) if (u === i) { var p = a(), v = p - d, m = h.x - t.clientX, g = h.y - t.clientY, y = m * m + g * g; v > 120 || y > s ? (f = i, u = null, this._emitEvent("dragstart", t, r, i)) : n._emitEvent("mousemove", t, r, i) } else n._emitEvent("mousemove", t, r, i); l !== i && (n._emitEvent("mouseenter", t, r, i), n._emitEvent("mouseover", t, r, i), f && n._emitEvent("dragenter", t, r, i)) } else { var b = n._getEventObj("mousemove", t, r, n); n.emit("mousemove", b) } l = i } else if (this._emitEvent(e, t, r, i || this), f || "mousedown" !== e || t.button !== c || (u = i, h = { x: t.clientX, y: t.clientY }, d = a()), "mouseup" === e && t.button === c) { var x = h.x - t.clientX, w = h.y - t.clientY, _ = x * x + w * w, C = a(), M = C - d; (_ < s || M < 200) && (d = 0, this._emitEvent("click", t, r, u || this)), f && (f._cfg.capture = !0, this._emitEvent("dragend", t, r, f), f = null, this._emitEvent("drop", t, r, i || this)), u = null } i && !i.get("destroyed") && (o.style.cursor = i.attr("cursor") || "default") }, _emitEvent: function (e, t, n, r) { var i = this._getEventObj(e, t, n, r), o = this._getEmitter(r, t); return o && !o.get("destroyed") && o.emit(e, i), o } } }, function (e, t, n) { var r = n(1); e.exports = { canFill: !1, canStroke: !1, initAttrs: function (e) { return this._attrs = { opacity: 1, fillOpacity: 1, strokeOpacity: 1, matrix: [1, 0, 0, 0, 1, 0, 0, 0, 1] }, this.attr(r.assign(this.getDefaultAttrs(), e)), this }, getDefaultAttrs: function () { return {} }, attr: function (e, t) { var n = this; if (0 === arguments.length) return n._attrs; if (r.isObject(e)) { for (var i in e) this._setAttr(i, e[i]); return n.clearBBox(), this._cfg.hasUpdate = !0, n } return 2 === arguments.length ? (this._setAttr(e, t), n.clearBBox(), this._cfg.hasUpdate = !0, n) : n._attrs[e] }, _setAttr: function (e, t) { var n = this, r = this._attrs; r[e] = t, "fill" !== e && "stroke" !== e ? "opacity" !== e ? "clip" === e && t ? n._setClip(t) : "path" === e && n._afterSetAttrPath ? n._afterSetAttrPath(t) : "transform" !== e ? "rotate" === e && n.rotateAtStart(t) : n.transform(t) : r.globalAlpha = t : r[e + "Style"] = t }, clearBBox: function () { this.setSilent("box", null) }, hasFill: function () { return this.canFill && this._attrs.fillStyle }, hasStroke: function () { return this.canStroke && this._attrs.strokeStyle }, _setClip: function (e) { e._cfg.renderer = this._cfg.renderer, e._cfg.canvas = this._cfg.canvas, e._cfg.parent = this._cfg.parent, e.hasFill = function () { return !0 } } } }, function (e, t, n) { var r = n(1); function i(e) { return 1 === e[0] && 0 === e[1] && 0 === e[3] && 1 === e[4] && 0 === e[6] && 0 === e[7] } function o(e) { return 0 === e[1] && 0 === e[3] && 0 === e[6] && 0 === e[7] } function a(e, t) { i(t) || (o(t) ? (e[0] *= t[0], e[4] *= t[4]) : r.mat3.multiply(e, e, t)) } e.exports = { initTransform: function () { }, resetMatrix: function () { this.attr("matrix", [1, 0, 0, 0, 1, 0, 0, 0, 1]) }, translate: function (e, t) { var n = this._attrs.matrix; return r.mat3.translate(n, n, [e, t]), this.clearTotalMatrix(), this.attr("matrix", n), this }, rotate: function (e) { var t = this._attrs.matrix; return r.mat3.rotate(t, t, e), this.clearTotalMatrix(), this.attr("matrix", t), this }, scale: function (e, t) { var n = this._attrs.matrix; return r.mat3.scale(n, n, [e, t]), this.clearTotalMatrix(), this.attr("matrix", n), this }, rotateAtStart: function (e) { var t = this._attrs.x || this._cfg.attrs.x, n = this._attrs.y || this._cfg.attrs.y; return Math.abs(e) > 2 * Math.PI && (e = e / 180 * Math.PI), this.transform([["t", -t, -n], ["r", e], ["t", t, n]]) }, move: function (e, t) { var n = this.get("x") || 0, r = this.get("y") || 0; return this.translate(e - n, t - r), this.set("x", e), this.set("y", t), this }, transform: function (e) { var t = this, n = this._attrs.matrix; return r.each(e, (function (e) { switch (e[0]) { case "t": t.translate(e[1], e[2]); break; case "s": t.scale(e[1], e[2]); break; case "r": t.rotate(e[1]); break; case "m": t.attr("matrix", r.mat3.multiply([], n, e[1])), t.clearTotalMatrix(); break; default: break } })), t }, setTransform: function (e) { return this.attr("matrix", [1, 0, 0, 0, 1, 0, 0, 0, 1]), this.transform(e) }, getMatrix: function () { return this.attr("matrix") }, setMatrix: function (e) { return this.attr("matrix", e), this.clearTotalMatrix(), this }, apply: function (e, t) { var n; return n = t ? this._getMatrixByRoot(t) : this.attr("matrix"), r.vec3.transformMat3(e, e, n), this }, _getMatrixByRoot: function (e) { var t = this; e = e || t; var n = t, i = []; while (n !== e) i.unshift(n), n = n.get("parent"); i.unshift(n); var o = [1, 0, 0, 0, 1, 0, 0, 0, 1]; return r.each(i, (function (e) { r.mat3.multiply(o, e.attr("matrix"), o) })), o }, getTotalMatrix: function () { var e = this._cfg.totalMatrix; if (!e) { e = [1, 0, 0, 0, 1, 0, 0, 0, 1]; var t = this._cfg.parent; if (t) { var n = t.getTotalMatrix(); a(e, n) } a(e, this.attr("matrix")), this._cfg.totalMatrix = e } return e }, clearTotalMatrix: function () { }, invert: function (e) { var t = this.getTotalMatrix(); if (o(t)) e[0] /= t[0], e[1] /= t[4]; else { var n = r.mat3.invert([], t); n && r.vec3.transformMat3(e, e, n) } return this }, resetTransform: function (e) { var t = this.attr("matrix"); i(t) || e.transform(t[0], t[1], t[3], t[4], t[6], t[7]) } } }, function (e, t, n) { function r() { return r = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }, r.apply(this, arguments) } var i = n(1), o = { delay: "delay", repeat: "repeat", rotate: "rotate" }; function a(e, t) { var n = {}, r = t._attrs; for (var i in e.attrs) n[i] = r[i]; return n } function s(e, t) { var n = { matrix: null, attrs: {} }, r = t._attrs; for (var a in e) "transform" === a ? n.matrix = i.transform(t.getMatrix(), e[a]) : "matrix" === a ? n.matrix = e[a] : i.isColorProp(a) && i.isGradientColor(e[a]) ? n.attrs[a] = e[a] : o[a] || r[a] === e[a] || ("rotate" === a && (t._attrs.rotate = t._attrs.rotate || 0), n.attrs[a] = e[a]); return n } function c(e, t) { if (t.onFrame) return e; var n = t.delay, r = Object.prototype.hasOwnProperty; return i.each(t.toAttrs, (function (t, o) { i.each(e, (function (e) { n < e.startTime + e.duration && r.call(e.toAttrs, o) && (delete e.toAttrs[o], delete e.fromAttrs[o]) })) })), t.toMatrix && i.each(e, (function (e) { n < e.startTime + e.duration && e.toMatrix && delete e.toMatrix })), e } e.exports = { animate: function (e, t, n, o, l) { void 0 === l && (l = 0); var u = this; u.set("animating", !0); var h = u.get("timeline"); h || (h = u.get("canvas").get("timeline"), u.setSilent("timeline", h)); var f = u.get("animators") || []; h._timer || h.initTimer(), i.isNumber(o) && (l = o, o = null), i.isFunction(n) ? (o = n, n = "easeLinear") : n = n || "easeLinear"; var d = { repeat: e.repeat, duration: t, easing: n, callback: o, delay: l, startTime: h.getTime(), id: i.uniqueId() }; if (e.onFrame) d.onFrame = e.onFrame; else { var p = s(e, u); d = r({ fromAttrs: a(p, u), toAttrs: p.attrs, fromMatrix: i.clone(u.getMatrix()), toMatrix: p.matrix }, d) } f.length > 0 ? f = c(f, d) : h.addAnimator(u), f.push(d), u.setSilent("animators", f), u.setSilent("pause", { isPaused: !1 }) }, stopAnimate: function () { var e = this, t = this.get("animators"); i.each(t, (function (t) { e.attr(t.toAttrs || t.onFrame(1)), t.toMatrix && e.attr("matrix", t.toMatrix), t.callback && t.callback() })), this.setSilent("animating", !1), this.setSilent("animators", []) }, pauseAnimate: function () { var e = this, t = e.get("timeline"); return e.setSilent("pause", { isPaused: !0, pauseTime: t.getTime() }), e }, resumeAnimate: function () { var e = this, t = e.get("timeline"), n = t.getTime(), r = e.get("animators"), o = e.get("pause").pauseTime; return i.each(r, (function (e) { e.startTime = e.startTime + (n - o), e._paused = !1, e._pauseTime = null })), e.setSilent("pause", { isPaused: !1 }), e.setSilent("animators", r), e } } }, function (e, t, n) { var r = n(1), i = n(78), o = n(117), a = ["click", "mousedown", "mouseup", "dblclick", "contextmenu", "mouseout", "mouseover", "mousemove", "dragstart", "drag", "dragend", "dragenter", "dragleave", "drop"], s = function () { }; r.augment(s, o, { emit: function (e, t) { var n = arguments; if (o.prototype.emit.apply(this, n), !(n.length >= 2 && n[1] instanceof i && n[1].propagationStopped) && a.indexOf(e) >= 0 && t.target === this) { var r = this._cfg.parent; while (r && !r.get("destroyed")) r.emit.apply(r, n), r = r._cfg.parent } } }), e.exports = s }, function (e, t, n) { var r = n(7); r.Arc = n(120), r.Circle = n(121), r.Dom = n(122), r.Ellipse = n(123), r.Fan = n(124), r.Image = n(125), r.Line = n(126), r.Marker = n(81), r.Path = n(127), r.Polygon = n(128), r.Polyline = n(129), r.Rect = n(130), r.Text = n(131), e.exports = r }, function (e, t, n) { var r = n(1), i = n(79), o = { arc: n(44), ellipse: n(119), line: n(43) }, a = r.createDom('<canvas width="1" height="1"></canvas>'), s = a.getContext("2d"); function c(e, t, n) { return n.createPath(s), s.isPointInPath(e, t) } var l = function (e, t) { var n = this._attrs, r = n.x, o = n.y, a = n.r, s = n.startAngle, c = n.endAngle, l = n.clockwise, u = this.getHitLineWidth(); return !!this.hasStroke() && i.arcline(r, o, a, s, c, l, u, e, t) }, u = function (e, t) { var n = this._attrs, r = n.x, o = n.y, a = n.r, s = this.getHitLineWidth(), c = this.hasFill(), l = this.hasStroke(); return c && l ? i.circle(r, o, a, e, t) || i.arcline(r, o, a, 0, 2 * Math.PI, !1, s, e, t) : c ? i.circle(r, o, a, e, t) : !!l && i.arcline(r, o, a, 0, 2 * Math.PI, !1, s, e, t) }, h = function (e, t) { var n = this._attrs, o = this.hasFill(), a = this.hasStroke(), s = n.x, c = n.y, l = n.rx, u = n.ry, h = this.getHitLineWidth(), f = l > u ? l : u, d = l > u ? 1 : l / u, p = l > u ? u / l : 1, v = [e, t, 1], m = [1, 0, 0, 0, 1, 0, 0, 0, 1]; r.mat3.scale(m, m, [d, p]), r.mat3.translate(m, m, [s, c]); var g = r.mat3.invert([], m); return r.vec3.transformMat3(v, v, g), o && a ? i.circle(0, 0, f, v[0], v[1]) || i.arcline(0, 0, f, 0, 2 * Math.PI, !1, h, v[0], v[1]) : o ? i.circle(0, 0, f, v[0], v[1]) : !!a && i.arcline(0, 0, f, 0, 2 * Math.PI, !1, h, v[0], v[1]) }, f = function (e, t) { var n = this, a = n.hasFill(), s = n.hasStroke(), c = n._attrs, l = c.x, u = c.y, h = c.rs, f = c.re, d = c.startAngle, p = c.endAngle, v = c.clockwise, m = [1, 0], g = [e - l, t - u], y = r.vec2.angleTo(m, g); function b() { var e = o.arc.nearAngle(y, d, p, v); if (r.isNumberEqual(y, e)) { var t = r.vec2.squaredLength(g); if (h * h <= t && t <= f * f) return !0 } return !1 } function x() { var r = n.getHitLineWidth(), o = { x: Math.cos(d) * h + l, y: Math.sin(d) * h + u }, a = { x: Math.cos(d) * f + l, y: Math.sin(d) * f + u }, s = { x: Math.cos(p) * h + l, y: Math.sin(p) * h + u }, c = { x: Math.cos(p) * f + l, y: Math.sin(p) * f + u }; return !!i.line(o.x, o.y, a.x, a.y, r, e, t) || (!!i.line(s.x, s.y, c.x, c.y, r, e, t) || (!!i.arcline(l, u, h, d, p, v, r, e, t) || !!i.arcline(l, u, f, d, p, v, r, e, t))) } return a && s ? b() || x() : a ? b() : !!s && x() }, d = function (e, t) { var n = this._attrs; if (this.get("toDraw") || !n.img) return !1; this._cfg.attrs && this._cfg.attrs.img === n.img || this._setAttrImg(); var r = n.x, o = n.y, a = n.width, s = n.height; return i.rect(r, o, a, s, e, t) }, p = function (e, t) { var n = this._attrs, r = n.x1, o = n.y1, a = n.x2, s = n.y2, c = this.getHitLineWidth(); return !!this.hasStroke() && i.line(r, o, a, s, c, e, t) }, v = function (e, t) { var n = this, i = n.get("segments"), o = n.hasFill(), a = n.hasStroke(); function s() { if (!r.isEmpty(i)) { for (var o = n.getHitLineWidth(), a = 0, s = i.length; a < s; a++)if (i[a].isInside(e, t, o)) return !0; return !1 } } return o && a ? c(e, t, n) || s() : o ? c(e, t, n) : !!a && s() }, m = function (e, t) { var n = this, r = n.hasFill(), o = n.hasStroke(); function a() { var r = n._attrs, o = r.points; if (o.length < 2) return !1; var a = n.getHitLineWidth(), s = o.slice(0); return o.length >= 3 && s.push(o[0]), i.polyline(s, a, e, t) } return r && o ? c(e, t, n) || a() : r ? c(e, t, n) : !!o && a() }, g = function (e, t) { var n = this._attrs, r = n.x, o = n.y, a = n.radius || n.r, s = this.getHitLineWidth(); return i.circle(r, o, a + s / 2, e, t) }, y = function (e, t) { var n = this, r = n._attrs; if (n.hasStroke()) { var o = r.points; if (o.length < 2) return !1; var a = r.lineWidth; return i.polyline(o, a, e, t) } return !1 }, b = function (e, t) { var n = this, r = n.hasFill(), o = n.hasStroke(); function a() { var r = n._attrs, o = r.x, a = r.y, s = r.width, c = r.height, l = r.radius, u = n.getHitLineWidth(); if (0 === l) { var h = u / 2; return i.line(o - h, a, o + s + h, a, u, e, t) || i.line(o + s, a - h, o + s, a + c + h, u, e, t) || i.line(o + s + h, a + c, o - h, a + c, u, e, t) || i.line(o, a + c + h, o, a - h, u, e, t) } return i.line(o + l, a, o + s - l, a, u, e, t) || i.line(o + s, a + l, o + s, a + c - l, u, e, t) || i.line(o + s - l, a + c, o + l, a + c, u, e, t) || i.line(o, a + c - l, o, a + l, u, e, t) || i.arcline(o + s - l, a + l, l, 1.5 * Math.PI, 2 * Math.PI, !1, u, e, t) || i.arcline(o + s - l, a + c - l, l, 0, .5 * Math.PI, !1, u, e, t) || i.arcline(o + l, a + c - l, l, .5 * Math.PI, Math.PI, !1, u, e, t) || i.arcline(o + l, a + l, l, Math.PI, 1.5 * Math.PI, !1, u, e, t) } return r && o ? c(e, t, n) || a() : r ? c(e, t, n) : !!o && a() }, x = function (e, t) { var n = this, r = n.getBBox(); if (n.hasFill() || n.hasStroke()) return i.box(r.minX, r.maxX, r.minY, r.maxY, e, t) }, w = function (e, t) { if (!this._cfg.el) return !1; var n = this._cfg.el.getBBox(); return i.box(n.x, n.x + n.width, n.y, n.y + n.height, e, t) }, _ = { arc: l, circle: u, dom: w, ellipse: h, fan: f, image: d, line: p, path: v, marker: g, polygon: m, polyline: y, rect: b, text: x }; e.exports = { isPointInPath: function (e, t) { var n = _[this.type]; return !!n && n.call(this, e, t) } } }, function (e, t, n) { var r = n(1), i = n(82), o = n(101), a = n(103), s = n(132), c = s.interpolate, l = s.interpolateArray, u = function (e) { this._animators = [], this._current = 0, this._timer = null, this.canvas = e }; function h(e, t, n) { var o = {}, a = t.toAttrs, s = t.fromAttrs, u = t.toMatrix; if (!e.get("destroyed")) { var h; for (var f in a) if (!r.isEqual(s[f], a[f])) if ("path" === f) { var d = a[f], p = s[f]; d.length > p.length ? (d = i.parsePathString(a[f]), p = i.parsePathString(s[f]), p = i.fillPathByDiff(p, d), p = i.formatPath(p, d), t.fromAttrs.path = p, t.toAttrs.path = d) : t.pathFormatted || (d = i.parsePathString(a[f]), p = i.parsePathString(s[f]), p = i.formatPath(p, d), t.fromAttrs.path = p, t.toAttrs.path = d, t.pathFormatted = !0), o[f] = []; for (var v = 0; v < d.length; v++) { for (var m = d[v], g = p[v], y = [], b = 0; b < m.length; b++)r.isNumber(m[b]) && g && r.isNumber(g[b]) ? (h = c(g[b], m[b]), y.push(h(n))) : y.push(m[b]); o[f].push(y) } } else r.isColorProp(f) && r.isGradientColor(a[f]) ? o[f] = a[f] : (h = c(s[f], a[f]), o[f] = h(n)); if (u) { var x = l(t.fromMatrix, u), w = x(n); e.setMatrix(w) } e.attr(o) } } function f(e, t, n) { var r, i = t.startTime; if (n < i + t.delay || t.isPaused) return !1; var o = t.duration, s = t.easing; if (n = n - i - t.delay, t.repeat) r = n % o / o, r = a[s](r); else { if (r = n / o, !(r < 1)) { var c = t.toAttrs || t.onFrame(1); return e.attr(c), t.toMatrix && e.setMatrix(t.toMatrix), !0 } r = a[s](r) } if (t.onFrame) { var l = t.onFrame(r); e.attr(l) } else h(e, t, r); return !1 } r.augment(u, { initTimer: function () { var e, t, n, r = this, i = this, a = !1; i._timer = o.timer((function (o) { if (i._current = o, r._animators.length > 0) { for (var s = r._animators.length - 1; s >= 0; s--)if (e = r._animators[s], e.get("destroyed")) i.removeAnimator(s); else { if (!e.get("pause").isPaused) { t = e.get("animators"); for (var c = t.length - 1; c >= 0; c--)n = t[c], a = f(e, n, o), a && (t.splice(c, 1), a = !1, n.callback && n.callback()) } 0 === t.length && i.removeAnimator(s) } r.canvas.draw() } })) }, addAnimator: function (e) { this._animators.push(e) }, removeAnimator: function (e) { this._animators.splice(e, 1) }, isAnimating: function () { return !!this._animators.length }, stop: function () { this._timer && this._timer.stop() }, stopAllAnimations: function () { this._animators.forEach((function (e) { e.stopAnimate() })), this._animators = [], this.canvas.draw() }, getTime: function () { return this._current } }), e.exports = u }, function (e, t, n) { "use strict"; var r = n(83); t["a"] = function (e, t, n) { var i = new r["a"]; return t = null == t ? 0 : +t, i.restart((function (n) { i.stop(), e(n + t) }), t, n), i } }, function (e, t, n) { "use strict"; var r = n(83); t["a"] = function (e, t, n) { var i = new r["a"], o = t; return null == t ? (i.restart(e, t, n), i) : (t = +t, n = null == n ? Object(r["b"])() : +n, i.restart((function r(a) { a += o, i.restart(r, o += t, n), e(a) }), t, n), i) } }, function (e, t, n) { "use strict"; function r(e) { return +e } t["a"] = r }, function (e, t, n) { "use strict"; function r(e) { return e * e } function i(e) { return e * (2 - e) } function o(e) { return ((e *= 2) <= 1 ? e * e : --e * (2 - e) + 1) / 2 } t["a"] = r, t["c"] = i, t["b"] = o }, function (e, t, n) { "use strict"; function r(e) { return e * e * e } function i(e) { return --e * e * e + 1 } function o(e) { return ((e *= 2) <= 1 ? e * e * e : (e -= 2) * e * e + 2) / 2 } t["a"] = r, t["c"] = i, t["b"] = o }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return i })), n.d(t, "c", (function () { return o })), n.d(t, "b", (function () { return a })); var r = 3, i = function e(t) { function n(e) { return Math.pow(e, t) } return t = +t, n.exponent = e, n }(r), o = function e(t) { function n(e) { return 1 - Math.pow(1 - e, t) } return t = +t, n.exponent = e, n }(r), a = function e(t) { function n(e) { return ((e *= 2) <= 1 ? Math.pow(e, t) : 2 - Math.pow(2 - e, t)) / 2 } return t = +t, n.exponent = e, n }(r) }, function (e, t, n) { "use strict"; t["a"] = o, t["c"] = a, t["b"] = s; var r = Math.PI, i = r / 2; function o(e) { return 1 - Math.cos(e * i) } function a(e) { return Math.sin(e * i) } function s(e) { return (1 - Math.cos(r * e)) / 2 } }, function (e, t, n) { "use strict"; function r(e) { return Math.pow(2, 10 * e - 10) } function i(e) { return 1 - Math.pow(2, -10 * e) } function o(e) { return ((e *= 2) <= 1 ? Math.pow(2, 10 * e - 10) : 2 - Math.pow(2, 10 - 10 * e)) / 2 } t["a"] = r, t["c"] = i, t["b"] = o }, function (e, t, n) { "use strict"; function r(e) { return 1 - Math.sqrt(1 - e * e) } function i(e) { return Math.sqrt(1 - --e * e) } function o(e) { return ((e *= 2) <= 1 ? 1 - Math.sqrt(1 - e * e) : Math.sqrt(1 - (e -= 2) * e) + 1) / 2 } t["a"] = r, t["c"] = i, t["b"] = o }, function (e, t, n) { "use strict"; t["a"] = d, t["c"] = p, t["b"] = v; var r = 4 / 11, i = 6 / 11, o = 8 / 11, a = 3 / 4, s = 9 / 11, c = 10 / 11, l = 15 / 16, u = 21 / 22, h = 63 / 64, f = 1 / r / r; function d(e) { return 1 - p(1 - e) } function p(e) { return (e = +e) < r ? f * e * e : e < o ? f * (e -= i) * e + a : e < c ? f * (e -= s) * e + l : f * (e -= u) * e + h } function v(e) { return ((e *= 2) <= 1 ? 1 - p(1 - e) : p(e - 1) + 1) / 2 } }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return i })), n.d(t, "c", (function () { return o })), n.d(t, "b", (function () { return a })); var r = 1.70158, i = function e(t) { function n(e) { return e * e * ((t + 1) * e - t) } return t = +t, n.overshoot = e, n }(r), o = function e(t) { function n(e) { return --e * e * ((t + 1) * e + t) + 1 } return t = +t, n.overshoot = e, n }(r), a = function e(t) { function n(e) { return ((e *= 2) < 1 ? e * e * ((t + 1) * e - t) : (e -= 2) * e * ((t + 1) * e + t) + 2) / 2 } return t = +t, n.overshoot = e, n }(r) }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return a })), n.d(t, "c", (function () { return s })), n.d(t, "b", (function () { return c })); var r = 2 * Math.PI, i = 1, o = .3, a = function e(t, n) { var i = Math.asin(1 / (t = Math.max(1, t))) * (n /= r); function o(e) { return t * Math.pow(2, 10 * --e) * Math.sin((i - e) / n) } return o.amplitude = function (t) { return e(t, n * r) }, o.period = function (n) { return e(t, n) }, o }(i, o), s = function e(t, n) { var i = Math.asin(1 / (t = Math.max(1, t))) * (n /= r); function o(e) { return 1 - t * Math.pow(2, -10 * (e = +e)) * Math.sin((e + i) / n) } return o.amplitude = function (t) { return e(t, n * r) }, o.period = function (n) { return e(t, n) }, o }(i, o), c = function e(t, n) { var i = Math.asin(1 / (t = Math.max(1, t))) * (n /= r); function o(e) { return ((e = 2 * e - 1) < 0 ? t * Math.pow(2, 10 * e) * Math.sin((i - e) / n) : 2 - t * Math.pow(2, -10 * e) * Math.sin((i + e) / n)) / 2 } return o.amplitude = function (t) { return e(t, n * r) }, o.period = function (n) { return e(t, n) }, o }(i, o) }, function (e, t, n) { "use strict"; t["a"] = v, t["b"] = _; var r = n(86), i = n(85), o = n(133), a = 18, s = .96422, c = 1, l = .82521, u = 4 / 29, h = 6 / 29, f = 3 * h * h, d = h * h * h; function p(e) { if (e instanceof m) return new m(e.l, e.a, e.b, e.opacity); if (e instanceof C) return M(e); e instanceof i["b"] || (e = Object(i["h"])(e)); var t, n, r = x(e.r), o = x(e.g), a = x(e.b), u = g((.2225045 * r + .7168786 * o + .0606169 * a) / c); return r === o && o === a ? t = n = u : (t = g((.4360747 * r + .3850649 * o + .1430804 * a) / s), n = g((.0139322 * r + .0971045 * o + .7141733 * a) / l)), new m(116 * u - 16, 500 * (t - u), 200 * (u - n), e.opacity) } function v(e, t, n, r) { return 1 === arguments.length ? p(e) : new m(e, t, n, null == r ? 1 : r) } function m(e, t, n, r) { this.l = +e, this.a = +t, this.b = +n, this.opacity = +r } function g(e) { return e > d ? Math.pow(e, 1 / 3) : e / f + u } function y(e) { return e > h ? e * e * e : f * (e - u) } function b(e) { return 255 * (e <= .0031308 ? 12.92 * e : 1.055 * Math.pow(e, 1 / 2.4) - .055) } function x(e) { return (e /= 255) <= .04045 ? e / 12.92 : Math.pow((e + .055) / 1.055, 2.4) } function w(e) { if (e instanceof C) return new C(e.h, e.c, e.l, e.opacity); if (e instanceof m || (e = p(e)), 0 === e.a && 0 === e.b) return new C(NaN, 0 < e.l && e.l < 100 ? 0 : NaN, e.l, e.opacity); var t = Math.atan2(e.b, e.a) * o["b"]; return new C(t < 0 ? t + 360 : t, Math.sqrt(e.a * e.a + e.b * e.b), e.l, e.opacity) } function _(e, t, n, r) { return 1 === arguments.length ? w(e) : new C(e, t, n, null == r ? 1 : r) } function C(e, t, n, r) { this.h = +e, this.c = +t, this.l = +n, this.opacity = +r } function M(e) { if (isNaN(e.h)) return new m(e.l, 0, 0, e.opacity); var t = e.h * o["a"]; return new m(e.l, Math.cos(t) * e.c, Math.sin(t) * e.c, e.opacity) } Object(r["a"])(m, v, Object(r["b"])(i["a"], { brighter: function (e) { return new m(this.l + a * (null == e ? 1 : e), this.a, this.b, this.opacity) }, darker: function (e) { return new m(this.l - a * (null == e ? 1 : e), this.a, this.b, this.opacity) }, rgb: function () { var e = (this.l + 16) / 116, t = isNaN(this.a) ? e : e + this.a / 500, n = isNaN(this.b) ? e : e - this.b / 200; return t = s * y(t), e = c * y(e), n = l * y(n), new i["b"](b(3.1338561 * t - 1.6168667 * e - .4906146 * n), b(-.9787684 * t + 1.9161415 * e + .033454 * n), b(.0719453 * t - .2289914 * e + 1.4052427 * n), this.opacity) } })), Object(r["a"])(C, _, Object(r["b"])(i["a"], { brighter: function (e) { return new C(this.h, this.c, this.l + a * (null == e ? 1 : e), this.opacity) }, darker: function (e) { return new C(this.h, this.c, this.l - a * (null == e ? 1 : e), this.opacity) }, rgb: function () { return M(this).rgb() } })) }, function (e, t, n) { "use strict"; t["a"] = v; var r = n(86), i = n(85), o = n(133), a = -.14861, s = 1.78277, c = -.29227, l = -.90649, u = 1.97294, h = u * l, f = u * s, d = s * c - l * a; function p(e) { if (e instanceof m) return new m(e.h, e.s, e.l, e.opacity); e instanceof i["b"] || (e = Object(i["h"])(e)); var t = e.r / 255, n = e.g / 255, r = e.b / 255, a = (d * r + h * t - f * n) / (d + h - f), s = r - a, p = (u * (n - a) - c * s) / l, v = Math.sqrt(p * p + s * s) / (u * a * (1 - a)), g = v ? Math.atan2(p, s) * o["b"] - 120 : NaN; return new m(g < 0 ? g + 360 : g, v, a, e.opacity) } function v(e, t, n, r) { return 1 === arguments.length ? p(e) : new m(e, t, n, null == r ? 1 : r) } function m(e, t, n, r) { this.h = +e, this.s = +t, this.l = +n, this.opacity = +r } Object(r["a"])(m, v, Object(r["b"])(i["a"], { brighter: function (e) { return e = null == e ? i["c"] : Math.pow(i["c"], e), new m(this.h, this.s, this.l * e, this.opacity) }, darker: function (e) { return e = null == e ? i["d"] : Math.pow(i["d"], e), new m(this.h, this.s, this.l * e, this.opacity) }, rgb: function () { var e = isNaN(this.h) ? 0 : (this.h + 120) * o["a"], t = +this.l, n = isNaN(this.s) ? 0 : this.s * t * (1 - t), r = Math.cos(e), h = Math.sin(e); return new i["b"](255 * (t + n * (a * r + s * h)), 255 * (t + n * (c * r + l * h)), 255 * (t + n * (u * r)), this.opacity) } })) }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { return e = +e, t -= e, function (n) { return Math.round(e + t * n) } } }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return a })), n.d(t, "b", (function () { return s })); var r = n(47), i = n(244); function o(e, t, n, i) { function o(e) { return e.length ? e.pop() + " " : "" } function a(e, i, o, a, s, c) { if (e !== o || i !== a) { var l = s.push("translate(", null, t, null, n); c.push({ i: l - 4, x: Object(r["a"])(e, o) }, { i: l - 2, x: Object(r["a"])(i, a) }) } else (o || a) && s.push("translate(" + o + t + a + n) } function s(e, t, n, a) { e !== t ? (e - t > 180 ? t += 360 : t - e > 180 && (e += 360), a.push({ i: n.push(o(n) + "rotate(", null, i) - 2, x: Object(r["a"])(e, t) })) : t && n.push(o(n) + "rotate(" + t + i) } function c(e, t, n, a) { e !== t ? a.push({ i: n.push(o(n) + "skewX(", null, i) - 2, x: Object(r["a"])(e, t) }) : t && n.push(o(n) + "skewX(" + t + i) } function l(e, t, n, i, a, s) { if (e !== n || t !== i) { var c = a.push(o(a) + "scale(", null, ",", null, ")"); s.push({ i: c - 4, x: Object(r["a"])(e, n) }, { i: c - 2, x: Object(r["a"])(t, i) }) } else 1 === n && 1 === i || a.push(o(a) + "scale(" + n + "," + i + ")") } return function (t, n) { var r = [], i = []; return t = e(t), n = e(n), a(t.translateX, t.translateY, n.translateX, n.translateY, r, i), s(t.rotate, n.rotate, r, i), c(t.skewX, n.skewX, r, i), l(t.scaleX, t.scaleY, n.scaleX, n.scaleY, r, i), t = n = null, function (e) { var t, n = -1, o = i.length; while (++n < o) r[(t = i[n]).i] = t.x(e); return r.join("") } } } var a = o(i["a"], "px, ", "px)", "deg)"), s = o(i["b"], ", ", ")", ")") }, function (e, t, n) { "use strict"; t["a"] = c, t["b"] = l; var r, i, o, a, s = n(245); function c(e) { return "none" === e ? s["b"] : (r || (r = document.createElement("DIV"), i = document.documentElement, o = document.defaultView), r.style.transform = e, e = o.getComputedStyle(i.appendChild(r), null).getPropertyValue("transform"), i.removeChild(r), e = e.slice(7, -1).split(","), Object(s["a"])(+e[0], +e[1], +e[2], +e[3], +e[4], +e[5])) } function l(e) { return null == e ? s["b"] : (a || (a = document.createElementNS("http://www.w3.org/2000/svg", "g")), a.setAttribute("transform", e), (e = a.transform.baseVal.consolidate()) ? (e = e.matrix, Object(s["a"])(e.a, e.b, e.c, e.d, e.e, e.f)) : s["b"]) } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return i })); var r = 180 / Math.PI, i = { translateX: 0, translateY: 0, rotate: 0, skewX: 0, scaleX: 1, scaleY: 1 }; t["a"] = function (e, t, n, i, o, a) { var s, c, l; return (s = Math.sqrt(e * e + t * t)) && (e /= s, t /= s), (l = e * n + t * i) && (n -= e * l, i -= t * l), (c = Math.sqrt(n * n + i * i)) && (n /= c, i /= c, l /= c), e * i < t * n && (e = -e, t = -t, l = -l, s = -s), { translateX: o, translateY: a, rotate: Math.atan2(t, e) * r, skewX: Math.atan(l) * r, scaleX: s, scaleY: c } } }, function (e, t, n) { "use strict"; var r = Math.SQRT2, i = 2, o = 4, a = 1e-12; function s(e) { return ((e = Math.exp(e)) + 1 / e) / 2 } function c(e) { return ((e = Math.exp(e)) - 1 / e) / 2 } function l(e) { return ((e = Math.exp(2 * e)) - 1) / (e + 1) } t["a"] = function (e, t) { var n, u, h = e[0], f = e[1], d = e[2], p = t[0], v = t[1], m = t[2], g = p - h, y = v - f, b = g * g + y * y; if (b < a) u = Math.log(m / d) / r, n = function (e) { return [h + e * g, f + e * y, d * Math.exp(r * e * u)] }; else { var x = Math.sqrt(b), w = (m * m - d * d + o * b) / (2 * d * i * x), _ = (m * m - d * d - o * b) / (2 * m * i * x), C = Math.log(Math.sqrt(w * w + 1) - w), M = Math.log(Math.sqrt(_ * _ + 1) - _); u = (M - C) / r, n = function (e) { var t = e * u, n = s(C), o = d / (i * x) * (n * l(r * t + C) - c(C)); return [h + o * g, f + o * y, d * n / s(r * t + C)] } } return n.duration = 1e3 * u, n } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return a })); var r = n(19), i = n(32); function o(e) { return function (t, n) { var o = e((t = Object(r["d"])(t)).h, (n = Object(r["d"])(n)).h), a = Object(i["a"])(t.s, n.s), s = Object(i["a"])(t.l, n.l), c = Object(i["a"])(t.opacity, n.opacity); return function (e) { return t.h = o(e), t.s = a(e), t.l = s(e), t.opacity = c(e), t + "" } } } t["a"] = o(i["c"]); var a = o(i["a"]) }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(19), i = n(32); function o(e, t) { var n = Object(i["a"])((e = Object(r["e"])(e)).l, (t = Object(r["e"])(t)).l), o = Object(i["a"])(e.a, t.a), a = Object(i["a"])(e.b, t.b), s = Object(i["a"])(e.opacity, t.opacity); return function (t) { return e.l = n(t), e.a = o(t), e.b = a(t), e.opacity = s(t), e + "" } } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return a })); var r = n(19), i = n(32); function o(e) { return function (t, n) { var o = e((t = Object(r["c"])(t)).h, (n = Object(r["c"])(n)).h), a = Object(i["a"])(t.c, n.c), s = Object(i["a"])(t.l, n.l), c = Object(i["a"])(t.opacity, n.opacity); return function (e) { return t.h = o(e), t.c = a(e), t.l = s(e), t.opacity = c(e), t + "" } } } t["a"] = o(i["c"]); var a = o(i["a"]) }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return a })); var r = n(19), i = n(32); function o(e) { return function t(n) { function o(t, o) { var a = e((t = Object(r["b"])(t)).h, (o = Object(r["b"])(o)).h), s = Object(i["a"])(t.s, o.s), c = Object(i["a"])(t.l, o.l), l = Object(i["a"])(t.opacity, o.opacity); return function (e) { return t.h = a(e), t.s = s(e), t.l = c(Math.pow(e, n)), t.opacity = l(e), t + "" } } return n = +n, o.gamma = t, o }(1) } t["b"] = o(i["c"]); var a = o(i["a"]) }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { for (var n = new Array(t), r = 0; r < t; ++r)n[r] = e(r / (t - 1)); return n } }, function (e, t, n) { e.exports = { canvas: n(253), svg: n(256) } }, function (e, t, n) { e.exports = { painter: n(254) } }, function (e, t, n) { var r = n(1), i = n(255), o = ["fillStyle", "font", "globalAlpha", "lineCap", "lineWidth", "lineJoin", "miterLimit", "shadowBlur", "shadowColor", "shadowOffsetX", "shadowOffsetY", "strokeStyle", "textAlign", "textBaseline", "lineDash", "lineDashOffset"], a = function () { function e(e) { if (!e) return null; var t = r.uniqueId("canvas_"), n = r.createDom('<canvas id="' + t + '"></canvas>'); return e.appendChild(n), this.type = "canvas", this.canvas = n, this.context = n.getContext("2d"), this.toDraw = !1, this } var t = e.prototype; return t.beforeDraw = function () { var e = this.canvas; this.context && this.context.clearRect(0, 0, e.width, e.height) }, t.draw = function (e) { var t = this; function n() { t.animateHandler = r.requestAnimationFrame((function () { t.animateHandler = void 0, t.toDraw && n() })), t.beforeDraw(); try { t._drawGroup(e) } catch (i) { console.warn("error in draw canvas, detail as:"), console.warn(i) } finally { t.toDraw = !1 } } t.animateHandler ? t.toDraw = !0 : n() }, t.drawSync = function (e) { this.beforeDraw(), this._drawGroup(e) }, t._drawGroup = function (e) { if (!e._cfg.removed && !e._cfg.destroyed && e._cfg.visible) { var t = this, n = e._cfg.children, r = null; this.setContext(e); for (var i = 0; i < n.length; i++)r = n[i], n[i].isGroup ? t._drawGroup(r) : t._drawShape(r); this.restoreContext(e) } }, t._drawShape = function (e) { e._cfg.removed || e._cfg.destroyed || !e._cfg.visible || (this.setContext(e), e.drawInner(this.context), this.restoreContext(e), e._cfg.attrs = e._attrs, e._cfg.hasUpdate = !1) }, t.setContext = function (e) { var t = this.context, n = e._attrs.clip; t.save(), n && (n.resetTransform(t), n.createPath(t), t.clip()), this.resetContext(e), e.resetTransform(t) }, t.restoreContext = function () { this.context.restore() }, t.resetContext = function (e) { var t = this.context, n = e._attrs; if (!e.isGroup) for (var a in n) if (o.indexOf(a) > -1) { var s = n[a]; "fillStyle" === a && (s = i.parseStyle(s, e, t)), "strokeStyle" === a && (s = i.parseStyle(s, e, t)), "lineDash" === a && t.setLineDash ? r.isArray(s) ? t.setLineDash(s) : r.isString(s) && t.setLineDash(s.split(" ")) : t[a] = s } }, e }(); e.exports = a }, function (e, t, n) { var r = n(1), i = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi, o = /[^\s\,]+/gi, a = /^l\s*\(\s*([\d.]+)\s*\)\s*(.*)/i, s = /^r\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)\s*(.*)/i, c = /^p\s*\(\s*([axyn])\s*\)\s*(.*)/i, l = /[\d.]+:(#[^\s]+|[^\)]+\))/gi; function u(e, t) { var n = e.match(l); r.each(n, (function (e) { e = e.split(":"), t.addColorStop(e[0], e[1]) })) } function h(e, t, n) { var i, o, s = a.exec(e), c = r.mod(r.toRadian(parseFloat(s[1])), 2 * Math.PI), l = s[2], h = t.getBBox(); c >= 0 && c < .5 * Math.PI ? (i = { x: h.minX, y: h.minY }, o = { x: h.maxX, y: h.maxY }) : .5 * Math.PI <= c && c < Math.PI ? (i = { x: h.maxX, y: h.minY }, o = { x: h.minX, y: h.maxY }) : Math.PI <= c && c < 1.5 * Math.PI ? (i = { x: h.maxX, y: h.maxY }, o = { x: h.minX, y: h.minY }) : (i = { x: h.minX, y: h.maxY }, o = { x: h.maxX, y: h.minY }); var f = Math.tan(c), d = f * f, p = (o.x - i.x + f * (o.y - i.y)) / (d + 1) + i.x, v = f * (o.x - i.x + f * (o.y - i.y)) / (d + 1) + i.y, m = n.createLinearGradient(i.x, i.y, p, v); return u(l, m), m } function f(e, t, n) { var r = s.exec(e), i = parseFloat(r[1]), o = parseFloat(r[2]), a = parseFloat(r[3]), c = r[4]; if (0 === a) { var h = c.match(l); return h[h.length - 1].split(":")[1] } var f = t.getBBox(), d = f.maxX - f.minX, p = f.maxY - f.minY, v = Math.sqrt(d * d + p * p) / 2, m = n.createRadialGradient(f.minX + d * i, f.minY + p * o, a * v, f.minX + d / 2, f.minY + p / 2, v); return u(c, m), m } function d(e, t, n) { if (t.get("patternSource") && t.get("patternSource") === e) return t.get("pattern"); var r, i, o = c.exec(e), a = o[1], s = o[2]; function l() { r = n.createPattern(i, a), t.setSilent("pattern", r), t.setSilent("patternSource", e) } switch (a) { case "a": a = "repeat"; break; case "x": a = "repeat-x"; break; case "y": a = "repeat-y"; break; case "n": a = "no-repeat"; break; default: a = "no-repeat" }return i = new Image, s.match(/^data:/i) || (i.crossOrigin = "Anonymous"), i.src = s, i.complete ? l() : (i.onload = l, i.src = i.src), r } e.exports = { parsePath: function (e) { return e = e || [], r.isArray(e) ? e : r.isString(e) ? (e = e.match(i), r.each(e, (function (t, n) { if (t = t.match(o), t[0].length > 1) { var i = t[0].charAt(0); t.splice(1, 0, t[0].substr(1)), t[0] = i } r.each(t, (function (e, n) { isNaN(e) || (t[n] = +e) })), e[n] = t })), e) : void 0 }, parseStyle: function (e, t, n) { if (r.isString(e)) { if ("(" === e[1] || "(" === e[2]) { if ("l" === e[0]) return h(e, t, n); if ("r" === e[0]) return f(e, t, n); if ("p" === e[0]) return d(e, t, n) } return e } } } }, function (e, t, n) { e.exports = { painter: n(257), getShape: n(264) } }, function (e, t, n) { var r = n(1), i = n(31), o = i.parseRadius, a = n(81), s = n(258), c = { rect: "path", circle: "circle", line: "line", path: "path", marker: "path", text: "text", polygon: "polygon", image: "image", ellipse: "ellipse", dom: "foreignObject", fan: "path", group: "g" }, l = .3, u = { opacity: "opacity", fillStyle: "fill", strokeOpacity: "stroke-opacity", fillOpacity: "fill-opacity", strokeStyle: "stroke", x: "x", y: "y", r: "r", rx: "rx", ry: "ry", width: "width", height: "height", x1: "x1", x2: "x2", y1: "y1", y2: "y2", lineCap: "stroke-linecap", lineJoin: "stroke-linejoin", lineWidth: "stroke-width", lineDash: "stroke-dasharray", lineDashOffset: "stroke-dashoffset", miterLimit: "stroke-miterlimit", font: "font", fontSize: "font-size", fontStyle: "font-style", fontVariant: "font-variant", fontWeight: "font-weight", fontFamily: "font-family", startArrow: "marker-start", endArrow: "marker-end", path: "d", class: "class", id: "id", style: "style", preserveAspectRatio: "preserveAspectRatio" }, h = { top: "before-edge", middle: "central", bottom: "after-edge", alphabetic: "baseline", hanging: "hanging" }, f = { left: "left", start: "left", center: "middle", right: "end", end: "end" }, d = function () { function e(e) { if (!e) return null; var t = r.uniqueId("canvas_"), n = r.createDom('<svg id="' + t + '"></svg>'); return e.appendChild(n), this.type = "svg", this.canvas = n, this.context = new s(n), this.toDraw = !1, this } var t = e.prototype; return t.draw = function (e) { var t = this; function n() { t.animateHandler = r.requestAnimationFrame((function () { t.animateHandler = void 0, t.toDraw && n() })); try { t._drawChildren(e) } catch (i) { console.warn("error in draw canvas, detail as:"), console.warn(i) } finally { t.toDraw = !1 } } t.animateHandler ? t.toDraw = !0 : n() }, t.drawSync = function (e) { this._drawChildren(e) }, t._drawGroup = function (e, t) { var n = e._cfg; n.removed || n.destroyed || (n.tobeRemoved && (r.each(n.tobeRemoved, (function (e) { e.parentNode && e.parentNode.removeChild(e) })), n.tobeRemoved = []), this._drawShape(e, t), n.children && n.children.length > 0 && this._drawChildren(e)) }, t._drawChildren = function (e) { var t, n = this, r = e._cfg.children; if (r) for (var i = 0; i < r.length; i++)t = r[i], t.isGroup ? n._drawGroup(t, i) : n._drawShape(t, i) }, t._drawShape = function (e, t) { var n = this, r = e._attrs, i = e._cfg, o = i.el; i.removed || i.destroyed ? o && o.parentNode.removeChild(i.el) : (!o && i.parent && (n._createDom(e, t), n._updateShape(e)), o = i.el, !1 !== i.visible ? (i.visible && o.hasAttribute("visibility") && o.removeAttribute("visibility"), i.hasUpdate && n._updateShape(e), r.clip && r.clip._cfg.hasUpdate && n._updateShape(r.clip)) : o.setAttribute("visibility", "hidden")) }, t._updateShape = function (e) { var t = this, n = e._attrs, i = e._cfg.attrs; if (i) if (e._cfg.el || t._createDom(e), "clip" in n && this._setClip(e, n.clip), ("shadowOffsetX" in n || "shadowOffsetY" in n || "shadowBlur" in n || "shadowColor" in n) && this._setShadow(e), "text" !== e.type) { for (var o in "fan" === e.type && t._updateFan(e), "marker" === e.type && e._cfg.el.setAttribute("d", t._assembleMarker(n)), "rect" === e.type && e._cfg.el.setAttribute("d", t._assembleRect(n)), n) n[o] !== i[o] && t._setAttribute(e, o, n[o]); e._cfg.attrs = r.deepMix({}, e._attrs), e._cfg.hasUpdate = !1 } else t._updateText(e) }, t._setAttribute = function (e, t, n) { var i = e.type, o = e._attrs, a = e._cfg.el, s = this.context; if ("marker" !== i && "rect" !== i || !~["x", "y", "radius", "r"].indexOf(t)) if (~["circle", "ellipse"].indexOf(i) && ~["x", "y"].indexOf(t)) a.setAttribute("c" + t, parseInt(n, 10)); else { if ("polygon" === i && "points" === t) return n && 0 !== n.length || (n = ""), r.isArray(n) && (n = n.map((function (e) { return e[0] + "," + e[1] })), n = n.join(" ")), void a.setAttribute("points", n); if ("path" === t && r.isArray(n)) a.setAttribute("d", this._formatPath(n)); else if ("img" !== t) { if ("transform" === t) return n ? void this._setTransform(e) : void a.removeAttribute("transform"); if ("rotate" === t) return n ? void this._setTransform(e) : void a.removeAttribute("transform"); if ("matrix" !== t) if ("fillStyle" !== t && "strokeStyle" !== t) { if ("clip" !== t) if (~t.indexOf("Arrow")) if (t = u[t], n) { var c = null; c = "boolean" === typeof n ? s.getDefaultArrow(o, t) : s.addArrow(o, t), a.setAttribute(t, "url(#" + c + ")"), e._cfg[t] = c } else e._cfg[t] = null, a.removeAttribute(t); else "html" === t && ("string" === typeof n ? a.innerHTML = n : (a.innerHTML = "", a.appendChild(n))), u[t] && a.setAttribute(u[t], n) } else this._setColor(e, t, n); else this._setTransform(e) } else this._setImage(e, n) } }, t._createDom = function (e, t) { var n = c[e.type], r = e._attrs, i = e._cfg.parent; if (!n) throw new Error("the type" + e.type + "is not supported by svg"); var o = document.createElementNS("http://www.w3.org/2000/svg", n); if (e._cfg.id && (o.id = e._cfg.id), e._cfg.el = o, i) { var a = i._cfg.el; if ("undefined" === typeof t) a.appendChild(o); else { var s = i._cfg.el.childNodes; "svg" === a.tagName && (t += 1), s.length <= t ? a.appendChild(o) : a.insertBefore(o, s[t]) } } return e._cfg.attrs = {}, "text" === e.type ? (o.setAttribute("paint-order", "stroke"), o.setAttribute("style", "stroke-linecap:butt; stroke-linejoin:miter;")) : (r.stroke || r.strokeStyle || o.setAttribute("stroke", "none"), r.fill || r.fillStyle || o.setAttribute("fill", "none")), o }, t._assembleMarker = function (e) { var t = e.r; if ("undefined" === typeof e.r && (t = e.radius), isNaN(Number(e.x)) || isNaN(Number(e.y)) || isNaN(Number(t))) return ""; var n = ""; return n = "function" === typeof e.symbol ? e.symbol(e.x, e.y, t) : a.Symbols[e.symbol || "circle"](e.x, e.y, t), r.isArray(n) && (n = n.map((function (e) { return e.join(" ") })).join("")), n }, t._assembleRect = function (e) { var t = e.x, n = e.y, i = e.width, a = e.height, s = e.radius; if (!s) return "M " + t + "," + n + " l " + i + ",0 l 0," + a + " l" + -i + " 0 z"; var c = o(s); r.isArray(s) ? 1 === s.length ? c.r1 = c.r2 = c.r3 = c.r4 = s[0] : 2 === s.length ? (c.r1 = c.r3 = s[0], c.r2 = c.r4 = s[1]) : 3 === s.length ? (c.r1 = s[0], c.r2 = c.r4 = s[1], c.r3 = s[2]) : (c.r1 = s[0], c.r2 = s[1], c.r3 = s[2], c.r4 = s[3]) : c.r1 = c.r2 = c.r3 = c.r4 = s; var l = [["M " + (t + c.r1) + "," + n], ["l " + (i - c.r1 - c.r2) + ",0"], ["a " + c.r2 + "," + c.r2 + ",0,0,1," + c.r2 + "," + c.r2], ["l 0," + (a - c.r2 - c.r3)], ["a " + c.r3 + "," + c.r3 + ",0,0,1," + -c.r3 + "," + c.r3], ["l " + (c.r3 + c.r4 - i) + ",0"], ["a " + c.r4 + "," + c.r4 + ",0,0,1," + -c.r4 + "," + -c.r4], ["l 0," + (c.r4 + c.r1 - a)], ["a " + c.r1 + "," + c.r1 + ",0,0,1," + c.r1 + "," + -c.r1], ["z"]]; return l.join(" ") }, t._formatPath = function (e) { return e = e.map((function (e) { return e.join(" ") })).join(""), ~e.indexOf("NaN") ? "" : e }, t._setTransform = function (e) { for (var t = e._attrs.matrix, n = e._cfg.el, r = [], i = 0; i < 9; i += 3)r.push(t[i] + "," + t[i + 1]); r = r.join(","), -1 === r.indexOf("NaN") ? n.setAttribute("transform", "matrix(" + r + ")") : console.warn("invalid matrix:", t) }, t._setImage = function (e, t) { var n = e._attrs, i = e._cfg.el; if (r.isString(t)) i.setAttribute("href", t); else if (t instanceof Image) n.width || (i.setAttribute("width", t.width), e._attrs.width = t.width), n.height || (i.setAttribute("height", t.height), e._attrs.height = t.height), i.setAttribute("href", t.src); else if (t instanceof HTMLElement && r.isString(t.nodeName) && "CANVAS" === t.nodeName.toUpperCase()) i.setAttribute("href", t.toDataURL()); else if (t instanceof ImageData) { var o = document.createElement("canvas"); o.setAttribute("width", t.width), o.setAttribute("height", t.height), o.getContext("2d").putImageData(t, 0, 0), n.width || (i.setAttribute("width", t.width), e._attrs.width = t.width), n.height || (i.setAttribute("height", t.height), e._attrs.height = t.height), i.setAttribute("href", o.toDataURL()) } }, t._updateFan = function (e) { function t(e, t, n) { return { x: t * Math.cos(e) + n.x, y: t * Math.sin(e) + n.y } } var n = e._attrs, i = e._cfg, o = { x: n.x, y: n.y }, a = [], s = n.startAngle, c = n.endAngle; r.isNumberEqual(c - s, 2 * Math.PI) && (c -= 1e-5); var l = t(s, n.re, o), u = t(c, n.re, o), h = c > s ? 1 : 0, f = Math.abs(c - s) > Math.PI ? 1 : 0, d = n.rs, p = n.re, v = t(s, n.rs, o), m = t(c, n.rs, o); n.rs > 0 ? (a.push("M " + u.x + "," + u.y), a.push("L " + m.x + "," + m.y), a.push("A " + d + "," + d + ",0," + f + "," + (1 === h ? 0 : 1) + "," + v.x + "," + v.y), a.push("L " + l.x + " " + l.y)) : (a.push("M " + o.x + "," + o.y), a.push("L " + l.x + "," + l.y)), a.push("A " + p + "," + p + ",0," + f + "," + h + "," + u.x + "," + u.y), n.rs > 0 ? a.push("L " + m.x + "," + m.y) : a.push("Z"), i.el.setAttribute("d", a.join(" ")) }, t._updateText = function (e) { var t = this, n = e._attrs, r = e._cfg.attrs, i = e._cfg.el; for (var o in this._setFont(e), n) if (n[o] !== r[o]) { if ("text" === o) { t._setText(e, "" + n[o]); continue } if ("fillStyle" === o || "strokeStyle" === o) { this._setColor(e, o, n[o]); continue } if ("matrix" === o) { this._setTransform(e); continue } u[o] && i.setAttribute(u[o], n[o]) } e._cfg.attrs = Object.assign({}, e._attrs), e._cfg.hasUpdate = !1 }, t._setFont = function (e) { var t = e.get("el"), n = e._attrs, r = n.fontSize; t.setAttribute("alignment-baseline", h[n.textBaseline] || "baseline"), t.setAttribute("text-anchor", f[n.textAlign] || "left"), r && +r < 12 && (n.matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1], e.transform([["t", -n.x, -n.y], ["s", +r / 12, +r / 12], ["t", n.x, n.y]])) }, t._setText = function (e, t) { var n = e._cfg.el, i = e._attrs.textBaseline || "bottom"; if (t) if (~t.indexOf("\n")) { var o = e._attrs.x, a = t.split("\n"), s = a.length - 1, c = ""; r.each(a, (function (e, t) { 0 === t ? "alphabetic" === i ? c += '<tspan x="' + o + '" dy="' + -s + 'em">' + e + "</tspan>" : "top" === i ? c += '<tspan x="' + o + '" dy="0.9em">' + e + "</tspan>" : "middle" === i ? c += '<tspan x="' + o + '" dy="' + -(s - 1) / 2 + 'em">' + e + "</tspan>" : "bottom" === i ? c += '<tspan x="' + o + '" dy="-' + (s + l) + 'em">' + e + "</tspan>" : "hanging" === i && (c += '<tspan x="' + o + '" dy="' + (-(s - 1) - l) + 'em">' + e + "</tspan>") : c += '<tspan x="' + o + '" dy="1em">' + e + "</tspan>" })), n.innerHTML = c } else n.innerHTML = t; else n.innerHTML = "" }, t._setClip = function (e, t) { var n = e._cfg.el; if (t) if (n.hasAttribute("clip-path")) t._cfg.hasUpdate && this._updateShape(t); else { this._createDom(t), this._updateShape(t); var r = this.context.addClip(t); n.setAttribute("clip-path", "url(#" + r + ")") } else n.removeAttribute("clip-path") }, t._setColor = function (e, t, n) { var r = e._cfg.el, i = this.context; if (n) if (n = n.trim(), /^[r,R,L,l]{1}[\s]*\(/.test(n)) { var o = i.find("gradient", n); o || (o = i.addGradient(n)), r.setAttribute(u[t], "url(#" + o + ")") } else if (/^[p,P]{1}[\s]*\(/.test(n)) { var a = i.find("pattern", n); a || (a = i.addPattern(n)), r.setAttribute(u[t], "url(#" + a + ")") } else r.setAttribute(u[t], n); else r.setAttribute(u[t], "none") }, t._setShadow = function (e) { var t = e._cfg.el, n = e._attrs, r = { dx: n.shadowOffsetX, dy: n.shadowOffsetY, blur: n.shadowBlur, color: n.shadowColor }; if (r.dx || r.dy || r.blur || r.color) { var i = this.context.find("filter", r); i || (i = this.context.addShadow(r, this)), t.setAttribute("filter", "url(#" + i + ")") } else t.removeAttribute("filter") }, e }(); e.exports = d }, function (e, t, n) { var r = n(1), i = n(259), o = n(260), a = n(261), s = n(262), c = n(263), l = function () { function e(e) { var t = document.createElementNS("http://www.w3.org/2000/svg", "defs"), n = r.uniqueId("defs_"); t.id = n, e.appendChild(t), this.children = [], this.defaultArrow = {}, this.el = t, this.canvas = e } var t = e.prototype; return t.find = function (e, t) { for (var n = this.children, r = null, i = 0; i < n.length; i++)if (n[i].match(e, t)) { r = n[i].id; break } return r }, t.findById = function (e) { for (var t = this.children, n = null, r = 0; r < t.length; r++)if (t[r].id === e) { n = t[r]; break } return n }, t.add = function (e) { this.children.push(e), e.canvas = this.canvas, e.parent = this }, t.getDefaultArrow = function (e, t) { var n = e.stroke || e.strokeStyle; if (this.defaultArrow[n]) return this.defaultArrow[n].id; var r = new a(e, t); return this.defaultArrow[n] = r, this.el.appendChild(r.el), r.id }, t.addGradient = function (e) { var t = new i(e); return this.el.appendChild(t.el), this.add(t), t.id }, t.addArrow = function (e, t) { var n = new a(e, t); return this.el.appendChild(n.el), n.id }, t.addShadow = function (e) { var t = new o(e); return this.el.appendChild(t.el), this.add(t), t.id }, t.addPattern = function (e) { var t = new c(e); return this.el.appendChild(t.el), this.add(t), t.id }, t.addClip = function (e) { var t = new s(e); return this.el.appendChild(t.el), this.add(t), t.id }, e }(); e.exports = l }, function (e, t, n) { var r = n(1), i = /^l\s*\(\s*([\d.]+)\s*\)\s*(.*)/i, o = /^r\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)\s*(.*)/i, a = /[\d.]+:(#[^\s]+|[^\)]+\))/gi; function s(e) { var t = e.match(a); if (!t) return ""; var n = ""; return t.sort((function (e, t) { return e = e.split(":"), t = t.split(":"), Number(e[0]) - Number(t[0]) })), r.each(t, (function (e) { e = e.split(":"), n += '<stop offset="' + e[0] + '" stop-color="' + e[1] + '"></stop>' })), n } function c(e, t) { var n, o, a = i.exec(e), c = r.mod(r.toRadian(parseFloat(a[1])), 2 * Math.PI), l = a[2]; c >= 0 && c < .5 * Math.PI ? (n = { x: 0, y: 0 }, o = { x: 1, y: 1 }) : .5 * Math.PI <= c && c < Math.PI ? (n = { x: 1, y: 0 }, o = { x: 0, y: 1 }) : Math.PI <= c && c < 1.5 * Math.PI ? (n = { x: 1, y: 1 }, o = { x: 0, y: 0 }) : (n = { x: 0, y: 1 }, o = { x: 1, y: 0 }); var u = Math.tan(c), h = u * u, f = (o.x - n.x + u * (o.y - n.y)) / (h + 1) + n.x, d = u * (o.x - n.x + u * (o.y - n.y)) / (h + 1) + n.y; t.setAttribute("x1", n.x), t.setAttribute("y1", n.y), t.setAttribute("x2", f), t.setAttribute("y2", d), t.innerHTML = s(l) } function l(e, t) { var n = o.exec(e), r = parseFloat(n[1]), i = parseFloat(n[2]), a = parseFloat(n[3]), c = n[4]; t.setAttribute("cx", r), t.setAttribute("cy", i), t.setAttribute("r", a), t.innerHTML = s(c) } var u = function () { function e(e) { var t = null, n = r.uniqueId("gradient_"); return "l" === e.toLowerCase()[0] ? (t = document.createElementNS("http://www.w3.org/2000/svg", "linearGradient"), c(e, t)) : (t = document.createElementNS("http://www.w3.org/2000/svg", "radialGradient"), l(e, t)), t.setAttribute("id", n), this.el = t, this.id = n, this.cfg = e, this } var t = e.prototype; return t.match = function (e, t) { return this.cfg === t }, e }(); e.exports = u }, function (e, t, n) { var r = n(1), i = { shadowColor: "color", shadowOpacity: "opacity", shadowBlur: "blur", shadowOffsetX: "dx", shadowOffsetY: "dy" }, o = { x: "-40%", y: "-40%", width: "200%", height: "200%" }, a = function () { function e(e) { this.type = "filter"; var t = document.createElementNS("http://www.w3.org/2000/svg", "filter"); return r.each(o, (function (e, n) { t.setAttribute(n, e) })), this.el = t, this.id = r.uniqueId("filter_"), this.el.id = this.id, this.cfg = e, this._parseShadow(e, t), this } var t = e.prototype; return t.match = function (e, t) { if (this.type !== e) return !1; var n = !0, i = this.cfg; return r.each(Object.keys(i), (function (e) { if (i[e] !== t[e]) return n = !1, !1 })), n }, t.update = function (e, t) { var n = this.cfg; return n[i[e]] = t, this._parseShadow(n, this.el), this }, t._parseShadow = function (e, t) { var n = '<feDropShadow \n      dx="' + (e.dx || 0) + '" \n      dy="' + (e.dy || 0) + '" \n      stdDeviation="' + (e.blur ? e.blur / 10 : 0) + '"\n      flood-color="' + (e.color ? e.color : "#000") + '"\n      flood-opacity="' + (e.opacity ? e.opacity : 1) + '"\n      />'; t.innerHTML = n }, e }(); e.exports = a }, function (e, t, n) { var r = n(1), i = function () { function e(e, t) { var n = document.createElementNS("http://www.w3.org/2000/svg", "marker"), i = r.uniqueId("marker_"); n.setAttribute("id", i); var o = document.createElementNS("http://www.w3.org/2000/svg", "path"); return o.setAttribute("stroke", "none"), o.setAttribute("fill", e.stroke || "#000"), n.appendChild(o), n.setAttribute("overflow", "visible"), n.setAttribute("orient", "auto-start-reverse"), this.el = n, this.child = o, this.id = i, this.cfg = e["marker-start" === t ? "startArrow" : "endArrow"], this.stroke = e.stroke || "#000", !0 === this.cfg ? this._setDefaultPath(t, o) : this._setMarker(e.lineWidth, o), this } var t = e.prototype; return t.match = function () { return !1 }, t._setDefaultPath = function (e, t) { var n = this.el; t.setAttribute("d", "M0,0 L6,3 L0,6 L3,3Z"), n.setAttribute("refX", 3), n.setAttribute("refY", 3) }, t._setMarker = function (e, t) { var n = this.el, i = this.cfg.path, o = this.cfg.d; r.isArray(i) && (i = i.map((function (e) { return e.join(" ") })).join("")), t.setAttribute("d", i), n.appendChild(t), o && n.setAttribute("refX", o / e) }, t.update = function (e) { var t = this.child; t.attr ? t.attr("fill", e) : t.setAttribute("fill", e) }, e }(); e.exports = i }, function (e, t, n) { var r = n(1), i = function () { function e(e) { this.type = "clip"; var t = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); this.el = t, this.id = r.uniqueId("clip_"), t.id = this.id; var n = e._cfg.el; return t.appendChild(n.cloneNode(!0)), this.cfg = e, this } var t = e.prototype; return t.match = function () { return !1 }, t.remove = function () { var e = this.el; e.parentNode.removeChild(e) }, e }(); e.exports = i }, function (e, t, n) { var r = n(1), i = /^p\s*\(\s*([axyn])\s*\)\s*(.*)/i, o = function () { function e(e) { var t = document.createElementNS("http://www.w3.org/2000/svg", "pattern"); t.setAttribute("patternUnits", "userSpaceOnUse"); var n = document.createElementNS("http://www.w3.org/2000/svg", "image"); t.appendChild(n); var o = r.uniqueId("pattern_"); t.id = o, this.el = t, this.id = o, this.cfg = e; var a = i.exec(e), s = a[2]; n.setAttribute("href", s); var c = new Image; function l() { t.setAttribute("width", c.width), t.setAttribute("height", c.height) } return s.match(/^data:/i) || (c.crossOrigin = "Anonymous"), c.src = s, c.complete ? l() : (c.onload = l, c.src = c.src), this } var t = e.prototype; return t.match = function (e, t) { return this.cfg === t }, e }(); e.exports = o }, function (e, t) { var n = { svg: "svg", circle: "circle", rect: "rect", text: "text", path: "path", foreignObject: "foreignObject", polygon: "polygon", ellipse: "ellipse", image: "image" }; e.exports = function (e, t, r) { var i = r.target || r.srcElement; if (!n[i.tagName]) { var o = i.parentNode; while (o && !n[o.tagName]) o = o.parentNode; i = o } return this._cfg.el === i ? this : this.find((function (e) { return e._cfg && e._cfg.el === i })) } }, function (e, t, n) { e.exports = { addEventListener: n(266), createDom: n(71), getBoundingClientRect: n(267), getHeight: n(268), getOuterHeight: n(269), getOuterWidth: n(270), getRatio: n(271), getStyle: n(272), getWidth: n(273), modifyCSS: n(72), requestAnimationFrame: n(73) } }, function (e, t) { e.exports = function (e, t, n) { if (e) { if (e.addEventListener) return e.addEventListener(t, n, !1), { remove: function () { e.removeEventListener(t, n, !1) } }; if (e.attachEvent) return e.attachEvent("on" + t, n), { remove: function () { e.detachEvent("on" + t, n) } } } } }, function (e, t) { e.exports = function (e, t) { if (e && e.getBoundingClientRect) { var n = e.getBoundingClientRect(), r = document.documentElement.clientTop, i = document.documentElement.clientLeft; return { top: n.top - r, bottom: n.bottom - r, left: n.left - i, right: n.right - i } } return t || null } }, function (e, t) { e.exports = function (e, t) { var n = this.getStyle(e, "height", t); return "auto" === n && (n = e.offsetHeight), parseFloat(n) } }, function (e, t) { e.exports = function (e, t) { var n = this.getHeight(e, t), r = parseFloat(this.getStyle(e, "borderTopWidth")) || 0, i = parseFloat(this.getStyle(e, "paddingTop")) || 0, o = parseFloat(this.getStyle(e, "paddingBottom")) || 0, a = parseFloat(this.getStyle(e, "borderBottomWidth")) || 0; return n + r + a + i + o } }, function (e, t) { e.exports = function (e, t) { var n = this.getWidth(e, t), r = parseFloat(this.getStyle(e, "borderLeftWidth")) || 0, i = parseFloat(this.getStyle(e, "paddingLeft")) || 0, o = parseFloat(this.getStyle(e, "paddingRight")) || 0, a = parseFloat(this.getStyle(e, "borderRightWidth")) || 0; return n + r + a + i + o } }, function (e, t) { e.exports = function () { return window.devicePixelRatio ? window.devicePixelRatio : 2 } }, function (e, t, n) { var r = n(6); e.exports = function (e, t, n) { try { return window.getComputedStyle ? window.getComputedStyle(e, null)[t] : e.currentStyle[t] } catch (i) { return r(n) ? null : n } } }, function (e, t) { e.exports = function (e, t) { var n = this.getStyle(e, "width", t); return "auto" === n && (n = e.offsetWidth), parseFloat(n) } }, function (e, t, n) { e.exports = { contains: n(48), difference: n(275), find: n(276), firstValue: n(277), flatten: n(278), flattenDeep: n(279), getRange: n(280), merge: n(49), pull: n(67), pullAt: n(145), reduce: n(281), remove: n(282), sortBy: n(283), union: n(284), uniq: n(146), valuesOfKey: n(89) } }, function (e, t, n) { var r = n(88), i = n(48), o = function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : []; return r(e, (function (e) { return !i(t, e) })) }; e.exports = o }, function (e, t, n) { var r = n(13), i = n(28), o = n(143); function a(e, t) { var n = void 0; if (r(t) && (n = t), i(t) && (n = function (e) { return o(e, t) }), n) for (var a = 0; a < e.length; a += 1)if (n(e[a])) return e[a]; return null } e.exports = a }, function (e, t, n) { var r = n(6), i = n(5), o = function (e, t) { for (var n = null, o = 0; o < e.length; o++) { var a = e[o], s = a[t]; if (!r(s)) { n = i(s) ? s[0] : s; break } } return n }; e.exports = o }, function (e, t, n) { var r = n(5), i = n(3), o = function (e) { if (!r(e)) return e; var t = []; return i(e, (function (e) { r(e) ? i(e, (function (e) { t.push(e) })) : t.push(e) })), t }; e.exports = o }, function (e, t, n) { var r = n(5), i = function e(t) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : []; if (r(t)) for (var i = 0; i < t.length; i += 1)e(t[i], n); else n.push(t); return n }; e.exports = i }, function (e, t, n) { var r = n(88), i = n(5), o = function (e) { if (e = r(e, (function (e) { return !isNaN(e) })), !e.length) return { min: 0, max: 0 }; if (i(e[0])) { for (var t = [], n = 0; n < e.length; n++)t = t.concat(e[n]); e = t } var o = Math.max.apply(null, e), a = Math.min.apply(null, e); return { min: a, max: o } }; e.exports = o }, function (e, t, n) { var r = n(5), i = n(28), o = n(3), a = function (e, t, n) { if (!r(e) && !i(e)) return e; var a = n; return o(e, (function (e, n) { a = t(a, e, n) })), a }; e.exports = a }, function (e, t, n) { var r = n(15), i = n(145), o = function (e, t) { var n = []; if (!r(e)) return n; var o = -1, a = [], s = e.length; while (++o < s) { var c = e[o]; t(c, o, e) && (n.push(c), a.push(o)) } return i(e, a), n }; e.exports = o }, function (e, t, n) { var r = n(12), i = n(13), o = n(5); function a(e, t) { var n = void 0; if (i(t)) n = function (e, n) { return t(e) - t(n) }; else { var a = []; r(t) ? a.push(t) : o(t) && (a = t), n = function (e, t) { for (var n = 0; n < a.length; n += 1) { var r = a[n]; if (e[r] > t[r]) return 1; if (e[r] < t[r]) return -1 } return 0 } } return e.sort(n), e } e.exports = a }, function (e, t, n) { var r = n(3), i = n(29), o = n(146), a = function () { var e = [], t = i(arguments); return r(t, (function (t) { e = e.concat(t) })), o(e) }; e.exports = a }, function (e, t, n) { e.exports = { getWrapBehavior: n(286), wrapBehavior: n(287) } }, function (e, t) { function n(e, t) { return e["_wrap_" + t] } e.exports = n }, function (e, t) { function n(e, t) { if (e["_wrap_" + t]) return e["_wrap_" + t]; var n = function (n) { e[t](n) }; return e["_wrap_" + t] = n, n } e.exports = n }, function (e, t, n) { var r = n(289); e.exports = { number2color: r, numberToColor: r, parsePath: n(290), parseRadius: n(291) } }, function (e, t) { var n = {}; e.exports = function (e) { var t = n[e]; if (!t) { for (var r = e.toString(16), i = r.length; i < 6; i++)r = "0" + r; t = "#" + r, n[e] = t } return t } }, function (e, t, n) { var r = n(5), i = n(12), o = n(3), a = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi, s = /[^\s\,]+/gi; e.exports = function (e) { return e = e || [], r(e) ? e : i(e) ? (e = e.match(a), o(e, (function (t, n) { if (t = t.match(s), t[0].length > 1) { var r = t[0].charAt(0); t.splice(1, 0, t[0].substr(1)), t[0] = r } o(t, (function (e, n) { isNaN(e) || (t[n] = +e) })), e[n] = t })), e) : void 0 } }, function (e, t, n) { var r = n(5); e.exports = function (e) { var t = 0, n = 0, i = 0, o = 0; return r(e) ? 1 === e.length ? t = n = i = o = e[0] : 2 === e.length ? (t = i = e[0], n = o = e[1]) : 3 === e.length ? (t = e[0], n = o = e[1], i = e[2]) : (t = e[0], n = e[1], i = e[2], o = e[3]) : t = n = i = o = e, { r1: t, r2: n, r3: i, r4: o } } }, function (e, t, n) { var r = n(30); e.exports = { clamp: n(41), fixedBase: n(293), isDecimal: n(294), isEven: n(295), isInteger: n(296), isNegative: n(297), isNumberEqual: r, isOdd: n(298), isPositive: n(299), maxBy: n(147), minBy: n(300), mod: n(70), snapEqual: r, toDegree: n(69), toInt: n(148), toInteger: n(148), toRadian: n(68) } }, function (e, t) { var n = function (e, t) { var n = t.toString(), r = n.indexOf("."); if (-1 === r) return Math.round(e); var i = n.substr(r + 1).length; return i > 20 && (i = 20), parseFloat(e.toFixed(i)) }; e.exports = n }, function (e, t, n) { var r = n(11), i = function (e) { return r(e) && e % 1 !== 0 }; e.exports = i }, function (e, t, n) { var r = n(11), i = function (e) { return r(e) && e % 2 === 0 }; e.exports = i }, function (e, t, n) { var r = n(11), i = Number.isInteger ? Number.isInteger : function (e) { return r(e) && e % 1 === 0 }; e.exports = i }, function (e, t, n) { var r = n(11), i = function (e) { return r(e) && e < 0 }; e.exports = i }, function (e, t, n) { var r = n(11), i = function (e) { return r(e) && e % 2 !== 0 }; e.exports = i }, function (e, t, n) { var r = n(11), i = function (e) { return r(e) && e > 0 }; e.exports = i }, function (e, t, n) { var r = n(5), i = n(13), o = n(3), a = function (e, t) { if (r(e)) { var n = e[0], a = void 0; a = i(t) ? t(e[0]) : e[0][t]; var s = void 0; return o(e, (function (e) { s = i(t) ? t(e) : e[t], s < a && (n = e, a = s) })), n } }; e.exports = a }, function (e, t, n) { e.exports = { forIn: n(302), has: n(149), hasKey: n(303), hasValue: n(304), keys: n(144), isMatch: n(143), values: n(150) } }, function (e, t, n) { e.exports = n(3) }, function (e, t, n) { e.exports = n(149) }, function (e, t, n) { var r = n(48), i = n(150); e.exports = function (e, t) { return r(i(e), t) } }, function (e, t, n) { var r = n(306), i = n(154), o = n(153), a = n(156); e.exports = { catmullRom2Bezier: a, catmullRomToBezier: a, fillPath: n(307), fillPathByDiff: n(308), formatPath: n(310), intersection: r, pathIntersection: r, parsePathArray: n(152), parsePathString: n(155), pathToAbsolute: i, path2absolute: i, pathTocurve: o, path2curve: o, rectPath: n(151) } }, function (e, t, n) { var r = n(5), i = n(151), o = n(153), a = function (e, t, n, r, i) { var o = -3 * t + 9 * n - 9 * r + 3 * i, a = e * o + 6 * t - 12 * n + 6 * r; return e * a - 3 * t + 3 * n }, s = function (e, t, n, r, i, o, s, c, l) { null === l && (l = 1), l = l > 1 ? 1 : l < 0 ? 0 : l; for (var u = l / 2, h = 12, f = [-.1252, .1252, -.3678, .3678, -.5873, .5873, -.7699, .7699, -.9041, .9041, -.9816, .9816], d = [.2491, .2491, .2335, .2335, .2032, .2032, .1601, .1601, .1069, .1069, .0472, .0472], p = 0, v = 0; v < h; v++) { var m = u * f[v] + u, g = a(m, e, n, i, s), y = a(m, t, r, o, c), b = g * g + y * y; p += d[v] * Math.sqrt(b) } return u * p }, c = function (e, t, n, r, i, o, a, s) { for (var c = [], l = [[], []], u = void 0, h = void 0, f = void 0, d = void 0, p = 0; p < 2; ++p)if (0 === p ? (h = 6 * e - 12 * n + 6 * i, u = -3 * e + 9 * n - 9 * i + 3 * a, f = 3 * n - 3 * e) : (h = 6 * t - 12 * r + 6 * o, u = -3 * t + 9 * r - 9 * o + 3 * s, f = 3 * r - 3 * t), Math.abs(u) < 1e-12) { if (Math.abs(h) < 1e-12) continue; d = -f / h, d > 0 && d < 1 && c.push(d) } else { var v = h * h - 4 * f * u, m = Math.sqrt(v); if (!(v < 0)) { var g = (-h + m) / (2 * u); g > 0 && g < 1 && c.push(g); var y = (-h - m) / (2 * u); y > 0 && y < 1 && c.push(y) } } var b = c.length, x = b, w = void 0; while (b--) d = c[b], w = 1 - d, l[0][b] = w * w * w * e + 3 * w * w * d * n + 3 * w * d * d * i + d * d * d * a, l[1][b] = w * w * w * t + 3 * w * w * d * r + 3 * w * d * d * o + d * d * d * s; return l[0][x] = e, l[1][x] = t, l[0][x + 1] = a, l[1][x + 1] = s, l[0].length = l[1].length = x + 2, { min: { x: Math.min.apply(0, l[0]), y: Math.min.apply(0, l[1]) }, max: { x: Math.max.apply(0, l[0]), y: Math.max.apply(0, l[1]) } } }, l = function (e, t, n, r, i, o, a, s) { if (!(Math.max(e, n) < Math.min(i, a) || Math.min(e, n) > Math.max(i, a) || Math.max(t, r) < Math.min(o, s) || Math.min(t, r) > Math.max(o, s))) { var c = (e * r - t * n) * (i - a) - (e - n) * (i * s - o * a), l = (e * r - t * n) * (o - s) - (t - r) * (i * s - o * a), u = (e - n) * (o - s) - (t - r) * (i - a); if (u) { var h = c / u, f = l / u, d = +h.toFixed(2), p = +f.toFixed(2); if (!(d < +Math.min(e, n).toFixed(2) || d > +Math.max(e, n).toFixed(2) || d < +Math.min(i, a).toFixed(2) || d > +Math.max(i, a).toFixed(2) || p < +Math.min(t, r).toFixed(2) || p > +Math.max(t, r).toFixed(2) || p < +Math.min(o, s).toFixed(2) || p > +Math.max(o, s).toFixed(2))) return { x: h, y: f } } } }, u = function (e, t, n) { return t >= e.x && t <= e.x + e.width && n >= e.y && n <= e.y + e.height }, h = function (e, t, n, r) { return null === e && (e = t = n = r = 0), null === t && (t = e.y, n = e.width, r = e.height, e = e.x), { x: e, y: t, width: n, w: n, height: r, h: r, x2: e + n, y2: t + r, cx: e + n / 2, cy: t + r / 2, r1: Math.min(n, r) / 2, r2: Math.max(n, r) / 2, r0: Math.sqrt(n * n + r * r) / 2, path: i(e, t, n, r), vb: [e, t, n, r].join(" ") } }, f = function (e, t) { return e = h(e), t = h(t), u(t, e.x, e.y) || u(t, e.x2, e.y) || u(t, e.x, e.y2) || u(t, e.x2, e.y2) || u(e, t.x, t.y) || u(e, t.x2, t.y) || u(e, t.x, t.y2) || u(e, t.x2, t.y2) || (e.x < t.x2 && e.x > t.x || t.x < e.x2 && t.x > e.x) && (e.y < t.y2 && e.y > t.y || t.y < e.y2 && t.y > e.y) }, d = function (e, t, n, i, o, a, s, l) { r(e) || (e = [e, t, n, i, o, a, s, l]); var u = c.apply(null, e); return h(u.min.x, u.min.y, u.max.x - u.min.x, u.max.y - u.min.y) }, p = function (e, t, n, r, i, o, a, s, c) { var l = 1 - c, u = Math.pow(l, 3), h = Math.pow(l, 2), f = c * c, d = f * c, p = u * e + 3 * h * c * n + 3 * l * c * c * i + d * a, v = u * t + 3 * h * c * r + 3 * l * c * c * o + d * s, m = e + 2 * c * (n - e) + f * (i - 2 * n + e), g = t + 2 * c * (r - t) + f * (o - 2 * r + t), y = n + 2 * c * (i - n) + f * (a - 2 * i + n), b = r + 2 * c * (o - r) + f * (s - 2 * o + r), x = l * e + c * n, w = l * t + c * r, _ = l * i + c * a, C = l * o + c * s, M = 90 - 180 * Math.atan2(m - y, g - b) / Math.PI; return { x: p, y: v, m: { x: m, y: g }, n: { x: y, y: b }, start: { x: x, y: w }, end: { x: _, y: C }, alpha: M } }, v = function (e, t, n) { var r = d(e), i = d(t); if (!f(r, i)) return n ? 0 : []; for (var o = s.apply(0, e), a = s.apply(0, t), c = ~~(o / 8), u = ~~(a / 8), h = [], v = [], m = {}, g = n ? 0 : [], y = 0; y < c + 1; y++) { var b = p.apply(0, e.concat(y / c)); h.push({ x: b.x, y: b.y, t: y / c }) } for (var x = 0; x < u + 1; x++) { var w = p.apply(0, t.concat(x / u)); v.push({ x: w.x, y: w.y, t: x / u }) } for (var _ = 0; _ < c; _++)for (var C = 0; C < u; C++) { var M = h[_], O = h[_ + 1], k = v[C], S = v[C + 1], T = Math.abs(O.x - M.x) < .001 ? "y" : "x", A = Math.abs(S.x - k.x) < .001 ? "y" : "x", L = l(M.x, M.y, O.x, O.y, k.x, k.y, S.x, S.y); if (L) { if (m[L.x.toFixed(4)] === L.y.toFixed(4)) continue; m[L.x.toFixed(4)] = L.y.toFixed(4); var j = M.t + Math.abs((L[T] - M[T]) / (O[T] - M[T])) * (O.t - M.t), z = k.t + Math.abs((L[A] - k[A]) / (S[A] - k[A])) * (S.t - k.t); j >= 0 && j <= 1 && z >= 0 && z <= 1 && (n ? g++ : g.push({ x: L.x, y: L.y, t1: j, t2: z })) } } return g }, m = function (e, t, n) { e = o(e), t = o(t); for (var r = void 0, i = void 0, a = void 0, s = void 0, c = void 0, l = void 0, u = void 0, h = void 0, f = void 0, d = void 0, p = n ? 0 : [], m = 0, g = e.length; m < g; m++) { var y = e[m]; if ("M" === y[0]) r = c = y[1], i = l = y[2]; else { "C" === y[0] ? (f = [r, i].concat(y.slice(1)), r = f[6], i = f[7]) : (f = [r, i, r, i, c, l, c, l], r = c, i = l); for (var b = 0, x = t.length; b < x; b++) { var w = t[b]; if ("M" === w[0]) a = u = w[1], s = h = w[2]; else { "C" === w[0] ? (d = [a, s].concat(w.slice(1)), a = d[6], s = d[7]) : (d = [a, s, a, s, u, h, u, h], a = u, s = h); var _ = v(f, d, n); if (n) p += _; else { for (var C = 0, M = _.length; C < M; C++)_[C].segment1 = m, _[C].segment2 = b, _[C].bez1 = f, _[C].bez2 = d; p = p.concat(_) } } } } } return p }; e.exports = function (e, t) { return m(e, t) } }, function (e, t) { function n(e, t) { var n = [], r = []; function i(e, t) { if (1 === e.length) n.push(e[0]), r.push(e[0]); else { for (var o = [], a = 0; a < e.length - 1; a++)0 === a && n.push(e[0]), a === e.length - 2 && r.push(e[a + 1]), o[a] = [(1 - t) * e[a][0] + t * e[a + 1][0], (1 - t) * e[a][1] + t * e[a + 1][1]]; i(o, t) } } return e.length && i(e, t), { left: n, right: r.reverse() } } function r(e, t, r) { var i = [[e[1], e[2]]]; r = r || 2; var o = []; "A" === t[0] ? (i.push(t[6]), i.push(t[7])) : "C" === t[0] ? (i.push([t[1], t[2]]), i.push([t[3], t[4]]), i.push([t[5], t[6]])) : "S" === t[0] || "Q" === t[0] ? (i.push([t[1], t[2]]), i.push([t[3], t[4]])) : i.push([t[1], t[2]]); for (var a = i, s = 1 / r, c = 0; c < r - 1; c++) { var l = s / (1 - s * c), u = n(a, l); o.push(u.left), a = u.right } o.push(a); var h = o.map((function (e) { var t = []; return 4 === e.length && (t.push("C"), t = t.concat(e[2])), e.length >= 3 && (3 === e.length && t.push("Q"), t = t.concat(e[1])), 2 === e.length && t.push("L"), t = t.concat(e[e.length - 1]), t })); return h } function i(e, t, n) { if (1 === n) return [[].concat(e)]; var i = []; if ("L" === t[0] || "C" === t[0] || "Q" === t[0]) i = i.concat(r(e, t, n)); else { var o = [].concat(e); "M" === o[0] && (o[0] = "L"); for (var a = 0; a <= n - 1; a++)i.push(o) } return i } e.exports = function (e, t) { if (1 === e.length) return e; var n = e.length - 1, r = t.length - 1, o = n / r, a = []; if (1 === e.length && "M" === e[0][0]) { for (var s = 0; s < r - n; s++)e.push(e[0]); return e } for (var c = 0; c < r; c++) { var l = Math.floor(o * c); a[l] = (a[l] || 0) + 1 } var u = a.reduce((function (t, r, o) { return o === n ? t.concat(e[n]) : t.concat(i(e[o], e[o + 1], r)) }), []); return u.unshift(e[0]), "Z" !== t[r] && "z" !== t[r] || u.push("Z"), u } }, function (e, t, n) { var r = n(309); function i(e, t, n) { var r = null, i = n; return t < i && (i = t, r = "add"), e < i && (i = e, r = "del"), { type: r, min: i } } var o = function (e, t) { var n = e.length, o = t.length, a = void 0, s = void 0, c = 0; if (0 === n || 0 === o) return null; for (var l = [], u = 0; u <= n; u++)l[u] = [], l[u][0] = { min: u }; for (var h = 0; h <= o; h++)l[0][h] = { min: h }; for (var f = 1; f <= n; f++) { a = e[f - 1]; for (var d = 1; d <= o; d++) { s = t[d - 1], c = r(a, s) ? 0 : 1; var p = l[f - 1][d].min + 1, v = l[f][d - 1].min + 1, m = l[f - 1][d - 1].min + c; l[f][d] = i(p, v, m) } } return l }; e.exports = function (e, t) { var n = o(e, t), r = e.length, i = t.length, a = [], s = 1, c = 1; if (n[r][i] !== r) { for (var l = 1; l <= r; l++) { var u = n[l][l].min; c = l; for (var h = s; h <= i; h++)n[l][h].min < u && (u = n[l][h].min, c = h); s = c, n[l][s].type && a.push({ index: l - 1, type: n[l][s].type }) } for (var f = a.length - 1; f >= 0; f--)s = a[f].index, "add" === a[f].type ? e.splice(s, 0, [].concat(e[s])) : e.splice(s, 1) } if (r = e.length, r < i) for (var d = 0; d < i - r; d++)"z" === e[r - 1][0] || "Z" === e[r - 1][0] ? e.splice(r - 2, 0, e[r - 2]) : e.push(e[r - 1]); return e } }, function (e, t, n) { var r = n(3); e.exports = function (e, t) { if (e.length !== t.length) return !1; var n = !0; return r(e, (function (e, r) { if (e !== t[r]) return n = !1, !1 })), n } }, function (e, t) { function n(e) { var t = []; switch (e[0]) { case "M": t.push([e[1], e[2]]); break; case "L": t.push([e[1], e[2]]); break; case "A": t.push([e[6], e[7]]); break; case "Q": t.push([e[3], e[4]]), t.push([e[1], e[2]]); break; case "T": t.push([e[1], e[2]]); break; case "C": t.push([e[5], e[6]]), t.push([e[1], e[2]]), t.push([e[3], e[4]]); break; case "S": t.push([e[3], e[4]]), t.push([e[1], e[2]]); break; case "H": t.push([e[1], e[1]]); break; case "V": t.push([e[1], e[1]]); break; default: }return t } function r(e, t, r) { for (var i = [].concat(e), o = void 0, a = 1 / (r + 1), s = n(t)[0], c = 1; c <= r; c++)a *= c, o = Math.floor(e.length * a), 0 === o ? i.unshift([s[0] * a + e[o][0] * (1 - a), s[1] * a + e[o][1] * (1 - a)]) : i.splice(o, 0, [s[0] * a + e[o][0] * (1 - a), s[1] * a + e[o][1] * (1 - a)]); return i } e.exports = function (e, t) { if (e.length <= 1) return e; for (var i = void 0, o = 0; o < t.length; o++)if (e[o][0] !== t[o][0]) switch (i = n(e[o]), t[o][0]) { case "M": e[o] = ["M"].concat(i[0]); break; case "L": e[o] = ["L"].concat(i[0]); break; case "A": e[o] = [].concat(t[o]), e[o][6] = i[0][0], e[o][7] = i[0][1]; break; case "Q": if (i.length < 2) { if (!(o > 0)) { e[o] = t[o]; break } i = r(i, e[o - 1], 1) } e[o] = ["Q"].concat(i.reduce((function (e, t) { return e.concat(t) }), [])); break; case "T": e[o] = ["T"].concat(i[0]); break; case "C": if (i.length < 3) { if (!(o > 0)) { e[o] = t[o]; break } i = r(i, e[o - 1], 2) } e[o] = ["C"].concat(i.reduce((function (e, t) { return e.concat(t) }), [])); break; case "S": if (i.length < 2) { if (!(o > 0)) { e[o] = t[o]; break } i = r(i, e[o - 1], 1) } e[o] = ["S"].concat(i.reduce((function (e, t) { return e.concat(t) }), [])); break; default: e[o] = t[o] }return e } }, function (e, t, n) { var r = { lc: n(312), lowerCase: n(157), lowerFirst: n(106), substitute: n(313), uc: n(314), upperCase: n(158), upperFirst: n(64) }; e.exports = r }, function (e, t, n) { e.exports = n(157) }, function (e, t) { var n = function (e, t) { return e && t ? e.replace(/\\?\{([^{}]+)\}/g, (function (e, n) { return "\\" === e.charAt(0) ? e.slice(1) : void 0 === t[n] ? "" : t[n] })) : e }; e.exports = n }, function (e, t, n) { e.exports = n(158) }, function (e, t, n) { var r = n(14), i = { getType: n(113), isArray: n(5), isArrayLike: n(15), isBoolean: n(60), isFunction: n(13), isNil: n(6), isNull: n(316), isNumber: n(11), isObject: n(22), isObjectLike: n(63), isPlainObject: n(28), isPrototype: n(114), isType: r, isUndefined: n(317), isString: n(12), isRegExp: n(318), isDate: n(111), isArguments: n(319), isError: n(320) }; e.exports = i }, function (e, t) { var n = function (e) { return null === e }; e.exports = n }, function (e, t) { var n = function (e) { return void 0 === e }; e.exports = n }, function (e, t, n) { var r = n(14), i = function (e) { return r(e, "RegExp") }; e.exports = i }, function (e, t, n) { var r = n(14), i = function (e) { return r(e, "Arguments") }; e.exports = i }, function (e, t, n) { var r = n(14), i = function (e) { return r(e, "Error") }; e.exports = i }, function (e, t) { function n(e, t, n) { var r = void 0; return function () { var i = this, o = arguments, a = function () { r = null, n || e.apply(i, o) }, s = n && !r; clearTimeout(r), r = setTimeout(a, t), s && e.apply(i, o) } } e.exports = n }, function (e, t, n) { var r = n(15), i = function (e, t) { if (!r(e)) return -1; var n = Array.prototype.indexOf; if (n) return n.call(e, t); for (var i = -1, o = 0; o < e.length; o++)if (e[o] === t) { i = o; break } return i }; e.exports = i }, function (e, t, n) { var r = n(13), i = n(40), o = function (e, t, n) { return r(n) ? !!n(e, t) : i(e, t) }; e.exports = o }, function (e, t, n) { var r = n(3), i = n(15), o = function (e, t) { if (!i(e)) return e; var n = []; return r(e, (function (e, r) { n.push(t(e, r)) })), n }; e.exports = o }, function (e, t, n) { var r = n(3), i = n(28), o = Object.prototype.hasOwnProperty, a = function (e, t) { if (null === e || !i(e)) return {}; var n = {}; return r(t, (function (t) { o.call(e, t) && (n[t] = e[t]) })), n }; e.exports = a }, function (e, t) { function n(e, t, n) { var r = void 0, i = void 0, o = void 0, a = void 0, s = 0; n || (n = {}); var c = function () { s = !1 === n.leading ? 0 : Date.now(), r = null, a = e.apply(i, o), r || (i = o = null) }, l = function () { var l = Date.now(); s || !1 !== n.leading || (s = l); var u = t - (l - s); return i = this, o = arguments, u <= 0 || u > t ? (r && (clearTimeout(r), r = null), s = l, a = e.apply(i, o), r || (i = o = null)) : r || !1 === n.trailing || (r = setTimeout(c, u)), a }; return l.cancel = function () { clearTimeout(r), s = 0, r = i = o = null }, l } e.exports = n }, function (e, t, n) { var r = n(0), i = n(18), o = r.PathUtil; function a(e) { var t, n, r, o, a, s = e.start, c = e.end, l = e.getWidth(), u = e.getHeight(), h = 200; return e.isPolar ? (o = e.getRadius(), r = e.getCenter(), t = e.startAngle, n = e.endAngle, a = new i.Fan({ attrs: { x: r.x, y: r.y, rs: 0, re: o + h, startAngle: t, endAngle: t } }), a.endState = { endAngle: n }) : (a = new i.Rect({ attrs: { x: s.x - h, y: c.y - h, width: e.isTransposed ? l + 2 * h : 0, height: e.isTransposed ? 0 : u + 2 * h } }), e.isTransposed ? a.endState = { height: u + 2 * h } : a.endState = { width: l + 2 * h }), a.isClip = !0, a } function s(e) { if (r.isEmpty(e)) return null; var t = e[0].x, n = e[0].x, i = e[0].y, o = e[0].y; return r.each(e, (function (e) { t = t > e.x ? e.x : t, n = n < e.x ? e.x : n, i = i > e.y ? e.y : i, o = o < e.y ? e.y : o })), { minX: t, maxX: n, minY: i, maxY: o, centerX: (t + n) / 2, centerY: (i + o) / 2 } } function c(e, t) { var n, r, i = e.points || e.get("origin").points, o = s(i), a = t.startAngle, c = t.endAngle, l = c - a; return t.isTransposed ? (n = o.maxY * l, r = o.minY * l) : (n = o.maxX * l, r = o.minX * l), n += a, r += a, { startAngle: r, endAngle: n } } function l(e, t, n) { var i = {}; return e.delay && (i.delay = r.isFunction(e.delay) ? e.delay(t, n) : e.delay), i.easing = r.isFunction(e.easing) ? e.easing(t, n) : e.easing, i.duration = r.isFunction(e.duration) ? e.duration(t, n) : e.duration, i.callback = e.callback, i } function u(e, t) { var n, r = e._id, i = e.get("index"), o = e.getBBox(), a = e.get("origin").points, s = (o.minX + o.maxX) / 2; n = a[0].y - a[1].y <= 0 ? o.maxY : o.minY; var c = [s, n, 1]; e.apply(c), e.attr("transform", [["t", -s, -n], ["s", 1, .01], ["t", s, n]]); var u = { transform: [["t", -s, -n], ["s", 1, 100], ["t", s, n]] }, h = l(t, i, r, u); e.animate(u, h.duration, h.easing, h.callback, h.delay) } function h(e, t) { var n, r = e._id, i = e.get("index"), o = e.getBBox(), a = e.get("origin").points, s = (o.minY + o.maxY) / 2; n = a[0].y - a[1].y > 0 ? o.maxX : o.minX; var c = [n, s, 1]; e.apply(c), e.attr({ transform: [["t", -n, -s], ["s", .01, 1], ["t", n, s]] }); var u = { transform: [["t", -n, -s], ["s", 100, 1], ["t", n, s]] }, h = l(t, i, r, u); e.animate(u, h.duration, h.easing, h.callback, h.delay) } function f(e, t) { var n = { lineWidth: 0, opacity: 0 }, r = e._id, i = e.get("index"), o = l(t, i, r, n); e.animate(n, o.duration, o.easing, (function () { e.remove() }), o.delay) } function d(e, t, n) { var r, i, o = e._id, a = e.get("index"); if (n.isPolar && "point" !== e.name) r = n.getCenter().x, i = n.getCenter().y; else { var s = e.getBBox(); r = (s.minX + s.maxX) / 2, i = (s.minY + s.maxY) / 2 } var c = [r, i, 1]; e.apply(c), e.attr({ transform: [["t", -r, -i], ["s", .01, .01], ["t", r, i]] }); var u = { transform: [["t", -r, -i], ["s", 100, 100], ["t", r, i]] }, h = l(t, a, o, u); e.animate(u, h.duration, h.easing, h.callback, h.delay) } function p(e, t, n) { var r, i, o = e._id, a = e.get("index"); if (n.isPolar && "point" !== e.name) r = n.getCenter().x, i = n.getCenter().y; else { var s = e.getBBox(); r = (s.minX + s.maxX) / 2, i = (s.minY + s.maxY) / 2 } var c = [r, i, 1]; e.apply(c); var u = { transform: [["t", -r, -i], ["s", .01, .01], ["t", r, i]] }, h = l(t, a, o, u); e.animate(u, h.duration, h.easing, (function () { e.remove() }), h.delay) } function v(e, t) { if ("path" === e.get("type")) { var n = e._id, r = e.get("index"), i = o.pathToAbsolute(e.attr("path")); e.attr("path", [i[0]]); var a = { path: i }, s = l(t, r, n, a); e.animate(a, s.duration, s.easing, s.callback, s.delay) } } function m(e, t) { if ("path" === e.get("type")) { var n = e._id, r = e.get("index"), i = o.pathToAbsolute(e.attr("path")), a = { path: [i[0]] }, s = l(t, r, n, a); e.animate(a, s.duration, s.easing, (function () { e.remove() }), s.delay) } } function g(e, t, n, r, i) { var o, s = a(n), c = e.get("canvas"), u = e._id, h = e.get("index"); r ? (s.attr("startAngle", r), s.attr("endAngle", r), o = { endAngle: i }) : o = s.endState, s.set("canvas", c), e.attr("clip", s), e.setSilent("animating", !0); var f = l(t, h, u, o); s.animate(o, f.duration, f.easing, (function () { e && !e.get("destroyed") && (e.attr("clip", null), e.setSilent("cacheShape", null), e.setSilent("animating", !1), s.remove()) }), f.delay) } function y(e, t) { var n = e._id, i = e.get("index"), o = r.isNil(e.attr("fillOpacity")) ? 1 : e.attr("fillOpacity"), a = r.isNil(e.attr("strokeOpacity")) ? 1 : e.attr("strokeOpacity"); e.attr("fillOpacity", 0), e.attr("strokeOpacity", 0); var s = { fillOpacity: o, strokeOpacity: a }, c = l(t, i, n, s); e.animate(s, c.duration, c.easing, c.callback, c.delay) } function b(e, t) { var n = e._id, r = e.get("index"), i = { fillOpacity: 0, strokeOpacity: 0 }, o = l(t, r, n, i); e.animate(i, o.duration, o.easing, (function () { e.remove() }), o.delay) } function x(e, t, n) { var r = c(e, n), i = r.endAngle, o = r.startAngle; g(e, t, n, o, i) } function w(e, t, n) { if ("line" === e.name) { var r = e.get("canvas"), a = e.get("cacheShape"), s = e._id, c = e.get("index"), u = new i.Rect({ attrs: { x: n.start.x, y: n.end.y, width: n.getWidth(), height: n.getHeight() } }); u.isClip = !0, u.set("canvas", r); var h = o.pathToAbsolute(a.attrs.path), f = o.pathToAbsolute(e.attr("path")), d = h[1][1] - h[0][1], p = h[h.length - 1][1] + d, v = f[f.length - 1][2], m = h.concat([["L", p, v]]), g = [0, 0, 1]; e.apply(g), e.attr("clip", u), e.attr("path", m); var y = { transform: [["t", -d, 0]] }, b = l(t, c, s, y); e.animate(y, b.duration, b.easing, (function () { e && !e.get("destroyed") && (e.attr("path", f), e.attr({ transform: [["t", d, 0]] }), e.attr("clip", null), e.setSilent("cacheShape", null), u.remove()) }), b.delay) } } function _(e, t, n) { if ("area" === e.name) { var r = e.get("canvas"), a = e.get("cacheShape"), s = e._id, c = e.get("index"), u = new i.Rect({ attrs: { x: n.start.x, y: n.end.y, width: n.getWidth(), height: n.getHeight() } }); u.isClip = !0, u.set("canvas", r); var h = o.pathToAbsolute(a.attrs.path), f = o.pathToAbsolute(e.attr("path")), d = h[1][1] - h[0][1], p = Math.floor(h.length / 2), v = h[p - 1][1] + d, m = f[p - 1][2], g = [].concat(h.slice(0, p), [["L", v, m], ["L", v, f[p][2]]], h.slice(p)), y = [0, 0, 1]; e.apply(y), e.attr("clip", u), e.attr("path", g); var b = { transform: [["t", -d, 0]] }, x = l(t, c, s, b); e.animate(b, x.duration, x.easing, (function () { e && !e.get("destroyed") && (e.attr("path", f), e.attr({ transform: [["t", d, 0]] }), e.attr("clip", null), e.setSilent("cacheShape", null), u.remove()) }), x.delay) } } e.exports = { enter: { clipIn: g, zoomIn: d, pathIn: v, scaleInY: u, scaleInX: h, fanIn: x, fadeIn: y }, leave: { lineWidthOut: f, zoomOut: p, pathOut: m, fadeOut: b }, appear: { clipIn: g, zoomIn: d, pathIn: v, scaleInY: u, scaleInX: h, fanIn: x, fadeIn: y }, update: { fadeIn: y, fanIn: x, lineSlideLeft: w, areaSlideLeft: _ } } }, function (e, t, n) { function r(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function i(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var o = n(163), a = n(23), s = n(0), c = n(199), l = n(8), u = n(166), h = "_origin", f = n(412); function d(e) { var t = e.startAngle, n = e.endAngle; return !(!s.isNil(t) && !s.isNil(n) && n - t < 2 * Math.PI) } function p(e, t, n) { var r = (e - t) / (n - t); return r >= 0 && r <= 1 } function v(e, t) { var n = !1; if (e) { var r = e.type; if ("theta" === r) { var i = e.start, o = e.end; n = p(t.x, i.x, o.x) && p(t.y, i.y, o.y) } else { var a = e.invert(t); n = a.x >= 0 && a.y >= 0 && a.x <= 1 && a.y <= 1 } } return n } var m = {}; s.each(a, (function (e, t) { var n = s.lowerFirst(t); m[n] = function (t) { var n = new e(t); return this.addGeom(n), n } })); var g = function (e) { i(n, e); var t = n.prototype; function n(t) { var n; n = e.call(this, t) || this; var i = r(n); return i._setTheme(), s.each(a, (function (e, t) { var n = s.lowerFirst(t); i[n] = function (t) { void 0 === t && (t = {}), t.viewTheme = i.get("viewTheme"); var n = new e(t); return i.addGeom(n), n } })), i.init(), n } return t.getDefaultCfg = function () { return { viewContainer: null, coord: null, start: { x: 0, y: 0 }, end: { x: 1, y: 1 }, geoms: [], scales: {}, options: {}, scaleController: null, padding: 0, theme: null, parent: null, tooltipEnable: !0, animate: l.animate, visible: !0 } }, t._setTheme = function () { var e = this, t = e.get("theme"), n = {}, r = {}; s.isObject(t) ? r = t : -1 !== s.indexOf(Object.keys(u), t) && (r = u[t]), s.deepMix(n, l, r), e.set("viewTheme", n) }, t.init = function () { this._initViewPlot(), this.get("data") && this._initData(this.get("data")), this._initOptions(), this._initControllers(), this._bindEvents() }, t._initOptions = function () { var e = this, t = s.mix({}, e.get("options")); t.scales || (t.scales = {}), t.coord || (t.coord = {}), !1 === t.animate && this.set("animate", !1), (!1 === t.tooltip || s.isNull(t.tooltip)) && this.set("tooltipEnable", !1), t.geoms && t.geoms.length && s.each(t.geoms, (function (t) { e._createGeom(t) })); var n = e.get("scaleController"); n && (n.defs = t.scales); var r = e.get("coordController"); r && r.reset(t.coord), this.set("options", t) }, t._createGeom = function (e) { var t, n = e.type; this[n] && (t = this[n](), s.each(e, (function (e, n) { var r; t[n] && (s.isObject(e) && e.field ? "label" === e ? t[n](e.field, e.callback, e.cfg) : (s.each(e, (function (e, t) { "field" !== t && (r = e) })), t[n](e.field, r)) : t[n](e)) }))) }, t._initControllers = function () { var e = this, t = e.get("options"), n = e.get("viewTheme"), r = e.get("canvas"), i = new c.Scale({ viewTheme: n, defs: t.scales }), o = new c.Coord(t.coord); this.set("scaleController", i), this.set("coordController", o); var a = new c.Axis({ canvas: r, viewTheme: n }); this.set("axisController", a); var s = new c.Guide({ viewTheme: n, options: t.guides || [] }); this.set("guideController", s) }, t._initViewPlot = function () { this.get("viewContainer") || this.set("viewContainer", this.get("middlePlot")) }, t._initGeoms = function () { for (var e = this.get("geoms"), t = this.get("filteredData"), n = this.get("coord"), r = this.get("_id"), i = 0; i < e.length; i++) { var o = e[i]; o.set("data", t), o.set("coord", n), o.set("_id", r + "-geom" + i), o.set("keyFields", this.get("keyFields")), o.init() } }, t._clearGeoms = function () { for (var e = this, t = e.get("geoms"), n = 0; n < t.length; n++) { var r = t[n]; r.clear() } }, t._removeGeoms = function () { var e = this, t = e.get("geoms"); while (t.length > 0) { var n = t.shift(); n.destroy() } }, t._drawGeoms = function () { this.emit("beforedrawgeoms"); for (var e = this.get("geoms"), t = this.get("coord"), n = 0; n < e.length; n++) { var r = e[n]; r.setCoord(t), r.paint() } this.emit("afterdrawgeoms") }, t.isShapeInView = function (e) { var t = this.get("_id"), n = e._id; if (n) return n.split("-")[0] === t; var r = e; while (r) { if (r.get("viewId") === t) return !0; r = r.get("parent") } return !1 }, t.getViewRegion = function () { var e, t, n = this, r = n.get("parent"); if (r) { var i = r.getViewRegion(), o = n._getViewRegion(i.start, i.end); e = o.start, t = o.end } else e = n.get("start"), t = n.get("end"); return { start: e, end: t } }, t._getViewRegion = function (e, t) { var n = this.get("start"), r = this.get("end"), i = n.x, o = 1 - r.y, a = r.x, c = 1 - n.y, l = this.get("padding"), u = s.toAllPadding(l), h = u[0], f = u[1], d = u[2], p = u[3], v = { x: i * (t.x - e.x) + e.x + p, y: o * (t.y - e.y) + e.y - d }, m = { x: a * (t.x - e.x) + e.x - f, y: c * (t.y - e.y) + e.y + h }; return { start: v, end: m } }, t._createCoord = function () { var e = this.get("coordController"), t = this.getViewRegion(), n = e.createCoord(t.start, t.end); this.set("coord", n) }, t._renderAxes = function () { var e = this.get("options"), t = e.axes; if (!1 !== t) { var n = this.get("axisController"); n.container = this.get("backPlot"), n.coord = this.get("coord"), n.options = t || {}; var r = this.getXScale(), i = this.getYScales(), o = this.get("_id"); n.createAxis(r, i, o) } }, t._renderGuides = function () { var e = this.get("guideController"); if (!s.isEmpty(e.options)) { var t = this.get("coord"); e.view = this, e.backContainer = this.get("backPlot"), e.frontContainer = this.get("frontPlot"), e.xScales = this._getScales("x"), e.yScales = this._getScales("y"), e.render(t) } }, t._bindEvents = function () { var e = new c.Event({ view: this, canvas: this.get("canvas") }); e.bindEvents(), this.set("eventController", e) }, t._clearEvents = function () { var e = this.get("eventController"); e && e.clearEvents() }, t._getScales = function (e) { for (var t = this.get("geoms"), n = {}, r = 0; r < t.length; r++) { var i = t[r], o = "x" === e ? i.getXScale() : i.getYScale(); o && !n[o.field] && (n[o.field] = o) } return n }, t._adjustScale = function () { this._setCatScalesRange(); for (var e = this.get("geoms"), t = this.get("scaleController"), n = t.defs, r = 0; r < e.length; r++) { var i = e[r]; if ("interval" === i.get("type")) { var o = i.getYScale(), a = o.field, s = o.min, c = o.max, l = o.type; n[a] && n[a].min || "time" === l || (s > 0 ? o.change({ min: 0 }) : c <= 0 && o.change({ max: 0 })) } } }, t._setCatScalesRange = function () { var e = this, t = e.get("coord"), n = e.get("viewTheme"), r = e.getXScale(), i = e.getYScales(), o = []; r && o.push(r), o = o.concat(i); var a = t.isPolar && d(t), c = e.get("scaleController"), l = c.defs; s.each(o, (function (e) { if ((e.isCategory || e.isIdentity) && e.values && (!l[e.field] || !l[e.field].range)) { var r, i = e.values.length; if (1 === i) r = [.5, 1]; else { var o = 1, s = 0; a ? t.isTransposed ? (o = n.widthRatio.multiplePie, s = 1 / i * o, r = [s / 2, 1 - s / 2]) : r = [0, 1 - 1 / i] : (s = 1 / i * 1 / 2, r = [s, 1 - s]) } e.range = r } })) }, t.getXScale = function () { var e = this.get("geoms"), t = null; return s.isEmpty(e) || (t = e[0].getXScale()), t }, t.getYScales = function () { for (var e = this.get("geoms"), t = [], n = 0; n < e.length; n++) { var r = e[n], i = r.getYScale(); i && -1 === s.indexOf(t, i) && t.push(i) } return t }, t.getXY = function (e) { var t, n, r = this, i = r.get("coord"), o = r._getScales("x"), a = r._getScales("y"); for (var c in e) o[c] && (t = o[c].scale(e[c])), a[c] && (n = a[c].scale(e[c])); return s.isNil(t) || s.isNil(n) ? null : i.convert({ x: t, y: n }) }, t.getSnapRecords = function (e) { var t = this, n = t.get("geoms"), r = []; return s.each(n, (function (t) { var n, i = t.get("dataArray"); s.each(i, (function (i) { n = t.findPoint(e, i), n && r.push(n) })) })), r }, t.addGeom = function (e) { var t = this, n = t.get("geoms"); n.push(e), e.set("view", t); var r = t.get("viewContainer"); e.set("container", r), e.set("animate", t.get("animate")), e.bindEvents() }, t.removeGeom = function (e) { var t = this.get("geoms"); s.Array.remove(t, e), e.destroy() }, t.createScale = function (e, t) { var n = this.get("scales"), r = this.get("parent"), i = n[e]; if (!t) { var o = this.get("filteredData"), a = this._getFieldsForLegend(); t = o.length && !a.includes(e) ? o : this.get("data") } var s = this.get("scaleController"); if (i) { if (i.sync) { var c = s.createScale(e, t); this._syncScale(i, c) } } else { if (i = s.createScale(e, t), i.sync && r) { var l = r.createScale(e, t); i = this._getSyncScale(l, i) } n[e] = i } return i }, t._getFieldsForLegend = function () { var e = [], t = this.get("geoms"); return s.each(t, (function (t) { var n = t.getFieldsForLegend(); e = e.concat(n) })), s.uniq(e) }, t._getSyncScale = function (e, t) { return e.type !== t.type ? t : (this._syncScale(e, t), e) }, t._syncScale = function (e, t) { var n = s.union(e.values, t.values); if (t.isLinear) { var r = Math.max(e.max, t.max), i = Math.min(e.min, t.min); e.max === r && e.min === i || e.change({ min: i, max: r, values: n }) } n.length !== e.values.length && e.change({ values: n }) }, t.getFilteredValues = function (e) { var t, n = this.get("scales")[e], r = n.values, i = this._getFilters(); return t = i && i[e] ? r.filter(i[e]) : r.slice(0), t }, t.getFilteredOutValues = function (e) { var t, n = this.get("scales")[e], r = n.values, i = this._getFilters(); return t = i && i[e] ? r.filter((function () { return !i[e].apply(i, arguments) })) : [], t }, t.filter = function (e, t) { var n = this.get("options"); n.filters || (n.filters = {}), n.filters[e] = t, this.get("scaleController").filters = n.filters }, t._getFilters = function () { var e = this.get("options"); return e.filters }, t.execFilter = function (e) { var t = this, n = t._getFilters(); return n && (e = e.filter((function (e) { var t = !0; return s.each(n, (function (n, r) { if (n && (t = n(e[r], e), !t)) return !1 })), t }))), e }, t.axis = function (e, t) { var n = this.get("options"); if (!1 === e) n.axes = !1; else { n.axes || (n.axes = {}); var r = n.axes; r[e] = t } return this }, t.guide = function () { return this.get("guideController") }, t._getKeyFields = function (e) { var t = []; s.each(e, (function (e, n) { e.key && t.push(n) })), this.set("keyFields", t) }, t.scale = function (e, t) { var n = this.get("options"), r = n.scales; return s.isObject(e) ? s.mix(r, e) : r[e] = t, this._getKeyFields(r), this }, t.tooltip = function (e) { return this.set("tooltipEnable", e), this }, t.animate = function (e) { var t = this.get("options"); return t.animate = e, this.set("animate", e), this }, t.changeOptions = function (e) { return this.set("options", e), this._initOptions(e), this }, t.getViewsByPoint = function (e) { var t = [], n = this.get("views"); return v(this.get("coord"), e) && t.push(this), s.each(n, (function (n) { n.get("visible") && v(n.get("coord"), e) && t.push(n) })), t }, t.eachShape = function (e) { var t = this, n = t.get("views"), r = t.get("canvas"); s.each(n, (function (t) { t.eachShape(e) })); var i = this.get("geoms"); return s.each(i, (function (n) { var r = n.getShapes(); s.each(r, (function (r) { var i = r.get("origin"); if (s.isArray(i)) { var o = i.map((function (e) { return e[h] })); e(o, r, n, t) } else { var a = i[h]; e(a, r, n, t) } })) })), r.draw(), this }, t.filterShape = function (e) { var t = function (t, n, r, i) { e(t, n, r, i) ? n.show() : n.hide() }; return this.eachShape(t), this }, t.clearInner = function () { this.set("scales", {}), this.emit("beforeclearinner"); var e = this.get("options"); e.geoms = null, this._clearGeoms(), this.get("guideController") && this.get("guideController").reset(), this.get("axisController") && this.get("axisController").clear(), this.emit("afterclearinner") }, t.clear = function () { var e = this.get("options"); return e.filters = null, this._removeGeoms(), this.clearInner(), this.get("guideController") && this.get("guideController").clear(), this.set("isUpdate", !1), this.set("keyFields", []), this }, t.coord = function (e, t) { var n = this.get("coordController"); return n.reset({ type: e, cfg: t }), n }, t.resetCoord = function () { this._createCoord() }, t.source = function (e, t) { return this._initData(e), t && this.scale(t), this.emit("setdata"), this }, t.changeData = function (e) { return this.emit("beforechangedata"), this._initData(e), this.emit("afterchangedata"), this.repaint(), this }, t._initData = function (e) { var t = this.get("dataView"); t && (t.off("change", s.getWrapBehavior(this, "_onViewChange")), this.set("dataView", null)), e && e.isDataView && (e.on("change", s.wrapBehavior(this, "_onViewChange")), this.set("dataView", e), e = e.rows), this.set("data", e) }, t._onViewChange = function () { this.emit("beforechangedata"); var e = this.get("dataView"), t = e.rows; this.set("data", t), this.emit("afterchangedata"), this.repaint() }, t.beforeRender = function () { var e = this.get("views"); s.each(e, (function (e) { e.beforeRender() })), this.initView() }, t.drawComponents = function () { var e = this.get("views"); s.each(e, (function (e) { e.drawComponents() })), this._renderAxes(), this._renderGuides() }, t.drawCanvas = function (e) { if (!e) { var t = this.get("views"), n = this.get("backPlot"); n.sort(); var r = this.get("canvas"), i = this.get("animate"); if (i) { var o = this.get("isUpdate"); s.each(t, (function (e) { f.execAnimation(e, o) })), f.execAnimation(this, o) } else r.draw() } }, t.render = function (e) { return this.clearInner(), this.emit("beforerender"), this.beforeRender(), this.emit("beforepaint"), this.drawComponents(), this.paint(), this.emit("afterpaint"), this.drawCanvas(e), this.emit("afterrender"), this.set("rendered", !0), this }, t.initView = function () { var e = this.get("data") || [], t = this.execFilter(e); this.set("filteredData", t), this._createCoord(), this.emit("beforeinitgeoms"), this._initGeoms(), this._adjustScale() }, t.paint = function () { var e = this.get("views"); s.each(e, (function (e) { e.paint() })); var t = this.get("data"); s.isEmpty(t) || this._drawGeoms(), this.get("visible") || this.changeVisible(!1, !0) }, t.changeVisible = function (e, t) { var n = this.get("geoms"); if (s.each(n, (function (t) { t.changeVisible(e, !0) })), this.get("axisController") && this.get("axisController").changeVisible(e), this.get("guideController") && this.get("guideController").changeVisible(e), !t) { var r = this.get("canvas"); r.draw() } }, t.repaint = function () { this.set("isUpdate", !0), this.clearInner(), this.render() }, t.destroy = function () { this._clearEvents(); var t = this.get("dataView"); t && t.off("change", s.getWrapBehavior(this, "_onViewChange")), this.clear(), e.prototype.destroy.call(this) }, n }(o); e.exports = g }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(6), o = n(5), a = n(3), s = n(33), c = function (e) { function t(t) { var n; return n = e.call(this, t) || this, n.names = ["x", "y"], n.type = "position", n } r(t, e); var n = t.prototype; return n.mapping = function (e, t) { var n, r, s, c = this.scales, l = this.coord, u = c[0], h = c[1]; if (i(e) || i(t)) return []; if (o(t) && o(e)) { n = [], r = []; for (var f = 0, d = 0, p = e.length, v = t.length; f < p && d < v; f++, d++)s = l.convertPoint({ x: u.scale(e[f]), y: h.scale(t[d]) }), n.push(s.x), r.push(s.y) } else if (o(t)) e = u.scale(e), r = [], a(t, (function (t) { t = h.scale(t), s = l.convertPoint({ x: e, y: t }), n && n !== s.x ? (o(n) || (n = [n]), n.push(s.x)) : n = s.x, r.push(s.y) })); else if (o(e)) t = h.scale(t), n = [], a(e, (function (e) { e = u.scale(e), s = l.convertPoint({ x: e, y: t }), r && r !== s.y ? (o(r) || (r = [r]), r.push(s.y)) : r = s.y, n.push(s.x) })); else { e = u.scale(e), t = h.scale(t); var m = l.convertPoint({ x: e, y: t }); n = m.x, r = m.y } return [n, r] }, t }(s); e.exports = c }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(12), o = n(164), a = n(33), s = function (e) { function t(t) { var n; return n = e.call(this, t) || this, n.names = ["color"], n.type = "color", n.gradient = null, i(n.values) && (n.linear = !0), n } r(t, e); var n = t.prototype; return n.getLinearValue = function (e) { var t = this.gradient; if (!t) { var n = this.values; t = o.gradient(n), this.gradient = t } return t(e) }, t }(a); e.exports = s }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(33), o = function (e) { function t(t) { var n; return n = e.call(this, t) || this, n.names = ["shape"], n.type = "shape", n.gradient = null, n } r(t, e); var n = t.prototype; return n.getLinearValue = function (e) { var t = this.values, n = Math.round((t.length - 1) * e); return t[n] }, t }(i); e.exports = o }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(33), o = function (e) { function t(t) { var n; return n = e.call(this, t) || this, n.names = ["size"], n.type = "size", n.gradient = null, n } return r(t, e), t }(i); e.exports = o }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(33), o = function (e) { function t(t) { var n; return n = e.call(this, t) || this, n.names = ["opacity"], n.type = "opacity", n.gradient = null, n } return r(t, e), t }(i); e.exports = o }, function (e, t, n) { var r = n(10), i = n(34), o = n(335), a = n(336), s = n(165), c = n(337), l = n(338); r(i.prototype, s), r(o.prototype, s, c), r(a.prototype, l), i.Jitter = n(339), i.Symmetric = n(340), i.Dodge = o, i.Stack = a, e.exports = i }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(34), o = n(3), a = .5, s = .5, c = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n._initDefaultCfg = function () { this.marginRatio = a, this.dodgeRatio = s, this.adjustNames = ["x", "y"] }, n.getDodgeOffset = function (e, t, n) { var r = this, i = e.pre, o = e.next, a = o - i, s = a * r.dodgeRatio / n, c = r.marginRatio * s, l = .5 * (a - n * s - (n - 1) * c) + ((t + 1) * s + t * c) - .5 * s - .5 * a; return (i + o) / 2 + l }, n.processAdjust = function (e) { var t = this, n = e.length, r = t.xField; o(e, (function (e, i) { for (var o = 0, a = e.length; o < a; o++) { var s = e[o], c = s[r], l = { pre: 1 === a ? c - 1 : c - .5, next: 1 === a ? c + 1 : c + .5 }, u = t.getDodgeOffset(l, i, n); s[r] = u } })) }, t }(i); i.Dodge = c, e.exports = c }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(5), o = n(6), a = n(34), s = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n._initDefaultCfg = function () { this.xField = null, this.yField = null }, n.processAdjust = function (e) { this.processStack(e) }, n.processStack = function (e) { var t = this, n = t.xField, r = t.yField, a = e.length, s = { positive: {}, negative: {} }; t.reverseOrder && (e = e.slice(0).reverse()); for (var c = 0; c < a; c++)for (var l = e[c], u = 0, h = l.length; u < h; u++) { var f = l[u], d = f[n] || 0, p = f[r], v = d.toString(); if (p = i(p) ? p[1] : p, !o(p)) { var m = p >= 0 ? "positive" : "negative"; s[m][v] || (s[m][v] = 0), f[r] = [s[m][v], p + s[m][v]], s[m][v] += p } } }, t }(a); a.Stack = s, e.exports = s }, function (e, t, n) { var r = { merge: n(49), values: n(89) }, i = n(159), o = n(3); e.exports = { processAdjust: function (e) { var t = this, n = r.merge(e), o = t.dodgeBy, a = e; o && (a = i(n, o)), t.cacheMap = {}, t.adjDataArray = a, t.mergeData = n, t.adjustData(a, n), t.adjDataArray = null, t.mergeData = null }, getDistribution: function (e) { var t = this, n = t.adjDataArray, i = t.cacheMap, a = i[e]; return a || (a = {}, o(n, (function (t, n) { var i = r.values(t, e); i.length || i.push(0), o(i, (function (e) { a[e] || (a[e] = []), a[e].push(n) })) })), i[e] = a), a }, adjustDim: function (e, t, n, r, i) { var a = this, s = a.getDistribution(e), c = a.groupData(n, e); o(c, (function (n, r) { var c; r = parseFloat(r), c = 1 === t.length ? { pre: t[0] - 1, next: t[0] + 1 } : a.getAdjustRange(e, r, t), o(n, (function (t) { var n = t[e], r = s[n], o = r.indexOf(i); t[e] = a.getDodgeOffset(c, o, r.length) })) })) } } }, function (e, t) { e.exports = { _initDefaultCfg: function () { this.xField = null, this.yField = null, this.height = null, this.size = 10, this.reverseOrder = !1, this.adjustNames = ["y"] }, processOneDimStack: function (e) { var t = this, n = t.xField, r = t.yField || "y", i = t.height, o = {}; t.reverseOrder && (e = e.slice(0).reverse()); for (var a = 0, s = e.length; a < s; a++)for (var c = e[a], l = 0, u = c.length; l < u; l++) { var h = c[l], f = h.size || t.size, d = 2 * f / i, p = h[n]; o[p] || (o[p] = d / 2), h[r] = o[p], o[p] += d } }, processAdjust: function (e) { this.yField ? this.processStack(e) : this.processOneDimStack(e) } } }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(3), o = n(10), a = { merge: n(49) }, s = n(34), c = n(165), l = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n._initDefaultCfg = function () { this.xField = null, this.yField = null, this.adjustNames = ["x", "y"], this.groupFields = null }, n.processAdjust = function (e) { var t = this, n = a.merge(e); t.adjDataArray = e, t.mergeData = n, t.adjustData(e, n), t.adjFrames = null, t.mergeData = null }, n.getAdjustOffset = function (e, t) { var n = Math.random(), r = t - e, i = .05 * r; return e + i + .9 * r * n }, n._adjustGroup = function (e, t, n, r) { var o = this, a = o.getAdjustRange(t, n, r); i(e, (function (e) { e[t] = o.getAdjustOffset(a.pre, a.next) })) }, n.adjustDim = function (e, t, n) { var r = this, o = r.groupData(n, e); i(o, (function (n, i) { i = parseFloat(i), r._adjustGroup(n, e, i, t) })) }, t }(s); o(l.prototype, c), s.Jitter = l, e.exports = l }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(3), o = n(147), a = n(5), s = { merge: n(49) }, c = n(34), l = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n._initDefaultCfg = function () { this.xField = null, this.yField = null, this.cacheMax = null, this.adjustNames = ["y"], this.groupFields = null }, n._getMax = function (e) { var t = this, n = t.mergeData, r = o(n, (function (t) { var n = t[e]; return a(n) ? Math.max.apply(null, n) : n })), i = r[e], s = a(i) ? Math.max.apply(null, i) : i; return s }, n._getXValuesMax = function () { var e = this, t = e.yField, n = e.xField, r = {}, o = e.mergeData; return i(o, (function (e) { var i = e[n], o = e[t], s = a(o) ? Math.max.apply(null, o) : o; r[i] = r[i] || 0, r[i] < s && (r[i] = s) })), r }, n.processAdjust = function (e) { var t = this, n = s.merge(e); t.mergeData = n, t._processSymmetric(e), t.mergeData = null }, n._processSymmetric = function (e) { var t, n = this, r = n.xField, o = n.yField, s = n._getMax(o), c = e[0][0]; c && a(c[o]) && (t = n._getXValuesMax()), i(e, (function (e) { i(e, (function (e) { var n, c = e[o]; if (a(c)) { var l = e[r], u = t[l]; n = (s - u) / 2; var h = []; i(c, (function (e) { h.push(n + e) })), e[o] = h } else n = (s - c) / 2, e[o] = [n, c + n] })) })) }, t }(c); c.Symmetric = l, e.exports = l }, function (e, t, n) { var r, i, o = n(0), a = n(167), s = "g2-tooltip", c = "g2-legend", l = o.deepMix({}, a, { background: { fill: "#1F1F1F", radius: 2 }, plotBackground: { fill: "#1F1F1F" }, axis: { top: { label: { textStyle: { fill: "#A6A6A6" } }, line: { stroke: "#737373" }, tickLine: { stroke: "#737373" } }, bottom: { label: { textStyle: { fill: "#A6A6A6" } }, line: { stroke: "#737373" }, tickLine: { stroke: "#737373" } }, left: { label: { textStyle: { fill: "#A6A6A6" } }, grid: { lineStyle: { stroke: "#404040" } } }, right: { label: { textStyle: { fill: "#A6A6A6" } }, grid: { lineStyle: { stroke: "#404040" } } }, circle: { label: { textStyle: { fill: "#A6A6A6" } }, line: { stroke: "#737373" }, tickLine: { stroke: "#737373" }, grid: { lineStyle: { stroke: "#404040" } } }, radius: { label: { textStyle: { fill: "#A6A6A6" } }, line: { stroke: "#737373" }, tickLine: { stroke: "#737373" }, grid: { lineStyle: { stroke: "#404040" } } }, helix: { line: { stroke: "#737373" }, tickLine: { stroke: "#737373" } } }, label: { textStyle: { fill: "#A6A6A6" } }, legend: { right: { textStyle: { fill: "#737373" }, unCheckColor: "#bfbfbf" }, left: { textStyle: { fill: "#737373" }, unCheckColor: "#bfbfbf" }, top: { textStyle: { fill: "#737373" }, unCheckColor: "#bfbfbf" }, bottom: { textStyle: { fill: "#737373" }, unCheckColor: "#bfbfbf" }, html: (r = {}, r["" + c] = { color: "#D9D9D9" }, r), gradient: { textStyle: { fill: "#D9D9D9" }, lineStyle: { stroke: "#404040" } } }, tooltip: (i = {}, i["" + s] = { color: "#D9D9D9", backgroundColor: "rgba(0, 0, 0, 0.5)", boxShadow: "0px 0px 2px #000" }, i), tooltipCrosshairsRect: { type: "rect", rectStyle: { fill: "#fff", opacity: .1 } }, tooltipCrosshairsLine: { lineStyle: { stroke: "rgba(255, 255, 255, 0.45)" } }, guide: { line: { text: { style: { fill: "#A6A6A6" } } }, text: { style: { fill: "#A6A6A6" } }, region: { style: { lineWidth: 0, fill: "#000", fillOpacity: .04 } } } }); e.exports = l }, function (e, t, n) { var r = n(91), i = n(197), o = n(392), a = n(393), s = { getLabelsClass: function (e, t) { var n = r; return "polar" === e ? n = i : "theta" === e ? n = o : "interval" !== t && "polygon" !== t || (n = a), n } }; e.exports = s }, function (e, t, n) { var r = n(35); r.Base = r, r.Circle = n(367), r.Grid = n(186), r.Helix = n(368), r.Line = n(369), r.Polyline = n(370), e.exports = r }, function (e, t, n) { var r = n(2), i = n(169), o = n(170), a = n(350), s = n(351), c = function e(t) { e.superclass.constructor.call(this, t) }; c.CFG = { eventEnable: !0, width: null, height: null, widthCanvas: null, heightCanvas: null, widthStyle: null, heightStyle: null, containerDOM: null, canvasDOM: null, pixelRatio: null, renderer: "canvas" }, r.extend(c, o), r.augment(c, { init: function () { c.superclass.init.call(this), this._setGlobalParam(), this._setContainer(), this._initPainter(), this._scale(), this.get("eventEnable") && this._registEvents() }, getEmitter: function (e, t) { if (e) { if (!r.isEmpty(e._getEvents())) return e; var n = e.get("parent"); if (n && !t.propagationStopped) return this.getEmitter(n, t) } }, _getEventObj: function (e, t, n, r) { var o = new i(e, t, !0, !0); return o.x = n.x, o.y = n.y, o.clientX = t.clientX, o.clientY = t.clientY, o.currentTarget = r, o.target = r, o }, _triggerEvent: function (e, t) { var n, r = this.getPointByClient(t.clientX, t.clientY), i = this.getShape(r.x, r.y, t), o = this.get("el"); if ("mousemove" === e) { var a = this.get("preShape"); if (a && a !== i) { var s = this._getEventObj("mouseleave", t, r, a); n = this.getEmitter(a, t), n && n.emit("mouseleave", s), o.style.cursor = "default" } if (i) { var c = this._getEventObj("mousemove", t, r, i); if (n = this.getEmitter(i, t), n && n.emit("mousemove", c), a !== i) { var l = this._getEventObj("mouseenter", t, r, i); n && n.emit("mouseenter", l, t) } } else { var u = this._getEventObj("mousemove", t, r, this); this.emit("mousemove", u) } this.set("preShape", i) } else { var h = this._getEventObj(e, t, r, i || this); n = this.getEmitter(i, t), n && n !== this && n.emit(e, h), this.emit(e, h) } i && !i.get("destroyed") && (o.style.cursor = i.attr("cursor") || "default") }, _registEvents: function () { var e = this, t = e.get("el"), n = ["mouseout", "mouseover", "mousemove", "mousedown", "mouseleave", "mouseup", "click", "dblclick"]; r.each(n, (function (n) { t.addEventListener(n, (function (t) { e._triggerEvent(n, t) }), !1) })), t.addEventListener("touchstart", (function (t) { r.isEmpty(t.touches) || e._triggerEvent("touchstart", t.touches[0]) }), !1), t.addEventListener("touchmove", (function (t) { r.isEmpty(t.touches) || e._triggerEvent("touchmove", t.touches[0]) }), !1), t.addEventListener("touchend", (function (t) { r.isEmpty(t.changedTouches) || e._triggerEvent("touchend", t.changedTouches[0]) }), !1) }, _scale: function () { var e = this.get("pixelRatio"); this.scale(e, e) }, _setGlobalParam: function () { var e = this.get("pixelRatio"); e || this.set("pixelRatio", r.getRatio()); var t = s[this.get("renderer") || "canvas"]; this._cfg.renderer = t, this._cfg.canvas = this; var n = new a(this); this._cfg.timeline = n }, _setContainer: function () { var e = this.get("containerId"), t = this.get("containerDOM"); t || (t = document.getElementById(e), this.set("containerDOM", t)), r.modifyCSS(t, { position: "relative" }) }, _initPainter: function () { var e = this.get("containerDOM"), t = new this._cfg.renderer.painter(e); this._cfg.painter = t, this._cfg.canvasDOM = this._cfg.el = t.canvas, this.changeSize(this.get("width"), this.get("height")) }, _resize: function () { var e = this.get("canvasDOM"), t = this.get("widthCanvas"), n = this.get("heightCanvas"), r = this.get("widthStyle"), i = this.get("heightStyle"); e.style.width = r, e.style.height = i, e.setAttribute("width", t), e.setAttribute("height", n) }, getWidth: function () { var e = this.get("pixelRatio"), t = this.get("width"); return t * e }, getHeight: function () { var e = this.get("pixelRatio"), t = this.get("height"); return t * e }, changeSize: function (e, t) { var n = this.get("pixelRatio"), r = e * n, i = t * n; this.set("widthCanvas", r), this.set("heightCanvas", i), this.set("widthStyle", e + "px"), this.set("heightStyle", t + "px"), this.set("width", e), this.set("height", t), this._resize() }, getPointByClient: function (e, t) { var n = this.get("el"), r = this.get("pixelRatio") || 1, i = n.getBoundingClientRect(); return { x: (e - i.left) * r, y: (t - i.top) * r } }, getClientByPoint: function (e, t) { var n = this.get("el"), r = n.getBoundingClientRect(), i = this.get("pixelRatio") || 1; return { clientX: e / i + r.left, clientY: t / i + r.top } }, draw: function () { this._cfg.painter.draw(this) }, getShape: function (e, t, n) { return 3 === arguments.length && this._cfg.renderer.getShape ? this._cfg.renderer.getShape.call(this, e, t, n) : c.superclass.getShape.call(this, e, t) }, _drawSync: function () { this._cfg.painter.drawSync(this) }, destroy: function () { var e = this._cfg, t = e.containerDOM, n = e.canvasDOM; n && t && t.removeChild(n), e.timeline.stop(), c.superclass.destroy.call(this) } }), e.exports = c }, function (e, t, n) { var r = n(2); e.exports = { canFill: !1, canStroke: !1, initAttrs: function (e) { return this._attrs = { opacity: 1, fillOpacity: 1, strokeOpacity: 1, matrix: [1, 0, 0, 0, 1, 0, 0, 0, 1] }, this.attr(r.assign(this.getDefaultAttrs(), e)), this }, getDefaultAttrs: function () { return {} }, attr: function (e, t) { var n = this; if (0 === arguments.length) return n._attrs; if (r.isObject(e)) { for (var i in e) this._setAttr(i, e[i]); return n.clearBBox(), this._cfg.hasUpdate = !0, n } return 2 === arguments.length ? (this._setAttr(e, t), n.clearBBox(), this._cfg.hasUpdate = !0, n) : n._attrs[e] }, _setAttr: function (e, t) { var n = this, r = this._attrs; r[e] = t, "fill" !== e && "stroke" !== e ? "opacity" !== e ? "clip" === e && t ? n._setClip(t) : "path" === e && n._afterSetAttrPath ? n._afterSetAttrPath(t) : "transform" !== e ? "rotate" === e && n.rotateAtStart(t) : n.transform(t) : r.globalAlpha = t : r[e + "Style"] = t }, clearBBox: function () { this.setSilent("box", null) }, hasFill: function () { return this.canFill && this._attrs.fillStyle }, hasStroke: function () { return this.canStroke && this._attrs.strokeStyle }, _setClip: function (e) { e._cfg.renderer = this._cfg.renderer, e._cfg.canvas = this._cfg.canvas, e._cfg.parent = this._cfg.parent, e.hasFill = function () { return !0 } } } }, function (e, t, n) { var r = n(2); function i(e) { return 1 === e[0] && 0 === e[1] && 0 === e[3] && 1 === e[4] && 0 === e[6] && 0 === e[7] } function o(e) { return 0 === e[1] && 0 === e[3] && 0 === e[6] && 0 === e[7] } function a(e, t) { i(t) || (o(t) ? (e[0] *= t[0], e[4] *= t[4]) : r.mat3.multiply(e, e, t)) } e.exports = { initTransform: function () { }, resetMatrix: function () { this.attr("matrix", [1, 0, 0, 0, 1, 0, 0, 0, 1]) }, translate: function (e, t) { var n = this._attrs.matrix; return r.mat3.translate(n, n, [e, t]), this.clearTotalMatrix(), this.attr("matrix", n), this }, rotate: function (e) { var t = this._attrs.matrix; return r.mat3.rotate(t, t, e), this.clearTotalMatrix(), this.attr("matrix", t), this }, scale: function (e, t) { var n = this._attrs.matrix; return r.mat3.scale(n, n, [e, t]), this.clearTotalMatrix(), this.attr("matrix", n), this }, rotateAtStart: function (e) { var t = this._attrs.x || this._cfg.attrs.x, n = this._attrs.y || this._cfg.attrs.y; return Math.abs(e) > 2 * Math.PI && (e = e / 180 * Math.PI), this.transform([["t", -t, -n], ["r", e], ["t", t, n]]) }, move: function (e, t) { var n = this.get("x") || 0, r = this.get("y") || 0; return this.translate(e - n, t - r), this.set("x", e), this.set("y", t), this }, transform: function (e) { var t = this, n = this._attrs.matrix; return r.each(e, (function (e) { switch (e[0]) { case "t": t.translate(e[1], e[2]); break; case "s": t.scale(e[1], e[2]); break; case "r": t.rotate(e[1]); break; case "m": t.attr("matrix", r.mat3.multiply([], n, e[1])), t.clearTotalMatrix(); break; default: break } })), t }, setTransform: function (e) { return this.attr("matrix", [1, 0, 0, 0, 1, 0, 0, 0, 1]), this.transform(e) }, getMatrix: function () { return this.attr("matrix") }, setMatrix: function (e) { return this.attr("matrix", e), this.clearTotalMatrix(), this }, apply: function (e, t) { var n; return n = t ? this._getMatrixByRoot(t) : this.attr("matrix"), r.vec3.transformMat3(e, e, n), this }, _getMatrixByRoot: function (e) { var t = this; e = e || t; var n = t, i = []; while (n !== e) i.unshift(n), n = n.get("parent"); i.unshift(n); var o = [1, 0, 0, 0, 1, 0, 0, 0, 1]; return r.each(i, (function (e) { r.mat3.multiply(o, e.attr("matrix"), o) })), o }, getTotalMatrix: function () { var e = this._cfg.totalMatrix; if (!e) { e = [1, 0, 0, 0, 1, 0, 0, 0, 1]; var t = this._cfg.parent; if (t) { var n = t.getTotalMatrix(); a(e, n) } a(e, this.attr("matrix")), this._cfg.totalMatrix = e } return e }, clearTotalMatrix: function () { }, invert: function (e) { var t = this.getTotalMatrix(); if (o(t)) e[0] /= t[0], e[1] /= t[4]; else { var n = r.mat3.invert([], t); n && r.vec3.transformMat3(e, e, n) } return this }, resetTransform: function (e) { var t = this.attr("matrix"); i(t) || e.transform(t[0], t[1], t[3], t[4], t[6], t[7]) } } }, function (e, t, n) { var r = n(2), i = { delay: "delay", rotate: "rotate" }, o = { fill: "fill", stroke: "stroke", fillStyle: "fillStyle", strokeStyle: "strokeStyle" }; function a(e, t) { var n = {}, r = t._attrs; for (var i in e.attrs) n[i] = r[i]; return n } function s(e, t) { var n = { matrix: null, attrs: {} }, a = t._attrs; for (var s in e) if ("transform" === s) n.matrix = r.transform(t.getMatrix(), e[s]); else if ("rotate" === s) n.matrix = r.transform(t.getMatrix(), [["r", e[s]]]); else if ("matrix" === s) n.matrix = e[s]; else { if (o[s] && /^[r,R,L,l]{1}[\s]*\(/.test(e[s])) continue; i[s] || a[s] === e[s] || (n.attrs[s] = e[s]) } return n } function c(e, t) { var n = t.delay, i = Object.prototype.hasOwnProperty; return r.each(t.toAttrs, (function (t, o) { r.each(e, (function (e) { n < e.startTime + e.duration && i.call(e.toAttrs, o) && (delete e.toAttrs[o], delete e.fromAttrs[o]) })) })), t.toMatrix && r.each(e, (function (e) { n < e.startTime + e.duration && e.toMatrix && delete e.toMatrix })), e } e.exports = { animate: function (e, t, n, i, o) { void 0 === o && (o = 0); var l = this; l.set("animating", !0); var u = l.get("timeline"); u || (u = l.get("canvas").get("timeline"), l.setSilent("timeline", u)); var h = l.get("animators") || []; u._timer || u.initTimer(), r.isNumber(i) && (o = i, i = null), r.isFunction(n) ? (i = n, n = "easeLinear") : n = n || "easeLinear"; var f = s(e, l), d = { fromAttrs: a(f, l), toAttrs: f.attrs, fromMatrix: r.clone(l.getMatrix()), toMatrix: f.matrix, duration: t, easing: n, callback: i, delay: o, startTime: u.getTime(), id: r.uniqueId() }; h.length > 0 ? h = c(h, d) : u.addAnimator(l), h.push(d), l.setSilent("animators", h), l.setSilent("pause", { isPaused: !1 }) }, stopAnimate: function () { var e = this, t = this.get("animators"); r.each(t, (function (t) { e.attr(t.toAttrs), t.toMatrix && e.attr("matrix", t.toMatrix), t.callback && t.callback() })), this.setSilent("animating", !1), this.setSilent("animators", []) }, pauseAnimate: function () { var e = this, t = e.get("timeline"); return e.setSilent("pause", { isPaused: !0, pauseTime: t.getTime() }), e }, resumeAnimate: function () { var e = this, t = e.get("timeline"), n = t.getTime(), i = e.get("animators"), o = e.get("pause").pauseTime; return r.each(i, (function (e) { e.startTime = e.startTime + (n - o), e._paused = !1, e._pauseTime = null })), e.setSilent("pause", { isPaused: !1 }), e.setSilent("animators", i), e } } }, function (e, t, n) { var r = n(9); r.Arc = n(174), r.Circle = n(175), r.Dom = n(176), r.Ellipse = n(177), r.Fan = n(178), r.Image = n(179), r.Line = n(180), r.Marker = n(95), r.Path = n(181), r.Polygon = n(182), r.Polyline = n(183), r.Rect = n(184), r.Text = n(185), e.exports = r }, function (e, t, n) { var r = n(2), i = n(93), o = { arc: n(53), ellipse: n(173), line: n(52) }, a = r.createDom('<canvas width="500" height="500"></canvas>'), s = a.getContext("2d"); function c(e, t, n) { return n.createPath(s), s.isPointInPath(e, t) } var l = function (e, t) { var n = this._attrs, r = n.x, o = n.y, a = n.r, s = n.startAngle, c = n.endAngle, l = n.clockwise, u = this.getHitLineWidth(); return !!this.hasStroke() && i.arcline(r, o, a, s, c, l, u, e, t) }, u = function (e, t) { var n = this._attrs, r = n.x, o = n.y, a = n.r, s = this.getHitLineWidth(), c = this.hasFill(), l = this.hasStroke(); return c && l ? i.circle(r, o, a, e, t) || i.arcline(r, o, a, 0, 2 * Math.PI, !1, s, e, t) : c ? i.circle(r, o, a, e, t) : !!l && i.arcline(r, o, a, 0, 2 * Math.PI, !1, s, e, t) }, h = function (e, t) { var n = this._attrs, o = this.hasFill(), a = this.hasStroke(), s = n.x, c = n.y, l = n.rx, u = n.ry, h = this.getHitLineWidth(), f = l > u ? l : u, d = l > u ? 1 : l / u, p = l > u ? u / l : 1, v = [e, t, 1], m = [1, 0, 0, 0, 1, 0, 0, 0, 1]; r.mat3.scale(m, m, [d, p]), r.mat3.translate(m, m, [s, c]); var g = r.mat3.invert([], m); return r.vec3.transformMat3(v, v, g), o && a ? i.circle(0, 0, f, v[0], v[1]) || i.arcline(0, 0, f, 0, 2 * Math.PI, !1, h, v[0], v[1]) : o ? i.circle(0, 0, f, v[0], v[1]) : !!a && i.arcline(0, 0, f, 0, 2 * Math.PI, !1, h, v[0], v[1]) }, f = function (e, t) { var n = this, a = n.hasFill(), s = n.hasStroke(), c = n._attrs, l = c.x, u = c.y, h = c.rs, f = c.re, d = c.startAngle, p = c.endAngle, v = c.clockwise, m = [1, 0], g = [e - l, t - u], y = r.vec2.angleTo(m, g); function b() { var e = o.arc.nearAngle(y, d, p, v); if (r.isNumberEqual(y, e)) { var t = r.vec2.squaredLength(g); if (h * h <= t && t <= f * f) return !0 } return !1 } function x() { var r = n.getHitLineWidth(), o = { x: Math.cos(d) * h + l, y: Math.sin(d) * h + u }, a = { x: Math.cos(d) * f + l, y: Math.sin(d) * f + u }, s = { x: Math.cos(p) * h + l, y: Math.sin(p) * h + u }, c = { x: Math.cos(p) * f + l, y: Math.sin(p) * f + u }; return !!i.line(o.x, o.y, a.x, a.y, r, e, t) || (!!i.line(s.x, s.y, c.x, c.y, r, e, t) || (!!i.arcline(l, u, h, d, p, v, r, e, t) || !!i.arcline(l, u, f, d, p, v, r, e, t))) } return a && s ? b() || x() : a ? b() : !!s && x() }, d = function (e, t) { var n = this._attrs; if (this.get("toDraw") || !n.img) return !1; this._cfg.attrs && this._cfg.attrs.img === n.img || this._setAttrImg(); var r = n.x, o = n.y, a = n.width, s = n.height; return i.rect(r, o, a, s, e, t) }, p = function (e, t) { var n = this._attrs, r = n.x1, o = n.y1, a = n.x2, s = n.y2, c = this.getHitLineWidth(); return !!this.hasStroke() && i.line(r, o, a, s, c, e, t) }, v = function (e, t) { var n = this, i = n.get("segments"), o = n.hasFill(), a = n.hasStroke(); function s() { if (!r.isEmpty(i)) { for (var o = n.getHitLineWidth(), a = 0, s = i.length; a < s; a++)if (i[a].isInside(e, t, o)) return !0; return !1 } } return o && a ? c(e, t, n) || s() : o ? c(e, t, n) : !!a && s() }, m = function (e, t) { var n = this, r = n.hasFill(), o = n.hasStroke(); function a() { var r = n._attrs, o = r.points; if (o.length < 2) return !1; var a = n.getHitLineWidth(), s = o.slice(0); return o.length >= 3 && s.push(o[0]), i.polyline(s, a, e, t) } return r && o ? c(e, t, n) || a() : r ? c(e, t, n) : !!o && a() }, g = function (e, t) { var n = this._attrs, r = n.x, o = n.y, a = n.radius || n.r, s = this.getHitLineWidth(); return i.circle(r, o, a + s / 2, e, t) }, y = function (e, t) { var n = this, r = n._attrs; if (n.hasStroke()) { var o = r.points; if (o.length < 2) return !1; var a = r.lineWidth; return i.polyline(o, a, e, t) } return !1 }, b = function (e, t) { var n = this, r = n.hasFill(), o = n.hasStroke(); function a() { var r = n._attrs, o = r.x, a = r.y, s = r.width, c = r.height, l = r.radius, u = n.getHitLineWidth(); if (0 === l) { var h = u / 2; return i.line(o - h, a, o + s + h, a, u, e, t) || i.line(o + s, a - h, o + s, a + c + h, u, e, t) || i.line(o + s + h, a + c, o - h, a + c, u, e, t) || i.line(o, a + c + h, o, a - h, u, e, t) } return i.line(o + l, a, o + s - l, a, u, e, t) || i.line(o + s, a + l, o + s, a + c - l, u, e, t) || i.line(o + s - l, a + c, o + l, a + c, u, e, t) || i.line(o, a + c - l, o, a + l, u, e, t) || i.arcline(o + s - l, a + l, l, 1.5 * Math.PI, 2 * Math.PI, !1, u, e, t) || i.arcline(o + s - l, a + c - l, l, 0, .5 * Math.PI, !1, u, e, t) || i.arcline(o + l, a + c - l, l, .5 * Math.PI, Math.PI, !1, u, e, t) || i.arcline(o + l, a + l, l, Math.PI, 1.5 * Math.PI, !1, u, e, t) } return r && o ? c(e, t, n) || a() : r ? c(e, t, n) : !!o && a() }, x = function (e, t) { var n = this, r = n.getBBox(); if (n.hasFill() || n.hasStroke()) return i.box(r.minX, r.maxX, r.minY, r.maxY, e, t) }, w = function (e, t) { if (!this._cfg.el) return !1; var n = this._cfg.el.getBBox(); return i.box(n.x, n.x + n.width, n.y, n.y + n.height, e, t) }, _ = { arc: l, circle: u, dom: w, ellipse: h, fan: f, image: d, line: p, path: v, marker: g, polygon: m, polyline: y, rect: b, text: x }; e.exports = { isPointInPath: function (e, t) { var n = _[this.type]; return !!n && n.call(this, e, t) } } }, function (e, t, n) { var r = n(2), i = n(96), o = n(101), a = n(103), s = n(132), c = s.interpolate, l = s.interpolateArray, u = function (e) { this._animators = [], this._current = 0, this._timer = null, this.canvas = e }; function h(e, t, n) { var o = {}, a = t.toAttrs, s = t.fromAttrs, u = t.toMatrix; if (!e.get("destroyed")) { var h; for (var f in a) if (!r.isEqual(s[f], a[f])) if ("path" === f) { var d = a[f], p = s[f]; d.length > p.length ? (d = i.parsePathString(a[f]), p = i.parsePathString(s[f]), p = i.fillPathByDiff(p, d), p = i.formatPath(p, d), t.fromAttrs.path = p, t.toAttrs.path = d) : t.pathFormatted || (d = i.parsePathString(a[f]), p = i.parsePathString(s[f]), p = i.formatPath(p, d), t.fromAttrs.path = p, t.toAttrs.path = d, t.pathFormatted = !0), o[f] = []; for (var v = 0; v < d.length; v++) { for (var m = d[v], g = p[v], y = [], b = 0; b < m.length; b++)r.isNumber(m[b]) && g && r.isNumber(g[b]) ? (h = c(g[b], m[b]), y.push(h(n))) : y.push(m[b]); o[f].push(y) } } else h = c(s[f], a[f]), o[f] = h(n); if (u) { var x = l(t.fromMatrix, u), w = x(n); e.setMatrix(w) } e.attr(o) } } function f(e, t, n) { var r, i = t.startTime; if (n < i + t.delay || t.isPaused) return !1; var o = t.duration, s = t.easing; if (n = n - i - t.delay, t.toAttrs.repeat) r = n % o / o, r = a[s](r); else { if (r = n / o, !(r < 1)) return e.attr(t.toAttrs), t.toMatrix && e.setMatrix(t.toMatrix), !0; r = a[s](r) } return h(e, t, r), !1 } r.augment(u, { initTimer: function () { var e, t, n, r = this, i = this, a = !1; i._timer = o.timer((function (o) { if (i._current = o, r._animators.length > 0) { for (var s = r._animators.length - 1; s >= 0; s--)if (e = r._animators[s], e.get("destroyed")) i.removeAnimator(s); else { if (!e.get("pause").isPaused) { t = e.get("animators"); for (var c = t.length - 1; c >= 0; c--)n = t[c], a = f(e, n, o), a && (t.splice(c, 1), a = !1, n.callback && n.callback()) } 0 === t.length && i.removeAnimator(s) } r.canvas.draw() } })) }, addAnimator: function (e) { this._animators.push(e) }, removeAnimator: function (e) { this._animators.splice(e, 1) }, isAnimating: function () { return !!this._animators.length }, stop: function () { this._timer && this._timer.stop() }, stopAllAnimations: function () { this._animators.forEach((function (e) { e.stopAnimate() })), this._animators = [], this.canvas.draw() }, getTime: function () { return this._current } }), e.exports = u }, function (e, t, n) { e.exports = { canvas: n(352), svg: n(355) } }, function (e, t, n) { e.exports = { painter: n(353) } }, function (e, t, n) { var r = n(2), i = n(354), o = ["fillStyle", "font", "globalAlpha", "lineCap", "lineWidth", "lineJoin", "miterLimit", "shadowBlur", "shadowColor", "shadowOffsetX", "shadowOffsetY", "strokeStyle", "textAlign", "textBaseline", "lineDash", "lineDashOffset"], a = function () { function e(e) { if (!e) return null; var t = r.uniqueId("canvas_"), n = r.createDom('<canvas id="' + t + '"></canvas>'); return e.appendChild(n), this.type = "canvas", this.canvas = n, this.context = n.getContext("2d"), this.toDraw = !1, this } var t = e.prototype; return t.beforeDraw = function () { var e = this.canvas; this.context && this.context.clearRect(0, 0, e.width, e.height) }, t.draw = function (e) { var t = this; function n() { t.animateHandler = r.requestAnimationFrame((function () { t.animateHandler = void 0, t.toDraw && n() })), t.beforeDraw(); try { t._drawGroup(e) } catch (i) { console.warn("error in draw canvas, detail as:"), console.warn(i), t.toDraw = !1 } t.toDraw = !1 } t.animateHandler ? t.toDraw = !0 : n() }, t.drawSync = function (e) { this.beforeDraw(), this._drawGroup(e) }, t._drawGroup = function (e) { if (!e._cfg.removed && !e._cfg.destroyed && e._cfg.visible) { var t = this, n = e._cfg.children, r = null; this.setContext(e); for (var i = 0; i < n.length; i++)r = n[i], n[i].isGroup ? t._drawGroup(r) : t._drawShape(r); this.restoreContext(e) } }, t._drawShape = function (e) { e._cfg.removed || e._cfg.destroyed || !e._cfg.visible || (this.setContext(e), e.drawInner(this.context), this.restoreContext(e), e._cfg.attrs = e._attrs, e._cfg.hasUpdate = !1) }, t.setContext = function (e) { var t = this.context, n = e._attrs.clip; t.save(), n && (n.resetTransform(t), n.createPath(t), t.clip()), this.resetContext(e), e.resetTransform(t) }, t.restoreContext = function () { this.context.restore() }, t.resetContext = function (e) { var t = this.context, n = e._attrs; if (!e.isGroup) for (var a in n) if (o.indexOf(a) > -1) { var s = n[a]; "fillStyle" === a && (s = i.parseStyle(s, e, t)), "strokeStyle" === a && (s = i.parseStyle(s, e, t)), "lineDash" === a && t.setLineDash ? r.isArray(s) ? t.setLineDash(s) : r.isString(s) && t.setLineDash(s.split(" ")) : t[a] = s } }, e }(); e.exports = a }, function (e, t, n) { var r = n(2), i = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi, o = /[^\s\,]+/gi, a = /^l\s*\(\s*([\d.]+)\s*\)\s*(.*)/i, s = /^r\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)\s*(.*)/i, c = /^p\s*\(\s*([axyn])\s*\)\s*(.*)/i, l = /[\d.]+:(#[^\s]+|[^\)]+\))/gi, u = {}; function h(e, t) { var n = e.match(l); r.each(n, (function (e) { e = e.split(":"), t.addColorStop(e[0], e[1]) })) } function f(e, t, n) { var i, o, s = a.exec(e), c = r.mod(r.toRadian(parseFloat(s[1])), 2 * Math.PI), l = s[2], u = t.getBBox(); c >= 0 && c < .5 * Math.PI ? (i = { x: u.minX, y: u.minY }, o = { x: u.maxX, y: u.maxY }) : .5 * Math.PI <= c && c < Math.PI ? (i = { x: u.maxX, y: u.minY }, o = { x: u.minX, y: u.maxY }) : Math.PI <= c && c < 1.5 * Math.PI ? (i = { x: u.maxX, y: u.maxY }, o = { x: u.minX, y: u.minY }) : (i = { x: u.minX, y: u.maxY }, o = { x: u.maxX, y: u.minY }); var f = Math.tan(c), d = f * f, p = (o.x - i.x + f * (o.y - i.y)) / (d + 1) + i.x, v = f * (o.x - i.x + f * (o.y - i.y)) / (d + 1) + i.y, m = n.createLinearGradient(i.x, i.y, p, v); return h(l, m), m } function d(e, t, n) { var r = s.exec(e), i = parseFloat(r[1]), o = parseFloat(r[2]), a = parseFloat(r[3]), c = r[4]; if (0 === a) { var u = c.match(l); return u[u.length - 1].split(":")[1] } var f = t.getBBox(), d = f.maxX - f.minX, p = f.maxY - f.minY, v = Math.sqrt(d * d + p * p) / 2, m = n.createRadialGradient(f.minX + d * i, f.minY + p * o, a * v, f.minX + d / 2, f.minY + p / 2, v); return h(c, m), m } function p(e, t, n) { if (t.get("patternSource") && t.get("patternSource") === e) return t.get("pattern"); var r, i, o = c.exec(e), a = o[1], s = o[2]; function l() { r = n.createPattern(i, a), t.setSilent("pattern", r), t.setSilent("patternSource", e) } switch (a) { case "a": a = "repeat"; break; case "x": a = "repeat-x"; break; case "y": a = "repeat-y"; break; case "n": a = "no-repeat"; break; default: a = "no-repeat" }return i = new Image, s.match(/^data:/i) || (i.crossOrigin = "Anonymous"), i.src = s, i.complete ? l() : (i.onload = l, i.src = i.src), r } e.exports = { parsePath: function (e) { return e = e || [], r.isArray(e) ? e : r.isString(e) ? (e = e.match(i), r.each(e, (function (t, n) { if (t = t.match(o), t[0].length > 1) { var i = t[0].charAt(0); t.splice(1, 0, t[0].substr(1)), t[0] = i } r.each(t, (function (e, n) { isNaN(e) || (t[n] = +e) })), e[n] = t })), e) : void 0 }, parseStyle: function (e, t, n) { if (r.isString(e)) { if ("(" === e[1] || "(" === e[2]) { if ("l" === e[0]) return f(e, t, n); if ("r" === e[0]) return d(e, t, n); if ("p" === e[0]) return p(e, t, n) } return e } }, numberToColor: function (e) { var t = u[e]; if (!t) { for (var n = e.toString(16), r = n.length; r < 6; r++)n = "0" + n; t = "#" + n, u[e] = t } return t } } }, function (e, t, n) { e.exports = { painter: n(356), getShape: n(363) } }, function (e, t, n) { var r = n(2), i = n(37), o = i.parseRadius, a = n(95), s = n(357), c = { rect: "path", circle: "circle", line: "line", path: "path", marker: "path", text: "text", polygon: "polygon", image: "image", ellipse: "ellipse", dom: "foreignObject", fan: "path", group: "g" }, l = .3, u = { opacity: "opacity", fillStyle: "fill", strokeOpacity: "stroke-opacity", fillOpacity: "fill-opacity", strokeStyle: "stroke", x: "x", y: "y", r: "r", width: "width", height: "height", x1: "x1", x2: "x2", y1: "y1", y2: "y2", lineCap: "stroke-linecap", lineJoin: "stroke-linejoin", lineWidth: "stroke-width", lineDash: "stroke-dasharray", lineDashOffset: "stroke-dashoffset", miterLimit: "stroke-miterlimit", font: "font", fontSize: "font-size", fontStyle: "font-style", fontVariant: "font-variant", fontWeight: "font-weight", fontFamily: "font-family", startArrow: "marker-start", endArrow: "marker-end", path: "d", class: "class", id: "id", style: "style", preserveAspectRatio: "preserveAspectRatio" }, h = { top: "before-edge", middle: "central", bottom: "after-edge", alphabetic: "baseline", hanging: "hanging" }, f = { left: "left", start: "left", center: "middle", right: "end", end: "end" }, d = function () { function e(e) { if (!e) return null; var t = r.uniqueId("canvas_"), n = r.createDom('<svg id="' + t + '"></svg>'); return e.appendChild(n), this.type = "svg", this.canvas = n, this.context = new s(n), this.toDraw = !1, this } var t = e.prototype; return t.draw = function (e) { var t = this; function n() { t.animateHandler = r.requestAnimationFrame((function () { t.animateHandler = void 0, t.toDraw && n() })); try { e.resetMatrix(), t._drawGroup(e, !1) } catch (i) { console.warn("error in draw canvas, detail as:"), console.warn(i), t.toDraw = !1 } t.toDraw = !1 } t.animateHandler ? t.toDraw = !0 : n() }, t.drawSync = function (e) { this._drawChildren(e, !1) }, t._drawGroup = function (e, t) { var n = e._cfg; n.removed || n.destroyed || (!n.el && n.attrs && (t = !0), n.tobeRemoved && (r.each(n.tobeRemoved, (function (e) { e.parentNode && e.parentNode.removeChild(e) })), n.tobeRemoved = []), this._drawShape(e, t), n.children && n.children.length > 0 && this._drawChildren(e, t)) }, t._drawChildren = function (e, t) { var n, r = this, i = e._cfg.children; if (i) { if (e._cfg.el && !t) { var o = e._cfg.el.childNodes.length + 1; 0 !== o && o !== i.length && (t = !0) } for (var a = 0; a < i.length; a++)n = i[a], n.isGroup ? r._drawGroup(n, t) : r._drawShape(n, t) } }, t._drawShape = function (e, t) { var n = this, r = e._attrs, i = e._cfg, o = i.el; i.removed || i.destroyed ? o && o.parentNode.removeChild(i.el) : (t && o && (o.parentNode && o.parentNode.removeChild(o), o = null), !o && i.parent && (n._createDom(e), n._updateShape(e)), o = i.el, !1 !== i.visible ? (i.visible && o.hasAttribute("visibility") && o.removeAttribute("visibility"), i.hasUpdate && n._updateShape(e), r.clip && r.clip._cfg.hasUpdate && n._updateShape(r.clip)) : o.setAttribute("visibility", "hidden")) }, t._updateShape = function (e) { var t = this, n = e._attrs, i = e._cfg.attrs; if (i) if (e._cfg.el || t._createDom(e), "clip" in n && this._setClip(e, n.clip), ("shadowOffsetX" in n || "shadowOffsetY" in n || "shadowBlur" in n || "shadowColor" in n) && this._setShadow(e), "text" !== e.type) { for (var o in "fan" === e.type && t._updateFan(e), "marker" === e.type && e._cfg.el.setAttribute("d", t._assembleMarker(n)), "rect" === e.type && e._cfg.el.setAttribute("d", t._assembleRect(n)), n) n[o] !== i[o] && t._setAttribute(e, o, n[o]); e._cfg.attrs = r.deepMix({}, e._attrs), e._cfg.hasUpdate = !1 } else t._updateText(e) }, t._setAttribute = function (e, t, n) { var i = e.type, o = e._attrs, a = e._cfg.el, s = this.context; if ("marker" !== i && "rect" !== i || !~["x", "y", "radius", "r"].indexOf(t)) if (~["circle", "ellipse"].indexOf(i) && ~["x", "y"].indexOf(t)) a.setAttribute("c" + t, parseInt(n, 10)); else { if ("polygon" === i && "points" === t) return n && 0 !== n.length || (n = ""), r.isArray(n) && (n = n.map((function (e) { return e[0] + "," + e[1] })), n = n.join(" ")), void a.setAttribute("points", n); if ("path" === t && r.isArray(n)) a.setAttribute("d", this._formatPath(n)); else if ("img" !== t) { if ("transform" === t) return n ? void this._setTransform(e) : void a.removeAttribute("transform"); if ("rotate" === t) return n ? void this._setTransform(e) : void a.removeAttribute("transform"); if ("matrix" !== t) if ("fillStyle" !== t && "strokeStyle" !== t) { if ("clip" !== t) if (~t.indexOf("Arrow")) if (t = u[t], n) { var c = null; c = "boolean" === typeof n ? s.getDefaultArrow(o, t) : s.addArrow(o, t), a.setAttribute(t, "url(#" + c + ")"), e._cfg[t] = c } else e._cfg[t] = null, a.removeAttribute(t); else "html" === t && ("string" === typeof n ? a.innerHTML = n : (a.innerHTML = "", a.appendChild(n))), u[t] && a.setAttribute(u[t], n) } else this._setColor(e, t, n); else this._setTransform(e) } else this._setImage(e, n) } }, t._createDom = function (e) { var t = c[e.type], n = e._attrs; if (!t) throw new Error("the type" + e.type + "is not supported by svg"); var r = document.createElementNS("http://www.w3.org/2000/svg", t); return e._cfg.el = r, e._cfg.parent && e._cfg.parent.get("el").appendChild(r), e._cfg.attrs = {}, "text" === e.type ? (r.setAttribute("paint-order", "stroke"), r.setAttribute("style", "stroke-linecap:butt; stroke-linejoin:miter;")) : (n.stroke || n.strokeStyle || r.setAttribute("stroke", "none"), n.fill || n.fillStyle || r.setAttribute("fill", "none")), r }, t._assembleMarker = function (e) { var t = e.r; if ("undefined" === typeof e.r && (t = e.radius), isNaN(Number(e.x)) || isNaN(Number(e.y)) || isNaN(Number(t))) return ""; var n = ""; return n = "function" === typeof e.symbol ? e.symbol(e.x, e.y, t) : a.Symbols[e.symbol || "circle"](e.x, e.y, t), r.isArray(n) && (n = n.map((function (e) { return e.join(" ") })).join("")), n }, t._assembleRect = function (e) { var t = e.x, n = e.y, i = e.width, a = e.height, s = e.radius; if (!s) return "M " + t + "," + n + " l " + i + ",0 l 0," + a + " l" + -i + " 0 z"; var c = o(s); r.isArray(s) ? 1 === s.length ? c.r1 = c.r2 = c.r3 = c.r4 = s[0] : 2 === s.length ? (c.r1 = c.r3 = s[0], c.r2 = c.r4 = s[1]) : 3 === s.length ? (c.r1 = s[0], c.r2 = c.r4 = s[1], c.r3 = s[2]) : (c.r1 = s[0], c.r2 = s[1], c.r3 = s[2], c.r4 = s[3]) : c.r1 = c.r2 = c.r3 = c.r4 = s; var l = [["M " + (t + c.r1) + "," + n], ["l " + (i - c.r1 - c.r2) + ",0"], ["a " + c.r2 + "," + c.r2 + ",0,0,1," + c.r2 + "," + c.r2], ["l 0," + (a - c.r2 - c.r3)], ["a " + c.r3 + "," + c.r3 + ",0,0,1," + -c.r3 + "," + c.r3], ["l " + (c.r3 + c.r4 - i) + ",0"], ["a " + c.r4 + "," + c.r4 + ",0,0,1," + -c.r4 + "," + -c.r4], ["l 0," + (c.r4 + c.r1 - a)], ["a " + c.r1 + "," + c.r1 + ",0,0,1," + c.r1 + "," + -c.r1], ["z"]]; return l.join(" ") }, t._formatPath = function (e) { return e = e.map((function (e) { return e.join(" ") })).join(""), ~e.indexOf("NaN") ? "" : e }, t._setTransform = function (e) { for (var t = e._attrs.matrix, n = e._cfg.el, r = [], i = 0; i < 9; i += 3)r.push(t[i] + "," + t[i + 1]); r = r.join(","), -1 === r.indexOf("NaN") ? n.setAttribute("transform", "matrix(" + r + ")") : console.warn("invalid matrix:", t) }, t._setImage = function (e, t) { var n = e._attrs, i = e._cfg.el; if (r.isString(t)) i.setAttribute("href", t); else if (t instanceof Image) n.width || (i.setAttribute("width", t.width), e._attrs.width = t.width), n.height || (i.setAttribute("height", t.height), e._attrs.height = t.height), i.setAttribute("href", t.src); else if (t instanceof HTMLElement && r.isString(t.nodeName) && "CANVAS" === t.nodeName.toUpperCase()) i.setAttribute("href", t.toDataURL()); else if (t instanceof ImageData) { var o = document.createElement("canvas"); o.setAttribute("width", t.width), o.setAttribute("height", t.height), o.getContext("2d").putImageData(t, 0, 0), n.width || (i.setAttribute("width", t.width), e._attrs.width = t.width), n.height || (i.setAttribute("height", t.height), e._attrs.height = t.height), i.setAttribute("href", o.toDataURL()) } }, t._updateFan = function (e) { function t(e, t, n) { return { x: t * Math.cos(e) + n.x, y: t * Math.sin(e) + n.y } } var n = e._attrs, i = e._cfg, o = { x: n.x, y: n.y }, a = [], s = n.startAngle, c = n.endAngle; r.isNumberEqual(c - s, 2 * Math.PI) && (c -= 1e-5); var l = t(s, n.re, o), u = t(c, n.re, o), h = c > s ? 1 : 0, f = Math.abs(c - s) > Math.PI ? 1 : 0, d = n.rs, p = n.re, v = t(s, n.rs, o), m = t(c, n.rs, o); n.rs > 0 ? (a.push("M " + u.x + "," + u.y), a.push("L " + m.x + "," + m.y), a.push("A " + d + "," + d + ",0," + f + "," + (1 === h ? 0 : 1) + "," + v.x + "," + v.y), a.push("L " + l.x + " " + l.y)) : (a.push("M " + o.x + "," + o.y), a.push("L " + l.x + "," + l.y)), a.push("A " + p + "," + p + ",0," + f + "," + h + "," + u.x + "," + u.y), n.rs > 0 ? a.push("L " + m.x + "," + m.y) : a.push("Z"), i.el.setAttribute("d", a.join(" ")) }, t._updateText = function (e) { var t = this, n = e._attrs, r = e._cfg.attrs, i = e._cfg.el; for (var o in this._setFont(e), n) if (n[o] !== r[o]) { if ("text" === o) { t._setText(e, "" + n[o]); continue } if ("fillStyle" === o || "strokeStyle" === o) { this._setColor(e, o, n[o]); continue } if ("matrix" === o) { this._setTransform(e); continue } u[o] && i.setAttribute(u[o], n[o]) } e._cfg.attrs = Object.assign({}, e._attrs), e._cfg.hasUpdate = !1 }, t._setFont = function (e) { var t = e.get("el"), n = e._attrs, r = n.fontSize; t.setAttribute("alignment-baseline", h[n.textBaseline] || "baseline"), t.setAttribute("text-anchor", f[n.textAlign] || "left"), r && +r < 12 && (n.matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1], e.transform([["t", -n.x, -n.y], ["s", +r / 12, +r / 12], ["t", n.x, n.y]])) }, t._setText = function (e, t) { var n = e._cfg.el, i = e._attrs.textBaseline || "bottom"; if (t) if (~t.indexOf("\n")) { var o = e._attrs.x, a = t.split("\n"), s = a.length - 1, c = ""; r.each(a, (function (e, t) { 0 === t ? "alphabetic" === i ? c += '<tspan x="' + o + '" dy="' + -s + 'em">' + e + "</tspan>" : "top" === i ? c += '<tspan x="' + o + '" dy="0.9em">' + e + "</tspan>" : "middle" === i ? c += '<tspan x="' + o + '" dy="' + -(s - 1) / 2 + 'em">' + e + "</tspan>" : "bottom" === i ? c += '<tspan x="' + o + '" dy="-' + (s + l) + 'em">' + e + "</tspan>" : "hanging" === i && (c += '<tspan x="' + o + '" dy="' + (-(s - 1) - l) + 'em">' + e + "</tspan>") : c += '<tspan x="' + o + '" dy="1em">' + e + "</tspan>" })), n.innerHTML = c } else n.innerHTML = t; else n.innerHTML = "" }, t._setClip = function (e, t) { var n = e._cfg.el; if (t) if (n.hasAttribute("clip-path")) t._cfg.hasUpdate && this._updateShape(t); else { this._createDom(t), this._updateShape(t); var r = this.context.addClip(t); n.setAttribute("clip-path", "url(#" + r + ")") } else n.removeAttribute("clip-path") }, t._setColor = function (e, t, n) { var r = e._cfg.el, i = this.context; if (n) if (n = n.trim(), /^[r,R,L,l]{1}[\s]*\(/.test(n)) { var o = i.find("gradient", n); o || (o = i.addGradient(n)), r.setAttribute(u[t], "url(#" + o + ")") } else if (/^[p,P]{1}[\s]*\(/.test(n)) { var a = i.find("pattern", n); a || (a = i.addPattern(n)), r.setAttribute(u[t], "url(#" + a + ")") } else r.setAttribute(u[t], n); else r.setAttribute(u[t], "none") }, t._setShadow = function (e) { var t = e._cfg.el, n = e._attrs, r = { dx: n.shadowOffsetX, dy: n.shadowOffsetY, blur: n.shadowBlur, color: n.shadowColor }; if (r.dx || r.dy || r.blur || r.color) { var i = this.context.find("filter", r); i || (i = this.context.addShadow(r, this)), t.setAttribute("filter", "url(#" + i + ")") } else t.removeAttribute("filter") }, e }(); e.exports = d }, function (e, t, n) { var r = n(2), i = n(358), o = n(359), a = n(360), s = n(361), c = n(362), l = function () { function e(e) { var t = document.createElementNS("http://www.w3.org/2000/svg", "defs"), n = r.uniqueId("defs_"); t.id = n, e.appendChild(t), this.children = [], this.defaultArrow = {}, this.el = t, this.canvas = e } var t = e.prototype; return t.find = function (e, t) { for (var n = this.children, r = null, i = 0; i < n.length; i++)if (n[i].match(e, t)) { r = n[i].id; break } return r }, t.findById = function (e) { for (var t = this.children, n = null, r = 0; r < t.length; r++)if (t[r].id === e) { n = t[r]; break } return n }, t.add = function (e) { this.children.push(e), e.canvas = this.canvas, e.parent = this }, t.getDefaultArrow = function (e, t) { var n = e.stroke || e.strokeStyle; if (this.defaultArrow[n]) return this.defaultArrow[n].id; var r = new a(e, t); return this.defaultArrow[n] = r, this.el.appendChild(r.el), r.id }, t.addGradient = function (e) { var t = new i(e); return this.el.appendChild(t.el), this.add(t), t.id }, t.addArrow = function (e, t) { var n = new a(e, t); return this.el.appendChild(n.el), n.id }, t.addShadow = function (e) { var t = new o(e); return this.el.appendChild(t.el), this.add(t), t.id }, t.addPattern = function (e) { var t = new c(e); return this.el.appendChild(t.el), this.add(t), t.id }, t.addClip = function (e) { var t = new s(e); return this.el.appendChild(t.el), this.add(t), t.id }, e }(); e.exports = l }, function (e, t, n) { var r = n(2), i = /^l\s*\(\s*([\d.]+)\s*\)\s*(.*)/i, o = /^r\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)\s*(.*)/i, a = /[\d.]+:(#[^\s]+|[^\)]+\))/gi; function s(e) { var t = e.match(a); if (!t) return ""; var n = ""; return t.sort((function (e, t) { return e = e.split(":"), t = t.split(":"), Number(e[0]) - Number(t[0]) })), r.each(t, (function (e) { e = e.split(":"), n += '<stop offset="' + e[0] + '" stop-color="' + e[1] + '"></stop>' })), n } function c(e, t) { var n, o, a = i.exec(e), c = r.mod(r.toRadian(parseFloat(a[1])), 2 * Math.PI), l = a[2]; c >= 0 && c < .5 * Math.PI ? (n = { x: 0, y: 0 }, o = { x: 1, y: 1 }) : .5 * Math.PI <= c && c < Math.PI ? (n = { x: 1, y: 0 }, o = { x: 0, y: 1 }) : Math.PI <= c && c < 1.5 * Math.PI ? (n = { x: 1, y: 1 }, o = { x: 0, y: 0 }) : (n = { x: 0, y: 1 }, o = { x: 1, y: 0 }); var u = Math.tan(c), h = u * u, f = (o.x - n.x + u * (o.y - n.y)) / (h + 1) + n.x, d = u * (o.x - n.x + u * (o.y - n.y)) / (h + 1) + n.y; t.setAttribute("x1", n.x), t.setAttribute("y1", n.y), t.setAttribute("x2", f), t.setAttribute("y2", d), t.innerHTML = s(l) } function l(e, t) { var n = o.exec(e), r = parseFloat(n[1]), i = parseFloat(n[2]), a = parseFloat(n[3]), c = n[4]; t.setAttribute("cx", r), t.setAttribute("cy", i), t.setAttribute("r", a), t.innerHTML = s(c) } var u = function () { function e(e) { var t = null, n = r.uniqueId("gradient_"); return "l" === e.toLowerCase()[0] ? (t = document.createElementNS("http://www.w3.org/2000/svg", "linearGradient"), c(e, t)) : (t = document.createElementNS("http://www.w3.org/2000/svg", "radialGradient"), l(e, t)), t.setAttribute("id", n), this.el = t, this.id = n, this.cfg = e, this } var t = e.prototype; return t.match = function (e, t) { return this.cfg === t }, e }(); e.exports = u }, function (e, t, n) { var r = n(2), i = { shadowColor: "color", shadowOpacity: "opacity", shadowBlur: "blur", shadowOffsetX: "dx", shadowOffsetY: "dy" }, o = { x: "-40%", y: "-40%", width: "200%", height: "200%" }, a = function () { function e(e) { this.type = "filter"; var t = document.createElementNS("http://www.w3.org/2000/svg", "filter"); return r.each(o, (function (e, n) { t.setAttribute(n, e) })), this.el = t, this.id = r.uniqueId("filter_"), this.el.id = this.id, this.cfg = e, this._parseShadow(e, t), this } var t = e.prototype; return t.match = function (e, t) { if (this.type !== e) return !1; var n = !0, i = this.cfg; return r.each(Object.keys(i), (function (e) { if (i[e] !== t[e]) return n = !1, !1 })), n }, t.update = function (e, t) { var n = this.cfg; return n[i[e]] = t, this._parseShadow(n, this.el), this }, t._parseShadow = function (e, t) { var n = '<feDropShadow \n      dx="' + (e.dx || 0) + '" \n      dy="' + (e.dy || 0) + '" \n      stdDeviation="' + (e.blur ? e.blur / 10 : 0) + '"\n      flood-color="' + (e.color ? e.color : "#000") + '"\n      flood-opacity="' + (e.opacity ? e.opacity : 1) + '"\n      />'; t.innerHTML = n }, e }(); e.exports = a }, function (e, t, n) { var r = n(2), i = function () { function e(e, t) { var n = document.createElementNS("http://www.w3.org/2000/svg", "marker"), i = r.uniqueId("marker_"); n.setAttribute("id", i); var o = document.createElementNS("http://www.w3.org/2000/svg", "path"); return o.setAttribute("stroke", "none"), o.setAttribute("fill", e.stroke || "#000"), n.appendChild(o), n.setAttribute("overflow", "visible"), n.setAttribute("orient", "auto-start-reverse"), this.el = n, this.child = o, this.id = i, this.cfg = e["marker-start" === t ? "startArrow" : "endArrow"], this.stroke = e.stroke || "#000", !0 === this.cfg ? this._setDefaultPath(t, o) : this._setMarker(e.lineWidth, o), this } var t = e.prototype; return t.match = function () { return !1 }, t._setDefaultPath = function (e, t) { var n = this.el; t.setAttribute("d", "M0,0 L6,3 L0,6 L3,3Z"), n.setAttribute("refX", 3), n.setAttribute("refY", 3) }, t._setMarker = function (e, t) { var n = this.el, i = this.cfg.path, o = this.cfg.d; r.isArray(i) && (i = i.map((function (e) { return e.join(" ") })).join("")), t.setAttribute("d", i), n.appendChild(t), o && n.setAttribute("refX", o / e) }, t.update = function (e) { var t = this.child; t.attr ? t.attr("fill", e) : t.setAttribute("fill", e) }, e }(); e.exports = i }, function (e, t, n) { var r = n(2), i = function () { function e(e) { this.type = "clip"; var t = document.createElementNS("http://www.w3.org/2000/svg", "clipPath"); this.el = t, this.id = r.uniqueId("clip_"), t.id = this.id; var n = e._cfg.el; return t.appendChild(n.cloneNode(!0)), this.cfg = e, this } var t = e.prototype; return t.match = function () { return !1 }, t.remove = function () { var e = this.el; e.parentNode.removeChild(e) }, e }(); e.exports = i }, function (e, t, n) { var r = n(2), i = /^p\s*\(\s*([axyn])\s*\)\s*(.*)/i, o = function () { function e(e) { var t = document.createElementNS("http://www.w3.org/2000/svg", "pattern"); t.setAttribute("patternUnits", "userSpaceOnUse"); var n = document.createElementNS("http://www.w3.org/2000/svg", "image"); t.appendChild(n); var o = r.uniqueId("pattern_"); t.id = o, this.el = t, this.id = o, this.cfg = e; var a = i.exec(e), s = a[2]; n.setAttribute("href", s); var c = new Image; function l() { console.log(c.width, c.height), t.setAttribute("width", c.width), t.setAttribute("height", c.height) } return s.match(/^data:/i) || (c.crossOrigin = "Anonymous"), c.src = s, c.complete ? l() : (c.onload = l, c.src = c.src), this } var t = e.prototype; return t.match = function (e, t) { return this.cfg === t }, e }(); e.exports = o }, function (e, t) { var n = { svg: "svg", circle: "circle", rect: "rect", text: "text", path: "path", foreignObject: "foreignObject", polygon: "polygon", ellipse: "ellipse", image: "image" }; e.exports = function (e, t, r) { var i = r.target || r.srcElement; if (!n[i.tagName]) { var o = i.parentNode; while (o && !n[o.tagName]) o = o.parentNode; i = o } return this._cfg.el === i ? this : this.find((function (e) { return e._cfg && e._cfg.el === i })) } }, function (e, t, n) { var r = n(188); function i(e, t, n, r) { var i = e.getBBox(), o = i.width, a = i.height, s = { x: t, y: n, textAlign: "center" }; switch (r) { case 0: s.y -= a / 2, s.textAlign = "left"; break; case 1: s.y -= a / 2, s.textAlign = "right"; break; case 2: s.y += a / 2, s.textAlign = "right"; break; case 3: s.y += a / 2, s.textAlign = "left"; break; case 5: s.y -= a / 2; break; case 6: s.y += a / 2; break; case 7: s.x += o / 2, s.textAlign = "left"; break; case 8: s.x -= o / 2, s.textAlign = "right"; break; default: break }return e.attr(s), e.getBBox() } e.exports = function (e) { for (var t, n, o, a, s, c = new r, l = [], u = 0; u < e.length; u++) { n = e[u], o = n.attr("x"), a = n.attr("y"), s = !1; for (var h = 0; h < 8; h++)if (t = i(n, o, a, h), c.hasGap(t)) { c.fillGap(t), s = !0; break } s || l.push(n) } for (var f = 0; f < l.length; f++)l[f].remove(); return s } }, function (e, t, n) { var r = n(188), i = 20; function o(e, t) { var n, r = -1, o = e.attr("x"), a = e.attr("y"), s = e.getBBox(), c = Math.sqrt(s.width * s.width + s.height * s.height), l = -r, u = 0, h = 0, f = function (e) { return [(e *= .1) * Math.cos(e), e * Math.sin(e)] }; if (t.hasGap(s)) return t.fillGap(s), !0; var d = !1, p = 0; while (Math.min(Math.abs(u), Math.abs(h)) < c && p < i) if (n = f(l += r), u = ~~n[0], h = ~~n[1], e.attr({ x: o + u, y: a + h }), p++, t.hasGap(e.getBBox())) { t.fillGap(s), d = !0; break } return d } e.exports = function (e) { for (var t, n = new r, i = [], a = 0; a < e.length; a++)t = e[a], o(t, n) || i.push(t); for (var s = 0; s < i.length; s++)i[s].remove() } }, function (e, t) { e.exports = function (e, t) { for (var n, r, i = [], o = 0; o < e.length; o++)n = e[o].getBBox(), r = t[o].getBBox(), (n.width > r.width || n.height > r.height || n.width * n.height > r.width * r.height) && i.push(e[o]); for (var a = 0; a < i.length; a++)i[a].remove() } }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(35), h = l.MatrixUtil.vec2, f = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { type: "circle", tickInterval: null, startAngle: -Math.PI / 2, endAngle: 3 * Math.PI / 2, line: { lineWidth: 1, stroke: "#C0D0E0" }, tickLine: { lineWidth: 1, stroke: "#C0D0E0", length: 5 }, _labelOffset: 5 }) }, n.parseTick = function (e, t, n) { return { text: e, value: t / n } }, n._getCirclePoint = function (e, t) { var n = this, r = n.get("center"); return t = t || n.get("radius"), { x: r.x + Math.cos(e) * t, y: r.y + Math.sin(e) * t } }, n.getTickPoint = function (e) { var t = this, n = t.get("startAngle"), r = t.get("endAngle"), i = n + (r - n) * e; return t._getCirclePoint(i) }, n.getSideVector = function (e, t) { var n = this, r = n.get("center"), i = [t.x - r.x, t.y - r.y]; if (!l.isNil(e)) { var o = h.length(i); h.scale(i, i, e / o) } return i }, n.getSidePoint = function (e, t) { var n = this, r = n.getSideVector(t, e); return { x: e.x + r[0], y: e.y + r[1] } }, n.getTickEnd = function (e, t) { var n = this, r = n.get("tickLine"); return t = t || r.length, n.getSidePoint(e, t) }, n.getTextAnchor = function (e) { var t; return l.snapEqual(e[0], 0) ? t = "center" : e[0] > 0 ? t = "left" : e[0] < 0 && (t = "right"), t }, n.getLinePath = function () { var e = this, t = e.get("center"), n = t.x, r = t.y, i = e.get("radius"), o = i, a = e.get("startAngle"), s = e.get("endAngle"), c = e.get("inner"), l = []; if (Math.abs(s - a) === 2 * Math.PI) l = [["M", n, r], ["m", 0, -o], ["a", i, o, 0, 1, 1, 0, 2 * o], ["a", i, o, 0, 1, 1, 0, -2 * o], ["z"]]; else { var u = e._getCirclePoint(a), h = e._getCirclePoint(s), f = Math.abs(s - a) > Math.PI ? 1 : 0, d = a > s ? 0 : 1; if (c) { var p = e.getSideVector(c * i, u), v = e.getSideVector(c * i, h), m = { x: p[0] + n, y: p[1] + r }, g = { x: v[0] + n, y: v[1] + r }; l = [["M", m.x, m.y], ["L", u.x, u.y], ["A", i, o, 0, f, d, h.x, h.y], ["L", g.x, g.y], ["A", i * c, o * c, 0, f, Math.abs(d - 1), m.x, m.y]] } else l = [["M", n, r], ["L", u.x, u.y], ["A", i, o, 0, f, d, h.x, h.y], ["L", n, r]] } return l }, n.addLabel = function (t, n, r) { var i = this, o = i.get("label").offset || i.get("_labelOffset") || .001; n = i.getSidePoint(n, o), e.prototype.addLabel.call(this, t, n, r) }, n.autoRotateLabels = function () { var e = this, t = e.get("ticks"), n = e.get("labelRenderer"); if (n && t.length > 12) { var r = e.get("radius"), i = e.get("startAngle"), o = e.get("endAngle"), a = o - i, s = a / (t.length - 1), c = Math.sin(s / 2) * r * 2, u = e.getMaxLabelWidth(n); l.each(n.get("group").get("children"), (function (e, n) { var r = t[n], o = r.value * a + i, s = o % (2 * Math.PI); u < c ? (s <= 0 && (o += Math.PI), s > Math.PI && (o -= Math.PI), o -= Math.PI / 2, e.attr("textAlign", "center")) : s > Math.PI / 2 ? o -= Math.PI : s < Math.PI / 2 * -1 && (o += Math.PI), e.rotateAtStart(o) })) } }, t }(u); e.exports = f }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(35), h = l.MatrixUtil, f = l.PathUtil, d = h.vec2, p = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { inner: 0, type: "helix", line: { lineWidth: 1, stroke: "#C0D0E0" }, tickLine: { lineWidth: 1, stroke: "#C0D0E0", length: 5 }, startAngle: 1.25 * Math.PI, endAngle: 7.25 * Math.PI, a: 0, center: null, axisStart: null, crp: [] }) }, n.getLinePath = function () { var e = this, t = e.get("crp"), n = e.get("axisStart"), r = f.catmullRomToBezier(t); return r.unshift(["M", n.x, n.y]), r }, n.getTickPoint = function (e) { var t = this, n = t.get("startAngle"), r = t.get("endAngle"), i = n + (r - n) * e; return t._getHelixPoint(i) }, n._getHelixPoint = function (e) { var t = this, n = t.get("center"), r = t.get("a"), i = r * e + t.get("inner"); return { x: n.x + Math.cos(e) * i, y: n.y + Math.sin(e) * i } }, n.getSideVector = function (e, t) { var n = this, r = n.get("center"), i = [t.x - r.x, t.y - r.y]; if (e) { var o = d.length(i); d.scale(i, i, e / o) } return i }, n.getSidePoint = function (e, t) { var n = this, r = n.getSideVector(t, e); return { x: e.x + r[0], y: e.y + r[1] } }, n.getTickEnd = function (e, t) { var n = this, r = n.get("tickLine"); return t = t || r.length, n.getSidePoint(e, t) }, t }(u); e.exports = p }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(35), u = n(4), h = u.MatrixUtil, f = h.vec2, d = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return u.mix({}, t, { x: null, y: null, line: { lineWidth: 1, stroke: "#C0D0E0" }, tickLine: { lineWidth: 1, stroke: "#C0D0E0", length: 5 }, isVertical: !1, start: null, end: null }) }, n._getAvgLabelLength = function (e) { var t = e.get("group").get("children"); return t[1].attr("x") - t[0].attr("x") }, n._getAvgLabelHeightSpace = function (e) { var t = e.get("group").get("children"); return t[1].attr("y") - t[0].attr("y") }, n.getSideVector = function (e) { var t = this, n = t.get("isVertical"), r = t.get("factor"); if (!u.isNumber(e)) return [0, 0]; var i = t.get("start"), o = t.get("end"), a = t.getAxisVector(), s = f.normalize([], a), c = !1; (n && i.y < o.y || !n && i.x > o.x) && (c = !0); var l = f.vertical([], s, c); return f.scale([], l, e * r) }, n.getAxisVector = function () { var e = this.get("start"), t = this.get("end"); return [t.x - e.x, t.y - e.y] }, n.getLinePath = function () { var e = this, t = e.get("start"), n = e.get("end"), r = []; return r.push(["M", t.x, t.y]), r.push(["L", n.x, n.y]), r }, n.getTickEnd = function (e, t) { var n = this, r = n.getSideVector(t); return { x: e.x + r[0], y: e.y + r[1] } }, n.getTickPoint = function (e) { var t = this, n = t.get("start"), r = t.get("end"), i = r.x - n.x, o = r.y - n.y; return { x: n.x + i * e, y: n.y + o * e } }, n.renderTitle = function () { var e = this, t = e.get("title"), n = e.getTickPoint(.5), r = t.offset; if (u.isNil(r)) { r = 20; var i = e.get("labelsGroup"); if (i) { var o = e.getMaxLabelWidth(i), a = e.get("label").offset || e.get("_labelOffset"); r += o + a } } var s = t.textStyle, c = u.mix({}, s); if (t.text) { var l = e.getAxisVector(); if (t.autoRotate && u.isNil(s.rotate)) { var h = 0; if (!u.snapEqual(l[1], 0)) { var d = [1, 0], p = [l[0], l[1]]; h = f.angleTo(p, d, !0) } c.rotate = h * (180 / Math.PI) } else u.isNil(s.rotate) || (c.rotate = s.rotate / 180 * Math.PI); var v, m = e.getSideVector(r), g = t.position; v = "start" === g ? { x: this.get("start").x + m[0], y: this.get("start").y + m[1] } : "end" === g ? { x: this.get("end").x + m[0], y: this.get("end").y + m[1] } : { x: n.x + m[0], y: n.y + m[1] }, c.x = v.x, c.y = v.y, c.text = t.text; var y = e.get("group"), b = y.addShape("Text", { zIndex: 2, attrs: c }); b.name = "axis-title", e.get("appendInfo") && b.setSilent("appendInfo", e.get("appendInfo")) } }, n.autoRotateLabels = function () { var e = this, t = e.get("labelRenderer"), n = e.get("title"); if (t) { var r = t.get("group"), i = r.get("children"), o = e.get("label").offset, a = 12, s = n ? n.offset : 48; if (s < 0) return; var c, l, h = e.getAxisVector(); if (u.snapEqual(h[0], 0) && n && n.text) l = e.getMaxLabelWidth(t), l > s - o - a && (c = -1 * Math.acos((s - o - a) / l)); else if (u.snapEqual(h[1], 0) && i.length > 1) { var f = Math.abs(e._getAvgLabelLength(t)); l = e.getMaxLabelWidth(t), l > f && (c = Math.asin(1.25 * (s - o - a) / l)) } if (c) { var d = e.get("factor"); u.each(i, (function (e) { e.rotateAtStart(c), u.snapEqual(h[1], 0) && (d > 0 ? e.attr("textAlign", "left") : e.attr("textAlign", "right")) })) } } }, n.autoHideLabels = function () { var e, t, n = this, r = n.get("labelRenderer"), i = 8; if (r) { var o = r.get("group"), a = o.get("children"), s = n.getAxisVector(); if (a.length < 2) return; if (u.snapEqual(s[0], 0)) { var c = n.getMaxLabelHeight(r) + i, l = Math.abs(n._getAvgLabelHeightSpace(r)); c > l && (e = c, t = l) } else if (u.snapEqual(s[1], 0) && a.length > 1) { var h = n.getMaxLabelWidth(r) + i, f = Math.abs(n._getAvgLabelLength(r)); h > f && (e = h, t = f) } if (e && t) { var d = Math.ceil(e / t); u.each(a, (function (e, t) { t % d !== 0 && e.attr("text", "") })) } } }, t }(l); e.exports = d }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(35), h = l.MatrixUtil, f = l.PathUtil, d = h.vec2, p = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { type: "polyline" }) }, n.getLinePath = function () { var e = this, t = e.get("tickPoints"), n = e.get("start"), r = e.get("end"), i = []; i.push(n.x), i.push(n.y), l.each(t, (function (e) { i.push(e.x), i.push(e.y) })), i.push(r.x), i.push(r.y); var o = f.catmullRomToBezier(i); return o.unshift(["M", n.x, n.y]), o }, n.getTickPoint = function (e, t) { var n = this.get("tickPoints"); return n[t] }, n.getTickEnd = function (e, t, n) { var r = this, i = r.get("tickLine"), o = t || i.length, a = r.getSideVector(o, e, n); return { x: e.x + a[0], y: e.y + a[1] } }, n.getSideVector = function (e, t, n) { var r, i = this; if (0 === n) { if (r = i.get("start"), r.x === t.x && r.y === t.y) return [0, 0] } else { var o = i.get("tickPoints"); r = o[n - 1] } var a = [t.x - r.x, t.y - r.y], s = d.normalize([], a), c = d.vertical([], s, !1); return d.scale([], c, e) }, t }(u); e.exports = p }, function (e, t, n) { e.exports = { Guide: n(17), Arc: n(372), DataMarker: n(373), DataRegion: n(374), Html: n(375), Image: n(376), Line: n(377), Region: n(378), Text: n(379) } }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(17), h = Math.PI, f = Math.atan; function d(e, t) { var n, r = e.x - t.x, i = e.y - t.y; return 0 === i ? n = r < 0 ? h / 2 : 270 * h / 180 : r >= 0 && i > 0 ? n = 2 * h - f(r / i) : r <= 0 && i < 0 ? n = h - f(r / i) : r > 0 && i < 0 ? n = h + f(-r / i) : r < 0 && i > 0 && (n = f(r / -i)), n } var p = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { name: "arc", start: null, end: null, style: { stroke: "#999", lineWidth: 1 } }) }, n.render = function (e, t) { var n = this, r = n.parsePoint(e, n.get("start")), i = n.parsePoint(e, n.get("end")); if (r && i) { var o, a = e.getCenter(), s = Math.sqrt((r.x - a.x) * (r.x - a.x) + (r.y - a.y) * (r.y - a.y)), c = d(r, a), u = d(i, a); if (u < c && (u += 2 * h), l.isNumberEqual(r.x, i.x) && l.isNumberEqual(r.y, i.y) && (n.get("start")[0] !== n.get("end")[0] || n.get("start")[1] !== n.get("end")[1])) o = [["M", r.x, r.y], ["A", s, s, 0, 1, 1, 2 * a.x - r.x, 2 * a.y - r.y], ["A", s, s, 0, 1, 1, r.x, r.y]]; else { var f = (u - c) % (2 * h), p = f > h ? 1 : 0; o = [["M", r.x, r.y], ["A", s, s, 0, p, 1, i.x, i.y]] } var v = t.addShape("path", { zIndex: n.get("zIndex"), attrs: l.mix({ path: o }, n.get("style")) }); v.name = "guide-arc", n.get("appendInfo") && v.setSilent("appendInfo", n.get("appendInfo")), n.set("el", v) } }, t }(u); e.exports = p }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(17), h = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { name: "dataMarker", zIndex: 1, top: !0, position: null, style: { point: { r: 3, fill: "#FFFFFF", stroke: "#1890FF", lineWidth: 2 }, line: { stroke: "#A3B1BF", lineWidth: 1 }, text: { fill: "#000000", opacity: .65, fontSize: 12, textAlign: "start" } }, display: { point: !0, line: !0, text: !0 }, lineLength: 20, direction: "upward", autoAdjust: !0 }) }, n.render = function (e, t) { var n = this, r = n.parsePoint(e, n.get("position")); if (r) { var i = t.addGroup(); i.name = "guide-data-marker"; var o, a, s = n._getElementPosition(r), c = n.get("display"); if (c.line) { var l = s.line; o = n._drawLine(l, i) } if (c.text && n.get("content")) { var u = s.text; a = n._drawText(u, i) } if (c.point) { var h = s.point; n._drawPoint(h, i) } if (n.get("autoAdjust")) { var f = i.getBBox(), d = f.minX, p = f.minY, v = f.maxX, m = f.maxY, g = e.start, y = e.end; if (a) { d <= g.x && a.attr("textAlign", "start"), v >= y.x && a.attr("textAlign", "end"); var b = n.get("direction"); if ("upward" === b && p <= y.y || "upward" !== b && m >= g.y) { var x, w; "upward" === b && p <= y.y ? (x = "top", w = 1) : (x = "bottom", w = -1), a.attr("textBaseline", x); var _ = 0; if (n.get("display").line) { _ = n.get("lineLength"); var C = [["M", r.x, r.y], ["L", r.x, r.y + _ * w]]; o.attr("path", C) } var M = r.y + (_ + 2) * w; a.attr("y", M) } } } n.get("appendInfo") && i.setSilent("appendInfo", n.get("appendInfo")), n.set("el", i) } }, n._getElementPosition = function (e) { var t = this, n = e.x, r = e.y, i = t.get("display").line ? t.get("lineLength") : 0, o = t.get("direction"), a = t.get("style").text; a.textBaseline = "upward" === o ? "bottom" : "top"; var s = "upward" === o ? -1 : 1, c = { x: n, y: r }, l = { x: n, y: r }, u = { x: n, y: i * s + r }, h = { x: n, y: (i + 2) * s + r }; return { point: c, line: [l, u], text: h } }, n._drawLine = function (e, t) { var n = this, r = n.get("style").line, i = [["M", e[0].x, e[0].y], ["L", e[1].x, e[1].y]], o = t.addShape("path", { attrs: l.mix({ path: i }, r) }); return o }, n._drawText = function (e, t) { var n = this, r = this.get("style").text, i = t.addShape("text", { attrs: l.mix({ text: n.get("content") }, r, e) }); return i }, n._drawPoint = function (e, t) { var n = this, r = n.get("style").point, i = t.addShape("circle", { attrs: l.mix({}, r, e) }); return i }, t }(u); e.exports = h }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(189), h = n(17), f = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { name: "dataRegion", start: null, end: null, content: "", style: { region: { lineWidth: 0, fill: "#000000", opacity: .04 }, text: { textAlign: "center", textBaseline: "bottom", fontSize: 12, fill: "rgba(0, 0, 0, .65)" } } }) }, n.render = function (e, t, n) { var r = this, i = r.get("lineLength") || 0, o = r._getRegionData(e, n); if (o.length) { var a = r._getBBox(o), s = []; s.push(["M", o[0].x, a.yMin - i]); for (var c = 0, u = o.length; c < u; c++) { var h = ["L", o[c].x, o[c].y]; s.push(h) } s.push(["L", o[o.length - 1].x, a.yMin - i]); var f = r.get("style"), d = f.region, p = f.text, v = t.addGroup(); v.name = "guide-data-region", v.addShape("path", { attrs: l.mix({ path: s }, d) }); var m = r.get("content"); m && v.addShape("Text", { attrs: l.mix({ x: (a.xMin + a.xMax) / 2, y: a.yMin - i, text: m }, p) }), r.get("appendInfo") && v.setSilent("appendInfo", r.get("appendInfo")), r.set("el", v) } }, n._getRegionData = function (e, t) { for (var n, r = this, i = r.get("start"), o = r.get("end"), a = u.getFirstScale(r.get("xScales")).field, s = u.getFirstScale(r.get("yScales")).field, c = l.isArray(i) ? i[0] : i[a], h = l.isArray(o) ? o[0] : o[a], f = [], d = 0, p = t.length; d < p; d++) { var v = t[d]; if (v[a] === c && (n = d), d >= n) { var m = r.parsePoint(e, [v[a], v[s]]); m && f.push(m) } if (v[a] === h) break } return f }, n._getBBox = function (e) { for (var t = [], n = [], r = 0; r < e.length; r++)t.push(e[r].x), n.push(e[r].y); var i = l.arrayUtil.getRange(t), o = l.arrayUtil.getRange(n); return { xMin: i.min, xMax: i.max, yMin: o.min, yMax: o.max } }, t }(h); e.exports = f }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = l.DomUtil, h = n(17), f = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { name: "html", zIndex: 7, position: null, alignX: "middle", alignY: "middle", offsetX: null, offsetY: null, html: null }) }, n.render = function (e, t) { var n = this, r = n.parsePoint(e, n.get("position")); if (r) { var i = t.get("canvas").get("el").parentNode, o = u.createDom('<div class="g-guide"></div>'); i.appendChild(o); var a = n.get("htmlContent") || n.get("html"); if (l.isFunction(a)) { var s = n.get("xScales"), c = n.get("yScales"); a = a(s, c) } var h = u.createDom(a); o.appendChild(h), u.modifyCSS(o, { position: "absolute" }), n._setDomPosition(o, h, r), n.set("el", o) } }, n._setDomPosition = function (e, t, n) { var r = this, i = r.get("alignX"), o = r.get("alignY"), a = u.getOuterWidth(t), s = u.getOuterHeight(t), c = { x: n.x, y: n.y }; "middle" === i && "top" === o ? c.x -= Math.round(a / 2) : "middle" === i && "bottom" === o ? (c.x -= Math.round(a / 2), c.y -= Math.round(s)) : "left" === i && "bottom" === o ? c.y -= Math.round(s) : "left" === i && "middle" === o ? c.y -= Math.round(s / 2) : "left" === i && "top" === o ? (c.x = n.x, c.y = n.y) : "right" === i && "bottom" === o ? (c.x -= Math.round(a), c.y -= Math.round(s)) : "right" === i && "middle" === o ? (c.x -= Math.round(a), c.y -= Math.round(s / 2)) : "right" === i && "top" === o ? c.x -= Math.round(a) : (c.x -= Math.round(a / 2), c.y -= Math.round(s / 2)); var l = r.get("offsetX"); l && (c.x += l); var h = r.get("offsetY"); h && (c.y += h), u.modifyCSS(e, { top: Math.round(c.y) + "px", left: Math.round(c.x) + "px", visibility: "visible", zIndex: r.get("zIndex") }) }, n.clear = function () { var e = this, t = e.get("el"); t && t.parentNode && t.parentNode.removeChild(t) }, t }(h); e.exports = f }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(17), h = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { type: "image", start: null, end: null, src: null, offsetX: null, offsetY: null }) }, n.render = function (e, t) { var n = this, r = n.parsePoint(e, n.get("start")); if (r) { var i = { x: r.x, y: r.y }; if (i.img = n.get("src"), n.get("end")) { var o = n.parsePoint(e, n.get("end")); if (!o) return; i.width = o.x - r.x, i.height = o.y - r.y } else i.width = n.get("width") || 32, i.height = n.get("height") || 32; n.get("offsetX") && (i.x += n.get("offsetX")), n.get("offsetY") && (i.y += n.get("offsetY")); var a = t.addShape("Image", { zIndex: 1, attrs: i }); a.name = "guide-image", n.get("appendInfo") && a.setSilent("appendInfo", n.get("appendInfo")), n.set("el", a) } }, t }(u); e.exports = h }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(17), h = l.MatrixUtil.vec2, f = n(16), d = f.FONT_FAMILY, p = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { name: "line", start: null, end: null, lineStyle: { stroke: "#000", lineWidth: 1 }, text: { position: "end", autoRotate: !0, style: { fill: "#999", fontSize: 12, fontWeight: 500, fontFamily: d }, content: null } }) }, n.render = function (e, t) { var n = this, r = n.parsePoint(e, n.get("start")), i = n.parsePoint(e, n.get("end")); if (r && i) { var o = t.addGroup({ viewId: t.get("viewId") }); n._drawLines(r, i, o); var a = n.get("text"); a && a.content && n._drawText(r, i, o), n.set("el", o) } }, n._drawLines = function (e, t, n) { var r = [["M", e.x, e.y], ["L", t.x, t.y]], i = n.addShape("Path", { attrs: l.mix({ path: r }, this.get("lineStyle")) }); i.name = "guide-line", this.get("appendInfo") && i.setSilent("appendInfo", this.get("appendInfo")) }, n._drawText = function (e, t, n) { var r, i = this.get("text"), o = i.position, a = i.style || {}; r = "start" === o ? 0 : "center" === o ? .5 : l.isString(o) && -1 !== o.indexOf("%") ? parseInt(o, 10) / 100 : l.isNumber(o) ? o : 1, (r > 1 || r < 0) && (r = 1); var s = { x: e.x + (t.x - e.x) * r, y: e.y + (t.y - e.y) * r }; if (i.offsetX && (s.x += i.offsetX), i.offsetY && (s.y += i.offsetY), s.text = i.content, s = l.mix({}, s, a), i.autoRotate && l.isNil(a.rotate)) { var c = h.angleTo([t.x - e.x, t.y - e.y], [1, 0], 1); s.rotate = c } else l.isNil(a.rotate) || (s.rotate = a.rotate * Math.PI / 180); var u = n.addShape("Text", { attrs: s }); u.name = "guide-line-text", this.get("appendInfo") && u.setSilent("appendInfo", this.get("appendInfo")) }, t }(u); e.exports = p }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(17), h = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { name: "region", zIndex: 1, start: null, end: null, style: { lineWidth: 0, fill: "#CCD7EB", opacity: .4 } }) }, n.render = function (e, t) { var n = this, r = n.get("style"), i = n._getPath(e); if (i.length) { var o = t.addShape("path", { zIndex: n.get("zIndex"), attrs: l.mix({ path: i }, r) }); o.name = "guide-region", n.get("appendInfo") && o.setSilent("appendInfo", n.get("appendInfo")), n.set("el", o) } }, n._getPath = function (e) { var t = this, n = t.parsePoint(e, t.get("start")), r = t.parsePoint(e, t.get("end")); if (!n || !r) return []; var i = [["M", n.x, n.y], ["L", r.x, n.y], ["L", r.x, r.y], ["L", n.x, r.y], ["z"]]; return i }, t }(u); e.exports = h }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(17), h = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { name: "text", position: null, content: null, style: { fill: "#999", fontSize: 12, fontWeight: 500, textAlign: "center" }, offsetX: null, offsetY: null, top: !0 }) }, n.render = function (e, t) { var n = this, r = n.parsePoint(e, n.get("position")); if (r) { var i = l.mix({}, n.get("style")), o = n.get("offsetX"), a = n.get("offsetY"); o && (r.x += o), a && (r.y += a), i.rotate && (i.rotate = i.rotate * Math.PI / 180); var s = t.addShape("Text", { zIndex: n.get("zIndex"), attrs: l.mix({ text: n.get("content") }, i, r) }); s.name = "guide-text", n.get("appendInfo") && s.setSilent("appendInfo", n.get("appendInfo")), n.set("el", s) } }, t }(u); e.exports = h }, function (e, t, n) { var r = n(187); e.exports = r }, function (e, t, n) { e.exports = { Category: n(190), CatHtml: n(192), CatPageHtml: n(382), Color: n(383), Size: n(385), CircleSize: n(386) } }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(192), h = n(16), f = h.FONT_FAMILY, d = l.DomUtil, p = "g2-legend-list", v = "g2-slip", m = "g2-caret-up", g = "g2-caret-down", y = "rgba(0,0,0,0.65)", b = "rgba(0,0,0,0.25)"; function x(e, t) { return e.getElementsByClassName(t)[0] } var w = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { type: "category-page-legend", container: null, caretStyle: { fill: "rgba(0,0,0,0.65)" }, pageNumStyle: { display: "inline-block", fontSize: "12px", fontFamily: f, cursor: "default" }, slipDomStyle: { width: "auto", height: "auto", position: "absolute" }, slipTpl: '<div class="' + v + '" ><svg viewBox="64 64 896 896" class="g2-caret-up" data-icon="left" style = "display:inline-block;vertical-align:middle;" width="1em" height="1em" aria-hidden="true"><path d="M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 0 0 0 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z"></path></svg><p class="cur-pagenum" style = "display:inline-block;vertical-align:middle;">1</p><p class="next-pagenum" style = "display:inline-block;vertical-align:middle;"">/2</p><svg viewBox="64 64 896 896" class="g2-caret-down" data-icon="right" style = "display:inline-block;vertical-align:middle;" width="1em" height="1em" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 0 0 302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 0 0 0-50.4z"></path></svg></div>', slipWidth: 65, legendOverflow: "unset" }) }, n.render = function () { e.prototype._renderHTML.call(this), this._renderFlipPage() }, n._renderFlipPage = function () { var e = this.get("legendWrapper"), t = x(e, p), n = this.get("position"), r = this.get("layout"), i = "right" === n || "left" === n || "vertical" === r, o = i ? "block" : "inline-block", a = e.offsetHeight; if (e.scrollHeight > a) { var s = this.get("slipTpl"), c = d.createDom(s), u = x(c, m), h = x(c, g); d.modifyCSS(u, this.get("caretStyle")), d.modifyCSS(u, { fill: "rgba(0,0,0,0.25)" }), d.modifyCSS(h, this.get("caretStyle")); var f = x(c, "cur-pagenum"), v = x(c, "next-pagenum"), w = this.get("pageNumStyle"); if (d.modifyCSS(f, l.mix({}, w, { paddingLeft: "10px" })), d.modifyCSS(v, l.mix({}, w, { opacity: .3, paddingRight: "10px" })), d.modifyCSS(c, l.mix({}, this.get("slipDomStyle"), i ? { top: a + "px" } : { right: 0, top: "50%", transform: "translate(0, -50%)" })), e.style.overflow = this.get("legendOverflow"), e.appendChild(c), !i) { var _ = Math.max(e.offsetWidth - 10 - c.offsetWidth, 0); d.modifyCSS(t, { maxWidth: _ + "px" }) } for (var C = t.childNodes, M = 0, O = 1, k = [], S = 0; S < C.length; S++)C[S].style.display = o, M = C[S].offsetTop + C[S].offsetHeight, M > a && (O++, k.forEach((function (e) { e.style.display = "none" })), k = []), k.push(C[S]); v.innerText = "/" + O, C.forEach((function (e) { e.style.display = o, M = e.offsetTop + e.offsetHeight, M > a && (e.style.display = "none") })), u.addEventListener("click", (function () { if (C[0].style.display !== o) { var e = -1; C.forEach((function (t, n) { t.style.display === o && (e = -1 === e ? n : e, t.style.display = "none") })); for (var t = e - 1; t >= 0; t--) { if (C[t].style.display = o, M = C[e - 1].offsetTop + C[e - 1].offsetHeight, C[t].style.display = "none", !(M <= a)) break; C[t].style.display = o } var n = Number.parseInt(f.innerText, 10) - 1; u.style.fill = 1 === n ? b : y, h.style.fill = y, f.innerText = n } })), h.addEventListener("click", (function () { if (C[C.length - 1].style.display !== o) { var e = -1; C.forEach((function (t, n) { t.style.display === o && (e = n, t.style.display = "none") })); for (var t = e + 1; t < C.length; t++) { if (C[t].style.display = o, M = C[t].offsetTop + C[t].offsetHeight, C[t].style.display = "none", !(M <= a)) break; C[t].style.display = o } var n = Number.parseInt(f.innerText, 10) + 1; h.style.fill = n === O ? b : y, u.style.fill = y, f.innerText = n } })), this.set("slipDom", c) } }, n.destroy = function () { var t = this.get("slipDom"); t && t.parentNode && t.parentNode.removeChild(t), e.prototype.destroy.call(this) }, t }(u); e.exports = w }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(104), u = l.ColorUtil, h = n(4), f = n(97), d = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return h.mix({}, t, { type: "color-legend", layout: "vertical", triggerAttr: { fill: "#fff", shadowOffsetX: -2, shadowOffsetY: 2, shadowBlur: 10, shadowColor: "#ccc", radius: 3 }, isSegment: !1 }) }, n._setPercentage = function () { var e = this.get("items"); if (!e[0].percentage) { var t = e[0].value, n = e[e.length - 1].value; h.each(e, (function (e) { e.percentage = (e.value - t) / (n - t) })) } }, n._renderSliderShape = function () { this._setPercentage(); var e, t = this.get("slider"), n = t.get("backgroundElement"), r = this.get("width"), i = this.get("height"), o = this.get("layout"), a = this.get("items"), s = ""; return "vertical" === o ? (s += "l (90) ", h.each(a, (function (t) { e = u.toRGB(t.color), s += 1 - t.percentage + ":" + e + " " }))) : (s += "l (0) ", h.each(a, (function (t) { e = u.toRGB(t.color), s += t.percentage + ":" + e + " " }))), this._addMiddleBar(n, "Rect", { x: 0, y: 0, width: r, height: i, fill: s, strokeOpacity: 0 }) }, n._renderUnslidable = function () { this._setPercentage(); var e = this.get("titleShape"), t = this.get("titleGap"); t = e ? e.getBBox().height + t : t; var n, r = this.get("width"), i = this.get("height"), o = this.get("layout"), a = this.get("items"), s = "", c = [], l = this.get("group"), f = l.addGroup(), d = a.length; if ("vertical" === o) { s += "l (90) "; for (var p = 0; p < d; p += 1) { if (0 !== p && p !== d - 1 && (c.push(["M", 0, i - a[p].percentage * i]), c.push(["L", r, i - a[p].percentage * i])), n = u.toRGB(a[p].color), s += 1 - a[p].percentage + ":" + n + " ", this.get("isSegment") && p > 0) { var v = u.toRGB(a[p - 1].color); s += 1 - a[p].percentage + ":" + v + " " } f.addShape("text", { attrs: h.mix({}, { x: r + this.get("textOffset") / 2, y: i - a[p].percentage * i, text: this._formatItemValue(a[p].value) + "" }, this.get("textStyle"), { textAlign: "start" }) }) } } else { s += "l (0) "; for (var m = 0; m < d; m += 1) { if (0 !== m && m !== d - 1 && (c.push(["M", a[m].percentage * r, 0]), c.push(["L", a[m].percentage * r, i])), n = u.toRGB(a[m].color), this.get("isSegment") && m > 0) { var g = u.toRGB(a[m - 1].color); s += a[m].percentage + ":" + g + " " } s += a[m].percentage + ":" + n + " ", f.addShape("text", { attrs: h.mix({}, { x: a[m].percentage * r, y: i + 5 + this.get("textOffset"), text: this._formatItemValue(a[m].value) + "" }, this.get("textStyle")) }) } } f.addShape("rect", { attrs: { x: 0, y: 0, width: r, height: i, fill: s, strokeOpacity: 0 } }), f.addShape("path", { attrs: h.mix({ path: c }, this.get("lineStyle")) }), f.move(0, t) }, t }(f); e.exports = d }, function (e, t, n) { var r = n(4), i = r.DomUtil, o = r.Group, a = function e(t) { e.superclass.constructor.call(this, t) }; r.extend(a, o), r.augment(a, { getDefaultCfg: function () { return { range: null, middleAttr: { fill: "#fff", fillOpacity: 0 }, backgroundElement: null, minHandleElement: null, maxHandleElement: null, middleHandleElement: null, currentTarget: null, layout: "vertical", width: null, height: null, pageX: null, pageY: null } }, _beforeRenderUI: function () { var e = this.get("layout"), t = this.get("backgroundElement"), n = this.get("minHandleElement"), r = this.get("maxHandleElement"), i = this.addShape("rect", { attrs: this.get("middleAttr") }), o = "vertical" === e ? "ns-resize" : "ew-resize"; this.add([t, n, r]), this.set("middleHandleElement", i), t.set("zIndex", 0), i.set("zIndex", 1), n.set("zIndex", 2), r.set("zIndex", 2), i.attr("cursor", "move"), n.attr("cursor", o), r.attr("cursor", o), this.sort() }, _renderUI: function () { "horizontal" === this.get("layout") ? this._renderHorizontal() : this._renderVertical() }, _transform: function (e) { var t = this.get("range"), n = t[0] / 100, r = t[1] / 100, i = this.get("width"), o = this.get("height"), a = this.get("minHandleElement"), s = this.get("maxHandleElement"), c = this.get("middleHandleElement"); a.resetMatrix(), s.resetMatrix(), "horizontal" === e ? (c.attr({ x: i * n, y: 0, width: (r - n) * i, height: o }), a.translate(n * i, o), s.translate(r * i, o)) : (c.attr({ x: 0, y: o * (1 - r), width: i, height: (r - n) * o }), a.translate(1, (1 - n) * o), s.translate(1, (1 - r) * o)) }, _renderHorizontal: function () { this._transform("horizontal") }, _renderVertical: function () { this._transform("vertical") }, _bindUI: function () { this.on("mousedown", r.wrapBehavior(this, "_onMouseDown")) }, _isElement: function (e, t) { var n = this.get(t); if (e === n) return !0; if (n.isGroup) { var r = n.get("children"); return r.indexOf(e) > -1 } return !1 }, _getRange: function (e, t) { var n = e + t; return n = n > 100 ? 100 : n, n = n < 0 ? 0 : n, n }, _updateStatus: function (e, t) { var n = "x" === e ? this.get("width") : this.get("height"); e = r.upperFirst(e); var i, o = this.get("range"), a = this.get("page" + e), s = this.get("currentTarget"), c = this.get("rangeStash"), l = this.get("layout"), u = "vertical" === l ? -1 : 1, h = t["page" + e], f = h - a, d = f / n * 100 * u; o[1] <= o[0] ? (this._isElement(s, "minHandleElement") || this._isElement(s, "maxHandleElement")) && (o[0] = this._getRange(d, o[0]), o[1] = this._getRange(d, o[0])) : (this._isElement(s, "minHandleElement") && (o[0] = this._getRange(d, o[0])), this._isElement(s, "maxHandleElement") && (o[1] = this._getRange(d, o[1]))), this._isElement(s, "middleHandleElement") && (i = c[1] - c[0], o[0] = this._getRange(d, o[0]), o[1] = o[0] + i, o[1] > 100 && (o[1] = 100, o[0] = o[1] - i)), this.emit("sliderchange", { range: o }), this.set("page" + e, h), this._renderUI(), this.get("canvas").draw() }, _onMouseDown: function (e) { var t = e.currentTarget, n = e.event, r = this.get("range"); n.stopPropagation(), n.preventDefault(), this.set("pageX", n.pageX), this.set("pageY", n.pageY), this.set("currentTarget", t), this.set("rangeStash", [r[0], r[1]]), this._bindCanvasEvents() }, _bindCanvasEvents: function () { var e = this.get("canvas").get("containerDOM"); this.onMouseMoveListener = i.addEventListener(e, "mousemove", r.wrapBehavior(this, "_onCanvasMouseMove")), this.onMouseUpListener = i.addEventListener(e, "mouseup", r.wrapBehavior(this, "_onCanvasMouseUp")), this.onMouseLeaveListener = i.addEventListener(e, "mouseleave", r.wrapBehavior(this, "_onCanvasMouseUp")) }, _onCanvasMouseMove: function (e) { if (!this._mouseOutArea(e)) { var t = this.get("layout"); "horizontal" === t ? this._updateStatus("x", e) : this._updateStatus("y", e) } }, _onCanvasMouseUp: function () { this._removeDocumentEvents() }, _removeDocumentEvents: function () { this.onMouseMoveListener.remove(), this.onMouseUpListener.remove() }, _mouseOutArea: function (e) { var t = this.get("canvas").get("el"), n = t.getBoundingClientRect(), r = this.get("parent"), i = r.getBBox(), o = r.attr("matrix")[6], a = r.attr("matrix")[7], s = o + i.width, c = a + i.height, l = e.clientX - n.x, u = e.clientY - n.y; return l < o || l > s || u < a || u > c } }), e.exports = a }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(97), h = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { type: "size-legend", width: 100, height: 200, _unslidableElementStyle: { fill: "#4E7CCC", fillOpacity: 1 }, frontMiddleBarStyle: { fill: "rgb(64, 141, 251)" } }) }, n._renderSliderShape = function () { var e = this.get("slider"), t = e.get("backgroundElement"), n = this.get("layout"), r = this.get("width"), i = this.get("height"), o = this.get("height") / 2, a = this.get("frontMiddleBarStyle"), s = "vertical" === n ? [[0, 0], [r, 0], [r, i], [r - 4, i]] : [[0, o + i / 2], [0, o + i / 2 - 4], [r, o - i / 2], [r, o + i / 2]]; return this._addMiddleBar(t, "Polygon", l.mix({ points: s }, a)) }, n._renderUnslidable = function () { var e = this.get("layout"), t = this.get("width"), n = this.get("height"), r = this.get("frontMiddleBarStyle"), i = "vertical" === e ? [[0, 0], [t, 0], [t, n], [t - 4, n]] : [[0, n], [0, n - 4], [t, 0], [t, n]], o = this.get("group"), a = o.addGroup(); a.addShape("Polygon", { attrs: l.mix({ points: i }, r) }); var s = this._formatItemValue(this.get("firstItem").value), c = this._formatItemValue(this.get("lastItem").value); "vertical" === this.get("layout") ? (this._addText(t + 10, n - 3, s), this._addText(t + 10, 3, c)) : (this._addText(0, n, s), this._addText(t, n, c)) }, n._addText = function (e, t, n) { var r = this.get("group"), i = r.addGroup(), o = this.get("textStyle"), a = this.get("titleShape"), s = this.get("titleGap"); a && (s += a.getBBox().height), "vertical" === this.get("layout") ? i.addShape("text", { attrs: l.mix({ x: e + this.get("textOffset"), y: t, text: 0 === n ? "0" : n }, o) }) : (t += s + this.get("textOffset") - 20, a || (t += 10), i.addShape("text", { attrs: l.mix({ x: e, y: t, text: 0 === n ? "0" : n }, o) })) }, t }(u); e.exports = h }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(97), h = 2, f = 16, d = 16, p = 5, v = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { type: "size-circle-legend", width: 100, height: 200, _unslidableCircleStyle: { stroke: "rgb(99, 161, 248)", fill: "rgb(99, 161, 248)", fillOpacity: .3, lineWidth: 1.5 }, triggerAttr: { fill: "white", shadowOffsetX: -2, shadowOffsetY: 2, shadowBlur: 10, shadowColor: "#ccc" }, frontMiddleBarStyle: { fill: "rgb(64, 141, 251)" } }) }, n._renderSliderShape = function () { var e = p, t = this.get("slider"), n = t.get("backgroundElement"), r = this.get("layout"), i = "vertical" === r ? h : this.get("width"), o = "vertical" === r ? this.get("height") : h, a = e, s = this.get("height") / 2, c = this.get("frontMiddleBarStyle"), u = "vertical" === r ? [[0, 0], [i, 0], [i, o], [0, o]] : [[0, s + o], [0, s - o], [a + i - 4, s - o], [a + i - 4, s + o]]; return this._addMiddleBar(n, "Polygon", l.mix({ points: u }, c)) }, n._addHorizontalTrigger = function (e, t, n, r) { var i = this.get("slider"), o = i.get(e + "HandleElement"), a = -this.get("height") / 2, s = o.addShape("circle", { attrs: l.mix({ x: 0, y: a, r: r }, t) }), c = o.addShape("text", { attrs: l.mix(n, { x: 0, y: a + r + 10, textAlign: "center", textBaseline: "middle" }) }), u = this.get("layout"), h = "vertical" === u ? "ns-resize" : "ew-resize"; s.attr("cursor", h), c.attr("cursor", h), this.set(e + "ButtonElement", s), this.set(e + "TextElement", c) }, n._addVerticalTrigger = function (e, t, n, r) { var i = this.get("slider"), o = i.get(e + "HandleElement"), a = o.addShape("circle", { attrs: l.mix({ x: 0, y: 0, r: r }, t) }), s = o.addShape("text", { attrs: l.mix(n, { x: r + 10, y: 0, textAlign: "start", textBaseline: "middle" }) }), c = this.get("layout"), u = "vertical" === c ? "ns-resize" : "ew-resize"; a.attr("cursor", u), s.attr("cursor", u), this.set(e + "ButtonElement", a), this.set(e + "TextElement", s) }, n._renderTrigger = function () { var e = this.get("firstItem"), t = this.get("lastItem"), n = this.get("layout"), r = this.get("textStyle"), i = this.get("triggerAttr"), o = l.mix({}, i), a = l.mix({}, i), s = p, c = d, u = l.mix({ text: this._formatItemValue(e.value) + "" }, r), h = l.mix({ text: this._formatItemValue(t.value) + "" }, r); "vertical" === n ? (this._addVerticalTrigger("min", o, u, s), this._addVerticalTrigger("max", a, h, c)) : (this._addHorizontalTrigger("min", o, u, s), this._addHorizontalTrigger("max", a, h, c)) }, n._bindEvents = function () { var e = this; if (this.get("slidable")) { var t = this.get("slider"); t.on("sliderchange", (function (t) { var n = t.range, r = e.get("firstItem").value, i = e.get("lastItem").value, o = r + n[0] / 100 * (i - r), a = r + n[1] / 100 * (i - r), s = p + n[0] / 100 * (d - p), c = p + n[1] / 100 * (d - p); e._updateElement(o, a, s, c); var l = new Event("itemfilter", t, !0, !0); l.range = [o, a], e.emit("itemfilter", l) })) } }, n._updateElement = function (t, n, r, i) { e.prototype._updateElement.call(this, t, n); var o = this.get("minTextElement"), a = this.get("maxTextElement"), s = this.get("minButtonElement"), c = this.get("maxButtonElement"); s.attr("r", r), c.attr("r", i); var l = this.get("layout"); if ("vertical" === l) o.attr("x", r + 10), a.attr("x", i + 10); else { var u = -this.get("height") / 2; o.attr("y", u + r + 10), a.attr("y", u + i + 10) } }, n._addCircle = function (e, t, n, r, i) { var o = this.get("group"), a = o.addGroup(), s = this.get("_unslidableCircleStyle"), c = this.get("textStyle"), u = this.get("titleShape"), h = this.get("titleGap"); u && (h += u.getBBox().height), a.addShape("circle", { attrs: l.mix({ x: e, y: t + h, r: 0 === n ? 1 : n }, s) }), "vertical" === this.get("layout") ? a.addShape("text", { attrs: l.mix({ x: i + 20 + this.get("textOffset"), y: t + h, text: 0 === r ? "0" : r }, c) }) : a.addShape("text", { attrs: l.mix({ x: e, y: t + h + i + 13 + this.get("textOffset"), text: 0 === r ? "0" : r }, c) }) }, n._renderUnslidable = function () { var e = this.get("firstItem").value, t = this.get("lastItem").value; if (e > t) { var n = t; t = e, e = n } var r = this._formatItemValue(e), i = this._formatItemValue(t), o = e < p ? p : e, a = t > d ? d : t; o > a && (o = p, a = d), "vertical" === this.get("layout") ? (this._addCircle(a, a, o, r, 2 * a), this._addCircle(a, 2 * a + f + o, a, i, 2 * a)) : (this._addCircle(a, a, o, r, 2 * a), this._addCircle(2 * a + f + o, a, a, i, 2 * a)) }, n.activate = function (t) { this.get("slidable") && e.prototype.activate.call(this, t) }, t }(u); e.exports = v }, function (e, t, n) { var r = n(98); r.Html = n(388), r.Canvas = n(196), r.Mini = n(390), e.exports = r }, function (e, t, n) { function r() { return r = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }, r.apply(this, arguments) } function i(e) { return function () { var t, n = c(e); if (s()) { var r = c(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return o(this, t) } } function o(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? a(e) : t } function a(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function s() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function c(e) { return c = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, c(e) } function l(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var u = n(51), h = n(98), f = n(4), d = f.DomUtil, p = n(389), v = n(193), m = n(194), g = n(195), y = "g2-tooltip", b = "g2-tooltip-title", x = "g2-tooltip-list", w = "g2-tooltip-marker", _ = "g2-tooltip-value", C = "g2-tooltip-list-item", M = 5, O = u.Marker; function k(e, t) { return e.getElementsByClassName(t)[0] } function S(e, t) { return Object.keys(e).forEach((function (n) { t[n] && (e[n] = f.mix(e[n], t[n])) })), e } var T = function (e) { l(n, e); i(n); var t = n.prototype; function n(t) { var n; n = e.call(this, t) || this, f.assign(a(n), m), f.assign(a(n), g); var r = p; n.style = S(r, t), n._init_(), n.get("items") && n.render(); var i = n.get("crosshairs"); if (i) { var o = "rect" === i.type ? n.get("backPlot") : n.get("frontPlot"), s = new v(f.mix({ plot: o, plotRange: n.get("plotRange"), canvas: n.get("canvas") }, n.get("crosshairs"))); s.hide(), n.set("crosshairGroup", s) } return n } return t.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return f.mix({}, t, { containerTpl: ' <div class="' + y + '"> <div class="' + b + '"></div><ul class="' + x + '"></ul></div>', itemTpl: '<li data-index={index}>\n      <svg viewBox="0 0 ' + M + " " + M + '" class="' + w + '"></svg>\n      {name}<span class="' + _ + '">{value}</span></li>', htmlContent: null, follow: !0, enterable: !1 }) }, t._init_ = function () { var e, t = this, n = t.get("containerTpl"), r = t.get("canvas").get("el").parentNode; if (!this.get("htmlContent")) { if (/^\#/.test(n)) { var i = n.replace("#", ""); e = document.getElementById(i) } else e = d.createDom(n), d.modifyCSS(e, t.style[y]), r.appendChild(e), r.style.position = "relative"; t.set("container", e) } }, t.render = function () { var e = this; if (e.clear(), e.get("htmlContent")) { var t = e.get("canvas").get("el").parentNode, n = e._getHtmlContent(); t.appendChild(n), e.set("container", n) } else e._renderTpl() }, t._renderTpl = function () { var e = this, t = e.get("showTitle"), n = e.get("titleContent"), r = e.get("container"), i = k(r, b), o = k(r, x), a = e.get("items"); i && t && (d.modifyCSS(i, e.style[b]), i.innerHTML = n), o && (d.modifyCSS(o, e.style[x]), f.each(a, (function (t, n) { o.appendChild(e._addItem(t, n)) }))) }, t.clear = function () { var e = this.get("container"); if (this.get("htmlContent")) e && e.remove(); else { var t = k(e, b), n = k(e, x); t && (t.innerHTML = ""), n && (n.innerHTML = "") } }, t.show = function () { var t = this.get("container"); if (t && !this.destroyed) { t.style.visibility = "visible", t.style.display = "block"; var n = this.get("crosshairGroup"); n && n.show(); var r = this.get("markerGroup"); r && r.show(), e.prototype.show.call(this), this.get("canvas").draw() } }, t.hide = function () { var t = this.get("container"); if (t && !this.destroyed) { t.style.visibility = "hidden", t.style.display = "none"; var n = this.get("crosshairGroup"); n && n.hide(); var r = this.get("markerGroup"); r && r.hide(), e.prototype.hide.call(this), this.get("canvas").draw() } }, t.destroy = function () { var t = this, n = t.get("container"), r = t.get("containerTpl"); n && !/^\#/.test(r) && n.parentNode.removeChild(n); var i = this.get("crosshairGroup"); i && i.destroy(); var o = this.get("markerGroup"); o && o.remove(), e.prototype.destroy.call(this) }, t._getMarkerSvg = function (e) { var t, n = e.marker || {}, r = n.activeSymbol || n.symbol; f.isFunction(r) ? t = r : f.isString(r) && (t = O.Symbols[r]), t = f.isFunction(t) ? t : O.Symbols.circle; var i = t(M / 2, M / 2, M / 2), o = i.reduce((function (e, t) { return "" + e + t[0] + t.slice(1).join(",") }), ""); return '<path d="' + o + '" fill="' + (n.fill || "none") + '" stroke="' + (n.stroke || "none") + '" />' }, t._addItem = function (e, t) { var n = this.get("itemTpl"), i = f.substitute(n, f.mix({ index: t }, e)), o = d.createDom(i); d.modifyCSS(o, this.style[C]); var a = k(o, w); if (a) { d.modifyCSS(a, r({}, this.style[w], { borderRadius: "unset" })); var s = this._getMarkerSvg(e); a.innerHTML = s } var c = k(o, _); return c && d.modifyCSS(c, this.style[_]), o }, t._getHtmlContent = function () { var e = this.get("htmlContent"), t = this.get("titleContent"), n = this.get("items"), r = e(t, n), i = d.createDom(r); return i }, t.setPosition = function (t, n, r) { var i, o = this.get("container"), a = this.get("canvas").get("el"), s = d.getWidth(a), c = d.getHeight(a), l = o.clientWidth, u = o.clientHeight, h = t, p = n, v = this.get("prePosition") || { x: 0, y: 0 }; if (l || (o.style.display = "block", l = o.clientWidth, u = o.clientHeight, o.style.display = "none"), this.get("enterable") ? (n -= o.clientHeight / 2, i = [t, n], v && t - v.x > 0 ? t -= o.clientWidth + 1 : t += 1) : this.get("position") ? (i = this._calcTooltipPosition(t, n, this.get("position"), l, u, r), t = i[0], n = i[1]) : (i = this._constraintPositionInBoundary(t, n, l, u, s, c), t = i[0], n = i[1]), this.get("inPlot")) { var m = this.get("plotRange"); i = this._constraintPositionInPlot(t, n, l, u, m, this.get("enterable")), t = i[0], n = i[1] } var g = this.get("markerItems"); f.isEmpty(g) || (h = g[0].x, p = g[0].y), this.set("prePosition", i); var y = this.get("follow"); y && (o.style.left = t + "px", o.style.top = n + "px"); var b = this.get("crosshairGroup"); if (b) { var x = this.get("items"); b.setPosition(h, p, x) } e.prototype.setPosition.call(this, t, n) }, n }(h); e.exports = T }, function (e, t, n) { var r, i = n(16), o = i.FONT_FAMILY, a = "g2-tooltip", s = "g2-tooltip-title", c = "g2-tooltip-list", l = "g2-tooltip-list-item", u = "g2-tooltip-marker", h = "g2-tooltip-value", f = (r = { crosshairs: !1, offset: 15 }, r["" + a] = { position: "absolute", visibility: "hidden", zIndex: 8, transition: "visibility 0.2s cubic-bezier(0.23, 1, 0.32, 1), left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)", backgroundColor: "rgba(255, 255, 255, 0.9)", boxShadow: "0px 0px 10px #aeaeae", borderRadius: "3px", color: "rgb(87, 87, 87)", fontSize: "12px", fontFamily: o, lineHeight: "20px", padding: "10px 10px 6px 10px" }, r["" + s] = { marginBottom: "4px" }, r["" + c] = { margin: 0, listStyleType: "none", padding: 0 }, r["" + l] = { marginBottom: "4px" }, r["" + u] = { width: "5px", height: "5px", borderRadius: "50%", display: "inline-block", marginRight: "8px" }, r["" + h] = { display: "inline-block", float: "right", marginLeft: "30px" }, r); e.exports = f }, function (e, t, n) { function r(e) { return function () { var t, n = s(e); if (a()) { var r = s(this).constructor; t = Reflect.construct(n, arguments, r) } else t = n.apply(this, arguments); return i(this, t) } } function i(e, t) { return !t || "object" !== typeof t && "function" !== typeof t ? o(e) : t } function o(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function a() { if ("undefined" === typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" === typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function () { }))), !0 } catch (e) { return !1 } } function s(e) { return s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, s(e) } function c(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var l = n(4), u = n(196), h = n(16), f = h.FONT_FAMILY, d = l.DomUtil, p = l.MatrixUtil, v = function (e) { c(t, e); r(t); function t() { return e.apply(this, arguments) || this } var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return l.mix({}, t, { boardStyle: { x: 0, y: 0, width: 0, height: 0, radius: 3 }, valueStyle: { x: 0, y: 0, text: "", fontFamily: f, fontSize: 12, stroke: "#fff", lineWidth: 2, fill: "black", textBaseline: "top", textAlign: "start" }, padding: { top: 5, right: 5, bottom: 0, left: 5 }, triangleWidth: 10, triangleHeight: 4 }) }, n._init_ = function () { var e = this, t = e.get("padding"), n = e.get("frontPlot"), r = n.addGroup(); e.set("container", r); var i = r.addShape("rect", { attrs: l.mix({}, e.get("boardStyle")) }); e.set("board", i); var o = r.addShape("path", { attrs: { fill: e.get("boardStyle").fill } }); e.set("triangleShape", o); var a = r.addGroup(); a.move(t.left, t.top); var s = a.addShape("text", { attrs: l.mix({}, e.get("valueStyle")) }); e.set("valueShape", s) }, n.render = function () { var e = this; e.clear(); var t = e.get("board"), n = e.get("valueShape"), r = e.get("padding"), i = e.get("items")[0]; n && n.attr("text", i.value); var o = n ? n.getBBox() : { width: 80, height: 30 }, a = r.left + o.width + r.right, s = r.top + o.height + r.bottom; t.attr("width", a), t.attr("height", s), e._centerTriangleShape() }, n.clear = function () { var e = this.get("valueShape"); e.attr("text", "") }, n.setPosition = function (e, t, n) { var r = this, i = r.get("container"), o = r.get("plotRange"), a = i.getBBox(), s = a.width, c = a.height; if (e -= s / 2, n && ("point" === n.name || "interval" === n.name)) { var l = n.getBBox().y; t = l } if (t -= c, this.get("inPlot")) e < o.tl.x ? (e = o.tl.x, r._leftTriangleShape()) : e + s / 2 > o.tr.x ? (e = o.tr.x - s, r._rightTriangleShape()) : r._centerTriangleShape(), t < o.tl.y ? t = o.tl.y : t + c > o.bl.y && (t = o.bl.y - c); else { var u = this.get("canvas").get("el"), h = d.getWidth(u), f = d.getHeight(u); e < 0 ? (e = 0, r._leftTriangleShape()) : e + s / 2 > h ? (e = h - s, r._rightTriangleShape()) : r._centerTriangleShape(), t < 0 ? t = 0 : t + c > f && (t = f - c) } var v = [1, 0, 0, 0, 1, 0, 0, 0, 1], m = p.transform(v, [["t", e, t]]); i.stopAnimate(), i.animate({ matrix: m }, this.get("animationDuration")) }, n._centerTriangleShape = function () { var e = this.get("triangleShape"), t = this.get("triangleWidth"), n = this.get("triangleHeight"), r = this.get("board").getBBox(), i = r.width, o = r.height, a = [["M", 0, 0], ["L", t, 0], ["L", t / 2, n], ["L", 0, 0], ["Z"]]; e.attr("path", a), e.move(i / 2 - t / 2, o - 1) }, n._leftTriangleShape = function () { var e = this.get("triangleShape"), t = this.get("triangleWidth"), n = this.get("triangleHeight"), r = this.get("board").getBBox(), i = r.height, o = [["M", 0, 0], ["L", t, 0], ["L", 0, n + 3], ["L", 0, 0], ["Z"]]; e.attr("path", o), e.move(0, i - 3) }, n._rightTriangleShape = function () { var e = this.get("triangleShape"), t = this.get("triangleWidth"), n = this.get("triangleHeight"), r = this.get("board").getBBox(), i = r.width, o = r.height, a = [["M", 0, 0], ["L", t, 0], ["L", t, n + 4], ["L", 0, 0], ["Z"]]; e.attr("path", a), e.move(i - t - 1, o - 4) }, t }(u); e.exports = v }, function (e, t, n) { var r = n(0).MatrixUtil, i = r.vec2; function o(e, t, n, r) { var o, a, s, c, l = [], u = !!r; if (u) { s = [1 / 0, 1 / 0], c = [-1 / 0, -1 / 0]; for (var h = 0, f = e.length; h < f; h++) { var d = e[h]; s = i.min([], s, d), c = i.max([], c, d) } s = i.min([], s, r[0]), c = i.max([], c, r[1]) } for (var p = 0, v = e.length; p < v; p++) { var m = e[p]; if (n) o = e[p ? p - 1 : v - 1], a = e[(p + 1) % v]; else { if (0 === p || p === v - 1) { l.push(m); continue } o = e[p - 1], a = e[p + 1] } var g = []; g = i.sub(g, a, o), g = i.scale(g, g, t); var y = i.distance(m, o), b = i.distance(m, a), x = y + b; 0 !== x && (y /= x, b /= x); var w = i.scale([], g, -y), _ = i.scale([], g, b), C = i.add([], m, w), M = i.add([], m, _); u && (C = i.max([], C, s), C = i.min([], C, c), M = i.max([], M, s), M = i.min([], M, c)), l.push(C), l.push(M) } return n && l.push(l.shift()), l } function a(e, t, n) { for (var r = !!t, i = [], a = 0, s = e.length; a < s; a += 2)i.push([e[a], e[a + 1]]); for (var c, l, u, h = o(i, .4, r, n), f = i.length, d = [], p = 0; p < f - 1; p++)c = h[2 * p], l = h[2 * p + 1], u = i[p + 1], d.push(["C", c[0], c[1], l[0], l[1], u[0], u[1]]); return r && (c = h[f], l = h[f + 1], u = i[0], d.push(["C", c[0], c[1], l[0], l[1], u[0], u[1]])), d } e.exports = { catmullRom2bezier: a } }, function (e, t, n) { var r = n(0), i = n(197), o = n(25), a = n(8), s = 5; function c(e, t, n) { return { x: e.x + n * Math.cos(t), y: e.y + n * Math.sin(t) } } function l(e, t, n, r, i) { var o, a = !0, s = n.start, c = n.end, l = Math.min(s.y, c.y), u = Math.abs(s.y - c.y), h = 0, f = Number.MIN_VALUE, d = e.map((function (e) { return e.y > h && (h = e.y), e.y < f && (f = e.y), { size: t, targets: [e.y - l] } })); f -= l, h - l > u && (u = h - l); while (a) { d.forEach((function (e) { var t = (Math.min.apply(f, e.targets) + Math.max.apply(f, e.targets)) / 2; e.pos = Math.min(Math.max(f, t - e.size / 2), u - e.size) })), a = !1, o = d.length; while (o--) if (o > 0) { var p = d[o - 1], v = d[o]; p.pos + p.size > v.pos && (p.size += v.size, p.targets = p.targets.concat(v.targets), p.pos + p.size > u && (p.pos = u - p.size), d.splice(o, 1), a = !0) } } o = 0, d.forEach((function (n) { var r = l + t / 2; n.targets.forEach((function () { e[o].y = n.pos + r, r += t, o++ })) })), e.forEach((function (e) { var t = e.r * e.r, n = Math.pow(Math.abs(e.y - r.y), 2); if (t < n) e.x = r.x; else { var o = Math.sqrt(t - n); e.x = i ? r.x + o : r.x - o } })) } var u = function e(t) { e.superclass.constructor.call(this, t) }; r.extend(u, i), r.augment(u, { getDefaultCfg: function () { return { label: a.thetaLabels } }, getDefaultOffset: function (e) { return e.offset || 0 }, adjustItems: function (e) { var t = this, n = e[0] ? e[0].offset : 0; return n > 0 && (e = t._distribute(e, n)), u.superclass.adjustItems.call(this, e) }, _distribute: function (e, t) { var n = this, r = n.get("coord"), i = r.getRadius(), o = n.get("label").labelHeight, a = r.getCenter(), s = i + t, c = 2 * s + 2 * o, u = { start: r.start, end: r.end }, h = n.get("geom"); if (h) { var f = h.get("view"); u = f.getViewRegion() } var d = [[], []]; return e.forEach((function (e) { e && ("right" === e.textAlign ? d[0].push(e) : d[1].push(e)) })), d.forEach((function (e, t) { var n = parseInt(c / o, 10); e.length > n && (e.sort((function (e, t) { return t["..percent"] - e["..percent"] })), e.splice(n, e.length - n)), e.sort((function (e, t) { return e.y - t.y })), l(e, o, u, a, t) })), d[0].concat(d[1]) }, lineToLabel: function (e) { var t = this, n = t.get("coord"), r = n.getRadius(), i = e.offset, o = e.orignAngle || e.angle, a = n.getCenter(), l = c(a, o, r + s / 2), u = c(a, o, r + i / 2); e.labelLine || (e.labelLine = t.get("label").labelLine || {}), e.labelLine.path = ["M" + l.x, l.y + " Q" + u.x, u.y + " " + e.x, e.y].join(",") }, getLabelRotate: function (e, t) { var n; return t < 0 && (n = 180 * e / Math.PI, n > 90 && (n -= 180), n < -90 && (n += 180)), n / 180 * Math.PI }, getLabelAlign: function (e) { var t, n = this, r = n.get("coord"), i = r.getCenter(); t = e.angle <= Math.PI / 2 && e.x >= i.x ? "left" : "right"; var o = n.getDefaultOffset(e); return o <= 0 && (t = "right" === t ? "left" : "right"), t }, getArcPoint: function (e) { return e }, getPointAngle: function (e) { var t = this, n = t.get("coord"), i = { x: r.isArray(e.x) ? e.x[0] : e.x, y: e.y[0] }; t.transLabelPoint(i); var a, s = { x: r.isArray(e.x) ? e.x[1] : e.x, y: e.y[1] }; t.transLabelPoint(s); var c = o.getPointAngle(n, i); if (e.points && e.points[0].y === e.points[1].y) a = c; else { var l = o.getPointAngle(n, s); c >= l && (l += 2 * Math.PI), a = c + (l - c) / 2 } return a }, getCirclePoint: function (e, t) { var n = this, r = n.get("coord"), i = r.getCenter(), o = r.getRadius() + t, a = c(i, e, o); return a.angle = e, a.r = o, a } }), e.exports = u }, function (e, t, n) { var r = n(0), i = n(91), o = function e(t) { e.superclass.constructor.call(this, t) }; r.extend(o, i), r.augment(o, { setLabelPosition: function (e, t, n, i) { r.isFunction(i) && (i = i(e.text, t._origin, n)); var o = this.get("coord"), a = o.isTransposed, s = o.convertPoint(t.points[0]), c = o.convertPoint(t.points[2]), l = (s.x - c.x) / 2 * (a ? -1 : 1), u = (s.y - c.y) / 2 * (a ? -1 : 1); switch (i) { case "right": a ? (e.x -= l, e.y += u, e.textAlign = e.textAlign || "center") : (e.x -= l, e.y += u, e.textAlign = e.textAlign || "left"); break; case "left": a ? (e.x -= l, e.y -= u, e.textAlign = e.textAlign || "center") : (e.x += l, e.y += u, e.textAlign = e.textAlign || "right"); break; case "bottom": a ? (e.x -= 2 * l, e.textAlign = e.textAlign || "left") : (e.y += 2 * u, e.textAlign = e.textAlign || "center"); break; case "middle": a ? e.x -= l : e.y += u, e.textAlign = e.textAlign || "center"; break; case "top": e.textAlign = a ? e.textAlign || "left" : e.textAlign || "center"; break; default: break } } }), e.exports = o }, function (e, t, n) { var r = n(0), i = n(8), o = i.defaultColor, a = "_origin"; function s(e) { return e.alias || e.field } var c = { _getIntervalSize: function (e) { var t = null, n = this.get("type"), i = this.get("coord"); if (i.isRect && ("interval" === n || "schema" === n)) { t = this.getSize(e[a]); var o = i.isTransposed ? "y" : "x"; if (r.isArray(e[o])) { var s = Math.abs(e[o][1] - e[o][0]); t = t < s ? null : t } } return t }, _snapEqual: function (e, t, n) { var i; return e = n.translate(e), t = n.translate(t), i = n.isCategory ? e === t : r.snapEqual(e, t), i }, _getScaleValueByPoint: function (e) { var t = 0, n = this.get("coord"), r = this.getXScale(), i = n.invert(e), o = i.x; return this.isInCircle() && o > (1 + r.rangeMax()) / 2 && (o = r.rangeMin()), t = r.invert(o), r.isCategory && (t = r.translate(t)), t }, _getOriginByPoint: function (e) { var t = this.getXScale(), n = this.getYScale(), r = t.field, i = n.field, o = this.get("coord"), a = o.invert(e), s = t.invert(a.x), c = n.invert(a.y), l = {}; return l[r] = s, l[i] = c, l }, _getScale: function (e) { var t = this, n = t.get("scales"), i = null; return r.each(n, (function (t) { if (t.field === e) return i = t, !1 })), i }, _getTipValueScale: function () { var e, t = this.getAttrsForLegend(); r.each(t, (function (t) { var n = t.getScale(t.type); if (n.isLinear) return e = n, !1 })); var n = this.getXScale(), i = this.getYScale(); return !e && i && "..y" === i.field ? n : e || i || n }, _getTipTitleScale: function (e) { var t = this; if (e) return t._getScale(e); var n, i = t.getAttr("position"), o = i.getFields(); return r.each(o, (function (e) { if (!e.includes("..")) return n = e, !1 })), t._getScale(n) }, _filterValue: function (e, t) { var n = this.get("coord"), i = this.getYScale(), o = i.field, s = n.invert(t), c = s.y; c = i.invert(c); var l = e[e.length - 1]; return r.each(e, (function (e) { var t = e[a]; if (t[o][0] <= c && t[o][1] >= c) return l = e, !1 })), l }, getXDistance: function () { var e = this, t = e.get("xDistance"); if (!t) { var n = e.getXScale(); if (n.isCategory) t = 1; else { var i = n.values, o = n.translate(i[0]), a = o; r.each(i, (function (e) { e = n.translate(e), e < o && (o = e), e > a && (a = e) })); var s = i.length; t = (a - o) / (s - 1) } e.set("xDistance", t) } return t }, findPoint: function (e, t) { var n = this, i = n.get("type"), o = n.getXScale(), s = n.getYScale(), c = o.field, l = s.field, u = null; if (r.indexOf(["heatmap", "point"], i) > -1) { var h = n.get("coord"), f = h.invert(e), d = o.invert(f.x), p = s.invert(f.y), v = 1 / 0; return r.each(t, (function (e) { var t = Math.pow(e[a][c] - d, 2) + Math.pow(e[a][l] - p, 2); t < v && (v = t, u = e) })), u } var m = t[0], g = t[t.length - 1]; if (!m) return u; var y = n._getScaleValueByPoint(e), b = m[a][c], x = m[a][l], w = g[a][c], _ = s.isLinear && r.isArray(x); if (r.isArray(b)) r.each(t, (function (e) { var t = e[a]; if (o.translate(t[c][0]) <= y && o.translate(t[c][1]) >= y) { if (!_) return u = e, !1; r.isArray(u) || (u = []), u.push(e) } })), r.isArray(u) && (u = this._filterValue(u, e)); else { var C; if (o.isLinear || "timeCat" === o.type) { if ((y > o.translate(w) || y < o.translate(b)) && (y > o.max || y < o.min)) return null; var M, O = 0, k = t.length - 1; while (O <= k) { M = Math.floor((O + k) / 2); var S = t[M][a][c]; if (n._snapEqual(S, y, o)) return t[M]; o.translate(S) <= o.translate(y) ? (O = M + 1, g = t[M], C = t[M + 1]) : (0 === k && (g = t[0]), k = M - 1) } } else r.each(t, (function (e, i) { var s = e[a]; if (n._snapEqual(s[c], y, o)) { if (!_) return u = e, !1; r.isArray(u) || (u = []), u.push(e) } else o.translate(s[c]) <= y && (g = e, C = t[i + 1]) })), r.isArray(u) && (u = this._filterValue(u, e)); g && C && Math.abs(o.translate(g[a][c]) - y) > Math.abs(o.translate(C[a][c]) - y) && (g = C) } var T = n.getXDistance(); return !u && Math.abs(o.translate(g[a][c]) - y) <= T / 2 && (u = g), u }, getTipTitle: function (e, t) { var n = "", r = this._getTipTitleScale(t); if (r) { var i = e[r.field]; n = r.getText(i) } else if ("heatmap" === this.get("type")) { var o = this.getXScale(), a = this.getYScale(), s = o.getText(e[o.field]), c = a.getText(e[a.field]); n = "( " + s + ", " + c + " )" } return n }, getTipValue: function (e, t) { var n, i = t.field, o = e.key; if (n = e[i], r.isArray(n)) { var a = []; r.each(n, (function (e) { a.push(t.getText(e)) })), n = a.join("-") } else n = t.getText(n, o); return n }, getTipName: function (e) { var t, n, i = this._getGroupScales(); if (i.length && r.each(i, (function (e) { return n = e, !1 })), n) { var o = n.field; t = n.getText(e[o]) } else { var a = this._getTipValueScale(); t = s(a) } return t }, getTipItems: function (e, t) { var n, i, c = this, l = e[a], u = c.getTipTitle(l, t), h = c.get("tooltipCfg"), f = []; function d(t, n, i) { if (!r.isNil(n) && "" !== n) { var a = { title: u, point: e, name: t || u, value: n, color: e.color || o, marker: !0 }; a.size = c._getIntervalSize(e), f.push(r.mix({}, a, i)) } } if (h) { var p = h.fields, v = h.cfg, m = []; if (r.each(p, (function (e) { m.push(l[e]) })), v) { r.isFunction(v) && (v = v.apply(null, m)); var g = r.mix({}, { point: e, title: u, color: e.color || o, marker: !0 }, v); g.size = c._getIntervalSize(e), f.push(g) } else r.each(p, (function (e) { if (!r.isNil(l[e])) { var t = c._getScale(e); n = s(t), i = t.getText(l[e]), d(n, i) } })) } else { var y = c._getTipValueScale(); r.isNil(l[y.field]) || (i = c.getTipValue(l, y), n = c.getTipName(l), d(n, i)) } return f }, isShareTooltip: function () { var e, t = this.get("shareTooltip"), n = this.get("type"), i = this.get("view"); if (e = i.get("parent") ? i.get("parent").get("options") : i.get("options"), "interval" === n) { var o = this.get("coord"), a = o.type; ("theta" === a || "polar" === a && o.isTransposed) && (t = !1) } else this.getYScale() && !r.inArray(["contour", "point", "polygon", "edge"], n) || (t = !1); return e.tooltip && r.isBoolean(e.tooltip.shared) && (t = e.tooltip.shared), t } }; e.exports = c }, function (e, t, n) { var r = n(0), i = "_origin", o = n(198), a = "_originActiveAttrs"; function s(e, t) { if (r.isNil(e) || r.isNil(t)) return !1; var n = e.get("origin"), i = t.get("origin"); return r.isEqual(n, i) } function c(e, t) { if (!e) return !0; if (e.length !== t.length) return !0; var n = !1; return r.each(t, (function (t, r) { if (!s(t, e[r])) return n = !0, !1 })), n } function l(e, t) { var n = {}; return r.each(e, (function (e, i) { var o = t.attr(i); r.isArray(o) && (o = r.cloneDeep(o)), n[i] = o })), n } var u = { _isAllowActive: function () { var e = this.get("allowActive"); if (!r.isNil(e)) return e; var t = this.get("view"), n = this.isShareTooltip(), i = t.get("options"); return !1 === i.tooltip || !n }, _onMouseenter: function (e) { var t = this, n = e.shape, r = t.get("shapeContainer"); n && r.contain(n) && t._isAllowActive() && t.setShapesActived(n) }, _onMouseleave: function () { var e = this, t = e.get("view"), n = t.get("canvas"); e.get("activeShapes") && (e.clearActivedShapes(), n.draw()) }, _bindActiveAction: function () { var e = this, t = e.get("view"), n = e.get("type"); t.on(n + ":mouseenter", r.wrapBehavior(e, "_onMouseenter")), t.on(n + ":mouseleave", r.wrapBehavior(e, "_onMouseleave")) }, _offActiveAction: function () { var e = this, t = e.get("view"), n = e.get("type"); t.off(n + ":mouseenter", r.getWrapBehavior(e, "_onMouseenter")), t.off(n + ":mouseleave", r.getWrapBehavior(e, "_onMouseleave")) }, _setActiveShape: function (e) { var t = this, n = t.get("activedOptions") || {}, i = e.get("origin"), s = i.shape || t.getDefaultValue("shape"); r.isArray(s) && (s = s[0]); var c = t.get("shapeFactory"), u = r.mix({}, e.attr(), { origin: i }), h = c.getActiveCfg(s, u); n.style && r.mix(h, n.style); var f = l(h, e); e.setSilent(a, f), n.animate ? e.animate(h, 300) : e.attr(h), o.toFront(e) }, setShapesActived: function (e) { var t = this; r.isArray(e) || (e = [e]); var n = t.get("activeShapes"); if (c(n, e)) { var i = t.get("view"), o = i.get("canvas"), a = t.get("activedOptions"); a && a.highlight ? (r.each(e, (function (e) { e.get("animating") && e.stopAnimate() })), t.highlightShapes(e)) : (n && t.clearActivedShapes(), r.each(e, (function (e) { e.get("animating") && e.stopAnimate(), e.get("visible") && t._setActiveShape(e) }))), t.set("activeShapes", e), o.draw() } }, clearActivedShapes: function () { var e = this, t = e.get("shapeContainer"), n = e.get("activedOptions"), i = n && n.animate; if (t && !t.get("destroyed")) { var s = e.get("activeShapes"); r.each(s, (function (e) { var t = e.get(a); i ? (e.stopAnimate(), e.animate(t, 300)) : e.attr(t), o.resetZIndex(e), e.setSilent(a, null) })); var c = e.get("preHighlightShapes"); if (c) { var l = t.get("children"); r.each(l, (function (e) { var t = e.get(a); t && (i ? (e.stopAnimate(), e.animate(t, 300)) : e.attr(t), o.resetZIndex(e), e.setSilent(a, null)) })) } e.set("activeShapes", null), e.set("preHighlightShapes", null) } }, getGroupShapesByPoint: function (e) { var t = this, n = t.get("shapeContainer"), o = []; if (n) { var a = t.getXScale().field, s = t.getShapes(), c = t._getOriginByPoint(e); r.each(s, (function (e) { var t = e.get("origin"); if (e.get("visible") && t) { var n = t[i][a]; n === c[a] && o.push(e) } })) } return o }, getSingleShapeByPoint: function (e) { var t, n = this, r = n.get("shapeContainer"), i = r.get("canvas"), o = i.get("pixelRatio"); if (r && (t = r.getShape(e.x * o, e.y * o)), t && t.get("origin")) return t }, highlightShapes: function (e, t) { var n = this; r.isArray(e) || (e = [e]); var i = n.get("activeShapes"); if (c(i, e)) { i && n.clearActivedShapes(); var s = n.getShapes(), u = n.get("activedOptions"), h = u && u.animate, f = u && u.style; r.each(s, (function (n) { var i = {}; n.stopAnimate(), -1 !== r.indexOf(e, n) ? (r.mix(i, f, t), o.toFront(n)) : (r.mix(i, { fillOpacity: .3, opacity: .3 }), o.resetZIndex(n)); var s = l(i, n); n.setSilent(a, s), h ? n.animate(i, 300) : n.attr(i) })), n.set("preHighlightShapes", e), n.set("activeShapes", e) } } }; e.exports = u }, function (e, t, n) { var r = n(0), i = "_origin", o = n(198); function a(e, t) { if (r.isNil(e) || r.isNil(t)) return !1; var n = e.get("origin"), i = t.get("origin"); return r.isEqual(n, i) } function s(e, t) { var n = {}; return r.each(e, (function (e, i) { "transform" === i && (i = "matrix"); var o = t.attr(i); r.isArray(o) && (o = r.cloneDeep(o)), n[i] = o })), n } var c = { _isAllowSelect: function () { var e = this.get("allowSelect"); if (!r.isNil(e)) return e; var t = this.get("type"), n = this.get("coord"), i = n && n.type; return "interval" === t && "theta" === i }, _onClick: function (e) { var t = this; if (t._isAllowSelect()) { var n = e.shape, r = t.get("shapeContainer"); n && r.contain(n) && t.setShapeSelected(n) } }, _bindSelectedAction: function () { var e = this, t = e.get("view"), n = e.get("type"); t.on(n + ":click", r.wrapBehavior(e, "_onClick")) }, _offSelectedAction: function () { var e = this, t = e.get("view"), n = e.get("type"); t.off(n + ":click", r.getWrapBehavior(e, "_onClick")) }, _setShapeStatus: function (e, t) { var n = this, i = n.get("view"), a = n.get("selectedOptions") || {}, c = !1 !== a.animate, l = i.get("canvas"); e.set("selected", t); var u = e.get("origin"); if (t) { var h = u.shape || n.getDefaultValue("shape"); r.isArray(h) && (h = h[0]); var f = n.get("shapeFactory"), d = r.mix({ geom: n, point: u }, a), p = f.getSelectedCfg(h, d); r.mix(p, d.style), e.get("_originAttrs") || (e.get("animating") && e.stopAnimate(), e.set("_originAttrs", s(p, e))), a.toFront && o.toFront(e), c ? e.animate(p, 300) : (e.attr(p), l.draw()) } else { var v = e.get("_originAttrs"); a.toFront && o.resetZIndex(e), e.set("_originAttrs", null), c ? e.animate(v, 300) : (e.attr(v), l.draw()) } }, setShapeSelected: function (e) { var t = this, n = t._getSelectedShapes(), i = t.get("selectedOptions") || {}, o = !1 !== i.cancelable; if ("multiple" === i.mode) -1 === r.indexOf(n, e) ? (n.push(e), t._setShapeStatus(e, !0)) : o && (r.Array.remove(n, e), t._setShapeStatus(e, !1)); else { var s = n[0]; o && (e = a(s, e) ? null : e), a(s, e) || (s && t._setShapeStatus(s, !1), e && t._setShapeStatus(e, !0)) } }, clearSelected: function () { var e = this, t = e.get("shapeContainer"); if (t && !t.get("destroyed")) { var n = e._getSelectedShapes(); r.each(n, (function (t) { e._setShapeStatus(t, !1), t.set("_originAttrs", null) })) } }, setSelected: function (e) { var t = this, n = t.getShapes(); return r.each(n, (function (n) { var r = n.get("origin"); r && r[i] === e && t.setShapeSelected(n) })), this }, _getSelectedShapes: function () { var e = this, t = e.getShapes(), n = []; return r.each(t, (function (e) { e.get("selected") && n.push(e) })), e.set("selectedShapes", n), n } }; e.exports = c }, function (e, t, n) { var r = n(0); e.exports = function (e) { return r.isArray(e) ? e : r.isString(e) ? e.split("*") : [e] } }, function (e, t, n) { var r = n(105), i = n(0), o = /^(?:(?!0000)[0-9]{4}([-/.]+)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]+)0?2\2(?:29))(\s+([01]|([01][0-9]|2[0-3])):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]))?$/, a = { LINEAR: "linear", CAT: "cat", TIME: "time" }, s = function () { function e(e) { this.defs = {}, this.viewTheme = { scales: {} }, this.filters = {}, i.assign(this, e) } var t = e.prototype; return t._getDef = function (e) { var t = this.defs, n = this.viewTheme, r = null; return (n.scales[e] || t[e]) && (r = i.mix({}, n.scales[e]), i.each(t[e], (function (e, t) { i.isNil(e) ? delete r[t] : r[t] = e })), this.filters[e] && (delete r.min, delete r.max)), r }, t._getDefaultType = function (e, t) { var n = a.LINEAR, r = i.Array.firstValue(t, e); return i.isArray(r) && (r = r[0]), o.test(r) ? n = a.TIME : i.isString(r) && (n = a.CAT), n }, t._getScaleCfg = function (e, t, n) { var o = { field: t }, a = i.Array.values(n, t); if (o.values = a, !r.isCategory(e) && "time" !== e) { var s = i.Array.getRange(a); o.min = s.min, o.max = s.max, o.nice = !0 } return "time" === e && (o.nice = !1), o }, t.createScale = function (e, t) { var n, o = this, a = o._getDef(e), s = t || [], c = i.Array.firstValue(s, e); if (i.isNumber(e) || i.isNil(c) && !a) n = r.identity({ value: e, field: e.toString(), values: [e] }); else { var l; a && (l = a.type), l = l || o._getDefaultType(e, s); var u = o._getScaleCfg(l, e, s); a && i.mix(u, a), n = r[l](u) } return n }, e }(); e.exports = s }, function (e, t, n) { var r = n(0), i = n(400), o = function () { function e(e) { this.type = "rect", this.actions = [], this.cfg = {}, r.mix(this, e), this.option = e || {} } var t = e.prototype; return t.reset = function (e) { return this.actions = e.actions || [], this.type = e.type, this.cfg = e.cfg, this.option.actions = this.actions, this.option.type = this.type, this.option.cfg = this.cfg, this }, t._execActions = function (e) { var t = this.actions; r.each(t, (function (t) { var n = t[0]; e[n](t[1], t[2]) })) }, t.hasAction = function (e) { var t = this.actions, n = !1; return r.each(t, (function (t) { if (e === t[0]) return n = !0, !1 })), n }, t.createCoord = function (e, t) { var n, o, a = this, s = a.type, c = a.cfg, l = r.mix({ start: e, end: t }, c); return "theta" === s ? (n = i.Polar, a.hasAction("transpose") || a.transpose(), o = new n(l), o.type = s) : (n = i[r.upperFirst(s || "")] || i.Rect, o = new n(l)), a._execActions(o), o }, t.rotate = function (e) { return e = e * Math.PI / 180, this.actions.push(["rotate", e]), this }, t.reflect = function (e) { return this.actions.push(["reflect", e]), this }, t.scale = function (e, t) { return this.actions.push(["scale", e, t]), this }, t.transpose = function () { return this.actions.push(["transpose"]), this }, e }(); e.exports = o }, function (e, t, n) { "use strict"; var r = n(56); r.Cartesian = n(401), r.Rect = r.Cartesian, r.Polar = n(402), r.Helix = n(403), e.exports = r }, function (e, t, n) { "use strict"; function r(e) { return r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r(e) } function i(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function o(e, t) { return !t || "object" !== r(t) && "function" !== typeof t ? a(e) : t } function a(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function s(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } function c(e, t, n) { return t && s(e.prototype, t), n && s(e, n), e } function l(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function"); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, writable: !0, configurable: !0 } }), t && u(e, t) } function u(e, t) { return u = Object.setPrototypeOf || function (e, t) { return e.__proto__ = t, e }, u(e, t) } function h(e, t, n) { return h = "undefined" !== typeof Reflect && Reflect.get ? Reflect.get : function (e, t, n) { var r = f(e, t); if (r) { var i = Object.getOwnPropertyDescriptor(r, t); return i.get ? i.get.call(n) : i.value } }, h(e, t, n || e) } function f(e, t) { while (!Object.prototype.hasOwnProperty.call(e, t)) if (e = d(e), null === e) break; return e } function d(e) { return d = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, d(e) } var p = n(10), v = n(56), m = function (e) { function t(e) { var n; return i(this, t), n = o(this, d(t).call(this, e)), n._init(), n } return l(t, e), c(t, [{ key: "getDefaultCfg", value: function () { var e = h(d(t.prototype), "getDefaultCfg", this).call(this); return p({}, e, { start: { x: 0, y: 0 }, end: { x: 0, y: 0 }, type: "cartesian", isRect: !0 }) } }]), c(t, [{ key: "_init", value: function () { var e = this.start, t = this.end, n = { start: e.x, end: t.x }, r = { start: e.y, end: t.y }; this.x = n, this.y = r } }, { key: "convertPoint", value: function (e) { var t, n; return this.isTransposed ? (t = e.y, n = e.x) : (t = e.x, n = e.y), { x: this.convertDim(t, "x"), y: this.convertDim(n, "y") } } }, { key: "invertPoint", value: function (e) { var t = this.invertDim(e.x, "x"), n = this.invertDim(e.y, "y"); return this.isTransposed ? { x: n, y: t } : { x: t, y: n } } }]), t }(v); e.exports = m }, function (e, t, n) { "use strict"; function r(e) { return r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r(e) } function i(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function o(e, t) { return !t || "object" !== r(t) && "function" !== typeof t ? a(e) : t } function a(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function s(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } function c(e, t, n) { return t && s(e.prototype, t), n && s(e, n), e } function l(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function"); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, writable: !0, configurable: !0 } }), t && u(e, t) } function u(e, t) { return u = Object.setPrototypeOf || function (e, t) { return e.__proto__ = t, e }, u(e, t) } function h(e, t, n) { return h = "undefined" !== typeof Reflect && Reflect.get ? Reflect.get : function (e, t, n) { var r = f(e, t); if (r) { var i = Object.getOwnPropertyDescriptor(r, t); return i.get ? i.get.call(n) : i.value } }, h(e, t, n || e) } function f(e, t) { while (!Object.prototype.hasOwnProperty.call(e, t)) if (e = d(e), null === e) break; return e } function d(e) { return d = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, d(e) } var p = n(50), v = n(30), m = n(10), g = n(56), y = p.mat3, b = p.vec2, x = p.vec3, w = function (e) { function t(e) { var n; return i(this, t), n = o(this, d(t).call(this, e)), n._init(), n } return l(t, e), c(t, [{ key: "getDefaultCfg", value: function () { var e = h(d(t.prototype), "getDefaultCfg", this).call(this); return m({}, e, { startAngle: -Math.PI / 2, endAngle: 3 * Math.PI / 2, innerRadius: 0, type: "polar", isPolar: !0 }) } }]), c(t, [{ key: "_init", value: function () { var e = this.radius, t = this.innerRadius, n = this.center, r = this.startAngle, i = this.endAngle; while (i < r) i += 2 * Math.PI; this.endAngle = i; var o, a, s = this.getOneBox(), c = s.maxX - s.minX, l = s.maxY - s.minY, u = Math.abs(s.minX) / c, h = Math.abs(s.minY) / l, f = this.width, d = this.height; d / l > f / c ? (o = f / c, a = { x: n.x - (.5 - u) * f, y: n.y - (.5 - h) * o * l }) : (o = d / l, a = { x: n.x - (.5 - u) * o * c, y: n.y - (.5 - h) * d }), e ? e > 0 && e <= 1 ? e *= o : (e <= 0 || e > o) && (e = o) : e = o; var p = { start: r, end: i }, v = { start: t * e, end: e }; this.x = p, this.y = v, this.radius = e, this.circleCentre = a, this.center = a } }, { key: "getCenter", value: function () { return this.circleCentre } }, { key: "getOneBox", value: function () { var e = this.startAngle, t = this.endAngle; if (Math.abs(t - e) >= 2 * Math.PI) return { minX: -1, maxX: 1, minY: -1, maxY: 1 }; for (var n = [0, Math.cos(e), Math.cos(t)], r = [0, Math.sin(e), Math.sin(t)], i = Math.min(e, t); i < Math.max(e, t); i += Math.PI / 18)n.push(Math.cos(i)), r.push(Math.sin(i)); return { minX: Math.min.apply(Math, n), maxX: Math.max.apply(Math, n), minY: Math.min.apply(Math, r), maxY: Math.max.apply(Math, r) } } }, { key: "getRadius", value: function () { return this.radius } }, { key: "convertPoint", value: function (e) { var t = this.getCenter(), n = this.isTransposed ? e.y : e.x, r = this.isTransposed ? e.x : e.y; return n = this.convertDim(n, "x"), r = this.convertDim(r, "y"), { x: t.x + Math.cos(n) * r, y: t.y + Math.sin(n) * r } } }, { key: "invertPoint", value: function (e) { var t = this.getCenter(), n = [e.x - t.x, e.y - t.y], r = this.x, i = [1, 0, 0, 0, 1, 0, 0, 0, 1]; y.rotate(i, i, r.start); var o = [1, 0, 0]; x.transformMat3(o, o, i), o = [o[0], o[1]]; var a = b.angleTo(o, n, r.end < r.start); v(a, 2 * Math.PI) && (a = 0); var s = b.length(n), c = a / (r.end - r.start); c = r.end - r.start > 0 ? c : -c; var l = this.invertDim(s, "y"), u = {}; return u.x = this.isTransposed ? l : c, u.y = this.isTransposed ? c : l, u } }]), t }(g); e.exports = w }, function (e, t, n) { "use strict"; function r(e) { return r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r(e) } function i(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function o(e, t) { return !t || "object" !== r(t) && "function" !== typeof t ? a(e) : t } function a(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function s(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } function c(e, t, n) { return t && s(e.prototype, t), n && s(e, n), e } function l(e, t) { if ("function" !== typeof t && null !== t) throw new TypeError("Super expression must either be null or a function"); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, writable: !0, configurable: !0 } }), t && u(e, t) } function u(e, t) { return u = Object.setPrototypeOf || function (e, t) { return e.__proto__ = t, e }, u(e, t) } function h(e, t, n) { return h = "undefined" !== typeof Reflect && Reflect.get ? Reflect.get : function (e, t, n) { var r = f(e, t); if (r) { var i = Object.getOwnPropertyDescriptor(r, t); return i.get ? i.get.call(n) : i.value } }, h(e, t, n || e) } function f(e, t) { while (!Object.prototype.hasOwnProperty.call(e, t)) if (e = d(e), null === e) break; return e } function d(e) { return d = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) }, d(e) } var p = n(50), v = n(30), m = n(10), g = n(56), y = p.vec2, b = function (e) { function t(e) { var n; return i(this, t), n = o(this, d(t).call(this, e)), n._init(), n } return l(t, e), c(t, [{ key: "getDefaultCfg", value: function () { var e = h(d(t.prototype), "getDefaultCfg", this).call(this); return m({}, e, { startAngle: 1.25 * Math.PI, endAngle: 7.25 * Math.PI, innerRadius: 0, type: "helix", isHelix: !0 }) } }]), c(t, [{ key: "_init", value: function () { var e = this.width, t = this.height, n = this.radius, r = this.innerRadius, i = this.startAngle, o = this.endAngle, a = (o - i) / (2 * Math.PI) + 1, s = Math.min(e, t) / 2; n && n >= 0 && n <= 1 && (s *= n); var c = Math.floor(s * (1 - r) / a), l = c / (2 * Math.PI), u = { start: i, end: o }, h = { start: r * s, end: r * s + .99 * c }; this.a = l, this.d = c, this.x = u, this.y = h } }, { key: "getCenter", value: function () { return this.center } }, { key: "convertPoint", value: function (e) { var t, n, r = this.a, i = this.center; this.isTransposed ? (t = e.y, n = e.x) : (t = e.x, n = e.y); var o = this.convertDim(t, "x"), a = r * o, s = this.convertDim(n, "y"); return { x: i.x + Math.cos(o) * (a + s), y: i.y + Math.sin(o) * (a + s) } } }, { key: "invertPoint", value: function (e) { var t = this.center, n = this.a, r = this.d + this.y.start, i = y.subtract([], [e.x, e.y], [t.x, t.y]), o = y.angleTo(i, [1, 0], !0), a = o * n; y.length(i) < a && (a = y.length(i)); var s = Math.floor((y.length(i) - a) / r); o = 2 * s * Math.PI + o; var c = n * o, l = y.length(i) - c; l = v(l, 0) ? 0 : l; var u = this.invertDim(o, "x"), h = this.invertDim(l, "y"); u = v(u, 0) ? 0 : u, h = v(h, 0) ? 0 : h; var f = {}; return f.x = this.isTransposed ? h : u, f.y = this.isTransposed ? u : h, f } }]), t }(g); e.exports = b }, function (e, t, n) { var r = n(0), i = n(24), o = i.Axis, a = r.MatrixUtil.vec2; function s(e) { var t = []; if (e.length > 0) { t = e.slice(0); var n = t[0], r = t[t.length - 1]; 0 !== n.value && t.unshift({ value: 0 }), 1 !== r.value && t.push({ value: 1 }) } return t } function c(e, t, n) { var r = []; return e.length < 1 || (e.length >= 2 && t && n && r.push({ text: "", tickValue: "", value: 0 }), 0 !== e[0].value && r.push({ text: "", tickValue: "", value: 0 }), r = r.concat(e), 1 !== r[r.length - 1].value && r.push({ text: "", tickValue: "", value: 1 })), r } function l(e, t) { return void 0 === t && (t = 0), "middle" === e && (t = .5), e.includes("%") && (t = parseInt(e, 10) / 100), t } var u = function () { function e(e) { this.visible = !0, this.canvas = null, this.container = null, this.coord = null, this.options = null, this.axes = [], r.mix(this, e) } var t = e.prototype; return t._isHide = function (e) { var t = this.options; return !(!t || !1 !== t[e]) }, t._getMiddleValue = function (e, t, n, r) { if (0 === e && !r) return 0; if (1 === e) return 1; var i = t[n + 1].value; return r || 1 !== i ? (e + i) / 2 : 1 }, t._getLineRange = function (e, t, n, r) { var i, o, a, s = t.field, c = this.options, u = ""; if (c[s] && c[s].position && (u = c[s].position), "x" === n) { var h = "top" === u ? 1 : 0; h = l(u, h), i = { x: 0, y: h }, o = { x: 1, y: h }, a = !1 } else { if (r) { var f = "left" === u ? 0 : 1; f = l(u, f), i = { x: f, y: 0 }, o = { x: f, y: 1 } } else { var d = "right" === u ? 1 : 0; d = l(u, d), i = { x: d, y: 0 }, o = { x: d, y: 1 } } a = !0 } return i = e.convert(i), o = e.convert(o), { start: i, end: o, isVertical: a } }, t._getLineCfg = function (e, t, n, r) { var i, o = this._getLineRange(e, t, n, r), a = o.isVertical, s = o.start, c = o.end, l = e.center; return e.isTransposed && (a = !a), i = a && s.x > l.x || !a && s.y > l.y ? 1 : -1, { isVertical: a, factor: i, start: s, end: c } }, t._getCircleCfg = function (e) { var t, n = {}, r = e.x, i = e.y, o = i.start > i.end; t = e.isTransposed ? { x: o ? 0 : 1, y: 0 } : { x: 0, y: o ? 0 : 1 }, t = e.convert(t); var s, c = e.circleCentre, l = [t.x - c.x, t.y - c.y], u = [1, 0]; s = t.y > c.y ? a.angle(l, u) : -1 * a.angle(l, u); var h = s + (r.end - r.start); return n.startAngle = s, n.endAngle = h, n.center = c, n.radius = Math.sqrt(Math.pow(t.x - c.x, 2) + Math.pow(t.y - c.y, 2)), n.inner = e.innerRadius || 0, n }, t._getRadiusCfg = function (e) { var t, n, r = e.x.start, i = r < 0 ? -1 : 1; return e.isTransposed ? (t = { x: 0, y: 0 }, n = { x: 1, y: 0 }) : (t = { x: 0, y: 0 }, n = { x: 0, y: 1 }), { factor: i, start: e.convert(t), end: e.convert(n) } }, t._getAxisPosition = function (e, t, n, r) { var i = "", o = this.options; if (o[r] && o[r].position) i = o[r].position; else { var a = e.type; e.isRect ? "x" === t ? i = "bottom" : "y" === t && (i = n ? "right" : "left") : i = "helix" === a ? "helix" : "x" === t ? e.isTransposed ? "radius" : "circle" : e.isTransposed ? "circle" : "radius" } return i }, t._getAxisDefaultCfg = function (e, t, n, i) { var o = this, a = o.viewTheme, s = {}, c = o.options, l = t.field; if (s = r.deepMix({}, a.axis[i], s, c[l]), s.viewTheme = a, s.title) { var u = r.isPlainObject(s.title) ? s.title : {}; u.text = u.text || t.alias || l, r.deepMix(s, { title: u }) } return s.ticks = t.getTicks(), e.isPolar && !t.isCategory && "x" === n && Math.abs(e.endAngle - e.startAngle) === 2 * Math.PI && s.ticks.pop(), s.coord = e, s.label && r.isNil(s.label.autoRotate) && (s.label.autoRotate = !0), c.hasOwnProperty("xField") && c.xField.hasOwnProperty("grid") && "left" === s.position && r.deepMix(s, c.xField), s }, t._getAxisCfg = function (e, t, n, i, o, a) { void 0 === o && (o = ""); var l = this, u = l._getAxisPosition(e, i, o, t.field), h = l._getAxisDefaultCfg(e, t, i, u); if (!r.isEmpty(h.grid) && n) { var f = [], d = [], p = s(n.getTicks()); if (p.length) { var v = c(h.ticks, t.isLinear, "center" === h.grid.align); r.each(v, (function (n, s) { d.push(n.tickValue); var c = [], u = n.value; if ("center" === h.grid.align && (u = l._getMiddleValue(u, v, s, t.isLinear)), !r.isNil(u)) { var m = e.x, g = e.y; r.each(p, (function (t) { var n = "x" === i ? u : t.value, r = "x" === i ? t.value : u, o = e.convert({ x: n, y: r }); if (e.isPolar) { var a = e.circleCentre; g.start > g.end && (r = 1 - r), o.flag = m.start > m.end ? 0 : 1, o.radius = Math.sqrt(Math.pow(o.x - a.x, 2) + Math.pow(o.y - a.y, 2)) } c.push(o) })), f.push({ _id: a + "-" + i + o + "-grid-" + n.tickValue, points: c }) } })) } h.grid.items = f, h.grid.tickValues = d } return h.type = t.type, h }, t._getHelixCfg = function (e) { for (var t = {}, n = e.a, r = e.startAngle, i = e.endAngle, o = 100, a = [], s = 0; s <= o; s++) { var c = e.convert({ x: s / 100, y: 0 }); a.push(c.x), a.push(c.y) } var l = e.convert({ x: 0, y: 0 }); return t.a = n, t.startAngle = r, t.endAngle = i, t.crp = a, t.axisStart = l, t.center = e.center, t.inner = e.y.start, t }, t._drawAxis = function (e, t, n, i, a, s, c) { var l, u, h = this.container, f = this.canvas; "cartesian" === e.type ? (l = o.Line, u = this._getLineCfg(e, t, i, c)) : "helix" === e.type && "x" === i ? (l = o.Helix, u = this._getHelixCfg(e)) : "x" === i ? (l = o.Circle, u = this._getCircleCfg(e)) : (l = o.Line, u = this._getRadiusCfg(e)); var d = this._getAxisCfg(e, t, n, i, c, a); d = r.mix({}, d, u), "y" === i && s && "circle" === s.get("type") && (d.circle = s), d._id = a + "-" + i, r.isNil(c) || (d._id = a + "-" + i + c), r.mix(d, { canvas: f, group: h.addGroup({ viewId: a }) }); var p = new l(d); return p.render(), this.axes.push(p), p }, t.createAxis = function (e, t, n) { var i, o = this, a = this.coord, s = a.type; "theta" === s || "polar" === s && a.isTransposed || (e && !o._isHide(e.field) && (i = o._drawAxis(a, e, t[0], "x", n)), r.isEmpty(t) || "helix" === s || r.each(t, (function (t, r) { o._isHide(t.field) || o._drawAxis(a, t, e, "y", n, i, r) }))) }, t.changeVisible = function (e) { var t = this.axes; r.each(t, (function (t) { t.set("visible", e) })) }, t.clear = function () { var e = this, t = e.axes; r.each(t, (function (e) { e.destroy() })), e.axes = [] }, e }(); e.exports = u }, function (e, t, n) { var r = n(0), i = n(406), o = function () { function e(e) { this.guides = [], this.options = [], this.xScales = null, this.yScales = null, this.view = null, this.viewTheme = null, this.frontGroup = null, this.backGroup = null, r.mix(this, e) } var t = e.prototype; return t._creatGuides = function () { var e = this, t = this.options, n = this.xScales, o = this.yScales, a = this.view, s = this.viewTheme; return this.backContainer && a && (this.backGroup = this.backContainer.addGroup({ viewId: a.get("_id") })), this.frontContainer && a && (this.frontGroup = this.frontContainer.addGroup({ viewId: a.get("_id") })), t.forEach((function (t) { var a = t.type, c = r.deepMix({ xScales: n, yScales: o, viewTheme: s }, s ? s.guide[a] : {}, t); a = r.upperFirst(a); var l = new i[a](c); e.guides.push(l) })), e.guides }, t.line = function (e) { return void 0 === e && (e = {}), this.options.push(r.mix({ type: "line" }, e)), this }, t.arc = function (e) { return void 0 === e && (e = {}), this.options.push(r.mix({ type: "arc" }, e)), this }, t.text = function (e) { return void 0 === e && (e = {}), this.options.push(r.mix({ type: "text" }, e)), this }, t.image = function (e) { return void 0 === e && (e = {}), this.options.push(r.mix({ type: "image" }, e)), this }, t.region = function (e) { return void 0 === e && (e = {}), this.options.push(r.mix({ type: "region" }, e)), this }, t.regionFilter = function (e) { return void 0 === e && (e = {}), this.options.push(r.mix({ type: "regionFilter" }, e)), this }, t.dataMarker = function (e) { return void 0 === e && (e = {}), this.options.push(r.mix({ type: "dataMarker" }, e)), this }, t.dataRegion = function (e) { return void 0 === e && (e = {}), this.options.push(r.mix({ type: "dataRegion" }, e)), this }, t.html = function (e) { return void 0 === e && (e = {}), this.options.push(r.mix({ type: "html" }, e)), this }, t.render = function (e) { var t = this, n = t.view, i = n && n.get("data"), o = t._creatGuides(); r.each(o, (function (r) { var o; o = r.get("top") ? t.frontGroup || t.frontContainer : t.backGroup || t.backContainer, r.render(e, o, i, n) })) }, t.clear = function () { this.options = [], this.reset() }, t.changeVisible = function (e) { var t = this.guides; r.each(t, (function (t) { t.changeVisible(e) })) }, t.reset = function () { var e = this.guides; r.each(e, (function (e) { e.clear() })), this.guides = [], this.backGroup && this.backGroup.remove(), this.frontGroup && this.frontGroup.remove() }, e }(); e.exports = o }, function (e, t, n) { var r = n(24), i = r.Guide, o = n(407); i.RegionFilter = o, e.exports = i }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(0), o = n(17), a = n(112), s = a.Path, c = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return i.mix({}, t, { name: "regionFilter", zIndex: 1, top: !0, start: null, end: null, color: null, apply: null, style: { opacity: 1 } }) }, n.render = function (e, t, n, r) { var i = this, o = t.addGroup(); o.name = "guide-region-filter", r.once("afterpaint", (function () { if (!o.get("destroyed")) { i._drawShapes(r, o); var t = i._drawClip(e); o.attr({ clip: t }), i.set("clip", t), i.get("appendInfo") && o.setSilent("appendInfo", i.get("appendInfo")), i.set("el", o) } })) }, n._drawShapes = function (e, t) { var n = this, r = [], o = e.getAllGeoms(); return o.map((function (e) { var o = e.getShapes(), a = e.get("type"), s = n._geomFilter(a); return s && o.map((function (e) { var o = e.type, a = i.cloneDeep(e.attr()); n._adjustDisplay(a); var s = t.addShape(o, { attrs: a }); return r.push(s), e })), e })), r }, n._drawClip = function (e) { var t = this, n = t.parsePoint(e, t.get("start")), r = t.parsePoint(e, t.get("end")), i = [["M", n.x, n.y], ["L", r.x, n.y], ["L", r.x, r.y], ["L", n.x, r.y], ["z"]], o = new s({ attrs: { path: i, opacity: 1 } }); return o }, n._adjustDisplay = function (e) { var t = this, n = t.get("color"); e.fill && (e.fill = e.fillStyle = n), e.stroke = e.strokeStyle = n }, n._geomFilter = function (e) { var t = this, n = t.get("apply"); return !n || i.contains(n, e) }, n.clear = function () { e.prototype.clear.call(this); var t = this.get("clip"); t && t.remove() }, t }(o); e.exports = c }, function (e, t, n) { function r() { return r = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }, r.apply(this, arguments) } var i = n(0), o = n(24), a = o.Legend, s = n(409), c = n(21), l = n(200), u = n(202), h = n(8), f = "_origin", d = 4.5, p = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame, v = ["cross", "tick", "plus", "hyphen", "line", "hollowCircle", "hollowSquare", "hollowDiamond", "hollowTriangle", "hollowTriangleDown", "hollowHexagon", "hollowBowtie"]; function m(e, t, n) { var r; return !i.isNil(n) && (e = n.translate(e), t = n.translate(t), r = n.isCategory ? e === t : Math.abs(e - t) <= 1, r) } function g(e, t) { var n; return i.each(e, (function (e) { if (e.get("visible")) { var r = e.getYScale(); if (r.field === t) return void (n = e) } })), n } var y = function () { function e(e) { var t = this; t.options = {}, i.mix(t, e), t.clear(); var n = t.chart; t.container = n.get("frontPlot"), t.plotRange = n.get("plotRange") } var t = e.prototype; return t.clear = function () { var e = this.legends; this.backRange = null, i.each(e, (function (e) { i.each(e, (function (e) { e.destroy() })) })), this.legends = {} }, t.getBackRange = function () { var e = this.backRange; if (!e) { var t = this.chart.get("backPlot"); e = l(t, u(this.chart.get("plotRange"))); var n = this.plotRange; e.maxX - e.minX < n.br.x - n.tl.x && e.maxY - e.minY < n.br.y - n.tl.y && (e = { minX: n.tl.x, minY: n.tl.y, maxX: n.br.x, maxY: n.br.y }), this.backRange = e } return e }, t._isFieldInView = function (e, t, n) { var r = !1, o = n.get("scales"), a = o[e]; return a && a.values && (r = i.inArray(a.values, t)), r }, t._bindClickEvent = function (e, t, n) { var r = this, o = r.chart, a = o.get("views"), s = t.field, c = r.options; e.on("itemclick", (function (t) { if (c.onClick && !0 !== c.defaultClickHandlerEnabled) c.onClick(t); else { var l = t.item, u = t.checked, h = "single" === e.get("selectedMode"), f = l.dataValue; u ? (i.Array.remove(n, f), r._isFieldInView(s, f, o) && o.filter(s, (function (e) { return h ? e === f : !i.inArray(n, e) })), i.each(a, (function (e) { r._isFieldInView(s, f, e) && e.filter(s, (function (e) { return h ? e === f : !i.inArray(n, e) })) }))) : h || (n.push(f), r._isFieldInView(s, f, o) && o.filter(s, (function (e) { return !i.inArray(n, e) })), i.each(a, (function (e) { r._isFieldInView(s, f, e) && e.filter(s, (function (e) { return !i.inArray(n, e) })) }))), c.onClick && c.onClick(t), o.set("keepLegend", !0), o.set("keepPadding", !0), o.repaint(), o.set("keepPadding", !1), o.set("keepLegend", !1) } })) }, t._bindClickEventForMix = function (e) { var t = this, n = t.chart, r = n.getAllGeoms(); e.on("itemclick", (function (e) { var t = e.item.field, n = e.checked; n ? i.each(r, (function (e) { var n = e.getYScale().field; n === t && e.show() })) : i.each(r, (function (e) { var n = e.getYScale().field; n === t && e.hide() })) })) }, t._filterLabels = function (e, t, n) { if (e.get("gLabel")) e.get("gLabel").set("visible", n); else { var r = t.get("labelCfg"); if (r && r.fields && r.fields.length > 0) { var o = t.getXScale(), a = t.getYScale(), s = o.field, c = a.field, l = e.get("origin")._origin, u = t.get("labelContainer"), h = u.get("labelsGroup").get("children"); i.each(h, (function (t) { var r = t.get("origin") || []; r[s] === l[s] && r[c] === l[c] && (t.set("visible", n), e.set("gLabel", t)) })) } } }, t._bindFilterEvent = function (e, t) { var n = this, r = this.chart, o = t.field; e.on("itemfilter", (function (e) { var t = e.range; r.filterShape((function (e, r, a) { if (!i.isNil(e[o])) { var s = e[o] >= t[0] && e[o] <= t[1]; return n._filterLabels(r, a, s), s } return !0 })); for (var a = r.getAllGeoms() || [], s = function (e) { var n = a[e]; "heatmap" === n.get("type") && p((function () { n.drawWithRange(t) })) }, c = 0; c < a.length; c++)s(c) })) }, t._getShapeData = function (e) { var t = e.get("origin"); return i.isArray(t) && (t = t[0]), t[f] }, t._bindHoverEvent = function (e, t) { var n = this, r = n.chart, o = r.getAllGeoms(), a = n.options, s = r.get("canvas"); e.on("itemhover", (function (e) { var r = e.item.value, c = n.pre; if (c) { if (c === r) return } else i.each(o, (function (o) { var c = o.get("shapeContainer"), l = o.getShapes(), u = []; if (t) { var h = o.get("scales")[t]; i.each(l, (function (e) { var i = n._getShapeData(e); i && m(i[t], r, h) && u.push(e) })) } else o.getYScale().field === r && (u = l); i.isEmpty(u) || (e.shapes = u, e.geom = o, a.onHover ? (a.onHover(e), c.sort(), s.draw()) : o.setShapesActived(u)) })), n.pre = r })), e.on("itemunhover", (function (e) { n.pre = null, a.onUnhover && a.onUnhover(e), i.each(o, (function (e) { e.get("activeShapes") && (e.clearActivedShapes(), s.draw()) })) })) }, t._isFiltered = function (e, t, n) { if (!e.isCategory) return !0; var r = !0; return n = e.invert(n), i.each(t, (function (t) { if (e.getText(t) === e.getText(n)) return r = !1, !1 })), r }, t._alignLegend = function (e, t, n, r) { var i = this, o = i.viewTheme, a = i.container, s = a.get("canvas"), c = s.get("width"), l = s.get("height"), u = i.totalRegion, h = i.plotRange, f = i.getBackRange(), d = e.get("offset")[0] || 0, p = e.get("offset")[1] || 0, v = e.getHeight(), m = e.getWidth(), g = o.legend.margin, y = o.legend.legendMargin, b = i.legends[r].length, x = r.split("-"), w = 0, _ = 0, C = b > 1 ? u : n; if ("left" === x[0] || "right" === x[0]) l = h.br.y, w = i._getXAlign(x[0], c, n, f, m, g), _ = t ? (t.get("y") || t.get("group").get("y")) + t.getHeight() + y : i._getYAlignVertical(x[1], l, C, f, 0, g, s.get("height")); else if ("top" === x[0] || "bottom" === x[0]) if (_ = i._getYAlignHorizontal(x[0], l, n, f, v, g), t) { var M = t.getWidth(); w = (t.get("x") || t.get("group").get("x")) + M + y } else w = i._getXAlign(x[1], c, C, f, 0, g), "right" === x[1] && (w = h.br.x - C.totalWidth); e.move(w + d, _ + p) }, t._getXAlign = function (e, t, n, r, i, o) { var a = r.minX - i - o[3] < 0 ? 0 : r.minX - i - o[3], s = "left" === e ? a : r.maxX + o[1]; return "center" === e && (s = (t - n.totalWidth) / 2), s }, t._getYAlignHorizontal = function (e, t, n, r, i, o) { var a = "top" === e ? r.minY - i - o[0] : r.maxY + o[2]; return a }, t._getYAlignVertical = function (e, t, n, r, i, o, a) { var s = "top" === e ? r.minY - i - o[0] : t - n.totalHeight; return "center" === e && (s = (a - n.totalHeight) / 2), s }, t._getSubRegion = function (e) { var t = 0, n = 0, r = 0, o = 0; return i.each(e, (function (e) { var i = e.getWidth(), a = e.getHeight(); t < i && (t = i), r += i, n < a && (n = a), o += a })), { maxWidth: t, totalWidth: r, maxHeight: n, totalHeight: o } }, t._getRegion = function () { var e = this, t = e.viewTheme, n = e.legends, r = t.legend.legendMargin, o = [], a = 0, s = 0; return i.each(n, (function (t) { var n = e._getSubRegion(t); o.push(n), a += n.totalWidth + r, s += n.totalHeight + r })), { totalWidth: a, totalHeight: s, subs: o } }, t._addCategoryLegend = function (e, t, n, o, l) { var u = this, f = e.field, d = u.options, p = d[f]; p && (d = p); var v = u.legends; v[l] = v[l] || []; var m = u.container, g = [], y = e.getTicks(), b = !0, x = n.get("shapeType") || "point", w = n.getDefaultValue("shape") || "circle"; d[f] && d[f].marker ? (w = d[f].marker, x = "point", b = !1) : d.marker && (w = d.marker, x = "point", b = !1); var _ = u.chart, C = u.viewTheme, M = _.get("canvas"), O = u.plotRange, k = l.split("-"), S = "right" === k[0] || "left" === k[0] ? O.bl.y - O.tr.y : M.get("width"); i.each(y, (function (t) { var r = t.text, a = r, s = t.value, l = e.invert(s), f = { isInCircle: n.isInCircle() }, d = !o || u._isFiltered(e, o, s), p = n.getAttr("color"), v = n.getAttr("shape"); if (p) if (p.callback && p.callback.length > 1) { var m = Array(p.callback.length - 1).fill(""); f.color = p.mapping.apply(p, [l].concat(m)).join("") || C.defaultColor } else f.color = p.mapping(l).join("") || C.defaultColor; if (b && v) if (v.callback && v.callback.length > 1) { var y = Array(v.callback.length - 1).fill(""); w = v.mapping.apply(v, [l].concat(y)).join("") } else w = v.mapping(l).join(""); var _ = c.getShapeFactory(x), M = _.getMarkerCfg(w, f); h.legendMarkerRadius && (M.radius = h.legendMarkerRadius), i.isFunction(w) && (M.symbol = w), g.push({ value: a, dataValue: l, checked: d, marker: M }) })); var T, A = i.deepMix({}, C.legend[k[0]], d[f] || d, { viewId: _.get("_id"), maxLength: S, items: g, container: m, position: [0, 0] }); if (A.title && i.deepMix(A, { title: { text: e.alias || e.field } }), u._isTailLegend(d, n)) A.chart = u.chart, A.geom = n, T = new s(A); else if (d.useHtml) { var L = m.get("canvas").get("el"); if (m = d.container, i.isString(m) && /^\#/.test(m)) { var j = m.replace("#", ""); m = document.getElementById(j) } m || (m = L.parentNode), A.container = m, void 0 === A.legendStyle && (A.legendStyle = {}), A.legendStyle.CONTAINER_CLASS = r({}, A.legendStyle.CONTAINER_CLASS, { position: "absolute", overflow: "auto", "z-index": "" === L.style.zIndex ? 1 : parseInt(L.style.zIndex, 10) + 1 }), d.flipPage ? (A.legendStyle.CONTAINER_CLASS.height = "right" === k[0] || "left" === k[0] ? S + "px" : "auto", A.legendStyle.CONTAINER_CLASS.width = "right" !== k[0] && "left" !== k[0] ? S + "px" : "auto", T = new a.CatPageHtml(A)) : T = new a.CatHtml(A) } else T = new a.Category(A); return u._bindClickEvent(T, e, o), v[l].push(T), T }, t._bindChartMove = function (e) { var t = this.chart, n = this.legends; t.on("plotmove", (function (t) { var r = !1; if (t.target) { var o = t.target.get("origin"); if (o) { var a = o[f] || o[0][f], s = e.field; if (a) { var c = a[s]; i.each(n, (function (e) { i.each(e, (function (e) { r = !0, !e.destroyed && e.activate(c) })) })) } } } r || i.each(n, (function (e) { i.each(e, (function (e) { !e.destroyed && e.deactivate() })) })) })) }, t._addContinuousLegend = function (e, t, n) { var r = this, o = r.legends; o[n] = o[n] || []; var s, c, l, u = r.container, h = e.field, f = e.getTicks(), d = [], p = r.viewTheme; i.each(f, (function (n) { var r = n.value, i = e.invert(r), o = t.mapping(i).join(""); d.push({ value: n.tickValue, attrValue: o, color: o, scaleValue: r }), 0 === r && (c = !0), 1 === r && (l = !0) })), c || d.push({ value: e.min, attrValue: t.mapping(0).join(""), color: t.mapping(0).join(""), scaleValue: 0 }), l || d.push({ value: e.max, attrValue: t.mapping(1).join(""), color: t.mapping(1).join(""), scaleValue: 1 }); var v = r.options, m = n.split("-"), g = p.legend[m[0]]; (v && !1 === v.slidable || v[h] && !1 === v[h].slidable) && (g = i.mix({}, g, p.legend.gradient)); var y = i.deepMix({}, g, v[h] || v, { items: d, attr: t, formatter: e.formatter, container: u, position: [0, 0] }); if (y.title && i.deepMix(y, { title: { text: e.alias || e.field } }), "color" === t.type) s = new a.Color(y); else { if ("size" !== t.type) return; s = v && "circle" === v.sizeType ? new a.CircleSize(y) : new a.Size(y) } return r._bindFilterEvent(s, e), o[n].push(s), s }, t._isTailLegend = function (e, t) { if (e.hasOwnProperty("attachLast") && e.attachLast) { var n = t.get("type"); if ("line" === n || "lineStack" === n || "area" === n || "areaStack" === n) return !0 } return !1 }, t._adjustPosition = function (e, t) { var n; if (t) n = "right-top"; else if (i.isArray(e)) n = String(e[0]) + "-" + String(e[1]); else { var r = e.split("-"); 1 === r.length ? ("left" === r[0] && (n = "left-bottom"), "right" === r[0] && (n = "right-bottom"), "top" === r[0] && (n = "top-center"), "bottom" === r[0] && (n = "bottom-center")) : n = e } return n }, t.addLegend = function (e, t, n, r) { var i = this, o = i.options, a = e.field, s = o[a], c = i.viewTheme; if (!1 === s) return null; if (s && s.custom) i.addCustomLegend(a); else { var l, u = o.position || c.defaultLegendPosition; u = i._adjustPosition(u, i._isTailLegend(o, n)), s && s.position && (u = i._adjustPosition(s.position, i._isTailLegend(s, n))), l = e.isLinear ? i._addContinuousLegend(e, t, u) : i._addCategoryLegend(e, t, n, r, u), l && (i._bindHoverEvent(l, a), o.reactive && i._bindChartMove(e)) } }, t.addCustomLegend = function (e) { var t = this, n = t.chart, r = t.viewTheme, o = t.container, s = t.options; e && (s = s[e]); var c = s.position || r.defaultLegendPosition; c = t._adjustPosition(c); var l = t.legends; l[c] = l[c] || []; var u = s.items; if (u) { var f = n.getAllGeoms(); i.each(u, (function (e) { var t = g(f, e.value); i.isPlainObject(e.marker) ? e.marker.radius = e.marker.radius || h.legendMarkerRadius || d : (e.marker = { symbol: e.marker || "circle", radius: h.legendMarkerRadius || d }, -1 !== i.indexOf(v, e.marker.symbol) ? e.marker.stroke = e.fill : e.marker.fill = e.fill); var n = e.marker.symbol; i.isString(n) && -1 !== n.indexOf("hollow") && (e.marker.symbol = i.lowerFirst(n.substr(6))), e.checked = !!i.isNil(e.checked) || e.checked, e.geom = t })); var p, m = n.get("canvas"), y = t.plotRange, b = c.split("-"), x = "right" === b[0] || "left" === b[0] ? y.bl.y - y.tr.y : m.get("width"), w = i.deepMix({}, r.legend[b[0]], s, { maxLength: x, items: u, container: o, position: [0, 0] }); if (s.useHtml) { var _ = s.container; if (/^\#/.test(o)) { var C = _.replace("#", ""); _ = document.getElementById(C) } else _ || (_ = o.get("canvas").get("el").parentNode); w.container = _, void 0 === w.legendStyle && (w.legendStyle = {}), w.legendStyle.CONTAINER_CLASS || (w.legendStyle.CONTAINER_CLASS = { height: "right" === b[0] || "left" === b[0] ? x + "px" : "auto", width: "right" !== b[0] && "left" !== b[0] ? x + "px" : "auto", position: "absolute", overflow: "auto" }), p = s.flipPage ? new a.CatPageHtml(w) : new a.CatHtml(w) } else p = new a.Category(w); return l[c].push(p), p.on("itemclick", (function (e) { s.onClick && s.onClick(e) })), t._bindHoverEvent(p), p } }, t.addMixedLegend = function (e, t) { var n = this, r = n.options, o = []; i.each(e, (function (e) { var n = e.alias || e.field, a = r[e.field]; i.each(t, (function (t) { if (t.getYScale() === e && e.values && e.values.length > 0 && !1 !== a) { var r = t.get("shapeType") || "point", i = t.getDefaultValue("shape") || "circle", s = c.getShapeFactory(r), l = { color: t.getDefaultValue("color") }, u = s.getMarkerCfg(i, l); h.legendMarkerRadius && (u.radius = h.legendMarkerRadius); var f = { value: n, marker: u, field: e.field }; o.push(f) } })) })); var a = { custom: !0, items: o }; n.options = i.deepMix({}, a, n.options); var s = n.addCustomLegend(); n._bindClickEventForMix(s) }, t.alignLegends = function () { var e = this, t = e.legends, n = e._getRegion(t); e.totalRegion = n; var r = 0; return i.each(t, (function (t, o) { var a = n.subs[r]; i.each(t, (function (n, r) { var i = t[r - 1]; n.get("useHtml") && !n.get("autoPosition") || e._alignLegend(n, i, a, o) })), r++ })), this }, e }(); e.exports = y }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(0), o = n(24), a = n(8), s = o.Legend, c = s.Category, l = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return i.mix({}, t, { type: "tail-legend", layout: "vertical", autoLayout: !0 }) }, n._addItem = function (e) { var t = this.get("itemsGroup"), n = this._getNextX(), r = 0, o = this.get("unCheckColor"), a = t.addGroup({ x: 0, y: 0, value: e.value, scaleValue: e.scaleValue, checked: e.checked }); a.translate(n, r), a.set("viewId", t.get("viewId")); var s = this.get("textStyle"), c = this.get("_wordSpaceing"), l = 0; if (e.marker) { var u = i.mix({}, e.marker, { x: e.marker.radius, y: 0 }); e.checked || (u.fill && (u.fill = o), u.stroke && (u.stroke = o)); var h = a.addShape("marker", { type: "marker", attrs: u }); h.attr("cursor", "pointer"), h.name = "legend-marker", l += h.getBBox().width + c } var f = i.mix({}, s, { x: l, y: 0, text: this._formatItemValue(e.value) }); e.checked || i.mix(f, { fill: o }); var d = a.addShape("text", { attrs: f }); d.attr("cursor", "pointer"), d.name = "legend-text", this.get("appendInfo") && d.setSilent("appendInfo", this.get("appendInfo")); var p = a.getBBox(), v = this.get("itemWidth"), m = a.addShape("rect", { attrs: { x: n, y: r - p.height / 2, fill: "#fff", fillOpacity: 0, width: v || p.width, height: p.height } }); return m.attr("cursor", "pointer"), m.setSilent("origin", e), m.name = "legend-item", this.get("appendInfo") && m.setSilent("appendInfo", this.get("appendInfo")), a.name = "legendGroup", a }, n._adjust = function () { var e = this, t = e.get("geom"); if (t) { var n = e.get("group").attr("matrix"); n[7] = 0; var r = e.get("geom").get("dataArray"), o = this.get("itemsGroup").get("children"), a = 0; i.each(o, (function (e) { var t = r[a], n = t[t.length - 1].y; i.isArray(n) && (n = n[1]); var o = e.getBBox().height, s = e.get("x"), c = n - o / 2; e.translate(s, c), a++ })), e.get("autoLayout") && e._antiCollision(o) } }, n.render = function () { var t = this; e.prototype.render.call(this); var n = this.get("chart"); n.once("afterpaint", (function () { t._adjust() })) }, n._getPreviousY = function (e) { var t = e.attr("matrix")[7], n = e.getBBox().height; return t + n }, n._adjustDenote = function (e, t, n) { var r = a.legend.legendMargin, i = -2, o = 2 * -r; e.addShape("path", { attrs: { path: "M" + i + "," + t + "L" + o + "," + (n + 3), lineWidth: 1, lineDash: [2, 2], stroke: "#999999" } }) }, n._antiCollision = function (e) { if (void 0 === e && (e = []), e.length) { var t = this; e.sort((function (e, t) { var n = e.attr("matrix")[7], r = t.attr("matrix")[7]; return n - r })); var n = !0, r = t.get("chart").get("plotRange"), i = r.tl.y, o = Math.abs(i - r.bl.y), a = e[0].getBBox().height, s = Number.MIN_VALUE, c = 0, l = e.map((function (e) { var t = e.attr("matrix")[7]; return t > c && (c = t), t < s && (s = t), { size: e.getBBox().height, targets: [t - i] } })); s -= i; var u = 0; while (n) { for (var h = 0; h < l.length; h++) { var f = l[h], d = (Math.min.apply(s, f.targets) + Math.max.apply(s, f.targets)) / 2; f.pos = Math.min(Math.max(s, d - f.size / 2), o - f.size) } n = !1, u = l.length; while (u--) if (u > 0) { var p = l[u - 1], v = l[u]; p.pos + p.size > v.pos && (p.size += v.size, p.targets = p.targets.concat(v.targets), l.splice(u, 1), n = !0) } } u = 0; var m = this.get("itemsGroup").addGroup(); l.forEach((function (n) { var r = i + a; n.targets.forEach((function () { var i = e[u].attr("matrix")[7], o = n.pos + r - a / 2, s = Math.abs(i - o); s > a / 2 && t._adjustDenote(m, o, i - t.get("group").attr("matrix")[7] / 2), e[u].translate(0, -i), e[u].translate(0, o), r += a, u++ })) })) } }, t }(c); e.exports = l }, function (e, t, n) { function r() { return r = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }, r.apply(this, arguments) } var i = n(0), o = n(21), a = n(24), s = a.Tooltip, c = i.MatrixUtil, l = c.vec2, u = ["line", "area", "path", "areaStack"], h = ["line", "area", "point"], f = ["marker", "showMarker"]; function d(e, t) { var n = -1; return i.each(e, (function (e, r) { var o = !0; for (var a in t) if (t.hasOwnProperty(a) && !f.includes(a) && !i.isObject(t[a]) && t[a] !== e[a]) { o = !1; break } if (o) return n = r, !1 })), n } function p(e, t) { if (!e) return !1; var n = ""; return !!e.className && (n = i.isNil(e.className.baseVal) ? e.className : e.className.baseVal, n.includes(t)) } function v(e, t) { var n = e.parentNode, r = !1; while (n && n !== document.body) { if (p(n, t)) { r = !0; break } n = n.parentNode } return r } function m(e) { var t = []; return i.each(e, (function (e) { var n = d(t, e); -1 === n ? t.push(e) : t[n] = e })), t } var g = function () { function e(e) { i.assign(this, e), this.timeStamp = 0, this.locked = !1 } var t = e.prototype; return t._normalizeEvent = function (e) { var t = this.chart, n = this._getCanvas(), r = n.getPointByClient(e.clientX, e.clientY), i = n.get("pixelRatio"); r.x = r.x / i, r.y = r.y / i; var o = t.getViewsByPoint(r); return r.views = o, r }, t._getCanvas = function () { return this.chart.get("canvas") }, t._getTriggerEvent = function () { var e, t = this.options, n = t.triggerOn; return n && "mousemove" !== n ? "click" === n ? e = "plotclick" : "none" === n && (e = null) : e = "plotmove", e }, t._getDefaultTooltipCfg = function () { var e = this, t = e.chart, n = e.viewTheme, r = e.options, o = i.mix({}, n.tooltip), a = t.getAllGeoms().filter((function (e) { return e.get("visible") })), s = []; i.each(a, (function (e) { var t = e.get("type"), n = e.get("adjusts"), r = !1; n && i.each(n, (function (e) { if ("symmetric" === e.type || "Symmetric" === e.type) return r = !0, !1 })), -1 !== i.indexOf(s, t) || r || s.push(t) })); var c, l = !(!a.length || !a[0].get("coord")) && a[0].get("coord").isTransposed; if (a.length && a[0].get("coord") && "cartesian" === a[0].get("coord").type) if ("interval" === s[0] && !1 !== r.shared) { var u = i.mix({}, n.tooltipCrosshairsRect); u.isTransposed = l, c = { zIndex: 0, crosshairs: u } } else if (i.indexOf(h, s[0]) > -1) { var f = i.mix({}, n.tooltipCrosshairsLine); f.isTransposed = l, c = { crosshairs: f } } return i.mix(o, c, {}) }, t._bindEvent = function () { var e = this.chart, t = this._getTriggerEvent(); t && (e.on(t, i.wrapBehavior(this, "onMouseMove")), e.on("plotleave", i.wrapBehavior(this, "onMouseOut"))) }, t._offEvent = function () { var e = this.chart, t = this._getTriggerEvent(); t && (e.off(t, i.getWrapBehavior(this, "onMouseMove")), e.off("plotleave", i.getWrapBehavior(this, "onMouseOut"))) }, t._setTooltip = function (e, t, n, r) { var o = this, a = o.tooltip, s = o.prePoint; if (!s || s.x !== e.x || s.y !== e.y) { t = m(t), o.prePoint = e; var c = o.chart, l = o.viewTheme, u = i.isArray(e.x) ? e.x[e.x.length - 1] : e.x, h = i.isArray(e.y) ? e.y[e.y.length - 1] : e.y; a.get("visible") || c.emit("tooltip:show", { x: u, y: h, tooltip: a }); var f = t[0], d = f.title || f.name; a.isContentChange(d, t) && (c.emit("tooltip:change", { tooltip: a, x: u, y: h, items: t }), d = t[0].title || t[0].name, a.setContent(d, t), i.isEmpty(n) ? (a.clearMarkers(), a.set("markerItems", [])) : !0 === o.options.hideMarkers ? a.set("markerItems", n) : a.setMarkers(n, l.tooltipMarker)); var p = this._getCanvas(); r === p && "mini" === a.get("type") ? a.hide() : (a.setPosition(u, h, r), a.show()) } }, t.hideTooltip = function () { var e = this.tooltip, t = this.chart, n = this._getCanvas(); this.prePoint = null, e.hide(), t.emit("tooltip:hide", { tooltip: e }), n.draw() }, t.onMouseMove = function (e) { if (!i.isEmpty(e.views) && !this.locked) { var t = this.timeStamp, n = +new Date, r = { x: e.x, y: e.y }; n - t > 16 && !this.chart.get("stopTooltip") && (this.showTooltip(r, e.views, e.shape), this.timeStamp = n) } }, t.onMouseOut = function (e) { var t = this.tooltip; t.get("visible") && t.get("follow") && !this.locked && (e && e.toElement && (p(e.toElement, "g2-tooltip") || v(e.toElement, "g2-tooltip")) || this.hideTooltip()) }, t.renderTooltip = function () { var e = this; if (!e.tooltip) { var t, n = e.chart, r = e.viewTheme, o = e._getCanvas(), a = e._getDefaultTooltipCfg(), c = e.options; c = i.deepMix({ plotRange: n.get("plotRange"), capture: !1, canvas: o, frontPlot: n.get("frontPlot"), viewTheme: r.tooltip, backPlot: n.get("backPlot") }, a, c), c.crosshairs && "rect" === c.crosshairs.type && (c.zIndex = 0), c.visible = !1, "mini" === c.type ? (c.crosshairs = !1, c.position = "top", t = new s.Mini(c)) : t = c.useHtml ? new s.Html(c) : new s.Canvas(c), e.tooltip = t; var l = e._getTriggerEvent(), u = t.get("container"); t.get("enterable") || "plotmove" !== l || u && (u.onmousemove = function (t) { var r = e._normalizeEvent(t); n.emit(l, r) }), u && (u.onmouseleave = function () { e.locked || e.hideTooltip() }), e._bindEvent() } }, t._formatMarkerOfItem = function (e, t, n) { var r = this, o = r.options, a = n.point; if (a && a.x && a.y) { var s = i.isArray(a.x) ? a.x[a.x.length - 1] : a.x, c = i.isArray(a.y) ? a.y[a.y.length - 1] : a.y; a = e.applyMatrix(s, c, 1), n.x = a[0], n.y = a[1], n.showMarker = !0, "l(" !== n.color.substring(0, 2) || o.hasOwnProperty("useHtml") && !o.useHtml || (n.color = n.color.split(" ")[1].substring(2)); var l = r._getItemMarker(t, n); if (n.marker = l, -1 !== i.indexOf(u, t.get("type"))) return n } return null }, t.lockTooltip = function () { this.locked = !0 }, t.unlockTooltip = function () { this.locked = !1 }, t.showTooltip = function (e, t, n) { var r = this, o = this; if (!i.isEmpty(t) && e) { this.tooltip || this.renderTooltip(); var a = o.options, s = [], c = []; if (i.each(t, (function (t) { if (!t.get("tooltipEnable")) return !0; var n = t.get("geoms"), l = t.get("coord"); i.each(n, (function (t) { var n = t.get("type"); if (t.get("visible") && !1 !== t.get("tooltipCfg")) { var u = t.get("dataArray"); if (t.isShareTooltip() || !1 === a.shared && i.inArray(["area", "line", "path", "polygon"], n)) { var h = t.getXScale(), f = t.getAttr("color"), d = f ? f.field : void 0; if ("interval" === n && h.field === d && t.hasAdjust("dodge")) { var p = i.find(u, (function (n) { return !!t.findPoint(e, n) })); i.each(p, (function (e) { var n = t.getTipItems(e, a.title); i.each(n, (function (e) { var n = o._formatMarkerOfItem(l, t, e); n && s.push(n) })), c = c.concat(n) })) } else i.each(u, (function (n) { var r = t.findPoint(e, n); if (r) { var u = t.getTipItems(r, a.title); i.each(u, (function (e) { var n = o._formatMarkerOfItem(l, t, e); n && s.push(n) })), c = c.concat(u) } })) } else { var v = t.get("shapeContainer"), m = v.get("canvas"), g = m.get("pixelRatio"), y = v.getShape(e.x * g, e.y * g); y && y.get("visible") && y.get("origin") && (c = t.getTipItems(y.get("origin"), a.title)), i.each(c, (function (e) { var n = r._formatMarkerOfItem(l, t, e); n && s.push(n) })) } } })), i.each(c, (function (e) { var t = e.point, n = i.isArray(t.x) ? t.x[t.x.length - 1] : t.x, r = i.isArray(t.y) ? t.y[t.y.length - 1] : t.y; t = l.applyMatrix(n, r, 1), e.x = t[0], e.y = t[1] })) })), c.length) { var u = c[0]; if (!c.every((function (e) { return e.title === u.title }))) { var h = u, f = 1 / 0; c.forEach((function (t) { var n = l.distance([e.x, e.y], [t.x, t.y]); n < f && (f = n, h = t) })), c = c.filter((function (e) { return e.title === h.title })), s = s.filter((function (e) { return e.title === h.title })) } if (!1 === a.shared && c.length > 1) { var d = c[0], p = Math.abs(e.y - d.y); i.each(c, (function (t) { Math.abs(e.y - t.y) <= p && (d = t, p = Math.abs(e.y - t.y)) })), d && d.x && d.y && (s = [d]), c = [d] } o._setTooltip(e, c, s, n) } else o.hideTooltip() } }, t.clear = function () { var e = this.tooltip; e && e.destroy(), this.tooltip = null, this.prePoint = null, this._offEvent() }, t._getItemMarker = function (e, t) { var n = this.options, a = n.marker || this.viewTheme.tooltip.marker; if (i.isFunction(a)) { var s = e.get("shapeType") || "point", c = e.getDefaultValue("shape") || "circle", l = o.getShapeFactory(s), u = { color: t.color }, h = l.getMarkerCfg(c, u); return a(h, t) } return r({ fill: t.color }, a) }, e }(); e.exports = g }, function (e, t, n) { var r = n(0); function i(e, t) { if (r.isNil(e) || r.isNil(t)) return !1; var n = e.get("origin"), i = t.get("origin"); return r.isNil(n) && r.isNil(i) ? r.isEqual(e, t) : r.isEqual(n, i) } function o(e) { e.shape && e.shape.get("origin") && (e.data = e.shape.get("origin")) } var a = function () { function e(e) { this.view = null, this.canvas = null, r.assign(this, e), this._init() } var t = e.prototype; return t._init = function () { this.pixelRatio = this.canvas.get("pixelRatio") }, t._getShapeEventObj = function (e) { return { x: e.x / this.pixelRatio, y: e.y / this.pixelRatio, target: e.target, toElement: e.event.toElement || e.event.relatedTarget } }, t._getShape = function (e, t) { var n = this.view, r = n.get("canvas"); return r.getShape(e, t) }, t._getPointInfo = function (e) { var t = this.view, n = { x: e.x / this.pixelRatio, y: e.y / this.pixelRatio }, r = t.getViewsByPoint(n); return n.views = r, n }, t._getEventObj = function (e, t, n) { return { x: t.x, y: t.y, target: e.target, toElement: e.event.toElement || e.event.relatedTarget, views: n } }, t.bindEvents = function () { var e = this.canvas; e.on("mousedown", r.wrapBehavior(this, "onDown")), e.on("mousemove", r.wrapBehavior(this, "onMove")), e.on("mouseleave", r.wrapBehavior(this, "onOut")), e.on("mouseup", r.wrapBehavior(this, "onUp")), e.on("click", r.wrapBehavior(this, "onClick")), e.on("dblclick", r.wrapBehavior(this, "onClick")), e.on("touchstart", r.wrapBehavior(this, "onTouchstart")), e.on("touchmove", r.wrapBehavior(this, "onTouchmove")), e.on("touchend", r.wrapBehavior(this, "onTouchend")) }, t._triggerShapeEvent = function (e, t, n) { if (e && e.name && !e.get("destroyed")) { var r = this.view; if (r.isShapeInView(e)) { var i = e.name + ":" + t; n.view = r, n.appendInfo = e.get("appendInfo"), r.emit(i, n); var o = r.get("parent"); o && o.emit(i, n) } } }, t.onDown = function (e) { var t = this.view, n = this._getShapeEventObj(e); n.shape = this.currentShape, o(n), t.emit("mousedown", n), this._triggerShapeEvent(this.currentShape, "mousedown", n) }, t.onMove = function (e) { var t = this, n = t.view, r = t.currentShape; r && r.get("destroyed") && (r = null, t.currentShape = null); var a = t._getShape(e.x, e.y) || e.currentTarget, s = t._getShapeEventObj(e); if (s.shape = a, o(s), n.emit("mousemove", s), t._triggerShapeEvent(a, "mousemove", s), r && !i(r, a)) { var c = t._getShapeEventObj(e); c.shape = r, c.toShape = a, o(c), t._triggerShapeEvent(r, "mouseleave", c) } if (a && !i(r, a)) { var l = t._getShapeEventObj(e); l.shape = a, l.fromShape = r, o(l), t._triggerShapeEvent(a, "mouseenter", l) } t.currentShape = a; var u = t._getPointInfo(e), h = t.curViews || []; 0 === h.length && u.views.length && n.emit("plotenter", t._getEventObj(e, u, u.views)), h.length && 0 === u.views.length && n.emit("plotleave", t._getEventObj(e, u, h)), u.views.length && (s = t._getEventObj(e, u, u.views), s.shape = a, o(s), n.emit("plotmove", s)), t.curViews = u.views }, t.onOut = function (e) { var t = this, n = t.view, r = t._getPointInfo(e), i = t.curViews || [], o = t._getEventObj(e, r, i); !t.curViews || 0 === t.curViews.length || o.toElement && "CANVAS" === o.toElement.tagName || (n.emit("plotleave", o), t.curViews = []) }, t.onUp = function (e) { var t = this.view, n = this._getShapeEventObj(e); n.shape = this.currentShape, t.emit("mouseup", n), this._triggerShapeEvent(this.currentShape, "mouseup", n) }, t.onClick = function (e) { var t = this, n = t.view, i = t._getShape(e.x, e.y) || e.currentTarget, a = t._getShapeEventObj(e); a.shape = i, o(a), n.emit("click", a), t._triggerShapeEvent(i, e.type, a), t.currentShape = i; var s = t._getPointInfo(e), c = s.views; if (!r.isEmpty(c)) { var l = t._getEventObj(e, s, c); if (t.currentShape) { var u = t.currentShape; l.shape = u, o(l) } "dblclick" === e.type ? (n.emit("plotdblclick", l), n.emit("dblclick", a)) : n.emit("plotclick", l) } }, t.onTouchstart = function (e) { var t = this.view, n = this._getShape(e.x, e.y) || e.currentTarget, r = this._getShapeEventObj(e); r.shape = n, o(r), t.emit("touchstart", r), this._triggerShapeEvent(n, "touchstart", r), this.currentShape = n }, t.onTouchmove = function (e) { var t = this.view, n = this._getShape(e.x, e.y) || e.currentTarget, r = this._getShapeEventObj(e); r.shape = n, o(r), t.emit("touchmove", r), this._triggerShapeEvent(n, "touchmove", r), this.currentShape = n }, t.onTouchend = function (e) { var t = this.view, n = this._getShapeEventObj(e); n.shape = this.currentShape, o(n), t.emit("touchend", n), this._triggerShapeEvent(this.currentShape, "touchend", n) }, t.clearEvents = function () { var e = this.canvas; e.off("mousemove", r.getWrapBehavior(this, "onMove")), e.off("mouseleave", r.getWrapBehavior(this, "onOut")), e.off("mousedown", r.getWrapBehavior(this, "onDown")), e.off("mouseup", r.getWrapBehavior(this, "onUp")), e.off("click", r.getWrapBehavior(this, "onClick")), e.off("dblclick", r.getWrapBehavior(this, "onClick")), e.off("touchstart", r.getWrapBehavior(this, "onTouchstart")), e.off("touchmove", r.getWrapBehavior(this, "onTouchmove")), e.off("touchend", r.getWrapBehavior(this, "onTouchend")) }, e }(); e.exports = a }, function (e, t, n) { var r = n(0), i = n(141), o = r.MatrixUtil, a = o.mat3; function s(e, t) { var n = []; if (!1 === e.get("animate")) return []; var i = e.get("children"); return r.each(i, (function (e) { if (e.isGroup) n = n.concat(s(e, t)); else if (e.isShape && e._id) { var r = e._id; r = r.split("-")[0], r === t && n.push(e) } })), n } function c(e) { var t = {}; return r.each(e, (function (e) { if (e._id && !e.isClip) { var n = e._id; t[n] = { _id: n, type: e.get("type"), attrs: r.cloneDeep(e.attr()), name: e.name, index: e.get("index"), animateCfg: e.get("animateCfg"), coord: e.get("coord") } } })), t } function l(e, t, n, r) { var o; return o = r ? i.Action[n][r] : i.getAnimation(e, t, n), o } function u(e, t, n) { var o = i.getAnimateCfg(e, t); return n && n[t] ? r.deepMix({}, o, n[t]) : o } function h(e, t, n, i) { var o, s, c = !1; if (i) { var h = [], f = []; r.each(t, (function (t) { var n = e[t._id]; n ? (t.setSilent("cacheShape", n), h.push(t), delete e[t._id]) : f.push(t) })), r.each(e, (function (e) { var t = e.name, i = e.coord, h = e._id, f = e.attrs, d = e.index, p = e.type; if (s = u(t, "leave", e.animateCfg), o = l(t, i, "leave", s.animation), r.isFunction(o)) { var v = n.addShape(p, { attrs: f, index: d }); if (v._id = h, v.name = t, i && "label" !== t) { var m = v.getMatrix(), g = a.multiply([], m, i.matrix); v.setMatrix(g) } c = !0, o(v, s, i) } })), r.each(h, (function (e) { var t = e.name, n = e.get("coord"), i = e.get("cacheShape").attrs; if (!r.isEqual(i, e.attr())) { if (s = u(t, "update", e.get("animateCfg")), o = l(t, n, "update", s.animation), r.isFunction(o)) o(e, s, n); else { var a = r.cloneDeep(e.attr()); e.attr(i), e.animate(a, s.duration, s.easing, (function () { e.setSilent("cacheShape", null) })) } c = !0 } })), r.each(f, (function (e) { var t = e.name, n = e.get("coord"); s = u(t, "enter", e.get("animateCfg")), o = l(t, n, "enter", s.animation), r.isFunction(o) && (o(e, s, n), c = !0) })) } else r.each(t, (function (e) { var t = e.name, n = e.get("coord"); s = u(t, "appear", e.get("animateCfg")), o = l(t, n, "appear", s.animation), r.isFunction(o) && (o(e, s, n), c = !0) })); return c } e.exports = { execAnimation: function (e, t) { var n = e.get("middlePlot"), r = e.get("backPlot"), i = e.get("_id"), o = e.get("canvas"), a = o.get(i + "caches") || []; 0 === a.length && (t = !1); var l, u = s(n, i), f = s(r, i), d = u.concat(f); o.setSilent(i + "caches", c(d)), l = h(a, t ? d : u, o, t), l || o.draw() } } }, function (e, t, n) { var r = n(0), i = n(18), o = i.Group, a = "auto", s = function e(t) { e.superclass.constructor.call(this, t) }; r.extend(s, o), r.augment(s, { getDefaultCfg: function () { return { type: "plotBack", padding: null, background: null, plotRange: null, plotBackground: null } }, _beforeRenderUI: function () { this._calculateRange() }, _renderUI: function () { this._renderBackground(), this._renderPlotBackground() }, _renderBackground: function () { var e = this, t = e.get("background"); if (t) { var n = this.get("canvas"), i = e.get("width") || n.get("width"), o = e.get("height") || n.get("height"), a = { x: 0, y: 0, width: i, height: o }, s = e.get("backgroundShape"); s ? s.attr(a) : (s = this.addShape("rect", { attrs: r.mix(a, t) }), this.set("backgroundShape", s)) } }, _renderPlotBackground: function () { var e = this, t = e.get("plotBackground"); if (t) { var n = e.get("plotRange"), i = n.br.x - n.bl.x, o = n.br.y - n.tr.y, a = n.tl, s = { x: a.x, y: a.y, width: i, height: o }, c = e.get("plotBackShape"); c ? c.attr(s) : (t.image ? (s.img = t.image, c = e.addShape("image", { attrs: s })) : (r.mix(s, t), c = e.addShape("rect", { attrs: s })), e.set("plotBackShape", c)) } }, _convert: function (e, t) { if (r.isString(e)) if (e === a) e = 0; else if (e.includes("%")) { var n = this.get("canvas"), i = this.get("width") || n.get("width"), o = this.get("height") || n.get("height"); e = parseInt(e, 10) / 100, e = t ? e * i : e * o } return e }, _calculateRange: function () { var e = this, t = e.get("plotRange"); r.isNil(t) && (t = {}); var n = e.get("padding"), i = this.get("canvas"), o = e.get("width") || i.get("width"), a = e.get("height") || i.get("height"), s = r.toAllPadding(n), c = e._convert(s[0], !1), l = e._convert(s[1], !0), u = e._convert(s[2], !1), h = e._convert(s[3], !0), f = Math.min(h, o - l), d = Math.max(h, o - l), p = Math.min(a - u, c), v = Math.max(a - u, c); t.tl = { x: f, y: p }, t.tr = { x: d, y: p }, t.bl = { x: f, y: v }, t.br = { x: d, y: v }, t.cc = { x: (d + f) / 2, y: (v + p) / 2 }, this.set("plotRange", t) }, repaint: function () { return this._calculateRange(), this._renderBackground(), this._renderPlotBackground(), this } }), e.exports = s }, function (e, t, n) { var r = n(8), i = n(0); function o(e, t) { var n = e.length; i.isString(e[0]) && (e = e.map((function (e) { return t.translate(e) }))); for (var r = e[1] - e[0], o = 2; o < n; o++) { var a = e[o] - e[o - 1]; r > a && (r = a) } return r } var a = { getDefaultSize: function () { var e = this.get("defaultSize"), t = this.get("viewTheme") || r; if (!e) { var n, i = this.get("coord"), a = this.getXScale(), s = a.values, c = this.get("dataArray"); if (a.isLinear && s.length > 1) { s.sort(); var l = o(s, a); n = (a.max - a.min) / l, s.length > n && (n = s.length) } else n = s.length; var u = a.range, h = 1 / n, f = 1; if (this.isInCircle() ? f = i.isTransposed && n > 1 ? t.widthRatio.multiplePie : t.widthRatio.rose : (a.isLinear && (h *= u[1] - u[0]), f = t.widthRatio.column), h *= f, this.hasAdjust("dodge")) { var d = this._getDodgeCfg(c), p = d.dodgeCount, v = d.dodgeRatio; h /= p, v > 0 && (h = v * h / f) } e = h, this.set("defaultSize", e) } return e }, _getDodgeCfg: function (e) { var t, n, r = this.get("adjusts"), o = e.length; if (i.each(r, (function (e) { "dodge" === e.type && (t = e.dodgeBy, n = e.dodgeRatio) })), t) { var a = i.Array.merge(e), s = i.Array.values(a, t); o = s.length } return { dodgeCount: o, dodgeRatio: n } }, getDimWidth: function (e) { var t = this.get("coord"), n = t.convertPoint({ x: 0, y: 0 }), r = t.convertPoint({ x: "x" === e ? 1 : 0, y: "x" === e ? 0 : 1 }), i = 0; return n && r && (i = Math.sqrt(Math.pow(r.x - n.x, 2) + Math.pow(r.y - n.y, 2))), i }, _getWidth: function () { var e, t = this.get("coord"); return e = this.isInCircle() && !t.isTransposed ? (t.endAngle - t.startAngle) * t.radius : this.getDimWidth("x"), e }, _toNormalizedSize: function (e) { var t = this._getWidth(); return e / t }, _toCoordSize: function (e) { var t = this._getWidth(); return t * e }, getNormalizedSize: function (e) { var t = this.getAttrValue("size", e); return t = i.isNil(t) ? this.getDefaultSize() : this._toNormalizedSize(t), t }, getSize: function (e) { var t = this.getAttrValue("size", e); if (i.isNil(t)) { var n = this.getDefaultSize(); t = this._toCoordSize(n) } return t } }; e.exports = a }, function (e, t, n) { var r = n(0), i = n(8); e.exports = { splitData: function (e) { var t = this.get("viewTheme") || i; if (!e.length) return []; var n, o = [], a = [], s = this.getYScale(), c = s.field; return r.each(e, (function (e) { n = e._origin ? e._origin[c] : e[c], t.connectNulls ? r.isNil(n) || a.push(e) : r.isArray(n) && r.isNil(n[0]) || r.isNil(n) ? a.length && (o.push(a), a = []) : a.push(e) })), a.length && o.push(a), o } } }, function (e, t, n) { function r(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function i(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var o = n(23), a = n(415), s = n(0), c = function (e) { i(n, e); var t = n.prototype; function n(t) { var n; return n = e.call(this, t) || this, s.assign(r(n), a), n } return t.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "path", t.shapeType = "line", t }, t.getDrawCfg = function (t) { var n = e.prototype.getDrawCfg.call(this, t); return n.isStack = this.hasStack(), n }, t.draw = function (e, t, n, r) { var i = this, o = this.splitData(e), a = this.getDrawCfg(e[0]); i._applyViewThemeShapeStyle(a, a.shape, n), a.origin = e, s.each(o, (function (e, o) { if (!s.isEmpty(e)) { a.splitedIndex = o, a.points = e; var c = n.drawShape(a.shape, a, t); i.appendShapeInfo(c, r + o) } })) }, n }(o); o.Path = c, e.exports = c }, function (e, t, n) { "use strict"; var r = n(428), i = n(429); function o(e) { return function () { var t = this.ownerDocument, n = this.namespaceURI; return n === i["b"] && t.documentElement.namespaceURI === i["b"] ? t.createElement(e) : t.createElementNS(n, e) } } function a(e) { return function () { return this.ownerDocument.createElementNS(e.space, e.local) } } t["a"] = function (e) { var t = Object(r["a"])(e); return (t.local ? a : o)(t) } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { var n = e.ownerSVGElement || e; if (n.createSVGPoint) { var r = n.createSVGPoint(); return r.x = t.clientX, r.y = t.clientY, r = r.matrixTransform(e.getScreenCTM().inverse()), [r.x, r.y] } var i = e.getBoundingClientRect(); return [t.clientX - i.left - e.clientLeft, t.clientY - i.top - e.clientTop] } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { return e = +e, t = +t, function (n) { return e * (1 - n) + t * n } } }, function (e, t, n) { "use strict"; t["b"] = a; var r = n(58); function i(e, t) { var n, i; return function () { var o = Object(r["h"])(this, e), a = o.tween; if (a !== n) { i = n = a; for (var s = 0, c = i.length; s < c; ++s)if (i[s].name === t) { i = i.slice(), i.splice(s, 1); break } } o.tween = i } } function o(e, t, n) { var i, o; if ("function" !== typeof n) throw new Error; return function () { var a = Object(r["h"])(this, e), s = a.tween; if (s !== i) { o = (i = s).slice(); for (var c = { name: t, value: n }, l = 0, u = o.length; l < u; ++l)if (o[l].name === t) { o[l] = c; break } l === u && o.push(c) } a.tween = o } } function a(e, t, n) { var i = e._id; return e.each((function () { var e = Object(r["h"])(this, i); (e.value || (e.value = {}))[t] = n.apply(this, arguments) })), function (e) { return Object(r["f"])(e, i).value[t] } } t["a"] = function (e, t) { var n = this._id; if (e += "", arguments.length < 2) { for (var a, s = Object(r["f"])(this.node(), n).tween, c = 0, l = s.length; c < l; ++c)if ((a = s[c]).name === e) return a.value; return null } return this.each((null == t ? i : o)(n, e, t)) } }, function (e, t, n) { var r = n(8), i = n(0), o = i.assign, a = i.isNil, s = i.isArray, c = i.cloneDeep, l = i.wrapBehavior, u = i.getWrapBehavior, h = function () { var e = t.prototype; function t(e) { var t = this.getDefaultCfg(); o(this, t, e), this.init() } return e.getDefaultCfg = function () { return { chart: null, group: null, showTitle: !0, autoSetAxis: !0, padding: 10, eachView: null, fields: [], colTitle: { offsetY: -15, style: { fontSize: 14, textAlign: "center", fill: "#666", fontFamily: r.fontFamily } }, rowTitle: { offsetX: 15, style: { fontSize: 14, textAlign: "center", rotate: 90, fill: "#666", fontFamily: r.fontFamily } } } }, e.init = function () { if (!this.chart) throw new Error("Facets Error: please specify the chart!"); this._bindEvent(), this.initContainer(), this.chart.get("data") && this.initViews() }, e.initContainer = function () { var e = this.chart, t = e.get("frontPlot"), n = t.addGroup(); this.group = n }, e.initViews = function () { for (var e = this.chart, t = e.get("data"), n = this.eachView, r = this.generateFacets(t), i = 0; i < r.length; i++) { var o = r[i], a = o.region, s = e.view({ start: a.start, end: a.end, padding: this.padding }); s.source(o.data), this.beforeProcessView(s, o), n && n(s, o), this.afterProcessView(s, o), o.view = s } this.facets = r }, e.beforeProcessView = function () { }, e.afterProcessView = function (e, t) { this.autoSetAxis && this.processAxis(e, t) }, e.processAxis = function (e, t) { var n = e.get("options"), r = e.get("geoms"); if ((!n.coord.type || "rect" === n.coord.type) && r.length) { var i = r[0].get("attrOptions").position.field, o = s(i) ? i : i.split("*").map((function (e) { return e.trim() })), c = o[0], l = o[1]; a(n.axes) && (n.axes = {}); var u = n.axes; !1 !== u && (c && !1 !== u[c] && (u[c] = u[c] || {}, this.setXAxis(c, u, t)), l && !1 !== u[l] && (u[l] = u[l] || {}, this.setYAxis(l, u, t))) } }, e.setXAxis = function () { }, e.setYAxis = function () { }, e.renderTitle = function (e, t) { this.drawColTitle(e, t) }, e.getScaleText = function (e, t, n) { var r; if (e) { var i = n.get("scales"), o = i[e]; o || (o = n.createScale(e)), r = o.getText(t) } else r = t; return r }, e.drawColTitle = function (e, t) { var n = this.getScaleText(t.colField, t.colValue, e), r = o({ position: ["50%", "0%"], content: n }, this.colTitle); e.guide().text(r) }, e.drawRowTitle = function (e, t) { var n = this.getScaleText(t.rowField, t.rowValue, e), r = o({ position: ["100%", "50%"], content: n }, c(this.rowTitle)); e.guide().text(r) }, e.getFilter = function (e) { var t = function (t) { var n = !0; return e.forEach((function (e) { var r = e.field, i = e.value, o = !0; !a(i) && r && (o = t[r] === i), n = n && o })), n }; return t }, e.getFieldValues = function (e, t) { for (var n = [], r = {}, i = 0; i < t.length; i++) { var o = t[i], s = o[e]; a(s) || r[s] || (n.push(s), r[s] = !0) } return n }, e.getRegion = function (e, t, n, r) { var i = 1 / t, o = 1 / e, a = { x: i * n, y: o * r }, s = { x: a.x + i, y: a.y + o }; return { start: a, end: s } }, e.generateFacets = function () { return [] }, e._bindEvent = function () { var e = this.chart; e.on("afterchangedata", l(this, "onDataChange")), e.on("beforeclear", l(this, "onClear")), e.on("beforedestroy", l(this, "destroy")), e.on("beforepaint", l(this, "onPaint")), e.on("setdata", l(this, "onDataChange")) }, e._clearEvent = function () { var e = this.chart; e && (e.off("afterchangedata", u(this, "onDataChange")), e.off("beforeclear", u(this, "onClear")), e.off("beforedestroy", u(this, "destroy")), e.off("beforepaint", u(this, "onPaint")), e.off("setdata", u(this, "onDataChange"))) }, e._clearFacets = function () { var e = this.facets, t = this.chart; if (e) for (var n = 0; n < e.length; n++) { var r = e[n]; t.removeView(r.view) } this.facets = null }, e.onClear = function () { this.onRemove() }, e.onPaint = function () { if (this.showTitle) for (var e = this.facets, t = 0; t < e.length; t++) { var n = e[t], r = n.view; this.renderTitle(r, n) } }, e.onDataChange = function () { this._clearFacets(), this.initViews() }, e.onRemove = function () { this._clearFacets(), this._clearEvent(), this.group && this.group.remove(), this.chart = null, this.facets = null, this.group = null }, e.destroy = function () { this.onRemove(), this.destroyed = !0 }, t }(); e.exports = h }, function (e, t, n) { function r(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function i(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var o = n(23), a = n(0), s = n(414); n(423); var c = function (e) { i(n, e); var t = n.prototype; function n(t) { var n; return n = e.call(this, t) || this, a.assign(r(n), s), n } return t.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "interval", t.shapeType = "interval", t.generatePoints = !0, t }, t.createShapePointsCfg = function (t) { var n = e.prototype.createShapePointsCfg.call(this, t); return n.size = this.getNormalizedSize(t), n }, t.clearInner = function () { e.prototype.clearInner.call(this), this.set("defaultSize", null) }, n }(o), l = function (e) { function t() { return e.apply(this, arguments) || this } i(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.hasDefaultAdjust = !0, t.adjusts = [{ type: "stack" }], t }, t }(c), u = function (e) { function t() { return e.apply(this, arguments) || this } i(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.hasDefaultAdjust = !0, t.adjusts = [{ type: "dodge" }], t }, t }(c), h = function (e) { function t() { return e.apply(this, arguments) || this } i(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.hasDefaultAdjust = !0, t.adjusts = [{ type: "symmetric" }], t }, t }(c); c.Stack = l, c.Dodge = u, c.Symmetric = h, o.Interval = c, o.IntervalStack = l, o.IntervalDodge = u, o.IntervalSymmetric = h, e.exports = c }, function (e, t, n) { var r = n(0), i = n(21), o = n(25), a = n(57), s = n(8), c = n(18), l = r.PathUtil; function u(e, t) { var n, i, o = e.x, a = e.y, s = e.y0, c = e.size, l = s, u = a; r.isArray(a) && (u = a[1], l = a[0]), r.isArray(o) ? (n = o[0], i = o[1]) : (n = o - c / 2, i = o + c / 2); var h = []; return h.push({ x: n, y: l }, { x: n, y: u }), t ? h.push({ x: i, y: (u + l) / 2 }) : h.push({ x: i, y: u }, { x: i, y: l }), h } function h(e) { for (var t = [], n = 0; n < e.length; n++) { var r = e[n]; if (r) { var i = 0 === n ? "M" : "L"; t.push([i, r.x, r.y]) } } var o = e[0]; return t.push(["L", o.x, o.y]), t.push(["z"]), t } function f(e) { var t = e.x, n = e.y, i = e.y0, o = []; return r.isArray(n) ? r.each(n, (function (e, n) { o.push({ x: r.isArray(t) ? t[n] : t, y: e }) })) : o.push({ x: t, y: n }, { x: t, y: i }), o } function d(e) { var t = e.x, n = r.isArray(e.y) ? e.y[1] : e.y, i = r.isArray(e.y) ? e.y[0] : e.y0, o = e.size, a = []; return a.push({ x: t - o / 2, y: n }, { x: t + o / 2, y: n }, { x: t, y: n }, { x: t, y: i }, { x: t - o / 2, y: i }, { x: t + o / 2, y: i }), a } function p(e) { var t = []; return t.push(["M", e[0].x, e[0].y], ["L", e[1].x, e[1].y], ["M", e[2].x, e[2].y], ["L", e[3].x, e[3].y], ["M", e[4].x, e[4].y], ["L", e[5].x, e[5].y]), t } function v(e) { var t = s.shape.interval, n = r.mix({}, t, e.style); return a.addFillAttrs(n, e), e.color && (n.stroke = n.stroke || e.color), n } function m(e) { var t = s.shape.hollowInterval, n = r.mix({}, t, e.style); return a.addStrokeAttrs(n, e), n } function g(e, t) { var n = [], i = e.points, o = e.nextPoints; return r.isNil(o) ? t ? n.push(["M", i[0].x, i[0].y], ["L", i[1].x, i[1].y], ["L", i[2].x, i[2].y], ["L", i[3].x, i[3].y], ["Z"]) : n.push(["M", i[0].x, i[0].y], ["L", i[1].x, i[1].y], ["L", i[2].x, i[2].y], ["L", i[2].x, i[2].y], ["Z"]) : n.push(["M", i[0].x, i[0].y], ["L", i[1].x, i[1].y], ["L", o[1].x, o[1].y], ["L", o[0].x, o[0].y], ["Z"]), n } function y(e, t) { var n, i, a, s, c = t.getRadius(), l = t.innerRadius, u = c * l; return !r.isArray(e.x) && r.isArray(e.y) && (e.x = [e.x, e.x]), r.isArray(e.x) ? (a = { x: e.x[0], y: e.y[0] }, s = { x: e.x[1], y: e.y[1] }, n = o.getPointAngle(t, a), i = o.getPointAngle(t, s), i <= n && (i += 2 * Math.PI)) : (s = e, n = t.startAngle, i = o.getPointAngle(t, s)), { r: c, ir: u, startAngle: n, endAngle: i } } function b(e, t) { var n, i = t.geom, o = i.get("coord"), a = t.point, s = 7.5; if (o && "theta" === o.type) { var c = y(a, o), l = (c.endAngle - c.startAngle) / 2 + c.startAngle, u = s * Math.cos(l), h = s * Math.sin(l); n = { transform: [["t", u, h]] } } return r.mix({}, n) } var x = i.registerFactory("interval", { defaultShapeType: "rect", getActiveCfg: function (e, t) { if (!e || r.inArray(["rect", "funnel", "pyramid"], e)) { var n = t.fillOpacity || t.opacity || 1; return { fillOpacity: n - .15 } } var i = t.lineWidth || 0; return { lineWidth: i + 1 } }, getDefaultPoints: function (e) { return u(e) }, getSelectedCfg: function (e, t) { return b(e, t) } }); function w(e, t, n, r) { return 0 === t ? [[e + .5 * n / Math.PI / 2, r / 2], [e + .5 * n / Math.PI, r], [e + n / 4, r]] : 1 === t ? [[e + .5 * n / Math.PI / 2 * (Math.PI - 2), r], [e + .5 * n / Math.PI / 2 * (Math.PI - 1), r / 2], [e + n / 4, 0]] : 2 === t ? [[e + .5 * n / Math.PI / 2, -r / 2], [e + .5 * n / Math.PI, -r], [e + n / 4, -r]] : [[e + .5 * n / Math.PI / 2 * (Math.PI - 2), -r], [e + .5 * n / Math.PI / 2 * (Math.PI - 1), -r / 2], [e + n / 4, 0]] } function _(e, t, n, r, i, o, a) { var s = 2 * Math.ceil(2 * e / n * 4), c = []; while (r < 2 * -Math.PI) r += 2 * Math.PI; while (r > 0) r -= 2 * Math.PI; r = r / Math.PI / 2 * n; var l = o - e + r - 2 * e; c.push(["M", l, t]); for (var u = 0, h = 0; h < s; ++h) { var f = h % 4, d = w(h * n / 4, f, n, i); c.push(["C", d[0][0] + l, -d[0][1] + t, d[1][0] + l, -d[1][1] + t, d[2][0] + l, -d[2][1] + t]), h === s - 1 && (u = d[2][0]) } return c.push(["L", u + l, a + e]), c.push(["L", l, a + e]), c.push(["L", l, t]), c } function C(e, t, n, r, i, o, a, c) { for (var l = a.getBBox(), u = l.maxX - l.minX, h = l.maxY - l.minY, f = 5e3, d = 300, p = 0; p < r; p++) { var v = o.addShape("path", { attrs: { path: _(c, l.minY + h * n, u / 4, 0, u / 64, e, t), fill: i[p], clip: a } }); "canvas" === s.renderer && v.animate({ transform: [["t", u / 2, 0]], repeat: !0 }, f - p * d) } } i.registerShape("interval", "rect", { draw: function (e, t) { var n = v(e), i = h(e.points); return i = this.parsePath(i), t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { var t = v(e), n = e.isInCircle; return r.mix({ symbol: n ? "circle" : "square", radius: n ? 4.5 : 4 }, t) } }), i.registerShape("interval", "hollowRect", { draw: function (e, t) { var n = m(e), i = h(e.points); return i = this.parsePath(i), t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { var t = m(e), n = e.isInCircle; return r.mix({ symbol: n ? "circle" : "square", radius: n ? 4.5 : 4 }, t) } }), i.registerShape("interval", "line", { getPoints: function (e) { return f(e) }, draw: function (e, t) { var n = m(e); n.lineWidth = e.size || 1; var i = h(e.points); return i = this.parsePath(i), t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { var t = m(e); return r.mix({ symbol: "line", radius: 5 }, t) } }), i.registerShape("interval", "tick", { getPoints: function (e) { return d(e) }, draw: function (e, t) { var n = m(e); n.lineWidth || (n.lineWidth = 2); var i = p(e.points); return i = this.parsePath(i), t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { var t = m(e); return r.mix({ symbol: "tick", radius: 5 }, t) } }), i.registerShape("interval", "funnel", { getPoints: function (e) { return e.size = 2 * e.size, u(e) }, draw: function (e, t) { var n = v(e), i = g(e, !0); return i = this.parsePath(i), t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { var t = v(e); return r.mix({ symbol: "square", radius: 4 }, t) } }), i.registerShape("interval", "pyramid", { getPoints: function (e) { return e.size = 2 * e.size, u(e, !0) }, draw: function (e, t) { var n = v(e), i = g(e, !1); return i = this.parsePath(i), t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { var t = v(e); return r.mix({ symbol: "square", radius: 4 }, t) } }), i.registerShape("interval", "liquid-fill-gauge", { draw: function (e, t) { var n = this, i = .5, o = 0, a = 1 / 0; r.each(e.points, (function (e) { e.x < a && (a = e.x), o += e.x })); var s = o / e.points.length, l = n.parsePoint({ x: s, y: i }), u = n.parsePoint({ x: a, y: .5 }), h = l.x - u.x, f = Math.min(h, u.y), d = v(e), p = new c.Circle({ attrs: { x: l.x, y: l.y, r: f } }); return C(l.x, l.y, e.y / (2 * l.y), 1, [d.fill], t, p, 4 * f), t.addShape("circle", { attrs: r.mix(m(e), { x: l.x, y: l.y, r: f + f / 8 }) }) } }); var M = {}; i.registerShape("interval", "liquid-fill-path", { draw: function (e, t) { var n = this, i = r.mix({}, v(e)), o = e.shape[1], a = .5, s = 0, c = 1 / 0; r.each(e.points, (function (e) { e.x < c && (c = e.x), s += e.x })); var u, h = s / e.points.length, f = n.parsePoint({ x: h, y: a }), d = n.parsePoint({ x: c, y: .5 }), p = f.x - d.x, g = Math.min(p, d.y); if (M[o]) u = M[o]; else { var y = l.parsePathString(o); M[o] = u = { segments: y } } var b = []; i.rotate && (b.push(["r", i.rotate / 180 * Math.PI]), delete i.rotate); var x = t.addShape("path", { attrs: r.mix(i, { fillOpacity: 0, path: u.segments }) }), w = r.cloneDeep(x.getBBox()), _ = w.maxX - w.minX, O = w.maxY - w.minY, k = Math.max(_, O), S = 2 * g / k; x.transform(b.concat([["s", S, S]])); var T = S * _ / 2, A = S * O / 2; x.transform([["t", f.x - T, f.y - A]]), C(f.x, f.y, e.y / (2 * f.y), 1, [i.fill], t, x, 4 * d.y); var L = t.addShape("path", { attrs: r.mix(m(e), { path: u.segments }) }); return L.transform(b.concat([["s", S, S], ["t", f.x - T, f.y - A]])), L } }), i.registerShape("interval", "top-line", { draw: function (e, t) { var n = v(e), i = e.style || {}, o = [["M", e.points[1].x, e.points[1].y], ["L", e.points[2].x, e.points[2].y]], a = { stroke: i.stroke || "white", lineWidth: i.lineWidth || 1, path: this.parsePath(o) }, s = h(e.points); s = this.parsePath(s), delete n.stroke; var c = t.addShape("path", { attrs: r.mix(n, { zIndex: 0, path: s }) }); return t.addShape("path", { zIndex: 1, attrs: a }), c }, getMarkerCfg: function (e) { var t = v(e), n = e.isInCircle; return r.mix({ symbol: n ? "circle" : "square", radius: n ? 4.5 : 4 }, t) } }), e.exports = x }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(23), o = n(416); n(425); var a = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "line", t.sortable = !0, t }, t }(o), s = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.hasDefaultAdjust = !0, t.adjusts = [{ type: "stack" }], t }, t }(a); a.Stack = s, i.Line = a, i.LineStack = s, e.exports = a }, function (e, t, n) { var r = n(0), i = n(25), o = n(57), a = n(21), s = n(8), c = [1, 1], l = [5.5, 1]; function u(e) { var t = s.shape.line, n = r.mix({}, t, e.style); return o.addStrokeAttrs(n, e), e.size && (n.lineWidth = e.size), n } function h(e) { var t = s.shape.line, n = r.mix({ lineWidth: 2, radius: 6 }, t, e.style); return o.addStrokeAttrs(n, e), n } function f(e, t, n, r) { for (var i = [], a = r.isStack, s = [], c = 0; c < e.length; c++) { var l = e[c], u = o.splitPoints(l); s.push(u[0]), i.push(u[1]) } var h = d(i, t, n, r), f = d(s, t, n, r); return a ? h : h.concat(f) } function d(e, t, n, r) { var o; if (t) { var a = r.constraint; n && e.length && e.push({ x: e[0].x, y: e[0].y }), o = i.getSplinePath(e, !1, a) } else o = i.getLinePath(e, !1), n && o.push(["Z"]); return o } function p(e, t) { var n, i = e.points, o = e.isInCircle, a = i[0]; return n = r.isArray(a.y) ? f(i, t, o, e) : d(i, t, o, e), n } function v(e, t) { var n = []; return r.each(e, (function (r, i) { var o = e[i + 1]; n.push(r), o && (n = n.concat(t(r, o))) })), n } function m(e) { var t = []; return r.each(e, (function (e, n) { var r = 0 === n ? ["M", e.x, e.y] : ["L", e.x, e.y]; t.push(r) })), t } function g(e, t) { var n = v(e.points, t); return m(n) } function y(e, t, n) { return [["M", e - n, t], ["L", e + n, t]] } function b(e, t, n) { return [["M", e - n, t], ["A", n / 2, n / 2, 0, 1, 1, e, t], ["A", n / 2, n / 2, 0, 1, 0, e + n, t]] } function x(e, t) { return r.mix({ symbol: t ? b : y }, h(e)) } function w(e, t) { return r.mix({ symbol: t }, h(e)) } function _(e, t, n) { var i = t.points[0]; return n.addShape("circle", { attrs: r.mix({ x: i.x, y: i.y, r: 2, fill: t.color }, t.style) }) } var C = a.registerFactory("line", { defaultShapeType: "line", getActiveCfg: function (e, t) { var n = t.lineWidth || 0; return { lineWidth: n + 1 } }, getDefaultPoints: function (e) { return o.splitPoints(e) }, drawShape: function (e, t, n) { var r, i = this.getShape(e); return r = 1 === t.points.length && s.showSinglePoint ? _(this, t, n) : i.draw(t, n), r && (r.set("origin", t.origin), r._id = t.splitedIndex ? t._id + t.splitedIndex : t._id, r.name = this.name), r } }); a.registerShape("line", "line", { draw: function (e, t) { var n = u(e), i = p(e, !1); return t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { return x(e) } }), a.registerShape("line", "dot", { draw: function (e, t) { var n = u(e), i = p(e, !1); return t.addShape("path", { attrs: r.mix(n, { path: i, lineDash: c }) }) }, getMarkerCfg: function (e) { var t = x(e, !1); return t.lineDash = c, t } }), a.registerShape("line", "dash", { draw: function (e, t) { var n = u(e), i = p(e, !1); return t.addShape("path", { attrs: r.mix({ path: i, lineDash: l }, n) }) }, getMarkerCfg: function (e) { var t = x(e, !1); return t.lineDash = t.lineDash || l, t } }), a.registerShape("line", "smooth", { draw: function (e, t) { var n = u(e), i = this._coord; e.constraint = [[i.start.x, i.end.y], [i.end.x, i.start.y]]; var o = p(e, !0); return t.addShape("path", { attrs: r.mix(n, { path: o }) }) }, getMarkerCfg: function (e) { return x(e, !0) } }), a.registerShape("line", "hv", { draw: function (e, t) { var n = u(e), i = g(e, (function (e, t) { var n = []; return n.push({ x: t.x, y: e.y }), n })); return t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { return w(e, (function (e, t, n) { return [["M", e - n - 1, t - 2.5], ["L", e, t - 2.5], ["L", e, t + 2.5], ["L", e + n + 1, t + 2.5]] })) } }), a.registerShape("line", "vh", { draw: function (e, t) { var n = u(e), i = g(e, (function (e, t) { var n = []; return n.push({ x: e.x, y: t.y }), n })); return t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { return w(e, (function (e, t, n) { return [["M", e - n - 1, t + 2.5], ["L", e, t + 2.5], ["L", e, t - 2.5], ["L", e + n + 1, t - 2.5]] })) } }), a.registerShape("line", "hvh", { draw: function (e, t) { var n = u(e), i = g(e, (function (e, t) { var n = [], r = (t.x - e.x) / 2 + e.x; return n.push({ x: r, y: e.y }), n.push({ x: r, y: t.y }), n })); return t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { return w(e, (function (e, t, n) { return [["M", e - (n + 1), t + 2.5], ["L", e - n / 2, t + 2.5], ["L", e - n / 2, t - 2.5], ["L", e + n / 2, t - 2.5], ["L", e + n / 2, t + 2.5], ["L", e + n + 1, t + 2.5]] })) } }), a.registerShape("line", "vhv", { draw: function (e, t) { var n = u(e), i = g(e, (function (e, t) { var n = [], r = (t.y - e.y) / 2 + e.y; return n.push({ x: e.x, y: r }), n.push({ x: t.x, y: r }), n })); return t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { return w(e, (function (e, t) { return [["M", e - 5, t + 2.5], ["L", e - 5, t], ["L", e, t], ["L", e, t - 3], ["L", e, t + 3], ["L", e + 6.5, t + 3]] })) } }), C.spline = C.smooth, e.exports = C }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(23), o = n(0); n(427); var a = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "point", t.shapeType = "point", t.generatePoints = !0, t }, n.drawPoint = function (e, t, n, r) { var i, a = this, s = e.shape, c = a.getDrawCfg(e); if (a._applyViewThemeShapeStyle(c, s, n), o.isArray(e.y)) { var l = a.hasStack(); o.each(e.y, (function (e, o) { c.y = e, c.yIndex = o, l && 0 === o || (i = n.drawShape(s, c, t), a.appendShapeInfo(i, r + o)) })) } else o.isNil(e.y) || (i = n.drawShape(s, c, t), a.appendShapeInfo(i, r)) }, t }(i), s = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.hasDefaultAdjust = !0, t.adjusts = [{ type: "jitter" }], t }, t }(a), c = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.hasDefaultAdjust = !0, t.adjusts = [{ type: "stack" }], t }, t }(a); a.Jitter = s, a.Stack = c, i.Point = a, i.PointJitter = s, i.PointStack = c, e.exports = a }, function (e, t, n) { var r = n(0), i = n(57), o = n(8), a = n(21), s = n(18), c = s.Marker, l = r.PathUtil, u = ["circle", "square", "bowtie", "diamond", "hexagon", "triangle", "triangle-down"], h = ["cross", "tick", "plus", "hyphen", "line", "pointerLine", "pointerArrow"], f = Math.sqrt(3); function d(e) { var t = o.shape.point, n = r.mix({}, t, e.style); return i.addFillAttrs(n, e), r.isNumber(e.size) && (n.radius = e.size), n } function p(e) { var t = o.shape.hollowPoint, n = r.mix({}, t, e.style); return i.addStrokeAttrs(n, e), r.isNumber(e.size) && (n.radius = e.size), n } r.mix(c.Symbols, { hexagon: function (e, t, n) { var r = n / 2 * f; return [["M", e, t - n], ["L", e + r, t - n / 2], ["L", e + r, t + n / 2], ["L", e, t + n], ["L", e - r, t + n / 2], ["L", e - r, t - n / 2], ["Z"]] }, bowtie: function (e, t, n) { var r = n - 1.5; return [["M", e - n, t - r], ["L", e + n, t + r], ["L", e + n, t - r], ["L", e - n, t + r], ["Z"]] }, cross: function (e, t, n) { return [["M", e - n, t - n], ["L", e + n, t + n], ["M", e + n, t - n], ["L", e - n, t + n]] }, tick: function (e, t, n) { return [["M", e - n / 2, t - n], ["L", e + n / 2, t - n], ["M", e, t - n], ["L", e, t + n], ["M", e - n / 2, t + n], ["L", e + n / 2, t + n]] }, plus: function (e, t, n) { return [["M", e - n, t], ["L", e + n, t], ["M", e, t - n], ["L", e, t + n]] }, hyphen: function (e, t, n) { return [["M", e - n, t], ["L", e + n, t]] }, line: function (e, t, n) { return [["M", e, t - n], ["L", e, t + n]] } }); var v = a.registerFactory("point", { defaultShapeType: "hollowCircle", getActiveCfg: function (e, t) { var n, i = t.radius; return n = e && (0 === e.indexOf("hollow") || -1 !== r.indexOf(h, e)) || !e ? t.stroke || t.strokeStyle : t.fill || t.fillStyle, { radius: i + 1, shadowBlur: i, shadowColor: n, stroke: n, strokeOpacity: 1, lineWidth: 1 } }, getDefaultPoints: function (e) { return i.splitPoints(e) } }); function m(e) { var t = e.points[0].x, n = e.points[0].y, r = e.size[0], i = e.size[1], o = [["M", t - .5 * r, n - .5 * i], ["L", t + .5 * r, n - .5 * i], ["L", t + .5 * r, n + .5 * i], ["L", t - .5 * r, n + .5 * i], ["z"]]; return o } a.registerShape("point", "rect", { draw: function (e, t) { var n = d(e), i = m(e); i = this.parsePath(i); var o = t.addShape("path", { attrs: r.mix(n, { path: i }) }); return o }, getMarkerCfg: function (e) { var t = d(e); return t.symbol = "rect", t.radius = 4.5, t } }), r.each(u, (function (e) { a.registerShape("point", e, { draw: function (t, n) { var i = d(t); return n.addShape("Marker", { attrs: r.mix(i, { symbol: e, x: t.x, y: t.y }) }) }, getMarkerCfg: function (t) { var n = d(t); return n.symbol = e, n.radius = 4.5, n } }), a.registerShape("point", "hollow" + r.upperFirst(e), { draw: function (t, n) { var i = p(t); return n.addShape("Marker", { attrs: r.mix(i, { symbol: e, x: t.x, y: t.y }) }) }, getMarkerCfg: function (t) { var n = p(t); return n.symbol = e, n.radius = 4.5, n } }) })), r.each(h, (function (e) { a.registerShape("point", e, { draw: function (t, n) { var i = p(t); return n.addShape("Marker", { attrs: r.mix(i, { symbol: e, x: t.x, y: t.y }) }) }, getMarkerCfg: function (t) { var n = p(t); return n.symbol = e, n.radius = 4.5, n } }) })), a.registerShape("point", "image", { draw: function (e, t) { return e.points = this.parsePoints(e.points), t.addShape("image", { attrs: { x: e.points[0].x - e.size / 2, y: e.points[0].y - e.size, width: e.size, height: e.size, img: e.shape[1] } }) } }); var g = {}; a.registerShape("point", "path", { draw: function (e, t) { var n, i = r.mix({}, p(e), d(e)), o = e.shape[1], a = e.size || 10; if (g[o]) n = g[o]; else { var s = l.parsePathString(o), c = r.flatten(s).filter((function (e) { return r.isNumber(e) })); g[o] = n = { range: Math.max.apply(null, c) - Math.min.apply(null, c), segments: s } } var u = a / n.range, h = []; i.rotate && (h.push(["r", i.rotate / 180 * Math.PI]), delete i.rotate); var f = t.addShape("path", { attrs: r.mix(i, { path: n.segments }) }); return h.push(["s", u, u], ["t", e.x, e.y]), f.transform(h), f } }), e.exports = v }, function (e, t, n) { "use strict"; var r = n(429); t["a"] = function (e) { var t = e += "", n = t.indexOf(":"); return n >= 0 && "xmlns" !== (t = e.slice(0, n)) && (e = e.slice(n + 1)), r["a"].hasOwnProperty(t) ? { space: r["a"][t], local: e } : e } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return r })); var r = "http://www.w3.org/1999/xhtml"; t["a"] = { svg: "http://www.w3.org/2000/svg", xhtml: r, xlink: "http://www.w3.org/1999/xlink", xml: "http://www.w3.org/XML/1998/namespace", xmlns: "http://www.w3.org/2000/xmlns/" } }, function (e, t, n) { "use strict"; function r() { } t["a"] = function (e) { return null == e ? r : function () { return this.querySelector(e) } } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return e.ownerDocument && e.ownerDocument.defaultView || e.document && e || e.defaultView } }, function (e, t, n) { "use strict"; n.d(t, "c", (function () { return i })), t["a"] = h; var r = {}, i = null; if ("undefined" !== typeof document) { var o = document.documentElement; "onmouseenter" in o || (r = { mouseenter: "mouseover", mouseleave: "mouseout" }) } function a(e, t, n) { return e = s(e, t, n), function (t) { var n = t.relatedTarget; n && (n === this || 8 & n.compareDocumentPosition(this)) || e.call(this, t) } } function s(e, t, n) { return function (r) { var o = i; i = r; try { e.call(this, this.__data__, t, n) } finally { i = o } } } function c(e) { return e.trim().split(/^|\s+/).map((function (e) { var t = "", n = e.indexOf("."); return n >= 0 && (t = e.slice(n + 1), e = e.slice(0, n)), { type: e, name: t } })) } function l(e) { return function () { var t = this.__on; if (t) { for (var n, r = 0, i = -1, o = t.length; r < o; ++r)n = t[r], e.type && n.type !== e.type || n.name !== e.name ? t[++i] = n : this.removeEventListener(n.type, n.listener, n.capture); ++i ? t.length = i : delete this.__on } } } function u(e, t, n) { var i = r.hasOwnProperty(e.type) ? a : s; return function (r, o, a) { var s, c = this.__on, l = i(t, o, a); if (c) for (var u = 0, h = c.length; u < h; ++u)if ((s = c[u]).type === e.type && s.name === e.name) return this.removeEventListener(s.type, s.listener, s.capture), this.addEventListener(s.type, s.listener = l, s.capture = n), void (s.value = t); this.addEventListener(e.type, l, n), s = { type: e.type, name: e.name, value: t, listener: l, capture: n }, c ? c.push(s) : this.__on = [s] } } function h(e, t, n, r) { var o = i; e.sourceEvent = i, i = e; try { return t.apply(n, r) } finally { i = o } } t["b"] = function (e, t, n) { var r, i, o = c(e + ""), a = o.length; if (!(arguments.length < 2)) { for (s = t ? u : l, null == n && (n = !1), r = 0; r < a; ++r)this.each(s(o[r], t, n)); return this } var s = this.node().__on; if (s) for (var h, f = 0, d = s.length; f < d; ++f)for (r = 0, h = s[f]; r < a; ++r)if ((i = o[r]).type === h.type && i.name === h.name) return h.value } }, function (e, t, n) { "use strict"; var r = n(432); t["a"] = function () { var e, t = r["c"]; while (e = t.sourceEvent) t = e; return t } }, function (e, t, n) { "use strict"; n(435), n(451), n(436), n(449), n(452), n(512), n(513); var r = n(419); n.d(t, "a", (function () { return r["a"] })); n(437), n(453), n(514); var i = n(454); n.d(t, "c", (function () { return i["a"] })); var o = n(515); n.d(t, "d", (function () { return o["a"] })), n.d(t, "e", (function () { return o["b"] })); n(518); var a = n(448); n.d(t, "b", (function () { return a["a"] })); n(519), n(520), n(521), n(522), n(523), n(524) }, function (e, t, n) { "use strict"; var r = n(19), i = n(448), o = n(451), a = n(452), s = n(419), c = n(453), l = n(454), u = n(450), h = n(437); t["a"] = function (e, t) { var n, f = typeof t; return null == t || "boolean" === f ? Object(u["a"])(t) : ("number" === f ? s["a"] : "string" === f ? (n = Object(r["a"])(t)) ? (t = n, i["a"]) : l["a"] : t instanceof r["a"] ? i["a"] : t instanceof Date ? a["a"] : Object(h["b"])(t) ? h["a"] : Array.isArray(t) ? o["a"] : "function" !== typeof t.valueOf && "function" !== typeof t.toString || isNaN(t) ? c["a"] : s["a"])(e, t) } }, function (e, t, n) { "use strict"; function r(e, t, n, r, i) { var o = e * e, a = o * e; return ((1 - 3 * e + 3 * o - a) * t + (4 - 6 * o + 3 * a) * n + (1 + 3 * e + 3 * o - 3 * a) * r + a * i) / 6 } t["a"] = r, t["b"] = function (e) { var t = e.length - 1; return function (n) { var i = n <= 0 ? n = 0 : n >= 1 ? (n = 1, t - 1) : Math.floor(n * t), o = e[i], a = e[i + 1], s = i > 0 ? e[i - 1] : 2 * o - a, c = i < t - 1 ? e[i + 2] : 2 * a - o; return r((n - i / t) * t, s, o, a, c) } } }, function (e, t, n) { "use strict"; function r(e) { return ArrayBuffer.isView(e) && !(e instanceof DataView) } t["b"] = r, t["a"] = function (e, t) { t || (t = []); var n, r = e ? Math.min(t.length, e.length) : 0, i = t.slice(); return function (o) { for (n = 0; n < r; ++n)i[n] = e[n] * (1 - o) + t[n] * o; return i } } }, function (e, t) { e.exports = function (e) { var t = e.get("scaleController") || {}; return t.defs } }, function (e, t, n) { var r = n(438); e.exports = function (e, t) { var n = r(e); if (n && n[t]) return n[t] } }, function (e, t, n) { var r = n(0), i = n(100); e.exports = function (e, t) { var n, o = t.field, a = t.type, s = r.Array.values(e, o); return "linear" === a ? (n = r.Array.getRange(s), t.min < n.min && (n.min = t.min), t.max > n.max && (n.max = t.max)) : "timeCat" === a ? (r.each(s, (function (e, t) { s[t] = i.toTimeStamp(e) })), s.sort((function (e, t) { return e - t })), n = s) : n = s, n } }, function (e, t, n) { "use strict"; var r = n(99); t["a"] = function (e) { return "string" === typeof e ? new r["a"]([[document.querySelector(e)]], [document.documentElement]) : new r["a"]([[e]], r["c"]) } }, function (e, t, n) { "use strict"; function r() { return [] } t["a"] = function (e) { return null == e ? r : function () { return this.querySelectorAll(e) } } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return function () { return this.matches(e) } } }, function (e, t, n) { "use strict"; t["a"] = o; var r = n(445), i = n(99); function o(e, t) { this.ownerDocument = e.ownerDocument, this.namespaceURI = e.namespaceURI, this._next = null, this._parent = e, this.__data__ = t } t["b"] = function () { return new i["a"](this._enter || this._groups.map(r["a"]), this._parents) }, o.prototype = { constructor: o, appendChild: function (e) { return this._parent.insertBefore(e, this._next) }, insertBefore: function (e, t) { return this._parent.insertBefore(e, t) }, querySelector: function (e) { return this._parent.querySelector(e) }, querySelectorAll: function (e) { return this._parent.querySelectorAll(e) } } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return new Array(e.length) } }, function (e, t, n) { "use strict"; t["b"] = s; var r = n(431); function i(e) { return function () { this.style.removeProperty(e) } } function o(e, t, n) { return function () { this.style.setProperty(e, t, n) } } function a(e, t, n) { return function () { var r = t.apply(this, arguments); null == r ? this.style.removeProperty(e) : this.style.setProperty(e, r, n) } } function s(e, t) { return e.style.getPropertyValue(t) || Object(r["a"])(e).getComputedStyle(e, null).getPropertyValue(t) } t["a"] = function (e, t, n) { return arguments.length > 1 ? this.each((null == t ? i : "function" === typeof t ? a : o)(e, t, null == n ? "" : n)) : s(this.node(), e) } }, function (e, t, n) { "use strict"; var r = n(58); t["a"] = function (e, t) { var n, i, o, a = e.__transition, s = !0; if (a) { for (o in t = null == t ? null : t + "", a) (n = a[o]).name === t ? (i = n.state > r["d"] && n.state < r["b"], n.state = r["a"], n.timer.stop(), n.on.call(i ? "interrupt" : "cancel", e, e.__data__, n.index, n.group), delete a[o]) : s = !1; s && delete e.__transition } } }, function (e, t, n) { "use strict"; var r = n(19), i = n(436), o = n(449), a = n(206); function s(e) { return function (t) { var n, i, o = t.length, a = new Array(o), s = new Array(o), c = new Array(o); for (n = 0; n < o; ++n)i = Object(r["f"])(t[n]), a[n] = i.r || 0, s[n] = i.g || 0, c[n] = i.b || 0; return a = e(a), s = e(s), c = e(c), i.opacity = 1, function (e) { return i.r = a(e), i.g = s(e), i.b = c(e), i + "" } } } t["a"] = function e(t) { var n = Object(a["b"])(t); function i(e, t) { var i = n((e = Object(r["f"])(e)).r, (t = Object(r["f"])(t)).r), o = n(e.g, t.g), s = n(e.b, t.b), c = Object(a["a"])(e.opacity, t.opacity); return function (t) { return e.r = i(t), e.g = o(t), e.b = s(t), e.opacity = c(t), e + "" } } return i.gamma = e, i }(1); s(i["b"]), s(o["a"]) }, function (e, t, n) { "use strict"; var r = n(436); t["a"] = function (e) { var t = e.length; return function (n) { var i = Math.floor(((n %= 1) < 0 ? ++n : n) * t), o = e[(i + t - 1) % t], a = e[i % t], s = e[(i + 1) % t], c = e[(i + 2) % t]; return Object(r["a"])((n - i / t) * t, o, a, s, c) } } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return function () { return e } } }, function (e, t, n) { "use strict"; t["a"] = i; var r = n(435); n(437); function i(e, t) { var n, i = t ? t.length : 0, o = e ? Math.min(i, e.length) : 0, a = new Array(o), s = new Array(i); for (n = 0; n < o; ++n)a[n] = Object(r["a"])(e[n], t[n]); for (; n < i; ++n)s[n] = t[n]; return function (e) { for (n = 0; n < o; ++n)s[n] = a[n](e); return s } } }, function (e, t, n) { "use strict"; t["a"] = function (e, t) { var n = new Date; return e = +e, t = +t, function (r) { return n.setTime(e * (1 - r) + t * r), n } } }, function (e, t, n) { "use strict"; var r = n(435); t["a"] = function (e, t) { var n, i = {}, o = {}; for (n in null !== e && "object" === typeof e || (e = {}), null !== t && "object" === typeof t || (t = {}), t) n in e ? i[n] = Object(r["a"])(e[n], t[n]) : o[n] = t[n]; return function (e) { for (n in i) o[n] = i[n](e); return o } } }, function (e, t, n) { "use strict"; var r = n(419), i = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, o = new RegExp(i.source, "g"); function a(e) { return function () { return e } } function s(e) { return function (t) { return e(t) + "" } } t["a"] = function (e, t) { var n, c, l, u = i.lastIndex = o.lastIndex = 0, h = -1, f = [], d = []; e += "", t += ""; while ((n = i.exec(e)) && (c = o.exec(t))) (l = c.index) > u && (l = t.slice(u, l), f[h] ? f[h] += l : f[++h] = l), (n = n[0]) === (c = c[0]) ? f[h] ? f[h] += c : f[++h] = c : (f[++h] = null, d.push({ i: h, x: Object(r["a"])(n, c) })), u = o.lastIndex; return u < t.length && (l = t.slice(u), f[h] ? f[h] += l : f[++h] = l), f.length < 2 ? d[0] ? s(d[0].x) : a(t) : (t = d.length, function (e) { for (var n, r = 0; r < t; ++r)f[(n = d[r]).i] = n.x(e); return f.join("") }) } }, function (e, t, n) { "use strict"; var r = n(19), i = n(434); t["a"] = function (e, t) { var n; return ("number" === typeof t ? i["a"] : t instanceof r["a"] ? i["b"] : (n = Object(r["a"])(t)) ? (t = n, i["b"]) : i["c"])(e, t) } }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(421), o = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "rect", t }, n.generateFacets = function (e) { var t = this, n = t.fields, r = [], i = 1, o = 1, a = n[0], s = n[1], c = [""], l = [""]; return a && (c = t.getFieldValues(a, e), o = c.length), s && (l = t.getFieldValues(s, e), i = l.length), c.forEach((function (n, u) { l.forEach((function (h, f) { var d = [{ field: a, value: n, values: c }, { field: s, value: h, values: l }], p = t.getFilter(d), v = e.filter(p), m = { type: t.type, colValue: n, rowValue: h, colField: a, rowField: s, colIndex: u, rowIndex: f, cols: o, rows: i, data: v, region: t.getRegion(i, o, u, f) }; r.push(m) })) })), r }, n.setXAxis = function (e, t, n) { n.rowIndex !== n.rows - 1 ? (t[e].title = null, t[e].label = null) : n.colIndex !== parseInt((n.cols - 1) / 2) && (t[e].title = null) }, n.setYAxis = function (e, t, n) { 0 !== n.colIndex ? (t[e].title = null, t[e].label = null) : n.rowIndex !== parseInt((n.rows - 1) / 2) && (t[e].title = null) }, n.renderTitle = function (e, t) { 0 === t.rowIndex && this.drawColTitle(e, t), t.colIndex === t.cols - 1 && this.drawRowTitle(e, t) }, t }(i); e.exports = o }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(421), o = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "list", t.cols = null, t }, n.generateFacets = function (e) { var t = this, n = t.fields, r = n[0]; if (!r) throw "Please specify for the field for facet!"; var i = t.getFieldValues(r, e), o = i.length, a = t.cols || o, s = parseInt((o + a - 1) / a), c = []; return i.forEach((function (n, l) { var u = parseInt(l / a), h = l % a, f = [{ field: r, value: n, values: i }], d = t.getFilter(f), p = e.filter(d), v = { type: t.type, count: o, colValue: n, colField: r, rowField: null, rowValue: n, colIndex: h, rowIndex: u, cols: a, rows: s, data: p, region: t.getRegion(s, a, h, u) }; c.push(v) })), c }, n.setXAxis = function (e, t, n) { n.rowIndex !== n.rows - 1 && n.cols * n.rowIndex + n.colIndex + 1 + n.cols <= n.count && (t[e].label = null, t[e].title = null) }, n.setYAxis = function (e, t, n) { 0 !== n.colIndex && (t[e].title = null, t[e].label = null) }, t }(i); e.exports = o }, function (e, t, n) { var r = n(205); n(459), n(461), n(463), n(422), n(424), n(416), n(426), n(464), n(466), n(468), n(544), n(546), n(551), e.exports = r }, function (e, t, n) { function r(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function i(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var o = n(23), a = n(415), s = n(0); n(460); var c = function (e) { i(n, e); var t = n.prototype; function n(t) { var n; return n = e.call(this, t) || this, s.assign(r(n), a), n } return t.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "area", t.shapeType = "area", t.generatePoints = !0, t.sortable = !0, t }, t.draw = function (e, t, n, r) { var i = this, o = this.getDrawCfg(e[0]); i._applyViewThemeShapeStyle(o, o.shape, n); var a = this.splitData(e); o.origin = e, s.each(a, (function (e, a) { o.splitedIndex = a; var s = e.map((function (e) { return e.points })); o.points = s; var c = n.drawShape(o.shape, o, t); i.appendShapeInfo(c, r + a) })) }, n }(o), l = function (e) { function t() { return e.apply(this, arguments) || this } i(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.hasDefaultAdjust = !0, t.adjusts = [{ type: "stack" }], t }, t }(c); c.Stack = l, o.Area = c, o.AreaStack = l, e.exports = c }, function (e, t, n) { var r = n(0), i = n(21), o = n(25), a = n(57), s = n(8); function c(e) { var t = s.shape.hollowArea, n = r.mix({}, t, e.style); return a.addStrokeAttrs(n, e), r.isNumber(e.size) && (n.lineWidth = e.size), n } function l(e) { var t = s.shape.area, n = r.mix({}, t, e.style); return a.addFillAttrs(n, e), e.color && (n.stroke = n.stroke || e.color), r.isNumber(e.size) && (n.lineWidth = e.size), n } function u(e, t, n) { var i = [], a = [], s = [], c = [], l = e.isInCircle; return r.each(e.points, (function (e) { s.push(e[1]), c.push(e[0]) })), c = c.reverse(), a.push(s, c), r.each(a, (function (r, a) { var s = []; r = n.parsePoints(r); var c = r[0]; l && r.push({ x: c.x, y: c.y }), s = t ? o.getSplinePath(r, !1, e.constraint) : o.getLinePath(r, !1), a > 0 && (s[0][0] = "L"), i = i.concat(s) })), i.push(["Z"]), i } function h(e) { return { symbol: function (e, t, n) { return [["M", e - n, t - 4], ["L", e + n, t - 4], ["L", e + n, t + 4], ["L", e - n, t + 4], ["Z"]] }, radius: 5, fill: e.color, fillOpacity: .6 } } function f(e, t) { if ("line" === e || "smoothLine" === e) { var n = t.lineWidth || 0; return { lineWidth: n + 1 } } var r = t.fillOpacity || t.opacity || 1; return { fillOpacity: r - .15, strokeOpacity: r - .15 } } function d(e, t, n) { var i = e._coord, o = i.convertPoint(t.points[0][1]); return n.addShape("circle", { attrs: r.mix({ x: o.x, y: o.y, r: 2, fill: t.color }, t.style) }) } var p = i.registerFactory("area", { defaultShapeType: "area", getDefaultPoints: function (e) { var t = [], n = e.x, i = e.y, o = e.y0; return i = r.isArray(i) ? i : [o, i], r.each(i, (function (e) { t.push({ x: n, y: e }) })), t }, getActiveCfg: function (e, t) { return f(e, t) }, drawShape: function (e, t, n) { var r, i = this.getShape(e); return r = 1 === t.points.length && s.showSinglePoint ? d(this, t, n) : i.draw(t, n), r && (r.set("origin", t.origin), r._id = t.splitedIndex ? t._id + t.splitedIndex : t._id, r.name = this.name), r }, getSelectedCfg: function (e, t) { return t && t.style ? t.style : this.getActiveCfg(e, t) } }); i.registerShape("area", "area", { draw: function (e, t) { var n = l(e), i = u(e, !1, this); return t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { return h(e) } }), i.registerShape("area", "smooth", { draw: function (e, t) { var n = l(e), i = this._coord; e.constraint = [[i.start.x, i.end.y], [i.end.x, i.start.y]]; var o = u(e, !0, this); return t.addShape("path", { attrs: r.mix(n, { path: o }) }) }, getMarkerCfg: function (e) { return h(e) } }), i.registerShape("area", "line", { draw: function (e, t) { var n = c(e), i = u(e, !1, this); return t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { return h(e) } }), i.registerShape("area", "smoothLine", { draw: function (e, t) { var n = c(e), i = u(e, !0, this); return t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { return h(e) } }), p.spline = p.smooth, e.exports = p }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(23); n(462); var o = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "edge", t.shapeType = "edge", t.generatePoints = !0, t }, t }(i); i.Edge = o, e.exports = o }, function (e, t, n) { var r = n(0), i = n(21), o = n(57), a = n(8), s = n(25), c = 1 / 3; function l(e) { var t = a.shape.edge, n = r.mix({}, t, e.style); return o.addStrokeAttrs(n, e), e.size && (n.lineWidth = e.size), n } var u = i.registerFactory("edge", { defaultShapeType: "line", getDefaultPoints: function (e) { return o.splitPoints(e) }, getActiveCfg: function (e, t) { var n = t.lineWidth || 0; return { lineWidth: n + 1 } } }); function h(e, t) { var n = []; n.push({ x: e.x, y: .5 * e.y + 1 * t.y / 2 }), n.push({ y: .5 * e.y + 1 * t.y / 2, x: t.x }), n.push(t); var i = ["C"]; return r.each(n, (function (e) { i.push(e.x, e.y) })), i } function f(e, t) { var n = []; n.push({ x: t.x, y: t.y }), n.push(e); var i = ["Q"]; return r.each(n, (function (e) { i.push(e.x, e.y) })), i } function d(e, t) { var n = h(e, t), r = [["M", e.x, e.y]]; return r.push(n), r } function p(e, t, n) { var r = f(t, n), i = [["M", e.x, e.y]]; return i.push(r), i } function v(e, t) { var n = f(e[1], t), r = f(e[3], t), i = [["M", e[0].x, e[0].y]]; return i.push(r), i.push(["L", e[3].x, e[3].y]), i.push(["L", e[2].x, e[2].y]), i.push(n), i.push(["L", e[1].x, e[1].y]), i.push(["L", e[0].x, e[0].y]), i.push(["Z"]), i } function m(e, t) { var n = []; n.push({ y: e.y * (1 - c) + t.y * c, x: e.x }), n.push({ y: e.y * (1 - c) + t.y * c, x: t.x }), n.push(t); var i = [["M", e.x, e.y]]; return r.each(n, (function (e) { i.push(["L", e.x, e.y]) })), i } i.registerShape("edge", "line", { draw: function (e, t) { var n = this.parsePoints(e.points), i = l(e), o = s.getLinePath(n), a = t.addShape("path", { attrs: r.mix(i, { path: o }) }); return a }, getMarkerCfg: function (e) { return r.mix({ symbol: "circle", radius: 4.5 }, l(e)) } }), i.registerShape("edge", "vhv", { draw: function (e, t) { var n = e.points, i = l(e), o = m(n[0], n[1]); o = this.parsePath(o); var a = t.addShape("path", { attrs: r.mix(i, { path: o }) }); return a }, getMarkerCfg: function (e) { return r.mix({ symbol: "circle", radius: 4.5 }, l(e)) } }), i.registerShape("edge", "smooth", { draw: function (e, t) { var n = e.points, i = l(e), o = d(n[0], n[1]); o = this.parsePath(o); var a = t.addShape("path", { attrs: r.mix(i, { path: o }) }); return a }, getMarkerCfg: function (e) { return r.mix({ symbol: "circle", radius: 4.5 }, l(e)) } }), i.registerShape("edge", "arc", { draw: function (e, t) { var n, i, o = e.points, a = o.length > 2 ? "weight" : "normal", s = l(e); if (e.isInCircle) { var c = { x: 0, y: 1 }; "normal" === a ? i = p(o[0], o[1], c) : (s.fill = s.stroke, i = v(o, c)), i = this.parsePath(i), n = t.addShape("path", { attrs: r.mix(s, { path: i }) }) } else if ("normal" === a) o = this.parsePoints(o), n = t.addShape("arc", { attrs: r.mix(s, { x: (o[1].x + o[0].x) / 2, y: o[0].y, r: Math.abs(o[1].x - o[0].x) / 2, startAngle: Math.PI, endAngle: 2 * Math.PI }) }); else { i = [["M", o[0].x, o[0].y], ["L", o[1].x, o[1].y]]; var u = h(o[1], o[3]), f = h(o[2], o[0]); i.push(u), i.push(["L", o[3].x, o[3].y]), i.push(["L", o[2].x, o[2].y]), i.push(f), i.push(["Z"]), i = this.parsePath(i), s.fill = s.stroke, n = t.addShape("path", { attrs: r.mix(s, { path: i }) }) } return n }, getMarkerCfg: function (e) { return r.mix({ symbol: "circle", radius: 4.5 }, l(e)) } }), e.exports = u }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(104), o = i.ColorUtil, a = n(23), s = n(0), c = "_origin", l = "shadowCanvas", u = "valueRange", h = "imageShape", f = "mappedData", d = "grayScaleBlurredCanvas", p = "heatmapSize", v = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "heatmap", t.paletteCache = {}, t }, n._prepareRange = function () { var e = this, t = e.get(f), n = e.getAttr("color"), r = n.field, i = 1 / 0, o = -1 / 0; t.forEach((function (e) { var t = e[c][r]; t > o && (o = t), t < i && (i = t) })), i === o && (i = o - 1); var a = [i, o]; e.set(u, a) }, n._prepareSize = function () { var e = this, t = e.getDefaultValue("size"); s.isNumber(t) || (t = e._getDefaultSize()); var n = e.get("styleOptions"), r = n && s.isObject(n.style) ? n.style.blur : null; s.isFinite(r) && null !== r || (r = t / 2), e.set(p, { blur: r, radius: t }) }, n._getDefaultSize = function () { var e = this, t = e.getAttr("position"), n = e.get("coord"), r = Math.min(n.width / (4 * t.scales[0].ticks.length), n.height / (4 * t.scales[1].ticks.length)); return r }, n._colorize = function (e) { for (var t = this, n = t.getAttr("color"), r = e.data, i = t.get("paletteCache"), a = 3; a < r.length; a += 4) { var s = r[a]; if (s) { var c = void 0; i[s] ? c = i[s] : (c = o.rgb2arr(n.gradient(s / 256)), i[s] = c), r[a - 3] = c[0], r[a - 2] = c[1], r[a - 1] = c[2], r[a] = s } } }, n._prepareGreyScaleBlurredCircle = function (e, t) { var n = this, r = n.get(d); r || (r = document.createElement("canvas"), n.set(d, r)); var i = e + t, o = r.getContext("2d"); r.width = r.height = 2 * i, o.clearRect(0, 0, r.width, r.height), o.shadowOffsetX = o.shadowOffsetY = 2 * i, o.shadowBlur = t, o.shadowColor = "black", o.beginPath(), o.arc(-i, -i, e, 0, 2 * Math.PI, !0), o.closePath(), o.fill() }, n._drawGrayScaleBlurredCircle = function (e, t, n, r, i) { var o = this, a = o.get(d); i.globalAlpha = r, i.drawImage(a, e - n, t - n) }, n._getShadowCanvasCtx = function () { var e = this, t = e.get(l); t || (t = document.createElement("canvas"), e.set(l, t)); var n = e.get("coord"); return n && (t.width = n.width, t.height = n.height), t.getContext("2d") }, n._clearShadowCanvasCtx = function () { var e = this._getShadowCanvasCtx(); e.clearRect(0, 0, e.canvas.width, e.canvas.height) }, n._getImageShape = function () { var e = this, t = e.get(h); if (t) return t; var n = e.get("container"); return t = n.addShape("Image", {}), e.set(h, t), t }, n.clear = function () { this._clearShadowCanvasCtx(), e.prototype.clear.call(this) }, n.drawWithRange = function (e) { var t = this, n = t.get("coord"), r = n.start, i = n.end, o = n.width, a = n.height, s = t.getAttr("color").field, l = t.get(p); t._clearShadowCanvasCtx(); var u = t._getShadowCanvasCtx(), h = t.get(f); e && (h = h.filter((function (t) { return t[c][s] <= e[1] && t[c][s] >= e[0] }))); for (var d = t._getScale(s), v = 0; v < h.length; v++) { var m = h[v], g = t.getDrawCfg(m), y = d.scale(m[c][s]); t._drawGrayScaleBlurredCircle(g.x - r.x, g.y - i.y, l.radius + l.blur, y, u) } var b = u.getImageData(0, 0, o, a); t._clearShadowCanvasCtx(), t._colorize(b), u.putImageData(b, 0, 0); var x = t._getImageShape(); x.attr("x", r.x), x.attr("y", i.y), x.attr("width", o), x.attr("height", a), x.attr("img", u.canvas) }, n.draw = function (e) { var t = this; t.set(f, e), t._prepareRange(), t._prepareSize(); var n = t.get(p); t._prepareGreyScaleBlurredCircle(n.radius, n.blur); var r = t.get(u); t.drawWithRange(r) }, t }(a); a.Heatmap = v, e.exports = v }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(23), o = n(0); n(465); var a = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "polygon", t.shapeType = "polygon", t.generatePoints = !0, t }, n.createShapePointsCfg = function (t) { var n, r = e.prototype.createShapePointsCfg.call(this, t), i = this, a = r.x, s = r.y; if (!o.isArray(a) || !o.isArray(s)) { var c = i.getXScale(), l = i.getYScale(), u = c.values ? c.values.length : c.ticks.length, h = l.values ? l.values.length : l.ticks.length, f = .5 / u, d = .5 / h; c.isCategory && l.isCategory ? (a = [a - f, a - f, a + f, a + f], s = [s - d, s + d, s + d, s - d]) : o.isArray(a) ? (n = a, a = [n[0], n[0], n[1], n[1]], s = [s - d / 2, s + d / 2, s + d / 2, s - d / 2]) : o.isArray(s) && (n = s, s = [n[0], n[1], n[1], n[0]], a = [a - f / 2, a - f / 2, a + f / 2, a + f / 2]), r.x = a, r.y = s } return r }, t }(i); i.Polygon = a, e.exports = a }, function (e, t, n) { var r = n(0), i = n(21), o = n(57), a = n(8); function s(e) { var t = a.shape.polygon, n = r.mix({}, t, e.style); return o.addFillAttrs(n, e), n } function c(e) { var t = a.shape.hollowPolygon, n = r.mix({}, t, e.style); return o.addStrokeAttrs(n, e), n } function l(e) { var t = e[0], n = 1, i = [["M", t.x, t.y]]; while (n < e.length) { var o = e[n]; o.x === e[n - 1].x && o.y === e[n - 1].y || (i.push(["L", o.x, o.y]), o.x === t.x && o.y === t.y && n < e.length - 1 && (t = e[n + 1], i.push(["Z"]), i.push(["M", t.x, t.y]), n++)), n++ } return r.isEqual(i[i.length - 1], t) || i.push(["L", t.x, t.y]), i.push(["Z"]), i } var u = i.registerFactory("polygon", { defaultShapeType: "polygon", getDefaultPoints: function (e) { var t = []; return r.each(e.x, (function (n, r) { var i = e.y[r]; t.push({ x: n, y: i }) })), t }, getActiveCfg: function (e, t) { var n = t.lineWidth || 1; if ("hollow" === e) return { lineWidth: n + 1 }; var r = t.fillOpacity || t.opacity || 1; return { fillOpacity: r - .08 } }, getSelectedCfg: function (e, t) { return t && t.style ? t.style : this.getActiveCfg(e, t) } }); i.registerShape("polygon", "polygon", { draw: function (e, t) { if (!r.isEmpty(e.points)) { var n = s(e), i = l(e.points); return i = this.parsePath(i), t.addShape("path", { attrs: r.mix(n, { path: i }) }) } }, getMarkerCfg: function (e) { return r.mix({ symbol: "square", radius: 4 }, s(e)) } }), i.registerShape("polygon", "hollow", { draw: function (e, t) { if (!r.isEmpty(e.points)) { var n = c(e), i = l(e.points); return i = this.parsePath(i), t.addShape("path", { attrs: r.mix(n, { path: i }) }) } }, getMarkerCfg: function (e) { return r.mix({ symbol: "square", radius: 4 }, s(e)) } }), e.exports = u }, function (e, t, n) { function r(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function i(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var o = n(23), a = n(0), s = n(414); n(467); var c = function (e) { i(n, e); var t = n.prototype; function n(t) { var n; return n = e.call(this, t) || this, a.assign(r(n), s), n } return t.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "schema", t.shapeType = "schema", t.generatePoints = !0, t }, t.createShapePointsCfg = function (t) { var n = e.prototype.createShapePointsCfg.call(this, t); return n.size = this.getNormalizedSize(t), n }, t.clearInner = function () { e.prototype.clearInner.call(this), this.set("defaultSize", null) }, n }(o), l = function (e) { function t() { return e.apply(this, arguments) || this } i(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.hasDefaultAdjust = !0, t.adjusts = [{ type: "dodge" }], t }, t }(c); c.Dodge = l, o.Schema = c, o.SchemaDodge = l, e.exports = c }, function (e, t, n) { var r = n(0), i = n(21), o = n(57), a = n(8); function s(e) { r.isArray(e) || (e = [e]); var t = e[0], n = e[e.length - 1], i = e.length > 1 ? e[1] : t, o = e.length > 3 ? e[3] : n, a = e.length > 2 ? e[2] : i; return { min: t, max: n, min1: i, max1: o, median: a } } function c(e, t) { r.each(e, (function (e) { t.push({ x: e[0], y: e[1] }) })) } function l(e) { var t = a.shape.schema, n = r.mix({}, t, e.style); return o.addStrokeAttrs(n, e), n } function u(e) { var t = a.shape.schema, n = r.mix({}, t, e.style); return o.addFillAttrs(n, e), e.color && (n.stroke = e.color || n.stroke), n } function h(e, t, n) { var i, o, a = []; return r.isArray(t) ? (o = s(t), i = [[e - n / 2, o.max], [e + n / 2, o.max], [e, o.max], [e, o.max1], [e - n / 2, o.min1], [e - n / 2, o.max1], [e + n / 2, o.max1], [e + n / 2, o.min1], [e, o.min1], [e, o.min], [e - n / 2, o.min], [e + n / 2, o.min], [e - n / 2, o.median], [e + n / 2, o.median]]) : (t = t || .5, o = s(e), i = [[o.min, t - n / 2], [o.min, t + n / 2], [o.min, t], [o.min1, t], [o.min1, t - n / 2], [o.min1, t + n / 2], [o.max1, t + n / 2], [o.max1, t - n / 2], [o.max1, t], [o.max, t], [o.max, t - n / 2], [o.max, t + n / 2], [o.median, t - n / 2], [o.median, t + n / 2]]), c(i, a), a } function f(e) { r.isArray(e) || (e = [e]); var t = e.sort((function (e, t) { return e < t ? 1 : -1 })), n = t.length; if (n < 4) for (var i = t[n - 1], o = 0; o < 4 - n; o++)t.push(i); return t } function d(e, t, n) { var r = f(t), i = [{ x: e, y: r[0] }, { x: e, y: r[1] }, { x: e - n / 2, y: r[2] }, { x: e - n / 2, y: r[1] }, { x: e + n / 2, y: r[1] }, { x: e + n / 2, y: r[2] }, { x: e, y: r[2] }, { x: e, y: r[3] }]; return i } function p(e) { var t = [["M", e[0].x, e[0].y], ["L", e[1].x, e[1].y], ["M", e[2].x, e[2].y], ["L", e[3].x, e[3].y], ["M", e[4].x, e[4].y], ["L", e[5].x, e[5].y], ["L", e[6].x, e[6].y], ["L", e[7].x, e[7].y], ["L", e[4].x, e[4].y], ["Z"], ["M", e[8].x, e[8].y], ["L", e[9].x, e[9].y], ["M", e[10].x, e[10].y], ["L", e[11].x, e[11].y], ["M", e[12].x, e[12].y], ["L", e[13].x, e[13].y]]; return t } function v(e) { var t = [["M", e[0].x, e[0].y], ["L", e[1].x, e[1].y], ["M", e[2].x, e[2].y], ["L", e[3].x, e[3].y], ["L", e[4].x, e[4].y], ["L", e[5].x, e[5].y], ["Z"], ["M", e[6].x, e[6].y], ["L", e[7].x, e[7].y]]; return t } var m = i.registerFactory("schema", { defaultShapeType: "", getActiveCfg: function (e, t) { if ("box" === e) { var n = t.lineWidth || 1; return { lineWidth: n + 1 } } var r = t.fillOpacity || t.opacity || 1; return { fillOpacity: r - .15, strokeOpacity: r - .15 } }, getSelectedCfg: function (e, t) { return t && t.style ? t.style : this.getActiveCfg(e, t) } }); i.registerShape("schema", "box", { getPoints: function (e) { return h(e.x, e.y, e.size) }, draw: function (e, t) { var n = l(e), i = p(e.points); return i = this.parsePath(i), t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { return { symbol: function (e, t, n) { var r = [t - 6, t - 3, t, t + 3, t + 6], i = h(e, r, n); return [["M", i[0].x + 1, i[0].y], ["L", i[1].x - 1, i[1].y], ["M", i[2].x, i[2].y], ["L", i[3].x, i[3].y], ["M", i[4].x, i[4].y], ["L", i[5].x, i[5].y], ["L", i[6].x, i[6].y], ["L", i[7].x, i[7].y], ["L", i[4].x, i[4].y], ["Z"], ["M", i[8].x, i[8].y], ["L", i[9].x, i[9].y], ["M", i[10].x + 1, i[10].y], ["L", i[11].x - 1, i[11].y], ["M", i[12].x, i[12].y], ["L", i[13].x, i[13].y]] }, radius: 6, lineWidth: 1, stroke: e.color } } }), i.registerShape("schema", "candle", { getPoints: function (e) { return d(e.x, e.y, e.size) }, draw: function (e, t) { var n = u(e), i = v(e.points); return i = this.parsePath(i), t.addShape("path", { attrs: r.mix(n, { path: i }) }) }, getMarkerCfg: function (e) { return { symbol: function (e, t, n) { t = [t + 7.5, t + 3, t - 3, t - 7.5]; var r = d(e, t, n); return [["M", r[0].x, r[0].y], ["L", r[1].x, r[1].y], ["M", r[2].x, r[2].y], ["L", r[3].x, r[3].y], ["L", r[4].x, r[4].y], ["L", r[5].x, r[5].y], ["Z"], ["M", r[6].x, r[6].y], ["L", r[7].x, r[7].y]] }, lineWidth: 1, stroke: e.color, fill: e.color, radius: 6 } } }), e.exports = m }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(23), o = n(0), a = n(469), s = a.venn, c = a.scaleSolution, l = a.circlePath, u = a.intersectionAreaPath, h = a.computeTextCentres; n(543); var f = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "venn", t.shapeType = "venn", t.generatePoints = !1, t }, n._getAttrValues = function (t, n) { return "position" === t.type ? [n.x, n.y] : e.prototype._getAttrValues.call(this, t, n) }, n.sets = function (e) { return this.set("setsField", e), this }, n._initAttrs = function () { var t = this; e.prototype._initAttrs.call(this); var n = t.get("attrOptions"), r = t.get("setsField") || "sets", i = t.get("data"), a = n.size ? n.size.field : "size"; i.forEach((function (e) { e.sets = e[r], e._sets = e[r].join("&"), e.size = e[a] })); var f = s(i), d = t.get("coord"), p = [Math.min(d.x.end, d.x.start), Math.max(d.x.end, d.x.start)], v = [Math.min(d.y.end, d.y.start), Math.max(d.y.end, d.y.start)], m = p[1] - p[0], g = v[1] - v[0], y = t.get("styleOptions"), b = y && o.isObject(y.style) ? y.style.padding : 0; o.isFinite(b) || (b = 0); var x = c(f, m, g, b), w = h(x, i); i.forEach((function (e) { var t = e.sets, n = t.join(","); if (e.id = n, 1 === t.length) { var r = x[n]; e.path = l(r.x, r.y, r.radius), o.assign(e, r) } else { var i = t.map((function (e) { return x[e] })), a = u(i); /[zZ]$/.test(a) || (a += "Z"), e.path = a; var s = w[n] || { x: 0, y: 0 }; o.assign(e, s) } })) }, t }(i); i.Venn = f, e.exports = f }, function (e, t, n) { (function (e, r) { r(t, n(102), n(505)) })(0, (function (e, t, n) { "use strict"; var r = 1e-10; function i(e, t) { var n, i = a(e), l = i.filter((function (t) { return o(t, e) })), u = 0, f = 0, d = []; if (l.length > 1) { var p = h(l); for (n = 0; n < l.length; ++n) { var v = l[n]; v.angle = Math.atan2(v.x - p.x, v.y - p.y) } l.sort((function (e, t) { return t.angle - e.angle })); var m = l[l.length - 1]; for (n = 0; n < l.length; ++n) { var g = l[n]; f += (m.x + g.x) * (g.y - m.y); for (var y = { x: (g.x + m.x) / 2, y: (g.y + m.y) / 2 }, b = null, x = 0; x < g.parentIndex.length; ++x)if (m.parentIndex.indexOf(g.parentIndex[x]) > -1) { var w = e[g.parentIndex[x]], _ = Math.atan2(g.x - w.x, g.y - w.y), C = Math.atan2(m.x - w.x, m.y - w.y), M = C - _; M < 0 && (M += 2 * Math.PI); var O = C - M / 2, k = c(y, { x: w.x + w.radius * Math.sin(O), y: w.y + w.radius * Math.cos(O) }); k > 2 * w.radius && (k = 2 * w.radius), (null === b || b.width > k) && (b = { circle: w, width: k, p1: g, p2: m }) } null !== b && (d.push(b), u += s(b.circle.radius, b.width), m = g) } } else { var S = e[0]; for (n = 1; n < e.length; ++n)e[n].radius < S.radius && (S = e[n]); var T = !1; for (n = 0; n < e.length; ++n)if (c(e[n], S) > Math.abs(S.radius - e[n].radius)) { T = !0; break } T ? u = f = 0 : (u = S.radius * S.radius * Math.PI, d.push({ circle: S, p1: { x: S.x, y: S.y + S.radius }, p2: { x: S.x - r, y: S.y + S.radius }, width: 2 * S.radius })) } return f /= 2, t && (t.area = u + f, t.arcArea = u, t.polygonArea = f, t.arcs = d, t.innerPoints = l, t.intersectionPoints = i), u + f } function o(e, t) { for (var n = 0; n < t.length; ++n)if (c(e, t[n]) > t[n].radius + r) return !1; return !0 } function a(e) { for (var t = [], n = 0; n < e.length; ++n)for (var r = n + 1; r < e.length; ++r)for (var i = u(e[n], e[r]), o = 0; o < i.length; ++o) { var a = i[o]; a.parentIndex = [n, r], t.push(a) } return t } function s(e, t) { return e * e * Math.acos(1 - t / e) - (e - t) * Math.sqrt(t * (2 * e - t)) } function c(e, t) { return Math.sqrt((e.x - t.x) * (e.x - t.x) + (e.y - t.y) * (e.y - t.y)) } function l(e, t, n) { if (n >= e + t) return 0; if (n <= Math.abs(e - t)) return Math.PI * Math.min(e, t) * Math.min(e, t); var r = e - (n * n - t * t + e * e) / (2 * n), i = t - (n * n - e * e + t * t) / (2 * n); return s(e, r) + s(t, i) } function u(e, t) { var n = c(e, t), r = e.radius, i = t.radius; if (n >= r + i || n <= Math.abs(r - i)) return []; var o = (r * r - i * i + n * n) / (2 * n), a = Math.sqrt(r * r - o * o), s = e.x + o * (t.x - e.x) / n, l = e.y + o * (t.y - e.y) / n, u = -(t.y - e.y) * (a / n), h = -(t.x - e.x) * (a / n); return [{ x: s + u, y: l - h }, { x: s - u, y: l + h }] } function h(e) { for (var t = { x: 0, y: 0 }, n = 0; n < e.length; ++n)t.x += e[n].x, t.y += e[n].y; return t.x /= e.length, t.y /= e.length, t } function f(e, t, n, r) { r = r || {}; var i = r.maxIterations || 100, o = r.tolerance || 1e-10, a = e(t), s = e(n), c = n - t; if (a * s > 0) throw "Initial bisect points must have opposite signs"; if (0 === a) return t; if (0 === s) return n; for (var l = 0; l < i; ++l) { c /= 2; var u = t + c, h = e(u); if (h * a >= 0 && (t = u), Math.abs(c) < o || 0 === h) return u } return t + c } function d(e) { for (var t = new Array(e), n = 0; n < e; ++n)t[n] = 0; return t } function p(e, t) { return d(e).map((function () { return d(t) })) } function v(e, t) { for (var n = 0, r = 0; r < e.length; ++r)n += e[r] * t[r]; return n } function m(e) { return Math.sqrt(v(e, e)) } function g(e, t, n) { for (var r = 0; r < t.length; ++r)e[r] = t[r] * n } function y(e, t, n, r, i) { for (var o = 0; o < e.length; ++o)e[o] = t * n[o] + r * i[o] } function b(e, t, n) { n = n || {}; var r, i = n.maxIterations || 200 * t.length, o = n.nonZeroDelta || 1.05, a = n.zeroDelta || .001, s = n.minErrorDelta || 1e-6, c = n.minErrorDelta || 1e-5, l = void 0 !== n.rho ? n.rho : 1, u = void 0 !== n.chi ? n.chi : 2, h = void 0 !== n.psi ? n.psi : -.5, f = void 0 !== n.sigma ? n.sigma : .5, d = t.length, p = new Array(d + 1); p[0] = t, p[0].fx = e(t), p[0].id = 0; for (var v = 0; v < d; ++v) { var m = t.slice(); m[v] = m[v] ? m[v] * o : a, p[v + 1] = m, p[v + 1].fx = e(m), p[v + 1].id = v + 1 } function g(e) { for (var t = 0; t < e.length; t++)p[d][t] = e[t]; p[d].fx = e.fx } for (var b = function (e, t) { return e.fx - t.fx }, x = t.slice(), w = t.slice(), _ = t.slice(), C = t.slice(), M = 0; M < i; ++M) { if (p.sort(b), n.history) { var O = p.map((function (e) { var t = e.slice(); return t.fx = e.fx, t.id = e.id, t })); O.sort((function (e, t) { return e.id - t.id })), n.history.push({ x: p[0].slice(), fx: p[0].fx, simplex: O }) } for (r = 0, v = 0; v < d; ++v)r = Math.max(r, Math.abs(p[0][v] - p[1][v])); if (Math.abs(p[0].fx - p[d].fx) < s && r < c) break; for (v = 0; v < d; ++v) { x[v] = 0; for (var k = 0; k < d; ++k)x[v] += p[k][v]; x[v] /= d } var S = p[d]; if (y(w, 1 + l, x, -l, S), w.fx = e(w), w.fx < p[0].fx) y(C, 1 + u, x, -u, S), C.fx = e(C), C.fx < w.fx ? g(C) : g(w); else if (w.fx >= p[d - 1].fx) { var T = !1; if (w.fx > S.fx ? (y(_, 1 + h, x, -h, S), _.fx = e(_), _.fx < S.fx ? g(_) : T = !0) : (y(_, 1 - h * l, x, h * l, S), _.fx = e(_), _.fx < w.fx ? g(_) : T = !0), T) { if (f >= 1) break; for (v = 1; v < p.length; ++v)y(p[v], 1 - f, p[0], f, p[v]), p[v].fx = e(p[v]) } } else g(w) } return p.sort(b), { fx: p[0].fx, x: p[0] } } function x(e, t, n, r, i, o, a) { var s = n.fx, c = v(n.fxprime, t), l = s, u = s, h = c, f = 0; function d(u, f, d) { for (var p = 0; p < 16; ++p)if (i = (u + f) / 2, y(r.x, 1, n.x, i, t), l = r.fx = e(r.x, r.fxprime), h = v(r.fxprime, t), l > s + o * i * c || l >= d) f = i; else { if (Math.abs(h) <= -a * c) return i; h * (f - u) >= 0 && (f = u), u = i, d = l } return 0 } i = i || 1, o = o || 1e-6, a = a || .1; for (var p = 0; p < 10; ++p) { if (y(r.x, 1, n.x, i, t), l = r.fx = e(r.x, r.fxprime), h = v(r.fxprime, t), l > s + o * i * c || p && l >= u) return d(f, i, u); if (Math.abs(h) <= -a * c) return i; if (h >= 0) return d(i, f, l); u = l, f = i, i *= 2 } return i } function w(e, t, n) { var r, i, o, a = { x: t.slice(), fx: 0, fxprime: t.slice() }, s = { x: t.slice(), fx: 0, fxprime: t.slice() }, c = t.slice(), l = 1; n = n || {}, o = n.maxIterations || 20 * t.length, a.fx = e(a.x, a.fxprime), r = a.fxprime.slice(), g(r, a.fxprime, -1); for (var u = 0; u < o; ++u) { if (l = x(e, r, a, s, l), n.history && n.history.push({ x: a.x.slice(), fx: a.fx, fxprime: a.fxprime.slice(), alpha: l }), l) { y(c, 1, s.fxprime, -1, a.fxprime); var h = v(a.fxprime, a.fxprime), f = Math.max(0, v(c, s.fxprime) / h); y(r, f, r, -1, s.fxprime), i = a, a = s, s = i } else g(r, a.fxprime, -1); if (m(a.fxprime) <= 1e-5) break } return n.history && n.history.push({ x: a.x.slice(), fx: a.fx, fxprime: a.fxprime.slice(), alpha: l }), a } function _(e, t) { t = t || {}, t.maxIterations = t.maxIterations || 500; var n = t.initialLayout || T, r = t.lossFunction || j; e = O(e); var i, o = n(e, t), a = [], s = []; for (i in o) o.hasOwnProperty(i) && (a.push(o[i].x), a.push(o[i].y), s.push(i)); for (var c = b((function (t) { for (var n = {}, i = 0; i < s.length; ++i) { var a = s[i]; n[a] = { x: t[2 * i], y: t[2 * i + 1], radius: o[a].radius } } return r(n, e) }), a, t), l = c.x, u = 0; u < s.length; ++u)i = s[u], o[i].x = l[2 * u], o[i].y = l[2 * u + 1]; return o } var C = 1e-10; function M(e, t, n) { return Math.min(e, t) * Math.min(e, t) * Math.PI <= n + C ? Math.abs(e - t) : f((function (r) { return l(e, t, r) - n }), 0, e + t) } function O(e) { e = e.slice(); var t, n, r, i, o = [], a = {}; for (t = 0; t < e.length; ++t) { var s = e[t]; 1 == s.sets.length ? o.push(s.sets[0]) : 2 == s.sets.length && (r = s.sets[0], i = s.sets[1], a[[r, i]] = !0, a[[i, r]] = !0) } for (o.sort((function (e, t) { return e > t })), t = 0; t < o.length; ++t)for (r = o[t], n = t + 1; n < o.length; ++n)i = o[n], [r, i] in a || e.push({ sets: [r, i], size: 0 }); return e } function k(e, t, n) { var r = p(t.length, t.length), i = p(t.length, t.length); return e.filter((function (e) { return 2 == e.sets.length })).map((function (e) { var o = n[e.sets[0]], a = n[e.sets[1]], s = Math.sqrt(t[o].size / Math.PI), c = Math.sqrt(t[a].size / Math.PI), l = M(s, c, e.size); r[o][a] = r[a][o] = l; var u = 0; e.size + 1e-10 >= Math.min(t[o].size, t[a].size) ? u = 1 : e.size <= 1e-10 && (u = -1), i[o][a] = i[a][o] = u })), { distances: r, constraints: i } } function S(e, t, n, r) { var i, o = 0; for (i = 0; i < t.length; ++i)t[i] = 0; for (i = 0; i < n.length; ++i)for (var a = e[2 * i], s = e[2 * i + 1], c = i + 1; c < n.length; ++c) { var l = e[2 * c], u = e[2 * c + 1], h = n[i][c], f = r[i][c], d = (l - a) * (l - a) + (u - s) * (u - s), p = Math.sqrt(d), v = d - h * h; f > 0 && p <= h || f < 0 && p >= h || (o += 2 * v * v, t[2 * i] += 4 * v * (a - l), t[2 * i + 1] += 4 * v * (s - u), t[2 * c] += 4 * v * (l - a), t[2 * c + 1] += 4 * v * (u - s)) } return o } function T(e, t) { var n = L(e, t), r = t.lossFunction || j; if (e.length >= 8) { var i = A(e, t), o = r(i, e), a = r(n, e); o + 1e-8 < a && (n = i) } return n } function A(e, t) { t = t || {}; var n, r = t.restarts || 10, i = [], o = {}; for (n = 0; n < e.length; ++n) { var a = e[n]; 1 == a.sets.length && (o[a.sets[0]] = i.length, i.push(a)) } var s = k(e, i, o), c = s.distances, l = s.constraints, u = m(c.map(m)) / c.length; c = c.map((function (e) { return e.map((function (e) { return e / u })) })); var h, f, p = function (e, t) { return S(e, t, c, l) }; for (n = 0; n < r; ++n) { var v = d(2 * c.length).map(Math.random); f = w(p, v, t), (!h || f.fx < h.fx) && (h = f) } var y = h.x, b = {}; for (n = 0; n < i.length; ++n) { var x = i[n]; b[x.sets[0]] = { x: y[2 * n] * u, y: y[2 * n + 1] * u, radius: Math.sqrt(x.size / Math.PI) } } if (t.history) for (n = 0; n < t.history.length; ++n)g(t.history[n].x, u); return b } function L(e, t) { for (var n, r = t && t.lossFunction ? t.lossFunction : j, i = {}, o = {}, a = 0; a < e.length; ++a) { var s = e[a]; 1 == s.sets.length && (n = s.sets[0], i[n] = { x: 1e10, y: 1e10, rowid: i.length, size: s.size, radius: Math.sqrt(s.size / Math.PI) }, o[n] = []) } for (e = e.filter((function (e) { return 2 == e.sets.length })), a = 0; a < e.length; ++a) { var c = e[a], l = c.hasOwnProperty("weight") ? c.weight : 1, h = c.sets[0], f = c.sets[1]; c.size + C >= Math.min(i[h].size, i[f].size) && (l = 0), o[h].push({ set: f, size: c.size, weight: l }), o[f].push({ set: h, size: c.size, weight: l }) } var d = []; for (n in o) if (o.hasOwnProperty(n)) { var p = 0; for (a = 0; a < o[n].length; ++a)p += o[n][a].size * o[n][a].weight; d.push({ set: n, size: p }) } function v(e, t) { return t.size - e.size } d.sort(v); var m = {}; function g(e) { return e.set in m } function y(e, t) { i[t].x = e.x, i[t].y = e.y, m[t] = !0 } for (y({ x: 0, y: 0 }, d[0].set), a = 1; a < d.length; ++a) { var b = d[a].set, x = o[b].filter(g); if (n = i[b], x.sort(v), 0 === x.length) throw "ERROR: missing pairwise overlap information"; for (var w = [], _ = 0; _ < x.length; ++_) { var O = i[x[_].set], k = M(n.radius, O.radius, x[_].size); w.push({ x: O.x + k, y: O.y }), w.push({ x: O.x - k, y: O.y }), w.push({ y: O.y + k, x: O.x }), w.push({ y: O.y - k, x: O.x }); for (var S = _ + 1; S < x.length; ++S)for (var T = i[x[S].set], A = M(n.radius, T.radius, x[S].size), L = u({ x: O.x, y: O.y, radius: k }, { x: T.x, y: T.y, radius: A }), z = 0; z < L.length; ++z)w.push(L[z]) } var E = 1e50, P = w[0]; for (_ = 0; _ < w.length; ++_) { i[b].x = w[_].x, i[b].y = w[_].y; var D = r(i, e); D < E && (E = D, P = w[_]) } y(P, b) } return i } function j(e, t) { var n = 0; function r(t) { return t.map((function (t) { return e[t] })) } for (var o = 0; o < t.length; ++o) { var a, s = t[o]; if (1 != s.sets.length) { if (2 == s.sets.length) { var u = e[s.sets[0]], h = e[s.sets[1]]; a = l(u.radius, h.radius, c(u, h)) } else a = i(r(s.sets)); var f = s.hasOwnProperty("weight") ? s.weight : 1; n += f * (a - s.size) * (a - s.size) } } return n } function z(e, t, n) { var r; if (null === n ? e.sort((function (e, t) { return t.radius - e.radius })) : e.sort(n), e.length > 0) { var i = e[0].x, o = e[0].y; for (r = 0; r < e.length; ++r)e[r].x -= i, e[r].y -= o } if (2 == e.length) { var a = c(e[0], e[1]); a < Math.abs(e[1].radius - e[0].radius) && (e[1].x = e[0].x + e[0].radius - e[1].radius - 1e-10, e[1].y = e[0].y) } if (e.length > 1) { var s, l, u = Math.atan2(e[1].x, e[1].y) - t, h = Math.cos(u), f = Math.sin(u); for (r = 0; r < e.length; ++r)s = e[r].x, l = e[r].y, e[r].x = h * s - f * l, e[r].y = f * s + h * l } if (e.length > 2) { var d = Math.atan2(e[2].x, e[2].y) - t; while (d < 0) d += 2 * Math.PI; while (d > 2 * Math.PI) d -= 2 * Math.PI; if (d > Math.PI) { var p = e[1].y / (1e-10 + e[1].x); for (r = 0; r < e.length; ++r) { var v = (e[r].x + p * e[r].y) / (1 + p * p); e[r].x = 2 * v - e[r].x, e[r].y = 2 * v * p - e[r].y } } } } function E(e) { function t(e) { return e.parent !== e && (e.parent = t(e.parent)), e.parent } function n(e, n) { var r = t(e), i = t(n); r.parent = i } e.map((function (e) { e.parent = e })); for (var r = 0; r < e.length; ++r)for (var i = r + 1; i < e.length; ++i) { var o = e[r].radius + e[i].radius; c(e[r], e[i]) + 1e-10 < o && n(e[i], e[r]) } var a, s = {}; for (r = 0; r < e.length; ++r)a = t(e[r]).parent.setid, a in s || (s[a] = []), s[a].push(e[r]); e.map((function (e) { delete e.parent })); var l = []; for (a in s) s.hasOwnProperty(a) && l.push(s[a]); return l } function P(e) { var t = function (t) { var n = Math.max.apply(null, e.map((function (e) { return e[t] + e.radius }))), r = Math.min.apply(null, e.map((function (e) { return e[t] - e.radius }))); return { max: n, min: r } }; return { xRange: t("x"), yRange: t("y") } } function D(e, t, n) { null === t && (t = Math.PI / 2); var r, i, o = []; for (i in e) if (e.hasOwnProperty(i)) { var a = e[i]; o.push({ x: a.x, y: a.y, radius: a.radius, setid: i }) } var s = E(o); for (r = 0; r < s.length; ++r) { z(s[r], t, n); var c = P(s[r]); s[r].size = (c.xRange.max - c.xRange.min) * (c.yRange.max - c.yRange.min), s[r].bounds = c } s.sort((function (e, t) { return t.size - e.size })), o = s[0]; var l = o.bounds, u = (l.xRange.max - l.xRange.min) / 50; function h(e, t, n) { if (e) { var r, i, a, s = e.bounds; t ? r = l.xRange.max - s.xRange.min + u : (r = l.xRange.max - s.xRange.max, a = (s.xRange.max - s.xRange.min) / 2 - (l.xRange.max - l.xRange.min) / 2, a < 0 && (r += a)), n ? i = l.yRange.max - s.yRange.min + u : (i = l.yRange.max - s.yRange.max, a = (s.yRange.max - s.yRange.min) / 2 - (l.yRange.max - l.yRange.min) / 2, a < 0 && (i += a)); for (var c = 0; c < e.length; ++c)e[c].x += r, e[c].y += i, o.push(e[c]) } } var f = 1; while (f < s.length) h(s[f], !0, !1), h(s[f + 1], !1, !0), h(s[f + 2], !0, !0), f += 3, l = P(o); var d = {}; for (r = 0; r < o.length; ++r)d[o[r].setid] = o[r]; return d } function H(e, t, n, r) { var i = [], o = []; for (var a in e) e.hasOwnProperty(a) && (o.push(a), i.push(e[a])); t -= 2 * r, n -= 2 * r; var s = P(i), c = s.xRange, l = s.yRange; if (c.max == c.min || l.max == l.min) return console.log("not scaling solution: zero size detected"), e; for (var u = t / (c.max - c.min), h = n / (l.max - l.min), f = Math.min(h, u), d = (t - (c.max - c.min) * f) / 2, p = (n - (l.max - l.min) * f) / 2, v = {}, m = 0; m < i.length; ++m) { var g = i[m]; v[o[m]] = { radius: f * g.radius, x: r + d + (g.x - c.min) * f, y: r + p + (g.y - l.min) * f } } return v } function V() { var e = 600, n = 350, r = 15, i = 1e3, o = Math.PI / 2, a = !0, s = !0, c = !0, l = null, u = null, h = {}, f = ["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf"], d = 0, p = function (e) { if (e in h) return h[e]; var t = h[e] = f[d]; return d += 1, d >= f.length && (d = 0), t }, v = _, m = j; function g(h) { var f = h.datum(), d = {}; f.forEach((function (e) { 0 == e.size && 1 == e.sets.length && (d[e.sets[0]] = 1) })), f = f.filter((function (e) { return !e.sets.some((function (e) { return e in d })) })); var g = {}, y = {}; if (f.length > 0) { var b = v(f, { lossFunction: m }); a && (b = D(b, o, u)), g = H(b, e, n, r), y = Y(g, f) } var x = {}; function w(e) { return e.sets in x ? x[e.sets] : 1 == e.sets.length ? "" + e.sets[0] : void 0 } f.forEach((function (e) { e.label && (x[e.sets] = e.label) })), h.selectAll("svg").data([g]).enter().append("svg"); var _ = h.select("svg").attr("width", e).attr("height", n), C = {}, M = !1; _.selectAll(".venn-area path").each((function (e) { var n = t.select(this).attr("d"); 1 == e.sets.length && n && (M = !0, C[e.sets[0]] = W(n)) })); var O = function (t) { return function (r) { var i = t.sets.map((function (t) { var i = C[t], o = g[t]; return i || (i = { x: e / 2, y: n / 2, radius: 1 }), o || (o = { x: e / 2, y: n / 2, radius: 1 }), { x: i.x * (1 - r) + o.x * r, y: i.y * (1 - r) + o.y * r, radius: i.radius * (1 - r) + o.radius * r } })); return q(i) } }, k = _.selectAll(".venn-area").data(f, (function (e) { return e.sets })), S = k.enter().append("g").attr("class", (function (e) { return "venn-area venn-" + (1 == e.sets.length ? "circle" : "intersection") })).attr("data-venn-sets", (function (e) { return e.sets.join("_") })), T = S.append("path"), A = S.append("text").attr("class", "label").text((function (e) { return w(e) })).attr("text-anchor", "middle").attr("dy", ".35em").attr("x", e / 2).attr("y", n / 2); c && (T.style("fill-opacity", "0").filter((function (e) { return 1 == e.sets.length })).style("fill", (function (e) { return p(e.sets) })).style("fill-opacity", ".25"), A.style("fill", (function (e) { return 1 == e.sets.length ? p(e.sets) : "#444" }))); var L = h; M ? (L = h.transition("venn").duration(i), L.selectAll("path").attrTween("d", O)) : L.selectAll("path").attr("d", (function (e) { return q(e.sets.map((function (e) { return g[e] }))) })); var j = L.selectAll("text").filter((function (e) { return e.sets in y })).text((function (e) { return w(e) })).attr("x", (function (e) { return Math.floor(y[e.sets].x) })).attr("y", (function (e) { return Math.floor(y[e.sets].y) })); s && (M ? "on" in j ? j.on("end", I(g, w)) : j.each("end", I(g, w)) : j.each(I(g, w))); var z = k.exit().transition("venn").duration(i).remove(); z.selectAll("path").attrTween("d", O); var E = z.selectAll("text").attr("x", e / 2).attr("y", n / 2); return null !== l && (A.style("font-size", "0px"), j.style("font-size", l), E.style("font-size", "0px")), { circles: g, textCentres: y, nodes: k, enter: S, update: L, exit: z } } return g.wrap = function (e) { return arguments.length ? (s = e, g) : s }, g.width = function (t) { return arguments.length ? (e = t, g) : e }, g.height = function (e) { return arguments.length ? (n = e, g) : n }, g.padding = function (e) { return arguments.length ? (r = e, g) : r }, g.colours = function (e) { return arguments.length ? (p = e, g) : p }, g.fontSize = function (e) { return arguments.length ? (l = e, g) : l }, g.duration = function (e) { return arguments.length ? (i = e, g) : i }, g.layoutFunction = function (e) { return arguments.length ? (v = e, g) : v }, g.normalize = function (e) { return arguments.length ? (a = e, g) : a }, g.styled = function (e) { return arguments.length ? (c = e, g) : c }, g.orientation = function (e) { return arguments.length ? (o = e, g) : o }, g.orientationOrder = function (e) { return arguments.length ? (u = e, g) : u }, g.lossFunction = function (e) { return arguments.length ? (m = e, g) : m }, g } function I(e, n) { return function () { var r, i = t.select(this), o = i.datum(), a = e[o.sets[0]].radius || 50, s = n(o) || "", c = s.split(/\s+/).reverse(), l = 3, u = (s.length + c.length) / l, h = c.pop(), f = [h], d = 0, p = 1.1, v = i.text(null).append("tspan").text(h); while (1) { if (h = c.pop(), !h) break; f.push(h), r = f.join(" "), v.text(r), r.length > u && v.node().getComputedTextLength() > a && (f.pop(), v.text(f.join(" ")), f = [h], v = i.append("tspan").text(h), d++) } var m = .35 - d * p / 2, g = i.attr("x"), y = i.attr("y"); i.selectAll("tspan").attr("x", g).attr("y", y).attr("dy", (function (e, t) { return m + t * p + "em" })) } } function N(e, t, n) { var r, i, o = t[0].radius - c(t[0], e); for (r = 1; r < t.length; ++r)i = t[r].radius - c(t[r], e), i <= o && (o = i); for (r = 0; r < n.length; ++r)i = c(n[r], e) - n[r].radius, i <= o && (o = i); return o } function R(e, t) { var n, r = []; for (n = 0; n < e.length; ++n) { var o = e[n]; r.push({ x: o.x, y: o.y }), r.push({ x: o.x + o.radius / 2, y: o.y }), r.push({ x: o.x - o.radius / 2, y: o.y }), r.push({ x: o.x, y: o.y + o.radius / 2 }), r.push({ x: o.x, y: o.y - o.radius / 2 }) } var a = r[0], s = N(r[0], e, t); for (n = 1; n < r.length; ++n) { var l = N(r[n], e, t); l >= s && (a = r[n], s = l) } var u = b((function (n) { return -1 * N({ x: n[0], y: n[1] }, e, t) }), [a.x, a.y], { maxIterations: 500, minErrorDelta: 1e-10 }).x, f = { x: u[0], y: u[1] }, d = !0; for (n = 0; n < e.length; ++n)if (c(f, e[n]) > e[n].radius) { d = !1; break } for (n = 0; n < t.length; ++n)if (c(f, t[n]) < t[n].radius) { d = !1; break } if (!d) if (1 == e.length) f = { x: e[0].x, y: e[0].y }; else { var p = {}; i(e, p), f = 0 === p.arcs.length ? { x: 0, y: -1e3, disjoint: !0 } : 1 == p.arcs.length ? { x: p.arcs[0].circle.x, y: p.arcs[0].circle.y } : t.length ? R(e, []) : h(p.arcs.map((function (e) { return e.p1 }))) } return f } function F(e) { var t = {}, n = []; for (var r in e) n.push(r), t[r] = []; for (var i = 0; i < n.length; i++)for (var o = e[n[i]], a = i + 1; a < n.length; ++a) { var s = e[n[a]], l = c(o, s); l + s.radius <= o.radius + 1e-10 ? t[n[a]].push(n[i]) : l + o.radius <= s.radius + 1e-10 && t[n[i]].push(n[a]) } return t } function Y(e, t) { for (var n = {}, r = F(e), i = 0; i < t.length; ++i) { for (var o = t[i].sets, a = {}, s = {}, c = 0; c < o.length; ++c) { a[o[c]] = !0; for (var l = r[o[c]], u = 0; u < l.length; ++u)s[l[u]] = !0 } var h = [], f = []; for (var d in e) d in a ? h.push(e[d]) : d in s || f.push(e[d]); var p = R(h, f); n[o] = p, p.disjoint && t[i].size > 0 && console.log("WARNING: area " + o + " not represented on screen") } return n } function $(e, t) { for (var n = F(e.selectAll("svg").datum()), r = {}, i = 0; i < t.sets.length; ++i) { var o = t.sets[i]; for (var a in n) for (var s = n[a], c = 0; c < s.length; ++c)if (s[c] == o) { r[a] = !0; break } } function l(e) { for (var t = 0; t < e.length; ++t)if (!(e[t] in r)) return !1; return !0 } e.selectAll("g").sort((function (e, n) { return e.sets.length != n.sets.length ? e.sets.length - n.sets.length : e == t ? l(n.sets) ? -1 : 1 : n == t ? l(e.sets) ? 1 : -1 : n.size - e.size })) } function B(e, t, n) { var r = []; return r.push("\nM", e, t), r.push("\nm", -n, 0), r.push("\na", n, n, 0, 1, 0, 2 * n, 0), r.push("\na", n, n, 0, 1, 0, 2 * -n, 0), r.join(" ") } function W(e) { var t = e.split(" "); return { x: parseFloat(t[1]), y: parseFloat(t[2]), radius: -parseFloat(t[4]) } } function q(e) { var t = {}; i(e, t); var n = t.arcs; if (0 === n.length) return "M 0 0"; if (1 == n.length) { var r = n[0].circle; return B(r.x, r.y, r.radius) } for (var o = ["\nM", n[0].p2.x, n[0].p2.y], a = 0; a < n.length; ++a) { var s = n[a], c = s.circle.radius, l = s.width > c; o.push("\nA", c, c, 0, l ? 1 : 0, 1, s.p1.x, s.p1.y) } return o.join(" ") } e.intersectionArea = i, e.circleCircleIntersection = u, e.circleOverlap = l, e.circleArea = s, e.distance = c, e.venn = _, e.greedyLayout = L, e.scaleSolution = H, e.normalizeSolution = D, e.bestInitialLayout = T, e.lossFunction = j, e.disjointCluster = E, e.distanceFromIntersectArea = M, e.VennDiagram = V, e.wrapText = I, e.computeTextCentres = Y, e.computeTextCentre = R, e.sortAreas = $, e.circlePath = B, e.circleFromPath = W, e.intersectionAreaPath = q, Object.defineProperty(e, "__esModule", { value: !0 }) })) }, function (e, t, n) { "use strict"; var r = n(417), i = n(441); t["a"] = function (e) { return Object(i["a"])(Object(r["a"])(e).call(document.documentElement)) } }, function (e, t, n) { "use strict"; var r = n(99), i = n(430); t["a"] = function (e) { "function" !== typeof e && (e = Object(i["a"])(e)); for (var t = this._groups, n = t.length, o = new Array(n), a = 0; a < n; ++a)for (var s, c, l = t[a], u = l.length, h = o[a] = new Array(u), f = 0; f < u; ++f)(s = l[f]) && (c = e.call(s, s.__data__, f, l)) && ("__data__" in s && (c.__data__ = s.__data__), h[f] = c); return new r["a"](o, this._parents) } }, function (e, t, n) { "use strict"; var r = n(99), i = n(442); t["a"] = function (e) { "function" !== typeof e && (e = Object(i["a"])(e)); for (var t = this._groups, n = t.length, o = [], a = [], s = 0; s < n; ++s)for (var c, l = t[s], u = l.length, h = 0; h < u; ++h)(c = l[h]) && (o.push(e.call(c, c.__data__, h, l)), a.push(c)); return new r["a"](o, a) } }, function (e, t, n) { "use strict"; var r = n(99), i = n(443); t["a"] = function (e) { "function" !== typeof e && (e = Object(i["a"])(e)); for (var t = this._groups, n = t.length, o = new Array(n), a = 0; a < n; ++a)for (var s, c = t[a], l = c.length, u = o[a] = [], h = 0; h < l; ++h)(s = c[h]) && e.call(s, s.__data__, h, c) && u.push(s); return new r["a"](o, this._parents) } }, function (e, t, n) { "use strict"; var r = n(99), i = n(444), o = n(475), a = "$"; function s(e, t, n, r, o, a) { for (var s, c = 0, l = t.length, u = a.length; c < u; ++c)(s = t[c]) ? (s.__data__ = a[c], r[c] = s) : n[c] = new i["a"](e, a[c]); for (; c < l; ++c)(s = t[c]) && (o[c] = s) } function c(e, t, n, r, o, s, c) { var l, u, h, f = {}, d = t.length, p = s.length, v = new Array(d); for (l = 0; l < d; ++l)(u = t[l]) && (v[l] = h = a + c.call(u, u.__data__, l, t), h in f ? o[l] = u : f[h] = u); for (l = 0; l < p; ++l)h = a + c.call(e, s[l], l, s), (u = f[h]) ? (r[l] = u, u.__data__ = s[l], f[h] = null) : n[l] = new i["a"](e, s[l]); for (l = 0; l < d; ++l)(u = t[l]) && f[v[l]] === u && (o[l] = u) } t["a"] = function (e, t) { if (!e) return g = new Array(this.size()), d = -1, this.each((function (e) { g[++d] = e })), g; var n = t ? c : s, i = this._parents, a = this._groups; "function" !== typeof e && (e = Object(o["a"])(e)); for (var l = a.length, u = new Array(l), h = new Array(l), f = new Array(l), d = 0; d < l; ++d) { var p = i[d], v = a[d], m = v.length, g = e.call(p, p && p.__data__, d, i), y = g.length, b = h[d] = new Array(y), x = u[d] = new Array(y), w = f[d] = new Array(m); n(p, v, b, x, w, g, t); for (var _, C, M = 0, O = 0; M < y; ++M)if (_ = b[M]) { M >= O && (O = M + 1); while (!(C = x[O]) && ++O < y); _._next = C || null } } return u = new r["a"](u, i), u._enter = h, u._exit = f, u } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return function () { return e } } }, function (e, t, n) { "use strict"; var r = n(445), i = n(99); t["a"] = function () { return new i["a"](this._exit || this._groups.map(r["a"]), this._parents) } }, function (e, t, n) { "use strict"; t["a"] = function (e, t, n) { var r = this.enter(), i = this, o = this.exit(); return r = "function" === typeof e ? e(r) : r.append(e + ""), null != t && (i = t(i)), null == n ? o.remove() : n(o), r && i ? r.merge(i).order() : i } }, function (e, t, n) { "use strict"; var r = n(99); t["a"] = function (e) { for (var t = this._groups, n = e._groups, i = t.length, o = n.length, a = Math.min(i, o), s = new Array(i), c = 0; c < a; ++c)for (var l, u = t[c], h = n[c], f = u.length, d = s[c] = new Array(f), p = 0; p < f; ++p)(l = u[p] || h[p]) && (d[p] = l); for (; c < i; ++c)s[c] = t[c]; return new r["a"](s, this._parents) } }, function (e, t, n) { "use strict"; t["a"] = function () { for (var e = this._groups, t = -1, n = e.length; ++t < n;)for (var r, i = e[t], o = i.length - 1, a = i[o]; --o >= 0;)(r = i[o]) && (a && 4 ^ r.compareDocumentPosition(a) && a.parentNode.insertBefore(r, a), a = r); return this } }, function (e, t, n) { "use strict"; var r = n(99); function i(e, t) { return e < t ? -1 : e > t ? 1 : e >= t ? 0 : NaN } t["a"] = function (e) { function t(t, n) { return t && n ? e(t.__data__, n.__data__) : !t - !n } e || (e = i); for (var n = this._groups, o = n.length, a = new Array(o), s = 0; s < o; ++s) { for (var c, l = n[s], u = l.length, h = a[s] = new Array(u), f = 0; f < u; ++f)(c = l[f]) && (h[f] = c); h.sort(t) } return new r["a"](a, this._parents).order() } }, function (e, t, n) { "use strict"; t["a"] = function () { var e = arguments[0]; return arguments[0] = this, e.apply(null, arguments), this } }, function (e, t, n) { "use strict"; t["a"] = function () { var e = new Array(this.size()), t = -1; return this.each((function () { e[++t] = this })), e } }, function (e, t, n) { "use strict"; t["a"] = function () { for (var e = this._groups, t = 0, n = e.length; t < n; ++t)for (var r = e[t], i = 0, o = r.length; i < o; ++i) { var a = r[i]; if (a) return a } return null } }, function (e, t, n) { "use strict"; t["a"] = function () { var e = 0; return this.each((function () { ++e })), e } }, function (e, t, n) { "use strict"; t["a"] = function () { return !this.node() } }, function (e, t, n) { "use strict"; t["a"] = function (e) { for (var t = this._groups, n = 0, r = t.length; n < r; ++n)for (var i, o = t[n], a = 0, s = o.length; a < s; ++a)(i = o[a]) && e.call(i, i.__data__, a, o); return this } }, function (e, t, n) { "use strict"; var r = n(428); function i(e) { return function () { this.removeAttribute(e) } } function o(e) { return function () { this.removeAttributeNS(e.space, e.local) } } function a(e, t) { return function () { this.setAttribute(e, t) } } function s(e, t) { return function () { this.setAttributeNS(e.space, e.local, t) } } function c(e, t) { return function () { var n = t.apply(this, arguments); null == n ? this.removeAttribute(e) : this.setAttribute(e, n) } } function l(e, t) { return function () { var n = t.apply(this, arguments); null == n ? this.removeAttributeNS(e.space, e.local) : this.setAttributeNS(e.space, e.local, n) } } t["a"] = function (e, t) { var n = Object(r["a"])(e); if (arguments.length < 2) { var u = this.node(); return n.local ? u.getAttributeNS(n.space, n.local) : u.getAttribute(n) } return this.each((null == t ? n.local ? o : i : "function" === typeof t ? n.local ? l : c : n.local ? s : a)(n, t)) } }, function (e, t, n) { "use strict"; function r(e) { return function () { delete this[e] } } function i(e, t) { return function () { this[e] = t } } function o(e, t) { return function () { var n = t.apply(this, arguments); null == n ? delete this[e] : this[e] = n } } t["a"] = function (e, t) { return arguments.length > 1 ? this.each((null == t ? r : "function" === typeof t ? o : i)(e, t)) : this.node()[e] } }, function (e, t, n) { "use strict"; function r(e) { return e.trim().split(/^|\s+/) } function i(e) { return e.classList || new o(e) } function o(e) { this._node = e, this._names = r(e.getAttribute("class") || "") } function a(e, t) { var n = i(e), r = -1, o = t.length; while (++r < o) n.add(t[r]) } function s(e, t) { var n = i(e), r = -1, o = t.length; while (++r < o) n.remove(t[r]) } function c(e) { return function () { a(this, e) } } function l(e) { return function () { s(this, e) } } function u(e, t) { return function () { (t.apply(this, arguments) ? a : s)(this, e) } } o.prototype = { add: function (e) { var t = this._names.indexOf(e); t < 0 && (this._names.push(e), this._node.setAttribute("class", this._names.join(" "))) }, remove: function (e) { var t = this._names.indexOf(e); t >= 0 && (this._names.splice(t, 1), this._node.setAttribute("class", this._names.join(" "))) }, contains: function (e) { return this._names.indexOf(e) >= 0 } }, t["a"] = function (e, t) { var n = r(e + ""); if (arguments.length < 2) { var o = i(this.node()), a = -1, s = n.length; while (++a < s) if (!o.contains(n[a])) return !1; return !0 } return this.each(("function" === typeof t ? u : t ? c : l)(n, t)) } }, function (e, t, n) { "use strict"; function r() { this.textContent = "" } function i(e) { return function () { this.textContent = e } } function o(e) { return function () { var t = e.apply(this, arguments); this.textContent = null == t ? "" : t } } t["a"] = function (e) { return arguments.length ? this.each(null == e ? r : ("function" === typeof e ? o : i)(e)) : this.node().textContent } }, function (e, t, n) { "use strict"; function r() { this.innerHTML = "" } function i(e) { return function () { this.innerHTML = e } } function o(e) { return function () { var t = e.apply(this, arguments); this.innerHTML = null == t ? "" : t } } t["a"] = function (e) { return arguments.length ? this.each(null == e ? r : ("function" === typeof e ? o : i)(e)) : this.node().innerHTML } }, function (e, t, n) { "use strict"; function r() { this.nextSibling && this.parentNode.appendChild(this) } t["a"] = function () { return this.each(r) } }, function (e, t, n) { "use strict"; function r() { this.previousSibling && this.parentNode.insertBefore(this, this.parentNode.firstChild) } t["a"] = function () { return this.each(r) } }, function (e, t, n) { "use strict"; var r = n(417); t["a"] = function (e) { var t = "function" === typeof e ? e : Object(r["a"])(e); return this.select((function () { return this.appendChild(t.apply(this, arguments)) })) } }, function (e, t, n) { "use strict"; var r = n(417), i = n(430); function o() { return null } t["a"] = function (e, t) { var n = "function" === typeof e ? e : Object(r["a"])(e), a = null == t ? o : "function" === typeof t ? t : Object(i["a"])(t); return this.select((function () { return this.insertBefore(n.apply(this, arguments), a.apply(this, arguments) || null) })) } }, function (e, t, n) { "use strict"; function r() { var e = this.parentNode; e && e.removeChild(this) } t["a"] = function () { return this.each(r) } }, function (e, t, n) { "use strict"; function r() { var e = this.cloneNode(!1), t = this.parentNode; return t ? t.insertBefore(e, this.nextSibling) : e } function i() { var e = this.cloneNode(!0), t = this.parentNode; return t ? t.insertBefore(e, this.nextSibling) : e } t["a"] = function (e) { return this.select(e ? i : r) } }, function (e, t, n) { "use strict"; t["a"] = function (e) { return arguments.length ? this.property("__data__", e) : this.node().__data__ } }, function (e, t, n) { "use strict"; var r = n(431); function i(e, t, n) { var i = Object(r["a"])(e), o = i.CustomEvent; "function" === typeof o ? o = new o(t, n) : (o = i.document.createEvent("Event"), n ? (o.initEvent(t, n.bubbles, n.cancelable), o.detail = n.detail) : o.initEvent(t, !1, !1)), e.dispatchEvent(o) } function o(e, t) { return function () { return i(this, e, t) } } function a(e, t) { return function () { return i(this, e, t.apply(this, arguments)) } } t["a"] = function (e, t) { return this.each(("function" === typeof t ? a : o)(e, t)) } }, function (e, t, n) { "use strict"; t["a"] = i; var r = 0; function i() { return new o } function o() { this._ = "@" + (++r).toString(36) } o.prototype = i.prototype = { constructor: o, get: function (e) { var t = this._; while (!(t in e)) if (!(e = e.parentNode)) return; return e[t] }, set: function (e, t) { return e[this._] = t }, remove: function (e) { return this._ in e && delete e[this._] }, toString: function () { return this._ } } }, function (e, t, n) { "use strict"; var r = n(433), i = n(418); t["a"] = function (e) { var t = Object(r["a"])(); return t.changedTouches && (t = t.changedTouches[0]), Object(i["a"])(e, t) } }, function (e, t, n) { "use strict"; var r = n(99); t["a"] = function (e) { return "string" === typeof e ? new r["a"]([document.querySelectorAll(e)], [document.documentElement]) : new r["a"]([null == e ? [] : e], r["c"]) } }, function (e, t, n) { "use strict"; var r = n(433), i = n(418); t["a"] = function (e, t, n) { arguments.length < 3 && (n = t, t = Object(r["a"])().changedTouches); for (var o, a = 0, s = t ? t.length : 0; a < s; ++a)if ((o = t[a]).identifier === n) return Object(i["a"])(e, o); return null } }, function (e, t, n) { "use strict"; var r = n(433), i = n(418); t["a"] = function (e, t) { null == t && (t = Object(r["a"])().touches); for (var n = 0, o = t ? t.length : 0, a = new Array(o); n < o; ++n)a[n] = Object(i["a"])(e, t[n]); return a } }, function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); n(506); var r = n(203); n.d(t, "transition", (function () { return r["b"] })); var i = n(542); n.d(t, "active", (function () { return i["a"] })); var o = n(447); n.d(t, "interrupt", (function () { return o["a"] })) }, function (e, t, n) { "use strict"; var r = n(102), i = n(507), o = n(510); r["selection"].prototype.interrupt = i["a"], r["selection"].prototype.transition = o["a"] }, function (e, t, n) { "use strict"; var r = n(447); t["a"] = function (e) { return this.each((function () { Object(r["a"])(this, e) })) } }, function (e, t, n) { "use strict"; var r = n(509); n.d(t, "a", (function () { return r["a"] })) }, function (e, t, n) { "use strict"; var r = { value: function () { } }; function i() { for (var e, t = 0, n = arguments.length, r = {}; t < n; ++t) { if (!(e = arguments[t] + "") || e in r || /[\s.]/.test(e)) throw new Error("illegal type: " + e); r[e] = [] } return new o(r) } function o(e) { this._ = e } function a(e, t) { return e.trim().split(/^|\s+/).map((function (e) { var n = "", r = e.indexOf("."); if (r >= 0 && (n = e.slice(r + 1), e = e.slice(0, r)), e && !t.hasOwnProperty(e)) throw new Error("unknown type: " + e); return { type: e, name: n } })) } function s(e, t) { for (var n, r = 0, i = e.length; r < i; ++r)if ((n = e[r]).name === t) return n.value } function c(e, t, n) { for (var i = 0, o = e.length; i < o; ++i)if (e[i].name === t) { e[i] = r, e = e.slice(0, i).concat(e.slice(i + 1)); break } return null != n && e.push({ name: t, value: n }), e } o.prototype = i.prototype = { constructor: o, on: function (e, t) { var n, r = this._, i = a(e + "", r), o = -1, l = i.length; if (!(arguments.length < 2)) { if (null != t && "function" !== typeof t) throw new Error("invalid callback: " + t); while (++o < l) if (n = (e = i[o]).type) r[n] = c(r[n], e.name, t); else if (null == t) for (n in r) r[n] = c(r[n], e.name, null); return this } while (++o < l) if ((n = (e = i[o]).type) && (n = s(r[n], e.name))) return n }, copy: function () { var e = {}, t = this._; for (var n in t) e[n] = t[n].slice(); return new o(e) }, call: function (e, t) { if ((n = arguments.length - 2) > 0) for (var n, r, i = new Array(n), o = 0; o < n; ++o)i[o] = arguments[o + 2]; if (!this._.hasOwnProperty(e)) throw new Error("unknown type: " + e); for (r = this._[e], o = 0, n = r.length; o < n; ++o)r[o].value.apply(t, i) }, apply: function (e, t, n) { if (!this._.hasOwnProperty(e)) throw new Error("unknown type: " + e); for (var r = this._[e], i = 0, o = r.length; i < o; ++i)r[i].value.apply(t, n) } }, t["a"] = i }, function (e, t, n) { "use strict"; var r = n(203), i = n(58), o = n(103), a = n(101), s = { time: null, delay: 0, duration: 250, ease: o["easeCubicInOut"] }; function c(e, t) { var n; while (!(n = e.__transition) || !(n = n[t])) if (!(e = e.parentNode)) return s.time = Object(a["now"])(), s; return n } t["a"] = function (e) { var t, n; e instanceof r["a"] ? (t = e._id, e = e._name) : (t = Object(r["c"])(), (n = s).time = Object(a["now"])(), e = null == e ? null : e + ""); for (var o = this._groups, l = o.length, u = 0; u < l; ++u)for (var h, f = o[u], d = f.length, p = 0; p < d; ++p)(h = f[p]) && Object(i["e"])(h, e, t, p, f, n || c(h, t)); return new r["a"](o, this._parents, e, t) } }, function (e, t, n) { "use strict"; var r = n(434), i = n(102), o = n(420), a = n(455); function s(e) { return function () { this.removeAttribute(e) } } function c(e) { return function () { this.removeAttributeNS(e.space, e.local) } } function l(e, t, n) { var r, i, o = n + ""; return function () { var a = this.getAttribute(e); return a === o ? null : a === r ? i : i = t(r = a, n) } } function u(e, t, n) { var r, i, o = n + ""; return function () { var a = this.getAttributeNS(e.space, e.local); return a === o ? null : a === r ? i : i = t(r = a, n) } } function h(e, t, n) { var r, i, o; return function () { var a, s, c = n(this); if (null != c) return a = this.getAttribute(e), s = c + "", a === s ? null : a === r && s === i ? o : (i = s, o = t(r = a, c)); this.removeAttribute(e) } } function f(e, t, n) { var r, i, o; return function () { var a, s, c = n(this); if (null != c) return a = this.getAttributeNS(e.space, e.local), s = c + "", a === s ? null : a === r && s === i ? o : (i = s, o = t(r = a, c)); this.removeAttributeNS(e.space, e.local) } } t["a"] = function (e, t) { var n = Object(i["namespace"])(e), d = "transform" === n ? r["e"] : a["a"]; return this.attrTween(e, "function" === typeof t ? (n.local ? f : h)(n, d, Object(o["b"])(this, "attr." + e, t)) : null == t ? (n.local ? c : s)(n) : (n.local ? u : l)(n, d, t)) } }, function (e, t, n) { "use strict" }, function (e, t, n) { "use strict"; n(206) }, function (e, t, n) { "use strict" }, function (e, t, n) { "use strict"; n.d(t, "a", (function () { return a })), n.d(t, "b", (function () { return s })); var r = n(419), i = n(516); function o(e, t, n, i) { function o(e) { return e.length ? e.pop() + " " : "" } function a(e, i, o, a, s, c) { if (e !== o || i !== a) { var l = s.push("translate(", null, t, null, n); c.push({ i: l - 4, x: Object(r["a"])(e, o) }, { i: l - 2, x: Object(r["a"])(i, a) }) } else (o || a) && s.push("translate(" + o + t + a + n) } function s(e, t, n, a) { e !== t ? (e - t > 180 ? t += 360 : t - e > 180 && (e += 360), a.push({ i: n.push(o(n) + "rotate(", null, i) - 2, x: Object(r["a"])(e, t) })) : t && n.push(o(n) + "rotate(" + t + i) } function c(e, t, n, a) { e !== t ? a.push({ i: n.push(o(n) + "skewX(", null, i) - 2, x: Object(r["a"])(e, t) }) : t && n.push(o(n) + "skewX(" + t + i) } function l(e, t, n, i, a, s) { if (e !== n || t !== i) { var c = a.push(o(a) + "scale(", null, ",", null, ")"); s.push({ i: c - 4, x: Object(r["a"])(e, n) }, { i: c - 2, x: Object(r["a"])(t, i) }) } else 1 === n && 1 === i || a.push(o(a) + "scale(" + n + "," + i + ")") } return function (t, n) { var r = [], i = []; return t = e(t), n = e(n), a(t.translateX, t.translateY, n.translateX, n.translateY, r, i), s(t.rotate, n.rotate, r, i), c(t.skewX, n.skewX, r, i), l(t.scaleX, t.scaleY, n.scaleX, n.scaleY, r, i), t = n = null, function (e) { var t, n = -1, o = i.length; while (++n < o) r[(t = i[n]).i] = t.x(e); return r.join("") } } } var a = o(i["a"], "px, ", "px)", "deg)"), s = o(i["b"], ", ", ")", ")") }, function (e, t, n) { "use strict"; t["a"] = c, t["b"] = l; var r, i, o, a, s = n(517); function c(e) { return "none" === e ? s["b"] : (r || (r = document.createElement("DIV"), i = document.documentElement, o = document.defaultView), r.style.transform = e, e = o.getComputedStyle(i.appendChild(r), null).getPropertyValue("transform"), i.removeChild(r), e = e.slice(7, -1).split(","), Object(s["a"])(+e[0], +e[1], +e[2], +e[3], +e[4], +e[5])) } function l(e) { return null == e ? s["b"] : (a || (a = document.createElementNS("http://www.w3.org/2000/svg", "g")), a.setAttribute("transform", e), (e = a.transform.baseVal.consolidate()) ? (e = e.matrix, Object(s["a"])(e.a, e.b, e.c, e.d, e.e, e.f)) : s["b"]) } }, function (e, t, n) { "use strict"; n.d(t, "b", (function () { return i })); var r = 180 / Math.PI, i = { translateX: 0, translateY: 0, rotate: 0, skewX: 0, scaleX: 1, scaleY: 1 }; t["a"] = function (e, t, n, i, o, a) { var s, c, l; return (s = Math.sqrt(e * e + t * t)) && (e /= s, t /= s), (l = e * n + t * i) && (n -= e * l, i -= t * l), (c = Math.sqrt(n * n + i * i)) && (n /= c, i /= c, l /= c), e * i < t * n && (e = -e, t = -t, l = -l, s = -s), { translateX: o, translateY: a, rotate: Math.atan2(t, e) * r, skewX: Math.atan(l) * r, scaleX: s, scaleY: c } } }, function (e, t, n) { "use strict"; Math.SQRT2 }, function (e, t, n) { "use strict"; var r = n(19), i = n(206); function o(e) { return function (t, n) { var o = e((t = Object(r["d"])(t)).h, (n = Object(r["d"])(n)).h), a = Object(i["a"])(t.s, n.s), s = Object(i["a"])(t.l, n.l), c = Object(i["a"])(t.opacity, n.opacity); return function (e) { return t.h = o(e), t.s = a(e), t.l = s(e), t.opacity = c(e), t + "" } } } o(i["c"]), o(i["a"]) }, function (e, t, n) { "use strict"; n(19), n(206) }, function (e, t, n) { "use strict"; var r = n(19), i = n(206); function o(e) { return function (t, n) { var o = e((t = Object(r["c"])(t)).h, (n = Object(r["c"])(n)).h), a = Object(i["a"])(t.c, n.c), s = Object(i["a"])(t.l, n.l), c = Object(i["a"])(t.opacity, n.opacity); return function (e) { return t.h = o(e), t.c = a(e), t.l = s(e), t.opacity = c(e), t + "" } } } o(i["c"]), o(i["a"]) }, function (e, t, n) { "use strict"; var r = n(19), i = n(206); function o(e) { return function t(n) { function o(t, o) { var a = e((t = Object(r["b"])(t)).h, (o = Object(r["b"])(o)).h), s = Object(i["a"])(t.s, o.s), c = Object(i["a"])(t.l, o.l), l = Object(i["a"])(t.opacity, o.opacity); return function (e) { return t.h = a(e), t.s = s(e), t.l = c(Math.pow(e, n)), t.opacity = l(e), t + "" } } return n = +n, o.gamma = t, o }(1) } o(i["c"]), o(i["a"]) }, function (e, t, n) { "use strict" }, function (e, t, n) { "use strict" }, function (e, t, n) { "use strict"; var r = n(102); function i(e, t) { return function (n) { this.setAttribute(e, t.call(this, n)) } } function o(e, t) { return function (n) { this.setAttributeNS(e.space, e.local, t.call(this, n)) } } function a(e, t) { var n, r; function i() { var i = t.apply(this, arguments); return i !== r && (n = (r = i) && o(e, i)), n } return i._value = t, i } function s(e, t) { var n, r; function o() { var o = t.apply(this, arguments); return o !== r && (n = (r = o) && i(e, o)), n } return o._value = t, o } t["a"] = function (e, t) { var n = "attr." + e; if (arguments.length < 2) return (n = this.tween(n)) && n._value; if (null == t) return this.tween(n, null); if ("function" !== typeof t) throw new Error; var i = Object(r["namespace"])(e); return this.tween(n, (i.local ? a : s)(i, t)) } }, function (e, t, n) { "use strict"; var r = n(58); function i(e, t) { return function () { Object(r["g"])(this, e).delay = +t.apply(this, arguments) } } function o(e, t) { return t = +t, function () { Object(r["g"])(this, e).delay = t } } t["a"] = function (e) { var t = this._id; return arguments.length ? this.each(("function" === typeof e ? i : o)(t, e)) : Object(r["f"])(this.node(), t).delay } }, function (e, t, n) { "use strict"; var r = n(58); function i(e, t) { return function () { Object(r["h"])(this, e).duration = +t.apply(this, arguments) } } function o(e, t) { return t = +t, function () { Object(r["h"])(this, e).duration = t } } t["a"] = function (e) { var t = this._id; return arguments.length ? this.each(("function" === typeof e ? i : o)(t, e)) : Object(r["f"])(this.node(), t).duration } }, function (e, t, n) { "use strict"; var r = n(58); function i(e, t) { if ("function" !== typeof t) throw new Error; return function () { Object(r["h"])(this, e).ease = t } } t["a"] = function (e) { var t = this._id; return arguments.length ? this.each(i(t, e)) : Object(r["f"])(this.node(), t).ease } }, function (e, t, n) { "use strict"; var r = n(102), i = n(203); t["a"] = function (e) { "function" !== typeof e && (e = Object(r["matcher"])(e)); for (var t = this._groups, n = t.length, o = new Array(n), a = 0; a < n; ++a)for (var s, c = t[a], l = c.length, u = o[a] = [], h = 0; h < l; ++h)(s = c[h]) && e.call(s, s.__data__, h, c) && u.push(s); return new i["a"](o, this._parents, this._name, this._id) } }, function (e, t, n) { "use strict"; var r = n(203); t["a"] = function (e) { if (e._id !== this._id) throw new Error; for (var t = this._groups, n = e._groups, i = t.length, o = n.length, a = Math.min(i, o), s = new Array(i), c = 0; c < a; ++c)for (var l, u = t[c], h = n[c], f = u.length, d = s[c] = new Array(f), p = 0; p < f; ++p)(l = u[p] || h[p]) && (d[p] = l); for (; c < i; ++c)s[c] = t[c]; return new r["a"](s, this._parents, this._name, this._id) } }, function (e, t, n) { "use strict"; var r = n(58); function i(e) { return (e + "").trim().split(/^|\s+/).every((function (e) { var t = e.indexOf("."); return t >= 0 && (e = e.slice(0, t)), !e || "start" === e })) } function o(e, t, n) { var o, a, s = i(t) ? r["g"] : r["h"]; return function () { var r = s(this, e), i = r.on; i !== o && (a = (o = i).copy()).on(t, n), r.on = a } } t["a"] = function (e, t) { var n = this._id; return arguments.length < 2 ? Object(r["f"])(this.node(), n).on.on(e) : this.each(o(n, e, t)) } }, function (e, t, n) { "use strict"; function r(e) { return function () { var t = this.parentNode; for (var n in this.__transition) if (+n !== e) return; t && t.removeChild(this) } } t["a"] = function () { return this.on("end.remove", r(this._id)) } }, function (e, t, n) { "use strict"; var r = n(102), i = n(203), o = n(58); t["a"] = function (e) { var t = this._name, n = this._id; "function" !== typeof e && (e = Object(r["selector"])(e)); for (var a = this._groups, s = a.length, c = new Array(s), l = 0; l < s; ++l)for (var u, h, f = a[l], d = f.length, p = c[l] = new Array(d), v = 0; v < d; ++v)(u = f[v]) && (h = e.call(u, u.__data__, v, f)) && ("__data__" in u && (h.__data__ = u.__data__), p[v] = h, Object(o["e"])(p[v], t, n, v, p, Object(o["f"])(u, n))); return new i["a"](c, this._parents, t, n) } }, function (e, t, n) { "use strict"; var r = n(102), i = n(203), o = n(58); t["a"] = function (e) { var t = this._name, n = this._id; "function" !== typeof e && (e = Object(r["selectorAll"])(e)); for (var a = this._groups, s = a.length, c = [], l = [], u = 0; u < s; ++u)for (var h, f = a[u], d = f.length, p = 0; p < d; ++p)if (h = f[p]) { for (var v, m = e.call(h, h.__data__, p, f), g = Object(o["f"])(h, n), y = 0, b = m.length; y < b; ++y)(v = m[y]) && Object(o["e"])(v, t, n, y, m, g); c.push(m), l.push(h) } return new i["a"](c, l, t, n) } }, function (e, t, n) { "use strict"; var r = n(102), i = r["selection"].prototype.constructor; t["a"] = function () { return new i(this._groups, this._parents) } }, function (e, t, n) { "use strict"; var r = n(434), i = n(102), o = n(58), a = n(420), s = n(455); function c(e, t) { var n, r, o; return function () { var a = Object(i["style"])(this, e), s = (this.style.removeProperty(e), Object(i["style"])(this, e)); return a === s ? null : a === n && s === r ? o : o = t(n = a, r = s) } } function l(e) { return function () { this.style.removeProperty(e) } } function u(e, t, n) { var r, o, a = n + ""; return function () { var s = Object(i["style"])(this, e); return s === a ? null : s === r ? o : o = t(r = s, n) } } function h(e, t, n) { var r, o, a; return function () { var s = Object(i["style"])(this, e), c = n(this), l = c + ""; return null == c && (this.style.removeProperty(e), l = c = Object(i["style"])(this, e)), s === l ? null : s === r && l === o ? a : (o = l, a = t(r = s, c)) } } function f(e, t) { var n, r, i, a, s = "style." + t, c = "end." + s; return function () { var u = Object(o["h"])(this, e), h = u.on, f = null == u.value[s] ? a || (a = l(t)) : void 0; h === n && i === f || (r = (n = h).copy()).on(c, i = f), u.on = r } } t["a"] = function (e, t, n) { var i = "transform" === (e += "") ? r["d"] : s["a"]; return null == t ? this.styleTween(e, c(e, i)).on("end.style." + e, l(e)) : "function" === typeof t ? this.styleTween(e, h(e, i, Object(a["b"])(this, "style." + e, t))).each(f(this._id, e)) : this.styleTween(e, u(e, i, t), n).on("end.style." + e, null) } }, function (e, t, n) { "use strict"; function r(e, t, n) { return function (r) { this.style.setProperty(e, t.call(this, r), n) } } function i(e, t, n) { var i, o; function a() { var a = t.apply(this, arguments); return a !== o && (i = (o = a) && r(e, a, n)), i } return a._value = t, a } t["a"] = function (e, t, n) { var r = "style." + (e += ""); if (arguments.length < 2) return (r = this.tween(r)) && r._value; if (null == t) return this.tween(r, null); if ("function" !== typeof t) throw new Error; return this.tween(r, i(e, t, null == n ? "" : n)) } }, function (e, t, n) { "use strict"; var r = n(420); function i(e) { return function () { this.textContent = e } } function o(e) { return function () { var t = e(this); this.textContent = null == t ? "" : t } } t["a"] = function (e) { return this.tween("text", "function" === typeof e ? o(Object(r["b"])(this, "text", e)) : i(null == e ? "" : e + "")) } }, function (e, t, n) { "use strict"; function r(e) { return function (t) { this.textContent = e.call(this, t) } } function i(e) { var t, n; function i() { var i = e.apply(this, arguments); return i !== n && (t = (n = i) && r(i)), t } return i._value = e, i } t["a"] = function (e) { var t = "text"; if (arguments.length < 1) return (t = this.tween(t)) && t._value; if (null == e) return this.tween(t, null); if ("function" !== typeof e) throw new Error; return this.tween(t, i(e)) } }, function (e, t, n) { "use strict"; var r = n(203), i = n(58); t["a"] = function () { for (var e = this._name, t = this._id, n = Object(r["c"])(), o = this._groups, a = o.length, s = 0; s < a; ++s)for (var c, l = o[s], u = l.length, h = 0; h < u; ++h)if (c = l[h]) { var f = Object(i["f"])(c, t); Object(i["e"])(c, e, n, h, l, { time: f.time + f.delay + f.duration, delay: 0, duration: f.duration, ease: f.ease }) } return new r["a"](o, this._parents, e, n) } }, function (e, t, n) { "use strict"; var r = n(58); t["a"] = function () { var e, t, n = this, i = n._id, o = n.size(); return new Promise((function (a, s) { var c = { value: s }, l = { value: function () { 0 === --o && a() } }; n.each((function () { var n = Object(r["h"])(this, i), o = n.on; o !== e && (t = (e = o).copy(), t._.cancel.push(c), t._.interrupt.push(c), t._.end.push(l)), n.on = t })) })) } }, function (e, t, n) { "use strict"; var r = n(203), i = n(58), o = [null]; t["a"] = function (e, t) { var n, a, s = e.__transition; if (s) for (a in t = null == t ? null : t + "", s) if ((n = s[a]).state > i["c"] && n.name === t) return new r["a"]([[e]], o, t, +a); return null } }, function (e, t, n) { var r = n(0), i = n(21), o = n(57), a = n(8), s = r.PathUtil; function c(e) { var t = a.shape.venn, n = r.mix({}, t, e.style); return o.addFillAttrs(n, e), n } function l(e) { var t = a.shape.hollowVenn, n = r.mix({}, t, e.style); return o.addStrokeAttrs(n, e), n } var u = i.registerFactory("venn", { defaultShapeType: "venn", getActiveCfg: function (e, t) { var n = t.lineWidth || 1; if ("hollow" === e) return { lineWidth: n + 1 }; var r = t.fillOpacity || t.opacity || 1; return { fillOpacity: r - .08 } }, getSelectedCfg: function (e, t) { return t && t.style ? t.style : this.getActiveCfg(e, t) } }); i.registerShape("venn", "venn", { draw: function (e, t) { var n = e.origin._origin, i = n.path, o = c(e), a = s.parsePathString(i), l = t.addShape("path", { attrs: r.mix(o, { path: a }) }); return l }, getMarkerCfg: function (e) { return r.mix({ symbol: "circle", radius: 4 }, c(e)) } }), i.registerShape("venn", "hollow", { draw: function (e, t) { var n = e.origin._origin, i = n.path, o = l(e), a = s.parsePathString(i), c = t.addShape("path", { attrs: r.mix(o, { path: a }) }); return c }, getMarkerCfg: function (e) { return r.mix({ symbol: "circle", radius: 4 }, c(e)) } }), e.exports = u }, function (e, t, n) { function r(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function i(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var o = n(23), a = n(0), s = n(414); n(545); var c = function (e) { i(n, e); var t = n.prototype; function n(t) { var n; return n = e.call(this, t) || this, a.assign(r(n), s), n } return t.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "violin", t.shapeType = "violin", t.generatePoints = !0, t }, t.createShapePointsCfg = function (t) { var n = this, r = e.prototype.createShapePointsCfg.call(this, t); r.size = n.getNormalizedSize(t); var i = n.get("_sizeField"); return r._size = t._origin[i], r }, t.clearInner = function () { e.prototype.clearInner.call(this), this.set("defaultSize", null) }, t._initAttrs = function () { var t = this, n = t.get("attrOptions"), r = n.size ? n.size.field : t.get("_sizeField") ? t.get("_sizeField") : "size"; t.set("_sizeField", r), delete n.size, e.prototype._initAttrs.call(this) }, n }(o), l = function (e) { function t() { return e.apply(this, arguments) || this } i(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.hasDefaultAdjust = !0, t.adjusts = [{ type: "dodge" }], t }, t }(c); c.Dodge = l, o.Violin = c, o.ViolinDodge = l, e.exports = c }, function (e, t, n) { var r = n(0), i = n(21), o = n(57), a = n(8), s = n(25); function c(e) { var t = a.shape.venn, n = r.mix({}, t, e.style); return o.addFillAttrs(n, e), e.color && (n.stroke = n.stroke || e.color), n } function l(e) { var t = a.shape.hollowVenn, n = r.mix({}, t, e.style); return o.addStrokeAttrs(n, e), n } function u(e) { for (var t = [], n = 0; n < e.length; n++) { var r = e[n]; if (r) { var i = 0 === n ? "M" : "L"; t.push([i, r.x, r.y]) } } var o = e[0]; return o && (t.push(["L", o.x, o.y]), t.push(["z"])), t } function h(e) { for (var t = e.length / 2, n = [], r = [], i = 0; i < e.length; i++)i < t ? n.push(e[i]) : r.push(e[i]); var o = s.getSplinePath(n, !1), a = s.getSplinePath(r, !1); r.length && o.push(["L", r[0].x, r[0].y]), a.shift(); var c = o.concat(a); return n.length && c.push(["L", n[0].x, n[0].y]), c.push(["z"]), c } function f(e) { var t = Math.max.apply(null, e); return e.map((function (e) { return e / t })) } var d = i.registerFactory("violin", { defaultShapeType: "violin", getDefaultPoints: function (e) { var t = e.size / 2, n = [], i = f(e._size); return r.each(e.y, (function (r, o) { var a = i[o] * t, s = 0 === o, c = o === e.y.length - 1; n.push({ isMin: s, isMax: c, x: e.x - a, y: r }), n.unshift({ isMin: s, isMax: c, x: e.x + a, y: r }) })), n }, getActiveCfg: function (e, t) { var n = t.lineWidth || 1; if ("hollow" === e) return { lineWidth: n + 1 }; var r = t.fillOpacity || t.opacity || 1; return { fillOpacity: r - .08 } }, getSelectedCfg: function (e, t) { return t && t.style ? t.style : this.getActiveCfg(e, t) } }); i.registerShape("violin", "violin", { draw: function (e, t) { var n = c(e), i = u(e.points); i = this.parsePath(i); var o = t.addShape("path", { attrs: r.mix(n, { path: i }) }); return o }, getMarkerCfg: function (e) { return r.mix({ symbol: "circle", radius: 4 }, c(e)) } }), i.registerShape("violin", "smooth", { draw: function (e, t) { var n = c(e), i = h(e.points); i = this.parsePath(i); var o = t.addShape("path", { attrs: r.mix(n, { path: i }) }); return o }, getMarkerCfg: function (e) { return r.mix({ symbol: "circle", radius: 4 }, c(e)) } }), i.registerShape("violin", "hollow", { draw: function (e, t) { var n = l(e), i = u(e.points); i = this.parsePath(i); var o = t.addShape("path", { attrs: r.mix(n, { path: i }) }); return o }, getMarkerCfg: function (e) { return r.mix({ symbol: "circle", radius: 4 }, l(e)) } }), i.registerShape("violin", "smoothHollow", { draw: function (e, t) { var n = l(e), i = h(e.points); i = this.parsePath(i); var o = t.addShape("path", { attrs: r.mix(n, { path: i }) }); return o }, getMarkerCfg: function (e) { return r.mix({ symbol: "circle", radius: 4 }, l(e)) } }), e.exports = d }, function (e, t, n) { var r = n(0), i = n(162), o = {}; o.Rect = n(456), o.List = n(457), o.Circle = n(547), o.Tree = n(548), o.Mirror = n(549), o.Matrix = n(550), i.prototype.facet = function (e, t) { var n = o[r.upperFirst(e)]; if (!n) throw new Error("Not support such type of facets as: " + e); var i = this.get("facets"); i && i.destroy(), t.chart = this; var a = new n(t); this.set("facets", a) }, e.exports = o }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(421); function o(e, t, n) { return { x: e.x + t * Math.cos(n), y: e.y + t * Math.sin(n) } } var a = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "circle", t }, n.getRegion = function (e, t) { var n = .5, r = 2 * Math.PI / e, i = -1 * Math.PI / 2 + r * t, a = n / (1 + 1 / Math.sin(r / 2)), s = { x: .5, y: .5 }, c = o(s, n - a, i), l = 5 * Math.PI / 4, u = 1 * Math.PI / 4; return { start: o(c, a, l), end: o(c, a, u) } }, n.generateFacets = function (e) { var t = this, n = t.fields, r = n[0]; if (!r) throw "Please specify for the field for facet!"; var i = t.getFieldValues(r, e), o = i.length, a = []; return i.forEach((function (n, s) { var c = [{ field: r, value: n, values: i }], l = t.getFilter(c), u = e.filter(l), h = { type: t.type, colValue: n, colField: r, colIndex: s, cols: o, rows: 1, rowIndex: 0, data: u, region: t.getRegion(o, s) }; a.push(h) })), a }, t }(i); e.exports = a }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(421), o = n(0), a = o.assign, s = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "tree", t.line = { lineWidth: 1, stroke: "#ddd" }, t.lineSmooth = !1, t }, n.generateFacets = function (e) { var t = this, n = t.fields; if (!n.length) throw "Please specify for the fields for facet!"; var r = [], i = t.getRootFacet(e); return r.push(i), i.children = t.getChildFacets(e, 1, r), t.setRegion(r), r }, n.getRootFacet = function (e) { var t = this, n = { type: t.type, rows: t.getRows(), rowIndex: 0, colIndex: 0, colValue: t.rootTitle, data: e }; return n }, n.getRows = function () { return this.fields.length + 1 }, n.getChildFacets = function (e, t, n) { var r = this, i = r.fields, o = i.length; if (!(o < t)) { var a = [], s = i[t - 1], c = r.getFieldValues(s, e); return c.forEach((function (i, o) { var l = [{ field: s, value: i, values: c }], u = r.getFilter(l), h = e.filter(u); if (h.length) { var f = { type: r.type, colValue: i, colField: s, colIndex: o, rows: r.getRows(), rowIndex: t, data: h, children: r.getChildFacets(h, t + 1, n) }; a.push(f), n.push(f) } })), a } }, n.setRegion = function (e) { var t = this; t.forceColIndex(e), e.forEach((function (e) { e.region = t.getRegion(e.rows, e.cols, e.colIndex, e.rowIndex) })) }, n.forceColIndex = function (e) { var t = this, n = [], r = 0; e.forEach((function (e) { t.isLeaf(e) && (n.push(e), e.colIndex = r, r++) })), n.forEach((function (e) { e.cols = n.length })); for (var i = t.fields.length, o = i - 1; o >= 0; o--)for (var a = t.getFacetsByLevel(e, o), s = 0; s < a.length; s++) { var c = a[s]; t.isLeaf(c) || (c.originColIndex = c.colIndex, c.colIndex = t.getRegionIndex(c.children), c.cols = n.length) } }, n.getFacetsByLevel = function (e, t) { var n = []; return e.forEach((function (e) { e.rowIndex === t && n.push(e) })), n }, n.getRegion = function (e, t, n, r) { var i = 1 / t, o = 1 / e, a = { x: i * n, y: o * r }, s = { x: a.x + i, y: a.y + 2 * o / 3 }; return { start: a, end: s } }, n.getRegionIndex = function (e) { var t = e[0], n = e[e.length - 1]; return (n.colIndex - t.colIndex) / 2 + t.colIndex }, n.isLeaf = function (e) { return !e.children || !e.children.length }, n.setXAxis = function (e, t, n) { n.rowIndex !== n.rows - 1 && (t[e].label = null, t[e].title = null) }, n.setYAxis = function (e, t, n) { 0 !== n.originColIndex && 0 !== n.colIndex && (t[e].title = null, t[e].label = null) }, n.onPaint = function () { e.prototype.onPaint.call(this), this.group.clear(), this.facets && this.line && this.drawLines(this.facets, this.group) }, n.drawLines = function (e, t) { var n = this, r = t.addGroup(); e.forEach((function (e) { if (!n.isLeaf(e)) { var t = e.children; n._addFacetLines(e, t, r) } })) }, n._addFacetLines = function (e, t, n) { var r = this, i = e.view, o = i.getViewRegion(), a = { x: o.start.x + (o.end.x - o.start.x) / 2, y: o.start.y }; t.forEach((function (e) { var t = e.view.getViewRegion(), i = { x: t.start.x + (t.end.x - t.start.x) / 2, y: t.end.y }, o = { x: a.x, y: a.y + (i.y - a.y) / 2 }, s = { x: i.x, y: o.y }; r._drawLine([a, o, s, i], n) })) }, n._getPath = function (e) { var t = this, n = [], r = t.lineSmooth; return r ? (n.push(["M", e[0].x, e[0].y]), n.push(["C", e[1].x, e[1].y, e[2].x, e[2].y, e[3].x, e[3].y])) : e.forEach((function (e, t) { 0 === t ? n.push(["M", e.x, e.y]) : n.push(["L", e.x, e.y]) })), n }, n._drawLine = function (e, t) { var n = this, r = n._getPath(e), i = n.line; t.addShape("path", { attrs: a({ path: r }, i) }) }, t }(i); e.exports = s }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(457), o = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "mirror", this.transpose = !1, t }, n.init = function () { var t = this; t.transpose ? (t.cols = 2, t.rows = 1) : (t.cols = 1, t.rows = 2), e.prototype.init.call(this) }, n.beforeProcessView = function (e, t) { this.transpose ? t.colIndex % 2 === 0 ? e.coord().transpose().scale(-1, 1) : e.coord().transpose() : t.rowIndex % 2 !== 0 && e.coord().scale(1, -1) }, n.renderTitle = function (e, t) { this.transpose ? this.drawColTitle(e, t) : this.drawRowTitle(e, t) }, n.setXAxis = function (e, t, n) { 1 !== n.colIndex && 1 !== n.rowIndex || (t[e].label = null, t[e].title = null) }, n.setYAxis = function () { }, t }(i); e.exports = o }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(456), o = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return t.type = "matrix", t.showTitle = !1, t }, n.generateFacets = function (e) { for (var t = this, n = t.fields, r = n.length, i = r, o = [], a = 0; a < i; a++)for (var s = n[a], c = 0; c < r; c++) { var l = n[c], u = { type: t.type, colValue: s, rowValue: l, colField: s, rowField: l, colIndex: a, rowIndex: c, cols: i, rows: r, data: e, region: t.getRegion(r, i, a, c) }; o.push(u) } return o }, n.setXAxis = function (e, t, n) { n.rowIndex !== n.rows - 1 && (t[e].title = null, t[e].label = null) }, n.setYAxis = function (e, t, n) { 0 !== n.colIndex && (t[e].title = null, t[e].label = null) }, t }(i); e.exports = o }, function (e, t, n) { var r = n(205), i = n(162), o = n(0), a = { Base: n(204), Brush: n(552), Drag: n(553), ScrollBar: n(555), ShapeSelect: n(557), Slider: n(558), Zoom: n(560) }; r._Interactions = {}, r.registerInteraction = function (e, t) { r._Interactions[e] = t }, r.getInteraction = function (e) { return r._Interactions[e] }, i.prototype.getInteractions = function () { var e = this; return e._interactions || (e._interactions = {}), e._interactions }, i.prototype._setInteraction = function (e, t) { var n = this, r = n.getInteractions(); r[e] && r[e] !== t && r[e].destroy(), r[e] = t }, i.prototype.clearInteraction = function (e) { var t = this, n = t.getInteractions(); e ? (n[e] && (n[e]._reset(), n[e].destroy()), delete n[e]) : o.each(n, (function (e, t) { e._reset(), e.destroy(), delete n[t] })) }, i.prototype.interact = i.prototype.interaction = function (e, t) { var n = this, i = r.getInteraction(e), o = new i(t, n); return n._setInteraction(e, o), n }, r.registerInteraction("brush", a.Brush), r.registerInteraction("Brush", a.Brush), r.registerInteraction("drag", a.Drag), r.registerInteraction("Drag", a.Drag), r.registerInteraction("zoom", a.Zoom), r.registerInteraction("Zoom", a.Zoom), r.registerInteraction("scroll-bar", a.ScrollBar), r.registerInteraction("ScrollBar", a.ScrollBar), r.registerInteraction("shape-select", a.ShapeSelect), r.registerInteraction("ShapeSelect", a.ShapeSelect), r.registerInteraction("slider", a.Slider), r.registerInteraction("Slider", a.Slider), e.exports = a }, function (e, t, n) { function r(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function i(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var o = n(0), a = n(204), s = ["X", "Y", "XY", "POLYGON"], c = "XY", l = function (e) { i(n, e); var t = n.prototype; function n(t, n) { var i; i = e.call(this, t, n) || this; var o = r(i); o.filter = !o.draggable, o.type = o.type.toUpperCase(), o.chart = n, s.includes(o.type) || (o.type = c); var a, l = o.canvas; l && (l.get("children").map((function (e) { return "plotBack" === e.get("type") ? (a = e.get("plotRange"), !1) : e })), o.plot = { start: a.bl, end: a.tr }); if (n) { var u = n.get("coord"); o.plot = { start: u.start, end: u.end }, n.on("afterrender", (function () { o.plot = { start: u.start, end: u.end } })), o.isTransposed = u.isTransposed; var h = n._getScales("x"), f = n._getScales("y"); o.xScale = o.xField ? h[o.xField] : n.getXScale(), o.yScale = o.yField ? f[o.yField] : n.getYScales()[0] } return i } return t.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return o.mix({}, t, { type: c, startPoint: null, brushing: !1, dragging: !1, brushShape: null, container: null, polygonPath: null, style: { fill: "#C5D4EB", opacity: .3, lineWidth: 1, stroke: "#82A6DD" }, draggable: !1, dragOffX: 0, dragOffY: 0, inPlot: !0, xField: null, yField: null }) }, t.start = function (e) { var t = this, n = t.canvas, r = t.type, i = t.brushShape; if (r) { t.brushing && t.end(e); var o = { x: e.offsetX, y: e.offsetY }; if (o.x) { var a = t.plot && t.inPlot, s = n.get("canvasDOM"), c = n.get("pixelRatio"); if (t.selection && (t.selection = null), t.draggable && i && !i.get("destroyed")) { if (i.isHit(o.x * c, o.y * c)) { if (s.style.cursor = "move", t.selection = i, t.dragging = !0, "X" === r) t.dragoffX = o.x - i.attr("x"), t.dragoffY = 0; else if ("Y" === r) t.dragoffX = 0, t.dragoffY = o.y - i.attr("y"); else if ("XY" === r) t.dragoffX = o.x - i.attr("x"), t.dragoffY = o.y - i.attr("y"); else if ("POLYGON" === r) { var l = i.getBBox(); t.dragoffX = o.x - l.minX, t.dragoffY = o.y - l.minY } t.onDragstart && t.onDragstart(e) } t.prePoint = o } if (!t.dragging) { t.onBrushstart && t.onBrushstart(o); var u = t.container; if (a) { var h = t.plot, f = h.start, d = h.end; if (o.x < f.x || o.x > d.x || o.y < d.y || o.y > f.y) return } s.style.cursor = "crosshair", t.startPoint = o, t.brushShape = null, t.brushing = !0, u ? u.clear() : (u = n.addGroup({ zIndex: 5 }), u.initTransform()), t.container = u, "POLYGON" === r && (t.polygonPath = "M " + o.x + " " + o.y) } } } }, t.process = function (e) { var t = this, n = t.brushing, r = t.dragging, i = t.type, a = t.plot, s = t.startPoint, c = t.xScale, l = t.yScale, u = t.canvas; if (n || r) { var h = { x: e.offsetX, y: e.offsetY }, f = u.get("canvasDOM"); if (n) { f.style.cursor = "crosshair"; var d, p, v, m, g = a.start, y = a.end, b = t.polygonPath, x = t.brushShape, w = t.container; t.plot && t.inPlot && (h = t._limitCoordScope(h)), "Y" === i ? (d = g.x, p = h.y >= s.y ? s.y : h.y, v = Math.abs(g.x - y.x), m = Math.abs(s.y - h.y)) : "X" === i ? (d = h.x >= s.x ? s.x : h.x, p = y.y, v = Math.abs(s.x - h.x), m = Math.abs(y.y - g.y)) : "XY" === i ? (h.x >= s.x ? (d = s.x, p = h.y >= s.y ? s.y : h.y) : (d = h.x, p = h.y >= s.y ? s.y : h.y), v = Math.abs(s.x - h.x), m = Math.abs(s.y - h.y)) : "POLYGON" === i && (b += "L " + h.x + " " + h.y, t.polygonPath = b, x ? !x.get("destroyed") && x.attr(o.mix({}, x._attrs, { path: b })) : x = w.addShape("path", { attrs: o.mix(t.style, { path: b }) })), "POLYGON" !== i && (x ? !x.get("destroyed") && x.attr(o.mix({}, x._attrs, { x: d, y: p, width: v, height: m })) : x = w.addShape("rect", { attrs: o.mix(t.style, { x: d, y: p, width: v, height: m }) })), t.brushShape = x } else if (r) { f.style.cursor = "move"; var _ = t.selection; if (_ && !_.get("destroyed")) if ("POLYGON" === i) { var C = t.prePoint; t.selection.translate(h.x - C.x, h.y - C.y) } else t.dragoffX && _.attr("x", h.x - t.dragoffX), t.dragoffY && _.attr("y", h.y - t.dragoffY) } t.prePoint = h, u.draw(); var M = t._getSelected(), O = M.data, k = M.shapes, S = M.xValues, T = M.yValues, A = { data: O, shapes: k }; c && (A[c.field] = S), l && (A[l.field] = T), o.mix(e, A), A.x = h.x, A.y = h.y, t.onDragmove && t.onDragmove(A), t.onBrushmove && t.onBrushmove(A) } }, t.end = function (e) { var t = this; if (t.brushing || t.dragging) { var n = t.data, r = t.shapes, i = t.xValues, a = t.yValues, s = t.canvas, c = t.type, l = t.startPoint, u = t.chart, h = t.container, f = t.xScale, d = t.yScale, p = e.offsetX, v = e.offsetY, m = s.get("canvasDOM"); if (m.style.cursor = "default", null !== l) { if (Math.abs(l.x - p) <= 1 && Math.abs(l.y - v) <= 1) return t.brushing = !1, t.dragging = !1, h.clear(), void s.draw(); var g = { data: n, shapes: r }; if (f && (g[f.field] = i), d && (g[d.field] = a), o.mix(e, g), g.x = p, g.y = v, t.dragging) t.dragging = !1, t.onDragend && t.onDragend(g); else if (t.brushing) { t.brushing = !1; var y = t.brushShape, b = t.polygonPath; "POLYGON" === c && (b += "z", y && !y.get("destroyed") && y.attr(o.mix({}, y._attrs, { path: b })), t.polygonPath = b, s.draw()), t.onBrushend ? t.onBrushend(g) : u && t.filter && (h.clear(), !t.isTransposed && "X" === c || t.isTransposed && "Y" === c ? f && u.filter(f.field, (function (e) { return i.indexOf(e) > -1 })) : (!t.isTransposed && "Y" === c || t.isTransposed && "X" === c || f && u.filter(f.field, (function (e) { return i.indexOf(e) > -1 })), d && u.filter(d.field, (function (e) { return a.indexOf(e) > -1 }))), u.repaint()) } } } }, t.reset = function () { var e = this, t = e.chart, n = e.filter, r = e.brushShape, i = e.canvas; this._init(), t && n && (t.get("options").filters = {}, t.repaint()), r && (r.destroy(), i.draw()) }, t._limitCoordScope = function (e) { var t = this.plot, n = t.start, r = t.end; return e.x < n.x && (e.x = n.x), e.x > r.x && (e.x = r.x), e.y < r.y && (e.y = r.y), e.y > n.y && (e.y = n.y), e }, t._getSelected = function () { var e = this, t = e.chart, n = e.xScale, r = e.yScale, i = e.brushShape, o = e.canvas, a = o.get("pixelRatio"), s = [], c = [], l = [], u = []; if (t) { var h = t.get("geoms"); h.map((function (e) { var t = e.getShapes(); return t.map((function (e) { var t = e.get("origin"); return Array.isArray(t) || (t = [t]), t.map((function (t) { if (i.isHit(t.x * a, t.y * a)) { s.push(e); var o = t._origin; u.push(o), n && c.push(o[n.field]), r && l.push(o[r.field]) } return t })), e })), e })) } return e.shapes = s, e.xValues = c, e.yValues = l, e.data = u, o.draw(), { data: u, xValues: c, yValues: l, shapes: s } }, n }(a); e.exports = l }, function (e, t, n) { function r(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function i(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var o = n(0), a = n(204), s = n(554), c = n(439), l = n(440), u = 864e5, h = ["X", "Y", "XY"], f = "X", d = function (e) { i(n, e); var t = n.prototype; function n(t, n) { var i; i = e.call(this, t, n) || this; var a = r(i); a.type = a.type.toUpperCase(), a.chart = n, a.coord = n.get("coord"); var c = a.data = n.get("data"); s(n); var u = n.getYScales(), d = n.getXScale(); u.push(d); var p = n.get("scaleController"); return u.forEach((function (e) { var t = e.field; a.limitRange[t] = l(c, e); var n = p.defs[t] || {}; a.originScaleDefsByField[t] = o.mix(n, { nice: !!n.nice }), e.isLinear && (a.stepByField[t] = (e.max - e.min) * a.stepRatio) })), h.includes(a.type) || (a.type = f), a._disableTooltip(), i } return t.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return o.mix({}, t, { type: f, stepRatio: .05, limitRange: {}, stepByField: {}, threshold: 20, originScaleDefsByField: {}, previousPoint: null, isDragging: !1 }) }, t._disableTooltip = function () { var e = this, t = e.chart, n = t.get("tooltipController"); n && (e._showTooltip = !0, t.tooltip(!1)) }, t._enableTooltip = function (e) { var t = this, n = t.chart; t._showTooltip && (n.tooltip(!0), n.showTooltip(e)) }, t._applyTranslate = function (e, t, n) { void 0 === t && (t = 0); var r = this; e.isLinear ? r._translateLinearScale(e, t, n) : r._translateCatScale(e, t, n) }, t._translateCatScale = function (e, t, n) { var r = this, i = r.chart, a = e.type, s = e.field, l = e.values, h = e.ticks, f = c(i, s), d = r.limitRange[s], p = t / n, v = l.length, m = Math.max(1, Math.abs(parseInt(p * v))), g = d.indexOf(l[0]), y = d.indexOf(l[v - 1]); if (t > 0 && g >= 0) { for (var b = 0; b < m && g > 0; b++)g -= 1, y -= 1; var x = d.slice(g, y + 1), w = null; if ("timeCat" === a) { for (var _ = h.length > 2 ? h[1] - h[0] : u, C = h[0] - _; C >= x[0]; C -= _)h.unshift(C); w = h } i.scale(s, o.mix({}, f, { values: x, ticks: w })) } else if (t < 0 && y <= d.length - 1) { for (var M = 0; M < m && y < d.length - 1; M++)g += 1, y += 1; var O = d.slice(g, y + 1), k = null; if ("timeCat" === a) { for (var S = h.length > 2 ? h[1] - h[0] : u, T = h[h.length - 1] + S; T <= O[O.length - 1]; T += S)h.push(T); k = h } i.scale(s, o.mix({}, f, { values: O, ticks: k })) } }, t._translateLinearScale = function (e, t, n) { var r = this, i = r.chart, a = r.limitRange, s = e.min, l = e.max, u = e.field; if (s !== a[u].min || l !== a[u].max) { var h = t / n, f = l - s, d = c(i, u); i.scale(u, o.mix({}, d, { nice: !1, min: s + h * f, max: l + h * f })) } }, t.start = function (e) { var t = this, n = t.canvas, r = n.get("canvasDOM"); r.style.cursor = "pointer", t.isDragging = !0, t.previousPoint = { x: e.x, y: e.y }, t._disableTooltip() }, t.process = function (e) { var t = this; if (t.isDragging) { var n = t.chart, r = t.type, i = t.canvas, o = t.coord, a = t.threshold, s = i.get("canvasDOM"); s.style.cursor = "move"; var c = t.previousPoint, l = e, u = l.x - c.x, h = l.y - c.y, f = !1; if (Math.abs(u) > a && r.indexOf("X") > -1) { f = !0; var d = n.getXScale(); t._applyTranslate(d, d.isLinear ? -u : u, o.width) } if (Math.abs(h) > a && r.indexOf("Y") > -1) { f = !0; var p = n.getYScales(); p.forEach((function (e) { t._applyTranslate(e, l.y - c.y, o.height) })) } f && (t.previousPoint = l, n.repaint()) } }, t.end = function (e) { var t = this; t.isDragging = !1; var n = t.canvas, r = n.get("canvasDOM"); r.style.cursor = "default", t._enableTooltip(e) }, t.reset = function () { var e = this, t = e.view, n = e.originScaleDefsByField, r = t.getYScales(), i = t.getXScale(); r.push(i), r.forEach((function (e) { if (e.isLinear) { var r = e.field; t.scale(r, n[r]) } })), t.repaint(), e._disableTooltip() }, n }(a); e.exports = d }, function (e, t, n) { var r = n(0), i = n(100), o = n(438); e.exports = function (e) { e.on("beforeinitgeoms", (function () { e.set("limitInPlot", !0); var t = e.get("data"), n = o(e); if (!n) return t; var a = e.get("geoms"), s = !1; r.each(a, (function (e) { if (["area", "line", "path"].includes(e.get("type"))) return s = !0, !1 })); var c = []; if (r.each(n, (function (e, t) { !s && e && (e.values || e.min || e.max) && c.push(t) })), 0 === c.length) return t; var l = []; r.each(t, (function (e) { var t = !0; r.each(c, (function (o) { var a = e[o]; if (a) { var s = n[o]; if ("timeCat" === s.type) { var c = s.values; r.isNumber(c[0]) && (a = i.toTimeStamp(a)) } (s.values && !s.values.includes(a) || s.min && a < s.min || s.max && a > s.max) && (t = !1) } })), t && l.push(e) })), e.set("filteredData", l) })) } }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(0), o = n(204), a = n(556), s = n(440), c = "X", l = function (e) { r(n, e); var t = n.prototype; function n(t, n) { var r; r = e.call(this, t, n) || this; var o = r.getDefaultCfg(); return n.set("_scrollBarCfg", i.deepMix({}, o, t)), n.set("_limitRange", {}), n.get("_horizontalBar") || n.get("_verticalBar") || r._renderScrollBars(), r } return t.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return i.mix({}, t, { startEvent: null, processEvent: null, endEvent: null, resetEvent: null, type: c, xStyle: { backgroundColor: "rgba(202, 215, 239, .2)", fillerColor: "rgba(202, 215, 239, .75)", size: 4, lineCap: "round", offsetX: 0, offsetY: -10 }, yStyle: { backgroundColor: "rgba(202, 215, 239, .2)", fillerColor: "rgba(202, 215, 239, .75)", size: 4, lineCap: "round", offsetX: 8, offsetY: 0 } }) }, t._renderScrollBars = function () { var e = this.chart, t = e.get("_scrollBarCfg"); if (t) { var n = e.get("data"), r = e.get("plotRange"); r.width = Math.abs(r.br.x - r.bl.x), r.height = Math.abs(r.tl.y - r.bl.y); var i = e.get("backPlot"), o = e.get("canvas"), c = o.get("height"), l = e.get("_limitRange"), u = t.type; if (u.indexOf("X") > -1) { var h = t.xStyle, f = h.offsetX, d = h.offsetY, p = h.lineCap, v = h.backgroundColor, m = h.fillerColor, g = h.size, y = e.getXScale(), b = l[y.field]; b || (b = s(n, y), l[y.field] = b); var x = a(y, b, y.type), w = e.get("_horizontalBar"), _ = c - g / 2 + d; if (w) { var C = w.get("children")[1]; C.attr({ x1: Math.max(r.bl.x + r.width * x[0] + f, r.bl.x), x2: Math.min(r.bl.x + r.width * x[1] + f, r.br.x) }) } else w = i.addGroup({ className: "horizontalBar" }), w.addShape("line", { attrs: { x1: r.bl.x + f, y1: _, x2: r.br.x + f, y2: _, lineWidth: g, stroke: v, lineCap: p } }), w.addShape("line", { attrs: { x1: Math.max(r.bl.x + r.width * x[0] + f, r.bl.x), y1: _, x2: Math.min(r.bl.x + r.width * x[1] + f, r.br.x), y2: _, lineWidth: g, stroke: m, lineCap: p } }), e.set("_horizontalBar", w) } if (u.indexOf("Y") > -1) { var M = t.yStyle, O = M.offsetX, k = M.offsetY, S = M.lineCap, T = M.backgroundColor, A = M.fillerColor, L = M.size, j = e.getYScales()[0], z = l[j.field]; z || (z = s(n, j), l[j.field] = z); var E = a(j, z, j.type), P = e.get("_verticalBar"), D = L / 2 + O; if (P) { var H = P.get("children")[1]; H.attr({ y1: Math.max(r.tl.y + r.height * E[0] + k, r.tl.y), y2: Math.min(r.tl.y + r.height * E[1] + k, r.bl.y) }) } else P = i.addGroup({ className: "verticalBar" }), P.addShape("line", { attrs: { x1: D, y1: r.tl.y + k, x2: D, y2: r.bl.y + k, lineWidth: L, stroke: T, lineCap: S } }), P.addShape("line", { attrs: { x1: D, y1: Math.max(r.tl.y + r.height * E[0] + k, r.tl.y), x2: D, y2: Math.min(r.tl.y + r.height * E[1] + k, r.bl.y), lineWidth: L, stroke: A, lineCap: S } }), e.set("_verticalBar", P) } } }, t._clear = function () { var e = this.chart; if (e) { var t = e.get("_horizontalBar"), n = e.get("_verticalBar"); t && t.remove(!0), n && n.remove(!0), e.set("_horizontalBar", null), e.set("_verticalBar", null) } }, t._bindEvents = function () { this._onAfterclearOrBeforechangedata = this._onAfterclearOrBeforechangedata.bind(this), this._onAfterclearinner = this._onAfterclearinner.bind(this), this._onAfterdrawgeoms = this._onAfterdrawgeoms.bind(this); var e = this.chart; e.on("afterclear", this._onAfterclearOrBeforechangedata), e.on("beforechangedata", this._onAfterclearOrBeforechangedata), e.on("afterclearinner", this._onAfterclearinner), e.on("afterdrawgeoms", this._onAfterdrawgeoms) }, t._onAfterclearOrBeforechangedata = function () { this.chart && this.chart.set("_limitRange", {}) }, t._onAfterclearinner = function () { this._clear() }, t._onAfterdrawgeoms = function () { this._renderScrollBars() }, t._clearEvents = function () { var e = this.chart; e && (e.off("afterclear", this._onAfterclearOrBeforechangedata), e.off("beforechangedata", this._onAfterclearOrBeforechangedata), e.off("afterclearinner", this._onAfterclearinner), e.off("afterdrawgeoms", this._onAfterdrawgeoms)) }, t.destroy = function () { this._clearEvents(), this._clear(), this.canvas.draw() }, n }(o); e.exports = l }, function (e, t) { e.exports = function (e, t, n) { if (!e) return [0, 1]; var r = 0, i = 0; if ("linear" === n) { var o = t.min, a = t.max, s = a - o; r = (e.min - o) / s, i = (e.max - o) / s } else { var c = t, l = e.values, u = c.indexOf(l[0]), h = c.indexOf(l[l.length - 1]); r = u / (c.length - 1), i = h / (c.length - 1) } return [r, i] } }, function (e, t, n) { function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = n(0), o = n(204); function a(e, t) { var n = {}; for (var r in t) n[r] = e[r]; return n } var s = function (e) { function t() { return e.apply(this, arguments) || this } r(t, e); var n = t.prototype; return n.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return i.mix({}, t, { startEvent: "mouseup", processEvent: null, selectStyle: { fillOpacity: 1 }, unSelectStyle: { fillOpacity: .1 }, cancelable: !0 }) }, n.start = function (e) { var t, n = this, r = n.view, o = []; if (r.eachShape((function (n, r) { r.isPointInPath(e.x, e.y) ? t = r : o.push(r) })), t) if (t.get("_selected")) { if (!n.cancelable) return; n.reset() } else { var s = n.selectStyle, c = n.unSelectStyle, l = a(t.attr(), t); t.set("_originAttrs", l), t.attr(s), i.each(o, (function (e) { var t = e.get("_originAttrs"); t && e.attr(t), e.set("_selected", !1), c && (t = a(e.attr(), c), e.set("_originAttrs", t), e.attr(c)) })), t.set("_selected", !0), n.selectedShape = t, n.canvas.draw() } else n.reset() }, n.end = function (e) { var t = this.selectedShape; t && !t.get("destroyed") && t.get("origin") && (e.data = t.get("origin")._origin, e.shapeInfo = t.get("origin"), e.shape = t, e.selected = !!t.get("_selected")) }, n.reset = function () { var e = this; if (e.selectedShape) { var t = e.view, n = t.get("geoms")[0], r = n.get("container").get("children")[0], o = r.get("children"); i.each(o, (function (e) { var t = e.get("_originAttrs"); t && (e._attrs = t, e.set("_originAttrs", null)), e.set("_selected", !1) })), e.canvas.draw() } }, t }(o); e.exports = s }, function (e, t, n) { function r(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function i(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var o = n(559), a = n(162), s = n(0), c = n(18), l = n(8), u = n(204), h = n(439), f = n(438), d = c.Canvas, p = s.DomUtil, v = s.isNumber, m = function (e) { i(n, e); var t = n.prototype; function n(t, n) { var i; i = e.call(this, t, n) || this; var o = r(i); return o._initContainer(), o._initStyle(), o.render(), i } return t.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return s.mix({}, t, { startEvent: null, processEvent: null, endEvent: null, resetEvent: null, height: 26, width: "auto", padding: l.plotCfg.padding, container: null, xAxis: null, yAxis: null, fillerStyle: { fill: "#BDCCED", fillOpacity: .3 }, backgroundStyle: { stroke: "#CCD6EC", fill: "#CCD6EC", fillOpacity: .3, lineWidth: 1 }, range: [0, 100], layout: "horizontal", textStyle: { fill: "#545454" }, handleStyle: { img: "https://gw.alipayobjects.com/zos/rmsportal/QXtfhORGlDuRvLXFzpsQ.png", width: 5 }, backgroundChart: { type: ["area"], color: "#CCD6EC" } }) }, t._initContainer = function () { var e = this, t = e.container; if (!t) throw new Error("Please specify the container for the Slider!"); s.isString(t) ? e.domContainer = document.getElementById(t) : e.domContainer = t }, t.forceFit = function () { var e = this; if (e && !e.destroyed) { var t = p.getWidth(e.domContainer), n = e.height; if (t !== e.domWidth) { var r = e.canvas; r.changeSize(t, n), e.bgChart && e.bgChart.changeWidth(t), r.clear(), e._initWidth(), e._initSlider(), e._bindEvent(), r.draw() } } }, t._initForceFitEvent = function () { var e = this, t = setTimeout(s.wrapBehavior(e, "forceFit"), 200); clearTimeout(e.resizeTimer), e.resizeTimer = t }, t._initStyle = function () { var e = this; e.handleStyle = s.mix({ width: e.height, height: e.height }, e.handleStyle), "auto" === e.width && window.addEventListener("resize", s.wrapBehavior(e, "_initForceFitEvent")) }, t._initWidth = function () { var e, t = this; e = "auto" === t.width ? p.getWidth(t.domContainer) : t.width, t.domWidth = e; var n = s.toAllPadding(t.padding); "horizontal" === t.layout ? (t.plotWidth = e - n[1] - n[3], t.plotPadding = n[3], t.plotHeight = t.height) : "vertical" === t.layout && (t.plotWidth = t.width, t.plotHeight = t.height - n[0] - n[2], t.plotPadding = n[0]) }, t._initCanvas = function () { var e = this, t = e.domWidth, n = e.height, r = new d({ width: t, height: n, containerDOM: e.domContainer, capture: !1 }), i = r.get("el"); i.style.position = "absolute", i.style.top = 0, i.style.left = 0, i.style.zIndex = 3, e.canvas = r }, t._initBackground = function () { var e, t = this, n = this.chart, r = n.getAllGeoms[0], i = t.data = t.data || n.get("data"), o = n.getXScale(), c = t.xAxis || o.field, l = t.yAxis || n.getYScales()[0].field, u = s.deepMix((e = {}, e["" + c] = { range: [0, 1] }, e), f(n), t.scales); if (delete u[c].min, delete u[c].max, !i) throw new Error("Please specify the data!"); if (!c) throw new Error("Please specify the xAxis!"); if (!l) throw new Error("Please specify the yAxis!"); var h = t.backgroundChart, d = h.type || r.get("type"), p = h.color || "grey", v = h.shape; s.isArray(d) || (d = [d]); var m = s.toAllPadding(t.padding), g = new a({ container: t.container, width: t.domWidth, height: t.height, padding: [0, m[1], 0, m[3]], animate: !1 }); g.source(i), g.scale(u), g.axis(!1), g.tooltip(!1), g.legend(!1), s.each(d, (function (e, t) { var n = g[e]().position(c + "*" + l).opacity(1), r = s.isArray(p) ? p[t] : p; r && (s.isObject(r) ? r.field && n.color(r.field, r.colors) : n.color(r)); var i = s.isArray(v) ? v[t] : v; i && (s.isObject(i) ? i.field && n.shape(i.field, i.callback || i.shapes) : n.shape(i)) })), g.render(), t.bgChart = g, t.scale = "horizontal" === t.layout ? g.getXScale() : g.getYScales()[0], "vertical" === t.layout && g.destroy() }, t._initRange = function () { var e = this, t = e.startRadio, n = e.endRadio, r = e._startValue, i = e._endValue, o = e.scale, a = 0, s = 1; v(t) ? a = t : r && (a = o.scale(o.translate(r))), v(n) ? s = n : i && (s = o.scale(o.translate(i))); var c = e.minSpan, l = e.maxSpan, u = 0; if ("time" === o.type || "timeCat" === o.type) { var h = o.values, f = h[0], d = h[h.length - 1]; u = d - f } else o.isLinear && (u = o.max - o.min); u && c && (e.minRange = c / u * 100), u && l && (e.maxRange = l / u * 100); var p = [100 * a, 100 * s]; return e.range = p, p }, t._getHandleValue = function (e) { var t, n = this, r = n.range, i = r[0] / 100, o = r[1] / 100, a = n.scale; return t = "min" === e ? n._startValue ? n._startValue : a.invert(i) : n._endValue ? n._endValue : a.invert(o), t }, t._initSlider = function () { var e = this, t = e.canvas, n = e._initRange(), r = e.scale, i = t.addGroup(o, { middleAttr: e.fillerStyle, range: n, minRange: e.minRange, maxRange: e.maxRange, layout: e.layout, width: e.plotWidth, height: e.plotHeight, backgroundStyle: e.backgroundStyle, textStyle: e.textStyle, handleStyle: e.handleStyle, minText: r.getText(e._getHandleValue("min")), maxText: r.getText(e._getHandleValue("max")) }); "horizontal" === e.layout ? i.translate(e.plotPadding, 0) : "vertical" === e.layout && i.translate(0, e.plotPadding), e.rangeElement = i }, t._updateElement = function (e, t) { var n = this, r = n.chart, i = n.scale, o = n.rangeElement, a = i.field, c = o.get("minTextElement"), l = o.get("maxTextElement"), u = i.invert(e), f = i.invert(t), d = i.getText(u), p = i.getText(f); c.attr("text", d), l.attr("text", p), n._startValue = d, n._endValue = p, n.onChange && n.onChange({ startText: d, endText: p, startValue: u, endValue: f, startRadio: e, endRadio: t }), r.scale(a, s.mix({}, h(r, a), { nice: !1, min: u, max: f })), r.repaint() }, t._bindEvent = function () { var e = this, t = e.rangeElement; t.on("sliderchange", (function (t) { var n = t.range, r = n[0] / 100, i = n[1] / 100; e._updateElement(r, i) })) }, t.clear = function () { var e = this; e.canvas.clear(), e.bgChart && e.bgChart.destroy(), e.bgChart = null, e.scale = null, e.canvas.draw() }, t.repaint = function () { var e = this; e.clear(), e.render() }, t.render = function () { var e = this; e._initWidth(), e._initCanvas(), e._initBackground(), e._initSlider(), e._bindEvent(), e.canvas.draw() }, t.destroy = function () { var e = this; clearTimeout(e.resizeTimer); var t = e.rangeElement; t.off("sliderchange"), e.bgChart && e.bgChart.destroy(), e.canvas.destroy(); var n = e.domContainer; while (n.hasChildNodes()) n.removeChild(n.firstChild); window.removeEventListener("resize", s.getWrapBehavior(e, "_initForceFitEvent")), e.destroyed = !0 }, n }(u); e.exports = m }, function (e, t, n) { var r = n(0), i = n(18), o = i.Group, a = r.DomUtil, s = 5, c = function e(t) { e.superclass.constructor.call(this, t) }; r.extend(c, o), r.augment(c, { getDefaultCfg: function () { return { range: null, middleAttr: null, backgroundElement: null, minHandleElement: null, maxHandleElement: null, middleHandleElement: null, currentTarget: null, layout: "vertical", width: null, height: null, pageX: null, pageY: null } }, _initHandle: function (e) { var t, n, i, o = this, a = o.addGroup(), c = o.get("layout"), l = o.get("handleStyle"), u = l.img, h = l.width, f = l.height; if ("horizontal" === c) { var d = l.width; i = "ew-resize", n = a.addShape("Image", { attrs: { x: -d / 2, y: 0, width: d, height: f, img: u, cursor: i } }), t = a.addShape("Text", { attrs: r.mix({ x: "min" === e ? -(d / 2 + s) : d / 2 + s, y: f / 2, textAlign: "min" === e ? "end" : "start", textBaseline: "middle", text: "min" === e ? this.get("minText") : this.get("maxText"), cursor: i }, this.get("textStyle")) }) } else i = "ns-resize", n = a.addShape("Image", { attrs: { x: 0, y: -f / 2, width: h, height: f, img: u, cursor: i } }), t = a.addShape("Text", { attrs: r.mix({ x: h / 2, y: "min" === e ? f / 2 + s : -(f / 2 + s), textAlign: "center", textBaseline: "middle", text: "min" === e ? this.get("minText") : this.get("maxText"), cursor: i }, this.get("textStyle")) }); return this.set(e + "TextElement", t), this.set(e + "IconElement", n), a }, _initSliderBackground: function () { var e = this.addGroup(); return e.initTransform(), e.translate(0, 0), e.addShape("Rect", { attrs: r.mix({ x: 0, y: 0, width: this.get("width"), height: this.get("height") }, this.get("backgroundStyle")) }), e }, _beforeRenderUI: function () { var e = this._initSliderBackground(), t = this._initHandle("min"), n = this._initHandle("max"), r = this.addShape("rect", { attrs: this.get("middleAttr") }); this.set("middleHandleElement", r), this.set("minHandleElement", t), this.set("maxHandleElement", n), this.set("backgroundElement", e), e.set("zIndex", 0), r.set("zIndex", 1), t.set("zIndex", 2), n.set("zIndex", 2), r.attr("cursor", "move"), this.sort() }, _renderUI: function () { "horizontal" === this.get("layout") ? this._renderHorizontal() : this._renderVertical() }, _transform: function (e) { var t = this.get("range"), n = t[0] / 100, r = t[1] / 100, i = this.get("width"), o = this.get("height"), a = this.get("minHandleElement"), s = this.get("maxHandleElement"), c = this.get("middleHandleElement"); a.resetMatrix ? (a.resetMatrix(), s.resetMatrix()) : (a.initTransform(), s.initTransform()), "horizontal" === e ? (c.attr({ x: i * n, y: 0, width: (r - n) * i, height: o }), a.translate(n * i, 0), s.translate(r * i, 0)) : (c.attr({ x: 0, y: o * (1 - r), width: i, height: (r - n) * o }), a.translate(0, (1 - n) * o), s.translate(0, (1 - r) * o)) }, _renderHorizontal: function () { this._transform("horizontal") }, _renderVertical: function () { this._transform("vertical") }, _bindUI: function () { this.on("mousedown", r.wrapBehavior(this, "_onMouseDown")) }, _isElement: function (e, t) { var n = this.get(t); if (e === n) return !0; if (n.isGroup) { var r = n.get("children"); return r.indexOf(e) > -1 } return !1 }, _getRange: function (e, t) { var n = e + t; return n = n > 100 ? 100 : n, n = n < 0 ? 0 : n, n }, _limitRange: function (e, t, n) { n[0] = this._getRange(e, n[0]), n[1] = n[0] + t, n[1] > 100 && (n[1] = 100, n[0] = n[1] - t) }, _updateStatus: function (e, t) { var n = "x" === e ? this.get("width") : this.get("height"); e = r.upperFirst(e); var i, o = this.get("range"), a = this.get("page" + e), s = this.get("currentTarget"), c = this.get("rangeStash"), l = this.get("layout"), u = "vertical" === l ? -1 : 1, h = t["page" + e], f = h - a, d = f / n * 100 * u, p = this.get("minRange"), v = this.get("maxRange"); o[1] <= o[0] ? (this._isElement(s, "minHandleElement") || this._isElement(s, "maxHandleElement")) && (o[0] = this._getRange(d, o[0]), o[1] = this._getRange(d, o[0])) : (this._isElement(s, "minHandleElement") && (o[0] = this._getRange(d, o[0]), p && o[1] - o[0] <= p && this._limitRange(d, p, o), v && o[1] - o[0] >= v && this._limitRange(d, v, o)), this._isElement(s, "maxHandleElement") && (o[1] = this._getRange(d, o[1]), p && o[1] - o[0] <= p && this._limitRange(d, p, o), v && o[1] - o[0] >= v && this._limitRange(d, v, o))), this._isElement(s, "middleHandleElement") && (i = c[1] - c[0], this._limitRange(d, i, o)), this.emit("sliderchange", { range: o }), this.set("page" + e, h), this._renderUI(), this.get("canvas").draw() }, _onMouseDown: function (e) { var t = e.currentTarget, n = e.event, r = this.get("range"); n.stopPropagation(), n.preventDefault(), this.set("pageX", n.pageX), this.set("pageY", n.pageY), this.set("currentTarget", t), this.set("rangeStash", [r[0], r[1]]), this._bindCanvasEvents() }, _bindCanvasEvents: function () { var e = this.get("canvas").get("containerDOM"); this.onMouseMoveListener = a.addEventListener(e, "mousemove", r.wrapBehavior(this, "_onCanvasMouseMove")), this.onMouseUpListener = a.addEventListener(e, "mouseup", r.wrapBehavior(this, "_onCanvasMouseUp")), this.onMouseLeaveListener = a.addEventListener(e, "mouseleave", r.wrapBehavior(this, "_onCanvasMouseUp")) }, _onCanvasMouseMove: function (e) { var t = this.get("layout"); "horizontal" === t ? this._updateStatus("x", e) : this._updateStatus("y", e) }, _onCanvasMouseUp: function () { this._removeDocumentEvents() }, _removeDocumentEvents: function () { this.onMouseMoveListener.remove(), this.onMouseUpListener.remove(), this.onMouseLeaveListener.remove() } }), e.exports = c }, function (e, t, n) { function r(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function i(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var o = n(0), a = n(204), s = n(439), c = n(440), l = ["X", "Y", "XY"], u = "X", h = function (e) { i(n, e); var t = n.prototype; function n(t, n) { var i; i = e.call(this, t, n) || this; var a = r(i); a.chart = n, a.type = a.type.toUpperCase(); var s = a.data = n.get("data"), h = n.getYScales(), f = n.getXScale(); h.push(f); var d = n.get("scaleController"); return h.forEach((function (e) { var t = e.field, n = d.defs[t] || {}; a.limitRange[t] = c(s, e), a.originScaleDefsByField[t] = o.mix(n, { nice: !!n.nice }), e.isLinear ? a.stepByField[t] = (e.max - e.min) * a.stepRatio : a.stepByField[t] = a.catStep })), l.includes(a.type) || (a.type = u), i } return t.getDefaultCfg = function () { var t = e.prototype.getDefaultCfg.call(this); return o.mix({}, t, { processEvent: "mousewheel", type: u, stepRatio: .05, stepByField: {}, minScale: 1, maxScale: 4, catStep: 2, limitRange: {}, originScaleDefsByField: {} }) }, t._applyScale = function (e, t, n, r) { void 0 === n && (n = 0); var i = this, a = i.chart, c = i.stepByField; if (e.isLinear) { var l = e.min, u = e.max, h = e.field, f = 1 - n, d = c[h] * t, p = l + d * n, v = u - d * f; if (v > p) { var m = s(a, h); a.scale(h, o.mix({}, m, { nice: !1, min: p, max: v })) } } else { var g = e.field, y = e.values, b = i.chart, x = b.get("coord"), w = s(b, g), _ = i.limitRange[g], C = _.length, M = i.maxScale, O = i.minScale, k = C / M, S = C / O, T = y.length, A = x.invertPoint(r), L = A.x, j = T - t * this.catStep, z = parseInt(j * L), E = j + z; if (t > 0 && T >= k) { var P = z, D = E; E > T && (D = T - 1, P = T - j); var H = y.slice(P, D); b.scale(g, o.mix({}, w, { values: H })) } else if (t < 0 && T <= S) { var V = _.indexOf(y[0]), I = _.indexOf(y[T - 1]), N = Math.max(0, V - z), R = Math.min(I + E, C), F = _.slice(N, R); b.scale(g, o.mix({}, w, { values: F })) } } }, t.process = function (e) { var t = this, n = t.chart, r = t.type, i = n.get("coord"), o = e.deltaY, a = i.invertPoint(e); if (o) { t.onZoom && t.onZoom(o, a, t), o > 0 ? t.onZoomin && t.onZoomin(o, a, t) : t.onZoomout && t.onZoomout(o, a, t); var s = o / Math.abs(o); if (r.indexOf("X") > -1 && t._applyScale(n.getXScale(), s, a.x, e), r.indexOf("Y") > -1) { var c = n.getYScales(); c.forEach((function (n) { t._applyScale(n, s, a.y, e) })) } } n.repaint() }, t.reset = function () { var e = this, t = e.view, n = e.originScaleDefsByField, r = t.getYScales(), i = t.getXScale(); r.push(i), r.forEach((function (e) { if (e.isLinear) { var r = e.field; t.scale(r, n[r]) } })), t.repaint() }, n }(a); e.exports = h }])
+        }))
+    }, "7f6b": function (e, t, n) { "use strict"; n("b2a3"), n("1a3b") }, "7f78": function (e, t, n) { var r = n("23e7"), i = n("825a"), o = n("e163"), a = n("e177"); r({ target: "Reflect", stat: !0, sham: !a }, { getPrototypeOf: function (e) { return o(i(e)) } }) }, "7f9a": function (e, t, n) { var r = n("da84"), i = n("8925"), o = r.WeakMap; e.exports = "function" === typeof o && /native code/.test(i(o)) }, "7fd0": function (e, t, n) { }, "802a": function (e, t) { function n(e) { return this.__data__.get(e) } e.exports = n }, 8057: function (e, t) { function n(e, t) { var n = -1, r = null == e ? 0 : e.length; while (++n < r) if (!1 === t(e[n], n, e)) break; return e } e.exports = n }, "80e0": function (e, t, n) { var r = n("746f"); r("replace") }, 8119: function (e, t, n) { n("693d"), n("dfe5"), n("301c"), n("4e71"), e.exports = n("5524").Symbol }, 8172: function (e, t, n) { var r = n("746f"); r("toPrimitive") }, "81b8": function (e, t, n) { var r = n("746f"); r("unscopables") }, "81d5": function (e, t, n) { "use strict"; var r = n("7b0b"), i = n("23cb"), o = n("50c4"); e.exports = function (e) { var t = r(this), n = o(t.length), a = arguments.length, s = i(a > 1 ? arguments[1] : void 0, n), c = a > 2 ? arguments[2] : void 0, l = void 0 === c ? n : i(c, n); while (l > s) t[s++] = e; return t } }, "81ff": function (e, t, n) { }, "825a": function (e, t, n) { var r = n("861d"); e.exports = function (e) { if (!r(e)) throw TypeError(String(e) + " is not an object"); return e } }, 8261: function (e, t, n) { }, 8296: function (e, t, n) { var r = n("656b"), i = n("2b10"); function o(e, t) { return t.length < 2 ? e : r(e, i(t, 0, -1)) } e.exports = o }, "82da": function (e, t, n) { var r = n("23e7"), i = n("ebb5"), o = i.NATIVE_ARRAY_BUFFER_VIEWS; r({ target: "ArrayBuffer", stat: !0, forced: !o }, { isView: i.isView }) }, "82f8": function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("4d64").includes, o = r.aTypedArray, a = r.exportTypedArrayMethod; a("includes", (function (e) { return i(o(this), e, arguments.length > 1 ? arguments[1] : void 0) })) }, "83ab": function (e, t, n) { var r = n("d039"); e.exports = !r((function () { return 7 != Object.defineProperty({}, 1, { get: function () { return 7 } })[1] })) }, "83ab2": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return c })); var r = n("6042"), i = n.n(r), o = n("daa3"), a = n("4d91"), s = n("9cba"), c = { prefixCls: a["a"].string, size: { validator: function (e) { return ["small", "large", "default"].includes(e) } } }; t["b"] = { name: "AButtonGroup", props: c, inject: { configProvider: { default: function () { return s["a"] } } }, data: function () { return { sizeMap: { large: "lg", small: "sm" } } }, render: function () { var e, t = arguments[0], n = this.prefixCls, r = this.size, a = this.$slots, s = this.configProvider.getPrefixCls, c = s("btn-group", n), l = ""; switch (r) { case "large": l = "lg"; break; case "small": l = "sm"; break; default: break }var u = (e = {}, i()(e, "" + c, !0), i()(e, c + "-" + l, l), e); return t("div", { class: u }, [Object(o["c"])(a["default"])]) } } }, 8418: function (e, t, n) { "use strict"; var r = n("a04b"), i = n("9bf2"), o = n("5c6c"); e.exports = function (e, t, n) { var a = r(t); a in e ? i.f(e, a, o(0, n)) : e[a] = n } }, "841c": function (e, t, n) { "use strict"; var r = n("d784"), i = n("825a"), o = n("1d80"), a = n("129f"), s = n("577e"), c = n("14c3"); r("search", (function (e, t, n) { return [function (t) { var n = o(this), r = void 0 == t ? void 0 : t[e]; return void 0 !== r ? r.call(t, n) : new RegExp(t)[e](s(n)) }, function (e) { var r = i(this), o = s(e), l = n(t, r, o); if (l.done) return l.value; var u = r.lastIndex; a(u, 0) || (r.lastIndex = 0); var h = c(r, o); return a(r.lastIndex, u) || (r.lastIndex = u), null === h ? -1 : h.index }] })) }, "843c": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("0ccb").end, o = n("9a0c"); r({ target: "String", proto: !0, forced: o }, { padEnd: function (e) { return i(this, e, arguments.length > 1 ? arguments[1] : void 0) } }) }, 8496: function (e, t, n) { "use strict"; var r, i = n("41b2"), o = n.n(i), a = n("8bbf"), s = n.n(a), c = n("46cf"), l = n.n(c), u = n("4d91"), h = n("6bb4"), f = n("daa3"), d = n("d41d"), p = n("c8c6"), v = n("6a21"), m = n("1098"), g = n.n(m); function y(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function b(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? y(Object(n), !0).forEach((function (t) { w(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : y(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } function x(e) { return x = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, x(e) } function w(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var _ = { Webkit: "-webkit-", Moz: "-moz-", ms: "-ms-", O: "-o-" }; function C() { if (void 0 !== r) return r; r = ""; var e = document.createElement("p").style, t = "Transform"; for (var n in _) n + t in e && (r = n); return r } function M() { return C() ? "".concat(C(), "TransitionProperty") : "transitionProperty" } function O() { return C() ? "".concat(C(), "Transform") : "transform" } function k(e, t) { var n = M(); n && (e.style[n] = t, "transitionProperty" !== n && (e.style.transitionProperty = t)) } function S(e, t) { var n = O(); n && (e.style[n] = t, "transform" !== n && (e.style.transform = t)) } function T(e) { return e.style.transitionProperty || e.style[M()] } function A(e) { var t = window.getComputedStyle(e, null), n = t.getPropertyValue("transform") || t.getPropertyValue(O()); if (n && "none" !== n) { var r = n.replace(/[^0-9\-.,]/g, "").split(","); return { x: parseFloat(r[12] || r[4], 0), y: parseFloat(r[13] || r[5], 0) } } return { x: 0, y: 0 } } var L = /matrix\((.*)\)/, j = /matrix3d\((.*)\)/; function z(e, t) { var n = window.getComputedStyle(e, null), r = n.getPropertyValue("transform") || n.getPropertyValue(O()); if (r && "none" !== r) { var i, o = r.match(L); if (o) o = o[1], i = o.split(",").map((function (e) { return parseFloat(e, 10) })), i[4] = t.x, i[5] = t.y, S(e, "matrix(".concat(i.join(","), ")")); else { var a = r.match(j)[1]; i = a.split(",").map((function (e) { return parseFloat(e, 10) })), i[12] = t.x, i[13] = t.y, S(e, "matrix3d(".concat(i.join(","), ")")) } } else S(e, "translateX(".concat(t.x, "px) translateY(").concat(t.y, "px) translateZ(0)")) } var E, P = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source; function D(e) { var t = e.style.display; e.style.display = "none", e.offsetHeight, e.style.display = t } function H(e, t, n) { var r = n; if ("object" !== x(t)) return "undefined" !== typeof r ? ("number" === typeof r && (r = "".concat(r, "px")), void (e.style[t] = r)) : E(e, t); for (var i in t) t.hasOwnProperty(i) && H(e, i, t[i]) } function V(e) { var t, n, r, i = e.ownerDocument, o = i.body, a = i && i.documentElement; return t = e.getBoundingClientRect(), n = t.left, r = t.top, n -= a.clientLeft || o.clientLeft || 0, r -= a.clientTop || o.clientTop || 0, { left: n, top: r } } function I(e, t) { var n = e["page".concat(t ? "Y" : "X", "Offset")], r = "scroll".concat(t ? "Top" : "Left"); if ("number" !== typeof n) { var i = e.document; n = i.documentElement[r], "number" !== typeof n && (n = i.body[r]) } return n } function N(e) { return I(e) } function R(e) { return I(e, !0) } function F(e) { var t = V(e), n = e.ownerDocument, r = n.defaultView || n.parentWindow; return t.left += N(r), t.top += R(r), t } function Y(e) { return null !== e && void 0 !== e && e == e.window } function $(e) { return Y(e) ? e.document : 9 === e.nodeType ? e : e.ownerDocument } function B(e, t, n) { var r = n, i = "", o = $(e); return r = r || o.defaultView.getComputedStyle(e, null), r && (i = r.getPropertyValue(t) || r[t]), i } var W = new RegExp("^(".concat(P, ")(?!px)[a-z%]+$"), "i"), q = /^(top|right|bottom|left)$/, U = "currentStyle", K = "runtimeStyle", G = "left", X = "px"; function J(e, t) { var n = e[U] && e[U][t]; if (W.test(n) && !q.test(t)) { var r = e.style, i = r[G], o = e[K][G]; e[K][G] = e[U][G], r[G] = "fontSize" === t ? "1em" : n || 0, n = r.pixelLeft + X, r[G] = i, e[K][G] = o } return "" === n ? "auto" : n } function Q(e, t) { return "left" === e ? t.useCssRight ? "right" : e : t.useCssBottom ? "bottom" : e } function Z(e) { return "left" === e ? "right" : "right" === e ? "left" : "top" === e ? "bottom" : "bottom" === e ? "top" : void 0 } function ee(e, t, n) { "static" === H(e, "position") && (e.style.position = "relative"); var r = -999, i = -999, o = Q("left", n), a = Q("top", n), s = Z(o), c = Z(a); "left" !== o && (r = 999), "top" !== a && (i = 999); var l = "", u = F(e); ("left" in t || "top" in t) && (l = T(e) || "", k(e, "none")), "left" in t && (e.style[s] = "", e.style[o] = "".concat(r, "px")), "top" in t && (e.style[c] = "", e.style[a] = "".concat(i, "px")), D(e); var h = F(e), f = {}; for (var d in t) if (t.hasOwnProperty(d)) { var p = Q(d, n), v = "left" === d ? r : i, m = u[d] - h[d]; f[p] = p === d ? v + m : v - m } H(e, f), D(e), ("left" in t || "top" in t) && k(e, l); var g = {}; for (var y in t) if (t.hasOwnProperty(y)) { var b = Q(y, n), x = t[y] - u[y]; g[b] = y === b ? f[b] + x : f[b] - x } H(e, g) } function te(e, t) { var n = F(e), r = A(e), i = { x: r.x, y: r.y }; "left" in t && (i.x = r.x + t.left - n.left), "top" in t && (i.y = r.y + t.top - n.top), z(e, i) } function ne(e, t, n) { if (n.ignoreShake) { var r = F(e), i = r.left.toFixed(0), o = r.top.toFixed(0), a = t.left.toFixed(0), s = t.top.toFixed(0); if (i === a && o === s) return } n.useCssRight || n.useCssBottom ? ee(e, t, n) : n.useCssTransform && O() in document.body.style ? te(e, t) : ee(e, t, n) } function re(e, t) { for (var n = 0; n < e.length; n++)t(e[n]) } function ie(e) { return "border-box" === E(e, "boxSizing") } "undefined" !== typeof window && (E = window.getComputedStyle ? B : J); var oe = ["margin", "border", "padding"], ae = -1, se = 2, ce = 1, le = 0; function ue(e, t, n) { var r, i = {}, o = e.style; for (r in t) t.hasOwnProperty(r) && (i[r] = o[r], o[r] = t[r]); for (r in n.call(e), t) t.hasOwnProperty(r) && (o[r] = i[r]) } function he(e, t, n) { var r, i, o, a = 0; for (i = 0; i < t.length; i++)if (r = t[i], r) for (o = 0; o < n.length; o++) { var s = void 0; s = "border" === r ? "".concat(r).concat(n[o], "Width") : r + n[o], a += parseFloat(E(e, s)) || 0 } return a } var fe = { getParent: function (e) { var t = e; do { t = 11 === t.nodeType && t.host ? t.host : t.parentNode } while (t && 1 !== t.nodeType && 9 !== t.nodeType); return t } }; function de(e, t, n) { var r = n; if (Y(e)) return "width" === t ? fe.viewportWidth(e) : fe.viewportHeight(e); if (9 === e.nodeType) return "width" === t ? fe.docWidth(e) : fe.docHeight(e); var i = "width" === t ? ["Left", "Right"] : ["Top", "Bottom"], o = "width" === t ? e.getBoundingClientRect().width : e.getBoundingClientRect().height, a = ie(e), s = 0; (null === o || void 0 === o || o <= 0) && (o = void 0, s = E(e, t), (null === s || void 0 === s || Number(s) < 0) && (s = e.style[t] || 0), s = parseFloat(s) || 0), void 0 === r && (r = a ? ce : ae); var c = void 0 !== o || a, l = o || s; return r === ae ? c ? l - he(e, ["border", "padding"], i) : s : c ? r === ce ? l : l + (r === se ? -he(e, ["border"], i) : he(e, ["margin"], i)) : s + he(e, oe.slice(r), i) } re(["Width", "Height"], (function (e) { fe["doc".concat(e)] = function (t) { var n = t.document; return Math.max(n.documentElement["scroll".concat(e)], n.body["scroll".concat(e)], fe["viewport".concat(e)](n)) }, fe["viewport".concat(e)] = function (t) { var n = "client".concat(e), r = t.document, i = r.body, o = r.documentElement, a = o[n]; return "CSS1Compat" === r.compatMode && a || i && i[n] || a } })); var pe = { position: "absolute", visibility: "hidden", display: "block" }; function ve() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; var r, i = t[0]; return 0 !== i.offsetWidth ? r = de.apply(void 0, t) : ue(i, pe, (function () { r = de.apply(void 0, t) })), r } function me(e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]); return e } re(["width", "height"], (function (e) { var t = e.charAt(0).toUpperCase() + e.slice(1); fe["outer".concat(t)] = function (t, n) { return t && ve(t, e, n ? le : ce) }; var n = "width" === e ? ["Left", "Right"] : ["Top", "Bottom"]; fe[e] = function (t, r) { var i = r; if (void 0 === i) return t && ve(t, e, ae); if (t) { var o = ie(t); return o && (i += he(t, ["padding", "border"], n)), H(t, e, i) } } })); var ge = { getWindow: function (e) { if (e && e.document && e.setTimeout) return e; var t = e.ownerDocument || e; return t.defaultView || t.parentWindow }, getDocument: $, offset: function (e, t, n) { if ("undefined" === typeof t) return F(e); ne(e, t, n || {}) }, isWindow: Y, each: re, css: H, clone: function (e) { var t, n = {}; for (t in e) e.hasOwnProperty(t) && (n[t] = e[t]); var r = e.overflow; if (r) for (t in e) e.hasOwnProperty(t) && (n.overflow[t] = e.overflow[t]); return n }, mix: me, getWindowScrollLeft: function (e) { return N(e) }, getWindowScrollTop: function (e) { return R(e) }, merge: function () { for (var e = {}, t = 0; t < arguments.length; t++)ge.mix(e, t < 0 || arguments.length <= t ? void 0 : arguments[t]); return e }, viewportWidth: 0, viewportHeight: 0 }; me(ge, fe); var ye = ge.getParent; function be(e) { if (ge.isWindow(e) || 9 === e.nodeType) return null; var t, n = ge.getDocument(e), r = n.body, i = ge.css(e, "position"), o = "fixed" === i || "absolute" === i; if (!o) return "html" === e.nodeName.toLowerCase() ? null : ye(e); for (t = ye(e); t && t !== r && 9 !== t.nodeType; t = ye(t))if (i = ge.css(t, "position"), "static" !== i) return t; return null } var xe = ge.getParent; function we(e) { if (ge.isWindow(e) || 9 === e.nodeType) return !1; var t = ge.getDocument(e), n = t.body, r = null; for (r = xe(e); r && r !== n && r !== t; r = xe(r)) { var i = ge.css(r, "position"); if ("fixed" === i) return !0 } return !1 } function _e(e, t) { var n = { left: 0, right: 1 / 0, top: 0, bottom: 1 / 0 }, r = be(e), i = ge.getDocument(e), o = i.defaultView || i.parentWindow, a = i.body, s = i.documentElement; while (r) { if (-1 !== navigator.userAgent.indexOf("MSIE") && 0 === r.clientWidth || r === a || r === s || "visible" === ge.css(r, "overflow")) { if (r === a || r === s) break } else { var c = ge.offset(r); c.left += r.clientLeft, c.top += r.clientTop, n.top = Math.max(n.top, c.top), n.right = Math.min(n.right, c.left + r.clientWidth), n.bottom = Math.min(n.bottom, c.top + r.clientHeight), n.left = Math.max(n.left, c.left) } r = be(r) } var l = null; if (!ge.isWindow(e) && 9 !== e.nodeType) { l = e.style.position; var u = ge.css(e, "position"); "absolute" === u && (e.style.position = "fixed") } var h = ge.getWindowScrollLeft(o), f = ge.getWindowScrollTop(o), d = ge.viewportWidth(o), p = ge.viewportHeight(o), v = s.scrollWidth, m = s.scrollHeight, g = window.getComputedStyle(a); if ("hidden" === g.overflowX && (v = o.innerWidth), "hidden" === g.overflowY && (m = o.innerHeight), e.style && (e.style.position = l), t || we(e)) n.left = Math.max(n.left, h), n.top = Math.max(n.top, f), n.right = Math.min(n.right, h + d), n.bottom = Math.min(n.bottom, f + p); else { var y = Math.max(v, h + d); n.right = Math.min(n.right, y); var b = Math.max(m, f + p); n.bottom = Math.min(n.bottom, b) } return n.top >= 0 && n.left >= 0 && n.bottom > n.top && n.right > n.left ? n : null } function Ce(e, t, n, r) { var i = ge.clone(e), o = { width: t.width, height: t.height }; return r.adjustX && i.left < n.left && (i.left = n.left), r.resizeWidth && i.left >= n.left && i.left + o.width > n.right && (o.width -= i.left + o.width - n.right), r.adjustX && i.left + o.width > n.right && (i.left = Math.max(n.right - o.width, n.left)), r.adjustY && i.top < n.top && (i.top = n.top), r.resizeHeight && i.top >= n.top && i.top + o.height > n.bottom && (o.height -= i.top + o.height - n.bottom), r.adjustY && i.top + o.height > n.bottom && (i.top = Math.max(n.bottom - o.height, n.top)), ge.mix(i, o) } function Me(e) { var t, n, r; if (ge.isWindow(e) || 9 === e.nodeType) { var i = ge.getWindow(e); t = { left: ge.getWindowScrollLeft(i), top: ge.getWindowScrollTop(i) }, n = ge.viewportWidth(i), r = ge.viewportHeight(i) } else t = ge.offset(e), n = ge.outerWidth(e), r = ge.outerHeight(e); return t.width = n, t.height = r, t } function Oe(e, t) { var n = t.charAt(0), r = t.charAt(1), i = e.width, o = e.height, a = e.left, s = e.top; return "c" === n ? s += o / 2 : "b" === n && (s += o), "c" === r ? a += i / 2 : "r" === r && (a += i), { left: a, top: s } } function ke(e, t, n, r, i) { var o = Oe(t, n[1]), a = Oe(e, n[0]), s = [a.left - o.left, a.top - o.top]; return { left: Math.round(e.left - s[0] + r[0] - i[0]), top: Math.round(e.top - s[1] + r[1] - i[1]) } } function Se(e, t, n) { return e.left < n.left || e.left + t.width > n.right } function Te(e, t, n) { return e.top < n.top || e.top + t.height > n.bottom } function Ae(e, t, n) { return e.left > n.right || e.left + t.width < n.left } function Le(e, t, n) { return e.top > n.bottom || e.top + t.height < n.top } function je(e, t, n) { var r = []; return ge.each(e, (function (e) { r.push(e.replace(t, (function (e) { return n[e] }))) })), r } function ze(e, t) { return e[t] = -e[t], e } function Ee(e, t) { var n; return n = /%$/.test(e) ? parseInt(e.substring(0, e.length - 1), 10) / 100 * t : parseInt(e, 10), n || 0 } function Pe(e, t) { e[0] = Ee(e[0], t.width), e[1] = Ee(e[1], t.height) } function De(e, t, n, r) { var i = n.points, o = n.offset || [0, 0], a = n.targetOffset || [0, 0], s = n.overflow, c = n.source || e; o = [].concat(o), a = [].concat(a), s = s || {}; var l = {}, u = 0, h = !(!s || !s.alwaysByViewport), f = _e(c, h), d = Me(c); Pe(o, d), Pe(a, t); var p = ke(d, t, i, o, a), v = ge.merge(d, p); if (f && (s.adjustX || s.adjustY) && r) { if (s.adjustX && Se(p, d, f)) { var m = je(i, /[lr]/gi, { l: "r", r: "l" }), g = ze(o, 0), y = ze(a, 0), b = ke(d, t, m, g, y); Ae(b, d, f) || (u = 1, i = m, o = g, a = y) } if (s.adjustY && Te(p, d, f)) { var x = je(i, /[tb]/gi, { t: "b", b: "t" }), w = ze(o, 1), _ = ze(a, 1), C = ke(d, t, x, w, _); Le(C, d, f) || (u = 1, i = x, o = w, a = _) } u && (p = ke(d, t, i, o, a), ge.mix(v, p)); var M = Se(p, d, f), O = Te(p, d, f); if (M || O) { var k = i; M && (k = je(i, /[lr]/gi, { l: "r", r: "l" })), O && (k = je(i, /[tb]/gi, { t: "b", b: "t" })), i = k, o = n.offset || [0, 0], a = n.targetOffset || [0, 0] } l.adjustX = s.adjustX && M, l.adjustY = s.adjustY && O, (l.adjustX || l.adjustY) && (v = Ce(p, d, f, l)) } return v.width !== d.width && ge.css(c, "width", ge.width(c) + v.width - d.width), v.height !== d.height && ge.css(c, "height", ge.height(c) + v.height - d.height), ge.offset(c, { left: v.left, top: v.top }, { useCssRight: n.useCssRight, useCssBottom: n.useCssBottom, useCssTransform: n.useCssTransform, ignoreShake: n.ignoreShake }), { points: i, offset: o, targetOffset: a, overflow: l } } function He(e, t) { var n = _e(e, t), r = Me(e); return !n || r.left + r.width <= n.left || r.top + r.height <= n.top || r.left >= n.right || r.top >= n.bottom } function Ve(e, t, n) { var r = n.target || t, i = Me(r), o = !He(r, n.overflow && n.overflow.alwaysByViewport); return De(e, i, n, o) } function Ie(e, t, n) { var r, i, o = ge.getDocument(e), a = o.defaultView || o.parentWindow, s = ge.getWindowScrollLeft(a), c = ge.getWindowScrollTop(a), l = ge.viewportWidth(a), u = ge.viewportHeight(a); r = "pageX" in t ? t.pageX : s + t.clientX, i = "pageY" in t ? t.pageY : c + t.clientY; var h = { left: r, top: i, width: 0, height: 0 }, f = r >= 0 && r <= s + l && i >= 0 && i <= c + u, d = [n.points[0], "cc"]; return De(e, h, b(b({}, n), {}, { points: d }), f) } Ve.__getOffsetParent = be, Ve.__getVisibleRectForElement = _e; function Ne(e, t) { var n = void 0; function r() { n && (clearTimeout(n), n = null) } function i() { r(), n = setTimeout(e, t) } return i.clear = r, i } function Re(e, t) { return e === t || !(!e || !t) && ("pageX" in t && "pageY" in t ? e.pageX === t.pageX && e.pageY === t.pageY : "clientX" in t && "clientY" in t && (e.clientX === t.clientX && e.clientY === t.clientY)) } function Fe(e) { return e && "object" === ("undefined" === typeof e ? "undefined" : g()(e)) && e.window === e } function Ye(e, t) { var n = Math.floor(e), r = Math.floor(t); return Math.abs(n - r) <= 1 } function $e(e, t) { e !== document.activeElement && Object(h["a"])(t, e) && e.focus() } var Be = n("7b05"), We = n("0644"), qe = n.n(We); function Ue(e) { return "function" === typeof e && e ? e() : null } function Ke(e) { return "object" === ("undefined" === typeof e ? "undefined" : g()(e)) && e ? e : null } var Ge = { props: { childrenProps: u["a"].object, align: u["a"].object.isRequired, target: u["a"].oneOfType([u["a"].func, u["a"].object]).def((function () { return window })), monitorBufferTime: u["a"].number.def(50), monitorWindowResize: u["a"].bool.def(!1), disabled: u["a"].bool.def(!1) }, data: function () { return this.aligned = !1, {} }, mounted: function () { var e = this; this.$nextTick((function () { e.prevProps = o()({}, e.$props); var t = e.$props; !e.aligned && e.forceAlign(), !t.disabled && t.monitorWindowResize && e.startMonitorWindowResize() })) }, updated: function () { var e = this; this.$nextTick((function () { var t = e.prevProps, n = e.$props, r = !1; if (!n.disabled) { var i = e.$el, a = i ? i.getBoundingClientRect() : null; if (t.disabled) r = !0; else { var s = Ue(t.target), c = Ue(n.target), l = Ke(t.target), u = Ke(n.target); Fe(s) && Fe(c) ? r = !1 : (s !== c || s && !c && u || l && u && c || u && !Re(l, u)) && (r = !0); var h = e.sourceRect || {}; r || !i || Ye(h.width, a.width) && Ye(h.height, a.height) || (r = !0) } e.sourceRect = a } r && e.forceAlign(), n.monitorWindowResize && !n.disabled ? e.startMonitorWindowResize() : e.stopMonitorWindowResize(), e.prevProps = o()({}, e.$props, { align: qe()(e.$props.align) }) })) }, beforeDestroy: function () { this.stopMonitorWindowResize() }, methods: { startMonitorWindowResize: function () { this.resizeHandler || (this.bufferMonitor = Ne(this.forceAlign, this.$props.monitorBufferTime), this.resizeHandler = Object(p["a"])(window, "resize", this.bufferMonitor)) }, stopMonitorWindowResize: function () { this.resizeHandler && (this.bufferMonitor.clear(), this.resizeHandler.remove(), this.resizeHandler = null) }, forceAlign: function () { var e = this.$props, t = e.disabled, n = e.target, r = e.align; if (!t && n) { var i = this.$el, o = Object(f["k"])(this), a = void 0, s = Ue(n), c = Ke(n), l = document.activeElement; s ? a = Ve(i, s, r) : c && (a = Ie(i, c, r)), $e(l, i), this.aligned = !0, o.align && o.align(i, a) } } }, render: function () { var e = this.$props.childrenProps, t = Object(f["n"])(this)[0]; return t && e ? Object(Be["a"])(t, { props: e }) : t } }, Xe = Ge, Je = n("92fa"), Qe = n.n(Je), Ze = { props: { visible: u["a"].bool, hiddenClassName: u["a"].string }, render: function () { var e = arguments[0], t = this.$props, n = t.hiddenClassName, r = (t.visible, null); if (n || !this.$slots["default"] || this.$slots["default"].length > 1) { var i = ""; r = e("div", { class: i }, [this.$slots["default"]]) } else r = this.$slots["default"][0]; return r } }, et = { props: { hiddenClassName: u["a"].string.def(""), prefixCls: u["a"].string, visible: u["a"].bool }, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.visible, i = t.hiddenClassName, o = { on: Object(f["k"])(this) }; return e("div", Qe()([o, { class: r ? "" : i }]), [e(Ze, { class: n + "-content", attrs: { visible: r } }, [this.$slots["default"]])]) } }, tt = n("18ce"), nt = n("b488"), rt = { name: "VCTriggerPopup", mixins: [nt["a"]], props: { visible: u["a"].bool, getClassNameFromAlign: u["a"].func, getRootDomNode: u["a"].func, align: u["a"].any, destroyPopupOnHide: u["a"].bool, prefixCls: u["a"].string, getContainer: u["a"].func, transitionName: u["a"].string, animation: u["a"].any, maskAnimation: u["a"].string, maskTransitionName: u["a"].string, mask: u["a"].bool, zIndex: u["a"].number, popupClassName: u["a"].any, popupStyle: u["a"].object.def((function () { return {} })), stretch: u["a"].string, point: u["a"].shape({ pageX: u["a"].number, pageY: u["a"].number }) }, data: function () { return this.domEl = null, { stretchChecked: !1, targetWidth: void 0, targetHeight: void 0 } }, mounted: function () { var e = this; this.$nextTick((function () { e.rootNode = e.getPopupDomNode(), e.setStretchSize() })) }, updated: function () { var e = this; this.$nextTick((function () { e.setStretchSize() })) }, beforeDestroy: function () { this.$el.parentNode ? this.$el.parentNode.removeChild(this.$el) : this.$el.remove && this.$el.remove() }, methods: { onAlign: function (e, t) { var n = this.$props, r = n.getClassNameFromAlign(t); this.currentAlignClassName !== r && (this.currentAlignClassName = r, e.className = this.getClassName(r)); var i = Object(f["k"])(this); i.align && i.align(e, t) }, setStretchSize: function () { var e = this.$props, t = e.stretch, n = e.getRootDomNode, r = e.visible, i = this.$data, o = i.stretchChecked, a = i.targetHeight, s = i.targetWidth; if (t && r) { var c = n(); if (c) { var l = c.offsetHeight, u = c.offsetWidth; a === l && s === u && o || this.setState({ stretchChecked: !0, targetHeight: l, targetWidth: u }) } } else o && this.setState({ stretchChecked: !1 }) }, getPopupDomNode: function () { return this.$refs.popupInstance ? this.$refs.popupInstance.$el : null }, getTargetElement: function () { return this.$props.getRootDomNode() }, getAlignTarget: function () { var e = this.$props.point; return e || this.getTargetElement }, getMaskTransitionName: function () { var e = this.$props, t = e.maskTransitionName, n = e.maskAnimation; return !t && n && (t = e.prefixCls + "-" + n), t }, getTransitionName: function () { var e = this.$props, t = e.transitionName, n = e.animation; return t || ("string" === typeof n ? t = "" + n : n && n.props && n.props.name && (t = n.props.name)), t }, getClassName: function (e) { return this.$props.prefixCls + " " + this.$props.popupClassName + " " + e }, getPopupElement: function () { var e = this, t = this.$createElement, n = this.$props, r = this.$slots, i = this.getTransitionName, a = this.$data, s = a.stretchChecked, c = a.targetHeight, l = a.targetWidth, u = n.align, h = n.visible, d = n.prefixCls, p = n.animation, v = n.popupStyle, m = n.getClassNameFromAlign, y = n.destroyPopupOnHide, b = n.stretch, x = this.getClassName(this.currentAlignClassName || m(u)); h || (this.currentAlignClassName = null); var w = {}; b && (-1 !== b.indexOf("height") ? w.height = "number" === typeof c ? c + "px" : c : -1 !== b.indexOf("minHeight") && (w.minHeight = "number" === typeof c ? c + "px" : c), -1 !== b.indexOf("width") ? w.width = "number" === typeof l ? l + "px" : l : -1 !== b.indexOf("minWidth") && (w.minWidth = "number" === typeof l ? l + "px" : l), s || setTimeout((function () { e.$refs.alignInstance && e.$refs.alignInstance.forceAlign() }), 0)); var _ = { props: { prefixCls: d, visible: h }, class: x, on: Object(f["k"])(this), ref: "popupInstance", style: o()({}, w, v, this.getZIndexStyle()) }, C = { props: { appear: !0, css: !1 } }, M = i(), O = !!M, k = { beforeEnter: function () { }, enter: function (t, n) { e.$nextTick((function () { e.$refs.alignInstance ? e.$refs.alignInstance.$nextTick((function () { e.domEl = t, Object(tt["a"])(t, M + "-enter", n) })) : n() })) }, beforeLeave: function () { e.domEl = null }, leave: function (e, t) { Object(tt["a"])(e, M + "-leave", t) } }; if ("object" === ("undefined" === typeof p ? "undefined" : g()(p))) { O = !0; var S = p.on, T = void 0 === S ? {} : S, A = p.props, L = void 0 === A ? {} : A; C.props = o()({}, C.props, L), C.on = o()({}, k, T) } else C.on = k; return O || (C = {}), t("transition", C, y ? [h ? t(Xe, { attrs: { target: this.getAlignTarget(), monitorWindowResize: !0, align: u }, key: "popup", ref: "alignInstance", on: { align: this.onAlign } }, [t(et, _, [r["default"]])]) : null] : [t(Xe, { directives: [{ name: "show", value: h }], attrs: { target: this.getAlignTarget(), monitorWindowResize: !0, disabled: !h, align: u }, key: "popup", ref: "alignInstance", on: { align: this.onAlign } }, [t(et, _, [r["default"]])])]) }, getZIndexStyle: function () { var e = {}, t = this.$props; return void 0 !== t.zIndex && (e.zIndex = t.zIndex), e }, getMaskElement: function () { var e = this.$createElement, t = this.$props, n = null; if (t.mask) { var r = this.getMaskTransitionName(); n = e(Ze, { directives: [{ name: "show", value: t.visible }], style: this.getZIndexStyle(), key: "mask", class: t.prefixCls + "-mask", attrs: { visible: t.visible } }), r && (n = e("transition", { attrs: { appear: !0, name: r } }, [n])) } return n } }, render: function () { var e = arguments[0], t = this.getMaskElement, n = this.getPopupElement; return e("div", [t(), n()]) } }; function it(e, t, n) { return n ? e[0] === t[0] : e[0] === t[0] && e[1] === t[1] } function ot(e, t, n) { var r = e[t] || {}; return o()({}, r, n) } function at(e, t, n, r) { var i = n.points; for (var o in e) if (e.hasOwnProperty(o) && it(e[o].points, i, r)) return t + "-placement-" + o; return "" } function st() { } var ct = { props: { autoMount: u["a"].bool.def(!0), autoDestroy: u["a"].bool.def(!0), visible: u["a"].bool, forceRender: u["a"].bool.def(!1), parent: u["a"].any, getComponent: u["a"].func.isRequired, getContainer: u["a"].func.isRequired, children: u["a"].func.isRequired }, mounted: function () { this.autoMount && this.renderComponent() }, updated: function () { this.autoMount && this.renderComponent() }, beforeDestroy: function () { this.autoDestroy && this.removeContainer() }, methods: { removeContainer: function () { this.container && (this._component && this._component.$destroy(), this.container.parentNode.removeChild(this.container), this.container = null, this._component = null) }, renderComponent: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = arguments[1], n = this.visible, r = this.forceRender, i = this.getContainer, o = this.parent, a = this; if (n || o._component || o.$refs._component || r) { var s = this.componentEl; this.container || (this.container = i(), s = document.createElement("div"), this.componentEl = s, this.container.appendChild(s)); var c = { component: a.getComponent(e) }; this._component ? this._component.setComponent(c) : this._component = new this.$root.constructor({ el: s, parent: a, data: { _com: c }, mounted: function () { this.$nextTick((function () { t && t.call(a) })) }, updated: function () { this.$nextTick((function () { t && t.call(a) })) }, methods: { setComponent: function (e) { this.$data._com = e } }, render: function () { return this.$data._com.component } }) } } }, render: function () { return this.children({ renderComponent: this.renderComponent, removeContainer: this.removeContainer }) } }; function lt() { return "" } function ut() { return window.document } s.a.use(l.a, { name: "ant-ref" }); var ht = ["click", "mousedown", "touchstart", "mouseenter", "mouseleave", "focus", "blur", "contextmenu"], ft = { name: "Trigger", mixins: [nt["a"]], props: { action: u["a"].oneOfType([u["a"].string, u["a"].arrayOf(u["a"].string)]).def([]), showAction: u["a"].any.def([]), hideAction: u["a"].any.def([]), getPopupClassNameFromAlign: u["a"].any.def(lt), afterPopupVisibleChange: u["a"].func.def(st), popup: u["a"].any, popupStyle: u["a"].object.def((function () { return {} })), prefixCls: u["a"].string.def("rc-trigger-popup"), popupClassName: u["a"].string.def(""), popupPlacement: u["a"].string, builtinPlacements: u["a"].object, popupTransitionName: u["a"].oneOfType([u["a"].string, u["a"].object]), popupAnimation: u["a"].any, mouseEnterDelay: u["a"].number.def(0), mouseLeaveDelay: u["a"].number.def(.1), zIndex: u["a"].number, focusDelay: u["a"].number.def(0), blurDelay: u["a"].number.def(.15), getPopupContainer: u["a"].func, getDocument: u["a"].func.def(ut), forceRender: u["a"].bool, destroyPopupOnHide: u["a"].bool.def(!1), mask: u["a"].bool.def(!1), maskClosable: u["a"].bool.def(!0), popupAlign: u["a"].object.def((function () { return {} })), popupVisible: u["a"].bool, defaultPopupVisible: u["a"].bool.def(!1), maskTransitionName: u["a"].oneOfType([u["a"].string, u["a"].object]), maskAnimation: u["a"].string, stretch: u["a"].string, alignPoint: u["a"].bool }, provide: function () { return { vcTriggerContext: this } }, inject: { vcTriggerContext: { default: function () { return {} } }, savePopupRef: { default: function () { return st } }, dialogContext: { default: function () { return null } } }, data: function () { var e = this, t = this.$props, n = void 0; return n = Object(f["s"])(this, "popupVisible") ? !!t.popupVisible : !!t.defaultPopupVisible, ht.forEach((function (t) { e["fire" + t] = function (n) { e.fireEvents(t, n) } })), { prevPopupVisible: n, sPopupVisible: n, point: null } }, watch: { popupVisible: function (e) { void 0 !== e && (this.prevPopupVisible = this.sPopupVisible, this.sPopupVisible = e) } }, deactivated: function () { this.setPopupVisible(!1) }, mounted: function () { var e = this; this.$nextTick((function () { e.renderComponent(null), e.updatedCal() })) }, updated: function () { var e = this, t = function () { e.sPopupVisible !== e.prevPopupVisible && e.afterPopupVisibleChange(e.sPopupVisible), e.prevPopupVisible = e.sPopupVisible }; this.renderComponent(null, t), this.$nextTick((function () { e.updatedCal() })) }, beforeDestroy: function () { this.clearDelayTimer(), this.clearOutsideHandler(), clearTimeout(this.mouseDownTimeout) }, methods: { updatedCal: function () { var e = this.$props, t = this.$data; if (t.sPopupVisible) { var n = void 0; this.clickOutsideHandler || !this.isClickToHide() && !this.isContextmenuToShow() || (n = e.getDocument(), this.clickOutsideHandler = Object(p["a"])(n, "mousedown", this.onDocumentClick)), this.touchOutsideHandler || (n = n || e.getDocument(), this.touchOutsideHandler = Object(p["a"])(n, "touchstart", this.onDocumentClick)), !this.contextmenuOutsideHandler1 && this.isContextmenuToShow() && (n = n || e.getDocument(), this.contextmenuOutsideHandler1 = Object(p["a"])(n, "scroll", this.onContextmenuClose)), !this.contextmenuOutsideHandler2 && this.isContextmenuToShow() && (this.contextmenuOutsideHandler2 = Object(p["a"])(window, "blur", this.onContextmenuClose)) } else this.clearOutsideHandler() }, onMouseenter: function (e) { var t = this.$props.mouseEnterDelay; this.fireEvents("mouseenter", e), this.delaySetPopupVisible(!0, t, t ? null : e) }, onMouseMove: function (e) { this.fireEvents("mousemove", e), this.setPoint(e) }, onMouseleave: function (e) { this.fireEvents("mouseleave", e), this.delaySetPopupVisible(!1, this.$props.mouseLeaveDelay) }, onPopupMouseenter: function () { this.clearDelayTimer() }, onPopupMouseleave: function (e) { e && e.relatedTarget && !e.relatedTarget.setTimeout && this._component && this._component.getPopupDomNode && Object(h["a"])(this._component.getPopupDomNode(), e.relatedTarget) || this.delaySetPopupVisible(!1, this.$props.mouseLeaveDelay) }, onFocus: function (e) { this.fireEvents("focus", e), this.clearDelayTimer(), this.isFocusToShow() && (this.focusTime = Date.now(), this.delaySetPopupVisible(!0, this.$props.focusDelay)) }, onMousedown: function (e) { this.fireEvents("mousedown", e), this.preClickTime = Date.now() }, onTouchstart: function (e) { this.fireEvents("touchstart", e), this.preTouchTime = Date.now() }, onBlur: function (e) { Object(h["a"])(e.target, e.relatedTarget || document.activeElement) || (this.fireEvents("blur", e), this.clearDelayTimer(), this.isBlurToHide() && this.delaySetPopupVisible(!1, this.$props.blurDelay)) }, onContextmenu: function (e) { e.preventDefault(), this.fireEvents("contextmenu", e), this.setPopupVisible(!0, e) }, onContextmenuClose: function () { this.isContextmenuToShow() && this.close() }, onClick: function (e) { if (this.fireEvents("click", e), this.focusTime) { var t = void 0; if (this.preClickTime && this.preTouchTime ? t = Math.min(this.preClickTime, this.preTouchTime) : this.preClickTime ? t = this.preClickTime : this.preTouchTime && (t = this.preTouchTime), Math.abs(t - this.focusTime) < 20) return; this.focusTime = 0 } this.preClickTime = 0, this.preTouchTime = 0, this.isClickToShow() && (this.isClickToHide() || this.isBlurToHide()) && e && e.preventDefault && e.preventDefault(), e && e.domEvent && e.domEvent.preventDefault(); var n = !this.$data.sPopupVisible; (this.isClickToHide() && !n || n && this.isClickToShow()) && this.setPopupVisible(!this.$data.sPopupVisible, e) }, onPopupMouseDown: function () { var e = this, t = this.vcTriggerContext, n = void 0 === t ? {} : t; this.hasPopupMouseDown = !0, clearTimeout(this.mouseDownTimeout), this.mouseDownTimeout = setTimeout((function () { e.hasPopupMouseDown = !1 }), 0), n.onPopupMouseDown && n.onPopupMouseDown.apply(n, arguments) }, onDocumentClick: function (e) { if (!this.$props.mask || this.$props.maskClosable) { var t = e.target, n = this.$el; Object(h["a"])(n, t) || this.hasPopupMouseDown || this.close() } }, getPopupDomNode: function () { return this._component && this._component.getPopupDomNode ? this._component.getPopupDomNode() : null }, getRootDomNode: function () { return this.$el }, handleGetPopupClassFromAlign: function (e) { var t = [], n = this.$props, r = n.popupPlacement, i = n.builtinPlacements, o = n.prefixCls, a = n.alignPoint, s = n.getPopupClassNameFromAlign; return r && i && t.push(at(i, o, e, a)), s && t.push(s(e)), t.join(" ") }, getPopupAlign: function () { var e = this.$props, t = e.popupPlacement, n = e.popupAlign, r = e.builtinPlacements; return t && r ? ot(r, t, n) : n }, savePopup: function (e) { this._component = e, this.savePopupRef(e) }, getComponent: function () { var e = this.$createElement, t = this, n = {}; this.isMouseEnterToShow() && (n.mouseenter = t.onPopupMouseenter), this.isMouseLeaveToHide() && (n.mouseleave = t.onPopupMouseleave), n.mousedown = this.onPopupMouseDown, n.touchstart = this.onPopupMouseDown; var r = t.handleGetPopupClassFromAlign, i = t.getRootDomNode, a = t.getContainer, s = t.$props, c = s.prefixCls, l = s.destroyPopupOnHide, u = s.popupClassName, h = s.action, d = s.popupAnimation, p = s.popupTransitionName, v = s.popupStyle, m = s.mask, g = s.maskAnimation, y = s.maskTransitionName, b = s.zIndex, x = s.stretch, w = s.alignPoint, _ = this.$data, C = _.sPopupVisible, M = _.point, O = this.getPopupAlign(), k = { props: { prefixCls: c, destroyPopupOnHide: l, visible: C, point: w && M, action: h, align: O, animation: d, getClassNameFromAlign: r, stretch: x, getRootDomNode: i, mask: m, zIndex: b, transitionName: p, maskAnimation: g, maskTransitionName: y, getContainer: a, popupClassName: u, popupStyle: v }, on: o()({ align: Object(f["k"])(this).popupAlign || st }, n), directives: [{ name: "ant-ref", value: this.savePopup }] }; return e(rt, k, [Object(f["g"])(t, "popup")]) }, getContainer: function () { var e = this.$props, t = this.dialogContext, n = document.createElement("div"); n.style.position = "absolute", n.style.top = "0", n.style.left = "0", n.style.width = "100%"; var r = e.getPopupContainer ? e.getPopupContainer(this.$el, t) : e.getDocument().body; return r.appendChild(n), this.popupContainer = n, n }, setPopupVisible: function (e, t) { var n = this.alignPoint, r = this.sPopupVisible; if (this.clearDelayTimer(), r !== e) { Object(f["s"])(this, "popupVisible") || this.setState({ sPopupVisible: e, prevPopupVisible: r }); var i = Object(f["k"])(this); i.popupVisibleChange && i.popupVisibleChange(e) } n && t && this.setPoint(t) }, setPoint: function (e) { var t = this.$props.alignPoint; t && e && this.setState({ point: { pageX: e.pageX, pageY: e.pageY } }) }, delaySetPopupVisible: function (e, t, n) { var r = this, i = 1e3 * t; if (this.clearDelayTimer(), i) { var o = n ? { pageX: n.pageX, pageY: n.pageY } : null; this.delayTimer = Object(d["b"])((function () { r.setPopupVisible(e, o), r.clearDelayTimer() }), i) } else this.setPopupVisible(e, n) }, clearDelayTimer: function () { this.delayTimer && (Object(d["a"])(this.delayTimer), this.delayTimer = null) }, clearOutsideHandler: function () { this.clickOutsideHandler && (this.clickOutsideHandler.remove(), this.clickOutsideHandler = null), this.contextmenuOutsideHandler1 && (this.contextmenuOutsideHandler1.remove(), this.contextmenuOutsideHandler1 = null), this.contextmenuOutsideHandler2 && (this.contextmenuOutsideHandler2.remove(), this.contextmenuOutsideHandler2 = null), this.touchOutsideHandler && (this.touchOutsideHandler.remove(), this.touchOutsideHandler = null) }, createTwoChains: function (e) { var t = function () { }, n = Object(f["k"])(this); return this.childOriginEvents[e] && n[e] ? this["fire" + e] : (t = this.childOriginEvents[e] || n[e] || t, t) }, isClickToShow: function () { var e = this.$props, t = e.action, n = e.showAction; return -1 !== t.indexOf("click") || -1 !== n.indexOf("click") }, isContextmenuToShow: function () { var e = this.$props, t = e.action, n = e.showAction; return -1 !== t.indexOf("contextmenu") || -1 !== n.indexOf("contextmenu") }, isClickToHide: function () { var e = this.$props, t = e.action, n = e.hideAction; return -1 !== t.indexOf("click") || -1 !== n.indexOf("click") }, isMouseEnterToShow: function () { var e = this.$props, t = e.action, n = e.showAction; return -1 !== t.indexOf("hover") || -1 !== n.indexOf("mouseenter") }, isMouseLeaveToHide: function () { var e = this.$props, t = e.action, n = e.hideAction; return -1 !== t.indexOf("hover") || -1 !== n.indexOf("mouseleave") }, isFocusToShow: function () { var e = this.$props, t = e.action, n = e.showAction; return -1 !== t.indexOf("focus") || -1 !== n.indexOf("focus") }, isBlurToHide: function () { var e = this.$props, t = e.action, n = e.hideAction; return -1 !== t.indexOf("focus") || -1 !== n.indexOf("blur") }, forcePopupAlign: function () { this.$data.sPopupVisible && this._component && this._component.$refs.alignInstance && this._component.$refs.alignInstance.forceAlign() }, fireEvents: function (e, t) { this.childOriginEvents[e] && this.childOriginEvents[e](t), this.__emit(e, t) }, close: function () { this.setPopupVisible(!1) } }, render: function () { var e = this, t = arguments[0], n = this.sPopupVisible, r = Object(f["c"])(this.$slots["default"]), i = this.$props, o = i.forceRender, a = i.alignPoint; r.length > 1 && Object(v["a"])(!1, "Trigger $slots.default.length > 1, just support only one default", !0); var s = r[0]; this.childOriginEvents = Object(f["h"])(s); var c = { props: {}, nativeOn: {}, key: "trigger" }; return this.isContextmenuToShow() ? c.nativeOn.contextmenu = this.onContextmenu : c.nativeOn.contextmenu = this.createTwoChains("contextmenu"), this.isClickToHide() || this.isClickToShow() ? (c.nativeOn.click = this.onClick, c.nativeOn.mousedown = this.onMousedown, c.nativeOn.touchstart = this.onTouchstart) : (c.nativeOn.click = this.createTwoChains("click"), c.nativeOn.mousedown = this.createTwoChains("mousedown"), c.nativeOn.touchstart = this.createTwoChains("onTouchstart")), this.isMouseEnterToShow() ? (c.nativeOn.mouseenter = this.onMouseenter, a && (c.nativeOn.mousemove = this.onMouseMove)) : c.nativeOn.mouseenter = this.createTwoChains("mouseenter"), this.isMouseLeaveToHide() ? c.nativeOn.mouseleave = this.onMouseleave : c.nativeOn.mouseleave = this.createTwoChains("mouseleave"), this.isFocusToShow() || this.isBlurToHide() ? (c.nativeOn.focus = this.onFocus, c.nativeOn.blur = this.onBlur) : (c.nativeOn.focus = this.createTwoChains("focus"), c.nativeOn.blur = function (t) { !t || t.relatedTarget && Object(h["a"])(t.target, t.relatedTarget) || e.createTwoChains("blur")(t) }), this.trigger = Object(Be["a"])(s, c), t(ct, { attrs: { parent: this, visible: n, autoMount: !1, forceRender: o, getComponent: this.getComponent, getContainer: this.getContainer, children: function (t) { var n = t.renderComponent; return e.renderComponent = n, e.trigger } } }) } }; t["a"] = ft }, "84c3": function (e, t, n) { var r = n("74e8"); r("Uint16", (function (e) { return function (t, n, r) { return e(this, t, n, r) } })) }, "84cd": function (e, t, n) { }, "857a": function (e, t, n) { var r = n("1d80"), i = n("577e"), o = /"/g; e.exports = function (e, t, n, a) { var s = i(r(e)), c = "<" + t; return "" !== n && (c += " " + n + '="' + i(a).replace(o, "&quot;") + '"'), c + ">" + s + "</" + t + ">" } }, 8580: function (e, t, n) { }, 8592: function (e, t, n) { "use strict"; var r = n("b1e0"), i = n("db14"); r["b"].setDefaultIndicator = r["c"], r["b"].install = function (e) { e.use(i["a"]), e.component(r["b"].name, r["b"]) }, t["a"] = r["b"] }, "85c4": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t["default"] = void 0; var i = r(n("9523")), o = r(n("448a")), a = r(n("970b")), s = r(n("53b8")), c = r(n("050c")), l = n("5557"), u = r(n("b06d")), h = r(n("eb53")); function f(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function d(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? f(n, !0).forEach((function (t) { (0, i["default"])(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : f(n).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } var p = function e(t) { if ((0, a["default"])(this, e), t) { var n = t.getContext("2d"), r = t.clientWidth, i = t.clientHeight, o = [r, i]; t.setAttribute("width", r), t.setAttribute("height", i), this.ctx = n, this.area = o, this.animationStatus = !1, this.graphs = [], this.color = s["default"], this.bezierCurve = c["default"], t.addEventListener("mousedown", g.bind(this)), t.addEventListener("mousemove", y.bind(this)), t.addEventListener("mouseup", b.bind(this)) } else console.error("CRender Missing parameters!") }; function v(e, t) { var n = this.graphs; m(n) ? (n.forEach((function (e) { return e.turnNextAnimationFrame(t) })), this.drawAllGraph(), requestAnimationFrame(v.bind(this, e, t))) : e() } function m(e) { return e.find((function (e) { return !e.animationPause && e.animationFrameState.length })) } function g(e) { var t = this.graphs, n = t.find((function (e) { return "hover" === e.status })); n && (n.status = "active") } function y(e) { var t = e.offsetX, n = e.offsetY, r = [t, n], i = this.graphs, o = i.find((function (e) { return "active" === e.status || "drag" === e.status })); if (o) { if (!o.drag) return; return "function" !== typeof o.move ? void console.error("No move method is provided, cannot be dragged!") : (o.moveProcessor(e), void (o.status = "drag")) } var a = i.find((function (e) { return "hover" === e.status })), s = i.filter((function (e) { return e.hover && ("function" === typeof e.hoverCheck || e.hoverRect) })), c = s.find((function (e) { return e.hoverCheckProcessor(r, e) })); document.body.style.cursor = c ? c.style.hoverCursor : "default"; var l = !1, u = !1; if (a && (l = "function" === typeof a.mouseOuter), c && (u = "function" === typeof c.mouseEnter), c || a) { if (!c && a) return l && a.mouseOuter(e, a), void (a.status = "static"); if (!c || c !== a) return c && !a ? (u && c.mouseEnter(e, c), void (c.status = "hover")) : void (c && a && c !== a && (l && a.mouseOuter(e, a), a.status = "static", u && c.mouseEnter(e, c), c.status = "hover")) } } function b(e) { var t = this.graphs, n = t.find((function (e) { return "active" === e.status })), r = t.find((function (e) { return "drag" === e.status })); n && "function" === typeof n.click && n.click(e, n), t.forEach((function (e) { return e && (e.status = "static") })), n && (n.status = "hover"), r && (r.status = "hover") } t["default"] = p, p.prototype.clearArea = function () { var e, t = this.area; (e = this.ctx).clearRect.apply(e, [0, 0].concat((0, o["default"])(t))) }, p.prototype.add = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = e.name; if (t) { var n = u["default"].get(t); if (n) { var r = new h["default"](n, e); if (r.validator(r)) return r.render = this, this.graphs.push(r), this.sortGraphsByIndex(), this.drawAllGraph(), r } else console.warn("No corresponding graph configuration found!") } else console.error("add Missing parameters!") }, p.prototype.sortGraphsByIndex = function () { var e = this.graphs; e.sort((function (e, t) { return e.index > t.index ? 1 : e.index === t.index ? 0 : e.index < t.index ? -1 : void 0 })) }, p.prototype.delGraph = function (e) { "function" === typeof e.delProcessor && (e.delProcessor(this), this.graphs = this.graphs.filter((function (e) { return e })), this.drawAllGraph()) }, p.prototype.delAllGraph = function () { var e = this; this.graphs.forEach((function (t) { return t.delProcessor(e) })), this.graphs = this.graphs.filter((function (e) { return e })), this.drawAllGraph() }, p.prototype.drawAllGraph = function () { var e = this; this.clearArea(), this.graphs.filter((function (e) { return e && e.visible })).forEach((function (t) { return t.drawProcessor(e, t) })) }, p.prototype.launchAnimation = function () { var e = this, t = this.animationStatus; if (!t) return this.animationStatus = !0, new Promise((function (t) { v.call(e, (function () { e.animationStatus = !1, t() }), Date.now()) })) }, p.prototype.clone = function (e) { var t = e.style.getStyle(), n = d({}, e, { style: t }); return delete n.render, n = (0, l.deepClone)(n, !0), this.add(n) } }, "85e3": function (e, t) { function n(e, t, n) { switch (n.length) { case 0: return e.call(t); case 1: return e.call(t, n[0]); case 2: return e.call(t, n[0], n[1]); case 3: return e.call(t, n[0], n[1], n[2]) }return e.apply(t, n) } e.exports = n }, "85e7": function (e, t, n) { var r = n("1a14"), i = n("77e9"), o = n("9876"); e.exports = n("0bad") ? Object.defineProperties : function (e, t) { i(e); var n, a = o(t), s = a.length, c = 0; while (s > c) r.f(e, n = a[c++], t[n]); return e } }, 8604: function (e, t, n) { var r = n("26e8"), i = n("e2c0"); function o(e, t) { return null != e && i(e, t, r) } e.exports = o }, "861d": function (e, t) { e.exports = function (e) { return "object" === typeof e ? null !== e : "function" === typeof e } }, "872a": function (e, t, n) { var r = n("3b4a"); function i(e, t, n) { "__proto__" == t && r ? r(e, t, { configurable: !0, enumerable: !0, value: n, writable: !0 }) : e[t] = n } e.exports = i }, "873c": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.title = l; var i = r(n("278c")), o = n("18ad"), a = n("5557"), s = n("9d85"), c = n("becb"); function l(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = []; t.title && (n[0] = (0, c.deepMerge)((0, a.deepClone)(s.titleConfig, !0), t.title)), (0, o.doUpdate)({ chart: e, series: n, key: "title", getGraphConfig: u }) } function u(e, t) { var n = s.titleConfig.animationCurve, r = s.titleConfig.animationFrame, i = s.titleConfig.rLevel, o = h(e, t), a = f(e); return [{ name: "text", index: i, visible: e.show, animationCurve: n, animationFrame: r, shape: o, style: a }] } function h(e, t) { var n = e.offset, r = e.text, o = t.chart.gridArea, a = o.x, s = o.y, c = o.w, l = (0, i["default"])(n, 2), u = l[0], h = l[1]; return { content: r, position: [a + c / 2 + u, s + h] } } function f(e) { var t = e.style; return t } }, 8771: function (e, t, n) { var r = n("cc15")("iterator"), i = !1; try { var o = [7][r](); o["return"] = function () { i = !0 }, Array.from(o, (function () { throw 2 })) } catch (a) { } e.exports = function (e, t) { if (!t && !i) return !1; var n = !1; try { var o = [7], s = o[r](); s.next = function () { return { done: n = !0 } }, o[r] = function () { return s }, e(o) } catch (a) { } return n } }, 8827: function (e, t, n) { "use strict"; t.__esModule = !0, t.default = function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } }, "882a": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n("41b2"), i = l(r), o = n("6604"), a = l(o), s = n("5669"), c = l(s); function l(e) { return e && e.__esModule ? e : { default: e } } var u = { lang: (0, i["default"])({ placeholder: "璇烽�夋嫨鏃ユ湡", rangePlaceholder: ["寮�濮嬫棩鏈�", "缁撴潫鏃ユ湡"] }, a["default"]), timePickerLocale: (0, i["default"])({}, c["default"]) }; u.lang.ok = "纭� 瀹�", t["default"] = u }, "887c": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.titleConfig = void 0; var r = { show: !0, text: "", offset: [0, -20], style: { fill: "#333", fontSize: 17, fontWeight: "bold", textAlign: "center", textBaseline: "bottom" }, rLevel: 20, animationCurve: "easeOutCubic", animationFrame: 50 }; t.titleConfig = r }, 8925: function (e, t, n) { var r = n("c6cd"), i = Function.toString; "function" != typeof r.inspectSource && (r.inspectSource = function (e) { return i.call(e) }), e.exports = r.inspectSource }, "89d9": function (e, t, n) { var r = n("656b"), i = n("159a"), o = n("e2e4"); function a(e, t, n) { var a = -1, s = t.length, c = {}; while (++a < s) { var l = t[a], u = r(e, l); n(u, l) && i(c, o(l, e), u) } return c } e.exports = a }, "8a0d": function (e, t) { e.exports = {} }, "8a1d": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.mergeColor = a; var r = n("9d85"), i = n("5557"), o = n("becb"); function a(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = (0, i.deepClone)(r.colorConfig, !0), a = t.color, s = t.series; if (s || (s = []), a || (a = []), t.color = a = (0, o.deepMerge)(n, a), s.length) { var c = a.length; s.forEach((function (e, t) { e.color || (e.color = a[t % c]) })); var l = s.filter((function (e) { var t = e.type; return "pie" === t })); l.forEach((function (e) { return e.data.forEach((function (e, t) { return e.color = a[t % c] })) })); var u = s.filter((function (e) { var t = e.type; return "gauge" === t })); u.forEach((function (e) { return e.data.forEach((function (e, t) { return e.color = a[t % c] })) })); var h = s.filter((function (e) { var t = e.type, n = e.independentColor; return "bar" === t && n })); h.forEach((function (e) { e.independentColors || (e.independentColors = a) })) } } }, "8a59": function (e, t, n) { var r = n("74e8"); r("Uint8", (function (e) { return function (t, n, r) { return e(this, t, n, r) } }), !0) }, "8a79": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("06cf").f, o = n("50c4"), a = n("577e"), s = n("5a34"), c = n("1d80"), l = n("ab13"), u = n("c430"), h = "".endsWith, f = Math.min, d = l("endsWith"), p = !u && !d && !!function () { var e = i(String.prototype, "endsWith"); return e && !e.writable }(); r({ target: "String", proto: !0, forced: !p && !d }, { endsWith: function (e) { var t = a(c(this)); s(e); var n = arguments.length > 1 ? arguments[1] : void 0, r = o(t.length), i = void 0 === n ? r : f(o(n), r), l = a(e); return h ? h.call(t, l, i) : t.slice(i - l.length, i) === l } }) }, "8aa5": function (e, t, n) { "use strict"; var r = n("6547").charAt; e.exports = function (e, t, n) { return t + (n ? r(e, t).length : 1) } }, "8aa7": function (e, t, n) { var r = n("da84"), i = n("d039"), o = n("1c7e"), a = n("ebb5").NATIVE_ARRAY_BUFFER_VIEWS, s = r.ArrayBuffer, c = r.Int8Array; e.exports = !a || !i((function () { c(1) })) || !i((function () { new c(-1) })) || !o((function (e) { new c, new c(null), new c(1.5), new c(e) }), !0) || i((function () { return 1 !== new c(new s(2), 1, void 0).length })) }, "8aab": function (e, t, n) { var r = n("6aa8"), i = n("cc15")("iterator"), o = n("8a0d"); e.exports = n("5524").isIterable = function (e) { var t = Object(e); return void 0 !== t[i] || "@@iterator" in t || o.hasOwnProperty(r(t)) } }, "8adb": function (e, t) { function n(e, t) { if (("constructor" !== t || "function" !== typeof e[t]) && "__proto__" != t) return e[t] } e.exports = n }, "8b09": function (e, t, n) { var r = n("74e8"); r("Int16", (function (e) { return function (t, n, r) { return e(this, t, n, r) } })) }, "8b1a": function (e, t) { var n = 0, r = Math.random(); e.exports = function (e) { return "Symbol(".concat(void 0 === e ? "" : e, ")_", (++n + r).toString(36)) } }, "8b79": function (e, t, n) { }, "8b9a": function (e, t, n) { var r = n("23e7"), i = n("825a"), o = n("3bbe"), a = n("d2bb"); a && r({ target: "Reflect", stat: !0 }, { setPrototypeOf: function (e, t) { i(e), o(t); try { return a(e, t), !0 } catch (n) { return !1 } } }) }, "8ba4": function (e, t, n) { var r = n("23e7"), i = n("5e89"); r({ target: "Number", stat: !0 }, { isInteger: i }) }, "8c3f": function (e, t, n) { }, "8d1e": function (e, t, n) { }, "8d74": function (e, t, n) { var r = n("4cef"), i = /^\s+/; function o(e) { return e ? e.slice(0, r(e) + 1).replace(i, "") : e } e.exports = o }, "8db3": function (e, t, n) { var r = n("47f5"); function i(e, t) { var n = null == e ? 0 : e.length; return !!n && r(e, t, 0) > -1 } e.exports = i }, "8de2": function (e, t, n) { var r = n("8eeb"), i = n("9934"); function o(e) { return r(e, i(e)) } e.exports = o }, "8df8": function (e, t, n) { "use strict"; e.exports = o, e.exports.isMobile = o, e.exports.default = o; var r = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i, i = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i; function o(e) { e || (e = {}); var t = e.ua; if (t || "undefined" === typeof navigator || (t = navigator.userAgent), t && t.headers && "string" === typeof t.headers["user-agent"] && (t = t.headers["user-agent"]), "string" !== typeof t) return !1; var n = e.tablet ? i.test(t) : r.test(t); return !n && e.tablet && e.featureDetect && navigator && navigator.maxTouchPoints > 1 && -1 !== t.indexOf("Macintosh") && -1 !== t.indexOf("Safari") && (n = !0), n } }, "8e60": function (e, t, n) { "use strict"; var r = n("4d91"), i = n("7b05"); t["a"] = { name: "Portal", props: { getContainer: r["a"].func.isRequired, children: r["a"].any.isRequired, didUpdate: r["a"].func }, mounted: function () { this.createContainer() }, updated: function () { var e = this, t = this.$props.didUpdate; t && this.$nextTick((function () { t(e.$props) })) }, beforeDestroy: function () { this.removeContainer() }, methods: { createContainer: function () { this._container = this.$props.getContainer(), this.$forceUpdate() }, removeContainer: function () { this._container && this._container.parentNode && this._container.parentNode.removeChild(this._container) } }, render: function () { return this._container ? Object(i["a"])(this.$props.children, { directives: [{ name: "ant-portal", value: this._container }] }) : null } } }, "8e8e": function (e, t, n) { "use strict"; t.__esModule = !0, t.default = function (e, t) { var n = {}; for (var r in e) t.indexOf(r) >= 0 || Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r]); return n } }, "8e95": function (e, t, n) { var r = n("c195"); e.exports = new r }, "8eb5": function (e, t) { var n = Math.expm1, r = Math.exp; e.exports = !n || n(10) > 22025.465794806718 || n(10) < 22025.465794806718 || -2e-17 != n(-2e-17) ? function (e) { return 0 == (e = +e) ? e : e > -1e-6 && e < 1e-6 ? e + e * e / 2 : r(e) - 1 } : n }, "8eeb": function (e, t, n) { var r = n("32b3"), i = n("872a"); function o(e, t, n, o) { var a = !n; n || (n = {}); var s = -1, c = t.length; while (++s < c) { var l = t[s], u = o ? o(n[l], e[l], l, n, e) : void 0; void 0 === u && (u = e[l]), a ? i(n, l, u) : r(n, l, u) } return n } e.exports = o }, "8f3c": function (e, t, n) { }, "8f47": function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.transition = c, t.injectNewCurve = w, t["default"] = void 0; var i = r(n("278c")), o = r(n("7037")), a = r(n("df83")), s = "linear"; function c(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 30, i = arguments.length > 4 && void 0 !== arguments[4] && arguments[4]; if (!l.apply(void 0, arguments)) return !1; try { var o = u(e), a = h(o, r); return i && "number" !== typeof n ? x(t, n, a) : m(t, n, a) } catch (s) { return console.warn("Transition parameter may be abnormal!"), [n] } } function l(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 30; if (!e || !1 === t || !1 === n || !r) return console.error("transition: Missing Parameters!"), !1; if ((0, o["default"])(t) !== (0, o["default"])(n)) return console.error("transition: Inconsistent Status Types!"), !1; var i = (0, o["default"])(n); return "string" !== i && "boolean" !== i && e.length ? (a["default"].has(e) || e instanceof Array || console.warn("transition: Transition curve not found, default curve will be used!"), !0) : (console.error("transition: Unsupported Data Type of State!"), !1) } function u(e) { var t = ""; return t = a["default"].has(e) ? a["default"].get(e) : e instanceof Array ? e : a["default"].get(s), t } function h(e, t) { var n = 1 / (t - 1), r = new Array(t).fill(0).map((function (e, t) { return t * n })), i = r.map((function (t) { return f(e, t) })); return i } function f(e, t) { var n = d(e, t), r = p(n, t); return v(n, r) } function d(e, t) { var n = e.length - 1, r = "", i = ""; e.findIndex((function (o, a) { if (a !== n) { r = o, i = e[a + 1]; var s = r[0][0], c = i[0][0]; return t >= s && t < c } })); var o = r[0], a = r[2] || r[0], s = i[1] || i[0], c = i[0]; return [o, a, s, c] } function p(e, t) { var n = e[0][0], r = e[3][0], i = r - n, o = t - n; return o / i } function v(e, t) { var n = (0, i["default"])(e, 4), r = (0, i["default"])(n[0], 2), o = r[1], a = (0, i["default"])(n[1], 2), s = a[1], c = (0, i["default"])(n[2], 2), l = c[1], u = (0, i["default"])(n[3], 2), h = u[1], f = Math.pow, d = 1 - t, p = o * f(d, 3), v = 3 * s * t * f(d, 2), m = 3 * l * f(t, 2) * d, g = h * f(t, 3); return 1 - (p + v + m + g) } function m(e, t, n) { var r = "object"; return "number" === typeof e && (r = "number"), e instanceof Array && (r = "array"), "number" === r ? g(e, t, n) : "array" === r ? y(e, t, n) : "object" === r ? b(e, t, n) : n.map((function (e) { return t })) } function g(e, t, n) { var r = t - e; return n.map((function (t) { return e + r * t })) } function y(e, t, n) { var r = t.map((function (t, n) { return "number" === typeof t && t - e[n] })); return n.map((function (n) { return r.map((function (r, i) { return !1 === r ? t[i] : e[i] + r * n })) })) } function b(e, t, n) { var r = Object.keys(t), i = r.map((function (t) { return e[t] })), o = r.map((function (e) { return t[e] })), a = y(i, o, n); return a.map((function (e) { var t = {}; return e.forEach((function (e, n) { return t[r[n]] = e })), t })) } function x(e, t, n) { var r = m(e, t, n), i = function (i) { var a = e[i], s = t[i]; if ("object" !== (0, o["default"])(s)) return "continue"; var c = x(a, s, n); r.forEach((function (e, t) { return e[i] = c[t] })) }; for (var a in t) i(a); return r } function w(e, t) { e && t ? a["default"].set(e, t) : console.error("InjectNewCurve Missing Parameters!") } var _ = c; t["default"] = _ }, "8fb1": function (e, t, n) { "use strict"; n("b2a3"), n("c746") }, 9020: function (e, t) { function n(e) { this.options = e, !e.deferSetup && this.setup() } n.prototype = { constructor: n, setup: function () { this.options.setup && this.options.setup(), this.initialised = !0 }, on: function () { !this.initialised && this.setup(), this.options.match && this.options.match() }, off: function () { this.options.unmatch && this.options.unmatch() }, destroy: function () { this.options.destroy ? this.options.destroy() : this.off() }, equals: function (e) { return this.options === e || this.options.match === e } }, e.exports = n }, 9083: function (e, t, n) { }, "90d7": function (e, t, n) { var r = n("23e7"), i = Math.log, o = Math.LN2; r({ target: "Math", stat: !0 }, { log2: function (e) { return i(e) / o } }) }, "90e3": function (e, t) { var n = 0, r = Math.random(); e.exports = function (e) { return "Symbol(" + String(void 0 === e ? "" : e) + ")_" + (++n + r).toString(36) } }, 9112: function (e, t, n) { var r = n("83ab"), i = n("9bf2"), o = n("5c6c"); e.exports = r ? function (e, t, n) { return i.f(e, t, o(1, n)) } : function (e, t, n) { return e[t] = n, e } }, 9129: function (e, t, n) { var r = n("23e7"); r({ target: "Number", stat: !0 }, { isNaN: function (e) { return e != e } }) }, 9141: function (e, t, n) { var r = n("ef08").document; e.exports = r && r.documentElement }, 9152: function (e, t) {
+        /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
+        t.read = function (e, t, n, r, i) { var o, a, s = 8 * i - r - 1, c = (1 << s) - 1, l = c >> 1, u = -7, h = n ? i - 1 : 0, f = n ? -1 : 1, d = e[t + h]; for (h += f, o = d & (1 << -u) - 1, d >>= -u, u += s; u > 0; o = 256 * o + e[t + h], h += f, u -= 8); for (a = o & (1 << -u) - 1, o >>= -u, u += r; u > 0; a = 256 * a + e[t + h], h += f, u -= 8); if (0 === o) o = 1 - l; else { if (o === c) return a ? NaN : 1 / 0 * (d ? -1 : 1); a += Math.pow(2, r), o -= l } return (d ? -1 : 1) * a * Math.pow(2, o - r) }, t.write = function (e, t, n, r, i, o) { var a, s, c, l = 8 * o - i - 1, u = (1 << l) - 1, h = u >> 1, f = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0, d = r ? 0 : o - 1, p = r ? 1 : -1, v = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0; for (t = Math.abs(t), isNaN(t) || t === 1 / 0 ? (s = isNaN(t) ? 1 : 0, a = u) : (a = Math.floor(Math.log(t) / Math.LN2), t * (c = Math.pow(2, -a)) < 1 && (a--, c *= 2), t += a + h >= 1 ? f / c : f * Math.pow(2, 1 - h), t * c >= 2 && (a++, c /= 2), a + h >= u ? (s = 0, a = u) : a + h >= 1 ? (s = (t * c - 1) * Math.pow(2, i), a += h) : (s = t * Math.pow(2, h - 1) * Math.pow(2, i), a = 0)); i >= 8; e[n + d] = 255 & s, d += p, s /= 256, i -= 8); for (a = a << i | s, l += i; l > 0; e[n + d] = 255 & a, d += p, a /= 256, l -= 8); e[n + d - p] |= 128 * v }
+    }, "91e9": function (e, t) { function n(e, t) { return function (n) { return e(t(n)) } } e.exports = n }, "922d": function (e, t, n) { "use strict"; n("b2a3"), n("8d1e") }, 9263: function (e, t, n) { "use strict"; var r = n("577e"), i = n("ad6d"), o = n("9f7f"), a = n("5692"), s = n("7c73"), c = n("69f3").get, l = n("fce3"), u = n("107c"), h = RegExp.prototype.exec, f = a("native-string-replace", String.prototype.replace), d = h, p = function () { var e = /a/, t = /b*/g; return h.call(e, "a"), h.call(t, "a"), 0 !== e.lastIndex || 0 !== t.lastIndex }(), v = o.UNSUPPORTED_Y || o.BROKEN_CARET, m = void 0 !== /()??/.exec("")[1], g = p || m || v || l || u; g && (d = function (e) { var t, n, o, a, l, u, g, y = this, b = c(y), x = r(e), w = b.raw; if (w) return w.lastIndex = y.lastIndex, t = d.call(w, x), y.lastIndex = w.lastIndex, t; var _ = b.groups, C = v && y.sticky, M = i.call(y), O = y.source, k = 0, S = x; if (C && (M = M.replace("y", ""), -1 === M.indexOf("g") && (M += "g"), S = x.slice(y.lastIndex), y.lastIndex > 0 && (!y.multiline || y.multiline && "\n" !== x.charAt(y.lastIndex - 1)) && (O = "(?: " + O + ")", S = " " + S, k++), n = new RegExp("^(?:" + O + ")", M)), m && (n = new RegExp("^" + O + "$(?!\\s)", M)), p && (o = y.lastIndex), a = h.call(C ? n : y, S), C ? a ? (a.input = a.input.slice(k), a[0] = a[0].slice(k), a.index = y.lastIndex, y.lastIndex += a[0].length) : y.lastIndex = 0 : p && a && (y.lastIndex = y.global ? a.index + a[0].length : o), m && a && a.length > 1 && f.call(a[0], n, (function () { for (l = 1; l < arguments.length - 2; l++)void 0 === arguments[l] && (a[l] = void 0) })), a && _) for (a.groups = u = s(null), l = 0; l < _.length; l++)g = _[l], u[g[0]] = a[g[1]]; return a }), e.exports = d }, "92f0": function (e, t, n) { var r = n("1a14").f, i = n("9c0e"), o = n("cc15")("toStringTag"); e.exports = function (e, t, n) { e && !i(e = n ? e : e.prototype, o) && r(e, o, { configurable: !0, value: t }) } }, "92fa": function (e, t) { var n = /^(attrs|props|on|nativeOn|class|style|hook)$/; function r(e, t) { return function () { e && e.apply(this, arguments), t && t.apply(this, arguments) } } e.exports = function (e) { return e.reduce((function (e, t) { var i, o, a, s, c; for (a in t) if (i = e[a], o = t[a], i && n.test(a)) if ("class" === a && ("string" === typeof i && (c = i, e[a] = i = {}, i[c] = !0), "string" === typeof o && (c = o, t[a] = o = {}, o[c] = !0)), "on" === a || "nativeOn" === a || "hook" === a) for (s in o) i[s] = r(i[s], o[s]); else if (Array.isArray(i)) e[a] = i.concat(o); else if (Array.isArray(o)) e[a] = [i].concat(o); else for (s in o) i[s] = o[s]; else e[a] = t[a]; return e }), {}) } }, "93bf": function (e, t, n) {
+        /*!
+        * screenfull
+        * v5.1.0 - 2020-12-24
+        * (c) Sindre Sorhus; MIT License
+        */
+        (function () { "use strict"; var t = "undefined" !== typeof window && "undefined" !== typeof window.document ? window.document : {}, n = e.exports, r = function () { for (var e, n = [["requestFullscreen", "exitFullscreen", "fullscreenElement", "fullscreenEnabled", "fullscreenchange", "fullscreenerror"], ["webkitRequestFullscreen", "webkitExitFullscreen", "webkitFullscreenElement", "webkitFullscreenEnabled", "webkitfullscreenchange", "webkitfullscreenerror"], ["webkitRequestFullScreen", "webkitCancelFullScreen", "webkitCurrentFullScreenElement", "webkitCancelFullScreen", "webkitfullscreenchange", "webkitfullscreenerror"], ["mozRequestFullScreen", "mozCancelFullScreen", "mozFullScreenElement", "mozFullScreenEnabled", "mozfullscreenchange", "mozfullscreenerror"], ["msRequestFullscreen", "msExitFullscreen", "msFullscreenElement", "msFullscreenEnabled", "MSFullscreenChange", "MSFullscreenError"]], r = 0, i = n.length, o = {}; r < i; r++)if (e = n[r], e && e[1] in t) { for (r = 0; r < e.length; r++)o[n[0][r]] = e[r]; return o } return !1 }(), i = { change: r.fullscreenchange, error: r.fullscreenerror }, o = { request: function (e, n) { return new Promise(function (i, o) { var a = function () { this.off("change", a), i() }.bind(this); this.on("change", a), e = e || t.documentElement; var s = e[r.requestFullscreen](n); s instanceof Promise && s.then(a).catch(o) }.bind(this)) }, exit: function () { return new Promise(function (e, n) { if (this.isFullscreen) { var i = function () { this.off("change", i), e() }.bind(this); this.on("change", i); var o = t[r.exitFullscreen](); o instanceof Promise && o.then(i).catch(n) } else e() }.bind(this)) }, toggle: function (e, t) { return this.isFullscreen ? this.exit() : this.request(e, t) }, onchange: function (e) { this.on("change", e) }, onerror: function (e) { this.on("error", e) }, on: function (e, n) { var r = i[e]; r && t.addEventListener(r, n, !1) }, off: function (e, n) { var r = i[e]; r && t.removeEventListener(r, n, !1) }, raw: r }; r ? (Object.defineProperties(o, { isFullscreen: { get: function () { return Boolean(t[r.fullscreenElement]) } }, element: { enumerable: !0, get: function () { return t[r.fullscreenElement] } }, isEnabled: { enumerable: !0, get: function () { return Boolean(t[r.fullscreenEnabled]) } } }), n ? e.exports = o : window.screenfull = o) : n ? e.exports = { isEnabled: !1 } : window.screenfull = { isEnabled: !1 } })()
+    }, "93ed": function (e, t, n) { var r = n("4245"); function i(e) { var t = r(this, e)["delete"](e); return this.size -= t ? 1 : 0, t } e.exports = i }, "93ff": function (e, t, n) { e.exports = { default: n("7b9e"), __esModule: !0 } }, "944a": function (e, t, n) { var r = n("746f"); r("toStringTag") }, "948e": function (e, t, n) { }, "94ca": function (e, t, n) { var r = n("d039"), i = /#|\.prototype\./, o = function (e, t) { var n = s[a(e)]; return n == l || n != c && ("function" == typeof t ? r(t) : !!t) }, a = o.normalize = function (e) { return String(e).replace(i, ".").toLowerCase() }, s = o.data = {}, c = o.NATIVE = "N", l = o.POLYFILL = "P"; e.exports = o }, "94eb": function (e, t, n) { "use strict"; var r = n("18ce"), i = function () { }, o = function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.beforeEnter, o = t.enter, a = t.afterEnter, s = t.leave, c = t.afterLeave, l = t.appear, u = void 0 === l || l, h = t.tag, f = t.nativeOn, d = { props: { appear: u, css: !1 }, on: { beforeEnter: n || i, enter: o || function (t, n) { Object(r["a"])(t, e + "-enter", n) }, afterEnter: a || i, leave: s || function (t, n) { Object(r["a"])(t, e + "-leave", n) }, afterLeave: c || i }, nativeOn: f }; return h && (d.tag = h), d }; t["a"] = o }, "950a": function (e, t, n) { var r = n("30c9"); function i(e, t) { return function (n, i) { if (null == n) return n; if (!r(n)) return e(n, i); var o = n.length, a = t ? o : -1, s = Object(n); while (t ? a-- : ++a < o) if (!1 === i(s[a], a, s)) break; return n } } e.exports = i }, 9520: function (e, t, n) { var r = n("3729"), i = n("1a8c"), o = "[object AsyncFunction]", a = "[object Function]", s = "[object GeneratorFunction]", c = "[object Proxy]"; function l(e) { if (!i(e)) return !1; var t = r(e); return t == a || t == s || t == o || t == c } e.exports = l }, 9523: function (e, t) { function n(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } e.exports = n, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, 9571: function (e, t, n) { "use strict"; var r = n("6042"), i = n.n(r), o = n("8e8e"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("4d26"), u = n.n(l), h = n("0464"), f = n("92fa"), d = n.n(f), p = n("1098"), v = n.n(p), m = n("8bbf"), g = n.n(m), y = n("46cf"), b = n.n(y), x = n("b488"), w = n("daa3"), _ = n("7b05"), C = n("6f7a"), M = n("4d91"), O = { width: M["a"].any, height: M["a"].any, defaultOpen: M["a"].bool, firstEnter: M["a"].bool, open: M["a"].bool, prefixCls: M["a"].string, placement: M["a"].string, level: M["a"].oneOfType([M["a"].string, M["a"].array]), levelMove: M["a"].oneOfType([M["a"].number, M["a"].func, M["a"].array]), ease: M["a"].string, duration: M["a"].string, handler: M["a"].any, showMask: M["a"].bool, maskStyle: M["a"].object, className: M["a"].string, wrapStyle: M["a"].object, maskClosable: M["a"].bool, afterVisibleChange: M["a"].func, keyboard: M["a"].bool }, k = c()({}, O, { wrapperClassName: M["a"].string, forceRender: M["a"].bool, getContainer: M["a"].oneOfType([M["a"].string, M["a"].func, M["a"].object, M["a"].bool]) }), S = (c()({}, O, { getContainer: M["a"].func, getOpenCount: M["a"].func, switchScrollingEffect: M["a"].func }), n("18a7")); function T(e) { return Array.isArray(e) ? e : [e] } var A = { transition: "transitionend", WebkitTransition: "webkitTransitionEnd", MozTransition: "transitionend", OTransition: "oTransitionEnd otransitionend" }, L = Object.keys(A).filter((function (e) { if ("undefined" === typeof document) return !1; var t = document.getElementsByTagName("html")[0]; return e in (t ? t.style : {}) }))[0], j = A[L]; function z(e, t, n, r) { e.addEventListener ? e.addEventListener(t, n, r) : e.attachEvent && e.attachEvent("on" + t, n) } function E(e, t, n, r) { e.removeEventListener ? e.removeEventListener(t, n, r) : e.attachEvent && e.detachEvent("on" + t, n) } function P(e, t) { var n = void 0; return n = "function" === typeof e ? e(t) : e, Array.isArray(n) ? 2 === n.length ? n : [n[0], n[1]] : [n] } var D = function (e) { return !isNaN(parseFloat(e)) && isFinite(e) }, H = ("undefined" !== typeof window && window.document && window.document.createElement, n("8e60")); function V() { } var I = {}, N = !("undefined" !== typeof window && window.document && window.document.createElement); g.a.use(b.a, { name: "ant-ref" }); var R = { mixins: [x["a"]], props: Object(w["t"])(k, { prefixCls: "drawer", placement: "left", getContainer: "body", level: "all", duration: ".3s", ease: "cubic-bezier(0.78, 0.14, 0.15, 0.86)", firstEnter: !1, showMask: !0, handler: !0, maskStyle: {}, wrapperClassName: "", className: "" }), data: function () { this.levelDom = [], this.contentDom = null, this.maskDom = null, this.handlerdom = null, this.mousePos = null, this.sFirstEnter = this.firstEnter, this.timeout = null, this.children = null, this.drawerId = Number((Date.now() + Math.random()).toString().replace(".", Math.round(9 * Math.random()))).toString(16); var e = void 0 !== this.open ? this.open : !!this.defaultOpen; return I[this.drawerId] = e, this.orignalOpen = this.open, this.preProps = c()({}, this.$props), { sOpen: e } }, mounted: function () { var e = this; this.$nextTick((function () { if (!N) { var t = !1; window.addEventListener("test", null, Object.defineProperty({}, "passive", { get: function () { return t = !0, null } })), e.passive = !!t && { passive: !1 } } var n = e.getOpen(); (e.handler || n || e.sFirstEnter) && (e.getDefault(e.$props), n && (e.isOpenChange = !0), e.$forceUpdate()) })) }, watch: { open: function (e) { function t(t) { return e.apply(this, arguments) } return t.toString = function () { return e.toString() }, t }((function (e) { void 0 !== e && e !== this.preProps.open && (this.isOpenChange = !0, this.container || this.getDefault(this.$props), this.setState({ sOpen: open })), this.preProps.open = e })), placement: function (e) { e !== this.preProps.placement && (this.contentDom = null), this.preProps.placement = e }, level: function (e) { this.preProps.level !== e && this.getParentAndLevelDom(this.$props), this.preProps.level = e } }, updated: function () { var e = this; this.$nextTick((function () { !e.sFirstEnter && e.container && (e.$forceUpdate(), e.sFirstEnter = !0) })) }, beforeDestroy: function () { delete I[this.drawerId], delete this.isOpenChange, this.container && (this.sOpen && this.setLevelDomTransform(!1, !0), document.body.style.overflow = ""), this.sFirstEnter = !1, clearTimeout(this.timeout) }, methods: { onKeyDown: function (e) { e.keyCode === S["a"].ESC && (e.stopPropagation(), this.$emit("close", e)) }, onMaskTouchEnd: function (e) { this.$emit("close", e), this.onTouchEnd(e, !0) }, onIconTouchEnd: function (e) { this.$emit("handleClick", e), this.onTouchEnd(e) }, onTouchEnd: function (e, t) { if (void 0 === this.open) { var n = t || this.sOpen; this.isOpenChange = !0, this.setState({ sOpen: !n }) } }, onWrapperTransitionEnd: function (e) { if (e.target === this.contentWrapper && e.propertyName.match(/transform$/)) { var t = this.getOpen(); this.dom.style.transition = "", !t && this.getCurrentDrawerSome() && (document.body.style.overflowX = "", this.maskDom && (this.maskDom.style.left = "", this.maskDom.style.width = "")), this.afterVisibleChange && this.afterVisibleChange(!!t) } }, getDefault: function (e) { this.getParentAndLevelDom(e), (e.getContainer || e.parent) && (this.container = this.defaultGetContainer()) }, getCurrentDrawerSome: function () { return !Object.keys(I).some((function (e) { return I[e] })) }, getSelfContainer: function () { return this.container }, getParentAndLevelDom: function (e) { var t = this; if (!N) { var n = e.level, r = e.getContainer; if (this.levelDom = [], r) { if ("string" === typeof r) { var i = document.querySelectorAll(r)[0]; this.parent = i } "function" === typeof r && (this.parent = r()), "object" === ("undefined" === typeof r ? "undefined" : v()(r)) && r instanceof window.HTMLElement && (this.parent = r) } if (!r && this.container && (this.parent = this.container.parentNode), "all" === n) { var o = Array.prototype.slice.call(this.parent.children); o.forEach((function (e) { "SCRIPT" !== e.nodeName && "STYLE" !== e.nodeName && "LINK" !== e.nodeName && e !== t.container && t.levelDom.push(e) })) } else n && T(n).forEach((function (e) { document.querySelectorAll(e).forEach((function (e) { t.levelDom.push(e) })) })) } }, setLevelDomTransform: function (e, t, n, r) { var i = this, o = this.$props, a = o.placement, s = o.levelMove, c = o.duration, l = o.ease, u = o.getContainer; if (!N && (this.levelDom.forEach((function (o) { if (i.isOpenChange || t) { o.style.transition = "transform " + c + " " + l, z(o, j, i.trnasitionEnd); var u = e ? r : 0; if (s) { var h = P(s, { target: o, open: e }); u = e ? h[0] : h[1] || 0 } var f = "number" === typeof u ? u + "px" : u, d = "left" === a || "top" === a ? f : "-" + f; o.style.transform = u ? n + "(" + d + ")" : "", o.style.msTransform = u ? n + "(" + d + ")" : "" } })), "body" === u)) { var h = ["touchstart"], f = [document.body, this.maskDom, this.handlerdom, this.contentDom], d = document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth ? Object(C["a"])(1) : 0, p = "width " + c + " " + l, v = "transform " + c + " " + l; if (e && "hidden" !== document.body.style.overflow) { if (document.body.style.overflow = "hidden", d) { switch (document.body.style.position = "relative", document.body.style.width = "calc(100% - " + d + "px)", this.dom.style.transition = "none", a) { case "right": this.dom.style.transform = "translateX(-" + d + "px)", this.dom.style.msTransform = "translateX(-" + d + "px)"; break; case "top": case "bottom": this.dom.style.width = "calc(100% - " + d + "px)", this.dom.style.transform = "translateZ(0)"; break; default: break }clearTimeout(this.timeout), this.timeout = setTimeout((function () { i.dom.style.transition = v + "," + p, i.dom.style.width = "", i.dom.style.transform = "", i.dom.style.msTransform = "" })) } f.forEach((function (e, t) { e && z(e, h[t] || "touchmove", t ? i.removeMoveHandler : i.removeStartHandler, i.passive) })) } else if (this.getCurrentDrawerSome()) { if (document.body.style.overflow = "", (this.isOpenChange || t) && d) { document.body.style.position = "", document.body.style.width = "", L && (document.body.style.overflowX = "hidden"), this.dom.style.transition = "none"; var m = void 0; switch (a) { case "right": this.dom.style.transform = "translateX(" + d + "px)", this.dom.style.msTransform = "translateX(" + d + "px)", this.dom.style.width = "100%", p = "width 0s " + l + " " + c, this.maskDom && (this.maskDom.style.left = "-" + d + "px", this.maskDom.style.width = "calc(100% + " + d + "px)"); break; case "top": case "bottom": this.dom.style.width = "calc(100% + " + d + "px)", this.dom.style.height = "100%", this.dom.style.transform = "translateZ(0)", m = "height 0s " + l + " " + c; break; default: break }clearTimeout(this.timeout), this.timeout = setTimeout((function () { i.dom.style.transition = v + "," + (m ? m + "," : "") + p, i.dom.style.transform = "", i.dom.style.msTransform = "", i.dom.style.width = "", i.dom.style.height = "" })) } f.forEach((function (e, t) { e && E(e, h[t] || "touchmove", t ? i.removeMoveHandler : i.removeStartHandler, i.passive) })) } } var g = Object(w["k"])(this), y = g.change; y && this.isOpenChange && this.sFirstEnter && (y(e), this.isOpenChange = !1) }, getChildToRender: function (e) { var t, n = this, r = this.$createElement, o = this.$props, a = o.className, s = o.prefixCls, c = o.placement, l = o.handler, h = o.showMask, f = o.maskStyle, p = o.width, v = o.height, m = o.wrapStyle, g = o.keyboard, y = o.maskClosable, b = this.$slots["default"], x = u()(s, (t = {}, i()(t, s + "-" + c, !0), i()(t, s + "-open", e), i()(t, a, !!a), i()(t, "no-mask", !h), t)), C = this.isOpenChange, M = "left" === c || "right" === c, O = "translate" + (M ? "X" : "Y"), k = "left" === c || "top" === c ? "-100%" : "100%", S = e ? "" : O + "(" + k + ")"; if (void 0 === C || C) { var T = this.contentDom ? this.contentDom.getBoundingClientRect()[M ? "width" : "height"] : 0, A = (M ? p : v) || T; this.setLevelDomTransform(e, !1, O, A) } var L = void 0; if (!1 !== l) { var j = r("div", { class: "drawer-handle" }, [r("i", { class: "drawer-handle-icon" })]), z = this.handler, E = z && z[0] || j, P = Object(w["i"])(E), H = P.click; L = Object(_["a"])(E, { on: { click: function (e) { H && H(), n.onIconTouchEnd(e) } }, directives: [{ name: "ant-ref", value: function (e) { n.handlerdom = e } }] }) } var I = { class: x, directives: [{ name: "ant-ref", value: function (e) { n.dom = e } }], on: { transitionend: this.onWrapperTransitionEnd, keydown: e && g ? this.onKeyDown : V }, style: m }, N = [{ name: "ant-ref", value: function (e) { n.maskDom = e } }], R = [{ name: "ant-ref", value: function (e) { n.contentWrapper = e } }], F = [{ name: "ant-ref", value: function (e) { n.contentDom = e } }]; return r("div", d()([I, { attrs: { tabIndex: -1 } }]), [h && r("div", d()([{ key: e, class: s + "-mask", on: { click: y ? this.onMaskTouchEnd : V }, style: f }, { directives: N }])), r("div", d()([{ class: s + "-content-wrapper", style: { transform: S, msTransform: S, width: D(p) ? p + "px" : p, height: D(v) ? v + "px" : v } }, { directives: R }]), [r("div", d()([{ class: s + "-content" }, { directives: F }, { on: { touchstart: e ? this.removeStartHandler : V, touchmove: e ? this.removeMoveHandler : V } }]), [b]), L])]) }, getOpen: function () { return void 0 !== this.open ? this.open : this.sOpen }, getTouchParentScroll: function (e, t, n, r) { if (!t || t === document) return !1; if (t === e.parentNode) return !0; var i = Math.max(Math.abs(n), Math.abs(r)) === Math.abs(r), o = Math.max(Math.abs(n), Math.abs(r)) === Math.abs(n), a = t.scrollHeight - t.clientHeight, s = t.scrollWidth - t.clientWidth, c = t.scrollTop, l = t.scrollLeft; t.scrollTo && t.scrollTo(t.scrollLeft + 1, t.scrollTop + 1); var u = t.scrollTop, h = t.scrollLeft; return t.scrollTo && t.scrollTo(t.scrollLeft - 1, t.scrollTop - 1), !((!i || a && u - c && (!a || !(t.scrollTop >= a && r < 0 || t.scrollTop <= 0 && r > 0))) && (!o || s && h - l && (!s || !(t.scrollLeft >= s && n < 0 || t.scrollLeft <= 0 && n > 0)))) && this.getTouchParentScroll(e, t.parentNode, n, r) }, removeStartHandler: function (e) { e.touches.length > 1 || (this.startPos = { x: e.touches[0].clientX, y: e.touches[0].clientY }) }, removeMoveHandler: function (e) { if (!(e.changedTouches.length > 1)) { var t = e.currentTarget, n = e.changedTouches[0].clientX - this.startPos.x, r = e.changedTouches[0].clientY - this.startPos.y; (t === this.maskDom || t === this.handlerdom || t === this.contentDom && this.getTouchParentScroll(t, e.target, n, r)) && e.preventDefault() } }, trnasitionEnd: function (e) { E(e.target, j, this.trnasitionEnd), e.target.style.transition = "" }, defaultGetContainer: function () { if (N) return null; var e = document.createElement("div"); return this.parent.appendChild(e), this.wrapperClassName && (e.className = this.wrapperClassName), e } }, render: function () { var e = this, t = arguments[0], n = this.$props, r = n.getContainer, i = n.wrapperClassName, o = n.handler, a = n.forceRender, s = this.getOpen(), c = null; I[this.drawerId] = s ? this.container : s; var l = this.getChildToRender(!!this.sFirstEnter && s); if (!r) { var u = [{ name: "ant-ref", value: function (t) { e.container = t } }]; return t("div", d()([{ class: i }, { directives: u }]), [l]) } if (!this.container || !s && !this.sFirstEnter) return null; var h = !!o || a; return (h || s || this.dom) && (c = t(H["a"], { attrs: { getContainer: this.getSelfContainer, children: l } })), c } }, F = R, Y = F, $ = n("0c63"), B = n("9cba"), W = n("db14"), q = { name: "ADrawer", props: { closable: M["a"].bool.def(!0), destroyOnClose: M["a"].bool, getContainer: M["a"].any, maskClosable: M["a"].bool.def(!0), mask: M["a"].bool.def(!0), maskStyle: M["a"].object, wrapStyle: M["a"].object, bodyStyle: M["a"].object, headerStyle: M["a"].object, drawerStyle: M["a"].object, title: M["a"].any, visible: M["a"].bool, width: M["a"].oneOfType([M["a"].string, M["a"].number]).def(256), height: M["a"].oneOfType([M["a"].string, M["a"].number]).def(256), zIndex: M["a"].number, prefixCls: M["a"].string, placement: M["a"].oneOf(["top", "right", "bottom", "left"]).def("right"), level: M["a"].any.def(null), wrapClassName: M["a"].string, handle: M["a"].any, afterVisibleChange: M["a"].func, keyboard: M["a"].bool.def(!0) }, mixins: [x["a"]], data: function () { return this.destroyClose = !1, this.preVisible = this.$props.visible, { _push: !1 } }, inject: { parentDrawer: { default: function () { return null } }, configProvider: { default: function () { return B["a"] } } }, provide: function () { return { parentDrawer: this } }, mounted: function () { var e = this.visible; e && this.parentDrawer && this.parentDrawer.push() }, updated: function () { var e = this; this.$nextTick((function () { e.preVisible !== e.visible && e.parentDrawer && (e.visible ? e.parentDrawer.push() : e.parentDrawer.pull()), e.preVisible = e.visible })) }, beforeDestroy: function () { this.parentDrawer && this.parentDrawer.pull() }, methods: { close: function (e) { this.$emit("close", e) }, push: function () { this.setState({ _push: !0 }) }, pull: function () { this.setState({ _push: !1 }) }, onDestroyTransitionEnd: function () { var e = this.getDestroyOnClose(); e && (this.visible || (this.destroyClose = !0, this.$forceUpdate())) }, getDestroyOnClose: function () { return this.destroyOnClose && !this.visible }, getPushTransform: function (e) { return "left" === e || "right" === e ? "translateX(" + ("left" === e ? 180 : -180) + "px)" : "top" === e || "bottom" === e ? "translateY(" + ("top" === e ? 180 : -180) + "px)" : void 0 }, getRcDrawerStyle: function () { var e = this.$props, t = e.zIndex, n = e.placement, r = e.wrapStyle, i = this.$data._push; return c()({ zIndex: t, transform: i ? this.getPushTransform(n) : void 0 }, r) }, renderHeader: function (e) { var t = this.$createElement, n = this.$props, r = n.closable, i = n.headerStyle, o = Object(w["g"])(this, "title"); if (!o && !r) return null; var a = o ? e + "-header" : e + "-header-no-title"; return t("div", { class: a, style: i }, [o && t("div", { class: e + "-title" }, [o]), r ? this.renderCloseIcon(e) : null]) }, renderCloseIcon: function (e) { var t = this.$createElement, n = this.closable; return n && t("button", { key: "closer", on: { click: this.close }, attrs: { "aria-label": "Close" }, class: e + "-close" }, [t($["a"], { attrs: { type: "close" } })]) }, renderBody: function (e) { var t = this.$createElement; if (this.destroyClose && !this.visible) return null; this.destroyClose = !1; var n = this.$props, r = n.bodyStyle, i = n.drawerStyle, o = {}, a = this.getDestroyOnClose(); return a && (o.opacity = 0, o.transition = "opacity .3s"), t("div", { class: e + "-wrapper-body", style: c()({}, o, i), on: { transitionend: this.onDestroyTransitionEnd } }, [this.renderHeader(e), t("div", { key: "body", class: e + "-body", style: r }, [this.$slots["default"]])]) } }, render: function () { var e, t = arguments[0], n = Object(w["l"])(this), r = n.prefixCls, o = n.width, s = n.height, l = n.visible, f = n.placement, d = n.wrapClassName, p = n.mask, v = a()(n, ["prefixCls", "width", "height", "visible", "placement", "wrapClassName", "mask"]), m = p ? "" : "no-mask", g = {}; "left" === f || "right" === f ? g.width = "number" === typeof o ? o + "px" : o : g.height = "number" === typeof s ? s + "px" : s; var y = Object(w["g"])(this, "handle") || !1, b = this.configProvider.getPrefixCls, x = b("drawer", r), _ = { props: c()({}, Object(h["a"])(v, ["closable", "destroyOnClose", "drawerStyle", "headerStyle", "bodyStyle", "title", "push", "visible", "getPopupContainer", "rootPrefixCls", "getPrefixCls", "renderEmpty", "csp", "pageHeader", "autoInsertSpaceInButton"]), { handler: y }, g, { prefixCls: x, open: l, showMask: p, placement: f, className: u()((e = {}, i()(e, d, !!d), i()(e, m, !!m), e)), wrapStyle: this.getRcDrawerStyle() }), on: c()({}, Object(w["k"])(this)) }; return t(Y, _, [this.renderBody(x)]) }, install: function (e) { e.use(W["a"]), e.component(q.name, q) } }; t["a"] = q }, 9638: function (e, t) { function n(e, t) { return e === t || e !== e && t !== t } e.exports = n }, "966f": function (e, t, n) { var r = n("7e64"), i = n("c05f"), o = 1, a = 2; function s(e, t, n, s) { var c = n.length, l = c, u = !s; if (null == e) return !l; e = Object(e); while (c--) { var h = n[c]; if (u && h[2] ? h[1] !== e[h[0]] : !(h[0] in e)) return !1 } while (++c < l) { h = n[c]; var f = h[0], d = e[f], p = h[1]; if (u && h[2]) { if (void 0 === d && !(f in e)) return !1 } else { var v = new r; if (s) var m = s(d, p, f, e, t, v); if (!(void 0 === m ? i(p, d, o | a, s, v) : m)) return !1 } } return !0 } e.exports = s }, "96cf": function (e, t, n) { (function (t) { !function (t) { "use strict"; var n, r = Object.prototype, i = r.hasOwnProperty, o = "function" === typeof Symbol ? Symbol : {}, a = o.iterator || "@@iterator", s = o.asyncIterator || "@@asyncIterator", c = o.toStringTag || "@@toStringTag", l = "object" === typeof e, u = t.regeneratorRuntime; if (u) l && (e.exports = u); else { u = t.regeneratorRuntime = l ? e.exports : {}, u.wrap = x; var h = "suspendedStart", f = "suspendedYield", d = "executing", p = "completed", v = {}, m = {}; m[a] = function () { return this }; var g = Object.getPrototypeOf, y = g && g(g(z([]))); y && y !== r && i.call(y, a) && (m = y); var b = M.prototype = _.prototype = Object.create(m); C.prototype = b.constructor = M, M.constructor = C, M[c] = C.displayName = "GeneratorFunction", u.isGeneratorFunction = function (e) { var t = "function" === typeof e && e.constructor; return !!t && (t === C || "GeneratorFunction" === (t.displayName || t.name)) }, u.mark = function (e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, M) : (e.__proto__ = M, c in e || (e[c] = "GeneratorFunction")), e.prototype = Object.create(b), e }, u.awrap = function (e) { return { __await: e } }, O(k.prototype), k.prototype[s] = function () { return this }, u.AsyncIterator = k, u.async = function (e, t, n, r) { var i = new k(x(e, t, n, r)); return u.isGeneratorFunction(t) ? i : i.next().then((function (e) { return e.done ? e.value : i.next() })) }, O(b), b[c] = "Generator", b[a] = function () { return this }, b.toString = function () { return "[object Generator]" }, u.keys = function (e) { var t = []; for (var n in e) t.push(n); return t.reverse(), function n() { while (t.length) { var r = t.pop(); if (r in e) return n.value = r, n.done = !1, n } return n.done = !0, n } }, u.values = z, j.prototype = { constructor: j, reset: function (e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = n, this.done = !1, this.delegate = null, this.method = "next", this.arg = n, this.tryEntries.forEach(L), !e) for (var t in this) "t" === t.charAt(0) && i.call(this, t) && !isNaN(+t.slice(1)) && (this[t] = n) }, stop: function () { this.done = !0; var e = this.tryEntries[0], t = e.completion; if ("throw" === t.type) throw t.arg; return this.rval }, dispatchException: function (e) { if (this.done) throw e; var t = this; function r(r, i) { return s.type = "throw", s.arg = e, t.next = r, i && (t.method = "next", t.arg = n), !!i } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var a = this.tryEntries[o], s = a.completion; if ("root" === a.tryLoc) return r("end"); if (a.tryLoc <= this.prev) { var c = i.call(a, "catchLoc"), l = i.call(a, "finallyLoc"); if (c && l) { if (this.prev < a.catchLoc) return r(a.catchLoc, !0); if (this.prev < a.finallyLoc) return r(a.finallyLoc) } else if (c) { if (this.prev < a.catchLoc) return r(a.catchLoc, !0) } else { if (!l) throw new Error("try statement without catch or finally"); if (this.prev < a.finallyLoc) return r(a.finallyLoc) } } } }, abrupt: function (e, t) { for (var n = this.tryEntries.length - 1; n >= 0; --n) { var r = this.tryEntries[n]; if (r.tryLoc <= this.prev && i.call(r, "finallyLoc") && this.prev < r.finallyLoc) { var o = r; break } } o && ("break" === e || "continue" === e) && o.tryLoc <= t && t <= o.finallyLoc && (o = null); var a = o ? o.completion : {}; return a.type = e, a.arg = t, o ? (this.method = "next", this.next = o.finallyLoc, v) : this.complete(a) }, complete: function (e, t) { if ("throw" === e.type) throw e.arg; return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && t && (this.next = t), v }, finish: function (e) { for (var t = this.tryEntries.length - 1; t >= 0; --t) { var n = this.tryEntries[t]; if (n.finallyLoc === e) return this.complete(n.completion, n.afterLoc), L(n), v } }, catch: function (e) { for (var t = this.tryEntries.length - 1; t >= 0; --t) { var n = this.tryEntries[t]; if (n.tryLoc === e) { var r = n.completion; if ("throw" === r.type) { var i = r.arg; L(n) } return i } } throw new Error("illegal catch attempt") }, delegateYield: function (e, t, r) { return this.delegate = { iterator: z(e), resultName: t, nextLoc: r }, "next" === this.method && (this.arg = n), v } } } function x(e, t, n, r) { var i = t && t.prototype instanceof _ ? t : _, o = Object.create(i.prototype), a = new j(r || []); return o._invoke = S(e, n, a), o } function w(e, t, n) { try { return { type: "normal", arg: e.call(t, n) } } catch (r) { return { type: "throw", arg: r } } } function _() { } function C() { } function M() { } function O(e) { ["next", "throw", "return"].forEach((function (t) { e[t] = function (e) { return this._invoke(t, e) } })) } function k(e) { function n(t, r, o, a) { var s = w(e[t], e, r); if ("throw" !== s.type) { var c = s.arg, l = c.value; return l && "object" === typeof l && i.call(l, "__await") ? Promise.resolve(l.__await).then((function (e) { n("next", e, o, a) }), (function (e) { n("throw", e, o, a) })) : Promise.resolve(l).then((function (e) { c.value = e, o(c) }), a) } a(s.arg) } var r; function o(e, t) { function i() { return new Promise((function (r, i) { n(e, t, r, i) })) } return r = r ? r.then(i, i) : i() } "object" === typeof t.process && t.process.domain && (n = t.process.domain.bind(n)), this._invoke = o } function S(e, t, n) { var r = h; return function (i, o) { if (r === d) throw new Error("Generator is already running"); if (r === p) { if ("throw" === i) throw o; return E() } n.method = i, n.arg = o; while (1) { var a = n.delegate; if (a) { var s = T(a, n); if (s) { if (s === v) continue; return s } } if ("next" === n.method) n.sent = n._sent = n.arg; else if ("throw" === n.method) { if (r === h) throw r = p, n.arg; n.dispatchException(n.arg) } else "return" === n.method && n.abrupt("return", n.arg); r = d; var c = w(e, t, n); if ("normal" === c.type) { if (r = n.done ? p : f, c.arg === v) continue; return { value: c.arg, done: n.done } } "throw" === c.type && (r = p, n.method = "throw", n.arg = c.arg) } } } function T(e, t) { var r = e.iterator[t.method]; if (r === n) { if (t.delegate = null, "throw" === t.method) { if (e.iterator.return && (t.method = "return", t.arg = n, T(e, t), "throw" === t.method)) return v; t.method = "throw", t.arg = new TypeError("The iterator does not provide a 'throw' method") } return v } var i = w(r, e.iterator, t.arg); if ("throw" === i.type) return t.method = "throw", t.arg = i.arg, t.delegate = null, v; var o = i.arg; return o ? o.done ? (t[e.resultName] = o.value, t.next = e.nextLoc, "return" !== t.method && (t.method = "next", t.arg = n), t.delegate = null, v) : o : (t.method = "throw", t.arg = new TypeError("iterator result is not an object"), t.delegate = null, v) } function A(e) { var t = { tryLoc: e[0] }; 1 in e && (t.catchLoc = e[1]), 2 in e && (t.finallyLoc = e[2], t.afterLoc = e[3]), this.tryEntries.push(t) } function L(e) { var t = e.completion || {}; t.type = "normal", delete t.arg, e.completion = t } function j(e) { this.tryEntries = [{ tryLoc: "root" }], e.forEach(A, this), this.reset(!0) } function z(e) { if (e) { var t = e[a]; if (t) return t.call(e); if ("function" === typeof e.next) return e; if (!isNaN(e.length)) { var r = -1, o = function t() { while (++r < e.length) if (i.call(e, r)) return t.value = e[r], t.done = !1, t; return t.value = n, t.done = !0, t }; return o.next = o } } return { next: E } } function E() { return { value: n, done: !0 } } }("object" === typeof t ? t : "object" === typeof window ? window : "object" === typeof self ? self : this) }).call(this, n("c8ba")) }, "96f3": function (e, t) { var n = Object.prototype, r = n.hasOwnProperty; function i(e, t) { return null != e && r.call(e, t) } e.exports = i }, "970b": function (e, t) { function n(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } e.exports = n, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, 9742: function (e, t) { e.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",") }, 9767: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("857a"), o = n("af03"); r({ target: "String", proto: !0, forced: o("fontcolor") }, { fontcolor: function (e) { return i(this, "font", "color", e) } }) }, "979d": function (e, t, n) { }, "97e1": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return s })), n.d(t, "b", (function () { return c })); var r = n("41b2"), i = n.n(r), o = n("7320"), a = i()({}, o["a"].Modal); function s(e) { a = e ? i()({}, a, e) : i()({}, o["a"].Modal) } function c() { return a } }, 9839: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return Ae })), n.d(t, "b", (function () { return ze })); var r = n("92fa"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("8e8e"), c = n.n(s), l = n("41b2"), u = n.n(l), h = n("6a21"), f = n("0464"), d = n("4d91"), p = { props: { value: d["a"].oneOfType([d["a"].string, d["a"].number]), label: d["a"].oneOfType([d["a"].string, d["a"].number]), disabled: d["a"].bool, title: d["a"].oneOfType([d["a"].string, d["a"].number]) }, isSelectOption: !0 }, v = { props: { value: d["a"].oneOfType([d["a"].string, d["a"].number]), label: d["a"].oneOfType([d["a"].string, d["a"].number]) }, isSelectOptGroup: !0 }, m = n("18a7"), g = n("4d26"), y = n.n(g), b = n("3c55"), x = n.n(b), w = n("528d"), _ = n("4a15"), C = n("d96e"), M = n.n(C), O = n("8bbf"), k = n.n(O), S = n("daa3"), T = n("94eb"), A = n("7b05"), L = n("b488"), j = n("58c1"), z = n("46cf"), E = n.n(z), P = n("c449"), D = n.n(P), H = n("8496"), V = n("da30"), I = n("ec44"), N = n("1098"), R = n.n(N); function F(e) { return "string" === typeof e ? e.trim() : "" } function Y(e) { if (!e) return null; var t = Object(S["m"])(e); if ("value" in t) return t.value; if (void 0 !== Object(S["j"])(e)) return Object(S["j"])(e); if (Object(S["o"])(e).isSelectOptGroup) { var n = Object(S["g"])(e, "label"); if (n) return n } throw new Error("Need at least a key or a value or a label (only for OptGroup) for " + e) } function $(e, t) { if ("value" === t) return Y(e); if ("children" === t) { var n = e.$slots ? Object(A["b"])(e.$slots["default"], !0) : Object(A["b"])(e.componentOptions.children, !0); return 1 !== n.length || n[0].tag ? n : n[0].text } var r = Object(S["m"])(e); return t in r ? r[t] : Object(S["e"])(e)[t] } function B(e) { return e.multiple } function W(e) { return e.combobox } function q(e) { return e.multiple || e.tags } function U(e) { return q(e) || W(e) } function K(e) { return !U(e) } function G(e) { var t = e; return void 0 === e ? t = [] : Array.isArray(e) || (t = [e]), t } function X(e) { return ("undefined" === typeof e ? "undefined" : R()(e)) + "-" + e } function J(e) { e.preventDefault() } function Q(e, t) { var n = -1; if (e) for (var r = 0; r < e.length; r++)if (e[r] === t) { n = r; break } return n } function Z(e, t) { var n = void 0; if (e = G(e), e) for (var r = 0; r < e.length; r++)if (e[r].key === t) { n = e[r].label; break } return n } function ee(e, t) { if (null === t || void 0 === t) return []; var n = []; return e.forEach((function (e) { if (Object(S["o"])(e).isMenuItemGroup) n = n.concat(ee(e.componentOptions.children, t)); else { var r = Y(e), i = e.key; -1 !== Q(t, r) && void 0 !== i && n.push(i) } })), n } var te = { userSelect: "none", WebkitUserSelect: "none" }, ne = { unselectable: "on" }; function re(e) { for (var t = 0; t < e.length; t++) { var n = e[t], r = Object(S["m"])(n); if (Object(S["o"])(n).isMenuItemGroup) { var i = re(n.componentOptions.children); if (i) return i } else if (!r.disabled) return n } return null } function ie(e, t) { for (var n = 0; n < t.length; ++n)if (e.lastIndexOf(t[n]) > 0) return !0; return !1 } function oe(e, t) { var n = new RegExp("[" + t.join() + "]"); return e.split(n).filter((function (e) { return e })) } function ae(e, t) { var n = Object(S["m"])(t); if (n.disabled) return !1; var r = $(t, this.optionFilterProp); return r = r.length && r[0].text ? r[0].text : String(r), r.toLowerCase().indexOf(e.toLowerCase()) > -1 } function se(e, t) { if (!K(t) && !B(t) && "string" !== typeof e) throw new Error("Invalid `value` of type `" + ("undefined" === typeof e ? "undefined" : R()(e)) + "` supplied to Option, expected `string` when `tags/combobox` is `true`.") } function ce(e, t) { return function (n) { e[t] = n } } function le() { var e = (new Date).getTime(), t = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function (t) { var n = (e + 16 * Math.random()) % 16 | 0; return e = Math.floor(e / 16), ("x" === t ? n : 7 & n | 8).toString(16) })); return t } var ue = { name: "DropdownMenu", mixins: [L["a"]], props: { ariaId: d["a"].string, defaultActiveFirstOption: d["a"].bool, value: d["a"].any, dropdownMenuStyle: d["a"].object, multiple: d["a"].bool, prefixCls: d["a"].string, menuItems: d["a"].any, inputValue: d["a"].string, visible: d["a"].bool, backfillValue: d["a"].any, firstActiveValue: d["a"].string, menuItemSelectedIcon: d["a"].any }, watch: { visible: function (e) { var t = this; e ? this.$nextTick((function () { t.scrollActiveItemToView() })) : this.lastVisible = e } }, created: function () { this.rafInstance = null, this.lastInputValue = this.$props.inputValue, this.lastVisible = !1 }, mounted: function () { var e = this; this.$nextTick((function () { e.scrollActiveItemToView() })), this.lastVisible = this.$props.visible }, updated: function () { var e = this.$props; this.lastVisible = e.visible, this.lastInputValue = e.inputValue, this.prevVisible = this.visible }, beforeDestroy: function () { this.rafInstance && D.a.cancel(this.rafInstance) }, methods: { scrollActiveItemToView: function () { var e = this, t = this.firstActiveItem && this.firstActiveItem.$el, n = this.$props, r = n.value, i = n.visible, o = n.firstActiveValue; if (t && i) { var a = { onlyScrollIfNeeded: !0 }; r && 0 !== r.length || !o || (a.alignWithTop = !0), this.rafInstance = D()((function () { Object(I["a"])(t, e.$refs.menuRef.$el, a) })) } }, renderMenu: function () { var e = this, t = this.$createElement, n = this.$props, r = n.menuItems, i = n.defaultActiveFirstOption, o = n.value, a = n.prefixCls, s = n.multiple, c = n.inputValue, l = n.firstActiveValue, h = n.dropdownMenuStyle, f = n.backfillValue, d = n.visible, p = Object(S["g"])(this, "menuItemSelectedIcon"), v = Object(S["k"])(this), m = v.menuDeselect, g = v.menuSelect, y = v.popupScroll; if (r && r.length) { var b = ee(r, o), x = { props: { multiple: s, itemIcon: s ? p : null, selectedKeys: b, prefixCls: a + "-menu" }, on: {}, style: h, ref: "menuRef", attrs: { role: "listbox" } }; y && (x.on.scroll = y), s ? (x.on.deselect = m, x.on.select = g) : x.on.click = g; var w = {}, _ = i, C = r; if (b.length || l) { n.visible && !this.lastVisible ? w.activeKey = b[0] || l : d || (b[0] && (_ = !1), w.activeKey = void 0); var M = !1, O = function (t) { return !M && -1 !== b.indexOf(t.key) || !M && !b.length && -1 !== l.indexOf(t.key) ? (M = !0, Object(A["a"])(t, { directives: [{ name: "ant-ref", value: function (t) { e.firstActiveItem = t } }] })) : t }; C = r.map((function (e) { if (Object(S["o"])(e).isMenuItemGroup) { var t = e.componentOptions.children.map(O); return Object(A["a"])(e, { children: t }) } return O(e) })) } else this.firstActiveItem = null; var k = o && o[o.length - 1]; return c === this.lastInputValue || k && k === f || (w.activeKey = ""), x.props = u()({}, w, x.props, { defaultActiveFirst: _ }), t(V["a"], x, [C]) } return null } }, render: function () { var e = arguments[0], t = this.renderMenu(), n = Object(S["k"])(this), r = n.popupFocus, i = n.popupScroll; return t ? e("div", { style: { overflow: "auto", transform: "translateZ(0)" }, attrs: { id: this.$props.ariaId, tabIndex: "-1" }, on: { focus: r, mousedown: J, scroll: i }, ref: "menuContainer" }, [t]) : null } }, he = { bottomLeft: { points: ["tl", "bl"], offset: [0, 4], overflow: { adjustX: 0, adjustY: 1 } }, topLeft: { points: ["bl", "tl"], offset: [0, -4], overflow: { adjustX: 0, adjustY: 1 } } }, fe = { name: "SelectTrigger", mixins: [L["a"]], props: { dropdownMatchSelectWidth: d["a"].bool, defaultActiveFirstOption: d["a"].bool, dropdownAlign: d["a"].object, visible: d["a"].bool, disabled: d["a"].bool, showSearch: d["a"].bool, dropdownClassName: d["a"].string, dropdownStyle: d["a"].object, dropdownMenuStyle: d["a"].object, multiple: d["a"].bool, inputValue: d["a"].string, filterOption: d["a"].any, empty: d["a"].bool, options: d["a"].any, prefixCls: d["a"].string, popupClassName: d["a"].string, value: d["a"].array, showAction: d["a"].arrayOf(d["a"].string), combobox: d["a"].bool, animation: d["a"].string, transitionName: d["a"].string, getPopupContainer: d["a"].func, backfillValue: d["a"].any, menuItemSelectedIcon: d["a"].any, dropdownRender: d["a"].func, ariaId: d["a"].string }, data: function () { return { dropdownWidth: 0 } }, created: function () { this.rafInstance = null, this.saveDropdownMenuRef = ce(this, "dropdownMenuRef"), this.saveTriggerRef = ce(this, "triggerRef") }, mounted: function () { var e = this; this.$nextTick((function () { e.setDropdownWidth() })) }, updated: function () { var e = this; this.$nextTick((function () { e.setDropdownWidth() })) }, beforeDestroy: function () { this.cancelRafInstance() }, methods: { setDropdownWidth: function () { var e = this; this.cancelRafInstance(), this.rafInstance = D()((function () { var t = e.$el.offsetWidth; t !== e.dropdownWidth && e.setState({ dropdownWidth: t }) })) }, cancelRafInstance: function () { this.rafInstance && D.a.cancel(this.rafInstance) }, getInnerMenu: function () { return this.dropdownMenuRef && this.dropdownMenuRef.$refs.menuRef }, getPopupDOMNode: function () { return this.triggerRef.getPopupDomNode() }, getDropdownElement: function (e) { var t = this.$createElement, n = this.value, r = this.firstActiveValue, i = this.defaultActiveFirstOption, o = this.dropdownMenuStyle, a = this.getDropdownPrefixCls, s = this.backfillValue, c = this.menuItemSelectedIcon, l = Object(S["k"])(this), h = l.menuSelect, f = l.menuDeselect, d = l.popupScroll, p = this.$props, v = p.dropdownRender, m = p.ariaId, g = { props: u()({}, e.props, { ariaId: m, prefixCls: a(), value: n, firstActiveValue: r, defaultActiveFirstOption: i, dropdownMenuStyle: o, backfillValue: s, menuItemSelectedIcon: c }), on: u()({}, e.on, { menuSelect: h, menuDeselect: f, popupScroll: d }), directives: [{ name: "ant-ref", value: this.saveDropdownMenuRef }] }, y = t(ue, g); return v ? v(y, p) : null }, getDropdownTransitionName: function () { var e = this.$props, t = e.transitionName; return !t && e.animation && (t = this.getDropdownPrefixCls() + "-" + e.animation), t }, getDropdownPrefixCls: function () { return this.prefixCls + "-dropdown" } }, render: function () { var e, t = arguments[0], n = this.$props, r = this.$slots, i = n.multiple, o = n.visible, s = n.inputValue, c = n.dropdownAlign, l = n.disabled, h = n.showSearch, f = n.dropdownClassName, d = n.dropdownStyle, p = n.dropdownMatchSelectWidth, v = n.options, m = n.getPopupContainer, g = n.showAction, b = n.empty, x = Object(S["k"])(this), w = x.mouseenter, _ = x.mouseleave, C = x.popupFocus, M = x.dropdownVisibleChange, O = this.getDropdownPrefixCls(), k = (e = {}, a()(e, f, !!f), a()(e, O + "--" + (i ? "multiple" : "single"), 1), a()(e, O + "--empty", b), e), T = this.getDropdownElement({ props: { menuItems: v, multiple: i, inputValue: s, visible: o }, on: { popupFocus: C } }), A = void 0; A = l ? [] : K(n) && !h ? ["click"] : ["blur"]; var L = u()({}, d), j = p ? "width" : "minWidth"; this.dropdownWidth && (L[j] = this.dropdownWidth + "px"); var z = { props: u()({}, n, { showAction: l ? [] : g, hideAction: A, ref: "triggerRef", popupPlacement: "bottomLeft", builtinPlacements: he, prefixCls: O, popupTransitionName: this.getDropdownTransitionName(), popupAlign: c, popupVisible: o, getPopupContainer: m, popupClassName: y()(k), popupStyle: L }), on: { popupVisibleChange: M }, directives: [{ name: "ant-ref", value: this.saveTriggerRef }] }; return w && (z.on.mouseenter = w), _ && (z.on.mouseleave = _), t(H["a"], z, [r["default"], t("template", { slot: "popup" }, [T])]) } }, de = { defaultActiveFirstOption: d["a"].bool, multiple: d["a"].bool, filterOption: d["a"].any, showSearch: d["a"].bool, disabled: d["a"].bool, allowClear: d["a"].bool, showArrow: d["a"].bool, tags: d["a"].bool, prefixCls: d["a"].string, transitionName: d["a"].string, optionLabelProp: d["a"].string, optionFilterProp: d["a"].string, animation: d["a"].string, choiceTransitionName: d["a"].string, open: d["a"].bool, defaultOpen: d["a"].bool, placeholder: d["a"].any, labelInValue: d["a"].bool, loading: d["a"].bool, value: d["a"].any, defaultValue: d["a"].any, dropdownStyle: d["a"].object, dropdownClassName: d["a"].string, maxTagTextLength: d["a"].number, maxTagCount: d["a"].number, maxTagPlaceholder: d["a"].any, tokenSeparators: d["a"].arrayOf(d["a"].string), getInputElement: d["a"].func, showAction: d["a"].arrayOf(d["a"].string), autoFocus: d["a"].bool, getPopupContainer: d["a"].func, clearIcon: d["a"].any, inputIcon: d["a"].any, removeIcon: d["a"].any, menuItemSelectedIcon: d["a"].any, dropdownRender: d["a"].func, mode: d["a"].oneOf(["multiple", "tags"]), backfill: d["a"].bool, dropdownAlign: d["a"].any, dropdownMatchSelectWidth: d["a"].bool, dropdownMenuStyle: d["a"].object, notFoundContent: d["a"].oneOfType([String, Number]), tabIndex: d["a"].oneOfType([String, Number]) }, pe = n("6bb4"), ve = "undefined" !== typeof window, me = "undefined" !== typeof WXEnvironment && !!WXEnvironment.platform, ge = me && WXEnvironment.platform.toLowerCase(), ye = ve && window.navigator.userAgent.toLowerCase(), be = ye && /msie|trident/.test(ye), xe = (ye && ye.indexOf("msie 9.0"), ye && ye.indexOf("edge/") > 0); ye && ye.indexOf("android"), ye && /iphone|ipad|ipod|ios/.test(ye), ye && /chrome\/\d+/.test(ye), ye && /phantomjs/.test(ye), ye && ye.match(/firefox\/(\d+)/); k.a.use(E.a, { name: "ant-ref" }); var we = "RC_SELECT_EMPTY_VALUE_KEY", _e = function () { return null }; function Ce(e) { return !e || null === e.offsetParent } function Me() { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return function () { for (var e = arguments.length, n = Array(e), r = 0; r < e; r++)n[r] = arguments[r]; for (var i = 0; i < t.length; i++)t[i] && "function" === typeof t[i] && t[i].apply(Me, n) } } var Oe = { inheritAttrs: !1, Option: p, OptGroup: v, name: "Select", mixins: [L["a"]], props: u()({}, de, { prefixCls: de.prefixCls.def("rc-select"), defaultOpen: d["a"].bool.def(!1), labelInValue: de.labelInValue.def(!1), defaultActiveFirstOption: de.defaultActiveFirstOption.def(!0), showSearch: de.showSearch.def(!0), allowClear: de.allowClear.def(!1), placeholder: de.placeholder.def(""), dropdownMatchSelectWidth: d["a"].bool.def(!0), dropdownStyle: de.dropdownStyle.def((function () { return {} })), dropdownMenuStyle: d["a"].object.def((function () { return {} })), optionFilterProp: de.optionFilterProp.def("value"), optionLabelProp: de.optionLabelProp.def("value"), notFoundContent: d["a"].any.def("Not Found"), backfill: d["a"].bool.def(!1), showAction: de.showAction.def(["click"]), combobox: d["a"].bool.def(!1), tokenSeparators: d["a"].arrayOf(d["a"].string).def([]), autoClearSearchValue: d["a"].bool.def(!0), tabIndex: d["a"].any.def(0), dropdownRender: d["a"].func.def((function (e) { return e })) }), model: { prop: "value", event: "change" }, created: function () { this.saveInputRef = ce(this, "inputRef"), this.saveInputMirrorRef = ce(this, "inputMirrorRef"), this.saveTopCtrlRef = ce(this, "topCtrlRef"), this.saveSelectTriggerRef = ce(this, "selectTriggerRef"), this.saveRootRef = ce(this, "rootRef"), this.saveSelectionRef = ce(this, "selectionRef"), this._focused = !1, this._mouseDown = !1, this._options = [], this._empty = !1 }, data: function () { var e = Object(S["l"])(this), t = this.getOptionsInfoFromProps(e); if (M()(this.__propsSymbol__, "Replace slots.default with props.children and pass props.__propsSymbol__"), e.tags && "function" !== typeof e.filterOption) { var n = Object.keys(t).some((function (e) { return t[e].disabled })); M()(!n, "Please avoid setting option to disabled in tags mode since user can always type text as tag.") } var r = { _value: this.getValueFromProps(e, !0), _inputValue: e.combobox ? this.getInputValueForCombobox(e, t, !0) : "", _open: e.defaultOpen, _optionsInfo: t, _backfillValue: "", _skipBuildOptionsInfo: !0, _ariaId: le() }; return u()({}, r, { _mirrorInputValue: r._inputValue }, this.getDerivedState(e, r)) }, mounted: function () { var e = this; this.$nextTick((function () { (e.autoFocus || e._open) && e.focus() })) }, watch: { __propsSymbol__: function () { u()(this.$data, this.getDerivedState(Object(S["l"])(this), this.$data)) }, "$data._inputValue": function (e) { this.$data._mirrorInputValue = e } }, updated: function () { var e = this; this.$nextTick((function () { if (q(e.$props)) { var t = e.getInputDOMNode(), n = e.getInputMirrorDOMNode(); t && t.value && n ? (t.style.width = "", t.style.width = n.clientWidth + 10 + "px") : t && (t.style.width = "") } e.forcePopupAlign() })) }, beforeDestroy: function () { this.clearFocusTime(), this.clearBlurTime(), this.clearComboboxTime(), this.dropdownContainer && (document.body.removeChild(this.dropdownContainer), this.dropdownContainer = null) }, methods: { getDerivedState: function (e, t) { var n = t._skipBuildOptionsInfo ? t._optionsInfo : this.getOptionsInfoFromProps(e, t), r = { _optionsInfo: n, _skipBuildOptionsInfo: !1 }; if ("open" in e && (r._open = e.open), "value" in e) { var i = this.getValueFromProps(e); r._value = i, e.combobox && (r._inputValue = this.getInputValueForCombobox(e, n)) } return r }, getOptionsFromChildren: function () { var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : []; return t.forEach((function (t) { t.data && void 0 === t.data.slot && (Object(S["o"])(t).isSelectOptGroup ? e.getOptionsFromChildren(t.componentOptions.children, n) : n.push(t)) })), n }, getInputValueForCombobox: function (e, t, n) { var r = []; if ("value" in e && !n && (r = G(e.value)), "defaultValue" in e && n && (r = G(e.defaultValue)), !r.length) return ""; r = r[0]; var i = r; return e.labelInValue ? i = r.label : t[X(r)] && (i = t[X(r)].label), void 0 === i && (i = ""), i }, getLabelFromOption: function (e, t) { return $(t, e.optionLabelProp) }, getOptionsInfoFromProps: function (e, t) { var n = this, r = this.getOptionsFromChildren(this.$props.children), i = {}; if (r.forEach((function (t) { var r = Y(t); i[X(r)] = { option: t, value: r, label: n.getLabelFromOption(e, t), title: Object(S["r"])(t, "title"), disabled: Object(S["r"])(t, "disabled") } })), t) { var o = t._optionsInfo, a = t._value; a && a.forEach((function (e) { var t = X(e); i[t] || void 0 === o[t] || (i[t] = o[t]) })) } return i }, getValueFromProps: function (e, t) { var n = []; return "value" in e && !t && (n = G(e.value)), "defaultValue" in e && t && (n = G(e.defaultValue)), e.labelInValue && (n = n.map((function (e) { return e.key }))), n }, onInputChange: function (e) { var t = e.target, n = t.value, r = t.composing, i = this.$data._inputValue, o = void 0 === i ? "" : i; if (e.isComposing || r || o === n) this.setState({ _mirrorInputValue: n }); else { var a = this.$props.tokenSeparators; if (q(this.$props) && a.length && ie(n, a)) { var s = this.getValueByInput(n); return void 0 !== s && this.fireChange(s), this.setOpenState(!1, { needFocus: !0 }), void this.setInputValue("", !1) } this.setInputValue(n), this.setState({ _open: !0 }), W(this.$props) && this.fireChange([n]) } }, onDropdownVisibleChange: function (e) { e && !this._focused && (this.clearBlurTime(), this.timeoutFocus(), this._focused = !0, this.updateFocusClassName()), this.setOpenState(e) }, onKeyDown: function (e) { var t = this.$data._open, n = this.$props.disabled; if (!n) { var r = e.keyCode; t && !this.getInputDOMNode() ? this.onInputKeydown(e) : r === m["a"].ENTER || r === m["a"].DOWN ? (r !== m["a"].ENTER || q(this.$props) ? t || this.setOpenState(!0) : this.maybeFocus(!0), e.preventDefault()) : r === m["a"].SPACE && (t || (this.setOpenState(!0), e.preventDefault())) } }, onInputKeydown: function (e) { var t = this, n = this.$props, r = n.disabled, i = n.combobox, o = n.defaultActiveFirstOption; if (!r) { var a = this.$data, s = this.getRealOpenState(a), c = e.keyCode; if (!q(this.$props) || e.target.value || c !== m["a"].BACKSPACE) { if (c === m["a"].DOWN) { if (!a._open) return this.openIfHasChildren(), e.preventDefault(), void e.stopPropagation() } else if (c === m["a"].ENTER && a._open) !s && i || e.preventDefault(), s && i && !1 === o && (this.comboboxTimer = setTimeout((function () { t.setOpenState(!1) }))); else if (c === m["a"].ESC) return void (a._open && (this.setOpenState(!1), e.preventDefault(), e.stopPropagation())); if (s && this.selectTriggerRef) { var l = this.selectTriggerRef.getInnerMenu(); l && l.onKeyDown(e, this.handleBackfill) && (e.preventDefault(), e.stopPropagation()) } } else { e.preventDefault(); var u = a._value; u.length && this.removeSelected(u[u.length - 1]) } } }, onMenuSelect: function (e) { var t = e.item; if (t) { var n = this.$data._value, r = this.$props, i = Y(t), o = n[n.length - 1], a = !1; if (q(r) ? -1 !== Q(n, i) ? a = !0 : n = n.concat([i]) : W(r) || void 0 === o || o !== i || i === this.$data._backfillValue ? (n = [i], this.setOpenState(!1, { needFocus: !0, fireSearch: !1 })) : (this.setOpenState(!1, { needFocus: !0, fireSearch: !1 }), a = !0), a || this.fireChange(n), !a) { this.fireSelect(i); var s = W(r) ? $(t, r.optionLabelProp) : ""; r.autoClearSearchValue && this.setInputValue(s, !1) } } }, onMenuDeselect: function (e) { var t = e.item, n = e.domEvent; if ("keydown" !== n.type || n.keyCode !== m["a"].ENTER) "click" === n.type && this.removeSelected(Y(t)), this.autoClearSearchValue && this.setInputValue(""); else { var r = t.$el; Ce(r) || this.removeSelected(Y(t)) } }, onArrowClick: function (e) { e.stopPropagation(), e.preventDefault(), this.clearBlurTime(), this.disabled || this.setOpenState(!this.$data._open, { needFocus: !this.$data._open }) }, onPlaceholderClick: function () { this.getInputDOMNode() && this.getInputDOMNode() && this.getInputDOMNode().focus() }, onPopupFocus: function () { this.maybeFocus(!0, !0) }, onClearSelection: function (e) { var t = this.$props, n = this.$data; if (!t.disabled) { var r = n._inputValue, i = n._value; e.stopPropagation(), (r || i.length) && (i.length && this.fireChange([]), this.setOpenState(!1, { needFocus: !0 }), r && this.setInputValue("")) } }, onChoiceAnimationLeave: function () { this.forcePopupAlign() }, getOptionInfoBySingleValue: function (e, t) { var n = this.$createElement, r = void 0; if (t = t || this.$data._optionsInfo, t[X(e)] && (r = t[X(e)]), r) return r; var i = e; if (this.$props.labelInValue) { var o = Z(this.$props.value, e), a = Z(this.$props.defaultValue, e); void 0 !== o ? i = o : void 0 !== a && (i = a) } var s = { option: n(p, { attrs: { value: e }, key: e }, [e]), value: e, label: i }; return s }, getOptionBySingleValue: function (e) { var t = this.getOptionInfoBySingleValue(e), n = t.option; return n }, getOptionsBySingleValue: function (e) { var t = this; return e.map((function (e) { return t.getOptionBySingleValue(e) })) }, getValueByLabel: function (e) { var t = this; if (void 0 === e) return null; var n = null; return Object.keys(this.$data._optionsInfo).forEach((function (r) { var i = t.$data._optionsInfo[r], o = i.disabled; if (!o) { var a = G(i.label); a && a.join("") === e && (n = i.value) } })), n }, getVLBySingleValue: function (e) { return this.$props.labelInValue ? { key: e, label: this.getLabelBySingleValue(e) } : e }, getVLForOnChange: function (e) { var t = this, n = e; return void 0 !== n ? (n = this.labelInValue ? n.map((function (e) { return { key: e, label: t.getLabelBySingleValue(e) } })) : n.map((function (e) { return e })), q(this.$props) ? n : n[0]) : n }, getLabelBySingleValue: function (e, t) { var n = this.getOptionInfoBySingleValue(e, t), r = n.label; return r }, getDropdownContainer: function () { return this.dropdownContainer || (this.dropdownContainer = document.createElement("div"), document.body.appendChild(this.dropdownContainer)), this.dropdownContainer }, getPlaceholderElement: function () { var e = this.$createElement, t = this.$props, n = this.$data, r = !1; n._mirrorInputValue && (r = !0); var i = n._value; i.length && (r = !0), !n._mirrorInputValue && W(t) && 1 === i.length && n._value && !n._value[0] && (r = !1); var o = t.placeholder; if (o) { var a = { on: { mousedown: J, click: this.onPlaceholderClick }, attrs: ne, style: u()({ display: r ? "none" : "block" }, te), class: t.prefixCls + "-selection__placeholder" }; return e("div", a, [o]) } return null }, inputClick: function (e) { this.$data._open ? (this.clearBlurTime(), e.stopPropagation()) : this._focused = !1 }, inputBlur: function (e) { var t = this, n = e.relatedTarget || document.activeElement; if ((be || xe) && (e.relatedTarget === this.$refs.arrow || n && this.selectTriggerRef && this.selectTriggerRef.getInnerMenu() && this.selectTriggerRef.getInnerMenu().$el === n || Object(pe["a"])(e.target, n))) return e.target.focus(), void e.preventDefault(); this.clearBlurTime(), this.disabled ? e.preventDefault() : this.blurTimer = setTimeout((function () { t._focused = !1, t.updateFocusClassName(); var e = t.$props, n = t.$data._value, r = t.$data._inputValue; if (K(e) && e.showSearch && r && e.defaultActiveFirstOption) { var i = t._options || []; if (i.length) { var o = re(i); o && (n = [Y(o)], t.fireChange(n)) } } else if (q(e) && r) { t._mouseDown ? t.setInputValue("") : (t.$data._inputValue = "", t.getInputDOMNode && t.getInputDOMNode() && (t.getInputDOMNode().value = "")); var a = t.getValueByInput(r); void 0 !== a && (n = a, t.fireChange(n)) } if (q(e) && t._mouseDown) return t.maybeFocus(!0, !0), void (t._mouseDown = !1); t.setOpenState(!1), t.$emit("blur", t.getVLForOnChange(n)) }), 200) }, inputFocus: function (e) { if (this.$props.disabled) e.preventDefault(); else { this.clearBlurTime(); var t = this.getInputDOMNode(); t && e.target === this.rootRef || (U(this.$props) || e.target !== t) && (this._focused || (this._focused = !0, this.updateFocusClassName(), q(this.$props) && this._mouseDown || this.timeoutFocus())) } }, _getInputElement: function () { var e = this.$createElement, t = this.$props, n = this.$data, r = n._inputValue, o = n._mirrorInputValue, s = Object(S["e"])(this), c = e("input", { attrs: { id: s.id, autoComplete: "off" } }), l = t.getInputElement ? t.getInputElement() : c, h = y()(Object(S["f"])(l), a()({}, t.prefixCls + "-search__field", !0)), f = Object(S["i"])(l); return l.data = l.data || {}, e("div", { class: t.prefixCls + "-search__field__wrap", on: { click: this.inputClick } }, [Object(A["a"])(l, { props: { disabled: t.disabled, value: r }, attrs: u()({}, l.data.attrs || {}, { disabled: t.disabled, value: r }), domProps: { value: r }, class: h, directives: [{ name: "ant-ref", value: this.saveInputRef }, { name: "ant-input" }], on: { input: this.onInputChange, keydown: Me(this.onInputKeydown, f.keydown, Object(S["k"])(this).inputKeydown), focus: Me(this.inputFocus, f.focus), blur: Me(this.inputBlur, f.blur) } }), e("span", i()([{ directives: [{ name: "ant-ref", value: this.saveInputMirrorRef }] }, { class: t.prefixCls + "-search__field__mirror" }]), [o, "聽"])]) }, getInputDOMNode: function () { return this.topCtrlRef ? this.topCtrlRef.querySelector("input,textarea,div[contentEditable]") : this.inputRef }, getInputMirrorDOMNode: function () { return this.inputMirrorRef }, getPopupDOMNode: function () { if (this.selectTriggerRef) return this.selectTriggerRef.getPopupDOMNode() }, getPopupMenuComponent: function () { if (this.selectTriggerRef) return this.selectTriggerRef.getInnerMenu() }, setOpenState: function (e) { var t = this, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r = this.$props, i = this.$data, o = n.needFocus, a = n.fireSearch; if (i._open !== e) { this.__emit("dropdownVisibleChange", e); var s = { _open: e, _backfillValue: "" }; !e && K(r) && r.showSearch && this.setInputValue("", a), e || this.maybeFocus(e, !!o), this.setState(s, (function () { e && t.maybeFocus(e, !!o) })) } else this.maybeFocus(e, !!o) }, setInputValue: function (e) { var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]; e !== this.$data._inputValue && (this.setState({ _inputValue: e }, this.forcePopupAlign), t && this.$emit("search", e)) }, getValueByInput: function (e) { var t = this, n = this.$props, r = n.multiple, i = n.tokenSeparators, o = this.$data._value, a = !1; return oe(e, i).forEach((function (e) { var n = [e]; if (r) { var i = t.getValueByLabel(e); i && -1 === Q(o, i) && (o = o.concat(i), a = !0, t.fireSelect(i)) } else -1 === Q(o, e) && (o = o.concat(n), a = !0, t.fireSelect(e)) })), a ? o : void 0 }, getRealOpenState: function (e) { var t = this.$props.open; if ("boolean" === typeof t) return t; var n = (e || this.$data)._open, r = this._options || []; return !U(this.$props) && this.$props.showSearch || n && !r.length && (n = !1), n }, focus: function () { K(this.$props) && this.selectionRef ? this.selectionRef.focus() : this.getInputDOMNode() && this.getInputDOMNode().focus() }, blur: function () { K(this.$props) && this.selectionRef ? this.selectionRef.blur() : this.getInputDOMNode() && this.getInputDOMNode().blur() }, markMouseDown: function () { this._mouseDown = !0 }, markMouseLeave: function () { this._mouseDown = !1 }, handleBackfill: function (e) { if (this.backfill && (K(this.$props) || W(this.$props))) { var t = Y(e); W(this.$props) && this.setInputValue(t, !1), this.setState({ _value: [t], _backfillValue: t }) } }, _filterOption: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : ae, r = this.$data, i = r._value, o = r._backfillValue, a = i[i.length - 1]; if (!e || a && a === o) return !0; var s = this.$props.filterOption; return Object(S["s"])(this, "filterOption") ? !0 === s && (s = n.bind(this)) : s = n.bind(this), !s || ("function" === typeof s ? s.call(this, e, t) : !Object(S["r"])(t, "disabled")) }, timeoutFocus: function () { var e = this; this.focusTimer && this.clearFocusTime(), this.focusTimer = window.setTimeout((function () { e.$emit("focus") }), 10) }, clearFocusTime: function () { this.focusTimer && (clearTimeout(this.focusTimer), this.focusTimer = null) }, clearBlurTime: function () { this.blurTimer && (clearTimeout(this.blurTimer), this.blurTimer = null) }, clearComboboxTime: function () { this.comboboxTimer && (clearTimeout(this.comboboxTimer), this.comboboxTimer = null) }, updateFocusClassName: function () { var e = this.rootRef, t = this.prefixCls; this._focused ? x()(e).add(t + "-focused") : x()(e).remove(t + "-focused") }, maybeFocus: function (e, t) { if (t || e) { var n = this.getInputDOMNode(), r = document, i = r.activeElement; n && (e || U(this.$props)) ? i !== n && (n.focus(), this._focused = !0) : i !== this.selectionRef && this.selectionRef && (this.selectionRef.focus(), this._focused = !0) } }, removeSelected: function (e, t) { var n = this.$props; if (!n.disabled && !this.isChildDisabled(e)) { t && t.stopPropagation && t.stopPropagation(); var r = this.$data._value, i = r.filter((function (t) { return t !== e })), o = q(n); if (o) { var a = e; n.labelInValue && (a = { key: e, label: this.getLabelBySingleValue(e) }), this.$emit("deselect", a, this.getOptionBySingleValue(e)) } this.fireChange(i) } }, openIfHasChildren: function () { var e = this.$props; (e.children && e.children.length || K(e)) && this.setOpenState(!0) }, fireSelect: function (e) { this.$emit("select", this.getVLBySingleValue(e), this.getOptionBySingleValue(e)) }, fireChange: function (e) { Object(S["s"])(this, "value") || this.setState({ _value: e }, this.forcePopupAlign); var t = this.getVLForOnChange(e), n = this.getOptionsBySingleValue(e); this._valueOptions = n, this.$emit("change", t, q(this.$props) ? n : n[0]) }, isChildDisabled: function (e) { return (this.$props.children || []).some((function (t) { var n = Y(t); return n === e && Object(S["r"])(t, "disabled") })) }, forcePopupAlign: function () { this.$data._open && this.selectTriggerRef && this.selectTriggerRef.triggerRef && this.selectTriggerRef.triggerRef.forcePopupAlign() }, renderFilterOptions: function () { var e = this.$createElement, t = this.$data._inputValue, n = this.$props, r = n.children, o = n.tags, a = n.notFoundContent, s = [], c = [], l = !1, h = this.renderFilterOptionsFromChildren(r, c, s); if (o) { var f = this.$data._value; if (f = f.filter((function (e) { return -1 === c.indexOf(e) && (!t || String(e).indexOf(String(t)) > -1) })), f.sort((function (e, t) { return e.length - t.length })), f.forEach((function (t) { var n = t, r = u()({}, ne, { role: "option" }), o = e(w["a"], i()([{ style: te }, { attrs: r }, { attrs: { value: n }, key: n }]), [n]); h.push(o), s.push(o) })), t && s.every((function (e) { return Y(e) !== t }))) { var d = { attrs: ne, key: t, props: { value: t, role: "option" }, style: te }; h.unshift(e(w["a"], d, [t])) } } if (!h.length && a) { l = !0; var p = { attrs: ne, key: "NOT_FOUND", props: { value: "NOT_FOUND", disabled: !0, role: "option" }, style: te }; h = [e(w["a"], p, [a])] } return { empty: l, options: h } }, renderFilterOptionsFromChildren: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = this, n = arguments[1], r = arguments[2], o = this.$createElement, a = [], s = this.$props, c = this.$data._inputValue, l = s.tags; return e.forEach((function (e) { if (e.data && void 0 === e.data.slot) if (Object(S["o"])(e).isSelectOptGroup) { var s = Object(S["g"])(e, "label"), h = e.key; h || "string" !== typeof s ? !s && h && (s = h) : h = s; var f = Object(S["p"])(e)["default"]; if (f = "function" === typeof f ? f() : f, c && t._filterOption(c, e)) { var d = f.map((function (e) { var t = Y(e) || e.key; return o(w["a"], i()([{ key: t, attrs: { value: t } }, e.data]), [e.componentOptions.children]) })); a.push(o(_["a"], { key: h, attrs: { title: s }, class: Object(S["f"])(e) }, [d])) } else { var p = t.renderFilterOptionsFromChildren(f, n, r); p.length && a.push(o(_["a"], i()([{ key: h, attrs: { title: s } }, e.data]), [p])) } } else { M()(Object(S["o"])(e).isSelectOption, "the children of `Select` should be `Select.Option` or `Select.OptGroup`, instead of `" + (Object(S["o"])(e).name || Object(S["o"])(e)) + "`."); var v = Y(e); if (se(v, t.$props), t._filterOption(c, e)) { var m = { attrs: u()({}, ne, Object(S["e"])(e)), key: v, props: u()({ value: v }, Object(S["m"])(e), { role: "option" }), style: te, on: Object(S["i"])(e), class: Object(S["f"])(e) }, g = o(w["a"], m, [e.componentOptions.children]); a.push(g), r.push(g) } l && n.push(v) } })), a }, renderTopControlNode: function () { var e = this, t = this.$createElement, n = this.$props, r = this.$data, o = r._value, a = r._inputValue, s = r._open, c = n.choiceTransitionName, l = n.prefixCls, h = n.maxTagTextLength, f = n.maxTagCount, d = n.maxTagPlaceholder, p = n.showSearch, v = Object(S["g"])(this, "removeIcon"), m = l + "-selection__rendered", g = null; if (K(n)) { var y = null; if (o.length) { var b = !1, x = 1; p && s ? (b = !a, b && (x = .4)) : b = !0; var w = o[0], _ = this.getOptionInfoBySingleValue(w), C = _.label, M = _.title; y = t("div", { key: "value", class: l + "-selection-selected-value", attrs: { title: F(M || C) }, style: { display: b ? "block" : "none", opacity: x } }, [C]) } g = p ? [y, t("div", { class: l + "-search " + l + "-search--inline", key: "input", style: { display: s ? "block" : "none" } }, [this._getInputElement()])] : [y] } else { var O = [], k = o, A = void 0; if (void 0 !== f && o.length > f) { k = k.slice(0, f); var L = this.getVLForOnChange(o.slice(f, o.length)), j = "+ " + (o.length - f) + " ..."; d && (j = "function" === typeof d ? d(L) : d); var z = u()({}, ne, { role: "presentation", title: F(j) }); A = t("li", i()([{ style: te }, { attrs: z }, { on: { mousedown: J }, class: l + "-selection__choice " + l + "-selection__choice__disabled", key: "maxTagPlaceholder" }]), [t("div", { class: l + "-selection__choice__content" }, [j])]) } if (q(n) && (O = k.map((function (n) { var r = e.getOptionInfoBySingleValue(n), o = r.label, a = r.title || o; h && "string" === typeof o && o.length > h && (o = o.slice(0, h) + "..."); var s = e.isChildDisabled(n), c = s ? l + "-selection__choice " + l + "-selection__choice__disabled" : l + "-selection__choice", f = u()({}, ne, { role: "presentation", title: F(a) }); return t("li", i()([{ style: te }, { attrs: f }, { on: { mousedown: J }, class: c, key: n || we }]), [t("div", { class: l + "-selection__choice__content" }, [o]), s ? null : t("span", { on: { click: function (t) { e.removeSelected(n, t) } }, class: l + "-selection__choice__remove" }, [v || t("i", { class: l + "-selection__choice__remove-icon" }, ["脳"])])]) }))), A && O.push(A), O.push(t("li", { class: l + "-search " + l + "-search--inline", key: "__input" }, [this._getInputElement()])), q(n) && c) { var E = Object(T["a"])(c, { tag: "ul", afterLeave: this.onChoiceAnimationLeave }); g = t("transition-group", E, [O]) } else g = t("ul", [O]) } return t("div", i()([{ class: m }, { directives: [{ name: "ant-ref", value: this.saveTopCtrlRef }] }, { on: { click: this.topCtrlContainerClick } }]), [this.getPlaceholderElement(), g]) }, renderArrow: function (e) { var t = this.$createElement, n = this.$props, r = n.showArrow, o = void 0 === r ? !e : r, a = n.loading, s = n.prefixCls, c = Object(S["g"])(this, "inputIcon"); if (!o && !a) return null; var l = t("i", a ? { class: s + "-arrow-loading" } : { class: s + "-arrow-icon" }); return t("span", i()([{ key: "arrow", class: s + "-arrow", style: te }, { attrs: ne }, { on: { click: this.onArrowClick }, ref: "arrow" }]), [c || l]) }, topCtrlContainerClick: function (e) { this.$data._open && !K(this.$props) && e.stopPropagation() }, renderClear: function () { var e = this.$createElement, t = this.$props, n = t.prefixCls, r = t.allowClear, o = this.$data, a = o._value, s = o._inputValue, c = Object(S["g"])(this, "clearIcon"), l = e("span", i()([{ key: "clear", class: n + "-selection__clear", on: { mousedown: J }, style: te }, { attrs: ne }, { on: { click: this.onClearSelection } }]), [c || e("i", { class: n + "-selection__clear-icon" }, ["脳"])]); return r ? W(this.$props) ? s ? l : null : s || a.length ? l : null : null }, selectionRefClick: function () { if (!this.disabled) { var e = this.getInputDOMNode(); this._focused && this.$data._open ? (this.setOpenState(!1, !1), e && e.blur()) : (this.clearBlurTime(), this.setOpenState(!0, !0), e && e.focus()) } }, selectionRefFocus: function (e) { this._focused || this.disabled || U(this.$props) ? e.preventDefault() : (this._focused = !0, this.updateFocusClassName(), this.$emit("focus")) }, selectionRefBlur: function (e) { U(this.$props) ? e.preventDefault() : this.inputBlur(e) } }, render: function () { var e, t = arguments[0], n = this.$props, r = q(n), o = n.showArrow, s = void 0 === o || o, c = this.$data, l = n.disabled, u = n.prefixCls, h = n.loading, f = this.renderTopControlNode(), d = this.$data, p = d._open, v = d._inputValue, m = d._value; if (p) { var g = this.renderFilterOptions(); this._empty = g.empty, this._options = g.options } var b = this.getRealOpenState(), x = this._empty, w = this._options || [], _ = Object(S["k"])(this), C = _.mouseenter, M = void 0 === C ? _e : C, O = _.mouseleave, k = void 0 === O ? _e : O, T = _.popupScroll, A = void 0 === T ? _e : T, L = { props: {}, attrs: { role: "combobox", "aria-autocomplete": "list", "aria-haspopup": "true", "aria-expanded": b, "aria-controls": this.$data._ariaId }, on: {}, class: u + "-selection " + u + "-selection--" + (r ? "multiple" : "single"), key: "selection" }, j = { attrs: { tabIndex: -1 } }; U(n) || (j.attrs.tabIndex = n.disabled ? -1 : n.tabIndex); var z = (e = {}, a()(e, u, !0), a()(e, u + "-open", p), a()(e, u + "-focused", p || !!this._focused), a()(e, u + "-combobox", W(n)), a()(e, u + "-disabled", l), a()(e, u + "-enabled", !l), a()(e, u + "-allow-clear", !!n.allowClear), a()(e, u + "-no-arrow", !s), a()(e, u + "-loading", !!h), e); return t(fe, i()([{ attrs: { dropdownAlign: n.dropdownAlign, dropdownClassName: n.dropdownClassName, dropdownMatchSelectWidth: n.dropdownMatchSelectWidth, defaultActiveFirstOption: n.defaultActiveFirstOption, dropdownMenuStyle: n.dropdownMenuStyle, transitionName: n.transitionName, animation: n.animation, prefixCls: n.prefixCls, dropdownStyle: n.dropdownStyle, combobox: n.combobox, showSearch: n.showSearch, options: w, empty: x, multiple: r, disabled: l, visible: b, inputValue: v, value: m, backfillValue: c._backfillValue, firstActiveValue: n.firstActiveValue, getPopupContainer: n.getPopupContainer, showAction: n.showAction, menuItemSelectedIcon: Object(S["g"])(this, "menuItemSelectedIcon") }, on: { dropdownVisibleChange: this.onDropdownVisibleChange, menuSelect: this.onMenuSelect, menuDeselect: this.onMenuDeselect, popupScroll: A, popupFocus: this.onPopupFocus, mouseenter: M, mouseleave: k } }, { directives: [{ name: "ant-ref", value: this.saveSelectTriggerRef }] }, { attrs: { dropdownRender: n.dropdownRender, ariaId: this.$data._ariaId } }]), [t("div", i()([{ directives: [{ name: "ant-ref", value: Me(this.saveRootRef, this.saveSelectionRef) }] }, { style: Object(S["q"])(this), class: y()(z), on: { mousedown: this.markMouseDown, mouseup: this.markMouseLeave, mouseout: this.markMouseLeave } }, j, { on: { blur: this.selectionRefBlur, focus: this.selectionRefFocus, click: this.selectionRefClick, keydown: U(n) ? _e : this.onKeyDown } }]), [t("div", L, [f, this.renderClear(), this.renderArrow(!!r)])])]) } }, ke = (Object(j["a"])(Oe), n("9cba")), Se = n("0c63"), Te = n("db14"), Ae = function () { return { prefixCls: d["a"].string, size: d["a"].oneOf(["small", "large", "default"]), showAction: d["a"].oneOfType([d["a"].string, d["a"].arrayOf(String)]), notFoundContent: d["a"].any, transitionName: d["a"].string, choiceTransitionName: d["a"].string, showSearch: d["a"].bool, allowClear: d["a"].bool, disabled: d["a"].bool, tabIndex: d["a"].number, placeholder: d["a"].any, defaultActiveFirstOption: d["a"].bool, dropdownClassName: d["a"].string, dropdownStyle: d["a"].any, dropdownMenuStyle: d["a"].any, dropdownMatchSelectWidth: d["a"].bool, filterOption: d["a"].oneOfType([d["a"].bool, d["a"].func]), autoFocus: d["a"].bool, backfill: d["a"].bool, showArrow: d["a"].bool, getPopupContainer: d["a"].func, open: d["a"].bool, defaultOpen: d["a"].bool, autoClearSearchValue: d["a"].bool, dropdownRender: d["a"].func, loading: d["a"].bool } }, Le = d["a"].shape({ key: d["a"].oneOfType([d["a"].string, d["a"].number]) }).loose, je = d["a"].oneOfType([d["a"].string, d["a"].number, d["a"].arrayOf(d["a"].oneOfType([Le, d["a"].string, d["a"].number])), Le]), ze = u()({}, Ae(), { value: je, defaultValue: je, mode: d["a"].string, optionLabelProp: d["a"].string, firstActiveValue: d["a"].oneOfType([String, d["a"].arrayOf(String)]), maxTagCount: d["a"].number, maxTagPlaceholder: d["a"].any, maxTagTextLength: d["a"].number, dropdownMatchSelectWidth: d["a"].bool, optionFilterProp: d["a"].string, labelInValue: d["a"].boolean, getPopupContainer: d["a"].func, tokenSeparators: d["a"].arrayOf(d["a"].string), getInputElement: d["a"].func, options: d["a"].array, suffixIcon: d["a"].any, removeIcon: d["a"].any, clearIcon: d["a"].any, menuItemSelectedIcon: d["a"].any }), Ee = { prefixCls: d["a"].string, size: d["a"].oneOf(["default", "large", "small"]), notFoundContent: d["a"].any, showSearch: d["a"].bool, optionLabelProp: d["a"].string, transitionName: d["a"].string, choiceTransitionName: d["a"].string }, Pe = "SECRET_COMBOBOX_MODE_DO_NOT_USE", De = { SECRET_COMBOBOX_MODE_DO_NOT_USE: Pe, Option: u()({}, p, { name: "ASelectOption" }), OptGroup: u()({}, v, { name: "ASelectOptGroup" }), name: "ASelect", props: u()({}, ze, { showSearch: d["a"].bool.def(!1), transitionName: d["a"].string.def("slide-up"), choiceTransitionName: d["a"].string.def("zoom") }), propTypes: Ee, model: { prop: "value", event: "change" }, provide: function () { return { savePopupRef: this.savePopupRef } }, inject: { configProvider: { default: function () { return ke["a"] } } }, created: function () { Object(h["a"])("combobox" !== this.$props.mode, "Select", "The combobox mode of Select is deprecated,it will be removed in next major version,please use AutoComplete instead") }, methods: { getNotFoundContent: function (e) { var t = this.$createElement, n = Object(S["g"])(this, "notFoundContent"); return void 0 !== n ? n : this.isCombobox() ? null : e(t, "Select") }, savePopupRef: function (e) { this.popupRef = e }, focus: function () { this.$refs.vcSelect.focus() }, blur: function () { this.$refs.vcSelect.blur() }, isCombobox: function () { var e = this.mode; return "combobox" === e || e === Pe }, renderSuffixIcon: function (e) { var t = this.$createElement, n = this.$props.loading, r = Object(S["g"])(this, "suffixIcon"); return r = Array.isArray(r) ? r[0] : r, r ? Object(S["w"])(r) ? Object(A["a"])(r, { class: e + "-arrow-icon" }) : r : t(Se["a"], n ? { attrs: { type: "loading" } } : { attrs: { type: "down" }, class: e + "-arrow-icon" }) } }, render: function () { var e, t = arguments[0], n = Object(S["l"])(this), r = n.prefixCls, o = n.size, s = n.mode, l = n.options, h = n.getPopupContainer, d = n.showArrow, v = c()(n, ["prefixCls", "size", "mode", "options", "getPopupContainer", "showArrow"]), m = this.configProvider.getPrefixCls, g = this.configProvider.renderEmpty, y = m("select", r), b = this.configProvider.getPopupContainer, x = Object(S["g"])(this, "removeIcon"); x = Array.isArray(x) ? x[0] : x; var w = Object(S["g"])(this, "clearIcon"); w = Array.isArray(w) ? w[0] : w; var _ = Object(S["g"])(this, "menuItemSelectedIcon"); _ = Array.isArray(_) ? _[0] : _; var C = Object(f["a"])(v, ["inputIcon", "removeIcon", "clearIcon", "suffixIcon", "menuItemSelectedIcon"]), M = (e = {}, a()(e, y + "-lg", "large" === o), a()(e, y + "-sm", "small" === o), a()(e, y + "-show-arrow", d), e), O = this.$props.optionLabelProp; this.isCombobox() && (O = O || "value"); var k = { multiple: "multiple" === s, tags: "tags" === s, combobox: this.isCombobox() }, T = x && (Object(S["w"])(x) ? Object(A["a"])(x, { class: y + "-remove-icon" }) : x) || t(Se["a"], { attrs: { type: "close" }, class: y + "-remove-icon" }), L = w && (Object(S["w"])(w) ? Object(A["a"])(w, { class: y + "-clear-icon" }) : w) || t(Se["a"], { attrs: { type: "close-circle", theme: "filled" }, class: y + "-clear-icon" }), j = _ && (Object(S["w"])(_) ? Object(A["a"])(_, { class: y + "-selected-icon" }) : _) || t(Se["a"], { attrs: { type: "check" }, class: y + "-selected-icon" }), z = { props: u()({ inputIcon: this.renderSuffixIcon(y), removeIcon: T, clearIcon: L, menuItemSelectedIcon: j, showArrow: d }, C, k, { prefixCls: y, optionLabelProp: O || "children", notFoundContent: this.getNotFoundContent(g), maxTagPlaceholder: Object(S["g"])(this, "maxTagPlaceholder"), placeholder: Object(S["g"])(this, "placeholder"), children: l ? l.map((function (e) { var n = e.key, r = e.label, o = void 0 === r ? e.title : r, a = e.on, s = e["class"], l = e.style, u = c()(e, ["key", "label", "on", "class", "style"]); return t(p, i()([{ key: n }, { props: u, on: a, class: s, style: l }]), [o]) })) : Object(S["c"])(this.$slots["default"]), __propsSymbol__: Symbol(), dropdownRender: Object(S["g"])(this, "dropdownRender", {}, !1), getPopupContainer: h || b }), on: Object(S["k"])(this), class: M, ref: "vcSelect" }; return t(Oe, z) }, install: function (e) { e.use(Te["a"]), e.component(De.name, De), e.component(De.Option.name, De.Option), e.component(De.OptGroup.name, De.OptGroup) } }; t["c"] = De }, 9861: function (e, t, n) { "use strict"; n("e260"); var r = n("23e7"), i = n("d066"), o = n("0d3b"), a = n("6eeb"), s = n("e2cc"), c = n("d44e"), l = n("9ed3"), u = n("69f3"), h = n("19aa"), f = n("5135"), d = n("0366"), p = n("f5df"), v = n("825a"), m = n("861d"), g = n("577e"), y = n("7c73"), b = n("5c6c"), x = n("9a1f"), w = n("35a1"), _ = n("b622"), C = i("fetch"), M = i("Request"), O = M && M.prototype, k = i("Headers"), S = _("iterator"), T = "URLSearchParams", A = T + "Iterator", L = u.set, j = u.getterFor(T), z = u.getterFor(A), E = /\+/g, P = Array(4), D = function (e) { return P[e - 1] || (P[e - 1] = RegExp("((?:%[\\da-f]{2}){" + e + "})", "gi")) }, H = function (e) { try { return decodeURIComponent(e) } catch (t) { return e } }, V = function (e) { var t = e.replace(E, " "), n = 4; try { return decodeURIComponent(t) } catch (r) { while (n) t = t.replace(D(n--), H); return t } }, I = /[!'()~]|%20/g, N = { "!": "%21", "'": "%27", "(": "%28", ")": "%29", "~": "%7E", "%20": "+" }, R = function (e) { return N[e] }, F = function (e) { return encodeURIComponent(e).replace(I, R) }, Y = function (e, t) { if (t) { var n, r, i = t.split("&"), o = 0; while (o < i.length) n = i[o++], n.length && (r = n.split("="), e.push({ key: V(r.shift()), value: V(r.join("=")) })) } }, $ = function (e) { this.entries.length = 0, Y(this.entries, e) }, B = function (e, t) { if (e < t) throw TypeError("Not enough arguments") }, W = l((function (e, t) { L(this, { type: A, iterator: x(j(e).entries), kind: t }) }), "Iterator", (function () { var e = z(this), t = e.kind, n = e.iterator.next(), r = n.value; return n.done || (n.value = "keys" === t ? r.key : "values" === t ? r.value : [r.key, r.value]), n })), q = function () { h(this, q, T); var e, t, n, r, i, o, a, s, c, l = arguments.length > 0 ? arguments[0] : void 0, u = this, d = []; if (L(u, { type: T, entries: d, updateURL: function () { }, updateSearchParams: $ }), void 0 !== l) if (m(l)) if (e = w(l), "function" === typeof e) { t = e.call(l), n = t.next; while (!(r = n.call(t)).done) { if (i = x(v(r.value)), o = i.next, (a = o.call(i)).done || (s = o.call(i)).done || !o.call(i).done) throw TypeError("Expected sequence with length 2"); d.push({ key: g(a.value), value: g(s.value) }) } } else for (c in l) f(l, c) && d.push({ key: c, value: g(l[c]) }); else Y(d, "string" === typeof l ? "?" === l.charAt(0) ? l.slice(1) : l : g(l)) }, U = q.prototype; if (s(U, { append: function (e, t) { B(arguments.length, 2); var n = j(this); n.entries.push({ key: g(e), value: g(t) }), n.updateURL() }, delete: function (e) { B(arguments.length, 1); var t = j(this), n = t.entries, r = g(e), i = 0; while (i < n.length) n[i].key === r ? n.splice(i, 1) : i++; t.updateURL() }, get: function (e) { B(arguments.length, 1); for (var t = j(this).entries, n = g(e), r = 0; r < t.length; r++)if (t[r].key === n) return t[r].value; return null }, getAll: function (e) { B(arguments.length, 1); for (var t = j(this).entries, n = g(e), r = [], i = 0; i < t.length; i++)t[i].key === n && r.push(t[i].value); return r }, has: function (e) { B(arguments.length, 1); var t = j(this).entries, n = g(e), r = 0; while (r < t.length) if (t[r++].key === n) return !0; return !1 }, set: function (e, t) { B(arguments.length, 1); for (var n, r = j(this), i = r.entries, o = !1, a = g(e), s = g(t), c = 0; c < i.length; c++)n = i[c], n.key === a && (o ? i.splice(c--, 1) : (o = !0, n.value = s)); o || i.push({ key: a, value: s }), r.updateURL() }, sort: function () { var e, t, n, r = j(this), i = r.entries, o = i.slice(); for (i.length = 0, n = 0; n < o.length; n++) { for (e = o[n], t = 0; t < n; t++)if (i[t].key > e.key) { i.splice(t, 0, e); break } t === n && i.push(e) } r.updateURL() }, forEach: function (e) { var t, n = j(this).entries, r = d(e, arguments.length > 1 ? arguments[1] : void 0, 3), i = 0; while (i < n.length) t = n[i++], r(t.value, t.key, this) }, keys: function () { return new W(this, "keys") }, values: function () { return new W(this, "values") }, entries: function () { return new W(this, "entries") } }, { enumerable: !0 }), a(U, S, U.entries), a(U, "toString", (function () { var e, t = j(this).entries, n = [], r = 0; while (r < t.length) e = t[r++], n.push(F(e.key) + "=" + F(e.value)); return n.join("&") }), { enumerable: !0 }), c(q, T), r({ global: !0, forced: !o }, { URLSearchParams: q }), !o && "function" == typeof k) { var K = function (e) { if (m(e)) { var t, n = e.body; if (p(n) === T) return t = e.headers ? new k(e.headers) : new k, t.has("content-type") || t.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"), y(e, { body: b(0, String(n)), headers: b(0, t) }) } return e }; if ("function" == typeof C && r({ global: !0, enumerable: !0, forced: !0 }, { fetch: function (e) { return C(e, arguments.length > 1 ? K(arguments[1]) : {}) } }), "function" == typeof M) { var G = function (e) { return h(this, G, "Request"), new M(e, arguments.length > 1 ? K(arguments[1]) : {}) }; O.constructor = G, G.prototype = O, r({ global: !0, forced: !0 }, { Request: G }) } } e.exports = { URLSearchParams: q, getState: j } }, 9868: function (e, t, n) { }, 9876: function (e, t, n) { var r = n("03d6"), i = n("9742"); e.exports = Object.keys || function (e) { return r(e, i) } }, 9886: function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), Object.defineProperty(t, "CRender", { enumerable: !0, get: function () { return i["default"] } }), Object.defineProperty(t, "extendNewGraph", { enumerable: !0, get: function () { return o.extendNewGraph } }), t["default"] = void 0; var i = r(n("85c4")), o = n("b06d"), a = i["default"]; t["default"] = a }, "98a7": function (e, t, n) { "use strict"; n("b2a3"), n("ded6"), n("2ef0f"), n("06f4") }, "98b8": function (e, t, n) { (function (e) { function t(e) { return t = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, t(e) } n("a4d3"), n("e01a"), n("d3b7"), n("d28b"), n("3ca3"), n("ddb0"), n("b636"), n("944a"), n("0c47"), n("23dc"), n("3410"), n("b0c0"), n("131a"), n("159b"), n("fb6a"), n("6c57"); var r = function (e) { "use strict"; var n, r = Object.prototype, i = r.hasOwnProperty, o = "function" === typeof Symbol ? Symbol : {}, a = o.iterator || "@@iterator", s = o.asyncIterator || "@@asyncIterator", c = o.toStringTag || "@@toStringTag"; function l(e, t, n) { return Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }), e[t] } try { l({}, "") } catch (E) { l = function (e, t, n) { return e[t] = n } } function u(e, t, n, r) { var i = t && t.prototype instanceof g ? t : g, o = Object.create(i.prototype), a = new L(r || []); return o._invoke = k(e, n, a), o } function h(e, t, n) { try { return { type: "normal", arg: e.call(t, n) } } catch (E) { return { type: "throw", arg: E } } } e.wrap = u; var f = "suspendedStart", d = "suspendedYield", p = "executing", v = "completed", m = {}; function g() { } function y() { } function b() { } var x = {}; l(x, a, (function () { return this })); var w = Object.getPrototypeOf, _ = w && w(w(j([]))); _ && _ !== r && i.call(_, a) && (x = _); var C = b.prototype = g.prototype = Object.create(x); function M(e) { ["next", "throw", "return"].forEach((function (t) { l(e, t, (function (e) { return this._invoke(t, e) })) })) } function O(e, n) { function r(o, a, s, c) { var l = h(e[o], e, a); if ("throw" !== l.type) { var u = l.arg, f = u.value; return f && "object" === t(f) && i.call(f, "__await") ? n.resolve(f.__await).then((function (e) { r("next", e, s, c) }), (function (e) { r("throw", e, s, c) })) : n.resolve(f).then((function (e) { u.value = e, s(u) }), (function (e) { return r("throw", e, s, c) })) } c(l.arg) } var o; function a(e, t) { function i() { return new n((function (n, i) { r(e, t, n, i) })) } return o = o ? o.then(i, i) : i() } this._invoke = a } function k(e, t, n) { var r = f; return function (i, o) { if (r === p) throw new Error("Generator is already running"); if (r === v) { if ("throw" === i) throw o; return z() } n.method = i, n.arg = o; while (1) { var a = n.delegate; if (a) { var s = S(a, n); if (s) { if (s === m) continue; return s } } if ("next" === n.method) n.sent = n._sent = n.arg; else if ("throw" === n.method) { if (r === f) throw r = v, n.arg; n.dispatchException(n.arg) } else "return" === n.method && n.abrupt("return", n.arg); r = p; var c = h(e, t, n); if ("normal" === c.type) { if (r = n.done ? v : d, c.arg === m) continue; return { value: c.arg, done: n.done } } "throw" === c.type && (r = v, n.method = "throw", n.arg = c.arg) } } } function S(e, t) { var r = e.iterator[t.method]; if (r === n) { if (t.delegate = null, "throw" === t.method) { if (e.iterator["return"] && (t.method = "return", t.arg = n, S(e, t), "throw" === t.method)) return m; t.method = "throw", t.arg = new TypeError("The iterator does not provide a 'throw' method") } return m } var i = h(r, e.iterator, t.arg); if ("throw" === i.type) return t.method = "throw", t.arg = i.arg, t.delegate = null, m; var o = i.arg; return o ? o.done ? (t[e.resultName] = o.value, t.next = e.nextLoc, "return" !== t.method && (t.method = "next", t.arg = n), t.delegate = null, m) : o : (t.method = "throw", t.arg = new TypeError("iterator result is not an object"), t.delegate = null, m) } function T(e) { var t = { tryLoc: e[0] }; 1 in e && (t.catchLoc = e[1]), 2 in e && (t.finallyLoc = e[2], t.afterLoc = e[3]), this.tryEntries.push(t) } function A(e) { var t = e.completion || {}; t.type = "normal", delete t.arg, e.completion = t } function L(e) { this.tryEntries = [{ tryLoc: "root" }], e.forEach(T, this), this.reset(!0) } function j(e) { if (e) { var t = e[a]; if (t) return t.call(e); if ("function" === typeof e.next) return e; if (!isNaN(e.length)) { var r = -1, o = function t() { while (++r < e.length) if (i.call(e, r)) return t.value = e[r], t.done = !1, t; return t.value = n, t.done = !0, t }; return o.next = o } } return { next: z } } function z() { return { value: n, done: !0 } } return y.prototype = b, l(C, "constructor", b), l(b, "constructor", y), y.displayName = l(b, c, "GeneratorFunction"), e.isGeneratorFunction = function (e) { var t = "function" === typeof e && e.constructor; return !!t && (t === y || "GeneratorFunction" === (t.displayName || t.name)) }, e.mark = function (e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, b) : (e.__proto__ = b, l(e, c, "GeneratorFunction")), e.prototype = Object.create(C), e }, e.awrap = function (e) { return { __await: e } }, M(O.prototype), l(O.prototype, s, (function () { return this })), e.AsyncIterator = O, e.async = function (t, n, r, i, o) { void 0 === o && (o = Promise); var a = new O(u(t, n, r, i), o); return e.isGeneratorFunction(n) ? a : a.next().then((function (e) { return e.done ? e.value : a.next() })) }, M(C), l(C, c, "Generator"), l(C, a, (function () { return this })), l(C, "toString", (function () { return "[object Generator]" })), e.keys = function (e) { var t = []; for (var n in e) t.push(n); return t.reverse(), function n() { while (t.length) { var r = t.pop(); if (r in e) return n.value = r, n.done = !1, n } return n.done = !0, n } }, e.values = j, L.prototype = { constructor: L, reset: function (e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = n, this.done = !1, this.delegate = null, this.method = "next", this.arg = n, this.tryEntries.forEach(A), !e) for (var t in this) "t" === t.charAt(0) && i.call(this, t) && !isNaN(+t.slice(1)) && (this[t] = n) }, stop: function () { this.done = !0; var e = this.tryEntries[0], t = e.completion; if ("throw" === t.type) throw t.arg; return this.rval }, dispatchException: function (e) { if (this.done) throw e; var t = this; function r(r, i) { return s.type = "throw", s.arg = e, t.next = r, i && (t.method = "next", t.arg = n), !!i } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var a = this.tryEntries[o], s = a.completion; if ("root" === a.tryLoc) return r("end"); if (a.tryLoc <= this.prev) { var c = i.call(a, "catchLoc"), l = i.call(a, "finallyLoc"); if (c && l) { if (this.prev < a.catchLoc) return r(a.catchLoc, !0); if (this.prev < a.finallyLoc) return r(a.finallyLoc) } else if (c) { if (this.prev < a.catchLoc) return r(a.catchLoc, !0) } else { if (!l) throw new Error("try statement without catch or finally"); if (this.prev < a.finallyLoc) return r(a.finallyLoc) } } } }, abrupt: function (e, t) { for (var n = this.tryEntries.length - 1; n >= 0; --n) { var r = this.tryEntries[n]; if (r.tryLoc <= this.prev && i.call(r, "finallyLoc") && this.prev < r.finallyLoc) { var o = r; break } } o && ("break" === e || "continue" === e) && o.tryLoc <= t && t <= o.finallyLoc && (o = null); var a = o ? o.completion : {}; return a.type = e, a.arg = t, o ? (this.method = "next", this.next = o.finallyLoc, m) : this.complete(a) }, complete: function (e, t) { if ("throw" === e.type) throw e.arg; return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && t && (this.next = t), m }, finish: function (e) { for (var t = this.tryEntries.length - 1; t >= 0; --t) { var n = this.tryEntries[t]; if (n.finallyLoc === e) return this.complete(n.completion, n.afterLoc), A(n), m } }, catch: function (e) { for (var t = this.tryEntries.length - 1; t >= 0; --t) { var n = this.tryEntries[t]; if (n.tryLoc === e) { var r = n.completion; if ("throw" === r.type) { var i = r.arg; A(n) } return i } } throw new Error("illegal catch attempt") }, delegateYield: function (e, t, r) { return this.delegate = { iterator: j(e), resultName: t, nextLoc: r }, "next" === this.method && (this.arg = n), m } }, e }("object" === t(e) ? e.exports : {}); try { regeneratorRuntime = r } catch (i) { "object" === ("undefined" === typeof globalThis ? "undefined" : t(globalThis)) ? globalThis.regeneratorRuntime = r : Function("r", "regeneratorRuntime = r")(r) } }).call(this, n("62e4")(e)) }, "98c5": function (e, t, n) { "use strict"; var r = n("6042"), i = n.n(r), o = n("9b57"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("4d91"), u = n("4d26"), h = n.n(u), f = n("daa3"), d = n("9cba"), p = { prefixCls: l["a"].string, hasSider: l["a"].boolean, tagName: l["a"].string }; function v(e) { var t = e.suffixCls, n = e.tagName, r = e.name; return function (e) { return { name: r, props: e.props, inject: { configProvider: { default: function () { return d["a"] } } }, render: function () { var r = arguments[0], i = this.$props.prefixCls, o = this.configProvider.getPrefixCls, a = o(t, i), s = { props: c()({ prefixCls: a }, Object(f["l"])(this), { tagName: n }), on: Object(f["k"])(this) }; return r(e, s, [this.$slots["default"]]) } } } } var m = { props: p, render: function () { var e = arguments[0], t = this.prefixCls, n = this.tagName, r = this.$slots, i = { class: t, on: Object(f["k"])(this) }; return e(n, i, [r["default"]]) } }, g = { props: p, data: function () { return { siders: [] } }, provide: function () { var e = this; return { siderHook: { addSider: function (t) { e.siders = [].concat(a()(e.siders), [t]) }, removeSider: function (t) { e.siders = e.siders.filter((function (e) { return e !== t })) } } } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.$slots, r = this.hasSider, o = this.tagName, a = h()(t, i()({}, t + "-has-sider", "boolean" === typeof r ? r : this.siders.length > 0)), s = { class: a, on: f["k"] }; return e(o, s, [n["default"]]) } }, y = v({ suffixCls: "layout", tagName: "section", name: "ALayout" })(g), b = v({ suffixCls: "layout-header", tagName: "header", name: "ALayoutHeader" })(m), x = v({ suffixCls: "layout-footer", tagName: "footer", name: "ALayoutFooter" })(m), w = v({ suffixCls: "layout-content", tagName: "main", name: "ALayoutContent" })(m); y.Header = b, y.Footer = x, y.Content = w; var _ = y, C = n("b488"), M = n("dd3d"), O = n("0c63"); if ("undefined" !== typeof window) { var k = function (e) { return { media: e, matches: !1, addListener: function () { }, removeListener: function () { } } }; window.matchMedia = window.matchMedia || k } var S = { xs: "479.98px", sm: "575.98px", md: "767.98px", lg: "991.98px", xl: "1199.98px", xxl: "1599.98px" }, T = { prefixCls: l["a"].string, collapsible: l["a"].bool, collapsed: l["a"].bool, defaultCollapsed: l["a"].bool, reverseArrow: l["a"].bool, zeroWidthTriggerStyle: l["a"].object, trigger: l["a"].any, width: l["a"].oneOfType([l["a"].number, l["a"].string]), collapsedWidth: l["a"].oneOfType([l["a"].number, l["a"].string]), breakpoint: l["a"].oneOf(["xs", "sm", "md", "lg", "xl", "xxl"]), theme: l["a"].oneOf(["light", "dark"]).def("dark") }, A = function () { var e = 0; return function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ""; return e += 1, "" + t + e } }(), L = { name: "ALayoutSider", __ANT_LAYOUT_SIDER: !0, mixins: [C["a"]], model: { prop: "collapsed", event: "collapse" }, props: Object(f["t"])(T, { collapsible: !1, defaultCollapsed: !1, reverseArrow: !1, width: 200, collapsedWidth: 80 }), data: function () { this.uniqueId = A("ant-sider-"); var e = void 0; "undefined" !== typeof window && (e = window.matchMedia); var t = Object(f["l"])(this); e && t.breakpoint && t.breakpoint in S && (this.mql = e("(max-width: " + S[t.breakpoint] + ")")); var n = void 0; return n = "collapsed" in t ? t.collapsed : t.defaultCollapsed, { sCollapsed: n, below: !1, belowShow: !1 } }, provide: function () { return { layoutSiderContext: this } }, inject: { siderHook: { default: function () { return {} } }, configProvider: { default: function () { return d["a"] } } }, watch: { collapsed: function (e) { this.setState({ sCollapsed: e }) } }, mounted: function () { var e = this; this.$nextTick((function () { e.mql && (e.mql.addListener(e.responsiveHandler), e.responsiveHandler(e.mql)), e.siderHook.addSider && e.siderHook.addSider(e.uniqueId) })) }, beforeDestroy: function () { this.mql && this.mql.removeListener(this.responsiveHandler), this.siderHook.removeSider && this.siderHook.removeSider(this.uniqueId) }, methods: { responsiveHandler: function (e) { this.setState({ below: e.matches }), this.$emit("breakpoint", e.matches), this.sCollapsed !== e.matches && this.setCollapsed(e.matches, "responsive") }, setCollapsed: function (e, t) { Object(f["s"])(this, "collapsed") || this.setState({ sCollapsed: e }), this.$emit("collapse", e, t) }, toggle: function () { var e = !this.sCollapsed; this.setCollapsed(e, "clickTrigger") }, belowShowChange: function () { this.setState({ belowShow: !this.belowShow }) } }, render: function () { var e, t = arguments[0], n = Object(f["l"])(this), r = n.prefixCls, o = n.theme, a = n.collapsible, s = n.reverseArrow, c = n.width, l = n.collapsedWidth, u = n.zeroWidthTriggerStyle, d = this.configProvider.getPrefixCls, p = d("layout-sider", r), v = Object(f["g"])(this, "trigger"), m = this.sCollapsed ? l : c, g = Object(M["a"])(m) ? m + "px" : String(m), y = 0 === parseFloat(String(l || 0)) ? t("span", { on: { click: this.toggle }, class: p + "-zero-width-trigger " + p + "-zero-width-trigger-" + (s ? "right" : "left"), style: u }, [t(O["a"], { attrs: { type: "bars" } })]) : null, b = { expanded: t(O["a"], s ? { attrs: { type: "right" } } : { attrs: { type: "left" } }), collapsed: t(O["a"], s ? { attrs: { type: "left" } } : { attrs: { type: "right" } }) }, x = this.sCollapsed ? "collapsed" : "expanded", w = b[x], _ = null !== v ? y || t("div", { class: p + "-trigger", on: { click: this.toggle }, style: { width: g } }, [v || w]) : null, C = { flex: "0 0 " + g, maxWidth: g, minWidth: g, width: g }, k = h()(p, p + "-" + o, (e = {}, i()(e, p + "-collapsed", !!this.sCollapsed), i()(e, p + "-has-trigger", a && null !== v && !y), i()(e, p + "-below", !!this.below), i()(e, p + "-zero-width", 0 === parseFloat(g)), e)), S = { on: Object(f["k"])(this), class: k, style: C }; return t("aside", S, [t("div", { class: p + "-children" }, [this.$slots["default"]]), a || this.below && y ? _ : null]) } }, j = n("db14"); _.Sider = L, _.install = function (e) { e.use(j["a"]), e.component(_.name, _), e.component(_.Header.name, _.Header), e.component(_.Footer.name, _.Footer), e.component(_.Sider.name, _.Sider), e.component(_.Content.name, _.Content) }; t["a"] = _ }, 9911: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("857a"), o = n("af03"); r({ target: "String", proto: !0, forced: o("link") }, { link: function (e) { return i(this, "a", "href", e) } }) }, 9934: function (e, t, n) { var r = n("6fcd"), i = n("41c3"), o = n("30c9"); function a(e) { return o(e) ? r(e, !0) : i(e) } e.exports = a }, 9958: function (e, t, n) { }, 9961: function (e, t, n) { }, 9980: function (e, t, n) { "use strict"; n("b2a3"), n("9868"), n("5704"), n("0025"), n("b97c") }, "99af": function (e, t, n) { "use strict"; var r = n("23e7"), i = n("d039"), o = n("e8b5"), a = n("861d"), s = n("7b0b"), c = n("50c4"), l = n("8418"), u = n("65f0"), h = n("1dde"), f = n("b622"), d = n("2d00"), p = f("isConcatSpreadable"), v = 9007199254740991, m = "Maximum allowed index exceeded", g = d >= 51 || !i((function () { var e = []; return e[p] = !1, e.concat()[0] !== e })), y = h("concat"), b = function (e) { if (!a(e)) return !1; var t = e[p]; return void 0 !== t ? !!t : o(e) }, x = !g || !y; r({ target: "Array", proto: !0, forced: x }, { concat: function (e) { var t, n, r, i, o, a = s(this), h = u(a, 0), f = 0; for (t = -1, r = arguments.length; t < r; t++)if (o = -1 === t ? a : arguments[t], b(o)) { if (i = c(o.length), f + i > v) throw TypeError(m); for (n = 0; n < i; n++, f++)n in o && l(h, f, o[n]) } else { if (f >= v) throw TypeError(m); l(h, f++, o) } return h.length = f, h } }) }, "99cd": function (e, t) { function n(e) { return function (t, n, r) { var i = -1, o = Object(t), a = r(t), s = a.length; while (s--) { var c = a[e ? s : ++i]; if (!1 === n(o[c], c, o)) break } return t } } e.exports = n }, "99d3": function (e, t, n) { (function (e) { var r = n("585a"), i = t && !t.nodeType && t, o = i && "object" == typeof e && e && !e.nodeType && e, a = o && o.exports === i, s = a && r.process, c = function () { try { var e = o && o.require && o.require("util").types; return e || s && s.binding && s.binding("util") } catch (t) { } }(); e.exports = c }).call(this, n("62e4")(e)) }, "9a0c": function (e, t, n) { var r = n("342f"); e.exports = /Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(r) }, "9a16": function (e, t, n) { "use strict"; var r = n("c1df"), i = n.n(r), o = n("4d91"), a = n("b488"), s = n("92fa"), c = n.n(s), l = { mixins: [a["a"]], props: { format: o["a"].string, prefixCls: o["a"].string, disabledDate: o["a"].func, placeholder: o["a"].string, clearText: o["a"].string, value: o["a"].object, inputReadOnly: o["a"].bool.def(!1), hourOptions: o["a"].array, minuteOptions: o["a"].array, secondOptions: o["a"].array, disabledHours: o["a"].func, disabledMinutes: o["a"].func, disabledSeconds: o["a"].func, allowEmpty: o["a"].bool, defaultOpenValue: o["a"].object, currentSelectPanel: o["a"].string, focusOnOpen: o["a"].bool, clearIcon: o["a"].any }, data: function () { var e = this.value, t = this.format; return { str: e && e.format(t) || "", invalid: !1 } }, mounted: function () { var e = this; if (this.focusOnOpen) { var t = window.requestAnimationFrame || window.setTimeout; t((function () { e.$refs.input.focus(), e.$refs.input.select() })) } }, watch: { value: function (e) { var t = this; this.$nextTick((function () { t.setState({ str: e && e.format(t.format) || "", invalid: !1 }) })) } }, methods: { onInputChange: function (e) { var t = e.target, n = t.value, r = t.composing, o = this.str, a = void 0 === o ? "" : o; if (!e.isComposing && !r && a !== n) { this.setState({ str: n }); var s = this.format, c = this.hourOptions, l = this.minuteOptions, u = this.secondOptions, h = this.disabledHours, f = this.disabledMinutes, d = this.disabledSeconds, p = this.value; if (n) { var v = this.getProtoValue().clone(), m = i()(n, s, !0); if (!m.isValid()) return void this.setState({ invalid: !0 }); if (v.hour(m.hour()).minute(m.minute()).second(m.second()), c.indexOf(v.hour()) < 0 || l.indexOf(v.minute()) < 0 || u.indexOf(v.second()) < 0) return void this.setState({ invalid: !0 }); var g = h(), y = f(v.hour()), b = d(v.hour(), v.minute()); if (g && g.indexOf(v.hour()) >= 0 || y && y.indexOf(v.minute()) >= 0 || b && b.indexOf(v.second()) >= 0) return void this.setState({ invalid: !0 }); if (p) { if (p.hour() !== v.hour() || p.minute() !== v.minute() || p.second() !== v.second()) { var x = p.clone(); x.hour(v.hour()), x.minute(v.minute()), x.second(v.second()), this.__emit("change", x) } } else p !== v && this.__emit("change", v) } else this.__emit("change", null); this.setState({ invalid: !1 }) } }, onKeyDown: function (e) { 27 === e.keyCode && this.__emit("esc"), this.__emit("keydown", e) }, getProtoValue: function () { return this.value || this.defaultOpenValue }, getInput: function () { var e = this.$createElement, t = this.prefixCls, n = this.placeholder, r = this.inputReadOnly, i = this.invalid, o = this.str, a = i ? t + "-input-invalid" : ""; return e("input", c()([{ class: t + "-input " + a, ref: "input", on: { keydown: this.onKeyDown, input: this.onInputChange }, domProps: { value: o }, attrs: { placeholder: n, readOnly: !!r } }, { directives: [{ name: "ant-input" }] }])) } }, render: function () { var e = arguments[0], t = this.prefixCls; return e("div", { class: t + "-input-wrap" }, [this.getInput()]) } }, u = l, h = n("6042"), f = n.n(h), d = n("4d26"), p = n.n(d), v = n("c449"), m = n.n(v); function g() { } var y = function e(t, n, r) { if (r <= 0) m()((function () { t.scrollTop = n })); else { var i = n - t.scrollTop, o = i / r * 10; m()((function () { t.scrollTop += o, t.scrollTop !== n && e(t, n, r - 10) })) } }, b = { mixins: [a["a"]], props: { prefixCls: o["a"].string, options: o["a"].array, selectedIndex: o["a"].number, type: o["a"].string }, data: function () { return { active: !1 } }, mounted: function () { var e = this; this.$nextTick((function () { e.scrollToSelected(0) })) }, watch: { selectedIndex: function () { var e = this; this.$nextTick((function () { e.scrollToSelected(120) })) } }, methods: { onSelect: function (e) { var t = this.type; this.__emit("select", t, e) }, onEsc: function (e) { this.__emit("esc", e) }, getOptions: function () { var e = this, t = this.$createElement, n = this.options, r = this.selectedIndex, i = this.prefixCls; return n.map((function (n, o) { var a, s = p()((a = {}, f()(a, i + "-select-option-selected", r === o), f()(a, i + "-select-option-disabled", n.disabled), a)), c = n.disabled ? g : function () { e.onSelect(n.value) }, l = function (t) { 13 === t.keyCode ? c() : 27 === t.keyCode && e.onEsc() }; return t("li", { attrs: { role: "button", disabled: n.disabled, tabIndex: "0" }, on: { click: c, keydown: l }, class: s, key: o }, [n.value]) })) }, handleMouseEnter: function (e) { this.setState({ active: !0 }), this.__emit("mouseenter", e) }, handleMouseLeave: function () { this.setState({ active: !1 }) }, scrollToSelected: function (e) { var t = this.$el, n = this.$refs.list; if (n) { var r = this.selectedIndex; r < 0 && (r = 0); var i = n.children[r], o = i.offsetTop; y(t, o, e) } } }, render: function () { var e, t = arguments[0], n = this.prefixCls, r = this.options, i = this.active; if (0 === r.length) return null; var o = (e = {}, f()(e, n + "-select", 1), f()(e, n + "-select-active", i), e); return t("div", { class: o, on: { mouseenter: this.handleMouseEnter, mouseleave: this.handleMouseLeave } }, [t("ul", { ref: "list" }, [this.getOptions()])]) } }, x = b, w = function (e, t) { var n = "" + e; e < 10 && (n = "0" + e); var r = !1; return t && t.indexOf(e) >= 0 && (r = !0), { value: n, disabled: r } }, _ = { mixins: [a["a"]], name: "Combobox", props: { format: o["a"].string, defaultOpenValue: o["a"].object, prefixCls: o["a"].string, value: o["a"].object, showHour: o["a"].bool, showMinute: o["a"].bool, showSecond: o["a"].bool, hourOptions: o["a"].array, minuteOptions: o["a"].array, secondOptions: o["a"].array, disabledHours: o["a"].func, disabledMinutes: o["a"].func, disabledSeconds: o["a"].func, use12Hours: o["a"].bool, isAM: o["a"].bool }, methods: { onItemChange: function (e, t) { var n = this.defaultOpenValue, r = this.use12Hours, i = this.value, o = this.isAM, a = (i || n).clone(); if ("hour" === e) r ? o ? a.hour(+t % 12) : a.hour(+t % 12 + 12) : a.hour(+t); else if ("minute" === e) a.minute(+t); else if ("ampm" === e) { var s = t.toUpperCase(); r && ("PM" === s && a.hour() < 12 && a.hour(a.hour() % 12 + 12), "AM" === s && a.hour() >= 12 && a.hour(a.hour() - 12)), this.__emit("amPmChange", s) } else a.second(+t); this.__emit("change", a) }, onEnterSelectPanel: function (e) { this.__emit("currentSelectPanelChange", e) }, onEsc: function (e) { this.__emit("esc", e) }, getHourSelect: function (e) { var t = this, n = this.$createElement, r = this.prefixCls, i = this.hourOptions, o = this.disabledHours, a = this.showHour, s = this.use12Hours; if (!a) return null; var c = o(), l = void 0, u = void 0; return s ? (l = [12].concat(i.filter((function (e) { return e < 12 && e > 0 }))), u = e % 12 || 12) : (l = i, u = e), n(x, { attrs: { prefixCls: r, options: l.map((function (e) { return w(e, c) })), selectedIndex: l.indexOf(u), type: "hour" }, on: { select: this.onItemChange, mouseenter: function () { return t.onEnterSelectPanel("hour") }, esc: this.onEsc } }) }, getMinuteSelect: function (e) { var t = this, n = this.$createElement, r = this.prefixCls, i = this.minuteOptions, o = this.disabledMinutes, a = this.defaultOpenValue, s = this.showMinute, c = this.value; if (!s) return null; var l = c || a, u = o(l.hour()); return n(x, { attrs: { prefixCls: r, options: i.map((function (e) { return w(e, u) })), selectedIndex: i.indexOf(e), type: "minute" }, on: { select: this.onItemChange, mouseenter: function () { return t.onEnterSelectPanel("minute") }, esc: this.onEsc } }) }, getSecondSelect: function (e) { var t = this, n = this.$createElement, r = this.prefixCls, i = this.secondOptions, o = this.disabledSeconds, a = this.showSecond, s = this.defaultOpenValue, c = this.value; if (!a) return null; var l = c || s, u = o(l.hour(), l.minute()); return n(x, { attrs: { prefixCls: r, options: i.map((function (e) { return w(e, u) })), selectedIndex: i.indexOf(e), type: "second" }, on: { select: this.onItemChange, mouseenter: function () { return t.onEnterSelectPanel("second") }, esc: this.onEsc } }) }, getAMPMSelect: function () { var e = this, t = this.$createElement, n = this.prefixCls, r = this.use12Hours, i = this.format, o = this.isAM; if (!r) return null; var a = ["am", "pm"].map((function (e) { return i.match(/\sA/) ? e.toUpperCase() : e })).map((function (e) { return { value: e } })), s = o ? 0 : 1; return t(x, { attrs: { prefixCls: n, options: a, selectedIndex: s, type: "ampm" }, on: { select: this.onItemChange, mouseenter: function () { return e.onEnterSelectPanel("ampm") }, esc: this.onEsc } }) } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.defaultOpenValue, r = this.value, i = r || n; return e("div", { class: t + "-combobox" }, [this.getHourSelect(i.hour()), this.getMinuteSelect(i.minute()), this.getSecondSelect(i.second()), this.getAMPMSelect(i.hour())]) } }, C = _, M = n("daa3"); function O() { } function k(e, t, n) { for (var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1, i = [], o = 0; o < e; o += r)(!t || t.indexOf(o) < 0 || !n) && i.push(o); return i } function S(e, t, n, r) { var o = t.slice().sort((function (t, n) { return Math.abs(e.hour() - t) - Math.abs(e.hour() - n) }))[0], a = n.slice().sort((function (t, n) { return Math.abs(e.minute() - t) - Math.abs(e.minute() - n) }))[0], s = r.slice().sort((function (t, n) { return Math.abs(e.second() - t) - Math.abs(e.second() - n) }))[0]; return i()(o + ":" + a + ":" + s, "HH:mm:ss") } var T = { mixins: [a["a"]], props: { clearText: o["a"].string, prefixCls: o["a"].string.def("rc-time-picker-panel"), defaultOpenValue: { type: Object, default: function () { return i()() } }, value: o["a"].any, defaultValue: o["a"].any, placeholder: o["a"].string, format: o["a"].string, inputReadOnly: o["a"].bool.def(!1), disabledHours: o["a"].func.def(O), disabledMinutes: o["a"].func.def(O), disabledSeconds: o["a"].func.def(O), hideDisabledOptions: o["a"].bool, allowEmpty: o["a"].bool, showHour: o["a"].bool, showMinute: o["a"].bool, showSecond: o["a"].bool, use12Hours: o["a"].bool.def(!1), hourStep: o["a"].number, minuteStep: o["a"].number, secondStep: o["a"].number, addon: o["a"].func.def(O), focusOnOpen: o["a"].bool, clearIcon: o["a"].any }, data: function () { return { sValue: this.value, selectionRange: [], currentSelectPanel: "" } }, watch: { value: function (e) { this.setState({ sValue: e }) } }, methods: { onChange: function (e) { this.setState({ sValue: e }), this.__emit("change", e) }, onAmPmChange: function (e) { this.__emit("amPmChange", e) }, onCurrentSelectPanelChange: function (e) { this.setState({ currentSelectPanel: e }) }, close: function () { this.__emit("esc") }, onEsc: function (e) { this.__emit("esc", e) }, disabledHours2: function () { var e = this.use12Hours, t = this.disabledHours, n = t(); return e && Array.isArray(n) && (n = this.isAM() ? n.filter((function (e) { return e < 12 })).map((function (e) { return 0 === e ? 12 : e })) : n.map((function (e) { return 12 === e ? 12 : e - 12 }))), n }, isAM: function () { var e = this.sValue || this.defaultOpenValue; return e.hour() >= 0 && e.hour() < 12 } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.placeholder, r = this.disabledMinutes, i = this.addon, o = this.disabledSeconds, a = this.hideDisabledOptions, s = this.showHour, c = this.showMinute, l = this.showSecond, h = this.format, f = this.defaultOpenValue, d = this.clearText, p = this.use12Hours, v = this.focusOnOpen, m = this.hourStep, g = this.minuteStep, y = this.secondStep, b = this.inputReadOnly, x = this.sValue, w = this.currentSelectPanel, _ = Object(M["g"])(this, "clearIcon"), T = Object(M["k"])(this), A = T.esc, L = void 0 === A ? O : A, j = T.keydown, z = void 0 === j ? O : j, E = this.disabledHours2(), P = r(x ? x.hour() : null), D = o(x ? x.hour() : null, x ? x.minute() : null), H = k(24, E, a, m), V = k(60, P, a, g), I = k(60, D, a, y), N = S(f, H, V, I); return e("div", { class: t + "-inner" }, [e(u, { attrs: { clearText: d, prefixCls: t, defaultOpenValue: N, value: x, currentSelectPanel: w, format: h, placeholder: n, hourOptions: H, minuteOptions: V, secondOptions: I, disabledHours: this.disabledHours2, disabledMinutes: r, disabledSeconds: o, focusOnOpen: v, inputReadOnly: b, clearIcon: _ }, on: { esc: L, change: this.onChange, keydown: z } }), e(C, { attrs: { prefixCls: t, value: x, defaultOpenValue: N, format: h, showHour: s, showMinute: c, showSecond: l, hourOptions: H, minuteOptions: V, secondOptions: I, disabledHours: this.disabledHours2, disabledMinutes: r, disabledSeconds: o, use12Hours: p, isAM: this.isAM() }, on: { change: this.onChange, amPmChange: this.onAmPmChange, currentSelectPanelChange: this.onCurrentSelectPanelChange, esc: this.onEsc } }), i(this)]) } }; t["a"] = T }, "9a1f": function (e, t, n) { var r = n("825a"), i = n("35a1"); e.exports = function (e) { var t = i(e); if ("function" != typeof t) throw TypeError(String(e) + " is not iterable"); return r(t.call(e)) } }, "9a33": function (e, t, n) { "use strict"; n("b2a3"), n("b8e7") }, "9a63": function (e, t, n) { "use strict"; var r = n("290c"), i = n("db14"); r["a"].install = function (e) { e.use(i["a"]), e.component(r["a"].name, r["a"]) }, t["a"] = r["a"] }, "9a8c": function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("145e"), o = r.aTypedArray, a = r.exportTypedArrayMethod; a("copyWithin", (function (e, t) { return i.call(o(this), e, t, arguments.length > 2 ? arguments[2] : void 0) })) }, "9a94": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n("882a"), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } t["default"] = i["default"] }, "9ab4": function (e, t, n) { }, "9aff": function (e, t, n) { var r = n("9638"), i = n("30c9"), o = n("c098"), a = n("1a8c"); function s(e, t, n) { if (!a(n)) return !1; var s = typeof t; return !!("number" == s ? i(n) && o(t, n.length) : "string" == s && t in n) && r(n[t], e) } e.exports = s }, "9b02": function (e, t, n) { var r = n("656b"); function i(e, t, n) { var i = null == e ? void 0 : r(e, t); return void 0 === i ? n : i } e.exports = i }, "9b06": function (e, t, n) { }, "9b21": function (e, t, n) { n("0b99"), n("084e"), e.exports = n("5524").Array.from }, "9b42": function (e, t, n) { function r(e, t) { var n = null == e ? null : "undefined" !== typeof Symbol && e[Symbol.iterator] || e["@@iterator"]; if (null != n) { var r, i, o = [], a = !0, s = !1; try { for (n = n.call(e); !(a = (r = n.next()).done); a = !0)if (o.push(r.value), t && o.length === t) break } catch (c) { s = !0, i = c } finally { try { a || null == n["return"] || n["return"]() } finally { if (s) throw i } } return o } } n("a4d3"), n("e01a"), n("d3b7"), n("d28b"), n("3ca3"), n("ddb0"), e.exports = r, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, "9b57": function (e, t, n) { "use strict"; t.__esModule = !0; var r = n("adf5"), i = o(r); function o(e) { return e && e.__esModule ? e : { default: e } } t.default = function (e) { if (Array.isArray(e)) { for (var t = 0, n = Array(e.length); t < e.length; t++)n[t] = e[t]; return n } return (0, i.default)(e) } }, "9bdd": function (e, t, n) { var r = n("825a"), i = n("2a62"); e.exports = function (e, t, n, o) { try { return o ? t(r(n)[0], n[1]) : t(n) } catch (a) { throw i(e), a } } }, "9bf2": function (e, t, n) { var r = n("83ab"), i = n("0cfb"), o = n("825a"), a = n("a04b"), s = Object.defineProperty; t.f = r ? s : function (e, t, n) { if (o(e), t = a(t), o(n), i) try { return s(e, t, n) } catch (r) { } if ("get" in n || "set" in n) throw TypeError("Accessors not supported"); return "value" in n && (e[t] = n.value), e } }, "9c0c": function (e, t, n) { var r = n("1609"); e.exports = function (e, t, n) { if (r(e), void 0 === t) return e; switch (n) { case 1: return function (n) { return e.call(t, n) }; case 2: return function (n, r) { return e.call(t, n, r) }; case 3: return function (n, r, i) { return e.call(t, n, r, i) } }return function () { return e.apply(t, arguments) } } }, "9c0e": function (e, t) { var n = {}.hasOwnProperty; e.exports = function (e, t) { return n.call(e, t) } }, "9cba": function (e, t, n) { "use strict"; n.d(t, "a", (function () { return i })); var r = n("c321"), i = { getPrefixCls: function (e, t) { return t || "ant-" + e }, renderEmpty: r["a"] } }, "9d11": function (e, t, n) { var r = n("fc5e"), i = Math.max, o = Math.min; e.exports = function (e, t) { return e = r(e), e < 0 ? i(e + t, 0) : o(e, t) } }, "9d5c": function (e, t, n) { "use strict"; n("b2a3"), n("9958"), n("6ba6") }, "9d85": function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.changeDefaultConfig = m, Object.defineProperty(t, "colorConfig", { enumerable: !0, get: function () { return r.colorConfig } }), Object.defineProperty(t, "gridConfig", { enumerable: !0, get: function () { return i.gridConfig } }), Object.defineProperty(t, "xAxisConfig", { enumerable: !0, get: function () { return o.xAxisConfig } }), Object.defineProperty(t, "yAxisConfig", { enumerable: !0, get: function () { return o.yAxisConfig } }), Object.defineProperty(t, "titleConfig", { enumerable: !0, get: function () { return a.titleConfig } }), Object.defineProperty(t, "lineConfig", { enumerable: !0, get: function () { return s.lineConfig } }), Object.defineProperty(t, "barConfig", { enumerable: !0, get: function () { return c.barConfig } }), Object.defineProperty(t, "pieConfig", { enumerable: !0, get: function () { return l.pieConfig } }), Object.defineProperty(t, "radarAxisConfig", { enumerable: !0, get: function () { return u.radarAxisConfig } }), Object.defineProperty(t, "radarConfig", { enumerable: !0, get: function () { return h.radarConfig } }), Object.defineProperty(t, "gaugeConfig", { enumerable: !0, get: function () { return f.gaugeConfig } }), Object.defineProperty(t, "legendConfig", { enumerable: !0, get: function () { return d.legendConfig } }), t.keys = void 0; var r = n("f3cb"), i = n("49bc"), o = n("c930"), a = n("887c"), s = n("6eb9"), c = n("f111"), l = n("222a"), u = n("0cd4"), h = n("3938"), f = n("cc6d"), d = n("60f1"), p = n("becb"), v = { colorConfig: r.colorConfig, gridConfig: i.gridConfig, xAxisConfig: o.xAxisConfig, yAxisConfig: o.yAxisConfig, titleConfig: a.titleConfig, lineConfig: s.lineConfig, barConfig: c.barConfig, pieConfig: l.pieConfig, radarAxisConfig: u.radarAxisConfig, radarConfig: h.radarConfig, gaugeConfig: f.gaugeConfig, legendConfig: d.legendConfig }; function m(e, t) { v["".concat(e, "Config")] ? (0, p.deepMerge)(v["".concat(e, "Config")], t) : console.warn("Change default config Error - Invalid key!") } var g = ["color", "title", "legend", "xAxis", "yAxis", "grid", "radarAxis", "line", "bar", "pie", "radar", "gauge"]; t.keys = g }, "9e4a": function (e, t, n) { var r = n("23e7"), i = n("83ab"), o = n("825a"), a = n("06cf"); r({ target: "Reflect", stat: !0, sham: !i }, { getOwnPropertyDescriptor: function (e, t) { return a.f(o(e), t) } }) }, "9e69": function (e, t, n) { var r = n("2b3e"), i = r.Symbol; e.exports = i }, "9ed3": function (e, t, n) { "use strict"; var r = n("ae93").IteratorPrototype, i = n("7c73"), o = n("5c6c"), a = n("d44e"), s = n("3f8c"), c = function () { return this }; e.exports = function (e, t, n) { var l = t + " Iterator"; return e.prototype = i(r, { next: o(1, n) }), a(e, l, !1, !0), s[l] = c, e } }, "9f7f": function (e, t, n) { var r = n("d039"), i = n("da84"), o = i.RegExp; t.UNSUPPORTED_Y = r((function () { var e = o("a", "y"); return e.lastIndex = 2, null != e.exec("abcd") })), t.BROKEN_CARET = r((function () { var e = o("^r", "gy"); return e.lastIndex = 2, null != e.exec("str") })) }, "9f96": function (e, t, n) { var r = n("23e7"), i = n("da84"), o = n("b575"), a = n("605d"), s = i.process; r({ global: !0, enumerable: !0, noTargetGet: !0 }, { queueMicrotask: function (e) { var t = a && s.domain; o(t ? t.bind(e) : e) } }) }, "9fbb": function (e, t, n) { var r = n("4d88"); e.exports = Object("z").propertyIsEnumerable(0) ? Object : function (e) { return "String" == r(e) ? e.split("") : Object(e) } }, "9fd0": function (e, t, n) { "use strict"; var r = n("6042"), i = n.n(r), o = n("4d91"), a = n("daa3"), s = n("9cba"), c = n("0c63"), l = n("2fc4"), u = n("27fd"), h = n("63c4"), f = n("e5cd"), d = n("db14"), p = { backIcon: o["a"].any, prefixCls: o["a"].string, title: o["a"].any, subTitle: o["a"].any, breadcrumb: o["a"].object, tags: o["a"].any, footer: o["a"].any, extra: o["a"].any, avatar: o["a"].object, ghost: o["a"].bool }, v = function (e, t, n, r) { var i = e.$createElement; return n && r ? i(f["a"], { attrs: { componentName: "PageHeader" } }, [function (r) { var o = r.back; return i("div", { class: t + "-back" }, [i(h["a"], { on: { click: function (t) { e.$emit("back", t) } }, class: t + "-back-button", attrs: { "aria-label": o } }, [n])]) }]) : null }, m = function (e, t) { return e(l["a"], t) }, g = function (e, t, n) { var r = n.avatar, i = Object(a["g"])(n, "title"), o = Object(a["g"])(n, "subTitle"), s = Object(a["g"])(n, "tags"), l = Object(a["g"])(n, "extra"), h = void 0 !== Object(a["g"])(n, "backIcon") ? Object(a["g"])(n, "backIcon") : e(c["a"], { attrs: { type: "arrow-left" } }), f = n.$listeners.back, d = t + "-heading"; if (i || o || s || l) { var p = v(n, t, h, f); return e("div", { class: d }, [p, r && e(u["a"], r), i && e("span", { class: d + "-title" }, [i]), o && e("span", { class: d + "-sub-title" }, [o]), s && e("span", { class: d + "-tags" }, [s]), l && e("span", { class: d + "-extra" }, [l])]) } return null }, y = function (e, t, n) { return n ? e("div", { class: t + "-footer" }, [n]) : null }, b = function (e, t, n) { return e("div", { class: t + "-content" }, [n]) }, x = { name: "APageHeader", props: p, inject: { configProvider: { default: function () { return s["a"] } } }, render: function (e) { var t = this.configProvider, n = t.getPrefixCls, r = t.pageHeader, o = Object(a["l"])(this), s = o.prefixCls, c = o.breadcrumb, l = Object(a["g"])(this, "footer"), u = this.$slots["default"], h = !0; "ghost" in o ? h = o.ghost : r && "ghost" in r && (h = r.ghost); var f = n("page-header", s), d = c && c.props && c.props.routes ? m(e, c) : null, p = [f, i()({ "has-breadcrumb": d, "has-footer": l }, f + "-ghost", h)]; return e("div", { class: p }, [d, g(e, f, this), u && b(e, f, u), y(e, f, l)]) }, install: function (e) { e.use(d["a"]), e.component(x.name, x) } }; t["a"] = x }, "9ff9": function (e, t, n) { var r = n("23e7"), i = Math.atanh, o = Math.log; r({ target: "Math", stat: !0, forced: !(i && 1 / i(-0) < 0) }, { atanh: function (e) { return 0 == (e = +e) ? e : o((1 + e) / (1 - e)) / 2 } }) }, a029: function (e, t, n) { var r = n("087d"), i = n("2dcb"), o = n("32f4"), a = n("d327"), s = Object.getOwnPropertySymbols, c = s ? function (e) { var t = []; while (e) r(t, o(e)), e = i(e); return t } : a; e.exports = c }, a04b: function (e, t, n) { var r = n("c04e"), i = n("d9b5"); e.exports = function (e) { var t = r(e, "string"); return i(t) ? t : String(t) } }, a071: function (e, t, n) { "use strict"; var r = n("92fa"), i = n.n(r), o = n("1098"), a = n.n(o), s = n("6042"), c = n.n(s), l = n("41b2"), u = n.n(l), h = n("4d91"), f = n("4d26"), d = n.n(f), p = n("b488"), v = n("daa3"), m = n("0464"), g = n("7b05"), y = n("9cba"); function b(e) { return e ? e.toString().split("").reverse().map((function (e) { var t = Number(e); return isNaN(t) ? e : t })) : [] } var x = { prefixCls: h["a"].string, count: h["a"].any, component: h["a"].string, title: h["a"].oneOfType([h["a"].number, h["a"].string, null]), displayComponent: h["a"].any, className: h["a"].object }, w = { mixins: [p["a"]], props: x, inject: { configProvider: { default: function () { return y["a"] } } }, data: function () { return { animateStarted: !0, sCount: this.count } }, watch: { count: function () { this.lastCount = this.sCount, this.setState({ animateStarted: !0 }) } }, updated: function () { var e = this, t = this.animateStarted, n = this.count; t && (this.clearTimeout(), this.timeout = setTimeout((function () { e.setState({ animateStarted: !1, sCount: n }, e.onAnimated) }))) }, beforeDestroy: function () { this.clearTimeout() }, methods: { clearTimeout: function (e) { function t() { return e.apply(this, arguments) } return t.toString = function () { return e.toString() }, t }((function () { this.timeout && (clearTimeout(this.timeout), this.timeout = void 0) })), getPositionByNum: function (e, t) { var n = this.sCount, r = Math.abs(Number(n)), i = Math.abs(Number(this.lastCount)), o = Math.abs(b(n)[t]), a = Math.abs(b(this.lastCount)[t]); return this.animateStarted ? 10 + e : r > i ? o >= a ? 10 + e : 20 + e : o <= a ? 10 + e : e }, onAnimated: function () { this.$emit("animated") }, renderNumberList: function (e, t) { for (var n = this.$createElement, r = [], i = 0; i < 30; i++)r.push(n("p", { key: i.toString(), class: d()(t, { current: e === i }) }, [i % 10])); return r }, renderCurrentNumber: function (e, t, n) { var r = this.$createElement; if ("number" === typeof t) { var i = this.getPositionByNum(t, n), o = this.animateStarted || void 0 === b(this.lastCount)[n], a = { transition: o ? "none" : void 0, msTransform: "translateY(" + 100 * -i + "%)", WebkitTransform: "translateY(" + 100 * -i + "%)", transform: "translateY(" + 100 * -i + "%)" }; return r("span", { class: e + "-only", style: a, key: n }, [this.renderNumberList(i, e + "-only-unit")]) } return r("span", { key: "symbol", class: e + "-symbol" }, [t]) }, renderNumberElement: function (e) { var t = this, n = this.sCount; return n && Number(n) % 1 === 0 ? b(n).map((function (n, r) { return t.renderCurrentNumber(e, n, r) })).reverse() : n } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.title, r = this.component, i = void 0 === r ? "sup" : r, o = this.displayComponent, a = this.className, s = this.configProvider.getPrefixCls, c = s("scroll-number", t); if (o) return Object(g["a"])(o, { class: c + "-custom-component" }); var l = Object(v["q"])(this, !0), h = Object(m["a"])(this.$props, ["count", "component", "prefixCls", "displayComponent"]), f = { props: u()({}, h), attrs: { title: n }, style: l, class: d()(c, a) }; return l && l.borderColor && (f.style.boxShadow = "0 0 0 1px " + l.borderColor + " inset"), e(i, f, [this.renderNumberElement(c)]) } }, _ = function () { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return t }, C = _("pink", "red", "yellow", "orange", "cyan", "green", "blue", "purple", "geekblue", "magenta", "volcano", "gold", "lime"), M = n("94eb"), O = n("dd3d"), k = { count: h["a"].any, showZero: h["a"].bool, overflowCount: h["a"].number, dot: h["a"].bool, prefixCls: h["a"].string, scrollNumberPrefixCls: h["a"].string, status: h["a"].oneOf(["success", "processing", "default", "error", "warning"]), color: h["a"].string, text: h["a"].string, offset: h["a"].array, numberStyle: h["a"].object.def((function () { return {} })), title: h["a"].string }; function S(e) { return -1 !== C.indexOf(e) } var T = { name: "ABadge", props: Object(v["t"])(k, { showZero: !1, dot: !1, overflowCount: 99 }), inject: { configProvider: { default: function () { return y["a"] } } }, methods: { getNumberedDispayCount: function () { var e = this.$props.overflowCount, t = this.badgeCount, n = t > e ? e + "+" : t; return n }, getDispayCount: function () { var e = this.isDot(); return e ? "" : this.getNumberedDispayCount() }, getScrollNumberTitle: function () { var e = this.$props.title, t = this.badgeCount; return e || ("string" === typeof t || "number" === typeof t ? t : void 0) }, getStyleWithOffset: function () { var e = this.$props, t = e.offset, n = e.numberStyle; return t ? u()({ right: -parseInt(t[0], 10) + "px", marginTop: Object(O["a"])(t[1]) ? t[1] + "px" : t[1] }, n) : u()({}, n) }, getBadgeClassName: function (e) { var t, n = Object(v["c"])(this.$slots["default"]), r = this.hasStatus(); return d()(e, (t = {}, c()(t, e + "-status", r), c()(t, e + "-dot-status", r && this.dot && !this.isZero()), c()(t, e + "-not-a-wrapper", !n.length), t)) }, hasStatus: function () { var e = this.$props, t = e.status, n = e.color; return !!t || !!n }, isZero: function () { var e = this.getNumberedDispayCount(); return "0" === e || 0 === e }, isDot: function () { var e = this.$props.dot, t = this.isZero(); return e && !t || this.hasStatus() }, isHidden: function () { var e = this.$props.showZero, t = this.getDispayCount(), n = this.isZero(), r = this.isDot(), i = null === t || void 0 === t || "" === t; return (i || n && !e) && !r }, renderStatusText: function (e) { var t = this.$createElement, n = this.$props.text, r = this.isHidden(); return r || !n ? null : t("span", { class: e + "-status-text" }, [n]) }, renderDispayComponent: function () { var e = this.badgeCount, t = e; if (t && "object" === ("undefined" === typeof t ? "undefined" : a()(t))) return Object(g["a"])(t, { style: this.getStyleWithOffset() }) }, renderBadgeNumber: function (e, t) { var n, r = this.$createElement, i = this.$props, o = i.status, a = i.color, s = this.badgeCount, l = this.getDispayCount(), u = this.isDot(), h = this.isHidden(), f = (n = {}, c()(n, e + "-dot", u), c()(n, e + "-count", !u), c()(n, e + "-multiple-words", !u && s && s.toString && s.toString().length > 1), c()(n, e + "-status-" + o, !!o), c()(n, e + "-status-" + a, S(a)), n), d = this.getStyleWithOffset(); return a && !S(a) && (d = d || {}, d.background = a), h ? null : r(w, { attrs: { prefixCls: t, "data-show": !h, className: f, count: l, displayComponent: this.renderDispayComponent(), title: this.getScrollNumberTitle() }, directives: [{ name: "show", value: !h }], style: d, key: "scrollNumber" }) } }, render: function () { var e, t = arguments[0], n = this.prefixCls, r = this.scrollNumberPrefixCls, o = this.status, a = this.text, s = this.color, l = this.$slots, u = this.configProvider.getPrefixCls, h = u("badge", n), f = u("scroll-number", r), p = Object(v["c"])(l["default"]), m = Object(v["g"])(this, "count"); Array.isArray(m) && (m = m[0]), this.badgeCount = m; var g = this.renderBadgeNumber(h, f), y = this.renderStatusText(h), b = d()((e = {}, c()(e, h + "-status-dot", this.hasStatus()), c()(e, h + "-status-" + o, !!o), c()(e, h + "-status-" + s, S(s)), e)), x = {}; if (s && !S(s) && (x.background = s), !p.length && this.hasStatus()) { var w = this.getStyleWithOffset(), _ = w && w.color; return t("span", i()([{ on: Object(v["k"])(this) }, { class: this.getBadgeClassName(h), style: w }]), [t("span", { class: b, style: x }), t("span", { style: { color: _ }, class: h + "-status-text" }, [a])]) } var C = Object(M["a"])(p.length ? h + "-zoom" : ""); return t("span", i()([{ on: Object(v["k"])(this) }, { class: this.getBadgeClassName(h) }]), [p, t("transition", C, [g]), y]) } }, A = n("db14"); T.install = function (e) { e.use(A["a"]), e.component(T.name, T) }; t["a"] = T }, a078: function (e, t, n) { var r = n("7b0b"), i = n("50c4"), o = n("35a1"), a = n("e95a"), s = n("0366"), c = n("ebb5").aTypedArrayConstructor; e.exports = function (e) { var t, n, l, u, h, f, d = r(e), p = arguments.length, v = p > 1 ? arguments[1] : void 0, m = void 0 !== v, g = o(d); if (void 0 != g && !a(g)) { h = g.call(d), f = h.next, d = []; while (!(u = f.call(h)).done) d.push(u.value) } for (m && p > 2 && (v = s(v, arguments[2], 2)), n = i(d.length), l = new (c(this))(n), t = 0; n > t; t++)l[t] = m ? v(d[t], t) : d[t]; return l } }, a0c4: function (e, t) { function n(e, t, n, r) { var i = -1, o = null == e ? 0 : e.length; while (++i < o) { var a = e[i]; t(r, a, n(a), e) } return r } e.exports = n }, a143: function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.radarAxis = d; var i = r(n("278c")), o = r(n("9523")), a = r(n("448a")), s = n("18ad"), c = n("9d85"), l = n("5557"), u = n("becb"); function h(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function f(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? h(Object(n), !0).forEach((function (t) { (0, o["default"])(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : h(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } function d(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.radar, r = []; n && (r = p(n), r = v(r, e), r = m(r, e), r = g(r), r = y(r), r = b(r), r = [r]); var i = r; r.length && !r[0].show && (i = []), (0, s.doUpdate)({ chart: e, series: i, key: "radarAxisSplitArea", getGraphConfig: x, beforeUpdate: C, beforeChange: M }), (0, s.doUpdate)({ chart: e, series: i, key: "radarAxisSplitLine", getGraphConfig: O, beforeUpdate: T, beforeChange: A }), (0, s.doUpdate)({ chart: e, series: i, key: "radarAxisLine", getGraphConfig: L }), (0, s.doUpdate)({ chart: e, series: i, key: "radarAxisLable", getGraphConfig: E }), e.radarAxis = r[0] } function p(e) { return (0, u.deepMerge)((0, l.deepClone)(c.radarAxisConfig), e) } function v(e, t) { var n = t.render.area, r = e.center; return e.centerPos = r.map((function (e, t) { return "number" === typeof e ? e : parseInt(e) / 100 * n[t] })), e } function m(e, t) { var n = t.render.area, r = e.splitNum, i = e.radius, o = Math.min.apply(Math, (0, a["default"])(n)) / 2; "number" !== typeof i && (i = parseInt(i) / 100 * o); var s = i / r; return e.ringRadius = new Array(r).fill(0).map((function (e, t) { return s * (t + 1) })), e.radius = i, e } function g(e) { var t = e.indicator, n = e.centerPos, r = e.radius, i = e.startAngle, o = 2 * Math.PI, s = t.length, c = o / s, u = new Array(s).fill(0).map((function (e, t) { return c * t + i })); return e.axisLineAngles = u, e.axisLinePosition = u.map((function (e) { return l.getCircleRadianPoint.apply(void 0, (0, a["default"])(n).concat([r, e])) })), e } function y(e) { var t = e.ringRadius, n = t[0] / 2; return e.areaRadius = t.map((function (e) { return e - n })), e } function b(e) { var t = e.axisLineAngles, n = e.centerPos, r = e.radius, i = e.axisLabel; return r += i.labelGap, e.axisLabelPosition = t.map((function (e) { return l.getCircleRadianPoint.apply(void 0, (0, a["default"])(n).concat([r, e])) })), e } function x(e) { var t = e.areaRadius, n = e.polygon, r = e.animationCurve, i = e.animationFrame, o = e.rLevel, a = n ? "regPolygon" : "ring"; return t.map((function (t, n) { return { name: a, index: o, visible: e.splitArea.show, animationCurve: r, animationFrame: i, shape: w(e, n), style: _(e, n) } })) } function w(e, t) { var n = e.polygon, r = e.areaRadius, i = e.indicator, o = e.centerPos, a = i.length, s = { rx: o[0], ry: o[1], r: r[t] }; return n && (s.side = a), s } function _(e, t) { var n = e.splitArea, r = e.ringRadius, i = e.axisLineAngles, o = e.polygon, s = e.centerPos, c = n.color, h = n.style; h = f({ fill: "rgba(0, 0, 0, 0)" }, h); var d = r[0] - 0; if (o) { var p = l.getCircleRadianPoint.apply(void 0, (0, a["default"])(s).concat([r[0], i[0]])), v = l.getCircleRadianPoint.apply(void 0, (0, a["default"])(s).concat([r[0], i[1]])); d = (0, u.getPointToLineDistance)(s, p, v) } if (h = (0, u.deepMerge)((0, l.deepClone)(h, !0), { lineWidth: d }), !c.length) return h; var m = c.length; return (0, u.deepMerge)(h, { stroke: c[t % m] }) } function C(e, t, n, r) { var i = e[n]; if (i) { var o = r.chart.render, a = t.polygon, s = i[0].name, c = a ? "regPolygon" : "ring", l = c !== s; l && (i.forEach((function (e) { return o.delGraph(e) })), e[n] = null) } } function M(e, t) { var n = t.shape.side; "number" === typeof n && (e.shape.side = n) } function O(e) { var t = e.ringRadius, n = e.polygon, r = e.animationCurve, i = e.animationFrame, o = e.rLevel, a = n ? "regPolygon" : "ring"; return t.map((function (t, n) { return { name: a, index: o, animationCurve: r, animationFrame: i, visible: e.splitLine.show, shape: k(e, n), style: S(e, n) } })) } function k(e, t) { var n = e.ringRadius, r = e.centerPos, i = e.indicator, o = e.polygon, a = { rx: r[0], ry: r[1], r: n[t] }, s = i.length; return o && (a.side = s), a } function S(e, t) { var n = e.splitLine, r = n.color, i = n.style; if (i = f({ fill: "rgba(0, 0, 0, 0)" }, i), !r.length) return i; var o = r.length; return (0, u.deepMerge)(i, { stroke: r[t % o] }) } function T(e, t, n, r) { var i = e[n]; if (i) { var o = r.chart.render, a = t.polygon, s = i[0].name, c = a ? "regPolygon" : "ring", l = c !== s; l && (i.forEach((function (e) { return o.delGraph(e) })), e[n] = null) } } function A(e, t) { var n = t.shape.side; "number" === typeof n && (e.shape.side = n) } function L(e) { var t = e.axisLinePosition, n = e.animationCurve, r = e.animationFrame, i = e.rLevel; return t.map((function (t, o) { return { name: "polyline", index: i, visible: e.axisLine.show, animationCurve: n, animationFrame: r, shape: j(e, o), style: z(e, o) } })) } function j(e, t) { var n = e.centerPos, r = e.axisLinePosition, i = [n, r[t]]; return { points: i } } function z(e, t) { var n = e.axisLine, r = n.color, i = n.style; if (!r.length) return i; var o = r.length; return (0, u.deepMerge)(i, { stroke: r[t % o] }) } function E(e) { var t = e.axisLabelPosition, n = e.animationCurve, r = e.animationFrame, i = e.rLevel; return t.map((function (t, o) { return { name: "text", index: i, visible: e.axisLabel.show, animationCurve: n, animationFrame: r, shape: P(e, o), style: D(e, o) } })) } function P(e, t) { var n = e.axisLabelPosition, r = e.indicator; return { content: r[t].name, position: n[t] } } function D(e, t) { var n = e.axisLabel, r = (0, i["default"])(e.centerPos, 2), o = r[0], a = r[1], s = e.axisLabelPosition, c = n.color, l = n.style, h = (0, i["default"])(s[t], 2), f = h[0], d = h[1], p = f > o ? "left" : "right", v = d > a ? "top" : "bottom"; if (l = (0, u.deepMerge)({ textAlign: p, textBaseline: v }, l), !c.length) return l; var m = c.length; return (0, u.deepMerge)(l, { fill: c[t % m] }) } }, a157: function (e, t, n) { }, a15b: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("44ad"), o = n("fc6a"), a = n("a640"), s = [].join, c = i != Object, l = a("join", ","); r({ target: "Array", proto: !0, forced: c || !l }, { join: function (e) { return s.call(o(this), void 0 === e ? "," : e) } }) }, a1bc: function (e, t, n) { }, a1ff: function (e, t, n) { }, a243: function (e, t) { var n, r = {}; function i(e, t) { if (e.length !== t.length) return !1; for (var n = 0, r = e.length; n < r; n++)if (e[n] !== t[n]) return !1; return !0 } e.exports = { _tryNum: 0, changeColor: function (e, t) { var o = window, a = t || o.Promise, s = this; if (!n) { n = o.__theme_COLOR_cfg; var c = f(); if (c) return c } var l = e.oldColors || n.colors || [], u = e.newColors || [], h = n.url || e.cssUrl; return e.changeUrl && (h = e.changeUrl(h)), new a((function (e, t) { var n = r[h]; n && (l = n.colors), i(l, u) ? e() : d(n, h, e, t) })); function f() { if (!n) { if (s._tryNum < 9) return s._tryNum = s._tryNum + 1, new a((function (n, r) { setTimeout((function () { n(s.changeColor(e, t)) }), 100) })); n = {} } } function d(t, n, i, o) { var a = t && document.getElementById(t.id); if (a && t.colors) h(a.innerText), t.colors = u, i(); else { var c = "css_" + +new Date; a = document.querySelector(e.appendToEl || "body").appendChild(document.createElement("style")), a.setAttribute("id", c), s.getCssString(n, (function (e) { h(e), r[n] = { id: c, colors: u }, i() }), o) } function h(e) { e = s.replaceCssText(e, l, u), a.innerText = e } } }, replaceCssText: function (e, t, n) { return t.forEach((function (t, r) { var i = new RegExp(t.replace(/\s/g, "").replace(/,/g, ",\\s*") + "([\\da-f]{2})?(\\b|\\)|,|\\s)", "ig"); e = e.replace(i, n[r] + "$1$2") })), e }, getCssString: function (e, t, n) { var r = window.__theme_COLOR_css; if (r) return window.__theme_COLOR_css = "", void t(r); var i = new XMLHttpRequest; i.onreadystatechange = function () { 4 === i.readyState && (200 === i.status ? t(i.responseText) : n(i.status)) }, i.onerror = function (e) { n(e) }, i.ontimeout = function (e) { n(e) }, i.open("GET", e), i.send() } } }, a2be: function (e, t, n) { var r = n("d612"), i = n("4284"), o = n("c584"), a = 1, s = 2; function c(e, t, n, c, l, u) { var h = n & a, f = e.length, d = t.length; if (f != d && !(h && d > f)) return !1; var p = u.get(e), v = u.get(t); if (p && v) return p == t && v == e; var m = -1, g = !0, y = n & s ? new r : void 0; u.set(e, t), u.set(t, e); while (++m < f) { var b = e[m], x = t[m]; if (c) var w = h ? c(x, b, m, t, e, u) : c(b, x, m, e, t, u); if (void 0 !== w) { if (w) continue; g = !1; break } if (y) { if (!i(t, (function (e, t) { if (!o(y, t) && (b === e || l(b, e, n, c, u))) return y.push(t) }))) { g = !1; break } } else if (b !== x && !l(b, x, n, c, u)) { g = !1; break } } return u["delete"](e), u["delete"](t), g } e.exports = c }, a2bf: function (e, t, n) { "use strict"; var r = n("e8b5"), i = n("50c4"), o = n("0366"), a = function (e, t, n, s, c, l, u, h) { var f, d = c, p = 0, v = !!u && o(u, h, 3); while (p < s) { if (p in n) { if (f = v ? v(n[p], p, t) : n[p], l > 0 && r(f)) d = a(e, t, f, i(f.length), d, l - 1) - 1; else { if (d >= 9007199254740991) throw TypeError("Exceed the acceptable array length"); e[d] = f } d++ } p++ } return d }; e.exports = a }, a2db: function (e, t, n) { var r = n("9e69"), i = r ? r.prototype : void 0, o = i ? i.valueOf : void 0; function a(e) { return o ? Object(o.call(e)) : {} } e.exports = a }, a34a: function (e, t, n) { e.exports = n("98b8") }, a3a2: function (e, t, n) { "use strict"; var r = n("92fa"), i = n.n(r), o = n("1098"), a = n.n(o), s = n("6042"), c = n.n(s), l = n("41b2"), u = n.n(l), h = n("0464"), f = n("4d91"), d = n("8496"), p = n("18a7"), v = n("e90a"), m = n("1462"), g = { adjustX: 1, adjustY: 1 }, y = { topLeft: { points: ["bl", "tl"], overflow: g, offset: [0, -7] }, bottomLeft: { points: ["tl", "bl"], overflow: g, offset: [0, 7] }, leftTop: { points: ["tr", "tl"], overflow: g, offset: [-4, 0] }, rightTop: { points: ["tl", "tr"], overflow: g, offset: [4, 0] } }, b = y, x = n("b488"), w = n("daa3"), _ = n("d41d"), C = n("2b89"), M = n("94eb"), O = 0, k = { horizontal: "bottomLeft", vertical: "rightTop", "vertical-left": "rightTop", "vertical-right": "leftTop" }, S = function (e, t, n) { var r = Object(C["b"])(t), i = e.getState(); e.setState({ defaultActiveFirst: u()({}, i.defaultActiveFirst, c()({}, r, n)) }) }, T = { name: "SubMenu", props: { parentMenu: f["a"].object, title: f["a"].any, selectedKeys: f["a"].array.def([]), openKeys: f["a"].array.def([]), openChange: f["a"].func.def(C["h"]), rootPrefixCls: f["a"].string, eventKey: f["a"].oneOfType([f["a"].string, f["a"].number]), multiple: f["a"].bool, active: f["a"].bool, isRootMenu: f["a"].bool.def(!1), index: f["a"].number, triggerSubMenuAction: f["a"].string, popupClassName: f["a"].string, getPopupContainer: f["a"].func, forceSubMenuRender: f["a"].bool, openAnimation: f["a"].oneOfType([f["a"].string, f["a"].object]), disabled: f["a"].bool, subMenuOpenDelay: f["a"].number.def(.1), subMenuCloseDelay: f["a"].number.def(.1), level: f["a"].number.def(1), inlineIndent: f["a"].number.def(24), openTransitionName: f["a"].string, popupOffset: f["a"].array, isOpen: f["a"].bool, store: f["a"].object, mode: f["a"].oneOf(["horizontal", "vertical", "vertical-left", "vertical-right", "inline"]).def("vertical"), manualRef: f["a"].func.def(C["h"]), builtinPlacements: f["a"].object.def((function () { return {} })), itemIcon: f["a"].any, expandIcon: f["a"].any, subMenuKey: f["a"].string }, mixins: [x["a"]], isSubMenu: !0, data: function () { var e = this.$props, t = e.store, n = e.eventKey, r = t.getState().defaultActiveFirst, i = !1; return r && (i = r[n]), S(t, n, i), {} }, mounted: function () { var e = this; this.$nextTick((function () { e.handleUpdated() })) }, updated: function () { var e = this; this.$nextTick((function () { e.handleUpdated() })) }, beforeDestroy: function () { var e = this.eventKey; this.__emit("destroy", e), this.minWidthTimeout && (Object(_["a"])(this.minWidthTimeout), this.minWidthTimeout = null), this.mouseenterTimeout && (Object(_["a"])(this.mouseenterTimeout), this.mouseenterTimeout = null) }, methods: { handleUpdated: function () { var e = this, t = this.$props, n = t.mode, r = t.parentMenu, i = t.manualRef; i && i(this), "horizontal" === n && r.isRootMenu && this.isOpen && (this.minWidthTimeout = Object(_["b"])((function () { return e.adjustWidth() }), 0)) }, onKeyDown: function (e) { var t = e.keyCode, n = this.menuInstance, r = this.$props, i = r.store, o = r.isOpen; if (t === p["a"].ENTER) return this.onTitleClick(e), S(i, this.eventKey, !0), !0; if (t === p["a"].RIGHT) return o ? n.onKeyDown(e) : (this.triggerOpenChange(!0), S(i, this.eventKey, !0)), !0; if (t === p["a"].LEFT) { var a = void 0; if (!o) return; return a = n.onKeyDown(e), a || (this.triggerOpenChange(!1), a = !0), a } return !o || t !== p["a"].UP && t !== p["a"].DOWN ? void 0 : n.onKeyDown(e) }, onPopupVisibleChange: function (e) { this.triggerOpenChange(e, e ? "mouseenter" : "mouseleave") }, onMouseEnter: function (e) { var t = this.$props, n = t.eventKey, r = t.store; S(r, n, !1), this.__emit("mouseenter", { key: n, domEvent: e }) }, onMouseLeave: function (e) { var t = this.eventKey, n = this.parentMenu; n.subMenuInstance = this, this.__emit("mouseleave", { key: t, domEvent: e }) }, onTitleMouseEnter: function (e) { var t = this.$props.eventKey; this.__emit("itemHover", { key: t, hover: !0 }), this.__emit("titleMouseenter", { key: t, domEvent: e }) }, onTitleMouseLeave: function (e) { var t = this.eventKey, n = this.parentMenu; n.subMenuInstance = this, this.__emit("itemHover", { key: t, hover: !1 }), this.__emit("titleMouseleave", { key: t, domEvent: e }) }, onTitleClick: function (e) { var t = this.$props, n = t.triggerSubMenuAction, r = t.eventKey, i = t.isOpen, o = t.store; this.__emit("titleClick", { key: r, domEvent: e }), "hover" !== n && (this.triggerOpenChange(!i, "click"), S(o, r, !1)) }, onSubMenuClick: function (e) { this.__emit("click", this.addKeyPath(e)) }, getPrefixCls: function () { return this.$props.rootPrefixCls + "-submenu" }, getActiveClassName: function () { return this.getPrefixCls() + "-active" }, getDisabledClassName: function () { return this.getPrefixCls() + "-disabled" }, getSelectedClassName: function () { return this.getPrefixCls() + "-selected" }, getOpenClassName: function () { return this.$props.rootPrefixCls + "-submenu-open" }, saveMenuInstance: function (e) { this.menuInstance = e }, addKeyPath: function (e) { return u()({}, e, { keyPath: (e.keyPath || []).concat(this.$props.eventKey) }) }, triggerOpenChange: function (e, t) { var n = this, r = this.$props.eventKey, i = function () { n.__emit("openChange", { key: r, item: n, trigger: t, open: e }) }; "mouseenter" === t ? this.mouseenterTimeout = Object(_["b"])((function () { i() }), 0) : i() }, isChildrenSelected: function () { var e = { find: !1 }; return Object(C["f"])(this.$slots["default"], this.$props.selectedKeys, e), e.find }, adjustWidth: function () { if (this.$refs.subMenuTitle && this.menuInstance) { var e = this.menuInstance.$el; e.offsetWidth >= this.$refs.subMenuTitle.offsetWidth || (e.style.minWidth = this.$refs.subMenuTitle.offsetWidth + "px") } }, renderChildren: function (e) { var t = this.$createElement, n = this.$props, r = Object(w["k"])(this), o = r.select, s = r.deselect, c = r.openChange, l = { props: { mode: "horizontal" === n.mode ? "vertical" : n.mode, visible: n.isOpen, level: n.level + 1, inlineIndent: n.inlineIndent, focusable: !1, selectedKeys: n.selectedKeys, eventKey: n.eventKey + "-menu-", openKeys: n.openKeys, openTransitionName: n.openTransitionName, openAnimation: n.openAnimation, subMenuOpenDelay: n.subMenuOpenDelay, parentMenu: this, subMenuCloseDelay: n.subMenuCloseDelay, forceSubMenuRender: n.forceSubMenuRender, triggerSubMenuAction: n.triggerSubMenuAction, builtinPlacements: n.builtinPlacements, defaultActiveFirst: n.store.getState().defaultActiveFirst[Object(C["b"])(n.eventKey)], multiple: n.multiple, prefixCls: n.rootPrefixCls, manualRef: this.saveMenuInstance, itemIcon: Object(w["g"])(this, "itemIcon"), expandIcon: Object(w["g"])(this, "expandIcon"), children: e }, on: { click: this.onSubMenuClick, select: o, deselect: s, openChange: c }, id: this.internalMenuId }, h = l.props, f = this.haveRendered; if (this.haveRendered = !0, this.haveOpened = this.haveOpened || h.visible || h.forceSubMenuRender, !this.haveOpened) return t("div"); var d = f || !h.visible || "inline" === !h.mode; l["class"] = " " + h.prefixCls + "-sub"; var p = { appear: d, css: !1 }, v = { props: p, on: {} }; return h.openTransitionName ? v = Object(M["a"])(h.openTransitionName, { appear: d }) : "object" === a()(h.openAnimation) ? (p = u()({}, p, h.openAnimation.props || {}), d || (p.appear = !1)) : "string" === typeof h.openAnimation && (v = Object(M["a"])(h.openAnimation, { appear: d })), "object" === a()(h.openAnimation) && h.openAnimation.on && (v.on = h.openAnimation.on), t("transition", v, [t(m["a"], i()([{ directives: [{ name: "show", value: n.isOpen }] }, l]))]) } }, render: function () { var e, t, n = arguments[0], r = this.$props, o = this.rootPrefixCls, a = this.parentMenu, s = r.isOpen, l = this.getPrefixCls(), f = "inline" === r.mode, p = (e = {}, c()(e, l, !0), c()(e, l + "-" + r.mode, !0), c()(e, this.getOpenClassName(), s), c()(e, this.getActiveClassName(), r.active || s && !f), c()(e, this.getDisabledClassName(), r.disabled), c()(e, this.getSelectedClassName(), this.isChildrenSelected()), e); this.internalMenuId || (r.eventKey ? this.internalMenuId = r.eventKey + "$Menu" : this.internalMenuId = "$__$" + ++O + "$Menu"); var v = {}, m = {}, g = {}; r.disabled || (v = { mouseleave: this.onMouseLeave, mouseenter: this.onMouseEnter }, m = { click: this.onTitleClick }, g = { mouseenter: this.onTitleMouseEnter, mouseleave: this.onTitleMouseLeave }); var y = {}; f && (y.paddingLeft = r.inlineIndent * r.level + "px"); var x = {}; s && (x = { "aria-owns": this.internalMenuId }); var _ = { attrs: u()({ "aria-expanded": s }, x, { "aria-haspopup": "true", title: "string" === typeof r.title ? r.title : void 0 }), on: u()({}, g, m), style: y, class: l + "-title", ref: "subMenuTitle" }, C = null; "horizontal" !== r.mode && (C = Object(w["g"])(this, "expandIcon", r)); var M = n("div", _, [Object(w["g"])(this, "title"), C || n("i", { class: l + "-arrow" })]), S = this.renderChildren(Object(w["c"])(this.$slots["default"])), T = this.parentMenu.isRootMenu ? this.parentMenu.getPopupContainer : function (e) { return e.parentNode }, A = k[r.mode], L = r.popupOffset ? { offset: r.popupOffset } : {}, j = "inline" === r.mode ? "" : r.popupClassName, z = { on: u()({}, Object(h["a"])(Object(w["k"])(this), ["click"]), v), class: p }; return n("li", i()([z, { attrs: { role: "menuitem" } }]), [f && M, f && S, !f && n(d["a"], { attrs: (t = { prefixCls: l, popupClassName: l + "-popup " + o + "-" + a.theme + " " + (j || ""), getPopupContainer: T, builtinPlacements: b }, c()(t, "builtinPlacements", u()({}, b, r.builtinPlacements)), c()(t, "popupPlacement", A), c()(t, "popupVisible", s), c()(t, "popupAlign", L), c()(t, "action", r.disabled ? [] : [r.triggerSubMenuAction]), c()(t, "mouseEnterDelay", r.subMenuOpenDelay), c()(t, "mouseLeaveDelay", r.subMenuCloseDelay), c()(t, "forceRender", r.forceSubMenuRender), t), on: { popupVisibleChange: this.onPopupVisibleChange } }, [n("template", { slot: "popup" }, [S]), M])]) } }, A = Object(v["a"])((function (e, t) { var n = e.openKeys, r = e.activeKey, i = e.selectedKeys, o = t.eventKey, a = t.subMenuKey; return { isOpen: n.indexOf(o) > -1, active: r[a] === o, selectedKeys: i } }))(T); A.isSubMenu = !0; t["a"] = A }, a434: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("23cb"), o = n("a691"), a = n("50c4"), s = n("7b0b"), c = n("65f0"), l = n("8418"), u = n("1dde"), h = u("splice"), f = Math.max, d = Math.min, p = 9007199254740991, v = "Maximum allowed length exceeded"; r({ target: "Array", proto: !0, forced: !h }, { splice: function (e, t) { var n, r, u, h, m, g, y = s(this), b = a(y.length), x = i(e, b), w = arguments.length; if (0 === w ? n = r = 0 : 1 === w ? (n = 0, r = b - x) : (n = w - 2, r = d(f(o(t), 0), b - x)), b + n - r > p) throw TypeError(v); for (u = c(y, r), h = 0; h < r; h++)m = x + h, m in y && l(u, h, y[m]); if (u.length = r, n < r) { for (h = x; h < b - r; h++)m = h + r, g = h + n, m in y ? y[g] = y[m] : delete y[g]; for (h = b; h > b - r + n; h--)delete y[h - 1] } else if (n > r) for (h = b - r; h > x; h--)m = h + r - 1, g = h + n - 1, m in y ? y[g] = y[m] : delete y[g]; for (h = 0; h < n; h++)y[h + x] = arguments[h + 2]; return y.length = b - r + n, u } }) }, a454: function (e, t, n) { var r = n("72f0"), i = n("3b4a"), o = n("cd9d"), a = i ? function (e, t) { return i(e, "toString", { configurable: !0, enumerable: !1, value: r(t), writable: !0 }) } : o; e.exports = a }, a4b4: function (e, t, n) { var r = n("342f"); e.exports = /web0s(?!.*chrome)/i.test(r) }, a4d3: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("da84"), o = n("d066"), a = n("c430"), s = n("83ab"), c = n("4930"), l = n("d039"), u = n("5135"), h = n("e8b5"), f = n("861d"), d = n("d9b5"), p = n("825a"), v = n("7b0b"), m = n("fc6a"), g = n("a04b"), y = n("577e"), b = n("5c6c"), x = n("7c73"), w = n("df75"), _ = n("241c"), C = n("057f"), M = n("7418"), O = n("06cf"), k = n("9bf2"), S = n("d1e7"), T = n("9112"), A = n("6eeb"), L = n("5692"), j = n("f772"), z = n("d012"), E = n("90e3"), P = n("b622"), D = n("e538"), H = n("746f"), V = n("d44e"), I = n("69f3"), N = n("b727").forEach, R = j("hidden"), F = "Symbol", Y = "prototype", $ = P("toPrimitive"), B = I.set, W = I.getterFor(F), q = Object[Y], U = i.Symbol, K = o("JSON", "stringify"), G = O.f, X = k.f, J = C.f, Q = S.f, Z = L("symbols"), ee = L("op-symbols"), te = L("string-to-symbol-registry"), ne = L("symbol-to-string-registry"), re = L("wks"), ie = i.QObject, oe = !ie || !ie[Y] || !ie[Y].findChild, ae = s && l((function () { return 7 != x(X({}, "a", { get: function () { return X(this, "a", { value: 7 }).a } })).a })) ? function (e, t, n) { var r = G(q, t); r && delete q[t], X(e, t, n), r && e !== q && X(q, t, r) } : X, se = function (e, t) { var n = Z[e] = x(U[Y]); return B(n, { type: F, tag: e, description: t }), s || (n.description = t), n }, ce = function (e, t, n) { e === q && ce(ee, t, n), p(e); var r = g(t); return p(n), u(Z, r) ? (n.enumerable ? (u(e, R) && e[R][r] && (e[R][r] = !1), n = x(n, { enumerable: b(0, !1) })) : (u(e, R) || X(e, R, b(1, {})), e[R][r] = !0), ae(e, r, n)) : X(e, r, n) }, le = function (e, t) { p(e); var n = m(t), r = w(n).concat(pe(n)); return N(r, (function (t) { s && !he.call(n, t) || ce(e, t, n[t]) })), e }, ue = function (e, t) { return void 0 === t ? x(e) : le(x(e), t) }, he = function (e) { var t = g(e), n = Q.call(this, t); return !(this === q && u(Z, t) && !u(ee, t)) && (!(n || !u(this, t) || !u(Z, t) || u(this, R) && this[R][t]) || n) }, fe = function (e, t) { var n = m(e), r = g(t); if (n !== q || !u(Z, r) || u(ee, r)) { var i = G(n, r); return !i || !u(Z, r) || u(n, R) && n[R][r] || (i.enumerable = !0), i } }, de = function (e) { var t = J(m(e)), n = []; return N(t, (function (e) { u(Z, e) || u(z, e) || n.push(e) })), n }, pe = function (e) { var t = e === q, n = J(t ? ee : m(e)), r = []; return N(n, (function (e) { !u(Z, e) || t && !u(q, e) || r.push(Z[e]) })), r }; if (c || (U = function () { if (this instanceof U) throw TypeError("Symbol is not a constructor"); var e = arguments.length && void 0 !== arguments[0] ? y(arguments[0]) : void 0, t = E(e), n = function (e) { this === q && n.call(ee, e), u(this, R) && u(this[R], t) && (this[R][t] = !1), ae(this, t, b(1, e)) }; return s && oe && ae(q, t, { configurable: !0, set: n }), se(t, e) }, A(U[Y], "toString", (function () { return W(this).tag })), A(U, "withoutSetter", (function (e) { return se(E(e), e) })), S.f = he, k.f = ce, O.f = fe, _.f = C.f = de, M.f = pe, D.f = function (e) { return se(P(e), e) }, s && (X(U[Y], "description", { configurable: !0, get: function () { return W(this).description } }), a || A(q, "propertyIsEnumerable", he, { unsafe: !0 }))), r({ global: !0, wrap: !0, forced: !c, sham: !c }, { Symbol: U }), N(w(re), (function (e) { H(e) })), r({ target: F, stat: !0, forced: !c }, { for: function (e) { var t = y(e); if (u(te, t)) return te[t]; var n = U(t); return te[t] = n, ne[n] = t, n }, keyFor: function (e) { if (!d(e)) throw TypeError(e + " is not a symbol"); if (u(ne, e)) return ne[e] }, useSetter: function () { oe = !0 }, useSimple: function () { oe = !1 } }), r({ target: "Object", stat: !0, forced: !c, sham: !s }, { create: ue, defineProperty: ce, defineProperties: le, getOwnPropertyDescriptor: fe }), r({ target: "Object", stat: !0, forced: !c }, { getOwnPropertyNames: de, getOwnPropertySymbols: pe }), r({ target: "Object", stat: !0, forced: l((function () { M.f(1) })) }, { getOwnPropertySymbols: function (e) { return M.f(v(e)) } }), K) { var ve = !c || l((function () { var e = U(); return "[null]" != K([e]) || "{}" != K({ a: e }) || "{}" != K(Object(e)) })); r({ target: "JSON", stat: !0, forced: ve }, { stringify: function (e, t, n) { var r, i = [e], o = 1; while (arguments.length > o) i.push(arguments[o++]); if (r = t, (f(t) || void 0 !== e) && !d(e)) return h(t) || (t = function (e, t) { if ("function" == typeof r && (t = r.call(this, e, t)), !d(t)) return t }), i[1] = t, K.apply(null, i) } }) } U[Y][$] || T(U[Y], $, U[Y].valueOf), V(U, F), z[R] = !0 }, a524: function (e, t, n) { var r = n("4245"); function i(e) { return r(this, e).has(e) } e.exports = i }, a54e: function (e, t, n) { }, a600: function (e, t, n) { "use strict"; var r = n("c1b3"), i = n("452c"), o = n("db14"); r["a"].Button = i["a"], r["a"].install = function (e) { e.use(o["a"]), e.component(r["a"].name, r["a"]), e.component(i["a"].name, i["a"]) }, t["a"] = r["a"] }, a630: function (e, t, n) { var r = n("23e7"), i = n("4df4"), o = n("1c7e"), a = !o((function (e) { Array.from(e) })); r({ target: "Array", stat: !0, forced: a }, { from: i }) }, a640: function (e, t, n) { "use strict"; var r = n("d039"); e.exports = function (e, t) { var n = [][e]; return !!n && r((function () { n.call(null, t || function () { throw 1 }, 1) })) } }, a691: function (e, t) { var n = Math.ceil, r = Math.floor; e.exports = function (e) { return isNaN(e = +e) ? 0 : (e > 0 ? r : n)(e) } }, a6b6: function (e, t, n) { "use strict"; var r = n("6042"), i = n.n(r), o = n("92fa"), a = n.n(o), s = n("4d91"), c = n("4d26"), l = n.n(c), u = n("daa3"), h = n("da05"), f = n("9cba"), d = n("fe2b"), p = n("7b05"), v = { prefixCls: s["a"].string, extra: s["a"].any, actions: s["a"].arrayOf(s["a"].any), grid: d["a"] }, m = (s["a"].any, s["a"].any, s["a"].string, s["a"].any, { functional: !0, name: "AListItemMeta", __ANT_LIST_ITEM_META: !0, inject: { configProvider: { default: function () { return f["a"] } } }, render: function (e, t) { var n = t.props, r = t.slots, i = t.listeners, o = t.injections, s = r(), c = o.configProvider.getPrefixCls, l = n.prefixCls, u = c("list", l), h = n.avatar || s.avatar, f = n.title || s.title, d = n.description || s.description, p = e("div", { class: u + "-item-meta-content" }, [f && e("h4", { class: u + "-item-meta-title" }, [f]), d && e("div", { class: u + "-item-meta-description" }, [d])]); return e("div", a()([{ on: i }, { class: u + "-item-meta" }]), [h && e("div", { class: u + "-item-meta-avatar" }, [h]), (f || d) && p]) } }); function g(e, t) { return e[t] && Math.floor(24 / e[t]) } t["a"] = { name: "AListItem", Meta: m, props: v, inject: { listContext: { default: function () { return {} } }, configProvider: { default: function () { return f["a"] } } }, methods: { isItemContainsTextNodeAndNotSingular: function () { var e = this.$slots, t = void 0, n = e["default"] || []; return n.forEach((function (e) { Object(u["v"])(e) && !Object(u["u"])(e) && (t = !0) })), t && n.length > 1 }, isFlexMode: function () { var e = Object(u["g"])(this, "extra"), t = this.listContext.itemLayout; return "vertical" === t ? !!e : !this.isItemContainsTextNodeAndNotSingular() } }, render: function () { var e = arguments[0], t = this.listContext, n = t.grid, r = t.itemLayout, o = this.prefixCls, s = this.$slots, c = Object(u["k"])(this), f = this.configProvider.getPrefixCls, d = f("list", o), v = Object(u["g"])(this, "extra"), m = Object(u["g"])(this, "actions"), y = m && m.length > 0 && e("ul", { class: d + "-item-action", key: "actions" }, [m.map((function (t, n) { return e("li", { key: d + "-item-action-" + n }, [t, n !== m.length - 1 && e("em", { class: d + "-item-action-split" })]) }))]), b = n ? "div" : "li", x = e(b, a()([{ on: c }, { class: l()(d + "-item", i()({}, d + "-item-no-flex", !this.isFlexMode())) }]), ["vertical" === r && v ? [e("div", { class: d + "-item-main", key: "content" }, [s["default"], y]), e("div", { class: d + "-item-extra", key: "extra" }, [v])] : [s["default"], y, Object(p["a"])(v, { key: "extra" })]]), w = n ? e(h["b"], { attrs: { span: g(n, "column"), xs: g(n, "xs"), sm: g(n, "sm"), md: g(n, "md"), lg: g(n, "lg"), xl: g(n, "xl"), xxl: g(n, "xxl") } }, [x]) : x; return w } } }, a6fd: function (e, t, n) { var r = n("23e7"), i = n("d066"), o = n("1c0b"), a = n("825a"), s = n("d039"), c = i("Reflect", "apply"), l = Function.apply, u = !s((function () { c((function () { })) })); r({ target: "Reflect", stat: !0, forced: u }, { apply: function (e, t, n) { return o(e), a(n), c ? c(e, t, n) : l.call(e, t, n) } }) }, a736: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), Object.defineProperty(t, "mergeColor", { enumerable: !0, get: function () { return r.mergeColor } }), Object.defineProperty(t, "title", { enumerable: !0, get: function () { return i.title } }), Object.defineProperty(t, "grid", { enumerable: !0, get: function () { return o.grid } }), Object.defineProperty(t, "axis", { enumerable: !0, get: function () { return a.axis } }), Object.defineProperty(t, "line", { enumerable: !0, get: function () { return s.line } }), Object.defineProperty(t, "bar", { enumerable: !0, get: function () { return c.bar } }), Object.defineProperty(t, "pie", { enumerable: !0, get: function () { return l.pie } }), Object.defineProperty(t, "radarAxis", { enumerable: !0, get: function () { return u.radarAxis } }), Object.defineProperty(t, "radar", { enumerable: !0, get: function () { return h.radar } }), Object.defineProperty(t, "gauge", { enumerable: !0, get: function () { return f.gauge } }), Object.defineProperty(t, "legend", { enumerable: !0, get: function () { return d.legend } }); var r = n("8a1d"), i = n("873c"), o = n("46bb"), a = n("0680"), s = n("252f"), c = n("204e"), l = n("729e"), u = n("a143"), h = n("4eb1"), f = n("1f55"), d = n("60f7") }, a79d: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("c430"), o = n("fea9"), a = n("d039"), s = n("d066"), c = n("4840"), l = n("cdf9"), u = n("6eeb"), h = !!o && a((function () { o.prototype["finally"].call({ then: function () { } }, (function () { })) })); if (r({ target: "Promise", proto: !0, real: !0, forced: h }, { finally: function (e) { var t = c(this, s("Promise")), n = "function" == typeof e; return this.then(n ? function (n) { return l(t, e()).then((function () { return n })) } : e, n ? function (n) { return l(t, e()).then((function () { throw n })) } : e) } }), !i && "function" == typeof o) { var f = s("Promise").prototype["finally"]; o.prototype["finally"] !== f && u(o.prototype, "finally", f, { unsafe: !0 }) } }, a79d8: function (e, t, n) { "use strict"; var r = n("6042"), i = n.n(r), o = n("4d91"), a = n("9cba"), s = n("db14"), c = { name: "ADivider", props: { prefixCls: o["a"].string, type: o["a"].oneOf(["horizontal", "vertical", ""]).def("horizontal"), dashed: o["a"].bool, orientation: o["a"].oneOf(["left", "right", "center"]) }, inject: { configProvider: { default: function () { return a["a"] } } }, render: function () { var e, t = arguments[0], n = this.prefixCls, r = this.type, o = this.$slots, a = this.dashed, s = this.orientation, c = void 0 === s ? "center" : s, l = this.configProvider.getPrefixCls, u = l("divider", n), h = c.length > 0 ? "-" + c : c, f = (e = {}, i()(e, u, !0), i()(e, u + "-" + r, !0), i()(e, u + "-with-text" + h, o["default"]), i()(e, u + "-dashed", !!a), e); return t("div", { class: f, attrs: { role: "separator" } }, [o["default"] && t("span", { class: u + "-inner-text" }, [o["default"]])]) }, install: function (e) { e.use(s["a"]), e.component(c.name, c) } }; t["a"] = c }, a874: function (e, t, n) { var r = n("23e7"), i = n("145e"), o = n("44d2"); r({ target: "Array", proto: !0 }, { copyWithin: i }), o("copyWithin") }, a8fc: function (e, t, n) { var r = n("badf"), i = n("2c66"); function o(e, t) { return e && e.length ? i(e, r(t, 2)) : [] } e.exports = o }, a975: function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("b727").every, o = r.aTypedArray, a = r.exportTypedArrayMethod; a("every", (function (e) { return i(o(this), e, arguments.length > 1 ? arguments[1] : void 0) })) }, a981: function (e, t) { e.exports = "undefined" !== typeof ArrayBuffer && "undefined" !== typeof DataView }, a994: function (e, t, n) { var r = n("7d1f"), i = n("32f4"), o = n("ec69"); function a(e) { return r(e, o, i) } e.exports = a }, a9d4: function (e, t, n) { "use strict"; var r = n("c544"), i = n("b6bb"), o = n("9cba"), a = void 0; function s(e) { return !e || null === e.offsetParent } function c(e) { var t = (e || "").match(/rgba?\((\d*), (\d*), (\d*)(, [\.\d]*)?\)/); return !(t && t[1] && t[2] && t[3]) || !(t[1] === t[2] && t[2] === t[3]) } t["a"] = { name: "Wave", props: ["insertExtraNode"], mounted: function () { var e = this; this.$nextTick((function () { var t = e.$el; 1 === t.nodeType && (e.instance = e.bindAnimationEvent(t)) })) }, inject: { configProvider: { default: function () { return o["a"] } } }, beforeDestroy: function () { this.instance && this.instance.cancel(), this.clickWaveTimeoutId && clearTimeout(this.clickWaveTimeoutId), this.destroy = !0 }, methods: { onClick: function (e, t) { if (!(!e || s(e) || e.className.indexOf("-leave") >= 0)) { var n = this.$props.insertExtraNode; this.extraNode = document.createElement("div"); var i = this.extraNode; i.className = "ant-click-animating-node"; var o = this.getAttributeName(); e.removeAttribute(o), e.setAttribute(o, "true"), a = a || document.createElement("style"), t && "#ffffff" !== t && "rgb(255, 255, 255)" !== t && c(t) && !/rgba\(\d*, \d*, \d*, 0\)/.test(t) && "transparent" !== t && (this.csp && this.csp.nonce && (a.nonce = this.csp.nonce), i.style.borderColor = t, a.innerHTML = "\n        [ant-click-animating-without-extra-node='true']::after, .ant-click-animating-node {\n          --antd-wave-shadow-color: " + t + ";\n        }", document.body.contains(a) || document.body.appendChild(a)), n && e.appendChild(i), r["a"].addStartEventListener(e, this.onTransitionStart), r["a"].addEndEventListener(e, this.onTransitionEnd) } }, onTransitionStart: function (e) { if (!this.destroy) { var t = this.$el; e && e.target === t && (this.animationStart || this.resetEffect(t)) } }, onTransitionEnd: function (e) { e && "fadeEffect" === e.animationName && this.resetEffect(e.target) }, getAttributeName: function () { var e = this.$props.insertExtraNode; return e ? "ant-click-animating" : "ant-click-animating-without-extra-node" }, bindAnimationEvent: function (e) { var t = this; if (e && e.getAttribute && !e.getAttribute("disabled") && !(e.className.indexOf("disabled") >= 0)) { var n = function (n) { if ("INPUT" !== n.target.tagName && !s(n.target)) { t.resetEffect(e); var r = getComputedStyle(e).getPropertyValue("border-top-color") || getComputedStyle(e).getPropertyValue("border-color") || getComputedStyle(e).getPropertyValue("background-color"); t.clickWaveTimeoutId = window.setTimeout((function () { return t.onClick(e, r) }), 0), i["a"].cancel(t.animationStartId), t.animationStart = !0, t.animationStartId = Object(i["a"])((function () { t.animationStart = !1 }), 10) } }; return e.addEventListener("click", n, !0), { cancel: function () { e.removeEventListener("click", n, !0) } } } }, resetEffect: function (e) { if (e && e !== this.extraNode && e instanceof Element) { var t = this.$props.insertExtraNode, n = this.getAttributeName(); e.setAttribute(n, "false"), a && (a.innerHTML = ""), t && this.extraNode && e.contains(this.extraNode) && e.removeChild(this.extraNode), r["a"].removeStartEventListener(e, this.onTransitionStart), r["a"].removeEndEventListener(e, this.onTransitionEnd) } } }, render: function () { return this.configProvider.csp && (this.csp = this.configProvider.csp), this.$slots["default"] && this.$slots["default"][0] } } }, a9e3: function (e, t, n) { "use strict"; var r = n("83ab"), i = n("da84"), o = n("94ca"), a = n("6eeb"), s = n("5135"), c = n("c6b6"), l = n("7156"), u = n("d9b5"), h = n("c04e"), f = n("d039"), d = n("7c73"), p = n("241c").f, v = n("06cf").f, m = n("9bf2").f, g = n("58a8").trim, y = "Number", b = i[y], x = b.prototype, w = c(d(x)) == y, _ = function (e) { if (u(e)) throw TypeError("Cannot convert a Symbol value to a number"); var t, n, r, i, o, a, s, c, l = h(e, "number"); if ("string" == typeof l && l.length > 2) if (l = g(l), t = l.charCodeAt(0), 43 === t || 45 === t) { if (n = l.charCodeAt(2), 88 === n || 120 === n) return NaN } else if (48 === t) { switch (l.charCodeAt(1)) { case 66: case 98: r = 2, i = 49; break; case 79: case 111: r = 8, i = 55; break; default: return +l }for (o = l.slice(2), a = o.length, s = 0; s < a; s++)if (c = o.charCodeAt(s), c < 48 || c > i) return NaN; return parseInt(o, r) } return +l }; if (o(y, !b(" 0o1") || !b("0b1") || b("+0x1"))) { for (var C, M = function (e) { var t = arguments.length < 1 ? 0 : e, n = this; return n instanceof M && (w ? f((function () { x.valueOf.call(n) })) : c(n) != y) ? l(new b(_(t)), n, M) : _(t) }, O = r ? p(b) : "MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","), k = 0; O.length > k; k++)s(b, C = O[k]) && !s(M, C) && m(M, C, v(b, C)); M.prototype = x, x.constructor = M, a(i, y, M) } }, aa47: function (e, t, n) {
+        "use strict";
+        /**!
+         * Sortable 1.10.2
+         * @author	RubaXa   <trash@rubaxa.org>
+         * @author	owenm    <owen23355@gmail.com>
+         * @license MIT
+         */
+        function r(e) { return r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r(e) } function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function o() { return o = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) } return e }, o.apply(this, arguments) } function a(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}, r = Object.keys(n); "function" === typeof Object.getOwnPropertySymbols && (r = r.concat(Object.getOwnPropertySymbols(n).filter((function (e) { return Object.getOwnPropertyDescriptor(n, e).enumerable })))), r.forEach((function (t) { i(e, t, n[t]) })) } return e } function s(e, t) { if (null == e) return {}; var n, r, i = {}, o = Object.keys(e); for (r = 0; r < o.length; r++)n = o[r], t.indexOf(n) >= 0 || (i[n] = e[n]); return i } function c(e, t) { if (null == e) return {}; var n, r, i = s(e, t); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); for (r = 0; r < o.length; r++)n = o[r], t.indexOf(n) >= 0 || Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n]) } return i } function l(e) { return u(e) || h(e) || f() } function u(e) { if (Array.isArray(e)) { for (var t = 0, n = new Array(e.length); t < e.length; t++)n[t] = e[t]; return n } } function h(e) { if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e) } function f() { throw new TypeError("Invalid attempt to spread non-iterable instance") } n.r(t), n.d(t, "MultiDrag", (function () { return It })), n.d(t, "Sortable", (function () { return Qe })), n.d(t, "Swap", (function () { return kt })); var d = "1.10.2"; function p(e) { if ("undefined" !== typeof window && window.navigator) return !!navigator.userAgent.match(e) } var v = p(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i), m = p(/Edge/i), g = p(/firefox/i), y = p(/safari/i) && !p(/chrome/i) && !p(/android/i), b = p(/iP(ad|od|hone)/i), x = p(/chrome/i) && p(/android/i), w = { capture: !1, passive: !1 }; function _(e, t, n) { e.addEventListener(t, n, !v && w) } function C(e, t, n) { e.removeEventListener(t, n, !v && w) } function M(e, t) { if (t) { if (">" === t[0] && (t = t.substring(1)), e) try { if (e.matches) return e.matches(t); if (e.msMatchesSelector) return e.msMatchesSelector(t); if (e.webkitMatchesSelector) return e.webkitMatchesSelector(t) } catch (n) { return !1 } return !1 } } function O(e) { return e.host && e !== document && e.host.nodeType ? e.host : e.parentNode } function k(e, t, n, r) { if (e) { n = n || document; do { if (null != t && (">" === t[0] ? e.parentNode === n && M(e, t) : M(e, t)) || r && e === n) return e; if (e === n) break } while (e = O(e)) } return null } var S, T = /\s+/g; function A(e, t, n) { if (e && t) if (e.classList) e.classList[n ? "add" : "remove"](t); else { var r = (" " + e.className + " ").replace(T, " ").replace(" " + t + " ", " "); e.className = (r + (n ? " " + t : "")).replace(T, " ") } } function L(e, t, n) { var r = e && e.style; if (r) { if (void 0 === n) return document.defaultView && document.defaultView.getComputedStyle ? n = document.defaultView.getComputedStyle(e, "") : e.currentStyle && (n = e.currentStyle), void 0 === t ? n : n[t]; t in r || -1 !== t.indexOf("webkit") || (t = "-webkit-" + t), r[t] = n + ("string" === typeof n ? "" : "px") } } function j(e, t) { var n = ""; if ("string" === typeof e) n = e; else do { var r = L(e, "transform"); r && "none" !== r && (n = r + " " + n) } while (!t && (e = e.parentNode)); var i = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix; return i && new i(n) } function z(e, t, n) { if (e) { var r = e.getElementsByTagName(t), i = 0, o = r.length; if (n) for (; i < o; i++)n(r[i], i); return r } return [] } function E() { var e = document.scrollingElement; return e || document.documentElement } function P(e, t, n, r, i) { if (e.getBoundingClientRect || e === window) { var o, a, s, c, l, u, h; if (e !== window && e !== E() ? (o = e.getBoundingClientRect(), a = o.top, s = o.left, c = o.bottom, l = o.right, u = o.height, h = o.width) : (a = 0, s = 0, c = window.innerHeight, l = window.innerWidth, u = window.innerHeight, h = window.innerWidth), (t || n) && e !== window && (i = i || e.parentNode, !v)) do { if (i && i.getBoundingClientRect && ("none" !== L(i, "transform") || n && "static" !== L(i, "position"))) { var f = i.getBoundingClientRect(); a -= f.top + parseInt(L(i, "border-top-width")), s -= f.left + parseInt(L(i, "border-left-width")), c = a + o.height, l = s + o.width; break } } while (i = i.parentNode); if (r && e !== window) { var d = j(i || e), p = d && d.a, m = d && d.d; d && (a /= m, s /= p, h /= p, u /= m, c = a + u, l = s + h) } return { top: a, left: s, bottom: c, right: l, width: h, height: u } } } function D(e, t, n) { var r = F(e, !0), i = P(e)[t]; while (r) { var o = P(r)[n], a = void 0; if (a = "top" === n || "left" === n ? i >= o : i <= o, !a) return r; if (r === E()) break; r = F(r, !1) } return !1 } function H(e, t, n) { var r = 0, i = 0, o = e.children; while (i < o.length) { if ("none" !== o[i].style.display && o[i] !== Qe.ghost && o[i] !== Qe.dragged && k(o[i], n.draggable, e, !1)) { if (r === t) return o[i]; r++ } i++ } return null } function V(e, t) { var n = e.lastElementChild; while (n && (n === Qe.ghost || "none" === L(n, "display") || t && !M(n, t))) n = n.previousElementSibling; return n || null } function I(e, t) { var n = 0; if (!e || !e.parentNode) return -1; while (e = e.previousElementSibling) "TEMPLATE" === e.nodeName.toUpperCase() || e === Qe.clone || t && !M(e, t) || n++; return n } function N(e) { var t = 0, n = 0, r = E(); if (e) do { var i = j(e), o = i.a, a = i.d; t += e.scrollLeft * o, n += e.scrollTop * a } while (e !== r && (e = e.parentNode)); return [t, n] } function R(e, t) { for (var n in e) if (e.hasOwnProperty(n)) for (var r in t) if (t.hasOwnProperty(r) && t[r] === e[n][r]) return Number(n); return -1 } function F(e, t) { if (!e || !e.getBoundingClientRect) return E(); var n = e, r = !1; do { if (n.clientWidth < n.scrollWidth || n.clientHeight < n.scrollHeight) { var i = L(n); if (n.clientWidth < n.scrollWidth && ("auto" == i.overflowX || "scroll" == i.overflowX) || n.clientHeight < n.scrollHeight && ("auto" == i.overflowY || "scroll" == i.overflowY)) { if (!n.getBoundingClientRect || n === document.body) return E(); if (r || t) return n; r = !0 } } } while (n = n.parentNode); return E() } function Y(e, t) { if (e && t) for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]); return e } function $(e, t) { return Math.round(e.top) === Math.round(t.top) && Math.round(e.left) === Math.round(t.left) && Math.round(e.height) === Math.round(t.height) && Math.round(e.width) === Math.round(t.width) } function B(e, t) { return function () { if (!S) { var n = arguments, r = this; 1 === n.length ? e.call(r, n[0]) : e.apply(r, n), S = setTimeout((function () { S = void 0 }), t) } } } function W() { clearTimeout(S), S = void 0 } function q(e, t, n) { e.scrollLeft += t, e.scrollTop += n } function U(e) { var t = window.Polymer, n = window.jQuery || window.Zepto; return t && t.dom ? t.dom(e).cloneNode(!0) : n ? n(e).clone(!0)[0] : e.cloneNode(!0) } function K(e, t) { L(e, "position", "absolute"), L(e, "top", t.top), L(e, "left", t.left), L(e, "width", t.width), L(e, "height", t.height) } function G(e) { L(e, "position", ""), L(e, "top", ""), L(e, "left", ""), L(e, "width", ""), L(e, "height", "") } var X = "Sortable" + (new Date).getTime(); function J() { var e, t = []; return { captureAnimationState: function () { if (t = [], this.options.animation) { var e = [].slice.call(this.el.children); e.forEach((function (e) { if ("none" !== L(e, "display") && e !== Qe.ghost) { t.push({ target: e, rect: P(e) }); var n = a({}, t[t.length - 1].rect); if (e.thisAnimationDuration) { var r = j(e, !0); r && (n.top -= r.f, n.left -= r.e) } e.fromRect = n } })) } }, addAnimationState: function (e) { t.push(e) }, removeAnimationState: function (e) { t.splice(R(t, { target: e }), 1) }, animateAll: function (n) { var r = this; if (!this.options.animation) return clearTimeout(e), void ("function" === typeof n && n()); var i = !1, o = 0; t.forEach((function (e) { var t = 0, n = e.target, a = n.fromRect, s = P(n), c = n.prevFromRect, l = n.prevToRect, u = e.rect, h = j(n, !0); h && (s.top -= h.f, s.left -= h.e), n.toRect = s, n.thisAnimationDuration && $(c, s) && !$(a, s) && (u.top - s.top) / (u.left - s.left) === (a.top - s.top) / (a.left - s.left) && (t = Z(u, c, l, r.options)), $(s, a) || (n.prevFromRect = a, n.prevToRect = s, t || (t = r.options.animation), r.animate(n, u, s, t)), t && (i = !0, o = Math.max(o, t), clearTimeout(n.animationResetTimer), n.animationResetTimer = setTimeout((function () { n.animationTime = 0, n.prevFromRect = null, n.fromRect = null, n.prevToRect = null, n.thisAnimationDuration = null }), t), n.thisAnimationDuration = t) })), clearTimeout(e), i ? e = setTimeout((function () { "function" === typeof n && n() }), o) : "function" === typeof n && n(), t = [] }, animate: function (e, t, n, r) { if (r) { L(e, "transition", ""), L(e, "transform", ""); var i = j(this.el), o = i && i.a, a = i && i.d, s = (t.left - n.left) / (o || 1), c = (t.top - n.top) / (a || 1); e.animatingX = !!s, e.animatingY = !!c, L(e, "transform", "translate3d(" + s + "px," + c + "px,0)"), Q(e), L(e, "transition", "transform " + r + "ms" + (this.options.easing ? " " + this.options.easing : "")), L(e, "transform", "translate3d(0,0,0)"), "number" === typeof e.animated && clearTimeout(e.animated), e.animated = setTimeout((function () { L(e, "transition", ""), L(e, "transform", ""), e.animated = !1, e.animatingX = !1, e.animatingY = !1 }), r) } } } } function Q(e) { return e.offsetWidth } function Z(e, t, n, r) { return Math.sqrt(Math.pow(t.top - e.top, 2) + Math.pow(t.left - e.left, 2)) / Math.sqrt(Math.pow(t.top - n.top, 2) + Math.pow(t.left - n.left, 2)) * r.animation } var ee = [], te = { initializeByDefault: !0 }, ne = { mount: function (e) { for (var t in te) te.hasOwnProperty(t) && !(t in e) && (e[t] = te[t]); ee.push(e) }, pluginEvent: function (e, t, n) { var r = this; this.eventCanceled = !1, n.cancel = function () { r.eventCanceled = !0 }; var i = e + "Global"; ee.forEach((function (r) { t[r.pluginName] && (t[r.pluginName][i] && t[r.pluginName][i](a({ sortable: t }, n)), t.options[r.pluginName] && t[r.pluginName][e] && t[r.pluginName][e](a({ sortable: t }, n))) })) }, initializePlugins: function (e, t, n, r) { for (var i in ee.forEach((function (r) { var i = r.pluginName; if (e.options[i] || r.initializeByDefault) { var a = new r(e, t, e.options); a.sortable = e, a.options = e.options, e[i] = a, o(n, a.defaults) } })), e.options) if (e.options.hasOwnProperty(i)) { var a = this.modifyOption(e, i, e.options[i]); "undefined" !== typeof a && (e.options[i] = a) } }, getEventProperties: function (e, t) { var n = {}; return ee.forEach((function (r) { "function" === typeof r.eventProperties && o(n, r.eventProperties.call(t[r.pluginName], e)) })), n }, modifyOption: function (e, t, n) { var r; return ee.forEach((function (i) { e[i.pluginName] && i.optionListeners && "function" === typeof i.optionListeners[t] && (r = i.optionListeners[t].call(e[i.pluginName], n)) })), r } }; function re(e) { var t = e.sortable, n = e.rootEl, r = e.name, i = e.targetEl, o = e.cloneEl, s = e.toEl, c = e.fromEl, l = e.oldIndex, u = e.newIndex, h = e.oldDraggableIndex, f = e.newDraggableIndex, d = e.originalEvent, p = e.putSortable, g = e.extraEventProperties; if (t = t || n && n[X], t) { var y, b = t.options, x = "on" + r.charAt(0).toUpperCase() + r.substr(1); !window.CustomEvent || v || m ? (y = document.createEvent("Event"), y.initEvent(r, !0, !0)) : y = new CustomEvent(r, { bubbles: !0, cancelable: !0 }), y.to = s || n, y.from = c || n, y.item = i || n, y.clone = o, y.oldIndex = l, y.newIndex = u, y.oldDraggableIndex = h, y.newDraggableIndex = f, y.originalEvent = d, y.pullMode = p ? p.lastPutMode : void 0; var w = a({}, g, ne.getEventProperties(r, t)); for (var _ in w) y[_] = w[_]; n && n.dispatchEvent(y), b[x] && b[x].call(t, y) } } var ie = function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, r = n.evt, i = c(n, ["evt"]); ne.pluginEvent.bind(Qe)(e, t, a({ dragEl: ae, parentEl: se, ghostEl: ce, rootEl: le, nextEl: ue, lastDownEl: he, cloneEl: fe, cloneHidden: de, dragStarted: ke, putSortable: be, activeSortable: Qe.active, originalEvent: r, oldIndex: pe, oldDraggableIndex: me, newIndex: ve, newDraggableIndex: ge, hideGhostForTarget: Ke, unhideGhostForTarget: Ge, cloneNowHidden: function () { de = !0 }, cloneNowShown: function () { de = !1 }, dispatchSortableEvent: function (e) { oe({ sortable: t, name: e, originalEvent: r }) } }, i)) }; function oe(e) { re(a({ putSortable: be, cloneEl: fe, targetEl: ae, rootEl: le, oldIndex: pe, oldDraggableIndex: me, newIndex: ve, newDraggableIndex: ge }, e)) } var ae, se, ce, le, ue, he, fe, de, pe, ve, me, ge, ye, be, xe, we, _e, Ce, Me, Oe, ke, Se, Te, Ae, Le, je = !1, ze = !1, Ee = [], Pe = !1, De = !1, He = [], Ve = !1, Ie = [], Ne = "undefined" !== typeof document, Re = b, Fe = m || v ? "cssFloat" : "float", Ye = Ne && !x && !b && "draggable" in document.createElement("div"), $e = function () { if (Ne) { if (v) return !1; var e = document.createElement("x"); return e.style.cssText = "pointer-events:auto", "auto" === e.style.pointerEvents } }(), Be = function (e, t) { var n = L(e), r = parseInt(n.width) - parseInt(n.paddingLeft) - parseInt(n.paddingRight) - parseInt(n.borderLeftWidth) - parseInt(n.borderRightWidth), i = H(e, 0, t), o = H(e, 1, t), a = i && L(i), s = o && L(o), c = a && parseInt(a.marginLeft) + parseInt(a.marginRight) + P(i).width, l = s && parseInt(s.marginLeft) + parseInt(s.marginRight) + P(o).width; if ("flex" === n.display) return "column" === n.flexDirection || "column-reverse" === n.flexDirection ? "vertical" : "horizontal"; if ("grid" === n.display) return n.gridTemplateColumns.split(" ").length <= 1 ? "vertical" : "horizontal"; if (i && a["float"] && "none" !== a["float"]) { var u = "left" === a["float"] ? "left" : "right"; return !o || "both" !== s.clear && s.clear !== u ? "horizontal" : "vertical" } return i && ("block" === a.display || "flex" === a.display || "table" === a.display || "grid" === a.display || c >= r && "none" === n[Fe] || o && "none" === n[Fe] && c + l > r) ? "vertical" : "horizontal" }, We = function (e, t, n) { var r = n ? e.left : e.top, i = n ? e.right : e.bottom, o = n ? e.width : e.height, a = n ? t.left : t.top, s = n ? t.right : t.bottom, c = n ? t.width : t.height; return r === a || i === s || r + o / 2 === a + c / 2 }, qe = function (e, t) { var n; return Ee.some((function (r) { if (!V(r)) { var i = P(r), o = r[X].options.emptyInsertThreshold, a = e >= i.left - o && e <= i.right + o, s = t >= i.top - o && t <= i.bottom + o; return o && a && s ? n = r : void 0 } })), n }, Ue = function (e) { function t(e, n) { return function (r, i, o, a) { var s = r.options.group.name && i.options.group.name && r.options.group.name === i.options.group.name; if (null == e && (n || s)) return !0; if (null == e || !1 === e) return !1; if (n && "clone" === e) return e; if ("function" === typeof e) return t(e(r, i, o, a), n)(r, i, o, a); var c = (n ? r : i).options.group.name; return !0 === e || "string" === typeof e && e === c || e.join && e.indexOf(c) > -1 } } var n = {}, i = e.group; i && "object" == r(i) || (i = { name: i }), n.name = i.name, n.checkPull = t(i.pull, !0), n.checkPut = t(i.put), n.revertClone = i.revertClone, e.group = n }, Ke = function () { !$e && ce && L(ce, "display", "none") }, Ge = function () { !$e && ce && L(ce, "display", "") }; Ne && document.addEventListener("click", (function (e) { if (ze) return e.preventDefault(), e.stopPropagation && e.stopPropagation(), e.stopImmediatePropagation && e.stopImmediatePropagation(), ze = !1, !1 }), !0); var Xe = function (e) { if (ae) { e = e.touches ? e.touches[0] : e; var t = qe(e.clientX, e.clientY); if (t) { var n = {}; for (var r in e) e.hasOwnProperty(r) && (n[r] = e[r]); n.target = n.rootEl = t, n.preventDefault = void 0, n.stopPropagation = void 0, t[X]._onDragOver(n) } } }, Je = function (e) { ae && ae.parentNode[X]._isOutsideThisEl(e.target) }; function Qe(e, t) { if (!e || !e.nodeType || 1 !== e.nodeType) throw "Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e)); this.el = e, this.options = t = o({}, t), e[X] = this; var n = { group: null, sort: !0, disabled: !1, store: null, handle: null, draggable: /^[uo]l$/i.test(e.nodeName) ? ">li" : ">*", swapThreshold: 1, invertSwap: !1, invertedSwapThreshold: null, removeCloneOnHide: !0, direction: function () { return Be(e, this.options) }, ghostClass: "sortable-ghost", chosenClass: "sortable-chosen", dragClass: "sortable-drag", ignore: "a, img", filter: null, preventOnFilter: !0, animation: 0, easing: null, setData: function (e, t) { e.setData("Text", t.textContent) }, dropBubble: !1, dragoverBubble: !1, dataIdAttr: "data-id", delay: 0, delayOnTouchOnly: !1, touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1, forceFallback: !1, fallbackClass: "sortable-fallback", fallbackOnBody: !1, fallbackTolerance: 0, fallbackOffset: { x: 0, y: 0 }, supportPointer: !1 !== Qe.supportPointer && "PointerEvent" in window, emptyInsertThreshold: 5 }; for (var r in ne.initializePlugins(this, e, n), n) !(r in t) && (t[r] = n[r]); for (var i in Ue(t), this) "_" === i.charAt(0) && "function" === typeof this[i] && (this[i] = this[i].bind(this)); this.nativeDraggable = !t.forceFallback && Ye, this.nativeDraggable && (this.options.touchStartThreshold = 1), t.supportPointer ? _(e, "pointerdown", this._onTapStart) : (_(e, "mousedown", this._onTapStart), _(e, "touchstart", this._onTapStart)), this.nativeDraggable && (_(e, "dragover", this), _(e, "dragenter", this)), Ee.push(this.el), t.store && t.store.get && this.sort(t.store.get(this) || []), o(this, J()) } function Ze(e) { e.dataTransfer && (e.dataTransfer.dropEffect = "move"), e.cancelable && e.preventDefault() } function et(e, t, n, r, i, o, a, s) { var c, l, u = e[X], h = u.options.onMove; return !window.CustomEvent || v || m ? (c = document.createEvent("Event"), c.initEvent("move", !0, !0)) : c = new CustomEvent("move", { bubbles: !0, cancelable: !0 }), c.to = t, c.from = e, c.dragged = n, c.draggedRect = r, c.related = i || t, c.relatedRect = o || P(t), c.willInsertAfter = s, c.originalEvent = a, e.dispatchEvent(c), h && (l = h.call(u, c, a)), l } function tt(e) { e.draggable = !1 } function nt() { Ve = !1 } function rt(e, t, n) { var r = P(V(n.el, n.options.draggable)), i = 10; return t ? e.clientX > r.right + i || e.clientX <= r.right && e.clientY > r.bottom && e.clientX >= r.left : e.clientX > r.right && e.clientY > r.top || e.clientX <= r.right && e.clientY > r.bottom + i } function it(e, t, n, r, i, o, a, s) { var c = r ? e.clientY : e.clientX, l = r ? n.height : n.width, u = r ? n.top : n.left, h = r ? n.bottom : n.right, f = !1; if (!a) if (s && Ae < l * i) { if (!Pe && (1 === Te ? c > u + l * o / 2 : c < h - l * o / 2) && (Pe = !0), Pe) f = !0; else if (1 === Te ? c < u + Ae : c > h - Ae) return -Te } else if (c > u + l * (1 - i) / 2 && c < h - l * (1 - i) / 2) return ot(t); return f = f || a, f && (c < u + l * o / 2 || c > h - l * o / 2) ? c > u + l / 2 ? 1 : -1 : 0 } function ot(e) { return I(ae) < I(e) ? 1 : -1 } function at(e) { var t = e.tagName + e.className + e.src + e.href + e.textContent, n = t.length, r = 0; while (n--) r += t.charCodeAt(n); return r.toString(36) } function st(e) { Ie.length = 0; var t = e.getElementsByTagName("input"), n = t.length; while (n--) { var r = t[n]; r.checked && Ie.push(r) } } function ct(e) { return setTimeout(e, 0) } function lt(e) { return clearTimeout(e) } Qe.prototype = { constructor: Qe, _isOutsideThisEl: function (e) { this.el.contains(e) || e === this.el || (Se = null) }, _getDirection: function (e, t) { return "function" === typeof this.options.direction ? this.options.direction.call(this, e, t, ae) : this.options.direction }, _onTapStart: function (e) { if (e.cancelable) { var t = this, n = this.el, r = this.options, i = r.preventOnFilter, o = e.type, a = e.touches && e.touches[0] || e.pointerType && "touch" === e.pointerType && e, s = (a || e).target, c = e.target.shadowRoot && (e.path && e.path[0] || e.composedPath && e.composedPath()[0]) || s, l = r.filter; if (st(n), !ae && !(/mousedown|pointerdown/.test(o) && 0 !== e.button || r.disabled) && !c.isContentEditable && (s = k(s, r.draggable, n, !1), (!s || !s.animated) && he !== s)) { if (pe = I(s), me = I(s, r.draggable), "function" === typeof l) { if (l.call(this, e, s, this)) return oe({ sortable: t, rootEl: c, name: "filter", targetEl: s, toEl: n, fromEl: n }), ie("filter", t, { evt: e }), void (i && e.cancelable && e.preventDefault()) } else if (l && (l = l.split(",").some((function (r) { if (r = k(c, r.trim(), n, !1), r) return oe({ sortable: t, rootEl: r, name: "filter", targetEl: s, fromEl: n, toEl: n }), ie("filter", t, { evt: e }), !0 })), l)) return void (i && e.cancelable && e.preventDefault()); r.handle && !k(c, r.handle, n, !1) || this._prepareDragStart(e, a, s) } } }, _prepareDragStart: function (e, t, n) { var r, i = this, o = i.el, a = i.options, s = o.ownerDocument; if (n && !ae && n.parentNode === o) { var c = P(n); if (le = o, ae = n, se = ae.parentNode, ue = ae.nextSibling, he = n, ye = a.group, Qe.dragged = ae, xe = { target: ae, clientX: (t || e).clientX, clientY: (t || e).clientY }, Me = xe.clientX - c.left, Oe = xe.clientY - c.top, this._lastX = (t || e).clientX, this._lastY = (t || e).clientY, ae.style["will-change"] = "all", r = function () { ie("delayEnded", i, { evt: e }), Qe.eventCanceled ? i._onDrop() : (i._disableDelayedDragEvents(), !g && i.nativeDraggable && (ae.draggable = !0), i._triggerDragStart(e, t), oe({ sortable: i, name: "choose", originalEvent: e }), A(ae, a.chosenClass, !0)) }, a.ignore.split(",").forEach((function (e) { z(ae, e.trim(), tt) })), _(s, "dragover", Xe), _(s, "mousemove", Xe), _(s, "touchmove", Xe), _(s, "mouseup", i._onDrop), _(s, "touchend", i._onDrop), _(s, "touchcancel", i._onDrop), g && this.nativeDraggable && (this.options.touchStartThreshold = 4, ae.draggable = !0), ie("delayStart", this, { evt: e }), !a.delay || a.delayOnTouchOnly && !t || this.nativeDraggable && (m || v)) r(); else { if (Qe.eventCanceled) return void this._onDrop(); _(s, "mouseup", i._disableDelayedDrag), _(s, "touchend", i._disableDelayedDrag), _(s, "touchcancel", i._disableDelayedDrag), _(s, "mousemove", i._delayedDragTouchMoveHandler), _(s, "touchmove", i._delayedDragTouchMoveHandler), a.supportPointer && _(s, "pointermove", i._delayedDragTouchMoveHandler), i._dragStartTimer = setTimeout(r, a.delay) } } }, _delayedDragTouchMoveHandler: function (e) { var t = e.touches ? e.touches[0] : e; Math.max(Math.abs(t.clientX - this._lastX), Math.abs(t.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1)) && this._disableDelayedDrag() }, _disableDelayedDrag: function () { ae && tt(ae), clearTimeout(this._dragStartTimer), this._disableDelayedDragEvents() }, _disableDelayedDragEvents: function () { var e = this.el.ownerDocument; C(e, "mouseup", this._disableDelayedDrag), C(e, "touchend", this._disableDelayedDrag), C(e, "touchcancel", this._disableDelayedDrag), C(e, "mousemove", this._delayedDragTouchMoveHandler), C(e, "touchmove", this._delayedDragTouchMoveHandler), C(e, "pointermove", this._delayedDragTouchMoveHandler) }, _triggerDragStart: function (e, t) { t = t || "touch" == e.pointerType && e, !this.nativeDraggable || t ? this.options.supportPointer ? _(document, "pointermove", this._onTouchMove) : _(document, t ? "touchmove" : "mousemove", this._onTouchMove) : (_(ae, "dragend", this), _(le, "dragstart", this._onDragStart)); try { document.selection ? ct((function () { document.selection.empty() })) : window.getSelection().removeAllRanges() } catch (n) { } }, _dragStarted: function (e, t) { if (je = !1, le && ae) { ie("dragStarted", this, { evt: t }), this.nativeDraggable && _(document, "dragover", Je); var n = this.options; !e && A(ae, n.dragClass, !1), A(ae, n.ghostClass, !0), Qe.active = this, e && this._appendGhost(), oe({ sortable: this, name: "start", originalEvent: t }) } else this._nulling() }, _emulateDragOver: function () { if (we) { this._lastX = we.clientX, this._lastY = we.clientY, Ke(); var e = document.elementFromPoint(we.clientX, we.clientY), t = e; while (e && e.shadowRoot) { if (e = e.shadowRoot.elementFromPoint(we.clientX, we.clientY), e === t) break; t = e } if (ae.parentNode[X]._isOutsideThisEl(e), t) do { if (t[X]) { var n = void 0; if (n = t[X]._onDragOver({ clientX: we.clientX, clientY: we.clientY, target: e, rootEl: t }), n && !this.options.dragoverBubble) break } e = t } while (t = t.parentNode); Ge() } }, _onTouchMove: function (e) { if (xe) { var t = this.options, n = t.fallbackTolerance, r = t.fallbackOffset, i = e.touches ? e.touches[0] : e, o = ce && j(ce, !0), a = ce && o && o.a, s = ce && o && o.d, c = Re && Le && N(Le), l = (i.clientX - xe.clientX + r.x) / (a || 1) + (c ? c[0] - He[0] : 0) / (a || 1), u = (i.clientY - xe.clientY + r.y) / (s || 1) + (c ? c[1] - He[1] : 0) / (s || 1); if (!Qe.active && !je) { if (n && Math.max(Math.abs(i.clientX - this._lastX), Math.abs(i.clientY - this._lastY)) < n) return; this._onDragStart(e, !0) } if (ce) { o ? (o.e += l - (_e || 0), o.f += u - (Ce || 0)) : o = { a: 1, b: 0, c: 0, d: 1, e: l, f: u }; var h = "matrix(".concat(o.a, ",").concat(o.b, ",").concat(o.c, ",").concat(o.d, ",").concat(o.e, ",").concat(o.f, ")"); L(ce, "webkitTransform", h), L(ce, "mozTransform", h), L(ce, "msTransform", h), L(ce, "transform", h), _e = l, Ce = u, we = i } e.cancelable && e.preventDefault() } }, _appendGhost: function () { if (!ce) { var e = this.options.fallbackOnBody ? document.body : le, t = P(ae, !0, Re, !0, e), n = this.options; if (Re) { Le = e; while ("static" === L(Le, "position") && "none" === L(Le, "transform") && Le !== document) Le = Le.parentNode; Le !== document.body && Le !== document.documentElement ? (Le === document && (Le = E()), t.top += Le.scrollTop, t.left += Le.scrollLeft) : Le = E(), He = N(Le) } ce = ae.cloneNode(!0), A(ce, n.ghostClass, !1), A(ce, n.fallbackClass, !0), A(ce, n.dragClass, !0), L(ce, "transition", ""), L(ce, "transform", ""), L(ce, "box-sizing", "border-box"), L(ce, "margin", 0), L(ce, "top", t.top), L(ce, "left", t.left), L(ce, "width", t.width), L(ce, "height", t.height), L(ce, "opacity", "0.8"), L(ce, "position", Re ? "absolute" : "fixed"), L(ce, "zIndex", "100000"), L(ce, "pointerEvents", "none"), Qe.ghost = ce, e.appendChild(ce), L(ce, "transform-origin", Me / parseInt(ce.style.width) * 100 + "% " + Oe / parseInt(ce.style.height) * 100 + "%") } }, _onDragStart: function (e, t) { var n = this, r = e.dataTransfer, i = n.options; ie("dragStart", this, { evt: e }), Qe.eventCanceled ? this._onDrop() : (ie("setupClone", this), Qe.eventCanceled || (fe = U(ae), fe.draggable = !1, fe.style["will-change"] = "", this._hideClone(), A(fe, this.options.chosenClass, !1), Qe.clone = fe), n.cloneId = ct((function () { ie("clone", n), Qe.eventCanceled || (n.options.removeCloneOnHide || le.insertBefore(fe, ae), n._hideClone(), oe({ sortable: n, name: "clone" })) })), !t && A(ae, i.dragClass, !0), t ? (ze = !0, n._loopId = setInterval(n._emulateDragOver, 50)) : (C(document, "mouseup", n._onDrop), C(document, "touchend", n._onDrop), C(document, "touchcancel", n._onDrop), r && (r.effectAllowed = "move", i.setData && i.setData.call(n, r, ae)), _(document, "drop", n), L(ae, "transform", "translateZ(0)")), je = !0, n._dragStartId = ct(n._dragStarted.bind(n, t, e)), _(document, "selectstart", n), ke = !0, y && L(document.body, "user-select", "none")) }, _onDragOver: function (e) { var t, n, r, i, o = this.el, s = e.target, c = this.options, l = c.group, u = Qe.active, h = ye === l, f = c.sort, d = be || u, p = this, v = !1; if (!Ve) { if (void 0 !== e.preventDefault && e.cancelable && e.preventDefault(), s = k(s, c.draggable, o, !0), z("dragOver"), Qe.eventCanceled) return v; if (ae.contains(e.target) || s.animated && s.animatingX && s.animatingY || p._ignoreWhileAnimating === s) return H(!1); if (ze = !1, u && !c.disabled && (h ? f || (r = !le.contains(ae)) : be === this || (this.lastPutMode = ye.checkPull(this, u, ae, e)) && l.checkPut(this, u, ae, e))) { if (i = "vertical" === this._getDirection(e, s), t = P(ae), z("dragOverValid"), Qe.eventCanceled) return v; if (r) return se = le, E(), this._hideClone(), z("revert"), Qe.eventCanceled || (ue ? le.insertBefore(ae, ue) : le.appendChild(ae)), H(!0); var m = V(o, c.draggable); if (!m || rt(e, i, this) && !m.animated) { if (m === ae) return H(!1); if (m && o === e.target && (s = m), s && (n = P(s)), !1 !== et(le, o, ae, t, s, n, e, !!s)) return E(), o.appendChild(ae), se = o, N(), H(!0) } else if (s.parentNode === o) { n = P(s); var g, y, b = 0, x = ae.parentNode !== o, w = !We(ae.animated && ae.toRect || t, s.animated && s.toRect || n, i), _ = i ? "top" : "left", C = D(s, "top", "top") || D(ae, "top", "top"), M = C ? C.scrollTop : void 0; if (Se !== s && (g = n[_], Pe = !1, De = !w && c.invertSwap || x), b = it(e, s, n, i, w ? 1 : c.swapThreshold, null == c.invertedSwapThreshold ? c.swapThreshold : c.invertedSwapThreshold, De, Se === s), 0 !== b) { var O = I(ae); do { O -= b, y = se.children[O] } while (y && ("none" === L(y, "display") || y === ce)) } if (0 === b || y === s) return H(!1); Se = s, Te = b; var S = s.nextElementSibling, T = !1; T = 1 === b; var j = et(le, o, ae, t, s, n, e, T); if (!1 !== j) return 1 !== j && -1 !== j || (T = 1 === j), Ve = !0, setTimeout(nt, 30), E(), T && !S ? o.appendChild(ae) : s.parentNode.insertBefore(ae, T ? S : s), C && q(C, 0, M - C.scrollTop), se = ae.parentNode, void 0 === g || De || (Ae = Math.abs(g - P(s)[_])), N(), H(!0) } if (o.contains(ae)) return H(!1) } return !1 } function z(c, l) { ie(c, p, a({ evt: e, isOwner: h, axis: i ? "vertical" : "horizontal", revert: r, dragRect: t, targetRect: n, canSort: f, fromSortable: d, target: s, completed: H, onMove: function (n, r) { return et(le, o, ae, t, n, P(n), e, r) }, changed: N }, l)) } function E() { z("dragOverAnimationCapture"), p.captureAnimationState(), p !== d && d.captureAnimationState() } function H(t) { return z("dragOverCompleted", { insertion: t }), t && (h ? u._hideClone() : u._showClone(p), p !== d && (A(ae, be ? be.options.ghostClass : u.options.ghostClass, !1), A(ae, c.ghostClass, !0)), be !== p && p !== Qe.active ? be = p : p === Qe.active && be && (be = null), d === p && (p._ignoreWhileAnimating = s), p.animateAll((function () { z("dragOverAnimationComplete"), p._ignoreWhileAnimating = null })), p !== d && (d.animateAll(), d._ignoreWhileAnimating = null)), (s === ae && !ae.animated || s === o && !s.animated) && (Se = null), c.dragoverBubble || e.rootEl || s === document || (ae.parentNode[X]._isOutsideThisEl(e.target), !t && Xe(e)), !c.dragoverBubble && e.stopPropagation && e.stopPropagation(), v = !0 } function N() { ve = I(ae), ge = I(ae, c.draggable), oe({ sortable: p, name: "change", toEl: o, newIndex: ve, newDraggableIndex: ge, originalEvent: e }) } }, _ignoreWhileAnimating: null, _offMoveEvents: function () { C(document, "mousemove", this._onTouchMove), C(document, "touchmove", this._onTouchMove), C(document, "pointermove", this._onTouchMove), C(document, "dragover", Xe), C(document, "mousemove", Xe), C(document, "touchmove", Xe) }, _offUpEvents: function () { var e = this.el.ownerDocument; C(e, "mouseup", this._onDrop), C(e, "touchend", this._onDrop), C(e, "pointerup", this._onDrop), C(e, "touchcancel", this._onDrop), C(document, "selectstart", this) }, _onDrop: function (e) { var t = this.el, n = this.options; ve = I(ae), ge = I(ae, n.draggable), ie("drop", this, { evt: e }), se = ae && ae.parentNode, ve = I(ae), ge = I(ae, n.draggable), Qe.eventCanceled || (je = !1, De = !1, Pe = !1, clearInterval(this._loopId), clearTimeout(this._dragStartTimer), lt(this.cloneId), lt(this._dragStartId), this.nativeDraggable && (C(document, "drop", this), C(t, "dragstart", this._onDragStart)), this._offMoveEvents(), this._offUpEvents(), y && L(document.body, "user-select", ""), L(ae, "transform", ""), e && (ke && (e.cancelable && e.preventDefault(), !n.dropBubble && e.stopPropagation()), ce && ce.parentNode && ce.parentNode.removeChild(ce), (le === se || be && "clone" !== be.lastPutMode) && fe && fe.parentNode && fe.parentNode.removeChild(fe), ae && (this.nativeDraggable && C(ae, "dragend", this), tt(ae), ae.style["will-change"] = "", ke && !je && A(ae, be ? be.options.ghostClass : this.options.ghostClass, !1), A(ae, this.options.chosenClass, !1), oe({ sortable: this, name: "unchoose", toEl: se, newIndex: null, newDraggableIndex: null, originalEvent: e }), le !== se ? (ve >= 0 && (oe({ rootEl: se, name: "add", toEl: se, fromEl: le, originalEvent: e }), oe({ sortable: this, name: "remove", toEl: se, originalEvent: e }), oe({ rootEl: se, name: "sort", toEl: se, fromEl: le, originalEvent: e }), oe({ sortable: this, name: "sort", toEl: se, originalEvent: e })), be && be.save()) : ve !== pe && ve >= 0 && (oe({ sortable: this, name: "update", toEl: se, originalEvent: e }), oe({ sortable: this, name: "sort", toEl: se, originalEvent: e })), Qe.active && (null != ve && -1 !== ve || (ve = pe, ge = me), oe({ sortable: this, name: "end", toEl: se, originalEvent: e }), this.save())))), this._nulling() }, _nulling: function () { ie("nulling", this), le = ae = se = ce = ue = fe = he = de = xe = we = ke = ve = ge = pe = me = Se = Te = be = ye = Qe.dragged = Qe.ghost = Qe.clone = Qe.active = null, Ie.forEach((function (e) { e.checked = !0 })), Ie.length = _e = Ce = 0 }, handleEvent: function (e) { switch (e.type) { case "drop": case "dragend": this._onDrop(e); break; case "dragenter": case "dragover": ae && (this._onDragOver(e), Ze(e)); break; case "selectstart": e.preventDefault(); break } }, toArray: function () { for (var e, t = [], n = this.el.children, r = 0, i = n.length, o = this.options; r < i; r++)e = n[r], k(e, o.draggable, this.el, !1) && t.push(e.getAttribute(o.dataIdAttr) || at(e)); return t }, sort: function (e) { var t = {}, n = this.el; this.toArray().forEach((function (e, r) { var i = n.children[r]; k(i, this.options.draggable, n, !1) && (t[e] = i) }), this), e.forEach((function (e) { t[e] && (n.removeChild(t[e]), n.appendChild(t[e])) })) }, save: function () { var e = this.options.store; e && e.set && e.set(this) }, closest: function (e, t) { return k(e, t || this.options.draggable, this.el, !1) }, option: function (e, t) { var n = this.options; if (void 0 === t) return n[e]; var r = ne.modifyOption(this, e, t); n[e] = "undefined" !== typeof r ? r : t, "group" === e && Ue(n) }, destroy: function () { ie("destroy", this); var e = this.el; e[X] = null, C(e, "mousedown", this._onTapStart), C(e, "touchstart", this._onTapStart), C(e, "pointerdown", this._onTapStart), this.nativeDraggable && (C(e, "dragover", this), C(e, "dragenter", this)), Array.prototype.forEach.call(e.querySelectorAll("[draggable]"), (function (e) { e.removeAttribute("draggable") })), this._onDrop(), this._disableDelayedDragEvents(), Ee.splice(Ee.indexOf(this.el), 1), this.el = e = null }, _hideClone: function () { if (!de) { if (ie("hideClone", this), Qe.eventCanceled) return; L(fe, "display", "none"), this.options.removeCloneOnHide && fe.parentNode && fe.parentNode.removeChild(fe), de = !0 } }, _showClone: function (e) { if ("clone" === e.lastPutMode) { if (de) { if (ie("showClone", this), Qe.eventCanceled) return; le.contains(ae) && !this.options.group.revertClone ? le.insertBefore(fe, ae) : ue ? le.insertBefore(fe, ue) : le.appendChild(fe), this.options.group.revertClone && this.animate(ae, fe), L(fe, "display", ""), de = !1 } } else this._hideClone() } }, Ne && _(document, "touchmove", (function (e) { (Qe.active || je) && e.cancelable && e.preventDefault() })), Qe.utils = { on: _, off: C, css: L, find: z, is: function (e, t) { return !!k(e, t, e, !1) }, extend: Y, throttle: B, closest: k, toggleClass: A, clone: U, index: I, nextTick: ct, cancelNextTick: lt, detectDirection: Be, getChild: H }, Qe.get = function (e) { return e[X] }, Qe.mount = function () { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; t[0].constructor === Array && (t = t[0]), t.forEach((function (e) { if (!e.prototype || !e.prototype.constructor) throw "Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(e)); e.utils && (Qe.utils = a({}, Qe.utils, e.utils)), ne.mount(e) })) }, Qe.create = function (e, t) { return new Qe(e, t) }, Qe.version = d; var ut, ht, ft, dt, pt, vt, mt = [], gt = !1; function yt() { function e() { for (var e in this.defaults = { scroll: !0, scrollSensitivity: 30, scrollSpeed: 10, bubbleScroll: !0 }, this) "_" === e.charAt(0) && "function" === typeof this[e] && (this[e] = this[e].bind(this)) } return e.prototype = { dragStarted: function (e) { var t = e.originalEvent; this.sortable.nativeDraggable ? _(document, "dragover", this._handleAutoScroll) : this.options.supportPointer ? _(document, "pointermove", this._handleFallbackAutoScroll) : t.touches ? _(document, "touchmove", this._handleFallbackAutoScroll) : _(document, "mousemove", this._handleFallbackAutoScroll) }, dragOverCompleted: function (e) { var t = e.originalEvent; this.options.dragOverBubble || t.rootEl || this._handleAutoScroll(t) }, drop: function () { this.sortable.nativeDraggable ? C(document, "dragover", this._handleAutoScroll) : (C(document, "pointermove", this._handleFallbackAutoScroll), C(document, "touchmove", this._handleFallbackAutoScroll), C(document, "mousemove", this._handleFallbackAutoScroll)), xt(), bt(), W() }, nulling: function () { pt = ht = ut = gt = vt = ft = dt = null, mt.length = 0 }, _handleFallbackAutoScroll: function (e) { this._handleAutoScroll(e, !0) }, _handleAutoScroll: function (e, t) { var n = this, r = (e.touches ? e.touches[0] : e).clientX, i = (e.touches ? e.touches[0] : e).clientY, o = document.elementFromPoint(r, i); if (pt = e, t || m || v || y) { _t(e, this.options, o, t); var a = F(o, !0); !gt || vt && r === ft && i === dt || (vt && xt(), vt = setInterval((function () { var o = F(document.elementFromPoint(r, i), !0); o !== a && (a = o, bt()), _t(e, n.options, o, t) }), 10), ft = r, dt = i) } else { if (!this.options.bubbleScroll || F(o, !0) === E()) return void bt(); _t(e, this.options, F(o, !1), !1) } } }, o(e, { pluginName: "scroll", initializeByDefault: !0 }) } function bt() { mt.forEach((function (e) { clearInterval(e.pid) })), mt = [] } function xt() { clearInterval(vt) } var wt, _t = B((function (e, t, n, r) { if (t.scroll) { var i, o = (e.touches ? e.touches[0] : e).clientX, a = (e.touches ? e.touches[0] : e).clientY, s = t.scrollSensitivity, c = t.scrollSpeed, l = E(), u = !1; ht !== n && (ht = n, bt(), ut = t.scroll, i = t.scrollFn, !0 === ut && (ut = F(n, !0))); var h = 0, f = ut; do { var d = f, p = P(d), v = p.top, m = p.bottom, g = p.left, y = p.right, b = p.width, x = p.height, w = void 0, _ = void 0, C = d.scrollWidth, M = d.scrollHeight, O = L(d), k = d.scrollLeft, S = d.scrollTop; d === l ? (w = b < C && ("auto" === O.overflowX || "scroll" === O.overflowX || "visible" === O.overflowX), _ = x < M && ("auto" === O.overflowY || "scroll" === O.overflowY || "visible" === O.overflowY)) : (w = b < C && ("auto" === O.overflowX || "scroll" === O.overflowX), _ = x < M && ("auto" === O.overflowY || "scroll" === O.overflowY)); var T = w && (Math.abs(y - o) <= s && k + b < C) - (Math.abs(g - o) <= s && !!k), A = _ && (Math.abs(m - a) <= s && S + x < M) - (Math.abs(v - a) <= s && !!S); if (!mt[h]) for (var j = 0; j <= h; j++)mt[j] || (mt[j] = {}); mt[h].vx == T && mt[h].vy == A && mt[h].el === d || (mt[h].el = d, mt[h].vx = T, mt[h].vy = A, clearInterval(mt[h].pid), 0 == T && 0 == A || (u = !0, mt[h].pid = setInterval(function () { r && 0 === this.layer && Qe.active._onTouchMove(pt); var t = mt[this.layer].vy ? mt[this.layer].vy * c : 0, n = mt[this.layer].vx ? mt[this.layer].vx * c : 0; "function" === typeof i && "continue" !== i.call(Qe.dragged.parentNode[X], n, t, e, pt, mt[this.layer].el) || q(mt[this.layer].el, n, t) }.bind({ layer: h }), 24))), h++ } while (t.bubbleScroll && f !== l && (f = F(f, !1))); gt = u } }), 30), Ct = function (e) { var t = e.originalEvent, n = e.putSortable, r = e.dragEl, i = e.activeSortable, o = e.dispatchSortableEvent, a = e.hideGhostForTarget, s = e.unhideGhostForTarget; if (t) { var c = n || i; a(); var l = t.changedTouches && t.changedTouches.length ? t.changedTouches[0] : t, u = document.elementFromPoint(l.clientX, l.clientY); s(), c && !c.el.contains(u) && (o("spill"), this.onSpill({ dragEl: r, putSortable: n })) } }; function Mt() { } function Ot() { } function kt() { function e() { this.defaults = { swapClass: "sortable-swap-highlight" } } return e.prototype = { dragStart: function (e) { var t = e.dragEl; wt = t }, dragOverValid: function (e) { var t = e.completed, n = e.target, r = e.onMove, i = e.activeSortable, o = e.changed, a = e.cancel; if (i.options.swap) { var s = this.sortable.el, c = this.options; if (n && n !== s) { var l = wt; !1 !== r(n) ? (A(n, c.swapClass, !0), wt = n) : wt = null, l && l !== wt && A(l, c.swapClass, !1) } o(), t(!0), a() } }, drop: function (e) { var t = e.activeSortable, n = e.putSortable, r = e.dragEl, i = n || this.sortable, o = this.options; wt && A(wt, o.swapClass, !1), wt && (o.swap || n && n.options.swap) && r !== wt && (i.captureAnimationState(), i !== t && t.captureAnimationState(), St(r, wt), i.animateAll(), i !== t && t.animateAll()) }, nulling: function () { wt = null } }, o(e, { pluginName: "swap", eventProperties: function () { return { swapItem: wt } } }) } function St(e, t) { var n, r, i = e.parentNode, o = t.parentNode; i && o && !i.isEqualNode(t) && !o.isEqualNode(e) && (n = I(e), r = I(t), i.isEqualNode(o) && n < r && r++, i.insertBefore(t, i.children[n]), o.insertBefore(e, o.children[r])) } Mt.prototype = { startIndex: null, dragStart: function (e) { var t = e.oldDraggableIndex; this.startIndex = t }, onSpill: function (e) { var t = e.dragEl, n = e.putSortable; this.sortable.captureAnimationState(), n && n.captureAnimationState(); var r = H(this.sortable.el, this.startIndex, this.options); r ? this.sortable.el.insertBefore(t, r) : this.sortable.el.appendChild(t), this.sortable.animateAll(), n && n.animateAll() }, drop: Ct }, o(Mt, { pluginName: "revertOnSpill" }), Ot.prototype = { onSpill: function (e) { var t = e.dragEl, n = e.putSortable, r = n || this.sortable; r.captureAnimationState(), t.parentNode && t.parentNode.removeChild(t), r.animateAll() }, drop: Ct }, o(Ot, { pluginName: "removeOnSpill" }); var Tt, At, Lt, jt, zt, Et = [], Pt = [], Dt = !1, Ht = !1, Vt = !1; function It() { function e(e) { for (var t in this) "_" === t.charAt(0) && "function" === typeof this[t] && (this[t] = this[t].bind(this)); e.options.supportPointer ? _(document, "pointerup", this._deselectMultiDrag) : (_(document, "mouseup", this._deselectMultiDrag), _(document, "touchend", this._deselectMultiDrag)), _(document, "keydown", this._checkKeyDown), _(document, "keyup", this._checkKeyUp), this.defaults = { selectedClass: "sortable-selected", multiDragKey: null, setData: function (t, n) { var r = ""; Et.length && At === e ? Et.forEach((function (e, t) { r += (t ? ", " : "") + e.textContent })) : r = n.textContent, t.setData("Text", r) } } } return e.prototype = { multiDragKeyDown: !1, isMultiDrag: !1, delayStartGlobal: function (e) { var t = e.dragEl; Lt = t }, delayEnded: function () { this.isMultiDrag = ~Et.indexOf(Lt) }, setupClone: function (e) { var t = e.sortable, n = e.cancel; if (this.isMultiDrag) { for (var r = 0; r < Et.length; r++)Pt.push(U(Et[r])), Pt[r].sortableIndex = Et[r].sortableIndex, Pt[r].draggable = !1, Pt[r].style["will-change"] = "", A(Pt[r], this.options.selectedClass, !1), Et[r] === Lt && A(Pt[r], this.options.chosenClass, !1); t._hideClone(), n() } }, clone: function (e) { var t = e.sortable, n = e.rootEl, r = e.dispatchSortableEvent, i = e.cancel; this.isMultiDrag && (this.options.removeCloneOnHide || Et.length && At === t && (Rt(!0, n), r("clone"), i())) }, showClone: function (e) { var t = e.cloneNowShown, n = e.rootEl, r = e.cancel; this.isMultiDrag && (Rt(!1, n), Pt.forEach((function (e) { L(e, "display", "") })), t(), zt = !1, r()) }, hideClone: function (e) { var t = this, n = (e.sortable, e.cloneNowHidden), r = e.cancel; this.isMultiDrag && (Pt.forEach((function (e) { L(e, "display", "none"), t.options.removeCloneOnHide && e.parentNode && e.parentNode.removeChild(e) })), n(), zt = !0, r()) }, dragStartGlobal: function (e) { e.sortable; !this.isMultiDrag && At && At.multiDrag._deselectMultiDrag(), Et.forEach((function (e) { e.sortableIndex = I(e) })), Et = Et.sort((function (e, t) { return e.sortableIndex - t.sortableIndex })), Vt = !0 }, dragStarted: function (e) { var t = this, n = e.sortable; if (this.isMultiDrag) { if (this.options.sort && (n.captureAnimationState(), this.options.animation)) { Et.forEach((function (e) { e !== Lt && L(e, "position", "absolute") })); var r = P(Lt, !1, !0, !0); Et.forEach((function (e) { e !== Lt && K(e, r) })), Ht = !0, Dt = !0 } n.animateAll((function () { Ht = !1, Dt = !1, t.options.animation && Et.forEach((function (e) { G(e) })), t.options.sort && Ft() })) } }, dragOver: function (e) { var t = e.target, n = e.completed, r = e.cancel; Ht && ~Et.indexOf(t) && (n(!1), r()) }, revert: function (e) { var t = e.fromSortable, n = e.rootEl, r = e.sortable, i = e.dragRect; Et.length > 1 && (Et.forEach((function (e) { r.addAnimationState({ target: e, rect: Ht ? P(e) : i }), G(e), e.fromRect = i, t.removeAnimationState(e) })), Ht = !1, Nt(!this.options.removeCloneOnHide, n)) }, dragOverCompleted: function (e) { var t = e.sortable, n = e.isOwner, r = e.insertion, i = e.activeSortable, o = e.parentEl, a = e.putSortable, s = this.options; if (r) { if (n && i._hideClone(), Dt = !1, s.animation && Et.length > 1 && (Ht || !n && !i.options.sort && !a)) { var c = P(Lt, !1, !0, !0); Et.forEach((function (e) { e !== Lt && (K(e, c), o.appendChild(e)) })), Ht = !0 } if (!n) if (Ht || Ft(), Et.length > 1) { var l = zt; i._showClone(t), i.options.animation && !zt && l && Pt.forEach((function (e) { i.addAnimationState({ target: e, rect: jt }), e.fromRect = jt, e.thisAnimationDuration = null })) } else i._showClone(t) } }, dragOverAnimationCapture: function (e) { var t = e.dragRect, n = e.isOwner, r = e.activeSortable; if (Et.forEach((function (e) { e.thisAnimationDuration = null })), r.options.animation && !n && r.multiDrag.isMultiDrag) { jt = o({}, t); var i = j(Lt, !0); jt.top -= i.f, jt.left -= i.e } }, dragOverAnimationComplete: function () { Ht && (Ht = !1, Ft()) }, drop: function (e) { var t = e.originalEvent, n = e.rootEl, r = e.parentEl, i = e.sortable, o = e.dispatchSortableEvent, a = e.oldIndex, s = e.putSortable, c = s || this.sortable; if (t) { var l = this.options, u = r.children; if (!Vt) if (l.multiDragKey && !this.multiDragKeyDown && this._deselectMultiDrag(), A(Lt, l.selectedClass, !~Et.indexOf(Lt)), ~Et.indexOf(Lt)) Et.splice(Et.indexOf(Lt), 1), Tt = null, re({ sortable: i, rootEl: n, name: "deselect", targetEl: Lt, originalEvt: t }); else { if (Et.push(Lt), re({ sortable: i, rootEl: n, name: "select", targetEl: Lt, originalEvt: t }), t.shiftKey && Tt && i.el.contains(Tt)) { var h, f, d = I(Tt), p = I(Lt); if (~d && ~p && d !== p) for (p > d ? (f = d, h = p) : (f = p, h = d + 1); f < h; f++)~Et.indexOf(u[f]) || (A(u[f], l.selectedClass, !0), Et.push(u[f]), re({ sortable: i, rootEl: n, name: "select", targetEl: u[f], originalEvt: t })) } else Tt = Lt; At = c } if (Vt && this.isMultiDrag) { if ((r[X].options.sort || r !== n) && Et.length > 1) { var v = P(Lt), m = I(Lt, ":not(." + this.options.selectedClass + ")"); if (!Dt && l.animation && (Lt.thisAnimationDuration = null), c.captureAnimationState(), !Dt && (l.animation && (Lt.fromRect = v, Et.forEach((function (e) { if (e.thisAnimationDuration = null, e !== Lt) { var t = Ht ? P(e) : v; e.fromRect = t, c.addAnimationState({ target: e, rect: t }) } }))), Ft(), Et.forEach((function (e) { u[m] ? r.insertBefore(e, u[m]) : r.appendChild(e), m++ })), a === I(Lt))) { var g = !1; Et.forEach((function (e) { e.sortableIndex === I(e) || (g = !0) })), g && o("update") } Et.forEach((function (e) { G(e) })), c.animateAll() } At = c } (n === r || s && "clone" !== s.lastPutMode) && Pt.forEach((function (e) { e.parentNode && e.parentNode.removeChild(e) })) } }, nullingGlobal: function () { this.isMultiDrag = Vt = !1, Pt.length = 0 }, destroyGlobal: function () { this._deselectMultiDrag(), C(document, "pointerup", this._deselectMultiDrag), C(document, "mouseup", this._deselectMultiDrag), C(document, "touchend", this._deselectMultiDrag), C(document, "keydown", this._checkKeyDown), C(document, "keyup", this._checkKeyUp) }, _deselectMultiDrag: function (e) { if (("undefined" === typeof Vt || !Vt) && At === this.sortable && (!e || !k(e.target, this.options.draggable, this.sortable.el, !1)) && (!e || 0 === e.button)) while (Et.length) { var t = Et[0]; A(t, this.options.selectedClass, !1), Et.shift(), re({ sortable: this.sortable, rootEl: this.sortable.el, name: "deselect", targetEl: t, originalEvt: e }) } }, _checkKeyDown: function (e) { e.key === this.options.multiDragKey && (this.multiDragKeyDown = !0) }, _checkKeyUp: function (e) { e.key === this.options.multiDragKey && (this.multiDragKeyDown = !1) } }, o(e, { pluginName: "multiDrag", utils: { select: function (e) { var t = e.parentNode[X]; t && t.options.multiDrag && !~Et.indexOf(e) && (At && At !== t && (At.multiDrag._deselectMultiDrag(), At = t), A(e, t.options.selectedClass, !0), Et.push(e)) }, deselect: function (e) { var t = e.parentNode[X], n = Et.indexOf(e); t && t.options.multiDrag && ~n && (A(e, t.options.selectedClass, !1), Et.splice(n, 1)) } }, eventProperties: function () { var e = this, t = [], n = []; return Et.forEach((function (r) { var i; t.push({ multiDragElement: r, index: r.sortableIndex }), i = Ht && r !== Lt ? -1 : Ht ? I(r, ":not(." + e.options.selectedClass + ")") : I(r), n.push({ multiDragElement: r, index: i }) })), { items: l(Et), clones: [].concat(Pt), oldIndicies: t, newIndicies: n } }, optionListeners: { multiDragKey: function (e) { return e = e.toLowerCase(), "ctrl" === e ? e = "Control" : e.length > 1 && (e = e.charAt(0).toUpperCase() + e.substr(1)), e } } }) } function Nt(e, t) { Et.forEach((function (n, r) { var i = t.children[n.sortableIndex + (e ? Number(r) : 0)]; i ? t.insertBefore(n, i) : t.appendChild(n) })) } function Rt(e, t) { Pt.forEach((function (n, r) { var i = t.children[n.sortableIndex + (e ? Number(r) : 0)]; i ? t.insertBefore(n, i) : t.appendChild(n) })) } function Ft() { Et.forEach((function (e) { e !== Lt && e.parentNode && e.parentNode.removeChild(e) })) } Qe.mount(new yt), Qe.mount(Ot, Mt), t["default"] = Qe
+    }, ab13: function (e, t, n) { var r = n("b622"), i = r("match"); e.exports = function (e) { var t = /./; try { "/./"[e](t) } catch (n) { try { return t[i] = !1, "/./"[e](t) } catch (r) { } } return !1 } }, ab9e: function (e, t, n) { "use strict"; n("b2a3"), n("15aa") }, ac16: function (e, t, n) { var r = n("23e7"), i = n("825a"), o = n("06cf").f; r({ target: "Reflect", stat: !0 }, { deleteProperty: function (e, t) { var n = o(i(e), t); return !(n && !n.configurable) && delete e[t] } }) }, ac1f: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("9263"); r({ target: "RegExp", proto: !0, forced: /./.exec !== i }, { exec: i }) }, ac41: function (e, t) { function n(e) { var t = -1, n = Array(e.size); return e.forEach((function (e) { n[++t] = e })), n } e.exports = n }, acac: function (e, t, n) { "use strict"; var r = n("e2cc"), i = n("f183").getWeakData, o = n("825a"), a = n("861d"), s = n("19aa"), c = n("2266"), l = n("b727"), u = n("5135"), h = n("69f3"), f = h.set, d = h.getterFor, p = l.find, v = l.findIndex, m = 0, g = function (e) { return e.frozen || (e.frozen = new y) }, y = function () { this.entries = [] }, b = function (e, t) { return p(e.entries, (function (e) { return e[0] === t })) }; y.prototype = { get: function (e) { var t = b(this, e); if (t) return t[1] }, has: function (e) { return !!b(this, e) }, set: function (e, t) { var n = b(this, e); n ? n[1] = t : this.entries.push([e, t]) }, delete: function (e) { var t = v(this.entries, (function (t) { return t[0] === e })); return ~t && this.entries.splice(t, 1), !!~t } }, e.exports = { getConstructor: function (e, t, n, l) { var h = e((function (e, r) { s(e, h, t), f(e, { type: t, id: m++, frozen: void 0 }), void 0 != r && c(r, e[l], { that: e, AS_ENTRIES: n }) })), p = d(t), v = function (e, t, n) { var r = p(e), a = i(o(t), !0); return !0 === a ? g(r).set(t, n) : a[r.id] = n, e }; return r(h.prototype, { delete: function (e) { var t = p(this); if (!a(e)) return !1; var n = i(e); return !0 === n ? g(t)["delete"](e) : n && u(n, t.id) && delete n[t.id] }, has: function (e) { var t = p(this); if (!a(e)) return !1; var n = i(e); return !0 === n ? g(t).has(e) : n && u(n, t.id) } }), r(h.prototype, n ? { get: function (e) { var t = p(this); if (a(e)) { var n = i(e); return !0 === n ? g(t).get(e) : n ? n[t.id] : void 0 } }, set: function (e, t) { return v(this, e, t) } } : { add: function (e) { return v(this, e, !0) } }), h } } }, ace4: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("d039"), o = n("621a"), a = n("825a"), s = n("23cb"), c = n("50c4"), l = n("4840"), u = o.ArrayBuffer, h = o.DataView, f = u.prototype.slice, d = i((function () { return !new u(2).slice(1, void 0).byteLength })); r({ target: "ArrayBuffer", proto: !0, unsafe: !0, forced: d }, { slice: function (e, t) { if (void 0 !== f && void 0 === t) return f.call(a(this), e); var n = a(this).byteLength, r = s(e, n), i = s(void 0 === t ? n : t, n), o = new (l(this, u))(c(i - r)), d = new h(this), p = new h(o), v = 0; while (r < i) p.setUint8(v++, d.getUint8(r++)); return o } }) }, ad6d: function (e, t, n) { "use strict"; var r = n("825a"); e.exports = function () { var e = r(this), t = ""; return e.global && (t += "g"), e.ignoreCase && (t += "i"), e.multiline && (t += "m"), e.dotAll && (t += "s"), e.unicode && (t += "u"), e.sticky && (t += "y"), t } }, addb: function (e, t) { var n = Math.floor, r = function (e, t) { var a = e.length, s = n(a / 2); return a < 8 ? i(e, t) : o(r(e.slice(0, s), t), r(e.slice(s), t), t) }, i = function (e, t) { var n, r, i = e.length, o = 1; while (o < i) { r = o, n = e[o]; while (r && t(e[r - 1], n) > 0) e[r] = e[--r]; r !== o++ && (e[r] = n) } return e }, o = function (e, t, n) { var r = e.length, i = t.length, o = 0, a = 0, s = []; while (o < r || a < i) o < r && a < i ? s.push(n(e[o], t[a]) <= 0 ? e[o++] : t[a++]) : s.push(o < r ? e[o++] : t[a++]); return s }; e.exports = r }, ade3: function (e, t, n) { "use strict"; function r(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } n.d(t, "a", (function () { return r })) }, adf5: function (e, t, n) { e.exports = { default: n("9b21"), __esModule: !0 } }, ae10: function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t["default"] = void 0; var i = r(n("278c")), o = r(n("448a")); function a(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : .25, r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : .25; if (!(e instanceof Array)) return console.error("polylineToBezierCurve: Parameter polyline must be an array!"), !1; if (e.length <= 2) return console.error("polylineToBezierCurve: Converting to a curve requires at least 3 points!"), !1; var i = e[0], a = e.length - 1, l = new Array(a).fill(0).map((function (i, a) { return [].concat((0, o["default"])(s(e, a, t, n, r)), [e[a + 1]]) })); return t && c(l, i), l.unshift(e[0]), l } function s(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : .25, i = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : .25, o = e.length; if (!(o < 3 || t >= o)) { var a = t - 1; a < 0 && (a = n ? o + a : 0); var s = t + 1; s >= o && (s = n ? s - o : o - 1); var c = t + 2; c >= o && (c = n ? c - o : o - 1); var l = e[a], u = e[t], h = e[s], f = e[c]; return [[u[0] + r * (h[0] - l[0]), u[1] + r * (h[1] - l[1])], [h[0] - i * (f[0] - u[0]), h[1] - i * (f[1] - u[1])]] } } function c(e, t) { var n = e[0], r = e.slice(-1)[0]; return e.push([l(r[1], r[2]), l(n[0], t), t]), e } function l(e, t) { var n = (0, i["default"])(e, 2), r = n[0], o = n[1], a = (0, i["default"])(t, 2), s = a[0], c = a[1], l = s - r, u = c - o; return [s + l, c + u] } var u = a; t["default"] = u }, ae55: function (e, t, n) { "use strict"; n.d(t, "b", (function () { return l })); var r = n("6042"), i = n.n(r), o = n("41b2"), a = n.n(o), s = void 0; if ("undefined" !== typeof window) { var c = function (e) { return { media: e, matches: !1, addListener: function () { }, removeListener: function () { } } }; window.matchMedia || (window.matchMedia = c), s = n("8e95") } var l = ["xxl", "xl", "lg", "md", "sm", "xs"], u = { xs: "(max-width: 575px)", sm: "(min-width: 576px)", md: "(min-width: 768px)", lg: "(min-width: 992px)", xl: "(min-width: 1200px)", xxl: "(min-width: 1600px)" }, h = [], f = -1, d = {}, p = { dispatch: function (e) { return d = e, !(h.length < 1) && (h.forEach((function (e) { e.func(d) })), !0) }, subscribe: function (e) { 0 === h.length && this.register(); var t = (++f).toString(); return h.push({ token: t, func: e }), e(d), t }, unsubscribe: function (e) { h = h.filter((function (t) { return t.token !== e })), 0 === h.length && this.unregister() }, unregister: function () { Object.keys(u).map((function (e) { return s.unregister(u[e]) })) }, register: function () { var e = this; Object.keys(u).map((function (t) { return s.register(u[t], { match: function () { var n = a()({}, d, i()({}, t, !0)); e.dispatch(n) }, unmatch: function () { var n = a()({}, d, i()({}, t, !1)); e.dispatch(n) }, destroy: function () { } }) })) } }; t["a"] = p }, ae93: function (e, t, n) { "use strict"; var r, i, o, a = n("d039"), s = n("e163"), c = n("9112"), l = n("5135"), u = n("b622"), h = n("c430"), f = u("iterator"), d = !1, p = function () { return this };[].keys && (o = [].keys(), "next" in o ? (i = s(s(o)), i !== Object.prototype && (r = i)) : d = !0); var v = void 0 == r || a((function () { var e = {}; return r[f].call(e) !== e })); v && (r = {}), h && !v || l(r, f) || c(r, f, p), e.exports = { IteratorPrototype: r, BUGGY_SAFARI_ITERATORS: d } }, af03: function (e, t, n) { var r = n("d039"); e.exports = function (e) { return r((function () { var t = ""[e]('"'); return t !== t.toLowerCase() || t.split('"').length > 3 })) } }, af3d: function (e, t, n) { "use strict"; n("b2a3"), n("2200") }, af93: function (e, t, n) { var r = n("23e7"), i = n("861d"), o = n("f183").onFreeze, a = n("bb2f"), s = n("d039"), c = Object.seal, l = s((function () { c(1) })); r({ target: "Object", stat: !0, forced: l, sham: !a }, { seal: function (e) { return c && i(e) ? c(o(e)) : e } }) }, aff5: function (e, t, n) { var r = n("23e7"); r({ target: "Number", stat: !0 }, { MAX_SAFE_INTEGER: 9007199254740991 }) }, b041: function (e, t, n) { "use strict"; var r = n("00ee"), i = n("f5df"); e.exports = r ? {}.toString : function () { return "[object " + i(this) + "]" } }, b047: function (e, t, n) { var r = n("1a8c"), i = n("408c"), o = n("b4b0"), a = "Expected a function", s = Math.max, c = Math.min; function l(e, t, n) { var l, u, h, f, d, p, v = 0, m = !1, g = !1, y = !0; if ("function" != typeof e) throw new TypeError(a); function b(t) { var n = l, r = u; return l = u = void 0, v = t, f = e.apply(r, n), f } function x(e) { return v = e, d = setTimeout(C, t), m ? b(e) : f } function w(e) { var n = e - p, r = e - v, i = t - n; return g ? c(i, h - r) : i } function _(e) { var n = e - p, r = e - v; return void 0 === p || n >= t || n < 0 || g && r >= h } function C() { var e = i(); if (_(e)) return M(e); d = setTimeout(C, w(e)) } function M(e) { return d = void 0, y && l ? b(e) : (l = u = void 0, f) } function O() { void 0 !== d && clearTimeout(d), v = 0, l = p = u = d = void 0 } function k() { return void 0 === d ? f : M(i()) } function S() { var e = i(), n = _(e); if (l = arguments, u = this, p = e, n) { if (void 0 === d) return x(p); if (g) return clearTimeout(d), d = setTimeout(C, t), b(p) } return void 0 === d && (d = setTimeout(C, t)), f } return t = o(t) || 0, r(n) && (m = !!n.leading, g = "maxWait" in n, h = g ? s(o(n.maxWait) || 0, t) : h, y = "trailing" in n ? !!n.trailing : y), S.cancel = O, S.flush = k, S } e.exports = l }, b047f: function (e, t) { function n(e) { return function (t) { return e(t) } } e.exports = n }, b06d: function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.extendNewGraph = M, t["default"] = t.text = t.bezierCurve = t.smoothline = t.polyline = t.regPolygon = t.sector = t.arc = t.ring = t.rect = t.ellipse = t.circle = void 0; var i = r(n("448a")), o = r(n("278c")), a = r(n("050c")), s = n("5557"), c = n("e169"), l = a["default"].polylineToBezierCurve, u = a["default"].bezierCurveToPolyline, h = { shape: { rx: 0, ry: 0, r: 0 }, validator: function (e) { var t = e.shape, n = t.rx, r = t.ry, i = t.r; return "number" === typeof n && "number" === typeof r && "number" === typeof i || (console.error("Circle shape configuration is abnormal!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape; n.beginPath(); var i = r.rx, o = r.ry, a = r.r; n.arc(i, o, a > 0 ? a : .01, 0, 2 * Math.PI), n.fill(), n.stroke(), n.closePath() }, hoverCheck: function (e, t) { var n = t.shape, r = n.rx, i = n.ry, o = n.r; return (0, s.checkPointIsInCircle)(e, r, i, o) }, setGraphCenter: function (e, t) { var n = t.shape, r = t.style, i = n.rx, o = n.ry; r.graphCenter = [i, o] }, move: function (e, t) { var n = e.movementX, r = e.movementY, i = t.shape; this.attr("shape", { rx: i.rx + n, ry: i.ry + r }) } }; t.circle = h; var f = { shape: { rx: 0, ry: 0, hr: 0, vr: 0 }, validator: function (e) { var t = e.shape, n = t.rx, r = t.ry, i = t.hr, o = t.vr; return "number" === typeof n && "number" === typeof r && "number" === typeof i && "number" === typeof o || (console.error("Ellipse shape configuration is abnormal!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape; n.beginPath(); var i = r.rx, o = r.ry, a = r.hr, s = r.vr; n.ellipse(i, o, a > 0 ? a : .01, s > 0 ? s : .01, 0, 0, 2 * Math.PI), n.fill(), n.stroke(), n.closePath() }, hoverCheck: function (e, t) { var n = t.shape, r = n.rx, i = n.ry, o = n.hr, a = n.vr, c = Math.max(o, a), l = Math.min(o, a), u = Math.sqrt(c * c - l * l), h = [r - u, i], f = [r + u, i], d = (0, s.getTwoPointDistance)(e, h) + (0, s.getTwoPointDistance)(e, f); return d <= 2 * c }, setGraphCenter: function (e, t) { var n = t.shape, r = t.style, i = n.rx, o = n.ry; r.graphCenter = [i, o] }, move: function (e, t) { var n = e.movementX, r = e.movementY, i = t.shape; this.attr("shape", { rx: i.rx + n, ry: i.ry + r }) } }; t.ellipse = f; var d = { shape: { x: 0, y: 0, w: 0, h: 0 }, validator: function (e) { var t = e.shape, n = t.x, r = t.y, i = t.w, o = t.h; return "number" === typeof n && "number" === typeof r && "number" === typeof i && "number" === typeof o || (console.error("Rect shape configuration is abnormal!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape; n.beginPath(); var i = r.x, o = r.y, a = r.w, s = r.h; n.rect(i, o, a, s), n.fill(), n.stroke(), n.closePath() }, hoverCheck: function (e, t) { var n = t.shape, r = n.x, i = n.y, o = n.w, a = n.h; return (0, s.checkPointIsInRect)(e, r, i, o, a) }, setGraphCenter: function (e, t) { var n = t.shape, r = t.style, i = n.x, o = n.y, a = n.w, s = n.h; r.graphCenter = [i + a / 2, o + s / 2] }, move: function (e, t) { var n = e.movementX, r = e.movementY, i = t.shape; this.attr("shape", { x: i.x + n, y: i.y + r }) } }; t.rect = d; var p = { shape: { rx: 0, ry: 0, r: 0 }, validator: function (e) { var t = e.shape, n = t.rx, r = t.ry, i = t.r; return "number" === typeof n && "number" === typeof r && "number" === typeof i || (console.error("Ring shape configuration is abnormal!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape; n.beginPath(); var i = r.rx, o = r.ry, a = r.r; n.arc(i, o, a > 0 ? a : .01, 0, 2 * Math.PI), n.stroke(), n.closePath() }, hoverCheck: function (e, t) { var n = t.shape, r = t.style, i = n.rx, o = n.ry, a = n.r, c = r.lineWidth, l = c / 2, u = a - l, h = a + l, f = (0, s.getTwoPointDistance)(e, [i, o]); return f >= u && f <= h }, setGraphCenter: function (e, t) { var n = t.shape, r = t.style, i = n.rx, o = n.ry; r.graphCenter = [i, o] }, move: function (e, t) { var n = e.movementX, r = e.movementY, i = t.shape; this.attr("shape", { rx: i.rx + n, ry: i.ry + r }) } }; t.ring = p; var v = { shape: { rx: 0, ry: 0, r: 0, startAngle: 0, endAngle: 0, clockWise: !0 }, validator: function (e) { var t = e.shape, n = ["rx", "ry", "r", "startAngle", "endAngle"]; return !n.find((function (e) { return "number" !== typeof t[e] })) || (console.error("Arc shape configuration is abnormal!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape; n.beginPath(); var i = r.rx, o = r.ry, a = r.r, s = r.startAngle, c = r.endAngle, l = r.clockWise; n.arc(i, o, a > 0 ? a : .001, s, c, !l), n.stroke(), n.closePath() }, hoverCheck: function (e, t) { var n = t.shape, r = t.style, i = n.rx, o = n.ry, a = n.r, c = n.startAngle, l = n.endAngle, u = n.clockWise, h = r.lineWidth, f = h / 2, d = a - f, p = a + f; return !(0, s.checkPointIsInSector)(e, i, o, d, c, l, u) && (0, s.checkPointIsInSector)(e, i, o, p, c, l, u) }, setGraphCenter: function (e, t) { var n = t.shape, r = t.style, i = n.rx, o = n.ry; r.graphCenter = [i, o] }, move: function (e, t) { var n = e.movementX, r = e.movementY, i = t.shape; this.attr("shape", { rx: i.rx + n, ry: i.ry + r }) } }; t.arc = v; var m = { shape: { rx: 0, ry: 0, r: 0, startAngle: 0, endAngle: 0, clockWise: !0 }, validator: function (e) { var t = e.shape, n = ["rx", "ry", "r", "startAngle", "endAngle"]; return !n.find((function (e) { return "number" !== typeof t[e] })) || (console.error("Sector shape configuration is abnormal!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape; n.beginPath(); var i = r.rx, o = r.ry, a = r.r, s = r.startAngle, c = r.endAngle, l = r.clockWise; n.arc(i, o, a > 0 ? a : .01, s, c, !l), n.lineTo(i, o), n.closePath(), n.stroke(), n.fill() }, hoverCheck: function (e, t) { var n = t.shape, r = n.rx, i = n.ry, o = n.r, a = n.startAngle, c = n.endAngle, l = n.clockWise; return (0, s.checkPointIsInSector)(e, r, i, o, a, c, l) }, setGraphCenter: function (e, t) { var n = t.shape, r = t.style, i = n.rx, o = n.ry; r.graphCenter = [i, o] }, move: function (e, t) { var n = e.movementX, r = e.movementY, i = t.shape, o = i.rx, a = i.ry; this.attr("shape", { rx: o + n, ry: a + r }) } }; t.sector = m; var g = { shape: { rx: 0, ry: 0, r: 0, side: 0 }, validator: function (e) { var t = e.shape, n = t.side, r = ["rx", "ry", "r", "side"]; return r.find((function (e) { return "number" !== typeof t[e] })) ? (console.error("RegPolygon shape configuration is abnormal!"), !1) : !(n < 3) || (console.error("RegPolygon at least trigon!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape, i = t.cache; n.beginPath(); var o = r.rx, a = r.ry, l = r.r, u = r.side; if (!i.points || i.rx !== o || i.ry !== a || i.r !== l || i.side !== u) { var h = (0, s.getRegularPolygonPoints)(o, a, l, u); Object.assign(i, { points: h, rx: o, ry: a, r: l, side: u }) } var f = i.points; (0, c.drawPolylinePath)(n, f), n.closePath(), n.stroke(), n.fill() }, hoverCheck: function (e, t) { var n = t.cache, r = n.points; return (0, s.checkPointIsInPolygon)(e, r) }, setGraphCenter: function (e, t) { var n = t.shape, r = t.style, i = n.rx, o = n.ry; r.graphCenter = [i, o] }, move: function (e, t) { var n = e.movementX, r = e.movementY, i = t.shape, a = t.cache, s = i.rx, c = i.ry; a.rx += n, a.ry += r, this.attr("shape", { rx: s + n, ry: c + r }), a.points = a.points.map((function (e) { var t = (0, o["default"])(e, 2), i = t[0], a = t[1]; return [i + n, a + r] })) } }; t.regPolygon = g; var y = { shape: { points: [], close: !1 }, validator: function (e) { var t = e.shape, n = t.points; return n instanceof Array || (console.error("Polyline points should be an array!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape, i = t.style.lineWidth; n.beginPath(); var o = r.points, a = r.close; 1 === i && (o = (0, s.eliminateBlur)(o)), (0, c.drawPolylinePath)(n, o), a ? (n.closePath(), n.fill(), n.stroke()) : n.stroke() }, hoverCheck: function (e, t) { var n = t.shape, r = t.style, i = n.points, o = n.close, a = r.lineWidth; return o ? (0, s.checkPointIsInPolygon)(e, i) : (0, s.checkPointIsNearPolyline)(e, i, a) }, setGraphCenter: function (e, t) { var n = t.shape, r = t.style, i = n.points; r.graphCenter = i[0] }, move: function (e, t) { var n = e.movementX, r = e.movementY, i = t.shape, a = i.points, s = a.map((function (e) { var t = (0, o["default"])(e, 2), i = t[0], a = t[1]; return [i + n, a + r] })); this.attr("shape", { points: s }) } }; t.polyline = y; var b = { shape: { points: [], close: !1 }, validator: function (e) { var t = e.shape, n = t.points; return n instanceof Array || (console.error("Smoothline points should be an array!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape, i = t.cache, o = r.points, a = r.close; if (!i.points || i.points.toString() !== o.toString()) { var h = l(o, a), f = u(h); Object.assign(i, { points: (0, s.deepClone)(o, !0), bezierCurve: h, hoverPoints: f }) } var d = i.bezierCurve; n.beginPath(), (0, c.drawBezierCurvePath)(n, d.slice(1), d[0]), a ? (n.closePath(), n.fill(), n.stroke()) : n.stroke() }, hoverCheck: function (e, t) { var n = t.cache, r = t.shape, i = t.style, o = n.hoverPoints, a = r.close, c = i.lineWidth; return a ? (0, s.checkPointIsInPolygon)(e, o) : (0, s.checkPointIsNearPolyline)(e, o, c) }, setGraphCenter: function (e, t) { var n = t.shape, r = t.style, i = n.points; r.graphCenter = i[0] }, move: function (e, t) { var n = e.movementX, r = e.movementY, a = t.shape, s = t.cache, c = a.points, l = c.map((function (e) { var t = (0, o["default"])(e, 2), i = t[0], a = t[1]; return [i + n, a + r] })); s.points = l; var u = (0, o["default"])(s.bezierCurve[0], 2), h = u[0], f = u[1], d = s.bezierCurve.slice(1); s.bezierCurve = [[h + n, f + r]].concat((0, i["default"])(d.map((function (e) { return e.map((function (e) { var t = (0, o["default"])(e, 2), i = t[0], a = t[1]; return [i + n, a + r] })) })))), s.hoverPoints = s.hoverPoints.map((function (e) { var t = (0, o["default"])(e, 2), i = t[0], a = t[1]; return [i + n, a + r] })), this.attr("shape", { points: l }) } }; t.smoothline = b; var x = { shape: { points: [], close: !1 }, validator: function (e) { var t = e.shape, n = t.points; return n instanceof Array || (console.error("BezierCurve points should be an array!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape, i = t.cache, o = r.points, a = r.close; if (!i.points || i.points.toString() !== o.toString()) { var l = u(o, 20); Object.assign(i, { points: (0, s.deepClone)(o, !0), hoverPoints: l }) } n.beginPath(), (0, c.drawBezierCurvePath)(n, o.slice(1), o[0]), a ? (n.closePath(), n.fill(), n.stroke()) : n.stroke() }, hoverCheck: function (e, t) { var n = t.cache, r = t.shape, i = t.style, o = n.hoverPoints, a = r.close, c = i.lineWidth; return a ? (0, s.checkPointIsInPolygon)(e, o) : (0, s.checkPointIsNearPolyline)(e, o, c) }, setGraphCenter: function (e, t) { var n = t.shape, r = t.style, i = n.points; r.graphCenter = i[0] }, move: function (e, t) { var n = e.movementX, r = e.movementY, a = t.shape, s = t.cache, c = a.points, l = (0, o["default"])(c[0], 2), u = l[0], h = l[1], f = c.slice(1), d = [[u + n, h + r]].concat((0, i["default"])(f.map((function (e) { return e.map((function (e) { var t = (0, o["default"])(e, 2), i = t[0], a = t[1]; return [i + n, a + r] })) })))); s.points = d, s.hoverPoints = s.hoverPoints.map((function (e) { var t = (0, o["default"])(e, 2), i = t[0], a = t[1]; return [i + n, a + r] })), this.attr("shape", { points: d }) } }; t.bezierCurve = x; var w = { shape: { content: "", position: [], maxWidth: void 0, rowGap: 0 }, validator: function (e) { var t = e.shape, n = t.content, r = t.position, i = t.rowGap; return "string" !== typeof n ? (console.error("Text content should be a string!"), !1) : r instanceof Array ? "number" === typeof i || (console.error("Text rowGap should be a number!"), !1) : (console.error("Text position should be an array!"), !1) }, draw: function (e, t) { var n = e.ctx, r = t.shape, a = r.content, s = r.position, c = r.maxWidth, l = r.rowGap, u = n.textBaseline, h = n.font, f = parseInt(h.replace(/\D/g, "")), d = s, p = (0, o["default"])(d, 2), v = p[0], m = p[1]; a = a.split("\n"); var g = a.length, y = f + l, b = g * y - l, x = 0; "middle" === u && (x = b / 2, m += f / 2), "bottom" === u && (x = b, m += f), s = new Array(g).fill(0).map((function (e, t) { return [v, m + t * y - x] })), n.beginPath(), a.forEach((function (e, t) { n.fillText.apply(n, [e].concat((0, i["default"])(s[t]), [c])), n.strokeText.apply(n, [e].concat((0, i["default"])(s[t]), [c])) })), n.closePath() }, hoverCheck: function (e, t) { t.shape, t.style; return !1 }, setGraphCenter: function (e, t) { var n = t.shape, r = t.style, o = n.position; r.graphCenter = (0, i["default"])(o) }, move: function (e, t) { var n = e.movementX, r = e.movementY, i = t.shape, a = (0, o["default"])(i.position, 2), s = a[0], c = a[1]; this.attr("shape", { position: [s + n, c + r] }) } }; t.text = w; var _ = new Map([["circle", h], ["ellipse", f], ["rect", d], ["ring", p], ["arc", v], ["sector", m], ["regPolygon", g], ["polyline", y], ["smoothline", b], ["bezierCurve", x], ["text", w]]), C = _; function M(e, t) { e && t ? t.shape ? t.validator ? t.draw ? _.set(e, t) : console.error("Required function of draw to extendNewGraph!") : console.error("Required function of validator to extendNewGraph!") : console.error("Required attribute of shape to extendNewGraph!") : console.error("ExtendNewGraph Missing Parameters!") } t["default"] = C }, b071: function (e, t, n) { }, b0c0: function (e, t, n) { var r = n("83ab"), i = n("9bf2").f, o = Function.prototype, a = o.toString, s = /^\s*function ([^ (]*)/, c = "name"; r && !(c in o) && i(o, c, { configurable: !0, get: function () { try { return a.call(this).match(s)[1] } catch (e) { return "" } } }) }, b1b3: function (e, t, n) { var r = n("77e9"), i = n("23dd"); e.exports = n("5524").getIterator = function (e) { var t = i(e); if ("function" != typeof t) throw TypeError(e + " is not iterable!"); return r(t.call(e)) } }, b1e0: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return g })), n.d(t, "c", (function () { return x })); var r = n("92fa"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("8e8e"), c = n.n(s), l = n("b047"), u = n.n(l), h = n("4d91"), f = n("b488"), d = n("daa3"), p = n("7b05"), v = n("9cba"), m = h["a"].oneOf(["small", "default", "large"]), g = function () { return { prefixCls: h["a"].string, spinning: h["a"].bool, size: m, wrapperClassName: h["a"].string, tip: h["a"].string, delay: h["a"].number, indicator: h["a"].any } }, y = void 0; function b(e, t) { return !!e && !!t && !isNaN(Number(t)) } function x(e) { y = "function" === typeof e.indicator ? e.indicator : function (t) { return t(e.indicator) } } t["b"] = { name: "ASpin", mixins: [f["a"]], props: Object(d["t"])(g(), { size: "default", spinning: !0, wrapperClassName: "" }), inject: { configProvider: { default: function () { return v["a"] } } }, data: function () { var e = this.spinning, t = this.delay, n = b(e, t); return this.originalUpdateSpinning = this.updateSpinning, this.debouncifyUpdateSpinning(this.$props), { sSpinning: e && !n } }, mounted: function () { this.updateSpinning() }, updated: function () { var e = this; this.$nextTick((function () { e.debouncifyUpdateSpinning(), e.updateSpinning() })) }, beforeDestroy: function () { this.cancelExistingSpin() }, methods: { debouncifyUpdateSpinning: function (e) { var t = e || this.$props, n = t.delay; n && (this.cancelExistingSpin(), this.updateSpinning = u()(this.originalUpdateSpinning, n)) }, updateSpinning: function () { var e = this.spinning, t = this.sSpinning; t !== e && this.setState({ sSpinning: e }) }, cancelExistingSpin: function () { var e = this.updateSpinning; e && e.cancel && e.cancel() }, getChildren: function () { return this.$slots && this.$slots["default"] ? Object(d["c"])(this.$slots["default"]) : null }, renderIndicator: function (e, t) { var n = t + "-dot", r = Object(d["g"])(this, "indicator"); return null === r ? null : (Array.isArray(r) && (r = Object(d["c"])(r), r = 1 === r.length ? r[0] : r), Object(d["w"])(r) ? Object(p["a"])(r, { class: n }) : y && Object(d["w"])(y(e)) ? Object(p["a"])(y(e), { class: n }) : e("span", { class: n + " " + t + "-dot-spin" }, [e("i", { class: t + "-dot-item" }), e("i", { class: t + "-dot-item" }), e("i", { class: t + "-dot-item" }), e("i", { class: t + "-dot-item" })])) } }, render: function (e) { var t, n = this.$props, r = n.size, o = n.prefixCls, s = n.tip, l = n.wrapperClassName, u = c()(n, ["size", "prefixCls", "tip", "wrapperClassName"]), h = this.configProvider.getPrefixCls, f = h("spin", o), p = this.sSpinning, v = (t = {}, a()(t, f, !0), a()(t, f + "-sm", "small" === r), a()(t, f + "-lg", "large" === r), a()(t, f + "-spinning", p), a()(t, f + "-show-text", !!s), t), m = e("div", i()([u, { class: v }]), [this.renderIndicator(e, f), s ? e("div", { class: f + "-text" }, [s]) : null]), g = this.getChildren(); if (g) { var y, b = (y = {}, a()(y, f + "-container", !0), a()(y, f + "-blur", p), y); return e("div", i()([{ on: Object(d["k"])(this) }, { class: [f + "-nested-loading", l] }]), [p && e("div", { key: "loading" }, [m]), e("div", { class: b, key: "container" }, [g])]) } return m } } }, b1e5: function (e, t, n) { var r = n("a994"), i = 1, o = Object.prototype, a = o.hasOwnProperty; function s(e, t, n, o, s, c) { var l = n & i, u = r(e), h = u.length, f = r(t), d = f.length; if (h != d && !l) return !1; var p = h; while (p--) { var v = u[p]; if (!(l ? v in t : a.call(t, v))) return !1 } var m = c.get(e), g = c.get(t); if (m && g) return m == t && g == e; var y = !0; c.set(e, t), c.set(t, e); var b = l; while (++p < h) { v = u[p]; var x = e[v], w = t[v]; if (o) var _ = l ? o(w, x, v, t, e, c) : o(x, w, v, e, t, c); if (!(void 0 === _ ? x === w || s(x, w, n, o, c) : _)) { y = !1; break } b || (b = "constructor" == v) } if (y && !b) { var C = e.constructor, M = t.constructor; C == M || !("constructor" in e) || !("constructor" in t) || "function" == typeof C && C instanceof C && "function" == typeof M && M instanceof M || (y = !1) } return c["delete"](e), c["delete"](t), y } e.exports = s }, b218: function (e, t) { var n = 9007199254740991; function r(e) { return "number" == typeof e && e > -1 && e % 1 == 0 && e <= n } e.exports = r }, b24f: function (e, t, n) { "use strict"; t.__esModule = !0; var r = n("93ff"), i = s(r), o = n("1727"), a = s(o); function s(e) { return e && e.__esModule ? e : { default: e } } t.default = function () { function e(e, t) { var n = [], r = !0, i = !1, o = void 0; try { for (var s, c = (0, a.default)(e); !(r = (s = c.next()).done); r = !0)if (n.push(s.value), t && n.length === t) break } catch (l) { i = !0, o = l } finally { try { !r && c["return"] && c["return"]() } finally { if (i) throw o } } return n } return function (t, n) { if (Array.isArray(t)) return t; if ((0, i.default)(Object(t))) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }() }, b2a3: function (e, t, n) { }, b2b7: function (e, t, n) { "use strict"; n.r(t), n.d(t, "isElementNode", (function () { return i })), n.d(t, "svgComponent", (function () { return a })); var r = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, i = function (e) { return e.hasOwnProperty("tag") }; function o(e, t) { if (i(t)) { var n = []; return t.children && (n = t.children.map((function (t) { return o(e, t) }))), e(t.tag, { attrs: t.attrsMap }, n) } return t.text } var a = function (e) { var t = { props: { scale: { type: [Number, Boolean], default: 1, required: !1 }, fill: { type: String, default: "currentColor", required: !1 } }, inheritAttrs: !1, computed: { dimension: function () { if (!this.scale || !e.attrsMap || !e.attrsMap.viewBox) return {}; var t = e.attrsMap.viewBox.split(" "); return { width: Math.floor(parseInt(t[2]) * this.scale), height: Math.floor(parseInt(t[3]) * this.scale) } } }, render: function (t) { var n = this.scale ? this.dimension : {}, i = r({}, e.attrsMap, { "aria-hidden": "true", fill: this.fill }, n, this.$attrs); return t(e.tag, { attrs: i, on: this.$listeners }, [this.$slots.default].concat((e.children || []).map((function (e) { return o(t, e) })))) } }; return t } }, b367: function (e, t, n) { var r = n("5524"), i = n("ef08"), o = "__core-js_shared__", a = i[o] || (i[o] = {}); (e.exports = function (e, t) { return a[e] || (a[e] = void 0 !== t ? t : {}) })("versions", []).push({ version: r.version, mode: n("e444") ? "pure" : "global", copyright: "漏 2020 Denis Pushkarev (zloirock.ru)" }) }, b380: function (e, t, n) { "use strict"; n("b2a3"), n("266d") }, b39a: function (e, t, n) { "use strict"; var r = n("da84"), i = n("ebb5"), o = n("d039"), a = r.Int8Array, s = i.aTypedArray, c = i.exportTypedArrayMethod, l = [].toLocaleString, u = [].slice, h = !!a && o((function () { l.call(new a(1)) })), f = o((function () { return [1, 2].toLocaleString() != new a([1, 2]).toLocaleString() })) || !o((function () { a.prototype.toLocaleString.call([1, 2]) })); c("toLocaleString", (function () { return l.apply(h ? u.call(s(this)) : s(this), arguments) }), f) }, b44f: function (e, t, n) { (function (t, n) { e.exports = n() })(0, (function () { return function (e) { var t = {}; function n(r) { if (t[r]) return t[r].exports; var i = t[r] = { i: r, l: !1, exports: {} }; return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports } return n.m = e, n.c = t, n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { configurable: !1, enumerable: !0, get: r }) }, n.n = function (e) { var t = e && e.__esModule ? function () { return e["default"] } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = 0) }([function (e, t, n) { var r = n(1); e.exports = r }, function (e, t, n) { function r(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var i = n(2), o = ["X", "Y", "XY", "POLYGON"], a = function () { function e(t) { r(this, e), this.startPoint = null, this.brushing = !1, this.dragging = !1, this.brushShape = null, this.container = null, this.polygonPath = null, this.style = { fill: "#C5D4EB", opacity: .3, lineWidth: 1, stroke: "#82A6DD" }, this.type = "XY", this.dragable = !1, this.dragoffX = 0, this.dragoffY = 0, this.inPlot = !0, this.xField = null, this.yField = null, this.filter = !t.dragable, this.onBrushstart = null, this.onBrushmove = null, this.onBrushend = null, this.onDragstart = null, this.onDragmove = null, this.onDragend = null, this._init(t) } return e.prototype._init = function (e) { i.mix(this, e), this.type = this.type.toUpperCase(), -1 === o.indexOf(this.type) && (this.type = "XY"); var t = this.canvas; if (t) { var n = void 0; t.get("children").map((function (e) { return "plotBack" === e.get("type") ? (n = e.get("plotRange"), !1) : e })), this.plot = { start: n.bl, end: n.tr }, this.bindCanvasEvent() } if (this.chart) { var r = this.chart, a = r.get("coord"); this.plot = { start: a.start, end: a.end }; var s = r._getScales("x"), c = r._getScales("y"); this.xScale = this.xField ? s[this.xField] : r.getXScale(), this.yScale = this.yField ? c[this.yField] : r.getYScales()[0] } }, e.prototype.clearEvents = function () { this.onMouseDownListener && this.onMouseDownListener.remove(), this.onMouseMoveListener && this.onMouseMoveListener.remove(), this.onMouseupListener && this.onMouseupListener.remove() }, e.prototype.bindCanvasEvent = function () { var e = this.canvas, t = e.get("canvasDOM"); this.clearEvents(), this.onMouseDownListener = i.addEventListener(t, "mousedown", i.wrapBehavior(this, "_onCanvasMouseDown")), this.onMouseMoveListener = i.addEventListener(t, "mousemove", i.wrapBehavior(this, "_onCanvasMouseMove")), this.onMouseUpListener = i.addEventListener(t, "mouseup", i.wrapBehavior(this, "_onCanvasMouseUp")) }, e.prototype._onCanvasMouseDown = function (e) { var t = this, n = t.canvas, r = t.type, i = t.brushShape; if (r) { var o = { x: e.offsetX, y: e.offsetY }, a = t.plot && t.inPlot, s = n.get("canvasDOM"), c = n.get("pixelRatio"); if (t.selection && (t.selection = null), t.dragable && i && !i.get("destroyed")) { if (i.isHit(o.x * c, o.y * c)) { if (s.style.cursor = "move", t.selection = i, t.dragging = !0, "X" === r) t.dragoffX = o.x - i.attr("x"), t.dragoffY = 0; else if ("Y" === r) t.dragoffX = 0, t.dragoffY = o.y - i.attr("y"); else if ("XY" === r) t.dragoffX = o.x - i.attr("x"), t.dragoffY = o.y - i.attr("y"); else if ("POLYGON" === r) { var l = i.getBBox(); t.dragoffX = o.x - l.minX, t.dragoffY = o.y - l.minY } a && t.selection.attr("clip", n.addShape("rect", { attrs: { x: this.plot.start.x, y: this.plot.end.y, width: this.plot.end.x - this.plot.start.x, height: this.plot.start.y - this.plot.end.y, fill: "#fff", fillOpacity: 0 } })), t.onDragstart && t.onDragstart(e) } t.prePoint = o } if (!t.dragging) { t.onBrushstart && t.onBrushstart(o); var u = t.container; if (a) { var h = t.plot, f = h.start, d = h.end; if (o.x < f.x || o.x > d.x || o.y < d.y || o.y > f.y) return } s.style.cursor = "crosshair", t.startPoint = o, t.brushShape = null, t.brushing = !0, u ? u.clear() : (u = n.addGroup({ zIndex: 5 }), u.initTransform()), t.container = u, "POLYGON" === r && (t.polygonPath = "M " + o.x + " " + o.y) } } }, e.prototype._onCanvasMouseMove = function (e) { var t = this, n = t.brushing, r = t.dragging, o = t.type, a = t.plot, s = t.startPoint, c = t.xScale, l = t.yScale, u = t.canvas; if (n || r) { var h = { x: e.offsetX, y: e.offsetY }, f = u.get("canvasDOM"); if (n) { f.style.cursor = "crosshair"; var d = a.start, p = a.end, v = t.polygonPath, m = t.brushShape, g = t.container; t.plot && t.inPlot && (h = t._limitCoordScope(h)); var y = void 0, b = void 0, x = void 0, w = void 0; "Y" === o ? (y = d.x, b = h.y >= s.y ? s.y : h.y, x = Math.abs(d.x - p.x), w = Math.abs(s.y - h.y)) : "X" === o ? (y = h.x >= s.x ? s.x : h.x, b = p.y, x = Math.abs(s.x - h.x), w = Math.abs(p.y - d.y)) : "XY" === o ? (h.x >= s.x ? (y = s.x, b = h.y >= s.y ? s.y : h.y) : (y = h.x, b = h.y >= s.y ? s.y : h.y), x = Math.abs(s.x - h.x), w = Math.abs(s.y - h.y)) : "POLYGON" === o && (v += "L " + h.x + " " + h.y, t.polygonPath = v, m ? !m.get("destroyed") && m.attr(i.mix({}, m.__attrs, { path: v })) : m = g.addShape("path", { attrs: i.mix(t.style, { path: v }) })), "POLYGON" !== o && (m ? !m.get("destroyed") && m.attr(i.mix({}, m.__attrs, { x: y, y: b, width: x, height: w })) : m = g.addShape("rect", { attrs: i.mix(t.style, { x: y, y: b, width: x, height: w }) })), t.brushShape = m } else if (r) { f.style.cursor = "move"; var _ = t.selection; if (_ && !_.get("destroyed")) if ("POLYGON" === o) { var C = t.prePoint; t.selection.translate(h.x - C.x, h.y - C.y) } else t.dragoffX && _.attr("x", h.x - t.dragoffX), t.dragoffY && _.attr("y", h.y - t.dragoffY) } t.prePoint = h, u.draw(); var M = t._getSelected(), O = M.data, k = M.shapes, S = M.xValues, T = M.yValues, A = { data: O, shapes: k, x: h.x, y: h.y }; c && (A[c.field] = S), l && (A[l.field] = T), t.onDragmove && t.onDragmove(A), t.onBrushmove && t.onBrushmove(A) } }, e.prototype._onCanvasMouseUp = function (e) { var t = this, n = t.data, r = t.shapes, o = t.xValues, a = t.yValues, s = t.canvas, c = t.type, l = t.startPoint, u = t.chart, h = t.container, f = t.xScale, d = t.yScale, p = e.offsetX, v = e.offsetY, m = s.get("canvasDOM"); if (m.style.cursor = "default", Math.abs(l.x - p) <= 1 && Math.abs(l.y - v) <= 1) return t.brushing = !1, void (t.dragging = !1); var g = { data: n, shapes: r, x: p, y: v }; if (f && (g[f.field] = o), d && (g[d.field] = a), t.dragging) t.dragging = !1, t.onDragend && t.onDragend(g); else if (t.brushing) { t.brushing = !1; var y = t.brushShape, b = t.polygonPath; "POLYGON" === c && (b += "z", y && !y.get("destroyed") && y.attr(i.mix({}, y.__attrs, { path: b })), t.polygonPath = b, s.draw()), t.onBrushend ? t.onBrushend(g) : u && t.filter && (h.clear(), "X" === c ? f && u.filter(f.field, (function (e) { return o.indexOf(e) > -1 })) : ("Y" === c || f && u.filter(f.field, (function (e) { return o.indexOf(e) > -1 })), d && u.filter(d.field, (function (e) { return a.indexOf(e) > -1 }))), u.repaint()) } }, e.prototype.setType = function (e) { e && (this.type = e.toUpperCase()) }, e.prototype.destroy = function () { this.clearEvents() }, e.prototype._limitCoordScope = function (e) { var t = this.plot, n = t.start, r = t.end; return e.x < n.x && (e.x = n.x), e.x > r.x && (e.x = r.x), e.y < r.y && (e.y = r.y), e.y > n.y && (e.y = n.y), e }, e.prototype._getSelected = function () { var e = this.chart, t = this.xScale, n = this.yScale, r = this.brushShape, i = this.canvas, o = i.get("pixelRatio"), a = [], s = [], c = [], l = []; if (e) { var u = e.get("geoms"); u.map((function (e) { var i = e.getShapes(); return i.map((function (e) { var i = e.get("origin"); return Array.isArray(i) || (i = [i]), i.map((function (i) { if (r.isHit(i.x * o, i.y * o)) { a.push(e); var u = i._origin; l.push(u), t && s.push(u[t.field]), n && c.push(u[n.field]) } return i })), e })), e })) } return this.shapes = a, this.xValues = s, this.yValues = c, this.data = l, { data: l, xValues: s, yValues: c, shapes: a } }, e }(); e.exports = a }, function (e, t) { function n(e, t) { for (var n in t) t.hasOwnProperty(n) && "constructor" !== n && void 0 !== t[n] && (e[n] = t[n]) } var r = { mix: function (e, t, r, i) { return t && n(e, t), r && n(e, r), i && n(e, i), e }, addEventListener: function (e, t, n) { return e.addEventListener ? (e.addEventListener(t, n, !1), { remove: function () { e.removeEventListener(t, n, !1) } }) : e.attachEvent ? (e.attachEvent("on" + t, n), { remove: function () { e.detachEvent("on" + t, n) } }) : void 0 }, wrapBehavior: function (e, t) { if (e["_wrap_" + t]) return e["_wrap_" + t]; var n = function (n) { e[t](n) }; return e["_wrap_" + t] = n, n }, getWrapBehavior: function (e, t) { return e["_wrap_" + t] } }; e.exports = r }]) })) }, b488: function (e, t, n) { "use strict"; var r = n("9b57"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("daa3"); t["a"] = { methods: { setState: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = arguments[1], n = "function" === typeof e ? e(this.$data, this.$props) : e; if (this.getDerivedStateFromProps) { var r = this.getDerivedStateFromProps(Object(s["l"])(this), a()({}, this.$data, n)); if (null === r) return; n = a()({}, n, r || {}) } a()(this.$data, n), this.$forceUpdate(), this.$nextTick((function () { t && t() })) }, __emit: function () { var e = [].slice.call(arguments, 0), t = e[0], n = this.$listeners[t]; if (e.length && n) if (Array.isArray(n)) for (var r = 0, o = n.length; r < o; r++)n[r].apply(n, i()(e.slice(1))); else n.apply(void 0, i()(e.slice(1))) } } } }, b4a0: function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("f8d5"), a = n("01c2"), s = { lang: i()({ placeholder: "Select date", rangePlaceholder: ["Start date", "End date"] }, o["a"]), timePickerLocale: i()({}, a["a"]) }; t["a"] = s }, b4b0: function (e, t, n) { var r = n("8d74"), i = n("1a8c"), o = n("ffd6"), a = NaN, s = /^[-+]0x[0-9a-f]+$/i, c = /^0b[01]+$/i, l = /^0o[0-7]+$/i, u = parseInt; function h(e) { if ("number" == typeof e) return e; if (o(e)) return a; if (i(e)) { var t = "function" == typeof e.valueOf ? e.valueOf() : e; e = i(t) ? t + "" : t } if ("string" != typeof e) return 0 === e ? e : +e; e = r(e); var n = c.test(e); return n || l.test(e) ? u(e.slice(2), n ? 2 : 8) : s.test(e) ? a : +e } e.exports = h }, b4c0: function (e, t, n) { var r = n("cb5a"); function i(e) { var t = this.__data__, n = r(t, e); return n < 0 ? void 0 : t[n][1] } e.exports = i }, b558: function (e, t, n) { "use strict"; var r = n("8bbf"), i = n.n(r), o = n("92fa"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("6042"), u = n.n(l), h = n("4d26"), f = n.n(h), d = n("0c63"), p = n("4d91"), v = n("7b05"), m = n("daa3"); function g(e) { return !!(Object(m["g"])(e, "prefix") || Object(m["g"])(e, "suffix") || e.$props.allowClear) } var y = ["text", "input"], b = { props: { prefixCls: p["a"].string, inputType: p["a"].oneOf(y), value: p["a"].any, defaultValue: p["a"].any, allowClear: p["a"].bool, element: p["a"].any, handleReset: p["a"].func, disabled: p["a"].bool, size: p["a"].oneOf(["small", "large", "default"]), suffix: p["a"].any, prefix: p["a"].any, addonBefore: p["a"].any, addonAfter: p["a"].any, className: p["a"].string, readOnly: p["a"].bool }, methods: { renderClearIcon: function (e) { var t = this.$createElement, n = this.$props, r = n.allowClear, i = n.value, o = n.disabled, a = n.readOnly, s = n.inputType, c = n.handleReset; if (!r || o || a || void 0 === i || null === i || "" === i) return null; var l = s === y[0] ? e + "-textarea-clear-icon" : e + "-clear-icon"; return t(d["a"], { attrs: { type: "close-circle", theme: "filled", role: "button" }, on: { click: c }, class: l }) }, renderSuffix: function (e) { var t = this.$createElement, n = this.$props, r = n.suffix, i = n.allowClear; return r || i ? t("span", { class: e + "-suffix" }, [this.renderClearIcon(e), r]) : null }, renderLabeledIcon: function (e, t) { var n, r = this.$createElement, i = this.$props, o = this.renderSuffix(e); if (!g(this)) return Object(v["a"])(t, { props: { value: i.value } }); var a = i.prefix ? r("span", { class: e + "-prefix" }, [i.prefix]) : null, s = f()(i.className, e + "-affix-wrapper", (n = {}, u()(n, e + "-affix-wrapper-sm", "small" === i.size), u()(n, e + "-affix-wrapper-lg", "large" === i.size), u()(n, e + "-affix-wrapper-input-with-clear-btn", i.suffix && i.allowClear && this.$props.value), n)); return r("span", { class: s, style: i.style }, [a, Object(v["a"])(t, { style: null, props: { value: i.value }, class: U(e, i.size, i.disabled) }), o]) }, renderInputWithLabel: function (e, t) { var n, r = this.$createElement, i = this.$props, o = i.addonBefore, a = i.addonAfter, s = i.style, c = i.size, l = i.className; if (!o && !a) return t; var h = e + "-group", d = h + "-addon", p = o ? r("span", { class: d }, [o]) : null, m = a ? r("span", { class: d }, [a]) : null, g = f()(e + "-wrapper", u()({}, h, o || a)), y = f()(l, e + "-group-wrapper", (n = {}, u()(n, e + "-group-wrapper-sm", "small" === c), u()(n, e + "-group-wrapper-lg", "large" === c), n)); return r("span", { class: y, style: s }, [r("span", { class: g }, [p, Object(v["a"])(t, { style: null }), m])]) }, renderTextAreaWithClearIcon: function (e, t) { var n = this.$createElement, r = this.$props, i = r.value, o = r.allowClear, a = r.className, s = r.style; if (!o) return Object(v["a"])(t, { props: { value: i } }); var c = f()(a, e + "-affix-wrapper", e + "-affix-wrapper-textarea-with-clear-btn"); return n("span", { class: c, style: s }, [Object(v["a"])(t, { style: null, props: { value: i } }), this.renderClearIcon(e)]) }, renderClearableLabeledInput: function () { var e = this.$props, t = e.prefixCls, n = e.inputType, r = e.element; return n === y[0] ? this.renderTextAreaWithClearIcon(t, r) : this.renderInputWithLabel(t, this.renderLabeledIcon(t, r)) } }, render: function () { return this.renderClearableLabeledInput() } }, x = b, w = n("6dd8"), _ = { name: "ResizeObserver", props: { disabled: Boolean }, data: function () { return this.currentElement = null, this.resizeObserver = null, { width: 0, height: 0 } }, mounted: function () { this.onComponentUpdated() }, updated: function () { this.onComponentUpdated() }, beforeDestroy: function () { this.destroyObserver() }, methods: { onComponentUpdated: function () { var e = this.$props.disabled; if (e) this.destroyObserver(); else { var t = this.$el, n = t !== this.currentElement; n && (this.destroyObserver(), this.currentElement = t), !this.resizeObserver && t && (this.resizeObserver = new w["a"](this.onResize), this.resizeObserver.observe(t)) } }, onResize: function (e) { var t = e[0].target, n = t.getBoundingClientRect(), r = n.width, i = n.height, o = Math.floor(r), a = Math.floor(i); if (this.width !== o || this.height !== a) { var s = { width: o, height: a }; this.width = o, this.height = a, this.$emit("resize", s) } }, destroyObserver: function () { this.resizeObserver && (this.resizeObserver.disconnect(), this.resizeObserver = null) } }, render: function () { return this.$slots["default"][0] } }, C = _, M = n("0464"), O = "\n  min-height:0 !important;\n  max-height:none !important;\n  height:0 !important;\n  visibility:hidden !important;\n  overflow:hidden !important;\n  position:absolute !important;\n  z-index:-1000 !important;\n  top:0 !important;\n  right:0 !important\n", k = ["letter-spacing", "line-height", "padding-top", "padding-bottom", "font-family", "font-weight", "font-size", "font-variant", "text-rendering", "text-transform", "width", "text-indent", "padding-left", "padding-right", "border-width", "box-sizing"], S = {}, T = void 0; function A(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = e.getAttribute("id") || e.getAttribute("data-reactid") || e.getAttribute("name"); if (t && S[n]) return S[n]; var r = window.getComputedStyle(e), i = r.getPropertyValue("box-sizing") || r.getPropertyValue("-moz-box-sizing") || r.getPropertyValue("-webkit-box-sizing"), o = parseFloat(r.getPropertyValue("padding-bottom")) + parseFloat(r.getPropertyValue("padding-top")), a = parseFloat(r.getPropertyValue("border-bottom-width")) + parseFloat(r.getPropertyValue("border-top-width")), s = k.map((function (e) { return e + ":" + r.getPropertyValue(e) })).join(";"), c = { sizingStyle: s, paddingSize: o, borderSize: a, boxSizing: i }; return t && n && (S[n] = c), c } function L(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null; T || (T = document.createElement("textarea"), document.body.appendChild(T)), e.getAttribute("wrap") ? T.setAttribute("wrap", e.getAttribute("wrap")) : T.removeAttribute("wrap"); var i = A(e, t), o = i.paddingSize, a = i.borderSize, s = i.boxSizing, c = i.sizingStyle; T.setAttribute("style", c + ";" + O), T.value = e.value || e.placeholder || ""; var l = Number.MIN_SAFE_INTEGER, u = Number.MAX_SAFE_INTEGER, h = T.scrollHeight, f = void 0; if ("border-box" === s ? h += a : "content-box" === s && (h -= o), null !== n || null !== r) { T.value = " "; var d = T.scrollHeight - o; null !== n && (l = d * n, "border-box" === s && (l = l + o + a), h = Math.max(l, h)), null !== r && (u = d * r, "border-box" === s && (u = u + o + a), f = h > u ? "" : "hidden", h = Math.min(u, h)) } return { height: h + "px", minHeight: l + "px", maxHeight: u + "px", overflowY: f } } var j = n("b6bb"), z = n("6a21"), E = n("b488"), P = { prefixCls: p["a"].string, inputPrefixCls: p["a"].string, defaultValue: p["a"].oneOfType([p["a"].string, p["a"].number]), value: p["a"].oneOfType([p["a"].string, p["a"].number]), placeholder: [String, Number], type: { default: "text", type: String }, name: String, size: p["a"].oneOf(["small", "large", "default"]), disabled: p["a"].bool, readOnly: p["a"].bool, addonBefore: p["a"].any, addonAfter: p["a"].any, prefix: p["a"].any, suffix: p["a"].any, autoFocus: Boolean, allowClear: Boolean, lazy: { default: !0, type: Boolean }, maxLength: p["a"].number, loading: p["a"].bool, className: p["a"].string }, D = 0, H = 1, V = 2, I = c()({}, P, { autosize: p["a"].oneOfType([Object, Boolean]), autoSize: p["a"].oneOfType([Object, Boolean]) }), N = { name: "ResizableTextArea", props: I, data: function () { return { textareaStyles: {}, resizeStatus: D } }, mixins: [E["a"]], mounted: function () { var e = this; this.$nextTick((function () { e.resizeTextarea() })) }, beforeDestroy: function () { j["a"].cancel(this.nextFrameActionId), j["a"].cancel(this.resizeFrameId) }, watch: { value: function () { var e = this; this.$nextTick((function () { e.resizeTextarea() })) } }, methods: { handleResize: function (e) { var t = this.$data.resizeStatus, n = this.$props.autoSize; t === D && (this.$emit("resize", e), n && this.resizeOnNextFrame()) }, resizeOnNextFrame: function () { j["a"].cancel(this.nextFrameActionId), this.nextFrameActionId = Object(j["a"])(this.resizeTextarea) }, resizeTextarea: function () { var e = this, t = this.$props.autoSize || this.$props.autosize; if (t && this.$refs.textArea) { var n = t.minRows, r = t.maxRows, i = L(this.$refs.textArea, !1, n, r); this.setState({ textareaStyles: i, resizeStatus: H }, (function () { j["a"].cancel(e.resizeFrameId), e.resizeFrameId = Object(j["a"])((function () { e.setState({ resizeStatus: V }, (function () { e.resizeFrameId = Object(j["a"])((function () { e.setState({ resizeStatus: D }), e.fixFirefoxAutoScroll() })) })) })) })) } }, fixFirefoxAutoScroll: function () { try { if (document.activeElement === this.$refs.textArea) { var e = this.$refs.textArea.selectionStart, t = this.$refs.textArea.selectionEnd; this.$refs.textArea.setSelectionRange(e, t) } } catch (n) { } }, renderTextArea: function () { var e = this.$createElement, t = Object(m["l"])(this), n = t.prefixCls, r = t.autoSize, i = t.autosize, o = t.disabled, s = this.$data, l = s.textareaStyles, h = s.resizeStatus; Object(z["a"])(void 0 === i, "Input.TextArea", "autosize is deprecated, please use autoSize instead."); var d = Object(M["a"])(t, ["prefixCls", "autoSize", "autosize", "defaultValue", "allowClear", "type", "lazy", "value"]), p = f()(n, u()({}, n + "-disabled", o)), v = {}; "value" in t && (v.value = t.value || ""); var g = c()({}, l, h === H ? { overflowX: "hidden", overflowY: "hidden" } : null), y = { attrs: d, domProps: v, style: g, class: p, on: Object(M["a"])(Object(m["k"])(this), "pressEnter"), directives: [{ name: "ant-input" }] }; return e(C, { on: { resize: this.handleResize }, attrs: { disabled: !(r || i) } }, [e("textarea", a()([y, { ref: "textArea" }]))]) } }, render: function () { return this.renderTextArea() } }, R = N, F = n("9cba"), Y = c()({}, P, { autosize: p["a"].oneOfType([Object, Boolean]), autoSize: p["a"].oneOfType([Object, Boolean]) }), $ = { name: "ATextarea", inheritAttrs: !1, model: { prop: "value", event: "change.value" }, props: c()({}, Y), inject: { configProvider: { default: function () { return F["a"] } } }, data: function () { var e = "undefined" === typeof this.value ? this.defaultValue : this.value; return { stateValue: "undefined" === typeof e ? "" : e } }, computed: {}, watch: { value: function (e) { this.stateValue = e } }, mounted: function () { var e = this; this.$nextTick((function () { e.autoFocus && e.focus() })) }, methods: { setValue: function (e, t) { Object(m["b"])(this, "value") || (this.stateValue = e, this.$nextTick((function () { t && t() }))) }, handleKeyDown: function (e) { 13 === e.keyCode && this.$emit("pressEnter", e), this.$emit("keydown", e) }, onChange: function (e) { this.$emit("change.value", e.target.value), this.$emit("change", e), this.$emit("input", e) }, handleChange: function (e) { var t = this, n = e.target, r = n.value, i = n.composing; (e.isComposing || i) && this.lazy || this.stateValue === r || (this.setValue(e.target.value, (function () { t.$refs.resizableTextArea.resizeTextarea() })), q(this.$refs.resizableTextArea.$refs.textArea, e, this.onChange)) }, focus: function () { this.$refs.resizableTextArea.$refs.textArea.focus() }, blur: function () { this.$refs.resizableTextArea.$refs.textArea.blur() }, handleReset: function (e) { var t = this; this.setValue("", (function () { t.$refs.resizableTextArea.renderTextArea(), t.focus() })), q(this.$refs.resizableTextArea.$refs.textArea, e, this.onChange) }, renderTextArea: function (e) { var t = this.$createElement, n = Object(m["l"])(this), r = { props: c()({}, n, { prefixCls: e }), on: c()({}, Object(m["k"])(this), { input: this.handleChange, keydown: this.handleKeyDown }), attrs: this.$attrs }; return t(R, a()([r, { ref: "resizableTextArea" }])) } }, render: function () { var e = arguments[0], t = this.stateValue, n = this.prefixCls, r = this.configProvider.getPrefixCls, i = r("input", n), o = { props: c()({}, Object(m["l"])(this), { prefixCls: i, inputType: "text", value: W(t), element: this.renderTextArea(i), handleReset: this.handleReset }), on: Object(m["k"])(this) }; return e(x, o) } }; function B() { } function W(e) { return "undefined" === typeof e || null === e ? "" : e } function q(e, t, n) { if (n) { var r = t; if ("click" === t.type) { Object.defineProperty(r, "target", { writable: !0 }), Object.defineProperty(r, "currentTarget", { writable: !0 }), r.target = e, r.currentTarget = e; var i = e.value; return e.value = "", n(r), void (e.value = i) } n(r) } } function U(e, t, n) { var r; return f()(e, (r = {}, u()(r, e + "-sm", "small" === t), u()(r, e + "-lg", "large" === t), u()(r, e + "-disabled", n), r)) } var K = { name: "AInput", inheritAttrs: !1, model: { prop: "value", event: "change.value" }, props: c()({}, P), inject: { configProvider: { default: function () { return F["a"] } } }, data: function () { var e = this.$props, t = "undefined" === typeof e.value ? e.defaultValue : e.value; return { stateValue: "undefined" === typeof t ? "" : t } }, watch: { value: function (e) { this.stateValue = e } }, mounted: function () { var e = this; this.$nextTick((function () { e.autoFocus && e.focus(), e.clearPasswordValueAttribute() })) }, beforeDestroy: function () { this.removePasswordTimeout && clearTimeout(this.removePasswordTimeout) }, methods: { focus: function () { this.$refs.input.focus() }, blur: function () { this.$refs.input.blur() }, select: function () { this.$refs.input.select() }, setValue: function (e, t) { this.stateValue !== e && (Object(m["s"])(this, "value") || (this.stateValue = e, this.$nextTick((function () { t && t() })))) }, onChange: function (e) { this.$emit("change.value", e.target.value), this.$emit("change", e), this.$emit("input", e) }, handleReset: function (e) { var t = this; this.setValue("", (function () { t.focus() })), q(this.$refs.input, e, this.onChange) }, renderInput: function (e) { var t = this.$createElement, n = Object(M["a"])(this.$props, ["prefixCls", "addonBefore", "addonAfter", "prefix", "suffix", "allowClear", "value", "defaultValue", "lazy", "size", "inputType", "className"]), r = this.stateValue, i = this.handleKeyDown, o = this.handleChange, a = this.size, s = this.disabled, l = { directives: [{ name: "ant-input" }], domProps: { value: W(r) }, attrs: c()({}, n, this.$attrs), on: c()({}, Object(m["k"])(this), { keydown: i, input: o, change: B }), class: U(e, a, s), ref: "input", key: "ant-input" }; return t("input", l) }, clearPasswordValueAttribute: function () { var e = this; this.removePasswordTimeout = setTimeout((function () { e.$refs.input && e.$refs.input.getAttribute && "password" === e.$refs.input.getAttribute("type") && e.$refs.input.hasAttribute("value") && e.$refs.input.removeAttribute("value") })) }, handleChange: function (e) { var t = e.target, n = t.value, r = t.composing; (e.isComposing || r) && this.lazy || this.stateValue === n || (this.setValue(n, this.clearPasswordValueAttribute), q(this.$refs.input, e, this.onChange)) }, handleKeyDown: function (e) { 13 === e.keyCode && this.$emit("pressEnter", e), this.$emit("keydown", e) } }, render: function () { var e = arguments[0]; if ("textarea" === this.$props.type) { var t = { props: this.$props, attrs: this.$attrs, on: c()({}, Object(m["k"])(this), { input: this.handleChange, keydown: this.handleKeyDown, change: B }) }; return e($, a()([t, { ref: "input" }])) } var n = this.$props.prefixCls, r = this.$data.stateValue, i = this.configProvider.getPrefixCls, o = i("input", n), s = Object(m["g"])(this, "addonAfter"), l = Object(m["g"])(this, "addonBefore"), u = Object(m["g"])(this, "suffix"), h = Object(m["g"])(this, "prefix"), f = { props: c()({}, Object(m["l"])(this), { prefixCls: o, inputType: "input", value: W(r), element: this.renderInput(o), handleReset: this.handleReset, addonAfter: s, addonBefore: l, suffix: u, prefix: h }), on: Object(m["k"])(this) }; return e(x, f) } }, G = { name: "AInputGroup", props: { prefixCls: p["a"].string, size: { validator: function (e) { return ["small", "large", "default"].includes(e) } }, compact: Boolean }, inject: { configProvider: { default: function () { return F["a"] } } }, computed: { classes: function () { var e, t = this.prefixCls, n = this.size, r = this.compact, i = void 0 !== r && r, o = this.configProvider.getPrefixCls, a = o("input-group", t); return e = {}, u()(e, "" + a, !0), u()(e, a + "-lg", "large" === n), u()(e, a + "-sm", "small" === n), u()(e, a + "-compact", i), e } }, methods: {}, render: function () { var e = arguments[0]; return e("span", a()([{ class: this.classes }, { on: Object(m["k"])(this) }]), [Object(m["c"])(this.$slots["default"])]) } }, X = n("8e8e"), J = n.n(X), Q = n("8df8"), Z = n("5efb"), ee = { name: "AInputSearch", inheritAttrs: !1, model: { prop: "value", event: "change.value" }, props: c()({}, P, { enterButton: p["a"].any }), inject: { configProvider: { default: function () { return F["a"] } } }, methods: { onChange: function (e) { e && e.target && "click" === e.type && this.$emit("search", e.target.value, e), this.$emit("change", e) }, onSearch: function (e) { this.loading || this.disabled || (this.$emit("search", this.$refs.input.stateValue, e), Object(Q["isMobile"])({ tablet: !0 }) || this.$refs.input.focus()) }, focus: function () { this.$refs.input.focus() }, blur: function () { this.$refs.input.blur() }, renderLoading: function (e) { var t = this.$createElement, n = this.$props.size, r = Object(m["g"])(this, "enterButton"); return r = r || "" === r, r ? t(Z["a"], { class: e + "-button", attrs: { type: "primary", size: n }, key: "enterButton" }, [t(d["a"], { attrs: { type: "loading" } })]) : t(d["a"], { class: e + "-icon", attrs: { type: "loading" }, key: "loadingIcon" }) }, renderSuffix: function (e) { var t = this.$createElement, n = this.loading, r = Object(m["g"])(this, "suffix"), i = Object(m["g"])(this, "enterButton"); if (i = i || "" === i, n && !i) return [r, this.renderLoading(e)]; if (i) return r; var o = t(d["a"], { class: e + "-icon", attrs: { type: "search" }, key: "searchIcon", on: { click: this.onSearch } }); return r ? [r, o] : o }, renderAddonAfter: function (e) { var t = this.$createElement, n = this.size, r = this.disabled, i = this.loading, o = e + "-button", a = Object(m["g"])(this, "enterButton"); a = a || "" === a; var s = Object(m["g"])(this, "addonAfter"); if (i && a) return [this.renderLoading(e), s]; if (!a) return s; var c = Array.isArray(a) ? a[0] : a, l = void 0, u = c.componentOptions && c.componentOptions.Ctor.extendOptions.__ANT_BUTTON; return l = "button" === c.tag || u ? Object(v["a"])(c, { key: "enterButton", class: u ? o : "", props: u ? { size: n } : {}, on: { click: this.onSearch } }) : t(Z["a"], { class: o, attrs: { type: "primary", size: n, disabled: r }, key: "enterButton", on: { click: this.onSearch } }, [!0 === a || "" === a ? t(d["a"], { attrs: { type: "search" } }) : a]), s ? [l, s] : l } }, render: function () { var e = arguments[0], t = Object(m["l"])(this), n = t.prefixCls, r = t.inputPrefixCls, i = t.size, o = (t.loading, J()(t, ["prefixCls", "inputPrefixCls", "size", "loading"])), a = this.configProvider.getPrefixCls, s = a("input-search", n), l = a("input", r), h = Object(m["g"])(this, "enterButton"), d = Object(m["g"])(this, "addonBefore"); h = h || "" === h; var p, v = void 0; h ? v = f()(s, (p = {}, u()(p, s + "-enter-button", !!h), u()(p, s + "-" + i, !!i), p)) : v = s; var g = c()({}, Object(m["k"])(this)); delete g.search; var y = { props: c()({}, o, { prefixCls: l, size: i, suffix: this.renderSuffix(s), prefix: Object(m["g"])(this, "prefix"), addonAfter: this.renderAddonAfter(s), addonBefore: d, className: v }), attrs: this.$attrs, ref: "input", on: c()({ pressEnter: this.onSearch }, g, { change: this.onChange }) }; return e(K, y) } }, te = { click: "click", hover: "mouseover" }, ne = { name: "AInputPassword", mixins: [E["a"]], inheritAttrs: !1, model: { prop: "value", event: "change.value" }, props: c()({}, P, { prefixCls: p["a"].string.def("ant-input-password"), inputPrefixCls: p["a"].string.def("ant-input"), action: p["a"].string.def("click"), visibilityToggle: p["a"].bool.def(!0) }), data: function () { return { visible: !1 } }, methods: { focus: function () { this.$refs.input.focus() }, blur: function () { this.$refs.input.blur() }, onVisibleChange: function () { this.disabled || this.setState({ visible: !this.visible }) }, getIcon: function () { var e, t = this.$createElement, n = this.$props, r = n.prefixCls, i = n.action, o = te[i] || "", a = { props: { type: this.visible ? "eye" : "eye-invisible" }, on: (e = {}, u()(e, o, this.onVisibleChange), u()(e, "mousedown", (function (e) { e.preventDefault() })), u()(e, "mouseup", (function (e) { e.preventDefault() })), e), class: r + "-icon", key: "passwordIcon" }; return t(d["a"], a) } }, render: function () { var e = arguments[0], t = Object(m["l"])(this), n = t.prefixCls, r = t.inputPrefixCls, i = t.size, o = (t.suffix, t.visibilityToggle), a = J()(t, ["prefixCls", "inputPrefixCls", "size", "suffix", "visibilityToggle"]), s = o && this.getIcon(), l = f()(n, u()({}, n + "-" + i, !!i)), h = { props: c()({}, a, { prefixCls: r, size: i, suffix: s, prefix: Object(m["g"])(this, "prefix"), addonAfter: Object(m["g"])(this, "addonAfter"), addonBefore: Object(m["g"])(this, "addonBefore") }), attrs: c()({}, this.$attrs, { type: this.visible ? "text" : "password" }), class: l, ref: "input", on: Object(m["k"])(this) }; return e(K, h) } }, re = n("129d"), ie = n("db14"); i.a.use(re["b"]), K.Group = G, K.Search = ee, K.TextArea = $, K.Password = ne, K.install = function (e) { e.use(ie["a"]), e.component(K.name, K), e.component(K.Group.name, K.Group), e.component(K.Search.name, K.Search), e.component(K.TextArea.name, K.TextArea), e.component(K.Password.name, K.Password) }; t["a"] = K }, b56e: function (e, t, n) { "use strict"; var r = n("861d"), i = n("9bf2"), o = n("e163"), a = n("b622"), s = a("hasInstance"), c = Function.prototype; s in c || i.f(c, s, { value: function (e) { if ("function" != typeof this || !r(e)) return !1; if (!r(this.prototype)) return e instanceof this; while (e = o(e)) if (this.prototype === e) return !0; return !1 } }) }, b575: function (e, t, n) { var r, i, o, a, s, c, l, u, h = n("da84"), f = n("06cf").f, d = n("2cf4").set, p = n("1cdc"), v = n("d4c3"), m = n("a4b4"), g = n("605d"), y = h.MutationObserver || h.WebKitMutationObserver, b = h.document, x = h.process, w = h.Promise, _ = f(h, "queueMicrotask"), C = _ && _.value; C || (r = function () { var e, t; g && (e = x.domain) && e.exit(); while (i) { t = i.fn, i = i.next; try { t() } catch (n) { throw i ? a() : o = void 0, n } } o = void 0, e && e.enter() }, p || g || m || !y || !b ? !v && w && w.resolve ? (l = w.resolve(void 0), l.constructor = w, u = l.then, a = function () { u.call(l, r) }) : a = g ? function () { x.nextTick(r) } : function () { d.call(h, r) } : (s = !0, c = b.createTextNode(""), new y(r).observe(c, { characterData: !0 }), a = function () { c.data = s = !s })), e.exports = C || function (e) { var t = { fn: e, next: void 0 }; o && (o.next = t), i || (i = t, a()), o = t } }, b5a7: function (e, t, n) { var r = n("0b07"), i = n("2b3e"), o = r(i, "DataView"); e.exports = o }, b622: function (e, t, n) { var r = n("da84"), i = n("5692"), o = n("5135"), a = n("90e3"), s = n("4930"), c = n("fdbf"), l = i("wks"), u = r.Symbol, h = c ? u : u && u.withoutSetter || a; e.exports = function (e) { return o(l, e) && (s || "string" == typeof l[e]) || (s && o(u, e) ? l[e] = u[e] : l[e] = h("Symbol." + e)), l[e] } }, b636: function (e, t, n) { var r = n("746f"); r("asyncIterator") }, b639: function (e, t, n) {
+        "use strict"; (function (e) {
+            /*!
+             * The buffer module from node.js, for the browser.
+             *
+             * @author   Feross Aboukhadijeh <http://feross.org>
+             * @license  MIT
+             */
+            var r = n("1fb5"), i = n("9152"), o = n("e3db"); function a() { try { var e = new Uint8Array(1); return e.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }, 42 === e.foo() && "function" === typeof e.subarray && 0 === e.subarray(1, 1).byteLength } catch (t) { return !1 } } function s() { return l.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823 } function c(e, t) { if (s() < t) throw new RangeError("Invalid typed array length"); return l.TYPED_ARRAY_SUPPORT ? (e = new Uint8Array(t), e.__proto__ = l.prototype) : (null === e && (e = new l(t)), e.length = t), e } function l(e, t, n) { if (!l.TYPED_ARRAY_SUPPORT && !(this instanceof l)) return new l(e, t, n); if ("number" === typeof e) { if ("string" === typeof t) throw new Error("If encoding is specified then the first argument must be a string"); return d(this, e) } return u(this, e, t, n) } function u(e, t, n, r) { if ("number" === typeof t) throw new TypeError('"value" argument must not be a number'); return "undefined" !== typeof ArrayBuffer && t instanceof ArrayBuffer ? m(e, t, n, r) : "string" === typeof t ? p(e, t, n) : g(e, t) } function h(e) { if ("number" !== typeof e) throw new TypeError('"size" argument must be a number'); if (e < 0) throw new RangeError('"size" argument must not be negative') } function f(e, t, n, r) { return h(t), t <= 0 ? c(e, t) : void 0 !== n ? "string" === typeof r ? c(e, t).fill(n, r) : c(e, t).fill(n) : c(e, t) } function d(e, t) { if (h(t), e = c(e, t < 0 ? 0 : 0 | y(t)), !l.TYPED_ARRAY_SUPPORT) for (var n = 0; n < t; ++n)e[n] = 0; return e } function p(e, t, n) { if ("string" === typeof n && "" !== n || (n = "utf8"), !l.isEncoding(n)) throw new TypeError('"encoding" must be a valid string encoding'); var r = 0 | x(t, n); e = c(e, r); var i = e.write(t, n); return i !== r && (e = e.slice(0, i)), e } function v(e, t) { var n = t.length < 0 ? 0 : 0 | y(t.length); e = c(e, n); for (var r = 0; r < n; r += 1)e[r] = 255 & t[r]; return e } function m(e, t, n, r) { if (t.byteLength, n < 0 || t.byteLength < n) throw new RangeError("'offset' is out of bounds"); if (t.byteLength < n + (r || 0)) throw new RangeError("'length' is out of bounds"); return t = void 0 === n && void 0 === r ? new Uint8Array(t) : void 0 === r ? new Uint8Array(t, n) : new Uint8Array(t, n, r), l.TYPED_ARRAY_SUPPORT ? (e = t, e.__proto__ = l.prototype) : e = v(e, t), e } function g(e, t) { if (l.isBuffer(t)) { var n = 0 | y(t.length); return e = c(e, n), 0 === e.length ? e : (t.copy(e, 0, 0, n), e) } if (t) { if ("undefined" !== typeof ArrayBuffer && t.buffer instanceof ArrayBuffer || "length" in t) return "number" !== typeof t.length || te(t.length) ? c(e, 0) : v(e, t); if ("Buffer" === t.type && o(t.data)) return v(e, t.data) } throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.") } function y(e) { if (e >= s()) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + s().toString(16) + " bytes"); return 0 | e } function b(e) { return +e != e && (e = 0), l.alloc(+e) } function x(e, t) { if (l.isBuffer(e)) return e.length; if ("undefined" !== typeof ArrayBuffer && "function" === typeof ArrayBuffer.isView && (ArrayBuffer.isView(e) || e instanceof ArrayBuffer)) return e.byteLength; "string" !== typeof e && (e = "" + e); var n = e.length; if (0 === n) return 0; for (var r = !1; ;)switch (t) { case "ascii": case "latin1": case "binary": return n; case "utf8": case "utf-8": case void 0: return X(e).length; case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return 2 * n; case "hex": return n >>> 1; case "base64": return Z(e).length; default: if (r) return X(e).length; t = ("" + t).toLowerCase(), r = !0 } } function w(e, t, n) { var r = !1; if ((void 0 === t || t < 0) && (t = 0), t > this.length) return ""; if ((void 0 === n || n > this.length) && (n = this.length), n <= 0) return ""; if (n >>>= 0, t >>>= 0, n <= t) return ""; e || (e = "utf8"); while (1) switch (e) { case "hex": return V(this, t, n); case "utf8": case "utf-8": return z(this, t, n); case "ascii": return D(this, t, n); case "latin1": case "binary": return H(this, t, n); case "base64": return j(this, t, n); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return I(this, t, n); default: if (r) throw new TypeError("Unknown encoding: " + e); e = (e + "").toLowerCase(), r = !0 } } function _(e, t, n) { var r = e[t]; e[t] = e[n], e[n] = r } function C(e, t, n, r, i) { if (0 === e.length) return -1; if ("string" === typeof n ? (r = n, n = 0) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && (n = -2147483648), n = +n, isNaN(n) && (n = i ? 0 : e.length - 1), n < 0 && (n = e.length + n), n >= e.length) { if (i) return -1; n = e.length - 1 } else if (n < 0) { if (!i) return -1; n = 0 } if ("string" === typeof t && (t = l.from(t, r)), l.isBuffer(t)) return 0 === t.length ? -1 : M(e, t, n, r, i); if ("number" === typeof t) return t &= 255, l.TYPED_ARRAY_SUPPORT && "function" === typeof Uint8Array.prototype.indexOf ? i ? Uint8Array.prototype.indexOf.call(e, t, n) : Uint8Array.prototype.lastIndexOf.call(e, t, n) : M(e, [t], n, r, i); throw new TypeError("val must be string, number or Buffer") } function M(e, t, n, r, i) { var o, a = 1, s = e.length, c = t.length; if (void 0 !== r && (r = String(r).toLowerCase(), "ucs2" === r || "ucs-2" === r || "utf16le" === r || "utf-16le" === r)) { if (e.length < 2 || t.length < 2) return -1; a = 2, s /= 2, c /= 2, n /= 2 } function l(e, t) { return 1 === a ? e[t] : e.readUInt16BE(t * a) } if (i) { var u = -1; for (o = n; o < s; o++)if (l(e, o) === l(t, -1 === u ? 0 : o - u)) { if (-1 === u && (u = o), o - u + 1 === c) return u * a } else -1 !== u && (o -= o - u), u = -1 } else for (n + c > s && (n = s - c), o = n; o >= 0; o--) { for (var h = !0, f = 0; f < c; f++)if (l(e, o + f) !== l(t, f)) { h = !1; break } if (h) return o } return -1 } function O(e, t, n, r) { n = Number(n) || 0; var i = e.length - n; r ? (r = Number(r), r > i && (r = i)) : r = i; var o = t.length; if (o % 2 !== 0) throw new TypeError("Invalid hex string"); r > o / 2 && (r = o / 2); for (var a = 0; a < r; ++a) { var s = parseInt(t.substr(2 * a, 2), 16); if (isNaN(s)) return a; e[n + a] = s } return a } function k(e, t, n, r) { return ee(X(t, e.length - n), e, n, r) } function S(e, t, n, r) { return ee(J(t), e, n, r) } function T(e, t, n, r) { return S(e, t, n, r) } function A(e, t, n, r) { return ee(Z(t), e, n, r) } function L(e, t, n, r) { return ee(Q(t, e.length - n), e, n, r) } function j(e, t, n) { return 0 === t && n === e.length ? r.fromByteArray(e) : r.fromByteArray(e.slice(t, n)) } function z(e, t, n) { n = Math.min(e.length, n); var r = [], i = t; while (i < n) { var o, a, s, c, l = e[i], u = null, h = l > 239 ? 4 : l > 223 ? 3 : l > 191 ? 2 : 1; if (i + h <= n) switch (h) { case 1: l < 128 && (u = l); break; case 2: o = e[i + 1], 128 === (192 & o) && (c = (31 & l) << 6 | 63 & o, c > 127 && (u = c)); break; case 3: o = e[i + 1], a = e[i + 2], 128 === (192 & o) && 128 === (192 & a) && (c = (15 & l) << 12 | (63 & o) << 6 | 63 & a, c > 2047 && (c < 55296 || c > 57343) && (u = c)); break; case 4: o = e[i + 1], a = e[i + 2], s = e[i + 3], 128 === (192 & o) && 128 === (192 & a) && 128 === (192 & s) && (c = (15 & l) << 18 | (63 & o) << 12 | (63 & a) << 6 | 63 & s, c > 65535 && c < 1114112 && (u = c)) }null === u ? (u = 65533, h = 1) : u > 65535 && (u -= 65536, r.push(u >>> 10 & 1023 | 55296), u = 56320 | 1023 & u), r.push(u), i += h } return P(r) } t.Buffer = l, t.SlowBuffer = b, t.INSPECT_MAX_BYTES = 50, l.TYPED_ARRAY_SUPPORT = void 0 !== e.TYPED_ARRAY_SUPPORT ? e.TYPED_ARRAY_SUPPORT : a(), t.kMaxLength = s(), l.poolSize = 8192, l._augment = function (e) { return e.__proto__ = l.prototype, e }, l.from = function (e, t, n) { return u(null, e, t, n) }, l.TYPED_ARRAY_SUPPORT && (l.prototype.__proto__ = Uint8Array.prototype, l.__proto__ = Uint8Array, "undefined" !== typeof Symbol && Symbol.species && l[Symbol.species] === l && Object.defineProperty(l, Symbol.species, { value: null, configurable: !0 })), l.alloc = function (e, t, n) { return f(null, e, t, n) }, l.allocUnsafe = function (e) { return d(null, e) }, l.allocUnsafeSlow = function (e) { return d(null, e) }, l.isBuffer = function (e) { return !(null == e || !e._isBuffer) }, l.compare = function (e, t) { if (!l.isBuffer(e) || !l.isBuffer(t)) throw new TypeError("Arguments must be Buffers"); if (e === t) return 0; for (var n = e.length, r = t.length, i = 0, o = Math.min(n, r); i < o; ++i)if (e[i] !== t[i]) { n = e[i], r = t[i]; break } return n < r ? -1 : r < n ? 1 : 0 }, l.isEncoding = function (e) { switch (String(e).toLowerCase()) { case "hex": case "utf8": case "utf-8": case "ascii": case "latin1": case "binary": case "base64": case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return !0; default: return !1 } }, l.concat = function (e, t) { if (!o(e)) throw new TypeError('"list" argument must be an Array of Buffers'); if (0 === e.length) return l.alloc(0); var n; if (void 0 === t) for (t = 0, n = 0; n < e.length; ++n)t += e[n].length; var r = l.allocUnsafe(t), i = 0; for (n = 0; n < e.length; ++n) { var a = e[n]; if (!l.isBuffer(a)) throw new TypeError('"list" argument must be an Array of Buffers'); a.copy(r, i), i += a.length } return r }, l.byteLength = x, l.prototype._isBuffer = !0, l.prototype.swap16 = function () { var e = this.length; if (e % 2 !== 0) throw new RangeError("Buffer size must be a multiple of 16-bits"); for (var t = 0; t < e; t += 2)_(this, t, t + 1); return this }, l.prototype.swap32 = function () { var e = this.length; if (e % 4 !== 0) throw new RangeError("Buffer size must be a multiple of 32-bits"); for (var t = 0; t < e; t += 4)_(this, t, t + 3), _(this, t + 1, t + 2); return this }, l.prototype.swap64 = function () { var e = this.length; if (e % 8 !== 0) throw new RangeError("Buffer size must be a multiple of 64-bits"); for (var t = 0; t < e; t += 8)_(this, t, t + 7), _(this, t + 1, t + 6), _(this, t + 2, t + 5), _(this, t + 3, t + 4); return this }, l.prototype.toString = function () { var e = 0 | this.length; return 0 === e ? "" : 0 === arguments.length ? z(this, 0, e) : w.apply(this, arguments) }, l.prototype.equals = function (e) { if (!l.isBuffer(e)) throw new TypeError("Argument must be a Buffer"); return this === e || 0 === l.compare(this, e) }, l.prototype.inspect = function () { var e = "", n = t.INSPECT_MAX_BYTES; return this.length > 0 && (e = this.toString("hex", 0, n).match(/.{2}/g).join(" "), this.length > n && (e += " ... ")), "<Buffer " + e + ">" }, l.prototype.compare = function (e, t, n, r, i) { if (!l.isBuffer(e)) throw new TypeError("Argument must be a Buffer"); if (void 0 === t && (t = 0), void 0 === n && (n = e ? e.length : 0), void 0 === r && (r = 0), void 0 === i && (i = this.length), t < 0 || n > e.length || r < 0 || i > this.length) throw new RangeError("out of range index"); if (r >= i && t >= n) return 0; if (r >= i) return -1; if (t >= n) return 1; if (t >>>= 0, n >>>= 0, r >>>= 0, i >>>= 0, this === e) return 0; for (var o = i - r, a = n - t, s = Math.min(o, a), c = this.slice(r, i), u = e.slice(t, n), h = 0; h < s; ++h)if (c[h] !== u[h]) { o = c[h], a = u[h]; break } return o < a ? -1 : a < o ? 1 : 0 }, l.prototype.includes = function (e, t, n) { return -1 !== this.indexOf(e, t, n) }, l.prototype.indexOf = function (e, t, n) { return C(this, e, t, n, !0) }, l.prototype.lastIndexOf = function (e, t, n) { return C(this, e, t, n, !1) }, l.prototype.write = function (e, t, n, r) { if (void 0 === t) r = "utf8", n = this.length, t = 0; else if (void 0 === n && "string" === typeof t) r = t, n = this.length, t = 0; else { if (!isFinite(t)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported"); t |= 0, isFinite(n) ? (n |= 0, void 0 === r && (r = "utf8")) : (r = n, n = void 0) } var i = this.length - t; if ((void 0 === n || n > i) && (n = i), e.length > 0 && (n < 0 || t < 0) || t > this.length) throw new RangeError("Attempt to write outside buffer bounds"); r || (r = "utf8"); for (var o = !1; ;)switch (r) { case "hex": return O(this, e, t, n); case "utf8": case "utf-8": return k(this, e, t, n); case "ascii": return S(this, e, t, n); case "latin1": case "binary": return T(this, e, t, n); case "base64": return A(this, e, t, n); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return L(this, e, t, n); default: if (o) throw new TypeError("Unknown encoding: " + r); r = ("" + r).toLowerCase(), o = !0 } }, l.prototype.toJSON = function () { return { type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0) } }; var E = 4096; function P(e) { var t = e.length; if (t <= E) return String.fromCharCode.apply(String, e); var n = "", r = 0; while (r < t) n += String.fromCharCode.apply(String, e.slice(r, r += E)); return n } function D(e, t, n) { var r = ""; n = Math.min(e.length, n); for (var i = t; i < n; ++i)r += String.fromCharCode(127 & e[i]); return r } function H(e, t, n) { var r = ""; n = Math.min(e.length, n); for (var i = t; i < n; ++i)r += String.fromCharCode(e[i]); return r } function V(e, t, n) { var r = e.length; (!t || t < 0) && (t = 0), (!n || n < 0 || n > r) && (n = r); for (var i = "", o = t; o < n; ++o)i += G(e[o]); return i } function I(e, t, n) { for (var r = e.slice(t, n), i = "", o = 0; o < r.length; o += 2)i += String.fromCharCode(r[o] + 256 * r[o + 1]); return i } function N(e, t, n) { if (e % 1 !== 0 || e < 0) throw new RangeError("offset is not uint"); if (e + t > n) throw new RangeError("Trying to access beyond buffer length") } function R(e, t, n, r, i, o) { if (!l.isBuffer(e)) throw new TypeError('"buffer" argument must be a Buffer instance'); if (t > i || t < o) throw new RangeError('"value" argument is out of bounds'); if (n + r > e.length) throw new RangeError("Index out of range") } function F(e, t, n, r) { t < 0 && (t = 65535 + t + 1); for (var i = 0, o = Math.min(e.length - n, 2); i < o; ++i)e[n + i] = (t & 255 << 8 * (r ? i : 1 - i)) >>> 8 * (r ? i : 1 - i) } function Y(e, t, n, r) { t < 0 && (t = 4294967295 + t + 1); for (var i = 0, o = Math.min(e.length - n, 4); i < o; ++i)e[n + i] = t >>> 8 * (r ? i : 3 - i) & 255 } function $(e, t, n, r, i, o) { if (n + r > e.length) throw new RangeError("Index out of range"); if (n < 0) throw new RangeError("Index out of range") } function B(e, t, n, r, o) { return o || $(e, t, n, 4, 34028234663852886e22, -34028234663852886e22), i.write(e, t, n, r, 23, 4), n + 4 } function W(e, t, n, r, o) { return o || $(e, t, n, 8, 17976931348623157e292, -17976931348623157e292), i.write(e, t, n, r, 52, 8), n + 8 } l.prototype.slice = function (e, t) { var n, r = this.length; if (e = ~~e, t = void 0 === t ? r : ~~t, e < 0 ? (e += r, e < 0 && (e = 0)) : e > r && (e = r), t < 0 ? (t += r, t < 0 && (t = 0)) : t > r && (t = r), t < e && (t = e), l.TYPED_ARRAY_SUPPORT) n = this.subarray(e, t), n.__proto__ = l.prototype; else { var i = t - e; n = new l(i, void 0); for (var o = 0; o < i; ++o)n[o] = this[o + e] } return n }, l.prototype.readUIntLE = function (e, t, n) { e |= 0, t |= 0, n || N(e, t, this.length); var r = this[e], i = 1, o = 0; while (++o < t && (i *= 256)) r += this[e + o] * i; return r }, l.prototype.readUIntBE = function (e, t, n) { e |= 0, t |= 0, n || N(e, t, this.length); var r = this[e + --t], i = 1; while (t > 0 && (i *= 256)) r += this[e + --t] * i; return r }, l.prototype.readUInt8 = function (e, t) { return t || N(e, 1, this.length), this[e] }, l.prototype.readUInt16LE = function (e, t) { return t || N(e, 2, this.length), this[e] | this[e + 1] << 8 }, l.prototype.readUInt16BE = function (e, t) { return t || N(e, 2, this.length), this[e] << 8 | this[e + 1] }, l.prototype.readUInt32LE = function (e, t) { return t || N(e, 4, this.length), (this[e] | this[e + 1] << 8 | this[e + 2] << 16) + 16777216 * this[e + 3] }, l.prototype.readUInt32BE = function (e, t) { return t || N(e, 4, this.length), 16777216 * this[e] + (this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3]) }, l.prototype.readIntLE = function (e, t, n) { e |= 0, t |= 0, n || N(e, t, this.length); var r = this[e], i = 1, o = 0; while (++o < t && (i *= 256)) r += this[e + o] * i; return i *= 128, r >= i && (r -= Math.pow(2, 8 * t)), r }, l.prototype.readIntBE = function (e, t, n) { e |= 0, t |= 0, n || N(e, t, this.length); var r = t, i = 1, o = this[e + --r]; while (r > 0 && (i *= 256)) o += this[e + --r] * i; return i *= 128, o >= i && (o -= Math.pow(2, 8 * t)), o }, l.prototype.readInt8 = function (e, t) { return t || N(e, 1, this.length), 128 & this[e] ? -1 * (255 - this[e] + 1) : this[e] }, l.prototype.readInt16LE = function (e, t) { t || N(e, 2, this.length); var n = this[e] | this[e + 1] << 8; return 32768 & n ? 4294901760 | n : n }, l.prototype.readInt16BE = function (e, t) { t || N(e, 2, this.length); var n = this[e + 1] | this[e] << 8; return 32768 & n ? 4294901760 | n : n }, l.prototype.readInt32LE = function (e, t) { return t || N(e, 4, this.length), this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] << 24 }, l.prototype.readInt32BE = function (e, t) { return t || N(e, 4, this.length), this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3] }, l.prototype.readFloatLE = function (e, t) { return t || N(e, 4, this.length), i.read(this, e, !0, 23, 4) }, l.prototype.readFloatBE = function (e, t) { return t || N(e, 4, this.length), i.read(this, e, !1, 23, 4) }, l.prototype.readDoubleLE = function (e, t) { return t || N(e, 8, this.length), i.read(this, e, !0, 52, 8) }, l.prototype.readDoubleBE = function (e, t) { return t || N(e, 8, this.length), i.read(this, e, !1, 52, 8) }, l.prototype.writeUIntLE = function (e, t, n, r) { if (e = +e, t |= 0, n |= 0, !r) { var i = Math.pow(2, 8 * n) - 1; R(this, e, t, n, i, 0) } var o = 1, a = 0; this[t] = 255 & e; while (++a < n && (o *= 256)) this[t + a] = e / o & 255; return t + n }, l.prototype.writeUIntBE = function (e, t, n, r) { if (e = +e, t |= 0, n |= 0, !r) { var i = Math.pow(2, 8 * n) - 1; R(this, e, t, n, i, 0) } var o = n - 1, a = 1; this[t + o] = 255 & e; while (--o >= 0 && (a *= 256)) this[t + o] = e / a & 255; return t + n }, l.prototype.writeUInt8 = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 1, 255, 0), l.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), this[t] = 255 & e, t + 1 }, l.prototype.writeUInt16LE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 2, 65535, 0), l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8) : F(this, e, t, !0), t + 2 }, l.prototype.writeUInt16BE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 2, 65535, 0), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8, this[t + 1] = 255 & e) : F(this, e, t, !1), t + 2 }, l.prototype.writeUInt32LE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 4, 4294967295, 0), l.TYPED_ARRAY_SUPPORT ? (this[t + 3] = e >>> 24, this[t + 2] = e >>> 16, this[t + 1] = e >>> 8, this[t] = 255 & e) : Y(this, e, t, !0), t + 4 }, l.prototype.writeUInt32BE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 4, 4294967295, 0), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e) : Y(this, e, t, !1), t + 4 }, l.prototype.writeIntLE = function (e, t, n, r) { if (e = +e, t |= 0, !r) { var i = Math.pow(2, 8 * n - 1); R(this, e, t, n, i - 1, -i) } var o = 0, a = 1, s = 0; this[t] = 255 & e; while (++o < n && (a *= 256)) e < 0 && 0 === s && 0 !== this[t + o - 1] && (s = 1), this[t + o] = (e / a >> 0) - s & 255; return t + n }, l.prototype.writeIntBE = function (e, t, n, r) { if (e = +e, t |= 0, !r) { var i = Math.pow(2, 8 * n - 1); R(this, e, t, n, i - 1, -i) } var o = n - 1, a = 1, s = 0; this[t + o] = 255 & e; while (--o >= 0 && (a *= 256)) e < 0 && 0 === s && 0 !== this[t + o + 1] && (s = 1), this[t + o] = (e / a >> 0) - s & 255; return t + n }, l.prototype.writeInt8 = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 1, 127, -128), l.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), e < 0 && (e = 255 + e + 1), this[t] = 255 & e, t + 1 }, l.prototype.writeInt16LE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 2, 32767, -32768), l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8) : F(this, e, t, !0), t + 2 }, l.prototype.writeInt16BE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 2, 32767, -32768), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8, this[t + 1] = 255 & e) : F(this, e, t, !1), t + 2 }, l.prototype.writeInt32LE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 4, 2147483647, -2147483648), l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8, this[t + 2] = e >>> 16, this[t + 3] = e >>> 24) : Y(this, e, t, !0), t + 4 }, l.prototype.writeInt32BE = function (e, t, n) { return e = +e, t |= 0, n || R(this, e, t, 4, 2147483647, -2147483648), e < 0 && (e = 4294967295 + e + 1), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e) : Y(this, e, t, !1), t + 4 }, l.prototype.writeFloatLE = function (e, t, n) { return B(this, e, t, !0, n) }, l.prototype.writeFloatBE = function (e, t, n) { return B(this, e, t, !1, n) }, l.prototype.writeDoubleLE = function (e, t, n) { return W(this, e, t, !0, n) }, l.prototype.writeDoubleBE = function (e, t, n) { return W(this, e, t, !1, n) }, l.prototype.copy = function (e, t, n, r) { if (n || (n = 0), r || 0 === r || (r = this.length), t >= e.length && (t = e.length), t || (t = 0), r > 0 && r < n && (r = n), r === n) return 0; if (0 === e.length || 0 === this.length) return 0; if (t < 0) throw new RangeError("targetStart out of bounds"); if (n < 0 || n >= this.length) throw new RangeError("sourceStart out of bounds"); if (r < 0) throw new RangeError("sourceEnd out of bounds"); r > this.length && (r = this.length), e.length - t < r - n && (r = e.length - t + n); var i, o = r - n; if (this === e && n < t && t < r) for (i = o - 1; i >= 0; --i)e[i + t] = this[i + n]; else if (o < 1e3 || !l.TYPED_ARRAY_SUPPORT) for (i = 0; i < o; ++i)e[i + t] = this[i + n]; else Uint8Array.prototype.set.call(e, this.subarray(n, n + o), t); return o }, l.prototype.fill = function (e, t, n, r) { if ("string" === typeof e) { if ("string" === typeof t ? (r = t, t = 0, n = this.length) : "string" === typeof n && (r = n, n = this.length), 1 === e.length) { var i = e.charCodeAt(0); i < 256 && (e = i) } if (void 0 !== r && "string" !== typeof r) throw new TypeError("encoding must be a string"); if ("string" === typeof r && !l.isEncoding(r)) throw new TypeError("Unknown encoding: " + r) } else "number" === typeof e && (e &= 255); if (t < 0 || this.length < t || this.length < n) throw new RangeError("Out of range index"); if (n <= t) return this; var o; if (t >>>= 0, n = void 0 === n ? this.length : n >>> 0, e || (e = 0), "number" === typeof e) for (o = t; o < n; ++o)this[o] = e; else { var a = l.isBuffer(e) ? e : X(new l(e, r).toString()), s = a.length; for (o = 0; o < n - t; ++o)this[o + t] = a[o % s] } return this }; var q = /[^+\/0-9A-Za-z-_]/g; function U(e) { if (e = K(e).replace(q, ""), e.length < 2) return ""; while (e.length % 4 !== 0) e += "="; return e } function K(e) { return e.trim ? e.trim() : e.replace(/^\s+|\s+$/g, "") } function G(e) { return e < 16 ? "0" + e.toString(16) : e.toString(16) } function X(e, t) { var n; t = t || 1 / 0; for (var r = e.length, i = null, o = [], a = 0; a < r; ++a) { if (n = e.charCodeAt(a), n > 55295 && n < 57344) { if (!i) { if (n > 56319) { (t -= 3) > -1 && o.push(239, 191, 189); continue } if (a + 1 === r) { (t -= 3) > -1 && o.push(239, 191, 189); continue } i = n; continue } if (n < 56320) { (t -= 3) > -1 && o.push(239, 191, 189), i = n; continue } n = 65536 + (i - 55296 << 10 | n - 56320) } else i && (t -= 3) > -1 && o.push(239, 191, 189); if (i = null, n < 128) { if ((t -= 1) < 0) break; o.push(n) } else if (n < 2048) { if ((t -= 2) < 0) break; o.push(n >> 6 | 192, 63 & n | 128) } else if (n < 65536) { if ((t -= 3) < 0) break; o.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128) } else { if (!(n < 1114112)) throw new Error("Invalid code point"); if ((t -= 4) < 0) break; o.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128) } } return o } function J(e) { for (var t = [], n = 0; n < e.length; ++n)t.push(255 & e.charCodeAt(n)); return t } function Q(e, t) { for (var n, r, i, o = [], a = 0; a < e.length; ++a) { if ((t -= 2) < 0) break; n = e.charCodeAt(a), r = n >> 8, i = n % 256, o.push(i), o.push(r) } return o } function Z(e) { return r.toByteArray(U(e)) } function ee(e, t, n, r) { for (var i = 0; i < r; ++i) { if (i + n >= t.length || i >= e.length) break; t[i + n] = e[i] } return i } function te(e) { return e !== e }
+        }).call(this, n("c8ba"))
+    }, b64b: function (e, t, n) { var r = n("23e7"), i = n("7b0b"), o = n("df75"), a = n("d039"), s = a((function () { o(1) })); r({ target: "Object", stat: !0, forced: s }, { keys: function (e) { return o(i(e)) } }) }, b65f: function (e, t, n) { var r = n("23e7"), i = Math.ceil, o = Math.floor; r({ target: "Math", stat: !0 }, { trunc: function (e) { return (e > 0 ? o : i)(e) } }) }, b680: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("a691"), o = n("408a"), a = n("1148"), s = n("d039"), c = 1..toFixed, l = Math.floor, u = function (e, t, n) { return 0 === t ? n : t % 2 === 1 ? u(e, t - 1, n * e) : u(e * e, t / 2, n) }, h = function (e) { var t = 0, n = e; while (n >= 4096) t += 12, n /= 4096; while (n >= 2) t += 1, n /= 2; return t }, f = function (e, t, n) { var r = -1, i = n; while (++r < 6) i += t * e[r], e[r] = i % 1e7, i = l(i / 1e7) }, d = function (e, t) { var n = 6, r = 0; while (--n >= 0) r += e[n], e[n] = l(r / t), r = r % t * 1e7 }, p = function (e) { var t = 6, n = ""; while (--t >= 0) if ("" !== n || 0 === t || 0 !== e[t]) { var r = String(e[t]); n = "" === n ? r : n + a.call("0", 7 - r.length) + r } return n }, v = c && ("0.000" !== 8e-5.toFixed(3) || "1" !== .9.toFixed(0) || "1.25" !== 1.255.toFixed(2) || "1000000000000000128" !== (0xde0b6b3a7640080).toFixed(0)) || !s((function () { c.call({}) })); r({ target: "Number", proto: !0, forced: v }, { toFixed: function (e) { var t, n, r, s, c = o(this), l = i(e), v = [0, 0, 0, 0, 0, 0], m = "", g = "0"; if (l < 0 || l > 20) throw RangeError("Incorrect fraction digits"); if (c != c) return "NaN"; if (c <= -1e21 || c >= 1e21) return String(c); if (c < 0 && (m = "-", c = -c), c > 1e-21) if (t = h(c * u(2, 69, 1)) - 69, n = t < 0 ? c * u(2, -t, 1) : c / u(2, t, 1), n *= 4503599627370496, t = 52 - t, t > 0) { f(v, 0, n), r = l; while (r >= 7) f(v, 1e7, 0), r -= 7; f(v, u(10, r, 1), 0), r = t - 1; while (r >= 23) d(v, 1 << 23), r -= 23; d(v, 1 << r), f(v, 1, 1), d(v, 2), g = p(v) } else f(v, 0, n), f(v, 1 << -t, 0), g = p(v) + a.call("0", l); return l > 0 ? (s = g.length, g = m + (s <= l ? "0." + a.call("0", l - s) + g : g.slice(0, s - l) + "." + g.slice(s - l))) : g = m + g, g } }) }, b6b7: function (e, t, n) { var r = n("ebb5"), i = n("4840"), o = r.TYPED_ARRAY_CONSTRUCTOR, a = r.aTypedArrayConstructor; e.exports = function (e) { return a(i(e, e[o])) } }, b6bb: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return s })); var r = n("c449"), i = n.n(r), o = 0, a = {}; function s(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1, n = o++, r = t; function s() { r -= 1, r <= 0 ? (e(), delete a[n]) : a[n] = i()(s) } return a[n] = i()(s), n } s.cancel = function (e) { void 0 !== e && (i.a.cancel(a[e]), delete a[e]) }, s.ids = a }, b727: function (e, t, n) { var r = n("0366"), i = n("44ad"), o = n("7b0b"), a = n("50c4"), s = n("65f0"), c = [].push, l = function (e) { var t = 1 == e, n = 2 == e, l = 3 == e, u = 4 == e, h = 6 == e, f = 7 == e, d = 5 == e || h; return function (p, v, m, g) { for (var y, b, x = o(p), w = i(x), _ = r(v, m, 3), C = a(w.length), M = 0, O = g || s, k = t ? O(p, C) : n || f ? O(p, 0) : void 0; C > M; M++)if ((d || M in w) && (y = w[M], b = _(y, M, x), e)) if (t) k[M] = b; else if (b) switch (e) { case 3: return !0; case 5: return y; case 6: return M; case 2: c.call(k, y) } else switch (e) { case 4: return !1; case 7: c.call(k, y) }return h ? -1 : l || u ? u : k } }; e.exports = { forEach: l(0), map: l(1), filter: l(2), some: l(3), every: l(4), find: l(5), findIndex: l(6), filterReject: l(7) } }, b72d: function (e, t, n) { }, b760: function (e, t, n) { var r = n("872a"), i = n("9638"); function o(e, t, n) { (void 0 !== n && !i(e[t], n) || void 0 === n && !(t in e)) && r(e, t, n) } e.exports = o }, b76a: function (e, t, n) { (function (t, r) { e.exports = r(n("aa47")) })("undefined" !== typeof self && self, (function (e) { return function (e) { var t = {}; function n(r) { if (t[r]) return t[r].exports; var i = t[r] = { i: r, l: !1, exports: {} }; return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports } return n.m = e, n.c = t, n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: r }) }, n.r = function (e) { "undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }) }, n.t = function (e, t) { if (1 & t && (e = n(e)), 8 & t) return e; if (4 & t && "object" === typeof e && e && e.__esModule) return e; var r = Object.create(null); if (n.r(r), Object.defineProperty(r, "default", { enumerable: !0, value: e }), 2 & t && "string" != typeof e) for (var i in e) n.d(r, i, function (t) { return e[t] }.bind(null, i)); return r }, n.n = function (e) { var t = e && e.__esModule ? function () { return e["default"] } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = "fb15") }({ "01f9": function (e, t, n) { "use strict"; var r = n("2d00"), i = n("5ca1"), o = n("2aba"), a = n("32e9"), s = n("84f2"), c = n("41a0"), l = n("7f20"), u = n("38fd"), h = n("2b4c")("iterator"), f = !([].keys && "next" in [].keys()), d = "@@iterator", p = "keys", v = "values", m = function () { return this }; e.exports = function (e, t, n, g, y, b, x) { c(n, t, g); var w, _, C, M = function (e) { if (!f && e in T) return T[e]; switch (e) { case p: return function () { return new n(this, e) }; case v: return function () { return new n(this, e) } }return function () { return new n(this, e) } }, O = t + " Iterator", k = y == v, S = !1, T = e.prototype, A = T[h] || T[d] || y && T[y], L = A || M(y), j = y ? k ? M("entries") : L : void 0, z = "Array" == t && T.entries || A; if (z && (C = u(z.call(new e)), C !== Object.prototype && C.next && (l(C, O, !0), r || "function" == typeof C[h] || a(C, h, m))), k && A && A.name !== v && (S = !0, L = function () { return A.call(this) }), r && !x || !f && !S && T[h] || a(T, h, L), s[t] = L, s[O] = m, y) if (w = { values: k ? L : M(v), keys: b ? L : M(p), entries: j }, x) for (_ in w) _ in T || o(T, _, w[_]); else i(i.P + i.F * (f || S), t, w); return w } }, "02f4": function (e, t, n) { var r = n("4588"), i = n("be13"); e.exports = function (e) { return function (t, n) { var o, a, s = String(i(t)), c = r(n), l = s.length; return c < 0 || c >= l ? e ? "" : void 0 : (o = s.charCodeAt(c), o < 55296 || o > 56319 || c + 1 === l || (a = s.charCodeAt(c + 1)) < 56320 || a > 57343 ? e ? s.charAt(c) : o : e ? s.slice(c, c + 2) : a - 56320 + (o - 55296 << 10) + 65536) } } }, "0390": function (e, t, n) { "use strict"; var r = n("02f4")(!0); e.exports = function (e, t, n) { return t + (n ? r(e, t).length : 1) } }, "0bfb": function (e, t, n) { "use strict"; var r = n("cb7c"); e.exports = function () { var e = r(this), t = ""; return e.global && (t += "g"), e.ignoreCase && (t += "i"), e.multiline && (t += "m"), e.unicode && (t += "u"), e.sticky && (t += "y"), t } }, "0d58": function (e, t, n) { var r = n("ce10"), i = n("e11e"); e.exports = Object.keys || function (e) { return r(e, i) } }, 1495: function (e, t, n) { var r = n("86cc"), i = n("cb7c"), o = n("0d58"); e.exports = n("9e1e") ? Object.defineProperties : function (e, t) { i(e); var n, a = o(t), s = a.length, c = 0; while (s > c) r.f(e, n = a[c++], t[n]); return e } }, "214f": function (e, t, n) { "use strict"; n("b0c5"); var r = n("2aba"), i = n("32e9"), o = n("79e5"), a = n("be13"), s = n("2b4c"), c = n("520a"), l = s("species"), u = !o((function () { var e = /./; return e.exec = function () { var e = []; return e.groups = { a: "7" }, e }, "7" !== "".replace(e, "$<a>") })), h = function () { var e = /(?:)/, t = e.exec; e.exec = function () { return t.apply(this, arguments) }; var n = "ab".split(e); return 2 === n.length && "a" === n[0] && "b" === n[1] }(); e.exports = function (e, t, n) { var f = s(e), d = !o((function () { var t = {}; return t[f] = function () { return 7 }, 7 != ""[e](t) })), p = d ? !o((function () { var t = !1, n = /a/; return n.exec = function () { return t = !0, null }, "split" === e && (n.constructor = {}, n.constructor[l] = function () { return n }), n[f](""), !t })) : void 0; if (!d || !p || "replace" === e && !u || "split" === e && !h) { var v = /./[f], m = n(a, f, ""[e], (function (e, t, n, r, i) { return t.exec === c ? d && !i ? { done: !0, value: v.call(t, n, r) } : { done: !0, value: e.call(n, t, r) } : { done: !1 } })), g = m[0], y = m[1]; r(String.prototype, e, g), i(RegExp.prototype, f, 2 == t ? function (e, t) { return y.call(e, this, t) } : function (e) { return y.call(e, this) }) } } }, "230e": function (e, t, n) { var r = n("d3f4"), i = n("7726").document, o = r(i) && r(i.createElement); e.exports = function (e) { return o ? i.createElement(e) : {} } }, "23c6": function (e, t, n) { var r = n("2d95"), i = n("2b4c")("toStringTag"), o = "Arguments" == r(function () { return arguments }()), a = function (e, t) { try { return e[t] } catch (n) { } }; e.exports = function (e) { var t, n, s; return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof (n = a(t = Object(e), i)) ? n : o ? r(t) : "Object" == (s = r(t)) && "function" == typeof t.callee ? "Arguments" : s } }, 2621: function (e, t) { t.f = Object.getOwnPropertySymbols }, "2aba": function (e, t, n) { var r = n("7726"), i = n("32e9"), o = n("69a8"), a = n("ca5a")("src"), s = n("fa5b"), c = "toString", l = ("" + s).split(c); n("8378").inspectSource = function (e) { return s.call(e) }, (e.exports = function (e, t, n, s) { var c = "function" == typeof n; c && (o(n, "name") || i(n, "name", t)), e[t] !== n && (c && (o(n, a) || i(n, a, e[t] ? "" + e[t] : l.join(String(t)))), e === r ? e[t] = n : s ? e[t] ? e[t] = n : i(e, t, n) : (delete e[t], i(e, t, n))) })(Function.prototype, c, (function () { return "function" == typeof this && this[a] || s.call(this) })) }, "2aeb": function (e, t, n) { var r = n("cb7c"), i = n("1495"), o = n("e11e"), a = n("613b")("IE_PROTO"), s = function () { }, c = "prototype", l = function () { var e, t = n("230e")("iframe"), r = o.length, i = "<", a = ">"; t.style.display = "none", n("fab2").appendChild(t), t.src = "javascript:", e = t.contentWindow.document, e.open(), e.write(i + "script" + a + "document.F=Object" + i + "/script" + a), e.close(), l = e.F; while (r--) delete l[c][o[r]]; return l() }; e.exports = Object.create || function (e, t) { var n; return null !== e ? (s[c] = r(e), n = new s, s[c] = null, n[a] = e) : n = l(), void 0 === t ? n : i(n, t) } }, "2b4c": function (e, t, n) { var r = n("5537")("wks"), i = n("ca5a"), o = n("7726").Symbol, a = "function" == typeof o, s = e.exports = function (e) { return r[e] || (r[e] = a && o[e] || (a ? o : i)("Symbol." + e)) }; s.store = r }, "2d00": function (e, t) { e.exports = !1 }, "2d95": function (e, t) { var n = {}.toString; e.exports = function (e) { return n.call(e).slice(8, -1) } }, "2fdb": function (e, t, n) { "use strict"; var r = n("5ca1"), i = n("d2c8"), o = "includes"; r(r.P + r.F * n("5147")(o), "String", { includes: function (e) { return !!~i(this, e, o).indexOf(e, arguments.length > 1 ? arguments[1] : void 0) } }) }, "32e9": function (e, t, n) { var r = n("86cc"), i = n("4630"); e.exports = n("9e1e") ? function (e, t, n) { return r.f(e, t, i(1, n)) } : function (e, t, n) { return e[t] = n, e } }, "38fd": function (e, t, n) { var r = n("69a8"), i = n("4bf8"), o = n("613b")("IE_PROTO"), a = Object.prototype; e.exports = Object.getPrototypeOf || function (e) { return e = i(e), r(e, o) ? e[o] : "function" == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? a : null } }, "41a0": function (e, t, n) { "use strict"; var r = n("2aeb"), i = n("4630"), o = n("7f20"), a = {}; n("32e9")(a, n("2b4c")("iterator"), (function () { return this })), e.exports = function (e, t, n) { e.prototype = r(a, { next: i(1, n) }), o(e, t + " Iterator") } }, "456d": function (e, t, n) { var r = n("4bf8"), i = n("0d58"); n("5eda")("keys", (function () { return function (e) { return i(r(e)) } })) }, 4588: function (e, t) { var n = Math.ceil, r = Math.floor; e.exports = function (e) { return isNaN(e = +e) ? 0 : (e > 0 ? r : n)(e) } }, 4630: function (e, t) { e.exports = function (e, t) { return { enumerable: !(1 & e), configurable: !(2 & e), writable: !(4 & e), value: t } } }, "4bf8": function (e, t, n) { var r = n("be13"); e.exports = function (e) { return Object(r(e)) } }, 5147: function (e, t, n) { var r = n("2b4c")("match"); e.exports = function (e) { var t = /./; try { "/./"[e](t) } catch (n) { try { return t[r] = !1, !"/./"[e](t) } catch (i) { } } return !0 } }, "520a": function (e, t, n) { "use strict"; var r = n("0bfb"), i = RegExp.prototype.exec, o = String.prototype.replace, a = i, s = "lastIndex", c = function () { var e = /a/, t = /b*/g; return i.call(e, "a"), i.call(t, "a"), 0 !== e[s] || 0 !== t[s] }(), l = void 0 !== /()??/.exec("")[1], u = c || l; u && (a = function (e) { var t, n, a, u, h = this; return l && (n = new RegExp("^" + h.source + "$(?!\\s)", r.call(h))), c && (t = h[s]), a = i.call(h, e), c && a && (h[s] = h.global ? a.index + a[0].length : t), l && a && a.length > 1 && o.call(a[0], n, (function () { for (u = 1; u < arguments.length - 2; u++)void 0 === arguments[u] && (a[u] = void 0) })), a }), e.exports = a }, "52a7": function (e, t) { t.f = {}.propertyIsEnumerable }, 5537: function (e, t, n) { var r = n("8378"), i = n("7726"), o = "__core-js_shared__", a = i[o] || (i[o] = {}); (e.exports = function (e, t) { return a[e] || (a[e] = void 0 !== t ? t : {}) })("versions", []).push({ version: r.version, mode: n("2d00") ? "pure" : "global", copyright: "漏 2019 Denis Pushkarev (zloirock.ru)" }) }, "5ca1": function (e, t, n) { var r = n("7726"), i = n("8378"), o = n("32e9"), a = n("2aba"), s = n("9b43"), c = "prototype", l = function (e, t, n) { var u, h, f, d, p = e & l.F, v = e & l.G, m = e & l.S, g = e & l.P, y = e & l.B, b = v ? r : m ? r[t] || (r[t] = {}) : (r[t] || {})[c], x = v ? i : i[t] || (i[t] = {}), w = x[c] || (x[c] = {}); for (u in v && (n = t), n) h = !p && b && void 0 !== b[u], f = (h ? b : n)[u], d = y && h ? s(f, r) : g && "function" == typeof f ? s(Function.call, f) : f, b && a(b, u, f, e & l.U), x[u] != f && o(x, u, d), g && w[u] != f && (w[u] = f) }; r.core = i, l.F = 1, l.G = 2, l.S = 4, l.P = 8, l.B = 16, l.W = 32, l.U = 64, l.R = 128, e.exports = l }, "5eda": function (e, t, n) { var r = n("5ca1"), i = n("8378"), o = n("79e5"); e.exports = function (e, t) { var n = (i.Object || {})[e] || Object[e], a = {}; a[e] = t(n), r(r.S + r.F * o((function () { n(1) })), "Object", a) } }, "5f1b": function (e, t, n) { "use strict"; var r = n("23c6"), i = RegExp.prototype.exec; e.exports = function (e, t) { var n = e.exec; if ("function" === typeof n) { var o = n.call(e, t); if ("object" !== typeof o) throw new TypeError("RegExp exec method returned something other than an Object or null"); return o } if ("RegExp" !== r(e)) throw new TypeError("RegExp#exec called on incompatible receiver"); return i.call(e, t) } }, "613b": function (e, t, n) { var r = n("5537")("keys"), i = n("ca5a"); e.exports = function (e) { return r[e] || (r[e] = i(e)) } }, "626a": function (e, t, n) { var r = n("2d95"); e.exports = Object("z").propertyIsEnumerable(0) ? Object : function (e) { return "String" == r(e) ? e.split("") : Object(e) } }, 6762: function (e, t, n) { "use strict"; var r = n("5ca1"), i = n("c366")(!0); r(r.P, "Array", { includes: function (e) { return i(this, e, arguments.length > 1 ? arguments[1] : void 0) } }), n("9c6c")("includes") }, 6821: function (e, t, n) { var r = n("626a"), i = n("be13"); e.exports = function (e) { return r(i(e)) } }, "69a8": function (e, t) { var n = {}.hasOwnProperty; e.exports = function (e, t) { return n.call(e, t) } }, "6a99": function (e, t, n) { var r = n("d3f4"); e.exports = function (e, t) { if (!r(e)) return e; var n, i; if (t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; if ("function" == typeof (n = e.valueOf) && !r(i = n.call(e))) return i; if (!t && "function" == typeof (n = e.toString) && !r(i = n.call(e))) return i; throw TypeError("Can't convert object to primitive value") } }, 7333: function (e, t, n) { "use strict"; var r = n("0d58"), i = n("2621"), o = n("52a7"), a = n("4bf8"), s = n("626a"), c = Object.assign; e.exports = !c || n("79e5")((function () { var e = {}, t = {}, n = Symbol(), r = "abcdefghijklmnopqrst"; return e[n] = 7, r.split("").forEach((function (e) { t[e] = e })), 7 != c({}, e)[n] || Object.keys(c({}, t)).join("") != r })) ? function (e, t) { var n = a(e), c = arguments.length, l = 1, u = i.f, h = o.f; while (c > l) { var f, d = s(arguments[l++]), p = u ? r(d).concat(u(d)) : r(d), v = p.length, m = 0; while (v > m) h.call(d, f = p[m++]) && (n[f] = d[f]) } return n } : c }, 7726: function (e, t) { var n = e.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); "number" == typeof __g && (__g = n) }, "77f1": function (e, t, n) { var r = n("4588"), i = Math.max, o = Math.min; e.exports = function (e, t) { return e = r(e), e < 0 ? i(e + t, 0) : o(e, t) } }, "79e5": function (e, t) { e.exports = function (e) { try { return !!e() } catch (t) { return !0 } } }, "7f20": function (e, t, n) { var r = n("86cc").f, i = n("69a8"), o = n("2b4c")("toStringTag"); e.exports = function (e, t, n) { e && !i(e = n ? e : e.prototype, o) && r(e, o, { configurable: !0, value: t }) } }, 8378: function (e, t) { var n = e.exports = { version: "2.6.5" }; "number" == typeof __e && (__e = n) }, "84f2": function (e, t) { e.exports = {} }, "86cc": function (e, t, n) { var r = n("cb7c"), i = n("c69a"), o = n("6a99"), a = Object.defineProperty; t.f = n("9e1e") ? Object.defineProperty : function (e, t, n) { if (r(e), t = o(t, !0), r(n), i) try { return a(e, t, n) } catch (s) { } if ("get" in n || "set" in n) throw TypeError("Accessors not supported!"); return "value" in n && (e[t] = n.value), e } }, "9b43": function (e, t, n) { var r = n("d8e8"); e.exports = function (e, t, n) { if (r(e), void 0 === t) return e; switch (n) { case 1: return function (n) { return e.call(t, n) }; case 2: return function (n, r) { return e.call(t, n, r) }; case 3: return function (n, r, i) { return e.call(t, n, r, i) } }return function () { return e.apply(t, arguments) } } }, "9c6c": function (e, t, n) { var r = n("2b4c")("unscopables"), i = Array.prototype; void 0 == i[r] && n("32e9")(i, r, {}), e.exports = function (e) { i[r][e] = !0 } }, "9def": function (e, t, n) { var r = n("4588"), i = Math.min; e.exports = function (e) { return e > 0 ? i(r(e), 9007199254740991) : 0 } }, "9e1e": function (e, t, n) { e.exports = !n("79e5")((function () { return 7 != Object.defineProperty({}, "a", { get: function () { return 7 } }).a })) }, a352: function (t, n) { t.exports = e }, a481: function (e, t, n) { "use strict"; var r = n("cb7c"), i = n("4bf8"), o = n("9def"), a = n("4588"), s = n("0390"), c = n("5f1b"), l = Math.max, u = Math.min, h = Math.floor, f = /\$([$&`']|\d\d?|<[^>]*>)/g, d = /\$([$&`']|\d\d?)/g, p = function (e) { return void 0 === e ? e : String(e) }; n("214f")("replace", 2, (function (e, t, n, v) { return [function (r, i) { var o = e(this), a = void 0 == r ? void 0 : r[t]; return void 0 !== a ? a.call(r, o, i) : n.call(String(o), r, i) }, function (e, t) { var i = v(n, e, this, t); if (i.done) return i.value; var h = r(e), f = String(this), d = "function" === typeof t; d || (t = String(t)); var g = h.global; if (g) { var y = h.unicode; h.lastIndex = 0 } var b = []; while (1) { var x = c(h, f); if (null === x) break; if (b.push(x), !g) break; var w = String(x[0]); "" === w && (h.lastIndex = s(f, o(h.lastIndex), y)) } for (var _ = "", C = 0, M = 0; M < b.length; M++) { x = b[M]; for (var O = String(x[0]), k = l(u(a(x.index), f.length), 0), S = [], T = 1; T < x.length; T++)S.push(p(x[T])); var A = x.groups; if (d) { var L = [O].concat(S, k, f); void 0 !== A && L.push(A); var j = String(t.apply(void 0, L)) } else j = m(O, f, k, S, A, t); k >= C && (_ += f.slice(C, k) + j, C = k + O.length) } return _ + f.slice(C) }]; function m(e, t, r, o, a, s) { var c = r + e.length, l = o.length, u = d; return void 0 !== a && (a = i(a), u = f), n.call(s, u, (function (n, i) { var s; switch (i.charAt(0)) { case "$": return "$"; case "&": return e; case "`": return t.slice(0, r); case "'": return t.slice(c); case "<": s = a[i.slice(1, -1)]; break; default: var u = +i; if (0 === u) return n; if (u > l) { var f = h(u / 10); return 0 === f ? n : f <= l ? void 0 === o[f - 1] ? i.charAt(1) : o[f - 1] + i.charAt(1) : n } s = o[u - 1] }return void 0 === s ? "" : s })) } })) }, aae3: function (e, t, n) { var r = n("d3f4"), i = n("2d95"), o = n("2b4c")("match"); e.exports = function (e) { var t; return r(e) && (void 0 !== (t = e[o]) ? !!t : "RegExp" == i(e)) } }, ac6a: function (e, t, n) { for (var r = n("cadf"), i = n("0d58"), o = n("2aba"), a = n("7726"), s = n("32e9"), c = n("84f2"), l = n("2b4c"), u = l("iterator"), h = l("toStringTag"), f = c.Array, d = { CSSRuleList: !0, CSSStyleDeclaration: !1, CSSValueList: !1, ClientRectList: !1, DOMRectList: !1, DOMStringList: !1, DOMTokenList: !0, DataTransferItemList: !1, FileList: !1, HTMLAllCollection: !1, HTMLCollection: !1, HTMLFormElement: !1, HTMLSelectElement: !1, MediaList: !0, MimeTypeArray: !1, NamedNodeMap: !1, NodeList: !0, PaintRequestList: !1, Plugin: !1, PluginArray: !1, SVGLengthList: !1, SVGNumberList: !1, SVGPathSegList: !1, SVGPointList: !1, SVGStringList: !1, SVGTransformList: !1, SourceBufferList: !1, StyleSheetList: !0, TextTrackCueList: !1, TextTrackList: !1, TouchList: !1 }, p = i(d), v = 0; v < p.length; v++) { var m, g = p[v], y = d[g], b = a[g], x = b && b.prototype; if (x && (x[u] || s(x, u, f), x[h] || s(x, h, g), c[g] = f, y)) for (m in r) x[m] || o(x, m, r[m], !0) } }, b0c5: function (e, t, n) { "use strict"; var r = n("520a"); n("5ca1")({ target: "RegExp", proto: !0, forced: r !== /./.exec }, { exec: r }) }, be13: function (e, t) { e.exports = function (e) { if (void 0 == e) throw TypeError("Can't call method on  " + e); return e } }, c366: function (e, t, n) { var r = n("6821"), i = n("9def"), o = n("77f1"); e.exports = function (e) { return function (t, n, a) { var s, c = r(t), l = i(c.length), u = o(a, l); if (e && n != n) { while (l > u) if (s = c[u++], s != s) return !0 } else for (; l > u; u++)if ((e || u in c) && c[u] === n) return e || u || 0; return !e && -1 } } }, c649: function (e, t, n) { "use strict"; (function (e) { n.d(t, "c", (function () { return l })), n.d(t, "a", (function () { return s })), n.d(t, "b", (function () { return i })), n.d(t, "d", (function () { return c })); n("a481"); function r() { return "undefined" !== typeof window ? window.console : e.console } var i = r(); function o(e) { var t = Object.create(null); return function (n) { var r = t[n]; return r || (t[n] = e(n)) } } var a = /-(\w)/g, s = o((function (e) { return e.replace(a, (function (e, t) { return t ? t.toUpperCase() : "" })) })); function c(e) { null !== e.parentElement && e.parentElement.removeChild(e) } function l(e, t, n) { var r = 0 === n ? e.children[0] : e.children[n - 1].nextSibling; e.insertBefore(t, r) } }).call(this, n("c8ba")) }, c69a: function (e, t, n) { e.exports = !n("9e1e") && !n("79e5")((function () { return 7 != Object.defineProperty(n("230e")("div"), "a", { get: function () { return 7 } }).a })) }, c8ba: function (e, t) { var n; n = function () { return this }(); try { n = n || new Function("return this")() } catch (r) { "object" === typeof window && (n = window) } e.exports = n }, ca5a: function (e, t) { var n = 0, r = Math.random(); e.exports = function (e) { return "Symbol(".concat(void 0 === e ? "" : e, ")_", (++n + r).toString(36)) } }, cadf: function (e, t, n) { "use strict"; var r = n("9c6c"), i = n("d53b"), o = n("84f2"), a = n("6821"); e.exports = n("01f9")(Array, "Array", (function (e, t) { this._t = a(e), this._i = 0, this._k = t }), (function () { var e = this._t, t = this._k, n = this._i++; return !e || n >= e.length ? (this._t = void 0, i(1)) : i(0, "keys" == t ? n : "values" == t ? e[n] : [n, e[n]]) }), "values"), o.Arguments = o.Array, r("keys"), r("values"), r("entries") }, cb7c: function (e, t, n) { var r = n("d3f4"); e.exports = function (e) { if (!r(e)) throw TypeError(e + " is not an object!"); return e } }, ce10: function (e, t, n) { var r = n("69a8"), i = n("6821"), o = n("c366")(!1), a = n("613b")("IE_PROTO"); e.exports = function (e, t) { var n, s = i(e), c = 0, l = []; for (n in s) n != a && r(s, n) && l.push(n); while (t.length > c) r(s, n = t[c++]) && (~o(l, n) || l.push(n)); return l } }, d2c8: function (e, t, n) { var r = n("aae3"), i = n("be13"); e.exports = function (e, t, n) { if (r(t)) throw TypeError("String#" + n + " doesn't accept regex!"); return String(i(e)) } }, d3f4: function (e, t) { e.exports = function (e) { return "object" === typeof e ? null !== e : "function" === typeof e } }, d53b: function (e, t) { e.exports = function (e, t) { return { value: t, done: !!e } } }, d8e8: function (e, t) { e.exports = function (e) { if ("function" != typeof e) throw TypeError(e + " is not a function!"); return e } }, e11e: function (e, t) { e.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",") }, f559: function (e, t, n) { "use strict"; var r = n("5ca1"), i = n("9def"), o = n("d2c8"), a = "startsWith", s = ""[a]; r(r.P + r.F * n("5147")(a), "String", { startsWith: function (e) { var t = o(this, e, a), n = i(Math.min(arguments.length > 1 ? arguments[1] : void 0, t.length)), r = String(e); return s ? s.call(t, r, n) : t.slice(n, n + r.length) === r } }) }, f6fd: function (e, t) { (function (e) { var t = "currentScript", n = e.getElementsByTagName("script"); t in e || Object.defineProperty(e, t, { get: function () { try { throw new Error } catch (r) { var e, t = (/.*at [^\(]*\((.*):.+:.+\)$/gi.exec(r.stack) || [!1])[1]; for (e in n) if (n[e].src == t || "interactive" == n[e].readyState) return n[e]; return null } } }) })(document) }, f751: function (e, t, n) { var r = n("5ca1"); r(r.S + r.F, "Object", { assign: n("7333") }) }, fa5b: function (e, t, n) { e.exports = n("5537")("native-function-to-string", Function.toString) }, fab2: function (e, t, n) { var r = n("7726").document; e.exports = r && r.documentElement }, fb15: function (e, t, n) { "use strict"; var r; (n.r(t), "undefined" !== typeof window) && (n("f6fd"), (r = window.document.currentScript) && (r = r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)) && (n.p = r[1])); n("f751"), n("f559"), n("ac6a"), n("cadf"), n("456d"); function i(e) { if (Array.isArray(e)) return e } function o(e, t) { if ("undefined" !== typeof Symbol && Symbol.iterator in Object(e)) { var n = [], r = !0, i = !1, o = void 0; try { for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done); r = !0)if (n.push(a.value), t && n.length === t) break } catch (c) { i = !0, o = c } finally { try { r || null == s["return"] || s["return"]() } finally { if (i) throw o } } return n } } function a(e, t) { (null == t || t > e.length) && (t = e.length); for (var n = 0, r = new Array(t); n < t; n++)r[n] = e[n]; return r } function s(e, t) { if (e) { if ("string" === typeof e) return a(e, t); var n = Object.prototype.toString.call(e).slice(8, -1); return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? a(e, t) : void 0 } } function c() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") } function l(e, t) { return i(e) || o(e, t) || s(e, t) || c() } n("6762"), n("2fdb"); function u(e) { if (Array.isArray(e)) return a(e) } function h(e) { if ("undefined" !== typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e) } function f() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") } function d(e) { return u(e) || h(e) || s(e) || f() } var p = n("a352"), v = n.n(p), m = n("c649"); function g(e, t, n) { return void 0 === n || (e = e || {}, e[t] = n), e } function y(e, t) { return e.map((function (e) { return e.elm })).indexOf(t) } function b(e, t, n, r) { if (!e) return []; var i = e.map((function (e) { return e.elm })), o = t.length - r, a = d(t).map((function (e, t) { return t >= o ? i.length : i.indexOf(e) })); return n ? a.filter((function (e) { return -1 !== e })) : a } function x(e, t) { var n = this; this.$nextTick((function () { return n.$emit(e.toLowerCase(), t) })) } function w(e) { var t = this; return function (n) { null !== t.realList && t["onDrag" + e](n), x.call(t, e, n) } } function _(e) { return ["transition-group", "TransitionGroup"].includes(e) } function C(e) { if (!e || 1 !== e.length) return !1; var t = l(e, 1), n = t[0].componentOptions; return !!n && _(n.tag) } function M(e, t, n) { return e[n] || (t[n] ? t[n]() : void 0) } function O(e, t, n) { var r = 0, i = 0, o = M(t, n, "header"); o && (r = o.length, e = e ? [].concat(d(o), d(e)) : d(o)); var a = M(t, n, "footer"); return a && (i = a.length, e = e ? [].concat(d(e), d(a)) : d(a)), { children: e, headerOffset: r, footerOffset: i } } function k(e, t) { var n = null, r = function (e, t) { n = g(n, e, t) }, i = Object.keys(e).filter((function (e) { return "id" === e || e.startsWith("data-") })).reduce((function (t, n) { return t[n] = e[n], t }), {}); if (r("attrs", i), !t) return n; var o = t.on, a = t.props, s = t.attrs; return r("on", o), r("props", a), Object.assign(n.attrs, s), n } var S = ["Start", "Add", "Remove", "Update", "End"], T = ["Choose", "Unchoose", "Sort", "Filter", "Clone"], A = ["Move"].concat(S, T).map((function (e) { return "on" + e })), L = null, j = { options: Object, list: { type: Array, required: !1, default: null }, value: { type: Array, required: !1, default: null }, noTransitionOnDrag: { type: Boolean, default: !1 }, clone: { type: Function, default: function (e) { return e } }, element: { type: String, default: "div" }, tag: { type: String, default: null }, move: { type: Function, default: null }, componentData: { type: Object, required: !1, default: null } }, z = { name: "draggable", inheritAttrs: !1, props: j, data: function () { return { transitionMode: !1, noneFunctionalComponentMode: !1 } }, render: function (e) { var t = this.$slots.default; this.transitionMode = C(t); var n = O(t, this.$slots, this.$scopedSlots), r = n.children, i = n.headerOffset, o = n.footerOffset; this.headerOffset = i, this.footerOffset = o; var a = k(this.$attrs, this.componentData); return e(this.getTag(), a, r) }, created: function () { null !== this.list && null !== this.value && m["b"].error("Value and list props are mutually exclusive! Please set one or another."), "div" !== this.element && m["b"].warn("Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props"), void 0 !== this.options && m["b"].warn("Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props") }, mounted: function () { var e = this; if (this.noneFunctionalComponentMode = this.getTag().toLowerCase() !== this.$el.nodeName.toLowerCase() && !this.getIsFunctional(), this.noneFunctionalComponentMode && this.transitionMode) throw new Error("Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: ".concat(this.getTag())); var t = {}; S.forEach((function (n) { t["on" + n] = w.call(e, n) })), T.forEach((function (n) { t["on" + n] = x.bind(e, n) })); var n = Object.keys(this.$attrs).reduce((function (t, n) { return t[Object(m["a"])(n)] = e.$attrs[n], t }), {}), r = Object.assign({}, this.options, n, t, { onMove: function (t, n) { return e.onDragMove(t, n) } }); !("draggable" in r) && (r.draggable = ">*"), this._sortable = new v.a(this.rootContainer, r), this.computeIndexes() }, beforeDestroy: function () { void 0 !== this._sortable && this._sortable.destroy() }, computed: { rootContainer: function () { return this.transitionMode ? this.$el.children[0] : this.$el }, realList: function () { return this.list ? this.list : this.value } }, watch: { options: { handler: function (e) { this.updateOptions(e) }, deep: !0 }, $attrs: { handler: function (e) { this.updateOptions(e) }, deep: !0 }, realList: function () { this.computeIndexes() } }, methods: { getIsFunctional: function () { var e = this._vnode.fnOptions; return e && e.functional }, getTag: function () { return this.tag || this.element }, updateOptions: function (e) { for (var t in e) { var n = Object(m["a"])(t); -1 === A.indexOf(n) && this._sortable.option(n, e[t]) } }, getChildrenNodes: function () { if (this.noneFunctionalComponentMode) return this.$children[0].$slots.default; var e = this.$slots.default; return this.transitionMode ? e[0].child.$slots.default : e }, computeIndexes: function () { var e = this; this.$nextTick((function () { e.visibleIndexes = b(e.getChildrenNodes(), e.rootContainer.children, e.transitionMode, e.footerOffset) })) }, getUnderlyingVm: function (e) { var t = y(this.getChildrenNodes() || [], e); if (-1 === t) return null; var n = this.realList[t]; return { index: t, element: n } }, getUnderlyingPotencialDraggableComponent: function (e) { var t = e.__vue__; return t && t.$options && _(t.$options._componentTag) ? t.$parent : !("realList" in t) && 1 === t.$children.length && "realList" in t.$children[0] ? t.$children[0] : t }, emitChanges: function (e) { var t = this; this.$nextTick((function () { t.$emit("change", e) })) }, alterList: function (e) { if (this.list) e(this.list); else { var t = d(this.value); e(t), this.$emit("input", t) } }, spliceList: function () { var e = arguments, t = function (t) { return t.splice.apply(t, d(e)) }; this.alterList(t) }, updatePosition: function (e, t) { var n = function (n) { return n.splice(t, 0, n.splice(e, 1)[0]) }; this.alterList(n) }, getRelatedContextFromMoveEvent: function (e) { var t = e.to, n = e.related, r = this.getUnderlyingPotencialDraggableComponent(t); if (!r) return { component: r }; var i = r.realList, o = { list: i, component: r }; if (t !== n && i && r.getUnderlyingVm) { var a = r.getUnderlyingVm(n); if (a) return Object.assign(a, o) } return o }, getVmIndex: function (e) { var t = this.visibleIndexes, n = t.length; return e > n - 1 ? n : t[e] }, getComponent: function () { return this.$slots.default[0].componentInstance }, resetTransitionData: function (e) { if (this.noTransitionOnDrag && this.transitionMode) { var t = this.getChildrenNodes(); t[e].data = null; var n = this.getComponent(); n.children = [], n.kept = void 0 } }, onDragStart: function (e) { this.context = this.getUnderlyingVm(e.item), e.item._underlying_vm_ = this.clone(this.context.element), L = e.item }, onDragAdd: function (e) { var t = e.item._underlying_vm_; if (void 0 !== t) { Object(m["d"])(e.item); var n = this.getVmIndex(e.newIndex); this.spliceList(n, 0, t), this.computeIndexes(); var r = { element: t, newIndex: n }; this.emitChanges({ added: r }) } }, onDragRemove: function (e) { if (Object(m["c"])(this.rootContainer, e.item, e.oldIndex), "clone" !== e.pullMode) { var t = this.context.index; this.spliceList(t, 1); var n = { element: this.context.element, oldIndex: t }; this.resetTransitionData(t), this.emitChanges({ removed: n }) } else Object(m["d"])(e.clone) }, onDragUpdate: function (e) { Object(m["d"])(e.item), Object(m["c"])(e.from, e.item, e.oldIndex); var t = this.context.index, n = this.getVmIndex(e.newIndex); this.updatePosition(t, n); var r = { element: this.context.element, oldIndex: t, newIndex: n }; this.emitChanges({ moved: r }) }, updateProperty: function (e, t) { e.hasOwnProperty(t) && (e[t] += this.headerOffset) }, computeFutureIndex: function (e, t) { if (!e.element) return 0; var n = d(t.to.children).filter((function (e) { return "none" !== e.style["display"] })), r = n.indexOf(t.related), i = e.component.getVmIndex(r), o = -1 !== n.indexOf(L); return o || !t.willInsertAfter ? i : i + 1 }, onDragMove: function (e, t) { var n = this.move; if (!n || !this.realList) return !0; var r = this.getRelatedContextFromMoveEvent(e), i = this.context, o = this.computeFutureIndex(r, e); Object.assign(i, { futureIndex: o }); var a = Object.assign({}, e, { relatedContext: r, draggedContext: i }); return n(a, t) }, onDragEnd: function () { this.computeIndexes(), L = null } } }; "undefined" !== typeof window && "Vue" in window && window.Vue.component("draggable", z); var E = z; t["default"] = E } })["default"] })) }, b7c2: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t["default"] = void 0; var r = new Map([["transparent", "rgba(0,0,0,0)"], ["black", "#000000"], ["silver", "#C0C0C0"], ["gray", "#808080"], ["white", "#FFFFFF"], ["maroon", "#800000"], ["red", "#FF0000"], ["purple", "#800080"], ["fuchsia", "#FF00FF"], ["green", "#008000"], ["lime", "#00FF00"], ["olive", "#808000"], ["yellow", "#FFFF00"], ["navy", "#000080"], ["blue", "#0000FF"], ["teal", "#008080"], ["aqua", "#00FFFF"], ["aliceblue", "#f0f8ff"], ["antiquewhite", "#faebd7"], ["aquamarine", "#7fffd4"], ["azure", "#f0ffff"], ["beige", "#f5f5dc"], ["bisque", "#ffe4c4"], ["blanchedalmond", "#ffebcd"], ["blueviolet", "#8a2be2"], ["brown", "#a52a2a"], ["burlywood", "#deb887"], ["cadetblue", "#5f9ea0"], ["chartreuse", "#7fff00"], ["chocolate", "#d2691e"], ["coral", "#ff7f50"], ["cornflowerblue", "#6495ed"], ["cornsilk", "#fff8dc"], ["crimson", "#dc143c"], ["cyan", "#00ffff"], ["darkblue", "#00008b"], ["darkcyan", "#008b8b"], ["darkgoldenrod", "#b8860b"], ["darkgray", "#a9a9a9"], ["darkgreen", "#006400"], ["darkgrey", "#a9a9a9"], ["darkkhaki", "#bdb76b"], ["darkmagenta", "#8b008b"], ["darkolivegreen", "#556b2f"], ["darkorange", "#ff8c00"], ["darkorchid", "#9932cc"], ["darkred", "#8b0000"], ["darksalmon", "#e9967a"], ["darkseagreen", "#8fbc8f"], ["darkslateblue", "#483d8b"], ["darkslategray", "#2f4f4f"], ["darkslategrey", "#2f4f4f"], ["darkturquoise", "#00ced1"], ["darkviolet", "#9400d3"], ["deeppink", "#ff1493"], ["deepskyblue", "#00bfff"], ["dimgray", "#696969"], ["dimgrey", "#696969"], ["dodgerblue", "#1e90ff"], ["firebrick", "#b22222"], ["floralwhite", "#fffaf0"], ["forestgreen", "#228b22"], ["gainsboro", "#dcdcdc"], ["ghostwhite", "#f8f8ff"], ["gold", "#ffd700"], ["goldenrod", "#daa520"], ["greenyellow", "#adff2f"], ["grey", "#808080"], ["honeydew", "#f0fff0"], ["hotpink", "#ff69b4"], ["indianred", "#cd5c5c"], ["indigo", "#4b0082"], ["ivory", "#fffff0"], ["khaki", "#f0e68c"], ["lavender", "#e6e6fa"], ["lavenderblush", "#fff0f5"], ["lawngreen", "#7cfc00"], ["lemonchiffon", "#fffacd"], ["lightblue", "#add8e6"], ["lightcoral", "#f08080"], ["lightcyan", "#e0ffff"], ["lightgoldenrodyellow", "#fafad2"], ["lightgray", "#d3d3d3"], ["lightgreen", "#90ee90"], ["lightgrey", "#d3d3d3"], ["lightpink", "#ffb6c1"], ["lightsalmon", "#ffa07a"], ["lightseagreen", "#20b2aa"], ["lightskyblue", "#87cefa"], ["lightslategray", "#778899"], ["lightslategrey", "#778899"], ["lightsteelblue", "#b0c4de"], ["lightyellow", "#ffffe0"], ["limegreen", "#32cd32"], ["linen", "#faf0e6"], ["magenta", "#ff00ff"], ["mediumaquamarine", "#66cdaa"], ["mediumblue", "#0000cd"], ["mediumorchid", "#ba55d3"], ["mediumpurple", "#9370db"], ["mediumseagreen", "#3cb371"], ["mediumslateblue", "#7b68ee"], ["mediumspringgreen", "#00fa9a"], ["mediumturquoise", "#48d1cc"], ["mediumvioletred", "#c71585"], ["midnightblue", "#191970"], ["mintcream", "#f5fffa"], ["mistyrose", "#ffe4e1"], ["moccasin", "#ffe4b5"], ["navajowhite", "#ffdead"], ["oldlace", "#fdf5e6"], ["olivedrab", "#6b8e23"], ["orange", "#ffa500"], ["orangered", "#ff4500"], ["orchid", "#da70d6"], ["palegoldenrod", "#eee8aa"], ["palegreen", "#98fb98"], ["paleturquoise", "#afeeee"], ["palevioletred", "#db7093"], ["papayawhip", "#ffefd5"], ["peachpuff", "#ffdab9"], ["peru", "#cd853f"], ["pink", "#ffc0cb"], ["plum", "#dda0dd"], ["powderblue", "#b0e0e6"], ["rosybrown", "#bc8f8f"], ["royalblue", "#4169e1"], ["saddlebrown", "#8b4513"], ["salmon", "#fa8072"], ["sandybrown", "#f4a460"], ["seagreen", "#2e8b57"], ["seashell", "#fff5ee"], ["sienna", "#a0522d"], ["skyblue", "#87ceeb"], ["slateblue", "#6a5acd"], ["slategray", "#708090"], ["slategrey", "#708090"], ["snow", "#fffafa"], ["springgreen", "#00ff7f"], ["steelblue", "#4682b4"], ["tan", "#d2b48c"], ["thistle", "#d8bfd8"], ["tomato", "#ff6347"], ["turquoise", "#40e0d0"], ["violet", "#ee82ee"], ["wheat", "#f5deb3"], ["whitesmoke", "#f5f5f5"], ["yellowgreen", "#9acd32"]]); t["default"] = r }, b8ad: function (e, t, n) { (function (t, n) { e.exports = n() })(0, (function () { "use strict"; function e(e, t, n) { n = n || {}, n.childrenKeyName = n.childrenKeyName || "children"; var r = e || [], i = [], o = 0; do { var a = r.filter((function (e) { return t(e, o) }))[0]; if (!a) break; i.push(a), r = a[n.childrenKeyName] || [], o += 1 } while (r.length > 0); return i } return e })) }, b8e7: function (e, t, n) { }, b92b: function (e, t, n) { "use strict"; var r = n("4d91"); t["a"] = function () { return { prefixCls: r["a"].string, type: r["a"].string, htmlType: r["a"].oneOf(["button", "submit", "reset"]).def("button"), icon: r["a"].any, shape: r["a"].oneOf(["circle", "circle-outline", "round"]), size: r["a"].oneOf(["small", "large", "default"]).def("default"), loading: r["a"].oneOfType([r["a"].bool, r["a"].object]), disabled: r["a"].bool, ghost: r["a"].bool, block: r["a"].bool } } }, b97c: function (e, t, n) { "use strict"; n("b2a3"), n("a54e") }, b9c7: function (e, t, n) { n("e507"), e.exports = n("5524").Object.assign }, ba01: function (e, t, n) { e.exports = n("051b") }, badf: function (e, t, n) { var r = n("642a"), i = n("1838"), o = n("cd9d"), a = n("6747"), s = n("f9ce"); function c(e) { return "function" == typeof e ? e : null == e ? o : "object" == typeof e ? a(e) ? i(e[0], e[1]) : r(e) : s(e) } e.exports = c }, bb2f: function (e, t, n) { var r = n("d039"); e.exports = !r((function () { return Object.isExtensible(Object.preventExtensions({})) })) }, bb76: function (e, t, n) { "use strict"; var r = n("92fa"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("8e8e"), u = n.n(l), h = n("4d91"), f = n("4d26"), d = n.n(f), p = n("f971"), v = n("daa3"), m = n("9cba"), g = n("6a21"); function y() { } var b = { name: "ACheckbox", inheritAttrs: !1, __ANT_CHECKBOX: !0, model: { prop: "checked" }, props: { prefixCls: h["a"].string, defaultChecked: h["a"].bool, checked: h["a"].bool, disabled: h["a"].bool, isGroup: h["a"].bool, value: h["a"].any, name: h["a"].string, id: h["a"].string, indeterminate: h["a"].bool, type: h["a"].string.def("checkbox"), autoFocus: h["a"].bool }, inject: { configProvider: { default: function () { return m["a"] } }, checkboxGroupContext: { default: function () { } } }, watch: { value: function (e, t) { var n = this; this.$nextTick((function () { var r = n.checkboxGroupContext, i = void 0 === r ? {} : r; i.registerValue && i.cancelValue && (i.cancelValue(t), i.registerValue(e)) })) } }, mounted: function () { var e = this.value, t = this.checkboxGroupContext, n = void 0 === t ? {} : t; n.registerValue && n.registerValue(e), Object(g["a"])(Object(v["b"])(this, "checked") || this.checkboxGroupContext || !Object(v["b"])(this, "value"), "Checkbox", "`value` is not validate prop, do you mean `checked`?") }, beforeDestroy: function () { var e = this.value, t = this.checkboxGroupContext, n = void 0 === t ? {} : t; n.cancelValue && n.cancelValue(e) }, methods: { handleChange: function (e) { var t = e.target.checked; this.$emit("input", t), this.$emit("change", e) }, focus: function () { this.$refs.vcCheckbox.focus() }, blur: function () { this.$refs.vcCheckbox.blur() } }, render: function () { var e, t = this, n = arguments[0], r = this.checkboxGroupContext, o = this.$slots, s = Object(v["l"])(this), l = o["default"], h = Object(v["k"])(this), f = h.mouseenter, m = void 0 === f ? y : f, g = h.mouseleave, b = void 0 === g ? y : g, x = (h.input, u()(h, ["mouseenter", "mouseleave", "input"])), w = s.prefixCls, _ = s.indeterminate, C = u()(s, ["prefixCls", "indeterminate"]), M = this.configProvider.getPrefixCls, O = M("checkbox", w), k = { props: c()({}, C, { prefixCls: O }), on: x, attrs: Object(v["e"])(this) }; r ? (k.on.change = function () { for (var e = arguments.length, n = Array(e), i = 0; i < e; i++)n[i] = arguments[i]; t.$emit.apply(t, ["change"].concat(n)), r.toggleOption({ label: l, value: s.value }) }, k.props.name = r.name, k.props.checked = -1 !== r.sValue.indexOf(s.value), k.props.disabled = s.disabled || r.disabled, k.props.indeterminate = _) : k.on.change = this.handleChange; var S = d()((e = {}, a()(e, O + "-wrapper", !0), a()(e, O + "-wrapper-checked", k.props.checked), a()(e, O + "-wrapper-disabled", k.props.disabled), e)), T = d()(a()({}, O + "-indeterminate", _)); return n("label", { class: S, on: { mouseenter: m, mouseleave: b } }, [n(p["a"], i()([k, { class: T, ref: "vcCheckbox" }])), void 0 !== l && n("span", [l])]) } }, x = n("9b57"), w = n.n(x); function _() { } var C = { name: "ACheckboxGroup", model: { prop: "value" }, props: { name: h["a"].string, prefixCls: h["a"].string, defaultValue: h["a"].array, value: h["a"].array, options: h["a"].array.def([]), disabled: h["a"].bool }, provide: function () { return { checkboxGroupContext: this } }, inject: { configProvider: { default: function () { return m["a"] } } }, data: function () { var e = this.value, t = this.defaultValue; return { sValue: e || t || [], registeredValues: [] } }, watch: { value: function (e) { this.sValue = e || [] } }, methods: { getOptions: function () { var e = this.options, t = this.$scopedSlots; return e.map((function (e) { if ("string" === typeof e) return { label: e, value: e }; var n = e.label; return void 0 === n && t.label && (n = t.label(e)), c()({}, e, { label: n }) })) }, cancelValue: function (e) { this.registeredValues = this.registeredValues.filter((function (t) { return t !== e })) }, registerValue: function (e) { this.registeredValues = [].concat(w()(this.registeredValues), [e]) }, toggleOption: function (e) { var t = this.registeredValues, n = this.sValue.indexOf(e.value), r = [].concat(w()(this.sValue)); -1 === n ? r.push(e.value) : r.splice(n, 1), Object(v["b"])(this, "value") || (this.sValue = r); var i = this.getOptions(), o = r.filter((function (e) { return -1 !== t.indexOf(e) })).sort((function (e, t) { var n = i.findIndex((function (t) { return t.value === e })), r = i.findIndex((function (e) { return e.value === t })); return n - r })); this.$emit("input", o), this.$emit("change", o) } }, render: function () { var e = arguments[0], t = this.$props, n = this.$data, r = this.$slots, i = t.prefixCls, o = t.options, a = this.configProvider.getPrefixCls, s = a("checkbox", i), c = r["default"], l = s + "-group"; return o && o.length > 0 && (c = this.getOptions().map((function (r) { return e(b, { attrs: { prefixCls: s, disabled: "disabled" in r ? r.disabled : t.disabled, indeterminate: r.indeterminate, value: r.value, checked: -1 !== n.sValue.indexOf(r.value) }, key: r.value.toString(), on: { change: r.onChange || _ }, class: l + "-item" }, [r.label]) }))), e("div", { class: l }, [c]) } }, M = n("db14"); b.Group = C, b.install = function (e) { e.use(M["a"]), e.component(b.name, b), e.component(C.name, C) }; t["a"] = b }, bbc0: function (e, t, n) { var r = n("6044"), i = "__lodash_hash_undefined__", o = Object.prototype, a = o.hasOwnProperty; function s(e) { var t = this.__data__; if (r) { var n = t[e]; return n === i ? void 0 : n } return a.call(t, e) ? t[e] : void 0 } e.exports = s }, bc01: function (e, t, n) { var r = n("23e7"), i = n("d039"), o = Math.imul, a = i((function () { return -5 != o(4294967295, 5) || 2 != o.length })); r({ target: "Math", stat: !0, forced: a }, { imul: function (e, t) { var n = 65535, r = +e, i = +t, o = n & r, a = n & i; return 0 | o * a + ((n & r >>> 16) * a + o * (n & i >>> 16) << 16 >>> 0) } }) }, bc96: function (e, t, n) { }, bcdf: function (e, t) { function n() { } e.exports = n }, bcf7: function (e, t, n) { var r = n("9020"), i = n("217d").each; function o(e, t) { this.query = e, this.isUnconditional = t, this.handlers = [], this.mql = window.matchMedia(e); var n = this; this.listener = function (e) { n.mql = e.currentTarget || e, n.assess() }, this.mql.addListener(this.listener) } o.prototype = { constuctor: o, addHandler: function (e) { var t = new r(e); this.handlers.push(t), this.matches() && t.on() }, removeHandler: function (e) { var t = this.handlers; i(t, (function (n, r) { if (n.equals(e)) return n.destroy(), !t.splice(r, 1) })) }, matches: function () { return this.mql.matches || this.isUnconditional }, clear: function () { i(this.handlers, (function (e) { e.destroy() })), this.mql.removeListener(this.listener), this.handlers.length = 0 }, assess: function () { var e = this.matches() ? "on" : "off"; i(this.handlers, (function (t) { t[e]() })) } }, e.exports = o }, be8e: function (e, t, n) { var r = n("f748"), i = Math.abs, o = Math.pow, a = o(2, -52), s = o(2, -23), c = o(2, 127) * (2 - s), l = o(2, -126), u = function (e) { return e + 1 / a - 1 / a }; e.exports = Math.fround || function (e) { var t, n, o = i(e), h = r(e); return o < l ? h * u(o / l / s) * l * s : (t = (1 + s / a) * o, n = t - (t - o), n > c || n != n ? h * (1 / 0) : h * n) } }, becb: function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.filterNonNumber = s, t.deepMerge = c, t.mulAdd = l, t.mergeSameStackData = u, t.getTwoPointDistance = h, t.getLinearGradientColor = f, t.getPolylineLength = d, t.getPointToLineDistance = p, t.initNeedSeries = v, t.radianToAngle = m; var i = r(n("448a")), o = r(n("7037")), a = n("5557"); function s(e) { return e.filter((function (e) { return "number" === typeof e })) } function c(e, t) { for (var n in t) e[n] && "object" === (0, o["default"])(e[n]) ? c(e[n], t[n]) : "object" !== (0, o["default"])(t[n]) ? e[n] = t[n] : e[n] = (0, a.deepClone)(t[n], !0); return e } function l(e) { return e = s(e), e.reduce((function (e, t) { return e + t }), 0) } function u(e, t) { var n = e.stack; if (!n) return (0, i["default"])(e.data); var r = t.filter((function (e) { var t = e.stack; return t === n })), o = r.findIndex((function (t) { var n = t.data; return n === e.data })), a = r.splice(0, o + 1).map((function (e) { var t = e.data; return t })), s = a[0].length; return new Array(s).fill(0).map((function (e, t) { return l(a.map((function (e) { return e[t] }))) })) } function h(e, t) { var n = Math.abs(e[0] - t[0]), r = Math.abs(e[1] - t[1]); return Math.sqrt(n * n + r * r) } function f(e, t, n, r) { if (e && t && n && r.length) { var o = r; "string" === typeof o && (o = [r, r]); var a = e.createLinearGradient.apply(e, (0, i["default"])(t).concat((0, i["default"])(n))), s = 1 / (o.length - 1); return o.forEach((function (e, t) { return a.addColorStop(s * t, e) })), a } } function d(e) { var t = new Array(e.length - 1).fill(0).map((function (t, n) { return [e[n], e[n + 1]] })), n = t.map((function (e) { return h.apply(void 0, (0, i["default"])(e)) })); return l(n) } function p(e, t, n) { var r = h(e, t), i = h(e, n), o = h(t, n); return .5 * Math.sqrt((r + i + o) * (r + i - o) * (r + o - i) * (i + o - r)) / o } function v(e, t, n) { return e = e.filter((function (e) { var t = e.type; return t === n })), e = e.map((function (e) { return c((0, a.deepClone)(t, !0), e) })), e.filter((function (e) { var t = e.show; return t })) } function m(e) { return e / Math.PI * 180 } }, bee2: function (e, t, n) { "use strict"; function r(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } function i(e, t, n) { return t && r(e.prototype, t), n && r(e, n), e } n.d(t, "a", (function () { return i })) }, bf19: function (e, t, n) { "use strict"; var r = n("23e7"); r({ target: "URL", proto: !0, enumerable: !0 }, { toJSON: function () { return URL.prototype.toString.call(this) } }) }, bf71: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return r })); var r = function () { function e() { } return e.prototype.log = function (e, t) { }, e.instance = new e, e }() }, bf7b: function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("4d91"), a = n("daa3"), s = n("6042"), c = n.n(s), l = n("b488"), u = n("b047"), h = n.n(u); function f() { if ("undefined" !== typeof window && window.document && window.document.documentElement) { var e = window.document.documentElement; return "flex" in e.style || "webkitFlex" in e.style || "Flex" in e.style || "msFlex" in e.style } return !1 } var d = n("7b05"), p = { name: "Steps", mixins: [l["a"]], props: { type: o["a"].string.def("default"), prefixCls: o["a"].string.def("rc-steps"), iconPrefix: o["a"].string.def("rc"), direction: o["a"].string.def("horizontal"), labelPlacement: o["a"].string.def("horizontal"), status: o["a"].string.def("process"), size: o["a"].string.def(""), progressDot: o["a"].oneOfType([o["a"].bool, o["a"].func]), initial: o["a"].number.def(0), current: o["a"].number.def(0), icons: o["a"].shape({ finish: o["a"].any, error: o["a"].any }).loose }, data: function () { return this.calcStepOffsetWidth = h()(this.calcStepOffsetWidth, 150), { flexSupported: !0, lastStepOffsetWidth: 0 } }, mounted: function () { var e = this; this.$nextTick((function () { e.calcStepOffsetWidth(), f() || e.setState({ flexSupported: !1 }) })) }, updated: function () { var e = this; this.$nextTick((function () { e.calcStepOffsetWidth() })) }, beforeDestroy: function () { this.calcTimeout && clearTimeout(this.calcTimeout), this.calcStepOffsetWidth && this.calcStepOffsetWidth.cancel && this.calcStepOffsetWidth.cancel() }, methods: { onStepClick: function (e) { var t = this.$props.current; t !== e && this.$emit("change", e) }, calcStepOffsetWidth: function () { var e = this; if (!f()) { var t = this.$data.lastStepOffsetWidth, n = this.$refs.vcStepsRef; n.children.length > 0 && (this.calcTimeout && clearTimeout(this.calcTimeout), this.calcTimeout = setTimeout((function () { var r = (n.lastChild.offsetWidth || 0) + 1; t === r || Math.abs(t - r) <= 3 || e.setState({ lastStepOffsetWidth: r }) }))) } } }, render: function () { var e, t = this, n = arguments[0], r = this.prefixCls, o = this.direction, s = this.type, l = this.labelPlacement, u = this.iconPrefix, h = this.status, f = this.size, p = this.current, v = this.$scopedSlots, m = this.initial, g = this.icons, y = "navigation" === s, b = this.progressDot; void 0 === b && (b = v.progressDot); var x = this.lastStepOffsetWidth, w = this.flexSupported, _ = Object(a["c"])(this.$slots["default"]), C = _.length - 1, M = b ? "vertical" : l, O = (e = {}, c()(e, r, !0), c()(e, r + "-" + o, !0), c()(e, r + "-" + f, f), c()(e, r + "-label-" + M, "horizontal" === o), c()(e, r + "-dot", !!b), c()(e, r + "-navigation", y), c()(e, r + "-flex-not-supported", !w), e), k = Object(a["k"])(this), S = { class: O, ref: "vcStepsRef", on: k }; return n("div", S, [_.map((function (e, n) { var s = Object(a["m"])(e), c = m + n, l = { props: i()({ stepNumber: "" + (c + 1), stepIndex: c, prefixCls: r, iconPrefix: u, progressDot: t.progressDot, icons: g }, s), on: Object(a["i"])(e), scopedSlots: v }; return k.change && (l.on.stepClick = t.onStepClick), w || "vertical" === o || (y ? (l.props.itemWidth = 100 / (C + 1) + "%", l.props.adjustMarginRight = 0) : n !== C && (l.props.itemWidth = 100 / C + "%", l.props.adjustMarginRight = -Math.round(x / C + 1) + "px")), "error" === h && n === p - 1 && (l["class"] = r + "-next-error"), s.status || (l.props.status = c === p ? h : c < p ? "finish" : "wait"), l.props.active = c === p, Object(d["a"])(e, l) }))]) } }, v = n("92fa"), m = n.n(v), g = n("9b57"), y = n.n(g); function b(e) { return "string" === typeof e } function x() { } var w = { name: "Step", props: { prefixCls: o["a"].string, wrapperStyle: o["a"].object, itemWidth: o["a"].string, active: o["a"].bool, disabled: o["a"].bool, status: o["a"].string, iconPrefix: o["a"].string, icon: o["a"].any, adjustMarginRight: o["a"].string, stepNumber: o["a"].string, stepIndex: o["a"].number, description: o["a"].any, title: o["a"].any, subTitle: o["a"].any, progressDot: o["a"].oneOfType([o["a"].bool, o["a"].func]), tailContent: o["a"].any, icons: o["a"].shape({ finish: o["a"].any, error: o["a"].any }).loose }, methods: { onClick: function () { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++)t[n] = arguments[n]; this.$emit.apply(this, ["click"].concat(y()(t))), this.$emit("stepClick", this.stepIndex) }, renderIconNode: function () { var e, t = this.$createElement, n = Object(a["l"])(this), r = n.prefixCls, i = n.stepNumber, o = n.status, s = n.iconPrefix, l = n.icons, u = this.progressDot; void 0 === u && (u = this.$scopedSlots.progressDot); var h = Object(a["g"])(this, "icon"), f = Object(a["g"])(this, "title"), d = Object(a["g"])(this, "description"), p = void 0, v = (e = {}, c()(e, r + "-icon", !0), c()(e, s + "icon", !0), c()(e, s + "icon-" + h, h && b(h)), c()(e, s + "icon-check", !h && "finish" === o && l && !l.finish), c()(e, s + "icon-close", !h && "error" === o && l && !l.error), e), m = t("span", { class: r + "-icon-dot" }); return p = u ? t("span", { class: r + "-icon" }, "function" === typeof u ? [u({ index: i - 1, status: o, title: f, description: d, prefixCls: r })] : [m]) : h && !b(h) ? t("span", { class: r + "-icon" }, [h]) : l && l.finish && "finish" === o ? t("span", { class: r + "-icon" }, [l.finish]) : l && l.error && "error" === o ? t("span", { class: r + "-icon" }, [l.error]) : h || "finish" === o || "error" === o ? t("span", { class: v }) : t("span", { class: r + "-icon" }, [i]), p } }, render: function () { var e, t = arguments[0], n = Object(a["l"])(this), r = n.prefixCls, i = n.itemWidth, o = n.active, s = n.status, l = void 0 === s ? "wait" : s, u = n.tailContent, h = n.adjustMarginRight, f = n.disabled, d = Object(a["g"])(this, "title"), p = Object(a["g"])(this, "subTitle"), v = Object(a["g"])(this, "description"), g = (e = {}, c()(e, r + "-item", !0), c()(e, r + "-item-" + l, !0), c()(e, r + "-item-custom", Object(a["g"])(this, "icon")), c()(e, r + "-item-active", o), c()(e, r + "-item-disabled", !0 === f), e), y = { class: g, on: Object(a["k"])(this) }, b = {}; i && (b.width = i), h && (b.marginRight = h); var w = Object(a["k"])(this), _ = { attrs: {}, on: { click: w.click || x } }; return w.stepClick && !f && (_.attrs.role = "button", _.attrs.tabIndex = 0, _.on.click = this.onClick), t("div", m()([y, { style: b }]), [t("div", m()([_, { class: r + "-item-container" }]), [t("div", { class: r + "-item-tail" }, [u]), t("div", { class: r + "-item-icon" }, [this.renderIconNode()]), t("div", { class: r + "-item-content" }, [t("div", { class: r + "-item-title" }, [d, p && t("div", { attrs: { title: p }, class: r + "-item-subtitle" }, [p])]), v && t("div", { class: r + "-item-description" }, [v])])])]) } }; p.Step = w; var _ = p, C = n("0c63"), M = n("9cba"), O = n("db14"), k = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = { prefixCls: o["a"].string, iconPrefix: o["a"].string, current: o["a"].number, initial: o["a"].number, labelPlacement: o["a"].oneOf(["horizontal", "vertical"]).def("horizontal"), status: o["a"].oneOf(["wait", "process", "finish", "error"]), size: o["a"].oneOf(["default", "small"]), direction: o["a"].oneOf(["horizontal", "vertical"]), progressDot: o["a"].oneOfType([o["a"].bool, o["a"].func]), type: o["a"].oneOf(["default", "navigation"]) }; return Object(a["t"])(t, e) }, S = { name: "ASteps", props: k({ current: 0 }), inject: { configProvider: { default: function () { return M["a"] } } }, model: { prop: "current", event: "change" }, Step: i()({}, _.Step, { name: "AStep" }), render: function () { var e = arguments[0], t = Object(a["l"])(this), n = t.prefixCls, r = t.iconPrefix, o = this.configProvider.getPrefixCls, s = o("steps", n), c = o("", r), l = { finish: e(C["a"], { attrs: { type: "check" }, class: s + "-finish-icon" }), error: e(C["a"], { attrs: { type: "close" }, class: s + "-error-icon" }) }, u = { props: i()({ icons: l, iconPrefix: c, prefixCls: s }, t), on: Object(a["k"])(this), scopedSlots: this.$scopedSlots }; return e(_, u, [this.$slots["default"]]) }, install: function (e) { e.use(O["a"]), e.component(S.name, S), e.component(S.Step.name, S.Step) } }; t["a"] = S }, bf96: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("83ab"), o = n("eb1d"), a = n("7b0b"), s = n("a04b"), c = n("e163"), l = n("06cf").f; i && r({ target: "Object", proto: !0, forced: o }, { __lookupGetter__: function (e) { var t, n = a(this), r = s(e); do { if (t = l(n, r)) return t.get } while (n = c(n)) } }) }, bffa: function (e, t, n) { "use strict"; n("b2a3"), n("d002") }, c005: function (e, t, n) { var r = n("2686"), i = n("b047f"), o = n("99d3"), a = o && o.isRegExp, s = a ? i(a) : r; e.exports = s }, c04e: function (e, t, n) { var r = n("861d"), i = n("d9b5"), o = n("485a"), a = n("b622"), s = a("toPrimitive"); e.exports = function (e, t) { if (!r(e) || i(e)) return e; var n, a = e[s]; if (void 0 !== a) { if (void 0 === t && (t = "default"), n = a.call(e, t), !r(n) || i(n)) return n; throw TypeError("Can't convert object to primitive value") } return void 0 === t && (t = "number"), o(e, t) } }, c05f: function (e, t, n) { var r = n("7b97"), i = n("1310"); function o(e, t, n, a, s) { return e === t || (null == e || null == t || !i(e) && !i(t) ? e !== e && t !== t : r(e, t, n, a, o, s)) } e.exports = o }, c098: function (e, t) { var n = 9007199254740991, r = /^(?:0|[1-9]\d*)$/; function i(e, t) { var i = typeof e; return t = null == t ? n : t, !!t && ("number" == i || "symbol" != i && r.test(e)) && e > -1 && e % 1 == 0 && e < t } e.exports = i }, c119: function (e, t, n) { "use strict"; n("b2a3"), n("0ad5") }, c135: function (e, t) { function n(e) { if (Array.isArray(e)) return e } e.exports = n, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, c16e: function (e, t, n) { (function (t) { (function (t, n) { e.exports = n() })(0, (function () { "use strict"; function e(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function n(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) } } function r(e, t, r) { return t && n(e.prototype, t), r && n(e, r), e } function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function o(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function a(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? o(Object(n), !0).forEach((function (t) { i(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : o(Object(n)).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } var s = {}, c = function () { function t() { e(this, t), Object.defineProperty(this, "length", { get: function () { return Object.keys(s).length } }) } return r(t, [{ key: "getItem", value: function (e) { return e in s ? s[e] : null } }, { key: "setItem", value: function (e, t) { return s[e] = t, !0 } }, { key: "removeItem", value: function (e) { var t = e in s; return !!t && delete s[e] } }, { key: "clear", value: function () { return s = {}, !0 } }, { key: "key", value: function (e) { var t = Object.keys(s); return "undefined" !== typeof t[e] ? t[e] : null } }]), t }(), l = new c, u = {}, h = function () { function t() { e(this, t) } return r(t, null, [{ key: "on", value: function (e, t) { "undefined" === typeof u[e] && (u[e] = []), u[e].push(t) } }, { key: "off", value: function (e, t) { u[e].length ? u[e].splice(u[e].indexOf(t), 1) : u[e] = [] } }, { key: "emit", value: function (e) { var t = e || window.event, n = function (e) { try { return JSON.parse(e).value } catch (t) { return e } }, r = function (e) { var r = n(t.newValue), i = n(t.oldValue); e(r, i, t.url || t.uri) }; if ("undefined" !== typeof t && "undefined" !== typeof t.key) { var i = u[t.key]; "undefined" !== typeof i && i.forEach(r) } } }]), t }(), f = function () { function t(n) { if (e(this, t), this.storage = n, this.options = { namespace: "", events: ["storage"] }, Object.defineProperty(this, "length", { get: function () { return this.storage.length } }), "undefined" !== typeof window) for (var r in this.options.events) window.addEventListener ? window.addEventListener(this.options.events[r], h.emit, !1) : window.attachEvent ? window.attachEvent("on".concat(this.options.events[r]), h.emit) : window["on".concat(this.options.events[r])] = h.emit } return r(t, [{ key: "setOptions", value: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; this.options = Object.assign(this.options, e) } }, { key: "set", value: function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, r = JSON.stringify({ value: t, expire: null !== n ? (new Date).getTime() + n : null }); this.storage.setItem(this.options.namespace + e, r) } }, { key: "get", value: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, n = this.storage.getItem(this.options.namespace + e); if (null !== n) try { var r = JSON.parse(n); if (null === r.expire) return r.value; if (r.expire >= (new Date).getTime()) return r.value; this.remove(e) } catch (i) { return t } return t } }, { key: "key", value: function (e) { return this.storage.key(e) } }, { key: "remove", value: function (e) { return this.storage.removeItem(this.options.namespace + e) } }, { key: "clear", value: function () { if (0 !== this.length) { for (var e = [], t = 0; t < this.length; t++) { var n = this.storage.key(t), r = new RegExp("^".concat(this.options.namespace, ".+"), "i"); !1 !== r.test(n) && e.push(n) } for (var i in e) this.storage.removeItem(e[i]) } } }, { key: "on", value: function (e, t) { h.on(this.options.namespace + e, t) } }, { key: "off", value: function (e, t) { h.off(this.options.namespace + e, t) } }]), t }(), d = "undefined" !== typeof window ? window : t || {}, p = { install: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = a(a({}, t), {}, { storage: t.storage || "local", name: t.name || "ls" }); if (n.storage && -1 === ["memory", "local", "session"].indexOf(n.storage)) throw new Error('Vue-ls: Storage "'.concat(n.storage, '" is not supported')); var r = null; switch (n.storage) { case "local": r = "localStorage" in d ? d.localStorage : null; break; case "session": r = "sessionStorage" in d ? d.sessionStorage : null; break; case "memory": r = l; break }r || (r = l, console.error('Vue-ls: Storage "'.concat(n.storage, '" is not supported your system, use memory storage'))); var i = new f(r); i.setOptions(Object.assign(i.options, { namespace: "" }, n || {})), e[n.name] = i, Object.defineProperty(e.prototype, "$".concat(n.name), { get: function () { return i } }) } }; return d.VueStorage = p, p })) }).call(this, n("c8ba")) }, c183: function (e, t, n) { var r = n("512c"); r(r.S + r.F * !n("0bad"), "Object", { defineProperty: n("1a14").f }) }, c195: function (e, t, n) { var r = n("bcf7"), i = n("217d"), o = i.each, a = i.isFunction, s = i.isArray; function c() { if (!window.matchMedia) throw new Error("matchMedia not present, legacy browsers require a polyfill"); this.queries = {}, this.browserIsIncapable = !window.matchMedia("only all").matches } c.prototype = { constructor: c, register: function (e, t, n) { var i = this.queries, c = n && this.browserIsIncapable; return i[e] || (i[e] = new r(e, c)), a(t) && (t = { match: t }), s(t) || (t = [t]), o(t, (function (t) { a(t) && (t = { match: t }), i[e].addHandler(t) })), this }, unregister: function (e, t) { var n = this.queries[e]; return n && (t ? n.removeHandler(t) : (n.clear(), delete this.queries[e])), this } }, e.exports = c }, c19f: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("da84"), o = n("621a"), a = n("2626"), s = "ArrayBuffer", c = o[s], l = i[s]; r({ global: !0, forced: l !== c }, { ArrayBuffer: c }), a(s) }, c1ac: function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("b727").filter, o = n("1448"), a = r.aTypedArray, s = r.exportTypedArrayMethod; s("filter", (function (e) { var t = i(a(this), e, arguments.length > 1 ? arguments[1] : void 0); return o(this, t) })) }, c1b3: function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("8e8e"), a = n.n(o), s = n("4d91"), c = n("8496"), l = { adjustX: 1, adjustY: 1 }, u = [0, 0], h = { topLeft: { points: ["bl", "tl"], overflow: l, offset: [0, -4], targetOffset: u }, topCenter: { points: ["bc", "tc"], overflow: l, offset: [0, -4], targetOffset: u }, topRight: { points: ["br", "tr"], overflow: l, offset: [0, -4], targetOffset: u }, bottomLeft: { points: ["tl", "bl"], overflow: l, offset: [0, 4], targetOffset: u }, bottomCenter: { points: ["tc", "bc"], overflow: l, offset: [0, 4], targetOffset: u }, bottomRight: { points: ["tr", "br"], overflow: l, offset: [0, 4], targetOffset: u } }, f = h, d = n("daa3"), p = n("b488"), v = n("7b05"), m = { mixins: [p["a"]], props: { minOverlayWidthMatchTrigger: s["a"].bool, prefixCls: s["a"].string.def("rc-dropdown"), transitionName: s["a"].string, overlayClassName: s["a"].string.def(""), openClassName: s["a"].string, animation: s["a"].any, align: s["a"].object, overlayStyle: s["a"].object.def((function () { return {} })), placement: s["a"].string.def("bottomLeft"), overlay: s["a"].any, trigger: s["a"].array.def(["hover"]), alignPoint: s["a"].bool, showAction: s["a"].array.def([]), hideAction: s["a"].array.def([]), getPopupContainer: s["a"].func, visible: s["a"].bool, defaultVisible: s["a"].bool.def(!1), mouseEnterDelay: s["a"].number.def(.15), mouseLeaveDelay: s["a"].number.def(.1) }, data: function () { var e = this.defaultVisible; return Object(d["s"])(this, "visible") && (e = this.visible), { sVisible: e } }, watch: { visible: function (e) { void 0 !== e && this.setState({ sVisible: e }) } }, methods: { onClick: function (e) { Object(d["s"])(this, "visible") || this.setState({ sVisible: !1 }), this.$emit("overlayClick", e), this.childOriginEvents.click && this.childOriginEvents.click(e) }, onVisibleChange: function (e) { Object(d["s"])(this, "visible") || this.setState({ sVisible: e }), this.__emit("visibleChange", e) }, getMinOverlayWidthMatchTrigger: function () { var e = Object(d["l"])(this), t = e.minOverlayWidthMatchTrigger, n = e.alignPoint; return "minOverlayWidthMatchTrigger" in e ? t : !n }, getOverlayElement: function () { var e = this.overlay || this.$slots.overlay || this.$scopedSlots.overlay, t = void 0; return t = "function" === typeof e ? e() : e, t }, getMenuElement: function () { var e = this, t = this.onClick, n = this.prefixCls, r = this.$slots; this.childOriginEvents = Object(d["i"])(r.overlay[0]); var i = this.getOverlayElement(), o = { props: { prefixCls: n + "-menu", getPopupContainer: function () { return e.getPopupDomNode() } }, on: { click: t } }; return "string" === typeof i.type && delete o.props.prefixCls, Object(v["a"])(r.overlay[0], o) }, getMenuElementOrLambda: function () { var e = this.overlay || this.$slots.overlay || this.$scopedSlots.overlay; return "function" === typeof e ? this.getMenuElement : this.getMenuElement() }, getPopupDomNode: function () { return this.$refs.trigger.getPopupDomNode() }, getOpenClassName: function () { var e = this.$props, t = e.openClassName, n = e.prefixCls; return void 0 !== t ? t : n + "-open" }, afterVisibleChange: function (e) { if (e && this.getMinOverlayWidthMatchTrigger()) { var t = this.getPopupDomNode(), n = this.$el; n && t && n.offsetWidth > t.offsetWidth && (t.style.minWidth = n.offsetWidth + "px", this.$refs.trigger && this.$refs.trigger._component && this.$refs.trigger._component.$refs && this.$refs.trigger._component.$refs.alignInstance && this.$refs.trigger._component.$refs.alignInstance.forceAlign()) } }, renderChildren: function () { var e = this.$slots["default"] && this.$slots["default"][0], t = this.sVisible; return t && e ? Object(v["a"])(e, { class: this.getOpenClassName() }) : e } }, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.transitionName, o = t.animation, s = t.align, l = t.placement, u = t.getPopupContainer, h = t.showAction, d = t.hideAction, p = t.overlayClassName, v = t.overlayStyle, m = t.trigger, g = a()(t, ["prefixCls", "transitionName", "animation", "align", "placement", "getPopupContainer", "showAction", "hideAction", "overlayClassName", "overlayStyle", "trigger"]), y = d; y || -1 === m.indexOf("contextmenu") || (y = ["click"]); var b = { props: i()({}, g, { prefixCls: n, popupClassName: p, popupStyle: v, builtinPlacements: f, action: m, showAction: h, hideAction: y || [], popupPlacement: l, popupAlign: s, popupTransitionName: r, popupAnimation: o, popupVisible: this.sVisible, afterPopupVisibleChange: this.afterVisibleChange, getPopupContainer: u }), on: { popupVisibleChange: this.onVisibleChange }, ref: "trigger" }; return e(c["a"], b, [this.renderChildren(), e("template", { slot: "popup" }, [this.$slots.overlay && this.getMenuElement()])]) } }, g = m, y = n("452c"), b = n("1d19"), x = n("9cba"), w = n("0c63"), _ = Object(b["a"])(), C = { name: "ADropdown", props: i()({}, _, { prefixCls: s["a"].string, mouseEnterDelay: s["a"].number.def(.15), mouseLeaveDelay: s["a"].number.def(.1), placement: _.placement.def("bottomLeft") }), model: { prop: "visible", event: "visibleChange" }, provide: function () { return { savePopupRef: this.savePopupRef } }, inject: { configProvider: { default: function () { return x["a"] } } }, methods: { savePopupRef: function (e) { this.popupRef = e }, getTransitionName: function () { var e = this.$props, t = e.placement, n = void 0 === t ? "" : t, r = e.transitionName; return void 0 !== r ? r : n.indexOf("top") >= 0 ? "slide-down" : "slide-up" }, renderOverlay: function (e) { var t = this.$createElement, n = Object(d["g"])(this, "overlay"), r = Array.isArray(n) ? n[0] : n, i = r && Object(d["m"])(r), o = i || {}, a = o.selectable, s = void 0 !== a && a, c = o.focusable, l = void 0 === c || c, u = t("span", { class: e + "-menu-submenu-arrow" }, [t(w["a"], { attrs: { type: "right" }, class: e + "-menu-submenu-arrow-icon" })]), h = r && r.componentOptions ? Object(v["a"])(r, { props: { mode: "vertical", selectable: s, focusable: l, expandIcon: u } }) : n; return h } }, render: function () { var e = arguments[0], t = this.$slots, n = Object(d["l"])(this), r = n.prefixCls, o = n.trigger, a = n.disabled, s = n.getPopupContainer, c = this.configProvider.getPopupContainer, l = this.configProvider.getPrefixCls, u = l("dropdown", r), h = Object(v["a"])(t["default"], { class: u + "-trigger", props: { disabled: a } }), f = a ? [] : o, p = void 0; f && -1 !== f.indexOf("contextmenu") && (p = !0); var m = { props: i()({ alignPoint: p }, n, { prefixCls: u, getPopupContainer: s || c, transitionName: this.getTransitionName(), trigger: f }), on: Object(d["k"])(this) }; return e(g, m, [h, e("template", { slot: "overlay" }, [this.renderOverlay(u)])]) } }; C.Button = y["a"]; t["a"] = C }, c1c9: function (e, t, n) { var r = n("a454"), i = n("f3c1"), o = i(r); e.exports = o }, c1df: function (e, t, n) {
+        (function (e) {
+            var t;//! moment.js
+            //! version : 2.29.1
+            //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
+            //! license : MIT
+            //! momentjs.com
+            (function (t, n) { e.exports = n() })(0, (function () {
+                "use strict"; var n, r; function i() { return n.apply(null, arguments) } function o(e) { n = e } function a(e) { return e instanceof Array || "[object Array]" === Object.prototype.toString.call(e) } function s(e) { return null != e && "[object Object]" === Object.prototype.toString.call(e) } function c(e, t) { return Object.prototype.hasOwnProperty.call(e, t) } function l(e) { if (Object.getOwnPropertyNames) return 0 === Object.getOwnPropertyNames(e).length; var t; for (t in e) if (c(e, t)) return !1; return !0 } function u(e) { return void 0 === e } function h(e) { return "number" === typeof e || "[object Number]" === Object.prototype.toString.call(e) } function f(e) { return e instanceof Date || "[object Date]" === Object.prototype.toString.call(e) } function d(e, t) { var n, r = []; for (n = 0; n < e.length; ++n)r.push(t(e[n], n)); return r } function p(e, t) { for (var n in t) c(t, n) && (e[n] = t[n]); return c(t, "toString") && (e.toString = t.toString), c(t, "valueOf") && (e.valueOf = t.valueOf), e } function v(e, t, n, r) { return Kn(e, t, n, r, !0).utc() } function m() { return { empty: !1, unusedTokens: [], unusedInput: [], overflow: -2, charsLeftOver: 0, nullInput: !1, invalidEra: null, invalidMonth: null, invalidFormat: !1, userInvalidated: !1, iso: !1, parsedDateParts: [], era: null, meridiem: null, rfc2822: !1, weekdayMismatch: !1 } } function g(e) { return null == e._pf && (e._pf = m()), e._pf } function y(e) { if (null == e._isValid) { var t = g(e), n = r.call(t.parsedDateParts, (function (e) { return null != e })), i = !isNaN(e._d.getTime()) && t.overflow < 0 && !t.empty && !t.invalidEra && !t.invalidMonth && !t.invalidWeekday && !t.weekdayMismatch && !t.nullInput && !t.invalidFormat && !t.userInvalidated && (!t.meridiem || t.meridiem && n); if (e._strict && (i = i && 0 === t.charsLeftOver && 0 === t.unusedTokens.length && void 0 === t.bigHour), null != Object.isFrozen && Object.isFrozen(e)) return i; e._isValid = i } return e._isValid } function b(e) { var t = v(NaN); return null != e ? p(g(t), e) : g(t).userInvalidated = !0, t } r = Array.prototype.some ? Array.prototype.some : function (e) { var t, n = Object(this), r = n.length >>> 0; for (t = 0; t < r; t++)if (t in n && e.call(this, n[t], t, n)) return !0; return !1 }; var x = i.momentProperties = [], w = !1; function _(e, t) { var n, r, i; if (u(t._isAMomentObject) || (e._isAMomentObject = t._isAMomentObject), u(t._i) || (e._i = t._i), u(t._f) || (e._f = t._f), u(t._l) || (e._l = t._l), u(t._strict) || (e._strict = t._strict), u(t._tzm) || (e._tzm = t._tzm), u(t._isUTC) || (e._isUTC = t._isUTC), u(t._offset) || (e._offset = t._offset), u(t._pf) || (e._pf = g(t)), u(t._locale) || (e._locale = t._locale), x.length > 0) for (n = 0; n < x.length; n++)r = x[n], i = t[r], u(i) || (e[r] = i); return e } function C(e) { _(this, e), this._d = new Date(null != e._d ? e._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), !1 === w && (w = !0, i.updateOffset(this), w = !1) } function M(e) { return e instanceof C || null != e && null != e._isAMomentObject } function O(e) { !1 === i.suppressDeprecationWarnings && "undefined" !== typeof console && console.warn && console.warn("Deprecation warning: " + e) } function k(e, t) { var n = !0; return p((function () { if (null != i.deprecationHandler && i.deprecationHandler(null, e), n) { var r, o, a, s = []; for (o = 0; o < arguments.length; o++) { if (r = "", "object" === typeof arguments[o]) { for (a in r += "\n[" + o + "] ", arguments[0]) c(arguments[0], a) && (r += a + ": " + arguments[0][a] + ", "); r = r.slice(0, -2) } else r = arguments[o]; s.push(r) } O(e + "\nArguments: " + Array.prototype.slice.call(s).join("") + "\n" + (new Error).stack), n = !1 } return t.apply(this, arguments) }), t) } var S, T = {}; function A(e, t) { null != i.deprecationHandler && i.deprecationHandler(e, t), T[e] || (O(t), T[e] = !0) } function L(e) { return "undefined" !== typeof Function && e instanceof Function || "[object Function]" === Object.prototype.toString.call(e) } function j(e) { var t, n; for (n in e) c(e, n) && (t = e[n], L(t) ? this[n] = t : this["_" + n] = t); this._config = e, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source) } function z(e, t) { var n, r = p({}, e); for (n in t) c(t, n) && (s(e[n]) && s(t[n]) ? (r[n] = {}, p(r[n], e[n]), p(r[n], t[n])) : null != t[n] ? r[n] = t[n] : delete r[n]); for (n in e) c(e, n) && !c(t, n) && s(e[n]) && (r[n] = p({}, r[n])); return r } function E(e) { null != e && this.set(e) } i.suppressDeprecationWarnings = !1, i.deprecationHandler = null, S = Object.keys ? Object.keys : function (e) { var t, n = []; for (t in e) c(e, t) && n.push(t); return n }; var P = { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" }; function D(e, t, n) { var r = this._calendar[e] || this._calendar["sameElse"]; return L(r) ? r.call(t, n) : r } function H(e, t, n) { var r = "" + Math.abs(e), i = t - r.length, o = e >= 0; return (o ? n ? "+" : "" : "-") + Math.pow(10, Math.max(0, i)).toString().substr(1) + r } var V = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, I = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, N = {}, R = {}; function F(e, t, n, r) { var i = r; "string" === typeof r && (i = function () { return this[r]() }), e && (R[e] = i), t && (R[t[0]] = function () { return H(i.apply(this, arguments), t[1], t[2]) }), n && (R[n] = function () { return this.localeData().ordinal(i.apply(this, arguments), e) }) } function Y(e) { return e.match(/\[[\s\S]/) ? e.replace(/^\[|\]$/g, "") : e.replace(/\\/g, "") } function $(e) { var t, n, r = e.match(V); for (t = 0, n = r.length; t < n; t++)R[r[t]] ? r[t] = R[r[t]] : r[t] = Y(r[t]); return function (t) { var i, o = ""; for (i = 0; i < n; i++)o += L(r[i]) ? r[i].call(t, e) : r[i]; return o } } function B(e, t) { return e.isValid() ? (t = W(t, e.localeData()), N[t] = N[t] || $(t), N[t](e)) : e.localeData().invalidDate() } function W(e, t) { var n = 5; function r(e) { return t.longDateFormat(e) || e } I.lastIndex = 0; while (n >= 0 && I.test(e)) e = e.replace(I, r), I.lastIndex = 0, n -= 1; return e } var q = { LTS: "h:mm:ss A", LT: "h:mm A", L: "MM/DD/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY h:mm A", LLLL: "dddd, MMMM D, YYYY h:mm A" }; function U(e) { var t = this._longDateFormat[e], n = this._longDateFormat[e.toUpperCase()]; return t || !n ? t : (this._longDateFormat[e] = n.match(V).map((function (e) { return "MMMM" === e || "MM" === e || "DD" === e || "dddd" === e ? e.slice(1) : e })).join(""), this._longDateFormat[e]) } var K = "Invalid date"; function G() { return this._invalidDate } var X = "%d", J = /\d{1,2}/; function Q(e) { return this._ordinal.replace("%d", e) } var Z = { future: "in %s", past: "%s ago", s: "a few seconds", ss: "%d seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", w: "a week", ww: "%d weeks", M: "a month", MM: "%d months", y: "a year", yy: "%d years" }; function ee(e, t, n, r) { var i = this._relativeTime[n]; return L(i) ? i(e, t, n, r) : i.replace(/%d/i, e) } function te(e, t) { var n = this._relativeTime[e > 0 ? "future" : "past"]; return L(n) ? n(t) : n.replace(/%s/i, t) } var ne = {}; function re(e, t) { var n = e.toLowerCase(); ne[n] = ne[n + "s"] = ne[t] = e } function ie(e) { return "string" === typeof e ? ne[e] || ne[e.toLowerCase()] : void 0 } function oe(e) { var t, n, r = {}; for (n in e) c(e, n) && (t = ie(n), t && (r[t] = e[n])); return r } var ae = {}; function se(e, t) { ae[e] = t } function ce(e) { var t, n = []; for (t in e) c(e, t) && n.push({ unit: t, priority: ae[t] }); return n.sort((function (e, t) { return e.priority - t.priority })), n } function le(e) { return e % 4 === 0 && e % 100 !== 0 || e % 400 === 0 } function ue(e) { return e < 0 ? Math.ceil(e) || 0 : Math.floor(e) } function he(e) { var t = +e, n = 0; return 0 !== t && isFinite(t) && (n = ue(t)), n } function fe(e, t) { return function (n) { return null != n ? (pe(this, e, n), i.updateOffset(this, t), this) : de(this, e) } } function de(e, t) { return e.isValid() ? e._d["get" + (e._isUTC ? "UTC" : "") + t]() : NaN } function pe(e, t, n) { e.isValid() && !isNaN(n) && ("FullYear" === t && le(e.year()) && 1 === e.month() && 29 === e.date() ? (n = he(n), e._d["set" + (e._isUTC ? "UTC" : "") + t](n, e.month(), et(n, e.month()))) : e._d["set" + (e._isUTC ? "UTC" : "") + t](n)) } function ve(e) { return e = ie(e), L(this[e]) ? this[e]() : this } function me(e, t) { if ("object" === typeof e) { e = oe(e); var n, r = ce(e); for (n = 0; n < r.length; n++)this[r[n].unit](e[r[n].unit]) } else if (e = ie(e), L(this[e])) return this[e](t); return this } var ge, ye = /\d/, be = /\d\d/, xe = /\d{3}/, we = /\d{4}/, _e = /[+-]?\d{6}/, Ce = /\d\d?/, Me = /\d\d\d\d?/, Oe = /\d\d\d\d\d\d?/, ke = /\d{1,3}/, Se = /\d{1,4}/, Te = /[+-]?\d{1,6}/, Ae = /\d+/, Le = /[+-]?\d+/, je = /Z|[+-]\d\d:?\d\d/gi, ze = /Z|[+-]\d\d(?::?\d\d)?/gi, Ee = /[+-]?\d+(\.\d{1,3})?/, Pe = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i; function De(e, t, n) { ge[e] = L(t) ? t : function (e, r) { return e && n ? n : t } } function He(e, t) { return c(ge, e) ? ge[e](t._strict, t._locale) : new RegExp(Ve(e)) } function Ve(e) { return Ie(e.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, (function (e, t, n, r, i) { return t || n || r || i }))) } function Ie(e) { return e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") } ge = {}; var Ne = {}; function Re(e, t) { var n, r = t; for ("string" === typeof e && (e = [e]), h(t) && (r = function (e, n) { n[t] = he(e) }), n = 0; n < e.length; n++)Ne[e[n]] = r } function Fe(e, t) { Re(e, (function (e, n, r, i) { r._w = r._w || {}, t(e, r._w, r, i) })) } function Ye(e, t, n) { null != t && c(Ne, e) && Ne[e](t, n._a, n, e) } var $e, Be = 0, We = 1, qe = 2, Ue = 3, Ke = 4, Ge = 5, Xe = 6, Je = 7, Qe = 8; function Ze(e, t) { return (e % t + t) % t } function et(e, t) { if (isNaN(e) || isNaN(t)) return NaN; var n = Ze(t, 12); return e += (t - n) / 12, 1 === n ? le(e) ? 29 : 28 : 31 - n % 7 % 2 } $e = Array.prototype.indexOf ? Array.prototype.indexOf : function (e) { var t; for (t = 0; t < this.length; ++t)if (this[t] === e) return t; return -1 }, F("M", ["MM", 2], "Mo", (function () { return this.month() + 1 })), F("MMM", 0, 0, (function (e) { return this.localeData().monthsShort(this, e) })), F("MMMM", 0, 0, (function (e) { return this.localeData().months(this, e) })), re("month", "M"), se("month", 8), De("M", Ce), De("MM", Ce, be), De("MMM", (function (e, t) { return t.monthsShortRegex(e) })), De("MMMM", (function (e, t) { return t.monthsRegex(e) })), Re(["M", "MM"], (function (e, t) { t[We] = he(e) - 1 })), Re(["MMM", "MMMM"], (function (e, t, n, r) { var i = n._locale.monthsParse(e, r, n._strict); null != i ? t[We] = i : g(n).invalidMonth = e })); var tt = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), nt = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), rt = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, it = Pe, ot = Pe; function at(e, t) { return e ? a(this._months) ? this._months[e.month()] : this._months[(this._months.isFormat || rt).test(t) ? "format" : "standalone"][e.month()] : a(this._months) ? this._months : this._months["standalone"] } function st(e, t) { return e ? a(this._monthsShort) ? this._monthsShort[e.month()] : this._monthsShort[rt.test(t) ? "format" : "standalone"][e.month()] : a(this._monthsShort) ? this._monthsShort : this._monthsShort["standalone"] } function ct(e, t, n) { var r, i, o, a = e.toLocaleLowerCase(); if (!this._monthsParse) for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], r = 0; r < 12; ++r)o = v([2e3, r]), this._shortMonthsParse[r] = this.monthsShort(o, "").toLocaleLowerCase(), this._longMonthsParse[r] = this.months(o, "").toLocaleLowerCase(); return n ? "MMM" === t ? (i = $e.call(this._shortMonthsParse, a), -1 !== i ? i : null) : (i = $e.call(this._longMonthsParse, a), -1 !== i ? i : null) : "MMM" === t ? (i = $e.call(this._shortMonthsParse, a), -1 !== i ? i : (i = $e.call(this._longMonthsParse, a), -1 !== i ? i : null)) : (i = $e.call(this._longMonthsParse, a), -1 !== i ? i : (i = $e.call(this._shortMonthsParse, a), -1 !== i ? i : null)) } function lt(e, t, n) { var r, i, o; if (this._monthsParseExact) return ct.call(this, e, t, n); for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), r = 0; r < 12; r++) { if (i = v([2e3, r]), n && !this._longMonthsParse[r] && (this._longMonthsParse[r] = new RegExp("^" + this.months(i, "").replace(".", "") + "$", "i"), this._shortMonthsParse[r] = new RegExp("^" + this.monthsShort(i, "").replace(".", "") + "$", "i")), n || this._monthsParse[r] || (o = "^" + this.months(i, "") + "|^" + this.monthsShort(i, ""), this._monthsParse[r] = new RegExp(o.replace(".", ""), "i")), n && "MMMM" === t && this._longMonthsParse[r].test(e)) return r; if (n && "MMM" === t && this._shortMonthsParse[r].test(e)) return r; if (!n && this._monthsParse[r].test(e)) return r } } function ut(e, t) { var n; if (!e.isValid()) return e; if ("string" === typeof t) if (/^\d+$/.test(t)) t = he(t); else if (t = e.localeData().monthsParse(t), !h(t)) return e; return n = Math.min(e.date(), et(e.year(), t)), e._d["set" + (e._isUTC ? "UTC" : "") + "Month"](t, n), e } function ht(e) { return null != e ? (ut(this, e), i.updateOffset(this, !0), this) : de(this, "Month") } function ft() { return et(this.year(), this.month()) } function dt(e) { return this._monthsParseExact ? (c(this, "_monthsRegex") || vt.call(this), e ? this._monthsShortStrictRegex : this._monthsShortRegex) : (c(this, "_monthsShortRegex") || (this._monthsShortRegex = it), this._monthsShortStrictRegex && e ? this._monthsShortStrictRegex : this._monthsShortRegex) } function pt(e) { return this._monthsParseExact ? (c(this, "_monthsRegex") || vt.call(this), e ? this._monthsStrictRegex : this._monthsRegex) : (c(this, "_monthsRegex") || (this._monthsRegex = ot), this._monthsStrictRegex && e ? this._monthsStrictRegex : this._monthsRegex) } function vt() { function e(e, t) { return t.length - e.length } var t, n, r = [], i = [], o = []; for (t = 0; t < 12; t++)n = v([2e3, t]), r.push(this.monthsShort(n, "")), i.push(this.months(n, "")), o.push(this.months(n, "")), o.push(this.monthsShort(n, "")); for (r.sort(e), i.sort(e), o.sort(e), t = 0; t < 12; t++)r[t] = Ie(r[t]), i[t] = Ie(i[t]); for (t = 0; t < 24; t++)o[t] = Ie(o[t]); this._monthsRegex = new RegExp("^(" + o.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp("^(" + i.join("|") + ")", "i"), this._monthsShortStrictRegex = new RegExp("^(" + r.join("|") + ")", "i") } function mt(e) { return le(e) ? 366 : 365 } F("Y", 0, 0, (function () { var e = this.year(); return e <= 9999 ? H(e, 4) : "+" + e })), F(0, ["YY", 2], 0, (function () { return this.year() % 100 })), F(0, ["YYYY", 4], 0, "year"), F(0, ["YYYYY", 5], 0, "year"), F(0, ["YYYYYY", 6, !0], 0, "year"), re("year", "y"), se("year", 1), De("Y", Le), De("YY", Ce, be), De("YYYY", Se, we), De("YYYYY", Te, _e), De("YYYYYY", Te, _e), Re(["YYYYY", "YYYYYY"], Be), Re("YYYY", (function (e, t) { t[Be] = 2 === e.length ? i.parseTwoDigitYear(e) : he(e) })), Re("YY", (function (e, t) { t[Be] = i.parseTwoDigitYear(e) })), Re("Y", (function (e, t) { t[Be] = parseInt(e, 10) })), i.parseTwoDigitYear = function (e) { return he(e) + (he(e) > 68 ? 1900 : 2e3) }; var gt = fe("FullYear", !0); function yt() { return le(this.year()) } function bt(e, t, n, r, i, o, a) { var s; return e < 100 && e >= 0 ? (s = new Date(e + 400, t, n, r, i, o, a), isFinite(s.getFullYear()) && s.setFullYear(e)) : s = new Date(e, t, n, r, i, o, a), s } function xt(e) { var t, n; return e < 100 && e >= 0 ? (n = Array.prototype.slice.call(arguments), n[0] = e + 400, t = new Date(Date.UTC.apply(null, n)), isFinite(t.getUTCFullYear()) && t.setUTCFullYear(e)) : t = new Date(Date.UTC.apply(null, arguments)), t } function wt(e, t, n) { var r = 7 + t - n, i = (7 + xt(e, 0, r).getUTCDay() - t) % 7; return -i + r - 1 } function _t(e, t, n, r, i) { var o, a, s = (7 + n - r) % 7, c = wt(e, r, i), l = 1 + 7 * (t - 1) + s + c; return l <= 0 ? (o = e - 1, a = mt(o) + l) : l > mt(e) ? (o = e + 1, a = l - mt(e)) : (o = e, a = l), { year: o, dayOfYear: a } } function Ct(e, t, n) { var r, i, o = wt(e.year(), t, n), a = Math.floor((e.dayOfYear() - o - 1) / 7) + 1; return a < 1 ? (i = e.year() - 1, r = a + Mt(i, t, n)) : a > Mt(e.year(), t, n) ? (r = a - Mt(e.year(), t, n), i = e.year() + 1) : (i = e.year(), r = a), { week: r, year: i } } function Mt(e, t, n) { var r = wt(e, t, n), i = wt(e + 1, t, n); return (mt(e) - r + i) / 7 } function Ot(e) { return Ct(e, this._week.dow, this._week.doy).week } F("w", ["ww", 2], "wo", "week"), F("W", ["WW", 2], "Wo", "isoWeek"), re("week", "w"), re("isoWeek", "W"), se("week", 5), se("isoWeek", 5), De("w", Ce), De("ww", Ce, be), De("W", Ce), De("WW", Ce, be), Fe(["w", "ww", "W", "WW"], (function (e, t, n, r) { t[r.substr(0, 1)] = he(e) })); var kt = { dow: 0, doy: 6 }; function St() { return this._week.dow } function Tt() { return this._week.doy } function At(e) { var t = this.localeData().week(this); return null == e ? t : this.add(7 * (e - t), "d") } function Lt(e) { var t = Ct(this, 1, 4).week; return null == e ? t : this.add(7 * (e - t), "d") } function jt(e, t) { return "string" !== typeof e ? e : isNaN(e) ? (e = t.weekdaysParse(e), "number" === typeof e ? e : null) : parseInt(e, 10) } function zt(e, t) { return "string" === typeof e ? t.weekdaysParse(e) % 7 || 7 : isNaN(e) ? null : e } function Et(e, t) { return e.slice(t, 7).concat(e.slice(0, t)) } F("d", 0, "do", "day"), F("dd", 0, 0, (function (e) { return this.localeData().weekdaysMin(this, e) })), F("ddd", 0, 0, (function (e) { return this.localeData().weekdaysShort(this, e) })), F("dddd", 0, 0, (function (e) { return this.localeData().weekdays(this, e) })), F("e", 0, 0, "weekday"), F("E", 0, 0, "isoWeekday"), re("day", "d"), re("weekday", "e"), re("isoWeekday", "E"), se("day", 11), se("weekday", 11), se("isoWeekday", 11), De("d", Ce), De("e", Ce), De("E", Ce), De("dd", (function (e, t) { return t.weekdaysMinRegex(e) })), De("ddd", (function (e, t) { return t.weekdaysShortRegex(e) })), De("dddd", (function (e, t) { return t.weekdaysRegex(e) })), Fe(["dd", "ddd", "dddd"], (function (e, t, n, r) { var i = n._locale.weekdaysParse(e, r, n._strict); null != i ? t.d = i : g(n).invalidWeekday = e })), Fe(["d", "e", "E"], (function (e, t, n, r) { t[r] = he(e) })); var Pt = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), Dt = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), Ht = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), Vt = Pe, It = Pe, Nt = Pe; function Rt(e, t) { var n = a(this._weekdays) ? this._weekdays : this._weekdays[e && !0 !== e && this._weekdays.isFormat.test(t) ? "format" : "standalone"]; return !0 === e ? Et(n, this._week.dow) : e ? n[e.day()] : n } function Ft(e) { return !0 === e ? Et(this._weekdaysShort, this._week.dow) : e ? this._weekdaysShort[e.day()] : this._weekdaysShort } function Yt(e) { return !0 === e ? Et(this._weekdaysMin, this._week.dow) : e ? this._weekdaysMin[e.day()] : this._weekdaysMin } function $t(e, t, n) { var r, i, o, a = e.toLocaleLowerCase(); if (!this._weekdaysParse) for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], r = 0; r < 7; ++r)o = v([2e3, 1]).day(r), this._minWeekdaysParse[r] = this.weekdaysMin(o, "").toLocaleLowerCase(), this._shortWeekdaysParse[r] = this.weekdaysShort(o, "").toLocaleLowerCase(), this._weekdaysParse[r] = this.weekdays(o, "").toLocaleLowerCase(); return n ? "dddd" === t ? (i = $e.call(this._weekdaysParse, a), -1 !== i ? i : null) : "ddd" === t ? (i = $e.call(this._shortWeekdaysParse, a), -1 !== i ? i : null) : (i = $e.call(this._minWeekdaysParse, a), -1 !== i ? i : null) : "dddd" === t ? (i = $e.call(this._weekdaysParse, a), -1 !== i ? i : (i = $e.call(this._shortWeekdaysParse, a), -1 !== i ? i : (i = $e.call(this._minWeekdaysParse, a), -1 !== i ? i : null))) : "ddd" === t ? (i = $e.call(this._shortWeekdaysParse, a), -1 !== i ? i : (i = $e.call(this._weekdaysParse, a), -1 !== i ? i : (i = $e.call(this._minWeekdaysParse, a), -1 !== i ? i : null))) : (i = $e.call(this._minWeekdaysParse, a), -1 !== i ? i : (i = $e.call(this._weekdaysParse, a), -1 !== i ? i : (i = $e.call(this._shortWeekdaysParse, a), -1 !== i ? i : null))) } function Bt(e, t, n) { var r, i, o; if (this._weekdaysParseExact) return $t.call(this, e, t, n); for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), r = 0; r < 7; r++) { if (i = v([2e3, 1]).day(r), n && !this._fullWeekdaysParse[r] && (this._fullWeekdaysParse[r] = new RegExp("^" + this.weekdays(i, "").replace(".", "\\.?") + "$", "i"), this._shortWeekdaysParse[r] = new RegExp("^" + this.weekdaysShort(i, "").replace(".", "\\.?") + "$", "i"), this._minWeekdaysParse[r] = new RegExp("^" + this.weekdaysMin(i, "").replace(".", "\\.?") + "$", "i")), this._weekdaysParse[r] || (o = "^" + this.weekdays(i, "") + "|^" + this.weekdaysShort(i, "") + "|^" + this.weekdaysMin(i, ""), this._weekdaysParse[r] = new RegExp(o.replace(".", ""), "i")), n && "dddd" === t && this._fullWeekdaysParse[r].test(e)) return r; if (n && "ddd" === t && this._shortWeekdaysParse[r].test(e)) return r; if (n && "dd" === t && this._minWeekdaysParse[r].test(e)) return r; if (!n && this._weekdaysParse[r].test(e)) return r } } function Wt(e) { if (!this.isValid()) return null != e ? this : NaN; var t = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); return null != e ? (e = jt(e, this.localeData()), this.add(e - t, "d")) : t } function qt(e) { if (!this.isValid()) return null != e ? this : NaN; var t = (this.day() + 7 - this.localeData()._week.dow) % 7; return null == e ? t : this.add(e - t, "d") } function Ut(e) { if (!this.isValid()) return null != e ? this : NaN; if (null != e) { var t = zt(e, this.localeData()); return this.day(this.day() % 7 ? t : t - 7) } return this.day() || 7 } function Kt(e) { return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || Jt.call(this), e ? this._weekdaysStrictRegex : this._weekdaysRegex) : (c(this, "_weekdaysRegex") || (this._weekdaysRegex = Vt), this._weekdaysStrictRegex && e ? this._weekdaysStrictRegex : this._weekdaysRegex) } function Gt(e) { return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || Jt.call(this), e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (c(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = It), this._weekdaysShortStrictRegex && e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) } function Xt(e) { return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || Jt.call(this), e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (c(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = Nt), this._weekdaysMinStrictRegex && e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) } function Jt() { function e(e, t) { return t.length - e.length } var t, n, r, i, o, a = [], s = [], c = [], l = []; for (t = 0; t < 7; t++)n = v([2e3, 1]).day(t), r = Ie(this.weekdaysMin(n, "")), i = Ie(this.weekdaysShort(n, "")), o = Ie(this.weekdays(n, "")), a.push(r), s.push(i), c.push(o), l.push(r), l.push(i), l.push(o); a.sort(e), s.sort(e), c.sort(e), l.sort(e), this._weekdaysRegex = new RegExp("^(" + l.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + c.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + s.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + a.join("|") + ")", "i") } function Qt() { return this.hours() % 12 || 12 } function Zt() { return this.hours() || 24 } function en(e, t) { F(e, 0, 0, (function () { return this.localeData().meridiem(this.hours(), this.minutes(), t) })) } function tn(e, t) { return t._meridiemParse } function nn(e) { return "p" === (e + "").toLowerCase().charAt(0) } F("H", ["HH", 2], 0, "hour"), F("h", ["hh", 2], 0, Qt), F("k", ["kk", 2], 0, Zt), F("hmm", 0, 0, (function () { return "" + Qt.apply(this) + H(this.minutes(), 2) })), F("hmmss", 0, 0, (function () { return "" + Qt.apply(this) + H(this.minutes(), 2) + H(this.seconds(), 2) })), F("Hmm", 0, 0, (function () { return "" + this.hours() + H(this.minutes(), 2) })), F("Hmmss", 0, 0, (function () { return "" + this.hours() + H(this.minutes(), 2) + H(this.seconds(), 2) })), en("a", !0), en("A", !1), re("hour", "h"), se("hour", 13), De("a", tn), De("A", tn), De("H", Ce), De("h", Ce), De("k", Ce), De("HH", Ce, be), De("hh", Ce, be), De("kk", Ce, be), De("hmm", Me), De("hmmss", Oe), De("Hmm", Me), De("Hmmss", Oe), Re(["H", "HH"], Ue), Re(["k", "kk"], (function (e, t, n) { var r = he(e); t[Ue] = 24 === r ? 0 : r })), Re(["a", "A"], (function (e, t, n) { n._isPm = n._locale.isPM(e), n._meridiem = e })), Re(["h", "hh"], (function (e, t, n) { t[Ue] = he(e), g(n).bigHour = !0 })), Re("hmm", (function (e, t, n) { var r = e.length - 2; t[Ue] = he(e.substr(0, r)), t[Ke] = he(e.substr(r)), g(n).bigHour = !0 })), Re("hmmss", (function (e, t, n) { var r = e.length - 4, i = e.length - 2; t[Ue] = he(e.substr(0, r)), t[Ke] = he(e.substr(r, 2)), t[Ge] = he(e.substr(i)), g(n).bigHour = !0 })), Re("Hmm", (function (e, t, n) { var r = e.length - 2; t[Ue] = he(e.substr(0, r)), t[Ke] = he(e.substr(r)) })), Re("Hmmss", (function (e, t, n) { var r = e.length - 4, i = e.length - 2; t[Ue] = he(e.substr(0, r)), t[Ke] = he(e.substr(r, 2)), t[Ge] = he(e.substr(i)) })); var rn = /[ap]\.?m?\.?/i, on = fe("Hours", !0); function an(e, t, n) { return e > 11 ? n ? "pm" : "PM" : n ? "am" : "AM" } var sn, cn = { calendar: P, longDateFormat: q, invalidDate: K, ordinal: X, dayOfMonthOrdinalParse: J, relativeTime: Z, months: tt, monthsShort: nt, week: kt, weekdays: Pt, weekdaysMin: Ht, weekdaysShort: Dt, meridiemParse: rn }, ln = {}, un = {}; function hn(e, t) { var n, r = Math.min(e.length, t.length); for (n = 0; n < r; n += 1)if (e[n] !== t[n]) return n; return r } function fn(e) { return e ? e.toLowerCase().replace("_", "-") : e } function dn(e) { var t, n, r, i, o = 0; while (o < e.length) { i = fn(e[o]).split("-"), t = i.length, n = fn(e[o + 1]), n = n ? n.split("-") : null; while (t > 0) { if (r = pn(i.slice(0, t).join("-")), r) return r; if (n && n.length >= t && hn(i, n) >= t - 1) break; t-- } o++ } return sn } function pn(n) { var r = null; if (void 0 === ln[n] && "undefined" !== typeof e && e && e.exports) try { r = sn._abbr, t, function () { var e = new Error("Cannot find module 'undefined'"); throw e.code = "MODULE_NOT_FOUND", e }(), vn(r) } catch (i) { ln[n] = null } return ln[n] } function vn(e, t) { var n; return e && (n = u(t) ? yn(e) : mn(e, t), n ? sn = n : "undefined" !== typeof console && console.warn && console.warn("Locale " + e + " not found. Did you forget to load it?")), sn._abbr } function mn(e, t) { if (null !== t) { var n, r = cn; if (t.abbr = e, null != ln[e]) A("defineLocaleOverride", "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."), r = ln[e]._config; else if (null != t.parentLocale) if (null != ln[t.parentLocale]) r = ln[t.parentLocale]._config; else { if (n = pn(t.parentLocale), null == n) return un[t.parentLocale] || (un[t.parentLocale] = []), un[t.parentLocale].push({ name: e, config: t }), null; r = n._config } return ln[e] = new E(z(r, t)), un[e] && un[e].forEach((function (e) { mn(e.name, e.config) })), vn(e), ln[e] } return delete ln[e], null } function gn(e, t) { if (null != t) { var n, r, i = cn; null != ln[e] && null != ln[e].parentLocale ? ln[e].set(z(ln[e]._config, t)) : (r = pn(e), null != r && (i = r._config), t = z(i, t), null == r && (t.abbr = e), n = new E(t), n.parentLocale = ln[e], ln[e] = n), vn(e) } else null != ln[e] && (null != ln[e].parentLocale ? (ln[e] = ln[e].parentLocale, e === vn() && vn(e)) : null != ln[e] && delete ln[e]); return ln[e] } function yn(e) { var t; if (e && e._locale && e._locale._abbr && (e = e._locale._abbr), !e) return sn; if (!a(e)) { if (t = pn(e), t) return t; e = [e] } return dn(e) } function bn() { return S(ln) } function xn(e) { var t, n = e._a; return n && -2 === g(e).overflow && (t = n[We] < 0 || n[We] > 11 ? We : n[qe] < 1 || n[qe] > et(n[Be], n[We]) ? qe : n[Ue] < 0 || n[Ue] > 24 || 24 === n[Ue] && (0 !== n[Ke] || 0 !== n[Ge] || 0 !== n[Xe]) ? Ue : n[Ke] < 0 || n[Ke] > 59 ? Ke : n[Ge] < 0 || n[Ge] > 59 ? Ge : n[Xe] < 0 || n[Xe] > 999 ? Xe : -1, g(e)._overflowDayOfYear && (t < Be || t > qe) && (t = qe), g(e)._overflowWeeks && -1 === t && (t = Je), g(e)._overflowWeekday && -1 === t && (t = Qe), g(e).overflow = t), e } var wn = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, _n = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, Cn = /Z|[+-]\d\d(?::?\d\d)?/, Mn = [["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/], ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/], ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/], ["GGGG-[W]WW", /\d{4}-W\d\d/, !1], ["YYYY-DDD", /\d{4}-\d{3}/], ["YYYY-MM", /\d{4}-\d\d/, !1], ["YYYYYYMMDD", /[+-]\d{10}/], ["YYYYMMDD", /\d{8}/], ["GGGG[W]WWE", /\d{4}W\d{3}/], ["GGGG[W]WW", /\d{4}W\d{2}/, !1], ["YYYYDDD", /\d{7}/], ["YYYYMM", /\d{6}/, !1], ["YYYY", /\d{4}/, !1]], On = [["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/], ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/], ["HH:mm:ss", /\d\d:\d\d:\d\d/], ["HH:mm", /\d\d:\d\d/], ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/], ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/], ["HHmmss", /\d\d\d\d\d\d/], ["HHmm", /\d\d\d\d/], ["HH", /\d\d/]], kn = /^\/?Date\((-?\d+)/i, Sn = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, Tn = { UT: 0, GMT: 0, EDT: -240, EST: -300, CDT: -300, CST: -360, MDT: -360, MST: -420, PDT: -420, PST: -480 }; function An(e) { var t, n, r, i, o, a, s = e._i, c = wn.exec(s) || _n.exec(s); if (c) { for (g(e).iso = !0, t = 0, n = Mn.length; t < n; t++)if (Mn[t][1].exec(c[1])) { i = Mn[t][0], r = !1 !== Mn[t][2]; break } if (null == i) return void (e._isValid = !1); if (c[3]) { for (t = 0, n = On.length; t < n; t++)if (On[t][1].exec(c[3])) { o = (c[2] || " ") + On[t][0]; break } if (null == o) return void (e._isValid = !1) } if (!r && null != o) return void (e._isValid = !1); if (c[4]) { if (!Cn.exec(c[4])) return void (e._isValid = !1); a = "Z" } e._f = i + (o || "") + (a || ""), Fn(e) } else e._isValid = !1 } function Ln(e, t, n, r, i, o) { var a = [jn(e), nt.indexOf(t), parseInt(n, 10), parseInt(r, 10), parseInt(i, 10)]; return o && a.push(parseInt(o, 10)), a } function jn(e) { var t = parseInt(e, 10); return t <= 49 ? 2e3 + t : t <= 999 ? 1900 + t : t } function zn(e) { return e.replace(/\([^)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, "") } function En(e, t, n) { if (e) { var r = Dt.indexOf(e), i = new Date(t[0], t[1], t[2]).getDay(); if (r !== i) return g(n).weekdayMismatch = !0, n._isValid = !1, !1 } return !0 } function Pn(e, t, n) { if (e) return Tn[e]; if (t) return 0; var r = parseInt(n, 10), i = r % 100, o = (r - i) / 100; return 60 * o + i } function Dn(e) { var t, n = Sn.exec(zn(e._i)); if (n) { if (t = Ln(n[4], n[3], n[2], n[5], n[6], n[7]), !En(n[1], t, e)) return; e._a = t, e._tzm = Pn(n[8], n[9], n[10]), e._d = xt.apply(null, e._a), e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), g(e).rfc2822 = !0 } else e._isValid = !1 } function Hn(e) { var t = kn.exec(e._i); null === t ? (An(e), !1 === e._isValid && (delete e._isValid, Dn(e), !1 === e._isValid && (delete e._isValid, e._strict ? e._isValid = !1 : i.createFromInputFallback(e)))) : e._d = new Date(+t[1]) } function Vn(e, t, n) { return null != e ? e : null != t ? t : n } function In(e) { var t = new Date(i.now()); return e._useUTC ? [t.getUTCFullYear(), t.getUTCMonth(), t.getUTCDate()] : [t.getFullYear(), t.getMonth(), t.getDate()] } function Nn(e) { var t, n, r, i, o, a = []; if (!e._d) { for (r = In(e), e._w && null == e._a[qe] && null == e._a[We] && Rn(e), null != e._dayOfYear && (o = Vn(e._a[Be], r[Be]), (e._dayOfYear > mt(o) || 0 === e._dayOfYear) && (g(e)._overflowDayOfYear = !0), n = xt(o, 0, e._dayOfYear), e._a[We] = n.getUTCMonth(), e._a[qe] = n.getUTCDate()), t = 0; t < 3 && null == e._a[t]; ++t)e._a[t] = a[t] = r[t]; for (; t < 7; t++)e._a[t] = a[t] = null == e._a[t] ? 2 === t ? 1 : 0 : e._a[t]; 24 === e._a[Ue] && 0 === e._a[Ke] && 0 === e._a[Ge] && 0 === e._a[Xe] && (e._nextDay = !0, e._a[Ue] = 0), e._d = (e._useUTC ? xt : bt).apply(null, a), i = e._useUTC ? e._d.getUTCDay() : e._d.getDay(), null != e._tzm && e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), e._nextDay && (e._a[Ue] = 24), e._w && "undefined" !== typeof e._w.d && e._w.d !== i && (g(e).weekdayMismatch = !0) } } function Rn(e) { var t, n, r, i, o, a, s, c, l; t = e._w, null != t.GG || null != t.W || null != t.E ? (o = 1, a = 4, n = Vn(t.GG, e._a[Be], Ct(Gn(), 1, 4).year), r = Vn(t.W, 1), i = Vn(t.E, 1), (i < 1 || i > 7) && (c = !0)) : (o = e._locale._week.dow, a = e._locale._week.doy, l = Ct(Gn(), o, a), n = Vn(t.gg, e._a[Be], l.year), r = Vn(t.w, l.week), null != t.d ? (i = t.d, (i < 0 || i > 6) && (c = !0)) : null != t.e ? (i = t.e + o, (t.e < 0 || t.e > 6) && (c = !0)) : i = o), r < 1 || r > Mt(n, o, a) ? g(e)._overflowWeeks = !0 : null != c ? g(e)._overflowWeekday = !0 : (s = _t(n, r, i, o, a), e._a[Be] = s.year, e._dayOfYear = s.dayOfYear) } function Fn(e) { if (e._f !== i.ISO_8601) if (e._f !== i.RFC_2822) { e._a = [], g(e).empty = !0; var t, n, r, o, a, s, c = "" + e._i, l = c.length, u = 0; for (r = W(e._f, e._locale).match(V) || [], t = 0; t < r.length; t++)o = r[t], n = (c.match(He(o, e)) || [])[0], n && (a = c.substr(0, c.indexOf(n)), a.length > 0 && g(e).unusedInput.push(a), c = c.slice(c.indexOf(n) + n.length), u += n.length), R[o] ? (n ? g(e).empty = !1 : g(e).unusedTokens.push(o), Ye(o, n, e)) : e._strict && !n && g(e).unusedTokens.push(o); g(e).charsLeftOver = l - u, c.length > 0 && g(e).unusedInput.push(c), e._a[Ue] <= 12 && !0 === g(e).bigHour && e._a[Ue] > 0 && (g(e).bigHour = void 0), g(e).parsedDateParts = e._a.slice(0), g(e).meridiem = e._meridiem, e._a[Ue] = Yn(e._locale, e._a[Ue], e._meridiem), s = g(e).era, null !== s && (e._a[Be] = e._locale.erasConvertYear(s, e._a[Be])), Nn(e), xn(e) } else Dn(e); else An(e) } function Yn(e, t, n) { var r; return null == n ? t : null != e.meridiemHour ? e.meridiemHour(t, n) : null != e.isPM ? (r = e.isPM(n), r && t < 12 && (t += 12), r || 12 !== t || (t = 0), t) : t } function $n(e) { var t, n, r, i, o, a, s = !1; if (0 === e._f.length) return g(e).invalidFormat = !0, void (e._d = new Date(NaN)); for (i = 0; i < e._f.length; i++)o = 0, a = !1, t = _({}, e), null != e._useUTC && (t._useUTC = e._useUTC), t._f = e._f[i], Fn(t), y(t) && (a = !0), o += g(t).charsLeftOver, o += 10 * g(t).unusedTokens.length, g(t).score = o, s ? o < r && (r = o, n = t) : (null == r || o < r || a) && (r = o, n = t, a && (s = !0)); p(e, n || t) } function Bn(e) { if (!e._d) { var t = oe(e._i), n = void 0 === t.day ? t.date : t.day; e._a = d([t.year, t.month, n, t.hour, t.minute, t.second, t.millisecond], (function (e) { return e && parseInt(e, 10) })), Nn(e) } } function Wn(e) { var t = new C(xn(qn(e))); return t._nextDay && (t.add(1, "d"), t._nextDay = void 0), t } function qn(e) { var t = e._i, n = e._f; return e._locale = e._locale || yn(e._l), null === t || void 0 === n && "" === t ? b({ nullInput: !0 }) : ("string" === typeof t && (e._i = t = e._locale.preparse(t)), M(t) ? new C(xn(t)) : (f(t) ? e._d = t : a(n) ? $n(e) : n ? Fn(e) : Un(e), y(e) || (e._d = null), e)) } function Un(e) { var t = e._i; u(t) ? e._d = new Date(i.now()) : f(t) ? e._d = new Date(t.valueOf()) : "string" === typeof t ? Hn(e) : a(t) ? (e._a = d(t.slice(0), (function (e) { return parseInt(e, 10) })), Nn(e)) : s(t) ? Bn(e) : h(t) ? e._d = new Date(t) : i.createFromInputFallback(e) } function Kn(e, t, n, r, i) { var o = {}; return !0 !== t && !1 !== t || (r = t, t = void 0), !0 !== n && !1 !== n || (r = n, n = void 0), (s(e) && l(e) || a(e) && 0 === e.length) && (e = void 0), o._isAMomentObject = !0, o._useUTC = o._isUTC = i, o._l = n, o._i = e, o._f = t, o._strict = r, Wn(o) } function Gn(e, t, n, r) { return Kn(e, t, n, r, !1) } i.createFromInputFallback = k("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", (function (e) { e._d = new Date(e._i + (e._useUTC ? " UTC" : "")) })), i.ISO_8601 = function () { }, i.RFC_2822 = function () { }; var Xn = k("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", (function () { var e = Gn.apply(null, arguments); return this.isValid() && e.isValid() ? e < this ? this : e : b() })), Jn = k("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", (function () { var e = Gn.apply(null, arguments); return this.isValid() && e.isValid() ? e > this ? this : e : b() })); function Qn(e, t) { var n, r; if (1 === t.length && a(t[0]) && (t = t[0]), !t.length) return Gn(); for (n = t[0], r = 1; r < t.length; ++r)t[r].isValid() && !t[r][e](n) || (n = t[r]); return n } function Zn() { var e = [].slice.call(arguments, 0); return Qn("isBefore", e) } function er() { var e = [].slice.call(arguments, 0); return Qn("isAfter", e) } var tr = function () { return Date.now ? Date.now() : +new Date }, nr = ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"]; function rr(e) { var t, n, r = !1; for (t in e) if (c(e, t) && (-1 === $e.call(nr, t) || null != e[t] && isNaN(e[t]))) return !1; for (n = 0; n < nr.length; ++n)if (e[nr[n]]) { if (r) return !1; parseFloat(e[nr[n]]) !== he(e[nr[n]]) && (r = !0) } return !0 } function ir() { return this._isValid } function or() { return Tr(NaN) } function ar(e) { var t = oe(e), n = t.year || 0, r = t.quarter || 0, i = t.month || 0, o = t.week || t.isoWeek || 0, a = t.day || 0, s = t.hour || 0, c = t.minute || 0, l = t.second || 0, u = t.millisecond || 0; this._isValid = rr(t), this._milliseconds = +u + 1e3 * l + 6e4 * c + 1e3 * s * 60 * 60, this._days = +a + 7 * o, this._months = +i + 3 * r + 12 * n, this._data = {}, this._locale = yn(), this._bubble() } function sr(e) { return e instanceof ar } function cr(e) { return e < 0 ? -1 * Math.round(-1 * e) : Math.round(e) } function lr(e, t, n) { var r, i = Math.min(e.length, t.length), o = Math.abs(e.length - t.length), a = 0; for (r = 0; r < i; r++)(n && e[r] !== t[r] || !n && he(e[r]) !== he(t[r])) && a++; return a + o } function ur(e, t) { F(e, 0, 0, (function () { var e = this.utcOffset(), n = "+"; return e < 0 && (e = -e, n = "-"), n + H(~~(e / 60), 2) + t + H(~~e % 60, 2) })) } ur("Z", ":"), ur("ZZ", ""), De("Z", ze), De("ZZ", ze), Re(["Z", "ZZ"], (function (e, t, n) { n._useUTC = !0, n._tzm = fr(ze, e) })); var hr = /([\+\-]|\d\d)/gi; function fr(e, t) { var n, r, i, o = (t || "").match(e); return null === o ? null : (n = o[o.length - 1] || [], r = (n + "").match(hr) || ["-", 0, 0], i = 60 * r[1] + he(r[2]), 0 === i ? 0 : "+" === r[0] ? i : -i) } function dr(e, t) { var n, r; return t._isUTC ? (n = t.clone(), r = (M(e) || f(e) ? e.valueOf() : Gn(e).valueOf()) - n.valueOf(), n._d.setTime(n._d.valueOf() + r), i.updateOffset(n, !1), n) : Gn(e).local() } function pr(e) { return -Math.round(e._d.getTimezoneOffset()) } function vr(e, t, n) { var r, o = this._offset || 0; if (!this.isValid()) return null != e ? this : NaN; if (null != e) { if ("string" === typeof e) { if (e = fr(ze, e), null === e) return this } else Math.abs(e) < 16 && !n && (e *= 60); return !this._isUTC && t && (r = pr(this)), this._offset = e, this._isUTC = !0, null != r && this.add(r, "m"), o !== e && (!t || this._changeInProgress ? Er(this, Tr(e - o, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, i.updateOffset(this, !0), this._changeInProgress = null)), this } return this._isUTC ? o : pr(this) } function mr(e, t) { return null != e ? ("string" !== typeof e && (e = -e), this.utcOffset(e, t), this) : -this.utcOffset() } function gr(e) { return this.utcOffset(0, e) } function yr(e) { return this._isUTC && (this.utcOffset(0, e), this._isUTC = !1, e && this.subtract(pr(this), "m")), this } function br() { if (null != this._tzm) this.utcOffset(this._tzm, !1, !0); else if ("string" === typeof this._i) { var e = fr(je, this._i); null != e ? this.utcOffset(e) : this.utcOffset(0, !0) } return this } function xr(e) { return !!this.isValid() && (e = e ? Gn(e).utcOffset() : 0, (this.utcOffset() - e) % 60 === 0) } function wr() { return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() } function _r() { if (!u(this._isDSTShifted)) return this._isDSTShifted; var e, t = {}; return _(t, this), t = qn(t), t._a ? (e = t._isUTC ? v(t._a) : Gn(t._a), this._isDSTShifted = this.isValid() && lr(t._a, e.toArray()) > 0) : this._isDSTShifted = !1, this._isDSTShifted } function Cr() { return !!this.isValid() && !this._isUTC } function Mr() { return !!this.isValid() && this._isUTC } function Or() { return !!this.isValid() && (this._isUTC && 0 === this._offset) } i.updateOffset = function () { }; var kr = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, Sr = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; function Tr(e, t) { var n, r, i, o = e, a = null; return sr(e) ? o = { ms: e._milliseconds, d: e._days, M: e._months } : h(e) || !isNaN(+e) ? (o = {}, t ? o[t] = +e : o.milliseconds = +e) : (a = kr.exec(e)) ? (n = "-" === a[1] ? -1 : 1, o = { y: 0, d: he(a[qe]) * n, h: he(a[Ue]) * n, m: he(a[Ke]) * n, s: he(a[Ge]) * n, ms: he(cr(1e3 * a[Xe])) * n }) : (a = Sr.exec(e)) ? (n = "-" === a[1] ? -1 : 1, o = { y: Ar(a[2], n), M: Ar(a[3], n), w: Ar(a[4], n), d: Ar(a[5], n), h: Ar(a[6], n), m: Ar(a[7], n), s: Ar(a[8], n) }) : null == o ? o = {} : "object" === typeof o && ("from" in o || "to" in o) && (i = jr(Gn(o.from), Gn(o.to)), o = {}, o.ms = i.milliseconds, o.M = i.months), r = new ar(o), sr(e) && c(e, "_locale") && (r._locale = e._locale), sr(e) && c(e, "_isValid") && (r._isValid = e._isValid), r } function Ar(e, t) { var n = e && parseFloat(e.replace(",", ".")); return (isNaN(n) ? 0 : n) * t } function Lr(e, t) { var n = {}; return n.months = t.month() - e.month() + 12 * (t.year() - e.year()), e.clone().add(n.months, "M").isAfter(t) && --n.months, n.milliseconds = +t - +e.clone().add(n.months, "M"), n } function jr(e, t) { var n; return e.isValid() && t.isValid() ? (t = dr(t, e), e.isBefore(t) ? n = Lr(e, t) : (n = Lr(t, e), n.milliseconds = -n.milliseconds, n.months = -n.months), n) : { milliseconds: 0, months: 0 } } function zr(e, t) { return function (n, r) { var i, o; return null === r || isNaN(+r) || (A(t, "moment()." + t + "(period, number) is deprecated. Please use moment()." + t + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), o = n, n = r, r = o), i = Tr(n, r), Er(this, i, e), this } } function Er(e, t, n, r) { var o = t._milliseconds, a = cr(t._days), s = cr(t._months); e.isValid() && (r = null == r || r, s && ut(e, de(e, "Month") + s * n), a && pe(e, "Date", de(e, "Date") + a * n), o && e._d.setTime(e._d.valueOf() + o * n), r && i.updateOffset(e, a || s)) } Tr.fn = ar.prototype, Tr.invalid = or; var Pr = zr(1, "add"), Dr = zr(-1, "subtract"); function Hr(e) { return "string" === typeof e || e instanceof String } function Vr(e) { return M(e) || f(e) || Hr(e) || h(e) || Nr(e) || Ir(e) || null === e || void 0 === e } function Ir(e) { var t, n, r = s(e) && !l(e), i = !1, o = ["years", "year", "y", "months", "month", "M", "days", "day", "d", "dates", "date", "D", "hours", "hour", "h", "minutes", "minute", "m", "seconds", "second", "s", "milliseconds", "millisecond", "ms"]; for (t = 0; t < o.length; t += 1)n = o[t], i = i || c(e, n); return r && i } function Nr(e) { var t = a(e), n = !1; return t && (n = 0 === e.filter((function (t) { return !h(t) && Hr(e) })).length), t && n } function Rr(e) { var t, n, r = s(e) && !l(e), i = !1, o = ["sameDay", "nextDay", "lastDay", "nextWeek", "lastWeek", "sameElse"]; for (t = 0; t < o.length; t += 1)n = o[t], i = i || c(e, n); return r && i } function Fr(e, t) { var n = e.diff(t, "days", !0); return n < -6 ? "sameElse" : n < -1 ? "lastWeek" : n < 0 ? "lastDay" : n < 1 ? "sameDay" : n < 2 ? "nextDay" : n < 7 ? "nextWeek" : "sameElse" } function Yr(e, t) { 1 === arguments.length && (arguments[0] ? Vr(arguments[0]) ? (e = arguments[0], t = void 0) : Rr(arguments[0]) && (t = arguments[0], e = void 0) : (e = void 0, t = void 0)); var n = e || Gn(), r = dr(n, this).startOf("day"), o = i.calendarFormat(this, r) || "sameElse", a = t && (L(t[o]) ? t[o].call(this, n) : t[o]); return this.format(a || this.localeData().calendar(o, this, Gn(n))) } function $r() { return new C(this) } function Br(e, t) { var n = M(e) ? e : Gn(e); return !(!this.isValid() || !n.isValid()) && (t = ie(t) || "millisecond", "millisecond" === t ? this.valueOf() > n.valueOf() : n.valueOf() < this.clone().startOf(t).valueOf()) } function Wr(e, t) { var n = M(e) ? e : Gn(e); return !(!this.isValid() || !n.isValid()) && (t = ie(t) || "millisecond", "millisecond" === t ? this.valueOf() < n.valueOf() : this.clone().endOf(t).valueOf() < n.valueOf()) } function qr(e, t, n, r) { var i = M(e) ? e : Gn(e), o = M(t) ? t : Gn(t); return !!(this.isValid() && i.isValid() && o.isValid()) && (r = r || "()", ("(" === r[0] ? this.isAfter(i, n) : !this.isBefore(i, n)) && (")" === r[1] ? this.isBefore(o, n) : !this.isAfter(o, n))) } function Ur(e, t) { var n, r = M(e) ? e : Gn(e); return !(!this.isValid() || !r.isValid()) && (t = ie(t) || "millisecond", "millisecond" === t ? this.valueOf() === r.valueOf() : (n = r.valueOf(), this.clone().startOf(t).valueOf() <= n && n <= this.clone().endOf(t).valueOf())) } function Kr(e, t) { return this.isSame(e, t) || this.isAfter(e, t) } function Gr(e, t) { return this.isSame(e, t) || this.isBefore(e, t) } function Xr(e, t, n) { var r, i, o; if (!this.isValid()) return NaN; if (r = dr(e, this), !r.isValid()) return NaN; switch (i = 6e4 * (r.utcOffset() - this.utcOffset()), t = ie(t), t) { case "year": o = Jr(this, r) / 12; break; case "month": o = Jr(this, r); break; case "quarter": o = Jr(this, r) / 3; break; case "second": o = (this - r) / 1e3; break; case "minute": o = (this - r) / 6e4; break; case "hour": o = (this - r) / 36e5; break; case "day": o = (this - r - i) / 864e5; break; case "week": o = (this - r - i) / 6048e5; break; default: o = this - r }return n ? o : ue(o) } function Jr(e, t) { if (e.date() < t.date()) return -Jr(t, e); var n, r, i = 12 * (t.year() - e.year()) + (t.month() - e.month()), o = e.clone().add(i, "months"); return t - o < 0 ? (n = e.clone().add(i - 1, "months"), r = (t - o) / (o - n)) : (n = e.clone().add(i + 1, "months"), r = (t - o) / (n - o)), -(i + r) || 0 } function Qr() { return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ") } function Zr(e) { if (!this.isValid()) return null; var t = !0 !== e, n = t ? this.clone().utc() : this; return n.year() < 0 || n.year() > 9999 ? B(n, t ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ") : L(Date.prototype.toISOString) ? t ? this.toDate().toISOString() : new Date(this.valueOf() + 60 * this.utcOffset() * 1e3).toISOString().replace("Z", B(n, "Z")) : B(n, t ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ") } function ei() { if (!this.isValid()) return "moment.invalid(/* " + this._i + " */)"; var e, t, n, r, i = "moment", o = ""; return this.isLocal() || (i = 0 === this.utcOffset() ? "moment.utc" : "moment.parseZone", o = "Z"), e = "[" + i + '("]', t = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY", n = "-MM-DD[T]HH:mm:ss.SSS", r = o + '[")]', this.format(e + t + n + r) } function ti(e) { e || (e = this.isUtc() ? i.defaultFormatUtc : i.defaultFormat); var t = B(this, e); return this.localeData().postformat(t) } function ni(e, t) { return this.isValid() && (M(e) && e.isValid() || Gn(e).isValid()) ? Tr({ to: this, from: e }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate() } function ri(e) { return this.from(Gn(), e) } function ii(e, t) { return this.isValid() && (M(e) && e.isValid() || Gn(e).isValid()) ? Tr({ from: this, to: e }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate() } function oi(e) { return this.to(Gn(), e) } function ai(e) { var t; return void 0 === e ? this._locale._abbr : (t = yn(e), null != t && (this._locale = t), this) } i.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", i.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]"; var si = k("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", (function (e) { return void 0 === e ? this.localeData() : this.locale(e) })); function ci() { return this._locale } var li = 1e3, ui = 60 * li, hi = 60 * ui, fi = 3506328 * hi; function di(e, t) { return (e % t + t) % t } function pi(e, t, n) { return e < 100 && e >= 0 ? new Date(e + 400, t, n) - fi : new Date(e, t, n).valueOf() } function vi(e, t, n) { return e < 100 && e >= 0 ? Date.UTC(e + 400, t, n) - fi : Date.UTC(e, t, n) } function mi(e) { var t, n; if (e = ie(e), void 0 === e || "millisecond" === e || !this.isValid()) return this; switch (n = this._isUTC ? vi : pi, e) { case "year": t = n(this.year(), 0, 1); break; case "quarter": t = n(this.year(), this.month() - this.month() % 3, 1); break; case "month": t = n(this.year(), this.month(), 1); break; case "week": t = n(this.year(), this.month(), this.date() - this.weekday()); break; case "isoWeek": t = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1)); break; case "day": case "date": t = n(this.year(), this.month(), this.date()); break; case "hour": t = this._d.valueOf(), t -= di(t + (this._isUTC ? 0 : this.utcOffset() * ui), hi); break; case "minute": t = this._d.valueOf(), t -= di(t, ui); break; case "second": t = this._d.valueOf(), t -= di(t, li); break }return this._d.setTime(t), i.updateOffset(this, !0), this } function gi(e) { var t, n; if (e = ie(e), void 0 === e || "millisecond" === e || !this.isValid()) return this; switch (n = this._isUTC ? vi : pi, e) { case "year": t = n(this.year() + 1, 0, 1) - 1; break; case "quarter": t = n(this.year(), this.month() - this.month() % 3 + 3, 1) - 1; break; case "month": t = n(this.year(), this.month() + 1, 1) - 1; break; case "week": t = n(this.year(), this.month(), this.date() - this.weekday() + 7) - 1; break; case "isoWeek": t = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1; break; case "day": case "date": t = n(this.year(), this.month(), this.date() + 1) - 1; break; case "hour": t = this._d.valueOf(), t += hi - di(t + (this._isUTC ? 0 : this.utcOffset() * ui), hi) - 1; break; case "minute": t = this._d.valueOf(), t += ui - di(t, ui) - 1; break; case "second": t = this._d.valueOf(), t += li - di(t, li) - 1; break }return this._d.setTime(t), i.updateOffset(this, !0), this } function yi() { return this._d.valueOf() - 6e4 * (this._offset || 0) } function bi() { return Math.floor(this.valueOf() / 1e3) } function xi() { return new Date(this.valueOf()) } function wi() { var e = this; return [e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second(), e.millisecond()] } function _i() { var e = this; return { years: e.year(), months: e.month(), date: e.date(), hours: e.hours(), minutes: e.minutes(), seconds: e.seconds(), milliseconds: e.milliseconds() } } function Ci() { return this.isValid() ? this.toISOString() : null } function Mi() { return y(this) } function Oi() { return p({}, g(this)) } function ki() { return g(this).overflow } function Si() { return { input: this._i, format: this._f, locale: this._locale, isUTC: this._isUTC, strict: this._strict } } function Ti(e, t) { var n, r, o, a = this._eras || yn("en")._eras; for (n = 0, r = a.length; n < r; ++n) { switch (typeof a[n].since) { case "string": o = i(a[n].since).startOf("day"), a[n].since = o.valueOf(); break }switch (typeof a[n].until) { case "undefined": a[n].until = 1 / 0; break; case "string": o = i(a[n].until).startOf("day").valueOf(), a[n].until = o.valueOf(); break } } return a } function Ai(e, t, n) { var r, i, o, a, s, c = this.eras(); for (e = e.toUpperCase(), r = 0, i = c.length; r < i; ++r)if (o = c[r].name.toUpperCase(), a = c[r].abbr.toUpperCase(), s = c[r].narrow.toUpperCase(), n) switch (t) { case "N": case "NN": case "NNN": if (a === e) return c[r]; break; case "NNNN": if (o === e) return c[r]; break; case "NNNNN": if (s === e) return c[r]; break } else if ([o, a, s].indexOf(e) >= 0) return c[r] } function Li(e, t) { var n = e.since <= e.until ? 1 : -1; return void 0 === t ? i(e.since).year() : i(e.since).year() + (t - e.offset) * n } function ji() { var e, t, n, r = this.localeData().eras(); for (e = 0, t = r.length; e < t; ++e) { if (n = this.clone().startOf("day").valueOf(), r[e].since <= n && n <= r[e].until) return r[e].name; if (r[e].until <= n && n <= r[e].since) return r[e].name } return "" } function zi() { var e, t, n, r = this.localeData().eras(); for (e = 0, t = r.length; e < t; ++e) { if (n = this.clone().startOf("day").valueOf(), r[e].since <= n && n <= r[e].until) return r[e].narrow; if (r[e].until <= n && n <= r[e].since) return r[e].narrow } return "" } function Ei() { var e, t, n, r = this.localeData().eras(); for (e = 0, t = r.length; e < t; ++e) { if (n = this.clone().startOf("day").valueOf(), r[e].since <= n && n <= r[e].until) return r[e].abbr; if (r[e].until <= n && n <= r[e].since) return r[e].abbr } return "" } function Pi() { var e, t, n, r, o = this.localeData().eras(); for (e = 0, t = o.length; e < t; ++e)if (n = o[e].since <= o[e].until ? 1 : -1, r = this.clone().startOf("day").valueOf(), o[e].since <= r && r <= o[e].until || o[e].until <= r && r <= o[e].since) return (this.year() - i(o[e].since).year()) * n + o[e].offset; return this.year() } function Di(e) { return c(this, "_erasNameRegex") || Yi.call(this), e ? this._erasNameRegex : this._erasRegex } function Hi(e) { return c(this, "_erasAbbrRegex") || Yi.call(this), e ? this._erasAbbrRegex : this._erasRegex } function Vi(e) { return c(this, "_erasNarrowRegex") || Yi.call(this), e ? this._erasNarrowRegex : this._erasRegex } function Ii(e, t) { return t.erasAbbrRegex(e) } function Ni(e, t) { return t.erasNameRegex(e) } function Ri(e, t) { return t.erasNarrowRegex(e) } function Fi(e, t) { return t._eraYearOrdinalRegex || Ae } function Yi() { var e, t, n = [], r = [], i = [], o = [], a = this.eras(); for (e = 0, t = a.length; e < t; ++e)r.push(Ie(a[e].name)), n.push(Ie(a[e].abbr)), i.push(Ie(a[e].narrow)), o.push(Ie(a[e].name)), o.push(Ie(a[e].abbr)), o.push(Ie(a[e].narrow)); this._erasRegex = new RegExp("^(" + o.join("|") + ")", "i"), this._erasNameRegex = new RegExp("^(" + r.join("|") + ")", "i"), this._erasAbbrRegex = new RegExp("^(" + n.join("|") + ")", "i"), this._erasNarrowRegex = new RegExp("^(" + i.join("|") + ")", "i") } function $i(e, t) { F(0, [e, e.length], 0, t) } function Bi(e) { return Xi.call(this, e, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy) } function Wi(e) { return Xi.call(this, e, this.isoWeek(), this.isoWeekday(), 1, 4) } function qi() { return Mt(this.year(), 1, 4) } function Ui() { return Mt(this.isoWeekYear(), 1, 4) } function Ki() { var e = this.localeData()._week; return Mt(this.year(), e.dow, e.doy) } function Gi() { var e = this.localeData()._week; return Mt(this.weekYear(), e.dow, e.doy) } function Xi(e, t, n, r, i) { var o; return null == e ? Ct(this, r, i).year : (o = Mt(e, r, i), t > o && (t = o), Ji.call(this, e, t, n, r, i)) } function Ji(e, t, n, r, i) { var o = _t(e, t, n, r, i), a = xt(o.year, 0, o.dayOfYear); return this.year(a.getUTCFullYear()), this.month(a.getUTCMonth()), this.date(a.getUTCDate()), this } function Qi(e) { return null == e ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e - 1) + this.month() % 3) } F("N", 0, 0, "eraAbbr"), F("NN", 0, 0, "eraAbbr"), F("NNN", 0, 0, "eraAbbr"), F("NNNN", 0, 0, "eraName"), F("NNNNN", 0, 0, "eraNarrow"), F("y", ["y", 1], "yo", "eraYear"), F("y", ["yy", 2], 0, "eraYear"), F("y", ["yyy", 3], 0, "eraYear"), F("y", ["yyyy", 4], 0, "eraYear"), De("N", Ii), De("NN", Ii), De("NNN", Ii), De("NNNN", Ni), De("NNNNN", Ri), Re(["N", "NN", "NNN", "NNNN", "NNNNN"], (function (e, t, n, r) { var i = n._locale.erasParse(e, r, n._strict); i ? g(n).era = i : g(n).invalidEra = e })), De("y", Ae), De("yy", Ae), De("yyy", Ae), De("yyyy", Ae), De("yo", Fi), Re(["y", "yy", "yyy", "yyyy"], Be), Re(["yo"], (function (e, t, n, r) { var i; n._locale._eraYearOrdinalRegex && (i = e.match(n._locale._eraYearOrdinalRegex)), n._locale.eraYearOrdinalParse ? t[Be] = n._locale.eraYearOrdinalParse(e, i) : t[Be] = parseInt(e, 10) })), F(0, ["gg", 2], 0, (function () { return this.weekYear() % 100 })), F(0, ["GG", 2], 0, (function () { return this.isoWeekYear() % 100 })), $i("gggg", "weekYear"), $i("ggggg", "weekYear"), $i("GGGG", "isoWeekYear"), $i("GGGGG", "isoWeekYear"), re("weekYear", "gg"), re("isoWeekYear", "GG"), se("weekYear", 1), se("isoWeekYear", 1), De("G", Le), De("g", Le), De("GG", Ce, be), De("gg", Ce, be), De("GGGG", Se, we), De("gggg", Se, we), De("GGGGG", Te, _e), De("ggggg", Te, _e), Fe(["gggg", "ggggg", "GGGG", "GGGGG"], (function (e, t, n, r) { t[r.substr(0, 2)] = he(e) })), Fe(["gg", "GG"], (function (e, t, n, r) { t[r] = i.parseTwoDigitYear(e) })), F("Q", 0, "Qo", "quarter"), re("quarter", "Q"), se("quarter", 7), De("Q", ye), Re("Q", (function (e, t) { t[We] = 3 * (he(e) - 1) })), F("D", ["DD", 2], "Do", "date"), re("date", "D"), se("date", 9), De("D", Ce), De("DD", Ce, be), De("Do", (function (e, t) { return e ? t._dayOfMonthOrdinalParse || t._ordinalParse : t._dayOfMonthOrdinalParseLenient })), Re(["D", "DD"], qe), Re("Do", (function (e, t) { t[qe] = he(e.match(Ce)[0]) })); var Zi = fe("Date", !0); function eo(e) { var t = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1; return null == e ? t : this.add(e - t, "d") } F("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), re("dayOfYear", "DDD"), se("dayOfYear", 4), De("DDD", ke), De("DDDD", xe), Re(["DDD", "DDDD"], (function (e, t, n) { n._dayOfYear = he(e) })), F("m", ["mm", 2], 0, "minute"), re("minute", "m"), se("minute", 14), De("m", Ce), De("mm", Ce, be), Re(["m", "mm"], Ke); var to = fe("Minutes", !1); F("s", ["ss", 2], 0, "second"), re("second", "s"), se("second", 15), De("s", Ce), De("ss", Ce, be), Re(["s", "ss"], Ge); var no, ro, io = fe("Seconds", !1); for (F("S", 0, 0, (function () { return ~~(this.millisecond() / 100) })), F(0, ["SS", 2], 0, (function () { return ~~(this.millisecond() / 10) })), F(0, ["SSS", 3], 0, "millisecond"), F(0, ["SSSS", 4], 0, (function () { return 10 * this.millisecond() })), F(0, ["SSSSS", 5], 0, (function () { return 100 * this.millisecond() })), F(0, ["SSSSSS", 6], 0, (function () { return 1e3 * this.millisecond() })), F(0, ["SSSSSSS", 7], 0, (function () { return 1e4 * this.millisecond() })), F(0, ["SSSSSSSS", 8], 0, (function () { return 1e5 * this.millisecond() })), F(0, ["SSSSSSSSS", 9], 0, (function () { return 1e6 * this.millisecond() })), re("millisecond", "ms"), se("millisecond", 16), De("S", ke, ye), De("SS", ke, be), De("SSS", ke, xe), no = "SSSS"; no.length <= 9; no += "S")De(no, Ae); function oo(e, t) { t[Xe] = he(1e3 * ("0." + e)) } for (no = "S"; no.length <= 9; no += "S")Re(no, oo); function ao() { return this._isUTC ? "UTC" : "" } function so() { return this._isUTC ? "Coordinated Universal Time" : "" } ro = fe("Milliseconds", !1), F("z", 0, 0, "zoneAbbr"), F("zz", 0, 0, "zoneName"); var co = C.prototype; function lo(e) { return Gn(1e3 * e) } function uo() { return Gn.apply(null, arguments).parseZone() } function ho(e) { return e } co.add = Pr, co.calendar = Yr, co.clone = $r, co.diff = Xr, co.endOf = gi, co.format = ti, co.from = ni, co.fromNow = ri, co.to = ii, co.toNow = oi, co.get = ve, co.invalidAt = ki, co.isAfter = Br, co.isBefore = Wr, co.isBetween = qr, co.isSame = Ur, co.isSameOrAfter = Kr, co.isSameOrBefore = Gr, co.isValid = Mi, co.lang = si, co.locale = ai, co.localeData = ci, co.max = Jn, co.min = Xn, co.parsingFlags = Oi, co.set = me, co.startOf = mi, co.subtract = Dr, co.toArray = wi, co.toObject = _i, co.toDate = xi, co.toISOString = Zr, co.inspect = ei, "undefined" !== typeof Symbol && null != Symbol.for && (co[Symbol.for("nodejs.util.inspect.custom")] = function () { return "Moment<" + this.format() + ">" }), co.toJSON = Ci, co.toString = Qr, co.unix = bi, co.valueOf = yi, co.creationData = Si, co.eraName = ji, co.eraNarrow = zi, co.eraAbbr = Ei, co.eraYear = Pi, co.year = gt, co.isLeapYear = yt, co.weekYear = Bi, co.isoWeekYear = Wi, co.quarter = co.quarters = Qi, co.month = ht, co.daysInMonth = ft, co.week = co.weeks = At, co.isoWeek = co.isoWeeks = Lt, co.weeksInYear = Ki, co.weeksInWeekYear = Gi, co.isoWeeksInYear = qi, co.isoWeeksInISOWeekYear = Ui, co.date = Zi, co.day = co.days = Wt, co.weekday = qt, co.isoWeekday = Ut, co.dayOfYear = eo, co.hour = co.hours = on, co.minute = co.minutes = to, co.second = co.seconds = io, co.millisecond = co.milliseconds = ro, co.utcOffset = vr, co.utc = gr, co.local = yr, co.parseZone = br, co.hasAlignedHourOffset = xr, co.isDST = wr, co.isLocal = Cr, co.isUtcOffset = Mr, co.isUtc = Or, co.isUTC = Or, co.zoneAbbr = ao, co.zoneName = so, co.dates = k("dates accessor is deprecated. Use date instead.", Zi), co.months = k("months accessor is deprecated. Use month instead", ht), co.years = k("years accessor is deprecated. Use year instead", gt), co.zone = k("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", mr), co.isDSTShifted = k("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", _r); var fo = E.prototype; function po(e, t, n, r) { var i = yn(), o = v().set(r, t); return i[n](o, e) } function vo(e, t, n) { if (h(e) && (t = e, e = void 0), e = e || "", null != t) return po(e, t, n, "month"); var r, i = []; for (r = 0; r < 12; r++)i[r] = po(e, r, n, "month"); return i } function mo(e, t, n, r) { "boolean" === typeof e ? (h(t) && (n = t, t = void 0), t = t || "") : (t = e, n = t, e = !1, h(t) && (n = t, t = void 0), t = t || ""); var i, o = yn(), a = e ? o._week.dow : 0, s = []; if (null != n) return po(t, (n + a) % 7, r, "day"); for (i = 0; i < 7; i++)s[i] = po(t, (i + a) % 7, r, "day"); return s } function go(e, t) { return vo(e, t, "months") } function yo(e, t) { return vo(e, t, "monthsShort") } function bo(e, t, n) { return mo(e, t, n, "weekdays") } function xo(e, t, n) { return mo(e, t, n, "weekdaysShort") } function wo(e, t, n) { return mo(e, t, n, "weekdaysMin") } fo.calendar = D, fo.longDateFormat = U, fo.invalidDate = G, fo.ordinal = Q, fo.preparse = ho, fo.postformat = ho, fo.relativeTime = ee, fo.pastFuture = te, fo.set = j, fo.eras = Ti, fo.erasParse = Ai, fo.erasConvertYear = Li, fo.erasAbbrRegex = Hi, fo.erasNameRegex = Di, fo.erasNarrowRegex = Vi, fo.months = at, fo.monthsShort = st, fo.monthsParse = lt, fo.monthsRegex = pt, fo.monthsShortRegex = dt, fo.week = Ot, fo.firstDayOfYear = Tt, fo.firstDayOfWeek = St, fo.weekdays = Rt, fo.weekdaysMin = Yt, fo.weekdaysShort = Ft, fo.weekdaysParse = Bt, fo.weekdaysRegex = Kt, fo.weekdaysShortRegex = Gt, fo.weekdaysMinRegex = Xt, fo.isPM = nn, fo.meridiem = an, vn("en", { eras: [{ since: "0001-01-01", until: 1 / 0, offset: 1, name: "Anno Domini", narrow: "AD", abbr: "AD" }, { since: "0000-12-31", until: -1 / 0, offset: 1, name: "Before Christ", narrow: "BC", abbr: "BC" }], dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal: function (e) { var t = e % 10, n = 1 === he(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th"; return e + n } }), i.lang = k("moment.lang is deprecated. Use moment.locale instead.", vn), i.langData = k("moment.langData is deprecated. Use moment.localeData instead.", yn); var _o = Math.abs; function Co() { var e = this._data; return this._milliseconds = _o(this._milliseconds), this._days = _o(this._days), this._months = _o(this._months), e.milliseconds = _o(e.milliseconds), e.seconds = _o(e.seconds), e.minutes = _o(e.minutes), e.hours = _o(e.hours), e.months = _o(e.months), e.years = _o(e.years), this } function Mo(e, t, n, r) { var i = Tr(t, n); return e._milliseconds += r * i._milliseconds, e._days += r * i._days, e._months += r * i._months, e._bubble() } function Oo(e, t) { return Mo(this, e, t, 1) } function ko(e, t) { return Mo(this, e, t, -1) } function So(e) { return e < 0 ? Math.floor(e) : Math.ceil(e) } function To() { var e, t, n, r, i, o = this._milliseconds, a = this._days, s = this._months, c = this._data; return o >= 0 && a >= 0 && s >= 0 || o <= 0 && a <= 0 && s <= 0 || (o += 864e5 * So(Lo(s) + a), a = 0, s = 0), c.milliseconds = o % 1e3, e = ue(o / 1e3), c.seconds = e % 60, t = ue(e / 60), c.minutes = t % 60, n = ue(t / 60), c.hours = n % 24, a += ue(n / 24), i = ue(Ao(a)), s += i, a -= So(Lo(i)), r = ue(s / 12), s %= 12, c.days = a, c.months = s, c.years = r, this } function Ao(e) { return 4800 * e / 146097 } function Lo(e) { return 146097 * e / 4800 } function jo(e) { if (!this.isValid()) return NaN; var t, n, r = this._milliseconds; if (e = ie(e), "month" === e || "quarter" === e || "year" === e) switch (t = this._days + r / 864e5, n = this._months + Ao(t), e) { case "month": return n; case "quarter": return n / 3; case "year": return n / 12 } else switch (t = this._days + Math.round(Lo(this._months)), e) { case "week": return t / 7 + r / 6048e5; case "day": return t + r / 864e5; case "hour": return 24 * t + r / 36e5; case "minute": return 1440 * t + r / 6e4; case "second": return 86400 * t + r / 1e3; case "millisecond": return Math.floor(864e5 * t) + r; default: throw new Error("Unknown unit " + e) } } function zo() { return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * he(this._months / 12) : NaN } function Eo(e) { return function () { return this.as(e) } } var Po = Eo("ms"), Do = Eo("s"), Ho = Eo("m"), Vo = Eo("h"), Io = Eo("d"), No = Eo("w"), Ro = Eo("M"), Fo = Eo("Q"), Yo = Eo("y"); function $o() { return Tr(this) } function Bo(e) { return e = ie(e), this.isValid() ? this[e + "s"]() : NaN } function Wo(e) { return function () { return this.isValid() ? this._data[e] : NaN } } var qo = Wo("milliseconds"), Uo = Wo("seconds"), Ko = Wo("minutes"), Go = Wo("hours"), Xo = Wo("days"), Jo = Wo("months"), Qo = Wo("years"); function Zo() { return ue(this.days() / 7) } var ea = Math.round, ta = { ss: 44, s: 45, m: 45, h: 22, d: 26, w: null, M: 11 }; function na(e, t, n, r, i) { return i.relativeTime(t || 1, !!n, e, r) } function ra(e, t, n, r) { var i = Tr(e).abs(), o = ea(i.as("s")), a = ea(i.as("m")), s = ea(i.as("h")), c = ea(i.as("d")), l = ea(i.as("M")), u = ea(i.as("w")), h = ea(i.as("y")), f = o <= n.ss && ["s", o] || o < n.s && ["ss", o] || a <= 1 && ["m"] || a < n.m && ["mm", a] || s <= 1 && ["h"] || s < n.h && ["hh", s] || c <= 1 && ["d"] || c < n.d && ["dd", c]; return null != n.w && (f = f || u <= 1 && ["w"] || u < n.w && ["ww", u]), f = f || l <= 1 && ["M"] || l < n.M && ["MM", l] || h <= 1 && ["y"] || ["yy", h], f[2] = t, f[3] = +e > 0, f[4] = r, na.apply(null, f) } function ia(e) { return void 0 === e ? ea : "function" === typeof e && (ea = e, !0) } function oa(e, t) { return void 0 !== ta[e] && (void 0 === t ? ta[e] : (ta[e] = t, "s" === e && (ta.ss = t - 1), !0)) } function aa(e, t) { if (!this.isValid()) return this.localeData().invalidDate(); var n, r, i = !1, o = ta; return "object" === typeof e && (t = e, e = !1), "boolean" === typeof e && (i = e), "object" === typeof t && (o = Object.assign({}, ta, t), null != t.s && null == t.ss && (o.ss = t.s - 1)), n = this.localeData(), r = ra(this, !i, o, n), i && (r = n.pastFuture(+this, r)), n.postformat(r) } var sa = Math.abs; function ca(e) { return (e > 0) - (e < 0) || +e } function la() { if (!this.isValid()) return this.localeData().invalidDate(); var e, t, n, r, i, o, a, s, c = sa(this._milliseconds) / 1e3, l = sa(this._days), u = sa(this._months), h = this.asSeconds(); return h ? (e = ue(c / 60), t = ue(e / 60), c %= 60, e %= 60, n = ue(u / 12), u %= 12, r = c ? c.toFixed(3).replace(/\.?0+$/, "") : "", i = h < 0 ? "-" : "", o = ca(this._months) !== ca(h) ? "-" : "", a = ca(this._days) !== ca(h) ? "-" : "", s = ca(this._milliseconds) !== ca(h) ? "-" : "", i + "P" + (n ? o + n + "Y" : "") + (u ? o + u + "M" : "") + (l ? a + l + "D" : "") + (t || e || c ? "T" : "") + (t ? s + t + "H" : "") + (e ? s + e + "M" : "") + (c ? s + r + "S" : "")) : "P0D" } var ua = ar.prototype; return ua.isValid = ir, ua.abs = Co, ua.add = Oo, ua.subtract = ko, ua.as = jo, ua.asMilliseconds = Po, ua.asSeconds = Do, ua.asMinutes = Ho, ua.asHours = Vo, ua.asDays = Io, ua.asWeeks = No, ua.asMonths = Ro, ua.asQuarters = Fo, ua.asYears = Yo, ua.valueOf = zo, ua._bubble = To, ua.clone = $o, ua.get = Bo, ua.milliseconds = qo, ua.seconds = Uo, ua.minutes = Ko, ua.hours = Go, ua.days = Xo, ua.weeks = Zo, ua.months = Jo, ua.years = Qo, ua.humanize = aa, ua.toISOString = la, ua.toString = la, ua.toJSON = la, ua.locale = ai, ua.localeData = ci, ua.toIsoString = k("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", la), ua.lang = si, F("X", 0, 0, "unix"), F("x", 0, 0, "valueOf"), De("x", Le), De("X", Ee), Re("X", (function (e, t, n) { n._d = new Date(1e3 * parseFloat(e)) })), Re("x", (function (e, t, n) { n._d = new Date(he(e)) })),
+                    //! moment.js
+                    i.version = "2.29.1", o(Gn), i.fn = co, i.min = Zn, i.max = er, i.now = tr, i.utc = v, i.unix = lo, i.months = go, i.isDate = f, i.locale = vn, i.invalid = b, i.duration = Tr, i.isMoment = M, i.weekdays = bo, i.parseZone = uo, i.localeData = yn, i.isDuration = sr, i.monthsShort = yo, i.weekdaysMin = wo, i.defineLocale = mn, i.updateLocale = gn, i.locales = bn, i.weekdaysShort = xo, i.normalizeUnits = ie, i.relativeTimeRounding = ia, i.relativeTimeThreshold = oa, i.calendarFormat = Fr, i.prototype = co, i.HTML5_FMT = { DATETIME_LOCAL: "YYYY-MM-DDTHH:mm", DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss", DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS", DATE: "YYYY-MM-DD", TIME: "HH:mm", TIME_SECONDS: "HH:mm:ss", TIME_MS: "HH:mm:ss.SSS", WEEK: "GGGG-[W]WW", MONTH: "YYYY-MM" }, i
+            }))
+        }).call(this, n("62e4")(e))
+    }, c1f9: function (e, t, n) { var r = n("23e7"), i = n("2266"), o = n("8418"); r({ target: "Object", stat: !0 }, { fromEntries: function (e) { var t = {}; return i(e, (function (e, n) { o(t, e, n) }), { AS_ENTRIES: !0 }), t } }) }, c20d: function (e, t, n) { var r = n("da84"), i = n("577e"), o = n("58a8").trim, a = n("5899"), s = r.parseInt, c = /^[+-]?0[Xx]/, l = 8 !== s(a + "08") || 22 !== s(a + "0x16"); e.exports = l ? function (e, t) { var n = o(i(e)); return s(n, t >>> 0 || (c.test(n) ? 16 : 10)) } : s }, c240: function (e, t) { function n() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") } e.exports = n, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, c280: function (e, t, n) { }, c2b3: function (e, t, n) { "use strict"; function r(e, t) { if (e === t) return !0; if (!e || !t) return !1; var n = e.length; if (t.length !== n) return !1; for (var r = 0; r < n; r++)if (e[r] !== t[r]) return !1; return !0 } e.exports = r }, c2b6: function (e, t, n) { var r = n("f8af"), i = n("5d89"), o = n("6f6c"), a = n("a2db"), s = n("c8fe"), c = "[object Boolean]", l = "[object Date]", u = "[object Map]", h = "[object Number]", f = "[object RegExp]", d = "[object Set]", p = "[object String]", v = "[object Symbol]", m = "[object ArrayBuffer]", g = "[object DataView]", y = "[object Float32Array]", b = "[object Float64Array]", x = "[object Int8Array]", w = "[object Int16Array]", _ = "[object Int32Array]", C = "[object Uint8Array]", M = "[object Uint8ClampedArray]", O = "[object Uint16Array]", k = "[object Uint32Array]"; function S(e, t, n) { var S = e.constructor; switch (t) { case m: return r(e); case c: case l: return new S(+e); case g: return i(e, n); case y: case b: case x: case w: case _: case C: case M: case O: case k: return s(e, n); case u: return new S; case h: case p: return new S(e); case f: return o(e); case d: return new S; case v: return a(e) } } e.exports = S }, c2ca: function (e, t, n) { }, c321: function (e, t, n) { "use strict"; var r = n("4d91"), i = n("fc25"), o = n("9cba"), a = { functional: !0, inject: { configProvider: { default: function () { return o["a"] } } }, props: { componentName: r["a"].string }, render: function (e, t) { var n = arguments[0], r = t.props, o = t.injections; function a(e) { var t = o.configProvider.getPrefixCls, r = t("empty"); switch (e) { case "Table": case "List": return n(i["a"], { attrs: { image: i["a"].PRESENTED_IMAGE_SIMPLE } }); case "Select": case "TreeSelect": case "Cascader": case "Transfer": case "Mentions": return n(i["a"], { attrs: { image: i["a"].PRESENTED_IMAGE_SIMPLE }, class: r + "-small" }); default: return n(i["a"]) } } return a(r.componentName) } }; function s(e, t) { return e(a, { attrs: { componentName: t } }) } t["a"] = s }, c35a: function (e, t, n) { var r = n("23e7"), i = n("7e12"); r({ target: "Number", stat: !0, forced: Number.parseFloat != i }, { parseFloat: i }) }, c3fc: function (e, t, n) { var r = n("42a2"), i = n("1310"), o = "[object Set]"; function a(e) { return i(e) && r(e) == o } e.exports = a }, c423: function (e, t, n) { }, c430: function (e, t) { e.exports = !1 }, c449: function (e, t, n) { (function (t) { for (var r = n("6d08"), i = "undefined" === typeof window ? t : window, o = ["moz", "webkit"], a = "AnimationFrame", s = i["request" + a], c = i["cancel" + a] || i["cancelRequest" + a], l = 0; !s && l < o.length; l++)s = i[o[l] + "Request" + a], c = i[o[l] + "Cancel" + a] || i[o[l] + "CancelRequest" + a]; if (!s || !c) { var u = 0, h = 0, f = [], d = 1e3 / 60; s = function (e) { if (0 === f.length) { var t = r(), n = Math.max(0, d - (t - u)); u = n + t, setTimeout((function () { var e = f.slice(0); f.length = 0; for (var t = 0; t < e.length; t++)if (!e[t].cancelled) try { e[t].callback(u) } catch (n) { setTimeout((function () { throw n }), 0) } }), Math.round(n)) } return f.push({ handle: ++h, callback: e, cancelled: !1 }), h }, c = function (e) { for (var t = 0; t < f.length; t++)f[t].handle === e && (f[t].cancelled = !0) } } e.exports = function (e) { return s.call(i, e) }, e.exports.cancel = function () { c.apply(i, arguments) }, e.exports.polyfill = function (e) { e || (e = i), e.requestAnimationFrame = s, e.cancelAnimationFrame = c } }).call(this, n("c8ba")) }, c4b2: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t["default"] = { items_per_page: "鏉�/椤�", jump_to: "璺宠嚦", jump_to_confirm: "纭畾", page: "椤�", prev_page: "涓婁竴椤�", next_page: "涓嬩竴椤�", prev_5: "鍚戝墠 5 椤�", next_5: "鍚戝悗 5 椤�", prev_3: "鍚戝墠 3 椤�", next_3: "鍚戝悗 3 椤�" } }, c4c1: function (e, t, n) { var r = n("77e9"); e.exports = function (e, t, n, i) { try { return i ? t(r(n)[0], n[1]) : t(n) } catch (a) { var o = e["return"]; throw void 0 !== o && r(o.call(e)), a } } }, c544: function (e, t, n) { "use strict"; var r = { transitionstart: { transition: "transitionstart", WebkitTransition: "webkitTransitionStart", MozTransition: "mozTransitionStart", OTransition: "oTransitionStart", msTransition: "MSTransitionStart" }, animationstart: { animation: "animationstart", WebkitAnimation: "webkitAnimationStart", MozAnimation: "mozAnimationStart", OAnimation: "oAnimationStart", msAnimation: "MSAnimationStart" } }, i = { transitionend: { transition: "transitionend", WebkitTransition: "webkitTransitionEnd", MozTransition: "mozTransitionEnd", OTransition: "oTransitionEnd", msTransition: "MSTransitionEnd" }, animationend: { animation: "animationend", WebkitAnimation: "webkitAnimationEnd", MozAnimation: "mozAnimationEnd", OAnimation: "oAnimationEnd", msAnimation: "MSAnimationEnd" } }, o = [], a = []; function s() { var e = document.createElement("div"), t = e.style; function n(e, n) { for (var r in e) if (e.hasOwnProperty(r)) { var i = e[r]; for (var o in i) if (o in t) { n.push(i[o]); break } } } "AnimationEvent" in window || (delete r.animationstart.animation, delete i.animationend.animation), "TransitionEvent" in window || (delete r.transitionstart.transition, delete i.transitionend.transition), n(r, o), n(i, a) } function c(e, t, n) { e.addEventListener(t, n, !1) } function l(e, t, n) { e.removeEventListener(t, n, !1) } "undefined" !== typeof window && "undefined" !== typeof document && s(); var u = { startEvents: o, addStartEventListener: function (e, t) { 0 !== o.length ? o.forEach((function (n) { c(e, n, t) })) : window.setTimeout(t, 0) }, removeStartEventListener: function (e, t) { 0 !== o.length && o.forEach((function (n) { l(e, n, t) })) }, endEvents: a, addEndEventListener: function (e, t) { 0 !== a.length ? a.forEach((function (n) { c(e, n, t) })) : window.setTimeout(t, 0) }, removeEndEventListener: function (e, t) { 0 !== a.length && a.forEach((function (n) { l(e, n, t) })) } }; t["a"] = u }, c584: function (e, t) { function n(e, t) { return e.has(t) } e.exports = n }, c5d0: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("857a"), o = n("af03"); r({ target: "String", proto: !0, forced: o("italics") }, { italics: function () { return i(this, "i", "", "") } }) }, c68a: function (e, t, n) { "use strict"; n("b2a3"), n("a1ff"), n("06f4"), n("5783"), n("ee00"), n("9d5c"), n("7f6b"), n("68c7") }, c6b6: function (e, t) { var n = {}.toString; e.exports = function (e) { return n.call(e).slice(8, -1) } }, c6cd: function (e, t, n) { var r = n("da84"), i = n("ce4e"), o = "__core-js_shared__", a = r[o] || i(o, {}); e.exports = a }, c6cf: function (e, t, n) { var r = n("4d8c"), i = n("2286"), o = n("c1c9"); function a(e) { return o(i(e, void 0, r), e + "") } e.exports = a }, c740: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("b727").findIndex, o = n("44d2"), a = "findIndex", s = !0; a in [] && Array(1)[a]((function () { s = !1 })), r({ target: "Array", proto: !0, forced: s }, { findIndex: function (e) { return i(this, e, arguments.length > 1 ? arguments[1] : void 0) } }), o(a) }, c746: function (e, t, n) { }, c760: function (e, t, n) { var r = n("23e7"); r({ target: "Reflect", stat: !0 }, { has: function (e, t) { return t in e } }) }, c7c8: function (e, t, n) { }, c7cd: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("857a"), o = n("af03"); r({ target: "String", proto: !0, forced: o("fixed") }, { fixed: function () { return i(this, "tt", "", "") } }) }, c832: function (e, t, n) { (function (t) { var n = "Expected a function", r = "__lodash_hash_undefined__", i = 1 / 0, o = "[object Function]", a = "[object GeneratorFunction]", s = "[object Symbol]", c = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, l = /^\w*$/, u = /^\./, h = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, f = /[\\^$.*+?()[\]{}|]/g, d = /\\(\\)?/g, p = /^\[object .+?Constructor\]$/, v = "object" == typeof t && t && t.Object === Object && t, m = "object" == typeof self && self && self.Object === Object && self, g = v || m || Function("return this")(); function y(e, t) { return null == e ? void 0 : e[t] } function b(e) { var t = !1; if (null != e && "function" != typeof e.toString) try { t = !!(e + "") } catch (n) { } return t } var x = Array.prototype, w = Function.prototype, _ = Object.prototype, C = g["__core-js_shared__"], M = function () { var e = /[^.]+$/.exec(C && C.keys && C.keys.IE_PROTO || ""); return e ? "Symbol(src)_1." + e : "" }(), O = w.toString, k = _.hasOwnProperty, S = _.toString, T = RegExp("^" + O.call(k).replace(f, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), A = g.Symbol, L = x.splice, j = oe(g, "Map"), z = oe(Object, "create"), E = A ? A.prototype : void 0, P = E ? E.toString : void 0; function D(e) { var t = -1, n = e ? e.length : 0; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } function H() { this.__data__ = z ? z(null) : {} } function V(e) { return this.has(e) && delete this.__data__[e] } function I(e) { var t = this.__data__; if (z) { var n = t[e]; return n === r ? void 0 : n } return k.call(t, e) ? t[e] : void 0 } function N(e) { var t = this.__data__; return z ? void 0 !== t[e] : k.call(t, e) } function R(e, t) { var n = this.__data__; return n[e] = z && void 0 === t ? r : t, this } function F(e) { var t = -1, n = e ? e.length : 0; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } function Y() { this.__data__ = [] } function $(e) { var t = this.__data__, n = Z(t, e); if (n < 0) return !1; var r = t.length - 1; return n == r ? t.pop() : L.call(t, n, 1), !0 } function B(e) { var t = this.__data__, n = Z(t, e); return n < 0 ? void 0 : t[n][1] } function W(e) { return Z(this.__data__, e) > -1 } function q(e, t) { var n = this.__data__, r = Z(n, e); return r < 0 ? n.push([e, t]) : n[r][1] = t, this } function U(e) { var t = -1, n = e ? e.length : 0; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } function K() { this.__data__ = { hash: new D, map: new (j || F), string: new D } } function G(e) { return ie(this, e)["delete"](e) } function X(e) { return ie(this, e).get(e) } function J(e) { return ie(this, e).has(e) } function Q(e, t) { return ie(this, e).set(e, t), this } function Z(e, t) { var n = e.length; while (n--) if (de(e[n][0], t)) return n; return -1 } function ee(e, t) { t = ae(t, e) ? [t] : re(t); var n = 0, r = t.length; while (null != e && n < r) e = e[ue(t[n++])]; return n && n == r ? e : void 0 } function te(e) { if (!me(e) || ce(e)) return !1; var t = ve(e) || b(e) ? T : p; return t.test(he(e)) } function ne(e) { if ("string" == typeof e) return e; if (ye(e)) return P ? P.call(e) : ""; var t = e + ""; return "0" == t && 1 / e == -i ? "-0" : t } function re(e) { return pe(e) ? e : le(e) } function ie(e, t) { var n = e.__data__; return se(t) ? n["string" == typeof t ? "string" : "hash"] : n.map } function oe(e, t) { var n = y(e, t); return te(n) ? n : void 0 } function ae(e, t) { if (pe(e)) return !1; var n = typeof e; return !("number" != n && "symbol" != n && "boolean" != n && null != e && !ye(e)) || (l.test(e) || !c.test(e) || null != t && e in Object(t)) } function se(e) { var t = typeof e; return "string" == t || "number" == t || "symbol" == t || "boolean" == t ? "__proto__" !== e : null === e } function ce(e) { return !!M && M in e } D.prototype.clear = H, D.prototype["delete"] = V, D.prototype.get = I, D.prototype.has = N, D.prototype.set = R, F.prototype.clear = Y, F.prototype["delete"] = $, F.prototype.get = B, F.prototype.has = W, F.prototype.set = q, U.prototype.clear = K, U.prototype["delete"] = G, U.prototype.get = X, U.prototype.has = J, U.prototype.set = Q; var le = fe((function (e) { e = be(e); var t = []; return u.test(e) && t.push(""), e.replace(h, (function (e, n, r, i) { t.push(r ? i.replace(d, "$1") : n || e) })), t })); function ue(e) { if ("string" == typeof e || ye(e)) return e; var t = e + ""; return "0" == t && 1 / e == -i ? "-0" : t } function he(e) { if (null != e) { try { return O.call(e) } catch (t) { } try { return e + "" } catch (t) { } } return "" } function fe(e, t) { if ("function" != typeof e || t && "function" != typeof t) throw new TypeError(n); var r = function () { var n = arguments, i = t ? t.apply(this, n) : n[0], o = r.cache; if (o.has(i)) return o.get(i); var a = e.apply(this, n); return r.cache = o.set(i, a), a }; return r.cache = new (fe.Cache || U), r } function de(e, t) { return e === t || e !== e && t !== t } fe.Cache = U; var pe = Array.isArray; function ve(e) { var t = me(e) ? S.call(e) : ""; return t == o || t == a } function me(e) { var t = typeof e; return !!e && ("object" == t || "function" == t) } function ge(e) { return !!e && "object" == typeof e } function ye(e) { return "symbol" == typeof e || ge(e) && S.call(e) == s } function be(e) { return null == e ? "" : ne(e) } function xe(e, t, n) { var r = null == e ? void 0 : ee(e, t); return void 0 === r ? n : r } e.exports = xe }).call(this, n("c8ba")) }, c869: function (e, t, n) { var r = n("0b07"), i = n("2b3e"), o = r(i, "Set"); e.exports = o }, c87c: function (e, t) { var n = Object.prototype, r = n.hasOwnProperty; function i(e) { var t = e.length, n = new e.constructor(t); return t && "string" == typeof e[0] && r.call(e, "index") && (n.index = e.index, n.input = e.input), n } e.exports = i }, c8ba: function (e, t) { var n; n = function () { return this }(); try { n = n || new Function("return this")() } catch (r) { "object" === typeof window && (n = window) } e.exports = n }, c8c6: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return o })); var r = n("2c80"), i = n.n(r); function o(e, t, n, r) { return i()(e, t, n, r) } }, c8d2: function (e, t, n) { var r = n("d039"), i = n("5899"), o = "鈥嬄呩爭"; e.exports = function (e) { return r((function () { return !!i[e]() || o[e]() != o || i[e].name !== e })) } }, c8fe: function (e, t, n) { var r = n("f8af"); function i(e, t) { var n = t ? r(e.buffer) : e.buffer; return new e.constructor(n, e.byteOffset, e.length) } e.exports = i }, c901: function (e, t) { e.exports = function (e) { if (void 0 == e) throw TypeError("Can't call method on  " + e); return e } }, c906: function (e, t, n) { var r = n("23e7"), i = n("d039"), o = n("861d"), a = Object.isExtensible, s = i((function () { a(1) })); r({ target: "Object", stat: !0, forced: s }, { isExtensible: function (e) { return !!o(e) && (!a || a(e)) } }) }, c930: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.yAxisConfig = t.xAxisConfig = void 0; var r = { name: "", show: !0, position: "bottom", nameGap: 15, nameLocation: "end", nameTextStyle: { fill: "#333", fontSize: 10 }, min: "20%", max: "20%", interval: null, minInterval: null, maxInterval: null, boundaryGap: null, splitNumber: 5, axisLine: { show: !0, style: { stroke: "#333", lineWidth: 1 } }, axisTick: { show: !0, style: { stroke: "#333", lineWidth: 1 } }, axisLabel: { show: !0, formatter: null, style: { fill: "#333", fontSize: 10, rotate: 0 } }, splitLine: { show: !1, style: { stroke: "#d4d4d4", lineWidth: 1 } }, rLevel: -20, animationCurve: "easeOutCubic", animationFrame: 50 }; t.xAxisConfig = r; var i = { name: "", show: !0, position: "left", nameGap: 15, nameLocation: "end", nameTextStyle: { fill: "#333", fontSize: 10 }, min: "20%", max: "20%", interval: null, minInterval: null, maxInterval: null, boundaryGap: null, splitNumber: 5, axisLine: { show: !0, style: { stroke: "#333", lineWidth: 1 } }, axisTick: { show: !0, style: { stroke: "#333", lineWidth: 1 } }, axisLabel: { show: !0, formatter: null, style: { fill: "#333", fontSize: 10, rotate: 0 } }, splitLine: { show: !0, style: { stroke: "#d4d4d4", lineWidth: 1 } }, rLevel: -20, animationCurve: "easeOutCubic", animationFrame: 50 }; t.yAxisConfig = i }, c96a: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("857a"), o = n("af03"); r({ target: "String", proto: !0, forced: o("small") }, { small: function () { return i(this, "small", "", "") } }) }, c973: function (e, t, n) { function r(e, t, n, r, i, o, a) { try { var s = e[o](a), c = s.value } catch (l) { return void n(l) } s.done ? t(c) : Promise.resolve(c).then(r, i) } function i(e) { return function () { var t = this, n = arguments; return new Promise((function (i, o) { var a = e.apply(t, n); function s(e) { r(a, i, o, s, c, "next", e) } function c(e) { r(a, i, o, s, c, "throw", e) } s(void 0) })) } } n("d3b7"), e.exports = i, e.exports["default"] = e.exports, e.exports.__esModule = !0 }, c9a4: function (e, t, n) { "use strict"; n.d(t, "o", (function () { return b })), n.d(t, "b", (function () { return x })), n.d(t, "a", (function () { return w })), n.d(t, "n", (function () { return _ })), n.d(t, "k", (function () { return C })), n.d(t, "j", (function () { return O })), n.d(t, "l", (function () { return T })), n.d(t, "i", (function () { return A })), n.d(t, "c", (function () { return L })), n.d(t, "d", (function () { return j })), n.d(t, "g", (function () { return E })), n.d(t, "h", (function () { return P })), n.d(t, "m", (function () { return D })), n.d(t, "e", (function () { return H })), n.d(t, "f", (function () { return V })); var r = n("9b57"), i = n.n(r), o = n("b24f"), a = n.n(o), s = n("1098"), c = n.n(s), l = n("8e8e"), u = n.n(l), h = n("d96e"), f = n.n(h), d = n("0464"), p = n("cdd1"), v = n("daa3"), m = .25, g = 2, y = !1; function b() { y || (y = !0, f()(!1, "Tree only accept TreeNode as children.")) } function x(e, t) { var n = e.slice(), r = n.indexOf(t); return r >= 0 && n.splice(r, 1), n } function w(e, t) { var n = e.slice(); return -1 === n.indexOf(t) && n.push(t), n } function _(e) { return e.split("-") } function C(e, t) { return e + "-" + t } function M(e) { return Object(v["o"])(e).isTreeNode } function O() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; return e.filter(M) } function k(e) { var t = Object(v["l"])(e) || {}, n = t.disabled, r = t.disableCheckbox, i = t.checkable; return !(!n && !r) || !1 === i } function S(e, t) { function n(r, i, o) { var a = r ? r.componentOptions.children : e, s = r ? C(o.pos, i) : 0, c = O(a); if (r) { var l = r.key; l || void 0 !== l && null !== l || (l = s); var u = { node: r, index: i, pos: s, key: l, parentPos: o.node ? o.pos : null }; t(u) } c.forEach((function (e, t) { n(e, t, { node: r, pos: s }) })) } n(null) } function T() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = arguments[1], n = e.map(t); return 1 === n.length ? n[0] : n } function A(e, t) { var n = Object(v["l"])(t), r = n.eventKey, i = n.pos, o = []; return S(e, (function (e) { var t = e.key; o.push(t) })), o.push(r || i), o } function L(e, t) { var n = e.clientY, r = t.$refs.selectHandle.getBoundingClientRect(), i = r.top, o = r.bottom, a = r.height, s = Math.max(a * m, g); return n <= i + s ? -1 : n >= o - s ? 1 : 0 } function j(e, t) { if (e) { var n = t.multiple; return n ? e.slice() : e.length ? [e[0]] : e } } var z = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return { props: Object(d["a"])(e, ["on", "key", "class", "className", "style"]), on: e.on || {}, class: e["class"] || e.className, style: e.style, key: e.key } }; function E(e, t, n) { if (!t) return []; var r = n || {}, i = r.processProps, o = void 0 === i ? z : i, a = Array.isArray(t) ? t : [t]; return a.map((function (t) { var r = t.children, i = u()(t, ["children"]), a = E(e, r, n); return e(p["a"], o(i), [a]) })) } function P(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.initWrapper, r = t.processEntity, i = t.onProcessFinished, o = new Map, a = new Map, s = { posEntities: o, keyEntities: a }; return n && (s = n(s) || s), S(e, (function (e) { var t = e.node, n = e.index, i = e.pos, c = e.key, l = e.parentPos, u = { node: t, index: n, key: c, pos: i }; o.set(i, u), a.set(c, u), u.parent = o.get(l), u.parent && (u.parent.children = u.parent.children || [], u.parent.children.push(u)), r && r(u, s) })), i && i(s), s } function D(e) { if (!e) return null; var t = void 0; if (Array.isArray(e)) t = { checkedKeys: e, halfCheckedKeys: void 0 }; else { if ("object" !== ("undefined" === typeof e ? "undefined" : c()(e))) return f()(!1, "`checkedKeys` is not an array or an object"), null; t = { checkedKeys: e.checked || void 0, halfCheckedKeys: e.halfChecked || void 0 } } return t } function H(e, t, n) { var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}, i = new Map, o = new Map; function s(e) { if (i.get(e) !== t) { var r = n.get(e); if (r) { var a = r.children, c = r.parent, l = r.node; if (!k(l)) { var u = !0, h = !1; (a || []).filter((function (e) { return !k(e.node) })).forEach((function (e) { var t = e.key, n = i.get(t), r = o.get(t); (n || r) && (h = !0), n || (u = !1) })), t ? i.set(e, u) : i.set(e, !1), o.set(e, h), c && s(c.key) } } } } function c(e) { if (i.get(e) !== t) { var r = n.get(e); if (r) { var o = r.children, a = r.node; k(a) || (i.set(e, t), (o || []).forEach((function (e) { c(e.key) }))) } } } function l(e) { var r = n.get(e); if (r) { var o = r.children, a = r.parent, l = r.node; i.set(e, t), k(l) || ((o || []).filter((function (e) { return !k(e.node) })).forEach((function (e) { c(e.key) })), a && s(a.key)) } else f()(!1, "'" + e + "' does not exist in the tree.") } (r.checkedKeys || []).forEach((function (e) { i.set(e, !0) })), (r.halfCheckedKeys || []).forEach((function (e) { o.set(e, !0) })), (e || []).forEach((function (e) { l(e) })); var u = [], h = [], d = !0, p = !1, v = void 0; try { for (var m, g = i[Symbol.iterator](); !(d = (m = g.next()).done); d = !0) { var y = m.value, b = a()(y, 2), x = b[0], w = b[1]; w && u.push(x) } } catch (z) { p = !0, v = z } finally { try { !d && g["return"] && g["return"]() } finally { if (p) throw v } } var _ = !0, C = !1, M = void 0; try { for (var O, S = o[Symbol.iterator](); !(_ = (O = S.next()).done); _ = !0) { var T = O.value, A = a()(T, 2), L = A[0], j = A[1]; !i.get(L) && j && h.push(L) } } catch (z) { C = !0, M = z } finally { try { !_ && S["return"] && S["return"]() } finally { if (C) throw M } } return { checkedKeys: u, halfCheckedKeys: h } } function V(e, t) { var n = new Map; function r(e) { if (!n.get(e)) { var i = t.get(e); if (i) { n.set(e, !0); var o = i.parent, a = i.node, s = Object(v["l"])(a); s && s.disabled || o && r(o.key) } } } return (e || []).forEach((function (e) { r(e) })), [].concat(i()(n.keys())) } }, ca21: function (e, t, n) { var r = n("23e7"), i = n("1ec1"); r({ target: "Math", stat: !0 }, { log1p: i }) }, ca84: function (e, t, n) { var r = n("5135"), i = n("fc6a"), o = n("4d64").indexOf, a = n("d012"); e.exports = function (e, t) { var n, s = i(e), c = 0, l = []; for (n in s) !r(a, n) && r(s, n) && l.push(n); while (t.length > c) r(s, n = t[c++]) && (~o(l, n) || l.push(n)); return l } }, ca91: function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("d58f").left, o = r.aTypedArray, a = r.exportTypedArrayMethod; a("reduce", (function (e) { return i(o(this), e, arguments.length, arguments.length > 1 ? arguments[1] : void 0) })) }, caad: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("4d64").includes, o = n("44d2"); r({ target: "Array", proto: !0 }, { includes: function (e) { return i(this, e, arguments.length > 1 ? arguments[1] : void 0) } }), o("includes") }, cb29: function (e, t, n) { var r = n("23e7"), i = n("81d5"), o = n("44d2"); r({ target: "Array", proto: !0 }, { fill: i }), o("fill") }, cb5a: function (e, t, n) { var r = n("9638"); function i(e, t) { var n = e.length; while (n--) if (r(e[n][0], t)) return n; return -1 } e.exports = i }, cc12: function (e, t, n) { var r = n("da84"), i = n("861d"), o = r.document, a = i(o) && i(o.createElement); e.exports = function (e) { return a ? o.createElement(e) : {} } }, cc15: function (e, t, n) { var r = n("b367")("wks"), i = n("8b1a"), o = n("ef08").Symbol, a = "function" == typeof o, s = e.exports = function (e) { return r[e] || (r[e] = a && o[e] || (a ? o : i)("Symbol." + e)) }; s.store = r }, cc45: function (e, t, n) { var r = n("1a2d"), i = n("b047f"), o = n("99d3"), a = o && o.isMap, s = a ? i(a) : r; e.exports = s }, cc6d: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.gaugeConfig = void 0; var r = { show: !0, name: "", radius: "60%", center: ["50%", "50%"], startAngle: -Math.PI / 4 * 5, endAngle: Math.PI / 4, min: 0, max: 100, splitNum: 5, arcLineWidth: 15, data: [], dataItemStyle: {}, axisTick: { show: !0, tickLength: 6, style: { stroke: "#999", lineWidth: 1 } }, axisLabel: { show: !0, data: [], formatter: null, labelGap: 5, style: {} }, pointer: { show: !0, valueIndex: 0, style: { scale: [1, 1], fill: "#fb7293" } }, details: { show: !1, formatter: null, offset: [0, 0], valueToFixed: 0, position: "center", style: { fontSize: 20, fontWeight: "bold", textAlign: "center", textBaseline: "middle" } }, backgroundArc: { show: !0, style: { stroke: "#e0e0e0" } }, rLevel: 10, animationCurve: "easeOutCubic", animationFrame: 50 }; t.gaugeConfig = r }, cc70: function (e, t, n) { "use strict"; n("b2a3"), n("03fa") }, cc71: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("857a"), o = n("af03"); r({ target: "String", proto: !0, forced: o("bold") }, { bold: function () { return i(this, "b", "", "") } }) }, cca6: function (e, t, n) { var r = n("23e7"), i = n("60da"); r({ target: "Object", stat: !0, forced: Object.assign !== i }, { assign: i }) }, ccb9: function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("46cf"), a = n.n(o), s = n("8bbf"), c = n.n(s), l = n("92fa"), u = n.n(l), h = n("6042"), f = n.n(h), d = n("1098"), p = n.n(d), v = n("0c63"), m = n("4d91"), g = n("daa3"), y = n("18a7"), b = { width: 0, height: 0, overflow: "hidden", position: "absolute" }, x = { name: "Sentinel", props: { setRef: m["a"].func, prevElement: m["a"].any, nextElement: m["a"].any }, methods: { onKeyDown: function (e) { var t = e.target, n = e.which, r = e.shiftKey, i = this.$props, o = i.nextElement, a = i.prevElement; n === y["a"].TAB && document.activeElement === t && (!r && o && o.focus(), r && a && a.focus()) } }, render: function () { var e = arguments[0], t = this.$props.setRef; return e("div", u()([{ attrs: { tabIndex: 0 } }, { directives: [{ name: "ant-ref", value: t }] }, { style: b, on: { keydown: this.onKeyDown }, attrs: { role: "presentation" } }]), [this.$slots["default"]]) } }, w = { name: "TabPane", props: { active: m["a"].bool, destroyInactiveTabPane: m["a"].bool, forceRender: m["a"].bool, placeholder: m["a"].any, rootPrefixCls: m["a"].string, tab: m["a"].any, closable: m["a"].bool, disabled: m["a"].bool }, inject: { sentinelContext: { default: function () { return {} } } }, render: function () { var e, t = arguments[0], n = this.$props, r = n.destroyInactiveTabPane, i = n.active, o = n.forceRender, a = n.rootPrefixCls, s = this.$slots["default"], c = Object(g["g"])(this, "placeholder"); this._isActived = this._isActived || i; var l = a + "-tabpane", u = (e = {}, f()(e, l, 1), f()(e, l + "-inactive", !i), f()(e, l + "-active", i), e), h = r ? i : this._isActived, d = h || o, p = this.sentinelContext, v = p.sentinelStart, m = p.sentinelEnd, y = p.setPanelSentinelStart, b = p.setPanelSentinelEnd, w = void 0, _ = void 0; return i && d && (w = t(x, { attrs: { setRef: y, prevElement: v } }), _ = t(x, { attrs: { setRef: b, nextElement: m } })), t("div", { class: u, attrs: { role: "tabpanel", "aria-hidden": i ? "false" : "true" } }, [w, d ? s : c, _]) } }, _ = n("0464"), C = n("b488"), M = n("c449"), O = n.n(M), k = { LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40 }, S = n("7b05"), T = function (e) { return void 0 !== e && null !== e && "" !== e }, A = T; function L(e) { var t = void 0, n = e.children; return n.forEach((function (e) { !e || A(t) || e.disabled || (t = e.key) })), t } function j(e, t) { var n = e.children, r = n.map((function (e) { return e && e.key })); return r.indexOf(t) >= 0 } var z = { name: "Tabs", mixins: [C["a"]], model: { prop: "activeKey", event: "change" }, props: { destroyInactiveTabPane: m["a"].bool, renderTabBar: m["a"].func.isRequired, renderTabContent: m["a"].func.isRequired, navWrapper: m["a"].func.def((function (e) { return e })), children: m["a"].any.def([]), prefixCls: m["a"].string.def("ant-tabs"), tabBarPosition: m["a"].string.def("top"), activeKey: m["a"].oneOfType([m["a"].string, m["a"].number]), defaultActiveKey: m["a"].oneOfType([m["a"].string, m["a"].number]), __propsSymbol__: m["a"].any, direction: m["a"].string.def("ltr"), tabBarGutter: m["a"].number }, data: function () { var e = Object(g["l"])(this), t = void 0; return t = "activeKey" in e ? e.activeKey : "defaultActiveKey" in e ? e.defaultActiveKey : L(e), { _activeKey: t } }, provide: function () { return { sentinelContext: this } }, watch: { __propsSymbol__: function () { var e = Object(g["l"])(this); "activeKey" in e ? this.setState({ _activeKey: e.activeKey }) : j(e, this.$data._activeKey) || this.setState({ _activeKey: L(e) }) } }, beforeDestroy: function () { this.destroy = !0, O.a.cancel(this.sentinelId) }, methods: { onTabClick: function (e, t) { this.tabBar.componentOptions && this.tabBar.componentOptions.listeners && this.tabBar.componentOptions.listeners.tabClick && this.tabBar.componentOptions.listeners.tabClick(e, t), this.setActiveKey(e) }, onNavKeyDown: function (e) { var t = e.keyCode; if (t === k.RIGHT || t === k.DOWN) { e.preventDefault(); var n = this.getNextActiveKey(!0); this.onTabClick(n) } else if (t === k.LEFT || t === k.UP) { e.preventDefault(); var r = this.getNextActiveKey(!1); this.onTabClick(r) } }, onScroll: function (e) { var t = e.target, n = e.currentTarget; t === n && t.scrollLeft > 0 && (t.scrollLeft = 0) }, setSentinelStart: function (e) { this.sentinelStart = e }, setSentinelEnd: function (e) { this.sentinelEnd = e }, setPanelSentinelStart: function (e) { e !== this.panelSentinelStart && this.updateSentinelContext(), this.panelSentinelStart = e }, setPanelSentinelEnd: function (e) { e !== this.panelSentinelEnd && this.updateSentinelContext(), this.panelSentinelEnd = e }, setActiveKey: function (e) { if (this.$data._activeKey !== e) { var t = Object(g["l"])(this); "activeKey" in t || this.setState({ _activeKey: e }), this.__emit("change", e) } }, getNextActiveKey: function (e) { var t = this.$data._activeKey, n = []; this.$props.children.forEach((function (t) { var r = Object(g["r"])(t, "disabled"); t && !r && "" !== r && (e ? n.push(t) : n.unshift(t)) })); var r = n.length, i = r && n[0].key; return n.forEach((function (e, o) { e.key === t && (i = o === r - 1 ? n[0].key : n[o + 1].key) })), i }, updateSentinelContext: function () { var e = this; this.destroy || (O.a.cancel(this.sentinelId), this.sentinelId = O()((function () { e.destroy || e.$forceUpdate() }))) } }, render: function () { var e, t = arguments[0], n = this.$props, r = n.prefixCls, o = n.navWrapper, a = n.tabBarPosition, s = n.renderTabContent, c = n.renderTabBar, l = n.destroyInactiveTabPane, u = n.direction, h = n.tabBarGutter, d = (e = {}, f()(e, r, 1), f()(e, r + "-" + a, 1), f()(e, r + "-rtl", "rtl" === u), e); this.tabBar = c(); var p = Object(S["a"])(this.tabBar, { props: { prefixCls: r, navWrapper: o, tabBarPosition: a, panels: n.children, activeKey: this.$data._activeKey, direction: u, tabBarGutter: h }, on: { keydown: this.onNavKeyDown, tabClick: this.onTabClick }, key: "tabBar" }), v = Object(S["a"])(s(), { props: { prefixCls: r, tabBarPosition: a, activeKey: this.$data._activeKey, destroyInactiveTabPane: l, direction: u }, on: { change: this.setActiveKey }, children: n.children, key: "tabContent" }), m = t(x, { key: "sentinelStart", attrs: { setRef: this.setSentinelStart, nextElement: this.panelSentinelStart } }), y = t(x, { key: "sentinelEnd", attrs: { setRef: this.setSentinelEnd, prevElement: this.panelSentinelEnd } }), b = []; "bottom" === a ? b.push(m, v, y, p) : b.push(p, m, v, y); var w = i()({}, Object(_["a"])(Object(g["k"])(this), ["change"]), { scroll: this.onScroll }); return t("div", { on: w, class: d }, [b]) } }; c.a.use(a.a, { name: "ant-ref" }); var E = z; function P(e) { var t = []; return e.forEach((function (e) { e.data && t.push(e) })), t } function D(e, t) { for (var n = P(e), r = 0; r < n.length; r++)if (n[r].key === t) return r; return -1 } function H(e, t) { e.transform = t, e.webkitTransform = t, e.mozTransform = t } function V(e) { return ("transform" in e || "webkitTransform" in e || "MozTransform" in e) && window.atob } function I(e) { return { transform: e, WebkitTransform: e, MozTransform: e } } function N(e) { return "left" === e || "right" === e } function R(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "ltr", r = N(t) ? "translateY" : "translateX"; return N(t) || "rtl" !== n ? r + "(" + 100 * -e + "%) translateZ(0)" : r + "(" + 100 * e + "%) translateZ(0)" } function F(e, t) { var n = N(t) ? "marginTop" : "marginLeft"; return f()({}, n, 100 * -e + "%") } function Y(e, t) { return +window.getComputedStyle(e).getPropertyValue(t).replace("px", "") } function $(e, t) { return +e.getPropertyValue(t).replace("px", "") } function B(e, t, n, r, i) { var o = Y(i, "padding-" + e); if (!r || !r.parentNode) return o; var a = r.parentNode.childNodes; return Array.prototype.some.call(a, (function (i) { var a = window.getComputedStyle(i); return i !== r ? (o += $(a, "margin-" + e), o += i[t], o += $(a, "margin-" + n), "content-box" === a.boxSizing && (o += $(a, "border-" + e + "-width") + $(a, "border-" + n + "-width")), !1) : (o += $(a, "margin-" + e), !0) })), o } function W(e, t) { return B("left", "offsetWidth", "right", e, t) } function q(e, t) { return B("top", "offsetHeight", "bottom", e, t) } var U = { name: "TabContent", props: { animated: { type: Boolean, default: !0 }, animatedWithMargin: { type: Boolean, default: !0 }, prefixCls: { default: "ant-tabs", type: String }, activeKey: m["a"].oneOfType([m["a"].string, m["a"].number]), tabBarPosition: String, direction: m["a"].string, destroyInactiveTabPane: m["a"].bool }, computed: { classes: function () { var e, t = this.animated, n = this.prefixCls; return e = {}, f()(e, n + "-content", !0), f()(e, t ? n + "-content-animated" : n + "-content-no-animated", !0), e } }, methods: { getTabPanes: function () { var e = this.$props, t = e.activeKey, n = this.$slots["default"] || [], r = []; return n.forEach((function (n) { if (n) { var i = n.key, o = t === i; r.push(Object(S["a"])(n, { props: { active: o, destroyInactiveTabPane: e.destroyInactiveTabPane, rootPrefixCls: e.prefixCls } })) } })), r } }, render: function () { var e = arguments[0], t = this.activeKey, n = this.tabBarPosition, r = this.animated, i = this.animatedWithMargin, o = this.direction, a = this.classes, s = {}; if (r && this.$slots["default"]) { var c = D(this.$slots["default"], t); if (-1 !== c) { var l = i ? F(c, n) : I(R(c, n, o)); s = l } else s = { display: "none" } } return e("div", { class: a, style: s }, [this.getTabPanes()]) } }, K = function (e) { if ("undefined" !== typeof window && window.document && window.document.documentElement) { var t = Array.isArray(e) ? e : [e], n = window.document.documentElement; return t.some((function (e) { return e in n.style })) } return !1 }, G = K(["flex", "webkitFlex", "Flex", "msFlex"]), X = n("9cba"); function J(e, t) { var n = e.$props, r = n.styles, i = void 0 === r ? {} : r, o = n.panels, a = n.activeKey, s = n.direction, c = e.getRef("root"), l = e.getRef("nav") || c, u = e.getRef("inkBar"), h = e.getRef("activeTab"), f = u.style, d = e.$props.tabBarPosition, p = D(o, a); if (t && (f.display = "none"), h) { var v = h, m = V(f); if (H(f, ""), f.width = "", f.height = "", f.left = "", f.top = "", f.bottom = "", f.right = "", "top" === d || "bottom" === d) { var g = W(v, l), y = v.offsetWidth; y === c.offsetWidth ? y = 0 : i.inkBar && void 0 !== i.inkBar.width && (y = parseFloat(i.inkBar.width, 10), y && (g += (v.offsetWidth - y) / 2)), "rtl" === s && (g = Y(v, "margin-left") - g), m ? H(f, "translate3d(" + g + "px,0,0)") : f.left = g + "px", f.width = y + "px" } else { var b = q(v, l, !0), x = v.offsetHeight; i.inkBar && void 0 !== i.inkBar.height && (x = parseFloat(i.inkBar.height, 10), x && (b += (v.offsetHeight - x) / 2)), m ? (H(f, "translate3d(0," + b + "px,0)"), f.top = "0") : f.top = b + "px", f.height = x + "px" } } f.display = -1 !== p ? "block" : "none" } var Q = { name: "InkTabBarNode", mixins: [C["a"]], props: { inkBarAnimated: { type: Boolean, default: !0 }, direction: m["a"].string, prefixCls: String, styles: Object, tabBarPosition: String, saveRef: m["a"].func.def((function () { })), getRef: m["a"].func.def((function () { })), panels: m["a"].array, activeKey: m["a"].oneOfType([m["a"].string, m["a"].number]) }, updated: function () { this.$nextTick((function () { J(this) })) }, mounted: function () { this.$nextTick((function () { J(this, !0) })) }, render: function () { var e, t = arguments[0], n = this.prefixCls, r = this.styles, i = void 0 === r ? {} : r, o = this.inkBarAnimated, a = n + "-ink-bar", s = (e = {}, f()(e, a, !0), f()(e, o ? a + "-animated" : a + "-no-animated", !0), e); return t("div", u()([{ style: i.inkBar, class: s, key: "inkBar" }, { directives: [{ name: "ant-ref", value: this.saveRef("inkBar") }] }])) } }, Z = n("d96e"), ee = n.n(Z); function te() { } var ne = { name: "TabBarTabsNode", mixins: [C["a"]], props: { activeKey: m["a"].oneOfType([m["a"].string, m["a"].number]), panels: m["a"].any.def([]), prefixCls: m["a"].string.def(""), tabBarGutter: m["a"].any.def(null), onTabClick: m["a"].func, saveRef: m["a"].func.def(te), getRef: m["a"].func.def(te), renderTabBarNode: m["a"].func, tabBarPosition: m["a"].string, direction: m["a"].string }, render: function () { var e = this, t = arguments[0], n = this.$props, r = n.panels, i = n.activeKey, o = n.prefixCls, a = n.tabBarGutter, s = n.saveRef, c = n.tabBarPosition, l = n.direction, h = [], d = this.renderTabBarNode || this.$scopedSlots.renderTabBarNode; return r.forEach((function (n, p) { if (n) { var v = Object(g["l"])(n), m = n.key, y = i === m ? o + "-tab-active" : ""; y += " " + o + "-tab"; var b = { on: {} }, x = v.disabled || "" === v.disabled; x ? y += " " + o + "-tab-disabled" : b.on.click = function () { e.__emit("tabClick", m) }; var w = []; i === m && w.push({ name: "ant-ref", value: s("activeTab") }); var _ = Object(g["g"])(n, "tab"), C = a && p === r.length - 1 ? 0 : a; C = "number" === typeof C ? C + "px" : C; var M = "rtl" === l ? "marginLeft" : "marginRight", O = f()({}, N(c) ? "marginBottom" : M, C); ee()(void 0 !== _, "There must be `tab` property or slot on children of Tabs."); var k = t("div", u()([{ attrs: { role: "tab", "aria-disabled": x ? "true" : "false", "aria-selected": i === m ? "true" : "false" } }, b, { class: y, key: m, style: O }, { directives: w }]), [_]); d && (k = d(k)), h.push(k) } })), t("div", { directives: [{ name: "ant-ref", value: this.saveRef("navTabsContainer") }] }, [h]) } }; function re() { } var ie = { name: "TabBarRootNode", mixins: [C["a"]], props: { saveRef: m["a"].func.def(re), getRef: m["a"].func.def(re), prefixCls: m["a"].string.def(""), tabBarPosition: m["a"].string.def("top"), extraContent: m["a"].any }, methods: { onKeyDown: function (e) { this.__emit("keydown", e) } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.onKeyDown, r = this.tabBarPosition, o = this.extraContent, a = f()({}, t + "-bar", !0), s = "top" === r || "bottom" === r, c = s ? { float: "right" } : {}, l = this.$slots["default"], h = l; return o && (h = [Object(S["a"])(o, { key: "extra", style: i()({}, c) }), Object(S["a"])(l, { key: "content" })], h = s ? h : h.reverse()), e("div", u()([{ attrs: { role: "tablist", tabIndex: "0" }, class: a, on: { keydown: n } }, { directives: [{ name: "ant-ref", value: this.saveRef("root") }] }]), [h]) } }, oe = n("b047"), ae = n.n(oe), se = n("6dd8"); function ce() { } var le = { name: "ScrollableTabBarNode", mixins: [C["a"]], props: { activeKey: m["a"].any, getRef: m["a"].func.def((function () { })), saveRef: m["a"].func.def((function () { })), tabBarPosition: m["a"].oneOf(["left", "right", "top", "bottom"]).def("left"), prefixCls: m["a"].string.def(""), scrollAnimated: m["a"].bool.def(!0), navWrapper: m["a"].func.def((function (e) { return e })), prevIcon: m["a"].any, nextIcon: m["a"].any, direction: m["a"].string }, data: function () { return this.offset = 0, this.prevProps = i()({}, this.$props), { next: !1, prev: !1 } }, watch: { tabBarPosition: function () { var e = this; this.tabBarPositionChange = !0, this.$nextTick((function () { e.setOffset(0) })) } }, mounted: function () { var e = this; this.$nextTick((function () { e.updatedCal(), e.debouncedResize = ae()((function () { e.setNextPrev(), e.scrollToActiveTab() }), 200), e.resizeObserver = new se["a"](e.debouncedResize), e.resizeObserver.observe(e.$props.getRef("container")) })) }, updated: function () { var e = this; this.$nextTick((function () { e.updatedCal(e.prevProps), e.prevProps = i()({}, e.$props) })) }, beforeDestroy: function () { this.resizeObserver && this.resizeObserver.disconnect(), this.debouncedResize && this.debouncedResize.cancel && this.debouncedResize.cancel() }, methods: { updatedCal: function (e) { var t = this, n = this.$props; e && e.tabBarPosition !== n.tabBarPosition ? this.setOffset(0) : this.isNextPrevShown(this.$data) !== this.isNextPrevShown(this.setNextPrev()) ? (this.$forceUpdate(), this.$nextTick((function () { t.scrollToActiveTab() }))) : e && n.activeKey === e.activeKey || this.scrollToActiveTab() }, setNextPrev: function () { var e = this.$props.getRef("nav"), t = this.$props.getRef("navTabsContainer"), n = this.getScrollWH(t || e), r = this.getOffsetWH(this.$props.getRef("container")) + 1, i = this.getOffsetWH(this.$props.getRef("navWrap")), o = this.offset, a = r - n, s = this.next, c = this.prev; if (a >= 0) s = !1, this.setOffset(0, !1), o = 0; else if (a < o) s = !0; else { s = !1; var l = i - n; this.setOffset(l, !1), o = l } return c = o < 0, this.setNext(s), this.setPrev(c), { next: s, prev: c } }, getOffsetWH: function (e) { var t = this.$props.tabBarPosition, n = "offsetWidth"; return "left" !== t && "right" !== t || (n = "offsetHeight"), e[n] }, getScrollWH: function (e) { var t = this.tabBarPosition, n = "scrollWidth"; return "left" !== t && "right" !== t || (n = "scrollHeight"), e[n] }, getOffsetLT: function (e) { var t = this.$props.tabBarPosition, n = "left"; return "left" !== t && "right" !== t || (n = "top"), e.getBoundingClientRect()[n] }, setOffset: function (e) { var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], n = Math.min(0, e); if (this.offset !== n) { this.offset = n; var r = {}, i = this.$props.tabBarPosition, o = this.$props.getRef("nav").style, a = V(o); "left" === i || "right" === i ? r = a ? { value: "translate3d(0," + n + "px,0)" } : { name: "top", value: n + "px" } : a ? ("rtl" === this.$props.direction && (n = -n), r = { value: "translate3d(" + n + "px,0,0)" }) : r = { name: "left", value: n + "px" }, a ? H(o, r.value) : o[r.name] = r.value, t && this.setNextPrev() } }, setPrev: function (e) { this.prev !== e && (this.prev = e) }, setNext: function (e) { this.next !== e && (this.next = e) }, isNextPrevShown: function (e) { return e ? e.next || e.prev : this.next || this.prev }, prevTransitionEnd: function (e) { if ("opacity" === e.propertyName) { var t = this.$props.getRef("container"); this.scrollToActiveTab({ target: t, currentTarget: t }) } }, scrollToActiveTab: function (e) { var t = this.$props.getRef("activeTab"), n = this.$props.getRef("navWrap"); if ((!e || e.target === e.currentTarget) && t) { var r = this.isNextPrevShown() && this.lastNextPrevShown; if (this.lastNextPrevShown = this.isNextPrevShown(), r) { var i = this.getScrollWH(t), o = this.getOffsetWH(n), a = this.offset, s = this.getOffsetLT(n), c = this.getOffsetLT(t); s > c ? (a += s - c, this.setOffset(a)) : s + o < c + i && (a -= c + i - (s + o), this.setOffset(a)) } } }, prevClick: function (e) { this.__emit("prevClick", e); var t = this.$props.getRef("navWrap"), n = this.getOffsetWH(t), r = this.offset; this.setOffset(r + n) }, nextClick: function (e) { this.__emit("nextClick", e); var t = this.$props.getRef("navWrap"), n = this.getOffsetWH(t), r = this.offset; this.setOffset(r - n) } }, render: function () { var e, t, n, r, i = arguments[0], o = this.next, a = this.prev, s = this.$props, c = s.prefixCls, l = s.scrollAnimated, h = s.navWrapper, d = Object(g["g"])(this, "prevIcon"), p = Object(g["g"])(this, "nextIcon"), v = a || o, m = i("span", { on: { click: a ? this.prevClick : ce, transitionend: this.prevTransitionEnd }, attrs: { unselectable: "unselectable" }, class: (e = {}, f()(e, c + "-tab-prev", 1), f()(e, c + "-tab-btn-disabled", !a), f()(e, c + "-tab-arrow-show", v), e) }, [d || i("span", { class: c + "-tab-prev-icon" })]), y = i("span", { on: { click: o ? this.nextClick : ce }, attrs: { unselectable: "unselectable" }, class: (t = {}, f()(t, c + "-tab-next", 1), f()(t, c + "-tab-btn-disabled", !o), f()(t, c + "-tab-arrow-show", v), t) }, [p || i("span", { class: c + "-tab-next-icon" })]), b = c + "-nav", x = (n = {}, f()(n, b, !0), f()(n, l ? b + "-animated" : b + "-no-animated", !0), n); return i("div", u()([{ class: (r = {}, f()(r, c + "-nav-container", 1), f()(r, c + "-nav-container-scrolling", v), r), key: "container" }, { directives: [{ name: "ant-ref", value: this.saveRef("container") }] }]), [m, y, i("div", u()([{ class: c + "-nav-wrap" }, { directives: [{ name: "ant-ref", value: this.saveRef("navWrap") }] }]), [i("div", { class: c + "-nav-scroll" }, [i("div", u()([{ class: x }, { directives: [{ name: "ant-ref", value: this.saveRef("nav") }] }]), [h(this.$slots["default"])])])])]) } }, ue = { props: { children: m["a"].func.def((function () { return null })) }, methods: { getRef: function (e) { return this[e] }, saveRef: function (e) { var t = this; return function (n) { n && (t[e] = n) } } }, render: function () { var e = this, t = function (t) { return e.saveRef(t) }, n = function (t) { return e.getRef(t) }; return this.children(t, n) } }, he = { name: "ScrollableInkTabBar", inheritAttrs: !1, props: ["extraContent", "inkBarAnimated", "tabBarGutter", "prefixCls", "navWrapper", "tabBarPosition", "panels", "activeKey", "prevIcon", "nextIcon"], render: function () { var e = arguments[0], t = i()({}, this.$props), n = Object(g["k"])(this), r = this.$scopedSlots["default"]; return e(ue, { attrs: { children: function (o, a) { return e(ie, u()([{ attrs: { saveRef: o } }, { props: t, on: n }]), [e(le, u()([{ attrs: { saveRef: o, getRef: a } }, { props: t, on: n }]), [e(ne, u()([{ attrs: { saveRef: o } }, { props: i()({}, t, { renderTabBarNode: r }), on: n }])), e(Q, u()([{ attrs: { saveRef: o, getRef: a } }, { props: t, on: n }]))])]) } } }) } }, fe = { name: "TabBar", inheritAttrs: !1, props: { prefixCls: m["a"].string, tabBarStyle: m["a"].object, tabBarExtraContent: m["a"].any, type: m["a"].oneOf(["line", "card", "editable-card"]), tabPosition: m["a"].oneOf(["top", "right", "bottom", "left"]).def("top"), tabBarPosition: m["a"].oneOf(["top", "right", "bottom", "left"]), size: m["a"].oneOf(["default", "small", "large"]), animated: m["a"].oneOfType([m["a"].bool, m["a"].object]), renderTabBar: m["a"].func, panels: m["a"].array.def([]), activeKey: m["a"].oneOfType([m["a"].string, m["a"].number]), tabBarGutter: m["a"].number }, render: function () { var e, t = arguments[0], n = this.$props, r = n.tabBarStyle, o = n.animated, a = void 0 === o || o, s = n.renderTabBar, c = n.tabBarExtraContent, l = n.tabPosition, u = n.prefixCls, h = n.type, d = void 0 === h ? "line" : h, m = n.size, y = "object" === ("undefined" === typeof a ? "undefined" : p()(a)) ? a.inkBar : a, b = "left" === l || "right" === l, x = b ? "up" : "left", w = b ? "down" : "right", _ = t("span", { class: u + "-tab-prev-icon" }, [t(v["a"], { attrs: { type: x }, class: u + "-tab-prev-icon-target" })]), C = t("span", { class: u + "-tab-next-icon" }, [t(v["a"], { attrs: { type: w }, class: u + "-tab-next-icon-target" })]), M = (e = {}, f()(e, u + "-" + l + "-bar", !0), f()(e, u + "-" + m + "-bar", !!m), f()(e, u + "-card-bar", d && d.indexOf("card") >= 0), e), O = { props: i()({}, this.$props, this.$attrs, { inkBarAnimated: y, extraContent: c, prevIcon: _, nextIcon: C }), style: r, on: Object(g["k"])(this), class: M }, k = void 0; return s ? (k = s(O, he), Object(S["a"])(k, O)) : t(he, O) } }, de = fe, pe = { TabPane: w, name: "ATabs", model: { prop: "activeKey", event: "change" }, props: { prefixCls: m["a"].string, activeKey: m["a"].oneOfType([m["a"].string, m["a"].number]), defaultActiveKey: m["a"].oneOfType([m["a"].string, m["a"].number]), hideAdd: m["a"].bool.def(!1), tabBarStyle: m["a"].object, tabBarExtraContent: m["a"].any, destroyInactiveTabPane: m["a"].bool.def(!1), type: m["a"].oneOf(["line", "card", "editable-card"]), tabPosition: m["a"].oneOf(["top", "right", "bottom", "left"]).def("top"), size: m["a"].oneOf(["default", "small", "large"]), animated: m["a"].oneOfType([m["a"].bool, m["a"].object]), tabBarGutter: m["a"].number, renderTabBar: m["a"].func }, inject: { configProvider: { default: function () { return X["a"] } } }, mounted: function () { var e = " no-flex", t = this.$el; t && !G && -1 === t.className.indexOf(e) && (t.className += e) }, methods: { removeTab: function (e, t) { t.stopPropagation(), A(e) && this.$emit("edit", e, "remove") }, handleChange: function (e) { this.$emit("change", e) }, createNewTab: function (e) { this.$emit("edit", e, "add") }, onTabClick: function (e) { this.$emit("tabClick", e) }, onPrevClick: function (e) { this.$emit("prevClick", e) }, onNextClick: function (e) { this.$emit("nextClick", e) } }, render: function () { var e, t, n = this, r = arguments[0], o = Object(g["l"])(this), a = o.prefixCls, s = o.size, c = o.type, l = void 0 === c ? "line" : c, h = o.tabPosition, d = o.animated, m = void 0 === d || d, y = o.hideAdd, b = o.renderTabBar, x = this.configProvider.getPrefixCls, w = x("tabs", a), _ = Object(g["c"])(this.$slots["default"]), C = Object(g["g"])(this, "tabBarExtraContent"), M = "object" === ("undefined" === typeof m ? "undefined" : p()(m)) ? m.tabPane : m; "line" !== l && (M = "animated" in o && M); var O = (e = {}, f()(e, w + "-vertical", "left" === h || "right" === h), f()(e, w + "-" + s, !!s), f()(e, w + "-card", l.indexOf("card") >= 0), f()(e, w + "-" + l, !0), f()(e, w + "-no-animation", !M), e), k = []; "editable-card" === l && (k = [], _.forEach((function (e, t) { var i = Object(g["l"])(e), o = i.closable; o = "undefined" === typeof o || o; var a = o ? r(v["a"], { attrs: { type: "close" }, class: w + "-close-x", on: { click: function (t) { return n.removeTab(e.key, t) } } }) : null; k.push(Object(S["a"])(e, { props: { tab: r("div", { class: o ? void 0 : w + "-tab-unclosable" }, [Object(g["g"])(e, "tab"), a]) }, key: e.key || t })) })), y || (C = r("span", [r(v["a"], { attrs: { type: "plus" }, class: w + "-new-tab", on: { click: this.createNewTab } }), C]))), C = C ? r("div", { class: w + "-extra-content" }, [C]) : null; var T = b || this.$scopedSlots.renderTabBar, A = Object(g["k"])(this), L = { props: i()({}, this.$props, { prefixCls: w, tabBarExtraContent: C, renderTabBar: T }), on: A }, j = (t = {}, f()(t, w + "-" + h + "-content", !0), f()(t, w + "-card-content", l.indexOf("card") >= 0), t), z = { props: i()({}, Object(g["l"])(this), { prefixCls: w, tabBarPosition: h, renderTabBar: function () { return r(de, u()([{ key: "tabBar" }, L])) }, renderTabContent: function () { return r(U, { class: j, attrs: { animated: M, animatedWithMargin: !0 } }) }, children: k.length > 0 ? k : _, __propsSymbol__: Symbol() }), on: i()({}, A, { change: this.handleChange }), class: O }; return r(E, z) } }, ve = n("db14"); pe.TabPane = i()({}, w, { name: "ATabPane", __ANT_TAB_PANE: !0 }), pe.TabContent = i()({}, U, { name: "ATabContent" }), c.a.use(a.a, { name: "ant-ref" }), pe.install = function (e) { e.use(ve["a"]), e.component(pe.name, pe), e.component(pe.TabPane.name, pe.TabPane), e.component(pe.TabContent.name, pe.TabContent) }; t["a"] = pe }, cd17: function (e, t, n) { "use strict"; n("b2a3"), n("f614"), n("6ba6") }, cd26: function (e, t, n) { "use strict"; var r = n("ebb5"), i = r.aTypedArray, o = r.exportTypedArrayMethod, a = Math.floor; o("reverse", (function () { var e, t = this, n = i(t).length, r = a(n / 2), o = 0; while (o < r) e = t[o], t[o++] = t[--n], t[n] = e; return t })) }, cd3f: function (e, t, n) { (function (e, n) { var r = 200, i = "__lodash_hash_undefined__", o = 9007199254740991, a = "[object Arguments]", s = "[object Array]", c = "[object Boolean]", l = "[object Date]", u = "[object Error]", h = "[object Function]", f = "[object GeneratorFunction]", d = "[object Map]", p = "[object Number]", v = "[object Object]", m = "[object Promise]", g = "[object RegExp]", y = "[object Set]", b = "[object String]", x = "[object Symbol]", w = "[object WeakMap]", _ = "[object ArrayBuffer]", C = "[object DataView]", M = "[object Float32Array]", O = "[object Float64Array]", k = "[object Int8Array]", S = "[object Int16Array]", T = "[object Int32Array]", A = "[object Uint8Array]", L = "[object Uint8ClampedArray]", j = "[object Uint16Array]", z = "[object Uint32Array]", E = /[\\^$.*+?()[\]{}|]/g, P = /\w*$/, D = /^\[object .+?Constructor\]$/, H = /^(?:0|[1-9]\d*)$/, V = {}; V[a] = V[s] = V[_] = V[C] = V[c] = V[l] = V[M] = V[O] = V[k] = V[S] = V[T] = V[d] = V[p] = V[v] = V[g] = V[y] = V[b] = V[x] = V[A] = V[L] = V[j] = V[z] = !0, V[u] = V[h] = V[w] = !1; var I = "object" == typeof e && e && e.Object === Object && e, N = "object" == typeof self && self && self.Object === Object && self, R = I || N || Function("return this")(), F = t && !t.nodeType && t, Y = F && "object" == typeof n && n && !n.nodeType && n, $ = Y && Y.exports === F; function B(e, t) { return e.set(t[0], t[1]), e } function W(e, t) { return e.add(t), e } function q(e, t) { var n = -1, r = e ? e.length : 0; while (++n < r) if (!1 === t(e[n], n, e)) break; return e } function U(e, t) { var n = -1, r = t.length, i = e.length; while (++n < r) e[i + n] = t[n]; return e } function K(e, t, n, r) { var i = -1, o = e ? e.length : 0; r && o && (n = e[++i]); while (++i < o) n = t(n, e[i], i, e); return n } function G(e, t) { var n = -1, r = Array(e); while (++n < e) r[n] = t(n); return r } function X(e, t) { return null == e ? void 0 : e[t] } function J(e) { var t = !1; if (null != e && "function" != typeof e.toString) try { t = !!(e + "") } catch (n) { } return t } function Q(e) { var t = -1, n = Array(e.size); return e.forEach((function (e, r) { n[++t] = [r, e] })), n } function Z(e, t) { return function (n) { return e(t(n)) } } function ee(e) { var t = -1, n = Array(e.size); return e.forEach((function (e) { n[++t] = e })), n } var te = Array.prototype, ne = Function.prototype, re = Object.prototype, ie = R["__core-js_shared__"], oe = function () { var e = /[^.]+$/.exec(ie && ie.keys && ie.keys.IE_PROTO || ""); return e ? "Symbol(src)_1." + e : "" }(), ae = ne.toString, se = re.hasOwnProperty, ce = re.toString, le = RegExp("^" + ae.call(se).replace(E, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), ue = $ ? R.Buffer : void 0, he = R.Symbol, fe = R.Uint8Array, de = Z(Object.getPrototypeOf, Object), pe = Object.create, ve = re.propertyIsEnumerable, me = te.splice, ge = Object.getOwnPropertySymbols, ye = ue ? ue.isBuffer : void 0, be = Z(Object.keys, Object), xe = kt(R, "DataView"), we = kt(R, "Map"), _e = kt(R, "Promise"), Ce = kt(R, "Set"), Me = kt(R, "WeakMap"), Oe = kt(Object, "create"), ke = Ht(xe), Se = Ht(we), Te = Ht(_e), Ae = Ht(Ce), Le = Ht(Me), je = he ? he.prototype : void 0, ze = je ? je.valueOf : void 0; function Ee(e) { var t = -1, n = e ? e.length : 0; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } function Pe() { this.__data__ = Oe ? Oe(null) : {} } function De(e) { return this.has(e) && delete this.__data__[e] } function He(e) { var t = this.__data__; if (Oe) { var n = t[e]; return n === i ? void 0 : n } return se.call(t, e) ? t[e] : void 0 } function Ve(e) { var t = this.__data__; return Oe ? void 0 !== t[e] : se.call(t, e) } function Ie(e, t) { var n = this.__data__; return n[e] = Oe && void 0 === t ? i : t, this } function Ne(e) { var t = -1, n = e ? e.length : 0; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } function Re() { this.__data__ = [] } function Fe(e) { var t = this.__data__, n = ot(t, e); if (n < 0) return !1; var r = t.length - 1; return n == r ? t.pop() : me.call(t, n, 1), !0 } function Ye(e) { var t = this.__data__, n = ot(t, e); return n < 0 ? void 0 : t[n][1] } function $e(e) { return ot(this.__data__, e) > -1 } function Be(e, t) { var n = this.__data__, r = ot(n, e); return r < 0 ? n.push([e, t]) : n[r][1] = t, this } function We(e) { var t = -1, n = e ? e.length : 0; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } function qe() { this.__data__ = { hash: new Ee, map: new (we || Ne), string: new Ee } } function Ue(e) { return Ot(this, e)["delete"](e) } function Ke(e) { return Ot(this, e).get(e) } function Ge(e) { return Ot(this, e).has(e) } function Xe(e, t) { return Ot(this, e).set(e, t), this } function Je(e) { this.__data__ = new Ne(e) } function Qe() { this.__data__ = new Ne } function Ze(e) { return this.__data__["delete"](e) } function et(e) { return this.__data__.get(e) } function tt(e) { return this.__data__.has(e) } function nt(e, t) { var n = this.__data__; if (n instanceof Ne) { var i = n.__data__; if (!we || i.length < r - 1) return i.push([e, t]), this; n = this.__data__ = new We(i) } return n.set(e, t), this } function rt(e, t) { var n = Rt(e) || Nt(e) ? G(e.length, String) : [], r = n.length, i = !!r; for (var o in e) !t && !se.call(e, o) || i && ("length" == o || zt(o, r)) || n.push(o); return n } function it(e, t, n) { var r = e[t]; se.call(e, t) && It(r, n) && (void 0 !== n || t in e) || (e[t] = n) } function ot(e, t) { var n = e.length; while (n--) if (It(e[n][0], t)) return n; return -1 } function at(e, t) { return e && _t(t, Kt(t), e) } function st(e, t, n, r, i, o, s) { var c; if (r && (c = o ? r(e, i, o, s) : r(e)), void 0 !== c) return c; if (!qt(e)) return e; var l = Rt(e); if (l) { if (c = At(e), !t) return wt(e, c) } else { var u = Tt(e), d = u == h || u == f; if ($t(e)) return dt(e, t); if (u == v || u == a || d && !o) { if (J(e)) return o ? e : {}; if (c = Lt(d ? {} : e), !t) return Ct(e, at(c, e)) } else { if (!V[u]) return o ? e : {}; c = jt(e, u, st, t) } } s || (s = new Je); var p = s.get(e); if (p) return p; if (s.set(e, c), !l) var m = n ? Mt(e) : Kt(e); return q(m || e, (function (i, o) { m && (o = i, i = e[o]), it(c, o, st(i, t, n, r, o, e, s)) })), c } function ct(e) { return qt(e) ? pe(e) : {} } function lt(e, t, n) { var r = t(e); return Rt(e) ? r : U(r, n(e)) } function ut(e) { return ce.call(e) } function ht(e) { if (!qt(e) || Pt(e)) return !1; var t = Bt(e) || J(e) ? le : D; return t.test(Ht(e)) } function ft(e) { if (!Dt(e)) return be(e); var t = []; for (var n in Object(e)) se.call(e, n) && "constructor" != n && t.push(n); return t } function dt(e, t) { if (t) return e.slice(); var n = new e.constructor(e.length); return e.copy(n), n } function pt(e) { var t = new e.constructor(e.byteLength); return new fe(t).set(new fe(e)), t } function vt(e, t) { var n = t ? pt(e.buffer) : e.buffer; return new e.constructor(n, e.byteOffset, e.byteLength) } function mt(e, t, n) { var r = t ? n(Q(e), !0) : Q(e); return K(r, B, new e.constructor) } function gt(e) { var t = new e.constructor(e.source, P.exec(e)); return t.lastIndex = e.lastIndex, t } function yt(e, t, n) { var r = t ? n(ee(e), !0) : ee(e); return K(r, W, new e.constructor) } function bt(e) { return ze ? Object(ze.call(e)) : {} } function xt(e, t) { var n = t ? pt(e.buffer) : e.buffer; return new e.constructor(n, e.byteOffset, e.length) } function wt(e, t) { var n = -1, r = e.length; t || (t = Array(r)); while (++n < r) t[n] = e[n]; return t } function _t(e, t, n, r) { n || (n = {}); var i = -1, o = t.length; while (++i < o) { var a = t[i], s = r ? r(n[a], e[a], a, n, e) : void 0; it(n, a, void 0 === s ? e[a] : s) } return n } function Ct(e, t) { return _t(e, St(e), t) } function Mt(e) { return lt(e, Kt, St) } function Ot(e, t) { var n = e.__data__; return Et(t) ? n["string" == typeof t ? "string" : "hash"] : n.map } function kt(e, t) { var n = X(e, t); return ht(n) ? n : void 0 } Ee.prototype.clear = Pe, Ee.prototype["delete"] = De, Ee.prototype.get = He, Ee.prototype.has = Ve, Ee.prototype.set = Ie, Ne.prototype.clear = Re, Ne.prototype["delete"] = Fe, Ne.prototype.get = Ye, Ne.prototype.has = $e, Ne.prototype.set = Be, We.prototype.clear = qe, We.prototype["delete"] = Ue, We.prototype.get = Ke, We.prototype.has = Ge, We.prototype.set = Xe, Je.prototype.clear = Qe, Je.prototype["delete"] = Ze, Je.prototype.get = et, Je.prototype.has = tt, Je.prototype.set = nt; var St = ge ? Z(ge, Object) : Gt, Tt = ut; function At(e) { var t = e.length, n = e.constructor(t); return t && "string" == typeof e[0] && se.call(e, "index") && (n.index = e.index, n.input = e.input), n } function Lt(e) { return "function" != typeof e.constructor || Dt(e) ? {} : ct(de(e)) } function jt(e, t, n, r) { var i = e.constructor; switch (t) { case _: return pt(e); case c: case l: return new i(+e); case C: return vt(e, r); case M: case O: case k: case S: case T: case A: case L: case j: case z: return xt(e, r); case d: return mt(e, r, n); case p: case b: return new i(e); case g: return gt(e); case y: return yt(e, r, n); case x: return bt(e) } } function zt(e, t) { return t = null == t ? o : t, !!t && ("number" == typeof e || H.test(e)) && e > -1 && e % 1 == 0 && e < t } function Et(e) { var t = typeof e; return "string" == t || "number" == t || "symbol" == t || "boolean" == t ? "__proto__" !== e : null === e } function Pt(e) { return !!oe && oe in e } function Dt(e) { var t = e && e.constructor, n = "function" == typeof t && t.prototype || re; return e === n } function Ht(e) { if (null != e) { try { return ae.call(e) } catch (t) { } try { return e + "" } catch (t) { } } return "" } function Vt(e) { return st(e, !0, !0) } function It(e, t) { return e === t || e !== e && t !== t } function Nt(e) { return Yt(e) && se.call(e, "callee") && (!ve.call(e, "callee") || ce.call(e) == a) } (xe && Tt(new xe(new ArrayBuffer(1))) != C || we && Tt(new we) != d || _e && Tt(_e.resolve()) != m || Ce && Tt(new Ce) != y || Me && Tt(new Me) != w) && (Tt = function (e) { var t = ce.call(e), n = t == v ? e.constructor : void 0, r = n ? Ht(n) : void 0; if (r) switch (r) { case ke: return C; case Se: return d; case Te: return m; case Ae: return y; case Le: return w }return t }); var Rt = Array.isArray; function Ft(e) { return null != e && Wt(e.length) && !Bt(e) } function Yt(e) { return Ut(e) && Ft(e) } var $t = ye || Xt; function Bt(e) { var t = qt(e) ? ce.call(e) : ""; return t == h || t == f } function Wt(e) { return "number" == typeof e && e > -1 && e % 1 == 0 && e <= o } function qt(e) { var t = typeof e; return !!e && ("object" == t || "function" == t) } function Ut(e) { return !!e && "object" == typeof e } function Kt(e) { return Ft(e) ? rt(e) : ft(e) } function Gt() { return [] } function Xt() { return !1 } n.exports = Vt }).call(this, n("c8ba"), n("62e4")(e)) }, cd9d: function (e, t) { function n(e) { return e } e.exports = n }, cdd1: function (e, t, n) { "use strict"; var r = n("6042"), i = n.n(r), o = n("1098"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("4d91"), u = n("4d26"), h = n.n(u), f = n("c9a4"), d = n("daa3"), p = n("b488"), v = n("94eb"); function m() { } var g = "open", y = "close", b = "---", x = { name: "TreeNode", mixins: [p["a"]], __ANT_TREE_NODE: !0, props: Object(d["t"])({ eventKey: l["a"].oneOfType([l["a"].string, l["a"].number]), prefixCls: l["a"].string, root: l["a"].object, expanded: l["a"].bool, selected: l["a"].bool, checked: l["a"].bool, loaded: l["a"].bool, loading: l["a"].bool, halfChecked: l["a"].bool, title: l["a"].any, pos: l["a"].string, dragOver: l["a"].bool, dragOverGapTop: l["a"].bool, dragOverGapBottom: l["a"].bool, isLeaf: l["a"].bool, checkable: l["a"].bool, selectable: l["a"].bool, disabled: l["a"].bool, disableCheckbox: l["a"].bool, icon: l["a"].any, dataRef: l["a"].object, switcherIcon: l["a"].any, label: l["a"].any, value: l["a"].any }, {}), data: function () { return { dragNodeHighlight: !1 } }, inject: { vcTree: { default: function () { return {} } }, vcTreeNode: { default: function () { return {} } } }, provide: function () { return { vcTreeNode: this } }, mounted: function () { var e = this.eventKey, t = this.vcTree.registerTreeNode; this.syncLoadData(this.$props), t && t(e, this) }, updated: function () { this.syncLoadData(this.$props) }, beforeDestroy: function () { var e = this.eventKey, t = this.vcTree.registerTreeNode; t && t(e, null) }, methods: { onSelectorClick: function (e) { var t = this.vcTree.onNodeClick; t(e, this), this.isSelectable() ? this.onSelect(e) : this.onCheck(e) }, onSelectorDoubleClick: function (e) { var t = this.vcTree.onNodeDoubleClick; t(e, this) }, onSelect: function (e) { if (!this.isDisabled()) { var t = this.vcTree.onNodeSelect; e.preventDefault(), t(e, this) } }, onCheck: function (e) { if (!this.isDisabled()) { var t = this.disableCheckbox, n = this.checked, r = this.vcTree.onNodeCheck; if (this.isCheckable() && !t) { e.preventDefault(); var i = !n; r(e, this, i) } } }, onMouseEnter: function (e) { var t = this.vcTree.onNodeMouseEnter; t(e, this) }, onMouseLeave: function (e) { var t = this.vcTree.onNodeMouseLeave; t(e, this) }, onContextMenu: function (e) { var t = this.vcTree.onNodeContextMenu; t(e, this) }, onDragStart: function (e) { var t = this.vcTree.onNodeDragStart; e.stopPropagation(), this.setState({ dragNodeHighlight: !0 }), t(e, this); try { e.dataTransfer.setData("text/plain", "") } catch (n) { } }, onDragEnter: function (e) { var t = this.vcTree.onNodeDragEnter; e.preventDefault(), e.stopPropagation(), t(e, this) }, onDragOver: function (e) { var t = this.vcTree.onNodeDragOver; e.preventDefault(), e.stopPropagation(), t(e, this) }, onDragLeave: function (e) { var t = this.vcTree.onNodeDragLeave; e.stopPropagation(), t(e, this) }, onDragEnd: function (e) { var t = this.vcTree.onNodeDragEnd; e.stopPropagation(), this.setState({ dragNodeHighlight: !1 }), t(e, this) }, onDrop: function (e) { var t = this.vcTree.onNodeDrop; e.preventDefault(), e.stopPropagation(), this.setState({ dragNodeHighlight: !1 }), t(e, this) }, onExpand: function (e) { var t = this.vcTree.onNodeExpand; t(e, this) }, getNodeChildren: function () { var e = this.$slots["default"], t = Object(d["c"])(e), n = Object(f["j"])(t); return t.length !== n.length && Object(f["o"])(), n }, getNodeState: function () { var e = this.expanded; return this.isLeaf2() ? null : e ? g : y }, isLeaf2: function () { var e = this.isLeaf, t = this.loaded, n = this.vcTree.loadData, r = 0 !== this.getNodeChildren().length; return !1 !== e && (e || !n && !r || n && t && !r) }, isDisabled: function () { var e = this.disabled, t = this.vcTree.disabled; return !1 !== e && !(!t && !e) }, isCheckable: function () { var e = this.$props.checkable, t = this.vcTree.checkable; return !(!t || !1 === e) && t }, syncLoadData: function (e) { var t = e.expanded, n = e.loading, r = e.loaded, i = this.vcTree, o = i.loadData, a = i.onNodeLoad; if (!n && o && t && !this.isLeaf2()) { var s = 0 !== this.getNodeChildren().length; s || r || a(this) } }, isSelectable: function () { var e = this.selectable, t = this.vcTree.selectable; return "boolean" === typeof e ? e : t }, renderSwitcher: function () { var e = this.$createElement, t = this.expanded, n = this.vcTree.prefixCls, r = Object(d["g"])(this, "switcherIcon", {}, !1) || Object(d["g"])(this.vcTree, "switcherIcon", {}, !1); if (this.isLeaf2()) return e("span", { key: "switcher", class: h()(n + "-switcher", n + "-switcher-noop") }, ["function" === typeof r ? r(c()({}, this.$props, this.$props.dataRef, { isLeaf: !0 })) : r]); var i = h()(n + "-switcher", n + "-switcher_" + (t ? g : y)); return e("span", { key: "switcher", on: { click: this.onExpand }, class: i }, ["function" === typeof r ? r(c()({}, this.$props, this.$props.dataRef, { isLeaf: !1 })) : r]) }, renderCheckbox: function () { var e = this.$createElement, t = this.checked, n = this.halfChecked, r = this.disableCheckbox, i = this.vcTree.prefixCls, o = this.isDisabled(), a = this.isCheckable(); if (!a) return null; var s = "boolean" !== typeof a ? a : null; return e("span", { key: "checkbox", class: h()(i + "-checkbox", t && i + "-checkbox-checked", !t && n && i + "-checkbox-indeterminate", (o || r) && i + "-checkbox-disabled"), on: { click: this.onCheck } }, [s]) }, renderIcon: function () { var e = this.$createElement, t = this.loading, n = this.vcTree.prefixCls; return e("span", { key: "icon", class: h()(n + "-iconEle", n + "-icon__" + (this.getNodeState() || "docu"), t && n + "-icon_loading") }) }, renderSelector: function (e) { var t = this.selected, n = this.loading, r = this.dragNodeHighlight, i = Object(d["g"])(this, "icon", {}, !1), o = this.vcTree, a = o.prefixCls, s = o.showIcon, l = o.icon, u = o.draggable, f = o.loadData, p = this.isDisabled(), v = Object(d["g"])(this, "title", {}, !1), g = a + "-node-content-wrapper", y = void 0; if (s) { var x = i || l; y = x ? e("span", { class: h()(a + "-iconEle", a + "-icon__customize") }, ["function" === typeof x ? x(c()({}, this.$props, this.$props.dataRef), e) : x]) : this.renderIcon() } else f && n && (y = this.renderIcon()); var w = v, _ = e("span", { class: a + "-title" }, w ? ["function" === typeof w ? w(c()({}, this.$props, this.$props.dataRef), e) : w] : [b]); return e("span", { key: "selector", ref: "selectHandle", attrs: { title: "string" === typeof v ? v : "", draggable: !p && u || void 0, "aria-grabbed": !p && u || void 0 }, class: h()("" + g, g + "-" + (this.getNodeState() || "normal"), !p && (t || r) && a + "-node-selected", !p && u && "draggable"), on: { mouseenter: this.onMouseEnter, mouseleave: this.onMouseLeave, contextmenu: this.onContextMenu, click: this.onSelectorClick, dblclick: this.onSelectorDoubleClick, dragstart: u ? this.onDragStart : m } }, [y, _]) }, renderChildren: function () { var e = this.$createElement, t = this.expanded, n = this.pos, r = this.vcTree, i = r.prefixCls, o = r.openTransitionName, s = r.openAnimation, l = r.renderTreeNode, u = {}; o ? u = Object(v["a"])(o) : "object" === ("undefined" === typeof s ? "undefined" : a()(s)) && (u = c()({}, s), u.props = c()({ css: !1 }, u.props)); var d = this.getNodeChildren(); if (0 === d.length) return null; var p = void 0; return t && (p = e("ul", { class: h()(i + "-child-tree", t && i + "-child-tree-open"), attrs: { "data-expanded": t, role: "group" } }, [Object(f["l"])(d, (function (e, t) { return l(e, t, n) }))])), e("transition", u, [p]) } }, render: function (e) { var t, n = this.$props, r = n.dragOver, o = n.dragOverGapTop, a = n.dragOverGapBottom, s = n.isLeaf, c = n.expanded, l = n.selected, u = n.checked, h = n.halfChecked, f = n.loading, d = this.vcTree, p = d.prefixCls, v = d.filterTreeNode, g = d.draggable, y = this.isDisabled(); return e("li", { class: (t = {}, i()(t, p + "-treenode-disabled", y), i()(t, p + "-treenode-switcher-" + (c ? "open" : "close"), !s), i()(t, p + "-treenode-checkbox-checked", u), i()(t, p + "-treenode-checkbox-indeterminate", h), i()(t, p + "-treenode-selected", l), i()(t, p + "-treenode-loading", f), i()(t, "drag-over", !y && r), i()(t, "drag-over-gap-top", !y && o), i()(t, "drag-over-gap-bottom", !y && a), i()(t, "filter-node", v && v(this)), t), attrs: { role: "treeitem" }, on: { dragenter: g ? this.onDragEnter : m, dragover: g ? this.onDragOver : m, dragleave: g ? this.onDragLeave : m, drop: g ? this.onDrop : m, dragend: g ? this.onDragEnd : m } }, [this.renderSwitcher(), this.renderCheckbox(), this.renderSelector(e), this.renderChildren()]) }, isTreeNode: 1 }; t["a"] = x }, cdeb: function (e, t, n) { "use strict"; var r = n("92fa"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("0464"), c = n("ccb9"), l = n("9a63"), u = n("e32c"), h = n("4d91"), f = n("daa3"), d = n("b488"), p = n("9cba"), v = c["a"].TabPane, m = { name: "ACard", mixins: [d["a"]], props: { prefixCls: h["a"].string, title: h["a"].any, extra: h["a"].any, bordered: h["a"].bool.def(!0), bodyStyle: h["a"].object, headStyle: h["a"].object, loading: h["a"].bool.def(!1), hoverable: h["a"].bool.def(!1), type: h["a"].string, size: h["a"].oneOf(["default", "small"]), actions: h["a"].any, tabList: h["a"].array, tabBarExtraContent: h["a"].any, activeTabKey: h["a"].string, defaultActiveTabKey: h["a"].string }, inject: { configProvider: { default: function () { return p["a"] } } }, data: function () { return { widerPadding: !1 } }, methods: { getAction: function (e) { var t = this.$createElement, n = e.map((function (n, r) { return t("li", { style: { width: 100 / e.length + "%" }, key: "action-" + r }, [t("span", [n])]) })); return n }, onTabChange: function (e) { this.$emit("tabChange", e) }, isContainGrid: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = void 0; return e.forEach((function (e) { e && Object(f["o"])(e).__ANT_CARD_GRID && (t = !0) })), t } }, render: function () { var e, t, n = arguments[0], r = this.$props, o = r.prefixCls, h = r.headStyle, d = void 0 === h ? {} : h, p = r.bodyStyle, m = void 0 === p ? {} : p, g = r.loading, y = r.bordered, b = void 0 === y || y, x = r.size, w = void 0 === x ? "default" : x, _ = r.type, C = r.tabList, M = r.hoverable, O = r.activeTabKey, k = r.defaultActiveTabKey, S = this.configProvider.getPrefixCls, T = S("card", o), A = this.$slots, L = this.$scopedSlots, j = Object(f["g"])(this, "tabBarExtraContent"), z = (e = {}, a()(e, "" + T, !0), a()(e, T + "-loading", g), a()(e, T + "-bordered", b), a()(e, T + "-hoverable", !!M), a()(e, T + "-contain-grid", this.isContainGrid(A["default"])), a()(e, T + "-contain-tabs", C && C.length), a()(e, T + "-" + w, "default" !== w), a()(e, T + "-type-" + _, !!_), e), E = 0 === m.padding || "0px" === m.padding ? { padding: 24 } : void 0, P = n("div", { class: T + "-loading-content", style: E }, [n(l["a"], { attrs: { gutter: 8 } }, [n(u["a"], { attrs: { span: 22 } }, [n("div", { class: T + "-loading-block" })])]), n(l["a"], { attrs: { gutter: 8 } }, [n(u["a"], { attrs: { span: 8 } }, [n("div", { class: T + "-loading-block" })]), n(u["a"], { attrs: { span: 15 } }, [n("div", { class: T + "-loading-block" })])]), n(l["a"], { attrs: { gutter: 8 } }, [n(u["a"], { attrs: { span: 6 } }, [n("div", { class: T + "-loading-block" })]), n(u["a"], { attrs: { span: 18 } }, [n("div", { class: T + "-loading-block" })])]), n(l["a"], { attrs: { gutter: 8 } }, [n(u["a"], { attrs: { span: 13 } }, [n("div", { class: T + "-loading-block" })]), n(u["a"], { attrs: { span: 9 } }, [n("div", { class: T + "-loading-block" })])]), n(l["a"], { attrs: { gutter: 8 } }, [n(u["a"], { attrs: { span: 4 } }, [n("div", { class: T + "-loading-block" })]), n(u["a"], { attrs: { span: 3 } }, [n("div", { class: T + "-loading-block" })]), n(u["a"], { attrs: { span: 16 } }, [n("div", { class: T + "-loading-block" })])])]), D = void 0 !== O, H = { props: (t = { size: "large" }, a()(t, D ? "activeKey" : "defaultActiveKey", D ? O : k), a()(t, "tabBarExtraContent", j), t), on: { change: this.onTabChange }, class: T + "-head-tabs" }, V = void 0, I = C && C.length ? n(c["a"], H, [C.map((function (e) { var t = e.tab, r = e.scopedSlots, i = void 0 === r ? {} : r, o = i.tab, a = void 0 !== t ? t : L[o] ? L[o](e) : null; return n(v, { attrs: { tab: a, disabled: e.disabled }, key: e.key }) }))]) : null, N = Object(f["g"])(this, "title"), R = Object(f["g"])(this, "extra"); (N || R || I) && (V = n("div", { class: T + "-head", style: d }, [n("div", { class: T + "-head-wrapper" }, [N && n("div", { class: T + "-head-title" }, [N]), R && n("div", { class: T + "-extra" }, [R])]), I])); var F = A["default"], Y = Object(f["g"])(this, "cover"), $ = Y ? n("div", { class: T + "-cover" }, [Y]) : null, B = n("div", { class: T + "-body", style: m }, [g ? P : F]), W = Object(f["c"])(this.$slots.actions), q = W && W.length ? n("ul", { class: T + "-actions" }, [this.getAction(W)]) : null; return n("div", i()([{ class: z, ref: "cardContainerRef" }, { on: Object(s["a"])(Object(f["k"])(this), ["tabChange", "tab-change"]) }]), [V, $, F ? B : null, q]) } }, g = { name: "ACardMeta", props: { prefixCls: h["a"].string, title: h["a"].any, description: h["a"].any }, inject: { configProvider: { default: function () { return p["a"] } } }, render: function () { var e = arguments[0], t = this.$props.prefixCls, n = this.configProvider.getPrefixCls, r = n("card", t), o = a()({}, r + "-meta", !0), s = Object(f["g"])(this, "avatar"), c = Object(f["g"])(this, "title"), l = Object(f["g"])(this, "description"), u = s ? e("div", { class: r + "-meta-avatar" }, [s]) : null, h = c ? e("div", { class: r + "-meta-title" }, [c]) : null, d = l ? e("div", { class: r + "-meta-description" }, [l]) : null, p = h || d ? e("div", { class: r + "-meta-detail" }, [h, d]) : null; return e("div", i()([{ on: Object(f["k"])(this) }, { class: o }]), [u, p]) } }, y = { name: "ACardGrid", __ANT_CARD_GRID: !0, props: { prefixCls: h["a"].string, hoverable: h["a"].bool }, inject: { configProvider: { default: function () { return p["a"] } } }, render: function () { var e, t = arguments[0], n = this.$props, r = n.prefixCls, o = n.hoverable, s = void 0 === o || o, c = this.configProvider.getPrefixCls, l = c("card", r), u = (e = {}, a()(e, l + "-grid", !0), a()(e, l + "-grid-hoverable", s), e); return t("div", i()([{ on: Object(f["k"])(this) }, { class: u }]), [this.$slots["default"]]) } }, b = n("db14"); m.Meta = g, m.Grid = y, m.install = function (e) { e.use(b["a"]), e.component(m.name, m), e.component(g.name, g), e.component(y.name, y) }; t["a"] = m }, cdf9: function (e, t, n) { var r = n("825a"), i = n("861d"), o = n("f069"); e.exports = function (e, t) { if (r(e), i(t) && t.constructor === e) return t; var n = o.f(e), a = n.resolve; return a(t), n.promise } }, ce4e: function (e, t, n) { var r = n("da84"); e.exports = function (e, t) { try { Object.defineProperty(r, e, { value: t, configurable: !0, writable: !0 }) } catch (n) { r[e] = t } return t } }, ce7a: function (e, t, n) { var r = n("9c0e"), i = n("0983"), o = n("5a94")("IE_PROTO"), a = Object.prototype; e.exports = Object.getPrototypeOf || function (e) { return e = i(e), r(e, o) ? e[o] : "function" == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? a : null } }, ce86: function (e, t, n) { var r = n("9e69"), i = n("7948"), o = n("6747"), a = n("ffd6"), s = 1 / 0, c = r ? r.prototype : void 0, l = c ? c.toString : void 0; function u(e) { if ("string" == typeof e) return e; if (o(e)) return i(e, u) + ""; if (a(e)) return l ? l.call(e) : ""; var t = e + ""; return "0" == t && 1 / e == -s ? "-0" : t } e.exports = u }, cecd: function (e, t) { e.exports = function (e, t) { if (e.indexOf) return e.indexOf(t); for (var n = 0; n < e.length; ++n)if (e[n] === t) return n; return -1 } }, cee8: function (e, t, n) { var r = n("23e7"), i = n("861d"), o = n("f183").onFreeze, a = n("bb2f"), s = n("d039"), c = Object.preventExtensions, l = s((function () { c(1) })); r({ target: "Object", stat: !0, forced: l, sham: !a }, { preventExtensions: function (e) { return c && i(e) ? c(o(e)) : e } }) }, cfc3: function (e, t, n) { var r = n("74e8"); r("Float32", (function (e) { return function (t, n, r) { return e(this, t, n, r) } })) }, d002: function (e, t, n) { }, d012: function (e, t) { e.exports = {} }, d02c: function (e, t, n) { var r = n("5e2e"), i = n("79bc"), o = n("7b83"), a = 200; function s(e, t) { var n = this.__data__; if (n instanceof r) { var s = n.__data__; if (!i || s.length < a - 1) return s.push([e, t]), this.size = ++n.size, this; n = this.__data__ = new o(s) } return n.set(e, t), this.size = n.size, this } e.exports = s }, d039: function (e, t) { e.exports = function (e) { try { return !!e() } catch (t) { return !0 } } }, d066: function (e, t, n) { var r = n("da84"), i = function (e) { return "function" == typeof e ? e : void 0 }; e.exports = function (e, t) { return arguments.length < 2 ? i(r[e]) : r[e] && r[e][t] } }, d0b5: function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t["default"] = void 0; var i = r(n("448a")), o = r(n("970b")), a = n("53b8"), s = n("5557"), c = function e(t) { (0, o["default"])(this, e), this.colorProcessor(t); var n = { fill: [0, 0, 0, 1], stroke: [0, 0, 0, 0], opacity: 1, lineCap: null, lineJoin: null, lineDash: null, lineDashOffset: null, shadowBlur: 0, shadowColor: [0, 0, 0, 0], shadowOffsetX: 0, shadowOffsetY: 0, lineWidth: 0, graphCenter: null, scale: null, rotate: null, translate: null, hoverCursor: "pointer", fontStyle: "normal", fontVarient: "normal", fontWeight: "normal", fontSize: 10, fontFamily: "Arial", textAlign: "center", textBaseline: "middle", gradientColor: null, gradientType: "linear", gradientParams: null, gradientWith: "stroke", gradientStops: "auto", colors: null }; Object.assign(this, n, t) }; function l(e, t) { e.save(); var n = t.graphCenter, r = t.rotate, o = t.scale, a = t.translate; n instanceof Array && (e.translate.apply(e, (0, i["default"])(n)), r && e.rotate(r * Math.PI / 180), o instanceof Array && e.scale.apply(e, (0, i["default"])(o)), a && e.translate.apply(e, (0, i["default"])(a)), e.translate(-n[0], -n[1])) } t["default"] = c, c.prototype.colorProcessor = function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = t ? a.getColorFromRgbValue : a.getRgbaValue, r = ["fill", "stroke", "shadowColor"], i = Object.keys(e), o = i.filter((function (e) { return r.find((function (t) { return t === e })) })); o.forEach((function (t) { return e[t] = n(e[t]) })); var s = e.gradientColor, c = e.colors; if (s && (e.gradientColor = s.map((function (e) { return n(e) }))), c) { var l = Object.keys(c); l.forEach((function (e) { return c[e] = n(c[e]) })) } }, c.prototype.initStyle = function (e) { l(e, this), h(e, this), f(e, this) }; var u = ["lineCap", "lineJoin", "lineDashOffset", "shadowOffsetX", "shadowOffsetY", "lineWidth", "textAlign", "textBaseline"]; function h(e, t) { var n = t.fill, r = t.stroke, o = t.shadowColor, s = t.opacity; u.forEach((function (n) { (n || "number" === typeof n) && (e[n] = t[n]) })), n = (0, i["default"])(n), r = (0, i["default"])(r), o = (0, i["default"])(o), n[3] *= s, r[3] *= s, o[3] *= s, e.fillStyle = (0, a.getColorFromRgbValue)(n), e.strokeStyle = (0, a.getColorFromRgbValue)(r), e.shadowColor = (0, a.getColorFromRgbValue)(o); var c = t.lineDash, l = t.shadowBlur; c && (c = c.map((function (e) { return e >= 0 ? e : 0 })), e.setLineDash(c)), "number" === typeof l && (e.shadowBlur = l > 0 ? l : .001); var h = t.fontStyle, f = t.fontVarient, d = t.fontWeight, p = t.fontSize, v = t.fontFamily; e.font = h + " " + f + " " + d + " " + p + "px " + v } function f(e, t) { if (d(t)) { var n = t.gradientColor, r = t.gradientParams, o = t.gradientType, s = t.gradientWith, c = t.gradientStops, l = t.opacity; n = n.map((function (e) { var t = e[3] * l, n = (0, i["default"])(e); return n[3] = t, n })), n = n.map((function (e) { return (0, a.getColorFromRgbValue)(e) })), "auto" === c && (c = p(n)); var u = e["create".concat(o.slice(0, 1).toUpperCase() + o.slice(1), "Gradient")].apply(e, (0, i["default"])(r)); c.forEach((function (e, t) { return u.addColorStop(e, n[t]) })), e["".concat(s, "Style")] = u } } function d(e) { var t = e.gradientColor, n = e.gradientParams, r = e.gradientType, i = e.gradientWith, o = e.gradientStops; if (!t || !n) return !1; if (1 === t.length) return console.warn("The gradient needs to provide at least two colors"), !1; if ("linear" !== r && "radial" !== r) return console.warn("GradientType only supports linear or radial, current value is " + r), !1; var a = n.length; return "linear" === r && 4 !== a || "radial" === r && 6 !== a ? (console.warn("The expected length of gradientParams is " + ("linear" === r ? "4" : "6")), !1) : "fill" !== i && "stroke" !== i ? (console.warn("GradientWith only supports fill or stroke, current value is " + i), !1) : "auto" === o || o instanceof Array || (console.warn("gradientStops only supports 'auto' or Number Array ([0, .5, 1]), current value is " + o), !1) } function p(e) { var t = 1 / (e.length - 1); return e.map((function (e, n) { return t * n })) } c.prototype.restoreTransform = function (e) { e.restore() }, c.prototype.update = function (e) { this.colorProcessor(e), Object.assign(this, e) }, c.prototype.getStyle = function () { var e = (0, s.deepClone)(this, !0); return this.colorProcessor(e, !0), e } }, d139: function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("b727").find, o = r.aTypedArray, a = r.exportTypedArrayMethod; a("find", (function (e) { return i(o(this), e, arguments.length > 1 ? arguments[1] : void 0) })) }, d13f: function (e, t, n) { "use strict"; n("b2a3"), n("13d0") }, d16a: function (e, t, n) { var r = n("fc5e"), i = Math.min; e.exports = function (e) { return e > 0 ? i(r(e), 9007199254740991) : 0 } }, d1e7: function (e, t, n) { "use strict"; var r = {}.propertyIsEnumerable, i = Object.getOwnPropertyDescriptor, o = i && !r.call({ 1: 2 }, 1); t.f = o ? function (e) { var t = i(this, e); return !!t && t.enumerable } : r }, d28b: function (e, t, n) { var r = n("746f"); r("iterator") }, d2a3: function (e, t, n) { "use strict"; n("8b79") }, d2bb: function (e, t, n) { var r = n("825a"), i = n("3bbe"); e.exports = Object.setPrototypeOf || ("__proto__" in {} ? function () { var e, t = !1, n = {}; try { e = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set, e.call(n, []), t = n instanceof Array } catch (o) { } return function (n, o) { return r(n), i(o), t ? e.call(n, o) : n.__proto__ = o, n } }() : void 0) }, d327: function (e, t) { function n() { return [] } e.exports = n }, d370: function (e, t, n) { var r = n("253c"), i = n("1310"), o = Object.prototype, a = o.hasOwnProperty, s = o.propertyIsEnumerable, c = r(function () { return arguments }()) ? r : function (e) { return i(e) && a.call(e, "callee") && !s.call(e, "callee") }; e.exports = c }, d3b7: function (e, t, n) { var r = n("00ee"), i = n("6eeb"), o = n("b041"); r || i(Object.prototype, "toString", o, { unsafe: !0 }) }, d41d: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return c })), n.d(t, "b", (function () { return l })); var r = ["moz", "ms", "webkit"]; function i() { var e = 0; return function (t) { var n = (new Date).getTime(), r = Math.max(0, 16 - (n - e)), i = window.setTimeout((function () { t(n + r) }), r); return e = n + r, i } } function o() { if ("undefined" === typeof window) return function () { }; if (window.requestAnimationFrame) return window.requestAnimationFrame.bind(window); var e = r.filter((function (e) { return e + "RequestAnimationFrame" in window }))[0]; return e ? window[e + "RequestAnimationFrame"] : i() } function a(e) { if ("undefined" === typeof window) return null; if (window.cancelAnimationFrame) return window.cancelAnimationFrame(e); var t = r.filter((function (e) { return e + "CancelAnimationFrame" in window || e + "CancelRequestAnimationFrame" in window }))[0]; return t ? (window[t + "CancelAnimationFrame"] || window[t + "CancelRequestAnimationFrame"]).call(this, e) : clearTimeout(e) } var s = o(), c = function (e) { return a(e.id) }, l = function (e, t) { var n = Date.now(); function r() { Date.now() - n >= t ? e.call() : i.id = s(r) } var i = { id: s(r) }; return i } }, d44e: function (e, t, n) { var r = n("9bf2").f, i = n("5135"), o = n("b622"), a = o("toStringTag"); e.exports = function (e, t, n) { e && !i(e = n ? e : e.prototype, a) && r(e, a, { configurable: !0, value: t }) } }, d4c3: function (e, t, n) { var r = n("342f"), i = n("da84"); e.exports = /ipad|iphone|ipod/i.test(r) && void 0 !== i.Pebble }, d4ec: function (e, t, n) { "use strict"; function r(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } n.d(t, "a", (function () { return r })) }, d51d: function (e, t, n) { }, d58f: function (e, t, n) { var r = n("1c0b"), i = n("7b0b"), o = n("44ad"), a = n("50c4"), s = function (e) { return function (t, n, s, c) { r(n); var l = i(t), u = o(l), h = a(l.length), f = e ? h - 1 : 0, d = e ? -1 : 1; if (s < 2) while (1) { if (f in u) { c = u[f], f += d; break } if (f += d, e ? f < 0 : h <= f) throw TypeError("Reduce of empty array with no initial value") } for (; e ? f >= 0 : h > f; f += d)f in u && (c = n(c, u[f], f, l)); return c } }; e.exports = { left: s(!1), right: s(!0) } }, d5d6: function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("b727").forEach, o = r.aTypedArray, a = r.exportTypedArrayMethod; a("forEach", (function (e) { i(o(this), e, arguments.length > 1 ? arguments[1] : void 0) })) }, d612: function (e, t, n) { var r = n("7b83"), i = n("7ed2"), o = n("dc0f"); function a(e) { var t = -1, n = null == e ? 0 : e.length; this.__data__ = new r; while (++t < n) this.add(e[t]) } a.prototype.add = a.prototype.push = i, a.prototype.has = o, e.exports = a }, d6dd: function (e, t, n) { var r = n("23e7"), i = n("d066"), o = n("825a"), a = n("bb2f"); r({ target: "Reflect", stat: !0, sham: !a }, { preventExtensions: function (e) { o(e); try { var t = i("Object", "preventExtensions"); return t && t(e), !0 } catch (n) { return !1 } } }) }, d784: function (e, t, n) { "use strict"; n("ac1f"); var r = n("6eeb"), i = n("9263"), o = n("d039"), a = n("b622"), s = n("9112"), c = a("species"), l = RegExp.prototype; e.exports = function (e, t, n, u) { var h = a(e), f = !o((function () { var t = {}; return t[h] = function () { return 7 }, 7 != ""[e](t) })), d = f && !o((function () { var t = !1, n = /a/; return "split" === e && (n = {}, n.constructor = {}, n.constructor[c] = function () { return n }, n.flags = "", n[h] = /./[h]), n.exec = function () { return t = !0, null }, n[h](""), !t })); if (!f || !d || n) { var p = /./[h], v = t(h, ""[e], (function (e, t, n, r, o) { var a = t.exec; return a === i || a === l.exec ? f && !o ? { done: !0, value: p.call(t, n, r) } : { done: !0, value: e.call(n, t, r) } : { done: !1 } })); r(String.prototype, e, v[0]), r(l, h, v[1]) } u && s(l[h], "sham", !0) } }, d7ee: function (e, t, n) { var r = n("c3fc"), i = n("b047f"), o = n("99d3"), a = o && o.isSet, s = a ? i(a) : r; e.exports = s }, d80f: function (e, t, n) { var r = n("23e7"), i = n("fc6a"), o = n("50c4"), a = n("577e"); r({ target: "String", stat: !0 }, { raw: function (e) { var t = i(e.raw), n = o(t.length), r = arguments.length, s = [], c = 0; while (n > c) s.push(a(t[c++])), c < r && s.push(a(arguments[c])); return s.join("") } }) }, d81d: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("b727").map, o = n("1dde"), a = o("map"); r({ target: "Array", proto: !0, forced: !a }, { map: function (e) { return i(this, e, arguments.length > 1 ? arguments[1] : void 0) } }) }, d865: function (e, t, n) { "use strict"; var r = n("8e8e"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("6042"), c = n.n(s), l = n("d96e"), u = n.n(l), h = n("7d1c"), f = n("3593"), d = n("4d91"), p = n("daa3"), v = n("7b05"), m = n("9cba"), g = n("0c63"); function y() { return { showLine: d["a"].bool, multiple: d["a"].bool, autoExpandParent: d["a"].bool, checkStrictly: d["a"].bool, checkable: d["a"].bool, disabled: d["a"].bool, defaultExpandAll: d["a"].bool, defaultExpandParent: d["a"].bool, defaultExpandedKeys: d["a"].array, expandedKeys: d["a"].array, checkedKeys: d["a"].oneOfType([d["a"].array, d["a"].shape({ checked: d["a"].array, halfChecked: d["a"].array }).loose]), defaultCheckedKeys: d["a"].array, selectedKeys: d["a"].array, defaultSelectedKeys: d["a"].array, selectable: d["a"].bool, filterAntTreeNode: d["a"].func, loadData: d["a"].func, loadedKeys: d["a"].array, draggable: d["a"].bool, showIcon: d["a"].bool, icon: d["a"].func, switcherIcon: d["a"].any, prefixCls: d["a"].string, filterTreeNode: d["a"].func, openAnimation: d["a"].any, treeNodes: d["a"].array, treeData: d["a"].array, replaceFields: d["a"].object, blockNode: d["a"].bool } } var b = { name: "ATree", model: { prop: "checkedKeys", event: "check" }, props: Object(p["t"])(y(), { checkable: !1, showIcon: !1, openAnimation: { on: f["a"], props: { appear: null } }, blockNode: !1 }), inject: { configProvider: { default: function () { return m["a"] } } }, created: function () { u()(!("treeNodes" in Object(p["l"])(this)), "`treeNodes` is deprecated. please use treeData instead.") }, TreeNode: h["TreeNode"], methods: { renderSwitcherIcon: function (e, t, n) { var r = n.isLeaf, i = n.expanded, o = n.loading, a = this.$createElement, s = this.$props.showLine; if (o) return a(g["a"], { attrs: { type: "loading" }, class: e + "-switcher-loading-icon" }); if (r) return s ? a(g["a"], { attrs: { type: "file" }, class: e + "-switcher-line-icon" }) : null; var l = e + "-switcher-icon"; return t ? Object(v["a"])(t, { class: c()({}, l, !0) }) : a(g["a"], s ? { attrs: { type: i ? "minus-square" : "plus-square", theme: "outlined" }, class: e + "-switcher-line-icon" } : { attrs: { type: "caret-down", theme: "filled" }, class: l }) }, updateTreeData: function (e) { var t = this, n = this.$slots, r = this.$scopedSlots, o = { children: "children", title: "title", key: "key" }, s = a()({}, o, this.$props.replaceFields); return e.map((function (e) { var o = e[s.key], c = e[s.children], l = e.on, u = void 0 === l ? {} : l, h = e.slots, f = void 0 === h ? {} : h, d = e.scopedSlots, p = void 0 === d ? {} : d, v = e["class"], m = e.style, g = i()(e, ["on", "slots", "scopedSlots", "class", "style"]), y = a()({}, g, { icon: r[p.icon] || n[f.icon] || g.icon, switcherIcon: r[p.switcherIcon] || n[f.switcherIcon] || g.switcherIcon, title: r[p.title] || n[f.title] || g[s.title], dataRef: e, on: u, key: o, class: v, style: m }); return c ? a()({}, y, { children: t.updateTreeData(c) }) : y })) } }, render: function () { var e, t = this, n = arguments[0], r = Object(p["l"])(this), i = this.$slots, o = this.$scopedSlots, s = r.prefixCls, l = r.showIcon, u = r.treeNodes, f = r.blockNode, d = this.configProvider.getPrefixCls, v = d("tree", s), m = Object(p["g"])(this, "switcherIcon"), g = r.checkable, y = r.treeData || u; y && (y = this.updateTreeData(y)); var b = { props: a()({}, r, { prefixCls: v, checkable: g ? n("span", { class: v + "-checkbox-inner" }) : g, children: Object(p["c"])(o["default"] ? o["default"]() : i["default"]), __propsSymbol__: Symbol(), switcherIcon: function (e) { return t.renderSwitcherIcon(v, m, e) } }), on: Object(p["k"])(this), ref: "tree", class: (e = {}, c()(e, v + "-icon-hide", !l), c()(e, v + "-block-node", f), e) }; return y && (b.props.treeData = y), n(h["Tree"], b) } }, x = n("9b57"), w = n.n(x), _ = n("0464"), C = n("b047"), M = n.n(C), O = n("6a21"), k = n("c9a4"), S = { None: "node", Start: "start", End: "end" }; function T(e, t) { var n = Object(k["j"])(e) || []; function r(e) { var n = e.key, r = Object(p["p"])(e)["default"]; !1 !== t(n, e) && T("function" === typeof r ? r() : r, t) } n.forEach(r) } function A(e) { var t = Object(k["h"])(e), n = t.keyEntities; return [].concat(w()(n.keys())) } function L(e, t, n, r) { var i = [], o = S.None; if (n && n === r) return [n]; if (!n || !r) return []; function a(e) { return e === n || e === r } return T(e, (function (e) { if (o === S.End) return !1; if (a(e)) { if (i.push(e), o === S.None) o = S.Start; else if (o === S.Start) return o = S.End, !1 } else o === S.Start && i.push(e); return -1 !== t.indexOf(e) })), i } function j(e, t) { var n = [].concat(w()(t)), r = []; return T(e, (function (e, t) { var i = n.indexOf(e); return -1 !== i && (r.push(t), n.splice(i, 1)), !!n.length })), r } function z(e) { var t = []; return (e || []).forEach((function (e) { t.push(e.key), e.children && (t = [].concat(w()(t), w()(z(e.children)))) })), t } var E = n("b488"); function P(e, t) { var n = e.isLeaf, r = e.expanded; return t(g["a"], n ? { attrs: { type: "file" } } : { attrs: { type: r ? "folder-open" : "folder" } }) } var D = { name: "ADirectoryTree", mixins: [E["a"]], model: { prop: "checkedKeys", event: "check" }, props: Object(p["t"])(a()({}, y(), { expandAction: d["a"].oneOf([!1, "click", "doubleclick", "dblclick"]) }), { showIcon: !0, expandAction: "click" }), inject: { configProvider: { default: function () { return m["a"] } } }, data: function () { var e = Object(p["l"])(this), t = e.defaultExpandAll, n = e.defaultExpandParent, r = e.expandedKeys, i = e.defaultExpandedKeys, o = Object(k["h"])(this.$slots["default"]), s = o.keyEntities, c = {}; return c._selectedKeys = e.selectedKeys || e.defaultSelectedKeys || [], t ? e.treeData ? c._expandedKeys = z(e.treeData) : c._expandedKeys = A(this.$slots["default"]) : c._expandedKeys = n ? Object(k["f"])(r || i, s) : r || i, this.onDebounceExpand = M()(this.expandFolderNode, 200, { leading: !0 }), a()({ _selectedKeys: [], _expandedKeys: [] }, c) }, watch: { expandedKeys: function (e) { this.setState({ _expandedKeys: e }) }, selectedKeys: function (e) { this.setState({ _selectedKeys: e }) } }, methods: { onExpand: function (e, t) { this.setUncontrolledState({ _expandedKeys: e }), this.$emit("expand", e, t) }, onClick: function (e, t) { var n = this.$props.expandAction; "click" === n && this.onDebounceExpand(e, t), this.$emit("click", e, t) }, onDoubleClick: function (e, t) { var n = this.$props.expandAction; "dblclick" !== n && "doubleclick" !== n || this.onDebounceExpand(e, t), this.$emit("doubleclick", e, t), this.$emit("dblclick", e, t) }, onSelect: function (e, t) { var n = this.$props.multiple, r = this.$slots["default"] || [], i = this.$data._expandedKeys, o = void 0 === i ? [] : i, s = t.node, c = t.nativeEvent, l = s.eventKey, u = void 0 === l ? "" : l, h = {}, f = a()({}, t, { selected: !0 }), d = c.ctrlKey || c.metaKey, p = c.shiftKey, v = void 0; n && d ? (v = e, this.lastSelectedKey = u, this.cachedSelectedKeys = v, f.selectedNodes = j(r, v)) : n && p ? (v = Array.from(new Set([].concat(w()(this.cachedSelectedKeys || []), w()(L(r, o, u, this.lastSelectedKey))))), f.selectedNodes = j(r, v)) : (v = [u], this.lastSelectedKey = u, this.cachedSelectedKeys = v, f.selectedNodes = [t.node]), h._selectedKeys = v, this.$emit("update:selectedKeys", v), this.$emit("select", v, f), this.setUncontrolledState(h) }, expandFolderNode: function (e, t) { var n = t.isLeaf; if (!(n || e.shiftKey || e.metaKey || e.ctrlKey) && this.$refs.tree.$refs.tree) { var r = this.$refs.tree.$refs.tree; r.onNodeExpand(e, t) } }, setUncontrolledState: function (e) { var t = Object(_["a"])(e, Object.keys(Object(p["l"])(this)).map((function (e) { return "_" + e }))); Object.keys(t).length && this.setState(t) } }, render: function () { var e = arguments[0], t = Object(p["l"])(this), n = t.prefixCls, r = i()(t, ["prefixCls"]), o = this.configProvider.getPrefixCls, s = o("tree", n), c = this.$data, l = c._expandedKeys, u = c._selectedKeys, h = Object(p["k"])(this); Object(O["a"])(!h.doubleclick, "`doubleclick` is deprecated. please use `dblclick` instead."); var f = { props: a()({ icon: P }, r, { prefixCls: s, expandedKeys: l, selectedKeys: u, switcherIcon: Object(p["g"])(this, "switcherIcon") }), ref: "tree", class: s + "-directory", on: a()({}, Object(_["a"])(h, ["update:selectedKeys"]), { select: this.onSelect, click: this.onClick, dblclick: this.onDoubleClick, expand: this.onExpand }) }; return e(b, f, [this.$slots["default"]]) } }, H = n("db14"); b.TreeNode.name = "ATreeNode", b.DirectoryTree = D, b.install = function (e) { e.use(H["a"]), e.component(b.name, b), e.component(b.TreeNode.name, b.TreeNode), e.component(D.name, D) }; t["a"] = b }, d88f: function (e, t, n) { "use strict"; n("b2a3"), n("2047"), n("06f4"), n("7f6b"), n("68c7"), n("1efe") }, d96e: function (e, t, n) { "use strict"; var r = !1, i = function () { }; if (r) { var o = function (e, t) { var n = arguments.length; t = new Array(n > 1 ? n - 1 : 0); for (var r = 1; r < n; r++)t[r - 1] = arguments[r]; var i = 0, o = "Warning: " + e.replace(/%s/g, (function () { return t[i++] })); "undefined" !== typeof console && console.error(o); try { throw new Error(o) } catch (a) { } }; i = function (e, t, n) { var r = arguments.length; n = new Array(r > 2 ? r - 2 : 0); for (var i = 2; i < r; i++)n[i - 2] = arguments[i]; if (void 0 === t) throw new Error("`warning(condition, format, ...args)` requires a warning message argument"); e || o.apply(null, [t].concat(n)) } } e.exports = i }, d998: function (e, t, n) { var r = n("342f"); e.exports = /MSIE|Trident/.test(r) }, d9a8: function (e, t) { function n(e) { return e !== e } e.exports = n }, d9b5: function (e, t, n) { var r = n("d066"), i = n("fdbf"); e.exports = i ? function (e) { return "symbol" == typeof e } : function (e) { var t = r("Symbol"); return "function" == typeof t && Object(e) instanceof t } }, da03: function (e, t, n) { var r = n("2b3e"), i = r["__core-js_shared__"]; e.exports = i }, da05: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return v })); var r = n("6042"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("1098"), c = n.n(s), l = n("4d91"), u = n("9cba"), h = n("daa3"), f = l["a"].oneOfType([l["a"].string, l["a"].number]), d = l["a"].shape({ span: f, order: f, offset: f, push: f, pull: f }).loose, p = l["a"].oneOfType([l["a"].string, l["a"].number, d]), v = { span: f, order: f, offset: f, push: f, pull: f, xs: p, sm: p, md: p, lg: p, xl: p, xxl: p, prefixCls: l["a"].string, flex: f }; t["b"] = { name: "ACol", props: v, inject: { configProvider: { default: function () { return u["a"] } }, rowContext: { default: function () { return null } } }, methods: { parseFlex: function (e) { return "number" === typeof e ? e + " " + e + " auto" : /^\d+(\.\d+)?(px|em|rem|%)$/.test(e) ? "0 0 " + e : e } }, render: function () { var e, t = this, n = arguments[0], r = this.span, o = this.order, s = this.offset, l = this.push, u = this.pull, f = this.flex, d = this.prefixCls, p = this.$slots, v = this.rowContext, m = this.configProvider.getPrefixCls, g = m("col", d), y = {};["xs", "sm", "md", "lg", "xl", "xxl"].forEach((function (e) { var n, r = {}, o = t[e]; "number" === typeof o ? r.span = o : "object" === ("undefined" === typeof o ? "undefined" : c()(o)) && (r = o || {}), y = a()({}, y, (n = {}, i()(n, g + "-" + e + "-" + r.span, void 0 !== r.span), i()(n, g + "-" + e + "-order-" + r.order, r.order || 0 === r.order), i()(n, g + "-" + e + "-offset-" + r.offset, r.offset || 0 === r.offset), i()(n, g + "-" + e + "-push-" + r.push, r.push || 0 === r.push), i()(n, g + "-" + e + "-pull-" + r.pull, r.pull || 0 === r.pull), n)) })); var b = a()((e = {}, i()(e, "" + g, !0), i()(e, g + "-" + r, void 0 !== r), i()(e, g + "-order-" + o, o), i()(e, g + "-offset-" + s, s), i()(e, g + "-push-" + l, l), i()(e, g + "-pull-" + u, u), e), y), x = { on: Object(h["k"])(this), class: b, style: {} }; if (v) { var w = v.getGutter(); w && (x.style = a()({}, w[0] > 0 ? { paddingLeft: w[0] / 2 + "px", paddingRight: w[0] / 2 + "px" } : {}, w[1] > 0 ? { paddingTop: w[1] / 2 + "px", paddingBottom: w[1] / 2 + "px" } : {})) } return f && (x.style.flex = this.parseFlex(f)), n("div", x, [p["default"]]) } } }, da30: function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("4d91"); function a(e) { var t = e, n = []; function r(e) { t = i()({}, t, e); for (var r = 0; r < n.length; r++)n[r]() } function o() { return t } function a(e) { return n.push(e), function () { var t = n.indexOf(e); n.splice(t, 1) } } return { setState: r, getState: o, subscribe: a } } var s = o["a"].shape({ subscribe: o["a"].func.isRequired, setState: o["a"].func.isRequired, getState: o["a"].func.isRequired }), c = { name: "StoreProvider", props: { store: s.isRequired }, provide: function () { return { storeContext: this.$props } }, render: function () { return this.$slots["default"][0] } }, l = n("1462"), u = n("b488"), h = n("daa3"), f = n("22a4"), d = { name: "Menu", props: i()({}, f["a"], { selectable: o["a"].bool.def(!0) }), mixins: [u["a"]], data: function () { var e = Object(h["l"])(this), t = e.defaultSelectedKeys, n = e.defaultOpenKeys; return "selectedKeys" in e && (t = e.selectedKeys || []), "openKeys" in e && (n = e.openKeys || []), this.store = a({ selectedKeys: t, openKeys: n, activeKey: { "0-menu-": Object(l["b"])(i()({}, e, { children: this.$slots["default"] || [] }), e.activeKey) } }), {} }, mounted: function () { this.updateMiniStore() }, updated: function () { this.updateMiniStore() }, methods: { onSelect: function (e) { var t = this.$props; if (t.selectable) { var n = this.store.getState().selectedKeys, r = e.key; n = t.multiple ? n.concat([r]) : [r], Object(h["b"])(this, "selectedKeys") || this.store.setState({ selectedKeys: n }), this.__emit("select", i()({}, e, { selectedKeys: n })) } }, onClick: function (e) { this.__emit("click", e) }, onKeyDown: function (e, t) { this.$refs.innerMenu.getWrappedInstance().onKeyDown(e, t) }, onOpenChange: function (e) { var t = this.store.getState().openKeys.concat(), n = !1, r = function (e) { var r = !1; if (e.open) r = -1 === t.indexOf(e.key), r && t.push(e.key); else { var i = t.indexOf(e.key); r = -1 !== i, r && t.splice(i, 1) } n = n || r }; Array.isArray(e) ? e.forEach(r) : r(e), n && (Object(h["b"])(this, "openKeys") || this.store.setState({ openKeys: t }), this.__emit("openChange", t)) }, onDeselect: function (e) { var t = this.$props; if (t.selectable) { var n = this.store.getState().selectedKeys.concat(), r = e.key, o = n.indexOf(r); -1 !== o && n.splice(o, 1), Object(h["b"])(this, "selectedKeys") || this.store.setState({ selectedKeys: n }), this.__emit("deselect", i()({}, e, { selectedKeys: n })) } }, getOpenTransitionName: function () { var e = this.$props, t = e.openTransitionName, n = e.openAnimation; return t || "string" !== typeof n || (t = e.prefixCls + "-open-" + n), t }, updateMiniStore: function () { var e = Object(h["l"])(this); "selectedKeys" in e && this.store.setState({ selectedKeys: e.selectedKeys || [] }), "openKeys" in e && this.store.setState({ openKeys: e.openKeys || [] }) } }, render: function () { var e = arguments[0], t = Object(h["l"])(this), n = { props: i()({}, t, { itemIcon: Object(h["g"])(this, "itemIcon", t), expandIcon: Object(h["g"])(this, "expandIcon", t), overflowedIndicator: Object(h["g"])(this, "overflowedIndicator", t) || e("span", ["路路路"]), openTransitionName: this.getOpenTransitionName(), parentMenu: this, children: Object(h["c"])(this.$slots["default"] || []) }), class: t.prefixCls + "-root", on: i()({}, Object(h["k"])(this), { click: this.onClick, openChange: this.onOpenChange, deselect: this.onDeselect, select: this.onSelect }), ref: "innerMenu" }; return e(c, { attrs: { store: this.store } }, [e(l["a"], n)]) } }, p = d; t["a"] = p }, da84: function (e, t, n) { (function (t) { var n = function (e) { return e && e.Math == Math && e }; e.exports = n("object" == typeof globalThis && globalThis) || n("object" == typeof window && window) || n("object" == typeof self && self) || n("object" == typeof t && t) || function () { return this }() || Function("return this")() }).call(this, n("c8ba")) }, daa3: function (e, t, n) { "use strict"; n.d(t, "i", (function () { return L })), n.d(t, "h", (function () { return j })), n.d(t, "k", (function () { return z })), n.d(t, "f", (function () { return E })), n.d(t, "q", (function () { return P })), n.d(t, "u", (function () { return D })), n.d(t, "v", (function () { return H })), n.d(t, "c", (function () { return V })), n.d(t, "x", (function () { return N })), n.d(t, "s", (function () { return g })), n.d(t, "l", (function () { return M })), n.d(t, "g", (function () { return O })), n.d(t, "o", (function () { return C })), n.d(t, "m", (function () { return k })), n.d(t, "j", (function () { return A })), n.d(t, "e", (function () { return T })), n.d(t, "r", (function () { return S })), n.d(t, "y", (function () { return m })), n.d(t, "t", (function () { return I })), n.d(t, "w", (function () { return R })), n.d(t, "a", (function () { return v })), n.d(t, "p", (function () { return x })), n.d(t, "n", (function () { return w })), n.d(t, "d", (function () { return _ })); var r = n("1098"), i = n.n(r), o = n("b24f"), a = n.n(o), s = n("41b2"), c = n.n(s), l = n("60ed"), u = n.n(l), h = n("4d26"), f = n.n(h); function d(e) { var t = e && e.toString().match(/^\s*function (\w+)/); return t ? t[1] : "" } var p = /-(\w)/g, v = function (e) { return e.replace(p, (function (e, t) { return t ? t.toUpperCase() : "" })) }, m = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", t = arguments[1], n = {}, r = /;(?![^(]*\))/g, i = /:(.+)/; return e.split(r).forEach((function (e) { if (e) { var r = e.split(i); if (r.length > 1) { var o = t ? v(r[0].trim()) : r[0].trim(); n[o] = r[1].trim() } } })), n }, g = function (e, t) { var n = e.$options || {}, r = n.propsData || {}; return t in r }, y = function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = {}; return Object.keys(e).forEach((function (r) { (r in t || void 0 !== e[r]) && (n[r] = e[r]) })), n }, b = function (e) { return e.data && e.data.scopedSlots || {} }, x = function (e) { var t = e.componentOptions || {}; e.$vnode && (t = e.$vnode.componentOptions || {}); var n = e.children || t.children || [], r = {}; return n.forEach((function (e) { if (!D(e)) { var t = e.data && e.data.slot || "default"; r[t] = r[t] || [], r[t].push(e) } })), c()({}, r, b(e)) }, w = function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "default", n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; return e.$scopedSlots && e.$scopedSlots[t] && e.$scopedSlots[t](n) || e.$slots[t] || [] }, _ = function (e) { var t = e.componentOptions || {}; return e.$vnode && (t = e.$vnode.componentOptions || {}), e.children || t.children || [] }, C = function (e) { if (e.fnOptions) return e.fnOptions; var t = e.componentOptions; return e.$vnode && (t = e.$vnode.componentOptions), t && t.Ctor.options || {} }, M = function (e) { if (e.componentOptions) { var t = e.componentOptions, n = t.propsData, r = void 0 === n ? {} : n, i = t.Ctor, o = void 0 === i ? {} : i, s = (o.options || {}).props || {}, l = {}, u = !0, h = !1, f = void 0; try { for (var p, v = Object.entries(s)[Symbol.iterator](); !(u = (p = v.next()).done); u = !0) { var m = p.value, g = a()(m, 2), b = g[0], x = g[1], w = x["default"]; void 0 !== w && (l[b] = "function" === typeof w && "Function" !== d(x.type) ? w.call(e) : w) } } catch (k) { h = !0, f = k } finally { try { !u && v["return"] && v["return"]() } finally { if (h) throw f } } return c()({}, l, r) } var _ = e.$options, C = void 0 === _ ? {} : _, M = e.$props, O = void 0 === M ? {} : M; return y(O, C.propsData) }, O = function (e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : e, r = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3]; if (e.$createElement) { var i = e.$createElement, o = e[t]; return void 0 !== o ? "function" === typeof o && r ? o(i, n) : o : e.$scopedSlots[t] && r && e.$scopedSlots[t](n) || e.$scopedSlots[t] || e.$slots[t] || void 0 } var a = e.context.$createElement, s = k(e)[t]; if (void 0 !== s) return "function" === typeof s && r ? s(a, n) : s; var c = b(e)[t]; if (void 0 !== c) return "function" === typeof c && r ? c(a, n) : c; var l = [], u = e.componentOptions || {}; return (u.children || []).forEach((function (e) { e.data && e.data.slot === t && (e.data.attrs && delete e.data.attrs.slot, "template" === e.tag ? l.push(e.children) : l.push(e)) })), l.length ? l : void 0 }, k = function (e) { var t = e.componentOptions; return e.$vnode && (t = e.$vnode.componentOptions), t && t.propsData || {} }, S = function (e, t) { return k(e)[t] }, T = function (e) { var t = e.data; return e.$vnode && (t = e.$vnode.data), t && t.attrs || {} }, A = function (e) { var t = e.key; return e.$vnode && (t = e.$vnode.key), t }; function L(e) { var t = {}; return e.componentOptions && e.componentOptions.listeners ? t = e.componentOptions.listeners : e.data && e.data.on && (t = e.data.on), c()({}, t) } function j(e) { var t = {}; return e.data && e.data.on && (t = e.data.on), c()({}, t) } function z(e) { return (e.$vnode ? e.$vnode.componentOptions.listeners : e.$listeners) || {} } function E(e) { var t = {}; e.data ? t = e.data : e.$vnode && e.$vnode.data && (t = e.$vnode.data); var n = t["class"] || {}, r = t.staticClass, i = {}; return r && r.split(" ").forEach((function (e) { i[e.trim()] = !0 })), "string" === typeof n ? n.split(" ").forEach((function (e) { i[e.trim()] = !0 })) : Array.isArray(n) ? f()(n).split(" ").forEach((function (e) { i[e.trim()] = !0 })) : i = c()({}, i, n), i } function P(e, t) { var n = {}; e.data ? n = e.data : e.$vnode && e.$vnode.data && (n = e.$vnode.data); var r = n.style || n.staticStyle; if ("string" === typeof r) r = m(r, t); else if (t && r) { var i = {}; return Object.keys(r).forEach((function (e) { return i[v(e)] = r[e] })), i } return r } function D(e) { return !(e.tag || e.text && "" !== e.text.trim()) } function H(e) { return !e.tag } function V() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; return e.filter((function (e) { return !D(e) })) } var I = function (e, t) { return Object.keys(t).forEach((function (n) { if (!e[n]) throw new Error("not have " + n + " prop"); e[n].def && (e[n] = e[n].def(t[n])) })), e }; function N() { var e = [].slice.call(arguments, 0), t = {}; return e.forEach((function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = !0, r = !1, i = void 0; try { for (var o, s = Object.entries(e)[Symbol.iterator](); !(n = (o = s.next()).done); n = !0) { var l = o.value, h = a()(l, 2), f = h[0], d = h[1]; t[f] = t[f] || {}, u()(d) ? c()(t[f], d) : t[f] = d } } catch (p) { r = !0, i = p } finally { try { !n && s["return"] && s["return"]() } finally { if (r) throw i } } })), t } function R(e) { return e && "object" === ("undefined" === typeof e ? "undefined" : i()(e)) && "componentOptions" in e && "context" in e && void 0 !== e.tag } t["b"] = g }, db14: function (e, t, n) { "use strict"; var r = n("46cf"), i = n.n(r), o = n("129d"), a = n("dfdf"); function s(e) { return e.directive("ant-portal", { inserted: function (e, t) { var n = t.value, r = "function" === typeof n ? n(e) : n; r !== e.parentNode && r.appendChild(e) }, componentUpdated: function (e, t) { var n = t.value, r = "function" === typeof n ? n(e) : n; r !== e.parentNode && r.appendChild(e) } }) } var c = { install: function (e) { e.use(i.a, { name: "ant-ref" }), Object(o["a"])(e), Object(a["a"])(e), s(e) } }, l = {}, u = function (e) { l.Vue = e, e.use(c) }; l.install = u; t["a"] = l }, db96: function (e, t, n) { var r = n("23e7"), i = n("825a"), o = Object.isExtensible; r({ target: "Reflect", stat: !0 }, { isExtensible: function (e) { return i(e), !o || o(e) } }) }, dbb4: function (e, t, n) { var r = n("23e7"), i = n("83ab"), o = n("56ef"), a = n("fc6a"), s = n("06cf"), c = n("8418"); r({ target: "Object", stat: !0, sham: !i }, { getOwnPropertyDescriptors: function (e) { var t, n, r = a(e), i = s.f, l = o(r), u = {}, h = 0; while (l.length > h) n = i(r, t = l[h++]), void 0 !== n && c(u, t, n); return u } }) }, dbbf: function (e, t, n) { }, dc0f: function (e, t) { function n(e) { return this.__data__.has(e) } e.exports = n }, dc57: function (e, t) { var n = Function.prototype, r = n.toString; function i(e) { if (null != e) { try { return r.call(e) } catch (t) { } try { return e + "" } catch (t) { } } return "" } e.exports = i }, dc5a: function (e, t, n) { "use strict"; n("b2a3"), n("ea55") }, dc8d: function (e, t, n) { var r = n("746f"); r("hasInstance") }, dca8: function (e, t, n) { var r = n("23e7"), i = n("bb2f"), o = n("d039"), a = n("861d"), s = n("f183").onFreeze, c = Object.freeze, l = o((function () { c(1) })); r({ target: "Object", stat: !0, forced: l, sham: !i }, { freeze: function (e) { return c && a(e) ? c(s(e)) : e } }) }, dcb1: function (e, t, n) { (function (t, n) { e.exports = n() })(0, (function () { return function (e) { var t = {}; function n(r) { if (t[r]) return t[r].exports; var i = t[r] = { i: r, l: !1, exports: {} }; return e[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports } return n.m = e, n.c = t, n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { configurable: !1, enumerable: !0, get: r }) }, n.n = function (e) { var t = e && e.__esModule ? function () { return e["default"] } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = 0) }([function (e, t, n) { var r = n(1); window && !window.G2 && console.err("Please load the G2 script first!"), e.exports = r }, function (e, t, n) { var r = n(2), i = window && window.G2, o = i.Chart, a = i.Util, s = i.G, c = i.Global, l = s.Canvas, u = a.DomUtil, h = function (e) { return "number" === typeof e }, f = function () { var e = t.prototype; function t(e) { this._initProps(), a.deepMix(this, e); var t = this.container; if (!t) throw new Error("Please specify the container for the Slider!"); a.isString(t) ? this.domContainer = document.getElementById(t) : this.domContainer = t, this.handleStyle = a.mix({ width: this.height, height: this.height }, this.handleStyle), "auto" === this.width && window.addEventListener("resize", a.wrapBehavior(this, "_initForceFitEvent")) } return e._initProps = function () { this.height = 26, this.width = "auto", this.padding = c.plotCfg.padding, this.container = null, this.xAxis = null, this.yAxis = null, this.fillerStyle = { fill: "#BDCCED", fillOpacity: .3 }, this.backgroundStyle = { stroke: "#CCD6EC", fill: "#CCD6EC", fillOpacity: .3, lineWidth: 1 }, this.range = [0, 100], this.layout = "horizontal", this.textStyle = { fill: "#545454" }, this.handleStyle = { img: "https://gw.alipayobjects.com/zos/rmsportal/QXtfhORGlDuRvLXFzpsQ.png", width: 5 }, this.backgroundChart = { type: ["area"], color: "#CCD6EC" } }, e._initForceFitEvent = function () { var e = setTimeout(a.wrapBehavior(this, "forceFit"), 200); clearTimeout(this.resizeTimer), this.resizeTimer = e }, e.forceFit = function () { if (this && !this.destroyed) { var e = u.getWidth(this.domContainer), t = this.height; if (e !== this.domWidth) { var n = this.canvas; n.changeSize(e, t), this.bgChart && this.bgChart.changeWidth(e), n.clear(), this._initWidth(), this._initSlider(), this._bindEvent(), n.draw() } } }, e._initWidth = function () { var e; e = "auto" === this.width ? u.getWidth(this.domContainer) : this.width, this.domWidth = e; var t = a.toAllPadding(this.padding); "horizontal" === this.layout ? (this.plotWidth = e - t[1] - t[3], this.plotPadding = t[3], this.plotHeight = this.height) : "vertical" === this.layout && (this.plotWidth = this.width, this.plotHeight = this.height - t[0] - t[2], this.plotPadding = t[0]) }, e.render = function () { this._initWidth(), this._initCanvas(), this._initBackground(), this._initSlider(), this._bindEvent(), this.canvas.draw() }, e.changeData = function (e) { this.data = e, this.repaint() }, e.destroy = function () { clearTimeout(this.resizeTimer); var e = this.rangeElement; e.off("sliderchange"), this.bgChart && this.bgChart.destroy(), this.canvas.destroy(); var t = this.domContainer; while (t.hasChildNodes()) t.removeChild(t.firstChild); window.removeEventListener("resize", a.getWrapBehavior(this, "_initForceFitEvent")), this.destroyed = !0 }, e.clear = function () { this.canvas.clear(), this.bgChart && this.bgChart.destroy(), this.bgChart = null, this.scale = null, this.canvas.draw() }, e.repaint = function () { this.clear(), this.render() }, e._initCanvas = function () { var e = this.domWidth, t = this.height, n = new l({ width: e, height: t, containerDOM: this.domContainer, capture: !1 }), r = n.get("el"); r.style.position = "absolute", r.style.top = 0, r.style.left = 0, r.style.zIndex = 3, this.canvas = n }, e._initBackground = function () { var e, t = this.data, n = this.xAxis, r = this.yAxis, i = a.deepMix((e = {}, e["" + n] = { range: [0, 1] }, e), this.scales); if (!t) throw new Error("Please specify the data!"); if (!n) throw new Error("Please specify the xAxis!"); if (!r) throw new Error("Please specify the yAxis!"); var s = this.backgroundChart, c = s.type, l = s.color; a.isArray(c) || (c = [c]); var u = a.toAllPadding(this.padding), h = new o({ container: this.container, width: this.domWidth, height: this.height, padding: [0, u[1], 0, u[3]], animate: !1 }); h.source(t), h.scale(i), h.axis(!1), h.tooltip(!1), h.legend(!1), a.each(c, (function (e) { h[e]().position(n + "*" + r).color(l).opacity(1) })), h.render(), this.bgChart = h, this.scale = "horizontal" === this.layout ? h.getXScale() : h.getYScales()[0], "vertical" === this.layout && h.destroy() }, e._initRange = function () { var e = this.startRadio, t = this.endRadio, n = this.start, r = this.end, i = this.scale, o = 0, a = 1; h(e) ? o = e : n && (o = i.scale(i.translate(n))), h(t) ? a = t : r && (a = i.scale(i.translate(r))); var s = this.minSpan, c = this.maxSpan, l = 0; if ("time" === i.type || "timeCat" === i.type) { var u = i.values, f = u[0], d = u[u.length - 1]; l = d - f } else i.isLinear && (l = i.max - i.min); l && s && (this.minRange = s / l * 100), l && c && (this.maxRange = c / l * 100); var p = [100 * o, 100 * a]; return this.range = p, p }, e._getHandleValue = function (e) { var t, n = this.range, r = n[0] / 100, i = n[1] / 100, o = this.scale; return t = "min" === e ? this.start ? this.start : o.invert(r) : this.end ? this.end : o.invert(i), t }, e._initSlider = function () { var e = this.canvas, t = this._initRange(), n = this.scale, i = e.addGroup(r, { middleAttr: this.fillerStyle, range: t, minRange: this.minRange, maxRange: this.maxRange, layout: this.layout, width: this.plotWidth, height: this.plotHeight, backgroundStyle: this.backgroundStyle, textStyle: this.textStyle, handleStyle: this.handleStyle, minText: n.getText(this._getHandleValue("min")), maxText: n.getText(this._getHandleValue("max")) }); "horizontal" === this.layout ? i.translate(this.plotPadding, 0) : "vertical" === this.layout && i.translate(0, this.plotPadding), this.rangeElement = i }, e._bindEvent = function () { var e = this, t = e.rangeElement; t.on("sliderchange", (function (t) { var n = t.range, r = n[0] / 100, i = n[1] / 100; e._updateElement(r, i) })) }, e._updateElement = function (e, t) { var n = this.scale, r = this.rangeElement, i = r.get("minTextElement"), o = r.get("maxTextElement"), a = n.invert(e), s = n.invert(t), c = n.getText(a), l = n.getText(s); i.attr("text", c), o.attr("text", l), this.start = a, this.end = s, this.onChange && this.onChange({ startText: c, endText: l, startValue: a, endValue: s, startRadio: e, endRadio: t }) }, t }(); e.exports = f }, function (e, t) { function n(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var r = window && window.G2, i = r.Util, o = r.G, a = o.Group, s = i.DomUtil, c = 5, l = function (e) { function t() { return e.apply(this, arguments) || this } n(t, e); var r = t.prototype; return r.getDefaultCfg = function () { return { range: null, middleAttr: null, backgroundElement: null, minHandleElement: null, maxHandleElement: null, middleHandleElement: null, currentTarget: null, layout: "vertical", width: null, height: null, pageX: null, pageY: null } }, r._initHandle = function (e) { var t, n, r, o = this.addGroup(), a = this.get("layout"), s = this.get("handleStyle"), l = s.img, u = s.width, h = s.height; if ("horizontal" === a) { var f = s.width; r = "ew-resize", n = o.addShape("Image", { attrs: { x: -f / 2, y: 0, width: f, height: h, img: l, cursor: r } }), t = o.addShape("Text", { attrs: i.mix({ x: "min" === e ? -(f / 2 + c) : f / 2 + c, y: h / 2, textAlign: "min" === e ? "end" : "start", textBaseline: "middle", text: "min" === e ? this.get("minText") : this.get("maxText"), cursor: r }, this.get("textStyle")) }) } else r = "ns-resize", n = o.addShape("Image", { attrs: { x: 0, y: -h / 2, width: u, height: h, img: l, cursor: r } }), t = o.addShape("Text", { attrs: i.mix({ x: u / 2, y: "min" === e ? h / 2 + c : -(h / 2 + c), textAlign: "center", textBaseline: "middle", text: "min" === e ? this.get("minText") : this.get("maxText"), cursor: r }, this.get("textStyle")) }); return this.set(e + "TextElement", t), this.set(e + "IconElement", n), o }, r._initSliderBackground = function () { var e = this.addGroup(); return e.initTransform(), e.translate(0, 0), e.addShape("Rect", { attrs: i.mix({ x: 0, y: 0, width: this.get("width"), height: this.get("height") }, this.get("backgroundStyle")) }), e }, r._beforeRenderUI = function () { var e = this._initSliderBackground(), t = this._initHandle("min"), n = this._initHandle("max"), r = this.addShape("rect", { attrs: this.get("middleAttr") }); this.set("middleHandleElement", r), this.set("minHandleElement", t), this.set("maxHandleElement", n), this.set("backgroundElement", e), e.set("zIndex", 0), r.set("zIndex", 1), t.set("zIndex", 2), n.set("zIndex", 2), r.attr("cursor", "move"), this.sort() }, r._renderUI = function () { "horizontal" === this.get("layout") ? this._renderHorizontal() : this._renderVertical() }, r._transform = function (e) { var t = this.get("range"), n = t[0] / 100, r = t[1] / 100, i = this.get("width"), o = this.get("height"), a = this.get("minHandleElement"), s = this.get("maxHandleElement"), c = this.get("middleHandleElement"); a.resetMatrix ? (a.resetMatrix(), s.resetMatrix()) : (a.initTransform(), s.initTransform()), "horizontal" === e ? (c.attr({ x: i * n, y: 0, width: (r - n) * i, height: o }), a.translate(n * i, 0), s.translate(r * i, 0)) : (c.attr({ x: 0, y: o * (1 - r), width: i, height: (r - n) * o }), a.translate(0, (1 - n) * o), s.translate(0, (1 - r) * o)) }, r._renderHorizontal = function () { this._transform("horizontal") }, r._renderVertical = function () { this._transform("vertical") }, r._bindUI = function () { this.on("mousedown", i.wrapBehavior(this, "_onMouseDown")) }, r._isElement = function (e, t) { var n = this.get(t); if (e === n) return !0; if (n.isGroup) { var r = n.get("children"); return r.indexOf(e) > -1 } return !1 }, r._getRange = function (e, t) { var n = e + t; return n = n > 100 ? 100 : n, n = n < 0 ? 0 : n, n }, r._limitRange = function (e, t, n) { n[0] = this._getRange(e, n[0]), n[1] = n[0] + t, n[1] > 100 && (n[1] = 100, n[0] = n[1] - t) }, r._updateStatus = function (e, t) { var n = "x" === e ? this.get("width") : this.get("height"); e = i.upperFirst(e); var r, o = this.get("range"), a = this.get("page" + e), s = this.get("currentTarget"), c = this.get("rangeStash"), l = this.get("layout"), u = "vertical" === l ? -1 : 1, h = t["page" + e], f = h - a, d = f / n * 100 * u, p = this.get("minRange"), v = this.get("maxRange"); o[1] <= o[0] ? (this._isElement(s, "minHandleElement") || this._isElement(s, "maxHandleElement")) && (o[0] = this._getRange(d, o[0]), o[1] = this._getRange(d, o[0])) : (this._isElement(s, "minHandleElement") && (o[0] = this._getRange(d, o[0]), p && o[1] - o[0] <= p && this._limitRange(d, p, o), v && o[1] - o[0] >= v && this._limitRange(d, v, o)), this._isElement(s, "maxHandleElement") && (o[1] = this._getRange(d, o[1]), p && o[1] - o[0] <= p && this._limitRange(d, p, o), v && o[1] - o[0] >= v && this._limitRange(d, v, o))), this._isElement(s, "middleHandleElement") && (r = c[1] - c[0], this._limitRange(d, r, o)), this.emit("sliderchange", { range: o }), this.set("page" + e, h), this._renderUI(), this.get("canvas").draw() }, r._onMouseDown = function (e) { var t = e.currentTarget, n = e.event, r = this.get("range"); n.stopPropagation(), n.preventDefault(), this.set("pageX", n.pageX), this.set("pageY", n.pageY), this.set("currentTarget", t), this.set("rangeStash", [r[0], r[1]]), this._bindCanvasEvents() }, r._bindCanvasEvents = function () { var e = this.get("canvas").get("containerDOM"); this.onMouseMoveListener = s.addEventListener(e, "mousemove", i.wrapBehavior(this, "_onCanvasMouseMove")), this.onMouseUpListener = s.addEventListener(e, "mouseup", i.wrapBehavior(this, "_onCanvasMouseUp")), this.onMouseLeaveListener = s.addEventListener(e, "mouseleave", i.wrapBehavior(this, "_onCanvasMouseUp")) }, r._onCanvasMouseMove = function (e) { var t = this.get("layout"); "horizontal" === t ? this._updateStatus("x", e) : this._updateStatus("y", e) }, r._onCanvasMouseUp = function () { this._removeDocumentEvents() }, r._removeDocumentEvents = function () { this.onMouseMoveListener.remove(), this.onMouseUpListener.remove(), this.onMouseLeaveListener.remove() }, t }(a); e.exports = l }]) })) }, dcbe: function (e, t, n) { var r = n("30c9"), i = n("1310"); function o(e) { return i(e) && r(e) } e.exports = o }, dd3d: function (e, t, n) { "use strict"; var r = function (e) { return !isNaN(parseFloat(e)) && isFinite(e) }; t["a"] = r }, dd48: function (e, t, n) { "use strict"; n("b2a3"), n("9961"), n("fbd8"), n("9d5c") }, dd98: function (e, t, n) { "use strict"; n("b2a3"), n("8580") }, ddb0: function (e, t, n) { var r = n("da84"), i = n("fdbc"), o = n("e260"), a = n("9112"), s = n("b622"), c = s("iterator"), l = s("toStringTag"), u = o.values; for (var h in i) { var f = r[h], d = f && f.prototype; if (d) { if (d[c] !== u) try { a(d, c, u) } catch (v) { d[c] = u } if (d[l] || a(d, l, h), i[h]) for (var p in o) if (d[p] !== o[p]) try { a(d, p, o[p]) } catch (v) { d[p] = o[p] } } } }, de1b: function (e, t, n) { "use strict"; var r = n("5091"), i = n("db14"); r["c"].install = function (e) { e.use(i["a"]), e.component(r["c"].name, r["c"]) }, t["a"] = r["c"] }, de6a: function (e, t, n) { "use strict"; n("b2a3"), n("1efe") }, ded6: function (e, t, n) { }, df75: function (e, t, n) { var r = n("ca84"), i = n("7839"); e.exports = Object.keys || function (e) { return r(e, i) } }, df7c: function (e, t, n) { (function (e) { function n(e, t) { for (var n = 0, r = e.length - 1; r >= 0; r--) { var i = e[r]; "." === i ? e.splice(r, 1) : ".." === i ? (e.splice(r, 1), n++) : n && (e.splice(r, 1), n--) } if (t) for (; n--; n)e.unshift(".."); return e } function r(e) { "string" !== typeof e && (e += ""); var t, n = 0, r = -1, i = !0; for (t = e.length - 1; t >= 0; --t)if (47 === e.charCodeAt(t)) { if (!i) { n = t + 1; break } } else -1 === r && (i = !1, r = t + 1); return -1 === r ? "" : e.slice(n, r) } function i(e, t) { if (e.filter) return e.filter(t); for (var n = [], r = 0; r < e.length; r++)t(e[r], r, e) && n.push(e[r]); return n } t.resolve = function () { for (var t = "", r = !1, o = arguments.length - 1; o >= -1 && !r; o--) { var a = o >= 0 ? arguments[o] : e.cwd(); if ("string" !== typeof a) throw new TypeError("Arguments to path.resolve must be strings"); a && (t = a + "/" + t, r = "/" === a.charAt(0)) } return t = n(i(t.split("/"), (function (e) { return !!e })), !r).join("/"), (r ? "/" : "") + t || "." }, t.normalize = function (e) { var r = t.isAbsolute(e), a = "/" === o(e, -1); return e = n(i(e.split("/"), (function (e) { return !!e })), !r).join("/"), e || r || (e = "."), e && a && (e += "/"), (r ? "/" : "") + e }, t.isAbsolute = function (e) { return "/" === e.charAt(0) }, t.join = function () { var e = Array.prototype.slice.call(arguments, 0); return t.normalize(i(e, (function (e, t) { if ("string" !== typeof e) throw new TypeError("Arguments to path.join must be strings"); return e })).join("/")) }, t.relative = function (e, n) { function r(e) { for (var t = 0; t < e.length; t++)if ("" !== e[t]) break; for (var n = e.length - 1; n >= 0; n--)if ("" !== e[n]) break; return t > n ? [] : e.slice(t, n - t + 1) } e = t.resolve(e).substr(1), n = t.resolve(n).substr(1); for (var i = r(e.split("/")), o = r(n.split("/")), a = Math.min(i.length, o.length), s = a, c = 0; c < a; c++)if (i[c] !== o[c]) { s = c; break } var l = []; for (c = s; c < i.length; c++)l.push(".."); return l = l.concat(o.slice(s)), l.join("/") }, t.sep = "/", t.delimiter = ":", t.dirname = function (e) { if ("string" !== typeof e && (e += ""), 0 === e.length) return "."; for (var t = e.charCodeAt(0), n = 47 === t, r = -1, i = !0, o = e.length - 1; o >= 1; --o)if (t = e.charCodeAt(o), 47 === t) { if (!i) { r = o; break } } else i = !1; return -1 === r ? n ? "/" : "." : n && 1 === r ? "/" : e.slice(0, r) }, t.basename = function (e, t) { var n = r(e); return t && n.substr(-1 * t.length) === t && (n = n.substr(0, n.length - t.length)), n }, t.extname = function (e) { "string" !== typeof e && (e += ""); for (var t = -1, n = 0, r = -1, i = !0, o = 0, a = e.length - 1; a >= 0; --a) { var s = e.charCodeAt(a); if (47 !== s) -1 === r && (i = !1, r = a + 1), 46 === s ? -1 === t ? t = a : 1 !== o && (o = 1) : -1 !== t && (o = -1); else if (!i) { n = a + 1; break } } return -1 === t || -1 === r || 0 === o || 1 === o && t === r - 1 && t === n + 1 ? "" : e.slice(t, r) }; var o = "b" === "ab".substr(-1) ? function (e, t, n) { return e.substr(t, n) } : function (e, t, n) { return t < 0 && (t = e.length + t), e.substr(t, n) } }).call(this, n("4362")) }, df83: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t["default"] = t.easeInOutBounce = t.easeOutBounce = t.easeInBounce = t.easeInOutElastic = t.easeOutElastic = t.easeInElastic = t.easeInOutBack = t.easeOutBack = t.easeInBack = t.easeInOutQuint = t.easeOutQuint = t.easeInQuint = t.easeInOutQuart = t.easeOutQuart = t.easeInQuart = t.easeInOutCubic = t.easeOutCubic = t.easeInCubic = t.easeInOutQuad = t.easeOutQuad = t.easeInQuad = t.easeInOutSine = t.easeOutSine = t.easeInSine = t.linear = void 0; var r = [[[0, 1], "", [.33, .67]], [[1, 0], [.67, .33]]]; t.linear = r; var i = [[[0, 1]], [[.538, .564], [.169, .912], [.88, .196]], [[1, 0]]]; t.easeInSine = i; var o = [[[0, 1]], [[.444, .448], [.169, .736], [.718, .16]], [[1, 0]]]; t.easeOutSine = o; var a = [[[0, 1]], [[.5, .5], [.2, 1], [.8, 0]], [[1, 0]]]; t.easeInOutSine = a; var s = [[[0, 1]], [[.55, .584], [.231, .904], [.868, .264]], [[1, 0]]]; t.easeInQuad = s; var c = [[[0, 1]], [[.413, .428], [.065, .816], [.76, .04]], [[1, 0]]]; t.easeOutQuad = c; var l = [[[0, 1]], [[.5, .5], [.3, .9], [.7, .1]], [[1, 0]]]; t.easeInOutQuad = l; var u = [[[0, 1]], [[.679, .688], [.366, .992], [.992, .384]], [[1, 0]]]; t.easeInCubic = u; var h = [[[0, 1]], [[.321, .312], [.008, .616], [.634, .008]], [[1, 0]]]; t.easeOutCubic = h; var f = [[[0, 1]], [[.5, .5], [.3, 1], [.7, 0]], [[1, 0]]]; t.easeInOutCubic = f; var d = [[[0, 1]], [[.812, .74], [.611, .988], [1.013, .492]], [[1, 0]]]; t.easeInQuart = d; var p = [[[0, 1]], [[.152, .244], [.001, .448], [.285, -.02]], [[1, 0]]]; t.easeOutQuart = p; var v = [[[0, 1]], [[.5, .5], [.4, 1], [.6, 0]], [[1, 0]]]; t.easeInOutQuart = v; var m = [[[0, 1]], [[.857, .856], [.714, 1], [1, .712]], [[1, 0]]]; t.easeInQuint = m; var g = [[[0, 1]], [[.108, .2], [.001, .4], [.214, -.012]], [[1, 0]]]; t.easeOutQuint = g; var y = [[[0, 1]], [[.5, .5], [.5, 1], [.5, 0]], [[1, 0]]]; t.easeInOutQuint = y; var b = [[[0, 1]], [[.667, .896], [.38, 1.184], [.955, .616]], [[1, 0]]]; t.easeInBack = b; var x = [[[0, 1]], [[.335, .028], [.061, .22], [.631, -.18]], [[1, 0]]]; t.easeOutBack = x; var w = [[[0, 1]], [[.5, .5], [.4, 1.4], [.6, -.4]], [[1, 0]]]; t.easeInOutBack = w; var _ = [[[0, 1]], [[.474, .964], [.382, .988], [.557, .952]], [[.619, 1.076], [.565, 1.088], [.669, 1.08]], [[.77, .916], [.712, .924], [.847, .904]], [[.911, 1.304], [.872, 1.316], [.961, 1.34]], [[1, 0]]]; t.easeInElastic = _; var C = [[[0, 1]], [[.073, -.32], [.034, -.328], [.104, -.344]], [[.191, .092], [.11, .06], [.256, .08]], [[.31, -.076], [.26, -.068], [.357, -.076]], [[.432, .032], [.362, .028], [.683, -.004]], [[1, 0]]]; t.easeOutElastic = C; var M = [[[0, 1]], [[.21, .94], [.167, .884], [.252, .98]], [[.299, 1.104], [.256, 1.092], [.347, 1.108]], [[.5, .496], [.451, .672], [.548, .324]], [[.696, -.108], [.652, -.112], [.741, -.124]], [[.805, .064], [.756, .012], [.866, .096]], [[1, 0]]]; t.easeInOutElastic = M; var O = [[[0, 1]], [[.148, 1], [.075, .868], [.193, .848]], [[.326, 1], [.276, .836], [.405, .712]], [[.6, 1], [.511, .708], [.671, .348]], [[1, 0]]]; t.easeInBounce = O; var k = [[[0, 1]], [[.357, .004], [.27, .592], [.376, .252]], [[.604, -.004], [.548, .312], [.669, .184]], [[.82, 0], [.749, .184], [.905, .132]], [[1, 0]]]; t.easeOutBounce = k; var S = [[[0, 1]], [[.102, 1], [.05, .864], [.117, .86]], [[.216, .996], [.208, .844], [.227, .808]], [[.347, .996], [.343, .8], [.48, .292]], [[.635, .004], [.511, .676], [.656, .208]], [[.787, 0], [.76, .2], [.795, .144]], [[.905, -.004], [.899, .164], [.944, .144]], [[1, 0]]]; t.easeInOutBounce = S; var T = new Map([["linear", r], ["easeInSine", i], ["easeOutSine", o], ["easeInOutSine", a], ["easeInQuad", s], ["easeOutQuad", c], ["easeInOutQuad", l], ["easeInCubic", u], ["easeOutCubic", h], ["easeInOutCubic", f], ["easeInQuart", d], ["easeOutQuart", p], ["easeInOutQuart", v], ["easeInQuint", m], ["easeOutQuint", g], ["easeInOutQuint", y], ["easeInBack", b], ["easeOutBack", x], ["easeInOutBack", w], ["easeInElastic", _], ["easeOutElastic", C], ["easeInOutElastic", M], ["easeInBounce", O], ["easeOutBounce", k], ["easeInOutBounce", S]]); t["default"] = T }, dfb9: function (e, t) { e.exports = function (e, t) { var n = 0, r = t.length, i = new e(r); while (r > n) i[n] = t[n++]; return i } }, dfdf: function (e, t, n) { "use strict"; function r(e) { return e.directive("decorator", {}) } n.d(t, "a", (function () { return r })), t["b"] = { install: function (e) { r(e) } } }, dfe5: function (e, t) { }, e01a: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("83ab"), o = n("da84"), a = n("5135"), s = n("861d"), c = n("9bf2").f, l = n("e893"), u = o.Symbol; if (i && "function" == typeof u && (!("description" in u.prototype) || void 0 !== u().description)) { var h = {}, f = function () { var e = arguments.length < 1 || void 0 === arguments[0] ? void 0 : String(arguments[0]), t = this instanceof f ? new u(e) : void 0 === e ? u() : u(e); return "" === e && (h[t] = !0), t }; l(f, u); var d = f.prototype = u.prototype; d.constructor = f; var p = d.toString, v = "Symbol(test)" == String(u("test")), m = /^Symbol\((.*)\)[^)]+$/; c(d, "description", { configurable: !0, get: function () { var e = s(this) ? this.valueOf() : this, t = p.call(e); if (a(h, e)) return ""; var n = v ? t.slice(7, -1) : t.replace(m, "$1"); return "" === n ? void 0 : n } }), r({ global: !0, forced: !0 }, { Symbol: f }) } }, e0e7: function (e, t, n) { var r = n("60ed"); function i(e) { return r(e) ? void 0 : e } e.exports = i }, e11f: function (e, t, n) { }, e163: function (e, t, n) { var r = n("5135"), i = n("7b0b"), o = n("f772"), a = n("e177"), s = o("IE_PROTO"), c = Object.prototype; e.exports = a ? Object.getPrototypeOf : function (e) { return e = i(e), r(e, s) ? e[s] : "function" == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? c : null } }, e169: function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t.drawPolylinePath = o, t.drawBezierCurvePath = a, t["default"] = void 0; var i = r(n("448a")); function o(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], r = arguments.length > 3 && void 0 !== arguments[3] && arguments[3]; if (!e || t.length < 2) return !1; n && e.beginPath(), t.forEach((function (t, n) { return t && (0 === n ? e.moveTo.apply(e, (0, i["default"])(t)) : e.lineTo.apply(e, (0, i["default"])(t))) })), r && e.closePath() } function a(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], r = arguments.length > 3 && void 0 !== arguments[3] && arguments[3], o = arguments.length > 4 && void 0 !== arguments[4] && arguments[4]; if (!e || !t) return !1; r && e.beginPath(), n && e.moveTo.apply(e, (0, i["default"])(n)), t.forEach((function (t) { return t && e.bezierCurveTo.apply(e, (0, i["default"])(t[0]).concat((0, i["default"])(t[1]), (0, i["default"])(t[2]))) })), o && e.closePath() } var s = { drawPolylinePath: o, drawBezierCurvePath: a }; t["default"] = s }, e177: function (e, t, n) { var r = n("d039"); e.exports = !r((function () { function e() { } return e.prototype.constructor = null, Object.getPrototypeOf(new e) !== e.prototype })) }, e198: function (e, t, n) { var r = n("ef08"), i = n("5524"), o = n("e444"), a = n("fcd4"), s = n("1a14").f; e.exports = function (e) { var t = i.Symbol || (i.Symbol = o ? {} : r.Symbol || {}); "_" == e.charAt(0) || e in t || s(t, e, { value: a.f(e) }) } }, e21d: function (e, t, n) { var r = n("23e7"), i = n("d039"), o = n("861d"), a = Object.isFrozen, s = i((function () { a(1) })); r({ target: "Object", stat: !0, forced: s }, { isFrozen: function (e) { return !o(e) || !!a && a(e) } }) }, e24b: function (e, t, n) { var r = n("49f4"), i = n("1efc"), o = n("bbc0"), a = n("7a48"), s = n("2524"); function c(e) { var t = -1, n = null == e ? 0 : e.length; this.clear(); while (++t < n) { var r = e[t]; this.set(r[0], r[1]) } } c.prototype.clear = r, c.prototype["delete"] = i, c.prototype.get = o, c.prototype.has = a, c.prototype.set = s, e.exports = c }, e260: function (e, t, n) { "use strict"; var r = n("fc6a"), i = n("44d2"), o = n("3f8c"), a = n("69f3"), s = n("7dd0"), c = "Array Iterator", l = a.set, u = a.getterFor(c); e.exports = s(Array, "Array", (function (e, t) { l(this, { type: c, target: r(e), index: 0, kind: t }) }), (function () { var e = u(this), t = e.target, n = e.kind, r = e.index++; return !t || r >= t.length ? (e.target = void 0, { value: void 0, done: !0 }) : "keys" == n ? { value: r, done: !1 } : "values" == n ? { value: t[r], done: !1 } : { value: [r, t[r]], done: !1 } }), "values"), o.Arguments = o.Array, i("keys"), i("values"), i("entries") }, e285: function (e, t, n) { var r = n("da84"), i = r.isFinite; e.exports = Number.isFinite || function (e) { return "number" == typeof e && i(e) } }, e2c0: function (e, t, n) { var r = n("e2e4"), i = n("d370"), o = n("6747"), a = n("c098"), s = n("b218"), c = n("f4d6"); function l(e, t, n) { t = r(t, e); var l = -1, u = t.length, h = !1; while (++l < u) { var f = c(t[l]); if (!(h = null != e && n(e, f))) break; e = e[f] } return h || ++l != u ? h : (u = null == e ? 0 : e.length, !!u && s(u) && a(f, u) && (o(e) || i(e))) } e.exports = l }, e2cc: function (e, t, n) { var r = n("6eeb"); e.exports = function (e, t, n) { for (var i in t) r(e, i, t[i], n); return e } }, e2e4: function (e, t, n) { var r = n("6747"), i = n("f608"), o = n("18d8"), a = n("76dd"); function s(e, t) { return r(e) ? e : i(e, t) ? [e] : o(a(e)) } e.exports = s }, e32c: function (e, t, n) { "use strict"; var r = n("da05"), i = n("db14"); r["b"].install = function (e) { e.use(i["a"]), e.component(r["b"].name, r["b"]) }, t["a"] = r["b"] }, e34a: function (e, t, n) { var r = n("8b1a")("meta"), i = n("7a41"), o = n("9c0e"), a = n("1a14").f, s = 0, c = Object.isExtensible || function () { return !0 }, l = !n("4b8b")((function () { return c(Object.preventExtensions({})) })), u = function (e) { a(e, r, { value: { i: "O" + ++s, w: {} } }) }, h = function (e, t) { if (!i(e)) return "symbol" == typeof e ? e : ("string" == typeof e ? "S" : "P") + e; if (!o(e, r)) { if (!c(e)) return "F"; if (!t) return "E"; u(e) } return e[r].i }, f = function (e, t) { if (!o(e, r)) { if (!c(e)) return !0; if (!t) return !1; u(e) } return e[r].w }, d = function (e) { return l && p.NEED && c(e) && !o(e, r) && u(e), e }, p = e.exports = { KEY: r, NEED: !1, fastKey: h, getWeak: f, onFreeze: d } }, e380: function (e, t, n) { var r = n("7b83"), i = "Expected a function"; function o(e, t) { if ("function" != typeof e || null != t && "function" != typeof t) throw new TypeError(i); var n = function () { var r = arguments, i = t ? t.apply(this, r) : r[0], o = n.cache; if (o.has(i)) return o.get(i); var a = e.apply(this, r); return n.cache = o.set(i, a) || o, a }; return n.cache = new (o.Cache || r), n } o.Cache = r, e.exports = o }, e3db: function (e, t) { var n = {}.toString; e.exports = Array.isArray || function (e) { return "[object Array]" == n.call(e) } }, e3f8: function (e, t, n) { var r = n("656b"); function i(e) { return function (t) { return r(t, e) } } e.exports = i }, e439: function (e, t, n) { var r = n("23e7"), i = n("d039"), o = n("fc6a"), a = n("06cf").f, s = n("83ab"), c = i((function () { a(1) })), l = !s || c; r({ target: "Object", stat: !0, forced: l, sham: !s }, { getOwnPropertyDescriptor: function (e, t) { return a(o(e), t) } }) }, e43e: function (e, t, n) { var r = n("23e7"), i = n("d039"), o = n("861d"), a = Object.isSealed, s = i((function () { a(1) })); r({ target: "Object", stat: !0, forced: s }, { isSealed: function (e) { return !o(e) || !!a && a(e) } }) }, e444: function (e, t) { e.exports = !0 }, e507: function (e, t, n) { var r = n("512c"); r(r.S + r.F, "Object", { assign: n("072d") }) }, e538: function (e, t, n) { var r = n("b622"); t.f = r }, e5383: function (e, t, n) { (function (e) { var r = n("2b3e"), i = t && !t.nodeType && t, o = i && "object" == typeof e && e && !e.nodeType && e, a = o && o.exports === i, s = a ? r.Buffer : void 0, c = s ? s.allocUnsafe : void 0; function l(e, t) { if (t) return e.slice(); var n = e.length, r = c ? c(n) : new e.constructor(n); return e.copy(r), r } e.exports = l }).call(this, n("62e4")(e)) }, e58c: function (e, t, n) { "use strict"; var r = n("fc6a"), i = n("a691"), o = n("50c4"), a = n("a640"), s = Math.min, c = [].lastIndexOf, l = !!c && 1 / [1].lastIndexOf(1, -0) < 0, u = a("lastIndexOf"), h = l || !u; e.exports = h ? function (e) { if (l) return c.apply(this, arguments) || 0; var t = r(this), n = o(t.length), a = n - 1; for (arguments.length > 1 && (a = s(a, i(arguments[1]))), a < 0 && (a = n + a); a >= 0; a--)if (a in t && t[a] === e) return a || 0; return -1 } : c }, e5cd: function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("4d91"), a = n("02ea"); t["a"] = { name: "LocaleReceiver", props: { componentName: o["a"].string.def("global"), defaultLocale: o["a"].oneOfType([o["a"].object, o["a"].func]), children: o["a"].func }, inject: { localeData: { default: function () { return {} } } }, methods: { getLocale: function () { var e = this.componentName, t = this.defaultLocale, n = t || a["a"][e || "global"], r = this.localeData.antLocale, o = e && r ? r[e] : {}; return i()({}, "function" === typeof n ? n() : n, o || {}) }, getLocaleCode: function () { var e = this.localeData.antLocale, t = e && e.locale; return e && e.exist && !t ? a["a"].locale : t } }, render: function () { var e = this.$scopedSlots, t = this.children || e["default"], n = this.localeData.antLocale; return t(this.getLocale(), this.getLocaleCode(), n) } } }, e667: function (e, t) { e.exports = function (e) { try { return { error: !1, value: e() } } catch (t) { return { error: !0, value: t } } } }, e679: function (e, t, n) { }, e6cf: function (e, t, n) { "use strict"; var r, i, o, a, s = n("23e7"), c = n("c430"), l = n("da84"), u = n("d066"), h = n("fea9"), f = n("6eeb"), d = n("e2cc"), p = n("d2bb"), v = n("d44e"), m = n("2626"), g = n("861d"), y = n("1c0b"), b = n("19aa"), x = n("8925"), w = n("2266"), _ = n("1c7e"), C = n("4840"), M = n("2cf4").set, O = n("b575"), k = n("cdf9"), S = n("44de"), T = n("f069"), A = n("e667"), L = n("69f3"), j = n("94ca"), z = n("b622"), E = n("6069"), P = n("605d"), D = n("2d00"), H = z("species"), V = "Promise", I = L.get, N = L.set, R = L.getterFor(V), F = h && h.prototype, Y = h, $ = F, B = l.TypeError, W = l.document, q = l.process, U = T.f, K = U, G = !!(W && W.createEvent && l.dispatchEvent), X = "function" == typeof PromiseRejectionEvent, J = "unhandledrejection", Q = "rejectionhandled", Z = 0, ee = 1, te = 2, ne = 1, re = 2, ie = !1, oe = j(V, (function () { var e = x(Y), t = e !== String(Y); if (!t && 66 === D) return !0; if (c && !$["finally"]) return !0; if (D >= 51 && /native code/.test(e)) return !1; var n = new Y((function (e) { e(1) })), r = function (e) { e((function () { }), (function () { })) }, i = n.constructor = {}; return i[H] = r, ie = n.then((function () { })) instanceof r, !ie || !t && E && !X })), ae = oe || !_((function (e) { Y.all(e)["catch"]((function () { })) })), se = function (e) { var t; return !(!g(e) || "function" != typeof (t = e.then)) && t }, ce = function (e, t) { if (!e.notified) { e.notified = !0; var n = e.reactions; O((function () { var r = e.value, i = e.state == ee, o = 0; while (n.length > o) { var a, s, c, l = n[o++], u = i ? l.ok : l.fail, h = l.resolve, f = l.reject, d = l.domain; try { u ? (i || (e.rejection === re && fe(e), e.rejection = ne), !0 === u ? a = r : (d && d.enter(), a = u(r), d && (d.exit(), c = !0)), a === l.promise ? f(B("Promise-chain cycle")) : (s = se(a)) ? s.call(a, h, f) : h(a)) : f(r) } catch (p) { d && !c && d.exit(), f(p) } } e.reactions = [], e.notified = !1, t && !e.rejection && ue(e) })) } }, le = function (e, t, n) { var r, i; G ? (r = W.createEvent("Event"), r.promise = t, r.reason = n, r.initEvent(e, !1, !0), l.dispatchEvent(r)) : r = { promise: t, reason: n }, !X && (i = l["on" + e]) ? i(r) : e === J && S("Unhandled promise rejection", n) }, ue = function (e) { M.call(l, (function () { var t, n = e.facade, r = e.value, i = he(e); if (i && (t = A((function () { P ? q.emit("unhandledRejection", r, n) : le(J, n, r) })), e.rejection = P || he(e) ? re : ne, t.error)) throw t.value })) }, he = function (e) { return e.rejection !== ne && !e.parent }, fe = function (e) { M.call(l, (function () { var t = e.facade; P ? q.emit("rejectionHandled", t) : le(Q, t, e.value) })) }, de = function (e, t, n) { return function (r) { e(t, r, n) } }, pe = function (e, t, n) { e.done || (e.done = !0, n && (e = n), e.value = t, e.state = te, ce(e, !0)) }, ve = function (e, t, n) { if (!e.done) { e.done = !0, n && (e = n); try { if (e.facade === t) throw B("Promise can't be resolved itself"); var r = se(t); r ? O((function () { var n = { done: !1 }; try { r.call(t, de(ve, n, e), de(pe, n, e)) } catch (i) { pe(n, i, e) } })) : (e.value = t, e.state = ee, ce(e, !1)) } catch (i) { pe({ done: !1 }, i, e) } } }; if (oe && (Y = function (e) { b(this, Y, V), y(e), r.call(this); var t = I(this); try { e(de(ve, t), de(pe, t)) } catch (n) { pe(t, n) } }, $ = Y.prototype, r = function (e) { N(this, { type: V, done: !1, notified: !1, parent: !1, reactions: [], rejection: !1, state: Z, value: void 0 }) }, r.prototype = d($, { then: function (e, t) { var n = R(this), r = U(C(this, Y)); return r.ok = "function" != typeof e || e, r.fail = "function" == typeof t && t, r.domain = P ? q.domain : void 0, n.parent = !0, n.reactions.push(r), n.state != Z && ce(n, !1), r.promise }, catch: function (e) { return this.then(void 0, e) } }), i = function () { var e = new r, t = I(e); this.promise = e, this.resolve = de(ve, t), this.reject = de(pe, t) }, T.f = U = function (e) { return e === Y || e === o ? new i(e) : K(e) }, !c && "function" == typeof h && F !== Object.prototype)) { a = F.then, ie || (f(F, "then", (function (e, t) { var n = this; return new Y((function (e, t) { a.call(n, e, t) })).then(e, t) }), { unsafe: !0 }), f(F, "catch", $["catch"], { unsafe: !0 })); try { delete F.constructor } catch (me) { } p && p(F, $) } s({ global: !0, wrap: !0, forced: oe }, { Promise: Y }), v(Y, V, !1, !0), m(V), o = u(V), s({ target: V, stat: !0, forced: oe }, { reject: function (e) { var t = U(this); return t.reject.call(void 0, e), t.promise } }), s({ target: V, stat: !0, forced: c || oe }, { resolve: function (e) { return k(c && this === o ? Y : this, e) } }), s({ target: V, stat: !0, forced: ae }, { all: function (e) { var t = this, n = U(t), r = n.resolve, i = n.reject, o = A((function () { var n = y(t.resolve), o = [], a = 0, s = 1; w(e, (function (e) { var c = a++, l = !1; o.push(void 0), s++, n.call(t, e).then((function (e) { l || (l = !0, o[c] = e, --s || r(o)) }), i) })), --s || r(o) })); return o.error && i(o.value), n.promise }, race: function (e) { var t = this, n = U(t), r = n.reject, i = A((function () { var i = y(t.resolve); w(e, (function (e) { i.call(t, e).then(n.resolve, r) })) })); return i.error && r(i.value), n.promise } }) }, e6e1: function (e, t, n) { var r = n("23e7"); r({ target: "Number", stat: !0 }, { MIN_SAFE_INTEGER: -9007199254740991 }) }, e71b: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("83ab"), o = n("eb1d"), a = n("7b0b"), s = n("1c0b"), c = n("9bf2"); i && r({ target: "Object", proto: !0, forced: o }, { __defineSetter__: function (e, t) { c.f(a(this), e, { set: s(t), enumerable: !0, configurable: !0 }) } }) }, e87a: function (e, t, n) { "use strict"; n.r(t), n.d(t, "AbortError", (function () { return a })), n.d(t, "HttpError", (function () { return i })), n.d(t, "TimeoutError", (function () { return o })), n.d(t, "HttpClient", (function () { return l })), n.d(t, "HttpResponse", (function () { return c })), n.d(t, "DefaultHttpClient", (function () { return _ })), n.d(t, "HubConnection", (function () { return z })), n.d(t, "HubConnectionState", (function () { return M })), n.d(t, "HubConnectionBuilder", (function () { return le })), n.d(t, "MessageType", (function () { return y })), n.d(t, "LogLevel", (function () { return u["a"] })), n.d(t, "HttpTransportType", (function () { return L })), n.d(t, "TransferFormat", (function () { return j })), n.d(t, "NullLogger", (function () { return ne["a"] })), n.d(t, "JsonHubProtocol", (function () { return oe })), n.d(t, "Subject", (function () { return O })), n.d(t, "VERSION", (function () { return h["e"] })); var r = function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(), i = function (e) { function t(t, n) { var r = this.constructor, i = this, o = r.prototype; return i = e.call(this, t) || this, i.statusCode = n, i.__proto__ = o, i } return r(t, e), t }(Error), o = function (e) { function t(t) { var n = this.constructor; void 0 === t && (t = "A timeout occurred."); var r = this, i = n.prototype; return r = e.call(this, t) || this, r.__proto__ = i, r } return r(t, e), t }(Error), a = function (e) { function t(t) { var n = this.constructor; void 0 === t && (t = "An abort occurred."); var r = this, i = n.prototype; return r = e.call(this, t) || this, r.__proto__ = i, r } return r(t, e), t }(Error), s = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, c = function () { function e(e, t, n) { this.statusCode = e, this.statusText = t, this.content = n } return e }(), l = function () { function e() { } return e.prototype.get = function (e, t) { return this.send(s({}, t, { method: "GET", url: e })) }, e.prototype.post = function (e, t) { return this.send(s({}, t, { method: "POST", url: e })) }, e.prototype.delete = function (e, t) { return this.send(s({}, t, { method: "DELETE", url: e })) }, e.prototype.getCookieString = function (e) { return "" }, e }(), u = n("33e1"), h = n("7ed1"), f = function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(), d = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, p = function (e, t, n, r) { return new (n || (n = Promise))((function (i, o) { function a(e) { try { c(r.next(e)) } catch (t) { o(t) } } function s(e) { try { c(r["throw"](e)) } catch (t) { o(t) } } function c(e) { e.done ? i(e.value) : new n((function (t) { t(e.value) })).then(a, s) } c((r = r.apply(e, t || [])).next()) })) }, v = function (e, t) { var n, r, i, o, a = { label: 0, sent: function () { if (1 & i[0]) throw i[1]; return i[1] }, trys: [], ops: [] }; return o = { next: s(0), throw: s(1), return: s(2) }, "function" === typeof Symbol && (o[Symbol.iterator] = function () { return this }), o; function s(e) { return function (t) { return c([e, t]) } } function c(o) { if (n) throw new TypeError("Generator is already executing."); while (a) try { if (n = 1, r && (i = 2 & o[0] ? r["return"] : o[0] ? r["throw"] || ((i = r["return"]) && i.call(r), 0) : r.next) && !(i = i.call(r, o[1])).done) return i; switch (r = 0, i && (o = [2 & o[0], i.value]), o[0]) { case 0: case 1: i = o; break; case 4: return a.label++, { value: o[1], done: !1 }; case 5: a.label++, r = o[1], o = [0]; continue; case 7: o = a.ops.pop(), a.trys.pop(); continue; default: if (i = a.trys, !(i = i.length > 0 && i[i.length - 1]) && (6 === o[0] || 2 === o[0])) { a = 0; continue } if (3 === o[0] && (!i || o[1] > i[0] && o[1] < i[3])) { a.label = o[1]; break } if (6 === o[0] && a.label < i[1]) { a.label = i[1], i = o; break } if (i && a.label < i[2]) { a.label = i[2], a.ops.push(o); break } i[2] && a.ops.pop(), a.trys.pop(); continue }o = t.call(e, a) } catch (s) { o = [6, s], r = 0 } finally { n = i = 0 } if (5 & o[0]) throw o[1]; return { value: o[0] ? o[1] : void 0, done: !0 } } }, m = function (e) { function t(t) { var n = e.call(this) || this; if (n.logger = t, "undefined" === typeof fetch) { var r = require; n.jar = new (r("tough-cookie").CookieJar), n.fetchType = r("node-fetch"), n.fetchType = r("fetch-cookie")(n.fetchType, n.jar), n.abortControllerType = r("abort-controller") } else n.fetchType = fetch.bind(self), n.abortControllerType = AbortController; return n } return f(t, e), t.prototype.send = function (e) { return p(this, void 0, void 0, (function () { var t, n, r, s, l, h, f, p, m = this; return v(this, (function (v) { switch (v.label) { case 0: if (e.abortSignal && e.abortSignal.aborted) throw new a; if (!e.method) throw new Error("No method defined."); if (!e.url) throw new Error("No url defined."); t = new this.abortControllerType, e.abortSignal && (e.abortSignal.onabort = function () { t.abort(), n = new a }), r = null, e.timeout && (s = e.timeout, r = setTimeout((function () { t.abort(), m.logger.log(u["a"].Warning, "Timeout from HTTP request."), n = new o }), s)), v.label = 1; case 1: return v.trys.push([1, 3, 4, 5]), [4, this.fetchType(e.url, { body: e.content, cache: "no-cache", credentials: !0 === e.withCredentials ? "include" : "same-origin", headers: d({ "Content-Type": "text/plain;charset=UTF-8", "X-Requested-With": "XMLHttpRequest" }, e.headers), method: e.method, mode: "cors", redirect: "manual", signal: t.signal })]; case 2: return l = v.sent(), [3, 5]; case 3: if (h = v.sent(), n) throw n; throw this.logger.log(u["a"].Warning, "Error from HTTP request. " + h + "."), h; case 4: return r && clearTimeout(r), e.abortSignal && (e.abortSignal.onabort = null), [7]; case 5: if (!l.ok) throw new i(l.statusText, l.status); return f = g(l, e.responseType), [4, f]; case 6: return p = v.sent(), [2, new c(l.status, l.statusText, p)] } })) })) }, t.prototype.getCookieString = function (e) { var t = ""; return h["c"].isNode && this.jar && this.jar.getCookies(e, (function (e, n) { return t = n.join("; ") })), t }, t }(l); function g(e, t) { var n; switch (t) { case "arraybuffer": n = e.arrayBuffer(); break; case "text": n = e.text(); break; case "blob": case "document": case "json": throw new Error(t + " is not supported."); default: n = e.text(); break }return n } var y, b = function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(), x = function (e) { function t(t) { var n = e.call(this) || this; return n.logger = t, n } return b(t, e), t.prototype.send = function (e) { var t = this; return e.abortSignal && e.abortSignal.aborted ? Promise.reject(new a) : e.method ? e.url ? new Promise((function (n, r) { var s = new XMLHttpRequest; s.open(e.method, e.url, !0), s.withCredentials = void 0 === e.withCredentials || e.withCredentials, s.setRequestHeader("X-Requested-With", "XMLHttpRequest"), s.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); var l = e.headers; l && Object.keys(l).forEach((function (e) { s.setRequestHeader(e, l[e]) })), e.responseType && (s.responseType = e.responseType), e.abortSignal && (e.abortSignal.onabort = function () { s.abort(), r(new a) }), e.timeout && (s.timeout = e.timeout), s.onload = function () { e.abortSignal && (e.abortSignal.onabort = null), s.status >= 200 && s.status < 300 ? n(new c(s.status, s.statusText, s.response || s.responseText)) : r(new i(s.statusText, s.status)) }, s.onerror = function () { t.logger.log(u["a"].Warning, "Error from HTTP request. " + s.status + ": " + s.statusText + "."), r(new i(s.statusText, s.status)) }, s.ontimeout = function () { t.logger.log(u["a"].Warning, "Timeout from HTTP request."), r(new o) }, s.send(e.content || "") })) : Promise.reject(new Error("No url defined.")) : Promise.reject(new Error("No method defined.")) }, t }(l), w = function () { var e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) }; return function (t, n) { function r() { this.constructor = t } e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r) } }(), _ = function (e) { function t(t) { var n = e.call(this) || this; if ("undefined" !== typeof fetch || h["c"].isNode) n.httpClient = new m(t); else { if ("undefined" === typeof XMLHttpRequest) throw new Error("No usable HttpClient found."); n.httpClient = new x(t) } return n } return w(t, e), t.prototype.send = function (e) { return e.abortSignal && e.abortSignal.aborted ? Promise.reject(new a) : e.method ? e.url ? this.httpClient.send(e) : Promise.reject(new Error("No url defined.")) : Promise.reject(new Error("No method defined.")) }, t.prototype.getCookieString = function (e) { return this.httpClient.getCookieString(e) }, t }(l), C = n("677a"); (function (e) { e[e["Invocation"] = 1] = "Invocation", e[e["StreamItem"] = 2] = "StreamItem", e[e["Completion"] = 3] = "Completion", e[e["StreamInvocation"] = 4] = "StreamInvocation", e[e["CancelInvocation"] = 5] = "CancelInvocation", e[e["Ping"] = 6] = "Ping", e[e["Close"] = 7] = "Close" })(y || (y = {})); var M, O = function () { function e() { this.observers = [] } return e.prototype.next = function (e) { for (var t = 0, n = this.observers; t < n.length; t++) { var r = n[t]; r.next(e) } }, e.prototype.error = function (e) { for (var t = 0, n = this.observers; t < n.length; t++) { var r = n[t]; r.error && r.error(e) } }, e.prototype.complete = function () { for (var e = 0, t = this.observers; e < t.length; e++) { var n = t[e]; n.complete && n.complete() } }, e.prototype.subscribe = function (e) { return this.observers.push(e), new h["d"](this, e) }, e }(), k = function (e, t, n, r) { return new (n || (n = Promise))((function (i, o) { function a(e) { try { c(r.next(e)) } catch (t) { o(t) } } function s(e) { try { c(r["throw"](e)) } catch (t) { o(t) } } function c(e) { e.done ? i(e.value) : new n((function (t) { t(e.value) })).then(a, s) } c((r = r.apply(e, t || [])).next()) })) }, S = function (e, t) { var n, r, i, o, a = { label: 0, sent: function () { if (1 & i[0]) throw i[1]; return i[1] }, trys: [], ops: [] }; return o = { next: s(0), throw: s(1), return: s(2) }, "function" === typeof Symbol && (o[Symbol.iterator] = function () { return this }), o; function s(e) { return function (t) { return c([e, t]) } } function c(o) { if (n) throw new TypeError("Generator is already executing."); while (a) try { if (n = 1, r && (i = 2 & o[0] ? r["return"] : o[0] ? r["throw"] || ((i = r["return"]) && i.call(r), 0) : r.next) && !(i = i.call(r, o[1])).done) return i; switch (r = 0, i && (o = [2 & o[0], i.value]), o[0]) { case 0: case 1: i = o; break; case 4: return a.label++, { value: o[1], done: !1 }; case 5: a.label++, r = o[1], o = [0]; continue; case 7: o = a.ops.pop(), a.trys.pop(); continue; default: if (i = a.trys, !(i = i.length > 0 && i[i.length - 1]) && (6 === o[0] || 2 === o[0])) { a = 0; continue } if (3 === o[0] && (!i || o[1] > i[0] && o[1] < i[3])) { a.label = o[1]; break } if (6 === o[0] && a.label < i[1]) { a.label = i[1], i = o; break } if (i && a.label < i[2]) { a.label = i[2], a.ops.push(o); break } i[2] && a.ops.pop(), a.trys.pop(); continue }o = t.call(e, a) } catch (s) { o = [6, s], r = 0 } finally { n = i = 0 } if (5 & o[0]) throw o[1]; return { value: o[0] ? o[1] : void 0, done: !0 } } }, T = 3e4, A = 15e3; (function (e) { e["Disconnected"] = "Disconnected", e["Connecting"] = "Connecting", e["Connected"] = "Connected", e["Disconnecting"] = "Disconnecting", e["Reconnecting"] = "Reconnecting" })(M || (M = {})); var L, j, z = function () { function e(e, t, n, r) { var i = this; this.nextKeepAlive = 0, h["a"].isRequired(e, "connection"), h["a"].isRequired(t, "logger"), h["a"].isRequired(n, "protocol"), this.serverTimeoutInMilliseconds = T, this.keepAliveIntervalInMilliseconds = A, this.logger = t, this.protocol = n, this.connection = e, this.reconnectPolicy = r, this.handshakeProtocol = new C["a"], this.connection.onreceive = function (e) { return i.processIncomingData(e) }, this.connection.onclose = function (e) { return i.connectionClosed(e) }, this.callbacks = {}, this.methods = {}, this.closedCallbacks = [], this.reconnectingCallbacks = [], this.reconnectedCallbacks = [], this.invocationId = 0, this.receivedHandshakeResponse = !1, this.connectionState = M.Disconnected, this.connectionStarted = !1, this.cachedPingMessage = this.protocol.writeMessage({ type: y.Ping }) } return e.create = function (t, n, r, i) { return new e(t, n, r, i) }, Object.defineProperty(e.prototype, "state", { get: function () { return this.connectionState }, enumerable: !0, configurable: !0 }), Object.defineProperty(e.prototype, "connectionId", { get: function () { return this.connection && this.connection.connectionId || null }, enumerable: !0, configurable: !0 }), Object.defineProperty(e.prototype, "baseUrl", { get: function () { return this.connection.baseUrl || "" }, set: function (e) { if (this.connectionState !== M.Disconnected && this.connectionState !== M.Reconnecting) throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url."); if (!e) throw new Error("The HubConnection url must be a valid url."); this.connection.baseUrl = e }, enumerable: !0, configurable: !0 }), e.prototype.start = function () { return this.startPromise = this.startWithStateTransitions(), this.startPromise }, e.prototype.startWithStateTransitions = function () { return k(this, void 0, void 0, (function () { var e; return S(this, (function (t) { switch (t.label) { case 0: if (this.connectionState !== M.Disconnected) return [2, Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."))]; this.connectionState = M.Connecting, this.logger.log(u["a"].Debug, "Starting HubConnection."), t.label = 1; case 1: return t.trys.push([1, 3, , 4]), [4, this.startInternal()]; case 2: return t.sent(), this.connectionState = M.Connected, this.connectionStarted = !0, this.logger.log(u["a"].Debug, "HubConnection connected successfully."), [3, 4]; case 3: return e = t.sent(), this.connectionState = M.Disconnected, this.logger.log(u["a"].Debug, "HubConnection failed to start successfully because of error '" + e + "'."), [2, Promise.reject(e)]; case 4: return [2] } })) })) }, e.prototype.startInternal = function () { return k(this, void 0, void 0, (function () { var e, t, n, r = this; return S(this, (function (i) { switch (i.label) { case 0: return this.stopDuringStartError = void 0, this.receivedHandshakeResponse = !1, e = new Promise((function (e, t) { r.handshakeResolver = e, r.handshakeRejecter = t })), [4, this.connection.start(this.protocol.transferFormat)]; case 1: i.sent(), i.label = 2; case 2: return i.trys.push([2, 5, , 7]), t = { protocol: this.protocol.name, version: this.protocol.version }, this.logger.log(u["a"].Debug, "Sending handshake request."), [4, this.sendMessage(this.handshakeProtocol.writeHandshakeRequest(t))]; case 3: return i.sent(), this.logger.log(u["a"].Information, "Using HubProtocol '" + this.protocol.name + "'."), this.cleanupTimeout(), this.resetTimeoutPeriod(), this.resetKeepAliveInterval(), [4, e]; case 4: if (i.sent(), this.stopDuringStartError) throw this.stopDuringStartError; return [3, 7]; case 5: return n = i.sent(), this.logger.log(u["a"].Debug, "Hub handshake failed with error '" + n + "' during start(). Stopping HubConnection."), this.cleanupTimeout(), this.cleanupPingTimer(), [4, this.connection.stop(n)]; case 6: throw i.sent(), n; case 7: return [2] } })) })) }, e.prototype.stop = function () { return k(this, void 0, void 0, (function () { var e; return S(this, (function (t) { switch (t.label) { case 0: return e = this.startPromise, this.stopPromise = this.stopInternal(), [4, this.stopPromise]; case 1: t.sent(), t.label = 2; case 2: return t.trys.push([2, 4, , 5]), [4, e]; case 3: return t.sent(), [3, 5]; case 4: return t.sent(), [3, 5]; case 5: return [2] } })) })) }, e.prototype.stopInternal = function (e) { return this.connectionState === M.Disconnected ? (this.logger.log(u["a"].Debug, "Call to HubConnection.stop(" + e + ") ignored because it is already in the disconnected state."), Promise.resolve()) : this.connectionState === M.Disconnecting ? (this.logger.log(u["a"].Debug, "Call to HttpConnection.stop(" + e + ") ignored because the connection is already in the disconnecting state."), this.stopPromise) : (this.connectionState = M.Disconnecting, this.logger.log(u["a"].Debug, "Stopping HubConnection."), this.reconnectDelayHandle ? (this.logger.log(u["a"].Debug, "Connection stopped during reconnect delay. Done reconnecting."), clearTimeout(this.reconnectDelayHandle), this.reconnectDelayHandle = void 0, this.completeClose(), Promise.resolve()) : (this.cleanupTimeout(), this.cleanupPingTimer(), this.stopDuringStartError = e || new Error("The connection was stopped before the hub handshake could complete."), this.connection.stop(e))) }, e.prototype.stream = function (e) { for (var t = this, n = [], r = 1; r < arguments.length; r++)n[r - 1] = arguments[r]; var i, o = this.replaceStreamingParams(n), a = o[0], s = o[1], c = this.createStreamInvocation(e, n, s), l = new O; return l.cancelCallback = function () { var e = t.createCancelInvocation(c.invocationId); return delete t.callbacks[c.invocationId], i.then((function () { return t.sendWithProtocol(e) })) }, this.callbacks[c.invocationId] = function (e, t) { t ? l.error(t) : e && (e.type === y.Completion ? e.error ? l.error(new Error(e.error)) : l.complete() : l.next(e.item)) }, i = this.sendWithProtocol(c).catch((function (e) { l.error(e), delete t.callbacks[c.invocationId] })), this.launchStreams(a, i), l }, e.prototype.sendMessage = function (e) { return this.resetKeepAliveInterval(), this.connection.send(e) }, e.prototype.sendWithProtocol = function (e) { return this.sendMessage(this.protocol.writeMessage(e)) }, e.prototype.send = function (e) { for (var t = [], n = 1; n < arguments.length; n++)t[n - 1] = arguments[n]; var r = this.replaceStreamingParams(t), i = r[0], o = r[1], a = this.sendWithProtocol(this.createInvocation(e, t, !0, o)); return this.launchStreams(i, a), a }, e.prototype.invoke = function (e) { for (var t = this, n = [], r = 1; r < arguments.length; r++)n[r - 1] = arguments[r]; var i = this.replaceStreamingParams(n), o = i[0], a = i[1], s = this.createInvocation(e, n, !1, a), c = new Promise((function (e, n) { t.callbacks[s.invocationId] = function (t, r) { r ? n(r) : t && (t.type === y.Completion ? t.error ? n(new Error(t.error)) : e(t.result) : n(new Error("Unexpected message type: " + t.type))) }; var r = t.sendWithProtocol(s).catch((function (e) { n(e), delete t.callbacks[s.invocationId] })); t.launchStreams(o, r) })); return c }, e.prototype.on = function (e, t) { e && t && (e = e.toLowerCase(), this.methods[e] || (this.methods[e] = []), -1 === this.methods[e].indexOf(t) && this.methods[e].push(t)) }, e.prototype.off = function (e, t) { if (e) { e = e.toLowerCase(); var n = this.methods[e]; if (n) if (t) { var r = n.indexOf(t); -1 !== r && (n.splice(r, 1), 0 === n.length && delete this.methods[e]) } else delete this.methods[e] } }, e.prototype.onclose = function (e) { e && this.closedCallbacks.push(e) }, e.prototype.onreconnecting = function (e) { e && this.reconnectingCallbacks.push(e) }, e.prototype.onreconnected = function (e) { e && this.reconnectedCallbacks.push(e) }, e.prototype.processIncomingData = function (e) { if (this.cleanupTimeout(), this.receivedHandshakeResponse || (e = this.processHandshakeResponse(e), this.receivedHandshakeResponse = !0), e) for (var t = this.protocol.parseMessages(e, this.logger), n = 0, r = t; n < r.length; n++) { var i = r[n]; switch (i.type) { case y.Invocation: this.invokeClientMethod(i); break; case y.StreamItem: case y.Completion: var o = this.callbacks[i.invocationId]; o && (i.type === y.Completion && delete this.callbacks[i.invocationId], o(i)); break; case y.Ping: break; case y.Close: this.logger.log(u["a"].Information, "Close message received from server."); var a = i.error ? new Error("Server returned an error on close: " + i.error) : void 0; !0 === i.allowReconnect ? this.connection.stop(a) : this.stopPromise = this.stopInternal(a); break; default: this.logger.log(u["a"].Warning, "Invalid message type: " + i.type + "."); break } } this.resetTimeoutPeriod() }, e.prototype.processHandshakeResponse = function (e) { var t, n, r; try { t = this.handshakeProtocol.parseHandshakeResponse(e), r = t[0], n = t[1] } catch (a) { var i = "Error parsing handshake response: " + a; this.logger.log(u["a"].Error, i); var o = new Error(i); throw this.handshakeRejecter(o), o } if (n.error) { i = "Server returned handshake error: " + n.error; this.logger.log(u["a"].Error, i); o = new Error(i); throw this.handshakeRejecter(o), o } return this.logger.log(u["a"].Debug, "Server handshake complete."), this.handshakeResolver(), r }, e.prototype.resetKeepAliveInterval = function () { this.connection.features.inherentKeepAlive || (this.nextKeepAlive = (new Date).getTime() + this.keepAliveIntervalInMilliseconds, this.cleanupPingTimer()) }, e.prototype.resetTimeoutPeriod = function () { var e = this; if ((!this.connection.features || !this.connection.features.inherentKeepAlive) && (this.timeoutHandle = setTimeout((function () { return e.serverTimeout() }), this.serverTimeoutInMilliseconds), void 0 === this.pingServerHandle)) { var t = this.nextKeepAlive - (new Date).getTime(); t < 0 && (t = 0), this.pingServerHandle = setTimeout((function () { return k(e, void 0, void 0, (function () { return S(this, (function (e) { switch (e.label) { case 0: if (this.connectionState !== M.Connected) return [3, 4]; e.label = 1; case 1: return e.trys.push([1, 3, , 4]), [4, this.sendMessage(this.cachedPingMessage)]; case 2: return e.sent(), [3, 4]; case 3: return e.sent(), this.cleanupPingTimer(), [3, 4]; case 4: return [2] } })) })) }), t) } }, e.prototype.serverTimeout = function () { this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server.")) }, e.prototype.invokeClientMethod = function (e) { var t = this, n = this.methods[e.target.toLowerCase()]; if (n) { try { n.forEach((function (n) { return n.apply(t, e.arguments) })) } catch (i) { this.logger.log(u["a"].Error, "A callback for the method " + e.target.toLowerCase() + " threw error '" + i + "'.") } if (e.invocationId) { var r = "Server requested a response, which is not supported in this version of the client."; this.logger.log(u["a"].Error, r), this.stopPromise = this.stopInternal(new Error(r)) } } else this.logger.log(u["a"].Warning, "No client method with the name '" + e.target + "' found.") }, e.prototype.connectionClosed = function (e) { this.logger.log(u["a"].Debug, "HubConnection.connectionClosed(" + e + ") called while in state " + this.connectionState + "."), this.stopDuringStartError = this.stopDuringStartError || e || new Error("The underlying connection was closed before the hub handshake could complete."), this.handshakeResolver && this.handshakeResolver(), this.cancelCallbacksWithError(e || new Error("Invocation canceled due to the underlying connection being closed.")), this.cleanupTimeout(), this.cleanupPingTimer(), this.connectionState === M.Disconnecting ? this.completeClose(e) : this.connectionState === M.Connected && this.reconnectPolicy ? this.reconnect(e) : this.connectionState === M.Connected && this.completeClose(e) }, e.prototype.completeClose = function (e) { var t = this; if (this.connectionStarted) { this.connectionState = M.Disconnected, this.connectionStarted = !1; try { this.closedCallbacks.forEach((function (n) { return n.apply(t, [e]) })) } catch (n) { this.logger.log(u["a"].Error, "An onclose callback called with error '" + e + "' threw error '" + n + "'.") } } }, e.prototype.reconnect = function (e) { return k(this, void 0, void 0, (function () { var t, n, r, i, o, a = this; return S(this, (function (s) { switch (s.label) { case 0: if (t = Date.now(), n = 0, r = void 0 !== e ? e : new Error("Attempting to reconnect due to a unknown error."), i = this.getNextRetryDelay(n++, 0, r), null === i) return this.logger.log(u["a"].Debug, "Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."), this.completeClose(e), [2]; if (this.connectionState = M.Reconnecting, e ? this.logger.log(u["a"].Information, "Connection reconnecting because of error '" + e + "'.") : this.logger.log(u["a"].Information, "Connection reconnecting."), this.onreconnecting) { try { this.reconnectingCallbacks.forEach((function (t) { return t.apply(a, [e]) })) } catch (c) { this.logger.log(u["a"].Error, "An onreconnecting callback called with error '" + e + "' threw error '" + c + "'.") } if (this.connectionState !== M.Reconnecting) return this.logger.log(u["a"].Debug, "Connection left the reconnecting state in onreconnecting callback. Done reconnecting."), [2] } s.label = 1; case 1: return null === i ? [3, 7] : (this.logger.log(u["a"].Information, "Reconnect attempt number " + n + " will start in " + i + " ms."), [4, new Promise((function (e) { a.reconnectDelayHandle = setTimeout(e, i) }))]); case 2: if (s.sent(), this.reconnectDelayHandle = void 0, this.connectionState !== M.Reconnecting) return this.logger.log(u["a"].Debug, "Connection left the reconnecting state during reconnect delay. Done reconnecting."), [2]; s.label = 3; case 3: return s.trys.push([3, 5, , 6]), [4, this.startInternal()]; case 4: if (s.sent(), this.connectionState = M.Connected, this.logger.log(u["a"].Information, "HubConnection reconnected successfully."), this.onreconnected) try { this.reconnectedCallbacks.forEach((function (e) { return e.apply(a, [a.connection.connectionId]) })) } catch (c) { this.logger.log(u["a"].Error, "An onreconnected callback called with connectionId '" + this.connection.connectionId + "; threw error '" + c + "'.") } return [2]; case 5: return o = s.sent(), this.logger.log(u["a"].Information, "Reconnect attempt failed because of error '" + o + "'."), this.connectionState !== M.Reconnecting ? (this.logger.log(u["a"].Debug, "Connection moved to the '" + this.connectionState + "' from the reconnecting state during reconnect attempt. Done reconnecting."), this.connectionState === M.Disconnecting && this.completeClose(), [2]) : (r = o instanceof Error ? o : new Error(o.toString()), i = this.getNextRetryDelay(n++, Date.now() - t, r), [3, 6]); case 6: return [3, 1]; case 7: return this.logger.log(u["a"].Information, "Reconnect retries have been exhausted after " + (Date.now() - t) + " ms and " + n + " failed attempts. Connection disconnecting."), this.completeClose(), [2] } })) })) }, e.prototype.getNextRetryDelay = function (e, t, n) { try { return this.reconnectPolicy.nextRetryDelayInMilliseconds({ elapsedMilliseconds: t, previousRetryCount: e, retryReason: n }) } catch (r) { return this.logger.log(u["a"].Error, "IRetryPolicy.nextRetryDelayInMilliseconds(" + e + ", " + t + ") threw error '" + r + "'."), null } }, e.prototype.cancelCallbacksWithError = function (e) { var t = this.callbacks; this.callbacks = {}, Object.keys(t).forEach((function (n) { var r = t[n]; r(null, e) })) }, e.prototype.cleanupPingTimer = function () { this.pingServerHandle && (clearTimeout(this.pingServerHandle), this.pingServerHandle = void 0) }, e.prototype.cleanupTimeout = function () { this.timeoutHandle && clearTimeout(this.timeoutHandle) }, e.prototype.createInvocation = function (e, t, n, r) { if (n) return 0 !== r.length ? { arguments: t, streamIds: r, target: e, type: y.Invocation } : { arguments: t, target: e, type: y.Invocation }; var i = this.invocationId; return this.invocationId++, 0 !== r.length ? { arguments: t, invocationId: i.toString(), streamIds: r, target: e, type: y.Invocation } : { arguments: t, invocationId: i.toString(), target: e, type: y.Invocation } }, e.prototype.launchStreams = function (e, t) { var n = this; if (0 !== e.length) { t || (t = Promise.resolve()); var r = function (r) { e[r].subscribe({ complete: function () { t = t.then((function () { return n.sendWithProtocol(n.createCompletionMessage(r)) })) }, error: function (e) { var i; i = e instanceof Error ? e.message : e && e.toString ? e.toString() : "Unknown error", t = t.then((function () { return n.sendWithProtocol(n.createCompletionMessage(r, i)) })) }, next: function (e) { t = t.then((function () { return n.sendWithProtocol(n.createStreamItemMessage(r, e)) })) } }) }; for (var i in e) r(i) } }, e.prototype.replaceStreamingParams = function (e) { for (var t = [], n = [], r = 0; r < e.length; r++) { var i = e[r]; if (this.isObservable(i)) { var o = this.invocationId; this.invocationId++, t[o] = i, n.push(o.toString()), e.splice(r, 1) } } return [t, n] }, e.prototype.isObservable = function (e) { return e && e.subscribe && "function" === typeof e.subscribe }, e.prototype.createStreamInvocation = function (e, t, n) { var r = this.invocationId; return this.invocationId++, 0 !== n.length ? { arguments: t, invocationId: r.toString(), streamIds: n, target: e, type: y.StreamInvocation } : { arguments: t, invocationId: r.toString(), target: e, type: y.StreamInvocation } }, e.prototype.createCancelInvocation = function (e) { return { invocationId: e, type: y.CancelInvocation } }, e.prototype.createStreamItemMessage = function (e, t) { return { invocationId: e, item: t, type: y.StreamItem } }, e.prototype.createCompletionMessage = function (e, t, n) { return t ? { error: t, invocationId: e, type: y.Completion } : { invocationId: e, result: n, type: y.Completion } }, e }(), E = [0, 2e3, 1e4, 3e4, null], P = function () { function e(e) { this.retryDelays = void 0 !== e ? e.concat([null]) : E } return e.prototype.nextRetryDelayInMilliseconds = function (e) { return this.retryDelays[e.previousRetryCount] }, e }(); (function (e) { e[e["None"] = 0] = "None", e[e["WebSockets"] = 1] = "WebSockets", e[e["ServerSentEvents"] = 2] = "ServerSentEvents", e[e["LongPolling"] = 4] = "LongPolling" })(L || (L = {})), function (e) { e[e["Text"] = 1] = "Text", e[e["Binary"] = 2] = "Binary" }(j || (j = {})); var D = function () { function e() { this.isAborted = !1, this.onabort = null } return e.prototype.abort = function () { this.isAborted || (this.isAborted = !0, this.onabort && this.onabort()) }, Object.defineProperty(e.prototype, "signal", { get: function () { return this }, enumerable: !0, configurable: !0 }), Object.defineProperty(e.prototype, "aborted", { get: function () { return this.isAborted }, enumerable: !0, configurable: !0 }), e }(), H = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, V = function (e, t, n, r) { return new (n || (n = Promise))((function (i, o) { function a(e) { try { c(r.next(e)) } catch (t) { o(t) } } function s(e) { try { c(r["throw"](e)) } catch (t) { o(t) } } function c(e) { e.done ? i(e.value) : new n((function (t) { t(e.value) })).then(a, s) } c((r = r.apply(e, t || [])).next()) })) }, I = function (e, t) { var n, r, i, o, a = { label: 0, sent: function () { if (1 & i[0]) throw i[1]; return i[1] }, trys: [], ops: [] }; return o = { next: s(0), throw: s(1), return: s(2) }, "function" === typeof Symbol && (o[Symbol.iterator] = function () { return this }), o; function s(e) { return function (t) { return c([e, t]) } } function c(o) { if (n) throw new TypeError("Generator is already executing."); while (a) try { if (n = 1, r && (i = 2 & o[0] ? r["return"] : o[0] ? r["throw"] || ((i = r["return"]) && i.call(r), 0) : r.next) && !(i = i.call(r, o[1])).done) return i; switch (r = 0, i && (o = [2 & o[0], i.value]), o[0]) { case 0: case 1: i = o; break; case 4: return a.label++, { value: o[1], done: !1 }; case 5: a.label++, r = o[1], o = [0]; continue; case 7: o = a.ops.pop(), a.trys.pop(); continue; default: if (i = a.trys, !(i = i.length > 0 && i[i.length - 1]) && (6 === o[0] || 2 === o[0])) { a = 0; continue } if (3 === o[0] && (!i || o[1] > i[0] && o[1] < i[3])) { a.label = o[1]; break } if (6 === o[0] && a.label < i[1]) { a.label = i[1], i = o; break } if (i && a.label < i[2]) { a.label = i[2], a.ops.push(o); break } i[2] && a.ops.pop(), a.trys.pop(); continue }o = t.call(e, a) } catch (s) { o = [6, s], r = 0 } finally { n = i = 0 } if (5 & o[0]) throw o[1]; return { value: o[0] ? o[1] : void 0, done: !0 } } }, N = function () { function e(e, t, n, r, i, o) { this.httpClient = e, this.accessTokenFactory = t, this.logger = n, this.pollAbort = new D, this.logMessageContent = r, this.withCredentials = i, this.headers = o, this.running = !1, this.onreceive = null, this.onclose = null } return Object.defineProperty(e.prototype, "pollAborted", { get: function () { return this.pollAbort.aborted }, enumerable: !0, configurable: !0 }), e.prototype.connect = function (e, t) { return V(this, void 0, void 0, (function () { var n, r, o, a, s, c, l, f, d; return I(this, (function (p) { switch (p.label) { case 0: if (h["a"].isRequired(e, "url"), h["a"].isRequired(t, "transferFormat"), h["a"].isIn(t, j, "transferFormat"), this.url = e, this.logger.log(u["a"].Trace, "(LongPolling transport) Connecting."), t === j.Binary && "undefined" !== typeof XMLHttpRequest && "string" !== typeof (new XMLHttpRequest).responseType) throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported."); return r = Object(h["h"])(), o = r[0], a = r[1], s = H((n = {}, n[o] = a, n), this.headers), c = { abortSignal: this.pollAbort.signal, headers: s, timeout: 1e5, withCredentials: this.withCredentials }, t === j.Binary && (c.responseType = "arraybuffer"), [4, this.getAccessToken()]; case 1: return l = p.sent(), this.updateHeaderToken(c, l), f = e + "&_=" + Date.now(), this.logger.log(u["a"].Trace, "(LongPolling transport) polling: " + f + "."), [4, this.httpClient.get(f, c)]; case 2: return d = p.sent(), 200 !== d.statusCode ? (this.logger.log(u["a"].Error, "(LongPolling transport) Unexpected response code: " + d.statusCode + "."), this.closeError = new i(d.statusText || "", d.statusCode), this.running = !1) : this.running = !0, this.receiving = this.poll(this.url, c), [2] } })) })) }, e.prototype.getAccessToken = function () { return V(this, void 0, void 0, (function () { return I(this, (function (e) { switch (e.label) { case 0: return this.accessTokenFactory ? [4, this.accessTokenFactory()] : [3, 2]; case 1: return [2, e.sent()]; case 2: return [2, null] } })) })) }, e.prototype.updateHeaderToken = function (e, t) { e.headers || (e.headers = {}), t ? e.headers["Authorization"] = "Bearer " + t : e.headers["Authorization"] && delete e.headers["Authorization"] }, e.prototype.poll = function (e, t) { return V(this, void 0, void 0, (function () { var n, r, a, s; return I(this, (function (c) { switch (c.label) { case 0: c.trys.push([0, , 8, 9]), c.label = 1; case 1: return this.running ? [4, this.getAccessToken()] : [3, 7]; case 2: n = c.sent(), this.updateHeaderToken(t, n), c.label = 3; case 3: return c.trys.push([3, 5, , 6]), r = e + "&_=" + Date.now(), this.logger.log(u["a"].Trace, "(LongPolling transport) polling: " + r + "."), [4, this.httpClient.get(r, t)]; case 4: return a = c.sent(), 204 === a.statusCode ? (this.logger.log(u["a"].Information, "(LongPolling transport) Poll terminated by server."), this.running = !1) : 200 !== a.statusCode ? (this.logger.log(u["a"].Error, "(LongPolling transport) Unexpected response code: " + a.statusCode + "."), this.closeError = new i(a.statusText || "", a.statusCode), this.running = !1) : a.content ? (this.logger.log(u["a"].Trace, "(LongPolling transport) data received. " + Object(h["g"])(a.content, this.logMessageContent) + "."), this.onreceive && this.onreceive(a.content)) : this.logger.log(u["a"].Trace, "(LongPolling transport) Poll timed out, reissuing."), [3, 6]; case 5: return s = c.sent(), this.running ? s instanceof o ? this.logger.log(u["a"].Trace, "(LongPolling transport) Poll timed out, reissuing.") : (this.closeError = s, this.running = !1) : this.logger.log(u["a"].Trace, "(LongPolling transport) Poll errored after shutdown: " + s.message), [3, 6]; case 6: return [3, 1]; case 7: return [3, 9]; case 8: return this.logger.log(u["a"].Trace, "(LongPolling transport) Polling complete."), this.pollAborted || this.raiseOnClose(), [7]; case 9: return [2] } })) })) }, e.prototype.send = function (e) { return V(this, void 0, void 0, (function () { return I(this, (function (t) { return this.running ? [2, Object(h["j"])(this.logger, "LongPolling", this.httpClient, this.url, this.accessTokenFactory, e, this.logMessageContent, this.withCredentials, this.headers)] : [2, Promise.reject(new Error("Cannot send until the transport is connected"))] })) })) }, e.prototype.stop = function () { return V(this, void 0, void 0, (function () { var e, t, n, r, i, o; return I(this, (function (a) { switch (a.label) { case 0: this.logger.log(u["a"].Trace, "(LongPolling transport) Stopping polling."), this.running = !1, this.pollAbort.abort(), a.label = 1; case 1: return a.trys.push([1, , 5, 6]), [4, this.receiving]; case 2: return a.sent(), this.logger.log(u["a"].Trace, "(LongPolling transport) sending DELETE request to " + this.url + "."), e = {}, t = Object(h["h"])(), n = t[0], r = t[1], e[n] = r, i = { headers: H({}, e, this.headers), withCredentials: this.withCredentials }, [4, this.getAccessToken()]; case 3: return o = a.sent(), this.updateHeaderToken(i, o), [4, this.httpClient.delete(this.url, i)]; case 4: return a.sent(), this.logger.log(u["a"].Trace, "(LongPolling transport) DELETE request sent."), [3, 6]; case 5: return this.logger.log(u["a"].Trace, "(LongPolling transport) Stop finished."), this.raiseOnClose(), [7]; case 6: return [2] } })) })) }, e.prototype.raiseOnClose = function () { if (this.onclose) { var e = "(LongPolling transport) Firing onclose event."; this.closeError && (e += " Error: " + this.closeError), this.logger.log(u["a"].Trace, e), this.onclose(this.closeError) } }, e }(), R = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, F = function (e, t, n, r) { return new (n || (n = Promise))((function (i, o) { function a(e) { try { c(r.next(e)) } catch (t) { o(t) } } function s(e) { try { c(r["throw"](e)) } catch (t) { o(t) } } function c(e) { e.done ? i(e.value) : new n((function (t) { t(e.value) })).then(a, s) } c((r = r.apply(e, t || [])).next()) })) }, Y = function (e, t) { var n, r, i, o, a = { label: 0, sent: function () { if (1 & i[0]) throw i[1]; return i[1] }, trys: [], ops: [] }; return o = { next: s(0), throw: s(1), return: s(2) }, "function" === typeof Symbol && (o[Symbol.iterator] = function () { return this }), o; function s(e) { return function (t) { return c([e, t]) } } function c(o) { if (n) throw new TypeError("Generator is already executing."); while (a) try { if (n = 1, r && (i = 2 & o[0] ? r["return"] : o[0] ? r["throw"] || ((i = r["return"]) && i.call(r), 0) : r.next) && !(i = i.call(r, o[1])).done) return i; switch (r = 0, i && (o = [2 & o[0], i.value]), o[0]) { case 0: case 1: i = o; break; case 4: return a.label++, { value: o[1], done: !1 }; case 5: a.label++, r = o[1], o = [0]; continue; case 7: o = a.ops.pop(), a.trys.pop(); continue; default: if (i = a.trys, !(i = i.length > 0 && i[i.length - 1]) && (6 === o[0] || 2 === o[0])) { a = 0; continue } if (3 === o[0] && (!i || o[1] > i[0] && o[1] < i[3])) { a.label = o[1]; break } if (6 === o[0] && a.label < i[1]) { a.label = i[1], i = o; break } if (i && a.label < i[2]) { a.label = i[2], a.ops.push(o); break } i[2] && a.ops.pop(), a.trys.pop(); continue }o = t.call(e, a) } catch (s) { o = [6, s], r = 0 } finally { n = i = 0 } if (5 & o[0]) throw o[1]; return { value: o[0] ? o[1] : void 0, done: !0 } } }, $ = function () { function e(e, t, n, r, i, o, a) { this.httpClient = e, this.accessTokenFactory = t, this.logger = n, this.logMessageContent = r, this.withCredentials = o, this.eventSourceConstructor = i, this.headers = a, this.onreceive = null, this.onclose = null } return e.prototype.connect = function (e, t) { return F(this, void 0, void 0, (function () { var n, r = this; return Y(this, (function (i) { switch (i.label) { case 0: return h["a"].isRequired(e, "url"), h["a"].isRequired(t, "transferFormat"), h["a"].isIn(t, j, "transferFormat"), this.logger.log(u["a"].Trace, "(SSE transport) Connecting."), this.url = e, this.accessTokenFactory ? [4, this.accessTokenFactory()] : [3, 2]; case 1: n = i.sent(), n && (e += (e.indexOf("?") < 0 ? "?" : "&") + "access_token=" + encodeURIComponent(n)), i.label = 2; case 2: return [2, new Promise((function (n, i) { var o = !1; if (t === j.Text) { var a; if (h["c"].isBrowser || h["c"].isWebWorker) a = new r.eventSourceConstructor(e, { withCredentials: r.withCredentials }); else { var s = r.httpClient.getCookieString(e), c = {}; c.Cookie = s; var l = Object(h["h"])(), f = l[0], d = l[1]; c[f] = d, a = new r.eventSourceConstructor(e, { withCredentials: r.withCredentials, headers: R({}, c, r.headers) }) } try { a.onmessage = function (e) { if (r.onreceive) try { r.logger.log(u["a"].Trace, "(SSE transport) data received. " + Object(h["g"])(e.data, r.logMessageContent) + "."), r.onreceive(e.data) } catch (t) { return void r.close(t) } }, a.onerror = function (e) { var t = new Error(e.data || "Error occurred"); o ? r.close(t) : i(t) }, a.onopen = function () { r.logger.log(u["a"].Information, "SSE connected to " + r.url), r.eventSource = a, o = !0, n() } } catch (p) { return void i(p) } } else i(new Error("The Server-Sent Events transport only supports the 'Text' transfer format")) }))] } })) })) }, e.prototype.send = function (e) { return F(this, void 0, void 0, (function () { return Y(this, (function (t) { return this.eventSource ? [2, Object(h["j"])(this.logger, "SSE", this.httpClient, this.url, this.accessTokenFactory, e, this.logMessageContent, this.withCredentials, this.headers)] : [2, Promise.reject(new Error("Cannot send until the transport is connected"))] })) })) }, e.prototype.stop = function () { return this.close(), Promise.resolve() }, e.prototype.close = function (e) { this.eventSource && (this.eventSource.close(), this.eventSource = void 0, this.onclose && this.onclose(e)) }, e }(), B = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, W = function (e, t, n, r) { return new (n || (n = Promise))((function (i, o) { function a(e) { try { c(r.next(e)) } catch (t) { o(t) } } function s(e) { try { c(r["throw"](e)) } catch (t) { o(t) } } function c(e) { e.done ? i(e.value) : new n((function (t) { t(e.value) })).then(a, s) } c((r = r.apply(e, t || [])).next()) })) }, q = function (e, t) { var n, r, i, o, a = { label: 0, sent: function () { if (1 & i[0]) throw i[1]; return i[1] }, trys: [], ops: [] }; return o = { next: s(0), throw: s(1), return: s(2) }, "function" === typeof Symbol && (o[Symbol.iterator] = function () { return this }), o; function s(e) { return function (t) { return c([e, t]) } } function c(o) { if (n) throw new TypeError("Generator is already executing."); while (a) try { if (n = 1, r && (i = 2 & o[0] ? r["return"] : o[0] ? r["throw"] || ((i = r["return"]) && i.call(r), 0) : r.next) && !(i = i.call(r, o[1])).done) return i; switch (r = 0, i && (o = [2 & o[0], i.value]), o[0]) { case 0: case 1: i = o; break; case 4: return a.label++, { value: o[1], done: !1 }; case 5: a.label++, r = o[1], o = [0]; continue; case 7: o = a.ops.pop(), a.trys.pop(); continue; default: if (i = a.trys, !(i = i.length > 0 && i[i.length - 1]) && (6 === o[0] || 2 === o[0])) { a = 0; continue } if (3 === o[0] && (!i || o[1] > i[0] && o[1] < i[3])) { a.label = o[1]; break } if (6 === o[0] && a.label < i[1]) { a.label = i[1], i = o; break } if (i && a.label < i[2]) { a.label = i[2], a.ops.push(o); break } i[2] && a.ops.pop(), a.trys.pop(); continue }o = t.call(e, a) } catch (s) { o = [6, s], r = 0 } finally { n = i = 0 } if (5 & o[0]) throw o[1]; return { value: o[0] ? o[1] : void 0, done: !0 } } }, U = function () { function e(e, t, n, r, i, o) { this.logger = n, this.accessTokenFactory = t, this.logMessageContent = r, this.webSocketConstructor = i, this.httpClient = e, this.onreceive = null, this.onclose = null, this.headers = o } return e.prototype.connect = function (e, t) { return W(this, void 0, void 0, (function () { var n, r = this; return q(this, (function (i) { switch (i.label) { case 0: return h["a"].isRequired(e, "url"), h["a"].isRequired(t, "transferFormat"), h["a"].isIn(t, j, "transferFormat"), this.logger.log(u["a"].Trace, "(WebSockets transport) Connecting."), this.accessTokenFactory ? [4, this.accessTokenFactory()] : [3, 2]; case 1: n = i.sent(), n && (e += (e.indexOf("?") < 0 ? "?" : "&") + "access_token=" + encodeURIComponent(n)), i.label = 2; case 2: return [2, new Promise((function (n, i) { var o; e = e.replace(/^http/, "ws"); var a = r.httpClient.getCookieString(e), s = !1; if (h["c"].isNode) { var c = {}, l = Object(h["h"])(), f = l[0], d = l[1]; c[f] = d, a && (c["Cookie"] = "" + a), o = new r.webSocketConstructor(e, void 0, { headers: B({}, c, r.headers) }) } o || (o = new r.webSocketConstructor(e)), t === j.Binary && (o.binaryType = "arraybuffer"), o.onopen = function (t) { r.logger.log(u["a"].Information, "WebSocket connected to " + e + "."), r.webSocket = o, s = !0, n() }, o.onerror = function (e) { var t = null; t = "undefined" !== typeof ErrorEvent && e instanceof ErrorEvent ? e.error : new Error("There was an error with the transport."), i(t) }, o.onmessage = function (e) { if (r.logger.log(u["a"].Trace, "(WebSockets transport) data received. " + Object(h["g"])(e.data, r.logMessageContent) + "."), r.onreceive) try { r.onreceive(e.data) } catch (t) { return void r.close(t) } }, o.onclose = function (e) { if (s) r.close(e); else { var t = null; t = "undefined" !== typeof ErrorEvent && e instanceof ErrorEvent ? e.error : new Error("There was an error with the transport."), i(t) } } }))] } })) })) }, e.prototype.send = function (e) { return this.webSocket && this.webSocket.readyState === this.webSocketConstructor.OPEN ? (this.logger.log(u["a"].Trace, "(WebSockets transport) sending data. " + Object(h["g"])(e, this.logMessageContent) + "."), this.webSocket.send(e), Promise.resolve()) : Promise.reject("WebSocket is not in the OPEN state") }, e.prototype.stop = function () { return this.webSocket && this.close(void 0), Promise.resolve() }, e.prototype.close = function (e) { this.webSocket && (this.webSocket.onclose = function () { }, this.webSocket.onmessage = function () { }, this.webSocket.onerror = function () { }, this.webSocket.close(), this.webSocket = void 0), this.logger.log(u["a"].Trace, "(WebSockets transport) socket closed."), this.onclose && (!this.isCloseEvent(e) || !1 !== e.wasClean && 1e3 === e.code ? e instanceof Error ? this.onclose(e) : this.onclose() : this.onclose(new Error("WebSocket closed with status code: " + e.code + " (" + e.reason + ")."))) }, e.prototype.isCloseEvent = function (e) { return e && "boolean" === typeof e.wasClean && "number" === typeof e.code }, e }(), K = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, G = function (e, t, n, r) { return new (n || (n = Promise))((function (i, o) { function a(e) { try { c(r.next(e)) } catch (t) { o(t) } } function s(e) { try { c(r["throw"](e)) } catch (t) { o(t) } } function c(e) { e.done ? i(e.value) : new n((function (t) { t(e.value) })).then(a, s) } c((r = r.apply(e, t || [])).next()) })) }, X = function (e, t) { var n, r, i, o, a = { label: 0, sent: function () { if (1 & i[0]) throw i[1]; return i[1] }, trys: [], ops: [] }; return o = { next: s(0), throw: s(1), return: s(2) }, "function" === typeof Symbol && (o[Symbol.iterator] = function () { return this }), o; function s(e) { return function (t) { return c([e, t]) } } function c(o) { if (n) throw new TypeError("Generator is already executing."); while (a) try { if (n = 1, r && (i = 2 & o[0] ? r["return"] : o[0] ? r["throw"] || ((i = r["return"]) && i.call(r), 0) : r.next) && !(i = i.call(r, o[1])).done) return i; switch (r = 0, i && (o = [2 & o[0], i.value]), o[0]) { case 0: case 1: i = o; break; case 4: return a.label++, { value: o[1], done: !1 }; case 5: a.label++, r = o[1], o = [0]; continue; case 7: o = a.ops.pop(), a.trys.pop(); continue; default: if (i = a.trys, !(i = i.length > 0 && i[i.length - 1]) && (6 === o[0] || 2 === o[0])) { a = 0; continue } if (3 === o[0] && (!i || o[1] > i[0] && o[1] < i[3])) { a.label = o[1]; break } if (6 === o[0] && a.label < i[1]) { a.label = i[1], i = o; break } if (i && a.label < i[2]) { a.label = i[2], a.ops.push(o); break } i[2] && a.ops.pop(), a.trys.pop(); continue }o = t.call(e, a) } catch (s) { o = [6, s], r = 0 } finally { n = i = 0 } if (5 & o[0]) throw o[1]; return { value: o[0] ? o[1] : void 0, done: !0 } } }, J = 100, Q = function () { function e(e, t) { if (void 0 === t && (t = {}), this.stopPromiseResolver = function () { }, this.features = {}, this.negotiateVersion = 1, h["a"].isRequired(e, "url"), this.logger = Object(h["f"])(t.logger), this.baseUrl = this.resolveUrl(e), t = t || {}, t.logMessageContent = void 0 !== t.logMessageContent && t.logMessageContent, "boolean" !== typeof t.withCredentials && void 0 !== t.withCredentials) throw new Error("withCredentials option was not a 'boolean' or 'undefined' value"); t.withCredentials = void 0 === t.withCredentials || t.withCredentials; var n = null, r = null; if (h["c"].isNode) { var i = require; n = i("ws"), r = i("eventsource") } h["c"].isNode || "undefined" === typeof WebSocket || t.WebSocket ? h["c"].isNode && !t.WebSocket && n && (t.WebSocket = n) : t.WebSocket = WebSocket, h["c"].isNode || "undefined" === typeof EventSource || t.EventSource ? h["c"].isNode && !t.EventSource && "undefined" !== typeof r && (t.EventSource = r) : t.EventSource = EventSource, this.httpClient = t.httpClient || new _(this.logger), this.connectionState = "Disconnected", this.connectionStarted = !1, this.options = t, this.onreceive = null, this.onclose = null } return e.prototype.start = function (e) { return G(this, void 0, void 0, (function () { var t; return X(this, (function (n) { switch (n.label) { case 0: return e = e || j.Binary, h["a"].isIn(e, j, "transferFormat"), this.logger.log(u["a"].Debug, "Starting connection with transfer format '" + j[e] + "'."), "Disconnected" !== this.connectionState ? [2, Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."))] : (this.connectionState = "Connecting", this.startInternalPromise = this.startInternal(e), [4, this.startInternalPromise]); case 1: return n.sent(), "Disconnecting" !== this.connectionState ? [3, 3] : (t = "Failed to start the HttpConnection before stop() was called.", this.logger.log(u["a"].Error, t), [4, this.stopPromise]); case 2: return n.sent(), [2, Promise.reject(new Error(t))]; case 3: if ("Connected" !== this.connectionState) return t = "HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!", this.logger.log(u["a"].Error, t), [2, Promise.reject(new Error(t))]; n.label = 4; case 4: return this.connectionStarted = !0, [2] } })) })) }, e.prototype.send = function (e) { return "Connected" !== this.connectionState ? Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")) : (this.sendQueue || (this.sendQueue = new ee(this.transport)), this.sendQueue.send(e)) }, e.prototype.stop = function (e) { return G(this, void 0, void 0, (function () { var t = this; return X(this, (function (n) { switch (n.label) { case 0: return "Disconnected" === this.connectionState ? (this.logger.log(u["a"].Debug, "Call to HttpConnection.stop(" + e + ") ignored because the connection is already in the disconnected state."), [2, Promise.resolve()]) : "Disconnecting" === this.connectionState ? (this.logger.log(u["a"].Debug, "Call to HttpConnection.stop(" + e + ") ignored because the connection is already in the disconnecting state."), [2, this.stopPromise]) : (this.connectionState = "Disconnecting", this.stopPromise = new Promise((function (e) { t.stopPromiseResolver = e })), [4, this.stopInternal(e)]); case 1: return n.sent(), [4, this.stopPromise]; case 2: return n.sent(), [2] } })) })) }, e.prototype.stopInternal = function (e) { return G(this, void 0, void 0, (function () { var t; return X(this, (function (n) { switch (n.label) { case 0: this.stopError = e, n.label = 1; case 1: return n.trys.push([1, 3, , 4]), [4, this.startInternalPromise]; case 2: return n.sent(), [3, 4]; case 3: return n.sent(), [3, 4]; case 4: if (!this.transport) return [3, 9]; n.label = 5; case 5: return n.trys.push([5, 7, , 8]), [4, this.transport.stop()]; case 6: return n.sent(), [3, 8]; case 7: return t = n.sent(), this.logger.log(u["a"].Error, "HttpConnection.transport.stop() threw error '" + t + "'."), this.stopConnection(), [3, 8]; case 8: return this.transport = void 0, [3, 10]; case 9: this.logger.log(u["a"].Debug, "HttpConnection.transport is undefined in HttpConnection.stop() because start() failed."), n.label = 10; case 10: return [2] } })) })) }, e.prototype.startInternal = function (e) { return G(this, void 0, void 0, (function () { var t, n, r, i, o, a; return X(this, (function (s) { switch (s.label) { case 0: t = this.baseUrl, this.accessTokenFactory = this.options.accessTokenFactory, s.label = 1; case 1: return s.trys.push([1, 12, , 13]), this.options.skipNegotiation ? this.options.transport !== L.WebSockets ? [3, 3] : (this.transport = this.constructTransport(L.WebSockets), [4, this.startTransport(t, e)]) : [3, 5]; case 2: return s.sent(), [3, 4]; case 3: throw new Error("Negotiation can only be skipped when using the WebSocket transport directly."); case 4: return [3, 11]; case 5: n = null, r = 0, i = function () { var e; return X(this, (function (i) { switch (i.label) { case 0: return [4, o.getNegotiationResponse(t)]; case 1: if (n = i.sent(), "Disconnecting" === o.connectionState || "Disconnected" === o.connectionState) throw new Error("The connection was stopped during negotiation."); if (n.error) throw new Error(n.error); if (n.ProtocolVersion) throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details."); return n.url && (t = n.url), n.accessToken && (e = n.accessToken, o.accessTokenFactory = function () { return e }), r++, [2] } })) }, o = this, s.label = 6; case 6: return [5, i()]; case 7: s.sent(), s.label = 8; case 8: if (n.url && r < J) return [3, 6]; s.label = 9; case 9: if (r === J && n.url) throw new Error("Negotiate redirection limit exceeded."); return [4, this.createTransport(t, this.options.transport, n, e)]; case 10: s.sent(), s.label = 11; case 11: return this.transport instanceof N && (this.features.inherentKeepAlive = !0), "Connecting" === this.connectionState && (this.logger.log(u["a"].Debug, "The HttpConnection connected successfully."), this.connectionState = "Connected"), [3, 13]; case 12: return a = s.sent(), this.logger.log(u["a"].Error, "Failed to start the connection: " + a), this.connectionState = "Disconnected", this.transport = void 0, this.stopPromiseResolver(), [2, Promise.reject(a)]; case 13: return [2] } })) })) }, e.prototype.getNegotiationResponse = function (e) { return G(this, void 0, void 0, (function () { var t, n, r, i, o, a, s, c, l; return X(this, (function (f) { switch (f.label) { case 0: return t = {}, this.accessTokenFactory ? [4, this.accessTokenFactory()] : [3, 2]; case 1: n = f.sent(), n && (t["Authorization"] = "Bearer " + n), f.label = 2; case 2: r = Object(h["h"])(), i = r[0], o = r[1], t[i] = o, a = this.resolveNegotiateUrl(e), this.logger.log(u["a"].Debug, "Sending negotiation request: " + a + "."), f.label = 3; case 3: return f.trys.push([3, 5, , 6]), [4, this.httpClient.post(a, { content: "", headers: K({}, t, this.options.headers), withCredentials: this.options.withCredentials })]; case 4: return s = f.sent(), 200 !== s.statusCode ? [2, Promise.reject(new Error("Unexpected status code returned from negotiate '" + s.statusCode + "'"))] : (c = JSON.parse(s.content), (!c.negotiateVersion || c.negotiateVersion < 1) && (c.connectionToken = c.connectionId), [2, c]); case 5: return l = f.sent(), this.logger.log(u["a"].Error, "Failed to complete negotiation with the server: " + l), [2, Promise.reject(l)]; case 6: return [2] } })) })) }, e.prototype.createConnectUrl = function (e, t) { return t ? e + (-1 === e.indexOf("?") ? "?" : "&") + "id=" + t : e }, e.prototype.createTransport = function (e, t, n, r) { return G(this, void 0, void 0, (function () { var i, o, a, s, c, l, h, f, d, p, v; return X(this, (function (m) { switch (m.label) { case 0: return i = this.createConnectUrl(e, n.connectionToken), this.isITransport(t) ? (this.logger.log(u["a"].Debug, "Connection was provided an instance of ITransport, using that directly."), this.transport = t, [4, this.startTransport(i, r)]) : [3, 2]; case 1: return m.sent(), this.connectionId = n.connectionId, [2]; case 2: o = [], a = n.availableTransports || [], s = n, c = 0, l = a, m.label = 3; case 3: return c < l.length ? (h = l[c], f = this.resolveTransportOrError(h, t, r), f instanceof Error ? (o.push(h.transport + " failed: " + f), [3, 12]) : [3, 4]) : [3, 13]; case 4: if (!this.isITransport(f)) return [3, 12]; if (this.transport = f, s) return [3, 9]; m.label = 5; case 5: return m.trys.push([5, 7, , 8]), [4, this.getNegotiationResponse(e)]; case 6: return s = m.sent(), [3, 8]; case 7: return d = m.sent(), [2, Promise.reject(d)]; case 8: i = this.createConnectUrl(e, s.connectionToken), m.label = 9; case 9: return m.trys.push([9, 11, , 12]), [4, this.startTransport(i, r)]; case 10: return m.sent(), this.connectionId = s.connectionId, [2]; case 11: return p = m.sent(), this.logger.log(u["a"].Error, "Failed to start the transport '" + h.transport + "': " + p), s = void 0, o.push(h.transport + " failed: " + p), "Connecting" !== this.connectionState ? (v = "Failed to select transport before stop() was called.", this.logger.log(u["a"].Debug, v), [2, Promise.reject(new Error(v))]) : [3, 12]; case 12: return c++, [3, 3]; case 13: return o.length > 0 ? [2, Promise.reject(new Error("Unable to connect to the server with any of the available transports. " + o.join(" ")))] : [2, Promise.reject(new Error("None of the transports supported by the client are supported by the server."))] } })) })) }, e.prototype.constructTransport = function (e) { switch (e) { case L.WebSockets: if (!this.options.WebSocket) throw new Error("'WebSocket' is not supported in your environment."); return new U(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || !1, this.options.WebSocket, this.options.headers || {}); case L.ServerSentEvents: if (!this.options.EventSource) throw new Error("'EventSource' is not supported in your environment."); return new $(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || !1, this.options.EventSource, this.options.withCredentials, this.options.headers || {}); case L.LongPolling: return new N(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || !1, this.options.withCredentials, this.options.headers || {}); default: throw new Error("Unknown transport: " + e + ".") } }, e.prototype.startTransport = function (e, t) { var n = this; return this.transport.onreceive = this.onreceive, this.transport.onclose = function (e) { return n.stopConnection(e) }, this.transport.connect(e, t) }, e.prototype.resolveTransportOrError = function (e, t, n) { var r = L[e.transport]; if (null === r || void 0 === r) return this.logger.log(u["a"].Debug, "Skipping transport '" + e.transport + "' because it is not supported by this client."), new Error("Skipping transport '" + e.transport + "' because it is not supported by this client."); if (!Z(t, r)) return this.logger.log(u["a"].Debug, "Skipping transport '" + L[r] + "' because it was disabled by the client."), new Error("'" + L[r] + "' is disabled by the client."); var i = e.transferFormats.map((function (e) { return j[e] })); if (!(i.indexOf(n) >= 0)) return this.logger.log(u["a"].Debug, "Skipping transport '" + L[r] + "' because it does not support the requested transfer format '" + j[n] + "'."), new Error("'" + L[r] + "' does not support " + j[n] + "."); if (r === L.WebSockets && !this.options.WebSocket || r === L.ServerSentEvents && !this.options.EventSource) return this.logger.log(u["a"].Debug, "Skipping transport '" + L[r] + "' because it is not supported in your environment.'"), new Error("'" + L[r] + "' is not supported in your environment."); this.logger.log(u["a"].Debug, "Selecting transport '" + L[r] + "'."); try { return this.constructTransport(r) } catch (o) { return o } }, e.prototype.isITransport = function (e) { return e && "object" === typeof e && "connect" in e }, e.prototype.stopConnection = function (e) { var t = this; if (this.logger.log(u["a"].Debug, "HttpConnection.stopConnection(" + e + ") called while in state " + this.connectionState + "."), this.transport = void 0, e = this.stopError || e, this.stopError = void 0, "Disconnected" !== this.connectionState) { if ("Connecting" === this.connectionState) throw this.logger.log(u["a"].Warning, "Call to HttpConnection.stopConnection(" + e + ") was ignored because the connection is still in the connecting state."), new Error("HttpConnection.stopConnection(" + e + ") was called while the connection is still in the connecting state."); if ("Disconnecting" === this.connectionState && this.stopPromiseResolver(), e ? this.logger.log(u["a"].Error, "Connection disconnected with error '" + e + "'.") : this.logger.log(u["a"].Information, "Connection disconnected."), this.sendQueue && (this.sendQueue.stop().catch((function (e) { t.logger.log(u["a"].Error, "TransportSendQueue.stop() threw error '" + e + "'.") })), this.sendQueue = void 0), this.connectionId = void 0, this.connectionState = "Disconnected", this.connectionStarted) { this.connectionStarted = !1; try { this.onclose && this.onclose(e) } catch (n) { this.logger.log(u["a"].Error, "HttpConnection.onclose(" + e + ") threw error '" + n + "'.") } } } else this.logger.log(u["a"].Debug, "Call to HttpConnection.stopConnection(" + e + ") was ignored because the connection is already in the disconnected state.") }, e.prototype.resolveUrl = function (e) { if (0 === e.lastIndexOf("https://", 0) || 0 === e.lastIndexOf("http://", 0)) return e; if (!h["c"].isBrowser || !window.document) throw new Error("Cannot resolve '" + e + "'."); var t = window.document.createElement("a"); return t.href = e, this.logger.log(u["a"].Information, "Normalizing '" + e + "' to '" + t.href + "'."), t.href }, e.prototype.resolveNegotiateUrl = function (e) { var t = e.indexOf("?"), n = e.substring(0, -1 === t ? e.length : t); return "/" !== n[n.length - 1] && (n += "/"), n += "negotiate", n += -1 === t ? "" : e.substring(t), -1 === n.indexOf("negotiateVersion") && (n += -1 === t ? "?" : "&", n += "negotiateVersion=" + this.negotiateVersion), n }, e }(); function Z(e, t) { return !e || 0 !== (t & e) } var ee = function () { function e(e) { this.transport = e, this.buffer = [], this.executing = !0, this.sendBufferedData = new te, this.transportResult = new te, this.sendLoopPromise = this.sendLoop() } return e.prototype.send = function (e) { return this.bufferData(e), this.transportResult || (this.transportResult = new te), this.transportResult.promise }, e.prototype.stop = function () { return this.executing = !1, this.sendBufferedData.resolve(), this.sendLoopPromise }, e.prototype.bufferData = function (e) { if (this.buffer.length && typeof this.buffer[0] !== typeof e) throw new Error("Expected data to be of type " + typeof this.buffer + " but was of type " + typeof e); this.buffer.push(e), this.sendBufferedData.resolve() }, e.prototype.sendLoop = function () { return G(this, void 0, void 0, (function () { var t, n, r; return X(this, (function (i) { switch (i.label) { case 0: return [4, this.sendBufferedData.promise]; case 1: if (i.sent(), !this.executing) return this.transportResult && this.transportResult.reject("Connection stopped."), [3, 6]; this.sendBufferedData = new te, t = this.transportResult, this.transportResult = void 0, n = "string" === typeof this.buffer[0] ? this.buffer.join("") : e.concatBuffers(this.buffer), this.buffer.length = 0, i.label = 2; case 2: return i.trys.push([2, 4, , 5]), [4, this.transport.send(n)]; case 3: return i.sent(), t.resolve(), [3, 5]; case 4: return r = i.sent(), t.reject(r), [3, 5]; case 5: return [3, 0]; case 6: return [2] } })) })) }, e.concatBuffers = function (e) { for (var t = e.map((function (e) { return e.byteLength })).reduce((function (e, t) { return e + t })), n = new Uint8Array(t), r = 0, i = 0, o = e; i < o.length; i++) { var a = o[i]; n.set(new Uint8Array(a), r), r += a.byteLength } return n.buffer }, e }(), te = function () { function e() { var e = this; this.promise = new Promise((function (t, n) { var r; return r = [t, n], e.resolver = r[0], e.rejecter = r[1], r })) } return e.prototype.resolve = function () { this.resolver() }, e.prototype.reject = function (e) { this.rejecter(e) }, e }(), ne = n("bf71"), re = n("3ccc"), ie = "json", oe = function () { function e() { this.name = ie, this.version = 1, this.transferFormat = j.Text } return e.prototype.parseMessages = function (e, t) { if ("string" !== typeof e) throw new Error("Invalid input for JSON hub protocol. Expected a string."); if (!e) return []; null === t && (t = ne["a"].instance); for (var n = re["a"].parse(e), r = [], i = 0, o = n; i < o.length; i++) { var a = o[i], s = JSON.parse(a); if ("number" !== typeof s.type) throw new Error("Invalid payload."); switch (s.type) { case y.Invocation: this.isInvocationMessage(s); break; case y.StreamItem: this.isStreamItemMessage(s); break; case y.Completion: this.isCompletionMessage(s); break; case y.Ping: break; case y.Close: break; default: t.log(u["a"].Information, "Unknown message type '" + s.type + "' ignored."); continue }r.push(s) } return r }, e.prototype.writeMessage = function (e) { return re["a"].write(JSON.stringify(e)) }, e.prototype.isInvocationMessage = function (e) { this.assertNotEmptyString(e.target, "Invalid payload for Invocation message."), void 0 !== e.invocationId && this.assertNotEmptyString(e.invocationId, "Invalid payload for Invocation message.") }, e.prototype.isStreamItemMessage = function (e) { if (this.assertNotEmptyString(e.invocationId, "Invalid payload for StreamItem message."), void 0 === e.item) throw new Error("Invalid payload for StreamItem message.") }, e.prototype.isCompletionMessage = function (e) { if (e.result && e.error) throw new Error("Invalid payload for Completion message."); !e.result && e.error && this.assertNotEmptyString(e.error, "Invalid payload for Completion message."), this.assertNotEmptyString(e.invocationId, "Invalid payload for Completion message.") }, e.prototype.assertNotEmptyString = function (e, t) { if ("string" !== typeof e || "" === e) throw new Error(t) }, e }(), ae = Object.assign || function (e) { for (var t, n = 1, r = arguments.length; n < r; n++)for (var i in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); return e }, se = { trace: u["a"].Trace, debug: u["a"].Debug, info: u["a"].Information, information: u["a"].Information, warn: u["a"].Warning, warning: u["a"].Warning, error: u["a"].Error, critical: u["a"].Critical, none: u["a"].None }; function ce(e) { var t = se[e.toLowerCase()]; if ("undefined" !== typeof t) return t; throw new Error("Unknown log level: " + e) } var le = function () { function e() { } return e.prototype.configureLogging = function (e) { if (h["a"].isRequired(e, "logging"), ue(e)) this.logger = e; else if ("string" === typeof e) { var t = ce(e); this.logger = new h["b"](t) } else this.logger = new h["b"](e); return this }, e.prototype.withUrl = function (e, t) { return h["a"].isRequired(e, "url"), h["a"].isNotEmpty(e, "url"), this.url = e, this.httpConnectionOptions = ae({}, this.httpConnectionOptions, "object" === typeof t ? t : { transport: t }), this }, e.prototype.withHubProtocol = function (e) { return h["a"].isRequired(e, "protocol"), this.protocol = e, this }, e.prototype.withAutomaticReconnect = function (e) { if (this.reconnectPolicy) throw new Error("A reconnectPolicy has already been set."); return e ? Array.isArray(e) ? this.reconnectPolicy = new P(e) : this.reconnectPolicy = e : this.reconnectPolicy = new P, this }, e.prototype.build = function () { var e = this.httpConnectionOptions || {}; if (void 0 === e.logger && (e.logger = this.logger), !this.url) throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection."); var t = new Q(this.url, e); return z.create(t, this.logger || ne["a"].instance, this.protocol || new oe, this.reconnectPolicy) }, e }(); function ue(e) { return void 0 !== e.log } }, e893: function (e, t, n) { var r = n("5135"), i = n("56ef"), o = n("06cf"), a = n("9bf2"); e.exports = function (e, t) { for (var n = i(t), s = a.f, c = o.f, l = 0; l < n.length; l++) { var u = n[l]; r(e, u) || s(e, u, c(t, u)) } } }, e8b5: function (e, t, n) { var r = n("c6b6"); e.exports = Array.isArray || function (e) { return "Array" == r(e) } }, e90a: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return v })); var r = n("92fa"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("1b2b"), c = n.n(s), l = n("0464"), u = n("daa3"), h = n("4d91"), f = n("58c1"); function d(e) { return e.name || "Component" } var p = function () { return {} }; function v(e) { var t = !!e, n = e || p; return function (r) { var o = Object(l["a"])(r.props || {}, ["store"]), s = { __propsSymbol__: h["a"].any }; Object.keys(o).forEach((function (e) { s[e] = a()({}, o[e], { required: !1 }) })); var p = { name: "Connect_" + d(r), props: s, inject: { storeContext: { default: function () { return {} } } }, data: function () { return this.store = this.storeContext.store, this.preProps = Object(l["a"])(Object(u["l"])(this), ["__propsSymbol__"]), { subscribed: n(this.store.getState(), this.$props) } }, watch: { __propsSymbol__: function () { e && 2 === e.length && (this.subscribed = n(this.store.getState(), this.$props)) } }, mounted: function () { this.trySubscribe() }, beforeDestroy: function () { this.tryUnsubscribe() }, methods: { handleChange: function () { if (this.unsubscribe) { var e = Object(l["a"])(Object(u["l"])(this), ["__propsSymbol__"]), t = n(this.store.getState(), e); c()(this.preProps, e) && c()(this.subscribed, t) || (this.subscribed = t) } }, trySubscribe: function () { t && (this.unsubscribe = this.store.subscribe(this.handleChange), this.handleChange()) }, tryUnsubscribe: function () { this.unsubscribe && (this.unsubscribe(), this.unsubscribe = null) }, getWrappedInstance: function () { return this.$refs.wrappedInstance } }, render: function () { var e = arguments[0], t = this.$slots, n = void 0 === t ? {} : t, o = this.$scopedSlots, s = this.subscribed, c = this.store, h = Object(u["l"])(this); this.preProps = a()({}, Object(l["a"])(h, ["__propsSymbol__"])); var f = { props: a()({}, h, s, { store: c }), on: Object(u["k"])(this), scopedSlots: o }; return e(r, i()([f, { ref: "wrappedInstance" }]), [Object.keys(n).map((function (t) { return e("template", { slot: t }, [n[t]]) }))]) } }; return Object(f["a"])(p) } } }, e91f: function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("4d64").indexOf, o = r.aTypedArray, a = r.exportTypedArrayMethod; a("indexOf", (function (e) { return i(o(this), e, arguments.length > 1 ? arguments[1] : void 0) })) }, e95a: function (e, t, n) { var r = n("b622"), i = n("3f8c"), o = r("iterator"), a = Array.prototype; e.exports = function (e) { return void 0 !== e && (i.Array === e || a[o] === e) } }, ea34: function (e, t) { e.exports = function (e, t) { return { value: t, done: !!e } } }, ea55: function (e, t, n) { }, eac5: function (e, t) { var n = Object.prototype; function r(e) { var t = e && e.constructor, r = "function" == typeof t && t.prototype || n; return e === r } e.exports = r }, eb14: function (e, t, n) { "use strict"; n("b2a3"), n("6cd5"), n("1273"), n("9a33") }, eb1d: function (e, t, n) { "use strict"; var r = n("c430"), i = n("da84"), o = n("d039"), a = n("512ce"); e.exports = r || !o((function () { if (!(a && a < 535)) { var e = Math.random(); __defineSetter__.call(null, e, (function () { })), delete i[e] } })) }, eb53: function (e, t, n) { "use strict"; var r = n("4ea4"); Object.defineProperty(t, "__esModule", { value: !0 }), t["default"] = void 0; var i = r(n("a34a")), o = r(n("c973")), a = r(n("7037")), s = r(n("448a")), c = r(n("970b")), l = r(n("d0b5")), u = r(n("8f47")), h = n("5557"), f = function e(t, n) { (0, c["default"])(this, e), n = (0, h.deepClone)(n, !0); var r = { visible: !0, drag: !1, hover: !1, index: 1, animationDelay: 0, animationFrame: 30, animationCurve: "linear", animationPause: !1, hoverRect: null, mouseEnter: null, mouseOuter: null, click: null }, i = { status: "static", animationRoot: [], animationKeys: [], animationFrameState: [], cache: {} }; n.shape || (n.shape = {}), n.style || (n.style = {}); var o = Object.assign({}, t.shape, n.shape); Object.assign(r, n, i), Object.assign(this, t, r), this.shape = o, this.style = new l["default"](n.style), this.addedProcessor() }; function d(e) { return new Promise((function (t) { setTimeout(t, e) })) } t["default"] = f, f.prototype.addedProcessor = function () { "function" === typeof this.setGraphCenter && this.setGraphCenter(null, this), "function" === typeof this.added && this.added(this) }, f.prototype.drawProcessor = function (e, t) { var n = e.ctx; t.style.initStyle(n), "function" === typeof this.beforeDraw && this.beforeDraw(this, e), t.draw(e, t), "function" === typeof this.drawed && this.drawed(this, e), t.style.restoreTransform(n) }, f.prototype.hoverCheckProcessor = function (e, t) { var n = t.hoverRect, r = t.style, i = t.hoverCheck, o = r.graphCenter, a = r.rotate, c = r.scale, l = r.translate; return o && (a && (e = (0, h.getRotatePointPos)(-a, e, o)), c && (e = (0, h.getScalePointPos)(c.map((function (e) { return 1 / e })), e, o)), l && (e = (0, h.getTranslatePointPos)(l.map((function (e) { return -1 * e })), e))), n ? h.checkPointIsInRect.apply(void 0, [e].concat((0, s["default"])(n))) : i(e, this) }, f.prototype.moveProcessor = function (e) { this.move(e, this), "function" === typeof this.beforeMove && this.beforeMove(e, this), "function" === typeof this.setGraphCenter && this.setGraphCenter(e, this), "function" === typeof this.moved && this.moved(e, this) }, f.prototype.attr = function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0; if (!e || void 0 === t) return !1; var n = "object" === (0, a["default"])(this[e]); n && (t = (0, h.deepClone)(t, !0)); var r = this.render; "style" === e ? this.style.update(t) : n ? Object.assign(this[e], t) : this[e] = t, "index" === e && r.sortGraphsByIndex(), r.drawAllGraph() }, f.prototype.animation = function () { var e = (0, o["default"])(i["default"].mark((function e(t, n) { var r, a, s, c, l, f, p, v, m, g = arguments; return i["default"].wrap((function (e) { while (1) switch (e.prev = e.next) { case 0: if (r = g.length > 2 && void 0 !== g[2] && g[2], "shape" === t || "style" === t) { e.next = 4; break } return console.error("Only supported shape and style animation!"), e.abrupt("return"); case 4: if (n = (0, h.deepClone)(n, !0), "style" === t && this.style.colorProcessor(n), a = this[t], s = Object.keys(n), c = {}, s.forEach((function (e) { return c[e] = a[e] })), l = this.animationFrame, f = this.animationCurve, p = this.animationDelay, v = (0, u["default"])(f, c, n, l, !0), this.animationRoot.push(a), this.animationKeys.push(s), this.animationFrameState.push(v), !r) { e.next = 17; break } return e.abrupt("return"); case 17: if (!(p > 0)) { e.next = 20; break } return e.next = 20, d(p); case 20: return m = this.render, e.abrupt("return", new Promise(function () { var e = (0, o["default"])(i["default"].mark((function e(t) { return i["default"].wrap((function (e) { while (1) switch (e.prev = e.next) { case 0: return e.next = 2, m.launchAnimation(); case 2: t(); case 3: case "end": return e.stop() } }), e) }))); return function (t) { return e.apply(this, arguments) } }())); case 22: case "end": return e.stop() } }), e, this) }))); return function (t, n) { return e.apply(this, arguments) } }(), f.prototype.turnNextAnimationFrame = function (e) { var t = this.animationDelay, n = this.animationRoot, r = this.animationKeys, i = this.animationFrameState, o = this.animationPause; o || Date.now() - e < t || (n.forEach((function (e, t) { r[t].forEach((function (n) { e[n] = i[t][0][n] })) })), i.forEach((function (e, t) { e.shift(); var i = 0 === e.length; i && (n[t] = null), i && (r[t] = null) })), this.animationFrameState = i.filter((function (e) { return e.length })), this.animationRoot = n.filter((function (e) { return e })), this.animationKeys = r.filter((function (e) { return e }))) }, f.prototype.animationEnd = function () { var e = this.animationFrameState, t = this.animationKeys, n = this.animationRoot, r = this.render; return n.forEach((function (n, r) { var i = t[r], o = e[r].pop(); i.forEach((function (e) { return n[e] = o[e] })) })), this.animationFrameState = [], this.animationKeys = [], this.animationRoot = [], r.drawAllGraph() }, f.prototype.pauseAnimation = function () { this.attr("animationPause", !0) }, f.prototype.playAnimation = function () { var e = this.render; return this.attr("animationPause", !1), new Promise(function () { var t = (0, o["default"])(i["default"].mark((function t(n) { return i["default"].wrap((function (t) { while (1) switch (t.prev = t.next) { case 0: return t.next = 2, e.launchAnimation(); case 2: n(); case 3: case "end": return t.stop() } }), t) }))); return function (e) { return t.apply(this, arguments) } }()) }, f.prototype.delProcessor = function (e) { var t = this, n = e.graphs, r = n.findIndex((function (e) { return e === t })); -1 !== r && ("function" === typeof this.beforeDelete && this.beforeDelete(this), n.splice(r, 1, null), "function" === typeof this.deleted && this.deleted(this)) } }, ebb5: function (e, t, n) { "use strict"; var r, i, o, a = n("a981"), s = n("83ab"), c = n("da84"), l = n("861d"), u = n("5135"), h = n("f5df"), f = n("9112"), d = n("6eeb"), p = n("9bf2").f, v = n("e163"), m = n("d2bb"), g = n("b622"), y = n("90e3"), b = c.Int8Array, x = b && b.prototype, w = c.Uint8ClampedArray, _ = w && w.prototype, C = b && v(b), M = x && v(x), O = Object.prototype, k = O.isPrototypeOf, S = g("toStringTag"), T = y("TYPED_ARRAY_TAG"), A = y("TYPED_ARRAY_CONSTRUCTOR"), L = a && !!m && "Opera" !== h(c.opera), j = !1, z = { Int8Array: 1, Uint8Array: 1, Uint8ClampedArray: 1, Int16Array: 2, Uint16Array: 2, Int32Array: 4, Uint32Array: 4, Float32Array: 4, Float64Array: 8 }, E = { BigInt64Array: 8, BigUint64Array: 8 }, P = function (e) { if (!l(e)) return !1; var t = h(e); return "DataView" === t || u(z, t) || u(E, t) }, D = function (e) { if (!l(e)) return !1; var t = h(e); return u(z, t) || u(E, t) }, H = function (e) { if (D(e)) return e; throw TypeError("Target is not a typed array") }, V = function (e) { if (m && !k.call(C, e)) throw TypeError("Target is not a typed array constructor"); return e }, I = function (e, t, n) { if (s) { if (n) for (var r in z) { var i = c[r]; if (i && u(i.prototype, e)) try { delete i.prototype[e] } catch (o) { } } M[e] && !n || d(M, e, n ? t : L && x[e] || t) } }, N = function (e, t, n) { var r, i; if (s) { if (m) { if (n) for (r in z) if (i = c[r], i && u(i, e)) try { delete i[e] } catch (o) { } if (C[e] && !n) return; try { return d(C, e, n ? t : L && C[e] || t) } catch (o) { } } for (r in z) i = c[r], !i || i[e] && !n || d(i, e, t) } }; for (r in z) i = c[r], o = i && i.prototype, o ? f(o, A, i) : L = !1; for (r in E) i = c[r], o = i && i.prototype, o && f(o, A, i); if ((!L || "function" != typeof C || C === Function.prototype) && (C = function () { throw TypeError("Incorrect invocation") }, L)) for (r in z) c[r] && m(c[r], C); if ((!L || !M || M === O) && (M = C.prototype, L)) for (r in z) c[r] && m(c[r].prototype, M); if (L && v(_) !== M && m(_, M), s && !u(M, S)) for (r in j = !0, p(M, S, { get: function () { return l(this) ? this[T] : void 0 } }), z) c[r] && f(c[r], T, r); e.exports = { NATIVE_ARRAY_BUFFER_VIEWS: L, TYPED_ARRAY_CONSTRUCTOR: A, TYPED_ARRAY_TAG: j && T, aTypedArray: H, aTypedArrayConstructor: V, exportTypedArrayMethod: I, exportTypedArrayStaticMethod: N, isView: P, isTypedArray: D, TypedArray: C, TypedArrayPrototype: M } }, ec44: function (e, t, n) { "use strict"; function r(e) { return r = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r(e) } function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function o(e, t) { var n = Object.keys(e); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(e); t && (r = r.filter((function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable }))), n.push.apply(n, r) } return n } function a(e) { for (var t = 1; t < arguments.length; t++) { var n = null != arguments[t] ? arguments[t] : {}; t % 2 ? o(n, !0).forEach((function (t) { i(e, t, n[t]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : o(n).forEach((function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)) })) } return e } var s = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source; function c(e) { var t, n, r, i = e.ownerDocument, o = i.body, a = i && i.documentElement; return t = e.getBoundingClientRect(), n = t.left, r = t.top, n -= a.clientLeft || o.clientLeft || 0, r -= a.clientTop || o.clientTop || 0, { left: n, top: r } } function l(e, t) { var n = e["page".concat(t ? "Y" : "X", "Offset")], r = "scroll".concat(t ? "Top" : "Left"); if ("number" !== typeof n) { var i = e.document; n = i.documentElement[r], "number" !== typeof n && (n = i.body[r]) } return n } function u(e) { return l(e) } function h(e) { return l(e, !0) } function f(e) { var t = c(e), n = e.ownerDocument, r = n.defaultView || n.parentWindow; return t.left += u(r), t.top += h(r), t } function d(e, t, n) { var r = "", i = e.ownerDocument, o = n || i.defaultView.getComputedStyle(e, null); return o && (r = o.getPropertyValue(t) || o[t]), r } var p, v = new RegExp("^(".concat(s, ")(?!px)[a-z%]+$"), "i"), m = /^(top|right|bottom|left)$/, g = "currentStyle", y = "runtimeStyle", b = "left", x = "px"; function w(e, t) { var n = e[g] && e[g][t]; if (v.test(n) && !m.test(t)) { var r = e.style, i = r[b], o = e[y][b]; e[y][b] = e[g][b], r[b] = "fontSize" === t ? "1em" : n || 0, n = r.pixelLeft + x, r[b] = i, e[y][b] = o } return "" === n ? "auto" : n } function _(e, t) { for (var n = 0; n < e.length; n++)t(e[n]) } function C(e) { return "border-box" === p(e, "boxSizing") } "undefined" !== typeof window && (p = window.getComputedStyle ? d : w); var M = ["margin", "border", "padding"], O = -1, k = 2, S = 1, T = 0; function A(e, t, n) { var r, i = {}, o = e.style; for (r in t) t.hasOwnProperty(r) && (i[r] = o[r], o[r] = t[r]); for (r in n.call(e), t) t.hasOwnProperty(r) && (o[r] = i[r]) } function L(e, t, n) { var r, i, o, a = 0; for (i = 0; i < t.length; i++)if (r = t[i], r) for (o = 0; o < n.length; o++) { var s = void 0; s = "border" === r ? "".concat(r + n[o], "Width") : r + n[o], a += parseFloat(p(e, s)) || 0 } return a } function j(e) { return null != e && e == e.window } var z = {}; function E(e, t, n) { if (j(e)) return "width" === t ? z.viewportWidth(e) : z.viewportHeight(e); if (9 === e.nodeType) return "width" === t ? z.docWidth(e) : z.docHeight(e); var r = "width" === t ? ["Left", "Right"] : ["Top", "Bottom"], i = "width" === t ? e.offsetWidth : e.offsetHeight, o = (p(e), C(e)), a = 0; (null == i || i <= 0) && (i = void 0, a = p(e, t), (null == a || Number(a) < 0) && (a = e.style[t] || 0), a = parseFloat(a) || 0), void 0 === n && (n = o ? S : O); var s = void 0 !== i || o, c = i || a; if (n === O) return s ? c - L(e, ["border", "padding"], r) : a; if (s) { var l = n === k ? -L(e, ["border"], r) : L(e, ["margin"], r); return c + (n === S ? 0 : l) } return a + L(e, M.slice(n), r) } _(["Width", "Height"], (function (e) { z["doc".concat(e)] = function (t) { var n = t.document; return Math.max(n.documentElement["scroll".concat(e)], n.body["scroll".concat(e)], z["viewport".concat(e)](n)) }, z["viewport".concat(e)] = function (t) { var n = "client".concat(e), r = t.document, i = r.body, o = r.documentElement, a = o[n]; return "CSS1Compat" === r.compatMode && a || i && i[n] || a } })); var P = { position: "absolute", visibility: "hidden", display: "block" }; function D(e) { var t, n = arguments; return 0 !== e.offsetWidth ? t = E.apply(void 0, n) : A(e, P, (function () { t = E.apply(void 0, n) })), t } function H(e, t, n) { var i = n; if ("object" !== r(t)) return "undefined" !== typeof i ? ("number" === typeof i && (i += "px"), void (e.style[t] = i)) : p(e, t); for (var o in t) t.hasOwnProperty(o) && H(e, o, t[o]) } function V(e, t) { "static" === H(e, "position") && (e.style.position = "relative"); var n, r, i = f(e), o = {}; for (r in t) t.hasOwnProperty(r) && (n = parseFloat(H(e, r)) || 0, o[r] = n + t[r] - i[r]); H(e, o) } _(["width", "height"], (function (e) { var t = e.charAt(0).toUpperCase() + e.slice(1); z["outer".concat(t)] = function (t, n) { return t && D(t, e, n ? T : S) }; var n = "width" === e ? ["Left", "Right"] : ["Top", "Bottom"]; z[e] = function (t, r) { if (void 0 === r) return t && D(t, e, O); if (t) { p(t); var i = C(t); return i && (r += L(t, ["padding", "border"], n)), H(t, e, r) } } })); var I = a({ getWindow: function (e) { var t = e.ownerDocument || e; return t.defaultView || t.parentWindow }, offset: function (e, t) { if ("undefined" === typeof t) return f(e); V(e, t) }, isWindow: j, each: _, css: H, clone: function (e) { var t = {}; for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n]); var r = e.overflow; if (r) for (var i in e) e.hasOwnProperty(i) && (t.overflow[i] = e.overflow[i]); return t }, scrollLeft: function (e, t) { if (j(e)) { if (void 0 === t) return u(e); window.scrollTo(t, h(e)) } else { if (void 0 === t) return e.scrollLeft; e.scrollLeft = t } }, scrollTop: function (e, t) { if (j(e)) { if (void 0 === t) return h(e); window.scrollTo(u(e), t) } else { if (void 0 === t) return e.scrollTop; e.scrollTop = t } }, viewportWidth: 0, viewportHeight: 0 }, z); function N(e, t, n) { n = n || {}, 9 === t.nodeType && (t = I.getWindow(t)); var r = n.allowHorizontalScroll, i = n.onlyScrollIfNeeded, o = n.alignWithTop, a = n.alignWithLeft, s = n.offsetTop || 0, c = n.offsetLeft || 0, l = n.offsetBottom || 0, u = n.offsetRight || 0; r = void 0 === r || r; var h, f, d, p, v, m, g, y, b, x, w = I.isWindow(t), _ = I.offset(e), C = I.outerHeight(e), M = I.outerWidth(e); w ? (g = t, x = I.height(g), b = I.width(g), y = { left: I.scrollLeft(g), top: I.scrollTop(g) }, v = { left: _.left - y.left - c, top: _.top - y.top - s }, m = { left: _.left + M - (y.left + b) + u, top: _.top + C - (y.top + x) + l }, p = y) : (h = I.offset(t), f = t.clientHeight, d = t.clientWidth, p = { left: t.scrollLeft, top: t.scrollTop }, v = { left: _.left - (h.left + (parseFloat(I.css(t, "borderLeftWidth")) || 0)) - c, top: _.top - (h.top + (parseFloat(I.css(t, "borderTopWidth")) || 0)) - s }, m = { left: _.left + M - (h.left + d + (parseFloat(I.css(t, "borderRightWidth")) || 0)) + u, top: _.top + C - (h.top + f + (parseFloat(I.css(t, "borderBottomWidth")) || 0)) + l }), v.top < 0 || m.top > 0 ? !0 === o ? I.scrollTop(t, p.top + v.top) : !1 === o ? I.scrollTop(t, p.top + m.top) : v.top < 0 ? I.scrollTop(t, p.top + v.top) : I.scrollTop(t, p.top + m.top) : i || (o = void 0 === o || !!o, o ? I.scrollTop(t, p.top + v.top) : I.scrollTop(t, p.top + m.top)), r && (v.left < 0 || m.left > 0 ? !0 === a ? I.scrollLeft(t, p.left + v.left) : !1 === a ? I.scrollLeft(t, p.left + m.left) : v.left < 0 ? I.scrollLeft(t, p.left + v.left) : I.scrollLeft(t, p.left + m.left) : i || (a = void 0 === a || !!a, a ? I.scrollLeft(t, p.left + v.left) : I.scrollLeft(t, p.left + m.left))) } t["a"] = N }, ec69: function (e, t, n) { var r = n("6fcd"), i = n("03dd"), o = n("30c9"); function a(e) { return o(e) ? r(e) : i(e) } e.exports = a }, ec8c: function (e, t) { function n(e) { var t = []; if (null != e) for (var n in Object(e)) t.push(n); return t } e.exports = n }, ec97: function (e, t, n) { "use strict"; var r = n("ebb5"), i = n("8aa7"), o = r.aTypedArrayConstructor, a = r.exportTypedArrayStaticMethod; a("of", (function () { var e = 0, t = arguments.length, n = new (o(this))(t); while (t > e) n[e] = arguments[e++]; return n }), i) }, ed3b: function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("4d26"), c = n.n(s), l = n("92fa"), u = n.n(l), h = n("daa3"), f = n("18a7"), d = n("6bb4"), p = n("4d91"), v = { visible: p["a"].bool, hiddenClassName: p["a"].string, forceRender: p["a"].bool }, m = { props: v, render: function () { var e = arguments[0]; return e("div", { on: Object(h["k"])(this) }, [this.$slots["default"]]) } }, g = n("b488"), y = n("94eb"), b = n("6f7a"), x = function (e) { var t = document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth; if (t) { if (e) return document.body.style.position = "", void (document.body.style.width = ""); var n = Object(b["a"])(); n && (document.body.style.position = "relative", document.body.style.width = "calc(100% - " + n + "px)") } }; function w() { return { keyboard: p["a"].bool, mask: p["a"].bool, afterClose: p["a"].func, closable: p["a"].bool, maskClosable: p["a"].bool, visible: p["a"].bool, destroyOnClose: p["a"].bool, mousePosition: p["a"].shape({ x: p["a"].number, y: p["a"].number }).loose, title: p["a"].any, footer: p["a"].any, transitionName: p["a"].string, maskTransitionName: p["a"].string, animation: p["a"].any, maskAnimation: p["a"].any, wrapStyle: p["a"].object, bodyStyle: p["a"].object, maskStyle: p["a"].object, prefixCls: p["a"].string, wrapClassName: p["a"].string, width: p["a"].oneOfType([p["a"].string, p["a"].number]), height: p["a"].oneOfType([p["a"].string, p["a"].number]), zIndex: p["a"].number, bodyProps: p["a"].any, maskProps: p["a"].any, wrapProps: p["a"].any, getContainer: p["a"].any, dialogStyle: p["a"].object.def((function () { return {} })), dialogClass: p["a"].string.def(""), closeIcon: p["a"].any, forceRender: p["a"].bool, getOpenCount: p["a"].func, focusTriggerAfterClose: p["a"].bool } } var _ = w, C = _(), M = 0; function O() { } function k(e, t) { var n = e["page" + (t ? "Y" : "X") + "Offset"], r = "scroll" + (t ? "Top" : "Left"); if ("number" !== typeof n) { var i = e.document; n = i.documentElement[r], "number" !== typeof n && (n = i.body[r]) } return n } function S(e, t) { var n = e.style;["Webkit", "Moz", "Ms", "ms"].forEach((function (e) { n[e + "TransformOrigin"] = t })), n["transformOrigin"] = t } function T(e) { var t = e.getBoundingClientRect(), n = { left: t.left, top: t.top }, r = e.ownerDocument, i = r.defaultView || r.parentWindow; return n.left += k(i), n.top += k(i, !0), n } var A = {}, L = { mixins: [g["a"]], props: Object(h["t"])(C, { mask: !0, visible: !1, keyboard: !0, closable: !0, maskClosable: !0, destroyOnClose: !1, prefixCls: "rc-dialog", getOpenCount: function () { return null }, focusTriggerAfterClose: !0 }), data: function () { return { destroyPopup: !1 } }, provide: function () { return { dialogContext: this } }, watch: { visible: function (e) { var t = this; e && (this.destroyPopup = !1), this.$nextTick((function () { t.updatedCallback(!e) })) } }, beforeMount: function () { this.inTransition = !1, this.titleId = "rcDialogTitle" + M++ }, mounted: function () { var e = this; this.$nextTick((function () { e.updatedCallback(!1), (e.forceRender || !1 === e.getContainer && !e.visible) && e.$refs.wrap && (e.$refs.wrap.style.display = "none") })) }, beforeDestroy: function () { var e = this.visible, t = this.getOpenCount; !e && !this.inTransition || t() || this.switchScrollingEffect(), clearTimeout(this.timeoutId) }, methods: { getDialogWrap: function () { return this.$refs.wrap }, updatedCallback: function (e) { var t = this.mousePosition, n = this.mask, r = this.focusTriggerAfterClose; if (this.visible) { if (!e) { this.openTime = Date.now(), this.switchScrollingEffect(), this.tryFocus(); var i = this.$refs.dialog.$el; if (t) { var o = T(i); S(i, t.x - o.left + "px " + (t.y - o.top) + "px") } else S(i, "") } } else if (e && (this.inTransition = !0, n && this.lastOutSideFocusNode && r)) { try { this.lastOutSideFocusNode.focus() } catch (a) { this.lastOutSideFocusNode = null } this.lastOutSideFocusNode = null } }, tryFocus: function () { Object(d["a"])(this.$refs.wrap, document.activeElement) || (this.lastOutSideFocusNode = document.activeElement, this.$refs.sentinelStart.focus()) }, onAnimateLeave: function () { var e = this.afterClose, t = this.destroyOnClose; this.$refs.wrap && (this.$refs.wrap.style.display = "none"), t && (this.destroyPopup = !0), this.inTransition = !1, this.switchScrollingEffect(), e && e() }, onDialogMouseDown: function () { this.dialogMouseDown = !0 }, onMaskMouseUp: function () { var e = this; this.dialogMouseDown && (this.timeoutId = setTimeout((function () { e.dialogMouseDown = !1 }), 0)) }, onMaskClick: function (e) { Date.now() - this.openTime < 300 || e.target !== e.currentTarget || this.dialogMouseDown || this.close(e) }, onKeydown: function (e) { var t = this.$props; if (t.keyboard && e.keyCode === f["a"].ESC) return e.stopPropagation(), void this.close(e); if (t.visible && e.keyCode === f["a"].TAB) { var n = document.activeElement, r = this.$refs.sentinelStart; e.shiftKey ? n === r && this.$refs.sentinelEnd.focus() : n === this.$refs.sentinelEnd && r.focus() } }, getDialogElement: function () { var e = this.$createElement, t = this.closable, n = this.prefixCls, r = this.width, o = this.height, s = this.title, c = this.footer, l = this.bodyStyle, f = this.visible, d = this.bodyProps, p = this.forceRender, v = this.dialogStyle, g = this.dialogClass, b = i()({}, v); void 0 !== r && (b.width = "number" === typeof r ? r + "px" : r), void 0 !== o && (b.height = "number" === typeof o ? o + "px" : o); var x = void 0; c && (x = e("div", { key: "footer", class: n + "-footer", ref: "footer" }, [c])); var w = void 0; s && (w = e("div", { key: "header", class: n + "-header", ref: "header" }, [e("div", { class: n + "-title", attrs: { id: this.titleId } }, [s])])); var _ = void 0; if (t) { var C = Object(h["g"])(this, "closeIcon"); _ = e("button", { attrs: { type: "button", "aria-label": "Close" }, key: "close", on: { click: this.close || O }, class: n + "-close" }, [C || e("span", { class: n + "-close-x" })]) } var M = b, k = { width: 0, height: 0, overflow: "hidden" }, S = a()({}, n, !0), T = this.getTransitionName(), A = e(m, { directives: [{ name: "show", value: f }], key: "dialog-element", attrs: { role: "document", forceRender: p }, ref: "dialog", style: M, class: [S, g], on: { mousedown: this.onDialogMouseDown } }, [e("div", { attrs: { tabIndex: 0, "aria-hidden": "true" }, ref: "sentinelStart", style: k }), e("div", { class: n + "-content" }, [_, w, e("div", u()([{ key: "body", class: n + "-body", style: l, ref: "body" }, d]), [this.$slots["default"]]), x]), e("div", { attrs: { tabIndex: 0, "aria-hidden": "true" }, ref: "sentinelEnd", style: k })]), L = Object(y["a"])(T, { afterLeave: this.onAnimateLeave }); return e("transition", u()([{ key: "dialog" }, L]), [f || !this.destroyPopup ? A : null]) }, getZIndexStyle: function () { var e = {}, t = this.$props; return void 0 !== t.zIndex && (e.zIndex = t.zIndex), e }, getWrapStyle: function () { return i()({}, this.getZIndexStyle(), this.wrapStyle) }, getMaskStyle: function () { return i()({}, this.getZIndexStyle(), this.maskStyle) }, getMaskElement: function () { var e = this.$createElement, t = this.$props, n = void 0; if (t.mask) { var r = this.getMaskTransitionName(); if (n = e(m, u()([{ directives: [{ name: "show", value: t.visible }], style: this.getMaskStyle(), key: "mask", class: t.prefixCls + "-mask" }, t.maskProps])), r) { var i = Object(y["a"])(r); n = e("transition", u()([{ key: "mask" }, i]), [n]) } } return n }, getMaskTransitionName: function () { var e = this.$props, t = e.maskTransitionName, n = e.maskAnimation; return !t && n && (t = e.prefixCls + "-" + n), t }, getTransitionName: function () { var e = this.$props, t = e.transitionName, n = e.animation; return !t && n && (t = e.prefixCls + "-" + n), t }, switchScrollingEffect: function () { var e = this.getOpenCount, t = e(); if (1 === t) { if (A.hasOwnProperty("overflowX")) return; A = { overflowX: document.body.style.overflowX, overflowY: document.body.style.overflowY, overflow: document.body.style.overflow }, x(), document.body.style.overflow = "hidden" } else t || (void 0 !== A.overflow && (document.body.style.overflow = A.overflow), void 0 !== A.overflowX && (document.body.style.overflowX = A.overflowX), void 0 !== A.overflowY && (document.body.style.overflowY = A.overflowY), A = {}, x(!0)) }, close: function (e) { this.__emit("close", e) } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.maskClosable, r = this.visible, i = this.wrapClassName, o = this.title, a = this.wrapProps, s = this.getWrapStyle(); return r && (s.display = null), e("div", { class: t + "-root" }, [this.getMaskElement(), e("div", u()([{ attrs: { tabIndex: -1, role: "dialog", "aria-labelledby": o ? this.titleId : null }, on: { keydown: this.onKeydown, click: n ? this.onMaskClick : O, mouseup: n ? this.onMaskMouseUp : O }, class: t + "-wrap " + (i || ""), ref: "wrap", style: s }, a]), [this.getDialogElement()])]) } }, j = n("1098"), z = n.n(j); function E(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.element, r = void 0 === n ? document.body : n, i = {}, o = Object.keys(e); return o.forEach((function (e) { i[e] = r.style[e] })), o.forEach((function (t) { r.style[t] = e[t] })), i } var P = E, D = n("8e60"), H = 0, V = !("undefined" !== typeof window && window.document && window.document.createElement), I = {}, N = { name: "PortalWrapper", props: { wrapperClassName: p["a"].string, forceRender: p["a"].bool, getContainer: p["a"].any, children: p["a"].func, visible: p["a"].bool }, data: function () { var e = this.$props.visible; return H = e ? H + 1 : H, {} }, updated: function () { this.setWrapperClassName() }, watch: { visible: function (e) { H = e ? H + 1 : H - 1 }, getContainer: function (e, t) { var n = "function" === typeof e && "function" === typeof t; (n ? e.toString() !== t.toString() : e !== t) && this.removeCurrentContainer(!1) } }, beforeDestroy: function () { var e = this.$props.visible; H = e && H ? H - 1 : H, this.removeCurrentContainer(e) }, methods: { getParent: function () { var e = this.$props.getContainer; if (e) { if ("string" === typeof e) return document.querySelectorAll(e)[0]; if ("function" === typeof e) return e(); if ("object" === ("undefined" === typeof e ? "undefined" : z()(e)) && e instanceof window.HTMLElement) return e } return document.body }, getDomContainer: function () { if (V) return null; if (!this.container) { this.container = document.createElement("div"); var e = this.getParent(); e && e.appendChild(this.container) } return this.setWrapperClassName(), this.container }, setWrapperClassName: function () { var e = this.$props.wrapperClassName; this.container && e && e !== this.container.className && (this.container.className = e) }, savePortal: function (e) { this._component = e }, removeCurrentContainer: function () { this.container = null, this._component = null }, switchScrollingEffect: function () { 1 !== H || Object.keys(I).length ? H || (P(I), I = {}, x(!0)) : (x(), I = P({ overflow: "hidden", overflowX: "hidden", overflowY: "hidden" })) } }, render: function () { var e = arguments[0], t = this.$props, n = t.children, r = t.forceRender, i = t.visible, o = null, a = { getOpenCount: function () { return H }, getContainer: this.getDomContainer, switchScrollingEffect: this.switchScrollingEffect }; return (r || i || this._component) && (o = e(D["a"], u()([{ attrs: { getContainer: this.getDomContainer, children: n(a) } }, { directives: [{ name: "ant-ref", value: this.savePortal }] }]))), o } }, R = _(), F = { inheritAttrs: !1, props: i()({}, R, { visible: R.visible.def(!1) }), render: function () { var e = this, t = arguments[0], n = this.$props, r = n.visible, o = n.getContainer, a = n.forceRender, s = { props: this.$props, attrs: this.$attrs, ref: "_component", key: "dialog", on: Object(h["k"])(this) }; return !1 === o ? t(L, u()([s, { attrs: { getOpenCount: function () { return 2 } } }]), [this.$slots["default"]]) : t(N, { attrs: { visible: r, forceRender: a, getContainer: o, children: function (n) { return s.props = i()({}, s.props, n), t(L, s, [e.$slots["default"]]) } } }) } }, Y = F, $ = Y, B = n("c8c6"), W = n("97e1"), q = n("0c63"), U = n("5efb"), K = n("b92b"), G = n("e5cd"), X = n("9cba"), J = Object(K["a"])().type, Q = null, Z = function (e) { Q = { x: e.pageX, y: e.pageY }, setTimeout((function () { return Q = null }), 100) }; function ee() { } "undefined" !== typeof window && window.document && window.document.documentElement && Object(B["a"])(document.documentElement, "click", Z, !0); var te = function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = { prefixCls: p["a"].string, visible: p["a"].bool, confirmLoading: p["a"].bool, title: p["a"].any, closable: p["a"].bool, closeIcon: p["a"].any, afterClose: p["a"].func.def(ee), centered: p["a"].bool, width: p["a"].oneOfType([p["a"].string, p["a"].number]), footer: p["a"].any, okText: p["a"].any, okType: J, cancelText: p["a"].any, icon: p["a"].any, maskClosable: p["a"].bool, forceRender: p["a"].bool, okButtonProps: p["a"].object, cancelButtonProps: p["a"].object, destroyOnClose: p["a"].bool, wrapClassName: p["a"].string, maskTransitionName: p["a"].string, transitionName: p["a"].string, getContainer: p["a"].func, zIndex: p["a"].number, bodyStyle: p["a"].object, maskStyle: p["a"].object, mask: p["a"].bool, keyboard: p["a"].bool, wrapProps: p["a"].object, focusTriggerAfterClose: p["a"].bool }; return Object(h["t"])(t, e) }, ne = [], re = { name: "AModal", inheritAttrs: !1, model: { prop: "visible", event: "change" }, props: te({ width: 520, transitionName: "zoom", maskTransitionName: "fade", confirmLoading: !1, visible: !1, okType: "primary" }), data: function () { return { sVisible: !!this.visible } }, watch: { visible: function (e) { this.sVisible = e } }, inject: { configProvider: { default: function () { return X["a"] } } }, methods: { handleCancel: function (e) { this.$emit("cancel", e), this.$emit("change", !1) }, handleOk: function (e) { this.$emit("ok", e) }, renderFooter: function (e) { var t = this.$createElement, n = this.okType, r = this.confirmLoading, i = Object(h["x"])({ on: { click: this.handleCancel } }, this.cancelButtonProps || {}), o = Object(h["x"])({ on: { click: this.handleOk }, props: { type: n, loading: r } }, this.okButtonProps || {}); return t("div", [t(U["a"], i, [Object(h["g"])(this, "cancelText") || e.cancelText]), t(U["a"], o, [Object(h["g"])(this, "okText") || e.okText])]) } }, render: function () { var e = arguments[0], t = this.prefixCls, n = this.sVisible, r = this.wrapClassName, o = this.centered, s = this.getContainer, l = this.$slots, u = this.$scopedSlots, f = this.$attrs, d = u["default"] ? u["default"]() : l["default"], p = this.configProvider, v = p.getPrefixCls, m = p.getPopupContainer, g = v("modal", t), y = e(G["a"], { attrs: { componentName: "Modal", defaultLocale: Object(W["b"])() }, scopedSlots: { default: this.renderFooter } }), b = Object(h["g"])(this, "closeIcon"), x = e("span", { class: g + "-close-x" }, [b || e(q["a"], { class: g + "-close-icon", attrs: { type: "close" } })]), w = Object(h["g"])(this, "footer"), _ = Object(h["g"])(this, "title"), C = { props: i()({}, this.$props, { getContainer: void 0 === s ? m : s, prefixCls: g, wrapClassName: c()(a()({}, g + "-centered", !!o), r), title: _, footer: void 0 === w ? y : w, visible: n, mousePosition: Q, closeIcon: x }), on: i()({}, Object(h["k"])(this), { close: this.handleCancel }), class: Object(h["f"])(this), style: Object(h["q"])(this), attrs: f }; return e($, C, [d]) } }, ie = n("8bbf"), oe = n.n(ie), ae = Object(K["a"])().type, se = { type: ae, actionFn: p["a"].func, closeModal: p["a"].func, autoFocus: p["a"].bool, buttonProps: p["a"].object }, ce = { mixins: [g["a"]], props: se, data: function () { return { loading: !1 } }, mounted: function () { var e = this; this.autoFocus && (this.timeoutId = setTimeout((function () { return e.$el.focus() }))) }, beforeDestroy: function () { clearTimeout(this.timeoutId) }, methods: { onClick: function () { var e = this, t = this.actionFn, n = this.closeModal; if (t) { var r = void 0; t.length ? r = t(n) : (r = t(), r || n()), r && r.then && (this.setState({ loading: !0 }), r.then((function () { n.apply(void 0, arguments) }), (function (t) { console.error(t), e.setState({ loading: !1 }) }))) } else n() } }, render: function () { var e = arguments[0], t = this.type, n = this.$slots, r = this.loading, i = this.buttonProps; return e(U["a"], u()([{ attrs: { type: t, loading: r }, on: { click: this.onClick } }, i]), [n["default"]]) } }, le = n("6a21"), ue = { functional: !0, render: function (e, t) { var n = t.props, r = n.onCancel, i = n.onOk, o = n.close, s = n.zIndex, l = n.afterClose, u = n.visible, h = n.keyboard, f = n.centered, d = n.getContainer, p = n.maskStyle, v = n.okButtonProps, m = n.cancelButtonProps, g = n.iconType, y = void 0 === g ? "question-circle" : g, b = n.closable, x = void 0 !== b && b; Object(le["a"])(!("iconType" in n), "Modal", "The property 'iconType' is deprecated. Use the property 'icon' instead."); var w = n.icon ? n.icon : y, _ = n.okType || "primary", C = n.prefixCls || "ant-modal", M = C + "-confirm", O = !("okCancel" in n) || n.okCancel, k = n.width || 416, S = n.style || {}, T = void 0 === n.mask || n.mask, A = void 0 !== n.maskClosable && n.maskClosable, L = Object(W["b"])(), j = n.okText || (O ? L.okText : L.justOkText), z = n.cancelText || L.cancelText, E = null !== n.autoFocusButton && (n.autoFocusButton || "ok"), P = n.transitionName || "zoom", D = n.maskTransitionName || "fade", H = c()(M, M + "-" + n.type, C + "-" + n.type, n["class"]), V = O && e(ce, { attrs: { actionFn: r, closeModal: o, autoFocus: "cancel" === E, buttonProps: m } }, [z]), I = "string" === typeof w ? e(q["a"], { attrs: { type: w } }) : w(e); return e(re, { attrs: { prefixCls: C, wrapClassName: c()(a()({}, M + "-centered", !!f)), visible: u, closable: x, title: "", transitionName: P, footer: "", maskTransitionName: D, mask: T, maskClosable: A, maskStyle: p, width: k, zIndex: s, afterClose: l, keyboard: h, centered: f, getContainer: d }, class: H, on: { cancel: function (e) { return o({ triggerCancel: !0 }, e) } }, style: S }, [e("div", { class: M + "-body-wrapper" }, [e("div", { class: M + "-body" }, [I, void 0 === n.title ? null : e("span", { class: M + "-title" }, ["function" === typeof n.title ? n.title(e) : n.title]), e("div", { class: M + "-content" }, ["function" === typeof n.content ? n.content(e) : n.content])]), e("div", { class: M + "-btns" }, [V, e(ce, { attrs: { type: _, actionFn: i, closeModal: o, autoFocus: "ok" === E, buttonProps: v } }, [j])])])]) } }, he = n("db14"), fe = n("0464"); function de(e) { var t = document.createElement("div"), n = document.createElement("div"); t.appendChild(n), document.body.appendChild(t); var r = i()({}, Object(fe["a"])(e, ["parentContext"]), { close: s, visible: !0 }), o = null, a = { props: {} }; function s() { l.apply(void 0, arguments) } function c(e) { r = i()({}, r, e), a.props = r } function l() { o && t.parentNode && (o.$destroy(), o = null, t.parentNode.removeChild(t)); for (var n = arguments.length, r = Array(n), i = 0; i < n; i++)r[i] = arguments[i]; var a = r.some((function (e) { return e && e.triggerCancel })); e.onCancel && a && e.onCancel.apply(e, r); for (var c = 0; c < ne.length; c++) { var l = ne[c]; if (l === s) { ne.splice(c, 1); break } } } function u(t) { a.props = t; var r = he["a"].Vue || oe.a; return new r({ el: n, parent: e.parentContext, data: function () { return { confirmDialogProps: a } }, render: function () { var e = arguments[0], t = i()({}, this.confirmDialogProps); return e(ue, t) } }) } return o = u(r), ne.push(s), { destroy: s, update: c } } var pe = function (e) { var t = i()({ type: "info", icon: function (e) { return e(q["a"], { attrs: { type: "info-circle" } }) }, okCancel: !1 }, e); return de(t) }, ve = function (e) { var t = i()({ type: "success", icon: function (e) { return e(q["a"], { attrs: { type: "check-circle" } }) }, okCancel: !1 }, e); return de(t) }, me = function (e) { var t = i()({ type: "error", icon: function (e) { return e(q["a"], { attrs: { type: "close-circle" } }) }, okCancel: !1 }, e); return de(t) }, ge = function (e) { var t = i()({ type: "warning", icon: function (e) { return e(q["a"], { attrs: { type: "exclamation-circle" } }) }, okCancel: !1 }, e); return de(t) }, ye = ge, be = function (e) { var t = i()({ type: "confirm", okCancel: !0 }, e); return de(t) }; re.info = pe, re.success = ve, re.error = me, re.warning = ge, re.warn = ye, re.confirm = be, re.destroyAll = function () { while (ne.length) { var e = ne.pop(); e && e() } }, re.install = function (e) { e.use(he["a"]), e.component(re.name, re) }; t["a"] = re }, edfa: function (e, t) { function n(e) { var t = -1, n = Array(e.size); return e.forEach((function (e, r) { n[++t] = [r, e] })), n } e.exports = n }, ee00: function (e, t, n) { "use strict"; n("b2a3"), n("078a") }, eee7: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("58a8").start, o = n("c8d2"), a = o("trimStart"), s = a ? function () { return i(this) } : "".trimStart; r({ target: "String", proto: !0, forced: a }, { trimStart: s, trimLeft: s }) }, ef08: function (e, t) { var n = e.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); "number" == typeof __g && (__g = n) }, ef5d: function (e, t) { function n(e) { return function (t) { return null == t ? void 0 : t[e] } } e.exports = n }, efb6: function (e, t, n) { var r = n("5e2e"); function i() { this.__data__ = new r, this.size = 0 } e.exports = i }, efe9: function (e, t, n) { var r = n("746f"); r("isConcatSpreadable") }, efec: function (e, t, n) { var r = n("9112"), i = n("51eb"), o = n("b622"), a = o("toPrimitive"), s = Date.prototype; a in s || r(s, a, i) }, f00c: function (e, t, n) { var r = n("23e7"), i = n("e285"); r({ target: "Number", stat: !0 }, { isFinite: i }) }, f069: function (e, t, n) { "use strict"; var r = n("1c0b"), i = function (e) { var t, n; this.promise = new e((function (e, r) { if (void 0 !== t || void 0 !== n) throw TypeError("Bad Promise constructor"); t = e, n = r })), this.resolve = r(t), this.reject = r(n) }; e.exports.f = function (e) { return new i(e) } }, f111: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.barConfig = void 0; var r = { show: !0, name: "", stack: "", shapeType: "normal", echelonOffset: 10, barWidth: "auto", barGap: "30%", barCategoryGap: "20%", xAxisIndex: 0, yAxisIndex: 0, data: [], backgroundBar: { show: !1, width: "auto", style: { fill: "rgba(200, 200, 200, .4)" } }, label: { show: !1, position: "top", offset: [0, -10], formatter: null, style: { fontSize: 10 } }, gradient: { color: [], local: !0 }, barStyle: {}, independentColor: !1, independentColors: [], rLevel: 0, animationCurve: "easeOutCubic", animationFrame: 50 }; t.barConfig = r }, f183: function (e, t, n) { var r = n("23e7"), i = n("d012"), o = n("861d"), a = n("5135"), s = n("9bf2").f, c = n("241c"), l = n("057f"), u = n("90e3"), h = n("bb2f"), f = !1, d = u("meta"), p = 0, v = Object.isExtensible || function () { return !0 }, m = function (e) { s(e, d, { value: { objectID: "O" + p++, weakData: {} } }) }, g = function (e, t) { if (!o(e)) return "symbol" == typeof e ? e : ("string" == typeof e ? "S" : "P") + e; if (!a(e, d)) { if (!v(e)) return "F"; if (!t) return "E"; m(e) } return e[d].objectID }, y = function (e, t) { if (!a(e, d)) { if (!v(e)) return !0; if (!t) return !1; m(e) } return e[d].weakData }, b = function (e) { return h && f && v(e) && !a(e, d) && m(e), e }, x = function () { w.enable = function () { }, f = !0; var e = c.f, t = [].splice, n = {}; n[d] = 1, e(n).length && (c.f = function (n) { for (var r = e(n), i = 0, o = r.length; i < o; i++)if (r[i] === d) { t.call(r, i, 1); break } return r }, r({ target: "Object", stat: !0, forced: !0 }, { getOwnPropertyNames: l.f })) }, w = e.exports = { enable: x, fastKey: g, getWeakData: y, onFreeze: b }; i[d] = !0 }, f2ca: function (e, t, n) { "use strict"; var r = n("6042"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("4d26"), c = n.n(s), l = n("4d91"), u = n("daa3"), h = n("9cba"), f = n("0c63"), d = n("8e8e"), p = n.n(d), v = n("b24f"), m = n.n(v); function g(e) { return !e || e < 0 ? 0 : e > 100 ? 100 : e } var y = function (e) { var t = [], n = !0, r = !1, i = void 0; try { for (var o, a = Object.entries(e)[Symbol.iterator](); !(n = (o = a.next()).done); n = !0) { var s = o.value, c = m()(s, 2), l = c[0], u = c[1], h = parseFloat(l.replace(/%/g, "")); if (isNaN(h)) return {}; t.push({ key: h, value: u }) } } catch (f) { r = !0, i = f } finally { try { !n && a["return"] && a["return"]() } finally { if (r) throw i } } return t = t.sort((function (e, t) { return e.key - t.key })), t.map((function (e) { var t = e.key, n = e.value; return n + " " + t + "%" })).join(", ") }, b = function (e) { var t = e.from, n = void 0 === t ? "#1890ff" : t, r = e.to, i = void 0 === r ? "#1890ff" : r, o = e.direction, a = void 0 === o ? "to right" : o, s = p()(e, ["from", "to", "direction"]); if (0 !== Object.keys(s).length) { var c = y(s); return { backgroundImage: "linear-gradient(" + a + ", " + c + ")" } } return { backgroundImage: "linear-gradient(" + a + ", " + n + ", " + i + ")" } }, x = { functional: !0, render: function (e, t) { var n = t.props, r = t.children, i = n.prefixCls, o = n.percent, s = n.successPercent, c = n.strokeWidth, l = n.size, u = n.strokeColor, h = n.strokeLinecap, f = void 0; f = u && "string" !== typeof u ? b(u) : { background: u }; var d = a()({ width: g(o) + "%", height: (c || ("small" === l ? 6 : 8)) + "px", background: u, borderRadius: "square" === h ? 0 : "100px" }, f), p = { width: g(s) + "%", height: (c || ("small" === l ? 6 : 8)) + "px", borderRadius: "square" === h ? 0 : "" }, v = void 0 !== s ? e("div", { class: i + "-success-bg", style: p }) : null; return e("div", [e("div", { class: i + "-outer" }, [e("div", { class: i + "-inner" }, [e("div", { class: i + "-bg", style: d }), v])]), r]) } }, w = x, _ = n("92fa"), C = n.n(_), M = n("8bbf"), O = n.n(M), k = n("46cf"), S = n.n(k); function T(e) { return { mixins: [e], updated: function () { var e = this, t = Date.now(), n = !1; Object.keys(this.paths).forEach((function (r) { var i = e.paths[r]; if (i) { n = !0; var o = i.style; o.transitionDuration = ".3s, .3s, .3s, .06s", e.prevTimeStamp && t - e.prevTimeStamp < 100 && (o.transitionDuration = "0s, 0s") } })), n && (this.prevTimeStamp = Date.now()) } } } var A = T, L = { percent: 0, prefixCls: "rc-progress", strokeColor: "#2db7f5", strokeLinecap: "round", strokeWidth: 1, trailColor: "#D9D9D9", trailWidth: 1 }, j = l["a"].oneOfType([l["a"].number, l["a"].string]), z = { percent: l["a"].oneOfType([j, l["a"].arrayOf(j)]), prefixCls: l["a"].string, strokeColor: l["a"].oneOfType([l["a"].string, l["a"].arrayOf(l["a"].oneOfType([l["a"].string, l["a"].object])), l["a"].object]), strokeLinecap: l["a"].oneOf(["butt", "round", "square"]), strokeWidth: j, trailColor: l["a"].string, trailWidth: j }, E = a()({}, z, { gapPosition: l["a"].oneOf(["top", "bottom", "left", "right"]), gapDegree: l["a"].oneOfType([l["a"].number, l["a"].string, l["a"].bool]) }), P = a()({}, L, { gapPosition: "top" }); O.a.use(S.a, { name: "ant-ref" }); var D = 0; function H(e) { return +e.replace("%", "") } function V(e) { return Array.isArray(e) ? e : [e] } function I(e, t, n, r) { var i = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0, o = arguments[5], a = 50 - r / 2, s = 0, c = -a, l = 0, u = -2 * a; switch (o) { case "left": s = -a, c = 0, l = 2 * a, u = 0; break; case "right": s = a, c = 0, l = -2 * a, u = 0; break; case "bottom": c = a, u = 2 * a; break; default: }var h = "M 50,50 m " + s + "," + c + "\n   a " + a + "," + a + " 0 1 1 " + l + "," + -u + "\n   a " + a + "," + a + " 0 1 1 " + -l + "," + u, f = 2 * Math.PI * a, d = { stroke: n, strokeDasharray: t / 100 * (f - i) + "px " + f + "px", strokeDashoffset: "-" + (i / 2 + e / 100 * (f - i)) + "px", transition: "stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s" }; return { pathString: h, pathStyle: d } } var N = { props: Object(u["t"])(E, P), created: function () { this.paths = {}, this.gradientId = D, D += 1 }, methods: { getStokeList: function () { var e = this, t = this.$createElement, n = this.$props, r = n.prefixCls, i = n.percent, o = n.strokeColor, a = n.strokeWidth, s = n.strokeLinecap, c = n.gapDegree, l = n.gapPosition, u = V(i), h = V(o), f = 0; return u.map((function (n, i) { var o = h[i] || h[h.length - 1], u = "[object Object]" === Object.prototype.toString.call(o) ? "url(#" + r + "-gradient-" + e.gradientId + ")" : "", d = I(f, n, o, a, c, l), p = d.pathString, v = d.pathStyle; f += n; var m = { key: i, attrs: { d: p, stroke: u, "stroke-linecap": s, "stroke-width": a, opacity: 0 === n ? 0 : 1, "fill-opacity": "0" }, class: r + "-circle-path", style: v, directives: [{ name: "ant-ref", value: function (t) { e.paths[i] = t } }] }; return t("path", m) })) } }, render: function () { var e = arguments[0], t = this.$props, n = t.prefixCls, r = t.strokeWidth, i = t.trailWidth, o = t.gapDegree, a = t.gapPosition, s = t.trailColor, c = t.strokeLinecap, l = t.strokeColor, u = p()(t, ["prefixCls", "strokeWidth", "trailWidth", "gapDegree", "gapPosition", "trailColor", "strokeLinecap", "strokeColor"]), h = I(0, 100, s, r, o, a), f = h.pathString, d = h.pathStyle; delete u.percent; var v = V(l), m = v.find((function (e) { return "[object Object]" === Object.prototype.toString.call(e) })), g = { attrs: { d: f, stroke: s, "stroke-linecap": c, "stroke-width": i || r, "fill-opacity": "0" }, class: n + "-circle-trail", style: d }; return e("svg", C()([{ class: n + "-circle", attrs: { viewBox: "0 0 100 100" } }, u]), [m && e("defs", [e("linearGradient", { attrs: { id: n + "-gradient-" + this.gradientId, x1: "100%", y1: "0%", x2: "0%", y2: "0%" } }, [Object.keys(m).sort((function (e, t) { return H(e) - H(t) })).map((function (t, n) { return e("stop", { key: n, attrs: { offset: t, "stop-color": m[t] } }) }))])]), e("path", g), this.getStokeList().reverse()]) } }, R = A(N), F = { normal: "#108ee9", exception: "#ff5500", success: "#87d068" }; function Y(e) { var t = e.percent, n = e.successPercent, r = g(t); if (!n) return r; var i = g(n); return [n, g(r - i)] } function $(e) { var t = e.progressStatus, n = e.successPercent, r = e.strokeColor, i = r || F[t]; return n ? [F.success, i] : i } var B = { functional: !0, render: function (e, t) { var n, r = t.props, o = t.children, a = r.prefixCls, s = r.width, c = r.strokeWidth, l = r.trailColor, u = r.strokeLinecap, h = r.gapPosition, f = r.gapDegree, d = r.type, p = s || 120, v = { width: "number" === typeof p ? p + "px" : p, height: "number" === typeof p ? p + "px" : p, fontSize: .15 * p + 6 }, m = c || 6, g = h || "dashboard" === d && "bottom" || "top", y = f || "dashboard" === d && 75, b = $(r), x = "[object Object]" === Object.prototype.toString.call(b), w = (n = {}, i()(n, a + "-inner", !0), i()(n, a + "-circle-gradient", x), n); return e("div", { class: w, style: v }, [e(R, { attrs: { percent: Y(r), strokeWidth: m, trailWidth: m, strokeColor: b, strokeLinecap: u, trailColor: l, prefixCls: a, gapDegree: y, gapPosition: g } }), o]) } }, W = B, q = ["normal", "exception", "active", "success"], U = l["a"].oneOf(["line", "circle", "dashboard"]), K = l["a"].oneOf(["default", "small"]), G = { prefixCls: l["a"].string, type: U, percent: l["a"].number, successPercent: l["a"].number, format: l["a"].func, status: l["a"].oneOf(q), showInfo: l["a"].bool, strokeWidth: l["a"].number, strokeLinecap: l["a"].oneOf(["butt", "round", "square"]), strokeColor: l["a"].oneOfType([l["a"].string, l["a"].object]), trailColor: l["a"].string, width: l["a"].number, gapDegree: l["a"].number, gapPosition: l["a"].oneOf(["top", "bottom", "left", "right"]), size: K }, X = { name: "AProgress", props: Object(u["t"])(G, { type: "line", percent: 0, showInfo: !0, trailColor: "#f3f3f3", size: "default", gapDegree: 0, strokeLinecap: "round" }), inject: { configProvider: { default: function () { return h["a"] } } }, methods: { getPercentNumber: function () { var e = this.$props, t = e.successPercent, n = e.percent, r = void 0 === n ? 0 : n; return parseInt(void 0 !== t ? t.toString() : r.toString(), 10) }, getProgressStatus: function () { var e = this.$props.status; return q.indexOf(e) < 0 && this.getPercentNumber() >= 100 ? "success" : e || "normal" }, renderProcessInfo: function (e, t) { var n = this.$createElement, r = this.$props, i = r.showInfo, o = r.format, a = r.type, s = r.percent, c = r.successPercent; if (!i) return null; var l = void 0, u = o || this.$scopedSlots.format || function (e) { return e + "%" }, h = "circle" === a || "dashboard" === a ? "" : "-circle"; return o || this.$scopedSlots.format || "exception" !== t && "success" !== t ? l = u(g(s), g(c)) : "exception" === t ? l = n(f["a"], { attrs: { type: "close" + h, theme: "line" === a ? "filled" : "outlined" } }) : "success" === t && (l = n(f["a"], { attrs: { type: "check" + h, theme: "line" === a ? "filled" : "outlined" } })), n("span", { class: e + "-text", attrs: { title: "string" === typeof l ? l : void 0 } }, [l]) } }, render: function () { var e, t = arguments[0], n = Object(u["l"])(this), r = n.prefixCls, o = n.size, s = n.type, l = n.showInfo, h = this.configProvider.getPrefixCls, f = h("progress", r), d = this.getProgressStatus(), p = this.renderProcessInfo(f, d), v = void 0; if ("line" === s) { var m = { props: a()({}, n, { prefixCls: f }) }; v = t(w, m, [p]) } else if ("circle" === s || "dashboard" === s) { var g = { props: a()({}, n, { prefixCls: f, progressStatus: d }) }; v = t(W, g, [p]) } var y = c()(f, (e = {}, i()(e, f + "-" + ("dashboard" === s ? "circle" : s), !0), i()(e, f + "-status-" + d, !0), i()(e, f + "-show-info", l), i()(e, f + "-" + o, o), e)), b = { on: Object(u["k"])(this), class: y }; return t("div", b, [v]) } }, J = n("db14"); X.install = function (e) { e.use(J["a"]), e.component(X.name, X) }; t["a"] = X }, f2ef: function (e, t, n) { "use strict"; n("b2a3"), n("04a9"), n("1efe") }, f3c1: function (e, t) { var n = 800, r = 16, i = Date.now; function o(e) { var t = 0, o = 0; return function () { var a = i(), s = r - (a - o); if (o = a, s > 0) { if (++t >= n) return arguments[0] } else t = 0; return e.apply(void 0, arguments) } } e.exports = o }, f3cb: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.colorConfig = void 0; var r = ["#37a2da", "#32c5e9", "#67e0e3", "#9fe6b8", "#ffdb5c", "#ff9f7f", "#fb7293", "#e062ae", "#e690d1", "#e7bcf3", "#9d96f5", "#8378ea", "#96bfff"]; t.colorConfig = r }, f4d6: function (e, t, n) { var r = n("ffd6"), i = 1 / 0; function o(e) { if ("string" == typeof e || r(e)) return e; var t = e + ""; return "0" == t && 1 / e == -i ? "-0" : t } e.exports = o }, f54f: function (e, t, n) { "use strict"; var r = n("4d91"), i = r["a"].oneOf(["hover", "focus", "click", "contextmenu"]); t["a"] = function () { return { trigger: r["a"].oneOfType([i, r["a"].arrayOf(i)]).def("hover"), visible: r["a"].bool, defaultVisible: r["a"].bool, placement: r["a"].oneOf(["top", "left", "right", "bottom", "topLeft", "topRight", "bottomLeft", "bottomRight", "leftTop", "leftBottom", "rightTop", "rightBottom"]).def("top"), transitionName: r["a"].string.def("zoom-big-fast"), overlayStyle: r["a"].object.def((function () { return {} })), overlayClassName: r["a"].string, prefixCls: r["a"].string, mouseEnterDelay: r["a"].number.def(.1), mouseLeaveDelay: r["a"].number.def(.1), getPopupContainer: r["a"].func, arrowPointAtCenter: r["a"].bool.def(!1), autoAdjustOverflow: r["a"].oneOfType([r["a"].bool, r["a"].object]).def(!0), destroyTooltipOnHide: r["a"].bool.def(!1), align: r["a"].object.def((function () { return {} })), builtinPlacements: r["a"].object } } }, f5b2: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("6547").codeAt; r({ target: "String", proto: !0 }, { codePointAt: function (e) { return i(this, e) } }) }, f5df: function (e, t, n) { var r = n("00ee"), i = n("c6b6"), o = n("b622"), a = o("toStringTag"), s = "Arguments" == i(function () { return arguments }()), c = function (e, t) { try { return e[t] } catch (n) { } }; e.exports = r ? i : function (e) { var t, n, r; return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof (n = c(t = Object(e), a)) ? n : s ? i(t) : "Object" == (r = i(t)) && "function" == typeof t.callee ? "Arguments" : r } }, f608: function (e, t, n) { var r = n("6747"), i = n("ffd6"), o = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, a = /^\w*$/; function s(e, t) { if (r(e)) return !1; var n = typeof e; return !("number" != n && "symbol" != n && "boolean" != n && null != e && !i(e)) || (a.test(e) || !o.test(e) || null != t && e in Object(t)) } e.exports = s }, f614: function (e, t, n) { }, f64c: function (e, t, n) { "use strict"; var r = n("41b2"), i = n.n(r), o = n("2fcd"), a = n("0c63"), s = 3, c = void 0, l = void 0, u = 1, h = "ant-message", f = "move-up", d = function () { return document.body }, p = void 0; function v(e) { l ? e(l) : o["a"].newInstance({ prefixCls: h, transitionName: f, style: { top: c }, getContainer: d, maxCount: p }, (function (t) { l ? e(l) : (l = t, e(t)) })) } function m(e) { var t = void 0 !== e.duration ? e.duration : s, n = { info: "info-circle", success: "check-circle", error: "close-circle", warning: "exclamation-circle", loading: "loading" }[e.type], r = e.key || u++, i = new Promise((function (i) { var o = function () { return "function" === typeof e.onClose && e.onClose(), i(!0) }; v((function (i) { i.notice({ key: r, duration: t, style: {}, content: function (t) { var r = t(a["a"], { attrs: { type: n, theme: "loading" === n ? "outlined" : "filled" } }), i = n ? r : ""; return t("div", { class: h + "-custom-content" + (e.type ? " " + h + "-" + e.type : "") }, [e.icon ? "function" === typeof e.icon ? e.icon(t) : e.icon : i, t("span", ["function" === typeof e.content ? e.content(t) : e.content])]) }, onClose: o }) })) })), o = function () { l && l.removeNotice(r) }; return o.then = function (e, t) { return i.then(e, t) }, o.promise = i, o } function g(e) { return "[object Object]" === Object.prototype.toString.call(e) && !!e.content } var y = { open: m, config: function (e) { void 0 !== e.top && (c = e.top, l = null), void 0 !== e.duration && (s = e.duration), void 0 !== e.prefixCls && (h = e.prefixCls), void 0 !== e.getContainer && (d = e.getContainer), void 0 !== e.transitionName && (f = e.transitionName, l = null), void 0 !== e.maxCount && (p = e.maxCount, l = null) }, destroy: function () { l && (l.destroy(), l = null) } };["success", "info", "warning", "error", "loading"].forEach((function (e) { y[e] = function (t, n, r) { return g(t) ? y.open(i()({}, t, { type: e })) : ("function" === typeof n && (r = n, n = void 0), y.open({ content: t, duration: n, type: e, onClose: r })) } })), y.warn = y.warning, t["a"] = y }, f664: function (e, t, n) { var r = n("23e7"), i = n("be8e"); r({ target: "Math", stat: !0 }, { fround: i }) }, f6c0: function (e, t, n) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var r = n("c4b2"), i = h(r), o = n("882a"), a = h(o), s = n("5669"), c = h(s), l = n("9a94"), u = h(l); function h(e) { return e && e.__esModule ? e : { default: e } } t["default"] = { locale: "zh-cn", Pagination: i["default"], DatePicker: a["default"], TimePicker: c["default"], Calendar: u["default"], global: { placeholder: "璇烽�夋嫨" }, Table: { filterTitle: "绛涢��", filterConfirm: "纭畾", filterReset: "閲嶇疆", selectAll: "鍏ㄩ�夊綋椤�", selectInvert: "鍙嶉�夊綋椤�", sortTitle: "鎺掑簭", expand: "灞曞紑琛�", collapse: "鍏抽棴琛�" }, Modal: { okText: "纭畾", cancelText: "鍙栨秷", justOkText: "鐭ラ亾浜�" }, Popconfirm: { cancelText: "鍙栨秷", okText: "纭畾" }, Transfer: { searchPlaceholder: "璇疯緭鍏ユ悳绱㈠唴瀹�", itemUnit: "椤�", itemsUnit: "椤�" }, Upload: { uploading: "鏂囦欢涓婁紶涓�", removeFile: "鍒犻櫎鏂囦欢", uploadError: "涓婁紶閿欒", previewFile: "棰勮鏂囦欢", downloadFile: "涓嬭浇鏂囦欢" }, Empty: { description: "鏆傛棤鏁版嵁" }, Icon: { icon: "鍥炬爣" }, Text: { edit: "缂栬緫", copy: "澶嶅埗", copied: "澶嶅埗鎴愬姛", expand: "灞曞紑" }, PageHeader: { back: "杩斿洖" } } }, f6d6: function (e, t, n) { var r = n("23e7"), i = n("23cb"), o = String.fromCharCode, a = String.fromCodePoint, s = !!a && 1 != a.length; r({ target: "String", stat: !0, forced: s }, { fromCodePoint: function (e) { var t, n = [], r = arguments.length, a = 0; while (r > a) { if (t = +arguments[a++], i(t, 1114111) !== t) throw RangeError(t + " is not a valid code point"); n.push(t < 65536 ? o(t) : o(55296 + ((t -= 65536) >> 10), t % 1024 + 56320)) } return n.join("") } }) }, f748: function (e, t) { e.exports = Math.sign || function (e) { return 0 == (e = +e) || e != e ? e : e < 0 ? -1 : 1 } }, f772: function (e, t, n) { var r = n("5692"), i = n("90e3"), o = r("keys"); e.exports = function (e) { return o[e] || (o[e] = i(e)) } }, f785: function (e, t, n) { var r = n("2626"); r("Array") }, f893: function (e, t, n) { e.exports = { default: n("8119"), __esModule: !0 } }, f8af: function (e, t, n) { var r = n("2474"); function i(e) { var t = new e.constructor(e.byteLength); return new r(t).set(new r(e)), t } e.exports = i }, f8cd: function (e, t, n) { var r = n("a691"); e.exports = function (e) { var t = r(e); if (t < 0) throw RangeError("The argument can't be less than 0"); return t } }, f8d5: function (e, t, n) { "use strict"; t["a"] = { today: "Today", now: "Now", backToToday: "Back to today", ok: "Ok", clear: "Clear", month: "Month", year: "Year", timeSelect: "select time", dateSelect: "select date", weekSelect: "Choose a week", monthSelect: "Choose a month", yearSelect: "Choose a year", decadeSelect: "Choose a decade", yearFormat: "YYYY", dateFormat: "M/D/YYYY", dayFormat: "D", dateTimeFormat: "M/D/YYYY HH:mm:ss", monthBeforeYear: !0, previousMonth: "Previous month (PageUp)", nextMonth: "Next month (PageDown)", previousYear: "Last year (Control + left)", nextYear: "Next year (Control + right)", previousDecade: "Last decade", nextDecade: "Next decade", previousCentury: "Last century", nextCentury: "Next century" } }, f909: function (e, t, n) { var r = n("7e64"), i = n("b760"), o = n("72af"), a = n("4f50"), s = n("1a8c"), c = n("9934"), l = n("8adb"); function u(e, t, n, h, f) { e !== t && o(t, (function (o, c) { if (f || (f = new r), s(o)) a(e, t, c, n, u, h, f); else { var d = h ? h(l(e, c), o, c + "", e, t, f) : void 0; void 0 === d && (d = o), i(e, c, d) } }), c) } e.exports = u }, f933: function (e, t, n) { "use strict"; var r = n("6042"), i = n.n(r), o = n("41b2"), a = n.n(o), s = n("7b05"), c = n("8e8e"), l = n.n(c), u = n("4d91"), h = n("8496"), f = { adjustX: 1, adjustY: 1 }, d = [0, 0], p = { left: { points: ["cr", "cl"], overflow: f, offset: [-4, 0], targetOffset: d }, right: { points: ["cl", "cr"], overflow: f, offset: [4, 0], targetOffset: d }, top: { points: ["bc", "tc"], overflow: f, offset: [0, -4], targetOffset: d }, bottom: { points: ["tc", "bc"], overflow: f, offset: [0, 4], targetOffset: d }, topLeft: { points: ["bl", "tl"], overflow: f, offset: [0, -4], targetOffset: d }, leftTop: { points: ["tr", "tl"], overflow: f, offset: [-4, 0], targetOffset: d }, topRight: { points: ["br", "tr"], overflow: f, offset: [0, -4], targetOffset: d }, rightTop: { points: ["tl", "tr"], overflow: f, offset: [4, 0], targetOffset: d }, bottomRight: { points: ["tr", "br"], overflow: f, offset: [0, 4], targetOffset: d }, rightBottom: { points: ["bl", "br"], overflow: f, offset: [4, 0], targetOffset: d }, bottomLeft: { points: ["tl", "bl"], overflow: f, offset: [0, 4], targetOffset: d }, leftBottom: { points: ["br", "bl"], overflow: f, offset: [-4, 0], targetOffset: d } }, v = { props: { prefixCls: u["a"].string, overlay: u["a"].any, trigger: u["a"].any }, updated: function () { var e = this.trigger; e && e.forcePopupAlign() }, render: function () { var e = arguments[0], t = this.overlay, n = this.prefixCls; return e("div", { class: n + "-inner", attrs: { role: "tooltip" } }, ["function" === typeof t ? t() : t]) } }, m = n("daa3"); function g() { } var y = { props: { trigger: u["a"].any.def(["hover"]), defaultVisible: u["a"].bool, visible: u["a"].bool, placement: u["a"].string.def("right"), transitionName: u["a"].oneOfType([u["a"].string, u["a"].object]), animation: u["a"].any, afterVisibleChange: u["a"].func.def((function () { })), overlay: u["a"].any, overlayStyle: u["a"].object, overlayClassName: u["a"].string, prefixCls: u["a"].string.def("rc-tooltip"), mouseEnterDelay: u["a"].number.def(0), mouseLeaveDelay: u["a"].number.def(.1), getTooltipContainer: u["a"].func, destroyTooltipOnHide: u["a"].bool.def(!1), align: u["a"].object.def((function () { return {} })), arrowContent: u["a"].any.def(null), tipId: u["a"].string, builtinPlacements: u["a"].object }, methods: { getPopupElement: function () { var e = this.$createElement, t = this.$props, n = t.prefixCls, r = t.tipId; return [e("div", { class: n + "-arrow", key: "arrow" }, [Object(m["g"])(this, "arrowContent")]), e(v, { key: "content", attrs: { trigger: this.$refs.trigger, prefixCls: n, id: r, overlay: Object(m["g"])(this, "overlay") } })] }, getPopupDomNode: function () { return this.$refs.trigger.getPopupDomNode() } }, render: function (e) { var t = Object(m["l"])(this), n = t.overlayClassName, r = t.trigger, i = t.mouseEnterDelay, o = t.mouseLeaveDelay, s = t.overlayStyle, c = t.prefixCls, u = t.afterVisibleChange, f = t.transitionName, d = t.animation, v = t.placement, y = t.align, b = t.destroyTooltipOnHide, x = t.defaultVisible, w = t.getTooltipContainer, _ = l()(t, ["overlayClassName", "trigger", "mouseEnterDelay", "mouseLeaveDelay", "overlayStyle", "prefixCls", "afterVisibleChange", "transitionName", "animation", "placement", "align", "destroyTooltipOnHide", "defaultVisible", "getTooltipContainer"]), C = a()({}, _); Object(m["s"])(this, "visible") && (C.popupVisible = this.$props.visible); var M = Object(m["k"])(this), O = { props: a()({ popupClassName: n, prefixCls: c, action: r, builtinPlacements: p, popupPlacement: v, popupAlign: y, getPopupContainer: w, afterPopupVisibleChange: u, popupTransitionName: f, popupAnimation: d, defaultPopupVisible: x, destroyPopupOnHide: b, mouseLeaveDelay: o, popupStyle: s, mouseEnterDelay: i }, C), on: a()({}, M, { popupVisibleChange: M.visibleChange || g, popupAlign: M.popupAlign || g }), ref: "trigger" }; return e(h["a"], O, [e("template", { slot: "popup" }, [this.getPopupElement(e)]), this.$slots["default"]]) } }, b = y, x = { adjustX: 1, adjustY: 1 }, w = { adjustX: 0, adjustY: 0 }, _ = [0, 0]; function C(e) { return "boolean" === typeof e ? e ? x : w : a()({}, w, e) } function M(e) { var t = e.arrowWidth, n = void 0 === t ? 5 : t, r = e.horizontalArrowShift, i = void 0 === r ? 16 : r, o = e.verticalArrowShift, s = void 0 === o ? 12 : o, c = e.autoAdjustOverflow, l = void 0 === c || c, u = { left: { points: ["cr", "cl"], offset: [-4, 0] }, right: { points: ["cl", "cr"], offset: [4, 0] }, top: { points: ["bc", "tc"], offset: [0, -4] }, bottom: { points: ["tc", "bc"], offset: [0, 4] }, topLeft: { points: ["bl", "tc"], offset: [-(i + n), -4] }, leftTop: { points: ["tr", "cl"], offset: [-4, -(s + n)] }, topRight: { points: ["br", "tc"], offset: [i + n, -4] }, rightTop: { points: ["tl", "cr"], offset: [4, -(s + n)] }, bottomRight: { points: ["tr", "bc"], offset: [i + n, 4] }, rightBottom: { points: ["bl", "cr"], offset: [4, s + n] }, bottomLeft: { points: ["tl", "bc"], offset: [-(i + n), 4] }, leftBottom: { points: ["br", "cl"], offset: [-4, s + n] } }; return Object.keys(u).forEach((function (t) { u[t] = e.arrowPointAtCenter ? a()({}, u[t], { overflow: C(l), targetOffset: _ }) : a()({}, p[t], { overflow: C(l) }), u[t].ignoreShake = !0 })), u } var O = n("9cba"), k = n("f54f"), S = function (e, t) { var n = {}, r = a()({}, e); return t.forEach((function (t) { e && t in e && (n[t] = e[t], delete r[t]) })), { picked: n, omitted: r } }, T = Object(k["a"])(), A = { name: "ATooltip", model: { prop: "visible", event: "visibleChange" }, props: a()({}, T, { title: u["a"].any }), inject: { configProvider: { default: function () { return O["a"] } } }, data: function () { return { sVisible: !!this.$props.visible || !!this.$props.defaultVisible } }, watch: { visible: function (e) { this.sVisible = e } }, methods: { onVisibleChange: function (e) { Object(m["s"])(this, "visible") || (this.sVisible = !this.isNoTitle() && e), this.isNoTitle() || this.$emit("visibleChange", e) }, getPopupDomNode: function () { return this.$refs.tooltip.getPopupDomNode() }, getPlacements: function () { var e = this.$props, t = e.builtinPlacements, n = e.arrowPointAtCenter, r = e.autoAdjustOverflow; return t || M({ arrowPointAtCenter: n, verticalArrowShift: 8, autoAdjustOverflow: r }) }, getDisabledCompatibleChildren: function (e) { var t = this.$createElement, n = e.componentOptions && e.componentOptions.Ctor.options || {}; if ((!0 === n.__ANT_BUTTON || !0 === n.__ANT_SWITCH || !0 === n.__ANT_CHECKBOX) && (e.componentOptions.propsData.disabled || "" === e.componentOptions.propsData.disabled) || "button" === e.tag && e.data && e.data.attrs && void 0 !== e.data.attrs.disabled) { var r = S(Object(m["q"])(e), ["position", "left", "right", "top", "bottom", "float", "display", "zIndex"]), i = r.picked, o = r.omitted, c = a()({ display: "inline-block" }, i, { cursor: "not-allowed", width: e.componentOptions.propsData.block ? "100%" : null }), l = a()({}, o, { pointerEvents: "none" }), u = Object(m["f"])(e), h = Object(s["a"])(e, { style: l, class: null }); return t("span", { style: c, class: u }, [h]) } return e }, isNoTitle: function () { var e = Object(m["g"])(this, "title"); return !e && 0 !== e }, getOverlay: function () { var e = Object(m["g"])(this, "title"); return 0 === e ? e : e || "" }, onPopupAlign: function (e, t) { var n = this.getPlacements(), r = Object.keys(n).filter((function (e) { return n[e].points[0] === t.points[0] && n[e].points[1] === t.points[1] }))[0]; if (r) { var i = e.getBoundingClientRect(), o = { top: "50%", left: "50%" }; r.indexOf("top") >= 0 || r.indexOf("Bottom") >= 0 ? o.top = i.height - t.offset[1] + "px" : (r.indexOf("Top") >= 0 || r.indexOf("bottom") >= 0) && (o.top = -t.offset[1] + "px"), r.indexOf("left") >= 0 || r.indexOf("Right") >= 0 ? o.left = i.width - t.offset[0] + "px" : (r.indexOf("right") >= 0 || r.indexOf("Left") >= 0) && (o.left = -t.offset[0] + "px"), e.style.transformOrigin = o.left + " " + o.top } } }, render: function () { var e = arguments[0], t = this.$props, n = this.$data, r = this.$slots, o = t.prefixCls, c = t.openClassName, l = t.getPopupContainer, u = this.configProvider.getPopupContainer, h = this.configProvider.getPrefixCls, f = h("tooltip", o), d = (r["default"] || []).filter((function (e) { return e.tag || "" !== e.text.trim() })); d = 1 === d.length ? d[0] : d; var p = n.sVisible; if (!Object(m["s"])(this, "visible") && this.isNoTitle() && (p = !1), !d) return null; var v = this.getDisabledCompatibleChildren(Object(m["w"])(d) ? d : e("span", [d])), g = i()({}, c || f + "-open", !0), y = { props: a()({}, t, { prefixCls: f, getTooltipContainer: l || u, builtinPlacements: this.getPlacements(), overlay: this.getOverlay(), visible: p }), ref: "tooltip", on: a()({}, Object(m["k"])(this), { visibleChange: this.onVisibleChange, popupAlign: this.onPopupAlign }) }; return e(b, y, [p ? Object(s["a"])(v, { class: g }) : v]) } }, L = n("db14"); A.install = function (e) { e.use(L["a"]), e.component(A.name, A) }; t["a"] = A }, f971: function (e, t, n) { "use strict"; var r = n("92fa"), i = n.n(r), o = n("6042"), a = n.n(o), s = n("8e8e"), c = n.n(s), l = n("41b2"), u = n.n(l), h = n("4d91"), f = n("4d26"), d = n.n(f), p = n("daa3"), v = n("b488"), m = { name: "Checkbox", mixins: [v["a"]], inheritAttrs: !1, model: { prop: "checked", event: "change" }, props: Object(p["t"])({ prefixCls: h["a"].string, name: h["a"].string, id: h["a"].string, type: h["a"].string, defaultChecked: h["a"].oneOfType([h["a"].number, h["a"].bool]), checked: h["a"].oneOfType([h["a"].number, h["a"].bool]), disabled: h["a"].bool, tabIndex: h["a"].oneOfType([h["a"].string, h["a"].number]), readOnly: h["a"].bool, autoFocus: h["a"].bool, value: h["a"].any }, { prefixCls: "rc-checkbox", type: "checkbox", defaultChecked: !1 }), data: function () { var e = Object(p["s"])(this, "checked") ? this.checked : this.defaultChecked; return { sChecked: e } }, watch: { checked: function (e) { this.sChecked = e } }, mounted: function () { var e = this; this.$nextTick((function () { e.autoFocus && e.$refs.input && e.$refs.input.focus() })) }, methods: { focus: function () { this.$refs.input.focus() }, blur: function () { this.$refs.input.blur() }, handleChange: function (e) { var t = Object(p["l"])(this); t.disabled || ("checked" in t || (this.sChecked = e.target.checked), this.$forceUpdate(), e.shiftKey = this.eventShiftKey, this.__emit("change", { target: u()({}, t, { checked: e.target.checked }), stopPropagation: function () { e.stopPropagation() }, preventDefault: function () { e.preventDefault() }, nativeEvent: e }), this.eventShiftKey = !1, "checked" in t && (this.$refs.input.checked = t.checked)) }, onClick: function (e) { this.__emit("click", e), this.eventShiftKey = e.shiftKey } }, render: function () { var e, t = arguments[0], n = Object(p["l"])(this), r = n.prefixCls, o = n.name, s = n.id, l = n.type, h = n.disabled, f = n.readOnly, v = n.tabIndex, m = n.autoFocus, g = n.value, y = c()(n, ["prefixCls", "name", "id", "type", "disabled", "readOnly", "tabIndex", "autoFocus", "value"]), b = Object(p["e"])(this), x = Object.keys(u()({}, y, b)).reduce((function (e, t) { return "aria-" !== t.substr(0, 5) && "data-" !== t.substr(0, 5) && "role" !== t || (e[t] = y[t]), e }), {}), w = this.sChecked, _ = d()(r, (e = {}, a()(e, r + "-checked", w), a()(e, r + "-disabled", h), e)); return t("span", { class: _ }, [t("input", i()([{ attrs: { name: o, id: s, type: l, readOnly: f, disabled: h, tabIndex: v, autoFocus: m }, class: r + "-input", domProps: { checked: !!w, value: g }, ref: "input" }, { attrs: x, on: u()({}, Object(p["k"])(this), { change: this.handleChange, click: this.onClick }) }])), t("span", { class: r + "-inner" })]) } }; t["a"] = m }, f9ce: function (e, t, n) { var r = n("ef5d"), i = n("e3f8"), o = n("f608"), a = n("f4d6"); function s(e) { return o(e) ? r(a(e)) : i(e) } e.exports = s }, fa10: function (e, t, n) { }, fa21: function (e, t, n) { var r = n("7530"), i = n("2dcb"), o = n("eac5"); function a(e) { return "function" != typeof e.constructor || o(e) ? {} : r(i(e)) } e.exports = a }, faa1: function (e, t, n) { "use strict"; var r, i = "object" === typeof Reflect ? Reflect : null, o = i && "function" === typeof i.apply ? i.apply : function (e, t, n) { return Function.prototype.apply.call(e, t, n) }; function a(e) { console && console.warn && console.warn(e) } r = i && "function" === typeof i.ownKeys ? i.ownKeys : Object.getOwnPropertySymbols ? function (e) { return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e)) } : function (e) { return Object.getOwnPropertyNames(e) }; var s = Number.isNaN || function (e) { return e !== e }; function c() { c.init.call(this) } e.exports = c, e.exports.once = x, c.EventEmitter = c, c.prototype._events = void 0, c.prototype._eventsCount = 0, c.prototype._maxListeners = void 0; var l = 10; function u(e) { if ("function" !== typeof e) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e) } function h(e) { return void 0 === e._maxListeners ? c.defaultMaxListeners : e._maxListeners } function f(e, t, n, r) { var i, o, s; if (u(n), o = e._events, void 0 === o ? (o = e._events = Object.create(null), e._eventsCount = 0) : (void 0 !== o.newListener && (e.emit("newListener", t, n.listener ? n.listener : n), o = e._events), s = o[t]), void 0 === s) s = o[t] = n, ++e._eventsCount; else if ("function" === typeof s ? s = o[t] = r ? [n, s] : [s, n] : r ? s.unshift(n) : s.push(n), i = h(e), i > 0 && s.length > i && !s.warned) { s.warned = !0; var c = new Error("Possible EventEmitter memory leak detected. " + s.length + " " + String(t) + " listeners added. Use emitter.setMaxListeners() to increase limit"); c.name = "MaxListenersExceededWarning", c.emitter = e, c.type = t, c.count = s.length, a(c) } return e } function d() { if (!this.fired) return this.target.removeListener(this.type, this.wrapFn), this.fired = !0, 0 === arguments.length ? this.listener.call(this.target) : this.listener.apply(this.target, arguments) } function p(e, t, n) { var r = { fired: !1, wrapFn: void 0, target: e, type: t, listener: n }, i = d.bind(r); return i.listener = n, r.wrapFn = i, i } function v(e, t, n) { var r = e._events; if (void 0 === r) return []; var i = r[t]; return void 0 === i ? [] : "function" === typeof i ? n ? [i.listener || i] : [i] : n ? b(i) : g(i, i.length) } function m(e) { var t = this._events; if (void 0 !== t) { var n = t[e]; if ("function" === typeof n) return 1; if (void 0 !== n) return n.length } return 0 } function g(e, t) { for (var n = new Array(t), r = 0; r < t; ++r)n[r] = e[r]; return n } function y(e, t) { for (; t + 1 < e.length; t++)e[t] = e[t + 1]; e.pop() } function b(e) { for (var t = new Array(e.length), n = 0; n < t.length; ++n)t[n] = e[n].listener || e[n]; return t } function x(e, t) { return new Promise((function (n, r) { function i(n) { e.removeListener(t, o), r(n) } function o() { "function" === typeof e.removeListener && e.removeListener("error", i), n([].slice.call(arguments)) } _(e, t, o, { once: !0 }), "error" !== t && w(e, i, { once: !0 }) })) } function w(e, t, n) { "function" === typeof e.on && _(e, "error", t, n) } function _(e, t, n, r) { if ("function" === typeof e.on) r.once ? e.once(t, n) : e.on(t, n); else { if ("function" !== typeof e.addEventListener) throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof e); e.addEventListener(t, (function i(o) { r.once && e.removeEventListener(t, i), n(o) })) } } Object.defineProperty(c, "defaultMaxListeners", { enumerable: !0, get: function () { return l }, set: function (e) { if ("number" !== typeof e || e < 0 || s(e)) throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + e + "."); l = e } }), c.init = function () { void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = Object.create(null), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0 }, c.prototype.setMaxListeners = function (e) { if ("number" !== typeof e || e < 0 || s(e)) throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + e + "."); return this._maxListeners = e, this }, c.prototype.getMaxListeners = function () { return h(this) }, c.prototype.emit = function (e) { for (var t = [], n = 1; n < arguments.length; n++)t.push(arguments[n]); var r = "error" === e, i = this._events; if (void 0 !== i) r = r && void 0 === i.error; else if (!r) return !1; if (r) { var a; if (t.length > 0 && (a = t[0]), a instanceof Error) throw a; var s = new Error("Unhandled error." + (a ? " (" + a.message + ")" : "")); throw s.context = a, s } var c = i[e]; if (void 0 === c) return !1; if ("function" === typeof c) o(c, this, t); else { var l = c.length, u = g(c, l); for (n = 0; n < l; ++n)o(u[n], this, t) } return !0 }, c.prototype.addListener = function (e, t) { return f(this, e, t, !1) }, c.prototype.on = c.prototype.addListener, c.prototype.prependListener = function (e, t) { return f(this, e, t, !0) }, c.prototype.once = function (e, t) { return u(t), this.on(e, p(this, e, t)), this }, c.prototype.prependOnceListener = function (e, t) { return u(t), this.prependListener(e, p(this, e, t)), this }, c.prototype.removeListener = function (e, t) { var n, r, i, o, a; if (u(t), r = this._events, void 0 === r) return this; if (n = r[e], void 0 === n) return this; if (n === t || n.listener === t) 0 === --this._eventsCount ? this._events = Object.create(null) : (delete r[e], r.removeListener && this.emit("removeListener", e, n.listener || t)); else if ("function" !== typeof n) { for (i = -1, o = n.length - 1; o >= 0; o--)if (n[o] === t || n[o].listener === t) { a = n[o].listener, i = o; break } if (i < 0) return this; 0 === i ? n.shift() : y(n, i), 1 === n.length && (r[e] = n[0]), void 0 !== r.removeListener && this.emit("removeListener", e, a || t) } return this }, c.prototype.off = c.prototype.removeListener, c.prototype.removeAllListeners = function (e) { var t, n, r; if (n = this._events, void 0 === n) return this; if (void 0 === n.removeListener) return 0 === arguments.length ? (this._events = Object.create(null), this._eventsCount = 0) : void 0 !== n[e] && (0 === --this._eventsCount ? this._events = Object.create(null) : delete n[e]), this; if (0 === arguments.length) { var i, o = Object.keys(n); for (r = 0; r < o.length; ++r)i = o[r], "removeListener" !== i && this.removeAllListeners(i); return this.removeAllListeners("removeListener"), this._events = Object.create(null), this._eventsCount = 0, this } if (t = n[e], "function" === typeof t) this.removeListener(e, t); else if (void 0 !== t) for (r = t.length - 1; r >= 0; r--)this.removeListener(e, t[r]); return this }, c.prototype.listeners = function (e) { return v(this, e, !0) }, c.prototype.rawListeners = function (e) { return v(this, e, !1) }, c.listenerCount = function (e, t) { return "function" === typeof e.listenerCount ? e.listenerCount(t) : m.call(e, t) }, c.prototype.listenerCount = m, c.prototype.eventNames = function () { return this._eventsCount > 0 ? r(this._events) : [] } }, faf5: function (e, t, n) { e.exports = !n("0bad") && !n("4b8b")((function () { return 7 != Object.defineProperty(n("05f5")("div"), "a", { get: function () { return 7 } }).a })) }, fb2c: function (e, t, n) { var r = n("74e8"); r("Uint32", (function (e) { return function (t, n, r) { return e(this, t, n, r) } })) }, fb6a: function (e, t, n) { "use strict"; var r = n("23e7"), i = n("861d"), o = n("e8b5"), a = n("23cb"), s = n("50c4"), c = n("fc6a"), l = n("8418"), u = n("b622"), h = n("1dde"), f = h("slice"), d = u("species"), p = [].slice, v = Math.max; r({ target: "Array", proto: !0, forced: !f }, { slice: function (e, t) { var n, r, u, h = c(this), f = s(h.length), m = a(e, f), g = a(void 0 === t ? f : t, f); if (o(h) && (n = h.constructor, "function" != typeof n || n !== Array && !o(n.prototype) ? i(n) && (n = n[d], null === n && (n = void 0)) : n = void 0, n === Array || void 0 === n)) return p.call(h, m, g); for (r = new (void 0 === n ? Array : n)(v(g - m, 0)), u = 0; m < g; m++, u++)m in h && l(r, u, h[m]); return r.length = u, r } }) }, fba5: function (e, t, n) { var r = n("cb5a"); function i(e) { return r(this.__data__, e) > -1 } e.exports = i }, fbd6: function (e, t, n) { "use strict"; n("b2a3"), n("81ff") }, fbd8: function (e, t, n) { "use strict"; n("b2a3"), n("325f"), n("9a33") }, fc25: function (e, t, n) { "use strict"; var r = n("92fa"), i = n.n(r), o = n("1098"), a = n.n(o), s = n("6042"), c = n.n(s), l = n("41b2"), u = n.n(l), h = n("4d91"), f = n("9cba"), d = n("daa3"), p = n("e5cd"), v = { functional: !0, PRESENTED_IMAGE_DEFAULT: !0, render: function () { var e = arguments[0]; return e("svg", { attrs: { width: "184", height: "152", viewBox: "0 0 184 152", xmlns: "http://www.w3.org/2000/svg" } }, [e("g", { attrs: { fill: "none", fillRule: "evenodd" } }, [e("g", { attrs: { transform: "translate(24 31.67)" } }, [e("ellipse", { attrs: { fillOpacity: ".8", fill: "#F5F5F7", cx: "67.797", cy: "106.89", rx: "67.797", ry: "12.668" } }), e("path", { attrs: { d: "M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z", fill: "#AEB8C2" } }), e("path", { attrs: { d: "M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z", fill: "url(#linearGradient-1)", transform: "translate(13.56)" } }), e("path", { attrs: { d: "M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z", fill: "#F5F5F7" } }), e("path", { attrs: { d: "M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z", fill: "#DCE0E6" } })]), e("path", { attrs: { d: "M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z", fill: "#DCE0E6" } }), e("g", { attrs: { transform: "translate(149.65 15.383)", fill: "#FFF" } }, [e("ellipse", { attrs: { cx: "20.654", cy: "3.167", rx: "2.849", ry: "2.815" } }), e("path", { attrs: { d: "M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z" } })])])]) } }, m = { functional: !0, PRESENTED_IMAGE_SIMPLE: !0, render: function () { var e = arguments[0]; return e("svg", { attrs: { width: "64", height: "41", viewBox: "0 0 64 41", xmlns: "http://www.w3.org/2000/svg" } }, [e("g", { attrs: { transform: "translate(0 1)", fill: "none", fillRule: "evenodd" } }, [e("ellipse", { attrs: { fill: "#F5F5F5", cx: "32", cy: "33", rx: "32", ry: "7" } }), e("g", { attrs: { fillRule: "nonzero", stroke: "#D9D9D9" } }, [e("path", { attrs: { d: "M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z" } }), e("path", { attrs: { d: "M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z", fill: "#FAFAFA" } })])])]) } }, g = n("db14"), y = function () { return { prefixCls: h["a"].string, image: h["a"].any, description: h["a"].any, imageStyle: h["a"].object } }, b = { name: "AEmpty", props: u()({}, y()), methods: { renderEmpty: function (e) { var t = this.$createElement, n = this.$props, r = n.prefixCls, o = n.imageStyle, s = f["a"].getPrefixCls("empty", r), l = Object(d["g"])(this, "image") || t(v), u = Object(d["g"])(this, "description"), h = "undefined" !== typeof u ? u : e.description, p = "string" === typeof h ? h : "empty", m = c()({}, s, !0), g = null; if ("string" === typeof l) g = t("img", { attrs: { alt: p, src: l } }); else if ("object" === ("undefined" === typeof l ? "undefined" : a()(l)) && l.PRESENTED_IMAGE_SIMPLE) { var y = l; g = t(y), m[s + "-normal"] = !0 } else g = l; return t("div", i()([{ class: m }, { on: Object(d["k"])(this) }]), [t("div", { class: s + "-image", style: o }, [g]), h && t("p", { class: s + "-description" }, [h]), this.$slots["default"] && t("div", { class: s + "-footer" }, [this.$slots["default"]])]) } }, render: function () { var e = arguments[0]; return e(p["a"], { attrs: { componentName: "Empty" }, scopedSlots: { default: this.renderEmpty } }) } }; b.PRESENTED_IMAGE_DEFAULT = v, b.PRESENTED_IMAGE_SIMPLE = m, b.install = function (e) { e.use(g["a"]), e.component(b.name, b) }; t["a"] = b }, fc5e: function (e, t) { var n = Math.ceil, r = Math.floor; e.exports = function (e) { return isNaN(e = +e) ? 0 : (e > 0 ? r : n)(e) } }, fc6a: function (e, t, n) { var r = n("44ad"), i = n("1d80"); e.exports = function (e) { return r(i(e)) } }, fcd4: function (e, t, n) { t.f = n("cc15") }, fce3: function (e, t, n) { var r = n("d039"), i = n("da84"), o = i.RegExp; e.exports = r((function () { var e = o(".", "s"); return !(e.dotAll && e.exec("\n") && "s" === e.flags) })) }, fd87: function (e, t, n) { var r = n("74e8"); r("Int8", (function (e) { return function (t, n, r) { return e(this, t, n, r) } })) }, fdbc: function (e, t) { e.exports = { CSSRuleList: 0, CSSStyleDeclaration: 0, CSSValueList: 0, ClientRectList: 0, DOMRectList: 0, DOMStringList: 0, DOMTokenList: 1, DataTransferItemList: 0, FileList: 0, HTMLAllCollection: 0, HTMLCollection: 0, HTMLFormElement: 0, HTMLSelectElement: 0, MediaList: 0, MimeTypeArray: 0, NamedNodeMap: 0, NodeList: 1, PaintRequestList: 0, Plugin: 0, PluginArray: 0, SVGLengthList: 0, SVGNumberList: 0, SVGPathSegList: 0, SVGPointList: 0, SVGStringList: 0, SVGTransformList: 0, SourceBufferList: 0, StyleSheetList: 0, TextTrackCueList: 0, TextTrackList: 0, TouchList: 0 } }, fdbf: function (e, t, n) { var r = n("4930"); e.exports = r && !Symbol.sham && "symbol" == typeof Symbol.iterator }, fe2b: function (e, t, n) { "use strict"; n.d(t, "a", (function () { return A })); var r = n("92fa"), i = n.n(r), o = n("9b57"), a = n.n(o), s = n("8e8e"), c = n.n(s), l = n("41b2"), u = n.n(l), h = n("6042"), f = n.n(h), d = n("1098"), p = n.n(d), v = n("4d91"), m = n("4d26"), g = n.n(m), y = n("0464"), b = n("9cba"), x = n("8592"), w = n("5091"), _ = n("de1b"), C = n("290c"), M = n("a6b6"), O = n("daa3"), k = n("7b05"), S = n("db14"), T = ["", 1, 2, 3, 4, 6, 8, 12, 24], A = { gutter: v["a"].number, column: v["a"].oneOf(T), xs: v["a"].oneOf(T), sm: v["a"].oneOf(T), md: v["a"].oneOf(T), lg: v["a"].oneOf(T), xl: v["a"].oneOf(T), xxl: v["a"].oneOf(T) }, L = ["small", "default", "large"], j = function () { return { bordered: v["a"].bool, dataSource: v["a"].array, extra: v["a"].any, grid: v["a"].shape(A).loose, itemLayout: v["a"].string, loading: v["a"].oneOfType([v["a"].bool, v["a"].object]), loadMore: v["a"].any, pagination: v["a"].oneOfType([v["a"].shape(Object(w["a"])()).loose, v["a"].bool]), prefixCls: v["a"].string, rowKey: v["a"].any, renderItem: v["a"].any, size: v["a"].oneOf(L), split: v["a"].bool, header: v["a"].any, footer: v["a"].any, locale: v["a"].object } }, z = { Item: M["a"], name: "AList", props: Object(O["t"])(j(), { dataSource: [], bordered: !1, split: !0, loading: !1, pagination: !1 }), provide: function () { return { listContext: this } }, inject: { configProvider: { default: function () { return b["a"] } } }, data: function () { var e = this; this.keys = [], this.defaultPaginationProps = { current: 1, pageSize: 10, onChange: function (t, n) { var r = e.pagination; e.paginationCurrent = t, r && r.onChange && r.onChange(t, n) }, total: 0 }, this.onPaginationChange = this.triggerPaginationEvent("onChange"), this.onPaginationShowSizeChange = this.triggerPaginationEvent("onShowSizeChange"); var t = this.$props.pagination, n = t && "object" === ("undefined" === typeof t ? "undefined" : p()(t)) ? t : {}; return { paginationCurrent: n.defaultCurrent || 1, paginationSize: n.defaultPageSize || 10 } }, methods: { triggerPaginationEvent: function (e) { var t = this; return function (n, r) { var i = t.$props.pagination; t.paginationCurrent = n, t.paginationSize = r, i && i[e] && i[e](n, r) } }, renderItem2: function (e, t) { var n = this.$scopedSlots, r = this.rowKey, i = this.renderItem || n.renderItem; if (!i) return null; var o = void 0; return o = "function" === typeof r ? r(e) : "string" === typeof r ? e[r] : e.key, o || (o = "list-item-" + t), this.keys[t] = o, i(e, t) }, isSomethingAfterLastItem: function () { var e = this.pagination, t = Object(O["g"])(this, "loadMore"), n = Object(O["g"])(this, "footer"); return !!(t || e || n) }, renderEmpty: function (e, t) { var n = this.$createElement, r = this.locale; return n("div", { class: e + "-empty-text" }, [r && r.emptyText || t(n, "List")]) } }, render: function () { var e, t = this, n = arguments[0], r = this.prefixCls, o = this.bordered, s = this.split, l = this.itemLayout, h = this.pagination, d = this.grid, p = this.dataSource, v = void 0 === p ? [] : p, m = this.size, b = this.loading, w = this.$slots, M = this.paginationCurrent, S = this.paginationSize, T = this.configProvider.getPrefixCls, A = T("list", r), L = Object(O["g"])(this, "loadMore"), j = Object(O["g"])(this, "footer"), z = Object(O["g"])(this, "header"), E = Object(O["c"])(w["default"] || []), P = b; "boolean" === typeof P && (P = { spinning: P }); var D = P && P.spinning, H = ""; switch (m) { case "large": H = "lg"; break; case "small": H = "sm"; break; default: break }var V = g()(A, (e = {}, f()(e, A + "-vertical", "vertical" === l), f()(e, A + "-" + H, H), f()(e, A + "-split", s), f()(e, A + "-bordered", o), f()(e, A + "-loading", D), f()(e, A + "-grid", d), f()(e, A + "-something-after-last-item", this.isSomethingAfterLastItem()), e)), I = u()({}, this.defaultPaginationProps, { total: v.length, current: M, pageSize: S }, h || {}), N = Math.ceil(I.total / I.pageSize); I.current > N && (I.current = N); var R = I["class"], F = I.style, Y = c()(I, ["class", "style"]), $ = h ? n("div", { class: A + "-pagination" }, [n(_["a"], { props: Object(y["a"])(Y, ["onChange"]), class: R, style: F, on: { change: this.onPaginationChange, showSizeChange: this.onPaginationShowSizeChange } })]) : null, B = [].concat(a()(v)); h && v.length > (I.current - 1) * I.pageSize && (B = [].concat(a()(v)).splice((I.current - 1) * I.pageSize, I.pageSize)); var W = void 0; if (W = D && n("div", { style: { minHeight: 53 } }), B.length > 0) { var q = B.map((function (e, n) { return t.renderItem2(e, n) })), U = q.map((function (e, n) { return Object(k["a"])(e, { key: t.keys[n] }) })); W = d ? n(C["a"], { attrs: { gutter: d.gutter } }, [U]) : n("ul", { class: A + "-items" }, [U]) } else if (!E.length && !D) { var K = this.configProvider.renderEmpty; W = this.renderEmpty(A, K) } var G = I.position || "bottom"; return n("div", i()([{ class: V }, { on: Object(O["k"])(this) }]), [("top" === G || "both" === G) && $, z && n("div", { class: A + "-header" }, [z]), n(x["a"], { props: P }, [W, E]), j && n("div", { class: A + "-footer" }, [j]), L || ("bottom" === G || "both" === G) && $]) }, install: function (e) { e.use(S["a"]), e.component(z.name, z), e.component(z.Item.name, z.Item), e.component(z.Item.Meta.name, z.Item.Meta) } }; t["b"] = z }, fe7b: function (e, t, n) { }, fea9: function (e, t, n) { var r = n("da84"); e.exports = r.Promise }, fed5: function (e, t) { t.f = Object.getOwnPropertySymbols }, ff9c: function (e, t, n) { var r = n("23e7"), i = n("8eb5"), o = Math.cosh, a = Math.abs, s = Math.E; r({ target: "Math", stat: !0, forced: !o || o(710) === 1 / 0 }, { cosh: function (e) { var t = i(a(e) - 1) + 1; return (t + 1 / (t * s * s)) * (s / 2) } }) }, ffd6: function (e, t, n) { var r = n("3729"), i = n("1310"), o = "[object Symbol]"; function a(e) { return "symbol" == typeof e || i(e) && r(e) == o } e.exports = a }
+}]);
+this.__theme_COLOR_cfg = { "url": "css/theme-colors-ef7df4e0.css", "colors": ["#fa541c", "#fb6533", "#fb7649", "#fc8760", "#fc9877", "#fdaa8e", "#fdbba4", "#feccbb", "#feddd2", "#fff2e8", "#ffd8bf", "#ffbb96", "#ff9c6e", "#ff7a45", "#fa541c", "#d4380d", "#ad2102", "#871400", "#610b00", "250,84,28"] };
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-vendors.c9111d8d.js.gz b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-vendors.c9111d8d.js.gz
new file mode 100644
index 0000000..9e03ff0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-vendors.c9111d8d.js.gz
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/fail.c1daacfd.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/fail.c1daacfd.js
new file mode 100644
index 0000000..3f4ac73
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/fail.c1daacfd.js
@@ -0,0 +1,26 @@
+(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["fail"], {
+    "00bb": function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("38ba")) })(0, (function (e) { return e.mode.CFB = function () { var t = e.lib.BlockCipherMode.extend(); function a(e, t, a, r) { var s, i = this._iv; i ? (s = i.slice(0), this._iv = void 0) : s = this._prevBlock, r.encryptBlock(s, 0); for (var n = 0; n < a; n++)e[t + n] ^= s[n] } return t.Encryptor = t.extend({ processBlock: function (e, t) { var r = this._cipher, s = r.blockSize; a.call(this, e, t, s, r), this._prevBlock = e.slice(t, t + s) } }), t.Decryptor = t.extend({ processBlock: function (e, t) { var r = this._cipher, s = r.blockSize, i = e.slice(t, t + s); a.call(this, e, t, s, r), this._prevBlock = i } }), t }(), e.mode.CFB })) }, "0194": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e.hasPerm("sysTenant:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍏徃鍚嶇О" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ョ鎴峰悕绉�" }, model: { value: e.queryParam.name, callback: function (t) { e.$set(e.queryParam, "name", t) }, expression: "queryParam.name" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")])], 1)], 1)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "host", fn: function (t) { return a("span", {}, [a("a-tag", { attrs: { color: "geekblue" } }, [e._v(" " + e._s(t) + " ")])], 1) } }, { key: "action", fn: function (t, r) { return a("span", {}, [e.hasPerm("sysTenant:edit") ? a("a", { on: { click: function (t) { return e.$refs.editForm.edit(r) } } }, [e._v("缂栬緫")]) : e._e(), e.hasPerm("sysTenant:edit") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysTenant:grantMenu") || e.hasPerm("sysTenant:delete") ? a("a-dropdown", [a("a", { staticClass: "ant-dropdown-link" }, [e._v(" 鏇村 "), a("a-icon", { attrs: { type: "down" } })], 1), a("a-menu", { attrs: { slot: "overlay" }, slot: "overlay" }, [e.hasPerm("sysTenant:grantMenu") ? a("a-menu-item", [a("a", { on: { click: function (t) { return e.$refs.tenantMenuForm.tenantMenu(r) } } }, [e._v("鎺堟潈鑿滃崟")])]) : e._e(), e.hasPerm("sysTenant:resetPwd") ? a("a-menu-item", [a("a-popconfirm", { attrs: { placement: "topRight", title: "纭閲嶇疆瀵嗙爜锛�" }, on: { confirm: function () { return e.resetPwd(r) } } }, [a("a", [e._v("閲嶇疆瀵嗙爜")])])], 1) : e._e(), e.hasPerm("sysTenant:delete") ? a("a-menu-item", [a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.sysTenantDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])])], 1) : e._e()], 1)], 1) : e._e()], 1) } }]) }, [e.hasPerm("sysTenant:add") ? a("template", { slot: "operator" }, [e.hasPerm("sysTenant:add") ? a("a-button", { attrs: { icon: "plus", type: "primary" }, on: { click: function (t) { return e.$refs.addForm.add() } } }, [e._v("鏂板绉熸埛 ")]) : e._e()], 1) : e._e()], 2), a("add-form", { ref: "addForm", on: { ok: e.handleOk } }), a("edit-form", { ref: "editForm", on: { ok: e.handleOk } }), a("tenant-menu-form", { ref: "tenantMenuForm", on: { ok: e.handleOk } })], 1)], 1) }, s = [], i = a("2af9"), n = a("a18a"), o = a("d80a"), l = a("3266"), c = a("e581"), d = { components: { XCard: i["w"], STable: i["r"], Ellipsis: i["h"], addForm: o["default"], editForm: l["default"], tenantMenuForm: c["default"] }, data: function () { var e = this; return { queryParam: {}, columns: [{ title: "鍏徃鍚嶇О", dataIndex: "name" }, { title: "璐﹀彿(閭)", dataIndex: "email" }, { title: "濮撳悕", dataIndex: "adminName" }, { title: "鐢佃瘽", dataIndex: "phone" }, { title: "鍒涘缓鏃堕棿", dataIndex: "createdTime" }, { title: "澶囨敞", dataIndex: "remark" }], loadData: function (t) { return Object(n["f"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [] } }, created: function () { (this.hasPerm("sysTenant:edit") || this.hasPerm("sysTenant:delete")) && this.columns.push({ title: "鎿嶄綔", width: "150px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, methods: { sysTenantDelete: function (e) { var t = this; Object(n["b"])(e).then((function (e) { e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("鍒犻櫎澶辫触锛�" + e.message) })).catch((function (e) { t.$message.error("鍒犻櫎閿欒锛�" + e.message) })) }, toggleAdvanced: function () { this.advanced = !this.advanced }, handleOk: function () { this.$refs.table.refresh() }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t }, resetPwd: function (e) { var t = this; Object(n["g"])({ id: e.id }).then((function (e) { e.success ? t.$message.success("閲嶇疆鎴愬姛") : t.$message.error("閲嶇疆澶辫触锛�" + e.message) })) } } }, u = d, m = (a("844b"), a("2877")), f = Object(m["a"])(u, r, s, !1, null, null, null); t["default"] = f.exports }, "046a": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e.hasPerm("sysDictType:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "绫诲瀷鍚嶇О" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ョ被鍨嬪悕绉�" }, model: { value: e.queryParam.name, callback: function (t) { e.$set(e.queryParam, "name", t) }, expression: "queryParam.name" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [e.hasPerm("sysDictType:page") ? a("a-form-item", { attrs: { label: "鍞竴缂栫爜" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" }, model: { value: e.queryParam.code, callback: function (t) { e.$set(e.queryParam, "code", t) }, expression: "queryParam.code" } })], 1) : e._e()], 1), a("a-col", { attrs: { md: e.advanced ? 24 : 8, sm: 24 } }, [a("span", { staticClass: "table-page-search-submitButtons", style: e.advanced && { float: "right", overflow: "hidden" } || {} }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")])], 1)])], 1)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !1, rowKey: function (e) { return e.code }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "status", fn: function (t, r) { return a("span", {}, [a("a-popconfirm", { attrs: { placement: "top", title: 0 === t ? "纭畾鍋滅敤璇ュ瓧鍏革紵" : "纭畾鍚敤璇ュ瓧鍏革紵" }, on: { confirm: function () { return e.editSysDictTypeStatus(t, r) } } }, [a("a", [e._v(e._s(e.statusFilter(t)))])])], 1) } }, { key: "action", fn: function (t, r) { return a("span", {}, [a("a", { on: { click: function (t) { return e.$refs.dataIndex.index(r) } } }, [e._v("瀛楀吀")]), e.hasPerm("sysDictType:edit") || e.hasPerm("sysDictType:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysDictType:edit") || e.hasPerm("sysDictType:delete") ? a("a-dropdown", [a("a", { staticClass: "ant-dropdown-link" }, [e._v(" 鏇村 "), a("a-icon", { attrs: { type: "down" } })], 1), a("a-menu", { attrs: { slot: "overlay" }, slot: "overlay" }, [e.hasPerm("sysDictType:edit") ? a("a-menu-item", [a("a", { on: { click: function (t) { return e.$refs.editForm.edit(r) } } }, [e._v("缂栬緫")])]) : e._e(), e.hasPerm("sysDictType:delete") ? a("a-menu-item", [a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.sysDictTypeDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])])], 1) : e._e()], 1)], 1) : e._e()], 1) } }]) }, [e.hasPerm("sysDictType:add") ? a("template", { slot: "operator" }, [e.hasPerm("sysDictType:add") ? a("a-button", { attrs: { icon: "plus", type: "primary" }, on: { click: function (t) { return e.$refs.addForm.add() } } }, [e._v("鏂板绫诲瀷 ")]) : e._e()], 1) : e._e()], 2), a("add-form", { ref: "addForm", on: { ok: e.handleOk } }), a("edit-form", { ref: "editForm", on: { ok: e.handleOk } }), a("data-index", { ref: "dataIndex", on: { ok: e.handleOk } })], 1)], 1) }, s = [], i = (a("4de4"), a("2af9")), n = a("126f"), o = a("5da6"), l = a("8f60"), c = a("72f4"), d = { components: { XCard: i["w"], STable: i["r"], addForm: o["default"], editForm: l["default"], dataIndex: c["default"] }, data: function () { var e = this; return { advanced: !1, queryParam: {}, columns: [{ title: "绫诲瀷鍚嶇О", dataIndex: "name" }, { title: "鍞竴缂栫爜", dataIndex: "code" }, { title: "鎺掑簭", dataIndex: "sort" }, { title: "澶囨敞", dataIndex: "remark", width: 200 }, { title: "鐘舵��", dataIndex: "status", scopedSlots: { customRender: "status" } }, { title: "鎿嶄綔", width: "150px", dataIndex: "action", scopedSlots: { customRender: "action" } }], loadData: function (t) { return Object(n["f"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [], statusDict: [] } }, created: function () { this.sysDictTypeDropDown() }, methods: { statusFilter: function (e) { var t = this.statusDict.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, sysDictTypeDropDown: function () { var e = this; Object(n["d"])({ code: "common_status" }).then((function (t) { e.statusDict = t.data })) }, editSysDictTypeStatus: function (e, t) { var a = this; 0 == e ? this.status = 1 : 1 == e && (this.status = 0), Object(n["b"])({ id: t.id, status: this.status }).then((function (e) { e.success ? (a.$message.success("鎿嶄綔鎴愬姛"), a.$refs.table.refresh()) : a.$message.error("鎿嶄綔澶辫触锛�" + e.message) })) }, sysDictTypeDelete: function (e) { var t = this; Object(n["c"])(e).then((function (e) { e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("鍒犻櫎澶辫触锛�" + e.message) })).catch((function (e) { t.$message.error("鍒犻櫎閿欒锛�" + e.message) })) }, toggleAdvanced: function () { this.advanced = !this.advanced }, handleOk: function () { this.$refs.table.refresh() }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, u = d, m = (a("2e36"), a("2877")), f = Object(m["a"])(u, r, s, !1, null, null, null); t["default"] = f.exports }, "06c2": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏃ュ織璇︽儏", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "鏂规硶鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["methodName"], expression: "['methodName']" }] })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍦板潃", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["location"], expression: "['location']" }] })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "娴忚鍣�", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["browser"], expression: "['browser']" }] })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "鎿嶄綔绯荤粺", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["os"], expression: "['os']" }] })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "绫诲悕绉�", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["className"], expression: "['className']" }], attrs: { rows: 4 } })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍏蜂綋娑堟伅", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["message"], expression: "['message']" }], attrs: { rows: 4 } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "璇锋眰鍙傛暟", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["param"], expression: "['param']" }], attrs: { rows: 4 } })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "杩斿洖缁撴灉", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["result"], expression: "['result']" }], attrs: { rows: 4 } })], 1)], 1)], 1)], 1)], 1)], 1) }, s = [], i = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, form: this.$form.createForm(this) } }, methods: { details: function (e) { var t = this; this.visible = !0, setTimeout((function () { t.form.setFieldsValue({ location: e.location, browser: e.browser, os: e.os, className: e.className, methodName: e.methodName, param: e.param, result: e.result, message: e.message }) }), 100) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, n = i, o = a("2877"), l = Object(o["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, "0707": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [a("k-form-design", { ref: "kfd", staticStyle: { "background-color": "white" }, attrs: { showHead: !1 }, on: { save: e.handleSave } })], 1) }, s = [], i = (a("d3bc4"), { components: {}, data: function () { return { jsonData: { list: [{ type: "select", label: "涓嬫媺閫夋嫨鍣�", options: { width: "100%", multiple: !1, disabled: !1, clearable: !1, placeholder: "璇烽�夋嫨", dynamicKey: "", dynamic: !1, options: [{ value: "1", label: "涓嬫媺妗�1" }, { value: "2", label: "涓嬫媺妗�2" }], filterable: !1 }, model: "select_1585829530472", key: "select_1585829530472", rules: [{ required: !1, message: "蹇呭~椤�" }] }, { type: "radio", label: "鍗曢�夋", icon: "icon-danxuan-cuxiantiao", options: { disabled: !1, defaultValue: "", dynamicKey: "", dynamic: !1, options: [{ value: "1", label: "閫夐」1" }, { value: "2", label: "閫夐」2" }, { value: "3", label: "閫夐」3" }] }, model: "radio_1585829530935", key: "radio_1585829530935", rules: [{ required: !1, message: "蹇呭~椤�" }] }], config: { layout: "horizontal", labelCol: { span: 4 }, wrapperCol: { span: 18 }, hideRequiredMark: !1, customStyle: "" } } } }, methods: { importData: function () { this.$refs.kfd.handleSetData(this.jsonData) }, handleSave: function (e) { } }, mounted: function () { } }), n = i, o = a("2877"), l = Object(o["a"])(n, r, s, !1, null, "d1e6b242", null); t["default"] = l.exports }, "097e": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("exception-page", { attrs: { type: "403" } }) }, s = [], i = a("2af9"), n = { components: { ExceptionPage: i["i"] } }, o = n, l = a("2877"), c = Object(l["a"])(o, r, s, !1, null, "4488ed7f", null); t["default"] = c.exports }, "0bad6": function (e, t, a) { "use strict"; a.r(t); for (var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "app-list" }, [a("a-list", { attrs: { grid: { gutter: 24, lg: 3, md: 2, sm: 1, xs: 1 }, dataSource: e.dataSource }, scopedSlots: e._u([{ key: "renderItem", fn: function (t) { return a("a-list-item", {}, [a("a-card", { attrs: { hoverable: !0 } }, [a("a-card-meta", [a("div", { staticStyle: { "margin-bottom": "3px" }, attrs: { slot: "title" }, slot: "title" }, [e._v(e._s(t.title))]), a("a-avatar", { staticClass: "card-avatar", attrs: { slot: "avatar", src: t.avatar, size: "small" }, slot: "avatar" }), a("div", { staticClass: "meta-cardInfo", attrs: { slot: "description" }, slot: "description" }, [a("div", [a("p", [e._v("娲昏穬鐢ㄦ埛")]), a("p", [a("span", [e._v(e._s(t.activeUser)), a("span", [e._v("涓�")])])])]), a("div", [a("p", [e._v("鏂板鐢ㄦ埛")]), a("p", [e._v(e._s(e._f("NumberFormat")(t.newUser)))])])])], 1), a("template", { staticClass: "ant-card-actions", slot: "actions" }, [a("a", [a("a-icon", { attrs: { type: "download" } })], 1), a("a", [a("a-icon", { attrs: { type: "edit" } })], 1), a("a", [a("a-icon", { attrs: { type: "share-alt" } })], 1), a("a", [a("a-dropdown", [a("a", { staticClass: "ant-dropdown-link", attrs: { href: "javascript:;" } }, [a("a-icon", { attrs: { type: "ellipsis" } })], 1), a("a-menu", { attrs: { slot: "overlay" }, slot: "overlay" }, [a("a-menu-item", [a("a", { attrs: { href: "javascript:;" } }, [e._v("1st menu item")])]), a("a-menu-item", [a("a", { attrs: { href: "javascript:;" } }, [e._v("2nd menu item")])]), a("a-menu-item", [a("a", { attrs: { href: "javascript:;" } }, [e._v("3rd menu item")])])], 1)], 1)], 1)])], 2)], 1) } }]) })], 1) }, s = [], i = [], n = 0; n < 11; n++)i.push({ title: "Alipay", avatar: "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png", activeUser: 17, newUser: 1700 }); var o = { name: "Article", components: {}, data: function () { return { dataSource: i } } }, l = o, c = (a("e7d8"), a("2877")), d = Object(c["a"])(l, r, s, !1, null, "3641be70", null); t["default"] = d.exports }, "0ca5": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-list", { attrs: { itemLayout: "horizontal", dataSource: e.data } }) }, s = [], i = { data: function () { return { data: [] } }, methods: {} }, n = i, o = a("2877"), l = Object(o["a"])(n, r, s, !1, null, "676e83d3", null); t["default"] = l.exports }, 1: function (e, t) { }, 1071: function (e, t, a) { "use strict"; a("f5a3") }, "10b7": function (e, t, a) {
+        (function (t, r) { e.exports = r(a("21bf")) })(0, (function (e) {
+            /** @preserve
+                (c) 2012 by C茅dric Mesnil. All rights reserved.
+
+                Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+                    - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+                    - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+                THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+                */
+            return function (t) { var a = e, r = a.lib, s = r.WordArray, i = r.Hasher, n = a.algo, o = s.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), l = s.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), c = s.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), d = s.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), u = s.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), m = s.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), f = n.RIPEMD160 = i.extend({ _doReset: function () { this._hash = s.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (e, t) { for (var a = 0; a < 16; a++) { var r = t + a, s = e[r]; e[r] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8) } var i, n, f, w, _, C, x, k, S, T, D, P = this._hash.words, L = u.words, O = m.words, j = o.words, q = l.words, B = c.words, N = d.words; C = i = P[0], x = n = P[1], k = f = P[2], S = w = P[3], T = _ = P[4]; for (a = 0; a < 80; a += 1)D = i + e[t + j[a]] | 0, D += a < 16 ? p(n, f, w) + L[0] : a < 32 ? h(n, f, w) + L[1] : a < 48 ? v(n, f, w) + L[2] : a < 64 ? g(n, f, w) + L[3] : b(n, f, w) + L[4], D |= 0, D = y(D, B[a]), D = D + _ | 0, i = _, _ = w, w = y(f, 10), f = n, n = D, D = C + e[t + q[a]] | 0, D += a < 16 ? b(x, k, S) + O[0] : a < 32 ? g(x, k, S) + O[1] : a < 48 ? v(x, k, S) + O[2] : a < 64 ? h(x, k, S) + O[3] : p(x, k, S) + O[4], D |= 0, D = y(D, N[a]), D = D + T | 0, C = T, T = S, S = y(k, 10), k = x, x = D; D = P[1] + f + S | 0, P[1] = P[2] + w + T | 0, P[2] = P[3] + _ + C | 0, P[3] = P[4] + i + x | 0, P[4] = P[0] + n + k | 0, P[0] = D }, _doFinalize: function () { var e = this._data, t = e.words, a = 8 * this._nDataBytes, r = 8 * e.sigBytes; t[r >>> 5] |= 128 << 24 - r % 32, t[14 + (r + 64 >>> 9 << 4)] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), e.sigBytes = 4 * (t.length + 1), this._process(); for (var s = this._hash, i = s.words, n = 0; n < 5; n++) { var o = i[n]; i[n] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8) } return s }, clone: function () { var e = i.clone.call(this); return e._hash = this._hash.clone(), e } }); function p(e, t, a) { return e ^ t ^ a } function h(e, t, a) { return e & t | ~e & a } function v(e, t, a) { return (e | ~t) ^ a } function g(e, t, a) { return e & a | t & ~a } function b(e, t, a) { return e ^ (t | ~a) } function y(e, t) { return e << t | e >>> 32 - t } a.RIPEMD160 = i._createHelper(f), a.HmacRIPEMD160 = i._createHmacHelper(f) }(Math), e.RIPEMD160
+        }))
+    }, 1132: function (e, t, a) { (function (t, r) { e.exports = r(a("21bf")) })(0, (function (e) { return function () { var t = e, a = t.lib, r = a.WordArray, s = t.enc; s.Base64 = { stringify: function (e) { var t = e.words, a = e.sigBytes, r = this._map; e.clamp(); for (var s = [], i = 0; i < a; i += 3)for (var n = t[i >>> 2] >>> 24 - i % 4 * 8 & 255, o = t[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255, l = t[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255, c = n << 16 | o << 8 | l, d = 0; d < 4 && i + .75 * d < a; d++)s.push(r.charAt(c >>> 6 * (3 - d) & 63)); var u = r.charAt(64); if (u) while (s.length % 4) s.push(u); return s.join("") }, parse: function (e) { var t = e.length, a = this._map, r = this._reverseMap; if (!r) { r = this._reverseMap = []; for (var s = 0; s < a.length; s++)r[a.charCodeAt(s)] = s } var n = a.charAt(64); if (n) { var o = e.indexOf(n); -1 !== o && (t = o) } return i(e, t, r) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" }; function i(e, t, a) { for (var s = [], i = 0, n = 0; n < t; n++)if (n % 4) { var o = a[e.charCodeAt(n - 1)] << n % 4 * 2, l = a[e.charCodeAt(n)] >>> 6 - n % 4 * 2, c = o | l; s[i >>> 2] |= c << 24 - i % 4 * 8, i++ } return r.create(s, i) } }(), e.enc.Base64 })) }, "11cd": function (e, t, a) { "use strict"; a("511a") }, 1382: function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("1132"), a("72fe"), a("2b79"), a("38ba")) })(0, (function (e) { return function () { var t = e, a = t.lib, r = a.StreamCipher, s = t.algo, i = [], n = [], o = [], l = s.Rabbit = r.extend({ _doReset: function () { for (var e = this._key.words, t = this.cfg.iv, a = 0; a < 4; a++)e[a] = 16711935 & (e[a] << 8 | e[a] >>> 24) | 4278255360 & (e[a] << 24 | e[a] >>> 8); var r = this._X = [e[0], e[3] << 16 | e[2] >>> 16, e[1], e[0] << 16 | e[3] >>> 16, e[2], e[1] << 16 | e[0] >>> 16, e[3], e[2] << 16 | e[1] >>> 16], s = this._C = [e[2] << 16 | e[2] >>> 16, 4294901760 & e[0] | 65535 & e[1], e[3] << 16 | e[3] >>> 16, 4294901760 & e[1] | 65535 & e[2], e[0] << 16 | e[0] >>> 16, 4294901760 & e[2] | 65535 & e[3], e[1] << 16 | e[1] >>> 16, 4294901760 & e[3] | 65535 & e[0]]; this._b = 0; for (a = 0; a < 4; a++)c.call(this); for (a = 0; a < 8; a++)s[a] ^= r[a + 4 & 7]; if (t) { var i = t.words, n = i[0], o = i[1], l = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8), d = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), u = l >>> 16 | 4294901760 & d, m = d << 16 | 65535 & l; s[0] ^= l, s[1] ^= u, s[2] ^= d, s[3] ^= m, s[4] ^= l, s[5] ^= u, s[6] ^= d, s[7] ^= m; for (a = 0; a < 4; a++)c.call(this) } }, _doProcessBlock: function (e, t) { var a = this._X; c.call(this), i[0] = a[0] ^ a[5] >>> 16 ^ a[3] << 16, i[1] = a[2] ^ a[7] >>> 16 ^ a[5] << 16, i[2] = a[4] ^ a[1] >>> 16 ^ a[7] << 16, i[3] = a[6] ^ a[3] >>> 16 ^ a[1] << 16; for (var r = 0; r < 4; r++)i[r] = 16711935 & (i[r] << 8 | i[r] >>> 24) | 4278255360 & (i[r] << 24 | i[r] >>> 8), e[t + r] ^= i[r] }, blockSize: 4, ivSize: 2 }); function c() { for (var e = this._X, t = this._C, a = 0; a < 8; a++)n[a] = t[a]; t[0] = t[0] + 1295307597 + this._b | 0, t[1] = t[1] + 3545052371 + (t[0] >>> 0 < n[0] >>> 0 ? 1 : 0) | 0, t[2] = t[2] + 886263092 + (t[1] >>> 0 < n[1] >>> 0 ? 1 : 0) | 0, t[3] = t[3] + 1295307597 + (t[2] >>> 0 < n[2] >>> 0 ? 1 : 0) | 0, t[4] = t[4] + 3545052371 + (t[3] >>> 0 < n[3] >>> 0 ? 1 : 0) | 0, t[5] = t[5] + 886263092 + (t[4] >>> 0 < n[4] >>> 0 ? 1 : 0) | 0, t[6] = t[6] + 1295307597 + (t[5] >>> 0 < n[5] >>> 0 ? 1 : 0) | 0, t[7] = t[7] + 3545052371 + (t[6] >>> 0 < n[6] >>> 0 ? 1 : 0) | 0, this._b = t[7] >>> 0 < n[7] >>> 0 ? 1 : 0; for (a = 0; a < 8; a++) { var r = e[a] + t[a], s = 65535 & r, i = r >>> 16, l = ((s * s >>> 17) + s * i >>> 15) + i * i, c = ((4294901760 & r) * r | 0) + ((65535 & r) * r | 0); o[a] = l ^ c } e[0] = o[0] + (o[7] << 16 | o[7] >>> 16) + (o[6] << 16 | o[6] >>> 16) | 0, e[1] = o[1] + (o[0] << 8 | o[0] >>> 24) + o[7] | 0, e[2] = o[2] + (o[1] << 16 | o[1] >>> 16) + (o[0] << 16 | o[0] >>> 16) | 0, e[3] = o[3] + (o[2] << 8 | o[2] >>> 24) + o[1] | 0, e[4] = o[4] + (o[3] << 16 | o[3] >>> 16) + (o[2] << 16 | o[2] >>> 16) | 0, e[5] = o[5] + (o[4] << 8 | o[4] >>> 24) + o[3] | 0, e[6] = o[6] + (o[5] << 16 | o[5] >>> 16) + (o[4] << 16 | o[4] >>> 16) | 0, e[7] = o[7] + (o[6] << 8 | o[6] >>> 24) + o[5] | 0 } t.Rabbit = r._createHelper(l) }(), e.Rabbit })) }, "17e1": function (e, t, a) { (function (t, r) { e.exports = r(a("21bf")) })(0, (function (e) { return function () { if ("function" == typeof ArrayBuffer) { var t = e, a = t.lib, r = a.WordArray, s = r.init, i = r.init = function (e) { if (e instanceof ArrayBuffer && (e = new Uint8Array(e)), (e instanceof Int8Array || "undefined" !== typeof Uint8ClampedArray && e instanceof Uint8ClampedArray || e instanceof Int16Array || e instanceof Uint16Array || e instanceof Int32Array || e instanceof Uint32Array || e instanceof Float32Array || e instanceof Float64Array) && (e = new Uint8Array(e.buffer, e.byteOffset, e.byteLength)), e instanceof Uint8Array) { for (var t = e.byteLength, a = [], r = 0; r < t; r++)a[r >>> 2] |= e[r] << 24 - r % 4 * 8; s.call(this, a, t) } else s.apply(this, arguments) }; i.prototype = r } }(), e.lib.WordArray })) }, "191b": function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("94f8")) })(0, (function (e) { return function () { var t = e, a = t.lib, r = a.WordArray, s = t.algo, i = s.SHA256, n = s.SHA224 = i.extend({ _doReset: function () { this._hash = new r.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) }, _doFinalize: function () { var e = i._doFinalize.call(this); return e.sigBytes -= 4, e } }); t.SHA224 = i._createHelper(n), t.HmacSHA224 = i._createHmacHelper(n) }(), e.SHA224 })) }, "1c15": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e._v(" Monitor ")]) }, s = [], i = { name: "Monitor" }, n = i, o = a("2877"), l = Object(o["a"])(n, r, s, !1, null, "6874330b", null); t["default"] = l.exports }, "1ced": function (e, t, a) { }, "1cfd": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e.hasPerm("sysTimers:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "浠诲姟鍚嶇О" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ヤ换鍔″悕绉�" }, model: { value: e.queryParam.timerName, callback: function (t) { e.$set(e.queryParam, "timerName", t) }, expression: "queryParam.timerName" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")])], 1)], 1)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "actionClass", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "remark", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "requestType", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.requestTypeFilter(t)) + " ")]) } }, { key: "jobStatus", fn: function (t, r) { return e.hasPerm("sysTimers:start") || e.hasPerm("sysTimers:stop") ? a("span", {}, [a("a-popconfirm", { attrs: { placement: "top", title: 0 === t ? "纭畾鍋滄璇ヤ换鍔★紵" : "纭畾鍚姩璇ヤ换鍔★紵" }, on: { confirm: function () { return e.editjobStatusStatus(t, r) } } }, [a("a-badge", { attrs: { status: 0 === t ? "processing" : "default" } }), a("a", [e._v(e._s(e.jobStatusFilter(t)))])], 1)], 1) : a("span", { attrs: { slot: "jobStatus" }, slot: "jobStatus" }, [a("a-badge", { attrs: { status: 0 === t ? "processing" : "default" } }), e._v(" " + e._s(e.jobStatusFilter(t)) + " ")], 1) } }, { key: "action", fn: function (t, r) { return a("span", {}, [e.hasPerm("sysTimers:edit") ? a("a", { on: { click: function (t) { return e.$refs.editForm.edit(r) } } }, [e._v("缂栬緫")]) : e._e(), e.hasPerm("sysTimers:edit") & e.hasPerm("sysTimers:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysTimers:delete") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.sysTimersDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])]) : e._e()], 1) } }], null, !0) }, [e.hasPerm("sysTimers:add") ? a("template", { slot: "operator" }, [e.hasPerm("sysTimers:add") ? a("a-button", { attrs: { icon: "plus", type: "primary" }, on: { click: function (t) { return e.$refs.addForm.add() } } }, [e._v("鏂板瀹氭椂浠诲姟 ")]) : e._e()], 1) : e._e()], 2), a("add-form", { ref: "addForm", on: { ok: e.handleOk } }), a("edit-form", { ref: "editForm", on: { ok: e.handleOk } })], 1)], 1) }, s = [], i = (a("4de4"), a("2af9")), n = a("b89e"), o = a("40b1"), l = a("de71"), c = a("da95"), d = { components: { XCard: i["w"], STable: i["r"], Ellipsis: i["h"], addForm: o["default"], editForm: l["default"] }, data: function () { var e = this; return { queryParam: {}, columns: [{ title: "浠诲姟鍚嶇О", dataIndex: "jobName" }, { title: "璇锋眰鍦板潃", dataIndex: "requestUrl" }, { title: "璇锋眰绫诲瀷", dataIndex: "requestType", scopedSlots: { customRender: "requestType" } }, { title: "璇锋眰鍙傛暟", dataIndex: "requestParameters" }, { title: "闂撮殧", dataIndex: "interval" }, { title: "Cron", dataIndex: "cron" }, { title: "鐘舵��", dataIndex: "timerStatus", scopedSlots: { customRender: "jobStatus" } }, { title: "鎵ц娆℃暟", dataIndex: "runNumber" }, { title: "澶囨敞", dataIndex: "remark", width: 100 }], loadData: function (t) { return Object(n["e"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [], requestTypeEnumDataDropDown: [] } }, created: function () { this.sysEnumDataList(), (this.hasPerm("sysTimers:edit") || this.hasPerm("sysTimers:delete")) && this.columns.push({ title: "鎿嶄綔", width: "150px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, methods: { sysEnumDataList: function () { var e = this; Object(c["a"])({ enumName: "RequestTypeEnum" }).then((function (t) { e.requestTypeEnumDataDropDown = t.data })) }, requestTypeFilter: function (e) { var t = this.requestTypeEnumDataDropDown.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, jobStatusFilter: function (e) { return 0 === e ? "杩愯涓�" : 1 === e ? "宸插仠姝�" : 2 === e ? "鎵ц澶辫触" : 3 === e ? "宸插彇娑�" : void 0 }, editjobStatusStatus: function (e, t) { var a = this; 0 === e ? Object(n["g"])({ id: t.id, jobName: t.jobName }).then((function (e) { e.success ? (a.$message.success("鍋滄鎴愬姛"), a.$refs.table.refresh()) : a.$message.error("鍋滄澶辫触锛�" + e.message) })) : 0 != e && Object(n["f"])(t).then((function (e) { e.success ? (a.$message.success("鍚姩鎴愬姛"), a.$refs.table.refresh()) : a.$message.error("鍚姩澶辫触锛�" + e.message) })) }, sysTimersDelete: function (e) { var t = this; Object(n["b"])(e).then((function (e) { e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("鍒犻櫎澶辫触锛�" + e.message) })).catch((function (e) { t.$message.error("鍒犻櫎閿欒锛�" + e.message) })) }, toggleAdvanced: function () { this.advanced = !this.advanced }, handleOk: function () { this.$refs.table.refresh() }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } }, mounted: function () { } }, u = d, m = (a("7bfa"), a("2877")), f = Object(m["a"])(u, r, s, !1, null, null, null); t["default"] = f.exports }, "1d8a": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "main" }, [a("a-form", { ref: "formLogin", staticClass: "user-layout-login", attrs: { id: "formLogin", form: e.form }, on: { submit: e.handleSubmit } }, [a("a-tabs", { attrs: { activeKey: e.customActiveKey, tabBarStyle: { textAlign: "center", borderBottom: "unset" } }, on: { change: e.handleTabClick } }, [a("a-tab-pane", { key: "tab1", attrs: { tab: "璐﹀彿瀵嗙爜鐧诲綍" } }, [e.isLoginError ? a("a-alert", { staticStyle: { "margin-bottom": "24px" }, attrs: { type: "error", showIcon: "", message: this.accountLoginErrMsg } }) : e._e(), a("a-form-item", [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["account", { initialValue: "", rules: [{ required: !0, message: "璇疯緭鍏ヨ处鍙�" }, { validator: e.handleUsernameOrEmail }], validateTrigger: "change" }], expression: "[\n              'account',{ initialValue:'', rules: [{ required: true, message: '璇疯緭鍏ヨ处鍙�' }, { validator: handleUsernameOrEmail }], validateTrigger: 'change'}\n            ]" }], attrs: { size: "large", type: "text", placeholder: "璐﹀彿" } }, [a("a-icon", { style: { color: "rgba(0,0,0,.25)" }, attrs: { slot: "prefix", type: "user" }, slot: "prefix" })], 1)], 1), a("a-form-item", [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["password", { initialValue: "", rules: [{ required: !0, message: "璇疯緭鍏ュ瘑鐮�" }], validateTrigger: "blur" }], expression: "[\n              'password',\n              { initialValue:'', rules: [{ required: true, message: '璇疯緭鍏ュ瘑鐮�' }], validateTrigger: 'blur'}\n            ]" }], attrs: { size: "large", type: "password", autocomplete: "false", placeholder: "瀵嗙爜" } }, [a("a-icon", { style: { color: "rgba(0,0,0,.25)" }, attrs: { slot: "prefix", type: "lock" }, slot: "prefix" })], 1)], 1)], 1), a("a-tab-pane", { key: "tab2", attrs: { tab: "鎵嬫満鍙风櫥褰�" } }, [e.isLoginError ? a("a-alert", { staticStyle: { "margin-bottom": "24px" }, attrs: { type: "error", showIcon: "", message: this.accountLoginErrMsg } }) : e._e(), a("a-form-item", [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["mobile", { rules: [{ required: !0, pattern: /^1[34578]\d{9}$/, message: "璇疯緭鍏ユ纭殑鎵嬫満鍙�" }], validateTrigger: "change" }], expression: "['mobile', {rules: [{ required: true, pattern: /^1[34578]\\d{9}$/, message: '璇疯緭鍏ユ纭殑鎵嬫満鍙�' }], validateTrigger: 'change'}]" }], attrs: { size: "large", type: "text", placeholder: "鎵嬫満鍙�" } }, [a("a-icon", { style: { color: "rgba(0,0,0,.25)" }, attrs: { slot: "prefix", type: "mobile" }, slot: "prefix" })], 1)], 1), a("a-row", { attrs: { gutter: 16 } }, [a("a-col", { staticClass: "gutter-row", attrs: { span: 16 } }, [a("a-form-item", [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["captcha", { rules: [{ required: !0, message: "璇疯緭鍏ラ獙璇佺爜" }], validateTrigger: "blur" }], expression: "['captcha', {rules: [{ required: true, message: '璇疯緭鍏ラ獙璇佺爜' }], validateTrigger: 'blur'}]" }], attrs: { size: "large", type: "text", placeholder: "楠岃瘉鐮�" } }, [a("a-icon", { style: { color: "rgba(0,0,0,.25)" }, attrs: { slot: "prefix", type: "mail" }, slot: "prefix" })], 1)], 1)], 1), a("a-col", { staticClass: "gutter-row", attrs: { span: 8 } }, [a("a-button", { staticClass: "getCaptcha", attrs: { tabindex: "-1", disabled: e.state.smsSendBtn }, domProps: { textContent: e._s(e.state.smsSendBtn ? e.state.time + " s" : "鑾峰彇楠岃瘉鐮�") }, on: { click: function (t) { return t.stopPropagation(), t.preventDefault(), e.getCaptcha.apply(null, arguments) } } })], 1)], 1)], 1)], 1), a("a-form-item", [a("a-checkbox", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["rememberMe", { valuePropName: "checked" }], expression: "['rememberMe', { valuePropName: 'checked' }]" }] }, [e._v("璁颁綇鎴�")]), a("router-link", { staticClass: "forge-password", staticStyle: { float: "right" }, attrs: { to: { name: "recover", params: { user: "aaa" } } } }, [e._v("蹇樿瀵嗙爜")])], 1), a("a-form-item", [a("Verify", { ref: "verify", attrs: { mode: "pop", captchaType: "clickWord", imgSize: { width: "330px", height: "155px" } }, on: { success: e.verifySuccess } })], 1), a("a-form-item", { staticStyle: { "margin-top": "24px" } }, [a("a-button", { staticClass: "login-button", attrs: { size: "large", type: "primary", htmlType: "submit", loading: e.state.loginBtn, disabled: e.state.loginBtn } }, [e._v("纭畾")])], 1), a("div", { staticClass: "user-login-other" }, [a("span", [e._v("鍏朵粬鐧诲綍鏂瑰紡")]), a("a", [a("a-icon", { staticClass: "item-icon", attrs: { type: "alipay-circle" } })], 1), a("a", [a("a-icon", { staticClass: "item-icon", attrs: { type: "taobao-circle" } })], 1), a("a", [a("a-icon", { staticClass: "item-icon", attrs: { type: "weibo-circle" } })], 1), a("router-link", { staticClass: "register", attrs: { to: { name: "register" } } }, [e._v("娉ㄥ唽璐︽埛")])], 1)], 1), e.requiredTwoStepCaptcha ? a("two-step-captcha", { attrs: { visible: e.stepCaptchaVisible }, on: { success: e.stepCaptchaSuccess, cancel: e.stepCaptchaCancel } }) : e._e()], 1) }, s = [], i = a("5530"), n = (a("d3b7"), a("8bbf")), o = a.n(n), l = function () { var e = this, t = this, a = t.$createElement, r = t._self._c || a; return r("a-modal", { attrs: { centered: "", maskClosable: !1 }, on: { cancel: t.handleCancel }, model: { value: t.visible, callback: function (e) { t.visible = e }, expression: "visible" } }, [r("div", { style: { textAlign: "center" }, attrs: { slot: "title" }, slot: "title" }, [t._v("涓ゆ楠岃瘉")]), r("template", { slot: "footer" }, [r("div", { style: { textAlign: "center" } }, [r("a-button", { key: "back", on: { click: t.handleCancel } }, [t._v("杩斿洖")]), r("a-button", { key: "submit", attrs: { type: "primary", loading: t.stepLoading }, on: { click: t.handleStepOk } }, [t._v(" 缁х画 ")])], 1)]), r("a-spin", { attrs: { spinning: t.stepLoading } }, [r("a-form", { attrs: { layout: "vertical", "auto-form-create": function (t) { e.form = t } } }, [r("div", { staticClass: "step-form-wrapper" }, [t.stepLoading ? r("p", { staticStyle: { "text-align": "center" } }, [t._v("姝e湪楠岃瘉.."), r("br"), t._v("璇风◢鍚�")]) : r("p", { staticStyle: { "text-align": "center" } }, [t._v("璇峰湪鎵嬫満涓墦寮� Google Authenticator 鎴栦袱姝ラ獙璇� APP"), r("br"), t._v("杈撳叆 6 浣嶅姩鎬佺爜")]), r("a-form-item", { style: { textAlign: "center" }, attrs: { hasFeedback: "", fieldDecoratorId: "stepCode", fieldDecoratorOptions: { rules: [{ required: !0, message: "璇疯緭鍏� 6 浣嶅姩鎬佺爜!", pattern: /^\d{6}$/, len: 6 }] } } }, [r("a-input", { style: { textAlign: "center" }, attrs: { placeholder: "000000" }, nativeOn: { keyup: function (e) { return !e.type.indexOf("key") && t._k(e.keyCode, "enter", 13, e.key, "Enter") ? null : t.handleStepOk.apply(null, arguments) } } })], 1), r("p", { staticStyle: { "text-align": "center" } }, [r("a", { on: { click: t.onForgeStepCode } }, [t._v("閬楀け鎵嬫満?")])])], 1)])], 1)], 2) }, c = [], d = { props: { visible: { type: Boolean, default: !1 } }, data: function () { return { stepLoading: !1, form: null } }, methods: { handleStepOk: function () { var e = this, t = this; this.stepLoading = !0, this.form.validateFields((function (a, r) { a ? (e.stepLoading = !1, e.$emit("error", { err: a })) : setTimeout((function () { t.stepLoading = !1, t.$emit("success", { values: r }) }), 2e3) })) }, handleCancel: function () { this.visible = !1, this.$emit("cancel") }, onForgeStepCode: function () { } } }, u = d, m = (a("1071"), a("2877")), f = Object(m["a"])(u, l, c, !1, null, "21ef0e56", null), p = f.exports, h = a("5880"), v = a("6135"), g = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { directives: [{ name: "show", rawName: "v-show", value: e.showBox, expression: "showBox" }], class: "pop" == e.mode ? "mask" : "" }, [a("div", { class: "pop" == e.mode ? "verifybox" : "", style: { "max-width": parseInt(e.imgSize.width) + 30 + "px" } }, ["pop" == e.mode ? a("div", { staticClass: "verifybox-top" }, [e._v(" 璇峰畬鎴愬畨鍏ㄩ獙璇� "), a("span", { staticClass: "verifybox-close", on: { click: e.closeBox } }, [a("i", { staticClass: "iconfont icon-close" })])]) : e._e(), a("div", { staticClass: "verifybox-bottom", style: { padding: "pop" == e.mode ? "15px" : "0" } }, [e.componentType ? a(e.componentType, { ref: "instance", tag: "components", attrs: { arith: e.arith, barSize: e.barSize, blockSize: e.blockSize, captchaType: e.captchaType, explain: e.explain, figure: e.figure, imgSize: e.imgSize, mode: e.mode, type: e.verifyType, vSpace: e.vSpace } }) : e._e()], 1)])]) }, b = [], y = (a("a9e3"), a("25f0"), function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticStyle: { position: "relative" } }, ["2" === e.type ? a("div", { staticClass: "verify-img-out", style: { height: parseInt(e.setSize.imgHeight) + e.vSpace + "px" } }, [a("div", { staticClass: "verify-img-panel", style: { width: e.setSize.imgWidth, height: e.setSize.imgHeight } }, [a("img", { staticStyle: { width: "100%", height: "100%", display: "block" }, attrs: { src: "data:image/png;base64," + e.backImgBase, alt: "" } }), a("div", { directives: [{ name: "show", rawName: "v-show", value: e.showRefresh, expression: "showRefresh" }], staticClass: "verify-refresh", on: { click: e.refresh } }, [a("i", { staticClass: "iconfont icon-refresh" })]), a("transition", { attrs: { name: "tips" } }, [e.tipWords ? a("span", { staticClass: "verify-tips", class: e.passFlag ? "suc-bg" : "err-bg" }, [e._v(e._s(e.tipWords))]) : e._e()])], 1)]) : e._e(), a("div", { staticClass: "verify-bar-area", style: { width: e.setSize.imgWidth, height: e.barSize.height, "line-height": e.barSize.height } }, [a("span", { staticClass: "verify-msg", domProps: { textContent: e._s(e.text) } }), a("div", { staticClass: "verify-left-bar", style: { width: void 0 !== e.leftBarWidth ? e.leftBarWidth : e.barSize.height, height: e.barSize.height, "border-color": e.leftBarBorderColor, transaction: e.transitionWidth } }, [a("span", { staticClass: "verify-msg", domProps: { textContent: e._s(e.finishText) } }), a("div", { staticClass: "verify-move-block", style: { width: e.barSize.height, height: e.barSize.height, "background-color": e.moveBlockBackgroundColor, left: e.moveBlockLeft, transition: e.transitionLeft }, on: { mousedown: e.start, touchstart: e.start } }, [a("i", { class: ["verify-icon iconfont", e.iconClass], style: { color: e.iconColor } }), "2" === e.type ? a("div", { staticClass: "verify-sub-block", style: { width: Math.floor(47 * parseInt(e.setSize.imgWidth) / 310) + "px", height: e.setSize.imgHeight, top: "-" + (parseInt(e.setSize.imgHeight) + e.vSpace) + "px", "background-size": e.setSize.imgWidth + " " + e.setSize.imgHeight } }, [a("img", { staticStyle: { width: "100%", height: "100%", display: "block" }, attrs: { src: "data:image/png;base64," + e.blockBackImgBase, alt: "" } })]) : e._e()])])])]) }), w = [], _ = (a("ac1f"), a("5319"), a("b680"), a("3452")), C = a.n(_); function x(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "XwKsGlMcdPMEhR1B", a = C.a.enc.Utf8.parse(t), r = C.a.enc.Utf8.parse(e), s = C.a.AES.encrypt(r, a, { mode: C.a.mode.ECB, padding: C.a.pad.Pkcs7 }); return s.toString() } function k(e) { var t, a, r, s, i = e.$el.parentNode.offsetWidth || window.offsetWidth, n = e.$el.parentNode.offsetHeight || window.offsetHeight; return t = -1 != e.imgSize.width.indexOf("%") ? parseInt(this.imgSize.width) / 100 * i + "px" : this.imgSize.width, a = -1 != e.imgSize.height.indexOf("%") ? parseInt(this.imgSize.height) / 100 * n + "px" : this.imgSize.height, r = -1 != e.barSize.width.indexOf("%") ? parseInt(this.barSize.width) / 100 * i + "px" : this.barSize.width, s = -1 != e.barSize.height.indexOf("%") ? parseInt(this.barSize.height) / 100 * n + "px" : this.barSize.height, { imgWidth: t, imgHeight: a, barWidth: r, barHeight: s } } var S = { name: "VerifySlide", props: { captchaType: { type: String }, type: { type: String, default: "1" }, mode: { type: String, default: "fixed" }, vSpace: { type: Number, default: 5 }, explain: { type: String, default: "鍚戝彸婊戝姩瀹屾垚楠岃瘉" }, imgSize: { type: Object, default: function () { return { width: "310px", height: "155px" } } }, blockSize: { type: Object, default: function () { return { width: "50px", height: "50px" } } }, barSize: { type: Object, default: function () { return { width: "310px", height: "40px" } } } }, data: function () { return { secretKey: "", passFlag: "", backImgBase: "", blockBackImgBase: "", backToken: "", startMoveTime: "", endMovetime: "", tipsBackColor: "", tipWords: "", text: "", finishText: "", setSize: { imgHeight: 0, imgWidth: 0, barHeight: 0, barWidth: 0 }, top: 0, left: 0, moveBlockLeft: void 0, leftBarWidth: void 0, moveBlockBackgroundColor: void 0, leftBarBorderColor: "#ddd", iconColor: void 0, iconClass: "icon-right", status: !1, isEnd: !1, showRefresh: !0, transitionLeft: "", transitionWidth: "" } }, computed: { barArea: function () { return this.$el.querySelector(".verify-bar-area") }, resetSize: function () { return k } }, methods: { init: function () { var e = this; this.text = this.explain, this.getPictrue(), this.$nextTick((function () { var t = e.resetSize(e); for (var a in t) e.$set(e.setSize, a, t[a]); e.$parent.$emit("ready", e) })); var t = this; window.removeEventListener("touchmove", (function (e) { t.move(e) })), window.removeEventListener("mousemove", (function (e) { t.move(e) })), window.removeEventListener("touchend", (function () { t.end() })), window.removeEventListener("mouseup", (function () { t.end() })), window.addEventListener("touchmove", (function (e) { t.move(e) })), window.addEventListener("mousemove", (function (e) { t.move(e) })), window.addEventListener("touchend", (function () { t.end() })), window.addEventListener("mouseup", (function () { t.end() })) }, start: function (e) { if (e = e || window.event, e.touches) t = e.touches[0].pageX; else var t = e.clientX; this.startLeft = Math.floor(t - this.barArea.getBoundingClientRect().left), this.startMoveTime = +new Date, 0 == this.isEnd && (this.text = "", this.moveBlockBackgroundColor = "#337ab7", this.leftBarBorderColor = "#337AB7", this.iconColor = "#fff", e.stopPropagation(), this.status = !0) }, move: function (e) { if (e = e || window.event, this.status && 0 == this.isEnd) { if (e.touches) t = e.touches[0].pageX; else var t = e.clientX; var a = this.barArea.getBoundingClientRect().left, r = t - a; r >= this.barArea.offsetWidth - parseInt(parseInt(this.blockSize.width) / 2) - 2 && (r = this.barArea.offsetWidth - parseInt(parseInt(this.blockSize.width) / 2) - 2), r <= 0 && (r = parseInt(parseInt(this.blockSize.width) / 2)), this.moveBlockLeft = r - this.startLeft + "px", this.leftBarWidth = r - this.startLeft + "px" } }, end: function () { var e = this; this.endMovetime = +new Date; var t = this; if (this.status && 0 == this.isEnd) { var a = parseInt((this.moveBlockLeft || "").replace("px", "")); a = 310 * a / parseInt(this.setSize.imgWidth); var r = { captchaType: this.captchaType, pointJson: this.secretKey ? x(JSON.stringify({ x: a, y: 5 }), this.secretKey) : JSON.stringify({ x: a, y: 5 }), token: this.backToken }; Object(v["f"])(r).then((function (r) { if ("0000" == r.repCode) { e.moveBlockBackgroundColor = "#5cb85c", e.leftBarBorderColor = "#5cb85c", e.iconColor = "#fff", e.iconClass = "icon-check", e.showRefresh = !1, e.isEnd = !0, "pop" == e.mode && setTimeout((function () { e.$parent.clickShow = !1, e.refresh() }), 1500), e.passFlag = !0, e.tipWords = "".concat(((e.endMovetime - e.startMoveTime) / 1e3).toFixed(2), "s楠岃瘉鎴愬姛"); var s = e.secretKey ? x(e.backToken + "---" + JSON.stringify({ x: a, y: 5 }), e.secretKey) : e.backToken + "---" + JSON.stringify({ x: a, y: 5 }); setTimeout((function () { e.tipWords = "", e.$parent.closeBox(), e.$parent.$emit("success", { captchaVerification: s }) }), 1e3) } else e.moveBlockBackgroundColor = "#d9534f", e.leftBarBorderColor = "#d9534f", e.iconColor = "#fff", e.iconClass = "icon-close", e.passFlag = !1, setTimeout((function () { t.refresh() }), 1e3), e.$parent.$emit("error", e), e.tipWords = "楠岃瘉澶辫触", setTimeout((function () { e.tipWords = "" }), 1e3) })), this.status = !1 } }, refresh: function () { var e = this; this.showRefresh = !0, this.finishText = "", this.transitionLeft = "left .3s", this.moveBlockLeft = 0, this.leftBarWidth = void 0, this.transitionWidth = "width .3s", this.leftBarBorderColor = "#ddd", this.moveBlockBackgroundColor = "#fff", this.iconColor = "#000", this.iconClass = "icon-right", this.isEnd = !1, this.getPictrue(), setTimeout((function () { e.transitionWidth = "", e.transitionLeft = "", e.text = e.explain }), 300) }, getPictrue: function () { var e = this, t = { captchaType: this.captchaType }; Object(v["g"])(t).then((function (t) { "0000" == t.repCode ? (e.backImgBase = t.repData.originalImageBase64, e.blockBackImgBase = t.repData.jigsawImageBase64, e.backToken = t.repData.token, e.secretKey = t.repData.secretKey) : e.tipWords = t.repMsg })) } }, watch: { type: { immediate: !0, handler: function () { this.init() } } }, mounted: function () { this.$el.onselectstart = function () { return !1 } } }, T = S, D = Object(m["a"])(T, y, w, !1, null, null, null), P = D.exports, L = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticStyle: { position: "relative" } }, [a("div", { staticClass: "verify-img-out" }, [a("div", { staticClass: "verify-img-panel", style: { width: e.setSize.imgWidth, height: e.setSize.imgHeight, "background-size": e.setSize.imgWidth + " " + e.setSize.imgHeight, "margin-bottom": e.vSpace + "px" } }, [a("div", { directives: [{ name: "show", rawName: "v-show", value: e.showRefresh, expression: "showRefresh" }], staticClass: "verify-refresh", staticStyle: { "z-index": "3" }, on: { click: e.refresh } }, [a("i", { staticClass: "iconfont icon-refresh" })]), a("img", { ref: "canvas", staticStyle: { width: "100%", height: "100%", display: "block" }, attrs: { src: "data:image/png;base64," + e.pointBackImgBase, alt: "" }, on: { click: function (t) { e.bindingClick && e.canvasClick(t) } } }), e._l(e.tempPoints, (function (t, r) { return a("div", { key: r, staticClass: "point-area", style: { "background-color": "#1abd6c", color: "#fff", "z-index": 9999, width: "20px", height: "20px", "text-align": "center", "line-height": "20px", "border-radius": "50%", position: "absolute", top: parseInt(t.y - 10) + "px", left: parseInt(t.x - 10) + "px" } }, [e._v(" " + e._s(r + 1) + " ")]) }))], 2)]), a("div", { staticClass: "verify-bar-area", style: { width: e.setSize.imgWidth, color: this.barAreaColor, "border-color": this.barAreaBorderColor, "line-height": this.barSize.height } }, [a("span", { staticClass: "verify-msg" }, [e._v(e._s(e.text))])])]) }, O = [], j = (a("a434"), a("a15b"), a("d81d"), { name: "VerifyPoints", props: { mode: { type: String, default: "fixed" }, captchaType: { type: String }, vSpace: { type: Number, default: 5 }, imgSize: { type: Object, default: function () { return { width: "310px", height: "155px" } } }, barSize: { type: Object, default: function () { return { width: "310px", height: "40px" } } } }, data: function () { return { secretKey: "", checkNum: 3, fontPos: [], checkPosArr: [], num: 1, pointBackImgBase: "", poinTextList: [], backToken: "", setSize: { imgHeight: 0, imgWidth: 0, barHeight: 0, barWidth: 0 }, tempPoints: [], text: "", barAreaColor: void 0, barAreaBorderColor: void 0, showRefresh: !0, bindingClick: !0 } }, computed: { resetSize: function () { return k } }, methods: { init: function () { var e = this; this.fontPos.splice(0, this.fontPos.length), this.checkPosArr.splice(0, this.checkPosArr.length), this.num = 1, this.getPictrue(), this.$nextTick((function () { e.setSize = e.resetSize(e), e.$parent.$emit("ready", e) })) }, canvasClick: function (e) { var t = this; this.checkPosArr.push(this.getMousePos(this.$refs.canvas, e)), this.num == this.checkNum && (this.num = this.createPoint(this.getMousePos(this.$refs.canvas, e)), this.checkPosArr = this.pointTransfrom(this.checkPosArr, this.setSize), setTimeout((function () { var e = t.secretKey ? x(t.backToken + "---" + JSON.stringify(t.checkPosArr), t.secretKey) : t.backToken + "---" + JSON.stringify(t.checkPosArr), a = { captchaType: t.captchaType, pointJson: t.secretKey ? x(JSON.stringify(t.checkPosArr), t.secretKey) : JSON.stringify(t.checkPosArr), token: t.backToken }; Object(v["f"])(a).then((function (a) { "0000" == a.repCode ? (t.barAreaColor = "#4cae4c", t.barAreaBorderColor = "#5cb85c", t.text = "楠岃瘉鎴愬姛", t.bindingClick = !1, "pop" == t.mode && setTimeout((function () { t.$parent.clickShow = !1, t.refresh() }), 1500), t.$parent.$emit("success", { captchaVerification: e })) : (t.$parent.$emit("error", t), t.barAreaColor = "#d9534f", t.barAreaBorderColor = "#d9534f", t.text = "楠岃瘉澶辫触", setTimeout((function () { t.refresh() }), 700)) })) }), 400)), this.num < this.checkNum && (this.num = this.createPoint(this.getMousePos(this.$refs.canvas, e))) }, getMousePos: function (e, t) { var a = t.offsetX, r = t.offsetY; return { x: a, y: r } }, createPoint: function (e) { return this.tempPoints.push(Object.assign({}, e)), ++this.num }, refresh: function () { this.tempPoints.splice(0, this.tempPoints.length), this.barAreaColor = "#000", this.barAreaBorderColor = "#ddd", this.bindingClick = !0, this.fontPos.splice(0, this.fontPos.length), this.checkPosArr.splice(0, this.checkPosArr.length), this.num = 1, this.getPictrue(), this.text = "楠岃瘉澶辫触", this.showRefresh = !0 }, getPictrue: function () { var e = this, t = { captchaType: this.captchaType }; Object(v["g"])(t).then((function (t) { "0000" == t.repCode ? (e.pointBackImgBase = t.repData.originalImageBase64, e.backToken = t.repData.token, e.secretKey = t.repData.secretKey, e.poinTextList = t.repData.wordList, e.text = "璇蜂緷娆$偣鍑汇��" + e.poinTextList.join(",") + "銆�") : e.text = t.repMsg })) }, pointTransfrom: function (e, t) { var a = e.map((function (e) { var a = Math.round(310 * e.x / parseInt(t.imgWidth)), r = Math.round(155 * e.y / parseInt(t.imgHeight)); return { x: a, y: r } })); return a } }, watch: { type: { immediate: !0, handler: function () { this.init() } } }, mounted: function () { this.$el.onselectstart = function () { return !1 } } }), q = j, B = Object(m["a"])(q, L, O, !1, null, null, null), N = B.exports, I = { name: "Vue2Verify", props: { locale: { require: !1, type: String, default: function () { if (navigator.language) var e = navigator.language; else e = navigator.browserLanguage; return e } }, captchaType: { type: String, required: !0 }, figure: { type: Number }, arith: { type: Number }, mode: { type: String, default: "pop" }, vSpace: { type: Number }, explain: { type: String }, imgSize: { type: Object, default: function () { return { width: "310px", height: "155px" } } }, blockSize: { type: Object }, barSize: { type: Object } }, data: function () { return { clickShow: !1, verifyType: void 0, componentType: void 0 } }, methods: { i18n: function (e) { if (this.$t) return this.$t(e); var t = this.$options.i18n.messages[this.locale] || this.$options.i18n.messages["en-US"]; return t[e] }, refresh: function () { this.instance.refresh && this.instance.refresh() }, closeBox: function () { this.clickShow = !1, this.refresh() }, show: function () { "pop" == this.mode && (this.clickShow = !0) } }, computed: { instance: function () { return this.$refs.instance || {} }, showBox: function () { return "pop" != this.mode || this.clickShow } }, watch: { captchaType: { immediate: !0, handler: function (e) { switch (e.toString()) { case "blockPuzzle": this.verifyType = "2", this.componentType = "VerifySlide"; break; case "clickWord": this.verifyType = "", this.componentType = "VerifyPoints"; break } } } }, components: { VerifySlide: P, VerifyPoints: N } }, $ = I, E = (a("abc9"), Object(m["a"])($, g, b, !1, null, null, null)), F = E.exports, z = { components: { TwoStepCaptcha: p, Verify: F }, data: function () { return { customActiveKey: "tab1", loginBtn: !1, loginType: 0, isLoginError: !1, requiredTwoStepCaptcha: !1, stepCaptchaVisible: !1, form: this.$form.createForm(this), state: { time: 60, loginBtn: !1, loginType: 0, smsSendBtn: !1 }, accountLoginErrMsg: "", tenantOpen: !1, captchaOpen: !1, tenantsList: [], loginParams: [] } }, created: function () { this.getCaptchaOpen() }, mounted: function () { this.getLocalStorageData() }, methods: Object(i["a"])(Object(i["a"])({}, Object(h["mapActions"])(["Login", "Logout", "dictTypeData"])), {}, { getCaptchaOpen: function () { var e = this; Object(v["a"])().then((function (t) { t.success && (e.captchaOpen = t.data) })) }, handleUsernameOrEmail: function (e, t, a) { var r = this.state, s = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/; s.test(t) ? r.loginType = 0 : r.loginType = 1, a() }, handleTabClick: function (e) { this.isLoginError = !1, this.customActiveKey = e }, handleSubmit: function (e) { var t = this; e.preventDefault(); var a = this.form.validateFields, r = this.state, s = this.customActiveKey, n = this.Login; r.loginBtn = !0; var o = "tab1" === s ? ["account", "password"] : ["mobile", "captcha"]; this.tenantOpen && o.push("tenantCode"), a(o, { force: !0 }, (function (e, a) { if (t.loginParams = a, e) setTimeout((function () { r.loginBtn = !1 }), 600); else { if (t.captchaOpen) return t.$refs.verify.show(), void (r.loginBtn = !1); var s = Object(i["a"])({}, a); delete s.account, s[(r.loginType, "account")] = a.account, s.password = a.password, t.tenantOpen && (s.tenantCode = a.tenantCode), n(s).then((function (e) { return t.loginSuccess(e) })).catch((function (e) { return t.requestFailed(JSON.stringify(e)) })).finally((function () { r.loginBtn = !1 })) } })) }, verifySuccess: function (e) { var t = this; this.loginParams.code = e.captchaVerification, this.Login(this.loginParams).then((function (e) { return t.loginSuccess(e) })).catch((function (e) { return t.requestFailed(JSON.stringify(e)) })).finally((function () { t.state.loginBtn = !1 })) }, getCaptcha: function (e) { var t = this; e.preventDefault(); var a = this.form.validateFields, r = this.state; a(["mobile"], { force: !0 }, (function (e, a) { if (!e) { r.smsSendBtn = !0; var s = window.setInterval((function () { r.time-- <= 0 && (r.time = 60, r.smsSendBtn = !1, window.clearInterval(s)) }), 1e3), i = t.$message.loading("楠岃瘉鐮佸彂閫佷腑..", 0); Object(v["c"])({ mobile: a.mobile }).then((function (e) { setTimeout(i, 2500), t.$notification["success"]({ message: "鎻愮ず", description: "楠岃瘉鐮佽幏鍙栨垚鍔燂紝鎮ㄧ殑楠岃瘉鐮佷负锛�" + e.result.captcha, duration: 8 }) })).catch((function (e) { setTimeout(i, 1), clearInterval(s), r.time = 60, r.smsSendBtn = !1, t.requestFailed(e) })) } })) }, stepCaptchaSuccess: function () { this.loginSuccess() }, stepCaptchaCancel: function () { var e = this; this.Logout().then((function () { e.loginBtn = !1, e.stepCaptchaVisible = !1 })) }, loginSuccess: function (e) { this.setLocalStorageData(), this.$router.push({ path: "/" }), this.isLoginError = !1, this.dictTypeData().then((function (e) { })) }, requestFailed: function (e) { this.accountLoginErrMsg = e, this.isLoginError = !0 }, getLocalStorageData: function () { var e = o.a.ls.get("LOGIN_ACCOUNT"); e && this.form.setFieldsValue({ account: e, rememberMe: !0 }) }, setLocalStorageData: function () { this.form.getFieldValue("rememberMe") ? o.a.ls.set("LOGIN_ACCOUNT", this.form.getFieldValue("account")) : o.a.ls.remove("LOGIN_ACCOUNT") } }) }, R = z, A = (a("544d"), Object(m["a"])(R, r, s, !1, null, "8b185380", null)); t["default"] = A.exports }, "1e21": function (e, t, a) { }, "206b": function (e, t, a) { "use strict"; a("2259") }, "21bf": function (e, t, a) { (function (t) { (function (t, a) { e.exports = a() })(0, (function () { var e = e || function (e, r) { var s; if ("undefined" !== typeof window && window.crypto && (s = window.crypto), "undefined" !== typeof self && self.crypto && (s = self.crypto), "undefined" !== typeof globalThis && globalThis.crypto && (s = globalThis.crypto), !s && "undefined" !== typeof window && window.msCrypto && (s = window.msCrypto), !s && "undefined" !== typeof t && t.crypto && (s = t.crypto), !s) try { s = a(1) } catch (g) { } var i = function () { if (s) { if ("function" === typeof s.getRandomValues) try { return s.getRandomValues(new Uint32Array(1))[0] } catch (g) { } if ("function" === typeof s.randomBytes) try { return s.randomBytes(4).readInt32LE() } catch (g) { } } throw new Error("Native crypto module could not be used to get secure random number.") }, n = Object.create || function () { function e() { } return function (t) { var a; return e.prototype = t, a = new e, e.prototype = null, a } }(), o = {}, l = o.lib = {}, c = l.Base = function () { return { extend: function (e) { var t = n(this); return e && t.mixIn(e), t.hasOwnProperty("init") && this.init !== t.init || (t.init = function () { t.$super.init.apply(this, arguments) }), t.init.prototype = t, t.$super = this, t }, create: function () { var e = this.extend(); return e.init.apply(e, arguments), e }, init: function () { }, mixIn: function (e) { for (var t in e) e.hasOwnProperty(t) && (this[t] = e[t]); e.hasOwnProperty("toString") && (this.toString = e.toString) }, clone: function () { return this.init.prototype.extend(this) } } }(), d = l.WordArray = c.extend({ init: function (e, t) { e = this.words = e || [], this.sigBytes = t != r ? t : 4 * e.length }, toString: function (e) { return (e || m).stringify(this) }, concat: function (e) { var t = this.words, a = e.words, r = this.sigBytes, s = e.sigBytes; if (this.clamp(), r % 4) for (var i = 0; i < s; i++) { var n = a[i >>> 2] >>> 24 - i % 4 * 8 & 255; t[r + i >>> 2] |= n << 24 - (r + i) % 4 * 8 } else for (var o = 0; o < s; o += 4)t[r + o >>> 2] = a[o >>> 2]; return this.sigBytes += s, this }, clamp: function () { var t = this.words, a = this.sigBytes; t[a >>> 2] &= 4294967295 << 32 - a % 4 * 8, t.length = e.ceil(a / 4) }, clone: function () { var e = c.clone.call(this); return e.words = this.words.slice(0), e }, random: function (e) { for (var t = [], a = 0; a < e; a += 4)t.push(i()); return new d.init(t, e) } }), u = o.enc = {}, m = u.Hex = { stringify: function (e) { for (var t = e.words, a = e.sigBytes, r = [], s = 0; s < a; s++) { var i = t[s >>> 2] >>> 24 - s % 4 * 8 & 255; r.push((i >>> 4).toString(16)), r.push((15 & i).toString(16)) } return r.join("") }, parse: function (e) { for (var t = e.length, a = [], r = 0; r < t; r += 2)a[r >>> 3] |= parseInt(e.substr(r, 2), 16) << 24 - r % 8 * 4; return new d.init(a, t / 2) } }, f = u.Latin1 = { stringify: function (e) { for (var t = e.words, a = e.sigBytes, r = [], s = 0; s < a; s++) { var i = t[s >>> 2] >>> 24 - s % 4 * 8 & 255; r.push(String.fromCharCode(i)) } return r.join("") }, parse: function (e) { for (var t = e.length, a = [], r = 0; r < t; r++)a[r >>> 2] |= (255 & e.charCodeAt(r)) << 24 - r % 4 * 8; return new d.init(a, t) } }, p = u.Utf8 = { stringify: function (e) { try { return decodeURIComponent(escape(f.stringify(e))) } catch (t) { throw new Error("Malformed UTF-8 data") } }, parse: function (e) { return f.parse(unescape(encodeURIComponent(e))) } }, h = l.BufferedBlockAlgorithm = c.extend({ reset: function () { this._data = new d.init, this._nDataBytes = 0 }, _append: function (e) { "string" == typeof e && (e = p.parse(e)), this._data.concat(e), this._nDataBytes += e.sigBytes }, _process: function (t) { var a, r = this._data, s = r.words, i = r.sigBytes, n = this.blockSize, o = 4 * n, l = i / o; l = t ? e.ceil(l) : e.max((0 | l) - this._minBufferSize, 0); var c = l * n, u = e.min(4 * c, i); if (c) { for (var m = 0; m < c; m += n)this._doProcessBlock(s, m); a = s.splice(0, c), r.sigBytes -= u } return new d.init(a, u) }, clone: function () { var e = c.clone.call(this); return e._data = this._data.clone(), e }, _minBufferSize: 0 }), v = (l.Hasher = h.extend({ cfg: c.extend(), init: function (e) { this.cfg = this.cfg.extend(e), this.reset() }, reset: function () { h.reset.call(this), this._doReset() }, update: function (e) { return this._append(e), this._process(), this }, finalize: function (e) { e && this._append(e); var t = this._doFinalize(); return t }, blockSize: 16, _createHelper: function (e) { return function (t, a) { return new e.init(a).finalize(t) } }, _createHmacHelper: function (e) { return function (t, a) { return new v.HMAC.init(e, a).finalize(t) } } }), o.algo = {}); return o }(Math); return e })) }).call(this, a("c8ba")) }, 2259: function (e, t, a) { }, "225f": function (e, t, a) { "use strict"; a("309f") }, 2537: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return e.hasPerm("sysMachine:query") ? a("div", [a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-card", { staticStyle: { "margin-bottom": "20px" }, attrs: { loading: e.loading, title: "绯荤粺淇℃伅", bordered: !1 } }, [a("table", { staticClass: "sysInfo_table" }, [a("tr", [a("td", { staticClass: "sysInfo_td" }, [e._v("涓绘満鍚嶇О锛�")]), a("td", { staticClass: "sysInfo_td" }, [e._v(e._s(this.machineBaseInfo.hostName))])]), a("tr", [a("td", { staticClass: "sysInfo_td" }, [e._v("鎿嶄綔绯荤粺锛�")]), a("td", { staticClass: "sysInfo_td" }, [e._v(e._s(this.machineBaseInfo.systemOs))])]), a("tr", [a("td", { staticClass: "sysInfo_td" }, [e._v("绯荤粺鏋舵瀯锛�")]), a("td", { staticClass: "sysInfo_td" }, [e._v(e._s(this.machineBaseInfo.osArchitecture))])]), a("tr", [a("td", { staticClass: "sysInfo_td" }, [e._v("杩愯妗嗘灦锛�")]), a("td", { staticClass: "sysInfo_td" }, [e._v(e._s(this.machineBaseInfo.frameworkDescription))])]), a("tr", [a("td", { staticClass: "sysInfo_td" }, [e._v("CPU鏍告暟锛�")]), a("td", { staticClass: "sysInfo_td" }, [e._v(e._s(this.machineBaseInfo.processorCount))])])])])], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-card", { staticStyle: { "margin-bottom": "20px" }, attrs: { loading: e.loading, title: "缃戠粶淇℃伅", bordered: !1 } }, [a("table", { staticClass: "sysInfo_table" }, [a("tr", [a("td", { staticClass: "sysInfo_td" }, [e._v("澶栫綉淇℃伅锛�")]), a("td", { staticClass: "sysInfo_td" }, [e._v(e._s(this.machineBaseInfo.wanIp))])]), a("tr", [a("td", { staticClass: "sysInfo_td" }, [e._v("IPv4鍦板潃锛�")]), a("td", { staticClass: "sysInfo_td" }, [e._v(e._s(this.machineBaseInfo.lanIp))])]), a("tr", [a("td", { staticClass: "sysInfo_td" }, [e._v("缃戝崱MAC锛�")]), a("td", { staticClass: "sysInfo_td" }, [e._v(e._s(this.machineBaseInfo.ipMac))])]), a("tr", [a("td", { staticClass: "sysInfo_td" }, [e._v("娴侀噺缁熻锛�")]), a("td", { staticClass: "sysInfo_td" }, [e._v(e._s(this.machineNetworkInfo.sendAndReceived))])]), a("tr", [a("td", { staticClass: "sysInfo_td" }, [e._v("缃戠粶閫熷害锛�")]), a("td", { staticClass: "sysInfo_td" }, [e._v(e._s(this.machineNetworkInfo.networkSpeed))])])])])], 1)], 1), a("a-card", { attrs: { loading: e.loading, title: "鍏朵粬淇℃伅", bordered: !1 } }, [a("table", { staticClass: "sysInfo_table" }, [a("tr", [a("td", { staticClass: "sysInfo_td" }, [e._v("杩愯鏃堕棿锛�")]), a("td", { staticClass: "sysInfo_td" }, [e._v(e._s(this.machineUseInfo.runTime))]), a("td", { staticClass: "sysInfo_td" }, [e._v("CPU浣跨敤鐜囷細")]), a("td", { staticClass: "sysInfo_td" }, [e._v(e._s(this.machineUseInfo.cpuRate) + "%")])]), a("tr", [a("td", { staticClass: "sysInfo_td" }, [e._v("鎬诲唴瀛橈細")]), a("td", { staticClass: "sysInfo_td" }, [e._v(e._s(this.machineUseInfo.totalRam))]), a("td", { staticClass: "sysInfo_td" }, [e._v("鍐呭瓨浣跨敤鐜囷細")]), a("td", { staticClass: "sysInfo_td" }, [e._v(e._s(this.machineUseInfo.ramRate) + "%")])])])])], 1) : e._e() }, s = [], i = a("b775"); function n(e) { return Object(i["b"])({ url: "/sysMachine/use", method: "get", params: e }) } function o(e) { return Object(i["b"])({ url: "/sysMachine/base", method: "get", params: e }) } function l(e) { return Object(i["b"])({ url: "/sysMachine/network", method: "get", params: e }) } var c = { data: function () { return { loading: !0, machineBaseInfo: [], machineUseInfo: [], machineNetworkInfo: [] } }, created: function () { this.loadMachineBaseInfo(), this.loadMachineUseInfo() }, methods: { loadMachineBaseInfo: function () { var e = this; o().then((function (t) { e.loading = !1, e.machineBaseInfo = t.data })) }, loadMachineUseInfo: function () { var e = this; n().then((function (t) { e.loading = !1, e.machineUseInfo = t.data })) }, loadMachineNetworkInfo: function () { var e = this; l().then((function (t) { e.loading = !1, e.machineNetworkInfo = t.data })) }, refreshData: function () { this.loadMachineUseInfo(), this.loadMachineNetworkInfo() } }, mounted: function () { this.timer = setInterval(this.refreshData, 3e3) }, beforeDestroy: function () { clearInterval(this.timer) } }, d = c, u = (a("fea1"), a("2877")), m = Object(u["a"])(d, r, s, !1, null, null, null); t["default"] = m.exports }, 2730: function (e, t, a) { "use strict"; a.d(t, "d", (function () { return s })), a.d(t, "a", (function () { return i })), a.d(t, "c", (function () { return n })), a.d(t, "b", (function () { return o })), a.d(t, "e", (function () { return l })); var r = a("b775"); function s(e) { return Object(r["b"])({ url: "/sysConfig/page", method: "get", params: e }) } function i(e) { return Object(r["b"])({ url: "/sysConfig/add", method: "post", data: e }) } function n(e) { return Object(r["b"])({ url: "/sysConfig/edit", method: "post", data: e }) } function o(e) { return Object(r["b"])({ url: "/sysConfig/delete", method: "post", data: e }) } function l(e) { return Object(r["b"])({ url: "/sysDictType/dropDown", method: "get", params: e }) } }, "28a9": function (e, t, a) { "use strict"; a.r(t); for (var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "page-header-index-wide" }, [a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { style: { marginBottom: "24px" }, attrs: { sm: 24, md: 12, xl: 6 } }, [a("chart-card", { attrs: { loading: e.loading, title: "鎬婚攢鍞", total: "锟�126,560" } }, [a("a-tooltip", { attrs: { slot: "action", title: "鎸囨爣璇存槑" }, slot: "action" }, [a("a-icon", { attrs: { type: "info-circle-o" } })], 1), a("div", [a("trend", { staticStyle: { "margin-right": "16px" }, attrs: { flag: "up" } }, [a("span", { attrs: { slot: "term" }, slot: "term" }, [e._v("鍛ㄥ悓姣�")]), e._v(" 12% ")]), a("trend", { attrs: { flag: "down" } }, [a("span", { attrs: { slot: "term" }, slot: "term" }, [e._v("鏃ュ悓姣�")]), e._v(" 11% ")])], 1), a("template", { slot: "footer" }, [e._v("鏃ュ潎閿�鍞"), a("span", [e._v("锟� 234.56")])])], 2)], 1), a("a-col", { style: { marginBottom: "24px" }, attrs: { sm: 24, md: 12, xl: 6 } }, [a("chart-card", { attrs: { loading: e.loading, title: "璁块棶閲�", total: e._f("NumberFormat")(8846) } }, [a("a-tooltip", { attrs: { slot: "action", title: "鎸囨爣璇存槑" }, slot: "action" }, [a("a-icon", { attrs: { type: "info-circle-o" } })], 1), a("div", [a("mini-area")], 1), a("template", { slot: "footer" }, [e._v("鏃ヨ闂噺"), a("span", [e._v(" " + e._s(e._f("NumberFormat")("1234")))])])], 2)], 1), a("a-col", { style: { marginBottom: "24px" }, attrs: { sm: 24, md: 12, xl: 6 } }, [a("chart-card", { attrs: { loading: e.loading, title: "鏀粯绗旀暟", total: e._f("NumberFormat")(6560) } }, [a("a-tooltip", { attrs: { slot: "action", title: "鎸囨爣璇存槑" }, slot: "action" }, [a("a-icon", { attrs: { type: "info-circle-o" } })], 1), a("div", [a("mini-bar")], 1), a("template", { slot: "footer" }, [e._v("杞寲鐜� "), a("span", [e._v("60%")])])], 2)], 1), a("a-col", { style: { marginBottom: "24px" }, attrs: { sm: 24, md: 12, xl: 6 } }, [a("chart-card", { attrs: { loading: e.loading, title: "杩愯惀娲诲姩鏁堟灉", total: "78%" } }, [a("a-tooltip", { attrs: { slot: "action", title: "鎸囨爣璇存槑" }, slot: "action" }, [a("a-icon", { attrs: { type: "info-circle-o" } })], 1), a("div", [a("mini-progress", { attrs: { color: "rgb(19, 194, 194)", target: 80, percentage: 78, height: "8px" } })], 1), a("template", { slot: "footer" }, [a("trend", { staticStyle: { "margin-right": "16px" }, attrs: { flag: "down" } }, [a("span", { attrs: { slot: "term" }, slot: "term" }, [e._v("鍚屽懆姣�")]), e._v(" 12% ")]), a("trend", { attrs: { flag: "up" } }, [a("span", { attrs: { slot: "term" }, slot: "term" }, [e._v("鏃ョ幆姣�")]), e._v(" 80% ")])], 1)], 2)], 1)], 1), a("a-card", { attrs: { loading: e.loading, bordered: !1, "body-style": { padding: "0" } } }, [a("div", { staticClass: "salesCard" }, [a("a-tabs", { attrs: { "default-active-key": "1", size: "large", "tab-bar-style": { marginBottom: "24px", paddingLeft: "16px" } } }, [a("div", { staticClass: "extra-wrapper", attrs: { slot: "tabBarExtraContent" }, slot: "tabBarExtraContent" }, [a("div", { staticClass: "extra-item" }, [a("a", [e._v("浠婃棩")]), a("a", [e._v("鏈懆")]), a("a", [e._v("鏈湀")]), a("a", [e._v("鏈勾")])]), a("a-range-picker", { style: { width: "230px" } })], 1), a("a-tab-pane", { key: "1", attrs: { loading: "true", tab: "閿�鍞" } }, [a("a-row", [a("a-col", { attrs: { xl: 16, lg: 12, md: 12, sm: 24, xs: 24 } }, [a("bar", { attrs: { data: e.barData, title: "閿�鍞鎺掕" } })], 1), a("a-col", { attrs: { xl: 8, lg: 12, md: 12, sm: 24, xs: 24 } }, [a("rank-list", { attrs: { title: "闂ㄥ簵閿�鍞帓琛屾", list: e.rankList } })], 1)], 1)], 1), a("a-tab-pane", { key: "2", attrs: { tab: "璁块棶閲�" } }, [a("a-row", [a("a-col", { attrs: { xl: 16, lg: 12, md: 12, sm: 24, xs: 24 } }, [a("bar", { attrs: { data: e.barData2, title: "閿�鍞瓒嬪娍" } })], 1), a("a-col", { attrs: { xl: 8, lg: 12, md: 12, sm: 24, xs: 24 } }, [a("rank-list", { attrs: { title: "闂ㄥ簵閿�鍞帓琛屾", list: e.rankList } })], 1)], 1)], 1)], 1)], 1)]), a("div", { staticClass: "antd-pro-pages-dashboard-analysis-twoColLayout", class: e.isDesktop() ? "desktop" : "" }, [a("a-row", { style: { marginTop: "24px" }, attrs: { gutter: 24, type: "flex" } }, [a("a-col", { attrs: { xl: 12, lg: 24, md: 24, sm: 24, xs: 24 } }, [a("a-card", { style: { height: "100%" }, attrs: { loading: e.loading, bordered: !1, title: "绾夸笂鐑棬鎼滅储" } }, [a("a-dropdown", { attrs: { slot: "extra", trigger: ["click"], placement: "bottomLeft" }, slot: "extra" }, [a("a", { staticClass: "ant-dropdown-link", attrs: { href: "#" } }, [a("a-icon", { attrs: { type: "ellipsis" } })], 1), a("a-menu", { attrs: { slot: "overlay" }, slot: "overlay" }, [a("a-menu-item", [a("a", { attrs: { href: "javascript:;" } }, [e._v("鎿嶄綔涓�")])]), a("a-menu-item", [a("a", { attrs: { href: "javascript:;" } }, [e._v("鎿嶄綔浜�")])])], 1)], 1), a("a-row", { attrs: { gutter: 68 } }, [a("a-col", { style: { marginBottom: " 24px" }, attrs: { xs: 24, sm: 12 } }, [a("number-info", { attrs: { total: 12321, "sub-total": 17.1 } }, [a("span", { attrs: { slot: "subtitle" }, slot: "subtitle" }, [a("span", [e._v("鎼滅储鐢ㄦ埛鏁�")]), a("a-tooltip", { attrs: { slot: "action", title: "鎸囨爣璇存槑" }, slot: "action" }, [a("a-icon", { style: { marginLeft: "8px" }, attrs: { type: "info-circle-o" } })], 1)], 1)]), a("div", [a("mini-smooth-area", { style: { height: "45px" }, attrs: { dataSource: e.searchUserData, scale: e.searchUserScale } })], 1)], 1), a("a-col", { style: { marginBottom: " 24px" }, attrs: { xs: 24, sm: 12 } }, [a("number-info", { attrs: { total: 2.7, "sub-total": 26.2, status: "down" } }, [a("span", { attrs: { slot: "subtitle" }, slot: "subtitle" }, [a("span", [e._v("浜哄潎鎼滅储娆℃暟")]), a("a-tooltip", { attrs: { slot: "action", title: "鎸囨爣璇存槑" }, slot: "action" }, [a("a-icon", { style: { marginLeft: "8px" }, attrs: { type: "info-circle-o" } })], 1)], 1)]), a("div", [a("mini-smooth-area", { style: { height: "45px" }, attrs: { dataSource: e.searchUserData, scale: e.searchUserScale } })], 1)], 1)], 1), a("div", { staticClass: "ant-table-wrapper" }, [a("a-table", { attrs: { "row-key": "index", size: "small", columns: e.searchTableColumns, dataSource: e.searchData, pagination: { pageSize: 5 } }, scopedSlots: e._u([{ key: "range", fn: function (t, r) { return a("span", {}, [a("trend", { attrs: { flag: 0 === r.status ? "up" : "down" } }, [e._v(" " + e._s(t) + "% ")])], 1) } }]) })], 1)], 1)], 1), a("a-col", { attrs: { xl: 12, lg: 24, md: 24, sm: 24, xs: 24 } }, [a("a-card", { staticClass: "antd-pro-pages-dashboard-analysis-salesCard", style: { height: "100%" }, attrs: { loading: e.loading, bordered: !1, title: "閿�鍞绫诲埆鍗犳瘮" } }, [a("div", { staticStyle: { height: "inherit" }, attrs: { slot: "extra" }, slot: "extra" }, [a("span", { staticClass: "dashboard-analysis-iconGroup" }, [a("a-dropdown", { attrs: { trigger: ["click"], placement: "bottomLeft" } }, [a("a-icon", { staticClass: "ant-dropdown-link", attrs: { type: "ellipsis" } }), a("a-menu", { attrs: { slot: "overlay" }, slot: "overlay" }, [a("a-menu-item", [a("a", { attrs: { href: "javascript:;" } }, [e._v("鎿嶄綔涓�")])]), a("a-menu-item", [a("a", { attrs: { href: "javascript:;" } }, [e._v("鎿嶄綔浜�")])])], 1)], 1)], 1), a("div", { staticClass: "analysis-salesTypeRadio" }, [a("a-radio-group", { attrs: { defaultValue: "a" } }, [a("a-radio-button", { attrs: { value: "a" } }, [e._v("鍏ㄩ儴娓犻亾")]), a("a-radio-button", { attrs: { value: "b" } }, [e._v("绾夸笂")]), a("a-radio-button", { attrs: { value: "c" } }, [e._v("闂ㄥ簵")])], 1)], 1)]), a("h4", [e._v("閿�鍞")]), a("div", [a("div", [a("v-chart", { attrs: { "force-fit": !0, height: 405, data: e.pieData, scale: e.pieScale } }, [a("v-tooltip", { attrs: { showTitle: !1, dataKey: "item*percent" } }), a("v-axis"), a("v-legend", { attrs: { dataKey: "item" } }), a("v-pie", { attrs: { position: "percent", color: "item", vStyle: e.pieStyle } }), a("v-coord", { attrs: { type: "theta", radius: .75, innerRadius: .6 } })], 1)], 1)])])], 1)], 1)], 1)], 1) }, s = [], i = a("c1df"), n = a.n(i), o = a("2af9"), l = a("ac0d"), c = [], d = [], u = 0; u < 12; u += 1)c.push({ x: "".concat(u + 1, "鏈�"), y: Math.floor(1e3 * Math.random()) + 200 }), d.push({ x: "".concat(u + 1, "鏈�"), y: Math.floor(1e3 * Math.random()) + 200 }); for (var m = [], f = 0; f < 7; f++)m.push({ name: "鐧介弓宀� " + (f + 1) + " 鍙峰簵", total: 1234.56 - 100 * f }); for (var p = [], h = 0; h < 7; h++)p.push({ x: n()().add(h, "days").format("YYYY-MM-DD"), y: Math.ceil(10 * Math.random()) }); for (var v = [{ dataKey: "x", alias: "鏃堕棿" }, { dataKey: "y", alias: "鐢ㄦ埛鏁�", min: 0, max: 10 }], g = [{ dataIndex: "MenuIndex.vue", title: "鎺掑悕", width: 90 }, { dataIndex: "keyword", title: "鎼滅储鍏抽敭璇�" }, { dataIndex: "count", title: "鐢ㄦ埛鏁�" }, { dataIndex: "range", title: "鍛ㄦ定骞�", align: "right", sorter: function (e, t) { return e.range - t.range }, scopedSlots: { customRender: "range" } }], b = [], y = 0; y < 50; y += 1)b.push({ index: y + 1, keyword: "鎼滅储鍏抽敭璇�-".concat(y), count: Math.floor(1e3 * Math.random()), range: Math.floor(100 * Math.random()), status: Math.floor(10 * Math.random() % 2) }); var w = a("7104"), _ = [{ item: "瀹剁敤鐢靛櫒", count: 32.2 }, { item: "椋熺敤閰掓按", count: 21 }, { item: "涓姢鍋ュ悍", count: 17 }, { item: "鏈嶉グ绠卞寘", count: 13 }, { item: "姣嶅┐浜у搧", count: 9 }, { item: "鍏朵粬", count: 7.8 }], C = [{ dataKey: "percent", min: 0, formatter: ".0%" }], x = (new w.View).source(_); x.transform({ type: "percent", field: "count", dimension: "item", as: "percent" }); var k = x.rows, S = { name: "Analysis", mixins: [l["c"]], components: { ChartCard: o["e"], MiniArea: o["j"], MiniBar: o["k"], MiniProgress: o["l"], RankList: o["p"], Bar: o["d"], Trend: o["v"], NumberInfo: o["n"], MiniSmoothArea: o["m"] }, data: function () { return { loading: !0, rankList: m, searchUserData: p, searchUserScale: v, searchTableColumns: g, searchData: b, barData: c, barData2: d, pieScale: C, pieData: k, sourceData: _, pieStyle: { stroke: "#fff", lineWidth: 1 } } }, created: function () { var e = this; setTimeout((function () { e.loading = !e.loading }), 1e3) } }, T = S, D = (a("d0c2"), a("2877")), P = Object(D["a"])(T, r, s, !1, null, "5bb5082a", null); t["default"] = P.exports }, 2930: function (e, t, a) { "use strict"; a("a4fe") }, "2a66": function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("38ba")) })(0, (function (e) { return e.pad.ZeroPadding = { pad: function (e, t) { var a = 4 * t; e.clamp(), e.sigBytes += a - (e.sigBytes % a || a) }, unpad: function (e) { var t = e.words, a = e.sigBytes - 1; for (a = e.sigBytes - 1; a >= 0; a--)if (t[a >>> 2] >>> 24 - a % 4 * 8 & 255) { e.sigBytes = a + 1; break } } }, e.pad.ZeroPadding })) }, "2b79": function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("df2f"), a("5980")) })(0, (function (e) { return function () { var t = e, a = t.lib, r = a.Base, s = a.WordArray, i = t.algo, n = i.MD5, o = i.EvpKDF = r.extend({ cfg: r.extend({ keySize: 4, hasher: n, iterations: 1 }), init: function (e) { this.cfg = this.cfg.extend(e) }, compute: function (e, t) { var a, r = this.cfg, i = r.hasher.create(), n = s.create(), o = n.words, l = r.keySize, c = r.iterations; while (o.length < l) { a && i.update(a), a = i.update(e).finalize(t), i.reset(); for (var d = 1; d < c; d++)a = i.finalize(a), i.reset(); n.concat(a) } return n.sigBytes = 4 * l, n } }); t.EvpKDF = function (e, t, a) { return o.create(a).compute(e, t) } }(), e.EvpKDF })) }, "2e36": function (e, t, a) { "use strict"; a("b26c") }, "309f": function (e, t, a) { }, "30b2": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "ant-pro-pages-account-projects-cardList" }, [a("a-list", { attrs: { loading: e.loading, "data-source": e.data, grid: { gutter: 24, xxl: 3, xl: 2, lg: 2, md: 2, sm: 2, xs: 1 } }, scopedSlots: e._u([{ key: "renderItem", fn: function (t) { return a("a-list-item", {}, [a("a-card", { staticClass: "ant-pro-pages-account-projects-card", attrs: { hoverable: "" } }, [a("img", { attrs: { slot: "cover", src: t.cover, alt: t.title }, slot: "cover" }), a("a-card-meta", { attrs: { title: t.title } }, [a("template", { slot: "description" }, [a("ellipsis", { attrs: { length: 50 } }, [e._v(e._s(t.description))])], 1)], 2), a("div", { staticClass: "cardItemContent" }, [a("span", [e._v(e._s(e._f("fromNow")(t.updatedAt)))]), a("div", { staticClass: "avatarList" }, [a("avatar-list", { attrs: { size: "mini" } }, e._l(t.members, (function (e, r) { return a("avatar-list-item", { key: t.id + "-avatar-" + r, attrs: { src: e.avatar, tips: e.name } }) })), 1)], 1)])], 1)], 1) } }]) })], 1) }, s = [], i = a("c1df"), n = a.n(i), o = a("2af9"), l = o["u"].Option, c = o["c"].AvatarItem, d = { name: "Project", components: { AvatarList: o["c"], AvatarListItem: c, Ellipsis: o["h"], TagSelect: o["u"], TagSelectOption: l, StandardFormRow: o["s"] }, data: function () { return { data: [], form: this.$form.createForm(this), loading: !0 } }, filters: { fromNow: function (e) { return n()(e).fromNow() } }, mounted: function () { this.getList() }, methods: { handleChange: function (e) { }, getList: function () { this.data = [{ id: "123", cover: "https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png", content: "娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�", message: "娑堟伅", description: "灏忚妗嗘灦浜у搧", href: "https://xiaonuo.vip", title: "灏忚", updatedAt: "2021-05-01 12:00:00", members: [{ avatar: "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", name: "鏇蹭附涓�", id: "member1" }, { avatar: "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", name: "鐜嬫槶鍚�", id: "member2" }, { avatar: "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", name: "钁e濞�", id: "member3" }] }, { id: "1234", cover: "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png", content: "娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�", message: "娑堟伅", description: "灏忚妗嗘灦浜у搧", href: "https://xiaonuo.vip", title: "灏忚", updatedAt: "2021-05-01 12:00:00", members: [{ avatar: "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", name: "鏇蹭附涓�", id: "member1" }, { avatar: "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", name: "鐜嬫槶鍚�", id: "member2" }, { avatar: "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", name: "钁e濞�", id: "member3" }] }, { id: "12345", cover: "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png", content: "娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�", message: "娑堟伅", description: "灏忚妗嗘灦浜у搧", href: "https://xiaonuo.vip", title: "灏忚", updatedAt: "2021-05-01 12:00:00", members: [{ avatar: "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", name: "鏇蹭附涓�", id: "member1" }, { avatar: "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", name: "鐜嬫槶鍚�", id: "member2" }, { avatar: "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", name: "钁e濞�", id: "member3" }] }, { id: "1236", cover: "https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png", content: "娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�", message: "娑堟伅", description: "灏忚妗嗘灦浜у搧", href: "https://xiaonuo.vip", title: "灏忚", updatedAt: "2021-05-01 12:00:00", members: [{ avatar: "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", name: "鏇蹭附涓�", id: "member1" }, { avatar: "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", name: "鐜嬫槶鍚�", id: "member2" }, { avatar: "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", name: "钁e濞�", id: "member3" }] }], this.loading = !1 } } }, u = d, m = (a("11cd"), a("2877")), f = Object(m["a"])(u, r, s, !1, null, "29afc0d2", null); t["default"] = f.exports }, 3252: function (e, t, a) { (function (t, r) { e.exports = r(a("21bf")) })(0, (function (e) { return function (t) { var a = e, r = a.lib, s = r.Base, i = r.WordArray, n = a.x64 = {}; n.Word = s.extend({ init: function (e, t) { this.high = e, this.low = t } }), n.WordArray = s.extend({ init: function (e, a) { e = this.words = e || [], this.sigBytes = a != t ? a : 8 * e.length }, toX32: function () { for (var e = this.words, t = e.length, a = [], r = 0; r < t; r++) { var s = e[r]; a.push(s.high), a.push(s.low) } return i.create(a, this.sigBytes) }, clone: function () { for (var e = s.clone.call(this), t = e.words = this.words.slice(0), a = t.length, r = 0; r < a; r++)t[r] = t[r].clone(); return e } }) }(), e })) }, 3266: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "缂栬緫绉熸埛", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { staticStyle: { display: "none" }, attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍏徃鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ュ叕鍙稿悕绉�" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ュ叕鍙稿悕绉�'}]}]" }], attrs: { placeholder: "鍏徃鍚嶇О" } })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "绠$悊鍛樺鍚�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["adminName", { rules: [{ required: !0, message: "璇疯緭鍏ョ鐞嗗憳濮撳悕" }] }], expression: "['adminName', {rules: [{required: true, message: '璇疯緭鍏ョ鐞嗗憳濮撳悕'}]}]" }], attrs: { placeholder: "璇疯緭鍏ョ鐞嗗憳濮撳悕" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "閭(璐﹀彿)", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["email"], expression: "['email']" }], attrs: { placeholder: "璇疯緭鍏ョ數瀛愰偖绠�" } })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "鐢佃瘽鍙风爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["phone"], expression: "['phone']" }], attrs: { placeholder: "璇疯緭鍏ョ數璇濆彿鐮�" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 24, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol_JG, wrapperCol: e.wrapperCol_JG, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { rows: 2, placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1)], 1)], 1)], 1) }, s = [], i = (a("b0c0"), a("d3b7"), a("a18a")), n = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 6 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }, labelCol_JG: { xs: { span: 24 }, sm: { span: 3 } }, wrapperCol_JG: { xs: { span: 24 }, sm: { span: 20 } }, visible: !1, confirmLoading: !1, formLoading: !1, form: this.$form.createForm(this) } }, methods: { edit: function (e) { var t = this; this.visible = !0, setTimeout((function () { t.form.setFieldsValue({ id: e.id, name: e.name, adminName: e.adminName, host: e.host, email: e.email, phone: e.phone, remark: e.remark, connection: e.connection }) }), 100) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(i["c"])(a).then((function (t) { t.success ? (e.$message.success("缂栬緫鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a), e.form.resetFields()) : e.$message.error("缂栬緫澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, o = n, l = a("2877"), c = Object(l["a"])(o, r, s, !1, null, null, null); t["default"] = c.exports }, 3452: function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("3252"), a("17e1"), a("a8ce"), a("1132"), a("c1bc"), a("72fe"), a("df2f"), a("94f8"), a("191b"), a("d6e6"), a("b86b"), a("e61b"), a("10b7"), a("5980"), a("7bbc"), a("2b79"), a("38ba"), a("00bb"), a("f4ea"), a("aaef"), a("4ba9"), a("81bf"), a("a817"), a("a11b"), a("8cef"), a("2a66"), a("b86c"), a("6d08e"), a("c198"), a("a40e"), a("c3b6"), a("1382"), a("3d5a")) })(0, (function (e) { return e })) }, 3573: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { attrs: { id: "digital-flop" } }, [e._l(e.digitalFlopData, (function (t) { return a("div", { key: t.title, staticClass: "digital-flop-item" }, [a("div", { staticClass: "digital-flop-title" }, [e._v(e._s(t.title))]), a("div", { staticClass: "digital-flop" }, [a("dv-digital-flop", { staticStyle: { width: "100px", height: "50px" }, attrs: { config: t.number } }), a("div", { staticClass: "unit" }, [e._v(e._s(t.unit))])], 1)]) })), a("dv-decoration-10")], 2) }, s = [], i = { name: "DigitalFlop", data: function () { return { digitalFlopData: [] } }, methods: { createData: function () { var e = this.randomExtend; this.digitalFlopData = [{ title: "绠″吇閲岀▼", number: { number: [e(2e4, 3e4)], content: "{nt}", textAlign: "right", style: { fill: "#4d99fc", fontWeight: "bold" } }, unit: "鍏噷" }, { title: "妗ユ", number: { number: [e(20, 30)], content: "{nt}", textAlign: "right", style: { fill: "#f46827", fontWeight: "bold" } }, unit: "搴�" }, { title: "娑垫礊闅ч亾", number: { number: [e(20, 30)], content: "{nt}", textAlign: "right", style: { fill: "#40faee", fontWeight: "bold" } }, unit: "涓�" }, { title: "鍖濋亾", number: { number: [e(10, 20)], content: "{nt}", textAlign: "right", style: { fill: "#4d99fc", fontWeight: "bold" } }, unit: "涓�" }, { title: "闅ч亾", number: { number: [e(5, 10)], content: "{nt}", textAlign: "right", style: { fill: "#f46827", fontWeight: "bold" } }, unit: "涓�" }, { title: "鏈嶅姟鍖�", number: { number: [e(5, 10)], content: "{nt}", textAlign: "right", style: { fill: "#40faee", fontWeight: "bold" } }, unit: "涓�" }, { title: "鏀惰垂绔�", number: { number: [e(5, 10)], content: "{nt}", textAlign: "right", style: { fill: "#4d99fc", fontWeight: "bold" } }, unit: "涓�" }, { title: "瓒呴檺绔�", number: { number: [e(5, 10)], content: "{nt}", textAlign: "right", style: { fill: "#f46827", fontWeight: "bold" } }, unit: "涓�" }, { title: "鍋滆溅鍖�", number: { number: [e(5, 10)], content: "{nt}", textAlign: "right", style: { fill: "#40faee", fontWeight: "bold" } }, unit: "涓�" }] }, randomExtend: function (e, t) { return 1 === arguments.length ? parseInt(Math.random() * e + 1, 10) : parseInt(Math.random() * (t - e + 1) + e, 10) } }, mounted: function () { var e = this.createData; e(), setInterval(e, 3e4) } }, n = i, o = (a("e74c"), a("2877")), l = Object(o["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, 3641: function (e, t, a) { }, "38ba": function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("2b79")) })(0, (function (e) { e.lib.Cipher || function (t) { var a = e, r = a.lib, s = r.Base, i = r.WordArray, n = r.BufferedBlockAlgorithm, o = a.enc, l = (o.Utf8, o.Base64), c = a.algo, d = c.EvpKDF, u = r.Cipher = n.extend({ cfg: s.extend(), createEncryptor: function (e, t) { return this.create(this._ENC_XFORM_MODE, e, t) }, createDecryptor: function (e, t) { return this.create(this._DEC_XFORM_MODE, e, t) }, init: function (e, t, a) { this.cfg = this.cfg.extend(a), this._xformMode = e, this._key = t, this.reset() }, reset: function () { n.reset.call(this), this._doReset() }, process: function (e) { return this._append(e), this._process() }, finalize: function (e) { e && this._append(e); var t = this._doFinalize(); return t }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function () { function e(e) { return "string" == typeof e ? x : w } return function (t) { return { encrypt: function (a, r, s) { return e(r).encrypt(t, a, r, s) }, decrypt: function (a, r, s) { return e(r).decrypt(t, a, r, s) } } } }() }), m = (r.StreamCipher = u.extend({ _doFinalize: function () { var e = this._process(!0); return e }, blockSize: 1 }), a.mode = {}), f = r.BlockCipherMode = s.extend({ createEncryptor: function (e, t) { return this.Encryptor.create(e, t) }, createDecryptor: function (e, t) { return this.Decryptor.create(e, t) }, init: function (e, t) { this._cipher = e, this._iv = t } }), p = m.CBC = function () { var e = f.extend(); function a(e, a, r) { var s, i = this._iv; i ? (s = i, this._iv = t) : s = this._prevBlock; for (var n = 0; n < r; n++)e[a + n] ^= s[n] } return e.Encryptor = e.extend({ processBlock: function (e, t) { var r = this._cipher, s = r.blockSize; a.call(this, e, t, s), r.encryptBlock(e, t), this._prevBlock = e.slice(t, t + s) } }), e.Decryptor = e.extend({ processBlock: function (e, t) { var r = this._cipher, s = r.blockSize, i = e.slice(t, t + s); r.decryptBlock(e, t), a.call(this, e, t, s), this._prevBlock = i } }), e }(), h = a.pad = {}, v = h.Pkcs7 = { pad: function (e, t) { for (var a = 4 * t, r = a - e.sigBytes % a, s = r << 24 | r << 16 | r << 8 | r, n = [], o = 0; o < r; o += 4)n.push(s); var l = i.create(n, r); e.concat(l) }, unpad: function (e) { var t = 255 & e.words[e.sigBytes - 1 >>> 2]; e.sigBytes -= t } }, g = (r.BlockCipher = u.extend({ cfg: u.cfg.extend({ mode: p, padding: v }), reset: function () { var e; u.reset.call(this); var t = this.cfg, a = t.iv, r = t.mode; this._xformMode == this._ENC_XFORM_MODE ? e = r.createEncryptor : (e = r.createDecryptor, this._minBufferSize = 1), this._mode && this._mode.__creator == e ? this._mode.init(this, a && a.words) : (this._mode = e.call(r, this, a && a.words), this._mode.__creator = e) }, _doProcessBlock: function (e, t) { this._mode.processBlock(e, t) }, _doFinalize: function () { var e, t = this.cfg.padding; return this._xformMode == this._ENC_XFORM_MODE ? (t.pad(this._data, this.blockSize), e = this._process(!0)) : (e = this._process(!0), t.unpad(e)), e }, blockSize: 4 }), r.CipherParams = s.extend({ init: function (e) { this.mixIn(e) }, toString: function (e) { return (e || this.formatter).stringify(this) } })), b = a.format = {}, y = b.OpenSSL = { stringify: function (e) { var t, a = e.ciphertext, r = e.salt; return t = r ? i.create([1398893684, 1701076831]).concat(r).concat(a) : a, t.toString(l) }, parse: function (e) { var t, a = l.parse(e), r = a.words; return 1398893684 == r[0] && 1701076831 == r[1] && (t = i.create(r.slice(2, 4)), r.splice(0, 4), a.sigBytes -= 16), g.create({ ciphertext: a, salt: t }) } }, w = r.SerializableCipher = s.extend({ cfg: s.extend({ format: y }), encrypt: function (e, t, a, r) { r = this.cfg.extend(r); var s = e.createEncryptor(a, r), i = s.finalize(t), n = s.cfg; return g.create({ ciphertext: i, key: a, iv: n.iv, algorithm: e, mode: n.mode, padding: n.padding, blockSize: e.blockSize, formatter: r.format }) }, decrypt: function (e, t, a, r) { r = this.cfg.extend(r), t = this._parse(t, r.format); var s = e.createDecryptor(a, r).finalize(t.ciphertext); return s }, _parse: function (e, t) { return "string" == typeof e ? t.parse(e, this) : e } }), _ = a.kdf = {}, C = _.OpenSSL = { execute: function (e, t, a, r) { r || (r = i.random(8)); var s = d.create({ keySize: t + a }).compute(e, r), n = i.create(s.words.slice(t), 4 * a); return s.sigBytes = 4 * t, g.create({ key: s, iv: n, salt: r }) } }, x = r.PasswordBasedCipher = w.extend({ cfg: w.cfg.extend({ kdf: C }), encrypt: function (e, t, a, r) { r = this.cfg.extend(r); var s = r.kdf.execute(a, e.keySize, e.ivSize); r.iv = s.iv; var i = w.encrypt.call(this, e, t, s.key, r); return i.mixIn(s), i }, decrypt: function (e, t, a, r) { r = this.cfg.extend(r), t = this._parse(t, r.format); var s = r.kdf.execute(a, e.keySize, e.ivSize, t.salt); r.iv = s.iv; var i = w.decrypt.call(this, e, t, s.key, r); return i } }) }() })) }, "3c70": function (e, t, a) { "use strict"; a("975c") }, "3d41": function (e, t, a) { }, "3d5a": function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("1132"), a("72fe"), a("2b79"), a("38ba")) })(0, (function (e) { return function () { var t = e, a = t.lib, r = a.StreamCipher, s = t.algo, i = [], n = [], o = [], l = s.RabbitLegacy = r.extend({ _doReset: function () { var e = this._key.words, t = this.cfg.iv, a = this._X = [e[0], e[3] << 16 | e[2] >>> 16, e[1], e[0] << 16 | e[3] >>> 16, e[2], e[1] << 16 | e[0] >>> 16, e[3], e[2] << 16 | e[1] >>> 16], r = this._C = [e[2] << 16 | e[2] >>> 16, 4294901760 & e[0] | 65535 & e[1], e[3] << 16 | e[3] >>> 16, 4294901760 & e[1] | 65535 & e[2], e[0] << 16 | e[0] >>> 16, 4294901760 & e[2] | 65535 & e[3], e[1] << 16 | e[1] >>> 16, 4294901760 & e[3] | 65535 & e[0]]; this._b = 0; for (var s = 0; s < 4; s++)c.call(this); for (s = 0; s < 8; s++)r[s] ^= a[s + 4 & 7]; if (t) { var i = t.words, n = i[0], o = i[1], l = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8), d = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), u = l >>> 16 | 4294901760 & d, m = d << 16 | 65535 & l; r[0] ^= l, r[1] ^= u, r[2] ^= d, r[3] ^= m, r[4] ^= l, r[5] ^= u, r[6] ^= d, r[7] ^= m; for (s = 0; s < 4; s++)c.call(this) } }, _doProcessBlock: function (e, t) { var a = this._X; c.call(this), i[0] = a[0] ^ a[5] >>> 16 ^ a[3] << 16, i[1] = a[2] ^ a[7] >>> 16 ^ a[5] << 16, i[2] = a[4] ^ a[1] >>> 16 ^ a[7] << 16, i[3] = a[6] ^ a[3] >>> 16 ^ a[1] << 16; for (var r = 0; r < 4; r++)i[r] = 16711935 & (i[r] << 8 | i[r] >>> 24) | 4278255360 & (i[r] << 24 | i[r] >>> 8), e[t + r] ^= i[r] }, blockSize: 4, ivSize: 2 }); function c() { for (var e = this._X, t = this._C, a = 0; a < 8; a++)n[a] = t[a]; t[0] = t[0] + 1295307597 + this._b | 0, t[1] = t[1] + 3545052371 + (t[0] >>> 0 < n[0] >>> 0 ? 1 : 0) | 0, t[2] = t[2] + 886263092 + (t[1] >>> 0 < n[1] >>> 0 ? 1 : 0) | 0, t[3] = t[3] + 1295307597 + (t[2] >>> 0 < n[2] >>> 0 ? 1 : 0) | 0, t[4] = t[4] + 3545052371 + (t[3] >>> 0 < n[3] >>> 0 ? 1 : 0) | 0, t[5] = t[5] + 886263092 + (t[4] >>> 0 < n[4] >>> 0 ? 1 : 0) | 0, t[6] = t[6] + 1295307597 + (t[5] >>> 0 < n[5] >>> 0 ? 1 : 0) | 0, t[7] = t[7] + 3545052371 + (t[6] >>> 0 < n[6] >>> 0 ? 1 : 0) | 0, this._b = t[7] >>> 0 < n[7] >>> 0 ? 1 : 0; for (a = 0; a < 8; a++) { var r = e[a] + t[a], s = 65535 & r, i = r >>> 16, l = ((s * s >>> 17) + s * i >>> 15) + i * i, c = ((4294901760 & r) * r | 0) + ((65535 & r) * r | 0); o[a] = l ^ c } e[0] = o[0] + (o[7] << 16 | o[7] >>> 16) + (o[6] << 16 | o[6] >>> 16) | 0, e[1] = o[1] + (o[0] << 8 | o[0] >>> 24) + o[7] | 0, e[2] = o[2] + (o[1] << 16 | o[1] >>> 16) + (o[0] << 16 | o[0] >>> 16) | 0, e[3] = o[3] + (o[2] << 8 | o[2] >>> 24) + o[1] | 0, e[4] = o[4] + (o[3] << 16 | o[3] >>> 16) + (o[2] << 16 | o[2] >>> 16) | 0, e[5] = o[5] + (o[4] << 8 | o[4] >>> 24) + o[3] | 0, e[6] = o[6] + (o[5] << 16 | o[5] >>> 16) + (o[4] << 16 | o[4] >>> 16) | 0, e[7] = o[7] + (o[6] << 8 | o[6] >>> 24) + o[5] | 0 } t.RabbitLegacy = r._createHelper(l) }(), e.RabbitLegacy })) }, 4015: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e.hasPerm("sysOnlineUser:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鎼滅储" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ヨ处鍙锋垨濮撳悕" }, model: { value: e.queryParam.searchValue, callback: function (t) { e.$set(e.queryParam, "searchValue", t) }, expression: "queryParam.searchValue" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")])], 1)], 1)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "lastLoginAddress", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 20, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "lastLoginBrowser", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 20, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "action", fn: function (t, r) { return a("span", {}, [e.hasPerm("sysOnlineUser:forceExist") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "鏄惁寮哄埗涓嬬嚎璇ョ敤鎴凤紵" }, on: { confirm: function () { return e.forceExist(r) } } }, [a("a", [e._v("寮哄埗涓嬬嚎")])]) : e._e()], 1) } }]) })], 1)], 1) }, s = [], i = a("4360"), n = a("2af9"), o = a("b775"); function l(e) { return Object(o["b"])({ url: "/sysOnlineUser/page", method: "get", params: e }) } function c(e) { return Object(o["b"])({ url: "/sysOnlineUser/forceExist", method: "post", data: e }) } var d = { components: { XCard: n["w"], STable: n["r"], Ellipsis: n["h"] }, data: function () { var e = this; return { queryParam: {}, columns: [{ title: "璐﹀彿", dataIndex: "account" }, { title: "濮撳悕", dataIndex: "name" }, { title: "鐧诲綍IP", dataIndex: "lastLoginIp" }, { title: "鐧诲綍鏃堕棿", dataIndex: "lastTime" }, { title: "娴忚鍣�", dataIndex: "lastLoginBrowser", scopedSlots: { customRender: "lastLoginBrowser" } }, { title: "鎿嶄綔绯荤粺", dataIndex: "lastLoginOs" }], loadData: function (t) { return l(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [] } }, created: function () { "1" == i["a"].getters.admintype && this.columns.push({ title: "绉熸埛", dataIndex: "tenantName" }), this.hasPerm("sysOnlineUser:forceExist") && this.columns.push({ title: "鎿嶄綔", width: "150px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, mounted: function () { var e = this; setTimeout((function () { e.$refs.table.refresh(!0) }), 1e3) }, methods: { forceExist: function (e) { var t = this, a = this; c(e).then((function (r) { r.success ? (t.$message.success("寮哄埗涓嬬嚎鎴愬姛"), t.$store.getters.userInfo.id !== e.userId && setTimeout((function () { a.$refs.table.refresh(!1) }), 1e3)) : t.$message.error("寮哄埗涓嬬嚎澶辫触锛�" + r.message) })).catch((function (e) { t.$message.error("寮哄埗涓嬬嚎閿欒锛�" + e.message) })) }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, u = d, m = (a("72ad"), a("2877")), f = Object(m["a"])(u, r, s, !1, null, null, null); t["default"] = f.exports }, "40b1": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏂板瀹氭椂浠诲姟", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: e.jobNameLabel, labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["jobName", { rules: [{ required: !0, message: "璇疯緭鍏ヤ换鍔″悕绉帮紒" }] }], expression: "['jobName', { rules: [{ required: true, message: '璇疯緭鍏ヤ换鍔″悕绉帮紒' }] }]" }], attrs: { placeholder: e.jobNamePlaceholder, showArrow: !0, mode: e.jobNameMode } }, e._l(e.JobNameData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.jobName }, on: { click: function (a) { return e.onChangeJobName(t) } } }, [e._v(e._s(t.jobName))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "Run绫诲瀷锛氱被鍚�/鏂规硶鍚嶏紝http绫诲瀷锛歎RL鍦板潃" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 璇锋眰鍦板潃 ")], 1), a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["requestUrl", { rules: [{ required: !0, message: "璇疯緭鍏ヨ姹傚湴鍧�锛�" }] }], expression: "['requestUrl', { rules: [{ required: true, message: '璇疯緭鍏ヨ姹傚湴鍧�锛�' }] }]" }], attrs: { placeholder: "璇疯緭鍏ヨ鍦板潃" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 24, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol_JG, wrapperCol: e.wrapperCol_JG, label: "璇锋眰绫诲瀷" } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["requestType", { rules: [{ required: !0, message: "璇烽�夋嫨璇锋眰绫诲埆锛�" }] }], expression: "['requestType', { rules: [{ required: true, message: '璇烽�夋嫨璇锋眰绫诲埆锛�' }] }]" }] }, e._l(e.requestTypeEnumDataDropDown, (function (t, r) { return a("a-radio", { key: r, attrs: { value: parseInt(t.code) }, on: { click: function (a) { return e.onChangeRequestType(t.code) } } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("div", { directives: [{ name: "show", rawName: "v-show", value: e.showHeaders, expression: "showHeaders" }] }, [a("a-col", { attrs: { md: 24, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol_JG, wrapperCol: e.wrapperCol_JG, label: "璇锋眰澶�", "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["headers"], expression: "['headers']" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ヨ姹傚ご" } })], 1)], 1)], 1)]), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 24, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol_JG, wrapperCol: e.wrapperCol_JG, label: e.requestParametersLabel, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["requestParameters"], expression: "['requestParameters']" }], attrs: { rows: 1, placeholder: e.requestParametersPlaceholder } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "瀹氭椂鍣ㄧ被鍨�" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["timerType", { rules: [{ required: !0, message: "璇烽�夋嫨瀹氭椂鍣ㄧ被鍨嬶紒" }] }], expression: "['timerType', { rules: [{ required: true, message: '璇烽�夋嫨瀹氭椂鍣ㄧ被鍨嬶紒' }] }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨瀹氭椂鍣ㄧ被鍨�" }, on: { change: e.onChangeTimerType } }, e._l(e.spareTimeTypeDropDown, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [e.VisibleTimerType ? a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎵ц闂撮殧(绉�)", "has-feedback": "" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["interval", { rules: [{ required: !0, message: "璇疯緭鍏ユ墽琛岄棿闅旓紒" }] }], expression: "['interval', { rules: [{ required: true, message: '璇疯緭鍏ユ墽琛岄棿闅旓紒' }] }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ユ墽琛岄棿闅�", min: 1 } })], 1) : a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "浠诲姟琛ㄨ揪寮�", "has-feedback": "" } }, [a("nobr", [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["cron", { rules: [{ required: !0, message: "璇疯緭鍏ヤ换鍔¤〃杈惧紡锛�" }] }], expression: "['cron', { rules: [{ required: true, message: '璇疯緭鍏ヤ换鍔¤〃杈惧紡锛�' }] }]" }], attrs: { placeholder: "璇疯緭鍏ヤ换鍔¤〃杈惧紡" } }), a("a", { attrs: { href: "https://www.bejson.com/othertools/cron/", target: "_Blank" } }, [e._v("鍙傝��")])], 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "鏂板浠诲姟鍚庣珛鍗虫墽琛岋紝椤圭洰鍚姩鍚庣珛鍗虫墽琛�" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 绔嬪嵆鎵ц ")], 1), a("a-switch", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["startNow", { valuePropName: "checked" }], expression: "['startNow', { valuePropName: 'checked' }]" }], attrs: { id: "startNow", checkedChildren: "鏄�", unCheckedChildren: "鍚�" } })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鍙墽琛屼竴娆�" } }, [a("a-switch", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["doOnce", { valuePropName: "checked" }], expression: "['doOnce', { valuePropName: 'checked' }]" }], attrs: { id: "doOnce", checkedChildren: "鏄�", unCheckedChildren: "鍚�" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "骞惰鎵ц涓嶄細绛夊緟褰撳墠浠诲姟瀹屾垚锛屽彂璧锋墽琛屽悗绔嬪嵆寮�濮嬩笅娆′换鍔$殑鍊掕鏃躲�備覆琛屾墽琛屼細绛夊緟褰撳墠浠诲姟瀹屾垚鎵嶅紑濮嬩笅娆′换鍔$殑鍊掕鏃�" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 鎵ц绫诲瀷 ")], 1), a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["executeType", { rules: [{ required: !0, message: "璇烽�夋嫨鎵ц绫诲瀷锛�" }] }], expression: "['executeType', { rules: [{ required: true, message: '璇烽�夋嫨鎵ц绫诲瀷锛�' }] }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨鎵ц绫诲瀷" } }, e._l(e.executeTypeDropDown, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol_JG, wrapperCol: e.wrapperCol_JG, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1)], 1)], 1) }, s = [], i = (a("d3b7"), a("b89e")), n = a("da95"), o = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 6 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }, labelCol_JG: { xs: { span: 24 }, sm: { span: 3 } }, wrapperCol_JG: { xs: { span: 24 }, sm: { span: 20 } }, visible: !1, confirmLoading: !1, VisibleTimerType: !0, requestTypeEnumDataDropDown: [], spareTimeTypeDropDown: [], executeTypeDropDown: [], LocalJobsDropDown: [], JobNameData: [], formLoading: !1, jobNameLabel: "浠诲姟鍚嶇О", jobNameMode: "combobox", jobNamePlaceholder: "璇疯緭鍏ヤ换鍔″悕绉�", requestParametersLabel: "璇锋眰鍙傛暟", requestParametersPlaceholder: "璇疯緭鍏ヨ姹傚弬鏁�", showHeaders: !0, form: this.$form.createForm(this) } }, methods: { add: function (e) { this.visible = !0, this.formLoading = !1, this.sysEnumDataList(), this.form.getFieldDecorator("requestType", { initialValue: 2 }), this.form.getFieldDecorator("timerType", { initialValue: 0 }), this.form.getFieldDecorator("executeType", { initialValue: 0 }) }, sysEnumDataList: function () { var e = this; Object(n["a"])({ enumName: "RequestTypeEnum" }).then((function (t) { e.requestTypeEnumDataDropDown = t.data })), Object(n["b"])({ EntityName: "SysTimer", FieldName: "TimerType" }).then((function (t) { e.spareTimeTypeDropDown = t.data })), Object(n["b"])({ EntityName: "SysTimer", FieldName: "ExecuteType" }).then((function (t) { e.executeTypeDropDown = t.data })) }, onChangeTimerType: function (e) { this.VisibleTimerType = 0 === e }, onChangeRequestType: function (e) { var t = this; this.showHeaders = 0 !== e, this.showHeaders ? (this.JobNameData = [], this.jobNameLabel = "浠诲姟鍚嶇О", this.jobNameMode = "combobox", this.jobNamePlaceholder = "璇疯緭鍏ヤ换鍔″悕绉�", this.requestParametersLabel = "璇锋眰鍙傛暟", this.requestParametersPlaceholder = "璇疯緭鍏ヨ姹傚弬鏁�") : (0 === this.LocalJobsDropDown.length ? Object(i["d"])().then((function (e) { t.LocalJobsDropDown = e.data, t.JobNameData = e.data })) : this.JobNameData = this.LocalJobsDropDown, this.jobNameLabel = "浠诲姟鏂规硶", this.jobNameMode = "default", this.jobNamePlaceholder = "璇烽�夋嫨浠诲姟鏂规硶", this.requestParametersLabel = "閰嶇疆椤瑰弬鏁�", this.requestParametersPlaceholder = "璇疯緭鍏ラ厤缃」鍙傛暟") }, onChangeJobName: function (e) { var t = this; this.onChangeTimerType(e.timerType), setTimeout((function () { t.form.setFieldsValue({ requestUrl: e.requestUrl, startNow: e.startNow, doOnce: e.doOnce, interval: e.interval, timerType: e.timerType, remark: e.remark, executeType: e.executeType, cron: e.cron }) }), 100) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(i["a"])(a).then((function (t) { t.success ? (e.$message.success("鏂板鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a), e.form.resetFields()) : e.$message.error("鏂板澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, l = o, c = a("2877"), d = Object(c["a"])(l, r, s, !1, null, null, null); t["default"] = d.exports }, "487a": function (e, t, a) { "use strict"; a.d(t, "f", (function () { return s })), a.d(t, "d", (function () { return i })), a.d(t, "b", (function () { return n })), a.d(t, "e", (function () { return o })), a.d(t, "c", (function () { return l })), a.d(t, "a", (function () { return c })); var r = a("b775"); function s(e) { return Object(r["b"])({ url: "/sysVisLog/page", method: "get", params: e }) } function i(e) { return Object(r["b"])({ url: "/sysOpLog/page", method: "get", params: e }) } function n(e) { return Object(r["b"])({ url: "/sysExLog/page", method: "get", params: e }) } function o(e) { return Object(r["b"])({ url: "/sysVisLog/delete", method: "post", data: e }) } function l(e) { return Object(r["b"])({ url: "/sysOpLog/delete", method: "post", data: e }) } function c(e) { return Object(r["b"])({ url: "/sysExLog/delete", method: "post", data: e }) } }, "48d4": function (e, t, a) { }, "4ba9": function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("38ba")) })(0, (function (e) { return e.mode.OFB = function () { var t = e.lib.BlockCipherMode.extend(), a = t.Encryptor = t.extend({ processBlock: function (e, t) { var a = this._cipher, r = a.blockSize, s = this._iv, i = this._keystream; s && (i = this._keystream = s.slice(0), this._iv = void 0), a.encryptBlock(i, 0); for (var n = 0; n < r; n++)e[t + n] ^= i[n] } }); return t.Decryptor = a, t }(), e.mode.OFB })) }, "4f23": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-list", { attrs: { itemLayout: "horizontal", dataSource: e.data } }) }, s = [], i = { data: function () { return { data: [] } }, methods: {} }, n = i, o = a("2877"), l = Object(o["a"])(n, r, s, !1, null, "39635b56", null); t["default"] = l.exports }, "4fa6": function (e, t, a) { "use strict"; a("adfb") }, "511a": function (e, t, a) { }, 5321: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏂板瀛楀吀鍊�", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { staticStyle: { display: "none" }, attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["typeId"], expression: "['typeId']" }] })], 1), a("a-form-item", { attrs: { label: "瀛楀吀鍊�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["value", { rules: [{ required: !0, message: "璇疯緭鍏ュ瓧鍏稿�硷紒" }] }], expression: "['value', {rules: [{required: true, message: '璇疯緭鍏ュ瓧鍏稿�硷紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ瓧鍏稿��" } })], 1), a("a-form-item", { attrs: { label: "鍞竴缂栫爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, message: "璇疯緭鍏ュ敮涓�缂栫爜锛�" }] }], expression: "['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" } })], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎺掑簭" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sort", { initialValue: 100 }], expression: "['sort', { initialValue: 100 }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ユ帓搴�", min: 1, max: 1e3 } })], 1), a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { rows: 4, placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1) }, s = [], i = (a("d3b7"), a("c044")), n = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, form: this.$form.createForm(this) } }, methods: { add: function (e) { var t = this; this.visible = !0, setTimeout((function () { t.form.setFieldsValue({ typeId: e }) }), 100) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(i["a"])(a).then((function (t) { t.success ? (e.$message.success("鏂板鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a), e.form.resetFields()) : e.$message.error("鏂板澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, o = n, l = a("2877"), c = Object(l["a"])(o, r, s, !1, null, null, null); t["default"] = c.exports }, "544d": function (e, t, a) { "use strict"; a("c531") }, "55c7": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-list", { attrs: { size: "large", rowKey: "id", loading: e.loading, itemLayout: "vertical", dataSource: e.data }, scopedSlots: e._u([{ key: "renderItem", fn: function (t) { return a("a-list-item", { key: t.id }, [a("a-list-item-meta", [a("a", { attrs: { slot: "title", href: "https://vue.ant.design/" }, slot: "title" }, [e._v(e._s(t.title))]), a("template", { slot: "description" }, [a("span", [a("a-tag", [e._v("Ant Design")]), a("a-tag", [e._v("璁捐璇█")]), a("a-tag", [e._v("铓傝殎閲戞湇")])], 1)])], 2), a("article-list-content", { attrs: { description: t.description, owner: t.owner, avatar: t.avatar, href: t.href, updateAt: t.updatedAt } })], 1) } }]) }, [e.data.length > 0 ? a("div", { staticStyle: { "text-align": "center", "margin-top": "16px" }, attrs: { slot: "footer" }, slot: "footer" }, [a("a-button", { attrs: { loading: e.loadingMore }, on: { click: e.loadMore } }, [e._v("鍔犺浇鏇村")])], 1) : e._e()]) }, s = [], i = a("2af9"), n = { name: "Article", components: { ArticleListContent: i["b"] }, data: function () { return { loading: !0, loadingMore: !1, data: [] } }, mounted: function () { this.getList() }, methods: { getList: function () { this.data = [{ updatedAt: "2021-05-01 12:00:00", title: "灏忚", owner: "淇炲疂灞�", description: "snowy鏄皬璇哄洟闃熶骇鍝�", href: "https://xiaonuo.vip", avatar: "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", name: "鏇蹭附涓�", id: "member1" }, { updatedAt: "2021-05-01 12:00:00", title: "灏忚", owner: "寰愮帀绁�", description: "snowy鏄皬璇哄洟闃熶骇鍝�", href: "https://xiaonuo.vip", avatar: "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", name: "鐜嬫槶鍚�", id: "member2" }, { updatedAt: "2021-05-01 12:00:00", title: "灏忚", owner: "钁e闆�", description: "snowy鏄皬璇哄洟闃熶骇鍝�", href: "https://xiaonuo.vip", avatar: "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", name: "钁e濞�", id: "member3" }], this.loading = !1 }, loadMore: function () { this.loadingMore = !1 } } }, o = n, l = a("2877"), c = Object(l["a"])(o, r, s, !1, null, "359a8d8c", null); t["default"] = c.exports }, 5980: function (e, t, a) { (function (t, r) { e.exports = r(a("21bf")) })(0, (function (e) { (function () { var t = e, a = t.lib, r = a.Base, s = t.enc, i = s.Utf8, n = t.algo; n.HMAC = r.extend({ init: function (e, t) { e = this._hasher = new e.init, "string" == typeof t && (t = i.parse(t)); var a = e.blockSize, r = 4 * a; t.sigBytes > r && (t = e.finalize(t)), t.clamp(); for (var s = this._oKey = t.clone(), n = this._iKey = t.clone(), o = s.words, l = n.words, c = 0; c < a; c++)o[c] ^= 1549556828, l[c] ^= 909522486; s.sigBytes = n.sigBytes = r, this.reset() }, reset: function () { var e = this._hasher; e.reset(), e.update(this._iKey) }, update: function (e) { return this._hasher.update(e), this }, finalize: function (e) { var t = this._hasher, a = t.finalize(e); t.reset(); var r = t.finalize(this._oKey.clone().concat(a)); return r } }) })() })) }, "5da6": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏂板瀛楀吀绫诲瀷", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "绫诲瀷鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ョ被鍨嬪悕绉帮紒" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ョ被鍨嬪悕绉帮紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ョ被鍨嬪悕绉�" } })], 1), a("a-form-item", { attrs: { label: "鍞竴缂栫爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, message: "璇疯緭鍏ュ敮涓�缂栫爜锛�" }] }], expression: "['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" } })], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎺掑簭" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sort", { initialValue: 100 }], expression: "['sort', { initialValue: 100 }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ユ帓搴�", min: 1, max: 1e3 } })], 1), a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { rows: 4, placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1) }, s = [], i = (a("d3b7"), a("126f")), n = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, form: this.$form.createForm(this) } }, methods: { add: function (e) { this.visible = !0 }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(i["a"])(a).then((function (t) { t.success ? (e.$message.success("鏂板鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a), e.form.resetFields()) : e.$message.error("鏂板澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, o = n, l = a("2877"), c = Object(l["a"])(o, r, s, !1, null, null, null); t["default"] = c.exports }, "656f": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("exception-page", { attrs: { type: "500" } }) }, s = [], i = a("2af9"), n = { components: { ExceptionPage: i["i"] } }, o = n, l = a("2877"), c = Object(l["a"])(o, r, s, !1, null, "13055a82", null); t["default"] = c.exports }, "6d08e": function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("38ba")) })(0, (function (e) { return function (t) { var a = e, r = a.lib, s = r.CipherParams, i = a.enc, n = i.Hex, o = a.format; o.Hex = { stringify: function (e) { return e.ciphertext.toString(n) }, parse: function (e) { var t = n.parse(e); return s.create({ ciphertext: t }) } } }(), e.format.Hex })) }, "6d36": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { attrs: { id: "scroll-board" } }, [a("dv-scroll-board", { attrs: { config: e.config } })], 1) }, s = [], i = { name: "ScrollBoard", data: function () { return { config: { header: ["鏃堕棿", "鐥呭淇℃伅", "鏁伴噺", "鏍囨"], data: [["2019-07-01 19:25:00", "璺潰鍗卞-鏉炬暎", "5", "xxxxxxx"], ["2019-07-02 17:25:00", "璺潰鍗卞-璺潰娌规薄娓呯悊", "13", "xxxxxxx"], ["2019-07-03 16:25:00", "浜ゅ畨璁炬柦-浜ら�氭爣蹇楃墝缁撴瀯", "6", "xxxxxxx"], ["2019-07-04 15:25:00", "璺熀鍗卞-闃插皹缃�", "2", "xxxxxxx"], ["2019-07-05 14:25:00", "浜ゅ畨璁炬柦-浜ら�氭爣蹇楃墝缁撴瀯", "1", "xxxxxxx"], ["2019-07-06 13:25:00", "璺潰鍗卞-鏉炬暎", "3", "xxxxxxx"], ["2019-07-07 12:25:00", "璺熀鍗卞-闃插皹缃�", "4", "xxxxxxx"], ["2019-07-08 11:25:00", "璺潰鍗卞-璺潰娌规薄娓呯悊", "2", "xxxxxxx"], ["2019-07-09 10:25:00", "浜ゅ畨璁炬柦-浜ら�氭爣蹇楃墝缁撴瀯", "5", "xxxxxxx"], ["2019-07-10 09:25:00", "璺熀鍗卞-闃插皹缃�", "3", "xxxxxxx"]], index: !0, columnWidth: [50, 170, 300], align: ["center"], rowNum: 7, headerBGC: "#1981f6", headerHeight: 45, oddRowBGC: "rgba(0, 44, 81, 0.8)", evenRowBGC: "rgba(10, 29, 50, 0.8)" } } } }, n = i, o = (a("206b"), a("2877")), l = Object(o["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, "72ad": function (e, t, a) { "use strict"; a("acd4") }, "72f4": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "瀛楀吀鍊肩鐞�", width: 900, visible: e.visible, footer: null }, on: { cancel: e.handleCancel } }, [e.hasPerm("sysDictData:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "瀛楀吀鍊�" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ュ瓧鍏稿��" }, model: { value: e.queryParam.value, callback: function (t) { e.$set(e.queryParam, "value", t) }, expression: "queryParam.value" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍞竴缂栫爜" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" }, model: { value: e.queryParam.code, callback: function (t) { e.$set(e.queryParam, "code", t) }, expression: "queryParam.code" } })], 1)], 1), a("a-col", { attrs: { md: e.advanced ? 24 : 8, sm: 24 } }, [a("span", { staticClass: "table-page-search-submitButtons", style: e.advanced && { float: "right", overflow: "hidden" } || {} }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")])], 1)])], 1)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !1, rowKey: function (e) { return e.code }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "status", fn: function (t, r) { return a("span", {}, [a("a-popconfirm", { attrs: { placement: "top", title: 0 === t ? "纭畾鍋滅敤璇ュ瓧鍏革紵" : "纭畾鍚敤璇ュ瓧鍏革紵" }, on: { confirm: function () { return e.editSysDictDataStatus(t, r) } } }, [a("a", [e._v(e._s(e.statusFilter(t)))])])], 1) } }, { key: "action", fn: function (t, r) { return a("span", {}, [e.hasPerm("sysDictData:edit") ? a("a", { on: { click: function (t) { return e.$refs.editForm.edit(r) } } }, [e._v("缂栬緫")]) : e._e(), e.hasPerm("sysDictData:edit") & e.hasPerm("sysDictData:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysDictData:delete") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.sysDictDataDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])]) : e._e()], 1) } }]) }, [e.hasPerm("sysDictData:add") ? a("template", { slot: "operator" }, [e.hasPerm("sysDictData:add") ? a("a-button", { attrs: { icon: "plus", type: "primary" }, on: { click: function (t) { return e.$refs.addForm.add(e.typeId) } } }, [e._v("鏂板鏁版嵁 ")]) : e._e()], 1) : e._e()], 2), a("add-form", { ref: "addForm", on: { ok: e.handleOk } }), a("edit-form", { ref: "editForm", on: { ok: e.handleOk } })], 1)], 1) }, s = [], i = (a("4de4"), a("2af9")), n = a("c044"), o = a("126f"), l = a("5321"), c = a("8142"), d = { components: { XCard: i["w"], STable: i["r"], addForm: l["default"], editForm: c["default"] }, data: function () { var e = this; return { advanced: !1, queryParam: {}, columns: [{ title: "瀛楀吀鍊�", dataIndex: "value" }, { title: "鍞竴缂栫爜", dataIndex: "code" }, { title: "鎺掑簭", dataIndex: "sort" }, { title: "澶囨敞", dataIndex: "remark", width: 200 }, { title: "鐘舵��", dataIndex: "status", scopedSlots: { customRender: "status" } }], visible: !1, typeId: [], loadData: function (t) { return e.queryParam.typeId = e.typeId, Object(n["e"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [], statusDict: [] } }, created: function () { this.sysDictTypeDropDown(), (this.hasPerm("sysDictData:edit") || this.hasPerm("sysDictData:delete")) && this.columns.push({ title: "鎿嶄綔", width: "150px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, methods: { index: function (e) { this.visible = !0, this.typeId = e.id, this.queryParam.typeId = e.id; try { this.$refs.table.refresh() } catch (t) { } }, statusFilter: function (e) { var t = this.statusDict.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, sysDictTypeDropDown: function () { var e = this; Object(o["d"])({ code: "common_status" }).then((function (t) { e.statusDict = t.data })) }, handleCancel: function () { this.queryParam = {}, this.visible = !1 }, editSysDictDataStatus: function (e, t) { var a = this; 0 == e ? this.status = 1 : 1 == e && (this.status = 0), Object(n["b"])({ id: t.id, status: this.status }).then((function (e) { e.success ? (a.$message.success("鎿嶄綔鎴愬姛"), a.$refs.table.refresh()) : a.$message.error("鎿嶄綔澶辫触锛�" + e.message) })) }, sysDictDataDelete: function (e) { var t = this; Object(n["c"])(e).then((function (e) { e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("鍒犻櫎澶辫触锛�" + e.message) })).catch((function (e) { t.$message.error("鍒犻櫎閿欒锛�" + e.message) })) }, toggleAdvanced: function () { this.advanced = !this.advanced }, handleOk: function () { this.$refs.table.refresh() }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, u = d, m = (a("4fa6"), a("2877")), f = Object(m["a"])(u, r, s, !1, null, null, null); t["default"] = f.exports }, "72fe": function (e, t, a) { (function (t, r) { e.exports = r(a("21bf")) })(0, (function (e) { return function (t) { var a = e, r = a.lib, s = r.WordArray, i = r.Hasher, n = a.algo, o = []; (function () { for (var e = 0; e < 64; e++)o[e] = 4294967296 * t.abs(t.sin(e + 1)) | 0 })(); var l = n.MD5 = i.extend({ _doReset: function () { this._hash = new s.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (e, t) { for (var a = 0; a < 16; a++) { var r = t + a, s = e[r]; e[r] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8) } var i = this._hash.words, n = e[t + 0], l = e[t + 1], f = e[t + 2], p = e[t + 3], h = e[t + 4], v = e[t + 5], g = e[t + 6], b = e[t + 7], y = e[t + 8], w = e[t + 9], _ = e[t + 10], C = e[t + 11], x = e[t + 12], k = e[t + 13], S = e[t + 14], T = e[t + 15], D = i[0], P = i[1], L = i[2], O = i[3]; D = c(D, P, L, O, n, 7, o[0]), O = c(O, D, P, L, l, 12, o[1]), L = c(L, O, D, P, f, 17, o[2]), P = c(P, L, O, D, p, 22, o[3]), D = c(D, P, L, O, h, 7, o[4]), O = c(O, D, P, L, v, 12, o[5]), L = c(L, O, D, P, g, 17, o[6]), P = c(P, L, O, D, b, 22, o[7]), D = c(D, P, L, O, y, 7, o[8]), O = c(O, D, P, L, w, 12, o[9]), L = c(L, O, D, P, _, 17, o[10]), P = c(P, L, O, D, C, 22, o[11]), D = c(D, P, L, O, x, 7, o[12]), O = c(O, D, P, L, k, 12, o[13]), L = c(L, O, D, P, S, 17, o[14]), P = c(P, L, O, D, T, 22, o[15]), D = d(D, P, L, O, l, 5, o[16]), O = d(O, D, P, L, g, 9, o[17]), L = d(L, O, D, P, C, 14, o[18]), P = d(P, L, O, D, n, 20, o[19]), D = d(D, P, L, O, v, 5, o[20]), O = d(O, D, P, L, _, 9, o[21]), L = d(L, O, D, P, T, 14, o[22]), P = d(P, L, O, D, h, 20, o[23]), D = d(D, P, L, O, w, 5, o[24]), O = d(O, D, P, L, S, 9, o[25]), L = d(L, O, D, P, p, 14, o[26]), P = d(P, L, O, D, y, 20, o[27]), D = d(D, P, L, O, k, 5, o[28]), O = d(O, D, P, L, f, 9, o[29]), L = d(L, O, D, P, b, 14, o[30]), P = d(P, L, O, D, x, 20, o[31]), D = u(D, P, L, O, v, 4, o[32]), O = u(O, D, P, L, y, 11, o[33]), L = u(L, O, D, P, C, 16, o[34]), P = u(P, L, O, D, S, 23, o[35]), D = u(D, P, L, O, l, 4, o[36]), O = u(O, D, P, L, h, 11, o[37]), L = u(L, O, D, P, b, 16, o[38]), P = u(P, L, O, D, _, 23, o[39]), D = u(D, P, L, O, k, 4, o[40]), O = u(O, D, P, L, n, 11, o[41]), L = u(L, O, D, P, p, 16, o[42]), P = u(P, L, O, D, g, 23, o[43]), D = u(D, P, L, O, w, 4, o[44]), O = u(O, D, P, L, x, 11, o[45]), L = u(L, O, D, P, T, 16, o[46]), P = u(P, L, O, D, f, 23, o[47]), D = m(D, P, L, O, n, 6, o[48]), O = m(O, D, P, L, b, 10, o[49]), L = m(L, O, D, P, S, 15, o[50]), P = m(P, L, O, D, v, 21, o[51]), D = m(D, P, L, O, x, 6, o[52]), O = m(O, D, P, L, p, 10, o[53]), L = m(L, O, D, P, _, 15, o[54]), P = m(P, L, O, D, l, 21, o[55]), D = m(D, P, L, O, y, 6, o[56]), O = m(O, D, P, L, T, 10, o[57]), L = m(L, O, D, P, g, 15, o[58]), P = m(P, L, O, D, k, 21, o[59]), D = m(D, P, L, O, h, 6, o[60]), O = m(O, D, P, L, C, 10, o[61]), L = m(L, O, D, P, f, 15, o[62]), P = m(P, L, O, D, w, 21, o[63]), i[0] = i[0] + D | 0, i[1] = i[1] + P | 0, i[2] = i[2] + L | 0, i[3] = i[3] + O | 0 }, _doFinalize: function () { var e = this._data, a = e.words, r = 8 * this._nDataBytes, s = 8 * e.sigBytes; a[s >>> 5] |= 128 << 24 - s % 32; var i = t.floor(r / 4294967296), n = r; a[15 + (s + 64 >>> 9 << 4)] = 16711935 & (i << 8 | i >>> 24) | 4278255360 & (i << 24 | i >>> 8), a[14 + (s + 64 >>> 9 << 4)] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8), e.sigBytes = 4 * (a.length + 1), this._process(); for (var o = this._hash, l = o.words, c = 0; c < 4; c++) { var d = l[c]; l[c] = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8) } return o }, clone: function () { var e = i.clone.call(this); return e._hash = this._hash.clone(), e } }); function c(e, t, a, r, s, i, n) { var o = e + (t & a | ~t & r) + s + n; return (o << i | o >>> 32 - i) + t } function d(e, t, a, r, s, i, n) { var o = e + (t & r | a & ~r) + s + n; return (o << i | o >>> 32 - i) + t } function u(e, t, a, r, s, i, n) { var o = e + (t ^ a ^ r) + s + n; return (o << i | o >>> 32 - i) + t } function m(e, t, a, r, s, i, n) { var o = e + (a ^ (t | ~r)) + s + n; return (o << i | o >>> 32 - i) + t } a.MD5 = i._createHelper(l), a.HmacMD5 = i._createHmacHelper(l) }(Math), e.MD5 })) }, "7320f": function (e, t, a) { "use strict"; a.r(t); a("7db0"); var r, s, i = a("c4ef"), n = a("160c"), o = a("fe2b"), l = a("a6b6"), c = a("ac0d"), d = l["a"].Meta, u = { components: { AListItem: l["a"], AList: o["b"], ASwitch: n["a"], Meta: d }, mixins: [c["b"]], data: function () { return {} }, filters: { themeFilter: function (e) { var t = { dark: "鏆楄壊", light: "鐧借壊" }; return t[e] } }, methods: { colorFilter: function (e) { var t = i["a"].find((function (t) { return t.color === e })); return t && t.key }, onChange: function (e) { e ? this.$store.dispatch("ToggleTheme", "dark") : this.$store.dispatch("ToggleTheme", "light") } }, render: function () { var e = arguments[0]; return e(o["b"], { attrs: { itemLayout: "horizontal" } }, [e(l["a"], [e(d, [e("a", { slot: "title" }, ["椋庢牸閰嶈壊"]), e("span", { slot: "description" }, ["鏁翠綋椋庢牸閰嶈壊璁剧疆"])]), e("div", { slot: "actions" }, [e(n["a"], { attrs: { checkedChildren: "鏆楄壊", unCheckedChildren: "鐧借壊", defaultChecked: "dark" === this.navTheme }, on: { change: this.onChange } })])]), e(l["a"], [e(d, [e("a", { slot: "title" }, ["涓婚鑹�"]), e("span", { slot: "description" }, ["椤甸潰椋庢牸閰嶈壊锛� ", e("a", { domProps: { innerHTML: this.colorFilter(this.primaryColor) } })])])])]) } }, m = u, f = a("2877"), p = Object(f["a"])(m, r, s, !1, null, "7f42bc6f", null); t["default"] = p.exports }, 7362: function (e, t, a) { }, 7696: function (e, t, a) { }, "77ae": function (e, t, a) { }, "7bbc": function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("df2f"), a("5980")) })(0, (function (e) { return function () { var t = e, a = t.lib, r = a.Base, s = a.WordArray, i = t.algo, n = i.SHA1, o = i.HMAC, l = i.PBKDF2 = r.extend({ cfg: r.extend({ keySize: 4, hasher: n, iterations: 1 }), init: function (e) { this.cfg = this.cfg.extend(e) }, compute: function (e, t) { var a = this.cfg, r = o.create(a.hasher, e), i = s.create(), n = s.create([1]), l = i.words, c = n.words, d = a.keySize, u = a.iterations; while (l.length < d) { var m = r.update(t).finalize(n); r.reset(); for (var f = m.words, p = f.length, h = m, v = 1; v < u; v++) { h = r.finalize(h), r.reset(); for (var g = h.words, b = 0; b < p; b++)f[b] ^= g[b] } i.concat(m), c[0]++ } return i.sigBytes = 4 * d, i } }); t.PBKDF2 = function (e, t, a) { return l.create(a).compute(e, t) } }(), e.PBKDF2 })) }, "7bfa": function (e, t, a) { "use strict"; a("9e36") }, "7e37": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏂囦欢淇℃伅璇︽儏", footer: null, width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { directives: [{ name: "show", rawName: "v-show", value: !1, expression: "false" }] }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1), a("a-form-item", { attrs: { label: "鏂囦欢瀛樺偍浣嶇疆", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [e._v(" " + e._s(e.fileDetail.fileLocation) + " ")]), a("a-form-item", { attrs: { label: "鏂囦欢浠撳簱", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [e._v(" " + e._s(e.fileDetail.fileBucket) + " ")]), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鏂囦欢鍚嶇О" } }, [e._v(" " + e._s(e.fileDetail.fileOriginName) + " ")]), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鏂囦欢鍚庣紑" } }, [e._v(" " + e._s(e.fileDetail.fileSuffix) + " ")]), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鏂囦欢澶у皬" } }, [e._v(" " + e._s(e.fileDetail.fileSizeKb) + " ")]), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鍞竴鏍囪瘑" } }, [e._v(" " + e._s(e.fileDetail.fileObjectName) + " ")]), a("a-form-item", { attrs: { label: "瀛樺偍璺緞", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [e._v(" " + e._s(e.fileDetail.filePath) + " ")])], 1)], 1)], 1) }, s = [], i = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 8 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, fileDetail: [], visible: !1, confirmLoading: !1, form: this.$form.createForm(this) } }, methods: { detail: function (e) { this.fileDetail = e, this.visible = !0 }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, n = i, o = a("2877"), l = Object(o["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, 8142: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "瀛楀吀鍊肩紪杈�", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { staticStyle: { display: "none" }, attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1), a("a-form-item", { staticStyle: { display: "none" }, attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["typeId"], expression: "['typeId']" }] })], 1), a("a-form-item", { attrs: { label: "瀛楀吀鍊�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["value", { rules: [{ required: !0, message: "璇疯緭鍏ュ瓧鍏稿�硷紒" }] }], expression: "['value', {rules: [{required: true, message: '璇疯緭鍏ュ瓧鍏稿�硷紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ瓧鍏稿��" } })], 1), a("a-form-item", { attrs: { label: "鍞竴缂栫爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, message: "璇疯緭鍏ュ敮涓�缂栫爜锛�" }] }], expression: "['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" } })], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎺掑簭", "has-feedback": "" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sort", { initialValue: 100 }], expression: "['sort', { initialValue: 100 }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ユ帓搴�", min: 1, max: 1e3 } })], 1), a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { rows: 4, placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1) }, s = [], i = (a("4e82"), a("d3b7"), a("c044")), n = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, form: this.$form.createForm(this) } }, methods: { edit: function (e) { var t = this; this.visible = !0, setTimeout((function () { t.form.setFieldsValue({ id: e.id, typeId: e.typeId, value: e.value, code: e.code, sort: e.sort, remark: e.remark }) }), 100) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(i["d"])(a).then((function (t) { t.success ? (e.$message.success("缂栬緫鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a), e.form.resetFields()) : e.$message.error("缂栬緫澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, o = n, l = a("2877"), c = Object(l["a"])(o, r, s, !1, null, null, null); t["default"] = c.exports }, 8147: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e.hasPerm("sysOpLog:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鏃ュ織鍚嶇О" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ユ棩蹇楀悕绉�" }, model: { value: e.queryParam.name, callback: function (t) { e.$set(e.queryParam, "name", t) }, expression: "queryParam.name" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "璇锋眰鏂瑰紡" } }, [a("a-select", { attrs: { allowClear: "", placeholder: "璇烽�夋嫨璇锋眰鏂瑰紡" }, model: { value: e.queryParam.reqMethod, callback: function (t) { e.$set(e.queryParam, "reqMethod", t) }, expression: "queryParam.reqMethod" } }, e._l(e.reqMethodDict, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.value } }, [e._v(" " + e._s(t.value) + " ")]) })), 1)], 1)], 1), e.advanced ? [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鏄惁鎴愬姛" } }, [a("a-select", { attrs: { placeholder: "璇烽�夋嫨鏄惁鎴愬姛" }, model: { value: e.queryParam.success, callback: function (t) { e.$set(e.queryParam, "success", t) }, expression: "queryParam.success" } }, e._l(e.successDict, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(" " + e._s(t.value) + " ")]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 10, sm: 24 } }, [a("a-form-item", { attrs: { label: "鎿嶄綔鏃堕棿" } }, [a("a-range-picker", { attrs: { "show-time": { hideDisabledOptions: !0, defaultValue: [e.moment("00:00:00", "HH:mm:ss"), e.moment("23:59:59", "HH:mm:ss")] }, format: "YYYY-MM-DD HH:mm:ss" }, model: { value: e.queryParam.dates, callback: function (t) { e.$set(e.queryParam, "dates", t) }, expression: "queryParam.dates" } })], 1)], 1)] : e._e(), a("a-col", { attrs: { md: e.advanced ? 24 : 8, sm: 24 } }, [a("span", { staticClass: "table-page-search-submitButtons", style: e.advanced && { float: "right", overflow: "hidden" } || {} }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")]), a("a", { staticStyle: { "margin-left": "8px" }, on: { click: e.toggleAdvanced } }, [e._v(" " + e._s(e.advanced ? "鏀惰捣" : "灞曞紑") + " "), a("a-icon", { attrs: { type: e.advanced ? "up" : "down" } })], 1)], 1)])], 2)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "opType", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.opTypeFilter(t)) + " ")]) } }, { key: "success", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.successFilter(t)) + " ")]) } }, { key: "name", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "url", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "opTime", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "action", fn: function (t, r) { return a("span", {}, [a("span", { attrs: { slot: "action" }, slot: "action" }, [a("a", { on: { click: function (t) { return e.$refs.detailsOplog.details(r) } } }, [e._v("鏌ョ湅璇︽儏")])])]) } }]) }, [e.hasPerm("sysOpLog:delete") ? a("template", { slot: "operator" }, [a("a-popconfirm", { attrs: { placement: "top", title: "纭娓呯┖鏃ュ織锛�" }, on: { confirm: function () { return e.sysOpLogDelete() } } }, [a("a-button", [e._v("娓呯┖鏃ュ織")])], 1)], 1) : e._e()], 2), a("details-oplog", { ref: "detailsOplog" })], 1)], 1) }, s = [], i = (a("4de4"), a("2af9")), n = a("487a"), o = a("06c2"), l = a("da95"), c = a("c1df"), d = a.n(c), u = { components: { XCard: i["w"], STable: i["r"], Ellipsis: i["h"], detailsOplog: o["default"] }, data: function () { var e = this; return { advanced: !1, queryParam: {}, columns: [{ title: "璇锋眰鏂瑰紡", dataIndex: "reqMethod", scopedSlots: { customRender: "reqMethod", sorter: !0 } }, { title: "鎵ц缁撴灉", dataIndex: "success", scopedSlots: { customRender: "success", sorter: !0 } }, { title: "IP", dataIndex: "ip", sorter: !0 }, { title: "璇锋眰鍦板潃", dataIndex: "url", scopedSlots: { customRender: "url", sorter: !0 } }, { title: "鎿嶄綔鏃堕棿", dataIndex: "opTime", scopedSlots: { customRender: "opTime", sorter: !0 } }, { title: "鎿嶄綔浜�", dataIndex: "name", scopedSlots: { customRender: "name", sorter: !0 } }, { title: "鎿嶄綔浜哄笎鍙�", dataIndex: "account", sorter: !0 }, { title: "璇︽儏", dataIndex: "action", width: "150px", scopedSlots: { customRender: "action" } }], loadData: function (t) { return Object(n["d"])(Object.assign(t, e.switchingDate())).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [], defaultExpandedKeys: [], opTypeDict: [], successDict: [], reqMethodDict: [] } }, created: function () { this.sysEnumDataList() }, methods: { moment: d.a, opTypeFilter: function (e) { var t = this.opTypeDict.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, successFilter: function (e) { var t = this.successDict.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, switchingDate: function () { var e = this.queryParam.dates; null != e && (this.queryParam.searchBeginTime = d()(e[0]).format("YYYY-MM-DD HH:mm:ss"), this.queryParam.searchEndTime = d()(e[1]).format("YYYY-MM-DD HH:mm:ss"), e.length < 1 && (delete this.queryParam.searchBeginTime, delete this.queryParam.searchEndTime)); var t = JSON.parse(JSON.stringify(this.queryParam)); return delete t.dates, t }, sysEnumDataList: function () { var e = this; Object(l["a"])({ enumName: "YesOrNot" }).then((function (t) { e.successDict = t.data })), Object(l["a"])({ enumName: "HttpMethod" }).then((function (t) { e.reqMethodDict = t.data })) }, sysOpLogDelete: function () { var e = this; Object(n["c"])().then((function (t) { t.success ? (e.$message.success("娓呯┖鎴愬姛"), e.$refs.table.refresh(!0)) : e.$message.error("娓呯┖澶辫触锛�" + t.message) })) }, toggleAdvanced: function () { this.advanced = !this.advanced }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, m = u, f = (a("ba21"), a("2877")), p = Object(f["a"])(m, r, s, !1, null, null, null); t["default"] = p.exports }, "81bf": function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("38ba")) })(0, (function (e) { return e.mode.ECB = function () { var t = e.lib.BlockCipherMode.extend(); return t.Encryptor = t.extend({ processBlock: function (e, t) { this._cipher.encryptBlock(e, t) } }), t.Decryptor = t.extend({ processBlock: function (e, t) { this._cipher.decryptBlock(e, t) } }), t }(), e.mode.ECB })) }, "844b": function (e, t, a) { "use strict"; a("3641") }, "84a6": function (e, t, a) { "use strict"; a("b725") }, "8b8b": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "page-header-index-wide page-header-wrapper-grid-content-main" }, [a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 24, lg: 7 } }, [a("a-card", { attrs: { bordered: !1 } }, [a("div", { staticClass: "account-center-avatarHolder" }, [a("div", { staticClass: "avatar" }, [a("img", { attrs: { src: e.avatar() } })]), a("div", { staticClass: "username" }, [e._v(e._s(e.nickname()))]), a("div", { staticClass: "bio" }, [e._v("娴风撼鐧惧窛锛屾湁瀹逛箖澶�")])]), a("div", { staticClass: "account-center-detail" }, [a("p", [a("i", { staticClass: "title" }), e._v("浜や簰涓撳 ")]), a("p", [a("i", { staticClass: "group" }), e._v("铓傝殎閲戞湇锛嶆煇鏌愭煇浜嬩笟缇わ紞鏌愭煇骞冲彴閮紞鏌愭煇鎶�鏈儴锛峌ED ")]), a("p", [a("i", { staticClass: "address" }), a("span", [e._v("娴欐睙鐪�")]), a("span", [e._v("鏉窞甯�")])])]), a("a-divider"), a("div", { staticClass: "account-center-tags" }, [a("div", { staticClass: "tagsTitle" }, [e._v("鏍囩")]), a("div", [e._l(e.tags, (function (t, r) { return [t.length > 20 ? a("a-tooltip", { key: t, attrs: { title: t } }, [a("a-tag", { key: t, attrs: { closable: 0 !== r } }, [e._v(e._s(t.slice(0, 20) + "..."))])], 1) : a("a-tag", { key: t, attrs: { closable: 0 !== r } }, [e._v(e._s(t))])] })), e.tagInputVisible ? a("a-input", { ref: "tagInput", style: { width: "78px" }, attrs: { type: "text", size: "small", value: e.tagInputValue }, on: { change: e.handleInputChange, blur: e.handleTagInputConfirm, keyup: function (t) { return !t.type.indexOf("key") && e._k(t.keyCode, "enter", 13, t.key, "Enter") ? null : e.handleTagInputConfirm.apply(null, arguments) } } }) : a("a-tag", { staticStyle: { background: "#fff", borderStyle: "dashed" }, on: { click: e.showTagInput } }, [a("a-icon", { attrs: { type: "plus" } }), e._v("New Tag ")], 1)], 2)]), a("a-divider", { attrs: { dashed: !0 } }), a("div", { staticClass: "account-center-team" }, [a("div", { staticClass: "teamTitle" }, [e._v("鍥㈤槦")]), a("a-spin", { attrs: { spinning: e.teamSpinning } }, [a("div", { staticClass: "members" }, [a("a-row", e._l(e.teams, (function (t, r) { return a("a-col", { key: r, attrs: { span: 12 } }, [a("a", [a("a-avatar", { attrs: { size: "small", src: t.avatar } }), a("span", { staticClass: "member" }, [e._v(e._s(t.name))])], 1)]) })), 1)], 1)])], 1)], 1)], 1), a("a-col", { attrs: { md: 24, lg: 17 } }, [a("a-card", { staticStyle: { width: "100%" }, attrs: { bordered: !1, tabList: e.tabListNoTitle, activeTabKey: e.noTitleKey }, on: { tabChange: function (t) { return e.handleTabChange(t, "noTitleKey") } } }, ["article" === e.noTitleKey ? a("article-page") : "app" === e.noTitleKey ? a("app-page") : "project" === e.noTitleKey ? a("project-page") : e._e()], 1)], 1)], 1)], 1) }, s = [], i = a("2909"), n = a("5530"), o = (a("4de4"), a("caad"), a("2532"), a("99af"), a("680a")), l = a("d91d"), c = a("5880"), d = { components: { RouteView: o["e"], PageView: o["d"], AppPage: l["AppPage"], ArticlePage: l["ArticlePage"], ProjectPage: l["ProjectPage"] }, data: function () { return { tags: ["寰堟湁鎯虫硶鐨�", "涓撴敞璁捐", "杈", "澶ч暱鑵�", "宸濆瀛�", "娴风撼鐧惧窛"], tagInputVisible: !1, tagInputValue: "", teams: [], teamSpinning: !0, tabListNoTitle: [{ key: "article", tab: "鏂囩珷(8)" }, { key: "app", tab: "搴旂敤(8)" }, { key: "project", tab: "椤圭洰(8)" }], noTitleKey: "app" } }, mounted: function () { this.getTeams() }, methods: Object(n["a"])(Object(n["a"])({}, Object(c["mapGetters"])(["nickname", "avatar"])), {}, { getTeams: function () { this.teams = [{ id: 1, name: "绉戝鎼爾缁�", avatar: "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png" }, { id: 2, name: "绋嬪簭鍛樻棩甯�", avatar: "https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png" }, { id: 1, name: "璁捐澶╁洟", avatar: "https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png" }, { id: 1, name: "涓簩灏戝コ鍥�", avatar: "https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png" }, { id: 1, name: "楠椾綘瀛﹁绠楁満", avatar: "https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png" }], this.teamSpinning = !1 }, handleTabChange: function (e, t) { this[t] = e }, handleTagClose: function (e) { var t = this.tags.filter((function (t) { return t !== e })); this.tags = t }, showTagInput: function () { var e = this; this.tagInputVisible = !0, this.$nextTick((function () { e.$refs.tagInput.focus() })) }, handleInputChange: function (e) { this.tagInputValue = e.target.value }, handleTagInputConfirm: function () { var e = this.tagInputValue, t = this.tags; e && !t.includes(e) && (t = [].concat(Object(i["a"])(t), [e])), Object.assign(this, { tags: t, tagInputVisible: !1, tagInputValue: "" }) } }) }, u = d, m = (a("e2c8"), a("2877")), f = Object(m["a"])(u, r, s, !1, null, "db6471d8", null); t["default"] = f.exports }, "8cef": function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("38ba")) })(0, (function (e) { return e.pad.Iso97971 = { pad: function (t, a) { t.concat(e.lib.WordArray.create([2147483648], 1)), e.pad.ZeroPadding.pad(t, a) }, unpad: function (t) { e.pad.ZeroPadding.unpad(t), t.sigBytes-- } }, e.pad.Iso97971 })) }, "8f60": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "瀛楀吀绫诲瀷缂栬緫", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { staticStyle: { display: "none" }, attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1), a("a-form-item", { attrs: { label: "绫诲瀷鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ョ被鍨嬪悕绉帮紒" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ョ被鍨嬪悕绉帮紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ョ被鍨嬪悕绉�" } })], 1), a("a-form-item", { attrs: { label: "鍞竴缂栫爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, message: "璇疯緭鍏ュ敮涓�缂栫爜锛�" }] }], expression: "['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" } })], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎺掑簭", "has-feedback": "" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sort", { initialValue: 100 }], expression: "['sort', { initialValue: 100 }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ユ帓搴�", min: 1, max: 1e3 } })], 1), a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { rows: 4, placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1) }, s = [], i = (a("b0c0"), a("4e82"), a("d3b7"), a("126f")), n = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, form: this.$form.createForm(this) } }, methods: { edit: function (e) { var t = this; this.visible = !0, setTimeout((function () { t.form.setFieldsValue({ id: e.id, name: e.name, code: e.code, sort: e.sort, remark: e.remark }) }), 100) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(i["e"])(a).then((function (t) { t.success ? (e.$message.success("缂栬緫鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a), e.form.resetFields()) : e.$message.error("缂栬緫澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, o = n, l = a("2877"), c = Object(l["a"])(o, r, s, !1, null, null, null); t["default"] = c.exports }, "90aa": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "page-header-index-wide" }, [a("a-card", { style: { height: "100%" }, attrs: { bordered: !1, bodyStyle: { padding: "16px 0", height: "100%" } } }, [a("div", { staticClass: "account-settings-info-main", class: e.device }, [a("div", { staticClass: "account-settings-info-left" }, [a("a-menu", { style: { border: "0", width: "mobile" == e.device ? "560px" : "auto" }, attrs: { mode: "mobile" == e.device ? "horizontal" : "inline", selectedKeys: e.selectedKeys, type: "inner" }, on: { openChange: e.onOpenChange } }, [a("a-menu-item", { key: "/account/settings/base" }, [a("router-link", { attrs: { to: { name: "BaseSettings" } } }, [e._v(" 鍩烘湰璁剧疆 ")])], 1), a("a-menu-item", { key: "/account/settings/security" }, [a("router-link", { attrs: { to: { name: "SecuritySettings" } } }, [e._v(" 瀹夊叏璁剧疆 ")])], 1), a("a-menu-item", { key: "/account/settings/custom" }, [a("router-link", { attrs: { to: { name: "CustomSettings" } } }, [e._v(" 涓�у寲 ")])], 1), a("a-menu-item", { key: "/account/settings/binding" }, [a("router-link", { attrs: { to: { name: "BindingSettings" } } }, [e._v(" 璐︽埛缁戝畾 ")])], 1), a("a-menu-item", { key: "/account/settings/notification" }, [a("router-link", { attrs: { to: { name: "NotificationSettings" } } }, [e._v(" 鏂版秷鎭�氱煡 ")])], 1)], 1)], 1), a("div", { staticClass: "account-settings-info-right" }, [a("div", { staticClass: "account-settings-info-title" }, [a("span", [e._v(e._s(e.$route.meta.title))])]), a("route-view")], 1)])])], 1) }, s = [], i = (a("99af"), a("680a")), n = a("ac0d"), o = { components: { RouteView: i["e"], PageView: i["d"] }, mixins: [n["c"]], data: function () { return { mode: "inline", openKeys: [], selectedKeys: [], preview: {}, option: { img: "/avatar2.jpg", info: !0, size: 1, outputType: "jpeg", canScale: !1, autoCrop: !0, autoCropWidth: 180, autoCropHeight: 180, fixedBox: !0, fixed: !0, fixedNumber: [1, 1] }, pageTitle: "" } }, mounted: function () { this.updateMenu() }, methods: { onOpenChange: function (e) { this.openKeys = e }, updateMenu: function () { var e = this.$route.matched.concat(); this.selectedKeys = [e.pop().path] } }, watch: { $route: function (e) { this.updateMenu() } } }, l = o, c = (a("a28c"), a("2877")), d = Object(c["a"])(l, r, s, !1, null, "32e1680d", null); t["default"] = d.exports }, "94f8": function (e, t, a) { (function (t, r) { e.exports = r(a("21bf")) })(0, (function (e) { return function (t) { var a = e, r = a.lib, s = r.WordArray, i = r.Hasher, n = a.algo, o = [], l = []; (function () { function e(e) { for (var a = t.sqrt(e), r = 2; r <= a; r++)if (!(e % r)) return !1; return !0 } function a(e) { return 4294967296 * (e - (0 | e)) | 0 } var r = 2, s = 0; while (s < 64) e(r) && (s < 8 && (o[s] = a(t.pow(r, .5))), l[s] = a(t.pow(r, 1 / 3)), s++), r++ })(); var c = [], d = n.SHA256 = i.extend({ _doReset: function () { this._hash = new s.init(o.slice(0)) }, _doProcessBlock: function (e, t) { for (var a = this._hash.words, r = a[0], s = a[1], i = a[2], n = a[3], o = a[4], d = a[5], u = a[6], m = a[7], f = 0; f < 64; f++) { if (f < 16) c[f] = 0 | e[t + f]; else { var p = c[f - 15], h = (p << 25 | p >>> 7) ^ (p << 14 | p >>> 18) ^ p >>> 3, v = c[f - 2], g = (v << 15 | v >>> 17) ^ (v << 13 | v >>> 19) ^ v >>> 10; c[f] = h + c[f - 7] + g + c[f - 16] } var b = o & d ^ ~o & u, y = r & s ^ r & i ^ s & i, w = (r << 30 | r >>> 2) ^ (r << 19 | r >>> 13) ^ (r << 10 | r >>> 22), _ = (o << 26 | o >>> 6) ^ (o << 21 | o >>> 11) ^ (o << 7 | o >>> 25), C = m + _ + b + l[f] + c[f], x = w + y; m = u, u = d, d = o, o = n + C | 0, n = i, i = s, s = r, r = C + x | 0 } a[0] = a[0] + r | 0, a[1] = a[1] + s | 0, a[2] = a[2] + i | 0, a[3] = a[3] + n | 0, a[4] = a[4] + o | 0, a[5] = a[5] + d | 0, a[6] = a[6] + u | 0, a[7] = a[7] + m | 0 }, _doFinalize: function () { var e = this._data, a = e.words, r = 8 * this._nDataBytes, s = 8 * e.sigBytes; return a[s >>> 5] |= 128 << 24 - s % 32, a[14 + (s + 64 >>> 9 << 4)] = t.floor(r / 4294967296), a[15 + (s + 64 >>> 9 << 4)] = r, e.sigBytes = 4 * a.length, this._process(), this._hash }, clone: function () { var e = i.clone.call(this); return e._hash = this._hash.clone(), e } }); a.SHA256 = i._createHelper(d), a.HmacSHA256 = i._createHmacHelper(d) }(Math), e.SHA256 })) }, 9558: function (e, t, a) { }, "975c": function (e, t, a) { }, 99111: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e.hasPerm("sysOpLog:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "绫诲悕" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ョ被鍚�" }, model: { value: e.queryParam.className, callback: function (t) { e.$set(e.queryParam, "className", t) }, expression: "queryParam.className" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鏂规硶鍚�" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ユ柟娉曞悕" }, model: { value: e.queryParam.methodName, callback: function (t) { e.$set(e.queryParam, "methodName", t) }, expression: "queryParam.methodName" } })], 1)], 1), e.advanced ? [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "寮傚父淇℃伅" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ュ紓甯镐俊鎭叧閿瓧" }, model: { value: e.queryParam.exceptionMsg, callback: function (t) { e.$set(e.queryParam, "exceptionMsg", t) }, expression: "queryParam.exceptionMsg" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "濮撳悕" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ユ搷浣滀汉濮撳悕" }, model: { value: e.queryParam.name, callback: function (t) { e.$set(e.queryParam, "name", t) }, expression: "queryParam.name" } })], 1)], 1), a("a-col", { attrs: { md: 10, sm: 24 } }, [a("a-form-item", { attrs: { label: "鎿嶄綔鏃堕棿" } }, [a("a-range-picker", { attrs: { "show-time": { hideDisabledOptions: !0, defaultValue: [e.moment("00:00:00", "HH:mm:ss"), e.moment("23:59:59", "HH:mm:ss")] }, format: "YYYY-MM-DD HH:mm:ss" }, model: { value: e.queryParam.dates, callback: function (t) { e.$set(e.queryParam, "dates", t) }, expression: "queryParam.dates" } })], 1)], 1)] : e._e(), a("a-col", { attrs: { md: e.advanced ? 24 : 8, sm: 24 } }, [a("span", { staticClass: "table-page-search-submitButtons", style: e.advanced && { float: "right", overflow: "hidden" } || {} }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")]), a("a", { staticStyle: { "margin-left": "8px" }, on: { click: e.toggleAdvanced } }, [e._v(" " + e._s(e.advanced ? "鏀惰捣" : "灞曞紑") + " "), a("a-icon", { attrs: { type: e.advanced ? "up" : "down" } })], 1)], 1)])], 2)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "name", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "methodName", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "exceptionName", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "exceptionMsg", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "exceptionTime", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "action", fn: function (t, r) { return a("span", {}, [a("span", { attrs: { slot: "action" }, slot: "action" }, [a("a", { on: { click: function (t) { return e.$refs.detailsExlog.details(r) } } }, [e._v("鏌ョ湅璇︽儏")])])]) } }]) }, [e.hasPerm("sysExLog:delete") ? a("template", { slot: "operator" }, [a("a-popconfirm", { attrs: { placement: "top", title: "纭娓呯┖鏃ュ織锛�" }, on: { confirm: function () { return e.sysExLogDelete() } } }, [a("a-button", [e._v("娓呯┖鏃ュ織")])], 1)], 1) : e._e()], 2), a("details-exlog", { ref: "detailsExlog" })], 1)], 1) }, s = [], i = a("2af9"), n = a("487a"), o = a("fad9"), l = a("c1df"), c = a.n(l), d = { components: { XCard: i["w"], STable: i["r"], Ellipsis: i["h"], detailsExlog: o["default"] }, data: function () { var e = this; return { advanced: !1, queryParam: {}, columns: [{ title: "绫诲悕", dataIndex: "className", scopedSlots: { customRender: "className" } }, { title: "鏂规硶鍚�", dataIndex: "methodName", scopedSlots: { customRender: "methodName" } }, { title: "寮傚父鍚嶇О", dataIndex: "exceptionName", scopedSlots: { customRender: "exceptionName" } }, { title: "寮傚父淇℃伅", dataIndex: "exceptionMsg", scopedSlots: { customRender: "exceptionMsg" } }, { title: "寮傚父鏃堕棿", dataIndex: "exceptionTime", scopedSlots: { customRender: "exceptionTime" } }, { title: "鎿嶄綔浜�", dataIndex: "name" }, { title: "璇︽儏", dataIndex: "action", width: "150px", scopedSlots: { customRender: "action" } }], loadData: function (t) { return Object(n["b"])(Object.assign(t, e.switchingDate())).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [], defaultExpandedKeys: [] } }, created: function () { }, methods: { moment: c.a, switchingDate: function () { var e = this.queryParam.dates; null != e && (this.queryParam.searchBeginTime = c()(e[0]).format("YYYY-MM-DD HH:mm:ss"), this.queryParam.searchEndTime = c()(e[1]).format("YYYY-MM-DD HH:mm:ss"), e.length < 1 && (delete this.queryParam.searchBeginTime, delete this.queryParam.searchEndTime)); var t = JSON.parse(JSON.stringify(this.queryParam)); return delete t.dates, t }, sysExLogDelete: function () { var e = this; Object(n["a"])().then((function (t) { t.success ? (e.$message.success("娓呯┖鎴愬姛"), e.$refs.table.refresh(!0)) : e.$message.error("娓呯┖澶辫触锛�" + t.message) })) }, toggleAdvanced: function () { this.advanced = !this.advanced }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, u = d, m = (a("225f"), a("2877")), f = Object(m["a"])(u, r, s, !1, null, null, null); t["default"] = f.exports }, "9e36": function (e, t, a) { }, a11b: function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("38ba")) })(0, (function (e) { return e.pad.Iso10126 = { pad: function (t, a) { var r = 4 * a, s = r - t.sigBytes % r; t.concat(e.lib.WordArray.random(s - 1)).concat(e.lib.WordArray.create([s << 24], 1)) }, unpad: function (e) { var t = 255 & e.words[e.sigBytes - 1 >>> 2]; e.sigBytes -= t } }, e.pad.Iso10126 })) }, a18a: function (e, t, a) { "use strict"; a.d(t, "f", (function () { return s })), a.d(t, "a", (function () { return i })), a.d(t, "b", (function () { return n })), a.d(t, "c", (function () { return o })), a.d(t, "e", (function () { return l })), a.d(t, "d", (function () { return c })), a.d(t, "g", (function () { return d })); var r = a("b775"); function s(e) { return Object(r["b"])({ url: "/sysTenant/page", method: "get", params: e }) } function i(e) { return Object(r["b"])({ url: "/sysTenant/add", method: "post", data: e }) } function n(e) { return Object(r["b"])({ url: "/sysTenant/delete", method: "post", data: e }) } function o(e) { return Object(r["b"])({ url: "/sysTenant/edit", method: "post", data: e }) } function l(e) { return Object(r["b"])({ url: "/sysTenant/ownMenu", method: "get", params: e }) } function c(e) { return Object(r["b"])({ url: "/sysTenant/grantMenu", method: "post", data: e }) } function d(e) { return Object(r["b"])({ url: "/sysTenant/resetPwd", method: "post", data: e }) } }, a28c: function (e, t, a) { "use strict"; a("7362") }, a40e: function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("1132"), a("72fe"), a("2b79"), a("38ba")) })(0, (function (e) { return function () { var t = e, a = t.lib, r = a.WordArray, s = a.BlockCipher, i = t.algo, n = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], o = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], c = [{ 0: 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { 0: 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { 0: 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { 0: 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { 0: 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { 0: 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { 0: 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { 0: 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], d = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], u = i.DES = s.extend({ _doReset: function () { for (var e = this._key, t = e.words, a = [], r = 0; r < 56; r++) { var s = n[r] - 1; a[r] = t[s >>> 5] >>> 31 - s % 32 & 1 } for (var i = this._subKeys = [], c = 0; c < 16; c++) { var d = i[c] = [], u = l[c]; for (r = 0; r < 24; r++)d[r / 6 | 0] |= a[(o[r] - 1 + u) % 28] << 31 - r % 6, d[4 + (r / 6 | 0)] |= a[28 + (o[r + 24] - 1 + u) % 28] << 31 - r % 6; d[0] = d[0] << 1 | d[0] >>> 31; for (r = 1; r < 7; r++)d[r] = d[r] >>> 4 * (r - 1) + 3; d[7] = d[7] << 5 | d[7] >>> 27 } var m = this._invSubKeys = []; for (r = 0; r < 16; r++)m[r] = i[15 - r] }, encryptBlock: function (e, t) { this._doCryptBlock(e, t, this._subKeys) }, decryptBlock: function (e, t) { this._doCryptBlock(e, t, this._invSubKeys) }, _doCryptBlock: function (e, t, a) { this._lBlock = e[t], this._rBlock = e[t + 1], m.call(this, 4, 252645135), m.call(this, 16, 65535), f.call(this, 2, 858993459), f.call(this, 8, 16711935), m.call(this, 1, 1431655765); for (var r = 0; r < 16; r++) { for (var s = a[r], i = this._lBlock, n = this._rBlock, o = 0, l = 0; l < 8; l++)o |= c[l][((n ^ s[l]) & d[l]) >>> 0]; this._lBlock = n, this._rBlock = i ^ o } var u = this._lBlock; this._lBlock = this._rBlock, this._rBlock = u, m.call(this, 1, 1431655765), f.call(this, 8, 16711935), f.call(this, 2, 858993459), m.call(this, 16, 65535), m.call(this, 4, 252645135), e[t] = this._lBlock, e[t + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); function m(e, t) { var a = (this._lBlock >>> e ^ this._rBlock) & t; this._rBlock ^= a, this._lBlock ^= a << e } function f(e, t) { var a = (this._rBlock >>> e ^ this._lBlock) & t; this._lBlock ^= a, this._rBlock ^= a << e } t.DES = s._createHelper(u); var p = i.TripleDES = s.extend({ _doReset: function () { var e = this._key, t = e.words; if (2 !== t.length && 4 !== t.length && t.length < 6) throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192."); var a = t.slice(0, 2), s = t.length < 4 ? t.slice(0, 2) : t.slice(2, 4), i = t.length < 6 ? t.slice(0, 2) : t.slice(4, 6); this._des1 = u.createEncryptor(r.create(a)), this._des2 = u.createEncryptor(r.create(s)), this._des3 = u.createEncryptor(r.create(i)) }, encryptBlock: function (e, t) { this._des1.encryptBlock(e, t), this._des2.decryptBlock(e, t), this._des3.encryptBlock(e, t) }, decryptBlock: function (e, t) { this._des3.decryptBlock(e, t), this._des2.encryptBlock(e, t), this._des1.decryptBlock(e, t) }, keySize: 6, ivSize: 2, blockSize: 2 }); t.TripleDES = s._createHelper(p) }(), e.TripleDES })) }, a4fe: function (e, t, a) { }, a5e8: function (e, t, a) { "use strict"; a("be37") }, a6f9: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏂板鍙傛暟", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鍙傛暟鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ュ弬鏁板悕绉帮紒" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ュ弬鏁板悕绉帮紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ弬鏁板悕绉�" } })], 1), a("a-form-item", { attrs: { label: "鍞竴缂栫爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, message: "璇疯緭鍏ュ敮涓�缂栫爜锛�" }] }], expression: "['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" } })], 1), a("a-form-item", { attrs: { label: "绯荤粺鍙傛暟", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sysFlag", { rules: [{ required: !0, message: "璇烽�夋嫨鏄惁涓虹郴缁熷弬鏁帮紒" }] }], expression: "['sysFlag',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁涓虹郴缁熷弬鏁帮紒' }]}]" }] }, [a("a-radio-button", { attrs: { value: "Y" } }, [e._v(" 鏄� ")]), a("a-radio-button", { attrs: { value: "N" } }, [e._v(" 鍚� ")])], 1)], 1), a("a-form-item", { attrs: { label: "鎵�灞炲垎绫�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["groupCode", { rules: [{ required: !0, message: "璇烽�夋嫨鍙栨墍灞炲垎绫伙紒" }] }], expression: "['groupCode', {rules: [{ required: true, message: '璇烽�夋嫨鍙栨墍灞炲垎绫伙紒' }]}]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨鎵�灞炲垎绫�" } }, e._l(e.groupCodeList, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value))]) })), 1)], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鍙傛暟鍊�" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["value", { rules: [{ required: !0, message: "璇疯緭鍏ュ弬鏁板�硷紒" }] }], expression: "['value', {rules: [{required: true, message: '璇疯緭鍏ュ弬鏁板�硷紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ弬鏁板��" } })], 1), a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { rows: 4, placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1) }, s = [], i = (a("d3b7"), a("2730")), n = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, formLoading: !0, groupCodeList: [], form: this.$form.createForm(this) } }, methods: { add: function () { this.visible = !0, this.sysDictTypeDropDown() }, sysDictTypeDropDown: function () { var e = this; Object(i["e"])({ code: "consts_type" }).then((function (t) { e.groupCodeList = t.data, e.formLoading = !1 })) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(i["a"])(a).then((function (t) { e.confirmLoading = !1, t.success ? (e.$message.success("鏂板鎴愬姛"), e.$emit("ok", a), e.handleCancel()) : e.$message.error("鏂板澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, o = n, l = a("2877"), c = Object(l["a"])(o, r, s, !1, null, null, null); t["default"] = c.exports }, a817: function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("38ba")) })(0, (function (e) { return e.pad.AnsiX923 = { pad: function (e, t) { var a = e.sigBytes, r = 4 * t, s = r - a % r, i = a + s - 1; e.clamp(), e.words[i >>> 2] |= s << 24 - i % 4 * 8, e.sigBytes += s }, unpad: function (e) { var t = 255 & e.words[e.sigBytes - 1 >>> 2]; e.sigBytes -= t } }, e.pad.Ansix923 })) }, a8ce: function (e, t, a) { (function (t, r) { e.exports = r(a("21bf")) })(0, (function (e) { return function () { var t = e, a = t.lib, r = a.WordArray, s = t.enc; s.Utf16 = s.Utf16BE = { stringify: function (e) { for (var t = e.words, a = e.sigBytes, r = [], s = 0; s < a; s += 2) { var i = t[s >>> 2] >>> 16 - s % 4 * 8 & 65535; r.push(String.fromCharCode(i)) } return r.join("") }, parse: function (e) { for (var t = e.length, a = [], s = 0; s < t; s++)a[s >>> 1] |= e.charCodeAt(s) << 16 - s % 2 * 16; return r.create(a, 2 * t) } }; function i(e) { return e << 8 & 4278255360 | e >>> 8 & 16711935 } s.Utf16LE = { stringify: function (e) { for (var t = e.words, a = e.sigBytes, r = [], s = 0; s < a; s += 2) { var n = i(t[s >>> 2] >>> 16 - s % 4 * 8 & 65535); r.push(String.fromCharCode(n)) } return r.join("") }, parse: function (e) { for (var t = e.length, a = [], s = 0; s < t; s++)a[s >>> 1] |= i(e.charCodeAt(s) << 16 - s % 2 * 16); return r.create(a, 2 * t) } } }(), e.enc.Utf16 })) }, aaef: function (e, t, a) {
+        (function (t, r, s) { e.exports = r(a("21bf"), a("38ba")) })(0, (function (e) {
+            /** @preserve
+                 * Counter block mode compatible with  Dr Brian Gladman fileenc.c
+                 * derived from CryptoJS.mode.CTR
+                 * Jan Hruby jhruby.web@gmail.com
+                 */
+            return e.mode.CTRGladman = function () { var t = e.lib.BlockCipherMode.extend(); function a(e) { if (255 === (e >> 24 & 255)) { var t = e >> 16 & 255, a = e >> 8 & 255, r = 255 & e; 255 === t ? (t = 0, 255 === a ? (a = 0, 255 === r ? r = 0 : ++r) : ++a) : ++t, e = 0, e += t << 16, e += a << 8, e += r } else e += 1 << 24; return e } function r(e) { return 0 === (e[0] = a(e[0])) && (e[1] = a(e[1])), e } var s = t.Encryptor = t.extend({ processBlock: function (e, t) { var a = this._cipher, s = a.blockSize, i = this._iv, n = this._counter; i && (n = this._counter = i.slice(0), this._iv = void 0), r(n); var o = n.slice(0); a.encryptBlock(o, 0); for (var l = 0; l < s; l++)e[t + l] ^= o[l] } }); return t.Decryptor = s, t }(), e.mode.CTRGladman
+        }))
+    }, abc9: function (e, t, a) { "use strict"; a("3d41") }, acd4: function (e, t, a) { }, adfb: function (e, t, a) { }, ae3f: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "top-middle-cmp" }, [a("div", { staticClass: "chart-name" }, [a("dv-decoration-3", { staticStyle: { width: "200px", height: "20px" } })], 1), a("dv-charts", { attrs: { option: e.option } })], 1) }, s = [], i = (a("b680"), { name: "TopMiddleCmp", data: function () { return { option: { legend: { data: ["璁惧瀹屽ソ鐜�"], textStyle: { fill: "#fff" } }, xAxis: { data: ["10/01", "10/02", "10/03", "10/04", "10/05", "10/06", "10/07", "10/07", "10/08", "10/09", "10/10", "10/11", "10/12", "10/13", "10/14", "10/15"], boundaryGap: !1, axisLine: { style: { stroke: "#999" } }, axisLabel: { style: { fill: "#999" } }, axisTick: { show: !1 } }, yAxis: { data: "value", splitLine: { show: !1 }, axisLine: { style: { stroke: "#999" } }, axisLabel: { style: { fill: "#999" }, formatter: function (e) { var t = e.value; return t.toFixed(2) } }, axisTick: { show: !1 }, min: 95, max: 100, interval: 1 }, series: [{ data: [99.56, 99.66, 99.84, 99.22, 99.11, 99.45, 99.44, 99.81, 99.84, 99.32, 99.14, 99.45, 99.15, 99.45, 99.64, 99.89], type: "line", name: "璁惧瀹屽ソ鐜�", smooth: !0, lineArea: { show: !0, gradient: ["rgba(55, 162, 218, 0.6)", "rgba(55, 162, 218, 0)"] } }] } } } }), n = i, o = (a("2930"), a("2877")), l = Object(o["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, af4d: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-card", { attrs: { bordered: !1 } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-tabs", { attrs: { "default-active-key": "1" } }, [e.hasPerm("email:sendEmail") ? a("a-tab-pane", { key: "1", attrs: { tab: "鍙戦�侀偖浠�" }, on: { change: e.tabsCallback } }, [a("a-form", { attrs: { form: e.form1 } }, [a("a-form-item", { attrs: { label: "鏀朵欢閭" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["to", { rules: [{ type: "email", message: "璇疯緭鍏ユ纭殑閭!" }, { required: !0, message: "璇疯緭鍏ユ敹浠堕偖绠憋紒" }] }], expression: "['to', {rules: [{type: 'email',message: '璇疯緭鍏ユ纭殑閭!'},{required: true, message: '璇疯緭鍏ユ敹浠堕偖绠憋紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ユ敹浠堕偖绠�" } })], 1), a("a-form-item", { attrs: { label: "閭欢鏍囬" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["title", { rules: [{ required: !0, message: "璇疯緭鍏ラ偖浠舵爣棰橈紒" }] }], expression: "['title', {rules: [{required: true, message: '璇疯緭鍏ラ偖浠舵爣棰橈紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ラ偖浠舵爣棰�" } })], 1), a("a-form-item", { attrs: { label: "閭欢鍐呭" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["content", { rules: [{ required: !0, message: "璇疯緭鍏ラ偖浠跺唴瀹癸紒" }] }], expression: "['content', {rules: [{required: true, message: '璇疯緭鍏ラ偖浠跺唴瀹癸紒'}]}]" }], attrs: { rows: 4, placeholder: "璇疯緭鍏ュ娉�" } })], 1), a("a-form-item", { staticClass: "subForm-item" }, [a("a-button", { attrs: { type: "primary", loading: e.confirmLoading }, on: { click: e.handleSubmit1 } }, [e._v("鍙戦��")])], 1)], 1)], 1) : e._e(), e.hasPerm("email:sendEmailHtml") ? a("a-tab-pane", { key: "2", attrs: { tab: "鍙戦�丠tml閭欢" }, on: { change: e.tabsCallback } }, [a("a-form", { attrs: { form: e.form2 } }, [a("a-form-item", { attrs: { label: "鏀朵欢閭" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["to", { rules: [{ type: "email", message: "璇疯緭鍏ユ纭殑閭!" }, { required: !0, message: "璇疯緭鍏ユ敹浠堕偖绠憋紒" }] }], expression: "['to',{rules: [ {type: 'email',message: '璇疯緭鍏ユ纭殑閭!'},{required: true, message: '璇疯緭鍏ユ敹浠堕偖绠憋紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ユ敹浠堕偖绠�" } })], 1), a("a-form-item", { attrs: { label: "閭欢鏍囬" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["title", { rules: [{ required: !0, message: "璇疯緭鍏ラ偖浠舵爣棰橈紒" }] }], expression: "['title', {rules: [{required: true, message: '璇疯緭鍏ラ偖浠舵爣棰橈紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ラ偖浠舵爣棰�" } })], 1), a("a-form-item", { attrs: { label: "閭欢鍐呭" } }, [a("antd-editor", { attrs: { uploadConfig: e.editorUploadConfig }, on: { onchange: e.changeEditor, oninit: e.getEditor }, model: { value: e.editorContent, callback: function (t) { e.editorContent = t }, expression: "editorContent" } })], 1), a("a-form-item", { staticClass: "subForm-item" }, [a("a-button", { attrs: { type: "primary", loading: e.confirmLoading }, on: { click: e.handleSubmit2 } }, [e._v("鍙戦��")])], 1)], 1)], 1) : e._e()], 1)], 1)], 1) }, s = [], i = (a("159b"), a("d3b7"), a("3ca3"), a("ddb0"), a("2b3d"), a("b775")); function n(e) { return Object(i["b"])({ url: "/email/sendEmail", method: "post", data: e }) } function o(e) { return Object(i["b"])({ url: "/email/sendEmailHtml", method: "post", data: e }) } var l = a("2af9"), c = a("6597"), d = { components: { AntdEditor: l["a"] }, data: function () { return { editorContentText: "", editorUploadConfig: { method: "http", callback: this.editorUploadImage }, confirmLoading: !1, editorContent: "", form1: this.$form.createForm(this), form2: this.$form.createForm(this) } }, methods: { tabsCallback: function (e) { "1" === e && (this.$form.createForm(this), this.form2.resetFields(), this.editor.txt.clear()), "2" === e && (this.$form.createForm(this), this.form1.resetFields()) }, editorUploadImage: function (e, t) { var a = this, r = new FormData; e.forEach((function (e) { r.append("file", e) })), Object(c["e"])(r).then((function (e) { e.success ? Object(c["d"])({ id: e.data }).then((function (e) { t(window.URL.createObjectURL(new Blob([e]))) })).catch((function (e) { a.$message.error("涓婁紶棰勮閿欒锛�" + e.message) })) : a.$message.error("缂栬緫鍣ㄤ笂浼犲浘鐗囧け璐ワ細" + e.message) })) }, getEditor: function (e) { this.editor = e }, changeEditor: function (e, t) { this.editorContent = e, this.editorContentText = t.text() }, handleSubmit1: function () { var e = this, t = this.form1.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : n(a).then((function (t) { t.success ? (e.$message.success("鍙戦�佹垚鍔�"), e.confirmLoading = !1, e.form1.resetFields()) : e.$message.error("鍙戦�佸け璐ワ細" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleSubmit2: function () { var e = this, t = this.form2.validateFields; "" != this.editorContent ? (this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : (a.content = e.editorContent, o(a).then((function (t) { t.success ? (e.$message.success("鍙戦�佹垚鍔�"), e.confirmLoading = !1, e.editor.txt.clear(), e.form2.resetFields()) : e.$message.error("鍙戦�佸け璐ワ細" + t.message) })).finally((function (t) { e.confirmLoading = !1 }))) }))) : this.$message.error("璇峰~鍐欓偖浠跺唴瀹�") } } }, u = d, m = (a("cd2b"), a("2877")), f = Object(m["a"])(u, r, s, !1, null, null, null); t["default"] = f.exports }, b26c: function (e, t, a) { }, b725: function (e, t, a) { }, b86b: function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("3252"), a("d6e6")) })(0, (function (e) { return function () { var t = e, a = t.x64, r = a.Word, s = a.WordArray, i = t.algo, n = i.SHA512, o = i.SHA384 = n.extend({ _doReset: function () { this._hash = new s.init([new r.init(3418070365, 3238371032), new r.init(1654270250, 914150663), new r.init(2438529370, 812702999), new r.init(355462360, 4144912697), new r.init(1731405415, 4290775857), new r.init(2394180231, 1750603025), new r.init(3675008525, 1694076839), new r.init(1203062813, 3204075428)]) }, _doFinalize: function () { var e = n._doFinalize.call(this); return e.sigBytes -= 16, e } }); t.SHA384 = n._createHelper(o), t.HmacSHA384 = n._createHmacHelper(o) }(), e.SHA384 })) }, b86c: function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("38ba")) })(0, (function (e) { return e.pad.NoPadding = { pad: function () { }, unpad: function () { } }, e.pad.NoPadding })) }, b89e: function (e, t, a) { "use strict"; a.d(t, "e", (function () { return s })), a.d(t, "a", (function () { return i })), a.d(t, "b", (function () { return n })), a.d(t, "c", (function () { return o })), a.d(t, "f", (function () { return l })), a.d(t, "g", (function () { return c })), a.d(t, "d", (function () { return d })); var r = a("b775"); function s(e) { return Object(r["b"])({ url: "/sysTimers/page", method: "get", params: e }) } function i(e) { return Object(r["b"])({ url: "/sysTimers/add", method: "post", data: e }) } function n(e) { return Object(r["b"])({ url: "/sysTimers/delete", method: "post", data: e }) } function o(e) { return Object(r["b"])({ url: "/sysTimers/edit", method: "post", data: e }) } function l(e) { return Object(r["b"])({ url: "/sysTimers/start", method: "post", data: e }) } function c(e) { return Object(r["b"])({ url: "/sysTimers/stop", method: "post", data: e }) } function d(e) { return Object(r["b"])({ url: "/sysTimers/localJobList", method: "get", data: e }) } }, ba21: function (e, t, a) { "use strict"; a("9558") }, bb51: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "home" }, [e._m(0), a("br"), a("h2", [e._v("# Trend 缁勪欢 ")]), a("a-divider", [e._v(" 姝e父 ")]), a("a-card", [a("trend", { staticStyle: { "margin-right": "16px" }, attrs: { flag: "up" } }, [a("span", { attrs: { slot: "term" }, slot: "term" }, [e._v("宸ヨ祫")]), e._v(" 5% ")]), a("trend", { staticStyle: { "margin-right": "16px" }, attrs: { flag: "up" } }, [a("span", { attrs: { slot: "term" }, slot: "term" }, [e._v("宸ヤ綔閲�")]), e._v(" 50% ")]), a("trend", { attrs: { flag: "down" } }, [a("span", { attrs: { slot: "term" }, slot: "term" }, [e._v("韬綋鐘舵��")]), e._v(" 50% ")])], 1), a("a-divider", [e._v(" 棰滆壊鍙嶈浆 ")]), a("a-card", { staticStyle: { "margin-bottom": "3rem" } }, [a("trend", { staticStyle: { "margin-right": "16px" }, attrs: { flag: "up", "reverse-color": !0 } }, [a("span", { attrs: { slot: "term" }, slot: "term" }, [e._v("宸ヨ祫")]), e._v(" 5% ")]), a("trend", { staticStyle: { "margin-right": "16px" }, attrs: { flag: "down", "reverse-color": !0 } }, [a("span", { attrs: { slot: "term" }, slot: "term" }, [e._v("宸ヤ綔閲�")]), e._v(" 50% ")])], 1), a("h2", [e._v("# AvatarList 缁勪欢 ")]), a("a-divider", [e._v(" AvatarList ")]), a("a-card", { staticStyle: { "margin-bottom": "3rem" } }, [a("avatar-list", { attrs: { "max-length": 3 } }, [a("avatar-list-item", { attrs: { tips: "Jake", src: "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" } }), a("avatar-list-item", { attrs: { tips: "Andy", src: "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" } }), a("avatar-list-item", { attrs: { tips: "Niko", src: "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" } }), a("avatar-list-item", { attrs: { tips: "Niko", src: "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" } }), a("avatar-list-item", { attrs: { tips: "Niko", src: "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" } }), a("avatar-list-item", { attrs: { tips: "Niko", src: "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" } }), a("avatar-list-item", { attrs: { tips: "Niko", src: "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" } })], 1), a("a-divider", { staticStyle: { margin: "0 16px" }, attrs: { type: "vertical" } }), a("avatar-list", { attrs: { size: "mini" } }, [a("avatar-list-item", { attrs: { tips: "Jake", src: "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" } }), a("avatar-list-item", { attrs: { tips: "Andy", src: "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" } }), a("avatar-list-item", { attrs: { tips: "Niko", src: "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" } })], 1)], 1), a("h2", [e._v("# CountDown 缁勪欢 ")]), a("a-divider", [e._v(" CountDown ")]), a("a-card", { staticStyle: { "margin-bottom": "3rem" } }, [a("count-down", { staticStyle: { "font-size": "2rem" }, attrs: { target: (new Date).getTime() + 3e6, "on-end": e.onEndHandle } }), a("a-divider", { staticStyle: { margin: "0 16px" }, attrs: { type: "vertical" } }), a("count-down", { staticStyle: { "font-size": "2rem" }, attrs: { target: (new Date).getTime() + 1e4, "on-end": e.onEndHandle2 } })], 1), a("h2", [e._v("# Ellipsis 缁勪欢 ")]), a("a-divider", [e._v(" Ellipsis ")]), a("a-card", { staticStyle: { "margin-bottom": "3rem" } }, [a("ellipsis", { attrs: { length: 100, tooltip: "" } }, [e._v(" There were injuries alleged in three cases in 2015, and a fourth incident in September, according to the safety recall report. After meeting with US regulators in October, the firm decided to issue a voluntary recall. ")])], 1), a("h2", [e._v("# NumberInfo 缁勪欢 ")]), a("a-divider", [e._v(" NumberInfo ")]), a("a-card", { staticStyle: { "margin-bottom": "3rem" } }, [a("number-info", { attrs: { "sub-title": function () { return "Visits this week" }, total: 12321, status: "up", "sub-total": 17.1 } })], 1), a("h2", [e._v("# TagSelect 缁勪欢 ")]), a("a-divider", [e._v(" TagSelect ")]), a("a-card", { staticStyle: { "margin-bottom": "3rem" } }, [a("tag-select", [a("tag-select-option", { attrs: { value: "cat1" } }, [e._v("绫荤洰1")]), a("tag-select-option", { attrs: { value: "cat2" } }, [e._v("绫荤洰2")]), a("tag-select-option", { attrs: { value: "cat3" } }, [e._v("绫荤洰3")]), a("tag-select-option", { attrs: { value: "cat4" } }, [e._v("绫荤洰4")]), a("tag-select-option", { attrs: { value: "cat5" } }, [e._v("绫荤洰5")]), a("tag-select-option", { attrs: { value: "cat6" } }, [e._v("绫荤洰6")]), a("tag-select-option", { attrs: { value: "cat7" } }, [e._v("绫荤洰7")])], 1)], 1), a("h2", [e._v("# DescriptionList 缁勪欢 ")]), a("a-divider", [e._v(" DescriptionList ")]), a("a-card", { staticStyle: { "margin-bottom": "3rem" } }, [a("description-list", { attrs: { title: "缁勫悕绉�", size: "small" } }, [a("description-list-item", { attrs: { term: "璐熻矗浜�" } }, [e._v("鏋椾笢涓�")]), a("description-list-item", { attrs: { term: "瑙掕壊鐮�" } }, [e._v("1234567")]), a("description-list-item", { attrs: { term: "鎵�灞為儴闂�" } }, [e._v("XX鍏徃-YY閮�")]), a("description-list-item", { attrs: { term: "杩囨湡鏃堕棿" } }, [e._v("2018-08-08")]), a("description-list-item", { attrs: { term: "鎻忚堪" } }, [e._v("杩欐鎻忚堪寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱...")])], 1)], 1), a("a-divider", [e._v(" TagCloud ")]), a("a-card", { staticStyle: { "margin-bottom": "3rem" } }, [a("tag-cloud", { attrs: { "tag-list": e.tagCloudData } })], 1)], 1) }, s = [function () { var e = this, t = e.$createElement, r = e._self._c || t; return r("div", { staticClass: "banner" }, [r("img", { staticStyle: { width: "64px", height: "64px" }, attrs: { alt: "Vue logo", src: a("cf05") } }), r("h3", { staticStyle: { "margin-top": "1rem" } }, [e._v("Welcome to Your Vue.js App")])]) }], i = a("611e"), n = a("a545"), o = a("6a2a"), l = a("c4db"), c = a("2ce4"), d = a("ac94"), u = a("2af9"), m = n["a"].AvatarItem, f = d["a"].Option, p = u["f"].Item, h = { name: "Home", components: { NumberInfo: c["a"], Ellipsis: l["a"], CountDown: o["a"], Trend: i["a"], AvatarList: n["a"], AvatarListItem: m, TagSelect: d["a"], TagSelectOption: f, TagCloud: u["t"], DescriptionList: u["f"], DescriptionListItem: p }, data: function () { return { targetTime: (new Date).getTime() + 39e5, tagCloudData: [] } }, created: function () { this.getTagCloudData() }, methods: { onEndHandle: function () { this.$message.success("CountDown callback!!!") }, onEndHandle2: function () { this.$notification.open({ message: "Notification Title", description: "This is the content of the notification. This is the content of the notification. This is the content of the notification." }) }, getTagCloudData: function () { var e = this; this.$http.get("/data/antv/tag-cloud").then((function (t) { e.tagCloudData = t.result })) } } }, v = h, g = (a("d005"), a("2877")), b = Object(g["a"])(v, r, s, !1, null, "2a92492a", null); t["default"] = b.exports }, bbd7: function (e, t, a) { "use strict"; a("da55") }, be37: function (e, t, a) { }, c044: function (e, t, a) { "use strict"; a.d(t, "e", (function () { return s })), a.d(t, "a", (function () { return i })), a.d(t, "d", (function () { return n })), a.d(t, "c", (function () { return o })), a.d(t, "b", (function () { return l })); var r = a("b775"); function s(e) { return Object(r["b"])({ url: "/sysDictData/page", method: "get", params: e }) } function i(e) { return Object(r["b"])({ url: "/sysDictData/add", method: "post", data: e }) } function n(e) { return Object(r["b"])({ url: "/sysDictData/edit", method: "post", data: e }) } function o(e) { return Object(r["b"])({ url: "/sysDictData/delete", method: "post", data: e }) } function l(e) { return Object(r["b"])({ url: "/sysDictData/changeStatus", method: "post", data: e }) } }, c198: function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("1132"), a("72fe"), a("2b79"), a("38ba")) })(0, (function (e) { return function () { var t = e, a = t.lib, r = a.BlockCipher, s = t.algo, i = [], n = [], o = [], l = [], c = [], d = [], u = [], m = [], f = [], p = []; (function () { for (var e = [], t = 0; t < 256; t++)e[t] = t < 128 ? t << 1 : t << 1 ^ 283; var a = 0, r = 0; for (t = 0; t < 256; t++) { var s = r ^ r << 1 ^ r << 2 ^ r << 3 ^ r << 4; s = s >>> 8 ^ 255 & s ^ 99, i[a] = s, n[s] = a; var h = e[a], v = e[h], g = e[v], b = 257 * e[s] ^ 16843008 * s; o[a] = b << 24 | b >>> 8, l[a] = b << 16 | b >>> 16, c[a] = b << 8 | b >>> 24, d[a] = b; b = 16843009 * g ^ 65537 * v ^ 257 * h ^ 16843008 * a; u[s] = b << 24 | b >>> 8, m[s] = b << 16 | b >>> 16, f[s] = b << 8 | b >>> 24, p[s] = b, a ? (a = h ^ e[e[e[g ^ h]]], r ^= e[e[r]]) : a = r = 1 } })(); var h = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], v = s.AES = r.extend({ _doReset: function () { if (!this._nRounds || this._keyPriorReset !== this._key) { for (var e = this._keyPriorReset = this._key, t = e.words, a = e.sigBytes / 4, r = this._nRounds = a + 6, s = 4 * (r + 1), n = this._keySchedule = [], o = 0; o < s; o++)o < a ? n[o] = t[o] : (d = n[o - 1], o % a ? a > 6 && o % a == 4 && (d = i[d >>> 24] << 24 | i[d >>> 16 & 255] << 16 | i[d >>> 8 & 255] << 8 | i[255 & d]) : (d = d << 8 | d >>> 24, d = i[d >>> 24] << 24 | i[d >>> 16 & 255] << 16 | i[d >>> 8 & 255] << 8 | i[255 & d], d ^= h[o / a | 0] << 24), n[o] = n[o - a] ^ d); for (var l = this._invKeySchedule = [], c = 0; c < s; c++) { o = s - c; if (c % 4) var d = n[o]; else d = n[o - 4]; l[c] = c < 4 || o <= 4 ? d : u[i[d >>> 24]] ^ m[i[d >>> 16 & 255]] ^ f[i[d >>> 8 & 255]] ^ p[i[255 & d]] } } }, encryptBlock: function (e, t) { this._doCryptBlock(e, t, this._keySchedule, o, l, c, d, i) }, decryptBlock: function (e, t) { var a = e[t + 1]; e[t + 1] = e[t + 3], e[t + 3] = a, this._doCryptBlock(e, t, this._invKeySchedule, u, m, f, p, n); a = e[t + 1]; e[t + 1] = e[t + 3], e[t + 3] = a }, _doCryptBlock: function (e, t, a, r, s, i, n, o) { for (var l = this._nRounds, c = e[t] ^ a[0], d = e[t + 1] ^ a[1], u = e[t + 2] ^ a[2], m = e[t + 3] ^ a[3], f = 4, p = 1; p < l; p++) { var h = r[c >>> 24] ^ s[d >>> 16 & 255] ^ i[u >>> 8 & 255] ^ n[255 & m] ^ a[f++], v = r[d >>> 24] ^ s[u >>> 16 & 255] ^ i[m >>> 8 & 255] ^ n[255 & c] ^ a[f++], g = r[u >>> 24] ^ s[m >>> 16 & 255] ^ i[c >>> 8 & 255] ^ n[255 & d] ^ a[f++], b = r[m >>> 24] ^ s[c >>> 16 & 255] ^ i[d >>> 8 & 255] ^ n[255 & u] ^ a[f++]; c = h, d = v, u = g, m = b } h = (o[c >>> 24] << 24 | o[d >>> 16 & 255] << 16 | o[u >>> 8 & 255] << 8 | o[255 & m]) ^ a[f++], v = (o[d >>> 24] << 24 | o[u >>> 16 & 255] << 16 | o[m >>> 8 & 255] << 8 | o[255 & c]) ^ a[f++], g = (o[u >>> 24] << 24 | o[m >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & d]) ^ a[f++], b = (o[m >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[d >>> 8 & 255] << 8 | o[255 & u]) ^ a[f++]; e[t] = h, e[t + 1] = v, e[t + 2] = g, e[t + 3] = b }, keySize: 8 }); t.AES = r._createHelper(v) }(), e.AES })) }, c1bc: function (e, t, a) { (function (t, r) { e.exports = r(a("21bf")) })(0, (function (e) { return function () { var t = e, a = t.lib, r = a.WordArray, s = t.enc; s.Base64url = { stringify: function (e, t = !0) { var a = e.words, r = e.sigBytes, s = t ? this._safe_map : this._map; e.clamp(); for (var i = [], n = 0; n < r; n += 3)for (var o = a[n >>> 2] >>> 24 - n % 4 * 8 & 255, l = a[n + 1 >>> 2] >>> 24 - (n + 1) % 4 * 8 & 255, c = a[n + 2 >>> 2] >>> 24 - (n + 2) % 4 * 8 & 255, d = o << 16 | l << 8 | c, u = 0; u < 4 && n + .75 * u < r; u++)i.push(s.charAt(d >>> 6 * (3 - u) & 63)); var m = s.charAt(64); if (m) while (i.length % 4) i.push(m); return i.join("") }, parse: function (e, t = !0) { var a = e.length, r = t ? this._safe_map : this._map, s = this._reverseMap; if (!s) { s = this._reverseMap = []; for (var n = 0; n < r.length; n++)s[r.charCodeAt(n)] = n } var o = r.charAt(64); if (o) { var l = e.indexOf(o); -1 !== l && (a = l) } return i(e, a, s) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", _safe_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" }; function i(e, t, a) { for (var s = [], i = 0, n = 0; n < t; n++)if (n % 4) { var o = a[e.charCodeAt(n - 1)] << n % 4 * 2, l = a[e.charCodeAt(n)] >>> 6 - n % 4 * 2, c = o | l; s[i >>> 2] |= c << 24 - i % 4 * 8, i++ } return r.create(s, i) } }(), e.enc.Base64url })) }, c3b6: function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("1132"), a("72fe"), a("2b79"), a("38ba")) })(0, (function (e) { return function () { var t = e, a = t.lib, r = a.StreamCipher, s = t.algo, i = s.RC4 = r.extend({ _doReset: function () { for (var e = this._key, t = e.words, a = e.sigBytes, r = this._S = [], s = 0; s < 256; s++)r[s] = s; s = 0; for (var i = 0; s < 256; s++) { var n = s % a, o = t[n >>> 2] >>> 24 - n % 4 * 8 & 255; i = (i + r[s] + o) % 256; var l = r[s]; r[s] = r[i], r[i] = l } this._i = this._j = 0 }, _doProcessBlock: function (e, t) { e[t] ^= n.call(this) }, keySize: 8, ivSize: 0 }); function n() { for (var e = this._S, t = this._i, a = this._j, r = 0, s = 0; s < 4; s++) { t = (t + 1) % 256, a = (a + e[t]) % 256; var i = e[t]; e[t] = e[a], e[a] = i, r |= e[(e[t] + e[a]) % 256] << 24 - 8 * s } return this._i = t, this._j = a, r } t.RC4 = r._createHelper(i); var o = s.RC4Drop = i.extend({ cfg: i.cfg.extend({ drop: 192 }), _doReset: function () { i._doReset.call(this); for (var e = this.cfg.drop; e > 0; e--)n.call(this) } }); t.RC4Drop = r._createHelper(o) }(), e.RC4 })) }, c531: function (e, t, a) { }, cbf1: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-spin", { attrs: { spinning: e.cardLoading } }, [e.hasPerm("sysFileInfo:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "瀛樺偍浣嶇疆" } }, [a("a-select", { attrs: { placeholder: "璇烽�夋嫨瀛樺偍浣嶇疆" }, model: { value: e.queryParam.fileLocation, callback: function (t) { e.$set(e.queryParam, "fileLocation", t) }, expression: "queryParam.fileLocation" } }, e._l(e.fileLocationDictTypeDropDown, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鏂囦欢浠撳簱" } }, [a("a-input", { attrs: { placeholder: "璇疯緭鍏ユ枃浠朵粨搴�" }, model: { value: e.queryParam.fileBucket, callback: function (t) { e.$set(e.queryParam, "fileBucket", t) }, expression: "queryParam.fileBucket" } })], 1)], 1), e.advanced ? [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鏂囦欢鍚嶇О" } }, [a("a-input", { attrs: { placeholder: "璇疯緭鍏ユ枃浠跺悕绉帮紙涓婁紶鏃跺�欑殑鏂囦欢鍚嶏級" }, model: { value: e.queryParam.fileOriginName, callback: function (t) { e.$set(e.queryParam, "fileOriginName", t) }, expression: "queryParam.fileOriginName" } })], 1)], 1)] : e._e(), a("a-col", { attrs: { md: e.advanced ? 24 : 8, sm: 24 } }, [a("span", { staticClass: "table-page-search-submitButtons", style: e.advanced && { float: "right", overflow: "hidden" } || {} }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")]), a("a", { staticStyle: { "margin-left": "8px" }, on: { click: e.toggleAdvanced } }, [e._v(" " + e._s(e.advanced ? "鏀惰捣" : "灞曞紑") + " "), a("a-icon", { attrs: { type: e.advanced ? "up" : "down" } })], 1)], 1)])], 2)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "fileOriginName", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "fileObjectName", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "fileLocation", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.fileLocationFilter(t)) + " ")]) } }, { key: "fileSuffix", fn: function (t) { return a("span", {}, [a("a-tag", { attrs: { color: "blue" } }, [e._v(e._s(t))])], 1) } }, { key: "action", fn: function (t, r) { return a("span", {}, [e.hasPerm("sysFileInfo:download") ? a("a", { on: { click: function (t) { return e.sysFileInfoDownload(r) } } }, [e._v("涓嬭浇")]) : e._e(), e.hasPerm("sysFileInfo:download") & e.hasPerm("sysFileInfo:detail") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysFileInfo:detail") ? a("a", { on: { click: function (t) { return e.$refs.detailForm.detail(r) } } }, [e._v("璇︽儏")]) : e._e(), e.hasPerm("sysFileInfo:detail") & e.hasPerm("sysFileInfo:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysFileInfo:delete") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.sysFileInfoDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])]) : e._e(), (e.hasPerm("sysFileInfo:preview") & "png" === r.fileSuffix || "jpeg" === r.fileSuffix || "jpg" === r.fileSuffix || "gif" === r.fileSuffix || "tif" === r.fileSuffix || "bmp" === r.fileSuffix) & e.hasPerm("sysFileInfo:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysFileInfo:preview") & "png" === r.fileSuffix || "jpeg" === r.fileSuffix || "jpg" === r.fileSuffix || "gif" === r.fileSuffix || "tif" === r.fileSuffix || "bmp" === r.fileSuffix ? a("a", { on: { click: function (t) { return e.$refs.previewForm.preview(r) } } }, [e._v("棰勮")]) : e._e(), (e.hasPerm("sysFileInfo:preview") & "doc" === r.fileSuffix || "docx" === r.fileSuffix || "xls" === r.fileSuffix || "xlsx" === r.fileSuffix) & e.hasPerm("sysFileInfo:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysFileInfo:preview") & "doc" === r.fileSuffix || "docx" === r.fileSuffix || "xls" === r.fileSuffix || "xlsx" === r.fileSuffix ? a("a", { on: { click: function (t) { return e.previewMicrosoft(r) } } }, [e._v("棰勮")]) : e._e()], 1) } }]) }, [e.hasPerm("sysFileInfo:upload") ? a("template", { slot: "operator" }, [e.hasPerm("sysFileInfo:upload") ? a("a-upload", { attrs: { customRequest: e.customRequest, multiple: !0, showUploadList: !1, name: "file" } }, [a("a-button", [a("a-icon", { attrs: { type: "upload" } }), e._v("涓婁紶鏂囦欢")], 1)], 1) : e._e()], 1) : e._e()], 2), e.hasPerm("sysFileInfo:detail") ? a("detail-form", { ref: "detailForm", on: { ok: e.handleOk } }) : e._e(), e.hasPerm("sysFileInfo:preview") ? a("preview-form", { ref: "previewForm" }) : e._e()], 1)], 1) }, s = [], i = (a("4de4"), a("4d63"), a("ac1f"), a("25f0"), a("d3b7"), a("3ca3"), a("ddb0"), a("2b3d"), a("5319"), a("2af9")), n = a("126f"), o = a("6597"), l = a("7e37"), c = a("f66a"), d = { components: { XCard: i["w"], STable: i["r"], Ellipsis: i["h"], detailForm: l["default"], previewForm: c["default"] }, data: function () { var e = this; return { advanced: !1, queryParam: {}, columns: [{ title: "瀛樺偍浣嶇疆", dataIndex: "fileLocation", scopedSlots: { customRender: "fileLocation" } }, { title: "鏂囦欢浠撳簱", dataIndex: "fileBucket" }, { title: "鏂囦欢鍚嶇О", dataIndex: "fileOriginName", scopedSlots: { customRender: "fileOriginName" } }, { title: "鏂囦欢鍚庣紑", dataIndex: "fileSuffix", scopedSlots: { customRender: "fileSuffix" } }, { title: "鏂囦欢澶у皬", dataIndex: "fileSizeInfo" }, { title: "鍞竴鏍囪瘑id", dataIndex: "fileObjectName", scopedSlots: { customRender: "fileObjectName" } }], loadData: function (t) { return Object(o["c"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, cardLoading: !1, fileLocationDictTypeDropDown: [], selectedRowKeys: [], selectedRows: [] } }, created: function () { this.sysDictTypeDropDown(), (this.hasPerm("sysPos:edit") || this.hasPerm("sysPos:delete")) && this.columns.push({ title: "鎿嶄綔", width: "200px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, methods: { fileLocationFilter: function (e) { var t = this.fileLocationDictTypeDropDown.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, previewMicrosoft: function (e) { window.open("https://view.officeapps.live.com/op/view.aspx?src=http://localhost:5566/sysFileInfo/download?id=" + e.id) }, sysDictTypeDropDown: function () { var e = this; Object(n["d"])({ code: "file_storage_location" }).then((function (t) { e.fileLocationDictTypeDropDown = t.data })) }, sysFileInfoDownload: function (e) { var t = this; this.cardLoading = !0, Object(o["b"])({ id: e.id }).then((function (e) { t.cardLoading = !1, t.downloadfile(e) })).catch((function (e) { t.cardLoading = !1, t.$message.error("涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒" + e) })) }, downloadfile: function (e) { var t = new Blob([e.data], { type: "application/octet-stream;charset=UTF-8" }), a = e.headers["content-disposition"], r = new RegExp("filename=([^;]+\\.[^\\.;]+);*"), s = r.exec(a), i = s[1], n = document.createElement("a"), o = window.URL.createObjectURL(t), l = /^["](.*)["]$/g; n.style.display = "none", n.href = o, n.download = decodeURI(i.replace(l, "$1")), document.body.appendChild(n), n.click(), document.body.removeChild(n), window.URL.revokeObjectURL(o) }, sysFileInfoDelete: function (e) { var t = this; Object(o["a"])(e).then((function (e) { e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("鍒犻櫎澶辫触锛�" + e.message) })).catch((function (e) { t.$message.error("鍒犻櫎閿欒锛�" + e.message) })) }, toggleAdvanced: function () { this.advanced = !this.advanced }, customRequest: function (e) { var t = this, a = new FormData; a.append("file", e.file), Object(o["e"])(a).then((function (e) { e.success ? (t.$message.success("涓婁紶鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("涓婁紶澶辫触锛�" + e.message) })) }, handleOk: function () { this.$refs.table.refresh() }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, u = d, m = (a("eedc"), a("2877")), f = Object(m["a"])(u, r, s, !1, null, null, null); t["default"] = f.exports }, cd2b: function (e, t, a) { "use strict"; a("7696") }, cdb7: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e.hasPerm("sysConfig:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍙傛暟鍚嶇О" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ュ弬鏁板悕绉�" }, model: { value: e.queryParam.name, callback: function (t) { e.$set(e.queryParam, "name", t) }, expression: "queryParam.name" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍞竴缂栫爜" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" }, model: { value: e.queryParam.code, callback: function (t) { e.$set(e.queryParam, "code", t) }, expression: "queryParam.code" } })], 1)], 1), e.advanced ? [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鎵�灞炲垎绫�" } }, [a("a-select", { attrs: { placeholder: "璇烽�夋嫨鎵�灞炲垎绫�", "allow-clear": "" }, model: { value: e.queryParam.groupCode, callback: function (t) { e.$set(e.queryParam, "groupCode", t) }, expression: "queryParam.groupCode" } }, e._l(e.groupCodeDictTypeDropDown, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1)] : e._e(), a("a-col", { attrs: { md: e.advanced ? 24 : 8, sm: 24 } }, [a("span", { staticClass: "table-page-search-submitButtons", style: e.advanced && { float: "right", overflow: "hidden" } || {} }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")]), a("a", { staticStyle: { "margin-left": "8px" }, on: { click: e.toggleAdvanced } }, [e._v(" " + e._s(e.advanced ? "鏀惰捣" : "灞曞紑") + " "), a("a-icon", { attrs: { type: e.advanced ? "up" : "down" } })], 1)], 1)])], 2)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.code }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "name", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 20, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "code", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "value", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 16, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "remark", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 16, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "groupCode", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.groupCodeFilter(t)) + " ")]) } }, { key: "action", fn: function (t, r) { return a("span", {}, [e.hasPerm("sysConfig:edit") ? a("a", { on: { click: function (t) { return e.$refs.editForm.edit(r) } } }, [e._v("缂栬緫")]) : e._e(), e.hasPerm("sysConfig:edit") & e.hasPerm("sysConfig:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysConfig:delete") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.sysConfigDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])]) : e._e()], 1) } }]) }, [e.hasPerm("sysConfig:add") ? a("template", { slot: "operator" }, [e.hasPerm("sysConfig:add") ? a("a-button", { attrs: { icon: "plus", type: "primary" }, on: { click: function (t) { return e.$refs.addForm.add() } } }, [e._v("鏂板閰嶇疆")]) : e._e()], 1) : e._e()], 2), e.hasPerm("sysConfig:add") ? a("add-form", { ref: "addForm", on: { ok: e.handleOk } }) : e._e(), e.hasPerm("sysConfig:edit") ? a("edit-form", { ref: "editForm", on: { ok: e.handleOk } }) : e._e()], 1)], 1) }, s = [], i = (a("4de4"), a("2af9")), n = a("2730"), o = a("126f"), l = a("a6f9"), c = a("d68c"), d = { components: { XCard: i["w"], STable: i["r"], Ellipsis: i["h"], addForm: l["default"], editForm: c["default"] }, data: function () { var e = this; return { advanced: !1, queryParam: {}, columns: [{ title: "鍙傛暟鍚嶇О", dataIndex: "name", scopedSlots: { customRender: "name" } }, { title: "鍞竴缂栫爜", dataIndex: "code", scopedSlots: { customRender: "code" } }, { title: "鍙傛暟鍊�", dataIndex: "value", scopedSlots: { customRender: "value" } }, { title: "鎵�灞炲垎绫�", dataIndex: "groupCode", scopedSlots: { customRender: "groupCode" } }, { title: "澶囨敞", dataIndex: "remark", scopedSlots: { customRender: "remark" } }], loadData: function (t) { return Object(n["d"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [], groupCodeDictTypeDropDown: [] } }, created: function () { this.sysDictTypeDropDown(), (this.hasPerm("sysConfig:edit") || this.hasPerm("sysConfig:delete")) && this.columns.push({ title: "鎿嶄綔", width: "150px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, methods: { sysDictTypeDropDown: function () { var e = this; Object(o["d"])({ code: "consts_type" }).then((function (t) { e.groupCodeDictTypeDropDown = t.data })) }, groupCodeFilter: function (e) { var t = this.groupCodeDictTypeDropDown.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, sysConfigDelete: function (e) { var t = this; Object(n["b"])(e).then((function (e) { e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("鍒犻櫎澶辫触锛�" + e.message) })).catch((function (e) { t.$message.error("鍒犻櫎閿欒锛�" + e.message) })) }, toggleAdvanced: function () { this.advanced = !this.advanced }, handleOk: function () { this.$refs.table.refresh() }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, u = d, m = (a("84a6"), a("2877")), f = Object(m["a"])(u, r, s, !1, null, null, null); t["default"] = f.exports }, d005: function (e, t, a) { "use strict"; a("feb8") }, d0c2: function (e, t, a) { "use strict"; a("e8f1") }, d250: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("exception-page", { attrs: { type: "404" } }) }, s = [], i = a("2af9"), n = { components: { ExceptionPage: i["i"] } }, o = n, l = a("2877"), c = Object(l["a"])(o, r, s, !1, null, "46756242", null); t["default"] = c.exports }, d3bc4: function (e, t, a) { }, d68c: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鍙傛暟缂栬緫", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { staticStyle: { display: "none" }, attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1), a("a-form-item", { attrs: { label: "鍙傛暟鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ュ弬鏁板悕绉帮紒" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ュ弬鏁板悕绉帮紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ弬鏁板悕绉�" } })], 1), a("a-form-item", { attrs: { label: "鍞竴缂栫爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, message: "璇疯緭鍏ュ敮涓�缂栫爜锛�" }] }], expression: "['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ敮涓�缂栫爜", disabled: e.editDisabled } })], 1), a("a-form-item", { attrs: { label: "绯荤粺鍙傛暟", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sysFlag", { rules: [{ required: !0, message: "璇烽�夋嫨鏄惁涓虹郴缁熷弬鏁帮紒" }] }], expression: "['sysFlag',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁涓虹郴缁熷弬鏁帮紒' }]}]" }], attrs: { disabled: e.editDisabled } }, [a("a-radio-button", { attrs: { value: "Y" } }, [e._v(" 鏄� ")]), a("a-radio-button", { attrs: { value: "N" } }, [e._v(" 鍚� ")])], 1)], 1), a("a-form-item", { attrs: { label: "鎵�灞炲垎绫�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["groupCode", { rules: [{ required: !0, message: "璇烽�夋嫨鍙栨墍灞炲垎绫伙紒" }] }], expression: "['groupCode', {rules: [{ required: true, message: '璇烽�夋嫨鍙栨墍灞炲垎绫伙紒' }]}]" }], staticStyle: { width: "100%" }, attrs: { disabled: e.editDisabled, placeholder: "璇烽�夋嫨鎵�灞炲垎绫�" } }, e._l(e.groupCodeList, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value))]) })), 1)], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鍙傛暟鍊�", "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["value", { rules: [{ required: !0, message: "璇疯緭鍏ュ弬鏁板�硷紒" }] }], expression: "['value', {rules: [{required: true, message: '璇疯緭鍏ュ弬鏁板�硷紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ弬鏁板��" } })], 1), a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { rows: 4, placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1) }, s = [], i = (a("b0c0"), a("d3b7"), a("2730")), n = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, formLoading: !0, groupCodeList: [], editDisabled: !1, form: this.$form.createForm(this) } }, methods: { edit: function (e) { var t = this; this.visible = !0, setTimeout((function () { t.form.setFieldsValue({ id: e.id, name: e.name, code: e.code, groupCode: e.groupCode, sysFlag: e.sysFlag, value: e.value, remark: e.remark }) }), 100), "Y" == e.sysFlag && (this.editDisabled = !0), this.sysDictTypeDropDown() }, sysDictTypeDropDown: function () { var e = this; Object(i["e"])({ code: "consts_type" }).then((function (t) { e.groupCodeList = t.data, e.formLoading = !1 })) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(i["c"])(a).then((function (t) { e.confirmLoading = !1, t.success ? (e.$message.success("缂栬緫鎴愬姛"), e.$emit("ok", a), e.handleCancel()) : e.$message.error("缂栬緫澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1, this.editDisabled = !1 } } }, o = n, l = a("2877"), c = Object(l["a"])(o, r, s, !1, null, null, null); t["default"] = c.exports }, d6e6: function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("3252")) })(0, (function (e) { return function () { var t = e, a = t.lib, r = a.Hasher, s = t.x64, i = s.Word, n = s.WordArray, o = t.algo; function l() { return i.create.apply(i, arguments) } var c = [l(1116352408, 3609767458), l(1899447441, 602891725), l(3049323471, 3964484399), l(3921009573, 2173295548), l(961987163, 4081628472), l(1508970993, 3053834265), l(2453635748, 2937671579), l(2870763221, 3664609560), l(3624381080, 2734883394), l(310598401, 1164996542), l(607225278, 1323610764), l(1426881987, 3590304994), l(1925078388, 4068182383), l(2162078206, 991336113), l(2614888103, 633803317), l(3248222580, 3479774868), l(3835390401, 2666613458), l(4022224774, 944711139), l(264347078, 2341262773), l(604807628, 2007800933), l(770255983, 1495990901), l(1249150122, 1856431235), l(1555081692, 3175218132), l(1996064986, 2198950837), l(2554220882, 3999719339), l(2821834349, 766784016), l(2952996808, 2566594879), l(3210313671, 3203337956), l(3336571891, 1034457026), l(3584528711, 2466948901), l(113926993, 3758326383), l(338241895, 168717936), l(666307205, 1188179964), l(773529912, 1546045734), l(1294757372, 1522805485), l(1396182291, 2643833823), l(1695183700, 2343527390), l(1986661051, 1014477480), l(2177026350, 1206759142), l(2456956037, 344077627), l(2730485921, 1290863460), l(2820302411, 3158454273), l(3259730800, 3505952657), l(3345764771, 106217008), l(3516065817, 3606008344), l(3600352804, 1432725776), l(4094571909, 1467031594), l(275423344, 851169720), l(430227734, 3100823752), l(506948616, 1363258195), l(659060556, 3750685593), l(883997877, 3785050280), l(958139571, 3318307427), l(1322822218, 3812723403), l(1537002063, 2003034995), l(1747873779, 3602036899), l(1955562222, 1575990012), l(2024104815, 1125592928), l(2227730452, 2716904306), l(2361852424, 442776044), l(2428436474, 593698344), l(2756734187, 3733110249), l(3204031479, 2999351573), l(3329325298, 3815920427), l(3391569614, 3928383900), l(3515267271, 566280711), l(3940187606, 3454069534), l(4118630271, 4000239992), l(116418474, 1914138554), l(174292421, 2731055270), l(289380356, 3203993006), l(460393269, 320620315), l(685471733, 587496836), l(852142971, 1086792851), l(1017036298, 365543100), l(1126000580, 2618297676), l(1288033470, 3409855158), l(1501505948, 4234509866), l(1607167915, 987167468), l(1816402316, 1246189591)], d = []; (function () { for (var e = 0; e < 80; e++)d[e] = l() })(); var u = o.SHA512 = r.extend({ _doReset: function () { this._hash = new n.init([new i.init(1779033703, 4089235720), new i.init(3144134277, 2227873595), new i.init(1013904242, 4271175723), new i.init(2773480762, 1595750129), new i.init(1359893119, 2917565137), new i.init(2600822924, 725511199), new i.init(528734635, 4215389547), new i.init(1541459225, 327033209)]) }, _doProcessBlock: function (e, t) { for (var a = this._hash.words, r = a[0], s = a[1], i = a[2], n = a[3], o = a[4], l = a[5], u = a[6], m = a[7], f = r.high, p = r.low, h = s.high, v = s.low, g = i.high, b = i.low, y = n.high, w = n.low, _ = o.high, C = o.low, x = l.high, k = l.low, S = u.high, T = u.low, D = m.high, P = m.low, L = f, O = p, j = h, q = v, B = g, N = b, I = y, $ = w, E = _, F = C, z = x, R = k, A = S, M = T, H = D, K = P, V = 0; V < 80; V++) { var W, J, U = d[V]; if (V < 16) J = U.high = 0 | e[t + 2 * V], W = U.low = 0 | e[t + 2 * V + 1]; else { var Y = d[V - 15], G = Y.high, X = Y.low, Z = (G >>> 1 | X << 31) ^ (G >>> 8 | X << 24) ^ G >>> 7, Q = (X >>> 1 | G << 31) ^ (X >>> 8 | G << 24) ^ (X >>> 7 | G << 25), ee = d[V - 2], te = ee.high, ae = ee.low, re = (te >>> 19 | ae << 13) ^ (te << 3 | ae >>> 29) ^ te >>> 6, se = (ae >>> 19 | te << 13) ^ (ae << 3 | te >>> 29) ^ (ae >>> 6 | te << 26), ie = d[V - 7], ne = ie.high, oe = ie.low, le = d[V - 16], ce = le.high, de = le.low; W = Q + oe, J = Z + ne + (W >>> 0 < Q >>> 0 ? 1 : 0), W += se, J = J + re + (W >>> 0 < se >>> 0 ? 1 : 0), W += de, J = J + ce + (W >>> 0 < de >>> 0 ? 1 : 0), U.high = J, U.low = W } var ue = E & z ^ ~E & A, me = F & R ^ ~F & M, fe = L & j ^ L & B ^ j & B, pe = O & q ^ O & N ^ q & N, he = (L >>> 28 | O << 4) ^ (L << 30 | O >>> 2) ^ (L << 25 | O >>> 7), ve = (O >>> 28 | L << 4) ^ (O << 30 | L >>> 2) ^ (O << 25 | L >>> 7), ge = (E >>> 14 | F << 18) ^ (E >>> 18 | F << 14) ^ (E << 23 | F >>> 9), be = (F >>> 14 | E << 18) ^ (F >>> 18 | E << 14) ^ (F << 23 | E >>> 9), ye = c[V], we = ye.high, _e = ye.low, Ce = K + be, xe = H + ge + (Ce >>> 0 < K >>> 0 ? 1 : 0), ke = (Ce = Ce + me, xe = xe + ue + (Ce >>> 0 < me >>> 0 ? 1 : 0), Ce = Ce + _e, xe = xe + we + (Ce >>> 0 < _e >>> 0 ? 1 : 0), Ce = Ce + W, xe = xe + J + (Ce >>> 0 < W >>> 0 ? 1 : 0), ve + pe), Se = he + fe + (ke >>> 0 < ve >>> 0 ? 1 : 0); H = A, K = M, A = z, M = R, z = E, R = F, F = $ + Ce | 0, E = I + xe + (F >>> 0 < $ >>> 0 ? 1 : 0) | 0, I = B, $ = N, B = j, N = q, j = L, q = O, O = Ce + ke | 0, L = xe + Se + (O >>> 0 < Ce >>> 0 ? 1 : 0) | 0 } p = r.low = p + O, r.high = f + L + (p >>> 0 < O >>> 0 ? 1 : 0), v = s.low = v + q, s.high = h + j + (v >>> 0 < q >>> 0 ? 1 : 0), b = i.low = b + N, i.high = g + B + (b >>> 0 < N >>> 0 ? 1 : 0), w = n.low = w + $, n.high = y + I + (w >>> 0 < $ >>> 0 ? 1 : 0), C = o.low = C + F, o.high = _ + E + (C >>> 0 < F >>> 0 ? 1 : 0), k = l.low = k + R, l.high = x + z + (k >>> 0 < R >>> 0 ? 1 : 0), T = u.low = T + M, u.high = S + A + (T >>> 0 < M >>> 0 ? 1 : 0), P = m.low = P + K, m.high = D + H + (P >>> 0 < K >>> 0 ? 1 : 0) }, _doFinalize: function () { var e = this._data, t = e.words, a = 8 * this._nDataBytes, r = 8 * e.sigBytes; t[r >>> 5] |= 128 << 24 - r % 32, t[30 + (r + 128 >>> 10 << 5)] = Math.floor(a / 4294967296), t[31 + (r + 128 >>> 10 << 5)] = a, e.sigBytes = 4 * t.length, this._process(); var s = this._hash.toX32(); return s }, clone: function () { var e = r.clone.call(this); return e._hash = this._hash.clone(), e }, blockSize: 32 }); t.SHA512 = r._createHelper(u), t.HmacSHA512 = r._createHmacHelper(u) }(), e.SHA512 })) }, d80a: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏂板绉熸埛", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍏徃鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ュ叕鍙稿悕绉帮紒" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ュ叕鍙稿悕绉帮紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ叕鍙稿悕绉�" } })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "绠$悊鍛樺鍚�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["adminName", { rules: [{ required: !0, message: "璇疯緭鍏ョ鐞嗗憳濮撳悕" }] }], expression: "['adminName', {rules: [{required: true, message: '璇疯緭鍏ョ鐞嗗憳濮撳悕'}]}]" }], attrs: { placeholder: "璇疯緭鍏ョ鐞嗗憳濮撳悕" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "閭(璐﹀彿)", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["email", { rules: [{ required: !0, message: "璇疯緭鍏ョ數瀛愰偖绠�" }] }], expression: "['email', {rules: [{required: true, message: '璇疯緭鍏ョ數瀛愰偖绠�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ョ數瀛愰偖绠�" } })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "鐢佃瘽鍙风爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["phone"], expression: "['phone']" }], attrs: { placeholder: "璇疯緭鍏ョ數璇濆彿鐮�" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 24, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol_JG, wrapperCol: e.wrapperCol_JG, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { rows: 2, placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1)], 1)], 1)], 1) }, s = [], i = (a("d3b7"), a("a18a")), n = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 6 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }, labelCol_JG: { xs: { span: 24 }, sm: { span: 3 } }, wrapperCol_JG: { xs: { span: 24 }, sm: { span: 20 } }, visible: !1, confirmLoading: !1, formLoading: !1, form: this.$form.createForm(this) } }, methods: { add: function (e) { this.visible = !0, this.formLoading = !1 }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(i["a"])(a).then((function (t) { t.success ? (e.$message.success("鏂板鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a), e.form.resetFields()) : e.$message.error("鏂板澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, o = n, l = a("2877"), c = Object(l["a"])(o, r, s, !1, null, null, null); t["default"] = c.exports }, d91d: function (e, t, a) { "use strict"; a.r(t); var r = a("0bad6"); a.d(t, "AppPage", (function () { return r["default"] })); var s = a("55c7"); a.d(t, "ArticlePage", (function () { return s["default"] })); var i = a("30b2"); a.d(t, "ProjectPage", (function () { return i["default"] })) }, da55: function (e, t, a) { }, da95: function (e, t, a) { "use strict"; a.d(t, "a", (function () { return s })), a.d(t, "b", (function () { return i })); var r = a("b775"); function s(e) { return Object(r["b"])({ url: "/sysEnumData/list", method: "get", params: e }) } function i(e) { return Object(r["b"])({ url: "/sysEnumData/listByFiled", method: "get", params: e }) } }, de71: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "缂栬緫瀹氭椂浠诲姟", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-row", { staticStyle: { display: "none" }, attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: e.jobNameLabel, labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["jobName", { rules: [{ required: !0, message: "璇疯緭鍏ヤ换鍔″悕绉帮紒" }] }], expression: "['jobName', { rules: [{ required: true, message: '璇疯緭鍏ヤ换鍔″悕绉帮紒' }] }]" }], attrs: { placeholder: e.jobNamePlaceholder, showArrow: !0, mode: e.jobNameMode } }, e._l(e.JobNameData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.jobName }, on: { click: function (a) { return e.onChangeJobName(t) } } }, [e._v(e._s(t.jobName))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "Run绫诲瀷锛氱被鍚�/鏂规硶鍚嶏紝http绫诲瀷锛歎RL鍦板潃" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 璇锋眰鍦板潃 ")], 1), a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["requestUrl", { rules: [{ required: !0, message: "璇疯緭鍏ヨ姹傚湴鍧�锛�" }] }], expression: "['requestUrl', { rules: [{ required: true, message: '璇疯緭鍏ヨ姹傚湴鍧�锛�' }] }]" }], attrs: { placeholder: "璇疯緭鍏ヨ鍦板潃" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 24, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol_JG, wrapperCol: e.wrapperCol_JG, label: "璇锋眰绫诲瀷" } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["requestType", { rules: [{ required: !0, message: "璇烽�夋嫨璇锋眰绫诲埆锛�" }] }], expression: "['requestType', { rules: [{ required: true, message: '璇烽�夋嫨璇锋眰绫诲埆锛�' }] }]" }] }, e._l(e.requestTypeEnumDataDropDown, (function (t, r) { return a("a-radio", { key: r, attrs: { value: parseInt(t.code) }, on: { click: function (a) { return e.onChangeRequestType(t.code) } } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("div", { directives: [{ name: "show", rawName: "v-show", value: e.showHeaders, expression: "showHeaders" }] }, [a("a-col", { attrs: { md: 24, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol_JG, wrapperCol: e.wrapperCol_JG, label: "璇锋眰澶�", "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["headers"], expression: "['headers']" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ヨ姹傚ご" } })], 1)], 1)], 1)]), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 24, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol_JG, wrapperCol: e.wrapperCol_JG, label: e.requestParametersLabel, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["requestParameters"], expression: "['requestParameters']" }], attrs: { rows: 1, placeholder: e.requestParametersPlaceholder } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "瀹氭椂鍣ㄧ被鍨�" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["timerType", { rules: [{ required: !0, message: "璇烽�夋嫨瀹氭椂鍣ㄧ被鍨嬶紒" }] }], expression: "['timerType', { rules: [{ required: true, message: '璇烽�夋嫨瀹氭椂鍣ㄧ被鍨嬶紒' }] }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨瀹氭椂鍣ㄧ被鍨�" }, on: { change: e.onChangeTimerType } }, e._l(e.spareTimeTypeDropDown, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [e.VisibleTimerType ? a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎵ц闂撮殧(绉�)", "has-feedback": "" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["interval", { rules: [{ required: !0, message: "璇疯緭鍏ユ墽琛岄棿闅旓紒" }] }], expression: "['interval', { rules: [{ required: true, message: '璇疯緭鍏ユ墽琛岄棿闅旓紒' }] }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ユ墽琛岄棿闅�", min: 1 } })], 1) : a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "浠诲姟琛ㄨ揪寮�", "has-feedback": "" } }, [a("nobr", [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["cron", { rules: [{ required: !0, message: "璇疯緭鍏ヤ换鍔¤〃杈惧紡锛�" }] }], expression: "['cron', { rules: [{ required: true, message: '璇疯緭鍏ヤ换鍔¤〃杈惧紡锛�' }] }]" }], attrs: { placeholder: "璇疯緭鍏ヤ换鍔¤〃杈惧紡" } }), a("a", { attrs: { href: "https://www.bejson.com/othertools/cron/", target: "_Blank" } }, [e._v("鍙傝��")])], 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "鏂板浠诲姟鍚庣珛鍗虫墽琛岋紝椤圭洰鍚姩鍚庣珛鍗虫墽琛�" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 绔嬪嵆鎵ц ")], 1), a("a-switch", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["startNow", { valuePropName: "checked" }], expression: "['startNow', { valuePropName: 'checked' }]" }], attrs: { id: "startNow", checkedChildren: "鏄�", unCheckedChildren: "鍚�" } })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鍙墽琛屼竴娆�" } }, [a("a-switch", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["doOnce", { valuePropName: "checked" }], expression: "['doOnce', { valuePropName: 'checked' }]" }], attrs: { id: "doOnce", checkedChildren: "鏄�", unCheckedChildren: "鍚�" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "骞惰鎵ц涓嶄細绛夊緟褰撳墠浠诲姟瀹屾垚锛屽彂璧锋墽琛屽悗绔嬪嵆寮�濮嬩笅娆′换鍔$殑鍊掕鏃躲�備覆琛屾墽琛屼細绛夊緟褰撳墠浠诲姟瀹屾垚鎵嶅紑濮嬩笅娆′换鍔$殑鍊掕鏃�" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 鎵ц绫诲瀷 ")], 1), a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["executeType", { rules: [{ required: !0, message: "璇烽�夋嫨鎵ц绫诲瀷锛�" }] }], expression: "['executeType', { rules: [{ required: true, message: '璇烽�夋嫨鎵ц绫诲瀷锛�' }] }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨鎵ц绫诲瀷" } }, e._l(e.executeTypeDropDown, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol_JG, wrapperCol: e.wrapperCol_JG, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1)], 1)], 1) }, s = [], i = (a("d3b7"), a("b89e")), n = a("da95"), o = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 6 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }, labelCol_JG: { xs: { span: 24 }, sm: { span: 3 } }, wrapperCol_JG: { xs: { span: 24 }, sm: { span: 20 } }, visible: !1, confirmLoading: !1, VisibleTimerType: !0, requestTypeEnumDataDropDown: [], spareTimeTypeDropDown: [], executeTypeDropDown: [], LocalJobsDropDown: [], JobNameData: [], formLoading: !1, jobNameLabel: "浠诲姟鍚嶇О", jobNameMode: "combobox", jobNamePlaceholder: "璇疯緭鍏ヤ换鍔″悕绉�", requestParametersLabel: "璇锋眰鍙傛暟", requestParametersPlaceholder: "璇疯緭鍏ヨ姹傚弬鏁�", showHeaders: !0, form: this.$form.createForm(this) } }, methods: { edit: function (e) { var t = this; this.visible = !0, this.formLoading = !0, this.sysEnumDataList(), this.VisibleTimerType = 0 == e.timerType, 0 === e.requestType && this.onChangeRequestType(e.requestType), setTimeout((function () { t.form.setFieldsValue({ id: e.id, jobName: e.jobName, requestUrl: e.requestUrl, requestType: e.requestType, timerType: e.timerType, cron: e.cron, interval: e.interval, headers: e.headers, requestParameters: e.requestParameters, remark: e.remark, startNow: e.startNow, doOnce: e.doOnce, executeType: e.executeType }) }), 100) }, sysEnumDataList: function () { var e = this; Object(n["a"])({ enumName: "RequestTypeEnum" }).then((function (t) { e.requestTypeEnumDataDropDown = t.data })), Object(n["b"])({ EntityName: "SysTimer", FieldName: "TimerType" }).then((function (t) { e.spareTimeTypeDropDown = t.data })), Object(n["b"])({ EntityName: "SysTimer", FieldName: "ExecuteType" }).then((function (t) { e.executeTypeDropDown = t.data })), this.formLoading = !1 }, onChangeTimerType: function (e) { this.VisibleTimerType = 0 === e }, onChangeRequestType: function (e) { var t = this; this.showHeaders = 0 !== e, this.showHeaders ? (this.JobNameData = [], this.jobNameLabel = "浠诲姟鍚嶇О", this.jobNameMode = "combobox", this.jobNamePlaceholder = "璇疯緭鍏ヤ换鍔″悕绉�", this.requestParametersLabel = "璇锋眰鍙傛暟", this.requestParametersPlaceholder = "璇疯緭鍏ヨ姹傚弬鏁�") : (0 === this.LocalJobsDropDown.length ? Object(i["d"])().then((function (e) { t.LocalJobsDropDown = e.data, t.JobNameData = e.data })) : this.JobNameData = this.LocalJobsDropDown, this.jobNameLabel = "浠诲姟鏂规硶", this.jobNameMode = "default", this.jobNamePlaceholder = "璇烽�夋嫨浠诲姟鏂规硶", this.requestParametersLabel = "閰嶇疆椤瑰弬鏁�", this.requestParametersPlaceholder = "璇疯緭鍏ラ厤缃」鍙傛暟") }, onChangeJobName: function (e) { var t = this; this.onChangeTimerType(e.timerType), setTimeout((function () { t.form.setFieldsValue({ requestUrl: e.requestUrl, startNow: e.startNow, doOnce: e.doOnce, interval: e.interval, timerType: e.timerType, remark: e.remark, executeType: e.executeType, cron: e.cron }) }), 100) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(i["c"])(a).then((function (t) { t.success ? (e.$message.success("缂栬緫鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a), e.form.resetFields()) : e.$message.error("缂栬緫澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, l = o, c = a("2877"), d = Object(c["a"])(l, r, s, !1, null, null, null); t["default"] = d.exports }, df2f: function (e, t, a) { (function (t, r) { e.exports = r(a("21bf")) })(0, (function (e) { return function () { var t = e, a = t.lib, r = a.WordArray, s = a.Hasher, i = t.algo, n = [], o = i.SHA1 = s.extend({ _doReset: function () { this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (e, t) { for (var a = this._hash.words, r = a[0], s = a[1], i = a[2], o = a[3], l = a[4], c = 0; c < 80; c++) { if (c < 16) n[c] = 0 | e[t + c]; else { var d = n[c - 3] ^ n[c - 8] ^ n[c - 14] ^ n[c - 16]; n[c] = d << 1 | d >>> 31 } var u = (r << 5 | r >>> 27) + l + n[c]; u += c < 20 ? 1518500249 + (s & i | ~s & o) : c < 40 ? 1859775393 + (s ^ i ^ o) : c < 60 ? (s & i | s & o | i & o) - 1894007588 : (s ^ i ^ o) - 899497514, l = o, o = i, i = s << 30 | s >>> 2, s = r, r = u } a[0] = a[0] + r | 0, a[1] = a[1] + s | 0, a[2] = a[2] + i | 0, a[3] = a[3] + o | 0, a[4] = a[4] + l | 0 }, _doFinalize: function () { var e = this._data, t = e.words, a = 8 * this._nDataBytes, r = 8 * e.sigBytes; return t[r >>> 5] |= 128 << 24 - r % 32, t[14 + (r + 64 >>> 9 << 4)] = Math.floor(a / 4294967296), t[15 + (r + 64 >>> 9 << 4)] = a, e.sigBytes = 4 * t.length, this._process(), this._hash }, clone: function () { var e = s.clone.call(this); return e._hash = this._hash.clone(), e } }); t.SHA1 = s._createHelper(o), t.HmacSHA1 = s._createHmacHelper(o) }(), e.SHA1 })) }, e2c8: function (e, t, a) { "use strict"; a("fbf0") }, e581: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "绉熸埛鎺堟潈鑿滃崟", width: 600, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鑿滃崟鏉冮檺", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-tree", { attrs: { multiple: "", checkable: "", "auto-expand-parent": e.autoExpandParent, "expanded-keys": e.expandedKeys, "tree-data": e.menuTreeData, "selected-keys": e.selectedKeys, replaceFields: e.replaceFields }, on: { expand: e.onExpand, select: e.onSelect, check: e.treeCheck }, model: { value: e.checkedKeys, callback: function (t) { e.checkedKeys = t }, expression: "checkedKeys" } })], 1)], 1)], 1)], 1) }, s = [], i = (a("159b"), a("d3b7"), a("99af"), a("a434"), a("0bfe")), n = a("a18a"), o = { data: function () { return { labelCol: { style: { "padding-right": "20px" }, xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, menuTreeData: [], expandedKeys: [], checkedKeys: [], halfCheckedKeys: [], visible: !1, confirmLoading: !1, formLoading: !0, autoExpandParent: !0, selectedKeys: [], subValues: [], tenantEntity: [], replaceFields: { key: "id" }, form: this.$form.createForm(this) } }, methods: { tenantMenu: function (e) { this.formLoading = !0, this.tenantEntity = e, this.visible = !0, this.getMenuTree(), this.expandedMenuKeys(e) }, getMenuTree: function () { var e = this; Object(i["a"])().then((function (t) { t.success && (e.menuTreeData = t.data, e.menuTreeData.forEach((function (t) { e.expandedKeys.push(t.id) }))) })) }, expandedMenuKeys: function (e) { var t = this; Object(n["e"])({ id: e.id }).then((function (e) { e.success && (t.checkedKeys = e.data, t.findAllChildren(t.menuTreeData)), t.formLoading = !1 })) }, treeCheck: function (e, t) { this.halfCheckedKeys = t.halfCheckedKeys }, onExpand: function (e) { this.expandedKeys = e, this.autoExpandParent = !1 }, onCheck: function (e) { this.checkedKeys = e }, onSelect: function (e, t) { this.selectedKeys = e }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(n["d"])({ id: e.tenantEntity.id, grantMenuIdList: e.checkedKeys.concat(e.halfCheckedKeys) }).then((function (t) { t.success ? (e.$message.success("鎺堟潈鎴愬姛"), e.confirmLoading = !1, e.$emit("ok", a), e.handleCancel()) : e.$message.error("鎺堟潈澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.checkedKeys = [], this.expandedKeys = [], this.visible = !1 }, findAllChildren: function (e) { var t = this; e.forEach((function (e, a) { if (0 !== e.children.length) { for (var r = 0; r < t.checkedKeys.length; r++)e.id === t.checkedKeys[r] && t.checkedKeys.splice(r, 1); t.findAllChildren(e.children) } })) } } }, l = o, c = a("2877"), d = Object(c["a"])(l, r, s, !1, null, null, null); t["default"] = d.exports }, e61b: function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("3252")) })(0, (function (e) { return function (t) { var a = e, r = a.lib, s = r.WordArray, i = r.Hasher, n = a.x64, o = n.Word, l = a.algo, c = [], d = [], u = []; (function () { for (var e = 1, t = 0, a = 0; a < 24; a++) { c[e + 5 * t] = (a + 1) * (a + 2) / 2 % 64; var r = t % 5, s = (2 * e + 3 * t) % 5; e = r, t = s } for (e = 0; e < 5; e++)for (t = 0; t < 5; t++)d[e + 5 * t] = t + (2 * e + 3 * t) % 5 * 5; for (var i = 1, n = 0; n < 24; n++) { for (var l = 0, m = 0, f = 0; f < 7; f++) { if (1 & i) { var p = (1 << f) - 1; p < 32 ? m ^= 1 << p : l ^= 1 << p - 32 } 128 & i ? i = i << 1 ^ 113 : i <<= 1 } u[n] = o.create(l, m) } })(); var m = []; (function () { for (var e = 0; e < 25; e++)m[e] = o.create() })(); var f = l.SHA3 = i.extend({ cfg: i.cfg.extend({ outputLength: 512 }), _doReset: function () { for (var e = this._state = [], t = 0; t < 25; t++)e[t] = new o.init; this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 }, _doProcessBlock: function (e, t) { for (var a = this._state, r = this.blockSize / 2, s = 0; s < r; s++) { var i = e[t + 2 * s], n = e[t + 2 * s + 1]; i = 16711935 & (i << 8 | i >>> 24) | 4278255360 & (i << 24 | i >>> 8), n = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8); var o = a[s]; o.high ^= n, o.low ^= i } for (var l = 0; l < 24; l++) { for (var f = 0; f < 5; f++) { for (var p = 0, h = 0, v = 0; v < 5; v++) { o = a[f + 5 * v]; p ^= o.high, h ^= o.low } var g = m[f]; g.high = p, g.low = h } for (f = 0; f < 5; f++) { var b = m[(f + 4) % 5], y = m[(f + 1) % 5], w = y.high, _ = y.low; for (p = b.high ^ (w << 1 | _ >>> 31), h = b.low ^ (_ << 1 | w >>> 31), v = 0; v < 5; v++) { o = a[f + 5 * v]; o.high ^= p, o.low ^= h } } for (var C = 1; C < 25; C++) { o = a[C]; var x = o.high, k = o.low, S = c[C]; S < 32 ? (p = x << S | k >>> 32 - S, h = k << S | x >>> 32 - S) : (p = k << S - 32 | x >>> 64 - S, h = x << S - 32 | k >>> 64 - S); var T = m[d[C]]; T.high = p, T.low = h } var D = m[0], P = a[0]; D.high = P.high, D.low = P.low; for (f = 0; f < 5; f++)for (v = 0; v < 5; v++) { C = f + 5 * v, o = a[C]; var L = m[C], O = m[(f + 1) % 5 + 5 * v], j = m[(f + 2) % 5 + 5 * v]; o.high = L.high ^ ~O.high & j.high, o.low = L.low ^ ~O.low & j.low } o = a[0]; var q = u[l]; o.high ^= q.high, o.low ^= q.low } }, _doFinalize: function () { var e = this._data, a = e.words, r = (this._nDataBytes, 8 * e.sigBytes), i = 32 * this.blockSize; a[r >>> 5] |= 1 << 24 - r % 32, a[(t.ceil((r + 1) / i) * i >>> 5) - 1] |= 128, e.sigBytes = 4 * a.length, this._process(); for (var n = this._state, o = this.cfg.outputLength / 8, l = o / 8, c = [], d = 0; d < l; d++) { var u = n[d], m = u.high, f = u.low; m = 16711935 & (m << 8 | m >>> 24) | 4278255360 & (m << 24 | m >>> 8), f = 16711935 & (f << 8 | f >>> 24) | 4278255360 & (f << 24 | f >>> 8), c.push(f), c.push(m) } return new s.init(c, o) }, clone: function () { for (var e = i.clone.call(this), t = e._state = this._state.slice(0), a = 0; a < 25; a++)t[a] = t[a].clone(); return e } }); a.SHA3 = i._createHelper(f), a.HmacSHA3 = i._createHmacHelper(f) }(Math), e.SHA3 })) }, e746: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [a("h2", [e._v("鏈〉闈㈠唴瀹瑰潎涓烘祴璇曞姛鑳斤紝鏆備笉鎻愪緵绋冲畾鎬т繚璇�")]), a("a-divider"), a("div", { staticClass: "multi-tab-test" }, [a("h4", [e._v("澶氭爣绛剧粍浠舵祴璇曞姛鑳�")]), a("a-button", { staticStyle: { "margin-right": "16px" }, on: { click: e.handleCloseCurrentTab } }, [e._v("鍏抽棴褰撳墠椤�")]), a("a-button", { staticStyle: { "margin-right": "16px" }, on: { click: e.handleOpenTab } }, [e._v("鎵撳紑 浠诲姟鍒楄〃")]), a("a-popconfirm", { attrs: { visible: e.visible, okText: "纭畾", cancelText: "鍙栨秷" }, on: { confirm: e.confirm, cancel: e.cancel }, scopedSlots: e._u([{ key: "title", fn: function () { return [a("div", [a("a-form", { attrs: { form: e.form, layout: "inline" } }, [a("a-form-item", { attrs: { label: "鑷畾涔夊悕绉�" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["tabName", { rules: [{ required: !0, message: "璇疯緭鍏ユ柊鐨� Tab 鍚嶇О" }] }], expression: "['tabName', {rules: [{required: true, message: '璇疯緭鍏ユ柊鐨� Tab 鍚嶇О'}]}]" }] })], 1)], 1)], 1)] }, proxy: !0 }]) }, [a("a-button", { staticStyle: { "margin-right": "16px" }, on: { click: function () { return e.visible = !e.visible } } }, [e._v("淇敼褰撳墠 Tab 鍚嶇О")])], 1), a("a-popconfirm", { attrs: { visible: e.visible2, okText: "纭畾", cancelText: "鍙栨秷" }, on: { confirm: e.confirm2, cancel: function () { return e.visible2 = !1 } }, scopedSlots: e._u([{ key: "title", fn: function () { return [a("div", [a("p", [e._v("椤甸潰 KEY 鏄敱椤甸潰鐨勮矾鐢� "), a("code", [e._v("path")]), e._v(" 鍐冲畾鐨�")]), a("p", [e._v("濡傛灉瑕佷慨鏀规煇涓�涓〉闈㈡爣棰橈紝璇ラ〉闈㈠繀椤诲凡缁忚鎵撳紑鍦� Tab 鏍�")]), a("p", [e._v("鍚庢湡鍙互鑰冭檻浼樺寲鍒扮紪绋嬪紡 Tab 鏍忥紝灏卞彲浠ユ病鏈夎繖绉嶉檺鍒�")]), a("a-form", { attrs: { form: e.form2, layout: "inline" } }, [a("a-form-item", { attrs: { label: "椤甸潰KEY" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["tabKey", { initialValue: "/dashboard/workplace" }], expression: "['tabKey', { initialValue: '/dashboard/workplace' }]" }] })], 1), a("a-form-item", { attrs: { label: "鑷畾涔夊悕绉�" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["tabName", { rules: [{ required: !0, message: "璇疯緭鍏ユ柊鐨� Tab 鍚嶇О" }] }], expression: "['tabName', {rules: [{required: true, message: '璇疯緭鍏ユ柊鐨� Tab 鍚嶇О'}]}]" }] })], 1)], 1)], 1)] }, proxy: !0 }]) }, [a("a-button", { on: { click: function () { return e.visible2 = !e.visible2 } } }, [e._v("淇敼鏌愪竴涓� Tab 鍚嶇О")])], 1)], 1), a("a-divider"), a("div", { staticClass: "page-loading-test" }, [a("h4", [e._v("鍏ㄥ眬閬僵娴嬭瘯")]), a("a-button", { staticStyle: { "margin-right": "16px" }, on: { click: e.handleOpenLoading } }, [e._v("鎵撳紑閬僵(5s 鑷姩鍏抽棴)")]), a("a-button", { on: { click: e.handleOpenLoadingCustomTip } }, [e._v("鎵撳紑閬僵(鑷畾涔夋彁绀鸿)")])], 1)], 1) }, s = [], i = { name: "TestWork", data: function () { return { visible: !1, visible2: !1 } }, created: function () { this.form = this.$form.createForm(this), this.form2 = this.$form.createForm(this) }, methods: { handleCloseCurrentTab: function () { this.$multiTab.closeCurrentPage() }, handleOpenTab: function () { this.$multiTab.open("/features/task") }, handleOpenLoading: function () { var e = this; this.$nextTick((function () { })), this.$loading.show(), setTimeout((function () { e.$loading.hide() }), 5e3) }, handleOpenLoadingCustomTip: function () { var e = this; this.$loading.show({ tip: "鑷畾涔夋彁绀鸿" }), setTimeout((function () { e.$loading.hide() }), 5e3) }, confirm: function (e) { var t = this; e.stopPropagation(); var a = this.$route.path; this.form.validateFields((function (e, r) { e || (t.$multiTab.rename(a, r.tabName), t.visible = !1) })) }, cancel: function () { this.visible = !1 }, confirm2: function (e) { var t = this; e.stopPropagation(), this.form2.validateFields((function (e, a) { e || (t.$multiTab.rename(a.tabKey, a.tabName), t.visible2 = !1) })) } } }, n = i, o = a("2877"), l = Object(o["a"])(n, r, s, !1, null, "29e9b8be", null); t["default"] = l.exports }, e74c: function (e, t, a) { "use strict"; a("1e21") }, e7d8: function (e, t, a) { "use strict"; a("77ae") }, e7f9: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { attrs: { id: "ranking-board" } }, [a("div", { staticClass: "ranking-board-title" }, [e._v("宸℃煡涓婃姤璁板綍鏁伴噺")]), a("dv-scroll-ranking-board", { attrs: { config: e.config } })], 1) }, s = [], i = { name: "RankingBoard", data: function () { return { config: { data: [{ name: "鏃ュ父鍏绘姢", value: 55 }, { name: "浜ら�氫簨鏁�", value: 120 }, { name: "璺潰", value: 78 }, { name: "妗ラ��", value: 66 }, { name: "璁℃棩宸�", value: 80 }, { name: "璺熀", value: 45 }, { name: "浜ゅ畨璁炬柦", value: 29 }, { name: "闄ら洩", value: 29 }, { name: "缁垮寲", value: 29 }], rowNum: 9 } } } }, n = i, o = (a("3c70"), a("2877")), l = Object(o["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, e85f: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e.hasPerm("sysVisLog:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鏃ュ織鍚嶇О" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ユ棩蹇楀悕绉�" }, model: { value: e.queryParam.name, callback: function (t) { e.$set(e.queryParam, "name", t) }, expression: "queryParam.name" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "璁块棶绫诲瀷" } }, [a("a-select", { attrs: { "allow-clear": "", placeholder: "璇烽�夋嫨璁块棶绫诲瀷" }, model: { value: e.queryParam.visType, callback: function (t) { e.$set(e.queryParam, "visType", t) }, expression: "queryParam.visType" } }, e._l(e.visTypeDict, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value) + " ")]) })), 1)], 1)], 1), e.advanced ? [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鏄惁鎴愬姛" } }, [a("a-select", { attrs: { placeholder: "璇烽�夋嫨鏄惁鎴愬姛" }, model: { value: e.queryParam.success, callback: function (t) { e.$set(e.queryParam, "success", t) }, expression: "queryParam.success" } }, e._l(e.successDict, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(" " + e._s(t.value))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 10, sm: 24 } }, [a("a-form-item", { attrs: { label: "璁块棶鏃堕棿" } }, [a("a-range-picker", { attrs: { "show-time": { hideDisabledOptions: !0, defaultValue: [e.moment("00:00:00", "HH:mm:ss"), e.moment("23:59:59", "HH:mm:ss")] }, format: "YYYY-MM-DD HH:mm:ss" }, model: { value: e.queryParam.dates, callback: function (t) { e.$set(e.queryParam, "dates", t) }, expression: "queryParam.dates" } })], 1)], 1)] : e._e(), a("a-col", { attrs: { md: e.advanced ? 24 : 8, sm: 24 } }, [a("span", { staticClass: "table-page-search-submitButtons", style: e.advanced && { float: "right", overflow: "hidden" } || {} }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")]), a("a", { staticStyle: { "margin-left": "8px" }, on: { click: e.toggleAdvanced } }, [e._v(" " + e._s(e.advanced ? "鏀惰捣" : "灞曞紑") + " "), a("a-icon", { attrs: { type: e.advanced ? "up" : "down" } })], 1)], 1)])], 2)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "name", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "visTime", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 10, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "visType", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.visTypeFilter(t)) + " ")]) } }, { key: "success", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.successFilter(t)) + " ")]) } }, { key: "action", fn: function (t, r) { return a("span", {}, [a("span", { attrs: { slot: "action" }, slot: "action" }, [a("a", { on: { click: function (t) { return e.$refs.detailsVislog.details(r) } } }, [e._v("鏌ョ湅璇︽儏")])])]) } }]) }, [e.hasPerm("sysVisLog:sysVisLog") ? a("template", { slot: "operator" }, [e.hasPerm("sysVisLog:delete") ? a("a-popconfirm", { attrs: { placement: "top", title: "纭娓呯┖鏃ュ織锛�" }, on: { confirm: function () { return e.sysVisLogDelete() } } }, [a("a-button", [e._v("娓呯┖鏃ュ織")])], 1) : e._e()], 1) : e._e()], 2), a("details-vislog", { ref: "detailsVislog" })], 1)], 1) }, s = [], i = (a("4de4"), a("2af9")), n = a("487a"), o = a("fed3"), l = a("da95"), c = a("c1df"), d = a.n(c), u = { components: { XCard: i["w"], STable: i["r"], Ellipsis: i["h"], detailsVislog: o["default"] }, data: function () { var e = this; return { advanced: !1, queryParam: {}, columns: [{ title: "鏃ュ織鍚嶇О", dataIndex: "name", scopedSlots: { customRender: "name" } }, { title: "璁块棶绫诲瀷", dataIndex: "visType", scopedSlots: { customRender: "visType" } }, { title: "鏄惁鎴愬姛", dataIndex: "success", scopedSlots: { customRender: "success" } }, { title: "IP", dataIndex: "ip" }, { title: "娴忚鍣�", dataIndex: "browser" }, { title: "鏃堕棿", dataIndex: "visTime", scopedSlots: { customRender: "visTime" } }, { title: "璁块棶鑰�", dataIndex: "account" }, { title: "璇︽儏", dataIndex: "action", width: "150px", scopedSlots: { customRender: "action" } }], loadData: function (t) { return Object(n["f"])(Object.assign(t, e.switchingDate())).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [], defaultExpandedKeys: [], visTypeDict: [], successDict: [] } }, created: function () { this.sysEnumDataList() }, methods: { moment: d.a, visTypeFilter: function (e) { var t = this.visTypeDict.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, successFilter: function (e) { var t = this.successDict.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, sysEnumDataList: function () { var e = this; Object(l["a"])({ enumName: "LoginType" }).then((function (t) { e.visTypeDict = t.data })), Object(l["a"])({ enumName: "YesOrNot" }).then((function (t) { e.successDict = t.data })) }, switchingDate: function () { var e = this.queryParam.dates; null != e && (this.queryParam.searchBeginTime = d()(e[0]).format("YYYY-MM-DD HH:mm:ss"), this.queryParam.searchEndTime = d()(e[1]).format("YYYY-MM-DD HH:mm:ss"), e.length < 1 && (delete this.queryParam.searchBeginTime, delete this.queryParam.searchEndTime)); var t = JSON.parse(JSON.stringify(this.queryParam)); return delete t.dates, t }, sysVisLogDelete: function () { var e = this; Object(n["e"])().then((function (t) { t.success ? (e.$message.success("娓呯┖鎴愬姛"), e.$refs.table.refresh(!0)) : e.$message.error("娓呯┖澶辫触锛�" + t.message) })) }, toggleAdvanced: function () { this.advanced = !this.advanced }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, m = u, f = (a("bbd7"), a("2877")), p = Object(f["a"])(m, r, s, !1, null, null, null); t["default"] = p.exports }, e8f1: function (e, t, a) { }, eedc: function (e, t, a) { "use strict"; a("1ced") }, f061: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { attrs: { id: "cards" } }, e._l(e.cards, (function (t, r) { return a("div", { key: t.title, staticClass: "card-item" }, [a("div", { staticClass: "card-header" }, [a("div", { staticClass: "card-header-left" }, [e._v(e._s(t.title))]), a("div", { staticClass: "card-header-right" }, [e._v(e._s("0" + (r + 1)))])]), a("dv-charts", { staticClass: "ring-charts", attrs: { option: t.ring } }), a("div", { staticClass: "card-footer" }, [a("div", { staticClass: "card-footer-item" }, [a("div", { staticClass: "footer-title" }, [e._v("绱閲戦")]), a("div", { staticClass: "footer-detail" }, [a("dv-digital-flop", { staticStyle: { width: "70%", height: "35px" }, attrs: { config: t.total } }), e._v("鍏� ")], 1)]), a("div", { staticClass: "card-footer-item" }, [a("div", { staticClass: "footer-title" }, [e._v("宸℃煡鐥呭")]), a("div", { staticClass: "footer-detail" }, [a("dv-digital-flop", { staticStyle: { width: "70%", height: "35px" }, attrs: { config: t.num } }), e._v("澶� ")], 1)])])], 1) })), 0) }, s = [], i = (a("d81d"), a("cb29"), { name: "Cards", data: function () { return { cards: [] } }, methods: { createData: function () { var e = this.randomExtend; this.cards = new Array(5).fill(0).map((function (t, a) { return { title: "娴嬭瘯璺" + (a + a), total: { number: [e(9e3, 1e4)], content: "{nt}", textAlign: "right", style: { fill: "#ea6027", fontWeight: "bold" } }, num: { number: [e(30, 60)], content: "{nt}", textAlign: "right", style: { fill: "#26fcd8", fontWeight: "bold" } }, ring: { series: [{ type: "gauge", startAngle: -Math.PI / 2, endAngle: 1.5 * Math.PI, arcLineWidth: 13, radius: "80%", data: [{ name: "璧勯噾鍗犳瘮", value: e(40, 60) }], axisLabel: { show: !1 }, axisTick: { show: !1 }, pointer: { show: !1 }, backgroundArc: { style: { stroke: "#224590" } }, details: { show: !0, formatter: "璧勯噾鍗犳瘮{value}%", style: { fill: "#1ed3e5", fontSize: 20 } } }], color: ["#03d3ec"] } } })) }, randomExtend: function (e, t) { return 1 === arguments.length ? parseInt(Math.random() * e + 1, 10) : parseInt(Math.random() * (t - e + 1) + e, 10) } }, mounted: function () { var e = this.createData; e(), setInterval(this.createData, 3e4) } }), n = i, o = (a("a5e8"), a("2877")), l = Object(o["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, f4ea: function (e, t, a) { (function (t, r, s) { e.exports = r(a("21bf"), a("38ba")) })(0, (function (e) { return e.mode.CTR = function () { var t = e.lib.BlockCipherMode.extend(), a = t.Encryptor = t.extend({ processBlock: function (e, t) { var a = this._cipher, r = a.blockSize, s = this._iv, i = this._counter; s && (i = this._counter = s.slice(0), this._iv = void 0); var n = i.slice(0); a.encryptBlock(n, 0), i[r - 1] = i[r - 1] + 1 | 0; for (var o = 0; o < r; o++)e[t + o] ^= n[o] } }); return t.Decryptor = a, t }(), e.mode.CTR })) }, f5a3: function (e, t, a) { }, f66a: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "棰勮鍥剧墖", footer: null, width: 900, visible: e.visible }, on: { cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.divLoading } }, [a("div", { staticStyle: { "text-align": "center" } }, [a("img", { staticStyle: { "max-width": "99%" }, attrs: { src: e.src } })])])], 1) }, s = [], i = (a("d3b7"), a("3ca3"), a("ddb0"), a("2b3d"), a("6597")), n = { data: function () { return { visible: !1, src: "", divLoading: !1 } }, methods: { preview: function (e) { this.visible = !0, this.divLoading = !0, this.sysFileInfoPreview(e) }, sysFileInfoPreview: function (e) { var t = this; Object(i["d"])({ id: e.id }).then((function (e) { t.divLoading = !1, t.downloadfile(e) })).catch((function (e) { t.divLoading = !1, t.$message.error("棰勮閿欒锛�" + e.message) })) }, downloadfile: function (e) { var t = new Blob([e]); this.src = window.URL.createObjectURL(t) }, handleCancel: function () { this.src = "", this.visible = !1 } } }, o = n, l = a("2877"), c = Object(l["a"])(o, r, s, !1, null, null, null); t["default"] = c.exports }, fad9: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏃ュ織璇︽儏", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "鏂规硶鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["methodName"], expression: "['methodName']" }] })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "绫诲悕", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["className"], expression: "['className']" }] })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "寮傚父鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["exceptionName"], expression: "['exceptionName']" }] })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "寮傚父淇℃伅", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["exceptionMsg"], expression: "['exceptionMsg']" }], attrs: { rows: 4 } })], 1)], 1)], 1)], 1)], 1)], 1) }, s = [], i = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, form: this.$form.createForm(this) } }, methods: { details: function (e) { var t = this; this.visible = !0, setTimeout((function () { t.form.setFieldsValue({ className: e.className, methodName: e.methodName, exceptionMsg: e.exceptionMsg, exceptionName: e.exceptionName }) }), 100) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, n = i, o = a("2877"), l = Object(o["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, fbf0: function (e, t, a) { }, fea1: function (e, t, a) { "use strict"; a("48d4") }, feb8: function (e, t, a) { }, fed3: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏃ュ織璇︽儏", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鍏蜂綋娑堟伅", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["message"], expression: "['message']" }], attrs: { rows: 4 } })], 1)], 1)], 1)], 1) }, s = [], i = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, form: this.$form.createForm(this) } }, methods: { details: function (e) { var t = this; this.visible = !0, setTimeout((function () { t.form.setFieldsValue({ message: e.message }) }), 100) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, n = i, o = a("2877"), l = Object(o["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }
+}]);
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/fail.c1daacfd.js.gz b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/fail.c1daacfd.js.gz
new file mode 100644
index 0000000..473c84f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/fail.c1daacfd.js.gz
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/site.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/site.js
new file mode 100644
index 0000000..ac49c18
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/site.js
@@ -0,0 +1,4 @@
+锘�// Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
+// for details on configuring this project to bundle and minify static web assets.
+
+// Write your JavaScript code.
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/user.6ca40864.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/user.6ca40864.js
new file mode 100644
index 0000000..447a583
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/user.6ca40864.js
@@ -0,0 +1 @@
+(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["user"], { "0135": function (e, t, a) { e.exports = a.p + "img/map.3425b845.jpg" }, "0343": function (e, t, a) { "use strict"; a("ac63") }, "06e5": function (e, t, a) { "use strict"; a("c67b") }, "08fd": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "閫氱煡鍏憡璇︽儏", width: 1e3, confirmLoading: e.confirmLoading, visible: e.visible, footer: null }, on: { cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("div", { staticStyle: { "text-align": "center", "font-size": "30px" } }, [e._v(e._s(this.contentRecord.title))]), a("br"), a("div", { staticStyle: { "text-align": "right", "font-size": "10px" } }, [a("span", [e._v("锛堝彂甯冧汉锛�" + e._s(this.contentRecord.publicUserName) + "锛�")]), a("span", [e._v("鍙戝竷鏃堕棿锛�" + e._s(this.contentRecord.publicTime) + " ")])]), a("a-divider", { staticStyle: { "margin-top": "5px" } }), a("div", [a("label", { domProps: { innerHTML: e._s(this.contentRecord.content) } })])], 1)], 1) }, s = [], o = a("f0c4"), n = { name: "DetailForm", components: {}, data: function () { return { visible: !1, confirmLoading: !1, contentRecord: {} } }, methods: { detail: function (e) { this.confirmLoading = !0, this.visible = !0, this.sysNoticeDetail(e.id) }, sysNoticeDetail: function (e) { var t = this; Object(o["d"])({ id: e }).then((function (e) { t.confirmLoading = !1, t.contentRecord = e.data })) }, handleCancel: function () { this.visible = !1, this.contentRecord = {} } } }, i = n, l = a("2877"), c = Object(l["a"])(i, r, s, !1, null, null, null); t["default"] = c.exports }, "0901": function (e, t, a) { "use strict"; a.d(t, "a", (function () { return s })), a.d(t, "b", (function () { return o })), a.d(t, "f", (function () { return n })), a.d(t, "e", (function () { return i })), a.d(t, "d", (function () { return l })), a.d(t, "l", (function () { return c })), a.d(t, "i", (function () { return d })), a.d(t, "k", (function () { return u })), a.d(t, "h", (function () { return m })), a.d(t, "c", (function () { return p })), a.d(t, "m", (function () { return f })), a.d(t, "q", (function () { return h })), a.d(t, "n", (function () { return b })), a.d(t, "o", (function () { return v })), a.d(t, "p", (function () { return g })), a.d(t, "g", (function () { return y })), a.d(t, "j", (function () { return w })); var r = a("b775"); function s(e) { return Object(r["b"])({ url: "/sysUser/page", method: "get", params: e }) } function o(e) { return Object(r["b"])({ url: "/sysUser/add", method: "post", data: e }) } function n(e) { return Object(r["b"])({ url: "/sysUser/edit", method: "post", data: e }) } function i(e) { return Object(r["b"])({ url: "/sysUser/detail", method: "get", params: e }) } function l(e) { return Object(r["b"])({ url: "/sysUser/delete", method: "post", data: e }) } function c(e) { return Object(r["b"])({ url: "/sysUser/ownRole", method: "get", params: e }) } function d(e) { return Object(r["b"])({ url: "/sysUser/grantRole", method: "post", data: e }) } function u(e) { return Object(r["b"])({ url: "/sysUser/ownData", method: "get", params: e }) } function m(e) { return Object(r["b"])({ url: "/sysUser/grantData", method: "post", data: e }) } function p(e) { return Object(r["b"])({ url: "/sysUser/changeStatus", method: "post", data: e }) } function f(e) { return Object(r["b"])({ url: "/sysUser/resetPwd", method: "post", data: e }) } function h(e) { return Object(r["b"])({ url: "/sysUser/updatePwd", method: "post", data: e }) } function b(e) { return Object(r["b"])({ url: "/sysUser/selector", method: "get", params: e }) } function v(e) { return Object(r["b"])({ url: "/sysUser/updateAvatar", method: "post", data: e }) } function g(e) { return Object(r["b"])({ url: "/sysUser/updateInfo", method: "post", data: e }) } function y(e) { return Object(r["b"])({ url: "/sysUser/export", method: "get", data: e, responseType: "blob" }) } function w(e) { return Object(r["b"])({ url: "/sysUser/import", method: "post", data: e }) } }, "0a1c": function (e, t, a) { "use strict"; a("f4b1") }, "11b2": function (e, t, a) { }, 1715: function (e, t, a) { "use strict"; a("873d") }, 1891: function (e, t, a) { }, "18b3": function (e, t, a) { "use strict"; a("cc79") }, "1f34": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { staticStyle: { padding: "0 0 0 0" }, attrs: { md: 5, sm: 24 } }, [a("a-card", { attrs: { bordered: !1, loading: e.treeLoading } }, ["" != this.orgTree ? a("div", [e.orgTree.length ? a("a-tree", { attrs: { treeData: e.orgTree, defaultExpandAll: !0, defaultExpandedKeys: e.defaultExpandedKeys, replaceFields: e.replaceFields }, on: { select: e.handleClick } }) : e._e()], 1) : a("div", [a("a-empty", { attrs: { image: e.simpleImage } })], 1)])], 1), a("a-col", { attrs: { md: 19, sm: 24 } }, [e.hasPerm("sysUser:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍏抽敭璇�" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ュ鍚嶃�佽处鍙枫�佹墜鏈哄彿" }, model: { value: e.queryParam.searchValue, callback: function (t) { e.$set(e.queryParam, "searchValue", t) }, expression: "queryParam.searchValue" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鐘舵��" } }, [a("a-select", { attrs: { "allow-clear": "", placeholder: "璇烽�夋嫨鐘舵��", "default-value": "0" }, model: { value: e.queryParam.searchStatus, callback: function (t) { e.$set(e.queryParam, "searchStatus", t) }, expression: "queryParam.searchStatus" } }, e._l(e.statusDictTypeDropDown, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(" " + e._s(t.value))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")])], 1)], 1)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "sex", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.sexFilter(t)) + " ")]) } }, { key: "status", fn: function (t, r) { return e.hasPerm("sysUser:changeStatus") ? a("span", {}, [a("a-popconfirm", { attrs: { placement: "top", title: 0 === t ? "纭畾鍋滅敤璇ョ敤鎴凤紵" : "纭畾鍚敤璇ョ敤鎴凤紵" }, on: { confirm: function () { return e.editUserStatus(t, r) } } }, [a("a", [e._v(e._s(e.statusFilter(t)))])])], 1) : a("span", { attrs: { slot: "status" }, slot: "status" }, [e._v(" " + e._s(e.statusFilter(t)) + " ")]) } }, { key: "action", fn: function (t, r) { return a("span", {}, [e.hasPerm("sysUser:edit") ? a("a", { on: { click: function (t) { return e.$refs.editForm.edit(r) } } }, [e._v("缂栬緫")]) : e._e(), e.hasPerm("sysUser:edit") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysUser:resetPwd") || e.hasPerm("sysUser:grantRole") || e.hasPerm("sysUser:grantData") || e.hasPerm("sysUser:delete") ? a("a-dropdown", [a("a", { staticClass: "ant-dropdown-link" }, [e._v(" 鏇村 "), a("a-icon", { attrs: { type: "down" } })], 1), a("a-menu", { attrs: { slot: "overlay" }, slot: "overlay" }, [e.hasPerm("sysUser:resetPwd") ? a("a-menu-item", [a("a-popconfirm", { attrs: { placement: "topRight", title: "纭閲嶇疆瀵嗙爜锛�" }, on: { confirm: function () { return e.resetPwd(r) } } }, [a("a", [e._v("閲嶇疆瀵嗙爜")])])], 1) : e._e(), e.hasPerm("sysUser:grantRole") ? a("a-menu-item", [a("a", { on: { click: function (t) { return e.$refs.userRoleForm.userRole(r) } } }, [e._v("鎺堟潈瑙掕壊")])]) : e._e(), e.hasPerm("sysUser:grantData") ? a("a-menu-item", [a("a", { on: { click: function (t) { return e.$refs.userOrgForm.userOrg(r) } } }, [e._v("鎺堟潈鏁版嵁")])]) : e._e(), e.hasPerm("sysUser:delete") ? a("a-menu-item", [a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.sysUserDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])])], 1) : e._e()], 1)], 1) : e._e()], 1) } }], null, !0) }, [a("template", { slot: "operator" }, [e.hasPerm("sysUser:add") ? a("a-button", { attrs: { type: "primary", icon: "plus" }, on: { click: function (t) { return e.$refs.addForm.add() } } }, [e._v("鏂板鐢ㄦ埛 ")]) : e._e(), e.hasPerm("sysUser:import") ? a("a-upload", { attrs: { customRequest: e.customRequest, multiple: !0, showUploadList: !1, name: "file" } }, [a("a-button", { attrs: { icon: "up-circle" } }, [e._v("瀵煎叆")])], 1) : e._e(), e.hasPerm("sysUser:export") ? a("a-button", { attrs: { icon: "down-circle" }, on: { click: function (t) { return e.sysUserExport() } } }, [e._v("瀵煎嚭 ")]) : e._e()], 1)], 2), a("add-form", { ref: "addForm", on: { ok: e.handleOk } }), a("edit-form", { ref: "editForm", on: { ok: e.handleOk } }), a("user-role-form", { ref: "userRoleForm", on: { ok: e.handleOk } }), a("user-org-form", { ref: "userOrgForm", on: { ok: e.handleOk } })], 1)], 1)], 1) }, s = [], o = a("b85c"), n = (a("06f4"), a("fc25")), i = (a("4de4"), a("ac1f"), a("5319"), a("d3b7"), a("3ca3"), a("ddb0"), a("2b3d"), a("25f0"), a("2af9")), l = a("25fa"), c = a("0901"), d = a("126f"), u = a("d264"), m = a("ef60"), p = a("4e4a"), f = a("c880"), h = { components: { XCard: i["w"], STable: i["r"], addForm: u["default"], editForm: m["default"], userRoleForm: p["default"], userOrgForm: f["default"] }, data: function () { var e = this; return { advanced: !1, queryParam: {}, columns: [{ title: "璐﹀彿", dataIndex: "account" }, { title: "濮撳悕", dataIndex: "name" }, { title: "鎬у埆", dataIndex: "sex", scopedSlots: { customRender: "sex" } }, { title: "鎵嬫満", dataIndex: "phone" }, { title: "鐘舵��", dataIndex: "status", scopedSlots: { customRender: "status" } }], loadData: function (t) { return Object(c["a"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, orgTree: [], selectedRowKeys: [], selectedRows: [], defaultExpandedKeys: [], sexDictTypeDropDown: [], statusDictTypeDropDown: [], treeLoading: !0, simpleImage: n["a"].PRESENTED_IMAGE_SIMPLE, replaceFields: { key: "id" } } }, created: function () { var e = this; Object(l["c"])(Object.assign(this.queryParam)).then((function (t) { if (e.treeLoading = !1, t.success) { e.orgTree = t.data; var a, r = Object(o["a"])(t.data); try { for (r.s(); !(a = r.n()).done;) { var s = a.value; 0 == s.parentId && e.defaultExpandedKeys.push(s.id) } } catch (n) { r.e(n) } finally { r.f() } } })), this.sysDictTypeDropDown(), (this.hasPerm("sysUser:edit") || this.hasPerm("sysUser:resetPwd") || this.hasPerm("sysUser:grantRole") || this.hasPerm("sysUser:grantData") || this.hasPerm("sysUser:delete")) && this.columns.push({ title: "鎿嶄綔", width: "150px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, methods: { sexFilter: function (e) { var t = this.sexDictTypeDropDown.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, statusFilter: function (e) { var t = this.statusDictTypeDropDown.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, sysDictTypeDropDown: function (e) { var t = this; Object(d["d"])({ code: "sex" }).then((function (e) { t.sexDictTypeDropDown = e.data })), Object(d["d"])({ code: "common_status" }).then((function (e) { t.statusDictTypeDropDown = e.data })) }, editUserStatus: function (e, t) { var a = this; 0 == e ? this.status = 1 : 1 == e && (this.status = 0), Object(c["c"])({ id: t.id, status: this.status }).then((function (e) { e.success ? (a.$message.success("鎿嶄綔鎴愬姛"), a.$refs.table.refresh()) : a.$message.error("鎿嶄綔澶辫触锛�" + e.message) })) }, resetPwd: function (e) { var t = this; Object(c["m"])({ id: e.id }).then((function (e) { e.success ? t.$message.success("閲嶇疆鎴愬姛") : t.$message.error("閲嶇疆澶辫触锛�" + e.message) })) }, sysUserDelete: function (e) { var t = this; Object(c["d"])(e).then((function (e) { e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("鍒犻櫎澶辫触锛�" + e.message) })).catch((function (e) { t.$message.error("鍒犻櫎閿欒锛�" + e.message) })) }, sysUserExport: function (e) { var t = this; this.cardLoading = !0, Object(c["g"])().then((function (e) { t.cardLoading = !1, t.downloadfile(e) })).catch((function (e) { t.cardLoading = !1, t.$message.error("涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒") })) }, downloadfile: function (e) { var t = new Blob([e.data], { type: "application/octet-stream;charset=UTF-8" }), a = e.headers["content-disposition"], r = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/, s = r.exec(a), o = s[1].replace(/['"]/g, ""), n = document.createElement("a"), i = window.URL.createObjectURL(t), l = /^["](.*)["]$/g; n.style.display = "none", n.href = i, n.download = decodeURI(o.replace(l, "$1")), document.body.appendChild(n), n.click(), document.body.removeChild(n), window.URL.revokeObjectURL(i) }, customRequest: function (e) { var t = this, a = new FormData; a.append("file", e.file), Object(c["j"])(a).then((function (e) { e.success ? (t.$message.success("涓婁紶鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("涓婁紶澶辫触锛�" + e.message) })) }, handleClick: function (e) { this.queryParam = { "sysEmpParam.orgId": e.toString() }, this.$refs.table.refresh(!0) }, toggleAdvanced: function () { this.advanced = !this.advanced }, handleOk: function () { this.$refs.table.refresh() }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, b = h, v = (a("51fb"), a("2877")), g = Object(v["a"])(b, r, s, !1, null, null, null); t["default"] = g.exports }, "202d": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e.hasPerm("sysNotice:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍏抽敭璇�" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ユ爣棰樸�佸唴瀹�" }, model: { value: e.queryParam.searchValue, callback: function (t) { e.$set(e.queryParam, "searchValue", t) }, expression: "queryParam.searchValue" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "绫诲瀷" } }, [a("a-select", { attrs: { placeholder: "璇烽�夋嫨绫诲瀷", "allow-clear": "" }, model: { value: e.queryParam.type, callback: function (t) { e.$set(e.queryParam, "type", t) }, expression: "queryParam.type" } }, e._l(e.typeDictTypeDropDown, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(" " + e._s(t.value))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")])], 1)], 1)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "status", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.statusFilter(t)) + " ")]) } }, { key: "type", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.typeFilter(t)) + " ")]) } }, { key: "action", fn: function (t, r) { return a("span", {}, [0 == r.status ? a("div", [e.hasPerm("sysNotice:detail") ? a("a", { on: { click: function (t) { return e.$refs.detailForm.detail(r) } } }, [e._v("鏌ョ湅")]) : e._e(), e.hasPerm("sysNotice:detail") & e.hasPerm("sysNotice:edit") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysNotice:edit") ? a("a", { on: { click: function (t) { return e.$refs.editForm.edit(r) } } }, [e._v("缂栬緫")]) : e._e(), e.hasPerm("sysNotice:edit") & e.hasPerm("sysNotice:changeStatus") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysNotice:changeStatus") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍙戝竷璇ヤ俊鎭紵" }, on: { confirm: function () { return e.editNoticeStatus(1, r) } } }, [a("a", [e._v("鍙戝竷")])]) : e._e(), e.hasPerm("sysNotice:changeStatus") & e.hasPerm("sysNotice:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysNotice:delete") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.sysNoticeDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])]) : e._e()], 1) : e._e(), 1 == r.status ? a("div", [e.hasPerm("sysNotice:detail") ? a("a", { on: { click: function (t) { return e.$refs.detailForm.detail(r) } } }, [e._v("鏌ョ湅")]) : e._e(), e.hasPerm("sysNotice:detail") & e.hasPerm("sysNotice:changeStatus") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysNotice:changeStatus") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鎾ゅ洖璇ヤ俊鎭紵" }, on: { confirm: function () { return e.editNoticeStatus(2, r) } } }, [a("a", [e._v("鎾ゅ洖")])]) : e._e()], 1) : e._e(), 2 == r.status ? a("div", [e.hasPerm("sysNotice:detail") ? a("a", { on: { click: function (t) { return e.$refs.detailForm.detail(r) } } }, [e._v("鏌ョ湅")]) : e._e(), e.hasPerm("sysNotice:detail") & e.hasPerm("sysNotice:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysNotice:delete") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.sysNoticeDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])]) : e._e()], 1) : e._e()]) } }]) }, [e.hasPerm("sysNotice:add") ? a("template", { slot: "operator" }, [e.hasPerm("sysNotice:add") ? a("a-button", { attrs: { icon: "plus", type: "primary" }, on: { click: function (t) { return e.$refs.addForm.add() } } }, [e._v("鏂板鍏憡 ")]) : e._e()], 1) : e._e()], 2), e.hasPerm("sysNotice:add") ? a("add-form", { ref: "addForm", on: { ok: e.handleOk } }) : e._e(), e.hasPerm("sysNotice:edit") ? a("edit-form", { ref: "editForm", on: { ok: e.handleOk } }) : e._e(), e.hasPerm("sysNotice:detail") ? a("detail-form", { ref: "detailForm", on: { ok: e.handleOk } }) : e._e(), a("div", { ref: "editor" })], 1)], 1) }, s = [], o = (a("4de4"), a("2af9")), n = a("f0c4"), i = a("126f"), l = a("26bb"), c = a("58cb"), d = a("08fd"), u = { components: { XCard: o["w"], STable: o["r"], addForm: l["default"], editForm: c["default"], detailForm: d["default"] }, data: function () { var e = this; return { advanced: !1, queryParam: {}, columns: [{ title: "鏍囬", dataIndex: "title" }, { title: "绫诲瀷", dataIndex: "type", scopedSlots: { customRender: "type" } }, { title: "鐘舵��", dataIndex: "status", scopedSlots: { customRender: "status" } }], loadData: function (t) { return Object(n["f"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [], statusDictTypeDropDown: [], typeDictTypeDropDown: [] } }, created: function () { this.sysDictTypeDropDown(), (this.hasPerm("sysNotice:changeStatus") || this.hasPerm("sysNotice:edit") || this.hasPerm("sysNotice:delete")) && this.columns.push({ title: "鎿嶄綔", width: "300px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, methods: { sysDictTypeDropDown: function () { var e = this; Object(i["d"])({ code: "notice_status" }).then((function (t) { e.statusDictTypeDropDown = t.data })), Object(i["d"])({ code: "notice_type" }).then((function (t) { e.typeDictTypeDropDown = t.data })) }, statusFilter: function (e) { var t = this.statusDictTypeDropDown.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, typeFilter: function (e) { var t = this.typeDictTypeDropDown.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, editNoticeStatus: function (e, t) { var a = this; Object(n["b"])({ id: t.id, status: e }).then((function (e) { e.success ? (a.$message.success("鎿嶄綔鎴愬姛"), a.$refs.table.refresh()) : a.$message.error("鎿嶄綔澶辫触锛�" + e.message) })) }, sysNoticeDelete: function (e) { var t = this; Object(n["c"])(e).then((function (e) { e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("鍒犻櫎澶辫触锛�" + e.message) })).catch((function (e) { t.$message.error("鍒犻櫎閿欒锛�" + e.message) })) }, handleOk: function () { this.$refs.table.refresh() }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, m = u, p = (a("b76e"), a("2877")), f = Object(p["a"])(m, r, s, !1, null, null, null); t["default"] = f.exports }, 2316: function (e, t, a) { "use strict"; a.d(t, "b", (function () { return s })), a.d(t, "a", (function () { return o })), a.d(t, "c", (function () { return n })), a.d(t, "f", (function () { return i })), a.d(t, "e", (function () { return l })), a.d(t, "g", (function () { return c })), a.d(t, "d", (function () { return d })); var r = a("b775"); function s(e) { return Object(r["b"])({ url: "/sysApp/page", method: "get", params: e }) } function o(e) { return Object(r["b"])({ url: "/sysApp/list", method: "get", params: e }) } function n(e) { return Object(r["b"])({ url: "/sysApp/add", method: "post", data: e }) } function i(e) { return Object(r["b"])({ url: "/sysApp/edit", method: "post", data: e }) } function l(e) { return Object(r["b"])({ url: "/sysApp/delete", method: "post", data: e }) } function c(e) { return Object(r["b"])({ url: "/sysApp/setAsDefault", method: "post", data: e }) } function d(e) { return Object(r["b"])({ url: "/sysApp/changeStatus", method: "post", data: e }) } }, 2367: function (e, t, a) { "use strict"; a("697a") }, 2564: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "left2" }, [a("div", { staticClass: "lc1-header" }, [e._v(" 鏈嶅姟鏁版嵁 "), a("dv-decoration-3", { staticStyle: { width: "200px", height: "20px" } })], 1), a("dv-capsule-chart", { staticClass: "lc1-chart", attrs: { config: e.config } })], 1) }, s = [], o = { name: "Left2", data: function () { return { config: { data: [{ name: "鏈烘瀯鎬绘暟", value: 150 }, { name: "搴婁綅鎬绘暟", value: 5e3 }, { name: "鑰佷汉鎬绘暟", value: 1e4 }, { name: "鍛樺伐鎬绘暟", value: 1e3 }], colors: ["#00baff", "#3de7c9", "#ffc530", "#469f4b"], showValue: !0, unit: "鍗曚綅" } } } }, n = o, i = (a("e384"), a("2877")), l = Object(i["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, "25fa": function (e, t, a) { "use strict"; a.d(t, "c", (function () { return s })), a.d(t, "a", (function () { return o })), a.d(t, "b", (function () { return n })), a.d(t, "d", (function () { return i })), a.d(t, "f", (function () { return l })), a.d(t, "e", (function () { return c })); var r = a("b775"); function s(e) { return Object(r["b"])({ url: "/sysOrg/tree", method: "get", params: e }) } function o(e) { return Object(r["b"])({ url: "/sysOrg/list", method: "get", params: e }) } function n(e) { return Object(r["b"])({ url: "/sysOrg/page", method: "get", params: e }) } function i(e) { return Object(r["b"])({ url: "/sysOrg/add", method: "post", data: e }) } function l(e) { return Object(r["b"])({ url: "/sysOrg/edit", method: "post", data: e }) } function c(e) { return Object(r["b"])({ url: "/sysOrg/delete", method: "post", data: e }) } }, "26bb": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏂板閫氱煡鍏憡", width: 1e3, footer: null, visible: e.visible }, on: { cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鏍囬", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["title", { rules: [{ required: !0, message: "璇疯緭鍏ユ爣棰橈紒" }] }], expression: "['title', {rules: [{required: true, message: '璇疯緭鍏ユ爣棰橈紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ユ爣棰�" } })], 1), a("a-form-item", { attrs: { label: "绫诲瀷", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["type", { rules: [{ required: !0, message: "璇烽�夋嫨绫诲瀷锛�" }] }], expression: "['type',{rules: [{ required: true, message: '璇烽�夋嫨绫诲瀷锛�' }]}]" }] }, e._l(e.typeDictTypeDropDown, (function (t, r) { return a("a-radio-button", { key: r, attrs: { value: t.code } }, [e._v(" " + e._s(t.value))]) })), 1)], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鍐呭" } }, [a("antd-editor", { attrs: { uploadConfig: e.editorUploadConfig }, on: { onchange: e.changeEditor, oninit: e.getEditor }, model: { value: e.editorContent, callback: function (t) { e.editorContent = t }, expression: "editorContent" } })], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "閫氱煡鍒扮殑浜�" } }, [a("a-transfer", { attrs: { "data-source": e.mockData, "show-search": "", "list-style": { width: "40%", height: "300px" }, "filter-option": e.filterOption, "target-keys": e.targetKeys, render: function (e) { return e.title } }, on: { change: e.handleChange } })], 1), a("a-divider"), a("a-form-item", { staticClass: "subForm-item" }, [a("a-button", { staticClass: "subButton", attrs: { type: "primary" }, on: { click: function (t) { return e.handleSubmit(1) } } }, [e._v("鍙戝竷")]), a("a-button", { staticClass: "subButton", attrs: { type: "danger" }, on: { click: function (t) { return e.handleSubmit(0) } } }, [e._v("瀛樹负鑽夌")]), a("a-button", { staticClass: "subButton", on: { click: e.handleCancel } }, [e._v("鍙栨秷")])], 1)], 1)], 1)], 1) }, s = [], o = (a("159b"), a("d3b7"), a("3ca3"), a("ddb0"), a("2b3d"), a("25f0"), a("b0c0"), a("a4d3"), a("e01a"), a("f0c4")), n = a("126f"), i = a("6597"), l = a("2af9"), c = a("0901"), d = { name: "AddForm", components: { AntdEditor: l["a"] }, data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 3 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 18 } }, visible: !1, confirmLoading: !1, form: this.$form.createForm(this), editorContent: "", editorContentText: "", editorUploadConfig: { method: "http", uploadImgServer: "/sysFileInfo/upload", callback: this.editorUploadImage }, mockData: [], targetKeys: [], typeDictTypeDropDown: [], formLoading: !0 } }, methods: { add: function () { this.visible = !0, this.sysDictTypeDropDown(), this.getMock() }, sysDictTypeDropDown: function () { var e = this; Object(n["d"])({ code: "notice_type" }).then((function (t) { e.typeDictTypeDropDown = t.data })) }, editorUploadImage: function (e, t) { var a = this, r = new FormData; e.forEach((function (e) { r.append("file", e) })), Object(i["e"])(r).then((function (e) { e.success ? Object(i["d"])({ id: e.data }).then((function (e) { t(window.URL.createObjectURL(new Blob([e]))) })).catch((function (e) { a.$message.error("涓婁紶棰勮閿欒锛�" + e.message) })) : a.$message.error("缂栬緫鍣ㄤ笂浼犲浘鐗囧け璐ワ細" + e.message) })).catch((function (e) { a.$message.error("棰勮閿欒锛�" + e.message) })) }, getEditor: function (e) { this.editor = e }, changeEditor: function (e, t) { this.editorContent = e, this.editorContentText = t.text() }, getMock: function () { var e = this, t = [], a = []; Object(c["n"])().then((function (t) { e.formLoading = !1; for (var r = 0; r < t.data.length; r++) { var s = { key: t.data[r].id.toString(), title: t.data[r].name, description: "description of ".concat(t.data[r].name) }; a.push(s) } })), this.mockData = a, this.targetKeys = t }, filterOption: function (e, t) { return t.description.indexOf(e) > -1 }, handleChange: function (e, t, a) { this.targetKeys = e }, handleSubmit: function (e) { var t = this, a = this.form.validateFields; "" != this.editorContent ? this.targetKeys.length < 1 ? this.$message.error("璇烽�夋嫨閫氱煡鍒扮殑浜�") : a((function (a, r) { a || (t.formLoading = !0, r.content = t.editorContent, r.status = e, r.noticeUserIdList = t.targetKeys, Object(o["a"])(r).then((function (e) { e.success ? (t.$message.success("鏂板鎴愬姛"), t.$emit("ok", r), t.handleCancel()) : t.$message.error("鏂板澶辫触锛�" + e.message) })).finally((function (e) { t.formLoading = !1 }))) })) : this.$message.error("璇峰~鍐欏唴瀹�") }, handleCancel: function () { this.editor.txt.clear(), this.targetKeys = [], this.editorContent = "", this.form.resetFields(), this.visible = !1, this.formLoading = !0 } } }, u = d, m = (a("d03f"), a("2877")), p = Object(m["a"])(u, r, s, !1, null, null, null); t["default"] = p.exports }, "27d9": function (e, t, a) { }, "281b": function (e, t, a) { "use strict"; a("1891") }, "2f01": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "缂栬緫浠g爜鐢熸垚閰嶇疆", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { directives: [{ name: "show", rawName: "v-show", value: !1, expression: "false" }] }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鐢熸垚搴�", "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["databaseName", { rules: [{ required: !0, message: "璇烽�夋嫨鏁版嵁搴擄紒" }] }], expression: "['databaseName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴擄紒' }]}]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨鏁版嵁搴�" } }, e._l(e.databaseNameData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.databaseName }, on: { click: function (a) { return e.databaseNameSele(t) } } }, [e._v(e._s(t.databaseName))]) })), 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鐢熸垚琛�", "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["tableName", { rules: [{ required: !0, message: "璇烽�夋嫨鏁版嵁搴撹〃锛�" }] }], expression: "['tableName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴撹〃锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨鏁版嵁搴撹〃" } }, e._l(e.tableNameData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.tableName }, on: { click: function (a) { return e.tableNameSele(t) } } }, [e._v(e._s(t.tableName))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "涓氬姟鍚�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["busName", { rules: [{ required: !0, message: "璇疯緭鍏ヤ笟鍔″悕锛�" }] }], expression: "['busName', {rules: [{required: true, message: '璇疯緭鍏ヤ笟鍔″悕锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヤ笟鍔″悕" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鑿滃崟鍒嗙被", "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["menuApplication", { rules: [{ required: !0, message: "璇烽�夋嫨搴旂敤鍒嗙被锛�" }] }], expression: "['menuApplication', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨搴旂敤鍒嗙被" } }, e._l(e.appData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code }, on: { click: function (a) { return e.changeApplication(t.code) } } }, [e._v(e._s(t.name))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("div", [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鐖剁骇鑿滃崟", "has-feedback": "" } }, [a("a-tree-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["menuPid", { rules: [{ required: !0, message: "璇烽�夋嫨鐖剁骇鑿滃崟锛�" }] }], expression: "['menuPid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { dropdownStyle: { maxHeight: "300px", overflow: "auto" }, treeData: e.menuTreeData, placeholder: "璇烽�夋嫨鐖剁骇鑿滃崟", treeDefaultExpandAll: "" }, scopedSlots: e._u([{ key: "title", fn: function (t) { var r = t.id; return a("span", {}, [e._v(e._s(r) + " ")]) } }]) })], 1)], 1)])], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍛藉悕绌洪棿", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["nameSpace", { rules: [{ required: !0, message: "璇疯緭鍏ュ懡鍚嶇┖闂达紒" }] }], expression: "['nameSpace', {rules: [{required: true, message: '璇疯緭鍏ュ懡鍚嶇┖闂达紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ懡鍚嶇┖闂�" } })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "浣滆�呭鍚�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["authorName", { rules: [{ required: !0, message: "璇疯緭鍏ヤ綔鑰呭鍚嶏紒" }] }], expression: "['authorName', {rules: [{required: true, message: '璇疯緭鍏ヤ綔鑰呭鍚嶏紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヤ綔鑰呭鍚�" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鐢熸垚鏂瑰紡" } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["generateType", { rules: [{ required: !0, message: "璇烽�夋嫨鐢熸垚鏂瑰紡锛�" }] }], expression: "['generateType',{rules: [{ required: true, message: '璇烽�夋嫨鐢熸垚鏂瑰紡锛�' }]}]" }] }, e._l(e.generateTypeData, (function (t, r) { return a("a-radio", { key: r, attrs: { value: t.code }, on: { click: function (a) { return e.generateTypeRadio(t.code) } } }, [e._v(e._s(t.name))]) })), 1)], 1)], 1)], 1)], 1)], 1)], 1) }, s = [], o = (a("a434"), a("d3b7"), a("2316")), n = a("0bfe"), i = a("998b"), l = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, databaseNameData: [], tableNameData: [], appData: [], menuTreeData: [], generateTypeData: [], confirmLoading: !1, databaseNameValue: "", tableNameValue: "", form: this.$form.createForm(this) } }, methods: { edit: function (e) { var t = this; this.visible = !0, this.codeGenerateDatabaseList(), this.codeGenerateInformationList(), this.dataTypeItem(), setTimeout((function () { t.form.setFieldsValue({ id: e.id, databaseName: e.databaseName, tableName: e.tableName, busName: e.busName, generateType: e.generateType, authorName: e.authorName, nameSpace: e.nameSpace, menuApplication: e.menuApplication, menuPid: e.menuPid }) }), 100), this.databaseNameValue = e.databaseName, this.tableNameValue = e.tableName, this.getSysApplist(), this.changeApplication(e.menuApplication) }, getSysApplist: function () { var e = this; return Object(o["a"])().then((function (t) { t.success ? e.appData = t.data : e.$message.warning(t.message) })) }, codeGenerateDatabaseList: function () { var e = this; Object(i["c"])().then((function (t) { e.databaseNameData = t.data })) }, codeGenerateInformationList: function (e) { var t = this; Object(i["f"])(e).then((function (e) { t.tableNameData = e.data })) }, dataTypeItem: function () { this.tablePrefixData = this.$options.filters["dictData"]("yes_or_no"), this.generateTypeData = this.$options.filters["dictData"]("code_gen_create_type"), this.generateTypeData.splice(0, 1) }, handleSubmit: function () { var e = this, t = this.form.validateFields; t((function (t, a) { t || (e.confirmLoading = !0, Object(i["e"])(a).then((function (t) { t.success ? (e.$message.success("缂栬緫鎴愬姛"), e.$emit("ok", a), e.handleCancel()) : e.$message.error("缂栬緫澶辫触" + t.message) })).finally((function (t) { e.confirmLoading = !1 }))) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 }, databaseNameSele: function (e) { this.databaseNameValue = e.databaseName, this.form.setFieldsValue({ tableName: "" }), this.codeGenerateInformationList({ dbContextLocatorName: this.databaseNameValue }) }, tableNameSele: function (e) { this.tableNameValue = e.tableName, this.form.setFieldsValue({ className: e.tableComment }), this.settingDefaultValue() }, changeApplication: function (e) { var t = this; Object(n["c"])({ application: e }).then((function (e) { e.success ? t.menuTreeData = [{ id: "-1", parentId: "0", title: "椤剁骇", value: "0", pid: "0", children: e.data }] : t.$message.warning(e.message) })) }, settingDefaultValue: function () { }, generateTypeRadio: function (e) { } } }, c = l, d = a("2877"), u = Object(d["a"])(c, r, s, !1, null, null, null); t["default"] = u.exports }, "316e": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏂板搴旂敤", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { staticStyle: { display: "none" }, attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["active"], expression: "['active']" }] })], 1), a("a-form-item", { attrs: { label: "搴旂敤鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ュ簲鐢ㄥ悕绉帮紒" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ュ簲鐢ㄥ悕绉帮紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ簲鐢ㄥ悕绉�" } })], 1), a("a-form-item", { attrs: { label: "鍞竴缂栫爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, message: "璇疯緭鍏ュ敮涓�缂栫爜锛�" }] }], expression: "['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" } })], 1)], 1)], 1)], 1) }, s = [], o = (a("d3b7"), a("2316")), n = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, form: this.$form.createForm(this) } }, methods: { add: function () { this.visible = !0, this.form.getFieldDecorator("active", { initialValue: "N" }) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(o["c"])(a).then((function (t) { e.confirmLoading = !1, t.success ? (e.$message.success("鏂板鎴愬姛"), e.handleCancel(), e.$emit("ok", a)) : e.$message.error("鏂板澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, i = n, l = a("2877"), c = Object(l["a"])(i, r, s, !1, null, null, null); t["default"] = c.exports }, "32a9": function (e, t, a) { }, 3448: function (e, t, a) { }, "3d8b": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { staticStyle: { padding: "0 0 0 0" }, attrs: { md: 5, sm: 24 } }, [a("a-card", { attrs: { bordered: !1, loading: e.treeLoading } }, ["" != this.orgTree ? a("div", [e.orgTree.length ? a("a-tree", { staticStyle: { scroll: "true" }, attrs: { treeData: e.orgTree, defaultExpandAll: !0, defaultExpandedKeys: e.defaultExpandedKeys, replaceFields: e.replaceFields }, on: { select: e.handleClick } }) : e._e()], 1) : a("div", [a("a-empty", { attrs: { image: e.simpleImage } })], 1)])], 1), a("a-col", { attrs: { md: 19, sm: 24 } }, [e.hasPerm("sysOrg:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鏈烘瀯鍚嶇О" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ユ満鏋勫悕绉�" }, model: { value: e.queryParam.name, callback: function (t) { e.$set(e.queryParam, "name", t) }, expression: "queryParam.name" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")])], 1), a("a-col", { attrs: { md: 8, sm: 24 } })], 1)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "orgType", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.typeFilter(t)) + " ")]) } }, { key: "action", fn: function (t, r) { return a("span", {}, [e.hasPerm("sysOrg:edit") ? a("a", { on: { click: function (t) { return e.$refs.editForm.edit(r) } } }, [e._v("缂栬緫")]) : e._e(), e.hasPerm("sysOrg:edit") & e.hasPerm("sysOrg:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysOrg:delete") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.sysOrgDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])]) : e._e()], 1) } }]) }, [e.hasPerm("sysOrg:add") ? a("template", { slot: "operator" }, [e.hasPerm("sysOrg:add") ? a("a-button", { attrs: { icon: "plus", type: "primary" }, on: { click: function (t) { return e.$refs.addForm.add() } } }, [e._v("鏂板鏈烘瀯")]) : e._e()], 1) : e._e()], 2), a("add-form", { ref: "addForm", on: { ok: e.handleOk } }), a("edit-form", { ref: "editForm", on: { ok: e.handleOk } })], 1)], 1)], 1) }, s = [], o = a("b85c"), n = (a("06f4"), a("fc25")), i = (a("4de4"), a("d3b7"), a("25f0"), a("2af9")), l = a("25fa"), c = a("126f"), d = a("4f46"), u = a("a09c"), m = { components: { XCard: i["w"], STable: i["r"], addForm: d["default"], editForm: u["default"] }, data: function () { var e = this; return { advanced: !1, queryParam: {}, columns: [{ title: "鏈烘瀯鍚嶇О", dataIndex: "name" }, { title: "鏈烘瀯绫诲瀷", dataIndex: "orgType", scopedSlots: { customRender: "orgType" } }, { title: "鍞竴缂栫爜", dataIndex: "code" }, { title: "鎺掑簭", dataIndex: "sort" }, { title: "澶囨敞", dataIndex: "remark" }], loadData: function (t) { return Object(l["b"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, orgTree: [], selectedRowKeys: [], selectedRows: [], defaultExpandedKeys: [], typeDictTypeDropDown: [], expandedKeys: [], searchValue: "", autoExpandParent: !0, treeLoading: !0, simpleImage: n["a"].PRESENTED_IMAGE_SIMPLE, replaceFields: { key: "id" } } }, created: function () { this.sysDictTypeDropDown(), this.getOrgTree(), (this.hasPerm("sysOrg:edit") || this.hasPerm("sysOrg:delete")) && this.columns.push({ title: "鎿嶄綔", width: "150px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, methods: { getOrgTree: function () { var e = this; Object(l["c"])(Object.assign(this.queryParam)).then((function (t) { if (e.treeLoading = !1, t.success) { e.orgTree = t.data, e.queryParam.parentId = e.orgTree[0].id; var a, r = Object(o["a"])(t.data); try { for (r.s(); !(a = r.n()).done;) { var s = a.value; 0 == s.parentId && e.defaultExpandedKeys.push(s.id) } } catch (n) { r.e(n) } finally { r.f() } e.$refs.table.refresh() } })) }, typeFilter: function (e) { var t = this.typeDictTypeDropDown.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, sysDictTypeDropDown: function (e) { var t = this; Object(c["d"])({ code: "org_type" }).then((function (e) { t.typeDictTypeDropDown = e.data })) }, sysOrgDelete: function (e) { var t = this; Object(l["e"])(e).then((function (e) { e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.getOrgTree(), t.$refs.table.refresh()) : t.$message.error("鍒犻櫎澶辫触锛�" + e.message) })).catch((function (e) { t.$message.error("鍒犻櫎閿欒锛�" + e.message) })) }, handleClick: function (e) { this.queryParam = { pid: e.toString() }, this.$refs.table.refresh(!0) }, toggleAdvanced: function () { this.advanced = !this.advanced }, handleOk: function () { this.getOrgTree(), this.$refs.table.refresh() }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, p = m, f = (a("c772"), a("2877")), h = Object(f["a"])(p, r, s, !1, null, null, null); t["default"] = h.exports }, "3e23": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e.hasPerm("sysNotice:received") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [e.hasPerm("sysNotice:received") ? a("a-form-item", { attrs: { label: "鍏抽敭璇�" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ユ爣棰樸�佸唴瀹�" }, model: { value: e.queryParam.searchValue, callback: function (t) { e.$set(e.queryParam, "searchValue", t) }, expression: "queryParam.searchValue" } })], 1) : e._e()], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [e.hasPerm("sysNotice:received") ? a("a-form-item", { attrs: { label: "绫诲瀷" } }, [a("a-select", { attrs: { placeholder: "璇烽�夋嫨绫诲瀷", "allow-clear": "" }, model: { value: e.queryParam.type, callback: function (t) { e.$set(e.queryParam, "type", t) }, expression: "queryParam.type" } }, e._l(e.typeDictTypeDropDown, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value))]) })), 1)], 1) : e._e()], 1), a("a-col", { attrs: { md: e.advanced ? 24 : 8, sm: 24 } }, [a("span", { staticClass: "table-page-search-submitButtons" }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")])], 1)])], 1)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "status", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.statusFilter(t)) + " ")]) } }, { key: "type", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.typeFilter(t)) + " ")]) } }, { key: "action", fn: function (t, r) { return a("span", {}, [e.hasPerm("sysNotice:received") ? a("a", { on: { click: function (t) { return e.$refs.detailForm.detail(r) } } }, [e._v("鏌ョ湅")]) : e._e()]) } }]) }), a("detail-form", { ref: "detailForm", on: { ok: e.handleOk } }), a("div", { ref: "editor" })], 1)], 1) }, s = [], o = (a("4de4"), a("2af9")), n = a("f045"), i = a("126f"), l = a("cbd8"), c = { components: { XCard: o["w"], STable: o["r"], detailForm: l["default"] }, data: function () { var e = this; return { advanced: !1, queryParam: {}, columns: [{ title: "鏍囬", dataIndex: "title" }, { title: "绫诲瀷", dataIndex: "type", scopedSlots: { customRender: "type" } }, { title: "鐘舵��", dataIndex: "status", scopedSlots: { customRender: "status" } }], loadData: function (t) { return Object(n["a"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [], statusDictTypeDropDown: [], typeDictTypeDropDown: [] } }, created: function () { this.sysDictTypeDropDown(), this.hasPerm("sysNotice:received") && this.columns.push({ title: "鎿嶄綔", width: "200px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, methods: { sysDictTypeDropDown: function () { var e = this; Object(i["d"])({ code: "notice_status" }).then((function (t) { e.statusDictTypeDropDown = t.data })), Object(i["d"])({ code: "notice_type" }).then((function (t) { e.typeDictTypeDropDown = t.data })) }, statusFilter: function (e) { var t = this.statusDictTypeDropDown.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, typeFilter: function (e) { var t = this.typeDictTypeDropDown.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, handleOk: function () { this.$refs.table.refresh() }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, d = c, u = (a("6bc3"), a("2877")), m = Object(u["a"])(d, r, s, !1, null, null, null); t["default"] = m.exports }, 4237: function (e, t, a) { "use strict"; a("dd46") }, "45e1": function (e, t, a) { }, "45f0": function (e, t, a) { }, "4b0a": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "main user-layout-register" }, [e._m(0), a("a-form", { ref: "formRegister", attrs: { form: e.form, id: "formRegister" } }, [a("a-form-item", [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["email", { rules: [{ required: !0, type: "email", message: "璇疯緭鍏ラ偖绠卞湴鍧�" }], validateTrigger: ["change", "blur"] }], expression: "['email', {rules: [{ required: true, type: 'email', message: '璇疯緭鍏ラ偖绠卞湴鍧�' }], validateTrigger: ['change', 'blur']}]" }], attrs: { size: "large", type: "text", placeholder: "閭" } })], 1), a("a-popover", { attrs: { placement: "rightTop", trigger: ["focus"], getPopupContainer: function (e) { return e.parentElement } }, model: { value: e.state.passwordLevelChecked, callback: function (t) { e.$set(e.state, "passwordLevelChecked", t) }, expression: "state.passwordLevelChecked" } }, [a("template", { slot: "content" }, [a("div", { style: { width: "240px" } }, [a("div", { class: ["user-register", e.passwordLevelClass] }, [e._v("寮哄害锛�"), a("span", [e._v(e._s(e.passwordLevelName))])]), a("a-progress", { attrs: { percent: e.state.percent, showInfo: !1, strokeColor: e.passwordLevelColor } }), a("div", { staticStyle: { "margin-top": "10px" } }, [a("span", [e._v("璇疯嚦灏戣緭鍏� 6 涓瓧绗︺�傝涓嶈浣跨敤瀹规槗琚寽鍒扮殑瀵嗙爜銆�")])])], 1)]), a("a-form-item", [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["password", { rules: [{ required: !0, message: "鑷冲皯6浣嶅瘑鐮侊紝鍖哄垎澶у皬鍐�" }, { validator: this.handlePasswordLevel }], validateTrigger: ["change", "blur"] }], expression: "['password', {rules: [{ required: true, message: '鑷冲皯6浣嶅瘑鐮侊紝鍖哄垎澶у皬鍐�'}, { validator: this.handlePasswordLevel }], validateTrigger: ['change', 'blur']}]" }], attrs: { size: "large", type: "password", autocomplete: "false", placeholder: "鑷冲皯6浣嶅瘑鐮侊紝鍖哄垎澶у皬鍐�" }, on: { click: e.handlePasswordInputClick } })], 1)], 2), a("a-form-item", [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["password2", { rules: [{ required: !0, message: "鑷冲皯6浣嶅瘑鐮侊紝鍖哄垎澶у皬鍐�" }, { validator: this.handlePasswordCheck }], validateTrigger: ["change", "blur"] }], expression: "['password2', {rules: [{ required: true, message: '鑷冲皯6浣嶅瘑鐮侊紝鍖哄垎澶у皬鍐�' }, { validator: this.handlePasswordCheck }], validateTrigger: ['change', 'blur']}]" }], attrs: { size: "large", type: "password", autocomplete: "false", placeholder: "纭瀵嗙爜" } })], 1), a("a-form-item", [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["mobile", { rules: [{ required: !0, message: "璇疯緭鍏ユ纭殑鎵嬫満鍙�", pattern: /^1[3456789]\d{9}$/ }, { validator: this.handlePhoneCheck }], validateTrigger: ["change", "blur"] }], expression: "['mobile', {rules: [{ required: true, message: '璇疯緭鍏ユ纭殑鎵嬫満鍙�', pattern: /^1[3456789]\\d{9}$/ }, { validator: this.handlePhoneCheck } ], validateTrigger: ['change', 'blur'] }]" }], attrs: { size: "large", placeholder: "11 浣嶆墜鏈哄彿" } }, [a("a-select", { attrs: { slot: "addonBefore", size: "large", defaultValue: "+86" }, slot: "addonBefore" }, [a("a-select-option", { attrs: { value: "+86" } }, [e._v("+86")]), a("a-select-option", { attrs: { value: "+87" } }, [e._v("+87")])], 1)], 1)], 1), a("a-row", { attrs: { gutter: 16 } }, [a("a-col", { staticClass: "gutter-row", attrs: { span: 16 } }, [a("a-form-item", [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["captcha", { rules: [{ required: !0, message: "璇疯緭鍏ラ獙璇佺爜" }], validateTrigger: "blur" }], expression: "['captcha', {rules: [{ required: true, message: '璇疯緭鍏ラ獙璇佺爜' }], validateTrigger: 'blur'}]" }], attrs: { size: "large", type: "text", placeholder: "楠岃瘉鐮�" } }, [a("a-icon", { style: { color: "rgba(0,0,0,.25)" }, attrs: { slot: "prefix", type: "mail" }, slot: "prefix" })], 1)], 1)], 1), a("a-col", { staticClass: "gutter-row", attrs: { span: 8 } }, [a("a-button", { staticClass: "getCaptcha", attrs: { size: "large", disabled: e.state.smsSendBtn }, domProps: { textContent: e._s(e.state.smsSendBtn ? e.state.time + " s" : "鑾峰彇楠岃瘉鐮�") }, on: { click: function (t) { return t.stopPropagation(), t.preventDefault(), e.getCaptcha.apply(null, arguments) } } })], 1)], 1), a("a-form-item", [a("a-button", { staticClass: "register-button", attrs: { size: "large", type: "primary", htmlType: "submit", loading: e.registerBtn, disabled: e.registerBtn }, on: { click: function (t) { return t.stopPropagation(), t.preventDefault(), e.handleSubmit.apply(null, arguments) } } }, [e._v("娉ㄥ唽 ")]), a("router-link", { staticClass: "login", attrs: { to: { name: "login" } } }, [e._v("浣跨敤宸叉湁璐︽埛鐧诲綍")])], 1)], 1)], 1) }, s = [function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("h3", [a("span", [e._v("娉ㄥ唽")])]) }], o = a("5530"), n = (a("498a"), a("ac0d")), i = a("6135"), l = { 0: "浣�", 1: "浣�", 2: "涓�", 3: "寮�" }, c = { 0: "error", 1: "error", 2: "warning", 3: "success" }, d = { 0: "#ff0000", 1: "#ff0000", 2: "#ff7e05", 3: "#52c41a" }, u = { name: "Register", components: {}, mixins: [n["c"]], data: function () { return { form: this.$form.createForm(this), state: { time: 60, smsSendBtn: !1, passwordLevel: 0, passwordLevelChecked: !1, percent: 10, progressColor: "#FF0000" }, registerBtn: !1 } }, computed: { passwordLevelClass: function () { return c[this.state.passwordLevel] }, passwordLevelName: function () { return l[this.state.passwordLevel] }, passwordLevelColor: function () { return d[this.state.passwordLevel] } }, methods: { handlePasswordLevel: function (e, t, a) { var r = 0; /[0-9]/.test(t) && r++, /[a-zA-Z]/.test(t) && r++, /[^0-9a-zA-Z_]/.test(t) && r++, this.state.passwordLevel = r, this.state.percent = 30 * r, r >= 2 ? (r >= 3 && (this.state.percent = 100), a()) : (0 === r && (this.state.percent = 10), a(new Error("瀵嗙爜寮哄害涓嶅"))) }, handlePasswordCheck: function (e, t, a) { var r = this.form.getFieldValue("password"); void 0 === t && a(new Error("璇疯緭鍏ュ瘑鐮�")), t && r && t.trim() !== r.trim() && a(new Error("涓ゆ瀵嗙爜涓嶄竴鑷�")), a() }, handlePhoneCheck: function (e, t, a) { a() }, handlePasswordInputClick: function () { this.isMobile() ? this.state.passwordLevelChecked = !1 : this.state.passwordLevelChecked = !0 }, handleSubmit: function () { var e = this.form.validateFields, t = this.state, a = this.$router; e({ force: !0 }, (function (e, r) { e || (t.passwordLevelChecked = !1, a.push({ name: "registerResult", params: Object(o["a"])({}, r) })) })) }, getCaptcha: function (e) { var t = this; e.preventDefault(); var a = this.form.validateFields, r = this.state, s = this.$message, o = this.$notification; a(["mobile"], { force: !0 }, (function (e, a) { if (!e) { r.smsSendBtn = !0; var n = window.setInterval((function () { r.time-- <= 0 && (r.time = 60, r.smsSendBtn = !1, window.clearInterval(n)) }), 1e3), l = s.loading("楠岃瘉鐮佸彂閫佷腑..", 0); Object(i["c"])({ mobile: a.mobile }).then((function (e) { setTimeout(l, 2500), o["success"]({ message: "鎻愮ず", description: "楠岃瘉鐮佽幏鍙栨垚鍔燂紝鎮ㄧ殑楠岃瘉鐮佷负锛�" + e.result.captcha, duration: 8 }) })).catch((function (e) { setTimeout(l, 1), clearInterval(n), r.time = 60, r.smsSendBtn = !1, t.requestFailed(e) })) } })) }, requestFailed: function (e) { this.$notification["error"]({ message: "閿欒", description: ((e.response || {}).data || {}).message || "璇锋眰鍑虹幇閿欒锛岃绋嶅悗鍐嶈瘯", duration: 4 }), this.registerBtn = !1 } }, watch: { "state.passwordLevel": function (e) { } } }, m = u, p = (a("620b"), a("b92f"), a("2877")), f = Object(p["a"])(m, r, s, !1, null, "0a77d414", null); t["default"] = f.exports }, "4b73": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "right4" }, [a("div", { staticClass: "chart-name" }, [e._v(" 鏈嶅姟鍣ㄧ姸鎬� "), a("dv-decoration-3", { staticStyle: { width: "200px", height: "20px" } })], 1), a("dv-charts", { attrs: { option: e.option } })], 1) }, s = [], o = { name: "Right4", data: function () { return { option: { xAxis: { data: ["鍛ㄤ竴", "鍛ㄤ簩", "鍛ㄤ笁", "鍛ㄥ洓", "鍛ㄤ簲", "鍛ㄥ叚", "鍛ㄦ棩"], axisLine: { style: { stroke: "#F6F8FA" } }, axisLabel: { style: { fill: "#F6F8FA" } }, axisTick: { show: !1 } }, yAxis: { data: "value", splitLine: { show: !1 }, axisLine: { style: { stroke: "#F6F8FA" } }, axisLabel: { style: { fill: "#F6F8FA" } }, axisTick: { show: !1 } }, series: [{ data: [1200, 2230, 1900, 2100, 3500, 4200, 3985], type: "line", lineArea: { show: !0, gradient: ["rgba(55, 162, 218, 0.6)", "rgba(55, 162, 218, 0)"] }, label: { show: !0, formatter: "{value}" }, smooth: !0, lineStyle: { lineDash: [5, 5] }, linePoint: { radius: 0 } }] } } } }, n = o, i = (a("e99d"), a("2877")), l = Object(i["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, "4cab": function (e, t, a) { "use strict"; a.d(t, "e", (function () { return s })), a.d(t, "d", (function () { return o })), a.d(t, "a", (function () { return n })), a.d(t, "c", (function () { return i })), a.d(t, "b", (function () { return l })); var r = a("b775"); function s(e) { return Object(r["b"])({ url: "/sysPos/page", method: "get", params: e }) } function o(e) { return Object(r["b"])({ url: "/sysPos/list", method: "get", params: e }) } function n(e) { return Object(r["b"])({ url: "/sysPos/add", method: "post", data: e }) } function i(e) { return Object(r["b"])({ url: "/sysPos/edit", method: "post", data: e }) } function l(e) { return Object(r["b"])({ url: "/sysPos/delete", method: "post", data: e }) } }, "4e4a": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鎺堟潈瑙掕壊", width: 800, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-card", { attrs: { bordered: !1 } }, [a("div", [a("a-table", { attrs: { size: "middle", "row-selection": { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange }, columns: e.columns, dataSource: e.loadData, pagination: !1, loading: e.loading, rowKey: function (e) { return e.id } } })], 1)])], 1) }, s = [], o = (a("d3b7"), a("a240")), n = a("0901"), i = [{ title: "瑙掕壊鍚嶇О", dataIndex: "name" }, { title: "鍞竴缂栫爜", dataIndex: "code" }], l = { name: "UserRoleIndex", data: function () { return { columns: i, loadData: [], selectedRowKeys: [], loading: !0, visible: !1, confirmLoading: !1, recordEntity: [] } }, computed: { hasSelected: function () { return this.selectedRowKeys.length > 0 } }, methods: { userRole: function (e) { var t = this; this.recordEntity = e, this.visible = !0, this.sysUserOwnRole(), Object(o["a"])().then((function (e) { t.loadData = e.data.rows })) }, sysUserOwnRole: function () { var e = this; this.loading = !0, Object(n["l"])({ id: this.recordEntity.id }).then((function (t) { e.selectedRowKeys = t.data, e.loading = !1 })) }, onSelectChange: function (e) { this.selectedRowKeys = e }, handleSubmit: function () { var e = this; this.confirmLoading = !1, this.visible = !1, Object(n["i"])({ id: this.recordEntity.id, grantRoleIdList: this.selectedRowKeys }).then((function (t) { t.success ? (e.$message.success("鎺堟潈鎴愬姛"), e.confirmLoading = !1, e.$emit("ok", e.recordEntity), e.handleCancel()) : e.$message.error("鎺堟潈澶辫触锛�" + JSON.stringify(t.message)) })).finally((function (t) { e.confirmLoading = !1 })) }, handleCancel: function () { this.recordEntity = [], this.selectedRowKeys = [], this.visible = !1 } } }, c = l, d = a("2877"), u = Object(d["a"])(c, r, s, !1, null, null, null); t["default"] = u.exports }, "4ee8": function (e, t, a) { "use strict"; a.d(t, "a", (function () { return r })), a.d(t, "b", (function () { return s })); var r = function () { var e = this, t = e.$createElement, r = e._self._c || t; return r("a-card", { staticStyle: { display: "flex", "justify-content": "center", height: "100%" }, attrs: { bordered: !1 } }, [r("div", { staticStyle: { margin: "100px auto" } }, [r("img", { staticClass: "logo", attrs: { src: a("5d18"), alt: "logo" } })])]) }, s = [] }, "4f12": function (e, t, a) { }, "4f46": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏂板鏈烘瀯", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鏈烘瀯绫诲瀷", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["orgtype", { rules: [{ required: !0, message: "璇烽�夋嫨鏈烘瀯绫诲瀷锛�" }] }], expression: "['orgtype',{rules: [{ required: true, message: '璇烽�夋嫨鏈烘瀯绫诲瀷锛�' }]}]" }] }, e._l(e.typeEnumDataDropDown, (function (t, r) { return a("a-radio", { key: r, attrs: { value: parseInt(t.code) } }, [e._v(" " + e._s(t.value))]) })), 1)], 1), a("a-form-item", { attrs: { label: "鏈烘瀯鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ユ満鏋勫悕绉帮紒" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ユ満鏋勫悕绉帮紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ユ満鏋勫悕绉�" } })], 1), a("a-form-item", { attrs: { label: "鍞竴缂栫爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, message: "璇疯緭鍏ュ敮涓�缂栫爜锛�" }] }], expression: "['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" } })], 1), a("a-form-item", { attrs: { label: "涓婄骇鏈烘瀯", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-tree-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["pid", { rules: [{ required: !0, message: "璇烽�夋嫨涓婄骇鏈烘瀯锛�" }] }], expression: "['pid', {rules: [{ required: true, message: '璇烽�夋嫨涓婄骇鏈烘瀯锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { dropdownStyle: { maxHeight: "300px", overflow: "auto" }, treeData: e.orgTree, placeholder: "璇烽�夋嫨涓婄骇鏈烘瀯", treeDefaultExpandAll: "" }, scopedSlots: e._u([{ key: "title", fn: function (t) { var r = t.id; return a("span", {}, [e._v(e._s(r) + " ")]) } }]) })], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎺掑簭" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sort", { initialValue: 100 }], expression: "['sort', { initialValue: 100 }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ユ帓搴�", min: 1, max: 1e3 } })], 1), a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { rows: 4, placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1) }, s = [], o = (a("d3b7"), a("25fa")), n = a("126f"), i = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, typeEnumDataDropDown: [], orgTree: [], visible: !1, confirmLoading: !1, formLoading: !0, form: this.$form.createForm(this) } }, created: function () { this.sysDictTypeDropDown() }, methods: { add: function () { this.visible = !0, this.getOrgTree() }, sysDictTypeDropDown: function (e) { var t = this; Object(n["d"])({ code: "org_type" }).then((function (e) { t.typeEnumDataDropDown = e.data })) }, getOrgTree: function () { var e = this; Object(o["c"])().then((function (t) { e.formLoading = !1, t.success ? e.orgTree = [{ id: "-1", parentId: "0", title: "椤剁骇", value: "0", pid: "0", children: t.data }] : e.orgTree = [] })) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(o["d"])(a).then((function (t) { t.success ? (e.$message.success("鏂板鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a), e.form.resetFields()) : e.$message.error("鏂板澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, l = i, c = a("2877"), d = Object(c["a"])(l, r, s, !1, null, null, null); t["default"] = d.exports }, "4fb0": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e.hasPerm("sysApp:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "搴旂敤鍚嶇О" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ュ簲鐢ㄥ悕绉�" }, model: { value: e.queryParam.name, callback: function (t) { e.$set(e.queryParam, "name", t) }, expression: "queryParam.name" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍞竴缂栫爜" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" }, model: { value: e.queryParam.code, callback: function (t) { e.$set(e.queryParam, "code", t) }, expression: "queryParam.code" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("span", { staticClass: "table-page-search-submitButtons" }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")])], 1)])], 1)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("a-spin", { attrs: { spinning: e.loading } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onChange } }, scopedSlots: e._u([{ key: "active", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.activeFilter(t)) + " ")]) } }, { key: "status", fn: function (t, r) { return a("span", {}, [a("a-popconfirm", { attrs: { placement: "top", title: 0 === t ? "纭畾鍋滅敤璇ュ簲鐢紵" : "纭畾鍚敤璇ュ簲鐢紵" }, on: { confirm: function () { return e.editAppStatus(t, r) } } }, [a("a", [e._v(e._s(e.statusFilter(t)))])])], 1) } }, { key: "action", fn: function (t, r) { return a("span", {}, [e.hasPerm("sysApp:edit") ? a("a", { on: { click: function (t) { return e.$refs.editForm.edit(r) } } }, [e._v("缂栬緫")]) : e._e(), e.hasPerm("sysApp:edit") & e.hasPerm("sysApp:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysApp:delete") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.sysAppDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])]) : e._e(), e.hasPerm("sysApp:setAsDefault") & e.hasPerm("sysApp:delete") & "N" == r.active || e.hasPerm("sysApp:edit") & e.hasPerm("sysApp:setAsDefault") & "N" == r.active ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysApp:setAsDefault") & "N" == r.active ? a("a-popconfirm", { attrs: { placement: "topRight", title: "璁剧疆涓洪粯璁ゅ簲鐢紵" }, on: { confirm: function () { return e.sysDefault(r) } } }, [a("a", [e._v("璁句负榛樿")])]) : e._e()], 1) } }]) }, [e.hasPerm("sysApp:add") ? a("template", { slot: "operator" }, [e.hasPerm("sysApp:add") ? a("a-button", { attrs: { icon: "plus", type: "primary" }, on: { click: function (t) { return e.$refs.addForm.add() } } }, [e._v("鏂板搴旂敤")]) : e._e()], 1) : e._e()], 2), a("add-form", { ref: "addForm", on: { ok: e.handleOk } }), a("edit-form", { ref: "editForm", on: { ok: e.handleOk } })], 1)], 1)], 1) }, s = [], o = (a("4de4"), a("2af9")), n = a("2316"), i = a("126f"), l = a("6b52"), c = a("316e"), d = { components: { XCard: o["w"], STable: o["r"], editForm: l["default"], addForm: c["default"] }, data: function () { var e = this; return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }, queryParam: {}, columns: [{ title: "搴旂敤鍚嶇О", dataIndex: "name" }, { title: "鍞竴缂栫爜", dataIndex: "code" }, { title: "鏄惁榛樿", dataIndex: "active", scopedSlots: { customRender: "active" } }, { title: "鐘舵��", dataIndex: "status", scopedSlots: { customRender: "status" } }, { title: "鎺掑簭", dataIndex: "sort" }], loadData: function (t) { return Object(n["b"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, loading: !1, selectedRowKeys: [], selectedRows: [], statusDict: [], activeDict: [] } }, created: function () { this.sysDictTypeDropDown(), (this.hasPerm("sysApp:edit") || this.hasPerm("sysApp:delete") || this.hasPerm("sysApp:setAsDefault")) && this.columns.push({ title: "鎿嶄綔", width: "200px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, methods: { activeFilter: function (e) { var t = this.activeDict.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, statusFilter: function (e) { var t = this.statusDict.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, sysDictTypeDropDown: function () { var e = this; Object(i["d"])({ code: "yes_or_no" }).then((function (t) { e.activeDict = t.data })), Object(i["d"])({ code: "common_status" }).then((function (t) { e.statusDict = t.data })) }, handleOk: function () { this.$refs.table.refresh() }, sysDefault: function (e) { var t = this; this.loading = !0, Object(n["g"])({ id: e.id }).then((function (e) { t.loading = !1, e.success ? (t.$message.success("璁剧疆鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("璁剧疆澶辫触锛�" + e.message) })) }, sysAppDelete: function (e) { var t = this; this.loading = !0, Object(n["e"])(e).then((function (e) { t.loading = !1, e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("鍒犻櫎澶辫触锛�" + e.message) })).catch((function (e) { t.$message.error("鍒犻櫎閿欒锛�" + e.message) })) }, editAppStatus: function (e, t) { var a = this; 0 == e ? this.status = 1 : 1 == e && (this.status = 0), Object(n["d"])({ id: t.id, status: this.status }).then((function (e) { e.success ? (a.$message.success("鎿嶄綔鎴愬姛"), a.$refs.table.refresh()) : a.$message.error("鎿嶄綔澶辫触锛�" + e.message) })) }, onChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, u = d, m = (a("7c89"), a("2877")), p = Object(m["a"])(u, r, s, !1, null, "4944d898", null); t["default"] = p.exports }, "50e7": function (e, t, a) { }, "51fb": function (e, t, a) { "use strict"; a("90b2") }, 5202: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { attrs: { id: "right1" } }, [a("div", { staticClass: "rose-chart-title" }, [e._v(" 骞撮緞鍒嗗竷 "), a("dv-decoration-3", { staticStyle: { width: "200px", height: "20px" } })], 1), a("dv-charts", { attrs: { option: e.option } })], 1) }, s = [], o = { name: "Right1", data: function () { return { option: {} } }, methods: { createData: function () { var e = this.randomExtend; this.option = { series: [{ type: "pie", radius: "80%", roseSort: !1, data: [{ name: "60-69宀�", value: e(40, 70) }, { name: "70-79宀�", value: e(20, 30) }, { name: "80-89宀�", value: e(10, 50) }, { name: "90-99宀�", value: e(5, 20) }, { name: "鍏朵粬", value: e(40, 50) }], insideLabel: { show: !0 }, outsideLabel: { formatter: "{name} {percent}%", labelLineEndLength: 10, style: { fill: "#fff" }, labelLineStyle: { stroke: "#fff" } } }], color: ["#00baff", "#fa3600", "#3de7c9", "#ff724c", "#ffc530", "#469f4b", "#a02200", "#5d1400", "#b72700"] } }, randomExtend: function (e, t) { return 1 === arguments.length ? parseInt(Math.random() * e + 1, 10) : parseInt(Math.random() * (t - e + 1) + e, 10) } }, mounted: function () { var e = this.createData; e(), setInterval(e, 3e4) } }, n = o, i = (a("6287"), a("2877")), l = Object(i["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, "525a": function (e, t, a) { e.exports = a.p + "img/map.ae82c867.png" }, "55c6": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { attrs: { id: "middle1" } }, e._l(e.digitalFlopData, (function (t) { return a("div", { key: t.title, staticClass: "digital-flop-item" }, [a("div", { staticClass: "digital-flop" }, [a("dv-digital-flop", { attrs: { config: t.number } })], 1), a("div", { staticClass: "digital-flop-title" }, [e._v(e._s(t.title))])]) })), 0) }, s = [], o = { name: "Middle1", data: function () { return { digitalFlopData: [] } }, methods: { createData: function () { this.digitalFlopData = [{ title: "鏈烘瀯鎬绘暟", number: { number: [150], content: "{nt}", textAlign: "center", style: { fill: "#40faee", fontWeight: "bold" } }, unit: "涓�" }, { title: "搴婁綅鎬绘暟", number: { number: [4e4], content: "{nt}", textAlign: "center", style: { fill: "#40faee", fontWeight: "bold" } }, unit: "涓�" }, { title: "鑰佷汉鎬绘暟", number: { number: [98760], content: "{nt}", textAlign: "center", style: { fill: "#40faee", fontWeight: "bold" } }, unit: "涓�" }, { title: "鍛樺伐鎬绘暟", number: { number: [1200], content: "{nt}", textAlign: "center", style: { fill: "#40faee", fontWeight: "bold" } }, unit: "涓�" }] } }, mounted: function () { var e = this.createData; e() } }, n = o, i = (a("281b"), a("2877")), l = Object(i["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, "56d1": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("result", { attrs: { isSuccess: !0, content: !1, title: e.email, description: e.description } }, [a("template", { slot: "action" }, [a("a-button", { attrs: { size: "large", type: "primary" } }, [e._v("鏌ョ湅閭")]), a("a-button", { staticStyle: { "margin-left": "8px" }, attrs: { size: "large" }, on: { click: e.goHomeHandle } }, [e._v("杩斿洖棣栭〉")])], 1)], 2) }, s = [], o = a("2af9"), n = { name: "RegisterResult", components: { Result: o["q"] }, data: function () { return { description: "婵�娲婚偖浠跺凡鍙戦�佸埌浣犵殑閭涓紝閭欢鏈夋晥鏈熶负24灏忔椂銆傝鍙婃椂鐧诲綍閭锛岀偣鍑婚偖浠朵腑鐨勯摼鎺ユ縺娲诲笎鎴枫��", form: {} } }, computed: { email: function () { var e = this.form && this.form.email || "xxx", t = "浣犵殑璐︽埛锛�".concat(e, " 娉ㄥ唽鎴愬姛"); return t } }, created: function () { this.form = this.$route.params }, methods: { goHomeHandle: function () { this.$router.push({ name: "login" }) } } }, i = n, l = a("2877"), c = Object(l["a"])(i, r, s, !1, null, "558ffaf9", null); t["default"] = c.exports }, "57ad": function (e, t, a) { "use strict"; a("9e4f") }, 5818: function (e, t, a) { "use strict"; a("d751") }, "58cb": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "缂栬緫閫氱煡鍏憡", width: 1e3, footer: null, visible: e.visible }, on: { cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { directives: [{ name: "show", rawName: "v-show", value: !1, expression: "false" }] }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1), a("a-form-item", { attrs: { label: "鏍囬", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["title", { rules: [{ required: !0, message: "璇疯緭鍏ユ爣棰橈紒" }] }], expression: "['title', {rules: [{required: true, message: '璇疯緭鍏ユ爣棰橈紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ユ爣棰�" } })], 1), a("a-form-item", { attrs: { label: "绫诲瀷", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["type", { rules: [{ required: !0, message: "璇烽�夋嫨绫诲瀷锛�" }] }], expression: "['type',{rules: [{ required: true, message: '璇烽�夋嫨绫诲瀷锛�' }]}]" }] }, e._l(e.typeDictTypeDropDown, (function (t, r) { return a("a-radio-button", { key: r, attrs: { value: t.code } }, [e._v(" " + e._s(t.value))]) })), 1)], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鍐呭" } }, [a("antd-editor", { attrs: { uploadConfig: e.editorUploadConfig }, on: { onchange: e.changeEditor, oninit: e.getEditor }, model: { value: e.editorContent, callback: function (t) { e.editorContent = t }, expression: "editorContent" } })], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "閫氱煡鍒扮殑浜�" } }, [a("a-transfer", { attrs: { "data-source": e.mockData, "show-search": "", "list-style": { width: "40%", height: "300px" }, "filter-option": e.filterOption, "target-keys": e.targetKeys, render: function (e) { return e.title } }, on: { change: e.handleChange } })], 1), a("a-divider"), a("a-form-item", { staticClass: "subForm-item" }, [a("a-button", { staticClass: "subButton", attrs: { type: "primary" }, on: { click: function (t) { return e.handleSubmit(1) } } }, [e._v("鍙戝竷")]), a("a-button", { staticClass: "subButton", attrs: { type: "danger" }, on: { click: function (t) { return e.handleSubmit(0) } } }, [e._v("瀛樹负鑽夌")]), a("a-button", { staticClass: "subButton", on: { click: e.handleCancel } }, [e._v("鍙栨秷")])], 1)], 1)], 1)], 1) }, s = [], o = (a("d3b7"), a("25f0"), a("159b"), a("3ca3"), a("ddb0"), a("2b3d"), a("b0c0"), a("a4d3"), a("e01a"), a("f0c4")), n = a("126f"), i = a("6597"), l = a("2af9"), c = a("0901"), d = { name: "AddForm", components: { AntdEditor: l["a"] }, data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 3 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 18 } }, visible: !1, form: this.$form.createForm(this), typeDictTypeDropDown: [], editorContent: "", editorContentText: "", editorUploadConfig: { method: "http", uploadImgServer: "/sysFileInfo/upload", callback: this.editorUploadImage }, mockData: [], targetKeys: [], noticeDetail: [], formLoading: !0 } }, methods: { edit: function (e) { var t = this; this.visible = !0, this.sysNoticeDetail(e.id), this.sysDictTypeDropDown(), setTimeout((function () { t.form.setFieldsValue({ id: e.id, title: e.title, type: e.type.toString() }), t.editor.txt.html(e.content), t.editorContent = e.content }), 100) }, sysDictTypeDropDown: function () { var e = this; Object(n["d"])({ code: "notice_type" }).then((function (t) { e.typeDictTypeDropDown = t.data })) }, editorUploadImage: function (e, t) { var a = this, r = new FormData; e.forEach((function (e) { r.append("file", e) })), Object(i["e"])(r).then((function (e) { e.success ? Object(i["d"])({ id: e.data }).then((function (e) { t(window.URL.createObjectURL(new Blob([e]))) })).catch((function (e) { a.$message.error("涓婁紶棰勮閿欒锛�" + e.message) })) : a.$message.error("缂栬緫鍣ㄤ笂浼犲浘鐗囧け璐ワ細" + e.message) })) }, getEditor: function (e) { this.editor = e }, changeEditor: function (e, t) { this.editorContent = e, this.editorContentText = t.text() }, sysNoticeDetail: function (e) { var t = this; Object(o["d"])({ id: e }).then((function (e) { t.noticeDetail = e.data, t.getMock(t.noticeDetail) })) }, getMock: function (e) { var t = this, a = [], r = []; Object(c["n"])().then((function (s) { t.formLoading = !1; for (var o = 0; o < s.data.length; o++) { for (var n = { key: s.data[o].id.toString(), title: s.data[o].name, description: "description of ".concat(s.data[o].name) }, i = 0; i < e.noticeUserIdList.length; i++)n.key === e.noticeUserIdList[i] && a.push(e.noticeUserIdList[i]); r.push(n) } })), this.mockData = r, this.targetKeys = a }, filterOption: function (e, t) { return t.description.indexOf(e) > -1 }, handleChange: function (e, t, a) { this.targetKeys = e }, handleSubmit: function (e) { var t = this, a = this.form.validateFields; "" != this.editorContent ? this.targetKeys.length < 1 ? this.$message.error("璇烽�夋嫨閫氱煡鍒扮殑浜�") : a((function (a, r) { a || (t.formLoading = !0, r.content = t.editorContent, r.status = e, r.noticeUserIdList = t.targetKeys, Object(o["e"])(r).then((function (e) { e.success ? (t.$message.success("缂栬緫鎴愬姛"), t.visible = !1, t.$emit("ok", r), t.handleCancel()) : t.$message.error("缂栬緫澶辫触锛�" + e.message) })).finally((function (e) { t.formLoading = !1 }))) })) : this.$message.error("璇峰~鍐欏唴瀹�") }, handleCancel: function () { this.editor.txt.clear(), this.targetKeys = [], this.editorContent = "", this.form.resetFields(), this.visible = !1, this.formLoading = !0 } } }, u = d, m = (a("1715"), a("2877")), p = Object(m["a"])(u, r, s, !1, null, null, null); t["default"] = p.exports }, "5a6f": function (e, t, a) { "use strict"; a("90d5") }, "5d18": function (e, t, a) { e.exports = a.p + "img/welcome.164ddad4.png" }, "5e4e": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "淇敼澶村儚", visible: e.visible, maskClosable: !1, confirmLoading: e.confirmLoading, width: 800, footer: null }, on: { cancel: e.cancelHandel } }, [a("a-row", [a("a-col", { style: { height: "350px" }, attrs: { xs: 24, md: 12 } }, [a("vue-cropper", { ref: "cropper", attrs: { img: e.options.img, info: !0, autoCrop: e.options.autoCrop, autoCropWidth: e.options.autoCropWidth, autoCropHeight: e.options.autoCropHeight, fixedBox: e.options.fixedBox }, on: { realTime: e.realTime } })], 1), a("a-col", { style: { height: "350px" }, attrs: { xs: 24, md: 12 } }, [a("div", { staticClass: "avatar-upload-preview" }, [a("img", { style: e.previews.img, attrs: { src: e.previews.url } })])])], 1), a("br"), a("a-row", [a("a-col", { attrs: { lg: 2, md: 2 } }, [a("a-upload", { attrs: { name: "file", beforeUpload: e.beforeUpload, showUploadList: !1 } }, [a("a-button", { attrs: { icon: "upload" } }, [e._v("閫夋嫨鍥剧墖")])], 1)], 1), a("a-col", { attrs: { lg: { span: 1, offset: 2 }, md: 2 } }, [a("a-button", { attrs: { icon: "plus" }, on: { click: function (t) { return e.changeScale(1) } } })], 1), a("a-col", { attrs: { lg: { span: 1, offset: 1 }, md: 2 } }, [a("a-button", { attrs: { icon: "minus" }, on: { click: function (t) { return e.changeScale(-1) } } })], 1), a("a-col", { attrs: { lg: { span: 1, offset: 1 }, md: 2 } }, [a("a-button", { attrs: { icon: "undo" }, on: { click: e.rotateLeft } })], 1), a("a-col", { attrs: { lg: { span: 1, offset: 1 }, md: 2 } }, [a("a-button", { attrs: { icon: "redo" }, on: { click: e.rotateRight } })], 1), a("a-col", { attrs: { lg: { span: 2, offset: 6 }, md: 2 } }, [a("a-button", { attrs: { type: "primary", loading: e.uploading }, on: { click: function (t) { return e.finish("blob") } } }, [e._v("淇濆瓨")])], 1)], 1)], 1) }, s = [], o = (a("b0c0"), a("6597")), n = a("0901"), i = { data: function () { return { visible: !1, id: null, confirmLoading: !1, fileList: [], uploading: !1, options: { img: "", autoCrop: !0, autoCropWidth: 200, autoCropHeight: 200, fixedBox: !0 }, previews: {} } }, methods: { edit: function (e) { this.visible = !0, this.id = e }, close: function () { this.id = null, this.visible = !1 }, cancelHandel: function () { this.close() }, changeScale: function (e) { e = e || 1, this.$refs.cropper.changeScale(e) }, rotateLeft: function () { this.$refs.cropper.rotateLeft() }, rotateRight: function () { this.$refs.cropper.rotateRight() }, beforeUpload: function (e) { var t = this; this.fileList = e; var a = new FileReader; return a.readAsDataURL(e), a.onload = function () { t.options.img = a.result }, !1 }, finish: function (e) { var t = this; "blob" === e ? (this.uploading = !0, this.$refs.cropper.getCropBlob((function (e) { var a = new window.File([e], t.fileList.name, { type: t.fileList.type }), r = new FormData; r.append("file", a), Object(o["f"])(r).then((function (e) { e.success ? (t.updateAvatar(e.data), t.$emit("ok", e.data)) : (t.uploading = !1, t.$message.error(e.message)) })) }))) : this.$refs.cropper.getCropData((function (e) { })) }, updateAvatar: function (e) { var t = this, a = { id: this.id, avatar: e }; Object(n["o"])(a).then((function (e) { t.uploading = !1, e.success ? (t.visible = !1, t.$message.success("澶村儚涓婁紶淇敼鎴愬姛")) : t.$message.error(e.message) })) }, realTime: function (e) { this.previews = e } } }, l = i, c = (a("2367"), a("2877")), d = Object(c["a"])(l, r, s, !1, null, "b221788c", null); t["default"] = d.exports }, "5f43": function (e, t, a) { }, "620b": function (e, t, a) { "use strict"; a("dbc3") }, "625d": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { attrs: { id: "top-header" } }, [a("dv-decoration-8", { staticClass: "header-left-decoration" }), a("dv-decoration-5", { staticClass: "header-center-decoration" }), a("dv-decoration-8", { staticClass: "header-right-decoration", attrs: { reverse: !0 } }), a("div", { staticClass: "center-title" }, [e._v("鏅烘収鍏昏�佹湇鍔℃暟鎹腑蹇�")]), a("div", { staticClass: "title-time" }, [e._v(e._s(e.dateFormat(e.date)))])], 1) }, s = [], o = { name: "TopHeader", data: function () { return { date: new Date } }, methods: { dateFormat: function (e) { var t = new Date(e); return t.toLocaleString("zh-Hans-CN", { weekday: "long", hours12: !1, year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit" }) } }, mounted: function () { var e = this; this.timer = setInterval((function () { e.date = new Date }), 1e3) }, beforeDestroy: function () { this.timer && clearInterval(this.timer) } }, n = o, i = (a("57ad"), a("2877")), l = Object(i["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, 6287: function (e, t, a) { "use strict"; a("45e1") }, 6344: function (e, t, a) { e.exports = a.p + "img/bg.110420cf.png" }, "63c9": function (e, t, a) { }, "697a": function (e, t, a) { }, "698a": function (e, t, a) { "use strict"; a("45f0") }, "69c0": function (e, t) { e.exports = "data:image/png;base64,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" }, "6b52": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "搴旂敤缂栬緫", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { staticStyle: { display: "none" }, attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1), a("a-form-item", { staticStyle: { display: "none" }, attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["active"], expression: "['active']" }] })], 1), a("a-form-item", { attrs: { label: "搴旂敤鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ュ簲鐢ㄥ悕绉帮紒" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ュ簲鐢ㄥ悕绉帮紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ簲鐢ㄥ悕绉�" } })], 1), a("a-form-item", { attrs: { label: "鍞竴缂栫爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, message: "璇疯緭鍏ュ敮涓�缂栫爜锛�" }] }], expression: "['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" } })], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎺掑簭" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sort", { initialValue: 100 }], expression: "['sort', { initialValue: 100 }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ユ帓搴�", min: 1, max: 1e3 } })], 1)], 1)], 1)], 1) }, s = [], o = (a("b0c0"), a("4e82"), a("d3b7"), a("2316")), n = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, visibleDef: !1, form: this.$form.createForm(this) } }, methods: { edit: function (e) { var t = this; this.visible = !0, setTimeout((function () { t.form.setFieldsValue({ id: e.id, name: e.name, code: e.code, sort: e.sort, active: e.active }) }), 100) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(o["f"])(a).then((function (t) { t.success ? (e.$message.success("缂栬緫鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a)) : e.$message.error("缂栬緫澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, i = n, l = a("2877"), c = Object(l["a"])(i, r, s, !1, null, null, null); t["default"] = c.exports }, "6bc3": function (e, t, a) { "use strict"; a("3448") }, "70eb": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e.hasPerm("sysRole:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "瑙掕壊鍚�" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ヨ鑹插悕" }, model: { value: e.queryParam.name, callback: function (t) { e.$set(e.queryParam, "name", t) }, expression: "queryParam.name" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍞竴缂栫爜" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" }, model: { value: e.queryParam.code, callback: function (t) { e.$set(e.queryParam, "code", t) }, expression: "queryParam.code" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")])], 1)], 1)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.code }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "roleType", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.typeFilter(t)) + " ")]) } }, { key: "action", fn: function (t, r) { return a("span", {}, [e.hasPerm("sysRole:edit") ? a("a", { on: { click: function (t) { return e.$refs.editForm.edit(r) } } }, [e._v("缂栬緫")]) : e._e(), e.hasPerm("sysRole:edit") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysRole:grantMenu") || e.hasPerm("sysRole:grantData") || e.hasPerm("sysRole:delete") ? a("a-dropdown", [a("a", { staticClass: "ant-dropdown-link" }, [e._v(" 鏇村 "), a("a-icon", { attrs: { type: "down" } })], 1), a("a-menu", { attrs: { slot: "overlay" }, slot: "overlay" }, [e.hasPerm("sysRole:grantMenu") ? a("a-menu-item", [a("a", { on: { click: function (t) { return e.$refs.roleMenuForm.roleMenu(r) } } }, [e._v("鎺堟潈鑿滃崟")])]) : e._e(), e.hasPerm("sysRole:grantData") ? a("a-menu-item", [a("a", { on: { click: function (t) { return e.$refs.roleOrgForm.roleOrg(r) } } }, [e._v("鎺堟潈鏁版嵁")])]) : e._e(), e.hasPerm("sysRole:delete") ? a("a-menu-item", [a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.sysRoleDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])])], 1) : e._e()], 1)], 1) : e._e()], 1) } }]) }, [e.hasPerm("sysRole:add") ? a("template", { slot: "operator" }, [e.hasPerm("sysRole:add") ? a("a-button", { attrs: { icon: "plus", type: "primary" }, on: { click: function (t) { return e.$refs.addForm.add() } } }, [e._v("鏂板瑙掕壊 ")]) : e._e()], 1) : e._e()], 2), a("add-form", { ref: "addForm", on: { ok: e.handleOk } }), a("edit-form", { ref: "editForm", on: { ok: e.handleOk } }), a("role-menu-form", { ref: "roleMenuForm", on: { ok: e.handleOk } }), a("role-org-form", { ref: "roleOrgForm", on: { ok: e.handleOk } })], 1)], 1) }, s = [], o = (a("4de4"), a("2af9")), n = a("a240"), i = a("a49c"), l = a("9888"), c = a("985f"), d = a("e35e"), u = a("126f"), m = { components: { XCard: o["w"], STable: o["r"], addForm: i["default"], editForm: l["default"], roleMenuForm: c["default"], roleOrgForm: d["default"] }, data: function () { var e = this; return { queryParam: {}, columns: [{ title: "瑙掕壊鍚�", dataIndex: "name" }, { title: "瑙掕壊绫诲瀷", dataIndex: "roleType", scopedSlots: { customRender: "roleType" } }, { title: "鍞竴缂栫爜", dataIndex: "code" }, { title: "鎺掑簭", dataIndex: "sort" }], loadData: function (t) { return Object(n["a"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [], typeDictTypeDropDown: [] } }, created: function () { this.sysDictTypeDropDown(), (this.hasPerm("sysRole:edit") || this.hasPerm("sysRole:grantMenu") || this.hasPerm("sysRole:grantData") || this.hasPerm("sysRole:delete")) && this.columns.push({ title: "鎿嶄綔", width: "150px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, methods: { typeFilter: function (e) { var t = this.typeDictTypeDropDown.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, sysDictTypeDropDown: function (e) { var t = this; Object(u["d"])({ code: "role_type" }).then((function (e) { t.typeDictTypeDropDown = e.data })) }, sysRoleDelete: function (e) { var t = this; Object(n["c"])(e).then((function (e) { e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("鍒犻櫎澶辫触锛�" + e.message) })).catch((function (e) { t.$message.error("鍒犻櫎閿欒锛�" + e.message) })) }, handleOk: function () { this.$refs.table.refresh() }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, p = m, f = (a("d6a3"), a("2877")), h = Object(f["a"])(p, r, s, !1, null, null, null); t["default"] = h.exports }, 7203: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [a("a-list", { attrs: { itemLayout: "horizontal", dataSource: e.data }, scopedSlots: e._u([{ key: "renderItem", fn: function (t, r) { return a("a-list-item", { key: r }, [a("a-list-item-meta", [a("a", { attrs: { slot: "title" }, slot: "title" }, [e._v(e._s(t.title))]), a("span", { attrs: { slot: "description" }, slot: "description" }, [a("span", { staticClass: "security-list-description" }, [e._v(e._s(t.description))]), t.value ? a("span", [e._v(" : ")]) : e._e(), a("span", { staticClass: "security-list-value" }, [e._v(e._s(t.value))])])]), t.actions ? [a("a", { attrs: { slot: "actions" }, on: { click: t.actions.callback }, slot: "actions" }, [e._v(e._s(t.actions.title))])] : e._e()], 2) } }]) }), a("upd-pwd", { ref: "updPwd" })], 1) }, s = [], o = a("5530"), n = a("5880"), i = a("a784"), l = { components: { UpdPwd: i["default"] }, data: function () { return { data: [] } }, created: function () { var e = this; if (this.hasPerm("sysUser:updatePwd")) { var t = { title: "璐︽埛瀵嗙爜", description: "褰撳墠瀵嗙爜寮哄害", value: "寮�", actions: { title: "淇敼", callback: function () { e.$refs.updPwd.open(e.userInfo.id) } } }; this.data.push(t) } var a = { title: "瀵嗕繚鎵嬫満", description: "宸茬粦瀹氭墜鏈�", value: "138****8293", actions: { title: "淇敼", callback: function () { e.$message.success("This is a message of success") } } }, r = { title: "瀵嗕繚闂", description: "鏈缃瘑淇濋棶棰橈紝瀵嗕繚闂鍙湁鏁堜繚鎶よ处鎴峰畨鍏�", value: "", actions: { title: "璁剧疆", callback: function () { e.$message.error("This is a message of error") } } }, s = { title: "澶囩敤閭", description: "宸茬粦瀹氶偖绠�", value: "ant***sign.com", actions: { title: "淇敼", callback: function () { e.$message.warning("This is message of warning") } } }, o = { title: "MFA 璁惧", description: "鏈粦瀹� MFA 璁惧锛岀粦瀹氬悗锛屽彲浠ヨ繘琛屼簩娆$‘璁�", value: "", actions: { title: "缁戝畾", callback: function () { e.$message.info("This is a normal message") } } }; this.data.push(a), this.data.push(r), this.data.push(s), this.data.push(o) }, computed: Object(o["a"])({}, Object(n["mapGetters"])(["userInfo"])), methods: {} }, c = l, d = a("2877"), u = Object(d["a"])(c, r, s, !1, null, "7fd69434", null); t["default"] = u.exports }, "730d": function (e, t, a) { }, 7389: function (e, t, a) { }, "73d6": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { attrs: { id: "data-view" } }, [a("dv-full-screen-container", [a("top-header"), a("div", { staticClass: "main-container" }, [a("div", { staticClass: "left1", staticStyle: { width: "20%", display: "flex", "flex-direction": "column" } }, [a("dv-border-box-12", [a("left1")], 1), a("dv-border-box-12", [a("left12")], 1)], 1), a("div", { staticClass: "left2", staticStyle: { width: "20%", display: "flex", "flex-direction": "column" } }, [a("dv-border-box-12", [a("left2")], 1), a("dv-border-box-12", [a("left22")], 1), a("dv-border-box-12", [a("left23")], 1)], 1), a("div", { staticClass: "middle", staticStyle: { width: "40%", display: "flex", "flex-direction": "column" } }, [a("dv-border-box-1", { staticStyle: { height: "15%" } }, [a("middle1")], 1), a("dv-border-box-8", { staticStyle: { height: "60%" } }, [a("middle2")], 1), a("dv-border-box-1", { staticStyle: { height: "25%" } }, [a("middle3")], 1)], 1), a("div", { staticClass: "right", staticStyle: { width: "20%", display: "flex", "flex-direction": "column" } }, [a("dv-border-box-12", [a("right1")], 1), a("dv-border-box-12", [a("right2")], 1), a("dv-border-box-12", [a("right3")], 1), a("dv-border-box-12", [a("right4")], 1)], 1)])], 1)], 1) }, s = [], o = a("625d"), n = a("c045"), i = a("a897"), l = a("2564"), c = a("af5d"), d = a("7984"), u = a("5202"), m = a("dfe2"), p = a("dbf4"), f = a("4b73"), h = a("55c6"), b = a("c1bb"), v = a("7e19"), g = { name: "DataView", components: { topHeader: o["default"], left1: n["default"], left12: i["default"], left2: l["default"], left22: c["default"], left23: d["default"], right1: u["default"], right2: m["default"], right3: p["default"], right4: f["default"], middle1: h["default"], middle2: b["default"], middle3: v["default"] }, data: function () { return {} }, methods: {} }, y = g, w = (a("b291"), a("2877")), C = Object(w["a"])(y, r, s, !1, null, null, null); t["default"] = C.exports }, "749f": function (e, t, a) { "use strict"; a("e77e") }, "77e3": function (e, t, a) { }, 7984: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { attrs: { id: "left23" } }, [a("div", { staticClass: "water-level-chart-title" }, [e._v(" 鏈烘瀯璇勪及杩涘害 ")]), a("dv-decoration-9", [e._v("66%")])], 1) }, s = [], o = { name: "Left23", data: function () { return {} } }, n = o, i = (a("9a88"), a("2877")), l = Object(i["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, "79e7": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "閫夋嫨澶栭敭鍏崇郴", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "澶栭敭搴�", "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["databaseName", { rules: [{ required: !0, message: "璇烽�夋嫨鏁版嵁搴擄紒" }] }], expression: "['databaseName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴擄紒' }]}]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨鏁版嵁搴�" } }, e._l(e.databaseNameData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.databaseName }, on: { click: function (a) { return e.databaseNameSele(t) } } }, [e._v(e._s(t.databaseName))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "澶栭敭琛�", "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["tableName", { rules: [{ required: !0, message: "璇烽�夋嫨鏁版嵁搴撹〃锛�" }] }], expression: "['tableName', { rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴撹〃锛�' }] }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨鏁版嵁搴撹〃" } }, e._l(e.tableNameData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.tableName }, on: { click: function (a) { return e.tableNameSele(t) } } }, [e._v(e._s(t.tableName))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鏄剧ず瀛楁", "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["columnName", { rules: [{ required: !0, message: "璇烽�夋嫨鏄剧ず瀛楁锛�" }] }], expression: "['columnName', { rules: [{ required: true, message: '璇烽�夋嫨鏄剧ず瀛楁锛�' }] }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨鏄剧ず瀛楁" } }, e._l(e.cloumnNameData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.columnName } }, [e._v(e._s(t.columnName))]) })), 1)], 1)], 1)], 1)], 1)], 1)], 1) }, s = [], o = (a("7db0"), a("998b")), n = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, databaseNameData: [], tableNameData: [], cloumnNameData: [], row: void 0, form: this.$form.createForm(this) } }, methods: { show: function (e) { var t = this; this.row = e, this.visible = !0, this.codeGenerateDatabaseList(), setTimeout((function () { t.form.setFieldsValue({ databaseName: e.codeGen.databaseName, tableName: e.fkEntityName, columnName: e.fkColumnName }) }), 100) }, codeGenerateDatabaseList: function () { var e = this; Object(o["c"])().then((function (t) { e.databaseNameData = t.data; var a = e.form.getFieldValue("databaseName"); a || (a = e.databaseNameData[0].databaseName, e.form.setFieldsValue({ databaseName: a })), e.codeGenerateInformationList({ dbContextLocatorName: a }) })) }, codeGenerateInformationList: function (e) { var t = this; Object(o["f"])(e).then((function (e) { t.confirmLoading = !0, t.tableNameData = e.data, t.confirmLoading = !1 })) }, codeGenerateColumnList: function (e, t) { var a = this; Object(o["b"])(e, t).then((function (e) { a.confirmLoading = !0, a.cloumnNameData = e.data, a.confirmLoading = !1 })) }, handleSubmit: function () { var e = this, t = this.form.validateFields; t((function (t, a) { t || (e.row.fkEntityName = a.tableName, e.row.fkColumnName = a.columnName, e.row.fkColumnNetType = e.cloumnNameData.find((function (e) { return e.columnName === a.columnName })).netType, e.handleCancel()) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 }, databaseNameSele: function (e) { this.databaseNameValue = e.databaseName, this.form.setFieldsValue({ tableName: "" }), this.codeGenerateInformationList({ dbContextLocatorName: this.databaseNameValue }) }, tableNameSele: function (e) { this.codeGenerateColumnList(e.databaseName, e.tableName) } } }, i = n, l = a("2877"), c = Object(l["a"])(i, r, s, !1, null, null, null); t["default"] = c.exports }, "7a4c": function (e, t, a) { "use strict"; a("a481") }, "7b51": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "缂栬緫杞﹁締淇℃伅", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["carName"], expression: "['carName']" }], attrs: { placeholder: "璇疯緭鍏ュ悕绉�" } })], 1), a("a-form-item", { attrs: { label: "鍙风爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["carNo"], expression: "['carNo']" }], attrs: { placeholder: "璇疯緭鍏ュ彿鐮�" } })], 1), a("a-form-item", { directives: [{ name: "show", rawName: "v-show", value: !1, expression: "false" }] }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1)], 1)], 1)], 1) }, s = [], o = a("53ca"), n = (a("d3b7"), a("918e")), i = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, record: {}, visible: !1, confirmLoading: !1, form: this.$form.createForm(this) } }, methods: { edit: function (e) { var t = this; this.visible = !0, this.record = e, setTimeout((function () { t.form.setFieldsValue({ id: e.id, carName: e.carName, carNo: e.carNo }) }), 100) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { if (t) e.confirmLoading = !1; else { for (var r in a) "object" === Object(o["a"])(a[r]) ? (a[r] = JSON.stringify(a[r]), e.record[r] = a[r]) : e.record[r] = a[r]; Object(n["c"])(e.record).then((function (t) { t.success ? (e.$message.success("缂栬緫鎴愬姛"), e.confirmLoading = !1, e.$emit("ok", e.record), e.handleCancel()) : e.$message.error("缂栬緫澶辫触锛�" + JSON.stringify(t.message)) })).finally((function (t) { e.confirmLoading = !1 })) } })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, l = i, c = a("2877"), d = Object(c["a"])(l, r, s, !1, null, null, null); t["default"] = d.exports }, "7c89": function (e, t, a) { "use strict"; a("5f43") }, "7e19": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "middle3" }, [a("div", { staticClass: "bc-chart-item" }, [a("div", { staticClass: "bcci-header" }, [e._v("XXX鏈烘瀯1")]), a("dv-active-ring-chart", { attrs: { config: e.config1 } })], 1), a("dv-decoration-2", { staticClass: "decoration-1", staticStyle: { width: "5px" }, attrs: { reverse: !0 } }), a("div", { staticClass: "bc-chart-item" }, [a("div", { staticClass: "bcci-header" }, [e._v("XXX鏈烘瀯2")]), a("dv-active-ring-chart", { attrs: { config: e.config2 } })], 1), a("dv-decoration-2", { staticClass: "decoration-2", staticStyle: { width: "5px" }, attrs: { reverse: !0 } }), a("div", { staticClass: "bc-chart-item" }, [a("div", { staticClass: "bcci-header" }, [e._v("XXX鏈烘瀯3")]), a("dv-active-ring-chart", { attrs: { config: e.config3 } })], 1), a("dv-decoration-2", { staticClass: "decoration-3", staticStyle: { width: "5px" }, attrs: { reverse: !0 } }), a("div", { staticClass: "bc-chart-item" }, [a("div", { staticClass: "bcci-header" }, [e._v("XXX鏈烘瀯4")]), a("dv-active-ring-chart", { attrs: { config: e.config4 } })], 1)], 1) }, s = [], o = { name: "Middle3", components: {}, data: function () { return { config1: { data: [{ name: "搴婁綅", value: 356 }, { name: "鍗犲湴闈㈢Н", value: 215 }, { name: "鎶ょ悊浜哄憳", value: 90 }, { name: "鍏朵粬", value: 317 }], color: ["#00baff", "#3de7c9", "#fff", "#ffc530", "#469f4b"], radius: "65%", activeRadius: "70%", showOriginValue: !0, activeTimeGap: 5e3, digitalFlopStyle: { fontSize: 12 } }, config2: { data: [{ name: "搴婁綅", value: 615 }, { name: "鍗犲湴闈㈢Н", value: 322 }, { name: "鎶ょ悊浜哄憳", value: 198 }, { name: "鍏朵粬", value: 80 }], color: ["#00baff", "#3de7c9", "#fff", "#ffc530", "#469f4b"], radius: "65%", activeRadius: "70%", showOriginValue: !0, activeTimeGap: 5e3, digitalFlopStyle: { fontSize: 12 } }, config3: { data: [{ name: "搴婁綅", value: 452 }, { name: "鍗犲湴闈㈢Н", value: 512 }, { name: "鎶ょ悊浜哄憳", value: 333 }, { name: "鍏朵粬", value: 255 }], color: ["#00baff", "#3de7c9", "#fff", "#ffc530", "#469f4b"], radius: "65%", activeRadius: "70%", showOriginValue: !0, activeTimeGap: 5e3, digitalFlopStyle: { fontSize: 12 } }, config4: { data: [{ name: "搴婁綅", value: 156 }, { name: "鍗犲湴闈㈢Н", value: 415 }, { name: "鎶ょ悊浜哄憳", value: 90 }, { name: "鍏朵粬", value: 210 }], color: ["#00baff", "#3de7c9", "#fff", "#ffc530", "#469f4b"], radius: "65%", activeRadius: "70%", showOriginValue: !0, activeTimeGap: 5e3, digitalFlopStyle: { fontSize: 12 } } } } }, n = o, i = (a("698a"), a("2877")), l = Object(i["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, "7ea9": function (e, t, a) { "use strict"; a("32a9") }, "7f86": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏂板鑱屼綅", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鑱屼綅鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ヨ亴浣嶅悕绉帮紒" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ヨ亴浣嶅悕绉帮紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヨ亴浣嶅悕绉�" } })], 1), a("a-form-item", { attrs: { label: "鍞竴缂栫爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, message: "璇疯緭鍏ュ敮涓�缂栫爜锛�" }] }], expression: "['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" } })], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎺掑簭" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sort", { initialValue: 100 }], expression: "['sort', { initialValue: 100 }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ユ帓搴�", min: 1, max: 1e3 } })], 1), a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { rows: 4, placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1) }, s = [], o = (a("d3b7"), a("4cab")), n = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, form: this.$form.createForm(this) } }, methods: { add: function (e) { this.visible = !0 }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(o["a"])(a).then((function (t) { t.success ? (e.$message.success("鏂板鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a), e.form.resetFields()) : e.$message.error("鏂板澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, i = n, l = a("2877"), c = Object(l["a"])(i, r, s, !1, null, null, null); t["default"] = c.exports }, "83b8": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e.hasPerm("sysPos:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鑱屼綅鍚嶇О" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ヨ亴浣嶅悕绉�" }, model: { value: e.queryParam.name, callback: function (t) { e.$set(e.queryParam, "name", t) }, expression: "queryParam.name" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍞竴缂栫爜" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" }, model: { value: e.queryParam.code, callback: function (t) { e.$set(e.queryParam, "code", t) }, expression: "queryParam.code" } })], 1)], 1), a("a-col", { attrs: { md: e.advanced ? 24 : 8, sm: 24 } }, [a("span", { staticClass: "table-page-search-submitButtons", style: e.advanced && { float: "right", overflow: "hidden" } || {} }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")])], 1)])], 1)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.code }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "action", fn: function (t, r) { return a("span", {}, [e.hasPerm("sysPos:edit") ? a("a", { on: { click: function (t) { return e.$refs.editForm.edit(r) } } }, [e._v("缂栬緫")]) : e._e(), e.hasPerm("sysPos:edit") & e.hasPerm("sysPos:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysPos:delete") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.sysPosDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])]) : e._e()], 1) } }]) }, [e.hasPerm("sysPos:add") ? a("template", { slot: "operator" }, [e.hasPerm("sysPos:add") ? a("a-button", { attrs: { icon: "plus", type: "primary" }, on: { click: function (t) { return e.$refs.addForm.add() } } }, [e._v("鏂板鑱屼綅")]) : e._e()], 1) : e._e()], 2), a("add-form", { ref: "addForm", on: { ok: e.handleOk } }), a("edit-form", { ref: "editForm", on: { ok: e.handleOk } })], 1)], 1) }, s = [], o = a("2af9"), n = a("4cab"), i = a("7f86"), l = a("a468"), c = { components: { XCard: o["w"], STable: o["r"], addForm: i["default"], editForm: l["default"] }, data: function () { var e = this; return { advanced: !1, queryParam: {}, columns: [{ title: "鑱屼綅鍚嶇О", dataIndex: "name" }, { title: "鍞竴缂栫爜", dataIndex: "code" }, { title: "鎺掑簭", dataIndex: "sort" }, { title: "澶囨敞", dataIndex: "remark" }], loadData: function (t) { return Object(n["e"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [] } }, created: function () { (this.hasPerm("sysPos:edit") || this.hasPerm("sysPos:delete")) && this.columns.push({ title: "鎿嶄綔", width: "150px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, methods: { sysPosDelete: function (e) { var t = this; Object(n["b"])(e).then((function (e) { e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("鍒犻櫎澶辫触锛�" + e.message) })).catch((function (e) { t.$message.error("鍒犻櫎閿欒锛�" + e.message) })) }, toggleAdvanced: function () { this.advanced = !this.advanced }, handleOk: function () { this.$refs.table.refresh() }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, d = c, u = (a("0a1c"), a("2877")), m = Object(u["a"])(d, r, s, !1, null, null, null); t["default"] = m.exports }, "873d": function (e, t, a) { }, "894d": function (e, t) { }, "8cdb": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e._v(" 404 page ")]) }, s = [], o = { name: "404" }, n = o, i = a("2877"), l = Object(i["a"])(n, r, s, !1, null, "17280393", null); t["default"] = l.exports }, "8f8a": function (e, t, a) { }, "90b2": function (e, t, a) { }, "90d5": function (e, t, a) { }, "918e": function (e, t, a) { "use strict"; a.d(t, "d", (function () { return s })), a.d(t, "a", (function () { return o })), a.d(t, "c", (function () { return n })), a.d(t, "b", (function () { return i })); var r = a("b775"); function s(e) { return Object(r["b"])({ url: "/Car/page", method: "get", params: e }) } function o(e) { return Object(r["b"])({ url: "/Car/add", method: "post", data: e }) } function n(e) { return Object(r["b"])({ url: "/Car/edit", method: "post", data: e }) } function i(e) { return Object(r["b"])({ url: "/Car/delete", method: "post", data: e }) } }, "91f1": function (e, t, a) { "use strict"; a("e09f") }, 9250: function (e, t, a) { "use strict"; a.r(t); var r = a("fd7c"), s = a.n(r); for (var o in r) ["default"].indexOf(o) < 0 && function (e) { a.d(t, e, (function () { return r[e] })) }(o); t["default"] = s.a }, 9431: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [e.hasPerm("sysSms:page") ? a("x-card", [a("div", { staticClass: "table-page-search-wrapper", attrs: { slot: "content" }, slot: "content" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鎵嬫満鍙�" } }, [a("a-input", { attrs: { placeholder: "璇疯緭鍏ユ墜鏈哄彿" }, model: { value: e.queryParam.phoneNumbers, callback: function (t) { e.$set(e.queryParam, "phoneNumbers", t) }, expression: "queryParam.phoneNumbers" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍙戦�佺姸鎬�" } }, [a("a-select", { attrs: { placeholder: "璇烽�夋嫨鍙戦�佺姸鎬�" }, model: { value: e.queryParam.status, callback: function (t) { e.$set(e.queryParam, "status", t) }, expression: "queryParam.status" } }, e._l(e.statusDictTypeDropDown, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1), e.advanced ? [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鏉ユ簮" } }, [a("a-select", { attrs: { placeholder: "璇烽�夋嫨鏉ユ簮" }, model: { value: e.queryParam.source, callback: function (t) { e.$set(e.queryParam, "source", t) }, expression: "queryParam.source" } }, e._l(e.sourceDictTypeDropDown, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1)] : e._e(), a("a-col", { attrs: { md: e.advanced ? 24 : 8, sm: 24 } }, [a("span", { staticClass: "table-page-search-submitButtons", style: e.advanced && { float: "right", overflow: "hidden" } || {} }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")]), a("a", { staticStyle: { "margin-left": "8px" }, on: { click: e.toggleAdvanced } }, [e._v(" " + e._s(e.advanced ? "鏀惰捣" : "灞曞紑") + " "), a("a-icon", { attrs: { type: e.advanced ? "up" : "down" } })], 1)], 1)])], 2)], 1)], 1)]) : e._e(), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "status", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.statusFilter(t)) + " ")]) } }, { key: "source", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.sourceFilter(t)) + " ")]) } }]) })], 1)], 1) }, s = [], o = (a("4de4"), a("2af9")), n = a("b775"); function i(e) { return Object(n["b"])({ url: "/sms/page", method: "get", params: e }) } var l = a("126f"), c = { components: { XCard: o["w"], STable: o["r"] }, data: function () { var e = this; return { advanced: !1, queryParam: {}, columns: [{ title: "鎵嬫満鍙�", dataIndex: "phoneNumbers" }, { title: "鐭俊楠岃瘉鐮�", dataIndex: "validateCode" }, { title: "鐭俊妯℃澘ID", dataIndex: "templateCode" }, { title: "鍙戦�佺姸鎬�", dataIndex: "status", scopedSlots: { customRender: "status" } }, { title: "鏉ユ簮", dataIndex: "source", scopedSlots: { customRender: "source" } }, { title: "澶辨晥鏃堕棿", dataIndex: "invalidTime" }], loadData: function (t) { return i(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [], statusDictTypeDropDown: [], sourceDictTypeDropDown: [] } }, created: function () { this.sysDictTypeDropDown() }, methods: { sourceFilter: function (e) { var t = this.sourceDictTypeDropDown.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, statusFilter: function (e) { var t = this.statusDictTypeDropDown.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, sysDictTypeDropDown: function () { var e = this; Object(l["d"])({ code: "send_type" }).then((function (t) { e.statusDictTypeDropDown = t.data })), Object(l["d"])({ code: "sms_send_source" }).then((function (t) { e.sourceDictTypeDropDown = t.data })) }, toggleAdvanced: function () { this.advanced = !this.advanced }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, d = c, u = (a("fb72"), a("2877")), m = Object(u["a"])(d, r, s, !1, null, null, null); t["default"] = m.exports }, "985f": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鎺堟潈鑿滃崟", width: 600, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鑿滃崟鏉冮檺", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-tree", { attrs: { multiple: "", checkable: "", "auto-expand-parent": e.autoExpandParent, "expanded-keys": e.expandedKeys, "tree-data": e.menuTreeData, "selected-keys": e.selectedKeys, replaceFields: e.replaceFields }, on: { expand: e.onExpand, select: e.onSelect, check: e.treeCheck }, model: { value: e.checkedKeys, callback: function (t) { e.checkedKeys = t }, expression: "checkedKeys" } })], 1)], 1)], 1)], 1) }, s = [], o = a("1da1"), n = (a("159b"), a("d3b7"), a("99af"), a("a434"), a("96cf"), a("0bfe")), i = a("a240"), l = { data: function () { return { labelCol: { style: { "padding-right": "20px" }, xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, menuTreeData: [], expandedKeys: [], checkedKeys: [], halfCheckedKeys: [], visible: !1, confirmLoading: !1, formLoading: !0, autoExpandParent: !0, selectedKeys: [], subValues: [], roleEntity: [], replaceFields: { key: "id" }, form: this.$form.createForm(this) } }, methods: { roleMenu: function (e) { var t = this; return Object(o["a"])(regeneratorRuntime.mark((function a() { return regeneratorRuntime.wrap((function (a) { while (1) switch (a.prev = a.next) { case 0: return t.formLoading = !0, t.roleEntity = e, t.visible = !0, a.next = 5, t.getMenuTree(); case 5: return a.next = 7, t.expandedMenuKeys(e); case 7: case "end": return a.stop() } }), a) })))() }, getMenuTree: function () { var e = this; return Object(n["a"])().then((function (t) { t.success && (e.menuTreeData = t.data, e.menuTreeData.forEach((function (t) { e.expandedKeys.push(t.id) }))) })) }, expandedMenuKeys: function (e) { var t = this; return Object(i["h"])({ id: e.id }).then((function (e) { e.success && (t.checkedKeys = e.data, t.findAllChildren(t.menuTreeData)), t.formLoading = !1 })) }, treeCheck: function (e, t) { this.halfCheckedKeys = t.halfCheckedKeys }, onExpand: function (e) { this.expandedKeys = e, this.autoExpandParent = !1 }, onCheck: function (e) { this.checkedKeys = e }, onSelect: function (e, t) { this.selectedKeys = e }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(i["f"])({ id: e.roleEntity.id, grantMenuIdList: e.checkedKeys.concat(e.halfCheckedKeys) }).then((function (t) { t.success ? (e.$message.success("鎺堟潈鎴愬姛"), e.confirmLoading = !1, e.$emit("ok", a), e.handleCancel()) : e.$message.error("鎺堟潈澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.checkedKeys = [], this.expandedKeys = [], this.visible = !1 }, findAllChildren: function (e) { var t = this; e.forEach((function (e, a) { if (0 !== e.children.length) { for (var r = 0; r < t.checkedKeys.length; r++)e.id === t.checkedKeys[r] && t.checkedKeys.splice(r, 1); t.findAllChildren(e.children) } })) } } }, c = l, d = a("2877"), u = Object(d["a"])(c, r, s, !1, null, null, null); t["default"] = u.exports }, 9888: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "瑙掕壊缂栬緫", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { staticStyle: { display: "none" }, attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1), a("a-form-item", { attrs: { label: "瑙掕壊绫诲瀷", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["roleType", { rules: [{ required: !0, message: "璇烽�夋嫨瑙掕壊绫诲瀷锛�" }] }], expression: "['roleType',{rules: [{ required: true, message: '璇烽�夋嫨瑙掕壊绫诲瀷锛�' }]}]" }] }, e._l(e.typeEnumDataDropDown, (function (t, r) { return a("a-radio", { key: r, attrs: { value: parseInt(t.code) } }, [e._v(" " + e._s(t.value))]) })), 1)], 1), a("a-form-item", { attrs: { label: "瑙掕壊鍚�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ヨ鑹插悕锛�" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ヨ鑹插悕锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヨ鑹插悕" } })], 1), a("a-form-item", { attrs: { label: "鍞竴缂栫爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, message: "璇疯緭鍏ュ敮涓�缂栫爜锛�" }] }], expression: "['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" } })], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎺掑簭", "has-feedback": "" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sort", { initialValue: 100 }], expression: "['sort', { initialValue: 100 }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ユ帓搴�", min: 1, max: 1e3 } })], 1), a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { rows: 4, placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1) }, s = [], o = (a("d3b7"), a("25f0"), a("b0c0"), a("4e82"), a("a240")), n = a("126f"), i = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, typeEnumDataDropDown: [], form: this.$form.createForm(this) } }, created: function () { this.sysDictTypeDropDown() }, methods: { edit: function (e) { var t = this; this.visible = !0, this.form.getFieldDecorator("roleType", { valuePropName: "checked", initialValue: e.roleType.toString() }), setTimeout((function () { t.form.setFieldsValue({ id: e.id, roleType: e.roleType, name: e.name, code: e.code, sort: e.sort, remark: e.remark }) }), 100) }, sysDictTypeDropDown: function (e) { var t = this; Object(n["d"])({ code: "role_type" }).then((function (e) { t.typeEnumDataDropDown = e.data })) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(o["d"])(a).then((function (t) { t.success ? (e.$message.success("缂栬緫鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a), e.form.resetFields()) : e.$message.error("缂栬緫澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, l = i, c = a("2877"), d = Object(c["a"])(l, r, s, !1, null, null, null); t["default"] = d.exports }, "998b": function (e, t, a) { "use strict"; a.d(t, "g", (function () { return s })), a.d(t, "a", (function () { return o })), a.d(t, "e", (function () { return n })), a.d(t, "d", (function () { return i })), a.d(t, "c", (function () { return l })), a.d(t, "f", (function () { return c })), a.d(t, "b", (function () { return d })), a.d(t, "i", (function () { return u })), a.d(t, "h", (function () { return m })); a("99af"); var r = a("b775"); function s(e) { return Object(r["b"])({ url: "/codeGenerate/page", method: "get", params: e }) } function o(e) { return Object(r["b"])({ url: "/codeGenerate/add", method: "post", data: e }) } function n(e) { return Object(r["b"])({ url: "/codeGenerate/edit", method: "post", data: e }) } function i(e) { return Object(r["b"])({ url: "/codeGenerate/delete", method: "post", data: e }) } function l(e) { return Object(r["b"])({ url: "/codeGenerate/DatabaseList", method: "get", params: e }) } function c(e) { return Object(r["b"])({ url: "/codeGenerate/InformationList", method: "get", params: e }) } function d(e, t) { return Object(r["b"])({ url: "/codeGenerate/ColumnList/".concat(e, "/").concat(t), method: "get" }) } function u(e) { return Object(r["b"])({ url: "/codeGenerate/runLocal", method: "post", data: e }) } function m(e) { return Object(r["b"])({ url: "/codeGenerate/runDown", method: "get", params: e, responseType: "blob" }) } }, "99c3": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏂板杞﹁締淇℃伅", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["carName"], expression: "['carName']" }], attrs: { placeholder: "璇疯緭鍏ュ悕绉�" } })], 1), a("a-form-item", { attrs: { label: "鍙风爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["carNo"], expression: "['carNo']" }], attrs: { placeholder: "璇疯緭鍏ュ彿鐮�" } })], 1)], 1)], 1)], 1) }, s = [], o = a("53ca"), n = (a("d3b7"), a("918e")), i = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, form: this.$form.createForm(this) } }, methods: { add: function (e) { this.visible = !0 }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { if (t) e.confirmLoading = !1; else { for (var r in a) "object" === Object(o["a"])(a[r]) && (a[r] = JSON.stringify(a[r])); Object(n["a"])(a).then((function (t) { t.success ? (e.$message.success("鏂板鎴愬姛"), e.confirmLoading = !1, e.$emit("ok", a), e.handleCancel()) : e.$message.error("鏂板澶辫触锛�" + JSON.stringify(t.message)) })).finally((function (t) { e.confirmLoading = !1 })) } })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, l = i, c = a("2877"), d = Object(c["a"])(l, r, s, !1, null, null, null); t["default"] = d.exports }, "9a88": function (e, t, a) { "use strict"; a("11b2") }, "9afd": function (e, t, a) { }, "9e4f": function (e, t, a) { }, "9ed6": function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "label-tag" }, [e.mergedConfig ? e._l(e.mergedConfig.data, (function (t, r) { return a("div", { key: t, staticClass: "label-item" }, [e._v(" " + e._s(t) + " "), a("div", { style: "background-color: " + e.mergedConfig.colors[r % e.mergedConfig.colors.length] + ";" })]) })) : e._e()], 2) }, s = [], o = a("becb"), n = a("5557"), i = { name: "LabelTag", props: { config: { type: Object, default: function () { return [] } } }, data: function () { return { defaultConfig: { data: [], colors: ["#00baff", "#3de7c9", "#fff", "#ffc530", "#469f4b"] }, mergedConfig: null } }, watch: { config: function () { var e = this.mergeConfig; e() } }, methods: { mergeConfig: function () { var e = this.config, t = this.defaultConfig; this.mergedConfig = Object(o["deepMerge"])(Object(n["deepClone"])(t, !0), e || {}) } }, mounted: function () { var e = this.mergeConfig; e() } }, l = i, c = (a("d9a80"), a("2877")), d = Object(c["a"])(l, r, s, !1, null, null, null); t["default"] = d.exports }, a09c: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "缂栬緫鏈烘瀯", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { staticStyle: { display: "none" }, attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1), a("a-form-item", { attrs: { label: "鏈烘瀯绫诲瀷", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["orgtype", { rules: [{ required: !0, message: "璇烽�夋嫨鏈烘瀯绫诲瀷锛�" }] }], expression: "['orgtype', { rules: [{ required: true, message: '璇烽�夋嫨鏈烘瀯绫诲瀷锛�' }] }]" }], attrs: { placeholder: "璇烽�夋嫨鏈烘瀯绫诲瀷锛�" } }, e._l(e.typeEnumDataDropDown, (function (t, r) { return a("a-radio", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value) + " ")]) })), 1)], 1), a("a-form-item", { attrs: { label: "鏈烘瀯鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ユ満鏋勫悕绉帮紒" }] }], expression: "['name', { rules: [{ required: true, message: '璇疯緭鍏ユ満鏋勫悕绉帮紒' }] }]" }], attrs: { placeholder: "璇疯緭鍏ユ満鏋勫悕绉�" } })], 1), a("a-form-item", { attrs: { label: "鍞竴缂栫爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, message: "璇疯緭鍏ュ敮涓�缂栫爜锛�" }] }], expression: "['code', { rules: [{ required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�' }] }]" }], attrs: { placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" } })], 1), a("a-form-item", { attrs: { label: "涓婄骇鏈烘瀯", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-tree-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["pid", { rules: [{ required: !0, message: "璇烽�夋嫨涓婄骇鏈烘瀯锛�" }] }], expression: "['pid', { rules: [{ required: true, message: '璇烽�夋嫨涓婄骇鏈烘瀯锛�' }] }]" }], staticStyle: { width: "100%" }, attrs: { dropdownStyle: { maxHeight: "300px", overflow: "auto" }, treeData: e.orgTree, placeholder: "璇烽�夋嫨涓婄骇鏈烘瀯", treeDefaultExpandAll: "" }, scopedSlots: e._u([{ key: "title", fn: function (t) { var r = t.id; return a("span", {}, [e._v(e._s(r) + " ")]) } }]) })], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎺掑簭" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sort", { initialValue: 100 }], expression: "['sort', { initialValue: 100 }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ユ帓搴�", min: 1, max: 1e3 } })], 1), a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { rows: 4, placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1) }, s = [], o = (a("b0c0"), a("4e82"), a("d3b7"), a("25fa")), n = a("126f"), i = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, typeEnumDataDropDown: [], orgTree: [], visible: !1, confirmLoading: !1, formLoading: !0, form: this.$form.createForm(this) } }, created: function () { this.sysDictTypeDropDown() }, methods: { edit: function (e) { var t = this; this.visible = !0, this.getOrgTree(), this.form.getFieldDecorator("orgtype", { valuePropName: "checked", initialValue: e.orgType }), setTimeout((function () { t.form.setFieldsValue({ id: e.id, orgType: e.orgType, name: e.name, code: e.code, sort: e.sort, pid: e.pid, remark: e.remark }) }), 100) }, sysDictTypeDropDown: function (e) { var t = this; Object(n["d"])({ code: "org_type" }).then((function (e) { t.typeEnumDataDropDown = e.data })) }, getOrgTree: function () { var e = this; Object(o["c"])().then((function (t) { e.formLoading = !1, t.success ? e.orgTree = [{ id: "-1", parentId: "0", title: "椤剁骇", value: "0", pid: "0", children: t.data }] : e.orgTree = [] })) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(o["f"])(a).then((function (t) { t.success ? (e.$message.success("缂栬緫鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a), e.form.resetFields()) : e.$message.error("缂栬緫澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, l = i, c = a("2877"), d = Object(c["a"])(l, r, s, !1, null, null, null); t["default"] = d.exports }, a240: function (e, t, a) { "use strict"; a.d(t, "a", (function () { return s })), a.d(t, "b", (function () { return o })), a.d(t, "d", (function () { return n })), a.d(t, "c", (function () { return i })), a.d(t, "h", (function () { return l })), a.d(t, "f", (function () { return c })), a.d(t, "g", (function () { return d })), a.d(t, "e", (function () { return u })); var r = a("b775"); function s(e) { return Object(r["b"])({ url: "/sysRole/page", method: "get", params: e }) } function o(e) { return Object(r["b"])({ url: "/sysRole/add", method: "post", data: e }) } function n(e) { return Object(r["b"])({ url: "/sysRole/edit", method: "post", data: e }) } function i(e) { return Object(r["b"])({ url: "/sysRole/delete", method: "post", data: e }) } function l(e) { return Object(r["b"])({ url: "/sysRole/ownMenu", method: "get", params: e }) } function c(e) { return Object(r["b"])({ url: "/sysRole/grantMenu", method: "post", data: e }) } function d(e) { return Object(r["b"])({ url: "/sysRole/ownData", method: "get", params: e }) } function u(e) { return Object(r["b"])({ url: "/sysRole/grantData", method: "post", data: e }) } }, a268: function (e, t) { e.exports = "data:image/png;base64,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" }, a468: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鑱屼綅缂栬緫", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { staticStyle: { display: "none" }, attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1), a("a-form-item", { attrs: { label: "鑱屼綅鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ヨ亴浣嶅悕绉帮紒" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ヨ亴浣嶅悕绉帮紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヨ亴浣嶅悕绉�" } })], 1), a("a-form-item", { attrs: { label: "鍞竴缂栫爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, message: "璇疯緭鍏ュ敮涓�缂栫爜锛�" }] }], expression: "['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" } })], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎺掑簭", "has-feedback": "" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sort", { initialValue: 100 }], expression: "['sort', { initialValue: 100 }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ユ帓搴�", min: 1, max: 1e3 } })], 1), a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { rows: 4, placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1) }, s = [], o = (a("b0c0"), a("4e82"), a("d3b7"), a("4cab")), n = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, form: this.$form.createForm(this) } }, methods: { edit: function (e) { var t = this; this.visible = !0, setTimeout((function () { t.form.setFieldsValue({ id: e.id, name: e.name, code: e.code, sort: e.sort, remark: e.remark }) }), 100) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(o["c"])(a).then((function (t) { t.success ? (e.$message.success("缂栬緫鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a), e.form.resetFields()) : e.$message.error("缂栬緫澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, i = n, l = a("2877"), c = Object(l["a"])(i, r, s, !1, null, null, null); t["default"] = c.exports }, a481: function (e, t, a) { }, a49c: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏂板瑙掕壊", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "瑙掕壊绫诲瀷", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["roleType", { rules: [{ required: !0, message: "璇烽�夋嫨瑙掕壊绫诲瀷锛�" }] }], expression: "['roleType',{rules: [{ required: true, message: '璇烽�夋嫨瑙掕壊绫诲瀷锛�' }]}]" }] }, e._l(e.typeEnumDataDropDown, (function (t, r) { return a("a-radio", { key: r, attrs: { value: parseInt(t.code) } }, [e._v(" " + e._s(t.value))]) })), 1)], 1), a("a-form-item", { attrs: { label: "瑙掕壊鍚�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ヨ鑹插悕锛�" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ヨ鑹插悕锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヨ鑹插悕" } })], 1), a("a-form-item", { attrs: { label: "鍞竴缂栫爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, message: "璇疯緭鍏ュ敮涓�缂栫爜锛�" }] }], expression: "['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ敮涓�缂栫爜" } })], 1), a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎺掑簭" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sort", { initialValue: 100 }], expression: "['sort', { initialValue: 100 }]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇疯緭鍏ユ帓搴�", min: 1, max: 1e3 } })], 1), a("a-form-item", { attrs: { label: "澶囨敞", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-textarea", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { rows: 4, placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1) }, s = [], o = (a("d3b7"), a("a240")), n = a("126f"), i = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, confirmLoading: !1, form: this.$form.createForm(this), typeEnumDataDropDown: [] } }, created: function () { this.sysDictTypeDropDown() }, methods: { add: function (e) { this.visible = !0 }, sysDictTypeDropDown: function (e) { var t = this; Object(n["d"])({ code: "role_type" }).then((function (e) { t.typeEnumDataDropDown = e.data })) }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(o["b"])(a).then((function (t) { t.success ? (e.$message.success("鏂板鎴愬姛"), e.visible = !1, e.confirmLoading = !1, e.$emit("ok", a), e.form.resetFields()) : e.$message.error("鏂板澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1 } } }, l = i, c = a("2877"), d = Object(c["a"])(l, r, s, !1, null, null, null); t["default"] = d.exports }, a784: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "淇敼瀵嗙爜", visible: e.visible_updPwd, "confirm-loading": e.confirmLoading }, on: { ok: e.handleOkUpdPwd, cancel: e.handleCancel } }, [a("a-form", { attrs: { form: e.formUpdPwd } }, [a("a-form-item", { attrs: { label: "鍘熷瘑鐮�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["password", { rules: [{ required: !0, message: "璇疯緭鍏ュ師瀵嗙爜锛�" }] }], expression: "['password', {rules: [{required: true, message: '璇疯緭鍏ュ師瀵嗙爜锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ師瀵嗙爜", type: "password" } })], 1), a("a-form-item", { attrs: { label: "鏂板瘑鐮�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["newPassword", { rules: [{ required: !0, min: 5, message: "璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑璐﹀彿锛�" }, { validator: e.validateToNextPassword }] }], expression: "['newPassword', {rules: [{required: true, min: 5, message: '璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑璐﹀彿锛�'},{\n          validator: validateToNextPassword,\n        },]}]" }], attrs: { placeholder: "璇疯緭鍏ユ柊瀵嗙爜", type: "password" } })], 1), a("a-form-item", { attrs: { label: "閲嶅鏂板瘑鐮�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["confirm", { rules: [{ required: !0, message: "璇峰啀娆¤緭鍏ユ柊瀵嗙爜锛�" }, { validator: e.compareToFirstPassword }] }], expression: "['confirm', {rules: [{required: true, message: '璇峰啀娆¤緭鍏ユ柊瀵嗙爜锛�'},\n                                          {\n                                            validator: compareToFirstPassword,\n                                          }]}]" }], attrs: { placeholder: "璇峰啀娆¤緭鍏ユ柊瀵嗙爜", type: "password" } })], 1)], 1)], 1) }, s = [], o = (a("d3b7"), a("0901")), n = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }, confirmLoading: !1, visible_updPwd: !1, userId: "", formUpdPwd: this.$form.createForm(this) } }, methods: { open: function (e) { this.userId = e, this.visible_updPwd = !0 }, handleOkUpdPwd: function () { var e = this, t = this.formUpdPwd.validateFields; t((function (t, a) { t || (e.confirmLoading = !0, a.id = e.userId, Object(o["q"])(a).then((function (t) { t.success ? (e.$message.success("淇敼鎴愬姛"), e.handleCancel()) : e.$message.error("淇敼澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 }))) })) }, handleCancel: function () { this.visible_updPwd = !1 }, compareToFirstPassword: function (e, t, a) { var r = this.formUpdPwd; t && t !== r.getFieldValue("newPassword") ? a("璇风‘璁や袱娆¤緭鍏ュ瘑鐮佺殑涓�鑷存�э紒") : a() }, validateToNextPassword: function (e, t, a) { var r = this.formUpdPwd; t && this.confirmDirty && r.validateFields(["confirm"], { force: !0 }), a() } } }, i = n, l = a("2877"), c = Object(l["a"])(i, r, s, !1, null, null, null); t["default"] = c.exports }, a897: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { attrs: { id: "left12" } }, [a("div", { staticClass: "ranking-board-title" }, [e._v(" 鏈烘瀯璇勪及绛夌骇 "), a("dv-decoration-6", { staticStyle: { width: "200px", height: "20px" } })], 1), a("dv-scroll-ranking-board", { staticClass: "board", attrs: { config: e.config } })], 1) }, s = [], o = { name: "Left12", data: function () { return { config: { data: [{ name: "XXX鏈烘瀯", value: 55 }, { name: "XXX鏈烘瀯", value: 120 }, { name: "XXX鏈烘瀯", value: 78 }, { name: "XXX鏈烘瀯", value: 66 }, { name: "XXX鏈烘瀯", value: 80 }, { name: "XXX鏈烘瀯", value: 45 }, { name: "XXX鏈烘瀯", value: 29 }, { name: "XXX鏈烘瀯", value: 29 }, { name: "XXX鏈烘瀯", value: 29 }], unit: "鍒�", rowNum: 8 } } } }, n = o, i = (a("7a4c"), a("2877")), l = Object(i["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, ac63: function (e, t, a) { }, af5d: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "left22" }, [a("div", { staticClass: "chart-name" }, [e._v(" 浜嬩欢缁熻 "), a("dv-decoration-3", { staticStyle: { width: "200px", height: "20px" } })], 1), a("dv-charts", { attrs: { option: e.option } })], 1) }, s = [], o = { name: "Left22", data: function () { return { option: { legend: { data: [{ name: "鍟嗗搧璁㈠崟", color: "#00baff" }, { name: "鍛煎彨", color: "#ff5ca9" }, { name: "鏈嶅姟宸ュ崟", color: "#3de7c9" }], textStyle: { fill: "#fff" } }, xAxis: { data: ["12/01", "12/02", "12/03", "12/04", "12/05", "12/06", "12/07"], axisLine: { style: { stroke: "#F6F8FA" } }, axisLabel: { style: { fill: "#F6F8FA" } }, axisTick: { show: !1 } }, yAxis: { data: "value", splitLine: { show: !1 }, axisLine: { style: { stroke: "#F6F8FA" } }, axisLabel: { style: { fill: "#F6F8FA" } }, axisTick: { show: !1 }, min: 0, max: 8 }, series: [{ name: "鍟嗗搧璁㈠崟", data: [2.5, 3.5, 6.5, 6.5, 7.5, 6.5, 2.5], type: "bar", barStyle: { fill: "rgba(0, 186, 255, 0.4)" } }, { name: "鍛煎彨", data: [2.5, 3.5, 6.5, 6.5, 7.5, 6.5, 2.5], type: "line", lineStyle: { stroke: "#ff5ca9" }, linePoint: { radius: 4, style: { fill: "#ff5ca9", stroke: "transparent" } } }, { name: "鏈嶅姟宸ュ崟", data: [1.3, 2.3, 5.3, 5.3, 6.3, 5.3, 1.3], type: "line", smooth: !0, lineArea: { show: !0, gradient: ["rgba(55, 162, 218, 0.6)", "rgba(55, 162, 218, 0)"] }, lineStyle: { lineDash: [5, 5] }, linePoint: { radius: 4, style: { fill: "#00db95" } } }] } } } }, n = o, i = (a("749f"), a("2877")), l = Object(i["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, afd0: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [a("a-card", { directives: [{ name: "show", rawName: "v-show", value: e.indexOpenShow, expression: "indexOpenShow" }], attrs: { bordered: !1, bodyStyle: e.tstyle } }, [a("a-spin", { attrs: { spinning: e.Loading } }, [e.hasPerm("codeGenerate:page") ? a("div", { staticClass: "table-page-search-wrapper" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "搴撳悕绉�" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ュ簱鍚嶇О" }, model: { value: e.queryParam.databaseName, callback: function (t) { e.$set(e.queryParam, "databaseName", t) }, expression: "queryParam.databaseName" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "琛ㄥ悕绉�" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ヨ〃鍚嶇О" }, model: { value: e.queryParam.tableName, callback: function (t) { e.$set(e.queryParam, "tableName", t) }, expression: "queryParam.tableName" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")])], 1)], 1)], 1)], 1) : e._e()])], 1), a("a-card", { directives: [{ name: "show", rawName: "v-show", value: e.indexOpenShow, expression: "indexOpenShow" }], attrs: { bordered: !1 } }, [a("a-spin", { attrs: { spinning: e.Loading } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "databaseName", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 20, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "tableName", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 20, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "busName", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 20, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "nameSpace", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 25, tooltip: "" } }, [e._v(e._s(t))])], 1) } }, { key: "generateType", fn: function (t) { return a("span", {}, [a("ellipsis", { attrs: { length: 20, tooltip: "" } }, [e._v(e._s(e._f("dictType")("code_gen_create_type", t)))])], 1) } }, { key: "action", fn: function (t, r) { return a("span", {}, ["1" === r.generateType ? a("span", [e.hasPerm("codeGenerate:runDown") ? a("a", { on: { click: function (t) { return e.runDownCodeGenerate(r) } } }, [e._v("寮�濮嬬敓鎴�")]) : e._e()]) : a("span", [e.hasPerm("codeGenerate:runLocal") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "纭畾鐢熸垚浠g爜鍒版湰椤圭洰锛�" }, on: { confirm: function () { return e.runLocalCodeGenerate(r) } } }, [a("a", [e._v("寮�濮嬬敓鎴�")])]) : e._e()], 1), e.hasPerm("codeGenerate:config") & e.hasPerm("codeGenerate:runLocal") || e.hasPerm("codeGenerate:runDown") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("codeGenerate:config") ? a("a", { on: { click: function (t) { return e.indexConfigOpen(r) } } }, [e._v("閰嶇疆")]) : e._e(), e.hasPerm("codeGenerate:config") & e.hasPerm("codeGenerate:edit") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("codeGenerate:edit") ? a("a", { on: { click: function (t) { return e.$refs.editForm.edit(r) } } }, [e._v("缂栬緫")]) : e._e(), e.hasPerm("codeGenerate:edit") & e.hasPerm("codeGenerate:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("codeGenerate:delete") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.codeGenerateDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])]) : e._e()], 1) } }]) }, [e.hasPerm("codeGenerate:add") ? a("div", { attrs: { slot: "operator" }, slot: "operator" }, [e.hasPerm("codeGenerate:add") ? a("a-button", { attrs: { type: "primary", icon: "plus" }, on: { click: function (t) { return e.$refs.addForm.add() } } }, [e._v("鏂板")]) : e._e()], 1) : e._e()]), e.hasPerm("codeGenerate:add") ? a("add-form", { ref: "addForm", on: { ok: e.handleOk } }) : e._e(), e.hasPerm("codeGenerate:edit") ? a("edit-form", { ref: "editForm", on: { ok: e.handleOk } }) : e._e()], 1)], 1), e.hasPerm("codeGenerate:config") ? a("index-config", { ref: "indexConfig", on: { ok: e.handleResetOpen } }) : e._e()], 1) }, s = [], o = (a("4d63"), a("ac1f"), a("25f0"), a("d3b7"), a("3ca3"), a("ddb0"), a("2b3d"), a("5319"), a("2af9")), n = a("998b"), i = a("b237"), l = a("2f01"), c = a("ee23"), d = { components: { indexConfig: c["default"], STable: o["r"], Ellipsis: o["h"], addForm: i["default"], editForm: l["default"] }, data: function () { var e = this; return { queryParam: {}, columns: [{ title: "搴撳悕绉�", dataIndex: "databaseName", scopedSlots: { customRender: "databaseName" } }, { title: "琛ㄥ悕绉�", dataIndex: "tableName", scopedSlots: { customRender: "tableName" } }, { title: "涓氬姟鍚�", dataIndex: "busName", scopedSlots: { customRender: "busName" } }, { title: "鍛藉悕绌洪棿", dataIndex: "nameSpace", scopedSlots: { customRender: "nameSpace" } }, { title: "浣滆�呭鍚�", dataIndex: "authorName" }, { title: "鐢熸垚鏂瑰紡", dataIndex: "generateType", scopedSlots: { customRender: "generateType" } }], tstyle: { "padding-bottom": "0px", "margin-bottom": "10px" }, loadData: function (t) { return Object(n["g"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [], Loading: !1, jdbcDriverList: [], indexOpenShow: !0 } }, created: function () { (this.hasPerm("codeGenerate:edit") || this.hasPerm("codeGenerate:delete")) && this.columns.push({ title: "鎿嶄綔", width: "230px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, methods: { runDownCodeGenerate: function (e) { var t = this; this.Loading = !0, Object(n["h"])({ id: e.id }).then((function (e) { t.Loading = !1, t.downloadfile(e) })).catch((function (e) { t.Loading = !1, t.$message.error("涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒") })) }, downloadfile: function (e) { var t = new Blob([e.data], { type: "application/octet-stream;charset=UTF-8" }), a = e.headers["content-disposition"], r = new RegExp("filename=([^;]+\\.[^\\.;]+);*"), s = r.exec(a), o = s[1], n = document.createElement("a"), i = window.URL.createObjectURL(t), l = /^["](.*)["]$/g; n.style.display = "none", n.href = i, n.download = decodeURI(o.replace(l, "$1")), document.body.appendChild(n), n.click(), document.body.removeChild(n), window.URL.revokeObjectURL(i) }, runLocalCodeGenerate: function (e) { var t = this; Object(n["i"])(e).then((function (e) { e.success ? (t.$message.success("鐢熸垚鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("鐢熸垚澶辫触锛�" + e.message) })) }, codeGenerateDelete: function (e) { var t = this; this.Loading = !0, Object(n["d"])([{ id: e.id }]).then((function (e) { e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("鍒犻櫎澶辫触锛�" + e.message) })).catch((function (e) { t.$message.error("鍒犻櫎閿欒锛�" + e.message) })).finally((function (e) { t.Loading = !1 })) }, indexConfigOpen: function (e) { this.indexOpenShow = !1, this.$refs.indexConfig.open(e) }, handleResetOpen: function () { this.indexOpenShow = !0, this.$refs.table.refresh() }, handleOk: function () { this.$refs.table.refresh() }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, u = d, m = (a("de3b"), a("2877")), p = Object(m["a"])(u, r, s, !1, null, null, null); t["default"] = p.exports }, b237: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏂板浠g爜鐢熸垚閰嶇疆", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鐢熸垚搴�", "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["databaseName", { rules: [{ required: !0, message: "璇烽�夋嫨鏁版嵁搴擄紒" }] }], expression: "['databaseName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴擄紒' }]}]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨鏁版嵁搴�" } }, e._l(e.databaseNameData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.databaseName }, on: { click: function (a) { return e.databaseNameSele(t) } } }, [e._v(e._s(t.databaseName))]) })), 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鐢熸垚琛�", "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["tableName", { rules: [{ required: !0, message: "璇烽�夋嫨鏁版嵁搴撹〃锛�" }] }], expression: "['tableName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴撹〃锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨鏁版嵁搴撹〃" } }, e._l(e.tableNameData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.tableName }, on: { click: function (a) { return e.tableNameSele(t) } } }, [e._v(e._s(t.tableName))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "涓氬姟鍚�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["busName", { rules: [{ required: !0, message: "璇疯緭鍏ヤ笟鍔″悕锛�" }] }], expression: "['busName', {rules: [{required: true, message: '璇疯緭鍏ヤ笟鍔″悕锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヤ笟鍔″悕" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鑿滃崟鍒嗙被", "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["menuApplication", { rules: [{ required: !0, message: "璇烽�夋嫨搴旂敤鍒嗙被锛�" }] }], expression: "['menuApplication', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨搴旂敤鍒嗙被" } }, e._l(e.appData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code }, on: { click: function (a) { return e.changeApplication(t.code) } } }, [e._v(e._s(t.name))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("div", [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鐖剁骇鑿滃崟", "has-feedback": "" } }, [a("a-tree-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["menuPid", { rules: [{ required: !0, message: "璇烽�夋嫨鐖剁骇鑿滃崟锛�" }] }], expression: "['menuPid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { dropdownStyle: { maxHeight: "300px", overflow: "auto" }, treeData: e.menuTreeData, placeholder: "璇烽�夋嫨鐖剁骇鑿滃崟", treeDefaultExpandAll: "" }, scopedSlots: e._u([{ key: "title", fn: function (t) { var r = t.id; return a("span", {}, [e._v(e._s(r) + " ")]) } }]) })], 1)], 1)])], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍛藉悕绌洪棿", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["nameSpace", { rules: [{ required: !0, message: "璇疯緭鍏ュ懡鍚嶇┖闂达紒" }] }], expression: "['nameSpace', {rules: [{required: true, message: '璇疯緭鍏ュ懡鍚嶇┖闂达紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヤ唬鐮佸寘鍚�" } })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "浣滆�呭鍚�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["authorName", { rules: [{ required: !0, message: "璇疯緭鍏ヤ綔鑰呭鍚嶏紒" }] }], expression: "['authorName', {rules: [{required: true, message: '璇疯緭鍏ヤ綔鑰呭鍚嶏紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヤ綔鑰呭鍚�" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鐢熸垚鏂瑰紡" } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["generateType", { rules: [{ required: !0, message: "璇烽�夋嫨鐢熸垚鏂瑰紡锛�" }] }], expression: "['generateType',{rules: [{ required: true, message: '璇烽�夋嫨鐢熸垚鏂瑰紡锛�' }]}]" }] }, e._l(e.generateTypeData, (function (t, r) { return a("a-radio", { key: r, attrs: { value: t.code }, on: { click: function (a) { return e.generateTypeRadio(t.code) } } }, [e._v(e._s(t.name))]) })), 1)], 1)], 1)], 1)], 1)], 1)], 1) }, s = [], o = (a("a434"), a("d3b7"), a("2316")), n = a("0bfe"), i = a("998b"), l = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, visible: !1, appData: [], menuTreeData: [], databaseNameData: [], tableNameData: [], generateTypeData: [], confirmLoading: !1, databaseNameValue: "", tableNameValue: "", form: this.$form.createForm(this) } }, methods: { add: function () { this.visible = !0, this.codeGenerateDatabaseList(), this.dataTypeItem(), this.selectedByDefault(), this.getSysApplist() }, selectedByDefault: function () { this.form.getFieldDecorator("nameSpace", { initialValue: "Admin.NET.Application" }), this.form.getFieldDecorator("generateType", { valuePropName: "checked", initialValue: "2" }), this.form.getFieldDecorator("menuApplication", { initialValue: "busiapp" }), this.changeApplication("busiapp") }, codeGenerateDatabaseList: function () { var e = this; Object(i["c"])().then((function (t) { e.databaseNameData = t.data })) }, codeGenerateInformationList: function (e) { var t = this; Object(i["f"])(e).then((function (e) { t.tableNameData = e.data })) }, getSysApplist: function () { var e = this; return Object(o["a"])().then((function (t) { t.success ? e.appData = t.data : e.$message.warning(t.message) })) }, dataTypeItem: function () { this.tablePrefixData = this.$options.filters["dictData"]("yes_or_no"), this.generateTypeData = this.$options.filters["dictData"]("code_gen_create_type"), this.generateTypeData.splice(0, 1) }, handleSubmit: function () { var e = this, t = this.form.validateFields; t((function (t, a) { t || (e.confirmLoading = !0, Object(i["a"])(a).then((function (t) { t.success ? (e.$message.success("鏂板鎴愬姛"), e.$emit("ok", a), e.handleCancel()) : e.$message.error("鏂板澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 }))) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1, this.form.getFieldDecorator("className", { initialValue: "" }), this.form.getFieldDecorator("busName", { initialValue: "" }) }, databaseNameSele: function (e) { this.databaseNameValue = e.databaseName, this.form.setFieldsValue({ tableName: "" }), this.codeGenerateInformationList({ dbContextLocatorName: this.databaseNameValue }) }, tableNameSele: function (e) { this.tableNameValue = e.tableName, this.form.getFieldDecorator("busName", { initialValue: e.tableComment }), this.settingDefaultValue() }, changeApplication: function (e) { var t = this; Object(n["c"])({ application: e }).then((function (e) { e.success ? (t.menuTreeData = [{ id: "-1", parentId: "0", title: "椤剁骇", value: "0", pid: "0", children: e.data }], t.form.getFieldDecorator("menuPid", { initialValue: "0" })) : t.$message.warning(e.message) })) }, settingDefaultValue: function () { }, generateTypeRadio: function (e) { } } }, c = l, d = a("2877"), u = Object(d["a"])(c, r, s, !1, null, null, null); t["default"] = u.exports }, b291: function (e, t, a) { "use strict"; a("4f12") }, b76e: function (e, t, a) { "use strict"; a("8f8a") }, b85c: function (e, t, a) { "use strict"; a.d(t, "a", (function () { return s })); a("a4d3"), a("e01a"), a("d3b7"), a("d28b"), a("3ca3"), a("ddb0"); var r = a("06c5"); function s(e, t) { var a = "undefined" !== typeof Symbol && e[Symbol.iterator] || e["@@iterator"]; if (!a) { if (Array.isArray(e) || (a = Object(r["a"])(e)) || t && e && "number" === typeof e.length) { a && (e = a); var s = 0, o = function () { }; return { s: o, n: function () { return s >= e.length ? { done: !0 } : { done: !1, value: e[s++] } }, e: function (e) { throw e }, f: o } } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") } var n, i = !0, l = !1; return { s: function () { a = a.call(e) }, n: function () { var e = a.next(); return i = e.done, e }, e: function (e) { l = !0, n = e }, f: function () { try { i || null == a["return"] || a["return"]() } finally { if (l) throw n } } } } }, b89a: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鏂板鑿滃崟", width: 1e3, visible: e.visible, confirmLoading: e.confirmLoading, destroyOnClose: !0 }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "鑿滃崟鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, hasFeedback: "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, min: 1, message: "璇疯緭鍏ヨ彍鍗曞悕绉帮紒" }] }], expression: "['name',{rules: [{required: true, min: 1, message: '璇疯緭鍏ヨ彍鍗曞悕绉帮紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヨ彍鍗曞悕绉�" } })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { staticStyle: { width: "100%" }, attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鑿滃崟缂栧彿", hasFeedback: "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, min: 1, message: "璇疯緭鍏ヨ彍鍗曠紪鍙凤紒" }] }], expression: "['code', {rules: [{required: true, min: 1, message: '璇疯緭鍏ヨ彍鍗曠紪鍙凤紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヨ彍鍗曠紪鍙�" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎵�灞炲簲鐢�", "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["application", { rules: [{ required: !0, message: "璇烽�夋嫨搴旂敤鍒嗙被锛�" }] }], expression: "['application', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨搴旂敤鍒嗙被" } }, e._l(e.appData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code }, on: { click: function (a) { return e.changeApplication(t.code) } } }, [e._v(e._s(t.name))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鑿滃崟灞傜骇" } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["type", { rules: [{ required: !0, message: "璇烽�夋嫨鑿滃崟灞傜骇锛�" }] }], expression: "['type',{rules: [{ required: true, message: '璇烽�夋嫨鑿滃崟灞傜骇锛�' }]}]" }] }, e._l(e.typeData, (function (t, r) { return a("a-radio", { key: r, attrs: { value: t.code }, on: { click: function (a) { return e.meneTypeFunc(t.code) } } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("div", { directives: [{ name: "show", rawName: "v-show", value: e.pidShow, expression: "pidShow" }] }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鐖剁骇鑿滃崟", "has-feedback": "" } }, [a("a-tree-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["pid", { rules: [{ required: !0, message: "璇烽�夋嫨鐖剁骇鑿滃崟锛�" }] }], expression: "['pid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { dropdownStyle: { maxHeight: "300px", overflow: "auto" }, treeData: e.menuTreeData, placeholder: "璇烽�夋嫨鐖剁骇鑿滃崟", treeDefaultExpandAll: "" }, scopedSlots: e._u([{ key: "title", fn: function (t) { var r = t.id; return a("span", {}, [e._v(e._s(r) + " ")]) } }]) })], 1)], 1), a("div", { directives: [{ name: "show", rawName: "v-show", value: e.redirectShow, expression: "redirectShow" }] }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "濡傞渶鎵撳紑棣栭〉鍔犺浇姝ょ洰褰曚笅鑿滃崟锛岃濉啓鍔犺浇鑿滃崟璺敱锛岃涓洪椤靛悗鍏朵粬璁剧疆鐨勪富椤靛皢琚浛浠�" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 閲嶅畾鍚� ")], 1), a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["redirect"], expression: "['redirect']" }], attrs: { prop: "redirect", placeholder: "璇疯緭鍏ラ噸瀹氬悜鍦板潃" } })], 1)], 1)]), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "鎸夐挳锛氭棤锛岃彍鍗曪細鍐呴摼銆佸閾俱�佺粍浠�" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 鎵撳紑鏂瑰紡 ")], 1), a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["openType", { rules: [{ required: !0, message: "璇烽�夋嫨鎵撳紑鏂瑰紡锛�" }] }], expression: "['openType',{rules: [{ required: true, message: '璇烽�夋嫨鎵撳紑鏂瑰紡锛�' }]}]" }], attrs: { disabled: e.openTypeDisabled } }, e._l(e.openTypeData, (function (t, r) { return a("a-radio", { key: r, attrs: { value: t.code }, on: { click: function (a) { return e.meneOpenTypeFunc(t.code) } } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1)], 1), a("a-divider"), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("div", { directives: [{ name: "show", rawName: "v-show", value: e.componentShow, expression: "componentShow" }] }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, hasFeedback: "" } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "鍓嶇vue缁勪欢 views鏂囦欢澶逛笅璺緞锛屼緥锛歴ystem/menu/index銆傛敞锛氱洰褰曠骇濉啓锛歊outeView(涓嶅甫闈㈠寘灞�)锛孭ageView(甯﹂潰鍖呭睉)锛岃彍鍗曠骇鍐呴摼鎵撳紑http閾炬帴濉啓锛欼frame" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 鍓嶇缁勪欢 ")], 1), a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["component", { rules: [{ required: e.componentRequired, message: "璇疯緭鍏ュ墠绔粍浠�" }] }], expression: "['component',{rules: [{required: componentRequired, message: '璇疯緭鍏ュ墠绔粍浠�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ墠绔粍浠�", disabled: e.componentDisabled, prop: "component" } })], 1)], 1)]), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("div", { directives: [{ name: "show", rawName: "v-show", value: e.routerShow, expression: "routerShow" }] }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, hasFeedback: "" } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "娴忚鍣ㄦ樉绀虹殑URL锛屼緥锛�/menu锛屽搴旀墦寮�椤甸潰涓鸿彍鍗曢〉闈�" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 璺敱鍦板潃 ")], 1), a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["router", { rules: [{ required: e.routerRequired, message: "璇疯緭鍏ヨ矾鐢憋紒" }] }], expression: "['router', {rules: [{required: routerRequired, message: '璇疯緭鍏ヨ矾鐢憋紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヨ矾鐢�" } })], 1)], 1), a("div", { directives: [{ name: "show", rawName: "v-show", value: e.permissionShow, expression: "permissionShow" }] }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鏉冮檺鏍囪瘑", hasFeedback: "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["permission", { rules: [{ required: e.permissionRequired, message: "璇疯緭鍏ユ潈闄愭爣璇嗭紒" }] }], expression: "['permission', {rules: [{required: permissionRequired, message: '璇疯緭鍏ユ潈闄愭爣璇嗭紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ユ潈闄愭爣璇�" } })], 1)], 1)])], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("div", { directives: [{ name: "show", rawName: "v-show", value: e.linkShow, expression: "linkShow" }] }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, hasFeedback: "" } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "褰撻�夋嫨浜嗛渶瑕佸唴閾炬垨澶栭摼鎵撳紑鐨勯�夐」锛屾澶勮緭鍏ヨ鎵撳紑鐨勯摼鎺ュ湴鍧�锛屼緥锛歨ttp://www.dilon.vip" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 鍐呭閾惧湴鍧� ")], 1), a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["link", { rules: [{ required: e.linkRequired, message: "璇疯緭鍏ユ潈闄愭爣璇嗭紒" }] }], expression: "['link', {rules: [{required: linkRequired, message: '璇疯緭鍏ユ潈闄愭爣璇嗭紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ唴閾炬墦寮�鍦板潃", disabled: e.linkDisabled } })], 1)], 1)]), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("div", { directives: [{ name: "show", rawName: "v-show", value: e.iconShow, expression: "iconShow" }] }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鍥炬爣" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["icon"], expression: "['icon']" }], attrs: { placeholder: "璇烽�夋嫨鍥炬爣", disabled: "disabled" } }, [a("a-icon", { attrs: { slot: "addonAfter", type: "setting" }, on: { click: function (t) { return e.openIconSele() } }, slot: "addonAfter" })], 1)], 1)], 1)])], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "绯荤粺鏉冮噸锛氳彍鍗曞彲鍒嗛厤缁欎换浣曡鑹诧紝涓氬姟鏉冮噸锛氳彍鍗曞瓒呯骇绠$悊鍛樹笉鍙" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 鏉冮噸 ")], 1), a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["weight"], expression: "['weight']" }] }, e._l(e.weightData, (function (t, r) { return a("a-radio", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鏄惁鍙" } }, [a("a-switch", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["visible", { valuePropName: "checked" }], expression: "['visible', { valuePropName: 'checked' }]" }], attrs: { id: "visible", checkedChildren: "鏄�", unCheckedChildren: "鍚�" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎺掑簭" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sort", { initialValue: 100 }], expression: "['sort', { initialValue: 100 }]" }], staticStyle: { width: "100%" }, attrs: { min: 1, max: 1e3 } })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "澶囨敞", hasFeedback: "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1)], 1), a("a-modal", { attrs: { width: 850, visible: e.visibleIcon, footer: "", mask: !1, closable: !1, destroyOnClose: !0 }, on: { cancel: e.handleCancelIcon } }, [a("icon-selector", { on: { change: e.handleIconChange }, model: { value: e.currentSelectedIcon, callback: function (t) { e.currentSelectedIcon = t }, expression: "currentSelectedIcon" } })], 1)], 1) }, s = [], o = (a("d3b7"), a("2316")), n = a("0bfe"), i = a("13bb"), l = a("126f"), c = { components: { IconSelector: i["a"] }, data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 6 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }, visibleIcon: !1, visible: !1, confirmLoading: !1, appData: [], menuTreeData: [], redirectShow: !0, componentShow: !0, componentDisabled: !1, componentRequired: !0, routerRequired: !0, routerShow: !0, iconShow: !0, openTypeShow: !0, pidShow: !0, permissionShow: !0, permissionRequired: !0, currentSelectedIcon: "pause-circle", typeData: [], openTypeData: [], weightData: [], formLoading: !0, linkShow: !0, openTypeDisabled: !1, openTypeDefault: [], openType: "", linkRequired: !0, linkDisabled: !1, type: "", form: this.$form.createForm(this) } }, methods: { add: function (e) { this.visible = !0, this.currentSelectedIcon = e, this.form.getFieldDecorator("type", { valuePropName: "checked", initialValue: "1" }), this.meneTypeFunc("1"), this.form.getFieldDecorator("weight", { valuePropName: "checked", initialValue: "2" }), this.form.getFieldDecorator("visible", { initialValue: !0 }), this.getSysApplist(), this.sysDictTypeDropDown() }, sysDictTypeDropDown: function () { var e = this; this.formLoading = !0, Object(l["d"])({ code: "menu_type" }).then((function (t) { e.typeData = t.data })), Object(l["d"])({ code: "menu_weight" }).then((function (t) { e.weightData = t.data })), Object(l["d"])({ code: "open_type" }).then((function (t) { e.openTypeData = t.data, e.formLoading = !1 })) }, getSysApplist: function () { var e = this; return Object(o["a"])().then((function (t) { t.success ? e.appData = t.data : e.$message.warning(t.message) })) }, changeApplication: function (e) { var t = this; Object(n["c"])({ application: e }).then((function (e) { e.success ? (t.form.resetFields("pid", []), t.menuTreeData = [{ id: "-1", parentId: "0", title: "椤剁骇", value: "0", pid: "0", children: e.data }]) : t.$message.warning(e.message) })) }, meneTypeFunc: function (e) { this.type = e, "0" != e && "1" != e || (this.linkShow = !0, this.form.resetFields("link", []), this.iconShow = !0, this.routerRequired = !0, this.form.getFieldDecorator("router", { initialValue: "" }), this.routerShow = !0, this.permissionShow = !1, this.permissionRequired = !1, this.form.getFieldDecorator("permission", { initialValue: "" }), this.openType = "1", this.form.getFieldDecorator("openType", { initialValue: this.openType = "1" }), this.openTypeDisabled = !1), "0" == e ? (this.redirectShow = !0, this.form.resetFields("redirect", []), this.componentShow = !0, this.componentDisabled = !1, this.form.getFieldDecorator("component", { initialValue: "PageView" }), this.componentRequired = !0, this.form.getFieldDecorator("pid", { initialValue: "0" }), this.pidShow = !1) : ("1" == e && (this.componentDisabled = !1, this.form.getFieldDecorator("component", { initialValue: "" })), this.redirectShow = !1, this.form.getFieldDecorator("redirect", { initialValue: "" }), this.pidShow = !0), "2" == e && (this.componentRequired = !1, this.componentDisabled = !0, this.form.resetFields("component", []), this.form.getFieldDecorator("component", { initialValue: "" }), this.routerRequired = !0, this.form.getFieldDecorator("router", { initialValue: "" }), this.routerShow = !1, this.linkShow = !1, this.form.getFieldDecorator("link", { initialValue: "" }), this.permissionShow = !0, this.permissionRequired = !0, this.form.getFieldDecorator("permission", { initialValue: "" }), this.iconShow = !1, this.form.getFieldDecorator("icon", { initialValue: "" }), this.openType = "0", this.form.getFieldDecorator("openType", { initialValue: this.openType }), this.openTypeDisabled = !0, this.form.getFieldDecorator("icon", { initialValue: "" })), this.meneOpenTypeFunc(this.openType) }, meneOpenTypeFunc: function (e) { this.form.resetFields("openType", e), "2" == e || "3" == e ? (!1 === this.linkDisabled && this.form.resetFields("link", []), this.linkDisabled = !1, this.linkRequired = !0) : (this.linkDisabled = !0, this.form.resetFields("link", []), this.linkRequired = !1), "3" == e ? (this.componentRequired = !1, this.componentDisabled = !0, this.form.resetFields("component", []), this.form.getFieldDecorator("component", { initialValue: "" })) : (this.componentRequired = !0, "1" == this.type || "2" == this.type ? this.form.getFieldDecorator("component", { initialValue: "" }) : (this.form.resetFields("component", []), this.form.getFieldDecorator("component", { initialValue: "PageView" })), "2" == e && (this.form.resetFields("component", []), this.form.getFieldDecorator("component", { initialValue: "Iframe" }))), "2" == this.type && "0" == e && (this.componentRequired = !1, this.routerRequired = !1) }, openIconSele: function () { this.visibleIcon = !0 }, handleIconChange: function (e) { this.form.getFieldDecorator("icon", { initialValue: e }), this.visibleIcon = !1 }, handleCancelIcon: function () { this.visibleIcon = !1 }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : (a.visible ? a.visible = "Y" : a.visible = "N", a.type = parseInt(a.type), a.openType = parseInt(a.openType), a.weight = parseInt(a.weight), Object(n["d"])(a).then((function (t) { e.confirmLoading = !1, t.success ? (e.$message.success("鏂板鎴愬姛"), e.$emit("ok", a), e.handleCancel()) : e.$message.error("鏂板澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 }))) })) }, handleCancel: function () { this.form.resetFields(), this.confirmLoading = !1, this.visible = !1 } } }, d = c, u = a("2877"), m = Object(u["a"])(d, r, s, !1, null, null, null); t["default"] = m.exports }, b92f: function (e, t, a) { "use strict"; a("fcb0") }, c045: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { attrs: { id: "left1" } }, [a("dv-scroll-board", { attrs: { config: e.config } })], 1) }, s = [], o = { name: "Left1", data: function () { return { config: { data: [['<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж1鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;color:#32A1FB;">2019-07-02 17:25:00</span></span>'], ['<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж2鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'], ['<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж3鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'], ['<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж4鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'], ['<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж5鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'], ['<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж6鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'], ['<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж7鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'], ['<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж8鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'], ['<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж8鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>']], align: ["left"], rowNum: 12, oddRowBGC: "rgba(0, 44, 81, 0.0)", evenRowBGC: "rgba(10, 29, 50, 0.0)" } } } }, n = o, i = (a("18b3"), a("2877")), l = Object(i["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, c1bb: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { attrs: { id: "middle2" } }, [a("dv-flyline-chart-enhanced", { attrs: { config: e.config, dev: !0 } })], 1) }, s = [], o = { name: "Middle2", data: function () { return { config: { points: [{ name: "杩愬煄", coordinate: [.43, .66], halo: { show: !0 }, icon: { src: a("a268"), width: 30, height: 30 }, text: {} }, { name: "骞抽檰鍘�", coordinate: [.53, .8] }, { name: "鑺煄鍘�", coordinate: [.27, .91] }, { name: "姘告祹甯�", coordinate: [.14, .77] }, { name: "涓寸寳鍘�", coordinate: [.31, .54] }, { name: "澶忓幙", coordinate: [.55, .54] }, { name: "鍨f洸鍘�", coordinate: [.78, .42] }, { name: "闂诲枩鍘�", coordinate: [.55, .37] }, { name: "涓囪崳鍘�", coordinate: [.35, .33] }, { name: "缁涘幙", coordinate: [.73, .26] }, { name: "鏂扮粵鍘�", coordinate: [.55, .17] }, { name: "绋峰北鍘�", coordinate: [.43, .17] }, { name: "娌虫触甯�", coordinate: [.28, .18] }], lines: [{ source: "骞抽檰鍘�", target: "杩愬煄" }, { source: "鑺煄鍘�", target: "杩愬煄" }, { source: "姘告祹甯�", target: "杩愬煄" }, { source: "涓寸寳鍘�", target: "杩愬煄" }, { source: "澶忓幙", target: "杩愬煄" }, { source: "鍨f洸鍘�", target: "杩愬煄" }, { source: "闂诲枩鍘�", target: "杩愬煄" }, { source: "涓囪崳鍘�", target: "杩愬煄" }, { source: "缁涘幙", target: "杩愬煄" }, { source: "鏂扮粵鍘�", target: "杩愬煄" }, { source: "绋峰北鍘�", target: "杩愬煄" }, { source: "娌虫触甯�", target: "杩愬煄" }], icon: { show: !0, src: a("69c0") }, text: { show: !0 }, bgImgSrc: a("dd57") } } } }, n = o, i = (a("f746"), a("2877")), l = Object(i["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, c5e0: function (e, t, a) { "use strict"; a.r(t); var r = a("4ee8"), s = a("9250"); for (var o in s) ["default"].indexOf(o) < 0 && function (e) { a.d(t, e, (function () { return s[e] })) }(o); var n = a("2877"), i = Object(n["a"])(s["default"], r["a"], r["b"], !1, null, "f0c7fe18", null); t["default"] = i.exports }, c67b: function (e, t, a) { }, c772: function (e, t, a) { "use strict"; a("f847") }, c880: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鎺堟潈鏁版嵁", width: 600, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "閫夋嫨鏈烘瀯", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-tree", { attrs: { checkable: "", "auto-expand-parent": e.autoExpandParent, "expanded-keys": e.expandedKeys, "tree-data": e.orgTreeData, "selected-keys": e.selectedKeys, replaceFields: e.replaceFields }, on: { expand: e.onExpand, select: e.onSelect }, model: { value: e.checkedKeys, callback: function (t) { e.checkedKeys = t }, expression: "checkedKeys" } })], 1)], 1)], 1)], 1) }, s = [], o = (a("159b"), a("d3b7"), a("25fa")), n = a("0901"), i = { data: function () { return { labelCol: { style: { "padding-right": "20px" }, xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, orgTreeData: [], expandedKeys: [], checkedKeys: [], visible: !1, confirmLoading: !1, formLoading: !0, autoExpandParent: !0, selectedKeys: [], userEntity: [], replaceFields: { key: "id" }, form: this.$form.createForm(this) } }, methods: { userOrg: function (e) { this.userEntity = e, this.visible = !0, this.getOrgTree(), this.sysUserOwnData(this.userEntity) }, getOrgTree: function () { var e = this; this.formLoading = !0, Object(o["c"])().then((function (t) { t.success && (e.orgTreeData = t.data, e.orgTreeData.forEach((function (t) { e.expandedKeys.push(t.id) }))) })) }, sysUserOwnData: function (e) { var t = this; Object(n["k"])({ id: e.id }).then((function (e) { e.success && (t.checkedKeys = e.data), t.formLoading = !1 })) }, onExpand: function (e) { this.expandedKeys = e, this.autoExpandParent = !1 }, onCheck: function (e) { this.checkedKeys = e }, onSelect: function (e, t) { this.selectedKeys = e }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : Object(n["h"])({ id: e.userEntity.id, grantOrgIdList: e.checkedKeys }).then((function (t) { t.success ? (e.$message.success("鎺堟潈鎴愬姛"), e.confirmLoading = !1, e.$emit("ok", a), e.handleCancel()) : e.$message.error("鎺堟潈澶辫触锛�" + JSON.stringify(t.message)) })).finally((function (t) { e.confirmLoading = !1 })) })) }, handleCancel: function () { this.form.resetFields(), this.checkedKeys = [], this.expandedKeys = [], this.visible = !1 } } }, l = i, c = a("2877"), d = Object(c["a"])(l, r, s, !1, null, null, null); t["default"] = d.exports }, c8d5: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "缂栬緫鑿滃崟", width: 1e3, visible: e.visible, confirmLoading: e.confirmLoading, destroyOnClose: !0 }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { directives: [{ name: "show", rawName: "v-show", value: !1, expression: "false" }] }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { label: "鑿滃崟鍚嶇О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, hasFeedback: "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, min: 1, message: "璇疯緭鍏ヨ彍鍗曞悕绉帮紒" }] }], expression: "['name',{rules: [{required: true, min: 1, message: '璇疯緭鍏ヨ彍鍗曞悕绉帮紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヨ彍鍗曞悕绉�" } })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { staticStyle: { width: "100%" }, attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鑿滃崟缂栧彿", hasFeedback: "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["code", { rules: [{ required: !0, min: 1, message: "璇疯緭鍏ヨ彍鍗曠紪鍙凤紒" }] }], expression: "['code', {rules: [{required: true, min: 1, message: '璇疯緭鍏ヨ彍鍗曠紪鍙凤紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヨ彍鍗曠紪鍙�" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎵�灞炲簲鐢�", "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["application", { rules: [{ required: !0, message: "璇烽�夋嫨搴旂敤鍒嗙被锛�" }] }], expression: "['application', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { disabled: e.appDisabled, placeholder: "璇烽�夋嫨搴旂敤鍒嗙被" } }, e._l(e.appData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code }, on: { click: function (a) { return e.changeApplication(t.code) } } }, [e._v(e._s(t.name))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鑿滃崟灞傜骇" } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["type", { rules: [{ required: !0, message: "璇烽�夋嫨鑿滃崟灞傜骇锛�" }] }], expression: "['type',{rules: [{ required: true, message: '璇烽�夋嫨鑿滃崟灞傜骇锛�' }]}]" }] }, e._l(e.typeData, (function (t, r) { return a("a-radio", { key: r, attrs: { value: t.code }, on: { click: function (a) { return e.meneTypeFunc(t.code) } } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("div", { directives: [{ name: "show", rawName: "v-show", value: e.pidShow, expression: "pidShow" }] }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鐖剁骇鑿滃崟", "has-feedback": "" } }, [a("a-tree-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["pid", { rules: [{ required: !0, message: "璇烽�夋嫨鐖剁骇鑿滃崟锛�" }] }], expression: "['pid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { dropdownStyle: { maxHeight: "300px", overflow: "auto" }, treeData: e.menuTreeData, placeholder: "璇烽�夋嫨鐖剁骇鑿滃崟", treeDefaultExpandAll: "" }, on: { change: e.setPid }, scopedSlots: e._u([{ key: "title", fn: function (t) { var r = t.id; return a("span", {}, [e._v(e._s(r) + " ")]) } }]) })], 1)], 1), a("div", { directives: [{ name: "show", rawName: "v-show", value: e.redirectShow, expression: "redirectShow" }] }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "濡傞渶鎵撳紑棣栭〉鍔犺浇姝ょ洰褰曚笅鑿滃崟锛岃濉啓鍔犺浇鑿滃崟璺敱锛岃涓洪椤靛悗鍏朵粬璁剧疆鐨勪富椤靛皢琚浛浠�" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 閲嶅畾鍚� ")], 1), a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["redirect"], expression: "['redirect']" }], attrs: { prop: "redirect", placeholder: "璇疯緭鍏ラ噸瀹氬悜鍦板潃" } })], 1)], 1)]), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "鎸夐挳锛氭棤锛岃彍鍗曪細鍐呴摼銆佸閾俱�佺粍浠�" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 鎵撳紑鏂瑰紡 ")], 1), a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["openType", { rules: [{ required: !0, message: "璇烽�夋嫨鎵撳紑鏂瑰紡锛�" }] }], expression: "['openType',{rules: [{ required: true, message: '璇烽�夋嫨鎵撳紑鏂瑰紡锛�' }]}]" }], attrs: { disabled: e.openTypeDisabled } }, e._l(e.openTypeData, (function (t, r) { return a("a-radio", { key: r, attrs: { value: t.code }, on: { click: function (a) { return e.meneOpenTypeFunc(t.code) } } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1)], 1), a("a-divider"), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("div", { directives: [{ name: "show", rawName: "v-show", value: e.componentShow, expression: "componentShow" }] }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, hasFeedback: "" } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "鍓嶇vue缁勪欢 views鏂囦欢澶逛笅璺緞锛屼緥锛歴ystem/menu/index銆傛敞锛氱洰褰曠骇濉啓锛歊outeView(涓嶅甫闈㈠寘灞�)锛孭ageView(甯﹂潰鍖呭睉)锛岃彍鍗曠骇鍐呴摼鎵撳紑http閾炬帴濉啓锛欼frame" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 鍓嶇缁勪欢 ")], 1), a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["component", { rules: [{ required: e.componentRequired, message: "璇疯緭鍏ュ墠绔粍浠�" }] }], expression: "['component',{rules: [{required: componentRequired, message: '璇疯緭鍏ュ墠绔粍浠�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ墠绔粍浠�", disabled: e.componentDisabled, prop: "component" } })], 1)], 1)]), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("div", { directives: [{ name: "show", rawName: "v-show", value: e.routerShow, expression: "routerShow" }] }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, hasFeedback: "" } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "娴忚鍣ㄦ樉绀虹殑URL锛屼緥锛�/menu锛屽搴旀墦寮�椤甸潰涓鸿彍鍗曢〉闈�" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 璺敱鍦板潃 ")], 1), a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["router", { rules: [{ required: e.routerRequired, message: "璇疯緭鍏ヨ矾鐢憋紒" }] }], expression: "['router', {rules: [{required: routerRequired, message: '璇疯緭鍏ヨ矾鐢憋紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヨ矾鐢�" } })], 1)], 1), a("div", { directives: [{ name: "show", rawName: "v-show", value: e.permissionShow, expression: "permissionShow" }] }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鏉冮檺鏍囪瘑", hasFeedback: "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["permission", { rules: [{ required: e.permissionRequired, message: "璇疯緭鍏ユ潈闄愭爣璇嗭紒" }] }], expression: "['permission', {rules: [{required: permissionRequired, message: '璇疯緭鍏ユ潈闄愭爣璇嗭紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ユ潈闄愭爣璇�" } })], 1)], 1)])], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("div", { directives: [{ name: "show", rawName: "v-show", value: e.linkShow, expression: "linkShow" }] }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, hasFeedback: "" } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "褰撻�夋嫨浜嗛渶瑕佸唴閾炬垨澶栭摼鎵撳紑鐨勯�夐」锛屾澶勮緭鍏ヨ鎵撳紑鐨勯摼鎺ュ湴鍧�锛屼緥锛歨ttps://www.dilon.vip" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 鍐呭閾惧湴鍧� ")], 1), a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["link", { rules: [{ required: e.linkRequired, message: "璇疯緭鍏ユ潈闄愭爣璇嗭紒" }] }], expression: "['link', {rules: [{required: linkRequired, message: '璇疯緭鍏ユ潈闄愭爣璇嗭紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ唴閾炬墦寮�鍦板潃", disabled: e.linkDisabled } })], 1)], 1)]), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("div", { directives: [{ name: "show", rawName: "v-show", value: e.iconShow, expression: "iconShow" }] }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鍥炬爣" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["icon"], expression: "['icon']" }], attrs: { placeholder: "璇烽�夋嫨鍥炬爣", disabled: "disabled" } }, [a("a-icon", { attrs: { slot: "addonAfter", type: "setting" }, on: { click: function (t) { return e.openIconSele() } }, slot: "addonAfter" })], 1)], 1)], 1)])], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("span", { attrs: { slot: "label" }, slot: "label" }, [a("a-tooltip", { attrs: { title: "绯荤粺鏉冮噸锛氳彍鍗曞彲鍒嗛厤缁欎换浣曡鑹诧紝涓氬姟鏉冮噸锛氳彍鍗曞瓒呯骇绠$悊鍛樹笉鍙" } }, [a("a-icon", { attrs: { type: "question-circle-o" } })], 1), e._v("聽 鏉冮噸 ")], 1), a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["weight"], expression: "['weight']" }] }, e._l(e.weightData, (function (t, r) { return a("a-radio", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.value))]) })), 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鏄惁鍙" } }, [a("a-switch", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["visible", { valuePropName: "checked" }], expression: "['visible', { valuePropName: 'checked' }]" }], attrs: { id: "visible", checkedChildren: "鏄�", unCheckedChildren: "鍚�" } })], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "鎺掑簭" } }, [a("a-input-number", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sort", { initialValue: 100 }], expression: "['sort', { initialValue: 100 }]" }], staticStyle: { width: "100%" }, attrs: { min: 1, max: 1e3 } })], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form-item", { attrs: { labelCol: e.labelCol, wrapperCol: e.wrapperCol, label: "澶囨敞", hasFeedback: "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["remark"], expression: "['remark']" }], attrs: { placeholder: "璇疯緭鍏ュ娉�" } })], 1)], 1)], 1)], 1)], 1), a("a-modal", { attrs: { width: 850, visible: e.visibleIcon, footer: "", mask: !1, closable: !1, destroyOnClose: !0 }, on: { cancel: e.handleCancelIcon } }, [a("icon-selector", { on: { change: e.handleIconChange }, model: { value: e.currentSelectedIcon, callback: function (t) { e.currentSelectedIcon = t }, expression: "currentSelectedIcon" } })], 1)], 1) }, s = [], o = (a("d3b7"), a("25f0"), a("b0c0"), a("9911"), a("4e82"), a("2316")), n = a("0bfe"), i = a("13bb"), l = a("126f"), c = { name: "MenuEdit", components: { IconSelector: i["a"] }, data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 6 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }, visibleIcon: !1, visible: !1, confirmLoading: !1, appData: [], menuTreeData: [], redirectShow: !0, componentShow: !0, componentDisabled: !1, componentRequired: !0, routerRequired: !0, routerShow: !0, iconShow: !0, openTypeShow: !0, pidShow: !0, permissionShow: !0, permissionRequired: !0, currentSelectedIcon: "pause-circle", typeData: [], openTypeData: [], weightData: [], formLoading: !0, linkShow: !0, openTypeDisabled: !1, openTypeDefault: [], openType: "", linkRequired: !0, linkDisabled: !1, type: "", pid: "", appDisabled: !1, form: this.$form.createForm(this) } }, watch: { pid: function (e) { this.appDisabled = "0" !== e } }, methods: { edit: function (e) { var t = this; this.visible = !0, this.getSysApplist(), this.sysDictTypeDropDown(), this.currentSelectedIcon = e.icon, this.form.getFieldDecorator("type", { valuePropName: "checked", initialValue: e.type.toString() }), this.meneTypeFunc(e.type.toString(), e.openType.toString()), "Y" == e.visible ? this.visibleDef = !0 : this.visibleDef = !1, this.form.getFieldDecorator("weight", { valuePropName: "checked", initialValue: e.weight.toString() }), this.form.getFieldDecorator("visible", { valuePropName: "checked", initialValue: this.visibleDef }), this.form.getFieldDecorator("icon", { initialValue: e.icon }), setTimeout((function () { t.setMenuItem(e), t.changeApplication(e.application) }), 100) }, setMenuItem: function (e) { this.form.setFieldsValue({ id: e.id, name: e.name, code: e.code, application: e.application, redirect: e.redirect, component: e.component, permission: e.permission, link: e.link, router: e.router, sort: e.sort, remark: e.remark }), this.form.getFieldDecorator("pid", { initialValue: e.pid }), this.pid = e.pid }, sysDictTypeDropDown: function () { var e = this; this.formLoading = !0, Object(l["d"])({ code: "menu_type" }).then((function (t) { e.typeData = t.data })), Object(l["d"])({ code: "menu_weight" }).then((function (t) { e.weightData = t.data })), Object(l["d"])({ code: "open_type" }).then((function (t) { e.openTypeData = t.data, e.formLoading = !1 })) }, setPid: function (e) { this.pid = e }, getSysApplist: function () { var e = this; return Object(o["a"])().then((function (t) { t.success ? e.appData = t.data : e.$message.warning(t.message) })) }, changeApplication: function (e) { var t = this; Object(n["c"])({ application: e }).then((function (e) { e.success ? (t.form.resetFields("pid", []), t.menuTreeData = [{ id: "-1", parentId: "0", title: "椤剁骇", value: "0", pid: "0", children: e.data }]) : t.$message.warning(e.message) })) }, meneTypeFunc: function (e, t) { this.type = e, "0" != e && "1" != e || (this.linkShow = !0, this.form.resetFields("link", []), this.iconShow = !0, this.routerRequired = !0, this.form.getFieldDecorator("router", { initialValue: "" }), this.routerShow = !0, this.permissionShow = !1, this.permissionRequired = !1, this.form.getFieldDecorator("permission", { initialValue: "" }), this.openType = t, this.form.getFieldDecorator("openType", { initialValue: this.openType }), this.openTypeDisabled = !1), "0" == e ? (this.redirectShow = !0, this.form.resetFields("redirect", []), this.componentShow = !0, this.componentDisabled = !1, this.form.getFieldDecorator("component", { initialValue: "PageView" }), this.componentRequired = !0, this.form.getFieldDecorator("pid", { initialValue: "0" }), this.pid = "0", this.pidShow = !1) : ("1" == e && (this.componentDisabled = !1, this.form.getFieldDecorator("component", { initialValue: "" })), this.redirectShow = !1, this.form.getFieldDecorator("redirect", { initialValue: "" }), this.pidShow = !0), "2" == e && (this.componentRequired = !1, this.componentDisabled = !0, this.form.resetFields("component", []), this.form.getFieldDecorator("component", { initialValue: "" }), this.routerRequired = !0, this.form.getFieldDecorator("router", { initialValue: "" }), this.routerShow = !1, this.linkShow = !1, this.form.getFieldDecorator("link", { initialValue: "" }), this.permissionShow = !0, this.permissionRequired = !0, this.form.getFieldDecorator("permission", { initialValue: "" }), this.iconShow = !1, this.form.getFieldDecorator("icon", { initialValue: "" }), this.openType = "0", this.form.getFieldDecorator("openType", { initialValue: this.openType }), this.openTypeDisabled = !0, this.form.getFieldDecorator("icon", { initialValue: "" })), this.meneOpenTypeFunc(this.openType) }, meneOpenTypeFunc: function (e) { this.form.resetFields("openType", e), "2" == e || "3" == e ? (!1 === this.linkDisabled && this.form.resetFields("link", []), this.linkDisabled = !1, this.linkRequired = !0) : (this.linkDisabled = !0, this.form.resetFields("link", []), this.linkRequired = !1), "3" == e ? (this.componentRequired = !1, this.componentDisabled = !0, this.form.resetFields("component", []), this.form.getFieldDecorator("component", { initialValue: "" })) : (this.componentRequired = !0, "1" == this.type || "2" == this.type ? this.form.getFieldDecorator("component", { initialValue: "" }) : (this.form.resetFields("component", []), this.form.getFieldDecorator("component", { initialValue: "PageView" })), "2" == e && (this.form.resetFields("component", []), this.form.getFieldDecorator("component", { initialValue: "Iframe" }))), "2" == this.type && "0" == e && (this.componentRequired = !1, this.routerRequired = !1) }, openIconSele: function () { this.visibleIcon = !0 }, handleIconChange: function (e) { this.form.getFieldDecorator("icon", { initialValue: e }), this.visibleIcon = !1 }, handleCancelIcon: function () { this.visibleIcon = !1 }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : (a.visible ? a.visible = "Y" : a.visible = "N", a.type = parseInt(a.type), a.openType = parseInt(a.openType), a.weight = parseInt(a.weight), Object(n["g"])(a).then((function (t) { e.confirmLoading = !1, t.success ? (e.$message.success("缂栬緫鎴愬姛"), e.$emit("ok", a), e.handleCancel()) : e.$message.error("缂栬緫澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 }))) })) }, handleCancel: function () { this.form.resetFields(), this.confirmLoading = !1, this.visible = !1 } } }, d = c, u = a("2877"), m = Object(u["a"])(d, r, s, !1, null, null, null); t["default"] = m.exports }, c8d8: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", [a("a-card", { attrs: { bordered: !1, bodyStyle: e.tstyle } }, [e.hasPerm("Car:page") ? a("div", { staticClass: "table-page-search-wrapper" }, [a("a-form", { attrs: { layout: "inline" } }, [a("a-row", { attrs: { gutter: 48 } }, [a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍚嶇О" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ュ悕绉�" }, model: { value: e.queryParam.carName, callback: function (t) { e.$set(e.queryParam, "carName", t) }, expression: "queryParam.carName" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("a-form-item", { attrs: { label: "鍙风爜" } }, [a("a-input", { attrs: { "allow-clear": "", placeholder: "璇疯緭鍏ュ彿鐮�" }, model: { value: e.queryParam.carNo, callback: function (t) { e.$set(e.queryParam, "carNo", t) }, expression: "queryParam.carNo" } })], 1)], 1), a("a-col", { attrs: { md: 8, sm: 24 } }, [a("span", { staticClass: "table-page-search-submitButtons" }, [a("a-button", { attrs: { type: "primary" }, on: { click: function (t) { return e.$refs.table.refresh(!0) } } }, [e._v("鏌ヨ")]), a("a-button", { staticStyle: { "margin-left": "8px" }, on: { click: function () { return e.queryParam = {} } } }, [e._v("閲嶇疆")])], 1)])], 1)], 1)], 1) : e._e()]), a("a-card", { attrs: { bordered: !1 } }, [a("s-table", { ref: "table", attrs: { columns: e.columns, data: e.loadData, alert: !0, rowKey: function (e) { return e.id }, rowSelection: { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "action", fn: function (t, r) { return a("span", {}, [e.hasPerm("Car:edit") ? a("a", { on: { click: function (t) { return e.$refs.editForm.edit(r) } } }, [e._v("缂栬緫")]) : e._e(), e.hasPerm("Car:edit") & e.hasPerm("Car:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("Car:delete") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "纭鍒犻櫎锛�" }, on: { confirm: function () { return e.CarDelete(r) } } }, [a("a", [e._v("鍒犻櫎")])]) : e._e()], 1) } }]) }, [e.hasPerm("Car:add") ? a("template", { staticClass: "table-operator", slot: "operator" }, [e.hasPerm("Car:add") ? a("a-button", { attrs: { type: "primary", icon: "plus" }, on: { click: function (t) { return e.$refs.addForm.add() } } }, [e._v("鏂板杞﹁締淇℃伅")]) : e._e()], 1) : e._e()], 2), a("add-form", { ref: "addForm", on: { ok: e.handleOk } }), a("edit-form", { ref: "editForm", on: { ok: e.handleOk } })], 1)], 1) }, s = [], o = a("2af9"), n = a("918e"), i = a("99c3"), l = a("7b51"), c = { components: { STable: o["r"], addForm: i["default"], editForm: l["default"] }, data: function () { var e = this; return { queryParam: {}, columns: [{ title: "鍚嶇О", align: "center", sorter: !0, dataIndex: "carName" }, { title: "鍙风爜", align: "center", sorter: !0, dataIndex: "carNo" }], tstyle: { "padding-bottom": "0px", "margin-bottom": "10px" }, loadData: function (t) { return Object(n["d"])(Object.assign(t, e.queryParam)).then((function (e) { return e.data })) }, selectedRowKeys: [], selectedRows: [] } }, created: function () { (this.hasPerm("Car:edit") || this.hasPerm("Car:delete")) && this.columns.push({ title: "鎿嶄綔", width: "150px", dataIndex: "action", scopedSlots: { customRender: "action" } }) }, methods: { switchingDate: function () { var e = JSON.parse(JSON.stringify(this.queryParam)); return e }, CarDelete: function (e) { var t = this; Object(n["b"])(e).then((function (e) { e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.$refs.table.refresh()) : t.$message.error("鍒犻櫎澶辫触") })) }, handleOk: function () { this.$refs.table.refresh() }, onSelectChange: function (e, t) { this.selectedRowKeys = e, this.selectedRows = t } } }, d = c, u = (a("5a6f"), a("2877")), m = Object(u["a"])(d, r, s, !1, null, null, null); t["default"] = m.exports }, cbd8: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "閫氱煡鍏憡璇︽儏", width: 1e3, confirmLoading: e.confirmLoading, visible: e.visible, footer: null }, on: { cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("div", { staticStyle: { "text-align": "center", "font-size": "30px" } }, [e._v(e._s(this.contentRecord.title))]), a("br"), a("div", { staticStyle: { "text-align": "right", "font-size": "10px" } }, [a("span", [e._v("锛堝彂甯冧汉锛�" + e._s(this.contentRecord.publicUserName) + "锛�")]), a("span", [e._v("鍙戝竷鏃堕棿锛�" + e._s(this.contentRecord.publicTime) + " ")])]), a("a-divider", { staticStyle: { "margin-top": "5px" } }), a("div", [a("label", { domProps: { innerHTML: e._s(this.contentRecord.content) } })])], 1)], 1) }, s = [], o = a("f0c4"), n = { name: "DetailForm", components: {}, data: function () { return { visible: !1, confirmLoading: !1, contentRecord: "" } }, methods: { detail: function (e) { this.confirmLoading = !1, this.visible = !0, this.sysNoticeDetail(e.id) }, sysNoticeDetail: function (e) { var t = this; Object(o["d"])({ id: e }).then((function (e) { t.confirmLoading = !1, t.contentRecord = e.data })) }, handleCancel: function () { this.visible = !1 } } }, i = n, l = (a("e665"), a("2877")), c = Object(l["a"])(i, r, s, !1, null, null, null); t["default"] = c.exports }, cc79: function (e, t, a) { }, d03f: function (e, t, a) { "use strict"; a("77e3") }, d264: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鐢ㄦ埛澧炲姞", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-divider", { attrs: { orientation: "left" } }, [e._v("鍩烘湰淇℃伅")]), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "璐﹀彿", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["account", { rules: [{ required: !0, min: 5, message: "璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑璐﹀彿锛�" }] }], expression: "['account', {rules: [{required: true, min: 5, message: '璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑璐﹀彿锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヨ处鍙�" } })], 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "濮撳悕", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ュ鍚嶏紒" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ュ鍚嶏紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ鍚�" } })], 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "瀵嗙爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["password", { rules: [{ required: !0, min: 5, message: "璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑瀵嗙爜锛�" }, { validator: e.validateToNextPassword }] }], expression: "['password', {rules: [{required: true, min: 5, message: '璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑瀵嗙爜锛�'},{\n                validator: validateToNextPassword,\n              },]}]" }], attrs: { placeholder: "璇疯緭鍏ュ瘑鐮�", type: "password" } })], 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "閲嶅瀵嗙爜", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["confirm", { rules: [{ required: !0, message: "璇峰啀娆¤緭鍏ュ瘑鐮侊紒" }, { validator: e.compareToFirstPassword }] }], expression: "['confirm', {rules: [{required: true, message: '璇峰啀娆¤緭鍏ュ瘑鐮侊紒'},\n                                                {\n                                                  validator: compareToFirstPassword,\n                                                }]}]" }], attrs: { placeholder: "璇峰啀娆¤緭鍏ュ瘑鐮�", type: "password" } })], 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鏄电О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["nickName"], expression: "['nickName']" }], attrs: { placeholder: "璇疯緭鍏ユ樀绉�" } })], 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鐢熸棩", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-date-picker", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["birthday"], expression: "['birthday']" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨鐢熸棩" }, on: { change: e.onChange } })], 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鎬у埆", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sex", { rules: [{ required: !0, message: "璇烽�夋嫨鎬у埆锛�" }] }], expression: "['sex',{rules: [{ required: true, message: '璇烽�夋嫨鎬у埆锛�' }]}]" }] }, [a("a-radio", { attrs: { value: 1 } }, [e._v("鐢�")]), a("a-radio", { attrs: { value: 2 } }, [e._v("濂�")])], 1)], 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "閭", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["email", { rules: [{ required: !0, message: "璇疯緭鍏ョ數瀛愰偖绠憋紒" }] }], expression: "['email',{rules: [{ required: true, message: '璇疯緭鍏ョ數瀛愰偖绠憋紒' }]}]" }], attrs: { placeholder: "璇疯緭鍏ラ偖绠�" } })], 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鎵嬫満鍙�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["phone", { rules: [{ required: !0, message: "璇疯緭鍏ユ墜鏈哄彿锛�" }] }], expression: "['phone',{rules: [{ required: true, message: '璇疯緭鍏ユ墜鏈哄彿锛�' }]}]" }], attrs: { placeholder: "璇疯緭鍏ユ墜鏈哄彿" } })], 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鐢佃瘽", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["tel"], expression: "['tel']" }], attrs: { placeholder: "璇疯緭鍏ョ數璇�" } })], 1)], 1)], 1)], 1), a("a-divider", { attrs: { orientation: "left" } }, [e._v("鍛樺伐淇℃伅")]), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鏈烘瀯", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-tree-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sysEmpParam.orgId", { rules: [{ required: !0, message: "璇烽�夋嫨鏈烘瀯锛�" }] }], expression: "['sysEmpParam.orgId', {rules: [{ required: true, message: '璇烽�夋嫨鏈烘瀯锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { dropdownStyle: { maxHeight: "300px", overflow: "auto" }, treeData: e.orgTree, placeholder: "璇烽�夋嫨鏈烘瀯", treeDefaultExpandAll: "" }, on: { change: function (t) { return e.initrOrgName(t) } }, scopedSlots: e._u([{ key: "title", fn: function (t) { var r = t.id; return a("span", {}, [e._v(e._s(r))]) } }]) })], 1), a("a-form-item", { directives: [{ name: "show", rawName: "v-show", value: !1, expression: "false" }] }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sysEmpParam.orgName"], expression: "['sysEmpParam.orgName']" }] })], 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "宸ュ彿", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sysEmpParam.jobNum"], expression: "['sysEmpParam.jobNum']" }], attrs: { placeholder: "璇疯緭鍏ュ伐鍙�" } })], 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 24, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鑱屼綅淇℃伅", labelCol: e.labelCol_JG, wrapperCol: e.wrapperCol_JG, "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sysEmpParam.posIdList", { rules: [{ required: !0, message: "璇烽�夋嫨鑱屼綅淇℃伅锛�" }] }], expression: "['sysEmpParam.posIdList', {rules: [{ required: true, message: '璇烽�夋嫨鑱屼綅淇℃伅锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { mode: "multiple", placeholder: "璇烽�夋嫨鑱屼綅淇℃伅" } }, e._l(e.posList, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.id } }, [e._v(e._s(t.name))]) })), 1)], 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 24, sm: 24 } }, [a("a-form-item", { attrs: { label: "闄勫睘淇℃伅:", labelCol: e.labelCol_JG, wrapperCol: e.wrapperCol_JG } }, [a("a-table", { attrs: { size: "middle", columns: e.columns, dataSource: e.data, pagination: !1, loading: e.memberLoading }, scopedSlots: e._u([e._l(["extOrgId", "extPosId"], (function (t, r) { return { key: t, fn: function (s, o) { return [0 == r ? [o.editable ? a("a-tree-select", { key: t, staticStyle: { width: "100%" }, attrs: { treeData: e.orgTree, placeholder: "璇烽�夋嫨闄勫睘鏈烘瀯", treeDefaultExpandAll: "" }, on: { change: function (a) { return e.handleChange(a, o.key, t) } }, scopedSlots: e._u([{ key: "title", fn: function (t) { var r = t.id; return a("span", {}, [e._v(e._s(r) + " ")]) } }], null, !0) }) : [e._v(e._s(o.extOrgName))]] : e._e(), 1 == r ? [o.editable ? a("a-select", { key: t, staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨闄勫睘鑱屼綅", "has-feedback": "" }, on: { change: function (a) { return e.handleChange(a, o.key, t) } } }, e._l(e.posList, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.id } }, [e._v(e._s(t.name))]) })), 1) : [e._v(e._s(o.extPosName))]] : e._e()] } } })), { key: "operation", fn: function (t, r) { return [a("a", { on: { click: function (t) { return e.remove(r.key) } } }, [e._v("鍒犻櫎")])] } }], null, !0) }), a("a-button", { staticStyle: { width: "100%", "margin-top": "16px", "margin-bottom": "8px" }, attrs: { type: "dashed", icon: "plus" }, on: { click: e.newMember } }, [e._v("澧炶")])], 1)], 1)], 1)], 1)], 1) }, s = [], o = a("2909"), n = (a("d3b7"), a("25f0"), a("4de4"), a("7db0"), a("b0c0"), a("159b"), a("0901")), i = a("25fa"), l = a("4cab"), c = a("c1df"), d = a.n(c), u = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 6 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }, labelCol_JG: { xs: { span: 24 }, sm: { span: 3 } }, wrapperCol_JG: { xs: { span: 24 }, sm: { span: 20 } }, count: 1, columns: [{ title: "闄勫睘鏈烘瀯", dataIndex: "extOrgId", width: "45%", scopedSlots: { customRender: "extOrgId" } }, { title: "闄勫睘宀椾綅", dataIndex: "extPosId", width: "45%", scopedSlots: { customRender: "extPosId" } }, { title: "鎿嶄綔", key: "action", scopedSlots: { customRender: "operation" } }], visible: !1, confirmLoading: !1, orgTree: [], orgList: [], posList: [], sysEmpParamExtList: [], memberLoading: !1, form: this.$form.createForm(this), data: [], birthdayString: [] } }, methods: { add: function () { this.visible = !0, this.getOrgDate(), this.getPosList() }, newMember: function () { var e = this.data.length; this.data.push({ key: 0 === e ? "1" : (parseInt(this.data[e - 1].key) + 1).toString(), extOrgId: "", extPosId: "", editable: !0, isNew: !0 }) }, remove: function (e) { var t = this.data.filter((function (t) { return t.key !== e })); this.data = t }, handleChange: function (e, t, a) { var r = Object(o["a"])(this.data), s = r.find((function (e) { return t === e.key })); s && (s[a] = e, this.data = r) }, getOrgDate: function () { var e = this; Object(i["c"])().then((function (t) { e.orgTree = t.data })), Object(i["a"])().then((function (t) { e.orgList = t.data })) }, getPosList: function () { var e = this; Object(l["d"])().then((function (t) { e.posList = t.data })) }, compareToFirstPassword: function (e, t, a) { var r = this.form; t && t !== r.getFieldValue("password") ? a("璇风‘璁や袱娆¤緭鍏ュ瘑鐮佺殑涓�鑷存�э紒") : a() }, validateToNextPassword: function (e, t, a) { var r = this.form; t && this.confirmDirty && r.validateFields(["confirm"], { force: !0 }), a() }, initrOrgName: function (e) { this.form.getFieldDecorator("sysEmpParam.orgName", { initialValue: this.orgList.find((function (t) { return e === t.id })).name }) }, JsonReconsitution: function () { var e = this; this.sysEmpParamExtList = []; var t = Object(o["a"])(this.data); t.forEach((function (t) { "" != t.extOrgId & "" != t.extPosId && e.sysEmpParamExtList.push({ orgId: t.extOrgId, posId: t.extPosId }) })) }, onChange: function (e, t) { this.birthdayString = null == e ? [] : d()(e).format("YYYY-MM-DD") }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : (e.JsonReconsitution(), a.sysEmpParam["extIds"] = e.sysEmpParamExtList, e.birthdayString.length > 0 && (a.birthday = e.birthdayString), Object(n["b"])(a).then((function (t) { t.success ? (e.$message.success("鏂板鎴愬姛"), e.confirmLoading = !1, e.$emit("ok", a), e.handleCancel()) : e.$message.error("鏂板澶辫触锛�" + JSON.stringify(t.message)) })).finally((function (t) { e.confirmLoading = !1 }))) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1, this.data = [], this.birthdayString = [] } } }, m = u, p = a("2877"), f = Object(p["a"])(m, r, s, !1, null, null, null); t["default"] = f.exports }, d3bc: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("page-view", { attrs: { avatar: e.avatar, title: !1 } }, [a("div", { attrs: { slot: "headerContent" }, slot: "headerContent" }, [a("div", { staticClass: "title" }, [e._v(e._s(e.timeFix) + "锛�" + e._s(e.user.name)), a("span", { staticClass: "welcome-text" }, [e._v("锛�" + e._s(e.welcome))])]), a("div", { staticStyle: { "margin-bottom": "10px" } }, [e._v("鍓嶇宸ョ▼甯� | 铓傝殎閲戞湇 - 鏌愭煇鏌愪簨涓氱兢 - VUE骞冲彴")])]), a("div", { attrs: { slot: "extra" }, slot: "extra" }, [a("a-row", { staticClass: "more-info" }, [a("a-col", { attrs: { span: 8 } }, [a("head-info", { attrs: { title: "椤圭洰", content: "56", center: !1, bordered: !1 } })], 1), a("a-col", { attrs: { span: 8 } }, [a("head-info", { attrs: { title: "鍥㈤槦鎺掑悕", content: "8/24", center: !1, bordered: !1 } })], 1), a("a-col", { attrs: { span: 8 } }, [a("head-info", { attrs: { title: "椤圭洰鏁�", content: "2,223", center: !1 } })], 1)], 1)], 1), a("div", [a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { xl: 16, lg: 24, md: 24, sm: 24, xs: 24 } }, [a("a-card", { staticClass: "project-list", staticStyle: { "margin-bottom": "24px" }, attrs: { loading: e.loading, bordered: !1, title: "杩涜涓殑椤圭洰", "body-style": { padding: 0 } } }, [a("a", { attrs: { slot: "extra" }, slot: "extra" }, [e._v("鍏ㄩ儴椤圭洰")]), a("div", e._l(e.projects, (function (t, r) { return a("a-card-grid", { key: r, staticClass: "project-card-grid" }, [a("a-card", { attrs: { bordered: !1, "body-style": { padding: 0 } } }, [a("a-card-meta", [a("div", { staticClass: "card-title", attrs: { slot: "title" }, slot: "title" }, [a("a-avatar", { attrs: { size: "small", src: t.cover } }), a("a", [e._v(e._s(t.title))])], 1), a("div", { staticClass: "card-description", attrs: { slot: "description" }, slot: "description" }, [e._v(" " + e._s(t.description) + " ")])]), a("div", { staticClass: "project-item" }, [a("a", { attrs: { href: "/#/" } }, [e._v("绉戝鎼爾缁�")]), a("span", { staticClass: "datetime" }, [e._v("9灏忔椂鍓�")])])], 1)], 1) })), 1)]), a("a-card", { attrs: { loading: e.loading, title: "鍔ㄦ��", bordered: !1 } }, [a("a-list", e._l(e.activities, (function (t, r) { return a("a-list-item", { key: r }, [a("a-list-item-meta", [a("a-avatar", { attrs: { slot: "avatar", src: t.user.avatar }, slot: "avatar" }), a("div", { attrs: { slot: "title" }, slot: "title" }, [a("span", [e._v(e._s(t.user.nickname))]), e._v("聽 鍦�"), a("a", { attrs: { href: "#" } }, [e._v(e._s(t.project.name))]), e._v("聽 "), a("span", [e._v(e._s(t.project.action))]), e._v("聽 "), a("a", { attrs: { href: "#" } }, [e._v(e._s(t.project.event))])]), a("div", { attrs: { slot: "description" }, slot: "description" }, [e._v(e._s(t.time))])], 1)], 1) })), 1)], 1)], 1), a("a-col", { staticStyle: { padding: "0 12px" }, attrs: { xl: 8, lg: 24, md: 24, sm: 24, xs: 24 } }, [a("a-card", { staticStyle: { "margin-bottom": "24px" }, attrs: { title: "蹇�熷紑濮� / 渚挎嵎瀵艰埅", bordered: !1, "body-style": { padding: 0 } } }, [a("div", { staticClass: "item-group" }, [a("a", [e._v("鎿嶄綔涓�")]), a("a", [e._v("鎿嶄綔浜�")]), a("a", [e._v("鎿嶄綔涓�")]), a("a", [e._v("鎿嶄綔鍥�")]), a("a", [e._v("鎿嶄綔浜�")]), a("a", [e._v("鎿嶄綔鍏�")]), a("a-button", { attrs: { size: "small", type: "primary", ghost: "", icon: "plus" } }, [e._v("娣诲姞")])], 1)]), a("a-card", { staticStyle: { "margin-bottom": "24px" }, attrs: { title: "XX 鎸囨暟", loading: e.radarLoading, bordered: !1, "body-style": { padding: 0 } } }, [a("div", { staticStyle: { "min-height": "400px" } }, [a("radar", { attrs: { data: e.radarData } })], 1)]), a("a-card", { attrs: { loading: e.loading, title: "鍥㈤槦", bordered: !1 } }, [a("div", { staticClass: "members" }, [a("a-row", e._l(e.teams, (function (t, r) { return a("a-col", { key: r, attrs: { span: 12 } }, [a("a", [a("a-avatar", { attrs: { size: "small", src: t.avatar } }), a("span", { staticClass: "member" }, [e._v(e._s(t.name))])], 1)]) })), 1)], 1)])], 1)], 1)], 1)]) }, s = [], o = a("5530"), n = a("ca00"), i = a("5880"), l = a("680a"), c = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "head-info", class: e.center && "center" }, [a("span", [e._v(e._s(e.title))]), a("p", [e._v(e._s(e.content))]), e.bordered ? a("em") : e._e()]) }, d = [], u = { name: "HeadInfo", props: { title: { type: String, default: "" }, content: { type: String, default: "" }, bordered: { type: Boolean, default: !1 }, center: { type: Boolean, default: !0 } } }, m = u, p = (a("5818"), a("2877")), f = Object(p["a"])(m, c, d, !1, null, "432d5786", null), h = f.exports, b = a("2af9"), v = a("7104"), g = { name: "Workplace", components: { PageView: l["d"], HeadInfo: h, Radar: b["o"] }, data: function () { return { timeFix: Object(n["c"])(), avatar: "", user: {}, projects: [], loading: !0, radarLoading: !0, activities: [], teams: [], axis1Opts: { dataKey: "item", line: null, tickLine: null, grid: { lineStyle: { lineDash: null }, hideFirstLine: !1 } }, axis2Opts: { dataKey: "score", line: null, tickLine: null, grid: { type: "polygon", lineStyle: { lineDash: null } } }, scale: [{ dataKey: "score", min: 0, max: 80 }], axisData: [{ item: "寮曠敤", a: 70, b: 30, c: 40 }, { item: "鍙g", a: 60, b: 70, c: 40 }, { item: "浜ч噺", a: 50, b: 60, c: 40 }, { item: "璐$尞", a: 40, b: 50, c: 40 }, { item: "鐑害", a: 60, b: 70, c: 40 }, { item: "寮曠敤", a: 70, b: 50, c: 40 }], radarData: [] } }, computed: Object(o["a"])(Object(o["a"])({}, Object(i["mapState"])({ nickname: function (e) { return e.user.nickname }, welcome: function (e) { return e.user.welcome } })), {}, { userInfo: function () { return this.$store.getters.userInfo } }), created: function () { this.user = this.userInfo, this.avatar = "http://localhost:5566/sysFileInfo/preview?id=" + this.userInfo.avatar }, mounted: function () { this.getProjects(), this.getActivity(), this.getTeams(), this.initRadar() }, methods: { getProjects: function () { this.projects = [{ id: 1, cover: "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png", title: "Alipay", description: "閭f槸涓�绉嶅唴鍦ㄧ殑涓滆タ锛� 浠栦滑鍒拌揪涓嶄簡锛屼篃鏃犳硶瑙﹀強鐨�", status: 1, updatedAt: "2018-07-26 00:00:00" }, { id: 2, cover: "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png", title: "Angular", description: "甯屾湜鏄竴涓ソ涓滆タ锛屼篃璁告槸鏈�濂界殑锛屽ソ涓滆タ鏄笉浼氭秷浜$殑", status: 1, updatedAt: "2018-07-26 00:00:00" }, { id: 3, cover: "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png", title: "Ant Design", description: "鍩庨晣涓湁閭d箞澶氱殑閰掗锛屽ス鍗村亸鍋忚蛋杩涗簡鎴戠殑閰掗", status: 1, updatedAt: "2018-07-26 00:00:00" }, { id: 4, cover: "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png", title: "Admin.NET", description: "閭f椂鍊欐垜鍙細鎯宠嚜宸辨兂瑕佷粈涔堬紝浠庝笉鎯宠嚜宸辨嫢鏈変粈涔�", status: 1, updatedAt: "2018-07-26 00:00:00" }, { id: 5, cover: "https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png", title: "Bootstrap", description: "鍑涘啲灏嗚嚦", status: 1, updatedAt: "2018-07-26 00:00:00" }, { id: 6, cover: "https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png", title: "Vue", description: "鐢熷懡灏卞儚涓�鐩掑阀鍏嬪姏锛岀粨鏋滃線寰�鍑轰汉鎰忔枡", status: 1, updatedAt: "2018-07-26 00:00:00" }], this.loading = !1 }, getActivity: function () { this.activities = [{ id: 1, user: { nickname: "@name", avatar: "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png" }, project: { name: "鐧介弓閰辨补寮�鍙戠粍", action: "鏇存柊", event: "鐣粍璁″垝" }, time: "2018-08-23 14:47:00" }, { id: 1, user: { nickname: "钃濊帗閰�", avatar: "https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png" }, project: { name: "鐧介弓閰辨补寮�鍙戠粍", action: "鏇存柊", event: "鐣粍璁″垝" }, time: "2018-08-23 09:35:37" }, { id: 1, user: { nickname: "@name", avatar: "@image(64x64)" }, project: { name: "鐧介弓閰辨补寮�鍙戠粍", action: "鍒涘缓", event: "鐣粍璁″垝" }, time: "2017-05-27 00:00:00" }, { id: 1, user: { nickname: "鏇蹭附涓�", avatar: "@image(64x64)" }, project: { name: "楂橀�兼牸璁捐澶╁洟", action: "鏇存柊", event: "鍏湀杩唬" }, time: "2018-08-23 14:47:00" }, { id: 1, user: { nickname: "@name", avatar: "@image(64x64)" }, project: { name: "楂橀�兼牸璁捐澶╁洟", action: "created", event: "鍏湀杩唬" }, time: "2018-08-23 14:47:00" }, { id: 1, user: { nickname: "鏇蹭附涓�", avatar: "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png" }, project: { name: "楂橀�兼牸璁捐澶╁洟", action: "created", event: "鍏湀杩唬" }, time: "2018-08-23 14:47:00" }] }, getTeams: function () { this.teams = [{ id: 1, name: "绉戝鎼爾缁�", avatar: "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png" }, { id: 2, name: "绋嬪簭鍛樻棩甯�", avatar: "https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png" }, { id: 1, name: "璁捐澶╁洟", avatar: "https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png" }, { id: 1, name: "涓簩灏戝コ鍥�", avatar: "https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png" }, { id: 1, name: "楠椾綘瀛﹁绠楁満", avatar: "https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png" }] }, initRadar: function () { this.radarLoading = !0; var e = (new v.View).source([{ item: "寮曠敤", "涓汉": 70, "鍥㈤槦": 30, "閮ㄩ棬": 40 }, { item: "鍙g", "涓汉": 60, "鍥㈤槦": 70, "閮ㄩ棬": 40 }, { item: "浜ч噺", "涓汉": 50, "鍥㈤槦": 60, "閮ㄩ棬": 40 }, { item: "璐$尞", "涓汉": 40, "鍥㈤槦": 50, "閮ㄩ棬": 40 }, { item: "鐑害", "涓汉": 60, "鍥㈤槦": 70, "閮ㄩ棬": 40 }, { item: "寮曠敤", "涓汉": 70, "鍥㈤槦": 50, "閮ㄩ棬": 40 }]); e.transform({ type: "fold", fields: ["涓汉", "鍥㈤槦", "閮ㄩ棬"], key: "user", value: "score" }), this.radarData = e.rows, this.radarLoading = !1 } } }, y = g, w = (a("0343"), Object(p["a"])(y, r, s, !1, null, "bc6946c6", null)); t["default"] = w.exports }, d6a3: function (e, t, a) { "use strict"; a("50e7") }, d751: function (e, t, a) { }, d9a80: function (e, t, a) { "use strict"; a("63c9") }, dbc3: function (e, t, a) { }, dbf4: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "right3" }, [a("div", { staticClass: "lc1-header" }, [e._v(" 搴婁綅鎯呭喌 "), a("dv-decoration-3", { staticStyle: { width: "200px", height: "20px" } })], 1), a("dv-capsule-chart", { staticClass: "lc1-chart", attrs: { config: e.config } })], 1) }, s = [], o = { name: "Right3", data: function () { return { config: { data: [{ name: "浣跨敤", value: 3e3 }, { name: "绌洪棽", value: 1e3 }, { name: "棰勭害", value: 5e3 }, { name: "鍖呮埧", value: 200 }, { name: "鍏朵粬", value: 1e3 }], colors: ["#00baff", "#3de7c9", "#ffc530", "#FA3600", "#44934b"], showValue: !0, unit: "寮�" } } } }, n = o, i = (a("7ea9"), a("2877")), l = Object(i["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, dd26: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "account-settings-info-view" }, [a("a-row", { attrs: { gutter: 16 } }, [a("a-col", { attrs: { md: 24, lg: 16 } }, [a("a-form", { attrs: { layout: "vertical", form: e.form } }, [a("a-form-item", { attrs: { label: "鏄电О" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["nickName"], expression: "['nickName']" }], attrs: { placeholder: "缁欒嚜宸辫捣涓樀绉板惂" } })], 1), a("a-form-item", { attrs: { label: "鐢熸棩" } }, [a("a-date-picker", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["birthday", { rules: [{ required: !0, message: "璇烽�夋嫨鐢熸棩锛�" }] }], expression: "['birthday', {rules: [{required: true, message: '璇烽�夋嫨鐢熸棩锛�'}]}]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨鐢熸棩" }, on: { change: e.onChange } })], 1), a("a-form-item", { attrs: { label: "鎬у埆" } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sex", { rules: [{ required: !0, message: "璇烽�夋嫨鎬у埆锛�" }] }], expression: "['sex',{rules: [{ required: true, message: '璇烽�夋嫨鎬у埆锛�' }]}]" }] }, e._l(e.sexData, (function (t, r) { return a("a-radio", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.name))]) })), 1)], 1), a("a-form-item", { attrs: { label: "鎵嬫満" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["phone", { rules: [{ required: !0, message: "璇疯緭鍏ユ墜鏈哄彿锛�" }] }], expression: "['phone', {rules: [{required: true, message: '璇疯緭鍏ユ墜鏈哄彿锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ユ墜鏈哄彿" } })], 1), a("a-form-item", { attrs: { label: "鐢佃瘽" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["tel"], expression: "['tel']" }], attrs: { placeholder: "璇疯緭鍏ョ數璇�" } })], 1), a("a-form-item", { attrs: { label: "鐢靛瓙閭欢" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["email", { type: "email", message: "璇疯緭鍏ユ纭殑閭鍙�", rules: [{ required: !0, message: "璇疯緭鍏ユ纭殑閭鍙凤紒" }] }], expression: "['email', {type: 'email',message: '璇疯緭鍏ユ纭殑閭鍙�',rules: [{required: true, message: '璇疯緭鍏ユ纭殑閭鍙凤紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ョ數瀛愰偖浠跺湴鍧�" } })], 1), a("a-form-item", [a("a-button", { attrs: { type: "primary" }, on: { click: e.submitUserInfo } }, [e._v("鏇存柊鍩烘湰淇℃伅")])], 1)], 1)], 1), a("a-col", { style: { minHeight: "180px" }, attrs: { md: 24, lg: 8 } }, [a("div", { staticClass: "ant-upload-preview", on: { click: function (t) { return e.$refs.modal.edit(e.userInfo.id) } } }, [a("a-icon", { staticClass: "upload-icon", attrs: { type: "cloud-upload-o" } }), a("div", { staticClass: "mask" }, [a("a-icon", { attrs: { type: "plus" } })], 1), a("img", { attrs: { src: e.option.img } })], 1)])], 1), a("avatar-modal", { ref: "modal", on: { ok: e.setavatar } })], 1) }, s = [], o = a("5530"), n = (a("d3b7"), a("25f0"), a("3ca3"), a("ddb0"), a("2b3d"), a("4360")), i = a("5e4e"), l = a("5880"), c = a("c1df"), d = a.n(c), u = a("0901"), m = a("6597"), p = { components: { AvatarModal: i["default"] }, data: function () { return { preview: {}, form: this.$form.createForm(this), sexData: [], option: { img: null, info: !0, size: 1, outputType: "jpeg", canScale: !1, autoCrop: !0, autoCropWidth: 180, autoCropHeight: 180, fixedBox: !0, fixed: !0, fixedNumber: [1, 1], birthdayString: "" } } }, computed: Object(o["a"])({}, Object(l["mapGetters"])(["userInfo"])), mounted: function () { this.initUserInfo() }, methods: { initUserInfo: function () { var e = this; setTimeout((function () { e.form.setFieldsValue({ birthday: d()(e.userInfo.birthday, "YYYY-MM-DD"), nickName: e.userInfo.nickName, sex: e.userInfo.sex.toString(), email: e.userInfo.email, phone: e.userInfo.phone, tel: e.userInfo.tel }), e.birthdayString = d()(e.userInfo.birthday).format("YYYY-MM-DD"), null != e.userInfo.avatar ? Object(m["d"])({ id: e.userInfo.avatar }).then((function (t) { e.option.img = window.URL.createObjectURL(new Blob([t])) })).catch((function (t) { e.$message.error("棰勮閿欒锛�" + t.message) })) : e.option.img = "/avatar2.jpg", e.getSexData() }), 100) }, onChange: function (e, t) { this.birthdayString = t }, submitUserInfo: function () { var e = this, t = this.form.validateFields; t((function (t, a) { t || (a.birthday = e.birthdayString, a.id = e.userInfo.id, Object(u["p"])(a).then((function (t) { t.success ? (e.$message.success("涓汉淇℃伅鏇存柊鎴愬姛"), n["a"].dispatch("GetInfo").then((function () { }))) : e.$message.error(JSON.stringify(t.message)) }))) })) }, getSexData: function () { this.sexData = this.$options.filters["dictData"]("sex") }, setavatar: function (e) { var t = this; Object(m["d"])({ id: e }).then((function (e) { t.option.img = window.URL.createObjectURL(new Blob([e])) })).catch((function (e) { t.$message.error("棰勮閿欒锛�" + e.message) })), n["a"].dispatch("GetInfo").then((function () { })) } } }, f = p, h = (a("06e5"), a("2877")), b = Object(h["a"])(f, r, s, !1, null, "49f8567c", null); t["default"] = b.exports }, dd46: function (e, t, a) { }, dd57: function (e, t, a) { e.exports = a.p + "img/map2.48889afd.png" }, de3b: function (e, t, a) { "use strict"; a("7389") }, dfe2: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("div", { staticClass: "right2" }, [a("div", { staticClass: "chart-name" }, [e._v(" 鑰佷汉绫诲瀷 "), a("dv-decoration-1", { staticStyle: { width: "200px", height: "20px" } })], 1), a("dv-conical-column-chart", { attrs: { config: e.config } })], 1) }, s = [], o = { name: "Right2", data: function () { return { config: { data: [{ name: "涓変簲鑰佷汉", value: 3500 }, { name: "浜斾繚鑰佷汉", value: 2500 }, { name: "绀句細浠e吇", value: 2e3 }, { name: "鍏朵粬", value: 1e3 }], img: [], showValue: !0 } } } }, n = o, i = (a("4237"), a("2877")), l = Object(i["a"])(n, r, s, !1, null, null, null); t["default"] = l.exports }, e09f: function (e, t, a) { }, e35e: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "鎺堟潈鏁版嵁", width: 600, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.formLoading } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鎺堟潈鑼冨洿", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["dataScopeType", { rules: [{ required: !0, message: "璇烽�夋嫨鎺堟潈鑼冨洿锛�" }] }], expression: "['dataScopeType', {rules: [{ required: true, message: '璇烽�夋嫨鎺堟潈鑼冨洿锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨鎺堟潈鑼冨洿" } }, e._l(e.dataScopeTypeData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code }, on: { click: function (a) { return e.handleChange(t.code) } } }, [e._v(e._s(t.value))]) })), 1)], 1), a("div", { directives: [{ name: "show", rawName: "v-show", value: e.orgTreeShow, expression: "orgTreeShow" }] }, [a("a-form-item", { attrs: { label: "閫夋嫨鏈烘瀯", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-tree", { attrs: { checkable: "", checkStrictly: "", "auto-expand-parent": e.autoExpandParent, "expanded-keys": e.expandedKeys, "tree-data": e.orgTreeData, "selected-keys": e.selectedKeys, replaceFields: e.replaceFields }, on: { expand: e.onExpand, select: e.onSelect }, model: { value: e.checkedKeys, callback: function (t) { e.checkedKeys = t }, expression: "checkedKeys" } })], 1)], 1)], 1)], 1)], 1) }, s = [], o = (a("d3b7"), a("25f0"), a("159b"), a("25fa")), n = a("a240"), i = a("126f"), l = { data: function () { return { labelCol: { style: { "padding-right": "20px" }, xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 15 } }, orgTreeData: [], expandedKeys: [], checkedKeys: [], visible: !1, confirmLoading: !1, formLoading: !0, autoExpandParent: !0, selectedKeys: [], subValues: [], roleEntity: [], dataScopeTypeData: [], orgTreeShow: !1, replaceFields: { key: "id" }, form: this.$form.createForm(this) } }, methods: { roleOrg: function (e) { this.roleEntity = e, this.visible = !0, this.formLoading = !0, this.sysDictTypeDropDown(), this.form.getFieldDecorator("dataScopeType", { initialValue: e.dataScopeType.toString() }), this.handleChange(e.dataScopeType) }, sysDictTypeDropDown: function () { var e = this; Object(i["d"])({ code: "data_scope_type" }).then((function (t) { e.dataScopeTypeData = t.data, e.formLoading = !1 })) }, handleChange: function (e) { "5" == e ? (this.formLoading = !0, this.orgTreeShow = !0, this.getOrgTree(), this.sysRoleOwnData(this.roleEntity)) : (this.orgTreeShow = !1, this.checkedKeys = []) }, getOrgTree: function () { var e = this; Object(o["c"])().then((function (t) { t.success && (e.orgTreeData = t.data, e.orgTreeData.forEach((function (t) { e.expandedKeys.push(t.id) }))) })) }, sysRoleOwnData: function (e) { var t = this; Object(n["g"])({ id: e.id }).then((function (e) { e.success && (t.checkedKeys = e.data), t.formLoading = !1 })) }, onExpand: function (e) { this.expandedKeys = e, this.autoExpandParent = !1 }, onCheck: function (e) { this.checkedKeys = e }, onSelect: function (e, t) { this.selectedKeys = e }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { if (t) e.confirmLoading = !1; else { var r = void 0 === e.checkedKeys.checked ? e.checkedKeys : e.checkedKeys.checked; Object(n["e"])({ id: e.roleEntity.id, grantOrgIdList: r, dataScopeType: a.dataScopeType }).then((function (t) { e.confirmLoading = !1, t.success ? (e.$message.success("鎺堟潈鎴愬姛"), e.$emit("ok", a), e.handleCancel()) : e.$message.error("鎺堟潈澶辫触锛�" + t.message) })).finally((function (t) { e.confirmLoading = !1 })) } })) }, handleCancel: function () { this.form.resetFields(), this.checkedKeys = [], this.expandedKeys = [], this.visible = !1, this.orgTreeShow = !1 } } }, c = l, d = a("2877"), u = Object(d["a"])(c, r, s, !1, null, null, null); t["default"] = u.exports }, e384: function (e, t, a) { "use strict"; a("f625") }, e665: function (e, t, a) { "use strict"; a("9afd") }, e77e: function (e, t, a) { }, e949: function (e, t, a) { }, e99d: function (e, t, a) { "use strict"; a("730d") }, ee23: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-card", { directives: [{ name: "show", rawName: "v-show", value: e.indexConfigShow, expression: "indexConfigShow" }], attrs: { bordered: !1 } }, [a("div", { staticClass: "table-operator" }, [a("a-button", { staticClass: "but_item", attrs: { type: "dashed", icon: "rollback" }, on: { click: e.handleCancel } }, [e._v("杩斿洖")]), a("a-button", { attrs: { type: "primary", icon: "plus" }, on: { click: e.handleSubmit } }, [e._v("淇濆瓨")])], 1), a("a-table", { ref: "table", attrs: { size: "middle", columns: e.columns, dataSource: e.loadData, pagination: !1, alert: !0, loading: e.tableLoading, rowKey: function (e) { return e.id } }, scopedSlots: e._u([{ key: "columnComment", fn: function (t, r) { return [a("a-input", { model: { value: r.columnComment, callback: function (t) { e.$set(r, "columnComment", t) }, expression: "record.columnComment" } })] } }, { key: "effectType", fn: function (t, r) { return [a("a-select", { staticStyle: { width: "100%" }, attrs: { disabled: e.judgeColumns(r) }, on: { change: function (t) { return e.effectTypeChange(r, t) } }, model: { value: r.effectType, callback: function (t) { e.$set(r, "effectType", t) }, expression: "record.effectType" } }, e._l(e.effectTypeData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.name))]) })), 1)] } }, { key: "dictTypeCode", fn: function (t, r) { return [a("a-select", { staticStyle: { width: "100%" }, attrs: { disabled: "radio" !== r.effectType && "select" !== r.effectType && "checkbox" !== r.effectType }, model: { value: r.dictTypeCode, callback: function (t) { e.$set(r, "dictTypeCode", t) }, expression: "record.dictTypeCode" } }, e._l(e.dictDataAll, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.name))]) })), 1)] } }, { key: "whetherTable", fn: function (t, r) { return [a("a-checkbox", { model: { value: r.whetherTable, callback: function (t) { e.$set(r, "whetherTable", t) }, expression: "record.whetherTable" } })] } }, { key: "whetherOrderBy", fn: function (t, r) { return [a("a-checkbox", { model: { value: r.whetherOrderBy, callback: function (t) { e.$set(r, "whetherOrderBy", t) }, expression: "record.whetherOrderBy" } })] } }, { key: "whetherRetract", fn: function (t, r) { return [a("a-checkbox", { model: { value: r.whetherRetract, callback: function (t) { e.$set(r, "whetherRetract", t) }, expression: "record.whetherRetract" } })] } }, { key: "whetherAddUpdate", fn: function (t, r) { return [a("a-checkbox", { attrs: { disabled: e.judgeColumns(r) }, model: { value: r.whetherAddUpdate, callback: function (t) { e.$set(r, "whetherAddUpdate", t) }, expression: "record.whetherAddUpdate" } })] } }, { key: "whetherRequired", fn: function (t, r) { return [a("a-checkbox", { attrs: { disabled: e.judgeColumns(r) }, model: { value: r.whetherRequired, callback: function (t) { e.$set(r, "whetherRequired", t) }, expression: "record.whetherRequired" } })] } }, { key: "queryWhether", fn: function (t, r) { return [a("a-switch", { model: { value: r.queryWhether, callback: function (t) { e.$set(r, "queryWhether", t) }, expression: "record.queryWhether" } }, [a("a-icon", { attrs: { slot: "checkedChildren", type: "check" }, slot: "checkedChildren" }), a("a-icon", { attrs: { slot: "unCheckedChildren", type: "close" }, slot: "unCheckedChildren" })], 1)] } }, { key: "queryType", fn: function (t, r) { return [a("a-select", { staticStyle: { width: "100px" }, attrs: { disabled: !r.queryWhether }, model: { value: r.queryType, callback: function (t) { e.$set(r, "queryType", t) }, expression: "record.queryType" } }, e._l(e.codeGenQueryTypeData, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.code } }, [e._v(e._s(t.name))]) })), 1)] } }]) }), a("fk-modal", { ref: "fkModal" })], 1) }, s = [], o = (a("159b"), a("b775")); function n(e) { return Object(o["b"])({ url: "/sysCodeGenerateConfig/list", method: "get", params: e }) } function i(e) { return Object(o["b"])({ url: "/sysCodeGenerateConfig/edit", method: "post", data: e }) } var l = a("79e7"), c = { components: { fkModal: l["default"] }, data: function () { return { columns: [{ title: "瀛楁", dataIndex: "columnName" }, { title: "鎻忚堪", dataIndex: "columnComment", scopedSlots: { customRender: "columnComment" } }, { title: "绫诲瀷", dataIndex: "netType" }, { title: "浣滅敤绫诲瀷", dataIndex: "effectType", scopedSlots: { customRender: "effectType" } }, { title: "瀛楀吀", width: "200px", dataIndex: "dictTypeCode", scopedSlots: { customRender: "dictTypeCode" } }, { title: "鍒楄〃鏄剧ず", align: "center", dataIndex: "whetherTable", scopedSlots: { customRender: "whetherTable" } }, { title: "鎺掑簭", align: "center", dataIndex: "whetherOrderBy", scopedSlots: { customRender: "whetherOrderBy" } }, { title: "澧炴敼", align: "center", dataIndex: "whetherAddUpdate", scopedSlots: { customRender: "whetherAddUpdate" } }, { title: "蹇呭~", align: "center", dataIndex: "whetherRequired", scopedSlots: { customRender: "whetherRequired" } }, { title: "鏄惁鏄煡璇�", align: "center", dataIndex: "queryWhether", scopedSlots: { customRender: "queryWhether" } }, { title: "鏌ヨ鏂瑰紡", dataIndex: "queryType", scopedSlots: { customRender: "queryType" } }], indexConfigShow: !1, tableLoading: !1, visible: !1, loadData: [], netTypeData: [], effectTypeData: [], dictDataAll: [], codeGenQueryTypeData: [], yesOrNoData: [] } }, methods: { open: function (e) { var t = this; this.indexConfigShow = !0, this.tableLoading = !0; var a = this.$options; this.netTypeData = a.filters["dictData"]("code_gen_net_type"), this.effectTypeData = a.filters["dictData"]("code_gen_effect_type"), this.dictDataAll = a.filters["dictDataAll"](), this.yesOrNoData = a.filters["dictData"]("yes_or_no"), this.codeGenQueryTypeData = a.filters["dictData"]("code_gen_query_type"); var r = { codeGenId: e.id }; n(r).then((function (e) { t.loadData = e.data, t.loadData.forEach((function (e) { for (var t in e) "Y" === e[t] && (e[t] = !0), "N" === e[t] && (e[t] = !1); "tenantId" === e.columnName && (e.whetherTable = !1, e.whetherOrderBy = !1, e.whetherAddUpdate = !1, e.queryWhether = !1) })), t.tableLoading = !1 })) }, handleSubmit: function () { var e = this; this.tableLoading = !0; var t = JSON.parse(JSON.stringify(this.loadData)); t.forEach((function (e) { for (var t in e) !0 === e[t] && (e[t] = "Y"), !1 === e[t] && (e[t] = "N") })), i(t).then((function (t) { e.tableLoading = !1, t.success ? (e.$message.success("缂栬緫鎴愬姛"), e.handleCancel()) : e.$message.error("缂栬緫澶辫触锛�" + t.message) })) }, judgeColumns: function (e) { return e.columnName.indexOf("createdUserName") > -1 || e.columnName.indexOf("createdTime") > -1 || e.columnName.indexOf("updatedUserName") > -1 || e.columnName.indexOf("updatedTime") > -1 || "True" === e.columnKey }, effectTypeChange: function (e, t) { "fk" === t && this.$refs.fkModal.show(e) }, handleCancel: function () { this.$emit("ok"), this.loadData = [], this.indexConfigShow = !1 } } }, d = c, u = a("2877"), m = Object(u["a"])(d, r, s, !1, null, null, null); t["default"] = m.exports }, ef60: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-modal", { attrs: { title: "缂栬緫鐢ㄦ埛", width: 900, visible: e.visible, confirmLoading: e.confirmLoading }, on: { ok: e.handleSubmit, cancel: e.handleCancel } }, [a("a-spin", { attrs: { spinning: e.confirmLoading } }, [a("a-divider", { attrs: { orientation: "left" } }, [e._v("鍩烘湰淇℃伅")]), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { staticStyle: { display: "none" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["id"], expression: "['id']" }] })], 1), a("a-form-item", { attrs: { label: "璐﹀彿", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["account", { rules: [{ required: !0, min: 5, message: "璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑璐﹀彿锛�" }] }], expression: "['account', {rules: [{required: true, min: 5, message: '璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑璐﹀彿锛�'}]}]" }], attrs: { placeholder: "璇疯緭鍏ヨ处鍙�" } })], 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "濮撳悕", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["name", { rules: [{ required: !0, message: "璇疯緭鍏ュ鍚嶏紒" }] }], expression: "['name', {rules: [{required: true, message: '璇疯緭鍏ュ鍚嶏紒'}]}]" }], attrs: { placeholder: "璇疯緭鍏ュ鍚�" } })], 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鏄电О", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["nickName"], expression: "['nickName']" }], attrs: { placeholder: "璇疯緭鍏ユ樀绉�" } })], 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鐢熸棩", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-date-picker", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["birthday"], expression: "['birthday']" }], staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨鐢熸棩" }, on: { change: e.onChange } })], 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鎬у埆", labelCol: e.labelCol, wrapperCol: e.wrapperCol } }, [a("a-radio-group", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sex", { rules: [{ required: !0, message: "璇烽�夋嫨鎬у埆锛�" }] }], expression: "['sex',{rules: [{ required: true, message: '璇烽�夋嫨鎬у埆锛�' }]}]" }] }, [a("a-radio", { attrs: { value: 1 } }, [e._v("鐢�")]), a("a-radio", { attrs: { value: 2 } }, [e._v("濂�")])], 1)], 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "閭", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["email", { rules: [{ required: !0, message: "璇疯緭鍏ョ數瀛愰偖绠憋紒" }] }], expression: "['email',{rules: [{ required: true, message: '璇疯緭鍏ョ數瀛愰偖绠憋紒' }]}]" }], attrs: { placeholder: "璇疯緭鍏ラ偖绠�" } })], 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鎵嬫満鍙�", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["phone", { rules: [{ required: !0, message: "璇疯緭鍏ユ墜鏈哄彿锛�" }] }], expression: "['phone',{rules: [{ required: true, message: '璇疯緭鍏ユ墜鏈哄彿锛�' }]}]" }], attrs: { placeholder: "璇疯緭鍏ユ墜鏈哄彿" } })], 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鐢佃瘽", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["tel"], expression: "['tel']" }], attrs: { placeholder: "璇疯緭鍏ョ數璇�" } })], 1)], 1)], 1)], 1), a("a-divider", { attrs: { orientation: "left" } }, [e._v("鍛樺伐淇℃伅")]), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鏈烘瀯", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-tree-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sysEmpParam.orgId", { rules: [{ required: !0, message: "璇烽�夋嫨鏈烘瀯锛�" }] }], expression: "['sysEmpParam.orgId', {rules: [{ required: true, message: '璇烽�夋嫨鏈烘瀯锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { dropdownStyle: { maxHeight: "300px", overflow: "auto" }, treeData: e.orgTree, placeholder: "璇烽�夋嫨鏈烘瀯", treeDefaultExpandAll: "" }, on: { change: function (t) { return e.initrOrgName(t) } }, scopedSlots: e._u([{ key: "title", fn: function (t) { var r = t.id; return a("span", {}, [e._v(e._s(r))]) } }]) })], 1), a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { directives: [{ name: "show", rawName: "v-show", value: !1, expression: "false" }] }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sysEmpParam.orgName"], expression: "['sysEmpParam.orgName']" }] })], 1)], 1)], 1)], 1), a("a-col", { attrs: { md: 12, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "宸ュ彿", labelCol: e.labelCol, wrapperCol: e.wrapperCol, "has-feedback": "" } }, [a("a-input", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sysEmpParam.jobNum"], expression: "['sysEmpParam.jobNum']" }], attrs: { placeholder: "璇疯緭鍏ュ伐鍙�" } })], 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 24, sm: 24 } }, [a("a-form", { attrs: { form: e.form } }, [a("a-form-item", { attrs: { label: "鑱屼綅淇℃伅", labelCol: e.labelCol_JG, wrapperCol: e.wrapperCol_JG, "has-feedback": "" } }, [a("a-select", { directives: [{ name: "decorator", rawName: "v-decorator", value: ["sysEmpParam.posIdList", { rules: [{ required: !0, message: "璇烽�夋嫨鑱屼綅淇℃伅锛�" }] }], expression: "['sysEmpParam.posIdList', {rules: [{ required: true, message: '璇烽�夋嫨鑱屼綅淇℃伅锛�' }]}]" }], staticStyle: { width: "100%" }, attrs: { mode: "multiple", placeholder: "璇烽�夋嫨鑱屼綅淇℃伅" } }, e._l(e.posList, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.id } }, [e._v(e._s(t.name))]) })), 1)], 1)], 1)], 1)], 1), a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { attrs: { md: 24, sm: 24 } }, [a("a-form-item", { attrs: { label: "闄勫睘淇℃伅:", labelCol: e.labelCol_JG, wrapperCol: e.wrapperCol_JG } }, [a("a-table", { attrs: { size: "middle", columns: e.columns, dataSource: e.data, pagination: !1, loading: e.memberLoading }, scopedSlots: e._u([e._l(["extOrgId", "extPosId"], (function (t, r) { return { key: t, fn: function (s, o) { return [0 == r ? ["" != o.extOrgId ? [a("a-tree-select", { key: t, staticStyle: { width: "100%" }, attrs: { treeData: e.orgTree, placeholder: "璇烽�夋嫨闄勫睘鏈烘瀯", defaultValue: o.extOrgId, treeDefaultExpandAll: "" }, on: { change: function (a) { return e.handleChange(a, o.key, t) } }, scopedSlots: e._u([{ key: "title", fn: function (t) { var r = t.id; return a("span", {}, [e._v(e._s(r))]) } }], null, !0) })] : [a("a-tree-select", { key: t, staticStyle: { width: "100%" }, attrs: { treeData: e.orgTree, placeholder: "璇烽�夋嫨闄勫睘鏈烘瀯", treeDefaultExpandAll: "" }, on: { change: function (a) { return e.handleChange(a, o.key, t) } }, scopedSlots: e._u([{ key: "title", fn: function (t) { var r = t.id; return a("span", {}, [e._v(e._s(r))]) } }], null, !0) })]] : e._e(), 1 == r ? ["" != o.extOrgId ? [a("a-select", { key: t, staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨闄勫睘鑱屼綅", "default-value": o.extPosId, "has-feedback": "" }, on: { change: function (a) { return e.handleChange(a, o.key, t) } } }, [e._v(" // eslint-disable-next-line vue/no-template-shadow "), e._l(e.posList, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.id } }, [e._v(e._s(t.name))]) }))], 2)] : [a("a-select", { key: t, staticStyle: { width: "100%" }, attrs: { placeholder: "璇烽�夋嫨闄勫睘鑱屼綅", "has-feedback": "" }, on: { change: function (a) { return e.handleChange(a, o.key, t) } } }, [e._v(" // eslint-disable-next-line vue/no-template-shadow "), e._l(e.posList, (function (t, r) { return a("a-select-option", { key: r, attrs: { value: t.id } }, [e._v(e._s(t.name))]) }))], 2)]] : e._e()] } } })), { key: "operation", fn: function (t, r) { return [a("a", { on: { click: function (t) { return e.remove(r.key) } } }, [e._v("鍒犻櫎")])] } }], null, !0) }), a("a-button", { staticStyle: { width: "100%", "margin-top": "16px", "margin-bottom": "8px" }, attrs: { type: "dashed", icon: "plus" }, on: { click: e.newMember } }, [e._v("澧炶")])], 1)], 1)], 1)], 1)], 1) }, s = [], o = a("2909"), n = (a("b0c0"), a("159b"), a("d3b7"), a("25f0"), a("4de4"), a("7db0"), a("0901")), i = a("25fa"), l = a("4cab"), c = a("c1df"), d = a.n(c), u = { data: function () { return { labelCol: { xs: { span: 24 }, sm: { span: 6 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }, labelCol_JG: { xs: { span: 24 }, sm: { span: 3 } }, wrapperCol_JG: { xs: { span: 24 }, sm: { span: 20 } }, count: 1, columns: [{ title: "闄勫睘鏈烘瀯", dataIndex: "extOrgId", width: "45%", scopedSlots: { customRender: "extOrgId" } }, { title: "闄勫睘宀椾綅", dataIndex: "extPosId", width: "45%", scopedSlots: { customRender: "extPosId" } }, { title: "鎿嶄綔", key: "action", scopedSlots: { customRender: "operation" } }], visible: !1, confirmLoading: !1, orgTree: [], orgList: [], posList: [], sysEmpParamExtList: [], memberLoading: !1, form: this.$form.createForm(this), data: [], birthdayString: "" } }, methods: { edit: function (e) { var t = this; this.confirmLoading = !0, this.visible = !0, this.getOrgData(), this.getPosList(), setTimeout((function () { t.form.setFieldsValue({ id: e.id, account: e.account, name: e.name, nickName: e.nickName, sex: e.sex, email: e.email, phone: e.phone, tel: e.tel }) }), 100), null != e.birthday && this.form.getFieldDecorator("birthday", { initialValue: d()(e.birthday, "YYYY-MM-DD") }), this.birthdayString = d()(e.birthday).format("YYYY-MM-DD"), this.getUserDetaile(e.id) }, getUserDetaile: function (e) { var t = this; Object(n["e"])({ id: e }).then((function (e) { var a = e.data.sysEmpInfo, r = []; a.positions.forEach((function (e) { r.push(e.posId) })), t.form.getFieldDecorator("sysEmpParam.orgName", { initialValue: a.orgName }), t.form.getFieldDecorator("sysEmpParam.posIdList", { initialValue: r }), t.form.getFieldDecorator("sysEmpParam.jobNum", { initialValue: a.jobNum }), t.form.getFieldDecorator("sysEmpParam.orgId", { initialValue: a.orgId }), a.extOrgPos.forEach((function (e) { var a = t.data.length; t.data.push({ key: 0 === a ? "1" : (parseInt(t.data[a - 1].key) + 1).toString(), extOrgId: e.orgId, extPosId: e.posId }) })), t.confirmLoading = !1 })) }, newMember: function () { var e = this.data.length; this.data.push({ key: 0 === e ? "1" : (parseInt(this.data[e - 1].key) + 1).toString(), extOrgId: "", extPosId: "" }) }, remove: function (e) { var t = this.data.filter((function (t) { return t.key !== e })); this.data = t }, handleChange: function (e, t, a) { var r = Object(o["a"])(this.data), s = r.find((function (e) { return t === e.key })); s && (s[a] = e, this.data = r) }, getOrgData: function () { var e = this; Object(i["c"])().then((function (t) { e.orgTree = t.data })), Object(i["a"])().then((function (t) { e.orgList = t.data })) }, getPosList: function () { var e = this; Object(l["d"])().then((function (t) { e.posList = t.data })) }, initrOrgName: function (e) { this.form.getFieldDecorator("sysEmpParam.orgName", { initialValue: this.orgList.find((function (t) { return e === t.id })).name }) }, JsonReconsitution: function () { var e = this; this.sysEmpParamExtList = []; var t = Object(o["a"])(this.data); t.forEach((function (t) { "" != t.extOrgId & "" != t.extPosId && e.sysEmpParamExtList.push({ orgId: t.extOrgId, posId: t.extPosId }) })) }, onChange: function (e, t) { this.birthdayString = d()(e).format("YYYY-MM-DD") }, handleSubmit: function () { var e = this, t = this.form.validateFields; this.confirmLoading = !0, t((function (t, a) { t ? e.confirmLoading = !1 : (e.JsonReconsitution(), a.sysEmpParam["extIds"] = e.sysEmpParamExtList, "Invalid date" == e.birthdayString && (e.birthdayString = null), a.birthday = e.birthdayString, Object(n["f"])(a).then((function (t) { t.success ? (e.$message.success("缂栬緫鎴愬姛"), e.confirmLoading = !1, e.$emit("ok", a), e.handleCancel()) : e.$message.error("缂栬緫澶辫触锛�" + JSON.stringify(t.message)) })).finally((function (t) { e.confirmLoading = !1 }))) })) }, handleCancel: function () { this.form.resetFields(), this.visible = !1, this.data = [], this.birthdayString = "", this.form.getFieldDecorator("birthday", { initialValue: null }) } } }, m = u, p = a("2877"), f = Object(p["a"])(m, r, s, !1, null, null, null); t["default"] = f.exports }, f0c4: function (e, t, a) { "use strict"; a.d(t, "f", (function () { return s })), a.d(t, "a", (function () { return o })), a.d(t, "e", (function () { return n })), a.d(t, "c", (function () { return i })), a.d(t, "d", (function () { return l })), a.d(t, "b", (function () { return c })); var r = a("b775"); function s(e) { return Object(r["b"])({ url: "/sysNotice/page", method: "get", params: e }) } function o(e) { return Object(r["b"])({ url: "/sysNotice/add", method: "post", data: e }) } function n(e) { return Object(r["b"])({ url: "/sysNotice/edit", method: "post", data: e }) } function i(e) { return Object(r["b"])({ url: "/sysNotice/delete", method: "post", data: e }) } function l(e) { return Object(r["b"])({ url: "/sysNotice/detail", method: "get", params: e }) } function c(e) { return Object(r["b"])({ url: "/sysNotice/changeStatus", method: "post", data: e }) } }, f2de: function (e, t) { }, f4b1: function (e, t, a) { }, f625: function (e, t, a) { }, f746: function (e, t, a) { "use strict"; a("e949") }, f794: function (e, t, a) { "use strict"; a.r(t); var r = function () { var e = this, t = e.$createElement, a = e._self._c || t; return a("a-row", { attrs: { gutter: 24 } }, [a("a-col", { staticStyle: { padding: "0 0 0 0" }, attrs: { md: 5, sm: 24 } }, [a("a-card", { attrs: { bordered: !0 } }, [a("a-table", { ref: "table", attrs: { size: "middle", rowKey: function (e) { return e.code }, pagination: !1, defaultExpandAllRows: !0, columns: e.appColumns, dataSource: e.appData, loading: e.loading, showPagination: "auto", "row-selection": { selectedRowKeys: e.selectedAppKeys, onChange: e.onAppSelectChange, type: "radio" }, customRow: e.click }, scopedSlots: e._u([{ key: "type", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.typeFilter(t)) + " ")]) } }, { key: "icon", fn: function (t) { return a("span", {}, [null != t && "" != t ? a("div", [a("a-icon", { attrs: { type: t } })], 1) : e._e()]) } }]) })], 1)], 1), a("a-col", { attrs: { md: 19, sm: 24 } }, [a("a-card", { attrs: { bordered: !1 } }, [e.hasPerm("sysMenu:add") ? a("div", { staticClass: "table-operator" }, [e.hasPerm("sysMenu:add") ? a("a-button", { attrs: { type: "primary", icon: "plus" }, on: { click: function (t) { return e.$refs.addForm.add() } } }, [e._v("鏂板鑿滃崟 ")]) : e._e()], 1) : e._e(), a("a-table", { ref: "table", attrs: { size: "middle", rowKey: function (e) { return e.id }, pagination: !1, defaultExpandAllRows: !0, columns: e.columns, dataSource: e.data, loading: e.loading, showPagination: "auto", "row-selection": { selectedRowKeys: e.selectedRowKeys, onChange: e.onSelectChange } }, scopedSlots: e._u([{ key: "type", fn: function (t) { return a("span", {}, [e._v(" " + e._s(e.typeFilter(t)) + " ")]) } }, { key: "icon", fn: function (t) { return a("span", {}, [null != t && "" != t ? a("div", [a("a-icon", { attrs: { type: t } })], 1) : e._e()]) } }, { key: "action", fn: function (t, r) { return a("span", {}, [[e.hasPerm("sysMenu:edit") ? a("a", { on: { click: function (t) { return e.$refs.editForm.edit(r) } } }, [e._v("缂栬緫")]) : e._e(), e.hasPerm("sysMenu:edit") & e.hasPerm("sysMenu:delete") ? a("a-divider", { attrs: { type: "vertical" } }) : e._e(), e.hasPerm("sysMenu:delete") ? a("a-popconfirm", { attrs: { placement: "topRight", title: "鍒犻櫎鏈彍鍗曚笌涓嬬骇锛�" }, on: { confirm: function () { return e.handleDel(r) } } }, [a("a", [e._v("鍒犻櫎")])]) : e._e()]], 2) } }]) }), a("add-form", { ref: "addForm", on: { ok: e.handleOk } }), a("edit-form", { ref: "editForm", on: { ok: e.handleOk } })], 1)], 1)], 1) }, s = [], o = (a("d3b7"), a("4de4"), a("0bfe")), n = a("b89a"), i = a("c8d5"), l = a("126f"), c = a("2316"), d = { components: { addForm: n["default"], editForm: i["default"] }, data: function () { return { queryParam: {}, data: [], appData: [], loading: !0, columns: [{ title: "鑿滃崟鍚嶇О", dataIndex: "name", width: "20%" }, { title: "鑿滃崟绫诲瀷", dataIndex: "type", scopedSlots: { customRender: "type" } }, { title: "鍥炬爣", dataIndex: "icon", scopedSlots: { customRender: "icon" } }, { title: "缁勪欢", dataIndex: "component", width: "20%", ellipsis: !0 }, { title: "璺敱鍦板潃", dataIndex: "router", key: "router", ellipsis: !0 }, { title: "鎺掑簭", dataIndex: "sort" }], appColumns: [{ title: "搴旂敤鍚嶇О", dataIndex: "name" }], selectedRowKeys: [], selectedAppKeys: [], typeDict: [] } }, created: function () { this.loadData(), (this.hasPerm("sysMenu:edit") || this.hasPerm("sysMenu:delete")) && this.columns.push({ title: "鎿嶄綔", dataIndex: "action", width: "150px", scopedSlots: { customRender: "action" } }) }, methods: { loadData: function () { var e = this; this.loading = !0, Object(c["a"])(this.queryParam).then((function (t) { t.success && (e.appData = t.data, e.removeEmptyChildren(e.appData)) })).finally((function () { e.loading = !1 })), this.sysDictTypeDropDown() }, removeEmptyChildren: function (e) { if (null != e && 0 !== e.length) for (var t = 0; t < e.length; t++) { var a = e[t]; null != a.children && 0 === a.children.length ? a.children = null : this.removeEmptyChildren(a.children) } }, typeFilter: function (e) { var t = this.typeDict.filter((function (t) { return t.code == e })); if (t.length > 0) return t[0].value }, sysDictTypeDropDown: function () { var e = this; Object(l["d"])({ code: "menu_type" }).then((function (t) { e.typeDict = t.data })) }, refreshSele: function () { this.onAppSelectChange(this.selectedAppKeys) }, handleOk: function () { this.onAppSelectChange(this.selectedAppKeys) }, handleDel: function (e) { var t = this; Object(o["f"])(e).then((function (e) { e.success ? (t.$message.success("鍒犻櫎鎴愬姛"), t.onAppSelectChange(t.selectedAppKeys)) : t.$message.error("鍒犻櫎澶辫触锛�" + e.message) })).catch((function (e) { t.$message.error("閿欒锛�" + e.message) })) }, onSelectChange: function (e) { this.selectedRowKeys = e }, onAppSelectChange: function (e) { var t = this; this.selectedAppKeys = e, e.length > 0 && (this.queryParam.application = e[0], Object(o["b"])(this.queryParam).then((function (e) { e.success && (t.data = e.data, t.removeEmptyChildren(t.data)) })).finally((function () { t.loading = !1 }))) }, click: function (e, t) { var a = this; return { on: { click: function () { var t = []; t.push(e.code), a.selectedAppKeys = t, a.onAppSelectChange(a.selectedAppKeys) } } } }, clearSele: function () { this.selectedRowKeys = [] } } }, u = d, m = (a("91f1"), a("2877")), p = Object(m["a"])(u, r, s, !1, null, "53b42a43", null); t["default"] = p.exports }, f847: function (e, t, a) { }, fb72: function (e, t, a) { "use strict"; a("27d9") }, fcb0: function (e, t, a) { }, fd7c: function (e, t) { } }]);
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/user.6ca40864.js.gz b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/user.6ca40864.js.gz
new file mode 100644
index 0000000..6e1dd56
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/user.6ca40864.js.gz
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/LICENSE b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/LICENSE
new file mode 100644
index 0000000..72dda23
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2011-2021 Twitter, Inc.
+Copyright (c) 2011-2021 The Bootstrap Authors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css
new file mode 100644
index 0000000..430a001
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css
@@ -0,0 +1,4997 @@
+/*!
+ * Bootstrap Grid v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+.container,
+.container-fluid,
+.container-xxl,
+.container-xl,
+.container-lg,
+.container-md,
+.container-sm {
+  width: 100%;
+  padding-right: var(--bs-gutter-x, 0.75rem);
+  padding-left: var(--bs-gutter-x, 0.75rem);
+  margin-right: auto;
+  margin-left: auto;
+}
+
+@media (min-width: 576px) {
+  .container-sm, .container {
+    max-width: 540px;
+  }
+}
+@media (min-width: 768px) {
+  .container-md, .container-sm, .container {
+    max-width: 720px;
+  }
+}
+@media (min-width: 992px) {
+  .container-lg, .container-md, .container-sm, .container {
+    max-width: 960px;
+  }
+}
+@media (min-width: 1200px) {
+  .container-xl, .container-lg, .container-md, .container-sm, .container {
+    max-width: 1140px;
+  }
+}
+@media (min-width: 1400px) {
+  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
+    max-width: 1320px;
+  }
+}
+.row {
+  --bs-gutter-x: 1.5rem;
+  --bs-gutter-y: 0;
+  display: flex;
+  flex-wrap: wrap;
+  margin-top: calc(var(--bs-gutter-y) * -1);
+  margin-right: calc(var(--bs-gutter-x) * -.5);
+  margin-left: calc(var(--bs-gutter-x) * -.5);
+}
+.row > * {
+  box-sizing: border-box;
+  flex-shrink: 0;
+  width: 100%;
+  max-width: 100%;
+  padding-right: calc(var(--bs-gutter-x) * .5);
+  padding-left: calc(var(--bs-gutter-x) * .5);
+  margin-top: var(--bs-gutter-y);
+}
+
+.col {
+  flex: 1 0 0%;
+}
+
+.row-cols-auto > * {
+  flex: 0 0 auto;
+  width: auto;
+}
+
+.row-cols-1 > * {
+  flex: 0 0 auto;
+  width: 100%;
+}
+
+.row-cols-2 > * {
+  flex: 0 0 auto;
+  width: 50%;
+}
+
+.row-cols-3 > * {
+  flex: 0 0 auto;
+  width: 33.3333333333%;
+}
+
+.row-cols-4 > * {
+  flex: 0 0 auto;
+  width: 25%;
+}
+
+.row-cols-5 > * {
+  flex: 0 0 auto;
+  width: 20%;
+}
+
+.row-cols-6 > * {
+  flex: 0 0 auto;
+  width: 16.6666666667%;
+}
+
+.col-auto {
+  flex: 0 0 auto;
+  width: auto;
+}
+
+.col-1 {
+  flex: 0 0 auto;
+  width: 8.33333333%;
+}
+
+.col-2 {
+  flex: 0 0 auto;
+  width: 16.66666667%;
+}
+
+.col-3 {
+  flex: 0 0 auto;
+  width: 25%;
+}
+
+.col-4 {
+  flex: 0 0 auto;
+  width: 33.33333333%;
+}
+
+.col-5 {
+  flex: 0 0 auto;
+  width: 41.66666667%;
+}
+
+.col-6 {
+  flex: 0 0 auto;
+  width: 50%;
+}
+
+.col-7 {
+  flex: 0 0 auto;
+  width: 58.33333333%;
+}
+
+.col-8 {
+  flex: 0 0 auto;
+  width: 66.66666667%;
+}
+
+.col-9 {
+  flex: 0 0 auto;
+  width: 75%;
+}
+
+.col-10 {
+  flex: 0 0 auto;
+  width: 83.33333333%;
+}
+
+.col-11 {
+  flex: 0 0 auto;
+  width: 91.66666667%;
+}
+
+.col-12 {
+  flex: 0 0 auto;
+  width: 100%;
+}
+
+.offset-1 {
+  margin-left: 8.33333333%;
+}
+
+.offset-2 {
+  margin-left: 16.66666667%;
+}
+
+.offset-3 {
+  margin-left: 25%;
+}
+
+.offset-4 {
+  margin-left: 33.33333333%;
+}
+
+.offset-5 {
+  margin-left: 41.66666667%;
+}
+
+.offset-6 {
+  margin-left: 50%;
+}
+
+.offset-7 {
+  margin-left: 58.33333333%;
+}
+
+.offset-8 {
+  margin-left: 66.66666667%;
+}
+
+.offset-9 {
+  margin-left: 75%;
+}
+
+.offset-10 {
+  margin-left: 83.33333333%;
+}
+
+.offset-11 {
+  margin-left: 91.66666667%;
+}
+
+.g-0,
+.gx-0 {
+  --bs-gutter-x: 0;
+}
+
+.g-0,
+.gy-0 {
+  --bs-gutter-y: 0;
+}
+
+.g-1,
+.gx-1 {
+  --bs-gutter-x: 0.25rem;
+}
+
+.g-1,
+.gy-1 {
+  --bs-gutter-y: 0.25rem;
+}
+
+.g-2,
+.gx-2 {
+  --bs-gutter-x: 0.5rem;
+}
+
+.g-2,
+.gy-2 {
+  --bs-gutter-y: 0.5rem;
+}
+
+.g-3,
+.gx-3 {
+  --bs-gutter-x: 1rem;
+}
+
+.g-3,
+.gy-3 {
+  --bs-gutter-y: 1rem;
+}
+
+.g-4,
+.gx-4 {
+  --bs-gutter-x: 1.5rem;
+}
+
+.g-4,
+.gy-4 {
+  --bs-gutter-y: 1.5rem;
+}
+
+.g-5,
+.gx-5 {
+  --bs-gutter-x: 3rem;
+}
+
+.g-5,
+.gy-5 {
+  --bs-gutter-y: 3rem;
+}
+
+@media (min-width: 576px) {
+  .col-sm {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-sm-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-sm-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-sm-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-sm-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-sm-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-sm-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-sm-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-sm-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-sm-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-sm-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-sm-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-sm-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-sm-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-sm-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-sm-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-sm-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-sm-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-sm-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-sm-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-sm-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-sm-0 {
+    margin-left: 0;
+  }
+
+  .offset-sm-1 {
+    margin-left: 8.33333333%;
+  }
+
+  .offset-sm-2 {
+    margin-left: 16.66666667%;
+  }
+
+  .offset-sm-3 {
+    margin-left: 25%;
+  }
+
+  .offset-sm-4 {
+    margin-left: 33.33333333%;
+  }
+
+  .offset-sm-5 {
+    margin-left: 41.66666667%;
+  }
+
+  .offset-sm-6 {
+    margin-left: 50%;
+  }
+
+  .offset-sm-7 {
+    margin-left: 58.33333333%;
+  }
+
+  .offset-sm-8 {
+    margin-left: 66.66666667%;
+  }
+
+  .offset-sm-9 {
+    margin-left: 75%;
+  }
+
+  .offset-sm-10 {
+    margin-left: 83.33333333%;
+  }
+
+  .offset-sm-11 {
+    margin-left: 91.66666667%;
+  }
+
+  .g-sm-0,
+.gx-sm-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-sm-0,
+.gy-sm-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-sm-1,
+.gx-sm-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-sm-1,
+.gy-sm-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-sm-2,
+.gx-sm-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-sm-2,
+.gy-sm-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-sm-3,
+.gx-sm-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-sm-3,
+.gy-sm-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-sm-4,
+.gx-sm-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-sm-4,
+.gy-sm-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-sm-5,
+.gx-sm-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-sm-5,
+.gy-sm-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 768px) {
+  .col-md {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-md-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-md-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-md-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-md-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-md-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-md-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-md-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-md-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-md-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-md-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-md-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-md-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-md-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-md-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-md-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-md-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-md-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-md-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-md-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-md-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-md-0 {
+    margin-left: 0;
+  }
+
+  .offset-md-1 {
+    margin-left: 8.33333333%;
+  }
+
+  .offset-md-2 {
+    margin-left: 16.66666667%;
+  }
+
+  .offset-md-3 {
+    margin-left: 25%;
+  }
+
+  .offset-md-4 {
+    margin-left: 33.33333333%;
+  }
+
+  .offset-md-5 {
+    margin-left: 41.66666667%;
+  }
+
+  .offset-md-6 {
+    margin-left: 50%;
+  }
+
+  .offset-md-7 {
+    margin-left: 58.33333333%;
+  }
+
+  .offset-md-8 {
+    margin-left: 66.66666667%;
+  }
+
+  .offset-md-9 {
+    margin-left: 75%;
+  }
+
+  .offset-md-10 {
+    margin-left: 83.33333333%;
+  }
+
+  .offset-md-11 {
+    margin-left: 91.66666667%;
+  }
+
+  .g-md-0,
+.gx-md-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-md-0,
+.gy-md-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-md-1,
+.gx-md-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-md-1,
+.gy-md-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-md-2,
+.gx-md-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-md-2,
+.gy-md-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-md-3,
+.gx-md-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-md-3,
+.gy-md-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-md-4,
+.gx-md-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-md-4,
+.gy-md-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-md-5,
+.gx-md-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-md-5,
+.gy-md-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 992px) {
+  .col-lg {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-lg-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-lg-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-lg-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-lg-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-lg-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-lg-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-lg-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-lg-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-lg-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-lg-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-lg-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-lg-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-lg-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-lg-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-lg-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-lg-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-lg-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-lg-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-lg-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-lg-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-lg-0 {
+    margin-left: 0;
+  }
+
+  .offset-lg-1 {
+    margin-left: 8.33333333%;
+  }
+
+  .offset-lg-2 {
+    margin-left: 16.66666667%;
+  }
+
+  .offset-lg-3 {
+    margin-left: 25%;
+  }
+
+  .offset-lg-4 {
+    margin-left: 33.33333333%;
+  }
+
+  .offset-lg-5 {
+    margin-left: 41.66666667%;
+  }
+
+  .offset-lg-6 {
+    margin-left: 50%;
+  }
+
+  .offset-lg-7 {
+    margin-left: 58.33333333%;
+  }
+
+  .offset-lg-8 {
+    margin-left: 66.66666667%;
+  }
+
+  .offset-lg-9 {
+    margin-left: 75%;
+  }
+
+  .offset-lg-10 {
+    margin-left: 83.33333333%;
+  }
+
+  .offset-lg-11 {
+    margin-left: 91.66666667%;
+  }
+
+  .g-lg-0,
+.gx-lg-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-lg-0,
+.gy-lg-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-lg-1,
+.gx-lg-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-lg-1,
+.gy-lg-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-lg-2,
+.gx-lg-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-lg-2,
+.gy-lg-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-lg-3,
+.gx-lg-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-lg-3,
+.gy-lg-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-lg-4,
+.gx-lg-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-lg-4,
+.gy-lg-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-lg-5,
+.gx-lg-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-lg-5,
+.gy-lg-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 1200px) {
+  .col-xl {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-xl-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-xl-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-xl-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-xl-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-xl-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-xl-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-xl-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-xl-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-xl-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-xl-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-xl-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-xl-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-xl-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-xl-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-xl-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-xl-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-xl-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-xl-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-xl-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-xl-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-xl-0 {
+    margin-left: 0;
+  }
+
+  .offset-xl-1 {
+    margin-left: 8.33333333%;
+  }
+
+  .offset-xl-2 {
+    margin-left: 16.66666667%;
+  }
+
+  .offset-xl-3 {
+    margin-left: 25%;
+  }
+
+  .offset-xl-4 {
+    margin-left: 33.33333333%;
+  }
+
+  .offset-xl-5 {
+    margin-left: 41.66666667%;
+  }
+
+  .offset-xl-6 {
+    margin-left: 50%;
+  }
+
+  .offset-xl-7 {
+    margin-left: 58.33333333%;
+  }
+
+  .offset-xl-8 {
+    margin-left: 66.66666667%;
+  }
+
+  .offset-xl-9 {
+    margin-left: 75%;
+  }
+
+  .offset-xl-10 {
+    margin-left: 83.33333333%;
+  }
+
+  .offset-xl-11 {
+    margin-left: 91.66666667%;
+  }
+
+  .g-xl-0,
+.gx-xl-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-xl-0,
+.gy-xl-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-xl-1,
+.gx-xl-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-xl-1,
+.gy-xl-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-xl-2,
+.gx-xl-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-xl-2,
+.gy-xl-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-xl-3,
+.gx-xl-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-xl-3,
+.gy-xl-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-xl-4,
+.gx-xl-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-xl-4,
+.gy-xl-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-xl-5,
+.gx-xl-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-xl-5,
+.gy-xl-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 1400px) {
+  .col-xxl {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-xxl-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-xxl-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-xxl-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-xxl-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-xxl-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-xxl-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-xxl-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-xxl-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-xxl-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-xxl-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-xxl-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-xxl-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-xxl-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-xxl-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-xxl-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-xxl-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-xxl-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-xxl-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-xxl-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-xxl-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-xxl-0 {
+    margin-left: 0;
+  }
+
+  .offset-xxl-1 {
+    margin-left: 8.33333333%;
+  }
+
+  .offset-xxl-2 {
+    margin-left: 16.66666667%;
+  }
+
+  .offset-xxl-3 {
+    margin-left: 25%;
+  }
+
+  .offset-xxl-4 {
+    margin-left: 33.33333333%;
+  }
+
+  .offset-xxl-5 {
+    margin-left: 41.66666667%;
+  }
+
+  .offset-xxl-6 {
+    margin-left: 50%;
+  }
+
+  .offset-xxl-7 {
+    margin-left: 58.33333333%;
+  }
+
+  .offset-xxl-8 {
+    margin-left: 66.66666667%;
+  }
+
+  .offset-xxl-9 {
+    margin-left: 75%;
+  }
+
+  .offset-xxl-10 {
+    margin-left: 83.33333333%;
+  }
+
+  .offset-xxl-11 {
+    margin-left: 91.66666667%;
+  }
+
+  .g-xxl-0,
+.gx-xxl-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-xxl-0,
+.gy-xxl-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-xxl-1,
+.gx-xxl-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-xxl-1,
+.gy-xxl-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-xxl-2,
+.gx-xxl-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-xxl-2,
+.gy-xxl-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-xxl-3,
+.gx-xxl-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-xxl-3,
+.gy-xxl-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-xxl-4,
+.gx-xxl-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-xxl-4,
+.gy-xxl-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-xxl-5,
+.gx-xxl-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-xxl-5,
+.gy-xxl-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+.d-inline {
+  display: inline !important;
+}
+
+.d-inline-block {
+  display: inline-block !important;
+}
+
+.d-block {
+  display: block !important;
+}
+
+.d-grid {
+  display: grid !important;
+}
+
+.d-table {
+  display: table !important;
+}
+
+.d-table-row {
+  display: table-row !important;
+}
+
+.d-table-cell {
+  display: table-cell !important;
+}
+
+.d-flex {
+  display: flex !important;
+}
+
+.d-inline-flex {
+  display: inline-flex !important;
+}
+
+.d-none {
+  display: none !important;
+}
+
+.flex-fill {
+  flex: 1 1 auto !important;
+}
+
+.flex-row {
+  flex-direction: row !important;
+}
+
+.flex-column {
+  flex-direction: column !important;
+}
+
+.flex-row-reverse {
+  flex-direction: row-reverse !important;
+}
+
+.flex-column-reverse {
+  flex-direction: column-reverse !important;
+}
+
+.flex-grow-0 {
+  flex-grow: 0 !important;
+}
+
+.flex-grow-1 {
+  flex-grow: 1 !important;
+}
+
+.flex-shrink-0 {
+  flex-shrink: 0 !important;
+}
+
+.flex-shrink-1 {
+  flex-shrink: 1 !important;
+}
+
+.flex-wrap {
+  flex-wrap: wrap !important;
+}
+
+.flex-nowrap {
+  flex-wrap: nowrap !important;
+}
+
+.flex-wrap-reverse {
+  flex-wrap: wrap-reverse !important;
+}
+
+.justify-content-start {
+  justify-content: flex-start !important;
+}
+
+.justify-content-end {
+  justify-content: flex-end !important;
+}
+
+.justify-content-center {
+  justify-content: center !important;
+}
+
+.justify-content-between {
+  justify-content: space-between !important;
+}
+
+.justify-content-around {
+  justify-content: space-around !important;
+}
+
+.justify-content-evenly {
+  justify-content: space-evenly !important;
+}
+
+.align-items-start {
+  align-items: flex-start !important;
+}
+
+.align-items-end {
+  align-items: flex-end !important;
+}
+
+.align-items-center {
+  align-items: center !important;
+}
+
+.align-items-baseline {
+  align-items: baseline !important;
+}
+
+.align-items-stretch {
+  align-items: stretch !important;
+}
+
+.align-content-start {
+  align-content: flex-start !important;
+}
+
+.align-content-end {
+  align-content: flex-end !important;
+}
+
+.align-content-center {
+  align-content: center !important;
+}
+
+.align-content-between {
+  align-content: space-between !important;
+}
+
+.align-content-around {
+  align-content: space-around !important;
+}
+
+.align-content-stretch {
+  align-content: stretch !important;
+}
+
+.align-self-auto {
+  align-self: auto !important;
+}
+
+.align-self-start {
+  align-self: flex-start !important;
+}
+
+.align-self-end {
+  align-self: flex-end !important;
+}
+
+.align-self-center {
+  align-self: center !important;
+}
+
+.align-self-baseline {
+  align-self: baseline !important;
+}
+
+.align-self-stretch {
+  align-self: stretch !important;
+}
+
+.order-first {
+  order: -1 !important;
+}
+
+.order-0 {
+  order: 0 !important;
+}
+
+.order-1 {
+  order: 1 !important;
+}
+
+.order-2 {
+  order: 2 !important;
+}
+
+.order-3 {
+  order: 3 !important;
+}
+
+.order-4 {
+  order: 4 !important;
+}
+
+.order-5 {
+  order: 5 !important;
+}
+
+.order-last {
+  order: 6 !important;
+}
+
+.m-0 {
+  margin: 0 !important;
+}
+
+.m-1 {
+  margin: 0.25rem !important;
+}
+
+.m-2 {
+  margin: 0.5rem !important;
+}
+
+.m-3 {
+  margin: 1rem !important;
+}
+
+.m-4 {
+  margin: 1.5rem !important;
+}
+
+.m-5 {
+  margin: 3rem !important;
+}
+
+.m-auto {
+  margin: auto !important;
+}
+
+.mx-0 {
+  margin-right: 0 !important;
+  margin-left: 0 !important;
+}
+
+.mx-1 {
+  margin-right: 0.25rem !important;
+  margin-left: 0.25rem !important;
+}
+
+.mx-2 {
+  margin-right: 0.5rem !important;
+  margin-left: 0.5rem !important;
+}
+
+.mx-3 {
+  margin-right: 1rem !important;
+  margin-left: 1rem !important;
+}
+
+.mx-4 {
+  margin-right: 1.5rem !important;
+  margin-left: 1.5rem !important;
+}
+
+.mx-5 {
+  margin-right: 3rem !important;
+  margin-left: 3rem !important;
+}
+
+.mx-auto {
+  margin-right: auto !important;
+  margin-left: auto !important;
+}
+
+.my-0 {
+  margin-top: 0 !important;
+  margin-bottom: 0 !important;
+}
+
+.my-1 {
+  margin-top: 0.25rem !important;
+  margin-bottom: 0.25rem !important;
+}
+
+.my-2 {
+  margin-top: 0.5rem !important;
+  margin-bottom: 0.5rem !important;
+}
+
+.my-3 {
+  margin-top: 1rem !important;
+  margin-bottom: 1rem !important;
+}
+
+.my-4 {
+  margin-top: 1.5rem !important;
+  margin-bottom: 1.5rem !important;
+}
+
+.my-5 {
+  margin-top: 3rem !important;
+  margin-bottom: 3rem !important;
+}
+
+.my-auto {
+  margin-top: auto !important;
+  margin-bottom: auto !important;
+}
+
+.mt-0 {
+  margin-top: 0 !important;
+}
+
+.mt-1 {
+  margin-top: 0.25rem !important;
+}
+
+.mt-2 {
+  margin-top: 0.5rem !important;
+}
+
+.mt-3 {
+  margin-top: 1rem !important;
+}
+
+.mt-4 {
+  margin-top: 1.5rem !important;
+}
+
+.mt-5 {
+  margin-top: 3rem !important;
+}
+
+.mt-auto {
+  margin-top: auto !important;
+}
+
+.me-0 {
+  margin-right: 0 !important;
+}
+
+.me-1 {
+  margin-right: 0.25rem !important;
+}
+
+.me-2 {
+  margin-right: 0.5rem !important;
+}
+
+.me-3 {
+  margin-right: 1rem !important;
+}
+
+.me-4 {
+  margin-right: 1.5rem !important;
+}
+
+.me-5 {
+  margin-right: 3rem !important;
+}
+
+.me-auto {
+  margin-right: auto !important;
+}
+
+.mb-0 {
+  margin-bottom: 0 !important;
+}
+
+.mb-1 {
+  margin-bottom: 0.25rem !important;
+}
+
+.mb-2 {
+  margin-bottom: 0.5rem !important;
+}
+
+.mb-3 {
+  margin-bottom: 1rem !important;
+}
+
+.mb-4 {
+  margin-bottom: 1.5rem !important;
+}
+
+.mb-5 {
+  margin-bottom: 3rem !important;
+}
+
+.mb-auto {
+  margin-bottom: auto !important;
+}
+
+.ms-0 {
+  margin-left: 0 !important;
+}
+
+.ms-1 {
+  margin-left: 0.25rem !important;
+}
+
+.ms-2 {
+  margin-left: 0.5rem !important;
+}
+
+.ms-3 {
+  margin-left: 1rem !important;
+}
+
+.ms-4 {
+  margin-left: 1.5rem !important;
+}
+
+.ms-5 {
+  margin-left: 3rem !important;
+}
+
+.ms-auto {
+  margin-left: auto !important;
+}
+
+.p-0 {
+  padding: 0 !important;
+}
+
+.p-1 {
+  padding: 0.25rem !important;
+}
+
+.p-2 {
+  padding: 0.5rem !important;
+}
+
+.p-3 {
+  padding: 1rem !important;
+}
+
+.p-4 {
+  padding: 1.5rem !important;
+}
+
+.p-5 {
+  padding: 3rem !important;
+}
+
+.px-0 {
+  padding-right: 0 !important;
+  padding-left: 0 !important;
+}
+
+.px-1 {
+  padding-right: 0.25rem !important;
+  padding-left: 0.25rem !important;
+}
+
+.px-2 {
+  padding-right: 0.5rem !important;
+  padding-left: 0.5rem !important;
+}
+
+.px-3 {
+  padding-right: 1rem !important;
+  padding-left: 1rem !important;
+}
+
+.px-4 {
+  padding-right: 1.5rem !important;
+  padding-left: 1.5rem !important;
+}
+
+.px-5 {
+  padding-right: 3rem !important;
+  padding-left: 3rem !important;
+}
+
+.py-0 {
+  padding-top: 0 !important;
+  padding-bottom: 0 !important;
+}
+
+.py-1 {
+  padding-top: 0.25rem !important;
+  padding-bottom: 0.25rem !important;
+}
+
+.py-2 {
+  padding-top: 0.5rem !important;
+  padding-bottom: 0.5rem !important;
+}
+
+.py-3 {
+  padding-top: 1rem !important;
+  padding-bottom: 1rem !important;
+}
+
+.py-4 {
+  padding-top: 1.5rem !important;
+  padding-bottom: 1.5rem !important;
+}
+
+.py-5 {
+  padding-top: 3rem !important;
+  padding-bottom: 3rem !important;
+}
+
+.pt-0 {
+  padding-top: 0 !important;
+}
+
+.pt-1 {
+  padding-top: 0.25rem !important;
+}
+
+.pt-2 {
+  padding-top: 0.5rem !important;
+}
+
+.pt-3 {
+  padding-top: 1rem !important;
+}
+
+.pt-4 {
+  padding-top: 1.5rem !important;
+}
+
+.pt-5 {
+  padding-top: 3rem !important;
+}
+
+.pe-0 {
+  padding-right: 0 !important;
+}
+
+.pe-1 {
+  padding-right: 0.25rem !important;
+}
+
+.pe-2 {
+  padding-right: 0.5rem !important;
+}
+
+.pe-3 {
+  padding-right: 1rem !important;
+}
+
+.pe-4 {
+  padding-right: 1.5rem !important;
+}
+
+.pe-5 {
+  padding-right: 3rem !important;
+}
+
+.pb-0 {
+  padding-bottom: 0 !important;
+}
+
+.pb-1 {
+  padding-bottom: 0.25rem !important;
+}
+
+.pb-2 {
+  padding-bottom: 0.5rem !important;
+}
+
+.pb-3 {
+  padding-bottom: 1rem !important;
+}
+
+.pb-4 {
+  padding-bottom: 1.5rem !important;
+}
+
+.pb-5 {
+  padding-bottom: 3rem !important;
+}
+
+.ps-0 {
+  padding-left: 0 !important;
+}
+
+.ps-1 {
+  padding-left: 0.25rem !important;
+}
+
+.ps-2 {
+  padding-left: 0.5rem !important;
+}
+
+.ps-3 {
+  padding-left: 1rem !important;
+}
+
+.ps-4 {
+  padding-left: 1.5rem !important;
+}
+
+.ps-5 {
+  padding-left: 3rem !important;
+}
+
+@media (min-width: 576px) {
+  .d-sm-inline {
+    display: inline !important;
+  }
+
+  .d-sm-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-sm-block {
+    display: block !important;
+  }
+
+  .d-sm-grid {
+    display: grid !important;
+  }
+
+  .d-sm-table {
+    display: table !important;
+  }
+
+  .d-sm-table-row {
+    display: table-row !important;
+  }
+
+  .d-sm-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-sm-flex {
+    display: flex !important;
+  }
+
+  .d-sm-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-sm-none {
+    display: none !important;
+  }
+
+  .flex-sm-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-sm-row {
+    flex-direction: row !important;
+  }
+
+  .flex-sm-column {
+    flex-direction: column !important;
+  }
+
+  .flex-sm-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-sm-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-sm-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-sm-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-sm-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-sm-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-sm-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-sm-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-sm-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .justify-content-sm-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-sm-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-sm-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-sm-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-sm-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-sm-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-sm-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-sm-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-sm-center {
+    align-items: center !important;
+  }
+
+  .align-items-sm-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-sm-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-sm-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-sm-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-sm-center {
+    align-content: center !important;
+  }
+
+  .align-content-sm-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-sm-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-sm-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-sm-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-sm-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-sm-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-sm-center {
+    align-self: center !important;
+  }
+
+  .align-self-sm-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-sm-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-sm-first {
+    order: -1 !important;
+  }
+
+  .order-sm-0 {
+    order: 0 !important;
+  }
+
+  .order-sm-1 {
+    order: 1 !important;
+  }
+
+  .order-sm-2 {
+    order: 2 !important;
+  }
+
+  .order-sm-3 {
+    order: 3 !important;
+  }
+
+  .order-sm-4 {
+    order: 4 !important;
+  }
+
+  .order-sm-5 {
+    order: 5 !important;
+  }
+
+  .order-sm-last {
+    order: 6 !important;
+  }
+
+  .m-sm-0 {
+    margin: 0 !important;
+  }
+
+  .m-sm-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-sm-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-sm-3 {
+    margin: 1rem !important;
+  }
+
+  .m-sm-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-sm-5 {
+    margin: 3rem !important;
+  }
+
+  .m-sm-auto {
+    margin: auto !important;
+  }
+
+  .mx-sm-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-sm-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-sm-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-sm-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-sm-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-sm-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-sm-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-sm-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-sm-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-sm-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-sm-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-sm-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-sm-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-sm-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-sm-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-sm-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-sm-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-sm-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-sm-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-sm-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-sm-auto {
+    margin-top: auto !important;
+  }
+
+  .me-sm-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-sm-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-sm-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-sm-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-sm-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-sm-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-sm-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-sm-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-sm-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-sm-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-sm-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-sm-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-sm-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-sm-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-sm-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-sm-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-sm-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-sm-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-sm-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-sm-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-sm-auto {
+    margin-left: auto !important;
+  }
+
+  .p-sm-0 {
+    padding: 0 !important;
+  }
+
+  .p-sm-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-sm-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-sm-3 {
+    padding: 1rem !important;
+  }
+
+  .p-sm-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-sm-5 {
+    padding: 3rem !important;
+  }
+
+  .px-sm-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-sm-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-sm-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-sm-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-sm-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-sm-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-sm-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-sm-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-sm-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-sm-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-sm-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-sm-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-sm-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-sm-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-sm-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-sm-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-sm-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-sm-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-sm-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-sm-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-sm-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-sm-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-sm-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-sm-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-sm-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-sm-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-sm-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-sm-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-sm-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-sm-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-sm-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-sm-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-sm-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-sm-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-sm-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-sm-5 {
+    padding-left: 3rem !important;
+  }
+}
+@media (min-width: 768px) {
+  .d-md-inline {
+    display: inline !important;
+  }
+
+  .d-md-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-md-block {
+    display: block !important;
+  }
+
+  .d-md-grid {
+    display: grid !important;
+  }
+
+  .d-md-table {
+    display: table !important;
+  }
+
+  .d-md-table-row {
+    display: table-row !important;
+  }
+
+  .d-md-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-md-flex {
+    display: flex !important;
+  }
+
+  .d-md-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-md-none {
+    display: none !important;
+  }
+
+  .flex-md-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-md-row {
+    flex-direction: row !important;
+  }
+
+  .flex-md-column {
+    flex-direction: column !important;
+  }
+
+  .flex-md-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-md-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-md-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-md-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-md-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-md-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-md-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-md-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-md-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .justify-content-md-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-md-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-md-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-md-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-md-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-md-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-md-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-md-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-md-center {
+    align-items: center !important;
+  }
+
+  .align-items-md-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-md-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-md-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-md-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-md-center {
+    align-content: center !important;
+  }
+
+  .align-content-md-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-md-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-md-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-md-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-md-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-md-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-md-center {
+    align-self: center !important;
+  }
+
+  .align-self-md-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-md-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-md-first {
+    order: -1 !important;
+  }
+
+  .order-md-0 {
+    order: 0 !important;
+  }
+
+  .order-md-1 {
+    order: 1 !important;
+  }
+
+  .order-md-2 {
+    order: 2 !important;
+  }
+
+  .order-md-3 {
+    order: 3 !important;
+  }
+
+  .order-md-4 {
+    order: 4 !important;
+  }
+
+  .order-md-5 {
+    order: 5 !important;
+  }
+
+  .order-md-last {
+    order: 6 !important;
+  }
+
+  .m-md-0 {
+    margin: 0 !important;
+  }
+
+  .m-md-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-md-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-md-3 {
+    margin: 1rem !important;
+  }
+
+  .m-md-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-md-5 {
+    margin: 3rem !important;
+  }
+
+  .m-md-auto {
+    margin: auto !important;
+  }
+
+  .mx-md-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-md-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-md-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-md-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-md-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-md-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-md-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-md-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-md-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-md-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-md-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-md-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-md-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-md-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-md-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-md-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-md-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-md-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-md-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-md-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-md-auto {
+    margin-top: auto !important;
+  }
+
+  .me-md-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-md-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-md-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-md-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-md-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-md-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-md-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-md-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-md-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-md-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-md-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-md-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-md-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-md-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-md-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-md-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-md-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-md-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-md-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-md-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-md-auto {
+    margin-left: auto !important;
+  }
+
+  .p-md-0 {
+    padding: 0 !important;
+  }
+
+  .p-md-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-md-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-md-3 {
+    padding: 1rem !important;
+  }
+
+  .p-md-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-md-5 {
+    padding: 3rem !important;
+  }
+
+  .px-md-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-md-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-md-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-md-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-md-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-md-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-md-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-md-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-md-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-md-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-md-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-md-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-md-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-md-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-md-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-md-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-md-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-md-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-md-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-md-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-md-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-md-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-md-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-md-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-md-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-md-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-md-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-md-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-md-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-md-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-md-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-md-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-md-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-md-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-md-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-md-5 {
+    padding-left: 3rem !important;
+  }
+}
+@media (min-width: 992px) {
+  .d-lg-inline {
+    display: inline !important;
+  }
+
+  .d-lg-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-lg-block {
+    display: block !important;
+  }
+
+  .d-lg-grid {
+    display: grid !important;
+  }
+
+  .d-lg-table {
+    display: table !important;
+  }
+
+  .d-lg-table-row {
+    display: table-row !important;
+  }
+
+  .d-lg-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-lg-flex {
+    display: flex !important;
+  }
+
+  .d-lg-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-lg-none {
+    display: none !important;
+  }
+
+  .flex-lg-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-lg-row {
+    flex-direction: row !important;
+  }
+
+  .flex-lg-column {
+    flex-direction: column !important;
+  }
+
+  .flex-lg-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-lg-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-lg-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-lg-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-lg-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-lg-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-lg-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-lg-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-lg-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .justify-content-lg-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-lg-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-lg-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-lg-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-lg-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-lg-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-lg-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-lg-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-lg-center {
+    align-items: center !important;
+  }
+
+  .align-items-lg-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-lg-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-lg-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-lg-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-lg-center {
+    align-content: center !important;
+  }
+
+  .align-content-lg-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-lg-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-lg-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-lg-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-lg-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-lg-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-lg-center {
+    align-self: center !important;
+  }
+
+  .align-self-lg-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-lg-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-lg-first {
+    order: -1 !important;
+  }
+
+  .order-lg-0 {
+    order: 0 !important;
+  }
+
+  .order-lg-1 {
+    order: 1 !important;
+  }
+
+  .order-lg-2 {
+    order: 2 !important;
+  }
+
+  .order-lg-3 {
+    order: 3 !important;
+  }
+
+  .order-lg-4 {
+    order: 4 !important;
+  }
+
+  .order-lg-5 {
+    order: 5 !important;
+  }
+
+  .order-lg-last {
+    order: 6 !important;
+  }
+
+  .m-lg-0 {
+    margin: 0 !important;
+  }
+
+  .m-lg-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-lg-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-lg-3 {
+    margin: 1rem !important;
+  }
+
+  .m-lg-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-lg-5 {
+    margin: 3rem !important;
+  }
+
+  .m-lg-auto {
+    margin: auto !important;
+  }
+
+  .mx-lg-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-lg-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-lg-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-lg-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-lg-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-lg-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-lg-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-lg-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-lg-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-lg-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-lg-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-lg-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-lg-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-lg-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-lg-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-lg-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-lg-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-lg-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-lg-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-lg-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-lg-auto {
+    margin-top: auto !important;
+  }
+
+  .me-lg-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-lg-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-lg-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-lg-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-lg-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-lg-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-lg-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-lg-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-lg-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-lg-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-lg-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-lg-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-lg-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-lg-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-lg-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-lg-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-lg-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-lg-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-lg-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-lg-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-lg-auto {
+    margin-left: auto !important;
+  }
+
+  .p-lg-0 {
+    padding: 0 !important;
+  }
+
+  .p-lg-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-lg-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-lg-3 {
+    padding: 1rem !important;
+  }
+
+  .p-lg-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-lg-5 {
+    padding: 3rem !important;
+  }
+
+  .px-lg-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-lg-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-lg-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-lg-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-lg-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-lg-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-lg-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-lg-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-lg-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-lg-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-lg-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-lg-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-lg-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-lg-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-lg-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-lg-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-lg-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-lg-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-lg-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-lg-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-lg-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-lg-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-lg-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-lg-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-lg-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-lg-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-lg-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-lg-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-lg-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-lg-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-lg-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-lg-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-lg-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-lg-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-lg-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-lg-5 {
+    padding-left: 3rem !important;
+  }
+}
+@media (min-width: 1200px) {
+  .d-xl-inline {
+    display: inline !important;
+  }
+
+  .d-xl-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-xl-block {
+    display: block !important;
+  }
+
+  .d-xl-grid {
+    display: grid !important;
+  }
+
+  .d-xl-table {
+    display: table !important;
+  }
+
+  .d-xl-table-row {
+    display: table-row !important;
+  }
+
+  .d-xl-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-xl-flex {
+    display: flex !important;
+  }
+
+  .d-xl-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-xl-none {
+    display: none !important;
+  }
+
+  .flex-xl-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-xl-row {
+    flex-direction: row !important;
+  }
+
+  .flex-xl-column {
+    flex-direction: column !important;
+  }
+
+  .flex-xl-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-xl-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-xl-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-xl-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-xl-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-xl-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-xl-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-xl-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-xl-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .justify-content-xl-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-xl-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-xl-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-xl-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-xl-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-xl-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-xl-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-xl-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-xl-center {
+    align-items: center !important;
+  }
+
+  .align-items-xl-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-xl-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-xl-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-xl-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-xl-center {
+    align-content: center !important;
+  }
+
+  .align-content-xl-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-xl-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-xl-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-xl-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-xl-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-xl-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-xl-center {
+    align-self: center !important;
+  }
+
+  .align-self-xl-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-xl-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-xl-first {
+    order: -1 !important;
+  }
+
+  .order-xl-0 {
+    order: 0 !important;
+  }
+
+  .order-xl-1 {
+    order: 1 !important;
+  }
+
+  .order-xl-2 {
+    order: 2 !important;
+  }
+
+  .order-xl-3 {
+    order: 3 !important;
+  }
+
+  .order-xl-4 {
+    order: 4 !important;
+  }
+
+  .order-xl-5 {
+    order: 5 !important;
+  }
+
+  .order-xl-last {
+    order: 6 !important;
+  }
+
+  .m-xl-0 {
+    margin: 0 !important;
+  }
+
+  .m-xl-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-xl-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-xl-3 {
+    margin: 1rem !important;
+  }
+
+  .m-xl-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-xl-5 {
+    margin: 3rem !important;
+  }
+
+  .m-xl-auto {
+    margin: auto !important;
+  }
+
+  .mx-xl-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-xl-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-xl-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-xl-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-xl-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-xl-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-xl-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-xl-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-xl-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-xl-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-xl-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-xl-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-xl-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-xl-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-xl-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-xl-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-xl-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-xl-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-xl-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-xl-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-xl-auto {
+    margin-top: auto !important;
+  }
+
+  .me-xl-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-xl-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-xl-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-xl-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-xl-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-xl-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-xl-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-xl-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-xl-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-xl-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-xl-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-xl-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-xl-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-xl-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-xl-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-xl-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-xl-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-xl-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-xl-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-xl-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-xl-auto {
+    margin-left: auto !important;
+  }
+
+  .p-xl-0 {
+    padding: 0 !important;
+  }
+
+  .p-xl-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-xl-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-xl-3 {
+    padding: 1rem !important;
+  }
+
+  .p-xl-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-xl-5 {
+    padding: 3rem !important;
+  }
+
+  .px-xl-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-xl-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-xl-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-xl-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-xl-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-xl-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-xl-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-xl-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-xl-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-xl-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-xl-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-xl-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-xl-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-xl-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-xl-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-xl-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-xl-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-xl-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-xl-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-xl-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-xl-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-xl-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-xl-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-xl-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-xl-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-xl-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-xl-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-xl-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-xl-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-xl-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-xl-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-xl-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-xl-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-xl-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-xl-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-xl-5 {
+    padding-left: 3rem !important;
+  }
+}
+@media (min-width: 1400px) {
+  .d-xxl-inline {
+    display: inline !important;
+  }
+
+  .d-xxl-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-xxl-block {
+    display: block !important;
+  }
+
+  .d-xxl-grid {
+    display: grid !important;
+  }
+
+  .d-xxl-table {
+    display: table !important;
+  }
+
+  .d-xxl-table-row {
+    display: table-row !important;
+  }
+
+  .d-xxl-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-xxl-flex {
+    display: flex !important;
+  }
+
+  .d-xxl-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-xxl-none {
+    display: none !important;
+  }
+
+  .flex-xxl-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-xxl-row {
+    flex-direction: row !important;
+  }
+
+  .flex-xxl-column {
+    flex-direction: column !important;
+  }
+
+  .flex-xxl-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-xxl-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-xxl-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-xxl-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-xxl-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-xxl-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-xxl-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-xxl-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-xxl-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .justify-content-xxl-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-xxl-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-xxl-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-xxl-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-xxl-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-xxl-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-xxl-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-xxl-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-xxl-center {
+    align-items: center !important;
+  }
+
+  .align-items-xxl-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-xxl-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-xxl-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-xxl-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-xxl-center {
+    align-content: center !important;
+  }
+
+  .align-content-xxl-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-xxl-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-xxl-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-xxl-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-xxl-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-xxl-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-xxl-center {
+    align-self: center !important;
+  }
+
+  .align-self-xxl-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-xxl-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-xxl-first {
+    order: -1 !important;
+  }
+
+  .order-xxl-0 {
+    order: 0 !important;
+  }
+
+  .order-xxl-1 {
+    order: 1 !important;
+  }
+
+  .order-xxl-2 {
+    order: 2 !important;
+  }
+
+  .order-xxl-3 {
+    order: 3 !important;
+  }
+
+  .order-xxl-4 {
+    order: 4 !important;
+  }
+
+  .order-xxl-5 {
+    order: 5 !important;
+  }
+
+  .order-xxl-last {
+    order: 6 !important;
+  }
+
+  .m-xxl-0 {
+    margin: 0 !important;
+  }
+
+  .m-xxl-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-xxl-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-xxl-3 {
+    margin: 1rem !important;
+  }
+
+  .m-xxl-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-xxl-5 {
+    margin: 3rem !important;
+  }
+
+  .m-xxl-auto {
+    margin: auto !important;
+  }
+
+  .mx-xxl-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-xxl-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-xxl-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-xxl-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-xxl-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-xxl-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-xxl-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-xxl-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-xxl-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-xxl-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-xxl-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-xxl-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-xxl-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-xxl-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-xxl-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-xxl-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-xxl-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-xxl-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-xxl-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-xxl-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-xxl-auto {
+    margin-top: auto !important;
+  }
+
+  .me-xxl-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-xxl-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-xxl-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-xxl-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-xxl-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-xxl-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-xxl-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-xxl-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-xxl-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-xxl-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-xxl-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-xxl-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-xxl-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-xxl-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-xxl-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-xxl-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-xxl-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-xxl-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-xxl-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-xxl-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-xxl-auto {
+    margin-left: auto !important;
+  }
+
+  .p-xxl-0 {
+    padding: 0 !important;
+  }
+
+  .p-xxl-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-xxl-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-xxl-3 {
+    padding: 1rem !important;
+  }
+
+  .p-xxl-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-xxl-5 {
+    padding: 3rem !important;
+  }
+
+  .px-xxl-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-xxl-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-xxl-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-xxl-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-xxl-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-xxl-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-xxl-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-xxl-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-xxl-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-xxl-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-xxl-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-xxl-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-xxl-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-xxl-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-xxl-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-xxl-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-xxl-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-xxl-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-xxl-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-xxl-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-xxl-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-xxl-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-xxl-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-xxl-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-xxl-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-xxl-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-xxl-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-xxl-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-xxl-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-xxl-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-xxl-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-xxl-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-xxl-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-xxl-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-xxl-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-xxl-5 {
+    padding-left: 3rem !important;
+  }
+}
+@media print {
+  .d-print-inline {
+    display: inline !important;
+  }
+
+  .d-print-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-print-block {
+    display: block !important;
+  }
+
+  .d-print-grid {
+    display: grid !important;
+  }
+
+  .d-print-table {
+    display: table !important;
+  }
+
+  .d-print-table-row {
+    display: table-row !important;
+  }
+
+  .d-print-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-print-flex {
+    display: flex !important;
+  }
+
+  .d-print-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-print-none {
+    display: none !important;
+  }
+}
+
+/*# sourceMappingURL=bootstrap-grid.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map
new file mode 100644
index 0000000..c006d39
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap-grid.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","bootstrap-grid.css","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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AAA,+BAAA;AL2uDZ;;AKlvDQ;EAOI,yBAAA;AL+uDZ;;AKtvDQ;EAOI,+BAAA;ALmvDZ;;AK1vDQ;EAOI,8BAAA;ALuvDZ;;AK9vDQ;EAOI,4BAAA;AL2vDZ;;AKlwDQ;EAOI,8BAAA;AL+vDZ;;AKtwDQ;EAOI,4BAAA;ALmwDZ;;AK1wDQ;EAOI,2BAAA;ALuwDZ;;AK9wDQ;EAOI,iCAAA;AL2wDZ;;AKlxDQ;EAOI,gCAAA;AL+wDZ;;AKtxDQ;EAOI,8BAAA;ALmxDZ;;AK1xDQ;EAOI,gCAAA;ALuxDZ;;AK9xDQ;EAOI,8BAAA;AL2xDZ;;AKlyDQ;EAOI,4BAAA;AL+xDZ;;AKtyDQ;EAOI,kCAAA;ALmyDZ;;AK1yDQ;EAOI,iCAAA;ALuyDZ;;AK9yDQ;EAOI,+BAAA;AL2yDZ;;AKlzDQ;EAOI,iCAAA;AL+yDZ;;AKtzDQ;EAOI,+BAAA;ALmzDZ;;AK1zDQ;EAOI,0BAAA;ALuzDZ;;AK9zDQ;EAOI,gCAAA;AL2zDZ;;AKl0DQ;EAOI,+BAAA;AL+zDZ;;AKt0DQ;EAOI,6BAAA;ALm0DZ;;AK10DQ;EAOI,+BAAA;ALu0DZ;;AK90DQ;EAOI,6BAAA;AL20DZ;;ACl1DI;EIAI;IAOI,0BAAA;ELg1DV;;EKv1DM;IAOI,gCAAA;ELo1DV;;EK31DM;IAOI,yBAAA;ELw1DV;;EK/1DM;IAOI,wBAAA;EL41DV;;EKn2DM;IAOI,yBAAA;ELg2DV;;EKv2DM;IAOI,6BAAA;ELo2DV;;EK32DM;IAOI,8BAAA;ELw2DV;;EK/2DM;IAOI,wBAAA;EL42DV;;EKn3DM;IAOI,+BAAA;ELg3DV;;EKv3DM;IAOI,wBAAA;ELo3DV;;EK33DM;IAOI,yBAAA;ELw3DV;;EK/3DM;IAOI,8BAAA;EL43DV;;EKn4DM;IAOI,iCAAA;ELg4DV;;EKv4DM;IAOI,sCAAA;ELo4DV;;EK34DM;IAOI,yCAAA;ELw4DV;;EK/4DM;IAOI,uBAAA;EL44DV;;EKn5DM;IAOI,uBAAA;ELg5DV;;EKv5DM;IAOI,yBAAA;ELo5DV;;EK35DM;IAOI,yBAAA;ELw5DV;;EK/5DM;IAOI,0BAAA;EL45DV;;EKn6DM;IAOI,4BAAA;ELg6DV;;EKv6DM;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I,yBAAA;EL27EV;;EKl8EM;IAOI,6BAAA;EL+7EV;;EKt8EM;IAOI,8BAAA;ELm8EV;;EK18EM;IAOI,wBAAA;ELu8EV;;EK98EM;IAOI,+BAAA;EL28EV;;EKl9EM;IAOI,wBAAA;EL+8EV;;EKt9EM;IAOI,yBAAA;ELm9EV;;EK19EM;IAOI,8BAAA;ELu9EV;;EK99EM;IAOI,iCAAA;EL29EV;;EKl+EM;IAOI,sCAAA;EL+9EV;;EKt+EM;IAOI,yCAAA;ELm+EV;;EK1+EM;IAOI,uBAAA;ELu+EV;;EK9+EM;IAOI,uBAAA;EL2+EV;;EKl/EM;IAOI,yBAAA;EL++EV;;EKt/EM;IAOI,yBAAA;ELm/EV;;EK1/EM;IAOI,0BAAA;ELu/EV;;EK9/EM;IAOI,4BAAA;EL2/EV;;EKlgFM;IAOI,kCAAA;EL+/EV;;EKtgFM;IAOI,sCAAA;ELmgFV;;EK1gFM;IAOI,oCAAA;ELugFV;;EK9gFM;IAOI,kCAAA;EL2gFV;;EKlhFM;IAOI,yCAAA;EL+gFV;;EKthFM;IAOI,wCAAA;ELmhFV;;EK1hFM;IAOI,wCAAA;ELuhFV;;EK9hFM;IAOI,kCAAA;EL2hFV;;EKliFM;IAOI,gCAAA;EL+hFV;;EKtiFM;IAOI,8BAAA;ELmiFV;;EK1iFM;IAOI,gCAAA;ELuiFV;;EK9iFM;IAOI,+BAAA;EL2iFV;;EKljFM;IAOI,oCAAA;EL+iFV;;EKtjFM;IAOI,kCAAA;ELmjFV;;EK1jFM;IAOI,gCAAA;ELujFV;;EK9jFM;IAOI,uCAAA;EL2jFV;;EKlkFM;IAOI,sCAAA;EL+jFV;;EKtkFM;IAOI,iCAAA;ELmkFV;;EK1kFM;IAOI,2BAAA;ELukFV;;EK9kFM;IAOI,iCAAA;EL2kFV;;EKllFM;IAOI,+BAAA;EL+kFV;;EKtlFM;IAOI,6BAAA;ELmlFV;;EK1lFM;IAOI,+BAAA;ELulFV;;EK9lFM;IAOI,8BAAA;EL2lFV;;EKlmFM;IAOI,oBAAA;EL+lFV;;EKtmFM;IAOI,mBAAA;ELmmFV;;EK1mFM;IAOI,mBAAA;ELumFV;;EK9mFM;IAOI,mBAAA;EL2mFV;;EKlnFM;IAOI,mBAAA;EL+mFV;;EKtnFM;IAOI,mB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FV;;EKx9FM;IAOI,4BAAA;ELq9FV;;EK59FM;IAOI,kCAAA;ELy9FV;;EKh+FM;IAOI,iCAAA;EL69FV;;EKp+FM;IAOI,+BAAA;ELi+FV;;EKx+FM;IAOI,iCAAA;ELq+FV;;EK5+FM;IAOI,+BAAA;ELy+FV;;EKh/FM;IAOI,0BAAA;EL6+FV;;EKp/FM;IAOI,gCAAA;ELi/FV;;EKx/FM;IAOI,+BAAA;ELq/FV;;EK5/FM;IAOI,6BAAA;ELy/FV;;EKhgGM;IAOI,+BAAA;EL6/FV;;EKpgGM;IAOI,6BAAA;ELigGV;AACF;ACzgGI;EIAI;IAOI,0BAAA;ELsgGV;;EK7gGM;IAOI,gCAAA;EL0gGV;;EKjhGM;IAOI,yBAAA;EL8gGV;;EKrhGM;IAOI,wBAAA;ELkhGV;;EKzhGM;IAOI,yBAAA;ELshGV;;EK7hGM;IAOI,6BAAA;EL0hGV;;EKjiGM;IAOI,8BAAA;EL8hGV;;EKriGM;IAOI,wBAAA;ELkiGV;;EKziGM;IAOI,+BAAA;ELsiGV;;EK7iGM;IAOI,wBAAA;EL0iGV;;EKjjGM;IAOI,yBAAA;EL8iGV;;EKrjGM;IAOI,8BAAA;ELkjGV;;EKzjGM;IAOI,iCAAA;ELsjGV;;EK7jGM;IAOI,sCAAA;EL0jGV;;EKjkGM;IAOI,yCAAA;EL8jGV;;EKrkGM;IAOI,uBAAA;ELkkGV;;EKzkGM;IAOI,uBAAA;ELskGV;;EK7kGM;IAOI,yBAAA;EL0kGV;;EKjlGM;IAOI,yBAAA;EL8kGV;;EKrlGM;IAOI,0BAAA;ELklGV;;EKzlGM;IAOI,4BAAA;ELslGV;;EK7lGM;IAOI,kCAAA;EL0lGV;;EKjmGM;IAOI,sCAAA;EL8lGV;;EKrmGM;IAOI,oCAAA;ELkmGV;;EKzmGM;IAOI,kCAAA;ELsmGV;;EK7mGM;IAOI,yCAAA;EL0mGV;;EKjnGM;IAOI,wCAAA;EL8mGV;;EKrnGM;IAOI,wCAAA;ELknGV;;EKznGM;IAOI,kCAAA;ELsnGV;;EK7nGM;IAOI,gCAAA;EL0nGV;;EKjoGM;IAOI,8BAAA;EL8nGV;;EKroGM;IAOI,gCAAA;ELkoGV;;EKzoGM;IAOI,+BAAA;ELsoGV;;EK7oGM;IAOI,oCAAA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/rII;EIAI;IAOI,0BAAA;EL4rIV;;EKnsIM;IAOI,gCAAA;ELgsIV;;EKvsIM;IAOI,yBAAA;ELosIV;;EK3sIM;IAOI,wBAAA;ELwsIV;;EK/sIM;IAOI,yBAAA;EL4sIV;;EKntIM;IAOI,6BAAA;ELgtIV;;EKvtIM;IAOI,8BAAA;ELotIV;;EK3tIM;IAOI,wBAAA;ELwtIV;;EK/tIM;IAOI,+BAAA;EL4tIV;;EKnuIM;IAOI,wBAAA;ELguIV;;EKvuIM;IAOI,yBAAA;ELouIV;;EK3uIM;IAOI,8BAAA;ELwuIV;;EK/uIM;IAOI,iCAAA;EL4uIV;;EKnvIM;IAOI,sCAAA;ELgvIV;;EKvvIM;IAOI,yCAAA;ELovIV;;EK3vIM;IAOI,uBAAA;ELwvIV;;EK/vIM;IAOI,uBAAA;EL4vIV;;EKnwIM;IAOI,yBAAA;ELgwIV;;EKvwIM;IAOI,yBAAA;ELowIV;;EK3wIM;IAOI,0BAAA;ELwwIV;;EK/wIM;IAOI,4BAAA;EL4wIV;;EKnxIM;IAOI,kCAAA;ELgxIV;;EKvxIM;IAOI,sCAAA;ELoxIV;;EK3xIM;IAOI,oCAAA;ELwxIV;;EK/xIM;IAOI,kCAAA;EL4xIV;;EKnyIM;IAOI,yCAAA;ELgyIV;;EKvyIM;IAOI,wCAAA;ELoyIV;;EK3yIM;IAOI,wCAAA;ELwyIV;;EK/yIM;IAOI,kCAAA;EL4yIV;;EKnzIM;IAOI,gCAAA;ELgzIV;;EKvzIM;IAOI,8BAAA;ELozIV;;EK3zIM;IAOI,gCAAA;ELwzIV;;EK/zIM;IAOI,+BAAA;EL4zIV;;EKn0IM;IAOI,oCAAA;ELg0IV;;EKv0IM;IAOI,kCAAA;ELo0IV;;EK30IM;IAOI,gCAAA;ELw0IV;;EK/0IM;IAOI,uCAAA;EL40IV;;EKn1IM;IAOI,sCAAA;ELg1IV;;EKv1IM;IAOI,iCAAA;ELo1IV;;EK31IM;IAOI,2BAAA;ELw1IV;;EK/1IM;IAOI,iCAAA;EL41IV;;EKn2IM;IAOI,+BAAA;ELg2IV;;EKv2IM;IAOI,6BAAA;ELo2IV;;EK32IM;IAOI,+BAAA;ELw2IV;;EK/2IM;IAOI,8BAAA;EL42IV;;EKn3IM;IAOI,oBAAA;ELg3IV;;EKv3IM;IAOI,mBAAA;ELo3IV;;EK33IM;IAOI,mBAAA;ELw3IV;;EK/3IM;IAOI,mBAAA;EL43IV;;EKn4IM;IAOI,mBAAA;ELg4IV;;EKv4IM;IAOI,mBAAA;ELo4IV;;EK34IM;IAOI,mBAAA;ELw4IV;;EK/4IM;IAOI,mBAAA;EL44IV;;EKn5IM;IAOI,oBAAA;ELg5IV;;EKv5IM;IAOI,0BAAA;ELo5IV;;EK35IM;IAOI,yBAAA;ELw5IV;;EK/5IM;IAOI,uBAAA;EL45IV;;EKn6IM;IAOI,yBAAA;ELg6IV;;EKv6IM;IAOI,uBAAA;ELo6IV;;EK36IM;IAOI,uBAAA;ELw6IV;;EK/6IM;IAOI,0BAAA;IAAA,yBAAA;EL66IV;;EKp7IM;IAOI,gCAAA;IAAA,+BAAA;ELk7IV;;EKz7IM;IAOI,+BAAA;IAAA,8BAAA;ELu7IV;;EK97IM;IAOI,6BAAA;IAAA,4BAAA;EL47IV;;EKn8IM;IAOI,+BAAA;IAAA,8BAAA;ELi8IV;;EKx8IM;IAOI,6BAAA;IAAA,4BAAA;ELs8IV;;EK78IM;IAOI,6BAAA;IAAA,4BAAA;EL28IV;;EKl9IM;IAOI,wBAAA;IAAA,2BAAA;ELg9IV;;EKv9IM;IAOI,8BAAA;IAAA,iCAAA;ELq9IV;;EK59IM;IAOI,6BAAA;IAAA,gCAAA;EL09IV;;EKj+IM;IAOI,2BAAA;IAAA,8BAAA;EL+9IV;;EKt+IM;IAOI,6BAAA;IAAA,gCAAA;ELo+IV;;EK3+IM;IAOI,2BAAA;IAAA,8BAAA;ELy+IV;;EKh/IM;IAOI,2BAAA;IAAA,8BAAA;EL8+IV;;EKr/IM;IAOI,wBAAA;ELk/IV;;EKz/IM;IAOI,8BAAA;ELs/IV;;EK7/IM;IAOI,6BAAA;EL0/IV;;EKjgJM;IAOI,2BAAA;EL8/IV;;EKrgJM;IAOI,6BAAA;ELkgJV;;EKzgJM;IAOI,2BAAA;ELsgJV;;EK7gJM;IAOI,2BAAA;EL0gJV;;EKjhJM;IAOI,0BAAA;EL8gJV;;EKrhJM;IAOI,gCAAA;ELkhJV;;EKzhJM;IAOI,+BAAA;ELshJV;;EK7hJM;IAOI,6BAAA;EL0hJV;;EKjiJM;IAOI,+BAAA;EL8hJV;;EKriJM;IAOI,6BAAA;ELkiJV;;EKziJM;IAOI,6BAAA;ELsiJV;;EK7iJM;IAOI,2BAAA;EL0iJV;;EKjjJM;IAOI,iCAAA;EL8iJV;;EKrjJM;IAOI,gCAAA;ELkjJV;;EKzjJM;IAOI,8BAAA;ELsjJV;;EK7jJM;IAOI,gCAAA;EL0jJV;;EKjkJM;IAOI,8BAAA;EL8jJV;;EKrkJM;IAOI,8BAAA;ELkkJV;;EKzkJM;IAOI,yBAAA;ELskJV;;EK7kJM;IAOI,+BAAA;EL0kJV;;EKjlJM;IAOI,8BAAA;EL8kJV;;EKrlJM;IAOI,4BAAA;ELklJV;;EKzlJM;IAOI,8BAAA;ELslJV;;EK7lJM;IAOI,4BAAA;EL0lJV;;EKjmJM;IAOI,4BAAA;EL8lJV;;EKrmJM;IAOI,qBAAA;ELkmJV;;EKzmJM;IAOI,2BAAA;ELsmJV;;EK7mJM;IAOI,0BAAA;EL0mJV;;EKjnJM;IAOI,wBAAA;EL8mJV;;EKrnJM;IAOI,0BAAA;ELknJV;;EKznJM;IAOI,wBAAA;ELsnJV;;EK7nJM;IAOI,2BAAA;IAAA,0BAAA;EL2nJV;;EKloJM;IAOI,iCAAA;IAAA,gCAAA;ELgoJV;;EKvoJM;IAOI,gCAAA;IAAA,+BAAA;ELqoJV;;EK5oJM;IAOI,8BAAA;IAAA,6BAAA;EL0oJV;;EKjpJM;IAOI,gCAAA;IAAA,+BAAA;EL+oJV;;EKtpJM;IAOI,8BAAA;IAAA,6BAAA;ELopJV;;EK3pJM;IAOI,yBAAA;IAAA,4BAAA;ELypJV;;EKhqJM;IAOI,+BAAA;IAAA,kCAAA;EL8pJV;;EKrqJM;IAOI,8BAAA;IAAA,iCAAA;ELmqJV;;EK1qJM;IAOI,4BAAA;IAAA,+BAAA;ELwqJV;;EK/qJM;IAOI,8BAAA;IAAA,iCAAA;EL6qJV;;EKprJM;IAOI,4BAAA;IAAA,+BAAA;ELkrJV;;EKzrJM;IAOI,yBAAA;ELsrJV;;EK7rJM;IAOI,+BAAA;EL0rJV;;EKjsJM;IAOI,8BAAA;EL8rJV;;EKrsJM;IAOI,4BAAA;ELksJV;;EKzsJM;IAOI,8BAAA;ELssJV;;EK7sJM;IAOI,4BAAA;EL0sJV;;EKjtJM;IAOI,2BAAA;EL8sJV;;EKrtJM;IAOI,iCAAA;ELktJV;;EKztJM;IAOI,gCAAA;ELstJV;;EK7tJM;IAOI,8BAAA;EL0tJV;;EKjuJM;IAOI,gCAAA;EL8tJV;;EKruJM;IAOI,8BAAA;ELkuJV;;EKzuJM;IAOI,4BAAA;ELsuJV;;EK7uJM;IAOI,kCAAA;EL0uJV;;EKjvJM;IAOI,iCAAA;EL8uJV;;EKrvJM;IAOI,+BAAA;ELkvJV;;EKzvJM;IAOI,iCAAA;ELsvJV;;EK7vJM;IAOI,+BAAA;EL0vJV;;EKjwJM;IAOI,0BAAA;EL8vJV;;EKrwJM;IAOI,gCAAA;ELkwJV;;EKzwJM;IAOI,+BAAA;ELswJV;;EK7wJM;IAOI,6BAAA;EL0wJV;;EKjxJM;IAOI,+BAAA;EL8wJV;;EKrxJM;IAOI,6BAAA;ELkxJV;AACF;AMnzJA;EDyBQ;IAOI,0BAAA;ELuxJV;;EK9xJM;IAOI,gCAAA;EL2xJV;;EKlyJM;IAOI,yBAAA;EL+xJV;;EKtyJM;IAOI,wBAAA;ELmyJV;;EK1yJM;IAOI,yBAAA;ELuyJV;;EK9yJM;IAOI,6BAAA;EL2yJV;;EKlzJM;IAOI,8BAAA;EL+yJV;;EKtzJM;IAOI,wBAAA;ELmzJV;;EK1zJM;IAOI,+BAAA;ELuzJV;;EK9zJM;IAOI,wBAAA;EL2zJV;AACF","file":"bootstrap-grid.css","sourcesContent":["/*!\n * Bootstrap Grid v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n$include-column-box-sizing: true !default;\n\n@import \"functions\";\n@import \"variables\";\n\n@import \"mixins/lists\";\n@import \"mixins/breakpoints\";\n@import \"mixins/container\";\n@import \"mixins/grid\";\n@import \"mixins/utilities\";\n\n@import \"vendor/rfs\";\n\n@import \"containers\";\n@import \"grid\";\n\n@import \"utilities\";\n// Only use the utilities we need\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-get-multiple(\n  $utilities,\n  (\n    \"display\",\n    \"order\",\n    \"flex\",\n    \"flex-direction\",\n    \"flex-grow\",\n    \"flex-shrink\",\n    \"flex-wrap\",\n    \"justify-content\",\n    \"align-items\",\n    \"align-content\",\n    \"align-self\",\n    \"margin\",\n    \"margin-x\",\n    \"margin-y\",\n    \"margin-top\",\n    \"margin-end\",\n    \"margin-bottom\",\n    \"margin-start\",\n    \"negative-margin\",\n    \"negative-margin-x\",\n    \"negative-margin-y\",\n    \"negative-margin-top\",\n    \"negative-margin-end\",\n    \"negative-margin-bottom\",\n    \"negative-margin-start\",\n    \"padding\",\n    \"padding-x\",\n    \"padding-y\",\n    \"padding-top\",\n    \"padding-end\",\n    \"padding-bottom\",\n    \"padding-start\",\n  )\n);\n\n@import \"utilities/api\";\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n  // Single container class with breakpoint max-widths\n  .container,\n  // 100% wide container at all breakpoints\n  .container-fluid {\n    @include make-container();\n  }\n\n  // Responsive containers that are 100% wide until a breakpoint\n  @each $breakpoint, $container-max-width in $container-max-widths {\n    .container-#{$breakpoint} {\n      @extend .container-fluid;\n    }\n\n    @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n      %responsive-container-#{$breakpoint} {\n        max-width: $container-max-width;\n      }\n\n      // Extend each breakpoint which is smaller or equal to the current breakpoint\n      $extend-breakpoint: true;\n\n      @each $name, $width in $grid-breakpoints {\n        @if ($extend-breakpoint) {\n          .container#{breakpoint-infix($name, $grid-breakpoints)} {\n            @extend %responsive-container-#{$breakpoint};\n          }\n\n          // Once the current breakpoint is reached, stop extending\n          @if ($breakpoint == $name) {\n            $extend-breakpoint: false;\n          }\n        }\n      }\n    }\n  }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  width: 100%;\n  padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  margin-right: auto;\n  margin-left: auto;\n}\n","/*!\n * Bootstrap Grid v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n  width: 100%;\n  padding-right: var(--bs-gutter-x, 0.75rem);\n  padding-left: var(--bs-gutter-x, 0.75rem);\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container-sm, .container {\n    max-width: 540px;\n  }\n}\n@media (min-width: 768px) {\n  .container-md, .container-sm, .container {\n    max-width: 720px;\n  }\n}\n@media (min-width: 992px) {\n  .container-lg, .container-md, .container-sm, .container {\n    max-width: 960px;\n  }\n}\n@media (min-width: 1200px) {\n  .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1140px;\n  }\n}\n@media (min-width: 1400px) {\n  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1320px;\n  }\n}\n.row {\n  --bs-gutter-x: 1.5rem;\n  --bs-gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--bs-gutter-y) * -1);\n  margin-right: calc(var(--bs-gutter-x) * -.5);\n  margin-left: calc(var(--bs-gutter-x) * -.5);\n}\n.row > * {\n  box-sizing: border-box;\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%;\n  padding-right: calc(var(--bs-gutter-x) * .5);\n  padding-left: calc(var(--bs-gutter-x) * .5);\n  margin-top: var(--bs-gutter-y);\n}\n\n.col {\n  flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.row-cols-1 > * {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.row-cols-2 > * {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.row-cols-3 > * {\n  flex: 0 0 auto;\n  width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.row-cols-5 > * {\n  flex: 0 0 auto;\n  width: 20%;\n}\n\n.row-cols-6 > * {\n  flex: 0 0 auto;\n  width: 16.6666666667%;\n}\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.col-1 {\n  flex: 0 0 auto;\n  width: 8.33333333%;\n}\n\n.col-2 {\n  flex: 0 0 auto;\n  width: 16.66666667%;\n}\n\n.col-3 {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 auto;\n  width: 33.33333333%;\n}\n\n.col-5 {\n  flex: 0 0 auto;\n  width: 41.66666667%;\n}\n\n.col-6 {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 auto;\n  width: 58.33333333%;\n}\n\n.col-8 {\n  flex: 0 0 auto;\n  width: 66.66666667%;\n}\n\n.col-9 {\n  flex: 0 0 auto;\n  width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 auto;\n  width: 83.33333333%;\n}\n\n.col-11 {\n  flex: 0 0 auto;\n  width: 91.66666667%;\n}\n\n.col-12 {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.offset-1 {\n  margin-left: 8.33333333%;\n}\n\n.offset-2 {\n  margin-left: 16.66666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.33333333%;\n}\n\n.offset-5 {\n  margin-left: 41.66666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.33333333%;\n}\n\n.offset-8 {\n  margin-left: 66.66666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.33333333%;\n}\n\n.offset-11 {\n  margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n  --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n  --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n  --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n  --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n  --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n  --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n  --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n  --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n  --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n  --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n  --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n  --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-sm-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-sm-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-sm-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-sm-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-sm-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-sm-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-sm-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-sm-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-sm-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-sm-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-sm-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-sm-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-sm-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-sm-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-sm-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-sm-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-sm-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-sm-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-sm-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n\n  .offset-sm-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-sm-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n\n  .offset-sm-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-sm-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n\n  .offset-sm-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-sm-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n\n  .offset-sm-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-sm-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-sm-0,\n.gx-sm-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-sm-0,\n.gy-sm-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-sm-1,\n.gx-sm-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-sm-1,\n.gy-sm-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-sm-2,\n.gx-sm-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-sm-2,\n.gy-sm-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-sm-3,\n.gx-sm-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-sm-3,\n.gy-sm-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-sm-4,\n.gx-sm-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-sm-4,\n.gy-sm-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-sm-5,\n.gx-sm-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-sm-5,\n.gy-sm-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 768px) {\n  .col-md {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-md-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-md-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-md-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-md-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-md-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-md-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-md-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-md-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-md-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-md-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-md-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-md-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-md-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-md-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-md-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-md-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-md-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-md-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-md-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-md-0 {\n    margin-left: 0;\n  }\n\n  .offset-md-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-md-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n\n  .offset-md-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-md-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n\n  .offset-md-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-md-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n\n  .offset-md-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-md-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-md-0,\n.gx-md-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-md-0,\n.gy-md-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-md-1,\n.gx-md-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-md-1,\n.gy-md-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-md-2,\n.gx-md-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-md-2,\n.gy-md-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-md-3,\n.gx-md-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-md-3,\n.gy-md-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-md-4,\n.gx-md-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-md-4,\n.gy-md-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-md-5,\n.gx-md-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-md-5,\n.gy-md-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 992px) {\n  .col-lg {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-lg-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-lg-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-lg-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-lg-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-lg-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-lg-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-lg-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-lg-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-lg-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-lg-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-lg-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-lg-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-lg-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-lg-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-lg-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-lg-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-lg-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-lg-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-lg-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n\n  .offset-lg-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-lg-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n\n  .offset-lg-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-lg-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n\n  .offset-lg-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-lg-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n\n  .offset-lg-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-lg-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-lg-0,\n.gx-lg-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-lg-0,\n.gy-lg-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-lg-1,\n.gx-lg-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-lg-1,\n.gy-lg-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-lg-2,\n.gx-lg-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-lg-2,\n.gy-lg-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-lg-3,\n.gx-lg-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-lg-3,\n.gy-lg-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-lg-4,\n.gx-lg-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-lg-4,\n.gy-lg-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-lg-5,\n.gx-lg-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-lg-5,\n.gy-lg-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1200px) {\n  .col-xl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xl-0,\n.gx-xl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xl-0,\n.gy-xl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xl-1,\n.gx-xl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xl-1,\n.gy-xl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xl-2,\n.gx-xl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xl-2,\n.gy-xl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xl-3,\n.gx-xl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xl-3,\n.gy-xl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xl-4,\n.gx-xl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xl-4,\n.gy-xl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xl-5,\n.gx-xl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xl-5,\n.gy-xl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1400px) {\n  .col-xxl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xxl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xxl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xxl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xxl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xxl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xxl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xxl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xxl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xxl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xxl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xxl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xxl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xxl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xxl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xxl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xxl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xxl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xxl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xxl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xxl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xxl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xxl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xxl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xxl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xxl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xxl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xxl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xxl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xxl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xxl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xxl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xxl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xxl-0,\n.gx-xxl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xxl-0,\n.gy-xxl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xxl-1,\n.gx-xxl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xxl-1,\n.gy-xxl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xxl-2,\n.gx-xxl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xxl-2,\n.gy-xxl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xxl-3,\n.gx-xxl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xxl-3,\n.gy-xxl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xxl-4,\n.gx-xxl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xxl-4,\n.gy-xxl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xxl-5,\n.gx-xxl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xxl-5,\n.gy-xxl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-right: 0 !important;\n  margin-left: 0 !important;\n}\n\n.mx-1 {\n  margin-right: 0.25rem !important;\n  margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-right: 0.5rem !important;\n  margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-right: 1rem !important;\n  margin-left: 1rem !important;\n}\n\n.mx-4 {\n  margin-right: 1.5rem !important;\n  margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-right: 3rem !important;\n  margin-left: 3rem !important;\n}\n\n.mx-auto {\n  margin-right: auto !important;\n  margin-left: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-right: 0 !important;\n}\n\n.me-1 {\n  margin-right: 0.25rem !important;\n}\n\n.me-2 {\n  margin-right: 0.5rem !important;\n}\n\n.me-3 {\n  margin-right: 1rem !important;\n}\n\n.me-4 {\n  margin-right: 1.5rem !important;\n}\n\n.me-5 {\n  margin-right: 3rem !important;\n}\n\n.me-auto {\n  margin-right: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-left: 0 !important;\n}\n\n.ms-1 {\n  margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-left: 1rem !important;\n}\n\n.ms-4 {\n  margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-left: 3rem !important;\n}\n\n.ms-auto {\n  margin-left: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-right: 0 !important;\n  padding-left: 0 !important;\n}\n\n.px-1 {\n  padding-right: 0.25rem !important;\n  padding-left: 0.25rem !important;\n}\n\n.px-2 {\n  padding-right: 0.5rem !important;\n  padding-left: 0.5rem !important;\n}\n\n.px-3 {\n  padding-right: 1rem !important;\n  padding-left: 1rem !important;\n}\n\n.px-4 {\n  padding-right: 1.5rem !important;\n  padding-left: 1.5rem !important;\n}\n\n.px-5 {\n  padding-right: 3rem !important;\n  padding-left: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-right: 0 !important;\n}\n\n.pe-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-right: 1rem !important;\n}\n\n.pe-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-left: 0 !important;\n}\n\n.ps-1 {\n  padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-left: 1rem !important;\n}\n\n.ps-4 {\n  padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 768px) {\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-left: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 992px) {\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 1200px) {\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 1400px) {\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n  $n: index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n  }\n  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n  $min: map-get($breakpoints, $name);\n  @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n  $max: map-get($breakpoints, $name);\n  @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n  @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white:    #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black:    #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n  \"100\": $gray-100,\n  \"200\": $gray-200,\n  \"300\": $gray-300,\n  \"400\": $gray-400,\n  \"500\": $gray-500,\n  \"600\": $gray-600,\n  \"700\": $gray-700,\n  \"800\": $gray-800,\n  \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue:    #0d6efd !default;\n$indigo:  #6610f2 !default;\n$purple:  #6f42c1 !default;\n$pink:    #d63384 !default;\n$red:     #dc3545 !default;\n$orange:  #fd7e14 !default;\n$yellow:  #ffc107 !default;\n$green:   #198754 !default;\n$teal:    #20c997 !default;\n$cyan:    #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n  \"blue\":       $blue,\n  \"indigo\":     $indigo,\n  \"purple\":     $purple,\n  \"pink\":       $pink,\n  \"red\":        $red,\n  \"orange\":     $orange,\n  \"yellow\":     $yellow,\n  \"green\":      $green,\n  \"teal\":       $teal,\n  \"cyan\":       $cyan,\n  \"white\":      $white,\n  \"gray\":       $gray-600,\n  \"gray-dark\":  $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// scss-docs-start theme-color-variables\n$primary:       $blue !default;\n$secondary:     $gray-600 !default;\n$success:       $green !default;\n$info:          $cyan !default;\n$warning:       $yellow !default;\n$danger:        $red !default;\n$light:         $gray-100 !default;\n$dark:          $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n  \"primary\":    $primary,\n  \"secondary\":  $secondary,\n  \"success\":    $success,\n  \"info\":       $info,\n  \"warning\":    $warning,\n  \"danger\":     $danger,\n  \"light\":      $light,\n  \"dark\":       $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-colors-rgb\n$theme-colors-rgb: map-loop($theme-colors, to-rgb, \"$value\") !default;\n// scss-docs-end theme-colors-rgb\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio:   4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark:      $black !default;\n$color-contrast-light:     $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n  \"blue-100\": $blue-100,\n  \"blue-200\": $blue-200,\n  \"blue-300\": $blue-300,\n  \"blue-400\": $blue-400,\n  \"blue-500\": $blue-500,\n  \"blue-600\": $blue-600,\n  \"blue-700\": $blue-700,\n  \"blue-800\": $blue-800,\n  \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n  \"indigo-100\": $indigo-100,\n  \"indigo-200\": $indigo-200,\n  \"indigo-300\": $indigo-300,\n  \"indigo-400\": $indigo-400,\n  \"indigo-500\": $indigo-500,\n  \"indigo-600\": $indigo-600,\n  \"indigo-700\": $indigo-700,\n  \"indigo-800\": $indigo-800,\n  \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n  \"purple-100\": $purple-200,\n  \"purple-200\": $purple-100,\n  \"purple-300\": $purple-300,\n  \"purple-400\": $purple-400,\n  \"purple-500\": $purple-500,\n  \"purple-600\": $purple-600,\n  \"purple-700\": $purple-700,\n  \"purple-800\": $purple-800,\n  \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n  \"pink-100\": $pink-100,\n  \"pink-200\": $pink-200,\n  \"pink-300\": $pink-300,\n  \"pink-400\": $pink-400,\n  \"pink-500\": $pink-500,\n  \"pink-600\": $pink-600,\n  \"pink-700\": $pink-700,\n  \"pink-800\": $pink-800,\n  \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n  \"red-100\": $red-100,\n  \"red-200\": $red-200,\n  \"red-300\": $red-300,\n  \"red-400\": $red-400,\n  \"red-500\": $red-500,\n  \"red-600\": $red-600,\n  \"red-700\": $red-700,\n  \"red-800\": $red-800,\n  \"red-900\": $red-900\n) !default;\n\n$oranges: (\n  \"orange-100\": $orange-100,\n  \"orange-200\": $orange-200,\n  \"orange-300\": $orange-300,\n  \"orange-400\": $orange-400,\n  \"orange-500\": $orange-500,\n  \"orange-600\": $orange-600,\n  \"orange-700\": $orange-700,\n  \"orange-800\": $orange-800,\n  \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n  \"yellow-100\": $yellow-100,\n  \"yellow-200\": $yellow-200,\n  \"yellow-300\": $yellow-300,\n  \"yellow-400\": $yellow-400,\n  \"yellow-500\": $yellow-500,\n  \"yellow-600\": $yellow-600,\n  \"yellow-700\": $yellow-700,\n  \"yellow-800\": $yellow-800,\n  \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n  \"green-100\": $green-100,\n  \"green-200\": $green-200,\n  \"green-300\": $green-300,\n  \"green-400\": $green-400,\n  \"green-500\": $green-500,\n  \"green-600\": $green-600,\n  \"green-700\": $green-700,\n  \"green-800\": $green-800,\n  \"green-900\": $green-900\n) !default;\n\n$teals: (\n  \"teal-100\": $teal-100,\n  \"teal-200\": $teal-200,\n  \"teal-300\": $teal-300,\n  \"teal-400\": $teal-400,\n  \"teal-500\": $teal-500,\n  \"teal-600\": $teal-600,\n  \"teal-700\": $teal-700,\n  \"teal-800\": $teal-800,\n  \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n  \"cyan-100\": $cyan-100,\n  \"cyan-200\": $cyan-200,\n  \"cyan-300\": $cyan-300,\n  \"cyan-400\": $cyan-400,\n  \"cyan-500\": $cyan-500,\n  \"cyan-600\": $cyan-600,\n  \"cyan-700\": $cyan-700,\n  \"cyan-800\": $cyan-800,\n  \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              false !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-cssgrid:              false !default;\n$enable-button-pointers:      true !default;\n$enable-rfs:                  true !default;\n$enable-validation-icons:     true !default;\n$enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities:  true !default;\n\n// Prefix for :root CSS variables\n\n$variable-prefix:             bs- !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg:                   $white !default;\n$body-color:                $gray-900 !default;\n$body-text-align:           null !default;\n\n// Utilities maps\n//\n// Extends the default `$theme-colors` maps to help create our utilities.\n\n// scss-docs-start utilities-colors\n$utilities-colors: map-merge(\n  $theme-colors-rgb,\n  (\n    \"black\": to-rgb($black),\n    \"white\": to-rgb($white),\n    \"body\":  to-rgb($body-color)\n  )\n) !default;\n// scss-docs-end utilities-colors\n\n// scss-docs-start utilities-text-colors\n$utilities-text-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"text\") !default;\n// scss-docs-end utilities-text-colors\n\n// scss-docs-start utilities-bg-colors\n$utilities-bg-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"bg\") !default;\n// scss-docs-end utilities-bg-colors\n\n// Links\n//\n// Style anchor elements.\n\n$link-color:                              $primary !default;\n$link-decoration:                         underline !default;\n$link-shade-percentage:                   20% !default;\n$link-hover-color:                        shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration:                   null !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 992px,\n  xl: 1200px,\n  xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1140px,\n  xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns:                12 !default;\n$grid-gutter-width:           1.5rem !default;\n$grid-row-columns:            6 !default;\n\n$gutters: $spacers !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width * .5 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n\n$border-color:                $gray-300 !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius:               .25rem !default;\n$border-radius-sm:            .2rem !default;\n$border-radius-lg:            .3rem !default;\n$border-radius-pill:          50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow:                  0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm:               0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg:               0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset:            inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color:      $white !default;\n$component-active-bg:         $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width:                 .3em !default;\n$caret-vertical-align:        $caret-width * .85 !default;\n$caret-spacing:               $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"1x1\": 100%,\n  \"4x3\": calc(3 / 4 * 100%),\n  \"16x9\": calc(9 / 16 * 100%),\n  \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif:      system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base:            var(--#{$variable-prefix}font-sans-serif) !default;\n$font-family-code:            var(--#{$variable-prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root:              null !default;\n$font-size-base:              1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm:                $font-size-base * .875 !default;\n$font-size-lg:                $font-size-base * 1.25 !default;\n\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n\n$h1-font-size:                $font-size-base * 2.5 !default;\n$h2-font-size:                $font-size-base * 2 !default;\n$h3-font-size:                $font-size-base * 1.75 !default;\n$h4-font-size:                $font-size-base * 1.5 !default;\n$h5-font-size:                $font-size-base * 1.25 !default;\n$h6-font-size:                $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n  1: $h1-font-size,\n  2: $h2-font-size,\n  3: $h3-font-size,\n  4: $h4-font-size,\n  5: $h5-font-size,\n  6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n  1: 5rem,\n  2: 4.5rem,\n  3: 4rem,\n  4: 3.5rem,\n  5: 3rem,\n  6: 2.5rem\n) !default;\n\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size:              $font-size-base * 1.25 !default;\n$lead-font-weight:            300 !default;\n\n$small-font-size:             .875em !default;\n\n$sub-sup-font-size:           .75em !default;\n\n$text-muted:                  $gray-600 !default;\n\n$initialism-font-size:        $small-font-size !default;\n\n$blockquote-margin-y:         $spacer !default;\n$blockquote-font-size:        $font-size-base * 1.25 !default;\n$blockquote-footer-color:     $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y:                 $spacer !default;\n$hr-color:                    inherit !default;\n$hr-height:                   $border-width !default;\n$hr-opacity:                  .25 !default;\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$mark-padding:                .2em !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n$nested-kbd-font-weight:      $font-weight-bold !default;\n\n$list-inline-padding:         .5rem !default;\n\n$mark-bg:                     #fcf8e3 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y:        .5rem !default;\n$table-cell-padding-x:        .5rem !default;\n$table-cell-padding-y-sm:     .25rem !default;\n$table-cell-padding-x-sm:     .25rem !default;\n\n$table-cell-vertical-align:   top !default;\n\n$table-color:                 $body-color !default;\n$table-bg:                    transparent !default;\n$table-accent-bg:             transparent !default;\n\n$table-th-font-weight:        null !default;\n\n$table-striped-color:         $table-color !default;\n$table-striped-bg-factor:     .05 !default;\n$table-striped-bg:            rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color:          $table-color !default;\n$table-active-bg-factor:      .1 !default;\n$table-active-bg:             rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color:           $table-color !default;\n$table-hover-bg-factor:       .075 !default;\n$table-hover-bg:              rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor:         .1 !default;\n$table-border-width:          $border-width !default;\n$table-border-color:          $border-color !default;\n\n$table-striped-order:         odd !default;\n\n$table-group-separator-color: currentColor !default;\n\n$table-caption-color:         $text-muted !default;\n\n$table-bg-scale:              -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n  \"primary\":    shift-color($primary, $table-bg-scale),\n  \"secondary\":  shift-color($secondary, $table-bg-scale),\n  \"success\":    shift-color($success, $table-bg-scale),\n  \"info\":       shift-color($info, $table-bg-scale),\n  \"warning\":    shift-color($warning, $table-bg-scale),\n  \"danger\":     shift-color($danger, $table-bg-scale),\n  \"light\":      $light,\n  \"dark\":       $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y:         .375rem !default;\n$input-btn-padding-x:         .75rem !default;\n$input-btn-font-family:       null !default;\n$input-btn-font-size:         $font-size-base !default;\n$input-btn-line-height:       $line-height-base !default;\n\n$input-btn-focus-width:         .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color:         rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur:          0 !default;\n$input-btn-focus-box-shadow:    0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm:      .25rem !default;\n$input-btn-padding-x-sm:      .5rem !default;\n$input-btn-font-size-sm:      $font-size-sm !default;\n\n$input-btn-padding-y-lg:      .5rem !default;\n$input-btn-padding-x-lg:      1rem !default;\n$input-btn-font-size-lg:      $font-size-lg !default;\n\n$input-btn-border-width:      $border-width !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y:               $input-btn-padding-y !default;\n$btn-padding-x:               $input-btn-padding-x !default;\n$btn-font-family:             $input-btn-font-family !default;\n$btn-font-size:               $input-btn-font-size !default;\n$btn-line-height:             $input-btn-line-height !default;\n$btn-white-space:             null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm:            $input-btn-padding-y-sm !default;\n$btn-padding-x-sm:            $input-btn-padding-x-sm !default;\n$btn-font-size-sm:            $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg:            $input-btn-padding-y-lg !default;\n$btn-padding-x-lg:            $input-btn-padding-x-lg !default;\n$btn-font-size-lg:            $input-btn-font-size-lg !default;\n\n$btn-border-width:            $input-btn-border-width !default;\n\n$btn-font-weight:             $font-weight-normal !default;\n$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width:             $input-btn-focus-width !default;\n$btn-focus-box-shadow:        $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity:        .65 !default;\n$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color:              $link-color !default;\n$btn-link-hover-color:        $link-hover-color !default;\n$btn-link-disabled-color:     $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius:           $border-radius !default;\n$btn-border-radius-sm:        $border-radius-sm !default;\n$btn-border-radius-lg:        $border-radius-lg !default;\n\n$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount:       15% !default;\n$btn-hover-bg-tint-amount:        15% !default;\n$btn-hover-border-shade-amount:   20% !default;\n$btn-hover-border-tint-amount:    10% !default;\n$btn-active-bg-shade-amount:      20% !default;\n$btn-active-bg-tint-amount:       20% !default;\n$btn-active-border-shade-amount:  25% !default;\n$btn-active-border-tint-amount:   10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top:                  .25rem !default;\n$form-text-font-size:                   $small-font-size !default;\n$form-text-font-style:                  null !default;\n$form-text-font-weight:                 null !default;\n$form-text-color:                       $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom:              .5rem !default;\n$form-label-font-size:                  null !default;\n$form-label-font-style:                 null !default;\n$form-label-font-weight:                null !default;\n$form-label-color:                      null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y:                       $input-btn-padding-y !default;\n$input-padding-x:                       $input-btn-padding-x !default;\n$input-font-family:                     $input-btn-font-family !default;\n$input-font-size:                       $input-btn-font-size !default;\n$input-font-weight:                     $font-weight-base !default;\n$input-line-height:                     $input-btn-line-height !default;\n\n$input-padding-y-sm:                    $input-btn-padding-y-sm !default;\n$input-padding-x-sm:                    $input-btn-padding-x-sm !default;\n$input-font-size-sm:                    $input-btn-font-size-sm !default;\n\n$input-padding-y-lg:                    $input-btn-padding-y-lg !default;\n$input-padding-x-lg:                    $input-btn-padding-x-lg !default;\n$input-font-size-lg:                    $input-btn-font-size-lg !default;\n\n$input-bg:                              $body-bg !default;\n$input-disabled-bg:                     $gray-200 !default;\n$input-disabled-border-color:           null !default;\n\n$input-color:                           $body-color !default;\n$input-border-color:                    $gray-400 !default;\n$input-border-width:                    $input-btn-border-width !default;\n$input-box-shadow:                      $box-shadow-inset !default;\n\n$input-border-radius:                   $border-radius !default;\n$input-border-radius-sm:                $border-radius-sm !default;\n$input-border-radius-lg:                $border-radius-lg !default;\n\n$input-focus-bg:                        $input-bg !default;\n$input-focus-border-color:              tint-color($component-active-bg, 50%) !default;\n$input-focus-color:                     $input-color !default;\n$input-focus-width:                     $input-btn-focus-width !default;\n$input-focus-box-shadow:                $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color:               $gray-600 !default;\n$input-plaintext-color:                 $body-color !default;\n\n$input-height-border:                   $input-border-width * 2 !default;\n\n$input-height-inner:                    add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half:               add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter:            add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height:                          add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm:                       add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg:                       add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width:                      3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width:                  1em !default;\n$form-check-min-height:                   $font-size-base * $line-height-base !default;\n$form-check-padding-start:                $form-check-input-width + .5em !default;\n$form-check-margin-bottom:                .125rem !default;\n$form-check-label-color:                  null !default;\n$form-check-label-cursor:                 null !default;\n$form-check-transition:                   null !default;\n\n$form-check-input-active-filter:          brightness(90%) !default;\n\n$form-check-input-bg:                     $input-bg !default;\n$form-check-input-border:                 1px solid rgba($black, .25) !default;\n$form-check-input-border-radius:          .25em !default;\n$form-check-radio-border-radius:          50% !default;\n$form-check-input-focus-border:           $input-focus-border-color !default;\n$form-check-input-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color:          $component-active-color !default;\n$form-check-input-checked-bg-color:       $component-active-bg !default;\n$form-check-input-checked-border-color:   $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-checked-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/></svg>\") !default;\n$form-check-radio-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$form-check-input-checked-color}'/></svg>\") !default;\n\n$form-check-input-indeterminate-color:          $component-active-color !default;\n$form-check-input-indeterminate-bg-color:       $component-active-bg !default;\n$form-check-input-indeterminate-border-color:   $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-indeterminate-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>\") !default;\n\n$form-check-input-disabled-opacity:        .5 !default;\n$form-check-label-disabled-opacity:        $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity:    $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end:    1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color:               rgba(0, 0, 0, .25) !default;\n$form-switch-width:               2em !default;\n$form-switch-padding-start:       $form-switch-width + .5em !default;\n$form-switch-bg-image:            url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>\") !default;\n$form-switch-border-radius:       $form-switch-width !default;\n$form-switch-transition:          background-position .15s ease-in-out !default;\n\n$form-switch-focus-color:         $input-focus-border-color !default;\n$form-switch-focus-bg-image:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-focus-color}'/></svg>\") !default;\n\n$form-switch-checked-color:       $component-active-color !default;\n$form-switch-checked-bg-image:    url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y:           $input-padding-y !default;\n$input-group-addon-padding-x:           $input-padding-x !default;\n$input-group-addon-font-weight:         $input-font-weight !default;\n$input-group-addon-color:               $input-color !default;\n$input-group-addon-bg:                  $gray-200 !default;\n$input-group-addon-border-color:        $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y:             $input-padding-y !default;\n$form-select-padding-x:             $input-padding-x !default;\n$form-select-font-family:           $input-font-family !default;\n$form-select-font-size:             $input-font-size !default;\n$form-select-indicator-padding:     $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight:           $input-font-weight !default;\n$form-select-line-height:           $input-line-height !default;\n$form-select-color:                 $input-color !default;\n$form-select-bg:                    $input-bg !default;\n$form-select-disabled-color:        null !default;\n$form-select-disabled-bg:           $gray-200 !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position:           right $form-select-padding-x center !default;\n$form-select-bg-size:               16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color:       $gray-800 !default;\n$form-select-indicator:             url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/></svg>\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position:    center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size:        $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width:        $input-border-width !default;\n$form-select-border-color:        $input-border-color !default;\n$form-select-border-radius:       $border-radius !default;\n$form-select-box-shadow:          $box-shadow-inset !default;\n\n$form-select-focus-border-color:  $input-focus-border-color !default;\n$form-select-focus-width:         $input-focus-width !default;\n$form-select-focus-box-shadow:    0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm:        $input-padding-y-sm !default;\n$form-select-padding-x-sm:        $input-padding-x-sm !default;\n$form-select-font-size-sm:        $input-font-size-sm !default;\n\n$form-select-padding-y-lg:        $input-padding-y-lg !default;\n$form-select-padding-x-lg:        $input-padding-x-lg !default;\n$form-select-font-size-lg:        $input-font-size-lg !default;\n\n$form-select-transition:          $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width:          100% !default;\n$form-range-track-height:         .5rem !default;\n$form-range-track-cursor:         pointer !default;\n$form-range-track-bg:             $gray-300 !default;\n$form-range-track-border-radius:  1rem !default;\n$form-range-track-box-shadow:     $box-shadow-inset !default;\n\n$form-range-thumb-width:                   1rem !default;\n$form-range-thumb-height:                  $form-range-thumb-width !default;\n$form-range-thumb-bg:                      $component-active-bg !default;\n$form-range-thumb-border:                  0 !default;\n$form-range-thumb-border-radius:           1rem !default;\n$form-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width:  $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg:               tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg:             $gray-500 !default;\n$form-range-thumb-transition:              background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color:          $input-color !default;\n$form-file-button-bg:             $input-group-addon-bg !default;\n$form-file-button-hover-bg:       shade-color($form-file-button-bg, 5%) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height:            add(3.5rem, $input-height-border) !default;\n$form-floating-line-height:       1.25 !default;\n$form-floating-padding-x:         $input-padding-x !default;\n$form-floating-padding-y:         1rem !default;\n$form-floating-input-padding-t:   1.625rem !default;\n$form-floating-input-padding-b:   .625rem !default;\n$form-floating-label-opacity:     .65 !default;\n$form-floating-label-transform:   scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-transition:        opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top:          $form-text-margin-top !default;\n$form-feedback-font-size:           $form-text-font-size !default;\n$form-feedback-font-style:          $form-text-font-style !default;\n$form-feedback-valid-color:         $success !default;\n$form-feedback-invalid-color:       $danger !default;\n\n$form-feedback-icon-valid-color:    $form-feedback-valid-color !default;\n$form-feedback-icon-valid:          url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>\") !default;\n$form-feedback-icon-invalid-color:  $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid:        url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n  \"valid\": (\n    \"color\": $form-feedback-valid-color,\n    \"icon\": $form-feedback-icon-valid\n  ),\n  \"invalid\": (\n    \"color\": $form-feedback-invalid-color,\n    \"icon\": $form-feedback-icon-invalid\n  )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown:                   1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-modal-backdrop:             1050 !default;\n$zindex-modal:                      1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n// scss-docs-end zindex-stack\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y:                .5rem !default;\n$nav-link-padding-x:                1rem !default;\n$nav-link-font-size:                null !default;\n$nav-link-font-weight:              null !default;\n$nav-link-color:                    $link-color !default;\n$nav-link-hover-color:              $link-hover-color !default;\n$nav-link-transition:               color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color:           $gray-600 !default;\n\n$nav-tabs-border-color:             $gray-300 !default;\n$nav-tabs-border-width:             $border-width !default;\n$nav-tabs-border-radius:            $border-radius !default;\n$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color:        $gray-700 !default;\n$nav-tabs-link-active-bg:           $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius:           $border-radius !default;\n$nav-pills-link-active-color:       $component-active-color !default;\n$nav-pills-link-active-bg:          $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y:                  $spacer * .5 !default;\n$navbar-padding-x:                  null !default;\n\n$navbar-nav-link-padding-x:         .5rem !default;\n\n$navbar-brand-font-size:            $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height:                   $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end:           1rem !default;\n\n$navbar-toggler-padding-y:          .25rem !default;\n$navbar-toggler-padding-x:          .75rem !default;\n$navbar-toggler-font-size:          $font-size-lg !default;\n$navbar-toggler-border-radius:      $btn-border-radius !default;\n$navbar-toggler-focus-width:        $btn-focus-width !default;\n$navbar-toggler-transition:         box-shadow .15s ease-in-out !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-theme-variables\n$navbar-dark-color:                 rgba($white, .55) !default;\n$navbar-dark-hover-color:           rgba($white, .75) !default;\n$navbar-dark-active-color:          $white !default;\n$navbar-dark-disabled-color:        rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-dark-toggler-border-color:  rgba($white, .1) !default;\n\n$navbar-light-color:                rgba($black, .55) !default;\n$navbar-light-hover-color:          rgba($black, .7) !default;\n$navbar-light-active-color:         rgba($black, .9) !default;\n$navbar-light-disabled-color:       rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color:                $navbar-light-active-color !default;\n$navbar-light-brand-hover-color:          $navbar-light-active-color !default;\n$navbar-dark-brand-color:                 $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color:           $navbar-dark-active-color !default;\n// scss-docs-end navbar-theme-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width:                10rem !default;\n$dropdown-padding-x:                0 !default;\n$dropdown-padding-y:                .5rem !default;\n$dropdown-spacer:                   .125rem !default;\n$dropdown-font-size:                $font-size-base !default;\n$dropdown-color:                    $body-color !default;\n$dropdown-bg:                       $white !default;\n$dropdown-border-color:             rgba($black, .15) !default;\n$dropdown-border-radius:            $border-radius !default;\n$dropdown-border-width:             $border-width !default;\n$dropdown-inner-border-radius:      subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg:               $dropdown-border-color !default;\n$dropdown-divider-margin-y:         $spacer * .5 !default;\n$dropdown-box-shadow:               $box-shadow !default;\n\n$dropdown-link-color:               $gray-900 !default;\n$dropdown-link-hover-color:         shade-color($gray-900, 10%) !default;\n$dropdown-link-hover-bg:            $gray-200 !default;\n\n$dropdown-link-active-color:        $component-active-color !default;\n$dropdown-link-active-bg:           $component-active-bg !default;\n\n$dropdown-link-disabled-color:      $gray-500 !default;\n\n$dropdown-item-padding-y:           $spacer * .25 !default;\n$dropdown-item-padding-x:           $spacer !default;\n\n$dropdown-header-color:             $gray-600 !default;\n$dropdown-header-padding:           $dropdown-padding-y $dropdown-item-padding-x !default;\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color:               $gray-300 !default;\n$dropdown-dark-bg:                  $gray-800 !default;\n$dropdown-dark-border-color:        $dropdown-border-color !default;\n$dropdown-dark-divider-bg:          $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow:          null !default;\n$dropdown-dark-link-color:          $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color:    $white !default;\n$dropdown-dark-link-hover-bg:       rgba($white, .15) !default;\n$dropdown-dark-link-active-color:   $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg:      $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color:        $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y:              .375rem !default;\n$pagination-padding-x:              .75rem !default;\n$pagination-padding-y-sm:           .25rem !default;\n$pagination-padding-x-sm:           .5rem !default;\n$pagination-padding-y-lg:           .75rem !default;\n$pagination-padding-x-lg:           1.5rem !default;\n\n$pagination-color:                  $link-color !default;\n$pagination-bg:                     $white !default;\n$pagination-border-width:           $border-width !default;\n$pagination-border-radius:          $border-radius !default;\n$pagination-margin-start:           -$pagination-border-width !default;\n$pagination-border-color:           $gray-300 !default;\n\n$pagination-focus-color:            $link-hover-color !default;\n$pagination-focus-bg:               $gray-200 !default;\n$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n$pagination-focus-outline:          0 !default;\n\n$pagination-hover-color:            $link-hover-color !default;\n$pagination-hover-bg:               $gray-200 !default;\n$pagination-hover-border-color:     $gray-300 !default;\n\n$pagination-active-color:           $component-active-color !default;\n$pagination-active-bg:              $component-active-bg !default;\n$pagination-active-border-color:    $pagination-active-bg !default;\n\n$pagination-disabled-color:         $gray-600 !default;\n$pagination-disabled-bg:            $white !default;\n$pagination-disabled-border-color:  $gray-300 !default;\n\n$pagination-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm:       $border-radius-sm !default;\n$pagination-border-radius-lg:       $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max:           .5 !default;\n$placeholder-opacity-min:           .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y:                     $spacer !default;\n$card-spacer-x:                     $spacer !default;\n$card-title-spacer-y:               $spacer * .5 !default;\n$card-border-width:                 $border-width !default;\n$card-border-color:                 rgba($black, .125) !default;\n$card-border-radius:                $border-radius !default;\n$card-box-shadow:                   null !default;\n$card-inner-border-radius:          subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y:                $card-spacer-y * .5 !default;\n$card-cap-padding-x:                $card-spacer-x !default;\n$card-cap-bg:                       rgba($black, .03) !default;\n$card-cap-color:                    null !default;\n$card-height:                       null !default;\n$card-color:                        null !default;\n$card-bg:                           $white !default;\n$card-img-overlay-padding:          $spacer !default;\n$card-group-margin:                 $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y:                     1rem !default;\n$accordion-padding-x:                     1.25rem !default;\n$accordion-color:                         $body-color !default;\n$accordion-bg:                            $body-bg !default;\n$accordion-border-width:                  $border-width !default;\n$accordion-border-color:                  rgba($black, .125) !default;\n$accordion-border-radius:                 $border-radius !default;\n$accordion-inner-border-radius:           subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y:                $accordion-padding-y !default;\n$accordion-body-padding-x:                $accordion-padding-x !default;\n\n$accordion-button-padding-y:              $accordion-padding-y !default;\n$accordion-button-padding-x:              $accordion-padding-x !default;\n$accordion-button-color:                  $accordion-color !default;\n$accordion-button-bg:                     $accordion-bg !default;\n$accordion-transition:                    $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg:              tint-color($component-active-bg, 90%) !default;\n$accordion-button-active-color:           shade-color($primary, 10%) !default;\n\n$accordion-button-focus-border-color:     $input-focus-border-color !default;\n$accordion-button-focus-box-shadow:       $btn-focus-box-shadow !default;\n\n$accordion-icon-width:                    1.25rem !default;\n$accordion-icon-color:                    $accordion-button-color !default;\n$accordion-icon-active-color:             $accordion-button-active-color !default;\n$accordion-icon-transition:               transform .2s ease-in-out !default;\n$accordion-icon-transform:                rotate(-180deg) !default;\n\n$accordion-button-icon:         url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n$accordion-button-active-icon:  url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size:                 $font-size-sm !default;\n$tooltip-max-width:                 200px !default;\n$tooltip-color:                     $white !default;\n$tooltip-bg:                        $black !default;\n$tooltip-border-radius:             $border-radius !default;\n$tooltip-opacity:                   .9 !default;\n$tooltip-padding-y:                 $spacer * .25 !default;\n$tooltip-padding-x:                 $spacer * .5 !default;\n$tooltip-margin:                    0 !default;\n\n$tooltip-arrow-width:               .8rem !default;\n$tooltip-arrow-height:              .4rem !default;\n$tooltip-arrow-color:               $tooltip-bg !default;\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y:     $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x:     $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size:     $tooltip-font-size !default;\n$form-feedback-tooltip-line-height:   null !default;\n$form-feedback-tooltip-opacity:       $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size:                 $font-size-sm !default;\n$popover-bg:                        $white !default;\n$popover-max-width:                 276px !default;\n$popover-border-width:              $border-width !default;\n$popover-border-color:              rgba($black, .2) !default;\n$popover-border-radius:             $border-radius-lg !default;\n$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow:                $box-shadow !default;\n\n$popover-header-bg:                 shade-color($popover-bg, 6%) !default;\n$popover-header-color:              $headings-color !default;\n$popover-header-padding-y:          .5rem !default;\n$popover-header-padding-x:          $spacer !default;\n\n$popover-body-color:                $body-color !default;\n$popover-body-padding-y:            $spacer !default;\n$popover-body-padding-x:            $spacer !default;\n\n$popover-arrow-width:               1rem !default;\n$popover-arrow-height:              .5rem !default;\n$popover-arrow-color:               $popover-bg !default;\n\n$popover-arrow-outer-color:         fade-in($popover-border-color, .05) !default;\n// scss-docs-end popover-variables\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width:                   350px !default;\n$toast-padding-x:                   .75rem !default;\n$toast-padding-y:                   .5rem !default;\n$toast-font-size:                   .875rem !default;\n$toast-color:                       null !default;\n$toast-background-color:            rgba($white, .85) !default;\n$toast-border-width:                1px !default;\n$toast-border-color:                rgba(0, 0, 0, .1) !default;\n$toast-border-radius:               $border-radius !default;\n$toast-box-shadow:                  $box-shadow !default;\n$toast-spacing:                     $container-padding-x !default;\n\n$toast-header-color:                $gray-600 !default;\n$toast-header-background-color:     rgba($white, .85) !default;\n$toast-header-border-color:         rgba(0, 0, 0, .05) !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size:                   .75em !default;\n$badge-font-weight:                 $font-weight-bold !default;\n$badge-color:                       $white !default;\n$badge-padding-y:                   .35em !default;\n$badge-padding-x:                   .65em !default;\n$badge-border-radius:               $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding:               $spacer !default;\n\n$modal-footer-margin-between:       .5rem !default;\n\n$modal-dialog-margin:               .5rem !default;\n$modal-dialog-margin-y-sm-up:       1.75rem !default;\n\n$modal-title-line-height:           $line-height-base !default;\n\n$modal-content-color:               null !default;\n$modal-content-bg:                  $white !default;\n$modal-content-border-color:        rgba($black, .2) !default;\n$modal-content-border-width:        $border-width !default;\n$modal-content-border-radius:       $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs:       $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up:    $box-shadow !default;\n\n$modal-backdrop-bg:                 $black !default;\n$modal-backdrop-opacity:            .5 !default;\n$modal-header-border-color:         $border-color !default;\n$modal-footer-border-color:         $modal-header-border-color !default;\n$modal-header-border-width:         $modal-content-border-width !default;\n$modal-footer-border-width:         $modal-header-border-width !default;\n$modal-header-padding-y:            $modal-inner-padding !default;\n$modal-header-padding-x:            $modal-inner-padding !default;\n$modal-header-padding:              $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-sm:                          300px !default;\n$modal-md:                          500px !default;\n$modal-lg:                          800px !default;\n$modal-xl:                          1140px !default;\n\n$modal-fade-transform:              translate(0, -50px) !default;\n$modal-show-transform:              none !default;\n$modal-transition:                  transform .3s ease-out !default;\n$modal-scale-transform:             scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y:               $spacer !default;\n$alert-padding-x:               $spacer !default;\n$alert-margin-bottom:           1rem !default;\n$alert-border-radius:           $border-radius !default;\n$alert-link-font-weight:        $font-weight-bold !default;\n$alert-border-width:            $border-width !default;\n$alert-bg-scale:                -80% !default;\n$alert-border-scale:            -70% !default;\n$alert-color-scale:             40% !default;\n$alert-dismissible-padding-r:   $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height:                   1rem !default;\n$progress-font-size:                $font-size-base * .75 !default;\n$progress-bg:                       $gray-200 !default;\n$progress-border-radius:            $border-radius !default;\n$progress-box-shadow:               $box-shadow-inset !default;\n$progress-bar-color:                $white !default;\n$progress-bar-bg:                   $primary !default;\n$progress-bar-animation-timing:     1s linear infinite !default;\n$progress-bar-transition:           width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color:                  $gray-900 !default;\n$list-group-bg:                     $white !default;\n$list-group-border-color:           rgba($black, .125) !default;\n$list-group-border-width:           $border-width !default;\n$list-group-border-radius:          $border-radius !default;\n\n$list-group-item-padding-y:         $spacer * .5 !default;\n$list-group-item-padding-x:         $spacer !default;\n$list-group-item-bg-scale:          -80% !default;\n$list-group-item-color-scale:       40% !default;\n\n$list-group-hover-bg:               $gray-100 !default;\n$list-group-active-color:           $component-active-color !default;\n$list-group-active-bg:              $component-active-bg !default;\n$list-group-active-border-color:    $list-group-active-bg !default;\n\n$list-group-disabled-color:         $gray-600 !default;\n$list-group-disabled-bg:            $list-group-bg !default;\n\n$list-group-action-color:           $gray-700 !default;\n$list-group-action-hover-color:     $list-group-action-color !default;\n\n$list-group-action-active-color:    $body-color !default;\n$list-group-action-active-bg:       $gray-200 !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding:                 .25rem !default;\n$thumbnail-bg:                      $body-bg !default;\n$thumbnail-border-width:            $border-width !default;\n$thumbnail-border-color:            $gray-300 !default;\n$thumbnail-border-radius:           $border-radius !default;\n$thumbnail-box-shadow:              $box-shadow-sm !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size:          $small-font-size !default;\n$figure-caption-color:              $gray-600 !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size:              null !default;\n$breadcrumb-padding-y:              0 !default;\n$breadcrumb-padding-x:              0 !default;\n$breadcrumb-item-padding-x:         .5rem !default;\n$breadcrumb-margin-bottom:          1rem !default;\n$breadcrumb-bg:                     null !default;\n$breadcrumb-divider-color:          $gray-600 !default;\n$breadcrumb-active-color:           $gray-600 !default;\n$breadcrumb-divider:                quote(\"/\") !default;\n$breadcrumb-divider-flipped:        $breadcrumb-divider !default;\n$breadcrumb-border-radius:          null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color:             $white !default;\n$carousel-control-width:             15% !default;\n$carousel-control-opacity:           .5 !default;\n$carousel-control-hover-opacity:     .9 !default;\n$carousel-control-transition:        opacity .15s ease !default;\n\n$carousel-indicator-width:           30px !default;\n$carousel-indicator-height:          3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer:          3px !default;\n$carousel-indicator-opacity:         .5 !default;\n$carousel-indicator-active-bg:       $white !default;\n$carousel-indicator-active-opacity:  1 !default;\n$carousel-indicator-transition:      opacity .6s ease !default;\n\n$carousel-caption-width:             70% !default;\n$carousel-caption-color:             $white !default;\n$carousel-caption-padding-y:         1.25rem !default;\n$carousel-caption-spacer:            1.25rem !default;\n\n$carousel-control-icon-width:        2rem !default;\n\n$carousel-control-prev-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>\") !default;\n$carousel-control-next-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n\n$carousel-transition-duration:       .6s !default;\n$carousel-transition:                transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n$carousel-dark-indicator-active-bg:  $black !default;\n$carousel-dark-caption-color:        $black !default;\n$carousel-dark-control-icon-filter:  invert(1) grayscale(100) !default;\n// scss-docs-end carousel-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width:           2rem !default;\n$spinner-height:          $spinner-width !default;\n$spinner-vertical-align:  -.125em !default;\n$spinner-border-width:    .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm:        1rem !default;\n$spinner-height-sm:       $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width:            1em !default;\n$btn-close-height:           $btn-close-width !default;\n$btn-close-padding-x:        .25em !default;\n$btn-close-padding-y:        $btn-close-padding-x !default;\n$btn-close-color:            $black !default;\n$btn-close-bg:               url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/></svg>\") !default;\n$btn-close-focus-shadow:     $input-btn-focus-box-shadow !default;\n$btn-close-opacity:          .5 !default;\n$btn-close-hover-opacity:    .75 !default;\n$btn-close-focus-opacity:    1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter:     invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y:               $modal-inner-padding !default;\n$offcanvas-padding-x:               $modal-inner-padding !default;\n$offcanvas-horizontal-width:        400px !default;\n$offcanvas-vertical-height:         30vh !default;\n$offcanvas-transition-duration:     .3s !default;\n$offcanvas-border-color:            $modal-content-border-color !default;\n$offcanvas-border-width:            $modal-content-border-width !default;\n$offcanvas-title-line-height:       $modal-title-line-height !default;\n$offcanvas-bg-color:                $modal-content-bg !default;\n$offcanvas-color:                   $modal-content-color !default;\n$offcanvas-box-shadow:              $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg:             $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity:        $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size:                    $small-font-size !default;\n$code-color:                        $pink !default;\n\n$kbd-padding-y:                     .2rem !default;\n$kbd-padding-x:                     .4rem !default;\n$kbd-font-size:                     $code-font-size !default;\n$kbd-color:                         $white !default;\n$kbd-bg:                            $gray-900 !default;\n\n$pre-color:                         null !default;\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n  .row {\n    @include make-row();\n\n    > * {\n      @include make-col-ready();\n    }\n  }\n}\n\n@if $enable-cssgrid {\n  .grid {\n    display: grid;\n    grid-template-rows: repeat(var(--#{$variable-prefix}rows, 1), 1fr);\n    grid-template-columns: repeat(var(--#{$variable-prefix}columns, #{$grid-columns}), 1fr);\n    gap: var(--#{$variable-prefix}gap, #{$grid-gutter-width});\n\n    @include make-cssgrid();\n  }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n  @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n  --#{$variable-prefix}gutter-x: #{$gutter};\n  --#{$variable-prefix}gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list\n  margin-right: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n  margin-left: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n  // Add box sizing if only the grid is loaded\n  box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-right: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  padding-left: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  margin-top: var(--#{$variable-prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: percentage(divide($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: divide($size, $columns);\n  margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: divide(100%, $count);\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is and invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n  $values: map-get($utility, values);\n\n  // If the values are a list or string, convert it into a map\n  @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n    $values: zip($values, $values);\n  }\n\n  @each $key, $value in $values {\n    $properties: map-get($utility, property);\n\n    // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n    @if type-of($properties) == \"string\" {\n      $properties: append((), $properties);\n    }\n\n    // Use custom class if present\n    $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n    $property-class: if($property-class == null, \"\", $property-class);\n\n    // State params to generate pseudo-classes\n    $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n    $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (eg. with shadow class)\n    $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n    @if map-get($utility, rfs) {\n      // Inside the media query\n      @if $is-rfs-media-query {\n        $val: rfs-value($value);\n\n        // Do not render anything if fluid and non fluid values are the same\n        $value: if($val == rfs-fluid-value($value), null, $val);\n      }\n      @else {\n        $value: rfs-fluid-value($value);\n      }\n    }\n\n    $is-css-var: map-get($utility, css-var);\n    $is-local-vars: map-get($utility, local-vars);\n    $is-rtl: map-get($utility, rtl);\n\n    @if $value != null {\n      @if $is-rtl == false {\n        /* rtl:begin:remove */\n      }\n\n      @if $is-css-var {\n        .#{$property-class + $infix + $property-class-modifier} {\n          --#{$variable-prefix}#{$property-class}: #{$value};\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            --#{$variable-prefix}#{$property-class}: #{$value};\n          }\n        }\n      } @else {\n        .#{$property-class + $infix + $property-class-modifier} {\n          @each $property in $properties {\n            @if $is-local-vars {\n              @each $local-var, $value in $is-local-vars {\n                --#{$variable-prefix}#{$local-var}: #{$value};\n              }\n            }\n            #{$property}: $value if($enable-important-utilities, !important, null);\n          }\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            @each $property in $properties {\n              #{$property}: $value if($enable-important-utilities, !important, null);\n            }\n          }\n        }\n      }\n\n      @if $is-rtl == false {\n        /* rtl:end:remove */\n      }\n    }\n  }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n  // Generate media query if needed\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    // Loop over each utility property\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Only proceed if responsive media queries are enabled or if it's the base media query\n      @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n        @include generate-utility($utility, $infix);\n      }\n    }\n  }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix, true);\n        }\n      }\n    }\n  }\n}\n\n\n// Print utilities\n@media print {\n  @each $key, $utility in $utilities {\n    // The utility can be disabled with `false`, thus check if the utility is a map first\n    // Then check if the utility needs print styles\n    @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n      @include generate-utility($utility, \"-print\");\n    }\n  }\n}\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css
new file mode 100644
index 0000000..3160359
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap Grid v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
+/*# sourceMappingURL=bootstrap-grid.min.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map
new file mode 100644
index 0000000..4f745de
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap-grid.scss","../../scss/_containers.scss","dist/css/bootstrap-grid.css","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap Grid v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n$include-column-box-sizing: true !default;\n\n@import \"functions\";\n@import \"variables\";\n\n@import \"mixins/lists\";\n@import \"mixins/breakpoints\";\n@import \"mixins/container\";\n@import \"mixins/grid\";\n@import \"mixins/utilities\";\n\n@import \"vendor/rfs\";\n\n@import \"containers\";\n@import \"grid\";\n\n@import \"utilities\";\n// Only use the utilities we need\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-get-multiple(\n  $utilities,\n  (\n    \"display\",\n    \"order\",\n    \"flex\",\n    \"flex-direction\",\n    \"flex-grow\",\n    \"flex-shrink\",\n    \"flex-wrap\",\n    \"justify-content\",\n    \"align-items\",\n    \"align-content\",\n    \"align-self\",\n    \"margin\",\n    \"margin-x\",\n    \"margin-y\",\n    \"margin-top\",\n    \"margin-end\",\n    \"margin-bottom\",\n    \"margin-start\",\n    \"negative-margin\",\n    \"negative-margin-x\",\n    \"negative-margin-y\",\n    \"negative-margin-top\",\n    \"negative-margin-end\",\n    \"negative-margin-bottom\",\n    \"negative-margin-start\",\n    \"padding\",\n    \"padding-x\",\n    \"padding-y\",\n    \"padding-top\",\n    \"padding-end\",\n    \"padding-bottom\",\n    \"padding-start\",\n  )\n);\n\n@import \"utilities/api\";\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n  // Single container class with breakpoint max-widths\n  .container,\n  // 100% wide container at all breakpoints\n  .container-fluid {\n    @include make-container();\n  }\n\n  // Responsive containers that are 100% wide until a breakpoint\n  @each $breakpoint, $container-max-width in $container-max-widths {\n    .container-#{$breakpoint} {\n      @extend .container-fluid;\n    }\n\n    @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n      %responsive-container-#{$breakpoint} {\n        max-width: $container-max-width;\n      }\n\n      // Extend each breakpoint which is smaller or equal to the current breakpoint\n      $extend-breakpoint: true;\n\n      @each $name, $width in $grid-breakpoints {\n        @if ($extend-breakpoint) {\n          .container#{breakpoint-infix($name, $grid-breakpoints)} {\n            @extend %responsive-container-#{$breakpoint};\n          }\n\n          // Once the current breakpoint is reached, stop extending\n          @if ($breakpoint == $name) {\n            $extend-breakpoint: false;\n          }\n        }\n      }\n    }\n  }\n}\n","/*!\n * Bootstrap Grid v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n  width: 100%;\n  padding-right: var(--bs-gutter-x, 0.75rem);\n  padding-left: var(--bs-gutter-x, 0.75rem);\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container-sm, .container {\n    max-width: 540px;\n  }\n}\n@media (min-width: 768px) {\n  .container-md, .container-sm, .container {\n    max-width: 720px;\n  }\n}\n@media (min-width: 992px) {\n  .container-lg, .container-md, .container-sm, .container {\n    max-width: 960px;\n  }\n}\n@media (min-width: 1200px) {\n  .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1140px;\n  }\n}\n@media (min-width: 1400px) {\n  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1320px;\n  }\n}\n.row {\n  --bs-gutter-x: 1.5rem;\n  --bs-gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--bs-gutter-y) * -1);\n  margin-right: calc(var(--bs-gutter-x) * -.5);\n  margin-left: calc(var(--bs-gutter-x) * -.5);\n}\n.row > * {\n  box-sizing: border-box;\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%;\n  padding-right: calc(var(--bs-gutter-x) * .5);\n  padding-left: calc(var(--bs-gutter-x) * .5);\n  margin-top: var(--bs-gutter-y);\n}\n\n.col {\n  flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.row-cols-1 > * {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.row-cols-2 > * {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.row-cols-3 > * {\n  flex: 0 0 auto;\n  width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.row-cols-5 > * {\n  flex: 0 0 auto;\n  width: 20%;\n}\n\n.row-cols-6 > * {\n  flex: 0 0 auto;\n  width: 16.6666666667%;\n}\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.col-1 {\n  flex: 0 0 auto;\n  width: 8.33333333%;\n}\n\n.col-2 {\n  flex: 0 0 auto;\n  width: 16.66666667%;\n}\n\n.col-3 {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 auto;\n  width: 33.33333333%;\n}\n\n.col-5 {\n  flex: 0 0 auto;\n  width: 41.66666667%;\n}\n\n.col-6 {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 auto;\n  width: 58.33333333%;\n}\n\n.col-8 {\n  flex: 0 0 auto;\n  width: 66.66666667%;\n}\n\n.col-9 {\n  flex: 0 0 auto;\n  width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 auto;\n  width: 83.33333333%;\n}\n\n.col-11 {\n  flex: 0 0 auto;\n  width: 91.66666667%;\n}\n\n.col-12 {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.offset-1 {\n  margin-left: 8.33333333%;\n}\n\n.offset-2 {\n  margin-left: 16.66666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.33333333%;\n}\n\n.offset-5 {\n  margin-left: 41.66666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.33333333%;\n}\n\n.offset-8 {\n  margin-left: 66.66666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.33333333%;\n}\n\n.offset-11 {\n  margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n  --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n  --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n  --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n  --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n  --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n  --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n  --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n  --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n  --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n  --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n  --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n  --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-sm-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-sm-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-sm-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-sm-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-sm-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-sm-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-sm-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-sm-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-sm-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-sm-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-sm-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-sm-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-sm-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-sm-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-sm-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-sm-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-sm-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-sm-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-sm-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n\n  .offset-sm-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-sm-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n\n  .offset-sm-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-sm-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n\n  .offset-sm-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-sm-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n\n  .offset-sm-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-sm-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-sm-0,\n.gx-sm-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-sm-0,\n.gy-sm-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-sm-1,\n.gx-sm-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-sm-1,\n.gy-sm-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-sm-2,\n.gx-sm-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-sm-2,\n.gy-sm-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-sm-3,\n.gx-sm-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-sm-3,\n.gy-sm-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-sm-4,\n.gx-sm-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-sm-4,\n.gy-sm-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-sm-5,\n.gx-sm-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-sm-5,\n.gy-sm-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 768px) {\n  .col-md {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-md-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-md-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-md-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-md-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-md-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-md-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-md-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-md-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-md-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-md-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-md-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-md-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-md-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-md-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-md-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-md-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-md-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-md-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-md-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-md-0 {\n    margin-left: 0;\n  }\n\n  .offset-md-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-md-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n\n  .offset-md-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-md-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n\n  .offset-md-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-md-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n\n  .offset-md-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-md-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-md-0,\n.gx-md-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-md-0,\n.gy-md-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-md-1,\n.gx-md-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-md-1,\n.gy-md-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-md-2,\n.gx-md-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-md-2,\n.gy-md-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-md-3,\n.gx-md-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-md-3,\n.gy-md-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-md-4,\n.gx-md-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-md-4,\n.gy-md-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-md-5,\n.gx-md-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-md-5,\n.gy-md-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 992px) {\n  .col-lg {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-lg-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-lg-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-lg-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-lg-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-lg-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-lg-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-lg-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-lg-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-lg-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-lg-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-lg-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-lg-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-lg-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-lg-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-lg-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-lg-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-lg-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-lg-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-lg-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n\n  .offset-lg-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-lg-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n\n  .offset-lg-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-lg-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n\n  .offset-lg-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-lg-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n\n  .offset-lg-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-lg-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-lg-0,\n.gx-lg-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-lg-0,\n.gy-lg-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-lg-1,\n.gx-lg-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-lg-1,\n.gy-lg-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-lg-2,\n.gx-lg-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-lg-2,\n.gy-lg-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-lg-3,\n.gx-lg-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-lg-3,\n.gy-lg-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-lg-4,\n.gx-lg-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-lg-4,\n.gy-lg-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-lg-5,\n.gx-lg-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-lg-5,\n.gy-lg-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1200px) {\n  .col-xl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xl-0,\n.gx-xl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xl-0,\n.gy-xl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xl-1,\n.gx-xl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xl-1,\n.gy-xl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xl-2,\n.gx-xl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xl-2,\n.gy-xl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xl-3,\n.gx-xl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xl-3,\n.gy-xl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xl-4,\n.gx-xl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xl-4,\n.gy-xl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xl-5,\n.gx-xl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xl-5,\n.gy-xl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1400px) {\n  .col-xxl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xxl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xxl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xxl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xxl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xxl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xxl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xxl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xxl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xxl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xxl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xxl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xxl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xxl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xxl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xxl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xxl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xxl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xxl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xxl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xxl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xxl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xxl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xxl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xxl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xxl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xxl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xxl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xxl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xxl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xxl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xxl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xxl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xxl-0,\n.gx-xxl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xxl-0,\n.gy-xxl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xxl-1,\n.gx-xxl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xxl-1,\n.gy-xxl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xxl-2,\n.gx-xxl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xxl-2,\n.gy-xxl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xxl-3,\n.gx-xxl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xxl-3,\n.gy-xxl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xxl-4,\n.gx-xxl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xxl-4,\n.gy-xxl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xxl-5,\n.gx-xxl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xxl-5,\n.gy-xxl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-right: 0 !important;\n  margin-left: 0 !important;\n}\n\n.mx-1 {\n  margin-right: 0.25rem !important;\n  margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-right: 0.5rem !important;\n  margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-right: 1rem !important;\n  margin-left: 1rem !important;\n}\n\n.mx-4 {\n  margin-right: 1.5rem !important;\n  margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-right: 3rem !important;\n  margin-left: 3rem !important;\n}\n\n.mx-auto {\n  margin-right: auto !important;\n  margin-left: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-right: 0 !important;\n}\n\n.me-1 {\n  margin-right: 0.25rem !important;\n}\n\n.me-2 {\n  margin-right: 0.5rem !important;\n}\n\n.me-3 {\n  margin-right: 1rem !important;\n}\n\n.me-4 {\n  margin-right: 1.5rem !important;\n}\n\n.me-5 {\n  margin-right: 3rem !important;\n}\n\n.me-auto {\n  margin-right: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-left: 0 !important;\n}\n\n.ms-1 {\n  margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-left: 1rem !important;\n}\n\n.ms-4 {\n  margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-left: 3rem !important;\n}\n\n.ms-auto {\n  margin-left: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-right: 0 !important;\n  padding-left: 0 !important;\n}\n\n.px-1 {\n  padding-right: 0.25rem !important;\n  padding-left: 0.25rem !important;\n}\n\n.px-2 {\n  padding-right: 0.5rem !important;\n  padding-left: 0.5rem !important;\n}\n\n.px-3 {\n  padding-right: 1rem !important;\n  padding-left: 1rem !important;\n}\n\n.px-4 {\n  padding-right: 1.5rem !important;\n  padding-left: 1.5rem !important;\n}\n\n.px-5 {\n  padding-right: 3rem !important;\n  padding-left: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-right: 0 !important;\n}\n\n.pe-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-right: 1rem !important;\n}\n\n.pe-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-left: 0 !important;\n}\n\n.ps-1 {\n  padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-left: 1rem !important;\n}\n\n.ps-4 {\n  padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 768px) {\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-left: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 992px) {\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 1200px) {\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 1400px) {\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  width: 100%;\n  padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  margin-right: auto;\n  margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n  $n: index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n  }\n  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n  $min: map-get($breakpoints, $name);\n  @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n  $max: map-get($breakpoints, $name);\n  @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n  @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n  .row {\n    @include make-row();\n\n    > * {\n      @include make-col-ready();\n    }\n  }\n}\n\n@if $enable-cssgrid {\n  .grid {\n    display: grid;\n    grid-template-rows: repeat(var(--#{$variable-prefix}rows, 1), 1fr);\n    grid-template-columns: repeat(var(--#{$variable-prefix}columns, #{$grid-columns}), 1fr);\n    gap: var(--#{$variable-prefix}gap, #{$grid-gutter-width});\n\n    @include make-cssgrid();\n  }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n  @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n  --#{$variable-prefix}gutter-x: #{$gutter};\n  --#{$variable-prefix}gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list\n  margin-right: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n  margin-left: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n  // Add box sizing if only the grid is loaded\n  box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-right: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  padding-left: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  margin-top: var(--#{$variable-prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: percentage(divide($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: divide($size, $columns);\n  margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: divide(100%, $count);\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is and invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n  $values: map-get($utility, values);\n\n  // If the values are a list or string, convert it into a map\n  @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n    $values: zip($values, $values);\n  }\n\n  @each $key, $value in $values {\n    $properties: map-get($utility, property);\n\n    // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n    @if type-of($properties) == \"string\" {\n      $properties: append((), $properties);\n    }\n\n    // Use custom class if present\n    $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n    $property-class: if($property-class == null, \"\", $property-class);\n\n    // State params to generate pseudo-classes\n    $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n    $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (eg. with shadow class)\n    $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n    @if map-get($utility, rfs) {\n      // Inside the media query\n      @if $is-rfs-media-query {\n        $val: rfs-value($value);\n\n        // Do not render anything if fluid and non fluid values are the same\n        $value: if($val == rfs-fluid-value($value), null, $val);\n      }\n      @else {\n        $value: rfs-fluid-value($value);\n      }\n    }\n\n    $is-css-var: map-get($utility, css-var);\n    $is-local-vars: map-get($utility, local-vars);\n    $is-rtl: map-get($utility, rtl);\n\n    @if $value != null {\n      @if $is-rtl == false {\n        /* rtl:begin:remove */\n      }\n\n      @if $is-css-var {\n        .#{$property-class + $infix + $property-class-modifier} {\n          --#{$variable-prefix}#{$property-class}: #{$value};\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            --#{$variable-prefix}#{$property-class}: #{$value};\n          }\n        }\n      } @else {\n        .#{$property-class + $infix + $property-class-modifier} {\n          @each $property in $properties {\n            @if $is-local-vars {\n              @each $local-var, $value in $is-local-vars {\n                --#{$variable-prefix}#{$local-var}: #{$value};\n              }\n            }\n            #{$property}: $value if($enable-important-utilities, !important, null);\n          }\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            @each $property in $properties {\n              #{$property}: $value if($enable-important-utilities, !important, null);\n            }\n          }\n        }\n      }\n\n      @if $is-rtl == false {\n        /* rtl:end:remove */\n      }\n    }\n  }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n  // Generate media query if needed\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    // Loop over each utility property\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Only proceed if responsive media queries are enabled or if it's the base media query\n      @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n        @include generate-utility($utility, $infix);\n      }\n    }\n  }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix, true);\n        }\n      }\n    }\n  }\n}\n\n\n// Print utilities\n@media print {\n  @each $key, $utility in $utilities {\n    // The utility can be disabled with `false`, thus check if the utility is a map first\n    // Then check if the utility needs print styles\n    @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n      @include generate-utility($utility, \"-print\");\n    }\n  }\n}\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css
new file mode 100644
index 0000000..3c339b5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css
@@ -0,0 +1,4996 @@
+/*!
+ * Bootstrap Grid v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+.container,
+.container-fluid,
+.container-xxl,
+.container-xl,
+.container-lg,
+.container-md,
+.container-sm {
+  width: 100%;
+  padding-left: var(--bs-gutter-x, 0.75rem);
+  padding-right: var(--bs-gutter-x, 0.75rem);
+  margin-left: auto;
+  margin-right: auto;
+}
+
+@media (min-width: 576px) {
+  .container-sm, .container {
+    max-width: 540px;
+  }
+}
+@media (min-width: 768px) {
+  .container-md, .container-sm, .container {
+    max-width: 720px;
+  }
+}
+@media (min-width: 992px) {
+  .container-lg, .container-md, .container-sm, .container {
+    max-width: 960px;
+  }
+}
+@media (min-width: 1200px) {
+  .container-xl, .container-lg, .container-md, .container-sm, .container {
+    max-width: 1140px;
+  }
+}
+@media (min-width: 1400px) {
+  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
+    max-width: 1320px;
+  }
+}
+.row {
+  --bs-gutter-x: 1.5rem;
+  --bs-gutter-y: 0;
+  display: flex;
+  flex-wrap: wrap;
+  margin-top: calc(var(--bs-gutter-y) * -1);
+  margin-left: calc(var(--bs-gutter-x) * -.5);
+  margin-right: calc(var(--bs-gutter-x) * -.5);
+}
+.row > * {
+  box-sizing: border-box;
+  flex-shrink: 0;
+  width: 100%;
+  max-width: 100%;
+  padding-left: calc(var(--bs-gutter-x) * .5);
+  padding-right: calc(var(--bs-gutter-x) * .5);
+  margin-top: var(--bs-gutter-y);
+}
+
+.col {
+  flex: 1 0 0%;
+}
+
+.row-cols-auto > * {
+  flex: 0 0 auto;
+  width: auto;
+}
+
+.row-cols-1 > * {
+  flex: 0 0 auto;
+  width: 100%;
+}
+
+.row-cols-2 > * {
+  flex: 0 0 auto;
+  width: 50%;
+}
+
+.row-cols-3 > * {
+  flex: 0 0 auto;
+  width: 33.3333333333%;
+}
+
+.row-cols-4 > * {
+  flex: 0 0 auto;
+  width: 25%;
+}
+
+.row-cols-5 > * {
+  flex: 0 0 auto;
+  width: 20%;
+}
+
+.row-cols-6 > * {
+  flex: 0 0 auto;
+  width: 16.6666666667%;
+}
+
+.col-auto {
+  flex: 0 0 auto;
+  width: auto;
+}
+
+.col-1 {
+  flex: 0 0 auto;
+  width: 8.33333333%;
+}
+
+.col-2 {
+  flex: 0 0 auto;
+  width: 16.66666667%;
+}
+
+.col-3 {
+  flex: 0 0 auto;
+  width: 25%;
+}
+
+.col-4 {
+  flex: 0 0 auto;
+  width: 33.33333333%;
+}
+
+.col-5 {
+  flex: 0 0 auto;
+  width: 41.66666667%;
+}
+
+.col-6 {
+  flex: 0 0 auto;
+  width: 50%;
+}
+
+.col-7 {
+  flex: 0 0 auto;
+  width: 58.33333333%;
+}
+
+.col-8 {
+  flex: 0 0 auto;
+  width: 66.66666667%;
+}
+
+.col-9 {
+  flex: 0 0 auto;
+  width: 75%;
+}
+
+.col-10 {
+  flex: 0 0 auto;
+  width: 83.33333333%;
+}
+
+.col-11 {
+  flex: 0 0 auto;
+  width: 91.66666667%;
+}
+
+.col-12 {
+  flex: 0 0 auto;
+  width: 100%;
+}
+
+.offset-1 {
+  margin-right: 8.33333333%;
+}
+
+.offset-2 {
+  margin-right: 16.66666667%;
+}
+
+.offset-3 {
+  margin-right: 25%;
+}
+
+.offset-4 {
+  margin-right: 33.33333333%;
+}
+
+.offset-5 {
+  margin-right: 41.66666667%;
+}
+
+.offset-6 {
+  margin-right: 50%;
+}
+
+.offset-7 {
+  margin-right: 58.33333333%;
+}
+
+.offset-8 {
+  margin-right: 66.66666667%;
+}
+
+.offset-9 {
+  margin-right: 75%;
+}
+
+.offset-10 {
+  margin-right: 83.33333333%;
+}
+
+.offset-11 {
+  margin-right: 91.66666667%;
+}
+
+.g-0,
+.gx-0 {
+  --bs-gutter-x: 0;
+}
+
+.g-0,
+.gy-0 {
+  --bs-gutter-y: 0;
+}
+
+.g-1,
+.gx-1 {
+  --bs-gutter-x: 0.25rem;
+}
+
+.g-1,
+.gy-1 {
+  --bs-gutter-y: 0.25rem;
+}
+
+.g-2,
+.gx-2 {
+  --bs-gutter-x: 0.5rem;
+}
+
+.g-2,
+.gy-2 {
+  --bs-gutter-y: 0.5rem;
+}
+
+.g-3,
+.gx-3 {
+  --bs-gutter-x: 1rem;
+}
+
+.g-3,
+.gy-3 {
+  --bs-gutter-y: 1rem;
+}
+
+.g-4,
+.gx-4 {
+  --bs-gutter-x: 1.5rem;
+}
+
+.g-4,
+.gy-4 {
+  --bs-gutter-y: 1.5rem;
+}
+
+.g-5,
+.gx-5 {
+  --bs-gutter-x: 3rem;
+}
+
+.g-5,
+.gy-5 {
+  --bs-gutter-y: 3rem;
+}
+
+@media (min-width: 576px) {
+  .col-sm {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-sm-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-sm-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-sm-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-sm-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-sm-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-sm-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-sm-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-sm-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-sm-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-sm-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-sm-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-sm-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-sm-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-sm-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-sm-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-sm-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-sm-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-sm-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-sm-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-sm-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-sm-0 {
+    margin-right: 0;
+  }
+
+  .offset-sm-1 {
+    margin-right: 8.33333333%;
+  }
+
+  .offset-sm-2 {
+    margin-right: 16.66666667%;
+  }
+
+  .offset-sm-3 {
+    margin-right: 25%;
+  }
+
+  .offset-sm-4 {
+    margin-right: 33.33333333%;
+  }
+
+  .offset-sm-5 {
+    margin-right: 41.66666667%;
+  }
+
+  .offset-sm-6 {
+    margin-right: 50%;
+  }
+
+  .offset-sm-7 {
+    margin-right: 58.33333333%;
+  }
+
+  .offset-sm-8 {
+    margin-right: 66.66666667%;
+  }
+
+  .offset-sm-9 {
+    margin-right: 75%;
+  }
+
+  .offset-sm-10 {
+    margin-right: 83.33333333%;
+  }
+
+  .offset-sm-11 {
+    margin-right: 91.66666667%;
+  }
+
+  .g-sm-0,
+.gx-sm-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-sm-0,
+.gy-sm-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-sm-1,
+.gx-sm-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-sm-1,
+.gy-sm-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-sm-2,
+.gx-sm-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-sm-2,
+.gy-sm-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-sm-3,
+.gx-sm-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-sm-3,
+.gy-sm-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-sm-4,
+.gx-sm-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-sm-4,
+.gy-sm-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-sm-5,
+.gx-sm-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-sm-5,
+.gy-sm-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 768px) {
+  .col-md {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-md-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-md-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-md-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-md-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-md-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-md-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-md-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-md-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-md-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-md-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-md-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-md-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-md-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-md-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-md-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-md-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-md-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-md-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-md-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-md-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-md-0 {
+    margin-right: 0;
+  }
+
+  .offset-md-1 {
+    margin-right: 8.33333333%;
+  }
+
+  .offset-md-2 {
+    margin-right: 16.66666667%;
+  }
+
+  .offset-md-3 {
+    margin-right: 25%;
+  }
+
+  .offset-md-4 {
+    margin-right: 33.33333333%;
+  }
+
+  .offset-md-5 {
+    margin-right: 41.66666667%;
+  }
+
+  .offset-md-6 {
+    margin-right: 50%;
+  }
+
+  .offset-md-7 {
+    margin-right: 58.33333333%;
+  }
+
+  .offset-md-8 {
+    margin-right: 66.66666667%;
+  }
+
+  .offset-md-9 {
+    margin-right: 75%;
+  }
+
+  .offset-md-10 {
+    margin-right: 83.33333333%;
+  }
+
+  .offset-md-11 {
+    margin-right: 91.66666667%;
+  }
+
+  .g-md-0,
+.gx-md-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-md-0,
+.gy-md-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-md-1,
+.gx-md-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-md-1,
+.gy-md-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-md-2,
+.gx-md-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-md-2,
+.gy-md-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-md-3,
+.gx-md-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-md-3,
+.gy-md-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-md-4,
+.gx-md-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-md-4,
+.gy-md-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-md-5,
+.gx-md-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-md-5,
+.gy-md-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 992px) {
+  .col-lg {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-lg-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-lg-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-lg-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-lg-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-lg-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-lg-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-lg-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-lg-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-lg-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-lg-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-lg-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-lg-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-lg-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-lg-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-lg-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-lg-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-lg-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-lg-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-lg-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-lg-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-lg-0 {
+    margin-right: 0;
+  }
+
+  .offset-lg-1 {
+    margin-right: 8.33333333%;
+  }
+
+  .offset-lg-2 {
+    margin-right: 16.66666667%;
+  }
+
+  .offset-lg-3 {
+    margin-right: 25%;
+  }
+
+  .offset-lg-4 {
+    margin-right: 33.33333333%;
+  }
+
+  .offset-lg-5 {
+    margin-right: 41.66666667%;
+  }
+
+  .offset-lg-6 {
+    margin-right: 50%;
+  }
+
+  .offset-lg-7 {
+    margin-right: 58.33333333%;
+  }
+
+  .offset-lg-8 {
+    margin-right: 66.66666667%;
+  }
+
+  .offset-lg-9 {
+    margin-right: 75%;
+  }
+
+  .offset-lg-10 {
+    margin-right: 83.33333333%;
+  }
+
+  .offset-lg-11 {
+    margin-right: 91.66666667%;
+  }
+
+  .g-lg-0,
+.gx-lg-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-lg-0,
+.gy-lg-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-lg-1,
+.gx-lg-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-lg-1,
+.gy-lg-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-lg-2,
+.gx-lg-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-lg-2,
+.gy-lg-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-lg-3,
+.gx-lg-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-lg-3,
+.gy-lg-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-lg-4,
+.gx-lg-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-lg-4,
+.gy-lg-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-lg-5,
+.gx-lg-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-lg-5,
+.gy-lg-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 1200px) {
+  .col-xl {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-xl-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-xl-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-xl-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-xl-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-xl-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-xl-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-xl-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-xl-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-xl-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-xl-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-xl-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-xl-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-xl-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-xl-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-xl-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-xl-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-xl-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-xl-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-xl-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-xl-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-xl-0 {
+    margin-right: 0;
+  }
+
+  .offset-xl-1 {
+    margin-right: 8.33333333%;
+  }
+
+  .offset-xl-2 {
+    margin-right: 16.66666667%;
+  }
+
+  .offset-xl-3 {
+    margin-right: 25%;
+  }
+
+  .offset-xl-4 {
+    margin-right: 33.33333333%;
+  }
+
+  .offset-xl-5 {
+    margin-right: 41.66666667%;
+  }
+
+  .offset-xl-6 {
+    margin-right: 50%;
+  }
+
+  .offset-xl-7 {
+    margin-right: 58.33333333%;
+  }
+
+  .offset-xl-8 {
+    margin-right: 66.66666667%;
+  }
+
+  .offset-xl-9 {
+    margin-right: 75%;
+  }
+
+  .offset-xl-10 {
+    margin-right: 83.33333333%;
+  }
+
+  .offset-xl-11 {
+    margin-right: 91.66666667%;
+  }
+
+  .g-xl-0,
+.gx-xl-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-xl-0,
+.gy-xl-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-xl-1,
+.gx-xl-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-xl-1,
+.gy-xl-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-xl-2,
+.gx-xl-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-xl-2,
+.gy-xl-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-xl-3,
+.gx-xl-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-xl-3,
+.gy-xl-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-xl-4,
+.gx-xl-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-xl-4,
+.gy-xl-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-xl-5,
+.gx-xl-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-xl-5,
+.gy-xl-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 1400px) {
+  .col-xxl {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-xxl-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-xxl-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-xxl-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-xxl-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-xxl-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-xxl-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-xxl-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-xxl-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-xxl-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-xxl-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-xxl-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-xxl-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-xxl-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-xxl-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-xxl-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-xxl-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-xxl-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-xxl-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-xxl-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-xxl-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-xxl-0 {
+    margin-right: 0;
+  }
+
+  .offset-xxl-1 {
+    margin-right: 8.33333333%;
+  }
+
+  .offset-xxl-2 {
+    margin-right: 16.66666667%;
+  }
+
+  .offset-xxl-3 {
+    margin-right: 25%;
+  }
+
+  .offset-xxl-4 {
+    margin-right: 33.33333333%;
+  }
+
+  .offset-xxl-5 {
+    margin-right: 41.66666667%;
+  }
+
+  .offset-xxl-6 {
+    margin-right: 50%;
+  }
+
+  .offset-xxl-7 {
+    margin-right: 58.33333333%;
+  }
+
+  .offset-xxl-8 {
+    margin-right: 66.66666667%;
+  }
+
+  .offset-xxl-9 {
+    margin-right: 75%;
+  }
+
+  .offset-xxl-10 {
+    margin-right: 83.33333333%;
+  }
+
+  .offset-xxl-11 {
+    margin-right: 91.66666667%;
+  }
+
+  .g-xxl-0,
+.gx-xxl-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-xxl-0,
+.gy-xxl-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-xxl-1,
+.gx-xxl-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-xxl-1,
+.gy-xxl-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-xxl-2,
+.gx-xxl-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-xxl-2,
+.gy-xxl-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-xxl-3,
+.gx-xxl-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-xxl-3,
+.gy-xxl-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-xxl-4,
+.gx-xxl-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-xxl-4,
+.gy-xxl-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-xxl-5,
+.gx-xxl-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-xxl-5,
+.gy-xxl-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+.d-inline {
+  display: inline !important;
+}
+
+.d-inline-block {
+  display: inline-block !important;
+}
+
+.d-block {
+  display: block !important;
+}
+
+.d-grid {
+  display: grid !important;
+}
+
+.d-table {
+  display: table !important;
+}
+
+.d-table-row {
+  display: table-row !important;
+}
+
+.d-table-cell {
+  display: table-cell !important;
+}
+
+.d-flex {
+  display: flex !important;
+}
+
+.d-inline-flex {
+  display: inline-flex !important;
+}
+
+.d-none {
+  display: none !important;
+}
+
+.flex-fill {
+  flex: 1 1 auto !important;
+}
+
+.flex-row {
+  flex-direction: row !important;
+}
+
+.flex-column {
+  flex-direction: column !important;
+}
+
+.flex-row-reverse {
+  flex-direction: row-reverse !important;
+}
+
+.flex-column-reverse {
+  flex-direction: column-reverse !important;
+}
+
+.flex-grow-0 {
+  flex-grow: 0 !important;
+}
+
+.flex-grow-1 {
+  flex-grow: 1 !important;
+}
+
+.flex-shrink-0 {
+  flex-shrink: 0 !important;
+}
+
+.flex-shrink-1 {
+  flex-shrink: 1 !important;
+}
+
+.flex-wrap {
+  flex-wrap: wrap !important;
+}
+
+.flex-nowrap {
+  flex-wrap: nowrap !important;
+}
+
+.flex-wrap-reverse {
+  flex-wrap: wrap-reverse !important;
+}
+
+.justify-content-start {
+  justify-content: flex-start !important;
+}
+
+.justify-content-end {
+  justify-content: flex-end !important;
+}
+
+.justify-content-center {
+  justify-content: center !important;
+}
+
+.justify-content-between {
+  justify-content: space-between !important;
+}
+
+.justify-content-around {
+  justify-content: space-around !important;
+}
+
+.justify-content-evenly {
+  justify-content: space-evenly !important;
+}
+
+.align-items-start {
+  align-items: flex-start !important;
+}
+
+.align-items-end {
+  align-items: flex-end !important;
+}
+
+.align-items-center {
+  align-items: center !important;
+}
+
+.align-items-baseline {
+  align-items: baseline !important;
+}
+
+.align-items-stretch {
+  align-items: stretch !important;
+}
+
+.align-content-start {
+  align-content: flex-start !important;
+}
+
+.align-content-end {
+  align-content: flex-end !important;
+}
+
+.align-content-center {
+  align-content: center !important;
+}
+
+.align-content-between {
+  align-content: space-between !important;
+}
+
+.align-content-around {
+  align-content: space-around !important;
+}
+
+.align-content-stretch {
+  align-content: stretch !important;
+}
+
+.align-self-auto {
+  align-self: auto !important;
+}
+
+.align-self-start {
+  align-self: flex-start !important;
+}
+
+.align-self-end {
+  align-self: flex-end !important;
+}
+
+.align-self-center {
+  align-self: center !important;
+}
+
+.align-self-baseline {
+  align-self: baseline !important;
+}
+
+.align-self-stretch {
+  align-self: stretch !important;
+}
+
+.order-first {
+  order: -1 !important;
+}
+
+.order-0 {
+  order: 0 !important;
+}
+
+.order-1 {
+  order: 1 !important;
+}
+
+.order-2 {
+  order: 2 !important;
+}
+
+.order-3 {
+  order: 3 !important;
+}
+
+.order-4 {
+  order: 4 !important;
+}
+
+.order-5 {
+  order: 5 !important;
+}
+
+.order-last {
+  order: 6 !important;
+}
+
+.m-0 {
+  margin: 0 !important;
+}
+
+.m-1 {
+  margin: 0.25rem !important;
+}
+
+.m-2 {
+  margin: 0.5rem !important;
+}
+
+.m-3 {
+  margin: 1rem !important;
+}
+
+.m-4 {
+  margin: 1.5rem !important;
+}
+
+.m-5 {
+  margin: 3rem !important;
+}
+
+.m-auto {
+  margin: auto !important;
+}
+
+.mx-0 {
+  margin-left: 0 !important;
+  margin-right: 0 !important;
+}
+
+.mx-1 {
+  margin-left: 0.25rem !important;
+  margin-right: 0.25rem !important;
+}
+
+.mx-2 {
+  margin-left: 0.5rem !important;
+  margin-right: 0.5rem !important;
+}
+
+.mx-3 {
+  margin-left: 1rem !important;
+  margin-right: 1rem !important;
+}
+
+.mx-4 {
+  margin-left: 1.5rem !important;
+  margin-right: 1.5rem !important;
+}
+
+.mx-5 {
+  margin-left: 3rem !important;
+  margin-right: 3rem !important;
+}
+
+.mx-auto {
+  margin-left: auto !important;
+  margin-right: auto !important;
+}
+
+.my-0 {
+  margin-top: 0 !important;
+  margin-bottom: 0 !important;
+}
+
+.my-1 {
+  margin-top: 0.25rem !important;
+  margin-bottom: 0.25rem !important;
+}
+
+.my-2 {
+  margin-top: 0.5rem !important;
+  margin-bottom: 0.5rem !important;
+}
+
+.my-3 {
+  margin-top: 1rem !important;
+  margin-bottom: 1rem !important;
+}
+
+.my-4 {
+  margin-top: 1.5rem !important;
+  margin-bottom: 1.5rem !important;
+}
+
+.my-5 {
+  margin-top: 3rem !important;
+  margin-bottom: 3rem !important;
+}
+
+.my-auto {
+  margin-top: auto !important;
+  margin-bottom: auto !important;
+}
+
+.mt-0 {
+  margin-top: 0 !important;
+}
+
+.mt-1 {
+  margin-top: 0.25rem !important;
+}
+
+.mt-2 {
+  margin-top: 0.5rem !important;
+}
+
+.mt-3 {
+  margin-top: 1rem !important;
+}
+
+.mt-4 {
+  margin-top: 1.5rem !important;
+}
+
+.mt-5 {
+  margin-top: 3rem !important;
+}
+
+.mt-auto {
+  margin-top: auto !important;
+}
+
+.me-0 {
+  margin-left: 0 !important;
+}
+
+.me-1 {
+  margin-left: 0.25rem !important;
+}
+
+.me-2 {
+  margin-left: 0.5rem !important;
+}
+
+.me-3 {
+  margin-left: 1rem !important;
+}
+
+.me-4 {
+  margin-left: 1.5rem !important;
+}
+
+.me-5 {
+  margin-left: 3rem !important;
+}
+
+.me-auto {
+  margin-left: auto !important;
+}
+
+.mb-0 {
+  margin-bottom: 0 !important;
+}
+
+.mb-1 {
+  margin-bottom: 0.25rem !important;
+}
+
+.mb-2 {
+  margin-bottom: 0.5rem !important;
+}
+
+.mb-3 {
+  margin-bottom: 1rem !important;
+}
+
+.mb-4 {
+  margin-bottom: 1.5rem !important;
+}
+
+.mb-5 {
+  margin-bottom: 3rem !important;
+}
+
+.mb-auto {
+  margin-bottom: auto !important;
+}
+
+.ms-0 {
+  margin-right: 0 !important;
+}
+
+.ms-1 {
+  margin-right: 0.25rem !important;
+}
+
+.ms-2 {
+  margin-right: 0.5rem !important;
+}
+
+.ms-3 {
+  margin-right: 1rem !important;
+}
+
+.ms-4 {
+  margin-right: 1.5rem !important;
+}
+
+.ms-5 {
+  margin-right: 3rem !important;
+}
+
+.ms-auto {
+  margin-right: auto !important;
+}
+
+.p-0 {
+  padding: 0 !important;
+}
+
+.p-1 {
+  padding: 0.25rem !important;
+}
+
+.p-2 {
+  padding: 0.5rem !important;
+}
+
+.p-3 {
+  padding: 1rem !important;
+}
+
+.p-4 {
+  padding: 1.5rem !important;
+}
+
+.p-5 {
+  padding: 3rem !important;
+}
+
+.px-0 {
+  padding-left: 0 !important;
+  padding-right: 0 !important;
+}
+
+.px-1 {
+  padding-left: 0.25rem !important;
+  padding-right: 0.25rem !important;
+}
+
+.px-2 {
+  padding-left: 0.5rem !important;
+  padding-right: 0.5rem !important;
+}
+
+.px-3 {
+  padding-left: 1rem !important;
+  padding-right: 1rem !important;
+}
+
+.px-4 {
+  padding-left: 1.5rem !important;
+  padding-right: 1.5rem !important;
+}
+
+.px-5 {
+  padding-left: 3rem !important;
+  padding-right: 3rem !important;
+}
+
+.py-0 {
+  padding-top: 0 !important;
+  padding-bottom: 0 !important;
+}
+
+.py-1 {
+  padding-top: 0.25rem !important;
+  padding-bottom: 0.25rem !important;
+}
+
+.py-2 {
+  padding-top: 0.5rem !important;
+  padding-bottom: 0.5rem !important;
+}
+
+.py-3 {
+  padding-top: 1rem !important;
+  padding-bottom: 1rem !important;
+}
+
+.py-4 {
+  padding-top: 1.5rem !important;
+  padding-bottom: 1.5rem !important;
+}
+
+.py-5 {
+  padding-top: 3rem !important;
+  padding-bottom: 3rem !important;
+}
+
+.pt-0 {
+  padding-top: 0 !important;
+}
+
+.pt-1 {
+  padding-top: 0.25rem !important;
+}
+
+.pt-2 {
+  padding-top: 0.5rem !important;
+}
+
+.pt-3 {
+  padding-top: 1rem !important;
+}
+
+.pt-4 {
+  padding-top: 1.5rem !important;
+}
+
+.pt-5 {
+  padding-top: 3rem !important;
+}
+
+.pe-0 {
+  padding-left: 0 !important;
+}
+
+.pe-1 {
+  padding-left: 0.25rem !important;
+}
+
+.pe-2 {
+  padding-left: 0.5rem !important;
+}
+
+.pe-3 {
+  padding-left: 1rem !important;
+}
+
+.pe-4 {
+  padding-left: 1.5rem !important;
+}
+
+.pe-5 {
+  padding-left: 3rem !important;
+}
+
+.pb-0 {
+  padding-bottom: 0 !important;
+}
+
+.pb-1 {
+  padding-bottom: 0.25rem !important;
+}
+
+.pb-2 {
+  padding-bottom: 0.5rem !important;
+}
+
+.pb-3 {
+  padding-bottom: 1rem !important;
+}
+
+.pb-4 {
+  padding-bottom: 1.5rem !important;
+}
+
+.pb-5 {
+  padding-bottom: 3rem !important;
+}
+
+.ps-0 {
+  padding-right: 0 !important;
+}
+
+.ps-1 {
+  padding-right: 0.25rem !important;
+}
+
+.ps-2 {
+  padding-right: 0.5rem !important;
+}
+
+.ps-3 {
+  padding-right: 1rem !important;
+}
+
+.ps-4 {
+  padding-right: 1.5rem !important;
+}
+
+.ps-5 {
+  padding-right: 3rem !important;
+}
+
+@media (min-width: 576px) {
+  .d-sm-inline {
+    display: inline !important;
+  }
+
+  .d-sm-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-sm-block {
+    display: block !important;
+  }
+
+  .d-sm-grid {
+    display: grid !important;
+  }
+
+  .d-sm-table {
+    display: table !important;
+  }
+
+  .d-sm-table-row {
+    display: table-row !important;
+  }
+
+  .d-sm-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-sm-flex {
+    display: flex !important;
+  }
+
+  .d-sm-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-sm-none {
+    display: none !important;
+  }
+
+  .flex-sm-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-sm-row {
+    flex-direction: row !important;
+  }
+
+  .flex-sm-column {
+    flex-direction: column !important;
+  }
+
+  .flex-sm-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-sm-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-sm-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-sm-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-sm-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-sm-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-sm-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-sm-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-sm-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .justify-content-sm-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-sm-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-sm-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-sm-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-sm-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-sm-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-sm-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-sm-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-sm-center {
+    align-items: center !important;
+  }
+
+  .align-items-sm-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-sm-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-sm-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-sm-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-sm-center {
+    align-content: center !important;
+  }
+
+  .align-content-sm-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-sm-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-sm-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-sm-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-sm-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-sm-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-sm-center {
+    align-self: center !important;
+  }
+
+  .align-self-sm-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-sm-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-sm-first {
+    order: -1 !important;
+  }
+
+  .order-sm-0 {
+    order: 0 !important;
+  }
+
+  .order-sm-1 {
+    order: 1 !important;
+  }
+
+  .order-sm-2 {
+    order: 2 !important;
+  }
+
+  .order-sm-3 {
+    order: 3 !important;
+  }
+
+  .order-sm-4 {
+    order: 4 !important;
+  }
+
+  .order-sm-5 {
+    order: 5 !important;
+  }
+
+  .order-sm-last {
+    order: 6 !important;
+  }
+
+  .m-sm-0 {
+    margin: 0 !important;
+  }
+
+  .m-sm-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-sm-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-sm-3 {
+    margin: 1rem !important;
+  }
+
+  .m-sm-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-sm-5 {
+    margin: 3rem !important;
+  }
+
+  .m-sm-auto {
+    margin: auto !important;
+  }
+
+  .mx-sm-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-sm-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-sm-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-sm-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-sm-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-sm-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-sm-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-sm-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-sm-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-sm-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-sm-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-sm-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-sm-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-sm-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-sm-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-sm-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-sm-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-sm-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-sm-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-sm-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-sm-auto {
+    margin-top: auto !important;
+  }
+
+  .me-sm-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-sm-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-sm-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-sm-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-sm-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-sm-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-sm-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-sm-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-sm-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-sm-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-sm-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-sm-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-sm-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-sm-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-sm-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-sm-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-sm-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-sm-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-sm-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-sm-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-sm-auto {
+    margin-right: auto !important;
+  }
+
+  .p-sm-0 {
+    padding: 0 !important;
+  }
+
+  .p-sm-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-sm-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-sm-3 {
+    padding: 1rem !important;
+  }
+
+  .p-sm-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-sm-5 {
+    padding: 3rem !important;
+  }
+
+  .px-sm-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-sm-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-sm-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-sm-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-sm-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-sm-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-sm-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-sm-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-sm-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-sm-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-sm-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-sm-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-sm-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-sm-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-sm-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-sm-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-sm-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-sm-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-sm-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-sm-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-sm-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-sm-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-sm-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-sm-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-sm-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-sm-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-sm-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-sm-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-sm-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-sm-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-sm-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-sm-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-sm-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-sm-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-sm-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-sm-5 {
+    padding-right: 3rem !important;
+  }
+}
+@media (min-width: 768px) {
+  .d-md-inline {
+    display: inline !important;
+  }
+
+  .d-md-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-md-block {
+    display: block !important;
+  }
+
+  .d-md-grid {
+    display: grid !important;
+  }
+
+  .d-md-table {
+    display: table !important;
+  }
+
+  .d-md-table-row {
+    display: table-row !important;
+  }
+
+  .d-md-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-md-flex {
+    display: flex !important;
+  }
+
+  .d-md-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-md-none {
+    display: none !important;
+  }
+
+  .flex-md-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-md-row {
+    flex-direction: row !important;
+  }
+
+  .flex-md-column {
+    flex-direction: column !important;
+  }
+
+  .flex-md-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-md-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-md-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-md-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-md-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-md-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-md-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-md-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-md-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .justify-content-md-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-md-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-md-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-md-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-md-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-md-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-md-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-md-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-md-center {
+    align-items: center !important;
+  }
+
+  .align-items-md-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-md-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-md-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-md-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-md-center {
+    align-content: center !important;
+  }
+
+  .align-content-md-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-md-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-md-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-md-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-md-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-md-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-md-center {
+    align-self: center !important;
+  }
+
+  .align-self-md-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-md-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-md-first {
+    order: -1 !important;
+  }
+
+  .order-md-0 {
+    order: 0 !important;
+  }
+
+  .order-md-1 {
+    order: 1 !important;
+  }
+
+  .order-md-2 {
+    order: 2 !important;
+  }
+
+  .order-md-3 {
+    order: 3 !important;
+  }
+
+  .order-md-4 {
+    order: 4 !important;
+  }
+
+  .order-md-5 {
+    order: 5 !important;
+  }
+
+  .order-md-last {
+    order: 6 !important;
+  }
+
+  .m-md-0 {
+    margin: 0 !important;
+  }
+
+  .m-md-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-md-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-md-3 {
+    margin: 1rem !important;
+  }
+
+  .m-md-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-md-5 {
+    margin: 3rem !important;
+  }
+
+  .m-md-auto {
+    margin: auto !important;
+  }
+
+  .mx-md-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-md-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-md-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-md-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-md-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-md-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-md-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-md-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-md-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-md-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-md-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-md-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-md-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-md-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-md-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-md-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-md-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-md-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-md-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-md-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-md-auto {
+    margin-top: auto !important;
+  }
+
+  .me-md-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-md-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-md-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-md-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-md-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-md-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-md-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-md-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-md-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-md-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-md-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-md-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-md-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-md-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-md-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-md-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-md-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-md-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-md-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-md-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-md-auto {
+    margin-right: auto !important;
+  }
+
+  .p-md-0 {
+    padding: 0 !important;
+  }
+
+  .p-md-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-md-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-md-3 {
+    padding: 1rem !important;
+  }
+
+  .p-md-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-md-5 {
+    padding: 3rem !important;
+  }
+
+  .px-md-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-md-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-md-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-md-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-md-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-md-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-md-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-md-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-md-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-md-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-md-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-md-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-md-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-md-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-md-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-md-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-md-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-md-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-md-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-md-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-md-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-md-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-md-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-md-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-md-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-md-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-md-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-md-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-md-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-md-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-md-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-md-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-md-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-md-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-md-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-md-5 {
+    padding-right: 3rem !important;
+  }
+}
+@media (min-width: 992px) {
+  .d-lg-inline {
+    display: inline !important;
+  }
+
+  .d-lg-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-lg-block {
+    display: block !important;
+  }
+
+  .d-lg-grid {
+    display: grid !important;
+  }
+
+  .d-lg-table {
+    display: table !important;
+  }
+
+  .d-lg-table-row {
+    display: table-row !important;
+  }
+
+  .d-lg-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-lg-flex {
+    display: flex !important;
+  }
+
+  .d-lg-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-lg-none {
+    display: none !important;
+  }
+
+  .flex-lg-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-lg-row {
+    flex-direction: row !important;
+  }
+
+  .flex-lg-column {
+    flex-direction: column !important;
+  }
+
+  .flex-lg-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-lg-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-lg-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-lg-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-lg-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-lg-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-lg-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-lg-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-lg-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .justify-content-lg-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-lg-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-lg-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-lg-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-lg-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-lg-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-lg-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-lg-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-lg-center {
+    align-items: center !important;
+  }
+
+  .align-items-lg-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-lg-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-lg-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-lg-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-lg-center {
+    align-content: center !important;
+  }
+
+  .align-content-lg-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-lg-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-lg-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-lg-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-lg-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-lg-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-lg-center {
+    align-self: center !important;
+  }
+
+  .align-self-lg-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-lg-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-lg-first {
+    order: -1 !important;
+  }
+
+  .order-lg-0 {
+    order: 0 !important;
+  }
+
+  .order-lg-1 {
+    order: 1 !important;
+  }
+
+  .order-lg-2 {
+    order: 2 !important;
+  }
+
+  .order-lg-3 {
+    order: 3 !important;
+  }
+
+  .order-lg-4 {
+    order: 4 !important;
+  }
+
+  .order-lg-5 {
+    order: 5 !important;
+  }
+
+  .order-lg-last {
+    order: 6 !important;
+  }
+
+  .m-lg-0 {
+    margin: 0 !important;
+  }
+
+  .m-lg-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-lg-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-lg-3 {
+    margin: 1rem !important;
+  }
+
+  .m-lg-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-lg-5 {
+    margin: 3rem !important;
+  }
+
+  .m-lg-auto {
+    margin: auto !important;
+  }
+
+  .mx-lg-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-lg-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-lg-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-lg-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-lg-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-lg-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-lg-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-lg-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-lg-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-lg-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-lg-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-lg-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-lg-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-lg-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-lg-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-lg-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-lg-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-lg-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-lg-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-lg-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-lg-auto {
+    margin-top: auto !important;
+  }
+
+  .me-lg-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-lg-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-lg-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-lg-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-lg-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-lg-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-lg-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-lg-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-lg-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-lg-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-lg-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-lg-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-lg-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-lg-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-lg-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-lg-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-lg-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-lg-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-lg-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-lg-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-lg-auto {
+    margin-right: auto !important;
+  }
+
+  .p-lg-0 {
+    padding: 0 !important;
+  }
+
+  .p-lg-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-lg-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-lg-3 {
+    padding: 1rem !important;
+  }
+
+  .p-lg-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-lg-5 {
+    padding: 3rem !important;
+  }
+
+  .px-lg-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-lg-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-lg-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-lg-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-lg-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-lg-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-lg-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-lg-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-lg-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-lg-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-lg-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-lg-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-lg-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-lg-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-lg-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-lg-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-lg-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-lg-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-lg-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-lg-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-lg-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-lg-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-lg-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-lg-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-lg-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-lg-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-lg-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-lg-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-lg-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-lg-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-lg-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-lg-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-lg-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-lg-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-lg-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-lg-5 {
+    padding-right: 3rem !important;
+  }
+}
+@media (min-width: 1200px) {
+  .d-xl-inline {
+    display: inline !important;
+  }
+
+  .d-xl-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-xl-block {
+    display: block !important;
+  }
+
+  .d-xl-grid {
+    display: grid !important;
+  }
+
+  .d-xl-table {
+    display: table !important;
+  }
+
+  .d-xl-table-row {
+    display: table-row !important;
+  }
+
+  .d-xl-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-xl-flex {
+    display: flex !important;
+  }
+
+  .d-xl-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-xl-none {
+    display: none !important;
+  }
+
+  .flex-xl-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-xl-row {
+    flex-direction: row !important;
+  }
+
+  .flex-xl-column {
+    flex-direction: column !important;
+  }
+
+  .flex-xl-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-xl-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-xl-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-xl-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-xl-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-xl-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-xl-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-xl-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-xl-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .justify-content-xl-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-xl-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-xl-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-xl-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-xl-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-xl-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-xl-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-xl-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-xl-center {
+    align-items: center !important;
+  }
+
+  .align-items-xl-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-xl-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-xl-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-xl-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-xl-center {
+    align-content: center !important;
+  }
+
+  .align-content-xl-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-xl-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-xl-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-xl-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-xl-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-xl-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-xl-center {
+    align-self: center !important;
+  }
+
+  .align-self-xl-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-xl-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-xl-first {
+    order: -1 !important;
+  }
+
+  .order-xl-0 {
+    order: 0 !important;
+  }
+
+  .order-xl-1 {
+    order: 1 !important;
+  }
+
+  .order-xl-2 {
+    order: 2 !important;
+  }
+
+  .order-xl-3 {
+    order: 3 !important;
+  }
+
+  .order-xl-4 {
+    order: 4 !important;
+  }
+
+  .order-xl-5 {
+    order: 5 !important;
+  }
+
+  .order-xl-last {
+    order: 6 !important;
+  }
+
+  .m-xl-0 {
+    margin: 0 !important;
+  }
+
+  .m-xl-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-xl-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-xl-3 {
+    margin: 1rem !important;
+  }
+
+  .m-xl-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-xl-5 {
+    margin: 3rem !important;
+  }
+
+  .m-xl-auto {
+    margin: auto !important;
+  }
+
+  .mx-xl-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-xl-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-xl-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-xl-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-xl-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-xl-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-xl-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-xl-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-xl-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-xl-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-xl-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-xl-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-xl-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-xl-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-xl-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-xl-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-xl-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-xl-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-xl-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-xl-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-xl-auto {
+    margin-top: auto !important;
+  }
+
+  .me-xl-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-xl-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-xl-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-xl-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-xl-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-xl-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-xl-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-xl-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-xl-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-xl-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-xl-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-xl-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-xl-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-xl-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-xl-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-xl-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-xl-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-xl-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-xl-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-xl-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-xl-auto {
+    margin-right: auto !important;
+  }
+
+  .p-xl-0 {
+    padding: 0 !important;
+  }
+
+  .p-xl-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-xl-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-xl-3 {
+    padding: 1rem !important;
+  }
+
+  .p-xl-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-xl-5 {
+    padding: 3rem !important;
+  }
+
+  .px-xl-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-xl-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-xl-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-xl-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-xl-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-xl-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-xl-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-xl-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-xl-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-xl-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-xl-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-xl-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-xl-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-xl-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-xl-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-xl-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-xl-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-xl-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-xl-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-xl-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-xl-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-xl-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-xl-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-xl-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-xl-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-xl-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-xl-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-xl-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-xl-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-xl-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-xl-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-xl-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-xl-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-xl-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-xl-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-xl-5 {
+    padding-right: 3rem !important;
+  }
+}
+@media (min-width: 1400px) {
+  .d-xxl-inline {
+    display: inline !important;
+  }
+
+  .d-xxl-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-xxl-block {
+    display: block !important;
+  }
+
+  .d-xxl-grid {
+    display: grid !important;
+  }
+
+  .d-xxl-table {
+    display: table !important;
+  }
+
+  .d-xxl-table-row {
+    display: table-row !important;
+  }
+
+  .d-xxl-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-xxl-flex {
+    display: flex !important;
+  }
+
+  .d-xxl-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-xxl-none {
+    display: none !important;
+  }
+
+  .flex-xxl-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-xxl-row {
+    flex-direction: row !important;
+  }
+
+  .flex-xxl-column {
+    flex-direction: column !important;
+  }
+
+  .flex-xxl-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-xxl-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-xxl-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-xxl-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-xxl-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-xxl-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-xxl-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-xxl-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-xxl-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .justify-content-xxl-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-xxl-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-xxl-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-xxl-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-xxl-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-xxl-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-xxl-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-xxl-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-xxl-center {
+    align-items: center !important;
+  }
+
+  .align-items-xxl-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-xxl-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-xxl-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-xxl-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-xxl-center {
+    align-content: center !important;
+  }
+
+  .align-content-xxl-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-xxl-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-xxl-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-xxl-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-xxl-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-xxl-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-xxl-center {
+    align-self: center !important;
+  }
+
+  .align-self-xxl-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-xxl-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-xxl-first {
+    order: -1 !important;
+  }
+
+  .order-xxl-0 {
+    order: 0 !important;
+  }
+
+  .order-xxl-1 {
+    order: 1 !important;
+  }
+
+  .order-xxl-2 {
+    order: 2 !important;
+  }
+
+  .order-xxl-3 {
+    order: 3 !important;
+  }
+
+  .order-xxl-4 {
+    order: 4 !important;
+  }
+
+  .order-xxl-5 {
+    order: 5 !important;
+  }
+
+  .order-xxl-last {
+    order: 6 !important;
+  }
+
+  .m-xxl-0 {
+    margin: 0 !important;
+  }
+
+  .m-xxl-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-xxl-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-xxl-3 {
+    margin: 1rem !important;
+  }
+
+  .m-xxl-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-xxl-5 {
+    margin: 3rem !important;
+  }
+
+  .m-xxl-auto {
+    margin: auto !important;
+  }
+
+  .mx-xxl-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-xxl-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-xxl-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-xxl-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-xxl-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-xxl-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-xxl-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-xxl-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-xxl-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-xxl-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-xxl-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-xxl-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-xxl-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-xxl-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-xxl-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-xxl-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-xxl-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-xxl-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-xxl-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-xxl-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-xxl-auto {
+    margin-top: auto !important;
+  }
+
+  .me-xxl-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-xxl-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-xxl-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-xxl-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-xxl-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-xxl-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-xxl-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-xxl-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-xxl-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-xxl-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-xxl-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-xxl-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-xxl-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-xxl-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-xxl-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-xxl-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-xxl-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-xxl-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-xxl-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-xxl-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-xxl-auto {
+    margin-right: auto !important;
+  }
+
+  .p-xxl-0 {
+    padding: 0 !important;
+  }
+
+  .p-xxl-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-xxl-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-xxl-3 {
+    padding: 1rem !important;
+  }
+
+  .p-xxl-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-xxl-5 {
+    padding: 3rem !important;
+  }
+
+  .px-xxl-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-xxl-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-xxl-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-xxl-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-xxl-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-xxl-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-xxl-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-xxl-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-xxl-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-xxl-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-xxl-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-xxl-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-xxl-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-xxl-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-xxl-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-xxl-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-xxl-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-xxl-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-xxl-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-xxl-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-xxl-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-xxl-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-xxl-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-xxl-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-xxl-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-xxl-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-xxl-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-xxl-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-xxl-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-xxl-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-xxl-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-xxl-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-xxl-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-xxl-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-xxl-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-xxl-5 {
+    padding-right: 3rem !important;
+  }
+}
+@media print {
+  .d-print-inline {
+    display: inline !important;
+  }
+
+  .d-print-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-print-block {
+    display: block !important;
+  }
+
+  .d-print-grid {
+    display: grid !important;
+  }
+
+  .d-print-table {
+    display: table !important;
+  }
+
+  .d-print-table-row {
+    display: table-row !important;
+  }
+
+  .d-print-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-print-flex {
+    display: flex !important;
+  }
+
+  .d-print-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-print-none {
+    display: none !important;
+  }
+}
+/*# sourceMappingURL=bootstrap-grid.rtl.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map
new file mode 100644
index 0000000..33f5c3b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap-grid.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","bootstrap-grid.css","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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AAA,+BAAA;AL2uDZ;;AKlvDQ;EAOI,yBAAA;AL+uDZ;;AKtvDQ;EAOI,+BAAA;ALmvDZ;;AK1vDQ;EAOI,8BAAA;ALuvDZ;;AK9vDQ;EAOI,4BAAA;AL2vDZ;;AKlwDQ;EAOI,8BAAA;AL+vDZ;;AKtwDQ;EAOI,4BAAA;ALmwDZ;;AK1wDQ;EAOI,0BAAA;ALuwDZ;;AK9wDQ;EAOI,gCAAA;AL2wDZ;;AKlxDQ;EAOI,+BAAA;AL+wDZ;;AKtxDQ;EAOI,6BAAA;ALmxDZ;;AK1xDQ;EAOI,+BAAA;ALuxDZ;;AK9xDQ;EAOI,6BAAA;AL2xDZ;;AKlyDQ;EAOI,4BAAA;AL+xDZ;;AKtyDQ;EAOI,kCAAA;ALmyDZ;;AK1yDQ;EAOI,iCAAA;ALuyDZ;;AK9yDQ;EAOI,+BAAA;AL2yDZ;;AKlzDQ;EAOI,iCAAA;AL+yDZ;;AKtzDQ;EAOI,+BAAA;ALmzDZ;;AK1zDQ;EAOI,2BAAA;ALuzDZ;;AK9zDQ;EAOI,iCAAA;AL2zDZ;;AKl0DQ;EAOI,gCAAA;AL+zDZ;;AKt0DQ;EAOI,8BAAA;ALm0DZ;;AK10DQ;EAOI,gCAAA;ALu0DZ;;AK90DQ;EAOI,8BAAA;AL20DZ;;ACl1DI;EIAI;IAOI,0BAAA;ELg1DV;;EKv1DM;IAOI,gCAAA;ELo1DV;;EK31DM;IAOI,yBAAA;ELw1DV;;EK/1DM;IAOI,wBAAA;EL41DV;;EKn2DM;IAOI,yBAAA;ELg2DV;;EKv2DM;IAOI,6BAAA;ELo2DV;;EK32DM;IAOI,8BAAA;ELw2DV;;EK/2DM;IAOI,wBAAA;EL42DV;;EKn3DM;IAOI,+BAAA;ELg3DV;;EKv3DM;IAOI,wBAAA;ELo3DV;;EK33DM;IAOI,yBAAA;ELw3DV;;EK/3DM;IAOI,8BAAA;EL43DV;;EKn4DM;IAOI,iCAAA;ELg4DV;;EKv4DM;IAOI,sCAAA;ELo4DV;;EK34DM;IAOI,yCAAA;ELw4DV;;EK/4DM;IAOI,uBAAA;EL44DV;;EKn5DM;IAOI,uBAAA;ELg5DV;;EKv5DM;IAOI,yBAAA;ELo5DV;;EK35DM;IAOI,yBAAA;ELw5DV;;EK/5DM;IAOI,0BAAA;EL45DV;;EKn6DM;IAOI,4BAAA;ELg6DV;;EKv6DM;IAOI,kCAAA;ELo6DV;;EK36DM;IAOI,sCAAA;ELw6DV;;EK/6DM;IAOI,oCAAA;EL46DV;;EKn7DM;IAOI,kCAAA;ELg7DV;;EKv7DM;IAOI,yCAAA;ELo7DV;;EK37DM;IAOI,wCAAA;ELw7DV;;EK/7DM;IAOI,wCAAA;EL47DV;;EKn8DM;IAOI,kCAAA;ELg8DV;;EKv8DM;IAOI,gCAAA;ELo8DV;;EK38DM;IAOI,8BAAA;ELw8DV;;EK/8DM;IAOI,gCAAA;EL48DV;;EKn9DM;IAOI,+BAAA;ELg9DV;;EKv9DM;IAOI,oCAAA;ELo9DV;;EK39DM;IAOI,kCAAA;ELw9DV;;EK/9DM;IAOI,gCAAA;EL49DV;;EKn+DM;IAOI,uCAAA;ELg+DV;;EKv+DM;IAOI,sCAAA;ELo+DV;;EK3+DM;IAOI,iCAAA;ELw+DV;;EK/+DM;IAOI,2BAAA;EL4+DV;;EKn/DM;IAOI,iCAAA;ELg/DV;;EKv/DM;IAOI,+BAAA;ELo/DV;;EK3/DM;IAOI,6BAAA;ELw/DV;;EK//DM;IAOI,+BAAA;EL4/DV;;EKngEM;IAOI,8BAAA;ELggEV;;EKvgEM;IAOI,oBAAA;ELogEV;;EK3gEM;IAOI,mBAAA;ELwgEV;;EK/gEM;IAOI,mBAAA;EL4gEV;;EKnhEM;IAOI,mBAAA;ELghEV;;EKvhEM;IAOI,mBAAA;ELohEV;;EK3hEM;IAOI,mBAAA;ELwhEV;;EK/hEM;IAOI,mBAAA;EL4hEV;;EKniEM;IAOI,mBAAA;ELgiEV;;EKviEM;IAOI,oBAAA;ELoiEV;;EK3iEM;IAOI,0BAAA;ELwiEV;;EK/iEM;IAOI,yBAAA;EL4iEV;;EKnjEM;IAOI,uBAAA;ELgjEV;;EKvjEM;IAOI,yBAAA;ELojEV;;EK3jEM;IAOI,uBAAA;ELwjEV;;EK/jEM;IAOI,uBAAA;EL4jEV;;EKnkEM;IAOI,yBAAA;IAAA,0BAAA;ELikEV;;EKxkEM;IAOI,+BAAA;IAAA,gCAAA;ELskEV;;EK7kEM;IAOI,8BAAA;IAAA,+BAAA;EL2kEV;;EKllEM;IAOI,4BAAA;IAAA,6BAAA;ELglEV;;EKvlEM;IAOI,8BAAA;IAAA,+BAAA;ELqlEV;;EK5lEM;IAOI,4BAAA;IAAA,6BAAA;EL0lEV;;EKjmEM;IAOI,4BAAA;IAAA,6BAAA;EL+lEV;;EKtmEM;IAOI,wBAAA;IAAA,2BAAA;ELomEV;;EK3mEM;IAOI,8BAAA;IAAA,iCAAA;ELymEV;;EKhnEM;IAOI,6BAAA;IAAA,gCAAA;EL8mEV;;EKrnEM;IAOI,2BAAA;IAAA,8BAAA;ELmnEV;;EK1nEM;IAOI,6BAAA;IAAA,gCAAA;ELwnEV;;EK/nEM;IAOI,2BAAA;IAAA,8BAAA;EL6nEV;;EKpoEM;IAOI,2BAAA;IAAA,8BAAA;ELkoEV;;EKzoEM;IAOI,wBAAA;ELsoEV;;EK7oEM;IAOI,8BAAA;EL0oEV;;EKjpEM;IAOI,6BAAA;EL8oEV;;EKrpEM;IAOI,2BAAA;ELkpEV;;EKzpEM;IAOI,6BAAA;ELspEV;;EK7pEM;IAOI,2BAAA;EL0pEV;;EKjqEM;IAOI,2BAAA;EL8pEV;;EKrqEM;IAOI,yBAAA;ELkqEV;;EKzqEM;IAOI,+BAAA;ELsqEV;;EK7qEM;IAOI,8BAAA;EL0qEV;;EKjrEM;IAOI,4BAAA;EL8qEV;;EKrrEM;IAOI,8BAAA;ELkrEV;;EKzrEM;IAOI,4BAAA;ELsrEV;;EK7rEM;IAOI,4BAAA;EL0rEV;;EKjsEM;IAOI,2BAAA;EL8rEV;;EKrsEM;IAOI,iCAAA;ELksEV;;EKzsEM;IAOI,gCAAA;ELssEV;;EK7sEM;IAOI,8BAAA;EL0sEV;;EKjtEM;IAOI,gCAAA;EL8sEV;;EKrtEM;IAOI,8BAAA;ELktEV;;EKztEM;IAOI,8BAAA;ELstEV;;EK7tEM;IAOI,0BAAA;EL0tEV;;EKjuEM;IAOI,gCAAA;EL8tEV;;EKruEM;IAOI,+BAAA;ELkuEV;;EKzuEM;IAOI,6BAAA;ELsuEV;;EK7uEM;IAOI,+BAAA;EL0uEV;;EKjvEM;IAOI,6BAAA;EL8uEV;;EKrvEM;IAOI,6BAAA;ELkvEV;;EKzvEM;IAOI,qBAAA;ELsvEV;;EK7vEM;IAOI,2BAAA;EL0vEV;;EKjwEM;IAOI,0BAAA;EL8vEV;;EKrwEM;IAOI,wBAAA;ELkwEV;;EKzwEM;IAOI,0BAAA;ELswEV;;EK7wEM;IAOI,wBAAA;EL0wEV;;EKjxEM;IAOI,0BAAA;IAAA,2BAAA;EL+wEV;;EKtxEM;IAOI,gCAAA;IAAA,iCAAA;ELoxEV;;EK3xEM;IAOI,+BAAA;IAAA,gCAAA;ELyxEV;;EKhyEM;IAOI,6BAAA;IAAA,8BAAA;EL8xEV;;EKryEM;IAOI,+BAAA;IAAA,gCAAA;ELmyEV;;EK1yEM;IAOI,6BAAA;IAAA,8BAAA;ELwyEV;;EK/yEM;IAOI,yBAAA;IAAA,4BAAA;EL6yEV;;EKpzEM;IAOI,+BAAA;IAAA,kCAAA;ELkzEV;;EKzzEM;IAOI,8BAAA;IAAA,iCAAA;ELuzEV;;EK9zEM;IAOI,4BAAA;IAAA,+BAAA;EL4zEV;;EKn0EM;IAOI,8BAAA;IAAA,iCAAA;ELi0EV;;EKx0EM;IAOI,4BAAA;IAAA,+BAAA;ELs0EV;;EK70EM;IAOI,yBAAA;EL00EV;;EKj1EM;IAOI,+BAAA;EL80EV;;EKr1EM;IAOI,8BAAA;ELk1EV;;EKz1EM;IAOI,4BAAA;ELs1EV;;EK71EM;IAOI,8BAAA;EL01EV;;EKj2EM;IAOI,4BAAA;EL81EV;;EKr2EM;IAOI,0BAAA;ELk2EV;;EKz2EM;IAOI,gCAAA;ELs2EV;;EK72EM;IAOI,+BAAA;EL02EV;;EKj3EM;IAOI,6BAAA;EL82EV;;EKr3EM;IAOI,+BAAA;ELk3EV;;EKz3EM;IAOI,6BAAA;ELs3EV;;EK73EM;IAOI,4BAAA;EL03EV;;EKj4EM;IAOI,kCAAA;EL83EV;;EKr4EM;IAOI,iCAAA;ELk4EV;;EKz4EM;IAOI,+BAAA;ELs4EV;;EK74EM;IAOI,iCAAA;EL04EV;;EKj5EM;IAOI,+BAAA;EL84EV;;EKr5EM;IAOI,2BAAA;ELk5EV;;EKz5EM;IAOI,iCAAA;ELs5EV;;EK75EM;IAOI,gCAAA;EL05EV;;EKj6EM;IAOI,8BAAA;EL85EV;;EKr6EM;IAOI,gCAAA;ELk6EV;;EKz6EM;IAOI,8BAAA;ELs6EV;AACF;AC96EI;EIAI;IAOI,0BAAA;EL26EV;;EKl7EM;IAOI,gCAAA;EL+6EV;;EKt7EM;IAOI,yBAAA;ELm7EV;;EK17EM;IAOI,wBAAA;ELu7EV;;EK97EM;IAOI,yBAAA;EL27EV;;EKl8EM;IAOI,6BAAA;EL+7EV;;EKt8EM;IAOI,8BAAA;ELm8EV;;EK18EM;IAOI,wBAAA;ELu8EV;;EK98EM;IAOI,+BAAA;EL28EV;;EKl9EM;IAOI,wBAAA;EL+8EV;;EKt9EM;IAOI,yBAAA;ELm9EV;;EK19EM;IAOI,8BAAA;ELu9EV;;EK99EM;IAOI,iCAAA;EL29EV;;EKl+EM;IAOI,sCAAA;EL+9EV;;EKt+EM;IAOI,yCAAA;ELm+EV;;EK1+EM;IAOI,uBAAA;ELu+EV;;EK9+EM;IAOI,uBAAA;EL2+EV;;EKl/EM;IAOI,yBAAA;EL++EV;;EKt/EM;IAOI,yBAAA;ELm/EV;;EK1/EM;IAOI,0BAAA;ELu/EV;;EK9/EM;IAOI,4BAAA;EL2/EV;;EKlgFM;IAOI,kCAAA;EL+/EV;;EKtgFM;IAOI,sCAAA;ELmgFV;;EK1gFM;IAOI,oCAAA;ELugFV;;EK9gFM;IAOI,kCAAA;EL2gFV;;EKlhFM;IAOI,yCAAA;EL+gFV;;EKthFM;IAOI,wCAAA;ELmhFV;;EK1hFM;IAOI,wCAAA;ELuhFV;;EK9hFM;IAOI,kCAAA;EL2hFV;;EKliFM;IAOI,gCAAA;EL+hFV;;EKtiFM;IAOI,8BAAA;ELmiFV;;EK1iFM;IAOI,gCAAA;ELuiFV;;EK9iFM;IAOI,+BAAA;EL2iFV;;EKljFM;IAOI,oCAAA;EL+iFV;;EKtjFM;IAOI,kCAAA;ELmjFV;;EK1jFM;IAOI,gCAAA;ELujFV;;EK9jFM;IAOI,uCAAA;EL2jFV;;EKlkFM;IAOI,sCAAA;EL+jFV;;EKtkFM;IAOI,iCAAA;ELmkFV;;EK1kFM;IAOI,2BAAA;ELukFV;;EK9kFM;IAOI,iCAAA;EL2kFV;;EKllFM;IAOI,+BAAA;EL+kFV;;EKtlFM;IAOI,6BAAA;ELmlFV;;EK1lFM;IAOI,+BAAA;ELulFV;;EK9lFM;IAOI,8BAAA;EL2lFV;;EKlmFM;IAOI,oBAAA;EL+lFV;;EKtmFM;IAOI,mBAAA;ELmmFV;;EK1mFM;IAOI,mBAAA;ELumFV;;EK9mFM;IAOI,mBAAA;EL2mFV;;EKlnFM;IAOI,mBAAA;EL+mFV;;EKtnFM;IAOI,mB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FV;;EKx9FM;IAOI,4BAAA;ELq9FV;;EK59FM;IAOI,kCAAA;ELy9FV;;EKh+FM;IAOI,iCAAA;EL69FV;;EKp+FM;IAOI,+BAAA;ELi+FV;;EKx+FM;IAOI,iCAAA;ELq+FV;;EK5+FM;IAOI,+BAAA;ELy+FV;;EKh/FM;IAOI,2BAAA;EL6+FV;;EKp/FM;IAOI,iCAAA;ELi/FV;;EKx/FM;IAOI,gCAAA;ELq/FV;;EK5/FM;IAOI,8BAAA;ELy/FV;;EKhgGM;IAOI,gCAAA;EL6/FV;;EKpgGM;IAOI,8BAAA;ELigGV;AACF;ACzgGI;EIAI;IAOI,0BAAA;ELsgGV;;EK7gGM;IAOI,gCAAA;EL0gGV;;EKjhGM;IAOI,yBAAA;EL8gGV;;EKrhGM;IAOI,wBAAA;ELkhGV;;EKzhGM;IAOI,yBAAA;ELshGV;;EK7hGM;IAOI,6BAAA;EL0hGV;;EKjiGM;IAOI,8BAAA;EL8hGV;;EKriGM;IAOI,wBAAA;ELkiGV;;EKziGM;IAOI,+BAAA;ELsiGV;;EK7iGM;IAOI,wBAAA;EL0iGV;;EKjjGM;IAOI,yBAAA;EL8iGV;;EKrjGM;IAOI,8BAAA;ELkjGV;;EKzjGM;IAOI,iCAAA;ELsjGV;;EK7jGM;IAOI,sCAAA;EL0jGV;;EKjkGM;IAOI,yCAAA;EL8jGV;;EKrkGM;IAOI,uBAAA;ELkkGV;;EKzkGM;IAOI,uBAAA;ELskGV;;EK7kGM;IAOI,yBAAA;EL0kGV;;EKjlGM;IAOI,yBAAA;EL8kGV;;EKrlGM;IAOI,0BAAA;ELklGV;;EKzlGM;IAOI,4BAAA;ELslGV;;EK7lGM;IAOI,kCAAA;EL0lGV;;EKjmGM;IAOI,sCAAA;EL8lGV;;EKrmGM;IAOI,oCAAA;ELkmGV;;EKzmGM;IAOI,kCAAA;ELsmGV;;EK7mGM;IAOI,yCAAA;EL0mGV;;EKjnGM;IAOI,wCAAA;EL8mGV;;EKrnGM;IAOI,wCAAA;ELknGV;;EKznGM;IAOI,kCAAA;ELsnGV;;EK7nGM;IAOI,gCAAA;EL0nGV;;EKjoGM;IAOI,8BAAA;EL8nGV;;EKroGM;IAOI,gCAAA;ELkoGV;;EKzoGM;IAOI,+BAAA;ELsoGV;;EK7oGM;IAOI,oCAAA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/rII;EIAI;IAOI,0BAAA;EL4rIV;;EKnsIM;IAOI,gCAAA;ELgsIV;;EKvsIM;IAOI,yBAAA;ELosIV;;EK3sIM;IAOI,wBAAA;ELwsIV;;EK/sIM;IAOI,yBAAA;EL4sIV;;EKntIM;IAOI,6BAAA;ELgtIV;;EKvtIM;IAOI,8BAAA;ELotIV;;EK3tIM;IAOI,wBAAA;ELwtIV;;EK/tIM;IAOI,+BAAA;EL4tIV;;EKnuIM;IAOI,wBAAA;ELguIV;;EKvuIM;IAOI,yBAAA;ELouIV;;EK3uIM;IAOI,8BAAA;ELwuIV;;EK/uIM;IAOI,iCAAA;EL4uIV;;EKnvIM;IAOI,sCAAA;ELgvIV;;EKvvIM;IAOI,yCAAA;ELovIV;;EK3vIM;IAOI,uBAAA;ELwvIV;;EK/vIM;IAOI,uBAAA;EL4vIV;;EKnwIM;IAOI,yBAAA;ELgwIV;;EKvwIM;IAOI,yBAAA;ELowIV;;EK3wIM;IAOI,0BAAA;ELwwIV;;EK/wIM;IAOI,4BAAA;EL4wIV;;EKnxIM;IAOI,kCAAA;ELgxIV;;EKvxIM;IAOI,sCAAA;ELoxIV;;EK3xIM;IAOI,oCAAA;ELwxIV;;EK/xIM;IAOI,kCAAA;EL4xIV;;EKnyIM;IAOI,yCAAA;ELgyIV;;EKvyIM;IAOI,wCAAA;ELoyIV;;EK3yIM;IAOI,wCAAA;ELwyIV;;EK/yIM;IAOI,kCAAA;EL4yIV;;EKnzIM;IAOI,gCAAA;ELgzIV;;EKvzIM;IAOI,8BAAA;ELozIV;;EK3zIM;IAOI,gCAAA;ELwzIV;;EK/zIM;IAOI,+BAAA;EL4zIV;;EKn0IM;IAOI,oCAAA;ELg0IV;;EKv0IM;IAOI,kCAAA;ELo0IV;;EK30IM;IAOI,gCAAA;ELw0IV;;EK/0IM;IAOI,uCAAA;EL40IV;;EKn1IM;IAOI,sCAAA;ELg1IV;;EKv1IM;IAOI,iCAAA;ELo1IV;;EK31IM;IAOI,2BAAA;ELw1IV;;EK/1IM;IAOI,iCAAA;EL41IV;;EKn2IM;IAOI,+BAAA;ELg2IV;;EKv2IM;IAOI,6BAAA;ELo2IV;;EK32IM;IAOI,+BAAA;ELw2IV;;EK/2IM;IAOI,8BAAA;EL42IV;;EKn3IM;IAOI,oBAAA;ELg3IV;;E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OI,gCAAA;ELktJV;;EKztJM;IAOI,+BAAA;ELstJV;;EK7tJM;IAOI,6BAAA;EL0tJV;;EKjuJM;IAOI,+BAAA;EL8tJV;;EKruJM;IAOI,6BAAA;ELkuJV;;EKzuJM;IAOI,4BAAA;ELsuJV;;EK7uJM;IAOI,kCAAA;EL0uJV;;EKjvJM;IAOI,iCAAA;EL8uJV;;EKrvJM;IAOI,+BAAA;ELkvJV;;EKzvJM;IAOI,iCAAA;ELsvJV;;EK7vJM;IAOI,+BAAA;EL0vJV;;EKjwJM;IAOI,2BAAA;EL8vJV;;EKrwJM;IAOI,iCAAA;ELkwJV;;EKzwJM;IAOI,gCAAA;ELswJV;;EK7wJM;IAOI,8BAAA;EL0wJV;;EKjxJM;IAOI,gCAAA;EL8wJV;;EKrxJM;IAOI,8BAAA;ELkxJV;AACF;AMnzJA;EDyBQ;IAOI,0BAAA;ELuxJV;;EK9xJM;IAOI,gCAAA;EL2xJV;;EKlyJM;IAOI,yBAAA;EL+xJV;;EKtyJM;IAOI,wBAAA;ELmyJV;;EK1yJM;IAOI,yBAAA;ELuyJV;;EK9yJM;IAOI,6BAAA;EL2yJV;;EKlzJM;IAOI,8BAAA;EL+yJV;;EKtzJM;IAOI,wBAAA;ELmzJV;;EK1zJM;IAOI,+BAAA;ELuzJV;;EK9zJM;IAOI,wBAAA;EL2zJV;AACF","file":"bootstrap-grid.rtl.css","sourcesContent":["/*!\n * Bootstrap Grid v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n$include-column-box-sizing: true !default;\n\n@import \"functions\";\n@import \"variables\";\n\n@import \"mixins/lists\";\n@import \"mixins/breakpoints\";\n@import \"mixins/container\";\n@import \"mixins/grid\";\n@import \"mixins/utilities\";\n\n@import \"vendor/rfs\";\n\n@import \"containers\";\n@import \"grid\";\n\n@import \"utilities\";\n// Only use the utilities we need\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-get-multiple(\n  $utilities,\n  (\n    \"display\",\n    \"order\",\n    \"flex\",\n    \"flex-direction\",\n    \"flex-grow\",\n    \"flex-shrink\",\n    \"flex-wrap\",\n    \"justify-content\",\n    \"align-items\",\n    \"align-content\",\n    \"align-self\",\n    \"margin\",\n    \"margin-x\",\n    \"margin-y\",\n    \"margin-top\",\n    \"margin-end\",\n    \"margin-bottom\",\n    \"margin-start\",\n    \"negative-margin\",\n    \"negative-margin-x\",\n    \"negative-margin-y\",\n    \"negative-margin-top\",\n    \"negative-margin-end\",\n    \"negative-margin-bottom\",\n    \"negative-margin-start\",\n    \"padding\",\n    \"padding-x\",\n    \"padding-y\",\n    \"padding-top\",\n    \"padding-end\",\n    \"padding-bottom\",\n    \"padding-start\",\n  )\n);\n\n@import \"utilities/api\";\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n  // Single container class with breakpoint max-widths\n  .container,\n  // 100% wide container at all breakpoints\n  .container-fluid {\n    @include make-container();\n  }\n\n  // Responsive containers that are 100% wide until a breakpoint\n  @each $breakpoint, $container-max-width in $container-max-widths {\n    .container-#{$breakpoint} {\n      @extend .container-fluid;\n    }\n\n    @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n      %responsive-container-#{$breakpoint} {\n        max-width: $container-max-width;\n      }\n\n      // Extend each breakpoint which is smaller or equal to the current breakpoint\n      $extend-breakpoint: true;\n\n      @each $name, $width in $grid-breakpoints {\n        @if ($extend-breakpoint) {\n          .container#{breakpoint-infix($name, $grid-breakpoints)} {\n            @extend %responsive-container-#{$breakpoint};\n          }\n\n          // Once the current breakpoint is reached, stop extending\n          @if ($breakpoint == $name) {\n            $extend-breakpoint: false;\n          }\n        }\n      }\n    }\n  }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  width: 100%;\n  padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  margin-right: auto;\n  margin-left: auto;\n}\n","/*!\n * Bootstrap Grid v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n  width: 100%;\n  padding-right: var(--bs-gutter-x, 0.75rem);\n  padding-left: var(--bs-gutter-x, 0.75rem);\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container-sm, .container {\n    max-width: 540px;\n  }\n}\n@media (min-width: 768px) {\n  .container-md, .container-sm, .container {\n    max-width: 720px;\n  }\n}\n@media (min-width: 992px) {\n  .container-lg, .container-md, .container-sm, .container {\n    max-width: 960px;\n  }\n}\n@media (min-width: 1200px) {\n  .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1140px;\n  }\n}\n@media (min-width: 1400px) {\n  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1320px;\n  }\n}\n.row {\n  --bs-gutter-x: 1.5rem;\n  --bs-gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--bs-gutter-y) * -1);\n  margin-right: calc(var(--bs-gutter-x) * -.5);\n  margin-left: calc(var(--bs-gutter-x) * -.5);\n}\n.row > * {\n  box-sizing: border-box;\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%;\n  padding-right: calc(var(--bs-gutter-x) * .5);\n  padding-left: calc(var(--bs-gutter-x) * .5);\n  margin-top: var(--bs-gutter-y);\n}\n\n.col {\n  flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.row-cols-1 > * {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.row-cols-2 > * {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.row-cols-3 > * {\n  flex: 0 0 auto;\n  width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.row-cols-5 > * {\n  flex: 0 0 auto;\n  width: 20%;\n}\n\n.row-cols-6 > * {\n  flex: 0 0 auto;\n  width: 16.6666666667%;\n}\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.col-1 {\n  flex: 0 0 auto;\n  width: 8.33333333%;\n}\n\n.col-2 {\n  flex: 0 0 auto;\n  width: 16.66666667%;\n}\n\n.col-3 {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 auto;\n  width: 33.33333333%;\n}\n\n.col-5 {\n  flex: 0 0 auto;\n  width: 41.66666667%;\n}\n\n.col-6 {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 auto;\n  width: 58.33333333%;\n}\n\n.col-8 {\n  flex: 0 0 auto;\n  width: 66.66666667%;\n}\n\n.col-9 {\n  flex: 0 0 auto;\n  width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 auto;\n  width: 83.33333333%;\n}\n\n.col-11 {\n  flex: 0 0 auto;\n  width: 91.66666667%;\n}\n\n.col-12 {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.offset-1 {\n  margin-left: 8.33333333%;\n}\n\n.offset-2 {\n  margin-left: 16.66666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.33333333%;\n}\n\n.offset-5 {\n  margin-left: 41.66666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.33333333%;\n}\n\n.offset-8 {\n  margin-left: 66.66666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.33333333%;\n}\n\n.offset-11 {\n  margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n  --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n  --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n  --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n  --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n  --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n  --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n  --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n  --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n  --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n  --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n  --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n  --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-sm-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-sm-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-sm-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-sm-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-sm-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-sm-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-sm-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-sm-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-sm-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-sm-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-sm-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-sm-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-sm-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-sm-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-sm-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-sm-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-sm-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-sm-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-sm-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n\n  .offset-sm-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-sm-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n\n  .offset-sm-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-sm-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n\n  .offset-sm-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-sm-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n\n  .offset-sm-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-sm-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-sm-0,\n.gx-sm-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-sm-0,\n.gy-sm-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-sm-1,\n.gx-sm-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-sm-1,\n.gy-sm-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-sm-2,\n.gx-sm-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-sm-2,\n.gy-sm-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-sm-3,\n.gx-sm-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-sm-3,\n.gy-sm-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-sm-4,\n.gx-sm-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-sm-4,\n.gy-sm-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-sm-5,\n.gx-sm-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-sm-5,\n.gy-sm-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 768px) {\n  .col-md {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-md-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-md-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-md-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-md-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-md-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-md-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-md-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-md-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-md-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-md-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-md-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-md-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-md-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-md-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-md-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-md-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-md-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-md-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-md-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-md-0 {\n    margin-left: 0;\n  }\n\n  .offset-md-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-md-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n\n  .offset-md-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-md-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n\n  .offset-md-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-md-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n\n  .offset-md-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-md-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-md-0,\n.gx-md-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-md-0,\n.gy-md-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-md-1,\n.gx-md-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-md-1,\n.gy-md-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-md-2,\n.gx-md-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-md-2,\n.gy-md-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-md-3,\n.gx-md-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-md-3,\n.gy-md-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-md-4,\n.gx-md-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-md-4,\n.gy-md-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-md-5,\n.gx-md-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-md-5,\n.gy-md-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 992px) {\n  .col-lg {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-lg-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-lg-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-lg-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-lg-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-lg-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-lg-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-lg-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-lg-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-lg-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-lg-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-lg-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-lg-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-lg-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-lg-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-lg-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-lg-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-lg-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-lg-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-lg-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n\n  .offset-lg-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-lg-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n\n  .offset-lg-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-lg-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n\n  .offset-lg-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-lg-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n\n  .offset-lg-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-lg-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-lg-0,\n.gx-lg-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-lg-0,\n.gy-lg-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-lg-1,\n.gx-lg-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-lg-1,\n.gy-lg-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-lg-2,\n.gx-lg-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-lg-2,\n.gy-lg-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-lg-3,\n.gx-lg-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-lg-3,\n.gy-lg-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-lg-4,\n.gx-lg-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-lg-4,\n.gy-lg-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-lg-5,\n.gx-lg-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-lg-5,\n.gy-lg-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1200px) {\n  .col-xl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xl-0,\n.gx-xl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xl-0,\n.gy-xl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xl-1,\n.gx-xl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xl-1,\n.gy-xl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xl-2,\n.gx-xl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xl-2,\n.gy-xl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xl-3,\n.gx-xl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xl-3,\n.gy-xl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xl-4,\n.gx-xl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xl-4,\n.gy-xl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xl-5,\n.gx-xl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xl-5,\n.gy-xl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1400px) {\n  .col-xxl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xxl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xxl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xxl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xxl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xxl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xxl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xxl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xxl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xxl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xxl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xxl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xxl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xxl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xxl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xxl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xxl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xxl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xxl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xxl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xxl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xxl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xxl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xxl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xxl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xxl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xxl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xxl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xxl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xxl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xxl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xxl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xxl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xxl-0,\n.gx-xxl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xxl-0,\n.gy-xxl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xxl-1,\n.gx-xxl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xxl-1,\n.gy-xxl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xxl-2,\n.gx-xxl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xxl-2,\n.gy-xxl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xxl-3,\n.gx-xxl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xxl-3,\n.gy-xxl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xxl-4,\n.gx-xxl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xxl-4,\n.gy-xxl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xxl-5,\n.gx-xxl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xxl-5,\n.gy-xxl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-right: 0 !important;\n  margin-left: 0 !important;\n}\n\n.mx-1 {\n  margin-right: 0.25rem !important;\n  margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-right: 0.5rem !important;\n  margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-right: 1rem !important;\n  margin-left: 1rem !important;\n}\n\n.mx-4 {\n  margin-right: 1.5rem !important;\n  margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-right: 3rem !important;\n  margin-left: 3rem !important;\n}\n\n.mx-auto {\n  margin-right: auto !important;\n  margin-left: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-right: 0 !important;\n}\n\n.me-1 {\n  margin-right: 0.25rem !important;\n}\n\n.me-2 {\n  margin-right: 0.5rem !important;\n}\n\n.me-3 {\n  margin-right: 1rem !important;\n}\n\n.me-4 {\n  margin-right: 1.5rem !important;\n}\n\n.me-5 {\n  margin-right: 3rem !important;\n}\n\n.me-auto {\n  margin-right: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-left: 0 !important;\n}\n\n.ms-1 {\n  margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-left: 1rem !important;\n}\n\n.ms-4 {\n  margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-left: 3rem !important;\n}\n\n.ms-auto {\n  margin-left: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-right: 0 !important;\n  padding-left: 0 !important;\n}\n\n.px-1 {\n  padding-right: 0.25rem !important;\n  padding-left: 0.25rem !important;\n}\n\n.px-2 {\n  padding-right: 0.5rem !important;\n  padding-left: 0.5rem !important;\n}\n\n.px-3 {\n  padding-right: 1rem !important;\n  padding-left: 1rem !important;\n}\n\n.px-4 {\n  padding-right: 1.5rem !important;\n  padding-left: 1.5rem !important;\n}\n\n.px-5 {\n  padding-right: 3rem !important;\n  padding-left: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-right: 0 !important;\n}\n\n.pe-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-right: 1rem !important;\n}\n\n.pe-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-left: 0 !important;\n}\n\n.ps-1 {\n  padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-left: 1rem !important;\n}\n\n.ps-4 {\n  padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 768px) {\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-left: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 992px) {\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 1200px) {\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 1400px) {\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n  $n: index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n  }\n  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n  $min: map-get($breakpoints, $name);\n  @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n  $max: map-get($breakpoints, $name);\n  @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n  @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white:    #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black:    #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n  \"100\": $gray-100,\n  \"200\": $gray-200,\n  \"300\": $gray-300,\n  \"400\": $gray-400,\n  \"500\": $gray-500,\n  \"600\": $gray-600,\n  \"700\": $gray-700,\n  \"800\": $gray-800,\n  \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue:    #0d6efd !default;\n$indigo:  #6610f2 !default;\n$purple:  #6f42c1 !default;\n$pink:    #d63384 !default;\n$red:     #dc3545 !default;\n$orange:  #fd7e14 !default;\n$yellow:  #ffc107 !default;\n$green:   #198754 !default;\n$teal:    #20c997 !default;\n$cyan:    #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n  \"blue\":       $blue,\n  \"indigo\":     $indigo,\n  \"purple\":     $purple,\n  \"pink\":       $pink,\n  \"red\":        $red,\n  \"orange\":     $orange,\n  \"yellow\":     $yellow,\n  \"green\":      $green,\n  \"teal\":       $teal,\n  \"cyan\":       $cyan,\n  \"white\":      $white,\n  \"gray\":       $gray-600,\n  \"gray-dark\":  $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// scss-docs-start theme-color-variables\n$primary:       $blue !default;\n$secondary:     $gray-600 !default;\n$success:       $green !default;\n$info:          $cyan !default;\n$warning:       $yellow !default;\n$danger:        $red !default;\n$light:         $gray-100 !default;\n$dark:          $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n  \"primary\":    $primary,\n  \"secondary\":  $secondary,\n  \"success\":    $success,\n  \"info\":       $info,\n  \"warning\":    $warning,\n  \"danger\":     $danger,\n  \"light\":      $light,\n  \"dark\":       $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-colors-rgb\n$theme-colors-rgb: map-loop($theme-colors, to-rgb, \"$value\") !default;\n// scss-docs-end theme-colors-rgb\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio:   4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark:      $black !default;\n$color-contrast-light:     $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n  \"blue-100\": $blue-100,\n  \"blue-200\": $blue-200,\n  \"blue-300\": $blue-300,\n  \"blue-400\": $blue-400,\n  \"blue-500\": $blue-500,\n  \"blue-600\": $blue-600,\n  \"blue-700\": $blue-700,\n  \"blue-800\": $blue-800,\n  \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n  \"indigo-100\": $indigo-100,\n  \"indigo-200\": $indigo-200,\n  \"indigo-300\": $indigo-300,\n  \"indigo-400\": $indigo-400,\n  \"indigo-500\": $indigo-500,\n  \"indigo-600\": $indigo-600,\n  \"indigo-700\": $indigo-700,\n  \"indigo-800\": $indigo-800,\n  \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n  \"purple-100\": $purple-200,\n  \"purple-200\": $purple-100,\n  \"purple-300\": $purple-300,\n  \"purple-400\": $purple-400,\n  \"purple-500\": $purple-500,\n  \"purple-600\": $purple-600,\n  \"purple-700\": $purple-700,\n  \"purple-800\": $purple-800,\n  \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n  \"pink-100\": $pink-100,\n  \"pink-200\": $pink-200,\n  \"pink-300\": $pink-300,\n  \"pink-400\": $pink-400,\n  \"pink-500\": $pink-500,\n  \"pink-600\": $pink-600,\n  \"pink-700\": $pink-700,\n  \"pink-800\": $pink-800,\n  \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n  \"red-100\": $red-100,\n  \"red-200\": $red-200,\n  \"red-300\": $red-300,\n  \"red-400\": $red-400,\n  \"red-500\": $red-500,\n  \"red-600\": $red-600,\n  \"red-700\": $red-700,\n  \"red-800\": $red-800,\n  \"red-900\": $red-900\n) !default;\n\n$oranges: (\n  \"orange-100\": $orange-100,\n  \"orange-200\": $orange-200,\n  \"orange-300\": $orange-300,\n  \"orange-400\": $orange-400,\n  \"orange-500\": $orange-500,\n  \"orange-600\": $orange-600,\n  \"orange-700\": $orange-700,\n  \"orange-800\": $orange-800,\n  \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n  \"yellow-100\": $yellow-100,\n  \"yellow-200\": $yellow-200,\n  \"yellow-300\": $yellow-300,\n  \"yellow-400\": $yellow-400,\n  \"yellow-500\": $yellow-500,\n  \"yellow-600\": $yellow-600,\n  \"yellow-700\": $yellow-700,\n  \"yellow-800\": $yellow-800,\n  \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n  \"green-100\": $green-100,\n  \"green-200\": $green-200,\n  \"green-300\": $green-300,\n  \"green-400\": $green-400,\n  \"green-500\": $green-500,\n  \"green-600\": $green-600,\n  \"green-700\": $green-700,\n  \"green-800\": $green-800,\n  \"green-900\": $green-900\n) !default;\n\n$teals: (\n  \"teal-100\": $teal-100,\n  \"teal-200\": $teal-200,\n  \"teal-300\": $teal-300,\n  \"teal-400\": $teal-400,\n  \"teal-500\": $teal-500,\n  \"teal-600\": $teal-600,\n  \"teal-700\": $teal-700,\n  \"teal-800\": $teal-800,\n  \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n  \"cyan-100\": $cyan-100,\n  \"cyan-200\": $cyan-200,\n  \"cyan-300\": $cyan-300,\n  \"cyan-400\": $cyan-400,\n  \"cyan-500\": $cyan-500,\n  \"cyan-600\": $cyan-600,\n  \"cyan-700\": $cyan-700,\n  \"cyan-800\": $cyan-800,\n  \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              false !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-cssgrid:              false !default;\n$enable-button-pointers:      true !default;\n$enable-rfs:                  true !default;\n$enable-validation-icons:     true !default;\n$enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities:  true !default;\n\n// Prefix for :root CSS variables\n\n$variable-prefix:             bs- !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg:                   $white !default;\n$body-color:                $gray-900 !default;\n$body-text-align:           null !default;\n\n// Utilities maps\n//\n// Extends the default `$theme-colors` maps to help create our utilities.\n\n// scss-docs-start utilities-colors\n$utilities-colors: map-merge(\n  $theme-colors-rgb,\n  (\n    \"black\": to-rgb($black),\n    \"white\": to-rgb($white),\n    \"body\":  to-rgb($body-color)\n  )\n) !default;\n// scss-docs-end utilities-colors\n\n// scss-docs-start utilities-text-colors\n$utilities-text-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"text\") !default;\n// scss-docs-end utilities-text-colors\n\n// scss-docs-start utilities-bg-colors\n$utilities-bg-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"bg\") !default;\n// scss-docs-end utilities-bg-colors\n\n// Links\n//\n// Style anchor elements.\n\n$link-color:                              $primary !default;\n$link-decoration:                         underline !default;\n$link-shade-percentage:                   20% !default;\n$link-hover-color:                        shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration:                   null !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 992px,\n  xl: 1200px,\n  xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1140px,\n  xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns:                12 !default;\n$grid-gutter-width:           1.5rem !default;\n$grid-row-columns:            6 !default;\n\n$gutters: $spacers !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width * .5 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n\n$border-color:                $gray-300 !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius:               .25rem !default;\n$border-radius-sm:            .2rem !default;\n$border-radius-lg:            .3rem !default;\n$border-radius-pill:          50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow:                  0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm:               0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg:               0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset:            inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color:      $white !default;\n$component-active-bg:         $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width:                 .3em !default;\n$caret-vertical-align:        $caret-width * .85 !default;\n$caret-spacing:               $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"1x1\": 100%,\n  \"4x3\": calc(3 / 4 * 100%),\n  \"16x9\": calc(9 / 16 * 100%),\n  \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif:      system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base:            var(--#{$variable-prefix}font-sans-serif) !default;\n$font-family-code:            var(--#{$variable-prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root:              null !default;\n$font-size-base:              1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm:                $font-size-base * .875 !default;\n$font-size-lg:                $font-size-base * 1.25 !default;\n\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n\n$h1-font-size:                $font-size-base * 2.5 !default;\n$h2-font-size:                $font-size-base * 2 !default;\n$h3-font-size:                $font-size-base * 1.75 !default;\n$h4-font-size:                $font-size-base * 1.5 !default;\n$h5-font-size:                $font-size-base * 1.25 !default;\n$h6-font-size:                $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n  1: $h1-font-size,\n  2: $h2-font-size,\n  3: $h3-font-size,\n  4: $h4-font-size,\n  5: $h5-font-size,\n  6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n  1: 5rem,\n  2: 4.5rem,\n  3: 4rem,\n  4: 3.5rem,\n  5: 3rem,\n  6: 2.5rem\n) !default;\n\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size:              $font-size-base * 1.25 !default;\n$lead-font-weight:            300 !default;\n\n$small-font-size:             .875em !default;\n\n$sub-sup-font-size:           .75em !default;\n\n$text-muted:                  $gray-600 !default;\n\n$initialism-font-size:        $small-font-size !default;\n\n$blockquote-margin-y:         $spacer !default;\n$blockquote-font-size:        $font-size-base * 1.25 !default;\n$blockquote-footer-color:     $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y:                 $spacer !default;\n$hr-color:                    inherit !default;\n$hr-height:                   $border-width !default;\n$hr-opacity:                  .25 !default;\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$mark-padding:                .2em !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n$nested-kbd-font-weight:      $font-weight-bold !default;\n\n$list-inline-padding:         .5rem !default;\n\n$mark-bg:                     #fcf8e3 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y:        .5rem !default;\n$table-cell-padding-x:        .5rem !default;\n$table-cell-padding-y-sm:     .25rem !default;\n$table-cell-padding-x-sm:     .25rem !default;\n\n$table-cell-vertical-align:   top !default;\n\n$table-color:                 $body-color !default;\n$table-bg:                    transparent !default;\n$table-accent-bg:             transparent !default;\n\n$table-th-font-weight:        null !default;\n\n$table-striped-color:         $table-color !default;\n$table-striped-bg-factor:     .05 !default;\n$table-striped-bg:            rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color:          $table-color !default;\n$table-active-bg-factor:      .1 !default;\n$table-active-bg:             rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color:           $table-color !default;\n$table-hover-bg-factor:       .075 !default;\n$table-hover-bg:              rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor:         .1 !default;\n$table-border-width:          $border-width !default;\n$table-border-color:          $border-color !default;\n\n$table-striped-order:         odd !default;\n\n$table-group-separator-color: currentColor !default;\n\n$table-caption-color:         $text-muted !default;\n\n$table-bg-scale:              -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n  \"primary\":    shift-color($primary, $table-bg-scale),\n  \"secondary\":  shift-color($secondary, $table-bg-scale),\n  \"success\":    shift-color($success, $table-bg-scale),\n  \"info\":       shift-color($info, $table-bg-scale),\n  \"warning\":    shift-color($warning, $table-bg-scale),\n  \"danger\":     shift-color($danger, $table-bg-scale),\n  \"light\":      $light,\n  \"dark\":       $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y:         .375rem !default;\n$input-btn-padding-x:         .75rem !default;\n$input-btn-font-family:       null !default;\n$input-btn-font-size:         $font-size-base !default;\n$input-btn-line-height:       $line-height-base !default;\n\n$input-btn-focus-width:         .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color:         rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur:          0 !default;\n$input-btn-focus-box-shadow:    0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm:      .25rem !default;\n$input-btn-padding-x-sm:      .5rem !default;\n$input-btn-font-size-sm:      $font-size-sm !default;\n\n$input-btn-padding-y-lg:      .5rem !default;\n$input-btn-padding-x-lg:      1rem !default;\n$input-btn-font-size-lg:      $font-size-lg !default;\n\n$input-btn-border-width:      $border-width !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y:               $input-btn-padding-y !default;\n$btn-padding-x:               $input-btn-padding-x !default;\n$btn-font-family:             $input-btn-font-family !default;\n$btn-font-size:               $input-btn-font-size !default;\n$btn-line-height:             $input-btn-line-height !default;\n$btn-white-space:             null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm:            $input-btn-padding-y-sm !default;\n$btn-padding-x-sm:            $input-btn-padding-x-sm !default;\n$btn-font-size-sm:            $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg:            $input-btn-padding-y-lg !default;\n$btn-padding-x-lg:            $input-btn-padding-x-lg !default;\n$btn-font-size-lg:            $input-btn-font-size-lg !default;\n\n$btn-border-width:            $input-btn-border-width !default;\n\n$btn-font-weight:             $font-weight-normal !default;\n$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width:             $input-btn-focus-width !default;\n$btn-focus-box-shadow:        $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity:        .65 !default;\n$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color:              $link-color !default;\n$btn-link-hover-color:        $link-hover-color !default;\n$btn-link-disabled-color:     $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius:           $border-radius !default;\n$btn-border-radius-sm:        $border-radius-sm !default;\n$btn-border-radius-lg:        $border-radius-lg !default;\n\n$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount:       15% !default;\n$btn-hover-bg-tint-amount:        15% !default;\n$btn-hover-border-shade-amount:   20% !default;\n$btn-hover-border-tint-amount:    10% !default;\n$btn-active-bg-shade-amount:      20% !default;\n$btn-active-bg-tint-amount:       20% !default;\n$btn-active-border-shade-amount:  25% !default;\n$btn-active-border-tint-amount:   10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top:                  .25rem !default;\n$form-text-font-size:                   $small-font-size !default;\n$form-text-font-style:                  null !default;\n$form-text-font-weight:                 null !default;\n$form-text-color:                       $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom:              .5rem !default;\n$form-label-font-size:                  null !default;\n$form-label-font-style:                 null !default;\n$form-label-font-weight:                null !default;\n$form-label-color:                      null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y:                       $input-btn-padding-y !default;\n$input-padding-x:                       $input-btn-padding-x !default;\n$input-font-family:                     $input-btn-font-family !default;\n$input-font-size:                       $input-btn-font-size !default;\n$input-font-weight:                     $font-weight-base !default;\n$input-line-height:                     $input-btn-line-height !default;\n\n$input-padding-y-sm:                    $input-btn-padding-y-sm !default;\n$input-padding-x-sm:                    $input-btn-padding-x-sm !default;\n$input-font-size-sm:                    $input-btn-font-size-sm !default;\n\n$input-padding-y-lg:                    $input-btn-padding-y-lg !default;\n$input-padding-x-lg:                    $input-btn-padding-x-lg !default;\n$input-font-size-lg:                    $input-btn-font-size-lg !default;\n\n$input-bg:                              $body-bg !default;\n$input-disabled-bg:                     $gray-200 !default;\n$input-disabled-border-color:           null !default;\n\n$input-color:                           $body-color !default;\n$input-border-color:                    $gray-400 !default;\n$input-border-width:                    $input-btn-border-width !default;\n$input-box-shadow:                      $box-shadow-inset !default;\n\n$input-border-radius:                   $border-radius !default;\n$input-border-radius-sm:                $border-radius-sm !default;\n$input-border-radius-lg:                $border-radius-lg !default;\n\n$input-focus-bg:                        $input-bg !default;\n$input-focus-border-color:              tint-color($component-active-bg, 50%) !default;\n$input-focus-color:                     $input-color !default;\n$input-focus-width:                     $input-btn-focus-width !default;\n$input-focus-box-shadow:                $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color:               $gray-600 !default;\n$input-plaintext-color:                 $body-color !default;\n\n$input-height-border:                   $input-border-width * 2 !default;\n\n$input-height-inner:                    add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half:               add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter:            add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height:                          add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm:                       add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg:                       add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width:                      3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width:                  1em !default;\n$form-check-min-height:                   $font-size-base * $line-height-base !default;\n$form-check-padding-start:                $form-check-input-width + .5em !default;\n$form-check-margin-bottom:                .125rem !default;\n$form-check-label-color:                  null !default;\n$form-check-label-cursor:                 null !default;\n$form-check-transition:                   null !default;\n\n$form-check-input-active-filter:          brightness(90%) !default;\n\n$form-check-input-bg:                     $input-bg !default;\n$form-check-input-border:                 1px solid rgba($black, .25) !default;\n$form-check-input-border-radius:          .25em !default;\n$form-check-radio-border-radius:          50% !default;\n$form-check-input-focus-border:           $input-focus-border-color !default;\n$form-check-input-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color:          $component-active-color !default;\n$form-check-input-checked-bg-color:       $component-active-bg !default;\n$form-check-input-checked-border-color:   $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-checked-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/></svg>\") !default;\n$form-check-radio-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$form-check-input-checked-color}'/></svg>\") !default;\n\n$form-check-input-indeterminate-color:          $component-active-color !default;\n$form-check-input-indeterminate-bg-color:       $component-active-bg !default;\n$form-check-input-indeterminate-border-color:   $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-indeterminate-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>\") !default;\n\n$form-check-input-disabled-opacity:        .5 !default;\n$form-check-label-disabled-opacity:        $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity:    $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end:    1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color:               rgba(0, 0, 0, .25) !default;\n$form-switch-width:               2em !default;\n$form-switch-padding-start:       $form-switch-width + .5em !default;\n$form-switch-bg-image:            url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>\") !default;\n$form-switch-border-radius:       $form-switch-width !default;\n$form-switch-transition:          background-position .15s ease-in-out !default;\n\n$form-switch-focus-color:         $input-focus-border-color !default;\n$form-switch-focus-bg-image:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-focus-color}'/></svg>\") !default;\n\n$form-switch-checked-color:       $component-active-color !default;\n$form-switch-checked-bg-image:    url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y:           $input-padding-y !default;\n$input-group-addon-padding-x:           $input-padding-x !default;\n$input-group-addon-font-weight:         $input-font-weight !default;\n$input-group-addon-color:               $input-color !default;\n$input-group-addon-bg:                  $gray-200 !default;\n$input-group-addon-border-color:        $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y:             $input-padding-y !default;\n$form-select-padding-x:             $input-padding-x !default;\n$form-select-font-family:           $input-font-family !default;\n$form-select-font-size:             $input-font-size !default;\n$form-select-indicator-padding:     $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight:           $input-font-weight !default;\n$form-select-line-height:           $input-line-height !default;\n$form-select-color:                 $input-color !default;\n$form-select-bg:                    $input-bg !default;\n$form-select-disabled-color:        null !default;\n$form-select-disabled-bg:           $gray-200 !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position:           right $form-select-padding-x center !default;\n$form-select-bg-size:               16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color:       $gray-800 !default;\n$form-select-indicator:             url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/></svg>\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position:    center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size:        $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width:        $input-border-width !default;\n$form-select-border-color:        $input-border-color !default;\n$form-select-border-radius:       $border-radius !default;\n$form-select-box-shadow:          $box-shadow-inset !default;\n\n$form-select-focus-border-color:  $input-focus-border-color !default;\n$form-select-focus-width:         $input-focus-width !default;\n$form-select-focus-box-shadow:    0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm:        $input-padding-y-sm !default;\n$form-select-padding-x-sm:        $input-padding-x-sm !default;\n$form-select-font-size-sm:        $input-font-size-sm !default;\n\n$form-select-padding-y-lg:        $input-padding-y-lg !default;\n$form-select-padding-x-lg:        $input-padding-x-lg !default;\n$form-select-font-size-lg:        $input-font-size-lg !default;\n\n$form-select-transition:          $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width:          100% !default;\n$form-range-track-height:         .5rem !default;\n$form-range-track-cursor:         pointer !default;\n$form-range-track-bg:             $gray-300 !default;\n$form-range-track-border-radius:  1rem !default;\n$form-range-track-box-shadow:     $box-shadow-inset !default;\n\n$form-range-thumb-width:                   1rem !default;\n$form-range-thumb-height:                  $form-range-thumb-width !default;\n$form-range-thumb-bg:                      $component-active-bg !default;\n$form-range-thumb-border:                  0 !default;\n$form-range-thumb-border-radius:           1rem !default;\n$form-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width:  $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg:               tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg:             $gray-500 !default;\n$form-range-thumb-transition:              background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color:          $input-color !default;\n$form-file-button-bg:             $input-group-addon-bg !default;\n$form-file-button-hover-bg:       shade-color($form-file-button-bg, 5%) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height:            add(3.5rem, $input-height-border) !default;\n$form-floating-line-height:       1.25 !default;\n$form-floating-padding-x:         $input-padding-x !default;\n$form-floating-padding-y:         1rem !default;\n$form-floating-input-padding-t:   1.625rem !default;\n$form-floating-input-padding-b:   .625rem !default;\n$form-floating-label-opacity:     .65 !default;\n$form-floating-label-transform:   scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-transition:        opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top:          $form-text-margin-top !default;\n$form-feedback-font-size:           $form-text-font-size !default;\n$form-feedback-font-style:          $form-text-font-style !default;\n$form-feedback-valid-color:         $success !default;\n$form-feedback-invalid-color:       $danger !default;\n\n$form-feedback-icon-valid-color:    $form-feedback-valid-color !default;\n$form-feedback-icon-valid:          url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>\") !default;\n$form-feedback-icon-invalid-color:  $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid:        url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n  \"valid\": (\n    \"color\": $form-feedback-valid-color,\n    \"icon\": $form-feedback-icon-valid\n  ),\n  \"invalid\": (\n    \"color\": $form-feedback-invalid-color,\n    \"icon\": $form-feedback-icon-invalid\n  )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown:                   1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-modal-backdrop:             1050 !default;\n$zindex-modal:                      1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n// scss-docs-end zindex-stack\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y:                .5rem !default;\n$nav-link-padding-x:                1rem !default;\n$nav-link-font-size:                null !default;\n$nav-link-font-weight:              null !default;\n$nav-link-color:                    $link-color !default;\n$nav-link-hover-color:              $link-hover-color !default;\n$nav-link-transition:               color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color:           $gray-600 !default;\n\n$nav-tabs-border-color:             $gray-300 !default;\n$nav-tabs-border-width:             $border-width !default;\n$nav-tabs-border-radius:            $border-radius !default;\n$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color:        $gray-700 !default;\n$nav-tabs-link-active-bg:           $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius:           $border-radius !default;\n$nav-pills-link-active-color:       $component-active-color !default;\n$nav-pills-link-active-bg:          $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y:                  $spacer * .5 !default;\n$navbar-padding-x:                  null !default;\n\n$navbar-nav-link-padding-x:         .5rem !default;\n\n$navbar-brand-font-size:            $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height:                   $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end:           1rem !default;\n\n$navbar-toggler-padding-y:          .25rem !default;\n$navbar-toggler-padding-x:          .75rem !default;\n$navbar-toggler-font-size:          $font-size-lg !default;\n$navbar-toggler-border-radius:      $btn-border-radius !default;\n$navbar-toggler-focus-width:        $btn-focus-width !default;\n$navbar-toggler-transition:         box-shadow .15s ease-in-out !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-theme-variables\n$navbar-dark-color:                 rgba($white, .55) !default;\n$navbar-dark-hover-color:           rgba($white, .75) !default;\n$navbar-dark-active-color:          $white !default;\n$navbar-dark-disabled-color:        rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-dark-toggler-border-color:  rgba($white, .1) !default;\n\n$navbar-light-color:                rgba($black, .55) !default;\n$navbar-light-hover-color:          rgba($black, .7) !default;\n$navbar-light-active-color:         rgba($black, .9) !default;\n$navbar-light-disabled-color:       rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color:                $navbar-light-active-color !default;\n$navbar-light-brand-hover-color:          $navbar-light-active-color !default;\n$navbar-dark-brand-color:                 $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color:           $navbar-dark-active-color !default;\n// scss-docs-end navbar-theme-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width:                10rem !default;\n$dropdown-padding-x:                0 !default;\n$dropdown-padding-y:                .5rem !default;\n$dropdown-spacer:                   .125rem !default;\n$dropdown-font-size:                $font-size-base !default;\n$dropdown-color:                    $body-color !default;\n$dropdown-bg:                       $white !default;\n$dropdown-border-color:             rgba($black, .15) !default;\n$dropdown-border-radius:            $border-radius !default;\n$dropdown-border-width:             $border-width !default;\n$dropdown-inner-border-radius:      subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg:               $dropdown-border-color !default;\n$dropdown-divider-margin-y:         $spacer * .5 !default;\n$dropdown-box-shadow:               $box-shadow !default;\n\n$dropdown-link-color:               $gray-900 !default;\n$dropdown-link-hover-color:         shade-color($gray-900, 10%) !default;\n$dropdown-link-hover-bg:            $gray-200 !default;\n\n$dropdown-link-active-color:        $component-active-color !default;\n$dropdown-link-active-bg:           $component-active-bg !default;\n\n$dropdown-link-disabled-color:      $gray-500 !default;\n\n$dropdown-item-padding-y:           $spacer * .25 !default;\n$dropdown-item-padding-x:           $spacer !default;\n\n$dropdown-header-color:             $gray-600 !default;\n$dropdown-header-padding:           $dropdown-padding-y $dropdown-item-padding-x !default;\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color:               $gray-300 !default;\n$dropdown-dark-bg:                  $gray-800 !default;\n$dropdown-dark-border-color:        $dropdown-border-color !default;\n$dropdown-dark-divider-bg:          $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow:          null !default;\n$dropdown-dark-link-color:          $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color:    $white !default;\n$dropdown-dark-link-hover-bg:       rgba($white, .15) !default;\n$dropdown-dark-link-active-color:   $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg:      $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color:        $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y:              .375rem !default;\n$pagination-padding-x:              .75rem !default;\n$pagination-padding-y-sm:           .25rem !default;\n$pagination-padding-x-sm:           .5rem !default;\n$pagination-padding-y-lg:           .75rem !default;\n$pagination-padding-x-lg:           1.5rem !default;\n\n$pagination-color:                  $link-color !default;\n$pagination-bg:                     $white !default;\n$pagination-border-width:           $border-width !default;\n$pagination-border-radius:          $border-radius !default;\n$pagination-margin-start:           -$pagination-border-width !default;\n$pagination-border-color:           $gray-300 !default;\n\n$pagination-focus-color:            $link-hover-color !default;\n$pagination-focus-bg:               $gray-200 !default;\n$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n$pagination-focus-outline:          0 !default;\n\n$pagination-hover-color:            $link-hover-color !default;\n$pagination-hover-bg:               $gray-200 !default;\n$pagination-hover-border-color:     $gray-300 !default;\n\n$pagination-active-color:           $component-active-color !default;\n$pagination-active-bg:              $component-active-bg !default;\n$pagination-active-border-color:    $pagination-active-bg !default;\n\n$pagination-disabled-color:         $gray-600 !default;\n$pagination-disabled-bg:            $white !default;\n$pagination-disabled-border-color:  $gray-300 !default;\n\n$pagination-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm:       $border-radius-sm !default;\n$pagination-border-radius-lg:       $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max:           .5 !default;\n$placeholder-opacity-min:           .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y:                     $spacer !default;\n$card-spacer-x:                     $spacer !default;\n$card-title-spacer-y:               $spacer * .5 !default;\n$card-border-width:                 $border-width !default;\n$card-border-color:                 rgba($black, .125) !default;\n$card-border-radius:                $border-radius !default;\n$card-box-shadow:                   null !default;\n$card-inner-border-radius:          subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y:                $card-spacer-y * .5 !default;\n$card-cap-padding-x:                $card-spacer-x !default;\n$card-cap-bg:                       rgba($black, .03) !default;\n$card-cap-color:                    null !default;\n$card-height:                       null !default;\n$card-color:                        null !default;\n$card-bg:                           $white !default;\n$card-img-overlay-padding:          $spacer !default;\n$card-group-margin:                 $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y:                     1rem !default;\n$accordion-padding-x:                     1.25rem !default;\n$accordion-color:                         $body-color !default;\n$accordion-bg:                            $body-bg !default;\n$accordion-border-width:                  $border-width !default;\n$accordion-border-color:                  rgba($black, .125) !default;\n$accordion-border-radius:                 $border-radius !default;\n$accordion-inner-border-radius:           subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y:                $accordion-padding-y !default;\n$accordion-body-padding-x:                $accordion-padding-x !default;\n\n$accordion-button-padding-y:              $accordion-padding-y !default;\n$accordion-button-padding-x:              $accordion-padding-x !default;\n$accordion-button-color:                  $accordion-color !default;\n$accordion-button-bg:                     $accordion-bg !default;\n$accordion-transition:                    $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg:              tint-color($component-active-bg, 90%) !default;\n$accordion-button-active-color:           shade-color($primary, 10%) !default;\n\n$accordion-button-focus-border-color:     $input-focus-border-color !default;\n$accordion-button-focus-box-shadow:       $btn-focus-box-shadow !default;\n\n$accordion-icon-width:                    1.25rem !default;\n$accordion-icon-color:                    $accordion-button-color !default;\n$accordion-icon-active-color:             $accordion-button-active-color !default;\n$accordion-icon-transition:               transform .2s ease-in-out !default;\n$accordion-icon-transform:                rotate(-180deg) !default;\n\n$accordion-button-icon:         url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n$accordion-button-active-icon:  url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size:                 $font-size-sm !default;\n$tooltip-max-width:                 200px !default;\n$tooltip-color:                     $white !default;\n$tooltip-bg:                        $black !default;\n$tooltip-border-radius:             $border-radius !default;\n$tooltip-opacity:                   .9 !default;\n$tooltip-padding-y:                 $spacer * .25 !default;\n$tooltip-padding-x:                 $spacer * .5 !default;\n$tooltip-margin:                    0 !default;\n\n$tooltip-arrow-width:               .8rem !default;\n$tooltip-arrow-height:              .4rem !default;\n$tooltip-arrow-color:               $tooltip-bg !default;\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y:     $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x:     $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size:     $tooltip-font-size !default;\n$form-feedback-tooltip-line-height:   null !default;\n$form-feedback-tooltip-opacity:       $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size:                 $font-size-sm !default;\n$popover-bg:                        $white !default;\n$popover-max-width:                 276px !default;\n$popover-border-width:              $border-width !default;\n$popover-border-color:              rgba($black, .2) !default;\n$popover-border-radius:             $border-radius-lg !default;\n$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow:                $box-shadow !default;\n\n$popover-header-bg:                 shade-color($popover-bg, 6%) !default;\n$popover-header-color:              $headings-color !default;\n$popover-header-padding-y:          .5rem !default;\n$popover-header-padding-x:          $spacer !default;\n\n$popover-body-color:                $body-color !default;\n$popover-body-padding-y:            $spacer !default;\n$popover-body-padding-x:            $spacer !default;\n\n$popover-arrow-width:               1rem !default;\n$popover-arrow-height:              .5rem !default;\n$popover-arrow-color:               $popover-bg !default;\n\n$popover-arrow-outer-color:         fade-in($popover-border-color, .05) !default;\n// scss-docs-end popover-variables\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width:                   350px !default;\n$toast-padding-x:                   .75rem !default;\n$toast-padding-y:                   .5rem !default;\n$toast-font-size:                   .875rem !default;\n$toast-color:                       null !default;\n$toast-background-color:            rgba($white, .85) !default;\n$toast-border-width:                1px !default;\n$toast-border-color:                rgba(0, 0, 0, .1) !default;\n$toast-border-radius:               $border-radius !default;\n$toast-box-shadow:                  $box-shadow !default;\n$toast-spacing:                     $container-padding-x !default;\n\n$toast-header-color:                $gray-600 !default;\n$toast-header-background-color:     rgba($white, .85) !default;\n$toast-header-border-color:         rgba(0, 0, 0, .05) !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size:                   .75em !default;\n$badge-font-weight:                 $font-weight-bold !default;\n$badge-color:                       $white !default;\n$badge-padding-y:                   .35em !default;\n$badge-padding-x:                   .65em !default;\n$badge-border-radius:               $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding:               $spacer !default;\n\n$modal-footer-margin-between:       .5rem !default;\n\n$modal-dialog-margin:               .5rem !default;\n$modal-dialog-margin-y-sm-up:       1.75rem !default;\n\n$modal-title-line-height:           $line-height-base !default;\n\n$modal-content-color:               null !default;\n$modal-content-bg:                  $white !default;\n$modal-content-border-color:        rgba($black, .2) !default;\n$modal-content-border-width:        $border-width !default;\n$modal-content-border-radius:       $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs:       $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up:    $box-shadow !default;\n\n$modal-backdrop-bg:                 $black !default;\n$modal-backdrop-opacity:            .5 !default;\n$modal-header-border-color:         $border-color !default;\n$modal-footer-border-color:         $modal-header-border-color !default;\n$modal-header-border-width:         $modal-content-border-width !default;\n$modal-footer-border-width:         $modal-header-border-width !default;\n$modal-header-padding-y:            $modal-inner-padding !default;\n$modal-header-padding-x:            $modal-inner-padding !default;\n$modal-header-padding:              $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-sm:                          300px !default;\n$modal-md:                          500px !default;\n$modal-lg:                          800px !default;\n$modal-xl:                          1140px !default;\n\n$modal-fade-transform:              translate(0, -50px) !default;\n$modal-show-transform:              none !default;\n$modal-transition:                  transform .3s ease-out !default;\n$modal-scale-transform:             scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y:               $spacer !default;\n$alert-padding-x:               $spacer !default;\n$alert-margin-bottom:           1rem !default;\n$alert-border-radius:           $border-radius !default;\n$alert-link-font-weight:        $font-weight-bold !default;\n$alert-border-width:            $border-width !default;\n$alert-bg-scale:                -80% !default;\n$alert-border-scale:            -70% !default;\n$alert-color-scale:             40% !default;\n$alert-dismissible-padding-r:   $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height:                   1rem !default;\n$progress-font-size:                $font-size-base * .75 !default;\n$progress-bg:                       $gray-200 !default;\n$progress-border-radius:            $border-radius !default;\n$progress-box-shadow:               $box-shadow-inset !default;\n$progress-bar-color:                $white !default;\n$progress-bar-bg:                   $primary !default;\n$progress-bar-animation-timing:     1s linear infinite !default;\n$progress-bar-transition:           width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color:                  $gray-900 !default;\n$list-group-bg:                     $white !default;\n$list-group-border-color:           rgba($black, .125) !default;\n$list-group-border-width:           $border-width !default;\n$list-group-border-radius:          $border-radius !default;\n\n$list-group-item-padding-y:         $spacer * .5 !default;\n$list-group-item-padding-x:         $spacer !default;\n$list-group-item-bg-scale:          -80% !default;\n$list-group-item-color-scale:       40% !default;\n\n$list-group-hover-bg:               $gray-100 !default;\n$list-group-active-color:           $component-active-color !default;\n$list-group-active-bg:              $component-active-bg !default;\n$list-group-active-border-color:    $list-group-active-bg !default;\n\n$list-group-disabled-color:         $gray-600 !default;\n$list-group-disabled-bg:            $list-group-bg !default;\n\n$list-group-action-color:           $gray-700 !default;\n$list-group-action-hover-color:     $list-group-action-color !default;\n\n$list-group-action-active-color:    $body-color !default;\n$list-group-action-active-bg:       $gray-200 !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding:                 .25rem !default;\n$thumbnail-bg:                      $body-bg !default;\n$thumbnail-border-width:            $border-width !default;\n$thumbnail-border-color:            $gray-300 !default;\n$thumbnail-border-radius:           $border-radius !default;\n$thumbnail-box-shadow:              $box-shadow-sm !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size:          $small-font-size !default;\n$figure-caption-color:              $gray-600 !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size:              null !default;\n$breadcrumb-padding-y:              0 !default;\n$breadcrumb-padding-x:              0 !default;\n$breadcrumb-item-padding-x:         .5rem !default;\n$breadcrumb-margin-bottom:          1rem !default;\n$breadcrumb-bg:                     null !default;\n$breadcrumb-divider-color:          $gray-600 !default;\n$breadcrumb-active-color:           $gray-600 !default;\n$breadcrumb-divider:                quote(\"/\") !default;\n$breadcrumb-divider-flipped:        $breadcrumb-divider !default;\n$breadcrumb-border-radius:          null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color:             $white !default;\n$carousel-control-width:             15% !default;\n$carousel-control-opacity:           .5 !default;\n$carousel-control-hover-opacity:     .9 !default;\n$carousel-control-transition:        opacity .15s ease !default;\n\n$carousel-indicator-width:           30px !default;\n$carousel-indicator-height:          3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer:          3px !default;\n$carousel-indicator-opacity:         .5 !default;\n$carousel-indicator-active-bg:       $white !default;\n$carousel-indicator-active-opacity:  1 !default;\n$carousel-indicator-transition:      opacity .6s ease !default;\n\n$carousel-caption-width:             70% !default;\n$carousel-caption-color:             $white !default;\n$carousel-caption-padding-y:         1.25rem !default;\n$carousel-caption-spacer:            1.25rem !default;\n\n$carousel-control-icon-width:        2rem !default;\n\n$carousel-control-prev-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>\") !default;\n$carousel-control-next-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n\n$carousel-transition-duration:       .6s !default;\n$carousel-transition:                transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n$carousel-dark-indicator-active-bg:  $black !default;\n$carousel-dark-caption-color:        $black !default;\n$carousel-dark-control-icon-filter:  invert(1) grayscale(100) !default;\n// scss-docs-end carousel-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width:           2rem !default;\n$spinner-height:          $spinner-width !default;\n$spinner-vertical-align:  -.125em !default;\n$spinner-border-width:    .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm:        1rem !default;\n$spinner-height-sm:       $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width:            1em !default;\n$btn-close-height:           $btn-close-width !default;\n$btn-close-padding-x:        .25em !default;\n$btn-close-padding-y:        $btn-close-padding-x !default;\n$btn-close-color:            $black !default;\n$btn-close-bg:               url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/></svg>\") !default;\n$btn-close-focus-shadow:     $input-btn-focus-box-shadow !default;\n$btn-close-opacity:          .5 !default;\n$btn-close-hover-opacity:    .75 !default;\n$btn-close-focus-opacity:    1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter:     invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y:               $modal-inner-padding !default;\n$offcanvas-padding-x:               $modal-inner-padding !default;\n$offcanvas-horizontal-width:        400px !default;\n$offcanvas-vertical-height:         30vh !default;\n$offcanvas-transition-duration:     .3s !default;\n$offcanvas-border-color:            $modal-content-border-color !default;\n$offcanvas-border-width:            $modal-content-border-width !default;\n$offcanvas-title-line-height:       $modal-title-line-height !default;\n$offcanvas-bg-color:                $modal-content-bg !default;\n$offcanvas-color:                   $modal-content-color !default;\n$offcanvas-box-shadow:              $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg:             $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity:        $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size:                    $small-font-size !default;\n$code-color:                        $pink !default;\n\n$kbd-padding-y:                     .2rem !default;\n$kbd-padding-x:                     .4rem !default;\n$kbd-font-size:                     $code-font-size !default;\n$kbd-color:                         $white !default;\n$kbd-bg:                            $gray-900 !default;\n\n$pre-color:                         null !default;\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n  .row {\n    @include make-row();\n\n    > * {\n      @include make-col-ready();\n    }\n  }\n}\n\n@if $enable-cssgrid {\n  .grid {\n    display: grid;\n    grid-template-rows: repeat(var(--#{$variable-prefix}rows, 1), 1fr);\n    grid-template-columns: repeat(var(--#{$variable-prefix}columns, #{$grid-columns}), 1fr);\n    gap: var(--#{$variable-prefix}gap, #{$grid-gutter-width});\n\n    @include make-cssgrid();\n  }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n  @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n  --#{$variable-prefix}gutter-x: #{$gutter};\n  --#{$variable-prefix}gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list\n  margin-right: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n  margin-left: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n  // Add box sizing if only the grid is loaded\n  box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-right: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  padding-left: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  margin-top: var(--#{$variable-prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: percentage(divide($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: divide($size, $columns);\n  margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: divide(100%, $count);\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is and invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n  $values: map-get($utility, values);\n\n  // If the values are a list or string, convert it into a map\n  @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n    $values: zip($values, $values);\n  }\n\n  @each $key, $value in $values {\n    $properties: map-get($utility, property);\n\n    // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n    @if type-of($properties) == \"string\" {\n      $properties: append((), $properties);\n    }\n\n    // Use custom class if present\n    $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n    $property-class: if($property-class == null, \"\", $property-class);\n\n    // State params to generate pseudo-classes\n    $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n    $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (eg. with shadow class)\n    $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n    @if map-get($utility, rfs) {\n      // Inside the media query\n      @if $is-rfs-media-query {\n        $val: rfs-value($value);\n\n        // Do not render anything if fluid and non fluid values are the same\n        $value: if($val == rfs-fluid-value($value), null, $val);\n      }\n      @else {\n        $value: rfs-fluid-value($value);\n      }\n    }\n\n    $is-css-var: map-get($utility, css-var);\n    $is-local-vars: map-get($utility, local-vars);\n    $is-rtl: map-get($utility, rtl);\n\n    @if $value != null {\n      @if $is-rtl == false {\n        /* rtl:begin:remove */\n      }\n\n      @if $is-css-var {\n        .#{$property-class + $infix + $property-class-modifier} {\n          --#{$variable-prefix}#{$property-class}: #{$value};\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            --#{$variable-prefix}#{$property-class}: #{$value};\n          }\n        }\n      } @else {\n        .#{$property-class + $infix + $property-class-modifier} {\n          @each $property in $properties {\n            @if $is-local-vars {\n              @each $local-var, $value in $is-local-vars {\n                --#{$variable-prefix}#{$local-var}: #{$value};\n              }\n            }\n            #{$property}: $value if($enable-important-utilities, !important, null);\n          }\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            @each $property in $properties {\n              #{$property}: $value if($enable-important-utilities, !important, null);\n            }\n          }\n        }\n      }\n\n      @if $is-rtl == false {\n        /* rtl:end:remove */\n      }\n    }\n  }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n  // Generate media query if needed\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    // Loop over each utility property\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Only proceed if responsive media queries are enabled or if it's the base media query\n      @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n        @include generate-utility($utility, $infix);\n      }\n    }\n  }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix, true);\n        }\n      }\n    }\n  }\n}\n\n\n// Print utilities\n@media print {\n  @each $key, $utility in $utilities {\n    // The utility can be disabled with `false`, thus check if the utility is a map first\n    // Then check if the utility needs print styles\n    @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n      @include generate-utility($utility, \"-print\");\n    }\n  }\n}\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css
new file mode 100644
index 0000000..d3dfc1b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap Grid v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-left:var(--bs-gutter-x,.75rem);padding-right:var(--bs-gutter-x,.75rem);margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-left:calc(var(--bs-gutter-x) * -.5);margin-right:calc(var(--bs-gutter-x) * -.5)}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-right:8.33333333%}.offset-2{margin-right:16.66666667%}.offset-3{margin-right:25%}.offset-4{margin-right:33.33333333%}.offset-5{margin-right:41.66666667%}.offset-6{margin-right:50%}.offset-7{margin-right:58.33333333%}.offset-8{margin-right:66.66666667%}.offset-9{margin-right:75%}.offset-10{margin-right:83.33333333%}.offset-11{margin-right:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-right:0}.offset-sm-1{margin-right:8.33333333%}.offset-sm-2{margin-right:16.66666667%}.offset-sm-3{margin-right:25%}.offset-sm-4{margin-right:33.33333333%}.offset-sm-5{margin-right:41.66666667%}.offset-sm-6{margin-right:50%}.offset-sm-7{margin-right:58.33333333%}.offset-sm-8{margin-right:66.66666667%}.offset-sm-9{margin-right:75%}.offset-sm-10{margin-right:83.33333333%}.offset-sm-11{margin-right:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-right:0}.offset-md-1{margin-right:8.33333333%}.offset-md-2{margin-right:16.66666667%}.offset-md-3{margin-right:25%}.offset-md-4{margin-right:33.33333333%}.offset-md-5{margin-right:41.66666667%}.offset-md-6{margin-right:50%}.offset-md-7{margin-right:58.33333333%}.offset-md-8{margin-right:66.66666667%}.offset-md-9{margin-right:75%}.offset-md-10{margin-right:83.33333333%}.offset-md-11{margin-right:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-right:0}.offset-lg-1{margin-right:8.33333333%}.offset-lg-2{margin-right:16.66666667%}.offset-lg-3{margin-right:25%}.offset-lg-4{margin-right:33.33333333%}.offset-lg-5{margin-right:41.66666667%}.offset-lg-6{margin-right:50%}.offset-lg-7{margin-right:58.33333333%}.offset-lg-8{margin-right:66.66666667%}.offset-lg-9{margin-right:75%}.offset-lg-10{margin-right:83.33333333%}.offset-lg-11{margin-right:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-right:0}.offset-xl-1{margin-right:8.33333333%}.offset-xl-2{margin-right:16.66666667%}.offset-xl-3{margin-right:25%}.offset-xl-4{margin-right:33.33333333%}.offset-xl-5{margin-right:41.66666667%}.offset-xl-6{margin-right:50%}.offset-xl-7{margin-right:58.33333333%}.offset-xl-8{margin-right:66.66666667%}.offset-xl-9{margin-right:75%}.offset-xl-10{margin-right:83.33333333%}.offset-xl-11{margin-right:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-right:0}.offset-xxl-1{margin-right:8.33333333%}.offset-xxl-2{margin-right:16.66666667%}.offset-xxl-3{margin-right:25%}.offset-xxl-4{margin-right:33.33333333%}.offset-xxl-5{margin-right:41.66666667%}.offset-xxl-6{margin-right:50%}.offset-xxl-7{margin-right:58.33333333%}.offset-xxl-8{margin-right:66.66666667%}.offset-xxl-9{margin-right:75%}.offset-xxl-10{margin-right:83.33333333%}.offset-xxl-11{margin-right:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-left:0!important}.me-1{margin-left:.25rem!important}.me-2{margin-left:.5rem!important}.me-3{margin-left:1rem!important}.me-4{margin-left:1.5rem!important}.me-5{margin-left:3rem!important}.me-auto{margin-left:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-right:0!important}.ms-1{margin-right:.25rem!important}.ms-2{margin-right:.5rem!important}.ms-3{margin-right:1rem!important}.ms-4{margin-right:1.5rem!important}.ms-5{margin-right:3rem!important}.ms-auto{margin-right:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-left:0!important}.pe-1{padding-left:.25rem!important}.pe-2{padding-left:.5rem!important}.pe-3{padding-left:1rem!important}.pe-4{padding-left:1.5rem!important}.pe-5{padding-left:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-right:0!important}.ps-1{padding-right:.25rem!important}.ps-2{padding-right:.5rem!important}.ps-3{padding-right:1rem!important}.ps-4{padding-right:1.5rem!important}.ps-5{padding-right:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-left:0!important}.me-sm-1{margin-left:.25rem!important}.me-sm-2{margin-left:.5rem!important}.me-sm-3{margin-left:1rem!important}.me-sm-4{margin-left:1.5rem!important}.me-sm-5{margin-left:3rem!important}.me-sm-auto{margin-left:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-right:0!important}.ms-sm-1{margin-right:.25rem!important}.ms-sm-2{margin-right:.5rem!important}.ms-sm-3{margin-right:1rem!important}.ms-sm-4{margin-right:1.5rem!important}.ms-sm-5{margin-right:3rem!important}.ms-sm-auto{margin-right:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-left:0!important}.pe-sm-1{padding-left:.25rem!important}.pe-sm-2{padding-left:.5rem!important}.pe-sm-3{padding-left:1rem!important}.pe-sm-4{padding-left:1.5rem!important}.pe-sm-5{padding-left:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-right:0!important}.ps-sm-1{padding-right:.25rem!important}.ps-sm-2{padding-right:.5rem!important}.ps-sm-3{padding-right:1rem!important}.ps-sm-4{padding-right:1.5rem!important}.ps-sm-5{padding-right:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-left:0!important}.me-md-1{margin-left:.25rem!important}.me-md-2{margin-left:.5rem!important}.me-md-3{margin-left:1rem!important}.me-md-4{margin-left:1.5rem!important}.me-md-5{margin-left:3rem!important}.me-md-auto{margin-left:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-right:0!important}.ms-md-1{margin-right:.25rem!important}.ms-md-2{margin-right:.5rem!important}.ms-md-3{margin-right:1rem!important}.ms-md-4{margin-right:1.5rem!important}.ms-md-5{margin-right:3rem!important}.ms-md-auto{margin-right:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-left:0!important}.pe-md-1{padding-left:.25rem!important}.pe-md-2{padding-left:.5rem!important}.pe-md-3{padding-left:1rem!important}.pe-md-4{padding-left:1.5rem!important}.pe-md-5{padding-left:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-right:0!important}.ps-md-1{padding-right:.25rem!important}.ps-md-2{padding-right:.5rem!important}.ps-md-3{padding-right:1rem!important}.ps-md-4{padding-right:1.5rem!important}.ps-md-5{padding-right:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-left:0!important}.me-lg-1{margin-left:.25rem!important}.me-lg-2{margin-left:.5rem!important}.me-lg-3{margin-left:1rem!important}.me-lg-4{margin-left:1.5rem!important}.me-lg-5{margin-left:3rem!important}.me-lg-auto{margin-left:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-right:0!important}.ms-lg-1{margin-right:.25rem!important}.ms-lg-2{margin-right:.5rem!important}.ms-lg-3{margin-right:1rem!important}.ms-lg-4{margin-right:1.5rem!important}.ms-lg-5{margin-right:3rem!important}.ms-lg-auto{margin-right:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-left:0!important}.pe-lg-1{padding-left:.25rem!important}.pe-lg-2{padding-left:.5rem!important}.pe-lg-3{padding-left:1rem!important}.pe-lg-4{padding-left:1.5rem!important}.pe-lg-5{padding-left:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-right:0!important}.ps-lg-1{padding-right:.25rem!important}.ps-lg-2{padding-right:.5rem!important}.ps-lg-3{padding-right:1rem!important}.ps-lg-4{padding-right:1.5rem!important}.ps-lg-5{padding-right:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-left:0!important}.me-xl-1{margin-left:.25rem!important}.me-xl-2{margin-left:.5rem!important}.me-xl-3{margin-left:1rem!important}.me-xl-4{margin-left:1.5rem!important}.me-xl-5{margin-left:3rem!important}.me-xl-auto{margin-left:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-right:0!important}.ms-xl-1{margin-right:.25rem!important}.ms-xl-2{margin-right:.5rem!important}.ms-xl-3{margin-right:1rem!important}.ms-xl-4{margin-right:1.5rem!important}.ms-xl-5{margin-right:3rem!important}.ms-xl-auto{margin-right:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-left:0!important}.pe-xl-1{padding-left:.25rem!important}.pe-xl-2{padding-left:.5rem!important}.pe-xl-3{padding-left:1rem!important}.pe-xl-4{padding-left:1.5rem!important}.pe-xl-5{padding-left:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-right:0!important}.ps-xl-1{padding-right:.25rem!important}.ps-xl-2{padding-right:.5rem!important}.ps-xl-3{padding-right:1rem!important}.ps-xl-4{padding-right:1.5rem!important}.ps-xl-5{padding-right:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-left:0!important}.me-xxl-1{margin-left:.25rem!important}.me-xxl-2{margin-left:.5rem!important}.me-xxl-3{margin-left:1rem!important}.me-xxl-4{margin-left:1.5rem!important}.me-xxl-5{margin-left:3rem!important}.me-xxl-auto{margin-left:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-right:0!important}.ms-xxl-1{margin-right:.25rem!important}.ms-xxl-2{margin-right:.5rem!important}.ms-xxl-3{margin-right:1rem!important}.ms-xxl-4{margin-right:1.5rem!important}.ms-xxl-5{margin-right:3rem!important}.ms-xxl-auto{margin-right:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-left:0!important}.pe-xxl-1{padding-left:.25rem!important}.pe-xxl-2{padding-left:.5rem!important}.pe-xxl-3{padding-left:1rem!important}.pe-xxl-4{padding-left:1.5rem!important}.pe-xxl-5{padding-left:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-right:0!important}.ps-xxl-1{padding-right:.25rem!important}.ps-xxl-2{padding-right:.5rem!important}.ps-xxl-3{padding-right:1rem!important}.ps-xxl-4{padding-right:1.5rem!important}.ps-xxl-5{padding-right:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
+/*# sourceMappingURL=bootstrap-grid.rtl.min.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map
new file mode 100644
index 0000000..86d302a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap-grid.scss","../../scss/_containers.scss","dist/css/bootstrap-grid.rtl.css","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AAAA;;;;;ACME,WCCF,iBAGA,cACA,cACA,cAHA,cADA,eCLE,MAAA,KACA,aAAA,0BACA,cAAA,0BACA,YAAA,KACA,aAAA,KCwDE,yBH5CE,WAAA,cACE,UAAA,OG2CJ,yBH5CE,WAAA,cAAA,cACE,UAAA,OG2CJ,yBH5CE,WAAA,cAAA,cAAA,cACE,UAAA,OG2CJ,0BH5CE,WAAA,cAAA,cAAA,cAAA,cACE,UAAA,QG2CJ,0BH5CE,WAAA,cAAA,cAAA,cAAA,cAAA,eACE,UAAA,QIfN,KCAA,cAAA,OACA,cAAA,EACA,QAAA,KACA,UAAA,KACA,WAAA,8BACA,YAAA,+BACA,aAAA,+BDHE,OCQF,WAAA,WAIA,YAAA,EACA,MAAA,KACA,UAAA,KACA,aAAA,8BACA,cAAA,8BACA,WAAA,mBA+CI,KACE,KAAA,EAAA,EAAA,GAGF,iBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,cACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,UAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,UAxDV,aAAA,YAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,IAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,IAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,IAwDU,WAxDV,aAAA,aAwDU,WAxDV,aAAA,aAmEM,KJoGR,MIlGU,cAAA,EAGF,KJoGR,MIlGU,cAAA,EAPF,KJ8GR,MI5GU,cAAA,QAGF,KJ8GR,MI5GU,cAAA,QAPF,KJwHR,MItHU,cAAA,OAGF,KJwHR,MItHU,cAAA,OAPF,KJkIR,MIhIU,cAAA,KAGF,KJkIR,MIhIU,cAAA,KAPF,KJ4IR,MI1IU,cAAA,OAGF,KJ4IR,MI1IU,cAAA,OAPF,KJsJR,MIpJU,cAAA,KAGF,KJsJR,MIpJU,cAAA,KFzDN,yBESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJyTR,SIvTU,cAAA,EAGF,QJyTR,SIvTU,cAAA,EAPF,QJmUR,SIjUU,cAAA,QAGF,QJmUR,SIjUU,cAAA,QAPF,QJ6UR,SI3UU,cAAA,OAGF,QJ6UR,SI3UU,cAAA,OAPF,QJuVR,SIrVU,cAAA,KAGF,QJuVR,SIrVU,cAAA,KAPF,QJiWR,SI/VU,cAAA,OAGF,QJiWR,SI/VU,cAAA,OAPF,QJ2WR,SIzWU,cAAA,KAGF,QJ2WR,SIzWU,cAAA,MFzDN,yBESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJ8gBR,SI5gBU,cAAA,EAGF,QJ8gBR,SI5gBU,cAAA,EAPF,QJwhBR,SIthBU,cAAA,QAGF,QJwhBR,SIthBU,cAAA,QAPF,QJkiBR,SIhiBU,cAAA,OAGF,QJkiBR,SIhiBU,cAAA,OAPF,QJ4iBR,SI1iBU,cAAA,KAGF,QJ4iBR,SI1iBU,cAAA,KAPF,QJsjBR,SIpjBU,cAAA,OAGF,QJsjBR,SIpjBU,cAAA,OAPF,QJgkBR,SI9jBU,cAAA,KAGF,QJgkBR,SI9jBU,cAAA,MFzDN,yBESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJmuBR,SIjuBU,cAAA,EAGF,QJmuBR,SIjuBU,cAAA,EAPF,QJ6uBR,SI3uBU,cAAA,QAGF,QJ6uBR,SI3uBU,cAAA,QAPF,QJuvBR,SIrvBU,cAAA,OAGF,QJuvBR,SIrvBU,cAAA,OAPF,QJiwBR,SI/vBU,cAAA,KAGF,QJiwBR,SI/vBU,cAAA,KAPF,QJ2wBR,SIzwBU,cAAA,OAGF,QJ2wBR,SIzwBU,cAAA,OAPF,QJqxBR,SInxBU,cAAA,KAGF,QJqxBR,SInxBU,cAAA,MFzDN,0BESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJw7BR,SIt7BU,cAAA,EAGF,QJw7BR,SIt7BU,cAAA,EAPF,QJk8BR,SIh8BU,cAAA,QAGF,QJk8BR,SIh8BU,cAAA,QAPF,QJ48BR,SI18BU,cAAA,OAGF,QJ48BR,SI18BU,cAAA,OAPF,QJs9BR,SIp9BU,cAAA,KAGF,QJs9BR,SIp9BU,cAAA,KAPF,QJg+BR,SI99BU,cAAA,OAGF,QJg+BR,SI99BU,cAAA,OAPF,QJ0+BR,SIx+BU,cAAA,KAGF,QJ0+BR,SIx+BU,cAAA,MFzDN,0BESE,SACE,KAAA,EAAA,EAAA,GAGF,qBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,cAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,cAxDV,aAAA,EAwDU,cAxDV,aAAA,YAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,IAwDU,eAxDV,aAAA,aAwDU,eAxDV,aAAA,aAmEM,SJ6oCR,UI3oCU,cAAA,EAGF,SJ6oCR,UI3oCU,cAAA,EAPF,SJupCR,UIrpCU,cAAA,QAGF,SJupCR,UIrpCU,cAAA,QAPF,SJiqCR,UI/pCU,cAAA,OAGF,SJiqCR,UI/pCU,cAAA,OAPF,SJ2qCR,UIzqCU,cAAA,KAGF,SJ2qCR,UIzqCU,cAAA,KAPF,SJqrCR,UInrCU,cAAA,OAGF,SJqrCR,UInrCU,cAAA,OAPF,SJ+rCR,UI7rCU,cAAA,KAGF,SJ+rCR,UI7rCU,cAAA,MCzDF,UAOI,QAAA,iBAPJ,gBAOI,QAAA,uBAPJ,SAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,SAOI,QAAA,gBAPJ,aAOI,QAAA,oBAPJ,cAOI,QAAA,qBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,QAOI,QAAA,eAPJ,WAOI,KAAA,EAAA,EAAA,eAPJ,UAOI,eAAA,cAPJ,aAOI,eAAA,iBAPJ,kBAOI,eAAA,sBAPJ,qBAOI,eAAA,yBAPJ,aAOI,UAAA,YAPJ,aAOI,UAAA,YAPJ,eAOI,YAAA,YAPJ,eAOI,YAAA,YAPJ,WAOI,UAAA,eAPJ,aAOI,UAAA,iBAPJ,mBAOI,UAAA,uBAPJ,uBAOI,gBAAA,qBAPJ,qBAOI,gBAAA,mBAPJ,wBAOI,gBAAA,iBAPJ,yBAOI,gBAAA,wBAPJ,wBAOI,gBAAA,uBAPJ,wBAOI,gBAAA,uBAPJ,mBAOI,YAAA,qBAPJ,iBAOI,YAAA,mBAPJ,oBAOI,YAAA,iBAPJ,sBAOI,YAAA,mBAPJ,qBAOI,YAAA,kBAPJ,qBAOI,cAAA,qBAPJ,mBAOI,cAAA,mBAPJ,sBAOI,cAAA,iBAPJ,uBAOI,cAAA,wBAPJ,sBAOI,cAAA,uBAPJ,uBAOI,cAAA,kBAPJ,iBAOI,WAAA,eAPJ,kBAOI,WAAA,qBAPJ,gBAOI,WAAA,mBAPJ,mBAOI,WAAA,iBAPJ,qBAOI,WAAA,mBAPJ,oBAOI,WAAA,kBAPJ,aAOI,MAAA,aAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,KAOI,OAAA,YAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,gBAPJ,KAOI,OAAA,eAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,eAPJ,QAOI,OAAA,eAPJ,MAOI,YAAA,YAAA,aAAA,YAPJ,MAOI,YAAA,iBAAA,aAAA,iBAPJ,MAOI,YAAA,gBAAA,aAAA,gBAPJ,MAOI,YAAA,eAAA,aAAA,eAPJ,MAOI,YAAA,iBAAA,aAAA,iBAPJ,MAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,MAOI,WAAA,YAAA,cAAA,YAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,gBAAA,cAAA,gBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,YAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,gBAPJ,MAOI,WAAA,eAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,eAPJ,SAOI,WAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,SAOI,YAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,SAOI,cAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,SAOI,aAAA,eAPJ,KAOI,QAAA,YAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,gBAPJ,KAOI,QAAA,eAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,eAPJ,MAOI,aAAA,YAAA,cAAA,YAPJ,MAOI,aAAA,iBAAA,cAAA,iBAPJ,MAOI,aAAA,gBAAA,cAAA,gBAPJ,MAOI,aAAA,eAAA,cAAA,eAPJ,MAOI,aAAA,iBAAA,cAAA,iBAPJ,MAOI,aAAA,eAAA,cAAA,eAPJ,MAOI,YAAA,YAAA,eAAA,YAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,gBAAA,eAAA,gBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,MAOI,eAAA,YAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,gBAPJ,MAOI,eAAA,eAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eHPR,yBGAI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHPR,yBGAI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHPR,yBGAI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHPR,0BGAI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHPR,0BGAI,cAOI,QAAA,iBAPJ,oBAOI,QAAA,uBAPJ,aAOI,QAAA,gBAPJ,YAOI,QAAA,eAPJ,aAOI,QAAA,gBAPJ,iBAOI,QAAA,oBAPJ,kBAOI,QAAA,qBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,YAOI,QAAA,eAPJ,eAOI,KAAA,EAAA,EAAA,eAPJ,cAOI,eAAA,cAPJ,iBAOI,eAAA,iBAPJ,sBAOI,eAAA,sBAPJ,yBAOI,eAAA,yBAPJ,iBAOI,UAAA,YAPJ,iBAOI,UAAA,YAPJ,mBAOI,YAAA,YAPJ,mBAOI,YAAA,YAPJ,eAOI,UAAA,eAPJ,iBAOI,UAAA,iBAPJ,uBAOI,UAAA,uBAPJ,2BAOI,gBAAA,qBAPJ,yBAOI,gBAAA,mBAPJ,4BAOI,gBAAA,iBAPJ,6BAOI,gBAAA,wBAPJ,4BAOI,gBAAA,uBAPJ,4BAOI,gBAAA,uBAPJ,uBAOI,YAAA,qBAPJ,qBAOI,YAAA,mBAPJ,wBAOI,YAAA,iBAPJ,0BAOI,YAAA,mBAPJ,yBAOI,YAAA,kBAPJ,yBAOI,cAAA,qBAPJ,uBAOI,cAAA,mBAPJ,0BAOI,cAAA,iBAPJ,2BAOI,cAAA,wBAPJ,0BAOI,cAAA,uBAPJ,2BAOI,cAAA,kBAPJ,qBAOI,WAAA,eAPJ,sBAOI,WAAA,qBAPJ,oBAOI,WAAA,mBAPJ,uBAOI,WAAA,iBAPJ,yBAOI,WAAA,mBAPJ,wBAOI,WAAA,kBAPJ,iBAOI,MAAA,aAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,gBAOI,MAAA,YAPJ,SAOI,OAAA,YAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,gBAPJ,SAOI,OAAA,eAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,eAPJ,YAOI,OAAA,eAPJ,UAOI,YAAA,YAAA,aAAA,YAPJ,UAOI,YAAA,iBAAA,aAAA,iBAPJ,UAOI,YAAA,gBAAA,aAAA,gBAPJ,UAOI,YAAA,eAAA,aAAA,eAPJ,UAOI,YAAA,iBAAA,aAAA,iBAPJ,UAOI,YAAA,eAAA,aAAA,eAPJ,aAOI,YAAA,eAAA,aAAA,eAPJ,UAOI,WAAA,YAAA,cAAA,YAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,gBAAA,cAAA,gBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,aAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,YAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,gBAPJ,UAOI,WAAA,eAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,eAPJ,aAOI,WAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,aAOI,YAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,aAOI,cAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,aAOI,aAAA,eAPJ,SAOI,QAAA,YAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,gBAPJ,SAOI,QAAA,eAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,eAPJ,UAOI,aAAA,YAAA,cAAA,YAPJ,UAOI,aAAA,iBAAA,cAAA,iBAPJ,UAOI,aAAA,gBAAA,cAAA,gBAPJ,UAOI,aAAA,eAAA,cAAA,eAPJ,UAOI,aAAA,iBAAA,cAAA,iBAPJ,UAOI,aAAA,eAAA,cAAA,eAPJ,UAOI,YAAA,YAAA,eAAA,YAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,gBAAA,eAAA,gBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,UAOI,eAAA,YAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,gBAPJ,UAOI,eAAA,eAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBChCZ,aDyBQ,gBAOI,QAAA,iBAPJ,sBAOI,QAAA,uBAPJ,eAOI,QAAA,gBAPJ,cAOI,QAAA,eAPJ,eAOI,QAAA,gBAPJ,mBAOI,QAAA,oBAPJ,oBAOI,QAAA,qBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,cAOI,QAAA","sourcesContent":["/*!\n * Bootstrap Grid v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n$include-column-box-sizing: true !default;\n\n@import \"functions\";\n@import \"variables\";\n\n@import \"mixins/lists\";\n@import \"mixins/breakpoints\";\n@import \"mixins/container\";\n@import \"mixins/grid\";\n@import \"mixins/utilities\";\n\n@import \"vendor/rfs\";\n\n@import \"containers\";\n@import \"grid\";\n\n@import \"utilities\";\n// Only use the utilities we need\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-get-multiple(\n  $utilities,\n  (\n    \"display\",\n    \"order\",\n    \"flex\",\n    \"flex-direction\",\n    \"flex-grow\",\n    \"flex-shrink\",\n    \"flex-wrap\",\n    \"justify-content\",\n    \"align-items\",\n    \"align-content\",\n    \"align-self\",\n    \"margin\",\n    \"margin-x\",\n    \"margin-y\",\n    \"margin-top\",\n    \"margin-end\",\n    \"margin-bottom\",\n    \"margin-start\",\n    \"negative-margin\",\n    \"negative-margin-x\",\n    \"negative-margin-y\",\n    \"negative-margin-top\",\n    \"negative-margin-end\",\n    \"negative-margin-bottom\",\n    \"negative-margin-start\",\n    \"padding\",\n    \"padding-x\",\n    \"padding-y\",\n    \"padding-top\",\n    \"padding-end\",\n    \"padding-bottom\",\n    \"padding-start\",\n  )\n);\n\n@import \"utilities/api\";\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n  // Single container class with breakpoint max-widths\n  .container,\n  // 100% wide container at all breakpoints\n  .container-fluid {\n    @include make-container();\n  }\n\n  // Responsive containers that are 100% wide until a breakpoint\n  @each $breakpoint, $container-max-width in $container-max-widths {\n    .container-#{$breakpoint} {\n      @extend .container-fluid;\n    }\n\n    @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n      %responsive-container-#{$breakpoint} {\n        max-width: $container-max-width;\n      }\n\n      // Extend each breakpoint which is smaller or equal to the current breakpoint\n      $extend-breakpoint: true;\n\n      @each $name, $width in $grid-breakpoints {\n        @if ($extend-breakpoint) {\n          .container#{breakpoint-infix($name, $grid-breakpoints)} {\n            @extend %responsive-container-#{$breakpoint};\n          }\n\n          // Once the current breakpoint is reached, stop extending\n          @if ($breakpoint == $name) {\n            $extend-breakpoint: false;\n          }\n        }\n      }\n    }\n  }\n}\n","/*!\n * Bootstrap Grid v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n  width: 100%;\n  padding-left: var(--bs-gutter-x, 0.75rem);\n  padding-right: var(--bs-gutter-x, 0.75rem);\n  margin-left: auto;\n  margin-right: auto;\n}\n\n@media (min-width: 576px) {\n  .container-sm, .container {\n    max-width: 540px;\n  }\n}\n@media (min-width: 768px) {\n  .container-md, .container-sm, .container {\n    max-width: 720px;\n  }\n}\n@media (min-width: 992px) {\n  .container-lg, .container-md, .container-sm, .container {\n    max-width: 960px;\n  }\n}\n@media (min-width: 1200px) {\n  .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1140px;\n  }\n}\n@media (min-width: 1400px) {\n  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1320px;\n  }\n}\n.row {\n  --bs-gutter-x: 1.5rem;\n  --bs-gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--bs-gutter-y) * -1);\n  margin-left: calc(var(--bs-gutter-x) * -.5);\n  margin-right: calc(var(--bs-gutter-x) * -.5);\n}\n.row > * {\n  box-sizing: border-box;\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%;\n  padding-left: calc(var(--bs-gutter-x) * .5);\n  padding-right: calc(var(--bs-gutter-x) * .5);\n  margin-top: var(--bs-gutter-y);\n}\n\n.col {\n  flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.row-cols-1 > * {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.row-cols-2 > * {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.row-cols-3 > * {\n  flex: 0 0 auto;\n  width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.row-cols-5 > * {\n  flex: 0 0 auto;\n  width: 20%;\n}\n\n.row-cols-6 > * {\n  flex: 0 0 auto;\n  width: 16.6666666667%;\n}\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.col-1 {\n  flex: 0 0 auto;\n  width: 8.33333333%;\n}\n\n.col-2 {\n  flex: 0 0 auto;\n  width: 16.66666667%;\n}\n\n.col-3 {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 auto;\n  width: 33.33333333%;\n}\n\n.col-5 {\n  flex: 0 0 auto;\n  width: 41.66666667%;\n}\n\n.col-6 {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 auto;\n  width: 58.33333333%;\n}\n\n.col-8 {\n  flex: 0 0 auto;\n  width: 66.66666667%;\n}\n\n.col-9 {\n  flex: 0 0 auto;\n  width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 auto;\n  width: 83.33333333%;\n}\n\n.col-11 {\n  flex: 0 0 auto;\n  width: 91.66666667%;\n}\n\n.col-12 {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.offset-1 {\n  margin-right: 8.33333333%;\n}\n\n.offset-2 {\n  margin-right: 16.66666667%;\n}\n\n.offset-3 {\n  margin-right: 25%;\n}\n\n.offset-4 {\n  margin-right: 33.33333333%;\n}\n\n.offset-5 {\n  margin-right: 41.66666667%;\n}\n\n.offset-6 {\n  margin-right: 50%;\n}\n\n.offset-7 {\n  margin-right: 58.33333333%;\n}\n\n.offset-8 {\n  margin-right: 66.66666667%;\n}\n\n.offset-9 {\n  margin-right: 75%;\n}\n\n.offset-10 {\n  margin-right: 83.33333333%;\n}\n\n.offset-11 {\n  margin-right: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n  --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n  --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n  --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n  --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n  --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n  --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n  --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n  --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n  --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n  --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n  --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n  --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-sm-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-sm-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-sm-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-sm-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-sm-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-sm-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-sm-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-sm-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-sm-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-sm-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-sm-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-sm-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-sm-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-sm-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-sm-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-sm-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-sm-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-sm-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-sm-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-sm-0 {\n    margin-right: 0;\n  }\n\n  .offset-sm-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-sm-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-sm-3 {\n    margin-right: 25%;\n  }\n\n  .offset-sm-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-sm-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-sm-6 {\n    margin-right: 50%;\n  }\n\n  .offset-sm-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-sm-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-sm-9 {\n    margin-right: 75%;\n  }\n\n  .offset-sm-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-sm-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-sm-0,\n.gx-sm-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-sm-0,\n.gy-sm-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-sm-1,\n.gx-sm-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-sm-1,\n.gy-sm-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-sm-2,\n.gx-sm-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-sm-2,\n.gy-sm-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-sm-3,\n.gx-sm-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-sm-3,\n.gy-sm-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-sm-4,\n.gx-sm-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-sm-4,\n.gy-sm-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-sm-5,\n.gx-sm-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-sm-5,\n.gy-sm-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 768px) {\n  .col-md {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-md-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-md-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-md-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-md-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-md-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-md-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-md-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-md-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-md-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-md-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-md-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-md-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-md-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-md-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-md-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-md-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-md-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-md-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-md-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-md-0 {\n    margin-right: 0;\n  }\n\n  .offset-md-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-md-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-md-3 {\n    margin-right: 25%;\n  }\n\n  .offset-md-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-md-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-md-6 {\n    margin-right: 50%;\n  }\n\n  .offset-md-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-md-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-md-9 {\n    margin-right: 75%;\n  }\n\n  .offset-md-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-md-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-md-0,\n.gx-md-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-md-0,\n.gy-md-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-md-1,\n.gx-md-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-md-1,\n.gy-md-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-md-2,\n.gx-md-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-md-2,\n.gy-md-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-md-3,\n.gx-md-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-md-3,\n.gy-md-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-md-4,\n.gx-md-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-md-4,\n.gy-md-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-md-5,\n.gx-md-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-md-5,\n.gy-md-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 992px) {\n  .col-lg {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-lg-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-lg-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-lg-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-lg-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-lg-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-lg-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-lg-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-lg-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-lg-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-lg-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-lg-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-lg-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-lg-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-lg-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-lg-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-lg-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-lg-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-lg-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-lg-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-lg-0 {\n    margin-right: 0;\n  }\n\n  .offset-lg-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-lg-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-lg-3 {\n    margin-right: 25%;\n  }\n\n  .offset-lg-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-lg-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-lg-6 {\n    margin-right: 50%;\n  }\n\n  .offset-lg-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-lg-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-lg-9 {\n    margin-right: 75%;\n  }\n\n  .offset-lg-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-lg-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-lg-0,\n.gx-lg-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-lg-0,\n.gy-lg-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-lg-1,\n.gx-lg-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-lg-1,\n.gy-lg-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-lg-2,\n.gx-lg-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-lg-2,\n.gy-lg-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-lg-3,\n.gx-lg-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-lg-3,\n.gy-lg-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-lg-4,\n.gx-lg-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-lg-4,\n.gy-lg-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-lg-5,\n.gx-lg-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-lg-5,\n.gy-lg-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1200px) {\n  .col-xl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xl-0 {\n    margin-right: 0;\n  }\n\n  .offset-xl-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-xl-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-xl-3 {\n    margin-right: 25%;\n  }\n\n  .offset-xl-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-xl-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-xl-6 {\n    margin-right: 50%;\n  }\n\n  .offset-xl-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-xl-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-xl-9 {\n    margin-right: 75%;\n  }\n\n  .offset-xl-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-xl-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-xl-0,\n.gx-xl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xl-0,\n.gy-xl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xl-1,\n.gx-xl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xl-1,\n.gy-xl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xl-2,\n.gx-xl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xl-2,\n.gy-xl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xl-3,\n.gx-xl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xl-3,\n.gy-xl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xl-4,\n.gx-xl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xl-4,\n.gy-xl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xl-5,\n.gx-xl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xl-5,\n.gy-xl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1400px) {\n  .col-xxl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xxl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xxl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xxl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xxl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xxl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xxl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xxl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xxl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xxl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xxl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xxl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xxl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xxl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xxl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xxl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xxl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xxl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xxl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xxl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xxl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xxl-0 {\n    margin-right: 0;\n  }\n\n  .offset-xxl-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-xxl-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-xxl-3 {\n    margin-right: 25%;\n  }\n\n  .offset-xxl-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-xxl-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-xxl-6 {\n    margin-right: 50%;\n  }\n\n  .offset-xxl-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-xxl-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-xxl-9 {\n    margin-right: 75%;\n  }\n\n  .offset-xxl-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-xxl-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-xxl-0,\n.gx-xxl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xxl-0,\n.gy-xxl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xxl-1,\n.gx-xxl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xxl-1,\n.gy-xxl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xxl-2,\n.gx-xxl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xxl-2,\n.gy-xxl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xxl-3,\n.gx-xxl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xxl-3,\n.gy-xxl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xxl-4,\n.gx-xxl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xxl-4,\n.gy-xxl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xxl-5,\n.gx-xxl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xxl-5,\n.gy-xxl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-left: 0 !important;\n  margin-right: 0 !important;\n}\n\n.mx-1 {\n  margin-left: 0.25rem !important;\n  margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-left: 0.5rem !important;\n  margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-left: 1rem !important;\n  margin-right: 1rem !important;\n}\n\n.mx-4 {\n  margin-left: 1.5rem !important;\n  margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-left: 3rem !important;\n  margin-right: 3rem !important;\n}\n\n.mx-auto {\n  margin-left: auto !important;\n  margin-right: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-left: 0 !important;\n}\n\n.me-1 {\n  margin-left: 0.25rem !important;\n}\n\n.me-2 {\n  margin-left: 0.5rem !important;\n}\n\n.me-3 {\n  margin-left: 1rem !important;\n}\n\n.me-4 {\n  margin-left: 1.5rem !important;\n}\n\n.me-5 {\n  margin-left: 3rem !important;\n}\n\n.me-auto {\n  margin-left: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-right: 0 !important;\n}\n\n.ms-1 {\n  margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-right: 1rem !important;\n}\n\n.ms-4 {\n  margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-right: 3rem !important;\n}\n\n.ms-auto {\n  margin-right: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-left: 0 !important;\n  padding-right: 0 !important;\n}\n\n.px-1 {\n  padding-left: 0.25rem !important;\n  padding-right: 0.25rem !important;\n}\n\n.px-2 {\n  padding-left: 0.5rem !important;\n  padding-right: 0.5rem !important;\n}\n\n.px-3 {\n  padding-left: 1rem !important;\n  padding-right: 1rem !important;\n}\n\n.px-4 {\n  padding-left: 1.5rem !important;\n  padding-right: 1.5rem !important;\n}\n\n.px-5 {\n  padding-left: 3rem !important;\n  padding-right: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-left: 0 !important;\n}\n\n.pe-1 {\n  padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-left: 1rem !important;\n}\n\n.pe-4 {\n  padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-left: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-right: 0 !important;\n}\n\n.ps-1 {\n  padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-right: 1rem !important;\n}\n\n.ps-4 {\n  padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-right: 3rem !important;\n}\n\n@media (min-width: 576px) {\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-right: 3rem !important;\n  }\n}\n@media (min-width: 768px) {\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-right: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-right: 3rem !important;\n  }\n}\n@media (min-width: 992px) {\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-right: 3rem !important;\n  }\n}\n@media (min-width: 1200px) {\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-right: 3rem !important;\n  }\n}\n@media (min-width: 1400px) {\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-right: 3rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap-grid.rtl.css.map */","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  width: 100%;\n  padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  margin-right: auto;\n  margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n  $n: index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n  }\n  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n  $min: map-get($breakpoints, $name);\n  @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n  $max: map-get($breakpoints, $name);\n  @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n  @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n  .row {\n    @include make-row();\n\n    > * {\n      @include make-col-ready();\n    }\n  }\n}\n\n@if $enable-cssgrid {\n  .grid {\n    display: grid;\n    grid-template-rows: repeat(var(--#{$variable-prefix}rows, 1), 1fr);\n    grid-template-columns: repeat(var(--#{$variable-prefix}columns, #{$grid-columns}), 1fr);\n    gap: var(--#{$variable-prefix}gap, #{$grid-gutter-width});\n\n    @include make-cssgrid();\n  }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n  @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n  --#{$variable-prefix}gutter-x: #{$gutter};\n  --#{$variable-prefix}gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list\n  margin-right: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n  margin-left: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n  // Add box sizing if only the grid is loaded\n  box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-right: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  padding-left: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  margin-top: var(--#{$variable-prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: percentage(divide($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: divide($size, $columns);\n  margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: divide(100%, $count);\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is and invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n  $values: map-get($utility, values);\n\n  // If the values are a list or string, convert it into a map\n  @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n    $values: zip($values, $values);\n  }\n\n  @each $key, $value in $values {\n    $properties: map-get($utility, property);\n\n    // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n    @if type-of($properties) == \"string\" {\n      $properties: append((), $properties);\n    }\n\n    // Use custom class if present\n    $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n    $property-class: if($property-class == null, \"\", $property-class);\n\n    // State params to generate pseudo-classes\n    $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n    $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (eg. with shadow class)\n    $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n    @if map-get($utility, rfs) {\n      // Inside the media query\n      @if $is-rfs-media-query {\n        $val: rfs-value($value);\n\n        // Do not render anything if fluid and non fluid values are the same\n        $value: if($val == rfs-fluid-value($value), null, $val);\n      }\n      @else {\n        $value: rfs-fluid-value($value);\n      }\n    }\n\n    $is-css-var: map-get($utility, css-var);\n    $is-local-vars: map-get($utility, local-vars);\n    $is-rtl: map-get($utility, rtl);\n\n    @if $value != null {\n      @if $is-rtl == false {\n        /* rtl:begin:remove */\n      }\n\n      @if $is-css-var {\n        .#{$property-class + $infix + $property-class-modifier} {\n          --#{$variable-prefix}#{$property-class}: #{$value};\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            --#{$variable-prefix}#{$property-class}: #{$value};\n          }\n        }\n      } @else {\n        .#{$property-class + $infix + $property-class-modifier} {\n          @each $property in $properties {\n            @if $is-local-vars {\n              @each $local-var, $value in $is-local-vars {\n                --#{$variable-prefix}#{$local-var}: #{$value};\n              }\n            }\n            #{$property}: $value if($enable-important-utilities, !important, null);\n          }\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            @each $property in $properties {\n              #{$property}: $value if($enable-important-utilities, !important, null);\n            }\n          }\n        }\n      }\n\n      @if $is-rtl == false {\n        /* rtl:end:remove */\n      }\n    }\n  }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n  // Generate media query if needed\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    // Loop over each utility property\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Only proceed if responsive media queries are enabled or if it's the base media query\n      @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n        @include generate-utility($utility, $infix);\n      }\n    }\n  }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix, true);\n        }\n      }\n    }\n  }\n}\n\n\n// Print utilities\n@media print {\n  @each $key, $utility in $utilities {\n    // The utility can be disabled with `false`, thus check if the utility is a map first\n    // Then check if the utility needs print styles\n    @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n      @include generate-utility($utility, \"-print\");\n    }\n  }\n}\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css
new file mode 100644
index 0000000..c1bcf3b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css
@@ -0,0 +1,427 @@
+/*!
+ * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
+ */
+*,
+*::before,
+*::after {
+  box-sizing: border-box;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  :root {
+    scroll-behavior: smooth;
+  }
+}
+
+body {
+  margin: 0;
+  font-family: var(--bs-body-font-family);
+  font-size: var(--bs-body-font-size);
+  font-weight: var(--bs-body-font-weight);
+  line-height: var(--bs-body-line-height);
+  color: var(--bs-body-color);
+  text-align: var(--bs-body-text-align);
+  background-color: var(--bs-body-bg);
+  -webkit-text-size-adjust: 100%;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+hr {
+  margin: 1rem 0;
+  color: inherit;
+  background-color: currentColor;
+  border: 0;
+  opacity: 0.25;
+}
+
+hr:not([size]) {
+  height: 1px;
+}
+
+h6, h5, h4, h3, h2, h1 {
+  margin-top: 0;
+  margin-bottom: 0.5rem;
+  font-weight: 500;
+  line-height: 1.2;
+}
+
+h1 {
+  font-size: calc(1.375rem + 1.5vw);
+}
+@media (min-width: 1200px) {
+  h1 {
+    font-size: 2.5rem;
+  }
+}
+
+h2 {
+  font-size: calc(1.325rem + 0.9vw);
+}
+@media (min-width: 1200px) {
+  h2 {
+    font-size: 2rem;
+  }
+}
+
+h3 {
+  font-size: calc(1.3rem + 0.6vw);
+}
+@media (min-width: 1200px) {
+  h3 {
+    font-size: 1.75rem;
+  }
+}
+
+h4 {
+  font-size: calc(1.275rem + 0.3vw);
+}
+@media (min-width: 1200px) {
+  h4 {
+    font-size: 1.5rem;
+  }
+}
+
+h5 {
+  font-size: 1.25rem;
+}
+
+h6 {
+  font-size: 1rem;
+}
+
+p {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+abbr[title],
+abbr[data-bs-original-title] {
+  -webkit-text-decoration: underline dotted;
+  text-decoration: underline dotted;
+  cursor: help;
+  -webkit-text-decoration-skip-ink: none;
+  text-decoration-skip-ink: none;
+}
+
+address {
+  margin-bottom: 1rem;
+  font-style: normal;
+  line-height: inherit;
+}
+
+ol,
+ul {
+  padding-left: 2rem;
+}
+
+ol,
+ul,
+dl {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+  margin-bottom: 0;
+}
+
+dt {
+  font-weight: 700;
+}
+
+dd {
+  margin-bottom: 0.5rem;
+  margin-left: 0;
+}
+
+blockquote {
+  margin: 0 0 1rem;
+}
+
+b,
+strong {
+  font-weight: bolder;
+}
+
+small {
+  font-size: 0.875em;
+}
+
+mark {
+  padding: 0.2em;
+  background-color: #fcf8e3;
+}
+
+sub,
+sup {
+  position: relative;
+  font-size: 0.75em;
+  line-height: 0;
+  vertical-align: baseline;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+sup {
+  top: -0.5em;
+}
+
+a {
+  color: #0d6efd;
+  text-decoration: underline;
+}
+a:hover {
+  color: #0a58ca;
+}
+
+a:not([href]):not([class]), a:not([href]):not([class]):hover {
+  color: inherit;
+  text-decoration: none;
+}
+
+pre,
+code,
+kbd,
+samp {
+  font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+  font-size: 1em;
+  direction: ltr /* rtl:ignore */;
+  unicode-bidi: bidi-override;
+}
+
+pre {
+  display: block;
+  margin-top: 0;
+  margin-bottom: 1rem;
+  overflow: auto;
+  font-size: 0.875em;
+}
+pre code {
+  font-size: inherit;
+  color: inherit;
+  word-break: normal;
+}
+
+code {
+  font-size: 0.875em;
+  color: #d63384;
+  word-wrap: break-word;
+}
+a > code {
+  color: inherit;
+}
+
+kbd {
+  padding: 0.2rem 0.4rem;
+  font-size: 0.875em;
+  color: #fff;
+  background-color: #212529;
+  border-radius: 0.2rem;
+}
+kbd kbd {
+  padding: 0;
+  font-size: 1em;
+  font-weight: 700;
+}
+
+figure {
+  margin: 0 0 1rem;
+}
+
+img,
+svg {
+  vertical-align: middle;
+}
+
+table {
+  caption-side: bottom;
+  border-collapse: collapse;
+}
+
+caption {
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  color: #6c757d;
+  text-align: left;
+}
+
+th {
+  text-align: inherit;
+  text-align: -webkit-match-parent;
+}
+
+thead,
+tbody,
+tfoot,
+tr,
+td,
+th {
+  border-color: inherit;
+  border-style: solid;
+  border-width: 0;
+}
+
+label {
+  display: inline-block;
+}
+
+button {
+  border-radius: 0;
+}
+
+button:focus:not(:focus-visible) {
+  outline: 0;
+}
+
+input,
+button,
+select,
+optgroup,
+textarea {
+  margin: 0;
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+
+button,
+select {
+  text-transform: none;
+}
+
+[role=button] {
+  cursor: pointer;
+}
+
+select {
+  word-wrap: normal;
+}
+select:disabled {
+  opacity: 1;
+}
+
+[list]::-webkit-calendar-picker-indicator {
+  display: none;
+}
+
+button,
+[type=button],
+[type=reset],
+[type=submit] {
+  -webkit-appearance: button;
+}
+button:not(:disabled),
+[type=button]:not(:disabled),
+[type=reset]:not(:disabled),
+[type=submit]:not(:disabled) {
+  cursor: pointer;
+}
+
+::-moz-focus-inner {
+  padding: 0;
+  border-style: none;
+}
+
+textarea {
+  resize: vertical;
+}
+
+fieldset {
+  min-width: 0;
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+
+legend {
+  float: left;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 0.5rem;
+  font-size: calc(1.275rem + 0.3vw);
+  line-height: inherit;
+}
+@media (min-width: 1200px) {
+  legend {
+    font-size: 1.5rem;
+  }
+}
+legend + * {
+  clear: left;
+}
+
+::-webkit-datetime-edit-fields-wrapper,
+::-webkit-datetime-edit-text,
+::-webkit-datetime-edit-minute,
+::-webkit-datetime-edit-hour-field,
+::-webkit-datetime-edit-day-field,
+::-webkit-datetime-edit-month-field,
+::-webkit-datetime-edit-year-field {
+  padding: 0;
+}
+
+::-webkit-inner-spin-button {
+  height: auto;
+}
+
+[type=search] {
+  outline-offset: -2px;
+  -webkit-appearance: textfield;
+}
+
+/* rtl:raw:
+[type="tel"],
+[type="url"],
+[type="email"],
+[type="number"] {
+  direction: ltr;
+}
+*/
+::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+::-webkit-color-swatch-wrapper {
+  padding: 0;
+}
+
+::file-selector-button {
+  font: inherit;
+}
+
+::-webkit-file-upload-button {
+  font: inherit;
+  -webkit-appearance: button;
+}
+
+output {
+  display: inline-block;
+}
+
+iframe {
+  border: 0;
+}
+
+summary {
+  display: list-item;
+  cursor: pointer;
+}
+
+progress {
+  vertical-align: baseline;
+}
+
+[hidden] {
+  display: none !important;
+}
+
+/*# sourceMappingURL=bootstrap-reboot.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map
new file mode 100644
index 0000000..c06c13a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap-reboot.scss","../../scss/_reboot.scss","bootstrap-reboot.css","../../scss/vendor/_rfs.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"AAAA;;;;;;EAAA;ACeA;;;EAGE,sBAAA;ACPF;;ADsBI;EANJ;IAOM,uBAAA;EClBJ;AACF;;AD+BA;EACE,SAAA;EACA,uCAAA;EEmPI,mCALI;EF5OR,uCAAA;EACA,uCAAA;EACA,2BAAA;EACA,qCAAA;EACA,mCAAA;EACA,8BAAA;EACA,6CAAA;AC5BF;;ADsCA;EACE,cAAA;EACA,cGqkB4B;EHpkB5B,8BAAA;EACA,SAAA;EACA,aGokB4B;AFvmB9B;;ADsCA;EACE,WG8a4B;AFjd9B;;AD6CA;EACE,aAAA;EACA,qBG0gB4B;EHvgB5B,gBG0gB4B;EHzgB5B,gBG0gB4B;AFtjB9B;;ADgDA;EEwMQ,iCAAA;ADpPR;ACkFI;EFtCJ;IE+MQ,iBAAA;EDvPN;AACF;;AD4CA;EEmMQ,iCAAA;AD3OR;ACyEI;EFjCJ;IE0MQ,eAAA;ED9ON;AACF;;ADwCA;EE8LQ,+BAAA;ADlOR;ACgEI;EF5BJ;IEqMQ,kBAAA;EDrON;AACF;;ADoCA;EEyLQ,iCAAA;ADzNR;ACuDI;EFvBJ;IEgMQ,iBAAA;ED5NN;AACF;;ADgCA;EEgLM,kBALI;ADvMV;;ADiCA;EE2KM,eALI;ADnMV;;ADwCA;EACE,aAAA;EACA,mBGwT0B;AF7V5B;;ADgDA;;EAEE,yCAAA;EAAA,iCAAA;EACA,YAAA;EACA,sCAAA;EAAA,8BAAA;AC7CF;;ADmDA;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;AChDF;;ADsDA;;EAEE,kBAAA;ACnDF;;ADsDA;;;EAGE,aAAA;EACA,mBAAA;ACnDF;;ADsDA;;;;EAIE,gBAAA;ACnDF;;ADsDA;EACE,gBG6Y4B;AFhc9B;;ADwDA;EACE,qBAAA;EACA,cAAA;ACrDF;;AD2DA;EACE,gBAAA;ACxDF;;ADgEA;;EAEE,mBGsX4B;AFnb9B;;ADqEA;EE4EM,kBALI;ADxIV;;ADwEA;EACE,cGkb4B;EHjb5B,yBGyb4B;AF9f9B;;AD8EA;;EAEE,kBAAA;EEwDI,iBALI;EFjDR,cAAA;EACA,wBAAA;AC3EF;;AD8EA;EAAM,eAAA;AC1EN;;AD2EA;EAAM,WAAA;ACvEN;;AD4EA;EACE,cGpNQ;EHqNR,0BGwLwC;AFjQ1C;AD2EE;EACE,cGuLsC;AFhQ1C;;ADoFE;EAEE,cAAA;EACA,qBAAA;AClFJ;;ADyFA;;;;EAIE,iGGgS4B;EDlRxB,cALI;EFPR,+BAAA;EACA,2BAAA;ACtFF;;AD6FA;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;EEAI,kBALI;ADpFV;AD8FE;EELI,kBALI;EFYN,cAAA;EACA,kBAAA;AC5FJ;;ADgGA;EEZM,kBALI;EFmBR,cG1QQ;EH2QR,qBAAA;AC7FF;ADgGE;EACE,cAAA;AC9FJ;;ADkGA;EACE,sBAAA;EExBI,kBALI;EF+BR,WGvTS;EHwTT,yBG/SS;ECEP,qBAAA;AH+MJ;ADiGE;EACE,UAAA;EE/BE,cALI;EFsCN,gBGgQ0B;AF/V9B;;ADwGA;EACE,gBAAA;ACrGF;;AD2GA;;EAEE,sBAAA;ACxGF;;ADgHA;EACE,oBAAA;EACA,yBAAA;AC7GF;;ADgHA;EACE,mBG8T4B;EH7T5B,sBG6T4B;EH5T5B,cG1VS;EH2VT,gBAAA;AC7GF;;ADoHA;EAEE,mBAAA;EACA,gCAAA;AClHF;;ADqHA;;;;;;EAME,qBAAA;EACA,mBAAA;EACA,eAAA;AClHF;;AD0HA;EACE,qBAAA;ACvHF;;AD6HA;EAEE,gBAAA;AC3HF;;ADmIA;EACE,UAAA;AChIF;;ADqIA;;;;;EAKE,SAAA;EACA,oBAAA;EE9HI,kBALI;EFqIR,oBAAA;AClIF;;ADsIA;;EAEE,oBAAA;ACnIF;;ADwIA;EACE,eAAA;ACrIF;;ADwIA;EAGE,iBAAA;ACvIF;AD0IE;EACE,UAAA;ACxIJ;;AD+IA;EACE,aAAA;AC5IF;;ADoJA;;;;EAIE,0BAAA;ACjJF;ADoJI;;;;EACE,eAAA;AC/IN;;ADsJA;EACE,UAAA;EACA,kBAAA;ACnJF;;ADwJA;EACE,gBAAA;ACrJF;;AD+JA;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;AC5JF;;ADoKA;EACE,WAAA;EACA,WAAA;EACA,UAAA;EACA,qBGmJ4B;EDtWtB,iCAAA;EFsNN,oBAAA;AClKF;ACtNI;EFiXJ;IExMQ,iBAAA;EDiDN;AACF;AD+JE;EACE,WAAA;AC7JJ;;ADoKA;;;;;;;EAOE,UAAA;ACjKF;;ADoKA;EACE,YAAA;ACjKF;;AD0KA;EACE,oBAAA;EACA,6BAAA;ACvKF;;AD+KA;;;;;;;CAAA;AAWA;EACE,wBAAA;AC/KF;;ADoLA;EACE,UAAA;ACjLF;;ADuLA;EACE,aAAA;ACpLF;;AD0LA;EACE,aAAA;EACA,0BAAA;ACvLF;;AD4LA;EACE,qBAAA;ACzLF;;AD8LA;EACE,SAAA;AC3LF;;ADkMA;EACE,kBAAA;EACA,eAAA;AC/LF;;ADuMA;EACE,wBAAA;ACpMF;;AD4MA;EACE,wBAAA;ACzMF","file":"bootstrap-reboot.css","sourcesContent":["/*!\n * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n\n@import \"functions\";\n@import \"variables\";\n// Prevent the usage of custom properties since we don't add them to `:root` in reboot\n$font-family-base: $font-family-sans-serif; // stylelint-disable-line scss/dollar-variable-default\n$font-family-code: $font-family-monospace; // stylelint-disable-line scss/dollar-variable-default\n@import \"mixins\";\n@import \"reboot\";\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n  @if $font-size-root != null {\n    font-size: var(--#{$variable-prefix}-root-font-size);\n  }\n\n  @if $enable-smooth-scroll {\n    @media (prefers-reduced-motion: no-preference) {\n      scroll-behavior: smooth;\n    }\n  }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n  margin: 0; // 1\n  font-family: var(--#{$variable-prefix}body-font-family);\n  @include font-size(var(--#{$variable-prefix}body-font-size));\n  font-weight: var(--#{$variable-prefix}body-font-weight);\n  line-height: var(--#{$variable-prefix}body-line-height);\n  color: var(--#{$variable-prefix}body-color);\n  text-align: var(--#{$variable-prefix}body-text-align);\n  background-color: var(--#{$variable-prefix}body-bg); // 2\n  -webkit-text-size-adjust: 100%; // 3\n  -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n  margin: $hr-margin-y 0;\n  color: $hr-color; // 1\n  background-color: currentColor;\n  border: 0;\n  opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n  height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n//    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n//    margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n  margin-top: 0; // 1\n  margin-bottom: $headings-margin-bottom;\n  font-family: $headings-font-family;\n  font-style: $headings-font-style;\n  font-weight: $headings-font-weight;\n  line-height: $headings-line-height;\n  color: $headings-color;\n}\n\nh1 {\n  @extend %heading;\n  @include font-size($h1-font-size);\n}\n\nh2 {\n  @extend %heading;\n  @include font-size($h2-font-size);\n}\n\nh3 {\n  @extend %heading;\n  @include font-size($h3-font-size);\n}\n\nh4 {\n  @extend %heading;\n  @include font-size($h4-font-size);\n}\n\nh5 {\n  @extend %heading;\n  @include font-size($h5-font-size);\n}\n\nh6 {\n  @extend %heading;\n  @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n  margin-top: 0;\n  margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n  text-decoration: underline dotted; // 2\n  cursor: help; // 3\n  text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n  font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n  @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n  padding: $mark-padding;\n  background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n  position: relative;\n  @include font-size($sub-sup-font-size);\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n  color: $link-color;\n  text-decoration: $link-decoration;\n\n  &:hover {\n    color: $link-hover-color;\n    text-decoration: $link-hover-decoration;\n  }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n  &,\n  &:hover {\n    color: inherit;\n    text-decoration: none;\n  }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: $font-family-code;\n  @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n  direction: ltr #{\"/* rtl:ignore */\"};\n  unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n  display: block;\n  margin-top: 0; // 1\n  margin-bottom: 1rem; // 2\n  overflow: auto; // 3\n  @include font-size($code-font-size);\n  color: $pre-color;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    @include font-size(inherit);\n    color: inherit;\n    word-break: normal;\n  }\n}\n\ncode {\n  @include font-size($code-font-size);\n  color: $code-color;\n  word-wrap: break-word;\n\n  // Streamline the style when inside anchors to avoid broken underline and more\n  a > & {\n    color: inherit;\n  }\n}\n\nkbd {\n  padding: $kbd-padding-y $kbd-padding-x;\n  @include font-size($kbd-font-size);\n  color: $kbd-color;\n  background-color: $kbd-bg;\n  @include border-radius($border-radius-sm);\n\n  kbd {\n    padding: 0;\n    @include font-size(1em);\n    font-weight: $nested-kbd-font-weight;\n  }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n  margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: $table-cell-padding-y;\n  padding-bottom: $table-cell-padding-y;\n  color: $table-caption-color;\n  text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `<td>` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n  font-weight: $table-th-font-weight; // 1\n  text-align: inherit; // 2\n  text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n  display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0; // 1\n  font-family: inherit;\n  @include font-size(inherit);\n  line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n  text-transform: none;\n}\n// Set the cursor for non-`<button>` buttons\n//\n// Details at https://github.com/twbs/bootstrap/pull/30562\n[role=\"button\"] {\n  cursor: pointer;\n}\n\nselect {\n  // Remove the inheritance of word-wrap in Safari.\n  // See https://github.com/twbs/bootstrap/issues/24990\n  word-wrap: normal;\n\n  // Undo the opacity change from Chrome\n  &:disabled {\n    opacity: 1;\n  }\n}\n\n// Remove the dropdown arrow in Chrome from inputs built with datalists.\n// See https://stackoverflow.com/a/54997118\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n//    controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\n// 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n\n  @if $enable-button-pointers {\n    &:not(:disabled) {\n      cursor: pointer; // 3\n    }\n  }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\n// 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\ntextarea {\n  resize: vertical; // 1\n}\n\n// 1. Browsers set a default `min-width: min-content;` on fieldsets,\n//    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n//    So we reset that to ensure fieldsets behave more like a standard block element.\n//    See https://github.com/twbs/bootstrap/issues/12359\n//    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n// 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\nfieldset {\n  min-width: 0; // 1\n  padding: 0; // 2\n  margin: 0; // 2\n  border: 0; // 2\n}\n\n// 1. By using `float: left`, the legend will behave like a block element.\n//    This way the border of a fieldset wraps around the legend if present.\n// 2. Fix wrapping bug.\n//    See https://github.com/twbs/bootstrap/issues/29712\n\nlegend {\n  float: left; // 1\n  width: 100%;\n  padding: 0;\n  margin-bottom: $legend-margin-bottom;\n  @include font-size($legend-font-size);\n  font-weight: $legend-font-weight;\n  line-height: inherit;\n\n  + * {\n    clear: left; // 2\n  }\n}\n\n// Fix height of inputs with a type of datetime-local, date, month, week, or time\n// See https://github.com/twbs/bootstrap/issues/18842\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n// 1. Correct the outline style in Safari.\n// 2. This overrides the extra rounded corners on search inputs in iOS so that our\n//    `.form-control` class can properly style them. Note that this cannot simply\n//    be added to `.form-control` as it's not specific enough. For details, see\n//    https://github.com/twbs/bootstrap/issues/11586.\n\n[type=\"search\"] {\n  outline-offset: -2px; // 1\n  -webkit-appearance: textfield; // 2\n}\n\n// 1. A few input types should stay LTR\n// See https://rtlstyling.com/posts/rtl-styling#form-inputs\n// 2. RTL only output\n// See https://rtlcss.com/learn/usage-guide/control-directives/#raw\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n\n// Remove the inner padding in Chrome and Safari on macOS.\n\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n// Remove padding around color pickers in webkit browsers\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n\n// Inherit font family and line height for file input buttons\n\n::file-selector-button {\n  font: inherit;\n}\n\n// 1. Change font properties to `inherit`\n// 2. Correct the inability to style clickable types in iOS and Safari.\n\n::-webkit-file-upload-button {\n  font: inherit; // 1\n  -webkit-appearance: button; // 2\n}\n\n// Correct element displays\n\noutput {\n  display: inline-block;\n}\n\n// Remove border from iframe\n\niframe {\n  border: 0;\n}\n\n// Summary\n//\n// 1. Add the correct display in all browsers\n\nsummary {\n  display: list-item; // 1\n  cursor: pointer;\n}\n\n\n// Progress\n//\n// Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\nprogress {\n  vertical-align: baseline;\n}\n\n\n// Hidden attribute\n//\n// Always hide an element with the `hidden` HTML attribute.\n\n[hidden] {\n  display: none !important;\n}\n","/*!\n * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  :root {\n    scroll-behavior: smooth;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: var(--bs-body-font-family);\n  font-size: var(--bs-body-font-size);\n  font-weight: var(--bs-body-font-weight);\n  line-height: var(--bs-body-line-height);\n  color: var(--bs-body-color);\n  text-align: var(--bs-body-text-align);\n  background-color: var(--bs-body-bg);\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n  margin: 1rem 0;\n  color: inherit;\n  background-color: currentColor;\n  border: 0;\n  opacity: 0.25;\n}\n\nhr:not([size]) {\n  height: 1px;\n}\n\nh6, h5, h4, h3, h2, h1 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\nh1 {\n  font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n  h1 {\n    font-size: 2.5rem;\n  }\n}\n\nh2 {\n  font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n  h2 {\n    font-size: 2rem;\n  }\n}\n\nh3 {\n  font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n  h3 {\n    font-size: 1.75rem;\n  }\n}\n\nh4 {\n  font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n  h4 {\n    font-size: 1.5rem;\n  }\n}\n\nh5 {\n  font-size: 1.25rem;\n}\n\nh6 {\n  font-size: 1rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-bs-original-title] {\n  text-decoration: underline dotted;\n  cursor: help;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: 0.5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall {\n  font-size: 0.875em;\n}\n\nmark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 0.75em;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\na {\n  color: #0d6efd;\n  text-decoration: underline;\n}\na:hover {\n  color: #0a58ca;\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n  color: inherit;\n  text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  font-size: 1em;\n  direction: ltr /* rtl:ignore */;\n  unicode-bidi: bidi-override;\n}\n\npre {\n  display: block;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  font-size: 0.875em;\n}\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\ncode {\n  font-size: 0.875em;\n  color: #d63384;\n  word-wrap: break-word;\n}\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 0.875em;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\nkbd kbd {\n  padding: 0;\n  font-size: 1em;\n  font-weight: 700;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  color: #6c757d;\n  text-align: left;\n}\n\nth {\n  text-align: inherit;\n  text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\nlabel {\n  display: inline-block;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n[role=button] {\n  cursor: pointer;\n}\n\nselect {\n  word-wrap: normal;\n}\nselect:disabled {\n  opacity: 1;\n}\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n  -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n  cursor: pointer;\n}\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ntextarea {\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  float: left;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 0.5rem;\n  font-size: calc(1.275rem + 0.3vw);\n  line-height: inherit;\n}\n@media (min-width: 1200px) {\n  legend {\n    font-size: 1.5rem;\n  }\n}\nlegend + * {\n  clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n[type=search] {\n  outline-offset: -2px;\n  -webkit-appearance: textfield;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n::file-selector-button {\n  font: inherit;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\niframe {\n  border: 0;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[hidden] {\n  display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */\n","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n  @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n  @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n  @error \"`#{$rfs-factor}` is not a valid  $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n  $dividend: abs($dividend);\n  $divisor: abs($divisor);\n  @if $dividend == 0 {\n    @return 0;\n  }\n  @if $divisor == 0 {\n    @error \"Cannot divide by 0\";\n  }\n  $remainder: $dividend;\n  $result: 0;\n  $factor: 10;\n  @while ($remainder > 0 and $precision >= 0) {\n    $quotient: 0;\n    @while ($remainder >= $divisor) {\n      $remainder: $remainder - $divisor;\n      $quotient: $quotient + 1;\n    }\n    $result: $result * 10 + $quotient;\n    $factor: $factor * .1;\n    $remainder: $remainder * 10;\n    $precision: $precision - 1;\n    @if ($precision < 0 and $remainder >= $divisor * 5) {\n      $result: $result + 1;\n    }\n  }\n  $result: $result * $factor * $sign;\n  $dividend-unit: unit($dividend);\n  $divisor-unit: unit($divisor);\n  $unit-map: (\n    \"px\": 1px,\n    \"rem\": 1rem,\n    \"em\": 1em,\n    \"%\": 1%\n  );\n  @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n    $result: $result * map-get($unit-map, $dividend-unit);\n  }\n  @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n  $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n  $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n  $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n  $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n  @if $rfs-two-dimensional {\n    @if $rfs-mode == max-media-query {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n    @else {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n  }\n  @else {\n    @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n      @content;\n    }\n  }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n  @if $rfs-class == disable and $rfs-mode == max-media-query {\n    // Adding an extra class increases specificity, which prevents the media query to override the property\n    &,\n    .disable-rfs &,\n    &.disable-rfs {\n      @content;\n    }\n  }\n  @else if $rfs-class == enable and $rfs-mode == min-media-query {\n    .enable-rfs &,\n    &.enable-rfs {\n      @content;\n    }\n  }\n  @else {\n    @content;\n  }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n  @if $rfs-class == enable {\n    @if $rfs-mode == min-media-query {\n      @content;\n    }\n\n    @include _rfs-media-query {\n      .enable-rfs &,\n      &.enable-rfs {\n        @content;\n      }\n    }\n  }\n  @else {\n    @if $rfs-class == disable and $rfs-mode == min-media-query {\n      .disable-rfs &,\n      &.disable-rfs {\n        @content;\n      }\n    }\n    @include _rfs-media-query {\n      @content;\n    }\n  }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      @if $unit == px {\n        // Convert to rem if needed\n        $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n      }\n      @else if $unit == rem {\n        // Convert to px if needed\n        $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n      }\n      @else {\n        // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n        $val: $val + ' ' + $value;\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n      @if not $unit or $unit != px and $unit != rem {\n        $val: $val + ' ' + $value;\n      }\n\n      @else {\n        // Remove unit from $value for calculations\n        $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n        // Only add the media query if the value is greater than the minimum value\n        @if abs($value) <= $rfs-base-value or not $enable-rfs {\n          $val: $val + ' ' +  if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n        }\n        @else {\n          // Calculate the minimum value\n          $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n          // Calculate difference between $value and the minimum value\n          $value-diff: abs($value) - $value-min;\n\n          // Base value formatting\n          $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n          // Use negative value if needed\n          $min-width: if($value < 0, -$min-width, $min-width);\n\n          // Use `vmin` if two-dimensional is enabled\n          $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n          // Calculate the variable width between 0 and $rfs-breakpoint\n          $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n          // Return the calculated value\n          $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n        }\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n  @if $values != null {\n    $val: rfs-value($values);\n    $fluidVal: rfs-fluid-value($values);\n\n    // Do not print the media query if responsive & non-responsive values are the same\n    @if $val == $fluidVal {\n      #{$property}: $val;\n    }\n    @else {\n      @include _rfs-rule {\n        #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n        // Include safari iframe resize fix if needed\n        min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n      }\n\n      @include _rfs-media-query-rule {\n        #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n      }\n    }\n  }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n  @include rfs($value);\n}\n\n@mixin padding($value) {\n  @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n  @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n  @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n  @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n  @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n  @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n  @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n  @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n  @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n  @include rfs($value, margin-left);\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white:    #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black:    #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n  \"100\": $gray-100,\n  \"200\": $gray-200,\n  \"300\": $gray-300,\n  \"400\": $gray-400,\n  \"500\": $gray-500,\n  \"600\": $gray-600,\n  \"700\": $gray-700,\n  \"800\": $gray-800,\n  \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue:    #0d6efd !default;\n$indigo:  #6610f2 !default;\n$purple:  #6f42c1 !default;\n$pink:    #d63384 !default;\n$red:     #dc3545 !default;\n$orange:  #fd7e14 !default;\n$yellow:  #ffc107 !default;\n$green:   #198754 !default;\n$teal:    #20c997 !default;\n$cyan:    #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n  \"blue\":       $blue,\n  \"indigo\":     $indigo,\n  \"purple\":     $purple,\n  \"pink\":       $pink,\n  \"red\":        $red,\n  \"orange\":     $orange,\n  \"yellow\":     $yellow,\n  \"green\":      $green,\n  \"teal\":       $teal,\n  \"cyan\":       $cyan,\n  \"white\":      $white,\n  \"gray\":       $gray-600,\n  \"gray-dark\":  $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// scss-docs-start theme-color-variables\n$primary:       $blue !default;\n$secondary:     $gray-600 !default;\n$success:       $green !default;\n$info:          $cyan !default;\n$warning:       $yellow !default;\n$danger:        $red !default;\n$light:         $gray-100 !default;\n$dark:          $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n  \"primary\":    $primary,\n  \"secondary\":  $secondary,\n  \"success\":    $success,\n  \"info\":       $info,\n  \"warning\":    $warning,\n  \"danger\":     $danger,\n  \"light\":      $light,\n  \"dark\":       $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-colors-rgb\n$theme-colors-rgb: map-loop($theme-colors, to-rgb, \"$value\") !default;\n// scss-docs-end theme-colors-rgb\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio:   4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark:      $black !default;\n$color-contrast-light:     $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n  \"blue-100\": $blue-100,\n  \"blue-200\": $blue-200,\n  \"blue-300\": $blue-300,\n  \"blue-400\": $blue-400,\n  \"blue-500\": $blue-500,\n  \"blue-600\": $blue-600,\n  \"blue-700\": $blue-700,\n  \"blue-800\": $blue-800,\n  \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n  \"indigo-100\": $indigo-100,\n  \"indigo-200\": $indigo-200,\n  \"indigo-300\": $indigo-300,\n  \"indigo-400\": $indigo-400,\n  \"indigo-500\": $indigo-500,\n  \"indigo-600\": $indigo-600,\n  \"indigo-700\": $indigo-700,\n  \"indigo-800\": $indigo-800,\n  \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n  \"purple-100\": $purple-200,\n  \"purple-200\": $purple-100,\n  \"purple-300\": $purple-300,\n  \"purple-400\": $purple-400,\n  \"purple-500\": $purple-500,\n  \"purple-600\": $purple-600,\n  \"purple-700\": $purple-700,\n  \"purple-800\": $purple-800,\n  \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n  \"pink-100\": $pink-100,\n  \"pink-200\": $pink-200,\n  \"pink-300\": $pink-300,\n  \"pink-400\": $pink-400,\n  \"pink-500\": $pink-500,\n  \"pink-600\": $pink-600,\n  \"pink-700\": $pink-700,\n  \"pink-800\": $pink-800,\n  \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n  \"red-100\": $red-100,\n  \"red-200\": $red-200,\n  \"red-300\": $red-300,\n  \"red-400\": $red-400,\n  \"red-500\": $red-500,\n  \"red-600\": $red-600,\n  \"red-700\": $red-700,\n  \"red-800\": $red-800,\n  \"red-900\": $red-900\n) !default;\n\n$oranges: (\n  \"orange-100\": $orange-100,\n  \"orange-200\": $orange-200,\n  \"orange-300\": $orange-300,\n  \"orange-400\": $orange-400,\n  \"orange-500\": $orange-500,\n  \"orange-600\": $orange-600,\n  \"orange-700\": $orange-700,\n  \"orange-800\": $orange-800,\n  \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n  \"yellow-100\": $yellow-100,\n  \"yellow-200\": $yellow-200,\n  \"yellow-300\": $yellow-300,\n  \"yellow-400\": $yellow-400,\n  \"yellow-500\": $yellow-500,\n  \"yellow-600\": $yellow-600,\n  \"yellow-700\": $yellow-700,\n  \"yellow-800\": $yellow-800,\n  \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n  \"green-100\": $green-100,\n  \"green-200\": $green-200,\n  \"green-300\": $green-300,\n  \"green-400\": $green-400,\n  \"green-500\": $green-500,\n  \"green-600\": $green-600,\n  \"green-700\": $green-700,\n  \"green-800\": $green-800,\n  \"green-900\": $green-900\n) !default;\n\n$teals: (\n  \"teal-100\": $teal-100,\n  \"teal-200\": $teal-200,\n  \"teal-300\": $teal-300,\n  \"teal-400\": $teal-400,\n  \"teal-500\": $teal-500,\n  \"teal-600\": $teal-600,\n  \"teal-700\": $teal-700,\n  \"teal-800\": $teal-800,\n  \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n  \"cyan-100\": $cyan-100,\n  \"cyan-200\": $cyan-200,\n  \"cyan-300\": $cyan-300,\n  \"cyan-400\": $cyan-400,\n  \"cyan-500\": $cyan-500,\n  \"cyan-600\": $cyan-600,\n  \"cyan-700\": $cyan-700,\n  \"cyan-800\": $cyan-800,\n  \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              false !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-cssgrid:              false !default;\n$enable-button-pointers:      true !default;\n$enable-rfs:                  true !default;\n$enable-validation-icons:     true !default;\n$enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities:  true !default;\n\n// Prefix for :root CSS variables\n\n$variable-prefix:             bs- !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg:                   $white !default;\n$body-color:                $gray-900 !default;\n$body-text-align:           null !default;\n\n// Utilities maps\n//\n// Extends the default `$theme-colors` maps to help create our utilities.\n\n// scss-docs-start utilities-colors\n$utilities-colors: map-merge(\n  $theme-colors-rgb,\n  (\n    \"black\": to-rgb($black),\n    \"white\": to-rgb($white),\n    \"body\":  to-rgb($body-color)\n  )\n) !default;\n// scss-docs-end utilities-colors\n\n// scss-docs-start utilities-text-colors\n$utilities-text-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"text\") !default;\n// scss-docs-end utilities-text-colors\n\n// scss-docs-start utilities-bg-colors\n$utilities-bg-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"bg\") !default;\n// scss-docs-end utilities-bg-colors\n\n// Links\n//\n// Style anchor elements.\n\n$link-color:                              $primary !default;\n$link-decoration:                         underline !default;\n$link-shade-percentage:                   20% !default;\n$link-hover-color:                        shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration:                   null !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 992px,\n  xl: 1200px,\n  xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1140px,\n  xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns:                12 !default;\n$grid-gutter-width:           1.5rem !default;\n$grid-row-columns:            6 !default;\n\n$gutters: $spacers !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width * .5 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n\n$border-color:                $gray-300 !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius:               .25rem !default;\n$border-radius-sm:            .2rem !default;\n$border-radius-lg:            .3rem !default;\n$border-radius-pill:          50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow:                  0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm:               0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg:               0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset:            inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color:      $white !default;\n$component-active-bg:         $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width:                 .3em !default;\n$caret-vertical-align:        $caret-width * .85 !default;\n$caret-spacing:               $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"1x1\": 100%,\n  \"4x3\": calc(3 / 4 * 100%),\n  \"16x9\": calc(9 / 16 * 100%),\n  \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif:      system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base:            var(--#{$variable-prefix}font-sans-serif) !default;\n$font-family-code:            var(--#{$variable-prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root:              null !default;\n$font-size-base:              1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm:                $font-size-base * .875 !default;\n$font-size-lg:                $font-size-base * 1.25 !default;\n\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n\n$h1-font-size:                $font-size-base * 2.5 !default;\n$h2-font-size:                $font-size-base * 2 !default;\n$h3-font-size:                $font-size-base * 1.75 !default;\n$h4-font-size:                $font-size-base * 1.5 !default;\n$h5-font-size:                $font-size-base * 1.25 !default;\n$h6-font-size:                $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n  1: $h1-font-size,\n  2: $h2-font-size,\n  3: $h3-font-size,\n  4: $h4-font-size,\n  5: $h5-font-size,\n  6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n  1: 5rem,\n  2: 4.5rem,\n  3: 4rem,\n  4: 3.5rem,\n  5: 3rem,\n  6: 2.5rem\n) !default;\n\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size:              $font-size-base * 1.25 !default;\n$lead-font-weight:            300 !default;\n\n$small-font-size:             .875em !default;\n\n$sub-sup-font-size:           .75em !default;\n\n$text-muted:                  $gray-600 !default;\n\n$initialism-font-size:        $small-font-size !default;\n\n$blockquote-margin-y:         $spacer !default;\n$blockquote-font-size:        $font-size-base * 1.25 !default;\n$blockquote-footer-color:     $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y:                 $spacer !default;\n$hr-color:                    inherit !default;\n$hr-height:                   $border-width !default;\n$hr-opacity:                  .25 !default;\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$mark-padding:                .2em !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n$nested-kbd-font-weight:      $font-weight-bold !default;\n\n$list-inline-padding:         .5rem !default;\n\n$mark-bg:                     #fcf8e3 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y:        .5rem !default;\n$table-cell-padding-x:        .5rem !default;\n$table-cell-padding-y-sm:     .25rem !default;\n$table-cell-padding-x-sm:     .25rem !default;\n\n$table-cell-vertical-align:   top !default;\n\n$table-color:                 $body-color !default;\n$table-bg:                    transparent !default;\n$table-accent-bg:             transparent !default;\n\n$table-th-font-weight:        null !default;\n\n$table-striped-color:         $table-color !default;\n$table-striped-bg-factor:     .05 !default;\n$table-striped-bg:            rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color:          $table-color !default;\n$table-active-bg-factor:      .1 !default;\n$table-active-bg:             rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color:           $table-color !default;\n$table-hover-bg-factor:       .075 !default;\n$table-hover-bg:              rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor:         .1 !default;\n$table-border-width:          $border-width !default;\n$table-border-color:          $border-color !default;\n\n$table-striped-order:         odd !default;\n\n$table-group-separator-color: currentColor !default;\n\n$table-caption-color:         $text-muted !default;\n\n$table-bg-scale:              -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n  \"primary\":    shift-color($primary, $table-bg-scale),\n  \"secondary\":  shift-color($secondary, $table-bg-scale),\n  \"success\":    shift-color($success, $table-bg-scale),\n  \"info\":       shift-color($info, $table-bg-scale),\n  \"warning\":    shift-color($warning, $table-bg-scale),\n  \"danger\":     shift-color($danger, $table-bg-scale),\n  \"light\":      $light,\n  \"dark\":       $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y:         .375rem !default;\n$input-btn-padding-x:         .75rem !default;\n$input-btn-font-family:       null !default;\n$input-btn-font-size:         $font-size-base !default;\n$input-btn-line-height:       $line-height-base !default;\n\n$input-btn-focus-width:         .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color:         rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur:          0 !default;\n$input-btn-focus-box-shadow:    0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm:      .25rem !default;\n$input-btn-padding-x-sm:      .5rem !default;\n$input-btn-font-size-sm:      $font-size-sm !default;\n\n$input-btn-padding-y-lg:      .5rem !default;\n$input-btn-padding-x-lg:      1rem !default;\n$input-btn-font-size-lg:      $font-size-lg !default;\n\n$input-btn-border-width:      $border-width !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y:               $input-btn-padding-y !default;\n$btn-padding-x:               $input-btn-padding-x !default;\n$btn-font-family:             $input-btn-font-family !default;\n$btn-font-size:               $input-btn-font-size !default;\n$btn-line-height:             $input-btn-line-height !default;\n$btn-white-space:             null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm:            $input-btn-padding-y-sm !default;\n$btn-padding-x-sm:            $input-btn-padding-x-sm !default;\n$btn-font-size-sm:            $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg:            $input-btn-padding-y-lg !default;\n$btn-padding-x-lg:            $input-btn-padding-x-lg !default;\n$btn-font-size-lg:            $input-btn-font-size-lg !default;\n\n$btn-border-width:            $input-btn-border-width !default;\n\n$btn-font-weight:             $font-weight-normal !default;\n$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width:             $input-btn-focus-width !default;\n$btn-focus-box-shadow:        $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity:        .65 !default;\n$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color:              $link-color !default;\n$btn-link-hover-color:        $link-hover-color !default;\n$btn-link-disabled-color:     $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius:           $border-radius !default;\n$btn-border-radius-sm:        $border-radius-sm !default;\n$btn-border-radius-lg:        $border-radius-lg !default;\n\n$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount:       15% !default;\n$btn-hover-bg-tint-amount:        15% !default;\n$btn-hover-border-shade-amount:   20% !default;\n$btn-hover-border-tint-amount:    10% !default;\n$btn-active-bg-shade-amount:      20% !default;\n$btn-active-bg-tint-amount:       20% !default;\n$btn-active-border-shade-amount:  25% !default;\n$btn-active-border-tint-amount:   10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top:                  .25rem !default;\n$form-text-font-size:                   $small-font-size !default;\n$form-text-font-style:                  null !default;\n$form-text-font-weight:                 null !default;\n$form-text-color:                       $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom:              .5rem !default;\n$form-label-font-size:                  null !default;\n$form-label-font-style:                 null !default;\n$form-label-font-weight:                null !default;\n$form-label-color:                      null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y:                       $input-btn-padding-y !default;\n$input-padding-x:                       $input-btn-padding-x !default;\n$input-font-family:                     $input-btn-font-family !default;\n$input-font-size:                       $input-btn-font-size !default;\n$input-font-weight:                     $font-weight-base !default;\n$input-line-height:                     $input-btn-line-height !default;\n\n$input-padding-y-sm:                    $input-btn-padding-y-sm !default;\n$input-padding-x-sm:                    $input-btn-padding-x-sm !default;\n$input-font-size-sm:                    $input-btn-font-size-sm !default;\n\n$input-padding-y-lg:                    $input-btn-padding-y-lg !default;\n$input-padding-x-lg:                    $input-btn-padding-x-lg !default;\n$input-font-size-lg:                    $input-btn-font-size-lg !default;\n\n$input-bg:                              $body-bg !default;\n$input-disabled-bg:                     $gray-200 !default;\n$input-disabled-border-color:           null !default;\n\n$input-color:                           $body-color !default;\n$input-border-color:                    $gray-400 !default;\n$input-border-width:                    $input-btn-border-width !default;\n$input-box-shadow:                      $box-shadow-inset !default;\n\n$input-border-radius:                   $border-radius !default;\n$input-border-radius-sm:                $border-radius-sm !default;\n$input-border-radius-lg:                $border-radius-lg !default;\n\n$input-focus-bg:                        $input-bg !default;\n$input-focus-border-color:              tint-color($component-active-bg, 50%) !default;\n$input-focus-color:                     $input-color !default;\n$input-focus-width:                     $input-btn-focus-width !default;\n$input-focus-box-shadow:                $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color:               $gray-600 !default;\n$input-plaintext-color:                 $body-color !default;\n\n$input-height-border:                   $input-border-width * 2 !default;\n\n$input-height-inner:                    add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half:               add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter:            add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height:                          add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm:                       add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg:                       add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width:                      3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width:                  1em !default;\n$form-check-min-height:                   $font-size-base * $line-height-base !default;\n$form-check-padding-start:                $form-check-input-width + .5em !default;\n$form-check-margin-bottom:                .125rem !default;\n$form-check-label-color:                  null !default;\n$form-check-label-cursor:                 null !default;\n$form-check-transition:                   null !default;\n\n$form-check-input-active-filter:          brightness(90%) !default;\n\n$form-check-input-bg:                     $input-bg !default;\n$form-check-input-border:                 1px solid rgba($black, .25) !default;\n$form-check-input-border-radius:          .25em !default;\n$form-check-radio-border-radius:          50% !default;\n$form-check-input-focus-border:           $input-focus-border-color !default;\n$form-check-input-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color:          $component-active-color !default;\n$form-check-input-checked-bg-color:       $component-active-bg !default;\n$form-check-input-checked-border-color:   $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-checked-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/></svg>\") !default;\n$form-check-radio-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$form-check-input-checked-color}'/></svg>\") !default;\n\n$form-check-input-indeterminate-color:          $component-active-color !default;\n$form-check-input-indeterminate-bg-color:       $component-active-bg !default;\n$form-check-input-indeterminate-border-color:   $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-indeterminate-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>\") !default;\n\n$form-check-input-disabled-opacity:        .5 !default;\n$form-check-label-disabled-opacity:        $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity:    $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end:    1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color:               rgba(0, 0, 0, .25) !default;\n$form-switch-width:               2em !default;\n$form-switch-padding-start:       $form-switch-width + .5em !default;\n$form-switch-bg-image:            url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>\") !default;\n$form-switch-border-radius:       $form-switch-width !default;\n$form-switch-transition:          background-position .15s ease-in-out !default;\n\n$form-switch-focus-color:         $input-focus-border-color !default;\n$form-switch-focus-bg-image:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-focus-color}'/></svg>\") !default;\n\n$form-switch-checked-color:       $component-active-color !default;\n$form-switch-checked-bg-image:    url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y:           $input-padding-y !default;\n$input-group-addon-padding-x:           $input-padding-x !default;\n$input-group-addon-font-weight:         $input-font-weight !default;\n$input-group-addon-color:               $input-color !default;\n$input-group-addon-bg:                  $gray-200 !default;\n$input-group-addon-border-color:        $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y:             $input-padding-y !default;\n$form-select-padding-x:             $input-padding-x !default;\n$form-select-font-family:           $input-font-family !default;\n$form-select-font-size:             $input-font-size !default;\n$form-select-indicator-padding:     $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight:           $input-font-weight !default;\n$form-select-line-height:           $input-line-height !default;\n$form-select-color:                 $input-color !default;\n$form-select-bg:                    $input-bg !default;\n$form-select-disabled-color:        null !default;\n$form-select-disabled-bg:           $gray-200 !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position:           right $form-select-padding-x center !default;\n$form-select-bg-size:               16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color:       $gray-800 !default;\n$form-select-indicator:             url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/></svg>\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position:    center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size:        $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width:        $input-border-width !default;\n$form-select-border-color:        $input-border-color !default;\n$form-select-border-radius:       $border-radius !default;\n$form-select-box-shadow:          $box-shadow-inset !default;\n\n$form-select-focus-border-color:  $input-focus-border-color !default;\n$form-select-focus-width:         $input-focus-width !default;\n$form-select-focus-box-shadow:    0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm:        $input-padding-y-sm !default;\n$form-select-padding-x-sm:        $input-padding-x-sm !default;\n$form-select-font-size-sm:        $input-font-size-sm !default;\n\n$form-select-padding-y-lg:        $input-padding-y-lg !default;\n$form-select-padding-x-lg:        $input-padding-x-lg !default;\n$form-select-font-size-lg:        $input-font-size-lg !default;\n\n$form-select-transition:          $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width:          100% !default;\n$form-range-track-height:         .5rem !default;\n$form-range-track-cursor:         pointer !default;\n$form-range-track-bg:             $gray-300 !default;\n$form-range-track-border-radius:  1rem !default;\n$form-range-track-box-shadow:     $box-shadow-inset !default;\n\n$form-range-thumb-width:                   1rem !default;\n$form-range-thumb-height:                  $form-range-thumb-width !default;\n$form-range-thumb-bg:                      $component-active-bg !default;\n$form-range-thumb-border:                  0 !default;\n$form-range-thumb-border-radius:           1rem !default;\n$form-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width:  $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg:               tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg:             $gray-500 !default;\n$form-range-thumb-transition:              background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color:          $input-color !default;\n$form-file-button-bg:             $input-group-addon-bg !default;\n$form-file-button-hover-bg:       shade-color($form-file-button-bg, 5%) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height:            add(3.5rem, $input-height-border) !default;\n$form-floating-line-height:       1.25 !default;\n$form-floating-padding-x:         $input-padding-x !default;\n$form-floating-padding-y:         1rem !default;\n$form-floating-input-padding-t:   1.625rem !default;\n$form-floating-input-padding-b:   .625rem !default;\n$form-floating-label-opacity:     .65 !default;\n$form-floating-label-transform:   scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-transition:        opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top:          $form-text-margin-top !default;\n$form-feedback-font-size:           $form-text-font-size !default;\n$form-feedback-font-style:          $form-text-font-style !default;\n$form-feedback-valid-color:         $success !default;\n$form-feedback-invalid-color:       $danger !default;\n\n$form-feedback-icon-valid-color:    $form-feedback-valid-color !default;\n$form-feedback-icon-valid:          url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>\") !default;\n$form-feedback-icon-invalid-color:  $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid:        url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n  \"valid\": (\n    \"color\": $form-feedback-valid-color,\n    \"icon\": $form-feedback-icon-valid\n  ),\n  \"invalid\": (\n    \"color\": $form-feedback-invalid-color,\n    \"icon\": $form-feedback-icon-invalid\n  )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown:                   1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-modal-backdrop:             1050 !default;\n$zindex-modal:                      1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n// scss-docs-end zindex-stack\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y:                .5rem !default;\n$nav-link-padding-x:                1rem !default;\n$nav-link-font-size:                null !default;\n$nav-link-font-weight:              null !default;\n$nav-link-color:                    $link-color !default;\n$nav-link-hover-color:              $link-hover-color !default;\n$nav-link-transition:               color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color:           $gray-600 !default;\n\n$nav-tabs-border-color:             $gray-300 !default;\n$nav-tabs-border-width:             $border-width !default;\n$nav-tabs-border-radius:            $border-radius !default;\n$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color:        $gray-700 !default;\n$nav-tabs-link-active-bg:           $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius:           $border-radius !default;\n$nav-pills-link-active-color:       $component-active-color !default;\n$nav-pills-link-active-bg:          $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y:                  $spacer * .5 !default;\n$navbar-padding-x:                  null !default;\n\n$navbar-nav-link-padding-x:         .5rem !default;\n\n$navbar-brand-font-size:            $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height:                   $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end:           1rem !default;\n\n$navbar-toggler-padding-y:          .25rem !default;\n$navbar-toggler-padding-x:          .75rem !default;\n$navbar-toggler-font-size:          $font-size-lg !default;\n$navbar-toggler-border-radius:      $btn-border-radius !default;\n$navbar-toggler-focus-width:        $btn-focus-width !default;\n$navbar-toggler-transition:         box-shadow .15s ease-in-out !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-theme-variables\n$navbar-dark-color:                 rgba($white, .55) !default;\n$navbar-dark-hover-color:           rgba($white, .75) !default;\n$navbar-dark-active-color:          $white !default;\n$navbar-dark-disabled-color:        rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-dark-toggler-border-color:  rgba($white, .1) !default;\n\n$navbar-light-color:                rgba($black, .55) !default;\n$navbar-light-hover-color:          rgba($black, .7) !default;\n$navbar-light-active-color:         rgba($black, .9) !default;\n$navbar-light-disabled-color:       rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color:                $navbar-light-active-color !default;\n$navbar-light-brand-hover-color:          $navbar-light-active-color !default;\n$navbar-dark-brand-color:                 $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color:           $navbar-dark-active-color !default;\n// scss-docs-end navbar-theme-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width:                10rem !default;\n$dropdown-padding-x:                0 !default;\n$dropdown-padding-y:                .5rem !default;\n$dropdown-spacer:                   .125rem !default;\n$dropdown-font-size:                $font-size-base !default;\n$dropdown-color:                    $body-color !default;\n$dropdown-bg:                       $white !default;\n$dropdown-border-color:             rgba($black, .15) !default;\n$dropdown-border-radius:            $border-radius !default;\n$dropdown-border-width:             $border-width !default;\n$dropdown-inner-border-radius:      subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg:               $dropdown-border-color !default;\n$dropdown-divider-margin-y:         $spacer * .5 !default;\n$dropdown-box-shadow:               $box-shadow !default;\n\n$dropdown-link-color:               $gray-900 !default;\n$dropdown-link-hover-color:         shade-color($gray-900, 10%) !default;\n$dropdown-link-hover-bg:            $gray-200 !default;\n\n$dropdown-link-active-color:        $component-active-color !default;\n$dropdown-link-active-bg:           $component-active-bg !default;\n\n$dropdown-link-disabled-color:      $gray-500 !default;\n\n$dropdown-item-padding-y:           $spacer * .25 !default;\n$dropdown-item-padding-x:           $spacer !default;\n\n$dropdown-header-color:             $gray-600 !default;\n$dropdown-header-padding:           $dropdown-padding-y $dropdown-item-padding-x !default;\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color:               $gray-300 !default;\n$dropdown-dark-bg:                  $gray-800 !default;\n$dropdown-dark-border-color:        $dropdown-border-color !default;\n$dropdown-dark-divider-bg:          $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow:          null !default;\n$dropdown-dark-link-color:          $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color:    $white !default;\n$dropdown-dark-link-hover-bg:       rgba($white, .15) !default;\n$dropdown-dark-link-active-color:   $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg:      $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color:        $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y:              .375rem !default;\n$pagination-padding-x:              .75rem !default;\n$pagination-padding-y-sm:           .25rem !default;\n$pagination-padding-x-sm:           .5rem !default;\n$pagination-padding-y-lg:           .75rem !default;\n$pagination-padding-x-lg:           1.5rem !default;\n\n$pagination-color:                  $link-color !default;\n$pagination-bg:                     $white !default;\n$pagination-border-width:           $border-width !default;\n$pagination-border-radius:          $border-radius !default;\n$pagination-margin-start:           -$pagination-border-width !default;\n$pagination-border-color:           $gray-300 !default;\n\n$pagination-focus-color:            $link-hover-color !default;\n$pagination-focus-bg:               $gray-200 !default;\n$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n$pagination-focus-outline:          0 !default;\n\n$pagination-hover-color:            $link-hover-color !default;\n$pagination-hover-bg:               $gray-200 !default;\n$pagination-hover-border-color:     $gray-300 !default;\n\n$pagination-active-color:           $component-active-color !default;\n$pagination-active-bg:              $component-active-bg !default;\n$pagination-active-border-color:    $pagination-active-bg !default;\n\n$pagination-disabled-color:         $gray-600 !default;\n$pagination-disabled-bg:            $white !default;\n$pagination-disabled-border-color:  $gray-300 !default;\n\n$pagination-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm:       $border-radius-sm !default;\n$pagination-border-radius-lg:       $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max:           .5 !default;\n$placeholder-opacity-min:           .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y:                     $spacer !default;\n$card-spacer-x:                     $spacer !default;\n$card-title-spacer-y:               $spacer * .5 !default;\n$card-border-width:                 $border-width !default;\n$card-border-color:                 rgba($black, .125) !default;\n$card-border-radius:                $border-radius !default;\n$card-box-shadow:                   null !default;\n$card-inner-border-radius:          subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y:                $card-spacer-y * .5 !default;\n$card-cap-padding-x:                $card-spacer-x !default;\n$card-cap-bg:                       rgba($black, .03) !default;\n$card-cap-color:                    null !default;\n$card-height:                       null !default;\n$card-color:                        null !default;\n$card-bg:                           $white !default;\n$card-img-overlay-padding:          $spacer !default;\n$card-group-margin:                 $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y:                     1rem !default;\n$accordion-padding-x:                     1.25rem !default;\n$accordion-color:                         $body-color !default;\n$accordion-bg:                            $body-bg !default;\n$accordion-border-width:                  $border-width !default;\n$accordion-border-color:                  rgba($black, .125) !default;\n$accordion-border-radius:                 $border-radius !default;\n$accordion-inner-border-radius:           subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y:                $accordion-padding-y !default;\n$accordion-body-padding-x:                $accordion-padding-x !default;\n\n$accordion-button-padding-y:              $accordion-padding-y !default;\n$accordion-button-padding-x:              $accordion-padding-x !default;\n$accordion-button-color:                  $accordion-color !default;\n$accordion-button-bg:                     $accordion-bg !default;\n$accordion-transition:                    $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg:              tint-color($component-active-bg, 90%) !default;\n$accordion-button-active-color:           shade-color($primary, 10%) !default;\n\n$accordion-button-focus-border-color:     $input-focus-border-color !default;\n$accordion-button-focus-box-shadow:       $btn-focus-box-shadow !default;\n\n$accordion-icon-width:                    1.25rem !default;\n$accordion-icon-color:                    $accordion-button-color !default;\n$accordion-icon-active-color:             $accordion-button-active-color !default;\n$accordion-icon-transition:               transform .2s ease-in-out !default;\n$accordion-icon-transform:                rotate(-180deg) !default;\n\n$accordion-button-icon:         url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n$accordion-button-active-icon:  url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size:                 $font-size-sm !default;\n$tooltip-max-width:                 200px !default;\n$tooltip-color:                     $white !default;\n$tooltip-bg:                        $black !default;\n$tooltip-border-radius:             $border-radius !default;\n$tooltip-opacity:                   .9 !default;\n$tooltip-padding-y:                 $spacer * .25 !default;\n$tooltip-padding-x:                 $spacer * .5 !default;\n$tooltip-margin:                    0 !default;\n\n$tooltip-arrow-width:               .8rem !default;\n$tooltip-arrow-height:              .4rem !default;\n$tooltip-arrow-color:               $tooltip-bg !default;\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y:     $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x:     $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size:     $tooltip-font-size !default;\n$form-feedback-tooltip-line-height:   null !default;\n$form-feedback-tooltip-opacity:       $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size:                 $font-size-sm !default;\n$popover-bg:                        $white !default;\n$popover-max-width:                 276px !default;\n$popover-border-width:              $border-width !default;\n$popover-border-color:              rgba($black, .2) !default;\n$popover-border-radius:             $border-radius-lg !default;\n$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow:                $box-shadow !default;\n\n$popover-header-bg:                 shade-color($popover-bg, 6%) !default;\n$popover-header-color:              $headings-color !default;\n$popover-header-padding-y:          .5rem !default;\n$popover-header-padding-x:          $spacer !default;\n\n$popover-body-color:                $body-color !default;\n$popover-body-padding-y:            $spacer !default;\n$popover-body-padding-x:            $spacer !default;\n\n$popover-arrow-width:               1rem !default;\n$popover-arrow-height:              .5rem !default;\n$popover-arrow-color:               $popover-bg !default;\n\n$popover-arrow-outer-color:         fade-in($popover-border-color, .05) !default;\n// scss-docs-end popover-variables\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width:                   350px !default;\n$toast-padding-x:                   .75rem !default;\n$toast-padding-y:                   .5rem !default;\n$toast-font-size:                   .875rem !default;\n$toast-color:                       null !default;\n$toast-background-color:            rgba($white, .85) !default;\n$toast-border-width:                1px !default;\n$toast-border-color:                rgba(0, 0, 0, .1) !default;\n$toast-border-radius:               $border-radius !default;\n$toast-box-shadow:                  $box-shadow !default;\n$toast-spacing:                     $container-padding-x !default;\n\n$toast-header-color:                $gray-600 !default;\n$toast-header-background-color:     rgba($white, .85) !default;\n$toast-header-border-color:         rgba(0, 0, 0, .05) !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size:                   .75em !default;\n$badge-font-weight:                 $font-weight-bold !default;\n$badge-color:                       $white !default;\n$badge-padding-y:                   .35em !default;\n$badge-padding-x:                   .65em !default;\n$badge-border-radius:               $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding:               $spacer !default;\n\n$modal-footer-margin-between:       .5rem !default;\n\n$modal-dialog-margin:               .5rem !default;\n$modal-dialog-margin-y-sm-up:       1.75rem !default;\n\n$modal-title-line-height:           $line-height-base !default;\n\n$modal-content-color:               null !default;\n$modal-content-bg:                  $white !default;\n$modal-content-border-color:        rgba($black, .2) !default;\n$modal-content-border-width:        $border-width !default;\n$modal-content-border-radius:       $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs:       $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up:    $box-shadow !default;\n\n$modal-backdrop-bg:                 $black !default;\n$modal-backdrop-opacity:            .5 !default;\n$modal-header-border-color:         $border-color !default;\n$modal-footer-border-color:         $modal-header-border-color !default;\n$modal-header-border-width:         $modal-content-border-width !default;\n$modal-footer-border-width:         $modal-header-border-width !default;\n$modal-header-padding-y:            $modal-inner-padding !default;\n$modal-header-padding-x:            $modal-inner-padding !default;\n$modal-header-padding:              $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-sm:                          300px !default;\n$modal-md:                          500px !default;\n$modal-lg:                          800px !default;\n$modal-xl:                          1140px !default;\n\n$modal-fade-transform:              translate(0, -50px) !default;\n$modal-show-transform:              none !default;\n$modal-transition:                  transform .3s ease-out !default;\n$modal-scale-transform:             scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y:               $spacer !default;\n$alert-padding-x:               $spacer !default;\n$alert-margin-bottom:           1rem !default;\n$alert-border-radius:           $border-radius !default;\n$alert-link-font-weight:        $font-weight-bold !default;\n$alert-border-width:            $border-width !default;\n$alert-bg-scale:                -80% !default;\n$alert-border-scale:            -70% !default;\n$alert-color-scale:             40% !default;\n$alert-dismissible-padding-r:   $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height:                   1rem !default;\n$progress-font-size:                $font-size-base * .75 !default;\n$progress-bg:                       $gray-200 !default;\n$progress-border-radius:            $border-radius !default;\n$progress-box-shadow:               $box-shadow-inset !default;\n$progress-bar-color:                $white !default;\n$progress-bar-bg:                   $primary !default;\n$progress-bar-animation-timing:     1s linear infinite !default;\n$progress-bar-transition:           width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color:                  $gray-900 !default;\n$list-group-bg:                     $white !default;\n$list-group-border-color:           rgba($black, .125) !default;\n$list-group-border-width:           $border-width !default;\n$list-group-border-radius:          $border-radius !default;\n\n$list-group-item-padding-y:         $spacer * .5 !default;\n$list-group-item-padding-x:         $spacer !default;\n$list-group-item-bg-scale:          -80% !default;\n$list-group-item-color-scale:       40% !default;\n\n$list-group-hover-bg:               $gray-100 !default;\n$list-group-active-color:           $component-active-color !default;\n$list-group-active-bg:              $component-active-bg !default;\n$list-group-active-border-color:    $list-group-active-bg !default;\n\n$list-group-disabled-color:         $gray-600 !default;\n$list-group-disabled-bg:            $list-group-bg !default;\n\n$list-group-action-color:           $gray-700 !default;\n$list-group-action-hover-color:     $list-group-action-color !default;\n\n$list-group-action-active-color:    $body-color !default;\n$list-group-action-active-bg:       $gray-200 !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding:                 .25rem !default;\n$thumbnail-bg:                      $body-bg !default;\n$thumbnail-border-width:            $border-width !default;\n$thumbnail-border-color:            $gray-300 !default;\n$thumbnail-border-radius:           $border-radius !default;\n$thumbnail-box-shadow:              $box-shadow-sm !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size:          $small-font-size !default;\n$figure-caption-color:              $gray-600 !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size:              null !default;\n$breadcrumb-padding-y:              0 !default;\n$breadcrumb-padding-x:              0 !default;\n$breadcrumb-item-padding-x:         .5rem !default;\n$breadcrumb-margin-bottom:          1rem !default;\n$breadcrumb-bg:                     null !default;\n$breadcrumb-divider-color:          $gray-600 !default;\n$breadcrumb-active-color:           $gray-600 !default;\n$breadcrumb-divider:                quote(\"/\") !default;\n$breadcrumb-divider-flipped:        $breadcrumb-divider !default;\n$breadcrumb-border-radius:          null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color:             $white !default;\n$carousel-control-width:             15% !default;\n$carousel-control-opacity:           .5 !default;\n$carousel-control-hover-opacity:     .9 !default;\n$carousel-control-transition:        opacity .15s ease !default;\n\n$carousel-indicator-width:           30px !default;\n$carousel-indicator-height:          3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer:          3px !default;\n$carousel-indicator-opacity:         .5 !default;\n$carousel-indicator-active-bg:       $white !default;\n$carousel-indicator-active-opacity:  1 !default;\n$carousel-indicator-transition:      opacity .6s ease !default;\n\n$carousel-caption-width:             70% !default;\n$carousel-caption-color:             $white !default;\n$carousel-caption-padding-y:         1.25rem !default;\n$carousel-caption-spacer:            1.25rem !default;\n\n$carousel-control-icon-width:        2rem !default;\n\n$carousel-control-prev-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>\") !default;\n$carousel-control-next-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n\n$carousel-transition-duration:       .6s !default;\n$carousel-transition:                transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n$carousel-dark-indicator-active-bg:  $black !default;\n$carousel-dark-caption-color:        $black !default;\n$carousel-dark-control-icon-filter:  invert(1) grayscale(100) !default;\n// scss-docs-end carousel-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width:           2rem !default;\n$spinner-height:          $spinner-width !default;\n$spinner-vertical-align:  -.125em !default;\n$spinner-border-width:    .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm:        1rem !default;\n$spinner-height-sm:       $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width:            1em !default;\n$btn-close-height:           $btn-close-width !default;\n$btn-close-padding-x:        .25em !default;\n$btn-close-padding-y:        $btn-close-padding-x !default;\n$btn-close-color:            $black !default;\n$btn-close-bg:               url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/></svg>\") !default;\n$btn-close-focus-shadow:     $input-btn-focus-box-shadow !default;\n$btn-close-opacity:          .5 !default;\n$btn-close-hover-opacity:    .75 !default;\n$btn-close-focus-opacity:    1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter:     invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y:               $modal-inner-padding !default;\n$offcanvas-padding-x:               $modal-inner-padding !default;\n$offcanvas-horizontal-width:        400px !default;\n$offcanvas-vertical-height:         30vh !default;\n$offcanvas-transition-duration:     .3s !default;\n$offcanvas-border-color:            $modal-content-border-color !default;\n$offcanvas-border-width:            $modal-content-border-width !default;\n$offcanvas-title-line-height:       $modal-title-line-height !default;\n$offcanvas-bg-color:                $modal-content-bg !default;\n$offcanvas-color:                   $modal-content-color !default;\n$offcanvas-box-shadow:              $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg:             $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity:        $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size:                    $small-font-size !default;\n$code-color:                        $pink !default;\n\n$kbd-padding-y:                     .2rem !default;\n$kbd-padding-x:                     .4rem !default;\n$kbd-font-size:                     $code-font-size !default;\n$kbd-color:                         $white !default;\n$kbd-bg:                            $gray-900 !default;\n\n$pre-color:                         null !default;\n","// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if type-of($value) == number {\n      $return: append($return, max($value, 0));\n    } @else {\n      $return: append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css
new file mode 100644
index 0000000..0aba046
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css
@@ -0,0 +1,8 @@
+/*!
+ * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
+ */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}
+/*# sourceMappingURL=bootstrap-reboot.min.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map
new file mode 100644
index 0000000..68401fa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap-reboot.scss","../../scss/_reboot.scss","dist/css/bootstrap-reboot.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"AAAA;;;;;;ACeA,ECNA,QADA,SDUE,WAAA,WAeE,8CANJ,MAOM,gBAAA,QAcN,KACE,OAAA,EACA,YAAA,2BEmPI,UAAA,yBFjPJ,YAAA,2BACA,YAAA,2BACA,MAAA,qBACA,WAAA,0BACA,iBAAA,kBACA,yBAAA,KACA,4BAAA,YAUF,GACE,OAAA,KAAA,EACA,MAAA,QACA,iBAAA,aACA,OAAA,EACA,QAAA,IAGF,eACE,OAAA,IAUF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAGA,YAAA,IACA,YAAA,IAIF,GEwMQ,UAAA,uBAlKJ,0BFtCJ,GE+MQ,UAAA,QF1MR,GEmMQ,UAAA,sBAlKJ,0BFjCJ,GE0MQ,UAAA,MFrMR,GE8LQ,UAAA,oBAlKJ,0BF5BJ,GEqMQ,UAAA,SFhMR,GEyLQ,UAAA,sBAlKJ,0BFvBJ,GEgMQ,UAAA,QF3LR,GEgLM,UAAA,QF3KN,GE2KM,UAAA,KFhKN,EACE,WAAA,EACA,cAAA,KClCF,6BD6CA,YAEE,wBAAA,UAAA,OAAA,gBAAA,UAAA,OACA,OAAA,KACA,iCAAA,KAAA,yBAAA,KAMF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QAMF,GCjDA,GDmDE,aAAA,KC7CF,GDgDA,GCjDA,GDoDE,WAAA,EACA,cAAA,KAGF,MChDA,MACA,MAFA,MDqDE,cAAA,EAGF,GACE,YAAA,IAKF,GACE,cAAA,MACA,YAAA,EAMF,WACE,OAAA,EAAA,EAAA,KAQF,EC3DA,OD6DE,YAAA,OAQF,ME4EM,UAAA,OFrEN,KACE,QAAA,KACA,iBAAA,QASF,ICzEA,ID2EE,SAAA,SEwDI,UAAA,MFtDJ,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAKN,EACE,MAAA,QACA,gBAAA,UAEA,QACE,MAAA,QAWF,2BAAA,iCAEE,MAAA,QACA,gBAAA,KC7EJ,KACA,IDmFA,IClFA,KDsFE,YAAA,cAAA,CAAA,KAAA,CAAA,MAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,UEcI,UAAA,IFZJ,UAAA,IACA,aAAA,cAOF,IACE,QAAA,MACA,WAAA,EACA,cAAA,KACA,SAAA,KEAI,UAAA,OFKJ,SELI,UAAA,QFOF,MAAA,QACA,WAAA,OAIJ,KEZM,UAAA,OFcJ,MAAA,QACA,UAAA,WAGA,OACE,MAAA,QAIJ,IACE,QAAA,MAAA,MExBI,UAAA,OF0BJ,MAAA,KACA,iBAAA,QG7SE,cAAA,MHgTF,QACE,QAAA,EE/BE,UAAA,IFiCF,YAAA,IASJ,OACE,OAAA,EAAA,EAAA,KAMF,ICtGA,IDwGE,eAAA,OAQF,MACE,aAAA,OACA,gBAAA,SAGF,QACE,YAAA,MACA,eAAA,MACA,MAAA,QACA,WAAA,KAOF,GAEE,WAAA,QACA,WAAA,qBC7GF,MAGA,GAFA,MAGA,GD4GA,MC9GA,GDoHE,aAAA,QACA,aAAA,MACA,aAAA,EAQF,MACE,QAAA,aAMF,OAEE,cAAA,EAQF,iCACE,QAAA,EC3HF,ODgIA,MC9HA,SADA,OAEA,SDkIE,OAAA,EACA,YAAA,QE9HI,UAAA,QFgIJ,YAAA,QAIF,OCjIA,ODmIE,eAAA,KAKF,cACE,OAAA,QAGF,OAGE,UAAA,OAGA,gBACE,QAAA,EAOJ,0CACE,QAAA,KCvIF,cACA,aACA,cD6IA,OAIE,mBAAA,OC7IF,6BACA,4BACA,6BD8II,sBACE,OAAA,QAON,mBACE,QAAA,EACA,aAAA,KAKF,SACE,OAAA,SAUF,SACE,UAAA,EACA,QAAA,EACA,OAAA,EACA,OAAA,EAQF,OACE,MAAA,KACA,MAAA,KACA,QAAA,EACA,cAAA,MEnNM,UAAA,sBFsNN,YAAA,QExXE,0BFiXJ,OExMQ,UAAA,QFiNN,SACE,MAAA,KCrJJ,kCD4JA,uCC7JA,mCADA,+BAGA,oCAJA,6BAKA,mCDiKE,QAAA,EAGF,4BACE,OAAA,KASF,cACE,eAAA,KACA,mBAAA,UAmBF,4BACE,mBAAA,KAKF,+BACE,QAAA,EAMF,uBACE,KAAA,QAMF,6BACE,KAAA,QACA,mBAAA,OAKF,OACE,QAAA,aAKF,OACE,OAAA,EAOF,QACE,QAAA,UACA,OAAA,QAQF,SACE,eAAA,SAQF,SACE,QAAA","sourcesContent":["/*!\n * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n\n@import \"functions\";\n@import \"variables\";\n// Prevent the usage of custom properties since we don't add them to `:root` in reboot\n$font-family-base: $font-family-sans-serif; // stylelint-disable-line scss/dollar-variable-default\n$font-family-code: $font-family-monospace; // stylelint-disable-line scss/dollar-variable-default\n@import \"mixins\";\n@import \"reboot\";\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n  @if $font-size-root != null {\n    font-size: var(--#{$variable-prefix}-root-font-size);\n  }\n\n  @if $enable-smooth-scroll {\n    @media (prefers-reduced-motion: no-preference) {\n      scroll-behavior: smooth;\n    }\n  }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n  margin: 0; // 1\n  font-family: var(--#{$variable-prefix}body-font-family);\n  @include font-size(var(--#{$variable-prefix}body-font-size));\n  font-weight: var(--#{$variable-prefix}body-font-weight);\n  line-height: var(--#{$variable-prefix}body-line-height);\n  color: var(--#{$variable-prefix}body-color);\n  text-align: var(--#{$variable-prefix}body-text-align);\n  background-color: var(--#{$variable-prefix}body-bg); // 2\n  -webkit-text-size-adjust: 100%; // 3\n  -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n  margin: $hr-margin-y 0;\n  color: $hr-color; // 1\n  background-color: currentColor;\n  border: 0;\n  opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n  height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n//    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n//    margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n  margin-top: 0; // 1\n  margin-bottom: $headings-margin-bottom;\n  font-family: $headings-font-family;\n  font-style: $headings-font-style;\n  font-weight: $headings-font-weight;\n  line-height: $headings-line-height;\n  color: $headings-color;\n}\n\nh1 {\n  @extend %heading;\n  @include font-size($h1-font-size);\n}\n\nh2 {\n  @extend %heading;\n  @include font-size($h2-font-size);\n}\n\nh3 {\n  @extend %heading;\n  @include font-size($h3-font-size);\n}\n\nh4 {\n  @extend %heading;\n  @include font-size($h4-font-size);\n}\n\nh5 {\n  @extend %heading;\n  @include font-size($h5-font-size);\n}\n\nh6 {\n  @extend %heading;\n  @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n  margin-top: 0;\n  margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n  text-decoration: underline dotted; // 2\n  cursor: help; // 3\n  text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n  font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n  @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n  padding: $mark-padding;\n  background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n  position: relative;\n  @include font-size($sub-sup-font-size);\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n  color: $link-color;\n  text-decoration: $link-decoration;\n\n  &:hover {\n    color: $link-hover-color;\n    text-decoration: $link-hover-decoration;\n  }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n  &,\n  &:hover {\n    color: inherit;\n    text-decoration: none;\n  }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: $font-family-code;\n  @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n  direction: ltr #{\"/* rtl:ignore */\"};\n  unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n  display: block;\n  margin-top: 0; // 1\n  margin-bottom: 1rem; // 2\n  overflow: auto; // 3\n  @include font-size($code-font-size);\n  color: $pre-color;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    @include font-size(inherit);\n    color: inherit;\n    word-break: normal;\n  }\n}\n\ncode {\n  @include font-size($code-font-size);\n  color: $code-color;\n  word-wrap: break-word;\n\n  // Streamline the style when inside anchors to avoid broken underline and more\n  a > & {\n    color: inherit;\n  }\n}\n\nkbd {\n  padding: $kbd-padding-y $kbd-padding-x;\n  @include font-size($kbd-font-size);\n  color: $kbd-color;\n  background-color: $kbd-bg;\n  @include border-radius($border-radius-sm);\n\n  kbd {\n    padding: 0;\n    @include font-size(1em);\n    font-weight: $nested-kbd-font-weight;\n  }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n  margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: $table-cell-padding-y;\n  padding-bottom: $table-cell-padding-y;\n  color: $table-caption-color;\n  text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `<td>` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n  font-weight: $table-th-font-weight; // 1\n  text-align: inherit; // 2\n  text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n  display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0; // 1\n  font-family: inherit;\n  @include font-size(inherit);\n  line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n  text-transform: none;\n}\n// Set the cursor for non-`<button>` buttons\n//\n// Details at https://github.com/twbs/bootstrap/pull/30562\n[role=\"button\"] {\n  cursor: pointer;\n}\n\nselect {\n  // Remove the inheritance of word-wrap in Safari.\n  // See https://github.com/twbs/bootstrap/issues/24990\n  word-wrap: normal;\n\n  // Undo the opacity change from Chrome\n  &:disabled {\n    opacity: 1;\n  }\n}\n\n// Remove the dropdown arrow in Chrome from inputs built with datalists.\n// See https://stackoverflow.com/a/54997118\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n//    controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\n// 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n\n  @if $enable-button-pointers {\n    &:not(:disabled) {\n      cursor: pointer; // 3\n    }\n  }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\n// 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\ntextarea {\n  resize: vertical; // 1\n}\n\n// 1. Browsers set a default `min-width: min-content;` on fieldsets,\n//    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n//    So we reset that to ensure fieldsets behave more like a standard block element.\n//    See https://github.com/twbs/bootstrap/issues/12359\n//    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n// 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\nfieldset {\n  min-width: 0; // 1\n  padding: 0; // 2\n  margin: 0; // 2\n  border: 0; // 2\n}\n\n// 1. By using `float: left`, the legend will behave like a block element.\n//    This way the border of a fieldset wraps around the legend if present.\n// 2. Fix wrapping bug.\n//    See https://github.com/twbs/bootstrap/issues/29712\n\nlegend {\n  float: left; // 1\n  width: 100%;\n  padding: 0;\n  margin-bottom: $legend-margin-bottom;\n  @include font-size($legend-font-size);\n  font-weight: $legend-font-weight;\n  line-height: inherit;\n\n  + * {\n    clear: left; // 2\n  }\n}\n\n// Fix height of inputs with a type of datetime-local, date, month, week, or time\n// See https://github.com/twbs/bootstrap/issues/18842\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n// 1. Correct the outline style in Safari.\n// 2. This overrides the extra rounded corners on search inputs in iOS so that our\n//    `.form-control` class can properly style them. Note that this cannot simply\n//    be added to `.form-control` as it's not specific enough. For details, see\n//    https://github.com/twbs/bootstrap/issues/11586.\n\n[type=\"search\"] {\n  outline-offset: -2px; // 1\n  -webkit-appearance: textfield; // 2\n}\n\n// 1. A few input types should stay LTR\n// See https://rtlstyling.com/posts/rtl-styling#form-inputs\n// 2. RTL only output\n// See https://rtlcss.com/learn/usage-guide/control-directives/#raw\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n\n// Remove the inner padding in Chrome and Safari on macOS.\n\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n// Remove padding around color pickers in webkit browsers\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n\n// Inherit font family and line height for file input buttons\n\n::file-selector-button {\n  font: inherit;\n}\n\n// 1. Change font properties to `inherit`\n// 2. Correct the inability to style clickable types in iOS and Safari.\n\n::-webkit-file-upload-button {\n  font: inherit; // 1\n  -webkit-appearance: button; // 2\n}\n\n// Correct element displays\n\noutput {\n  display: inline-block;\n}\n\n// Remove border from iframe\n\niframe {\n  border: 0;\n}\n\n// Summary\n//\n// 1. Add the correct display in all browsers\n\nsummary {\n  display: list-item; // 1\n  cursor: pointer;\n}\n\n\n// Progress\n//\n// Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\nprogress {\n  vertical-align: baseline;\n}\n\n\n// Hidden attribute\n//\n// Always hide an element with the `hidden` HTML attribute.\n\n[hidden] {\n  display: none !important;\n}\n","/*!\n * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  :root {\n    scroll-behavior: smooth;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: var(--bs-body-font-family);\n  font-size: var(--bs-body-font-size);\n  font-weight: var(--bs-body-font-weight);\n  line-height: var(--bs-body-line-height);\n  color: var(--bs-body-color);\n  text-align: var(--bs-body-text-align);\n  background-color: var(--bs-body-bg);\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n  margin: 1rem 0;\n  color: inherit;\n  background-color: currentColor;\n  border: 0;\n  opacity: 0.25;\n}\n\nhr:not([size]) {\n  height: 1px;\n}\n\nh6, h5, h4, h3, h2, h1 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\nh1 {\n  font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n  h1 {\n    font-size: 2.5rem;\n  }\n}\n\nh2 {\n  font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n  h2 {\n    font-size: 2rem;\n  }\n}\n\nh3 {\n  font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n  h3 {\n    font-size: 1.75rem;\n  }\n}\n\nh4 {\n  font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n  h4 {\n    font-size: 1.5rem;\n  }\n}\n\nh5 {\n  font-size: 1.25rem;\n}\n\nh6 {\n  font-size: 1rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-bs-original-title] {\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n  cursor: help;\n  -webkit-text-decoration-skip-ink: none;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: 0.5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall {\n  font-size: 0.875em;\n}\n\nmark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 0.75em;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\na {\n  color: #0d6efd;\n  text-decoration: underline;\n}\na:hover {\n  color: #0a58ca;\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n  color: inherit;\n  text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  font-size: 1em;\n  direction: ltr /* rtl:ignore */;\n  unicode-bidi: bidi-override;\n}\n\npre {\n  display: block;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  font-size: 0.875em;\n}\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\ncode {\n  font-size: 0.875em;\n  color: #d63384;\n  word-wrap: break-word;\n}\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 0.875em;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\nkbd kbd {\n  padding: 0;\n  font-size: 1em;\n  font-weight: 700;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  color: #6c757d;\n  text-align: left;\n}\n\nth {\n  text-align: inherit;\n  text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\nlabel {\n  display: inline-block;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n[role=button] {\n  cursor: pointer;\n}\n\nselect {\n  word-wrap: normal;\n}\nselect:disabled {\n  opacity: 1;\n}\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n  -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n  cursor: pointer;\n}\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ntextarea {\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  float: left;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 0.5rem;\n  font-size: calc(1.275rem + 0.3vw);\n  line-height: inherit;\n}\n@media (min-width: 1200px) {\n  legend {\n    font-size: 1.5rem;\n  }\n}\nlegend + * {\n  clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n[type=search] {\n  outline-offset: -2px;\n  -webkit-appearance: textfield;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n::file-selector-button {\n  font: inherit;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\niframe {\n  border: 0;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[hidden] {\n  display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n  @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n  @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n  @error \"`#{$rfs-factor}` is not a valid  $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n  $dividend: abs($dividend);\n  $divisor: abs($divisor);\n  @if $dividend == 0 {\n    @return 0;\n  }\n  @if $divisor == 0 {\n    @error \"Cannot divide by 0\";\n  }\n  $remainder: $dividend;\n  $result: 0;\n  $factor: 10;\n  @while ($remainder > 0 and $precision >= 0) {\n    $quotient: 0;\n    @while ($remainder >= $divisor) {\n      $remainder: $remainder - $divisor;\n      $quotient: $quotient + 1;\n    }\n    $result: $result * 10 + $quotient;\n    $factor: $factor * .1;\n    $remainder: $remainder * 10;\n    $precision: $precision - 1;\n    @if ($precision < 0 and $remainder >= $divisor * 5) {\n      $result: $result + 1;\n    }\n  }\n  $result: $result * $factor * $sign;\n  $dividend-unit: unit($dividend);\n  $divisor-unit: unit($divisor);\n  $unit-map: (\n    \"px\": 1px,\n    \"rem\": 1rem,\n    \"em\": 1em,\n    \"%\": 1%\n  );\n  @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n    $result: $result * map-get($unit-map, $dividend-unit);\n  }\n  @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n  $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n  $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n  $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n  $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n  @if $rfs-two-dimensional {\n    @if $rfs-mode == max-media-query {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n    @else {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n  }\n  @else {\n    @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n      @content;\n    }\n  }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n  @if $rfs-class == disable and $rfs-mode == max-media-query {\n    // Adding an extra class increases specificity, which prevents the media query to override the property\n    &,\n    .disable-rfs &,\n    &.disable-rfs {\n      @content;\n    }\n  }\n  @else if $rfs-class == enable and $rfs-mode == min-media-query {\n    .enable-rfs &,\n    &.enable-rfs {\n      @content;\n    }\n  }\n  @else {\n    @content;\n  }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n  @if $rfs-class == enable {\n    @if $rfs-mode == min-media-query {\n      @content;\n    }\n\n    @include _rfs-media-query {\n      .enable-rfs &,\n      &.enable-rfs {\n        @content;\n      }\n    }\n  }\n  @else {\n    @if $rfs-class == disable and $rfs-mode == min-media-query {\n      .disable-rfs &,\n      &.disable-rfs {\n        @content;\n      }\n    }\n    @include _rfs-media-query {\n      @content;\n    }\n  }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      @if $unit == px {\n        // Convert to rem if needed\n        $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n      }\n      @else if $unit == rem {\n        // Convert to px if needed\n        $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n      }\n      @else {\n        // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n        $val: $val + ' ' + $value;\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n      @if not $unit or $unit != px and $unit != rem {\n        $val: $val + ' ' + $value;\n      }\n\n      @else {\n        // Remove unit from $value for calculations\n        $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n        // Only add the media query if the value is greater than the minimum value\n        @if abs($value) <= $rfs-base-value or not $enable-rfs {\n          $val: $val + ' ' +  if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n        }\n        @else {\n          // Calculate the minimum value\n          $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n          // Calculate difference between $value and the minimum value\n          $value-diff: abs($value) - $value-min;\n\n          // Base value formatting\n          $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n          // Use negative value if needed\n          $min-width: if($value < 0, -$min-width, $min-width);\n\n          // Use `vmin` if two-dimensional is enabled\n          $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n          // Calculate the variable width between 0 and $rfs-breakpoint\n          $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n          // Return the calculated value\n          $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n        }\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n  @if $values != null {\n    $val: rfs-value($values);\n    $fluidVal: rfs-fluid-value($values);\n\n    // Do not print the media query if responsive & non-responsive values are the same\n    @if $val == $fluidVal {\n      #{$property}: $val;\n    }\n    @else {\n      @include _rfs-rule {\n        #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n        // Include safari iframe resize fix if needed\n        min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n      }\n\n      @include _rfs-media-query-rule {\n        #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n      }\n    }\n  }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n  @include rfs($value);\n}\n\n@mixin padding($value) {\n  @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n  @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n  @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n  @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n  @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n  @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n  @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n  @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n  @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n  @include rfs($value, margin-left);\n}\n","// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if type-of($value) == number {\n      $return: append($return, max($value, 0));\n    } @else {\n      $return: append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css
new file mode 100644
index 0000000..6b89c0f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css
@@ -0,0 +1,424 @@
+/*!
+ * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
+ */
+*,
+*::before,
+*::after {
+  box-sizing: border-box;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  :root {
+    scroll-behavior: smooth;
+  }
+}
+
+body {
+  margin: 0;
+  font-family: var(--bs-body-font-family);
+  font-size: var(--bs-body-font-size);
+  font-weight: var(--bs-body-font-weight);
+  line-height: var(--bs-body-line-height);
+  color: var(--bs-body-color);
+  text-align: var(--bs-body-text-align);
+  background-color: var(--bs-body-bg);
+  -webkit-text-size-adjust: 100%;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+hr {
+  margin: 1rem 0;
+  color: inherit;
+  background-color: currentColor;
+  border: 0;
+  opacity: 0.25;
+}
+
+hr:not([size]) {
+  height: 1px;
+}
+
+h6, h5, h4, h3, h2, h1 {
+  margin-top: 0;
+  margin-bottom: 0.5rem;
+  font-weight: 500;
+  line-height: 1.2;
+}
+
+h1 {
+  font-size: calc(1.375rem + 1.5vw);
+}
+@media (min-width: 1200px) {
+  h1 {
+    font-size: 2.5rem;
+  }
+}
+
+h2 {
+  font-size: calc(1.325rem + 0.9vw);
+}
+@media (min-width: 1200px) {
+  h2 {
+    font-size: 2rem;
+  }
+}
+
+h3 {
+  font-size: calc(1.3rem + 0.6vw);
+}
+@media (min-width: 1200px) {
+  h3 {
+    font-size: 1.75rem;
+  }
+}
+
+h4 {
+  font-size: calc(1.275rem + 0.3vw);
+}
+@media (min-width: 1200px) {
+  h4 {
+    font-size: 1.5rem;
+  }
+}
+
+h5 {
+  font-size: 1.25rem;
+}
+
+h6 {
+  font-size: 1rem;
+}
+
+p {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+abbr[title],
+abbr[data-bs-original-title] {
+  -webkit-text-decoration: underline dotted;
+  text-decoration: underline dotted;
+  cursor: help;
+  -webkit-text-decoration-skip-ink: none;
+  text-decoration-skip-ink: none;
+}
+
+address {
+  margin-bottom: 1rem;
+  font-style: normal;
+  line-height: inherit;
+}
+
+ol,
+ul {
+  padding-right: 2rem;
+}
+
+ol,
+ul,
+dl {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+  margin-bottom: 0;
+}
+
+dt {
+  font-weight: 700;
+}
+
+dd {
+  margin-bottom: 0.5rem;
+  margin-right: 0;
+}
+
+blockquote {
+  margin: 0 0 1rem;
+}
+
+b,
+strong {
+  font-weight: bolder;
+}
+
+small {
+  font-size: 0.875em;
+}
+
+mark {
+  padding: 0.2em;
+  background-color: #fcf8e3;
+}
+
+sub,
+sup {
+  position: relative;
+  font-size: 0.75em;
+  line-height: 0;
+  vertical-align: baseline;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+sup {
+  top: -0.5em;
+}
+
+a {
+  color: #0d6efd;
+  text-decoration: underline;
+}
+a:hover {
+  color: #0a58ca;
+}
+
+a:not([href]):not([class]), a:not([href]):not([class]):hover {
+  color: inherit;
+  text-decoration: none;
+}
+
+pre,
+code,
+kbd,
+samp {
+  font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+  font-size: 1em;
+  direction: ltr ;
+  unicode-bidi: bidi-override;
+}
+
+pre {
+  display: block;
+  margin-top: 0;
+  margin-bottom: 1rem;
+  overflow: auto;
+  font-size: 0.875em;
+}
+pre code {
+  font-size: inherit;
+  color: inherit;
+  word-break: normal;
+}
+
+code {
+  font-size: 0.875em;
+  color: #d63384;
+  word-wrap: break-word;
+}
+a > code {
+  color: inherit;
+}
+
+kbd {
+  padding: 0.2rem 0.4rem;
+  font-size: 0.875em;
+  color: #fff;
+  background-color: #212529;
+  border-radius: 0.2rem;
+}
+kbd kbd {
+  padding: 0;
+  font-size: 1em;
+  font-weight: 700;
+}
+
+figure {
+  margin: 0 0 1rem;
+}
+
+img,
+svg {
+  vertical-align: middle;
+}
+
+table {
+  caption-side: bottom;
+  border-collapse: collapse;
+}
+
+caption {
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  color: #6c757d;
+  text-align: right;
+}
+
+th {
+  text-align: inherit;
+  text-align: -webkit-match-parent;
+}
+
+thead,
+tbody,
+tfoot,
+tr,
+td,
+th {
+  border-color: inherit;
+  border-style: solid;
+  border-width: 0;
+}
+
+label {
+  display: inline-block;
+}
+
+button {
+  border-radius: 0;
+}
+
+button:focus:not(:focus-visible) {
+  outline: 0;
+}
+
+input,
+button,
+select,
+optgroup,
+textarea {
+  margin: 0;
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+
+button,
+select {
+  text-transform: none;
+}
+
+[role=button] {
+  cursor: pointer;
+}
+
+select {
+  word-wrap: normal;
+}
+select:disabled {
+  opacity: 1;
+}
+
+[list]::-webkit-calendar-picker-indicator {
+  display: none;
+}
+
+button,
+[type=button],
+[type=reset],
+[type=submit] {
+  -webkit-appearance: button;
+}
+button:not(:disabled),
+[type=button]:not(:disabled),
+[type=reset]:not(:disabled),
+[type=submit]:not(:disabled) {
+  cursor: pointer;
+}
+
+::-moz-focus-inner {
+  padding: 0;
+  border-style: none;
+}
+
+textarea {
+  resize: vertical;
+}
+
+fieldset {
+  min-width: 0;
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+
+legend {
+  float: right;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 0.5rem;
+  font-size: calc(1.275rem + 0.3vw);
+  line-height: inherit;
+}
+@media (min-width: 1200px) {
+  legend {
+    font-size: 1.5rem;
+  }
+}
+legend + * {
+  clear: right;
+}
+
+::-webkit-datetime-edit-fields-wrapper,
+::-webkit-datetime-edit-text,
+::-webkit-datetime-edit-minute,
+::-webkit-datetime-edit-hour-field,
+::-webkit-datetime-edit-day-field,
+::-webkit-datetime-edit-month-field,
+::-webkit-datetime-edit-year-field {
+  padding: 0;
+}
+
+::-webkit-inner-spin-button {
+  height: auto;
+}
+
+[type=search] {
+  outline-offset: -2px;
+  -webkit-appearance: textfield;
+}
+
+[type="tel"],
+[type="url"],
+[type="email"],
+[type="number"] {
+  direction: ltr;
+}
+::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+::-webkit-color-swatch-wrapper {
+  padding: 0;
+}
+
+::file-selector-button {
+  font: inherit;
+}
+
+::-webkit-file-upload-button {
+  font: inherit;
+  -webkit-appearance: button;
+}
+
+output {
+  display: inline-block;
+}
+
+iframe {
+  border: 0;
+}
+
+summary {
+  display: list-item;
+  cursor: pointer;
+}
+
+progress {
+  vertical-align: baseline;
+}
+
+[hidden] {
+  display: none !important;
+}
+/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map
new file mode 100644
index 0000000..22868ba
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap-reboot.scss","../../scss/_reboot.scss","bootstrap-reboot.css","../../scss/vendor/_rfs.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"AAAA;;;;;;EAAA;ACeA;;;EAGE,sBAAA;ACPF;;ADsBI;EANJ;IAOM,uBAAA;EClBJ;AACF;;AD+BA;EACE,SAAA;EACA,uCAAA;EEmPI,mCALI;EF5OR,uCAAA;EACA,uCAAA;EACA,2BAAA;EACA,qCAAA;EACA,mCAAA;EACA,8BAAA;EACA,6CAAA;AC5BF;;ADsCA;EACE,cAAA;EACA,cGqkB4B;EHpkB5B,8BAAA;EACA,SAAA;EACA,aGokB4B;AFvmB9B;;ADsCA;EACE,WG8a4B;AFjd9B;;AD6CA;EACE,aAAA;EACA,qBG0gB4B;EHvgB5B,gBG0gB4B;EHzgB5B,gBG0gB4B;AFtjB9B;;ADgDA;EEwMQ,iCAAA;ADpPR;ACkFI;EFtCJ;IE+MQ,iBAAA;EDvPN;AACF;;AD4CA;EEmMQ,iCAAA;AD3OR;ACyEI;EFjCJ;IE0MQ,eAAA;ED9ON;AACF;;ADwCA;EE8LQ,+BAAA;ADlOR;ACgEI;EF5BJ;IEqMQ,kBAAA;EDrON;AACF;;ADoCA;EEyLQ,iCAAA;ADzNR;ACuDI;EFvBJ;IEgMQ,iBAAA;ED5NN;AACF;;ADgCA;EEgLM,kBALI;ADvMV;;ADiCA;EE2KM,eALI;ADnMV;;ADwCA;EACE,aAAA;EACA,mBGwT0B;AF7V5B;;ADgDA;;EAEE,yCAAA;EAAA,iCAAA;EACA,YAAA;EACA,sCAAA;EAAA,8BAAA;AC7CF;;ADmDA;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;AChDF;;ADsDA;;EAEE,mBAAA;ACnDF;;ADsDA;;;EAGE,aAAA;EACA,mBAAA;ACnDF;;ADsDA;;;;EAIE,gBAAA;ACnDF;;ADsDA;EACE,gBG6Y4B;AFhc9B;;ADwDA;EACE,qBAAA;EACA,eAAA;ACrDF;;AD2DA;EACE,gBAAA;ACxDF;;ADgEA;;EAEE,mBGsX4B;AFnb9B;;ADqEA;EE4EM,kBALI;ADxIV;;ADwEA;EACE,cGkb4B;EHjb5B,yBGyb4B;AF9f9B;;AD8EA;;EAEE,kBAAA;EEwDI,iBALI;EFjDR,cAAA;EACA,wBAAA;AC3EF;;AD8EA;EAAM,eAAA;AC1EN;;AD2EA;EAAM,WAAA;ACvEN;;AD4EA;EACE,cGpNQ;EHqNR,0BGwLwC;AFjQ1C;AD2EE;EACE,cGuLsC;AFhQ1C;;ADoFE;EAEE,cAAA;EACA,qBAAA;AClFJ;;ADyFA;;;;EAIE,iGGgS4B;EDlRxB,cALI;EFPR,eAAA;EACA,2BAAA;ACtFF;;AD6FA;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;EEAI,kBALI;ADpFV;AD8FE;EELI,kBALI;EFYN,cAAA;EACA,kBAAA;AC5FJ;;ADgGA;EEZM,kBALI;EFmBR,cG1QQ;EH2QR,qBAAA;AC7FF;ADgGE;EACE,cAAA;AC9FJ;;ADkGA;EACE,sBAAA;EExBI,kBALI;EF+BR,WGvTS;EHwTT,yBG/SS;ECEP,qBAAA;AH+MJ;ADiGE;EACE,UAAA;EE/BE,cALI;EFsCN,gBGgQ0B;AF/V9B;;ADwGA;EACE,gBAAA;ACrGF;;AD2GA;;EAEE,sBAAA;ACxGF;;ADgHA;EACE,oBAAA;EACA,yBAAA;AC7GF;;ADgHA;EACE,mBG8T4B;EH7T5B,sBG6T4B;EH5T5B,cG1VS;EH2VT,iBAAA;AC7GF;;ADoHA;EAEE,mBAAA;EACA,gCAAA;AClHF;;ADqHA;;;;;;EAME,qBAAA;EACA,mBAAA;EACA,eAAA;AClHF;;AD0HA;EACE,qBAAA;ACvHF;;AD6HA;EAEE,gBAAA;AC3HF;;ADmIA;EACE,UAAA;AChIF;;ADqIA;;;;;EAKE,SAAA;EACA,oBAAA;EE9HI,kBALI;EFqIR,oBAAA;AClIF;;ADsIA;;EAEE,oBAAA;ACnIF;;ADwIA;EACE,eAAA;ACrIF;;ADwIA;EAGE,iBAAA;ACvIF;AD0IE;EACE,UAAA;ACxIJ;;AD+IA;EACE,aAAA;AC5IF;;ADoJA;;;;EAIE,0BAAA;ACjJF;ADoJI;;;;EACE,eAAA;AC/IN;;ADsJA;EACE,UAAA;EACA,kBAAA;ACnJF;;ADwJA;EACE,gBAAA;ACrJF;;AD+JA;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;AC5JF;;ADoKA;EACE,YAAA;EACA,WAAA;EACA,UAAA;EACA,qBGmJ4B;EDtWtB,iCAAA;EFsNN,oBAAA;AClKF;ACtNI;EFiXJ;IExMQ,iBAAA;EDiDN;AACF;AD+JE;EACE,YAAA;AC7JJ;;ADoKA;;;;;;;EAOE,UAAA;ACjKF;;ADoKA;EACE,YAAA;ACjKF;;AD0KA;EACE,oBAAA;EACA,6BAAA;ACvKF;;AAvXA;;;;EAIE,cAAc;AAChB;AD4iBA;EACE,wBAAA;AC/KF;;ADoLA;EACE,UAAA;ACjLF;;ADuLA;EACE,aAAA;ACpLF;;AD0LA;EACE,aAAA;EACA,0BAAA;ACvLF;;AD4LA;EACE,qBAAA;ACzLF;;AD8LA;EACE,SAAA;AC3LF;;ADkMA;EACE,kBAAA;EACA,eAAA;AC/LF;;ADuMA;EACE,wBAAA;ACpMF;;AD4MA;EACE,wBAAA;ACzMF","file":"bootstrap-reboot.rtl.css","sourcesContent":["/*!\n * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n\n@import \"functions\";\n@import \"variables\";\n// Prevent the usage of custom properties since we don't add them to `:root` in reboot\n$font-family-base: $font-family-sans-serif; // stylelint-disable-line scss/dollar-variable-default\n$font-family-code: $font-family-monospace; // stylelint-disable-line scss/dollar-variable-default\n@import \"mixins\";\n@import \"reboot\";\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n  @if $font-size-root != null {\n    font-size: var(--#{$variable-prefix}-root-font-size);\n  }\n\n  @if $enable-smooth-scroll {\n    @media (prefers-reduced-motion: no-preference) {\n      scroll-behavior: smooth;\n    }\n  }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n  margin: 0; // 1\n  font-family: var(--#{$variable-prefix}body-font-family);\n  @include font-size(var(--#{$variable-prefix}body-font-size));\n  font-weight: var(--#{$variable-prefix}body-font-weight);\n  line-height: var(--#{$variable-prefix}body-line-height);\n  color: var(--#{$variable-prefix}body-color);\n  text-align: var(--#{$variable-prefix}body-text-align);\n  background-color: var(--#{$variable-prefix}body-bg); // 2\n  -webkit-text-size-adjust: 100%; // 3\n  -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n  margin: $hr-margin-y 0;\n  color: $hr-color; // 1\n  background-color: currentColor;\n  border: 0;\n  opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n  height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n//    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n//    margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n  margin-top: 0; // 1\n  margin-bottom: $headings-margin-bottom;\n  font-family: $headings-font-family;\n  font-style: $headings-font-style;\n  font-weight: $headings-font-weight;\n  line-height: $headings-line-height;\n  color: $headings-color;\n}\n\nh1 {\n  @extend %heading;\n  @include font-size($h1-font-size);\n}\n\nh2 {\n  @extend %heading;\n  @include font-size($h2-font-size);\n}\n\nh3 {\n  @extend %heading;\n  @include font-size($h3-font-size);\n}\n\nh4 {\n  @extend %heading;\n  @include font-size($h4-font-size);\n}\n\nh5 {\n  @extend %heading;\n  @include font-size($h5-font-size);\n}\n\nh6 {\n  @extend %heading;\n  @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n  margin-top: 0;\n  margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n  text-decoration: underline dotted; // 2\n  cursor: help; // 3\n  text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n  font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n  @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n  padding: $mark-padding;\n  background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n  position: relative;\n  @include font-size($sub-sup-font-size);\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n  color: $link-color;\n  text-decoration: $link-decoration;\n\n  &:hover {\n    color: $link-hover-color;\n    text-decoration: $link-hover-decoration;\n  }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n  &,\n  &:hover {\n    color: inherit;\n    text-decoration: none;\n  }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: $font-family-code;\n  @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n  direction: ltr #{\"/* rtl:ignore */\"};\n  unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n  display: block;\n  margin-top: 0; // 1\n  margin-bottom: 1rem; // 2\n  overflow: auto; // 3\n  @include font-size($code-font-size);\n  color: $pre-color;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    @include font-size(inherit);\n    color: inherit;\n    word-break: normal;\n  }\n}\n\ncode {\n  @include font-size($code-font-size);\n  color: $code-color;\n  word-wrap: break-word;\n\n  // Streamline the style when inside anchors to avoid broken underline and more\n  a > & {\n    color: inherit;\n  }\n}\n\nkbd {\n  padding: $kbd-padding-y $kbd-padding-x;\n  @include font-size($kbd-font-size);\n  color: $kbd-color;\n  background-color: $kbd-bg;\n  @include border-radius($border-radius-sm);\n\n  kbd {\n    padding: 0;\n    @include font-size(1em);\n    font-weight: $nested-kbd-font-weight;\n  }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n  margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: $table-cell-padding-y;\n  padding-bottom: $table-cell-padding-y;\n  color: $table-caption-color;\n  text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `<td>` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n  font-weight: $table-th-font-weight; // 1\n  text-align: inherit; // 2\n  text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n  display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0; // 1\n  font-family: inherit;\n  @include font-size(inherit);\n  line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n  text-transform: none;\n}\n// Set the cursor for non-`<button>` buttons\n//\n// Details at https://github.com/twbs/bootstrap/pull/30562\n[role=\"button\"] {\n  cursor: pointer;\n}\n\nselect {\n  // Remove the inheritance of word-wrap in Safari.\n  // See https://github.com/twbs/bootstrap/issues/24990\n  word-wrap: normal;\n\n  // Undo the opacity change from Chrome\n  &:disabled {\n    opacity: 1;\n  }\n}\n\n// Remove the dropdown arrow in Chrome from inputs built with datalists.\n// See https://stackoverflow.com/a/54997118\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n//    controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\n// 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n\n  @if $enable-button-pointers {\n    &:not(:disabled) {\n      cursor: pointer; // 3\n    }\n  }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\n// 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\ntextarea {\n  resize: vertical; // 1\n}\n\n// 1. Browsers set a default `min-width: min-content;` on fieldsets,\n//    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n//    So we reset that to ensure fieldsets behave more like a standard block element.\n//    See https://github.com/twbs/bootstrap/issues/12359\n//    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n// 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\nfieldset {\n  min-width: 0; // 1\n  padding: 0; // 2\n  margin: 0; // 2\n  border: 0; // 2\n}\n\n// 1. By using `float: left`, the legend will behave like a block element.\n//    This way the border of a fieldset wraps around the legend if present.\n// 2. Fix wrapping bug.\n//    See https://github.com/twbs/bootstrap/issues/29712\n\nlegend {\n  float: left; // 1\n  width: 100%;\n  padding: 0;\n  margin-bottom: $legend-margin-bottom;\n  @include font-size($legend-font-size);\n  font-weight: $legend-font-weight;\n  line-height: inherit;\n\n  + * {\n    clear: left; // 2\n  }\n}\n\n// Fix height of inputs with a type of datetime-local, date, month, week, or time\n// See https://github.com/twbs/bootstrap/issues/18842\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n// 1. Correct the outline style in Safari.\n// 2. This overrides the extra rounded corners on search inputs in iOS so that our\n//    `.form-control` class can properly style them. Note that this cannot simply\n//    be added to `.form-control` as it's not specific enough. For details, see\n//    https://github.com/twbs/bootstrap/issues/11586.\n\n[type=\"search\"] {\n  outline-offset: -2px; // 1\n  -webkit-appearance: textfield; // 2\n}\n\n// 1. A few input types should stay LTR\n// See https://rtlstyling.com/posts/rtl-styling#form-inputs\n// 2. RTL only output\n// See https://rtlcss.com/learn/usage-guide/control-directives/#raw\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n\n// Remove the inner padding in Chrome and Safari on macOS.\n\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n// Remove padding around color pickers in webkit browsers\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n\n// Inherit font family and line height for file input buttons\n\n::file-selector-button {\n  font: inherit;\n}\n\n// 1. Change font properties to `inherit`\n// 2. Correct the inability to style clickable types in iOS and Safari.\n\n::-webkit-file-upload-button {\n  font: inherit; // 1\n  -webkit-appearance: button; // 2\n}\n\n// Correct element displays\n\noutput {\n  display: inline-block;\n}\n\n// Remove border from iframe\n\niframe {\n  border: 0;\n}\n\n// Summary\n//\n// 1. Add the correct display in all browsers\n\nsummary {\n  display: list-item; // 1\n  cursor: pointer;\n}\n\n\n// Progress\n//\n// Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\nprogress {\n  vertical-align: baseline;\n}\n\n\n// Hidden attribute\n//\n// Always hide an element with the `hidden` HTML attribute.\n\n[hidden] {\n  display: none !important;\n}\n","/*!\n * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  :root {\n    scroll-behavior: smooth;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: var(--bs-body-font-family);\n  font-size: var(--bs-body-font-size);\n  font-weight: var(--bs-body-font-weight);\n  line-height: var(--bs-body-line-height);\n  color: var(--bs-body-color);\n  text-align: var(--bs-body-text-align);\n  background-color: var(--bs-body-bg);\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n  margin: 1rem 0;\n  color: inherit;\n  background-color: currentColor;\n  border: 0;\n  opacity: 0.25;\n}\n\nhr:not([size]) {\n  height: 1px;\n}\n\nh6, h5, h4, h3, h2, h1 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\nh1 {\n  font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n  h1 {\n    font-size: 2.5rem;\n  }\n}\n\nh2 {\n  font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n  h2 {\n    font-size: 2rem;\n  }\n}\n\nh3 {\n  font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n  h3 {\n    font-size: 1.75rem;\n  }\n}\n\nh4 {\n  font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n  h4 {\n    font-size: 1.5rem;\n  }\n}\n\nh5 {\n  font-size: 1.25rem;\n}\n\nh6 {\n  font-size: 1rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-bs-original-title] {\n  text-decoration: underline dotted;\n  cursor: help;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: 0.5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall {\n  font-size: 0.875em;\n}\n\nmark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 0.75em;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\na {\n  color: #0d6efd;\n  text-decoration: underline;\n}\na:hover {\n  color: #0a58ca;\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n  color: inherit;\n  text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  font-size: 1em;\n  direction: ltr /* rtl:ignore */;\n  unicode-bidi: bidi-override;\n}\n\npre {\n  display: block;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  font-size: 0.875em;\n}\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\ncode {\n  font-size: 0.875em;\n  color: #d63384;\n  word-wrap: break-word;\n}\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 0.875em;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\nkbd kbd {\n  padding: 0;\n  font-size: 1em;\n  font-weight: 700;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  color: #6c757d;\n  text-align: left;\n}\n\nth {\n  text-align: inherit;\n  text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\nlabel {\n  display: inline-block;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n[role=button] {\n  cursor: pointer;\n}\n\nselect {\n  word-wrap: normal;\n}\nselect:disabled {\n  opacity: 1;\n}\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n  -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n  cursor: pointer;\n}\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ntextarea {\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  float: left;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 0.5rem;\n  font-size: calc(1.275rem + 0.3vw);\n  line-height: inherit;\n}\n@media (min-width: 1200px) {\n  legend {\n    font-size: 1.5rem;\n  }\n}\nlegend + * {\n  clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n[type=search] {\n  outline-offset: -2px;\n  -webkit-appearance: textfield;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n::file-selector-button {\n  font: inherit;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\niframe {\n  border: 0;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[hidden] {\n  display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */\n","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n  @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n  @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n  @error \"`#{$rfs-factor}` is not a valid  $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n  $dividend: abs($dividend);\n  $divisor: abs($divisor);\n  @if $dividend == 0 {\n    @return 0;\n  }\n  @if $divisor == 0 {\n    @error \"Cannot divide by 0\";\n  }\n  $remainder: $dividend;\n  $result: 0;\n  $factor: 10;\n  @while ($remainder > 0 and $precision >= 0) {\n    $quotient: 0;\n    @while ($remainder >= $divisor) {\n      $remainder: $remainder - $divisor;\n      $quotient: $quotient + 1;\n    }\n    $result: $result * 10 + $quotient;\n    $factor: $factor * .1;\n    $remainder: $remainder * 10;\n    $precision: $precision - 1;\n    @if ($precision < 0 and $remainder >= $divisor * 5) {\n      $result: $result + 1;\n    }\n  }\n  $result: $result * $factor * $sign;\n  $dividend-unit: unit($dividend);\n  $divisor-unit: unit($divisor);\n  $unit-map: (\n    \"px\": 1px,\n    \"rem\": 1rem,\n    \"em\": 1em,\n    \"%\": 1%\n  );\n  @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n    $result: $result * map-get($unit-map, $dividend-unit);\n  }\n  @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n  $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n  $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n  $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n  $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n  @if $rfs-two-dimensional {\n    @if $rfs-mode == max-media-query {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n    @else {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n  }\n  @else {\n    @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n      @content;\n    }\n  }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n  @if $rfs-class == disable and $rfs-mode == max-media-query {\n    // Adding an extra class increases specificity, which prevents the media query to override the property\n    &,\n    .disable-rfs &,\n    &.disable-rfs {\n      @content;\n    }\n  }\n  @else if $rfs-class == enable and $rfs-mode == min-media-query {\n    .enable-rfs &,\n    &.enable-rfs {\n      @content;\n    }\n  }\n  @else {\n    @content;\n  }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n  @if $rfs-class == enable {\n    @if $rfs-mode == min-media-query {\n      @content;\n    }\n\n    @include _rfs-media-query {\n      .enable-rfs &,\n      &.enable-rfs {\n        @content;\n      }\n    }\n  }\n  @else {\n    @if $rfs-class == disable and $rfs-mode == min-media-query {\n      .disable-rfs &,\n      &.disable-rfs {\n        @content;\n      }\n    }\n    @include _rfs-media-query {\n      @content;\n    }\n  }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      @if $unit == px {\n        // Convert to rem if needed\n        $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n      }\n      @else if $unit == rem {\n        // Convert to px if needed\n        $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n      }\n      @else {\n        // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n        $val: $val + ' ' + $value;\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n      @if not $unit or $unit != px and $unit != rem {\n        $val: $val + ' ' + $value;\n      }\n\n      @else {\n        // Remove unit from $value for calculations\n        $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n        // Only add the media query if the value is greater than the minimum value\n        @if abs($value) <= $rfs-base-value or not $enable-rfs {\n          $val: $val + ' ' +  if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n        }\n        @else {\n          // Calculate the minimum value\n          $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n          // Calculate difference between $value and the minimum value\n          $value-diff: abs($value) - $value-min;\n\n          // Base value formatting\n          $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n          // Use negative value if needed\n          $min-width: if($value < 0, -$min-width, $min-width);\n\n          // Use `vmin` if two-dimensional is enabled\n          $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n          // Calculate the variable width between 0 and $rfs-breakpoint\n          $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n          // Return the calculated value\n          $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n        }\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n  @if $values != null {\n    $val: rfs-value($values);\n    $fluidVal: rfs-fluid-value($values);\n\n    // Do not print the media query if responsive & non-responsive values are the same\n    @if $val == $fluidVal {\n      #{$property}: $val;\n    }\n    @else {\n      @include _rfs-rule {\n        #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n        // Include safari iframe resize fix if needed\n        min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n      }\n\n      @include _rfs-media-query-rule {\n        #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n      }\n    }\n  }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n  @include rfs($value);\n}\n\n@mixin padding($value) {\n  @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n  @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n  @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n  @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n  @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n  @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n  @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n  @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n  @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n  @include rfs($value, margin-left);\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white:    #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black:    #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n  \"100\": $gray-100,\n  \"200\": $gray-200,\n  \"300\": $gray-300,\n  \"400\": $gray-400,\n  \"500\": $gray-500,\n  \"600\": $gray-600,\n  \"700\": $gray-700,\n  \"800\": $gray-800,\n  \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue:    #0d6efd !default;\n$indigo:  #6610f2 !default;\n$purple:  #6f42c1 !default;\n$pink:    #d63384 !default;\n$red:     #dc3545 !default;\n$orange:  #fd7e14 !default;\n$yellow:  #ffc107 !default;\n$green:   #198754 !default;\n$teal:    #20c997 !default;\n$cyan:    #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n  \"blue\":       $blue,\n  \"indigo\":     $indigo,\n  \"purple\":     $purple,\n  \"pink\":       $pink,\n  \"red\":        $red,\n  \"orange\":     $orange,\n  \"yellow\":     $yellow,\n  \"green\":      $green,\n  \"teal\":       $teal,\n  \"cyan\":       $cyan,\n  \"white\":      $white,\n  \"gray\":       $gray-600,\n  \"gray-dark\":  $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// scss-docs-start theme-color-variables\n$primary:       $blue !default;\n$secondary:     $gray-600 !default;\n$success:       $green !default;\n$info:          $cyan !default;\n$warning:       $yellow !default;\n$danger:        $red !default;\n$light:         $gray-100 !default;\n$dark:          $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n  \"primary\":    $primary,\n  \"secondary\":  $secondary,\n  \"success\":    $success,\n  \"info\":       $info,\n  \"warning\":    $warning,\n  \"danger\":     $danger,\n  \"light\":      $light,\n  \"dark\":       $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-colors-rgb\n$theme-colors-rgb: map-loop($theme-colors, to-rgb, \"$value\") !default;\n// scss-docs-end theme-colors-rgb\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio:   4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark:      $black !default;\n$color-contrast-light:     $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n  \"blue-100\": $blue-100,\n  \"blue-200\": $blue-200,\n  \"blue-300\": $blue-300,\n  \"blue-400\": $blue-400,\n  \"blue-500\": $blue-500,\n  \"blue-600\": $blue-600,\n  \"blue-700\": $blue-700,\n  \"blue-800\": $blue-800,\n  \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n  \"indigo-100\": $indigo-100,\n  \"indigo-200\": $indigo-200,\n  \"indigo-300\": $indigo-300,\n  \"indigo-400\": $indigo-400,\n  \"indigo-500\": $indigo-500,\n  \"indigo-600\": $indigo-600,\n  \"indigo-700\": $indigo-700,\n  \"indigo-800\": $indigo-800,\n  \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n  \"purple-100\": $purple-200,\n  \"purple-200\": $purple-100,\n  \"purple-300\": $purple-300,\n  \"purple-400\": $purple-400,\n  \"purple-500\": $purple-500,\n  \"purple-600\": $purple-600,\n  \"purple-700\": $purple-700,\n  \"purple-800\": $purple-800,\n  \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n  \"pink-100\": $pink-100,\n  \"pink-200\": $pink-200,\n  \"pink-300\": $pink-300,\n  \"pink-400\": $pink-400,\n  \"pink-500\": $pink-500,\n  \"pink-600\": $pink-600,\n  \"pink-700\": $pink-700,\n  \"pink-800\": $pink-800,\n  \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n  \"red-100\": $red-100,\n  \"red-200\": $red-200,\n  \"red-300\": $red-300,\n  \"red-400\": $red-400,\n  \"red-500\": $red-500,\n  \"red-600\": $red-600,\n  \"red-700\": $red-700,\n  \"red-800\": $red-800,\n  \"red-900\": $red-900\n) !default;\n\n$oranges: (\n  \"orange-100\": $orange-100,\n  \"orange-200\": $orange-200,\n  \"orange-300\": $orange-300,\n  \"orange-400\": $orange-400,\n  \"orange-500\": $orange-500,\n  \"orange-600\": $orange-600,\n  \"orange-700\": $orange-700,\n  \"orange-800\": $orange-800,\n  \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n  \"yellow-100\": $yellow-100,\n  \"yellow-200\": $yellow-200,\n  \"yellow-300\": $yellow-300,\n  \"yellow-400\": $yellow-400,\n  \"yellow-500\": $yellow-500,\n  \"yellow-600\": $yellow-600,\n  \"yellow-700\": $yellow-700,\n  \"yellow-800\": $yellow-800,\n  \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n  \"green-100\": $green-100,\n  \"green-200\": $green-200,\n  \"green-300\": $green-300,\n  \"green-400\": $green-400,\n  \"green-500\": $green-500,\n  \"green-600\": $green-600,\n  \"green-700\": $green-700,\n  \"green-800\": $green-800,\n  \"green-900\": $green-900\n) !default;\n\n$teals: (\n  \"teal-100\": $teal-100,\n  \"teal-200\": $teal-200,\n  \"teal-300\": $teal-300,\n  \"teal-400\": $teal-400,\n  \"teal-500\": $teal-500,\n  \"teal-600\": $teal-600,\n  \"teal-700\": $teal-700,\n  \"teal-800\": $teal-800,\n  \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n  \"cyan-100\": $cyan-100,\n  \"cyan-200\": $cyan-200,\n  \"cyan-300\": $cyan-300,\n  \"cyan-400\": $cyan-400,\n  \"cyan-500\": $cyan-500,\n  \"cyan-600\": $cyan-600,\n  \"cyan-700\": $cyan-700,\n  \"cyan-800\": $cyan-800,\n  \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              false !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-cssgrid:              false !default;\n$enable-button-pointers:      true !default;\n$enable-rfs:                  true !default;\n$enable-validation-icons:     true !default;\n$enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities:  true !default;\n\n// Prefix for :root CSS variables\n\n$variable-prefix:             bs- !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg:                   $white !default;\n$body-color:                $gray-900 !default;\n$body-text-align:           null !default;\n\n// Utilities maps\n//\n// Extends the default `$theme-colors` maps to help create our utilities.\n\n// scss-docs-start utilities-colors\n$utilities-colors: map-merge(\n  $theme-colors-rgb,\n  (\n    \"black\": to-rgb($black),\n    \"white\": to-rgb($white),\n    \"body\":  to-rgb($body-color)\n  )\n) !default;\n// scss-docs-end utilities-colors\n\n// scss-docs-start utilities-text-colors\n$utilities-text-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"text\") !default;\n// scss-docs-end utilities-text-colors\n\n// scss-docs-start utilities-bg-colors\n$utilities-bg-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"bg\") !default;\n// scss-docs-end utilities-bg-colors\n\n// Links\n//\n// Style anchor elements.\n\n$link-color:                              $primary !default;\n$link-decoration:                         underline !default;\n$link-shade-percentage:                   20% !default;\n$link-hover-color:                        shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration:                   null !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 992px,\n  xl: 1200px,\n  xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1140px,\n  xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns:                12 !default;\n$grid-gutter-width:           1.5rem !default;\n$grid-row-columns:            6 !default;\n\n$gutters: $spacers !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width * .5 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n\n$border-color:                $gray-300 !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius:               .25rem !default;\n$border-radius-sm:            .2rem !default;\n$border-radius-lg:            .3rem !default;\n$border-radius-pill:          50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow:                  0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm:               0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg:               0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset:            inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color:      $white !default;\n$component-active-bg:         $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width:                 .3em !default;\n$caret-vertical-align:        $caret-width * .85 !default;\n$caret-spacing:               $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"1x1\": 100%,\n  \"4x3\": calc(3 / 4 * 100%),\n  \"16x9\": calc(9 / 16 * 100%),\n  \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif:      system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base:            var(--#{$variable-prefix}font-sans-serif) !default;\n$font-family-code:            var(--#{$variable-prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root:              null !default;\n$font-size-base:              1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm:                $font-size-base * .875 !default;\n$font-size-lg:                $font-size-base * 1.25 !default;\n\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n\n$h1-font-size:                $font-size-base * 2.5 !default;\n$h2-font-size:                $font-size-base * 2 !default;\n$h3-font-size:                $font-size-base * 1.75 !default;\n$h4-font-size:                $font-size-base * 1.5 !default;\n$h5-font-size:                $font-size-base * 1.25 !default;\n$h6-font-size:                $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n  1: $h1-font-size,\n  2: $h2-font-size,\n  3: $h3-font-size,\n  4: $h4-font-size,\n  5: $h5-font-size,\n  6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n  1: 5rem,\n  2: 4.5rem,\n  3: 4rem,\n  4: 3.5rem,\n  5: 3rem,\n  6: 2.5rem\n) !default;\n\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size:              $font-size-base * 1.25 !default;\n$lead-font-weight:            300 !default;\n\n$small-font-size:             .875em !default;\n\n$sub-sup-font-size:           .75em !default;\n\n$text-muted:                  $gray-600 !default;\n\n$initialism-font-size:        $small-font-size !default;\n\n$blockquote-margin-y:         $spacer !default;\n$blockquote-font-size:        $font-size-base * 1.25 !default;\n$blockquote-footer-color:     $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y:                 $spacer !default;\n$hr-color:                    inherit !default;\n$hr-height:                   $border-width !default;\n$hr-opacity:                  .25 !default;\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$mark-padding:                .2em !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n$nested-kbd-font-weight:      $font-weight-bold !default;\n\n$list-inline-padding:         .5rem !default;\n\n$mark-bg:                     #fcf8e3 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y:        .5rem !default;\n$table-cell-padding-x:        .5rem !default;\n$table-cell-padding-y-sm:     .25rem !default;\n$table-cell-padding-x-sm:     .25rem !default;\n\n$table-cell-vertical-align:   top !default;\n\n$table-color:                 $body-color !default;\n$table-bg:                    transparent !default;\n$table-accent-bg:             transparent !default;\n\n$table-th-font-weight:        null !default;\n\n$table-striped-color:         $table-color !default;\n$table-striped-bg-factor:     .05 !default;\n$table-striped-bg:            rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color:          $table-color !default;\n$table-active-bg-factor:      .1 !default;\n$table-active-bg:             rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color:           $table-color !default;\n$table-hover-bg-factor:       .075 !default;\n$table-hover-bg:              rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor:         .1 !default;\n$table-border-width:          $border-width !default;\n$table-border-color:          $border-color !default;\n\n$table-striped-order:         odd !default;\n\n$table-group-separator-color: currentColor !default;\n\n$table-caption-color:         $text-muted !default;\n\n$table-bg-scale:              -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n  \"primary\":    shift-color($primary, $table-bg-scale),\n  \"secondary\":  shift-color($secondary, $table-bg-scale),\n  \"success\":    shift-color($success, $table-bg-scale),\n  \"info\":       shift-color($info, $table-bg-scale),\n  \"warning\":    shift-color($warning, $table-bg-scale),\n  \"danger\":     shift-color($danger, $table-bg-scale),\n  \"light\":      $light,\n  \"dark\":       $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y:         .375rem !default;\n$input-btn-padding-x:         .75rem !default;\n$input-btn-font-family:       null !default;\n$input-btn-font-size:         $font-size-base !default;\n$input-btn-line-height:       $line-height-base !default;\n\n$input-btn-focus-width:         .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color:         rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur:          0 !default;\n$input-btn-focus-box-shadow:    0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm:      .25rem !default;\n$input-btn-padding-x-sm:      .5rem !default;\n$input-btn-font-size-sm:      $font-size-sm !default;\n\n$input-btn-padding-y-lg:      .5rem !default;\n$input-btn-padding-x-lg:      1rem !default;\n$input-btn-font-size-lg:      $font-size-lg !default;\n\n$input-btn-border-width:      $border-width !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y:               $input-btn-padding-y !default;\n$btn-padding-x:               $input-btn-padding-x !default;\n$btn-font-family:             $input-btn-font-family !default;\n$btn-font-size:               $input-btn-font-size !default;\n$btn-line-height:             $input-btn-line-height !default;\n$btn-white-space:             null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm:            $input-btn-padding-y-sm !default;\n$btn-padding-x-sm:            $input-btn-padding-x-sm !default;\n$btn-font-size-sm:            $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg:            $input-btn-padding-y-lg !default;\n$btn-padding-x-lg:            $input-btn-padding-x-lg !default;\n$btn-font-size-lg:            $input-btn-font-size-lg !default;\n\n$btn-border-width:            $input-btn-border-width !default;\n\n$btn-font-weight:             $font-weight-normal !default;\n$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width:             $input-btn-focus-width !default;\n$btn-focus-box-shadow:        $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity:        .65 !default;\n$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color:              $link-color !default;\n$btn-link-hover-color:        $link-hover-color !default;\n$btn-link-disabled-color:     $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius:           $border-radius !default;\n$btn-border-radius-sm:        $border-radius-sm !default;\n$btn-border-radius-lg:        $border-radius-lg !default;\n\n$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount:       15% !default;\n$btn-hover-bg-tint-amount:        15% !default;\n$btn-hover-border-shade-amount:   20% !default;\n$btn-hover-border-tint-amount:    10% !default;\n$btn-active-bg-shade-amount:      20% !default;\n$btn-active-bg-tint-amount:       20% !default;\n$btn-active-border-shade-amount:  25% !default;\n$btn-active-border-tint-amount:   10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top:                  .25rem !default;\n$form-text-font-size:                   $small-font-size !default;\n$form-text-font-style:                  null !default;\n$form-text-font-weight:                 null !default;\n$form-text-color:                       $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom:              .5rem !default;\n$form-label-font-size:                  null !default;\n$form-label-font-style:                 null !default;\n$form-label-font-weight:                null !default;\n$form-label-color:                      null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y:                       $input-btn-padding-y !default;\n$input-padding-x:                       $input-btn-padding-x !default;\n$input-font-family:                     $input-btn-font-family !default;\n$input-font-size:                       $input-btn-font-size !default;\n$input-font-weight:                     $font-weight-base !default;\n$input-line-height:                     $input-btn-line-height !default;\n\n$input-padding-y-sm:                    $input-btn-padding-y-sm !default;\n$input-padding-x-sm:                    $input-btn-padding-x-sm !default;\n$input-font-size-sm:                    $input-btn-font-size-sm !default;\n\n$input-padding-y-lg:                    $input-btn-padding-y-lg !default;\n$input-padding-x-lg:                    $input-btn-padding-x-lg !default;\n$input-font-size-lg:                    $input-btn-font-size-lg !default;\n\n$input-bg:                              $body-bg !default;\n$input-disabled-bg:                     $gray-200 !default;\n$input-disabled-border-color:           null !default;\n\n$input-color:                           $body-color !default;\n$input-border-color:                    $gray-400 !default;\n$input-border-width:                    $input-btn-border-width !default;\n$input-box-shadow:                      $box-shadow-inset !default;\n\n$input-border-radius:                   $border-radius !default;\n$input-border-radius-sm:                $border-radius-sm !default;\n$input-border-radius-lg:                $border-radius-lg !default;\n\n$input-focus-bg:                        $input-bg !default;\n$input-focus-border-color:              tint-color($component-active-bg, 50%) !default;\n$input-focus-color:                     $input-color !default;\n$input-focus-width:                     $input-btn-focus-width !default;\n$input-focus-box-shadow:                $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color:               $gray-600 !default;\n$input-plaintext-color:                 $body-color !default;\n\n$input-height-border:                   $input-border-width * 2 !default;\n\n$input-height-inner:                    add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half:               add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter:            add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height:                          add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm:                       add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg:                       add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width:                      3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width:                  1em !default;\n$form-check-min-height:                   $font-size-base * $line-height-base !default;\n$form-check-padding-start:                $form-check-input-width + .5em !default;\n$form-check-margin-bottom:                .125rem !default;\n$form-check-label-color:                  null !default;\n$form-check-label-cursor:                 null !default;\n$form-check-transition:                   null !default;\n\n$form-check-input-active-filter:          brightness(90%) !default;\n\n$form-check-input-bg:                     $input-bg !default;\n$form-check-input-border:                 1px solid rgba($black, .25) !default;\n$form-check-input-border-radius:          .25em !default;\n$form-check-radio-border-radius:          50% !default;\n$form-check-input-focus-border:           $input-focus-border-color !default;\n$form-check-input-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color:          $component-active-color !default;\n$form-check-input-checked-bg-color:       $component-active-bg !default;\n$form-check-input-checked-border-color:   $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-checked-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/></svg>\") !default;\n$form-check-radio-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$form-check-input-checked-color}'/></svg>\") !default;\n\n$form-check-input-indeterminate-color:          $component-active-color !default;\n$form-check-input-indeterminate-bg-color:       $component-active-bg !default;\n$form-check-input-indeterminate-border-color:   $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-indeterminate-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>\") !default;\n\n$form-check-input-disabled-opacity:        .5 !default;\n$form-check-label-disabled-opacity:        $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity:    $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end:    1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color:               rgba(0, 0, 0, .25) !default;\n$form-switch-width:               2em !default;\n$form-switch-padding-start:       $form-switch-width + .5em !default;\n$form-switch-bg-image:            url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>\") !default;\n$form-switch-border-radius:       $form-switch-width !default;\n$form-switch-transition:          background-position .15s ease-in-out !default;\n\n$form-switch-focus-color:         $input-focus-border-color !default;\n$form-switch-focus-bg-image:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-focus-color}'/></svg>\") !default;\n\n$form-switch-checked-color:       $component-active-color !default;\n$form-switch-checked-bg-image:    url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y:           $input-padding-y !default;\n$input-group-addon-padding-x:           $input-padding-x !default;\n$input-group-addon-font-weight:         $input-font-weight !default;\n$input-group-addon-color:               $input-color !default;\n$input-group-addon-bg:                  $gray-200 !default;\n$input-group-addon-border-color:        $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y:             $input-padding-y !default;\n$form-select-padding-x:             $input-padding-x !default;\n$form-select-font-family:           $input-font-family !default;\n$form-select-font-size:             $input-font-size !default;\n$form-select-indicator-padding:     $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight:           $input-font-weight !default;\n$form-select-line-height:           $input-line-height !default;\n$form-select-color:                 $input-color !default;\n$form-select-bg:                    $input-bg !default;\n$form-select-disabled-color:        null !default;\n$form-select-disabled-bg:           $gray-200 !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position:           right $form-select-padding-x center !default;\n$form-select-bg-size:               16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color:       $gray-800 !default;\n$form-select-indicator:             url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/></svg>\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position:    center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size:        $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width:        $input-border-width !default;\n$form-select-border-color:        $input-border-color !default;\n$form-select-border-radius:       $border-radius !default;\n$form-select-box-shadow:          $box-shadow-inset !default;\n\n$form-select-focus-border-color:  $input-focus-border-color !default;\n$form-select-focus-width:         $input-focus-width !default;\n$form-select-focus-box-shadow:    0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm:        $input-padding-y-sm !default;\n$form-select-padding-x-sm:        $input-padding-x-sm !default;\n$form-select-font-size-sm:        $input-font-size-sm !default;\n\n$form-select-padding-y-lg:        $input-padding-y-lg !default;\n$form-select-padding-x-lg:        $input-padding-x-lg !default;\n$form-select-font-size-lg:        $input-font-size-lg !default;\n\n$form-select-transition:          $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width:          100% !default;\n$form-range-track-height:         .5rem !default;\n$form-range-track-cursor:         pointer !default;\n$form-range-track-bg:             $gray-300 !default;\n$form-range-track-border-radius:  1rem !default;\n$form-range-track-box-shadow:     $box-shadow-inset !default;\n\n$form-range-thumb-width:                   1rem !default;\n$form-range-thumb-height:                  $form-range-thumb-width !default;\n$form-range-thumb-bg:                      $component-active-bg !default;\n$form-range-thumb-border:                  0 !default;\n$form-range-thumb-border-radius:           1rem !default;\n$form-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width:  $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg:               tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg:             $gray-500 !default;\n$form-range-thumb-transition:              background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color:          $input-color !default;\n$form-file-button-bg:             $input-group-addon-bg !default;\n$form-file-button-hover-bg:       shade-color($form-file-button-bg, 5%) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height:            add(3.5rem, $input-height-border) !default;\n$form-floating-line-height:       1.25 !default;\n$form-floating-padding-x:         $input-padding-x !default;\n$form-floating-padding-y:         1rem !default;\n$form-floating-input-padding-t:   1.625rem !default;\n$form-floating-input-padding-b:   .625rem !default;\n$form-floating-label-opacity:     .65 !default;\n$form-floating-label-transform:   scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-transition:        opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top:          $form-text-margin-top !default;\n$form-feedback-font-size:           $form-text-font-size !default;\n$form-feedback-font-style:          $form-text-font-style !default;\n$form-feedback-valid-color:         $success !default;\n$form-feedback-invalid-color:       $danger !default;\n\n$form-feedback-icon-valid-color:    $form-feedback-valid-color !default;\n$form-feedback-icon-valid:          url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>\") !default;\n$form-feedback-icon-invalid-color:  $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid:        url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n  \"valid\": (\n    \"color\": $form-feedback-valid-color,\n    \"icon\": $form-feedback-icon-valid\n  ),\n  \"invalid\": (\n    \"color\": $form-feedback-invalid-color,\n    \"icon\": $form-feedback-icon-invalid\n  )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown:                   1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-modal-backdrop:             1050 !default;\n$zindex-modal:                      1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n// scss-docs-end zindex-stack\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y:                .5rem !default;\n$nav-link-padding-x:                1rem !default;\n$nav-link-font-size:                null !default;\n$nav-link-font-weight:              null !default;\n$nav-link-color:                    $link-color !default;\n$nav-link-hover-color:              $link-hover-color !default;\n$nav-link-transition:               color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color:           $gray-600 !default;\n\n$nav-tabs-border-color:             $gray-300 !default;\n$nav-tabs-border-width:             $border-width !default;\n$nav-tabs-border-radius:            $border-radius !default;\n$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color:        $gray-700 !default;\n$nav-tabs-link-active-bg:           $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius:           $border-radius !default;\n$nav-pills-link-active-color:       $component-active-color !default;\n$nav-pills-link-active-bg:          $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y:                  $spacer * .5 !default;\n$navbar-padding-x:                  null !default;\n\n$navbar-nav-link-padding-x:         .5rem !default;\n\n$navbar-brand-font-size:            $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height:                   $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end:           1rem !default;\n\n$navbar-toggler-padding-y:          .25rem !default;\n$navbar-toggler-padding-x:          .75rem !default;\n$navbar-toggler-font-size:          $font-size-lg !default;\n$navbar-toggler-border-radius:      $btn-border-radius !default;\n$navbar-toggler-focus-width:        $btn-focus-width !default;\n$navbar-toggler-transition:         box-shadow .15s ease-in-out !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-theme-variables\n$navbar-dark-color:                 rgba($white, .55) !default;\n$navbar-dark-hover-color:           rgba($white, .75) !default;\n$navbar-dark-active-color:          $white !default;\n$navbar-dark-disabled-color:        rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-dark-toggler-border-color:  rgba($white, .1) !default;\n\n$navbar-light-color:                rgba($black, .55) !default;\n$navbar-light-hover-color:          rgba($black, .7) !default;\n$navbar-light-active-color:         rgba($black, .9) !default;\n$navbar-light-disabled-color:       rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color:                $navbar-light-active-color !default;\n$navbar-light-brand-hover-color:          $navbar-light-active-color !default;\n$navbar-dark-brand-color:                 $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color:           $navbar-dark-active-color !default;\n// scss-docs-end navbar-theme-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width:                10rem !default;\n$dropdown-padding-x:                0 !default;\n$dropdown-padding-y:                .5rem !default;\n$dropdown-spacer:                   .125rem !default;\n$dropdown-font-size:                $font-size-base !default;\n$dropdown-color:                    $body-color !default;\n$dropdown-bg:                       $white !default;\n$dropdown-border-color:             rgba($black, .15) !default;\n$dropdown-border-radius:            $border-radius !default;\n$dropdown-border-width:             $border-width !default;\n$dropdown-inner-border-radius:      subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg:               $dropdown-border-color !default;\n$dropdown-divider-margin-y:         $spacer * .5 !default;\n$dropdown-box-shadow:               $box-shadow !default;\n\n$dropdown-link-color:               $gray-900 !default;\n$dropdown-link-hover-color:         shade-color($gray-900, 10%) !default;\n$dropdown-link-hover-bg:            $gray-200 !default;\n\n$dropdown-link-active-color:        $component-active-color !default;\n$dropdown-link-active-bg:           $component-active-bg !default;\n\n$dropdown-link-disabled-color:      $gray-500 !default;\n\n$dropdown-item-padding-y:           $spacer * .25 !default;\n$dropdown-item-padding-x:           $spacer !default;\n\n$dropdown-header-color:             $gray-600 !default;\n$dropdown-header-padding:           $dropdown-padding-y $dropdown-item-padding-x !default;\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color:               $gray-300 !default;\n$dropdown-dark-bg:                  $gray-800 !default;\n$dropdown-dark-border-color:        $dropdown-border-color !default;\n$dropdown-dark-divider-bg:          $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow:          null !default;\n$dropdown-dark-link-color:          $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color:    $white !default;\n$dropdown-dark-link-hover-bg:       rgba($white, .15) !default;\n$dropdown-dark-link-active-color:   $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg:      $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color:        $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y:              .375rem !default;\n$pagination-padding-x:              .75rem !default;\n$pagination-padding-y-sm:           .25rem !default;\n$pagination-padding-x-sm:           .5rem !default;\n$pagination-padding-y-lg:           .75rem !default;\n$pagination-padding-x-lg:           1.5rem !default;\n\n$pagination-color:                  $link-color !default;\n$pagination-bg:                     $white !default;\n$pagination-border-width:           $border-width !default;\n$pagination-border-radius:          $border-radius !default;\n$pagination-margin-start:           -$pagination-border-width !default;\n$pagination-border-color:           $gray-300 !default;\n\n$pagination-focus-color:            $link-hover-color !default;\n$pagination-focus-bg:               $gray-200 !default;\n$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n$pagination-focus-outline:          0 !default;\n\n$pagination-hover-color:            $link-hover-color !default;\n$pagination-hover-bg:               $gray-200 !default;\n$pagination-hover-border-color:     $gray-300 !default;\n\n$pagination-active-color:           $component-active-color !default;\n$pagination-active-bg:              $component-active-bg !default;\n$pagination-active-border-color:    $pagination-active-bg !default;\n\n$pagination-disabled-color:         $gray-600 !default;\n$pagination-disabled-bg:            $white !default;\n$pagination-disabled-border-color:  $gray-300 !default;\n\n$pagination-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm:       $border-radius-sm !default;\n$pagination-border-radius-lg:       $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max:           .5 !default;\n$placeholder-opacity-min:           .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y:                     $spacer !default;\n$card-spacer-x:                     $spacer !default;\n$card-title-spacer-y:               $spacer * .5 !default;\n$card-border-width:                 $border-width !default;\n$card-border-color:                 rgba($black, .125) !default;\n$card-border-radius:                $border-radius !default;\n$card-box-shadow:                   null !default;\n$card-inner-border-radius:          subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y:                $card-spacer-y * .5 !default;\n$card-cap-padding-x:                $card-spacer-x !default;\n$card-cap-bg:                       rgba($black, .03) !default;\n$card-cap-color:                    null !default;\n$card-height:                       null !default;\n$card-color:                        null !default;\n$card-bg:                           $white !default;\n$card-img-overlay-padding:          $spacer !default;\n$card-group-margin:                 $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y:                     1rem !default;\n$accordion-padding-x:                     1.25rem !default;\n$accordion-color:                         $body-color !default;\n$accordion-bg:                            $body-bg !default;\n$accordion-border-width:                  $border-width !default;\n$accordion-border-color:                  rgba($black, .125) !default;\n$accordion-border-radius:                 $border-radius !default;\n$accordion-inner-border-radius:           subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y:                $accordion-padding-y !default;\n$accordion-body-padding-x:                $accordion-padding-x !default;\n\n$accordion-button-padding-y:              $accordion-padding-y !default;\n$accordion-button-padding-x:              $accordion-padding-x !default;\n$accordion-button-color:                  $accordion-color !default;\n$accordion-button-bg:                     $accordion-bg !default;\n$accordion-transition:                    $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg:              tint-color($component-active-bg, 90%) !default;\n$accordion-button-active-color:           shade-color($primary, 10%) !default;\n\n$accordion-button-focus-border-color:     $input-focus-border-color !default;\n$accordion-button-focus-box-shadow:       $btn-focus-box-shadow !default;\n\n$accordion-icon-width:                    1.25rem !default;\n$accordion-icon-color:                    $accordion-button-color !default;\n$accordion-icon-active-color:             $accordion-button-active-color !default;\n$accordion-icon-transition:               transform .2s ease-in-out !default;\n$accordion-icon-transform:                rotate(-180deg) !default;\n\n$accordion-button-icon:         url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n$accordion-button-active-icon:  url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size:                 $font-size-sm !default;\n$tooltip-max-width:                 200px !default;\n$tooltip-color:                     $white !default;\n$tooltip-bg:                        $black !default;\n$tooltip-border-radius:             $border-radius !default;\n$tooltip-opacity:                   .9 !default;\n$tooltip-padding-y:                 $spacer * .25 !default;\n$tooltip-padding-x:                 $spacer * .5 !default;\n$tooltip-margin:                    0 !default;\n\n$tooltip-arrow-width:               .8rem !default;\n$tooltip-arrow-height:              .4rem !default;\n$tooltip-arrow-color:               $tooltip-bg !default;\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y:     $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x:     $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size:     $tooltip-font-size !default;\n$form-feedback-tooltip-line-height:   null !default;\n$form-feedback-tooltip-opacity:       $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size:                 $font-size-sm !default;\n$popover-bg:                        $white !default;\n$popover-max-width:                 276px !default;\n$popover-border-width:              $border-width !default;\n$popover-border-color:              rgba($black, .2) !default;\n$popover-border-radius:             $border-radius-lg !default;\n$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow:                $box-shadow !default;\n\n$popover-header-bg:                 shade-color($popover-bg, 6%) !default;\n$popover-header-color:              $headings-color !default;\n$popover-header-padding-y:          .5rem !default;\n$popover-header-padding-x:          $spacer !default;\n\n$popover-body-color:                $body-color !default;\n$popover-body-padding-y:            $spacer !default;\n$popover-body-padding-x:            $spacer !default;\n\n$popover-arrow-width:               1rem !default;\n$popover-arrow-height:              .5rem !default;\n$popover-arrow-color:               $popover-bg !default;\n\n$popover-arrow-outer-color:         fade-in($popover-border-color, .05) !default;\n// scss-docs-end popover-variables\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width:                   350px !default;\n$toast-padding-x:                   .75rem !default;\n$toast-padding-y:                   .5rem !default;\n$toast-font-size:                   .875rem !default;\n$toast-color:                       null !default;\n$toast-background-color:            rgba($white, .85) !default;\n$toast-border-width:                1px !default;\n$toast-border-color:                rgba(0, 0, 0, .1) !default;\n$toast-border-radius:               $border-radius !default;\n$toast-box-shadow:                  $box-shadow !default;\n$toast-spacing:                     $container-padding-x !default;\n\n$toast-header-color:                $gray-600 !default;\n$toast-header-background-color:     rgba($white, .85) !default;\n$toast-header-border-color:         rgba(0, 0, 0, .05) !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size:                   .75em !default;\n$badge-font-weight:                 $font-weight-bold !default;\n$badge-color:                       $white !default;\n$badge-padding-y:                   .35em !default;\n$badge-padding-x:                   .65em !default;\n$badge-border-radius:               $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding:               $spacer !default;\n\n$modal-footer-margin-between:       .5rem !default;\n\n$modal-dialog-margin:               .5rem !default;\n$modal-dialog-margin-y-sm-up:       1.75rem !default;\n\n$modal-title-line-height:           $line-height-base !default;\n\n$modal-content-color:               null !default;\n$modal-content-bg:                  $white !default;\n$modal-content-border-color:        rgba($black, .2) !default;\n$modal-content-border-width:        $border-width !default;\n$modal-content-border-radius:       $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs:       $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up:    $box-shadow !default;\n\n$modal-backdrop-bg:                 $black !default;\n$modal-backdrop-opacity:            .5 !default;\n$modal-header-border-color:         $border-color !default;\n$modal-footer-border-color:         $modal-header-border-color !default;\n$modal-header-border-width:         $modal-content-border-width !default;\n$modal-footer-border-width:         $modal-header-border-width !default;\n$modal-header-padding-y:            $modal-inner-padding !default;\n$modal-header-padding-x:            $modal-inner-padding !default;\n$modal-header-padding:              $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-sm:                          300px !default;\n$modal-md:                          500px !default;\n$modal-lg:                          800px !default;\n$modal-xl:                          1140px !default;\n\n$modal-fade-transform:              translate(0, -50px) !default;\n$modal-show-transform:              none !default;\n$modal-transition:                  transform .3s ease-out !default;\n$modal-scale-transform:             scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y:               $spacer !default;\n$alert-padding-x:               $spacer !default;\n$alert-margin-bottom:           1rem !default;\n$alert-border-radius:           $border-radius !default;\n$alert-link-font-weight:        $font-weight-bold !default;\n$alert-border-width:            $border-width !default;\n$alert-bg-scale:                -80% !default;\n$alert-border-scale:            -70% !default;\n$alert-color-scale:             40% !default;\n$alert-dismissible-padding-r:   $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height:                   1rem !default;\n$progress-font-size:                $font-size-base * .75 !default;\n$progress-bg:                       $gray-200 !default;\n$progress-border-radius:            $border-radius !default;\n$progress-box-shadow:               $box-shadow-inset !default;\n$progress-bar-color:                $white !default;\n$progress-bar-bg:                   $primary !default;\n$progress-bar-animation-timing:     1s linear infinite !default;\n$progress-bar-transition:           width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color:                  $gray-900 !default;\n$list-group-bg:                     $white !default;\n$list-group-border-color:           rgba($black, .125) !default;\n$list-group-border-width:           $border-width !default;\n$list-group-border-radius:          $border-radius !default;\n\n$list-group-item-padding-y:         $spacer * .5 !default;\n$list-group-item-padding-x:         $spacer !default;\n$list-group-item-bg-scale:          -80% !default;\n$list-group-item-color-scale:       40% !default;\n\n$list-group-hover-bg:               $gray-100 !default;\n$list-group-active-color:           $component-active-color !default;\n$list-group-active-bg:              $component-active-bg !default;\n$list-group-active-border-color:    $list-group-active-bg !default;\n\n$list-group-disabled-color:         $gray-600 !default;\n$list-group-disabled-bg:            $list-group-bg !default;\n\n$list-group-action-color:           $gray-700 !default;\n$list-group-action-hover-color:     $list-group-action-color !default;\n\n$list-group-action-active-color:    $body-color !default;\n$list-group-action-active-bg:       $gray-200 !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding:                 .25rem !default;\n$thumbnail-bg:                      $body-bg !default;\n$thumbnail-border-width:            $border-width !default;\n$thumbnail-border-color:            $gray-300 !default;\n$thumbnail-border-radius:           $border-radius !default;\n$thumbnail-box-shadow:              $box-shadow-sm !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size:          $small-font-size !default;\n$figure-caption-color:              $gray-600 !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size:              null !default;\n$breadcrumb-padding-y:              0 !default;\n$breadcrumb-padding-x:              0 !default;\n$breadcrumb-item-padding-x:         .5rem !default;\n$breadcrumb-margin-bottom:          1rem !default;\n$breadcrumb-bg:                     null !default;\n$breadcrumb-divider-color:          $gray-600 !default;\n$breadcrumb-active-color:           $gray-600 !default;\n$breadcrumb-divider:                quote(\"/\") !default;\n$breadcrumb-divider-flipped:        $breadcrumb-divider !default;\n$breadcrumb-border-radius:          null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color:             $white !default;\n$carousel-control-width:             15% !default;\n$carousel-control-opacity:           .5 !default;\n$carousel-control-hover-opacity:     .9 !default;\n$carousel-control-transition:        opacity .15s ease !default;\n\n$carousel-indicator-width:           30px !default;\n$carousel-indicator-height:          3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer:          3px !default;\n$carousel-indicator-opacity:         .5 !default;\n$carousel-indicator-active-bg:       $white !default;\n$carousel-indicator-active-opacity:  1 !default;\n$carousel-indicator-transition:      opacity .6s ease !default;\n\n$carousel-caption-width:             70% !default;\n$carousel-caption-color:             $white !default;\n$carousel-caption-padding-y:         1.25rem !default;\n$carousel-caption-spacer:            1.25rem !default;\n\n$carousel-control-icon-width:        2rem !default;\n\n$carousel-control-prev-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>\") !default;\n$carousel-control-next-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n\n$carousel-transition-duration:       .6s !default;\n$carousel-transition:                transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n$carousel-dark-indicator-active-bg:  $black !default;\n$carousel-dark-caption-color:        $black !default;\n$carousel-dark-control-icon-filter:  invert(1) grayscale(100) !default;\n// scss-docs-end carousel-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width:           2rem !default;\n$spinner-height:          $spinner-width !default;\n$spinner-vertical-align:  -.125em !default;\n$spinner-border-width:    .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm:        1rem !default;\n$spinner-height-sm:       $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width:            1em !default;\n$btn-close-height:           $btn-close-width !default;\n$btn-close-padding-x:        .25em !default;\n$btn-close-padding-y:        $btn-close-padding-x !default;\n$btn-close-color:            $black !default;\n$btn-close-bg:               url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/></svg>\") !default;\n$btn-close-focus-shadow:     $input-btn-focus-box-shadow !default;\n$btn-close-opacity:          .5 !default;\n$btn-close-hover-opacity:    .75 !default;\n$btn-close-focus-opacity:    1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter:     invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y:               $modal-inner-padding !default;\n$offcanvas-padding-x:               $modal-inner-padding !default;\n$offcanvas-horizontal-width:        400px !default;\n$offcanvas-vertical-height:         30vh !default;\n$offcanvas-transition-duration:     .3s !default;\n$offcanvas-border-color:            $modal-content-border-color !default;\n$offcanvas-border-width:            $modal-content-border-width !default;\n$offcanvas-title-line-height:       $modal-title-line-height !default;\n$offcanvas-bg-color:                $modal-content-bg !default;\n$offcanvas-color:                   $modal-content-color !default;\n$offcanvas-box-shadow:              $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg:             $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity:        $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size:                    $small-font-size !default;\n$code-color:                        $pink !default;\n\n$kbd-padding-y:                     .2rem !default;\n$kbd-padding-x:                     .4rem !default;\n$kbd-font-size:                     $code-font-size !default;\n$kbd-color:                         $white !default;\n$kbd-bg:                            $gray-900 !default;\n\n$pre-color:                         null !default;\n","// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if type-of($value) == number {\n      $return: append($return, max($value, 0));\n    } @else {\n      $return: append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css
new file mode 100644
index 0000000..35eb069
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css
@@ -0,0 +1,8 @@
+/*!
+ * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
+ */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-right:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-right:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:right}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:right;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:right}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}[type=email],[type=number],[type=tel],[type=url]{direction:ltr}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}
+/*# sourceMappingURL=bootstrap-reboot.rtl.min.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map
new file mode 100644
index 0000000..777af62
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap-reboot.scss","../../scss/_reboot.scss","dist/css/bootstrap-reboot.rtl.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss","bootstrap-reboot.css"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n\n@import \"functions\";\n@import \"variables\";\n// Prevent the usage of custom properties since we don't add them to `:root` in reboot\n$font-family-base: $font-family-sans-serif; // stylelint-disable-line scss/dollar-variable-default\n$font-family-code: $font-family-monospace; // stylelint-disable-line scss/dollar-variable-default\n@import \"mixins\";\n@import \"reboot\";\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n  @if $font-size-root != null {\n    font-size: var(--#{$variable-prefix}-root-font-size);\n  }\n\n  @if $enable-smooth-scroll {\n    @media (prefers-reduced-motion: no-preference) {\n      scroll-behavior: smooth;\n    }\n  }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n  margin: 0; // 1\n  font-family: var(--#{$variable-prefix}body-font-family);\n  @include font-size(var(--#{$variable-prefix}body-font-size));\n  font-weight: var(--#{$variable-prefix}body-font-weight);\n  line-height: var(--#{$variable-prefix}body-line-height);\n  color: var(--#{$variable-prefix}body-color);\n  text-align: var(--#{$variable-prefix}body-text-align);\n  background-color: var(--#{$variable-prefix}body-bg); // 2\n  -webkit-text-size-adjust: 100%; // 3\n  -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n  margin: $hr-margin-y 0;\n  color: $hr-color; // 1\n  background-color: currentColor;\n  border: 0;\n  opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n  height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n//    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n//    margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n  margin-top: 0; // 1\n  margin-bottom: $headings-margin-bottom;\n  font-family: $headings-font-family;\n  font-style: $headings-font-style;\n  font-weight: $headings-font-weight;\n  line-height: $headings-line-height;\n  color: $headings-color;\n}\n\nh1 {\n  @extend %heading;\n  @include font-size($h1-font-size);\n}\n\nh2 {\n  @extend %heading;\n  @include font-size($h2-font-size);\n}\n\nh3 {\n  @extend %heading;\n  @include font-size($h3-font-size);\n}\n\nh4 {\n  @extend %heading;\n  @include font-size($h4-font-size);\n}\n\nh5 {\n  @extend %heading;\n  @include font-size($h5-font-size);\n}\n\nh6 {\n  @extend %heading;\n  @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n  margin-top: 0;\n  margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n  text-decoration: underline dotted; // 2\n  cursor: help; // 3\n  text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n  font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n  @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n  padding: $mark-padding;\n  background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n  position: relative;\n  @include font-size($sub-sup-font-size);\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n  color: $link-color;\n  text-decoration: $link-decoration;\n\n  &:hover {\n    color: $link-hover-color;\n    text-decoration: $link-hover-decoration;\n  }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n  &,\n  &:hover {\n    color: inherit;\n    text-decoration: none;\n  }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: $font-family-code;\n  @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n  direction: ltr #{\"/* rtl:ignore */\"};\n  unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n  display: block;\n  margin-top: 0; // 1\n  margin-bottom: 1rem; // 2\n  overflow: auto; // 3\n  @include font-size($code-font-size);\n  color: $pre-color;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    @include font-size(inherit);\n    color: inherit;\n    word-break: normal;\n  }\n}\n\ncode {\n  @include font-size($code-font-size);\n  color: $code-color;\n  word-wrap: break-word;\n\n  // Streamline the style when inside anchors to avoid broken underline and more\n  a > & {\n    color: inherit;\n  }\n}\n\nkbd {\n  padding: $kbd-padding-y $kbd-padding-x;\n  @include font-size($kbd-font-size);\n  color: $kbd-color;\n  background-color: $kbd-bg;\n  @include border-radius($border-radius-sm);\n\n  kbd {\n    padding: 0;\n    @include font-size(1em);\n    font-weight: $nested-kbd-font-weight;\n  }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n  margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: $table-cell-padding-y;\n  padding-bottom: $table-cell-padding-y;\n  color: $table-caption-color;\n  text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `<td>` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n  font-weight: $table-th-font-weight; // 1\n  text-align: inherit; // 2\n  text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n  display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0; // 1\n  font-family: inherit;\n  @include font-size(inherit);\n  line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n  text-transform: none;\n}\n// Set the cursor for non-`<button>` buttons\n//\n// Details at https://github.com/twbs/bootstrap/pull/30562\n[role=\"button\"] {\n  cursor: pointer;\n}\n\nselect {\n  // Remove the inheritance of word-wrap in Safari.\n  // See https://github.com/twbs/bootstrap/issues/24990\n  word-wrap: normal;\n\n  // Undo the opacity change from Chrome\n  &:disabled {\n    opacity: 1;\n  }\n}\n\n// Remove the dropdown arrow in Chrome from inputs built with datalists.\n// See https://stackoverflow.com/a/54997118\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n//    controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\n// 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n\n  @if $enable-button-pointers {\n    &:not(:disabled) {\n      cursor: pointer; // 3\n    }\n  }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\n// 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\ntextarea {\n  resize: vertical; // 1\n}\n\n// 1. Browsers set a default `min-width: min-content;` on fieldsets,\n//    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n//    So we reset that to ensure fieldsets behave more like a standard block element.\n//    See https://github.com/twbs/bootstrap/issues/12359\n//    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n// 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\nfieldset {\n  min-width: 0; // 1\n  padding: 0; // 2\n  margin: 0; // 2\n  border: 0; // 2\n}\n\n// 1. By using `float: left`, the legend will behave like a block element.\n//    This way the border of a fieldset wraps around the legend if present.\n// 2. Fix wrapping bug.\n//    See https://github.com/twbs/bootstrap/issues/29712\n\nlegend {\n  float: left; // 1\n  width: 100%;\n  padding: 0;\n  margin-bottom: $legend-margin-bottom;\n  @include font-size($legend-font-size);\n  font-weight: $legend-font-weight;\n  line-height: inherit;\n\n  + * {\n    clear: left; // 2\n  }\n}\n\n// Fix height of inputs with a type of datetime-local, date, month, week, or time\n// See https://github.com/twbs/bootstrap/issues/18842\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n// 1. Correct the outline style in Safari.\n// 2. This overrides the extra rounded corners on search inputs in iOS so that our\n//    `.form-control` class can properly style them. Note that this cannot simply\n//    be added to `.form-control` as it's not specific enough. For details, see\n//    https://github.com/twbs/bootstrap/issues/11586.\n\n[type=\"search\"] {\n  outline-offset: -2px; // 1\n  -webkit-appearance: textfield; // 2\n}\n\n// 1. A few input types should stay LTR\n// See https://rtlstyling.com/posts/rtl-styling#form-inputs\n// 2. RTL only output\n// See https://rtlcss.com/learn/usage-guide/control-directives/#raw\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n\n// Remove the inner padding in Chrome and Safari on macOS.\n\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n// Remove padding around color pickers in webkit browsers\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n\n// Inherit font family and line height for file input buttons\n\n::file-selector-button {\n  font: inherit;\n}\n\n// 1. Change font properties to `inherit`\n// 2. Correct the inability to style clickable types in iOS and Safari.\n\n::-webkit-file-upload-button {\n  font: inherit; // 1\n  -webkit-appearance: button; // 2\n}\n\n// Correct element displays\n\noutput {\n  display: inline-block;\n}\n\n// Remove border from iframe\n\niframe {\n  border: 0;\n}\n\n// Summary\n//\n// 1. Add the correct display in all browsers\n\nsummary {\n  display: list-item; // 1\n  cursor: pointer;\n}\n\n\n// Progress\n//\n// Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\nprogress {\n  vertical-align: baseline;\n}\n\n\n// Hidden attribute\n//\n// Always hide an element with the `hidden` HTML attribute.\n\n[hidden] {\n  display: none !important;\n}\n","/*!\n * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  :root {\n    scroll-behavior: smooth;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: var(--bs-body-font-family);\n  font-size: var(--bs-body-font-size);\n  font-weight: var(--bs-body-font-weight);\n  line-height: var(--bs-body-line-height);\n  color: var(--bs-body-color);\n  text-align: var(--bs-body-text-align);\n  background-color: var(--bs-body-bg);\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n  margin: 1rem 0;\n  color: inherit;\n  background-color: currentColor;\n  border: 0;\n  opacity: 0.25;\n}\n\nhr:not([size]) {\n  height: 1px;\n}\n\nh6, h5, h4, h3, h2, h1 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\nh1 {\n  font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n  h1 {\n    font-size: 2.5rem;\n  }\n}\n\nh2 {\n  font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n  h2 {\n    font-size: 2rem;\n  }\n}\n\nh3 {\n  font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n  h3 {\n    font-size: 1.75rem;\n  }\n}\n\nh4 {\n  font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n  h4 {\n    font-size: 1.5rem;\n  }\n}\n\nh5 {\n  font-size: 1.25rem;\n}\n\nh6 {\n  font-size: 1rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-bs-original-title] {\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n  cursor: help;\n  -webkit-text-decoration-skip-ink: none;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul {\n  padding-right: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: 0.5rem;\n  margin-right: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall {\n  font-size: 0.875em;\n}\n\nmark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 0.75em;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\na {\n  color: #0d6efd;\n  text-decoration: underline;\n}\na:hover {\n  color: #0a58ca;\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n  color: inherit;\n  text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  font-size: 1em;\n  direction: ltr ;\n  unicode-bidi: bidi-override;\n}\n\npre {\n  display: block;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  font-size: 0.875em;\n}\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\ncode {\n  font-size: 0.875em;\n  color: #d63384;\n  word-wrap: break-word;\n}\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 0.875em;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\nkbd kbd {\n  padding: 0;\n  font-size: 1em;\n  font-weight: 700;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  color: #6c757d;\n  text-align: right;\n}\n\nth {\n  text-align: inherit;\n  text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\nlabel {\n  display: inline-block;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n[role=button] {\n  cursor: pointer;\n}\n\nselect {\n  word-wrap: normal;\n}\nselect:disabled {\n  opacity: 1;\n}\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n  -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n  cursor: pointer;\n}\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ntextarea {\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  float: right;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 0.5rem;\n  font-size: calc(1.275rem + 0.3vw);\n  line-height: inherit;\n}\n@media (min-width: 1200px) {\n  legend {\n    font-size: 1.5rem;\n  }\n}\nlegend + * {\n  clear: right;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n[type=search] {\n  outline-offset: -2px;\n  -webkit-appearance: textfield;\n}\n\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n::file-selector-button {\n  font: inherit;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\niframe {\n  border: 0;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[hidden] {\n  display: none !important;\n}\n/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n  @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n  @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n  @error \"`#{$rfs-factor}` is not a valid  $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n  $dividend: abs($dividend);\n  $divisor: abs($divisor);\n  @if $dividend == 0 {\n    @return 0;\n  }\n  @if $divisor == 0 {\n    @error \"Cannot divide by 0\";\n  }\n  $remainder: $dividend;\n  $result: 0;\n  $factor: 10;\n  @while ($remainder > 0 and $precision >= 0) {\n    $quotient: 0;\n    @while ($remainder >= $divisor) {\n      $remainder: $remainder - $divisor;\n      $quotient: $quotient + 1;\n    }\n    $result: $result * 10 + $quotient;\n    $factor: $factor * .1;\n    $remainder: $remainder * 10;\n    $precision: $precision - 1;\n    @if ($precision < 0 and $remainder >= $divisor * 5) {\n      $result: $result + 1;\n    }\n  }\n  $result: $result * $factor * $sign;\n  $dividend-unit: unit($dividend);\n  $divisor-unit: unit($divisor);\n  $unit-map: (\n    \"px\": 1px,\n    \"rem\": 1rem,\n    \"em\": 1em,\n    \"%\": 1%\n  );\n  @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n    $result: $result * map-get($unit-map, $dividend-unit);\n  }\n  @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n  $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n  $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n  $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n  $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n  @if $rfs-two-dimensional {\n    @if $rfs-mode == max-media-query {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n    @else {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n  }\n  @else {\n    @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n      @content;\n    }\n  }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n  @if $rfs-class == disable and $rfs-mode == max-media-query {\n    // Adding an extra class increases specificity, which prevents the media query to override the property\n    &,\n    .disable-rfs &,\n    &.disable-rfs {\n      @content;\n    }\n  }\n  @else if $rfs-class == enable and $rfs-mode == min-media-query {\n    .enable-rfs &,\n    &.enable-rfs {\n      @content;\n    }\n  }\n  @else {\n    @content;\n  }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n  @if $rfs-class == enable {\n    @if $rfs-mode == min-media-query {\n      @content;\n    }\n\n    @include _rfs-media-query {\n      .enable-rfs &,\n      &.enable-rfs {\n        @content;\n      }\n    }\n  }\n  @else {\n    @if $rfs-class == disable and $rfs-mode == min-media-query {\n      .disable-rfs &,\n      &.disable-rfs {\n        @content;\n      }\n    }\n    @include _rfs-media-query {\n      @content;\n    }\n  }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      @if $unit == px {\n        // Convert to rem if needed\n        $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n      }\n      @else if $unit == rem {\n        // Convert to px if needed\n        $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n      }\n      @else {\n        // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n        $val: $val + ' ' + $value;\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n      @if not $unit or $unit != px and $unit != rem {\n        $val: $val + ' ' + $value;\n      }\n\n      @else {\n        // Remove unit from $value for calculations\n        $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n        // Only add the media query if the value is greater than the minimum value\n        @if abs($value) <= $rfs-base-value or not $enable-rfs {\n          $val: $val + ' ' +  if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n        }\n        @else {\n          // Calculate the minimum value\n          $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n          // Calculate difference between $value and the minimum value\n          $value-diff: abs($value) - $value-min;\n\n          // Base value formatting\n          $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n          // Use negative value if needed\n          $min-width: if($value < 0, -$min-width, $min-width);\n\n          // Use `vmin` if two-dimensional is enabled\n          $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n          // Calculate the variable width between 0 and $rfs-breakpoint\n          $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n          // Return the calculated value\n          $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n        }\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n  @if $values != null {\n    $val: rfs-value($values);\n    $fluidVal: rfs-fluid-value($values);\n\n    // Do not print the media query if responsive & non-responsive values are the same\n    @if $val == $fluidVal {\n      #{$property}: $val;\n    }\n    @else {\n      @include _rfs-rule {\n        #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n        // Include safari iframe resize fix if needed\n        min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n      }\n\n      @include _rfs-media-query-rule {\n        #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n      }\n    }\n  }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n  @include rfs($value);\n}\n\n@mixin padding($value) {\n  @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n  @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n  @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n  @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n  @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n  @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n  @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n  @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n  @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n  @include rfs($value, margin-left);\n}\n","// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if type-of($value) == number {\n      $return: append($return, max($value, 0));\n    } @else {\n      $return: append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n","/*!\n * Bootstrap Reboot v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  :root {\n    scroll-behavior: smooth;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: var(--bs-body-font-family);\n  font-size: var(--bs-body-font-size);\n  font-weight: var(--bs-body-font-weight);\n  line-height: var(--bs-body-line-height);\n  color: var(--bs-body-color);\n  text-align: var(--bs-body-text-align);\n  background-color: var(--bs-body-bg);\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n  margin: 1rem 0;\n  color: inherit;\n  background-color: currentColor;\n  border: 0;\n  opacity: 0.25;\n}\n\nhr:not([size]) {\n  height: 1px;\n}\n\nh6, h5, h4, h3, h2, h1 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\nh1 {\n  font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n  h1 {\n    font-size: 2.5rem;\n  }\n}\n\nh2 {\n  font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n  h2 {\n    font-size: 2rem;\n  }\n}\n\nh3 {\n  font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n  h3 {\n    font-size: 1.75rem;\n  }\n}\n\nh4 {\n  font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n  h4 {\n    font-size: 1.5rem;\n  }\n}\n\nh5 {\n  font-size: 1.25rem;\n}\n\nh6 {\n  font-size: 1rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-bs-original-title] {\n  text-decoration: underline dotted;\n  cursor: help;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: 0.5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall {\n  font-size: 0.875em;\n}\n\nmark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 0.75em;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\na {\n  color: #0d6efd;\n  text-decoration: underline;\n}\na:hover {\n  color: #0a58ca;\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n  color: inherit;\n  text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  font-size: 1em;\n  direction: ltr /* rtl:ignore */;\n  unicode-bidi: bidi-override;\n}\n\npre {\n  display: block;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  font-size: 0.875em;\n}\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\ncode {\n  font-size: 0.875em;\n  color: #d63384;\n  word-wrap: break-word;\n}\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 0.875em;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\nkbd kbd {\n  padding: 0;\n  font-size: 1em;\n  font-weight: 700;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  color: #6c757d;\n  text-align: left;\n}\n\nth {\n  text-align: inherit;\n  text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\nlabel {\n  display: inline-block;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n[role=button] {\n  cursor: pointer;\n}\n\nselect {\n  word-wrap: normal;\n}\nselect:disabled {\n  opacity: 1;\n}\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n  -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n  cursor: pointer;\n}\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ntextarea {\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  float: left;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 0.5rem;\n  font-size: calc(1.275rem + 0.3vw);\n  line-height: inherit;\n}\n@media (min-width: 1200px) {\n  legend {\n    font-size: 1.5rem;\n  }\n}\nlegend + * {\n  clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n[type=search] {\n  outline-offset: -2px;\n  -webkit-appearance: textfield;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n::file-selector-button {\n  font: inherit;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\niframe {\n  border: 0;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[hidden] {\n  display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css
new file mode 100644
index 0000000..7b56370
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css
@@ -0,0 +1,4866 @@
+/*!
+ * Bootstrap Utilities v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+.clearfix::after {
+  display: block;
+  clear: both;
+  content: "";
+}
+
+.link-primary {
+  color: #0d6efd;
+}
+.link-primary:hover, .link-primary:focus {
+  color: #0a58ca;
+}
+
+.link-secondary {
+  color: #6c757d;
+}
+.link-secondary:hover, .link-secondary:focus {
+  color: #565e64;
+}
+
+.link-success {
+  color: #198754;
+}
+.link-success:hover, .link-success:focus {
+  color: #146c43;
+}
+
+.link-info {
+  color: #0dcaf0;
+}
+.link-info:hover, .link-info:focus {
+  color: #3dd5f3;
+}
+
+.link-warning {
+  color: #ffc107;
+}
+.link-warning:hover, .link-warning:focus {
+  color: #ffcd39;
+}
+
+.link-danger {
+  color: #dc3545;
+}
+.link-danger:hover, .link-danger:focus {
+  color: #b02a37;
+}
+
+.link-light {
+  color: #f8f9fa;
+}
+.link-light:hover, .link-light:focus {
+  color: #f9fafb;
+}
+
+.link-dark {
+  color: #212529;
+}
+.link-dark:hover, .link-dark:focus {
+  color: #1a1e21;
+}
+
+.ratio {
+  position: relative;
+  width: 100%;
+}
+.ratio::before {
+  display: block;
+  padding-top: var(--bs-aspect-ratio);
+  content: "";
+}
+.ratio > * {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+
+.ratio-1x1 {
+  --bs-aspect-ratio: 100%;
+}
+
+.ratio-4x3 {
+  --bs-aspect-ratio: calc(3 / 4 * 100%);
+}
+
+.ratio-16x9 {
+  --bs-aspect-ratio: calc(9 / 16 * 100%);
+}
+
+.ratio-21x9 {
+  --bs-aspect-ratio: calc(9 / 21 * 100%);
+}
+
+.fixed-top {
+  position: fixed;
+  top: 0;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+}
+
+.fixed-bottom {
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1030;
+}
+
+.sticky-top {
+  position: -webkit-sticky;
+  position: sticky;
+  top: 0;
+  z-index: 1020;
+}
+
+@media (min-width: 576px) {
+  .sticky-sm-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 768px) {
+  .sticky-md-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 992px) {
+  .sticky-lg-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 1200px) {
+  .sticky-xl-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 1400px) {
+  .sticky-xxl-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+.hstack {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  align-self: stretch;
+}
+
+.vstack {
+  display: flex;
+  flex: 1 1 auto;
+  flex-direction: column;
+  align-self: stretch;
+}
+
+.visually-hidden,
+.visually-hidden-focusable:not(:focus):not(:focus-within) {
+  position: absolute !important;
+  width: 1px !important;
+  height: 1px !important;
+  padding: 0 !important;
+  margin: -1px !important;
+  overflow: hidden !important;
+  clip: rect(0, 0, 0, 0) !important;
+  white-space: nowrap !important;
+  border: 0 !important;
+}
+
+.stretched-link::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1;
+  content: "";
+}
+
+.text-truncate {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.vr {
+  display: inline-block;
+  align-self: stretch;
+  width: 1px;
+  min-height: 1em;
+  background-color: currentColor;
+  opacity: 0.25;
+}
+
+.align-baseline {
+  vertical-align: baseline !important;
+}
+
+.align-top {
+  vertical-align: top !important;
+}
+
+.align-middle {
+  vertical-align: middle !important;
+}
+
+.align-bottom {
+  vertical-align: bottom !important;
+}
+
+.align-text-bottom {
+  vertical-align: text-bottom !important;
+}
+
+.align-text-top {
+  vertical-align: text-top !important;
+}
+
+.float-start {
+  float: left !important;
+}
+
+.float-end {
+  float: right !important;
+}
+
+.float-none {
+  float: none !important;
+}
+
+.opacity-0 {
+  opacity: 0 !important;
+}
+
+.opacity-25 {
+  opacity: 0.25 !important;
+}
+
+.opacity-50 {
+  opacity: 0.5 !important;
+}
+
+.opacity-75 {
+  opacity: 0.75 !important;
+}
+
+.opacity-100 {
+  opacity: 1 !important;
+}
+
+.overflow-auto {
+  overflow: auto !important;
+}
+
+.overflow-hidden {
+  overflow: hidden !important;
+}
+
+.overflow-visible {
+  overflow: visible !important;
+}
+
+.overflow-scroll {
+  overflow: scroll !important;
+}
+
+.d-inline {
+  display: inline !important;
+}
+
+.d-inline-block {
+  display: inline-block !important;
+}
+
+.d-block {
+  display: block !important;
+}
+
+.d-grid {
+  display: grid !important;
+}
+
+.d-table {
+  display: table !important;
+}
+
+.d-table-row {
+  display: table-row !important;
+}
+
+.d-table-cell {
+  display: table-cell !important;
+}
+
+.d-flex {
+  display: flex !important;
+}
+
+.d-inline-flex {
+  display: inline-flex !important;
+}
+
+.d-none {
+  display: none !important;
+}
+
+.shadow {
+  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
+}
+
+.shadow-sm {
+  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
+}
+
+.shadow-lg {
+  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
+}
+
+.shadow-none {
+  box-shadow: none !important;
+}
+
+.position-static {
+  position: static !important;
+}
+
+.position-relative {
+  position: relative !important;
+}
+
+.position-absolute {
+  position: absolute !important;
+}
+
+.position-fixed {
+  position: fixed !important;
+}
+
+.position-sticky {
+  position: -webkit-sticky !important;
+  position: sticky !important;
+}
+
+.top-0 {
+  top: 0 !important;
+}
+
+.top-50 {
+  top: 50% !important;
+}
+
+.top-100 {
+  top: 100% !important;
+}
+
+.bottom-0 {
+  bottom: 0 !important;
+}
+
+.bottom-50 {
+  bottom: 50% !important;
+}
+
+.bottom-100 {
+  bottom: 100% !important;
+}
+
+.start-0 {
+  left: 0 !important;
+}
+
+.start-50 {
+  left: 50% !important;
+}
+
+.start-100 {
+  left: 100% !important;
+}
+
+.end-0 {
+  right: 0 !important;
+}
+
+.end-50 {
+  right: 50% !important;
+}
+
+.end-100 {
+  right: 100% !important;
+}
+
+.translate-middle {
+  transform: translate(-50%, -50%) !important;
+}
+
+.translate-middle-x {
+  transform: translateX(-50%) !important;
+}
+
+.translate-middle-y {
+  transform: translateY(-50%) !important;
+}
+
+.border {
+  border: 1px solid #dee2e6 !important;
+}
+
+.border-0 {
+  border: 0 !important;
+}
+
+.border-top {
+  border-top: 1px solid #dee2e6 !important;
+}
+
+.border-top-0 {
+  border-top: 0 !important;
+}
+
+.border-end {
+  border-right: 1px solid #dee2e6 !important;
+}
+
+.border-end-0 {
+  border-right: 0 !important;
+}
+
+.border-bottom {
+  border-bottom: 1px solid #dee2e6 !important;
+}
+
+.border-bottom-0 {
+  border-bottom: 0 !important;
+}
+
+.border-start {
+  border-left: 1px solid #dee2e6 !important;
+}
+
+.border-start-0 {
+  border-left: 0 !important;
+}
+
+.border-primary {
+  border-color: #0d6efd !important;
+}
+
+.border-secondary {
+  border-color: #6c757d !important;
+}
+
+.border-success {
+  border-color: #198754 !important;
+}
+
+.border-info {
+  border-color: #0dcaf0 !important;
+}
+
+.border-warning {
+  border-color: #ffc107 !important;
+}
+
+.border-danger {
+  border-color: #dc3545 !important;
+}
+
+.border-light {
+  border-color: #f8f9fa !important;
+}
+
+.border-dark {
+  border-color: #212529 !important;
+}
+
+.border-white {
+  border-color: #fff !important;
+}
+
+.border-1 {
+  border-width: 1px !important;
+}
+
+.border-2 {
+  border-width: 2px !important;
+}
+
+.border-3 {
+  border-width: 3px !important;
+}
+
+.border-4 {
+  border-width: 4px !important;
+}
+
+.border-5 {
+  border-width: 5px !important;
+}
+
+.w-25 {
+  width: 25% !important;
+}
+
+.w-50 {
+  width: 50% !important;
+}
+
+.w-75 {
+  width: 75% !important;
+}
+
+.w-100 {
+  width: 100% !important;
+}
+
+.w-auto {
+  width: auto !important;
+}
+
+.mw-100 {
+  max-width: 100% !important;
+}
+
+.vw-100 {
+  width: 100vw !important;
+}
+
+.min-vw-100 {
+  min-width: 100vw !important;
+}
+
+.h-25 {
+  height: 25% !important;
+}
+
+.h-50 {
+  height: 50% !important;
+}
+
+.h-75 {
+  height: 75% !important;
+}
+
+.h-100 {
+  height: 100% !important;
+}
+
+.h-auto {
+  height: auto !important;
+}
+
+.mh-100 {
+  max-height: 100% !important;
+}
+
+.vh-100 {
+  height: 100vh !important;
+}
+
+.min-vh-100 {
+  min-height: 100vh !important;
+}
+
+.flex-fill {
+  flex: 1 1 auto !important;
+}
+
+.flex-row {
+  flex-direction: row !important;
+}
+
+.flex-column {
+  flex-direction: column !important;
+}
+
+.flex-row-reverse {
+  flex-direction: row-reverse !important;
+}
+
+.flex-column-reverse {
+  flex-direction: column-reverse !important;
+}
+
+.flex-grow-0 {
+  flex-grow: 0 !important;
+}
+
+.flex-grow-1 {
+  flex-grow: 1 !important;
+}
+
+.flex-shrink-0 {
+  flex-shrink: 0 !important;
+}
+
+.flex-shrink-1 {
+  flex-shrink: 1 !important;
+}
+
+.flex-wrap {
+  flex-wrap: wrap !important;
+}
+
+.flex-nowrap {
+  flex-wrap: nowrap !important;
+}
+
+.flex-wrap-reverse {
+  flex-wrap: wrap-reverse !important;
+}
+
+.gap-0 {
+  gap: 0 !important;
+}
+
+.gap-1 {
+  gap: 0.25rem !important;
+}
+
+.gap-2 {
+  gap: 0.5rem !important;
+}
+
+.gap-3 {
+  gap: 1rem !important;
+}
+
+.gap-4 {
+  gap: 1.5rem !important;
+}
+
+.gap-5 {
+  gap: 3rem !important;
+}
+
+.justify-content-start {
+  justify-content: flex-start !important;
+}
+
+.justify-content-end {
+  justify-content: flex-end !important;
+}
+
+.justify-content-center {
+  justify-content: center !important;
+}
+
+.justify-content-between {
+  justify-content: space-between !important;
+}
+
+.justify-content-around {
+  justify-content: space-around !important;
+}
+
+.justify-content-evenly {
+  justify-content: space-evenly !important;
+}
+
+.align-items-start {
+  align-items: flex-start !important;
+}
+
+.align-items-end {
+  align-items: flex-end !important;
+}
+
+.align-items-center {
+  align-items: center !important;
+}
+
+.align-items-baseline {
+  align-items: baseline !important;
+}
+
+.align-items-stretch {
+  align-items: stretch !important;
+}
+
+.align-content-start {
+  align-content: flex-start !important;
+}
+
+.align-content-end {
+  align-content: flex-end !important;
+}
+
+.align-content-center {
+  align-content: center !important;
+}
+
+.align-content-between {
+  align-content: space-between !important;
+}
+
+.align-content-around {
+  align-content: space-around !important;
+}
+
+.align-content-stretch {
+  align-content: stretch !important;
+}
+
+.align-self-auto {
+  align-self: auto !important;
+}
+
+.align-self-start {
+  align-self: flex-start !important;
+}
+
+.align-self-end {
+  align-self: flex-end !important;
+}
+
+.align-self-center {
+  align-self: center !important;
+}
+
+.align-self-baseline {
+  align-self: baseline !important;
+}
+
+.align-self-stretch {
+  align-self: stretch !important;
+}
+
+.order-first {
+  order: -1 !important;
+}
+
+.order-0 {
+  order: 0 !important;
+}
+
+.order-1 {
+  order: 1 !important;
+}
+
+.order-2 {
+  order: 2 !important;
+}
+
+.order-3 {
+  order: 3 !important;
+}
+
+.order-4 {
+  order: 4 !important;
+}
+
+.order-5 {
+  order: 5 !important;
+}
+
+.order-last {
+  order: 6 !important;
+}
+
+.m-0 {
+  margin: 0 !important;
+}
+
+.m-1 {
+  margin: 0.25rem !important;
+}
+
+.m-2 {
+  margin: 0.5rem !important;
+}
+
+.m-3 {
+  margin: 1rem !important;
+}
+
+.m-4 {
+  margin: 1.5rem !important;
+}
+
+.m-5 {
+  margin: 3rem !important;
+}
+
+.m-auto {
+  margin: auto !important;
+}
+
+.mx-0 {
+  margin-right: 0 !important;
+  margin-left: 0 !important;
+}
+
+.mx-1 {
+  margin-right: 0.25rem !important;
+  margin-left: 0.25rem !important;
+}
+
+.mx-2 {
+  margin-right: 0.5rem !important;
+  margin-left: 0.5rem !important;
+}
+
+.mx-3 {
+  margin-right: 1rem !important;
+  margin-left: 1rem !important;
+}
+
+.mx-4 {
+  margin-right: 1.5rem !important;
+  margin-left: 1.5rem !important;
+}
+
+.mx-5 {
+  margin-right: 3rem !important;
+  margin-left: 3rem !important;
+}
+
+.mx-auto {
+  margin-right: auto !important;
+  margin-left: auto !important;
+}
+
+.my-0 {
+  margin-top: 0 !important;
+  margin-bottom: 0 !important;
+}
+
+.my-1 {
+  margin-top: 0.25rem !important;
+  margin-bottom: 0.25rem !important;
+}
+
+.my-2 {
+  margin-top: 0.5rem !important;
+  margin-bottom: 0.5rem !important;
+}
+
+.my-3 {
+  margin-top: 1rem !important;
+  margin-bottom: 1rem !important;
+}
+
+.my-4 {
+  margin-top: 1.5rem !important;
+  margin-bottom: 1.5rem !important;
+}
+
+.my-5 {
+  margin-top: 3rem !important;
+  margin-bottom: 3rem !important;
+}
+
+.my-auto {
+  margin-top: auto !important;
+  margin-bottom: auto !important;
+}
+
+.mt-0 {
+  margin-top: 0 !important;
+}
+
+.mt-1 {
+  margin-top: 0.25rem !important;
+}
+
+.mt-2 {
+  margin-top: 0.5rem !important;
+}
+
+.mt-3 {
+  margin-top: 1rem !important;
+}
+
+.mt-4 {
+  margin-top: 1.5rem !important;
+}
+
+.mt-5 {
+  margin-top: 3rem !important;
+}
+
+.mt-auto {
+  margin-top: auto !important;
+}
+
+.me-0 {
+  margin-right: 0 !important;
+}
+
+.me-1 {
+  margin-right: 0.25rem !important;
+}
+
+.me-2 {
+  margin-right: 0.5rem !important;
+}
+
+.me-3 {
+  margin-right: 1rem !important;
+}
+
+.me-4 {
+  margin-right: 1.5rem !important;
+}
+
+.me-5 {
+  margin-right: 3rem !important;
+}
+
+.me-auto {
+  margin-right: auto !important;
+}
+
+.mb-0 {
+  margin-bottom: 0 !important;
+}
+
+.mb-1 {
+  margin-bottom: 0.25rem !important;
+}
+
+.mb-2 {
+  margin-bottom: 0.5rem !important;
+}
+
+.mb-3 {
+  margin-bottom: 1rem !important;
+}
+
+.mb-4 {
+  margin-bottom: 1.5rem !important;
+}
+
+.mb-5 {
+  margin-bottom: 3rem !important;
+}
+
+.mb-auto {
+  margin-bottom: auto !important;
+}
+
+.ms-0 {
+  margin-left: 0 !important;
+}
+
+.ms-1 {
+  margin-left: 0.25rem !important;
+}
+
+.ms-2 {
+  margin-left: 0.5rem !important;
+}
+
+.ms-3 {
+  margin-left: 1rem !important;
+}
+
+.ms-4 {
+  margin-left: 1.5rem !important;
+}
+
+.ms-5 {
+  margin-left: 3rem !important;
+}
+
+.ms-auto {
+  margin-left: auto !important;
+}
+
+.p-0 {
+  padding: 0 !important;
+}
+
+.p-1 {
+  padding: 0.25rem !important;
+}
+
+.p-2 {
+  padding: 0.5rem !important;
+}
+
+.p-3 {
+  padding: 1rem !important;
+}
+
+.p-4 {
+  padding: 1.5rem !important;
+}
+
+.p-5 {
+  padding: 3rem !important;
+}
+
+.px-0 {
+  padding-right: 0 !important;
+  padding-left: 0 !important;
+}
+
+.px-1 {
+  padding-right: 0.25rem !important;
+  padding-left: 0.25rem !important;
+}
+
+.px-2 {
+  padding-right: 0.5rem !important;
+  padding-left: 0.5rem !important;
+}
+
+.px-3 {
+  padding-right: 1rem !important;
+  padding-left: 1rem !important;
+}
+
+.px-4 {
+  padding-right: 1.5rem !important;
+  padding-left: 1.5rem !important;
+}
+
+.px-5 {
+  padding-right: 3rem !important;
+  padding-left: 3rem !important;
+}
+
+.py-0 {
+  padding-top: 0 !important;
+  padding-bottom: 0 !important;
+}
+
+.py-1 {
+  padding-top: 0.25rem !important;
+  padding-bottom: 0.25rem !important;
+}
+
+.py-2 {
+  padding-top: 0.5rem !important;
+  padding-bottom: 0.5rem !important;
+}
+
+.py-3 {
+  padding-top: 1rem !important;
+  padding-bottom: 1rem !important;
+}
+
+.py-4 {
+  padding-top: 1.5rem !important;
+  padding-bottom: 1.5rem !important;
+}
+
+.py-5 {
+  padding-top: 3rem !important;
+  padding-bottom: 3rem !important;
+}
+
+.pt-0 {
+  padding-top: 0 !important;
+}
+
+.pt-1 {
+  padding-top: 0.25rem !important;
+}
+
+.pt-2 {
+  padding-top: 0.5rem !important;
+}
+
+.pt-3 {
+  padding-top: 1rem !important;
+}
+
+.pt-4 {
+  padding-top: 1.5rem !important;
+}
+
+.pt-5 {
+  padding-top: 3rem !important;
+}
+
+.pe-0 {
+  padding-right: 0 !important;
+}
+
+.pe-1 {
+  padding-right: 0.25rem !important;
+}
+
+.pe-2 {
+  padding-right: 0.5rem !important;
+}
+
+.pe-3 {
+  padding-right: 1rem !important;
+}
+
+.pe-4 {
+  padding-right: 1.5rem !important;
+}
+
+.pe-5 {
+  padding-right: 3rem !important;
+}
+
+.pb-0 {
+  padding-bottom: 0 !important;
+}
+
+.pb-1 {
+  padding-bottom: 0.25rem !important;
+}
+
+.pb-2 {
+  padding-bottom: 0.5rem !important;
+}
+
+.pb-3 {
+  padding-bottom: 1rem !important;
+}
+
+.pb-4 {
+  padding-bottom: 1.5rem !important;
+}
+
+.pb-5 {
+  padding-bottom: 3rem !important;
+}
+
+.ps-0 {
+  padding-left: 0 !important;
+}
+
+.ps-1 {
+  padding-left: 0.25rem !important;
+}
+
+.ps-2 {
+  padding-left: 0.5rem !important;
+}
+
+.ps-3 {
+  padding-left: 1rem !important;
+}
+
+.ps-4 {
+  padding-left: 1.5rem !important;
+}
+
+.ps-5 {
+  padding-left: 3rem !important;
+}
+
+.font-monospace {
+  font-family: var(--bs-font-monospace) !important;
+}
+
+.fs-1 {
+  font-size: calc(1.375rem + 1.5vw) !important;
+}
+
+.fs-2 {
+  font-size: calc(1.325rem + 0.9vw) !important;
+}
+
+.fs-3 {
+  font-size: calc(1.3rem + 0.6vw) !important;
+}
+
+.fs-4 {
+  font-size: calc(1.275rem + 0.3vw) !important;
+}
+
+.fs-5 {
+  font-size: 1.25rem !important;
+}
+
+.fs-6 {
+  font-size: 1rem !important;
+}
+
+.fst-italic {
+  font-style: italic !important;
+}
+
+.fst-normal {
+  font-style: normal !important;
+}
+
+.fw-light {
+  font-weight: 300 !important;
+}
+
+.fw-lighter {
+  font-weight: lighter !important;
+}
+
+.fw-normal {
+  font-weight: 400 !important;
+}
+
+.fw-bold {
+  font-weight: 700 !important;
+}
+
+.fw-bolder {
+  font-weight: bolder !important;
+}
+
+.lh-1 {
+  line-height: 1 !important;
+}
+
+.lh-sm {
+  line-height: 1.25 !important;
+}
+
+.lh-base {
+  line-height: 1.5 !important;
+}
+
+.lh-lg {
+  line-height: 2 !important;
+}
+
+.text-start {
+  text-align: left !important;
+}
+
+.text-end {
+  text-align: right !important;
+}
+
+.text-center {
+  text-align: center !important;
+}
+
+.text-decoration-none {
+  text-decoration: none !important;
+}
+
+.text-decoration-underline {
+  text-decoration: underline !important;
+}
+
+.text-decoration-line-through {
+  text-decoration: line-through !important;
+}
+
+.text-lowercase {
+  text-transform: lowercase !important;
+}
+
+.text-uppercase {
+  text-transform: uppercase !important;
+}
+
+.text-capitalize {
+  text-transform: capitalize !important;
+}
+
+.text-wrap {
+  white-space: normal !important;
+}
+
+.text-nowrap {
+  white-space: nowrap !important;
+}
+
+/* rtl:begin:remove */
+.text-break {
+  word-wrap: break-word !important;
+  word-break: break-word !important;
+}
+
+/* rtl:end:remove */
+.text-primary {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-secondary {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-success {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-info {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-warning {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-danger {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-light {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-dark {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-black {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-white {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-body {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-muted {
+  --bs-text-opacity: 1;
+  color: #6c757d !important;
+}
+
+.text-black-50 {
+  --bs-text-opacity: 1;
+  color: rgba(0, 0, 0, 0.5) !important;
+}
+
+.text-white-50 {
+  --bs-text-opacity: 1;
+  color: rgba(255, 255, 255, 0.5) !important;
+}
+
+.text-reset {
+  --bs-text-opacity: 1;
+  color: inherit !important;
+}
+
+.text-opacity-25 {
+  --bs-text-opacity: 0.25;
+}
+
+.text-opacity-50 {
+  --bs-text-opacity: 0.5;
+}
+
+.text-opacity-75 {
+  --bs-text-opacity: 0.75;
+}
+
+.text-opacity-100 {
+  --bs-text-opacity: 1;
+}
+
+.bg-primary {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-secondary {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-success {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-info {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-warning {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-danger {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-light {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-dark {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-black {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-white {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-body {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-transparent {
+  --bs-bg-opacity: 1;
+  background-color: transparent !important;
+}
+
+.bg-opacity-10 {
+  --bs-bg-opacity: 0.1;
+}
+
+.bg-opacity-25 {
+  --bs-bg-opacity: 0.25;
+}
+
+.bg-opacity-50 {
+  --bs-bg-opacity: 0.5;
+}
+
+.bg-opacity-75 {
+  --bs-bg-opacity: 0.75;
+}
+
+.bg-opacity-100 {
+  --bs-bg-opacity: 1;
+}
+
+.bg-gradient {
+  background-image: var(--bs-gradient) !important;
+}
+
+.user-select-all {
+  -webkit-user-select: all !important;
+  -moz-user-select: all !important;
+  user-select: all !important;
+}
+
+.user-select-auto {
+  -webkit-user-select: auto !important;
+  -moz-user-select: auto !important;
+  user-select: auto !important;
+}
+
+.user-select-none {
+  -webkit-user-select: none !important;
+  -moz-user-select: none !important;
+  user-select: none !important;
+}
+
+.pe-none {
+  pointer-events: none !important;
+}
+
+.pe-auto {
+  pointer-events: auto !important;
+}
+
+.rounded {
+  border-radius: 0.25rem !important;
+}
+
+.rounded-0 {
+  border-radius: 0 !important;
+}
+
+.rounded-1 {
+  border-radius: 0.2rem !important;
+}
+
+.rounded-2 {
+  border-radius: 0.25rem !important;
+}
+
+.rounded-3 {
+  border-radius: 0.3rem !important;
+}
+
+.rounded-circle {
+  border-radius: 50% !important;
+}
+
+.rounded-pill {
+  border-radius: 50rem !important;
+}
+
+.rounded-top {
+  border-top-left-radius: 0.25rem !important;
+  border-top-right-radius: 0.25rem !important;
+}
+
+.rounded-end {
+  border-top-right-radius: 0.25rem !important;
+  border-bottom-right-radius: 0.25rem !important;
+}
+
+.rounded-bottom {
+  border-bottom-right-radius: 0.25rem !important;
+  border-bottom-left-radius: 0.25rem !important;
+}
+
+.rounded-start {
+  border-bottom-left-radius: 0.25rem !important;
+  border-top-left-radius: 0.25rem !important;
+}
+
+.visible {
+  visibility: visible !important;
+}
+
+.invisible {
+  visibility: hidden !important;
+}
+
+@media (min-width: 576px) {
+  .float-sm-start {
+    float: left !important;
+  }
+
+  .float-sm-end {
+    float: right !important;
+  }
+
+  .float-sm-none {
+    float: none !important;
+  }
+
+  .d-sm-inline {
+    display: inline !important;
+  }
+
+  .d-sm-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-sm-block {
+    display: block !important;
+  }
+
+  .d-sm-grid {
+    display: grid !important;
+  }
+
+  .d-sm-table {
+    display: table !important;
+  }
+
+  .d-sm-table-row {
+    display: table-row !important;
+  }
+
+  .d-sm-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-sm-flex {
+    display: flex !important;
+  }
+
+  .d-sm-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-sm-none {
+    display: none !important;
+  }
+
+  .flex-sm-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-sm-row {
+    flex-direction: row !important;
+  }
+
+  .flex-sm-column {
+    flex-direction: column !important;
+  }
+
+  .flex-sm-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-sm-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-sm-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-sm-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-sm-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-sm-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-sm-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-sm-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-sm-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-sm-0 {
+    gap: 0 !important;
+  }
+
+  .gap-sm-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-sm-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-sm-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-sm-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-sm-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-sm-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-sm-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-sm-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-sm-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-sm-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-sm-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-sm-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-sm-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-sm-center {
+    align-items: center !important;
+  }
+
+  .align-items-sm-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-sm-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-sm-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-sm-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-sm-center {
+    align-content: center !important;
+  }
+
+  .align-content-sm-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-sm-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-sm-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-sm-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-sm-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-sm-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-sm-center {
+    align-self: center !important;
+  }
+
+  .align-self-sm-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-sm-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-sm-first {
+    order: -1 !important;
+  }
+
+  .order-sm-0 {
+    order: 0 !important;
+  }
+
+  .order-sm-1 {
+    order: 1 !important;
+  }
+
+  .order-sm-2 {
+    order: 2 !important;
+  }
+
+  .order-sm-3 {
+    order: 3 !important;
+  }
+
+  .order-sm-4 {
+    order: 4 !important;
+  }
+
+  .order-sm-5 {
+    order: 5 !important;
+  }
+
+  .order-sm-last {
+    order: 6 !important;
+  }
+
+  .m-sm-0 {
+    margin: 0 !important;
+  }
+
+  .m-sm-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-sm-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-sm-3 {
+    margin: 1rem !important;
+  }
+
+  .m-sm-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-sm-5 {
+    margin: 3rem !important;
+  }
+
+  .m-sm-auto {
+    margin: auto !important;
+  }
+
+  .mx-sm-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-sm-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-sm-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-sm-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-sm-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-sm-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-sm-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-sm-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-sm-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-sm-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-sm-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-sm-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-sm-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-sm-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-sm-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-sm-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-sm-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-sm-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-sm-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-sm-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-sm-auto {
+    margin-top: auto !important;
+  }
+
+  .me-sm-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-sm-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-sm-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-sm-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-sm-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-sm-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-sm-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-sm-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-sm-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-sm-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-sm-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-sm-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-sm-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-sm-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-sm-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-sm-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-sm-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-sm-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-sm-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-sm-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-sm-auto {
+    margin-left: auto !important;
+  }
+
+  .p-sm-0 {
+    padding: 0 !important;
+  }
+
+  .p-sm-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-sm-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-sm-3 {
+    padding: 1rem !important;
+  }
+
+  .p-sm-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-sm-5 {
+    padding: 3rem !important;
+  }
+
+  .px-sm-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-sm-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-sm-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-sm-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-sm-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-sm-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-sm-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-sm-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-sm-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-sm-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-sm-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-sm-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-sm-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-sm-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-sm-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-sm-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-sm-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-sm-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-sm-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-sm-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-sm-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-sm-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-sm-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-sm-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-sm-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-sm-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-sm-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-sm-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-sm-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-sm-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-sm-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-sm-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-sm-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-sm-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-sm-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-sm-5 {
+    padding-left: 3rem !important;
+  }
+
+  .text-sm-start {
+    text-align: left !important;
+  }
+
+  .text-sm-end {
+    text-align: right !important;
+  }
+
+  .text-sm-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 768px) {
+  .float-md-start {
+    float: left !important;
+  }
+
+  .float-md-end {
+    float: right !important;
+  }
+
+  .float-md-none {
+    float: none !important;
+  }
+
+  .d-md-inline {
+    display: inline !important;
+  }
+
+  .d-md-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-md-block {
+    display: block !important;
+  }
+
+  .d-md-grid {
+    display: grid !important;
+  }
+
+  .d-md-table {
+    display: table !important;
+  }
+
+  .d-md-table-row {
+    display: table-row !important;
+  }
+
+  .d-md-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-md-flex {
+    display: flex !important;
+  }
+
+  .d-md-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-md-none {
+    display: none !important;
+  }
+
+  .flex-md-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-md-row {
+    flex-direction: row !important;
+  }
+
+  .flex-md-column {
+    flex-direction: column !important;
+  }
+
+  .flex-md-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-md-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-md-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-md-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-md-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-md-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-md-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-md-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-md-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-md-0 {
+    gap: 0 !important;
+  }
+
+  .gap-md-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-md-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-md-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-md-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-md-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-md-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-md-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-md-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-md-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-md-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-md-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-md-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-md-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-md-center {
+    align-items: center !important;
+  }
+
+  .align-items-md-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-md-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-md-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-md-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-md-center {
+    align-content: center !important;
+  }
+
+  .align-content-md-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-md-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-md-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-md-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-md-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-md-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-md-center {
+    align-self: center !important;
+  }
+
+  .align-self-md-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-md-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-md-first {
+    order: -1 !important;
+  }
+
+  .order-md-0 {
+    order: 0 !important;
+  }
+
+  .order-md-1 {
+    order: 1 !important;
+  }
+
+  .order-md-2 {
+    order: 2 !important;
+  }
+
+  .order-md-3 {
+    order: 3 !important;
+  }
+
+  .order-md-4 {
+    order: 4 !important;
+  }
+
+  .order-md-5 {
+    order: 5 !important;
+  }
+
+  .order-md-last {
+    order: 6 !important;
+  }
+
+  .m-md-0 {
+    margin: 0 !important;
+  }
+
+  .m-md-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-md-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-md-3 {
+    margin: 1rem !important;
+  }
+
+  .m-md-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-md-5 {
+    margin: 3rem !important;
+  }
+
+  .m-md-auto {
+    margin: auto !important;
+  }
+
+  .mx-md-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-md-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-md-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-md-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-md-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-md-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-md-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-md-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-md-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-md-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-md-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-md-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-md-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-md-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-md-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-md-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-md-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-md-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-md-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-md-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-md-auto {
+    margin-top: auto !important;
+  }
+
+  .me-md-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-md-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-md-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-md-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-md-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-md-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-md-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-md-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-md-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-md-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-md-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-md-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-md-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-md-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-md-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-md-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-md-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-md-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-md-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-md-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-md-auto {
+    margin-left: auto !important;
+  }
+
+  .p-md-0 {
+    padding: 0 !important;
+  }
+
+  .p-md-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-md-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-md-3 {
+    padding: 1rem !important;
+  }
+
+  .p-md-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-md-5 {
+    padding: 3rem !important;
+  }
+
+  .px-md-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-md-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-md-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-md-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-md-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-md-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-md-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-md-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-md-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-md-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-md-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-md-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-md-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-md-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-md-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-md-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-md-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-md-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-md-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-md-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-md-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-md-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-md-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-md-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-md-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-md-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-md-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-md-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-md-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-md-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-md-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-md-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-md-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-md-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-md-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-md-5 {
+    padding-left: 3rem !important;
+  }
+
+  .text-md-start {
+    text-align: left !important;
+  }
+
+  .text-md-end {
+    text-align: right !important;
+  }
+
+  .text-md-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 992px) {
+  .float-lg-start {
+    float: left !important;
+  }
+
+  .float-lg-end {
+    float: right !important;
+  }
+
+  .float-lg-none {
+    float: none !important;
+  }
+
+  .d-lg-inline {
+    display: inline !important;
+  }
+
+  .d-lg-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-lg-block {
+    display: block !important;
+  }
+
+  .d-lg-grid {
+    display: grid !important;
+  }
+
+  .d-lg-table {
+    display: table !important;
+  }
+
+  .d-lg-table-row {
+    display: table-row !important;
+  }
+
+  .d-lg-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-lg-flex {
+    display: flex !important;
+  }
+
+  .d-lg-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-lg-none {
+    display: none !important;
+  }
+
+  .flex-lg-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-lg-row {
+    flex-direction: row !important;
+  }
+
+  .flex-lg-column {
+    flex-direction: column !important;
+  }
+
+  .flex-lg-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-lg-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-lg-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-lg-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-lg-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-lg-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-lg-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-lg-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-lg-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-lg-0 {
+    gap: 0 !important;
+  }
+
+  .gap-lg-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-lg-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-lg-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-lg-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-lg-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-lg-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-lg-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-lg-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-lg-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-lg-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-lg-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-lg-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-lg-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-lg-center {
+    align-items: center !important;
+  }
+
+  .align-items-lg-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-lg-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-lg-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-lg-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-lg-center {
+    align-content: center !important;
+  }
+
+  .align-content-lg-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-lg-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-lg-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-lg-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-lg-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-lg-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-lg-center {
+    align-self: center !important;
+  }
+
+  .align-self-lg-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-lg-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-lg-first {
+    order: -1 !important;
+  }
+
+  .order-lg-0 {
+    order: 0 !important;
+  }
+
+  .order-lg-1 {
+    order: 1 !important;
+  }
+
+  .order-lg-2 {
+    order: 2 !important;
+  }
+
+  .order-lg-3 {
+    order: 3 !important;
+  }
+
+  .order-lg-4 {
+    order: 4 !important;
+  }
+
+  .order-lg-5 {
+    order: 5 !important;
+  }
+
+  .order-lg-last {
+    order: 6 !important;
+  }
+
+  .m-lg-0 {
+    margin: 0 !important;
+  }
+
+  .m-lg-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-lg-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-lg-3 {
+    margin: 1rem !important;
+  }
+
+  .m-lg-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-lg-5 {
+    margin: 3rem !important;
+  }
+
+  .m-lg-auto {
+    margin: auto !important;
+  }
+
+  .mx-lg-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-lg-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-lg-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-lg-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-lg-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-lg-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-lg-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-lg-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-lg-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-lg-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-lg-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-lg-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-lg-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-lg-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-lg-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-lg-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-lg-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-lg-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-lg-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-lg-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-lg-auto {
+    margin-top: auto !important;
+  }
+
+  .me-lg-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-lg-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-lg-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-lg-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-lg-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-lg-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-lg-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-lg-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-lg-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-lg-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-lg-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-lg-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-lg-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-lg-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-lg-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-lg-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-lg-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-lg-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-lg-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-lg-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-lg-auto {
+    margin-left: auto !important;
+  }
+
+  .p-lg-0 {
+    padding: 0 !important;
+  }
+
+  .p-lg-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-lg-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-lg-3 {
+    padding: 1rem !important;
+  }
+
+  .p-lg-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-lg-5 {
+    padding: 3rem !important;
+  }
+
+  .px-lg-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-lg-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-lg-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-lg-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-lg-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-lg-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-lg-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-lg-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-lg-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-lg-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-lg-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-lg-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-lg-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-lg-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-lg-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-lg-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-lg-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-lg-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-lg-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-lg-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-lg-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-lg-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-lg-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-lg-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-lg-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-lg-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-lg-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-lg-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-lg-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-lg-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-lg-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-lg-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-lg-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-lg-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-lg-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-lg-5 {
+    padding-left: 3rem !important;
+  }
+
+  .text-lg-start {
+    text-align: left !important;
+  }
+
+  .text-lg-end {
+    text-align: right !important;
+  }
+
+  .text-lg-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 1200px) {
+  .float-xl-start {
+    float: left !important;
+  }
+
+  .float-xl-end {
+    float: right !important;
+  }
+
+  .float-xl-none {
+    float: none !important;
+  }
+
+  .d-xl-inline {
+    display: inline !important;
+  }
+
+  .d-xl-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-xl-block {
+    display: block !important;
+  }
+
+  .d-xl-grid {
+    display: grid !important;
+  }
+
+  .d-xl-table {
+    display: table !important;
+  }
+
+  .d-xl-table-row {
+    display: table-row !important;
+  }
+
+  .d-xl-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-xl-flex {
+    display: flex !important;
+  }
+
+  .d-xl-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-xl-none {
+    display: none !important;
+  }
+
+  .flex-xl-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-xl-row {
+    flex-direction: row !important;
+  }
+
+  .flex-xl-column {
+    flex-direction: column !important;
+  }
+
+  .flex-xl-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-xl-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-xl-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-xl-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-xl-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-xl-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-xl-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-xl-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-xl-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-xl-0 {
+    gap: 0 !important;
+  }
+
+  .gap-xl-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-xl-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-xl-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-xl-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-xl-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-xl-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-xl-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-xl-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-xl-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-xl-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-xl-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-xl-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-xl-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-xl-center {
+    align-items: center !important;
+  }
+
+  .align-items-xl-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-xl-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-xl-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-xl-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-xl-center {
+    align-content: center !important;
+  }
+
+  .align-content-xl-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-xl-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-xl-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-xl-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-xl-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-xl-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-xl-center {
+    align-self: center !important;
+  }
+
+  .align-self-xl-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-xl-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-xl-first {
+    order: -1 !important;
+  }
+
+  .order-xl-0 {
+    order: 0 !important;
+  }
+
+  .order-xl-1 {
+    order: 1 !important;
+  }
+
+  .order-xl-2 {
+    order: 2 !important;
+  }
+
+  .order-xl-3 {
+    order: 3 !important;
+  }
+
+  .order-xl-4 {
+    order: 4 !important;
+  }
+
+  .order-xl-5 {
+    order: 5 !important;
+  }
+
+  .order-xl-last {
+    order: 6 !important;
+  }
+
+  .m-xl-0 {
+    margin: 0 !important;
+  }
+
+  .m-xl-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-xl-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-xl-3 {
+    margin: 1rem !important;
+  }
+
+  .m-xl-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-xl-5 {
+    margin: 3rem !important;
+  }
+
+  .m-xl-auto {
+    margin: auto !important;
+  }
+
+  .mx-xl-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-xl-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-xl-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-xl-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-xl-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-xl-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-xl-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-xl-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-xl-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-xl-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-xl-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-xl-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-xl-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-xl-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-xl-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-xl-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-xl-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-xl-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-xl-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-xl-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-xl-auto {
+    margin-top: auto !important;
+  }
+
+  .me-xl-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-xl-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-xl-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-xl-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-xl-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-xl-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-xl-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-xl-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-xl-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-xl-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-xl-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-xl-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-xl-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-xl-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-xl-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-xl-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-xl-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-xl-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-xl-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-xl-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-xl-auto {
+    margin-left: auto !important;
+  }
+
+  .p-xl-0 {
+    padding: 0 !important;
+  }
+
+  .p-xl-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-xl-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-xl-3 {
+    padding: 1rem !important;
+  }
+
+  .p-xl-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-xl-5 {
+    padding: 3rem !important;
+  }
+
+  .px-xl-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-xl-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-xl-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-xl-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-xl-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-xl-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-xl-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-xl-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-xl-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-xl-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-xl-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-xl-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-xl-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-xl-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-xl-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-xl-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-xl-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-xl-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-xl-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-xl-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-xl-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-xl-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-xl-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-xl-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-xl-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-xl-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-xl-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-xl-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-xl-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-xl-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-xl-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-xl-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-xl-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-xl-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-xl-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-xl-5 {
+    padding-left: 3rem !important;
+  }
+
+  .text-xl-start {
+    text-align: left !important;
+  }
+
+  .text-xl-end {
+    text-align: right !important;
+  }
+
+  .text-xl-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 1400px) {
+  .float-xxl-start {
+    float: left !important;
+  }
+
+  .float-xxl-end {
+    float: right !important;
+  }
+
+  .float-xxl-none {
+    float: none !important;
+  }
+
+  .d-xxl-inline {
+    display: inline !important;
+  }
+
+  .d-xxl-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-xxl-block {
+    display: block !important;
+  }
+
+  .d-xxl-grid {
+    display: grid !important;
+  }
+
+  .d-xxl-table {
+    display: table !important;
+  }
+
+  .d-xxl-table-row {
+    display: table-row !important;
+  }
+
+  .d-xxl-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-xxl-flex {
+    display: flex !important;
+  }
+
+  .d-xxl-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-xxl-none {
+    display: none !important;
+  }
+
+  .flex-xxl-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-xxl-row {
+    flex-direction: row !important;
+  }
+
+  .flex-xxl-column {
+    flex-direction: column !important;
+  }
+
+  .flex-xxl-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-xxl-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-xxl-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-xxl-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-xxl-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-xxl-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-xxl-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-xxl-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-xxl-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-xxl-0 {
+    gap: 0 !important;
+  }
+
+  .gap-xxl-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-xxl-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-xxl-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-xxl-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-xxl-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-xxl-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-xxl-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-xxl-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-xxl-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-xxl-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-xxl-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-xxl-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-xxl-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-xxl-center {
+    align-items: center !important;
+  }
+
+  .align-items-xxl-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-xxl-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-xxl-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-xxl-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-xxl-center {
+    align-content: center !important;
+  }
+
+  .align-content-xxl-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-xxl-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-xxl-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-xxl-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-xxl-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-xxl-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-xxl-center {
+    align-self: center !important;
+  }
+
+  .align-self-xxl-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-xxl-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-xxl-first {
+    order: -1 !important;
+  }
+
+  .order-xxl-0 {
+    order: 0 !important;
+  }
+
+  .order-xxl-1 {
+    order: 1 !important;
+  }
+
+  .order-xxl-2 {
+    order: 2 !important;
+  }
+
+  .order-xxl-3 {
+    order: 3 !important;
+  }
+
+  .order-xxl-4 {
+    order: 4 !important;
+  }
+
+  .order-xxl-5 {
+    order: 5 !important;
+  }
+
+  .order-xxl-last {
+    order: 6 !important;
+  }
+
+  .m-xxl-0 {
+    margin: 0 !important;
+  }
+
+  .m-xxl-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-xxl-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-xxl-3 {
+    margin: 1rem !important;
+  }
+
+  .m-xxl-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-xxl-5 {
+    margin: 3rem !important;
+  }
+
+  .m-xxl-auto {
+    margin: auto !important;
+  }
+
+  .mx-xxl-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-xxl-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-xxl-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-xxl-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-xxl-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-xxl-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-xxl-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-xxl-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-xxl-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-xxl-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-xxl-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-xxl-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-xxl-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-xxl-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-xxl-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-xxl-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-xxl-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-xxl-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-xxl-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-xxl-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-xxl-auto {
+    margin-top: auto !important;
+  }
+
+  .me-xxl-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-xxl-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-xxl-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-xxl-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-xxl-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-xxl-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-xxl-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-xxl-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-xxl-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-xxl-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-xxl-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-xxl-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-xxl-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-xxl-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-xxl-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-xxl-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-xxl-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-xxl-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-xxl-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-xxl-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-xxl-auto {
+    margin-left: auto !important;
+  }
+
+  .p-xxl-0 {
+    padding: 0 !important;
+  }
+
+  .p-xxl-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-xxl-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-xxl-3 {
+    padding: 1rem !important;
+  }
+
+  .p-xxl-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-xxl-5 {
+    padding: 3rem !important;
+  }
+
+  .px-xxl-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-xxl-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-xxl-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-xxl-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-xxl-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-xxl-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-xxl-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-xxl-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-xxl-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-xxl-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-xxl-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-xxl-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-xxl-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-xxl-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-xxl-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-xxl-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-xxl-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-xxl-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-xxl-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-xxl-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-xxl-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-xxl-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-xxl-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-xxl-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-xxl-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-xxl-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-xxl-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-xxl-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-xxl-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-xxl-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-xxl-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-xxl-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-xxl-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-xxl-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-xxl-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-xxl-5 {
+    padding-left: 3rem !important;
+  }
+
+  .text-xxl-start {
+    text-align: left !important;
+  }
+
+  .text-xxl-end {
+    text-align: right !important;
+  }
+
+  .text-xxl-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 1200px) {
+  .fs-1 {
+    font-size: 2.5rem !important;
+  }
+
+  .fs-2 {
+    font-size: 2rem !important;
+  }
+
+  .fs-3 {
+    font-size: 1.75rem !important;
+  }
+
+  .fs-4 {
+    font-size: 1.5rem !important;
+  }
+}
+@media print {
+  .d-print-inline {
+    display: inline !important;
+  }
+
+  .d-print-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-print-block {
+    display: block !important;
+  }
+
+  .d-print-grid {
+    display: grid !important;
+  }
+
+  .d-print-table {
+    display: table !important;
+  }
+
+  .d-print-table-row {
+    display: table-row !important;
+  }
+
+  .d-print-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-print-flex {
+    display: flex !important;
+  }
+
+  .d-print-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-print-none {
+    display: none !important;
+  }
+}
+
+/*# sourceMappingURL=bootstrap-utilities.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map
new file mode 100644
index 0000000..8b5cb0d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap-utilities.scss","../../scss/mixins/_clearfix.scss","bootstrap-utilities.css","../../scss/helpers/_colored-links.scss","../../scss/_variables.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/mixins/_breakpoints.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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;Ab0QZ;;AajRQ;EAOI,2BAAA;Ab8QZ;;AarRQ;EAOI,6BAAA;AbkRZ;;AazRQ;EAOI,6BAAA;AbsRZ;;Aa7RQ;EAOI,0BAAA;Ab0RZ;;AajSQ;EAOI,mCAAA;EAAA,2BAAA;Ab8RZ;;AarSQ;EAOI,iBAAA;AbkSZ;;AazSQ;EAOI,mBAAA;AbsSZ;;Aa7SQ;EAOI,oBAAA;Ab0SZ;;AajTQ;EAOI,oBAAA;Ab8SZ;;AarTQ;EAOI,sBAAA;AbkTZ;;AazTQ;EAOI,uBAAA;AbsTZ;;Aa7TQ;EAOI,kBAAA;Ab0TZ;;AajUQ;EAOI,oBAAA;Ab8TZ;;AarUQ;EAOI,qBAAA;AbkUZ;;AazUQ;EAOI,mBAAA;AbsUZ;;Aa7UQ;EAOI,qBAAA;Ab0UZ;;AajVQ;EAOI,sBAAA;Ab8UZ;;AarVQ;EAOI,2CAAA;AbkVZ;;AazVQ;EAOI,sCAAA;AbsVZ;;Aa7VQ;EAOI,sCAAA;Ab0VZ;;AajWQ;EAOI,oCAAA;Ab8VZ;;AarWQ;EAOI,oBAAA;AbkWZ;;AazWQ;EAOI,wCAAA;AbsWZ;;Aa7WQ;EAOI,wBAAA;Ab0WZ;;AajXQ;EAOI,0CAAA;Ab8WZ;;AarXQ;EAOI,0BAAA;AbkXZ;;AazXQ;EAOI,2CAAA;AbsXZ;;Aa7XQ;EAOI,2BAAA;Ab0XZ;;AajYQ;EAOI,yCAAA;Ab8XZ;;AarYQ;EAOI,yBAAA;AbkYZ;;AazYQ;EAOI,gCAAA;AbsYZ;;Aa7YQ;EAOI,gCAAA;Ab0YZ;;AajZQ;EAOI,gCAAA;Ab8YZ;;AarZQ;EAOI,gCAAA;AbkZZ;;AazZQ;EAOI,gCAAA;AbsZZ;;Aa7ZQ;EAOI,gCAAA;Ab0ZZ;;AajaQ;EAOI,gCAAA;Ab8ZZ;;AaraQ;EAOI,gCAAA;AbkaZ;;AazaQ;EAOI,6BAAA;AbsaZ;;Aa7aQ;EAOI,4BAAA;Ab0aZ;;AajbQ;EAOI,4BAAA;Ab8aZ;;AarbQ;EAOI,4BAAA;AbkbZ;;AazbQ;EAOI,4BAAA;AbsbZ;;Aa7bQ;EAOI,4BAAA;Ab0bZ;;AajcQ;EAOI,qBAAA;Ab8bZ;;AarcQ;EAOI,qBAAA;AbkcZ;;AazcQ;EAOI,qBAAA;AbscZ;;Aa7cQ;EAOI,sBAAA;Ab0cZ;;AajdQ;EAOI,sBAAA;Ab8cZ;;AardQ;EAOI,0BAAA;AbkdZ;;AazdQ;EAOI,uBAAA;AbsdZ;;Aa7dQ;EAOI,2BAAA;Ab0dZ;;AajeQ;EAOI,sBAAA;Ab8dZ;;AareQ;EAOI,sBAAA;AbkeZ;;AazeQ;EAOI,sBAAA;AbseZ;;Aa7eQ;EAOI,uBAAA;Ab0eZ;;AajfQ;EAOI,uBAAA;Ab8eZ;;AarfQ;EAOI,2BAAA;AbkfZ;;AazfQ;EAOI,wBAAA;AbsfZ;;Aa7fQ;EAOI,4BAAA;Ab0fZ;;AajgBQ;EAOI,yBAAA;Ab8fZ;;AargBQ;EAOI,8BAAA;AbkgBZ;;AazgBQ;EAOI,iCAAA;AbsgBZ;;Aa7gBQ;EAOI,sCAAA;Ab0gBZ;;AajhBQ;EAOI,yCAAA;Ab8gBZ;;AarhBQ;EAOI,uBAAA;AbkhBZ;;AazhBQ;EAOI,uBAAA;AbshBZ;;Aa7hBQ;EAOI,yBAAA;Ab0hBZ;;AajiBQ;EAOI,yBAAA;Ab8hBZ;;AariBQ;EAOI,0BAAA;AbkiBZ;;AaziBQ;EAOI,4BAAA;AbsiBZ;;Aa7iBQ;EAOI,kCAAA;Ab0iBZ;;AajjBQ;EAOI,iBAAA;Ab8iBZ;;AarjBQ;EAOI,uBAAA;AbkjBZ;;AazjBQ;EAOI,sBAAA;AbsjBZ;;Aa7jBQ;EAOI,oBAAA;Ab0jBZ;;AajkBQ;EAOI,sBAAA;Ab8jBZ;;AarkBQ;EAOI,oBAAA;AbkkBZ;;AazkBQ;EAOI,sCAAA;AbskBZ;;Aa7kBQ;EAOI,oCAAA;Ab0kBZ;;AajlBQ;EAOI,kCAAA;Ab8kBZ;;AarlBQ;EAOI,yCAAA;AbklBZ;;AazlBQ;EAOI,wCAAA;AbslBZ;;Aa7lBQ;EAOI,wCAAA;Ab0lBZ;;AajmBQ;EAOI,kCAAA;Ab8lBZ;;AarmBQ;EAOI,gCAAA;AbkmBZ;;AazmBQ;EAOI,8BAAA;AbsmBZ;;Aa7mBQ;EAOI,gCAAA;Ab0mBZ;;AajnBQ;EAOI,+BAAA;Ab8mBZ;;AarnBQ;EAOI,oCAAA;AbknBZ;;AaznBQ;EAOI,kCAAA;AbsnBZ;;Aa7nBQ;EAOI,gCAAA;Ab0nBZ;;AajoBQ;EAOI,uCAAA;Ab8nBZ;;AaroBQ;EAOI,sCAAA;AbkoBZ;;AazoBQ;EAOI,iCAAA;AbsoBZ;;Aa7oBQ;EAOI,2BAAA;Ab0oBZ;;AajpBQ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AAA;Ab4+BZ;;Aan/BQ;EAOI,8BAAA;Abg/BZ;;Aav/BQ;EAOI,4BAAA;Abo/BZ;;Aa3/BQ;EAOI,8BAAA;Abw/BZ;;Aa//BQ;EAOI,4BAAA;Ab4/BZ;;AangCQ;EAOI,2BAAA;AbggCZ;;AavgCQ;EAOI,iCAAA;AbogCZ;;Aa3gCQ;EAOI,gCAAA;AbwgCZ;;Aa/gCQ;EAOI,8BAAA;Ab4gCZ;;AanhCQ;EAOI,gCAAA;AbghCZ;;AavhCQ;EAOI,8BAAA;AbohCZ;;Aa3hCQ;EAOI,4BAAA;AbwhCZ;;Aa/hCQ;EAOI,kCAAA;Ab4hCZ;;AaniCQ;EAOI,iCAAA;AbgiCZ;;AaviCQ;EAOI,+BAAA;AboiCZ;;Aa3iCQ;EAOI,iCAAA;AbwiCZ;;Aa/iCQ;EAOI,+BAAA;Ab4iCZ;;AanjCQ;EAOI,0BAAA;AbgjCZ;;AavjCQ;EAOI,gCAAA;AbojCZ;;Aa3jCQ;EAOI,+BAAA;AbwjCZ;;Aa/jCQ;EAOI,6BAAA;Ab4jCZ;;AankCQ;EAOI,+BAAA;AbgkCZ;;AavkCQ;EAOI,6BAAA;AbokCZ;;Aa3kCQ;EAOI,gDAAA;AbwkCZ;;Aa/kCQ;EAOI,4CAAA;Ab4kCZ;;AanlCQ;EAOI,4CAAA;AbglCZ;;AavlCQ;EAOI,0CAAA;AbolCZ;;Aa3lCQ;EAOI,4CAAA;AbwlCZ;;Aa/lCQ;EAOI,6BAAA;Ab4lCZ;;AanmCQ;EAOI,0BAAA;AbgmCZ;;AavmCQ;EAOI,6BAAA;AbomCZ;;Aa3mCQ;EAOI,6BAAA;AbwmCZ;;Aa/mCQ;EAOI,2BAAA;Ab4mCZ;;AannCQ;EAOI,+BAAA;AbgnCZ;;AavnCQ;EAOI,2BAAA;AbonCZ;;Aa3nCQ;EAOI,2BAAA;AbwnCZ;;Aa/nCQ;EAOI,8BAAA;Ab4nCZ;;AanoCQ;EAOI,yBAAA;AbgoCZ;;AavoCQ;EAOI,4BAAA;AbooCZ;;Aa3oCQ;EAOI,2BAAA;AbwoCZ;;Aa/oCQ;EAOI,yBAAA;Ab4oCZ;;AanpCQ;EAOI,2BAAA;AbgpCZ;;AavpCQ;EAOI,4BAAA;AbopCZ;;Aa3pCQ;EAOI,6BAAA;AbwpCZ;;Aa/pCQ;EAOI,gCAAA;Ab4pCZ;;AanqCQ;EAOI,qCAAA;AbgqCZ;;AavqCQ;EAOI,wCAAA;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CV;;Ea1/CM;IAOI,8BAAA;Ebu/CV;;Ea9/CM;IAOI,iCAAA;Eb2/CV;;EalgDM;IAOI,sCAAA;Eb+/CV;;EatgDM;IAOI,yCAAA;EbmgDV;;Ea1gDM;IAOI,uBAAA;EbugDV;;Ea9gDM;IAOI,uBAAA;Eb2gDV;;EalhDM;IAOI,yBAAA;Eb+gDV;;EathDM;IAOI,yBAAA;EbmhDV;;Ea1hDM;IAOI,0BAAA;EbuhDV;;Ea9hDM;IAOI,4BAAA;Eb2hDV;;EaliDM;IAOI,kCAAA;Eb+hDV;;EatiDM;IAOI,iBAAA;EbmiDV;;Ea1iDM;IAOI,uBAAA;EbuiDV;;Ea9iDM;IAOI,sBAAA;Eb2iDV;;EaljDM;IAOI,oBAAA;Eb+iDV;;EatjDM;IAOI,sBAAA;EbmjDV;;Ea1jDM;IAOI,oBAAA;EbujDV;;Ea9jDM;IAOI,sCAAA;Eb2jDV;;EalkDM;IAOI,oCAAA;Eb+jDV;;EatkDM;IAOI,kCAAA;EbmkDV;;Ea1kDM;IAOI,yCAAA;EbukDV;;Ea9kDM;IAOI,wCAAA;Eb2kDV;;EallDM;IAOI,wCAAA;Eb+kDV;;EatlDM;IAOI,kCAAA;EbmlDV;;Ea1lDM;IAOI,gCAAA;EbulDV;;Ea9lDM;IAOI,8BAAA;Eb2lDV;;EalmDM;IAOI,gCAAA;Eb+lDV;;EatmDM;IAOI,+BAAA;EbmmDV;;Ea1mDM;IAOI,oCAAA;EbumDV;;Ea9mDM;IAOI,kCAAA;Eb2mDV;;EalnDM;IAOI,gCAAA;Eb+mDV;;EatnDM;IAOI,uCAAA;EbmnDV;;Ea1nDM;IAOI,sCAAA;EbunDV;;Ea9nDM;IAOI,iCAAA;Eb2nDV;;EaloDM;IAOI,2BAAA;Eb+nDV;;EatoDM;IAOI,iCAAA;EbmoDV;;Ea1oDM;IAOI,+BAAA;EbuoDV;;Ea9oDM;IAOI,6BAAA;Eb2oDV;;EalpDM;IAOI,+BAAA;Eb+oDV;;EatpDM;IAOI,8BAAA;EbmpDV;;Ea1pDM;IAOI,oBAAA;EbupDV;;Ea9pDM;IAOI,mBAAA;Eb2pDV;;EalqDM;IAOI,mBAAA;Eb+pDV;;EatqDM;IAOI,mBAAA;EbmqDV;;Ea1qDM;IAOI,mBAAA;EbuqDV;;Ea9qDM;IAOI,mBAAA;Eb2qDV;;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AOI,4BAAA;Eb6gEV;;EaphEM;IAOI,kCAAA;EbihEV;;EaxhEM;IAOI,iCAAA;EbqhEV;;Ea5hEM;IAOI,+BAAA;EbyhEV;;EahiEM;IAOI,iCAAA;Eb6hEV;;EapiEM;IAOI,+BAAA;EbiiEV;;EaxiEM;IAOI,0BAAA;EbqiEV;;Ea5iEM;IAOI,gCAAA;EbyiEV;;EahjEM;IAOI,+BAAA;Eb6iEV;;EapjEM;IAOI,6BAAA;EbijEV;;EaxjEM;IAOI,+BAAA;EbqjEV;;Ea5jEM;IAOI,6BAAA;EbyjEV;;EahkEM;IAOI,2BAAA;Eb6jEV;;EapkEM;IAOI,4BAAA;EbikEV;;EaxkEM;IAOI,6BAAA;EbqkEV;AACF;AK7kEI;EQAI;IAOI,sBAAA;Eb0kEV;;EajlEM;IAOI,uBAAA;Eb8kEV;;EarlEM;IAOI,sBAAA;EbklEV;;EazlEM;IAOI,0BAAA;EbslEV;;Ea7lEM;IAOI,gCAAA;Eb0lEV;;EajmEM;IAOI,yBAAA;Eb8lEV;;EarmEM;IAOI,wBAAA;EbkmEV;;EazmEM;IAOI,yBAAA;EbsmEV;;Ea7mEM;IAOI,6BAAA;Eb0mEV;;EajnEM;IAOI,8BAAA;Eb8mEV;;EarnEM;IAOI,wBAAA;EbknEV;;EaznEM;IAOI,+BAAA;EbsnEV;;Ea7nEM;IAOI,wBAAA;Eb0nEV;;EajoEM;IAOI,yBAAA;Eb8nEV;;EaroEM;IAOI,8BAAA;EbkoEV;;EazoEM;IAOI,iCAAA;EbsoEV;;Ea7oEM;IAOI,sCAAA;Eb0oEV;;EajpEM;IAOI,yCAAA;Eb8oEV;;EarpEM;IAOI,uBAAA;EbkpEV;;EazpEM;IAOI,uBAAA;EbspEV;;Ea7pEM;IAOI,yBAAA;Eb0pEV;;EajqEM;IAOI,yBAAA;Eb8pEV;;EarqEM;IAOI,0BAAA;EbkqEV;;EazqEM;IAOI,4BAAA;EbsqEV;;Ea7qEM;IAOI,kCAAA;Eb0qEV;;EajrEM;IAOI,iBAAA;Eb8qEV;;EarrEM;IAOI,uBAAA;EbkrEV;;EazrEM;IAOI,sBAAA;EbsrEV;;Ea7rEM;IAOI,oBAAA;Eb0rEV;;EajsEM;IAOI,sBAAA;Eb8rEV;;EarsEM;IAOI,oBAAA;EbksEV;;Eaz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;IAOI,sBAAA;Eb6tFV;;EapuFM;IAOI,0BAAA;EbiuFV;;EaxuFM;IAOI,gCAAA;EbquFV;;Ea5uFM;IAOI,yBAAA;EbyuFV;;EahvFM;IAOI,wBAAA;Eb6uFV;;EapvFM;IAOI,yBAAA;EbivFV;;EaxvFM;IAOI,6BAAA;EbqvFV;;Ea5vFM;IAOI,8BAAA;EbyvFV;;EahwFM;IAOI,wBAAA;Eb6vFV;;EapwFM;IAOI,+BAAA;EbiwFV;;EaxwFM;IAOI,wBAAA;EbqwFV;;Ea5wFM;IAOI,yBAAA;EbywFV;;EahxFM;IAOI,8BAAA;Eb6wFV;;EapxFM;IAOI,iCAAA;EbixFV;;EaxxFM;IAOI,sCAAA;EbqxFV;;Ea5xFM;IAOI,yCAAA;EbyxFV;;EahyFM;IAOI,uBAAA;Eb6xFV;;EapyFM;IAOI,uBAAA;EbiyFV;;EaxyFM;IAOI,yBAAA;EbqyFV;;Ea5yFM;IAOI,yBAAA;EbyyFV;;EahzFM;IAOI,0BAAA;Eb6yFV;;EapzFM;IAOI,4BAAA;EbizFV;;EaxzFM;IAOI,kCAAA;EbqzFV;;Ea5zFM;IAOI,iBAAA;EbyzFV;;Eah0FM;IAOI,uBAAA;Eb6zFV;;Eap0FM;IAOI,sBAAA;Ebi0FV;;Eax0FM;IAOI,oBAAA;Ebq0FV;;Ea50FM;IAOI,sBAAA;Eby0FV;;Eah1FM;IAOI,oBAAA;Eb60FV;;Eap1FM;IAOI,sCAAA;Ebi1FV;;Eax1FM;IAOI,oCAAA;Ebq1FV;;Ea51FM;IAOI,kCAAA;Eby1FV;;Eah2FM;IAOI,yCAAA;Eb61FV;;Eap2FM;IAOI,wCAAA;Ebi2FV;;Eax2FM;IAOI,wCAAA;Ebq2FV;;Ea52FM;IAOI,kCAAA;Eby2FV;;Eah3FM;IAOI,gCAAA;Eb62FV;;Eap3FM;IAOI,8BAAA;Ebi3FV;;Eax3FM;IAOI,gCAAA;Ebq3FV;;Ea53FM;IAOI,+BAAA;Eby3FV;;Eah4FM;IAOI,oCAAA;Eb63FV;;Eap4FM;IAOI,kCAAA;Ebi4FV;;Eax4FM;IAOI,gCAAA;Ebq4FV;;Ea54FM;IAOI,uCAAA;Eby4FV;;Eah5FM;IAOI,sCAAA;Eb64FV;;Eap5FM;IAOI,iCAAA;Ebi5FV;;Eax5FM;IAO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EbmvGV;;Ea1vGM;IAOI,+BAAA;EbuvGV;;Ea9vGM;IAOI,8BAAA;Eb2vGV;;EalwGM;IAOI,4BAAA;Eb+vGV;;EatwGM;IAOI,8BAAA;EbmwGV;;Ea1wGM;IAOI,4BAAA;EbuwGV;;Ea9wGM;IAOI,2BAAA;Eb2wGV;;EalxGM;IAOI,iCAAA;Eb+wGV;;EatxGM;IAOI,gCAAA;EbmxGV;;Ea1xGM;IAOI,8BAAA;EbuxGV;;Ea9xGM;IAOI,gCAAA;Eb2xGV;;EalyGM;IAOI,8BAAA;Eb+xGV;;EatyGM;IAOI,4BAAA;EbmyGV;;Ea1yGM;IAOI,kCAAA;EbuyGV;;Ea9yGM;IAOI,iCAAA;Eb2yGV;;EalzGM;IAOI,+BAAA;Eb+yGV;;EatzGM;IAOI,iCAAA;EbmzGV;;Ea1zGM;IAOI,+BAAA;EbuzGV;;Ea9zGM;IAOI,0BAAA;Eb2zGV;;Eal0GM;IAOI,gCAAA;Eb+zGV;;Eat0GM;IAOI,+BAAA;Ebm0GV;;Ea10GM;IAOI,6BAAA;Ebu0GV;;Ea90GM;IAOI,+BAAA;Eb20GV;;Eal1GM;IAOI,6BAAA;Eb+0GV;;Eat1GM;IAOI,2BAAA;Ebm1GV;;Ea11GM;IAOI,4BAAA;Ebu1GV;;Ea91GM;IAOI,6BAAA;Eb21GV;AACF;AKn2GI;EQAI;IAOI,sBAAA;Ebg2GV;;Eav2GM;IAOI,uBAAA;Ebo2GV;;Ea32GM;IAOI,sBAAA;Ebw2GV;;Ea/2GM;IAOI,0BAAA;Eb42GV;;Ean3GM;IAOI,gCAAA;Ebg3GV;;Eav3GM;IAOI,yBAAA;Ebo3GV;;Ea33GM;IAOI,wBAAA;Ebw3GV;;Ea/3GM;IAOI,yBAAA;Eb43GV;;Ean4GM;IAOI,6BAAA;Ebg4GV;;Eav4GM;IAOI,8BAAA;Ebo4GV;;Ea34GM;IAOI,wBAAA;Ebw4GV;;Ea/4GM;IAOI,+BAAA;Eb44GV;;Ean5GM;IAOI,wBAAA;Ebg5GV;;Eav5GM;IAOI,yBAAA;Ebo5GV;;Ea35GM;IAOI,8BAAA;Ebw5GV;;Ea/5GM;IAOI,iCAAA;Eb45GV;;Ean6GM;IAOI,sCAAA;Ebg6GV;;Eav6GM;IAOI,yCAAA;Ebo6GV;;Ea36GM;IAOI,uBAAA;Ebw6GV;;Ea/6GM;IAOI,u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;Eaz8HM;IAOI,0BAAA;Ebs8HV;;Ea78HM;IAOI,gCAAA;Eb08HV;;Eaj9HM;IAOI,+BAAA;Eb88HV;;Ear9HM;IAOI,6BAAA;Ebk9HV;;Eaz9HM;IAOI,+BAAA;Ebs9HV;;Ea79HM;IAOI,6BAAA;Eb09HV;;Eaj+HM;IAOI,2BAAA;Eb89HV;;Ear+HM;IAOI,4BAAA;Ebk+HV;;Eaz+HM;IAOI,6BAAA;Ebs+HV;AACF;AK9+HI;EQAI;IAOI,sBAAA;Eb2+HV;;Eal/HM;IAOI,uBAAA;Eb++HV;;Eat/HM;IAOI,sBAAA;Ebm/HV;;Ea1/HM;IAOI,0BAAA;Ebu/HV;;Ea9/HM;IAOI,gCAAA;Eb2/HV;;EalgIM;IAOI,yBAAA;Eb+/HV;;EatgIM;IAOI,wBAAA;EbmgIV;;Ea1gIM;IAOI,yBAAA;EbugIV;;Ea9gIM;IAOI,6BAAA;Eb2gIV;;EalhIM;IAOI,8BAAA;Eb+gIV;;EathIM;IAOI,wBAAA;EbmhIV;;Ea1hIM;IAOI,+BAAA;EbuhIV;;Ea9hIM;IAOI,wBAAA;Eb2hIV;;EaliIM;IAOI,yBAAA;Eb+hIV;;EatiIM;IAOI,8BAAA;EbmiIV;;Ea1iIM;IAOI,iCAAA;EbuiIV;;Ea9iIM;IAOI,sCAAA;Eb2iIV;;EaljIM;IAOI,yCAAA;Eb+iIV;;EatjIM;IAOI,uBAAA;EbmjIV;;Ea1jIM;IAOI,uBAAA;EbujIV;;Ea9jIM;IAOI,yBAAA;Eb2jIV;;EalkIM;IAOI,yBAAA;Eb+jIV;;EatkIM;IAOI,0BAAA;EbmkIV;;Ea1kIM;IAOI,4BAAA;EbukIV;;Ea9kIM;IAOI,kCAAA;Eb2kIV;;EallIM;IAOI,iBAAA;Eb+kIV;;EatlIM;IAOI,uBAAA;EbmlIV;;Ea1lIM;IAOI,sBAAA;EbulIV;;Ea9lIM;IAOI,oBAAA;Eb2lIV;;EalmIM;IAOI,sBAAA;Eb+lIV;;EatmIM;IAOI,oBAAA;EbmmIV;;Ea1mIM;IAOI,sCAAA;EbumIV;;Ea9mIM;IAOI,oCAAA;Eb2mIV;;EalnIM;IAOI,kCAAA;Eb+mIV;;EatnIM;IAOI,yCAAA;EbmnIV;;Ea1nIM;IAOI,wCAAA;EbunIV;;Ea9nIM;IAOI,wCAAA;Eb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","file":"bootstrap-utilities.css","sourcesContent":["/*!\n * Bootstrap Utilities v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n","// scss-docs-start clearfix\n@mixin clearfix() {\n  &::after {\n    display: block;\n    clear: both;\n    content: \"\";\n  }\n}\n// scss-docs-end clearfix\n","/*!\n * Bootstrap Utilities v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.link-primary {\n  color: #0d6efd;\n}\n.link-primary:hover, .link-primary:focus {\n  color: #0a58ca;\n}\n\n.link-secondary {\n  color: #6c757d;\n}\n.link-secondary:hover, .link-secondary:focus {\n  color: #565e64;\n}\n\n.link-success {\n  color: #198754;\n}\n.link-success:hover, .link-success:focus {\n  color: #146c43;\n}\n\n.link-info {\n  color: #0dcaf0;\n}\n.link-info:hover, .link-info:focus {\n  color: #3dd5f3;\n}\n\n.link-warning {\n  color: #ffc107;\n}\n.link-warning:hover, .link-warning:focus {\n  color: #ffcd39;\n}\n\n.link-danger {\n  color: #dc3545;\n}\n.link-danger:hover, .link-danger:focus {\n  color: #b02a37;\n}\n\n.link-light {\n  color: #f8f9fa;\n}\n.link-light:hover, .link-light:focus {\n  color: #f9fafb;\n}\n\n.link-dark {\n  color: #212529;\n}\n.link-dark:hover, .link-dark:focus {\n  color: #1a1e21;\n}\n\n.ratio {\n  position: relative;\n  width: 100%;\n}\n.ratio::before {\n  display: block;\n  padding-top: var(--bs-aspect-ratio);\n  content: \"\";\n}\n.ratio > * {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.ratio-1x1 {\n  --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n  --bs-aspect-ratio: calc(3 / 4 * 100%);\n}\n\n.ratio-16x9 {\n  --bs-aspect-ratio: calc(9 / 16 * 100%);\n}\n\n.ratio-21x9 {\n  --bs-aspect-ratio: calc(9 / 21 * 100%);\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.sticky-top {\n  position: sticky;\n  top: 0;\n  z-index: 1020;\n}\n\n@media (min-width: 576px) {\n  .sticky-sm-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 768px) {\n  .sticky-md-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 992px) {\n  .sticky-lg-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1200px) {\n  .sticky-xl-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1400px) {\n  .sticky-xxl-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1;\n  content: \"\";\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: 0.25;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.float-start {\n  float: left !important;\n}\n\n.float-end {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-25 {\n  opacity: 0.25 !important;\n}\n\n.opacity-50 {\n  opacity: 0.5 !important;\n}\n\n.opacity-75 {\n  opacity: 0.75 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: sticky !important;\n}\n\n.top-0 {\n  top: 0 !important;\n}\n\n.top-50 {\n  top: 50% !important;\n}\n\n.top-100 {\n  top: 100% !important;\n}\n\n.bottom-0 {\n  bottom: 0 !important;\n}\n\n.bottom-50 {\n  bottom: 50% !important;\n}\n\n.bottom-100 {\n  bottom: 100% !important;\n}\n\n.start-0 {\n  left: 0 !important;\n}\n\n.start-50 {\n  left: 50% !important;\n}\n\n.start-100 {\n  left: 100% !important;\n}\n\n.end-0 {\n  right: 0 !important;\n}\n\n.end-50 {\n  right: 50% !important;\n}\n\n.end-100 {\n  right: 100% !important;\n}\n\n.translate-middle {\n  transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n  transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n  transform: translateY(-50%) !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-end {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-end-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-start {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-start-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #0d6efd !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #198754 !important;\n}\n\n.border-info {\n  border-color: #0dcaf0 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #212529 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.border-1 {\n  border-width: 1px !important;\n}\n\n.border-2 {\n  border-width: 2px !important;\n}\n\n.border-3 {\n  border-width: 3px !important;\n}\n\n.border-4 {\n  border-width: 4px !important;\n}\n\n.border-5 {\n  border-width: 5px !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.vw-100 {\n  width: 100vw !important;\n}\n\n.min-vw-100 {\n  min-width: 100vw !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.vh-100 {\n  height: 100vh !important;\n}\n\n.min-vh-100 {\n  min-height: 100vh !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.gap-0 {\n  gap: 0 !important;\n}\n\n.gap-1 {\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  gap: 1rem !important;\n}\n\n.gap-4 {\n  gap: 1.5rem !important;\n}\n\n.gap-5 {\n  gap: 3rem !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-right: 0 !important;\n  margin-left: 0 !important;\n}\n\n.mx-1 {\n  margin-right: 0.25rem !important;\n  margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-right: 0.5rem !important;\n  margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-right: 1rem !important;\n  margin-left: 1rem !important;\n}\n\n.mx-4 {\n  margin-right: 1.5rem !important;\n  margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-right: 3rem !important;\n  margin-left: 3rem !important;\n}\n\n.mx-auto {\n  margin-right: auto !important;\n  margin-left: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-right: 0 !important;\n}\n\n.me-1 {\n  margin-right: 0.25rem !important;\n}\n\n.me-2 {\n  margin-right: 0.5rem !important;\n}\n\n.me-3 {\n  margin-right: 1rem !important;\n}\n\n.me-4 {\n  margin-right: 1.5rem !important;\n}\n\n.me-5 {\n  margin-right: 3rem !important;\n}\n\n.me-auto {\n  margin-right: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-left: 0 !important;\n}\n\n.ms-1 {\n  margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-left: 1rem !important;\n}\n\n.ms-4 {\n  margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-left: 3rem !important;\n}\n\n.ms-auto {\n  margin-left: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-right: 0 !important;\n  padding-left: 0 !important;\n}\n\n.px-1 {\n  padding-right: 0.25rem !important;\n  padding-left: 0.25rem !important;\n}\n\n.px-2 {\n  padding-right: 0.5rem !important;\n  padding-left: 0.5rem !important;\n}\n\n.px-3 {\n  padding-right: 1rem !important;\n  padding-left: 1rem !important;\n}\n\n.px-4 {\n  padding-right: 1.5rem !important;\n  padding-left: 1.5rem !important;\n}\n\n.px-5 {\n  padding-right: 3rem !important;\n  padding-left: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-right: 0 !important;\n}\n\n.pe-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-right: 1rem !important;\n}\n\n.pe-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-left: 0 !important;\n}\n\n.ps-1 {\n  padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-left: 1rem !important;\n}\n\n.ps-4 {\n  padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-left: 3rem !important;\n}\n\n.font-monospace {\n  font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n  font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n  font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n  font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n  font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n  font-size: 1.25rem !important;\n}\n\n.fs-6 {\n  font-size: 1rem !important;\n}\n\n.fst-italic {\n  font-style: italic !important;\n}\n\n.fst-normal {\n  font-style: normal !important;\n}\n\n.fw-light {\n  font-weight: 300 !important;\n}\n\n.fw-lighter {\n  font-weight: lighter !important;\n}\n\n.fw-normal {\n  font-weight: 400 !important;\n}\n\n.fw-bold {\n  font-weight: 700 !important;\n}\n\n.fw-bolder {\n  font-weight: bolder !important;\n}\n\n.lh-1 {\n  line-height: 1 !important;\n}\n\n.lh-sm {\n  line-height: 1.25 !important;\n}\n\n.lh-base {\n  line-height: 1.5 !important;\n}\n\n.lh-lg {\n  line-height: 2 !important;\n}\n\n.text-start {\n  text-align: left !important;\n}\n\n.text-end {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n.text-decoration-none {\n  text-decoration: none !important;\n}\n\n.text-decoration-underline {\n  text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n  text-decoration: line-through !important;\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.text-wrap {\n  white-space: normal !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n  word-wrap: break-word !important;\n  word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n  --bs-text-opacity: 1;\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  --bs-text-opacity: 1;\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  --bs-text-opacity: 1;\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-reset {\n  --bs-text-opacity: 1;\n  color: inherit !important;\n}\n\n.text-opacity-25 {\n  --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n  --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n  --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n  --bs-text-opacity: 1;\n}\n\n.bg-primary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n  --bs-bg-opacity: 1;\n  background-color: transparent !important;\n}\n\n.bg-opacity-10 {\n  --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n  --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n  --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n  --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n  --bs-bg-opacity: 1;\n}\n\n.bg-gradient {\n  background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n  user-select: all !important;\n}\n\n.user-select-auto {\n  user-select: auto !important;\n}\n\n.user-select-none {\n  user-select: none !important;\n}\n\n.pe-none {\n  pointer-events: none !important;\n}\n\n.pe-auto {\n  pointer-events: auto !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.rounded-1 {\n  border-radius: 0.2rem !important;\n}\n\n.rounded-2 {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-3 {\n  border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-pill {\n  border-radius: 50rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-end {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-start {\n  border-bottom-left-radius: 0.25rem !important;\n  border-top-left-radius: 0.25rem !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-start {\n    float: left !important;\n  }\n\n  .float-sm-end {\n    float: right !important;\n  }\n\n  .float-sm-none {\n    float: none !important;\n  }\n\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-sm-0 {\n    gap: 0 !important;\n  }\n\n  .gap-sm-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-sm-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-sm-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-sm-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-sm-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-sm-start {\n    text-align: left !important;\n  }\n\n  .text-sm-end {\n    text-align: right !important;\n  }\n\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 768px) {\n  .float-md-start {\n    float: left !important;\n  }\n\n  .float-md-end {\n    float: right !important;\n  }\n\n  .float-md-none {\n    float: none !important;\n  }\n\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-md-0 {\n    gap: 0 !important;\n  }\n\n  .gap-md-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-md-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-md-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-md-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-md-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-left: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-md-start {\n    text-align: left !important;\n  }\n\n  .text-md-end {\n    text-align: right !important;\n  }\n\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 992px) {\n  .float-lg-start {\n    float: left !important;\n  }\n\n  .float-lg-end {\n    float: right !important;\n  }\n\n  .float-lg-none {\n    float: none !important;\n  }\n\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-lg-0 {\n    gap: 0 !important;\n  }\n\n  .gap-lg-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-lg-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-lg-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-lg-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-lg-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-lg-start {\n    text-align: left !important;\n  }\n\n  .text-lg-end {\n    text-align: right !important;\n  }\n\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .float-xl-start {\n    float: left !important;\n  }\n\n  .float-xl-end {\n    float: right !important;\n  }\n\n  .float-xl-none {\n    float: none !important;\n  }\n\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xl-start {\n    text-align: left !important;\n  }\n\n  .text-xl-end {\n    text-align: right !important;\n  }\n\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1400px) {\n  .float-xxl-start {\n    float: left !important;\n  }\n\n  .float-xxl-end {\n    float: right !important;\n  }\n\n  .float-xxl-none {\n    float: none !important;\n  }\n\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xxl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xxl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xxl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xxl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xxl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xxl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xxl-start {\n    text-align: left !important;\n  }\n\n  .text-xxl-end {\n    text-align: right !important;\n  }\n\n  .text-xxl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .fs-1 {\n    font-size: 2.5rem !important;\n  }\n\n  .fs-2 {\n    font-size: 2rem !important;\n  }\n\n  .fs-3 {\n    font-size: 1.75rem !important;\n  }\n\n  .fs-4 {\n    font-size: 1.5rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap-utilities.css.map */\n","@each $color, $value in $theme-colors {\n  .link-#{$color} {\n    color: $value;\n\n    @if $link-shade-percentage != 0 {\n      &:hover,\n      &:focus {\n        color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));\n      }\n    }\n  }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white:    #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black:    #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n  \"100\": $gray-100,\n  \"200\": $gray-200,\n  \"300\": $gray-300,\n  \"400\": $gray-400,\n  \"500\": $gray-500,\n  \"600\": $gray-600,\n  \"700\": $gray-700,\n  \"800\": $gray-800,\n  \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue:    #0d6efd !default;\n$indigo:  #6610f2 !default;\n$purple:  #6f42c1 !default;\n$pink:    #d63384 !default;\n$red:     #dc3545 !default;\n$orange:  #fd7e14 !default;\n$yellow:  #ffc107 !default;\n$green:   #198754 !default;\n$teal:    #20c997 !default;\n$cyan:    #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n  \"blue\":       $blue,\n  \"indigo\":     $indigo,\n  \"purple\":     $purple,\n  \"pink\":       $pink,\n  \"red\":        $red,\n  \"orange\":     $orange,\n  \"yellow\":     $yellow,\n  \"green\":      $green,\n  \"teal\":       $teal,\n  \"cyan\":       $cyan,\n  \"white\":      $white,\n  \"gray\":       $gray-600,\n  \"gray-dark\":  $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// scss-docs-start theme-color-variables\n$primary:       $blue !default;\n$secondary:     $gray-600 !default;\n$success:       $green !default;\n$info:          $cyan !default;\n$warning:       $yellow !default;\n$danger:        $red !default;\n$light:         $gray-100 !default;\n$dark:          $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n  \"primary\":    $primary,\n  \"secondary\":  $secondary,\n  \"success\":    $success,\n  \"info\":       $info,\n  \"warning\":    $warning,\n  \"danger\":     $danger,\n  \"light\":      $light,\n  \"dark\":       $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-colors-rgb\n$theme-colors-rgb: map-loop($theme-colors, to-rgb, \"$value\") !default;\n// scss-docs-end theme-colors-rgb\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio:   4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark:      $black !default;\n$color-contrast-light:     $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n  \"blue-100\": $blue-100,\n  \"blue-200\": $blue-200,\n  \"blue-300\": $blue-300,\n  \"blue-400\": $blue-400,\n  \"blue-500\": $blue-500,\n  \"blue-600\": $blue-600,\n  \"blue-700\": $blue-700,\n  \"blue-800\": $blue-800,\n  \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n  \"indigo-100\": $indigo-100,\n  \"indigo-200\": $indigo-200,\n  \"indigo-300\": $indigo-300,\n  \"indigo-400\": $indigo-400,\n  \"indigo-500\": $indigo-500,\n  \"indigo-600\": $indigo-600,\n  \"indigo-700\": $indigo-700,\n  \"indigo-800\": $indigo-800,\n  \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n  \"purple-100\": $purple-200,\n  \"purple-200\": $purple-100,\n  \"purple-300\": $purple-300,\n  \"purple-400\": $purple-400,\n  \"purple-500\": $purple-500,\n  \"purple-600\": $purple-600,\n  \"purple-700\": $purple-700,\n  \"purple-800\": $purple-800,\n  \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n  \"pink-100\": $pink-100,\n  \"pink-200\": $pink-200,\n  \"pink-300\": $pink-300,\n  \"pink-400\": $pink-400,\n  \"pink-500\": $pink-500,\n  \"pink-600\": $pink-600,\n  \"pink-700\": $pink-700,\n  \"pink-800\": $pink-800,\n  \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n  \"red-100\": $red-100,\n  \"red-200\": $red-200,\n  \"red-300\": $red-300,\n  \"red-400\": $red-400,\n  \"red-500\": $red-500,\n  \"red-600\": $red-600,\n  \"red-700\": $red-700,\n  \"red-800\": $red-800,\n  \"red-900\": $red-900\n) !default;\n\n$oranges: (\n  \"orange-100\": $orange-100,\n  \"orange-200\": $orange-200,\n  \"orange-300\": $orange-300,\n  \"orange-400\": $orange-400,\n  \"orange-500\": $orange-500,\n  \"orange-600\": $orange-600,\n  \"orange-700\": $orange-700,\n  \"orange-800\": $orange-800,\n  \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n  \"yellow-100\": $yellow-100,\n  \"yellow-200\": $yellow-200,\n  \"yellow-300\": $yellow-300,\n  \"yellow-400\": $yellow-400,\n  \"yellow-500\": $yellow-500,\n  \"yellow-600\": $yellow-600,\n  \"yellow-700\": $yellow-700,\n  \"yellow-800\": $yellow-800,\n  \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n  \"green-100\": $green-100,\n  \"green-200\": $green-200,\n  \"green-300\": $green-300,\n  \"green-400\": $green-400,\n  \"green-500\": $green-500,\n  \"green-600\": $green-600,\n  \"green-700\": $green-700,\n  \"green-800\": $green-800,\n  \"green-900\": $green-900\n) !default;\n\n$teals: (\n  \"teal-100\": $teal-100,\n  \"teal-200\": $teal-200,\n  \"teal-300\": $teal-300,\n  \"teal-400\": $teal-400,\n  \"teal-500\": $teal-500,\n  \"teal-600\": $teal-600,\n  \"teal-700\": $teal-700,\n  \"teal-800\": $teal-800,\n  \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n  \"cyan-100\": $cyan-100,\n  \"cyan-200\": $cyan-200,\n  \"cyan-300\": $cyan-300,\n  \"cyan-400\": $cyan-400,\n  \"cyan-500\": $cyan-500,\n  \"cyan-600\": $cyan-600,\n  \"cyan-700\": $cyan-700,\n  \"cyan-800\": $cyan-800,\n  \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              false !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-cssgrid:              false !default;\n$enable-button-pointers:      true !default;\n$enable-rfs:                  true !default;\n$enable-validation-icons:     true !default;\n$enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities:  true !default;\n\n// Prefix for :root CSS variables\n\n$variable-prefix:             bs- !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg:                   $white !default;\n$body-color:                $gray-900 !default;\n$body-text-align:           null !default;\n\n// Utilities maps\n//\n// Extends the default `$theme-colors` maps to help create our utilities.\n\n// scss-docs-start utilities-colors\n$utilities-colors: map-merge(\n  $theme-colors-rgb,\n  (\n    \"black\": to-rgb($black),\n    \"white\": to-rgb($white),\n    \"body\":  to-rgb($body-color)\n  )\n) !default;\n// scss-docs-end utilities-colors\n\n// scss-docs-start utilities-text-colors\n$utilities-text-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"text\") !default;\n// scss-docs-end utilities-text-colors\n\n// scss-docs-start utilities-bg-colors\n$utilities-bg-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"bg\") !default;\n// scss-docs-end utilities-bg-colors\n\n// Links\n//\n// Style anchor elements.\n\n$link-color:                              $primary !default;\n$link-decoration:                         underline !default;\n$link-shade-percentage:                   20% !default;\n$link-hover-color:                        shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration:                   null !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 992px,\n  xl: 1200px,\n  xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1140px,\n  xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns:                12 !default;\n$grid-gutter-width:           1.5rem !default;\n$grid-row-columns:            6 !default;\n\n$gutters: $spacers !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width * .5 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n\n$border-color:                $gray-300 !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius:               .25rem !default;\n$border-radius-sm:            .2rem !default;\n$border-radius-lg:            .3rem !default;\n$border-radius-pill:          50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow:                  0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm:               0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg:               0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset:            inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color:      $white !default;\n$component-active-bg:         $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width:                 .3em !default;\n$caret-vertical-align:        $caret-width * .85 !default;\n$caret-spacing:               $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"1x1\": 100%,\n  \"4x3\": calc(3 / 4 * 100%),\n  \"16x9\": calc(9 / 16 * 100%),\n  \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif:      system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base:            var(--#{$variable-prefix}font-sans-serif) !default;\n$font-family-code:            var(--#{$variable-prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root:              null !default;\n$font-size-base:              1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm:                $font-size-base * .875 !default;\n$font-size-lg:                $font-size-base * 1.25 !default;\n\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n\n$h1-font-size:                $font-size-base * 2.5 !default;\n$h2-font-size:                $font-size-base * 2 !default;\n$h3-font-size:                $font-size-base * 1.75 !default;\n$h4-font-size:                $font-size-base * 1.5 !default;\n$h5-font-size:                $font-size-base * 1.25 !default;\n$h6-font-size:                $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n  1: $h1-font-size,\n  2: $h2-font-size,\n  3: $h3-font-size,\n  4: $h4-font-size,\n  5: $h5-font-size,\n  6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n  1: 5rem,\n  2: 4.5rem,\n  3: 4rem,\n  4: 3.5rem,\n  5: 3rem,\n  6: 2.5rem\n) !default;\n\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size:              $font-size-base * 1.25 !default;\n$lead-font-weight:            300 !default;\n\n$small-font-size:             .875em !default;\n\n$sub-sup-font-size:           .75em !default;\n\n$text-muted:                  $gray-600 !default;\n\n$initialism-font-size:        $small-font-size !default;\n\n$blockquote-margin-y:         $spacer !default;\n$blockquote-font-size:        $font-size-base * 1.25 !default;\n$blockquote-footer-color:     $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y:                 $spacer !default;\n$hr-color:                    inherit !default;\n$hr-height:                   $border-width !default;\n$hr-opacity:                  .25 !default;\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$mark-padding:                .2em !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n$nested-kbd-font-weight:      $font-weight-bold !default;\n\n$list-inline-padding:         .5rem !default;\n\n$mark-bg:                     #fcf8e3 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y:        .5rem !default;\n$table-cell-padding-x:        .5rem !default;\n$table-cell-padding-y-sm:     .25rem !default;\n$table-cell-padding-x-sm:     .25rem !default;\n\n$table-cell-vertical-align:   top !default;\n\n$table-color:                 $body-color !default;\n$table-bg:                    transparent !default;\n$table-accent-bg:             transparent !default;\n\n$table-th-font-weight:        null !default;\n\n$table-striped-color:         $table-color !default;\n$table-striped-bg-factor:     .05 !default;\n$table-striped-bg:            rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color:          $table-color !default;\n$table-active-bg-factor:      .1 !default;\n$table-active-bg:             rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color:           $table-color !default;\n$table-hover-bg-factor:       .075 !default;\n$table-hover-bg:              rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor:         .1 !default;\n$table-border-width:          $border-width !default;\n$table-border-color:          $border-color !default;\n\n$table-striped-order:         odd !default;\n\n$table-group-separator-color: currentColor !default;\n\n$table-caption-color:         $text-muted !default;\n\n$table-bg-scale:              -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n  \"primary\":    shift-color($primary, $table-bg-scale),\n  \"secondary\":  shift-color($secondary, $table-bg-scale),\n  \"success\":    shift-color($success, $table-bg-scale),\n  \"info\":       shift-color($info, $table-bg-scale),\n  \"warning\":    shift-color($warning, $table-bg-scale),\n  \"danger\":     shift-color($danger, $table-bg-scale),\n  \"light\":      $light,\n  \"dark\":       $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y:         .375rem !default;\n$input-btn-padding-x:         .75rem !default;\n$input-btn-font-family:       null !default;\n$input-btn-font-size:         $font-size-base !default;\n$input-btn-line-height:       $line-height-base !default;\n\n$input-btn-focus-width:         .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color:         rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur:          0 !default;\n$input-btn-focus-box-shadow:    0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm:      .25rem !default;\n$input-btn-padding-x-sm:      .5rem !default;\n$input-btn-font-size-sm:      $font-size-sm !default;\n\n$input-btn-padding-y-lg:      .5rem !default;\n$input-btn-padding-x-lg:      1rem !default;\n$input-btn-font-size-lg:      $font-size-lg !default;\n\n$input-btn-border-width:      $border-width !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y:               $input-btn-padding-y !default;\n$btn-padding-x:               $input-btn-padding-x !default;\n$btn-font-family:             $input-btn-font-family !default;\n$btn-font-size:               $input-btn-font-size !default;\n$btn-line-height:             $input-btn-line-height !default;\n$btn-white-space:             null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm:            $input-btn-padding-y-sm !default;\n$btn-padding-x-sm:            $input-btn-padding-x-sm !default;\n$btn-font-size-sm:            $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg:            $input-btn-padding-y-lg !default;\n$btn-padding-x-lg:            $input-btn-padding-x-lg !default;\n$btn-font-size-lg:            $input-btn-font-size-lg !default;\n\n$btn-border-width:            $input-btn-border-width !default;\n\n$btn-font-weight:             $font-weight-normal !default;\n$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width:             $input-btn-focus-width !default;\n$btn-focus-box-shadow:        $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity:        .65 !default;\n$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color:              $link-color !default;\n$btn-link-hover-color:        $link-hover-color !default;\n$btn-link-disabled-color:     $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius:           $border-radius !default;\n$btn-border-radius-sm:        $border-radius-sm !default;\n$btn-border-radius-lg:        $border-radius-lg !default;\n\n$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount:       15% !default;\n$btn-hover-bg-tint-amount:        15% !default;\n$btn-hover-border-shade-amount:   20% !default;\n$btn-hover-border-tint-amount:    10% !default;\n$btn-active-bg-shade-amount:      20% !default;\n$btn-active-bg-tint-amount:       20% !default;\n$btn-active-border-shade-amount:  25% !default;\n$btn-active-border-tint-amount:   10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top:                  .25rem !default;\n$form-text-font-size:                   $small-font-size !default;\n$form-text-font-style:                  null !default;\n$form-text-font-weight:                 null !default;\n$form-text-color:                       $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom:              .5rem !default;\n$form-label-font-size:                  null !default;\n$form-label-font-style:                 null !default;\n$form-label-font-weight:                null !default;\n$form-label-color:                      null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y:                       $input-btn-padding-y !default;\n$input-padding-x:                       $input-btn-padding-x !default;\n$input-font-family:                     $input-btn-font-family !default;\n$input-font-size:                       $input-btn-font-size !default;\n$input-font-weight:                     $font-weight-base !default;\n$input-line-height:                     $input-btn-line-height !default;\n\n$input-padding-y-sm:                    $input-btn-padding-y-sm !default;\n$input-padding-x-sm:                    $input-btn-padding-x-sm !default;\n$input-font-size-sm:                    $input-btn-font-size-sm !default;\n\n$input-padding-y-lg:                    $input-btn-padding-y-lg !default;\n$input-padding-x-lg:                    $input-btn-padding-x-lg !default;\n$input-font-size-lg:                    $input-btn-font-size-lg !default;\n\n$input-bg:                              $body-bg !default;\n$input-disabled-bg:                     $gray-200 !default;\n$input-disabled-border-color:           null !default;\n\n$input-color:                           $body-color !default;\n$input-border-color:                    $gray-400 !default;\n$input-border-width:                    $input-btn-border-width !default;\n$input-box-shadow:                      $box-shadow-inset !default;\n\n$input-border-radius:                   $border-radius !default;\n$input-border-radius-sm:                $border-radius-sm !default;\n$input-border-radius-lg:                $border-radius-lg !default;\n\n$input-focus-bg:                        $input-bg !default;\n$input-focus-border-color:              tint-color($component-active-bg, 50%) !default;\n$input-focus-color:                     $input-color !default;\n$input-focus-width:                     $input-btn-focus-width !default;\n$input-focus-box-shadow:                $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color:               $gray-600 !default;\n$input-plaintext-color:                 $body-color !default;\n\n$input-height-border:                   $input-border-width * 2 !default;\n\n$input-height-inner:                    add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half:               add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter:            add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height:                          add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm:                       add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg:                       add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width:                      3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width:                  1em !default;\n$form-check-min-height:                   $font-size-base * $line-height-base !default;\n$form-check-padding-start:                $form-check-input-width + .5em !default;\n$form-check-margin-bottom:                .125rem !default;\n$form-check-label-color:                  null !default;\n$form-check-label-cursor:                 null !default;\n$form-check-transition:                   null !default;\n\n$form-check-input-active-filter:          brightness(90%) !default;\n\n$form-check-input-bg:                     $input-bg !default;\n$form-check-input-border:                 1px solid rgba($black, .25) !default;\n$form-check-input-border-radius:          .25em !default;\n$form-check-radio-border-radius:          50% !default;\n$form-check-input-focus-border:           $input-focus-border-color !default;\n$form-check-input-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color:          $component-active-color !default;\n$form-check-input-checked-bg-color:       $component-active-bg !default;\n$form-check-input-checked-border-color:   $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-checked-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/></svg>\") !default;\n$form-check-radio-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$form-check-input-checked-color}'/></svg>\") !default;\n\n$form-check-input-indeterminate-color:          $component-active-color !default;\n$form-check-input-indeterminate-bg-color:       $component-active-bg !default;\n$form-check-input-indeterminate-border-color:   $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-indeterminate-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>\") !default;\n\n$form-check-input-disabled-opacity:        .5 !default;\n$form-check-label-disabled-opacity:        $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity:    $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end:    1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color:               rgba(0, 0, 0, .25) !default;\n$form-switch-width:               2em !default;\n$form-switch-padding-start:       $form-switch-width + .5em !default;\n$form-switch-bg-image:            url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>\") !default;\n$form-switch-border-radius:       $form-switch-width !default;\n$form-switch-transition:          background-position .15s ease-in-out !default;\n\n$form-switch-focus-color:         $input-focus-border-color !default;\n$form-switch-focus-bg-image:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-focus-color}'/></svg>\") !default;\n\n$form-switch-checked-color:       $component-active-color !default;\n$form-switch-checked-bg-image:    url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y:           $input-padding-y !default;\n$input-group-addon-padding-x:           $input-padding-x !default;\n$input-group-addon-font-weight:         $input-font-weight !default;\n$input-group-addon-color:               $input-color !default;\n$input-group-addon-bg:                  $gray-200 !default;\n$input-group-addon-border-color:        $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y:             $input-padding-y !default;\n$form-select-padding-x:             $input-padding-x !default;\n$form-select-font-family:           $input-font-family !default;\n$form-select-font-size:             $input-font-size !default;\n$form-select-indicator-padding:     $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight:           $input-font-weight !default;\n$form-select-line-height:           $input-line-height !default;\n$form-select-color:                 $input-color !default;\n$form-select-bg:                    $input-bg !default;\n$form-select-disabled-color:        null !default;\n$form-select-disabled-bg:           $gray-200 !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position:           right $form-select-padding-x center !default;\n$form-select-bg-size:               16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color:       $gray-800 !default;\n$form-select-indicator:             url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/></svg>\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position:    center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size:        $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width:        $input-border-width !default;\n$form-select-border-color:        $input-border-color !default;\n$form-select-border-radius:       $border-radius !default;\n$form-select-box-shadow:          $box-shadow-inset !default;\n\n$form-select-focus-border-color:  $input-focus-border-color !default;\n$form-select-focus-width:         $input-focus-width !default;\n$form-select-focus-box-shadow:    0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm:        $input-padding-y-sm !default;\n$form-select-padding-x-sm:        $input-padding-x-sm !default;\n$form-select-font-size-sm:        $input-font-size-sm !default;\n\n$form-select-padding-y-lg:        $input-padding-y-lg !default;\n$form-select-padding-x-lg:        $input-padding-x-lg !default;\n$form-select-font-size-lg:        $input-font-size-lg !default;\n\n$form-select-transition:          $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width:          100% !default;\n$form-range-track-height:         .5rem !default;\n$form-range-track-cursor:         pointer !default;\n$form-range-track-bg:             $gray-300 !default;\n$form-range-track-border-radius:  1rem !default;\n$form-range-track-box-shadow:     $box-shadow-inset !default;\n\n$form-range-thumb-width:                   1rem !default;\n$form-range-thumb-height:                  $form-range-thumb-width !default;\n$form-range-thumb-bg:                      $component-active-bg !default;\n$form-range-thumb-border:                  0 !default;\n$form-range-thumb-border-radius:           1rem !default;\n$form-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width:  $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg:               tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg:             $gray-500 !default;\n$form-range-thumb-transition:              background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color:          $input-color !default;\n$form-file-button-bg:             $input-group-addon-bg !default;\n$form-file-button-hover-bg:       shade-color($form-file-button-bg, 5%) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height:            add(3.5rem, $input-height-border) !default;\n$form-floating-line-height:       1.25 !default;\n$form-floating-padding-x:         $input-padding-x !default;\n$form-floating-padding-y:         1rem !default;\n$form-floating-input-padding-t:   1.625rem !default;\n$form-floating-input-padding-b:   .625rem !default;\n$form-floating-label-opacity:     .65 !default;\n$form-floating-label-transform:   scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-transition:        opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top:          $form-text-margin-top !default;\n$form-feedback-font-size:           $form-text-font-size !default;\n$form-feedback-font-style:          $form-text-font-style !default;\n$form-feedback-valid-color:         $success !default;\n$form-feedback-invalid-color:       $danger !default;\n\n$form-feedback-icon-valid-color:    $form-feedback-valid-color !default;\n$form-feedback-icon-valid:          url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>\") !default;\n$form-feedback-icon-invalid-color:  $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid:        url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n  \"valid\": (\n    \"color\": $form-feedback-valid-color,\n    \"icon\": $form-feedback-icon-valid\n  ),\n  \"invalid\": (\n    \"color\": $form-feedback-invalid-color,\n    \"icon\": $form-feedback-icon-invalid\n  )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown:                   1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-modal-backdrop:             1050 !default;\n$zindex-modal:                      1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n// scss-docs-end zindex-stack\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y:                .5rem !default;\n$nav-link-padding-x:                1rem !default;\n$nav-link-font-size:                null !default;\n$nav-link-font-weight:              null !default;\n$nav-link-color:                    $link-color !default;\n$nav-link-hover-color:              $link-hover-color !default;\n$nav-link-transition:               color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color:           $gray-600 !default;\n\n$nav-tabs-border-color:             $gray-300 !default;\n$nav-tabs-border-width:             $border-width !default;\n$nav-tabs-border-radius:            $border-radius !default;\n$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color:        $gray-700 !default;\n$nav-tabs-link-active-bg:           $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius:           $border-radius !default;\n$nav-pills-link-active-color:       $component-active-color !default;\n$nav-pills-link-active-bg:          $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y:                  $spacer * .5 !default;\n$navbar-padding-x:                  null !default;\n\n$navbar-nav-link-padding-x:         .5rem !default;\n\n$navbar-brand-font-size:            $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height:                   $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end:           1rem !default;\n\n$navbar-toggler-padding-y:          .25rem !default;\n$navbar-toggler-padding-x:          .75rem !default;\n$navbar-toggler-font-size:          $font-size-lg !default;\n$navbar-toggler-border-radius:      $btn-border-radius !default;\n$navbar-toggler-focus-width:        $btn-focus-width !default;\n$navbar-toggler-transition:         box-shadow .15s ease-in-out !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-theme-variables\n$navbar-dark-color:                 rgba($white, .55) !default;\n$navbar-dark-hover-color:           rgba($white, .75) !default;\n$navbar-dark-active-color:          $white !default;\n$navbar-dark-disabled-color:        rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-dark-toggler-border-color:  rgba($white, .1) !default;\n\n$navbar-light-color:                rgba($black, .55) !default;\n$navbar-light-hover-color:          rgba($black, .7) !default;\n$navbar-light-active-color:         rgba($black, .9) !default;\n$navbar-light-disabled-color:       rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color:                $navbar-light-active-color !default;\n$navbar-light-brand-hover-color:          $navbar-light-active-color !default;\n$navbar-dark-brand-color:                 $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color:           $navbar-dark-active-color !default;\n// scss-docs-end navbar-theme-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width:                10rem !default;\n$dropdown-padding-x:                0 !default;\n$dropdown-padding-y:                .5rem !default;\n$dropdown-spacer:                   .125rem !default;\n$dropdown-font-size:                $font-size-base !default;\n$dropdown-color:                    $body-color !default;\n$dropdown-bg:                       $white !default;\n$dropdown-border-color:             rgba($black, .15) !default;\n$dropdown-border-radius:            $border-radius !default;\n$dropdown-border-width:             $border-width !default;\n$dropdown-inner-border-radius:      subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg:               $dropdown-border-color !default;\n$dropdown-divider-margin-y:         $spacer * .5 !default;\n$dropdown-box-shadow:               $box-shadow !default;\n\n$dropdown-link-color:               $gray-900 !default;\n$dropdown-link-hover-color:         shade-color($gray-900, 10%) !default;\n$dropdown-link-hover-bg:            $gray-200 !default;\n\n$dropdown-link-active-color:        $component-active-color !default;\n$dropdown-link-active-bg:           $component-active-bg !default;\n\n$dropdown-link-disabled-color:      $gray-500 !default;\n\n$dropdown-item-padding-y:           $spacer * .25 !default;\n$dropdown-item-padding-x:           $spacer !default;\n\n$dropdown-header-color:             $gray-600 !default;\n$dropdown-header-padding:           $dropdown-padding-y $dropdown-item-padding-x !default;\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color:               $gray-300 !default;\n$dropdown-dark-bg:                  $gray-800 !default;\n$dropdown-dark-border-color:        $dropdown-border-color !default;\n$dropdown-dark-divider-bg:          $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow:          null !default;\n$dropdown-dark-link-color:          $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color:    $white !default;\n$dropdown-dark-link-hover-bg:       rgba($white, .15) !default;\n$dropdown-dark-link-active-color:   $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg:      $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color:        $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y:              .375rem !default;\n$pagination-padding-x:              .75rem !default;\n$pagination-padding-y-sm:           .25rem !default;\n$pagination-padding-x-sm:           .5rem !default;\n$pagination-padding-y-lg:           .75rem !default;\n$pagination-padding-x-lg:           1.5rem !default;\n\n$pagination-color:                  $link-color !default;\n$pagination-bg:                     $white !default;\n$pagination-border-width:           $border-width !default;\n$pagination-border-radius:          $border-radius !default;\n$pagination-margin-start:           -$pagination-border-width !default;\n$pagination-border-color:           $gray-300 !default;\n\n$pagination-focus-color:            $link-hover-color !default;\n$pagination-focus-bg:               $gray-200 !default;\n$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n$pagination-focus-outline:          0 !default;\n\n$pagination-hover-color:            $link-hover-color !default;\n$pagination-hover-bg:               $gray-200 !default;\n$pagination-hover-border-color:     $gray-300 !default;\n\n$pagination-active-color:           $component-active-color !default;\n$pagination-active-bg:              $component-active-bg !default;\n$pagination-active-border-color:    $pagination-active-bg !default;\n\n$pagination-disabled-color:         $gray-600 !default;\n$pagination-disabled-bg:            $white !default;\n$pagination-disabled-border-color:  $gray-300 !default;\n\n$pagination-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm:       $border-radius-sm !default;\n$pagination-border-radius-lg:       $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max:           .5 !default;\n$placeholder-opacity-min:           .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y:                     $spacer !default;\n$card-spacer-x:                     $spacer !default;\n$card-title-spacer-y:               $spacer * .5 !default;\n$card-border-width:                 $border-width !default;\n$card-border-color:                 rgba($black, .125) !default;\n$card-border-radius:                $border-radius !default;\n$card-box-shadow:                   null !default;\n$card-inner-border-radius:          subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y:                $card-spacer-y * .5 !default;\n$card-cap-padding-x:                $card-spacer-x !default;\n$card-cap-bg:                       rgba($black, .03) !default;\n$card-cap-color:                    null !default;\n$card-height:                       null !default;\n$card-color:                        null !default;\n$card-bg:                           $white !default;\n$card-img-overlay-padding:          $spacer !default;\n$card-group-margin:                 $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y:                     1rem !default;\n$accordion-padding-x:                     1.25rem !default;\n$accordion-color:                         $body-color !default;\n$accordion-bg:                            $body-bg !default;\n$accordion-border-width:                  $border-width !default;\n$accordion-border-color:                  rgba($black, .125) !default;\n$accordion-border-radius:                 $border-radius !default;\n$accordion-inner-border-radius:           subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y:                $accordion-padding-y !default;\n$accordion-body-padding-x:                $accordion-padding-x !default;\n\n$accordion-button-padding-y:              $accordion-padding-y !default;\n$accordion-button-padding-x:              $accordion-padding-x !default;\n$accordion-button-color:                  $accordion-color !default;\n$accordion-button-bg:                     $accordion-bg !default;\n$accordion-transition:                    $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg:              tint-color($component-active-bg, 90%) !default;\n$accordion-button-active-color:           shade-color($primary, 10%) !default;\n\n$accordion-button-focus-border-color:     $input-focus-border-color !default;\n$accordion-button-focus-box-shadow:       $btn-focus-box-shadow !default;\n\n$accordion-icon-width:                    1.25rem !default;\n$accordion-icon-color:                    $accordion-button-color !default;\n$accordion-icon-active-color:             $accordion-button-active-color !default;\n$accordion-icon-transition:               transform .2s ease-in-out !default;\n$accordion-icon-transform:                rotate(-180deg) !default;\n\n$accordion-button-icon:         url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n$accordion-button-active-icon:  url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size:                 $font-size-sm !default;\n$tooltip-max-width:                 200px !default;\n$tooltip-color:                     $white !default;\n$tooltip-bg:                        $black !default;\n$tooltip-border-radius:             $border-radius !default;\n$tooltip-opacity:                   .9 !default;\n$tooltip-padding-y:                 $spacer * .25 !default;\n$tooltip-padding-x:                 $spacer * .5 !default;\n$tooltip-margin:                    0 !default;\n\n$tooltip-arrow-width:               .8rem !default;\n$tooltip-arrow-height:              .4rem !default;\n$tooltip-arrow-color:               $tooltip-bg !default;\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y:     $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x:     $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size:     $tooltip-font-size !default;\n$form-feedback-tooltip-line-height:   null !default;\n$form-feedback-tooltip-opacity:       $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size:                 $font-size-sm !default;\n$popover-bg:                        $white !default;\n$popover-max-width:                 276px !default;\n$popover-border-width:              $border-width !default;\n$popover-border-color:              rgba($black, .2) !default;\n$popover-border-radius:             $border-radius-lg !default;\n$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow:                $box-shadow !default;\n\n$popover-header-bg:                 shade-color($popover-bg, 6%) !default;\n$popover-header-color:              $headings-color !default;\n$popover-header-padding-y:          .5rem !default;\n$popover-header-padding-x:          $spacer !default;\n\n$popover-body-color:                $body-color !default;\n$popover-body-padding-y:            $spacer !default;\n$popover-body-padding-x:            $spacer !default;\n\n$popover-arrow-width:               1rem !default;\n$popover-arrow-height:              .5rem !default;\n$popover-arrow-color:               $popover-bg !default;\n\n$popover-arrow-outer-color:         fade-in($popover-border-color, .05) !default;\n// scss-docs-end popover-variables\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width:                   350px !default;\n$toast-padding-x:                   .75rem !default;\n$toast-padding-y:                   .5rem !default;\n$toast-font-size:                   .875rem !default;\n$toast-color:                       null !default;\n$toast-background-color:            rgba($white, .85) !default;\n$toast-border-width:                1px !default;\n$toast-border-color:                rgba(0, 0, 0, .1) !default;\n$toast-border-radius:               $border-radius !default;\n$toast-box-shadow:                  $box-shadow !default;\n$toast-spacing:                     $container-padding-x !default;\n\n$toast-header-color:                $gray-600 !default;\n$toast-header-background-color:     rgba($white, .85) !default;\n$toast-header-border-color:         rgba(0, 0, 0, .05) !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size:                   .75em !default;\n$badge-font-weight:                 $font-weight-bold !default;\n$badge-color:                       $white !default;\n$badge-padding-y:                   .35em !default;\n$badge-padding-x:                   .65em !default;\n$badge-border-radius:               $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding:               $spacer !default;\n\n$modal-footer-margin-between:       .5rem !default;\n\n$modal-dialog-margin:               .5rem !default;\n$modal-dialog-margin-y-sm-up:       1.75rem !default;\n\n$modal-title-line-height:           $line-height-base !default;\n\n$modal-content-color:               null !default;\n$modal-content-bg:                  $white !default;\n$modal-content-border-color:        rgba($black, .2) !default;\n$modal-content-border-width:        $border-width !default;\n$modal-content-border-radius:       $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs:       $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up:    $box-shadow !default;\n\n$modal-backdrop-bg:                 $black !default;\n$modal-backdrop-opacity:            .5 !default;\n$modal-header-border-color:         $border-color !default;\n$modal-footer-border-color:         $modal-header-border-color !default;\n$modal-header-border-width:         $modal-content-border-width !default;\n$modal-footer-border-width:         $modal-header-border-width !default;\n$modal-header-padding-y:            $modal-inner-padding !default;\n$modal-header-padding-x:            $modal-inner-padding !default;\n$modal-header-padding:              $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-sm:                          300px !default;\n$modal-md:                          500px !default;\n$modal-lg:                          800px !default;\n$modal-xl:                          1140px !default;\n\n$modal-fade-transform:              translate(0, -50px) !default;\n$modal-show-transform:              none !default;\n$modal-transition:                  transform .3s ease-out !default;\n$modal-scale-transform:             scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y:               $spacer !default;\n$alert-padding-x:               $spacer !default;\n$alert-margin-bottom:           1rem !default;\n$alert-border-radius:           $border-radius !default;\n$alert-link-font-weight:        $font-weight-bold !default;\n$alert-border-width:            $border-width !default;\n$alert-bg-scale:                -80% !default;\n$alert-border-scale:            -70% !default;\n$alert-color-scale:             40% !default;\n$alert-dismissible-padding-r:   $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height:                   1rem !default;\n$progress-font-size:                $font-size-base * .75 !default;\n$progress-bg:                       $gray-200 !default;\n$progress-border-radius:            $border-radius !default;\n$progress-box-shadow:               $box-shadow-inset !default;\n$progress-bar-color:                $white !default;\n$progress-bar-bg:                   $primary !default;\n$progress-bar-animation-timing:     1s linear infinite !default;\n$progress-bar-transition:           width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color:                  $gray-900 !default;\n$list-group-bg:                     $white !default;\n$list-group-border-color:           rgba($black, .125) !default;\n$list-group-border-width:           $border-width !default;\n$list-group-border-radius:          $border-radius !default;\n\n$list-group-item-padding-y:         $spacer * .5 !default;\n$list-group-item-padding-x:         $spacer !default;\n$list-group-item-bg-scale:          -80% !default;\n$list-group-item-color-scale:       40% !default;\n\n$list-group-hover-bg:               $gray-100 !default;\n$list-group-active-color:           $component-active-color !default;\n$list-group-active-bg:              $component-active-bg !default;\n$list-group-active-border-color:    $list-group-active-bg !default;\n\n$list-group-disabled-color:         $gray-600 !default;\n$list-group-disabled-bg:            $list-group-bg !default;\n\n$list-group-action-color:           $gray-700 !default;\n$list-group-action-hover-color:     $list-group-action-color !default;\n\n$list-group-action-active-color:    $body-color !default;\n$list-group-action-active-bg:       $gray-200 !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding:                 .25rem !default;\n$thumbnail-bg:                      $body-bg !default;\n$thumbnail-border-width:            $border-width !default;\n$thumbnail-border-color:            $gray-300 !default;\n$thumbnail-border-radius:           $border-radius !default;\n$thumbnail-box-shadow:              $box-shadow-sm !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size:          $small-font-size !default;\n$figure-caption-color:              $gray-600 !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size:              null !default;\n$breadcrumb-padding-y:              0 !default;\n$breadcrumb-padding-x:              0 !default;\n$breadcrumb-item-padding-x:         .5rem !default;\n$breadcrumb-margin-bottom:          1rem !default;\n$breadcrumb-bg:                     null !default;\n$breadcrumb-divider-color:          $gray-600 !default;\n$breadcrumb-active-color:           $gray-600 !default;\n$breadcrumb-divider:                quote(\"/\") !default;\n$breadcrumb-divider-flipped:        $breadcrumb-divider !default;\n$breadcrumb-border-radius:          null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color:             $white !default;\n$carousel-control-width:             15% !default;\n$carousel-control-opacity:           .5 !default;\n$carousel-control-hover-opacity:     .9 !default;\n$carousel-control-transition:        opacity .15s ease !default;\n\n$carousel-indicator-width:           30px !default;\n$carousel-indicator-height:          3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer:          3px !default;\n$carousel-indicator-opacity:         .5 !default;\n$carousel-indicator-active-bg:       $white !default;\n$carousel-indicator-active-opacity:  1 !default;\n$carousel-indicator-transition:      opacity .6s ease !default;\n\n$carousel-caption-width:             70% !default;\n$carousel-caption-color:             $white !default;\n$carousel-caption-padding-y:         1.25rem !default;\n$carousel-caption-spacer:            1.25rem !default;\n\n$carousel-control-icon-width:        2rem !default;\n\n$carousel-control-prev-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>\") !default;\n$carousel-control-next-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n\n$carousel-transition-duration:       .6s !default;\n$carousel-transition:                transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n$carousel-dark-indicator-active-bg:  $black !default;\n$carousel-dark-caption-color:        $black !default;\n$carousel-dark-control-icon-filter:  invert(1) grayscale(100) !default;\n// scss-docs-end carousel-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width:           2rem !default;\n$spinner-height:          $spinner-width !default;\n$spinner-vertical-align:  -.125em !default;\n$spinner-border-width:    .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm:        1rem !default;\n$spinner-height-sm:       $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width:            1em !default;\n$btn-close-height:           $btn-close-width !default;\n$btn-close-padding-x:        .25em !default;\n$btn-close-padding-y:        $btn-close-padding-x !default;\n$btn-close-color:            $black !default;\n$btn-close-bg:               url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/></svg>\") !default;\n$btn-close-focus-shadow:     $input-btn-focus-box-shadow !default;\n$btn-close-opacity:          .5 !default;\n$btn-close-hover-opacity:    .75 !default;\n$btn-close-focus-opacity:    1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter:     invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y:               $modal-inner-padding !default;\n$offcanvas-padding-x:               $modal-inner-padding !default;\n$offcanvas-horizontal-width:        400px !default;\n$offcanvas-vertical-height:         30vh !default;\n$offcanvas-transition-duration:     .3s !default;\n$offcanvas-border-color:            $modal-content-border-color !default;\n$offcanvas-border-width:            $modal-content-border-width !default;\n$offcanvas-title-line-height:       $modal-title-line-height !default;\n$offcanvas-bg-color:                $modal-content-bg !default;\n$offcanvas-color:                   $modal-content-color !default;\n$offcanvas-box-shadow:              $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg:             $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity:        $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size:                    $small-font-size !default;\n$code-color:                        $pink !default;\n\n$kbd-padding-y:                     .2rem !default;\n$kbd-padding-x:                     .4rem !default;\n$kbd-font-size:                     $code-font-size !default;\n$kbd-color:                         $white !default;\n$kbd-bg:                            $gray-900 !default;\n\n$pre-color:                         null !default;\n","// Credit: Nicolas Gallagher and SUIT CSS.\n\n.ratio {\n  position: relative;\n  width: 100%;\n\n  &::before {\n    display: block;\n    padding-top: var(--#{$variable-prefix}aspect-ratio);\n    content: \"\";\n  }\n\n  > * {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n  }\n}\n\n@each $key, $ratio in $aspect-ratios {\n  .ratio-#{$key} {\n    --#{$variable-prefix}aspect-ratio: #{$ratio};\n  }\n}\n","// Shorthand\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n// Responsive sticky top\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .sticky#{$infix}-top {\n      position: sticky;\n      top: 0;\n      z-index: $zindex-sticky;\n    }\n  }\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n  $n: index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n  }\n  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n  $min: map-get($breakpoints, $name);\n  @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n  $max: map-get($breakpoints, $name);\n  @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n  @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n","// scss-docs-start stacks\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n// scss-docs-end stacks\n","//\n// Visually hidden\n//\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  @include visually-hidden();\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","//\n// Stretched link\n//\n\n.stretched-link {\n  &::#{$stretched-link-pseudo-element} {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: $stretched-link-z-index;\n    content: \"\";\n  }\n}\n","//\n// Text truncation\n//\n\n.text-truncate {\n  @include text-truncate();\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n",".vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: $hr-opacity;\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n  $values: map-get($utility, values);\n\n  // If the values are a list or string, convert it into a map\n  @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n    $values: zip($values, $values);\n  }\n\n  @each $key, $value in $values {\n    $properties: map-get($utility, property);\n\n    // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n    @if type-of($properties) == \"string\" {\n      $properties: append((), $properties);\n    }\n\n    // Use custom class if present\n    $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n    $property-class: if($property-class == null, \"\", $property-class);\n\n    // State params to generate pseudo-classes\n    $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n    $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (eg. with shadow class)\n    $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n    @if map-get($utility, rfs) {\n      // Inside the media query\n      @if $is-rfs-media-query {\n        $val: rfs-value($value);\n\n        // Do not render anything if fluid and non fluid values are the same\n        $value: if($val == rfs-fluid-value($value), null, $val);\n      }\n      @else {\n        $value: rfs-fluid-value($value);\n      }\n    }\n\n    $is-css-var: map-get($utility, css-var);\n    $is-local-vars: map-get($utility, local-vars);\n    $is-rtl: map-get($utility, rtl);\n\n    @if $value != null {\n      @if $is-rtl == false {\n        /* rtl:begin:remove */\n      }\n\n      @if $is-css-var {\n        .#{$property-class + $infix + $property-class-modifier} {\n          --#{$variable-prefix}#{$property-class}: #{$value};\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            --#{$variable-prefix}#{$property-class}: #{$value};\n          }\n        }\n      } @else {\n        .#{$property-class + $infix + $property-class-modifier} {\n          @each $property in $properties {\n            @if $is-local-vars {\n              @each $local-var, $value in $is-local-vars {\n                --#{$variable-prefix}#{$local-var}: #{$value};\n              }\n            }\n            #{$property}: $value if($enable-important-utilities, !important, null);\n          }\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            @each $property in $properties {\n              #{$property}: $value if($enable-important-utilities, !important, null);\n            }\n          }\n        }\n      }\n\n      @if $is-rtl == false {\n        /* rtl:end:remove */\n      }\n    }\n  }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n  // Generate media query if needed\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    // Loop over each utility property\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Only proceed if responsive media queries are enabled or if it's the base media query\n      @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n        @include generate-utility($utility, $infix);\n      }\n    }\n  }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix, true);\n        }\n      }\n    }\n  }\n}\n\n\n// Print utilities\n@media print {\n  @each $key, $utility in $utilities {\n    // The utility can be disabled with `false`, thus check if the utility is a map first\n    // Then check if the utility needs print styles\n    @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n      @include generate-utility($utility, \"-print\");\n    }\n  }\n}\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css
new file mode 100644
index 0000000..bdb903a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap Utilities v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
+/*# sourceMappingURL=bootstrap-utilities.min.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map
new file mode 100644
index 0000000..2f7a71c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap-utilities.scss","../../scss/mixins/_clearfix.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/mixins/_breakpoints.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","dist/css/bootstrap-utilities.css","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap Utilities v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n","// scss-docs-start clearfix\n@mixin clearfix() {\n  &::after {\n    display: block;\n    clear: both;\n    content: \"\";\n  }\n}\n// scss-docs-end clearfix\n","@each $color, $value in $theme-colors {\n  .link-#{$color} {\n    color: $value;\n\n    @if $link-shade-percentage != 0 {\n      &:hover,\n      &:focus {\n        color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));\n      }\n    }\n  }\n}\n","// Credit: Nicolas Gallagher and SUIT CSS.\n\n.ratio {\n  position: relative;\n  width: 100%;\n\n  &::before {\n    display: block;\n    padding-top: var(--#{$variable-prefix}aspect-ratio);\n    content: \"\";\n  }\n\n  > * {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n  }\n}\n\n@each $key, $ratio in $aspect-ratios {\n  .ratio-#{$key} {\n    --#{$variable-prefix}aspect-ratio: #{$ratio};\n  }\n}\n","// Shorthand\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n// Responsive sticky top\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .sticky#{$infix}-top {\n      position: sticky;\n      top: 0;\n      z-index: $zindex-sticky;\n    }\n  }\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n  $n: index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n  }\n  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n  $min: map-get($breakpoints, $name);\n  @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n  $max: map-get($breakpoints, $name);\n  @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n  @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n","// scss-docs-start stacks\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n// scss-docs-end stacks\n","//\n// Visually hidden\n//\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  @include visually-hidden();\n}\n","/*!\n * Bootstrap Utilities v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.link-primary {\n  color: #0d6efd;\n}\n.link-primary:hover, .link-primary:focus {\n  color: #0a58ca;\n}\n\n.link-secondary {\n  color: #6c757d;\n}\n.link-secondary:hover, .link-secondary:focus {\n  color: #565e64;\n}\n\n.link-success {\n  color: #198754;\n}\n.link-success:hover, .link-success:focus {\n  color: #146c43;\n}\n\n.link-info {\n  color: #0dcaf0;\n}\n.link-info:hover, .link-info:focus {\n  color: #3dd5f3;\n}\n\n.link-warning {\n  color: #ffc107;\n}\n.link-warning:hover, .link-warning:focus {\n  color: #ffcd39;\n}\n\n.link-danger {\n  color: #dc3545;\n}\n.link-danger:hover, .link-danger:focus {\n  color: #b02a37;\n}\n\n.link-light {\n  color: #f8f9fa;\n}\n.link-light:hover, .link-light:focus {\n  color: #f9fafb;\n}\n\n.link-dark {\n  color: #212529;\n}\n.link-dark:hover, .link-dark:focus {\n  color: #1a1e21;\n}\n\n.ratio {\n  position: relative;\n  width: 100%;\n}\n.ratio::before {\n  display: block;\n  padding-top: var(--bs-aspect-ratio);\n  content: \"\";\n}\n.ratio > * {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.ratio-1x1 {\n  --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n  --bs-aspect-ratio: calc(3 / 4 * 100%);\n}\n\n.ratio-16x9 {\n  --bs-aspect-ratio: calc(9 / 16 * 100%);\n}\n\n.ratio-21x9 {\n  --bs-aspect-ratio: calc(9 / 21 * 100%);\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.sticky-top {\n  position: -webkit-sticky;\n  position: sticky;\n  top: 0;\n  z-index: 1020;\n}\n\n@media (min-width: 576px) {\n  .sticky-sm-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 768px) {\n  .sticky-md-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 992px) {\n  .sticky-lg-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1200px) {\n  .sticky-xl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1400px) {\n  .sticky-xxl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1;\n  content: \"\";\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: 0.25;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.float-start {\n  float: left !important;\n}\n\n.float-end {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-25 {\n  opacity: 0.25 !important;\n}\n\n.opacity-50 {\n  opacity: 0.5 !important;\n}\n\n.opacity-75 {\n  opacity: 0.75 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important;\n}\n\n.top-0 {\n  top: 0 !important;\n}\n\n.top-50 {\n  top: 50% !important;\n}\n\n.top-100 {\n  top: 100% !important;\n}\n\n.bottom-0 {\n  bottom: 0 !important;\n}\n\n.bottom-50 {\n  bottom: 50% !important;\n}\n\n.bottom-100 {\n  bottom: 100% !important;\n}\n\n.start-0 {\n  left: 0 !important;\n}\n\n.start-50 {\n  left: 50% !important;\n}\n\n.start-100 {\n  left: 100% !important;\n}\n\n.end-0 {\n  right: 0 !important;\n}\n\n.end-50 {\n  right: 50% !important;\n}\n\n.end-100 {\n  right: 100% !important;\n}\n\n.translate-middle {\n  transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n  transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n  transform: translateY(-50%) !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-end {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-end-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-start {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-start-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #0d6efd !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #198754 !important;\n}\n\n.border-info {\n  border-color: #0dcaf0 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #212529 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.border-1 {\n  border-width: 1px !important;\n}\n\n.border-2 {\n  border-width: 2px !important;\n}\n\n.border-3 {\n  border-width: 3px !important;\n}\n\n.border-4 {\n  border-width: 4px !important;\n}\n\n.border-5 {\n  border-width: 5px !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.vw-100 {\n  width: 100vw !important;\n}\n\n.min-vw-100 {\n  min-width: 100vw !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.vh-100 {\n  height: 100vh !important;\n}\n\n.min-vh-100 {\n  min-height: 100vh !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.gap-0 {\n  gap: 0 !important;\n}\n\n.gap-1 {\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  gap: 1rem !important;\n}\n\n.gap-4 {\n  gap: 1.5rem !important;\n}\n\n.gap-5 {\n  gap: 3rem !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-right: 0 !important;\n  margin-left: 0 !important;\n}\n\n.mx-1 {\n  margin-right: 0.25rem !important;\n  margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-right: 0.5rem !important;\n  margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-right: 1rem !important;\n  margin-left: 1rem !important;\n}\n\n.mx-4 {\n  margin-right: 1.5rem !important;\n  margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-right: 3rem !important;\n  margin-left: 3rem !important;\n}\n\n.mx-auto {\n  margin-right: auto !important;\n  margin-left: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-right: 0 !important;\n}\n\n.me-1 {\n  margin-right: 0.25rem !important;\n}\n\n.me-2 {\n  margin-right: 0.5rem !important;\n}\n\n.me-3 {\n  margin-right: 1rem !important;\n}\n\n.me-4 {\n  margin-right: 1.5rem !important;\n}\n\n.me-5 {\n  margin-right: 3rem !important;\n}\n\n.me-auto {\n  margin-right: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-left: 0 !important;\n}\n\n.ms-1 {\n  margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-left: 1rem !important;\n}\n\n.ms-4 {\n  margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-left: 3rem !important;\n}\n\n.ms-auto {\n  margin-left: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-right: 0 !important;\n  padding-left: 0 !important;\n}\n\n.px-1 {\n  padding-right: 0.25rem !important;\n  padding-left: 0.25rem !important;\n}\n\n.px-2 {\n  padding-right: 0.5rem !important;\n  padding-left: 0.5rem !important;\n}\n\n.px-3 {\n  padding-right: 1rem !important;\n  padding-left: 1rem !important;\n}\n\n.px-4 {\n  padding-right: 1.5rem !important;\n  padding-left: 1.5rem !important;\n}\n\n.px-5 {\n  padding-right: 3rem !important;\n  padding-left: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-right: 0 !important;\n}\n\n.pe-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-right: 1rem !important;\n}\n\n.pe-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-left: 0 !important;\n}\n\n.ps-1 {\n  padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-left: 1rem !important;\n}\n\n.ps-4 {\n  padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-left: 3rem !important;\n}\n\n.font-monospace {\n  font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n  font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n  font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n  font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n  font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n  font-size: 1.25rem !important;\n}\n\n.fs-6 {\n  font-size: 1rem !important;\n}\n\n.fst-italic {\n  font-style: italic !important;\n}\n\n.fst-normal {\n  font-style: normal !important;\n}\n\n.fw-light {\n  font-weight: 300 !important;\n}\n\n.fw-lighter {\n  font-weight: lighter !important;\n}\n\n.fw-normal {\n  font-weight: 400 !important;\n}\n\n.fw-bold {\n  font-weight: 700 !important;\n}\n\n.fw-bolder {\n  font-weight: bolder !important;\n}\n\n.lh-1 {\n  line-height: 1 !important;\n}\n\n.lh-sm {\n  line-height: 1.25 !important;\n}\n\n.lh-base {\n  line-height: 1.5 !important;\n}\n\n.lh-lg {\n  line-height: 2 !important;\n}\n\n.text-start {\n  text-align: left !important;\n}\n\n.text-end {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n.text-decoration-none {\n  text-decoration: none !important;\n}\n\n.text-decoration-underline {\n  text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n  text-decoration: line-through !important;\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.text-wrap {\n  white-space: normal !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n  word-wrap: break-word !important;\n  word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n  --bs-text-opacity: 1;\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  --bs-text-opacity: 1;\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  --bs-text-opacity: 1;\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-reset {\n  --bs-text-opacity: 1;\n  color: inherit !important;\n}\n\n.text-opacity-25 {\n  --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n  --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n  --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n  --bs-text-opacity: 1;\n}\n\n.bg-primary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n  --bs-bg-opacity: 1;\n  background-color: transparent !important;\n}\n\n.bg-opacity-10 {\n  --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n  --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n  --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n  --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n  --bs-bg-opacity: 1;\n}\n\n.bg-gradient {\n  background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n  -webkit-user-select: all !important;\n  -moz-user-select: all !important;\n  user-select: all !important;\n}\n\n.user-select-auto {\n  -webkit-user-select: auto !important;\n  -moz-user-select: auto !important;\n  user-select: auto !important;\n}\n\n.user-select-none {\n  -webkit-user-select: none !important;\n  -moz-user-select: none !important;\n  user-select: none !important;\n}\n\n.pe-none {\n  pointer-events: none !important;\n}\n\n.pe-auto {\n  pointer-events: auto !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.rounded-1 {\n  border-radius: 0.2rem !important;\n}\n\n.rounded-2 {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-3 {\n  border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-pill {\n  border-radius: 50rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-end {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-start {\n  border-bottom-left-radius: 0.25rem !important;\n  border-top-left-radius: 0.25rem !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-start {\n    float: left !important;\n  }\n\n  .float-sm-end {\n    float: right !important;\n  }\n\n  .float-sm-none {\n    float: none !important;\n  }\n\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-sm-0 {\n    gap: 0 !important;\n  }\n\n  .gap-sm-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-sm-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-sm-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-sm-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-sm-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-sm-start {\n    text-align: left !important;\n  }\n\n  .text-sm-end {\n    text-align: right !important;\n  }\n\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 768px) {\n  .float-md-start {\n    float: left !important;\n  }\n\n  .float-md-end {\n    float: right !important;\n  }\n\n  .float-md-none {\n    float: none !important;\n  }\n\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-md-0 {\n    gap: 0 !important;\n  }\n\n  .gap-md-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-md-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-md-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-md-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-md-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-left: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-md-start {\n    text-align: left !important;\n  }\n\n  .text-md-end {\n    text-align: right !important;\n  }\n\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 992px) {\n  .float-lg-start {\n    float: left !important;\n  }\n\n  .float-lg-end {\n    float: right !important;\n  }\n\n  .float-lg-none {\n    float: none !important;\n  }\n\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-lg-0 {\n    gap: 0 !important;\n  }\n\n  .gap-lg-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-lg-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-lg-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-lg-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-lg-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-lg-start {\n    text-align: left !important;\n  }\n\n  .text-lg-end {\n    text-align: right !important;\n  }\n\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .float-xl-start {\n    float: left !important;\n  }\n\n  .float-xl-end {\n    float: right !important;\n  }\n\n  .float-xl-none {\n    float: none !important;\n  }\n\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xl-start {\n    text-align: left !important;\n  }\n\n  .text-xl-end {\n    text-align: right !important;\n  }\n\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1400px) {\n  .float-xxl-start {\n    float: left !important;\n  }\n\n  .float-xxl-end {\n    float: right !important;\n  }\n\n  .float-xxl-none {\n    float: none !important;\n  }\n\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xxl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xxl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xxl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xxl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xxl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xxl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xxl-start {\n    text-align: left !important;\n  }\n\n  .text-xxl-end {\n    text-align: right !important;\n  }\n\n  .text-xxl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .fs-1 {\n    font-size: 2.5rem !important;\n  }\n\n  .fs-2 {\n    font-size: 2rem !important;\n  }\n\n  .fs-3 {\n    font-size: 1.75rem !important;\n  }\n\n  .fs-4 {\n    font-size: 1.5rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap-utilities.css.map */","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","//\n// Stretched link\n//\n\n.stretched-link {\n  &::#{$stretched-link-pseudo-element} {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: $stretched-link-z-index;\n    content: \"\";\n  }\n}\n","//\n// Text truncation\n//\n\n.text-truncate {\n  @include text-truncate();\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n",".vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: $hr-opacity;\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n  $values: map-get($utility, values);\n\n  // If the values are a list or string, convert it into a map\n  @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n    $values: zip($values, $values);\n  }\n\n  @each $key, $value in $values {\n    $properties: map-get($utility, property);\n\n    // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n    @if type-of($properties) == \"string\" {\n      $properties: append((), $properties);\n    }\n\n    // Use custom class if present\n    $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n    $property-class: if($property-class == null, \"\", $property-class);\n\n    // State params to generate pseudo-classes\n    $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n    $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (eg. with shadow class)\n    $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n    @if map-get($utility, rfs) {\n      // Inside the media query\n      @if $is-rfs-media-query {\n        $val: rfs-value($value);\n\n        // Do not render anything if fluid and non fluid values are the same\n        $value: if($val == rfs-fluid-value($value), null, $val);\n      }\n      @else {\n        $value: rfs-fluid-value($value);\n      }\n    }\n\n    $is-css-var: map-get($utility, css-var);\n    $is-local-vars: map-get($utility, local-vars);\n    $is-rtl: map-get($utility, rtl);\n\n    @if $value != null {\n      @if $is-rtl == false {\n        /* rtl:begin:remove */\n      }\n\n      @if $is-css-var {\n        .#{$property-class + $infix + $property-class-modifier} {\n          --#{$variable-prefix}#{$property-class}: #{$value};\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            --#{$variable-prefix}#{$property-class}: #{$value};\n          }\n        }\n      } @else {\n        .#{$property-class + $infix + $property-class-modifier} {\n          @each $property in $properties {\n            @if $is-local-vars {\n              @each $local-var, $value in $is-local-vars {\n                --#{$variable-prefix}#{$local-var}: #{$value};\n              }\n            }\n            #{$property}: $value if($enable-important-utilities, !important, null);\n          }\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            @each $property in $properties {\n              #{$property}: $value if($enable-important-utilities, !important, null);\n            }\n          }\n        }\n      }\n\n      @if $is-rtl == false {\n        /* rtl:end:remove */\n      }\n    }\n  }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n  // Generate media query if needed\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    // Loop over each utility property\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Only proceed if responsive media queries are enabled or if it's the base media query\n      @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n        @include generate-utility($utility, $infix);\n      }\n    }\n  }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix, true);\n        }\n      }\n    }\n  }\n}\n\n\n// Print utilities\n@media print {\n  @each $key, $utility in $utilities {\n    // The utility can be disabled with `false`, thus check if the utility is a map first\n    // Then check if the utility needs print styles\n    @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n      @include generate-utility($utility, \"-print\");\n    }\n  }\n}\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css
new file mode 100644
index 0000000..1fced99
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css
@@ -0,0 +1,4857 @@
+/*!
+ * Bootstrap Utilities v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+.clearfix::after {
+  display: block;
+  clear: both;
+  content: "";
+}
+
+.link-primary {
+  color: #0d6efd;
+}
+.link-primary:hover, .link-primary:focus {
+  color: #0a58ca;
+}
+
+.link-secondary {
+  color: #6c757d;
+}
+.link-secondary:hover, .link-secondary:focus {
+  color: #565e64;
+}
+
+.link-success {
+  color: #198754;
+}
+.link-success:hover, .link-success:focus {
+  color: #146c43;
+}
+
+.link-info {
+  color: #0dcaf0;
+}
+.link-info:hover, .link-info:focus {
+  color: #3dd5f3;
+}
+
+.link-warning {
+  color: #ffc107;
+}
+.link-warning:hover, .link-warning:focus {
+  color: #ffcd39;
+}
+
+.link-danger {
+  color: #dc3545;
+}
+.link-danger:hover, .link-danger:focus {
+  color: #b02a37;
+}
+
+.link-light {
+  color: #f8f9fa;
+}
+.link-light:hover, .link-light:focus {
+  color: #f9fafb;
+}
+
+.link-dark {
+  color: #212529;
+}
+.link-dark:hover, .link-dark:focus {
+  color: #1a1e21;
+}
+
+.ratio {
+  position: relative;
+  width: 100%;
+}
+.ratio::before {
+  display: block;
+  padding-top: var(--bs-aspect-ratio);
+  content: "";
+}
+.ratio > * {
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 100%;
+  height: 100%;
+}
+
+.ratio-1x1 {
+  --bs-aspect-ratio: 100%;
+}
+
+.ratio-4x3 {
+  --bs-aspect-ratio: calc(3 / 4 * 100%);
+}
+
+.ratio-16x9 {
+  --bs-aspect-ratio: calc(9 / 16 * 100%);
+}
+
+.ratio-21x9 {
+  --bs-aspect-ratio: calc(9 / 21 * 100%);
+}
+
+.fixed-top {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  z-index: 1030;
+}
+
+.fixed-bottom {
+  position: fixed;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  z-index: 1030;
+}
+
+.sticky-top {
+  position: -webkit-sticky;
+  position: sticky;
+  top: 0;
+  z-index: 1020;
+}
+
+@media (min-width: 576px) {
+  .sticky-sm-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 768px) {
+  .sticky-md-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 992px) {
+  .sticky-lg-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 1200px) {
+  .sticky-xl-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 1400px) {
+  .sticky-xxl-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+.hstack {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  align-self: stretch;
+}
+
+.vstack {
+  display: flex;
+  flex: 1 1 auto;
+  flex-direction: column;
+  align-self: stretch;
+}
+
+.visually-hidden,
+.visually-hidden-focusable:not(:focus):not(:focus-within) {
+  position: absolute !important;
+  width: 1px !important;
+  height: 1px !important;
+  padding: 0 !important;
+  margin: -1px !important;
+  overflow: hidden !important;
+  clip: rect(0, 0, 0, 0) !important;
+  white-space: nowrap !important;
+  border: 0 !important;
+}
+
+.stretched-link::after {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  z-index: 1;
+  content: "";
+}
+
+.text-truncate {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.vr {
+  display: inline-block;
+  align-self: stretch;
+  width: 1px;
+  min-height: 1em;
+  background-color: currentColor;
+  opacity: 0.25;
+}
+
+.align-baseline {
+  vertical-align: baseline !important;
+}
+
+.align-top {
+  vertical-align: top !important;
+}
+
+.align-middle {
+  vertical-align: middle !important;
+}
+
+.align-bottom {
+  vertical-align: bottom !important;
+}
+
+.align-text-bottom {
+  vertical-align: text-bottom !important;
+}
+
+.align-text-top {
+  vertical-align: text-top !important;
+}
+
+.float-start {
+  float: right !important;
+}
+
+.float-end {
+  float: left !important;
+}
+
+.float-none {
+  float: none !important;
+}
+
+.opacity-0 {
+  opacity: 0 !important;
+}
+
+.opacity-25 {
+  opacity: 0.25 !important;
+}
+
+.opacity-50 {
+  opacity: 0.5 !important;
+}
+
+.opacity-75 {
+  opacity: 0.75 !important;
+}
+
+.opacity-100 {
+  opacity: 1 !important;
+}
+
+.overflow-auto {
+  overflow: auto !important;
+}
+
+.overflow-hidden {
+  overflow: hidden !important;
+}
+
+.overflow-visible {
+  overflow: visible !important;
+}
+
+.overflow-scroll {
+  overflow: scroll !important;
+}
+
+.d-inline {
+  display: inline !important;
+}
+
+.d-inline-block {
+  display: inline-block !important;
+}
+
+.d-block {
+  display: block !important;
+}
+
+.d-grid {
+  display: grid !important;
+}
+
+.d-table {
+  display: table !important;
+}
+
+.d-table-row {
+  display: table-row !important;
+}
+
+.d-table-cell {
+  display: table-cell !important;
+}
+
+.d-flex {
+  display: flex !important;
+}
+
+.d-inline-flex {
+  display: inline-flex !important;
+}
+
+.d-none {
+  display: none !important;
+}
+
+.shadow {
+  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
+}
+
+.shadow-sm {
+  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
+}
+
+.shadow-lg {
+  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
+}
+
+.shadow-none {
+  box-shadow: none !important;
+}
+
+.position-static {
+  position: static !important;
+}
+
+.position-relative {
+  position: relative !important;
+}
+
+.position-absolute {
+  position: absolute !important;
+}
+
+.position-fixed {
+  position: fixed !important;
+}
+
+.position-sticky {
+  position: -webkit-sticky !important;
+  position: sticky !important;
+}
+
+.top-0 {
+  top: 0 !important;
+}
+
+.top-50 {
+  top: 50% !important;
+}
+
+.top-100 {
+  top: 100% !important;
+}
+
+.bottom-0 {
+  bottom: 0 !important;
+}
+
+.bottom-50 {
+  bottom: 50% !important;
+}
+
+.bottom-100 {
+  bottom: 100% !important;
+}
+
+.start-0 {
+  right: 0 !important;
+}
+
+.start-50 {
+  right: 50% !important;
+}
+
+.start-100 {
+  right: 100% !important;
+}
+
+.end-0 {
+  left: 0 !important;
+}
+
+.end-50 {
+  left: 50% !important;
+}
+
+.end-100 {
+  left: 100% !important;
+}
+
+.translate-middle {
+  transform: translate(50%, -50%) !important;
+}
+
+.translate-middle-x {
+  transform: translateX(50%) !important;
+}
+
+.translate-middle-y {
+  transform: translateY(-50%) !important;
+}
+
+.border {
+  border: 1px solid #dee2e6 !important;
+}
+
+.border-0 {
+  border: 0 !important;
+}
+
+.border-top {
+  border-top: 1px solid #dee2e6 !important;
+}
+
+.border-top-0 {
+  border-top: 0 !important;
+}
+
+.border-end {
+  border-left: 1px solid #dee2e6 !important;
+}
+
+.border-end-0 {
+  border-left: 0 !important;
+}
+
+.border-bottom {
+  border-bottom: 1px solid #dee2e6 !important;
+}
+
+.border-bottom-0 {
+  border-bottom: 0 !important;
+}
+
+.border-start {
+  border-right: 1px solid #dee2e6 !important;
+}
+
+.border-start-0 {
+  border-right: 0 !important;
+}
+
+.border-primary {
+  border-color: #0d6efd !important;
+}
+
+.border-secondary {
+  border-color: #6c757d !important;
+}
+
+.border-success {
+  border-color: #198754 !important;
+}
+
+.border-info {
+  border-color: #0dcaf0 !important;
+}
+
+.border-warning {
+  border-color: #ffc107 !important;
+}
+
+.border-danger {
+  border-color: #dc3545 !important;
+}
+
+.border-light {
+  border-color: #f8f9fa !important;
+}
+
+.border-dark {
+  border-color: #212529 !important;
+}
+
+.border-white {
+  border-color: #fff !important;
+}
+
+.border-1 {
+  border-width: 1px !important;
+}
+
+.border-2 {
+  border-width: 2px !important;
+}
+
+.border-3 {
+  border-width: 3px !important;
+}
+
+.border-4 {
+  border-width: 4px !important;
+}
+
+.border-5 {
+  border-width: 5px !important;
+}
+
+.w-25 {
+  width: 25% !important;
+}
+
+.w-50 {
+  width: 50% !important;
+}
+
+.w-75 {
+  width: 75% !important;
+}
+
+.w-100 {
+  width: 100% !important;
+}
+
+.w-auto {
+  width: auto !important;
+}
+
+.mw-100 {
+  max-width: 100% !important;
+}
+
+.vw-100 {
+  width: 100vw !important;
+}
+
+.min-vw-100 {
+  min-width: 100vw !important;
+}
+
+.h-25 {
+  height: 25% !important;
+}
+
+.h-50 {
+  height: 50% !important;
+}
+
+.h-75 {
+  height: 75% !important;
+}
+
+.h-100 {
+  height: 100% !important;
+}
+
+.h-auto {
+  height: auto !important;
+}
+
+.mh-100 {
+  max-height: 100% !important;
+}
+
+.vh-100 {
+  height: 100vh !important;
+}
+
+.min-vh-100 {
+  min-height: 100vh !important;
+}
+
+.flex-fill {
+  flex: 1 1 auto !important;
+}
+
+.flex-row {
+  flex-direction: row !important;
+}
+
+.flex-column {
+  flex-direction: column !important;
+}
+
+.flex-row-reverse {
+  flex-direction: row-reverse !important;
+}
+
+.flex-column-reverse {
+  flex-direction: column-reverse !important;
+}
+
+.flex-grow-0 {
+  flex-grow: 0 !important;
+}
+
+.flex-grow-1 {
+  flex-grow: 1 !important;
+}
+
+.flex-shrink-0 {
+  flex-shrink: 0 !important;
+}
+
+.flex-shrink-1 {
+  flex-shrink: 1 !important;
+}
+
+.flex-wrap {
+  flex-wrap: wrap !important;
+}
+
+.flex-nowrap {
+  flex-wrap: nowrap !important;
+}
+
+.flex-wrap-reverse {
+  flex-wrap: wrap-reverse !important;
+}
+
+.gap-0 {
+  gap: 0 !important;
+}
+
+.gap-1 {
+  gap: 0.25rem !important;
+}
+
+.gap-2 {
+  gap: 0.5rem !important;
+}
+
+.gap-3 {
+  gap: 1rem !important;
+}
+
+.gap-4 {
+  gap: 1.5rem !important;
+}
+
+.gap-5 {
+  gap: 3rem !important;
+}
+
+.justify-content-start {
+  justify-content: flex-start !important;
+}
+
+.justify-content-end {
+  justify-content: flex-end !important;
+}
+
+.justify-content-center {
+  justify-content: center !important;
+}
+
+.justify-content-between {
+  justify-content: space-between !important;
+}
+
+.justify-content-around {
+  justify-content: space-around !important;
+}
+
+.justify-content-evenly {
+  justify-content: space-evenly !important;
+}
+
+.align-items-start {
+  align-items: flex-start !important;
+}
+
+.align-items-end {
+  align-items: flex-end !important;
+}
+
+.align-items-center {
+  align-items: center !important;
+}
+
+.align-items-baseline {
+  align-items: baseline !important;
+}
+
+.align-items-stretch {
+  align-items: stretch !important;
+}
+
+.align-content-start {
+  align-content: flex-start !important;
+}
+
+.align-content-end {
+  align-content: flex-end !important;
+}
+
+.align-content-center {
+  align-content: center !important;
+}
+
+.align-content-between {
+  align-content: space-between !important;
+}
+
+.align-content-around {
+  align-content: space-around !important;
+}
+
+.align-content-stretch {
+  align-content: stretch !important;
+}
+
+.align-self-auto {
+  align-self: auto !important;
+}
+
+.align-self-start {
+  align-self: flex-start !important;
+}
+
+.align-self-end {
+  align-self: flex-end !important;
+}
+
+.align-self-center {
+  align-self: center !important;
+}
+
+.align-self-baseline {
+  align-self: baseline !important;
+}
+
+.align-self-stretch {
+  align-self: stretch !important;
+}
+
+.order-first {
+  order: -1 !important;
+}
+
+.order-0 {
+  order: 0 !important;
+}
+
+.order-1 {
+  order: 1 !important;
+}
+
+.order-2 {
+  order: 2 !important;
+}
+
+.order-3 {
+  order: 3 !important;
+}
+
+.order-4 {
+  order: 4 !important;
+}
+
+.order-5 {
+  order: 5 !important;
+}
+
+.order-last {
+  order: 6 !important;
+}
+
+.m-0 {
+  margin: 0 !important;
+}
+
+.m-1 {
+  margin: 0.25rem !important;
+}
+
+.m-2 {
+  margin: 0.5rem !important;
+}
+
+.m-3 {
+  margin: 1rem !important;
+}
+
+.m-4 {
+  margin: 1.5rem !important;
+}
+
+.m-5 {
+  margin: 3rem !important;
+}
+
+.m-auto {
+  margin: auto !important;
+}
+
+.mx-0 {
+  margin-left: 0 !important;
+  margin-right: 0 !important;
+}
+
+.mx-1 {
+  margin-left: 0.25rem !important;
+  margin-right: 0.25rem !important;
+}
+
+.mx-2 {
+  margin-left: 0.5rem !important;
+  margin-right: 0.5rem !important;
+}
+
+.mx-3 {
+  margin-left: 1rem !important;
+  margin-right: 1rem !important;
+}
+
+.mx-4 {
+  margin-left: 1.5rem !important;
+  margin-right: 1.5rem !important;
+}
+
+.mx-5 {
+  margin-left: 3rem !important;
+  margin-right: 3rem !important;
+}
+
+.mx-auto {
+  margin-left: auto !important;
+  margin-right: auto !important;
+}
+
+.my-0 {
+  margin-top: 0 !important;
+  margin-bottom: 0 !important;
+}
+
+.my-1 {
+  margin-top: 0.25rem !important;
+  margin-bottom: 0.25rem !important;
+}
+
+.my-2 {
+  margin-top: 0.5rem !important;
+  margin-bottom: 0.5rem !important;
+}
+
+.my-3 {
+  margin-top: 1rem !important;
+  margin-bottom: 1rem !important;
+}
+
+.my-4 {
+  margin-top: 1.5rem !important;
+  margin-bottom: 1.5rem !important;
+}
+
+.my-5 {
+  margin-top: 3rem !important;
+  margin-bottom: 3rem !important;
+}
+
+.my-auto {
+  margin-top: auto !important;
+  margin-bottom: auto !important;
+}
+
+.mt-0 {
+  margin-top: 0 !important;
+}
+
+.mt-1 {
+  margin-top: 0.25rem !important;
+}
+
+.mt-2 {
+  margin-top: 0.5rem !important;
+}
+
+.mt-3 {
+  margin-top: 1rem !important;
+}
+
+.mt-4 {
+  margin-top: 1.5rem !important;
+}
+
+.mt-5 {
+  margin-top: 3rem !important;
+}
+
+.mt-auto {
+  margin-top: auto !important;
+}
+
+.me-0 {
+  margin-left: 0 !important;
+}
+
+.me-1 {
+  margin-left: 0.25rem !important;
+}
+
+.me-2 {
+  margin-left: 0.5rem !important;
+}
+
+.me-3 {
+  margin-left: 1rem !important;
+}
+
+.me-4 {
+  margin-left: 1.5rem !important;
+}
+
+.me-5 {
+  margin-left: 3rem !important;
+}
+
+.me-auto {
+  margin-left: auto !important;
+}
+
+.mb-0 {
+  margin-bottom: 0 !important;
+}
+
+.mb-1 {
+  margin-bottom: 0.25rem !important;
+}
+
+.mb-2 {
+  margin-bottom: 0.5rem !important;
+}
+
+.mb-3 {
+  margin-bottom: 1rem !important;
+}
+
+.mb-4 {
+  margin-bottom: 1.5rem !important;
+}
+
+.mb-5 {
+  margin-bottom: 3rem !important;
+}
+
+.mb-auto {
+  margin-bottom: auto !important;
+}
+
+.ms-0 {
+  margin-right: 0 !important;
+}
+
+.ms-1 {
+  margin-right: 0.25rem !important;
+}
+
+.ms-2 {
+  margin-right: 0.5rem !important;
+}
+
+.ms-3 {
+  margin-right: 1rem !important;
+}
+
+.ms-4 {
+  margin-right: 1.5rem !important;
+}
+
+.ms-5 {
+  margin-right: 3rem !important;
+}
+
+.ms-auto {
+  margin-right: auto !important;
+}
+
+.p-0 {
+  padding: 0 !important;
+}
+
+.p-1 {
+  padding: 0.25rem !important;
+}
+
+.p-2 {
+  padding: 0.5rem !important;
+}
+
+.p-3 {
+  padding: 1rem !important;
+}
+
+.p-4 {
+  padding: 1.5rem !important;
+}
+
+.p-5 {
+  padding: 3rem !important;
+}
+
+.px-0 {
+  padding-left: 0 !important;
+  padding-right: 0 !important;
+}
+
+.px-1 {
+  padding-left: 0.25rem !important;
+  padding-right: 0.25rem !important;
+}
+
+.px-2 {
+  padding-left: 0.5rem !important;
+  padding-right: 0.5rem !important;
+}
+
+.px-3 {
+  padding-left: 1rem !important;
+  padding-right: 1rem !important;
+}
+
+.px-4 {
+  padding-left: 1.5rem !important;
+  padding-right: 1.5rem !important;
+}
+
+.px-5 {
+  padding-left: 3rem !important;
+  padding-right: 3rem !important;
+}
+
+.py-0 {
+  padding-top: 0 !important;
+  padding-bottom: 0 !important;
+}
+
+.py-1 {
+  padding-top: 0.25rem !important;
+  padding-bottom: 0.25rem !important;
+}
+
+.py-2 {
+  padding-top: 0.5rem !important;
+  padding-bottom: 0.5rem !important;
+}
+
+.py-3 {
+  padding-top: 1rem !important;
+  padding-bottom: 1rem !important;
+}
+
+.py-4 {
+  padding-top: 1.5rem !important;
+  padding-bottom: 1.5rem !important;
+}
+
+.py-5 {
+  padding-top: 3rem !important;
+  padding-bottom: 3rem !important;
+}
+
+.pt-0 {
+  padding-top: 0 !important;
+}
+
+.pt-1 {
+  padding-top: 0.25rem !important;
+}
+
+.pt-2 {
+  padding-top: 0.5rem !important;
+}
+
+.pt-3 {
+  padding-top: 1rem !important;
+}
+
+.pt-4 {
+  padding-top: 1.5rem !important;
+}
+
+.pt-5 {
+  padding-top: 3rem !important;
+}
+
+.pe-0 {
+  padding-left: 0 !important;
+}
+
+.pe-1 {
+  padding-left: 0.25rem !important;
+}
+
+.pe-2 {
+  padding-left: 0.5rem !important;
+}
+
+.pe-3 {
+  padding-left: 1rem !important;
+}
+
+.pe-4 {
+  padding-left: 1.5rem !important;
+}
+
+.pe-5 {
+  padding-left: 3rem !important;
+}
+
+.pb-0 {
+  padding-bottom: 0 !important;
+}
+
+.pb-1 {
+  padding-bottom: 0.25rem !important;
+}
+
+.pb-2 {
+  padding-bottom: 0.5rem !important;
+}
+
+.pb-3 {
+  padding-bottom: 1rem !important;
+}
+
+.pb-4 {
+  padding-bottom: 1.5rem !important;
+}
+
+.pb-5 {
+  padding-bottom: 3rem !important;
+}
+
+.ps-0 {
+  padding-right: 0 !important;
+}
+
+.ps-1 {
+  padding-right: 0.25rem !important;
+}
+
+.ps-2 {
+  padding-right: 0.5rem !important;
+}
+
+.ps-3 {
+  padding-right: 1rem !important;
+}
+
+.ps-4 {
+  padding-right: 1.5rem !important;
+}
+
+.ps-5 {
+  padding-right: 3rem !important;
+}
+
+.font-monospace {
+  font-family: var(--bs-font-monospace) !important;
+}
+
+.fs-1 {
+  font-size: calc(1.375rem + 1.5vw) !important;
+}
+
+.fs-2 {
+  font-size: calc(1.325rem + 0.9vw) !important;
+}
+
+.fs-3 {
+  font-size: calc(1.3rem + 0.6vw) !important;
+}
+
+.fs-4 {
+  font-size: calc(1.275rem + 0.3vw) !important;
+}
+
+.fs-5 {
+  font-size: 1.25rem !important;
+}
+
+.fs-6 {
+  font-size: 1rem !important;
+}
+
+.fst-italic {
+  font-style: italic !important;
+}
+
+.fst-normal {
+  font-style: normal !important;
+}
+
+.fw-light {
+  font-weight: 300 !important;
+}
+
+.fw-lighter {
+  font-weight: lighter !important;
+}
+
+.fw-normal {
+  font-weight: 400 !important;
+}
+
+.fw-bold {
+  font-weight: 700 !important;
+}
+
+.fw-bolder {
+  font-weight: bolder !important;
+}
+
+.lh-1 {
+  line-height: 1 !important;
+}
+
+.lh-sm {
+  line-height: 1.25 !important;
+}
+
+.lh-base {
+  line-height: 1.5 !important;
+}
+
+.lh-lg {
+  line-height: 2 !important;
+}
+
+.text-start {
+  text-align: right !important;
+}
+
+.text-end {
+  text-align: left !important;
+}
+
+.text-center {
+  text-align: center !important;
+}
+
+.text-decoration-none {
+  text-decoration: none !important;
+}
+
+.text-decoration-underline {
+  text-decoration: underline !important;
+}
+
+.text-decoration-line-through {
+  text-decoration: line-through !important;
+}
+
+.text-lowercase {
+  text-transform: lowercase !important;
+}
+
+.text-uppercase {
+  text-transform: uppercase !important;
+}
+
+.text-capitalize {
+  text-transform: capitalize !important;
+}
+
+.text-wrap {
+  white-space: normal !important;
+}
+
+.text-nowrap {
+  white-space: nowrap !important;
+}
+.text-primary {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-secondary {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-success {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-info {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-warning {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-danger {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-light {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-dark {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-black {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-white {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-body {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-muted {
+  --bs-text-opacity: 1;
+  color: #6c757d !important;
+}
+
+.text-black-50 {
+  --bs-text-opacity: 1;
+  color: rgba(0, 0, 0, 0.5) !important;
+}
+
+.text-white-50 {
+  --bs-text-opacity: 1;
+  color: rgba(255, 255, 255, 0.5) !important;
+}
+
+.text-reset {
+  --bs-text-opacity: 1;
+  color: inherit !important;
+}
+
+.text-opacity-25 {
+  --bs-text-opacity: 0.25;
+}
+
+.text-opacity-50 {
+  --bs-text-opacity: 0.5;
+}
+
+.text-opacity-75 {
+  --bs-text-opacity: 0.75;
+}
+
+.text-opacity-100 {
+  --bs-text-opacity: 1;
+}
+
+.bg-primary {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-secondary {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-success {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-info {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-warning {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-danger {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-light {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-dark {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-black {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-white {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-body {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-transparent {
+  --bs-bg-opacity: 1;
+  background-color: transparent !important;
+}
+
+.bg-opacity-10 {
+  --bs-bg-opacity: 0.1;
+}
+
+.bg-opacity-25 {
+  --bs-bg-opacity: 0.25;
+}
+
+.bg-opacity-50 {
+  --bs-bg-opacity: 0.5;
+}
+
+.bg-opacity-75 {
+  --bs-bg-opacity: 0.75;
+}
+
+.bg-opacity-100 {
+  --bs-bg-opacity: 1;
+}
+
+.bg-gradient {
+  background-image: var(--bs-gradient) !important;
+}
+
+.user-select-all {
+  -webkit-user-select: all !important;
+  -moz-user-select: all !important;
+  user-select: all !important;
+}
+
+.user-select-auto {
+  -webkit-user-select: auto !important;
+  -moz-user-select: auto !important;
+  user-select: auto !important;
+}
+
+.user-select-none {
+  -webkit-user-select: none !important;
+  -moz-user-select: none !important;
+  user-select: none !important;
+}
+
+.pe-none {
+  pointer-events: none !important;
+}
+
+.pe-auto {
+  pointer-events: auto !important;
+}
+
+.rounded {
+  border-radius: 0.25rem !important;
+}
+
+.rounded-0 {
+  border-radius: 0 !important;
+}
+
+.rounded-1 {
+  border-radius: 0.2rem !important;
+}
+
+.rounded-2 {
+  border-radius: 0.25rem !important;
+}
+
+.rounded-3 {
+  border-radius: 0.3rem !important;
+}
+
+.rounded-circle {
+  border-radius: 50% !important;
+}
+
+.rounded-pill {
+  border-radius: 50rem !important;
+}
+
+.rounded-top {
+  border-top-right-radius: 0.25rem !important;
+  border-top-left-radius: 0.25rem !important;
+}
+
+.rounded-end {
+  border-top-left-radius: 0.25rem !important;
+  border-bottom-left-radius: 0.25rem !important;
+}
+
+.rounded-bottom {
+  border-bottom-left-radius: 0.25rem !important;
+  border-bottom-right-radius: 0.25rem !important;
+}
+
+.rounded-start {
+  border-bottom-right-radius: 0.25rem !important;
+  border-top-right-radius: 0.25rem !important;
+}
+
+.visible {
+  visibility: visible !important;
+}
+
+.invisible {
+  visibility: hidden !important;
+}
+
+@media (min-width: 576px) {
+  .float-sm-start {
+    float: right !important;
+  }
+
+  .float-sm-end {
+    float: left !important;
+  }
+
+  .float-sm-none {
+    float: none !important;
+  }
+
+  .d-sm-inline {
+    display: inline !important;
+  }
+
+  .d-sm-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-sm-block {
+    display: block !important;
+  }
+
+  .d-sm-grid {
+    display: grid !important;
+  }
+
+  .d-sm-table {
+    display: table !important;
+  }
+
+  .d-sm-table-row {
+    display: table-row !important;
+  }
+
+  .d-sm-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-sm-flex {
+    display: flex !important;
+  }
+
+  .d-sm-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-sm-none {
+    display: none !important;
+  }
+
+  .flex-sm-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-sm-row {
+    flex-direction: row !important;
+  }
+
+  .flex-sm-column {
+    flex-direction: column !important;
+  }
+
+  .flex-sm-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-sm-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-sm-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-sm-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-sm-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-sm-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-sm-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-sm-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-sm-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-sm-0 {
+    gap: 0 !important;
+  }
+
+  .gap-sm-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-sm-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-sm-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-sm-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-sm-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-sm-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-sm-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-sm-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-sm-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-sm-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-sm-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-sm-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-sm-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-sm-center {
+    align-items: center !important;
+  }
+
+  .align-items-sm-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-sm-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-sm-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-sm-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-sm-center {
+    align-content: center !important;
+  }
+
+  .align-content-sm-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-sm-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-sm-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-sm-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-sm-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-sm-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-sm-center {
+    align-self: center !important;
+  }
+
+  .align-self-sm-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-sm-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-sm-first {
+    order: -1 !important;
+  }
+
+  .order-sm-0 {
+    order: 0 !important;
+  }
+
+  .order-sm-1 {
+    order: 1 !important;
+  }
+
+  .order-sm-2 {
+    order: 2 !important;
+  }
+
+  .order-sm-3 {
+    order: 3 !important;
+  }
+
+  .order-sm-4 {
+    order: 4 !important;
+  }
+
+  .order-sm-5 {
+    order: 5 !important;
+  }
+
+  .order-sm-last {
+    order: 6 !important;
+  }
+
+  .m-sm-0 {
+    margin: 0 !important;
+  }
+
+  .m-sm-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-sm-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-sm-3 {
+    margin: 1rem !important;
+  }
+
+  .m-sm-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-sm-5 {
+    margin: 3rem !important;
+  }
+
+  .m-sm-auto {
+    margin: auto !important;
+  }
+
+  .mx-sm-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-sm-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-sm-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-sm-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-sm-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-sm-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-sm-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-sm-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-sm-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-sm-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-sm-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-sm-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-sm-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-sm-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-sm-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-sm-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-sm-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-sm-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-sm-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-sm-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-sm-auto {
+    margin-top: auto !important;
+  }
+
+  .me-sm-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-sm-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-sm-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-sm-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-sm-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-sm-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-sm-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-sm-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-sm-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-sm-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-sm-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-sm-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-sm-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-sm-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-sm-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-sm-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-sm-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-sm-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-sm-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-sm-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-sm-auto {
+    margin-right: auto !important;
+  }
+
+  .p-sm-0 {
+    padding: 0 !important;
+  }
+
+  .p-sm-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-sm-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-sm-3 {
+    padding: 1rem !important;
+  }
+
+  .p-sm-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-sm-5 {
+    padding: 3rem !important;
+  }
+
+  .px-sm-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-sm-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-sm-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-sm-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-sm-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-sm-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-sm-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-sm-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-sm-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-sm-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-sm-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-sm-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-sm-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-sm-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-sm-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-sm-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-sm-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-sm-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-sm-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-sm-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-sm-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-sm-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-sm-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-sm-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-sm-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-sm-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-sm-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-sm-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-sm-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-sm-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-sm-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-sm-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-sm-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-sm-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-sm-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-sm-5 {
+    padding-right: 3rem !important;
+  }
+
+  .text-sm-start {
+    text-align: right !important;
+  }
+
+  .text-sm-end {
+    text-align: left !important;
+  }
+
+  .text-sm-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 768px) {
+  .float-md-start {
+    float: right !important;
+  }
+
+  .float-md-end {
+    float: left !important;
+  }
+
+  .float-md-none {
+    float: none !important;
+  }
+
+  .d-md-inline {
+    display: inline !important;
+  }
+
+  .d-md-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-md-block {
+    display: block !important;
+  }
+
+  .d-md-grid {
+    display: grid !important;
+  }
+
+  .d-md-table {
+    display: table !important;
+  }
+
+  .d-md-table-row {
+    display: table-row !important;
+  }
+
+  .d-md-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-md-flex {
+    display: flex !important;
+  }
+
+  .d-md-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-md-none {
+    display: none !important;
+  }
+
+  .flex-md-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-md-row {
+    flex-direction: row !important;
+  }
+
+  .flex-md-column {
+    flex-direction: column !important;
+  }
+
+  .flex-md-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-md-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-md-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-md-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-md-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-md-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-md-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-md-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-md-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-md-0 {
+    gap: 0 !important;
+  }
+
+  .gap-md-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-md-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-md-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-md-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-md-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-md-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-md-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-md-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-md-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-md-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-md-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-md-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-md-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-md-center {
+    align-items: center !important;
+  }
+
+  .align-items-md-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-md-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-md-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-md-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-md-center {
+    align-content: center !important;
+  }
+
+  .align-content-md-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-md-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-md-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-md-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-md-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-md-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-md-center {
+    align-self: center !important;
+  }
+
+  .align-self-md-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-md-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-md-first {
+    order: -1 !important;
+  }
+
+  .order-md-0 {
+    order: 0 !important;
+  }
+
+  .order-md-1 {
+    order: 1 !important;
+  }
+
+  .order-md-2 {
+    order: 2 !important;
+  }
+
+  .order-md-3 {
+    order: 3 !important;
+  }
+
+  .order-md-4 {
+    order: 4 !important;
+  }
+
+  .order-md-5 {
+    order: 5 !important;
+  }
+
+  .order-md-last {
+    order: 6 !important;
+  }
+
+  .m-md-0 {
+    margin: 0 !important;
+  }
+
+  .m-md-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-md-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-md-3 {
+    margin: 1rem !important;
+  }
+
+  .m-md-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-md-5 {
+    margin: 3rem !important;
+  }
+
+  .m-md-auto {
+    margin: auto !important;
+  }
+
+  .mx-md-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-md-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-md-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-md-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-md-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-md-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-md-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-md-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-md-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-md-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-md-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-md-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-md-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-md-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-md-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-md-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-md-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-md-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-md-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-md-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-md-auto {
+    margin-top: auto !important;
+  }
+
+  .me-md-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-md-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-md-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-md-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-md-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-md-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-md-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-md-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-md-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-md-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-md-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-md-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-md-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-md-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-md-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-md-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-md-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-md-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-md-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-md-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-md-auto {
+    margin-right: auto !important;
+  }
+
+  .p-md-0 {
+    padding: 0 !important;
+  }
+
+  .p-md-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-md-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-md-3 {
+    padding: 1rem !important;
+  }
+
+  .p-md-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-md-5 {
+    padding: 3rem !important;
+  }
+
+  .px-md-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-md-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-md-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-md-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-md-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-md-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-md-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-md-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-md-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-md-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-md-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-md-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-md-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-md-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-md-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-md-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-md-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-md-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-md-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-md-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-md-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-md-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-md-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-md-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-md-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-md-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-md-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-md-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-md-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-md-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-md-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-md-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-md-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-md-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-md-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-md-5 {
+    padding-right: 3rem !important;
+  }
+
+  .text-md-start {
+    text-align: right !important;
+  }
+
+  .text-md-end {
+    text-align: left !important;
+  }
+
+  .text-md-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 992px) {
+  .float-lg-start {
+    float: right !important;
+  }
+
+  .float-lg-end {
+    float: left !important;
+  }
+
+  .float-lg-none {
+    float: none !important;
+  }
+
+  .d-lg-inline {
+    display: inline !important;
+  }
+
+  .d-lg-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-lg-block {
+    display: block !important;
+  }
+
+  .d-lg-grid {
+    display: grid !important;
+  }
+
+  .d-lg-table {
+    display: table !important;
+  }
+
+  .d-lg-table-row {
+    display: table-row !important;
+  }
+
+  .d-lg-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-lg-flex {
+    display: flex !important;
+  }
+
+  .d-lg-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-lg-none {
+    display: none !important;
+  }
+
+  .flex-lg-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-lg-row {
+    flex-direction: row !important;
+  }
+
+  .flex-lg-column {
+    flex-direction: column !important;
+  }
+
+  .flex-lg-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-lg-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-lg-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-lg-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-lg-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-lg-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-lg-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-lg-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-lg-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-lg-0 {
+    gap: 0 !important;
+  }
+
+  .gap-lg-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-lg-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-lg-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-lg-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-lg-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-lg-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-lg-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-lg-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-lg-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-lg-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-lg-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-lg-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-lg-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-lg-center {
+    align-items: center !important;
+  }
+
+  .align-items-lg-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-lg-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-lg-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-lg-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-lg-center {
+    align-content: center !important;
+  }
+
+  .align-content-lg-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-lg-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-lg-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-lg-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-lg-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-lg-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-lg-center {
+    align-self: center !important;
+  }
+
+  .align-self-lg-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-lg-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-lg-first {
+    order: -1 !important;
+  }
+
+  .order-lg-0 {
+    order: 0 !important;
+  }
+
+  .order-lg-1 {
+    order: 1 !important;
+  }
+
+  .order-lg-2 {
+    order: 2 !important;
+  }
+
+  .order-lg-3 {
+    order: 3 !important;
+  }
+
+  .order-lg-4 {
+    order: 4 !important;
+  }
+
+  .order-lg-5 {
+    order: 5 !important;
+  }
+
+  .order-lg-last {
+    order: 6 !important;
+  }
+
+  .m-lg-0 {
+    margin: 0 !important;
+  }
+
+  .m-lg-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-lg-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-lg-3 {
+    margin: 1rem !important;
+  }
+
+  .m-lg-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-lg-5 {
+    margin: 3rem !important;
+  }
+
+  .m-lg-auto {
+    margin: auto !important;
+  }
+
+  .mx-lg-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-lg-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-lg-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-lg-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-lg-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-lg-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-lg-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-lg-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-lg-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-lg-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-lg-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-lg-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-lg-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-lg-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-lg-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-lg-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-lg-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-lg-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-lg-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-lg-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-lg-auto {
+    margin-top: auto !important;
+  }
+
+  .me-lg-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-lg-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-lg-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-lg-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-lg-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-lg-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-lg-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-lg-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-lg-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-lg-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-lg-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-lg-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-lg-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-lg-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-lg-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-lg-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-lg-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-lg-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-lg-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-lg-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-lg-auto {
+    margin-right: auto !important;
+  }
+
+  .p-lg-0 {
+    padding: 0 !important;
+  }
+
+  .p-lg-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-lg-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-lg-3 {
+    padding: 1rem !important;
+  }
+
+  .p-lg-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-lg-5 {
+    padding: 3rem !important;
+  }
+
+  .px-lg-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-lg-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-lg-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-lg-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-lg-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-lg-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-lg-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-lg-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-lg-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-lg-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-lg-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-lg-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-lg-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-lg-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-lg-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-lg-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-lg-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-lg-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-lg-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-lg-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-lg-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-lg-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-lg-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-lg-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-lg-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-lg-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-lg-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-lg-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-lg-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-lg-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-lg-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-lg-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-lg-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-lg-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-lg-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-lg-5 {
+    padding-right: 3rem !important;
+  }
+
+  .text-lg-start {
+    text-align: right !important;
+  }
+
+  .text-lg-end {
+    text-align: left !important;
+  }
+
+  .text-lg-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 1200px) {
+  .float-xl-start {
+    float: right !important;
+  }
+
+  .float-xl-end {
+    float: left !important;
+  }
+
+  .float-xl-none {
+    float: none !important;
+  }
+
+  .d-xl-inline {
+    display: inline !important;
+  }
+
+  .d-xl-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-xl-block {
+    display: block !important;
+  }
+
+  .d-xl-grid {
+    display: grid !important;
+  }
+
+  .d-xl-table {
+    display: table !important;
+  }
+
+  .d-xl-table-row {
+    display: table-row !important;
+  }
+
+  .d-xl-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-xl-flex {
+    display: flex !important;
+  }
+
+  .d-xl-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-xl-none {
+    display: none !important;
+  }
+
+  .flex-xl-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-xl-row {
+    flex-direction: row !important;
+  }
+
+  .flex-xl-column {
+    flex-direction: column !important;
+  }
+
+  .flex-xl-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-xl-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-xl-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-xl-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-xl-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-xl-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-xl-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-xl-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-xl-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-xl-0 {
+    gap: 0 !important;
+  }
+
+  .gap-xl-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-xl-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-xl-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-xl-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-xl-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-xl-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-xl-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-xl-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-xl-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-xl-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-xl-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-xl-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-xl-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-xl-center {
+    align-items: center !important;
+  }
+
+  .align-items-xl-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-xl-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-xl-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-xl-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-xl-center {
+    align-content: center !important;
+  }
+
+  .align-content-xl-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-xl-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-xl-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-xl-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-xl-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-xl-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-xl-center {
+    align-self: center !important;
+  }
+
+  .align-self-xl-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-xl-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-xl-first {
+    order: -1 !important;
+  }
+
+  .order-xl-0 {
+    order: 0 !important;
+  }
+
+  .order-xl-1 {
+    order: 1 !important;
+  }
+
+  .order-xl-2 {
+    order: 2 !important;
+  }
+
+  .order-xl-3 {
+    order: 3 !important;
+  }
+
+  .order-xl-4 {
+    order: 4 !important;
+  }
+
+  .order-xl-5 {
+    order: 5 !important;
+  }
+
+  .order-xl-last {
+    order: 6 !important;
+  }
+
+  .m-xl-0 {
+    margin: 0 !important;
+  }
+
+  .m-xl-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-xl-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-xl-3 {
+    margin: 1rem !important;
+  }
+
+  .m-xl-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-xl-5 {
+    margin: 3rem !important;
+  }
+
+  .m-xl-auto {
+    margin: auto !important;
+  }
+
+  .mx-xl-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-xl-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-xl-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-xl-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-xl-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-xl-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-xl-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-xl-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-xl-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-xl-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-xl-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-xl-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-xl-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-xl-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-xl-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-xl-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-xl-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-xl-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-xl-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-xl-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-xl-auto {
+    margin-top: auto !important;
+  }
+
+  .me-xl-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-xl-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-xl-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-xl-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-xl-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-xl-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-xl-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-xl-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-xl-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-xl-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-xl-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-xl-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-xl-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-xl-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-xl-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-xl-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-xl-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-xl-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-xl-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-xl-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-xl-auto {
+    margin-right: auto !important;
+  }
+
+  .p-xl-0 {
+    padding: 0 !important;
+  }
+
+  .p-xl-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-xl-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-xl-3 {
+    padding: 1rem !important;
+  }
+
+  .p-xl-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-xl-5 {
+    padding: 3rem !important;
+  }
+
+  .px-xl-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-xl-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-xl-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-xl-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-xl-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-xl-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-xl-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-xl-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-xl-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-xl-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-xl-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-xl-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-xl-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-xl-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-xl-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-xl-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-xl-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-xl-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-xl-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-xl-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-xl-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-xl-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-xl-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-xl-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-xl-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-xl-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-xl-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-xl-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-xl-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-xl-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-xl-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-xl-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-xl-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-xl-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-xl-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-xl-5 {
+    padding-right: 3rem !important;
+  }
+
+  .text-xl-start {
+    text-align: right !important;
+  }
+
+  .text-xl-end {
+    text-align: left !important;
+  }
+
+  .text-xl-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 1400px) {
+  .float-xxl-start {
+    float: right !important;
+  }
+
+  .float-xxl-end {
+    float: left !important;
+  }
+
+  .float-xxl-none {
+    float: none !important;
+  }
+
+  .d-xxl-inline {
+    display: inline !important;
+  }
+
+  .d-xxl-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-xxl-block {
+    display: block !important;
+  }
+
+  .d-xxl-grid {
+    display: grid !important;
+  }
+
+  .d-xxl-table {
+    display: table !important;
+  }
+
+  .d-xxl-table-row {
+    display: table-row !important;
+  }
+
+  .d-xxl-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-xxl-flex {
+    display: flex !important;
+  }
+
+  .d-xxl-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-xxl-none {
+    display: none !important;
+  }
+
+  .flex-xxl-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-xxl-row {
+    flex-direction: row !important;
+  }
+
+  .flex-xxl-column {
+    flex-direction: column !important;
+  }
+
+  .flex-xxl-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-xxl-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-xxl-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-xxl-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-xxl-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-xxl-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-xxl-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-xxl-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-xxl-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-xxl-0 {
+    gap: 0 !important;
+  }
+
+  .gap-xxl-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-xxl-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-xxl-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-xxl-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-xxl-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-xxl-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-xxl-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-xxl-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-xxl-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-xxl-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-xxl-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-xxl-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-xxl-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-xxl-center {
+    align-items: center !important;
+  }
+
+  .align-items-xxl-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-xxl-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-xxl-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-xxl-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-xxl-center {
+    align-content: center !important;
+  }
+
+  .align-content-xxl-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-xxl-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-xxl-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-xxl-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-xxl-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-xxl-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-xxl-center {
+    align-self: center !important;
+  }
+
+  .align-self-xxl-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-xxl-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-xxl-first {
+    order: -1 !important;
+  }
+
+  .order-xxl-0 {
+    order: 0 !important;
+  }
+
+  .order-xxl-1 {
+    order: 1 !important;
+  }
+
+  .order-xxl-2 {
+    order: 2 !important;
+  }
+
+  .order-xxl-3 {
+    order: 3 !important;
+  }
+
+  .order-xxl-4 {
+    order: 4 !important;
+  }
+
+  .order-xxl-5 {
+    order: 5 !important;
+  }
+
+  .order-xxl-last {
+    order: 6 !important;
+  }
+
+  .m-xxl-0 {
+    margin: 0 !important;
+  }
+
+  .m-xxl-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-xxl-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-xxl-3 {
+    margin: 1rem !important;
+  }
+
+  .m-xxl-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-xxl-5 {
+    margin: 3rem !important;
+  }
+
+  .m-xxl-auto {
+    margin: auto !important;
+  }
+
+  .mx-xxl-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-xxl-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-xxl-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-xxl-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-xxl-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-xxl-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-xxl-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-xxl-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-xxl-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-xxl-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-xxl-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-xxl-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-xxl-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-xxl-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-xxl-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-xxl-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-xxl-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-xxl-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-xxl-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-xxl-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-xxl-auto {
+    margin-top: auto !important;
+  }
+
+  .me-xxl-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-xxl-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-xxl-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-xxl-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-xxl-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-xxl-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-xxl-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-xxl-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-xxl-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-xxl-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-xxl-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-xxl-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-xxl-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-xxl-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-xxl-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-xxl-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-xxl-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-xxl-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-xxl-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-xxl-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-xxl-auto {
+    margin-right: auto !important;
+  }
+
+  .p-xxl-0 {
+    padding: 0 !important;
+  }
+
+  .p-xxl-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-xxl-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-xxl-3 {
+    padding: 1rem !important;
+  }
+
+  .p-xxl-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-xxl-5 {
+    padding: 3rem !important;
+  }
+
+  .px-xxl-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-xxl-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-xxl-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-xxl-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-xxl-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-xxl-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-xxl-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-xxl-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-xxl-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-xxl-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-xxl-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-xxl-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-xxl-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-xxl-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-xxl-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-xxl-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-xxl-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-xxl-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-xxl-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-xxl-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-xxl-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-xxl-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-xxl-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-xxl-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-xxl-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-xxl-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-xxl-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-xxl-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-xxl-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-xxl-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-xxl-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-xxl-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-xxl-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-xxl-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-xxl-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-xxl-5 {
+    padding-right: 3rem !important;
+  }
+
+  .text-xxl-start {
+    text-align: right !important;
+  }
+
+  .text-xxl-end {
+    text-align: left !important;
+  }
+
+  .text-xxl-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 1200px) {
+  .fs-1 {
+    font-size: 2.5rem !important;
+  }
+
+  .fs-2 {
+    font-size: 2rem !important;
+  }
+
+  .fs-3 {
+    font-size: 1.75rem !important;
+  }
+
+  .fs-4 {
+    font-size: 1.5rem !important;
+  }
+}
+@media print {
+  .d-print-inline {
+    display: inline !important;
+  }
+
+  .d-print-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-print-block {
+    display: block !important;
+  }
+
+  .d-print-grid {
+    display: grid !important;
+  }
+
+  .d-print-table {
+    display: table !important;
+  }
+
+  .d-print-table-row {
+    display: table-row !important;
+  }
+
+  .d-print-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-print-flex {
+    display: flex !important;
+  }
+
+  .d-print-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-print-none {
+    display: none !important;
+  }
+}
+/*# sourceMappingURL=bootstrap-utilities.rtl.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map
new file mode 100644
index 0000000..69cea4c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap-utilities.scss","../../scss/mixins/_clearfix.scss","bootstrap-utilities.css","../../scss/helpers/_colored-links.scss","../../scss/_variables.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/mixins/_breakpoints.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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;Ab0QZ;;AajRQ;EAOI,2BAAA;Ab8QZ;;AarRQ;EAOI,6BAAA;AbkRZ;;AazRQ;EAOI,6BAAA;AbsRZ;;Aa7RQ;EAOI,0BAAA;Ab0RZ;;AajSQ;EAOI,mCAAA;EAAA,2BAAA;Ab8RZ;;AarSQ;EAOI,iBAAA;AbkSZ;;AazSQ;EAOI,mBAAA;AbsSZ;;Aa7SQ;EAOI,oBAAA;Ab0SZ;;AajTQ;EAOI,oBAAA;Ab8SZ;;AarTQ;EAOI,sBAAA;AbkTZ;;AazTQ;EAOI,uBAAA;AbsTZ;;Aa7TQ;EAOI,mBAAA;Ab0TZ;;AajUQ;EAOI,qBAAA;Ab8TZ;;AarUQ;EAOI,sBAAA;AbkUZ;;AazUQ;EAOI,kBAAA;AbsUZ;;Aa7UQ;EAOI,oBAAA;Ab0UZ;;AajVQ;EAOI,qBAAA;Ab8UZ;;AarVQ;EAOI,0CAAA;AbkVZ;;AazVQ;EAOI,qCAAA;AbsVZ;;Aa7VQ;EAOI,sCAAA;Ab0VZ;;AajWQ;EAOI,oCAAA;Ab8VZ;;AarWQ;EAOI,oBAAA;AbkWZ;;AazWQ;EAOI,wCAAA;AbsWZ;;Aa7WQ;EAOI,wBAAA;Ab0WZ;;AajXQ;EAOI,yCAAA;Ab8WZ;;AarXQ;EAOI,yBAAA;AbkXZ;;AazXQ;EAOI,2CAAA;AbsXZ;;Aa7XQ;EAOI,2BAAA;Ab0XZ;;AajYQ;EAOI,0CAAA;Ab8XZ;;AarYQ;EAOI,0BAAA;AbkYZ;;AazYQ;EAOI,gCAAA;AbsYZ;;Aa7YQ;EAOI,gCAAA;Ab0YZ;;AajZQ;EAOI,gCAAA;Ab8YZ;;AarZQ;EAOI,gCAAA;AbkZZ;;AazZQ;EAOI,gCAAA;AbsZZ;;Aa7ZQ;EAOI,gCAAA;Ab0ZZ;;AajaQ;EAOI,gCAAA;Ab8ZZ;;AaraQ;EAOI,gCAAA;AbkaZ;;AazaQ;EAOI,6BAAA;AbsaZ;;Aa7aQ;EAOI,4BAAA;Ab0aZ;;AajbQ;EAOI,4BAAA;Ab8aZ;;AarbQ;EAOI,4BAAA;AbkbZ;;AazbQ;EAOI,4BAAA;AbsbZ;;Aa7bQ;EAOI,4BAAA;Ab0bZ;;AajcQ;EAOI,qBAAA;Ab8bZ;;AarcQ;EAOI,qBAAA;AbkcZ;;AazcQ;EAOI,qBAAA;AbscZ;;Aa7cQ;EAOI,sBAAA;Ab0cZ;;AajdQ;EAOI,sBAAA;Ab8cZ;;AardQ;EAOI,0BAAA;AbkdZ;;AazdQ;EAOI,uBAAA;AbsdZ;;Aa7dQ;EAOI,2BAAA;Ab0dZ;;AajeQ;EAOI,sBAAA;Ab8dZ;;AareQ;EAOI,sBAAA;AbkeZ;;AazeQ;EAOI,sBAAA;AbseZ;;Aa7eQ;EAOI,uBAAA;Ab0eZ;;AajfQ;EAOI,uBAAA;Ab8eZ;;AarfQ;EAOI,2BAAA;AbkfZ;;AazfQ;EAOI,wBAAA;AbsfZ;;Aa7fQ;EAOI,4BAAA;Ab0fZ;;AajgBQ;EAOI,yBAAA;Ab8fZ;;AargBQ;EAOI,8BAAA;AbkgBZ;;AazgBQ;EAOI,iCAAA;AbsgBZ;;Aa7gBQ;EAOI,sCAAA;Ab0gBZ;;AajhBQ;EAOI,yCAAA;Ab8gBZ;;AarhBQ;EAOI,uBAAA;AbkhBZ;;AazhBQ;EAOI,uBAAA;AbshBZ;;Aa7hBQ;EAOI,yBAAA;Ab0hBZ;;AajiBQ;EAOI,yBAAA;Ab8hBZ;;AariBQ;EAOI,0BAAA;AbkiBZ;;AaziBQ;EAOI,4BAAA;AbsiBZ;;Aa7iBQ;EAOI,kCAAA;Ab0iBZ;;AajjBQ;EAOI,iBAAA;Ab8iBZ;;AarjBQ;EAOI,uBAAA;AbkjBZ;;AazjBQ;EAOI,sBAAA;AbsjBZ;;Aa7jBQ;EAOI,oBAAA;Ab0jBZ;;AajkBQ;EAOI,sBAAA;Ab8jBZ;;AarkBQ;EAOI,oBAAA;AbkkBZ;;AazkBQ;EAOI,sCAAA;AbskBZ;;Aa7kBQ;EAOI,oCAAA;Ab0kBZ;;AajlBQ;EAOI,kCAAA;Ab8kBZ;;AarlBQ;EAOI,yCAAA;AbklBZ;;AazlBQ;EAOI,wCAAA;AbslBZ;;Aa7lBQ;EAOI,wCAAA;Ab0lBZ;;AajmBQ;EAOI,kCAAA;Ab8lBZ;;AarmBQ;EAOI,gCAAA;AbkmBZ;;AazmBQ;EAOI,8BAAA;AbsmBZ;;Aa7mBQ;EAOI,gCAAA;Ab0mBZ;;AajnBQ;EAOI,+BAAA;Ab8mBZ;;AarnBQ;EAOI,oCAAA;AbknBZ;;AaznBQ;EAOI,kCAAA;AbsnBZ;;Aa7nBQ;EAOI,gCAAA;Ab0nBZ;;AajoBQ;EAOI,uCAAA;Ab8nBZ;;AaroBQ;EAOI,sCAAA;AbkoBZ;;AazoBQ;EAOI,iCAAA;AbsoBZ;;Aa7oBQ;EAOI,2BAAA;Ab0oBZ;;AajpBQ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AAA;Ab4+BZ;;Aan/BQ;EAOI,8BAAA;Abg/BZ;;Aav/BQ;EAOI,4BAAA;Abo/BZ;;Aa3/BQ;EAOI,8BAAA;Abw/BZ;;Aa//BQ;EAOI,4BAAA;Ab4/BZ;;AangCQ;EAOI,0BAAA;AbggCZ;;AavgCQ;EAOI,gCAAA;AbogCZ;;Aa3gCQ;EAOI,+BAAA;AbwgCZ;;Aa/gCQ;EAOI,6BAAA;Ab4gCZ;;AanhCQ;EAOI,+BAAA;AbghCZ;;AavhCQ;EAOI,6BAAA;AbohCZ;;Aa3hCQ;EAOI,4BAAA;AbwhCZ;;Aa/hCQ;EAOI,kCAAA;Ab4hCZ;;AaniCQ;EAOI,iCAAA;AbgiCZ;;AaviCQ;EAOI,+BAAA;AboiCZ;;Aa3iCQ;EAOI,iCAAA;AbwiCZ;;Aa/iCQ;EAOI,+BAAA;Ab4iCZ;;AanjCQ;EAOI,2BAAA;AbgjCZ;;AavjCQ;EAOI,iCAAA;AbojCZ;;Aa3jCQ;EAOI,gCAAA;AbwjCZ;;Aa/jCQ;EAOI,8BAAA;Ab4jCZ;;AankCQ;EAOI,gCAAA;AbgkCZ;;AavkCQ;EAOI,8BAAA;AbokCZ;;Aa3kCQ;EAOI,gDAAA;AbwkCZ;;Aa/kCQ;EAOI,4CAAA;Ab4kCZ;;AanlCQ;EAOI,4CAAA;AbglCZ;;AavlCQ;EAOI,0CAAA;AbolCZ;;Aa3lCQ;EAOI,4CAAA;AbwlCZ;;Aa/lCQ;EAOI,6BAAA;Ab4lCZ;;AanmCQ;EAOI,0BAAA;AbgmCZ;;AavmCQ;EAOI,6BAAA;AbomCZ;;Aa3mCQ;EAOI,6BAAA;AbwmCZ;;Aa/mCQ;EAOI,2BAAA;Ab4mCZ;;AannCQ;EAOI,+BAAA;AbgnCZ;;AavnCQ;EAOI,2BAAA;AbonCZ;;Aa3nCQ;EAOI,2BAAA;AbwnCZ;;Aa/nCQ;EAOI,8BAAA;Ab4nCZ;;AanoCQ;EAOI,yBAAA;AbgoCZ;;AavoCQ;EAOI,4BAAA;AbooCZ;;Aa3oCQ;EAOI,2BAAA;AbwoCZ;;Aa/oCQ;EAOI,yBAAA;Ab4oCZ;;AanpCQ;EAOI,4BAAA;AbgpCZ;;AavpCQ;EAOI,2BAAA;AbopCZ;;Aa3pCQ;EAOI,6BAAA;AbwpCZ;;Aa/pCQ;EAOI,gCAAA;Ab4pCZ;;AanqCQ;EAOI,qCAAA;AbgqCZ;;AavqCQ;EAOI,wCAAA;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M;IAOI,sCAAA;Eb+/CV;;EatgDM;IAOI,yCAAA;EbmgDV;;Ea1gDM;IAOI,uBAAA;EbugDV;;Ea9gDM;IAOI,uBAAA;Eb2gDV;;EalhDM;IAOI,yBAAA;Eb+gDV;;EathDM;IAOI,yBAAA;EbmhDV;;Ea1hDM;IAOI,0BAAA;EbuhDV;;Ea9hDM;IAOI,4BAAA;Eb2hDV;;EaliDM;IAOI,kCAAA;Eb+hDV;;EatiDM;IAOI,iBAAA;EbmiDV;;Ea1iDM;IAOI,uBAAA;EbuiDV;;Ea9iDM;IAOI,sBAAA;Eb2iDV;;EaljDM;IAOI,oBAAA;Eb+iDV;;EatjDM;IAOI,sBAAA;EbmjDV;;Ea1jDM;IAOI,oBAAA;EbujDV;;Ea9jDM;IAOI,sCAAA;Eb2jDV;;EalkDM;IAOI,oCAAA;Eb+jDV;;EatkDM;IAOI,kCAAA;EbmkDV;;Ea1kDM;IAOI,yCAAA;EbukDV;;Ea9kDM;IAOI,wCAAA;Eb2kDV;;EallDM;IAOI,wCAAA;Eb+kDV;;EatlDM;IAOI,kCAAA;EbmlDV;;Ea1lDM;IAOI,gCAAA;EbulDV;;Ea9lDM;IAOI,8BAAA;Eb2lDV;;EalmDM;IAOI,gCAAA;Eb+lDV;;EatmDM;IAOI,+BAAA;EbmmDV;;Ea1mDM;IAOI,oCAAA;EbumDV;;Ea9mDM;IAOI,kCAAA;Eb2mDV;;EalnDM;IAOI,gCAAA;Eb+mDV;;EatnDM;IAOI,uCAAA;EbmnDV;;Ea1nDM;IAOI,sCAAA;EbunDV;;Ea9nDM;IAOI,iCAAA;Eb2nDV;;EaloDM;IAOI,2BAAA;Eb+nDV;;EatoDM;IAOI,iCAAA;EbmoDV;;Ea1oDM;IAOI,+BAAA;EbuoDV;;Ea9oDM;IAOI,6BAAA;Eb2oDV;;EalpDM;IAOI,+BAAA;Eb+oDV;;EatpDM;IAOI,8BAAA;EbmpDV;;Ea1pDM;IAOI,oBAAA;EbupDV;;Ea9pDM;IAOI,mBAAA;Eb2pDV;;EalqDM;IAOI,mBAAA;Eb+pDV;;EatqDM;IAOI,mBAAA;EbmqDV;;Ea1qDM;IAOI,mBAAA;EbuqDV;;Ea9qDM;IAOI,mBAAA;Eb2qDV;;EalrDM;IAOI,mBAAA;Eb+qDV;;EatrDM;IAOI,mBAAA;EbmrDV;;Ea1rDM;IA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;EbqhEV;;Ea5hEM;IAOI,+BAAA;EbyhEV;;EahiEM;IAOI,iCAAA;Eb6hEV;;EapiEM;IAOI,+BAAA;EbiiEV;;EaxiEM;IAOI,2BAAA;EbqiEV;;Ea5iEM;IAOI,iCAAA;EbyiEV;;EahjEM;IAOI,gCAAA;Eb6iEV;;EapjEM;IAOI,8BAAA;EbijEV;;EaxjEM;IAOI,gCAAA;EbqjEV;;Ea5jEM;IAOI,8BAAA;EbyjEV;;EahkEM;IAOI,4BAAA;Eb6jEV;;EapkEM;IAOI,2BAAA;EbikEV;;EaxkEM;IAOI,6BAAA;EbqkEV;AACF;AK7kEI;EQAI;IAOI,uBAAA;Eb0kEV;;EajlEM;IAOI,sBAAA;Eb8kEV;;EarlEM;IAOI,sBAAA;EbklEV;;EazlEM;IAOI,0BAAA;EbslEV;;Ea7lEM;IAOI,gCAAA;Eb0lEV;;EajmEM;IAOI,yBAAA;Eb8lEV;;EarmEM;IAOI,wBAAA;EbkmEV;;EazmEM;IAOI,yBAAA;EbsmEV;;Ea7mEM;IAOI,6BAAA;Eb0mEV;;EajnEM;IAOI,8BAAA;Eb8mEV;;EarnEM;IAOI,wBAAA;EbknEV;;EaznEM;IAOI,+BAAA;EbsnEV;;Ea7nEM;IAOI,wBAAA;Eb0nEV;;EajoEM;IAOI,yBAAA;Eb8nEV;;EaroEM;IAOI,8BAAA;EbkoEV;;EazoEM;IAOI,iCAAA;EbsoEV;;Ea7oEM;IAOI,sCAAA;Eb0oEV;;EajpEM;IAOI,yCAAA;Eb8oEV;;EarpEM;IAOI,uBAAA;EbkpEV;;EazpEM;IAOI,uBAAA;EbspEV;;Ea7pEM;IAOI,yBAAA;Eb0pEV;;EajqEM;IAOI,yBAAA;Eb8pEV;;EarqEM;IAOI,0BAAA;EbkqEV;;EazqEM;IAOI,4BAAA;EbsqEV;;Ea7qEM;IAOI,kCAAA;Eb0qEV;;EajrEM;IAOI,iBAAA;Eb8qEV;;EarrEM;IAOI,uBAAA;EbkrEV;;EazrEM;IAOI,sBAAA;EbsrEV;;Ea7rEM;IAOI,oBAAA;Eb0rEV;;EajsEM;IAOI,sBAAA;Eb8rEV;;EarsEM;IAOI,oBAAA;EbksEV;;EazsEM;IAOI,sCAAA;EbssEV;;Ea7sEM;IAOI,oCAAA;Eb0sEV;;EajtEM;IAOI,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AA;EbquFV;;Ea5uFM;IAOI,yBAAA;EbyuFV;;EahvFM;IAOI,wBAAA;Eb6uFV;;EapvFM;IAOI,yBAAA;EbivFV;;EaxvFM;IAOI,6BAAA;EbqvFV;;Ea5vFM;IAOI,8BAAA;EbyvFV;;EahwFM;IAOI,wBAAA;Eb6vFV;;EapwFM;IAOI,+BAAA;EbiwFV;;EaxwFM;IAOI,wBAAA;EbqwFV;;Ea5wFM;IAOI,yBAAA;EbywFV;;EahxFM;IAOI,8BAAA;Eb6wFV;;EapxFM;IAOI,iCAAA;EbixFV;;EaxxFM;IAOI,sCAAA;EbqxFV;;Ea5xFM;IAOI,yCAAA;EbyxFV;;EahyFM;IAOI,uBAAA;Eb6xFV;;EapyFM;IAOI,uBAAA;EbiyFV;;EaxyFM;IAOI,yBAAA;EbqyFV;;Ea5yFM;IAOI,yBAAA;EbyyFV;;EahzFM;IAOI,0BAAA;Eb6yFV;;EapzFM;IAOI,4BAAA;EbizFV;;EaxzFM;IAOI,kCAAA;EbqzFV;;Ea5zFM;IAOI,iBAAA;EbyzFV;;Eah0FM;IAOI,uBAAA;Eb6zFV;;Eap0FM;IAOI,sBAAA;Ebi0FV;;Eax0FM;IAOI,oBAAA;Ebq0FV;;Ea50FM;IAOI,sBAAA;Eby0FV;;Eah1FM;IAOI,oBAAA;Eb60FV;;Eap1FM;IAOI,sCAAA;Ebi1FV;;Eax1FM;IAOI,oCAAA;Ebq1FV;;Ea51FM;IAOI,kCAAA;Eby1FV;;Eah2FM;IAOI,yCAAA;Eb61FV;;Eap2FM;IAOI,wCAAA;Ebi2FV;;Eax2FM;IAOI,wCAAA;Ebq2FV;;Ea52FM;IAOI,kCAAA;Eby2FV;;Eah3FM;IAOI,gCAAA;Eb62FV;;Eap3FM;IAOI,8BAAA;Ebi3FV;;Eax3FM;IAOI,gCAAA;Ebq3FV;;Ea53FM;IAOI,+BAAA;Eby3FV;;Eah4FM;IAOI,oCAAA;Eb63FV;;Eap4FM;IAOI,kCAAA;Ebi4FV;;Eax4FM;IAOI,gCAAA;Ebq4FV;;Ea54FM;IAOI,uCAAA;Eby4FV;;Eah5FM;IAOI,sCAAA;Eb64FV;;Eap5FM;IAOI,iCAAA;Ebi5FV;;Eax5FM;IAOI,2BAAA;Ebq5FV;;Ea55FM;IAOI,iCAAA;Eby5FV;;Eah6FM;IAOI,+BAAA;E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alwGM;IAOI,4BAAA;Eb+vGV;;EatwGM;IAOI,8BAAA;EbmwGV;;Ea1wGM;IAOI,4BAAA;EbuwGV;;Ea9wGM;IAOI,0BAAA;Eb2wGV;;EalxGM;IAOI,gCAAA;Eb+wGV;;EatxGM;IAOI,+BAAA;EbmxGV;;Ea1xGM;IAOI,6BAAA;EbuxGV;;Ea9xGM;IAOI,+BAAA;Eb2xGV;;EalyGM;IAOI,6BAAA;Eb+xGV;;EatyGM;IAOI,4BAAA;EbmyGV;;Ea1yGM;IAOI,kCAAA;EbuyGV;;Ea9yGM;IAOI,iCAAA;Eb2yGV;;EalzGM;IAOI,+BAAA;Eb+yGV;;EatzGM;IAOI,iCAAA;EbmzGV;;Ea1zGM;IAOI,+BAAA;EbuzGV;;Ea9zGM;IAOI,2BAAA;Eb2zGV;;Eal0GM;IAOI,iCAAA;Eb+zGV;;Eat0GM;IAOI,gCAAA;Ebm0GV;;Ea10GM;IAOI,8BAAA;Ebu0GV;;Ea90GM;IAOI,gCAAA;Eb20GV;;Eal1GM;IAOI,8BAAA;Eb+0GV;;Eat1GM;IAOI,4BAAA;Ebm1GV;;Ea11GM;IAOI,2BAAA;Ebu1GV;;Ea91GM;IAOI,6BAAA;Eb21GV;AACF;AKn2GI;EQAI;IAOI,uBAAA;Ebg2GV;;Eav2GM;IAOI,sBAAA;Ebo2GV;;Ea32GM;IAOI,sBAAA;Ebw2GV;;Ea/2GM;IAOI,0BAAA;Eb42GV;;Ean3GM;IAOI,gCAAA;Ebg3GV;;Eav3GM;IAOI,yBAAA;Ebo3GV;;Ea33GM;IAOI,wBAAA;Ebw3GV;;Ea/3GM;IAOI,yBAAA;Eb43GV;;Ean4GM;IAOI,6BAAA;Ebg4GV;;Eav4GM;IAOI,8BAAA;Ebo4GV;;Ea34GM;IAOI,wBAAA;Ebw4GV;;Ea/4GM;IAOI,+BAAA;Eb44GV;;Ean5GM;IAOI,wBAAA;Ebg5GV;;Eav5GM;IAOI,yBAAA;Ebo5GV;;Ea35GM;IAOI,8BAAA;Ebw5GV;;Ea/5GM;IAOI,iCAAA;Eb45GV;;Ean6GM;IAOI,sCAAA;Ebg6GV;;Eav6GM;IAOI,yCAAA;Ebo6GV;;Ea36GM;IAOI,uBAAA;Ebw6GV;;Ea/6GM;IAOI,uBAAA;Eb46GV;;Ean7GM;IAOI,yBAAA;Ebg7GV;;Eav7GM;IAOI,yBAAA;Ebo7GV;;Ea37GM;IAOI,0BAAA;Ebw7GV;;Ea/7GM;IAOI,4BAAA;Eb47GV;;Ean8GM;IAOI,kCAAA;Ebg8GV;;Eav8GM;IAOI,iBAAA;Ebo8GV;;Ea38GM;IAOI,uBAAA;Ebw8GV;;Ea/8GM;IAOI,sBAAA;Eb48GV;;Ean9GM;IAOI,oBAAA;Ebg9GV;;Eav9GM;IAOI,sBAAA;Ebo9GV;;Ea39GM;IAOI,oBAAA;Ebw9GV;;Ea/9GM;IAOI,sCAAA;Eb49GV;;Ean+GM;IAOI,oCAAA;Ebg+GV;;Eav+GM;IAOI,kCAAA;Ebo+GV;;Ea3+GM;IAOI,yCAAA;Ebw+GV;;Ea/+GM;IAOI,wCAAA;Eb4+GV;;Ean/GM;IAOI,wCAAA;Ebg/GV;;Eav/GM;IAOI,kCAAA;Ebo/GV;;Ea3/GM;IAOI,gCAAA;Ebw/GV;;Ea//GM;IAOI,8BAAA;Eb4/GV;;EangHM;IAOI,gCAAA;EbggHV;;EavgHM;IAOI,+BAAA;EbogHV;;Ea3gHM;IAOI,oCAAA;EbwgHV;;Ea/gHM;IAOI,kCAAA;Eb4gHV;;EanhHM;IAOI,gCAAA;EbghHV;;EavhHM;IAOI,uCAAA;EbohHV;;Ea3hHM;IAOI,sCAAA;EbwhHV;;Ea/hHM;IAOI,iCAAA;Eb4hHV;;EaniHM;IAOI,2BAAA;EbgiHV;;EaviHM;IAOI,iCAAA;EboiHV;;Ea3iHM;IAOI,+BAAA;EbwiHV;;Ea/iHM;IAOI,6BAAA;Eb4iHV;;EanjHM;IAOI,+BAAA;EbgjHV;;EavjHM;IAOI,8BAAA;EbojHV;;Ea3jHM;IAOI,oBAAA;EbwjHV;;Ea/jHM;IAOI,mBAAA;Eb4jHV;;EankHM;IAOI,mBAAA;EbgkHV;;EavkHM;IAOI,mBAAA;EbokHV;;Ea3kHM;IAOI,mBAAA;EbwkHV;;Ea/kHM;IAOI,mBAAA;Eb4kHV;;EanlHM;IAOI,mBAAA;EbglHV;;EavlHM;IAOI,mBAAA;EbolHV;;Ea3lHM;IAOI,oBAAA;EbwlHV;;Ea/lHM;IAOI,0BAAA;Eb4lHV;;EanmHM;IAOI,yBAAA;EbgmHV;;EavmHM;IAOI,uBAAA;EbomHV;;Ea3mHM;IAOI,yBAAA;EbwmHV;;Ea/mHM;IAOI,uBAAA;Eb4mHV;;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AOI,gCAAA;Eb88HV;;Ear9HM;IAOI,8BAAA;Ebk9HV;;Eaz9HM;IAOI,gCAAA;Ebs9HV;;Ea79HM;IAOI,8BAAA;Eb09HV;;Eaj+HM;IAOI,4BAAA;Eb89HV;;Ear+HM;IAOI,2BAAA;Ebk+HV;;Eaz+HM;IAOI,6BAAA;Ebs+HV;AACF;AK9+HI;EQAI;IAOI,uBAAA;Eb2+HV;;Eal/HM;IAOI,sBAAA;Eb++HV;;Eat/HM;IAOI,sBAAA;Ebm/HV;;Ea1/HM;IAOI,0BAAA;Ebu/HV;;Ea9/HM;IAOI,gCAAA;Eb2/HV;;EalgIM;IAOI,yBAAA;Eb+/HV;;EatgIM;IAOI,wBAAA;EbmgIV;;Ea1gIM;IAOI,yBAAA;EbugIV;;Ea9gIM;IAOI,6BAAA;Eb2gIV;;EalhIM;IAOI,8BAAA;Eb+gIV;;EathIM;IAOI,wBAAA;EbmhIV;;Ea1hIM;IAOI,+BAAA;EbuhIV;;Ea9hIM;IAOI,wBAAA;Eb2hIV;;EaliIM;IAOI,yBAAA;Eb+hIV;;EatiIM;IAOI,8BAAA;EbmiIV;;Ea1iIM;IAOI,iCAAA;EbuiIV;;Ea9iIM;IAOI,sCAAA;Eb2iIV;;EaljIM;IAOI,yCAAA;Eb+iIV;;EatjIM;IAOI,uBAAA;EbmjIV;;Ea1jIM;IAOI,uBAAA;EbujIV;;Ea9jIM;IAOI,yBAAA;Eb2jIV;;EalkIM;IAOI,yBAAA;Eb+jIV;;EatkIM;IAOI,0BAAA;EbmkIV;;Ea1kIM;IAOI,4BAAA;EbukIV;;Ea9kIM;IAOI,kCAAA;Eb2kIV;;EallIM;IAOI,iBAAA;Eb+kIV;;EatlIM;IAOI,uBAAA;EbmlIV;;Ea1lIM;IAOI,sBAAA;EbulIV;;Ea9lIM;IAOI,oBAAA;Eb2lIV;;EalmIM;IAOI,sBAAA;Eb+lIV;;EatmIM;IAOI,oBAAA;EbmmIV;;Ea1mIM;IAOI,sCAAA;EbumIV;;Ea9mIM;IAOI,oCAAA;Eb2mIV;;EalnIM;IAOI,kCAAA;Eb+mIV;;EatnIM;IAOI,yCAAA;EbmnIV;;Ea1nIM;IAOI,wCAAA;EbunIV;;Ea9nIM;IAOI,wCAAA;Eb2nIV;;EaloIM;IAOI,kCAAA;Eb+nIV;;EatoIM;IAOI,gCAAA;EbmoIV;;Ea1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","file":"bootstrap-utilities.rtl.css","sourcesContent":["/*!\n * Bootstrap Utilities v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n","// scss-docs-start clearfix\n@mixin clearfix() {\n  &::after {\n    display: block;\n    clear: both;\n    content: \"\";\n  }\n}\n// scss-docs-end clearfix\n","/*!\n * Bootstrap Utilities v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.link-primary {\n  color: #0d6efd;\n}\n.link-primary:hover, .link-primary:focus {\n  color: #0a58ca;\n}\n\n.link-secondary {\n  color: #6c757d;\n}\n.link-secondary:hover, .link-secondary:focus {\n  color: #565e64;\n}\n\n.link-success {\n  color: #198754;\n}\n.link-success:hover, .link-success:focus {\n  color: #146c43;\n}\n\n.link-info {\n  color: #0dcaf0;\n}\n.link-info:hover, .link-info:focus {\n  color: #3dd5f3;\n}\n\n.link-warning {\n  color: #ffc107;\n}\n.link-warning:hover, .link-warning:focus {\n  color: #ffcd39;\n}\n\n.link-danger {\n  color: #dc3545;\n}\n.link-danger:hover, .link-danger:focus {\n  color: #b02a37;\n}\n\n.link-light {\n  color: #f8f9fa;\n}\n.link-light:hover, .link-light:focus {\n  color: #f9fafb;\n}\n\n.link-dark {\n  color: #212529;\n}\n.link-dark:hover, .link-dark:focus {\n  color: #1a1e21;\n}\n\n.ratio {\n  position: relative;\n  width: 100%;\n}\n.ratio::before {\n  display: block;\n  padding-top: var(--bs-aspect-ratio);\n  content: \"\";\n}\n.ratio > * {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.ratio-1x1 {\n  --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n  --bs-aspect-ratio: calc(3 / 4 * 100%);\n}\n\n.ratio-16x9 {\n  --bs-aspect-ratio: calc(9 / 16 * 100%);\n}\n\n.ratio-21x9 {\n  --bs-aspect-ratio: calc(9 / 21 * 100%);\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.sticky-top {\n  position: sticky;\n  top: 0;\n  z-index: 1020;\n}\n\n@media (min-width: 576px) {\n  .sticky-sm-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 768px) {\n  .sticky-md-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 992px) {\n  .sticky-lg-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1200px) {\n  .sticky-xl-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1400px) {\n  .sticky-xxl-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1;\n  content: \"\";\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: 0.25;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.float-start {\n  float: left !important;\n}\n\n.float-end {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-25 {\n  opacity: 0.25 !important;\n}\n\n.opacity-50 {\n  opacity: 0.5 !important;\n}\n\n.opacity-75 {\n  opacity: 0.75 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: sticky !important;\n}\n\n.top-0 {\n  top: 0 !important;\n}\n\n.top-50 {\n  top: 50% !important;\n}\n\n.top-100 {\n  top: 100% !important;\n}\n\n.bottom-0 {\n  bottom: 0 !important;\n}\n\n.bottom-50 {\n  bottom: 50% !important;\n}\n\n.bottom-100 {\n  bottom: 100% !important;\n}\n\n.start-0 {\n  left: 0 !important;\n}\n\n.start-50 {\n  left: 50% !important;\n}\n\n.start-100 {\n  left: 100% !important;\n}\n\n.end-0 {\n  right: 0 !important;\n}\n\n.end-50 {\n  right: 50% !important;\n}\n\n.end-100 {\n  right: 100% !important;\n}\n\n.translate-middle {\n  transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n  transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n  transform: translateY(-50%) !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-end {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-end-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-start {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-start-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #0d6efd !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #198754 !important;\n}\n\n.border-info {\n  border-color: #0dcaf0 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #212529 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.border-1 {\n  border-width: 1px !important;\n}\n\n.border-2 {\n  border-width: 2px !important;\n}\n\n.border-3 {\n  border-width: 3px !important;\n}\n\n.border-4 {\n  border-width: 4px !important;\n}\n\n.border-5 {\n  border-width: 5px !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.vw-100 {\n  width: 100vw !important;\n}\n\n.min-vw-100 {\n  min-width: 100vw !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.vh-100 {\n  height: 100vh !important;\n}\n\n.min-vh-100 {\n  min-height: 100vh !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.gap-0 {\n  gap: 0 !important;\n}\n\n.gap-1 {\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  gap: 1rem !important;\n}\n\n.gap-4 {\n  gap: 1.5rem !important;\n}\n\n.gap-5 {\n  gap: 3rem !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-right: 0 !important;\n  margin-left: 0 !important;\n}\n\n.mx-1 {\n  margin-right: 0.25rem !important;\n  margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-right: 0.5rem !important;\n  margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-right: 1rem !important;\n  margin-left: 1rem !important;\n}\n\n.mx-4 {\n  margin-right: 1.5rem !important;\n  margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-right: 3rem !important;\n  margin-left: 3rem !important;\n}\n\n.mx-auto {\n  margin-right: auto !important;\n  margin-left: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-right: 0 !important;\n}\n\n.me-1 {\n  margin-right: 0.25rem !important;\n}\n\n.me-2 {\n  margin-right: 0.5rem !important;\n}\n\n.me-3 {\n  margin-right: 1rem !important;\n}\n\n.me-4 {\n  margin-right: 1.5rem !important;\n}\n\n.me-5 {\n  margin-right: 3rem !important;\n}\n\n.me-auto {\n  margin-right: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-left: 0 !important;\n}\n\n.ms-1 {\n  margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-left: 1rem !important;\n}\n\n.ms-4 {\n  margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-left: 3rem !important;\n}\n\n.ms-auto {\n  margin-left: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-right: 0 !important;\n  padding-left: 0 !important;\n}\n\n.px-1 {\n  padding-right: 0.25rem !important;\n  padding-left: 0.25rem !important;\n}\n\n.px-2 {\n  padding-right: 0.5rem !important;\n  padding-left: 0.5rem !important;\n}\n\n.px-3 {\n  padding-right: 1rem !important;\n  padding-left: 1rem !important;\n}\n\n.px-4 {\n  padding-right: 1.5rem !important;\n  padding-left: 1.5rem !important;\n}\n\n.px-5 {\n  padding-right: 3rem !important;\n  padding-left: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-right: 0 !important;\n}\n\n.pe-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-right: 1rem !important;\n}\n\n.pe-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-left: 0 !important;\n}\n\n.ps-1 {\n  padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-left: 1rem !important;\n}\n\n.ps-4 {\n  padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-left: 3rem !important;\n}\n\n.font-monospace {\n  font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n  font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n  font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n  font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n  font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n  font-size: 1.25rem !important;\n}\n\n.fs-6 {\n  font-size: 1rem !important;\n}\n\n.fst-italic {\n  font-style: italic !important;\n}\n\n.fst-normal {\n  font-style: normal !important;\n}\n\n.fw-light {\n  font-weight: 300 !important;\n}\n\n.fw-lighter {\n  font-weight: lighter !important;\n}\n\n.fw-normal {\n  font-weight: 400 !important;\n}\n\n.fw-bold {\n  font-weight: 700 !important;\n}\n\n.fw-bolder {\n  font-weight: bolder !important;\n}\n\n.lh-1 {\n  line-height: 1 !important;\n}\n\n.lh-sm {\n  line-height: 1.25 !important;\n}\n\n.lh-base {\n  line-height: 1.5 !important;\n}\n\n.lh-lg {\n  line-height: 2 !important;\n}\n\n.text-start {\n  text-align: left !important;\n}\n\n.text-end {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n.text-decoration-none {\n  text-decoration: none !important;\n}\n\n.text-decoration-underline {\n  text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n  text-decoration: line-through !important;\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.text-wrap {\n  white-space: normal !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n  word-wrap: break-word !important;\n  word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n  --bs-text-opacity: 1;\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  --bs-text-opacity: 1;\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  --bs-text-opacity: 1;\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-reset {\n  --bs-text-opacity: 1;\n  color: inherit !important;\n}\n\n.text-opacity-25 {\n  --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n  --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n  --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n  --bs-text-opacity: 1;\n}\n\n.bg-primary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n  --bs-bg-opacity: 1;\n  background-color: transparent !important;\n}\n\n.bg-opacity-10 {\n  --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n  --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n  --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n  --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n  --bs-bg-opacity: 1;\n}\n\n.bg-gradient {\n  background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n  user-select: all !important;\n}\n\n.user-select-auto {\n  user-select: auto !important;\n}\n\n.user-select-none {\n  user-select: none !important;\n}\n\n.pe-none {\n  pointer-events: none !important;\n}\n\n.pe-auto {\n  pointer-events: auto !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.rounded-1 {\n  border-radius: 0.2rem !important;\n}\n\n.rounded-2 {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-3 {\n  border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-pill {\n  border-radius: 50rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-end {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-start {\n  border-bottom-left-radius: 0.25rem !important;\n  border-top-left-radius: 0.25rem !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-start {\n    float: left !important;\n  }\n\n  .float-sm-end {\n    float: right !important;\n  }\n\n  .float-sm-none {\n    float: none !important;\n  }\n\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-sm-0 {\n    gap: 0 !important;\n  }\n\n  .gap-sm-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-sm-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-sm-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-sm-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-sm-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-sm-start {\n    text-align: left !important;\n  }\n\n  .text-sm-end {\n    text-align: right !important;\n  }\n\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 768px) {\n  .float-md-start {\n    float: left !important;\n  }\n\n  .float-md-end {\n    float: right !important;\n  }\n\n  .float-md-none {\n    float: none !important;\n  }\n\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-md-0 {\n    gap: 0 !important;\n  }\n\n  .gap-md-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-md-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-md-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-md-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-md-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-left: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-md-start {\n    text-align: left !important;\n  }\n\n  .text-md-end {\n    text-align: right !important;\n  }\n\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 992px) {\n  .float-lg-start {\n    float: left !important;\n  }\n\n  .float-lg-end {\n    float: right !important;\n  }\n\n  .float-lg-none {\n    float: none !important;\n  }\n\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-lg-0 {\n    gap: 0 !important;\n  }\n\n  .gap-lg-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-lg-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-lg-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-lg-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-lg-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-lg-start {\n    text-align: left !important;\n  }\n\n  .text-lg-end {\n    text-align: right !important;\n  }\n\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .float-xl-start {\n    float: left !important;\n  }\n\n  .float-xl-end {\n    float: right !important;\n  }\n\n  .float-xl-none {\n    float: none !important;\n  }\n\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xl-start {\n    text-align: left !important;\n  }\n\n  .text-xl-end {\n    text-align: right !important;\n  }\n\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1400px) {\n  .float-xxl-start {\n    float: left !important;\n  }\n\n  .float-xxl-end {\n    float: right !important;\n  }\n\n  .float-xxl-none {\n    float: none !important;\n  }\n\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xxl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xxl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xxl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xxl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xxl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xxl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xxl-start {\n    text-align: left !important;\n  }\n\n  .text-xxl-end {\n    text-align: right !important;\n  }\n\n  .text-xxl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .fs-1 {\n    font-size: 2.5rem !important;\n  }\n\n  .fs-2 {\n    font-size: 2rem !important;\n  }\n\n  .fs-3 {\n    font-size: 1.75rem !important;\n  }\n\n  .fs-4 {\n    font-size: 1.5rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap-utilities.css.map */\n","@each $color, $value in $theme-colors {\n  .link-#{$color} {\n    color: $value;\n\n    @if $link-shade-percentage != 0 {\n      &:hover,\n      &:focus {\n        color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));\n      }\n    }\n  }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white:    #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black:    #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n  \"100\": $gray-100,\n  \"200\": $gray-200,\n  \"300\": $gray-300,\n  \"400\": $gray-400,\n  \"500\": $gray-500,\n  \"600\": $gray-600,\n  \"700\": $gray-700,\n  \"800\": $gray-800,\n  \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue:    #0d6efd !default;\n$indigo:  #6610f2 !default;\n$purple:  #6f42c1 !default;\n$pink:    #d63384 !default;\n$red:     #dc3545 !default;\n$orange:  #fd7e14 !default;\n$yellow:  #ffc107 !default;\n$green:   #198754 !default;\n$teal:    #20c997 !default;\n$cyan:    #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n  \"blue\":       $blue,\n  \"indigo\":     $indigo,\n  \"purple\":     $purple,\n  \"pink\":       $pink,\n  \"red\":        $red,\n  \"orange\":     $orange,\n  \"yellow\":     $yellow,\n  \"green\":      $green,\n  \"teal\":       $teal,\n  \"cyan\":       $cyan,\n  \"white\":      $white,\n  \"gray\":       $gray-600,\n  \"gray-dark\":  $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// scss-docs-start theme-color-variables\n$primary:       $blue !default;\n$secondary:     $gray-600 !default;\n$success:       $green !default;\n$info:          $cyan !default;\n$warning:       $yellow !default;\n$danger:        $red !default;\n$light:         $gray-100 !default;\n$dark:          $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n  \"primary\":    $primary,\n  \"secondary\":  $secondary,\n  \"success\":    $success,\n  \"info\":       $info,\n  \"warning\":    $warning,\n  \"danger\":     $danger,\n  \"light\":      $light,\n  \"dark\":       $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-colors-rgb\n$theme-colors-rgb: map-loop($theme-colors, to-rgb, \"$value\") !default;\n// scss-docs-end theme-colors-rgb\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio:   4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark:      $black !default;\n$color-contrast-light:     $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n  \"blue-100\": $blue-100,\n  \"blue-200\": $blue-200,\n  \"blue-300\": $blue-300,\n  \"blue-400\": $blue-400,\n  \"blue-500\": $blue-500,\n  \"blue-600\": $blue-600,\n  \"blue-700\": $blue-700,\n  \"blue-800\": $blue-800,\n  \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n  \"indigo-100\": $indigo-100,\n  \"indigo-200\": $indigo-200,\n  \"indigo-300\": $indigo-300,\n  \"indigo-400\": $indigo-400,\n  \"indigo-500\": $indigo-500,\n  \"indigo-600\": $indigo-600,\n  \"indigo-700\": $indigo-700,\n  \"indigo-800\": $indigo-800,\n  \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n  \"purple-100\": $purple-200,\n  \"purple-200\": $purple-100,\n  \"purple-300\": $purple-300,\n  \"purple-400\": $purple-400,\n  \"purple-500\": $purple-500,\n  \"purple-600\": $purple-600,\n  \"purple-700\": $purple-700,\n  \"purple-800\": $purple-800,\n  \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n  \"pink-100\": $pink-100,\n  \"pink-200\": $pink-200,\n  \"pink-300\": $pink-300,\n  \"pink-400\": $pink-400,\n  \"pink-500\": $pink-500,\n  \"pink-600\": $pink-600,\n  \"pink-700\": $pink-700,\n  \"pink-800\": $pink-800,\n  \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n  \"red-100\": $red-100,\n  \"red-200\": $red-200,\n  \"red-300\": $red-300,\n  \"red-400\": $red-400,\n  \"red-500\": $red-500,\n  \"red-600\": $red-600,\n  \"red-700\": $red-700,\n  \"red-800\": $red-800,\n  \"red-900\": $red-900\n) !default;\n\n$oranges: (\n  \"orange-100\": $orange-100,\n  \"orange-200\": $orange-200,\n  \"orange-300\": $orange-300,\n  \"orange-400\": $orange-400,\n  \"orange-500\": $orange-500,\n  \"orange-600\": $orange-600,\n  \"orange-700\": $orange-700,\n  \"orange-800\": $orange-800,\n  \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n  \"yellow-100\": $yellow-100,\n  \"yellow-200\": $yellow-200,\n  \"yellow-300\": $yellow-300,\n  \"yellow-400\": $yellow-400,\n  \"yellow-500\": $yellow-500,\n  \"yellow-600\": $yellow-600,\n  \"yellow-700\": $yellow-700,\n  \"yellow-800\": $yellow-800,\n  \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n  \"green-100\": $green-100,\n  \"green-200\": $green-200,\n  \"green-300\": $green-300,\n  \"green-400\": $green-400,\n  \"green-500\": $green-500,\n  \"green-600\": $green-600,\n  \"green-700\": $green-700,\n  \"green-800\": $green-800,\n  \"green-900\": $green-900\n) !default;\n\n$teals: (\n  \"teal-100\": $teal-100,\n  \"teal-200\": $teal-200,\n  \"teal-300\": $teal-300,\n  \"teal-400\": $teal-400,\n  \"teal-500\": $teal-500,\n  \"teal-600\": $teal-600,\n  \"teal-700\": $teal-700,\n  \"teal-800\": $teal-800,\n  \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n  \"cyan-100\": $cyan-100,\n  \"cyan-200\": $cyan-200,\n  \"cyan-300\": $cyan-300,\n  \"cyan-400\": $cyan-400,\n  \"cyan-500\": $cyan-500,\n  \"cyan-600\": $cyan-600,\n  \"cyan-700\": $cyan-700,\n  \"cyan-800\": $cyan-800,\n  \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              false !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-cssgrid:              false !default;\n$enable-button-pointers:      true !default;\n$enable-rfs:                  true !default;\n$enable-validation-icons:     true !default;\n$enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities:  true !default;\n\n// Prefix for :root CSS variables\n\n$variable-prefix:             bs- !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg:                   $white !default;\n$body-color:                $gray-900 !default;\n$body-text-align:           null !default;\n\n// Utilities maps\n//\n// Extends the default `$theme-colors` maps to help create our utilities.\n\n// scss-docs-start utilities-colors\n$utilities-colors: map-merge(\n  $theme-colors-rgb,\n  (\n    \"black\": to-rgb($black),\n    \"white\": to-rgb($white),\n    \"body\":  to-rgb($body-color)\n  )\n) !default;\n// scss-docs-end utilities-colors\n\n// scss-docs-start utilities-text-colors\n$utilities-text-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"text\") !default;\n// scss-docs-end utilities-text-colors\n\n// scss-docs-start utilities-bg-colors\n$utilities-bg-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"bg\") !default;\n// scss-docs-end utilities-bg-colors\n\n// Links\n//\n// Style anchor elements.\n\n$link-color:                              $primary !default;\n$link-decoration:                         underline !default;\n$link-shade-percentage:                   20% !default;\n$link-hover-color:                        shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration:                   null !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 992px,\n  xl: 1200px,\n  xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1140px,\n  xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns:                12 !default;\n$grid-gutter-width:           1.5rem !default;\n$grid-row-columns:            6 !default;\n\n$gutters: $spacers !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width * .5 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n\n$border-color:                $gray-300 !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius:               .25rem !default;\n$border-radius-sm:            .2rem !default;\n$border-radius-lg:            .3rem !default;\n$border-radius-pill:          50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow:                  0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm:               0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg:               0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset:            inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color:      $white !default;\n$component-active-bg:         $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width:                 .3em !default;\n$caret-vertical-align:        $caret-width * .85 !default;\n$caret-spacing:               $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"1x1\": 100%,\n  \"4x3\": calc(3 / 4 * 100%),\n  \"16x9\": calc(9 / 16 * 100%),\n  \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif:      system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base:            var(--#{$variable-prefix}font-sans-serif) !default;\n$font-family-code:            var(--#{$variable-prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root:              null !default;\n$font-size-base:              1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm:                $font-size-base * .875 !default;\n$font-size-lg:                $font-size-base * 1.25 !default;\n\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n\n$h1-font-size:                $font-size-base * 2.5 !default;\n$h2-font-size:                $font-size-base * 2 !default;\n$h3-font-size:                $font-size-base * 1.75 !default;\n$h4-font-size:                $font-size-base * 1.5 !default;\n$h5-font-size:                $font-size-base * 1.25 !default;\n$h6-font-size:                $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n  1: $h1-font-size,\n  2: $h2-font-size,\n  3: $h3-font-size,\n  4: $h4-font-size,\n  5: $h5-font-size,\n  6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n  1: 5rem,\n  2: 4.5rem,\n  3: 4rem,\n  4: 3.5rem,\n  5: 3rem,\n  6: 2.5rem\n) !default;\n\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size:              $font-size-base * 1.25 !default;\n$lead-font-weight:            300 !default;\n\n$small-font-size:             .875em !default;\n\n$sub-sup-font-size:           .75em !default;\n\n$text-muted:                  $gray-600 !default;\n\n$initialism-font-size:        $small-font-size !default;\n\n$blockquote-margin-y:         $spacer !default;\n$blockquote-font-size:        $font-size-base * 1.25 !default;\n$blockquote-footer-color:     $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y:                 $spacer !default;\n$hr-color:                    inherit !default;\n$hr-height:                   $border-width !default;\n$hr-opacity:                  .25 !default;\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$mark-padding:                .2em !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n$nested-kbd-font-weight:      $font-weight-bold !default;\n\n$list-inline-padding:         .5rem !default;\n\n$mark-bg:                     #fcf8e3 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y:        .5rem !default;\n$table-cell-padding-x:        .5rem !default;\n$table-cell-padding-y-sm:     .25rem !default;\n$table-cell-padding-x-sm:     .25rem !default;\n\n$table-cell-vertical-align:   top !default;\n\n$table-color:                 $body-color !default;\n$table-bg:                    transparent !default;\n$table-accent-bg:             transparent !default;\n\n$table-th-font-weight:        null !default;\n\n$table-striped-color:         $table-color !default;\n$table-striped-bg-factor:     .05 !default;\n$table-striped-bg:            rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color:          $table-color !default;\n$table-active-bg-factor:      .1 !default;\n$table-active-bg:             rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color:           $table-color !default;\n$table-hover-bg-factor:       .075 !default;\n$table-hover-bg:              rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor:         .1 !default;\n$table-border-width:          $border-width !default;\n$table-border-color:          $border-color !default;\n\n$table-striped-order:         odd !default;\n\n$table-group-separator-color: currentColor !default;\n\n$table-caption-color:         $text-muted !default;\n\n$table-bg-scale:              -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n  \"primary\":    shift-color($primary, $table-bg-scale),\n  \"secondary\":  shift-color($secondary, $table-bg-scale),\n  \"success\":    shift-color($success, $table-bg-scale),\n  \"info\":       shift-color($info, $table-bg-scale),\n  \"warning\":    shift-color($warning, $table-bg-scale),\n  \"danger\":     shift-color($danger, $table-bg-scale),\n  \"light\":      $light,\n  \"dark\":       $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y:         .375rem !default;\n$input-btn-padding-x:         .75rem !default;\n$input-btn-font-family:       null !default;\n$input-btn-font-size:         $font-size-base !default;\n$input-btn-line-height:       $line-height-base !default;\n\n$input-btn-focus-width:         .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color:         rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur:          0 !default;\n$input-btn-focus-box-shadow:    0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm:      .25rem !default;\n$input-btn-padding-x-sm:      .5rem !default;\n$input-btn-font-size-sm:      $font-size-sm !default;\n\n$input-btn-padding-y-lg:      .5rem !default;\n$input-btn-padding-x-lg:      1rem !default;\n$input-btn-font-size-lg:      $font-size-lg !default;\n\n$input-btn-border-width:      $border-width !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y:               $input-btn-padding-y !default;\n$btn-padding-x:               $input-btn-padding-x !default;\n$btn-font-family:             $input-btn-font-family !default;\n$btn-font-size:               $input-btn-font-size !default;\n$btn-line-height:             $input-btn-line-height !default;\n$btn-white-space:             null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm:            $input-btn-padding-y-sm !default;\n$btn-padding-x-sm:            $input-btn-padding-x-sm !default;\n$btn-font-size-sm:            $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg:            $input-btn-padding-y-lg !default;\n$btn-padding-x-lg:            $input-btn-padding-x-lg !default;\n$btn-font-size-lg:            $input-btn-font-size-lg !default;\n\n$btn-border-width:            $input-btn-border-width !default;\n\n$btn-font-weight:             $font-weight-normal !default;\n$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width:             $input-btn-focus-width !default;\n$btn-focus-box-shadow:        $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity:        .65 !default;\n$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color:              $link-color !default;\n$btn-link-hover-color:        $link-hover-color !default;\n$btn-link-disabled-color:     $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius:           $border-radius !default;\n$btn-border-radius-sm:        $border-radius-sm !default;\n$btn-border-radius-lg:        $border-radius-lg !default;\n\n$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount:       15% !default;\n$btn-hover-bg-tint-amount:        15% !default;\n$btn-hover-border-shade-amount:   20% !default;\n$btn-hover-border-tint-amount:    10% !default;\n$btn-active-bg-shade-amount:      20% !default;\n$btn-active-bg-tint-amount:       20% !default;\n$btn-active-border-shade-amount:  25% !default;\n$btn-active-border-tint-amount:   10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top:                  .25rem !default;\n$form-text-font-size:                   $small-font-size !default;\n$form-text-font-style:                  null !default;\n$form-text-font-weight:                 null !default;\n$form-text-color:                       $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom:              .5rem !default;\n$form-label-font-size:                  null !default;\n$form-label-font-style:                 null !default;\n$form-label-font-weight:                null !default;\n$form-label-color:                      null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y:                       $input-btn-padding-y !default;\n$input-padding-x:                       $input-btn-padding-x !default;\n$input-font-family:                     $input-btn-font-family !default;\n$input-font-size:                       $input-btn-font-size !default;\n$input-font-weight:                     $font-weight-base !default;\n$input-line-height:                     $input-btn-line-height !default;\n\n$input-padding-y-sm:                    $input-btn-padding-y-sm !default;\n$input-padding-x-sm:                    $input-btn-padding-x-sm !default;\n$input-font-size-sm:                    $input-btn-font-size-sm !default;\n\n$input-padding-y-lg:                    $input-btn-padding-y-lg !default;\n$input-padding-x-lg:                    $input-btn-padding-x-lg !default;\n$input-font-size-lg:                    $input-btn-font-size-lg !default;\n\n$input-bg:                              $body-bg !default;\n$input-disabled-bg:                     $gray-200 !default;\n$input-disabled-border-color:           null !default;\n\n$input-color:                           $body-color !default;\n$input-border-color:                    $gray-400 !default;\n$input-border-width:                    $input-btn-border-width !default;\n$input-box-shadow:                      $box-shadow-inset !default;\n\n$input-border-radius:                   $border-radius !default;\n$input-border-radius-sm:                $border-radius-sm !default;\n$input-border-radius-lg:                $border-radius-lg !default;\n\n$input-focus-bg:                        $input-bg !default;\n$input-focus-border-color:              tint-color($component-active-bg, 50%) !default;\n$input-focus-color:                     $input-color !default;\n$input-focus-width:                     $input-btn-focus-width !default;\n$input-focus-box-shadow:                $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color:               $gray-600 !default;\n$input-plaintext-color:                 $body-color !default;\n\n$input-height-border:                   $input-border-width * 2 !default;\n\n$input-height-inner:                    add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half:               add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter:            add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height:                          add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm:                       add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg:                       add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width:                      3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width:                  1em !default;\n$form-check-min-height:                   $font-size-base * $line-height-base !default;\n$form-check-padding-start:                $form-check-input-width + .5em !default;\n$form-check-margin-bottom:                .125rem !default;\n$form-check-label-color:                  null !default;\n$form-check-label-cursor:                 null !default;\n$form-check-transition:                   null !default;\n\n$form-check-input-active-filter:          brightness(90%) !default;\n\n$form-check-input-bg:                     $input-bg !default;\n$form-check-input-border:                 1px solid rgba($black, .25) !default;\n$form-check-input-border-radius:          .25em !default;\n$form-check-radio-border-radius:          50% !default;\n$form-check-input-focus-border:           $input-focus-border-color !default;\n$form-check-input-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color:          $component-active-color !default;\n$form-check-input-checked-bg-color:       $component-active-bg !default;\n$form-check-input-checked-border-color:   $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-checked-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/></svg>\") !default;\n$form-check-radio-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$form-check-input-checked-color}'/></svg>\") !default;\n\n$form-check-input-indeterminate-color:          $component-active-color !default;\n$form-check-input-indeterminate-bg-color:       $component-active-bg !default;\n$form-check-input-indeterminate-border-color:   $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-indeterminate-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>\") !default;\n\n$form-check-input-disabled-opacity:        .5 !default;\n$form-check-label-disabled-opacity:        $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity:    $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end:    1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color:               rgba(0, 0, 0, .25) !default;\n$form-switch-width:               2em !default;\n$form-switch-padding-start:       $form-switch-width + .5em !default;\n$form-switch-bg-image:            url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>\") !default;\n$form-switch-border-radius:       $form-switch-width !default;\n$form-switch-transition:          background-position .15s ease-in-out !default;\n\n$form-switch-focus-color:         $input-focus-border-color !default;\n$form-switch-focus-bg-image:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-focus-color}'/></svg>\") !default;\n\n$form-switch-checked-color:       $component-active-color !default;\n$form-switch-checked-bg-image:    url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y:           $input-padding-y !default;\n$input-group-addon-padding-x:           $input-padding-x !default;\n$input-group-addon-font-weight:         $input-font-weight !default;\n$input-group-addon-color:               $input-color !default;\n$input-group-addon-bg:                  $gray-200 !default;\n$input-group-addon-border-color:        $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y:             $input-padding-y !default;\n$form-select-padding-x:             $input-padding-x !default;\n$form-select-font-family:           $input-font-family !default;\n$form-select-font-size:             $input-font-size !default;\n$form-select-indicator-padding:     $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight:           $input-font-weight !default;\n$form-select-line-height:           $input-line-height !default;\n$form-select-color:                 $input-color !default;\n$form-select-bg:                    $input-bg !default;\n$form-select-disabled-color:        null !default;\n$form-select-disabled-bg:           $gray-200 !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position:           right $form-select-padding-x center !default;\n$form-select-bg-size:               16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color:       $gray-800 !default;\n$form-select-indicator:             url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/></svg>\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position:    center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size:        $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width:        $input-border-width !default;\n$form-select-border-color:        $input-border-color !default;\n$form-select-border-radius:       $border-radius !default;\n$form-select-box-shadow:          $box-shadow-inset !default;\n\n$form-select-focus-border-color:  $input-focus-border-color !default;\n$form-select-focus-width:         $input-focus-width !default;\n$form-select-focus-box-shadow:    0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm:        $input-padding-y-sm !default;\n$form-select-padding-x-sm:        $input-padding-x-sm !default;\n$form-select-font-size-sm:        $input-font-size-sm !default;\n\n$form-select-padding-y-lg:        $input-padding-y-lg !default;\n$form-select-padding-x-lg:        $input-padding-x-lg !default;\n$form-select-font-size-lg:        $input-font-size-lg !default;\n\n$form-select-transition:          $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width:          100% !default;\n$form-range-track-height:         .5rem !default;\n$form-range-track-cursor:         pointer !default;\n$form-range-track-bg:             $gray-300 !default;\n$form-range-track-border-radius:  1rem !default;\n$form-range-track-box-shadow:     $box-shadow-inset !default;\n\n$form-range-thumb-width:                   1rem !default;\n$form-range-thumb-height:                  $form-range-thumb-width !default;\n$form-range-thumb-bg:                      $component-active-bg !default;\n$form-range-thumb-border:                  0 !default;\n$form-range-thumb-border-radius:           1rem !default;\n$form-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width:  $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg:               tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg:             $gray-500 !default;\n$form-range-thumb-transition:              background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color:          $input-color !default;\n$form-file-button-bg:             $input-group-addon-bg !default;\n$form-file-button-hover-bg:       shade-color($form-file-button-bg, 5%) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height:            add(3.5rem, $input-height-border) !default;\n$form-floating-line-height:       1.25 !default;\n$form-floating-padding-x:         $input-padding-x !default;\n$form-floating-padding-y:         1rem !default;\n$form-floating-input-padding-t:   1.625rem !default;\n$form-floating-input-padding-b:   .625rem !default;\n$form-floating-label-opacity:     .65 !default;\n$form-floating-label-transform:   scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-transition:        opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top:          $form-text-margin-top !default;\n$form-feedback-font-size:           $form-text-font-size !default;\n$form-feedback-font-style:          $form-text-font-style !default;\n$form-feedback-valid-color:         $success !default;\n$form-feedback-invalid-color:       $danger !default;\n\n$form-feedback-icon-valid-color:    $form-feedback-valid-color !default;\n$form-feedback-icon-valid:          url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>\") !default;\n$form-feedback-icon-invalid-color:  $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid:        url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n  \"valid\": (\n    \"color\": $form-feedback-valid-color,\n    \"icon\": $form-feedback-icon-valid\n  ),\n  \"invalid\": (\n    \"color\": $form-feedback-invalid-color,\n    \"icon\": $form-feedback-icon-invalid\n  )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown:                   1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-modal-backdrop:             1050 !default;\n$zindex-modal:                      1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n// scss-docs-end zindex-stack\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y:                .5rem !default;\n$nav-link-padding-x:                1rem !default;\n$nav-link-font-size:                null !default;\n$nav-link-font-weight:              null !default;\n$nav-link-color:                    $link-color !default;\n$nav-link-hover-color:              $link-hover-color !default;\n$nav-link-transition:               color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color:           $gray-600 !default;\n\n$nav-tabs-border-color:             $gray-300 !default;\n$nav-tabs-border-width:             $border-width !default;\n$nav-tabs-border-radius:            $border-radius !default;\n$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color:        $gray-700 !default;\n$nav-tabs-link-active-bg:           $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius:           $border-radius !default;\n$nav-pills-link-active-color:       $component-active-color !default;\n$nav-pills-link-active-bg:          $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y:                  $spacer * .5 !default;\n$navbar-padding-x:                  null !default;\n\n$navbar-nav-link-padding-x:         .5rem !default;\n\n$navbar-brand-font-size:            $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height:                   $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end:           1rem !default;\n\n$navbar-toggler-padding-y:          .25rem !default;\n$navbar-toggler-padding-x:          .75rem !default;\n$navbar-toggler-font-size:          $font-size-lg !default;\n$navbar-toggler-border-radius:      $btn-border-radius !default;\n$navbar-toggler-focus-width:        $btn-focus-width !default;\n$navbar-toggler-transition:         box-shadow .15s ease-in-out !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-theme-variables\n$navbar-dark-color:                 rgba($white, .55) !default;\n$navbar-dark-hover-color:           rgba($white, .75) !default;\n$navbar-dark-active-color:          $white !default;\n$navbar-dark-disabled-color:        rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-dark-toggler-border-color:  rgba($white, .1) !default;\n\n$navbar-light-color:                rgba($black, .55) !default;\n$navbar-light-hover-color:          rgba($black, .7) !default;\n$navbar-light-active-color:         rgba($black, .9) !default;\n$navbar-light-disabled-color:       rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color:                $navbar-light-active-color !default;\n$navbar-light-brand-hover-color:          $navbar-light-active-color !default;\n$navbar-dark-brand-color:                 $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color:           $navbar-dark-active-color !default;\n// scss-docs-end navbar-theme-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width:                10rem !default;\n$dropdown-padding-x:                0 !default;\n$dropdown-padding-y:                .5rem !default;\n$dropdown-spacer:                   .125rem !default;\n$dropdown-font-size:                $font-size-base !default;\n$dropdown-color:                    $body-color !default;\n$dropdown-bg:                       $white !default;\n$dropdown-border-color:             rgba($black, .15) !default;\n$dropdown-border-radius:            $border-radius !default;\n$dropdown-border-width:             $border-width !default;\n$dropdown-inner-border-radius:      subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg:               $dropdown-border-color !default;\n$dropdown-divider-margin-y:         $spacer * .5 !default;\n$dropdown-box-shadow:               $box-shadow !default;\n\n$dropdown-link-color:               $gray-900 !default;\n$dropdown-link-hover-color:         shade-color($gray-900, 10%) !default;\n$dropdown-link-hover-bg:            $gray-200 !default;\n\n$dropdown-link-active-color:        $component-active-color !default;\n$dropdown-link-active-bg:           $component-active-bg !default;\n\n$dropdown-link-disabled-color:      $gray-500 !default;\n\n$dropdown-item-padding-y:           $spacer * .25 !default;\n$dropdown-item-padding-x:           $spacer !default;\n\n$dropdown-header-color:             $gray-600 !default;\n$dropdown-header-padding:           $dropdown-padding-y $dropdown-item-padding-x !default;\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color:               $gray-300 !default;\n$dropdown-dark-bg:                  $gray-800 !default;\n$dropdown-dark-border-color:        $dropdown-border-color !default;\n$dropdown-dark-divider-bg:          $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow:          null !default;\n$dropdown-dark-link-color:          $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color:    $white !default;\n$dropdown-dark-link-hover-bg:       rgba($white, .15) !default;\n$dropdown-dark-link-active-color:   $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg:      $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color:        $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y:              .375rem !default;\n$pagination-padding-x:              .75rem !default;\n$pagination-padding-y-sm:           .25rem !default;\n$pagination-padding-x-sm:           .5rem !default;\n$pagination-padding-y-lg:           .75rem !default;\n$pagination-padding-x-lg:           1.5rem !default;\n\n$pagination-color:                  $link-color !default;\n$pagination-bg:                     $white !default;\n$pagination-border-width:           $border-width !default;\n$pagination-border-radius:          $border-radius !default;\n$pagination-margin-start:           -$pagination-border-width !default;\n$pagination-border-color:           $gray-300 !default;\n\n$pagination-focus-color:            $link-hover-color !default;\n$pagination-focus-bg:               $gray-200 !default;\n$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n$pagination-focus-outline:          0 !default;\n\n$pagination-hover-color:            $link-hover-color !default;\n$pagination-hover-bg:               $gray-200 !default;\n$pagination-hover-border-color:     $gray-300 !default;\n\n$pagination-active-color:           $component-active-color !default;\n$pagination-active-bg:              $component-active-bg !default;\n$pagination-active-border-color:    $pagination-active-bg !default;\n\n$pagination-disabled-color:         $gray-600 !default;\n$pagination-disabled-bg:            $white !default;\n$pagination-disabled-border-color:  $gray-300 !default;\n\n$pagination-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm:       $border-radius-sm !default;\n$pagination-border-radius-lg:       $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max:           .5 !default;\n$placeholder-opacity-min:           .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y:                     $spacer !default;\n$card-spacer-x:                     $spacer !default;\n$card-title-spacer-y:               $spacer * .5 !default;\n$card-border-width:                 $border-width !default;\n$card-border-color:                 rgba($black, .125) !default;\n$card-border-radius:                $border-radius !default;\n$card-box-shadow:                   null !default;\n$card-inner-border-radius:          subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y:                $card-spacer-y * .5 !default;\n$card-cap-padding-x:                $card-spacer-x !default;\n$card-cap-bg:                       rgba($black, .03) !default;\n$card-cap-color:                    null !default;\n$card-height:                       null !default;\n$card-color:                        null !default;\n$card-bg:                           $white !default;\n$card-img-overlay-padding:          $spacer !default;\n$card-group-margin:                 $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y:                     1rem !default;\n$accordion-padding-x:                     1.25rem !default;\n$accordion-color:                         $body-color !default;\n$accordion-bg:                            $body-bg !default;\n$accordion-border-width:                  $border-width !default;\n$accordion-border-color:                  rgba($black, .125) !default;\n$accordion-border-radius:                 $border-radius !default;\n$accordion-inner-border-radius:           subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y:                $accordion-padding-y !default;\n$accordion-body-padding-x:                $accordion-padding-x !default;\n\n$accordion-button-padding-y:              $accordion-padding-y !default;\n$accordion-button-padding-x:              $accordion-padding-x !default;\n$accordion-button-color:                  $accordion-color !default;\n$accordion-button-bg:                     $accordion-bg !default;\n$accordion-transition:                    $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg:              tint-color($component-active-bg, 90%) !default;\n$accordion-button-active-color:           shade-color($primary, 10%) !default;\n\n$accordion-button-focus-border-color:     $input-focus-border-color !default;\n$accordion-button-focus-box-shadow:       $btn-focus-box-shadow !default;\n\n$accordion-icon-width:                    1.25rem !default;\n$accordion-icon-color:                    $accordion-button-color !default;\n$accordion-icon-active-color:             $accordion-button-active-color !default;\n$accordion-icon-transition:               transform .2s ease-in-out !default;\n$accordion-icon-transform:                rotate(-180deg) !default;\n\n$accordion-button-icon:         url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n$accordion-button-active-icon:  url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size:                 $font-size-sm !default;\n$tooltip-max-width:                 200px !default;\n$tooltip-color:                     $white !default;\n$tooltip-bg:                        $black !default;\n$tooltip-border-radius:             $border-radius !default;\n$tooltip-opacity:                   .9 !default;\n$tooltip-padding-y:                 $spacer * .25 !default;\n$tooltip-padding-x:                 $spacer * .5 !default;\n$tooltip-margin:                    0 !default;\n\n$tooltip-arrow-width:               .8rem !default;\n$tooltip-arrow-height:              .4rem !default;\n$tooltip-arrow-color:               $tooltip-bg !default;\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y:     $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x:     $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size:     $tooltip-font-size !default;\n$form-feedback-tooltip-line-height:   null !default;\n$form-feedback-tooltip-opacity:       $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size:                 $font-size-sm !default;\n$popover-bg:                        $white !default;\n$popover-max-width:                 276px !default;\n$popover-border-width:              $border-width !default;\n$popover-border-color:              rgba($black, .2) !default;\n$popover-border-radius:             $border-radius-lg !default;\n$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow:                $box-shadow !default;\n\n$popover-header-bg:                 shade-color($popover-bg, 6%) !default;\n$popover-header-color:              $headings-color !default;\n$popover-header-padding-y:          .5rem !default;\n$popover-header-padding-x:          $spacer !default;\n\n$popover-body-color:                $body-color !default;\n$popover-body-padding-y:            $spacer !default;\n$popover-body-padding-x:            $spacer !default;\n\n$popover-arrow-width:               1rem !default;\n$popover-arrow-height:              .5rem !default;\n$popover-arrow-color:               $popover-bg !default;\n\n$popover-arrow-outer-color:         fade-in($popover-border-color, .05) !default;\n// scss-docs-end popover-variables\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width:                   350px !default;\n$toast-padding-x:                   .75rem !default;\n$toast-padding-y:                   .5rem !default;\n$toast-font-size:                   .875rem !default;\n$toast-color:                       null !default;\n$toast-background-color:            rgba($white, .85) !default;\n$toast-border-width:                1px !default;\n$toast-border-color:                rgba(0, 0, 0, .1) !default;\n$toast-border-radius:               $border-radius !default;\n$toast-box-shadow:                  $box-shadow !default;\n$toast-spacing:                     $container-padding-x !default;\n\n$toast-header-color:                $gray-600 !default;\n$toast-header-background-color:     rgba($white, .85) !default;\n$toast-header-border-color:         rgba(0, 0, 0, .05) !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size:                   .75em !default;\n$badge-font-weight:                 $font-weight-bold !default;\n$badge-color:                       $white !default;\n$badge-padding-y:                   .35em !default;\n$badge-padding-x:                   .65em !default;\n$badge-border-radius:               $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding:               $spacer !default;\n\n$modal-footer-margin-between:       .5rem !default;\n\n$modal-dialog-margin:               .5rem !default;\n$modal-dialog-margin-y-sm-up:       1.75rem !default;\n\n$modal-title-line-height:           $line-height-base !default;\n\n$modal-content-color:               null !default;\n$modal-content-bg:                  $white !default;\n$modal-content-border-color:        rgba($black, .2) !default;\n$modal-content-border-width:        $border-width !default;\n$modal-content-border-radius:       $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs:       $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up:    $box-shadow !default;\n\n$modal-backdrop-bg:                 $black !default;\n$modal-backdrop-opacity:            .5 !default;\n$modal-header-border-color:         $border-color !default;\n$modal-footer-border-color:         $modal-header-border-color !default;\n$modal-header-border-width:         $modal-content-border-width !default;\n$modal-footer-border-width:         $modal-header-border-width !default;\n$modal-header-padding-y:            $modal-inner-padding !default;\n$modal-header-padding-x:            $modal-inner-padding !default;\n$modal-header-padding:              $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-sm:                          300px !default;\n$modal-md:                          500px !default;\n$modal-lg:                          800px !default;\n$modal-xl:                          1140px !default;\n\n$modal-fade-transform:              translate(0, -50px) !default;\n$modal-show-transform:              none !default;\n$modal-transition:                  transform .3s ease-out !default;\n$modal-scale-transform:             scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y:               $spacer !default;\n$alert-padding-x:               $spacer !default;\n$alert-margin-bottom:           1rem !default;\n$alert-border-radius:           $border-radius !default;\n$alert-link-font-weight:        $font-weight-bold !default;\n$alert-border-width:            $border-width !default;\n$alert-bg-scale:                -80% !default;\n$alert-border-scale:            -70% !default;\n$alert-color-scale:             40% !default;\n$alert-dismissible-padding-r:   $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height:                   1rem !default;\n$progress-font-size:                $font-size-base * .75 !default;\n$progress-bg:                       $gray-200 !default;\n$progress-border-radius:            $border-radius !default;\n$progress-box-shadow:               $box-shadow-inset !default;\n$progress-bar-color:                $white !default;\n$progress-bar-bg:                   $primary !default;\n$progress-bar-animation-timing:     1s linear infinite !default;\n$progress-bar-transition:           width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color:                  $gray-900 !default;\n$list-group-bg:                     $white !default;\n$list-group-border-color:           rgba($black, .125) !default;\n$list-group-border-width:           $border-width !default;\n$list-group-border-radius:          $border-radius !default;\n\n$list-group-item-padding-y:         $spacer * .5 !default;\n$list-group-item-padding-x:         $spacer !default;\n$list-group-item-bg-scale:          -80% !default;\n$list-group-item-color-scale:       40% !default;\n\n$list-group-hover-bg:               $gray-100 !default;\n$list-group-active-color:           $component-active-color !default;\n$list-group-active-bg:              $component-active-bg !default;\n$list-group-active-border-color:    $list-group-active-bg !default;\n\n$list-group-disabled-color:         $gray-600 !default;\n$list-group-disabled-bg:            $list-group-bg !default;\n\n$list-group-action-color:           $gray-700 !default;\n$list-group-action-hover-color:     $list-group-action-color !default;\n\n$list-group-action-active-color:    $body-color !default;\n$list-group-action-active-bg:       $gray-200 !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding:                 .25rem !default;\n$thumbnail-bg:                      $body-bg !default;\n$thumbnail-border-width:            $border-width !default;\n$thumbnail-border-color:            $gray-300 !default;\n$thumbnail-border-radius:           $border-radius !default;\n$thumbnail-box-shadow:              $box-shadow-sm !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size:          $small-font-size !default;\n$figure-caption-color:              $gray-600 !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size:              null !default;\n$breadcrumb-padding-y:              0 !default;\n$breadcrumb-padding-x:              0 !default;\n$breadcrumb-item-padding-x:         .5rem !default;\n$breadcrumb-margin-bottom:          1rem !default;\n$breadcrumb-bg:                     null !default;\n$breadcrumb-divider-color:          $gray-600 !default;\n$breadcrumb-active-color:           $gray-600 !default;\n$breadcrumb-divider:                quote(\"/\") !default;\n$breadcrumb-divider-flipped:        $breadcrumb-divider !default;\n$breadcrumb-border-radius:          null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color:             $white !default;\n$carousel-control-width:             15% !default;\n$carousel-control-opacity:           .5 !default;\n$carousel-control-hover-opacity:     .9 !default;\n$carousel-control-transition:        opacity .15s ease !default;\n\n$carousel-indicator-width:           30px !default;\n$carousel-indicator-height:          3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer:          3px !default;\n$carousel-indicator-opacity:         .5 !default;\n$carousel-indicator-active-bg:       $white !default;\n$carousel-indicator-active-opacity:  1 !default;\n$carousel-indicator-transition:      opacity .6s ease !default;\n\n$carousel-caption-width:             70% !default;\n$carousel-caption-color:             $white !default;\n$carousel-caption-padding-y:         1.25rem !default;\n$carousel-caption-spacer:            1.25rem !default;\n\n$carousel-control-icon-width:        2rem !default;\n\n$carousel-control-prev-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>\") !default;\n$carousel-control-next-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n\n$carousel-transition-duration:       .6s !default;\n$carousel-transition:                transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n$carousel-dark-indicator-active-bg:  $black !default;\n$carousel-dark-caption-color:        $black !default;\n$carousel-dark-control-icon-filter:  invert(1) grayscale(100) !default;\n// scss-docs-end carousel-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width:           2rem !default;\n$spinner-height:          $spinner-width !default;\n$spinner-vertical-align:  -.125em !default;\n$spinner-border-width:    .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm:        1rem !default;\n$spinner-height-sm:       $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width:            1em !default;\n$btn-close-height:           $btn-close-width !default;\n$btn-close-padding-x:        .25em !default;\n$btn-close-padding-y:        $btn-close-padding-x !default;\n$btn-close-color:            $black !default;\n$btn-close-bg:               url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/></svg>\") !default;\n$btn-close-focus-shadow:     $input-btn-focus-box-shadow !default;\n$btn-close-opacity:          .5 !default;\n$btn-close-hover-opacity:    .75 !default;\n$btn-close-focus-opacity:    1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter:     invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y:               $modal-inner-padding !default;\n$offcanvas-padding-x:               $modal-inner-padding !default;\n$offcanvas-horizontal-width:        400px !default;\n$offcanvas-vertical-height:         30vh !default;\n$offcanvas-transition-duration:     .3s !default;\n$offcanvas-border-color:            $modal-content-border-color !default;\n$offcanvas-border-width:            $modal-content-border-width !default;\n$offcanvas-title-line-height:       $modal-title-line-height !default;\n$offcanvas-bg-color:                $modal-content-bg !default;\n$offcanvas-color:                   $modal-content-color !default;\n$offcanvas-box-shadow:              $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg:             $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity:        $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size:                    $small-font-size !default;\n$code-color:                        $pink !default;\n\n$kbd-padding-y:                     .2rem !default;\n$kbd-padding-x:                     .4rem !default;\n$kbd-font-size:                     $code-font-size !default;\n$kbd-color:                         $white !default;\n$kbd-bg:                            $gray-900 !default;\n\n$pre-color:                         null !default;\n","// Credit: Nicolas Gallagher and SUIT CSS.\n\n.ratio {\n  position: relative;\n  width: 100%;\n\n  &::before {\n    display: block;\n    padding-top: var(--#{$variable-prefix}aspect-ratio);\n    content: \"\";\n  }\n\n  > * {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n  }\n}\n\n@each $key, $ratio in $aspect-ratios {\n  .ratio-#{$key} {\n    --#{$variable-prefix}aspect-ratio: #{$ratio};\n  }\n}\n","// Shorthand\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n// Responsive sticky top\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .sticky#{$infix}-top {\n      position: sticky;\n      top: 0;\n      z-index: $zindex-sticky;\n    }\n  }\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n  $n: index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n  }\n  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n  $min: map-get($breakpoints, $name);\n  @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n  $max: map-get($breakpoints, $name);\n  @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n  @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n","// scss-docs-start stacks\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n// scss-docs-end stacks\n","//\n// Visually hidden\n//\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  @include visually-hidden();\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","//\n// Stretched link\n//\n\n.stretched-link {\n  &::#{$stretched-link-pseudo-element} {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: $stretched-link-z-index;\n    content: \"\";\n  }\n}\n","//\n// Text truncation\n//\n\n.text-truncate {\n  @include text-truncate();\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n",".vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: $hr-opacity;\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n  $values: map-get($utility, values);\n\n  // If the values are a list or string, convert it into a map\n  @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n    $values: zip($values, $values);\n  }\n\n  @each $key, $value in $values {\n    $properties: map-get($utility, property);\n\n    // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n    @if type-of($properties) == \"string\" {\n      $properties: append((), $properties);\n    }\n\n    // Use custom class if present\n    $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n    $property-class: if($property-class == null, \"\", $property-class);\n\n    // State params to generate pseudo-classes\n    $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n    $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (eg. with shadow class)\n    $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n    @if map-get($utility, rfs) {\n      // Inside the media query\n      @if $is-rfs-media-query {\n        $val: rfs-value($value);\n\n        // Do not render anything if fluid and non fluid values are the same\n        $value: if($val == rfs-fluid-value($value), null, $val);\n      }\n      @else {\n        $value: rfs-fluid-value($value);\n      }\n    }\n\n    $is-css-var: map-get($utility, css-var);\n    $is-local-vars: map-get($utility, local-vars);\n    $is-rtl: map-get($utility, rtl);\n\n    @if $value != null {\n      @if $is-rtl == false {\n        /* rtl:begin:remove */\n      }\n\n      @if $is-css-var {\n        .#{$property-class + $infix + $property-class-modifier} {\n          --#{$variable-prefix}#{$property-class}: #{$value};\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            --#{$variable-prefix}#{$property-class}: #{$value};\n          }\n        }\n      } @else {\n        .#{$property-class + $infix + $property-class-modifier} {\n          @each $property in $properties {\n            @if $is-local-vars {\n              @each $local-var, $value in $is-local-vars {\n                --#{$variable-prefix}#{$local-var}: #{$value};\n              }\n            }\n            #{$property}: $value if($enable-important-utilities, !important, null);\n          }\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            @each $property in $properties {\n              #{$property}: $value if($enable-important-utilities, !important, null);\n            }\n          }\n        }\n      }\n\n      @if $is-rtl == false {\n        /* rtl:end:remove */\n      }\n    }\n  }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n  // Generate media query if needed\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    // Loop over each utility property\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Only proceed if responsive media queries are enabled or if it's the base media query\n      @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n        @include generate-utility($utility, $infix);\n      }\n    }\n  }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix, true);\n        }\n      }\n    }\n  }\n}\n\n\n// Print utilities\n@media print {\n  @each $key, $utility in $utilities {\n    // The utility can be disabled with `false`, thus check if the utility is a map first\n    // Then check if the utility needs print styles\n    @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n      @include generate-utility($utility, \"-print\");\n    }\n  }\n}\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css
new file mode 100644
index 0000000..eac0d8b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap Utilities v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;right:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;left:0;right:0;z-index:1030}.fixed-bottom{position:fixed;left:0;bottom:0;right:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;left:0;bottom:0;right:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:right!important}.float-end{float:left!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{right:0!important}.start-50{right:50%!important}.start-100{right:100%!important}.end-0{left:0!important}.end-50{left:50%!important}.end-100{left:100%!important}.translate-middle{transform:translate(50%,-50%)!important}.translate-middle-x{transform:translateX(50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-left:1px solid #dee2e6!important}.border-end-0{border-left:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-right:1px solid #dee2e6!important}.border-start-0{border-right:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-left:0!important}.me-1{margin-left:.25rem!important}.me-2{margin-left:.5rem!important}.me-3{margin-left:1rem!important}.me-4{margin-left:1.5rem!important}.me-5{margin-left:3rem!important}.me-auto{margin-left:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-right:0!important}.ms-1{margin-right:.25rem!important}.ms-2{margin-right:.5rem!important}.ms-3{margin-right:1rem!important}.ms-4{margin-right:1.5rem!important}.ms-5{margin-right:3rem!important}.ms-auto{margin-right:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-left:0!important}.pe-1{padding-left:.25rem!important}.pe-2{padding-left:.5rem!important}.pe-3{padding-left:1rem!important}.pe-4{padding-left:1.5rem!important}.pe-5{padding-left:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-right:0!important}.ps-1{padding-right:.25rem!important}.ps-2{padding-right:.5rem!important}.ps-3{padding-right:1rem!important}.ps-4{padding-right:1.5rem!important}.ps-5{padding-right:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:right!important}.text-end{text-align:left!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-right-radius:.25rem!important;border-top-left-radius:.25rem!important}.rounded-end{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-bottom{border-bottom-left-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-start{border-bottom-right-radius:.25rem!important;border-top-right-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:right!important}.float-sm-end{float:left!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-left:0!important}.me-sm-1{margin-left:.25rem!important}.me-sm-2{margin-left:.5rem!important}.me-sm-3{margin-left:1rem!important}.me-sm-4{margin-left:1.5rem!important}.me-sm-5{margin-left:3rem!important}.me-sm-auto{margin-left:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-right:0!important}.ms-sm-1{margin-right:.25rem!important}.ms-sm-2{margin-right:.5rem!important}.ms-sm-3{margin-right:1rem!important}.ms-sm-4{margin-right:1.5rem!important}.ms-sm-5{margin-right:3rem!important}.ms-sm-auto{margin-right:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-left:0!important}.pe-sm-1{padding-left:.25rem!important}.pe-sm-2{padding-left:.5rem!important}.pe-sm-3{padding-left:1rem!important}.pe-sm-4{padding-left:1.5rem!important}.pe-sm-5{padding-left:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-right:0!important}.ps-sm-1{padding-right:.25rem!important}.ps-sm-2{padding-right:.5rem!important}.ps-sm-3{padding-right:1rem!important}.ps-sm-4{padding-right:1.5rem!important}.ps-sm-5{padding-right:3rem!important}.text-sm-start{text-align:right!important}.text-sm-end{text-align:left!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:right!important}.float-md-end{float:left!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-left:0!important}.me-md-1{margin-left:.25rem!important}.me-md-2{margin-left:.5rem!important}.me-md-3{margin-left:1rem!important}.me-md-4{margin-left:1.5rem!important}.me-md-5{margin-left:3rem!important}.me-md-auto{margin-left:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-right:0!important}.ms-md-1{margin-right:.25rem!important}.ms-md-2{margin-right:.5rem!important}.ms-md-3{margin-right:1rem!important}.ms-md-4{margin-right:1.5rem!important}.ms-md-5{margin-right:3rem!important}.ms-md-auto{margin-right:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-left:0!important}.pe-md-1{padding-left:.25rem!important}.pe-md-2{padding-left:.5rem!important}.pe-md-3{padding-left:1rem!important}.pe-md-4{padding-left:1.5rem!important}.pe-md-5{padding-left:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-right:0!important}.ps-md-1{padding-right:.25rem!important}.ps-md-2{padding-right:.5rem!important}.ps-md-3{padding-right:1rem!important}.ps-md-4{padding-right:1.5rem!important}.ps-md-5{padding-right:3rem!important}.text-md-start{text-align:right!important}.text-md-end{text-align:left!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:right!important}.float-lg-end{float:left!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-left:0!important}.me-lg-1{margin-left:.25rem!important}.me-lg-2{margin-left:.5rem!important}.me-lg-3{margin-left:1rem!important}.me-lg-4{margin-left:1.5rem!important}.me-lg-5{margin-left:3rem!important}.me-lg-auto{margin-left:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-right:0!important}.ms-lg-1{margin-right:.25rem!important}.ms-lg-2{margin-right:.5rem!important}.ms-lg-3{margin-right:1rem!important}.ms-lg-4{margin-right:1.5rem!important}.ms-lg-5{margin-right:3rem!important}.ms-lg-auto{margin-right:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-left:0!important}.pe-lg-1{padding-left:.25rem!important}.pe-lg-2{padding-left:.5rem!important}.pe-lg-3{padding-left:1rem!important}.pe-lg-4{padding-left:1.5rem!important}.pe-lg-5{padding-left:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-right:0!important}.ps-lg-1{padding-right:.25rem!important}.ps-lg-2{padding-right:.5rem!important}.ps-lg-3{padding-right:1rem!important}.ps-lg-4{padding-right:1.5rem!important}.ps-lg-5{padding-right:3rem!important}.text-lg-start{text-align:right!important}.text-lg-end{text-align:left!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:right!important}.float-xl-end{float:left!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-left:0!important}.me-xl-1{margin-left:.25rem!important}.me-xl-2{margin-left:.5rem!important}.me-xl-3{margin-left:1rem!important}.me-xl-4{margin-left:1.5rem!important}.me-xl-5{margin-left:3rem!important}.me-xl-auto{margin-left:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-right:0!important}.ms-xl-1{margin-right:.25rem!important}.ms-xl-2{margin-right:.5rem!important}.ms-xl-3{margin-right:1rem!important}.ms-xl-4{margin-right:1.5rem!important}.ms-xl-5{margin-right:3rem!important}.ms-xl-auto{margin-right:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-left:0!important}.pe-xl-1{padding-left:.25rem!important}.pe-xl-2{padding-left:.5rem!important}.pe-xl-3{padding-left:1rem!important}.pe-xl-4{padding-left:1.5rem!important}.pe-xl-5{padding-left:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-right:0!important}.ps-xl-1{padding-right:.25rem!important}.ps-xl-2{padding-right:.5rem!important}.ps-xl-3{padding-right:1rem!important}.ps-xl-4{padding-right:1.5rem!important}.ps-xl-5{padding-right:3rem!important}.text-xl-start{text-align:right!important}.text-xl-end{text-align:left!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:right!important}.float-xxl-end{float:left!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-left:0!important}.me-xxl-1{margin-left:.25rem!important}.me-xxl-2{margin-left:.5rem!important}.me-xxl-3{margin-left:1rem!important}.me-xxl-4{margin-left:1.5rem!important}.me-xxl-5{margin-left:3rem!important}.me-xxl-auto{margin-left:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-right:0!important}.ms-xxl-1{margin-right:.25rem!important}.ms-xxl-2{margin-right:.5rem!important}.ms-xxl-3{margin-right:1rem!important}.ms-xxl-4{margin-right:1.5rem!important}.ms-xxl-5{margin-right:3rem!important}.ms-xxl-auto{margin-right:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-left:0!important}.pe-xxl-1{padding-left:.25rem!important}.pe-xxl-2{padding-left:.5rem!important}.pe-xxl-3{padding-left:1rem!important}.pe-xxl-4{padding-left:1.5rem!important}.pe-xxl-5{padding-left:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-right:0!important}.ps-xxl-1{padding-right:.25rem!important}.ps-xxl-2{padding-right:.5rem!important}.ps-xxl-3{padding-right:1rem!important}.ps-xxl-4{padding-right:1.5rem!important}.ps-xxl-5{padding-right:3rem!important}.text-xxl-start{text-align:right!important}.text-xxl-end{text-align:left!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
+/*# sourceMappingURL=bootstrap-utilities.rtl.min.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map
new file mode 100644
index 0000000..b9ab986
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap-utilities.scss","../../scss/mixins/_clearfix.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/mixins/_breakpoints.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","dist/css/bootstrap-utilities.rtl.css","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap Utilities v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n","// scss-docs-start clearfix\n@mixin clearfix() {\n  &::after {\n    display: block;\n    clear: both;\n    content: \"\";\n  }\n}\n// scss-docs-end clearfix\n","@each $color, $value in $theme-colors {\n  .link-#{$color} {\n    color: $value;\n\n    @if $link-shade-percentage != 0 {\n      &:hover,\n      &:focus {\n        color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));\n      }\n    }\n  }\n}\n","// Credit: Nicolas Gallagher and SUIT CSS.\n\n.ratio {\n  position: relative;\n  width: 100%;\n\n  &::before {\n    display: block;\n    padding-top: var(--#{$variable-prefix}aspect-ratio);\n    content: \"\";\n  }\n\n  > * {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n  }\n}\n\n@each $key, $ratio in $aspect-ratios {\n  .ratio-#{$key} {\n    --#{$variable-prefix}aspect-ratio: #{$ratio};\n  }\n}\n","// Shorthand\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n// Responsive sticky top\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .sticky#{$infix}-top {\n      position: sticky;\n      top: 0;\n      z-index: $zindex-sticky;\n    }\n  }\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n  $n: index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n  }\n  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n  $min: map-get($breakpoints, $name);\n  @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n  $max: map-get($breakpoints, $name);\n  @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n  @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n","// scss-docs-start stacks\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n// scss-docs-end stacks\n","//\n// Visually hidden\n//\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  @include visually-hidden();\n}\n","/*!\n * Bootstrap Utilities v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.link-primary {\n  color: #0d6efd;\n}\n.link-primary:hover, .link-primary:focus {\n  color: #0a58ca;\n}\n\n.link-secondary {\n  color: #6c757d;\n}\n.link-secondary:hover, .link-secondary:focus {\n  color: #565e64;\n}\n\n.link-success {\n  color: #198754;\n}\n.link-success:hover, .link-success:focus {\n  color: #146c43;\n}\n\n.link-info {\n  color: #0dcaf0;\n}\n.link-info:hover, .link-info:focus {\n  color: #3dd5f3;\n}\n\n.link-warning {\n  color: #ffc107;\n}\n.link-warning:hover, .link-warning:focus {\n  color: #ffcd39;\n}\n\n.link-danger {\n  color: #dc3545;\n}\n.link-danger:hover, .link-danger:focus {\n  color: #b02a37;\n}\n\n.link-light {\n  color: #f8f9fa;\n}\n.link-light:hover, .link-light:focus {\n  color: #f9fafb;\n}\n\n.link-dark {\n  color: #212529;\n}\n.link-dark:hover, .link-dark:focus {\n  color: #1a1e21;\n}\n\n.ratio {\n  position: relative;\n  width: 100%;\n}\n.ratio::before {\n  display: block;\n  padding-top: var(--bs-aspect-ratio);\n  content: \"\";\n}\n.ratio > * {\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.ratio-1x1 {\n  --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n  --bs-aspect-ratio: calc(3 / 4 * 100%);\n}\n\n.ratio-16x9 {\n  --bs-aspect-ratio: calc(9 / 16 * 100%);\n}\n\n.ratio-21x9 {\n  --bs-aspect-ratio: calc(9 / 21 * 100%);\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  z-index: 1030;\n}\n\n.sticky-top {\n  position: -webkit-sticky;\n  position: sticky;\n  top: 0;\n  z-index: 1020;\n}\n\n@media (min-width: 576px) {\n  .sticky-sm-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 768px) {\n  .sticky-md-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 992px) {\n  .sticky-lg-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1200px) {\n  .sticky-xl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1400px) {\n  .sticky-xxl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  z-index: 1;\n  content: \"\";\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: 0.25;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.float-start {\n  float: right !important;\n}\n\n.float-end {\n  float: left !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-25 {\n  opacity: 0.25 !important;\n}\n\n.opacity-50 {\n  opacity: 0.5 !important;\n}\n\n.opacity-75 {\n  opacity: 0.75 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important;\n}\n\n.top-0 {\n  top: 0 !important;\n}\n\n.top-50 {\n  top: 50% !important;\n}\n\n.top-100 {\n  top: 100% !important;\n}\n\n.bottom-0 {\n  bottom: 0 !important;\n}\n\n.bottom-50 {\n  bottom: 50% !important;\n}\n\n.bottom-100 {\n  bottom: 100% !important;\n}\n\n.start-0 {\n  right: 0 !important;\n}\n\n.start-50 {\n  right: 50% !important;\n}\n\n.start-100 {\n  right: 100% !important;\n}\n\n.end-0 {\n  left: 0 !important;\n}\n\n.end-50 {\n  left: 50% !important;\n}\n\n.end-100 {\n  left: 100% !important;\n}\n\n.translate-middle {\n  transform: translate(50%, -50%) !important;\n}\n\n.translate-middle-x {\n  transform: translateX(50%) !important;\n}\n\n.translate-middle-y {\n  transform: translateY(-50%) !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-end {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-end-0 {\n  border-left: 0 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-start {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-start-0 {\n  border-right: 0 !important;\n}\n\n.border-primary {\n  border-color: #0d6efd !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #198754 !important;\n}\n\n.border-info {\n  border-color: #0dcaf0 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #212529 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.border-1 {\n  border-width: 1px !important;\n}\n\n.border-2 {\n  border-width: 2px !important;\n}\n\n.border-3 {\n  border-width: 3px !important;\n}\n\n.border-4 {\n  border-width: 4px !important;\n}\n\n.border-5 {\n  border-width: 5px !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.vw-100 {\n  width: 100vw !important;\n}\n\n.min-vw-100 {\n  min-width: 100vw !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.vh-100 {\n  height: 100vh !important;\n}\n\n.min-vh-100 {\n  min-height: 100vh !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.gap-0 {\n  gap: 0 !important;\n}\n\n.gap-1 {\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  gap: 1rem !important;\n}\n\n.gap-4 {\n  gap: 1.5rem !important;\n}\n\n.gap-5 {\n  gap: 3rem !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-left: 0 !important;\n  margin-right: 0 !important;\n}\n\n.mx-1 {\n  margin-left: 0.25rem !important;\n  margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-left: 0.5rem !important;\n  margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-left: 1rem !important;\n  margin-right: 1rem !important;\n}\n\n.mx-4 {\n  margin-left: 1.5rem !important;\n  margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-left: 3rem !important;\n  margin-right: 3rem !important;\n}\n\n.mx-auto {\n  margin-left: auto !important;\n  margin-right: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-left: 0 !important;\n}\n\n.me-1 {\n  margin-left: 0.25rem !important;\n}\n\n.me-2 {\n  margin-left: 0.5rem !important;\n}\n\n.me-3 {\n  margin-left: 1rem !important;\n}\n\n.me-4 {\n  margin-left: 1.5rem !important;\n}\n\n.me-5 {\n  margin-left: 3rem !important;\n}\n\n.me-auto {\n  margin-left: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-right: 0 !important;\n}\n\n.ms-1 {\n  margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-right: 1rem !important;\n}\n\n.ms-4 {\n  margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-right: 3rem !important;\n}\n\n.ms-auto {\n  margin-right: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-left: 0 !important;\n  padding-right: 0 !important;\n}\n\n.px-1 {\n  padding-left: 0.25rem !important;\n  padding-right: 0.25rem !important;\n}\n\n.px-2 {\n  padding-left: 0.5rem !important;\n  padding-right: 0.5rem !important;\n}\n\n.px-3 {\n  padding-left: 1rem !important;\n  padding-right: 1rem !important;\n}\n\n.px-4 {\n  padding-left: 1.5rem !important;\n  padding-right: 1.5rem !important;\n}\n\n.px-5 {\n  padding-left: 3rem !important;\n  padding-right: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-left: 0 !important;\n}\n\n.pe-1 {\n  padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-left: 1rem !important;\n}\n\n.pe-4 {\n  padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-left: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-right: 0 !important;\n}\n\n.ps-1 {\n  padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-right: 1rem !important;\n}\n\n.ps-4 {\n  padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-right: 3rem !important;\n}\n\n.font-monospace {\n  font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n  font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n  font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n  font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n  font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n  font-size: 1.25rem !important;\n}\n\n.fs-6 {\n  font-size: 1rem !important;\n}\n\n.fst-italic {\n  font-style: italic !important;\n}\n\n.fst-normal {\n  font-style: normal !important;\n}\n\n.fw-light {\n  font-weight: 300 !important;\n}\n\n.fw-lighter {\n  font-weight: lighter !important;\n}\n\n.fw-normal {\n  font-weight: 400 !important;\n}\n\n.fw-bold {\n  font-weight: 700 !important;\n}\n\n.fw-bolder {\n  font-weight: bolder !important;\n}\n\n.lh-1 {\n  line-height: 1 !important;\n}\n\n.lh-sm {\n  line-height: 1.25 !important;\n}\n\n.lh-base {\n  line-height: 1.5 !important;\n}\n\n.lh-lg {\n  line-height: 2 !important;\n}\n\n.text-start {\n  text-align: right !important;\n}\n\n.text-end {\n  text-align: left !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n.text-decoration-none {\n  text-decoration: none !important;\n}\n\n.text-decoration-underline {\n  text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n  text-decoration: line-through !important;\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.text-wrap {\n  white-space: normal !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n.text-primary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n  --bs-text-opacity: 1;\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  --bs-text-opacity: 1;\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  --bs-text-opacity: 1;\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-reset {\n  --bs-text-opacity: 1;\n  color: inherit !important;\n}\n\n.text-opacity-25 {\n  --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n  --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n  --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n  --bs-text-opacity: 1;\n}\n\n.bg-primary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n  --bs-bg-opacity: 1;\n  background-color: transparent !important;\n}\n\n.bg-opacity-10 {\n  --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n  --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n  --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n  --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n  --bs-bg-opacity: 1;\n}\n\n.bg-gradient {\n  background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n  -webkit-user-select: all !important;\n  -moz-user-select: all !important;\n  user-select: all !important;\n}\n\n.user-select-auto {\n  -webkit-user-select: auto !important;\n  -moz-user-select: auto !important;\n  user-select: auto !important;\n}\n\n.user-select-none {\n  -webkit-user-select: none !important;\n  -moz-user-select: none !important;\n  user-select: none !important;\n}\n\n.pe-none {\n  pointer-events: none !important;\n}\n\n.pe-auto {\n  pointer-events: auto !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.rounded-1 {\n  border-radius: 0.2rem !important;\n}\n\n.rounded-2 {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-3 {\n  border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-pill {\n  border-radius: 50rem !important;\n}\n\n.rounded-top {\n  border-top-right-radius: 0.25rem !important;\n  border-top-left-radius: 0.25rem !important;\n}\n\n.rounded-end {\n  border-top-left-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-left-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-start {\n  border-bottom-right-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-start {\n    float: right !important;\n  }\n\n  .float-sm-end {\n    float: left !important;\n  }\n\n  .float-sm-none {\n    float: none !important;\n  }\n\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-sm-0 {\n    gap: 0 !important;\n  }\n\n  .gap-sm-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-sm-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-sm-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-sm-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-sm-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-sm-start {\n    text-align: right !important;\n  }\n\n  .text-sm-end {\n    text-align: left !important;\n  }\n\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 768px) {\n  .float-md-start {\n    float: right !important;\n  }\n\n  .float-md-end {\n    float: left !important;\n  }\n\n  .float-md-none {\n    float: none !important;\n  }\n\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-md-0 {\n    gap: 0 !important;\n  }\n\n  .gap-md-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-md-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-md-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-md-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-md-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-right: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-md-start {\n    text-align: right !important;\n  }\n\n  .text-md-end {\n    text-align: left !important;\n  }\n\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 992px) {\n  .float-lg-start {\n    float: right !important;\n  }\n\n  .float-lg-end {\n    float: left !important;\n  }\n\n  .float-lg-none {\n    float: none !important;\n  }\n\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-lg-0 {\n    gap: 0 !important;\n  }\n\n  .gap-lg-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-lg-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-lg-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-lg-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-lg-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-lg-start {\n    text-align: right !important;\n  }\n\n  .text-lg-end {\n    text-align: left !important;\n  }\n\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .float-xl-start {\n    float: right !important;\n  }\n\n  .float-xl-end {\n    float: left !important;\n  }\n\n  .float-xl-none {\n    float: none !important;\n  }\n\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-xl-start {\n    text-align: right !important;\n  }\n\n  .text-xl-end {\n    text-align: left !important;\n  }\n\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1400px) {\n  .float-xxl-start {\n    float: right !important;\n  }\n\n  .float-xxl-end {\n    float: left !important;\n  }\n\n  .float-xxl-none {\n    float: none !important;\n  }\n\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xxl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xxl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xxl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xxl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xxl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xxl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-xxl-start {\n    text-align: right !important;\n  }\n\n  .text-xxl-end {\n    text-align: left !important;\n  }\n\n  .text-xxl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .fs-1 {\n    font-size: 2.5rem !important;\n  }\n\n  .fs-2 {\n    font-size: 2rem !important;\n  }\n\n  .fs-3 {\n    font-size: 1.75rem !important;\n  }\n\n  .fs-4 {\n    font-size: 1.5rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap-utilities.rtl.css.map */","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","//\n// Stretched link\n//\n\n.stretched-link {\n  &::#{$stretched-link-pseudo-element} {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: $stretched-link-z-index;\n    content: \"\";\n  }\n}\n","//\n// Text truncation\n//\n\n.text-truncate {\n  @include text-truncate();\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n",".vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: $hr-opacity;\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n  $values: map-get($utility, values);\n\n  // If the values are a list or string, convert it into a map\n  @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n    $values: zip($values, $values);\n  }\n\n  @each $key, $value in $values {\n    $properties: map-get($utility, property);\n\n    // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n    @if type-of($properties) == \"string\" {\n      $properties: append((), $properties);\n    }\n\n    // Use custom class if present\n    $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n    $property-class: if($property-class == null, \"\", $property-class);\n\n    // State params to generate pseudo-classes\n    $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n    $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (eg. with shadow class)\n    $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n    @if map-get($utility, rfs) {\n      // Inside the media query\n      @if $is-rfs-media-query {\n        $val: rfs-value($value);\n\n        // Do not render anything if fluid and non fluid values are the same\n        $value: if($val == rfs-fluid-value($value), null, $val);\n      }\n      @else {\n        $value: rfs-fluid-value($value);\n      }\n    }\n\n    $is-css-var: map-get($utility, css-var);\n    $is-local-vars: map-get($utility, local-vars);\n    $is-rtl: map-get($utility, rtl);\n\n    @if $value != null {\n      @if $is-rtl == false {\n        /* rtl:begin:remove */\n      }\n\n      @if $is-css-var {\n        .#{$property-class + $infix + $property-class-modifier} {\n          --#{$variable-prefix}#{$property-class}: #{$value};\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            --#{$variable-prefix}#{$property-class}: #{$value};\n          }\n        }\n      } @else {\n        .#{$property-class + $infix + $property-class-modifier} {\n          @each $property in $properties {\n            @if $is-local-vars {\n              @each $local-var, $value in $is-local-vars {\n                --#{$variable-prefix}#{$local-var}: #{$value};\n              }\n            }\n            #{$property}: $value if($enable-important-utilities, !important, null);\n          }\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            @each $property in $properties {\n              #{$property}: $value if($enable-important-utilities, !important, null);\n            }\n          }\n        }\n      }\n\n      @if $is-rtl == false {\n        /* rtl:end:remove */\n      }\n    }\n  }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n  // Generate media query if needed\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    // Loop over each utility property\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Only proceed if responsive media queries are enabled or if it's the base media query\n      @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n        @include generate-utility($utility, $infix);\n      }\n    }\n  }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix, true);\n        }\n      }\n    }\n  }\n}\n\n\n// Print utilities\n@media print {\n  @each $key, $utility in $utilities {\n    // The utility can be disabled with `false`, thus check if the utility is a map first\n    // Then check if the utility needs print styles\n    @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n      @include generate-utility($utility, \"-print\");\n    }\n  }\n}\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.css
new file mode 100644
index 0000000..750da4e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.css
@@ -0,0 +1,11221 @@
+@charset "UTF-8";
+/*!
+ * Bootstrap v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+:root {
+  --bs-blue: #0d6efd;
+  --bs-indigo: #6610f2;
+  --bs-purple: #6f42c1;
+  --bs-pink: #d63384;
+  --bs-red: #dc3545;
+  --bs-orange: #fd7e14;
+  --bs-yellow: #ffc107;
+  --bs-green: #198754;
+  --bs-teal: #20c997;
+  --bs-cyan: #0dcaf0;
+  --bs-white: #fff;
+  --bs-gray: #6c757d;
+  --bs-gray-dark: #343a40;
+  --bs-gray-100: #f8f9fa;
+  --bs-gray-200: #e9ecef;
+  --bs-gray-300: #dee2e6;
+  --bs-gray-400: #ced4da;
+  --bs-gray-500: #adb5bd;
+  --bs-gray-600: #6c757d;
+  --bs-gray-700: #495057;
+  --bs-gray-800: #343a40;
+  --bs-gray-900: #212529;
+  --bs-primary: #0d6efd;
+  --bs-secondary: #6c757d;
+  --bs-success: #198754;
+  --bs-info: #0dcaf0;
+  --bs-warning: #ffc107;
+  --bs-danger: #dc3545;
+  --bs-light: #f8f9fa;
+  --bs-dark: #212529;
+  --bs-primary-rgb: 13, 110, 253;
+  --bs-secondary-rgb: 108, 117, 125;
+  --bs-success-rgb: 25, 135, 84;
+  --bs-info-rgb: 13, 202, 240;
+  --bs-warning-rgb: 255, 193, 7;
+  --bs-danger-rgb: 220, 53, 69;
+  --bs-light-rgb: 248, 249, 250;
+  --bs-dark-rgb: 33, 37, 41;
+  --bs-white-rgb: 255, 255, 255;
+  --bs-black-rgb: 0, 0, 0;
+  --bs-body-rgb: 33, 37, 41;
+  --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
+  --bs-body-font-family: var(--bs-font-sans-serif);
+  --bs-body-font-size: 1rem;
+  --bs-body-font-weight: 400;
+  --bs-body-line-height: 1.5;
+  --bs-body-color: #212529;
+  --bs-body-bg: #fff;
+}
+
+*,
+*::before,
+*::after {
+  box-sizing: border-box;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  :root {
+    scroll-behavior: smooth;
+  }
+}
+
+body {
+  margin: 0;
+  font-family: var(--bs-body-font-family);
+  font-size: var(--bs-body-font-size);
+  font-weight: var(--bs-body-font-weight);
+  line-height: var(--bs-body-line-height);
+  color: var(--bs-body-color);
+  text-align: var(--bs-body-text-align);
+  background-color: var(--bs-body-bg);
+  -webkit-text-size-adjust: 100%;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+hr {
+  margin: 1rem 0;
+  color: inherit;
+  background-color: currentColor;
+  border: 0;
+  opacity: 0.25;
+}
+
+hr:not([size]) {
+  height: 1px;
+}
+
+h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {
+  margin-top: 0;
+  margin-bottom: 0.5rem;
+  font-weight: 500;
+  line-height: 1.2;
+}
+
+h1, .h1 {
+  font-size: calc(1.375rem + 1.5vw);
+}
+@media (min-width: 1200px) {
+  h1, .h1 {
+    font-size: 2.5rem;
+  }
+}
+
+h2, .h2 {
+  font-size: calc(1.325rem + 0.9vw);
+}
+@media (min-width: 1200px) {
+  h2, .h2 {
+    font-size: 2rem;
+  }
+}
+
+h3, .h3 {
+  font-size: calc(1.3rem + 0.6vw);
+}
+@media (min-width: 1200px) {
+  h3, .h3 {
+    font-size: 1.75rem;
+  }
+}
+
+h4, .h4 {
+  font-size: calc(1.275rem + 0.3vw);
+}
+@media (min-width: 1200px) {
+  h4, .h4 {
+    font-size: 1.5rem;
+  }
+}
+
+h5, .h5 {
+  font-size: 1.25rem;
+}
+
+h6, .h6 {
+  font-size: 1rem;
+}
+
+p {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+abbr[title],
+abbr[data-bs-original-title] {
+  -webkit-text-decoration: underline dotted;
+  text-decoration: underline dotted;
+  cursor: help;
+  -webkit-text-decoration-skip-ink: none;
+  text-decoration-skip-ink: none;
+}
+
+address {
+  margin-bottom: 1rem;
+  font-style: normal;
+  line-height: inherit;
+}
+
+ol,
+ul {
+  padding-left: 2rem;
+}
+
+ol,
+ul,
+dl {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+  margin-bottom: 0;
+}
+
+dt {
+  font-weight: 700;
+}
+
+dd {
+  margin-bottom: 0.5rem;
+  margin-left: 0;
+}
+
+blockquote {
+  margin: 0 0 1rem;
+}
+
+b,
+strong {
+  font-weight: bolder;
+}
+
+small, .small {
+  font-size: 0.875em;
+}
+
+mark, .mark {
+  padding: 0.2em;
+  background-color: #fcf8e3;
+}
+
+sub,
+sup {
+  position: relative;
+  font-size: 0.75em;
+  line-height: 0;
+  vertical-align: baseline;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+sup {
+  top: -0.5em;
+}
+
+a {
+  color: #0d6efd;
+  text-decoration: underline;
+}
+a:hover {
+  color: #0a58ca;
+}
+
+a:not([href]):not([class]), a:not([href]):not([class]):hover {
+  color: inherit;
+  text-decoration: none;
+}
+
+pre,
+code,
+kbd,
+samp {
+  font-family: var(--bs-font-monospace);
+  font-size: 1em;
+  direction: ltr /* rtl:ignore */;
+  unicode-bidi: bidi-override;
+}
+
+pre {
+  display: block;
+  margin-top: 0;
+  margin-bottom: 1rem;
+  overflow: auto;
+  font-size: 0.875em;
+}
+pre code {
+  font-size: inherit;
+  color: inherit;
+  word-break: normal;
+}
+
+code {
+  font-size: 0.875em;
+  color: #d63384;
+  word-wrap: break-word;
+}
+a > code {
+  color: inherit;
+}
+
+kbd {
+  padding: 0.2rem 0.4rem;
+  font-size: 0.875em;
+  color: #fff;
+  background-color: #212529;
+  border-radius: 0.2rem;
+}
+kbd kbd {
+  padding: 0;
+  font-size: 1em;
+  font-weight: 700;
+}
+
+figure {
+  margin: 0 0 1rem;
+}
+
+img,
+svg {
+  vertical-align: middle;
+}
+
+table {
+  caption-side: bottom;
+  border-collapse: collapse;
+}
+
+caption {
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  color: #6c757d;
+  text-align: left;
+}
+
+th {
+  text-align: inherit;
+  text-align: -webkit-match-parent;
+}
+
+thead,
+tbody,
+tfoot,
+tr,
+td,
+th {
+  border-color: inherit;
+  border-style: solid;
+  border-width: 0;
+}
+
+label {
+  display: inline-block;
+}
+
+button {
+  border-radius: 0;
+}
+
+button:focus:not(:focus-visible) {
+  outline: 0;
+}
+
+input,
+button,
+select,
+optgroup,
+textarea {
+  margin: 0;
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+
+button,
+select {
+  text-transform: none;
+}
+
+[role=button] {
+  cursor: pointer;
+}
+
+select {
+  word-wrap: normal;
+}
+select:disabled {
+  opacity: 1;
+}
+
+[list]::-webkit-calendar-picker-indicator {
+  display: none;
+}
+
+button,
+[type=button],
+[type=reset],
+[type=submit] {
+  -webkit-appearance: button;
+}
+button:not(:disabled),
+[type=button]:not(:disabled),
+[type=reset]:not(:disabled),
+[type=submit]:not(:disabled) {
+  cursor: pointer;
+}
+
+::-moz-focus-inner {
+  padding: 0;
+  border-style: none;
+}
+
+textarea {
+  resize: vertical;
+}
+
+fieldset {
+  min-width: 0;
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+
+legend {
+  float: left;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 0.5rem;
+  font-size: calc(1.275rem + 0.3vw);
+  line-height: inherit;
+}
+@media (min-width: 1200px) {
+  legend {
+    font-size: 1.5rem;
+  }
+}
+legend + * {
+  clear: left;
+}
+
+::-webkit-datetime-edit-fields-wrapper,
+::-webkit-datetime-edit-text,
+::-webkit-datetime-edit-minute,
+::-webkit-datetime-edit-hour-field,
+::-webkit-datetime-edit-day-field,
+::-webkit-datetime-edit-month-field,
+::-webkit-datetime-edit-year-field {
+  padding: 0;
+}
+
+::-webkit-inner-spin-button {
+  height: auto;
+}
+
+[type=search] {
+  outline-offset: -2px;
+  -webkit-appearance: textfield;
+}
+
+/* rtl:raw:
+[type="tel"],
+[type="url"],
+[type="email"],
+[type="number"] {
+  direction: ltr;
+}
+*/
+::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+::-webkit-color-swatch-wrapper {
+  padding: 0;
+}
+
+::file-selector-button {
+  font: inherit;
+}
+
+::-webkit-file-upload-button {
+  font: inherit;
+  -webkit-appearance: button;
+}
+
+output {
+  display: inline-block;
+}
+
+iframe {
+  border: 0;
+}
+
+summary {
+  display: list-item;
+  cursor: pointer;
+}
+
+progress {
+  vertical-align: baseline;
+}
+
+[hidden] {
+  display: none !important;
+}
+
+.lead {
+  font-size: 1.25rem;
+  font-weight: 300;
+}
+
+.display-1 {
+  font-size: calc(1.625rem + 4.5vw);
+  font-weight: 300;
+  line-height: 1.2;
+}
+@media (min-width: 1200px) {
+  .display-1 {
+    font-size: 5rem;
+  }
+}
+
+.display-2 {
+  font-size: calc(1.575rem + 3.9vw);
+  font-weight: 300;
+  line-height: 1.2;
+}
+@media (min-width: 1200px) {
+  .display-2 {
+    font-size: 4.5rem;
+  }
+}
+
+.display-3 {
+  font-size: calc(1.525rem + 3.3vw);
+  font-weight: 300;
+  line-height: 1.2;
+}
+@media (min-width: 1200px) {
+  .display-3 {
+    font-size: 4rem;
+  }
+}
+
+.display-4 {
+  font-size: calc(1.475rem + 2.7vw);
+  font-weight: 300;
+  line-height: 1.2;
+}
+@media (min-width: 1200px) {
+  .display-4 {
+    font-size: 3.5rem;
+  }
+}
+
+.display-5 {
+  font-size: calc(1.425rem + 2.1vw);
+  font-weight: 300;
+  line-height: 1.2;
+}
+@media (min-width: 1200px) {
+  .display-5 {
+    font-size: 3rem;
+  }
+}
+
+.display-6 {
+  font-size: calc(1.375rem + 1.5vw);
+  font-weight: 300;
+  line-height: 1.2;
+}
+@media (min-width: 1200px) {
+  .display-6 {
+    font-size: 2.5rem;
+  }
+}
+
+.list-unstyled {
+  padding-left: 0;
+  list-style: none;
+}
+
+.list-inline {
+  padding-left: 0;
+  list-style: none;
+}
+
+.list-inline-item {
+  display: inline-block;
+}
+.list-inline-item:not(:last-child) {
+  margin-right: 0.5rem;
+}
+
+.initialism {
+  font-size: 0.875em;
+  text-transform: uppercase;
+}
+
+.blockquote {
+  margin-bottom: 1rem;
+  font-size: 1.25rem;
+}
+.blockquote > :last-child {
+  margin-bottom: 0;
+}
+
+.blockquote-footer {
+  margin-top: -1rem;
+  margin-bottom: 1rem;
+  font-size: 0.875em;
+  color: #6c757d;
+}
+.blockquote-footer::before {
+  content: "鈥斅�";
+}
+
+.img-fluid {
+  max-width: 100%;
+  height: auto;
+}
+
+.img-thumbnail {
+  padding: 0.25rem;
+  background-color: #fff;
+  border: 1px solid #dee2e6;
+  border-radius: 0.25rem;
+  max-width: 100%;
+  height: auto;
+}
+
+.figure {
+  display: inline-block;
+}
+
+.figure-img {
+  margin-bottom: 0.5rem;
+  line-height: 1;
+}
+
+.figure-caption {
+  font-size: 0.875em;
+  color: #6c757d;
+}
+
+.container,
+.container-fluid,
+.container-xxl,
+.container-xl,
+.container-lg,
+.container-md,
+.container-sm {
+  width: 100%;
+  padding-right: var(--bs-gutter-x, 0.75rem);
+  padding-left: var(--bs-gutter-x, 0.75rem);
+  margin-right: auto;
+  margin-left: auto;
+}
+
+@media (min-width: 576px) {
+  .container-sm, .container {
+    max-width: 540px;
+  }
+}
+@media (min-width: 768px) {
+  .container-md, .container-sm, .container {
+    max-width: 720px;
+  }
+}
+@media (min-width: 992px) {
+  .container-lg, .container-md, .container-sm, .container {
+    max-width: 960px;
+  }
+}
+@media (min-width: 1200px) {
+  .container-xl, .container-lg, .container-md, .container-sm, .container {
+    max-width: 1140px;
+  }
+}
+@media (min-width: 1400px) {
+  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
+    max-width: 1320px;
+  }
+}
+.row {
+  --bs-gutter-x: 1.5rem;
+  --bs-gutter-y: 0;
+  display: flex;
+  flex-wrap: wrap;
+  margin-top: calc(var(--bs-gutter-y) * -1);
+  margin-right: calc(var(--bs-gutter-x) * -.5);
+  margin-left: calc(var(--bs-gutter-x) * -.5);
+}
+.row > * {
+  flex-shrink: 0;
+  width: 100%;
+  max-width: 100%;
+  padding-right: calc(var(--bs-gutter-x) * .5);
+  padding-left: calc(var(--bs-gutter-x) * .5);
+  margin-top: var(--bs-gutter-y);
+}
+
+.col {
+  flex: 1 0 0%;
+}
+
+.row-cols-auto > * {
+  flex: 0 0 auto;
+  width: auto;
+}
+
+.row-cols-1 > * {
+  flex: 0 0 auto;
+  width: 100%;
+}
+
+.row-cols-2 > * {
+  flex: 0 0 auto;
+  width: 50%;
+}
+
+.row-cols-3 > * {
+  flex: 0 0 auto;
+  width: 33.3333333333%;
+}
+
+.row-cols-4 > * {
+  flex: 0 0 auto;
+  width: 25%;
+}
+
+.row-cols-5 > * {
+  flex: 0 0 auto;
+  width: 20%;
+}
+
+.row-cols-6 > * {
+  flex: 0 0 auto;
+  width: 16.6666666667%;
+}
+
+.col-auto {
+  flex: 0 0 auto;
+  width: auto;
+}
+
+.col-1 {
+  flex: 0 0 auto;
+  width: 8.33333333%;
+}
+
+.col-2 {
+  flex: 0 0 auto;
+  width: 16.66666667%;
+}
+
+.col-3 {
+  flex: 0 0 auto;
+  width: 25%;
+}
+
+.col-4 {
+  flex: 0 0 auto;
+  width: 33.33333333%;
+}
+
+.col-5 {
+  flex: 0 0 auto;
+  width: 41.66666667%;
+}
+
+.col-6 {
+  flex: 0 0 auto;
+  width: 50%;
+}
+
+.col-7 {
+  flex: 0 0 auto;
+  width: 58.33333333%;
+}
+
+.col-8 {
+  flex: 0 0 auto;
+  width: 66.66666667%;
+}
+
+.col-9 {
+  flex: 0 0 auto;
+  width: 75%;
+}
+
+.col-10 {
+  flex: 0 0 auto;
+  width: 83.33333333%;
+}
+
+.col-11 {
+  flex: 0 0 auto;
+  width: 91.66666667%;
+}
+
+.col-12 {
+  flex: 0 0 auto;
+  width: 100%;
+}
+
+.offset-1 {
+  margin-left: 8.33333333%;
+}
+
+.offset-2 {
+  margin-left: 16.66666667%;
+}
+
+.offset-3 {
+  margin-left: 25%;
+}
+
+.offset-4 {
+  margin-left: 33.33333333%;
+}
+
+.offset-5 {
+  margin-left: 41.66666667%;
+}
+
+.offset-6 {
+  margin-left: 50%;
+}
+
+.offset-7 {
+  margin-left: 58.33333333%;
+}
+
+.offset-8 {
+  margin-left: 66.66666667%;
+}
+
+.offset-9 {
+  margin-left: 75%;
+}
+
+.offset-10 {
+  margin-left: 83.33333333%;
+}
+
+.offset-11 {
+  margin-left: 91.66666667%;
+}
+
+.g-0,
+.gx-0 {
+  --bs-gutter-x: 0;
+}
+
+.g-0,
+.gy-0 {
+  --bs-gutter-y: 0;
+}
+
+.g-1,
+.gx-1 {
+  --bs-gutter-x: 0.25rem;
+}
+
+.g-1,
+.gy-1 {
+  --bs-gutter-y: 0.25rem;
+}
+
+.g-2,
+.gx-2 {
+  --bs-gutter-x: 0.5rem;
+}
+
+.g-2,
+.gy-2 {
+  --bs-gutter-y: 0.5rem;
+}
+
+.g-3,
+.gx-3 {
+  --bs-gutter-x: 1rem;
+}
+
+.g-3,
+.gy-3 {
+  --bs-gutter-y: 1rem;
+}
+
+.g-4,
+.gx-4 {
+  --bs-gutter-x: 1.5rem;
+}
+
+.g-4,
+.gy-4 {
+  --bs-gutter-y: 1.5rem;
+}
+
+.g-5,
+.gx-5 {
+  --bs-gutter-x: 3rem;
+}
+
+.g-5,
+.gy-5 {
+  --bs-gutter-y: 3rem;
+}
+
+@media (min-width: 576px) {
+  .col-sm {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-sm-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-sm-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-sm-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-sm-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-sm-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-sm-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-sm-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-sm-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-sm-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-sm-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-sm-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-sm-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-sm-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-sm-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-sm-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-sm-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-sm-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-sm-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-sm-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-sm-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-sm-0 {
+    margin-left: 0;
+  }
+
+  .offset-sm-1 {
+    margin-left: 8.33333333%;
+  }
+
+  .offset-sm-2 {
+    margin-left: 16.66666667%;
+  }
+
+  .offset-sm-3 {
+    margin-left: 25%;
+  }
+
+  .offset-sm-4 {
+    margin-left: 33.33333333%;
+  }
+
+  .offset-sm-5 {
+    margin-left: 41.66666667%;
+  }
+
+  .offset-sm-6 {
+    margin-left: 50%;
+  }
+
+  .offset-sm-7 {
+    margin-left: 58.33333333%;
+  }
+
+  .offset-sm-8 {
+    margin-left: 66.66666667%;
+  }
+
+  .offset-sm-9 {
+    margin-left: 75%;
+  }
+
+  .offset-sm-10 {
+    margin-left: 83.33333333%;
+  }
+
+  .offset-sm-11 {
+    margin-left: 91.66666667%;
+  }
+
+  .g-sm-0,
+.gx-sm-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-sm-0,
+.gy-sm-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-sm-1,
+.gx-sm-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-sm-1,
+.gy-sm-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-sm-2,
+.gx-sm-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-sm-2,
+.gy-sm-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-sm-3,
+.gx-sm-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-sm-3,
+.gy-sm-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-sm-4,
+.gx-sm-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-sm-4,
+.gy-sm-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-sm-5,
+.gx-sm-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-sm-5,
+.gy-sm-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 768px) {
+  .col-md {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-md-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-md-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-md-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-md-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-md-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-md-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-md-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-md-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-md-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-md-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-md-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-md-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-md-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-md-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-md-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-md-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-md-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-md-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-md-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-md-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-md-0 {
+    margin-left: 0;
+  }
+
+  .offset-md-1 {
+    margin-left: 8.33333333%;
+  }
+
+  .offset-md-2 {
+    margin-left: 16.66666667%;
+  }
+
+  .offset-md-3 {
+    margin-left: 25%;
+  }
+
+  .offset-md-4 {
+    margin-left: 33.33333333%;
+  }
+
+  .offset-md-5 {
+    margin-left: 41.66666667%;
+  }
+
+  .offset-md-6 {
+    margin-left: 50%;
+  }
+
+  .offset-md-7 {
+    margin-left: 58.33333333%;
+  }
+
+  .offset-md-8 {
+    margin-left: 66.66666667%;
+  }
+
+  .offset-md-9 {
+    margin-left: 75%;
+  }
+
+  .offset-md-10 {
+    margin-left: 83.33333333%;
+  }
+
+  .offset-md-11 {
+    margin-left: 91.66666667%;
+  }
+
+  .g-md-0,
+.gx-md-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-md-0,
+.gy-md-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-md-1,
+.gx-md-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-md-1,
+.gy-md-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-md-2,
+.gx-md-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-md-2,
+.gy-md-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-md-3,
+.gx-md-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-md-3,
+.gy-md-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-md-4,
+.gx-md-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-md-4,
+.gy-md-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-md-5,
+.gx-md-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-md-5,
+.gy-md-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 992px) {
+  .col-lg {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-lg-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-lg-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-lg-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-lg-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-lg-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-lg-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-lg-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-lg-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-lg-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-lg-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-lg-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-lg-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-lg-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-lg-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-lg-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-lg-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-lg-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-lg-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-lg-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-lg-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-lg-0 {
+    margin-left: 0;
+  }
+
+  .offset-lg-1 {
+    margin-left: 8.33333333%;
+  }
+
+  .offset-lg-2 {
+    margin-left: 16.66666667%;
+  }
+
+  .offset-lg-3 {
+    margin-left: 25%;
+  }
+
+  .offset-lg-4 {
+    margin-left: 33.33333333%;
+  }
+
+  .offset-lg-5 {
+    margin-left: 41.66666667%;
+  }
+
+  .offset-lg-6 {
+    margin-left: 50%;
+  }
+
+  .offset-lg-7 {
+    margin-left: 58.33333333%;
+  }
+
+  .offset-lg-8 {
+    margin-left: 66.66666667%;
+  }
+
+  .offset-lg-9 {
+    margin-left: 75%;
+  }
+
+  .offset-lg-10 {
+    margin-left: 83.33333333%;
+  }
+
+  .offset-lg-11 {
+    margin-left: 91.66666667%;
+  }
+
+  .g-lg-0,
+.gx-lg-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-lg-0,
+.gy-lg-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-lg-1,
+.gx-lg-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-lg-1,
+.gy-lg-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-lg-2,
+.gx-lg-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-lg-2,
+.gy-lg-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-lg-3,
+.gx-lg-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-lg-3,
+.gy-lg-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-lg-4,
+.gx-lg-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-lg-4,
+.gy-lg-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-lg-5,
+.gx-lg-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-lg-5,
+.gy-lg-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 1200px) {
+  .col-xl {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-xl-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-xl-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-xl-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-xl-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-xl-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-xl-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-xl-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-xl-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-xl-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-xl-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-xl-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-xl-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-xl-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-xl-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-xl-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-xl-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-xl-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-xl-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-xl-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-xl-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-xl-0 {
+    margin-left: 0;
+  }
+
+  .offset-xl-1 {
+    margin-left: 8.33333333%;
+  }
+
+  .offset-xl-2 {
+    margin-left: 16.66666667%;
+  }
+
+  .offset-xl-3 {
+    margin-left: 25%;
+  }
+
+  .offset-xl-4 {
+    margin-left: 33.33333333%;
+  }
+
+  .offset-xl-5 {
+    margin-left: 41.66666667%;
+  }
+
+  .offset-xl-6 {
+    margin-left: 50%;
+  }
+
+  .offset-xl-7 {
+    margin-left: 58.33333333%;
+  }
+
+  .offset-xl-8 {
+    margin-left: 66.66666667%;
+  }
+
+  .offset-xl-9 {
+    margin-left: 75%;
+  }
+
+  .offset-xl-10 {
+    margin-left: 83.33333333%;
+  }
+
+  .offset-xl-11 {
+    margin-left: 91.66666667%;
+  }
+
+  .g-xl-0,
+.gx-xl-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-xl-0,
+.gy-xl-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-xl-1,
+.gx-xl-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-xl-1,
+.gy-xl-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-xl-2,
+.gx-xl-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-xl-2,
+.gy-xl-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-xl-3,
+.gx-xl-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-xl-3,
+.gy-xl-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-xl-4,
+.gx-xl-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-xl-4,
+.gy-xl-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-xl-5,
+.gx-xl-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-xl-5,
+.gy-xl-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 1400px) {
+  .col-xxl {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-xxl-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-xxl-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-xxl-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-xxl-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-xxl-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-xxl-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-xxl-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-xxl-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-xxl-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-xxl-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-xxl-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-xxl-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-xxl-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-xxl-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-xxl-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-xxl-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-xxl-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-xxl-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-xxl-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-xxl-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-xxl-0 {
+    margin-left: 0;
+  }
+
+  .offset-xxl-1 {
+    margin-left: 8.33333333%;
+  }
+
+  .offset-xxl-2 {
+    margin-left: 16.66666667%;
+  }
+
+  .offset-xxl-3 {
+    margin-left: 25%;
+  }
+
+  .offset-xxl-4 {
+    margin-left: 33.33333333%;
+  }
+
+  .offset-xxl-5 {
+    margin-left: 41.66666667%;
+  }
+
+  .offset-xxl-6 {
+    margin-left: 50%;
+  }
+
+  .offset-xxl-7 {
+    margin-left: 58.33333333%;
+  }
+
+  .offset-xxl-8 {
+    margin-left: 66.66666667%;
+  }
+
+  .offset-xxl-9 {
+    margin-left: 75%;
+  }
+
+  .offset-xxl-10 {
+    margin-left: 83.33333333%;
+  }
+
+  .offset-xxl-11 {
+    margin-left: 91.66666667%;
+  }
+
+  .g-xxl-0,
+.gx-xxl-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-xxl-0,
+.gy-xxl-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-xxl-1,
+.gx-xxl-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-xxl-1,
+.gy-xxl-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-xxl-2,
+.gx-xxl-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-xxl-2,
+.gy-xxl-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-xxl-3,
+.gx-xxl-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-xxl-3,
+.gy-xxl-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-xxl-4,
+.gx-xxl-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-xxl-4,
+.gy-xxl-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-xxl-5,
+.gx-xxl-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-xxl-5,
+.gy-xxl-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+.table {
+  --bs-table-bg: transparent;
+  --bs-table-accent-bg: transparent;
+  --bs-table-striped-color: #212529;
+  --bs-table-striped-bg: rgba(0, 0, 0, 0.05);
+  --bs-table-active-color: #212529;
+  --bs-table-active-bg: rgba(0, 0, 0, 0.1);
+  --bs-table-hover-color: #212529;
+  --bs-table-hover-bg: rgba(0, 0, 0, 0.075);
+  width: 100%;
+  margin-bottom: 1rem;
+  color: #212529;
+  vertical-align: top;
+  border-color: #dee2e6;
+}
+.table > :not(caption) > * > * {
+  padding: 0.5rem 0.5rem;
+  background-color: var(--bs-table-bg);
+  border-bottom-width: 1px;
+  box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg);
+}
+.table > tbody {
+  vertical-align: inherit;
+}
+.table > thead {
+  vertical-align: bottom;
+}
+.table > :not(:last-child) > :last-child > * {
+  border-bottom-color: currentColor;
+}
+
+.caption-top {
+  caption-side: top;
+}
+
+.table-sm > :not(caption) > * > * {
+  padding: 0.25rem 0.25rem;
+}
+
+.table-bordered > :not(caption) > * {
+  border-width: 1px 0;
+}
+.table-bordered > :not(caption) > * > * {
+  border-width: 0 1px;
+}
+
+.table-borderless > :not(caption) > * > * {
+  border-bottom-width: 0;
+}
+
+.table-striped > tbody > tr:nth-of-type(odd) {
+  --bs-table-accent-bg: var(--bs-table-striped-bg);
+  color: var(--bs-table-striped-color);
+}
+
+.table-active {
+  --bs-table-accent-bg: var(--bs-table-active-bg);
+  color: var(--bs-table-active-color);
+}
+
+.table-hover > tbody > tr:hover {
+  --bs-table-accent-bg: var(--bs-table-hover-bg);
+  color: var(--bs-table-hover-color);
+}
+
+.table-primary {
+  --bs-table-bg: #cfe2ff;
+  --bs-table-striped-bg: #c5d7f2;
+  --bs-table-striped-color: #000;
+  --bs-table-active-bg: #bacbe6;
+  --bs-table-active-color: #000;
+  --bs-table-hover-bg: #bfd1ec;
+  --bs-table-hover-color: #000;
+  color: #000;
+  border-color: #bacbe6;
+}
+
+.table-secondary {
+  --bs-table-bg: #e2e3e5;
+  --bs-table-striped-bg: #d7d8da;
+  --bs-table-striped-color: #000;
+  --bs-table-active-bg: #cbccce;
+  --bs-table-active-color: #000;
+  --bs-table-hover-bg: #d1d2d4;
+  --bs-table-hover-color: #000;
+  color: #000;
+  border-color: #cbccce;
+}
+
+.table-success {
+  --bs-table-bg: #d1e7dd;
+  --bs-table-striped-bg: #c7dbd2;
+  --bs-table-striped-color: #000;
+  --bs-table-active-bg: #bcd0c7;
+  --bs-table-active-color: #000;
+  --bs-table-hover-bg: #c1d6cc;
+  --bs-table-hover-color: #000;
+  color: #000;
+  border-color: #bcd0c7;
+}
+
+.table-info {
+  --bs-table-bg: #cff4fc;
+  --bs-table-striped-bg: #c5e8ef;
+  --bs-table-striped-color: #000;
+  --bs-table-active-bg: #badce3;
+  --bs-table-active-color: #000;
+  --bs-table-hover-bg: #bfe2e9;
+  --bs-table-hover-color: #000;
+  color: #000;
+  border-color: #badce3;
+}
+
+.table-warning {
+  --bs-table-bg: #fff3cd;
+  --bs-table-striped-bg: #f2e7c3;
+  --bs-table-striped-color: #000;
+  --bs-table-active-bg: #e6dbb9;
+  --bs-table-active-color: #000;
+  --bs-table-hover-bg: #ece1be;
+  --bs-table-hover-color: #000;
+  color: #000;
+  border-color: #e6dbb9;
+}
+
+.table-danger {
+  --bs-table-bg: #f8d7da;
+  --bs-table-striped-bg: #eccccf;
+  --bs-table-striped-color: #000;
+  --bs-table-active-bg: #dfc2c4;
+  --bs-table-active-color: #000;
+  --bs-table-hover-bg: #e5c7ca;
+  --bs-table-hover-color: #000;
+  color: #000;
+  border-color: #dfc2c4;
+}
+
+.table-light {
+  --bs-table-bg: #f8f9fa;
+  --bs-table-striped-bg: #ecedee;
+  --bs-table-striped-color: #000;
+  --bs-table-active-bg: #dfe0e1;
+  --bs-table-active-color: #000;
+  --bs-table-hover-bg: #e5e6e7;
+  --bs-table-hover-color: #000;
+  color: #000;
+  border-color: #dfe0e1;
+}
+
+.table-dark {
+  --bs-table-bg: #212529;
+  --bs-table-striped-bg: #2c3034;
+  --bs-table-striped-color: #fff;
+  --bs-table-active-bg: #373b3e;
+  --bs-table-active-color: #fff;
+  --bs-table-hover-bg: #323539;
+  --bs-table-hover-color: #fff;
+  color: #fff;
+  border-color: #373b3e;
+}
+
+.table-responsive {
+  overflow-x: auto;
+  -webkit-overflow-scrolling: touch;
+}
+
+@media (max-width: 575.98px) {
+  .table-responsive-sm {
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch;
+  }
+}
+@media (max-width: 767.98px) {
+  .table-responsive-md {
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch;
+  }
+}
+@media (max-width: 991.98px) {
+  .table-responsive-lg {
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch;
+  }
+}
+@media (max-width: 1199.98px) {
+  .table-responsive-xl {
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch;
+  }
+}
+@media (max-width: 1399.98px) {
+  .table-responsive-xxl {
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch;
+  }
+}
+.form-label {
+  margin-bottom: 0.5rem;
+}
+
+.col-form-label {
+  padding-top: calc(0.375rem + 1px);
+  padding-bottom: calc(0.375rem + 1px);
+  margin-bottom: 0;
+  font-size: inherit;
+  line-height: 1.5;
+}
+
+.col-form-label-lg {
+  padding-top: calc(0.5rem + 1px);
+  padding-bottom: calc(0.5rem + 1px);
+  font-size: 1.25rem;
+}
+
+.col-form-label-sm {
+  padding-top: calc(0.25rem + 1px);
+  padding-bottom: calc(0.25rem + 1px);
+  font-size: 0.875rem;
+}
+
+.form-text {
+  margin-top: 0.25rem;
+  font-size: 0.875em;
+  color: #6c757d;
+}
+
+.form-control {
+  display: block;
+  width: 100%;
+  padding: 0.375rem 0.75rem;
+  font-size: 1rem;
+  font-weight: 400;
+  line-height: 1.5;
+  color: #212529;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid #ced4da;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+  border-radius: 0.25rem;
+  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-control {
+    transition: none;
+  }
+}
+.form-control[type=file] {
+  overflow: hidden;
+}
+.form-control[type=file]:not(:disabled):not([readonly]) {
+  cursor: pointer;
+}
+.form-control:focus {
+  color: #212529;
+  background-color: #fff;
+  border-color: #86b7fe;
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-control::-webkit-date-and-time-value {
+  height: 1.5em;
+}
+.form-control::-moz-placeholder {
+  color: #6c757d;
+  opacity: 1;
+}
+.form-control::placeholder {
+  color: #6c757d;
+  opacity: 1;
+}
+.form-control:disabled, .form-control[readonly] {
+  background-color: #e9ecef;
+  opacity: 1;
+}
+.form-control::file-selector-button {
+  padding: 0.375rem 0.75rem;
+  margin: -0.375rem -0.75rem;
+  -webkit-margin-end: 0.75rem;
+  margin-inline-end: 0.75rem;
+  color: #212529;
+  background-color: #e9ecef;
+  pointer-events: none;
+  border-color: inherit;
+  border-style: solid;
+  border-width: 0;
+  border-inline-end-width: 1px;
+  border-radius: 0;
+  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-control::file-selector-button {
+    transition: none;
+  }
+}
+.form-control:hover:not(:disabled):not([readonly])::file-selector-button {
+  background-color: #dde0e3;
+}
+.form-control::-webkit-file-upload-button {
+  padding: 0.375rem 0.75rem;
+  margin: -0.375rem -0.75rem;
+  -webkit-margin-end: 0.75rem;
+  margin-inline-end: 0.75rem;
+  color: #212529;
+  background-color: #e9ecef;
+  pointer-events: none;
+  border-color: inherit;
+  border-style: solid;
+  border-width: 0;
+  border-inline-end-width: 1px;
+  border-radius: 0;
+  -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-control::-webkit-file-upload-button {
+    -webkit-transition: none;
+    transition: none;
+  }
+}
+.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {
+  background-color: #dde0e3;
+}
+
+.form-control-plaintext {
+  display: block;
+  width: 100%;
+  padding: 0.375rem 0;
+  margin-bottom: 0;
+  line-height: 1.5;
+  color: #212529;
+  background-color: transparent;
+  border: solid transparent;
+  border-width: 1px 0;
+}
+.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {
+  padding-right: 0;
+  padding-left: 0;
+}
+
+.form-control-sm {
+  min-height: calc(1.5em + 0.5rem + 2px);
+  padding: 0.25rem 0.5rem;
+  font-size: 0.875rem;
+  border-radius: 0.2rem;
+}
+.form-control-sm::file-selector-button {
+  padding: 0.25rem 0.5rem;
+  margin: -0.25rem -0.5rem;
+  -webkit-margin-end: 0.5rem;
+  margin-inline-end: 0.5rem;
+}
+.form-control-sm::-webkit-file-upload-button {
+  padding: 0.25rem 0.5rem;
+  margin: -0.25rem -0.5rem;
+  -webkit-margin-end: 0.5rem;
+  margin-inline-end: 0.5rem;
+}
+
+.form-control-lg {
+  min-height: calc(1.5em + 1rem + 2px);
+  padding: 0.5rem 1rem;
+  font-size: 1.25rem;
+  border-radius: 0.3rem;
+}
+.form-control-lg::file-selector-button {
+  padding: 0.5rem 1rem;
+  margin: -0.5rem -1rem;
+  -webkit-margin-end: 1rem;
+  margin-inline-end: 1rem;
+}
+.form-control-lg::-webkit-file-upload-button {
+  padding: 0.5rem 1rem;
+  margin: -0.5rem -1rem;
+  -webkit-margin-end: 1rem;
+  margin-inline-end: 1rem;
+}
+
+textarea.form-control {
+  min-height: calc(1.5em + 0.75rem + 2px);
+}
+textarea.form-control-sm {
+  min-height: calc(1.5em + 0.5rem + 2px);
+}
+textarea.form-control-lg {
+  min-height: calc(1.5em + 1rem + 2px);
+}
+
+.form-control-color {
+  width: 3rem;
+  height: auto;
+  padding: 0.375rem;
+}
+.form-control-color:not(:disabled):not([readonly]) {
+  cursor: pointer;
+}
+.form-control-color::-moz-color-swatch {
+  height: 1.5em;
+  border-radius: 0.25rem;
+}
+.form-control-color::-webkit-color-swatch {
+  height: 1.5em;
+  border-radius: 0.25rem;
+}
+
+.form-select {
+  display: block;
+  width: 100%;
+  padding: 0.375rem 2.25rem 0.375rem 0.75rem;
+  -moz-padding-start: calc(0.75rem - 3px);
+  font-size: 1rem;
+  font-weight: 400;
+  line-height: 1.5;
+  color: #212529;
+  background-color: #fff;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-position: right 0.75rem center;
+  background-size: 16px 12px;
+  border: 1px solid #ced4da;
+  border-radius: 0.25rem;
+  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-select {
+    transition: none;
+  }
+}
+.form-select:focus {
+  border-color: #86b7fe;
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-select[multiple], .form-select[size]:not([size="1"]) {
+  padding-right: 0.75rem;
+  background-image: none;
+}
+.form-select:disabled {
+  background-color: #e9ecef;
+}
+.form-select:-moz-focusring {
+  color: transparent;
+  text-shadow: 0 0 0 #212529;
+}
+
+.form-select-sm {
+  padding-top: 0.25rem;
+  padding-bottom: 0.25rem;
+  padding-left: 0.5rem;
+  font-size: 0.875rem;
+}
+
+.form-select-lg {
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  padding-left: 1rem;
+  font-size: 1.25rem;
+}
+
+.form-check {
+  display: block;
+  min-height: 1.5rem;
+  padding-left: 1.5em;
+  margin-bottom: 0.125rem;
+}
+.form-check .form-check-input {
+  float: left;
+  margin-left: -1.5em;
+}
+
+.form-check-input {
+  width: 1em;
+  height: 1em;
+  margin-top: 0.25em;
+  vertical-align: top;
+  background-color: #fff;
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: contain;
+  border: 1px solid rgba(0, 0, 0, 0.25);
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+  -webkit-print-color-adjust: exact;
+  color-adjust: exact;
+}
+.form-check-input[type=checkbox] {
+  border-radius: 0.25em;
+}
+.form-check-input[type=radio] {
+  border-radius: 50%;
+}
+.form-check-input:active {
+  filter: brightness(90%);
+}
+.form-check-input:focus {
+  border-color: #86b7fe;
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-check-input:checked {
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+}
+.form-check-input:checked[type=checkbox] {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e");
+}
+.form-check-input:checked[type=radio] {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e");
+}
+.form-check-input[type=checkbox]:indeterminate {
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e");
+}
+.form-check-input:disabled {
+  pointer-events: none;
+  filter: none;
+  opacity: 0.5;
+}
+.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {
+  opacity: 0.5;
+}
+
+.form-switch {
+  padding-left: 2.5em;
+}
+.form-switch .form-check-input {
+  width: 2em;
+  margin-left: -2.5em;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");
+  background-position: left center;
+  border-radius: 2em;
+  transition: background-position 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-switch .form-check-input {
+    transition: none;
+  }
+}
+.form-switch .form-check-input:focus {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e");
+}
+.form-switch .form-check-input:checked {
+  background-position: right center;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
+}
+
+.form-check-inline {
+  display: inline-block;
+  margin-right: 1rem;
+}
+
+.btn-check {
+  position: absolute;
+  clip: rect(0, 0, 0, 0);
+  pointer-events: none;
+}
+.btn-check[disabled] + .btn, .btn-check:disabled + .btn {
+  pointer-events: none;
+  filter: none;
+  opacity: 0.65;
+}
+
+.form-range {
+  width: 100%;
+  height: 1.5rem;
+  padding: 0;
+  background-color: transparent;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+}
+.form-range:focus {
+  outline: 0;
+}
+.form-range:focus::-webkit-slider-thumb {
+  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-range:focus::-moz-range-thumb {
+  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-range::-moz-focus-outer {
+  border: 0;
+}
+.form-range::-webkit-slider-thumb {
+  width: 1rem;
+  height: 1rem;
+  margin-top: -0.25rem;
+  background-color: #0d6efd;
+  border: 0;
+  border-radius: 1rem;
+  -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+  -webkit-appearance: none;
+  appearance: none;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-range::-webkit-slider-thumb {
+    -webkit-transition: none;
+    transition: none;
+  }
+}
+.form-range::-webkit-slider-thumb:active {
+  background-color: #b6d4fe;
+}
+.form-range::-webkit-slider-runnable-track {
+  width: 100%;
+  height: 0.5rem;
+  color: transparent;
+  cursor: pointer;
+  background-color: #dee2e6;
+  border-color: transparent;
+  border-radius: 1rem;
+}
+.form-range::-moz-range-thumb {
+  width: 1rem;
+  height: 1rem;
+  background-color: #0d6efd;
+  border: 0;
+  border-radius: 1rem;
+  -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+  -moz-appearance: none;
+  appearance: none;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-range::-moz-range-thumb {
+    -moz-transition: none;
+    transition: none;
+  }
+}
+.form-range::-moz-range-thumb:active {
+  background-color: #b6d4fe;
+}
+.form-range::-moz-range-track {
+  width: 100%;
+  height: 0.5rem;
+  color: transparent;
+  cursor: pointer;
+  background-color: #dee2e6;
+  border-color: transparent;
+  border-radius: 1rem;
+}
+.form-range:disabled {
+  pointer-events: none;
+}
+.form-range:disabled::-webkit-slider-thumb {
+  background-color: #adb5bd;
+}
+.form-range:disabled::-moz-range-thumb {
+  background-color: #adb5bd;
+}
+
+.form-floating {
+  position: relative;
+}
+.form-floating > .form-control,
+.form-floating > .form-select {
+  height: calc(3.5rem + 2px);
+  line-height: 1.25;
+}
+.form-floating > label {
+  position: absolute;
+  top: 0;
+  left: 0;
+  height: 100%;
+  padding: 1rem 0.75rem;
+  pointer-events: none;
+  border: 1px solid transparent;
+  transform-origin: 0 0;
+  transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-floating > label {
+    transition: none;
+  }
+}
+.form-floating > .form-control {
+  padding: 1rem 0.75rem;
+}
+.form-floating > .form-control::-moz-placeholder {
+  color: transparent;
+}
+.form-floating > .form-control::placeholder {
+  color: transparent;
+}
+.form-floating > .form-control:not(:-moz-placeholder-shown) {
+  padding-top: 1.625rem;
+  padding-bottom: 0.625rem;
+}
+.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown) {
+  padding-top: 1.625rem;
+  padding-bottom: 0.625rem;
+}
+.form-floating > .form-control:-webkit-autofill {
+  padding-top: 1.625rem;
+  padding-bottom: 0.625rem;
+}
+.form-floating > .form-select {
+  padding-top: 1.625rem;
+  padding-bottom: 0.625rem;
+}
+.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {
+  opacity: 0.65;
+  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
+}
+.form-floating > .form-control:focus ~ label,
+.form-floating > .form-control:not(:placeholder-shown) ~ label,
+.form-floating > .form-select ~ label {
+  opacity: 0.65;
+  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
+}
+.form-floating > .form-control:-webkit-autofill ~ label {
+  opacity: 0.65;
+  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
+}
+
+.input-group {
+  position: relative;
+  display: flex;
+  flex-wrap: wrap;
+  align-items: stretch;
+  width: 100%;
+}
+.input-group > .form-control,
+.input-group > .form-select {
+  position: relative;
+  flex: 1 1 auto;
+  width: 1%;
+  min-width: 0;
+}
+.input-group > .form-control:focus,
+.input-group > .form-select:focus {
+  z-index: 3;
+}
+.input-group .btn {
+  position: relative;
+  z-index: 2;
+}
+.input-group .btn:focus {
+  z-index: 3;
+}
+
+.input-group-text {
+  display: flex;
+  align-items: center;
+  padding: 0.375rem 0.75rem;
+  font-size: 1rem;
+  font-weight: 400;
+  line-height: 1.5;
+  color: #212529;
+  text-align: center;
+  white-space: nowrap;
+  background-color: #e9ecef;
+  border: 1px solid #ced4da;
+  border-radius: 0.25rem;
+}
+
+.input-group-lg > .form-control,
+.input-group-lg > .form-select,
+.input-group-lg > .input-group-text,
+.input-group-lg > .btn {
+  padding: 0.5rem 1rem;
+  font-size: 1.25rem;
+  border-radius: 0.3rem;
+}
+
+.input-group-sm > .form-control,
+.input-group-sm > .form-select,
+.input-group-sm > .input-group-text,
+.input-group-sm > .btn {
+  padding: 0.25rem 0.5rem;
+  font-size: 0.875rem;
+  border-radius: 0.2rem;
+}
+
+.input-group-lg > .form-select,
+.input-group-sm > .form-select {
+  padding-right: 3rem;
+}
+
+.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),
+.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),
+.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {
+  margin-left: -1px;
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+
+.valid-feedback {
+  display: none;
+  width: 100%;
+  margin-top: 0.25rem;
+  font-size: 0.875em;
+  color: #198754;
+}
+
+.valid-tooltip {
+  position: absolute;
+  top: 100%;
+  z-index: 5;
+  display: none;
+  max-width: 100%;
+  padding: 0.25rem 0.5rem;
+  margin-top: 0.1rem;
+  font-size: 0.875rem;
+  color: #fff;
+  background-color: rgba(25, 135, 84, 0.9);
+  border-radius: 0.25rem;
+}
+
+.was-validated :valid ~ .valid-feedback,
+.was-validated :valid ~ .valid-tooltip,
+.is-valid ~ .valid-feedback,
+.is-valid ~ .valid-tooltip {
+  display: block;
+}
+
+.was-validated .form-control:valid, .form-control.is-valid {
+  border-color: #198754;
+  padding-right: calc(1.5em + 0.75rem);
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-position: right calc(0.375em + 0.1875rem) center;
+  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
+  border-color: #198754;
+  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
+}
+
+.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
+  padding-right: calc(1.5em + 0.75rem);
+  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
+}
+
+.was-validated .form-select:valid, .form-select.is-valid {
+  border-color: #198754;
+}
+.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] {
+  padding-right: 4.125rem;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+  background-position: right 0.75rem center, center right 2.25rem;
+  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-select:valid:focus, .form-select.is-valid:focus {
+  border-color: #198754;
+  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
+}
+
+.was-validated .form-check-input:valid, .form-check-input.is-valid {
+  border-color: #198754;
+}
+.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {
+  background-color: #198754;
+}
+.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {
+  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
+}
+.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
+  color: #198754;
+}
+
+.form-check-inline .form-check-input ~ .valid-feedback {
+  margin-left: 0.5em;
+}
+
+.was-validated .input-group .form-control:valid, .input-group .form-control.is-valid,
+.was-validated .input-group .form-select:valid,
+.input-group .form-select.is-valid {
+  z-index: 1;
+}
+.was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus,
+.was-validated .input-group .form-select:valid:focus,
+.input-group .form-select.is-valid:focus {
+  z-index: 3;
+}
+
+.invalid-feedback {
+  display: none;
+  width: 100%;
+  margin-top: 0.25rem;
+  font-size: 0.875em;
+  color: #dc3545;
+}
+
+.invalid-tooltip {
+  position: absolute;
+  top: 100%;
+  z-index: 5;
+  display: none;
+  max-width: 100%;
+  padding: 0.25rem 0.5rem;
+  margin-top: 0.1rem;
+  font-size: 0.875rem;
+  color: #fff;
+  background-color: rgba(220, 53, 69, 0.9);
+  border-radius: 0.25rem;
+}
+
+.was-validated :invalid ~ .invalid-feedback,
+.was-validated :invalid ~ .invalid-tooltip,
+.is-invalid ~ .invalid-feedback,
+.is-invalid ~ .invalid-tooltip {
+  display: block;
+}
+
+.was-validated .form-control:invalid, .form-control.is-invalid {
+  border-color: #dc3545;
+  padding-right: calc(1.5em + 0.75rem);
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-position: right calc(0.375em + 0.1875rem) center;
+  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
+  border-color: #dc3545;
+  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
+}
+
+.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
+  padding-right: calc(1.5em + 0.75rem);
+  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
+}
+
+.was-validated .form-select:invalid, .form-select.is-invalid {
+  border-color: #dc3545;
+}
+.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] {
+  padding-right: 4.125rem;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
+  background-position: right 0.75rem center, center right 2.25rem;
+  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {
+  border-color: #dc3545;
+  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
+}
+
+.was-validated .form-check-input:invalid, .form-check-input.is-invalid {
+  border-color: #dc3545;
+}
+.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {
+  background-color: #dc3545;
+}
+.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {
+  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
+}
+.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
+  color: #dc3545;
+}
+
+.form-check-inline .form-check-input ~ .invalid-feedback {
+  margin-left: 0.5em;
+}
+
+.was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid,
+.was-validated .input-group .form-select:invalid,
+.input-group .form-select.is-invalid {
+  z-index: 2;
+}
+.was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus,
+.was-validated .input-group .form-select:invalid:focus,
+.input-group .form-select.is-invalid:focus {
+  z-index: 3;
+}
+
+.btn {
+  display: inline-block;
+  font-weight: 400;
+  line-height: 1.5;
+  color: #212529;
+  text-align: center;
+  text-decoration: none;
+  vertical-align: middle;
+  cursor: pointer;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  user-select: none;
+  background-color: transparent;
+  border: 1px solid transparent;
+  padding: 0.375rem 0.75rem;
+  font-size: 1rem;
+  border-radius: 0.25rem;
+  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .btn {
+    transition: none;
+  }
+}
+.btn:hover {
+  color: #212529;
+}
+.btn-check:focus + .btn, .btn:focus {
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.btn:disabled, .btn.disabled, fieldset:disabled .btn {
+  pointer-events: none;
+  opacity: 0.65;
+}
+
+.btn-primary {
+  color: #fff;
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+}
+.btn-primary:hover {
+  color: #fff;
+  background-color: #0b5ed7;
+  border-color: #0a58ca;
+}
+.btn-check:focus + .btn-primary, .btn-primary:focus {
+  color: #fff;
+  background-color: #0b5ed7;
+  border-color: #0a58ca;
+  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);
+}
+.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle {
+  color: #fff;
+  background-color: #0a58ca;
+  border-color: #0a53be;
+}
+.btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);
+}
+.btn-primary:disabled, .btn-primary.disabled {
+  color: #fff;
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+}
+
+.btn-secondary {
+  color: #fff;
+  background-color: #6c757d;
+  border-color: #6c757d;
+}
+.btn-secondary:hover {
+  color: #fff;
+  background-color: #5c636a;
+  border-color: #565e64;
+}
+.btn-check:focus + .btn-secondary, .btn-secondary:focus {
+  color: #fff;
+  background-color: #5c636a;
+  border-color: #565e64;
+  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);
+}
+.btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle {
+  color: #fff;
+  background-color: #565e64;
+  border-color: #51585e;
+}
+.btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);
+}
+.btn-secondary:disabled, .btn-secondary.disabled {
+  color: #fff;
+  background-color: #6c757d;
+  border-color: #6c757d;
+}
+
+.btn-success {
+  color: #fff;
+  background-color: #198754;
+  border-color: #198754;
+}
+.btn-success:hover {
+  color: #fff;
+  background-color: #157347;
+  border-color: #146c43;
+}
+.btn-check:focus + .btn-success, .btn-success:focus {
+  color: #fff;
+  background-color: #157347;
+  border-color: #146c43;
+  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);
+}
+.btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle {
+  color: #fff;
+  background-color: #146c43;
+  border-color: #13653f;
+}
+.btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);
+}
+.btn-success:disabled, .btn-success.disabled {
+  color: #fff;
+  background-color: #198754;
+  border-color: #198754;
+}
+
+.btn-info {
+  color: #000;
+  background-color: #0dcaf0;
+  border-color: #0dcaf0;
+}
+.btn-info:hover {
+  color: #000;
+  background-color: #31d2f2;
+  border-color: #25cff2;
+}
+.btn-check:focus + .btn-info, .btn-info:focus {
+  color: #000;
+  background-color: #31d2f2;
+  border-color: #25cff2;
+  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);
+}
+.btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle {
+  color: #000;
+  background-color: #3dd5f3;
+  border-color: #25cff2;
+}
+.btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);
+}
+.btn-info:disabled, .btn-info.disabled {
+  color: #000;
+  background-color: #0dcaf0;
+  border-color: #0dcaf0;
+}
+
+.btn-warning {
+  color: #000;
+  background-color: #ffc107;
+  border-color: #ffc107;
+}
+.btn-warning:hover {
+  color: #000;
+  background-color: #ffca2c;
+  border-color: #ffc720;
+}
+.btn-check:focus + .btn-warning, .btn-warning:focus {
+  color: #000;
+  background-color: #ffca2c;
+  border-color: #ffc720;
+  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);
+}
+.btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle {
+  color: #000;
+  background-color: #ffcd39;
+  border-color: #ffc720;
+}
+.btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);
+}
+.btn-warning:disabled, .btn-warning.disabled {
+  color: #000;
+  background-color: #ffc107;
+  border-color: #ffc107;
+}
+
+.btn-danger {
+  color: #fff;
+  background-color: #dc3545;
+  border-color: #dc3545;
+}
+.btn-danger:hover {
+  color: #fff;
+  background-color: #bb2d3b;
+  border-color: #b02a37;
+}
+.btn-check:focus + .btn-danger, .btn-danger:focus {
+  color: #fff;
+  background-color: #bb2d3b;
+  border-color: #b02a37;
+  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);
+}
+.btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle {
+  color: #fff;
+  background-color: #b02a37;
+  border-color: #a52834;
+}
+.btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);
+}
+.btn-danger:disabled, .btn-danger.disabled {
+  color: #fff;
+  background-color: #dc3545;
+  border-color: #dc3545;
+}
+
+.btn-light {
+  color: #000;
+  background-color: #f8f9fa;
+  border-color: #f8f9fa;
+}
+.btn-light:hover {
+  color: #000;
+  background-color: #f9fafb;
+  border-color: #f9fafb;
+}
+.btn-check:focus + .btn-light, .btn-light:focus {
+  color: #000;
+  background-color: #f9fafb;
+  border-color: #f9fafb;
+  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);
+}
+.btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle {
+  color: #000;
+  background-color: #f9fafb;
+  border-color: #f9fafb;
+}
+.btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);
+}
+.btn-light:disabled, .btn-light.disabled {
+  color: #000;
+  background-color: #f8f9fa;
+  border-color: #f8f9fa;
+}
+
+.btn-dark {
+  color: #fff;
+  background-color: #212529;
+  border-color: #212529;
+}
+.btn-dark:hover {
+  color: #fff;
+  background-color: #1c1f23;
+  border-color: #1a1e21;
+}
+.btn-check:focus + .btn-dark, .btn-dark:focus {
+  color: #fff;
+  background-color: #1c1f23;
+  border-color: #1a1e21;
+  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);
+}
+.btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle {
+  color: #fff;
+  background-color: #1a1e21;
+  border-color: #191c1f;
+}
+.btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);
+}
+.btn-dark:disabled, .btn-dark.disabled {
+  color: #fff;
+  background-color: #212529;
+  border-color: #212529;
+}
+
+.btn-outline-primary {
+  color: #0d6efd;
+  border-color: #0d6efd;
+}
+.btn-outline-primary:hover {
+  color: #fff;
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+}
+.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus {
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);
+}
+.btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show {
+  color: #fff;
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+}
+.btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);
+}
+.btn-outline-primary:disabled, .btn-outline-primary.disabled {
+  color: #0d6efd;
+  background-color: transparent;
+}
+
+.btn-outline-secondary {
+  color: #6c757d;
+  border-color: #6c757d;
+}
+.btn-outline-secondary:hover {
+  color: #fff;
+  background-color: #6c757d;
+  border-color: #6c757d;
+}
+.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus {
+  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);
+}
+.btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show {
+  color: #fff;
+  background-color: #6c757d;
+  border-color: #6c757d;
+}
+.btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);
+}
+.btn-outline-secondary:disabled, .btn-outline-secondary.disabled {
+  color: #6c757d;
+  background-color: transparent;
+}
+
+.btn-outline-success {
+  color: #198754;
+  border-color: #198754;
+}
+.btn-outline-success:hover {
+  color: #fff;
+  background-color: #198754;
+  border-color: #198754;
+}
+.btn-check:focus + .btn-outline-success, .btn-outline-success:focus {
+  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);
+}
+.btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show {
+  color: #fff;
+  background-color: #198754;
+  border-color: #198754;
+}
+.btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);
+}
+.btn-outline-success:disabled, .btn-outline-success.disabled {
+  color: #198754;
+  background-color: transparent;
+}
+
+.btn-outline-info {
+  color: #0dcaf0;
+  border-color: #0dcaf0;
+}
+.btn-outline-info:hover {
+  color: #000;
+  background-color: #0dcaf0;
+  border-color: #0dcaf0;
+}
+.btn-check:focus + .btn-outline-info, .btn-outline-info:focus {
+  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);
+}
+.btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show {
+  color: #000;
+  background-color: #0dcaf0;
+  border-color: #0dcaf0;
+}
+.btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);
+}
+.btn-outline-info:disabled, .btn-outline-info.disabled {
+  color: #0dcaf0;
+  background-color: transparent;
+}
+
+.btn-outline-warning {
+  color: #ffc107;
+  border-color: #ffc107;
+}
+.btn-outline-warning:hover {
+  color: #000;
+  background-color: #ffc107;
+  border-color: #ffc107;
+}
+.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus {
+  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);
+}
+.btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show {
+  color: #000;
+  background-color: #ffc107;
+  border-color: #ffc107;
+}
+.btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);
+}
+.btn-outline-warning:disabled, .btn-outline-warning.disabled {
+  color: #ffc107;
+  background-color: transparent;
+}
+
+.btn-outline-danger {
+  color: #dc3545;
+  border-color: #dc3545;
+}
+.btn-outline-danger:hover {
+  color: #fff;
+  background-color: #dc3545;
+  border-color: #dc3545;
+}
+.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus {
+  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);
+}
+.btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show {
+  color: #fff;
+  background-color: #dc3545;
+  border-color: #dc3545;
+}
+.btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);
+}
+.btn-outline-danger:disabled, .btn-outline-danger.disabled {
+  color: #dc3545;
+  background-color: transparent;
+}
+
+.btn-outline-light {
+  color: #f8f9fa;
+  border-color: #f8f9fa;
+}
+.btn-outline-light:hover {
+  color: #000;
+  background-color: #f8f9fa;
+  border-color: #f8f9fa;
+}
+.btn-check:focus + .btn-outline-light, .btn-outline-light:focus {
+  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);
+}
+.btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show {
+  color: #000;
+  background-color: #f8f9fa;
+  border-color: #f8f9fa;
+}
+.btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);
+}
+.btn-outline-light:disabled, .btn-outline-light.disabled {
+  color: #f8f9fa;
+  background-color: transparent;
+}
+
+.btn-outline-dark {
+  color: #212529;
+  border-color: #212529;
+}
+.btn-outline-dark:hover {
+  color: #fff;
+  background-color: #212529;
+  border-color: #212529;
+}
+.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus {
+  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);
+}
+.btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show {
+  color: #fff;
+  background-color: #212529;
+  border-color: #212529;
+}
+.btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);
+}
+.btn-outline-dark:disabled, .btn-outline-dark.disabled {
+  color: #212529;
+  background-color: transparent;
+}
+
+.btn-link {
+  font-weight: 400;
+  color: #0d6efd;
+  text-decoration: underline;
+}
+.btn-link:hover {
+  color: #0a58ca;
+}
+.btn-link:disabled, .btn-link.disabled {
+  color: #6c757d;
+}
+
+.btn-lg, .btn-group-lg > .btn {
+  padding: 0.5rem 1rem;
+  font-size: 1.25rem;
+  border-radius: 0.3rem;
+}
+
+.btn-sm, .btn-group-sm > .btn {
+  padding: 0.25rem 0.5rem;
+  font-size: 0.875rem;
+  border-radius: 0.2rem;
+}
+
+.fade {
+  transition: opacity 0.15s linear;
+}
+@media (prefers-reduced-motion: reduce) {
+  .fade {
+    transition: none;
+  }
+}
+.fade:not(.show) {
+  opacity: 0;
+}
+
+.collapse:not(.show) {
+  display: none;
+}
+
+.collapsing {
+  height: 0;
+  overflow: hidden;
+  transition: height 0.35s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+  .collapsing {
+    transition: none;
+  }
+}
+.collapsing.collapse-horizontal {
+  width: 0;
+  height: auto;
+  transition: width 0.35s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+  .collapsing.collapse-horizontal {
+    transition: none;
+  }
+}
+
+.dropup,
+.dropend,
+.dropdown,
+.dropstart {
+  position: relative;
+}
+
+.dropdown-toggle {
+  white-space: nowrap;
+}
+.dropdown-toggle::after {
+  display: inline-block;
+  margin-left: 0.255em;
+  vertical-align: 0.255em;
+  content: "";
+  border-top: 0.3em solid;
+  border-right: 0.3em solid transparent;
+  border-bottom: 0;
+  border-left: 0.3em solid transparent;
+}
+.dropdown-toggle:empty::after {
+  margin-left: 0;
+}
+
+.dropdown-menu {
+  position: absolute;
+  z-index: 1000;
+  display: none;
+  min-width: 10rem;
+  padding: 0.5rem 0;
+  margin: 0;
+  font-size: 1rem;
+  color: #212529;
+  text-align: left;
+  list-style: none;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 0.25rem;
+}
+.dropdown-menu[data-bs-popper] {
+  top: 100%;
+  left: 0;
+  margin-top: 0.125rem;
+}
+
+.dropdown-menu-start {
+  --bs-position: start;
+}
+.dropdown-menu-start[data-bs-popper] {
+  right: auto;
+  left: 0;
+}
+
+.dropdown-menu-end {
+  --bs-position: end;
+}
+.dropdown-menu-end[data-bs-popper] {
+  right: 0;
+  left: auto;
+}
+
+@media (min-width: 576px) {
+  .dropdown-menu-sm-start {
+    --bs-position: start;
+  }
+  .dropdown-menu-sm-start[data-bs-popper] {
+    right: auto;
+    left: 0;
+  }
+
+  .dropdown-menu-sm-end {
+    --bs-position: end;
+  }
+  .dropdown-menu-sm-end[data-bs-popper] {
+    right: 0;
+    left: auto;
+  }
+}
+@media (min-width: 768px) {
+  .dropdown-menu-md-start {
+    --bs-position: start;
+  }
+  .dropdown-menu-md-start[data-bs-popper] {
+    right: auto;
+    left: 0;
+  }
+
+  .dropdown-menu-md-end {
+    --bs-position: end;
+  }
+  .dropdown-menu-md-end[data-bs-popper] {
+    right: 0;
+    left: auto;
+  }
+}
+@media (min-width: 992px) {
+  .dropdown-menu-lg-start {
+    --bs-position: start;
+  }
+  .dropdown-menu-lg-start[data-bs-popper] {
+    right: auto;
+    left: 0;
+  }
+
+  .dropdown-menu-lg-end {
+    --bs-position: end;
+  }
+  .dropdown-menu-lg-end[data-bs-popper] {
+    right: 0;
+    left: auto;
+  }
+}
+@media (min-width: 1200px) {
+  .dropdown-menu-xl-start {
+    --bs-position: start;
+  }
+  .dropdown-menu-xl-start[data-bs-popper] {
+    right: auto;
+    left: 0;
+  }
+
+  .dropdown-menu-xl-end {
+    --bs-position: end;
+  }
+  .dropdown-menu-xl-end[data-bs-popper] {
+    right: 0;
+    left: auto;
+  }
+}
+@media (min-width: 1400px) {
+  .dropdown-menu-xxl-start {
+    --bs-position: start;
+  }
+  .dropdown-menu-xxl-start[data-bs-popper] {
+    right: auto;
+    left: 0;
+  }
+
+  .dropdown-menu-xxl-end {
+    --bs-position: end;
+  }
+  .dropdown-menu-xxl-end[data-bs-popper] {
+    right: 0;
+    left: auto;
+  }
+}
+.dropup .dropdown-menu[data-bs-popper] {
+  top: auto;
+  bottom: 100%;
+  margin-top: 0;
+  margin-bottom: 0.125rem;
+}
+.dropup .dropdown-toggle::after {
+  display: inline-block;
+  margin-left: 0.255em;
+  vertical-align: 0.255em;
+  content: "";
+  border-top: 0;
+  border-right: 0.3em solid transparent;
+  border-bottom: 0.3em solid;
+  border-left: 0.3em solid transparent;
+}
+.dropup .dropdown-toggle:empty::after {
+  margin-left: 0;
+}
+
+.dropend .dropdown-menu[data-bs-popper] {
+  top: 0;
+  right: auto;
+  left: 100%;
+  margin-top: 0;
+  margin-left: 0.125rem;
+}
+.dropend .dropdown-toggle::after {
+  display: inline-block;
+  margin-left: 0.255em;
+  vertical-align: 0.255em;
+  content: "";
+  border-top: 0.3em solid transparent;
+  border-right: 0;
+  border-bottom: 0.3em solid transparent;
+  border-left: 0.3em solid;
+}
+.dropend .dropdown-toggle:empty::after {
+  margin-left: 0;
+}
+.dropend .dropdown-toggle::after {
+  vertical-align: 0;
+}
+
+.dropstart .dropdown-menu[data-bs-popper] {
+  top: 0;
+  right: 100%;
+  left: auto;
+  margin-top: 0;
+  margin-right: 0.125rem;
+}
+.dropstart .dropdown-toggle::after {
+  display: inline-block;
+  margin-left: 0.255em;
+  vertical-align: 0.255em;
+  content: "";
+}
+.dropstart .dropdown-toggle::after {
+  display: none;
+}
+.dropstart .dropdown-toggle::before {
+  display: inline-block;
+  margin-right: 0.255em;
+  vertical-align: 0.255em;
+  content: "";
+  border-top: 0.3em solid transparent;
+  border-right: 0.3em solid;
+  border-bottom: 0.3em solid transparent;
+}
+.dropstart .dropdown-toggle:empty::after {
+  margin-left: 0;
+}
+.dropstart .dropdown-toggle::before {
+  vertical-align: 0;
+}
+
+.dropdown-divider {
+  height: 0;
+  margin: 0.5rem 0;
+  overflow: hidden;
+  border-top: 1px solid rgba(0, 0, 0, 0.15);
+}
+
+.dropdown-item {
+  display: block;
+  width: 100%;
+  padding: 0.25rem 1rem;
+  clear: both;
+  font-weight: 400;
+  color: #212529;
+  text-align: inherit;
+  text-decoration: none;
+  white-space: nowrap;
+  background-color: transparent;
+  border: 0;
+}
+.dropdown-item:hover, .dropdown-item:focus {
+  color: #1e2125;
+  background-color: #e9ecef;
+}
+.dropdown-item.active, .dropdown-item:active {
+  color: #fff;
+  text-decoration: none;
+  background-color: #0d6efd;
+}
+.dropdown-item.disabled, .dropdown-item:disabled {
+  color: #adb5bd;
+  pointer-events: none;
+  background-color: transparent;
+}
+
+.dropdown-menu.show {
+  display: block;
+}
+
+.dropdown-header {
+  display: block;
+  padding: 0.5rem 1rem;
+  margin-bottom: 0;
+  font-size: 0.875rem;
+  color: #6c757d;
+  white-space: nowrap;
+}
+
+.dropdown-item-text {
+  display: block;
+  padding: 0.25rem 1rem;
+  color: #212529;
+}
+
+.dropdown-menu-dark {
+  color: #dee2e6;
+  background-color: #343a40;
+  border-color: rgba(0, 0, 0, 0.15);
+}
+.dropdown-menu-dark .dropdown-item {
+  color: #dee2e6;
+}
+.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus {
+  color: #fff;
+  background-color: rgba(255, 255, 255, 0.15);
+}
+.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active {
+  color: #fff;
+  background-color: #0d6efd;
+}
+.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled {
+  color: #adb5bd;
+}
+.dropdown-menu-dark .dropdown-divider {
+  border-color: rgba(0, 0, 0, 0.15);
+}
+.dropdown-menu-dark .dropdown-item-text {
+  color: #dee2e6;
+}
+.dropdown-menu-dark .dropdown-header {
+  color: #adb5bd;
+}
+
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-flex;
+  vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+  position: relative;
+  flex: 1 1 auto;
+}
+.btn-group > .btn-check:checked + .btn,
+.btn-group > .btn-check:focus + .btn,
+.btn-group > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn-check:checked + .btn,
+.btn-group-vertical > .btn-check:focus + .btn,
+.btn-group-vertical > .btn:hover,
+.btn-group-vertical > .btn:focus,
+.btn-group-vertical > .btn:active,
+.btn-group-vertical > .btn.active {
+  z-index: 1;
+}
+
+.btn-toolbar {
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: flex-start;
+}
+.btn-toolbar .input-group {
+  width: auto;
+}
+
+.btn-group > .btn:not(:first-child),
+.btn-group > .btn-group:not(:first-child) {
+  margin-left: -1px;
+}
+.btn-group > .btn:not(:last-child):not(.dropdown-toggle),
+.btn-group > .btn-group:not(:last-child) > .btn {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.btn-group > .btn:nth-child(n+3),
+.btn-group > :not(.btn-check) + .btn,
+.btn-group > .btn-group:not(:first-child) > .btn {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+
+.dropdown-toggle-split {
+  padding-right: 0.5625rem;
+  padding-left: 0.5625rem;
+}
+.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {
+  margin-left: 0;
+}
+.dropstart .dropdown-toggle-split::before {
+  margin-right: 0;
+}
+
+.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {
+  padding-right: 0.375rem;
+  padding-left: 0.375rem;
+}
+
+.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {
+  padding-right: 0.75rem;
+  padding-left: 0.75rem;
+}
+
+.btn-group-vertical {
+  flex-direction: column;
+  align-items: flex-start;
+  justify-content: center;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group {
+  width: 100%;
+}
+.btn-group-vertical > .btn:not(:first-child),
+.btn-group-vertical > .btn-group:not(:first-child) {
+  margin-top: -1px;
+}
+.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
+.btn-group-vertical > .btn-group:not(:last-child) > .btn {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn ~ .btn,
+.btn-group-vertical > .btn-group:not(:first-child) > .btn {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+
+.nav {
+  display: flex;
+  flex-wrap: wrap;
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+
+.nav-link {
+  display: block;
+  padding: 0.5rem 1rem;
+  color: #0d6efd;
+  text-decoration: none;
+  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .nav-link {
+    transition: none;
+  }
+}
+.nav-link:hover, .nav-link:focus {
+  color: #0a58ca;
+}
+.nav-link.disabled {
+  color: #6c757d;
+  pointer-events: none;
+  cursor: default;
+}
+
+.nav-tabs {
+  border-bottom: 1px solid #dee2e6;
+}
+.nav-tabs .nav-link {
+  margin-bottom: -1px;
+  background: none;
+  border: 1px solid transparent;
+  border-top-left-radius: 0.25rem;
+  border-top-right-radius: 0.25rem;
+}
+.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {
+  border-color: #e9ecef #e9ecef #dee2e6;
+  isolation: isolate;
+}
+.nav-tabs .nav-link.disabled {
+  color: #6c757d;
+  background-color: transparent;
+  border-color: transparent;
+}
+.nav-tabs .nav-link.active,
+.nav-tabs .nav-item.show .nav-link {
+  color: #495057;
+  background-color: #fff;
+  border-color: #dee2e6 #dee2e6 #fff;
+}
+.nav-tabs .dropdown-menu {
+  margin-top: -1px;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+
+.nav-pills .nav-link {
+  background: none;
+  border: 0;
+  border-radius: 0.25rem;
+}
+.nav-pills .nav-link.active,
+.nav-pills .show > .nav-link {
+  color: #fff;
+  background-color: #0d6efd;
+}
+
+.nav-fill > .nav-link,
+.nav-fill .nav-item {
+  flex: 1 1 auto;
+  text-align: center;
+}
+
+.nav-justified > .nav-link,
+.nav-justified .nav-item {
+  flex-basis: 0;
+  flex-grow: 1;
+  text-align: center;
+}
+
+.nav-fill .nav-item .nav-link,
+.nav-justified .nav-item .nav-link {
+  width: 100%;
+}
+
+.tab-content > .tab-pane {
+  display: none;
+}
+.tab-content > .active {
+  display: block;
+}
+
+.navbar {
+  position: relative;
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+  justify-content: space-between;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+}
+.navbar > .container,
+.navbar > .container-fluid,
+.navbar > .container-sm,
+.navbar > .container-md,
+.navbar > .container-lg,
+.navbar > .container-xl,
+.navbar > .container-xxl {
+  display: flex;
+  flex-wrap: inherit;
+  align-items: center;
+  justify-content: space-between;
+}
+.navbar-brand {
+  padding-top: 0.3125rem;
+  padding-bottom: 0.3125rem;
+  margin-right: 1rem;
+  font-size: 1.25rem;
+  text-decoration: none;
+  white-space: nowrap;
+}
+.navbar-nav {
+  display: flex;
+  flex-direction: column;
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+.navbar-nav .nav-link {
+  padding-right: 0;
+  padding-left: 0;
+}
+.navbar-nav .dropdown-menu {
+  position: static;
+}
+
+.navbar-text {
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+}
+
+.navbar-collapse {
+  flex-basis: 100%;
+  flex-grow: 1;
+  align-items: center;
+}
+
+.navbar-toggler {
+  padding: 0.25rem 0.75rem;
+  font-size: 1.25rem;
+  line-height: 1;
+  background-color: transparent;
+  border: 1px solid transparent;
+  border-radius: 0.25rem;
+  transition: box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .navbar-toggler {
+    transition: none;
+  }
+}
+.navbar-toggler:hover {
+  text-decoration: none;
+}
+.navbar-toggler:focus {
+  text-decoration: none;
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem;
+}
+
+.navbar-toggler-icon {
+  display: inline-block;
+  width: 1.5em;
+  height: 1.5em;
+  vertical-align: middle;
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 100%;
+}
+
+.navbar-nav-scroll {
+  max-height: var(--bs-scroll-height, 75vh);
+  overflow-y: auto;
+}
+
+@media (min-width: 576px) {
+  .navbar-expand-sm {
+    flex-wrap: nowrap;
+    justify-content: flex-start;
+  }
+  .navbar-expand-sm .navbar-nav {
+    flex-direction: row;
+  }
+  .navbar-expand-sm .navbar-nav .dropdown-menu {
+    position: absolute;
+  }
+  .navbar-expand-sm .navbar-nav .nav-link {
+    padding-right: 0.5rem;
+    padding-left: 0.5rem;
+  }
+  .navbar-expand-sm .navbar-nav-scroll {
+    overflow: visible;
+  }
+  .navbar-expand-sm .navbar-collapse {
+    display: flex !important;
+    flex-basis: auto;
+  }
+  .navbar-expand-sm .navbar-toggler {
+    display: none;
+  }
+  .navbar-expand-sm .offcanvas-header {
+    display: none;
+  }
+  .navbar-expand-sm .offcanvas {
+    position: inherit;
+    bottom: 0;
+    z-index: 1000;
+    flex-grow: 1;
+    visibility: visible !important;
+    background-color: transparent;
+    border-right: 0;
+    border-left: 0;
+    transition: none;
+    transform: none;
+  }
+  .navbar-expand-sm .offcanvas-top,
+.navbar-expand-sm .offcanvas-bottom {
+    height: auto;
+    border-top: 0;
+    border-bottom: 0;
+  }
+  .navbar-expand-sm .offcanvas-body {
+    display: flex;
+    flex-grow: 0;
+    padding: 0;
+    overflow-y: visible;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-expand-md {
+    flex-wrap: nowrap;
+    justify-content: flex-start;
+  }
+  .navbar-expand-md .navbar-nav {
+    flex-direction: row;
+  }
+  .navbar-expand-md .navbar-nav .dropdown-menu {
+    position: absolute;
+  }
+  .navbar-expand-md .navbar-nav .nav-link {
+    padding-right: 0.5rem;
+    padding-left: 0.5rem;
+  }
+  .navbar-expand-md .navbar-nav-scroll {
+    overflow: visible;
+  }
+  .navbar-expand-md .navbar-collapse {
+    display: flex !important;
+    flex-basis: auto;
+  }
+  .navbar-expand-md .navbar-toggler {
+    display: none;
+  }
+  .navbar-expand-md .offcanvas-header {
+    display: none;
+  }
+  .navbar-expand-md .offcanvas {
+    position: inherit;
+    bottom: 0;
+    z-index: 1000;
+    flex-grow: 1;
+    visibility: visible !important;
+    background-color: transparent;
+    border-right: 0;
+    border-left: 0;
+    transition: none;
+    transform: none;
+  }
+  .navbar-expand-md .offcanvas-top,
+.navbar-expand-md .offcanvas-bottom {
+    height: auto;
+    border-top: 0;
+    border-bottom: 0;
+  }
+  .navbar-expand-md .offcanvas-body {
+    display: flex;
+    flex-grow: 0;
+    padding: 0;
+    overflow-y: visible;
+  }
+}
+@media (min-width: 992px) {
+  .navbar-expand-lg {
+    flex-wrap: nowrap;
+    justify-content: flex-start;
+  }
+  .navbar-expand-lg .navbar-nav {
+    flex-direction: row;
+  }
+  .navbar-expand-lg .navbar-nav .dropdown-menu {
+    position: absolute;
+  }
+  .navbar-expand-lg .navbar-nav .nav-link {
+    padding-right: 0.5rem;
+    padding-left: 0.5rem;
+  }
+  .navbar-expand-lg .navbar-nav-scroll {
+    overflow: visible;
+  }
+  .navbar-expand-lg .navbar-collapse {
+    display: flex !important;
+    flex-basis: auto;
+  }
+  .navbar-expand-lg .navbar-toggler {
+    display: none;
+  }
+  .navbar-expand-lg .offcanvas-header {
+    display: none;
+  }
+  .navbar-expand-lg .offcanvas {
+    position: inherit;
+    bottom: 0;
+    z-index: 1000;
+    flex-grow: 1;
+    visibility: visible !important;
+    background-color: transparent;
+    border-right: 0;
+    border-left: 0;
+    transition: none;
+    transform: none;
+  }
+  .navbar-expand-lg .offcanvas-top,
+.navbar-expand-lg .offcanvas-bottom {
+    height: auto;
+    border-top: 0;
+    border-bottom: 0;
+  }
+  .navbar-expand-lg .offcanvas-body {
+    display: flex;
+    flex-grow: 0;
+    padding: 0;
+    overflow-y: visible;
+  }
+}
+@media (min-width: 1200px) {
+  .navbar-expand-xl {
+    flex-wrap: nowrap;
+    justify-content: flex-start;
+  }
+  .navbar-expand-xl .navbar-nav {
+    flex-direction: row;
+  }
+  .navbar-expand-xl .navbar-nav .dropdown-menu {
+    position: absolute;
+  }
+  .navbar-expand-xl .navbar-nav .nav-link {
+    padding-right: 0.5rem;
+    padding-left: 0.5rem;
+  }
+  .navbar-expand-xl .navbar-nav-scroll {
+    overflow: visible;
+  }
+  .navbar-expand-xl .navbar-collapse {
+    display: flex !important;
+    flex-basis: auto;
+  }
+  .navbar-expand-xl .navbar-toggler {
+    display: none;
+  }
+  .navbar-expand-xl .offcanvas-header {
+    display: none;
+  }
+  .navbar-expand-xl .offcanvas {
+    position: inherit;
+    bottom: 0;
+    z-index: 1000;
+    flex-grow: 1;
+    visibility: visible !important;
+    background-color: transparent;
+    border-right: 0;
+    border-left: 0;
+    transition: none;
+    transform: none;
+  }
+  .navbar-expand-xl .offcanvas-top,
+.navbar-expand-xl .offcanvas-bottom {
+    height: auto;
+    border-top: 0;
+    border-bottom: 0;
+  }
+  .navbar-expand-xl .offcanvas-body {
+    display: flex;
+    flex-grow: 0;
+    padding: 0;
+    overflow-y: visible;
+  }
+}
+@media (min-width: 1400px) {
+  .navbar-expand-xxl {
+    flex-wrap: nowrap;
+    justify-content: flex-start;
+  }
+  .navbar-expand-xxl .navbar-nav {
+    flex-direction: row;
+  }
+  .navbar-expand-xxl .navbar-nav .dropdown-menu {
+    position: absolute;
+  }
+  .navbar-expand-xxl .navbar-nav .nav-link {
+    padding-right: 0.5rem;
+    padding-left: 0.5rem;
+  }
+  .navbar-expand-xxl .navbar-nav-scroll {
+    overflow: visible;
+  }
+  .navbar-expand-xxl .navbar-collapse {
+    display: flex !important;
+    flex-basis: auto;
+  }
+  .navbar-expand-xxl .navbar-toggler {
+    display: none;
+  }
+  .navbar-expand-xxl .offcanvas-header {
+    display: none;
+  }
+  .navbar-expand-xxl .offcanvas {
+    position: inherit;
+    bottom: 0;
+    z-index: 1000;
+    flex-grow: 1;
+    visibility: visible !important;
+    background-color: transparent;
+    border-right: 0;
+    border-left: 0;
+    transition: none;
+    transform: none;
+  }
+  .navbar-expand-xxl .offcanvas-top,
+.navbar-expand-xxl .offcanvas-bottom {
+    height: auto;
+    border-top: 0;
+    border-bottom: 0;
+  }
+  .navbar-expand-xxl .offcanvas-body {
+    display: flex;
+    flex-grow: 0;
+    padding: 0;
+    overflow-y: visible;
+  }
+}
+.navbar-expand {
+  flex-wrap: nowrap;
+  justify-content: flex-start;
+}
+.navbar-expand .navbar-nav {
+  flex-direction: row;
+}
+.navbar-expand .navbar-nav .dropdown-menu {
+  position: absolute;
+}
+.navbar-expand .navbar-nav .nav-link {
+  padding-right: 0.5rem;
+  padding-left: 0.5rem;
+}
+.navbar-expand .navbar-nav-scroll {
+  overflow: visible;
+}
+.navbar-expand .navbar-collapse {
+  display: flex !important;
+  flex-basis: auto;
+}
+.navbar-expand .navbar-toggler {
+  display: none;
+}
+.navbar-expand .offcanvas-header {
+  display: none;
+}
+.navbar-expand .offcanvas {
+  position: inherit;
+  bottom: 0;
+  z-index: 1000;
+  flex-grow: 1;
+  visibility: visible !important;
+  background-color: transparent;
+  border-right: 0;
+  border-left: 0;
+  transition: none;
+  transform: none;
+}
+.navbar-expand .offcanvas-top,
+.navbar-expand .offcanvas-bottom {
+  height: auto;
+  border-top: 0;
+  border-bottom: 0;
+}
+.navbar-expand .offcanvas-body {
+  display: flex;
+  flex-grow: 0;
+  padding: 0;
+  overflow-y: visible;
+}
+
+.navbar-light .navbar-brand {
+  color: rgba(0, 0, 0, 0.9);
+}
+.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {
+  color: rgba(0, 0, 0, 0.9);
+}
+.navbar-light .navbar-nav .nav-link {
+  color: rgba(0, 0, 0, 0.55);
+}
+.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {
+  color: rgba(0, 0, 0, 0.7);
+}
+.navbar-light .navbar-nav .nav-link.disabled {
+  color: rgba(0, 0, 0, 0.3);
+}
+.navbar-light .navbar-nav .show > .nav-link,
+.navbar-light .navbar-nav .nav-link.active {
+  color: rgba(0, 0, 0, 0.9);
+}
+.navbar-light .navbar-toggler {
+  color: rgba(0, 0, 0, 0.55);
+  border-color: rgba(0, 0, 0, 0.1);
+}
+.navbar-light .navbar-toggler-icon {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+}
+.navbar-light .navbar-text {
+  color: rgba(0, 0, 0, 0.55);
+}
+.navbar-light .navbar-text a,
+.navbar-light .navbar-text a:hover,
+.navbar-light .navbar-text a:focus {
+  color: rgba(0, 0, 0, 0.9);
+}
+
+.navbar-dark .navbar-brand {
+  color: #fff;
+}
+.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {
+  color: #fff;
+}
+.navbar-dark .navbar-nav .nav-link {
+  color: rgba(255, 255, 255, 0.55);
+}
+.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {
+  color: rgba(255, 255, 255, 0.75);
+}
+.navbar-dark .navbar-nav .nav-link.disabled {
+  color: rgba(255, 255, 255, 0.25);
+}
+.navbar-dark .navbar-nav .show > .nav-link,
+.navbar-dark .navbar-nav .nav-link.active {
+  color: #fff;
+}
+.navbar-dark .navbar-toggler {
+  color: rgba(255, 255, 255, 0.55);
+  border-color: rgba(255, 255, 255, 0.1);
+}
+.navbar-dark .navbar-toggler-icon {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+}
+.navbar-dark .navbar-text {
+  color: rgba(255, 255, 255, 0.55);
+}
+.navbar-dark .navbar-text a,
+.navbar-dark .navbar-text a:hover,
+.navbar-dark .navbar-text a:focus {
+  color: #fff;
+}
+
+.card {
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  min-width: 0;
+  word-wrap: break-word;
+  background-color: #fff;
+  background-clip: border-box;
+  border: 1px solid rgba(0, 0, 0, 0.125);
+  border-radius: 0.25rem;
+}
+.card > hr {
+  margin-right: 0;
+  margin-left: 0;
+}
+.card > .list-group {
+  border-top: inherit;
+  border-bottom: inherit;
+}
+.card > .list-group:first-child {
+  border-top-width: 0;
+  border-top-left-radius: calc(0.25rem - 1px);
+  border-top-right-radius: calc(0.25rem - 1px);
+}
+.card > .list-group:last-child {
+  border-bottom-width: 0;
+  border-bottom-right-radius: calc(0.25rem - 1px);
+  border-bottom-left-radius: calc(0.25rem - 1px);
+}
+.card > .card-header + .list-group,
+.card > .list-group + .card-footer {
+  border-top: 0;
+}
+
+.card-body {
+  flex: 1 1 auto;
+  padding: 1rem 1rem;
+}
+
+.card-title {
+  margin-bottom: 0.5rem;
+}
+
+.card-subtitle {
+  margin-top: -0.25rem;
+  margin-bottom: 0;
+}
+
+.card-text:last-child {
+  margin-bottom: 0;
+}
+
+.card-link + .card-link {
+  margin-left: 1rem;
+}
+
+.card-header {
+  padding: 0.5rem 1rem;
+  margin-bottom: 0;
+  background-color: rgba(0, 0, 0, 0.03);
+  border-bottom: 1px solid rgba(0, 0, 0, 0.125);
+}
+.card-header:first-child {
+  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
+}
+
+.card-footer {
+  padding: 0.5rem 1rem;
+  background-color: rgba(0, 0, 0, 0.03);
+  border-top: 1px solid rgba(0, 0, 0, 0.125);
+}
+.card-footer:last-child {
+  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);
+}
+
+.card-header-tabs {
+  margin-right: -0.5rem;
+  margin-bottom: -0.5rem;
+  margin-left: -0.5rem;
+  border-bottom: 0;
+}
+
+.card-header-pills {
+  margin-right: -0.5rem;
+  margin-left: -0.5rem;
+}
+
+.card-img-overlay {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  padding: 1rem;
+  border-radius: calc(0.25rem - 1px);
+}
+
+.card-img,
+.card-img-top,
+.card-img-bottom {
+  width: 100%;
+}
+
+.card-img,
+.card-img-top {
+  border-top-left-radius: calc(0.25rem - 1px);
+  border-top-right-radius: calc(0.25rem - 1px);
+}
+
+.card-img,
+.card-img-bottom {
+  border-bottom-right-radius: calc(0.25rem - 1px);
+  border-bottom-left-radius: calc(0.25rem - 1px);
+}
+
+.card-group > .card {
+  margin-bottom: 0.75rem;
+}
+@media (min-width: 576px) {
+  .card-group {
+    display: flex;
+    flex-flow: row wrap;
+  }
+  .card-group > .card {
+    flex: 1 0 0%;
+    margin-bottom: 0;
+  }
+  .card-group > .card + .card {
+    margin-left: 0;
+    border-left: 0;
+  }
+  .card-group > .card:not(:last-child) {
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+  }
+  .card-group > .card:not(:last-child) .card-img-top,
+.card-group > .card:not(:last-child) .card-header {
+    border-top-right-radius: 0;
+  }
+  .card-group > .card:not(:last-child) .card-img-bottom,
+.card-group > .card:not(:last-child) .card-footer {
+    border-bottom-right-radius: 0;
+  }
+  .card-group > .card:not(:first-child) {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+  }
+  .card-group > .card:not(:first-child) .card-img-top,
+.card-group > .card:not(:first-child) .card-header {
+    border-top-left-radius: 0;
+  }
+  .card-group > .card:not(:first-child) .card-img-bottom,
+.card-group > .card:not(:first-child) .card-footer {
+    border-bottom-left-radius: 0;
+  }
+}
+
+.accordion-button {
+  position: relative;
+  display: flex;
+  align-items: center;
+  width: 100%;
+  padding: 1rem 1.25rem;
+  font-size: 1rem;
+  color: #212529;
+  text-align: left;
+  background-color: #fff;
+  border: 0;
+  border-radius: 0;
+  overflow-anchor: none;
+  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+  .accordion-button {
+    transition: none;
+  }
+}
+.accordion-button:not(.collapsed) {
+  color: #0c63e4;
+  background-color: #e7f1ff;
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125);
+}
+.accordion-button:not(.collapsed)::after {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+  transform: rotate(-180deg);
+}
+.accordion-button::after {
+  flex-shrink: 0;
+  width: 1.25rem;
+  height: 1.25rem;
+  margin-left: auto;
+  content: "";
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-size: 1.25rem;
+  transition: transform 0.2s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .accordion-button::after {
+    transition: none;
+  }
+}
+.accordion-button:hover {
+  z-index: 2;
+}
+.accordion-button:focus {
+  z-index: 3;
+  border-color: #86b7fe;
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+
+.accordion-header {
+  margin-bottom: 0;
+}
+
+.accordion-item {
+  background-color: #fff;
+  border: 1px solid rgba(0, 0, 0, 0.125);
+}
+.accordion-item:first-of-type {
+  border-top-left-radius: 0.25rem;
+  border-top-right-radius: 0.25rem;
+}
+.accordion-item:first-of-type .accordion-button {
+  border-top-left-radius: calc(0.25rem - 1px);
+  border-top-right-radius: calc(0.25rem - 1px);
+}
+.accordion-item:not(:first-of-type) {
+  border-top: 0;
+}
+.accordion-item:last-of-type {
+  border-bottom-right-radius: 0.25rem;
+  border-bottom-left-radius: 0.25rem;
+}
+.accordion-item:last-of-type .accordion-button.collapsed {
+  border-bottom-right-radius: calc(0.25rem - 1px);
+  border-bottom-left-radius: calc(0.25rem - 1px);
+}
+.accordion-item:last-of-type .accordion-collapse {
+  border-bottom-right-radius: 0.25rem;
+  border-bottom-left-radius: 0.25rem;
+}
+
+.accordion-body {
+  padding: 1rem 1.25rem;
+}
+
+.accordion-flush .accordion-collapse {
+  border-width: 0;
+}
+.accordion-flush .accordion-item {
+  border-right: 0;
+  border-left: 0;
+  border-radius: 0;
+}
+.accordion-flush .accordion-item:first-child {
+  border-top: 0;
+}
+.accordion-flush .accordion-item:last-child {
+  border-bottom: 0;
+}
+.accordion-flush .accordion-item .accordion-button {
+  border-radius: 0;
+}
+
+.breadcrumb {
+  display: flex;
+  flex-wrap: wrap;
+  padding: 0 0;
+  margin-bottom: 1rem;
+  list-style: none;
+}
+
+.breadcrumb-item + .breadcrumb-item {
+  padding-left: 0.5rem;
+}
+.breadcrumb-item + .breadcrumb-item::before {
+  float: left;
+  padding-right: 0.5rem;
+  color: #6c757d;
+  content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */;
+}
+.breadcrumb-item.active {
+  color: #6c757d;
+}
+
+.pagination {
+  display: flex;
+  padding-left: 0;
+  list-style: none;
+}
+
+.page-link {
+  position: relative;
+  display: block;
+  color: #0d6efd;
+  text-decoration: none;
+  background-color: #fff;
+  border: 1px solid #dee2e6;
+  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .page-link {
+    transition: none;
+  }
+}
+.page-link:hover {
+  z-index: 2;
+  color: #0a58ca;
+  background-color: #e9ecef;
+  border-color: #dee2e6;
+}
+.page-link:focus {
+  z-index: 3;
+  color: #0a58ca;
+  background-color: #e9ecef;
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+
+.page-item:not(:first-child) .page-link {
+  margin-left: -1px;
+}
+.page-item.active .page-link {
+  z-index: 3;
+  color: #fff;
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+}
+.page-item.disabled .page-link {
+  color: #6c757d;
+  pointer-events: none;
+  background-color: #fff;
+  border-color: #dee2e6;
+}
+
+.page-link {
+  padding: 0.375rem 0.75rem;
+}
+
+.page-item:first-child .page-link {
+  border-top-left-radius: 0.25rem;
+  border-bottom-left-radius: 0.25rem;
+}
+.page-item:last-child .page-link {
+  border-top-right-radius: 0.25rem;
+  border-bottom-right-radius: 0.25rem;
+}
+
+.pagination-lg .page-link {
+  padding: 0.75rem 1.5rem;
+  font-size: 1.25rem;
+}
+.pagination-lg .page-item:first-child .page-link {
+  border-top-left-radius: 0.3rem;
+  border-bottom-left-radius: 0.3rem;
+}
+.pagination-lg .page-item:last-child .page-link {
+  border-top-right-radius: 0.3rem;
+  border-bottom-right-radius: 0.3rem;
+}
+
+.pagination-sm .page-link {
+  padding: 0.25rem 0.5rem;
+  font-size: 0.875rem;
+}
+.pagination-sm .page-item:first-child .page-link {
+  border-top-left-radius: 0.2rem;
+  border-bottom-left-radius: 0.2rem;
+}
+.pagination-sm .page-item:last-child .page-link {
+  border-top-right-radius: 0.2rem;
+  border-bottom-right-radius: 0.2rem;
+}
+
+.badge {
+  display: inline-block;
+  padding: 0.35em 0.65em;
+  font-size: 0.75em;
+  font-weight: 700;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: 0.25rem;
+}
+.badge:empty {
+  display: none;
+}
+
+.btn .badge {
+  position: relative;
+  top: -1px;
+}
+
+.alert {
+  position: relative;
+  padding: 1rem 1rem;
+  margin-bottom: 1rem;
+  border: 1px solid transparent;
+  border-radius: 0.25rem;
+}
+
+.alert-heading {
+  color: inherit;
+}
+
+.alert-link {
+  font-weight: 700;
+}
+
+.alert-dismissible {
+  padding-right: 3rem;
+}
+.alert-dismissible .btn-close {
+  position: absolute;
+  top: 0;
+  right: 0;
+  z-index: 2;
+  padding: 1.25rem 1rem;
+}
+
+.alert-primary {
+  color: #084298;
+  background-color: #cfe2ff;
+  border-color: #b6d4fe;
+}
+.alert-primary .alert-link {
+  color: #06357a;
+}
+
+.alert-secondary {
+  color: #41464b;
+  background-color: #e2e3e5;
+  border-color: #d3d6d8;
+}
+.alert-secondary .alert-link {
+  color: #34383c;
+}
+
+.alert-success {
+  color: #0f5132;
+  background-color: #d1e7dd;
+  border-color: #badbcc;
+}
+.alert-success .alert-link {
+  color: #0c4128;
+}
+
+.alert-info {
+  color: #055160;
+  background-color: #cff4fc;
+  border-color: #b6effb;
+}
+.alert-info .alert-link {
+  color: #04414d;
+}
+
+.alert-warning {
+  color: #664d03;
+  background-color: #fff3cd;
+  border-color: #ffecb5;
+}
+.alert-warning .alert-link {
+  color: #523e02;
+}
+
+.alert-danger {
+  color: #842029;
+  background-color: #f8d7da;
+  border-color: #f5c2c7;
+}
+.alert-danger .alert-link {
+  color: #6a1a21;
+}
+
+.alert-light {
+  color: #636464;
+  background-color: #fefefe;
+  border-color: #fdfdfe;
+}
+.alert-light .alert-link {
+  color: #4f5050;
+}
+
+.alert-dark {
+  color: #141619;
+  background-color: #d3d3d4;
+  border-color: #bcbebf;
+}
+.alert-dark .alert-link {
+  color: #101214;
+}
+
+@-webkit-keyframes progress-bar-stripes {
+  0% {
+    background-position-x: 1rem;
+  }
+}
+
+@keyframes progress-bar-stripes {
+  0% {
+    background-position-x: 1rem;
+  }
+}
+.progress {
+  display: flex;
+  height: 1rem;
+  overflow: hidden;
+  font-size: 0.75rem;
+  background-color: #e9ecef;
+  border-radius: 0.25rem;
+}
+
+.progress-bar {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  overflow: hidden;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  background-color: #0d6efd;
+  transition: width 0.6s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+  .progress-bar {
+    transition: none;
+  }
+}
+
+.progress-bar-striped {
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-size: 1rem 1rem;
+}
+
+.progress-bar-animated {
+  -webkit-animation: 1s linear infinite progress-bar-stripes;
+  animation: 1s linear infinite progress-bar-stripes;
+}
+@media (prefers-reduced-motion: reduce) {
+  .progress-bar-animated {
+    -webkit-animation: none;
+    animation: none;
+  }
+}
+
+.list-group {
+  display: flex;
+  flex-direction: column;
+  padding-left: 0;
+  margin-bottom: 0;
+  border-radius: 0.25rem;
+}
+
+.list-group-numbered {
+  list-style-type: none;
+  counter-reset: section;
+}
+.list-group-numbered > li::before {
+  content: counters(section, ".") ". ";
+  counter-increment: section;
+}
+
+.list-group-item-action {
+  width: 100%;
+  color: #495057;
+  text-align: inherit;
+}
+.list-group-item-action:hover, .list-group-item-action:focus {
+  z-index: 1;
+  color: #495057;
+  text-decoration: none;
+  background-color: #f8f9fa;
+}
+.list-group-item-action:active {
+  color: #212529;
+  background-color: #e9ecef;
+}
+
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: 0.5rem 1rem;
+  color: #212529;
+  text-decoration: none;
+  background-color: #fff;
+  border: 1px solid rgba(0, 0, 0, 0.125);
+}
+.list-group-item:first-child {
+  border-top-left-radius: inherit;
+  border-top-right-radius: inherit;
+}
+.list-group-item:last-child {
+  border-bottom-right-radius: inherit;
+  border-bottom-left-radius: inherit;
+}
+.list-group-item.disabled, .list-group-item:disabled {
+  color: #6c757d;
+  pointer-events: none;
+  background-color: #fff;
+}
+.list-group-item.active {
+  z-index: 2;
+  color: #fff;
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+}
+.list-group-item + .list-group-item {
+  border-top-width: 0;
+}
+.list-group-item + .list-group-item.active {
+  margin-top: -1px;
+  border-top-width: 1px;
+}
+
+.list-group-horizontal {
+  flex-direction: row;
+}
+.list-group-horizontal > .list-group-item:first-child {
+  border-bottom-left-radius: 0.25rem;
+  border-top-right-radius: 0;
+}
+.list-group-horizontal > .list-group-item:last-child {
+  border-top-right-radius: 0.25rem;
+  border-bottom-left-radius: 0;
+}
+.list-group-horizontal > .list-group-item.active {
+  margin-top: 0;
+}
+.list-group-horizontal > .list-group-item + .list-group-item {
+  border-top-width: 1px;
+  border-left-width: 0;
+}
+.list-group-horizontal > .list-group-item + .list-group-item.active {
+  margin-left: -1px;
+  border-left-width: 1px;
+}
+
+@media (min-width: 576px) {
+  .list-group-horizontal-sm {
+    flex-direction: row;
+  }
+  .list-group-horizontal-sm > .list-group-item:first-child {
+    border-bottom-left-radius: 0.25rem;
+    border-top-right-radius: 0;
+  }
+  .list-group-horizontal-sm > .list-group-item:last-child {
+    border-top-right-radius: 0.25rem;
+    border-bottom-left-radius: 0;
+  }
+  .list-group-horizontal-sm > .list-group-item.active {
+    margin-top: 0;
+  }
+  .list-group-horizontal-sm > .list-group-item + .list-group-item {
+    border-top-width: 1px;
+    border-left-width: 0;
+  }
+  .list-group-horizontal-sm > .list-group-item + .list-group-item.active {
+    margin-left: -1px;
+    border-left-width: 1px;
+  }
+}
+@media (min-width: 768px) {
+  .list-group-horizontal-md {
+    flex-direction: row;
+  }
+  .list-group-horizontal-md > .list-group-item:first-child {
+    border-bottom-left-radius: 0.25rem;
+    border-top-right-radius: 0;
+  }
+  .list-group-horizontal-md > .list-group-item:last-child {
+    border-top-right-radius: 0.25rem;
+    border-bottom-left-radius: 0;
+  }
+  .list-group-horizontal-md > .list-group-item.active {
+    margin-top: 0;
+  }
+  .list-group-horizontal-md > .list-group-item + .list-group-item {
+    border-top-width: 1px;
+    border-left-width: 0;
+  }
+  .list-group-horizontal-md > .list-group-item + .list-group-item.active {
+    margin-left: -1px;
+    border-left-width: 1px;
+  }
+}
+@media (min-width: 992px) {
+  .list-group-horizontal-lg {
+    flex-direction: row;
+  }
+  .list-group-horizontal-lg > .list-group-item:first-child {
+    border-bottom-left-radius: 0.25rem;
+    border-top-right-radius: 0;
+  }
+  .list-group-horizontal-lg > .list-group-item:last-child {
+    border-top-right-radius: 0.25rem;
+    border-bottom-left-radius: 0;
+  }
+  .list-group-horizontal-lg > .list-group-item.active {
+    margin-top: 0;
+  }
+  .list-group-horizontal-lg > .list-group-item + .list-group-item {
+    border-top-width: 1px;
+    border-left-width: 0;
+  }
+  .list-group-horizontal-lg > .list-group-item + .list-group-item.active {
+    margin-left: -1px;
+    border-left-width: 1px;
+  }
+}
+@media (min-width: 1200px) {
+  .list-group-horizontal-xl {
+    flex-direction: row;
+  }
+  .list-group-horizontal-xl > .list-group-item:first-child {
+    border-bottom-left-radius: 0.25rem;
+    border-top-right-radius: 0;
+  }
+  .list-group-horizontal-xl > .list-group-item:last-child {
+    border-top-right-radius: 0.25rem;
+    border-bottom-left-radius: 0;
+  }
+  .list-group-horizontal-xl > .list-group-item.active {
+    margin-top: 0;
+  }
+  .list-group-horizontal-xl > .list-group-item + .list-group-item {
+    border-top-width: 1px;
+    border-left-width: 0;
+  }
+  .list-group-horizontal-xl > .list-group-item + .list-group-item.active {
+    margin-left: -1px;
+    border-left-width: 1px;
+  }
+}
+@media (min-width: 1400px) {
+  .list-group-horizontal-xxl {
+    flex-direction: row;
+  }
+  .list-group-horizontal-xxl > .list-group-item:first-child {
+    border-bottom-left-radius: 0.25rem;
+    border-top-right-radius: 0;
+  }
+  .list-group-horizontal-xxl > .list-group-item:last-child {
+    border-top-right-radius: 0.25rem;
+    border-bottom-left-radius: 0;
+  }
+  .list-group-horizontal-xxl > .list-group-item.active {
+    margin-top: 0;
+  }
+  .list-group-horizontal-xxl > .list-group-item + .list-group-item {
+    border-top-width: 1px;
+    border-left-width: 0;
+  }
+  .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {
+    margin-left: -1px;
+    border-left-width: 1px;
+  }
+}
+.list-group-flush {
+  border-radius: 0;
+}
+.list-group-flush > .list-group-item {
+  border-width: 0 0 1px;
+}
+.list-group-flush > .list-group-item:last-child {
+  border-bottom-width: 0;
+}
+
+.list-group-item-primary {
+  color: #084298;
+  background-color: #cfe2ff;
+}
+.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {
+  color: #084298;
+  background-color: #bacbe6;
+}
+.list-group-item-primary.list-group-item-action.active {
+  color: #fff;
+  background-color: #084298;
+  border-color: #084298;
+}
+
+.list-group-item-secondary {
+  color: #41464b;
+  background-color: #e2e3e5;
+}
+.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {
+  color: #41464b;
+  background-color: #cbccce;
+}
+.list-group-item-secondary.list-group-item-action.active {
+  color: #fff;
+  background-color: #41464b;
+  border-color: #41464b;
+}
+
+.list-group-item-success {
+  color: #0f5132;
+  background-color: #d1e7dd;
+}
+.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {
+  color: #0f5132;
+  background-color: #bcd0c7;
+}
+.list-group-item-success.list-group-item-action.active {
+  color: #fff;
+  background-color: #0f5132;
+  border-color: #0f5132;
+}
+
+.list-group-item-info {
+  color: #055160;
+  background-color: #cff4fc;
+}
+.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {
+  color: #055160;
+  background-color: #badce3;
+}
+.list-group-item-info.list-group-item-action.active {
+  color: #fff;
+  background-color: #055160;
+  border-color: #055160;
+}
+
+.list-group-item-warning {
+  color: #664d03;
+  background-color: #fff3cd;
+}
+.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {
+  color: #664d03;
+  background-color: #e6dbb9;
+}
+.list-group-item-warning.list-group-item-action.active {
+  color: #fff;
+  background-color: #664d03;
+  border-color: #664d03;
+}
+
+.list-group-item-danger {
+  color: #842029;
+  background-color: #f8d7da;
+}
+.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {
+  color: #842029;
+  background-color: #dfc2c4;
+}
+.list-group-item-danger.list-group-item-action.active {
+  color: #fff;
+  background-color: #842029;
+  border-color: #842029;
+}
+
+.list-group-item-light {
+  color: #636464;
+  background-color: #fefefe;
+}
+.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {
+  color: #636464;
+  background-color: #e5e5e5;
+}
+.list-group-item-light.list-group-item-action.active {
+  color: #fff;
+  background-color: #636464;
+  border-color: #636464;
+}
+
+.list-group-item-dark {
+  color: #141619;
+  background-color: #d3d3d4;
+}
+.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {
+  color: #141619;
+  background-color: #bebebf;
+}
+.list-group-item-dark.list-group-item-action.active {
+  color: #fff;
+  background-color: #141619;
+  border-color: #141619;
+}
+
+.btn-close {
+  box-sizing: content-box;
+  width: 1em;
+  height: 1em;
+  padding: 0.25em 0.25em;
+  color: #000;
+  background: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;
+  border: 0;
+  border-radius: 0.25rem;
+  opacity: 0.5;
+}
+.btn-close:hover {
+  color: #000;
+  text-decoration: none;
+  opacity: 0.75;
+}
+.btn-close:focus {
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+  opacity: 1;
+}
+.btn-close:disabled, .btn-close.disabled {
+  pointer-events: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  user-select: none;
+  opacity: 0.25;
+}
+
+.btn-close-white {
+  filter: invert(1) grayscale(100%) brightness(200%);
+}
+
+.toast {
+  width: 350px;
+  max-width: 100%;
+  font-size: 0.875rem;
+  pointer-events: auto;
+  background-color: rgba(255, 255, 255, 0.85);
+  background-clip: padding-box;
+  border: 1px solid rgba(0, 0, 0, 0.1);
+  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
+  border-radius: 0.25rem;
+}
+.toast.showing {
+  opacity: 0;
+}
+.toast:not(.show) {
+  display: none;
+}
+
+.toast-container {
+  width: -webkit-max-content;
+  width: -moz-max-content;
+  width: max-content;
+  max-width: 100%;
+  pointer-events: none;
+}
+.toast-container > :not(:last-child) {
+  margin-bottom: 0.75rem;
+}
+
+.toast-header {
+  display: flex;
+  align-items: center;
+  padding: 0.5rem 0.75rem;
+  color: #6c757d;
+  background-color: rgba(255, 255, 255, 0.85);
+  background-clip: padding-box;
+  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
+  border-top-left-radius: calc(0.25rem - 1px);
+  border-top-right-radius: calc(0.25rem - 1px);
+}
+.toast-header .btn-close {
+  margin-right: -0.375rem;
+  margin-left: 0.75rem;
+}
+
+.toast-body {
+  padding: 0.75rem;
+  word-wrap: break-word;
+}
+
+.modal {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 1055;
+  display: none;
+  width: 100%;
+  height: 100%;
+  overflow-x: hidden;
+  overflow-y: auto;
+  outline: 0;
+}
+
+.modal-dialog {
+  position: relative;
+  width: auto;
+  margin: 0.5rem;
+  pointer-events: none;
+}
+.modal.fade .modal-dialog {
+  transition: transform 0.3s ease-out;
+  transform: translate(0, -50px);
+}
+@media (prefers-reduced-motion: reduce) {
+  .modal.fade .modal-dialog {
+    transition: none;
+  }
+}
+.modal.show .modal-dialog {
+  transform: none;
+}
+.modal.modal-static .modal-dialog {
+  transform: scale(1.02);
+}
+
+.modal-dialog-scrollable {
+  height: calc(100% - 1rem);
+}
+.modal-dialog-scrollable .modal-content {
+  max-height: 100%;
+  overflow: hidden;
+}
+.modal-dialog-scrollable .modal-body {
+  overflow-y: auto;
+}
+
+.modal-dialog-centered {
+  display: flex;
+  align-items: center;
+  min-height: calc(100% - 1rem);
+}
+
+.modal-content {
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  width: 100%;
+  pointer-events: auto;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  border-radius: 0.3rem;
+  outline: 0;
+}
+
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 1050;
+  width: 100vw;
+  height: 100vh;
+  background-color: #000;
+}
+.modal-backdrop.fade {
+  opacity: 0;
+}
+.modal-backdrop.show {
+  opacity: 0.5;
+}
+
+.modal-header {
+  display: flex;
+  flex-shrink: 0;
+  align-items: center;
+  justify-content: space-between;
+  padding: 1rem 1rem;
+  border-bottom: 1px solid #dee2e6;
+  border-top-left-radius: calc(0.3rem - 1px);
+  border-top-right-radius: calc(0.3rem - 1px);
+}
+.modal-header .btn-close {
+  padding: 0.5rem 0.5rem;
+  margin: -0.5rem -0.5rem -0.5rem auto;
+}
+
+.modal-title {
+  margin-bottom: 0;
+  line-height: 1.5;
+}
+
+.modal-body {
+  position: relative;
+  flex: 1 1 auto;
+  padding: 1rem;
+}
+
+.modal-footer {
+  display: flex;
+  flex-wrap: wrap;
+  flex-shrink: 0;
+  align-items: center;
+  justify-content: flex-end;
+  padding: 0.75rem;
+  border-top: 1px solid #dee2e6;
+  border-bottom-right-radius: calc(0.3rem - 1px);
+  border-bottom-left-radius: calc(0.3rem - 1px);
+}
+.modal-footer > * {
+  margin: 0.25rem;
+}
+
+@media (min-width: 576px) {
+  .modal-dialog {
+    max-width: 500px;
+    margin: 1.75rem auto;
+  }
+
+  .modal-dialog-scrollable {
+    height: calc(100% - 3.5rem);
+  }
+
+  .modal-dialog-centered {
+    min-height: calc(100% - 3.5rem);
+  }
+
+  .modal-sm {
+    max-width: 300px;
+  }
+}
+@media (min-width: 992px) {
+  .modal-lg,
+.modal-xl {
+    max-width: 800px;
+  }
+}
+@media (min-width: 1200px) {
+  .modal-xl {
+    max-width: 1140px;
+  }
+}
+.modal-fullscreen {
+  width: 100vw;
+  max-width: none;
+  height: 100%;
+  margin: 0;
+}
+.modal-fullscreen .modal-content {
+  height: 100%;
+  border: 0;
+  border-radius: 0;
+}
+.modal-fullscreen .modal-header {
+  border-radius: 0;
+}
+.modal-fullscreen .modal-body {
+  overflow-y: auto;
+}
+.modal-fullscreen .modal-footer {
+  border-radius: 0;
+}
+
+@media (max-width: 575.98px) {
+  .modal-fullscreen-sm-down {
+    width: 100vw;
+    max-width: none;
+    height: 100%;
+    margin: 0;
+  }
+  .modal-fullscreen-sm-down .modal-content {
+    height: 100%;
+    border: 0;
+    border-radius: 0;
+  }
+  .modal-fullscreen-sm-down .modal-header {
+    border-radius: 0;
+  }
+  .modal-fullscreen-sm-down .modal-body {
+    overflow-y: auto;
+  }
+  .modal-fullscreen-sm-down .modal-footer {
+    border-radius: 0;
+  }
+}
+@media (max-width: 767.98px) {
+  .modal-fullscreen-md-down {
+    width: 100vw;
+    max-width: none;
+    height: 100%;
+    margin: 0;
+  }
+  .modal-fullscreen-md-down .modal-content {
+    height: 100%;
+    border: 0;
+    border-radius: 0;
+  }
+  .modal-fullscreen-md-down .modal-header {
+    border-radius: 0;
+  }
+  .modal-fullscreen-md-down .modal-body {
+    overflow-y: auto;
+  }
+  .modal-fullscreen-md-down .modal-footer {
+    border-radius: 0;
+  }
+}
+@media (max-width: 991.98px) {
+  .modal-fullscreen-lg-down {
+    width: 100vw;
+    max-width: none;
+    height: 100%;
+    margin: 0;
+  }
+  .modal-fullscreen-lg-down .modal-content {
+    height: 100%;
+    border: 0;
+    border-radius: 0;
+  }
+  .modal-fullscreen-lg-down .modal-header {
+    border-radius: 0;
+  }
+  .modal-fullscreen-lg-down .modal-body {
+    overflow-y: auto;
+  }
+  .modal-fullscreen-lg-down .modal-footer {
+    border-radius: 0;
+  }
+}
+@media (max-width: 1199.98px) {
+  .modal-fullscreen-xl-down {
+    width: 100vw;
+    max-width: none;
+    height: 100%;
+    margin: 0;
+  }
+  .modal-fullscreen-xl-down .modal-content {
+    height: 100%;
+    border: 0;
+    border-radius: 0;
+  }
+  .modal-fullscreen-xl-down .modal-header {
+    border-radius: 0;
+  }
+  .modal-fullscreen-xl-down .modal-body {
+    overflow-y: auto;
+  }
+  .modal-fullscreen-xl-down .modal-footer {
+    border-radius: 0;
+  }
+}
+@media (max-width: 1399.98px) {
+  .modal-fullscreen-xxl-down {
+    width: 100vw;
+    max-width: none;
+    height: 100%;
+    margin: 0;
+  }
+  .modal-fullscreen-xxl-down .modal-content {
+    height: 100%;
+    border: 0;
+    border-radius: 0;
+  }
+  .modal-fullscreen-xxl-down .modal-header {
+    border-radius: 0;
+  }
+  .modal-fullscreen-xxl-down .modal-body {
+    overflow-y: auto;
+  }
+  .modal-fullscreen-xxl-down .modal-footer {
+    border-radius: 0;
+  }
+}
+.tooltip {
+  position: absolute;
+  z-index: 1080;
+  display: block;
+  margin: 0;
+  font-family: var(--bs-font-sans-serif);
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1.5;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  white-space: normal;
+  line-break: auto;
+  font-size: 0.875rem;
+  word-wrap: break-word;
+  opacity: 0;
+}
+.tooltip.show {
+  opacity: 0.9;
+}
+.tooltip .tooltip-arrow {
+  position: absolute;
+  display: block;
+  width: 0.8rem;
+  height: 0.4rem;
+}
+.tooltip .tooltip-arrow::before {
+  position: absolute;
+  content: "";
+  border-color: transparent;
+  border-style: solid;
+}
+
+.bs-tooltip-top, .bs-tooltip-auto[data-popper-placement^=top] {
+  padding: 0.4rem 0;
+}
+.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {
+  bottom: 0;
+}
+.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {
+  top: -1px;
+  border-width: 0.4rem 0.4rem 0;
+  border-top-color: #000;
+}
+
+.bs-tooltip-end, .bs-tooltip-auto[data-popper-placement^=right] {
+  padding: 0 0.4rem;
+}
+.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {
+  left: 0;
+  width: 0.4rem;
+  height: 0.8rem;
+}
+.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {
+  right: -1px;
+  border-width: 0.4rem 0.4rem 0.4rem 0;
+  border-right-color: #000;
+}
+
+.bs-tooltip-bottom, .bs-tooltip-auto[data-popper-placement^=bottom] {
+  padding: 0.4rem 0;
+}
+.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {
+  top: 0;
+}
+.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {
+  bottom: -1px;
+  border-width: 0 0.4rem 0.4rem;
+  border-bottom-color: #000;
+}
+
+.bs-tooltip-start, .bs-tooltip-auto[data-popper-placement^=left] {
+  padding: 0 0.4rem;
+}
+.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {
+  right: 0;
+  width: 0.4rem;
+  height: 0.8rem;
+}
+.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {
+  left: -1px;
+  border-width: 0.4rem 0 0.4rem 0.4rem;
+  border-left-color: #000;
+}
+
+.tooltip-inner {
+  max-width: 200px;
+  padding: 0.25rem 0.5rem;
+  color: #fff;
+  text-align: center;
+  background-color: #000;
+  border-radius: 0.25rem;
+}
+
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0 /* rtl:ignore */;
+  z-index: 1070;
+  display: block;
+  max-width: 276px;
+  font-family: var(--bs-font-sans-serif);
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1.5;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  white-space: normal;
+  line-break: auto;
+  font-size: 0.875rem;
+  word-wrap: break-word;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  border-radius: 0.3rem;
+}
+.popover .popover-arrow {
+  position: absolute;
+  display: block;
+  width: 1rem;
+  height: 0.5rem;
+}
+.popover .popover-arrow::before, .popover .popover-arrow::after {
+  position: absolute;
+  display: block;
+  content: "";
+  border-color: transparent;
+  border-style: solid;
+}
+
+.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {
+  bottom: calc(-0.5rem - 1px);
+}
+.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {
+  bottom: 0;
+  border-width: 0.5rem 0.5rem 0;
+  border-top-color: rgba(0, 0, 0, 0.25);
+}
+.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {
+  bottom: 1px;
+  border-width: 0.5rem 0.5rem 0;
+  border-top-color: #fff;
+}
+
+.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {
+  left: calc(-0.5rem - 1px);
+  width: 0.5rem;
+  height: 1rem;
+}
+.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {
+  left: 0;
+  border-width: 0.5rem 0.5rem 0.5rem 0;
+  border-right-color: rgba(0, 0, 0, 0.25);
+}
+.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {
+  left: 1px;
+  border-width: 0.5rem 0.5rem 0.5rem 0;
+  border-right-color: #fff;
+}
+
+.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {
+  top: calc(-0.5rem - 1px);
+}
+.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {
+  top: 0;
+  border-width: 0 0.5rem 0.5rem 0.5rem;
+  border-bottom-color: rgba(0, 0, 0, 0.25);
+}
+.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {
+  top: 1px;
+  border-width: 0 0.5rem 0.5rem 0.5rem;
+  border-bottom-color: #fff;
+}
+.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {
+  position: absolute;
+  top: 0;
+  left: 50%;
+  display: block;
+  width: 1rem;
+  margin-left: -0.5rem;
+  content: "";
+  border-bottom: 1px solid #f0f0f0;
+}
+
+.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {
+  right: calc(-0.5rem - 1px);
+  width: 0.5rem;
+  height: 1rem;
+}
+.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {
+  right: 0;
+  border-width: 0.5rem 0 0.5rem 0.5rem;
+  border-left-color: rgba(0, 0, 0, 0.25);
+}
+.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {
+  right: 1px;
+  border-width: 0.5rem 0 0.5rem 0.5rem;
+  border-left-color: #fff;
+}
+
+.popover-header {
+  padding: 0.5rem 1rem;
+  margin-bottom: 0;
+  font-size: 1rem;
+  background-color: #f0f0f0;
+  border-bottom: 1px solid rgba(0, 0, 0, 0.2);
+  border-top-left-radius: calc(0.3rem - 1px);
+  border-top-right-radius: calc(0.3rem - 1px);
+}
+.popover-header:empty {
+  display: none;
+}
+
+.popover-body {
+  padding: 1rem 1rem;
+  color: #212529;
+}
+
+.carousel {
+  position: relative;
+}
+
+.carousel.pointer-event {
+  touch-action: pan-y;
+}
+
+.carousel-inner {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+}
+.carousel-inner::after {
+  display: block;
+  clear: both;
+  content: "";
+}
+
+.carousel-item {
+  position: relative;
+  display: none;
+  float: left;
+  width: 100%;
+  margin-right: -100%;
+  -webkit-backface-visibility: hidden;
+  backface-visibility: hidden;
+  transition: transform 0.6s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .carousel-item {
+    transition: none;
+  }
+}
+
+.carousel-item.active,
+.carousel-item-next,
+.carousel-item-prev {
+  display: block;
+}
+
+/* rtl:begin:ignore */
+.carousel-item-next:not(.carousel-item-start),
+.active.carousel-item-end {
+  transform: translateX(100%);
+}
+
+.carousel-item-prev:not(.carousel-item-end),
+.active.carousel-item-start {
+  transform: translateX(-100%);
+}
+
+/* rtl:end:ignore */
+.carousel-fade .carousel-item {
+  opacity: 0;
+  transition-property: opacity;
+  transform: none;
+}
+.carousel-fade .carousel-item.active,
+.carousel-fade .carousel-item-next.carousel-item-start,
+.carousel-fade .carousel-item-prev.carousel-item-end {
+  z-index: 1;
+  opacity: 1;
+}
+.carousel-fade .active.carousel-item-start,
+.carousel-fade .active.carousel-item-end {
+  z-index: 0;
+  opacity: 0;
+  transition: opacity 0s 0.6s;
+}
+@media (prefers-reduced-motion: reduce) {
+  .carousel-fade .active.carousel-item-start,
+.carousel-fade .active.carousel-item-end {
+    transition: none;
+  }
+}
+
+.carousel-control-prev,
+.carousel-control-next {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  z-index: 1;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 15%;
+  padding: 0;
+  color: #fff;
+  text-align: center;
+  background: none;
+  border: 0;
+  opacity: 0.5;
+  transition: opacity 0.15s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+  .carousel-control-prev,
+.carousel-control-next {
+    transition: none;
+  }
+}
+.carousel-control-prev:hover, .carousel-control-prev:focus,
+.carousel-control-next:hover,
+.carousel-control-next:focus {
+  color: #fff;
+  text-decoration: none;
+  outline: 0;
+  opacity: 0.9;
+}
+
+.carousel-control-prev {
+  left: 0;
+}
+
+.carousel-control-next {
+  right: 0;
+}
+
+.carousel-control-prev-icon,
+.carousel-control-next-icon {
+  display: inline-block;
+  width: 2rem;
+  height: 2rem;
+  background-repeat: no-repeat;
+  background-position: 50%;
+  background-size: 100% 100%;
+}
+
+/* rtl:options: {
+  "autoRename": true,
+  "stringMap":[ {
+    "name"    : "prev-next",
+    "search"  : "prev",
+    "replace" : "next"
+  } ]
+} */
+.carousel-control-prev-icon {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e");
+}
+
+.carousel-control-next-icon {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+}
+
+.carousel-indicators {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 2;
+  display: flex;
+  justify-content: center;
+  padding: 0;
+  margin-right: 15%;
+  margin-bottom: 1rem;
+  margin-left: 15%;
+  list-style: none;
+}
+.carousel-indicators [data-bs-target] {
+  box-sizing: content-box;
+  flex: 0 1 auto;
+  width: 30px;
+  height: 3px;
+  padding: 0;
+  margin-right: 3px;
+  margin-left: 3px;
+  text-indent: -999px;
+  cursor: pointer;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 0;
+  border-top: 10px solid transparent;
+  border-bottom: 10px solid transparent;
+  opacity: 0.5;
+  transition: opacity 0.6s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+  .carousel-indicators [data-bs-target] {
+    transition: none;
+  }
+}
+.carousel-indicators .active {
+  opacity: 1;
+}
+
+.carousel-caption {
+  position: absolute;
+  right: 15%;
+  bottom: 1.25rem;
+  left: 15%;
+  padding-top: 1.25rem;
+  padding-bottom: 1.25rem;
+  color: #fff;
+  text-align: center;
+}
+
+.carousel-dark .carousel-control-prev-icon,
+.carousel-dark .carousel-control-next-icon {
+  filter: invert(1) grayscale(100);
+}
+.carousel-dark .carousel-indicators [data-bs-target] {
+  background-color: #000;
+}
+.carousel-dark .carousel-caption {
+  color: #000;
+}
+
+@-webkit-keyframes spinner-border {
+  to {
+    transform: rotate(360deg) /* rtl:ignore */;
+  }
+}
+
+@keyframes spinner-border {
+  to {
+    transform: rotate(360deg) /* rtl:ignore */;
+  }
+}
+.spinner-border {
+  display: inline-block;
+  width: 2rem;
+  height: 2rem;
+  vertical-align: -0.125em;
+  border: 0.25em solid currentColor;
+  border-right-color: transparent;
+  border-radius: 50%;
+  -webkit-animation: 0.75s linear infinite spinner-border;
+  animation: 0.75s linear infinite spinner-border;
+}
+
+.spinner-border-sm {
+  width: 1rem;
+  height: 1rem;
+  border-width: 0.2em;
+}
+
+@-webkit-keyframes spinner-grow {
+  0% {
+    transform: scale(0);
+  }
+  50% {
+    opacity: 1;
+    transform: none;
+  }
+}
+
+@keyframes spinner-grow {
+  0% {
+    transform: scale(0);
+  }
+  50% {
+    opacity: 1;
+    transform: none;
+  }
+}
+.spinner-grow {
+  display: inline-block;
+  width: 2rem;
+  height: 2rem;
+  vertical-align: -0.125em;
+  background-color: currentColor;
+  border-radius: 50%;
+  opacity: 0;
+  -webkit-animation: 0.75s linear infinite spinner-grow;
+  animation: 0.75s linear infinite spinner-grow;
+}
+
+.spinner-grow-sm {
+  width: 1rem;
+  height: 1rem;
+}
+
+@media (prefers-reduced-motion: reduce) {
+  .spinner-border,
+.spinner-grow {
+    -webkit-animation-duration: 1.5s;
+    animation-duration: 1.5s;
+  }
+}
+.offcanvas {
+  position: fixed;
+  bottom: 0;
+  z-index: 1045;
+  display: flex;
+  flex-direction: column;
+  max-width: 100%;
+  visibility: hidden;
+  background-color: #fff;
+  background-clip: padding-box;
+  outline: 0;
+  transition: transform 0.3s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .offcanvas {
+    transition: none;
+  }
+}
+
+.offcanvas-backdrop {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 1040;
+  width: 100vw;
+  height: 100vh;
+  background-color: #000;
+}
+.offcanvas-backdrop.fade {
+  opacity: 0;
+}
+.offcanvas-backdrop.show {
+  opacity: 0.5;
+}
+
+.offcanvas-header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding: 1rem 1rem;
+}
+.offcanvas-header .btn-close {
+  padding: 0.5rem 0.5rem;
+  margin-top: -0.5rem;
+  margin-right: -0.5rem;
+  margin-bottom: -0.5rem;
+}
+
+.offcanvas-title {
+  margin-bottom: 0;
+  line-height: 1.5;
+}
+
+.offcanvas-body {
+  flex-grow: 1;
+  padding: 1rem 1rem;
+  overflow-y: auto;
+}
+
+.offcanvas-start {
+  top: 0;
+  left: 0;
+  width: 400px;
+  border-right: 1px solid rgba(0, 0, 0, 0.2);
+  transform: translateX(-100%);
+}
+
+.offcanvas-end {
+  top: 0;
+  right: 0;
+  width: 400px;
+  border-left: 1px solid rgba(0, 0, 0, 0.2);
+  transform: translateX(100%);
+}
+
+.offcanvas-top {
+  top: 0;
+  right: 0;
+  left: 0;
+  height: 30vh;
+  max-height: 100%;
+  border-bottom: 1px solid rgba(0, 0, 0, 0.2);
+  transform: translateY(-100%);
+}
+
+.offcanvas-bottom {
+  right: 0;
+  left: 0;
+  height: 30vh;
+  max-height: 100%;
+  border-top: 1px solid rgba(0, 0, 0, 0.2);
+  transform: translateY(100%);
+}
+
+.offcanvas.show {
+  transform: none;
+}
+
+.placeholder {
+  display: inline-block;
+  min-height: 1em;
+  vertical-align: middle;
+  cursor: wait;
+  background-color: currentColor;
+  opacity: 0.5;
+}
+.placeholder.btn::before {
+  display: inline-block;
+  content: "";
+}
+
+.placeholder-xs {
+  min-height: 0.6em;
+}
+
+.placeholder-sm {
+  min-height: 0.8em;
+}
+
+.placeholder-lg {
+  min-height: 1.2em;
+}
+
+.placeholder-glow .placeholder {
+  -webkit-animation: placeholder-glow 2s ease-in-out infinite;
+  animation: placeholder-glow 2s ease-in-out infinite;
+}
+
+@-webkit-keyframes placeholder-glow {
+  50% {
+    opacity: 0.2;
+  }
+}
+
+@keyframes placeholder-glow {
+  50% {
+    opacity: 0.2;
+  }
+}
+.placeholder-wave {
+  -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
+  mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
+  -webkit-mask-size: 200% 100%;
+  mask-size: 200% 100%;
+  -webkit-animation: placeholder-wave 2s linear infinite;
+  animation: placeholder-wave 2s linear infinite;
+}
+
+@-webkit-keyframes placeholder-wave {
+  100% {
+    -webkit-mask-position: -200% 0%;
+    mask-position: -200% 0%;
+  }
+}
+
+@keyframes placeholder-wave {
+  100% {
+    -webkit-mask-position: -200% 0%;
+    mask-position: -200% 0%;
+  }
+}
+.clearfix::after {
+  display: block;
+  clear: both;
+  content: "";
+}
+
+.link-primary {
+  color: #0d6efd;
+}
+.link-primary:hover, .link-primary:focus {
+  color: #0a58ca;
+}
+
+.link-secondary {
+  color: #6c757d;
+}
+.link-secondary:hover, .link-secondary:focus {
+  color: #565e64;
+}
+
+.link-success {
+  color: #198754;
+}
+.link-success:hover, .link-success:focus {
+  color: #146c43;
+}
+
+.link-info {
+  color: #0dcaf0;
+}
+.link-info:hover, .link-info:focus {
+  color: #3dd5f3;
+}
+
+.link-warning {
+  color: #ffc107;
+}
+.link-warning:hover, .link-warning:focus {
+  color: #ffcd39;
+}
+
+.link-danger {
+  color: #dc3545;
+}
+.link-danger:hover, .link-danger:focus {
+  color: #b02a37;
+}
+
+.link-light {
+  color: #f8f9fa;
+}
+.link-light:hover, .link-light:focus {
+  color: #f9fafb;
+}
+
+.link-dark {
+  color: #212529;
+}
+.link-dark:hover, .link-dark:focus {
+  color: #1a1e21;
+}
+
+.ratio {
+  position: relative;
+  width: 100%;
+}
+.ratio::before {
+  display: block;
+  padding-top: var(--bs-aspect-ratio);
+  content: "";
+}
+.ratio > * {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+
+.ratio-1x1 {
+  --bs-aspect-ratio: 100%;
+}
+
+.ratio-4x3 {
+  --bs-aspect-ratio: calc(3 / 4 * 100%);
+}
+
+.ratio-16x9 {
+  --bs-aspect-ratio: calc(9 / 16 * 100%);
+}
+
+.ratio-21x9 {
+  --bs-aspect-ratio: calc(9 / 21 * 100%);
+}
+
+.fixed-top {
+  position: fixed;
+  top: 0;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+}
+
+.fixed-bottom {
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1030;
+}
+
+.sticky-top {
+  position: -webkit-sticky;
+  position: sticky;
+  top: 0;
+  z-index: 1020;
+}
+
+@media (min-width: 576px) {
+  .sticky-sm-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 768px) {
+  .sticky-md-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 992px) {
+  .sticky-lg-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 1200px) {
+  .sticky-xl-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 1400px) {
+  .sticky-xxl-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+.hstack {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  align-self: stretch;
+}
+
+.vstack {
+  display: flex;
+  flex: 1 1 auto;
+  flex-direction: column;
+  align-self: stretch;
+}
+
+.visually-hidden,
+.visually-hidden-focusable:not(:focus):not(:focus-within) {
+  position: absolute !important;
+  width: 1px !important;
+  height: 1px !important;
+  padding: 0 !important;
+  margin: -1px !important;
+  overflow: hidden !important;
+  clip: rect(0, 0, 0, 0) !important;
+  white-space: nowrap !important;
+  border: 0 !important;
+}
+
+.stretched-link::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1;
+  content: "";
+}
+
+.text-truncate {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.vr {
+  display: inline-block;
+  align-self: stretch;
+  width: 1px;
+  min-height: 1em;
+  background-color: currentColor;
+  opacity: 0.25;
+}
+
+.align-baseline {
+  vertical-align: baseline !important;
+}
+
+.align-top {
+  vertical-align: top !important;
+}
+
+.align-middle {
+  vertical-align: middle !important;
+}
+
+.align-bottom {
+  vertical-align: bottom !important;
+}
+
+.align-text-bottom {
+  vertical-align: text-bottom !important;
+}
+
+.align-text-top {
+  vertical-align: text-top !important;
+}
+
+.float-start {
+  float: left !important;
+}
+
+.float-end {
+  float: right !important;
+}
+
+.float-none {
+  float: none !important;
+}
+
+.opacity-0 {
+  opacity: 0 !important;
+}
+
+.opacity-25 {
+  opacity: 0.25 !important;
+}
+
+.opacity-50 {
+  opacity: 0.5 !important;
+}
+
+.opacity-75 {
+  opacity: 0.75 !important;
+}
+
+.opacity-100 {
+  opacity: 1 !important;
+}
+
+.overflow-auto {
+  overflow: auto !important;
+}
+
+.overflow-hidden {
+  overflow: hidden !important;
+}
+
+.overflow-visible {
+  overflow: visible !important;
+}
+
+.overflow-scroll {
+  overflow: scroll !important;
+}
+
+.d-inline {
+  display: inline !important;
+}
+
+.d-inline-block {
+  display: inline-block !important;
+}
+
+.d-block {
+  display: block !important;
+}
+
+.d-grid {
+  display: grid !important;
+}
+
+.d-table {
+  display: table !important;
+}
+
+.d-table-row {
+  display: table-row !important;
+}
+
+.d-table-cell {
+  display: table-cell !important;
+}
+
+.d-flex {
+  display: flex !important;
+}
+
+.d-inline-flex {
+  display: inline-flex !important;
+}
+
+.d-none {
+  display: none !important;
+}
+
+.shadow {
+  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
+}
+
+.shadow-sm {
+  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
+}
+
+.shadow-lg {
+  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
+}
+
+.shadow-none {
+  box-shadow: none !important;
+}
+
+.position-static {
+  position: static !important;
+}
+
+.position-relative {
+  position: relative !important;
+}
+
+.position-absolute {
+  position: absolute !important;
+}
+
+.position-fixed {
+  position: fixed !important;
+}
+
+.position-sticky {
+  position: -webkit-sticky !important;
+  position: sticky !important;
+}
+
+.top-0 {
+  top: 0 !important;
+}
+
+.top-50 {
+  top: 50% !important;
+}
+
+.top-100 {
+  top: 100% !important;
+}
+
+.bottom-0 {
+  bottom: 0 !important;
+}
+
+.bottom-50 {
+  bottom: 50% !important;
+}
+
+.bottom-100 {
+  bottom: 100% !important;
+}
+
+.start-0 {
+  left: 0 !important;
+}
+
+.start-50 {
+  left: 50% !important;
+}
+
+.start-100 {
+  left: 100% !important;
+}
+
+.end-0 {
+  right: 0 !important;
+}
+
+.end-50 {
+  right: 50% !important;
+}
+
+.end-100 {
+  right: 100% !important;
+}
+
+.translate-middle {
+  transform: translate(-50%, -50%) !important;
+}
+
+.translate-middle-x {
+  transform: translateX(-50%) !important;
+}
+
+.translate-middle-y {
+  transform: translateY(-50%) !important;
+}
+
+.border {
+  border: 1px solid #dee2e6 !important;
+}
+
+.border-0 {
+  border: 0 !important;
+}
+
+.border-top {
+  border-top: 1px solid #dee2e6 !important;
+}
+
+.border-top-0 {
+  border-top: 0 !important;
+}
+
+.border-end {
+  border-right: 1px solid #dee2e6 !important;
+}
+
+.border-end-0 {
+  border-right: 0 !important;
+}
+
+.border-bottom {
+  border-bottom: 1px solid #dee2e6 !important;
+}
+
+.border-bottom-0 {
+  border-bottom: 0 !important;
+}
+
+.border-start {
+  border-left: 1px solid #dee2e6 !important;
+}
+
+.border-start-0 {
+  border-left: 0 !important;
+}
+
+.border-primary {
+  border-color: #0d6efd !important;
+}
+
+.border-secondary {
+  border-color: #6c757d !important;
+}
+
+.border-success {
+  border-color: #198754 !important;
+}
+
+.border-info {
+  border-color: #0dcaf0 !important;
+}
+
+.border-warning {
+  border-color: #ffc107 !important;
+}
+
+.border-danger {
+  border-color: #dc3545 !important;
+}
+
+.border-light {
+  border-color: #f8f9fa !important;
+}
+
+.border-dark {
+  border-color: #212529 !important;
+}
+
+.border-white {
+  border-color: #fff !important;
+}
+
+.border-1 {
+  border-width: 1px !important;
+}
+
+.border-2 {
+  border-width: 2px !important;
+}
+
+.border-3 {
+  border-width: 3px !important;
+}
+
+.border-4 {
+  border-width: 4px !important;
+}
+
+.border-5 {
+  border-width: 5px !important;
+}
+
+.w-25 {
+  width: 25% !important;
+}
+
+.w-50 {
+  width: 50% !important;
+}
+
+.w-75 {
+  width: 75% !important;
+}
+
+.w-100 {
+  width: 100% !important;
+}
+
+.w-auto {
+  width: auto !important;
+}
+
+.mw-100 {
+  max-width: 100% !important;
+}
+
+.vw-100 {
+  width: 100vw !important;
+}
+
+.min-vw-100 {
+  min-width: 100vw !important;
+}
+
+.h-25 {
+  height: 25% !important;
+}
+
+.h-50 {
+  height: 50% !important;
+}
+
+.h-75 {
+  height: 75% !important;
+}
+
+.h-100 {
+  height: 100% !important;
+}
+
+.h-auto {
+  height: auto !important;
+}
+
+.mh-100 {
+  max-height: 100% !important;
+}
+
+.vh-100 {
+  height: 100vh !important;
+}
+
+.min-vh-100 {
+  min-height: 100vh !important;
+}
+
+.flex-fill {
+  flex: 1 1 auto !important;
+}
+
+.flex-row {
+  flex-direction: row !important;
+}
+
+.flex-column {
+  flex-direction: column !important;
+}
+
+.flex-row-reverse {
+  flex-direction: row-reverse !important;
+}
+
+.flex-column-reverse {
+  flex-direction: column-reverse !important;
+}
+
+.flex-grow-0 {
+  flex-grow: 0 !important;
+}
+
+.flex-grow-1 {
+  flex-grow: 1 !important;
+}
+
+.flex-shrink-0 {
+  flex-shrink: 0 !important;
+}
+
+.flex-shrink-1 {
+  flex-shrink: 1 !important;
+}
+
+.flex-wrap {
+  flex-wrap: wrap !important;
+}
+
+.flex-nowrap {
+  flex-wrap: nowrap !important;
+}
+
+.flex-wrap-reverse {
+  flex-wrap: wrap-reverse !important;
+}
+
+.gap-0 {
+  gap: 0 !important;
+}
+
+.gap-1 {
+  gap: 0.25rem !important;
+}
+
+.gap-2 {
+  gap: 0.5rem !important;
+}
+
+.gap-3 {
+  gap: 1rem !important;
+}
+
+.gap-4 {
+  gap: 1.5rem !important;
+}
+
+.gap-5 {
+  gap: 3rem !important;
+}
+
+.justify-content-start {
+  justify-content: flex-start !important;
+}
+
+.justify-content-end {
+  justify-content: flex-end !important;
+}
+
+.justify-content-center {
+  justify-content: center !important;
+}
+
+.justify-content-between {
+  justify-content: space-between !important;
+}
+
+.justify-content-around {
+  justify-content: space-around !important;
+}
+
+.justify-content-evenly {
+  justify-content: space-evenly !important;
+}
+
+.align-items-start {
+  align-items: flex-start !important;
+}
+
+.align-items-end {
+  align-items: flex-end !important;
+}
+
+.align-items-center {
+  align-items: center !important;
+}
+
+.align-items-baseline {
+  align-items: baseline !important;
+}
+
+.align-items-stretch {
+  align-items: stretch !important;
+}
+
+.align-content-start {
+  align-content: flex-start !important;
+}
+
+.align-content-end {
+  align-content: flex-end !important;
+}
+
+.align-content-center {
+  align-content: center !important;
+}
+
+.align-content-between {
+  align-content: space-between !important;
+}
+
+.align-content-around {
+  align-content: space-around !important;
+}
+
+.align-content-stretch {
+  align-content: stretch !important;
+}
+
+.align-self-auto {
+  align-self: auto !important;
+}
+
+.align-self-start {
+  align-self: flex-start !important;
+}
+
+.align-self-end {
+  align-self: flex-end !important;
+}
+
+.align-self-center {
+  align-self: center !important;
+}
+
+.align-self-baseline {
+  align-self: baseline !important;
+}
+
+.align-self-stretch {
+  align-self: stretch !important;
+}
+
+.order-first {
+  order: -1 !important;
+}
+
+.order-0 {
+  order: 0 !important;
+}
+
+.order-1 {
+  order: 1 !important;
+}
+
+.order-2 {
+  order: 2 !important;
+}
+
+.order-3 {
+  order: 3 !important;
+}
+
+.order-4 {
+  order: 4 !important;
+}
+
+.order-5 {
+  order: 5 !important;
+}
+
+.order-last {
+  order: 6 !important;
+}
+
+.m-0 {
+  margin: 0 !important;
+}
+
+.m-1 {
+  margin: 0.25rem !important;
+}
+
+.m-2 {
+  margin: 0.5rem !important;
+}
+
+.m-3 {
+  margin: 1rem !important;
+}
+
+.m-4 {
+  margin: 1.5rem !important;
+}
+
+.m-5 {
+  margin: 3rem !important;
+}
+
+.m-auto {
+  margin: auto !important;
+}
+
+.mx-0 {
+  margin-right: 0 !important;
+  margin-left: 0 !important;
+}
+
+.mx-1 {
+  margin-right: 0.25rem !important;
+  margin-left: 0.25rem !important;
+}
+
+.mx-2 {
+  margin-right: 0.5rem !important;
+  margin-left: 0.5rem !important;
+}
+
+.mx-3 {
+  margin-right: 1rem !important;
+  margin-left: 1rem !important;
+}
+
+.mx-4 {
+  margin-right: 1.5rem !important;
+  margin-left: 1.5rem !important;
+}
+
+.mx-5 {
+  margin-right: 3rem !important;
+  margin-left: 3rem !important;
+}
+
+.mx-auto {
+  margin-right: auto !important;
+  margin-left: auto !important;
+}
+
+.my-0 {
+  margin-top: 0 !important;
+  margin-bottom: 0 !important;
+}
+
+.my-1 {
+  margin-top: 0.25rem !important;
+  margin-bottom: 0.25rem !important;
+}
+
+.my-2 {
+  margin-top: 0.5rem !important;
+  margin-bottom: 0.5rem !important;
+}
+
+.my-3 {
+  margin-top: 1rem !important;
+  margin-bottom: 1rem !important;
+}
+
+.my-4 {
+  margin-top: 1.5rem !important;
+  margin-bottom: 1.5rem !important;
+}
+
+.my-5 {
+  margin-top: 3rem !important;
+  margin-bottom: 3rem !important;
+}
+
+.my-auto {
+  margin-top: auto !important;
+  margin-bottom: auto !important;
+}
+
+.mt-0 {
+  margin-top: 0 !important;
+}
+
+.mt-1 {
+  margin-top: 0.25rem !important;
+}
+
+.mt-2 {
+  margin-top: 0.5rem !important;
+}
+
+.mt-3 {
+  margin-top: 1rem !important;
+}
+
+.mt-4 {
+  margin-top: 1.5rem !important;
+}
+
+.mt-5 {
+  margin-top: 3rem !important;
+}
+
+.mt-auto {
+  margin-top: auto !important;
+}
+
+.me-0 {
+  margin-right: 0 !important;
+}
+
+.me-1 {
+  margin-right: 0.25rem !important;
+}
+
+.me-2 {
+  margin-right: 0.5rem !important;
+}
+
+.me-3 {
+  margin-right: 1rem !important;
+}
+
+.me-4 {
+  margin-right: 1.5rem !important;
+}
+
+.me-5 {
+  margin-right: 3rem !important;
+}
+
+.me-auto {
+  margin-right: auto !important;
+}
+
+.mb-0 {
+  margin-bottom: 0 !important;
+}
+
+.mb-1 {
+  margin-bottom: 0.25rem !important;
+}
+
+.mb-2 {
+  margin-bottom: 0.5rem !important;
+}
+
+.mb-3 {
+  margin-bottom: 1rem !important;
+}
+
+.mb-4 {
+  margin-bottom: 1.5rem !important;
+}
+
+.mb-5 {
+  margin-bottom: 3rem !important;
+}
+
+.mb-auto {
+  margin-bottom: auto !important;
+}
+
+.ms-0 {
+  margin-left: 0 !important;
+}
+
+.ms-1 {
+  margin-left: 0.25rem !important;
+}
+
+.ms-2 {
+  margin-left: 0.5rem !important;
+}
+
+.ms-3 {
+  margin-left: 1rem !important;
+}
+
+.ms-4 {
+  margin-left: 1.5rem !important;
+}
+
+.ms-5 {
+  margin-left: 3rem !important;
+}
+
+.ms-auto {
+  margin-left: auto !important;
+}
+
+.p-0 {
+  padding: 0 !important;
+}
+
+.p-1 {
+  padding: 0.25rem !important;
+}
+
+.p-2 {
+  padding: 0.5rem !important;
+}
+
+.p-3 {
+  padding: 1rem !important;
+}
+
+.p-4 {
+  padding: 1.5rem !important;
+}
+
+.p-5 {
+  padding: 3rem !important;
+}
+
+.px-0 {
+  padding-right: 0 !important;
+  padding-left: 0 !important;
+}
+
+.px-1 {
+  padding-right: 0.25rem !important;
+  padding-left: 0.25rem !important;
+}
+
+.px-2 {
+  padding-right: 0.5rem !important;
+  padding-left: 0.5rem !important;
+}
+
+.px-3 {
+  padding-right: 1rem !important;
+  padding-left: 1rem !important;
+}
+
+.px-4 {
+  padding-right: 1.5rem !important;
+  padding-left: 1.5rem !important;
+}
+
+.px-5 {
+  padding-right: 3rem !important;
+  padding-left: 3rem !important;
+}
+
+.py-0 {
+  padding-top: 0 !important;
+  padding-bottom: 0 !important;
+}
+
+.py-1 {
+  padding-top: 0.25rem !important;
+  padding-bottom: 0.25rem !important;
+}
+
+.py-2 {
+  padding-top: 0.5rem !important;
+  padding-bottom: 0.5rem !important;
+}
+
+.py-3 {
+  padding-top: 1rem !important;
+  padding-bottom: 1rem !important;
+}
+
+.py-4 {
+  padding-top: 1.5rem !important;
+  padding-bottom: 1.5rem !important;
+}
+
+.py-5 {
+  padding-top: 3rem !important;
+  padding-bottom: 3rem !important;
+}
+
+.pt-0 {
+  padding-top: 0 !important;
+}
+
+.pt-1 {
+  padding-top: 0.25rem !important;
+}
+
+.pt-2 {
+  padding-top: 0.5rem !important;
+}
+
+.pt-3 {
+  padding-top: 1rem !important;
+}
+
+.pt-4 {
+  padding-top: 1.5rem !important;
+}
+
+.pt-5 {
+  padding-top: 3rem !important;
+}
+
+.pe-0 {
+  padding-right: 0 !important;
+}
+
+.pe-1 {
+  padding-right: 0.25rem !important;
+}
+
+.pe-2 {
+  padding-right: 0.5rem !important;
+}
+
+.pe-3 {
+  padding-right: 1rem !important;
+}
+
+.pe-4 {
+  padding-right: 1.5rem !important;
+}
+
+.pe-5 {
+  padding-right: 3rem !important;
+}
+
+.pb-0 {
+  padding-bottom: 0 !important;
+}
+
+.pb-1 {
+  padding-bottom: 0.25rem !important;
+}
+
+.pb-2 {
+  padding-bottom: 0.5rem !important;
+}
+
+.pb-3 {
+  padding-bottom: 1rem !important;
+}
+
+.pb-4 {
+  padding-bottom: 1.5rem !important;
+}
+
+.pb-5 {
+  padding-bottom: 3rem !important;
+}
+
+.ps-0 {
+  padding-left: 0 !important;
+}
+
+.ps-1 {
+  padding-left: 0.25rem !important;
+}
+
+.ps-2 {
+  padding-left: 0.5rem !important;
+}
+
+.ps-3 {
+  padding-left: 1rem !important;
+}
+
+.ps-4 {
+  padding-left: 1.5rem !important;
+}
+
+.ps-5 {
+  padding-left: 3rem !important;
+}
+
+.font-monospace {
+  font-family: var(--bs-font-monospace) !important;
+}
+
+.fs-1 {
+  font-size: calc(1.375rem + 1.5vw) !important;
+}
+
+.fs-2 {
+  font-size: calc(1.325rem + 0.9vw) !important;
+}
+
+.fs-3 {
+  font-size: calc(1.3rem + 0.6vw) !important;
+}
+
+.fs-4 {
+  font-size: calc(1.275rem + 0.3vw) !important;
+}
+
+.fs-5 {
+  font-size: 1.25rem !important;
+}
+
+.fs-6 {
+  font-size: 1rem !important;
+}
+
+.fst-italic {
+  font-style: italic !important;
+}
+
+.fst-normal {
+  font-style: normal !important;
+}
+
+.fw-light {
+  font-weight: 300 !important;
+}
+
+.fw-lighter {
+  font-weight: lighter !important;
+}
+
+.fw-normal {
+  font-weight: 400 !important;
+}
+
+.fw-bold {
+  font-weight: 700 !important;
+}
+
+.fw-bolder {
+  font-weight: bolder !important;
+}
+
+.lh-1 {
+  line-height: 1 !important;
+}
+
+.lh-sm {
+  line-height: 1.25 !important;
+}
+
+.lh-base {
+  line-height: 1.5 !important;
+}
+
+.lh-lg {
+  line-height: 2 !important;
+}
+
+.text-start {
+  text-align: left !important;
+}
+
+.text-end {
+  text-align: right !important;
+}
+
+.text-center {
+  text-align: center !important;
+}
+
+.text-decoration-none {
+  text-decoration: none !important;
+}
+
+.text-decoration-underline {
+  text-decoration: underline !important;
+}
+
+.text-decoration-line-through {
+  text-decoration: line-through !important;
+}
+
+.text-lowercase {
+  text-transform: lowercase !important;
+}
+
+.text-uppercase {
+  text-transform: uppercase !important;
+}
+
+.text-capitalize {
+  text-transform: capitalize !important;
+}
+
+.text-wrap {
+  white-space: normal !important;
+}
+
+.text-nowrap {
+  white-space: nowrap !important;
+}
+
+/* rtl:begin:remove */
+.text-break {
+  word-wrap: break-word !important;
+  word-break: break-word !important;
+}
+
+/* rtl:end:remove */
+.text-primary {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-secondary {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-success {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-info {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-warning {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-danger {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-light {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-dark {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-black {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-white {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-body {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-muted {
+  --bs-text-opacity: 1;
+  color: #6c757d !important;
+}
+
+.text-black-50 {
+  --bs-text-opacity: 1;
+  color: rgba(0, 0, 0, 0.5) !important;
+}
+
+.text-white-50 {
+  --bs-text-opacity: 1;
+  color: rgba(255, 255, 255, 0.5) !important;
+}
+
+.text-reset {
+  --bs-text-opacity: 1;
+  color: inherit !important;
+}
+
+.text-opacity-25 {
+  --bs-text-opacity: 0.25;
+}
+
+.text-opacity-50 {
+  --bs-text-opacity: 0.5;
+}
+
+.text-opacity-75 {
+  --bs-text-opacity: 0.75;
+}
+
+.text-opacity-100 {
+  --bs-text-opacity: 1;
+}
+
+.bg-primary {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-secondary {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-success {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-info {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-warning {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-danger {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-light {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-dark {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-black {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-white {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-body {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-transparent {
+  --bs-bg-opacity: 1;
+  background-color: transparent !important;
+}
+
+.bg-opacity-10 {
+  --bs-bg-opacity: 0.1;
+}
+
+.bg-opacity-25 {
+  --bs-bg-opacity: 0.25;
+}
+
+.bg-opacity-50 {
+  --bs-bg-opacity: 0.5;
+}
+
+.bg-opacity-75 {
+  --bs-bg-opacity: 0.75;
+}
+
+.bg-opacity-100 {
+  --bs-bg-opacity: 1;
+}
+
+.bg-gradient {
+  background-image: var(--bs-gradient) !important;
+}
+
+.user-select-all {
+  -webkit-user-select: all !important;
+  -moz-user-select: all !important;
+  user-select: all !important;
+}
+
+.user-select-auto {
+  -webkit-user-select: auto !important;
+  -moz-user-select: auto !important;
+  user-select: auto !important;
+}
+
+.user-select-none {
+  -webkit-user-select: none !important;
+  -moz-user-select: none !important;
+  user-select: none !important;
+}
+
+.pe-none {
+  pointer-events: none !important;
+}
+
+.pe-auto {
+  pointer-events: auto !important;
+}
+
+.rounded {
+  border-radius: 0.25rem !important;
+}
+
+.rounded-0 {
+  border-radius: 0 !important;
+}
+
+.rounded-1 {
+  border-radius: 0.2rem !important;
+}
+
+.rounded-2 {
+  border-radius: 0.25rem !important;
+}
+
+.rounded-3 {
+  border-radius: 0.3rem !important;
+}
+
+.rounded-circle {
+  border-radius: 50% !important;
+}
+
+.rounded-pill {
+  border-radius: 50rem !important;
+}
+
+.rounded-top {
+  border-top-left-radius: 0.25rem !important;
+  border-top-right-radius: 0.25rem !important;
+}
+
+.rounded-end {
+  border-top-right-radius: 0.25rem !important;
+  border-bottom-right-radius: 0.25rem !important;
+}
+
+.rounded-bottom {
+  border-bottom-right-radius: 0.25rem !important;
+  border-bottom-left-radius: 0.25rem !important;
+}
+
+.rounded-start {
+  border-bottom-left-radius: 0.25rem !important;
+  border-top-left-radius: 0.25rem !important;
+}
+
+.visible {
+  visibility: visible !important;
+}
+
+.invisible {
+  visibility: hidden !important;
+}
+
+@media (min-width: 576px) {
+  .float-sm-start {
+    float: left !important;
+  }
+
+  .float-sm-end {
+    float: right !important;
+  }
+
+  .float-sm-none {
+    float: none !important;
+  }
+
+  .d-sm-inline {
+    display: inline !important;
+  }
+
+  .d-sm-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-sm-block {
+    display: block !important;
+  }
+
+  .d-sm-grid {
+    display: grid !important;
+  }
+
+  .d-sm-table {
+    display: table !important;
+  }
+
+  .d-sm-table-row {
+    display: table-row !important;
+  }
+
+  .d-sm-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-sm-flex {
+    display: flex !important;
+  }
+
+  .d-sm-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-sm-none {
+    display: none !important;
+  }
+
+  .flex-sm-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-sm-row {
+    flex-direction: row !important;
+  }
+
+  .flex-sm-column {
+    flex-direction: column !important;
+  }
+
+  .flex-sm-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-sm-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-sm-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-sm-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-sm-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-sm-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-sm-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-sm-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-sm-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-sm-0 {
+    gap: 0 !important;
+  }
+
+  .gap-sm-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-sm-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-sm-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-sm-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-sm-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-sm-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-sm-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-sm-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-sm-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-sm-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-sm-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-sm-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-sm-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-sm-center {
+    align-items: center !important;
+  }
+
+  .align-items-sm-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-sm-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-sm-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-sm-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-sm-center {
+    align-content: center !important;
+  }
+
+  .align-content-sm-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-sm-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-sm-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-sm-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-sm-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-sm-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-sm-center {
+    align-self: center !important;
+  }
+
+  .align-self-sm-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-sm-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-sm-first {
+    order: -1 !important;
+  }
+
+  .order-sm-0 {
+    order: 0 !important;
+  }
+
+  .order-sm-1 {
+    order: 1 !important;
+  }
+
+  .order-sm-2 {
+    order: 2 !important;
+  }
+
+  .order-sm-3 {
+    order: 3 !important;
+  }
+
+  .order-sm-4 {
+    order: 4 !important;
+  }
+
+  .order-sm-5 {
+    order: 5 !important;
+  }
+
+  .order-sm-last {
+    order: 6 !important;
+  }
+
+  .m-sm-0 {
+    margin: 0 !important;
+  }
+
+  .m-sm-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-sm-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-sm-3 {
+    margin: 1rem !important;
+  }
+
+  .m-sm-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-sm-5 {
+    margin: 3rem !important;
+  }
+
+  .m-sm-auto {
+    margin: auto !important;
+  }
+
+  .mx-sm-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-sm-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-sm-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-sm-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-sm-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-sm-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-sm-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-sm-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-sm-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-sm-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-sm-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-sm-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-sm-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-sm-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-sm-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-sm-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-sm-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-sm-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-sm-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-sm-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-sm-auto {
+    margin-top: auto !important;
+  }
+
+  .me-sm-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-sm-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-sm-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-sm-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-sm-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-sm-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-sm-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-sm-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-sm-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-sm-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-sm-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-sm-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-sm-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-sm-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-sm-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-sm-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-sm-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-sm-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-sm-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-sm-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-sm-auto {
+    margin-left: auto !important;
+  }
+
+  .p-sm-0 {
+    padding: 0 !important;
+  }
+
+  .p-sm-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-sm-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-sm-3 {
+    padding: 1rem !important;
+  }
+
+  .p-sm-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-sm-5 {
+    padding: 3rem !important;
+  }
+
+  .px-sm-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-sm-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-sm-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-sm-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-sm-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-sm-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-sm-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-sm-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-sm-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-sm-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-sm-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-sm-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-sm-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-sm-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-sm-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-sm-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-sm-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-sm-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-sm-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-sm-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-sm-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-sm-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-sm-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-sm-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-sm-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-sm-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-sm-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-sm-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-sm-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-sm-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-sm-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-sm-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-sm-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-sm-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-sm-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-sm-5 {
+    padding-left: 3rem !important;
+  }
+
+  .text-sm-start {
+    text-align: left !important;
+  }
+
+  .text-sm-end {
+    text-align: right !important;
+  }
+
+  .text-sm-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 768px) {
+  .float-md-start {
+    float: left !important;
+  }
+
+  .float-md-end {
+    float: right !important;
+  }
+
+  .float-md-none {
+    float: none !important;
+  }
+
+  .d-md-inline {
+    display: inline !important;
+  }
+
+  .d-md-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-md-block {
+    display: block !important;
+  }
+
+  .d-md-grid {
+    display: grid !important;
+  }
+
+  .d-md-table {
+    display: table !important;
+  }
+
+  .d-md-table-row {
+    display: table-row !important;
+  }
+
+  .d-md-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-md-flex {
+    display: flex !important;
+  }
+
+  .d-md-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-md-none {
+    display: none !important;
+  }
+
+  .flex-md-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-md-row {
+    flex-direction: row !important;
+  }
+
+  .flex-md-column {
+    flex-direction: column !important;
+  }
+
+  .flex-md-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-md-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-md-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-md-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-md-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-md-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-md-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-md-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-md-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-md-0 {
+    gap: 0 !important;
+  }
+
+  .gap-md-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-md-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-md-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-md-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-md-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-md-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-md-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-md-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-md-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-md-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-md-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-md-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-md-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-md-center {
+    align-items: center !important;
+  }
+
+  .align-items-md-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-md-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-md-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-md-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-md-center {
+    align-content: center !important;
+  }
+
+  .align-content-md-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-md-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-md-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-md-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-md-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-md-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-md-center {
+    align-self: center !important;
+  }
+
+  .align-self-md-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-md-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-md-first {
+    order: -1 !important;
+  }
+
+  .order-md-0 {
+    order: 0 !important;
+  }
+
+  .order-md-1 {
+    order: 1 !important;
+  }
+
+  .order-md-2 {
+    order: 2 !important;
+  }
+
+  .order-md-3 {
+    order: 3 !important;
+  }
+
+  .order-md-4 {
+    order: 4 !important;
+  }
+
+  .order-md-5 {
+    order: 5 !important;
+  }
+
+  .order-md-last {
+    order: 6 !important;
+  }
+
+  .m-md-0 {
+    margin: 0 !important;
+  }
+
+  .m-md-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-md-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-md-3 {
+    margin: 1rem !important;
+  }
+
+  .m-md-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-md-5 {
+    margin: 3rem !important;
+  }
+
+  .m-md-auto {
+    margin: auto !important;
+  }
+
+  .mx-md-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-md-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-md-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-md-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-md-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-md-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-md-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-md-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-md-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-md-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-md-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-md-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-md-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-md-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-md-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-md-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-md-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-md-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-md-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-md-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-md-auto {
+    margin-top: auto !important;
+  }
+
+  .me-md-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-md-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-md-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-md-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-md-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-md-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-md-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-md-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-md-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-md-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-md-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-md-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-md-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-md-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-md-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-md-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-md-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-md-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-md-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-md-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-md-auto {
+    margin-left: auto !important;
+  }
+
+  .p-md-0 {
+    padding: 0 !important;
+  }
+
+  .p-md-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-md-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-md-3 {
+    padding: 1rem !important;
+  }
+
+  .p-md-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-md-5 {
+    padding: 3rem !important;
+  }
+
+  .px-md-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-md-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-md-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-md-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-md-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-md-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-md-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-md-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-md-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-md-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-md-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-md-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-md-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-md-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-md-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-md-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-md-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-md-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-md-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-md-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-md-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-md-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-md-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-md-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-md-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-md-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-md-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-md-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-md-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-md-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-md-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-md-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-md-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-md-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-md-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-md-5 {
+    padding-left: 3rem !important;
+  }
+
+  .text-md-start {
+    text-align: left !important;
+  }
+
+  .text-md-end {
+    text-align: right !important;
+  }
+
+  .text-md-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 992px) {
+  .float-lg-start {
+    float: left !important;
+  }
+
+  .float-lg-end {
+    float: right !important;
+  }
+
+  .float-lg-none {
+    float: none !important;
+  }
+
+  .d-lg-inline {
+    display: inline !important;
+  }
+
+  .d-lg-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-lg-block {
+    display: block !important;
+  }
+
+  .d-lg-grid {
+    display: grid !important;
+  }
+
+  .d-lg-table {
+    display: table !important;
+  }
+
+  .d-lg-table-row {
+    display: table-row !important;
+  }
+
+  .d-lg-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-lg-flex {
+    display: flex !important;
+  }
+
+  .d-lg-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-lg-none {
+    display: none !important;
+  }
+
+  .flex-lg-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-lg-row {
+    flex-direction: row !important;
+  }
+
+  .flex-lg-column {
+    flex-direction: column !important;
+  }
+
+  .flex-lg-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-lg-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-lg-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-lg-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-lg-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-lg-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-lg-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-lg-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-lg-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-lg-0 {
+    gap: 0 !important;
+  }
+
+  .gap-lg-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-lg-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-lg-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-lg-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-lg-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-lg-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-lg-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-lg-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-lg-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-lg-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-lg-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-lg-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-lg-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-lg-center {
+    align-items: center !important;
+  }
+
+  .align-items-lg-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-lg-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-lg-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-lg-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-lg-center {
+    align-content: center !important;
+  }
+
+  .align-content-lg-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-lg-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-lg-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-lg-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-lg-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-lg-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-lg-center {
+    align-self: center !important;
+  }
+
+  .align-self-lg-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-lg-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-lg-first {
+    order: -1 !important;
+  }
+
+  .order-lg-0 {
+    order: 0 !important;
+  }
+
+  .order-lg-1 {
+    order: 1 !important;
+  }
+
+  .order-lg-2 {
+    order: 2 !important;
+  }
+
+  .order-lg-3 {
+    order: 3 !important;
+  }
+
+  .order-lg-4 {
+    order: 4 !important;
+  }
+
+  .order-lg-5 {
+    order: 5 !important;
+  }
+
+  .order-lg-last {
+    order: 6 !important;
+  }
+
+  .m-lg-0 {
+    margin: 0 !important;
+  }
+
+  .m-lg-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-lg-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-lg-3 {
+    margin: 1rem !important;
+  }
+
+  .m-lg-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-lg-5 {
+    margin: 3rem !important;
+  }
+
+  .m-lg-auto {
+    margin: auto !important;
+  }
+
+  .mx-lg-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-lg-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-lg-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-lg-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-lg-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-lg-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-lg-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-lg-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-lg-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-lg-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-lg-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-lg-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-lg-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-lg-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-lg-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-lg-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-lg-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-lg-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-lg-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-lg-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-lg-auto {
+    margin-top: auto !important;
+  }
+
+  .me-lg-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-lg-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-lg-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-lg-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-lg-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-lg-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-lg-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-lg-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-lg-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-lg-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-lg-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-lg-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-lg-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-lg-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-lg-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-lg-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-lg-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-lg-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-lg-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-lg-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-lg-auto {
+    margin-left: auto !important;
+  }
+
+  .p-lg-0 {
+    padding: 0 !important;
+  }
+
+  .p-lg-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-lg-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-lg-3 {
+    padding: 1rem !important;
+  }
+
+  .p-lg-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-lg-5 {
+    padding: 3rem !important;
+  }
+
+  .px-lg-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-lg-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-lg-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-lg-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-lg-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-lg-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-lg-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-lg-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-lg-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-lg-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-lg-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-lg-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-lg-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-lg-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-lg-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-lg-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-lg-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-lg-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-lg-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-lg-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-lg-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-lg-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-lg-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-lg-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-lg-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-lg-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-lg-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-lg-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-lg-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-lg-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-lg-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-lg-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-lg-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-lg-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-lg-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-lg-5 {
+    padding-left: 3rem !important;
+  }
+
+  .text-lg-start {
+    text-align: left !important;
+  }
+
+  .text-lg-end {
+    text-align: right !important;
+  }
+
+  .text-lg-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 1200px) {
+  .float-xl-start {
+    float: left !important;
+  }
+
+  .float-xl-end {
+    float: right !important;
+  }
+
+  .float-xl-none {
+    float: none !important;
+  }
+
+  .d-xl-inline {
+    display: inline !important;
+  }
+
+  .d-xl-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-xl-block {
+    display: block !important;
+  }
+
+  .d-xl-grid {
+    display: grid !important;
+  }
+
+  .d-xl-table {
+    display: table !important;
+  }
+
+  .d-xl-table-row {
+    display: table-row !important;
+  }
+
+  .d-xl-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-xl-flex {
+    display: flex !important;
+  }
+
+  .d-xl-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-xl-none {
+    display: none !important;
+  }
+
+  .flex-xl-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-xl-row {
+    flex-direction: row !important;
+  }
+
+  .flex-xl-column {
+    flex-direction: column !important;
+  }
+
+  .flex-xl-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-xl-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-xl-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-xl-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-xl-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-xl-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-xl-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-xl-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-xl-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-xl-0 {
+    gap: 0 !important;
+  }
+
+  .gap-xl-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-xl-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-xl-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-xl-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-xl-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-xl-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-xl-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-xl-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-xl-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-xl-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-xl-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-xl-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-xl-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-xl-center {
+    align-items: center !important;
+  }
+
+  .align-items-xl-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-xl-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-xl-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-xl-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-xl-center {
+    align-content: center !important;
+  }
+
+  .align-content-xl-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-xl-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-xl-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-xl-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-xl-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-xl-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-xl-center {
+    align-self: center !important;
+  }
+
+  .align-self-xl-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-xl-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-xl-first {
+    order: -1 !important;
+  }
+
+  .order-xl-0 {
+    order: 0 !important;
+  }
+
+  .order-xl-1 {
+    order: 1 !important;
+  }
+
+  .order-xl-2 {
+    order: 2 !important;
+  }
+
+  .order-xl-3 {
+    order: 3 !important;
+  }
+
+  .order-xl-4 {
+    order: 4 !important;
+  }
+
+  .order-xl-5 {
+    order: 5 !important;
+  }
+
+  .order-xl-last {
+    order: 6 !important;
+  }
+
+  .m-xl-0 {
+    margin: 0 !important;
+  }
+
+  .m-xl-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-xl-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-xl-3 {
+    margin: 1rem !important;
+  }
+
+  .m-xl-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-xl-5 {
+    margin: 3rem !important;
+  }
+
+  .m-xl-auto {
+    margin: auto !important;
+  }
+
+  .mx-xl-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-xl-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-xl-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-xl-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-xl-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-xl-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-xl-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-xl-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-xl-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-xl-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-xl-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-xl-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-xl-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-xl-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-xl-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-xl-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-xl-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-xl-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-xl-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-xl-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-xl-auto {
+    margin-top: auto !important;
+  }
+
+  .me-xl-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-xl-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-xl-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-xl-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-xl-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-xl-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-xl-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-xl-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-xl-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-xl-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-xl-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-xl-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-xl-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-xl-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-xl-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-xl-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-xl-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-xl-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-xl-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-xl-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-xl-auto {
+    margin-left: auto !important;
+  }
+
+  .p-xl-0 {
+    padding: 0 !important;
+  }
+
+  .p-xl-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-xl-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-xl-3 {
+    padding: 1rem !important;
+  }
+
+  .p-xl-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-xl-5 {
+    padding: 3rem !important;
+  }
+
+  .px-xl-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-xl-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-xl-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-xl-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-xl-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-xl-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-xl-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-xl-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-xl-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-xl-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-xl-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-xl-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-xl-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-xl-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-xl-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-xl-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-xl-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-xl-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-xl-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-xl-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-xl-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-xl-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-xl-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-xl-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-xl-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-xl-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-xl-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-xl-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-xl-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-xl-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-xl-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-xl-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-xl-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-xl-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-xl-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-xl-5 {
+    padding-left: 3rem !important;
+  }
+
+  .text-xl-start {
+    text-align: left !important;
+  }
+
+  .text-xl-end {
+    text-align: right !important;
+  }
+
+  .text-xl-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 1400px) {
+  .float-xxl-start {
+    float: left !important;
+  }
+
+  .float-xxl-end {
+    float: right !important;
+  }
+
+  .float-xxl-none {
+    float: none !important;
+  }
+
+  .d-xxl-inline {
+    display: inline !important;
+  }
+
+  .d-xxl-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-xxl-block {
+    display: block !important;
+  }
+
+  .d-xxl-grid {
+    display: grid !important;
+  }
+
+  .d-xxl-table {
+    display: table !important;
+  }
+
+  .d-xxl-table-row {
+    display: table-row !important;
+  }
+
+  .d-xxl-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-xxl-flex {
+    display: flex !important;
+  }
+
+  .d-xxl-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-xxl-none {
+    display: none !important;
+  }
+
+  .flex-xxl-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-xxl-row {
+    flex-direction: row !important;
+  }
+
+  .flex-xxl-column {
+    flex-direction: column !important;
+  }
+
+  .flex-xxl-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-xxl-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-xxl-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-xxl-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-xxl-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-xxl-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-xxl-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-xxl-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-xxl-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-xxl-0 {
+    gap: 0 !important;
+  }
+
+  .gap-xxl-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-xxl-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-xxl-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-xxl-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-xxl-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-xxl-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-xxl-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-xxl-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-xxl-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-xxl-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-xxl-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-xxl-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-xxl-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-xxl-center {
+    align-items: center !important;
+  }
+
+  .align-items-xxl-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-xxl-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-xxl-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-xxl-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-xxl-center {
+    align-content: center !important;
+  }
+
+  .align-content-xxl-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-xxl-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-xxl-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-xxl-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-xxl-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-xxl-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-xxl-center {
+    align-self: center !important;
+  }
+
+  .align-self-xxl-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-xxl-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-xxl-first {
+    order: -1 !important;
+  }
+
+  .order-xxl-0 {
+    order: 0 !important;
+  }
+
+  .order-xxl-1 {
+    order: 1 !important;
+  }
+
+  .order-xxl-2 {
+    order: 2 !important;
+  }
+
+  .order-xxl-3 {
+    order: 3 !important;
+  }
+
+  .order-xxl-4 {
+    order: 4 !important;
+  }
+
+  .order-xxl-5 {
+    order: 5 !important;
+  }
+
+  .order-xxl-last {
+    order: 6 !important;
+  }
+
+  .m-xxl-0 {
+    margin: 0 !important;
+  }
+
+  .m-xxl-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-xxl-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-xxl-3 {
+    margin: 1rem !important;
+  }
+
+  .m-xxl-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-xxl-5 {
+    margin: 3rem !important;
+  }
+
+  .m-xxl-auto {
+    margin: auto !important;
+  }
+
+  .mx-xxl-0 {
+    margin-right: 0 !important;
+    margin-left: 0 !important;
+  }
+
+  .mx-xxl-1 {
+    margin-right: 0.25rem !important;
+    margin-left: 0.25rem !important;
+  }
+
+  .mx-xxl-2 {
+    margin-right: 0.5rem !important;
+    margin-left: 0.5rem !important;
+  }
+
+  .mx-xxl-3 {
+    margin-right: 1rem !important;
+    margin-left: 1rem !important;
+  }
+
+  .mx-xxl-4 {
+    margin-right: 1.5rem !important;
+    margin-left: 1.5rem !important;
+  }
+
+  .mx-xxl-5 {
+    margin-right: 3rem !important;
+    margin-left: 3rem !important;
+  }
+
+  .mx-xxl-auto {
+    margin-right: auto !important;
+    margin-left: auto !important;
+  }
+
+  .my-xxl-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-xxl-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-xxl-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-xxl-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-xxl-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-xxl-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-xxl-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-xxl-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-xxl-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-xxl-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-xxl-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-xxl-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-xxl-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-xxl-auto {
+    margin-top: auto !important;
+  }
+
+  .me-xxl-0 {
+    margin-right: 0 !important;
+  }
+
+  .me-xxl-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .me-xxl-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .me-xxl-3 {
+    margin-right: 1rem !important;
+  }
+
+  .me-xxl-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .me-xxl-5 {
+    margin-right: 3rem !important;
+  }
+
+  .me-xxl-auto {
+    margin-right: auto !important;
+  }
+
+  .mb-xxl-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-xxl-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-xxl-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-xxl-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-xxl-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-xxl-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-xxl-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-xxl-0 {
+    margin-left: 0 !important;
+  }
+
+  .ms-xxl-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .ms-xxl-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .ms-xxl-3 {
+    margin-left: 1rem !important;
+  }
+
+  .ms-xxl-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .ms-xxl-5 {
+    margin-left: 3rem !important;
+  }
+
+  .ms-xxl-auto {
+    margin-left: auto !important;
+  }
+
+  .p-xxl-0 {
+    padding: 0 !important;
+  }
+
+  .p-xxl-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-xxl-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-xxl-3 {
+    padding: 1rem !important;
+  }
+
+  .p-xxl-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-xxl-5 {
+    padding: 3rem !important;
+  }
+
+  .px-xxl-0 {
+    padding-right: 0 !important;
+    padding-left: 0 !important;
+  }
+
+  .px-xxl-1 {
+    padding-right: 0.25rem !important;
+    padding-left: 0.25rem !important;
+  }
+
+  .px-xxl-2 {
+    padding-right: 0.5rem !important;
+    padding-left: 0.5rem !important;
+  }
+
+  .px-xxl-3 {
+    padding-right: 1rem !important;
+    padding-left: 1rem !important;
+  }
+
+  .px-xxl-4 {
+    padding-right: 1.5rem !important;
+    padding-left: 1.5rem !important;
+  }
+
+  .px-xxl-5 {
+    padding-right: 3rem !important;
+    padding-left: 3rem !important;
+  }
+
+  .py-xxl-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-xxl-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-xxl-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-xxl-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-xxl-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-xxl-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-xxl-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-xxl-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-xxl-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-xxl-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-xxl-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-xxl-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-xxl-0 {
+    padding-right: 0 !important;
+  }
+
+  .pe-xxl-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .pe-xxl-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .pe-xxl-3 {
+    padding-right: 1rem !important;
+  }
+
+  .pe-xxl-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .pe-xxl-5 {
+    padding-right: 3rem !important;
+  }
+
+  .pb-xxl-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-xxl-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-xxl-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-xxl-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-xxl-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-xxl-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-xxl-0 {
+    padding-left: 0 !important;
+  }
+
+  .ps-xxl-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .ps-xxl-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .ps-xxl-3 {
+    padding-left: 1rem !important;
+  }
+
+  .ps-xxl-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .ps-xxl-5 {
+    padding-left: 3rem !important;
+  }
+
+  .text-xxl-start {
+    text-align: left !important;
+  }
+
+  .text-xxl-end {
+    text-align: right !important;
+  }
+
+  .text-xxl-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 1200px) {
+  .fs-1 {
+    font-size: 2.5rem !important;
+  }
+
+  .fs-2 {
+    font-size: 2rem !important;
+  }
+
+  .fs-3 {
+    font-size: 1.75rem !important;
+  }
+
+  .fs-4 {
+    font-size: 1.5rem !important;
+  }
+}
+@media print {
+  .d-print-inline {
+    display: inline !important;
+  }
+
+  .d-print-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-print-block {
+    display: block !important;
+  }
+
+  .d-print-grid {
+    display: grid !important;
+  }
+
+  .d-print-table {
+    display: table !important;
+  }
+
+  .d-print-table-row {
+    display: table-row !important;
+  }
+
+  .d-print-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-print-flex {
+    display: flex !important;
+  }
+
+  .d-print-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-print-none {
+    display: none !important;
+  }
+}
+
+/*# sourceMappingURL=bootstrap.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map
new file mode 100644
index 0000000..ade3b98
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["bootstrap.css","../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","../../scss/vendor/_rfs.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACAhB;;;;;EAAA;ACAA;EAQI,kBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,kBAAA;EAAA,iBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAAA,kBAAA;EAAA,gBAAA;EAAA,kBAAA;EAAA,uBAAA;EAIA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAIA,qBAAA;EAAA,uBAAA;EAAA,qBAAA;EAAA,kBAAA;EAAA,qBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAIA,8BAAA;EAAA,iCAAA;EAAA,6BAAA;EAAA,2BAAA;EAAA,6BAAA;EAAA,4BAAA;EAAA,6BAAA;EAAA,yBAAA;EAGF,6BAAA;EACA,uBAAA;EACA,yBAAA;EAMA,qNAAA;EACA,yGAAA;EACA,yFAAA;EAQA,gDAAA;EACA,yBAAA;EACA,0BAAA;EACA,0BAAA;EACA,wBAAA;EAIA,kBAAA;AFSF;;AG3CA;;;EAGE,sBAAA;AH8CF;;AG/BI;EANJ;IAOM,uBAAA;EHmCJ;AACF;;AGtBA;EACE,SAAA;EACA,uCAAA;ECmPI,mCALI;ED5OR,uCAAA;EACA,uCAAA;EACA,2BAAA;EACA,qCAAA;EACA,mCAAA;EACA,8BAAA;EACA,6CAAA;AHyBF;;AGfA;EACE,cAAA;EACA,cEqkB4B;EFpkB5B,8BAAA;EACA,SAAA;EACA,aEokB4B;ALljB9B;;AGfA;EACE,WE8a4B;AL5Z9B;;AGRA;EACE,aAAA;EACA,qBE0gB4B;EFvgB5B,gBE0gB4B;EFzgB5B,gBE0gB4B;ALjgB9B;;AGLA;ECwMQ,iCAAA;AJ/LR;AI6BI;EDtCJ;IC+MQ,iBAAA;EJlMN;AACF;;AGTA;ECmMQ,iCAAA;AJtLR;AIoBI;EDjCJ;IC0MQ,eAAA;EJzLN;AACF;;AGbA;EC8LQ,+BAAA;AJ7KR;AIWI;ED5BJ;ICqMQ,kBAAA;EJhLN;AACF;;AGjBA;ECyLQ,iCAAA;AJpKR;AIEI;EDvBJ;ICgMQ,iBAAA;EJvKN;AACF;;AGrBA;ECgLM,kBALI;AJlJV;;AGpBA;EC2KM,eALI;AJ9IV;;AGbA;EACE,aAAA;EACA,mBEwT0B;ALxS5B;;AGLA;;EAEE,yCAAA;EAAA,iCAAA;EACA,YAAA;EACA,sCAAA;EAAA,8BAAA;AHQF;;AGFA;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;AHKF;;AGCA;;EAEE,kBAAA;AHEF;;AGCA;;;EAGE,aAAA;EACA,mBAAA;AHEF;;AGCA;;;;EAIE,gBAAA;AHEF;;AGCA;EACE,gBE6Y4B;AL3Y9B;;AGGA;EACE,qBAAA;EACA,cAAA;AHAF;;AGMA;EACE,gBAAA;AHHF;;AGWA;;EAEE,mBEsX4B;AL9X9B;;AGgBA;EC4EM,kBALI;AJnFV;;AGmBA;EACE,cEkb4B;EFjb5B,yBEyb4B;ALzc9B;;AGyBA;;EAEE,kBAAA;ECwDI,iBALI;EDjDR,cAAA;EACA,wBAAA;AHtBF;;AGyBA;EAAM,eAAA;AHrBN;;AGsBA;EAAM,WAAA;AHlBN;;AGuBA;EACE,cEpNQ;EFqNR,0BEwLwC;AL5M1C;AGsBE;EACE,cEuLsC;AL3M1C;;AG+BE;EAEE,cAAA;EACA,qBAAA;AH7BJ;;AGoCA;;;;EAIE,qCEmS4B;EDrRxB,cALI;EDPR,+BAAA;EACA,2BAAA;AHjCF;;AGwCA;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;ECAI,kBALI;AJ/BV;AGyCE;ECLI,kBALI;EDYN,cAAA;EACA,kBAAA;AHvCJ;;AG2CA;ECZM,kBALI;EDmBR,cE1QQ;EF2QR,qBAAA;AHxCF;AG2CE;EACE,cAAA;AHzCJ;;AG6CA;EACE,sBAAA;ECxBI,kBALI;ED+BR,WEvTS;EFwTT,yBE/SS;ECEP,qBAAA;ANoQJ;AG4CE;EACE,UAAA;EC/BE,cALI;EDsCN,gBEgQ0B;AL1S9B;;AGmDA;EACE,gBAAA;AHhDF;;AGsDA;;EAEE,sBAAA;AHnDF;;AG2DA;EACE,oBAAA;EACA,yBAAA;AHxDF;;AG2DA;EACE,mBE8T4B;EF7T5B,sBE6T4B;EF5T5B,cE1VS;EF2VT,gBAAA;AHxDF;;AG+DA;EAEE,mBAAA;EACA,gCAAA;AH7DF;;AGgEA;;;;;;EAME,qBAAA;EACA,mBAAA;EACA,eAAA;AH7DF;;AGqEA;EACE,qBAAA;AHlEF;;AGwEA;EAEE,gBAAA;AHtEF;;AG8EA;EACE,UAAA;AH3EF;;AGgFA;;;;;EAKE,SAAA;EACA,oBAAA;EC9HI,kBALI;EDqIR,oBAAA;AH7EF;;AGiFA;;EAEE,oBAAA;AH9EF;;AGmFA;EACE,eAAA;AHhFF;;AGmFA;EAGE,iBAAA;AHlFF;AGqFE;EACE,UAAA;AHnFJ;;AG0FA;EACE,aAAA;AHvFF;;AG+FA;;;;EAIE,0BAAA;AH5FF;AG+FI;;;;EACE,eAAA;AH1FN;;AGiGA;EACE,UAAA;EACA,kBAAA;AH9FF;;AGmGA;EACE,gBAAA;AHhGF;;AG0GA;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;AHvGF;;AG+GA;EACE,WAAA;EACA,WAAA;EACA,UAAA;EACA,qBEmJ4B;EDtWtB,iCAAA;EDsNN,oBAAA;AH7GF;AI3QI;EDiXJ;ICxMQ,iBAAA;EJsGN;AACF;AG0GE;EACE,WAAA;AHxGJ;;AG+GA;;;;;;;EAOE,UAAA;AH5GF;;AG+GA;EACE,YAAA;AH5GF;;AGqHA;EACE,oBAAA;EACA,6BAAA;AHlHF;;AG0HA;;;;;;;CAAA;AAWA;EACE,wBAAA;AH1HF;;AG+HA;EACE,UAAA;AH5HF;;AGkIA;EACE,aAAA;AH/HF;;AGqIA;EACE,aAAA;EACA,0BAAA;AHlIF;;AGuIA;EACE,qBAAA;AHpIF;;AGyIA;EACE,SAAA;AHtIF;;AG6IA;EACE,kBAAA;EACA,eAAA;AH1IF;;AGkJA;EACE,wBAAA;AH/IF;;AGuJA;EACE,wBAAA;AHpJF;;AO/bA;EHyQM,kBALI;EGlQR,gBF6lB4B;AL3J9B;;AO7bE;EHsQM,iCAAA;EGpQJ,gBFglBkB;EE/kBlB,gBFikB0B;ALjI9B;AI/VI;EGpGF;IH6QM,eAAA;EJ0LN;AACF;;AOxcE;EHsQM,iCAAA;EGpQJ,gBFglBkB;EE/kBlB,gBFikB0B;ALtH9B;AI1WI;EGpGF;IH6QM,iBAAA;EJqMN;AACF;;AOndE;EHsQM,iCAAA;EGpQJ,gBFglBkB;EE/kBlB,gBFikB0B;AL3G9B;AIrXI;EGpGF;IH6QM,eAAA;EJgNN;AACF;;AO9dE;EHsQM,iCAAA;EGpQJ,gBFglBkB;EE/kBlB,gBFikB0B;ALhG9B;AIhYI;EGpGF;IH6QM,iBAAA;EJ2NN;AACF;;AOzeE;EHsQM,iCAAA;EGpQJ,gBFglBkB;EE/kBlB,gBFikB0B;ALrF9B;AI3YI;EGpGF;IH6QM,eAAA;EJsON;AACF;;AOpfE;EHsQM,iCAAA;EGpQJ,gBFglBkB;EE/kBlB,gBFikB0B;AL1E9B;AItZI;EGpGF;IH6QM,iBAAA;EJiPN;AACF;;AOzeA;ECrDE,eAAA;EACA,gBAAA;ARkiBF;;AOzeA;EC1DE,eAAA;EACA,gBAAA;ARuiBF;;AO3eA;EACE,qBAAA;AP8eF;AO5eE;EACE,oBFolB0B;ALtG9B;;AOpeA;EHsNM,kBALI;EG/MR,yBAAA;APueF;;AOneA;EACE,mBFgSO;EDjFH,kBALI;AJ6RV;AOpeE;EACE,gBAAA;APseJ;;AOleA;EACE,iBAAA;EACA,mBFsRO;EDjFH,kBALI;EG9LR,cFpFS;ALyjBX;AOneE;EACE,aAAA;APqeJ;;ASnkBA;ECIE,eAAA;EAGA,YAAA;AVikBF;;ASlkBA;EACE,gBJ08CkC;EIz8ClC,sBJPS;EIQT,yBAAA;EHGE,sBAAA;EIRF,eAAA;EAGA,YAAA;AV0kBF;;AS5jBA;EAEE,qBAAA;AT8jBF;;AS3jBA;EACE,qBAAA;EACA,cAAA;AT8jBF;;AS3jBA;EL+PM,kBALI;EKxPR,cJ1BS;ALwlBX;;AWhmBE;;;;;;;ECHA,WAAA;EACA,0CAAA;EACA,yCAAA;EACA,kBAAA;EACA,iBAAA;AZ6mBF;;AarjBI;EF5CE;IACE,gBNuce;EL8JrB;AACF;Aa3jBI;EF5CE;IACE,gBNuce;ELmKrB;AACF;AahkBI;EF5CE;IACE,gBNuce;ELwKrB;AACF;AarkBI;EF5CE;IACE,iBNuce;EL6KrB;AACF;Aa1kBI;EF5CE;IACE,iBNuce;ELkLrB;AACF;AczoBE;ECAA,qBAAA;EACA,gBAAA;EACA,aAAA;EACA,eAAA;EACA,yCAAA;EACA,4CAAA;EACA,2CAAA;Af4oBF;Ac/oBI;ECYF,cAAA;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3BO;Ee4BP,qBfozBoC;EenzBpC,UAAA;EAKE,kDf6rB0B;ALq7ChC;AoB3mEE;EAEE,aAAA;ApB4mEJ;AoBxmEE;EACE,cf1CO;Ee4CP,UAAA;ApBymEJ;AoB5mEE;EACE,cf1CO;Ee4CP,UAAA;ApBymEJ;AoBjmEE;EAEE,yBf1DO;Ee6DP,UAAA;ApBgmEJ;AoB5lEE;EACE,yBAAA;EACA,0BAAA;EACA,2BfgpB0B;EehpB1B,0BfgpB0B;Ee/oB1B,cf9DO;EiBbT,yBjBMS;EeuEP,oBAAA;EACA,qBAAA;EACA,mBAAA;EACA,eAAA;EACA,4Bfsa0B;Eera1B,gBAAA;ECtEE,qIDuEF;ApB8lEJ;AqBjqEM;EDuDJ;ICtDM,gBAAA;ErBoqEN;AACF;AoBhmEE;EACE,yBfm5B8B;AL+sClC;AoB/lEE;EACE,yBAAA;EACA,0BAAA;EACA,2Bf6nB0B;Ee7nB1B,0Bf6nB0B;Ee5nB1B,cfjFO;EiBbT,yBjBMS;Ee0FP,oBAAA;EACA,qBAAA;EACA,mBAAA;EACA,eAAA;EACA,4BfmZ0B;EelZ1B,gBAAA;ECzFE,6ID0FF;EC1FE,qID0FF;ApBimEJ;AqBvrEM;ED0EJ;ICzEM,wBAAA;IAAA,gBAAA;ErB0rEN;AACF;AoBnmEE;EACE,yBfg4B8B;ALquClC;;AoB5lEA;EACE,cAAA;EACA,WAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBf+c4B;Ee9c5B,cf5GS;Ee6GT,6BAAA;EACA,yBAAA;EACA,mBAAA;ApB+lEF;AoB7lEE;EAEE,gBAAA;EACA,eAAA;ApB8lEJ;;AoBnlEA;EACE,sCfstBsC;EertBtC,uBAAA;EhBmJI,mBALI;EE7QN,qBAAA;ANutEJ;AoBplEE;EACE,uBAAA;EACA,wBAAA;EACA,0BfilB0B;EejlB1B,yBfilB0B;ALqgD9B;AoBnlEE;EACE,uBAAA;EACA,wBAAA;EACA,0Bf2kB0B;Ee3kB1B,yBf2kB0B;AL0gD9B;;AoBjlEA;EACE,oCfosBsC;EensBtC,oBAAA;EhBgII,kBALI;EE7QN,qBAAA;ANwuEJ;AoBllEE;EACE,oBAAA;EACA,qBAAA;EACA,wBfkkB0B;EelkB1B,uBfkkB0B;ALkhD9B;AoBjlEE;EACE,oBAAA;EACA,qBAAA;EACA,wBf4jB0B;Ee5jB1B,uBf4jB0B;ALuhD9B;;AoB3kEE;EACE,uCf2qBoC;ALm6CxC;AoB3kEE;EACE,sCfwqBoC;ALq6CxC;AoB1kEE;EACE,oCfqqBoC;ALu6CxC;;AoBvkEA;EACE,WfmqBsC;EelqBtC,YAAA;EACA,iBfkhB4B;ALwjD9B;AoBxkEE;EACE,eAAA;ApB0kEJ;AoBvkEE;EACE,aAAA;Ed/LA,sBAAA;ANywEJ;AoBtkEE;EACE,aAAA;EdpMA,sBAAA;AN6wEJ;;AuB3xEA;EACE,cAAA;EACA,WAAA;EACA,0CAAA;EAEA,uCAAA;EnB2RI,eALI;EmBnRR,gBlBwjB4B;EkBvjB5B,gBlB6jB4B;EkB5jB5B,clBES;EkBDT,sBlBRS;EkBST,iPAAA;EACA,4BAAA;EACA,yClBs6BkC;EkBr6BlC,0BlBs6BkC;EkBr6BlC,yBAAA;EjBFE,sBAAA;EeHE,wEEQJ;EACA,wBAAA;EAAA,qBAAA;EAAA,gBAAA;AvB2xEF;AqBhyEM;EEfN;IFgBQ,gBAAA;ErBmyEN;AACF;AuB9xEE;EACE,qBlB4zBoC;EkB3zBpC,UAAA;EAKE,kDlBu6B4B;ALq3ClC;AuBxxEE;EAEE,sBlBsrB0B;EkBrrB1B,sBAAA;AvByxEJ;AuBtxEE;EAEE,yBlBpCO;AL2zEX;AuBlxEE;EACE,kBAAA;EACA,0BAAA;AvBoxEJ;;AuBhxEA;EACE,oBlB+qB4B;EkB9qB5B,uBlB8qB4B;EkB7qB5B,oBlB8qB4B;EDrcxB,mBALI;AJgjEV;;AuBhxEA;EACE,mBlB4qB4B;EkB3qB5B,sBlB2qB4B;EkB1qB5B,kBlB2qB4B;EDzcxB,kBALI;AJujEV;;AwBn1EA;EACE,cAAA;EACA,kBnB22BwC;EmB12BxC,mBnB22BwC;EmB12BxC,uBnB22BwC;AL2+C1C;AwBp1EE;EACE,WAAA;EACA,mBAAA;AxBs1EJ;;AwBl1EA;EACE,UnB+1BwC;EmB91BxC,WnB81BwC;EmB71BxC,kBAAA;EACA,mBAAA;EACA,sBnBbS;EmBcT,4BAAA;EACA,2BAAA;EACA,wBAAA;EACA,qCnBk2BwC;EmBj2BxC,wBAAA;EAAA,qBAAA;EAAA,gBAAA;EACA,iCAAA;EAAA,mBAAA;AxBq1EF;AwBl1EE;ElBXE,qBAAA;ANg2EJ;AwBj1EE;EAEE,kBnBy1BsC;ALy/C1C;AwB/0EE;EACE,uBnBg1BsC;ALigD1C;AwB90EE;EACE,qBnB4yBoC;EmB3yBpC,UAAA;EACA,kDnByrB4B;ALupDhC;AwB70EE;EACE,yBnBZM;EmBaN,qBnBbM;AL41EV;AwB70EI;EAII,+OAAA;AxB40ER;AwBx0EI;EAII,uJAAA;AxBu0ER;AwBl0EE;EACE,yBnBjCM;EmBkCN,qBnBlCM;EmBuCJ,yOAAA;AxBg0EN;AwB5zEE;EACE,oBAAA;EACA,YAAA;EACA,YnBwzBuC;ALsgD3C;AwBvzEI;EACE,YnBgzBqC;ALygD3C;;AwB3yEA;EACE,mBnB2yBgC;ALmgDlC;AwB5yEE;EACE,UnBuyB8B;EmBtyB9B,mBAAA;EACA,wKAAA;EACA,gCAAA;ElB9FA,kBAAA;EeHE,iDGmGF;AxB8yEJ;AqB74EM;EGyFJ;IHxFM,gBAAA;ErBg5EN;AACF;AwBjzEI;EACE,0JAAA;AxBmzEN;AwBhzEI;EACE,iCnBsyB4B;EmBjyB1B,uJAAA;AxB8yER;;AwBxyEA;EACE,qBAAA;EACA,kBnBywBgC;ALkiDlC;;AwBxyEA;EACE,kBAAA;EACA,sBAAA;EACA,oBAAA;AxB2yEF;AwBvyEI;EACE,oBAAA;EACA,YAAA;EACA,anB2nBwB;AL8qD9B;;AyBv7EA;EACE,WAAA;EACA,cAAA;EACA,UAAA;EACA,6BAAA;EACA,wBAAA;EAAA,qBAAA;EAAA,gBAAA;AzB07EF;AyBx7EE;EACE,UAAA;AzB07EJ;AyBt7EI;EAA0B,kEpBk9Ba;ALu+C3C;AyBx7EI;EAA0B,kEpBi9Ba;AL0+C3C;AyBx7EE;EACE,SAAA;AzB07EJ;AyBv7EE;EACE,WpBm8BuC;EoBl8BvC,YpBk8BuC;EoBj8BvC,oBAAA;EHzBF,yBjBkCQ;EoBPN,SpBk8BuC;EC98BvC,mBAAA;EeHE,oHIkBF;EJlBE,4GIkBF;EACA,wBAAA;EAAA,gBAAA;AzBw7EJ;AqBv8EM;EIMJ;IJLM,wBAAA;IAAA,gBAAA;ErB08EN;AACF;AyB37EI;EHjCF,yBjBk+ByC;AL6/C3C;AyBz7EE;EACE,WpB46B8B;EoB36B9B,cpB46B8B;EoB36B9B,kBAAA;EACA,epB26B8B;EoB16B9B,yBpBpCO;EoBqCP,yBAAA;EnB7BA,mBAAA;ANy9EJ;AyBv7EE;EACE,WpBw6BuC;EoBv6BvC,YpBu6BuC;EiB19BzC,yBjBkCQ;EoBmBN,SpBw6BuC;EC98BvC,mBAAA;EeHE,iHI4CF;EJ5CE,4GI4CF;EACA,qBAAA;EAAA,gBAAA;AzBw7EJ;AqBj+EM;EIiCJ;IJhCM,qBAAA;IAAA,gBAAA;ErBo+EN;AACF;AyB37EI;EH3DF,yBjBk+ByC;ALuhD3C;AyBz7EE;EACE,WpBk5B8B;EoBj5B9B,cpBk5B8B;EoBj5B9B,kBAAA;EACA,epBi5B8B;EoBh5B9B,yBpB9DO;EoB+DP,yBAAA;EnBvDA,mBAAA;ANm/EJ;AyBv7EE;EACE,oBAAA;AzBy7EJ;AyBv7EI;EACE,yBpBtEK;AL+/EX;AyBt7EI;EACE,yBpB1EK;ALkgFX;;A0B/gFA;EACE,kBAAA;A1BkhFF;A0BhhFE;;EAEE,0BrB6+B8B;EqB5+B9B,iBrB6+B8B;ALqiDlC;A0B/gFE;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,YAAA;EACA,qBAAA;EACA,oBAAA;EACA,6BAAA;EACA,qBAAA;ELDE,gEKEF;A1BihFJ;AqB/gFM;EKXJ;ILYM,gBAAA;ErBkhFN;AACF;A0BlhFE;EACE,qBAAA;A1BohFJ;A0BlhFI;EACE,kBAAA;A1BohFN;A0BrhFI;EACE,kBAAA;A1BohFN;A0BjhFI;EAEE,qBrBu9B4B;EqBt9B5B,wBrBu9B4B;AL2jDlC;A0BrhFI;EAEE,qBrBu9B4B;EqBt9B5B,wBrBu9B4B;AL2jDlC;A0B/gFI;EACE,qBrBk9B4B;EqBj9B5B,wBrBk9B4B;AL+jDlC;A0B7gFE;EACE,qBrB48B8B;EqB38B9B,wBrB48B8B;ALmkDlC;A0BzgFI;EACE,arBs8B4B;EqBr8B5B,8DrBs8B4B;ALukDlC;A0B/gFI;;;EACE,arBs8B4B;EqBr8B5B,8DrBs8B4B;ALukDlC;A0BxgFI;EACE,arB+7B4B;EqB97B5B,8DrB+7B4B;AL2kDlC;;A2BhkFA;EACE,kBAAA;EACA,aAAA;EACA,eAAA;EACA,oBAAA;EACA,WAAA;A3BmkFF;A2BjkFE;;EAEE,kBAAA;EACA,cAAA;EACA,SAAA;EACA,YAAA;A3BmkFJ;A2B/jFE;;EAEE,UAAA;A3BikFJ;A2B3jFE;EACE,kBAAA;EACA,UAAA;A3B6jFJ;A2B3jFI;EACE,UAAA;A3B6jFN;;A2BljFA;EACE,aAAA;EACA,mBAAA;EACA,yBAAA;EvBsPI,eALI;EuB/OR,gBtBohB4B;EsBnhB5B,gBtByhB4B;EsBxhB5B,ctBlCS;EsBmCT,kBAAA;EACA,mBAAA;EACA,yBtB5CS;EsB6CT,yBAAA;ErBpCE,sBAAA;AN0lFJ;;A2B5iFA;;;;EAIE,oBAAA;EvBgOI,kBALI;EE7QN,qBAAA;ANmmFJ;;A2B5iFA;;;;EAIE,uBAAA;EvBuNI,mBALI;EE7QN,qBAAA;AN4mFJ;;A2B5iFA;;EAEE,mBAAA;A3B+iFF;;A2BliFI;;ErB/DA,0BAAA;EACA,6BAAA;ANsmFJ;A2BjiFI;;ErBtEA,0BAAA;EACA,6BAAA;AN2mFJ;A2B3hFE;EACE,iBAAA;ErBpEA,yBAAA;EACA,4BAAA;ANkmFJ;;A4B3nFE;EACE,aAAA;EACA,WAAA;EACA,mBvB+wBoC;EDtgBlC,kBALI;EwBjQN,cvB8+BqB;AL+oDzB;;A4B1nFE;EACE,kBAAA;EACA,SAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;EACA,uBAAA;EACA,kBAAA;ExB4PE,mBALI;EwBpPN,WAvBc;EAwBd,wCAvBiB;EtBHjB,sBAAA;ANupFJ;;A4BxnFI;;;;EAEE,cAAA;A5B6nFN;;A4B3qFI;EAoDE,qBvBm9BmB;EuBh9BjB,oCvBqyBgC;EuBpyBhC,4PAAA;EACA,4BAAA;EACA,2DAAA;EACA,gEAAA;A5BynFR;A4BtnFM;EACE,qBvBw8BiB;EuBv8BjB,iDA/Ca;A5BuqFrB;;A4BxrFI;EAyEI,oCvBmxBgC;EuBlxBhC,kFAAA;A5BmnFR;;A4B7rFI;EAiFE,qBvBs7BmB;AL0rDzB;A4B7mFQ;EAEE,uBvBk2B8B;EuBj2B9B,6dAAA;EACA,+DAAA;EACA,2EAAA;A5B8mFV;A4B1mFM;EACE,qBvBy6BiB;EuBx6BjB,iDA9Ea;A5B0rFrB;;A4B3sFI;EAsGE,qBvBi6BmB;ALwsDzB;A4BvmFM;EACE,yBvB85BiB;AL2sDzB;A4BtmFM;EACE,iDA5Fa;A5BosFrB;A4BrmFM;EACE,cvBs5BiB;ALitDzB;;A4BlmFI;EACE,kBAAA;A5BqmFN;;A4B5tFI;;;EA+HI,UAAA;A5BmmFR;A4B/lFM;;;EACE,UAAA;A5BmmFR;;A4BptFE;EACE,aAAA;EACA,WAAA;EACA,mBvB+wBoC;EDtgBlC,kBALI;EwBjQN,cvB8+BqB;ALwuDzB;;A4BntFE;EACE,kBAAA;EACA,SAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;EACA,uBAAA;EACA,kBAAA;ExB4PE,mBALI;EwBpPN,WAvBc;EAwBd,wCAvBiB;EtBHjB,sBAAA;ANgvFJ;;A4BjtFI;;;;EAEE,cAAA;A5BstFN;;A4BpwFI;EAoDE,qBvBm9BmB;EuBh9BjB,oCvBqyBgC;EuBpyBhC,4UAAA;EACA,4BAAA;EACA,2DAAA;EACA,gEAAA;A5BktFR;A4B/sFM;EACE,qBvBw8BiB;EuBv8BjB,iDA/Ca;A5BgwFrB;;A4BjxFI;EAyEI,oCvBmxBgC;EuBlxBhC,kFAAA;A5B4sFR;;A4BtxFI;EAiFE,qBvBs7BmB;ALmxDzB;A4BtsFQ;EAEE,uBvBk2B8B;EuBj2B9B,6iBAAA;EACA,+DAAA;EACA,2EAAA;A5BusFV;A4BnsFM;EACE,qBvBy6BiB;EuBx6BjB,iDA9Ea;A5BmxFrB;;A4BpyFI;EAsGE,qBvBi6BmB;ALiyDzB;A4BhsFM;EACE,yBvB85BiB;ALoyDzB;A4B/rFM;EACE,iDA5Fa;A5B6xFrB;A4B9rFM;EACE,cvBs5BiB;AL0yDzB;;A4B3rFI;EACE,kBAAA;A5B8rFN;;A4BrzFI;;;EAiII,UAAA;A5B0rFR;A4BxrFM;;;EACE,UAAA;A5B4rFR;;A6Bl0FA;EACE,qBAAA;EAEA,gBxB8jB4B;EwB7jB5B,gBxBmkB4B;EwBlkB5B,cxBQS;EwBPT,kBAAA;EACA,qBAAA;EAEA,sBAAA;EACA,eAAA;EACA,yBAAA;EAAA,sBAAA;EAAA,iBAAA;EACA,6BAAA;EACA,6BAAA;EC8GA,yBAAA;E1BsKI,eALI;EE7QN,sBAAA;EeHE,qIQGJ;A7Bq0FF;AqBp0FM;EQhBN;IRiBQ,gBAAA;ErBu0FN;AACF;A6Bx0FE;EACE,cxBLO;AL+0FX;A6Bt0FE;EAEE,UAAA;EACA,kDxB0sB4B;AL6nEhC;A6BzzFE;EAGE,oBAAA;EACA,axBguB0B;ALylE9B;;A6B7yFE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;AL8xFf;A8Br1FE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9Bw2FjB;A8Bp1FE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,iDAAA;A9Bi1FN;A8B70FE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9Bg3FlB;A8Bv0FI;EAKI,iDAAA;A9Bq0FR;A8Bh0FE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;ALszFf;;A6B30FE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;AL4zFf;A8Bn3FE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9Bs4FjB;A8Bl3FE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,kDAAA;A9B+2FN;A8B32FE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9B84FlB;A8Br2FI;EAKI,kDAAA;A9Bm2FR;A8B91FE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;ALo1Ff;;A6Bz2FE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;AL01Ff;A8Bj5FE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9Bo6FjB;A8Bh5FE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,iDAAA;A9B64FN;A8Bz4FE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9B46FlB;A8Bn4FI;EAKI,iDAAA;A9Bi4FR;A8B53FE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;ALk3Ff;;A6Bv4FE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;ALw3Ff;A8B/6FE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9Bk8FjB;A8B96FE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,iDAAA;A9B26FN;A8Bv6FE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9B08FlB;A8Bj6FI;EAKI,iDAAA;A9B+5FR;A8B15FE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;ALg5Ff;;A6Br6FE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;ALs5Ff;A8B78FE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9Bg+FjB;A8B58FE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,gDAAA;A9By8FN;A8Br8FE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9Bw+FlB;A8B/7FI;EAKI,gDAAA;A9B67FR;A8Bx7FE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;AL86Ff;;A6Bn8FE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;ALo7Ff;A8B3+FE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9B8/FjB;A8B1+FE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,gDAAA;A9Bu+FN;A8Bn+FE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9BsgGlB;A8B79FI;EAKI,gDAAA;A9B29FR;A8Bt9FE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;AL48Ff;;A6Bj+FE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;ALk9Ff;A8BzgGE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9B4hGjB;A8BxgGE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,kDAAA;A9BqgGN;A8BjgGE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9BoiGlB;A8B3/FI;EAKI,kDAAA;A9By/FR;A8Bp/FE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;AL0+Ff;;A6B//FE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;ALg/Ff;A8BviGE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9B0jGjB;A8BtiGE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,+CAAA;A9BmiGN;A8B/hGE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9BkkGlB;A8BzhGI;EAKI,+CAAA;A9BuhGR;A8BlhGE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;ALwgGf;;A6BvhGE;ECmBA,czBJa;EyBKb,qBzBLa;AL6gGf;A8BtgGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;ALkhGf;A8BrgGE;EAEE,iDAAA;A9BsgGJ;A8BngGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;AL0hGf;A8B//FI;EAKI,iDAAA;A9B6/FR;A8Bx/FE;EAEE,czBvCW;EyBwCX,6BAAA;A9By/FJ;;A6BhjGE;ECmBA,czBJa;EyBKb,qBzBLa;ALsiGf;A8B/hGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;AL2iGf;A8B9hGE;EAEE,kDAAA;A9B+hGJ;A8B5hGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;ALmjGf;A8BxhGI;EAKI,kDAAA;A9BshGR;A8BjhGE;EAEE,czBvCW;EyBwCX,6BAAA;A9BkhGJ;;A6BzkGE;ECmBA,czBJa;EyBKb,qBzBLa;AL+jGf;A8BxjGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;ALokGf;A8BvjGE;EAEE,gDAAA;A9BwjGJ;A8BrjGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;AL4kGf;A8BjjGI;EAKI,gDAAA;A9B+iGR;A8B1iGE;EAEE,czBvCW;EyBwCX,6BAAA;A9B2iGJ;;A6BlmGE;ECmBA,czBJa;EyBKb,qBzBLa;ALwlGf;A8BjlGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;AL6lGf;A8BhlGE;EAEE,iDAAA;A9BilGJ;A8B9kGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;ALqmGf;A8B1kGI;EAKI,iDAAA;A9BwkGR;A8BnkGE;EAEE,czBvCW;EyBwCX,6BAAA;A9BokGJ;;A6B3nGE;ECmBA,czBJa;EyBKb,qBzBLa;ALinGf;A8B1mGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;ALsnGf;A8BzmGE;EAEE,gDAAA;A9B0mGJ;A8BvmGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;AL8nGf;A8BnmGI;EAKI,gDAAA;A9BimGR;A8B5lGE;EAEE,czBvCW;EyBwCX,6BAAA;A9B6lGJ;;A6BppGE;ECmBA,czBJa;EyBKb,qBzBLa;AL0oGf;A8BnoGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;AL+oGf;A8BloGE;EAEE,gDAAA;A9BmoGJ;A8BhoGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;ALupGf;A8B5nGI;EAKI,gDAAA;A9B0nGR;A8BrnGE;EAEE,czBvCW;EyBwCX,6BAAA;A9BsnGJ;;A6B7qGE;ECmBA,czBJa;EyBKb,qBzBLa;ALmqGf;A8B5pGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;ALwqGf;A8B3pGE;EAEE,kDAAA;A9B4pGJ;A8BzpGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;ALgrGf;A8BrpGI;EAKI,kDAAA;A9BmpGR;A8B9oGE;EAEE,czBvCW;EyBwCX,6BAAA;A9B+oGJ;;A6BtsGE;ECmBA,czBJa;EyBKb,qBzBLa;AL4rGf;A8BrrGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;ALisGf;A8BprGE;EAEE,+CAAA;A9BqrGJ;A8BlrGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;ALysGf;A8B9qGI;EAKI,+CAAA;A9B4qGR;A8BvqGE;EAEE,czBvCW;EyBwCX,6BAAA;A9BwqGJ;;A6BntGA;EACE,gBxBuf4B;EwBtf5B,cxBzCQ;EwB0CR,0BxBmWwC;ALm3F1C;A6BptGE;EACE,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sCAAA;AjC6hHF;AiC5/GI;EACE,cAAA;AjC8/GN;AgCz8GI;EACE,iBAAA;AhC28GN;;AgCp8GA;EACE,SAAA;EACA,gBAAA;EACA,gBAAA;EACA,yCAAA;AhCu8GF;;AgCj8GA;EACE,cAAA;EACA,WAAA;EACA,qBAAA;EACA,WAAA;EACA,gB3B8b4B;E2B7b5B,c3BvHS;E2BwHT,mBAAA;EACA,qBAAA;EACA,mBAAA;EACA,6BAAA;EACA,SAAA;AhCo8GF;AgCt7GE;EAEE,c3B0+BgC;EiBnoClC,yBjBMS;AL2kHX;AgCn7GE;EAEE,W3B5JO;E2B6JP,qBAAA;EVjKF,yBjBkCQ;ALojHV;AgCj7GE;EAEE,c3B9JO;E2B+JP,oBAAA;EACA,6BAAA;AhCk7GJ;;AgC56GA;EACE,cAAA;AhC+6GF;;AgC36GA;EACE,cAAA;EACA,oB3By9BkC;E2Bx9BlC,gBAAA;E5B0GI,mBALI;E4BnGR,c3B/KS;E2BgLT,mBAAA;AhC86GF;;AgC16GA;EACE,cAAA;EACA,qBAAA;EACA,c3BpLS;ALimHX;;AgCz6GA;EACE,c3B/LS;E2BgMT,yB3B3LS;E2B4LT,iC3Bk7BkC;AL0/EpC;AgCz6GE;EACE,c3BrMO;ALgnHX;AgCz6GI;EAEE,W3B5MK;EiBJT,2CjB0pCkC;ALi+EpC;AgCv6GI;EAEE,W3BlNK;EiBJT,yBjBkCQ;AL6lHV;AgCr6GI;EAEE,c3BnNK;ALynHX;AgCl6GE;EACE,iC3By5BgC;AL2gFpC;AgCj6GE;EACE,c3B9NO;ALioHX;AgCh6GE;EACE,c3BhOO;ALkoHX;;AkC9oHA;;EAEE,kBAAA;EACA,oBAAA;EACA,sBAAA;AlCipHF;AkC/oHE;;EACE,kBAAA;EACA,cAAA;AlCkpHJ;AkC7oHE;;;;;;;;;;;;EAME,UAAA;AlCqpHJ;;AkChpHA;EACE,aAAA;EACA,eAAA;EACA,2BAAA;AlCmpHF;AkCjpHE;EACE,WAAA;AlCmpHJ;;AkC7oHE;;EAEE,iBAAA;AlCgpHJ;AkC5oHE;;E5BRE,0BAAA;EACA,6BAAA;ANwpHJ;AkCxoHE;;;E5BHE,yBAAA;EACA,4BAAA;ANgpHJ;;AkC3nHA;EACE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ACA,aAAA;EACA,YAAA;EACA,8BAAA;EACA,6BAAA;EACA,eAAA;EACA,cAAA;EfhMJ,gBeiMI;EACA,eAAA;ApC2gIV;AoCzgIQ;;EAEE,YAAA;EACA,aAAA;EACA,gBAAA;ApC2gIV;AoCxgIQ;EACE,aAAA;EACA,YAAA;EACA,UAAA;EACA,mBAAA;ApC0gIV;;AoC5/HE;EACE,yB/Bw3BgC;ALuoGpC;AoC7/HI;EAEE,yB/Bo3B8B;AL0oGpC;AoCz/HI;EACE,0B/B42B8B;AL+oGpC;AoCz/HM;EAEE,yB/By2B4B;ALipGpC;AoCv/HM;EACE,yB/Bu2B4B;ALkpGpC;AoCr/HI;;EAEE,yB/Bg2B8B;ALupGpC;AoCn/HE;EACE,0B/By1BgC;E+Bx1BhC,gC/B61BgC;ALwpGpC;AoCl/HE;EACE,6PAAA;ApCo/HJ;AoCj/HE;EACE,0B/Bg1BgC;ALmqGpC;AoCj/HI;;;EAGE,yB/B60B8B;ALsqGpC;;AoC5+HE;EACE,W/BzRO;ALwwIX;AoC7+HI;EAEE,W/B7RK;AL2wIX;AoCz+HI;EACE,gC/BkzB8B;ALyrGpC;AoCz+HM;EAEE,gC/B+yB4B;AL2rGpC;AoCv+HM;EACE,gC/B6yB4B;AL4rGpC;AoCr+HI;;EAEE,W/BjTK;ALwxIX;AoCn+HE;EACE,gC/B+xBgC;E+B9xBhC,sC/BmyBgC;ALksGpC;AoCl+HE;EACE,mQAAA;ApCo+HJ;AoCj+HE;EACE,gC/BsxBgC;AL6sGpC;AoCl+HI;;;EAGE,W/BnUK;ALuyIX;;AqC3yIA;EACE,kBAAA;EACA,aAAA;EACA,sBAAA;EACA,YAAA;EAEA,qBAAA;EACA,sBhCHS;EgCIT,2BAAA;EACA,sCAAA;E/BME,sBAAA;ANwyIJ;AqC1yIE;EACE,eAAA;EACA,cAAA;ArC4yIJ;AqCzyIE;EACE,mBAAA;EACA,sBAAA;ArC2yIJ;AqCzyII;EACE,mBAAA;E/BCF,2CAAA;EACA,4CAAA;AN2yIJ;AqCzyII;EACE,sBAAA;E/BUF,+CAAA;EACA,8CAAA;ANkyIJ;AqCtyIE;;EAEE,aAAA;ArCwyIJ;;AqCpyIA;EAGE,cAAA;EACA,kBAAA;ArCqyIF;;AqCjyIA;EACE,qBhCqqCkC;AL+nGpC;;AqCjyIA;EACE,oBAAA;EACA,gBAAA;ArCoyIF;;AqCjyIA;EACE,gBAAA;ArCoyIF;;AqC5xIE;EACE,iBhC8SK;ALi/HT;;AqCvxIA;EACE,oBAAA;EACA,gBAAA;EAEA,qChC+oCkC;EgC9oClC,6CAAA;ArCyxIF;AqCvxIE;E/BpEE,0DAAA;AN81IJ;;AqCrxIA;EACE,oBAAA;EAEA,qChCooCkC;EgCnoClC,0CAAA;ArCuxIF;AqCrxIE;E/B/EE,0DAAA;ANu2IJ;;AqC9wIA;EACE,qBAAA;EACA,sBAAA;EACA,oBAAA;EACA,gBAAA;ArCixIF;;AqCvwIA;EACE,qBAAA;EACA,oBAAA;ArC0wIF;;AqCtwIA;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,ahCgPO;ECnWL,kCAAA;AN63IJ;;AqCtwIA;;;EAGE,WAAA;ArCywIF;;AqCtwIA;;E/BpHI,2CAAA;EACA,4CAAA;AN+3IJ;;AqCvwIA;;E/B3GI,+CAAA;EACA,8CAAA;ANu3IJ;;AqChwIE;EACE,sBhCskCgC;AL6rGpC;Aav2II;EwBgGJ;IAQI,aAAA;IACA,mBAAA;ErCmwIF;EqChwIE;IAEE,YAAA;IACA,gBAAA;ErCiwIJ;EqC/vII;IACE,cAAA;IACA,cAAA;ErCiwIN;EqC5vIM;I/BpJJ,0BAAA;IACA,6BAAA;ENm5IF;EqC7vIQ;;IAGE,0BAAA;ErC8vIV;EqC5vIQ;;IAGE,6BAAA;ErC6vIV;EqCzvIM;I/BrJJ,yBAAA;IACA,4BAAA;ENi5IF;EqC1vIQ;;IAGE,yBAAA;ErC2vIV;EqCzvIQ;;IAGE,4BAAA;ErC0vIV;AACF;;AsCx8IA;EACE,kBAAA;EACA,aAAA;EACA,mBAAA;EACA,WAAA;EACA,qBAAA;ElC4RI,eALI;EkCrRR,cjCMS;EiCLT,gBAAA;EACA,sBjCLS;EiCMT,SAAA;EhCKE,gBAAA;EgCHF,qBAAA;EjBAI,+JiBCJ;AtC28IF;AqBx8IM;EiBhBN;IjBiBQ,gBAAA;ErB28IN;AACF;AsC98IE;EACE,cjC6uCsC;EiC5uCtC,yBjC2uCsC;EiC1uCtC,+CAAA;AtCg9IJ;AsC98II;EACE,iSAAA;EACA,0BjCgvCoC;ALguG1C;AsC38IE;EACE,cAAA;EACA,cjCquCsC;EiCpuCtC,ejCouCsC;EiCnuCtC,iBAAA;EACA,WAAA;EACA,iSAAA;EACA,4BAAA;EACA,wBjC+tCsC;EgBtvCpC,sCiBwBF;AtC68IJ;AqBj+IM;EiBWJ;IjBVM,gBAAA;ErBo+IN;AACF;AsC/8IE;EACE,UAAA;AtCi9IJ;AsC98IE;EACE,UAAA;EACA,qBjCuyBoC;EiCtyBpC,UAAA;EACA,kDjCorB4B;AL4xHhC;;AsC58IA;EACE,gBAAA;AtC+8IF;;AsC58IA;EACE,sBjCpDS;EiCqDT,sCAAA;AtC+8IF;AsC78IE;EhCnCE,+BAAA;EACA,gCAAA;ANm/IJ;AsC98II;EhCtCA,2CAAA;EACA,4CAAA;ANu/IJ;AsC78IE;EACE,aAAA;AtC+8IJ;AsC38IE;EhClCE,mCAAA;EACA,kCAAA;ANg/IJ;AsC38IM;EhCtCF,+CAAA;EACA,8CAAA;ANo/IJ;AsC18II;EhC3CA,mCAAA;EACA,kCAAA;ANw/IJ;;AsCx8IA;EACE,qBAAA;AtC28IF;;AsCl8IE;EACE,eAAA;AtCq8IJ;AsCl8IE;EACE,eAAA;EACA,cAAA;EhCxFA,gBAAA;AN6hJJ;AsCl8II;EAAgB,aAAA;AtCq8IpB;AsCp8II;EAAe,gBAAA;AtCu8InB;AsCr8II;EhC9FA,gBAAA;ANsiJJ;;AuCzjJA;EACE,aAAA;EACA,eAAA;EACA,YAAA;EACA,mBlC4+CkC;EkC1+ClC,gBAAA;AvC2jJF;;AuCpjJE;EACE,oBlCi+CgC;ALslGpC;AuCrjJI;EACE,WAAA;EACA,qBlC69C8B;EkC59C9B,clCLK;EkCML,uFAAA;AvCujJN;AuCnjJE;EACE,clCXO;ALgkJX;;AwC9kJA;EACE,aAAA;EhCGA,eAAA;EACA,gBAAA;AR+kJF;;AwC/kJA;EACE,kBAAA;EACA,cAAA;EACA,cnC8BQ;EmC7BR,qBAAA;EACA,sBnCFS;EmCGT,yBAAA;EnBKI,qImBJJ;AxCklJF;AqB1kJM;EmBfN;InBgBQ,gBAAA;ErB6kJN;AACF;AwCrlJE;EACE,UAAA;EACA,cnCqasC;EmCnatC,yBnCRO;EmCSP,qBnCRO;AL8lJX;AwCnlJE;EACE,UAAA;EACA,cnC6ZsC;EmC5ZtC,yBnCfO;EmCgBP,UnCgqCgC;EmC/pChC,kDnC4sB4B;ALy4HhC;;AwChlJE;EACE,iBnCmpCgC;ALg8GpC;AwChlJE;EACE,UAAA;EACA,WnC9BO;EiBJT,yBjBkCQ;EmCEN,qBnCFM;ALolJV;AwC/kJE;EACE,cnC9BO;EmC+BP,oBAAA;EACA,sBnCtCO;EmCuCP,qBnCpCO;ALqnJX;;AyC5nJE;EACE,yBAAA;AzC+nJJ;;AyCxnJQ;EnCqCJ,+BAAA;EACA,kCAAA;ANulJJ;AyCvnJQ;EnCiBJ,gCAAA;EACA,mCAAA;ANymJJ;;AyCzoJE;EACE,uBAAA;ErCgSE,kBALI;AJk3IV;AyCtoJQ;EnCqCJ,8BAAA;EACA,iCAAA;ANomJJ;AyCpoJQ;EnCiBJ,+BAAA;EACA,kCAAA;ANsnJJ;;AyCtpJE;EACE,uBAAA;ErCgSE,mBALI;AJ+3IV;AyCnpJQ;EnCqCJ,8BAAA;EACA,iCAAA;ANinJJ;AyCjpJQ;EnCiBJ,+BAAA;EACA,kCAAA;ANmoJJ;;A0ClqJA;EACE,qBAAA;EACA,sBAAA;EtC8RI,iBALI;EsCvRR,gBrC6jB4B;EqC5jB5B,cAAA;EACA,WrCHS;EqCIT,kBAAA;EACA,mBAAA;EACA,wBAAA;EpCKE,sBAAA;ANiqJJ;A0CjqJE;EACE,aAAA;A1CmqJJ;;A0C9pJA;EACE,kBAAA;EACA,SAAA;A1CiqJF;;A2CxrJA;EACE,kBAAA;EACA,kBAAA;EACA,mBtCs5C8B;EsCr5C9B,6BAAA;ErCWE,sBAAA;ANirJJ;;A2CvrJA;EAEE,cAAA;A3CyrJF;;A2CrrJA;EACE,gBtCkjB4B;ALsoI9B;;A2ChrJA;EACE,mBtCu4C8B;AL4yGhC;A2ChrJE;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,UAAA;EACA,qBAAA;A3CkrJJ;;A2CnqJE;EClDA,cD8Cc;ErB5Cd,yBqB0CmB;EC1CnB,qBD2Ce;A3C8qJjB;A4CvtJE;EACE,cAAA;A5CytJJ;;A2C5qJE;EClDA,cD8Cc;ErB5Cd,yBqB0CmB;EC1CnB,qBD2Ce;A3CurJjB;A4ChuJE;EACE,cAAA;A5CkuJJ;;A2CrrJE;EClDA,cD8Cc;ErB5Cd,yBqB0CmB;EC1CnB,qBD2Ce;A3CgsJjB;A4CzuJE;EACE,cAAA;A5C2uJJ;;A2C9rJE;EClDA,cDgDgB;ErB9ChB,yBqB0CmB;EC1CnB,qBD2Ce;A3CysJjB;A4ClvJE;EACE,cAAA;A5CovJJ;;A2CvsJE;EClDA,cDgDgB;ErB9ChB,yBqB0CmB;EC1CnB,qBD2Ce;A3CktJjB;A4C3vJE;EACE,cAAA;A5C6vJJ;;A2ChtJE;EClDA,cD8Cc;ErB5Cd,yBqB0CmB;EC1CnB,qBD2Ce;A3C2tJjB;A4CpwJE;EACE,cAAA;A5CswJJ;;A2CztJE;EClDA,cDgDgB;ErB9ChB,yBqB0CmB;EC1CnB,qBD2Ce;A3CouJjB;A4C7wJE;EACE,cAAA;A5C+wJJ;;A2CluJE;EClDA,cD8Cc;ErB5Cd,yBqB0CmB;EC1CnB,qBD2Ce;A3C6uJjB;A4CtxJE;EACE,cAAA;A5CwxJJ;;A6C3xJE;EACE;IAAK,2BxCs6C2B;ELy3GlC;AACF;;A6CjyJE;EACE;IAAK,2BxCs6C2B;ELy3GlC;AACF;A6C3xJA;EACE,aAAA;EACA,YxC+5CkC;EwC95ClC,gBAAA;EzCwRI,kBALI;EyCjRR,yBxCLS;ECSP,sBAAA;AN0xJJ;;A6CzxJA;EACE,aAAA;EACA,sBAAA;EACA,uBAAA;EACA,gBAAA;EACA,WxCjBS;EwCkBT,kBAAA;EACA,mBAAA;EACA,yBxCUQ;EgBtBJ,2BwBaJ;A7C4xJF;AqBryJM;EwBAN;IxBCQ,gBAAA;ErBwyJN;AACF;;A6C9xJA;EvBYE,qMAAA;EuBVA,0BAAA;A7CiyJF;;A6C7xJE;EACE,0DAAA;EAAA,kDAAA;A7CgyJJ;A6C7xJM;EAJJ;IAKM,uBAAA;IAAA,eAAA;E7CgyJN;AACF;;A8Cx0JA;EACE,aAAA;EACA,sBAAA;EAGA,eAAA;EACA,gBAAA;ExCSE,sBAAA;ANi0JJ;;A8Ct0JA;EACE,qBAAA;EACA,sBAAA;A9Cy0JF;A8Cv0JE;EAEE,oCAAA;EACA,0BAAA;A9Cw0JJ;;A8C9zJA;EACE,WAAA;EACA,czClBS;EyCmBT,mBAAA;A9Ci0JF;A8C9zJE;EAEE,UAAA;EACA,czCzBO;EyC0BP,qBAAA;EACA,yBzCjCO;ALg2JX;A8C5zJE;EACE,czC7BO;EyC8BP,yBzCrCO;ALm2JX;;A8CrzJA;EACE,kBAAA;EACA,cAAA;EACA,oBAAA;EACA,czC3CS;EyC4CT,qBAAA;EACA,sBzCtDS;EyCuDT,sCAAA;A9CwzJF;A8CtzJE;ExCrCE,+BAAA;EACA,gCAAA;AN81JJ;A8CtzJE;ExC3BE,mCAAA;EACA,kCAAA;ANo1JJ;A8CtzJE;EAEE,czC7DO;EyC8DP,oBAAA;EACA,sBzCrEO;AL43JX;A8CnzJE;EACE,UAAA;EACA,WzC3EO;EyC4EP,yBzC9CM;EyC+CN,qBzC/CM;ALo2JV;A8ClzJE;EACE,mBAAA;A9CozJJ;A8ClzJI;EACE,gBAAA;EACA,qBzC8ZwB;ALs5I9B;;A8CtyJI;EACE,mBAAA;A9CyyJN;A8CtyJQ;ExCrCJ,kCAAA;EAZA,0BAAA;AN21JJ;A8CryJQ;ExCtDJ,gCAAA;EAYA,4BAAA;ANm1JJ;A8CpyJQ;EACE,aAAA;A9CsyJV;A8CnyJQ;EACE,qBzC6XoB;EyC5XpB,oBAAA;A9CqyJV;A8CnyJU;EACE,iBAAA;EACA,sBzCwXkB;AL66I9B;;Aaz2JI;EiC4CA;IACE,mBAAA;E9Ci0JJ;E8C9zJM;IxCrCJ,kCAAA;IAZA,0BAAA;ENm3JF;E8C7zJM;IxCtDJ,gCAAA;IAYA,4BAAA;EN22JF;E8C5zJM;IACE,aAAA;E9C8zJR;E8C3zJM;IACE,qBzC6XoB;IyC5XpB,oBAAA;E9C6zJR;E8C3zJQ;IACE,iBAAA;IACA,sBzCwXkB;ELq8I5B;AACF;Aal4JI;EiC4CA;IACE,mBAAA;E9Cy1JJ;E8Ct1JM;IxCrCJ,kCAAA;IAZA,0BAAA;EN24JF;E8Cr1JM;IxCtDJ,gCAAA;IAYA,4BAAA;ENm4JF;E8Cp1JM;IACE,aAAA;E9Cs1JR;E8Cn1JM;IACE,qBzC6XoB;IyC5XpB,oBAAA;E9Cq1JR;E8Cn1JQ;IACE,iBAAA;IACA,sBzCwXkB;EL69I5B;AACF;Aa15JI;EiC4CA;IACE,mBAAA;E9Ci3JJ;E8C92JM;IxCrCJ,kCAAA;IAZA,0BAAA;ENm6JF;E8C72JM;IxCtDJ,gCAAA;IAYA,4BAAA;EN25JF;E8C52JM;IACE,aAAA;E9C82JR;E8C32JM;IACE,qBzC6XoB;IyC5XpB,oBAAA;E9C62JR;E8C32JQ;IACE,iBAAA;IACA,sBzCwXkB;ELq/I5B;AACF;Aal7JI;EiC4CA;IACE,mBAAA;E9Cy4JJ;E8Ct4JM;IxCrCJ,kCAAA;IAZA,0BAAA;EN27JF;E8Cr4JM;IxCtDJ,gCAAA;IAYA,4BAAA;ENm7JF;E8Cp4JM;IACE,aAAA;E9Cs4JR;E8Cn4JM;IACE,qBzC6XoB;IyC5XpB,oBAAA;E9Cq4JR;E8Cn4JQ;IACE,iBAAA;IACA,sBzCwXkB;EL6gJ5B;AACF;Aa18JI;EiC4CA;IACE,mBAAA;E9Ci6JJ;E8C95JM;IxCrCJ,kCAAA;IAZA,0BAAA;ENm9JF;E8C75JM;IxCtDJ,gCAAA;IAYA,4BAAA;EN28JF;E8C55JM;IACE,aAAA;E9C85JR;E8C35JM;IACE,qBzC6XoB;IyC5XpB,oBAAA;E9C65JR;E8C35JQ;IACE,iBAAA;IACA,sBzCwXkB;ELqiJ5B;AACF;A8Ch5JA;ExC9HI,gBAAA;ANihKJ;A8Ch5JE;EACE,qBAAA;A9Ck5JJ;A8Ch5JI;EACE,sBAAA;A9Ck5JN;;A+CtiKE;EACE,cDiKyB;EChKzB,yBD+JsB;A9C04J1B;A+CtiKM;EAEE,cD2JqB;EC1JrB,yBAAA;A/CuiKR;A+CpiKM;EACE,W1CRG;E0CSH,yBDqJqB;ECpJrB,qBDoJqB;A9Ck5J7B;;A+CpjKE;EACE,cDiKyB;EChKzB,yBD+JsB;A9Cw5J1B;A+CpjKM;EAEE,cD2JqB;EC1JrB,yBAAA;A/CqjKR;A+CljKM;EACE,W1CRG;E0CSH,yBDqJqB;ECpJrB,qBDoJqB;A9Cg6J7B;;A+ClkKE;EACE,cDiKyB;EChKzB,yBD+JsB;A9Cs6J1B;A+ClkKM;EAEE,cD2JqB;EC1JrB,yBAAA;A/CmkKR;A+ChkKM;EACE,W1CRG;E0CSH,yBDqJqB;ECpJrB,qBDoJqB;A9C86J7B;;A+ChlKE;EACE,cDmK2B;EClK3B,yBD+JsB;A9Co7J1B;A+ChlKM;EAEE,cD6JuB;EC5JvB,yBAAA;A/CilKR;A+C9kKM;EACE,W1CRG;E0CSH,yBDuJuB;ECtJvB,qBDsJuB;A9C07J/B;;A+C9lKE;EACE,cDmK2B;EClK3B,yBD+JsB;A9Ck8J1B;A+C9lKM;EAEE,cD6JuB;EC5JvB,yBAAA;A/C+lKR;A+C5lKM;EACE,W1CRG;E0CSH,yBDuJuB;ECtJvB,qBDsJuB;A9Cw8J/B;;A+C5mKE;EACE,cDiKyB;EChKzB,yBD+JsB;A9Cg9J1B;A+C5mKM;EAEE,cD2JqB;EC1JrB,yBAAA;A/C6mKR;A+C1mKM;EACE,W1CRG;E0CSH,yBDqJqB;ECpJrB,qBDoJqB;A9Cw9J7B;;A+C1nKE;EACE,cDmK2B;EClK3B,yBD+JsB;A9C89J1B;A+C1nKM;EAEE,cD6JuB;EC5JvB,yBAAA;A/C2nKR;A+CxnKM;EACE,W1CRG;E0CSH,yBDuJuB;ECtJvB,qBDsJuB;A9Co+J/B;;A+CxoKE;EACE,cDiKyB;EChKzB,yBD+JsB;A9C4+J1B;A+CxoKM;EAEE,cD2JqB;EC1JrB,yBAAA;A/CyoKR;A+CtoKM;EACE,W1CRG;E0CSH,yBDqJqB;ECpJrB,qBDoJqB;A9Co/J7B;;AgDrpKA;EACE,uBAAA;EACA,U3CyiD2B;E2CxiD3B,W3CwiD2B;E2CviD3B,sBAAA;EACA,W3CQS;E2CPT,2WAAA;EACA,SAAA;E1COE,sBAAA;E0CLF,Y3CyiD2B;AL+mH7B;AgDrpKE;EACE,WAAA;EACA,qBAAA;EACA,a3CoiDyB;ALmnH7B;AgDppKE;EACE,UAAA;EACA,kD3C8sB4B;E2C7sB5B,U3C+hDyB;ALunH7B;AgDnpKE;EAEE,oBAAA;EACA,yBAAA;EAAA,sBAAA;EAAA,iBAAA;EACA,a3CyhDyB;AL2nH7B;;AgDhpKA;EACE,kD3CqhD2B;AL8nH7B;;AiDzrKA;EACE,Y5C40CkC;E4C30ClC,eAAA;E7CmSI,mBALI;E6C3RR,oBAAA;EACA,2C5C40CkC;E4C30ClC,4BAAA;EACA,oCAAA;EACA,6C5CsgB4B;EC5f1B,sBAAA;ANkrKJ;AiDzrKE;EACE,UAAA;AjD2rKJ;AiDxrKE;EACE,aAAA;AjD0rKJ;;AiDtrKA;EACE,0BAAA;EAAA,uBAAA;EAAA,kBAAA;EACA,eAAA;EACA,oBAAA;AjDyrKF;AiDvrKE;EACE,sB5CwdkB;ALiuJtB;;AiDrrKA;EACE,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,c5CrBS;E4CsBT,2C5CszCkC;E4CrzClC,4BAAA;EACA,4CAAA;E3CVE,2CAAA;EACA,4CAAA;ANmsKJ;AiDvrKE;EACE,uBAAA;EACA,oB5CmyCgC;ALs5HpC;;AiDrrKA;EACE,gB5C8xCkC;E4C7xClC,qBAAA;AjDwrKF;;AkDluKA;EACE,eAAA;EACA,MAAA;EACA,OAAA;EACA,a7C0hCkC;E6CzhClC,aAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,gBAAA;EAGA,UAAA;AlDmuKF;;AkD5tKA;EACE,kBAAA;EACA,WAAA;EACA,c7Cq1CkC;E6Cn1ClC,oBAAA;AlD8tKF;AkD3tKE;E7BlBI,mC6BmBF;EACA,8B7C22CgC;ALk3HpC;AqB7uKM;E6BcJ;I7BbM,gBAAA;ErBgvKN;AACF;AkDhuKE;EACE,e7Cy2CgC;ALy3HpC;AkD9tKE;EACE,sB7Cs2CgC;AL03HpC;;AkD5tKA;EACE,yBAAA;AlD+tKF;AkD7tKE;EACE,gBAAA;EACA,gBAAA;AlD+tKJ;AkD5tKE;EACE,gBAAA;AlD8tKJ;;AkD1tKA;EACE,aAAA;EACA,mBAAA;EACA,6BAAA;AlD6tKF;;AkDztKA;EACE,kBAAA;EACA,aAAA;EACA,sBAAA;EACA,WAAA;EAGA,oBAAA;EACA,sB7CpES;E6CqET,4BAAA;EACA,oCAAA;E5C3DE,qBAAA;E4C+DF,UAAA;AlDwtKF;;AkDptKA;ECpFE,eAAA;EACA,MAAA;EACA,OAAA;EACA,a9C+hCkC;E8C9hClC,YAAA;EACA,aAAA;EACA,sB9CUS;ALkyKX;AmDzyKE;EAAS,UAAA;AnD4yKX;AmD3yKE;EAAS,Y9Cq3CyB;ALy7HpC;;AkD9tKA;EACE,aAAA;EACA,cAAA;EACA,mBAAA;EACA,8BAAA;EACA,kB7CuyCkC;E6CtyClC,gCAAA;E5CtEE,0CAAA;EACA,2CAAA;ANwyKJ;AkDhuKE;EACE,sBAAA;EACA,oCAAA;AlDkuKJ;;AkD7tKA;EACE,gBAAA;EACA,gB7C6d4B;ALmwJ9B;;AkD3tKA;EACE,kBAAA;EAGA,cAAA;EACA,a7C8PO;AL89JT;;AkDxtKA;EACE,aAAA;EACA,eAAA;EACA,cAAA;EACA,mBAAA;EACA,yBAAA;EACA,gBAAA;EACA,6BAAA;E5CzFE,8CAAA;EACA,6CAAA;ANqzKJ;AkDvtKE;EACE,eAAA;AlDytKJ;;AapyKI;EqCkFF;IACE,gB7CyvCgC;I6CxvChC,oBAAA;ElDstKF;;EkDntKA;IACE,2BAAA;ElDstKF;;EkDntKA;IACE,+BAAA;ElDstKF;;EkD/sKA;IAAY,gB7CwuCsB;EL2+HlC;AACF;AavzKI;EqCuGF;;IAEE,gB7CouCgC;EL++HlC;AACF;Aa7zKI;EqC8GF;IAAY,iB7CguCsB;ELm/HlC;AACF;AkD3sKI;EACE,YAAA;EACA,eAAA;EACA,YAAA;EACA,SAAA;AlD6sKN;AkD3sKM;EACE,YAAA;EACA,SAAA;E5C3KJ,gBAAA;ANy3KJ;AkD1sKM;E5C/KF,gBAAA;AN43KJ;AkDzsKM;EACE,gBAAA;AlD2sKR;AkDxsKM;E5CvLF,gBAAA;ANk4KJ;;Aaz0KI;EqC0GA;IACE,YAAA;IACA,eAAA;IACA,YAAA;IACA,SAAA;ElDmuKJ;EkDjuKI;IACE,YAAA;IACA,SAAA;I5C3KJ,gBAAA;EN+4KF;EkDhuKI;I5C/KF,gBAAA;ENk5KF;EkD/tKI;IACE,gBAAA;ElDiuKN;EkD9tKI;I5CvLF,gBAAA;ENw5KF;AACF;Aah2KI;EqC0GA;IACE,YAAA;IACA,eAAA;IACA,YAAA;IACA,SAAA;ElDyvKJ;EkDvvKI;IACE,YAAA;IACA,SAAA;I5C3KJ,gBAAA;ENq6KF;EkDtvKI;I5C/KF,gBAAA;ENw6KF;EkDrvKI;IACE,gBAAA;ElDuvKN;EkDpvKI;I5CvLF,gBAAA;EN86KF;AACF;Aat3KI;EqC0GA;IACE,YAAA;IACA,eAAA;IACA,YAAA;IACA,SAAA;ElD+wKJ;EkD7wKI;IACE,YAAA;IACA,SAAA;I5C3KJ,gBAAA;EN27KF;EkD5wKI;I5C/KF,gBAAA;EN87KF;EkD3wKI;IACE,gBAAA;ElD6wKN;EkD1wKI;I5CvLF,gBAAA;ENo8KF;AACF;Aa54KI;EqC0GA;IACE,YAAA;IACA,eAAA;IACA,YAAA;IACA,SAAA;ElDqyKJ;EkDnyKI;IACE,YAAA;IACA,SAAA;I5C3KJ,gBAAA;ENi9KF;EkDlyKI;I5C/KF,gBAAA;ENo9KF;EkDjyKI;IACE,gBAAA;ElDmyKN;EkDhyKI;I5CvLF,gBAAA;EN09KF;AACF;Aal6KI;EqC0GA;IACE,YAAA;IACA,eAAA;IACA,YAAA;IACA,SAAA;ElD2zKJ;EkDzzKI;IACE,YAAA;IACA,SAAA;I5C3KJ,gBAAA;ENu+KF;EkDxzKI;I5C/KF,gBAAA;EN0+KF;EkDvzKI;IACE,gBAAA;ElDyzKN;EkDtzKI;I5CvLF,gBAAA;ENg/KF;AACF;AoDngLA;EACE,kBAAA;EACA,a/CoiCkC;E+CniClC,cAAA;EACA,S/CsxCkC;EgD1xClC,sChDwjB4B;EgDtjB5B,kBAAA;EACA,gBhDikB4B;EgDhkB5B,gBhDskB4B;EgDrkB5B,gBAAA;EACA,iBAAA;EACA,qBAAA;EACA,iBAAA;EACA,oBAAA;EACA,sBAAA;EACA,kBAAA;EACA,oBAAA;EACA,mBAAA;EACA,gBAAA;EjDsRI,mBALI;EgDrRR,qBAAA;EACA,UAAA;ApD+gLF;AoD7gLE;EAAS,Y/C0wCyB;ALswIpC;AoD9gLE;EACE,kBAAA;EACA,cAAA;EACA,a/C0wCgC;E+CzwChC,c/C0wCgC;ALswIpC;AoD9gLI;EACE,kBAAA;EACA,WAAA;EACA,yBAAA;EACA,mBAAA;ApDghLN;;AoD3gLA;EACE,iBAAA;ApD8gLF;AoD5gLE;EACE,SAAA;ApD8gLJ;AoD5gLI;EACE,SAAA;EACA,6BAAA;EACA,sB/CtBK;ALoiLX;;AoDzgLA;EACE,iBAAA;ApD4gLF;AoD1gLE;EACE,OAAA;EACA,a/C4uCgC;E+C3uChC,c/C0uCgC;ALkyIpC;AoD1gLI;EACE,WAAA;EACA,oCAAA;EACA,wB/CtCK;ALkjLX;;AoDvgLA;EACE,iBAAA;ApD0gLF;AoDxgLE;EACE,MAAA;ApD0gLJ;AoDxgLI;EACE,YAAA;EACA,6BAAA;EACA,yB/CpDK;AL8jLX;;AoDrgLA;EACE,iBAAA;ApDwgLF;AoDtgLE;EACE,QAAA;EACA,a/C8sCgC;E+C7sChC,c/C4sCgC;AL4zIpC;AoDtgLI;EACE,UAAA;EACA,oCAAA;EACA,uB/CpEK;AL4kLX;;AoDn/KA;EACE,gB/CwqCkC;E+CvqClC,uBAAA;EACA,W/CtGS;E+CuGT,kBAAA;EACA,sB/C9FS;ECCP,sBAAA;ANolLJ;;AsDvmLA;EACE,kBAAA;EACA,MAAA;EACA,wBAAA;EACA,ajDkiCkC;EiDjiClC,cAAA;EACA,gBjD4yCkC;EgDjzClC,sChDwjB4B;EgDtjB5B,kBAAA;EACA,gBhDikB4B;EgDhkB5B,gBhDskB4B;EgDrkB5B,gBAAA;EACA,iBAAA;EACA,qBAAA;EACA,iBAAA;EACA,oBAAA;EACA,sBAAA;EACA,kBAAA;EACA,oBAAA;EACA,mBAAA;EACA,gBAAA;EjDsRI,mBALI;EkDpRR,qBAAA;EACA,sBjDLS;EiDMT,4BAAA;EACA,oCAAA;EhDIE,qBAAA;ANinLJ;AsDjnLE;EACE,kBAAA;EACA,cAAA;EACA,WjD4yCgC;EiD3yChC,cjD4yCgC;ALu0IpC;AsDjnLI;EAEE,kBAAA;EACA,cAAA;EACA,WAAA;EACA,yBAAA;EACA,mBAAA;AtDknLN;;AsD5mLE;EACE,2BAAA;AtD+mLJ;AsD7mLI;EACE,SAAA;EACA,6BAAA;EACA,qCjD2xC8B;ALo1IpC;AsD5mLI;EACE,WjD4cwB;EiD3cxB,6BAAA;EACA,sBjDzCK;ALupLX;;AsDxmLE;EACE,yBAAA;EACA,ajD0wCgC;EiDzwChC,YjDwwCgC;ALm2IpC;AsDzmLI;EACE,OAAA;EACA,oCAAA;EACA,uCjDuwC8B;ALo2IpC;AsDxmLI;EACE,SjDwbwB;EiDvbxB,oCAAA;EACA,wBjD7DK;ALuqLX;;AsDpmLE;EACE,wBAAA;AtDumLJ;AsDrmLI;EACE,MAAA;EACA,oCAAA;EACA,wCjDqvC8B;ALk3IpC;AsDpmLI;EACE,QjDsawB;EiDraxB,oCAAA;EACA,yBjD/EK;ALqrLX;AsDjmLE;EACE,kBAAA;EACA,MAAA;EACA,SAAA;EACA,cAAA;EACA,WjDiuCgC;EiDhuChC,oBAAA;EACA,WAAA;EACA,gCAAA;AtDmmLJ;;AsD9lLE;EACE,0BAAA;EACA,ajDwtCgC;EiDvtChC,YjDstCgC;AL24IpC;AsD/lLI;EACE,QAAA;EACA,oCAAA;EACA,sCjDqtC8B;AL44IpC;AsD9lLI;EACE,UjDsYwB;EiDrYxB,oCAAA;EACA,uBjD/GK;AL+sLX;;AsD3kLA;EACE,oBAAA;EACA,gBAAA;ElDuJI,eALI;EkD/IR,yBjDwqCkC;EiDvqClC,2CAAA;EhDtHE,0CAAA;EACA,2CAAA;ANosLJ;AsD5kLE;EACE,aAAA;AtD8kLJ;;AsD1kLA;EACE,kBAAA;EACA,cjD3IS;ALwtLX;;AuD5tLA;EACE,kBAAA;AvD+tLF;;AuD5tLA;EACE,mBAAA;AvD+tLF;;AuD5tLA;EACE,kBAAA;EACA,WAAA;EACA,gBAAA;AvD+tLF;AwDrvLE;EACE,cAAA;EACA,WAAA;EACA,WAAA;AxDuvLJ;;AuDhuLA;EACE,kBAAA;EACA,aAAA;EACA,WAAA;EACA,WAAA;EACA,mBAAA;EACA,mCAAA;EAAA,2BAAA;ElClBI,sCkCmBJ;AvDmuLF;AqBlvLM;EkCQN;IlCPQ,gBAAA;ErBqvLN;AACF;;AuDruLA;;;EAGE,cAAA;AvDwuLF;;AuDruLA,qBAAA;AACA;;EAEE,2BAAA;AvDwuLF;;AuDruLA;;EAEE,4BAAA;AvDwuLF;;AuDruLA,mBAAA;AAQE;EACE,UAAA;EACA,4BAAA;EACA,eAAA;AvDiuLJ;AuD9tLE;;;EAGE,UAAA;EACA,UAAA;AvDguLJ;AuD7tLE;;EAEE,UAAA;EACA,UAAA;ElC/DE,2BkCgEF;AvD+tLJ;AqB3xLM;EkCwDJ;;IlCvDM,gBAAA;ErB+xLN;AACF;;AuD5tLA;;EAEE,kBAAA;EACA,MAAA;EACA,SAAA;EACA,UAAA;EAEA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,UlD05CmC;EkDz5CnC,UAAA;EACA,WlD7FS;EkD8FT,kBAAA;EACA,gBAAA;EACA,SAAA;EACA,YlDq5CmC;EgB9+C/B,8BkC0FJ;AvD8tLF;AqBpzLM;EkCqEN;;IlCpEQ,gBAAA;ErBwzLN;AACF;AuDjuLE;;;EAEE,WlDvGO;EkDwGP,qBAAA;EACA,UAAA;EACA,YlD64CiC;ALu1IrC;;AuDjuLA;EACE,OAAA;AvDouLF;;AuDjuLA;EACE,QAAA;AvDouLF;;AuD/tLA;;EAEE,qBAAA;EACA,WlD84CmC;EkD74CnC,YlD64CmC;EkD54CnC,4BAAA;EACA,wBAAA;EACA,0BAAA;AvDkuLF;;AuD/tLA;;;;;;;GAAA;AAQA;EACE,yQAAA;AvDkuLF;;AuDhuLA;EACE,0QAAA;AvDmuLF;;AuD3tLA;EACE,kBAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,UAAA;EACA,aAAA;EACA,uBAAA;EACA,UAAA;EAEA,iBlDs1CmC;EkDr1CnC,mBAAA;EACA,gBlDo1CmC;EkDn1CnC,gBAAA;AvD6tLF;AuD3tLE;EACE,uBAAA;EACA,cAAA;EACA,WlDm1CiC;EkDl1CjC,WlDm1CiC;EkDl1CjC,UAAA;EACA,iBlDm1CiC;EkDl1CjC,gBlDk1CiC;EkDj1CjC,mBAAA;EACA,eAAA;EACA,sBlD9KO;EkD+KP,4BAAA;EACA,SAAA;EAEA,kCAAA;EACA,qCAAA;EACA,YlD00CiC;EgBt/C/B,6BkC6KF;AvD4tLJ;AqBr4LM;EkCwJJ;IlCvJM,gBAAA;ErBw4LN;AACF;AuD9tLE;EACE,UlDu0CiC;ALy5IrC;;AuDvtLA;EACE,kBAAA;EACA,UAAA;EACA,elDi0CmC;EkDh0CnC,SAAA;EACA,oBlD8zCmC;EkD7zCnC,uBlD6zCmC;EkD5zCnC,WlDzMS;EkD0MT,kBAAA;AvD0tLF;;AuDptLE;;EAEE,gClDg0CiC;ALu5IrC;AuDptLE;EACE,sBlD5MO;ALk6LX;AuDntLE;EACE,WlDhNO;ALq6LX;;AyDl7LA;EACE;IAAK,0CAAA;EzDs7LL;AACF;;AyDx7LA;EACE;IAAK,0CAAA;EzDs7LL;AACF;AyDn7LA;EACE,qBAAA;EACA,WpDqhDwB;EoDphDxB,YpDohDwB;EoDnhDxB,wBpDqhDwB;EoDphDxB,iCAAA;EACA,+BAAA;EAEA,kBAAA;EACA,uDAAA;EAAA,+CAAA;AzDo7LF;;AyDj7LA;EACE,WpDghDwB;EoD/gDxB,YpD+gDwB;EoD9gDxB,mBpDghDwB;ALo6I1B;;AyD56LA;EACE;IACE,mBAAA;EzD+6LF;EyD76LA;IACE,UAAA;IACA,eAAA;EzD+6LF;AACF;;AyDt7LA;EACE;IACE,mBAAA;EzD+6LF;EyD76LA;IACE,UAAA;IACA,eAAA;EzD+6LF;AACF;AyD36LA;EACE,qBAAA;EACA,WpDm/CwB;EoDl/CxB,YpDk/CwB;EoDj/CxB,wBpDm/CwB;EoDl/CxB,8BAAA;EAEA,kBAAA;EACA,UAAA;EACA,qDAAA;EAAA,6CAAA;AzD46LF;;AyDz6LA;EACE,WpD8+CwB;EoD7+CxB,YpD6+CwB;AL+7I1B;;AyDx6LE;EACE;;IAEE,gCAAA;IAAA,wBAAA;EzD26LJ;AACF;A0D7+LA;EACE,eAAA;EACA,SAAA;EACA,arDgiCkC;EqD/hClC,aAAA;EACA,sBAAA;EACA,eAAA;EAEA,kBAAA;EACA,sBrDDS;EqDET,4BAAA;EACA,UAAA;ErCKI,sCqCHJ;A1D6+LF;AqBt+LM;EqCpBN;IrCqBQ,gBAAA;ErBy+LN;AACF;;A0D/+LA;EPdE,eAAA;EACA,MAAA;EACA,OAAA;EACA,a9C6hCkC;E8C5hClC,YAAA;EACA,aAAA;EACA,sB9CUS;ALu/LX;AmD9/LE;EAAS,UAAA;AnDigMX;AmDhgME;EAAS,Y9Cq3CyB;AL8oJpC;;A0D3/LA;EACE,aAAA;EACA,mBAAA;EACA,8BAAA;EACA,kBAAA;A1D8/LF;A0D5/LE;EACE,sBAAA;EACA,mBAAA;EACA,qBAAA;EACA,sBAAA;A1D8/LJ;;A0D1/LA;EACE,gBAAA;EACA,gBrDuiB4B;ALs9K9B;;A0D1/LA;EACE,YAAA;EACA,kBAAA;EACA,gBAAA;A1D6/LF;;A0D1/LA;EACE,MAAA;EACA,OAAA;EACA,YrDohDkC;EqDnhDlC,0CAAA;EACA,4BAAA;A1D6/LF;;A0D1/LA;EACE,MAAA;EACA,QAAA;EACA,YrD4gDkC;EqD3gDlC,yCAAA;EACA,2BAAA;A1D6/LF;;A0D1/LA;EACE,MAAA;EACA,QAAA;EACA,OAAA;EACA,YrDogDkC;EqDngDlC,gBAAA;EACA,2CAAA;EACA,4BAAA;A1D6/LF;;A0D1/LA;EACE,QAAA;EACA,OAAA;EACA,YrD2/CkC;EqD1/ClC,gBAAA;EACA,wCAAA;EACA,2BAAA;A1D6/LF;;A0D1/LA;EACE,eAAA;A1D6/LF;;A2D9kMA;EACE,qBAAA;EACA,eAAA;EACA,sBAAA;EACA,YAAA;EACA,8BAAA;EACA,YtD4sCkC;ALq4JpC;A2D/kME;EACE,qBAAA;EACA,WAAA;A3DilMJ;;A2D5kMA;EACE,iBAAA;A3D+kMF;;A2D5kMA;EACE,iBAAA;A3D+kMF;;A2D5kMA;EACE,iBAAA;A3D+kMF;;A2D1kME;EACE,2DAAA;EAAA,mDAAA;A3D6kMJ;;A2DzkMA;EACE;IACE,YtD+qCgC;EL65JlC;AACF;;A2D/kMA;EACE;IACE,YtD+qCgC;EL65JlC;AACF;A2DzkMA;EACE,uFAAA;EAAA,+EAAA;EACA,4BAAA;EAAA,oBAAA;EACA,sDAAA;EAAA,8CAAA;A3D2kMF;;A2DxkMA;EACE;IACE,+BAAA;IAAA,uBAAA;E3D2kMF;AACF;;A2D9kMA;EACE;IACE,+BAAA;IAAA,uBAAA;E3D2kMF;AACF;AwD1nME;EACE,cAAA;EACA,WAAA;EACA,WAAA;AxD4nMJ;;A4DhoME;EACE,cvD8EW;ALqjMf;A4DhoMM;EAEE,cAAA;A5DioMR;;A4DvoME;EACE,cvD8EW;AL4jMf;A4DvoMM;EAEE,cAAA;A5DwoMR;;A4D9oME;EACE,cvD8EW;ALmkMf;A4D9oMM;EAEE,cAAA;A5D+oMR;;A4DrpME;EACE,cvD8EW;AL0kMf;A4DrpMM;EAEE,cAAA;A5DspMR;;A4D5pME;EACE,cvD8EW;ALilMf;A4D5pMM;EAEE,cAAA;A5D6pMR;;A4DnqME;EACE,cvD8EW;ALwlMf;A4DnqMM;EAEE,cAAA;A5DoqMR;;A4D1qME;EACE,cvD8EW;AL+lMf;A4D1qMM;EAEE,cAAA;A5D2qMR;;A4DjrME;EACE,cvD8EW;ALsmMf;A4DjrMM;EAEE,cAAA;A5DkrMR;;A6DvrMA;EACE,kBAAA;EACA,WAAA;A7D0rMF;A6DxrME;EACE,cAAA;EACA,mCAAA;EACA,WAAA;A7D0rMJ;A6DvrME;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;A7DyrMJ;;A6DprME;EACE,uBAAA;A7DurMJ;;A6DxrME;EACE,qCAAA;A7D2rMJ;;A6D5rME;EACE,sCAAA;A7D+rMJ;;A6DhsME;EACE,sCAAA;A7DmsMJ;;A8DxtMA;EACE,eAAA;EACA,MAAA;EACA,QAAA;EACA,OAAA;EACA,azD0hCkC;ALisKpC;;A8DxtMA;EACE,eAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,azDkhCkC;ALysKpC;;A8DntMI;EACE,wBAAA;EAAA,gBAAA;EACA,MAAA;EACA,azDsgC8B;ALgtKpC;;AajrMI;EiDxCA;IACE,wBAAA;IAAA,gBAAA;IACA,MAAA;IACA,azDsgC8B;ELutKlC;AACF;AazrMI;EiDxCA;IACE,wBAAA;IAAA,gBAAA;IACA,MAAA;IACA,azDsgC8B;EL8tKlC;AACF;AahsMI;EiDxCA;IACE,wBAAA;IAAA,gBAAA;IACA,MAAA;IACA,azDsgC8B;ELquKlC;AACF;AavsMI;EiDxCA;IACE,wBAAA;IAAA,gBAAA;IACA,MAAA;IACA,azDsgC8B;EL4uKlC;AACF;Aa9sMI;EiDxCA;IACE,wBAAA;IAAA,gBAAA;IACA,MAAA;IACA,azDsgC8B;ELmvKlC;AACF;A+DnxMA;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,mBAAA;A/DqxMF;;A+DlxMA;EACE,aAAA;EACA,cAAA;EACA,sBAAA;EACA,mBAAA;A/DqxMF;;AgE7xMA;;ECIE,6BAAA;EACA,qBAAA;EACA,sBAAA;EACA,qBAAA;EACA,uBAAA;EACA,2BAAA;EACA,iCAAA;EACA,8BAAA;EACA,oBAAA;AjE8xMF;;AkEzyME;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,U7D8asC;E6D7atC,WAAA;AlE4yMJ;;AmEpzMA;ECAE,gBAAA;EACA,uBAAA;EACA,mBAAA;ApEwzMF;;AqE9zMA;EACE,qBAAA;EACA,mBAAA;EACA,UAAA;EACA,eAAA;EACA,8BAAA;EACA,ahEuoB4B;AL0rL9B;;AsExwMQ;EAOI,mCAAA;AtEqwMZ;;AsE5wMQ;EAOI,8BAAA;AtEywMZ;;AsEhxMQ;EAOI,iCAAA;AtE6wMZ;;AsEpxMQ;EAOI,iCAAA;AtEixMZ;;AsExxMQ;EAOI,sCAAA;AtEqxMZ;;AsE5xMQ;EAOI,mCAAA;AtEyxMZ;;AsEhyMQ;EAOI,sBAAA;AtE6xMZ;;AsEpyMQ;EAOI,uBAAA;AtEiyMZ;;AsExyMQ;EAOI,sBAAA;AtEqyMZ;;AsE5yMQ;EAOI,qBAAA;AtEyyMZ;;AsEhzMQ;EAOI,wBAAA;AtE6yMZ;;AsEpzMQ;EAOI,uBAAA;AtEizMZ;;AsExzMQ;EAOI,wBAAA;AtEqzMZ;;AsE5zMQ;EAOI,qBAAA;AtEyzMZ;;AsEh0MQ;EAOI,yBAAA;AtE6zMZ;;AsEp0MQ;EAOI,2BAAA;AtEi0MZ;;AsEx0MQ;EAOI,4BAAA;AtEq0MZ;;AsE50MQ;EAOI,2BAAA;AtEy0MZ;;AsEh1MQ;EAOI,0BAAA;AtE60MZ;;AsEp1MQ;EAOI,gCAAA;AtEi1MZ;;AsEx1MQ;EAOI,yBAAA;AtEq1MZ;;AsE51MQ;EAOI,wBAAA;AtEy1MZ;;AsEh2MQ;EAOI,yBAAA;AtE61MZ;;AsEp2MQ;EAOI,6BAAA;AtEi2MZ;;AsEx2MQ;EAOI,8BAAA;AtEq2MZ;;AsE52MQ;EAOI,wBAAA;AtEy2MZ;;AsEh3MQ;EAOI,+BAAA;AtE62MZ;;AsEp3MQ;EAOI,wBAAA;AtEi3MZ;;AsEx3MQ;EAOI,wDAAA;AtEq3MZ;;AsE53MQ;EAOI,8DAAA;AtEy3MZ;;AsEh4MQ;EAOI,uDAAA;AtE63MZ;;AsEp4MQ;EAOI,2BAAA;AtEi4MZ;;AsEx4MQ;EAOI,2BAAA;AtEq4MZ;;AsE54MQ;EAOI,6BAAA;AtEy4MZ;;AsEh5MQ;EAOI,6BAAA;AtE64MZ;;AsEp5MQ;EAOI,0BAAA;AtEi5MZ;;AsEx5MQ;EAOI,mCAAA;EAAA,2BAAA;AtEq5MZ;;AsE55MQ;EAOI,iBAAA;AtEy5MZ;;AsEh6MQ;EAOI,mBAAA;AtE65MZ;;AsEp6MQ;EAOI,oBAAA;AtEi6MZ;;AsEx6MQ;EAOI,oBAAA;AtEq6MZ;;AsE56MQ;EAOI,sBAAA;AtEy6MZ;;AsEh7MQ;EAOI,uBAAA;AtE66MZ;;AsEp7MQ;EAOI,kBAAA;AtEi7MZ;;AsEx7MQ;EAOI,oBAAA;AtEq7MZ;;AsE57MQ;EAOI,qBAAA;AtEy7MZ;;AsEh8MQ;EAOI,mBAAA;AtE67MZ;;AsEp8MQ;EAOI,qBAAA;AtEi8MZ;;AsEx8MQ;EAOI,sBAAA;AtEq8MZ;;AsE58MQ;EAOI,2CAAA;AtEy8MZ;;AsEh9MQ;EAOI,sCAAA;AtE68MZ;;AsEp9MQ;EAOI,sCAAA;AtEi9MZ;;AsEx9MQ;EAOI,oCAAA;AtEq9MZ;;AsE59MQ;EAOI,oBAAA;AtEy9MZ;;AsEh+MQ;EAOI,wCAAA;AtE69MZ;;AsEp+MQ;EAOI,wBAAA;AtEi+MZ;;AsEx+MQ;EAOI,0CAAA;AtEq+MZ;;AsE5+MQ;EAOI,0BAAA;AtEy+MZ;;AsEh/MQ;EAOI,2CAAA;AtE6+MZ;;AsEp/MQ;EAOI,2BAAA;AtEi/MZ;;AsEx/MQ;EAOI,yCAAA;AtEq/MZ;;AsE5/MQ;EAOI,yBAAA;AtEy/MZ;;AsEhgNQ;EAOI,gCAAA;AtE6/MZ;;AsEpgNQ;EAOI,gCAAA;AtEigNZ;;AsExgNQ;EAOI,gCAAA;AtEqgNZ;;AsE5gNQ;EAOI,gCAAA;AtEygNZ;;AsEhhNQ;EAOI,gCAAA;AtE6gNZ;;AsEphNQ;EAOI,gCAAA;AtEihNZ;;AsExhNQ;EAOI,gCAAA;AtEqhNZ;;AsE5hNQ;EAOI,gCAAA;AtEyhNZ;;AsEhiNQ;EAOI,6BAAA;AtE6hNZ;;AsEpiNQ;EAOI,4BAAA;AtEiiNZ;;AsExiNQ;EAOI,4BAAA;AtEqiNZ;;AsE5iNQ;EAOI,4BAAA;AtEyiNZ;;AsEhjNQ;EAOI,4BAAA;AtE6iNZ;;AsEpjNQ;EAOI,4BAAA;AtEijNZ;;AsExjNQ;EAOI,qBAAA;AtEqjNZ;;AsE5jNQ;EAOI,qBAAA;AtEyjNZ;;AsEhkNQ;EAOI,qBAAA;AtE6jNZ;;AsEpkNQ;EAOI,sBAAA;AtEikNZ;;AsExkNQ;EAOI,sBAAA;AtEqkNZ;;AsE5kNQ;EAOI,0BAAA;AtEykNZ;;AsEhlNQ;EAOI,uBAAA;AtE6kNZ;;AsEplNQ;EAOI,2BAAA;AtEilNZ;;AsExlNQ;EAOI,sBAAA;AtEqlNZ;;AsE5lNQ;EAOI,sBAAA;AtEylNZ;;AsEhmNQ;EAOI,sBAAA;AtE6lNZ;;AsEpmNQ;EAOI,uBAAA;AtEimNZ;;AsExmNQ;EAOI,uBAAA;AtEqmNZ;;AsE5mNQ;EAOI,2BAAA;AtEymNZ;;AsEhnNQ;EAOI,wBAAA;AtE6mNZ;;AsEpnNQ;EAOI,4BAAA;AtEinNZ;;AsExnNQ;EAOI,yBAAA;AtEqnNZ;;AsE5nNQ;EAOI,8BAAA;AtEynNZ;;AsEhoNQ;EAOI,iCAAA;AtE6nNZ;;AsEpoNQ;EAOI,sCAAA;AtEioNZ;;AsExoNQ;EAOI,yCAAA;AtEqoNZ;;AsE5oNQ;EAOI,uBAAA;AtEyoNZ;;AsEhpNQ;EAOI,uBAAA;AtE6oNZ;;AsEppNQ;EAOI,yBAAA;AtEipNZ;;AsExpNQ;EAOI,yBAAA;AtEqpNZ;;AsE5pNQ;EAOI,0BAAA;AtEypNZ;;AsEhqNQ;EAOI,4BAAA;AtE6pNZ;;AsEpqNQ;EAOI,kCAAA;AtEiqNZ;;AsExqNQ;EAOI,iBAAA;AtEqqNZ;;AsE5qNQ;EAOI,uBAAA;AtEyqNZ;;AsEhrNQ;EAOI,sBAAA;AtE6qNZ;;AsEprNQ;EAOI,oBAAA;AtEirNZ;;AsExrNQ;EAOI,sBAAA;AtEqrNZ;;AsE5rNQ;EAOI,oBAAA;AtEyrNZ;;AsEhsNQ;EAOI,sCAAA;AtE6rNZ;;AsEpsNQ;EAOI,oCAAA;AtEisNZ;;AsExsNQ;EAOI,kCAAA;AtEqsNZ;;AsE5sNQ;EAOI,yCAAA;AtEysNZ;;AsEhtNQ;EAOI,wCAAA;AtE6sNZ;;AsEptNQ;EAOI,wCAAA;AtEitNZ;;AsExtNQ;EAOI,kCAAA;AtEqtNZ;;AsE5tNQ;EAOI,gCAAA;AtEytNZ;;AsEhuNQ;EAOI,8BAAA;AtE6tNZ;;AsEpuNQ;EAOI,gCAAA;AtEiuNZ;;AsExuNQ;EAOI,+BAAA;AtEquNZ;;AsE5uNQ;EAOI,oCAAA;AtEyuNZ;;AsEhvNQ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A;EtEwrQV;;EsE/rQM;IAOI,6BAAA;EtE4rQV;AACF;AapsQI;EyDAI;IAOI,sBAAA;EtEisQV;;EsExsQM;IAOI,uBAAA;EtEqsQV;;EsE5sQM;IAOI,sBAAA;EtEysQV;;EsEhtQM;IAOI,0BAAA;EtE6sQV;;EsEptQM;IAOI,gCAAA;EtEitQV;;EsExtQM;IAOI,yBAAA;EtEqtQV;;EsE5tQM;IAOI,wBAAA;EtEytQV;;EsEhuQM;IAOI,yBAAA;EtE6tQV;;EsEpuQM;IAOI,6BAAA;EtEiuQV;;EsExuQM;IAOI,8BAAA;EtEquQV;;EsE5uQM;IAOI,wBAAA;EtEyuQV;;EsEhvQM;IAOI,+BAAA;EtE6uQV;;EsEpvQM;IAOI,wBAAA;EtEivQV;;EsExvQM;IAOI,yBAAA;EtEqvQV;;EsE5vQM;IAOI,8BAAA;EtEyvQV;;EsEhwQM;IAOI,iCAAA;EtE6vQV;;EsEpwQM;IAOI,sCAAA;EtEiwQV;;EsExwQM;IAOI,yCAAA;EtEqwQV;;EsE5wQM;IAOI,uBAAA;EtEywQV;;EsEhxQM;IAOI,uBAAA;EtE6wQV;;EsEpxQM;IAOI,yBAAA;EtEixQV;;EsExxQM;IAOI,yBAAA;EtEqxQV;;EsE5xQM;IAOI,0BAAA;EtEyxQV;;EsEhyQM;IAOI,4BAAA;EtE6xQV;;EsEpyQM;IAOI,kCAAA;EtEiyQV;;EsExyQM;IAOI,iBAAA;EtEqyQV;;EsE5yQM;IAOI,uBAAA;EtEyyQV;;EsEhzQM;IAOI,sBAAA;EtE6yQV;;EsEpzQM;IAOI,oBAAA;EtEizQV;;EsExzQM;IAOI,sBAAA;EtEqzQV;;EsE5zQM;IAOI,oBAAA;EtEyzQV;;EsEh0QM;IAOI,sCAAA;EtE6zQV;;EsEp0QM;IAOI,oCAAA;EtEi0QV;;EsEx0QM;IAOI,kCAAA;EtEq0QV;;EsE50QM;IAOI,yCAAA;EtEy0QV;;EsEh1QM;IAOI,wCAAA;EtE60QV;;EsEp1QM;IAOI,wCAAA;EtEi1QV;;EsEx1QM;IAOI,kCAAA;EtEq1QV;;EsE51QM;IAOI,gCAAA;EtEy1QV;;EsEh2QM;IAOI,8BAAA;EtE61QV;;EsEp2QM;IAOI,gCAAA;EtEi2QV;;EsEx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RM;IAOI,0BAAA;EtEw1RV;;EsE/1RM;IAOI,gCAAA;EtE41RV;;EsEn2RM;IAOI,yBAAA;EtEg2RV;;EsEv2RM;IAOI,wBAAA;EtEo2RV;;EsE32RM;IAOI,yBAAA;EtEw2RV;;EsE/2RM;IAOI,6BAAA;EtE42RV;;EsEn3RM;IAOI,8BAAA;EtEg3RV;;EsEv3RM;IAOI,wBAAA;EtEo3RV;;EsE33RM;IAOI,+BAAA;EtEw3RV;;EsE/3RM;IAOI,wBAAA;EtE43RV;;EsEn4RM;IAOI,yBAAA;EtEg4RV;;EsEv4RM;IAOI,8BAAA;EtEo4RV;;EsE34RM;IAOI,iCAAA;EtEw4RV;;EsE/4RM;IAOI,sCAAA;EtE44RV;;EsEn5RM;IAOI,yCAAA;EtEg5RV;;EsEv5RM;IAOI,uBAAA;EtEo5RV;;EsE35RM;IAOI,uBAAA;EtEw5RV;;EsE/5RM;IAOI,yBAAA;EtE45RV;;EsEn6RM;IAOI,yBAAA;EtEg6RV;;EsEv6RM;IAOI,0BAAA;EtEo6RV;;EsE36RM;IAOI,4BAAA;EtEw6RV;;EsE/6RM;IAOI,kCAAA;EtE46RV;;EsEn7RM;IAOI,iBAAA;EtEg7RV;;EsEv7RM;IAOI,uBAAA;EtEo7RV;;EsE37RM;IAOI,sBAAA;EtEw7RV;;EsE/7RM;IAOI,oBAAA;EtE47RV;;EsEn8RM;IAOI,sBAAA;EtEg8RV;;EsEv8RM;IAOI,oBAAA;EtEo8RV;;EsE38RM;IAOI,sCAAA;EtEw8RV;;EsE/8RM;IAOI,oCAAA;EtE48RV;;EsEn9RM;IAOI,kCAAA;EtEg9RV;;EsEv9RM;IAOI,yCAAA;EtEo9RV;;EsE39RM;IAOI,wCAAA;EtEw9RV;;EsE/9RM;IAOI,wCAAA;EtE49RV;;EsEn+RM;IAOI,kCAAA;EtEg+RV;;EsEv+RM;IAOI,gCAAA;EtEo+RV;;EsE3+RM;IAOI,8BAAA;EtEw+RV;;EsE/+RM;IAOI,gCAAA;EtE4+RV;;EsEn/RM;IAOI,+BAAA;EtEg/RV;;EsEv/RM;IAOI,oCAAA;EtEo/RV;;EsE3/RM;IAOI,kCAAA;EtEw/RV;;EsE//RM;IAOI,gCAAA;EtE4/RV;;EsEngSM;IAOI,uCAAA;EtEggSV;;E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E1/SM;IAOI,6BAAA;EtEu/SV;;EsE9/SM;IAOI,8BAAA;EtE2/SV;;EsElgTM;IAOI,wBAAA;EtE+/SV;;EsEtgTM;IAOI,+BAAA;EtEmgTV;;EsE1gTM;IAOI,wBAAA;EtEugTV;;EsE9gTM;IAOI,yBAAA;EtE2gTV;;EsElhTM;IAOI,8BAAA;EtE+gTV;;EsEthTM;IAOI,iCAAA;EtEmhTV;;EsE1hTM;IAOI,sCAAA;EtEuhTV;;EsE9hTM;IAOI,yCAAA;EtE2hTV;;EsEliTM;IAOI,uBAAA;EtE+hTV;;EsEtiTM;IAOI,uBAAA;EtEmiTV;;EsE1iTM;IAOI,yBAAA;EtEuiTV;;EsE9iTM;IAOI,yBAAA;EtE2iTV;;EsEljTM;IAOI,0BAAA;EtE+iTV;;EsEtjTM;IAOI,4BAAA;EtEmjTV;;EsE1jTM;IAOI,kCAAA;EtEujTV;;EsE9jTM;IAOI,iBAAA;EtE2jTV;;EsElkTM;IAOI,uBAAA;EtE+jTV;;EsEtkTM;IAOI,sBAAA;EtEmkTV;;EsE1kTM;IAOI,oBAAA;EtEukTV;;EsE9kTM;IAOI,sBAAA;EtE2kTV;;EsEllTM;IAOI,oBAAA;EtE+kTV;;EsEtlTM;IAOI,sCAAA;EtEmlTV;;EsE1lTM;IAOI,oCAAA;EtEulTV;;EsE9lTM;IAOI,kCAAA;EtE2lTV;;EsElmTM;IAOI,yCAAA;EtE+lTV;;EsEtmTM;IAOI,wCAAA;EtEmmTV;;EsE1mTM;IAOI,wCAAA;EtEumTV;;EsE9mTM;IAOI,kCAAA;EtE2mTV;;EsElnTM;IAOI,gCAAA;EtE+mTV;;EsEtnTM;IAOI,8BAAA;EtEmnTV;;EsE1nTM;IAOI,gCAAA;EtEunTV;;EsE9nTM;IAOI,+BAAA;EtE2nTV;;EsEloTM;IAOI,oCAAA;EtE+nTV;;EsEtoTM;IAOI,kCAAA;EtEmoTV;;EsE1oTM;IAOI,gCAAA;EtEuoTV;;EsE9oTM;IAOI,uCAAA;EtE2oTV;;EsElpTM;IAOI,sCAAA;EtE+oTV;;EsEtpTM;IAOI,iCAAA;EtEmpTV;;EsE1pTM;IAOI,2BAAA;EtEupTV;;EsE9pTM;IAOI,iCAAA;EtE2pTV;;EsElqTM;IAOI,+BAAA;EtE+pTV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;EsEzpUM;IAOI,yBAAA;EtEspUV;;EsE7pUM;IAOI,8BAAA;EtE0pUV;;EsEjqUM;IAOI,iCAAA;EtE8pUV;;EsErqUM;IAOI,sCAAA;EtEkqUV;;EsEzqUM;IAOI,yCAAA;EtEsqUV;;EsE7qUM;IAOI,uBAAA;EtE0qUV;;EsEjrUM;IAOI,uBAAA;EtE8qUV;;EsErrUM;IAOI,yBAAA;EtEkrUV;;EsEzrUM;IAOI,yBAAA;EtEsrUV;;EsE7rUM;IAOI,0BAAA;EtE0rUV;;EsEjsUM;IAOI,4BAAA;EtE8rUV;;EsErsUM;IAOI,kCAAA;EtEksUV;;EsEzsUM;IAOI,iBAAA;EtEssUV;;EsE7sUM;IAOI,uBAAA;EtE0sUV;;EsEjtUM;IAOI,sBAAA;EtE8sUV;;EsErtUM;IAOI,oBAAA;EtEktUV;;EsEztUM;IAOI,sBAAA;EtEstUV;;EsE7tUM;IAOI,oBAAA;EtE0tUV;;EsEjuUM;IAOI,sCAAA;EtE8tUV;;EsEruUM;IAOI,oCAAA;EtEkuUV;;EsEzuUM;IAOI,kCAAA;EtEsuUV;;EsE7uUM;IAOI,yCAAA;EtE0uUV;;EsEjvUM;IAOI,wCAAA;EtE8uUV;;EsErvUM;IAOI,wCAAA;EtEkvUV;;EsEzvUM;IAOI,kCAAA;EtEsvUV;;EsE7vUM;IAOI,gCAAA;EtE0vUV;;EsEjwUM;IAOI,8BAAA;EtE8vUV;;EsErwUM;IAOI,gCAAA;EtEkwUV;;EsEzwUM;IAOI,+BAAA;EtEswUV;;EsE7wUM;IAOI,oCAAA;EtE0wUV;;EsEjxUM;IAOI,kCAAA;EtE8wUV;;EsErxUM;IAOI,gCAAA;EtEkxUV;;EsEzxUM;IAOI,uCAAA;EtEsxUV;;EsE7xUM;IAOI,sCAAA;EtE0xUV;;EsEjyUM;IAOI,iCAAA;EtE8xUV;;EsEryUM;IAOI,2BAAA;EtEkyUV;;EsEzyUM;IAOI,iCAAA;EtEsyUV;;EsE7yUM;IAOI,+BAAA;EtE0yUV;;EsEjzUM;IAOI,6BAAA;EtE8yUV;;EsErzUM;IAOI,+BAAA;EtEkzUV;;EsEzzUM;IAOI,8BAAA;EtEszUV;;EsE7zUM;IAOI,oBAAA;EtE0zUV;;EsEj0UM;IAOI,mBAAA;EtE8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AOI,8BAAA;EtEwoVV;;EsE/oVM;IAOI,4BAAA;EtE4oVV;;EsEnpVM;IAOI,8BAAA;EtEgpVV;;EsEvpVM;IAOI,4BAAA;EtEopVV;;EsE3pVM;IAOI,2BAAA;EtEwpVV;;EsE/pVM;IAOI,iCAAA;EtE4pVV;;EsEnqVM;IAOI,gCAAA;EtEgqVV;;EsEvqVM;IAOI,8BAAA;EtEoqVV;;EsE3qVM;IAOI,gCAAA;EtEwqVV;;EsE/qVM;IAOI,8BAAA;EtE4qVV;;EsEnrVM;IAOI,4BAAA;EtEgrVV;;EsEvrVM;IAOI,kCAAA;EtEorVV;;EsE3rVM;IAOI,iCAAA;EtEwrVV;;EsE/rVM;IAOI,+BAAA;EtE4rVV;;EsEnsVM;IAOI,iCAAA;EtEgsVV;;EsEvsVM;IAOI,+BAAA;EtEosVV;;EsE3sVM;IAOI,0BAAA;EtEwsVV;;EsE/sVM;IAOI,gCAAA;EtE4sVV;;EsEntVM;IAOI,+BAAA;EtEgtVV;;EsEvtVM;IAOI,6BAAA;EtEotVV;;EsE3tVM;IAOI,+BAAA;EtEwtVV;;EsE/tVM;IAOI,6BAAA;EtE4tVV;;EsEnuVM;IAOI,2BAAA;EtEguVV;;EsEvuVM;IAOI,4BAAA;EtEouVV;;EsE3uVM;IAOI,6BAAA;EtEwuVV;AACF;AuE5xVA;ED4CQ;IAOI,4BAAA;EtE6uVV;;EsEpvVM;IAOI,0BAAA;EtEivVV;;EsExvVM;IAOI,6BAAA;EtEqvVV;;EsE5vVM;IAOI,4BAAA;EtEyvVV;AACF;AuE1xVA;EDyBQ;IAOI,0BAAA;EtE8vVV;;EsErwVM;IAOI,gCAAA;EtEkwVV;;EsEzwVM;IAOI,yBAAA;EtEswVV;;EsE7wVM;IAOI,wBAAA;EtE0wVV;;EsEjxVM;IAOI,yBAAA;EtE8wVV;;EsErxVM;IAOI,6BAAA;EtEkxVV;;EsEzxVM;IAOI,8BAAA;EtEsxVV;;EsE7xVM;IAOI,wBAAA;EtE0xVV;;EsEjyVM;IAOI,+BAAA;EtE8xVV;;EsEryVM;IAOI,wBAAA;EtEkyVV;AACF","file":"bootstrap.css","sourcesContent":["@charset \"UTF-8\";\n/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root {\n  --bs-blue: #0d6efd;\n  --bs-indigo: #6610f2;\n  --bs-purple: #6f42c1;\n  --bs-pink: #d63384;\n  --bs-red: #dc3545;\n  --bs-orange: #fd7e14;\n  --bs-yellow: #ffc107;\n  --bs-green: #198754;\n  --bs-teal: #20c997;\n  --bs-cyan: #0dcaf0;\n  --bs-white: #fff;\n  --bs-gray: #6c757d;\n  --bs-gray-dark: #343a40;\n  --bs-gray-100: #f8f9fa;\n  --bs-gray-200: #e9ecef;\n  --bs-gray-300: #dee2e6;\n  --bs-gray-400: #ced4da;\n  --bs-gray-500: #adb5bd;\n  --bs-gray-600: #6c757d;\n  --bs-gray-700: #495057;\n  --bs-gray-800: #343a40;\n  --bs-gray-900: #212529;\n  --bs-primary: #0d6efd;\n  --bs-secondary: #6c757d;\n  --bs-success: #198754;\n  --bs-info: #0dcaf0;\n  --bs-warning: #ffc107;\n  --bs-danger: #dc3545;\n  --bs-light: #f8f9fa;\n  --bs-dark: #212529;\n  --bs-primary-rgb: 13, 110, 253;\n  --bs-secondary-rgb: 108, 117, 125;\n  --bs-success-rgb: 25, 135, 84;\n  --bs-info-rgb: 13, 202, 240;\n  --bs-warning-rgb: 255, 193, 7;\n  --bs-danger-rgb: 220, 53, 69;\n  --bs-light-rgb: 248, 249, 250;\n  --bs-dark-rgb: 33, 37, 41;\n  --bs-white-rgb: 255, 255, 255;\n  --bs-black-rgb: 0, 0, 0;\n  --bs-body-rgb: 33, 37, 41;\n  --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n  --bs-body-font-family: var(--bs-font-sans-serif);\n  --bs-body-font-size: 1rem;\n  --bs-body-font-weight: 400;\n  --bs-body-line-height: 1.5;\n  --bs-body-color: #212529;\n  --bs-body-bg: #fff;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  :root {\n    scroll-behavior: smooth;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: var(--bs-body-font-family);\n  font-size: var(--bs-body-font-size);\n  font-weight: var(--bs-body-font-weight);\n  line-height: var(--bs-body-line-height);\n  color: var(--bs-body-color);\n  text-align: var(--bs-body-text-align);\n  background-color: var(--bs-body-bg);\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n  margin: 1rem 0;\n  color: inherit;\n  background-color: currentColor;\n  border: 0;\n  opacity: 0.25;\n}\n\nhr:not([size]) {\n  height: 1px;\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\nh1, .h1 {\n  font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n  h1, .h1 {\n    font-size: 2.5rem;\n  }\n}\n\nh2, .h2 {\n  font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n  h2, .h2 {\n    font-size: 2rem;\n  }\n}\n\nh3, .h3 {\n  font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n  h3, .h3 {\n    font-size: 1.75rem;\n  }\n}\n\nh4, .h4 {\n  font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n  h4, .h4 {\n    font-size: 1.5rem;\n  }\n}\n\nh5, .h5 {\n  font-size: 1.25rem;\n}\n\nh6, .h6 {\n  font-size: 1rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-bs-original-title] {\n  text-decoration: underline dotted;\n  cursor: help;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: 0.5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall, .small {\n  font-size: 0.875em;\n}\n\nmark, .mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 0.75em;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\na {\n  color: #0d6efd;\n  text-decoration: underline;\n}\na:hover {\n  color: #0a58ca;\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n  color: inherit;\n  text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: var(--bs-font-monospace);\n  font-size: 1em;\n  direction: ltr /* rtl:ignore */;\n  unicode-bidi: bidi-override;\n}\n\npre {\n  display: block;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  font-size: 0.875em;\n}\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\ncode {\n  font-size: 0.875em;\n  color: #d63384;\n  word-wrap: break-word;\n}\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 0.875em;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\nkbd kbd {\n  padding: 0;\n  font-size: 1em;\n  font-weight: 700;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  color: #6c757d;\n  text-align: left;\n}\n\nth {\n  text-align: inherit;\n  text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\nlabel {\n  display: inline-block;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n[role=button] {\n  cursor: pointer;\n}\n\nselect {\n  word-wrap: normal;\n}\nselect:disabled {\n  opacity: 1;\n}\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n  -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n  cursor: pointer;\n}\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ntextarea {\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  float: left;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 0.5rem;\n  font-size: calc(1.275rem + 0.3vw);\n  line-height: inherit;\n}\n@media (min-width: 1200px) {\n  legend {\n    font-size: 1.5rem;\n  }\n}\nlegend + * {\n  clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n[type=search] {\n  outline-offset: -2px;\n  -webkit-appearance: textfield;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n::file-selector-button {\n  font: inherit;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\niframe {\n  border: 0;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[hidden] {\n  display: none !important;\n}\n\n.lead {\n  font-size: 1.25rem;\n  font-weight: 300;\n}\n\n.display-1 {\n  font-size: calc(1.625rem + 4.5vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-1 {\n    font-size: 5rem;\n  }\n}\n\n.display-2 {\n  font-size: calc(1.575rem + 3.9vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-2 {\n    font-size: 4.5rem;\n  }\n}\n\n.display-3 {\n  font-size: calc(1.525rem + 3.3vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-3 {\n    font-size: 4rem;\n  }\n}\n\n.display-4 {\n  font-size: calc(1.475rem + 2.7vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-4 {\n    font-size: 3.5rem;\n  }\n}\n\n.display-5 {\n  font-size: calc(1.425rem + 2.1vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-5 {\n    font-size: 3rem;\n  }\n}\n\n.display-6 {\n  font-size: calc(1.375rem + 1.5vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-6 {\n    font-size: 2.5rem;\n  }\n}\n\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline-item {\n  display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n  margin-right: 0.5rem;\n}\n\n.initialism {\n  font-size: 0.875em;\n  text-transform: uppercase;\n}\n\n.blockquote {\n  margin-bottom: 1rem;\n  font-size: 1.25rem;\n}\n.blockquote > :last-child {\n  margin-bottom: 0;\n}\n\n.blockquote-footer {\n  margin-top: -1rem;\n  margin-bottom: 1rem;\n  font-size: 0.875em;\n  color: #6c757d;\n}\n.blockquote-footer::before {\n  content: \"鈥斅燶";\n}\n\n.img-fluid {\n  max-width: 100%;\n  height: auto;\n}\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  border-radius: 0.25rem;\n  max-width: 100%;\n  height: auto;\n}\n\n.figure {\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: 0.5rem;\n  line-height: 1;\n}\n\n.figure-caption {\n  font-size: 0.875em;\n  color: #6c757d;\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n  width: 100%;\n  padding-right: var(--bs-gutter-x, 0.75rem);\n  padding-left: var(--bs-gutter-x, 0.75rem);\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container-sm, .container {\n    max-width: 540px;\n  }\n}\n@media (min-width: 768px) {\n  .container-md, .container-sm, .container {\n    max-width: 720px;\n  }\n}\n@media (min-width: 992px) {\n  .container-lg, .container-md, .container-sm, .container {\n    max-width: 960px;\n  }\n}\n@media (min-width: 1200px) {\n  .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1140px;\n  }\n}\n@media (min-width: 1400px) {\n  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1320px;\n  }\n}\n.row {\n  --bs-gutter-x: 1.5rem;\n  --bs-gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--bs-gutter-y) * -1);\n  margin-right: calc(var(--bs-gutter-x) * -.5);\n  margin-left: calc(var(--bs-gutter-x) * -.5);\n}\n.row > * {\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%;\n  padding-right: calc(var(--bs-gutter-x) * .5);\n  padding-left: calc(var(--bs-gutter-x) * .5);\n  margin-top: var(--bs-gutter-y);\n}\n\n.col {\n  flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.row-cols-1 > * {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.row-cols-2 > * {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.row-cols-3 > * {\n  flex: 0 0 auto;\n  width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.row-cols-5 > * {\n  flex: 0 0 auto;\n  width: 20%;\n}\n\n.row-cols-6 > * {\n  flex: 0 0 auto;\n  width: 16.6666666667%;\n}\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.col-1 {\n  flex: 0 0 auto;\n  width: 8.33333333%;\n}\n\n.col-2 {\n  flex: 0 0 auto;\n  width: 16.66666667%;\n}\n\n.col-3 {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 auto;\n  width: 33.33333333%;\n}\n\n.col-5 {\n  flex: 0 0 auto;\n  width: 41.66666667%;\n}\n\n.col-6 {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 auto;\n  width: 58.33333333%;\n}\n\n.col-8 {\n  flex: 0 0 auto;\n  width: 66.66666667%;\n}\n\n.col-9 {\n  flex: 0 0 auto;\n  width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 auto;\n  width: 83.33333333%;\n}\n\n.col-11 {\n  flex: 0 0 auto;\n  width: 91.66666667%;\n}\n\n.col-12 {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.offset-1 {\n  margin-left: 8.33333333%;\n}\n\n.offset-2 {\n  margin-left: 16.66666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.33333333%;\n}\n\n.offset-5 {\n  margin-left: 41.66666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.33333333%;\n}\n\n.offset-8 {\n  margin-left: 66.66666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.33333333%;\n}\n\n.offset-11 {\n  margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n  --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n  --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n  --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n  --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n  --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n  --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n  --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n  --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n  --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n  --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n  --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n  --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-sm-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-sm-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-sm-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-sm-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-sm-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-sm-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-sm-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-sm-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-sm-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-sm-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-sm-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-sm-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-sm-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-sm-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-sm-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-sm-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-sm-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-sm-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-sm-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n\n  .offset-sm-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-sm-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n\n  .offset-sm-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-sm-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n\n  .offset-sm-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-sm-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n\n  .offset-sm-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-sm-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-sm-0,\n.gx-sm-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-sm-0,\n.gy-sm-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-sm-1,\n.gx-sm-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-sm-1,\n.gy-sm-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-sm-2,\n.gx-sm-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-sm-2,\n.gy-sm-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-sm-3,\n.gx-sm-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-sm-3,\n.gy-sm-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-sm-4,\n.gx-sm-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-sm-4,\n.gy-sm-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-sm-5,\n.gx-sm-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-sm-5,\n.gy-sm-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 768px) {\n  .col-md {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-md-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-md-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-md-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-md-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-md-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-md-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-md-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-md-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-md-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-md-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-md-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-md-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-md-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-md-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-md-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-md-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-md-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-md-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-md-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-md-0 {\n    margin-left: 0;\n  }\n\n  .offset-md-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-md-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n\n  .offset-md-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-md-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n\n  .offset-md-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-md-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n\n  .offset-md-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-md-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-md-0,\n.gx-md-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-md-0,\n.gy-md-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-md-1,\n.gx-md-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-md-1,\n.gy-md-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-md-2,\n.gx-md-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-md-2,\n.gy-md-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-md-3,\n.gx-md-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-md-3,\n.gy-md-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-md-4,\n.gx-md-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-md-4,\n.gy-md-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-md-5,\n.gx-md-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-md-5,\n.gy-md-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 992px) {\n  .col-lg {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-lg-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-lg-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-lg-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-lg-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-lg-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-lg-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-lg-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-lg-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-lg-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-lg-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-lg-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-lg-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-lg-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-lg-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-lg-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-lg-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-lg-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-lg-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-lg-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n\n  .offset-lg-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-lg-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n\n  .offset-lg-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-lg-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n\n  .offset-lg-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-lg-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n\n  .offset-lg-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-lg-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-lg-0,\n.gx-lg-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-lg-0,\n.gy-lg-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-lg-1,\n.gx-lg-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-lg-1,\n.gy-lg-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-lg-2,\n.gx-lg-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-lg-2,\n.gy-lg-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-lg-3,\n.gx-lg-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-lg-3,\n.gy-lg-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-lg-4,\n.gx-lg-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-lg-4,\n.gy-lg-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-lg-5,\n.gx-lg-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-lg-5,\n.gy-lg-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1200px) {\n  .col-xl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xl-0,\n.gx-xl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xl-0,\n.gy-xl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xl-1,\n.gx-xl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xl-1,\n.gy-xl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xl-2,\n.gx-xl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xl-2,\n.gy-xl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xl-3,\n.gx-xl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xl-3,\n.gy-xl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xl-4,\n.gx-xl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xl-4,\n.gy-xl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xl-5,\n.gx-xl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xl-5,\n.gy-xl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1400px) {\n  .col-xxl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xxl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xxl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xxl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xxl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xxl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xxl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xxl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xxl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xxl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xxl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xxl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xxl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xxl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xxl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xxl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xxl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xxl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xxl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xxl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xxl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xxl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xxl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xxl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xxl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xxl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xxl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xxl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xxl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xxl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xxl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xxl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xxl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xxl-0,\n.gx-xxl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xxl-0,\n.gy-xxl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xxl-1,\n.gx-xxl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xxl-1,\n.gy-xxl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xxl-2,\n.gx-xxl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xxl-2,\n.gy-xxl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xxl-3,\n.gx-xxl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xxl-3,\n.gy-xxl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xxl-4,\n.gx-xxl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xxl-4,\n.gy-xxl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xxl-5,\n.gx-xxl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xxl-5,\n.gy-xxl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n.table {\n  --bs-table-bg: transparent;\n  --bs-table-accent-bg: transparent;\n  --bs-table-striped-color: #212529;\n  --bs-table-striped-bg: rgba(0, 0, 0, 0.05);\n  --bs-table-active-color: #212529;\n  --bs-table-active-bg: rgba(0, 0, 0, 0.1);\n  --bs-table-hover-color: #212529;\n  --bs-table-hover-bg: rgba(0, 0, 0, 0.075);\n  width: 100%;\n  margin-bottom: 1rem;\n  color: #212529;\n  vertical-align: top;\n  border-color: #dee2e6;\n}\n.table > :not(caption) > * > * {\n  padding: 0.5rem 0.5rem;\n  background-color: var(--bs-table-bg);\n  border-bottom-width: 1px;\n  box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg);\n}\n.table > tbody {\n  vertical-align: inherit;\n}\n.table > thead {\n  vertical-align: bottom;\n}\n.table > :not(:last-child) > :last-child > * {\n  border-bottom-color: currentColor;\n}\n\n.caption-top {\n  caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n  padding: 0.25rem 0.25rem;\n}\n\n.table-bordered > :not(caption) > * {\n  border-width: 1px 0;\n}\n.table-bordered > :not(caption) > * > * {\n  border-width: 0 1px;\n}\n\n.table-borderless > :not(caption) > * > * {\n  border-bottom-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) {\n  --bs-table-accent-bg: var(--bs-table-striped-bg);\n  color: var(--bs-table-striped-color);\n}\n\n.table-active {\n  --bs-table-accent-bg: var(--bs-table-active-bg);\n  color: var(--bs-table-active-color);\n}\n\n.table-hover > tbody > tr:hover {\n  --bs-table-accent-bg: var(--bs-table-hover-bg);\n  color: var(--bs-table-hover-color);\n}\n\n.table-primary {\n  --bs-table-bg: #cfe2ff;\n  --bs-table-striped-bg: #c5d7f2;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #bacbe6;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #bfd1ec;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #bacbe6;\n}\n\n.table-secondary {\n  --bs-table-bg: #e2e3e5;\n  --bs-table-striped-bg: #d7d8da;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #cbccce;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #d1d2d4;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #cbccce;\n}\n\n.table-success {\n  --bs-table-bg: #d1e7dd;\n  --bs-table-striped-bg: #c7dbd2;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #bcd0c7;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #c1d6cc;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #bcd0c7;\n}\n\n.table-info {\n  --bs-table-bg: #cff4fc;\n  --bs-table-striped-bg: #c5e8ef;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #badce3;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #bfe2e9;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #badce3;\n}\n\n.table-warning {\n  --bs-table-bg: #fff3cd;\n  --bs-table-striped-bg: #f2e7c3;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #e6dbb9;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #ece1be;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #e6dbb9;\n}\n\n.table-danger {\n  --bs-table-bg: #f8d7da;\n  --bs-table-striped-bg: #eccccf;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #dfc2c4;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #e5c7ca;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #dfc2c4;\n}\n\n.table-light {\n  --bs-table-bg: #f8f9fa;\n  --bs-table-striped-bg: #ecedee;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #dfe0e1;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #e5e6e7;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #dfe0e1;\n}\n\n.table-dark {\n  --bs-table-bg: #212529;\n  --bs-table-striped-bg: #2c3034;\n  --bs-table-striped-color: #fff;\n  --bs-table-active-bg: #373b3e;\n  --bs-table-active-color: #fff;\n  --bs-table-hover-bg: #323539;\n  --bs-table-hover-color: #fff;\n  color: #fff;\n  border-color: #373b3e;\n}\n\n.table-responsive {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n}\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 1199.98px) {\n  .table-responsive-xl {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 1399.98px) {\n  .table-responsive-xxl {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n.form-label {\n  margin-bottom: 0.5rem;\n}\n\n.col-form-label {\n  padding-top: calc(0.375rem + 1px);\n  padding-bottom: calc(0.375rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5;\n}\n\n.col-form-label-lg {\n  padding-top: calc(0.5rem + 1px);\n  padding-bottom: calc(0.5rem + 1px);\n  font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n  padding-top: calc(0.25rem + 1px);\n  padding-bottom: calc(0.25rem + 1px);\n  font-size: 0.875rem;\n}\n\n.form-text {\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #6c757d;\n}\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ced4da;\n  appearance: none;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control {\n    transition: none;\n  }\n}\n.form-control[type=file] {\n  overflow: hidden;\n}\n.form-control[type=file]:not(:disabled):not([readonly]) {\n  cursor: pointer;\n}\n.form-control:focus {\n  color: #212529;\n  background-color: #fff;\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-control::-webkit-date-and-time-value {\n  height: 1.5em;\n}\n.form-control::placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n.form-control:disabled, .form-control[readonly] {\n  background-color: #e9ecef;\n  opacity: 1;\n}\n.form-control::file-selector-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control::file-selector-button {\n    transition: none;\n  }\n}\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n  background-color: #dde0e3;\n}\n.form-control::-webkit-file-upload-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control::-webkit-file-upload-button {\n    transition: none;\n  }\n}\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n  background-color: #dde0e3;\n}\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0;\n  margin-bottom: 0;\n  line-height: 1.5;\n  color: #212529;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.form-control-sm {\n  min-height: calc(1.5em + 0.5rem + 2px);\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n.form-control-sm::file-selector-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  margin-inline-end: 0.5rem;\n}\n.form-control-sm::-webkit-file-upload-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  margin-inline-end: 0.5rem;\n}\n\n.form-control-lg {\n  min-height: calc(1.5em + 1rem + 2px);\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n.form-control-lg::file-selector-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  margin-inline-end: 1rem;\n}\n.form-control-lg::-webkit-file-upload-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  margin-inline-end: 1rem;\n}\n\ntextarea.form-control {\n  min-height: calc(1.5em + 0.75rem + 2px);\n}\ntextarea.form-control-sm {\n  min-height: calc(1.5em + 0.5rem + 2px);\n}\ntextarea.form-control-lg {\n  min-height: calc(1.5em + 1rem + 2px);\n}\n\n.form-control-color {\n  width: 3rem;\n  height: auto;\n  padding: 0.375rem;\n}\n.form-control-color:not(:disabled):not([readonly]) {\n  cursor: pointer;\n}\n.form-control-color::-moz-color-swatch {\n  height: 1.5em;\n  border-radius: 0.25rem;\n}\n.form-control-color::-webkit-color-swatch {\n  height: 1.5em;\n  border-radius: 0.25rem;\n}\n\n.form-select {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 2.25rem 0.375rem 0.75rem;\n  -moz-padding-start: calc(0.75rem - 3px);\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  background-color: #fff;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right 0.75rem center;\n  background-size: 16px 12px;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-select {\n    transition: none;\n  }\n}\n.form-select:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n  padding-right: 0.75rem;\n  background-image: none;\n}\n.form-select:disabled {\n  background-color: #e9ecef;\n}\n.form-select:-moz-focusring {\n  color: transparent;\n  text-shadow: 0 0 0 #212529;\n}\n\n.form-select-sm {\n  padding-top: 0.25rem;\n  padding-bottom: 0.25rem;\n  padding-left: 0.5rem;\n  font-size: 0.875rem;\n}\n\n.form-select-lg {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  padding-left: 1rem;\n  font-size: 1.25rem;\n}\n\n.form-check {\n  display: block;\n  min-height: 1.5rem;\n  padding-left: 1.5em;\n  margin-bottom: 0.125rem;\n}\n.form-check .form-check-input {\n  float: left;\n  margin-left: -1.5em;\n}\n\n.form-check-input {\n  width: 1em;\n  height: 1em;\n  margin-top: 0.25em;\n  vertical-align: top;\n  background-color: #fff;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: contain;\n  border: 1px solid rgba(0, 0, 0, 0.25);\n  appearance: none;\n  color-adjust: exact;\n}\n.form-check-input[type=checkbox] {\n  border-radius: 0.25em;\n}\n.form-check-input[type=radio] {\n  border-radius: 50%;\n}\n.form-check-input:active {\n  filter: brightness(90%);\n}\n.form-check-input:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-check-input:checked {\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.form-check-input:checked[type=checkbox] {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e\");\n}\n.form-check-input:checked[type=radio] {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-check-input[type=checkbox]:indeterminate {\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n}\n.form-check-input:disabled {\n  pointer-events: none;\n  filter: none;\n  opacity: 0.5;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n  opacity: 0.5;\n}\n\n.form-switch {\n  padding-left: 2.5em;\n}\n.form-switch .form-check-input {\n  width: 2em;\n  margin-left: -2.5em;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n  background-position: left center;\n  border-radius: 2em;\n  transition: background-position 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-switch .form-check-input {\n    transition: none;\n  }\n}\n.form-switch .form-check-input:focus {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n.form-switch .form-check-input:checked {\n  background-position: right center;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.form-check-inline {\n  display: inline-block;\n  margin-right: 1rem;\n}\n\n.btn-check {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\n  pointer-events: none;\n  filter: none;\n  opacity: 0.65;\n}\n\n.form-range {\n  width: 100%;\n  height: 1.5rem;\n  padding: 0;\n  background-color: transparent;\n  appearance: none;\n}\n.form-range:focus {\n  outline: 0;\n}\n.form-range:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range::-moz-focus-outer {\n  border: 0;\n}\n.form-range::-webkit-slider-thumb {\n  width: 1rem;\n  height: 1rem;\n  margin-top: -0.25rem;\n  background-color: #0d6efd;\n  border: 0;\n  border-radius: 1rem;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-range::-webkit-slider-thumb {\n    transition: none;\n  }\n}\n.form-range::-webkit-slider-thumb:active {\n  background-color: #b6d4fe;\n}\n.form-range::-webkit-slider-runnable-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n.form-range::-moz-range-thumb {\n  width: 1rem;\n  height: 1rem;\n  background-color: #0d6efd;\n  border: 0;\n  border-radius: 1rem;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-range::-moz-range-thumb {\n    transition: none;\n  }\n}\n.form-range::-moz-range-thumb:active {\n  background-color: #b6d4fe;\n}\n.form-range::-moz-range-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n.form-range:disabled {\n  pointer-events: none;\n}\n.form-range:disabled::-webkit-slider-thumb {\n  background-color: #adb5bd;\n}\n.form-range:disabled::-moz-range-thumb {\n  background-color: #adb5bd;\n}\n\n.form-floating {\n  position: relative;\n}\n.form-floating > .form-control,\n.form-floating > .form-select {\n  height: calc(3.5rem + 2px);\n  line-height: 1.25;\n}\n.form-floating > label {\n  position: absolute;\n  top: 0;\n  left: 0;\n  height: 100%;\n  padding: 1rem 0.75rem;\n  pointer-events: none;\n  border: 1px solid transparent;\n  transform-origin: 0 0;\n  transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-floating > label {\n    transition: none;\n  }\n}\n.form-floating > .form-control {\n  padding: 1rem 0.75rem;\n}\n.form-floating > .form-control::placeholder {\n  color: transparent;\n}\n.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown) {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:-webkit-autofill {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-select {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:focus ~ label,\n.form-floating > .form-control:not(:placeholder-shown) ~ label,\n.form-floating > .form-select ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control:-webkit-autofill ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: stretch;\n  width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-select {\n  position: relative;\n  flex: 1 1 auto;\n  width: 1%;\n  min-width: 0;\n}\n.input-group > .form-control:focus,\n.input-group > .form-select:focus {\n  z-index: 3;\n}\n.input-group .btn {\n  position: relative;\n  z-index: 2;\n}\n.input-group .btn:focus {\n  z-index: 3;\n}\n\n.input-group-text {\n  display: flex;\n  align-items: center;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #e9ecef;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n  padding-right: 3rem;\n}\n\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n  margin-left: -1px;\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #198754;\n}\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: 0.1rem;\n  font-size: 0.875rem;\n  color: #fff;\n  background-color: rgba(25, 135, 84, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n  border-color: #198754;\n  padding-right: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right calc(0.375em + 0.1875rem) center;\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n  border-color: #198754;\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n  padding-right: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:valid, .form-select.is-valid {\n  border-color: #198754;\n}\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"] {\n  padding-right: 4.125rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\"), url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-position: right 0.75rem center, center right 2.25rem;\n  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\n  border-color: #198754;\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\n  border-color: #198754;\n}\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n  background-color: #198754;\n}\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #198754;\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n  margin-left: 0.5em;\n}\n\n.was-validated .input-group .form-control:valid, .input-group .form-control.is-valid,\n.was-validated .input-group .form-select:valid,\n.input-group .form-select.is-valid {\n  z-index: 1;\n}\n.was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus,\n.was-validated .input-group .form-select:valid:focus,\n.input-group .form-select.is-valid:focus {\n  z-index: 3;\n}\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #dc3545;\n}\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: 0.1rem;\n  font-size: 0.875rem;\n  color: #fff;\n  background-color: rgba(220, 53, 69, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n  border-color: #dc3545;\n  padding-right: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right calc(0.375em + 0.1875rem) center;\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n  padding-right: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:invalid, .form-select.is-invalid {\n  border-color: #dc3545;\n}\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"] {\n  padding-right: 4.125rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\"), url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n  background-position: right 0.75rem center, center right 2.25rem;\n  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n  border-color: #dc3545;\n}\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n  background-color: #dc3545;\n}\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #dc3545;\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n  margin-left: 0.5em;\n}\n\n.was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid,\n.was-validated .input-group .form-select:invalid,\n.input-group .form-select.is-invalid {\n  z-index: 2;\n}\n.was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus,\n.was-validated .input-group .form-select:invalid:focus,\n.input-group .form-select.is-invalid:focus {\n  z-index: 3;\n}\n\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: center;\n  text-decoration: none;\n  vertical-align: middle;\n  cursor: pointer;\n  user-select: none;\n  background-color: transparent;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  border-radius: 0.25rem;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .btn {\n    transition: none;\n  }\n}\n.btn:hover {\n  color: #212529;\n}\n.btn-check:focus + .btn, .btn:focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\n  pointer-events: none;\n  opacity: 0.65;\n}\n\n.btn-primary {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #0b5ed7;\n  border-color: #0a58ca;\n}\n.btn-check:focus + .btn-primary, .btn-primary:focus {\n  color: #fff;\n  background-color: #0b5ed7;\n  border-color: #0a58ca;\n  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\n}\n.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #0a58ca;\n  border-color: #0a53be;\n}\n.btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\n}\n.btn-primary:disabled, .btn-primary.disabled {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n\n.btn-secondary {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-secondary:hover {\n  color: #fff;\n  background-color: #5c636a;\n  border-color: #565e64;\n}\n.btn-check:focus + .btn-secondary, .btn-secondary:focus {\n  color: #fff;\n  background-color: #5c636a;\n  border-color: #565e64;\n  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\n}\n.btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #565e64;\n  border-color: #51585e;\n}\n.btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\n}\n.btn-secondary:disabled, .btn-secondary.disabled {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-success {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #157347;\n  border-color: #146c43;\n}\n.btn-check:focus + .btn-success, .btn-success:focus {\n  color: #fff;\n  background-color: #157347;\n  border-color: #146c43;\n  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\n}\n.btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle {\n  color: #fff;\n  background-color: #146c43;\n  border-color: #13653f;\n}\n.btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\n}\n.btn-success:disabled, .btn-success.disabled {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n\n.btn-info {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-info:hover {\n  color: #000;\n  background-color: #31d2f2;\n  border-color: #25cff2;\n}\n.btn-check:focus + .btn-info, .btn-info:focus {\n  color: #000;\n  background-color: #31d2f2;\n  border-color: #25cff2;\n  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\n}\n.btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle {\n  color: #000;\n  background-color: #3dd5f3;\n  border-color: #25cff2;\n}\n.btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\n}\n.btn-info:disabled, .btn-info.disabled {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n\n.btn-warning {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-warning:hover {\n  color: #000;\n  background-color: #ffca2c;\n  border-color: #ffc720;\n}\n.btn-check:focus + .btn-warning, .btn-warning:focus {\n  color: #000;\n  background-color: #ffca2c;\n  border-color: #ffc720;\n  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\n}\n.btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle {\n  color: #000;\n  background-color: #ffcd39;\n  border-color: #ffc720;\n}\n.btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\n}\n.btn-warning:disabled, .btn-warning.disabled {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-danger {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #bb2d3b;\n  border-color: #b02a37;\n}\n.btn-check:focus + .btn-danger, .btn-danger:focus {\n  color: #fff;\n  background-color: #bb2d3b;\n  border-color: #b02a37;\n  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\n}\n.btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #b02a37;\n  border-color: #a52834;\n}\n.btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\n}\n.btn-danger:disabled, .btn-danger.disabled {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-light {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-light:hover {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n}\n.btn-check:focus + .btn-light, .btn-light:focus {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\n}\n.btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n}\n.btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\n}\n.btn-light:disabled, .btn-light.disabled {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-dark {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-dark:hover {\n  color: #fff;\n  background-color: #1c1f23;\n  border-color: #1a1e21;\n}\n.btn-check:focus + .btn-dark, .btn-dark:focus {\n  color: #fff;\n  background-color: #1c1f23;\n  border-color: #1a1e21;\n  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\n}\n.btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #1a1e21;\n  border-color: #191c1f;\n}\n.btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\n}\n.btn-dark:disabled, .btn-dark.disabled {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n\n.btn-outline-primary {\n  color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-outline-primary:hover {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\n}\n.btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\n}\n.btn-outline-primary:disabled, .btn-outline-primary.disabled {\n  color: #0d6efd;\n  background-color: transparent;\n}\n\n.btn-outline-secondary {\n  color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-outline-secondary:hover {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus {\n  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\n}\n.btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\n}\n.btn-outline-secondary:disabled, .btn-outline-secondary.disabled {\n  color: #6c757d;\n  background-color: transparent;\n}\n\n.btn-outline-success {\n  color: #198754;\n  border-color: #198754;\n}\n.btn-outline-success:hover {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-check:focus + .btn-outline-success, .btn-outline-success:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\n}\n.btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\n}\n.btn-outline-success:disabled, .btn-outline-success.disabled {\n  color: #198754;\n  background-color: transparent;\n}\n\n.btn-outline-info {\n  color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-outline-info:hover {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-check:focus + .btn-outline-info, .btn-outline-info:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\n}\n.btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\n}\n.btn-outline-info:disabled, .btn-outline-info.disabled {\n  color: #0dcaf0;\n  background-color: transparent;\n}\n\n.btn-outline-warning {\n  color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-outline-warning:hover {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus {\n  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\n}\n.btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\n}\n.btn-outline-warning:disabled, .btn-outline-warning.disabled {\n  color: #ffc107;\n  background-color: transparent;\n}\n\n.btn-outline-danger {\n  color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-outline-danger:hover {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\n}\n.btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\n}\n.btn-outline-danger:disabled, .btn-outline-danger.disabled {\n  color: #dc3545;\n  background-color: transparent;\n}\n\n.btn-outline-light {\n  color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-outline-light:hover {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-check:focus + .btn-outline-light, .btn-outline-light:focus {\n  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\n}\n.btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\n}\n.btn-outline-light:disabled, .btn-outline-light.disabled {\n  color: #f8f9fa;\n  background-color: transparent;\n}\n\n.btn-outline-dark {\n  color: #212529;\n  border-color: #212529;\n}\n.btn-outline-dark:hover {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus {\n  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\n}\n.btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\n}\n.btn-outline-dark:disabled, .btn-outline-dark.disabled {\n  color: #212529;\n  background-color: transparent;\n}\n\n.btn-link {\n  font-weight: 400;\n  color: #0d6efd;\n  text-decoration: underline;\n}\n.btn-link:hover {\n  color: #0a58ca;\n}\n.btn-link:disabled, .btn-link.disabled {\n  color: #6c757d;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n.dropup,\n.dropend,\n.dropdown,\n.dropstart {\n  position: relative;\n}\n\n.dropdown-toggle {\n  white-space: nowrap;\n}\n.dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropdown-menu {\n  position: absolute;\n  z-index: 1000;\n  display: none;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0;\n  font-size: 1rem;\n  color: #212529;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n.dropdown-menu[data-bs-popper] {\n  top: 100%;\n  left: 0;\n  margin-top: 0.125rem;\n}\n\n.dropdown-menu-start {\n  --bs-position: start;\n}\n.dropdown-menu-start[data-bs-popper] {\n  right: auto;\n  left: 0;\n}\n\n.dropdown-menu-end {\n  --bs-position: end;\n}\n.dropdown-menu-end[data-bs-popper] {\n  right: 0;\n  left: auto;\n}\n\n@media (min-width: 576px) {\n  .dropdown-menu-sm-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-sm-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-sm-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-sm-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 768px) {\n  .dropdown-menu-md-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-md-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-md-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-md-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 992px) {\n  .dropdown-menu-lg-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-lg-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-lg-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-lg-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 1200px) {\n  .dropdown-menu-xl-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-xl-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-xl-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-xl-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 1400px) {\n  .dropdown-menu-xxl-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-xxl-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-xxl-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-xxl-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n.dropup .dropdown-menu[data-bs-popper] {\n  top: auto;\n  bottom: 100%;\n  margin-top: 0;\n  margin-bottom: 0.125rem;\n}\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0.3em solid;\n  border-left: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n  top: 0;\n  right: auto;\n  left: 100%;\n  margin-top: 0;\n  margin-left: 0.125rem;\n}\n.dropend .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0;\n  border-bottom: 0.3em solid transparent;\n  border-left: 0.3em solid;\n}\n.dropend .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n.dropend .dropdown-toggle::after {\n  vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n  top: 0;\n  right: 100%;\n  left: auto;\n  margin-top: 0;\n  margin-right: 0.125rem;\n}\n.dropstart .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n}\n.dropstart .dropdown-toggle::after {\n  display: none;\n}\n.dropstart .dropdown-toggle::before {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0.3em solid;\n  border-bottom: 0.3em solid transparent;\n}\n.dropstart .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n.dropstart .dropdown-toggle::before {\n  vertical-align: 0;\n}\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.25rem 1rem;\n  clear: both;\n  font-weight: 400;\n  color: #212529;\n  text-align: inherit;\n  text-decoration: none;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n.dropdown-item:hover, .dropdown-item:focus {\n  color: #1e2125;\n  background-color: #e9ecef;\n}\n.dropdown-item.active, .dropdown-item:active {\n  color: #fff;\n  text-decoration: none;\n  background-color: #0d6efd;\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n  color: #adb5bd;\n  pointer-events: none;\n  background-color: transparent;\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 0.875rem;\n  color: #6c757d;\n  white-space: nowrap;\n}\n\n.dropdown-item-text {\n  display: block;\n  padding: 0.25rem 1rem;\n  color: #212529;\n}\n\n.dropdown-menu-dark {\n  color: #dee2e6;\n  background-color: #343a40;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.dropdown-menu-dark .dropdown-item {\n  color: #dee2e6;\n}\n.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus {\n  color: #fff;\n  background-color: rgba(255, 255, 255, 0.15);\n}\n.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active {\n  color: #fff;\n  background-color: #0d6efd;\n}\n.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled {\n  color: #adb5bd;\n}\n.dropdown-menu-dark .dropdown-divider {\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.dropdown-menu-dark .dropdown-item-text {\n  color: #dee2e6;\n}\n.dropdown-menu-dark .dropdown-header {\n  color: #adb5bd;\n}\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  flex: 1 1 auto;\n}\n.btn-group > .btn-check:checked + .btn,\n.btn-group > .btn-check:focus + .btn,\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn-check:checked + .btn,\n.btn-group-vertical > .btn-check:focus + .btn,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n  z-index: 1;\n}\n\n.btn-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n  width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n  margin-left: -1px;\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:nth-child(n+3),\n.btn-group > :not(.btn-check) + .btn,\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n  padding-right: 0.5625rem;\n  padding-left: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n  margin-left: 0;\n}\n.dropstart .dropdown-toggle-split::before {\n  margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-right: 0.375rem;\n  padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-right: 0.75rem;\n  padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n  width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n  margin-top: -1px;\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn ~ .btn,\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav {\n  display: flex;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 1rem;\n  color: #0d6efd;\n  text-decoration: none;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .nav-link {\n    transition: none;\n  }\n}\n.nav-link:hover, .nav-link:focus {\n  color: #0a58ca;\n}\n.nav-link.disabled {\n  color: #6c757d;\n  pointer-events: none;\n  cursor: default;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #dee2e6;\n}\n.nav-tabs .nav-link {\n  margin-bottom: -1px;\n  background: none;\n  border: 1px solid transparent;\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n  border-color: #e9ecef #e9ecef #dee2e6;\n  isolation: isolate;\n}\n.nav-tabs .nav-link.disabled {\n  color: #6c757d;\n  background-color: transparent;\n  border-color: transparent;\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n  color: #495057;\n  background-color: #fff;\n  border-color: #dee2e6 #dee2e6 #fff;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n  background: none;\n  border: 0;\n  border-radius: 0.25rem;\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #0d6efd;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n  flex: 1 1 auto;\n  text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n  flex-basis: 0;\n  flex-grow: 1;\n  text-align: center;\n}\n\n.nav-fill .nav-item .nav-link,\n.nav-justified .nav-item .nav-link {\n  width: 100%;\n}\n\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n\n.navbar {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n.navbar > .container,\n.navbar > .container-fluid,\n.navbar > .container-sm,\n.navbar > .container-md,\n.navbar > .container-lg,\n.navbar > .container-xl,\n.navbar > .container-xxl {\n  display: flex;\n  flex-wrap: inherit;\n  align-items: center;\n  justify-content: space-between;\n}\n.navbar-brand {\n  padding-top: 0.3125rem;\n  padding-bottom: 0.3125rem;\n  margin-right: 1rem;\n  font-size: 1.25rem;\n  text-decoration: none;\n  white-space: nowrap;\n}\n.navbar-nav {\n  display: flex;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.navbar-nav .nav-link {\n  padding-right: 0;\n  padding-left: 0;\n}\n.navbar-nav .dropdown-menu {\n  position: static;\n}\n\n.navbar-text {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n  flex-basis: 100%;\n  flex-grow: 1;\n  align-items: center;\n}\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.25rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n  transition: box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .navbar-toggler {\n    transition: none;\n  }\n}\n.navbar-toggler:hover {\n  text-decoration: none;\n}\n.navbar-toggler:focus {\n  text-decoration: none;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem;\n}\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 100%;\n}\n\n.navbar-nav-scroll {\n  max-height: var(--bs-scroll-height, 75vh);\n  overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-sm .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-sm .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-sm .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-sm .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-sm .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-sm .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-sm .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-sm .offcanvas-top,\n.navbar-expand-sm .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-sm .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-md .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-md .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-md .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-md .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-md .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-md .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-md .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-md .offcanvas-top,\n.navbar-expand-md .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-md .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-lg .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-lg .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-lg .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-lg .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-lg .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-lg .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-lg .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-lg .offcanvas-top,\n.navbar-expand-lg .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-lg .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 1200px) {\n  .navbar-expand-xl {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xl .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-xl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xl .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-xl .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-xl .offcanvas-top,\n.navbar-expand-xl .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-xl .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 1400px) {\n  .navbar-expand-xxl {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xxl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xxl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xxl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xxl .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-xxl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xxl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xxl .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-xxl .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-xxl .offcanvas-top,\n.navbar-expand-xxl .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-xxl .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n.navbar-expand {\n  flex-wrap: nowrap;\n  justify-content: flex-start;\n}\n.navbar-expand .navbar-nav {\n  flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n  position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n  padding-right: 0.5rem;\n  padding-left: 0.5rem;\n}\n.navbar-expand .navbar-nav-scroll {\n  overflow: visible;\n}\n.navbar-expand .navbar-collapse {\n  display: flex !important;\n  flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n  display: none;\n}\n.navbar-expand .offcanvas-header {\n  display: none;\n}\n.navbar-expand .offcanvas {\n  position: inherit;\n  bottom: 0;\n  z-index: 1000;\n  flex-grow: 1;\n  visibility: visible !important;\n  background-color: transparent;\n  border-right: 0;\n  border-left: 0;\n  transition: none;\n  transform: none;\n}\n.navbar-expand .offcanvas-top,\n.navbar-expand .offcanvas-bottom {\n  height: auto;\n  border-top: 0;\n  border-bottom: 0;\n}\n.navbar-expand .offcanvas-body {\n  display: flex;\n  flex-grow: 0;\n  padding: 0;\n  overflow-y: visible;\n}\n\n.navbar-light .navbar-brand {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(0, 0, 0, 0.55);\n}\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n  color: rgba(0, 0, 0, 0.7);\n}\n.navbar-light .navbar-nav .nav-link.disabled {\n  color: rgba(0, 0, 0, 0.3);\n}\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .nav-link.active {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-toggler {\n  color: rgba(0, 0, 0, 0.55);\n  border-color: rgba(0, 0, 0, 0.1);\n}\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-light .navbar-text {\n  color: rgba(0, 0, 0, 0.55);\n}\n.navbar-light .navbar-text a,\n.navbar-light .navbar-text a:hover,\n.navbar-light .navbar-text a:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n  color: #fff;\n}\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n  color: #fff;\n}\n.navbar-dark .navbar-nav .nav-link {\n  color: rgba(255, 255, 255, 0.55);\n}\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n  color: rgba(255, 255, 255, 0.75);\n}\n.navbar-dark .navbar-nav .nav-link.disabled {\n  color: rgba(255, 255, 255, 0.25);\n}\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #fff;\n}\n.navbar-dark .navbar-toggler {\n  color: rgba(255, 255, 255, 0.55);\n  border-color: rgba(255, 255, 255, 0.1);\n}\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-dark .navbar-text {\n  color: rgba(255, 255, 255, 0.55);\n}\n.navbar-dark .navbar-text a,\n.navbar-dark .navbar-text a:hover,\n.navbar-dark .navbar-text a:focus {\n  color: #fff;\n}\n\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.25rem;\n}\n.card > hr {\n  margin-right: 0;\n  margin-left: 0;\n}\n.card > .list-group {\n  border-top: inherit;\n  border-bottom: inherit;\n}\n.card > .list-group:first-child {\n  border-top-width: 0;\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.card > .list-group:last-child {\n  border-bottom-width: 0;\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n  border-top: 0;\n}\n\n.card-body {\n  flex: 1 1 auto;\n  padding: 1rem 1rem;\n}\n\n.card-title {\n  margin-bottom: 0.5rem;\n}\n\n.card-subtitle {\n  margin-top: -0.25rem;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link + .card-link {\n  margin-left: 1rem;\n}\n\n.card-header {\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-header:first-child {\n  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n  padding: 0.5rem 1rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-footer:last-child {\n  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n  margin-right: -0.5rem;\n  margin-bottom: -0.5rem;\n  margin-left: -0.5rem;\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-right: -0.5rem;\n  margin-left: -0.5rem;\n}\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 1rem;\n  border-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n  width: 100%;\n}\n\n.card-img,\n.card-img-top {\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-bottom {\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-group > .card {\n  margin-bottom: 0.75rem;\n}\n@media (min-width: 576px) {\n  .card-group {\n    display: flex;\n    flex-flow: row wrap;\n  }\n  .card-group > .card {\n    flex: 1 0 0%;\n    margin-bottom: 0;\n  }\n  .card-group > .card + .card {\n    margin-left: 0;\n    border-left: 0;\n  }\n  .card-group > .card:not(:last-child) {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-top,\n.card-group > .card:not(:last-child) .card-header {\n    border-top-right-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-bottom,\n.card-group > .card:not(:last-child) .card-footer {\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:not(:first-child) {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-top,\n.card-group > .card:not(:first-child) .card-header {\n    border-top-left-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-bottom,\n.card-group > .card:not(:first-child) .card-footer {\n    border-bottom-left-radius: 0;\n  }\n}\n\n.accordion-button {\n  position: relative;\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: 1rem 1.25rem;\n  font-size: 1rem;\n  color: #212529;\n  text-align: left;\n  background-color: #fff;\n  border: 0;\n  border-radius: 0;\n  overflow-anchor: none;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .accordion-button {\n    transition: none;\n  }\n}\n.accordion-button:not(.collapsed) {\n  color: #0c63e4;\n  background-color: #e7f1ff;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125);\n}\n.accordion-button:not(.collapsed)::after {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n  transform: rotate(-180deg);\n}\n.accordion-button::after {\n  flex-shrink: 0;\n  width: 1.25rem;\n  height: 1.25rem;\n  margin-left: auto;\n  content: \"\";\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-size: 1.25rem;\n  transition: transform 0.2s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .accordion-button::after {\n    transition: none;\n  }\n}\n.accordion-button:hover {\n  z-index: 2;\n}\n.accordion-button:focus {\n  z-index: 3;\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.accordion-header {\n  margin-bottom: 0;\n}\n\n.accordion-item {\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.accordion-item:first-of-type {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n.accordion-item:first-of-type .accordion-button {\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.accordion-item:not(:first-of-type) {\n  border-top: 0;\n}\n.accordion-item:last-of-type {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n.accordion-item:last-of-type .accordion-button.collapsed {\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n.accordion-item:last-of-type .accordion-collapse {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.accordion-body {\n  padding: 1rem 1.25rem;\n}\n\n.accordion-flush .accordion-collapse {\n  border-width: 0;\n}\n.accordion-flush .accordion-item {\n  border-right: 0;\n  border-left: 0;\n  border-radius: 0;\n}\n.accordion-flush .accordion-item:first-child {\n  border-top: 0;\n}\n.accordion-flush .accordion-item:last-child {\n  border-bottom: 0;\n}\n.accordion-flush .accordion-item .accordion-button {\n  border-radius: 0;\n}\n\n.breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  padding: 0 0;\n  margin-bottom: 1rem;\n  list-style: none;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n  padding-left: 0.5rem;\n}\n.breadcrumb-item + .breadcrumb-item::before {\n  float: left;\n  padding-right: 0.5rem;\n  color: #6c757d;\n  content: var(--bs-breadcrumb-divider, \"/\") /* rtl: var(--bs-breadcrumb-divider, \"/\") */;\n}\n.breadcrumb-item.active {\n  color: #6c757d;\n}\n\n.pagination {\n  display: flex;\n  padding-left: 0;\n  list-style: none;\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  color: #0d6efd;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .page-link {\n    transition: none;\n  }\n}\n.page-link:hover {\n  z-index: 2;\n  color: #0a58ca;\n  background-color: #e9ecef;\n  border-color: #dee2e6;\n}\n.page-link:focus {\n  z-index: 3;\n  color: #0a58ca;\n  background-color: #e9ecef;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.page-item:not(:first-child) .page-link {\n  margin-left: -1px;\n}\n.page-item.active .page-link {\n  z-index: 3;\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.page-item.disabled .page-link {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #fff;\n  border-color: #dee2e6;\n}\n\n.page-link {\n  padding: 0.375rem 0.75rem;\n}\n\n.page-item:first-child .page-link {\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n.page-item:last-child .page-link {\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.25rem;\n}\n.pagination-lg .page-item:first-child .page-link {\n  border-top-left-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem;\n}\n.pagination-lg .page-item:last-child .page-link {\n  border-top-right-radius: 0.3rem;\n  border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n}\n.pagination-sm .page-item:first-child .page-link {\n  border-top-left-radius: 0.2rem;\n  border-bottom-left-radius: 0.2rem;\n}\n.pagination-sm .page-item:last-child .page-link {\n  border-top-right-radius: 0.2rem;\n  border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n  display: inline-block;\n  padding: 0.35em 0.65em;\n  font-size: 0.75em;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n}\n.badge:empty {\n  display: none;\n}\n\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.alert {\n  position: relative;\n  padding: 1rem 1rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.alert-heading {\n  color: inherit;\n}\n\n.alert-link {\n  font-weight: 700;\n}\n\n.alert-dismissible {\n  padding-right: 3rem;\n}\n.alert-dismissible .btn-close {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  padding: 1.25rem 1rem;\n}\n\n.alert-primary {\n  color: #084298;\n  background-color: #cfe2ff;\n  border-color: #b6d4fe;\n}\n.alert-primary .alert-link {\n  color: #06357a;\n}\n\n.alert-secondary {\n  color: #41464b;\n  background-color: #e2e3e5;\n  border-color: #d3d6d8;\n}\n.alert-secondary .alert-link {\n  color: #34383c;\n}\n\n.alert-success {\n  color: #0f5132;\n  background-color: #d1e7dd;\n  border-color: #badbcc;\n}\n.alert-success .alert-link {\n  color: #0c4128;\n}\n\n.alert-info {\n  color: #055160;\n  background-color: #cff4fc;\n  border-color: #b6effb;\n}\n.alert-info .alert-link {\n  color: #04414d;\n}\n\n.alert-warning {\n  color: #664d03;\n  background-color: #fff3cd;\n  border-color: #ffecb5;\n}\n.alert-warning .alert-link {\n  color: #523e02;\n}\n\n.alert-danger {\n  color: #842029;\n  background-color: #f8d7da;\n  border-color: #f5c2c7;\n}\n.alert-danger .alert-link {\n  color: #6a1a21;\n}\n\n.alert-light {\n  color: #636464;\n  background-color: #fefefe;\n  border-color: #fdfdfe;\n}\n.alert-light .alert-link {\n  color: #4f5050;\n}\n\n.alert-dark {\n  color: #141619;\n  background-color: #d3d3d4;\n  border-color: #bcbebf;\n}\n.alert-dark .alert-link {\n  color: #101214;\n}\n\n@keyframes progress-bar-stripes {\n  0% {\n    background-position-x: 1rem;\n  }\n}\n.progress {\n  display: flex;\n  height: 1rem;\n  overflow: hidden;\n  font-size: 0.75rem;\n  background-color: #e9ecef;\n  border-radius: 0.25rem;\n}\n\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #0d6efd;\n  transition: width 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar {\n    transition: none;\n  }\n}\n\n.progress-bar-striped {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n  animation: 1s linear infinite progress-bar-stripes;\n}\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar-animated {\n    animation: none;\n  }\n}\n\n.list-group {\n  display: flex;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  border-radius: 0.25rem;\n}\n\n.list-group-numbered {\n  list-style-type: none;\n  counter-reset: section;\n}\n.list-group-numbered > li::before {\n  content: counters(section, \".\") \". \";\n  counter-increment: section;\n}\n\n.list-group-item-action {\n  width: 100%;\n  color: #495057;\n  text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n  z-index: 1;\n  color: #495057;\n  text-decoration: none;\n  background-color: #f8f9fa;\n}\n.list-group-item-action:active {\n  color: #212529;\n  background-color: #e9ecef;\n}\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.5rem 1rem;\n  color: #212529;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.list-group-item:first-child {\n  border-top-left-radius: inherit;\n  border-top-right-radius: inherit;\n}\n.list-group-item:last-child {\n  border-bottom-right-radius: inherit;\n  border-bottom-left-radius: inherit;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #fff;\n}\n.list-group-item.active {\n  z-index: 2;\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.list-group-item + .list-group-item {\n  border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n  margin-top: -1px;\n  border-top-width: 1px;\n}\n\n.list-group-horizontal {\n  flex-direction: row;\n}\n.list-group-horizontal > .list-group-item:first-child {\n  border-bottom-left-radius: 0.25rem;\n  border-top-right-radius: 0;\n}\n.list-group-horizontal > .list-group-item:last-child {\n  border-top-right-radius: 0.25rem;\n  border-bottom-left-radius: 0;\n}\n.list-group-horizontal > .list-group-item.active {\n  margin-top: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item {\n  border-top-width: 1px;\n  border-left-width: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n  margin-left: -1px;\n  border-left-width: 1px;\n}\n\n@media (min-width: 576px) {\n  .list-group-horizontal-sm {\n    flex-direction: row;\n  }\n  .list-group-horizontal-sm > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 768px) {\n  .list-group-horizontal-md {\n    flex-direction: row;\n  }\n  .list-group-horizontal-md > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-md > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-md > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-md > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 992px) {\n  .list-group-horizontal-lg {\n    flex-direction: row;\n  }\n  .list-group-horizontal-lg > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 1200px) {\n  .list-group-horizontal-xl {\n    flex-direction: row;\n  }\n  .list-group-horizontal-xl > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 1400px) {\n  .list-group-horizontal-xxl {\n    flex-direction: row;\n  }\n  .list-group-horizontal-xxl > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n.list-group-flush {\n  border-radius: 0;\n}\n.list-group-flush > .list-group-item {\n  border-width: 0 0 1px;\n}\n.list-group-flush > .list-group-item:last-child {\n  border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n  color: #084298;\n  background-color: #cfe2ff;\n}\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n  color: #084298;\n  background-color: #bacbe6;\n}\n.list-group-item-primary.list-group-item-action.active {\n  color: #fff;\n  background-color: #084298;\n  border-color: #084298;\n}\n\n.list-group-item-secondary {\n  color: #41464b;\n  background-color: #e2e3e5;\n}\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n  color: #41464b;\n  background-color: #cbccce;\n}\n.list-group-item-secondary.list-group-item-action.active {\n  color: #fff;\n  background-color: #41464b;\n  border-color: #41464b;\n}\n\n.list-group-item-success {\n  color: #0f5132;\n  background-color: #d1e7dd;\n}\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n  color: #0f5132;\n  background-color: #bcd0c7;\n}\n.list-group-item-success.list-group-item-action.active {\n  color: #fff;\n  background-color: #0f5132;\n  border-color: #0f5132;\n}\n\n.list-group-item-info {\n  color: #055160;\n  background-color: #cff4fc;\n}\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n  color: #055160;\n  background-color: #badce3;\n}\n.list-group-item-info.list-group-item-action.active {\n  color: #fff;\n  background-color: #055160;\n  border-color: #055160;\n}\n\n.list-group-item-warning {\n  color: #664d03;\n  background-color: #fff3cd;\n}\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n  color: #664d03;\n  background-color: #e6dbb9;\n}\n.list-group-item-warning.list-group-item-action.active {\n  color: #fff;\n  background-color: #664d03;\n  border-color: #664d03;\n}\n\n.list-group-item-danger {\n  color: #842029;\n  background-color: #f8d7da;\n}\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n  color: #842029;\n  background-color: #dfc2c4;\n}\n.list-group-item-danger.list-group-item-action.active {\n  color: #fff;\n  background-color: #842029;\n  border-color: #842029;\n}\n\n.list-group-item-light {\n  color: #636464;\n  background-color: #fefefe;\n}\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n  color: #636464;\n  background-color: #e5e5e5;\n}\n.list-group-item-light.list-group-item-action.active {\n  color: #fff;\n  background-color: #636464;\n  border-color: #636464;\n}\n\n.list-group-item-dark {\n  color: #141619;\n  background-color: #d3d3d4;\n}\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n  color: #141619;\n  background-color: #bebebf;\n}\n.list-group-item-dark.list-group-item-action.active {\n  color: #fff;\n  background-color: #141619;\n  border-color: #141619;\n}\n\n.btn-close {\n  box-sizing: content-box;\n  width: 1em;\n  height: 1em;\n  padding: 0.25em 0.25em;\n  color: #000;\n  background: transparent url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e\") center/1em auto no-repeat;\n  border: 0;\n  border-radius: 0.25rem;\n  opacity: 0.5;\n}\n.btn-close:hover {\n  color: #000;\n  text-decoration: none;\n  opacity: 0.75;\n}\n.btn-close:focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n  opacity: 1;\n}\n.btn-close:disabled, .btn-close.disabled {\n  pointer-events: none;\n  user-select: none;\n  opacity: 0.25;\n}\n\n.btn-close-white {\n  filter: invert(1) grayscale(100%) brightness(200%);\n}\n\n.toast {\n  width: 350px;\n  max-width: 100%;\n  font-size: 0.875rem;\n  pointer-events: auto;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.1);\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n.toast.showing {\n  opacity: 0;\n}\n.toast:not(.show) {\n  display: none;\n}\n\n.toast-container {\n  width: max-content;\n  max-width: 100%;\n  pointer-events: none;\n}\n.toast-container > :not(:last-child) {\n  margin-bottom: 0.75rem;\n}\n\n.toast-header {\n  display: flex;\n  align-items: center;\n  padding: 0.5rem 0.75rem;\n  color: #6c757d;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.toast-header .btn-close {\n  margin-right: -0.375rem;\n  margin-left: 0.75rem;\n}\n\n.toast-body {\n  padding: 0.75rem;\n  word-wrap: break-word;\n}\n\n.modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1055;\n  display: none;\n  width: 100%;\n  height: 100%;\n  overflow-x: hidden;\n  overflow-y: auto;\n  outline: 0;\n}\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none;\n}\n.modal.fade .modal-dialog {\n  transition: transform 0.3s ease-out;\n  transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n  .modal.fade .modal-dialog {\n    transition: none;\n  }\n}\n.modal.show .modal-dialog {\n  transform: none;\n}\n.modal.modal-static .modal-dialog {\n  transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n  height: calc(100% - 1rem);\n}\n.modal-dialog-scrollable .modal-content {\n  max-height: 100%;\n  overflow: hidden;\n}\n.modal-dialog-scrollable .modal-body {\n  overflow-y: auto;\n}\n\n.modal-dialog-centered {\n  display: flex;\n  align-items: center;\n  min-height: calc(100% - 1rem);\n}\n\n.modal-content {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n  outline: 0;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1050;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  opacity: 0;\n}\n.modal-backdrop.show {\n  opacity: 0.5;\n}\n\n.modal-header {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n  border-bottom: 1px solid #dee2e6;\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n.modal-header .btn-close {\n  padding: 0.5rem 0.5rem;\n  margin: -0.5rem -0.5rem -0.5rem auto;\n}\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.modal-body {\n  position: relative;\n  flex: 1 1 auto;\n  padding: 1rem;\n}\n\n.modal-footer {\n  display: flex;\n  flex-wrap: wrap;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: flex-end;\n  padding: 0.75rem;\n  border-top: 1px solid #dee2e6;\n  border-bottom-right-radius: calc(0.3rem - 1px);\n  border-bottom-left-radius: calc(0.3rem - 1px);\n}\n.modal-footer > * {\n  margin: 0.25rem;\n}\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto;\n  }\n\n  .modal-dialog-scrollable {\n    height: calc(100% - 3.5rem);\n  }\n\n  .modal-dialog-centered {\n    min-height: calc(100% - 3.5rem);\n  }\n\n  .modal-sm {\n    max-width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg,\n.modal-xl {\n    max-width: 800px;\n  }\n}\n@media (min-width: 1200px) {\n  .modal-xl {\n    max-width: 1140px;\n  }\n}\n.modal-fullscreen {\n  width: 100vw;\n  max-width: none;\n  height: 100%;\n  margin: 0;\n}\n.modal-fullscreen .modal-content {\n  height: 100%;\n  border: 0;\n  border-radius: 0;\n}\n.modal-fullscreen .modal-header {\n  border-radius: 0;\n}\n.modal-fullscreen .modal-body {\n  overflow-y: auto;\n}\n.modal-fullscreen .modal-footer {\n  border-radius: 0;\n}\n\n@media (max-width: 575.98px) {\n  .modal-fullscreen-sm-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-sm-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-sm-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-sm-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-sm-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 767.98px) {\n  .modal-fullscreen-md-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-md-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-md-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-md-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-md-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 991.98px) {\n  .modal-fullscreen-lg-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-lg-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-lg-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-lg-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-lg-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 1199.98px) {\n  .modal-fullscreen-xl-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-xl-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-xl-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-xl-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-xl-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 1399.98px) {\n  .modal-fullscreen-xxl-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-xxl-down .modal-footer {\n    border-radius: 0;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1080;\n  display: block;\n  margin: 0;\n  font-family: var(--bs-font-sans-serif);\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  opacity: 0;\n}\n.tooltip.show {\n  opacity: 0.9;\n}\n.tooltip .tooltip-arrow {\n  position: absolute;\n  display: block;\n  width: 0.8rem;\n  height: 0.4rem;\n}\n.tooltip .tooltip-arrow::before {\n  position: absolute;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[data-popper-placement^=top] {\n  padding: 0.4rem 0;\n}\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\n  bottom: 0;\n}\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\n  top: -1px;\n  border-width: 0.4rem 0.4rem 0;\n  border-top-color: #000;\n}\n\n.bs-tooltip-end, .bs-tooltip-auto[data-popper-placement^=right] {\n  padding: 0 0.4rem;\n}\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\n  left: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\n  right: -1px;\n  border-width: 0.4rem 0.4rem 0.4rem 0;\n  border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[data-popper-placement^=bottom] {\n  padding: 0.4rem 0;\n}\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\n  top: 0;\n}\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\n  bottom: -1px;\n  border-width: 0 0.4rem 0.4rem;\n  border-bottom-color: #000;\n}\n\n.bs-tooltip-start, .bs-tooltip-auto[data-popper-placement^=left] {\n  padding: 0 0.4rem;\n}\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\n  right: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\n  left: -1px;\n  border-width: 0.4rem 0 0.4rem 0.4rem;\n  border-left-color: #000;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 0.25rem;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0 /* rtl:ignore */;\n  z-index: 1070;\n  display: block;\n  max-width: 276px;\n  font-family: var(--bs-font-sans-serif);\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n}\n.popover .popover-arrow {\n  position: absolute;\n  display: block;\n  width: 1rem;\n  height: 0.5rem;\n}\n.popover .popover-arrow::before, .popover .popover-arrow::after {\n  position: absolute;\n  display: block;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\n  bottom: calc(-0.5rem - 1px);\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\n  bottom: 0;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n  bottom: 1px;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: #fff;\n}\n\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\n  left: calc(-0.5rem - 1px);\n  width: 0.5rem;\n  height: 1rem;\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\n  left: 0;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n  left: 1px;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: #fff;\n}\n\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\n  top: calc(-0.5rem - 1px);\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\n  top: 0;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n  top: 1px;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: #fff;\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\n  position: absolute;\n  top: 0;\n  left: 50%;\n  display: block;\n  width: 1rem;\n  margin-left: -0.5rem;\n  content: \"\";\n  border-bottom: 1px solid #f0f0f0;\n}\n\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\n  right: calc(-0.5rem - 1px);\n  width: 0.5rem;\n  height: 1rem;\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\n  right: 0;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n  right: 1px;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: #fff;\n}\n\n.popover-header {\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  background-color: #f0f0f0;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n.popover-header:empty {\n  display: none;\n}\n\n.popover-body {\n  padding: 1rem 1rem;\n  color: #212529;\n}\n\n.carousel {\n  position: relative;\n}\n\n.carousel.pointer-event {\n  touch-action: pan-y;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  float: left;\n  width: 100%;\n  margin-right: -100%;\n  backface-visibility: hidden;\n  transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-item {\n    transition: none;\n  }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n/* rtl:begin:ignore */\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n  transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n  transform: translateX(-100%);\n}\n\n/* rtl:end:ignore */\n.carousel-fade .carousel-item {\n  opacity: 0;\n  transition-property: opacity;\n  transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-start,\n.carousel-fade .carousel-item-prev.carousel-item-end {\n  z-index: 1;\n  opacity: 1;\n}\n.carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n  z-index: 0;\n  opacity: 0;\n  transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n    transition: none;\n  }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 15%;\n  padding: 0;\n  color: #fff;\n  text-align: center;\n  background: none;\n  border: 0;\n  opacity: 0.5;\n  transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-control-prev,\n.carousel-control-next {\n    transition: none;\n  }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  opacity: 0.9;\n}\n\n.carousel-control-prev {\n  left: 0;\n}\n\n.carousel-control-next {\n  right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  background-repeat: no-repeat;\n  background-position: 50%;\n  background-size: 100% 100%;\n}\n\n/* rtl:options: {\n  \"autoRename\": true,\n  \"stringMap\":[ {\n    \"name\"    : \"prev-next\",\n    \"search\"  : \"prev\",\n    \"replace\" : \"next\"\n  } ]\n} */\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 2;\n  display: flex;\n  justify-content: center;\n  padding: 0;\n  margin-right: 15%;\n  margin-bottom: 1rem;\n  margin-left: 15%;\n  list-style: none;\n}\n.carousel-indicators [data-bs-target] {\n  box-sizing: content-box;\n  flex: 0 1 auto;\n  width: 30px;\n  height: 3px;\n  padding: 0;\n  margin-right: 3px;\n  margin-left: 3px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 0;\n  border-top: 10px solid transparent;\n  border-bottom: 10px solid transparent;\n  opacity: 0.5;\n  transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-indicators [data-bs-target] {\n    transition: none;\n  }\n}\n.carousel-indicators .active {\n  opacity: 1;\n}\n\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 1.25rem;\n  left: 15%;\n  padding-top: 1.25rem;\n  padding-bottom: 1.25rem;\n  color: #fff;\n  text-align: center;\n}\n\n.carousel-dark .carousel-control-prev-icon,\n.carousel-dark .carousel-control-next-icon {\n  filter: invert(1) grayscale(100);\n}\n.carousel-dark .carousel-indicators [data-bs-target] {\n  background-color: #000;\n}\n.carousel-dark .carousel-caption {\n  color: #000;\n}\n\n@keyframes spinner-border {\n  to {\n    transform: rotate(360deg) /* rtl:ignore */;\n  }\n}\n.spinner-border {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: -0.125em;\n  border: 0.25em solid currentColor;\n  border-right-color: transparent;\n  border-radius: 50%;\n  animation: 0.75s linear infinite spinner-border;\n}\n\n.spinner-border-sm {\n  width: 1rem;\n  height: 1rem;\n  border-width: 0.2em;\n}\n\n@keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n.spinner-grow {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: -0.125em;\n  background-color: currentColor;\n  border-radius: 50%;\n  opacity: 0;\n  animation: 0.75s linear infinite spinner-grow;\n}\n\n.spinner-grow-sm {\n  width: 1rem;\n  height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .spinner-border,\n.spinner-grow {\n    animation-duration: 1.5s;\n  }\n}\n.offcanvas {\n  position: fixed;\n  bottom: 0;\n  z-index: 1045;\n  display: flex;\n  flex-direction: column;\n  max-width: 100%;\n  visibility: hidden;\n  background-color: #fff;\n  background-clip: padding-box;\n  outline: 0;\n  transition: transform 0.3s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .offcanvas {\n    transition: none;\n  }\n}\n\n.offcanvas-backdrop {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1040;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n.offcanvas-backdrop.fade {\n  opacity: 0;\n}\n.offcanvas-backdrop.show {\n  opacity: 0.5;\n}\n\n.offcanvas-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n}\n.offcanvas-header .btn-close {\n  padding: 0.5rem 0.5rem;\n  margin-top: -0.5rem;\n  margin-right: -0.5rem;\n  margin-bottom: -0.5rem;\n}\n\n.offcanvas-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.offcanvas-body {\n  flex-grow: 1;\n  padding: 1rem 1rem;\n  overflow-y: auto;\n}\n\n.offcanvas-start {\n  top: 0;\n  left: 0;\n  width: 400px;\n  border-right: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateX(-100%);\n}\n\n.offcanvas-end {\n  top: 0;\n  right: 0;\n  width: 400px;\n  border-left: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateX(100%);\n}\n\n.offcanvas-top {\n  top: 0;\n  right: 0;\n  left: 0;\n  height: 30vh;\n  max-height: 100%;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateY(-100%);\n}\n\n.offcanvas-bottom {\n  right: 0;\n  left: 0;\n  height: 30vh;\n  max-height: 100%;\n  border-top: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateY(100%);\n}\n\n.offcanvas.show {\n  transform: none;\n}\n\n.placeholder {\n  display: inline-block;\n  min-height: 1em;\n  vertical-align: middle;\n  cursor: wait;\n  background-color: currentColor;\n  opacity: 0.5;\n}\n.placeholder.btn::before {\n  display: inline-block;\n  content: \"\";\n}\n\n.placeholder-xs {\n  min-height: 0.6em;\n}\n\n.placeholder-sm {\n  min-height: 0.8em;\n}\n\n.placeholder-lg {\n  min-height: 1.2em;\n}\n\n.placeholder-glow .placeholder {\n  animation: placeholder-glow 2s ease-in-out infinite;\n}\n\n@keyframes placeholder-glow {\n  50% {\n    opacity: 0.2;\n  }\n}\n.placeholder-wave {\n  mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n  mask-size: 200% 100%;\n  animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n  100% {\n    mask-position: -200% 0%;\n  }\n}\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.link-primary {\n  color: #0d6efd;\n}\n.link-primary:hover, .link-primary:focus {\n  color: #0a58ca;\n}\n\n.link-secondary {\n  color: #6c757d;\n}\n.link-secondary:hover, .link-secondary:focus {\n  color: #565e64;\n}\n\n.link-success {\n  color: #198754;\n}\n.link-success:hover, .link-success:focus {\n  color: #146c43;\n}\n\n.link-info {\n  color: #0dcaf0;\n}\n.link-info:hover, .link-info:focus {\n  color: #3dd5f3;\n}\n\n.link-warning {\n  color: #ffc107;\n}\n.link-warning:hover, .link-warning:focus {\n  color: #ffcd39;\n}\n\n.link-danger {\n  color: #dc3545;\n}\n.link-danger:hover, .link-danger:focus {\n  color: #b02a37;\n}\n\n.link-light {\n  color: #f8f9fa;\n}\n.link-light:hover, .link-light:focus {\n  color: #f9fafb;\n}\n\n.link-dark {\n  color: #212529;\n}\n.link-dark:hover, .link-dark:focus {\n  color: #1a1e21;\n}\n\n.ratio {\n  position: relative;\n  width: 100%;\n}\n.ratio::before {\n  display: block;\n  padding-top: var(--bs-aspect-ratio);\n  content: \"\";\n}\n.ratio > * {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.ratio-1x1 {\n  --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n  --bs-aspect-ratio: calc(3 / 4 * 100%);\n}\n\n.ratio-16x9 {\n  --bs-aspect-ratio: calc(9 / 16 * 100%);\n}\n\n.ratio-21x9 {\n  --bs-aspect-ratio: calc(9 / 21 * 100%);\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.sticky-top {\n  position: sticky;\n  top: 0;\n  z-index: 1020;\n}\n\n@media (min-width: 576px) {\n  .sticky-sm-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 768px) {\n  .sticky-md-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 992px) {\n  .sticky-lg-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1200px) {\n  .sticky-xl-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1400px) {\n  .sticky-xxl-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1;\n  content: \"\";\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: 0.25;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.float-start {\n  float: left !important;\n}\n\n.float-end {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-25 {\n  opacity: 0.25 !important;\n}\n\n.opacity-50 {\n  opacity: 0.5 !important;\n}\n\n.opacity-75 {\n  opacity: 0.75 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: sticky !important;\n}\n\n.top-0 {\n  top: 0 !important;\n}\n\n.top-50 {\n  top: 50% !important;\n}\n\n.top-100 {\n  top: 100% !important;\n}\n\n.bottom-0 {\n  bottom: 0 !important;\n}\n\n.bottom-50 {\n  bottom: 50% !important;\n}\n\n.bottom-100 {\n  bottom: 100% !important;\n}\n\n.start-0 {\n  left: 0 !important;\n}\n\n.start-50 {\n  left: 50% !important;\n}\n\n.start-100 {\n  left: 100% !important;\n}\n\n.end-0 {\n  right: 0 !important;\n}\n\n.end-50 {\n  right: 50% !important;\n}\n\n.end-100 {\n  right: 100% !important;\n}\n\n.translate-middle {\n  transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n  transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n  transform: translateY(-50%) !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-end {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-end-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-start {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-start-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #0d6efd !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #198754 !important;\n}\n\n.border-info {\n  border-color: #0dcaf0 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #212529 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.border-1 {\n  border-width: 1px !important;\n}\n\n.border-2 {\n  border-width: 2px !important;\n}\n\n.border-3 {\n  border-width: 3px !important;\n}\n\n.border-4 {\n  border-width: 4px !important;\n}\n\n.border-5 {\n  border-width: 5px !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.vw-100 {\n  width: 100vw !important;\n}\n\n.min-vw-100 {\n  min-width: 100vw !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.vh-100 {\n  height: 100vh !important;\n}\n\n.min-vh-100 {\n  min-height: 100vh !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.gap-0 {\n  gap: 0 !important;\n}\n\n.gap-1 {\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  gap: 1rem !important;\n}\n\n.gap-4 {\n  gap: 1.5rem !important;\n}\n\n.gap-5 {\n  gap: 3rem !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-right: 0 !important;\n  margin-left: 0 !important;\n}\n\n.mx-1 {\n  margin-right: 0.25rem !important;\n  margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-right: 0.5rem !important;\n  margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-right: 1rem !important;\n  margin-left: 1rem !important;\n}\n\n.mx-4 {\n  margin-right: 1.5rem !important;\n  margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-right: 3rem !important;\n  margin-left: 3rem !important;\n}\n\n.mx-auto {\n  margin-right: auto !important;\n  margin-left: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-right: 0 !important;\n}\n\n.me-1 {\n  margin-right: 0.25rem !important;\n}\n\n.me-2 {\n  margin-right: 0.5rem !important;\n}\n\n.me-3 {\n  margin-right: 1rem !important;\n}\n\n.me-4 {\n  margin-right: 1.5rem !important;\n}\n\n.me-5 {\n  margin-right: 3rem !important;\n}\n\n.me-auto {\n  margin-right: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-left: 0 !important;\n}\n\n.ms-1 {\n  margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-left: 1rem !important;\n}\n\n.ms-4 {\n  margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-left: 3rem !important;\n}\n\n.ms-auto {\n  margin-left: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-right: 0 !important;\n  padding-left: 0 !important;\n}\n\n.px-1 {\n  padding-right: 0.25rem !important;\n  padding-left: 0.25rem !important;\n}\n\n.px-2 {\n  padding-right: 0.5rem !important;\n  padding-left: 0.5rem !important;\n}\n\n.px-3 {\n  padding-right: 1rem !important;\n  padding-left: 1rem !important;\n}\n\n.px-4 {\n  padding-right: 1.5rem !important;\n  padding-left: 1.5rem !important;\n}\n\n.px-5 {\n  padding-right: 3rem !important;\n  padding-left: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-right: 0 !important;\n}\n\n.pe-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-right: 1rem !important;\n}\n\n.pe-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-left: 0 !important;\n}\n\n.ps-1 {\n  padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-left: 1rem !important;\n}\n\n.ps-4 {\n  padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-left: 3rem !important;\n}\n\n.font-monospace {\n  font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n  font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n  font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n  font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n  font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n  font-size: 1.25rem !important;\n}\n\n.fs-6 {\n  font-size: 1rem !important;\n}\n\n.fst-italic {\n  font-style: italic !important;\n}\n\n.fst-normal {\n  font-style: normal !important;\n}\n\n.fw-light {\n  font-weight: 300 !important;\n}\n\n.fw-lighter {\n  font-weight: lighter !important;\n}\n\n.fw-normal {\n  font-weight: 400 !important;\n}\n\n.fw-bold {\n  font-weight: 700 !important;\n}\n\n.fw-bolder {\n  font-weight: bolder !important;\n}\n\n.lh-1 {\n  line-height: 1 !important;\n}\n\n.lh-sm {\n  line-height: 1.25 !important;\n}\n\n.lh-base {\n  line-height: 1.5 !important;\n}\n\n.lh-lg {\n  line-height: 2 !important;\n}\n\n.text-start {\n  text-align: left !important;\n}\n\n.text-end {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n.text-decoration-none {\n  text-decoration: none !important;\n}\n\n.text-decoration-underline {\n  text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n  text-decoration: line-through !important;\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.text-wrap {\n  white-space: normal !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n  word-wrap: break-word !important;\n  word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n  --bs-text-opacity: 1;\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  --bs-text-opacity: 1;\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  --bs-text-opacity: 1;\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-reset {\n  --bs-text-opacity: 1;\n  color: inherit !important;\n}\n\n.text-opacity-25 {\n  --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n  --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n  --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n  --bs-text-opacity: 1;\n}\n\n.bg-primary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n  --bs-bg-opacity: 1;\n  background-color: transparent !important;\n}\n\n.bg-opacity-10 {\n  --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n  --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n  --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n  --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n  --bs-bg-opacity: 1;\n}\n\n.bg-gradient {\n  background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n  user-select: all !important;\n}\n\n.user-select-auto {\n  user-select: auto !important;\n}\n\n.user-select-none {\n  user-select: none !important;\n}\n\n.pe-none {\n  pointer-events: none !important;\n}\n\n.pe-auto {\n  pointer-events: auto !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.rounded-1 {\n  border-radius: 0.2rem !important;\n}\n\n.rounded-2 {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-3 {\n  border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-pill {\n  border-radius: 50rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-end {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-start {\n  border-bottom-left-radius: 0.25rem !important;\n  border-top-left-radius: 0.25rem !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-start {\n    float: left !important;\n  }\n\n  .float-sm-end {\n    float: right !important;\n  }\n\n  .float-sm-none {\n    float: none !important;\n  }\n\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-sm-0 {\n    gap: 0 !important;\n  }\n\n  .gap-sm-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-sm-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-sm-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-sm-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-sm-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-sm-start {\n    text-align: left !important;\n  }\n\n  .text-sm-end {\n    text-align: right !important;\n  }\n\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 768px) {\n  .float-md-start {\n    float: left !important;\n  }\n\n  .float-md-end {\n    float: right !important;\n  }\n\n  .float-md-none {\n    float: none !important;\n  }\n\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-md-0 {\n    gap: 0 !important;\n  }\n\n  .gap-md-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-md-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-md-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-md-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-md-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-left: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-md-start {\n    text-align: left !important;\n  }\n\n  .text-md-end {\n    text-align: right !important;\n  }\n\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 992px) {\n  .float-lg-start {\n    float: left !important;\n  }\n\n  .float-lg-end {\n    float: right !important;\n  }\n\n  .float-lg-none {\n    float: none !important;\n  }\n\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-lg-0 {\n    gap: 0 !important;\n  }\n\n  .gap-lg-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-lg-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-lg-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-lg-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-lg-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-lg-start {\n    text-align: left !important;\n  }\n\n  .text-lg-end {\n    text-align: right !important;\n  }\n\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .float-xl-start {\n    float: left !important;\n  }\n\n  .float-xl-end {\n    float: right !important;\n  }\n\n  .float-xl-none {\n    float: none !important;\n  }\n\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xl-start {\n    text-align: left !important;\n  }\n\n  .text-xl-end {\n    text-align: right !important;\n  }\n\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1400px) {\n  .float-xxl-start {\n    float: left !important;\n  }\n\n  .float-xxl-end {\n    float: right !important;\n  }\n\n  .float-xxl-none {\n    float: none !important;\n  }\n\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xxl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xxl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xxl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xxl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xxl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xxl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xxl-start {\n    text-align: left !important;\n  }\n\n  .text-xxl-end {\n    text-align: right !important;\n  }\n\n  .text-xxl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .fs-1 {\n    font-size: 2.5rem !important;\n  }\n\n  .fs-2 {\n    font-size: 2rem !important;\n  }\n\n  .fs-3 {\n    font-size: 1.75rem !important;\n  }\n\n  .fs-4 {\n    font-size: 1.5rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */\n","/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n@import \"placeholders\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n  // Note: Custom variable values only support SassScript inside `#{}`.\n\n  // Colors\n  //\n  // Generate palettes for full colors, grays, and theme colors.\n\n  @each $color, $value in $colors {\n    --#{$variable-prefix}#{$color}: #{$value};\n  }\n\n  @each $color, $value in $grays {\n    --#{$variable-prefix}gray-#{$color}: #{$value};\n  }\n\n  @each $color, $value in $theme-colors {\n    --#{$variable-prefix}#{$color}: #{$value};\n  }\n\n  @each $color, $value in $theme-colors-rgb {\n    --#{$variable-prefix}#{$color}-rgb: #{$value};\n  }\n\n  --#{$variable-prefix}white-rgb: #{to-rgb($white)};\n  --#{$variable-prefix}black-rgb: #{to-rgb($black)};\n  --#{$variable-prefix}body-rgb: #{to-rgb($body-color)};\n\n  // Fonts\n\n  // Note: Use `inspect` for lists so that quoted items keep the quotes.\n  // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n  --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n  --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n  --#{$variable-prefix}gradient: #{$gradient};\n\n  // Root and body\n  // stylelint-disable custom-property-empty-line-before\n  // scss-docs-start root-body-variables\n  @if $font-size-root != null {\n    --#{$variable-prefix}root-font-size: #{$font-size-root};\n  }\n  --#{$variable-prefix}body-font-family: #{$font-family-base};\n  --#{$variable-prefix}body-font-size: #{$font-size-base};\n  --#{$variable-prefix}body-font-weight: #{$font-weight-base};\n  --#{$variable-prefix}body-line-height: #{$line-height-base};\n  --#{$variable-prefix}body-color: #{$body-color};\n  @if $body-text-align != null {\n    --#{$variable-prefix}body-text-align: #{$body-text-align};\n  }\n  --#{$variable-prefix}body-bg: #{$body-bg};\n  // scss-docs-end root-body-variables\n  // stylelint-enable custom-property-empty-line-before\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n  @if $font-size-root != null {\n    font-size: var(--#{$variable-prefix}-root-font-size);\n  }\n\n  @if $enable-smooth-scroll {\n    @media (prefers-reduced-motion: no-preference) {\n      scroll-behavior: smooth;\n    }\n  }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n  margin: 0; // 1\n  font-family: var(--#{$variable-prefix}body-font-family);\n  @include font-size(var(--#{$variable-prefix}body-font-size));\n  font-weight: var(--#{$variable-prefix}body-font-weight);\n  line-height: var(--#{$variable-prefix}body-line-height);\n  color: var(--#{$variable-prefix}body-color);\n  text-align: var(--#{$variable-prefix}body-text-align);\n  background-color: var(--#{$variable-prefix}body-bg); // 2\n  -webkit-text-size-adjust: 100%; // 3\n  -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n  margin: $hr-margin-y 0;\n  color: $hr-color; // 1\n  background-color: currentColor;\n  border: 0;\n  opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n  height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n//    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n//    margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n  margin-top: 0; // 1\n  margin-bottom: $headings-margin-bottom;\n  font-family: $headings-font-family;\n  font-style: $headings-font-style;\n  font-weight: $headings-font-weight;\n  line-height: $headings-line-height;\n  color: $headings-color;\n}\n\nh1 {\n  @extend %heading;\n  @include font-size($h1-font-size);\n}\n\nh2 {\n  @extend %heading;\n  @include font-size($h2-font-size);\n}\n\nh3 {\n  @extend %heading;\n  @include font-size($h3-font-size);\n}\n\nh4 {\n  @extend %heading;\n  @include font-size($h4-font-size);\n}\n\nh5 {\n  @extend %heading;\n  @include font-size($h5-font-size);\n}\n\nh6 {\n  @extend %heading;\n  @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n  margin-top: 0;\n  margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n  text-decoration: underline dotted; // 2\n  cursor: help; // 3\n  text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n  font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n  @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n  padding: $mark-padding;\n  background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n  position: relative;\n  @include font-size($sub-sup-font-size);\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n  color: $link-color;\n  text-decoration: $link-decoration;\n\n  &:hover {\n    color: $link-hover-color;\n    text-decoration: $link-hover-decoration;\n  }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n  &,\n  &:hover {\n    color: inherit;\n    text-decoration: none;\n  }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: $font-family-code;\n  @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n  direction: ltr #{\"/* rtl:ignore */\"};\n  unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n  display: block;\n  margin-top: 0; // 1\n  margin-bottom: 1rem; // 2\n  overflow: auto; // 3\n  @include font-size($code-font-size);\n  color: $pre-color;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    @include font-size(inherit);\n    color: inherit;\n    word-break: normal;\n  }\n}\n\ncode {\n  @include font-size($code-font-size);\n  color: $code-color;\n  word-wrap: break-word;\n\n  // Streamline the style when inside anchors to avoid broken underline and more\n  a > & {\n    color: inherit;\n  }\n}\n\nkbd {\n  padding: $kbd-padding-y $kbd-padding-x;\n  @include font-size($kbd-font-size);\n  color: $kbd-color;\n  background-color: $kbd-bg;\n  @include border-radius($border-radius-sm);\n\n  kbd {\n    padding: 0;\n    @include font-size(1em);\n    font-weight: $nested-kbd-font-weight;\n  }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n  margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: $table-cell-padding-y;\n  padding-bottom: $table-cell-padding-y;\n  color: $table-caption-color;\n  text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `<td>` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n  font-weight: $table-th-font-weight; // 1\n  text-align: inherit; // 2\n  text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n  display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0; // 1\n  font-family: inherit;\n  @include font-size(inherit);\n  line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n  text-transform: none;\n}\n// Set the cursor for non-`<button>` buttons\n//\n// Details at https://github.com/twbs/bootstrap/pull/30562\n[role=\"button\"] {\n  cursor: pointer;\n}\n\nselect {\n  // Remove the inheritance of word-wrap in Safari.\n  // See https://github.com/twbs/bootstrap/issues/24990\n  word-wrap: normal;\n\n  // Undo the opacity change from Chrome\n  &:disabled {\n    opacity: 1;\n  }\n}\n\n// Remove the dropdown arrow in Chrome from inputs built with datalists.\n// See https://stackoverflow.com/a/54997118\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n//    controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\n// 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n\n  @if $enable-button-pointers {\n    &:not(:disabled) {\n      cursor: pointer; // 3\n    }\n  }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\n// 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\ntextarea {\n  resize: vertical; // 1\n}\n\n// 1. Browsers set a default `min-width: min-content;` on fieldsets,\n//    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n//    So we reset that to ensure fieldsets behave more like a standard block element.\n//    See https://github.com/twbs/bootstrap/issues/12359\n//    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n// 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\nfieldset {\n  min-width: 0; // 1\n  padding: 0; // 2\n  margin: 0; // 2\n  border: 0; // 2\n}\n\n// 1. By using `float: left`, the legend will behave like a block element.\n//    This way the border of a fieldset wraps around the legend if present.\n// 2. Fix wrapping bug.\n//    See https://github.com/twbs/bootstrap/issues/29712\n\nlegend {\n  float: left; // 1\n  width: 100%;\n  padding: 0;\n  margin-bottom: $legend-margin-bottom;\n  @include font-size($legend-font-size);\n  font-weight: $legend-font-weight;\n  line-height: inherit;\n\n  + * {\n    clear: left; // 2\n  }\n}\n\n// Fix height of inputs with a type of datetime-local, date, month, week, or time\n// See https://github.com/twbs/bootstrap/issues/18842\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n// 1. Correct the outline style in Safari.\n// 2. This overrides the extra rounded corners on search inputs in iOS so that our\n//    `.form-control` class can properly style them. Note that this cannot simply\n//    be added to `.form-control` as it's not specific enough. For details, see\n//    https://github.com/twbs/bootstrap/issues/11586.\n\n[type=\"search\"] {\n  outline-offset: -2px; // 1\n  -webkit-appearance: textfield; // 2\n}\n\n// 1. A few input types should stay LTR\n// See https://rtlstyling.com/posts/rtl-styling#form-inputs\n// 2. RTL only output\n// See https://rtlcss.com/learn/usage-guide/control-directives/#raw\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n\n// Remove the inner padding in Chrome and Safari on macOS.\n\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n// Remove padding around color pickers in webkit browsers\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n\n// Inherit font family and line height for file input buttons\n\n::file-selector-button {\n  font: inherit;\n}\n\n// 1. Change font properties to `inherit`\n// 2. Correct the inability to style clickable types in iOS and Safari.\n\n::-webkit-file-upload-button {\n  font: inherit; // 1\n  -webkit-appearance: button; // 2\n}\n\n// Correct element displays\n\noutput {\n  display: inline-block;\n}\n\n// Remove border from iframe\n\niframe {\n  border: 0;\n}\n\n// Summary\n//\n// 1. Add the correct display in all browsers\n\nsummary {\n  display: list-item; // 1\n  cursor: pointer;\n}\n\n\n// Progress\n//\n// Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\nprogress {\n  vertical-align: baseline;\n}\n\n\n// Hidden attribute\n//\n// Always hide an element with the `hidden` HTML attribute.\n\n[hidden] {\n  display: none !important;\n}\n","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n  @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n  @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n  @error \"`#{$rfs-factor}` is not a valid  $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n  $dividend: abs($dividend);\n  $divisor: abs($divisor);\n  @if $dividend == 0 {\n    @return 0;\n  }\n  @if $divisor == 0 {\n    @error \"Cannot divide by 0\";\n  }\n  $remainder: $dividend;\n  $result: 0;\n  $factor: 10;\n  @while ($remainder > 0 and $precision >= 0) {\n    $quotient: 0;\n    @while ($remainder >= $divisor) {\n      $remainder: $remainder - $divisor;\n      $quotient: $quotient + 1;\n    }\n    $result: $result * 10 + $quotient;\n    $factor: $factor * .1;\n    $remainder: $remainder * 10;\n    $precision: $precision - 1;\n    @if ($precision < 0 and $remainder >= $divisor * 5) {\n      $result: $result + 1;\n    }\n  }\n  $result: $result * $factor * $sign;\n  $dividend-unit: unit($dividend);\n  $divisor-unit: unit($divisor);\n  $unit-map: (\n    \"px\": 1px,\n    \"rem\": 1rem,\n    \"em\": 1em,\n    \"%\": 1%\n  );\n  @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n    $result: $result * map-get($unit-map, $dividend-unit);\n  }\n  @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n  $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n  $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n  $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n  $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n  @if $rfs-two-dimensional {\n    @if $rfs-mode == max-media-query {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n    @else {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n  }\n  @else {\n    @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n      @content;\n    }\n  }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n  @if $rfs-class == disable and $rfs-mode == max-media-query {\n    // Adding an extra class increases specificity, which prevents the media query to override the property\n    &,\n    .disable-rfs &,\n    &.disable-rfs {\n      @content;\n    }\n  }\n  @else if $rfs-class == enable and $rfs-mode == min-media-query {\n    .enable-rfs &,\n    &.enable-rfs {\n      @content;\n    }\n  }\n  @else {\n    @content;\n  }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n  @if $rfs-class == enable {\n    @if $rfs-mode == min-media-query {\n      @content;\n    }\n\n    @include _rfs-media-query {\n      .enable-rfs &,\n      &.enable-rfs {\n        @content;\n      }\n    }\n  }\n  @else {\n    @if $rfs-class == disable and $rfs-mode == min-media-query {\n      .disable-rfs &,\n      &.disable-rfs {\n        @content;\n      }\n    }\n    @include _rfs-media-query {\n      @content;\n    }\n  }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      @if $unit == px {\n        // Convert to rem if needed\n        $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n      }\n      @else if $unit == rem {\n        // Convert to px if needed\n        $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n      }\n      @else {\n        // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n        $val: $val + ' ' + $value;\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n      @if not $unit or $unit != px and $unit != rem {\n        $val: $val + ' ' + $value;\n      }\n\n      @else {\n        // Remove unit from $value for calculations\n        $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n        // Only add the media query if the value is greater than the minimum value\n        @if abs($value) <= $rfs-base-value or not $enable-rfs {\n          $val: $val + ' ' +  if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n        }\n        @else {\n          // Calculate the minimum value\n          $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n          // Calculate difference between $value and the minimum value\n          $value-diff: abs($value) - $value-min;\n\n          // Base value formatting\n          $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n          // Use negative value if needed\n          $min-width: if($value < 0, -$min-width, $min-width);\n\n          // Use `vmin` if two-dimensional is enabled\n          $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n          // Calculate the variable width between 0 and $rfs-breakpoint\n          $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n          // Return the calculated value\n          $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n        }\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n  @if $values != null {\n    $val: rfs-value($values);\n    $fluidVal: rfs-fluid-value($values);\n\n    // Do not print the media query if responsive & non-responsive values are the same\n    @if $val == $fluidVal {\n      #{$property}: $val;\n    }\n    @else {\n      @include _rfs-rule {\n        #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n        // Include safari iframe resize fix if needed\n        min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n      }\n\n      @include _rfs-media-query-rule {\n        #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n      }\n    }\n  }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n  @include rfs($value);\n}\n\n@mixin padding($value) {\n  @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n  @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n  @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n  @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n  @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n  @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n  @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n  @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n  @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n  @include rfs($value, margin-left);\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white:    #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black:    #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n  \"100\": $gray-100,\n  \"200\": $gray-200,\n  \"300\": $gray-300,\n  \"400\": $gray-400,\n  \"500\": $gray-500,\n  \"600\": $gray-600,\n  \"700\": $gray-700,\n  \"800\": $gray-800,\n  \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue:    #0d6efd !default;\n$indigo:  #6610f2 !default;\n$purple:  #6f42c1 !default;\n$pink:    #d63384 !default;\n$red:     #dc3545 !default;\n$orange:  #fd7e14 !default;\n$yellow:  #ffc107 !default;\n$green:   #198754 !default;\n$teal:    #20c997 !default;\n$cyan:    #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n  \"blue\":       $blue,\n  \"indigo\":     $indigo,\n  \"purple\":     $purple,\n  \"pink\":       $pink,\n  \"red\":        $red,\n  \"orange\":     $orange,\n  \"yellow\":     $yellow,\n  \"green\":      $green,\n  \"teal\":       $teal,\n  \"cyan\":       $cyan,\n  \"white\":      $white,\n  \"gray\":       $gray-600,\n  \"gray-dark\":  $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// scss-docs-start theme-color-variables\n$primary:       $blue !default;\n$secondary:     $gray-600 !default;\n$success:       $green !default;\n$info:          $cyan !default;\n$warning:       $yellow !default;\n$danger:        $red !default;\n$light:         $gray-100 !default;\n$dark:          $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n  \"primary\":    $primary,\n  \"secondary\":  $secondary,\n  \"success\":    $success,\n  \"info\":       $info,\n  \"warning\":    $warning,\n  \"danger\":     $danger,\n  \"light\":      $light,\n  \"dark\":       $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-colors-rgb\n$theme-colors-rgb: map-loop($theme-colors, to-rgb, \"$value\") !default;\n// scss-docs-end theme-colors-rgb\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio:   4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark:      $black !default;\n$color-contrast-light:     $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n  \"blue-100\": $blue-100,\n  \"blue-200\": $blue-200,\n  \"blue-300\": $blue-300,\n  \"blue-400\": $blue-400,\n  \"blue-500\": $blue-500,\n  \"blue-600\": $blue-600,\n  \"blue-700\": $blue-700,\n  \"blue-800\": $blue-800,\n  \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n  \"indigo-100\": $indigo-100,\n  \"indigo-200\": $indigo-200,\n  \"indigo-300\": $indigo-300,\n  \"indigo-400\": $indigo-400,\n  \"indigo-500\": $indigo-500,\n  \"indigo-600\": $indigo-600,\n  \"indigo-700\": $indigo-700,\n  \"indigo-800\": $indigo-800,\n  \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n  \"purple-100\": $purple-200,\n  \"purple-200\": $purple-100,\n  \"purple-300\": $purple-300,\n  \"purple-400\": $purple-400,\n  \"purple-500\": $purple-500,\n  \"purple-600\": $purple-600,\n  \"purple-700\": $purple-700,\n  \"purple-800\": $purple-800,\n  \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n  \"pink-100\": $pink-100,\n  \"pink-200\": $pink-200,\n  \"pink-300\": $pink-300,\n  \"pink-400\": $pink-400,\n  \"pink-500\": $pink-500,\n  \"pink-600\": $pink-600,\n  \"pink-700\": $pink-700,\n  \"pink-800\": $pink-800,\n  \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n  \"red-100\": $red-100,\n  \"red-200\": $red-200,\n  \"red-300\": $red-300,\n  \"red-400\": $red-400,\n  \"red-500\": $red-500,\n  \"red-600\": $red-600,\n  \"red-700\": $red-700,\n  \"red-800\": $red-800,\n  \"red-900\": $red-900\n) !default;\n\n$oranges: (\n  \"orange-100\": $orange-100,\n  \"orange-200\": $orange-200,\n  \"orange-300\": $orange-300,\n  \"orange-400\": $orange-400,\n  \"orange-500\": $orange-500,\n  \"orange-600\": $orange-600,\n  \"orange-700\": $orange-700,\n  \"orange-800\": $orange-800,\n  \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n  \"yellow-100\": $yellow-100,\n  \"yellow-200\": $yellow-200,\n  \"yellow-300\": $yellow-300,\n  \"yellow-400\": $yellow-400,\n  \"yellow-500\": $yellow-500,\n  \"yellow-600\": $yellow-600,\n  \"yellow-700\": $yellow-700,\n  \"yellow-800\": $yellow-800,\n  \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n  \"green-100\": $green-100,\n  \"green-200\": $green-200,\n  \"green-300\": $green-300,\n  \"green-400\": $green-400,\n  \"green-500\": $green-500,\n  \"green-600\": $green-600,\n  \"green-700\": $green-700,\n  \"green-800\": $green-800,\n  \"green-900\": $green-900\n) !default;\n\n$teals: (\n  \"teal-100\": $teal-100,\n  \"teal-200\": $teal-200,\n  \"teal-300\": $teal-300,\n  \"teal-400\": $teal-400,\n  \"teal-500\": $teal-500,\n  \"teal-600\": $teal-600,\n  \"teal-700\": $teal-700,\n  \"teal-800\": $teal-800,\n  \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n  \"cyan-100\": $cyan-100,\n  \"cyan-200\": $cyan-200,\n  \"cyan-300\": $cyan-300,\n  \"cyan-400\": $cyan-400,\n  \"cyan-500\": $cyan-500,\n  \"cyan-600\": $cyan-600,\n  \"cyan-700\": $cyan-700,\n  \"cyan-800\": $cyan-800,\n  \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              false !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-cssgrid:              false !default;\n$enable-button-pointers:      true !default;\n$enable-rfs:                  true !default;\n$enable-validation-icons:     true !default;\n$enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities:  true !default;\n\n// Prefix for :root CSS variables\n\n$variable-prefix:             bs- !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg:                   $white !default;\n$body-color:                $gray-900 !default;\n$body-text-align:           null !default;\n\n// Utilities maps\n//\n// Extends the default `$theme-colors` maps to help create our utilities.\n\n// scss-docs-start utilities-colors\n$utilities-colors: map-merge(\n  $theme-colors-rgb,\n  (\n    \"black\": to-rgb($black),\n    \"white\": to-rgb($white),\n    \"body\":  to-rgb($body-color)\n  )\n) !default;\n// scss-docs-end utilities-colors\n\n// scss-docs-start utilities-text-colors\n$utilities-text-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"text\") !default;\n// scss-docs-end utilities-text-colors\n\n// scss-docs-start utilities-bg-colors\n$utilities-bg-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"bg\") !default;\n// scss-docs-end utilities-bg-colors\n\n// Links\n//\n// Style anchor elements.\n\n$link-color:                              $primary !default;\n$link-decoration:                         underline !default;\n$link-shade-percentage:                   20% !default;\n$link-hover-color:                        shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration:                   null !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 992px,\n  xl: 1200px,\n  xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1140px,\n  xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns:                12 !default;\n$grid-gutter-width:           1.5rem !default;\n$grid-row-columns:            6 !default;\n\n$gutters: $spacers !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width * .5 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n\n$border-color:                $gray-300 !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius:               .25rem !default;\n$border-radius-sm:            .2rem !default;\n$border-radius-lg:            .3rem !default;\n$border-radius-pill:          50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow:                  0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm:               0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg:               0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset:            inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color:      $white !default;\n$component-active-bg:         $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width:                 .3em !default;\n$caret-vertical-align:        $caret-width * .85 !default;\n$caret-spacing:               $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"1x1\": 100%,\n  \"4x3\": calc(3 / 4 * 100%),\n  \"16x9\": calc(9 / 16 * 100%),\n  \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif:      system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base:            var(--#{$variable-prefix}font-sans-serif) !default;\n$font-family-code:            var(--#{$variable-prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root:              null !default;\n$font-size-base:              1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm:                $font-size-base * .875 !default;\n$font-size-lg:                $font-size-base * 1.25 !default;\n\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n\n$h1-font-size:                $font-size-base * 2.5 !default;\n$h2-font-size:                $font-size-base * 2 !default;\n$h3-font-size:                $font-size-base * 1.75 !default;\n$h4-font-size:                $font-size-base * 1.5 !default;\n$h5-font-size:                $font-size-base * 1.25 !default;\n$h6-font-size:                $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n  1: $h1-font-size,\n  2: $h2-font-size,\n  3: $h3-font-size,\n  4: $h4-font-size,\n  5: $h5-font-size,\n  6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n  1: 5rem,\n  2: 4.5rem,\n  3: 4rem,\n  4: 3.5rem,\n  5: 3rem,\n  6: 2.5rem\n) !default;\n\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size:              $font-size-base * 1.25 !default;\n$lead-font-weight:            300 !default;\n\n$small-font-size:             .875em !default;\n\n$sub-sup-font-size:           .75em !default;\n\n$text-muted:                  $gray-600 !default;\n\n$initialism-font-size:        $small-font-size !default;\n\n$blockquote-margin-y:         $spacer !default;\n$blockquote-font-size:        $font-size-base * 1.25 !default;\n$blockquote-footer-color:     $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y:                 $spacer !default;\n$hr-color:                    inherit !default;\n$hr-height:                   $border-width !default;\n$hr-opacity:                  .25 !default;\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$mark-padding:                .2em !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n$nested-kbd-font-weight:      $font-weight-bold !default;\n\n$list-inline-padding:         .5rem !default;\n\n$mark-bg:                     #fcf8e3 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y:        .5rem !default;\n$table-cell-padding-x:        .5rem !default;\n$table-cell-padding-y-sm:     .25rem !default;\n$table-cell-padding-x-sm:     .25rem !default;\n\n$table-cell-vertical-align:   top !default;\n\n$table-color:                 $body-color !default;\n$table-bg:                    transparent !default;\n$table-accent-bg:             transparent !default;\n\n$table-th-font-weight:        null !default;\n\n$table-striped-color:         $table-color !default;\n$table-striped-bg-factor:     .05 !default;\n$table-striped-bg:            rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color:          $table-color !default;\n$table-active-bg-factor:      .1 !default;\n$table-active-bg:             rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color:           $table-color !default;\n$table-hover-bg-factor:       .075 !default;\n$table-hover-bg:              rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor:         .1 !default;\n$table-border-width:          $border-width !default;\n$table-border-color:          $border-color !default;\n\n$table-striped-order:         odd !default;\n\n$table-group-separator-color: currentColor !default;\n\n$table-caption-color:         $text-muted !default;\n\n$table-bg-scale:              -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n  \"primary\":    shift-color($primary, $table-bg-scale),\n  \"secondary\":  shift-color($secondary, $table-bg-scale),\n  \"success\":    shift-color($success, $table-bg-scale),\n  \"info\":       shift-color($info, $table-bg-scale),\n  \"warning\":    shift-color($warning, $table-bg-scale),\n  \"danger\":     shift-color($danger, $table-bg-scale),\n  \"light\":      $light,\n  \"dark\":       $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y:         .375rem !default;\n$input-btn-padding-x:         .75rem !default;\n$input-btn-font-family:       null !default;\n$input-btn-font-size:         $font-size-base !default;\n$input-btn-line-height:       $line-height-base !default;\n\n$input-btn-focus-width:         .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color:         rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur:          0 !default;\n$input-btn-focus-box-shadow:    0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm:      .25rem !default;\n$input-btn-padding-x-sm:      .5rem !default;\n$input-btn-font-size-sm:      $font-size-sm !default;\n\n$input-btn-padding-y-lg:      .5rem !default;\n$input-btn-padding-x-lg:      1rem !default;\n$input-btn-font-size-lg:      $font-size-lg !default;\n\n$input-btn-border-width:      $border-width !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y:               $input-btn-padding-y !default;\n$btn-padding-x:               $input-btn-padding-x !default;\n$btn-font-family:             $input-btn-font-family !default;\n$btn-font-size:               $input-btn-font-size !default;\n$btn-line-height:             $input-btn-line-height !default;\n$btn-white-space:             null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm:            $input-btn-padding-y-sm !default;\n$btn-padding-x-sm:            $input-btn-padding-x-sm !default;\n$btn-font-size-sm:            $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg:            $input-btn-padding-y-lg !default;\n$btn-padding-x-lg:            $input-btn-padding-x-lg !default;\n$btn-font-size-lg:            $input-btn-font-size-lg !default;\n\n$btn-border-width:            $input-btn-border-width !default;\n\n$btn-font-weight:             $font-weight-normal !default;\n$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width:             $input-btn-focus-width !default;\n$btn-focus-box-shadow:        $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity:        .65 !default;\n$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color:              $link-color !default;\n$btn-link-hover-color:        $link-hover-color !default;\n$btn-link-disabled-color:     $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius:           $border-radius !default;\n$btn-border-radius-sm:        $border-radius-sm !default;\n$btn-border-radius-lg:        $border-radius-lg !default;\n\n$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount:       15% !default;\n$btn-hover-bg-tint-amount:        15% !default;\n$btn-hover-border-shade-amount:   20% !default;\n$btn-hover-border-tint-amount:    10% !default;\n$btn-active-bg-shade-amount:      20% !default;\n$btn-active-bg-tint-amount:       20% !default;\n$btn-active-border-shade-amount:  25% !default;\n$btn-active-border-tint-amount:   10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top:                  .25rem !default;\n$form-text-font-size:                   $small-font-size !default;\n$form-text-font-style:                  null !default;\n$form-text-font-weight:                 null !default;\n$form-text-color:                       $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom:              .5rem !default;\n$form-label-font-size:                  null !default;\n$form-label-font-style:                 null !default;\n$form-label-font-weight:                null !default;\n$form-label-color:                      null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y:                       $input-btn-padding-y !default;\n$input-padding-x:                       $input-btn-padding-x !default;\n$input-font-family:                     $input-btn-font-family !default;\n$input-font-size:                       $input-btn-font-size !default;\n$input-font-weight:                     $font-weight-base !default;\n$input-line-height:                     $input-btn-line-height !default;\n\n$input-padding-y-sm:                    $input-btn-padding-y-sm !default;\n$input-padding-x-sm:                    $input-btn-padding-x-sm !default;\n$input-font-size-sm:                    $input-btn-font-size-sm !default;\n\n$input-padding-y-lg:                    $input-btn-padding-y-lg !default;\n$input-padding-x-lg:                    $input-btn-padding-x-lg !default;\n$input-font-size-lg:                    $input-btn-font-size-lg !default;\n\n$input-bg:                              $body-bg !default;\n$input-disabled-bg:                     $gray-200 !default;\n$input-disabled-border-color:           null !default;\n\n$input-color:                           $body-color !default;\n$input-border-color:                    $gray-400 !default;\n$input-border-width:                    $input-btn-border-width !default;\n$input-box-shadow:                      $box-shadow-inset !default;\n\n$input-border-radius:                   $border-radius !default;\n$input-border-radius-sm:                $border-radius-sm !default;\n$input-border-radius-lg:                $border-radius-lg !default;\n\n$input-focus-bg:                        $input-bg !default;\n$input-focus-border-color:              tint-color($component-active-bg, 50%) !default;\n$input-focus-color:                     $input-color !default;\n$input-focus-width:                     $input-btn-focus-width !default;\n$input-focus-box-shadow:                $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color:               $gray-600 !default;\n$input-plaintext-color:                 $body-color !default;\n\n$input-height-border:                   $input-border-width * 2 !default;\n\n$input-height-inner:                    add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half:               add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter:            add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height:                          add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm:                       add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg:                       add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width:                      3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width:                  1em !default;\n$form-check-min-height:                   $font-size-base * $line-height-base !default;\n$form-check-padding-start:                $form-check-input-width + .5em !default;\n$form-check-margin-bottom:                .125rem !default;\n$form-check-label-color:                  null !default;\n$form-check-label-cursor:                 null !default;\n$form-check-transition:                   null !default;\n\n$form-check-input-active-filter:          brightness(90%) !default;\n\n$form-check-input-bg:                     $input-bg !default;\n$form-check-input-border:                 1px solid rgba($black, .25) !default;\n$form-check-input-border-radius:          .25em !default;\n$form-check-radio-border-radius:          50% !default;\n$form-check-input-focus-border:           $input-focus-border-color !default;\n$form-check-input-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color:          $component-active-color !default;\n$form-check-input-checked-bg-color:       $component-active-bg !default;\n$form-check-input-checked-border-color:   $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-checked-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/></svg>\") !default;\n$form-check-radio-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$form-check-input-checked-color}'/></svg>\") !default;\n\n$form-check-input-indeterminate-color:          $component-active-color !default;\n$form-check-input-indeterminate-bg-color:       $component-active-bg !default;\n$form-check-input-indeterminate-border-color:   $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-indeterminate-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>\") !default;\n\n$form-check-input-disabled-opacity:        .5 !default;\n$form-check-label-disabled-opacity:        $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity:    $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end:    1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color:               rgba(0, 0, 0, .25) !default;\n$form-switch-width:               2em !default;\n$form-switch-padding-start:       $form-switch-width + .5em !default;\n$form-switch-bg-image:            url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>\") !default;\n$form-switch-border-radius:       $form-switch-width !default;\n$form-switch-transition:          background-position .15s ease-in-out !default;\n\n$form-switch-focus-color:         $input-focus-border-color !default;\n$form-switch-focus-bg-image:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-focus-color}'/></svg>\") !default;\n\n$form-switch-checked-color:       $component-active-color !default;\n$form-switch-checked-bg-image:    url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y:           $input-padding-y !default;\n$input-group-addon-padding-x:           $input-padding-x !default;\n$input-group-addon-font-weight:         $input-font-weight !default;\n$input-group-addon-color:               $input-color !default;\n$input-group-addon-bg:                  $gray-200 !default;\n$input-group-addon-border-color:        $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y:             $input-padding-y !default;\n$form-select-padding-x:             $input-padding-x !default;\n$form-select-font-family:           $input-font-family !default;\n$form-select-font-size:             $input-font-size !default;\n$form-select-indicator-padding:     $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight:           $input-font-weight !default;\n$form-select-line-height:           $input-line-height !default;\n$form-select-color:                 $input-color !default;\n$form-select-bg:                    $input-bg !default;\n$form-select-disabled-color:        null !default;\n$form-select-disabled-bg:           $gray-200 !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position:           right $form-select-padding-x center !default;\n$form-select-bg-size:               16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color:       $gray-800 !default;\n$form-select-indicator:             url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/></svg>\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position:    center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size:        $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width:        $input-border-width !default;\n$form-select-border-color:        $input-border-color !default;\n$form-select-border-radius:       $border-radius !default;\n$form-select-box-shadow:          $box-shadow-inset !default;\n\n$form-select-focus-border-color:  $input-focus-border-color !default;\n$form-select-focus-width:         $input-focus-width !default;\n$form-select-focus-box-shadow:    0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm:        $input-padding-y-sm !default;\n$form-select-padding-x-sm:        $input-padding-x-sm !default;\n$form-select-font-size-sm:        $input-font-size-sm !default;\n\n$form-select-padding-y-lg:        $input-padding-y-lg !default;\n$form-select-padding-x-lg:        $input-padding-x-lg !default;\n$form-select-font-size-lg:        $input-font-size-lg !default;\n\n$form-select-transition:          $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width:          100% !default;\n$form-range-track-height:         .5rem !default;\n$form-range-track-cursor:         pointer !default;\n$form-range-track-bg:             $gray-300 !default;\n$form-range-track-border-radius:  1rem !default;\n$form-range-track-box-shadow:     $box-shadow-inset !default;\n\n$form-range-thumb-width:                   1rem !default;\n$form-range-thumb-height:                  $form-range-thumb-width !default;\n$form-range-thumb-bg:                      $component-active-bg !default;\n$form-range-thumb-border:                  0 !default;\n$form-range-thumb-border-radius:           1rem !default;\n$form-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width:  $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg:               tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg:             $gray-500 !default;\n$form-range-thumb-transition:              background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color:          $input-color !default;\n$form-file-button-bg:             $input-group-addon-bg !default;\n$form-file-button-hover-bg:       shade-color($form-file-button-bg, 5%) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height:            add(3.5rem, $input-height-border) !default;\n$form-floating-line-height:       1.25 !default;\n$form-floating-padding-x:         $input-padding-x !default;\n$form-floating-padding-y:         1rem !default;\n$form-floating-input-padding-t:   1.625rem !default;\n$form-floating-input-padding-b:   .625rem !default;\n$form-floating-label-opacity:     .65 !default;\n$form-floating-label-transform:   scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-transition:        opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top:          $form-text-margin-top !default;\n$form-feedback-font-size:           $form-text-font-size !default;\n$form-feedback-font-style:          $form-text-font-style !default;\n$form-feedback-valid-color:         $success !default;\n$form-feedback-invalid-color:       $danger !default;\n\n$form-feedback-icon-valid-color:    $form-feedback-valid-color !default;\n$form-feedback-icon-valid:          url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>\") !default;\n$form-feedback-icon-invalid-color:  $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid:        url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n  \"valid\": (\n    \"color\": $form-feedback-valid-color,\n    \"icon\": $form-feedback-icon-valid\n  ),\n  \"invalid\": (\n    \"color\": $form-feedback-invalid-color,\n    \"icon\": $form-feedback-icon-invalid\n  )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown:                   1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-modal-backdrop:             1050 !default;\n$zindex-modal:                      1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n// scss-docs-end zindex-stack\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y:                .5rem !default;\n$nav-link-padding-x:                1rem !default;\n$nav-link-font-size:                null !default;\n$nav-link-font-weight:              null !default;\n$nav-link-color:                    $link-color !default;\n$nav-link-hover-color:              $link-hover-color !default;\n$nav-link-transition:               color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color:           $gray-600 !default;\n\n$nav-tabs-border-color:             $gray-300 !default;\n$nav-tabs-border-width:             $border-width !default;\n$nav-tabs-border-radius:            $border-radius !default;\n$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color:        $gray-700 !default;\n$nav-tabs-link-active-bg:           $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius:           $border-radius !default;\n$nav-pills-link-active-color:       $component-active-color !default;\n$nav-pills-link-active-bg:          $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y:                  $spacer * .5 !default;\n$navbar-padding-x:                  null !default;\n\n$navbar-nav-link-padding-x:         .5rem !default;\n\n$navbar-brand-font-size:            $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height:                   $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end:           1rem !default;\n\n$navbar-toggler-padding-y:          .25rem !default;\n$navbar-toggler-padding-x:          .75rem !default;\n$navbar-toggler-font-size:          $font-size-lg !default;\n$navbar-toggler-border-radius:      $btn-border-radius !default;\n$navbar-toggler-focus-width:        $btn-focus-width !default;\n$navbar-toggler-transition:         box-shadow .15s ease-in-out !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-theme-variables\n$navbar-dark-color:                 rgba($white, .55) !default;\n$navbar-dark-hover-color:           rgba($white, .75) !default;\n$navbar-dark-active-color:          $white !default;\n$navbar-dark-disabled-color:        rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-dark-toggler-border-color:  rgba($white, .1) !default;\n\n$navbar-light-color:                rgba($black, .55) !default;\n$navbar-light-hover-color:          rgba($black, .7) !default;\n$navbar-light-active-color:         rgba($black, .9) !default;\n$navbar-light-disabled-color:       rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color:                $navbar-light-active-color !default;\n$navbar-light-brand-hover-color:          $navbar-light-active-color !default;\n$navbar-dark-brand-color:                 $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color:           $navbar-dark-active-color !default;\n// scss-docs-end navbar-theme-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width:                10rem !default;\n$dropdown-padding-x:                0 !default;\n$dropdown-padding-y:                .5rem !default;\n$dropdown-spacer:                   .125rem !default;\n$dropdown-font-size:                $font-size-base !default;\n$dropdown-color:                    $body-color !default;\n$dropdown-bg:                       $white !default;\n$dropdown-border-color:             rgba($black, .15) !default;\n$dropdown-border-radius:            $border-radius !default;\n$dropdown-border-width:             $border-width !default;\n$dropdown-inner-border-radius:      subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg:               $dropdown-border-color !default;\n$dropdown-divider-margin-y:         $spacer * .5 !default;\n$dropdown-box-shadow:               $box-shadow !default;\n\n$dropdown-link-color:               $gray-900 !default;\n$dropdown-link-hover-color:         shade-color($gray-900, 10%) !default;\n$dropdown-link-hover-bg:            $gray-200 !default;\n\n$dropdown-link-active-color:        $component-active-color !default;\n$dropdown-link-active-bg:           $component-active-bg !default;\n\n$dropdown-link-disabled-color:      $gray-500 !default;\n\n$dropdown-item-padding-y:           $spacer * .25 !default;\n$dropdown-item-padding-x:           $spacer !default;\n\n$dropdown-header-color:             $gray-600 !default;\n$dropdown-header-padding:           $dropdown-padding-y $dropdown-item-padding-x !default;\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color:               $gray-300 !default;\n$dropdown-dark-bg:                  $gray-800 !default;\n$dropdown-dark-border-color:        $dropdown-border-color !default;\n$dropdown-dark-divider-bg:          $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow:          null !default;\n$dropdown-dark-link-color:          $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color:    $white !default;\n$dropdown-dark-link-hover-bg:       rgba($white, .15) !default;\n$dropdown-dark-link-active-color:   $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg:      $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color:        $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y:              .375rem !default;\n$pagination-padding-x:              .75rem !default;\n$pagination-padding-y-sm:           .25rem !default;\n$pagination-padding-x-sm:           .5rem !default;\n$pagination-padding-y-lg:           .75rem !default;\n$pagination-padding-x-lg:           1.5rem !default;\n\n$pagination-color:                  $link-color !default;\n$pagination-bg:                     $white !default;\n$pagination-border-width:           $border-width !default;\n$pagination-border-radius:          $border-radius !default;\n$pagination-margin-start:           -$pagination-border-width !default;\n$pagination-border-color:           $gray-300 !default;\n\n$pagination-focus-color:            $link-hover-color !default;\n$pagination-focus-bg:               $gray-200 !default;\n$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n$pagination-focus-outline:          0 !default;\n\n$pagination-hover-color:            $link-hover-color !default;\n$pagination-hover-bg:               $gray-200 !default;\n$pagination-hover-border-color:     $gray-300 !default;\n\n$pagination-active-color:           $component-active-color !default;\n$pagination-active-bg:              $component-active-bg !default;\n$pagination-active-border-color:    $pagination-active-bg !default;\n\n$pagination-disabled-color:         $gray-600 !default;\n$pagination-disabled-bg:            $white !default;\n$pagination-disabled-border-color:  $gray-300 !default;\n\n$pagination-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm:       $border-radius-sm !default;\n$pagination-border-radius-lg:       $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max:           .5 !default;\n$placeholder-opacity-min:           .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y:                     $spacer !default;\n$card-spacer-x:                     $spacer !default;\n$card-title-spacer-y:               $spacer * .5 !default;\n$card-border-width:                 $border-width !default;\n$card-border-color:                 rgba($black, .125) !default;\n$card-border-radius:                $border-radius !default;\n$card-box-shadow:                   null !default;\n$card-inner-border-radius:          subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y:                $card-spacer-y * .5 !default;\n$card-cap-padding-x:                $card-spacer-x !default;\n$card-cap-bg:                       rgba($black, .03) !default;\n$card-cap-color:                    null !default;\n$card-height:                       null !default;\n$card-color:                        null !default;\n$card-bg:                           $white !default;\n$card-img-overlay-padding:          $spacer !default;\n$card-group-margin:                 $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y:                     1rem !default;\n$accordion-padding-x:                     1.25rem !default;\n$accordion-color:                         $body-color !default;\n$accordion-bg:                            $body-bg !default;\n$accordion-border-width:                  $border-width !default;\n$accordion-border-color:                  rgba($black, .125) !default;\n$accordion-border-radius:                 $border-radius !default;\n$accordion-inner-border-radius:           subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y:                $accordion-padding-y !default;\n$accordion-body-padding-x:                $accordion-padding-x !default;\n\n$accordion-button-padding-y:              $accordion-padding-y !default;\n$accordion-button-padding-x:              $accordion-padding-x !default;\n$accordion-button-color:                  $accordion-color !default;\n$accordion-button-bg:                     $accordion-bg !default;\n$accordion-transition:                    $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg:              tint-color($component-active-bg, 90%) !default;\n$accordion-button-active-color:           shade-color($primary, 10%) !default;\n\n$accordion-button-focus-border-color:     $input-focus-border-color !default;\n$accordion-button-focus-box-shadow:       $btn-focus-box-shadow !default;\n\n$accordion-icon-width:                    1.25rem !default;\n$accordion-icon-color:                    $accordion-button-color !default;\n$accordion-icon-active-color:             $accordion-button-active-color !default;\n$accordion-icon-transition:               transform .2s ease-in-out !default;\n$accordion-icon-transform:                rotate(-180deg) !default;\n\n$accordion-button-icon:         url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n$accordion-button-active-icon:  url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size:                 $font-size-sm !default;\n$tooltip-max-width:                 200px !default;\n$tooltip-color:                     $white !default;\n$tooltip-bg:                        $black !default;\n$tooltip-border-radius:             $border-radius !default;\n$tooltip-opacity:                   .9 !default;\n$tooltip-padding-y:                 $spacer * .25 !default;\n$tooltip-padding-x:                 $spacer * .5 !default;\n$tooltip-margin:                    0 !default;\n\n$tooltip-arrow-width:               .8rem !default;\n$tooltip-arrow-height:              .4rem !default;\n$tooltip-arrow-color:               $tooltip-bg !default;\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y:     $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x:     $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size:     $tooltip-font-size !default;\n$form-feedback-tooltip-line-height:   null !default;\n$form-feedback-tooltip-opacity:       $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size:                 $font-size-sm !default;\n$popover-bg:                        $white !default;\n$popover-max-width:                 276px !default;\n$popover-border-width:              $border-width !default;\n$popover-border-color:              rgba($black, .2) !default;\n$popover-border-radius:             $border-radius-lg !default;\n$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow:                $box-shadow !default;\n\n$popover-header-bg:                 shade-color($popover-bg, 6%) !default;\n$popover-header-color:              $headings-color !default;\n$popover-header-padding-y:          .5rem !default;\n$popover-header-padding-x:          $spacer !default;\n\n$popover-body-color:                $body-color !default;\n$popover-body-padding-y:            $spacer !default;\n$popover-body-padding-x:            $spacer !default;\n\n$popover-arrow-width:               1rem !default;\n$popover-arrow-height:              .5rem !default;\n$popover-arrow-color:               $popover-bg !default;\n\n$popover-arrow-outer-color:         fade-in($popover-border-color, .05) !default;\n// scss-docs-end popover-variables\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width:                   350px !default;\n$toast-padding-x:                   .75rem !default;\n$toast-padding-y:                   .5rem !default;\n$toast-font-size:                   .875rem !default;\n$toast-color:                       null !default;\n$toast-background-color:            rgba($white, .85) !default;\n$toast-border-width:                1px !default;\n$toast-border-color:                rgba(0, 0, 0, .1) !default;\n$toast-border-radius:               $border-radius !default;\n$toast-box-shadow:                  $box-shadow !default;\n$toast-spacing:                     $container-padding-x !default;\n\n$toast-header-color:                $gray-600 !default;\n$toast-header-background-color:     rgba($white, .85) !default;\n$toast-header-border-color:         rgba(0, 0, 0, .05) !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size:                   .75em !default;\n$badge-font-weight:                 $font-weight-bold !default;\n$badge-color:                       $white !default;\n$badge-padding-y:                   .35em !default;\n$badge-padding-x:                   .65em !default;\n$badge-border-radius:               $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding:               $spacer !default;\n\n$modal-footer-margin-between:       .5rem !default;\n\n$modal-dialog-margin:               .5rem !default;\n$modal-dialog-margin-y-sm-up:       1.75rem !default;\n\n$modal-title-line-height:           $line-height-base !default;\n\n$modal-content-color:               null !default;\n$modal-content-bg:                  $white !default;\n$modal-content-border-color:        rgba($black, .2) !default;\n$modal-content-border-width:        $border-width !default;\n$modal-content-border-radius:       $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs:       $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up:    $box-shadow !default;\n\n$modal-backdrop-bg:                 $black !default;\n$modal-backdrop-opacity:            .5 !default;\n$modal-header-border-color:         $border-color !default;\n$modal-footer-border-color:         $modal-header-border-color !default;\n$modal-header-border-width:         $modal-content-border-width !default;\n$modal-footer-border-width:         $modal-header-border-width !default;\n$modal-header-padding-y:            $modal-inner-padding !default;\n$modal-header-padding-x:            $modal-inner-padding !default;\n$modal-header-padding:              $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-sm:                          300px !default;\n$modal-md:                          500px !default;\n$modal-lg:                          800px !default;\n$modal-xl:                          1140px !default;\n\n$modal-fade-transform:              translate(0, -50px) !default;\n$modal-show-transform:              none !default;\n$modal-transition:                  transform .3s ease-out !default;\n$modal-scale-transform:             scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y:               $spacer !default;\n$alert-padding-x:               $spacer !default;\n$alert-margin-bottom:           1rem !default;\n$alert-border-radius:           $border-radius !default;\n$alert-link-font-weight:        $font-weight-bold !default;\n$alert-border-width:            $border-width !default;\n$alert-bg-scale:                -80% !default;\n$alert-border-scale:            -70% !default;\n$alert-color-scale:             40% !default;\n$alert-dismissible-padding-r:   $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height:                   1rem !default;\n$progress-font-size:                $font-size-base * .75 !default;\n$progress-bg:                       $gray-200 !default;\n$progress-border-radius:            $border-radius !default;\n$progress-box-shadow:               $box-shadow-inset !default;\n$progress-bar-color:                $white !default;\n$progress-bar-bg:                   $primary !default;\n$progress-bar-animation-timing:     1s linear infinite !default;\n$progress-bar-transition:           width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color:                  $gray-900 !default;\n$list-group-bg:                     $white !default;\n$list-group-border-color:           rgba($black, .125) !default;\n$list-group-border-width:           $border-width !default;\n$list-group-border-radius:          $border-radius !default;\n\n$list-group-item-padding-y:         $spacer * .5 !default;\n$list-group-item-padding-x:         $spacer !default;\n$list-group-item-bg-scale:          -80% !default;\n$list-group-item-color-scale:       40% !default;\n\n$list-group-hover-bg:               $gray-100 !default;\n$list-group-active-color:           $component-active-color !default;\n$list-group-active-bg:              $component-active-bg !default;\n$list-group-active-border-color:    $list-group-active-bg !default;\n\n$list-group-disabled-color:         $gray-600 !default;\n$list-group-disabled-bg:            $list-group-bg !default;\n\n$list-group-action-color:           $gray-700 !default;\n$list-group-action-hover-color:     $list-group-action-color !default;\n\n$list-group-action-active-color:    $body-color !default;\n$list-group-action-active-bg:       $gray-200 !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding:                 .25rem !default;\n$thumbnail-bg:                      $body-bg !default;\n$thumbnail-border-width:            $border-width !default;\n$thumbnail-border-color:            $gray-300 !default;\n$thumbnail-border-radius:           $border-radius !default;\n$thumbnail-box-shadow:              $box-shadow-sm !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size:          $small-font-size !default;\n$figure-caption-color:              $gray-600 !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size:              null !default;\n$breadcrumb-padding-y:              0 !default;\n$breadcrumb-padding-x:              0 !default;\n$breadcrumb-item-padding-x:         .5rem !default;\n$breadcrumb-margin-bottom:          1rem !default;\n$breadcrumb-bg:                     null !default;\n$breadcrumb-divider-color:          $gray-600 !default;\n$breadcrumb-active-color:           $gray-600 !default;\n$breadcrumb-divider:                quote(\"/\") !default;\n$breadcrumb-divider-flipped:        $breadcrumb-divider !default;\n$breadcrumb-border-radius:          null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color:             $white !default;\n$carousel-control-width:             15% !default;\n$carousel-control-opacity:           .5 !default;\n$carousel-control-hover-opacity:     .9 !default;\n$carousel-control-transition:        opacity .15s ease !default;\n\n$carousel-indicator-width:           30px !default;\n$carousel-indicator-height:          3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer:          3px !default;\n$carousel-indicator-opacity:         .5 !default;\n$carousel-indicator-active-bg:       $white !default;\n$carousel-indicator-active-opacity:  1 !default;\n$carousel-indicator-transition:      opacity .6s ease !default;\n\n$carousel-caption-width:             70% !default;\n$carousel-caption-color:             $white !default;\n$carousel-caption-padding-y:         1.25rem !default;\n$carousel-caption-spacer:            1.25rem !default;\n\n$carousel-control-icon-width:        2rem !default;\n\n$carousel-control-prev-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>\") !default;\n$carousel-control-next-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n\n$carousel-transition-duration:       .6s !default;\n$carousel-transition:                transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n$carousel-dark-indicator-active-bg:  $black !default;\n$carousel-dark-caption-color:        $black !default;\n$carousel-dark-control-icon-filter:  invert(1) grayscale(100) !default;\n// scss-docs-end carousel-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width:           2rem !default;\n$spinner-height:          $spinner-width !default;\n$spinner-vertical-align:  -.125em !default;\n$spinner-border-width:    .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm:        1rem !default;\n$spinner-height-sm:       $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width:            1em !default;\n$btn-close-height:           $btn-close-width !default;\n$btn-close-padding-x:        .25em !default;\n$btn-close-padding-y:        $btn-close-padding-x !default;\n$btn-close-color:            $black !default;\n$btn-close-bg:               url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/></svg>\") !default;\n$btn-close-focus-shadow:     $input-btn-focus-box-shadow !default;\n$btn-close-opacity:          .5 !default;\n$btn-close-hover-opacity:    .75 !default;\n$btn-close-focus-opacity:    1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter:     invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y:               $modal-inner-padding !default;\n$offcanvas-padding-x:               $modal-inner-padding !default;\n$offcanvas-horizontal-width:        400px !default;\n$offcanvas-vertical-height:         30vh !default;\n$offcanvas-transition-duration:     .3s !default;\n$offcanvas-border-color:            $modal-content-border-color !default;\n$offcanvas-border-width:            $modal-content-border-width !default;\n$offcanvas-title-line-height:       $modal-title-line-height !default;\n$offcanvas-bg-color:                $modal-content-bg !default;\n$offcanvas-color:                   $modal-content-color !default;\n$offcanvas-box-shadow:              $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg:             $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity:        $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size:                    $small-font-size !default;\n$code-color:                        $pink !default;\n\n$kbd-padding-y:                     .2rem !default;\n$kbd-padding-x:                     .4rem !default;\n$kbd-font-size:                     $code-font-size !default;\n$kbd-color:                         $white !default;\n$kbd-bg:                            $gray-900 !default;\n\n$pre-color:                         null !default;\n","// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if type-of($value) == number {\n      $return: append($return, max($value, 0));\n    } @else {\n      $return: append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n","//\n// Headings\n//\n.h1 {\n  @extend h1;\n}\n\n.h2 {\n  @extend h2;\n}\n\n.h3 {\n  @extend h3;\n}\n\n.h4 {\n  @extend h4;\n}\n\n.h5 {\n  @extend h5;\n}\n\n.h6 {\n  @extend h6;\n}\n\n\n.lead {\n  @include font-size($lead-font-size);\n  font-weight: $lead-font-weight;\n}\n\n// Type display classes\n@each $display, $font-size in $display-font-sizes {\n  .display-#{$display} {\n    @include font-size($font-size);\n    font-weight: $display-font-weight;\n    line-height: $display-line-height;\n  }\n}\n\n//\n// Emphasis\n//\n.small {\n  @extend small;\n}\n\n.mark {\n  @extend mark;\n}\n\n//\n// Lists\n//\n\n.list-unstyled {\n  @include list-unstyled();\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  @include list-unstyled();\n}\n.list-inline-item {\n  display: inline-block;\n\n  &:not(:last-child) {\n    margin-right: $list-inline-padding;\n  }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n  @include font-size($initialism-font-size);\n  text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n  margin-bottom: $blockquote-margin-y;\n  @include font-size($blockquote-font-size);\n\n  > :last-child {\n    margin-bottom: 0;\n  }\n}\n\n.blockquote-footer {\n  margin-top: -$blockquote-margin-y;\n  margin-bottom: $blockquote-margin-y;\n  @include font-size($blockquote-footer-font-size);\n  color: $blockquote-footer-color;\n\n  &::before {\n    content: \"\\2014\\00A0\"; // em dash, nbsp\n  }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n  @include img-fluid();\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n  padding: $thumbnail-padding;\n  background-color: $thumbnail-bg;\n  border: $thumbnail-border-width solid $thumbnail-border-color;\n  @include border-radius($thumbnail-border-radius);\n  @include box-shadow($thumbnail-box-shadow);\n\n  // Keep them at most 100% wide\n  @include img-fluid();\n}\n\n//\n// Figures\n//\n\n.figure {\n  // Ensures the caption's text aligns with the image.\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: $spacer * .5;\n  line-height: 1;\n}\n\n.figure-caption {\n  @include font-size($figure-caption-font-size);\n  color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n  // Part 1: Set a maximum relative to the parent\n  max-width: 100%;\n  // Part 2: Override the height to auto, otherwise images will be stretched\n  // when setting a width and height attribute on the img element.\n  height: auto;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n  // Single container class with breakpoint max-widths\n  .container,\n  // 100% wide container at all breakpoints\n  .container-fluid {\n    @include make-container();\n  }\n\n  // Responsive containers that are 100% wide until a breakpoint\n  @each $breakpoint, $container-max-width in $container-max-widths {\n    .container-#{$breakpoint} {\n      @extend .container-fluid;\n    }\n\n    @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n      %responsive-container-#{$breakpoint} {\n        max-width: $container-max-width;\n      }\n\n      // Extend each breakpoint which is smaller or equal to the current breakpoint\n      $extend-breakpoint: true;\n\n      @each $name, $width in $grid-breakpoints {\n        @if ($extend-breakpoint) {\n          .container#{breakpoint-infix($name, $grid-breakpoints)} {\n            @extend %responsive-container-#{$breakpoint};\n          }\n\n          // Once the current breakpoint is reached, stop extending\n          @if ($breakpoint == $name) {\n            $extend-breakpoint: false;\n          }\n        }\n      }\n    }\n  }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  width: 100%;\n  padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  margin-right: auto;\n  margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n  $n: index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n  }\n  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n  $min: map-get($breakpoints, $name);\n  @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n  $max: map-get($breakpoints, $name);\n  @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n  @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n  .row {\n    @include make-row();\n\n    > * {\n      @include make-col-ready();\n    }\n  }\n}\n\n@if $enable-cssgrid {\n  .grid {\n    display: grid;\n    grid-template-rows: repeat(var(--#{$variable-prefix}rows, 1), 1fr);\n    grid-template-columns: repeat(var(--#{$variable-prefix}columns, #{$grid-columns}), 1fr);\n    gap: var(--#{$variable-prefix}gap, #{$grid-gutter-width});\n\n    @include make-cssgrid();\n  }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n  @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n  --#{$variable-prefix}gutter-x: #{$gutter};\n  --#{$variable-prefix}gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list\n  margin-right: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n  margin-left: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n  // Add box sizing if only the grid is loaded\n  box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-right: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  padding-left: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  margin-top: var(--#{$variable-prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: percentage(divide($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: divide($size, $columns);\n  margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: divide(100%, $count);\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is and invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","//\n// Basic Bootstrap table\n//\n\n.table {\n  --#{$variable-prefix}table-bg: #{$table-bg};\n  --#{$variable-prefix}table-accent-bg: #{$table-accent-bg};\n  --#{$variable-prefix}table-striped-color: #{$table-striped-color};\n  --#{$variable-prefix}table-striped-bg: #{$table-striped-bg};\n  --#{$variable-prefix}table-active-color: #{$table-active-color};\n  --#{$variable-prefix}table-active-bg: #{$table-active-bg};\n  --#{$variable-prefix}table-hover-color: #{$table-hover-color};\n  --#{$variable-prefix}table-hover-bg: #{$table-hover-bg};\n\n  width: 100%;\n  margin-bottom: $spacer;\n  color: $table-color;\n  vertical-align: $table-cell-vertical-align;\n  border-color: $table-border-color;\n\n  // Target th & td\n  // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.\n  // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).\n  // Another advantage is that this generates less code and makes the selector less specific making it easier to override.\n  // stylelint-disable-next-line selector-max-universal\n  > :not(caption) > * > * {\n    padding: $table-cell-padding-y $table-cell-padding-x;\n    background-color: var(--#{$variable-prefix}table-bg);\n    border-bottom-width: $table-border-width;\n    box-shadow: inset 0 0 0 9999px var(--#{$variable-prefix}table-accent-bg);\n  }\n\n  > tbody {\n    vertical-align: inherit;\n  }\n\n  > thead {\n    vertical-align: bottom;\n  }\n\n  // Highlight border color between thead, tbody and tfoot.\n  > :not(:last-child) > :last-child > * {\n    border-bottom-color: $table-group-separator-color;\n  }\n}\n\n\n//\n// Change placement of captions with a class\n//\n\n.caption-top {\n  caption-side: top;\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n  // stylelint-disable-next-line selector-max-universal\n  > :not(caption) > * > * {\n    padding: $table-cell-padding-y-sm $table-cell-padding-x-sm;\n  }\n}\n\n\n// Border versions\n//\n// Add or remove borders all around the table and between all the columns.\n//\n// When borders are added on all sides of the cells, the corners can render odd when\n// these borders do not have the same color or if they are semi-transparent.\n// Therefor we add top and border bottoms to the `tr`s and left and right borders\n// to the `td`s or `th`s\n\n.table-bordered {\n  > :not(caption) > * {\n    border-width: $table-border-width 0;\n\n    // stylelint-disable-next-line selector-max-universal\n    > * {\n      border-width: 0 $table-border-width;\n    }\n  }\n}\n\n.table-borderless {\n  // stylelint-disable-next-line selector-max-universal\n  > :not(caption) > * > * {\n    border-bottom-width: 0;\n  }\n}\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-of-type(#{$table-striped-order}) {\n    --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-striped-bg);\n    color: var(--#{$variable-prefix}table-striped-color);\n  }\n}\n\n// Active table\n//\n// The `.table-active` class can be added to highlight rows or cells\n\n.table-active {\n  --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-active-bg);\n  color: var(--#{$variable-prefix}table-active-color);\n}\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-hover-bg);\n    color: var(--#{$variable-prefix}table-hover-color);\n  }\n}\n\n\n// Table variants\n//\n// Table variants set the table cell backgrounds, border colors\n// and the colors of the striped, hovered & active tables\n\n@each $color, $value in $table-variants {\n  @include table-variant($color, $value);\n}\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n  @include media-breakpoint-down($breakpoint) {\n    .table-responsive#{$infix} {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n}\n","// scss-docs-start table-variant\n@mixin table-variant($state, $background) {\n  .table-#{$state} {\n    $color: color-contrast(opaque($body-bg, $background));\n    $hover-bg: mix($color, $background, percentage($table-hover-bg-factor));\n    $striped-bg: mix($color, $background, percentage($table-striped-bg-factor));\n    $active-bg: mix($color, $background, percentage($table-active-bg-factor));\n\n    --#{$variable-prefix}table-bg: #{$background};\n    --#{$variable-prefix}table-striped-bg: #{$striped-bg};\n    --#{$variable-prefix}table-striped-color: #{color-contrast($striped-bg)};\n    --#{$variable-prefix}table-active-bg: #{$active-bg};\n    --#{$variable-prefix}table-active-color: #{color-contrast($active-bg)};\n    --#{$variable-prefix}table-hover-bg: #{$hover-bg};\n    --#{$variable-prefix}table-hover-color: #{color-contrast($hover-bg)};\n\n    color: $color;\n    border-color: mix($color, $background, percentage($table-border-factor));\n  }\n}\n// scss-docs-end table-variant\n","//\n// Labels\n//\n\n.form-label {\n  margin-bottom: $form-label-margin-bottom;\n  @include font-size($form-label-font-size);\n  font-style: $form-label-font-style;\n  font-weight: $form-label-font-weight;\n  color: $form-label-color;\n}\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n  padding-top: add($input-padding-y, $input-border-width);\n  padding-bottom: add($input-padding-y, $input-border-width);\n  margin-bottom: 0; // Override the `<legend>` default\n  @include font-size(inherit); // Override the `<legend>` default\n  font-style: $form-label-font-style;\n  font-weight: $form-label-font-weight;\n  line-height: $input-line-height;\n  color: $form-label-color;\n}\n\n.col-form-label-lg {\n  padding-top: add($input-padding-y-lg, $input-border-width);\n  padding-bottom: add($input-padding-y-lg, $input-border-width);\n  @include font-size($input-font-size-lg);\n}\n\n.col-form-label-sm {\n  padding-top: add($input-padding-y-sm, $input-border-width);\n  padding-bottom: add($input-padding-y-sm, $input-border-width);\n  @include font-size($input-font-size-sm);\n}\n","//\n// Form text\n//\n\n.form-text {\n  margin-top: $form-text-margin-top;\n  @include font-size($form-text-font-size);\n  font-style: $form-text-font-style;\n  font-weight: $form-text-font-weight;\n  color: $form-text-color;\n}\n","//\n// General form controls (plus a few specific high-level interventions)\n//\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: $input-padding-y $input-padding-x;\n  font-family: $input-font-family;\n  @include font-size($input-font-size);\n  font-weight: $input-font-weight;\n  line-height: $input-line-height;\n  color: $input-color;\n  background-color: $input-bg;\n  background-clip: padding-box;\n  border: $input-border-width solid $input-border-color;\n  appearance: none; // Fix appearance for date inputs in Safari\n\n  // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.\n  @include border-radius($input-border-radius, 0);\n\n  @include box-shadow($input-box-shadow);\n  @include transition($input-transition);\n\n  &[type=\"file\"] {\n    overflow: hidden; // prevent pseudo element button overlap\n\n    &:not(:disabled):not([readonly]) {\n      cursor: pointer;\n    }\n  }\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  &:focus {\n    color: $input-focus-color;\n    background-color: $input-focus-bg;\n    border-color: $input-focus-border-color;\n    outline: 0;\n    @if $enable-shadows {\n      @include box-shadow($input-box-shadow, $input-focus-box-shadow);\n    } @else {\n      // Avoid using mixin so we can pass custom focus shadow properly\n      box-shadow: $input-focus-box-shadow;\n    }\n  }\n\n  // Add some height to date inputs on iOS\n  // https://github.com/twbs/bootstrap/issues/23307\n  // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved\n  &::-webkit-date-and-time-value {\n    // Multiply line-height by 1em if it has no unit\n    height: if(unit($input-line-height) == \"\", $input-line-height * 1em, $input-line-height);\n  }\n\n  // Placeholder\n  &::placeholder {\n    color: $input-placeholder-color;\n    // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n    opacity: 1;\n  }\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &:disabled,\n  &[readonly] {\n    background-color: $input-disabled-bg;\n    border-color: $input-disabled-border-color;\n    // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n    opacity: 1;\n  }\n\n  // File input buttons theming\n  &::file-selector-button {\n    padding: $input-padding-y $input-padding-x;\n    margin: (-$input-padding-y) (-$input-padding-x);\n    margin-inline-end: $input-padding-x;\n    color: $form-file-button-color;\n    @include gradient-bg($form-file-button-bg);\n    pointer-events: none;\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: $input-border-width;\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n    @include transition($btn-transition);\n  }\n\n  &:hover:not(:disabled):not([readonly])::file-selector-button {\n    background-color: $form-file-button-hover-bg;\n  }\n\n  &::-webkit-file-upload-button {\n    padding: $input-padding-y $input-padding-x;\n    margin: (-$input-padding-y) (-$input-padding-x);\n    margin-inline-end: $input-padding-x;\n    color: $form-file-button-color;\n    @include gradient-bg($form-file-button-bg);\n    pointer-events: none;\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: $input-border-width;\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n    @include transition($btn-transition);\n  }\n\n  &:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n    background-color: $form-file-button-hover-bg;\n  }\n}\n\n// Readonly controls as plain text\n//\n// Apply class to a readonly input to make it appear like regular plain\n// text (without any border, background color, focus indicator)\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding: $input-padding-y 0;\n  margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n  line-height: $input-line-height;\n  color: $input-plaintext-color;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: $input-border-width 0;\n\n  &.form-control-sm,\n  &.form-control-lg {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// Repeated in `_input_group.scss` to avoid Sass extend issues.\n\n.form-control-sm {\n  min-height: $input-height-sm;\n  padding: $input-padding-y-sm $input-padding-x-sm;\n  @include font-size($input-font-size-sm);\n  @include border-radius($input-border-radius-sm);\n\n  &::file-selector-button {\n    padding: $input-padding-y-sm $input-padding-x-sm;\n    margin: (-$input-padding-y-sm) (-$input-padding-x-sm);\n    margin-inline-end: $input-padding-x-sm;\n  }\n\n  &::-webkit-file-upload-button {\n    padding: $input-padding-y-sm $input-padding-x-sm;\n    margin: (-$input-padding-y-sm) (-$input-padding-x-sm);\n    margin-inline-end: $input-padding-x-sm;\n  }\n}\n\n.form-control-lg {\n  min-height: $input-height-lg;\n  padding: $input-padding-y-lg $input-padding-x-lg;\n  @include font-size($input-font-size-lg);\n  @include border-radius($input-border-radius-lg);\n\n  &::file-selector-button {\n    padding: $input-padding-y-lg $input-padding-x-lg;\n    margin: (-$input-padding-y-lg) (-$input-padding-x-lg);\n    margin-inline-end: $input-padding-x-lg;\n  }\n\n  &::-webkit-file-upload-button {\n    padding: $input-padding-y-lg $input-padding-x-lg;\n    margin: (-$input-padding-y-lg) (-$input-padding-x-lg);\n    margin-inline-end: $input-padding-x-lg;\n  }\n}\n\n// Make sure textareas don't shrink too much when resized\n// https://github.com/twbs/bootstrap/pull/29124\n// stylelint-disable selector-no-qualifying-type\ntextarea {\n  &.form-control {\n    min-height: $input-height;\n  }\n\n  &.form-control-sm {\n    min-height: $input-height-sm;\n  }\n\n  &.form-control-lg {\n    min-height: $input-height-lg;\n  }\n}\n// stylelint-enable selector-no-qualifying-type\n\n.form-control-color {\n  width: $form-color-width;\n  height: auto; // Override fixed browser height\n  padding: $input-padding-y;\n\n  &:not(:disabled):not([readonly]) {\n    cursor: pointer;\n  }\n\n  &::-moz-color-swatch {\n    height: if(unit($input-line-height) == \"\", $input-line-height * 1em, $input-line-height);\n    @include border-radius($input-border-radius);\n  }\n\n  &::-webkit-color-swatch {\n    height: if(unit($input-line-height) == \"\", $input-line-height * 1em, $input-line-height);\n    @include border-radius($input-border-radius);\n  }\n}\n","// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","// Gradients\n\n// scss-docs-start gradient-bg-mixin\n@mixin gradient-bg($color: null) {\n  background-color: $color;\n\n  @if $enable-gradients {\n    background-image: var(--#{$variable-prefix}gradient);\n  }\n}\n// scss-docs-end gradient-bg-mixin\n\n// scss-docs-start gradient-mixins\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: null, $end-percent: null) {\n  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n  background-image: linear-gradient($deg, $start-color, $end-color);\n}\n\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n  background-image: radial-gradient(circle, $inner-color, $outer-color);\n}\n\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n// scss-docs-end gradient-mixins\n","// Select\n//\n// Replaces the browser default select with a custom one, mostly pulled from\n// https://primer.github.io/.\n\n.form-select {\n  display: block;\n  width: 100%;\n  padding: $form-select-padding-y $form-select-indicator-padding $form-select-padding-y $form-select-padding-x;\n  // stylelint-disable-next-line property-no-vendor-prefix\n  -moz-padding-start: subtract($form-select-padding-x, 3px); // See https://github.com/twbs/bootstrap/issues/32636\n  font-family: $form-select-font-family;\n  @include font-size($form-select-font-size);\n  font-weight: $form-select-font-weight;\n  line-height: $form-select-line-height;\n  color: $form-select-color;\n  background-color: $form-select-bg;\n  background-image: escape-svg($form-select-indicator);\n  background-repeat: no-repeat;\n  background-position: $form-select-bg-position;\n  background-size: $form-select-bg-size;\n  border: $form-select-border-width solid $form-select-border-color;\n  @include border-radius($form-select-border-radius, 0);\n  @include box-shadow($form-select-box-shadow);\n  @include transition($form-select-transition);\n  appearance: none;\n\n  &:focus {\n    border-color: $form-select-focus-border-color;\n    outline: 0;\n    @if $enable-shadows {\n      @include box-shadow($form-select-box-shadow, $form-select-focus-box-shadow);\n    } @else {\n      // Avoid using mixin so we can pass custom focus shadow properly\n      box-shadow: $form-select-focus-box-shadow;\n    }\n  }\n\n  &[multiple],\n  &[size]:not([size=\"1\"]) {\n    padding-right: $form-select-padding-x;\n    background-image: none;\n  }\n\n  &:disabled {\n    color: $form-select-disabled-color;\n    background-color: $form-select-disabled-bg;\n    border-color: $form-select-disabled-border-color;\n  }\n\n  // Remove outline from select box in FF\n  &:-moz-focusring {\n    color: transparent;\n    text-shadow: 0 0 0 $form-select-color;\n  }\n}\n\n.form-select-sm {\n  padding-top: $form-select-padding-y-sm;\n  padding-bottom: $form-select-padding-y-sm;\n  padding-left: $form-select-padding-x-sm;\n  @include font-size($form-select-font-size-sm);\n}\n\n.form-select-lg {\n  padding-top: $form-select-padding-y-lg;\n  padding-bottom: $form-select-padding-y-lg;\n  padding-left: $form-select-padding-x-lg;\n  @include font-size($form-select-font-size-lg);\n}\n","//\n// Check/radio\n//\n\n.form-check {\n  display: block;\n  min-height: $form-check-min-height;\n  padding-left: $form-check-padding-start;\n  margin-bottom: $form-check-margin-bottom;\n\n  .form-check-input {\n    float: left;\n    margin-left: $form-check-padding-start * -1;\n  }\n}\n\n.form-check-input {\n  width: $form-check-input-width;\n  height: $form-check-input-width;\n  margin-top: ($line-height-base - $form-check-input-width) * .5; // line-height minus check height\n  vertical-align: top;\n  background-color: $form-check-input-bg;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: contain;\n  border: $form-check-input-border;\n  appearance: none;\n  color-adjust: exact; // Keep themed appearance for print\n  @include transition($form-check-transition);\n\n  &[type=\"checkbox\"] {\n    @include border-radius($form-check-input-border-radius);\n  }\n\n  &[type=\"radio\"] {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: $form-check-radio-border-radius;\n  }\n\n  &:active {\n    filter: $form-check-input-active-filter;\n  }\n\n  &:focus {\n    border-color: $form-check-input-focus-border;\n    outline: 0;\n    box-shadow: $form-check-input-focus-box-shadow;\n  }\n\n  &:checked {\n    background-color: $form-check-input-checked-bg-color;\n    border-color: $form-check-input-checked-border-color;\n\n    &[type=\"checkbox\"] {\n      @if $enable-gradients {\n        background-image: escape-svg($form-check-input-checked-bg-image), var(--#{$variable-prefix}gradient);\n      } @else {\n        background-image: escape-svg($form-check-input-checked-bg-image);\n      }\n    }\n\n    &[type=\"radio\"] {\n      @if $enable-gradients {\n        background-image: escape-svg($form-check-radio-checked-bg-image), var(--#{$variable-prefix}gradient);\n      } @else {\n        background-image: escape-svg($form-check-radio-checked-bg-image);\n      }\n    }\n  }\n\n  &[type=\"checkbox\"]:indeterminate {\n    background-color: $form-check-input-indeterminate-bg-color;\n    border-color: $form-check-input-indeterminate-border-color;\n\n    @if $enable-gradients {\n      background-image: escape-svg($form-check-input-indeterminate-bg-image), var(--#{$variable-prefix}gradient);\n    } @else {\n      background-image: escape-svg($form-check-input-indeterminate-bg-image);\n    }\n  }\n\n  &:disabled {\n    pointer-events: none;\n    filter: none;\n    opacity: $form-check-input-disabled-opacity;\n  }\n\n  // Use disabled attribute in addition of :disabled pseudo-class\n  // See: https://github.com/twbs/bootstrap/issues/28247\n  &[disabled],\n  &:disabled {\n    ~ .form-check-label {\n      opacity: $form-check-label-disabled-opacity;\n    }\n  }\n}\n\n.form-check-label {\n  color: $form-check-label-color;\n  cursor: $form-check-label-cursor;\n}\n\n//\n// Switch\n//\n\n.form-switch {\n  padding-left: $form-switch-padding-start;\n\n  .form-check-input {\n    width: $form-switch-width;\n    margin-left: $form-switch-padding-start * -1;\n    background-image: escape-svg($form-switch-bg-image);\n    background-position: left center;\n    @include border-radius($form-switch-border-radius);\n    @include transition($form-switch-transition);\n\n    &:focus {\n      background-image: escape-svg($form-switch-focus-bg-image);\n    }\n\n    &:checked {\n      background-position: $form-switch-checked-bg-position;\n\n      @if $enable-gradients {\n        background-image: escape-svg($form-switch-checked-bg-image), var(--#{$variable-prefix}gradient);\n      } @else {\n        background-image: escape-svg($form-switch-checked-bg-image);\n      }\n    }\n  }\n}\n\n.form-check-inline {\n  display: inline-block;\n  margin-right: $form-check-inline-margin-end;\n}\n\n.btn-check {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n\n  &[disabled],\n  &:disabled {\n    + .btn {\n      pointer-events: none;\n      filter: none;\n      opacity: $form-check-btn-check-disabled-opacity;\n    }\n  }\n}\n","// Range\n//\n// Style range inputs the same across browsers. Vendor-specific rules for pseudo\n// elements cannot be mixed. As such, there are no shared styles for focus or\n// active states on prefixed selectors.\n\n.form-range {\n  width: 100%;\n  height: add($form-range-thumb-height, $form-range-thumb-focus-box-shadow-width * 2);\n  padding: 0; // Need to reset padding\n  background-color: transparent;\n  appearance: none;\n\n  &:focus {\n    outline: 0;\n\n    // Pseudo-elements must be split across multiple rulesets to have an effect.\n    // No box-shadow() mixin for focus accessibility.\n    &::-webkit-slider-thumb { box-shadow: $form-range-thumb-focus-box-shadow; }\n    &::-moz-range-thumb     { box-shadow: $form-range-thumb-focus-box-shadow; }\n  }\n\n  &::-moz-focus-outer {\n    border: 0;\n  }\n\n  &::-webkit-slider-thumb {\n    width: $form-range-thumb-width;\n    height: $form-range-thumb-height;\n    margin-top: ($form-range-track-height - $form-range-thumb-height) * .5; // Webkit specific\n    @include gradient-bg($form-range-thumb-bg);\n    border: $form-range-thumb-border;\n    @include border-radius($form-range-thumb-border-radius);\n    @include box-shadow($form-range-thumb-box-shadow);\n    @include transition($form-range-thumb-transition);\n    appearance: none;\n\n    &:active {\n      @include gradient-bg($form-range-thumb-active-bg);\n    }\n  }\n\n  &::-webkit-slider-runnable-track {\n    width: $form-range-track-width;\n    height: $form-range-track-height;\n    color: transparent; // Why?\n    cursor: $form-range-track-cursor;\n    background-color: $form-range-track-bg;\n    border-color: transparent;\n    @include border-radius($form-range-track-border-radius);\n    @include box-shadow($form-range-track-box-shadow);\n  }\n\n  &::-moz-range-thumb {\n    width: $form-range-thumb-width;\n    height: $form-range-thumb-height;\n    @include gradient-bg($form-range-thumb-bg);\n    border: $form-range-thumb-border;\n    @include border-radius($form-range-thumb-border-radius);\n    @include box-shadow($form-range-thumb-box-shadow);\n    @include transition($form-range-thumb-transition);\n    appearance: none;\n\n    &:active {\n      @include gradient-bg($form-range-thumb-active-bg);\n    }\n  }\n\n  &::-moz-range-track {\n    width: $form-range-track-width;\n    height: $form-range-track-height;\n    color: transparent;\n    cursor: $form-range-track-cursor;\n    background-color: $form-range-track-bg;\n    border-color: transparent; // Firefox specific?\n    @include border-radius($form-range-track-border-radius);\n    @include box-shadow($form-range-track-box-shadow);\n  }\n\n  &:disabled {\n    pointer-events: none;\n\n    &::-webkit-slider-thumb {\n      background-color: $form-range-thumb-disabled-bg;\n    }\n\n    &::-moz-range-thumb {\n      background-color: $form-range-thumb-disabled-bg;\n    }\n  }\n}\n",".form-floating {\n  position: relative;\n\n  > .form-control,\n  > .form-select {\n    height: $form-floating-height;\n    line-height: $form-floating-line-height;\n  }\n\n  > label {\n    position: absolute;\n    top: 0;\n    left: 0;\n    height: 100%; // allow textareas\n    padding: $form-floating-padding-y $form-floating-padding-x;\n    pointer-events: none;\n    border: $input-border-width solid transparent; // Required for aligning label's text with the input as it affects inner box model\n    transform-origin: 0 0;\n    @include transition($form-floating-transition);\n  }\n\n  // stylelint-disable no-duplicate-selectors\n  > .form-control {\n    padding: $form-floating-padding-y $form-floating-padding-x;\n\n    &::placeholder {\n      color: transparent;\n    }\n\n    &:focus,\n    &:not(:placeholder-shown) {\n      padding-top: $form-floating-input-padding-t;\n      padding-bottom: $form-floating-input-padding-b;\n    }\n    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n    &:-webkit-autofill {\n      padding-top: $form-floating-input-padding-t;\n      padding-bottom: $form-floating-input-padding-b;\n    }\n  }\n\n  > .form-select {\n    padding-top: $form-floating-input-padding-t;\n    padding-bottom: $form-floating-input-padding-b;\n  }\n\n  > .form-control:focus,\n  > .form-control:not(:placeholder-shown),\n  > .form-select {\n    ~ label {\n      opacity: $form-floating-label-opacity;\n      transform: $form-floating-label-transform;\n    }\n  }\n  // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n  > .form-control:-webkit-autofill {\n    ~ label {\n      opacity: $form-floating-label-opacity;\n      transform: $form-floating-label-transform;\n    }\n  }\n  // stylelint-enable no-duplicate-selectors\n}\n","//\n// Base styles\n//\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap; // For form validation feedback\n  align-items: stretch;\n  width: 100%;\n\n  > .form-control,\n  > .form-select {\n    position: relative; // For focus state's z-index\n    flex: 1 1 auto;\n    width: 1%;\n    min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size\n  }\n\n  // Bring the \"active\" form control to the top of surrounding elements\n  > .form-control:focus,\n  > .form-select:focus {\n    z-index: 3;\n  }\n\n  // Ensure buttons are always above inputs for more visually pleasing borders.\n  // This isn't needed for `.input-group-text` since it shares the same border-color\n  // as our inputs.\n  .btn {\n    position: relative;\n    z-index: 2;\n\n    &:focus {\n      z-index: 3;\n    }\n  }\n}\n\n\n// Textual addons\n//\n// Serves as a catch-all element for any text or radio/checkbox input you wish\n// to prepend or append to an input.\n\n.input-group-text {\n  display: flex;\n  align-items: center;\n  padding: $input-group-addon-padding-y $input-group-addon-padding-x;\n  @include font-size($input-font-size); // Match inputs\n  font-weight: $input-group-addon-font-weight;\n  line-height: $input-line-height;\n  color: $input-group-addon-color;\n  text-align: center;\n  white-space: nowrap;\n  background-color: $input-group-addon-bg;\n  border: $input-border-width solid $input-group-addon-border-color;\n  @include border-radius($input-border-radius);\n}\n\n\n// Sizing\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n  padding: $input-padding-y-lg $input-padding-x-lg;\n  @include font-size($input-font-size-lg);\n  @include border-radius($input-border-radius-lg);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n  padding: $input-padding-y-sm $input-padding-x-sm;\n  @include font-size($input-font-size-sm);\n  @include border-radius($input-border-radius-sm);\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n  padding-right: $form-select-padding-x + $form-select-indicator-padding;\n}\n\n\n// Rounded corners\n//\n// These rulesets must come after the sizing ones to properly override sm and lg\n// border-radius values when extending. They're more specific than we'd like\n// with the `.input-group >` part, but without it, we cannot override the sizing.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.input-group {\n  &:not(.has-validation) {\n    > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),\n    > .dropdown-toggle:nth-last-child(n + 3) {\n      @include border-end-radius(0);\n    }\n  }\n\n  &.has-validation {\n    > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu),\n    > .dropdown-toggle:nth-last-child(n + 4) {\n      @include border-end-radius(0);\n    }\n  }\n\n  $validation-messages: \"\";\n  @each $state in map-keys($form-validation-states) {\n    $validation-messages: $validation-messages + \":not(.\" + unquote($state) + \"-tooltip)\" + \":not(.\" + unquote($state) + \"-feedback)\";\n  }\n\n  > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {\n    margin-left: -$input-border-width;\n    @include border-start-radius(0);\n  }\n}\n","// This mixin uses an `if()` technique to be compatible with Dart Sass\n// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details\n\n// scss-docs-start form-validation-mixins\n@mixin form-validation-state-selector($state) {\n  @if ($state == \"valid\" or $state == \"invalid\") {\n    .was-validated #{if(&, \"&\", \"\")}:#{$state},\n    #{if(&, \"&\", \"\")}.is-#{$state} {\n      @content;\n    }\n  } @else {\n    #{if(&, \"&\", \"\")}.is-#{$state} {\n      @content;\n    }\n  }\n}\n\n@mixin form-validation-state(\n  $state,\n  $color,\n  $icon,\n  $tooltip-color: color-contrast($color),\n  $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),\n  $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity)\n) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    margin-top: $form-feedback-margin-top;\n    @include font-size($form-feedback-font-size);\n    font-style: $form-feedback-font-style;\n    color: $color;\n  }\n\n  .#{$state}-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%; // Contain to parent when possible\n    padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n    margin-top: .1rem;\n    @include font-size($form-feedback-tooltip-font-size);\n    line-height: $form-feedback-tooltip-line-height;\n    color: $tooltip-color;\n    background-color: $tooltip-bg-color;\n    @include border-radius($form-feedback-tooltip-border-radius);\n  }\n\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  .form-control {\n    @include form-validation-state-selector($state) {\n      border-color: $color;\n\n      @if $enable-validation-icons {\n        padding-right: $input-height-inner;\n        background-image: escape-svg($icon);\n        background-repeat: no-repeat;\n        background-position: right $input-height-inner-quarter center;\n        background-size: $input-height-inner-half $input-height-inner-half;\n      }\n\n      &:focus {\n        border-color: $color;\n        box-shadow: $focus-box-shadow;\n      }\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  textarea.form-control {\n    @include form-validation-state-selector($state) {\n      @if $enable-validation-icons {\n        padding-right: $input-height-inner;\n        background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n      }\n    }\n  }\n\n  .form-select {\n    @include form-validation-state-selector($state) {\n      border-color: $color;\n\n      @if $enable-validation-icons {\n        &:not([multiple]):not([size]),\n        &:not([multiple])[size=\"1\"] {\n          padding-right: $form-select-feedback-icon-padding-end;\n          background-image: escape-svg($form-select-indicator), escape-svg($icon);\n          background-position: $form-select-bg-position, $form-select-feedback-icon-position;\n          background-size: $form-select-bg-size, $form-select-feedback-icon-size;\n        }\n      }\n\n      &:focus {\n        border-color: $color;\n        box-shadow: $focus-box-shadow;\n      }\n    }\n  }\n\n  .form-check-input {\n    @include form-validation-state-selector($state) {\n      border-color: $color;\n\n      &:checked {\n        background-color: $color;\n      }\n\n      &:focus {\n        box-shadow: $focus-box-shadow;\n      }\n\n      ~ .form-check-label {\n        color: $color;\n      }\n    }\n  }\n  .form-check-inline .form-check-input {\n    ~ .#{$state}-feedback {\n      margin-left: .5em;\n    }\n  }\n\n  .input-group .form-control,\n  .input-group .form-select {\n    @include form-validation-state-selector($state) {\n      @if $state == \"valid\" {\n        z-index: 1;\n      } @else if $state == \"invalid\" {\n        z-index: 2;\n      }\n      &:focus {\n        z-index: 3;\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-mixins\n","//\n// Base styles\n//\n\n.btn {\n  display: inline-block;\n  font-family: $btn-font-family;\n  font-weight: $btn-font-weight;\n  line-height: $btn-line-height;\n  color: $body-color;\n  text-align: center;\n  text-decoration: if($link-decoration == none, null, none);\n  white-space: $btn-white-space;\n  vertical-align: middle;\n  cursor: if($enable-button-pointers, pointer, null);\n  user-select: none;\n  background-color: transparent;\n  border: $btn-border-width solid transparent;\n  @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-border-radius);\n  @include transition($btn-transition);\n\n  &:hover {\n    color: $body-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n\n  .btn-check:focus + &,\n  &:focus {\n    outline: 0;\n    box-shadow: $btn-focus-box-shadow;\n  }\n\n  .btn-check:checked + &,\n  .btn-check:active + &,\n  &:active,\n  &.active {\n    @include box-shadow($btn-active-box-shadow);\n\n    &:focus {\n      @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);\n    }\n  }\n\n  &:disabled,\n  &.disabled,\n  fieldset:disabled & {\n    pointer-events: none;\n    opacity: $btn-disabled-opacity;\n    @include box-shadow(none);\n  }\n}\n\n\n//\n// Alternate buttons\n//\n\n// scss-docs-start btn-variant-loops\n@each $color, $value in $theme-colors {\n  .btn-#{$color} {\n    @include button-variant($value, $value);\n  }\n}\n\n@each $color, $value in $theme-colors {\n  .btn-outline-#{$color} {\n    @include button-outline-variant($value);\n  }\n}\n// scss-docs-end btn-variant-loops\n\n\n//\n// Link buttons\n//\n\n// Make a button look and behave like a link\n.btn-link {\n  font-weight: $font-weight-normal;\n  color: $btn-link-color;\n  text-decoration: $link-decoration;\n\n  &:hover {\n    color: $btn-link-hover-color;\n    text-decoration: $link-hover-decoration;\n  }\n\n  &:focus {\n    text-decoration: $link-hover-decoration;\n  }\n\n  &:disabled,\n  &.disabled {\n    color: $btn-link-disabled-color;\n  }\n\n  // No need for an active state here\n}\n\n\n//\n// Button Sizes\n//\n\n.btn-lg {\n  @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg);\n}\n\n.btn-sm {\n  @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm);\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n// scss-docs-start btn-variant-mixin\n@mixin button-variant(\n  $background,\n  $border,\n  $color: color-contrast($background),\n  $hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),\n  $hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),\n  $hover-color: color-contrast($hover-background),\n  $active-background: if($color == $color-contrast-light, shade-color($background, $btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),\n  $active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),\n  $active-color: color-contrast($active-background),\n  $disabled-background: $background,\n  $disabled-border: $border,\n  $disabled-color: color-contrast($disabled-background)\n) {\n  color: $color;\n  @include gradient-bg($background);\n  border-color: $border;\n  @include box-shadow($btn-box-shadow);\n\n  &:hover {\n    color: $hover-color;\n    @include gradient-bg($hover-background);\n    border-color: $hover-border;\n  }\n\n  .btn-check:focus + &,\n  &:focus {\n    color: $hover-color;\n    @include gradient-bg($hover-background);\n    border-color: $hover-border;\n    @if $enable-shadows {\n      @include box-shadow($btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5));\n    } @else {\n      // Avoid using mixin so we can pass custom focus shadow properly\n      box-shadow: 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5);\n    }\n  }\n\n  .btn-check:checked + &,\n  .btn-check:active + &,\n  &:active,\n  &.active,\n  .show > &.dropdown-toggle {\n    color: $active-color;\n    background-color: $active-background;\n    // Remove CSS gradients if they're enabled\n    background-image: if($enable-gradients, none, null);\n    border-color: $active-border;\n\n    &:focus {\n      @if $enable-shadows {\n        @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5));\n      } @else {\n        // Avoid using mixin so we can pass custom focus shadow properly\n        box-shadow: 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5);\n      }\n    }\n  }\n\n  &:disabled,\n  &.disabled {\n    color: $disabled-color;\n    background-color: $disabled-background;\n    // Remove CSS gradients if they're enabled\n    background-image: if($enable-gradients, none, null);\n    border-color: $disabled-border;\n  }\n}\n// scss-docs-end btn-variant-mixin\n\n// scss-docs-start btn-outline-variant-mixin\n@mixin button-outline-variant(\n  $color,\n  $color-hover: color-contrast($color),\n  $active-background: $color,\n  $active-border: $color,\n  $active-color: color-contrast($active-background)\n) {\n  color: $color;\n  border-color: $color;\n\n  &:hover {\n    color: $color-hover;\n    background-color: $active-background;\n    border-color: $active-border;\n  }\n\n  .btn-check:focus + &,\n  &:focus {\n    box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n  }\n\n  .btn-check:checked + &,\n  .btn-check:active + &,\n  &:active,\n  &.active,\n  &.dropdown-toggle.show {\n    color: $active-color;\n    background-color: $active-background;\n    border-color: $active-border;\n\n    &:focus {\n      @if $enable-shadows {\n        @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5));\n      } @else {\n        // Avoid using mixin so we can pass custom focus shadow properly\n        box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n      }\n    }\n  }\n\n  &:disabled,\n  &.disabled {\n    color: $color;\n    background-color: transparent;\n  }\n}\n// scss-docs-end btn-outline-variant-mixin\n\n// scss-docs-start btn-size-mixin\n@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {\n  padding: $padding-y $padding-x;\n  @include font-size($font-size);\n  // Manually declare to provide an override to the browser default\n  @include border-radius($border-radius, 0);\n}\n// scss-docs-end btn-size-mixin\n",".fade {\n  @include transition($transition-fade);\n\n  &:not(.show) {\n    opacity: 0;\n  }\n}\n\n// scss-docs-start collapse-classes\n.collapse {\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  @include transition($transition-collapse);\n\n  &.collapse-horizontal {\n    width: 0;\n    height: auto;\n    @include transition($transition-collapse-width);\n  }\n}\n// scss-docs-end collapse-classes\n","// The dropdown wrapper (`<div>`)\n.dropup,\n.dropend,\n.dropdown,\n.dropstart {\n  position: relative;\n}\n\n.dropdown-toggle {\n  white-space: nowrap;\n\n  // Generate the caret automatically\n  @include caret();\n}\n\n// The dropdown menu\n.dropdown-menu {\n  position: absolute;\n  z-index: $zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  min-width: $dropdown-min-width;\n  padding: $dropdown-padding-y $dropdown-padding-x;\n  margin: 0; // Override default margin of ul\n  @include font-size($dropdown-font-size);\n  color: $dropdown-color;\n  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n  list-style: none;\n  background-color: $dropdown-bg;\n  background-clip: padding-box;\n  border: $dropdown-border-width solid $dropdown-border-color;\n  @include border-radius($dropdown-border-radius);\n  @include box-shadow($dropdown-box-shadow);\n\n  &[data-bs-popper] {\n    top: 100%;\n    left: 0;\n    margin-top: $dropdown-spacer;\n  }\n}\n\n// scss-docs-start responsive-breakpoints\n// We deliberately hardcode the `bs-` prefix because we check\n// this custom property in JS to determine Popper's positioning\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .dropdown-menu#{$infix}-start {\n      --bs-position: start;\n\n      &[data-bs-popper] {\n        right: auto;\n        left: 0;\n      }\n    }\n\n    .dropdown-menu#{$infix}-end {\n      --bs-position: end;\n\n      &[data-bs-popper] {\n        right: 0;\n        left: auto;\n      }\n    }\n  }\n}\n// scss-docs-end responsive-breakpoints\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n// Just add .dropup after the standard .dropdown class and you're set.\n.dropup {\n  .dropdown-menu[data-bs-popper] {\n    top: auto;\n    bottom: 100%;\n    margin-top: 0;\n    margin-bottom: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(up);\n  }\n}\n\n.dropend {\n  .dropdown-menu[data-bs-popper] {\n    top: 0;\n    right: auto;\n    left: 100%;\n    margin-top: 0;\n    margin-left: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(end);\n    &::after {\n      vertical-align: 0;\n    }\n  }\n}\n\n.dropstart {\n  .dropdown-menu[data-bs-popper] {\n    top: 0;\n    right: 100%;\n    left: auto;\n    margin-top: 0;\n    margin-right: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(start);\n    &::before {\n      vertical-align: 0;\n    }\n  }\n}\n\n\n// Dividers (basically an `<hr>`) within the dropdown\n.dropdown-divider {\n  height: 0;\n  margin: $dropdown-divider-margin-y 0;\n  overflow: hidden;\n  border-top: 1px solid $dropdown-divider-bg;\n}\n\n// Links, buttons, and more within the dropdown menu\n//\n// `<button>`-specific styles are denoted with `// For <button>s`\n.dropdown-item {\n  display: block;\n  width: 100%; // For `<button>`s\n  padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n  clear: both;\n  font-weight: $font-weight-normal;\n  color: $dropdown-link-color;\n  text-align: inherit; // For `<button>`s\n  text-decoration: if($link-decoration == none, null, none);\n  white-space: nowrap; // prevent links from randomly breaking onto new lines\n  background-color: transparent; // For `<button>`s\n  border: 0; // For `<button>`s\n\n  // Prevent dropdown overflow if there's no padding\n  // See https://github.com/twbs/bootstrap/pull/27703\n  @if $dropdown-padding-y == 0 {\n    &:first-child {\n      @include border-top-radius($dropdown-inner-border-radius);\n    }\n\n    &:last-child {\n      @include border-bottom-radius($dropdown-inner-border-radius);\n    }\n  }\n\n  &:hover,\n  &:focus {\n    color: $dropdown-link-hover-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n    @include gradient-bg($dropdown-link-hover-bg);\n  }\n\n  &.active,\n  &:active {\n    color: $dropdown-link-active-color;\n    text-decoration: none;\n    @include gradient-bg($dropdown-link-active-bg);\n  }\n\n  &.disabled,\n  &:disabled {\n    color: $dropdown-link-disabled-color;\n    pointer-events: none;\n    background-color: transparent;\n    // Remove CSS gradients if they're enabled\n    background-image: if($enable-gradients, none, null);\n  }\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: $dropdown-header-padding;\n  margin-bottom: 0; // for use with heading elements\n  @include font-size($font-size-sm);\n  color: $dropdown-header-color;\n  white-space: nowrap; // as with > li > a\n}\n\n// Dropdown text\n.dropdown-item-text {\n  display: block;\n  padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n  color: $dropdown-link-color;\n}\n\n// Dark dropdowns\n.dropdown-menu-dark {\n  color: $dropdown-dark-color;\n  background-color: $dropdown-dark-bg;\n  border-color: $dropdown-dark-border-color;\n  @include box-shadow($dropdown-dark-box-shadow);\n\n  .dropdown-item {\n    color: $dropdown-dark-link-color;\n\n    &:hover,\n    &:focus {\n      color: $dropdown-dark-link-hover-color;\n      @include gradient-bg($dropdown-dark-link-hover-bg);\n    }\n\n    &.active,\n    &:active {\n      color: $dropdown-dark-link-active-color;\n      @include gradient-bg($dropdown-dark-link-active-bg);\n    }\n\n    &.disabled,\n    &:disabled {\n      color: $dropdown-dark-link-disabled-color;\n    }\n  }\n\n  .dropdown-divider {\n    border-color: $dropdown-dark-divider-bg;\n  }\n\n  .dropdown-item-text {\n    color: $dropdown-dark-link-color;\n  }\n\n  .dropdown-header {\n    color: $dropdown-dark-header-color;\n  }\n}\n","// scss-docs-start caret-mixins\n@mixin caret-down {\n  border-top: $caret-width solid;\n  border-right: $caret-width solid transparent;\n  border-bottom: 0;\n  border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n  border-top: 0;\n  border-right: $caret-width solid transparent;\n  border-bottom: $caret-width solid;\n  border-left: $caret-width solid transparent;\n}\n\n@mixin caret-end {\n  border-top: $caret-width solid transparent;\n  border-right: 0;\n  border-bottom: $caret-width solid transparent;\n  border-left: $caret-width solid;\n}\n\n@mixin caret-start {\n  border-top: $caret-width solid transparent;\n  border-right: $caret-width solid;\n  border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n  @if $enable-caret {\n    &::after {\n      display: inline-block;\n      margin-left: $caret-spacing;\n      vertical-align: $caret-vertical-align;\n      content: \"\";\n      @if $direction == down {\n        @include caret-down();\n      } @else if $direction == up {\n        @include caret-up();\n      } @else if $direction == end {\n        @include caret-end();\n      }\n    }\n\n    @if $direction == start {\n      &::after {\n        display: none;\n      }\n\n      &::before {\n        display: inline-block;\n        margin-right: $caret-spacing;\n        vertical-align: $caret-vertical-align;\n        content: \"\";\n        @include caret-start();\n      }\n    }\n\n    &:empty::after {\n      margin-left: 0;\n    }\n  }\n}\n// scss-docs-end caret-mixins\n","// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n\n  > .btn {\n    position: relative;\n    flex: 1 1 auto;\n  }\n\n  // Bring the hover, focused, and \"active\" buttons to the front to overlay\n  // the borders properly\n  > .btn-check:checked + .btn,\n  > .btn-check:focus + .btn,\n  > .btn:hover,\n  > .btn:focus,\n  > .btn:active,\n  > .btn.active {\n    z-index: 1;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n\n  .input-group {\n    width: auto;\n  }\n}\n\n.btn-group {\n  // Prevent double borders when buttons are next to each other\n  > .btn:not(:first-child),\n  > .btn-group:not(:first-child) {\n    margin-left: -$btn-border-width;\n  }\n\n  // Reset rounded corners\n  > .btn:not(:last-child):not(.dropdown-toggle),\n  > .btn-group:not(:last-child) > .btn {\n    @include border-end-radius(0);\n  }\n\n  // The left radius should be 0 if the button is:\n  // - the \"third or more\" child\n  // - the second child and the previous element isn't `.btn-check` (making it the first child visually)\n  // - part of a btn-group which isn't the first child\n  > .btn:nth-child(n + 3),\n  > :not(.btn-check) + .btn,\n  > .btn-group:not(:first-child) > .btn {\n    @include border-start-radius(0);\n  }\n}\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-sm > .btn { @extend .btn-sm; }\n.btn-group-lg > .btn { @extend .btn-lg; }\n\n\n//\n// Split button dropdowns\n//\n\n.dropdown-toggle-split {\n  padding-right: $btn-padding-x * .75;\n  padding-left: $btn-padding-x * .75;\n\n  &::after,\n  .dropup &::after,\n  .dropend &::after {\n    margin-left: 0;\n  }\n\n  .dropstart &::before {\n    margin-right: 0;\n  }\n}\n\n.btn-sm + .dropdown-toggle-split {\n  padding-right: $btn-padding-x-sm * .75;\n  padding-left: $btn-padding-x-sm * .75;\n}\n\n.btn-lg + .dropdown-toggle-split {\n  padding-right: $btn-padding-x-lg * .75;\n  padding-left: $btn-padding-x-lg * .75;\n}\n\n\n// The clickable button for toggling the menu\n// Set the same inset shadow as the :active state\n.btn-group.show .dropdown-toggle {\n  @include box-shadow($btn-active-box-shadow);\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    @include box-shadow(none);\n  }\n}\n\n\n//\n// Vertical button groups\n//\n\n.btn-group-vertical {\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: center;\n\n  > .btn,\n  > .btn-group {\n    width: 100%;\n  }\n\n  > .btn:not(:first-child),\n  > .btn-group:not(:first-child) {\n    margin-top: -$btn-border-width;\n  }\n\n  // Reset rounded corners\n  > .btn:not(:last-child):not(.dropdown-toggle),\n  > .btn-group:not(:last-child) > .btn {\n    @include border-bottom-radius(0);\n  }\n\n  > .btn ~ .btn,\n  > .btn-group:not(:first-child) > .btn {\n    @include border-top-radius(0);\n  }\n}\n","// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<ol>`s.\n\n.nav {\n  display: flex;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: $nav-link-padding-y $nav-link-padding-x;\n  @include font-size($nav-link-font-size);\n  font-weight: $nav-link-font-weight;\n  color: $nav-link-color;\n  text-decoration: if($link-decoration == none, null, none);\n  @include transition($nav-link-transition);\n\n  &:hover,\n  &:focus {\n    color: $nav-link-hover-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n\n  // Disabled state lightens text\n  &.disabled {\n    color: $nav-link-disabled-color;\n    pointer-events: none;\n    cursor: default;\n  }\n}\n\n//\n// Tabs\n//\n\n.nav-tabs {\n  border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;\n\n  .nav-link {\n    margin-bottom: -$nav-tabs-border-width;\n    background: none;\n    border: $nav-tabs-border-width solid transparent;\n    @include border-top-radius($nav-tabs-border-radius);\n\n    &:hover,\n    &:focus {\n      border-color: $nav-tabs-link-hover-border-color;\n      // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link\n      isolation: isolate;\n    }\n\n    &.disabled {\n      color: $nav-link-disabled-color;\n      background-color: transparent;\n      border-color: transparent;\n    }\n  }\n\n  .nav-link.active,\n  .nav-item.show .nav-link {\n    color: $nav-tabs-link-active-color;\n    background-color: $nav-tabs-link-active-bg;\n    border-color: $nav-tabs-link-active-border-color;\n  }\n\n  .dropdown-menu {\n    // Make dropdown border overlap tab border\n    margin-top: -$nav-tabs-border-width;\n    // Remove the top rounded corners here since there is a hard edge above the menu\n    @include border-top-radius(0);\n  }\n}\n\n\n//\n// Pills\n//\n\n.nav-pills {\n  .nav-link {\n    background: none;\n    border: 0;\n    @include border-radius($nav-pills-border-radius);\n  }\n\n  .nav-link.active,\n  .show > .nav-link {\n    color: $nav-pills-link-active-color;\n    @include gradient-bg($nav-pills-link-active-bg);\n  }\n}\n\n\n//\n// Justified variants\n//\n\n.nav-fill {\n  > .nav-link,\n  .nav-item {\n    flex: 1 1 auto;\n    text-align: center;\n  }\n}\n\n.nav-justified {\n  > .nav-link,\n  .nav-item {\n    flex-basis: 0;\n    flex-grow: 1;\n    text-align: center;\n  }\n}\n\n.nav-fill,\n.nav-justified {\n  .nav-item .nav-link {\n    width: 100%; // Make sure button will grow\n  }\n}\n\n\n// Tabbable tabs\n//\n// Hide tabbable panes to start, show them when `.active`\n\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n","// Contents\n//\n// Navbar\n// Navbar brand\n// Navbar nav\n// Navbar text\n// Responsive navbar\n// Navbar position\n// Navbar themes\n\n\n// Navbar\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap; // allow us to do the line break for collapsing content\n  align-items: center;\n  justify-content: space-between; // space out brand from logo\n  padding-top: $navbar-padding-y;\n  padding-right: $navbar-padding-x; // default: null\n  padding-bottom: $navbar-padding-y;\n  padding-left: $navbar-padding-x; // default: null\n  @include gradient-bg();\n\n  // Because flex properties aren't inherited, we need to redeclare these first\n  // few properties so that content nested within behave properly.\n  // The `flex-wrap` property is inherited to simplify the expanded navbars\n  %container-flex-properties {\n    display: flex;\n    flex-wrap: inherit;\n    align-items: center;\n    justify-content: space-between;\n  }\n\n  > .container,\n  > .container-fluid {\n    @extend %container-flex-properties;\n  }\n\n  @each $breakpoint, $container-max-width in $container-max-widths {\n    > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {\n      @extend %container-flex-properties;\n    }\n  }\n}\n\n\n// Navbar brand\n//\n// Used for brand, project, or site names.\n\n.navbar-brand {\n  padding-top: $navbar-brand-padding-y;\n  padding-bottom: $navbar-brand-padding-y;\n  margin-right: $navbar-brand-margin-end;\n  @include font-size($navbar-brand-font-size);\n  text-decoration: if($link-decoration == none, null, none);\n  white-space: nowrap;\n\n  &:hover,\n  &:focus {\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n}\n\n\n// Navbar nav\n//\n// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).\n\n.navbar-nav {\n  display: flex;\n  flex-direction: column; // cannot use `inherit` to get the `.navbar`s value\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n\n  .nav-link {\n    padding-right: 0;\n    padding-left: 0;\n  }\n\n  .dropdown-menu {\n    position: static;\n  }\n}\n\n\n// Navbar text\n//\n//\n\n.navbar-text {\n  padding-top: $nav-link-padding-y;\n  padding-bottom: $nav-link-padding-y;\n}\n\n\n// Responsive navbar\n//\n// Custom styles for responsive collapsing and toggling of navbar contents.\n// Powered by the collapse Bootstrap JavaScript plugin.\n\n// When collapsed, prevent the toggleable navbar contents from appearing in\n// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`\n// on the `.navbar` parent.\n.navbar-collapse {\n  flex-basis: 100%;\n  flex-grow: 1;\n  // For always expanded or extra full navbars, ensure content aligns itself\n  // properly vertically. Can be easily overridden with flex utilities.\n  align-items: center;\n}\n\n// Button for toggling the navbar when in its collapsed state\n.navbar-toggler {\n  padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;\n  @include font-size($navbar-toggler-font-size);\n  line-height: 1;\n  background-color: transparent; // remove default button style\n  border: $border-width solid transparent; // remove default button style\n  @include border-radius($navbar-toggler-border-radius);\n  @include transition($navbar-toggler-transition);\n\n  &:hover {\n    text-decoration: none;\n  }\n\n  &:focus {\n    text-decoration: none;\n    outline: 0;\n    box-shadow: 0 0 0 $navbar-toggler-focus-width;\n  }\n}\n\n// Keep as a separate element so folks can easily override it with another icon\n// or image file as needed.\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 100%;\n}\n\n.navbar-nav-scroll {\n  max-height: var(--#{$variable-prefix}scroll-height, 75vh);\n  overflow-y: auto;\n}\n\n// scss-docs-start navbar-expand-loop\n// Generate series of `.navbar-expand-*` responsive classes for configuring\n// where your navbar collapses.\n.navbar-expand {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $next: breakpoint-next($breakpoint, $grid-breakpoints);\n    $infix: breakpoint-infix($next, $grid-breakpoints);\n\n    // stylelint-disable-next-line scss/selector-no-union-class-name\n    &#{$infix} {\n      @include media-breakpoint-up($next) {\n        flex-wrap: nowrap;\n        justify-content: flex-start;\n\n        .navbar-nav {\n          flex-direction: row;\n\n          .dropdown-menu {\n            position: absolute;\n          }\n\n          .nav-link {\n            padding-right: $navbar-nav-link-padding-x;\n            padding-left: $navbar-nav-link-padding-x;\n          }\n        }\n\n        .navbar-nav-scroll {\n          overflow: visible;\n        }\n\n        .navbar-collapse {\n          display: flex !important; // stylelint-disable-line declaration-no-important\n          flex-basis: auto;\n        }\n\n        .navbar-toggler {\n          display: none;\n        }\n\n        .offcanvas-header {\n          display: none;\n        }\n\n        .offcanvas {\n          position: inherit;\n          bottom: 0;\n          z-index: 1000;\n          flex-grow: 1;\n          visibility: visible !important; // stylelint-disable-line declaration-no-important\n          background-color: transparent;\n          border-right: 0;\n          border-left: 0;\n          @include transition(none);\n          transform: none;\n        }\n        .offcanvas-top,\n        .offcanvas-bottom {\n          height: auto;\n          border-top: 0;\n          border-bottom: 0;\n        }\n\n        .offcanvas-body {\n          display: flex;\n          flex-grow: 0;\n          padding: 0;\n          overflow-y: visible;\n        }\n      }\n    }\n  }\n}\n// scss-docs-end navbar-expand-loop\n\n// Navbar themes\n//\n// Styles for switching between navbars with light or dark background.\n\n// Dark links against a light background\n.navbar-light {\n  .navbar-brand {\n    color: $navbar-light-brand-color;\n\n    &:hover,\n    &:focus {\n      color: $navbar-light-brand-hover-color;\n    }\n  }\n\n  .navbar-nav {\n    .nav-link {\n      color: $navbar-light-color;\n\n      &:hover,\n      &:focus {\n        color: $navbar-light-hover-color;\n      }\n\n      &.disabled {\n        color: $navbar-light-disabled-color;\n      }\n    }\n\n    .show > .nav-link,\n    .nav-link.active {\n      color: $navbar-light-active-color;\n    }\n  }\n\n  .navbar-toggler {\n    color: $navbar-light-color;\n    border-color: $navbar-light-toggler-border-color;\n  }\n\n  .navbar-toggler-icon {\n    background-image: escape-svg($navbar-light-toggler-icon-bg);\n  }\n\n  .navbar-text {\n    color: $navbar-light-color;\n\n    a,\n    a:hover,\n    a:focus  {\n      color: $navbar-light-active-color;\n    }\n  }\n}\n\n// White links against a dark background\n.navbar-dark {\n  .navbar-brand {\n    color: $navbar-dark-brand-color;\n\n    &:hover,\n    &:focus {\n      color: $navbar-dark-brand-hover-color;\n    }\n  }\n\n  .navbar-nav {\n    .nav-link {\n      color: $navbar-dark-color;\n\n      &:hover,\n      &:focus {\n        color: $navbar-dark-hover-color;\n      }\n\n      &.disabled {\n        color: $navbar-dark-disabled-color;\n      }\n    }\n\n    .show > .nav-link,\n    .nav-link.active {\n      color: $navbar-dark-active-color;\n    }\n  }\n\n  .navbar-toggler {\n    color: $navbar-dark-color;\n    border-color: $navbar-dark-toggler-border-color;\n  }\n\n  .navbar-toggler-icon {\n    background-image: escape-svg($navbar-dark-toggler-icon-bg);\n  }\n\n  .navbar-text {\n    color: $navbar-dark-color;\n    a,\n    a:hover,\n    a:focus {\n      color: $navbar-dark-active-color;\n    }\n  }\n}\n","//\n// Base styles\n//\n\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\n  height: $card-height;\n  word-wrap: break-word;\n  background-color: $card-bg;\n  background-clip: border-box;\n  border: $card-border-width solid $card-border-color;\n  @include border-radius($card-border-radius);\n  @include box-shadow($card-box-shadow);\n\n  > hr {\n    margin-right: 0;\n    margin-left: 0;\n  }\n\n  > .list-group {\n    border-top: inherit;\n    border-bottom: inherit;\n\n    &:first-child {\n      border-top-width: 0;\n      @include border-top-radius($card-inner-border-radius);\n    }\n\n    &:last-child  {\n      border-bottom-width: 0;\n      @include border-bottom-radius($card-inner-border-radius);\n    }\n  }\n\n  // Due to specificity of the above selector (`.card > .list-group`), we must\n  // use a child selector here to prevent double borders.\n  > .card-header + .list-group,\n  > .list-group + .card-footer {\n    border-top: 0;\n  }\n}\n\n.card-body {\n  // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n  // as much space as possible, ensuring footers are aligned to the bottom.\n  flex: 1 1 auto;\n  padding: $card-spacer-y $card-spacer-x;\n  color: $card-color;\n}\n\n.card-title {\n  margin-bottom: $card-title-spacer-y;\n}\n\n.card-subtitle {\n  margin-top: -$card-title-spacer-y * .5;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link {\n  &:hover {\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n\n  + .card-link {\n    margin-left: $card-spacer-x;\n  }\n}\n\n//\n// Optional textual caps\n//\n\n.card-header {\n  padding: $card-cap-padding-y $card-cap-padding-x;\n  margin-bottom: 0; // Removes the default margin-bottom of <hN>\n  color: $card-cap-color;\n  background-color: $card-cap-bg;\n  border-bottom: $card-border-width solid $card-border-color;\n\n  &:first-child {\n    @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);\n  }\n}\n\n.card-footer {\n  padding: $card-cap-padding-y $card-cap-padding-x;\n  color: $card-cap-color;\n  background-color: $card-cap-bg;\n  border-top: $card-border-width solid $card-border-color;\n\n  &:last-child {\n    @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);\n  }\n}\n\n\n//\n// Header navs\n//\n\n.card-header-tabs {\n  margin-right: -$card-cap-padding-x * .5;\n  margin-bottom: -$card-cap-padding-y;\n  margin-left: -$card-cap-padding-x * .5;\n  border-bottom: 0;\n\n  @if $nav-tabs-link-active-bg != $card-bg {\n    .nav-link.active {\n      background-color: $card-bg;\n      border-bottom-color: $card-bg;\n    }\n  }\n}\n\n.card-header-pills {\n  margin-right: -$card-cap-padding-x * .5;\n  margin-left: -$card-cap-padding-x * .5;\n}\n\n// Card image\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: $card-img-overlay-padding;\n  @include border-radius($card-inner-border-radius);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n}\n\n.card-img,\n.card-img-top {\n  @include border-top-radius($card-inner-border-radius);\n}\n\n.card-img,\n.card-img-bottom {\n  @include border-bottom-radius($card-inner-border-radius);\n}\n\n\n//\n// Card groups\n//\n\n.card-group {\n  // The child selector allows nested `.card` within `.card-group`\n  // to display properly.\n  > .card {\n    margin-bottom: $card-group-margin;\n  }\n\n  @include media-breakpoint-up(sm) {\n    display: flex;\n    flex-flow: row wrap;\n    // The child selector allows nested `.card` within `.card-group`\n    // to display properly.\n    > .card {\n      // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n      flex: 1 0 0%;\n      margin-bottom: 0;\n\n      + .card {\n        margin-left: 0;\n        border-left: 0;\n      }\n\n      // Handle rounded corners\n      @if $enable-rounded {\n        &:not(:last-child) {\n          @include border-end-radius(0);\n\n          .card-img-top,\n          .card-header {\n            // stylelint-disable-next-line property-disallowed-list\n            border-top-right-radius: 0;\n          }\n          .card-img-bottom,\n          .card-footer {\n            // stylelint-disable-next-line property-disallowed-list\n            border-bottom-right-radius: 0;\n          }\n        }\n\n        &:not(:first-child) {\n          @include border-start-radius(0);\n\n          .card-img-top,\n          .card-header {\n            // stylelint-disable-next-line property-disallowed-list\n            border-top-left-radius: 0;\n          }\n          .card-img-bottom,\n          .card-footer {\n            // stylelint-disable-next-line property-disallowed-list\n            border-bottom-left-radius: 0;\n          }\n        }\n      }\n    }\n  }\n}\n","//\n// Base styles\n//\n\n.accordion-button {\n  position: relative;\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: $accordion-button-padding-y $accordion-button-padding-x;\n  @include font-size($font-size-base);\n  color: $accordion-button-color;\n  text-align: left; // Reset button style\n  background-color: $accordion-button-bg;\n  border: 0;\n  @include border-radius(0);\n  overflow-anchor: none;\n  @include transition($accordion-transition);\n\n  &:not(.collapsed) {\n    color: $accordion-button-active-color;\n    background-color: $accordion-button-active-bg;\n    box-shadow: inset 0 ($accordion-border-width * -1) 0 $accordion-border-color;\n\n    &::after {\n      background-image: escape-svg($accordion-button-active-icon);\n      transform: $accordion-icon-transform;\n    }\n  }\n\n  // Accordion icon\n  &::after {\n    flex-shrink: 0;\n    width: $accordion-icon-width;\n    height: $accordion-icon-width;\n    margin-left: auto;\n    content: \"\";\n    background-image: escape-svg($accordion-button-icon);\n    background-repeat: no-repeat;\n    background-size: $accordion-icon-width;\n    @include transition($accordion-icon-transition);\n  }\n\n  &:hover {\n    z-index: 2;\n  }\n\n  &:focus {\n    z-index: 3;\n    border-color: $accordion-button-focus-border-color;\n    outline: 0;\n    box-shadow: $accordion-button-focus-box-shadow;\n  }\n}\n\n.accordion-header {\n  margin-bottom: 0;\n}\n\n.accordion-item {\n  background-color: $accordion-bg;\n  border: $accordion-border-width solid $accordion-border-color;\n\n  &:first-of-type {\n    @include border-top-radius($accordion-border-radius);\n\n    .accordion-button {\n      @include border-top-radius($accordion-inner-border-radius);\n    }\n  }\n\n  &:not(:first-of-type) {\n    border-top: 0;\n  }\n\n  // Only set a border-radius on the last item if the accordion is collapsed\n  &:last-of-type {\n    @include border-bottom-radius($accordion-border-radius);\n\n    .accordion-button {\n      &.collapsed {\n        @include border-bottom-radius($accordion-inner-border-radius);\n      }\n    }\n\n    .accordion-collapse {\n      @include border-bottom-radius($accordion-border-radius);\n    }\n  }\n}\n\n.accordion-body {\n  padding: $accordion-body-padding-y $accordion-body-padding-x;\n}\n\n\n// Flush accordion items\n//\n// Remove borders and border-radius to keep accordion items edge-to-edge.\n\n.accordion-flush {\n  .accordion-collapse {\n    border-width: 0;\n  }\n\n  .accordion-item {\n    border-right: 0;\n    border-left: 0;\n    @include border-radius(0);\n\n    &:first-child { border-top: 0; }\n    &:last-child { border-bottom: 0; }\n\n    .accordion-button {\n      @include border-radius(0);\n    }\n  }\n}\n",".breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  padding: $breadcrumb-padding-y $breadcrumb-padding-x;\n  margin-bottom: $breadcrumb-margin-bottom;\n  @include font-size($breadcrumb-font-size);\n  list-style: none;\n  background-color: $breadcrumb-bg;\n  @include border-radius($breadcrumb-border-radius);\n}\n\n.breadcrumb-item {\n  // The separator between breadcrumbs (by default, a forward-slash: \"/\")\n  + .breadcrumb-item {\n    padding-left: $breadcrumb-item-padding-x;\n\n    &::before {\n      float: left; // Suppress inline spacings and underlining of the separator\n      padding-right: $breadcrumb-item-padding-x;\n      color: $breadcrumb-divider-color;\n      content: var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{\"/* rtl:\"} var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{\"*/\"};\n    }\n  }\n\n  &.active {\n    color: $breadcrumb-active-color;\n  }\n}\n",".pagination {\n  display: flex;\n  @include list-unstyled();\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  color: $pagination-color;\n  text-decoration: if($link-decoration == none, null, none);\n  background-color: $pagination-bg;\n  border: $pagination-border-width solid $pagination-border-color;\n  @include transition($pagination-transition);\n\n  &:hover {\n    z-index: 2;\n    color: $pagination-hover-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n    background-color: $pagination-hover-bg;\n    border-color: $pagination-hover-border-color;\n  }\n\n  &:focus {\n    z-index: 3;\n    color: $pagination-focus-color;\n    background-color: $pagination-focus-bg;\n    outline: $pagination-focus-outline;\n    box-shadow: $pagination-focus-box-shadow;\n  }\n}\n\n.page-item {\n  &:not(:first-child) .page-link {\n    margin-left: $pagination-margin-start;\n  }\n\n  &.active .page-link {\n    z-index: 3;\n    color: $pagination-active-color;\n    @include gradient-bg($pagination-active-bg);\n    border-color: $pagination-active-border-color;\n  }\n\n  &.disabled .page-link {\n    color: $pagination-disabled-color;\n    pointer-events: none;\n    background-color: $pagination-disabled-bg;\n    border-color: $pagination-disabled-border-color;\n  }\n}\n\n\n//\n// Sizing\n//\n@include pagination-size($pagination-padding-y, $pagination-padding-x, null, $pagination-border-radius);\n\n.pagination-lg {\n  @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $pagination-border-radius-lg);\n}\n\n.pagination-sm {\n  @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $pagination-border-radius-sm);\n}\n","// Pagination\n\n// scss-docs-start pagination-mixin\n@mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) {\n  .page-link {\n    padding: $padding-y $padding-x;\n    @include font-size($font-size);\n  }\n\n  .page-item {\n    @if $pagination-margin-start == (-$pagination-border-width) {\n      &:first-child {\n        .page-link {\n          @include border-start-radius($border-radius);\n        }\n      }\n\n      &:last-child {\n        .page-link {\n          @include border-end-radius($border-radius);\n        }\n      }\n    } @else {\n      //Add border-radius to all pageLinks in case they have left margin\n      .page-link {\n        @include border-radius($border-radius);\n      }\n    }\n  }\n}\n// scss-docs-end pagination-mixin\n","// Base class\n//\n// Requires one of the contextual, color modifier classes for `color` and\n// `background-color`.\n\n.badge {\n  display: inline-block;\n  padding: $badge-padding-y $badge-padding-x;\n  @include font-size($badge-font-size);\n  font-weight: $badge-font-weight;\n  line-height: 1;\n  color: $badge-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  @include border-radius($badge-border-radius);\n  @include gradient-bg();\n\n  // Empty badges collapse automatically\n  &:empty {\n    display: none;\n  }\n}\n\n// Quick fix for badges in buttons\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n","//\n// Base styles\n//\n\n.alert {\n  position: relative;\n  padding: $alert-padding-y $alert-padding-x;\n  margin-bottom: $alert-margin-bottom;\n  border: $alert-border-width solid transparent;\n  @include border-radius($alert-border-radius);\n}\n\n// Headings for larger alerts\n.alert-heading {\n  // Specified to prevent conflicts of changing $headings-color\n  color: inherit;\n}\n\n// Provide class for links that match alerts\n.alert-link {\n  font-weight: $alert-link-font-weight;\n}\n\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissible {\n  padding-right: $alert-dismissible-padding-r;\n\n  // Adjust close link position\n  .btn-close {\n    position: absolute;\n    top: 0;\n    right: 0;\n    z-index: $stretched-link-z-index + 1;\n    padding: $alert-padding-y * 1.25 $alert-padding-x;\n  }\n}\n\n\n// scss-docs-start alert-modifiers\n// Generate contextual modifier classes for colorizing the alert.\n\n@each $state, $value in $theme-colors {\n  $alert-background: shift-color($value, $alert-bg-scale);\n  $alert-border: shift-color($value, $alert-border-scale);\n  $alert-color: shift-color($value, $alert-color-scale);\n  @if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) {\n    $alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale));\n  }\n  .alert-#{$state} {\n    @include alert-variant($alert-background, $alert-border, $alert-color);\n  }\n}\n// scss-docs-end alert-modifiers\n","// scss-docs-start alert-variant-mixin\n@mixin alert-variant($background, $border, $color) {\n  color: $color;\n  @include gradient-bg($background);\n  border-color: $border;\n\n  .alert-link {\n    color: shade-color($color, 20%);\n  }\n}\n// scss-docs-end alert-variant-mixin\n","// Disable animation if transitions are disabled\n\n// scss-docs-start progress-keyframes\n@if $enable-transitions {\n  @keyframes progress-bar-stripes {\n    0% { background-position-x: $progress-height; }\n  }\n}\n// scss-docs-end progress-keyframes\n\n.progress {\n  display: flex;\n  height: $progress-height;\n  overflow: hidden; // force rounded corners by cropping it\n  @include font-size($progress-font-size);\n  background-color: $progress-bg;\n  @include border-radius($progress-border-radius);\n  @include box-shadow($progress-box-shadow);\n}\n\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  color: $progress-bar-color;\n  text-align: center;\n  white-space: nowrap;\n  background-color: $progress-bar-bg;\n  @include transition($progress-bar-transition);\n}\n\n.progress-bar-striped {\n  @include gradient-striped();\n  background-size: $progress-height $progress-height;\n}\n\n@if $enable-transitions {\n  .progress-bar-animated {\n    animation: $progress-bar-animation-timing progress-bar-stripes;\n\n    @if $enable-reduced-motion {\n      @media (prefers-reduced-motion: reduce) {\n        animation: none;\n      }\n    }\n  }\n}\n","// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n  display: flex;\n  flex-direction: column;\n\n  // No need to set list-style: none; since .list-group-item is block level\n  padding-left: 0; // reset padding because ul and ol\n  margin-bottom: 0;\n  @include border-radius($list-group-border-radius);\n}\n\n.list-group-numbered {\n  list-style-type: none;\n  counter-reset: section;\n\n  > li::before {\n    // Increments only this instance of the section counter\n    content: counters(section, \".\") \". \";\n    counter-increment: section;\n  }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive\n// list items. Includes an extra `.active` modifier class for selected items.\n\n.list-group-item-action {\n  width: 100%; // For `<button>`s (anchors become 100% by default though)\n  color: $list-group-action-color;\n  text-align: inherit; // For `<button>`s (anchors inherit)\n\n  // Hover state\n  &:hover,\n  &:focus {\n    z-index: 1; // Place hover/focus items above their siblings for proper border styling\n    color: $list-group-action-hover-color;\n    text-decoration: none;\n    background-color: $list-group-hover-bg;\n  }\n\n  &:active {\n    color: $list-group-action-active-color;\n    background-color: $list-group-action-active-bg;\n  }\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: $list-group-item-padding-y $list-group-item-padding-x;\n  color: $list-group-color;\n  text-decoration: if($link-decoration == none, null, none);\n  background-color: $list-group-bg;\n  border: $list-group-border-width solid $list-group-border-color;\n\n  &:first-child {\n    @include border-top-radius(inherit);\n  }\n\n  &:last-child {\n    @include border-bottom-radius(inherit);\n  }\n\n  &.disabled,\n  &:disabled {\n    color: $list-group-disabled-color;\n    pointer-events: none;\n    background-color: $list-group-disabled-bg;\n  }\n\n  // Include both here for `<a>`s and `<button>`s\n  &.active {\n    z-index: 2; // Place active items above their siblings for proper border styling\n    color: $list-group-active-color;\n    background-color: $list-group-active-bg;\n    border-color: $list-group-active-border-color;\n  }\n\n  & + & {\n    border-top-width: 0;\n\n    &.active {\n      margin-top: -$list-group-border-width;\n      border-top-width: $list-group-border-width;\n    }\n  }\n}\n\n\n// Horizontal\n//\n// Change the layout of list group items from vertical (default) to horizontal.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .list-group-horizontal#{$infix} {\n      flex-direction: row;\n\n      > .list-group-item {\n        &:first-child {\n          @include border-bottom-start-radius($list-group-border-radius);\n          @include border-top-end-radius(0);\n        }\n\n        &:last-child {\n          @include border-top-end-radius($list-group-border-radius);\n          @include border-bottom-start-radius(0);\n        }\n\n        &.active {\n          margin-top: 0;\n        }\n\n        + .list-group-item {\n          border-top-width: $list-group-border-width;\n          border-left-width: 0;\n\n          &.active {\n            margin-left: -$list-group-border-width;\n            border-left-width: $list-group-border-width;\n          }\n        }\n      }\n    }\n  }\n}\n\n\n// Flush list items\n//\n// Remove borders and border-radius to keep list group items edge-to-edge. Most\n// useful within other components (e.g., cards).\n\n.list-group-flush {\n  @include border-radius(0);\n\n  > .list-group-item {\n    border-width: 0 0 $list-group-border-width;\n\n    &:last-child {\n      border-bottom-width: 0;\n    }\n  }\n}\n\n\n// scss-docs-start list-group-modifiers\n// List group contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n@each $state, $value in $theme-colors {\n  $list-group-variant-bg: shift-color($value, $list-group-item-bg-scale);\n  $list-group-variant-color: shift-color($value, $list-group-item-color-scale);\n  @if (contrast-ratio($list-group-variant-bg, $list-group-variant-color) < $min-contrast-ratio) {\n    $list-group-variant-color: mix($value, color-contrast($list-group-variant-bg), abs($list-group-item-color-scale));\n  }\n\n  @include list-group-item-variant($state, $list-group-variant-bg, $list-group-variant-color);\n}\n// scss-docs-end list-group-modifiers\n","// List Groups\n\n// scss-docs-start list-group-mixin\n@mixin list-group-item-variant($state, $background, $color) {\n  .list-group-item-#{$state} {\n    color: $color;\n    background-color: $background;\n\n    &.list-group-item-action {\n      &:hover,\n      &:focus {\n        color: $color;\n        background-color: shade-color($background, 10%);\n      }\n\n      &.active {\n        color: $white;\n        background-color: $color;\n        border-color: $color;\n      }\n    }\n  }\n}\n// scss-docs-end list-group-mixin\n","// transparent background and border properties included for button version.\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n.btn-close {\n  box-sizing: content-box;\n  width: $btn-close-width;\n  height: $btn-close-height;\n  padding: $btn-close-padding-y $btn-close-padding-x;\n  color: $btn-close-color;\n  background: transparent escape-svg($btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements\n  border: 0; // for button elements\n  @include border-radius();\n  opacity: $btn-close-opacity;\n\n  // Override <a>'s hover style\n  &:hover {\n    color: $btn-close-color;\n    text-decoration: none;\n    opacity: $btn-close-hover-opacity;\n  }\n\n  &:focus {\n    outline: 0;\n    box-shadow: $btn-close-focus-shadow;\n    opacity: $btn-close-focus-opacity;\n  }\n\n  &:disabled,\n  &.disabled {\n    pointer-events: none;\n    user-select: none;\n    opacity: $btn-close-disabled-opacity;\n  }\n}\n\n.btn-close-white {\n  filter: $btn-close-white-filter;\n}\n",".toast {\n  width: $toast-max-width;\n  max-width: 100%;\n  @include font-size($toast-font-size);\n  color: $toast-color;\n  pointer-events: auto;\n  background-color: $toast-background-color;\n  background-clip: padding-box;\n  border: $toast-border-width solid $toast-border-color;\n  box-shadow: $toast-box-shadow;\n  @include border-radius($toast-border-radius);\n\n  &.showing {\n    opacity: 0;\n  }\n\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.toast-container {\n  width: max-content;\n  max-width: 100%;\n  pointer-events: none;\n\n  > :not(:last-child) {\n    margin-bottom: $toast-spacing;\n  }\n}\n\n.toast-header {\n  display: flex;\n  align-items: center;\n  padding: $toast-padding-y $toast-padding-x;\n  color: $toast-header-color;\n  background-color: $toast-header-background-color;\n  background-clip: padding-box;\n  border-bottom: $toast-border-width solid $toast-header-border-color;\n  @include border-top-radius(subtract($toast-border-radius, $toast-border-width));\n\n  .btn-close {\n    margin-right: $toast-padding-x * -.5;\n    margin-left: $toast-padding-x;\n  }\n}\n\n.toast-body {\n  padding: $toast-padding-x; // apply to both vertical and horizontal\n  word-wrap: break-word;\n}\n","// .modal-open      - body class for killing the scroll\n// .modal           - container to scroll within\n// .modal-dialog    - positioning shell for the actual modal\n// .modal-content   - actual modal w/ bg and corners and stuff\n\n\n// Container that the modal scrolls within\n.modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: $zindex-modal;\n  display: none;\n  width: 100%;\n  height: 100%;\n  overflow-x: hidden;\n  overflow-y: auto;\n  // Prevent Chrome on Windows from adding a focus outline. For details, see\n  // https://github.com/twbs/bootstrap/pull/10951.\n  outline: 0;\n  // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a\n  // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342\n  // See also https://github.com/twbs/bootstrap/issues/17695\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: $modal-dialog-margin;\n  // allow clicks to pass through for custom click handling to close modal\n  pointer-events: none;\n\n  // When fading in the modal, animate it to slide down\n  .modal.fade & {\n    @include transition($modal-transition);\n    transform: $modal-fade-transform;\n  }\n  .modal.show & {\n    transform: $modal-show-transform;\n  }\n\n  // When trying to close, animate focus to scale\n  .modal.modal-static & {\n    transform: $modal-scale-transform;\n  }\n}\n\n.modal-dialog-scrollable {\n  height: subtract(100%, $modal-dialog-margin * 2);\n\n  .modal-content {\n    max-height: 100%;\n    overflow: hidden;\n  }\n\n  .modal-body {\n    overflow-y: auto;\n  }\n}\n\n.modal-dialog-centered {\n  display: flex;\n  align-items: center;\n  min-height: subtract(100%, $modal-dialog-margin * 2);\n}\n\n// Actual modal\n.modal-content {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`\n  // counteract the pointer-events: none; in the .modal-dialog\n  color: $modal-content-color;\n  pointer-events: auto;\n  background-color: $modal-content-bg;\n  background-clip: padding-box;\n  border: $modal-content-border-width solid $modal-content-border-color;\n  @include border-radius($modal-content-border-radius);\n  @include box-shadow($modal-content-box-shadow-xs);\n  // Remove focus outline from opened modal\n  outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n  @include overlay-backdrop($zindex-modal-backdrop, $modal-backdrop-bg, $modal-backdrop-opacity);\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends\n  padding: $modal-header-padding;\n  border-bottom: $modal-header-border-width solid $modal-header-border-color;\n  @include border-top-radius($modal-content-inner-border-radius);\n\n  .btn-close {\n    padding: ($modal-header-padding-y * .5) ($modal-header-padding-x * .5);\n    margin: ($modal-header-padding-y * -.5) ($modal-header-padding-x * -.5) ($modal-header-padding-y * -.5) auto;\n  }\n}\n\n// Title text within header\n.modal-title {\n  margin-bottom: 0;\n  line-height: $modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n  position: relative;\n  // Enable `flex-grow: 1` so that the body take up as much space as possible\n  // when there should be a fixed height on `.modal-dialog`.\n  flex: 1 1 auto;\n  padding: $modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n  display: flex;\n  flex-wrap: wrap;\n  flex-shrink: 0;\n  align-items: center; // vertically center\n  justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items\n  padding: $modal-inner-padding - $modal-footer-margin-between * .5;\n  border-top: $modal-footer-border-width solid $modal-footer-border-color;\n  @include border-bottom-radius($modal-content-inner-border-radius);\n\n  // Place margin between footer elements\n  // This solution is far from ideal because of the universal selector usage,\n  // but is needed to fix https://github.com/twbs/bootstrap/issues/24800\n  > * {\n    margin: $modal-footer-margin-between * .5;\n  }\n}\n\n// Scale up the modal\n@include media-breakpoint-up(sm) {\n  // Automatically set modal's width for larger viewports\n  .modal-dialog {\n    max-width: $modal-md;\n    margin: $modal-dialog-margin-y-sm-up auto;\n  }\n\n  .modal-dialog-scrollable {\n    height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);\n  }\n\n  .modal-dialog-centered {\n    min-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);\n  }\n\n  .modal-content {\n    @include box-shadow($modal-content-box-shadow-sm-up);\n  }\n\n  .modal-sm { max-width: $modal-sm; }\n}\n\n@include media-breakpoint-up(lg) {\n  .modal-lg,\n  .modal-xl {\n    max-width: $modal-lg;\n  }\n}\n\n@include media-breakpoint-up(xl) {\n  .modal-xl { max-width: $modal-xl; }\n}\n\n// scss-docs-start modal-fullscreen-loop\n@each $breakpoint in map-keys($grid-breakpoints) {\n  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n  $postfix: if($infix != \"\", $infix + \"-down\", \"\");\n\n  @include media-breakpoint-down($breakpoint) {\n    .modal-fullscreen#{$postfix} {\n      width: 100vw;\n      max-width: none;\n      height: 100%;\n      margin: 0;\n\n      .modal-content {\n        height: 100%;\n        border: 0;\n        @include border-radius(0);\n      }\n\n      .modal-header {\n        @include border-radius(0);\n      }\n\n      .modal-body {\n        overflow-y: auto;\n      }\n\n      .modal-footer {\n        @include border-radius(0);\n      }\n    }\n  }\n}\n// scss-docs-end modal-fullscreen-loop\n","// Shared between modals and offcanvases\n@mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity) {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: $zindex;\n  width: 100vw;\n  height: 100vh;\n  background-color: $backdrop-bg;\n\n  // Fade for backdrop\n  &.fade { opacity: 0; }\n  &.show { opacity: $backdrop-opacity; }\n}\n","// Base class\n.tooltip {\n  position: absolute;\n  z-index: $zindex-tooltip;\n  display: block;\n  margin: $tooltip-margin;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  @include reset-text();\n  @include font-size($tooltip-font-size);\n  // Allow breaking very long words so they don't overflow the tooltip's bounds\n  word-wrap: break-word;\n  opacity: 0;\n\n  &.show { opacity: $tooltip-opacity; }\n\n  .tooltip-arrow {\n    position: absolute;\n    display: block;\n    width: $tooltip-arrow-width;\n    height: $tooltip-arrow-height;\n\n    &::before {\n      position: absolute;\n      content: \"\";\n      border-color: transparent;\n      border-style: solid;\n    }\n  }\n}\n\n.bs-tooltip-top {\n  padding: $tooltip-arrow-height 0;\n\n  .tooltip-arrow {\n    bottom: 0;\n\n    &::before {\n      top: -1px;\n      border-width: $tooltip-arrow-height ($tooltip-arrow-width * .5) 0;\n      border-top-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-end {\n  padding: 0 $tooltip-arrow-height;\n\n  .tooltip-arrow {\n    left: 0;\n    width: $tooltip-arrow-height;\n    height: $tooltip-arrow-width;\n\n    &::before {\n      right: -1px;\n      border-width: ($tooltip-arrow-width * .5) $tooltip-arrow-height ($tooltip-arrow-width * .5) 0;\n      border-right-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-bottom {\n  padding: $tooltip-arrow-height 0;\n\n  .tooltip-arrow {\n    top: 0;\n\n    &::before {\n      bottom: -1px;\n      border-width: 0 ($tooltip-arrow-width * .5) $tooltip-arrow-height;\n      border-bottom-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-start {\n  padding: 0 $tooltip-arrow-height;\n\n  .tooltip-arrow {\n    right: 0;\n    width: $tooltip-arrow-height;\n    height: $tooltip-arrow-width;\n\n    &::before {\n      left: -1px;\n      border-width: ($tooltip-arrow-width * .5) 0 ($tooltip-arrow-width * .5) $tooltip-arrow-height;\n      border-left-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-auto {\n  &[data-popper-placement^=\"top\"] {\n    @extend .bs-tooltip-top;\n  }\n  &[data-popper-placement^=\"right\"] {\n    @extend .bs-tooltip-end;\n  }\n  &[data-popper-placement^=\"bottom\"] {\n    @extend .bs-tooltip-bottom;\n  }\n  &[data-popper-placement^=\"left\"] {\n    @extend .bs-tooltip-start;\n  }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n  max-width: $tooltip-max-width;\n  padding: $tooltip-padding-y $tooltip-padding-x;\n  color: $tooltip-color;\n  text-align: center;\n  background-color: $tooltip-bg;\n  @include border-radius($tooltip-border-radius);\n}\n","@mixin reset-text {\n  font-family: $font-family-base;\n  // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.\n  font-style: normal;\n  font-weight: $font-weight-normal;\n  line-height: $line-height-base;\n  text-align: left; // Fallback for where `start` is not supported\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n}\n",".popover {\n  position: absolute;\n  top: 0;\n  left: 0 #{\"/* rtl:ignore */\"};\n  z-index: $zindex-popover;\n  display: block;\n  max-width: $popover-max-width;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  @include reset-text();\n  @include font-size($popover-font-size);\n  // Allow breaking very long words so they don't overflow the popover's bounds\n  word-wrap: break-word;\n  background-color: $popover-bg;\n  background-clip: padding-box;\n  border: $popover-border-width solid $popover-border-color;\n  @include border-radius($popover-border-radius);\n  @include box-shadow($popover-box-shadow);\n\n  .popover-arrow {\n    position: absolute;\n    display: block;\n    width: $popover-arrow-width;\n    height: $popover-arrow-height;\n\n    &::before,\n    &::after {\n      position: absolute;\n      display: block;\n      content: \"\";\n      border-color: transparent;\n      border-style: solid;\n    }\n  }\n}\n\n.bs-popover-top {\n  > .popover-arrow {\n    bottom: subtract(-$popover-arrow-height, $popover-border-width);\n\n    &::before {\n      bottom: 0;\n      border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-top-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      bottom: $popover-border-width;\n      border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-top-color: $popover-arrow-color;\n    }\n  }\n}\n\n.bs-popover-end {\n  > .popover-arrow {\n    left: subtract(-$popover-arrow-height, $popover-border-width);\n    width: $popover-arrow-height;\n    height: $popover-arrow-width;\n\n    &::before {\n      left: 0;\n      border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-right-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      left: $popover-border-width;\n      border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-right-color: $popover-arrow-color;\n    }\n  }\n}\n\n.bs-popover-bottom {\n  > .popover-arrow {\n    top: subtract(-$popover-arrow-height, $popover-border-width);\n\n    &::before {\n      top: 0;\n      border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);\n      border-bottom-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      top: $popover-border-width;\n      border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);\n      border-bottom-color: $popover-arrow-color;\n    }\n  }\n\n  // This will remove the popover-header's border just below the arrow\n  .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: $popover-arrow-width;\n    margin-left: -$popover-arrow-width * .5;\n    content: \"\";\n    border-bottom: $popover-border-width solid $popover-header-bg;\n  }\n}\n\n.bs-popover-start {\n  > .popover-arrow {\n    right: subtract(-$popover-arrow-height, $popover-border-width);\n    width: $popover-arrow-height;\n    height: $popover-arrow-width;\n\n    &::before {\n      right: 0;\n      border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;\n      border-left-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      right: $popover-border-width;\n      border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;\n      border-left-color: $popover-arrow-color;\n    }\n  }\n}\n\n.bs-popover-auto {\n  &[data-popper-placement^=\"top\"] {\n    @extend .bs-popover-top;\n  }\n  &[data-popper-placement^=\"right\"] {\n    @extend .bs-popover-end;\n  }\n  &[data-popper-placement^=\"bottom\"] {\n    @extend .bs-popover-bottom;\n  }\n  &[data-popper-placement^=\"left\"] {\n    @extend .bs-popover-start;\n  }\n}\n\n// Offset the popover to account for the popover arrow\n.popover-header {\n  padding: $popover-header-padding-y $popover-header-padding-x;\n  margin-bottom: 0; // Reset the default from Reboot\n  @include font-size($font-size-base);\n  color: $popover-header-color;\n  background-color: $popover-header-bg;\n  border-bottom: $popover-border-width solid $popover-border-color;\n  @include border-top-radius($popover-inner-border-radius);\n\n  &:empty {\n    display: none;\n  }\n}\n\n.popover-body {\n  padding: $popover-body-padding-y $popover-body-padding-x;\n  color: $popover-body-color;\n}\n","// Notes on the classes:\n//\n// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)\n//    even when their scroll action started on a carousel, but for compatibility (with Firefox)\n//    we're preventing all actions instead\n// 2. The .carousel-item-start and .carousel-item-end is used to indicate where\n//    the active slide is heading.\n// 3. .active.carousel-item is the current slide.\n// 4. .active.carousel-item-start and .active.carousel-item-end is the current\n//    slide in its in-transition state. Only one of these occurs at a time.\n// 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end\n//    is the upcoming slide in transition.\n\n.carousel {\n  position: relative;\n}\n\n.carousel.pointer-event {\n  touch-action: pan-y;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n  @include clearfix();\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  float: left;\n  width: 100%;\n  margin-right: -100%;\n  backface-visibility: hidden;\n  @include transition($carousel-transition);\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n/* rtl:begin:ignore */\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n  transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n  transform: translateX(-100%);\n}\n\n/* rtl:end:ignore */\n\n\n//\n// Alternate transitions\n//\n\n.carousel-fade {\n  .carousel-item {\n    opacity: 0;\n    transition-property: opacity;\n    transform: none;\n  }\n\n  .carousel-item.active,\n  .carousel-item-next.carousel-item-start,\n  .carousel-item-prev.carousel-item-end {\n    z-index: 1;\n    opacity: 1;\n  }\n\n  .active.carousel-item-start,\n  .active.carousel-item-end {\n    z-index: 0;\n    opacity: 0;\n    @include transition(opacity 0s $carousel-transition-duration);\n  }\n}\n\n\n//\n// Left/right controls for nav\n//\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n  // Use flex for alignment (1-3)\n  display: flex; // 1. allow flex styles\n  align-items: center; // 2. vertically center contents\n  justify-content: center; // 3. horizontally center contents\n  width: $carousel-control-width;\n  padding: 0;\n  color: $carousel-control-color;\n  text-align: center;\n  background: none;\n  border: 0;\n  opacity: $carousel-control-opacity;\n  @include transition($carousel-control-transition);\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    color: $carousel-control-color;\n    text-decoration: none;\n    outline: 0;\n    opacity: $carousel-control-hover-opacity;\n  }\n}\n.carousel-control-prev {\n  left: 0;\n  background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null);\n}\n.carousel-control-next {\n  right: 0;\n  background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null);\n}\n\n// Icons for within\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: $carousel-control-icon-width;\n  height: $carousel-control-icon-width;\n  background-repeat: no-repeat;\n  background-position: 50%;\n  background-size: 100% 100%;\n}\n\n/* rtl:options: {\n  \"autoRename\": true,\n  \"stringMap\":[ {\n    \"name\"    : \"prev-next\",\n    \"search\"  : \"prev\",\n    \"replace\" : \"next\"\n  } ]\n} */\n.carousel-control-prev-icon {\n  background-image: escape-svg($carousel-control-prev-icon-bg);\n}\n.carousel-control-next-icon {\n  background-image: escape-svg($carousel-control-next-icon-bg);\n}\n\n// Optional indicator pips/controls\n//\n// Add a container (such as a list) with the following class and add an item (ideally a focusable control,\n// like a button) with data-bs-target for each slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 2;\n  display: flex;\n  justify-content: center;\n  padding: 0;\n  // Use the .carousel-control's width as margin so we don't overlay those\n  margin-right: $carousel-control-width;\n  margin-bottom: 1rem;\n  margin-left: $carousel-control-width;\n  list-style: none;\n\n  [data-bs-target] {\n    box-sizing: content-box;\n    flex: 0 1 auto;\n    width: $carousel-indicator-width;\n    height: $carousel-indicator-height;\n    padding: 0;\n    margin-right: $carousel-indicator-spacer;\n    margin-left: $carousel-indicator-spacer;\n    text-indent: -999px;\n    cursor: pointer;\n    background-color: $carousel-indicator-active-bg;\n    background-clip: padding-box;\n    border: 0;\n    // Use transparent borders to increase the hit area by 10px on top and bottom.\n    border-top: $carousel-indicator-hit-area-height solid transparent;\n    border-bottom: $carousel-indicator-hit-area-height solid transparent;\n    opacity: $carousel-indicator-opacity;\n    @include transition($carousel-indicator-transition);\n  }\n\n  .active {\n    opacity: $carousel-indicator-active-opacity;\n  }\n}\n\n\n// Optional captions\n//\n//\n\n.carousel-caption {\n  position: absolute;\n  right: (100% - $carousel-caption-width) * .5;\n  bottom: $carousel-caption-spacer;\n  left: (100% - $carousel-caption-width) * .5;\n  padding-top: $carousel-caption-padding-y;\n  padding-bottom: $carousel-caption-padding-y;\n  color: $carousel-caption-color;\n  text-align: center;\n}\n\n// Dark mode carousel\n\n.carousel-dark {\n  .carousel-control-prev-icon,\n  .carousel-control-next-icon {\n    filter: $carousel-dark-control-icon-filter;\n  }\n\n  .carousel-indicators [data-bs-target] {\n    background-color: $carousel-dark-indicator-active-bg;\n  }\n\n  .carousel-caption {\n    color: $carousel-dark-caption-color;\n  }\n}\n","// scss-docs-start clearfix\n@mixin clearfix() {\n  &::after {\n    display: block;\n    clear: both;\n    content: \"\";\n  }\n}\n// scss-docs-end clearfix\n","//\n// Rotating border\n//\n\n// scss-docs-start spinner-border-keyframes\n@keyframes spinner-border {\n  to { transform: rotate(360deg) #{\"/* rtl:ignore */\"}; }\n}\n// scss-docs-end spinner-border-keyframes\n\n.spinner-border {\n  display: inline-block;\n  width: $spinner-width;\n  height: $spinner-height;\n  vertical-align: $spinner-vertical-align;\n  border: $spinner-border-width solid currentColor;\n  border-right-color: transparent;\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 50%;\n  animation: $spinner-animation-speed linear infinite spinner-border;\n}\n\n.spinner-border-sm {\n  width: $spinner-width-sm;\n  height: $spinner-height-sm;\n  border-width: $spinner-border-width-sm;\n}\n\n//\n// Growing circle\n//\n\n// scss-docs-start spinner-grow-keyframes\n@keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n// scss-docs-end spinner-grow-keyframes\n\n.spinner-grow {\n  display: inline-block;\n  width: $spinner-width;\n  height: $spinner-height;\n  vertical-align: $spinner-vertical-align;\n  background-color: currentColor;\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 50%;\n  opacity: 0;\n  animation: $spinner-animation-speed linear infinite spinner-grow;\n}\n\n.spinner-grow-sm {\n  width: $spinner-width-sm;\n  height: $spinner-height-sm;\n}\n\n@if $enable-reduced-motion {\n  @media (prefers-reduced-motion: reduce) {\n    .spinner-border,\n    .spinner-grow {\n      animation-duration: $spinner-animation-speed * 2;\n    }\n  }\n}\n",".offcanvas {\n  position: fixed;\n  bottom: 0;\n  z-index: $zindex-offcanvas;\n  display: flex;\n  flex-direction: column;\n  max-width: 100%;\n  color: $offcanvas-color;\n  visibility: hidden;\n  background-color: $offcanvas-bg-color;\n  background-clip: padding-box;\n  outline: 0;\n  @include box-shadow($offcanvas-box-shadow);\n  @include transition(transform $offcanvas-transition-duration ease-in-out);\n}\n\n.offcanvas-backdrop {\n  @include overlay-backdrop($zindex-offcanvas-backdrop, $offcanvas-backdrop-bg, $offcanvas-backdrop-opacity);\n}\n\n.offcanvas-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: $offcanvas-padding-y $offcanvas-padding-x;\n\n  .btn-close {\n    padding: ($offcanvas-padding-y * .5) ($offcanvas-padding-x * .5);\n    margin-top: $offcanvas-padding-y * -.5;\n    margin-right: $offcanvas-padding-x * -.5;\n    margin-bottom: $offcanvas-padding-y * -.5;\n  }\n}\n\n.offcanvas-title {\n  margin-bottom: 0;\n  line-height: $offcanvas-title-line-height;\n}\n\n.offcanvas-body {\n  flex-grow: 1;\n  padding: $offcanvas-padding-y $offcanvas-padding-x;\n  overflow-y: auto;\n}\n\n.offcanvas-start {\n  top: 0;\n  left: 0;\n  width: $offcanvas-horizontal-width;\n  border-right: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateX(-100%);\n}\n\n.offcanvas-end {\n  top: 0;\n  right: 0;\n  width: $offcanvas-horizontal-width;\n  border-left: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateX(100%);\n}\n\n.offcanvas-top {\n  top: 0;\n  right: 0;\n  left: 0;\n  height: $offcanvas-vertical-height;\n  max-height: 100%;\n  border-bottom: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateY(-100%);\n}\n\n.offcanvas-bottom {\n  right: 0;\n  left: 0;\n  height: $offcanvas-vertical-height;\n  max-height: 100%;\n  border-top: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateY(100%);\n}\n\n.offcanvas.show {\n  transform: none;\n}\n",".placeholder {\n  display: inline-block;\n  min-height: 1em;\n  vertical-align: middle;\n  cursor: wait;\n  background-color: currentColor;\n  opacity: $placeholder-opacity-max;\n\n  &.btn::before {\n    display: inline-block;\n    content: \"\";\n  }\n}\n\n// Sizing\n.placeholder-xs {\n  min-height: .6em;\n}\n\n.placeholder-sm {\n  min-height: .8em;\n}\n\n.placeholder-lg {\n  min-height: 1.2em;\n}\n\n// Animation\n.placeholder-glow {\n  .placeholder {\n    animation: placeholder-glow 2s ease-in-out infinite;\n  }\n}\n\n@keyframes placeholder-glow {\n  50% {\n    opacity: $placeholder-opacity-min;\n  }\n}\n\n.placeholder-wave {\n  mask-image: linear-gradient(130deg, $black 55%, rgba(0, 0, 0, (1 - $placeholder-opacity-min)) 75%, $black 95%);\n  mask-size: 200% 100%;\n  animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n  100% {\n    mask-position: -200% 0%;\n  }\n}\n","@each $color, $value in $theme-colors {\n  .link-#{$color} {\n    color: $value;\n\n    @if $link-shade-percentage != 0 {\n      &:hover,\n      &:focus {\n        color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));\n      }\n    }\n  }\n}\n","// Credit: Nicolas Gallagher and SUIT CSS.\n\n.ratio {\n  position: relative;\n  width: 100%;\n\n  &::before {\n    display: block;\n    padding-top: var(--#{$variable-prefix}aspect-ratio);\n    content: \"\";\n  }\n\n  > * {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n  }\n}\n\n@each $key, $ratio in $aspect-ratios {\n  .ratio-#{$key} {\n    --#{$variable-prefix}aspect-ratio: #{$ratio};\n  }\n}\n","// Shorthand\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n// Responsive sticky top\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .sticky#{$infix}-top {\n      position: sticky;\n      top: 0;\n      z-index: $zindex-sticky;\n    }\n  }\n}\n","// scss-docs-start stacks\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n// scss-docs-end stacks\n","//\n// Visually hidden\n//\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  @include visually-hidden();\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","//\n// Stretched link\n//\n\n.stretched-link {\n  &::#{$stretched-link-pseudo-element} {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: $stretched-link-z-index;\n    content: \"\";\n  }\n}\n","//\n// Text truncation\n//\n\n.text-truncate {\n  @include text-truncate();\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n",".vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: $hr-opacity;\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n  $values: map-get($utility, values);\n\n  // If the values are a list or string, convert it into a map\n  @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n    $values: zip($values, $values);\n  }\n\n  @each $key, $value in $values {\n    $properties: map-get($utility, property);\n\n    // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n    @if type-of($properties) == \"string\" {\n      $properties: append((), $properties);\n    }\n\n    // Use custom class if present\n    $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n    $property-class: if($property-class == null, \"\", $property-class);\n\n    // State params to generate pseudo-classes\n    $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n    $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (eg. with shadow class)\n    $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n    @if map-get($utility, rfs) {\n      // Inside the media query\n      @if $is-rfs-media-query {\n        $val: rfs-value($value);\n\n        // Do not render anything if fluid and non fluid values are the same\n        $value: if($val == rfs-fluid-value($value), null, $val);\n      }\n      @else {\n        $value: rfs-fluid-value($value);\n      }\n    }\n\n    $is-css-var: map-get($utility, css-var);\n    $is-local-vars: map-get($utility, local-vars);\n    $is-rtl: map-get($utility, rtl);\n\n    @if $value != null {\n      @if $is-rtl == false {\n        /* rtl:begin:remove */\n      }\n\n      @if $is-css-var {\n        .#{$property-class + $infix + $property-class-modifier} {\n          --#{$variable-prefix}#{$property-class}: #{$value};\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            --#{$variable-prefix}#{$property-class}: #{$value};\n          }\n        }\n      } @else {\n        .#{$property-class + $infix + $property-class-modifier} {\n          @each $property in $properties {\n            @if $is-local-vars {\n              @each $local-var, $value in $is-local-vars {\n                --#{$variable-prefix}#{$local-var}: #{$value};\n              }\n            }\n            #{$property}: $value if($enable-important-utilities, !important, null);\n          }\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            @each $property in $properties {\n              #{$property}: $value if($enable-important-utilities, !important, null);\n            }\n          }\n        }\n      }\n\n      @if $is-rtl == false {\n        /* rtl:end:remove */\n      }\n    }\n  }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n  // Generate media query if needed\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    // Loop over each utility property\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Only proceed if responsive media queries are enabled or if it's the base media query\n      @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n        @include generate-utility($utility, $infix);\n      }\n    }\n  }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix, true);\n        }\n      }\n    }\n  }\n}\n\n\n// Print utilities\n@media print {\n  @each $key, $utility in $utilities {\n    // The utility can be disabled with `false`, thus check if the utility is a map first\n    // Then check if the utility needs print styles\n    @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n      @include generate-utility($utility, \"-print\");\n    }\n  }\n}\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css
new file mode 100644
index 0000000..02ae65b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css
@@ -0,0 +1,7 @@
+@charset "UTF-8";/*!
+ * Bootstrap v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-rgb:33,37,41;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"鈥斅�"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-bottom,.navbar-expand-sm .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-bottom,.navbar-expand-md .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-bottom,.navbar-expand-lg .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-bottom,.navbar-expand-xl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-bottom,.navbar-expand-xxl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-bottom,.navbar-expand .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
+/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map
new file mode 100644
index 0000000..afcd9e3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n@import \"placeholders\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n  // Note: Custom variable values only support SassScript inside `#{}`.\n\n  // Colors\n  //\n  // Generate palettes for full colors, grays, and theme colors.\n\n  @each $color, $value in $colors {\n    --#{$variable-prefix}#{$color}: #{$value};\n  }\n\n  @each $color, $value in $grays {\n    --#{$variable-prefix}gray-#{$color}: #{$value};\n  }\n\n  @each $color, $value in $theme-colors {\n    --#{$variable-prefix}#{$color}: #{$value};\n  }\n\n  @each $color, $value in $theme-colors-rgb {\n    --#{$variable-prefix}#{$color}-rgb: #{$value};\n  }\n\n  --#{$variable-prefix}white-rgb: #{to-rgb($white)};\n  --#{$variable-prefix}black-rgb: #{to-rgb($black)};\n  --#{$variable-prefix}body-rgb: #{to-rgb($body-color)};\n\n  // Fonts\n\n  // Note: Use `inspect` for lists so that quoted items keep the quotes.\n  // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n  --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n  --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n  --#{$variable-prefix}gradient: #{$gradient};\n\n  // Root and body\n  // stylelint-disable custom-property-empty-line-before\n  // scss-docs-start root-body-variables\n  @if $font-size-root != null {\n    --#{$variable-prefix}root-font-size: #{$font-size-root};\n  }\n  --#{$variable-prefix}body-font-family: #{$font-family-base};\n  --#{$variable-prefix}body-font-size: #{$font-size-base};\n  --#{$variable-prefix}body-font-weight: #{$font-weight-base};\n  --#{$variable-prefix}body-line-height: #{$line-height-base};\n  --#{$variable-prefix}body-color: #{$body-color};\n  @if $body-text-align != null {\n    --#{$variable-prefix}body-text-align: #{$body-text-align};\n  }\n  --#{$variable-prefix}body-bg: #{$body-bg};\n  // scss-docs-end root-body-variables\n  // stylelint-enable custom-property-empty-line-before\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n  @if $font-size-root != null {\n    font-size: var(--#{$variable-prefix}-root-font-size);\n  }\n\n  @if $enable-smooth-scroll {\n    @media (prefers-reduced-motion: no-preference) {\n      scroll-behavior: smooth;\n    }\n  }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n  margin: 0; // 1\n  font-family: var(--#{$variable-prefix}body-font-family);\n  @include font-size(var(--#{$variable-prefix}body-font-size));\n  font-weight: var(--#{$variable-prefix}body-font-weight);\n  line-height: var(--#{$variable-prefix}body-line-height);\n  color: var(--#{$variable-prefix}body-color);\n  text-align: var(--#{$variable-prefix}body-text-align);\n  background-color: var(--#{$variable-prefix}body-bg); // 2\n  -webkit-text-size-adjust: 100%; // 3\n  -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n  margin: $hr-margin-y 0;\n  color: $hr-color; // 1\n  background-color: currentColor;\n  border: 0;\n  opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n  height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n//    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n//    margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n  margin-top: 0; // 1\n  margin-bottom: $headings-margin-bottom;\n  font-family: $headings-font-family;\n  font-style: $headings-font-style;\n  font-weight: $headings-font-weight;\n  line-height: $headings-line-height;\n  color: $headings-color;\n}\n\nh1 {\n  @extend %heading;\n  @include font-size($h1-font-size);\n}\n\nh2 {\n  @extend %heading;\n  @include font-size($h2-font-size);\n}\n\nh3 {\n  @extend %heading;\n  @include font-size($h3-font-size);\n}\n\nh4 {\n  @extend %heading;\n  @include font-size($h4-font-size);\n}\n\nh5 {\n  @extend %heading;\n  @include font-size($h5-font-size);\n}\n\nh6 {\n  @extend %heading;\n  @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n  margin-top: 0;\n  margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n  text-decoration: underline dotted; // 2\n  cursor: help; // 3\n  text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n  font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n  @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n  padding: $mark-padding;\n  background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n  position: relative;\n  @include font-size($sub-sup-font-size);\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n  color: $link-color;\n  text-decoration: $link-decoration;\n\n  &:hover {\n    color: $link-hover-color;\n    text-decoration: $link-hover-decoration;\n  }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n  &,\n  &:hover {\n    color: inherit;\n    text-decoration: none;\n  }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: $font-family-code;\n  @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n  direction: ltr #{\"/* rtl:ignore */\"};\n  unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n  display: block;\n  margin-top: 0; // 1\n  margin-bottom: 1rem; // 2\n  overflow: auto; // 3\n  @include font-size($code-font-size);\n  color: $pre-color;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    @include font-size(inherit);\n    color: inherit;\n    word-break: normal;\n  }\n}\n\ncode {\n  @include font-size($code-font-size);\n  color: $code-color;\n  word-wrap: break-word;\n\n  // Streamline the style when inside anchors to avoid broken underline and more\n  a > & {\n    color: inherit;\n  }\n}\n\nkbd {\n  padding: $kbd-padding-y $kbd-padding-x;\n  @include font-size($kbd-font-size);\n  color: $kbd-color;\n  background-color: $kbd-bg;\n  @include border-radius($border-radius-sm);\n\n  kbd {\n    padding: 0;\n    @include font-size(1em);\n    font-weight: $nested-kbd-font-weight;\n  }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n  margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: $table-cell-padding-y;\n  padding-bottom: $table-cell-padding-y;\n  color: $table-caption-color;\n  text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `<td>` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n  font-weight: $table-th-font-weight; // 1\n  text-align: inherit; // 2\n  text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n  display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0; // 1\n  font-family: inherit;\n  @include font-size(inherit);\n  line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n  text-transform: none;\n}\n// Set the cursor for non-`<button>` buttons\n//\n// Details at https://github.com/twbs/bootstrap/pull/30562\n[role=\"button\"] {\n  cursor: pointer;\n}\n\nselect {\n  // Remove the inheritance of word-wrap in Safari.\n  // See https://github.com/twbs/bootstrap/issues/24990\n  word-wrap: normal;\n\n  // Undo the opacity change from Chrome\n  &:disabled {\n    opacity: 1;\n  }\n}\n\n// Remove the dropdown arrow in Chrome from inputs built with datalists.\n// See https://stackoverflow.com/a/54997118\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n//    controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\n// 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n\n  @if $enable-button-pointers {\n    &:not(:disabled) {\n      cursor: pointer; // 3\n    }\n  }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\n// 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\ntextarea {\n  resize: vertical; // 1\n}\n\n// 1. Browsers set a default `min-width: min-content;` on fieldsets,\n//    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n//    So we reset that to ensure fieldsets behave more like a standard block element.\n//    See https://github.com/twbs/bootstrap/issues/12359\n//    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n// 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\nfieldset {\n  min-width: 0; // 1\n  padding: 0; // 2\n  margin: 0; // 2\n  border: 0; // 2\n}\n\n// 1. By using `float: left`, the legend will behave like a block element.\n//    This way the border of a fieldset wraps around the legend if present.\n// 2. Fix wrapping bug.\n//    See https://github.com/twbs/bootstrap/issues/29712\n\nlegend {\n  float: left; // 1\n  width: 100%;\n  padding: 0;\n  margin-bottom: $legend-margin-bottom;\n  @include font-size($legend-font-size);\n  font-weight: $legend-font-weight;\n  line-height: inherit;\n\n  + * {\n    clear: left; // 2\n  }\n}\n\n// Fix height of inputs with a type of datetime-local, date, month, week, or time\n// See https://github.com/twbs/bootstrap/issues/18842\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n// 1. Correct the outline style in Safari.\n// 2. This overrides the extra rounded corners on search inputs in iOS so that our\n//    `.form-control` class can properly style them. Note that this cannot simply\n//    be added to `.form-control` as it's not specific enough. For details, see\n//    https://github.com/twbs/bootstrap/issues/11586.\n\n[type=\"search\"] {\n  outline-offset: -2px; // 1\n  -webkit-appearance: textfield; // 2\n}\n\n// 1. A few input types should stay LTR\n// See https://rtlstyling.com/posts/rtl-styling#form-inputs\n// 2. RTL only output\n// See https://rtlcss.com/learn/usage-guide/control-directives/#raw\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n\n// Remove the inner padding in Chrome and Safari on macOS.\n\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n// Remove padding around color pickers in webkit browsers\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n\n// Inherit font family and line height for file input buttons\n\n::file-selector-button {\n  font: inherit;\n}\n\n// 1. Change font properties to `inherit`\n// 2. Correct the inability to style clickable types in iOS and Safari.\n\n::-webkit-file-upload-button {\n  font: inherit; // 1\n  -webkit-appearance: button; // 2\n}\n\n// Correct element displays\n\noutput {\n  display: inline-block;\n}\n\n// Remove border from iframe\n\niframe {\n  border: 0;\n}\n\n// Summary\n//\n// 1. Add the correct display in all browsers\n\nsummary {\n  display: list-item; // 1\n  cursor: pointer;\n}\n\n\n// Progress\n//\n// Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\nprogress {\n  vertical-align: baseline;\n}\n\n\n// Hidden attribute\n//\n// Always hide an element with the `hidden` HTML attribute.\n\n[hidden] {\n  display: none !important;\n}\n","@charset \"UTF-8\";\n/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root {\n  --bs-blue: #0d6efd;\n  --bs-indigo: #6610f2;\n  --bs-purple: #6f42c1;\n  --bs-pink: #d63384;\n  --bs-red: #dc3545;\n  --bs-orange: #fd7e14;\n  --bs-yellow: #ffc107;\n  --bs-green: #198754;\n  --bs-teal: #20c997;\n  --bs-cyan: #0dcaf0;\n  --bs-white: #fff;\n  --bs-gray: #6c757d;\n  --bs-gray-dark: #343a40;\n  --bs-gray-100: #f8f9fa;\n  --bs-gray-200: #e9ecef;\n  --bs-gray-300: #dee2e6;\n  --bs-gray-400: #ced4da;\n  --bs-gray-500: #adb5bd;\n  --bs-gray-600: #6c757d;\n  --bs-gray-700: #495057;\n  --bs-gray-800: #343a40;\n  --bs-gray-900: #212529;\n  --bs-primary: #0d6efd;\n  --bs-secondary: #6c757d;\n  --bs-success: #198754;\n  --bs-info: #0dcaf0;\n  --bs-warning: #ffc107;\n  --bs-danger: #dc3545;\n  --bs-light: #f8f9fa;\n  --bs-dark: #212529;\n  --bs-primary-rgb: 13, 110, 253;\n  --bs-secondary-rgb: 108, 117, 125;\n  --bs-success-rgb: 25, 135, 84;\n  --bs-info-rgb: 13, 202, 240;\n  --bs-warning-rgb: 255, 193, 7;\n  --bs-danger-rgb: 220, 53, 69;\n  --bs-light-rgb: 248, 249, 250;\n  --bs-dark-rgb: 33, 37, 41;\n  --bs-white-rgb: 255, 255, 255;\n  --bs-black-rgb: 0, 0, 0;\n  --bs-body-rgb: 33, 37, 41;\n  --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n  --bs-body-font-family: var(--bs-font-sans-serif);\n  --bs-body-font-size: 1rem;\n  --bs-body-font-weight: 400;\n  --bs-body-line-height: 1.5;\n  --bs-body-color: #212529;\n  --bs-body-bg: #fff;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  :root {\n    scroll-behavior: smooth;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: var(--bs-body-font-family);\n  font-size: var(--bs-body-font-size);\n  font-weight: var(--bs-body-font-weight);\n  line-height: var(--bs-body-line-height);\n  color: var(--bs-body-color);\n  text-align: var(--bs-body-text-align);\n  background-color: var(--bs-body-bg);\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n  margin: 1rem 0;\n  color: inherit;\n  background-color: currentColor;\n  border: 0;\n  opacity: 0.25;\n}\n\nhr:not([size]) {\n  height: 1px;\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\nh1, .h1 {\n  font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n  h1, .h1 {\n    font-size: 2.5rem;\n  }\n}\n\nh2, .h2 {\n  font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n  h2, .h2 {\n    font-size: 2rem;\n  }\n}\n\nh3, .h3 {\n  font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n  h3, .h3 {\n    font-size: 1.75rem;\n  }\n}\n\nh4, .h4 {\n  font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n  h4, .h4 {\n    font-size: 1.5rem;\n  }\n}\n\nh5, .h5 {\n  font-size: 1.25rem;\n}\n\nh6, .h6 {\n  font-size: 1rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-bs-original-title] {\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n  cursor: help;\n  -webkit-text-decoration-skip-ink: none;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: 0.5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall, .small {\n  font-size: 0.875em;\n}\n\nmark, .mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 0.75em;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\na {\n  color: #0d6efd;\n  text-decoration: underline;\n}\na:hover {\n  color: #0a58ca;\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n  color: inherit;\n  text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: var(--bs-font-monospace);\n  font-size: 1em;\n  direction: ltr /* rtl:ignore */;\n  unicode-bidi: bidi-override;\n}\n\npre {\n  display: block;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  font-size: 0.875em;\n}\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\ncode {\n  font-size: 0.875em;\n  color: #d63384;\n  word-wrap: break-word;\n}\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 0.875em;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\nkbd kbd {\n  padding: 0;\n  font-size: 1em;\n  font-weight: 700;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  color: #6c757d;\n  text-align: left;\n}\n\nth {\n  text-align: inherit;\n  text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\nlabel {\n  display: inline-block;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n[role=button] {\n  cursor: pointer;\n}\n\nselect {\n  word-wrap: normal;\n}\nselect:disabled {\n  opacity: 1;\n}\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n  -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n  cursor: pointer;\n}\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ntextarea {\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  float: left;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 0.5rem;\n  font-size: calc(1.275rem + 0.3vw);\n  line-height: inherit;\n}\n@media (min-width: 1200px) {\n  legend {\n    font-size: 1.5rem;\n  }\n}\nlegend + * {\n  clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n[type=search] {\n  outline-offset: -2px;\n  -webkit-appearance: textfield;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n::file-selector-button {\n  font: inherit;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\niframe {\n  border: 0;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[hidden] {\n  display: none !important;\n}\n\n.lead {\n  font-size: 1.25rem;\n  font-weight: 300;\n}\n\n.display-1 {\n  font-size: calc(1.625rem + 4.5vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-1 {\n    font-size: 5rem;\n  }\n}\n\n.display-2 {\n  font-size: calc(1.575rem + 3.9vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-2 {\n    font-size: 4.5rem;\n  }\n}\n\n.display-3 {\n  font-size: calc(1.525rem + 3.3vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-3 {\n    font-size: 4rem;\n  }\n}\n\n.display-4 {\n  font-size: calc(1.475rem + 2.7vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-4 {\n    font-size: 3.5rem;\n  }\n}\n\n.display-5 {\n  font-size: calc(1.425rem + 2.1vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-5 {\n    font-size: 3rem;\n  }\n}\n\n.display-6 {\n  font-size: calc(1.375rem + 1.5vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-6 {\n    font-size: 2.5rem;\n  }\n}\n\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline-item {\n  display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n  margin-right: 0.5rem;\n}\n\n.initialism {\n  font-size: 0.875em;\n  text-transform: uppercase;\n}\n\n.blockquote {\n  margin-bottom: 1rem;\n  font-size: 1.25rem;\n}\n.blockquote > :last-child {\n  margin-bottom: 0;\n}\n\n.blockquote-footer {\n  margin-top: -1rem;\n  margin-bottom: 1rem;\n  font-size: 0.875em;\n  color: #6c757d;\n}\n.blockquote-footer::before {\n  content: \"鈥斅燶";\n}\n\n.img-fluid {\n  max-width: 100%;\n  height: auto;\n}\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  border-radius: 0.25rem;\n  max-width: 100%;\n  height: auto;\n}\n\n.figure {\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: 0.5rem;\n  line-height: 1;\n}\n\n.figure-caption {\n  font-size: 0.875em;\n  color: #6c757d;\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n  width: 100%;\n  padding-right: var(--bs-gutter-x, 0.75rem);\n  padding-left: var(--bs-gutter-x, 0.75rem);\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container-sm, .container {\n    max-width: 540px;\n  }\n}\n@media (min-width: 768px) {\n  .container-md, .container-sm, .container {\n    max-width: 720px;\n  }\n}\n@media (min-width: 992px) {\n  .container-lg, .container-md, .container-sm, .container {\n    max-width: 960px;\n  }\n}\n@media (min-width: 1200px) {\n  .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1140px;\n  }\n}\n@media (min-width: 1400px) {\n  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1320px;\n  }\n}\n.row {\n  --bs-gutter-x: 1.5rem;\n  --bs-gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--bs-gutter-y) * -1);\n  margin-right: calc(var(--bs-gutter-x) * -.5);\n  margin-left: calc(var(--bs-gutter-x) * -.5);\n}\n.row > * {\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%;\n  padding-right: calc(var(--bs-gutter-x) * .5);\n  padding-left: calc(var(--bs-gutter-x) * .5);\n  margin-top: var(--bs-gutter-y);\n}\n\n.col {\n  flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.row-cols-1 > * {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.row-cols-2 > * {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.row-cols-3 > * {\n  flex: 0 0 auto;\n  width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.row-cols-5 > * {\n  flex: 0 0 auto;\n  width: 20%;\n}\n\n.row-cols-6 > * {\n  flex: 0 0 auto;\n  width: 16.6666666667%;\n}\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.col-1 {\n  flex: 0 0 auto;\n  width: 8.33333333%;\n}\n\n.col-2 {\n  flex: 0 0 auto;\n  width: 16.66666667%;\n}\n\n.col-3 {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 auto;\n  width: 33.33333333%;\n}\n\n.col-5 {\n  flex: 0 0 auto;\n  width: 41.66666667%;\n}\n\n.col-6 {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 auto;\n  width: 58.33333333%;\n}\n\n.col-8 {\n  flex: 0 0 auto;\n  width: 66.66666667%;\n}\n\n.col-9 {\n  flex: 0 0 auto;\n  width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 auto;\n  width: 83.33333333%;\n}\n\n.col-11 {\n  flex: 0 0 auto;\n  width: 91.66666667%;\n}\n\n.col-12 {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.offset-1 {\n  margin-left: 8.33333333%;\n}\n\n.offset-2 {\n  margin-left: 16.66666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.33333333%;\n}\n\n.offset-5 {\n  margin-left: 41.66666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.33333333%;\n}\n\n.offset-8 {\n  margin-left: 66.66666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.33333333%;\n}\n\n.offset-11 {\n  margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n  --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n  --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n  --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n  --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n  --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n  --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n  --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n  --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n  --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n  --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n  --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n  --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-sm-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-sm-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-sm-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-sm-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-sm-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-sm-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-sm-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-sm-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-sm-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-sm-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-sm-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-sm-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-sm-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-sm-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-sm-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-sm-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-sm-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-sm-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-sm-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n\n  .offset-sm-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-sm-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n\n  .offset-sm-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-sm-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n\n  .offset-sm-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-sm-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n\n  .offset-sm-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-sm-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-sm-0,\n.gx-sm-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-sm-0,\n.gy-sm-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-sm-1,\n.gx-sm-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-sm-1,\n.gy-sm-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-sm-2,\n.gx-sm-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-sm-2,\n.gy-sm-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-sm-3,\n.gx-sm-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-sm-3,\n.gy-sm-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-sm-4,\n.gx-sm-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-sm-4,\n.gy-sm-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-sm-5,\n.gx-sm-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-sm-5,\n.gy-sm-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 768px) {\n  .col-md {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-md-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-md-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-md-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-md-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-md-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-md-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-md-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-md-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-md-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-md-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-md-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-md-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-md-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-md-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-md-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-md-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-md-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-md-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-md-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-md-0 {\n    margin-left: 0;\n  }\n\n  .offset-md-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-md-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n\n  .offset-md-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-md-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n\n  .offset-md-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-md-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n\n  .offset-md-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-md-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-md-0,\n.gx-md-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-md-0,\n.gy-md-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-md-1,\n.gx-md-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-md-1,\n.gy-md-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-md-2,\n.gx-md-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-md-2,\n.gy-md-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-md-3,\n.gx-md-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-md-3,\n.gy-md-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-md-4,\n.gx-md-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-md-4,\n.gy-md-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-md-5,\n.gx-md-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-md-5,\n.gy-md-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 992px) {\n  .col-lg {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-lg-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-lg-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-lg-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-lg-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-lg-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-lg-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-lg-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-lg-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-lg-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-lg-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-lg-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-lg-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-lg-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-lg-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-lg-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-lg-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-lg-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-lg-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-lg-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n\n  .offset-lg-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-lg-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n\n  .offset-lg-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-lg-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n\n  .offset-lg-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-lg-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n\n  .offset-lg-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-lg-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-lg-0,\n.gx-lg-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-lg-0,\n.gy-lg-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-lg-1,\n.gx-lg-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-lg-1,\n.gy-lg-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-lg-2,\n.gx-lg-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-lg-2,\n.gy-lg-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-lg-3,\n.gx-lg-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-lg-3,\n.gy-lg-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-lg-4,\n.gx-lg-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-lg-4,\n.gy-lg-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-lg-5,\n.gx-lg-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-lg-5,\n.gy-lg-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1200px) {\n  .col-xl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xl-0,\n.gx-xl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xl-0,\n.gy-xl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xl-1,\n.gx-xl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xl-1,\n.gy-xl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xl-2,\n.gx-xl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xl-2,\n.gy-xl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xl-3,\n.gx-xl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xl-3,\n.gy-xl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xl-4,\n.gx-xl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xl-4,\n.gy-xl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xl-5,\n.gx-xl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xl-5,\n.gy-xl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1400px) {\n  .col-xxl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xxl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xxl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xxl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xxl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xxl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xxl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xxl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xxl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xxl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xxl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xxl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xxl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xxl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xxl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xxl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xxl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xxl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xxl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xxl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xxl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xxl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xxl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xxl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xxl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xxl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xxl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xxl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xxl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xxl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xxl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xxl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xxl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xxl-0,\n.gx-xxl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xxl-0,\n.gy-xxl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xxl-1,\n.gx-xxl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xxl-1,\n.gy-xxl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xxl-2,\n.gx-xxl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xxl-2,\n.gy-xxl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xxl-3,\n.gx-xxl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xxl-3,\n.gy-xxl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xxl-4,\n.gx-xxl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xxl-4,\n.gy-xxl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xxl-5,\n.gx-xxl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xxl-5,\n.gy-xxl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n.table {\n  --bs-table-bg: transparent;\n  --bs-table-accent-bg: transparent;\n  --bs-table-striped-color: #212529;\n  --bs-table-striped-bg: rgba(0, 0, 0, 0.05);\n  --bs-table-active-color: #212529;\n  --bs-table-active-bg: rgba(0, 0, 0, 0.1);\n  --bs-table-hover-color: #212529;\n  --bs-table-hover-bg: rgba(0, 0, 0, 0.075);\n  width: 100%;\n  margin-bottom: 1rem;\n  color: #212529;\n  vertical-align: top;\n  border-color: #dee2e6;\n}\n.table > :not(caption) > * > * {\n  padding: 0.5rem 0.5rem;\n  background-color: var(--bs-table-bg);\n  border-bottom-width: 1px;\n  box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg);\n}\n.table > tbody {\n  vertical-align: inherit;\n}\n.table > thead {\n  vertical-align: bottom;\n}\n.table > :not(:last-child) > :last-child > * {\n  border-bottom-color: currentColor;\n}\n\n.caption-top {\n  caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n  padding: 0.25rem 0.25rem;\n}\n\n.table-bordered > :not(caption) > * {\n  border-width: 1px 0;\n}\n.table-bordered > :not(caption) > * > * {\n  border-width: 0 1px;\n}\n\n.table-borderless > :not(caption) > * > * {\n  border-bottom-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) {\n  --bs-table-accent-bg: var(--bs-table-striped-bg);\n  color: var(--bs-table-striped-color);\n}\n\n.table-active {\n  --bs-table-accent-bg: var(--bs-table-active-bg);\n  color: var(--bs-table-active-color);\n}\n\n.table-hover > tbody > tr:hover {\n  --bs-table-accent-bg: var(--bs-table-hover-bg);\n  color: var(--bs-table-hover-color);\n}\n\n.table-primary {\n  --bs-table-bg: #cfe2ff;\n  --bs-table-striped-bg: #c5d7f2;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #bacbe6;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #bfd1ec;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #bacbe6;\n}\n\n.table-secondary {\n  --bs-table-bg: #e2e3e5;\n  --bs-table-striped-bg: #d7d8da;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #cbccce;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #d1d2d4;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #cbccce;\n}\n\n.table-success {\n  --bs-table-bg: #d1e7dd;\n  --bs-table-striped-bg: #c7dbd2;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #bcd0c7;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #c1d6cc;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #bcd0c7;\n}\n\n.table-info {\n  --bs-table-bg: #cff4fc;\n  --bs-table-striped-bg: #c5e8ef;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #badce3;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #bfe2e9;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #badce3;\n}\n\n.table-warning {\n  --bs-table-bg: #fff3cd;\n  --bs-table-striped-bg: #f2e7c3;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #e6dbb9;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #ece1be;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #e6dbb9;\n}\n\n.table-danger {\n  --bs-table-bg: #f8d7da;\n  --bs-table-striped-bg: #eccccf;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #dfc2c4;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #e5c7ca;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #dfc2c4;\n}\n\n.table-light {\n  --bs-table-bg: #f8f9fa;\n  --bs-table-striped-bg: #ecedee;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #dfe0e1;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #e5e6e7;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #dfe0e1;\n}\n\n.table-dark {\n  --bs-table-bg: #212529;\n  --bs-table-striped-bg: #2c3034;\n  --bs-table-striped-color: #fff;\n  --bs-table-active-bg: #373b3e;\n  --bs-table-active-color: #fff;\n  --bs-table-hover-bg: #323539;\n  --bs-table-hover-color: #fff;\n  color: #fff;\n  border-color: #373b3e;\n}\n\n.table-responsive {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n}\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 1199.98px) {\n  .table-responsive-xl {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 1399.98px) {\n  .table-responsive-xxl {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n.form-label {\n  margin-bottom: 0.5rem;\n}\n\n.col-form-label {\n  padding-top: calc(0.375rem + 1px);\n  padding-bottom: calc(0.375rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5;\n}\n\n.col-form-label-lg {\n  padding-top: calc(0.5rem + 1px);\n  padding-bottom: calc(0.5rem + 1px);\n  font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n  padding-top: calc(0.25rem + 1px);\n  padding-bottom: calc(0.25rem + 1px);\n  font-size: 0.875rem;\n}\n\n.form-text {\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #6c757d;\n}\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ced4da;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control {\n    transition: none;\n  }\n}\n.form-control[type=file] {\n  overflow: hidden;\n}\n.form-control[type=file]:not(:disabled):not([readonly]) {\n  cursor: pointer;\n}\n.form-control:focus {\n  color: #212529;\n  background-color: #fff;\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-control::-webkit-date-and-time-value {\n  height: 1.5em;\n}\n.form-control::-moz-placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n.form-control::placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n.form-control:disabled, .form-control[readonly] {\n  background-color: #e9ecef;\n  opacity: 1;\n}\n.form-control::file-selector-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  -webkit-margin-end: 0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control::file-selector-button {\n    transition: none;\n  }\n}\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n  background-color: #dde0e3;\n}\n.form-control::-webkit-file-upload-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  -webkit-margin-end: 0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control::-webkit-file-upload-button {\n    -webkit-transition: none;\n    transition: none;\n  }\n}\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n  background-color: #dde0e3;\n}\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0;\n  margin-bottom: 0;\n  line-height: 1.5;\n  color: #212529;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.form-control-sm {\n  min-height: calc(1.5em + 0.5rem + 2px);\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n.form-control-sm::file-selector-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  -webkit-margin-end: 0.5rem;\n  margin-inline-end: 0.5rem;\n}\n.form-control-sm::-webkit-file-upload-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  -webkit-margin-end: 0.5rem;\n  margin-inline-end: 0.5rem;\n}\n\n.form-control-lg {\n  min-height: calc(1.5em + 1rem + 2px);\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n.form-control-lg::file-selector-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  -webkit-margin-end: 1rem;\n  margin-inline-end: 1rem;\n}\n.form-control-lg::-webkit-file-upload-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  -webkit-margin-end: 1rem;\n  margin-inline-end: 1rem;\n}\n\ntextarea.form-control {\n  min-height: calc(1.5em + 0.75rem + 2px);\n}\ntextarea.form-control-sm {\n  min-height: calc(1.5em + 0.5rem + 2px);\n}\ntextarea.form-control-lg {\n  min-height: calc(1.5em + 1rem + 2px);\n}\n\n.form-control-color {\n  width: 3rem;\n  height: auto;\n  padding: 0.375rem;\n}\n.form-control-color:not(:disabled):not([readonly]) {\n  cursor: pointer;\n}\n.form-control-color::-moz-color-swatch {\n  height: 1.5em;\n  border-radius: 0.25rem;\n}\n.form-control-color::-webkit-color-swatch {\n  height: 1.5em;\n  border-radius: 0.25rem;\n}\n\n.form-select {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 2.25rem 0.375rem 0.75rem;\n  -moz-padding-start: calc(0.75rem - 3px);\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  background-color: #fff;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right 0.75rem center;\n  background-size: 16px 12px;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-select {\n    transition: none;\n  }\n}\n.form-select:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n  padding-right: 0.75rem;\n  background-image: none;\n}\n.form-select:disabled {\n  background-color: #e9ecef;\n}\n.form-select:-moz-focusring {\n  color: transparent;\n  text-shadow: 0 0 0 #212529;\n}\n\n.form-select-sm {\n  padding-top: 0.25rem;\n  padding-bottom: 0.25rem;\n  padding-left: 0.5rem;\n  font-size: 0.875rem;\n}\n\n.form-select-lg {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  padding-left: 1rem;\n  font-size: 1.25rem;\n}\n\n.form-check {\n  display: block;\n  min-height: 1.5rem;\n  padding-left: 1.5em;\n  margin-bottom: 0.125rem;\n}\n.form-check .form-check-input {\n  float: left;\n  margin-left: -1.5em;\n}\n\n.form-check-input {\n  width: 1em;\n  height: 1em;\n  margin-top: 0.25em;\n  vertical-align: top;\n  background-color: #fff;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: contain;\n  border: 1px solid rgba(0, 0, 0, 0.25);\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n  -webkit-print-color-adjust: exact;\n  color-adjust: exact;\n}\n.form-check-input[type=checkbox] {\n  border-radius: 0.25em;\n}\n.form-check-input[type=radio] {\n  border-radius: 50%;\n}\n.form-check-input:active {\n  filter: brightness(90%);\n}\n.form-check-input:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-check-input:checked {\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.form-check-input:checked[type=checkbox] {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e\");\n}\n.form-check-input:checked[type=radio] {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-check-input[type=checkbox]:indeterminate {\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n}\n.form-check-input:disabled {\n  pointer-events: none;\n  filter: none;\n  opacity: 0.5;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n  opacity: 0.5;\n}\n\n.form-switch {\n  padding-left: 2.5em;\n}\n.form-switch .form-check-input {\n  width: 2em;\n  margin-left: -2.5em;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n  background-position: left center;\n  border-radius: 2em;\n  transition: background-position 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-switch .form-check-input {\n    transition: none;\n  }\n}\n.form-switch .form-check-input:focus {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n.form-switch .form-check-input:checked {\n  background-position: right center;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.form-check-inline {\n  display: inline-block;\n  margin-right: 1rem;\n}\n\n.btn-check {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\n  pointer-events: none;\n  filter: none;\n  opacity: 0.65;\n}\n\n.form-range {\n  width: 100%;\n  height: 1.5rem;\n  padding: 0;\n  background-color: transparent;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n.form-range:focus {\n  outline: 0;\n}\n.form-range:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range::-moz-focus-outer {\n  border: 0;\n}\n.form-range::-webkit-slider-thumb {\n  width: 1rem;\n  height: 1rem;\n  margin-top: -0.25rem;\n  background-color: #0d6efd;\n  border: 0;\n  border-radius: 1rem;\n  -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  -webkit-appearance: none;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-range::-webkit-slider-thumb {\n    -webkit-transition: none;\n    transition: none;\n  }\n}\n.form-range::-webkit-slider-thumb:active {\n  background-color: #b6d4fe;\n}\n.form-range::-webkit-slider-runnable-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n.form-range::-moz-range-thumb {\n  width: 1rem;\n  height: 1rem;\n  background-color: #0d6efd;\n  border: 0;\n  border-radius: 1rem;\n  -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  -moz-appearance: none;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-range::-moz-range-thumb {\n    -moz-transition: none;\n    transition: none;\n  }\n}\n.form-range::-moz-range-thumb:active {\n  background-color: #b6d4fe;\n}\n.form-range::-moz-range-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n.form-range:disabled {\n  pointer-events: none;\n}\n.form-range:disabled::-webkit-slider-thumb {\n  background-color: #adb5bd;\n}\n.form-range:disabled::-moz-range-thumb {\n  background-color: #adb5bd;\n}\n\n.form-floating {\n  position: relative;\n}\n.form-floating > .form-control,\n.form-floating > .form-select {\n  height: calc(3.5rem + 2px);\n  line-height: 1.25;\n}\n.form-floating > label {\n  position: absolute;\n  top: 0;\n  left: 0;\n  height: 100%;\n  padding: 1rem 0.75rem;\n  pointer-events: none;\n  border: 1px solid transparent;\n  transform-origin: 0 0;\n  transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-floating > label {\n    transition: none;\n  }\n}\n.form-floating > .form-control {\n  padding: 1rem 0.75rem;\n}\n.form-floating > .form-control::-moz-placeholder {\n  color: transparent;\n}\n.form-floating > .form-control::placeholder {\n  color: transparent;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown) {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:-webkit-autofill {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-select {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control:focus ~ label,\n.form-floating > .form-control:not(:placeholder-shown) ~ label,\n.form-floating > .form-select ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control:-webkit-autofill ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: stretch;\n  width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-select {\n  position: relative;\n  flex: 1 1 auto;\n  width: 1%;\n  min-width: 0;\n}\n.input-group > .form-control:focus,\n.input-group > .form-select:focus {\n  z-index: 3;\n}\n.input-group .btn {\n  position: relative;\n  z-index: 2;\n}\n.input-group .btn:focus {\n  z-index: 3;\n}\n\n.input-group-text {\n  display: flex;\n  align-items: center;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #e9ecef;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n  padding-right: 3rem;\n}\n\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n  margin-left: -1px;\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #198754;\n}\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: 0.1rem;\n  font-size: 0.875rem;\n  color: #fff;\n  background-color: rgba(25, 135, 84, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n  border-color: #198754;\n  padding-right: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right calc(0.375em + 0.1875rem) center;\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n  border-color: #198754;\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n  padding-right: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:valid, .form-select.is-valid {\n  border-color: #198754;\n}\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"] {\n  padding-right: 4.125rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\"), url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-position: right 0.75rem center, center right 2.25rem;\n  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\n  border-color: #198754;\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\n  border-color: #198754;\n}\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n  background-color: #198754;\n}\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #198754;\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n  margin-left: 0.5em;\n}\n\n.was-validated .input-group .form-control:valid, .input-group .form-control.is-valid,\n.was-validated .input-group .form-select:valid,\n.input-group .form-select.is-valid {\n  z-index: 1;\n}\n.was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus,\n.was-validated .input-group .form-select:valid:focus,\n.input-group .form-select.is-valid:focus {\n  z-index: 3;\n}\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #dc3545;\n}\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: 0.1rem;\n  font-size: 0.875rem;\n  color: #fff;\n  background-color: rgba(220, 53, 69, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n  border-color: #dc3545;\n  padding-right: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right calc(0.375em + 0.1875rem) center;\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n  padding-right: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:invalid, .form-select.is-invalid {\n  border-color: #dc3545;\n}\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"] {\n  padding-right: 4.125rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\"), url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n  background-position: right 0.75rem center, center right 2.25rem;\n  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n  border-color: #dc3545;\n}\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n  background-color: #dc3545;\n}\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #dc3545;\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n  margin-left: 0.5em;\n}\n\n.was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid,\n.was-validated .input-group .form-select:invalid,\n.input-group .form-select.is-invalid {\n  z-index: 2;\n}\n.was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus,\n.was-validated .input-group .form-select:invalid:focus,\n.input-group .form-select.is-invalid:focus {\n  z-index: 3;\n}\n\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: center;\n  text-decoration: none;\n  vertical-align: middle;\n  cursor: pointer;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n  background-color: transparent;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  border-radius: 0.25rem;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .btn {\n    transition: none;\n  }\n}\n.btn:hover {\n  color: #212529;\n}\n.btn-check:focus + .btn, .btn:focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\n  pointer-events: none;\n  opacity: 0.65;\n}\n\n.btn-primary {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #0b5ed7;\n  border-color: #0a58ca;\n}\n.btn-check:focus + .btn-primary, .btn-primary:focus {\n  color: #fff;\n  background-color: #0b5ed7;\n  border-color: #0a58ca;\n  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\n}\n.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #0a58ca;\n  border-color: #0a53be;\n}\n.btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\n}\n.btn-primary:disabled, .btn-primary.disabled {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n\n.btn-secondary {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-secondary:hover {\n  color: #fff;\n  background-color: #5c636a;\n  border-color: #565e64;\n}\n.btn-check:focus + .btn-secondary, .btn-secondary:focus {\n  color: #fff;\n  background-color: #5c636a;\n  border-color: #565e64;\n  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\n}\n.btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #565e64;\n  border-color: #51585e;\n}\n.btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\n}\n.btn-secondary:disabled, .btn-secondary.disabled {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-success {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #157347;\n  border-color: #146c43;\n}\n.btn-check:focus + .btn-success, .btn-success:focus {\n  color: #fff;\n  background-color: #157347;\n  border-color: #146c43;\n  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\n}\n.btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle {\n  color: #fff;\n  background-color: #146c43;\n  border-color: #13653f;\n}\n.btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\n}\n.btn-success:disabled, .btn-success.disabled {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n\n.btn-info {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-info:hover {\n  color: #000;\n  background-color: #31d2f2;\n  border-color: #25cff2;\n}\n.btn-check:focus + .btn-info, .btn-info:focus {\n  color: #000;\n  background-color: #31d2f2;\n  border-color: #25cff2;\n  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\n}\n.btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle {\n  color: #000;\n  background-color: #3dd5f3;\n  border-color: #25cff2;\n}\n.btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\n}\n.btn-info:disabled, .btn-info.disabled {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n\n.btn-warning {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-warning:hover {\n  color: #000;\n  background-color: #ffca2c;\n  border-color: #ffc720;\n}\n.btn-check:focus + .btn-warning, .btn-warning:focus {\n  color: #000;\n  background-color: #ffca2c;\n  border-color: #ffc720;\n  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\n}\n.btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle {\n  color: #000;\n  background-color: #ffcd39;\n  border-color: #ffc720;\n}\n.btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\n}\n.btn-warning:disabled, .btn-warning.disabled {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-danger {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #bb2d3b;\n  border-color: #b02a37;\n}\n.btn-check:focus + .btn-danger, .btn-danger:focus {\n  color: #fff;\n  background-color: #bb2d3b;\n  border-color: #b02a37;\n  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\n}\n.btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #b02a37;\n  border-color: #a52834;\n}\n.btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\n}\n.btn-danger:disabled, .btn-danger.disabled {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-light {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-light:hover {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n}\n.btn-check:focus + .btn-light, .btn-light:focus {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\n}\n.btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n}\n.btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\n}\n.btn-light:disabled, .btn-light.disabled {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-dark {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-dark:hover {\n  color: #fff;\n  background-color: #1c1f23;\n  border-color: #1a1e21;\n}\n.btn-check:focus + .btn-dark, .btn-dark:focus {\n  color: #fff;\n  background-color: #1c1f23;\n  border-color: #1a1e21;\n  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\n}\n.btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #1a1e21;\n  border-color: #191c1f;\n}\n.btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\n}\n.btn-dark:disabled, .btn-dark.disabled {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n\n.btn-outline-primary {\n  color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-outline-primary:hover {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\n}\n.btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\n}\n.btn-outline-primary:disabled, .btn-outline-primary.disabled {\n  color: #0d6efd;\n  background-color: transparent;\n}\n\n.btn-outline-secondary {\n  color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-outline-secondary:hover {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus {\n  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\n}\n.btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\n}\n.btn-outline-secondary:disabled, .btn-outline-secondary.disabled {\n  color: #6c757d;\n  background-color: transparent;\n}\n\n.btn-outline-success {\n  color: #198754;\n  border-color: #198754;\n}\n.btn-outline-success:hover {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-check:focus + .btn-outline-success, .btn-outline-success:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\n}\n.btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\n}\n.btn-outline-success:disabled, .btn-outline-success.disabled {\n  color: #198754;\n  background-color: transparent;\n}\n\n.btn-outline-info {\n  color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-outline-info:hover {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-check:focus + .btn-outline-info, .btn-outline-info:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\n}\n.btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\n}\n.btn-outline-info:disabled, .btn-outline-info.disabled {\n  color: #0dcaf0;\n  background-color: transparent;\n}\n\n.btn-outline-warning {\n  color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-outline-warning:hover {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus {\n  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\n}\n.btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\n}\n.btn-outline-warning:disabled, .btn-outline-warning.disabled {\n  color: #ffc107;\n  background-color: transparent;\n}\n\n.btn-outline-danger {\n  color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-outline-danger:hover {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\n}\n.btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\n}\n.btn-outline-danger:disabled, .btn-outline-danger.disabled {\n  color: #dc3545;\n  background-color: transparent;\n}\n\n.btn-outline-light {\n  color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-outline-light:hover {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-check:focus + .btn-outline-light, .btn-outline-light:focus {\n  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\n}\n.btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\n}\n.btn-outline-light:disabled, .btn-outline-light.disabled {\n  color: #f8f9fa;\n  background-color: transparent;\n}\n\n.btn-outline-dark {\n  color: #212529;\n  border-color: #212529;\n}\n.btn-outline-dark:hover {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus {\n  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\n}\n.btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\n}\n.btn-outline-dark:disabled, .btn-outline-dark.disabled {\n  color: #212529;\n  background-color: transparent;\n}\n\n.btn-link {\n  font-weight: 400;\n  color: #0d6efd;\n  text-decoration: underline;\n}\n.btn-link:hover {\n  color: #0a58ca;\n}\n.btn-link:disabled, .btn-link.disabled {\n  color: #6c757d;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n.dropup,\n.dropend,\n.dropdown,\n.dropstart {\n  position: relative;\n}\n\n.dropdown-toggle {\n  white-space: nowrap;\n}\n.dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropdown-menu {\n  position: absolute;\n  z-index: 1000;\n  display: none;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0;\n  font-size: 1rem;\n  color: #212529;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n.dropdown-menu[data-bs-popper] {\n  top: 100%;\n  left: 0;\n  margin-top: 0.125rem;\n}\n\n.dropdown-menu-start {\n  --bs-position: start;\n}\n.dropdown-menu-start[data-bs-popper] {\n  right: auto;\n  left: 0;\n}\n\n.dropdown-menu-end {\n  --bs-position: end;\n}\n.dropdown-menu-end[data-bs-popper] {\n  right: 0;\n  left: auto;\n}\n\n@media (min-width: 576px) {\n  .dropdown-menu-sm-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-sm-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-sm-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-sm-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 768px) {\n  .dropdown-menu-md-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-md-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-md-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-md-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 992px) {\n  .dropdown-menu-lg-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-lg-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-lg-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-lg-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 1200px) {\n  .dropdown-menu-xl-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-xl-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-xl-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-xl-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 1400px) {\n  .dropdown-menu-xxl-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-xxl-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-xxl-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-xxl-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n.dropup .dropdown-menu[data-bs-popper] {\n  top: auto;\n  bottom: 100%;\n  margin-top: 0;\n  margin-bottom: 0.125rem;\n}\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0.3em solid;\n  border-left: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n  top: 0;\n  right: auto;\n  left: 100%;\n  margin-top: 0;\n  margin-left: 0.125rem;\n}\n.dropend .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0;\n  border-bottom: 0.3em solid transparent;\n  border-left: 0.3em solid;\n}\n.dropend .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n.dropend .dropdown-toggle::after {\n  vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n  top: 0;\n  right: 100%;\n  left: auto;\n  margin-top: 0;\n  margin-right: 0.125rem;\n}\n.dropstart .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n}\n.dropstart .dropdown-toggle::after {\n  display: none;\n}\n.dropstart .dropdown-toggle::before {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0.3em solid;\n  border-bottom: 0.3em solid transparent;\n}\n.dropstart .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n.dropstart .dropdown-toggle::before {\n  vertical-align: 0;\n}\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.25rem 1rem;\n  clear: both;\n  font-weight: 400;\n  color: #212529;\n  text-align: inherit;\n  text-decoration: none;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n.dropdown-item:hover, .dropdown-item:focus {\n  color: #1e2125;\n  background-color: #e9ecef;\n}\n.dropdown-item.active, .dropdown-item:active {\n  color: #fff;\n  text-decoration: none;\n  background-color: #0d6efd;\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n  color: #adb5bd;\n  pointer-events: none;\n  background-color: transparent;\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 0.875rem;\n  color: #6c757d;\n  white-space: nowrap;\n}\n\n.dropdown-item-text {\n  display: block;\n  padding: 0.25rem 1rem;\n  color: #212529;\n}\n\n.dropdown-menu-dark {\n  color: #dee2e6;\n  background-color: #343a40;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.dropdown-menu-dark .dropdown-item {\n  color: #dee2e6;\n}\n.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus {\n  color: #fff;\n  background-color: rgba(255, 255, 255, 0.15);\n}\n.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active {\n  color: #fff;\n  background-color: #0d6efd;\n}\n.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled {\n  color: #adb5bd;\n}\n.dropdown-menu-dark .dropdown-divider {\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.dropdown-menu-dark .dropdown-item-text {\n  color: #dee2e6;\n}\n.dropdown-menu-dark .dropdown-header {\n  color: #adb5bd;\n}\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  flex: 1 1 auto;\n}\n.btn-group > .btn-check:checked + .btn,\n.btn-group > .btn-check:focus + .btn,\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn-check:checked + .btn,\n.btn-group-vertical > .btn-check:focus + .btn,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n  z-index: 1;\n}\n\n.btn-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n  width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n  margin-left: -1px;\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:nth-child(n+3),\n.btn-group > :not(.btn-check) + .btn,\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n  padding-right: 0.5625rem;\n  padding-left: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n  margin-left: 0;\n}\n.dropstart .dropdown-toggle-split::before {\n  margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-right: 0.375rem;\n  padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-right: 0.75rem;\n  padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n  width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n  margin-top: -1px;\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn ~ .btn,\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav {\n  display: flex;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 1rem;\n  color: #0d6efd;\n  text-decoration: none;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .nav-link {\n    transition: none;\n  }\n}\n.nav-link:hover, .nav-link:focus {\n  color: #0a58ca;\n}\n.nav-link.disabled {\n  color: #6c757d;\n  pointer-events: none;\n  cursor: default;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #dee2e6;\n}\n.nav-tabs .nav-link {\n  margin-bottom: -1px;\n  background: none;\n  border: 1px solid transparent;\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n  border-color: #e9ecef #e9ecef #dee2e6;\n  isolation: isolate;\n}\n.nav-tabs .nav-link.disabled {\n  color: #6c757d;\n  background-color: transparent;\n  border-color: transparent;\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n  color: #495057;\n  background-color: #fff;\n  border-color: #dee2e6 #dee2e6 #fff;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n  background: none;\n  border: 0;\n  border-radius: 0.25rem;\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #0d6efd;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n  flex: 1 1 auto;\n  text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n  flex-basis: 0;\n  flex-grow: 1;\n  text-align: center;\n}\n\n.nav-fill .nav-item .nav-link,\n.nav-justified .nav-item .nav-link {\n  width: 100%;\n}\n\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n\n.navbar {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n.navbar > .container,\n.navbar > .container-fluid,\n.navbar > .container-sm,\n.navbar > .container-md,\n.navbar > .container-lg,\n.navbar > .container-xl,\n.navbar > .container-xxl {\n  display: flex;\n  flex-wrap: inherit;\n  align-items: center;\n  justify-content: space-between;\n}\n.navbar-brand {\n  padding-top: 0.3125rem;\n  padding-bottom: 0.3125rem;\n  margin-right: 1rem;\n  font-size: 1.25rem;\n  text-decoration: none;\n  white-space: nowrap;\n}\n.navbar-nav {\n  display: flex;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.navbar-nav .nav-link {\n  padding-right: 0;\n  padding-left: 0;\n}\n.navbar-nav .dropdown-menu {\n  position: static;\n}\n\n.navbar-text {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n  flex-basis: 100%;\n  flex-grow: 1;\n  align-items: center;\n}\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.25rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n  transition: box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .navbar-toggler {\n    transition: none;\n  }\n}\n.navbar-toggler:hover {\n  text-decoration: none;\n}\n.navbar-toggler:focus {\n  text-decoration: none;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem;\n}\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 100%;\n}\n\n.navbar-nav-scroll {\n  max-height: var(--bs-scroll-height, 75vh);\n  overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-sm .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-sm .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-sm .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-sm .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-sm .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-sm .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-sm .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-sm .offcanvas-top,\n.navbar-expand-sm .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-sm .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-md .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-md .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-md .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-md .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-md .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-md .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-md .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-md .offcanvas-top,\n.navbar-expand-md .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-md .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-lg .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-lg .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-lg .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-lg .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-lg .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-lg .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-lg .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-lg .offcanvas-top,\n.navbar-expand-lg .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-lg .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 1200px) {\n  .navbar-expand-xl {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xl .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-xl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xl .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-xl .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-xl .offcanvas-top,\n.navbar-expand-xl .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-xl .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 1400px) {\n  .navbar-expand-xxl {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xxl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xxl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xxl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xxl .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-xxl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xxl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xxl .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-xxl .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-xxl .offcanvas-top,\n.navbar-expand-xxl .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-xxl .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n.navbar-expand {\n  flex-wrap: nowrap;\n  justify-content: flex-start;\n}\n.navbar-expand .navbar-nav {\n  flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n  position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n  padding-right: 0.5rem;\n  padding-left: 0.5rem;\n}\n.navbar-expand .navbar-nav-scroll {\n  overflow: visible;\n}\n.navbar-expand .navbar-collapse {\n  display: flex !important;\n  flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n  display: none;\n}\n.navbar-expand .offcanvas-header {\n  display: none;\n}\n.navbar-expand .offcanvas {\n  position: inherit;\n  bottom: 0;\n  z-index: 1000;\n  flex-grow: 1;\n  visibility: visible !important;\n  background-color: transparent;\n  border-right: 0;\n  border-left: 0;\n  transition: none;\n  transform: none;\n}\n.navbar-expand .offcanvas-top,\n.navbar-expand .offcanvas-bottom {\n  height: auto;\n  border-top: 0;\n  border-bottom: 0;\n}\n.navbar-expand .offcanvas-body {\n  display: flex;\n  flex-grow: 0;\n  padding: 0;\n  overflow-y: visible;\n}\n\n.navbar-light .navbar-brand {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(0, 0, 0, 0.55);\n}\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n  color: rgba(0, 0, 0, 0.7);\n}\n.navbar-light .navbar-nav .nav-link.disabled {\n  color: rgba(0, 0, 0, 0.3);\n}\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .nav-link.active {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-toggler {\n  color: rgba(0, 0, 0, 0.55);\n  border-color: rgba(0, 0, 0, 0.1);\n}\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-light .navbar-text {\n  color: rgba(0, 0, 0, 0.55);\n}\n.navbar-light .navbar-text a,\n.navbar-light .navbar-text a:hover,\n.navbar-light .navbar-text a:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n  color: #fff;\n}\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n  color: #fff;\n}\n.navbar-dark .navbar-nav .nav-link {\n  color: rgba(255, 255, 255, 0.55);\n}\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n  color: rgba(255, 255, 255, 0.75);\n}\n.navbar-dark .navbar-nav .nav-link.disabled {\n  color: rgba(255, 255, 255, 0.25);\n}\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #fff;\n}\n.navbar-dark .navbar-toggler {\n  color: rgba(255, 255, 255, 0.55);\n  border-color: rgba(255, 255, 255, 0.1);\n}\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-dark .navbar-text {\n  color: rgba(255, 255, 255, 0.55);\n}\n.navbar-dark .navbar-text a,\n.navbar-dark .navbar-text a:hover,\n.navbar-dark .navbar-text a:focus {\n  color: #fff;\n}\n\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.25rem;\n}\n.card > hr {\n  margin-right: 0;\n  margin-left: 0;\n}\n.card > .list-group {\n  border-top: inherit;\n  border-bottom: inherit;\n}\n.card > .list-group:first-child {\n  border-top-width: 0;\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.card > .list-group:last-child {\n  border-bottom-width: 0;\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n  border-top: 0;\n}\n\n.card-body {\n  flex: 1 1 auto;\n  padding: 1rem 1rem;\n}\n\n.card-title {\n  margin-bottom: 0.5rem;\n}\n\n.card-subtitle {\n  margin-top: -0.25rem;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link + .card-link {\n  margin-left: 1rem;\n}\n\n.card-header {\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-header:first-child {\n  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n  padding: 0.5rem 1rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-footer:last-child {\n  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n  margin-right: -0.5rem;\n  margin-bottom: -0.5rem;\n  margin-left: -0.5rem;\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-right: -0.5rem;\n  margin-left: -0.5rem;\n}\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 1rem;\n  border-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n  width: 100%;\n}\n\n.card-img,\n.card-img-top {\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-bottom {\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-group > .card {\n  margin-bottom: 0.75rem;\n}\n@media (min-width: 576px) {\n  .card-group {\n    display: flex;\n    flex-flow: row wrap;\n  }\n  .card-group > .card {\n    flex: 1 0 0%;\n    margin-bottom: 0;\n  }\n  .card-group > .card + .card {\n    margin-left: 0;\n    border-left: 0;\n  }\n  .card-group > .card:not(:last-child) {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-top,\n.card-group > .card:not(:last-child) .card-header {\n    border-top-right-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-bottom,\n.card-group > .card:not(:last-child) .card-footer {\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:not(:first-child) {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-top,\n.card-group > .card:not(:first-child) .card-header {\n    border-top-left-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-bottom,\n.card-group > .card:not(:first-child) .card-footer {\n    border-bottom-left-radius: 0;\n  }\n}\n\n.accordion-button {\n  position: relative;\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: 1rem 1.25rem;\n  font-size: 1rem;\n  color: #212529;\n  text-align: left;\n  background-color: #fff;\n  border: 0;\n  border-radius: 0;\n  overflow-anchor: none;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .accordion-button {\n    transition: none;\n  }\n}\n.accordion-button:not(.collapsed) {\n  color: #0c63e4;\n  background-color: #e7f1ff;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125);\n}\n.accordion-button:not(.collapsed)::after {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n  transform: rotate(-180deg);\n}\n.accordion-button::after {\n  flex-shrink: 0;\n  width: 1.25rem;\n  height: 1.25rem;\n  margin-left: auto;\n  content: \"\";\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-size: 1.25rem;\n  transition: transform 0.2s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .accordion-button::after {\n    transition: none;\n  }\n}\n.accordion-button:hover {\n  z-index: 2;\n}\n.accordion-button:focus {\n  z-index: 3;\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.accordion-header {\n  margin-bottom: 0;\n}\n\n.accordion-item {\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.accordion-item:first-of-type {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n.accordion-item:first-of-type .accordion-button {\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.accordion-item:not(:first-of-type) {\n  border-top: 0;\n}\n.accordion-item:last-of-type {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n.accordion-item:last-of-type .accordion-button.collapsed {\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n.accordion-item:last-of-type .accordion-collapse {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.accordion-body {\n  padding: 1rem 1.25rem;\n}\n\n.accordion-flush .accordion-collapse {\n  border-width: 0;\n}\n.accordion-flush .accordion-item {\n  border-right: 0;\n  border-left: 0;\n  border-radius: 0;\n}\n.accordion-flush .accordion-item:first-child {\n  border-top: 0;\n}\n.accordion-flush .accordion-item:last-child {\n  border-bottom: 0;\n}\n.accordion-flush .accordion-item .accordion-button {\n  border-radius: 0;\n}\n\n.breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  padding: 0 0;\n  margin-bottom: 1rem;\n  list-style: none;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n  padding-left: 0.5rem;\n}\n.breadcrumb-item + .breadcrumb-item::before {\n  float: left;\n  padding-right: 0.5rem;\n  color: #6c757d;\n  content: var(--bs-breadcrumb-divider, \"/\") /* rtl: var(--bs-breadcrumb-divider, \"/\") */;\n}\n.breadcrumb-item.active {\n  color: #6c757d;\n}\n\n.pagination {\n  display: flex;\n  padding-left: 0;\n  list-style: none;\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  color: #0d6efd;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .page-link {\n    transition: none;\n  }\n}\n.page-link:hover {\n  z-index: 2;\n  color: #0a58ca;\n  background-color: #e9ecef;\n  border-color: #dee2e6;\n}\n.page-link:focus {\n  z-index: 3;\n  color: #0a58ca;\n  background-color: #e9ecef;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.page-item:not(:first-child) .page-link {\n  margin-left: -1px;\n}\n.page-item.active .page-link {\n  z-index: 3;\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.page-item.disabled .page-link {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #fff;\n  border-color: #dee2e6;\n}\n\n.page-link {\n  padding: 0.375rem 0.75rem;\n}\n\n.page-item:first-child .page-link {\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n.page-item:last-child .page-link {\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.25rem;\n}\n.pagination-lg .page-item:first-child .page-link {\n  border-top-left-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem;\n}\n.pagination-lg .page-item:last-child .page-link {\n  border-top-right-radius: 0.3rem;\n  border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n}\n.pagination-sm .page-item:first-child .page-link {\n  border-top-left-radius: 0.2rem;\n  border-bottom-left-radius: 0.2rem;\n}\n.pagination-sm .page-item:last-child .page-link {\n  border-top-right-radius: 0.2rem;\n  border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n  display: inline-block;\n  padding: 0.35em 0.65em;\n  font-size: 0.75em;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n}\n.badge:empty {\n  display: none;\n}\n\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.alert {\n  position: relative;\n  padding: 1rem 1rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.alert-heading {\n  color: inherit;\n}\n\n.alert-link {\n  font-weight: 700;\n}\n\n.alert-dismissible {\n  padding-right: 3rem;\n}\n.alert-dismissible .btn-close {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  padding: 1.25rem 1rem;\n}\n\n.alert-primary {\n  color: #084298;\n  background-color: #cfe2ff;\n  border-color: #b6d4fe;\n}\n.alert-primary .alert-link {\n  color: #06357a;\n}\n\n.alert-secondary {\n  color: #41464b;\n  background-color: #e2e3e5;\n  border-color: #d3d6d8;\n}\n.alert-secondary .alert-link {\n  color: #34383c;\n}\n\n.alert-success {\n  color: #0f5132;\n  background-color: #d1e7dd;\n  border-color: #badbcc;\n}\n.alert-success .alert-link {\n  color: #0c4128;\n}\n\n.alert-info {\n  color: #055160;\n  background-color: #cff4fc;\n  border-color: #b6effb;\n}\n.alert-info .alert-link {\n  color: #04414d;\n}\n\n.alert-warning {\n  color: #664d03;\n  background-color: #fff3cd;\n  border-color: #ffecb5;\n}\n.alert-warning .alert-link {\n  color: #523e02;\n}\n\n.alert-danger {\n  color: #842029;\n  background-color: #f8d7da;\n  border-color: #f5c2c7;\n}\n.alert-danger .alert-link {\n  color: #6a1a21;\n}\n\n.alert-light {\n  color: #636464;\n  background-color: #fefefe;\n  border-color: #fdfdfe;\n}\n.alert-light .alert-link {\n  color: #4f5050;\n}\n\n.alert-dark {\n  color: #141619;\n  background-color: #d3d3d4;\n  border-color: #bcbebf;\n}\n.alert-dark .alert-link {\n  color: #101214;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n  0% {\n    background-position-x: 1rem;\n  }\n}\n\n@keyframes progress-bar-stripes {\n  0% {\n    background-position-x: 1rem;\n  }\n}\n.progress {\n  display: flex;\n  height: 1rem;\n  overflow: hidden;\n  font-size: 0.75rem;\n  background-color: #e9ecef;\n  border-radius: 0.25rem;\n}\n\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #0d6efd;\n  transition: width 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar {\n    transition: none;\n  }\n}\n\n.progress-bar-striped {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n  -webkit-animation: 1s linear infinite progress-bar-stripes;\n  animation: 1s linear infinite progress-bar-stripes;\n}\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar-animated {\n    -webkit-animation: none;\n    animation: none;\n  }\n}\n\n.list-group {\n  display: flex;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  border-radius: 0.25rem;\n}\n\n.list-group-numbered {\n  list-style-type: none;\n  counter-reset: section;\n}\n.list-group-numbered > li::before {\n  content: counters(section, \".\") \". \";\n  counter-increment: section;\n}\n\n.list-group-item-action {\n  width: 100%;\n  color: #495057;\n  text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n  z-index: 1;\n  color: #495057;\n  text-decoration: none;\n  background-color: #f8f9fa;\n}\n.list-group-item-action:active {\n  color: #212529;\n  background-color: #e9ecef;\n}\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.5rem 1rem;\n  color: #212529;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.list-group-item:first-child {\n  border-top-left-radius: inherit;\n  border-top-right-radius: inherit;\n}\n.list-group-item:last-child {\n  border-bottom-right-radius: inherit;\n  border-bottom-left-radius: inherit;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #fff;\n}\n.list-group-item.active {\n  z-index: 2;\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.list-group-item + .list-group-item {\n  border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n  margin-top: -1px;\n  border-top-width: 1px;\n}\n\n.list-group-horizontal {\n  flex-direction: row;\n}\n.list-group-horizontal > .list-group-item:first-child {\n  border-bottom-left-radius: 0.25rem;\n  border-top-right-radius: 0;\n}\n.list-group-horizontal > .list-group-item:last-child {\n  border-top-right-radius: 0.25rem;\n  border-bottom-left-radius: 0;\n}\n.list-group-horizontal > .list-group-item.active {\n  margin-top: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item {\n  border-top-width: 1px;\n  border-left-width: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n  margin-left: -1px;\n  border-left-width: 1px;\n}\n\n@media (min-width: 576px) {\n  .list-group-horizontal-sm {\n    flex-direction: row;\n  }\n  .list-group-horizontal-sm > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 768px) {\n  .list-group-horizontal-md {\n    flex-direction: row;\n  }\n  .list-group-horizontal-md > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-md > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-md > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-md > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 992px) {\n  .list-group-horizontal-lg {\n    flex-direction: row;\n  }\n  .list-group-horizontal-lg > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 1200px) {\n  .list-group-horizontal-xl {\n    flex-direction: row;\n  }\n  .list-group-horizontal-xl > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 1400px) {\n  .list-group-horizontal-xxl {\n    flex-direction: row;\n  }\n  .list-group-horizontal-xxl > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n.list-group-flush {\n  border-radius: 0;\n}\n.list-group-flush > .list-group-item {\n  border-width: 0 0 1px;\n}\n.list-group-flush > .list-group-item:last-child {\n  border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n  color: #084298;\n  background-color: #cfe2ff;\n}\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n  color: #084298;\n  background-color: #bacbe6;\n}\n.list-group-item-primary.list-group-item-action.active {\n  color: #fff;\n  background-color: #084298;\n  border-color: #084298;\n}\n\n.list-group-item-secondary {\n  color: #41464b;\n  background-color: #e2e3e5;\n}\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n  color: #41464b;\n  background-color: #cbccce;\n}\n.list-group-item-secondary.list-group-item-action.active {\n  color: #fff;\n  background-color: #41464b;\n  border-color: #41464b;\n}\n\n.list-group-item-success {\n  color: #0f5132;\n  background-color: #d1e7dd;\n}\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n  color: #0f5132;\n  background-color: #bcd0c7;\n}\n.list-group-item-success.list-group-item-action.active {\n  color: #fff;\n  background-color: #0f5132;\n  border-color: #0f5132;\n}\n\n.list-group-item-info {\n  color: #055160;\n  background-color: #cff4fc;\n}\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n  color: #055160;\n  background-color: #badce3;\n}\n.list-group-item-info.list-group-item-action.active {\n  color: #fff;\n  background-color: #055160;\n  border-color: #055160;\n}\n\n.list-group-item-warning {\n  color: #664d03;\n  background-color: #fff3cd;\n}\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n  color: #664d03;\n  background-color: #e6dbb9;\n}\n.list-group-item-warning.list-group-item-action.active {\n  color: #fff;\n  background-color: #664d03;\n  border-color: #664d03;\n}\n\n.list-group-item-danger {\n  color: #842029;\n  background-color: #f8d7da;\n}\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n  color: #842029;\n  background-color: #dfc2c4;\n}\n.list-group-item-danger.list-group-item-action.active {\n  color: #fff;\n  background-color: #842029;\n  border-color: #842029;\n}\n\n.list-group-item-light {\n  color: #636464;\n  background-color: #fefefe;\n}\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n  color: #636464;\n  background-color: #e5e5e5;\n}\n.list-group-item-light.list-group-item-action.active {\n  color: #fff;\n  background-color: #636464;\n  border-color: #636464;\n}\n\n.list-group-item-dark {\n  color: #141619;\n  background-color: #d3d3d4;\n}\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n  color: #141619;\n  background-color: #bebebf;\n}\n.list-group-item-dark.list-group-item-action.active {\n  color: #fff;\n  background-color: #141619;\n  border-color: #141619;\n}\n\n.btn-close {\n  box-sizing: content-box;\n  width: 1em;\n  height: 1em;\n  padding: 0.25em 0.25em;\n  color: #000;\n  background: transparent url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e\") center/1em auto no-repeat;\n  border: 0;\n  border-radius: 0.25rem;\n  opacity: 0.5;\n}\n.btn-close:hover {\n  color: #000;\n  text-decoration: none;\n  opacity: 0.75;\n}\n.btn-close:focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n  opacity: 1;\n}\n.btn-close:disabled, .btn-close.disabled {\n  pointer-events: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n  opacity: 0.25;\n}\n\n.btn-close-white {\n  filter: invert(1) grayscale(100%) brightness(200%);\n}\n\n.toast {\n  width: 350px;\n  max-width: 100%;\n  font-size: 0.875rem;\n  pointer-events: auto;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.1);\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n.toast.showing {\n  opacity: 0;\n}\n.toast:not(.show) {\n  display: none;\n}\n\n.toast-container {\n  width: -webkit-max-content;\n  width: -moz-max-content;\n  width: max-content;\n  max-width: 100%;\n  pointer-events: none;\n}\n.toast-container > :not(:last-child) {\n  margin-bottom: 0.75rem;\n}\n\n.toast-header {\n  display: flex;\n  align-items: center;\n  padding: 0.5rem 0.75rem;\n  color: #6c757d;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.toast-header .btn-close {\n  margin-right: -0.375rem;\n  margin-left: 0.75rem;\n}\n\n.toast-body {\n  padding: 0.75rem;\n  word-wrap: break-word;\n}\n\n.modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1055;\n  display: none;\n  width: 100%;\n  height: 100%;\n  overflow-x: hidden;\n  overflow-y: auto;\n  outline: 0;\n}\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none;\n}\n.modal.fade .modal-dialog {\n  transition: transform 0.3s ease-out;\n  transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n  .modal.fade .modal-dialog {\n    transition: none;\n  }\n}\n.modal.show .modal-dialog {\n  transform: none;\n}\n.modal.modal-static .modal-dialog {\n  transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n  height: calc(100% - 1rem);\n}\n.modal-dialog-scrollable .modal-content {\n  max-height: 100%;\n  overflow: hidden;\n}\n.modal-dialog-scrollable .modal-body {\n  overflow-y: auto;\n}\n\n.modal-dialog-centered {\n  display: flex;\n  align-items: center;\n  min-height: calc(100% - 1rem);\n}\n\n.modal-content {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n  outline: 0;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1050;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  opacity: 0;\n}\n.modal-backdrop.show {\n  opacity: 0.5;\n}\n\n.modal-header {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n  border-bottom: 1px solid #dee2e6;\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n.modal-header .btn-close {\n  padding: 0.5rem 0.5rem;\n  margin: -0.5rem -0.5rem -0.5rem auto;\n}\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.modal-body {\n  position: relative;\n  flex: 1 1 auto;\n  padding: 1rem;\n}\n\n.modal-footer {\n  display: flex;\n  flex-wrap: wrap;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: flex-end;\n  padding: 0.75rem;\n  border-top: 1px solid #dee2e6;\n  border-bottom-right-radius: calc(0.3rem - 1px);\n  border-bottom-left-radius: calc(0.3rem - 1px);\n}\n.modal-footer > * {\n  margin: 0.25rem;\n}\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto;\n  }\n\n  .modal-dialog-scrollable {\n    height: calc(100% - 3.5rem);\n  }\n\n  .modal-dialog-centered {\n    min-height: calc(100% - 3.5rem);\n  }\n\n  .modal-sm {\n    max-width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg,\n.modal-xl {\n    max-width: 800px;\n  }\n}\n@media (min-width: 1200px) {\n  .modal-xl {\n    max-width: 1140px;\n  }\n}\n.modal-fullscreen {\n  width: 100vw;\n  max-width: none;\n  height: 100%;\n  margin: 0;\n}\n.modal-fullscreen .modal-content {\n  height: 100%;\n  border: 0;\n  border-radius: 0;\n}\n.modal-fullscreen .modal-header {\n  border-radius: 0;\n}\n.modal-fullscreen .modal-body {\n  overflow-y: auto;\n}\n.modal-fullscreen .modal-footer {\n  border-radius: 0;\n}\n\n@media (max-width: 575.98px) {\n  .modal-fullscreen-sm-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-sm-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-sm-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-sm-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-sm-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 767.98px) {\n  .modal-fullscreen-md-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-md-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-md-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-md-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-md-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 991.98px) {\n  .modal-fullscreen-lg-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-lg-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-lg-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-lg-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-lg-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 1199.98px) {\n  .modal-fullscreen-xl-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-xl-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-xl-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-xl-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-xl-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 1399.98px) {\n  .modal-fullscreen-xxl-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-xxl-down .modal-footer {\n    border-radius: 0;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1080;\n  display: block;\n  margin: 0;\n  font-family: var(--bs-font-sans-serif);\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  opacity: 0;\n}\n.tooltip.show {\n  opacity: 0.9;\n}\n.tooltip .tooltip-arrow {\n  position: absolute;\n  display: block;\n  width: 0.8rem;\n  height: 0.4rem;\n}\n.tooltip .tooltip-arrow::before {\n  position: absolute;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[data-popper-placement^=top] {\n  padding: 0.4rem 0;\n}\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\n  bottom: 0;\n}\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\n  top: -1px;\n  border-width: 0.4rem 0.4rem 0;\n  border-top-color: #000;\n}\n\n.bs-tooltip-end, .bs-tooltip-auto[data-popper-placement^=right] {\n  padding: 0 0.4rem;\n}\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\n  left: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\n  right: -1px;\n  border-width: 0.4rem 0.4rem 0.4rem 0;\n  border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[data-popper-placement^=bottom] {\n  padding: 0.4rem 0;\n}\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\n  top: 0;\n}\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\n  bottom: -1px;\n  border-width: 0 0.4rem 0.4rem;\n  border-bottom-color: #000;\n}\n\n.bs-tooltip-start, .bs-tooltip-auto[data-popper-placement^=left] {\n  padding: 0 0.4rem;\n}\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\n  right: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\n  left: -1px;\n  border-width: 0.4rem 0 0.4rem 0.4rem;\n  border-left-color: #000;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 0.25rem;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0 /* rtl:ignore */;\n  z-index: 1070;\n  display: block;\n  max-width: 276px;\n  font-family: var(--bs-font-sans-serif);\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n}\n.popover .popover-arrow {\n  position: absolute;\n  display: block;\n  width: 1rem;\n  height: 0.5rem;\n}\n.popover .popover-arrow::before, .popover .popover-arrow::after {\n  position: absolute;\n  display: block;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\n  bottom: calc(-0.5rem - 1px);\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\n  bottom: 0;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n  bottom: 1px;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: #fff;\n}\n\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\n  left: calc(-0.5rem - 1px);\n  width: 0.5rem;\n  height: 1rem;\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\n  left: 0;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n  left: 1px;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: #fff;\n}\n\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\n  top: calc(-0.5rem - 1px);\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\n  top: 0;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n  top: 1px;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: #fff;\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\n  position: absolute;\n  top: 0;\n  left: 50%;\n  display: block;\n  width: 1rem;\n  margin-left: -0.5rem;\n  content: \"\";\n  border-bottom: 1px solid #f0f0f0;\n}\n\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\n  right: calc(-0.5rem - 1px);\n  width: 0.5rem;\n  height: 1rem;\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\n  right: 0;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n  right: 1px;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: #fff;\n}\n\n.popover-header {\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  background-color: #f0f0f0;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n.popover-header:empty {\n  display: none;\n}\n\n.popover-body {\n  padding: 1rem 1rem;\n  color: #212529;\n}\n\n.carousel {\n  position: relative;\n}\n\n.carousel.pointer-event {\n  touch-action: pan-y;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  float: left;\n  width: 100%;\n  margin-right: -100%;\n  -webkit-backface-visibility: hidden;\n  backface-visibility: hidden;\n  transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-item {\n    transition: none;\n  }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n/* rtl:begin:ignore */\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n  transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n  transform: translateX(-100%);\n}\n\n/* rtl:end:ignore */\n.carousel-fade .carousel-item {\n  opacity: 0;\n  transition-property: opacity;\n  transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-start,\n.carousel-fade .carousel-item-prev.carousel-item-end {\n  z-index: 1;\n  opacity: 1;\n}\n.carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n  z-index: 0;\n  opacity: 0;\n  transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n    transition: none;\n  }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 15%;\n  padding: 0;\n  color: #fff;\n  text-align: center;\n  background: none;\n  border: 0;\n  opacity: 0.5;\n  transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-control-prev,\n.carousel-control-next {\n    transition: none;\n  }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  opacity: 0.9;\n}\n\n.carousel-control-prev {\n  left: 0;\n}\n\n.carousel-control-next {\n  right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  background-repeat: no-repeat;\n  background-position: 50%;\n  background-size: 100% 100%;\n}\n\n/* rtl:options: {\n  \"autoRename\": true,\n  \"stringMap\":[ {\n    \"name\"    : \"prev-next\",\n    \"search\"  : \"prev\",\n    \"replace\" : \"next\"\n  } ]\n} */\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 2;\n  display: flex;\n  justify-content: center;\n  padding: 0;\n  margin-right: 15%;\n  margin-bottom: 1rem;\n  margin-left: 15%;\n  list-style: none;\n}\n.carousel-indicators [data-bs-target] {\n  box-sizing: content-box;\n  flex: 0 1 auto;\n  width: 30px;\n  height: 3px;\n  padding: 0;\n  margin-right: 3px;\n  margin-left: 3px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 0;\n  border-top: 10px solid transparent;\n  border-bottom: 10px solid transparent;\n  opacity: 0.5;\n  transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-indicators [data-bs-target] {\n    transition: none;\n  }\n}\n.carousel-indicators .active {\n  opacity: 1;\n}\n\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 1.25rem;\n  left: 15%;\n  padding-top: 1.25rem;\n  padding-bottom: 1.25rem;\n  color: #fff;\n  text-align: center;\n}\n\n.carousel-dark .carousel-control-prev-icon,\n.carousel-dark .carousel-control-next-icon {\n  filter: invert(1) grayscale(100);\n}\n.carousel-dark .carousel-indicators [data-bs-target] {\n  background-color: #000;\n}\n.carousel-dark .carousel-caption {\n  color: #000;\n}\n\n@-webkit-keyframes spinner-border {\n  to {\n    transform: rotate(360deg) /* rtl:ignore */;\n  }\n}\n\n@keyframes spinner-border {\n  to {\n    transform: rotate(360deg) /* rtl:ignore */;\n  }\n}\n.spinner-border {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: -0.125em;\n  border: 0.25em solid currentColor;\n  border-right-color: transparent;\n  border-radius: 50%;\n  -webkit-animation: 0.75s linear infinite spinner-border;\n  animation: 0.75s linear infinite spinner-border;\n}\n\n.spinner-border-sm {\n  width: 1rem;\n  height: 1rem;\n  border-width: 0.2em;\n}\n\n@-webkit-keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n\n@keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n.spinner-grow {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: -0.125em;\n  background-color: currentColor;\n  border-radius: 50%;\n  opacity: 0;\n  -webkit-animation: 0.75s linear infinite spinner-grow;\n  animation: 0.75s linear infinite spinner-grow;\n}\n\n.spinner-grow-sm {\n  width: 1rem;\n  height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .spinner-border,\n.spinner-grow {\n    -webkit-animation-duration: 1.5s;\n    animation-duration: 1.5s;\n  }\n}\n.offcanvas {\n  position: fixed;\n  bottom: 0;\n  z-index: 1045;\n  display: flex;\n  flex-direction: column;\n  max-width: 100%;\n  visibility: hidden;\n  background-color: #fff;\n  background-clip: padding-box;\n  outline: 0;\n  transition: transform 0.3s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .offcanvas {\n    transition: none;\n  }\n}\n\n.offcanvas-backdrop {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1040;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n.offcanvas-backdrop.fade {\n  opacity: 0;\n}\n.offcanvas-backdrop.show {\n  opacity: 0.5;\n}\n\n.offcanvas-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n}\n.offcanvas-header .btn-close {\n  padding: 0.5rem 0.5rem;\n  margin-top: -0.5rem;\n  margin-right: -0.5rem;\n  margin-bottom: -0.5rem;\n}\n\n.offcanvas-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.offcanvas-body {\n  flex-grow: 1;\n  padding: 1rem 1rem;\n  overflow-y: auto;\n}\n\n.offcanvas-start {\n  top: 0;\n  left: 0;\n  width: 400px;\n  border-right: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateX(-100%);\n}\n\n.offcanvas-end {\n  top: 0;\n  right: 0;\n  width: 400px;\n  border-left: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateX(100%);\n}\n\n.offcanvas-top {\n  top: 0;\n  right: 0;\n  left: 0;\n  height: 30vh;\n  max-height: 100%;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateY(-100%);\n}\n\n.offcanvas-bottom {\n  right: 0;\n  left: 0;\n  height: 30vh;\n  max-height: 100%;\n  border-top: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateY(100%);\n}\n\n.offcanvas.show {\n  transform: none;\n}\n\n.placeholder {\n  display: inline-block;\n  min-height: 1em;\n  vertical-align: middle;\n  cursor: wait;\n  background-color: currentColor;\n  opacity: 0.5;\n}\n.placeholder.btn::before {\n  display: inline-block;\n  content: \"\";\n}\n\n.placeholder-xs {\n  min-height: 0.6em;\n}\n\n.placeholder-sm {\n  min-height: 0.8em;\n}\n\n.placeholder-lg {\n  min-height: 1.2em;\n}\n\n.placeholder-glow .placeholder {\n  -webkit-animation: placeholder-glow 2s ease-in-out infinite;\n  animation: placeholder-glow 2s ease-in-out infinite;\n}\n\n@-webkit-keyframes placeholder-glow {\n  50% {\n    opacity: 0.2;\n  }\n}\n\n@keyframes placeholder-glow {\n  50% {\n    opacity: 0.2;\n  }\n}\n.placeholder-wave {\n  -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n  mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n  -webkit-mask-size: 200% 100%;\n  mask-size: 200% 100%;\n  -webkit-animation: placeholder-wave 2s linear infinite;\n  animation: placeholder-wave 2s linear infinite;\n}\n\n@-webkit-keyframes placeholder-wave {\n  100% {\n    -webkit-mask-position: -200% 0%;\n    mask-position: -200% 0%;\n  }\n}\n\n@keyframes placeholder-wave {\n  100% {\n    -webkit-mask-position: -200% 0%;\n    mask-position: -200% 0%;\n  }\n}\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.link-primary {\n  color: #0d6efd;\n}\n.link-primary:hover, .link-primary:focus {\n  color: #0a58ca;\n}\n\n.link-secondary {\n  color: #6c757d;\n}\n.link-secondary:hover, .link-secondary:focus {\n  color: #565e64;\n}\n\n.link-success {\n  color: #198754;\n}\n.link-success:hover, .link-success:focus {\n  color: #146c43;\n}\n\n.link-info {\n  color: #0dcaf0;\n}\n.link-info:hover, .link-info:focus {\n  color: #3dd5f3;\n}\n\n.link-warning {\n  color: #ffc107;\n}\n.link-warning:hover, .link-warning:focus {\n  color: #ffcd39;\n}\n\n.link-danger {\n  color: #dc3545;\n}\n.link-danger:hover, .link-danger:focus {\n  color: #b02a37;\n}\n\n.link-light {\n  color: #f8f9fa;\n}\n.link-light:hover, .link-light:focus {\n  color: #f9fafb;\n}\n\n.link-dark {\n  color: #212529;\n}\n.link-dark:hover, .link-dark:focus {\n  color: #1a1e21;\n}\n\n.ratio {\n  position: relative;\n  width: 100%;\n}\n.ratio::before {\n  display: block;\n  padding-top: var(--bs-aspect-ratio);\n  content: \"\";\n}\n.ratio > * {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.ratio-1x1 {\n  --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n  --bs-aspect-ratio: calc(3 / 4 * 100%);\n}\n\n.ratio-16x9 {\n  --bs-aspect-ratio: calc(9 / 16 * 100%);\n}\n\n.ratio-21x9 {\n  --bs-aspect-ratio: calc(9 / 21 * 100%);\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.sticky-top {\n  position: -webkit-sticky;\n  position: sticky;\n  top: 0;\n  z-index: 1020;\n}\n\n@media (min-width: 576px) {\n  .sticky-sm-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 768px) {\n  .sticky-md-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 992px) {\n  .sticky-lg-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1200px) {\n  .sticky-xl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1400px) {\n  .sticky-xxl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1;\n  content: \"\";\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: 0.25;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.float-start {\n  float: left !important;\n}\n\n.float-end {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-25 {\n  opacity: 0.25 !important;\n}\n\n.opacity-50 {\n  opacity: 0.5 !important;\n}\n\n.opacity-75 {\n  opacity: 0.75 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important;\n}\n\n.top-0 {\n  top: 0 !important;\n}\n\n.top-50 {\n  top: 50% !important;\n}\n\n.top-100 {\n  top: 100% !important;\n}\n\n.bottom-0 {\n  bottom: 0 !important;\n}\n\n.bottom-50 {\n  bottom: 50% !important;\n}\n\n.bottom-100 {\n  bottom: 100% !important;\n}\n\n.start-0 {\n  left: 0 !important;\n}\n\n.start-50 {\n  left: 50% !important;\n}\n\n.start-100 {\n  left: 100% !important;\n}\n\n.end-0 {\n  right: 0 !important;\n}\n\n.end-50 {\n  right: 50% !important;\n}\n\n.end-100 {\n  right: 100% !important;\n}\n\n.translate-middle {\n  transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n  transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n  transform: translateY(-50%) !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-end {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-end-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-start {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-start-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #0d6efd !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #198754 !important;\n}\n\n.border-info {\n  border-color: #0dcaf0 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #212529 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.border-1 {\n  border-width: 1px !important;\n}\n\n.border-2 {\n  border-width: 2px !important;\n}\n\n.border-3 {\n  border-width: 3px !important;\n}\n\n.border-4 {\n  border-width: 4px !important;\n}\n\n.border-5 {\n  border-width: 5px !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.vw-100 {\n  width: 100vw !important;\n}\n\n.min-vw-100 {\n  min-width: 100vw !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.vh-100 {\n  height: 100vh !important;\n}\n\n.min-vh-100 {\n  min-height: 100vh !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.gap-0 {\n  gap: 0 !important;\n}\n\n.gap-1 {\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  gap: 1rem !important;\n}\n\n.gap-4 {\n  gap: 1.5rem !important;\n}\n\n.gap-5 {\n  gap: 3rem !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-right: 0 !important;\n  margin-left: 0 !important;\n}\n\n.mx-1 {\n  margin-right: 0.25rem !important;\n  margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-right: 0.5rem !important;\n  margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-right: 1rem !important;\n  margin-left: 1rem !important;\n}\n\n.mx-4 {\n  margin-right: 1.5rem !important;\n  margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-right: 3rem !important;\n  margin-left: 3rem !important;\n}\n\n.mx-auto {\n  margin-right: auto !important;\n  margin-left: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-right: 0 !important;\n}\n\n.me-1 {\n  margin-right: 0.25rem !important;\n}\n\n.me-2 {\n  margin-right: 0.5rem !important;\n}\n\n.me-3 {\n  margin-right: 1rem !important;\n}\n\n.me-4 {\n  margin-right: 1.5rem !important;\n}\n\n.me-5 {\n  margin-right: 3rem !important;\n}\n\n.me-auto {\n  margin-right: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-left: 0 !important;\n}\n\n.ms-1 {\n  margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-left: 1rem !important;\n}\n\n.ms-4 {\n  margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-left: 3rem !important;\n}\n\n.ms-auto {\n  margin-left: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-right: 0 !important;\n  padding-left: 0 !important;\n}\n\n.px-1 {\n  padding-right: 0.25rem !important;\n  padding-left: 0.25rem !important;\n}\n\n.px-2 {\n  padding-right: 0.5rem !important;\n  padding-left: 0.5rem !important;\n}\n\n.px-3 {\n  padding-right: 1rem !important;\n  padding-left: 1rem !important;\n}\n\n.px-4 {\n  padding-right: 1.5rem !important;\n  padding-left: 1.5rem !important;\n}\n\n.px-5 {\n  padding-right: 3rem !important;\n  padding-left: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-right: 0 !important;\n}\n\n.pe-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-right: 1rem !important;\n}\n\n.pe-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-left: 0 !important;\n}\n\n.ps-1 {\n  padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-left: 1rem !important;\n}\n\n.ps-4 {\n  padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-left: 3rem !important;\n}\n\n.font-monospace {\n  font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n  font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n  font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n  font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n  font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n  font-size: 1.25rem !important;\n}\n\n.fs-6 {\n  font-size: 1rem !important;\n}\n\n.fst-italic {\n  font-style: italic !important;\n}\n\n.fst-normal {\n  font-style: normal !important;\n}\n\n.fw-light {\n  font-weight: 300 !important;\n}\n\n.fw-lighter {\n  font-weight: lighter !important;\n}\n\n.fw-normal {\n  font-weight: 400 !important;\n}\n\n.fw-bold {\n  font-weight: 700 !important;\n}\n\n.fw-bolder {\n  font-weight: bolder !important;\n}\n\n.lh-1 {\n  line-height: 1 !important;\n}\n\n.lh-sm {\n  line-height: 1.25 !important;\n}\n\n.lh-base {\n  line-height: 1.5 !important;\n}\n\n.lh-lg {\n  line-height: 2 !important;\n}\n\n.text-start {\n  text-align: left !important;\n}\n\n.text-end {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n.text-decoration-none {\n  text-decoration: none !important;\n}\n\n.text-decoration-underline {\n  text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n  text-decoration: line-through !important;\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.text-wrap {\n  white-space: normal !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n  word-wrap: break-word !important;\n  word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n  --bs-text-opacity: 1;\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  --bs-text-opacity: 1;\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  --bs-text-opacity: 1;\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-reset {\n  --bs-text-opacity: 1;\n  color: inherit !important;\n}\n\n.text-opacity-25 {\n  --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n  --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n  --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n  --bs-text-opacity: 1;\n}\n\n.bg-primary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n  --bs-bg-opacity: 1;\n  background-color: transparent !important;\n}\n\n.bg-opacity-10 {\n  --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n  --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n  --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n  --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n  --bs-bg-opacity: 1;\n}\n\n.bg-gradient {\n  background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n  -webkit-user-select: all !important;\n  -moz-user-select: all !important;\n  user-select: all !important;\n}\n\n.user-select-auto {\n  -webkit-user-select: auto !important;\n  -moz-user-select: auto !important;\n  user-select: auto !important;\n}\n\n.user-select-none {\n  -webkit-user-select: none !important;\n  -moz-user-select: none !important;\n  user-select: none !important;\n}\n\n.pe-none {\n  pointer-events: none !important;\n}\n\n.pe-auto {\n  pointer-events: auto !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.rounded-1 {\n  border-radius: 0.2rem !important;\n}\n\n.rounded-2 {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-3 {\n  border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-pill {\n  border-radius: 50rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-end {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-start {\n  border-bottom-left-radius: 0.25rem !important;\n  border-top-left-radius: 0.25rem !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-start {\n    float: left !important;\n  }\n\n  .float-sm-end {\n    float: right !important;\n  }\n\n  .float-sm-none {\n    float: none !important;\n  }\n\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-sm-0 {\n    gap: 0 !important;\n  }\n\n  .gap-sm-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-sm-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-sm-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-sm-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-sm-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-sm-start {\n    text-align: left !important;\n  }\n\n  .text-sm-end {\n    text-align: right !important;\n  }\n\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 768px) {\n  .float-md-start {\n    float: left !important;\n  }\n\n  .float-md-end {\n    float: right !important;\n  }\n\n  .float-md-none {\n    float: none !important;\n  }\n\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-md-0 {\n    gap: 0 !important;\n  }\n\n  .gap-md-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-md-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-md-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-md-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-md-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-left: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-md-start {\n    text-align: left !important;\n  }\n\n  .text-md-end {\n    text-align: right !important;\n  }\n\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 992px) {\n  .float-lg-start {\n    float: left !important;\n  }\n\n  .float-lg-end {\n    float: right !important;\n  }\n\n  .float-lg-none {\n    float: none !important;\n  }\n\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-lg-0 {\n    gap: 0 !important;\n  }\n\n  .gap-lg-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-lg-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-lg-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-lg-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-lg-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-lg-start {\n    text-align: left !important;\n  }\n\n  .text-lg-end {\n    text-align: right !important;\n  }\n\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .float-xl-start {\n    float: left !important;\n  }\n\n  .float-xl-end {\n    float: right !important;\n  }\n\n  .float-xl-none {\n    float: none !important;\n  }\n\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xl-start {\n    text-align: left !important;\n  }\n\n  .text-xl-end {\n    text-align: right !important;\n  }\n\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1400px) {\n  .float-xxl-start {\n    float: left !important;\n  }\n\n  .float-xxl-end {\n    float: right !important;\n  }\n\n  .float-xxl-none {\n    float: none !important;\n  }\n\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xxl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xxl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xxl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xxl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xxl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xxl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xxl-start {\n    text-align: left !important;\n  }\n\n  .text-xxl-end {\n    text-align: right !important;\n  }\n\n  .text-xxl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .fs-1 {\n    font-size: 2.5rem !important;\n  }\n\n  .fs-2 {\n    font-size: 2rem !important;\n  }\n\n  .fs-3 {\n    font-size: 1.75rem !important;\n  }\n\n  .fs-4 {\n    font-size: 1.5rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n  @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n  @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n  @error \"`#{$rfs-factor}` is not a valid  $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n  $dividend: abs($dividend);\n  $divisor: abs($divisor);\n  @if $dividend == 0 {\n    @return 0;\n  }\n  @if $divisor == 0 {\n    @error \"Cannot divide by 0\";\n  }\n  $remainder: $dividend;\n  $result: 0;\n  $factor: 10;\n  @while ($remainder > 0 and $precision >= 0) {\n    $quotient: 0;\n    @while ($remainder >= $divisor) {\n      $remainder: $remainder - $divisor;\n      $quotient: $quotient + 1;\n    }\n    $result: $result * 10 + $quotient;\n    $factor: $factor * .1;\n    $remainder: $remainder * 10;\n    $precision: $precision - 1;\n    @if ($precision < 0 and $remainder >= $divisor * 5) {\n      $result: $result + 1;\n    }\n  }\n  $result: $result * $factor * $sign;\n  $dividend-unit: unit($dividend);\n  $divisor-unit: unit($divisor);\n  $unit-map: (\n    \"px\": 1px,\n    \"rem\": 1rem,\n    \"em\": 1em,\n    \"%\": 1%\n  );\n  @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n    $result: $result * map-get($unit-map, $dividend-unit);\n  }\n  @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n  $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n  $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n  $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n  $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n  @if $rfs-two-dimensional {\n    @if $rfs-mode == max-media-query {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n    @else {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n  }\n  @else {\n    @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n      @content;\n    }\n  }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n  @if $rfs-class == disable and $rfs-mode == max-media-query {\n    // Adding an extra class increases specificity, which prevents the media query to override the property\n    &,\n    .disable-rfs &,\n    &.disable-rfs {\n      @content;\n    }\n  }\n  @else if $rfs-class == enable and $rfs-mode == min-media-query {\n    .enable-rfs &,\n    &.enable-rfs {\n      @content;\n    }\n  }\n  @else {\n    @content;\n  }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n  @if $rfs-class == enable {\n    @if $rfs-mode == min-media-query {\n      @content;\n    }\n\n    @include _rfs-media-query {\n      .enable-rfs &,\n      &.enable-rfs {\n        @content;\n      }\n    }\n  }\n  @else {\n    @if $rfs-class == disable and $rfs-mode == min-media-query {\n      .disable-rfs &,\n      &.disable-rfs {\n        @content;\n      }\n    }\n    @include _rfs-media-query {\n      @content;\n    }\n  }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      @if $unit == px {\n        // Convert to rem if needed\n        $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n      }\n      @else if $unit == rem {\n        // Convert to px if needed\n        $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n      }\n      @else {\n        // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n        $val: $val + ' ' + $value;\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n      @if not $unit or $unit != px and $unit != rem {\n        $val: $val + ' ' + $value;\n      }\n\n      @else {\n        // Remove unit from $value for calculations\n        $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n        // Only add the media query if the value is greater than the minimum value\n        @if abs($value) <= $rfs-base-value or not $enable-rfs {\n          $val: $val + ' ' +  if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n        }\n        @else {\n          // Calculate the minimum value\n          $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n          // Calculate difference between $value and the minimum value\n          $value-diff: abs($value) - $value-min;\n\n          // Base value formatting\n          $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n          // Use negative value if needed\n          $min-width: if($value < 0, -$min-width, $min-width);\n\n          // Use `vmin` if two-dimensional is enabled\n          $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n          // Calculate the variable width between 0 and $rfs-breakpoint\n          $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n          // Return the calculated value\n          $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n        }\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n  @if $values != null {\n    $val: rfs-value($values);\n    $fluidVal: rfs-fluid-value($values);\n\n    // Do not print the media query if responsive & non-responsive values are the same\n    @if $val == $fluidVal {\n      #{$property}: $val;\n    }\n    @else {\n      @include _rfs-rule {\n        #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n        // Include safari iframe resize fix if needed\n        min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n      }\n\n      @include _rfs-media-query-rule {\n        #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n      }\n    }\n  }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n  @include rfs($value);\n}\n\n@mixin padding($value) {\n  @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n  @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n  @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n  @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n  @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n  @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n  @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n  @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n  @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n  @include rfs($value, margin-left);\n}\n","// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if type-of($value) == number {\n      $return: append($return, max($value, 0));\n    } @else {\n      $return: append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n","//\n// Headings\n//\n.h1 {\n  @extend h1;\n}\n\n.h2 {\n  @extend h2;\n}\n\n.h3 {\n  @extend h3;\n}\n\n.h4 {\n  @extend h4;\n}\n\n.h5 {\n  @extend h5;\n}\n\n.h6 {\n  @extend h6;\n}\n\n\n.lead {\n  @include font-size($lead-font-size);\n  font-weight: $lead-font-weight;\n}\n\n// Type display classes\n@each $display, $font-size in $display-font-sizes {\n  .display-#{$display} {\n    @include font-size($font-size);\n    font-weight: $display-font-weight;\n    line-height: $display-line-height;\n  }\n}\n\n//\n// Emphasis\n//\n.small {\n  @extend small;\n}\n\n.mark {\n  @extend mark;\n}\n\n//\n// Lists\n//\n\n.list-unstyled {\n  @include list-unstyled();\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  @include list-unstyled();\n}\n.list-inline-item {\n  display: inline-block;\n\n  &:not(:last-child) {\n    margin-right: $list-inline-padding;\n  }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n  @include font-size($initialism-font-size);\n  text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n  margin-bottom: $blockquote-margin-y;\n  @include font-size($blockquote-font-size);\n\n  > :last-child {\n    margin-bottom: 0;\n  }\n}\n\n.blockquote-footer {\n  margin-top: -$blockquote-margin-y;\n  margin-bottom: $blockquote-margin-y;\n  @include font-size($blockquote-footer-font-size);\n  color: $blockquote-footer-color;\n\n  &::before {\n    content: \"\\2014\\00A0\"; // em dash, nbsp\n  }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n  @include img-fluid();\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n  padding: $thumbnail-padding;\n  background-color: $thumbnail-bg;\n  border: $thumbnail-border-width solid $thumbnail-border-color;\n  @include border-radius($thumbnail-border-radius);\n  @include box-shadow($thumbnail-box-shadow);\n\n  // Keep them at most 100% wide\n  @include img-fluid();\n}\n\n//\n// Figures\n//\n\n.figure {\n  // Ensures the caption's text aligns with the image.\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: $spacer * .5;\n  line-height: 1;\n}\n\n.figure-caption {\n  @include font-size($figure-caption-font-size);\n  color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n  // Part 1: Set a maximum relative to the parent\n  max-width: 100%;\n  // Part 2: Override the height to auto, otherwise images will be stretched\n  // when setting a width and height attribute on the img element.\n  height: auto;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n  // Single container class with breakpoint max-widths\n  .container,\n  // 100% wide container at all breakpoints\n  .container-fluid {\n    @include make-container();\n  }\n\n  // Responsive containers that are 100% wide until a breakpoint\n  @each $breakpoint, $container-max-width in $container-max-widths {\n    .container-#{$breakpoint} {\n      @extend .container-fluid;\n    }\n\n    @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n      %responsive-container-#{$breakpoint} {\n        max-width: $container-max-width;\n      }\n\n      // Extend each breakpoint which is smaller or equal to the current breakpoint\n      $extend-breakpoint: true;\n\n      @each $name, $width in $grid-breakpoints {\n        @if ($extend-breakpoint) {\n          .container#{breakpoint-infix($name, $grid-breakpoints)} {\n            @extend %responsive-container-#{$breakpoint};\n          }\n\n          // Once the current breakpoint is reached, stop extending\n          @if ($breakpoint == $name) {\n            $extend-breakpoint: false;\n          }\n        }\n      }\n    }\n  }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  width: 100%;\n  padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  margin-right: auto;\n  margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n  $n: index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n  }\n  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n  $min: map-get($breakpoints, $name);\n  @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n  $max: map-get($breakpoints, $name);\n  @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n  @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n  .row {\n    @include make-row();\n\n    > * {\n      @include make-col-ready();\n    }\n  }\n}\n\n@if $enable-cssgrid {\n  .grid {\n    display: grid;\n    grid-template-rows: repeat(var(--#{$variable-prefix}rows, 1), 1fr);\n    grid-template-columns: repeat(var(--#{$variable-prefix}columns, #{$grid-columns}), 1fr);\n    gap: var(--#{$variable-prefix}gap, #{$grid-gutter-width});\n\n    @include make-cssgrid();\n  }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n  @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n  --#{$variable-prefix}gutter-x: #{$gutter};\n  --#{$variable-prefix}gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list\n  margin-right: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n  margin-left: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n  // Add box sizing if only the grid is loaded\n  box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-right: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  padding-left: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  margin-top: var(--#{$variable-prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: percentage(divide($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: divide($size, $columns);\n  margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: divide(100%, $count);\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is and invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","//\n// Basic Bootstrap table\n//\n\n.table {\n  --#{$variable-prefix}table-bg: #{$table-bg};\n  --#{$variable-prefix}table-accent-bg: #{$table-accent-bg};\n  --#{$variable-prefix}table-striped-color: #{$table-striped-color};\n  --#{$variable-prefix}table-striped-bg: #{$table-striped-bg};\n  --#{$variable-prefix}table-active-color: #{$table-active-color};\n  --#{$variable-prefix}table-active-bg: #{$table-active-bg};\n  --#{$variable-prefix}table-hover-color: #{$table-hover-color};\n  --#{$variable-prefix}table-hover-bg: #{$table-hover-bg};\n\n  width: 100%;\n  margin-bottom: $spacer;\n  color: $table-color;\n  vertical-align: $table-cell-vertical-align;\n  border-color: $table-border-color;\n\n  // Target th & td\n  // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.\n  // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).\n  // Another advantage is that this generates less code and makes the selector less specific making it easier to override.\n  // stylelint-disable-next-line selector-max-universal\n  > :not(caption) > * > * {\n    padding: $table-cell-padding-y $table-cell-padding-x;\n    background-color: var(--#{$variable-prefix}table-bg);\n    border-bottom-width: $table-border-width;\n    box-shadow: inset 0 0 0 9999px var(--#{$variable-prefix}table-accent-bg);\n  }\n\n  > tbody {\n    vertical-align: inherit;\n  }\n\n  > thead {\n    vertical-align: bottom;\n  }\n\n  // Highlight border color between thead, tbody and tfoot.\n  > :not(:last-child) > :last-child > * {\n    border-bottom-color: $table-group-separator-color;\n  }\n}\n\n\n//\n// Change placement of captions with a class\n//\n\n.caption-top {\n  caption-side: top;\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n  // stylelint-disable-next-line selector-max-universal\n  > :not(caption) > * > * {\n    padding: $table-cell-padding-y-sm $table-cell-padding-x-sm;\n  }\n}\n\n\n// Border versions\n//\n// Add or remove borders all around the table and between all the columns.\n//\n// When borders are added on all sides of the cells, the corners can render odd when\n// these borders do not have the same color or if they are semi-transparent.\n// Therefor we add top and border bottoms to the `tr`s and left and right borders\n// to the `td`s or `th`s\n\n.table-bordered {\n  > :not(caption) > * {\n    border-width: $table-border-width 0;\n\n    // stylelint-disable-next-line selector-max-universal\n    > * {\n      border-width: 0 $table-border-width;\n    }\n  }\n}\n\n.table-borderless {\n  // stylelint-disable-next-line selector-max-universal\n  > :not(caption) > * > * {\n    border-bottom-width: 0;\n  }\n}\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-of-type(#{$table-striped-order}) {\n    --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-striped-bg);\n    color: var(--#{$variable-prefix}table-striped-color);\n  }\n}\n\n// Active table\n//\n// The `.table-active` class can be added to highlight rows or cells\n\n.table-active {\n  --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-active-bg);\n  color: var(--#{$variable-prefix}table-active-color);\n}\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-hover-bg);\n    color: var(--#{$variable-prefix}table-hover-color);\n  }\n}\n\n\n// Table variants\n//\n// Table variants set the table cell backgrounds, border colors\n// and the colors of the striped, hovered & active tables\n\n@each $color, $value in $table-variants {\n  @include table-variant($color, $value);\n}\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n  @include media-breakpoint-down($breakpoint) {\n    .table-responsive#{$infix} {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n}\n","// scss-docs-start table-variant\n@mixin table-variant($state, $background) {\n  .table-#{$state} {\n    $color: color-contrast(opaque($body-bg, $background));\n    $hover-bg: mix($color, $background, percentage($table-hover-bg-factor));\n    $striped-bg: mix($color, $background, percentage($table-striped-bg-factor));\n    $active-bg: mix($color, $background, percentage($table-active-bg-factor));\n\n    --#{$variable-prefix}table-bg: #{$background};\n    --#{$variable-prefix}table-striped-bg: #{$striped-bg};\n    --#{$variable-prefix}table-striped-color: #{color-contrast($striped-bg)};\n    --#{$variable-prefix}table-active-bg: #{$active-bg};\n    --#{$variable-prefix}table-active-color: #{color-contrast($active-bg)};\n    --#{$variable-prefix}table-hover-bg: #{$hover-bg};\n    --#{$variable-prefix}table-hover-color: #{color-contrast($hover-bg)};\n\n    color: $color;\n    border-color: mix($color, $background, percentage($table-border-factor));\n  }\n}\n// scss-docs-end table-variant\n","//\n// Labels\n//\n\n.form-label {\n  margin-bottom: $form-label-margin-bottom;\n  @include font-size($form-label-font-size);\n  font-style: $form-label-font-style;\n  font-weight: $form-label-font-weight;\n  color: $form-label-color;\n}\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n  padding-top: add($input-padding-y, $input-border-width);\n  padding-bottom: add($input-padding-y, $input-border-width);\n  margin-bottom: 0; // Override the `<legend>` default\n  @include font-size(inherit); // Override the `<legend>` default\n  font-style: $form-label-font-style;\n  font-weight: $form-label-font-weight;\n  line-height: $input-line-height;\n  color: $form-label-color;\n}\n\n.col-form-label-lg {\n  padding-top: add($input-padding-y-lg, $input-border-width);\n  padding-bottom: add($input-padding-y-lg, $input-border-width);\n  @include font-size($input-font-size-lg);\n}\n\n.col-form-label-sm {\n  padding-top: add($input-padding-y-sm, $input-border-width);\n  padding-bottom: add($input-padding-y-sm, $input-border-width);\n  @include font-size($input-font-size-sm);\n}\n","//\n// Form text\n//\n\n.form-text {\n  margin-top: $form-text-margin-top;\n  @include font-size($form-text-font-size);\n  font-style: $form-text-font-style;\n  font-weight: $form-text-font-weight;\n  color: $form-text-color;\n}\n","//\n// General form controls (plus a few specific high-level interventions)\n//\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: $input-padding-y $input-padding-x;\n  font-family: $input-font-family;\n  @include font-size($input-font-size);\n  font-weight: $input-font-weight;\n  line-height: $input-line-height;\n  color: $input-color;\n  background-color: $input-bg;\n  background-clip: padding-box;\n  border: $input-border-width solid $input-border-color;\n  appearance: none; // Fix appearance for date inputs in Safari\n\n  // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.\n  @include border-radius($input-border-radius, 0);\n\n  @include box-shadow($input-box-shadow);\n  @include transition($input-transition);\n\n  &[type=\"file\"] {\n    overflow: hidden; // prevent pseudo element button overlap\n\n    &:not(:disabled):not([readonly]) {\n      cursor: pointer;\n    }\n  }\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  &:focus {\n    color: $input-focus-color;\n    background-color: $input-focus-bg;\n    border-color: $input-focus-border-color;\n    outline: 0;\n    @if $enable-shadows {\n      @include box-shadow($input-box-shadow, $input-focus-box-shadow);\n    } @else {\n      // Avoid using mixin so we can pass custom focus shadow properly\n      box-shadow: $input-focus-box-shadow;\n    }\n  }\n\n  // Add some height to date inputs on iOS\n  // https://github.com/twbs/bootstrap/issues/23307\n  // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved\n  &::-webkit-date-and-time-value {\n    // Multiply line-height by 1em if it has no unit\n    height: if(unit($input-line-height) == \"\", $input-line-height * 1em, $input-line-height);\n  }\n\n  // Placeholder\n  &::placeholder {\n    color: $input-placeholder-color;\n    // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n    opacity: 1;\n  }\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &:disabled,\n  &[readonly] {\n    background-color: $input-disabled-bg;\n    border-color: $input-disabled-border-color;\n    // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n    opacity: 1;\n  }\n\n  // File input buttons theming\n  &::file-selector-button {\n    padding: $input-padding-y $input-padding-x;\n    margin: (-$input-padding-y) (-$input-padding-x);\n    margin-inline-end: $input-padding-x;\n    color: $form-file-button-color;\n    @include gradient-bg($form-file-button-bg);\n    pointer-events: none;\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: $input-border-width;\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n    @include transition($btn-transition);\n  }\n\n  &:hover:not(:disabled):not([readonly])::file-selector-button {\n    background-color: $form-file-button-hover-bg;\n  }\n\n  &::-webkit-file-upload-button {\n    padding: $input-padding-y $input-padding-x;\n    margin: (-$input-padding-y) (-$input-padding-x);\n    margin-inline-end: $input-padding-x;\n    color: $form-file-button-color;\n    @include gradient-bg($form-file-button-bg);\n    pointer-events: none;\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: $input-border-width;\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n    @include transition($btn-transition);\n  }\n\n  &:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n    background-color: $form-file-button-hover-bg;\n  }\n}\n\n// Readonly controls as plain text\n//\n// Apply class to a readonly input to make it appear like regular plain\n// text (without any border, background color, focus indicator)\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding: $input-padding-y 0;\n  margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n  line-height: $input-line-height;\n  color: $input-plaintext-color;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: $input-border-width 0;\n\n  &.form-control-sm,\n  &.form-control-lg {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// Repeated in `_input_group.scss` to avoid Sass extend issues.\n\n.form-control-sm {\n  min-height: $input-height-sm;\n  padding: $input-padding-y-sm $input-padding-x-sm;\n  @include font-size($input-font-size-sm);\n  @include border-radius($input-border-radius-sm);\n\n  &::file-selector-button {\n    padding: $input-padding-y-sm $input-padding-x-sm;\n    margin: (-$input-padding-y-sm) (-$input-padding-x-sm);\n    margin-inline-end: $input-padding-x-sm;\n  }\n\n  &::-webkit-file-upload-button {\n    padding: $input-padding-y-sm $input-padding-x-sm;\n    margin: (-$input-padding-y-sm) (-$input-padding-x-sm);\n    margin-inline-end: $input-padding-x-sm;\n  }\n}\n\n.form-control-lg {\n  min-height: $input-height-lg;\n  padding: $input-padding-y-lg $input-padding-x-lg;\n  @include font-size($input-font-size-lg);\n  @include border-radius($input-border-radius-lg);\n\n  &::file-selector-button {\n    padding: $input-padding-y-lg $input-padding-x-lg;\n    margin: (-$input-padding-y-lg) (-$input-padding-x-lg);\n    margin-inline-end: $input-padding-x-lg;\n  }\n\n  &::-webkit-file-upload-button {\n    padding: $input-padding-y-lg $input-padding-x-lg;\n    margin: (-$input-padding-y-lg) (-$input-padding-x-lg);\n    margin-inline-end: $input-padding-x-lg;\n  }\n}\n\n// Make sure textareas don't shrink too much when resized\n// https://github.com/twbs/bootstrap/pull/29124\n// stylelint-disable selector-no-qualifying-type\ntextarea {\n  &.form-control {\n    min-height: $input-height;\n  }\n\n  &.form-control-sm {\n    min-height: $input-height-sm;\n  }\n\n  &.form-control-lg {\n    min-height: $input-height-lg;\n  }\n}\n// stylelint-enable selector-no-qualifying-type\n\n.form-control-color {\n  width: $form-color-width;\n  height: auto; // Override fixed browser height\n  padding: $input-padding-y;\n\n  &:not(:disabled):not([readonly]) {\n    cursor: pointer;\n  }\n\n  &::-moz-color-swatch {\n    height: if(unit($input-line-height) == \"\", $input-line-height * 1em, $input-line-height);\n    @include border-radius($input-border-radius);\n  }\n\n  &::-webkit-color-swatch {\n    height: if(unit($input-line-height) == \"\", $input-line-height * 1em, $input-line-height);\n    @include border-radius($input-border-radius);\n  }\n}\n","// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","// Gradients\n\n// scss-docs-start gradient-bg-mixin\n@mixin gradient-bg($color: null) {\n  background-color: $color;\n\n  @if $enable-gradients {\n    background-image: var(--#{$variable-prefix}gradient);\n  }\n}\n// scss-docs-end gradient-bg-mixin\n\n// scss-docs-start gradient-mixins\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: null, $end-percent: null) {\n  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n  background-image: linear-gradient($deg, $start-color, $end-color);\n}\n\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n  background-image: radial-gradient(circle, $inner-color, $outer-color);\n}\n\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n// scss-docs-end gradient-mixins\n","// Select\n//\n// Replaces the browser default select with a custom one, mostly pulled from\n// https://primer.github.io/.\n\n.form-select {\n  display: block;\n  width: 100%;\n  padding: $form-select-padding-y $form-select-indicator-padding $form-select-padding-y $form-select-padding-x;\n  // stylelint-disable-next-line property-no-vendor-prefix\n  -moz-padding-start: subtract($form-select-padding-x, 3px); // See https://github.com/twbs/bootstrap/issues/32636\n  font-family: $form-select-font-family;\n  @include font-size($form-select-font-size);\n  font-weight: $form-select-font-weight;\n  line-height: $form-select-line-height;\n  color: $form-select-color;\n  background-color: $form-select-bg;\n  background-image: escape-svg($form-select-indicator);\n  background-repeat: no-repeat;\n  background-position: $form-select-bg-position;\n  background-size: $form-select-bg-size;\n  border: $form-select-border-width solid $form-select-border-color;\n  @include border-radius($form-select-border-radius, 0);\n  @include box-shadow($form-select-box-shadow);\n  @include transition($form-select-transition);\n  appearance: none;\n\n  &:focus {\n    border-color: $form-select-focus-border-color;\n    outline: 0;\n    @if $enable-shadows {\n      @include box-shadow($form-select-box-shadow, $form-select-focus-box-shadow);\n    } @else {\n      // Avoid using mixin so we can pass custom focus shadow properly\n      box-shadow: $form-select-focus-box-shadow;\n    }\n  }\n\n  &[multiple],\n  &[size]:not([size=\"1\"]) {\n    padding-right: $form-select-padding-x;\n    background-image: none;\n  }\n\n  &:disabled {\n    color: $form-select-disabled-color;\n    background-color: $form-select-disabled-bg;\n    border-color: $form-select-disabled-border-color;\n  }\n\n  // Remove outline from select box in FF\n  &:-moz-focusring {\n    color: transparent;\n    text-shadow: 0 0 0 $form-select-color;\n  }\n}\n\n.form-select-sm {\n  padding-top: $form-select-padding-y-sm;\n  padding-bottom: $form-select-padding-y-sm;\n  padding-left: $form-select-padding-x-sm;\n  @include font-size($form-select-font-size-sm);\n}\n\n.form-select-lg {\n  padding-top: $form-select-padding-y-lg;\n  padding-bottom: $form-select-padding-y-lg;\n  padding-left: $form-select-padding-x-lg;\n  @include font-size($form-select-font-size-lg);\n}\n","//\n// Check/radio\n//\n\n.form-check {\n  display: block;\n  min-height: $form-check-min-height;\n  padding-left: $form-check-padding-start;\n  margin-bottom: $form-check-margin-bottom;\n\n  .form-check-input {\n    float: left;\n    margin-left: $form-check-padding-start * -1;\n  }\n}\n\n.form-check-input {\n  width: $form-check-input-width;\n  height: $form-check-input-width;\n  margin-top: ($line-height-base - $form-check-input-width) * .5; // line-height minus check height\n  vertical-align: top;\n  background-color: $form-check-input-bg;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: contain;\n  border: $form-check-input-border;\n  appearance: none;\n  color-adjust: exact; // Keep themed appearance for print\n  @include transition($form-check-transition);\n\n  &[type=\"checkbox\"] {\n    @include border-radius($form-check-input-border-radius);\n  }\n\n  &[type=\"radio\"] {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: $form-check-radio-border-radius;\n  }\n\n  &:active {\n    filter: $form-check-input-active-filter;\n  }\n\n  &:focus {\n    border-color: $form-check-input-focus-border;\n    outline: 0;\n    box-shadow: $form-check-input-focus-box-shadow;\n  }\n\n  &:checked {\n    background-color: $form-check-input-checked-bg-color;\n    border-color: $form-check-input-checked-border-color;\n\n    &[type=\"checkbox\"] {\n      @if $enable-gradients {\n        background-image: escape-svg($form-check-input-checked-bg-image), var(--#{$variable-prefix}gradient);\n      } @else {\n        background-image: escape-svg($form-check-input-checked-bg-image);\n      }\n    }\n\n    &[type=\"radio\"] {\n      @if $enable-gradients {\n        background-image: escape-svg($form-check-radio-checked-bg-image), var(--#{$variable-prefix}gradient);\n      } @else {\n        background-image: escape-svg($form-check-radio-checked-bg-image);\n      }\n    }\n  }\n\n  &[type=\"checkbox\"]:indeterminate {\n    background-color: $form-check-input-indeterminate-bg-color;\n    border-color: $form-check-input-indeterminate-border-color;\n\n    @if $enable-gradients {\n      background-image: escape-svg($form-check-input-indeterminate-bg-image), var(--#{$variable-prefix}gradient);\n    } @else {\n      background-image: escape-svg($form-check-input-indeterminate-bg-image);\n    }\n  }\n\n  &:disabled {\n    pointer-events: none;\n    filter: none;\n    opacity: $form-check-input-disabled-opacity;\n  }\n\n  // Use disabled attribute in addition of :disabled pseudo-class\n  // See: https://github.com/twbs/bootstrap/issues/28247\n  &[disabled],\n  &:disabled {\n    ~ .form-check-label {\n      opacity: $form-check-label-disabled-opacity;\n    }\n  }\n}\n\n.form-check-label {\n  color: $form-check-label-color;\n  cursor: $form-check-label-cursor;\n}\n\n//\n// Switch\n//\n\n.form-switch {\n  padding-left: $form-switch-padding-start;\n\n  .form-check-input {\n    width: $form-switch-width;\n    margin-left: $form-switch-padding-start * -1;\n    background-image: escape-svg($form-switch-bg-image);\n    background-position: left center;\n    @include border-radius($form-switch-border-radius);\n    @include transition($form-switch-transition);\n\n    &:focus {\n      background-image: escape-svg($form-switch-focus-bg-image);\n    }\n\n    &:checked {\n      background-position: $form-switch-checked-bg-position;\n\n      @if $enable-gradients {\n        background-image: escape-svg($form-switch-checked-bg-image), var(--#{$variable-prefix}gradient);\n      } @else {\n        background-image: escape-svg($form-switch-checked-bg-image);\n      }\n    }\n  }\n}\n\n.form-check-inline {\n  display: inline-block;\n  margin-right: $form-check-inline-margin-end;\n}\n\n.btn-check {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n\n  &[disabled],\n  &:disabled {\n    + .btn {\n      pointer-events: none;\n      filter: none;\n      opacity: $form-check-btn-check-disabled-opacity;\n    }\n  }\n}\n","// Range\n//\n// Style range inputs the same across browsers. Vendor-specific rules for pseudo\n// elements cannot be mixed. As such, there are no shared styles for focus or\n// active states on prefixed selectors.\n\n.form-range {\n  width: 100%;\n  height: add($form-range-thumb-height, $form-range-thumb-focus-box-shadow-width * 2);\n  padding: 0; // Need to reset padding\n  background-color: transparent;\n  appearance: none;\n\n  &:focus {\n    outline: 0;\n\n    // Pseudo-elements must be split across multiple rulesets to have an effect.\n    // No box-shadow() mixin for focus accessibility.\n    &::-webkit-slider-thumb { box-shadow: $form-range-thumb-focus-box-shadow; }\n    &::-moz-range-thumb     { box-shadow: $form-range-thumb-focus-box-shadow; }\n  }\n\n  &::-moz-focus-outer {\n    border: 0;\n  }\n\n  &::-webkit-slider-thumb {\n    width: $form-range-thumb-width;\n    height: $form-range-thumb-height;\n    margin-top: ($form-range-track-height - $form-range-thumb-height) * .5; // Webkit specific\n    @include gradient-bg($form-range-thumb-bg);\n    border: $form-range-thumb-border;\n    @include border-radius($form-range-thumb-border-radius);\n    @include box-shadow($form-range-thumb-box-shadow);\n    @include transition($form-range-thumb-transition);\n    appearance: none;\n\n    &:active {\n      @include gradient-bg($form-range-thumb-active-bg);\n    }\n  }\n\n  &::-webkit-slider-runnable-track {\n    width: $form-range-track-width;\n    height: $form-range-track-height;\n    color: transparent; // Why?\n    cursor: $form-range-track-cursor;\n    background-color: $form-range-track-bg;\n    border-color: transparent;\n    @include border-radius($form-range-track-border-radius);\n    @include box-shadow($form-range-track-box-shadow);\n  }\n\n  &::-moz-range-thumb {\n    width: $form-range-thumb-width;\n    height: $form-range-thumb-height;\n    @include gradient-bg($form-range-thumb-bg);\n    border: $form-range-thumb-border;\n    @include border-radius($form-range-thumb-border-radius);\n    @include box-shadow($form-range-thumb-box-shadow);\n    @include transition($form-range-thumb-transition);\n    appearance: none;\n\n    &:active {\n      @include gradient-bg($form-range-thumb-active-bg);\n    }\n  }\n\n  &::-moz-range-track {\n    width: $form-range-track-width;\n    height: $form-range-track-height;\n    color: transparent;\n    cursor: $form-range-track-cursor;\n    background-color: $form-range-track-bg;\n    border-color: transparent; // Firefox specific?\n    @include border-radius($form-range-track-border-radius);\n    @include box-shadow($form-range-track-box-shadow);\n  }\n\n  &:disabled {\n    pointer-events: none;\n\n    &::-webkit-slider-thumb {\n      background-color: $form-range-thumb-disabled-bg;\n    }\n\n    &::-moz-range-thumb {\n      background-color: $form-range-thumb-disabled-bg;\n    }\n  }\n}\n",".form-floating {\n  position: relative;\n\n  > .form-control,\n  > .form-select {\n    height: $form-floating-height;\n    line-height: $form-floating-line-height;\n  }\n\n  > label {\n    position: absolute;\n    top: 0;\n    left: 0;\n    height: 100%; // allow textareas\n    padding: $form-floating-padding-y $form-floating-padding-x;\n    pointer-events: none;\n    border: $input-border-width solid transparent; // Required for aligning label's text with the input as it affects inner box model\n    transform-origin: 0 0;\n    @include transition($form-floating-transition);\n  }\n\n  // stylelint-disable no-duplicate-selectors\n  > .form-control {\n    padding: $form-floating-padding-y $form-floating-padding-x;\n\n    &::placeholder {\n      color: transparent;\n    }\n\n    &:focus,\n    &:not(:placeholder-shown) {\n      padding-top: $form-floating-input-padding-t;\n      padding-bottom: $form-floating-input-padding-b;\n    }\n    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n    &:-webkit-autofill {\n      padding-top: $form-floating-input-padding-t;\n      padding-bottom: $form-floating-input-padding-b;\n    }\n  }\n\n  > .form-select {\n    padding-top: $form-floating-input-padding-t;\n    padding-bottom: $form-floating-input-padding-b;\n  }\n\n  > .form-control:focus,\n  > .form-control:not(:placeholder-shown),\n  > .form-select {\n    ~ label {\n      opacity: $form-floating-label-opacity;\n      transform: $form-floating-label-transform;\n    }\n  }\n  // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n  > .form-control:-webkit-autofill {\n    ~ label {\n      opacity: $form-floating-label-opacity;\n      transform: $form-floating-label-transform;\n    }\n  }\n  // stylelint-enable no-duplicate-selectors\n}\n","//\n// Base styles\n//\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap; // For form validation feedback\n  align-items: stretch;\n  width: 100%;\n\n  > .form-control,\n  > .form-select {\n    position: relative; // For focus state's z-index\n    flex: 1 1 auto;\n    width: 1%;\n    min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size\n  }\n\n  // Bring the \"active\" form control to the top of surrounding elements\n  > .form-control:focus,\n  > .form-select:focus {\n    z-index: 3;\n  }\n\n  // Ensure buttons are always above inputs for more visually pleasing borders.\n  // This isn't needed for `.input-group-text` since it shares the same border-color\n  // as our inputs.\n  .btn {\n    position: relative;\n    z-index: 2;\n\n    &:focus {\n      z-index: 3;\n    }\n  }\n}\n\n\n// Textual addons\n//\n// Serves as a catch-all element for any text or radio/checkbox input you wish\n// to prepend or append to an input.\n\n.input-group-text {\n  display: flex;\n  align-items: center;\n  padding: $input-group-addon-padding-y $input-group-addon-padding-x;\n  @include font-size($input-font-size); // Match inputs\n  font-weight: $input-group-addon-font-weight;\n  line-height: $input-line-height;\n  color: $input-group-addon-color;\n  text-align: center;\n  white-space: nowrap;\n  background-color: $input-group-addon-bg;\n  border: $input-border-width solid $input-group-addon-border-color;\n  @include border-radius($input-border-radius);\n}\n\n\n// Sizing\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n  padding: $input-padding-y-lg $input-padding-x-lg;\n  @include font-size($input-font-size-lg);\n  @include border-radius($input-border-radius-lg);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n  padding: $input-padding-y-sm $input-padding-x-sm;\n  @include font-size($input-font-size-sm);\n  @include border-radius($input-border-radius-sm);\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n  padding-right: $form-select-padding-x + $form-select-indicator-padding;\n}\n\n\n// Rounded corners\n//\n// These rulesets must come after the sizing ones to properly override sm and lg\n// border-radius values when extending. They're more specific than we'd like\n// with the `.input-group >` part, but without it, we cannot override the sizing.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.input-group {\n  &:not(.has-validation) {\n    > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),\n    > .dropdown-toggle:nth-last-child(n + 3) {\n      @include border-end-radius(0);\n    }\n  }\n\n  &.has-validation {\n    > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu),\n    > .dropdown-toggle:nth-last-child(n + 4) {\n      @include border-end-radius(0);\n    }\n  }\n\n  $validation-messages: \"\";\n  @each $state in map-keys($form-validation-states) {\n    $validation-messages: $validation-messages + \":not(.\" + unquote($state) + \"-tooltip)\" + \":not(.\" + unquote($state) + \"-feedback)\";\n  }\n\n  > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {\n    margin-left: -$input-border-width;\n    @include border-start-radius(0);\n  }\n}\n","// This mixin uses an `if()` technique to be compatible with Dart Sass\n// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details\n\n// scss-docs-start form-validation-mixins\n@mixin form-validation-state-selector($state) {\n  @if ($state == \"valid\" or $state == \"invalid\") {\n    .was-validated #{if(&, \"&\", \"\")}:#{$state},\n    #{if(&, \"&\", \"\")}.is-#{$state} {\n      @content;\n    }\n  } @else {\n    #{if(&, \"&\", \"\")}.is-#{$state} {\n      @content;\n    }\n  }\n}\n\n@mixin form-validation-state(\n  $state,\n  $color,\n  $icon,\n  $tooltip-color: color-contrast($color),\n  $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),\n  $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity)\n) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    margin-top: $form-feedback-margin-top;\n    @include font-size($form-feedback-font-size);\n    font-style: $form-feedback-font-style;\n    color: $color;\n  }\n\n  .#{$state}-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%; // Contain to parent when possible\n    padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n    margin-top: .1rem;\n    @include font-size($form-feedback-tooltip-font-size);\n    line-height: $form-feedback-tooltip-line-height;\n    color: $tooltip-color;\n    background-color: $tooltip-bg-color;\n    @include border-radius($form-feedback-tooltip-border-radius);\n  }\n\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  .form-control {\n    @include form-validation-state-selector($state) {\n      border-color: $color;\n\n      @if $enable-validation-icons {\n        padding-right: $input-height-inner;\n        background-image: escape-svg($icon);\n        background-repeat: no-repeat;\n        background-position: right $input-height-inner-quarter center;\n        background-size: $input-height-inner-half $input-height-inner-half;\n      }\n\n      &:focus {\n        border-color: $color;\n        box-shadow: $focus-box-shadow;\n      }\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  textarea.form-control {\n    @include form-validation-state-selector($state) {\n      @if $enable-validation-icons {\n        padding-right: $input-height-inner;\n        background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n      }\n    }\n  }\n\n  .form-select {\n    @include form-validation-state-selector($state) {\n      border-color: $color;\n\n      @if $enable-validation-icons {\n        &:not([multiple]):not([size]),\n        &:not([multiple])[size=\"1\"] {\n          padding-right: $form-select-feedback-icon-padding-end;\n          background-image: escape-svg($form-select-indicator), escape-svg($icon);\n          background-position: $form-select-bg-position, $form-select-feedback-icon-position;\n          background-size: $form-select-bg-size, $form-select-feedback-icon-size;\n        }\n      }\n\n      &:focus {\n        border-color: $color;\n        box-shadow: $focus-box-shadow;\n      }\n    }\n  }\n\n  .form-check-input {\n    @include form-validation-state-selector($state) {\n      border-color: $color;\n\n      &:checked {\n        background-color: $color;\n      }\n\n      &:focus {\n        box-shadow: $focus-box-shadow;\n      }\n\n      ~ .form-check-label {\n        color: $color;\n      }\n    }\n  }\n  .form-check-inline .form-check-input {\n    ~ .#{$state}-feedback {\n      margin-left: .5em;\n    }\n  }\n\n  .input-group .form-control,\n  .input-group .form-select {\n    @include form-validation-state-selector($state) {\n      @if $state == \"valid\" {\n        z-index: 1;\n      } @else if $state == \"invalid\" {\n        z-index: 2;\n      }\n      &:focus {\n        z-index: 3;\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-mixins\n","//\n// Base styles\n//\n\n.btn {\n  display: inline-block;\n  font-family: $btn-font-family;\n  font-weight: $btn-font-weight;\n  line-height: $btn-line-height;\n  color: $body-color;\n  text-align: center;\n  text-decoration: if($link-decoration == none, null, none);\n  white-space: $btn-white-space;\n  vertical-align: middle;\n  cursor: if($enable-button-pointers, pointer, null);\n  user-select: none;\n  background-color: transparent;\n  border: $btn-border-width solid transparent;\n  @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-border-radius);\n  @include transition($btn-transition);\n\n  &:hover {\n    color: $body-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n\n  .btn-check:focus + &,\n  &:focus {\n    outline: 0;\n    box-shadow: $btn-focus-box-shadow;\n  }\n\n  .btn-check:checked + &,\n  .btn-check:active + &,\n  &:active,\n  &.active {\n    @include box-shadow($btn-active-box-shadow);\n\n    &:focus {\n      @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);\n    }\n  }\n\n  &:disabled,\n  &.disabled,\n  fieldset:disabled & {\n    pointer-events: none;\n    opacity: $btn-disabled-opacity;\n    @include box-shadow(none);\n  }\n}\n\n\n//\n// Alternate buttons\n//\n\n// scss-docs-start btn-variant-loops\n@each $color, $value in $theme-colors {\n  .btn-#{$color} {\n    @include button-variant($value, $value);\n  }\n}\n\n@each $color, $value in $theme-colors {\n  .btn-outline-#{$color} {\n    @include button-outline-variant($value);\n  }\n}\n// scss-docs-end btn-variant-loops\n\n\n//\n// Link buttons\n//\n\n// Make a button look and behave like a link\n.btn-link {\n  font-weight: $font-weight-normal;\n  color: $btn-link-color;\n  text-decoration: $link-decoration;\n\n  &:hover {\n    color: $btn-link-hover-color;\n    text-decoration: $link-hover-decoration;\n  }\n\n  &:focus {\n    text-decoration: $link-hover-decoration;\n  }\n\n  &:disabled,\n  &.disabled {\n    color: $btn-link-disabled-color;\n  }\n\n  // No need for an active state here\n}\n\n\n//\n// Button Sizes\n//\n\n.btn-lg {\n  @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg);\n}\n\n.btn-sm {\n  @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm);\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n// scss-docs-start btn-variant-mixin\n@mixin button-variant(\n  $background,\n  $border,\n  $color: color-contrast($background),\n  $hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),\n  $hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),\n  $hover-color: color-contrast($hover-background),\n  $active-background: if($color == $color-contrast-light, shade-color($background, $btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),\n  $active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),\n  $active-color: color-contrast($active-background),\n  $disabled-background: $background,\n  $disabled-border: $border,\n  $disabled-color: color-contrast($disabled-background)\n) {\n  color: $color;\n  @include gradient-bg($background);\n  border-color: $border;\n  @include box-shadow($btn-box-shadow);\n\n  &:hover {\n    color: $hover-color;\n    @include gradient-bg($hover-background);\n    border-color: $hover-border;\n  }\n\n  .btn-check:focus + &,\n  &:focus {\n    color: $hover-color;\n    @include gradient-bg($hover-background);\n    border-color: $hover-border;\n    @if $enable-shadows {\n      @include box-shadow($btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5));\n    } @else {\n      // Avoid using mixin so we can pass custom focus shadow properly\n      box-shadow: 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5);\n    }\n  }\n\n  .btn-check:checked + &,\n  .btn-check:active + &,\n  &:active,\n  &.active,\n  .show > &.dropdown-toggle {\n    color: $active-color;\n    background-color: $active-background;\n    // Remove CSS gradients if they're enabled\n    background-image: if($enable-gradients, none, null);\n    border-color: $active-border;\n\n    &:focus {\n      @if $enable-shadows {\n        @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5));\n      } @else {\n        // Avoid using mixin so we can pass custom focus shadow properly\n        box-shadow: 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5);\n      }\n    }\n  }\n\n  &:disabled,\n  &.disabled {\n    color: $disabled-color;\n    background-color: $disabled-background;\n    // Remove CSS gradients if they're enabled\n    background-image: if($enable-gradients, none, null);\n    border-color: $disabled-border;\n  }\n}\n// scss-docs-end btn-variant-mixin\n\n// scss-docs-start btn-outline-variant-mixin\n@mixin button-outline-variant(\n  $color,\n  $color-hover: color-contrast($color),\n  $active-background: $color,\n  $active-border: $color,\n  $active-color: color-contrast($active-background)\n) {\n  color: $color;\n  border-color: $color;\n\n  &:hover {\n    color: $color-hover;\n    background-color: $active-background;\n    border-color: $active-border;\n  }\n\n  .btn-check:focus + &,\n  &:focus {\n    box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n  }\n\n  .btn-check:checked + &,\n  .btn-check:active + &,\n  &:active,\n  &.active,\n  &.dropdown-toggle.show {\n    color: $active-color;\n    background-color: $active-background;\n    border-color: $active-border;\n\n    &:focus {\n      @if $enable-shadows {\n        @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5));\n      } @else {\n        // Avoid using mixin so we can pass custom focus shadow properly\n        box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n      }\n    }\n  }\n\n  &:disabled,\n  &.disabled {\n    color: $color;\n    background-color: transparent;\n  }\n}\n// scss-docs-end btn-outline-variant-mixin\n\n// scss-docs-start btn-size-mixin\n@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {\n  padding: $padding-y $padding-x;\n  @include font-size($font-size);\n  // Manually declare to provide an override to the browser default\n  @include border-radius($border-radius, 0);\n}\n// scss-docs-end btn-size-mixin\n",".fade {\n  @include transition($transition-fade);\n\n  &:not(.show) {\n    opacity: 0;\n  }\n}\n\n// scss-docs-start collapse-classes\n.collapse {\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  @include transition($transition-collapse);\n\n  &.collapse-horizontal {\n    width: 0;\n    height: auto;\n    @include transition($transition-collapse-width);\n  }\n}\n// scss-docs-end collapse-classes\n","// The dropdown wrapper (`<div>`)\n.dropup,\n.dropend,\n.dropdown,\n.dropstart {\n  position: relative;\n}\n\n.dropdown-toggle {\n  white-space: nowrap;\n\n  // Generate the caret automatically\n  @include caret();\n}\n\n// The dropdown menu\n.dropdown-menu {\n  position: absolute;\n  z-index: $zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  min-width: $dropdown-min-width;\n  padding: $dropdown-padding-y $dropdown-padding-x;\n  margin: 0; // Override default margin of ul\n  @include font-size($dropdown-font-size);\n  color: $dropdown-color;\n  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n  list-style: none;\n  background-color: $dropdown-bg;\n  background-clip: padding-box;\n  border: $dropdown-border-width solid $dropdown-border-color;\n  @include border-radius($dropdown-border-radius);\n  @include box-shadow($dropdown-box-shadow);\n\n  &[data-bs-popper] {\n    top: 100%;\n    left: 0;\n    margin-top: $dropdown-spacer;\n  }\n}\n\n// scss-docs-start responsive-breakpoints\n// We deliberately hardcode the `bs-` prefix because we check\n// this custom property in JS to determine Popper's positioning\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .dropdown-menu#{$infix}-start {\n      --bs-position: start;\n\n      &[data-bs-popper] {\n        right: auto;\n        left: 0;\n      }\n    }\n\n    .dropdown-menu#{$infix}-end {\n      --bs-position: end;\n\n      &[data-bs-popper] {\n        right: 0;\n        left: auto;\n      }\n    }\n  }\n}\n// scss-docs-end responsive-breakpoints\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n// Just add .dropup after the standard .dropdown class and you're set.\n.dropup {\n  .dropdown-menu[data-bs-popper] {\n    top: auto;\n    bottom: 100%;\n    margin-top: 0;\n    margin-bottom: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(up);\n  }\n}\n\n.dropend {\n  .dropdown-menu[data-bs-popper] {\n    top: 0;\n    right: auto;\n    left: 100%;\n    margin-top: 0;\n    margin-left: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(end);\n    &::after {\n      vertical-align: 0;\n    }\n  }\n}\n\n.dropstart {\n  .dropdown-menu[data-bs-popper] {\n    top: 0;\n    right: 100%;\n    left: auto;\n    margin-top: 0;\n    margin-right: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(start);\n    &::before {\n      vertical-align: 0;\n    }\n  }\n}\n\n\n// Dividers (basically an `<hr>`) within the dropdown\n.dropdown-divider {\n  height: 0;\n  margin: $dropdown-divider-margin-y 0;\n  overflow: hidden;\n  border-top: 1px solid $dropdown-divider-bg;\n}\n\n// Links, buttons, and more within the dropdown menu\n//\n// `<button>`-specific styles are denoted with `// For <button>s`\n.dropdown-item {\n  display: block;\n  width: 100%; // For `<button>`s\n  padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n  clear: both;\n  font-weight: $font-weight-normal;\n  color: $dropdown-link-color;\n  text-align: inherit; // For `<button>`s\n  text-decoration: if($link-decoration == none, null, none);\n  white-space: nowrap; // prevent links from randomly breaking onto new lines\n  background-color: transparent; // For `<button>`s\n  border: 0; // For `<button>`s\n\n  // Prevent dropdown overflow if there's no padding\n  // See https://github.com/twbs/bootstrap/pull/27703\n  @if $dropdown-padding-y == 0 {\n    &:first-child {\n      @include border-top-radius($dropdown-inner-border-radius);\n    }\n\n    &:last-child {\n      @include border-bottom-radius($dropdown-inner-border-radius);\n    }\n  }\n\n  &:hover,\n  &:focus {\n    color: $dropdown-link-hover-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n    @include gradient-bg($dropdown-link-hover-bg);\n  }\n\n  &.active,\n  &:active {\n    color: $dropdown-link-active-color;\n    text-decoration: none;\n    @include gradient-bg($dropdown-link-active-bg);\n  }\n\n  &.disabled,\n  &:disabled {\n    color: $dropdown-link-disabled-color;\n    pointer-events: none;\n    background-color: transparent;\n    // Remove CSS gradients if they're enabled\n    background-image: if($enable-gradients, none, null);\n  }\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: $dropdown-header-padding;\n  margin-bottom: 0; // for use with heading elements\n  @include font-size($font-size-sm);\n  color: $dropdown-header-color;\n  white-space: nowrap; // as with > li > a\n}\n\n// Dropdown text\n.dropdown-item-text {\n  display: block;\n  padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n  color: $dropdown-link-color;\n}\n\n// Dark dropdowns\n.dropdown-menu-dark {\n  color: $dropdown-dark-color;\n  background-color: $dropdown-dark-bg;\n  border-color: $dropdown-dark-border-color;\n  @include box-shadow($dropdown-dark-box-shadow);\n\n  .dropdown-item {\n    color: $dropdown-dark-link-color;\n\n    &:hover,\n    &:focus {\n      color: $dropdown-dark-link-hover-color;\n      @include gradient-bg($dropdown-dark-link-hover-bg);\n    }\n\n    &.active,\n    &:active {\n      color: $dropdown-dark-link-active-color;\n      @include gradient-bg($dropdown-dark-link-active-bg);\n    }\n\n    &.disabled,\n    &:disabled {\n      color: $dropdown-dark-link-disabled-color;\n    }\n  }\n\n  .dropdown-divider {\n    border-color: $dropdown-dark-divider-bg;\n  }\n\n  .dropdown-item-text {\n    color: $dropdown-dark-link-color;\n  }\n\n  .dropdown-header {\n    color: $dropdown-dark-header-color;\n  }\n}\n","// scss-docs-start caret-mixins\n@mixin caret-down {\n  border-top: $caret-width solid;\n  border-right: $caret-width solid transparent;\n  border-bottom: 0;\n  border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n  border-top: 0;\n  border-right: $caret-width solid transparent;\n  border-bottom: $caret-width solid;\n  border-left: $caret-width solid transparent;\n}\n\n@mixin caret-end {\n  border-top: $caret-width solid transparent;\n  border-right: 0;\n  border-bottom: $caret-width solid transparent;\n  border-left: $caret-width solid;\n}\n\n@mixin caret-start {\n  border-top: $caret-width solid transparent;\n  border-right: $caret-width solid;\n  border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n  @if $enable-caret {\n    &::after {\n      display: inline-block;\n      margin-left: $caret-spacing;\n      vertical-align: $caret-vertical-align;\n      content: \"\";\n      @if $direction == down {\n        @include caret-down();\n      } @else if $direction == up {\n        @include caret-up();\n      } @else if $direction == end {\n        @include caret-end();\n      }\n    }\n\n    @if $direction == start {\n      &::after {\n        display: none;\n      }\n\n      &::before {\n        display: inline-block;\n        margin-right: $caret-spacing;\n        vertical-align: $caret-vertical-align;\n        content: \"\";\n        @include caret-start();\n      }\n    }\n\n    &:empty::after {\n      margin-left: 0;\n    }\n  }\n}\n// scss-docs-end caret-mixins\n","// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n\n  > .btn {\n    position: relative;\n    flex: 1 1 auto;\n  }\n\n  // Bring the hover, focused, and \"active\" buttons to the front to overlay\n  // the borders properly\n  > .btn-check:checked + .btn,\n  > .btn-check:focus + .btn,\n  > .btn:hover,\n  > .btn:focus,\n  > .btn:active,\n  > .btn.active {\n    z-index: 1;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n\n  .input-group {\n    width: auto;\n  }\n}\n\n.btn-group {\n  // Prevent double borders when buttons are next to each other\n  > .btn:not(:first-child),\n  > .btn-group:not(:first-child) {\n    margin-left: -$btn-border-width;\n  }\n\n  // Reset rounded corners\n  > .btn:not(:last-child):not(.dropdown-toggle),\n  > .btn-group:not(:last-child) > .btn {\n    @include border-end-radius(0);\n  }\n\n  // The left radius should be 0 if the button is:\n  // - the \"third or more\" child\n  // - the second child and the previous element isn't `.btn-check` (making it the first child visually)\n  // - part of a btn-group which isn't the first child\n  > .btn:nth-child(n + 3),\n  > :not(.btn-check) + .btn,\n  > .btn-group:not(:first-child) > .btn {\n    @include border-start-radius(0);\n  }\n}\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-sm > .btn { @extend .btn-sm; }\n.btn-group-lg > .btn { @extend .btn-lg; }\n\n\n//\n// Split button dropdowns\n//\n\n.dropdown-toggle-split {\n  padding-right: $btn-padding-x * .75;\n  padding-left: $btn-padding-x * .75;\n\n  &::after,\n  .dropup &::after,\n  .dropend &::after {\n    margin-left: 0;\n  }\n\n  .dropstart &::before {\n    margin-right: 0;\n  }\n}\n\n.btn-sm + .dropdown-toggle-split {\n  padding-right: $btn-padding-x-sm * .75;\n  padding-left: $btn-padding-x-sm * .75;\n}\n\n.btn-lg + .dropdown-toggle-split {\n  padding-right: $btn-padding-x-lg * .75;\n  padding-left: $btn-padding-x-lg * .75;\n}\n\n\n// The clickable button for toggling the menu\n// Set the same inset shadow as the :active state\n.btn-group.show .dropdown-toggle {\n  @include box-shadow($btn-active-box-shadow);\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    @include box-shadow(none);\n  }\n}\n\n\n//\n// Vertical button groups\n//\n\n.btn-group-vertical {\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: center;\n\n  > .btn,\n  > .btn-group {\n    width: 100%;\n  }\n\n  > .btn:not(:first-child),\n  > .btn-group:not(:first-child) {\n    margin-top: -$btn-border-width;\n  }\n\n  // Reset rounded corners\n  > .btn:not(:last-child):not(.dropdown-toggle),\n  > .btn-group:not(:last-child) > .btn {\n    @include border-bottom-radius(0);\n  }\n\n  > .btn ~ .btn,\n  > .btn-group:not(:first-child) > .btn {\n    @include border-top-radius(0);\n  }\n}\n","// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<ol>`s.\n\n.nav {\n  display: flex;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: $nav-link-padding-y $nav-link-padding-x;\n  @include font-size($nav-link-font-size);\n  font-weight: $nav-link-font-weight;\n  color: $nav-link-color;\n  text-decoration: if($link-decoration == none, null, none);\n  @include transition($nav-link-transition);\n\n  &:hover,\n  &:focus {\n    color: $nav-link-hover-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n\n  // Disabled state lightens text\n  &.disabled {\n    color: $nav-link-disabled-color;\n    pointer-events: none;\n    cursor: default;\n  }\n}\n\n//\n// Tabs\n//\n\n.nav-tabs {\n  border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;\n\n  .nav-link {\n    margin-bottom: -$nav-tabs-border-width;\n    background: none;\n    border: $nav-tabs-border-width solid transparent;\n    @include border-top-radius($nav-tabs-border-radius);\n\n    &:hover,\n    &:focus {\n      border-color: $nav-tabs-link-hover-border-color;\n      // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link\n      isolation: isolate;\n    }\n\n    &.disabled {\n      color: $nav-link-disabled-color;\n      background-color: transparent;\n      border-color: transparent;\n    }\n  }\n\n  .nav-link.active,\n  .nav-item.show .nav-link {\n    color: $nav-tabs-link-active-color;\n    background-color: $nav-tabs-link-active-bg;\n    border-color: $nav-tabs-link-active-border-color;\n  }\n\n  .dropdown-menu {\n    // Make dropdown border overlap tab border\n    margin-top: -$nav-tabs-border-width;\n    // Remove the top rounded corners here since there is a hard edge above the menu\n    @include border-top-radius(0);\n  }\n}\n\n\n//\n// Pills\n//\n\n.nav-pills {\n  .nav-link {\n    background: none;\n    border: 0;\n    @include border-radius($nav-pills-border-radius);\n  }\n\n  .nav-link.active,\n  .show > .nav-link {\n    color: $nav-pills-link-active-color;\n    @include gradient-bg($nav-pills-link-active-bg);\n  }\n}\n\n\n//\n// Justified variants\n//\n\n.nav-fill {\n  > .nav-link,\n  .nav-item {\n    flex: 1 1 auto;\n    text-align: center;\n  }\n}\n\n.nav-justified {\n  > .nav-link,\n  .nav-item {\n    flex-basis: 0;\n    flex-grow: 1;\n    text-align: center;\n  }\n}\n\n.nav-fill,\n.nav-justified {\n  .nav-item .nav-link {\n    width: 100%; // Make sure button will grow\n  }\n}\n\n\n// Tabbable tabs\n//\n// Hide tabbable panes to start, show them when `.active`\n\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n","// Contents\n//\n// Navbar\n// Navbar brand\n// Navbar nav\n// Navbar text\n// Responsive navbar\n// Navbar position\n// Navbar themes\n\n\n// Navbar\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap; // allow us to do the line break for collapsing content\n  align-items: center;\n  justify-content: space-between; // space out brand from logo\n  padding-top: $navbar-padding-y;\n  padding-right: $navbar-padding-x; // default: null\n  padding-bottom: $navbar-padding-y;\n  padding-left: $navbar-padding-x; // default: null\n  @include gradient-bg();\n\n  // Because flex properties aren't inherited, we need to redeclare these first\n  // few properties so that content nested within behave properly.\n  // The `flex-wrap` property is inherited to simplify the expanded navbars\n  %container-flex-properties {\n    display: flex;\n    flex-wrap: inherit;\n    align-items: center;\n    justify-content: space-between;\n  }\n\n  > .container,\n  > .container-fluid {\n    @extend %container-flex-properties;\n  }\n\n  @each $breakpoint, $container-max-width in $container-max-widths {\n    > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {\n      @extend %container-flex-properties;\n    }\n  }\n}\n\n\n// Navbar brand\n//\n// Used for brand, project, or site names.\n\n.navbar-brand {\n  padding-top: $navbar-brand-padding-y;\n  padding-bottom: $navbar-brand-padding-y;\n  margin-right: $navbar-brand-margin-end;\n  @include font-size($navbar-brand-font-size);\n  text-decoration: if($link-decoration == none, null, none);\n  white-space: nowrap;\n\n  &:hover,\n  &:focus {\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n}\n\n\n// Navbar nav\n//\n// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).\n\n.navbar-nav {\n  display: flex;\n  flex-direction: column; // cannot use `inherit` to get the `.navbar`s value\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n\n  .nav-link {\n    padding-right: 0;\n    padding-left: 0;\n  }\n\n  .dropdown-menu {\n    position: static;\n  }\n}\n\n\n// Navbar text\n//\n//\n\n.navbar-text {\n  padding-top: $nav-link-padding-y;\n  padding-bottom: $nav-link-padding-y;\n}\n\n\n// Responsive navbar\n//\n// Custom styles for responsive collapsing and toggling of navbar contents.\n// Powered by the collapse Bootstrap JavaScript plugin.\n\n// When collapsed, prevent the toggleable navbar contents from appearing in\n// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`\n// on the `.navbar` parent.\n.navbar-collapse {\n  flex-basis: 100%;\n  flex-grow: 1;\n  // For always expanded or extra full navbars, ensure content aligns itself\n  // properly vertically. Can be easily overridden with flex utilities.\n  align-items: center;\n}\n\n// Button for toggling the navbar when in its collapsed state\n.navbar-toggler {\n  padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;\n  @include font-size($navbar-toggler-font-size);\n  line-height: 1;\n  background-color: transparent; // remove default button style\n  border: $border-width solid transparent; // remove default button style\n  @include border-radius($navbar-toggler-border-radius);\n  @include transition($navbar-toggler-transition);\n\n  &:hover {\n    text-decoration: none;\n  }\n\n  &:focus {\n    text-decoration: none;\n    outline: 0;\n    box-shadow: 0 0 0 $navbar-toggler-focus-width;\n  }\n}\n\n// Keep as a separate element so folks can easily override it with another icon\n// or image file as needed.\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 100%;\n}\n\n.navbar-nav-scroll {\n  max-height: var(--#{$variable-prefix}scroll-height, 75vh);\n  overflow-y: auto;\n}\n\n// scss-docs-start navbar-expand-loop\n// Generate series of `.navbar-expand-*` responsive classes for configuring\n// where your navbar collapses.\n.navbar-expand {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $next: breakpoint-next($breakpoint, $grid-breakpoints);\n    $infix: breakpoint-infix($next, $grid-breakpoints);\n\n    // stylelint-disable-next-line scss/selector-no-union-class-name\n    &#{$infix} {\n      @include media-breakpoint-up($next) {\n        flex-wrap: nowrap;\n        justify-content: flex-start;\n\n        .navbar-nav {\n          flex-direction: row;\n\n          .dropdown-menu {\n            position: absolute;\n          }\n\n          .nav-link {\n            padding-right: $navbar-nav-link-padding-x;\n            padding-left: $navbar-nav-link-padding-x;\n          }\n        }\n\n        .navbar-nav-scroll {\n          overflow: visible;\n        }\n\n        .navbar-collapse {\n          display: flex !important; // stylelint-disable-line declaration-no-important\n          flex-basis: auto;\n        }\n\n        .navbar-toggler {\n          display: none;\n        }\n\n        .offcanvas-header {\n          display: none;\n        }\n\n        .offcanvas {\n          position: inherit;\n          bottom: 0;\n          z-index: 1000;\n          flex-grow: 1;\n          visibility: visible !important; // stylelint-disable-line declaration-no-important\n          background-color: transparent;\n          border-right: 0;\n          border-left: 0;\n          @include transition(none);\n          transform: none;\n        }\n        .offcanvas-top,\n        .offcanvas-bottom {\n          height: auto;\n          border-top: 0;\n          border-bottom: 0;\n        }\n\n        .offcanvas-body {\n          display: flex;\n          flex-grow: 0;\n          padding: 0;\n          overflow-y: visible;\n        }\n      }\n    }\n  }\n}\n// scss-docs-end navbar-expand-loop\n\n// Navbar themes\n//\n// Styles for switching between navbars with light or dark background.\n\n// Dark links against a light background\n.navbar-light {\n  .navbar-brand {\n    color: $navbar-light-brand-color;\n\n    &:hover,\n    &:focus {\n      color: $navbar-light-brand-hover-color;\n    }\n  }\n\n  .navbar-nav {\n    .nav-link {\n      color: $navbar-light-color;\n\n      &:hover,\n      &:focus {\n        color: $navbar-light-hover-color;\n      }\n\n      &.disabled {\n        color: $navbar-light-disabled-color;\n      }\n    }\n\n    .show > .nav-link,\n    .nav-link.active {\n      color: $navbar-light-active-color;\n    }\n  }\n\n  .navbar-toggler {\n    color: $navbar-light-color;\n    border-color: $navbar-light-toggler-border-color;\n  }\n\n  .navbar-toggler-icon {\n    background-image: escape-svg($navbar-light-toggler-icon-bg);\n  }\n\n  .navbar-text {\n    color: $navbar-light-color;\n\n    a,\n    a:hover,\n    a:focus  {\n      color: $navbar-light-active-color;\n    }\n  }\n}\n\n// White links against a dark background\n.navbar-dark {\n  .navbar-brand {\n    color: $navbar-dark-brand-color;\n\n    &:hover,\n    &:focus {\n      color: $navbar-dark-brand-hover-color;\n    }\n  }\n\n  .navbar-nav {\n    .nav-link {\n      color: $navbar-dark-color;\n\n      &:hover,\n      &:focus {\n        color: $navbar-dark-hover-color;\n      }\n\n      &.disabled {\n        color: $navbar-dark-disabled-color;\n      }\n    }\n\n    .show > .nav-link,\n    .nav-link.active {\n      color: $navbar-dark-active-color;\n    }\n  }\n\n  .navbar-toggler {\n    color: $navbar-dark-color;\n    border-color: $navbar-dark-toggler-border-color;\n  }\n\n  .navbar-toggler-icon {\n    background-image: escape-svg($navbar-dark-toggler-icon-bg);\n  }\n\n  .navbar-text {\n    color: $navbar-dark-color;\n    a,\n    a:hover,\n    a:focus {\n      color: $navbar-dark-active-color;\n    }\n  }\n}\n","//\n// Base styles\n//\n\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\n  height: $card-height;\n  word-wrap: break-word;\n  background-color: $card-bg;\n  background-clip: border-box;\n  border: $card-border-width solid $card-border-color;\n  @include border-radius($card-border-radius);\n  @include box-shadow($card-box-shadow);\n\n  > hr {\n    margin-right: 0;\n    margin-left: 0;\n  }\n\n  > .list-group {\n    border-top: inherit;\n    border-bottom: inherit;\n\n    &:first-child {\n      border-top-width: 0;\n      @include border-top-radius($card-inner-border-radius);\n    }\n\n    &:last-child  {\n      border-bottom-width: 0;\n      @include border-bottom-radius($card-inner-border-radius);\n    }\n  }\n\n  // Due to specificity of the above selector (`.card > .list-group`), we must\n  // use a child selector here to prevent double borders.\n  > .card-header + .list-group,\n  > .list-group + .card-footer {\n    border-top: 0;\n  }\n}\n\n.card-body {\n  // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n  // as much space as possible, ensuring footers are aligned to the bottom.\n  flex: 1 1 auto;\n  padding: $card-spacer-y $card-spacer-x;\n  color: $card-color;\n}\n\n.card-title {\n  margin-bottom: $card-title-spacer-y;\n}\n\n.card-subtitle {\n  margin-top: -$card-title-spacer-y * .5;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link {\n  &:hover {\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n\n  + .card-link {\n    margin-left: $card-spacer-x;\n  }\n}\n\n//\n// Optional textual caps\n//\n\n.card-header {\n  padding: $card-cap-padding-y $card-cap-padding-x;\n  margin-bottom: 0; // Removes the default margin-bottom of <hN>\n  color: $card-cap-color;\n  background-color: $card-cap-bg;\n  border-bottom: $card-border-width solid $card-border-color;\n\n  &:first-child {\n    @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);\n  }\n}\n\n.card-footer {\n  padding: $card-cap-padding-y $card-cap-padding-x;\n  color: $card-cap-color;\n  background-color: $card-cap-bg;\n  border-top: $card-border-width solid $card-border-color;\n\n  &:last-child {\n    @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);\n  }\n}\n\n\n//\n// Header navs\n//\n\n.card-header-tabs {\n  margin-right: -$card-cap-padding-x * .5;\n  margin-bottom: -$card-cap-padding-y;\n  margin-left: -$card-cap-padding-x * .5;\n  border-bottom: 0;\n\n  @if $nav-tabs-link-active-bg != $card-bg {\n    .nav-link.active {\n      background-color: $card-bg;\n      border-bottom-color: $card-bg;\n    }\n  }\n}\n\n.card-header-pills {\n  margin-right: -$card-cap-padding-x * .5;\n  margin-left: -$card-cap-padding-x * .5;\n}\n\n// Card image\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: $card-img-overlay-padding;\n  @include border-radius($card-inner-border-radius);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n}\n\n.card-img,\n.card-img-top {\n  @include border-top-radius($card-inner-border-radius);\n}\n\n.card-img,\n.card-img-bottom {\n  @include border-bottom-radius($card-inner-border-radius);\n}\n\n\n//\n// Card groups\n//\n\n.card-group {\n  // The child selector allows nested `.card` within `.card-group`\n  // to display properly.\n  > .card {\n    margin-bottom: $card-group-margin;\n  }\n\n  @include media-breakpoint-up(sm) {\n    display: flex;\n    flex-flow: row wrap;\n    // The child selector allows nested `.card` within `.card-group`\n    // to display properly.\n    > .card {\n      // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n      flex: 1 0 0%;\n      margin-bottom: 0;\n\n      + .card {\n        margin-left: 0;\n        border-left: 0;\n      }\n\n      // Handle rounded corners\n      @if $enable-rounded {\n        &:not(:last-child) {\n          @include border-end-radius(0);\n\n          .card-img-top,\n          .card-header {\n            // stylelint-disable-next-line property-disallowed-list\n            border-top-right-radius: 0;\n          }\n          .card-img-bottom,\n          .card-footer {\n            // stylelint-disable-next-line property-disallowed-list\n            border-bottom-right-radius: 0;\n          }\n        }\n\n        &:not(:first-child) {\n          @include border-start-radius(0);\n\n          .card-img-top,\n          .card-header {\n            // stylelint-disable-next-line property-disallowed-list\n            border-top-left-radius: 0;\n          }\n          .card-img-bottom,\n          .card-footer {\n            // stylelint-disable-next-line property-disallowed-list\n            border-bottom-left-radius: 0;\n          }\n        }\n      }\n    }\n  }\n}\n","//\n// Base styles\n//\n\n.accordion-button {\n  position: relative;\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: $accordion-button-padding-y $accordion-button-padding-x;\n  @include font-size($font-size-base);\n  color: $accordion-button-color;\n  text-align: left; // Reset button style\n  background-color: $accordion-button-bg;\n  border: 0;\n  @include border-radius(0);\n  overflow-anchor: none;\n  @include transition($accordion-transition);\n\n  &:not(.collapsed) {\n    color: $accordion-button-active-color;\n    background-color: $accordion-button-active-bg;\n    box-shadow: inset 0 ($accordion-border-width * -1) 0 $accordion-border-color;\n\n    &::after {\n      background-image: escape-svg($accordion-button-active-icon);\n      transform: $accordion-icon-transform;\n    }\n  }\n\n  // Accordion icon\n  &::after {\n    flex-shrink: 0;\n    width: $accordion-icon-width;\n    height: $accordion-icon-width;\n    margin-left: auto;\n    content: \"\";\n    background-image: escape-svg($accordion-button-icon);\n    background-repeat: no-repeat;\n    background-size: $accordion-icon-width;\n    @include transition($accordion-icon-transition);\n  }\n\n  &:hover {\n    z-index: 2;\n  }\n\n  &:focus {\n    z-index: 3;\n    border-color: $accordion-button-focus-border-color;\n    outline: 0;\n    box-shadow: $accordion-button-focus-box-shadow;\n  }\n}\n\n.accordion-header {\n  margin-bottom: 0;\n}\n\n.accordion-item {\n  background-color: $accordion-bg;\n  border: $accordion-border-width solid $accordion-border-color;\n\n  &:first-of-type {\n    @include border-top-radius($accordion-border-radius);\n\n    .accordion-button {\n      @include border-top-radius($accordion-inner-border-radius);\n    }\n  }\n\n  &:not(:first-of-type) {\n    border-top: 0;\n  }\n\n  // Only set a border-radius on the last item if the accordion is collapsed\n  &:last-of-type {\n    @include border-bottom-radius($accordion-border-radius);\n\n    .accordion-button {\n      &.collapsed {\n        @include border-bottom-radius($accordion-inner-border-radius);\n      }\n    }\n\n    .accordion-collapse {\n      @include border-bottom-radius($accordion-border-radius);\n    }\n  }\n}\n\n.accordion-body {\n  padding: $accordion-body-padding-y $accordion-body-padding-x;\n}\n\n\n// Flush accordion items\n//\n// Remove borders and border-radius to keep accordion items edge-to-edge.\n\n.accordion-flush {\n  .accordion-collapse {\n    border-width: 0;\n  }\n\n  .accordion-item {\n    border-right: 0;\n    border-left: 0;\n    @include border-radius(0);\n\n    &:first-child { border-top: 0; }\n    &:last-child { border-bottom: 0; }\n\n    .accordion-button {\n      @include border-radius(0);\n    }\n  }\n}\n",".breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  padding: $breadcrumb-padding-y $breadcrumb-padding-x;\n  margin-bottom: $breadcrumb-margin-bottom;\n  @include font-size($breadcrumb-font-size);\n  list-style: none;\n  background-color: $breadcrumb-bg;\n  @include border-radius($breadcrumb-border-radius);\n}\n\n.breadcrumb-item {\n  // The separator between breadcrumbs (by default, a forward-slash: \"/\")\n  + .breadcrumb-item {\n    padding-left: $breadcrumb-item-padding-x;\n\n    &::before {\n      float: left; // Suppress inline spacings and underlining of the separator\n      padding-right: $breadcrumb-item-padding-x;\n      color: $breadcrumb-divider-color;\n      content: var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{\"/* rtl:\"} var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{\"*/\"};\n    }\n  }\n\n  &.active {\n    color: $breadcrumb-active-color;\n  }\n}\n",".pagination {\n  display: flex;\n  @include list-unstyled();\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  color: $pagination-color;\n  text-decoration: if($link-decoration == none, null, none);\n  background-color: $pagination-bg;\n  border: $pagination-border-width solid $pagination-border-color;\n  @include transition($pagination-transition);\n\n  &:hover {\n    z-index: 2;\n    color: $pagination-hover-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n    background-color: $pagination-hover-bg;\n    border-color: $pagination-hover-border-color;\n  }\n\n  &:focus {\n    z-index: 3;\n    color: $pagination-focus-color;\n    background-color: $pagination-focus-bg;\n    outline: $pagination-focus-outline;\n    box-shadow: $pagination-focus-box-shadow;\n  }\n}\n\n.page-item {\n  &:not(:first-child) .page-link {\n    margin-left: $pagination-margin-start;\n  }\n\n  &.active .page-link {\n    z-index: 3;\n    color: $pagination-active-color;\n    @include gradient-bg($pagination-active-bg);\n    border-color: $pagination-active-border-color;\n  }\n\n  &.disabled .page-link {\n    color: $pagination-disabled-color;\n    pointer-events: none;\n    background-color: $pagination-disabled-bg;\n    border-color: $pagination-disabled-border-color;\n  }\n}\n\n\n//\n// Sizing\n//\n@include pagination-size($pagination-padding-y, $pagination-padding-x, null, $pagination-border-radius);\n\n.pagination-lg {\n  @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $pagination-border-radius-lg);\n}\n\n.pagination-sm {\n  @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $pagination-border-radius-sm);\n}\n","// Pagination\n\n// scss-docs-start pagination-mixin\n@mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) {\n  .page-link {\n    padding: $padding-y $padding-x;\n    @include font-size($font-size);\n  }\n\n  .page-item {\n    @if $pagination-margin-start == (-$pagination-border-width) {\n      &:first-child {\n        .page-link {\n          @include border-start-radius($border-radius);\n        }\n      }\n\n      &:last-child {\n        .page-link {\n          @include border-end-radius($border-radius);\n        }\n      }\n    } @else {\n      //Add border-radius to all pageLinks in case they have left margin\n      .page-link {\n        @include border-radius($border-radius);\n      }\n    }\n  }\n}\n// scss-docs-end pagination-mixin\n","// Base class\n//\n// Requires one of the contextual, color modifier classes for `color` and\n// `background-color`.\n\n.badge {\n  display: inline-block;\n  padding: $badge-padding-y $badge-padding-x;\n  @include font-size($badge-font-size);\n  font-weight: $badge-font-weight;\n  line-height: 1;\n  color: $badge-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  @include border-radius($badge-border-radius);\n  @include gradient-bg();\n\n  // Empty badges collapse automatically\n  &:empty {\n    display: none;\n  }\n}\n\n// Quick fix for badges in buttons\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n","//\n// Base styles\n//\n\n.alert {\n  position: relative;\n  padding: $alert-padding-y $alert-padding-x;\n  margin-bottom: $alert-margin-bottom;\n  border: $alert-border-width solid transparent;\n  @include border-radius($alert-border-radius);\n}\n\n// Headings for larger alerts\n.alert-heading {\n  // Specified to prevent conflicts of changing $headings-color\n  color: inherit;\n}\n\n// Provide class for links that match alerts\n.alert-link {\n  font-weight: $alert-link-font-weight;\n}\n\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissible {\n  padding-right: $alert-dismissible-padding-r;\n\n  // Adjust close link position\n  .btn-close {\n    position: absolute;\n    top: 0;\n    right: 0;\n    z-index: $stretched-link-z-index + 1;\n    padding: $alert-padding-y * 1.25 $alert-padding-x;\n  }\n}\n\n\n// scss-docs-start alert-modifiers\n// Generate contextual modifier classes for colorizing the alert.\n\n@each $state, $value in $theme-colors {\n  $alert-background: shift-color($value, $alert-bg-scale);\n  $alert-border: shift-color($value, $alert-border-scale);\n  $alert-color: shift-color($value, $alert-color-scale);\n  @if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) {\n    $alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale));\n  }\n  .alert-#{$state} {\n    @include alert-variant($alert-background, $alert-border, $alert-color);\n  }\n}\n// scss-docs-end alert-modifiers\n","// scss-docs-start alert-variant-mixin\n@mixin alert-variant($background, $border, $color) {\n  color: $color;\n  @include gradient-bg($background);\n  border-color: $border;\n\n  .alert-link {\n    color: shade-color($color, 20%);\n  }\n}\n// scss-docs-end alert-variant-mixin\n","// Disable animation if transitions are disabled\n\n// scss-docs-start progress-keyframes\n@if $enable-transitions {\n  @keyframes progress-bar-stripes {\n    0% { background-position-x: $progress-height; }\n  }\n}\n// scss-docs-end progress-keyframes\n\n.progress {\n  display: flex;\n  height: $progress-height;\n  overflow: hidden; // force rounded corners by cropping it\n  @include font-size($progress-font-size);\n  background-color: $progress-bg;\n  @include border-radius($progress-border-radius);\n  @include box-shadow($progress-box-shadow);\n}\n\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  color: $progress-bar-color;\n  text-align: center;\n  white-space: nowrap;\n  background-color: $progress-bar-bg;\n  @include transition($progress-bar-transition);\n}\n\n.progress-bar-striped {\n  @include gradient-striped();\n  background-size: $progress-height $progress-height;\n}\n\n@if $enable-transitions {\n  .progress-bar-animated {\n    animation: $progress-bar-animation-timing progress-bar-stripes;\n\n    @if $enable-reduced-motion {\n      @media (prefers-reduced-motion: reduce) {\n        animation: none;\n      }\n    }\n  }\n}\n","// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n  display: flex;\n  flex-direction: column;\n\n  // No need to set list-style: none; since .list-group-item is block level\n  padding-left: 0; // reset padding because ul and ol\n  margin-bottom: 0;\n  @include border-radius($list-group-border-radius);\n}\n\n.list-group-numbered {\n  list-style-type: none;\n  counter-reset: section;\n\n  > li::before {\n    // Increments only this instance of the section counter\n    content: counters(section, \".\") \". \";\n    counter-increment: section;\n  }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive\n// list items. Includes an extra `.active` modifier class for selected items.\n\n.list-group-item-action {\n  width: 100%; // For `<button>`s (anchors become 100% by default though)\n  color: $list-group-action-color;\n  text-align: inherit; // For `<button>`s (anchors inherit)\n\n  // Hover state\n  &:hover,\n  &:focus {\n    z-index: 1; // Place hover/focus items above their siblings for proper border styling\n    color: $list-group-action-hover-color;\n    text-decoration: none;\n    background-color: $list-group-hover-bg;\n  }\n\n  &:active {\n    color: $list-group-action-active-color;\n    background-color: $list-group-action-active-bg;\n  }\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: $list-group-item-padding-y $list-group-item-padding-x;\n  color: $list-group-color;\n  text-decoration: if($link-decoration == none, null, none);\n  background-color: $list-group-bg;\n  border: $list-group-border-width solid $list-group-border-color;\n\n  &:first-child {\n    @include border-top-radius(inherit);\n  }\n\n  &:last-child {\n    @include border-bottom-radius(inherit);\n  }\n\n  &.disabled,\n  &:disabled {\n    color: $list-group-disabled-color;\n    pointer-events: none;\n    background-color: $list-group-disabled-bg;\n  }\n\n  // Include both here for `<a>`s and `<button>`s\n  &.active {\n    z-index: 2; // Place active items above their siblings for proper border styling\n    color: $list-group-active-color;\n    background-color: $list-group-active-bg;\n    border-color: $list-group-active-border-color;\n  }\n\n  & + & {\n    border-top-width: 0;\n\n    &.active {\n      margin-top: -$list-group-border-width;\n      border-top-width: $list-group-border-width;\n    }\n  }\n}\n\n\n// Horizontal\n//\n// Change the layout of list group items from vertical (default) to horizontal.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .list-group-horizontal#{$infix} {\n      flex-direction: row;\n\n      > .list-group-item {\n        &:first-child {\n          @include border-bottom-start-radius($list-group-border-radius);\n          @include border-top-end-radius(0);\n        }\n\n        &:last-child {\n          @include border-top-end-radius($list-group-border-radius);\n          @include border-bottom-start-radius(0);\n        }\n\n        &.active {\n          margin-top: 0;\n        }\n\n        + .list-group-item {\n          border-top-width: $list-group-border-width;\n          border-left-width: 0;\n\n          &.active {\n            margin-left: -$list-group-border-width;\n            border-left-width: $list-group-border-width;\n          }\n        }\n      }\n    }\n  }\n}\n\n\n// Flush list items\n//\n// Remove borders and border-radius to keep list group items edge-to-edge. Most\n// useful within other components (e.g., cards).\n\n.list-group-flush {\n  @include border-radius(0);\n\n  > .list-group-item {\n    border-width: 0 0 $list-group-border-width;\n\n    &:last-child {\n      border-bottom-width: 0;\n    }\n  }\n}\n\n\n// scss-docs-start list-group-modifiers\n// List group contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n@each $state, $value in $theme-colors {\n  $list-group-variant-bg: shift-color($value, $list-group-item-bg-scale);\n  $list-group-variant-color: shift-color($value, $list-group-item-color-scale);\n  @if (contrast-ratio($list-group-variant-bg, $list-group-variant-color) < $min-contrast-ratio) {\n    $list-group-variant-color: mix($value, color-contrast($list-group-variant-bg), abs($list-group-item-color-scale));\n  }\n\n  @include list-group-item-variant($state, $list-group-variant-bg, $list-group-variant-color);\n}\n// scss-docs-end list-group-modifiers\n","// List Groups\n\n// scss-docs-start list-group-mixin\n@mixin list-group-item-variant($state, $background, $color) {\n  .list-group-item-#{$state} {\n    color: $color;\n    background-color: $background;\n\n    &.list-group-item-action {\n      &:hover,\n      &:focus {\n        color: $color;\n        background-color: shade-color($background, 10%);\n      }\n\n      &.active {\n        color: $white;\n        background-color: $color;\n        border-color: $color;\n      }\n    }\n  }\n}\n// scss-docs-end list-group-mixin\n","// transparent background and border properties included for button version.\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n.btn-close {\n  box-sizing: content-box;\n  width: $btn-close-width;\n  height: $btn-close-height;\n  padding: $btn-close-padding-y $btn-close-padding-x;\n  color: $btn-close-color;\n  background: transparent escape-svg($btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements\n  border: 0; // for button elements\n  @include border-radius();\n  opacity: $btn-close-opacity;\n\n  // Override <a>'s hover style\n  &:hover {\n    color: $btn-close-color;\n    text-decoration: none;\n    opacity: $btn-close-hover-opacity;\n  }\n\n  &:focus {\n    outline: 0;\n    box-shadow: $btn-close-focus-shadow;\n    opacity: $btn-close-focus-opacity;\n  }\n\n  &:disabled,\n  &.disabled {\n    pointer-events: none;\n    user-select: none;\n    opacity: $btn-close-disabled-opacity;\n  }\n}\n\n.btn-close-white {\n  filter: $btn-close-white-filter;\n}\n",".toast {\n  width: $toast-max-width;\n  max-width: 100%;\n  @include font-size($toast-font-size);\n  color: $toast-color;\n  pointer-events: auto;\n  background-color: $toast-background-color;\n  background-clip: padding-box;\n  border: $toast-border-width solid $toast-border-color;\n  box-shadow: $toast-box-shadow;\n  @include border-radius($toast-border-radius);\n\n  &.showing {\n    opacity: 0;\n  }\n\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.toast-container {\n  width: max-content;\n  max-width: 100%;\n  pointer-events: none;\n\n  > :not(:last-child) {\n    margin-bottom: $toast-spacing;\n  }\n}\n\n.toast-header {\n  display: flex;\n  align-items: center;\n  padding: $toast-padding-y $toast-padding-x;\n  color: $toast-header-color;\n  background-color: $toast-header-background-color;\n  background-clip: padding-box;\n  border-bottom: $toast-border-width solid $toast-header-border-color;\n  @include border-top-radius(subtract($toast-border-radius, $toast-border-width));\n\n  .btn-close {\n    margin-right: $toast-padding-x * -.5;\n    margin-left: $toast-padding-x;\n  }\n}\n\n.toast-body {\n  padding: $toast-padding-x; // apply to both vertical and horizontal\n  word-wrap: break-word;\n}\n","// .modal-open      - body class for killing the scroll\n// .modal           - container to scroll within\n// .modal-dialog    - positioning shell for the actual modal\n// .modal-content   - actual modal w/ bg and corners and stuff\n\n\n// Container that the modal scrolls within\n.modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: $zindex-modal;\n  display: none;\n  width: 100%;\n  height: 100%;\n  overflow-x: hidden;\n  overflow-y: auto;\n  // Prevent Chrome on Windows from adding a focus outline. For details, see\n  // https://github.com/twbs/bootstrap/pull/10951.\n  outline: 0;\n  // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a\n  // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342\n  // See also https://github.com/twbs/bootstrap/issues/17695\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: $modal-dialog-margin;\n  // allow clicks to pass through for custom click handling to close modal\n  pointer-events: none;\n\n  // When fading in the modal, animate it to slide down\n  .modal.fade & {\n    @include transition($modal-transition);\n    transform: $modal-fade-transform;\n  }\n  .modal.show & {\n    transform: $modal-show-transform;\n  }\n\n  // When trying to close, animate focus to scale\n  .modal.modal-static & {\n    transform: $modal-scale-transform;\n  }\n}\n\n.modal-dialog-scrollable {\n  height: subtract(100%, $modal-dialog-margin * 2);\n\n  .modal-content {\n    max-height: 100%;\n    overflow: hidden;\n  }\n\n  .modal-body {\n    overflow-y: auto;\n  }\n}\n\n.modal-dialog-centered {\n  display: flex;\n  align-items: center;\n  min-height: subtract(100%, $modal-dialog-margin * 2);\n}\n\n// Actual modal\n.modal-content {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`\n  // counteract the pointer-events: none; in the .modal-dialog\n  color: $modal-content-color;\n  pointer-events: auto;\n  background-color: $modal-content-bg;\n  background-clip: padding-box;\n  border: $modal-content-border-width solid $modal-content-border-color;\n  @include border-radius($modal-content-border-radius);\n  @include box-shadow($modal-content-box-shadow-xs);\n  // Remove focus outline from opened modal\n  outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n  @include overlay-backdrop($zindex-modal-backdrop, $modal-backdrop-bg, $modal-backdrop-opacity);\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends\n  padding: $modal-header-padding;\n  border-bottom: $modal-header-border-width solid $modal-header-border-color;\n  @include border-top-radius($modal-content-inner-border-radius);\n\n  .btn-close {\n    padding: ($modal-header-padding-y * .5) ($modal-header-padding-x * .5);\n    margin: ($modal-header-padding-y * -.5) ($modal-header-padding-x * -.5) ($modal-header-padding-y * -.5) auto;\n  }\n}\n\n// Title text within header\n.modal-title {\n  margin-bottom: 0;\n  line-height: $modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n  position: relative;\n  // Enable `flex-grow: 1` so that the body take up as much space as possible\n  // when there should be a fixed height on `.modal-dialog`.\n  flex: 1 1 auto;\n  padding: $modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n  display: flex;\n  flex-wrap: wrap;\n  flex-shrink: 0;\n  align-items: center; // vertically center\n  justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items\n  padding: $modal-inner-padding - $modal-footer-margin-between * .5;\n  border-top: $modal-footer-border-width solid $modal-footer-border-color;\n  @include border-bottom-radius($modal-content-inner-border-radius);\n\n  // Place margin between footer elements\n  // This solution is far from ideal because of the universal selector usage,\n  // but is needed to fix https://github.com/twbs/bootstrap/issues/24800\n  > * {\n    margin: $modal-footer-margin-between * .5;\n  }\n}\n\n// Scale up the modal\n@include media-breakpoint-up(sm) {\n  // Automatically set modal's width for larger viewports\n  .modal-dialog {\n    max-width: $modal-md;\n    margin: $modal-dialog-margin-y-sm-up auto;\n  }\n\n  .modal-dialog-scrollable {\n    height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);\n  }\n\n  .modal-dialog-centered {\n    min-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);\n  }\n\n  .modal-content {\n    @include box-shadow($modal-content-box-shadow-sm-up);\n  }\n\n  .modal-sm { max-width: $modal-sm; }\n}\n\n@include media-breakpoint-up(lg) {\n  .modal-lg,\n  .modal-xl {\n    max-width: $modal-lg;\n  }\n}\n\n@include media-breakpoint-up(xl) {\n  .modal-xl { max-width: $modal-xl; }\n}\n\n// scss-docs-start modal-fullscreen-loop\n@each $breakpoint in map-keys($grid-breakpoints) {\n  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n  $postfix: if($infix != \"\", $infix + \"-down\", \"\");\n\n  @include media-breakpoint-down($breakpoint) {\n    .modal-fullscreen#{$postfix} {\n      width: 100vw;\n      max-width: none;\n      height: 100%;\n      margin: 0;\n\n      .modal-content {\n        height: 100%;\n        border: 0;\n        @include border-radius(0);\n      }\n\n      .modal-header {\n        @include border-radius(0);\n      }\n\n      .modal-body {\n        overflow-y: auto;\n      }\n\n      .modal-footer {\n        @include border-radius(0);\n      }\n    }\n  }\n}\n// scss-docs-end modal-fullscreen-loop\n","// Shared between modals and offcanvases\n@mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity) {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: $zindex;\n  width: 100vw;\n  height: 100vh;\n  background-color: $backdrop-bg;\n\n  // Fade for backdrop\n  &.fade { opacity: 0; }\n  &.show { opacity: $backdrop-opacity; }\n}\n","// Base class\n.tooltip {\n  position: absolute;\n  z-index: $zindex-tooltip;\n  display: block;\n  margin: $tooltip-margin;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  @include reset-text();\n  @include font-size($tooltip-font-size);\n  // Allow breaking very long words so they don't overflow the tooltip's bounds\n  word-wrap: break-word;\n  opacity: 0;\n\n  &.show { opacity: $tooltip-opacity; }\n\n  .tooltip-arrow {\n    position: absolute;\n    display: block;\n    width: $tooltip-arrow-width;\n    height: $tooltip-arrow-height;\n\n    &::before {\n      position: absolute;\n      content: \"\";\n      border-color: transparent;\n      border-style: solid;\n    }\n  }\n}\n\n.bs-tooltip-top {\n  padding: $tooltip-arrow-height 0;\n\n  .tooltip-arrow {\n    bottom: 0;\n\n    &::before {\n      top: -1px;\n      border-width: $tooltip-arrow-height ($tooltip-arrow-width * .5) 0;\n      border-top-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-end {\n  padding: 0 $tooltip-arrow-height;\n\n  .tooltip-arrow {\n    left: 0;\n    width: $tooltip-arrow-height;\n    height: $tooltip-arrow-width;\n\n    &::before {\n      right: -1px;\n      border-width: ($tooltip-arrow-width * .5) $tooltip-arrow-height ($tooltip-arrow-width * .5) 0;\n      border-right-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-bottom {\n  padding: $tooltip-arrow-height 0;\n\n  .tooltip-arrow {\n    top: 0;\n\n    &::before {\n      bottom: -1px;\n      border-width: 0 ($tooltip-arrow-width * .5) $tooltip-arrow-height;\n      border-bottom-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-start {\n  padding: 0 $tooltip-arrow-height;\n\n  .tooltip-arrow {\n    right: 0;\n    width: $tooltip-arrow-height;\n    height: $tooltip-arrow-width;\n\n    &::before {\n      left: -1px;\n      border-width: ($tooltip-arrow-width * .5) 0 ($tooltip-arrow-width * .5) $tooltip-arrow-height;\n      border-left-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-auto {\n  &[data-popper-placement^=\"top\"] {\n    @extend .bs-tooltip-top;\n  }\n  &[data-popper-placement^=\"right\"] {\n    @extend .bs-tooltip-end;\n  }\n  &[data-popper-placement^=\"bottom\"] {\n    @extend .bs-tooltip-bottom;\n  }\n  &[data-popper-placement^=\"left\"] {\n    @extend .bs-tooltip-start;\n  }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n  max-width: $tooltip-max-width;\n  padding: $tooltip-padding-y $tooltip-padding-x;\n  color: $tooltip-color;\n  text-align: center;\n  background-color: $tooltip-bg;\n  @include border-radius($tooltip-border-radius);\n}\n","@mixin reset-text {\n  font-family: $font-family-base;\n  // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.\n  font-style: normal;\n  font-weight: $font-weight-normal;\n  line-height: $line-height-base;\n  text-align: left; // Fallback for where `start` is not supported\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n}\n",".popover {\n  position: absolute;\n  top: 0;\n  left: 0 #{\"/* rtl:ignore */\"};\n  z-index: $zindex-popover;\n  display: block;\n  max-width: $popover-max-width;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  @include reset-text();\n  @include font-size($popover-font-size);\n  // Allow breaking very long words so they don't overflow the popover's bounds\n  word-wrap: break-word;\n  background-color: $popover-bg;\n  background-clip: padding-box;\n  border: $popover-border-width solid $popover-border-color;\n  @include border-radius($popover-border-radius);\n  @include box-shadow($popover-box-shadow);\n\n  .popover-arrow {\n    position: absolute;\n    display: block;\n    width: $popover-arrow-width;\n    height: $popover-arrow-height;\n\n    &::before,\n    &::after {\n      position: absolute;\n      display: block;\n      content: \"\";\n      border-color: transparent;\n      border-style: solid;\n    }\n  }\n}\n\n.bs-popover-top {\n  > .popover-arrow {\n    bottom: subtract(-$popover-arrow-height, $popover-border-width);\n\n    &::before {\n      bottom: 0;\n      border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-top-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      bottom: $popover-border-width;\n      border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-top-color: $popover-arrow-color;\n    }\n  }\n}\n\n.bs-popover-end {\n  > .popover-arrow {\n    left: subtract(-$popover-arrow-height, $popover-border-width);\n    width: $popover-arrow-height;\n    height: $popover-arrow-width;\n\n    &::before {\n      left: 0;\n      border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-right-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      left: $popover-border-width;\n      border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-right-color: $popover-arrow-color;\n    }\n  }\n}\n\n.bs-popover-bottom {\n  > .popover-arrow {\n    top: subtract(-$popover-arrow-height, $popover-border-width);\n\n    &::before {\n      top: 0;\n      border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);\n      border-bottom-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      top: $popover-border-width;\n      border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);\n      border-bottom-color: $popover-arrow-color;\n    }\n  }\n\n  // This will remove the popover-header's border just below the arrow\n  .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: $popover-arrow-width;\n    margin-left: -$popover-arrow-width * .5;\n    content: \"\";\n    border-bottom: $popover-border-width solid $popover-header-bg;\n  }\n}\n\n.bs-popover-start {\n  > .popover-arrow {\n    right: subtract(-$popover-arrow-height, $popover-border-width);\n    width: $popover-arrow-height;\n    height: $popover-arrow-width;\n\n    &::before {\n      right: 0;\n      border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;\n      border-left-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      right: $popover-border-width;\n      border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;\n      border-left-color: $popover-arrow-color;\n    }\n  }\n}\n\n.bs-popover-auto {\n  &[data-popper-placement^=\"top\"] {\n    @extend .bs-popover-top;\n  }\n  &[data-popper-placement^=\"right\"] {\n    @extend .bs-popover-end;\n  }\n  &[data-popper-placement^=\"bottom\"] {\n    @extend .bs-popover-bottom;\n  }\n  &[data-popper-placement^=\"left\"] {\n    @extend .bs-popover-start;\n  }\n}\n\n// Offset the popover to account for the popover arrow\n.popover-header {\n  padding: $popover-header-padding-y $popover-header-padding-x;\n  margin-bottom: 0; // Reset the default from Reboot\n  @include font-size($font-size-base);\n  color: $popover-header-color;\n  background-color: $popover-header-bg;\n  border-bottom: $popover-border-width solid $popover-border-color;\n  @include border-top-radius($popover-inner-border-radius);\n\n  &:empty {\n    display: none;\n  }\n}\n\n.popover-body {\n  padding: $popover-body-padding-y $popover-body-padding-x;\n  color: $popover-body-color;\n}\n","// Notes on the classes:\n//\n// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)\n//    even when their scroll action started on a carousel, but for compatibility (with Firefox)\n//    we're preventing all actions instead\n// 2. The .carousel-item-start and .carousel-item-end is used to indicate where\n//    the active slide is heading.\n// 3. .active.carousel-item is the current slide.\n// 4. .active.carousel-item-start and .active.carousel-item-end is the current\n//    slide in its in-transition state. Only one of these occurs at a time.\n// 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end\n//    is the upcoming slide in transition.\n\n.carousel {\n  position: relative;\n}\n\n.carousel.pointer-event {\n  touch-action: pan-y;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n  @include clearfix();\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  float: left;\n  width: 100%;\n  margin-right: -100%;\n  backface-visibility: hidden;\n  @include transition($carousel-transition);\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n/* rtl:begin:ignore */\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n  transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n  transform: translateX(-100%);\n}\n\n/* rtl:end:ignore */\n\n\n//\n// Alternate transitions\n//\n\n.carousel-fade {\n  .carousel-item {\n    opacity: 0;\n    transition-property: opacity;\n    transform: none;\n  }\n\n  .carousel-item.active,\n  .carousel-item-next.carousel-item-start,\n  .carousel-item-prev.carousel-item-end {\n    z-index: 1;\n    opacity: 1;\n  }\n\n  .active.carousel-item-start,\n  .active.carousel-item-end {\n    z-index: 0;\n    opacity: 0;\n    @include transition(opacity 0s $carousel-transition-duration);\n  }\n}\n\n\n//\n// Left/right controls for nav\n//\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n  // Use flex for alignment (1-3)\n  display: flex; // 1. allow flex styles\n  align-items: center; // 2. vertically center contents\n  justify-content: center; // 3. horizontally center contents\n  width: $carousel-control-width;\n  padding: 0;\n  color: $carousel-control-color;\n  text-align: center;\n  background: none;\n  border: 0;\n  opacity: $carousel-control-opacity;\n  @include transition($carousel-control-transition);\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    color: $carousel-control-color;\n    text-decoration: none;\n    outline: 0;\n    opacity: $carousel-control-hover-opacity;\n  }\n}\n.carousel-control-prev {\n  left: 0;\n  background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null);\n}\n.carousel-control-next {\n  right: 0;\n  background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null);\n}\n\n// Icons for within\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: $carousel-control-icon-width;\n  height: $carousel-control-icon-width;\n  background-repeat: no-repeat;\n  background-position: 50%;\n  background-size: 100% 100%;\n}\n\n/* rtl:options: {\n  \"autoRename\": true,\n  \"stringMap\":[ {\n    \"name\"    : \"prev-next\",\n    \"search\"  : \"prev\",\n    \"replace\" : \"next\"\n  } ]\n} */\n.carousel-control-prev-icon {\n  background-image: escape-svg($carousel-control-prev-icon-bg);\n}\n.carousel-control-next-icon {\n  background-image: escape-svg($carousel-control-next-icon-bg);\n}\n\n// Optional indicator pips/controls\n//\n// Add a container (such as a list) with the following class and add an item (ideally a focusable control,\n// like a button) with data-bs-target for each slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 2;\n  display: flex;\n  justify-content: center;\n  padding: 0;\n  // Use the .carousel-control's width as margin so we don't overlay those\n  margin-right: $carousel-control-width;\n  margin-bottom: 1rem;\n  margin-left: $carousel-control-width;\n  list-style: none;\n\n  [data-bs-target] {\n    box-sizing: content-box;\n    flex: 0 1 auto;\n    width: $carousel-indicator-width;\n    height: $carousel-indicator-height;\n    padding: 0;\n    margin-right: $carousel-indicator-spacer;\n    margin-left: $carousel-indicator-spacer;\n    text-indent: -999px;\n    cursor: pointer;\n    background-color: $carousel-indicator-active-bg;\n    background-clip: padding-box;\n    border: 0;\n    // Use transparent borders to increase the hit area by 10px on top and bottom.\n    border-top: $carousel-indicator-hit-area-height solid transparent;\n    border-bottom: $carousel-indicator-hit-area-height solid transparent;\n    opacity: $carousel-indicator-opacity;\n    @include transition($carousel-indicator-transition);\n  }\n\n  .active {\n    opacity: $carousel-indicator-active-opacity;\n  }\n}\n\n\n// Optional captions\n//\n//\n\n.carousel-caption {\n  position: absolute;\n  right: (100% - $carousel-caption-width) * .5;\n  bottom: $carousel-caption-spacer;\n  left: (100% - $carousel-caption-width) * .5;\n  padding-top: $carousel-caption-padding-y;\n  padding-bottom: $carousel-caption-padding-y;\n  color: $carousel-caption-color;\n  text-align: center;\n}\n\n// Dark mode carousel\n\n.carousel-dark {\n  .carousel-control-prev-icon,\n  .carousel-control-next-icon {\n    filter: $carousel-dark-control-icon-filter;\n  }\n\n  .carousel-indicators [data-bs-target] {\n    background-color: $carousel-dark-indicator-active-bg;\n  }\n\n  .carousel-caption {\n    color: $carousel-dark-caption-color;\n  }\n}\n","// scss-docs-start clearfix\n@mixin clearfix() {\n  &::after {\n    display: block;\n    clear: both;\n    content: \"\";\n  }\n}\n// scss-docs-end clearfix\n","//\n// Rotating border\n//\n\n// scss-docs-start spinner-border-keyframes\n@keyframes spinner-border {\n  to { transform: rotate(360deg) #{\"/* rtl:ignore */\"}; }\n}\n// scss-docs-end spinner-border-keyframes\n\n.spinner-border {\n  display: inline-block;\n  width: $spinner-width;\n  height: $spinner-height;\n  vertical-align: $spinner-vertical-align;\n  border: $spinner-border-width solid currentColor;\n  border-right-color: transparent;\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 50%;\n  animation: $spinner-animation-speed linear infinite spinner-border;\n}\n\n.spinner-border-sm {\n  width: $spinner-width-sm;\n  height: $spinner-height-sm;\n  border-width: $spinner-border-width-sm;\n}\n\n//\n// Growing circle\n//\n\n// scss-docs-start spinner-grow-keyframes\n@keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n// scss-docs-end spinner-grow-keyframes\n\n.spinner-grow {\n  display: inline-block;\n  width: $spinner-width;\n  height: $spinner-height;\n  vertical-align: $spinner-vertical-align;\n  background-color: currentColor;\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 50%;\n  opacity: 0;\n  animation: $spinner-animation-speed linear infinite spinner-grow;\n}\n\n.spinner-grow-sm {\n  width: $spinner-width-sm;\n  height: $spinner-height-sm;\n}\n\n@if $enable-reduced-motion {\n  @media (prefers-reduced-motion: reduce) {\n    .spinner-border,\n    .spinner-grow {\n      animation-duration: $spinner-animation-speed * 2;\n    }\n  }\n}\n",".offcanvas {\n  position: fixed;\n  bottom: 0;\n  z-index: $zindex-offcanvas;\n  display: flex;\n  flex-direction: column;\n  max-width: 100%;\n  color: $offcanvas-color;\n  visibility: hidden;\n  background-color: $offcanvas-bg-color;\n  background-clip: padding-box;\n  outline: 0;\n  @include box-shadow($offcanvas-box-shadow);\n  @include transition(transform $offcanvas-transition-duration ease-in-out);\n}\n\n.offcanvas-backdrop {\n  @include overlay-backdrop($zindex-offcanvas-backdrop, $offcanvas-backdrop-bg, $offcanvas-backdrop-opacity);\n}\n\n.offcanvas-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: $offcanvas-padding-y $offcanvas-padding-x;\n\n  .btn-close {\n    padding: ($offcanvas-padding-y * .5) ($offcanvas-padding-x * .5);\n    margin-top: $offcanvas-padding-y * -.5;\n    margin-right: $offcanvas-padding-x * -.5;\n    margin-bottom: $offcanvas-padding-y * -.5;\n  }\n}\n\n.offcanvas-title {\n  margin-bottom: 0;\n  line-height: $offcanvas-title-line-height;\n}\n\n.offcanvas-body {\n  flex-grow: 1;\n  padding: $offcanvas-padding-y $offcanvas-padding-x;\n  overflow-y: auto;\n}\n\n.offcanvas-start {\n  top: 0;\n  left: 0;\n  width: $offcanvas-horizontal-width;\n  border-right: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateX(-100%);\n}\n\n.offcanvas-end {\n  top: 0;\n  right: 0;\n  width: $offcanvas-horizontal-width;\n  border-left: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateX(100%);\n}\n\n.offcanvas-top {\n  top: 0;\n  right: 0;\n  left: 0;\n  height: $offcanvas-vertical-height;\n  max-height: 100%;\n  border-bottom: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateY(-100%);\n}\n\n.offcanvas-bottom {\n  right: 0;\n  left: 0;\n  height: $offcanvas-vertical-height;\n  max-height: 100%;\n  border-top: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateY(100%);\n}\n\n.offcanvas.show {\n  transform: none;\n}\n",".placeholder {\n  display: inline-block;\n  min-height: 1em;\n  vertical-align: middle;\n  cursor: wait;\n  background-color: currentColor;\n  opacity: $placeholder-opacity-max;\n\n  &.btn::before {\n    display: inline-block;\n    content: \"\";\n  }\n}\n\n// Sizing\n.placeholder-xs {\n  min-height: .6em;\n}\n\n.placeholder-sm {\n  min-height: .8em;\n}\n\n.placeholder-lg {\n  min-height: 1.2em;\n}\n\n// Animation\n.placeholder-glow {\n  .placeholder {\n    animation: placeholder-glow 2s ease-in-out infinite;\n  }\n}\n\n@keyframes placeholder-glow {\n  50% {\n    opacity: $placeholder-opacity-min;\n  }\n}\n\n.placeholder-wave {\n  mask-image: linear-gradient(130deg, $black 55%, rgba(0, 0, 0, (1 - $placeholder-opacity-min)) 75%, $black 95%);\n  mask-size: 200% 100%;\n  animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n  100% {\n    mask-position: -200% 0%;\n  }\n}\n","@each $color, $value in $theme-colors {\n  .link-#{$color} {\n    color: $value;\n\n    @if $link-shade-percentage != 0 {\n      &:hover,\n      &:focus {\n        color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));\n      }\n    }\n  }\n}\n","// Credit: Nicolas Gallagher and SUIT CSS.\n\n.ratio {\n  position: relative;\n  width: 100%;\n\n  &::before {\n    display: block;\n    padding-top: var(--#{$variable-prefix}aspect-ratio);\n    content: \"\";\n  }\n\n  > * {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n  }\n}\n\n@each $key, $ratio in $aspect-ratios {\n  .ratio-#{$key} {\n    --#{$variable-prefix}aspect-ratio: #{$ratio};\n  }\n}\n","// Shorthand\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n// Responsive sticky top\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .sticky#{$infix}-top {\n      position: sticky;\n      top: 0;\n      z-index: $zindex-sticky;\n    }\n  }\n}\n","// scss-docs-start stacks\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n// scss-docs-end stacks\n","//\n// Visually hidden\n//\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  @include visually-hidden();\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","//\n// Stretched link\n//\n\n.stretched-link {\n  &::#{$stretched-link-pseudo-element} {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: $stretched-link-z-index;\n    content: \"\";\n  }\n}\n","//\n// Text truncation\n//\n\n.text-truncate {\n  @include text-truncate();\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n",".vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: $hr-opacity;\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n  $values: map-get($utility, values);\n\n  // If the values are a list or string, convert it into a map\n  @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n    $values: zip($values, $values);\n  }\n\n  @each $key, $value in $values {\n    $properties: map-get($utility, property);\n\n    // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n    @if type-of($properties) == \"string\" {\n      $properties: append((), $properties);\n    }\n\n    // Use custom class if present\n    $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n    $property-class: if($property-class == null, \"\", $property-class);\n\n    // State params to generate pseudo-classes\n    $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n    $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (eg. with shadow class)\n    $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n    @if map-get($utility, rfs) {\n      // Inside the media query\n      @if $is-rfs-media-query {\n        $val: rfs-value($value);\n\n        // Do not render anything if fluid and non fluid values are the same\n        $value: if($val == rfs-fluid-value($value), null, $val);\n      }\n      @else {\n        $value: rfs-fluid-value($value);\n      }\n    }\n\n    $is-css-var: map-get($utility, css-var);\n    $is-local-vars: map-get($utility, local-vars);\n    $is-rtl: map-get($utility, rtl);\n\n    @if $value != null {\n      @if $is-rtl == false {\n        /* rtl:begin:remove */\n      }\n\n      @if $is-css-var {\n        .#{$property-class + $infix + $property-class-modifier} {\n          --#{$variable-prefix}#{$property-class}: #{$value};\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            --#{$variable-prefix}#{$property-class}: #{$value};\n          }\n        }\n      } @else {\n        .#{$property-class + $infix + $property-class-modifier} {\n          @each $property in $properties {\n            @if $is-local-vars {\n              @each $local-var, $value in $is-local-vars {\n                --#{$variable-prefix}#{$local-var}: #{$value};\n              }\n            }\n            #{$property}: $value if($enable-important-utilities, !important, null);\n          }\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            @each $property in $properties {\n              #{$property}: $value if($enable-important-utilities, !important, null);\n            }\n          }\n        }\n      }\n\n      @if $is-rtl == false {\n        /* rtl:end:remove */\n      }\n    }\n  }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n  // Generate media query if needed\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    // Loop over each utility property\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Only proceed if responsive media queries are enabled or if it's the base media query\n      @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n        @include generate-utility($utility, $infix);\n      }\n    }\n  }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix, true);\n        }\n      }\n    }\n  }\n}\n\n\n// Print utilities\n@media print {\n  @each $key, $utility in $utilities {\n    // The utility can be disabled with `false`, thus check if the utility is a map first\n    // Then check if the utility needs print styles\n    @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n      @include generate-utility($utility, \"-print\");\n    }\n  }\n}\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css
new file mode 100644
index 0000000..52fc4e2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css
@@ -0,0 +1,11197 @@
+@charset "UTF-8";
+/*!
+ * Bootstrap v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+:root {
+  --bs-blue: #0d6efd;
+  --bs-indigo: #6610f2;
+  --bs-purple: #6f42c1;
+  --bs-pink: #d63384;
+  --bs-red: #dc3545;
+  --bs-orange: #fd7e14;
+  --bs-yellow: #ffc107;
+  --bs-green: #198754;
+  --bs-teal: #20c997;
+  --bs-cyan: #0dcaf0;
+  --bs-white: #fff;
+  --bs-gray: #6c757d;
+  --bs-gray-dark: #343a40;
+  --bs-gray-100: #f8f9fa;
+  --bs-gray-200: #e9ecef;
+  --bs-gray-300: #dee2e6;
+  --bs-gray-400: #ced4da;
+  --bs-gray-500: #adb5bd;
+  --bs-gray-600: #6c757d;
+  --bs-gray-700: #495057;
+  --bs-gray-800: #343a40;
+  --bs-gray-900: #212529;
+  --bs-primary: #0d6efd;
+  --bs-secondary: #6c757d;
+  --bs-success: #198754;
+  --bs-info: #0dcaf0;
+  --bs-warning: #ffc107;
+  --bs-danger: #dc3545;
+  --bs-light: #f8f9fa;
+  --bs-dark: #212529;
+  --bs-primary-rgb: 13, 110, 253;
+  --bs-secondary-rgb: 108, 117, 125;
+  --bs-success-rgb: 25, 135, 84;
+  --bs-info-rgb: 13, 202, 240;
+  --bs-warning-rgb: 255, 193, 7;
+  --bs-danger-rgb: 220, 53, 69;
+  --bs-light-rgb: 248, 249, 250;
+  --bs-dark-rgb: 33, 37, 41;
+  --bs-white-rgb: 255, 255, 255;
+  --bs-black-rgb: 0, 0, 0;
+  --bs-body-rgb: 33, 37, 41;
+  --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
+  --bs-body-font-family: var(--bs-font-sans-serif);
+  --bs-body-font-size: 1rem;
+  --bs-body-font-weight: 400;
+  --bs-body-line-height: 1.5;
+  --bs-body-color: #212529;
+  --bs-body-bg: #fff;
+}
+
+*,
+*::before,
+*::after {
+  box-sizing: border-box;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  :root {
+    scroll-behavior: smooth;
+  }
+}
+
+body {
+  margin: 0;
+  font-family: var(--bs-body-font-family);
+  font-size: var(--bs-body-font-size);
+  font-weight: var(--bs-body-font-weight);
+  line-height: var(--bs-body-line-height);
+  color: var(--bs-body-color);
+  text-align: var(--bs-body-text-align);
+  background-color: var(--bs-body-bg);
+  -webkit-text-size-adjust: 100%;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+hr {
+  margin: 1rem 0;
+  color: inherit;
+  background-color: currentColor;
+  border: 0;
+  opacity: 0.25;
+}
+
+hr:not([size]) {
+  height: 1px;
+}
+
+h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {
+  margin-top: 0;
+  margin-bottom: 0.5rem;
+  font-weight: 500;
+  line-height: 1.2;
+}
+
+h1, .h1 {
+  font-size: calc(1.375rem + 1.5vw);
+}
+@media (min-width: 1200px) {
+  h1, .h1 {
+    font-size: 2.5rem;
+  }
+}
+
+h2, .h2 {
+  font-size: calc(1.325rem + 0.9vw);
+}
+@media (min-width: 1200px) {
+  h2, .h2 {
+    font-size: 2rem;
+  }
+}
+
+h3, .h3 {
+  font-size: calc(1.3rem + 0.6vw);
+}
+@media (min-width: 1200px) {
+  h3, .h3 {
+    font-size: 1.75rem;
+  }
+}
+
+h4, .h4 {
+  font-size: calc(1.275rem + 0.3vw);
+}
+@media (min-width: 1200px) {
+  h4, .h4 {
+    font-size: 1.5rem;
+  }
+}
+
+h5, .h5 {
+  font-size: 1.25rem;
+}
+
+h6, .h6 {
+  font-size: 1rem;
+}
+
+p {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+abbr[title],
+abbr[data-bs-original-title] {
+  -webkit-text-decoration: underline dotted;
+  text-decoration: underline dotted;
+  cursor: help;
+  -webkit-text-decoration-skip-ink: none;
+  text-decoration-skip-ink: none;
+}
+
+address {
+  margin-bottom: 1rem;
+  font-style: normal;
+  line-height: inherit;
+}
+
+ol,
+ul {
+  padding-right: 2rem;
+}
+
+ol,
+ul,
+dl {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+  margin-bottom: 0;
+}
+
+dt {
+  font-weight: 700;
+}
+
+dd {
+  margin-bottom: 0.5rem;
+  margin-right: 0;
+}
+
+blockquote {
+  margin: 0 0 1rem;
+}
+
+b,
+strong {
+  font-weight: bolder;
+}
+
+small, .small {
+  font-size: 0.875em;
+}
+
+mark, .mark {
+  padding: 0.2em;
+  background-color: #fcf8e3;
+}
+
+sub,
+sup {
+  position: relative;
+  font-size: 0.75em;
+  line-height: 0;
+  vertical-align: baseline;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+sup {
+  top: -0.5em;
+}
+
+a {
+  color: #0d6efd;
+  text-decoration: underline;
+}
+a:hover {
+  color: #0a58ca;
+}
+
+a:not([href]):not([class]), a:not([href]):not([class]):hover {
+  color: inherit;
+  text-decoration: none;
+}
+
+pre,
+code,
+kbd,
+samp {
+  font-family: var(--bs-font-monospace);
+  font-size: 1em;
+  direction: ltr ;
+  unicode-bidi: bidi-override;
+}
+
+pre {
+  display: block;
+  margin-top: 0;
+  margin-bottom: 1rem;
+  overflow: auto;
+  font-size: 0.875em;
+}
+pre code {
+  font-size: inherit;
+  color: inherit;
+  word-break: normal;
+}
+
+code {
+  font-size: 0.875em;
+  color: #d63384;
+  word-wrap: break-word;
+}
+a > code {
+  color: inherit;
+}
+
+kbd {
+  padding: 0.2rem 0.4rem;
+  font-size: 0.875em;
+  color: #fff;
+  background-color: #212529;
+  border-radius: 0.2rem;
+}
+kbd kbd {
+  padding: 0;
+  font-size: 1em;
+  font-weight: 700;
+}
+
+figure {
+  margin: 0 0 1rem;
+}
+
+img,
+svg {
+  vertical-align: middle;
+}
+
+table {
+  caption-side: bottom;
+  border-collapse: collapse;
+}
+
+caption {
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  color: #6c757d;
+  text-align: right;
+}
+
+th {
+  text-align: inherit;
+  text-align: -webkit-match-parent;
+}
+
+thead,
+tbody,
+tfoot,
+tr,
+td,
+th {
+  border-color: inherit;
+  border-style: solid;
+  border-width: 0;
+}
+
+label {
+  display: inline-block;
+}
+
+button {
+  border-radius: 0;
+}
+
+button:focus:not(:focus-visible) {
+  outline: 0;
+}
+
+input,
+button,
+select,
+optgroup,
+textarea {
+  margin: 0;
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+
+button,
+select {
+  text-transform: none;
+}
+
+[role=button] {
+  cursor: pointer;
+}
+
+select {
+  word-wrap: normal;
+}
+select:disabled {
+  opacity: 1;
+}
+
+[list]::-webkit-calendar-picker-indicator {
+  display: none;
+}
+
+button,
+[type=button],
+[type=reset],
+[type=submit] {
+  -webkit-appearance: button;
+}
+button:not(:disabled),
+[type=button]:not(:disabled),
+[type=reset]:not(:disabled),
+[type=submit]:not(:disabled) {
+  cursor: pointer;
+}
+
+::-moz-focus-inner {
+  padding: 0;
+  border-style: none;
+}
+
+textarea {
+  resize: vertical;
+}
+
+fieldset {
+  min-width: 0;
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+
+legend {
+  float: right;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 0.5rem;
+  font-size: calc(1.275rem + 0.3vw);
+  line-height: inherit;
+}
+@media (min-width: 1200px) {
+  legend {
+    font-size: 1.5rem;
+  }
+}
+legend + * {
+  clear: right;
+}
+
+::-webkit-datetime-edit-fields-wrapper,
+::-webkit-datetime-edit-text,
+::-webkit-datetime-edit-minute,
+::-webkit-datetime-edit-hour-field,
+::-webkit-datetime-edit-day-field,
+::-webkit-datetime-edit-month-field,
+::-webkit-datetime-edit-year-field {
+  padding: 0;
+}
+
+::-webkit-inner-spin-button {
+  height: auto;
+}
+
+[type=search] {
+  outline-offset: -2px;
+  -webkit-appearance: textfield;
+}
+
+[type="tel"],
+[type="url"],
+[type="email"],
+[type="number"] {
+  direction: ltr;
+}
+::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+::-webkit-color-swatch-wrapper {
+  padding: 0;
+}
+
+::file-selector-button {
+  font: inherit;
+}
+
+::-webkit-file-upload-button {
+  font: inherit;
+  -webkit-appearance: button;
+}
+
+output {
+  display: inline-block;
+}
+
+iframe {
+  border: 0;
+}
+
+summary {
+  display: list-item;
+  cursor: pointer;
+}
+
+progress {
+  vertical-align: baseline;
+}
+
+[hidden] {
+  display: none !important;
+}
+
+.lead {
+  font-size: 1.25rem;
+  font-weight: 300;
+}
+
+.display-1 {
+  font-size: calc(1.625rem + 4.5vw);
+  font-weight: 300;
+  line-height: 1.2;
+}
+@media (min-width: 1200px) {
+  .display-1 {
+    font-size: 5rem;
+  }
+}
+
+.display-2 {
+  font-size: calc(1.575rem + 3.9vw);
+  font-weight: 300;
+  line-height: 1.2;
+}
+@media (min-width: 1200px) {
+  .display-2 {
+    font-size: 4.5rem;
+  }
+}
+
+.display-3 {
+  font-size: calc(1.525rem + 3.3vw);
+  font-weight: 300;
+  line-height: 1.2;
+}
+@media (min-width: 1200px) {
+  .display-3 {
+    font-size: 4rem;
+  }
+}
+
+.display-4 {
+  font-size: calc(1.475rem + 2.7vw);
+  font-weight: 300;
+  line-height: 1.2;
+}
+@media (min-width: 1200px) {
+  .display-4 {
+    font-size: 3.5rem;
+  }
+}
+
+.display-5 {
+  font-size: calc(1.425rem + 2.1vw);
+  font-weight: 300;
+  line-height: 1.2;
+}
+@media (min-width: 1200px) {
+  .display-5 {
+    font-size: 3rem;
+  }
+}
+
+.display-6 {
+  font-size: calc(1.375rem + 1.5vw);
+  font-weight: 300;
+  line-height: 1.2;
+}
+@media (min-width: 1200px) {
+  .display-6 {
+    font-size: 2.5rem;
+  }
+}
+
+.list-unstyled {
+  padding-right: 0;
+  list-style: none;
+}
+
+.list-inline {
+  padding-right: 0;
+  list-style: none;
+}
+
+.list-inline-item {
+  display: inline-block;
+}
+.list-inline-item:not(:last-child) {
+  margin-left: 0.5rem;
+}
+
+.initialism {
+  font-size: 0.875em;
+  text-transform: uppercase;
+}
+
+.blockquote {
+  margin-bottom: 1rem;
+  font-size: 1.25rem;
+}
+.blockquote > :last-child {
+  margin-bottom: 0;
+}
+
+.blockquote-footer {
+  margin-top: -1rem;
+  margin-bottom: 1rem;
+  font-size: 0.875em;
+  color: #6c757d;
+}
+.blockquote-footer::before {
+  content: "鈥斅�";
+}
+
+.img-fluid {
+  max-width: 100%;
+  height: auto;
+}
+
+.img-thumbnail {
+  padding: 0.25rem;
+  background-color: #fff;
+  border: 1px solid #dee2e6;
+  border-radius: 0.25rem;
+  max-width: 100%;
+  height: auto;
+}
+
+.figure {
+  display: inline-block;
+}
+
+.figure-img {
+  margin-bottom: 0.5rem;
+  line-height: 1;
+}
+
+.figure-caption {
+  font-size: 0.875em;
+  color: #6c757d;
+}
+
+.container,
+.container-fluid,
+.container-xxl,
+.container-xl,
+.container-lg,
+.container-md,
+.container-sm {
+  width: 100%;
+  padding-left: var(--bs-gutter-x, 0.75rem);
+  padding-right: var(--bs-gutter-x, 0.75rem);
+  margin-left: auto;
+  margin-right: auto;
+}
+
+@media (min-width: 576px) {
+  .container-sm, .container {
+    max-width: 540px;
+  }
+}
+@media (min-width: 768px) {
+  .container-md, .container-sm, .container {
+    max-width: 720px;
+  }
+}
+@media (min-width: 992px) {
+  .container-lg, .container-md, .container-sm, .container {
+    max-width: 960px;
+  }
+}
+@media (min-width: 1200px) {
+  .container-xl, .container-lg, .container-md, .container-sm, .container {
+    max-width: 1140px;
+  }
+}
+@media (min-width: 1400px) {
+  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
+    max-width: 1320px;
+  }
+}
+.row {
+  --bs-gutter-x: 1.5rem;
+  --bs-gutter-y: 0;
+  display: flex;
+  flex-wrap: wrap;
+  margin-top: calc(var(--bs-gutter-y) * -1);
+  margin-left: calc(var(--bs-gutter-x) * -.5);
+  margin-right: calc(var(--bs-gutter-x) * -.5);
+}
+.row > * {
+  flex-shrink: 0;
+  width: 100%;
+  max-width: 100%;
+  padding-left: calc(var(--bs-gutter-x) * .5);
+  padding-right: calc(var(--bs-gutter-x) * .5);
+  margin-top: var(--bs-gutter-y);
+}
+
+.col {
+  flex: 1 0 0%;
+}
+
+.row-cols-auto > * {
+  flex: 0 0 auto;
+  width: auto;
+}
+
+.row-cols-1 > * {
+  flex: 0 0 auto;
+  width: 100%;
+}
+
+.row-cols-2 > * {
+  flex: 0 0 auto;
+  width: 50%;
+}
+
+.row-cols-3 > * {
+  flex: 0 0 auto;
+  width: 33.3333333333%;
+}
+
+.row-cols-4 > * {
+  flex: 0 0 auto;
+  width: 25%;
+}
+
+.row-cols-5 > * {
+  flex: 0 0 auto;
+  width: 20%;
+}
+
+.row-cols-6 > * {
+  flex: 0 0 auto;
+  width: 16.6666666667%;
+}
+
+.col-auto {
+  flex: 0 0 auto;
+  width: auto;
+}
+
+.col-1 {
+  flex: 0 0 auto;
+  width: 8.33333333%;
+}
+
+.col-2 {
+  flex: 0 0 auto;
+  width: 16.66666667%;
+}
+
+.col-3 {
+  flex: 0 0 auto;
+  width: 25%;
+}
+
+.col-4 {
+  flex: 0 0 auto;
+  width: 33.33333333%;
+}
+
+.col-5 {
+  flex: 0 0 auto;
+  width: 41.66666667%;
+}
+
+.col-6 {
+  flex: 0 0 auto;
+  width: 50%;
+}
+
+.col-7 {
+  flex: 0 0 auto;
+  width: 58.33333333%;
+}
+
+.col-8 {
+  flex: 0 0 auto;
+  width: 66.66666667%;
+}
+
+.col-9 {
+  flex: 0 0 auto;
+  width: 75%;
+}
+
+.col-10 {
+  flex: 0 0 auto;
+  width: 83.33333333%;
+}
+
+.col-11 {
+  flex: 0 0 auto;
+  width: 91.66666667%;
+}
+
+.col-12 {
+  flex: 0 0 auto;
+  width: 100%;
+}
+
+.offset-1 {
+  margin-right: 8.33333333%;
+}
+
+.offset-2 {
+  margin-right: 16.66666667%;
+}
+
+.offset-3 {
+  margin-right: 25%;
+}
+
+.offset-4 {
+  margin-right: 33.33333333%;
+}
+
+.offset-5 {
+  margin-right: 41.66666667%;
+}
+
+.offset-6 {
+  margin-right: 50%;
+}
+
+.offset-7 {
+  margin-right: 58.33333333%;
+}
+
+.offset-8 {
+  margin-right: 66.66666667%;
+}
+
+.offset-9 {
+  margin-right: 75%;
+}
+
+.offset-10 {
+  margin-right: 83.33333333%;
+}
+
+.offset-11 {
+  margin-right: 91.66666667%;
+}
+
+.g-0,
+.gx-0 {
+  --bs-gutter-x: 0;
+}
+
+.g-0,
+.gy-0 {
+  --bs-gutter-y: 0;
+}
+
+.g-1,
+.gx-1 {
+  --bs-gutter-x: 0.25rem;
+}
+
+.g-1,
+.gy-1 {
+  --bs-gutter-y: 0.25rem;
+}
+
+.g-2,
+.gx-2 {
+  --bs-gutter-x: 0.5rem;
+}
+
+.g-2,
+.gy-2 {
+  --bs-gutter-y: 0.5rem;
+}
+
+.g-3,
+.gx-3 {
+  --bs-gutter-x: 1rem;
+}
+
+.g-3,
+.gy-3 {
+  --bs-gutter-y: 1rem;
+}
+
+.g-4,
+.gx-4 {
+  --bs-gutter-x: 1.5rem;
+}
+
+.g-4,
+.gy-4 {
+  --bs-gutter-y: 1.5rem;
+}
+
+.g-5,
+.gx-5 {
+  --bs-gutter-x: 3rem;
+}
+
+.g-5,
+.gy-5 {
+  --bs-gutter-y: 3rem;
+}
+
+@media (min-width: 576px) {
+  .col-sm {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-sm-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-sm-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-sm-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-sm-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-sm-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-sm-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-sm-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-sm-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-sm-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-sm-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-sm-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-sm-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-sm-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-sm-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-sm-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-sm-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-sm-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-sm-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-sm-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-sm-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-sm-0 {
+    margin-right: 0;
+  }
+
+  .offset-sm-1 {
+    margin-right: 8.33333333%;
+  }
+
+  .offset-sm-2 {
+    margin-right: 16.66666667%;
+  }
+
+  .offset-sm-3 {
+    margin-right: 25%;
+  }
+
+  .offset-sm-4 {
+    margin-right: 33.33333333%;
+  }
+
+  .offset-sm-5 {
+    margin-right: 41.66666667%;
+  }
+
+  .offset-sm-6 {
+    margin-right: 50%;
+  }
+
+  .offset-sm-7 {
+    margin-right: 58.33333333%;
+  }
+
+  .offset-sm-8 {
+    margin-right: 66.66666667%;
+  }
+
+  .offset-sm-9 {
+    margin-right: 75%;
+  }
+
+  .offset-sm-10 {
+    margin-right: 83.33333333%;
+  }
+
+  .offset-sm-11 {
+    margin-right: 91.66666667%;
+  }
+
+  .g-sm-0,
+.gx-sm-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-sm-0,
+.gy-sm-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-sm-1,
+.gx-sm-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-sm-1,
+.gy-sm-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-sm-2,
+.gx-sm-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-sm-2,
+.gy-sm-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-sm-3,
+.gx-sm-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-sm-3,
+.gy-sm-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-sm-4,
+.gx-sm-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-sm-4,
+.gy-sm-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-sm-5,
+.gx-sm-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-sm-5,
+.gy-sm-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 768px) {
+  .col-md {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-md-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-md-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-md-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-md-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-md-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-md-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-md-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-md-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-md-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-md-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-md-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-md-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-md-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-md-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-md-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-md-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-md-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-md-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-md-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-md-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-md-0 {
+    margin-right: 0;
+  }
+
+  .offset-md-1 {
+    margin-right: 8.33333333%;
+  }
+
+  .offset-md-2 {
+    margin-right: 16.66666667%;
+  }
+
+  .offset-md-3 {
+    margin-right: 25%;
+  }
+
+  .offset-md-4 {
+    margin-right: 33.33333333%;
+  }
+
+  .offset-md-5 {
+    margin-right: 41.66666667%;
+  }
+
+  .offset-md-6 {
+    margin-right: 50%;
+  }
+
+  .offset-md-7 {
+    margin-right: 58.33333333%;
+  }
+
+  .offset-md-8 {
+    margin-right: 66.66666667%;
+  }
+
+  .offset-md-9 {
+    margin-right: 75%;
+  }
+
+  .offset-md-10 {
+    margin-right: 83.33333333%;
+  }
+
+  .offset-md-11 {
+    margin-right: 91.66666667%;
+  }
+
+  .g-md-0,
+.gx-md-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-md-0,
+.gy-md-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-md-1,
+.gx-md-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-md-1,
+.gy-md-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-md-2,
+.gx-md-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-md-2,
+.gy-md-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-md-3,
+.gx-md-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-md-3,
+.gy-md-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-md-4,
+.gx-md-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-md-4,
+.gy-md-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-md-5,
+.gx-md-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-md-5,
+.gy-md-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 992px) {
+  .col-lg {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-lg-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-lg-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-lg-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-lg-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-lg-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-lg-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-lg-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-lg-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-lg-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-lg-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-lg-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-lg-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-lg-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-lg-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-lg-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-lg-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-lg-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-lg-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-lg-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-lg-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-lg-0 {
+    margin-right: 0;
+  }
+
+  .offset-lg-1 {
+    margin-right: 8.33333333%;
+  }
+
+  .offset-lg-2 {
+    margin-right: 16.66666667%;
+  }
+
+  .offset-lg-3 {
+    margin-right: 25%;
+  }
+
+  .offset-lg-4 {
+    margin-right: 33.33333333%;
+  }
+
+  .offset-lg-5 {
+    margin-right: 41.66666667%;
+  }
+
+  .offset-lg-6 {
+    margin-right: 50%;
+  }
+
+  .offset-lg-7 {
+    margin-right: 58.33333333%;
+  }
+
+  .offset-lg-8 {
+    margin-right: 66.66666667%;
+  }
+
+  .offset-lg-9 {
+    margin-right: 75%;
+  }
+
+  .offset-lg-10 {
+    margin-right: 83.33333333%;
+  }
+
+  .offset-lg-11 {
+    margin-right: 91.66666667%;
+  }
+
+  .g-lg-0,
+.gx-lg-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-lg-0,
+.gy-lg-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-lg-1,
+.gx-lg-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-lg-1,
+.gy-lg-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-lg-2,
+.gx-lg-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-lg-2,
+.gy-lg-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-lg-3,
+.gx-lg-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-lg-3,
+.gy-lg-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-lg-4,
+.gx-lg-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-lg-4,
+.gy-lg-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-lg-5,
+.gx-lg-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-lg-5,
+.gy-lg-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 1200px) {
+  .col-xl {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-xl-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-xl-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-xl-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-xl-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-xl-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-xl-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-xl-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-xl-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-xl-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-xl-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-xl-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-xl-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-xl-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-xl-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-xl-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-xl-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-xl-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-xl-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-xl-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-xl-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-xl-0 {
+    margin-right: 0;
+  }
+
+  .offset-xl-1 {
+    margin-right: 8.33333333%;
+  }
+
+  .offset-xl-2 {
+    margin-right: 16.66666667%;
+  }
+
+  .offset-xl-3 {
+    margin-right: 25%;
+  }
+
+  .offset-xl-4 {
+    margin-right: 33.33333333%;
+  }
+
+  .offset-xl-5 {
+    margin-right: 41.66666667%;
+  }
+
+  .offset-xl-6 {
+    margin-right: 50%;
+  }
+
+  .offset-xl-7 {
+    margin-right: 58.33333333%;
+  }
+
+  .offset-xl-8 {
+    margin-right: 66.66666667%;
+  }
+
+  .offset-xl-9 {
+    margin-right: 75%;
+  }
+
+  .offset-xl-10 {
+    margin-right: 83.33333333%;
+  }
+
+  .offset-xl-11 {
+    margin-right: 91.66666667%;
+  }
+
+  .g-xl-0,
+.gx-xl-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-xl-0,
+.gy-xl-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-xl-1,
+.gx-xl-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-xl-1,
+.gy-xl-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-xl-2,
+.gx-xl-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-xl-2,
+.gy-xl-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-xl-3,
+.gx-xl-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-xl-3,
+.gy-xl-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-xl-4,
+.gx-xl-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-xl-4,
+.gy-xl-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-xl-5,
+.gx-xl-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-xl-5,
+.gy-xl-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+@media (min-width: 1400px) {
+  .col-xxl {
+    flex: 1 0 0%;
+  }
+
+  .row-cols-xxl-auto > * {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .row-cols-xxl-1 > * {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .row-cols-xxl-2 > * {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .row-cols-xxl-3 > * {
+    flex: 0 0 auto;
+    width: 33.3333333333%;
+  }
+
+  .row-cols-xxl-4 > * {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .row-cols-xxl-5 > * {
+    flex: 0 0 auto;
+    width: 20%;
+  }
+
+  .row-cols-xxl-6 > * {
+    flex: 0 0 auto;
+    width: 16.6666666667%;
+  }
+
+  .col-xxl-auto {
+    flex: 0 0 auto;
+    width: auto;
+  }
+
+  .col-xxl-1 {
+    flex: 0 0 auto;
+    width: 8.33333333%;
+  }
+
+  .col-xxl-2 {
+    flex: 0 0 auto;
+    width: 16.66666667%;
+  }
+
+  .col-xxl-3 {
+    flex: 0 0 auto;
+    width: 25%;
+  }
+
+  .col-xxl-4 {
+    flex: 0 0 auto;
+    width: 33.33333333%;
+  }
+
+  .col-xxl-5 {
+    flex: 0 0 auto;
+    width: 41.66666667%;
+  }
+
+  .col-xxl-6 {
+    flex: 0 0 auto;
+    width: 50%;
+  }
+
+  .col-xxl-7 {
+    flex: 0 0 auto;
+    width: 58.33333333%;
+  }
+
+  .col-xxl-8 {
+    flex: 0 0 auto;
+    width: 66.66666667%;
+  }
+
+  .col-xxl-9 {
+    flex: 0 0 auto;
+    width: 75%;
+  }
+
+  .col-xxl-10 {
+    flex: 0 0 auto;
+    width: 83.33333333%;
+  }
+
+  .col-xxl-11 {
+    flex: 0 0 auto;
+    width: 91.66666667%;
+  }
+
+  .col-xxl-12 {
+    flex: 0 0 auto;
+    width: 100%;
+  }
+
+  .offset-xxl-0 {
+    margin-right: 0;
+  }
+
+  .offset-xxl-1 {
+    margin-right: 8.33333333%;
+  }
+
+  .offset-xxl-2 {
+    margin-right: 16.66666667%;
+  }
+
+  .offset-xxl-3 {
+    margin-right: 25%;
+  }
+
+  .offset-xxl-4 {
+    margin-right: 33.33333333%;
+  }
+
+  .offset-xxl-5 {
+    margin-right: 41.66666667%;
+  }
+
+  .offset-xxl-6 {
+    margin-right: 50%;
+  }
+
+  .offset-xxl-7 {
+    margin-right: 58.33333333%;
+  }
+
+  .offset-xxl-8 {
+    margin-right: 66.66666667%;
+  }
+
+  .offset-xxl-9 {
+    margin-right: 75%;
+  }
+
+  .offset-xxl-10 {
+    margin-right: 83.33333333%;
+  }
+
+  .offset-xxl-11 {
+    margin-right: 91.66666667%;
+  }
+
+  .g-xxl-0,
+.gx-xxl-0 {
+    --bs-gutter-x: 0;
+  }
+
+  .g-xxl-0,
+.gy-xxl-0 {
+    --bs-gutter-y: 0;
+  }
+
+  .g-xxl-1,
+.gx-xxl-1 {
+    --bs-gutter-x: 0.25rem;
+  }
+
+  .g-xxl-1,
+.gy-xxl-1 {
+    --bs-gutter-y: 0.25rem;
+  }
+
+  .g-xxl-2,
+.gx-xxl-2 {
+    --bs-gutter-x: 0.5rem;
+  }
+
+  .g-xxl-2,
+.gy-xxl-2 {
+    --bs-gutter-y: 0.5rem;
+  }
+
+  .g-xxl-3,
+.gx-xxl-3 {
+    --bs-gutter-x: 1rem;
+  }
+
+  .g-xxl-3,
+.gy-xxl-3 {
+    --bs-gutter-y: 1rem;
+  }
+
+  .g-xxl-4,
+.gx-xxl-4 {
+    --bs-gutter-x: 1.5rem;
+  }
+
+  .g-xxl-4,
+.gy-xxl-4 {
+    --bs-gutter-y: 1.5rem;
+  }
+
+  .g-xxl-5,
+.gx-xxl-5 {
+    --bs-gutter-x: 3rem;
+  }
+
+  .g-xxl-5,
+.gy-xxl-5 {
+    --bs-gutter-y: 3rem;
+  }
+}
+.table {
+  --bs-table-bg: transparent;
+  --bs-table-accent-bg: transparent;
+  --bs-table-striped-color: #212529;
+  --bs-table-striped-bg: rgba(0, 0, 0, 0.05);
+  --bs-table-active-color: #212529;
+  --bs-table-active-bg: rgba(0, 0, 0, 0.1);
+  --bs-table-hover-color: #212529;
+  --bs-table-hover-bg: rgba(0, 0, 0, 0.075);
+  width: 100%;
+  margin-bottom: 1rem;
+  color: #212529;
+  vertical-align: top;
+  border-color: #dee2e6;
+}
+.table > :not(caption) > * > * {
+  padding: 0.5rem 0.5rem;
+  background-color: var(--bs-table-bg);
+  border-bottom-width: 1px;
+  box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg);
+}
+.table > tbody {
+  vertical-align: inherit;
+}
+.table > thead {
+  vertical-align: bottom;
+}
+.table > :not(:last-child) > :last-child > * {
+  border-bottom-color: currentColor;
+}
+
+.caption-top {
+  caption-side: top;
+}
+
+.table-sm > :not(caption) > * > * {
+  padding: 0.25rem 0.25rem;
+}
+
+.table-bordered > :not(caption) > * {
+  border-width: 1px 0;
+}
+.table-bordered > :not(caption) > * > * {
+  border-width: 0 1px;
+}
+
+.table-borderless > :not(caption) > * > * {
+  border-bottom-width: 0;
+}
+
+.table-striped > tbody > tr:nth-of-type(odd) {
+  --bs-table-accent-bg: var(--bs-table-striped-bg);
+  color: var(--bs-table-striped-color);
+}
+
+.table-active {
+  --bs-table-accent-bg: var(--bs-table-active-bg);
+  color: var(--bs-table-active-color);
+}
+
+.table-hover > tbody > tr:hover {
+  --bs-table-accent-bg: var(--bs-table-hover-bg);
+  color: var(--bs-table-hover-color);
+}
+
+.table-primary {
+  --bs-table-bg: #cfe2ff;
+  --bs-table-striped-bg: #c5d7f2;
+  --bs-table-striped-color: #000;
+  --bs-table-active-bg: #bacbe6;
+  --bs-table-active-color: #000;
+  --bs-table-hover-bg: #bfd1ec;
+  --bs-table-hover-color: #000;
+  color: #000;
+  border-color: #bacbe6;
+}
+
+.table-secondary {
+  --bs-table-bg: #e2e3e5;
+  --bs-table-striped-bg: #d7d8da;
+  --bs-table-striped-color: #000;
+  --bs-table-active-bg: #cbccce;
+  --bs-table-active-color: #000;
+  --bs-table-hover-bg: #d1d2d4;
+  --bs-table-hover-color: #000;
+  color: #000;
+  border-color: #cbccce;
+}
+
+.table-success {
+  --bs-table-bg: #d1e7dd;
+  --bs-table-striped-bg: #c7dbd2;
+  --bs-table-striped-color: #000;
+  --bs-table-active-bg: #bcd0c7;
+  --bs-table-active-color: #000;
+  --bs-table-hover-bg: #c1d6cc;
+  --bs-table-hover-color: #000;
+  color: #000;
+  border-color: #bcd0c7;
+}
+
+.table-info {
+  --bs-table-bg: #cff4fc;
+  --bs-table-striped-bg: #c5e8ef;
+  --bs-table-striped-color: #000;
+  --bs-table-active-bg: #badce3;
+  --bs-table-active-color: #000;
+  --bs-table-hover-bg: #bfe2e9;
+  --bs-table-hover-color: #000;
+  color: #000;
+  border-color: #badce3;
+}
+
+.table-warning {
+  --bs-table-bg: #fff3cd;
+  --bs-table-striped-bg: #f2e7c3;
+  --bs-table-striped-color: #000;
+  --bs-table-active-bg: #e6dbb9;
+  --bs-table-active-color: #000;
+  --bs-table-hover-bg: #ece1be;
+  --bs-table-hover-color: #000;
+  color: #000;
+  border-color: #e6dbb9;
+}
+
+.table-danger {
+  --bs-table-bg: #f8d7da;
+  --bs-table-striped-bg: #eccccf;
+  --bs-table-striped-color: #000;
+  --bs-table-active-bg: #dfc2c4;
+  --bs-table-active-color: #000;
+  --bs-table-hover-bg: #e5c7ca;
+  --bs-table-hover-color: #000;
+  color: #000;
+  border-color: #dfc2c4;
+}
+
+.table-light {
+  --bs-table-bg: #f8f9fa;
+  --bs-table-striped-bg: #ecedee;
+  --bs-table-striped-color: #000;
+  --bs-table-active-bg: #dfe0e1;
+  --bs-table-active-color: #000;
+  --bs-table-hover-bg: #e5e6e7;
+  --bs-table-hover-color: #000;
+  color: #000;
+  border-color: #dfe0e1;
+}
+
+.table-dark {
+  --bs-table-bg: #212529;
+  --bs-table-striped-bg: #2c3034;
+  --bs-table-striped-color: #fff;
+  --bs-table-active-bg: #373b3e;
+  --bs-table-active-color: #fff;
+  --bs-table-hover-bg: #323539;
+  --bs-table-hover-color: #fff;
+  color: #fff;
+  border-color: #373b3e;
+}
+
+.table-responsive {
+  overflow-x: auto;
+  -webkit-overflow-scrolling: touch;
+}
+
+@media (max-width: 575.98px) {
+  .table-responsive-sm {
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch;
+  }
+}
+@media (max-width: 767.98px) {
+  .table-responsive-md {
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch;
+  }
+}
+@media (max-width: 991.98px) {
+  .table-responsive-lg {
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch;
+  }
+}
+@media (max-width: 1199.98px) {
+  .table-responsive-xl {
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch;
+  }
+}
+@media (max-width: 1399.98px) {
+  .table-responsive-xxl {
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch;
+  }
+}
+.form-label {
+  margin-bottom: 0.5rem;
+}
+
+.col-form-label {
+  padding-top: calc(0.375rem + 1px);
+  padding-bottom: calc(0.375rem + 1px);
+  margin-bottom: 0;
+  font-size: inherit;
+  line-height: 1.5;
+}
+
+.col-form-label-lg {
+  padding-top: calc(0.5rem + 1px);
+  padding-bottom: calc(0.5rem + 1px);
+  font-size: 1.25rem;
+}
+
+.col-form-label-sm {
+  padding-top: calc(0.25rem + 1px);
+  padding-bottom: calc(0.25rem + 1px);
+  font-size: 0.875rem;
+}
+
+.form-text {
+  margin-top: 0.25rem;
+  font-size: 0.875em;
+  color: #6c757d;
+}
+
+.form-control {
+  display: block;
+  width: 100%;
+  padding: 0.375rem 0.75rem;
+  font-size: 1rem;
+  font-weight: 400;
+  line-height: 1.5;
+  color: #212529;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid #ced4da;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+  border-radius: 0.25rem;
+  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-control {
+    transition: none;
+  }
+}
+.form-control[type=file] {
+  overflow: hidden;
+}
+.form-control[type=file]:not(:disabled):not([readonly]) {
+  cursor: pointer;
+}
+.form-control:focus {
+  color: #212529;
+  background-color: #fff;
+  border-color: #86b7fe;
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-control::-webkit-date-and-time-value {
+  height: 1.5em;
+}
+.form-control::-moz-placeholder {
+  color: #6c757d;
+  opacity: 1;
+}
+.form-control::placeholder {
+  color: #6c757d;
+  opacity: 1;
+}
+.form-control:disabled, .form-control[readonly] {
+  background-color: #e9ecef;
+  opacity: 1;
+}
+.form-control::file-selector-button {
+  padding: 0.375rem 0.75rem;
+  margin: -0.375rem -0.75rem;
+  -webkit-margin-end: 0.75rem;
+  margin-inline-end: 0.75rem;
+  color: #212529;
+  background-color: #e9ecef;
+  pointer-events: none;
+  border-color: inherit;
+  border-style: solid;
+  border-width: 0;
+  border-inline-end-width: 1px;
+  border-radius: 0;
+  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-control::file-selector-button {
+    transition: none;
+  }
+}
+.form-control:hover:not(:disabled):not([readonly])::file-selector-button {
+  background-color: #dde0e3;
+}
+.form-control::-webkit-file-upload-button {
+  padding: 0.375rem 0.75rem;
+  margin: -0.375rem -0.75rem;
+  -webkit-margin-end: 0.75rem;
+  margin-inline-end: 0.75rem;
+  color: #212529;
+  background-color: #e9ecef;
+  pointer-events: none;
+  border-color: inherit;
+  border-style: solid;
+  border-width: 0;
+  border-inline-end-width: 1px;
+  border-radius: 0;
+  -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-control::-webkit-file-upload-button {
+    -webkit-transition: none;
+    transition: none;
+  }
+}
+.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {
+  background-color: #dde0e3;
+}
+
+.form-control-plaintext {
+  display: block;
+  width: 100%;
+  padding: 0.375rem 0;
+  margin-bottom: 0;
+  line-height: 1.5;
+  color: #212529;
+  background-color: transparent;
+  border: solid transparent;
+  border-width: 1px 0;
+}
+.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {
+  padding-left: 0;
+  padding-right: 0;
+}
+
+.form-control-sm {
+  min-height: calc(1.5em + 0.5rem + 2px);
+  padding: 0.25rem 0.5rem;
+  font-size: 0.875rem;
+  border-radius: 0.2rem;
+}
+.form-control-sm::file-selector-button {
+  padding: 0.25rem 0.5rem;
+  margin: -0.25rem -0.5rem;
+  -webkit-margin-end: 0.5rem;
+  margin-inline-end: 0.5rem;
+}
+.form-control-sm::-webkit-file-upload-button {
+  padding: 0.25rem 0.5rem;
+  margin: -0.25rem -0.5rem;
+  -webkit-margin-end: 0.5rem;
+  margin-inline-end: 0.5rem;
+}
+
+.form-control-lg {
+  min-height: calc(1.5em + 1rem + 2px);
+  padding: 0.5rem 1rem;
+  font-size: 1.25rem;
+  border-radius: 0.3rem;
+}
+.form-control-lg::file-selector-button {
+  padding: 0.5rem 1rem;
+  margin: -0.5rem -1rem;
+  -webkit-margin-end: 1rem;
+  margin-inline-end: 1rem;
+}
+.form-control-lg::-webkit-file-upload-button {
+  padding: 0.5rem 1rem;
+  margin: -0.5rem -1rem;
+  -webkit-margin-end: 1rem;
+  margin-inline-end: 1rem;
+}
+
+textarea.form-control {
+  min-height: calc(1.5em + 0.75rem + 2px);
+}
+textarea.form-control-sm {
+  min-height: calc(1.5em + 0.5rem + 2px);
+}
+textarea.form-control-lg {
+  min-height: calc(1.5em + 1rem + 2px);
+}
+
+.form-control-color {
+  width: 3rem;
+  height: auto;
+  padding: 0.375rem;
+}
+.form-control-color:not(:disabled):not([readonly]) {
+  cursor: pointer;
+}
+.form-control-color::-moz-color-swatch {
+  height: 1.5em;
+  border-radius: 0.25rem;
+}
+.form-control-color::-webkit-color-swatch {
+  height: 1.5em;
+  border-radius: 0.25rem;
+}
+
+.form-select {
+  display: block;
+  width: 100%;
+  padding: 0.375rem 0.75rem 0.375rem 2.25rem;
+  -moz-padding-start: calc(0.75rem - 3px);
+  font-size: 1rem;
+  font-weight: 400;
+  line-height: 1.5;
+  color: #212529;
+  background-color: #fff;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-position: left 0.75rem center;
+  background-size: 16px 12px;
+  border: 1px solid #ced4da;
+  border-radius: 0.25rem;
+  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-select {
+    transition: none;
+  }
+}
+.form-select:focus {
+  border-color: #86b7fe;
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-select[multiple], .form-select[size]:not([size="1"]) {
+  padding-left: 0.75rem;
+  background-image: none;
+}
+.form-select:disabled {
+  background-color: #e9ecef;
+}
+.form-select:-moz-focusring {
+  color: transparent;
+  text-shadow: 0 0 0 #212529;
+}
+
+.form-select-sm {
+  padding-top: 0.25rem;
+  padding-bottom: 0.25rem;
+  padding-right: 0.5rem;
+  font-size: 0.875rem;
+}
+
+.form-select-lg {
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  padding-right: 1rem;
+  font-size: 1.25rem;
+}
+
+.form-check {
+  display: block;
+  min-height: 1.5rem;
+  padding-right: 1.5em;
+  margin-bottom: 0.125rem;
+}
+.form-check .form-check-input {
+  float: right;
+  margin-right: -1.5em;
+}
+
+.form-check-input {
+  width: 1em;
+  height: 1em;
+  margin-top: 0.25em;
+  vertical-align: top;
+  background-color: #fff;
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: contain;
+  border: 1px solid rgba(0, 0, 0, 0.25);
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+  -webkit-print-color-adjust: exact;
+  color-adjust: exact;
+}
+.form-check-input[type=checkbox] {
+  border-radius: 0.25em;
+}
+.form-check-input[type=radio] {
+  border-radius: 50%;
+}
+.form-check-input:active {
+  filter: brightness(90%);
+}
+.form-check-input:focus {
+  border-color: #86b7fe;
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-check-input:checked {
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+}
+.form-check-input:checked[type=checkbox] {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e");
+}
+.form-check-input:checked[type=radio] {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e");
+}
+.form-check-input[type=checkbox]:indeterminate {
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e");
+}
+.form-check-input:disabled {
+  pointer-events: none;
+  filter: none;
+  opacity: 0.5;
+}
+.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {
+  opacity: 0.5;
+}
+
+.form-switch {
+  padding-right: 2.5em;
+}
+.form-switch .form-check-input {
+  width: 2em;
+  margin-right: -2.5em;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");
+  background-position: right center;
+  border-radius: 2em;
+  transition: background-position 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-switch .form-check-input {
+    transition: none;
+  }
+}
+.form-switch .form-check-input:focus {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e");
+}
+.form-switch .form-check-input:checked {
+  background-position: left center;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
+}
+
+.form-check-inline {
+  display: inline-block;
+  margin-left: 1rem;
+}
+
+.btn-check {
+  position: absolute;
+  clip: rect(0, 0, 0, 0);
+  pointer-events: none;
+}
+.btn-check[disabled] + .btn, .btn-check:disabled + .btn {
+  pointer-events: none;
+  filter: none;
+  opacity: 0.65;
+}
+
+.form-range {
+  width: 100%;
+  height: 1.5rem;
+  padding: 0;
+  background-color: transparent;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+}
+.form-range:focus {
+  outline: 0;
+}
+.form-range:focus::-webkit-slider-thumb {
+  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-range:focus::-moz-range-thumb {
+  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-range::-moz-focus-outer {
+  border: 0;
+}
+.form-range::-webkit-slider-thumb {
+  width: 1rem;
+  height: 1rem;
+  margin-top: -0.25rem;
+  background-color: #0d6efd;
+  border: 0;
+  border-radius: 1rem;
+  -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+  -webkit-appearance: none;
+  appearance: none;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-range::-webkit-slider-thumb {
+    -webkit-transition: none;
+    transition: none;
+  }
+}
+.form-range::-webkit-slider-thumb:active {
+  background-color: #b6d4fe;
+}
+.form-range::-webkit-slider-runnable-track {
+  width: 100%;
+  height: 0.5rem;
+  color: transparent;
+  cursor: pointer;
+  background-color: #dee2e6;
+  border-color: transparent;
+  border-radius: 1rem;
+}
+.form-range::-moz-range-thumb {
+  width: 1rem;
+  height: 1rem;
+  background-color: #0d6efd;
+  border: 0;
+  border-radius: 1rem;
+  -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+  -moz-appearance: none;
+  appearance: none;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-range::-moz-range-thumb {
+    -moz-transition: none;
+    transition: none;
+  }
+}
+.form-range::-moz-range-thumb:active {
+  background-color: #b6d4fe;
+}
+.form-range::-moz-range-track {
+  width: 100%;
+  height: 0.5rem;
+  color: transparent;
+  cursor: pointer;
+  background-color: #dee2e6;
+  border-color: transparent;
+  border-radius: 1rem;
+}
+.form-range:disabled {
+  pointer-events: none;
+}
+.form-range:disabled::-webkit-slider-thumb {
+  background-color: #adb5bd;
+}
+.form-range:disabled::-moz-range-thumb {
+  background-color: #adb5bd;
+}
+
+.form-floating {
+  position: relative;
+}
+.form-floating > .form-control,
+.form-floating > .form-select {
+  height: calc(3.5rem + 2px);
+  line-height: 1.25;
+}
+.form-floating > label {
+  position: absolute;
+  top: 0;
+  right: 0;
+  height: 100%;
+  padding: 1rem 0.75rem;
+  pointer-events: none;
+  border: 1px solid transparent;
+  transform-origin: 100% 0;
+  transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .form-floating > label {
+    transition: none;
+  }
+}
+.form-floating > .form-control {
+  padding: 1rem 0.75rem;
+}
+.form-floating > .form-control::-moz-placeholder {
+  color: transparent;
+}
+.form-floating > .form-control::placeholder {
+  color: transparent;
+}
+.form-floating > .form-control:not(:-moz-placeholder-shown) {
+  padding-top: 1.625rem;
+  padding-bottom: 0.625rem;
+}
+.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown) {
+  padding-top: 1.625rem;
+  padding-bottom: 0.625rem;
+}
+.form-floating > .form-control:-webkit-autofill {
+  padding-top: 1.625rem;
+  padding-bottom: 0.625rem;
+}
+.form-floating > .form-select {
+  padding-top: 1.625rem;
+  padding-bottom: 0.625rem;
+}
+.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {
+  opacity: 0.65;
+  transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem);
+}
+.form-floating > .form-control:focus ~ label,
+.form-floating > .form-control:not(:placeholder-shown) ~ label,
+.form-floating > .form-select ~ label {
+  opacity: 0.65;
+  transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem);
+}
+.form-floating > .form-control:-webkit-autofill ~ label {
+  opacity: 0.65;
+  transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem);
+}
+
+.input-group {
+  position: relative;
+  display: flex;
+  flex-wrap: wrap;
+  align-items: stretch;
+  width: 100%;
+}
+.input-group > .form-control,
+.input-group > .form-select {
+  position: relative;
+  flex: 1 1 auto;
+  width: 1%;
+  min-width: 0;
+}
+.input-group > .form-control:focus,
+.input-group > .form-select:focus {
+  z-index: 3;
+}
+.input-group .btn {
+  position: relative;
+  z-index: 2;
+}
+.input-group .btn:focus {
+  z-index: 3;
+}
+
+.input-group-text {
+  display: flex;
+  align-items: center;
+  padding: 0.375rem 0.75rem;
+  font-size: 1rem;
+  font-weight: 400;
+  line-height: 1.5;
+  color: #212529;
+  text-align: center;
+  white-space: nowrap;
+  background-color: #e9ecef;
+  border: 1px solid #ced4da;
+  border-radius: 0.25rem;
+}
+
+.input-group-lg > .form-control,
+.input-group-lg > .form-select,
+.input-group-lg > .input-group-text,
+.input-group-lg > .btn {
+  padding: 0.5rem 1rem;
+  font-size: 1.25rem;
+  border-radius: 0.3rem;
+}
+
+.input-group-sm > .form-control,
+.input-group-sm > .form-select,
+.input-group-sm > .input-group-text,
+.input-group-sm > .btn {
+  padding: 0.25rem 0.5rem;
+  font-size: 0.875rem;
+  border-radius: 0.2rem;
+}
+
+.input-group-lg > .form-select,
+.input-group-sm > .form-select {
+  padding-left: 3rem;
+}
+
+.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),
+.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),
+.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {
+  margin-right: -1px;
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+
+.valid-feedback {
+  display: none;
+  width: 100%;
+  margin-top: 0.25rem;
+  font-size: 0.875em;
+  color: #198754;
+}
+
+.valid-tooltip {
+  position: absolute;
+  top: 100%;
+  z-index: 5;
+  display: none;
+  max-width: 100%;
+  padding: 0.25rem 0.5rem;
+  margin-top: 0.1rem;
+  font-size: 0.875rem;
+  color: #fff;
+  background-color: rgba(25, 135, 84, 0.9);
+  border-radius: 0.25rem;
+}
+
+.was-validated :valid ~ .valid-feedback,
+.was-validated :valid ~ .valid-tooltip,
+.is-valid ~ .valid-feedback,
+.is-valid ~ .valid-tooltip {
+  display: block;
+}
+
+.was-validated .form-control:valid, .form-control.is-valid {
+  border-color: #198754;
+  padding-left: calc(1.5em + 0.75rem);
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-position: left calc(0.375em + 0.1875rem) center;
+  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
+  border-color: #198754;
+  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
+}
+
+.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
+  padding-left: calc(1.5em + 0.75rem);
+  background-position: top calc(0.375em + 0.1875rem) left calc(0.375em + 0.1875rem);
+}
+
+.was-validated .form-select:valid, .form-select.is-valid {
+  border-color: #198754;
+}
+.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] {
+  padding-left: 4.125rem;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+  background-position: left 0.75rem center, center left 2.25rem;
+  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-select:valid:focus, .form-select.is-valid:focus {
+  border-color: #198754;
+  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
+}
+
+.was-validated .form-check-input:valid, .form-check-input.is-valid {
+  border-color: #198754;
+}
+.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {
+  background-color: #198754;
+}
+.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {
+  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);
+}
+.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
+  color: #198754;
+}
+
+.form-check-inline .form-check-input ~ .valid-feedback {
+  margin-right: 0.5em;
+}
+
+.was-validated .input-group .form-control:valid, .input-group .form-control.is-valid,
+.was-validated .input-group .form-select:valid,
+.input-group .form-select.is-valid {
+  z-index: 1;
+}
+.was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus,
+.was-validated .input-group .form-select:valid:focus,
+.input-group .form-select.is-valid:focus {
+  z-index: 3;
+}
+
+.invalid-feedback {
+  display: none;
+  width: 100%;
+  margin-top: 0.25rem;
+  font-size: 0.875em;
+  color: #dc3545;
+}
+
+.invalid-tooltip {
+  position: absolute;
+  top: 100%;
+  z-index: 5;
+  display: none;
+  max-width: 100%;
+  padding: 0.25rem 0.5rem;
+  margin-top: 0.1rem;
+  font-size: 0.875rem;
+  color: #fff;
+  background-color: rgba(220, 53, 69, 0.9);
+  border-radius: 0.25rem;
+}
+
+.was-validated :invalid ~ .invalid-feedback,
+.was-validated :invalid ~ .invalid-tooltip,
+.is-invalid ~ .invalid-feedback,
+.is-invalid ~ .invalid-tooltip {
+  display: block;
+}
+
+.was-validated .form-control:invalid, .form-control.is-invalid {
+  border-color: #dc3545;
+  padding-left: calc(1.5em + 0.75rem);
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-position: left calc(0.375em + 0.1875rem) center;
+  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
+  border-color: #dc3545;
+  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
+}
+
+.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
+  padding-left: calc(1.5em + 0.75rem);
+  background-position: top calc(0.375em + 0.1875rem) left calc(0.375em + 0.1875rem);
+}
+
+.was-validated .form-select:invalid, .form-select.is-invalid {
+  border-color: #dc3545;
+}
+.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] {
+  padding-left: 4.125rem;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
+  background-position: left 0.75rem center, center left 2.25rem;
+  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {
+  border-color: #dc3545;
+  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
+}
+
+.was-validated .form-check-input:invalid, .form-check-input.is-invalid {
+  border-color: #dc3545;
+}
+.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {
+  background-color: #dc3545;
+}
+.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {
+  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
+}
+.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
+  color: #dc3545;
+}
+
+.form-check-inline .form-check-input ~ .invalid-feedback {
+  margin-right: 0.5em;
+}
+
+.was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid,
+.was-validated .input-group .form-select:invalid,
+.input-group .form-select.is-invalid {
+  z-index: 2;
+}
+.was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus,
+.was-validated .input-group .form-select:invalid:focus,
+.input-group .form-select.is-invalid:focus {
+  z-index: 3;
+}
+
+.btn {
+  display: inline-block;
+  font-weight: 400;
+  line-height: 1.5;
+  color: #212529;
+  text-align: center;
+  text-decoration: none;
+  vertical-align: middle;
+  cursor: pointer;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  user-select: none;
+  background-color: transparent;
+  border: 1px solid transparent;
+  padding: 0.375rem 0.75rem;
+  font-size: 1rem;
+  border-radius: 0.25rem;
+  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .btn {
+    transition: none;
+  }
+}
+.btn:hover {
+  color: #212529;
+}
+.btn-check:focus + .btn, .btn:focus {
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.btn:disabled, .btn.disabled, fieldset:disabled .btn {
+  pointer-events: none;
+  opacity: 0.65;
+}
+
+.btn-primary {
+  color: #fff;
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+}
+.btn-primary:hover {
+  color: #fff;
+  background-color: #0b5ed7;
+  border-color: #0a58ca;
+}
+.btn-check:focus + .btn-primary, .btn-primary:focus {
+  color: #fff;
+  background-color: #0b5ed7;
+  border-color: #0a58ca;
+  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);
+}
+.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle {
+  color: #fff;
+  background-color: #0a58ca;
+  border-color: #0a53be;
+}
+.btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);
+}
+.btn-primary:disabled, .btn-primary.disabled {
+  color: #fff;
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+}
+
+.btn-secondary {
+  color: #fff;
+  background-color: #6c757d;
+  border-color: #6c757d;
+}
+.btn-secondary:hover {
+  color: #fff;
+  background-color: #5c636a;
+  border-color: #565e64;
+}
+.btn-check:focus + .btn-secondary, .btn-secondary:focus {
+  color: #fff;
+  background-color: #5c636a;
+  border-color: #565e64;
+  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);
+}
+.btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle {
+  color: #fff;
+  background-color: #565e64;
+  border-color: #51585e;
+}
+.btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);
+}
+.btn-secondary:disabled, .btn-secondary.disabled {
+  color: #fff;
+  background-color: #6c757d;
+  border-color: #6c757d;
+}
+
+.btn-success {
+  color: #fff;
+  background-color: #198754;
+  border-color: #198754;
+}
+.btn-success:hover {
+  color: #fff;
+  background-color: #157347;
+  border-color: #146c43;
+}
+.btn-check:focus + .btn-success, .btn-success:focus {
+  color: #fff;
+  background-color: #157347;
+  border-color: #146c43;
+  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);
+}
+.btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle {
+  color: #fff;
+  background-color: #146c43;
+  border-color: #13653f;
+}
+.btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);
+}
+.btn-success:disabled, .btn-success.disabled {
+  color: #fff;
+  background-color: #198754;
+  border-color: #198754;
+}
+
+.btn-info {
+  color: #000;
+  background-color: #0dcaf0;
+  border-color: #0dcaf0;
+}
+.btn-info:hover {
+  color: #000;
+  background-color: #31d2f2;
+  border-color: #25cff2;
+}
+.btn-check:focus + .btn-info, .btn-info:focus {
+  color: #000;
+  background-color: #31d2f2;
+  border-color: #25cff2;
+  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);
+}
+.btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle {
+  color: #000;
+  background-color: #3dd5f3;
+  border-color: #25cff2;
+}
+.btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);
+}
+.btn-info:disabled, .btn-info.disabled {
+  color: #000;
+  background-color: #0dcaf0;
+  border-color: #0dcaf0;
+}
+
+.btn-warning {
+  color: #000;
+  background-color: #ffc107;
+  border-color: #ffc107;
+}
+.btn-warning:hover {
+  color: #000;
+  background-color: #ffca2c;
+  border-color: #ffc720;
+}
+.btn-check:focus + .btn-warning, .btn-warning:focus {
+  color: #000;
+  background-color: #ffca2c;
+  border-color: #ffc720;
+  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);
+}
+.btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle {
+  color: #000;
+  background-color: #ffcd39;
+  border-color: #ffc720;
+}
+.btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);
+}
+.btn-warning:disabled, .btn-warning.disabled {
+  color: #000;
+  background-color: #ffc107;
+  border-color: #ffc107;
+}
+
+.btn-danger {
+  color: #fff;
+  background-color: #dc3545;
+  border-color: #dc3545;
+}
+.btn-danger:hover {
+  color: #fff;
+  background-color: #bb2d3b;
+  border-color: #b02a37;
+}
+.btn-check:focus + .btn-danger, .btn-danger:focus {
+  color: #fff;
+  background-color: #bb2d3b;
+  border-color: #b02a37;
+  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);
+}
+.btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle {
+  color: #fff;
+  background-color: #b02a37;
+  border-color: #a52834;
+}
+.btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);
+}
+.btn-danger:disabled, .btn-danger.disabled {
+  color: #fff;
+  background-color: #dc3545;
+  border-color: #dc3545;
+}
+
+.btn-light {
+  color: #000;
+  background-color: #f8f9fa;
+  border-color: #f8f9fa;
+}
+.btn-light:hover {
+  color: #000;
+  background-color: #f9fafb;
+  border-color: #f9fafb;
+}
+.btn-check:focus + .btn-light, .btn-light:focus {
+  color: #000;
+  background-color: #f9fafb;
+  border-color: #f9fafb;
+  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);
+}
+.btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle {
+  color: #000;
+  background-color: #f9fafb;
+  border-color: #f9fafb;
+}
+.btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);
+}
+.btn-light:disabled, .btn-light.disabled {
+  color: #000;
+  background-color: #f8f9fa;
+  border-color: #f8f9fa;
+}
+
+.btn-dark {
+  color: #fff;
+  background-color: #212529;
+  border-color: #212529;
+}
+.btn-dark:hover {
+  color: #fff;
+  background-color: #1c1f23;
+  border-color: #1a1e21;
+}
+.btn-check:focus + .btn-dark, .btn-dark:focus {
+  color: #fff;
+  background-color: #1c1f23;
+  border-color: #1a1e21;
+  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);
+}
+.btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle {
+  color: #fff;
+  background-color: #1a1e21;
+  border-color: #191c1f;
+}
+.btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus {
+  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);
+}
+.btn-dark:disabled, .btn-dark.disabled {
+  color: #fff;
+  background-color: #212529;
+  border-color: #212529;
+}
+
+.btn-outline-primary {
+  color: #0d6efd;
+  border-color: #0d6efd;
+}
+.btn-outline-primary:hover {
+  color: #fff;
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+}
+.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus {
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);
+}
+.btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show {
+  color: #fff;
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+}
+.btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);
+}
+.btn-outline-primary:disabled, .btn-outline-primary.disabled {
+  color: #0d6efd;
+  background-color: transparent;
+}
+
+.btn-outline-secondary {
+  color: #6c757d;
+  border-color: #6c757d;
+}
+.btn-outline-secondary:hover {
+  color: #fff;
+  background-color: #6c757d;
+  border-color: #6c757d;
+}
+.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus {
+  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);
+}
+.btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show {
+  color: #fff;
+  background-color: #6c757d;
+  border-color: #6c757d;
+}
+.btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);
+}
+.btn-outline-secondary:disabled, .btn-outline-secondary.disabled {
+  color: #6c757d;
+  background-color: transparent;
+}
+
+.btn-outline-success {
+  color: #198754;
+  border-color: #198754;
+}
+.btn-outline-success:hover {
+  color: #fff;
+  background-color: #198754;
+  border-color: #198754;
+}
+.btn-check:focus + .btn-outline-success, .btn-outline-success:focus {
+  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);
+}
+.btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show {
+  color: #fff;
+  background-color: #198754;
+  border-color: #198754;
+}
+.btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);
+}
+.btn-outline-success:disabled, .btn-outline-success.disabled {
+  color: #198754;
+  background-color: transparent;
+}
+
+.btn-outline-info {
+  color: #0dcaf0;
+  border-color: #0dcaf0;
+}
+.btn-outline-info:hover {
+  color: #000;
+  background-color: #0dcaf0;
+  border-color: #0dcaf0;
+}
+.btn-check:focus + .btn-outline-info, .btn-outline-info:focus {
+  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);
+}
+.btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show {
+  color: #000;
+  background-color: #0dcaf0;
+  border-color: #0dcaf0;
+}
+.btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);
+}
+.btn-outline-info:disabled, .btn-outline-info.disabled {
+  color: #0dcaf0;
+  background-color: transparent;
+}
+
+.btn-outline-warning {
+  color: #ffc107;
+  border-color: #ffc107;
+}
+.btn-outline-warning:hover {
+  color: #000;
+  background-color: #ffc107;
+  border-color: #ffc107;
+}
+.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus {
+  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);
+}
+.btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show {
+  color: #000;
+  background-color: #ffc107;
+  border-color: #ffc107;
+}
+.btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);
+}
+.btn-outline-warning:disabled, .btn-outline-warning.disabled {
+  color: #ffc107;
+  background-color: transparent;
+}
+
+.btn-outline-danger {
+  color: #dc3545;
+  border-color: #dc3545;
+}
+.btn-outline-danger:hover {
+  color: #fff;
+  background-color: #dc3545;
+  border-color: #dc3545;
+}
+.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus {
+  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);
+}
+.btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show {
+  color: #fff;
+  background-color: #dc3545;
+  border-color: #dc3545;
+}
+.btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);
+}
+.btn-outline-danger:disabled, .btn-outline-danger.disabled {
+  color: #dc3545;
+  background-color: transparent;
+}
+
+.btn-outline-light {
+  color: #f8f9fa;
+  border-color: #f8f9fa;
+}
+.btn-outline-light:hover {
+  color: #000;
+  background-color: #f8f9fa;
+  border-color: #f8f9fa;
+}
+.btn-check:focus + .btn-outline-light, .btn-outline-light:focus {
+  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);
+}
+.btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show {
+  color: #000;
+  background-color: #f8f9fa;
+  border-color: #f8f9fa;
+}
+.btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);
+}
+.btn-outline-light:disabled, .btn-outline-light.disabled {
+  color: #f8f9fa;
+  background-color: transparent;
+}
+
+.btn-outline-dark {
+  color: #212529;
+  border-color: #212529;
+}
+.btn-outline-dark:hover {
+  color: #fff;
+  background-color: #212529;
+  border-color: #212529;
+}
+.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus {
+  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);
+}
+.btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show {
+  color: #fff;
+  background-color: #212529;
+  border-color: #212529;
+}
+.btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus {
+  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);
+}
+.btn-outline-dark:disabled, .btn-outline-dark.disabled {
+  color: #212529;
+  background-color: transparent;
+}
+
+.btn-link {
+  font-weight: 400;
+  color: #0d6efd;
+  text-decoration: underline;
+}
+.btn-link:hover {
+  color: #0a58ca;
+}
+.btn-link:disabled, .btn-link.disabled {
+  color: #6c757d;
+}
+
+.btn-lg, .btn-group-lg > .btn {
+  padding: 0.5rem 1rem;
+  font-size: 1.25rem;
+  border-radius: 0.3rem;
+}
+
+.btn-sm, .btn-group-sm > .btn {
+  padding: 0.25rem 0.5rem;
+  font-size: 0.875rem;
+  border-radius: 0.2rem;
+}
+
+.fade {
+  transition: opacity 0.15s linear;
+}
+@media (prefers-reduced-motion: reduce) {
+  .fade {
+    transition: none;
+  }
+}
+.fade:not(.show) {
+  opacity: 0;
+}
+
+.collapse:not(.show) {
+  display: none;
+}
+
+.collapsing {
+  height: 0;
+  overflow: hidden;
+  transition: height 0.35s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+  .collapsing {
+    transition: none;
+  }
+}
+.collapsing.collapse-horizontal {
+  width: 0;
+  height: auto;
+  transition: width 0.35s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+  .collapsing.collapse-horizontal {
+    transition: none;
+  }
+}
+
+.dropup,
+.dropend,
+.dropdown,
+.dropstart {
+  position: relative;
+}
+
+.dropdown-toggle {
+  white-space: nowrap;
+}
+.dropdown-toggle::after {
+  display: inline-block;
+  margin-right: 0.255em;
+  vertical-align: 0.255em;
+  content: "";
+  border-top: 0.3em solid;
+  border-left: 0.3em solid transparent;
+  border-bottom: 0;
+  border-right: 0.3em solid transparent;
+}
+.dropdown-toggle:empty::after {
+  margin-right: 0;
+}
+
+.dropdown-menu {
+  position: absolute;
+  z-index: 1000;
+  display: none;
+  min-width: 10rem;
+  padding: 0.5rem 0;
+  margin: 0;
+  font-size: 1rem;
+  color: #212529;
+  text-align: right;
+  list-style: none;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 0.25rem;
+}
+.dropdown-menu[data-bs-popper] {
+  top: 100%;
+  right: 0;
+  margin-top: 0.125rem;
+}
+
+.dropdown-menu-start {
+  --bs-position: start;
+}
+.dropdown-menu-start[data-bs-popper] {
+  left: auto;
+  right: 0;
+}
+
+.dropdown-menu-end {
+  --bs-position: end;
+}
+.dropdown-menu-end[data-bs-popper] {
+  left: 0;
+  right: auto;
+}
+
+@media (min-width: 576px) {
+  .dropdown-menu-sm-start {
+    --bs-position: start;
+  }
+  .dropdown-menu-sm-start[data-bs-popper] {
+    left: auto;
+    right: 0;
+  }
+
+  .dropdown-menu-sm-end {
+    --bs-position: end;
+  }
+  .dropdown-menu-sm-end[data-bs-popper] {
+    left: 0;
+    right: auto;
+  }
+}
+@media (min-width: 768px) {
+  .dropdown-menu-md-start {
+    --bs-position: start;
+  }
+  .dropdown-menu-md-start[data-bs-popper] {
+    left: auto;
+    right: 0;
+  }
+
+  .dropdown-menu-md-end {
+    --bs-position: end;
+  }
+  .dropdown-menu-md-end[data-bs-popper] {
+    left: 0;
+    right: auto;
+  }
+}
+@media (min-width: 992px) {
+  .dropdown-menu-lg-start {
+    --bs-position: start;
+  }
+  .dropdown-menu-lg-start[data-bs-popper] {
+    left: auto;
+    right: 0;
+  }
+
+  .dropdown-menu-lg-end {
+    --bs-position: end;
+  }
+  .dropdown-menu-lg-end[data-bs-popper] {
+    left: 0;
+    right: auto;
+  }
+}
+@media (min-width: 1200px) {
+  .dropdown-menu-xl-start {
+    --bs-position: start;
+  }
+  .dropdown-menu-xl-start[data-bs-popper] {
+    left: auto;
+    right: 0;
+  }
+
+  .dropdown-menu-xl-end {
+    --bs-position: end;
+  }
+  .dropdown-menu-xl-end[data-bs-popper] {
+    left: 0;
+    right: auto;
+  }
+}
+@media (min-width: 1400px) {
+  .dropdown-menu-xxl-start {
+    --bs-position: start;
+  }
+  .dropdown-menu-xxl-start[data-bs-popper] {
+    left: auto;
+    right: 0;
+  }
+
+  .dropdown-menu-xxl-end {
+    --bs-position: end;
+  }
+  .dropdown-menu-xxl-end[data-bs-popper] {
+    left: 0;
+    right: auto;
+  }
+}
+.dropup .dropdown-menu[data-bs-popper] {
+  top: auto;
+  bottom: 100%;
+  margin-top: 0;
+  margin-bottom: 0.125rem;
+}
+.dropup .dropdown-toggle::after {
+  display: inline-block;
+  margin-right: 0.255em;
+  vertical-align: 0.255em;
+  content: "";
+  border-top: 0;
+  border-left: 0.3em solid transparent;
+  border-bottom: 0.3em solid;
+  border-right: 0.3em solid transparent;
+}
+.dropup .dropdown-toggle:empty::after {
+  margin-right: 0;
+}
+
+.dropend .dropdown-menu[data-bs-popper] {
+  top: 0;
+  left: auto;
+  right: 100%;
+  margin-top: 0;
+  margin-right: 0.125rem;
+}
+.dropend .dropdown-toggle::after {
+  display: inline-block;
+  margin-right: 0.255em;
+  vertical-align: 0.255em;
+  content: "";
+  border-top: 0.3em solid transparent;
+  border-left: 0;
+  border-bottom: 0.3em solid transparent;
+  border-right: 0.3em solid;
+}
+.dropend .dropdown-toggle:empty::after {
+  margin-right: 0;
+}
+.dropend .dropdown-toggle::after {
+  vertical-align: 0;
+}
+
+.dropstart .dropdown-menu[data-bs-popper] {
+  top: 0;
+  left: 100%;
+  right: auto;
+  margin-top: 0;
+  margin-left: 0.125rem;
+}
+.dropstart .dropdown-toggle::after {
+  display: inline-block;
+  margin-right: 0.255em;
+  vertical-align: 0.255em;
+  content: "";
+}
+.dropstart .dropdown-toggle::after {
+  display: none;
+}
+.dropstart .dropdown-toggle::before {
+  display: inline-block;
+  margin-left: 0.255em;
+  vertical-align: 0.255em;
+  content: "";
+  border-top: 0.3em solid transparent;
+  border-left: 0.3em solid;
+  border-bottom: 0.3em solid transparent;
+}
+.dropstart .dropdown-toggle:empty::after {
+  margin-right: 0;
+}
+.dropstart .dropdown-toggle::before {
+  vertical-align: 0;
+}
+
+.dropdown-divider {
+  height: 0;
+  margin: 0.5rem 0;
+  overflow: hidden;
+  border-top: 1px solid rgba(0, 0, 0, 0.15);
+}
+
+.dropdown-item {
+  display: block;
+  width: 100%;
+  padding: 0.25rem 1rem;
+  clear: both;
+  font-weight: 400;
+  color: #212529;
+  text-align: inherit;
+  text-decoration: none;
+  white-space: nowrap;
+  background-color: transparent;
+  border: 0;
+}
+.dropdown-item:hover, .dropdown-item:focus {
+  color: #1e2125;
+  background-color: #e9ecef;
+}
+.dropdown-item.active, .dropdown-item:active {
+  color: #fff;
+  text-decoration: none;
+  background-color: #0d6efd;
+}
+.dropdown-item.disabled, .dropdown-item:disabled {
+  color: #adb5bd;
+  pointer-events: none;
+  background-color: transparent;
+}
+
+.dropdown-menu.show {
+  display: block;
+}
+
+.dropdown-header {
+  display: block;
+  padding: 0.5rem 1rem;
+  margin-bottom: 0;
+  font-size: 0.875rem;
+  color: #6c757d;
+  white-space: nowrap;
+}
+
+.dropdown-item-text {
+  display: block;
+  padding: 0.25rem 1rem;
+  color: #212529;
+}
+
+.dropdown-menu-dark {
+  color: #dee2e6;
+  background-color: #343a40;
+  border-color: rgba(0, 0, 0, 0.15);
+}
+.dropdown-menu-dark .dropdown-item {
+  color: #dee2e6;
+}
+.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus {
+  color: #fff;
+  background-color: rgba(255, 255, 255, 0.15);
+}
+.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active {
+  color: #fff;
+  background-color: #0d6efd;
+}
+.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled {
+  color: #adb5bd;
+}
+.dropdown-menu-dark .dropdown-divider {
+  border-color: rgba(0, 0, 0, 0.15);
+}
+.dropdown-menu-dark .dropdown-item-text {
+  color: #dee2e6;
+}
+.dropdown-menu-dark .dropdown-header {
+  color: #adb5bd;
+}
+
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-flex;
+  vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+  position: relative;
+  flex: 1 1 auto;
+}
+.btn-group > .btn-check:checked + .btn,
+.btn-group > .btn-check:focus + .btn,
+.btn-group > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn-check:checked + .btn,
+.btn-group-vertical > .btn-check:focus + .btn,
+.btn-group-vertical > .btn:hover,
+.btn-group-vertical > .btn:focus,
+.btn-group-vertical > .btn:active,
+.btn-group-vertical > .btn.active {
+  z-index: 1;
+}
+
+.btn-toolbar {
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: flex-start;
+}
+.btn-toolbar .input-group {
+  width: auto;
+}
+
+.btn-group > .btn:not(:first-child),
+.btn-group > .btn-group:not(:first-child) {
+  margin-right: -1px;
+}
+.btn-group > .btn:not(:last-child):not(.dropdown-toggle),
+.btn-group > .btn-group:not(:last-child) > .btn {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group > .btn:nth-child(n+3),
+.btn-group > :not(.btn-check) + .btn,
+.btn-group > .btn-group:not(:first-child) > .btn {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+
+.dropdown-toggle-split {
+  padding-left: 0.5625rem;
+  padding-right: 0.5625rem;
+}
+.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {
+  margin-right: 0;
+}
+.dropstart .dropdown-toggle-split::before {
+  margin-left: 0;
+}
+
+.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {
+  padding-left: 0.375rem;
+  padding-right: 0.375rem;
+}
+
+.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {
+  padding-left: 0.75rem;
+  padding-right: 0.75rem;
+}
+
+.btn-group-vertical {
+  flex-direction: column;
+  align-items: flex-start;
+  justify-content: center;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group {
+  width: 100%;
+}
+.btn-group-vertical > .btn:not(:first-child),
+.btn-group-vertical > .btn-group:not(:first-child) {
+  margin-top: -1px;
+}
+.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
+.btn-group-vertical > .btn-group:not(:last-child) > .btn {
+  border-bottom-left-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.btn-group-vertical > .btn ~ .btn,
+.btn-group-vertical > .btn-group:not(:first-child) > .btn {
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+
+.nav {
+  display: flex;
+  flex-wrap: wrap;
+  padding-right: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+
+.nav-link {
+  display: block;
+  padding: 0.5rem 1rem;
+  color: #0d6efd;
+  text-decoration: none;
+  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .nav-link {
+    transition: none;
+  }
+}
+.nav-link:hover, .nav-link:focus {
+  color: #0a58ca;
+}
+.nav-link.disabled {
+  color: #6c757d;
+  pointer-events: none;
+  cursor: default;
+}
+
+.nav-tabs {
+  border-bottom: 1px solid #dee2e6;
+}
+.nav-tabs .nav-link {
+  margin-bottom: -1px;
+  background: none;
+  border: 1px solid transparent;
+  border-top-right-radius: 0.25rem;
+  border-top-left-radius: 0.25rem;
+}
+.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {
+  border-color: #e9ecef #e9ecef #dee2e6;
+  isolation: isolate;
+}
+.nav-tabs .nav-link.disabled {
+  color: #6c757d;
+  background-color: transparent;
+  border-color: transparent;
+}
+.nav-tabs .nav-link.active,
+.nav-tabs .nav-item.show .nav-link {
+  color: #495057;
+  background-color: #fff;
+  border-color: #dee2e6 #dee2e6 #fff;
+}
+.nav-tabs .dropdown-menu {
+  margin-top: -1px;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+
+.nav-pills .nav-link {
+  background: none;
+  border: 0;
+  border-radius: 0.25rem;
+}
+.nav-pills .nav-link.active,
+.nav-pills .show > .nav-link {
+  color: #fff;
+  background-color: #0d6efd;
+}
+
+.nav-fill > .nav-link,
+.nav-fill .nav-item {
+  flex: 1 1 auto;
+  text-align: center;
+}
+
+.nav-justified > .nav-link,
+.nav-justified .nav-item {
+  flex-basis: 0;
+  flex-grow: 1;
+  text-align: center;
+}
+
+.nav-fill .nav-item .nav-link,
+.nav-justified .nav-item .nav-link {
+  width: 100%;
+}
+
+.tab-content > .tab-pane {
+  display: none;
+}
+.tab-content > .active {
+  display: block;
+}
+
+.navbar {
+  position: relative;
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+  justify-content: space-between;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+}
+.navbar > .container,
+.navbar > .container-fluid,
+.navbar > .container-sm,
+.navbar > .container-md,
+.navbar > .container-lg,
+.navbar > .container-xl,
+.navbar > .container-xxl {
+  display: flex;
+  flex-wrap: inherit;
+  align-items: center;
+  justify-content: space-between;
+}
+.navbar-brand {
+  padding-top: 0.3125rem;
+  padding-bottom: 0.3125rem;
+  margin-left: 1rem;
+  font-size: 1.25rem;
+  text-decoration: none;
+  white-space: nowrap;
+}
+.navbar-nav {
+  display: flex;
+  flex-direction: column;
+  padding-right: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+.navbar-nav .nav-link {
+  padding-left: 0;
+  padding-right: 0;
+}
+.navbar-nav .dropdown-menu {
+  position: static;
+}
+
+.navbar-text {
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+}
+
+.navbar-collapse {
+  flex-basis: 100%;
+  flex-grow: 1;
+  align-items: center;
+}
+
+.navbar-toggler {
+  padding: 0.25rem 0.75rem;
+  font-size: 1.25rem;
+  line-height: 1;
+  background-color: transparent;
+  border: 1px solid transparent;
+  border-radius: 0.25rem;
+  transition: box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .navbar-toggler {
+    transition: none;
+  }
+}
+.navbar-toggler:hover {
+  text-decoration: none;
+}
+.navbar-toggler:focus {
+  text-decoration: none;
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem;
+}
+
+.navbar-toggler-icon {
+  display: inline-block;
+  width: 1.5em;
+  height: 1.5em;
+  vertical-align: middle;
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 100%;
+}
+
+.navbar-nav-scroll {
+  max-height: var(--bs-scroll-height, 75vh);
+  overflow-y: auto;
+}
+
+@media (min-width: 576px) {
+  .navbar-expand-sm {
+    flex-wrap: nowrap;
+    justify-content: flex-start;
+  }
+  .navbar-expand-sm .navbar-nav {
+    flex-direction: row;
+  }
+  .navbar-expand-sm .navbar-nav .dropdown-menu {
+    position: absolute;
+  }
+  .navbar-expand-sm .navbar-nav .nav-link {
+    padding-left: 0.5rem;
+    padding-right: 0.5rem;
+  }
+  .navbar-expand-sm .navbar-nav-scroll {
+    overflow: visible;
+  }
+  .navbar-expand-sm .navbar-collapse {
+    display: flex !important;
+    flex-basis: auto;
+  }
+  .navbar-expand-sm .navbar-toggler {
+    display: none;
+  }
+  .navbar-expand-sm .offcanvas-header {
+    display: none;
+  }
+  .navbar-expand-sm .offcanvas {
+    position: inherit;
+    bottom: 0;
+    z-index: 1000;
+    flex-grow: 1;
+    visibility: visible !important;
+    background-color: transparent;
+    border-left: 0;
+    border-right: 0;
+    transition: none;
+    transform: none;
+  }
+  .navbar-expand-sm .offcanvas-top,
+.navbar-expand-sm .offcanvas-bottom {
+    height: auto;
+    border-top: 0;
+    border-bottom: 0;
+  }
+  .navbar-expand-sm .offcanvas-body {
+    display: flex;
+    flex-grow: 0;
+    padding: 0;
+    overflow-y: visible;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-expand-md {
+    flex-wrap: nowrap;
+    justify-content: flex-start;
+  }
+  .navbar-expand-md .navbar-nav {
+    flex-direction: row;
+  }
+  .navbar-expand-md .navbar-nav .dropdown-menu {
+    position: absolute;
+  }
+  .navbar-expand-md .navbar-nav .nav-link {
+    padding-left: 0.5rem;
+    padding-right: 0.5rem;
+  }
+  .navbar-expand-md .navbar-nav-scroll {
+    overflow: visible;
+  }
+  .navbar-expand-md .navbar-collapse {
+    display: flex !important;
+    flex-basis: auto;
+  }
+  .navbar-expand-md .navbar-toggler {
+    display: none;
+  }
+  .navbar-expand-md .offcanvas-header {
+    display: none;
+  }
+  .navbar-expand-md .offcanvas {
+    position: inherit;
+    bottom: 0;
+    z-index: 1000;
+    flex-grow: 1;
+    visibility: visible !important;
+    background-color: transparent;
+    border-left: 0;
+    border-right: 0;
+    transition: none;
+    transform: none;
+  }
+  .navbar-expand-md .offcanvas-top,
+.navbar-expand-md .offcanvas-bottom {
+    height: auto;
+    border-top: 0;
+    border-bottom: 0;
+  }
+  .navbar-expand-md .offcanvas-body {
+    display: flex;
+    flex-grow: 0;
+    padding: 0;
+    overflow-y: visible;
+  }
+}
+@media (min-width: 992px) {
+  .navbar-expand-lg {
+    flex-wrap: nowrap;
+    justify-content: flex-start;
+  }
+  .navbar-expand-lg .navbar-nav {
+    flex-direction: row;
+  }
+  .navbar-expand-lg .navbar-nav .dropdown-menu {
+    position: absolute;
+  }
+  .navbar-expand-lg .navbar-nav .nav-link {
+    padding-left: 0.5rem;
+    padding-right: 0.5rem;
+  }
+  .navbar-expand-lg .navbar-nav-scroll {
+    overflow: visible;
+  }
+  .navbar-expand-lg .navbar-collapse {
+    display: flex !important;
+    flex-basis: auto;
+  }
+  .navbar-expand-lg .navbar-toggler {
+    display: none;
+  }
+  .navbar-expand-lg .offcanvas-header {
+    display: none;
+  }
+  .navbar-expand-lg .offcanvas {
+    position: inherit;
+    bottom: 0;
+    z-index: 1000;
+    flex-grow: 1;
+    visibility: visible !important;
+    background-color: transparent;
+    border-left: 0;
+    border-right: 0;
+    transition: none;
+    transform: none;
+  }
+  .navbar-expand-lg .offcanvas-top,
+.navbar-expand-lg .offcanvas-bottom {
+    height: auto;
+    border-top: 0;
+    border-bottom: 0;
+  }
+  .navbar-expand-lg .offcanvas-body {
+    display: flex;
+    flex-grow: 0;
+    padding: 0;
+    overflow-y: visible;
+  }
+}
+@media (min-width: 1200px) {
+  .navbar-expand-xl {
+    flex-wrap: nowrap;
+    justify-content: flex-start;
+  }
+  .navbar-expand-xl .navbar-nav {
+    flex-direction: row;
+  }
+  .navbar-expand-xl .navbar-nav .dropdown-menu {
+    position: absolute;
+  }
+  .navbar-expand-xl .navbar-nav .nav-link {
+    padding-left: 0.5rem;
+    padding-right: 0.5rem;
+  }
+  .navbar-expand-xl .navbar-nav-scroll {
+    overflow: visible;
+  }
+  .navbar-expand-xl .navbar-collapse {
+    display: flex !important;
+    flex-basis: auto;
+  }
+  .navbar-expand-xl .navbar-toggler {
+    display: none;
+  }
+  .navbar-expand-xl .offcanvas-header {
+    display: none;
+  }
+  .navbar-expand-xl .offcanvas {
+    position: inherit;
+    bottom: 0;
+    z-index: 1000;
+    flex-grow: 1;
+    visibility: visible !important;
+    background-color: transparent;
+    border-left: 0;
+    border-right: 0;
+    transition: none;
+    transform: none;
+  }
+  .navbar-expand-xl .offcanvas-top,
+.navbar-expand-xl .offcanvas-bottom {
+    height: auto;
+    border-top: 0;
+    border-bottom: 0;
+  }
+  .navbar-expand-xl .offcanvas-body {
+    display: flex;
+    flex-grow: 0;
+    padding: 0;
+    overflow-y: visible;
+  }
+}
+@media (min-width: 1400px) {
+  .navbar-expand-xxl {
+    flex-wrap: nowrap;
+    justify-content: flex-start;
+  }
+  .navbar-expand-xxl .navbar-nav {
+    flex-direction: row;
+  }
+  .navbar-expand-xxl .navbar-nav .dropdown-menu {
+    position: absolute;
+  }
+  .navbar-expand-xxl .navbar-nav .nav-link {
+    padding-left: 0.5rem;
+    padding-right: 0.5rem;
+  }
+  .navbar-expand-xxl .navbar-nav-scroll {
+    overflow: visible;
+  }
+  .navbar-expand-xxl .navbar-collapse {
+    display: flex !important;
+    flex-basis: auto;
+  }
+  .navbar-expand-xxl .navbar-toggler {
+    display: none;
+  }
+  .navbar-expand-xxl .offcanvas-header {
+    display: none;
+  }
+  .navbar-expand-xxl .offcanvas {
+    position: inherit;
+    bottom: 0;
+    z-index: 1000;
+    flex-grow: 1;
+    visibility: visible !important;
+    background-color: transparent;
+    border-left: 0;
+    border-right: 0;
+    transition: none;
+    transform: none;
+  }
+  .navbar-expand-xxl .offcanvas-top,
+.navbar-expand-xxl .offcanvas-bottom {
+    height: auto;
+    border-top: 0;
+    border-bottom: 0;
+  }
+  .navbar-expand-xxl .offcanvas-body {
+    display: flex;
+    flex-grow: 0;
+    padding: 0;
+    overflow-y: visible;
+  }
+}
+.navbar-expand {
+  flex-wrap: nowrap;
+  justify-content: flex-start;
+}
+.navbar-expand .navbar-nav {
+  flex-direction: row;
+}
+.navbar-expand .navbar-nav .dropdown-menu {
+  position: absolute;
+}
+.navbar-expand .navbar-nav .nav-link {
+  padding-left: 0.5rem;
+  padding-right: 0.5rem;
+}
+.navbar-expand .navbar-nav-scroll {
+  overflow: visible;
+}
+.navbar-expand .navbar-collapse {
+  display: flex !important;
+  flex-basis: auto;
+}
+.navbar-expand .navbar-toggler {
+  display: none;
+}
+.navbar-expand .offcanvas-header {
+  display: none;
+}
+.navbar-expand .offcanvas {
+  position: inherit;
+  bottom: 0;
+  z-index: 1000;
+  flex-grow: 1;
+  visibility: visible !important;
+  background-color: transparent;
+  border-left: 0;
+  border-right: 0;
+  transition: none;
+  transform: none;
+}
+.navbar-expand .offcanvas-top,
+.navbar-expand .offcanvas-bottom {
+  height: auto;
+  border-top: 0;
+  border-bottom: 0;
+}
+.navbar-expand .offcanvas-body {
+  display: flex;
+  flex-grow: 0;
+  padding: 0;
+  overflow-y: visible;
+}
+
+.navbar-light .navbar-brand {
+  color: rgba(0, 0, 0, 0.9);
+}
+.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {
+  color: rgba(0, 0, 0, 0.9);
+}
+.navbar-light .navbar-nav .nav-link {
+  color: rgba(0, 0, 0, 0.55);
+}
+.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {
+  color: rgba(0, 0, 0, 0.7);
+}
+.navbar-light .navbar-nav .nav-link.disabled {
+  color: rgba(0, 0, 0, 0.3);
+}
+.navbar-light .navbar-nav .show > .nav-link,
+.navbar-light .navbar-nav .nav-link.active {
+  color: rgba(0, 0, 0, 0.9);
+}
+.navbar-light .navbar-toggler {
+  color: rgba(0, 0, 0, 0.55);
+  border-color: rgba(0, 0, 0, 0.1);
+}
+.navbar-light .navbar-toggler-icon {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+}
+.navbar-light .navbar-text {
+  color: rgba(0, 0, 0, 0.55);
+}
+.navbar-light .navbar-text a,
+.navbar-light .navbar-text a:hover,
+.navbar-light .navbar-text a:focus {
+  color: rgba(0, 0, 0, 0.9);
+}
+
+.navbar-dark .navbar-brand {
+  color: #fff;
+}
+.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {
+  color: #fff;
+}
+.navbar-dark .navbar-nav .nav-link {
+  color: rgba(255, 255, 255, 0.55);
+}
+.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {
+  color: rgba(255, 255, 255, 0.75);
+}
+.navbar-dark .navbar-nav .nav-link.disabled {
+  color: rgba(255, 255, 255, 0.25);
+}
+.navbar-dark .navbar-nav .show > .nav-link,
+.navbar-dark .navbar-nav .nav-link.active {
+  color: #fff;
+}
+.navbar-dark .navbar-toggler {
+  color: rgba(255, 255, 255, 0.55);
+  border-color: rgba(255, 255, 255, 0.1);
+}
+.navbar-dark .navbar-toggler-icon {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+}
+.navbar-dark .navbar-text {
+  color: rgba(255, 255, 255, 0.55);
+}
+.navbar-dark .navbar-text a,
+.navbar-dark .navbar-text a:hover,
+.navbar-dark .navbar-text a:focus {
+  color: #fff;
+}
+
+.card {
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  min-width: 0;
+  word-wrap: break-word;
+  background-color: #fff;
+  background-clip: border-box;
+  border: 1px solid rgba(0, 0, 0, 0.125);
+  border-radius: 0.25rem;
+}
+.card > hr {
+  margin-left: 0;
+  margin-right: 0;
+}
+.card > .list-group {
+  border-top: inherit;
+  border-bottom: inherit;
+}
+.card > .list-group:first-child {
+  border-top-width: 0;
+  border-top-right-radius: calc(0.25rem - 1px);
+  border-top-left-radius: calc(0.25rem - 1px);
+}
+.card > .list-group:last-child {
+  border-bottom-width: 0;
+  border-bottom-left-radius: calc(0.25rem - 1px);
+  border-bottom-right-radius: calc(0.25rem - 1px);
+}
+.card > .card-header + .list-group,
+.card > .list-group + .card-footer {
+  border-top: 0;
+}
+
+.card-body {
+  flex: 1 1 auto;
+  padding: 1rem 1rem;
+}
+
+.card-title {
+  margin-bottom: 0.5rem;
+}
+
+.card-subtitle {
+  margin-top: -0.25rem;
+  margin-bottom: 0;
+}
+
+.card-text:last-child {
+  margin-bottom: 0;
+}
+
+.card-link + .card-link {
+  margin-right: 1rem;
+}
+
+.card-header {
+  padding: 0.5rem 1rem;
+  margin-bottom: 0;
+  background-color: rgba(0, 0, 0, 0.03);
+  border-bottom: 1px solid rgba(0, 0, 0, 0.125);
+}
+.card-header:first-child {
+  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
+}
+
+.card-footer {
+  padding: 0.5rem 1rem;
+  background-color: rgba(0, 0, 0, 0.03);
+  border-top: 1px solid rgba(0, 0, 0, 0.125);
+}
+.card-footer:last-child {
+  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);
+}
+
+.card-header-tabs {
+  margin-left: -0.5rem;
+  margin-bottom: -0.5rem;
+  margin-right: -0.5rem;
+  border-bottom: 0;
+}
+
+.card-header-pills {
+  margin-left: -0.5rem;
+  margin-right: -0.5rem;
+}
+
+.card-img-overlay {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  padding: 1rem;
+  border-radius: calc(0.25rem - 1px);
+}
+
+.card-img,
+.card-img-top,
+.card-img-bottom {
+  width: 100%;
+}
+
+.card-img,
+.card-img-top {
+  border-top-right-radius: calc(0.25rem - 1px);
+  border-top-left-radius: calc(0.25rem - 1px);
+}
+
+.card-img,
+.card-img-bottom {
+  border-bottom-left-radius: calc(0.25rem - 1px);
+  border-bottom-right-radius: calc(0.25rem - 1px);
+}
+
+.card-group > .card {
+  margin-bottom: 0.75rem;
+}
+@media (min-width: 576px) {
+  .card-group {
+    display: flex;
+    flex-flow: row wrap;
+  }
+  .card-group > .card {
+    flex: 1 0 0%;
+    margin-bottom: 0;
+  }
+  .card-group > .card + .card {
+    margin-right: 0;
+    border-right: 0;
+  }
+  .card-group > .card:not(:last-child) {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+  }
+  .card-group > .card:not(:last-child) .card-img-top,
+.card-group > .card:not(:last-child) .card-header {
+    border-top-left-radius: 0;
+  }
+  .card-group > .card:not(:last-child) .card-img-bottom,
+.card-group > .card:not(:last-child) .card-footer {
+    border-bottom-left-radius: 0;
+  }
+  .card-group > .card:not(:first-child) {
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+  }
+  .card-group > .card:not(:first-child) .card-img-top,
+.card-group > .card:not(:first-child) .card-header {
+    border-top-right-radius: 0;
+  }
+  .card-group > .card:not(:first-child) .card-img-bottom,
+.card-group > .card:not(:first-child) .card-footer {
+    border-bottom-right-radius: 0;
+  }
+}
+
+.accordion-button {
+  position: relative;
+  display: flex;
+  align-items: center;
+  width: 100%;
+  padding: 1rem 1.25rem;
+  font-size: 1rem;
+  color: #212529;
+  text-align: right;
+  background-color: #fff;
+  border: 0;
+  border-radius: 0;
+  overflow-anchor: none;
+  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+  .accordion-button {
+    transition: none;
+  }
+}
+.accordion-button:not(.collapsed) {
+  color: #0c63e4;
+  background-color: #e7f1ff;
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125);
+}
+.accordion-button:not(.collapsed)::after {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+  transform: rotate(180deg);
+}
+.accordion-button::after {
+  flex-shrink: 0;
+  width: 1.25rem;
+  height: 1.25rem;
+  margin-right: auto;
+  content: "";
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-size: 1.25rem;
+  transition: transform 0.2s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .accordion-button::after {
+    transition: none;
+  }
+}
+.accordion-button:hover {
+  z-index: 2;
+}
+.accordion-button:focus {
+  z-index: 3;
+  border-color: #86b7fe;
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+
+.accordion-header {
+  margin-bottom: 0;
+}
+
+.accordion-item {
+  background-color: #fff;
+  border: 1px solid rgba(0, 0, 0, 0.125);
+}
+.accordion-item:first-of-type {
+  border-top-right-radius: 0.25rem;
+  border-top-left-radius: 0.25rem;
+}
+.accordion-item:first-of-type .accordion-button {
+  border-top-right-radius: calc(0.25rem - 1px);
+  border-top-left-radius: calc(0.25rem - 1px);
+}
+.accordion-item:not(:first-of-type) {
+  border-top: 0;
+}
+.accordion-item:last-of-type {
+  border-bottom-left-radius: 0.25rem;
+  border-bottom-right-radius: 0.25rem;
+}
+.accordion-item:last-of-type .accordion-button.collapsed {
+  border-bottom-left-radius: calc(0.25rem - 1px);
+  border-bottom-right-radius: calc(0.25rem - 1px);
+}
+.accordion-item:last-of-type .accordion-collapse {
+  border-bottom-left-radius: 0.25rem;
+  border-bottom-right-radius: 0.25rem;
+}
+
+.accordion-body {
+  padding: 1rem 1.25rem;
+}
+
+.accordion-flush .accordion-collapse {
+  border-width: 0;
+}
+.accordion-flush .accordion-item {
+  border-left: 0;
+  border-right: 0;
+  border-radius: 0;
+}
+.accordion-flush .accordion-item:first-child {
+  border-top: 0;
+}
+.accordion-flush .accordion-item:last-child {
+  border-bottom: 0;
+}
+.accordion-flush .accordion-item .accordion-button {
+  border-radius: 0;
+}
+
+.breadcrumb {
+  display: flex;
+  flex-wrap: wrap;
+  padding: 0 0;
+  margin-bottom: 1rem;
+  list-style: none;
+}
+
+.breadcrumb-item + .breadcrumb-item {
+  padding-right: 0.5rem;
+}
+.breadcrumb-item + .breadcrumb-item::before {
+  float: right;
+  padding-left: 0.5rem;
+  color: #6c757d;
+  content:  var(--bs-breadcrumb-divider, "/") ;
+}
+.breadcrumb-item.active {
+  color: #6c757d;
+}
+
+.pagination {
+  display: flex;
+  padding-right: 0;
+  list-style: none;
+}
+
+.page-link {
+  position: relative;
+  display: block;
+  color: #0d6efd;
+  text-decoration: none;
+  background-color: #fff;
+  border: 1px solid #dee2e6;
+  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .page-link {
+    transition: none;
+  }
+}
+.page-link:hover {
+  z-index: 2;
+  color: #0a58ca;
+  background-color: #e9ecef;
+  border-color: #dee2e6;
+}
+.page-link:focus {
+  z-index: 3;
+  color: #0a58ca;
+  background-color: #e9ecef;
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+
+.page-item:not(:first-child) .page-link {
+  margin-right: -1px;
+}
+.page-item.active .page-link {
+  z-index: 3;
+  color: #fff;
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+}
+.page-item.disabled .page-link {
+  color: #6c757d;
+  pointer-events: none;
+  background-color: #fff;
+  border-color: #dee2e6;
+}
+
+.page-link {
+  padding: 0.375rem 0.75rem;
+}
+
+.page-item:first-child .page-link {
+  border-top-right-radius: 0.25rem;
+  border-bottom-right-radius: 0.25rem;
+}
+.page-item:last-child .page-link {
+  border-top-left-radius: 0.25rem;
+  border-bottom-left-radius: 0.25rem;
+}
+
+.pagination-lg .page-link {
+  padding: 0.75rem 1.5rem;
+  font-size: 1.25rem;
+}
+.pagination-lg .page-item:first-child .page-link {
+  border-top-right-radius: 0.3rem;
+  border-bottom-right-radius: 0.3rem;
+}
+.pagination-lg .page-item:last-child .page-link {
+  border-top-left-radius: 0.3rem;
+  border-bottom-left-radius: 0.3rem;
+}
+
+.pagination-sm .page-link {
+  padding: 0.25rem 0.5rem;
+  font-size: 0.875rem;
+}
+.pagination-sm .page-item:first-child .page-link {
+  border-top-right-radius: 0.2rem;
+  border-bottom-right-radius: 0.2rem;
+}
+.pagination-sm .page-item:last-child .page-link {
+  border-top-left-radius: 0.2rem;
+  border-bottom-left-radius: 0.2rem;
+}
+
+.badge {
+  display: inline-block;
+  padding: 0.35em 0.65em;
+  font-size: 0.75em;
+  font-weight: 700;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: 0.25rem;
+}
+.badge:empty {
+  display: none;
+}
+
+.btn .badge {
+  position: relative;
+  top: -1px;
+}
+
+.alert {
+  position: relative;
+  padding: 1rem 1rem;
+  margin-bottom: 1rem;
+  border: 1px solid transparent;
+  border-radius: 0.25rem;
+}
+
+.alert-heading {
+  color: inherit;
+}
+
+.alert-link {
+  font-weight: 700;
+}
+
+.alert-dismissible {
+  padding-left: 3rem;
+}
+.alert-dismissible .btn-close {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 2;
+  padding: 1.25rem 1rem;
+}
+
+.alert-primary {
+  color: #084298;
+  background-color: #cfe2ff;
+  border-color: #b6d4fe;
+}
+.alert-primary .alert-link {
+  color: #06357a;
+}
+
+.alert-secondary {
+  color: #41464b;
+  background-color: #e2e3e5;
+  border-color: #d3d6d8;
+}
+.alert-secondary .alert-link {
+  color: #34383c;
+}
+
+.alert-success {
+  color: #0f5132;
+  background-color: #d1e7dd;
+  border-color: #badbcc;
+}
+.alert-success .alert-link {
+  color: #0c4128;
+}
+
+.alert-info {
+  color: #055160;
+  background-color: #cff4fc;
+  border-color: #b6effb;
+}
+.alert-info .alert-link {
+  color: #04414d;
+}
+
+.alert-warning {
+  color: #664d03;
+  background-color: #fff3cd;
+  border-color: #ffecb5;
+}
+.alert-warning .alert-link {
+  color: #523e02;
+}
+
+.alert-danger {
+  color: #842029;
+  background-color: #f8d7da;
+  border-color: #f5c2c7;
+}
+.alert-danger .alert-link {
+  color: #6a1a21;
+}
+
+.alert-light {
+  color: #636464;
+  background-color: #fefefe;
+  border-color: #fdfdfe;
+}
+.alert-light .alert-link {
+  color: #4f5050;
+}
+
+.alert-dark {
+  color: #141619;
+  background-color: #d3d3d4;
+  border-color: #bcbebf;
+}
+.alert-dark .alert-link {
+  color: #101214;
+}
+
+@-webkit-keyframes progress-bar-stripes {
+  0% {
+    background-position-x: 1rem;
+  }
+}
+
+@keyframes progress-bar-stripes {
+  0% {
+    background-position-x: 1rem;
+  }
+}
+.progress {
+  display: flex;
+  height: 1rem;
+  overflow: hidden;
+  font-size: 0.75rem;
+  background-color: #e9ecef;
+  border-radius: 0.25rem;
+}
+
+.progress-bar {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  overflow: hidden;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  background-color: #0d6efd;
+  transition: width 0.6s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+  .progress-bar {
+    transition: none;
+  }
+}
+
+.progress-bar-striped {
+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-size: 1rem 1rem;
+}
+
+.progress-bar-animated {
+  -webkit-animation: 1s linear infinite progress-bar-stripes;
+  animation: 1s linear infinite progress-bar-stripes;
+}
+@media (prefers-reduced-motion: reduce) {
+  .progress-bar-animated {
+    -webkit-animation: none;
+    animation: none;
+  }
+}
+
+.list-group {
+  display: flex;
+  flex-direction: column;
+  padding-right: 0;
+  margin-bottom: 0;
+  border-radius: 0.25rem;
+}
+
+.list-group-numbered {
+  list-style-type: none;
+  counter-reset: section;
+}
+.list-group-numbered > li::before {
+  content: counters(section, ".") ". ";
+  counter-increment: section;
+}
+
+.list-group-item-action {
+  width: 100%;
+  color: #495057;
+  text-align: inherit;
+}
+.list-group-item-action:hover, .list-group-item-action:focus {
+  z-index: 1;
+  color: #495057;
+  text-decoration: none;
+  background-color: #f8f9fa;
+}
+.list-group-item-action:active {
+  color: #212529;
+  background-color: #e9ecef;
+}
+
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: 0.5rem 1rem;
+  color: #212529;
+  text-decoration: none;
+  background-color: #fff;
+  border: 1px solid rgba(0, 0, 0, 0.125);
+}
+.list-group-item:first-child {
+  border-top-right-radius: inherit;
+  border-top-left-radius: inherit;
+}
+.list-group-item:last-child {
+  border-bottom-left-radius: inherit;
+  border-bottom-right-radius: inherit;
+}
+.list-group-item.disabled, .list-group-item:disabled {
+  color: #6c757d;
+  pointer-events: none;
+  background-color: #fff;
+}
+.list-group-item.active {
+  z-index: 2;
+  color: #fff;
+  background-color: #0d6efd;
+  border-color: #0d6efd;
+}
+.list-group-item + .list-group-item {
+  border-top-width: 0;
+}
+.list-group-item + .list-group-item.active {
+  margin-top: -1px;
+  border-top-width: 1px;
+}
+
+.list-group-horizontal {
+  flex-direction: row;
+}
+.list-group-horizontal > .list-group-item:first-child {
+  border-bottom-right-radius: 0.25rem;
+  border-top-left-radius: 0;
+}
+.list-group-horizontal > .list-group-item:last-child {
+  border-top-left-radius: 0.25rem;
+  border-bottom-right-radius: 0;
+}
+.list-group-horizontal > .list-group-item.active {
+  margin-top: 0;
+}
+.list-group-horizontal > .list-group-item + .list-group-item {
+  border-top-width: 1px;
+  border-right-width: 0;
+}
+.list-group-horizontal > .list-group-item + .list-group-item.active {
+  margin-right: -1px;
+  border-right-width: 1px;
+}
+
+@media (min-width: 576px) {
+  .list-group-horizontal-sm {
+    flex-direction: row;
+  }
+  .list-group-horizontal-sm > .list-group-item:first-child {
+    border-bottom-right-radius: 0.25rem;
+    border-top-left-radius: 0;
+  }
+  .list-group-horizontal-sm > .list-group-item:last-child {
+    border-top-left-radius: 0.25rem;
+    border-bottom-right-radius: 0;
+  }
+  .list-group-horizontal-sm > .list-group-item.active {
+    margin-top: 0;
+  }
+  .list-group-horizontal-sm > .list-group-item + .list-group-item {
+    border-top-width: 1px;
+    border-right-width: 0;
+  }
+  .list-group-horizontal-sm > .list-group-item + .list-group-item.active {
+    margin-right: -1px;
+    border-right-width: 1px;
+  }
+}
+@media (min-width: 768px) {
+  .list-group-horizontal-md {
+    flex-direction: row;
+  }
+  .list-group-horizontal-md > .list-group-item:first-child {
+    border-bottom-right-radius: 0.25rem;
+    border-top-left-radius: 0;
+  }
+  .list-group-horizontal-md > .list-group-item:last-child {
+    border-top-left-radius: 0.25rem;
+    border-bottom-right-radius: 0;
+  }
+  .list-group-horizontal-md > .list-group-item.active {
+    margin-top: 0;
+  }
+  .list-group-horizontal-md > .list-group-item + .list-group-item {
+    border-top-width: 1px;
+    border-right-width: 0;
+  }
+  .list-group-horizontal-md > .list-group-item + .list-group-item.active {
+    margin-right: -1px;
+    border-right-width: 1px;
+  }
+}
+@media (min-width: 992px) {
+  .list-group-horizontal-lg {
+    flex-direction: row;
+  }
+  .list-group-horizontal-lg > .list-group-item:first-child {
+    border-bottom-right-radius: 0.25rem;
+    border-top-left-radius: 0;
+  }
+  .list-group-horizontal-lg > .list-group-item:last-child {
+    border-top-left-radius: 0.25rem;
+    border-bottom-right-radius: 0;
+  }
+  .list-group-horizontal-lg > .list-group-item.active {
+    margin-top: 0;
+  }
+  .list-group-horizontal-lg > .list-group-item + .list-group-item {
+    border-top-width: 1px;
+    border-right-width: 0;
+  }
+  .list-group-horizontal-lg > .list-group-item + .list-group-item.active {
+    margin-right: -1px;
+    border-right-width: 1px;
+  }
+}
+@media (min-width: 1200px) {
+  .list-group-horizontal-xl {
+    flex-direction: row;
+  }
+  .list-group-horizontal-xl > .list-group-item:first-child {
+    border-bottom-right-radius: 0.25rem;
+    border-top-left-radius: 0;
+  }
+  .list-group-horizontal-xl > .list-group-item:last-child {
+    border-top-left-radius: 0.25rem;
+    border-bottom-right-radius: 0;
+  }
+  .list-group-horizontal-xl > .list-group-item.active {
+    margin-top: 0;
+  }
+  .list-group-horizontal-xl > .list-group-item + .list-group-item {
+    border-top-width: 1px;
+    border-right-width: 0;
+  }
+  .list-group-horizontal-xl > .list-group-item + .list-group-item.active {
+    margin-right: -1px;
+    border-right-width: 1px;
+  }
+}
+@media (min-width: 1400px) {
+  .list-group-horizontal-xxl {
+    flex-direction: row;
+  }
+  .list-group-horizontal-xxl > .list-group-item:first-child {
+    border-bottom-right-radius: 0.25rem;
+    border-top-left-radius: 0;
+  }
+  .list-group-horizontal-xxl > .list-group-item:last-child {
+    border-top-left-radius: 0.25rem;
+    border-bottom-right-radius: 0;
+  }
+  .list-group-horizontal-xxl > .list-group-item.active {
+    margin-top: 0;
+  }
+  .list-group-horizontal-xxl > .list-group-item + .list-group-item {
+    border-top-width: 1px;
+    border-right-width: 0;
+  }
+  .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {
+    margin-right: -1px;
+    border-right-width: 1px;
+  }
+}
+.list-group-flush {
+  border-radius: 0;
+}
+.list-group-flush > .list-group-item {
+  border-width: 0 0 1px;
+}
+.list-group-flush > .list-group-item:last-child {
+  border-bottom-width: 0;
+}
+
+.list-group-item-primary {
+  color: #084298;
+  background-color: #cfe2ff;
+}
+.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {
+  color: #084298;
+  background-color: #bacbe6;
+}
+.list-group-item-primary.list-group-item-action.active {
+  color: #fff;
+  background-color: #084298;
+  border-color: #084298;
+}
+
+.list-group-item-secondary {
+  color: #41464b;
+  background-color: #e2e3e5;
+}
+.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {
+  color: #41464b;
+  background-color: #cbccce;
+}
+.list-group-item-secondary.list-group-item-action.active {
+  color: #fff;
+  background-color: #41464b;
+  border-color: #41464b;
+}
+
+.list-group-item-success {
+  color: #0f5132;
+  background-color: #d1e7dd;
+}
+.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {
+  color: #0f5132;
+  background-color: #bcd0c7;
+}
+.list-group-item-success.list-group-item-action.active {
+  color: #fff;
+  background-color: #0f5132;
+  border-color: #0f5132;
+}
+
+.list-group-item-info {
+  color: #055160;
+  background-color: #cff4fc;
+}
+.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {
+  color: #055160;
+  background-color: #badce3;
+}
+.list-group-item-info.list-group-item-action.active {
+  color: #fff;
+  background-color: #055160;
+  border-color: #055160;
+}
+
+.list-group-item-warning {
+  color: #664d03;
+  background-color: #fff3cd;
+}
+.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {
+  color: #664d03;
+  background-color: #e6dbb9;
+}
+.list-group-item-warning.list-group-item-action.active {
+  color: #fff;
+  background-color: #664d03;
+  border-color: #664d03;
+}
+
+.list-group-item-danger {
+  color: #842029;
+  background-color: #f8d7da;
+}
+.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {
+  color: #842029;
+  background-color: #dfc2c4;
+}
+.list-group-item-danger.list-group-item-action.active {
+  color: #fff;
+  background-color: #842029;
+  border-color: #842029;
+}
+
+.list-group-item-light {
+  color: #636464;
+  background-color: #fefefe;
+}
+.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {
+  color: #636464;
+  background-color: #e5e5e5;
+}
+.list-group-item-light.list-group-item-action.active {
+  color: #fff;
+  background-color: #636464;
+  border-color: #636464;
+}
+
+.list-group-item-dark {
+  color: #141619;
+  background-color: #d3d3d4;
+}
+.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {
+  color: #141619;
+  background-color: #bebebf;
+}
+.list-group-item-dark.list-group-item-action.active {
+  color: #fff;
+  background-color: #141619;
+  border-color: #141619;
+}
+
+.btn-close {
+  box-sizing: content-box;
+  width: 1em;
+  height: 1em;
+  padding: 0.25em 0.25em;
+  color: #000;
+  background: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;
+  border: 0;
+  border-radius: 0.25rem;
+  opacity: 0.5;
+}
+.btn-close:hover {
+  color: #000;
+  text-decoration: none;
+  opacity: 0.75;
+}
+.btn-close:focus {
+  outline: 0;
+  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+  opacity: 1;
+}
+.btn-close:disabled, .btn-close.disabled {
+  pointer-events: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  user-select: none;
+  opacity: 0.25;
+}
+
+.btn-close-white {
+  filter: invert(1) grayscale(100%) brightness(200%);
+}
+
+.toast {
+  width: 350px;
+  max-width: 100%;
+  font-size: 0.875rem;
+  pointer-events: auto;
+  background-color: rgba(255, 255, 255, 0.85);
+  background-clip: padding-box;
+  border: 1px solid rgba(0, 0, 0, 0.1);
+  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
+  border-radius: 0.25rem;
+}
+.toast.showing {
+  opacity: 0;
+}
+.toast:not(.show) {
+  display: none;
+}
+
+.toast-container {
+  width: -webkit-max-content;
+  width: -moz-max-content;
+  width: max-content;
+  max-width: 100%;
+  pointer-events: none;
+}
+.toast-container > :not(:last-child) {
+  margin-bottom: 0.75rem;
+}
+
+.toast-header {
+  display: flex;
+  align-items: center;
+  padding: 0.5rem 0.75rem;
+  color: #6c757d;
+  background-color: rgba(255, 255, 255, 0.85);
+  background-clip: padding-box;
+  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
+  border-top-right-radius: calc(0.25rem - 1px);
+  border-top-left-radius: calc(0.25rem - 1px);
+}
+.toast-header .btn-close {
+  margin-left: -0.375rem;
+  margin-right: 0.75rem;
+}
+
+.toast-body {
+  padding: 0.75rem;
+  word-wrap: break-word;
+}
+
+.modal {
+  position: fixed;
+  top: 0;
+  right: 0;
+  z-index: 1055;
+  display: none;
+  width: 100%;
+  height: 100%;
+  overflow-x: hidden;
+  overflow-y: auto;
+  outline: 0;
+}
+
+.modal-dialog {
+  position: relative;
+  width: auto;
+  margin: 0.5rem;
+  pointer-events: none;
+}
+.modal.fade .modal-dialog {
+  transition: transform 0.3s ease-out;
+  transform: translate(0, -50px);
+}
+@media (prefers-reduced-motion: reduce) {
+  .modal.fade .modal-dialog {
+    transition: none;
+  }
+}
+.modal.show .modal-dialog {
+  transform: none;
+}
+.modal.modal-static .modal-dialog {
+  transform: scale(1.02);
+}
+
+.modal-dialog-scrollable {
+  height: calc(100% - 1rem);
+}
+.modal-dialog-scrollable .modal-content {
+  max-height: 100%;
+  overflow: hidden;
+}
+.modal-dialog-scrollable .modal-body {
+  overflow-y: auto;
+}
+
+.modal-dialog-centered {
+  display: flex;
+  align-items: center;
+  min-height: calc(100% - 1rem);
+}
+
+.modal-content {
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  width: 100%;
+  pointer-events: auto;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  border-radius: 0.3rem;
+  outline: 0;
+}
+
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  z-index: 1050;
+  width: 100vw;
+  height: 100vh;
+  background-color: #000;
+}
+.modal-backdrop.fade {
+  opacity: 0;
+}
+.modal-backdrop.show {
+  opacity: 0.5;
+}
+
+.modal-header {
+  display: flex;
+  flex-shrink: 0;
+  align-items: center;
+  justify-content: space-between;
+  padding: 1rem 1rem;
+  border-bottom: 1px solid #dee2e6;
+  border-top-right-radius: calc(0.3rem - 1px);
+  border-top-left-radius: calc(0.3rem - 1px);
+}
+.modal-header .btn-close {
+  padding: 0.5rem 0.5rem;
+  margin: -0.5rem auto -0.5rem -0.5rem;
+}
+
+.modal-title {
+  margin-bottom: 0;
+  line-height: 1.5;
+}
+
+.modal-body {
+  position: relative;
+  flex: 1 1 auto;
+  padding: 1rem;
+}
+
+.modal-footer {
+  display: flex;
+  flex-wrap: wrap;
+  flex-shrink: 0;
+  align-items: center;
+  justify-content: flex-end;
+  padding: 0.75rem;
+  border-top: 1px solid #dee2e6;
+  border-bottom-left-radius: calc(0.3rem - 1px);
+  border-bottom-right-radius: calc(0.3rem - 1px);
+}
+.modal-footer > * {
+  margin: 0.25rem;
+}
+
+@media (min-width: 576px) {
+  .modal-dialog {
+    max-width: 500px;
+    margin: 1.75rem auto;
+  }
+
+  .modal-dialog-scrollable {
+    height: calc(100% - 3.5rem);
+  }
+
+  .modal-dialog-centered {
+    min-height: calc(100% - 3.5rem);
+  }
+
+  .modal-sm {
+    max-width: 300px;
+  }
+}
+@media (min-width: 992px) {
+  .modal-lg,
+.modal-xl {
+    max-width: 800px;
+  }
+}
+@media (min-width: 1200px) {
+  .modal-xl {
+    max-width: 1140px;
+  }
+}
+.modal-fullscreen {
+  width: 100vw;
+  max-width: none;
+  height: 100%;
+  margin: 0;
+}
+.modal-fullscreen .modal-content {
+  height: 100%;
+  border: 0;
+  border-radius: 0;
+}
+.modal-fullscreen .modal-header {
+  border-radius: 0;
+}
+.modal-fullscreen .modal-body {
+  overflow-y: auto;
+}
+.modal-fullscreen .modal-footer {
+  border-radius: 0;
+}
+
+@media (max-width: 575.98px) {
+  .modal-fullscreen-sm-down {
+    width: 100vw;
+    max-width: none;
+    height: 100%;
+    margin: 0;
+  }
+  .modal-fullscreen-sm-down .modal-content {
+    height: 100%;
+    border: 0;
+    border-radius: 0;
+  }
+  .modal-fullscreen-sm-down .modal-header {
+    border-radius: 0;
+  }
+  .modal-fullscreen-sm-down .modal-body {
+    overflow-y: auto;
+  }
+  .modal-fullscreen-sm-down .modal-footer {
+    border-radius: 0;
+  }
+}
+@media (max-width: 767.98px) {
+  .modal-fullscreen-md-down {
+    width: 100vw;
+    max-width: none;
+    height: 100%;
+    margin: 0;
+  }
+  .modal-fullscreen-md-down .modal-content {
+    height: 100%;
+    border: 0;
+    border-radius: 0;
+  }
+  .modal-fullscreen-md-down .modal-header {
+    border-radius: 0;
+  }
+  .modal-fullscreen-md-down .modal-body {
+    overflow-y: auto;
+  }
+  .modal-fullscreen-md-down .modal-footer {
+    border-radius: 0;
+  }
+}
+@media (max-width: 991.98px) {
+  .modal-fullscreen-lg-down {
+    width: 100vw;
+    max-width: none;
+    height: 100%;
+    margin: 0;
+  }
+  .modal-fullscreen-lg-down .modal-content {
+    height: 100%;
+    border: 0;
+    border-radius: 0;
+  }
+  .modal-fullscreen-lg-down .modal-header {
+    border-radius: 0;
+  }
+  .modal-fullscreen-lg-down .modal-body {
+    overflow-y: auto;
+  }
+  .modal-fullscreen-lg-down .modal-footer {
+    border-radius: 0;
+  }
+}
+@media (max-width: 1199.98px) {
+  .modal-fullscreen-xl-down {
+    width: 100vw;
+    max-width: none;
+    height: 100%;
+    margin: 0;
+  }
+  .modal-fullscreen-xl-down .modal-content {
+    height: 100%;
+    border: 0;
+    border-radius: 0;
+  }
+  .modal-fullscreen-xl-down .modal-header {
+    border-radius: 0;
+  }
+  .modal-fullscreen-xl-down .modal-body {
+    overflow-y: auto;
+  }
+  .modal-fullscreen-xl-down .modal-footer {
+    border-radius: 0;
+  }
+}
+@media (max-width: 1399.98px) {
+  .modal-fullscreen-xxl-down {
+    width: 100vw;
+    max-width: none;
+    height: 100%;
+    margin: 0;
+  }
+  .modal-fullscreen-xxl-down .modal-content {
+    height: 100%;
+    border: 0;
+    border-radius: 0;
+  }
+  .modal-fullscreen-xxl-down .modal-header {
+    border-radius: 0;
+  }
+  .modal-fullscreen-xxl-down .modal-body {
+    overflow-y: auto;
+  }
+  .modal-fullscreen-xxl-down .modal-footer {
+    border-radius: 0;
+  }
+}
+.tooltip {
+  position: absolute;
+  z-index: 1080;
+  display: block;
+  margin: 0;
+  font-family: var(--bs-font-sans-serif);
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1.5;
+  text-align: right;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  white-space: normal;
+  line-break: auto;
+  font-size: 0.875rem;
+  word-wrap: break-word;
+  opacity: 0;
+}
+.tooltip.show {
+  opacity: 0.9;
+}
+.tooltip .tooltip-arrow {
+  position: absolute;
+  display: block;
+  width: 0.8rem;
+  height: 0.4rem;
+}
+.tooltip .tooltip-arrow::before {
+  position: absolute;
+  content: "";
+  border-color: transparent;
+  border-style: solid;
+}
+
+.bs-tooltip-top, .bs-tooltip-auto[data-popper-placement^=top] {
+  padding: 0.4rem 0;
+}
+.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {
+  bottom: 0;
+}
+.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {
+  top: -1px;
+  border-width: 0.4rem 0.4rem 0;
+  border-top-color: #000;
+}
+
+.bs-tooltip-end, .bs-tooltip-auto[data-popper-placement^=right] {
+  padding: 0 0.4rem;
+}
+.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {
+  right: 0;
+  width: 0.4rem;
+  height: 0.8rem;
+}
+.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {
+  left: -1px;
+  border-width: 0.4rem 0 0.4rem 0.4rem;
+  border-left-color: #000;
+}
+
+.bs-tooltip-bottom, .bs-tooltip-auto[data-popper-placement^=bottom] {
+  padding: 0.4rem 0;
+}
+.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {
+  top: 0;
+}
+.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {
+  bottom: -1px;
+  border-width: 0 0.4rem 0.4rem;
+  border-bottom-color: #000;
+}
+
+.bs-tooltip-start, .bs-tooltip-auto[data-popper-placement^=left] {
+  padding: 0 0.4rem;
+}
+.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {
+  left: 0;
+  width: 0.4rem;
+  height: 0.8rem;
+}
+.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {
+  right: -1px;
+  border-width: 0.4rem 0.4rem 0.4rem 0;
+  border-right-color: #000;
+}
+
+.tooltip-inner {
+  max-width: 200px;
+  padding: 0.25rem 0.5rem;
+  color: #fff;
+  text-align: center;
+  background-color: #000;
+  border-radius: 0.25rem;
+}
+
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0 ;
+  z-index: 1070;
+  display: block;
+  max-width: 276px;
+  font-family: var(--bs-font-sans-serif);
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1.5;
+  text-align: right;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  white-space: normal;
+  line-break: auto;
+  font-size: 0.875rem;
+  word-wrap: break-word;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  border-radius: 0.3rem;
+}
+.popover .popover-arrow {
+  position: absolute;
+  display: block;
+  width: 1rem;
+  height: 0.5rem;
+}
+.popover .popover-arrow::before, .popover .popover-arrow::after {
+  position: absolute;
+  display: block;
+  content: "";
+  border-color: transparent;
+  border-style: solid;
+}
+
+.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {
+  bottom: calc(-0.5rem - 1px);
+}
+.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {
+  bottom: 0;
+  border-width: 0.5rem 0.5rem 0;
+  border-top-color: rgba(0, 0, 0, 0.25);
+}
+.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {
+  bottom: 1px;
+  border-width: 0.5rem 0.5rem 0;
+  border-top-color: #fff;
+}
+
+.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {
+  right: calc(-0.5rem - 1px);
+  width: 0.5rem;
+  height: 1rem;
+}
+.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {
+  right: 0;
+  border-width: 0.5rem 0 0.5rem 0.5rem;
+  border-left-color: rgba(0, 0, 0, 0.25);
+}
+.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {
+  right: 1px;
+  border-width: 0.5rem 0 0.5rem 0.5rem;
+  border-left-color: #fff;
+}
+
+.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {
+  top: calc(-0.5rem - 1px);
+}
+.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {
+  top: 0;
+  border-width: 0 0.5rem 0.5rem 0.5rem;
+  border-bottom-color: rgba(0, 0, 0, 0.25);
+}
+.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {
+  top: 1px;
+  border-width: 0 0.5rem 0.5rem 0.5rem;
+  border-bottom-color: #fff;
+}
+.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {
+  position: absolute;
+  top: 0;
+  right: 50%;
+  display: block;
+  width: 1rem;
+  margin-right: -0.5rem;
+  content: "";
+  border-bottom: 1px solid #f0f0f0;
+}
+
+.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {
+  left: calc(-0.5rem - 1px);
+  width: 0.5rem;
+  height: 1rem;
+}
+.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {
+  left: 0;
+  border-width: 0.5rem 0.5rem 0.5rem 0;
+  border-right-color: rgba(0, 0, 0, 0.25);
+}
+.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {
+  left: 1px;
+  border-width: 0.5rem 0.5rem 0.5rem 0;
+  border-right-color: #fff;
+}
+
+.popover-header {
+  padding: 0.5rem 1rem;
+  margin-bottom: 0;
+  font-size: 1rem;
+  background-color: #f0f0f0;
+  border-bottom: 1px solid rgba(0, 0, 0, 0.2);
+  border-top-right-radius: calc(0.3rem - 1px);
+  border-top-left-radius: calc(0.3rem - 1px);
+}
+.popover-header:empty {
+  display: none;
+}
+
+.popover-body {
+  padding: 1rem 1rem;
+  color: #212529;
+}
+
+.carousel {
+  position: relative;
+}
+
+.carousel.pointer-event {
+  touch-action: pan-y;
+}
+
+.carousel-inner {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+}
+.carousel-inner::after {
+  display: block;
+  clear: both;
+  content: "";
+}
+
+.carousel-item {
+  position: relative;
+  display: none;
+  float: right;
+  width: 100%;
+  margin-left: -100%;
+  -webkit-backface-visibility: hidden;
+  backface-visibility: hidden;
+  transition: transform 0.6s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .carousel-item {
+    transition: none;
+  }
+}
+
+.carousel-item.active,
+.carousel-item-next,
+.carousel-item-prev {
+  display: block;
+}
+.carousel-item-next:not(.carousel-item-start),
+.active.carousel-item-end {
+  transform: translateX(100%);
+}
+
+.carousel-item-prev:not(.carousel-item-end),
+.active.carousel-item-start {
+  transform: translateX(-100%);
+}
+.carousel-fade .carousel-item {
+  opacity: 0;
+  transition-property: opacity;
+  transform: none;
+}
+.carousel-fade .carousel-item.active,
+.carousel-fade .carousel-item-next.carousel-item-start,
+.carousel-fade .carousel-item-prev.carousel-item-end {
+  z-index: 1;
+  opacity: 1;
+}
+.carousel-fade .active.carousel-item-start,
+.carousel-fade .active.carousel-item-end {
+  z-index: 0;
+  opacity: 0;
+  transition: opacity 0s 0.6s;
+}
+@media (prefers-reduced-motion: reduce) {
+  .carousel-fade .active.carousel-item-start,
+.carousel-fade .active.carousel-item-end {
+    transition: none;
+  }
+}
+
+.carousel-control-prev,
+.carousel-control-next {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  z-index: 1;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 15%;
+  padding: 0;
+  color: #fff;
+  text-align: center;
+  background: none;
+  border: 0;
+  opacity: 0.5;
+  transition: opacity 0.15s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+  .carousel-control-prev,
+.carousel-control-next {
+    transition: none;
+  }
+}
+.carousel-control-prev:hover, .carousel-control-prev:focus,
+.carousel-control-next:hover,
+.carousel-control-next:focus {
+  color: #fff;
+  text-decoration: none;
+  outline: 0;
+  opacity: 0.9;
+}
+
+.carousel-control-prev {
+  right: 0;
+}
+
+.carousel-control-next {
+  left: 0;
+}
+
+.carousel-control-prev-icon,
+.carousel-control-next-icon {
+  display: inline-block;
+  width: 2rem;
+  height: 2rem;
+  background-repeat: no-repeat;
+  background-position: 50%;
+  background-size: 100% 100%;
+}
+.carousel-control-next-icon {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e");
+}
+
+.carousel-control-prev-icon {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+}
+
+.carousel-indicators {
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  z-index: 2;
+  display: flex;
+  justify-content: center;
+  padding: 0;
+  margin-left: 15%;
+  margin-bottom: 1rem;
+  margin-right: 15%;
+  list-style: none;
+}
+.carousel-indicators [data-bs-target] {
+  box-sizing: content-box;
+  flex: 0 1 auto;
+  width: 30px;
+  height: 3px;
+  padding: 0;
+  margin-left: 3px;
+  margin-right: 3px;
+  text-indent: -999px;
+  cursor: pointer;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 0;
+  border-top: 10px solid transparent;
+  border-bottom: 10px solid transparent;
+  opacity: 0.5;
+  transition: opacity 0.6s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+  .carousel-indicators [data-bs-target] {
+    transition: none;
+  }
+}
+.carousel-indicators .active {
+  opacity: 1;
+}
+
+.carousel-caption {
+  position: absolute;
+  left: 15%;
+  bottom: 1.25rem;
+  right: 15%;
+  padding-top: 1.25rem;
+  padding-bottom: 1.25rem;
+  color: #fff;
+  text-align: center;
+}
+
+.carousel-dark .carousel-control-next-icon,
+.carousel-dark .carousel-control-prev-icon {
+  filter: invert(1) grayscale(100);
+}
+.carousel-dark .carousel-indicators [data-bs-target] {
+  background-color: #000;
+}
+.carousel-dark .carousel-caption {
+  color: #000;
+}
+
+@-webkit-keyframes spinner-border {
+  to {
+    transform: rotate(360deg) ;
+  }
+}
+
+@keyframes spinner-border {
+  to {
+    transform: rotate(360deg) ;
+  }
+}
+.spinner-border {
+  display: inline-block;
+  width: 2rem;
+  height: 2rem;
+  vertical-align: -0.125em;
+  border: 0.25em solid currentColor;
+  border-left-color: transparent;
+  border-radius: 50%;
+  -webkit-animation: 0.75s linear infinite spinner-border;
+  animation: 0.75s linear infinite spinner-border;
+}
+
+.spinner-border-sm {
+  width: 1rem;
+  height: 1rem;
+  border-width: 0.2em;
+}
+
+@-webkit-keyframes spinner-grow {
+  0% {
+    transform: scale(0);
+  }
+  50% {
+    opacity: 1;
+    transform: none;
+  }
+}
+
+@keyframes spinner-grow {
+  0% {
+    transform: scale(0);
+  }
+  50% {
+    opacity: 1;
+    transform: none;
+  }
+}
+.spinner-grow {
+  display: inline-block;
+  width: 2rem;
+  height: 2rem;
+  vertical-align: -0.125em;
+  background-color: currentColor;
+  border-radius: 50%;
+  opacity: 0;
+  -webkit-animation: 0.75s linear infinite spinner-grow;
+  animation: 0.75s linear infinite spinner-grow;
+}
+
+.spinner-grow-sm {
+  width: 1rem;
+  height: 1rem;
+}
+
+@media (prefers-reduced-motion: reduce) {
+  .spinner-border,
+.spinner-grow {
+    -webkit-animation-duration: 1.5s;
+    animation-duration: 1.5s;
+  }
+}
+.offcanvas {
+  position: fixed;
+  bottom: 0;
+  z-index: 1045;
+  display: flex;
+  flex-direction: column;
+  max-width: 100%;
+  visibility: hidden;
+  background-color: #fff;
+  background-clip: padding-box;
+  outline: 0;
+  transition: transform 0.3s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+  .offcanvas {
+    transition: none;
+  }
+}
+
+.offcanvas-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  z-index: 1040;
+  width: 100vw;
+  height: 100vh;
+  background-color: #000;
+}
+.offcanvas-backdrop.fade {
+  opacity: 0;
+}
+.offcanvas-backdrop.show {
+  opacity: 0.5;
+}
+
+.offcanvas-header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding: 1rem 1rem;
+}
+.offcanvas-header .btn-close {
+  padding: 0.5rem 0.5rem;
+  margin-top: -0.5rem;
+  margin-left: -0.5rem;
+  margin-bottom: -0.5rem;
+}
+
+.offcanvas-title {
+  margin-bottom: 0;
+  line-height: 1.5;
+}
+
+.offcanvas-body {
+  flex-grow: 1;
+  padding: 1rem 1rem;
+  overflow-y: auto;
+}
+
+.offcanvas-start {
+  top: 0;
+  right: 0;
+  width: 400px;
+  border-left: 1px solid rgba(0, 0, 0, 0.2);
+  transform: translateX(100%);
+}
+
+.offcanvas-end {
+  top: 0;
+  left: 0;
+  width: 400px;
+  border-right: 1px solid rgba(0, 0, 0, 0.2);
+  transform: translateX(-100%);
+}
+
+.offcanvas-top {
+  top: 0;
+  left: 0;
+  right: 0;
+  height: 30vh;
+  max-height: 100%;
+  border-bottom: 1px solid rgba(0, 0, 0, 0.2);
+  transform: translateY(-100%);
+}
+
+.offcanvas-bottom {
+  left: 0;
+  right: 0;
+  height: 30vh;
+  max-height: 100%;
+  border-top: 1px solid rgba(0, 0, 0, 0.2);
+  transform: translateY(100%);
+}
+
+.offcanvas.show {
+  transform: none;
+}
+
+.placeholder {
+  display: inline-block;
+  min-height: 1em;
+  vertical-align: middle;
+  cursor: wait;
+  background-color: currentColor;
+  opacity: 0.5;
+}
+.placeholder.btn::before {
+  display: inline-block;
+  content: "";
+}
+
+.placeholder-xs {
+  min-height: 0.6em;
+}
+
+.placeholder-sm {
+  min-height: 0.8em;
+}
+
+.placeholder-lg {
+  min-height: 1.2em;
+}
+
+.placeholder-glow .placeholder {
+  -webkit-animation: placeholder-glow 2s ease-in-out infinite;
+  animation: placeholder-glow 2s ease-in-out infinite;
+}
+
+@-webkit-keyframes placeholder-glow {
+  50% {
+    opacity: 0.2;
+  }
+}
+
+@keyframes placeholder-glow {
+  50% {
+    opacity: 0.2;
+  }
+}
+.placeholder-wave {
+  -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
+  mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
+  -webkit-mask-size: 200% 100%;
+  mask-size: 200% 100%;
+  -webkit-animation: placeholder-wave 2s linear infinite;
+  animation: placeholder-wave 2s linear infinite;
+}
+
+@-webkit-keyframes placeholder-wave {
+  100% {
+    -webkit-mask-position: -200% 0%;
+    mask-position: -200% 0%;
+  }
+}
+
+@keyframes placeholder-wave {
+  100% {
+    -webkit-mask-position: -200% 0%;
+    mask-position: -200% 0%;
+  }
+}
+.clearfix::after {
+  display: block;
+  clear: both;
+  content: "";
+}
+
+.link-primary {
+  color: #0d6efd;
+}
+.link-primary:hover, .link-primary:focus {
+  color: #0a58ca;
+}
+
+.link-secondary {
+  color: #6c757d;
+}
+.link-secondary:hover, .link-secondary:focus {
+  color: #565e64;
+}
+
+.link-success {
+  color: #198754;
+}
+.link-success:hover, .link-success:focus {
+  color: #146c43;
+}
+
+.link-info {
+  color: #0dcaf0;
+}
+.link-info:hover, .link-info:focus {
+  color: #3dd5f3;
+}
+
+.link-warning {
+  color: #ffc107;
+}
+.link-warning:hover, .link-warning:focus {
+  color: #ffcd39;
+}
+
+.link-danger {
+  color: #dc3545;
+}
+.link-danger:hover, .link-danger:focus {
+  color: #b02a37;
+}
+
+.link-light {
+  color: #f8f9fa;
+}
+.link-light:hover, .link-light:focus {
+  color: #f9fafb;
+}
+
+.link-dark {
+  color: #212529;
+}
+.link-dark:hover, .link-dark:focus {
+  color: #1a1e21;
+}
+
+.ratio {
+  position: relative;
+  width: 100%;
+}
+.ratio::before {
+  display: block;
+  padding-top: var(--bs-aspect-ratio);
+  content: "";
+}
+.ratio > * {
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 100%;
+  height: 100%;
+}
+
+.ratio-1x1 {
+  --bs-aspect-ratio: 100%;
+}
+
+.ratio-4x3 {
+  --bs-aspect-ratio: calc(3 / 4 * 100%);
+}
+
+.ratio-16x9 {
+  --bs-aspect-ratio: calc(9 / 16 * 100%);
+}
+
+.ratio-21x9 {
+  --bs-aspect-ratio: calc(9 / 21 * 100%);
+}
+
+.fixed-top {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  z-index: 1030;
+}
+
+.fixed-bottom {
+  position: fixed;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  z-index: 1030;
+}
+
+.sticky-top {
+  position: -webkit-sticky;
+  position: sticky;
+  top: 0;
+  z-index: 1020;
+}
+
+@media (min-width: 576px) {
+  .sticky-sm-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 768px) {
+  .sticky-md-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 992px) {
+  .sticky-lg-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 1200px) {
+  .sticky-xl-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+@media (min-width: 1400px) {
+  .sticky-xxl-top {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 1020;
+  }
+}
+.hstack {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  align-self: stretch;
+}
+
+.vstack {
+  display: flex;
+  flex: 1 1 auto;
+  flex-direction: column;
+  align-self: stretch;
+}
+
+.visually-hidden,
+.visually-hidden-focusable:not(:focus):not(:focus-within) {
+  position: absolute !important;
+  width: 1px !important;
+  height: 1px !important;
+  padding: 0 !important;
+  margin: -1px !important;
+  overflow: hidden !important;
+  clip: rect(0, 0, 0, 0) !important;
+  white-space: nowrap !important;
+  border: 0 !important;
+}
+
+.stretched-link::after {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  z-index: 1;
+  content: "";
+}
+
+.text-truncate {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.vr {
+  display: inline-block;
+  align-self: stretch;
+  width: 1px;
+  min-height: 1em;
+  background-color: currentColor;
+  opacity: 0.25;
+}
+
+.align-baseline {
+  vertical-align: baseline !important;
+}
+
+.align-top {
+  vertical-align: top !important;
+}
+
+.align-middle {
+  vertical-align: middle !important;
+}
+
+.align-bottom {
+  vertical-align: bottom !important;
+}
+
+.align-text-bottom {
+  vertical-align: text-bottom !important;
+}
+
+.align-text-top {
+  vertical-align: text-top !important;
+}
+
+.float-start {
+  float: right !important;
+}
+
+.float-end {
+  float: left !important;
+}
+
+.float-none {
+  float: none !important;
+}
+
+.opacity-0 {
+  opacity: 0 !important;
+}
+
+.opacity-25 {
+  opacity: 0.25 !important;
+}
+
+.opacity-50 {
+  opacity: 0.5 !important;
+}
+
+.opacity-75 {
+  opacity: 0.75 !important;
+}
+
+.opacity-100 {
+  opacity: 1 !important;
+}
+
+.overflow-auto {
+  overflow: auto !important;
+}
+
+.overflow-hidden {
+  overflow: hidden !important;
+}
+
+.overflow-visible {
+  overflow: visible !important;
+}
+
+.overflow-scroll {
+  overflow: scroll !important;
+}
+
+.d-inline {
+  display: inline !important;
+}
+
+.d-inline-block {
+  display: inline-block !important;
+}
+
+.d-block {
+  display: block !important;
+}
+
+.d-grid {
+  display: grid !important;
+}
+
+.d-table {
+  display: table !important;
+}
+
+.d-table-row {
+  display: table-row !important;
+}
+
+.d-table-cell {
+  display: table-cell !important;
+}
+
+.d-flex {
+  display: flex !important;
+}
+
+.d-inline-flex {
+  display: inline-flex !important;
+}
+
+.d-none {
+  display: none !important;
+}
+
+.shadow {
+  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
+}
+
+.shadow-sm {
+  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
+}
+
+.shadow-lg {
+  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
+}
+
+.shadow-none {
+  box-shadow: none !important;
+}
+
+.position-static {
+  position: static !important;
+}
+
+.position-relative {
+  position: relative !important;
+}
+
+.position-absolute {
+  position: absolute !important;
+}
+
+.position-fixed {
+  position: fixed !important;
+}
+
+.position-sticky {
+  position: -webkit-sticky !important;
+  position: sticky !important;
+}
+
+.top-0 {
+  top: 0 !important;
+}
+
+.top-50 {
+  top: 50% !important;
+}
+
+.top-100 {
+  top: 100% !important;
+}
+
+.bottom-0 {
+  bottom: 0 !important;
+}
+
+.bottom-50 {
+  bottom: 50% !important;
+}
+
+.bottom-100 {
+  bottom: 100% !important;
+}
+
+.start-0 {
+  right: 0 !important;
+}
+
+.start-50 {
+  right: 50% !important;
+}
+
+.start-100 {
+  right: 100% !important;
+}
+
+.end-0 {
+  left: 0 !important;
+}
+
+.end-50 {
+  left: 50% !important;
+}
+
+.end-100 {
+  left: 100% !important;
+}
+
+.translate-middle {
+  transform: translate(50%, -50%) !important;
+}
+
+.translate-middle-x {
+  transform: translateX(50%) !important;
+}
+
+.translate-middle-y {
+  transform: translateY(-50%) !important;
+}
+
+.border {
+  border: 1px solid #dee2e6 !important;
+}
+
+.border-0 {
+  border: 0 !important;
+}
+
+.border-top {
+  border-top: 1px solid #dee2e6 !important;
+}
+
+.border-top-0 {
+  border-top: 0 !important;
+}
+
+.border-end {
+  border-left: 1px solid #dee2e6 !important;
+}
+
+.border-end-0 {
+  border-left: 0 !important;
+}
+
+.border-bottom {
+  border-bottom: 1px solid #dee2e6 !important;
+}
+
+.border-bottom-0 {
+  border-bottom: 0 !important;
+}
+
+.border-start {
+  border-right: 1px solid #dee2e6 !important;
+}
+
+.border-start-0 {
+  border-right: 0 !important;
+}
+
+.border-primary {
+  border-color: #0d6efd !important;
+}
+
+.border-secondary {
+  border-color: #6c757d !important;
+}
+
+.border-success {
+  border-color: #198754 !important;
+}
+
+.border-info {
+  border-color: #0dcaf0 !important;
+}
+
+.border-warning {
+  border-color: #ffc107 !important;
+}
+
+.border-danger {
+  border-color: #dc3545 !important;
+}
+
+.border-light {
+  border-color: #f8f9fa !important;
+}
+
+.border-dark {
+  border-color: #212529 !important;
+}
+
+.border-white {
+  border-color: #fff !important;
+}
+
+.border-1 {
+  border-width: 1px !important;
+}
+
+.border-2 {
+  border-width: 2px !important;
+}
+
+.border-3 {
+  border-width: 3px !important;
+}
+
+.border-4 {
+  border-width: 4px !important;
+}
+
+.border-5 {
+  border-width: 5px !important;
+}
+
+.w-25 {
+  width: 25% !important;
+}
+
+.w-50 {
+  width: 50% !important;
+}
+
+.w-75 {
+  width: 75% !important;
+}
+
+.w-100 {
+  width: 100% !important;
+}
+
+.w-auto {
+  width: auto !important;
+}
+
+.mw-100 {
+  max-width: 100% !important;
+}
+
+.vw-100 {
+  width: 100vw !important;
+}
+
+.min-vw-100 {
+  min-width: 100vw !important;
+}
+
+.h-25 {
+  height: 25% !important;
+}
+
+.h-50 {
+  height: 50% !important;
+}
+
+.h-75 {
+  height: 75% !important;
+}
+
+.h-100 {
+  height: 100% !important;
+}
+
+.h-auto {
+  height: auto !important;
+}
+
+.mh-100 {
+  max-height: 100% !important;
+}
+
+.vh-100 {
+  height: 100vh !important;
+}
+
+.min-vh-100 {
+  min-height: 100vh !important;
+}
+
+.flex-fill {
+  flex: 1 1 auto !important;
+}
+
+.flex-row {
+  flex-direction: row !important;
+}
+
+.flex-column {
+  flex-direction: column !important;
+}
+
+.flex-row-reverse {
+  flex-direction: row-reverse !important;
+}
+
+.flex-column-reverse {
+  flex-direction: column-reverse !important;
+}
+
+.flex-grow-0 {
+  flex-grow: 0 !important;
+}
+
+.flex-grow-1 {
+  flex-grow: 1 !important;
+}
+
+.flex-shrink-0 {
+  flex-shrink: 0 !important;
+}
+
+.flex-shrink-1 {
+  flex-shrink: 1 !important;
+}
+
+.flex-wrap {
+  flex-wrap: wrap !important;
+}
+
+.flex-nowrap {
+  flex-wrap: nowrap !important;
+}
+
+.flex-wrap-reverse {
+  flex-wrap: wrap-reverse !important;
+}
+
+.gap-0 {
+  gap: 0 !important;
+}
+
+.gap-1 {
+  gap: 0.25rem !important;
+}
+
+.gap-2 {
+  gap: 0.5rem !important;
+}
+
+.gap-3 {
+  gap: 1rem !important;
+}
+
+.gap-4 {
+  gap: 1.5rem !important;
+}
+
+.gap-5 {
+  gap: 3rem !important;
+}
+
+.justify-content-start {
+  justify-content: flex-start !important;
+}
+
+.justify-content-end {
+  justify-content: flex-end !important;
+}
+
+.justify-content-center {
+  justify-content: center !important;
+}
+
+.justify-content-between {
+  justify-content: space-between !important;
+}
+
+.justify-content-around {
+  justify-content: space-around !important;
+}
+
+.justify-content-evenly {
+  justify-content: space-evenly !important;
+}
+
+.align-items-start {
+  align-items: flex-start !important;
+}
+
+.align-items-end {
+  align-items: flex-end !important;
+}
+
+.align-items-center {
+  align-items: center !important;
+}
+
+.align-items-baseline {
+  align-items: baseline !important;
+}
+
+.align-items-stretch {
+  align-items: stretch !important;
+}
+
+.align-content-start {
+  align-content: flex-start !important;
+}
+
+.align-content-end {
+  align-content: flex-end !important;
+}
+
+.align-content-center {
+  align-content: center !important;
+}
+
+.align-content-between {
+  align-content: space-between !important;
+}
+
+.align-content-around {
+  align-content: space-around !important;
+}
+
+.align-content-stretch {
+  align-content: stretch !important;
+}
+
+.align-self-auto {
+  align-self: auto !important;
+}
+
+.align-self-start {
+  align-self: flex-start !important;
+}
+
+.align-self-end {
+  align-self: flex-end !important;
+}
+
+.align-self-center {
+  align-self: center !important;
+}
+
+.align-self-baseline {
+  align-self: baseline !important;
+}
+
+.align-self-stretch {
+  align-self: stretch !important;
+}
+
+.order-first {
+  order: -1 !important;
+}
+
+.order-0 {
+  order: 0 !important;
+}
+
+.order-1 {
+  order: 1 !important;
+}
+
+.order-2 {
+  order: 2 !important;
+}
+
+.order-3 {
+  order: 3 !important;
+}
+
+.order-4 {
+  order: 4 !important;
+}
+
+.order-5 {
+  order: 5 !important;
+}
+
+.order-last {
+  order: 6 !important;
+}
+
+.m-0 {
+  margin: 0 !important;
+}
+
+.m-1 {
+  margin: 0.25rem !important;
+}
+
+.m-2 {
+  margin: 0.5rem !important;
+}
+
+.m-3 {
+  margin: 1rem !important;
+}
+
+.m-4 {
+  margin: 1.5rem !important;
+}
+
+.m-5 {
+  margin: 3rem !important;
+}
+
+.m-auto {
+  margin: auto !important;
+}
+
+.mx-0 {
+  margin-left: 0 !important;
+  margin-right: 0 !important;
+}
+
+.mx-1 {
+  margin-left: 0.25rem !important;
+  margin-right: 0.25rem !important;
+}
+
+.mx-2 {
+  margin-left: 0.5rem !important;
+  margin-right: 0.5rem !important;
+}
+
+.mx-3 {
+  margin-left: 1rem !important;
+  margin-right: 1rem !important;
+}
+
+.mx-4 {
+  margin-left: 1.5rem !important;
+  margin-right: 1.5rem !important;
+}
+
+.mx-5 {
+  margin-left: 3rem !important;
+  margin-right: 3rem !important;
+}
+
+.mx-auto {
+  margin-left: auto !important;
+  margin-right: auto !important;
+}
+
+.my-0 {
+  margin-top: 0 !important;
+  margin-bottom: 0 !important;
+}
+
+.my-1 {
+  margin-top: 0.25rem !important;
+  margin-bottom: 0.25rem !important;
+}
+
+.my-2 {
+  margin-top: 0.5rem !important;
+  margin-bottom: 0.5rem !important;
+}
+
+.my-3 {
+  margin-top: 1rem !important;
+  margin-bottom: 1rem !important;
+}
+
+.my-4 {
+  margin-top: 1.5rem !important;
+  margin-bottom: 1.5rem !important;
+}
+
+.my-5 {
+  margin-top: 3rem !important;
+  margin-bottom: 3rem !important;
+}
+
+.my-auto {
+  margin-top: auto !important;
+  margin-bottom: auto !important;
+}
+
+.mt-0 {
+  margin-top: 0 !important;
+}
+
+.mt-1 {
+  margin-top: 0.25rem !important;
+}
+
+.mt-2 {
+  margin-top: 0.5rem !important;
+}
+
+.mt-3 {
+  margin-top: 1rem !important;
+}
+
+.mt-4 {
+  margin-top: 1.5rem !important;
+}
+
+.mt-5 {
+  margin-top: 3rem !important;
+}
+
+.mt-auto {
+  margin-top: auto !important;
+}
+
+.me-0 {
+  margin-left: 0 !important;
+}
+
+.me-1 {
+  margin-left: 0.25rem !important;
+}
+
+.me-2 {
+  margin-left: 0.5rem !important;
+}
+
+.me-3 {
+  margin-left: 1rem !important;
+}
+
+.me-4 {
+  margin-left: 1.5rem !important;
+}
+
+.me-5 {
+  margin-left: 3rem !important;
+}
+
+.me-auto {
+  margin-left: auto !important;
+}
+
+.mb-0 {
+  margin-bottom: 0 !important;
+}
+
+.mb-1 {
+  margin-bottom: 0.25rem !important;
+}
+
+.mb-2 {
+  margin-bottom: 0.5rem !important;
+}
+
+.mb-3 {
+  margin-bottom: 1rem !important;
+}
+
+.mb-4 {
+  margin-bottom: 1.5rem !important;
+}
+
+.mb-5 {
+  margin-bottom: 3rem !important;
+}
+
+.mb-auto {
+  margin-bottom: auto !important;
+}
+
+.ms-0 {
+  margin-right: 0 !important;
+}
+
+.ms-1 {
+  margin-right: 0.25rem !important;
+}
+
+.ms-2 {
+  margin-right: 0.5rem !important;
+}
+
+.ms-3 {
+  margin-right: 1rem !important;
+}
+
+.ms-4 {
+  margin-right: 1.5rem !important;
+}
+
+.ms-5 {
+  margin-right: 3rem !important;
+}
+
+.ms-auto {
+  margin-right: auto !important;
+}
+
+.p-0 {
+  padding: 0 !important;
+}
+
+.p-1 {
+  padding: 0.25rem !important;
+}
+
+.p-2 {
+  padding: 0.5rem !important;
+}
+
+.p-3 {
+  padding: 1rem !important;
+}
+
+.p-4 {
+  padding: 1.5rem !important;
+}
+
+.p-5 {
+  padding: 3rem !important;
+}
+
+.px-0 {
+  padding-left: 0 !important;
+  padding-right: 0 !important;
+}
+
+.px-1 {
+  padding-left: 0.25rem !important;
+  padding-right: 0.25rem !important;
+}
+
+.px-2 {
+  padding-left: 0.5rem !important;
+  padding-right: 0.5rem !important;
+}
+
+.px-3 {
+  padding-left: 1rem !important;
+  padding-right: 1rem !important;
+}
+
+.px-4 {
+  padding-left: 1.5rem !important;
+  padding-right: 1.5rem !important;
+}
+
+.px-5 {
+  padding-left: 3rem !important;
+  padding-right: 3rem !important;
+}
+
+.py-0 {
+  padding-top: 0 !important;
+  padding-bottom: 0 !important;
+}
+
+.py-1 {
+  padding-top: 0.25rem !important;
+  padding-bottom: 0.25rem !important;
+}
+
+.py-2 {
+  padding-top: 0.5rem !important;
+  padding-bottom: 0.5rem !important;
+}
+
+.py-3 {
+  padding-top: 1rem !important;
+  padding-bottom: 1rem !important;
+}
+
+.py-4 {
+  padding-top: 1.5rem !important;
+  padding-bottom: 1.5rem !important;
+}
+
+.py-5 {
+  padding-top: 3rem !important;
+  padding-bottom: 3rem !important;
+}
+
+.pt-0 {
+  padding-top: 0 !important;
+}
+
+.pt-1 {
+  padding-top: 0.25rem !important;
+}
+
+.pt-2 {
+  padding-top: 0.5rem !important;
+}
+
+.pt-3 {
+  padding-top: 1rem !important;
+}
+
+.pt-4 {
+  padding-top: 1.5rem !important;
+}
+
+.pt-5 {
+  padding-top: 3rem !important;
+}
+
+.pe-0 {
+  padding-left: 0 !important;
+}
+
+.pe-1 {
+  padding-left: 0.25rem !important;
+}
+
+.pe-2 {
+  padding-left: 0.5rem !important;
+}
+
+.pe-3 {
+  padding-left: 1rem !important;
+}
+
+.pe-4 {
+  padding-left: 1.5rem !important;
+}
+
+.pe-5 {
+  padding-left: 3rem !important;
+}
+
+.pb-0 {
+  padding-bottom: 0 !important;
+}
+
+.pb-1 {
+  padding-bottom: 0.25rem !important;
+}
+
+.pb-2 {
+  padding-bottom: 0.5rem !important;
+}
+
+.pb-3 {
+  padding-bottom: 1rem !important;
+}
+
+.pb-4 {
+  padding-bottom: 1.5rem !important;
+}
+
+.pb-5 {
+  padding-bottom: 3rem !important;
+}
+
+.ps-0 {
+  padding-right: 0 !important;
+}
+
+.ps-1 {
+  padding-right: 0.25rem !important;
+}
+
+.ps-2 {
+  padding-right: 0.5rem !important;
+}
+
+.ps-3 {
+  padding-right: 1rem !important;
+}
+
+.ps-4 {
+  padding-right: 1.5rem !important;
+}
+
+.ps-5 {
+  padding-right: 3rem !important;
+}
+
+.font-monospace {
+  font-family: var(--bs-font-monospace) !important;
+}
+
+.fs-1 {
+  font-size: calc(1.375rem + 1.5vw) !important;
+}
+
+.fs-2 {
+  font-size: calc(1.325rem + 0.9vw) !important;
+}
+
+.fs-3 {
+  font-size: calc(1.3rem + 0.6vw) !important;
+}
+
+.fs-4 {
+  font-size: calc(1.275rem + 0.3vw) !important;
+}
+
+.fs-5 {
+  font-size: 1.25rem !important;
+}
+
+.fs-6 {
+  font-size: 1rem !important;
+}
+
+.fst-italic {
+  font-style: italic !important;
+}
+
+.fst-normal {
+  font-style: normal !important;
+}
+
+.fw-light {
+  font-weight: 300 !important;
+}
+
+.fw-lighter {
+  font-weight: lighter !important;
+}
+
+.fw-normal {
+  font-weight: 400 !important;
+}
+
+.fw-bold {
+  font-weight: 700 !important;
+}
+
+.fw-bolder {
+  font-weight: bolder !important;
+}
+
+.lh-1 {
+  line-height: 1 !important;
+}
+
+.lh-sm {
+  line-height: 1.25 !important;
+}
+
+.lh-base {
+  line-height: 1.5 !important;
+}
+
+.lh-lg {
+  line-height: 2 !important;
+}
+
+.text-start {
+  text-align: right !important;
+}
+
+.text-end {
+  text-align: left !important;
+}
+
+.text-center {
+  text-align: center !important;
+}
+
+.text-decoration-none {
+  text-decoration: none !important;
+}
+
+.text-decoration-underline {
+  text-decoration: underline !important;
+}
+
+.text-decoration-line-through {
+  text-decoration: line-through !important;
+}
+
+.text-lowercase {
+  text-transform: lowercase !important;
+}
+
+.text-uppercase {
+  text-transform: uppercase !important;
+}
+
+.text-capitalize {
+  text-transform: capitalize !important;
+}
+
+.text-wrap {
+  white-space: normal !important;
+}
+
+.text-nowrap {
+  white-space: nowrap !important;
+}
+.text-primary {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-secondary {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-success {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-info {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-warning {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-danger {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-light {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-dark {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-black {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-white {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-body {
+  --bs-text-opacity: 1;
+  color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-muted {
+  --bs-text-opacity: 1;
+  color: #6c757d !important;
+}
+
+.text-black-50 {
+  --bs-text-opacity: 1;
+  color: rgba(0, 0, 0, 0.5) !important;
+}
+
+.text-white-50 {
+  --bs-text-opacity: 1;
+  color: rgba(255, 255, 255, 0.5) !important;
+}
+
+.text-reset {
+  --bs-text-opacity: 1;
+  color: inherit !important;
+}
+
+.text-opacity-25 {
+  --bs-text-opacity: 0.25;
+}
+
+.text-opacity-50 {
+  --bs-text-opacity: 0.5;
+}
+
+.text-opacity-75 {
+  --bs-text-opacity: 0.75;
+}
+
+.text-opacity-100 {
+  --bs-text-opacity: 1;
+}
+
+.bg-primary {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-secondary {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-success {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-info {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-warning {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-danger {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-light {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-dark {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-black {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-white {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-body {
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-transparent {
+  --bs-bg-opacity: 1;
+  background-color: transparent !important;
+}
+
+.bg-opacity-10 {
+  --bs-bg-opacity: 0.1;
+}
+
+.bg-opacity-25 {
+  --bs-bg-opacity: 0.25;
+}
+
+.bg-opacity-50 {
+  --bs-bg-opacity: 0.5;
+}
+
+.bg-opacity-75 {
+  --bs-bg-opacity: 0.75;
+}
+
+.bg-opacity-100 {
+  --bs-bg-opacity: 1;
+}
+
+.bg-gradient {
+  background-image: var(--bs-gradient) !important;
+}
+
+.user-select-all {
+  -webkit-user-select: all !important;
+  -moz-user-select: all !important;
+  user-select: all !important;
+}
+
+.user-select-auto {
+  -webkit-user-select: auto !important;
+  -moz-user-select: auto !important;
+  user-select: auto !important;
+}
+
+.user-select-none {
+  -webkit-user-select: none !important;
+  -moz-user-select: none !important;
+  user-select: none !important;
+}
+
+.pe-none {
+  pointer-events: none !important;
+}
+
+.pe-auto {
+  pointer-events: auto !important;
+}
+
+.rounded {
+  border-radius: 0.25rem !important;
+}
+
+.rounded-0 {
+  border-radius: 0 !important;
+}
+
+.rounded-1 {
+  border-radius: 0.2rem !important;
+}
+
+.rounded-2 {
+  border-radius: 0.25rem !important;
+}
+
+.rounded-3 {
+  border-radius: 0.3rem !important;
+}
+
+.rounded-circle {
+  border-radius: 50% !important;
+}
+
+.rounded-pill {
+  border-radius: 50rem !important;
+}
+
+.rounded-top {
+  border-top-right-radius: 0.25rem !important;
+  border-top-left-radius: 0.25rem !important;
+}
+
+.rounded-end {
+  border-top-left-radius: 0.25rem !important;
+  border-bottom-left-radius: 0.25rem !important;
+}
+
+.rounded-bottom {
+  border-bottom-left-radius: 0.25rem !important;
+  border-bottom-right-radius: 0.25rem !important;
+}
+
+.rounded-start {
+  border-bottom-right-radius: 0.25rem !important;
+  border-top-right-radius: 0.25rem !important;
+}
+
+.visible {
+  visibility: visible !important;
+}
+
+.invisible {
+  visibility: hidden !important;
+}
+
+@media (min-width: 576px) {
+  .float-sm-start {
+    float: right !important;
+  }
+
+  .float-sm-end {
+    float: left !important;
+  }
+
+  .float-sm-none {
+    float: none !important;
+  }
+
+  .d-sm-inline {
+    display: inline !important;
+  }
+
+  .d-sm-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-sm-block {
+    display: block !important;
+  }
+
+  .d-sm-grid {
+    display: grid !important;
+  }
+
+  .d-sm-table {
+    display: table !important;
+  }
+
+  .d-sm-table-row {
+    display: table-row !important;
+  }
+
+  .d-sm-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-sm-flex {
+    display: flex !important;
+  }
+
+  .d-sm-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-sm-none {
+    display: none !important;
+  }
+
+  .flex-sm-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-sm-row {
+    flex-direction: row !important;
+  }
+
+  .flex-sm-column {
+    flex-direction: column !important;
+  }
+
+  .flex-sm-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-sm-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-sm-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-sm-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-sm-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-sm-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-sm-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-sm-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-sm-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-sm-0 {
+    gap: 0 !important;
+  }
+
+  .gap-sm-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-sm-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-sm-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-sm-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-sm-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-sm-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-sm-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-sm-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-sm-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-sm-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-sm-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-sm-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-sm-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-sm-center {
+    align-items: center !important;
+  }
+
+  .align-items-sm-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-sm-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-sm-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-sm-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-sm-center {
+    align-content: center !important;
+  }
+
+  .align-content-sm-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-sm-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-sm-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-sm-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-sm-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-sm-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-sm-center {
+    align-self: center !important;
+  }
+
+  .align-self-sm-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-sm-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-sm-first {
+    order: -1 !important;
+  }
+
+  .order-sm-0 {
+    order: 0 !important;
+  }
+
+  .order-sm-1 {
+    order: 1 !important;
+  }
+
+  .order-sm-2 {
+    order: 2 !important;
+  }
+
+  .order-sm-3 {
+    order: 3 !important;
+  }
+
+  .order-sm-4 {
+    order: 4 !important;
+  }
+
+  .order-sm-5 {
+    order: 5 !important;
+  }
+
+  .order-sm-last {
+    order: 6 !important;
+  }
+
+  .m-sm-0 {
+    margin: 0 !important;
+  }
+
+  .m-sm-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-sm-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-sm-3 {
+    margin: 1rem !important;
+  }
+
+  .m-sm-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-sm-5 {
+    margin: 3rem !important;
+  }
+
+  .m-sm-auto {
+    margin: auto !important;
+  }
+
+  .mx-sm-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-sm-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-sm-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-sm-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-sm-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-sm-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-sm-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-sm-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-sm-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-sm-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-sm-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-sm-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-sm-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-sm-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-sm-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-sm-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-sm-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-sm-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-sm-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-sm-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-sm-auto {
+    margin-top: auto !important;
+  }
+
+  .me-sm-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-sm-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-sm-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-sm-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-sm-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-sm-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-sm-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-sm-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-sm-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-sm-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-sm-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-sm-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-sm-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-sm-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-sm-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-sm-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-sm-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-sm-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-sm-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-sm-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-sm-auto {
+    margin-right: auto !important;
+  }
+
+  .p-sm-0 {
+    padding: 0 !important;
+  }
+
+  .p-sm-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-sm-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-sm-3 {
+    padding: 1rem !important;
+  }
+
+  .p-sm-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-sm-5 {
+    padding: 3rem !important;
+  }
+
+  .px-sm-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-sm-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-sm-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-sm-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-sm-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-sm-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-sm-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-sm-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-sm-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-sm-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-sm-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-sm-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-sm-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-sm-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-sm-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-sm-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-sm-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-sm-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-sm-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-sm-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-sm-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-sm-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-sm-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-sm-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-sm-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-sm-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-sm-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-sm-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-sm-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-sm-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-sm-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-sm-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-sm-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-sm-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-sm-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-sm-5 {
+    padding-right: 3rem !important;
+  }
+
+  .text-sm-start {
+    text-align: right !important;
+  }
+
+  .text-sm-end {
+    text-align: left !important;
+  }
+
+  .text-sm-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 768px) {
+  .float-md-start {
+    float: right !important;
+  }
+
+  .float-md-end {
+    float: left !important;
+  }
+
+  .float-md-none {
+    float: none !important;
+  }
+
+  .d-md-inline {
+    display: inline !important;
+  }
+
+  .d-md-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-md-block {
+    display: block !important;
+  }
+
+  .d-md-grid {
+    display: grid !important;
+  }
+
+  .d-md-table {
+    display: table !important;
+  }
+
+  .d-md-table-row {
+    display: table-row !important;
+  }
+
+  .d-md-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-md-flex {
+    display: flex !important;
+  }
+
+  .d-md-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-md-none {
+    display: none !important;
+  }
+
+  .flex-md-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-md-row {
+    flex-direction: row !important;
+  }
+
+  .flex-md-column {
+    flex-direction: column !important;
+  }
+
+  .flex-md-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-md-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-md-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-md-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-md-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-md-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-md-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-md-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-md-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-md-0 {
+    gap: 0 !important;
+  }
+
+  .gap-md-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-md-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-md-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-md-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-md-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-md-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-md-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-md-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-md-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-md-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-md-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-md-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-md-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-md-center {
+    align-items: center !important;
+  }
+
+  .align-items-md-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-md-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-md-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-md-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-md-center {
+    align-content: center !important;
+  }
+
+  .align-content-md-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-md-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-md-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-md-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-md-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-md-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-md-center {
+    align-self: center !important;
+  }
+
+  .align-self-md-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-md-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-md-first {
+    order: -1 !important;
+  }
+
+  .order-md-0 {
+    order: 0 !important;
+  }
+
+  .order-md-1 {
+    order: 1 !important;
+  }
+
+  .order-md-2 {
+    order: 2 !important;
+  }
+
+  .order-md-3 {
+    order: 3 !important;
+  }
+
+  .order-md-4 {
+    order: 4 !important;
+  }
+
+  .order-md-5 {
+    order: 5 !important;
+  }
+
+  .order-md-last {
+    order: 6 !important;
+  }
+
+  .m-md-0 {
+    margin: 0 !important;
+  }
+
+  .m-md-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-md-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-md-3 {
+    margin: 1rem !important;
+  }
+
+  .m-md-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-md-5 {
+    margin: 3rem !important;
+  }
+
+  .m-md-auto {
+    margin: auto !important;
+  }
+
+  .mx-md-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-md-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-md-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-md-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-md-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-md-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-md-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-md-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-md-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-md-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-md-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-md-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-md-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-md-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-md-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-md-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-md-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-md-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-md-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-md-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-md-auto {
+    margin-top: auto !important;
+  }
+
+  .me-md-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-md-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-md-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-md-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-md-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-md-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-md-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-md-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-md-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-md-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-md-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-md-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-md-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-md-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-md-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-md-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-md-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-md-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-md-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-md-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-md-auto {
+    margin-right: auto !important;
+  }
+
+  .p-md-0 {
+    padding: 0 !important;
+  }
+
+  .p-md-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-md-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-md-3 {
+    padding: 1rem !important;
+  }
+
+  .p-md-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-md-5 {
+    padding: 3rem !important;
+  }
+
+  .px-md-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-md-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-md-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-md-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-md-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-md-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-md-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-md-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-md-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-md-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-md-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-md-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-md-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-md-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-md-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-md-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-md-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-md-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-md-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-md-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-md-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-md-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-md-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-md-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-md-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-md-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-md-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-md-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-md-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-md-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-md-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-md-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-md-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-md-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-md-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-md-5 {
+    padding-right: 3rem !important;
+  }
+
+  .text-md-start {
+    text-align: right !important;
+  }
+
+  .text-md-end {
+    text-align: left !important;
+  }
+
+  .text-md-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 992px) {
+  .float-lg-start {
+    float: right !important;
+  }
+
+  .float-lg-end {
+    float: left !important;
+  }
+
+  .float-lg-none {
+    float: none !important;
+  }
+
+  .d-lg-inline {
+    display: inline !important;
+  }
+
+  .d-lg-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-lg-block {
+    display: block !important;
+  }
+
+  .d-lg-grid {
+    display: grid !important;
+  }
+
+  .d-lg-table {
+    display: table !important;
+  }
+
+  .d-lg-table-row {
+    display: table-row !important;
+  }
+
+  .d-lg-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-lg-flex {
+    display: flex !important;
+  }
+
+  .d-lg-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-lg-none {
+    display: none !important;
+  }
+
+  .flex-lg-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-lg-row {
+    flex-direction: row !important;
+  }
+
+  .flex-lg-column {
+    flex-direction: column !important;
+  }
+
+  .flex-lg-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-lg-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-lg-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-lg-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-lg-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-lg-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-lg-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-lg-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-lg-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-lg-0 {
+    gap: 0 !important;
+  }
+
+  .gap-lg-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-lg-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-lg-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-lg-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-lg-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-lg-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-lg-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-lg-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-lg-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-lg-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-lg-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-lg-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-lg-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-lg-center {
+    align-items: center !important;
+  }
+
+  .align-items-lg-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-lg-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-lg-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-lg-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-lg-center {
+    align-content: center !important;
+  }
+
+  .align-content-lg-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-lg-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-lg-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-lg-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-lg-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-lg-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-lg-center {
+    align-self: center !important;
+  }
+
+  .align-self-lg-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-lg-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-lg-first {
+    order: -1 !important;
+  }
+
+  .order-lg-0 {
+    order: 0 !important;
+  }
+
+  .order-lg-1 {
+    order: 1 !important;
+  }
+
+  .order-lg-2 {
+    order: 2 !important;
+  }
+
+  .order-lg-3 {
+    order: 3 !important;
+  }
+
+  .order-lg-4 {
+    order: 4 !important;
+  }
+
+  .order-lg-5 {
+    order: 5 !important;
+  }
+
+  .order-lg-last {
+    order: 6 !important;
+  }
+
+  .m-lg-0 {
+    margin: 0 !important;
+  }
+
+  .m-lg-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-lg-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-lg-3 {
+    margin: 1rem !important;
+  }
+
+  .m-lg-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-lg-5 {
+    margin: 3rem !important;
+  }
+
+  .m-lg-auto {
+    margin: auto !important;
+  }
+
+  .mx-lg-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-lg-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-lg-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-lg-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-lg-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-lg-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-lg-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-lg-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-lg-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-lg-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-lg-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-lg-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-lg-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-lg-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-lg-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-lg-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-lg-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-lg-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-lg-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-lg-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-lg-auto {
+    margin-top: auto !important;
+  }
+
+  .me-lg-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-lg-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-lg-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-lg-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-lg-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-lg-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-lg-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-lg-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-lg-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-lg-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-lg-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-lg-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-lg-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-lg-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-lg-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-lg-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-lg-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-lg-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-lg-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-lg-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-lg-auto {
+    margin-right: auto !important;
+  }
+
+  .p-lg-0 {
+    padding: 0 !important;
+  }
+
+  .p-lg-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-lg-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-lg-3 {
+    padding: 1rem !important;
+  }
+
+  .p-lg-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-lg-5 {
+    padding: 3rem !important;
+  }
+
+  .px-lg-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-lg-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-lg-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-lg-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-lg-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-lg-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-lg-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-lg-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-lg-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-lg-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-lg-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-lg-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-lg-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-lg-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-lg-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-lg-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-lg-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-lg-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-lg-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-lg-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-lg-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-lg-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-lg-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-lg-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-lg-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-lg-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-lg-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-lg-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-lg-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-lg-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-lg-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-lg-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-lg-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-lg-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-lg-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-lg-5 {
+    padding-right: 3rem !important;
+  }
+
+  .text-lg-start {
+    text-align: right !important;
+  }
+
+  .text-lg-end {
+    text-align: left !important;
+  }
+
+  .text-lg-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 1200px) {
+  .float-xl-start {
+    float: right !important;
+  }
+
+  .float-xl-end {
+    float: left !important;
+  }
+
+  .float-xl-none {
+    float: none !important;
+  }
+
+  .d-xl-inline {
+    display: inline !important;
+  }
+
+  .d-xl-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-xl-block {
+    display: block !important;
+  }
+
+  .d-xl-grid {
+    display: grid !important;
+  }
+
+  .d-xl-table {
+    display: table !important;
+  }
+
+  .d-xl-table-row {
+    display: table-row !important;
+  }
+
+  .d-xl-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-xl-flex {
+    display: flex !important;
+  }
+
+  .d-xl-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-xl-none {
+    display: none !important;
+  }
+
+  .flex-xl-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-xl-row {
+    flex-direction: row !important;
+  }
+
+  .flex-xl-column {
+    flex-direction: column !important;
+  }
+
+  .flex-xl-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-xl-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-xl-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-xl-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-xl-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-xl-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-xl-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-xl-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-xl-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-xl-0 {
+    gap: 0 !important;
+  }
+
+  .gap-xl-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-xl-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-xl-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-xl-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-xl-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-xl-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-xl-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-xl-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-xl-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-xl-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-xl-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-xl-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-xl-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-xl-center {
+    align-items: center !important;
+  }
+
+  .align-items-xl-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-xl-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-xl-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-xl-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-xl-center {
+    align-content: center !important;
+  }
+
+  .align-content-xl-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-xl-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-xl-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-xl-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-xl-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-xl-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-xl-center {
+    align-self: center !important;
+  }
+
+  .align-self-xl-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-xl-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-xl-first {
+    order: -1 !important;
+  }
+
+  .order-xl-0 {
+    order: 0 !important;
+  }
+
+  .order-xl-1 {
+    order: 1 !important;
+  }
+
+  .order-xl-2 {
+    order: 2 !important;
+  }
+
+  .order-xl-3 {
+    order: 3 !important;
+  }
+
+  .order-xl-4 {
+    order: 4 !important;
+  }
+
+  .order-xl-5 {
+    order: 5 !important;
+  }
+
+  .order-xl-last {
+    order: 6 !important;
+  }
+
+  .m-xl-0 {
+    margin: 0 !important;
+  }
+
+  .m-xl-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-xl-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-xl-3 {
+    margin: 1rem !important;
+  }
+
+  .m-xl-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-xl-5 {
+    margin: 3rem !important;
+  }
+
+  .m-xl-auto {
+    margin: auto !important;
+  }
+
+  .mx-xl-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-xl-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-xl-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-xl-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-xl-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-xl-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-xl-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-xl-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-xl-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-xl-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-xl-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-xl-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-xl-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-xl-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-xl-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-xl-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-xl-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-xl-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-xl-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-xl-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-xl-auto {
+    margin-top: auto !important;
+  }
+
+  .me-xl-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-xl-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-xl-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-xl-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-xl-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-xl-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-xl-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-xl-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-xl-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-xl-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-xl-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-xl-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-xl-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-xl-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-xl-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-xl-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-xl-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-xl-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-xl-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-xl-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-xl-auto {
+    margin-right: auto !important;
+  }
+
+  .p-xl-0 {
+    padding: 0 !important;
+  }
+
+  .p-xl-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-xl-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-xl-3 {
+    padding: 1rem !important;
+  }
+
+  .p-xl-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-xl-5 {
+    padding: 3rem !important;
+  }
+
+  .px-xl-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-xl-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-xl-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-xl-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-xl-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-xl-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-xl-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-xl-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-xl-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-xl-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-xl-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-xl-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-xl-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-xl-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-xl-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-xl-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-xl-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-xl-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-xl-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-xl-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-xl-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-xl-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-xl-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-xl-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-xl-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-xl-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-xl-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-xl-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-xl-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-xl-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-xl-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-xl-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-xl-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-xl-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-xl-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-xl-5 {
+    padding-right: 3rem !important;
+  }
+
+  .text-xl-start {
+    text-align: right !important;
+  }
+
+  .text-xl-end {
+    text-align: left !important;
+  }
+
+  .text-xl-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 1400px) {
+  .float-xxl-start {
+    float: right !important;
+  }
+
+  .float-xxl-end {
+    float: left !important;
+  }
+
+  .float-xxl-none {
+    float: none !important;
+  }
+
+  .d-xxl-inline {
+    display: inline !important;
+  }
+
+  .d-xxl-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-xxl-block {
+    display: block !important;
+  }
+
+  .d-xxl-grid {
+    display: grid !important;
+  }
+
+  .d-xxl-table {
+    display: table !important;
+  }
+
+  .d-xxl-table-row {
+    display: table-row !important;
+  }
+
+  .d-xxl-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-xxl-flex {
+    display: flex !important;
+  }
+
+  .d-xxl-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-xxl-none {
+    display: none !important;
+  }
+
+  .flex-xxl-fill {
+    flex: 1 1 auto !important;
+  }
+
+  .flex-xxl-row {
+    flex-direction: row !important;
+  }
+
+  .flex-xxl-column {
+    flex-direction: column !important;
+  }
+
+  .flex-xxl-row-reverse {
+    flex-direction: row-reverse !important;
+  }
+
+  .flex-xxl-column-reverse {
+    flex-direction: column-reverse !important;
+  }
+
+  .flex-xxl-grow-0 {
+    flex-grow: 0 !important;
+  }
+
+  .flex-xxl-grow-1 {
+    flex-grow: 1 !important;
+  }
+
+  .flex-xxl-shrink-0 {
+    flex-shrink: 0 !important;
+  }
+
+  .flex-xxl-shrink-1 {
+    flex-shrink: 1 !important;
+  }
+
+  .flex-xxl-wrap {
+    flex-wrap: wrap !important;
+  }
+
+  .flex-xxl-nowrap {
+    flex-wrap: nowrap !important;
+  }
+
+  .flex-xxl-wrap-reverse {
+    flex-wrap: wrap-reverse !important;
+  }
+
+  .gap-xxl-0 {
+    gap: 0 !important;
+  }
+
+  .gap-xxl-1 {
+    gap: 0.25rem !important;
+  }
+
+  .gap-xxl-2 {
+    gap: 0.5rem !important;
+  }
+
+  .gap-xxl-3 {
+    gap: 1rem !important;
+  }
+
+  .gap-xxl-4 {
+    gap: 1.5rem !important;
+  }
+
+  .gap-xxl-5 {
+    gap: 3rem !important;
+  }
+
+  .justify-content-xxl-start {
+    justify-content: flex-start !important;
+  }
+
+  .justify-content-xxl-end {
+    justify-content: flex-end !important;
+  }
+
+  .justify-content-xxl-center {
+    justify-content: center !important;
+  }
+
+  .justify-content-xxl-between {
+    justify-content: space-between !important;
+  }
+
+  .justify-content-xxl-around {
+    justify-content: space-around !important;
+  }
+
+  .justify-content-xxl-evenly {
+    justify-content: space-evenly !important;
+  }
+
+  .align-items-xxl-start {
+    align-items: flex-start !important;
+  }
+
+  .align-items-xxl-end {
+    align-items: flex-end !important;
+  }
+
+  .align-items-xxl-center {
+    align-items: center !important;
+  }
+
+  .align-items-xxl-baseline {
+    align-items: baseline !important;
+  }
+
+  .align-items-xxl-stretch {
+    align-items: stretch !important;
+  }
+
+  .align-content-xxl-start {
+    align-content: flex-start !important;
+  }
+
+  .align-content-xxl-end {
+    align-content: flex-end !important;
+  }
+
+  .align-content-xxl-center {
+    align-content: center !important;
+  }
+
+  .align-content-xxl-between {
+    align-content: space-between !important;
+  }
+
+  .align-content-xxl-around {
+    align-content: space-around !important;
+  }
+
+  .align-content-xxl-stretch {
+    align-content: stretch !important;
+  }
+
+  .align-self-xxl-auto {
+    align-self: auto !important;
+  }
+
+  .align-self-xxl-start {
+    align-self: flex-start !important;
+  }
+
+  .align-self-xxl-end {
+    align-self: flex-end !important;
+  }
+
+  .align-self-xxl-center {
+    align-self: center !important;
+  }
+
+  .align-self-xxl-baseline {
+    align-self: baseline !important;
+  }
+
+  .align-self-xxl-stretch {
+    align-self: stretch !important;
+  }
+
+  .order-xxl-first {
+    order: -1 !important;
+  }
+
+  .order-xxl-0 {
+    order: 0 !important;
+  }
+
+  .order-xxl-1 {
+    order: 1 !important;
+  }
+
+  .order-xxl-2 {
+    order: 2 !important;
+  }
+
+  .order-xxl-3 {
+    order: 3 !important;
+  }
+
+  .order-xxl-4 {
+    order: 4 !important;
+  }
+
+  .order-xxl-5 {
+    order: 5 !important;
+  }
+
+  .order-xxl-last {
+    order: 6 !important;
+  }
+
+  .m-xxl-0 {
+    margin: 0 !important;
+  }
+
+  .m-xxl-1 {
+    margin: 0.25rem !important;
+  }
+
+  .m-xxl-2 {
+    margin: 0.5rem !important;
+  }
+
+  .m-xxl-3 {
+    margin: 1rem !important;
+  }
+
+  .m-xxl-4 {
+    margin: 1.5rem !important;
+  }
+
+  .m-xxl-5 {
+    margin: 3rem !important;
+  }
+
+  .m-xxl-auto {
+    margin: auto !important;
+  }
+
+  .mx-xxl-0 {
+    margin-left: 0 !important;
+    margin-right: 0 !important;
+  }
+
+  .mx-xxl-1 {
+    margin-left: 0.25rem !important;
+    margin-right: 0.25rem !important;
+  }
+
+  .mx-xxl-2 {
+    margin-left: 0.5rem !important;
+    margin-right: 0.5rem !important;
+  }
+
+  .mx-xxl-3 {
+    margin-left: 1rem !important;
+    margin-right: 1rem !important;
+  }
+
+  .mx-xxl-4 {
+    margin-left: 1.5rem !important;
+    margin-right: 1.5rem !important;
+  }
+
+  .mx-xxl-5 {
+    margin-left: 3rem !important;
+    margin-right: 3rem !important;
+  }
+
+  .mx-xxl-auto {
+    margin-left: auto !important;
+    margin-right: auto !important;
+  }
+
+  .my-xxl-0 {
+    margin-top: 0 !important;
+    margin-bottom: 0 !important;
+  }
+
+  .my-xxl-1 {
+    margin-top: 0.25rem !important;
+    margin-bottom: 0.25rem !important;
+  }
+
+  .my-xxl-2 {
+    margin-top: 0.5rem !important;
+    margin-bottom: 0.5rem !important;
+  }
+
+  .my-xxl-3 {
+    margin-top: 1rem !important;
+    margin-bottom: 1rem !important;
+  }
+
+  .my-xxl-4 {
+    margin-top: 1.5rem !important;
+    margin-bottom: 1.5rem !important;
+  }
+
+  .my-xxl-5 {
+    margin-top: 3rem !important;
+    margin-bottom: 3rem !important;
+  }
+
+  .my-xxl-auto {
+    margin-top: auto !important;
+    margin-bottom: auto !important;
+  }
+
+  .mt-xxl-0 {
+    margin-top: 0 !important;
+  }
+
+  .mt-xxl-1 {
+    margin-top: 0.25rem !important;
+  }
+
+  .mt-xxl-2 {
+    margin-top: 0.5rem !important;
+  }
+
+  .mt-xxl-3 {
+    margin-top: 1rem !important;
+  }
+
+  .mt-xxl-4 {
+    margin-top: 1.5rem !important;
+  }
+
+  .mt-xxl-5 {
+    margin-top: 3rem !important;
+  }
+
+  .mt-xxl-auto {
+    margin-top: auto !important;
+  }
+
+  .me-xxl-0 {
+    margin-left: 0 !important;
+  }
+
+  .me-xxl-1 {
+    margin-left: 0.25rem !important;
+  }
+
+  .me-xxl-2 {
+    margin-left: 0.5rem !important;
+  }
+
+  .me-xxl-3 {
+    margin-left: 1rem !important;
+  }
+
+  .me-xxl-4 {
+    margin-left: 1.5rem !important;
+  }
+
+  .me-xxl-5 {
+    margin-left: 3rem !important;
+  }
+
+  .me-xxl-auto {
+    margin-left: auto !important;
+  }
+
+  .mb-xxl-0 {
+    margin-bottom: 0 !important;
+  }
+
+  .mb-xxl-1 {
+    margin-bottom: 0.25rem !important;
+  }
+
+  .mb-xxl-2 {
+    margin-bottom: 0.5rem !important;
+  }
+
+  .mb-xxl-3 {
+    margin-bottom: 1rem !important;
+  }
+
+  .mb-xxl-4 {
+    margin-bottom: 1.5rem !important;
+  }
+
+  .mb-xxl-5 {
+    margin-bottom: 3rem !important;
+  }
+
+  .mb-xxl-auto {
+    margin-bottom: auto !important;
+  }
+
+  .ms-xxl-0 {
+    margin-right: 0 !important;
+  }
+
+  .ms-xxl-1 {
+    margin-right: 0.25rem !important;
+  }
+
+  .ms-xxl-2 {
+    margin-right: 0.5rem !important;
+  }
+
+  .ms-xxl-3 {
+    margin-right: 1rem !important;
+  }
+
+  .ms-xxl-4 {
+    margin-right: 1.5rem !important;
+  }
+
+  .ms-xxl-5 {
+    margin-right: 3rem !important;
+  }
+
+  .ms-xxl-auto {
+    margin-right: auto !important;
+  }
+
+  .p-xxl-0 {
+    padding: 0 !important;
+  }
+
+  .p-xxl-1 {
+    padding: 0.25rem !important;
+  }
+
+  .p-xxl-2 {
+    padding: 0.5rem !important;
+  }
+
+  .p-xxl-3 {
+    padding: 1rem !important;
+  }
+
+  .p-xxl-4 {
+    padding: 1.5rem !important;
+  }
+
+  .p-xxl-5 {
+    padding: 3rem !important;
+  }
+
+  .px-xxl-0 {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+
+  .px-xxl-1 {
+    padding-left: 0.25rem !important;
+    padding-right: 0.25rem !important;
+  }
+
+  .px-xxl-2 {
+    padding-left: 0.5rem !important;
+    padding-right: 0.5rem !important;
+  }
+
+  .px-xxl-3 {
+    padding-left: 1rem !important;
+    padding-right: 1rem !important;
+  }
+
+  .px-xxl-4 {
+    padding-left: 1.5rem !important;
+    padding-right: 1.5rem !important;
+  }
+
+  .px-xxl-5 {
+    padding-left: 3rem !important;
+    padding-right: 3rem !important;
+  }
+
+  .py-xxl-0 {
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+
+  .py-xxl-1 {
+    padding-top: 0.25rem !important;
+    padding-bottom: 0.25rem !important;
+  }
+
+  .py-xxl-2 {
+    padding-top: 0.5rem !important;
+    padding-bottom: 0.5rem !important;
+  }
+
+  .py-xxl-3 {
+    padding-top: 1rem !important;
+    padding-bottom: 1rem !important;
+  }
+
+  .py-xxl-4 {
+    padding-top: 1.5rem !important;
+    padding-bottom: 1.5rem !important;
+  }
+
+  .py-xxl-5 {
+    padding-top: 3rem !important;
+    padding-bottom: 3rem !important;
+  }
+
+  .pt-xxl-0 {
+    padding-top: 0 !important;
+  }
+
+  .pt-xxl-1 {
+    padding-top: 0.25rem !important;
+  }
+
+  .pt-xxl-2 {
+    padding-top: 0.5rem !important;
+  }
+
+  .pt-xxl-3 {
+    padding-top: 1rem !important;
+  }
+
+  .pt-xxl-4 {
+    padding-top: 1.5rem !important;
+  }
+
+  .pt-xxl-5 {
+    padding-top: 3rem !important;
+  }
+
+  .pe-xxl-0 {
+    padding-left: 0 !important;
+  }
+
+  .pe-xxl-1 {
+    padding-left: 0.25rem !important;
+  }
+
+  .pe-xxl-2 {
+    padding-left: 0.5rem !important;
+  }
+
+  .pe-xxl-3 {
+    padding-left: 1rem !important;
+  }
+
+  .pe-xxl-4 {
+    padding-left: 1.5rem !important;
+  }
+
+  .pe-xxl-5 {
+    padding-left: 3rem !important;
+  }
+
+  .pb-xxl-0 {
+    padding-bottom: 0 !important;
+  }
+
+  .pb-xxl-1 {
+    padding-bottom: 0.25rem !important;
+  }
+
+  .pb-xxl-2 {
+    padding-bottom: 0.5rem !important;
+  }
+
+  .pb-xxl-3 {
+    padding-bottom: 1rem !important;
+  }
+
+  .pb-xxl-4 {
+    padding-bottom: 1.5rem !important;
+  }
+
+  .pb-xxl-5 {
+    padding-bottom: 3rem !important;
+  }
+
+  .ps-xxl-0 {
+    padding-right: 0 !important;
+  }
+
+  .ps-xxl-1 {
+    padding-right: 0.25rem !important;
+  }
+
+  .ps-xxl-2 {
+    padding-right: 0.5rem !important;
+  }
+
+  .ps-xxl-3 {
+    padding-right: 1rem !important;
+  }
+
+  .ps-xxl-4 {
+    padding-right: 1.5rem !important;
+  }
+
+  .ps-xxl-5 {
+    padding-right: 3rem !important;
+  }
+
+  .text-xxl-start {
+    text-align: right !important;
+  }
+
+  .text-xxl-end {
+    text-align: left !important;
+  }
+
+  .text-xxl-center {
+    text-align: center !important;
+  }
+}
+@media (min-width: 1200px) {
+  .fs-1 {
+    font-size: 2.5rem !important;
+  }
+
+  .fs-2 {
+    font-size: 2rem !important;
+  }
+
+  .fs-3 {
+    font-size: 1.75rem !important;
+  }
+
+  .fs-4 {
+    font-size: 1.5rem !important;
+  }
+}
+@media print {
+  .d-print-inline {
+    display: inline !important;
+  }
+
+  .d-print-inline-block {
+    display: inline-block !important;
+  }
+
+  .d-print-block {
+    display: block !important;
+  }
+
+  .d-print-grid {
+    display: grid !important;
+  }
+
+  .d-print-table {
+    display: table !important;
+  }
+
+  .d-print-table-row {
+    display: table-row !important;
+  }
+
+  .d-print-table-cell {
+    display: table-cell !important;
+  }
+
+  .d-print-flex {
+    display: flex !important;
+  }
+
+  .d-print-inline-flex {
+    display: inline-flex !important;
+  }
+
+  .d-print-none {
+    display: none !important;
+  }
+}
+/*# sourceMappingURL=bootstrap.rtl.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map
new file mode 100644
index 0000000..187048e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["bootstrap.css","../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","../../scss/vendor/_rfs.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACAhB;;;;;EAAA;ACAA;EAQI,kBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,kBAAA;EAAA,iBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAAA,kBAAA;EAAA,gBAAA;EAAA,kBAAA;EAAA,uBAAA;EAIA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAIA,qBAAA;EAAA,uBAAA;EAAA,qBAAA;EAAA,kBAAA;EAAA,qBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAIA,8BAAA;EAAA,iCAAA;EAAA,6BAAA;EAAA,2BAAA;EAAA,6BAAA;EAAA,4BAAA;EAAA,6BAAA;EAAA,yBAAA;EAGF,6BAAA;EACA,uBAAA;EACA,yBAAA;EAMA,qNAAA;EACA,yGAAA;EACA,yFAAA;EAQA,gDAAA;EACA,yBAAA;EACA,0BAAA;EACA,0BAAA;EACA,wBAAA;EAIA,kBAAA;AFSF;;AG3CA;;;EAGE,sBAAA;AH8CF;;AG/BI;EANJ;IAOM,uBAAA;EHmCJ;AACF;;AGtBA;EACE,SAAA;EACA,uCAAA;ECmPI,mCALI;ED5OR,uCAAA;EACA,uCAAA;EACA,2BAAA;EACA,qCAAA;EACA,mCAAA;EACA,8BAAA;EACA,6CAAA;AHyBF;;AGfA;EACE,cAAA;EACA,cEqkB4B;EFpkB5B,8BAAA;EACA,SAAA;EACA,aEokB4B;ALljB9B;;AGfA;EACE,WE8a4B;AL5Z9B;;AGRA;EACE,aAAA;EACA,qBE0gB4B;EFvgB5B,gBE0gB4B;EFzgB5B,gBE0gB4B;ALjgB9B;;AGLA;ECwMQ,iCAAA;AJ/LR;AI6BI;EDtCJ;IC+MQ,iBAAA;EJlMN;AACF;;AGTA;ECmMQ,iCAAA;AJtLR;AIoBI;EDjCJ;IC0MQ,eAAA;EJzLN;AACF;;AGbA;EC8LQ,+BAAA;AJ7KR;AIWI;ED5BJ;ICqMQ,kBAAA;EJhLN;AACF;;AGjBA;ECyLQ,iCAAA;AJpKR;AIEI;EDvBJ;ICgMQ,iBAAA;EJvKN;AACF;;AGrBA;ECgLM,kBALI;AJlJV;;AGpBA;EC2KM,eALI;AJ9IV;;AGbA;EACE,aAAA;EACA,mBEwT0B;ALxS5B;;AGLA;;EAEE,yCAAA;EAAA,iCAAA;EACA,YAAA;EACA,sCAAA;EAAA,8BAAA;AHQF;;AGFA;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;AHKF;;AGCA;;EAEE,mBAAA;AHEF;;AGCA;;;EAGE,aAAA;EACA,mBAAA;AHEF;;AGCA;;;;EAIE,gBAAA;AHEF;;AGCA;EACE,gBE6Y4B;AL3Y9B;;AGGA;EACE,qBAAA;EACA,eAAA;AHAF;;AGMA;EACE,gBAAA;AHHF;;AGWA;;EAEE,mBEsX4B;AL9X9B;;AGgBA;EC4EM,kBALI;AJnFV;;AGmBA;EACE,cEkb4B;EFjb5B,yBEyb4B;ALzc9B;;AGyBA;;EAEE,kBAAA;ECwDI,iBALI;EDjDR,cAAA;EACA,wBAAA;AHtBF;;AGyBA;EAAM,eAAA;AHrBN;;AGsBA;EAAM,WAAA;AHlBN;;AGuBA;EACE,cEpNQ;EFqNR,0BEwLwC;AL5M1C;AGsBE;EACE,cEuLsC;AL3M1C;;AG+BE;EAEE,cAAA;EACA,qBAAA;AH7BJ;;AGoCA;;;;EAIE,qCEmS4B;EDrRxB,cALI;EDPR,eAAA;EACA,2BAAA;AHjCF;;AGwCA;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;ECAI,kBALI;AJ/BV;AGyCE;ECLI,kBALI;EDYN,cAAA;EACA,kBAAA;AHvCJ;;AG2CA;ECZM,kBALI;EDmBR,cE1QQ;EF2QR,qBAAA;AHxCF;AG2CE;EACE,cAAA;AHzCJ;;AG6CA;EACE,sBAAA;ECxBI,kBALI;ED+BR,WEvTS;EFwTT,yBE/SS;ECEP,qBAAA;ANoQJ;AG4CE;EACE,UAAA;EC/BE,cALI;EDsCN,gBEgQ0B;AL1S9B;;AGmDA;EACE,gBAAA;AHhDF;;AGsDA;;EAEE,sBAAA;AHnDF;;AG2DA;EACE,oBAAA;EACA,yBAAA;AHxDF;;AG2DA;EACE,mBE8T4B;EF7T5B,sBE6T4B;EF5T5B,cE1VS;EF2VT,iBAAA;AHxDF;;AG+DA;EAEE,mBAAA;EACA,gCAAA;AH7DF;;AGgEA;;;;;;EAME,qBAAA;EACA,mBAAA;EACA,eAAA;AH7DF;;AGqEA;EACE,qBAAA;AHlEF;;AGwEA;EAEE,gBAAA;AHtEF;;AG8EA;EACE,UAAA;AH3EF;;AGgFA;;;;;EAKE,SAAA;EACA,oBAAA;EC9HI,kBALI;EDqIR,oBAAA;AH7EF;;AGiFA;;EAEE,oBAAA;AH9EF;;AGmFA;EACE,eAAA;AHhFF;;AGmFA;EAGE,iBAAA;AHlFF;AGqFE;EACE,UAAA;AHnFJ;;AG0FA;EACE,aAAA;AHvFF;;AG+FA;;;;EAIE,0BAAA;AH5FF;AG+FI;;;;EACE,eAAA;AH1FN;;AGiGA;EACE,UAAA;EACA,kBAAA;AH9FF;;AGmGA;EACE,gBAAA;AHhGF;;AG0GA;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;AHvGF;;AG+GA;EACE,YAAA;EACA,WAAA;EACA,UAAA;EACA,qBEmJ4B;EDtWtB,iCAAA;EDsNN,oBAAA;AH7GF;AI3QI;EDiXJ;ICxMQ,iBAAA;EJsGN;AACF;AG0GE;EACE,YAAA;AHxGJ;;AG+GA;;;;;;;EAOE,UAAA;AH5GF;;AG+GA;EACE,YAAA;AH5GF;;AGqHA;EACE,oBAAA;EACA,6BAAA;AHlHF;;AC7aA;;;;EDKE,cAAc;AAChB;AG4iBA;EACE,wBAAA;AH1HF;;AG+HA;EACE,UAAA;AH5HF;;AGkIA;EACE,aAAA;AH/HF;;AGqIA;EACE,aAAA;EACA,0BAAA;AHlIF;;AGuIA;EACE,qBAAA;AHpIF;;AGyIA;EACE,SAAA;AHtIF;;AG6IA;EACE,kBAAA;EACA,eAAA;AH1IF;;AGkJA;EACE,wBAAA;AH/IF;;AGuJA;EACE,wBAAA;AHpJF;;AO/bA;EHyQM,kBALI;EGlQR,gBF6lB4B;AL3J9B;;AO7bE;EHsQM,iCAAA;EGpQJ,gBFglBkB;EE/kBlB,gBFikB0B;ALjI9B;AI/VI;EGpGF;IH6QM,eAAA;EJ0LN;AACF;;AOxcE;EHsQM,iCAAA;EGpQJ,gBFglBkB;EE/kBlB,gBFikB0B;ALtH9B;AI1WI;EGpGF;IH6QM,iBAAA;EJqMN;AACF;;AOndE;EHsQM,iCAAA;EGpQJ,gBFglBkB;EE/kBlB,gBFikB0B;AL3G9B;AIrXI;EGpGF;IH6QM,eAAA;EJgNN;AACF;;AO9dE;EHsQM,iCAAA;EGpQJ,gBFglBkB;EE/kBlB,gBFikB0B;ALhG9B;AIhYI;EGpGF;IH6QM,iBAAA;EJ2NN;AACF;;AOzeE;EHsQM,iCAAA;EGpQJ,gBFglBkB;EE/kBlB,gBFikB0B;ALrF9B;AI3YI;EGpGF;IH6QM,eAAA;EJsON;AACF;;AOpfE;EHsQM,iCAAA;EGpQJ,gBFglBkB;EE/kBlB,gBFikB0B;AL1E9B;AItZI;EGpGF;IH6QM,iBAAA;EJiPN;AACF;;AOzeA;ECrDE,gBAAA;EACA,gBAAA;ARkiBF;;AOzeA;EC1DE,gBAAA;EACA,gBAAA;ARuiBF;;AO3eA;EACE,qBAAA;AP8eF;AO5eE;EACE,mBFolB0B;ALtG9B;;AOpeA;EHsNM,kBALI;EG/MR,yBAAA;APueF;;AOneA;EACE,mBFgSO;EDjFH,kBALI;AJ6RV;AOpeE;EACE,gBAAA;APseJ;;AOleA;EACE,iBAAA;EACA,mBFsRO;EDjFH,kBALI;EG9LR,cFpFS;ALyjBX;AOneE;EACE,aAAA;APqeJ;;ASnkBA;ECIE,eAAA;EAGA,YAAA;AVikBF;;ASlkBA;EACE,gBJ08CkC;EIz8ClC,sBJPS;EIQT,yBAAA;EHGE,sBAAA;EIRF,eAAA;EAGA,YAAA;AV0kBF;;AS5jBA;EAEE,qBAAA;AT8jBF;;AS3jBA;EACE,qBAAA;EACA,cAAA;AT8jBF;;AS3jBA;EL+PM,kBALI;EKxPR,cJ1BS;ALwlBX;;AWhmBE;;;;;;;ECHA,WAAA;EACA,yCAAA;EACA,0CAAA;EACA,iBAAA;EACA,kBAAA;AZ6mBF;;AarjBI;EF5CE;IACE,gBNuce;EL8JrB;AACF;Aa3jBI;EF5CE;IACE,gBNuce;ELmKrB;AACF;AahkBI;EF5CE;IACE,gBNuce;ELwKrB;AACF;AarkBI;EF5CE;IACE,iBNuce;EL6KrB;AACF;Aa1kBI;EF5CE;IACE,iBNuce;ELkLrB;AACF;AczoBE;ECAA,qBAAA;EACA,gBAAA;EACA,aAAA;EACA,eAAA;EACA,yCAAA;EACA,2CAAA;EACA,4CAAA;Af4oBF;Ac/oBI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O;EekBP,sBf3BO;Ee4BP,qBfozBoC;EenzBpC,UAAA;EAKE,kDf6rB0B;ALq7ChC;AoB3mEE;EAEE,aAAA;ApB4mEJ;AoBxmEE;EACE,cf1CO;Ee4CP,UAAA;ApBymEJ;AoB5mEE;EACE,cf1CO;Ee4CP,UAAA;ApBymEJ;AoBjmEE;EAEE,yBf1DO;Ee6DP,UAAA;ApBgmEJ;AoB5lEE;EACE,yBAAA;EACA,0BAAA;EACA,2BfgpB0B;EehpB1B,0BfgpB0B;Ee/oB1B,cf9DO;EiBbT,yBjBMS;EeuEP,oBAAA;EACA,qBAAA;EACA,mBAAA;EACA,eAAA;EACA,4Bfsa0B;Eera1B,gBAAA;ECtEE,qIDuEF;ApB8lEJ;AqBjqEM;EDuDJ;ICtDM,gBAAA;ErBoqEN;AACF;AoBhmEE;EACE,yBfm5B8B;AL+sClC;AoB/lEE;EACE,yBAAA;EACA,0BAAA;EACA,2Bf6nB0B;Ee7nB1B,0Bf6nB0B;Ee5nB1B,cfjFO;EiBbT,yBjBMS;Ee0FP,oBAAA;EACA,qBAAA;EACA,mBAAA;EACA,eAAA;EACA,4BfmZ0B;EelZ1B,gBAAA;ECzFE,6ID0FF;EC1FE,qID0FF;ApBimEJ;AqBvrEM;ED0EJ;ICzEM,wBAAA;IAAA,gBAAA;ErB0rEN;AACF;AoBnmEE;EACE,yBfg4B8B;ALquClC;;AoB5lEA;EACE,cAAA;EACA,WAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBf+c4B;Ee9c5B,cf5GS;Ee6GT,6BAAA;EACA,yBAAA;EACA,mBAAA;ApB+lEF;AoB7lEE;EAEE,eAAA;EACA,gBAAA;ApB8lEJ;;AoBnlEA;EACE,sCfstBsC;EertBtC,uBAAA;EhBmJI,mBALI;EE7QN,qBAAA;ANutEJ;AoBplEE;EACE,uBAAA;EACA,wBAAA;EACA,0BfilB0B;EejlB1B,yBfilB0B;ALqgD9B;AoBnlEE;EACE,uBAAA;EACA,wBAAA;EACA,0Bf2kB0B;Ee3kB1B,yBf2kB0B;AL0gD9B;;AoBjlEA;EACE,oCfosBsC;EensBtC,oBAAA;EhBgII,kBALI;EE7QN,qBAAA;ANwuEJ;AoBllEE;EACE,oBAAA;EACA,qBAAA;EACA,wBfkkB0B;EelkB1B,uBfkkB0B;ALkhD9B;AoBjlEE;EACE,oBAAA;EACA,qBAAA;EACA,wBf4jB0B;Ee5jB1B,uBf4jB0B;ALuhD9B;;AoB3kEE;EACE,uCf2qBoC;ALm6CxC;AoB3kEE;EACE,sCfwqBoC;ALq6CxC;AoB1kEE;EACE,oCfqqBoC;ALu6CxC;;AoBvkEA;EACE,WfmqBsC;EelqBtC,YAAA;EACA,iBfkhB4B;ALwjD9B;AoBxkEE;EACE,eAAA;ApB0kEJ;AoBvkEE;EACE,aAAA;Ed/LA,sBAAA;ANywEJ;AoBtkEE;EACE,aAAA;EdpMA,sBAAA;AN6wEJ;;AuB3xEA;EACE,cAAA;EACA,WAAA;EACA,0CAAA;EAEA,uCAAA;EnB2RI,eALI;EmBnRR,gBlBwjB4B;EkBvjB5B,gBlB6jB4B;EkB5jB5B,clBES;EkBDT,sBlBRS;EkBST,iPAAA;EACA,4BAAA;EACA,wClBs6BkC;EkBr6BlC,0BlBs6BkC;EkBr6BlC,yBAAA;EjBFE,sBAAA;EeHE,wEEQJ;EACA,wBAAA;EAAA,qBAAA;EAAA,gBAAA;AvB2xEF;AqBhyEM;EEfN;IFgBQ,gBAAA;ErBmyEN;AACF;AuB9xEE;EACE,qBlB4zBoC;EkB3zBpC,UAAA;EAKE,kDlBu6B4B;ALq3ClC;AuBxxEE;EAEE,qBlBsrB0B;EkBrrB1B,sBAAA;AvByxEJ;AuBtxEE;EAEE,yBlBpCO;AL2zEX;AuBlxEE;EACE,kBAAA;EACA,0BAAA;AvBoxEJ;;AuBhxEA;EACE,oBlB+qB4B;EkB9qB5B,uBlB8qB4B;EkB7qB5B,qBlB8qB4B;EDrcxB,mBALI;AJgjEV;;AuBhxEA;EACE,mBlB4qB4B;EkB3qB5B,sBlB2qB4B;EkB1qB5B,mBlB2qB4B;EDzcxB,kBALI;AJujEV;;AwBn1EA;EACE,cAAA;EACA,kBnB22BwC;EmB12BxC,oBnB22BwC;EmB12BxC,uBnB22BwC;AL2+C1C;AwBp1EE;EACE,YAAA;EACA,oBAAA;AxBs1EJ;;AwBl1EA;EACE,UnB+1BwC;EmB91BxC,WnB81BwC;EmB71BxC,kBAAA;EACA,mBAAA;EACA,sBnBbS;EmBcT,4BAAA;EACA,2BAAA;EACA,wBAAA;EACA,qCnBk2BwC;EmBj2BxC,wBAAA;EAAA,qBAAA;EAAA,gBAAA;EACA,iCAAA;EAAA,mBAAA;AxBq1EF;AwBl1EE;ElBXE,qBAAA;ANg2EJ;AwBj1EE;EAEE,kBnBy1BsC;ALy/C1C;AwB/0EE;EACE,uBnBg1BsC;ALigD1C;AwB90EE;EACE,qBnB4yBoC;EmB3yBpC,UAAA;EACA,kDnByrB4B;ALupDhC;AwB70EE;EACE,yBnBZM;EmBaN,qBnBbM;AL41EV;AwB70EI;EAII,+OAAA;AxB40ER;AwBx0EI;EAII,uJAAA;AxBu0ER;AwBl0EE;EACE,yBnBjCM;EmBkCN,qBnBlCM;EmBuCJ,yOAAA;AxBg0EN;AwB5zEE;EACE,oBAAA;EACA,YAAA;EACA,YnBwzBuC;ALsgD3C;AwBvzEI;EACE,YnBgzBqC;ALygD3C;;AwB3yEA;EACE,oBnB2yBgC;ALmgDlC;AwB5yEE;EACE,UnBuyB8B;EmBtyB9B,oBAAA;EACA,wKAAA;EACA,iCAAA;ElB9FA,kBAAA;EeHE,iDGmGF;AxB8yEJ;AqB74EM;EGyFJ;IHxFM,gBAAA;ErBg5EN;AACF;AwBjzEI;EACE,0JAAA;AxBmzEN;AwBhzEI;EACE,gCnBsyB4B;EmBjyB1B,uJAAA;AxB8yER;;AwBxyEA;EACE,qBAAA;EACA,iBnBywBgC;ALkiDlC;;AwBxyEA;EACE,kBAAA;EACA,sBAAA;EACA,oBAAA;AxB2yEF;AwBvyEI;EACE,oBAAA;EACA,YAAA;EACA,anB2nBwB;AL8qD9B;;AyBv7EA;EACE,WAAA;EACA,cAAA;EACA,UAAA;EACA,6BAAA;EACA,wBAAA;EAAA,qBAAA;EAAA,gBAAA;AzB07EF;AyBx7EE;EACE,UAAA;AzB07EJ;AyBt7EI;EAA0B,kEpBk9Ba;ALu+C3C;AyBx7EI;EAA0B,kEpBi9Ba;AL0+C3C;AyBx7EE;EACE,SAAA;AzB07EJ;AyBv7EE;EACE,WpBm8BuC;EoBl8BvC,YpBk8BuC;EoBj8BvC,oBAAA;EHzBF,yBjBkCQ;EoBPN,SpBk8BuC;EC98BvC,mBAAA;EeHE,oHIkBF;EJlBE,4GIkBF;EACA,wBAAA;EAAA,gBAAA;AzBw7EJ;AqBv8EM;EIMJ;IJLM,wBAAA;IAAA,gBAAA;ErB08EN;AACF;AyB37EI;EHjCF,yBjBk+ByC;AL6/C3C;AyBz7EE;EACE,WpB46B8B;EoB36B9B,cpB46B8B;EoB36B9B,kBAAA;EACA,epB26B8B;EoB16B9B,yBpBpCO;EoBqCP,yBAAA;EnB7BA,mBAAA;ANy9EJ;AyBv7EE;EACE,WpBw6BuC;EoBv6BvC,YpBu6BuC;EiB19BzC,yBjBkCQ;EoBmBN,SpBw6BuC;EC98BvC,mBAAA;EeHE,iHI4CF;EJ5CE,4GI4CF;EACA,qBAAA;EAAA,gBAAA;AzBw7EJ;AqBj+EM;EIiCJ;IJhCM,qBAAA;IAAA,gBAAA;ErBo+EN;AACF;AyB37EI;EH3DF,yBjBk+ByC;ALuhD3C;AyBz7EE;EACE,WpBk5B8B;EoBj5B9B,cpBk5B8B;EoBj5B9B,kBAAA;EACA,epBi5B8B;EoBh5B9B,yBpB9DO;EoB+DP,yBAAA;EnBvDA,mBAAA;ANm/EJ;AyBv7EE;EACE,oBAAA;AzBy7EJ;AyBv7EI;EACE,yBpBtEK;AL+/EX;AyBt7EI;EACE,yBpB1EK;ALkgFX;;A0B/gFA;EACE,kBAAA;A1BkhFF;A0BhhFE;;EAEE,0BrB6+B8B;EqB5+B9B,iBrB6+B8B;ALqiDlC;A0B/gFE;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,YAAA;EACA,qBAAA;EACA,oBAAA;EACA,6BAAA;EACA,wBAAA;ELDE,gEKEF;A1BihFJ;AqB/gFM;EKXJ;ILYM,gBAAA;ErBkhFN;AACF;A0BlhFE;EACE,qBAAA;A1BohFJ;A0BlhFI;EACE,kBAAA;A1BohFN;A0BrhFI;EACE,kBAAA;A1BohFN;A0BjhFI;EAEE,qBrBu9B4B;EqBt9B5B,wBrBu9B4B;AL2jDlC;A0BrhFI;EAEE,qBrBu9B4B;EqBt9B5B,wBrBu9B4B;AL2jDlC;A0B/gFI;EACE,qBrBk9B4B;EqBj9B5B,wBrBk9B4B;AL+jDlC;A0B7gFE;EACE,qBrB48B8B;EqB38B9B,wBrB48B8B;ALmkDlC;A0BzgFI;EACE,arBs8B4B;EqBr8B5B,+DrBs8B4B;ALukDlC;A0B/gFI;;;EACE,arBs8B4B;EqBr8B5B,+DrBs8B4B;ALukDlC;A0BxgFI;EACE,arB+7B4B;EqB97B5B,+DrB+7B4B;AL2kDlC;;A2BhkFA;EACE,kBAAA;EACA,aAAA;EACA,eAAA;EACA,oBAAA;EACA,WAAA;A3BmkFF;A2BjkFE;;EAEE,kBAAA;EACA,cAAA;EACA,SAAA;EACA,YAAA;A3BmkFJ;A2B/jFE;;EAEE,UAAA;A3BikFJ;A2B3jFE;EACE,kBAAA;EACA,UAAA;A3B6jFJ;A2B3jFI;EACE,UAAA;A3B6jFN;;A2BljFA;EACE,aAAA;EACA,mBAAA;EACA,yBAAA;EvBsPI,eALI;EuB/OR,gBtBohB4B;EsBnhB5B,gBtByhB4B;EsBxhB5B,ctBlCS;EsBmCT,kBAAA;EACA,mBAAA;EACA,yBtB5CS;EsB6CT,yBAAA;ErBpCE,sBAAA;AN0lFJ;;A2B5iFA;;;;EAIE,oBAAA;EvBgOI,kBALI;EE7QN,qBAAA;ANmmFJ;;A2B5iFA;;;;EAIE,uBAAA;EvBuNI,mBALI;EE7QN,qBAAA;AN4mFJ;;A2B5iFA;;EAEE,kBAAA;A3B+iFF;;A2BliFI;;ErB/DA,yBAAA;EACA,4BAAA;ANsmFJ;A2BjiFI;;ErBtEA,yBAAA;EACA,4BAAA;AN2mFJ;A2B3hFE;EACE,kBAAA;ErBpEA,0BAAA;EACA,6BAAA;ANkmFJ;;A4B3nFE;EACE,aAAA;EACA,WAAA;EACA,mBvB+wBoC;EDtgBlC,kBALI;EwBjQN,cvB8+BqB;AL+oDzB;;A4B1nFE;EACE,kBAAA;EACA,SAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;EACA,uBAAA;EACA,kBAAA;ExB4PE,mBALI;EwBpPN,WAvBc;EAwBd,wCAvBiB;EtBHjB,sBAAA;ANupFJ;;A4BxnFI;;;;EAEE,cAAA;A5B6nFN;;A4B3qFI;EAoDE,qBvBm9BmB;EuBh9BjB,mCvBqyBgC;EuBpyBhC,4PAAA;EACA,4BAAA;EACA,0DAAA;EACA,gEAAA;A5BynFR;A4BtnFM;EACE,qBvBw8BiB;EuBv8BjB,iDA/Ca;A5BuqFrB;;A4BxrFI;EAyEI,mCvBmxBgC;EuBlxBhC,iFAAA;A5BmnFR;;A4B7rFI;EAiFE,qBvBs7BmB;AL0rDzB;A4B7mFQ;EAEE,sBvBk2B8B;EuBj2B9B,6dAAA;EACA,6DAAA;EACA,2EAAA;A5B8mFV;A4B1mFM;EACE,qBvBy6BiB;EuBx6BjB,iDA9Ea;A5B0rFrB;;A4B3sFI;EAsGE,qBvBi6BmB;ALwsDzB;A4BvmFM;EACE,yBvB85BiB;AL2sDzB;A4BtmFM;EACE,iDA5Fa;A5BosFrB;A4BrmFM;EACE,cvBs5BiB;ALitDzB;;A4BlmFI;EACE,mBAAA;A5BqmFN;;A4B5tFI;;;EA+HI,UAAA;A5BmmFR;A4B/lFM;;;EACE,UAAA;A5BmmFR;;A4BptFE;EACE,aAAA;EACA,WAAA;EACA,mBvB+wBoC;EDtgBlC,kBALI;EwBjQN,cvB8+BqB;ALwuDzB;;A4BntFE;EACE,kBAAA;EACA,SAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;EACA,uBAAA;EACA,kBAAA;ExB4PE,mBALI;EwBpPN,WAvBc;EAwBd,wCAvBiB;EtBHjB,sBAAA;ANgvFJ;;A4BjtFI;;;;EAEE,cAAA;A5BstFN;;A4BpwFI;EAoDE,qBvBm9BmB;EuBh9BjB,mCvBqyBgC;EuBpyBhC,4UAAA;EACA,4BAAA;EACA,0DAAA;EACA,gEAAA;A5BktFR;A4B/sFM;EACE,qBvBw8BiB;EuBv8BjB,iDA/Ca;A5BgwFrB;;A4BjxFI;EAyEI,mCvBmxBgC;EuBlxBhC,iFAAA;A5B4sFR;;A4BtxFI;EAiFE,qBvBs7BmB;ALmxDzB;A4BtsFQ;EAEE,sBvBk2B8B;EuBj2B9B,6iBAAA;EACA,6DAAA;EACA,2EAAA;A5BusFV;A4BnsFM;EACE,qBvBy6BiB;EuBx6BjB,iDA9Ea;A5BmxFrB;;A4BpyFI;EAsGE,qBvBi6BmB;ALiyDzB;A4BhsFM;EACE,yBvB85BiB;ALoyDzB;A4B/rFM;EACE,iDA5Fa;A5B6xFrB;A4B9rFM;EACE,cvBs5BiB;AL0yDzB;;A4B3rFI;EACE,mBAAA;A5B8rFN;;A4BrzFI;;;EAiII,UAAA;A5B0rFR;A4BxrFM;;;EACE,UAAA;A5B4rFR;;A6Bl0FA;EACE,qBAAA;EAEA,gBxB8jB4B;EwB7jB5B,gBxBmkB4B;EwBlkB5B,cxBQS;EwBPT,kBAAA;EACA,qBAAA;EAEA,sBAAA;EACA,eAAA;EACA,yBAAA;EAAA,sBAAA;EAAA,iBAAA;EACA,6BAAA;EACA,6BAAA;EC8GA,yBAAA;E1BsKI,eALI;EE7QN,sBAAA;EeHE,qIQGJ;A7Bq0FF;AqBp0FM;EQhBN;IRiBQ,gBAAA;ErBu0FN;AACF;A6Bx0FE;EACE,cxBLO;AL+0FX;A6Bt0FE;EAEE,UAAA;EACA,kDxB0sB4B;AL6nEhC;A6BzzFE;EAGE,oBAAA;EACA,axBguB0B;ALylE9B;;A6B7yFE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;AL8xFf;A8Br1FE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9Bw2FjB;A8Bp1FE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,iDAAA;A9Bi1FN;A8B70FE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9Bg3FlB;A8Bv0FI;EAKI,iDAAA;A9Bq0FR;A8Bh0FE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;ALszFf;;A6B30FE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;AL4zFf;A8Bn3FE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9Bs4FjB;A8Bl3FE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,kDAAA;A9B+2FN;A8B32FE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9B84FlB;A8Br2FI;EAKI,kDAAA;A9Bm2FR;A8B91FE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;ALo1Ff;;A6Bz2FE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;AL01Ff;A8Bj5FE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9Bo6FjB;A8Bh5FE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,iDAAA;A9B64FN;A8Bz4FE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9B46FlB;A8Bn4FI;EAKI,iDAAA;A9Bi4FR;A8B53FE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;ALk3Ff;;A6Bv4FE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;ALw3Ff;A8B/6FE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9Bk8FjB;A8B96FE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,iDAAA;A9B26FN;A8Bv6FE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9B08FlB;A8Bj6FI;EAKI,iDAAA;A9B+5FR;A8B15FE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;ALg5Ff;;A6Br6FE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;ALs5Ff;A8B78FE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9Bg+FjB;A8B58FE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,gDAAA;A9By8FN;A8Br8FE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9Bw+FlB;A8B/7FI;EAKI,gDAAA;A9B67FR;A8Bx7FE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;AL86Ff;;A6Bn8FE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;ALo7Ff;A8B3+FE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9B8/FjB;A8B1+FE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,gDAAA;A9Bu+FN;A8Bn+FE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9BsgGlB;A8B79FI;EAKI,gDAAA;A9B29FR;A8Bt9FE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;AL48Ff;;A6Bj+FE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;ALk9Ff;A8BzgGE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9B4hGjB;A8BxgGE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,kDAAA;A9BqgGN;A8BjgGE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9BoiGlB;A8B3/FI;EAKI,kDAAA;A9By/FR;A8Bp/FE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;AL0+Ff;;A6B//FE;ECvCA,WAXQ;ERLR,yBjB4Ea;EyB1Db,qBzB0Da;ALg/Ff;A8BviGE;EACE,WAdY;ERRd,yBQMmB;EAkBjB,qBAjBa;A9B0jGjB;A8BtiGE;EAEE,WArBY;ERRd,yBQMmB;EAyBjB,qBAxBa;EA6BX,+CAAA;A9BmiGN;A8B/hGE;EAKE,WAlCa;EAmCb,yBArCkB;EAwClB,qBAvCc;A9BkkGlB;A8BzhGI;EAKI,+CAAA;A9BuhGR;A8BlhGE;EAEE,WAjDe;EAkDf,yBzBYW;EyBTX,qBzBSW;ALwgGf;;A6BvhGE;ECmBA,czBJa;EyBKb,qBzBLa;AL6gGf;A8BtgGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;ALkhGf;A8BrgGE;EAEE,iDAAA;A9BsgGJ;A8BngGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;AL0hGf;A8B//FI;EAKI,iDAAA;A9B6/FR;A8Bx/FE;EAEE,czBvCW;EyBwCX,6BAAA;A9By/FJ;;A6BhjGE;ECmBA,czBJa;EyBKb,qBzBLa;ALsiGf;A8B/hGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;AL2iGf;A8B9hGE;EAEE,kDAAA;A9B+hGJ;A8B5hGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;ALmjGf;A8BxhGI;EAKI,kDAAA;A9BshGR;A8BjhGE;EAEE,czBvCW;EyBwCX,6BAAA;A9BkhGJ;;A6BzkGE;ECmBA,czBJa;EyBKb,qBzBLa;AL+jGf;A8BxjGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;ALokGf;A8BvjGE;EAEE,gDAAA;A9BwjGJ;A8BrjGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;AL4kGf;A8BjjGI;EAKI,gDAAA;A9B+iGR;A8B1iGE;EAEE,czBvCW;EyBwCX,6BAAA;A9B2iGJ;;A6BlmGE;ECmBA,czBJa;EyBKb,qBzBLa;ALwlGf;A8BjlGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;AL6lGf;A8BhlGE;EAEE,iDAAA;A9BilGJ;A8B9kGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;ALqmGf;A8B1kGI;EAKI,iDAAA;A9BwkGR;A8BnkGE;EAEE,czBvCW;EyBwCX,6BAAA;A9BokGJ;;A6B3nGE;ECmBA,czBJa;EyBKb,qBzBLa;ALinGf;A8B1mGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;ALsnGf;A8BzmGE;EAEE,gDAAA;A9B0mGJ;A8BvmGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;AL8nGf;A8BnmGI;EAKI,gDAAA;A9BimGR;A8B5lGE;EAEE,czBvCW;EyBwCX,6BAAA;A9B6lGJ;;A6BppGE;ECmBA,czBJa;EyBKb,qBzBLa;AL0oGf;A8BnoGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;AL+oGf;A8BloGE;EAEE,gDAAA;A9BmoGJ;A8BhoGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;ALupGf;A8B5nGI;EAKI,gDAAA;A9B0nGR;A8BrnGE;EAEE,czBvCW;EyBwCX,6BAAA;A9BsnGJ;;A6B7qGE;ECmBA,czBJa;EyBKb,qBzBLa;ALmqGf;A8B5pGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;ALwqGf;A8B3pGE;EAEE,kDAAA;A9B4pGJ;A8BzpGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;ALgrGf;A8BrpGI;EAKI,kDAAA;A9BmpGR;A8B9oGE;EAEE,czBvCW;EyBwCX,6BAAA;A9B+oGJ;;A6BtsGE;ECmBA,czBJa;EyBKb,qBzBLa;AL4rGf;A8BrrGE;EACE,WATY;EAUZ,yBzBTW;EyBUX,qBzBVW;ALisGf;A8BprGE;EAEE,+CAAA;A9BqrGJ;A8BlrGE;EAKE,WArBa;EAsBb,yBzBxBW;EyByBX,qBzBzBW;ALysGf;A8B9qGI;EAKI,+CAAA;A9B4qGR;A8BvqGE;EAEE,czBvCW;EyBwCX,6BAAA;A9BwqGJ;;A6BntGA;EACE,gBxBuf4B;EwBtf5B,cxBzCQ;EwB0CR,0BxBmWwC;ALm3F1C;A6BptGE;EACE,cxBkWsC;ALo3F1C;A6B9sGE;EAEE,cxB/EO;AL8xGX;;A6BpsGA;ECuBE,oBAAA;E1BsKI,kBALI;EE7QN,qBAAA;AN+xGJ;;A6BtsGA;ECmBE,uBAAA;E1BsKI,mBALI;EE7QN,qBAAA;ANqyGJ;;A+BxzGA;EVgBM,gCUfJ;A/B2zGF;AqBxyGM;EUpBN;IVqBQ,gBAAA;ErB2yGN;AACF;A+B9zGE;EACE,UAAA;A/Bg0GJ;;A+B1zGE;EACE,aAAA;A/B6zGJ;;A+BzzGA;EACE,SAAA;EACA,gBAAA;EVDI,6BUEJ;A/B4zGF;AqB1zGM;EULN;IVMQ,gBAAA;ErB6zGN;AACF;A+B/zGE;EACE,QAAA;EACA,YAAA;EVNE,4BUOF;A/Bi0GJ;AqBp0GM;EUAJ;IVCM,gBAAA;ErBu0GN;AACF;;AgC51GA;;;;EAIE,kBAAA;AhC+1GF;;AgC51GA;EACE,mBAAA;AhC+1GF;AiC10GI;EACE,qBAAA;EACA,qB5B2fwB;E4B1fxB,uB5ByfwB;E4BxfxB,WAAA;EAhCJ,uBAAA;EACA,oCAAA;EACA,gBAAA;EACA,qCAAA;AjC62GF;AiCxzGI;EACE,eAAA;AjC0zGN;;AgCr2GA;EACE,kBAAA;EACA,a3B6gCkC;E2B5gClC,aAAA;EACA,gB3BmmCkC;E2BlmClC,iBAAA;EACA,SAAA;E5B+QI,eALI;E4BxQR,c3BPS;E2BQT,iBAAA;EACA,gBAAA;EACA,sB3BnBS;E2BoBT,4BAAA;EACA,qCAAA;E1BVE,sBAAA;ANm3GJ;AgCr2GE;EACE,SAAA;EACA,QAAA;EACA,oB3BslCgC;ALixEpC;;AgC31GI;EACE,oBAAA;AhC81GN;AgC51GM;EACE,UAAA;EACA,QAAA;AhC81GR;;AgC11GI;EACE,kBAAA;AhC61GN;AgC31GM;EACE,OAAA;EACA,WAAA;AhC61GR;;Aa51GI;EmBfA;IACE,oBAAA;EhC+2GJ;EgC72GI;IACE,UAAA;IACA,QAAA;EhC+2GN;;EgC32GE;IACE,kBAAA;EhC82GJ;EgC52GI;IACE,OAAA;IACA,WAAA;EhC82GN;AACF;Aa92GI;EmBfA;IACE,oBAAA;EhCg4GJ;EgC93GI;IACE,UAAA;IACA,QAAA;EhCg4GN;;EgC53GE;IACE,kBAAA;EhC+3GJ;EgC73GI;IACE,OAAA;IACA,WAAA;EhC+3GN;AACF;Aa/3GI;EmBfA;IACE,oBAAA;EhCi5GJ;EgC/4GI;IACE,UAAA;IACA,QAAA;EhCi5GN;;EgC74GE;IACE,kBAAA;EhCg5GJ;EgC94GI;IACE,OAAA;IACA,WAAA;EhCg5GN;AACF;Aah5GI;EmBfA;IACE,oBAAA;EhCk6GJ;EgCh6GI;IACE,UAAA;IACA,QAAA;EhCk6GN;;EgC95GE;IACE,kBAAA;EhCi6GJ;EgC/5GI;IACE,OAAA;IACA,WAAA;EhCi6GN;AACF;Aaj6GI;EmBfA;IACE,oBAAA;EhCm7GJ;EgCj7GI;IACE,UAAA;IACA,QAAA;EhCm7GN;;EgC/6GE;IACE,kBAAA;EhCk7GJ;EgCh7GI;IACE,OAAA;IACA,WAAA;EhCk7GN;AACF;AgCz6GE;EACE,SAAA;EACA,YAAA;EACA,aAAA;EACA,uB3B8iCgC;AL63EpC;AiCz9GI;EACE,qBAAA;EACA,qB5B2fwB;E4B1fxB,uB5ByfwB;E4BxfxB,WAAA;EAzBJ,aAAA;EACA,oCAAA;EACA,0BAAA;EACA,qCAAA;AjCq/GF;AiCv8GI;EACE,eAAA;AjCy8GN;;AgC/6GE;EACE,MAAA;EACA,UAAA;EACA,WAAA;EACA,aAAA;EACA,sB3BgiCgC;ALk5EpC;AiC9+GI;EACE,qBAAA;EACA,qB5B2fwB;E4B1fxB,uB5ByfwB;E4BxfxB,WAAA;EAlBJ,mCAAA;EACA,cAAA;EACA,sCAAA;EACA,yBAAA;AjCmgHF;AiC59GI;EACE,eAAA;AjC89GN;AgC17GI;EACE,iBAAA;AhC47GN;;AgCt7GE;EACE,MAAA;EACA,UAAA;EACA,WAAA;EACA,aAAA;EACA,qB3B+gCgC;AL06EpC;AiCtgHI;EACE,qBAAA;EACA,qB5B2fwB;E4B1fxB,uB5ByfwB;E4BxfxB,WAAA;AjCwgHN;AiC7/GM;EACE,aAAA;AjC+/GR;AiC5/GM;EACE,qBAAA;EACA,oB5BwesB;E4BvetB,uB5BsesB;E4BretB,WAAA;EA9BN,mCAAA;EACA,wBAAA;EACA,sCAAA;AjC6hHF;AiC5/GI;EACE,eAAA;AjC8/GN;AgCz8GI;EACE,iBAAA;AhC28GN;;AgCp8GA;EACE,SAAA;EACA,gBAAA;EACA,gBAAA;EACA,yCAAA;AhCu8GF;;AgCj8GA;EACE,cAAA;EACA,WAAA;EACA,qBAAA;EACA,WAAA;EACA,gB3B8b4B;E2B7b5B,c3BvHS;E2BwHT,mBAAA;EACA,qBAAA;EACA,mBAAA;EACA,6BAAA;EACA,SAAA;AhCo8GF;AgCt7GE;EAEE,c3B0+BgC;EiBnoClC,yBjBMS;AL2kHX;AgCn7GE;EAEE,W3B5JO;E2B6JP,qBAAA;EVjKF,yBjBkCQ;ALojHV;AgCj7GE;EAEE,c3B9JO;E2B+JP,oBAAA;EACA,6BAAA;AhCk7GJ;;AgC56GA;EACE,cAAA;AhC+6GF;;AgC36GA;EACE,cAAA;EACA,oB3By9BkC;E2Bx9BlC,gBAAA;E5B0GI,mBALI;E4BnGR,c3B/KS;E2BgLT,mBAAA;AhC86GF;;AgC16GA;EACE,cAAA;EACA,qBAAA;EACA,c3BpLS;ALimHX;;AgCz6GA;EACE,c3B/LS;E2BgMT,yB3B3LS;E2B4LT,iC3Bk7BkC;AL0/EpC;AgCz6GE;EACE,c3BrMO;ALgnHX;AgCz6GI;EAEE,W3B5MK;EiBJT,2CjB0pCkC;ALi+EpC;AgCv6GI;EAEE,W3BlNK;EiBJT,yBjBkCQ;AL6lHV;AgCr6GI;EAEE,c3BnNK;ALynHX;AgCl6GE;EACE,iC3By5BgC;AL2gFpC;AgCj6GE;EACE,c3B9NO;ALioHX;AgCh6GE;EACE,c3BhOO;ALkoHX;;AkC9oHA;;EAEE,kBAAA;EACA,oBAAA;EACA,sBAAA;AlCipHF;AkC/oHE;;EACE,kBAAA;EACA,cAAA;AlCkpHJ;AkC7oHE;;;;;;;;;;;;EAME,UAAA;AlCqpHJ;;AkChpHA;EACE,aAAA;EACA,eAAA;EACA,2BAAA;AlCmpHF;AkCjpHE;EACE,WAAA;AlCmpHJ;;AkC7oHE;;EAEE,kBAAA;AlCgpHJ;AkC5oHE;;E5BRE,yBAAA;EACA,4BAAA;ANwpHJ;AkCxoHE;;;E5BHE,0BAAA;EACA,6BAAA;ANgpHJ;;A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yBjC2uCsC;EiC1uCtC,+CAAA;AtCg9IJ;AsC98II;EACE,iSAAA;EACA,yBjCgvCoC;ALguG1C;AsC38IE;EACE,cAAA;EACA,cjCquCsC;EiCpuCtC,ejCouCsC;EiCnuCtC,kBAAA;EACA,WAAA;EACA,iSAAA;EACA,4BAAA;EACA,wBjC+tCsC;EgBtvCpC,sCiBwBF;AtC68IJ;AqBj+IM;EiBWJ;IjBVM,gBAAA;ErBo+IN;AACF;AsC/8IE;EACE,UAAA;AtCi9IJ;AsC98IE;EACE,UAAA;EACA,qBjCuyBoC;EiCtyBpC,UAAA;EACA,kDjCorB4B;AL4xHhC;;AsC58IA;EACE,gBAAA;AtC+8IF;;AsC58IA;EACE,sBjCpDS;EiCqDT,sCAAA;AtC+8IF;AsC78IE;EhCnCE,gCAAA;EACA,+BAAA;ANm/IJ;AsC98II;EhCtCA,4CAAA;EACA,2CAAA;ANu/IJ;AsC78IE;EACE,aAAA;AtC+8IJ;AsC38IE;EhClCE,kCAAA;EACA,mCAAA;ANg/IJ;AsC38IM;EhCtCF,8CAAA;EACA,+CAAA;ANo/IJ;AsC18II;EhC3CA,kCAAA;EACA,mCAAA;ANw/IJ;;AsCx8IA;EACE,qBAAA;AtC28IF;;AsCl8IE;EACE,eAAA;AtCq8IJ;AsCl8IE;EACE,cAAA;EACA,eAAA;EhCxFA,gBAAA;AN6hJJ;AsCl8II;EAAgB,aAAA;AtCq8IpB;AsCp8II;EAAe,gBAAA;AtCu8InB;AsCr8II;EhC9FA,gBAAA;ANsiJJ;;AuCzjJA;EACE,aAAA;EACA,eAAA;EACA,YAAA;EACA,mBlC4+CkC;EkC1+ClC,gBAAA;AvC2jJF;;AuCpjJE;EACE,qBlCi+CgC;ALslGpC;AuCrjJI;EACE,YAAA;EACA,oBlC69C8B;EkC59C9B,clCLK;EkCML,4CAAA;AvCujJN;AuCnjJE;EACE,clCXO;ALgkJX;;AwC9kJA;EACE,aAAA;EhCGA,gBAAA;EACA,gBAAA;AR+kJF;;AwC/kJA;EACE,kBAAA;EACA,cAAA;EACA,cnC8BQ;EmC7BR,qBAAA;EACA,sBnCFS;EmCGT,yBAAA;EnBKI,qImBJJ;AxCklJF;AqB1kJM;EmBfN;InBgBQ,gBAAA;ErB6kJN;AACF;AwCrlJE;EACE,UAAA;EACA,cnCqasC;EmCnatC,yBnCRO;EmCSP,qBnCRO;AL8lJX;AwCnlJE;EACE,UAAA;EACA,cnC6ZsC;EmC5ZtC,yBnCfO;EmCgBP,UnCgqCgC;EmC/pChC,kDnC4sB4B;ALy4HhC;;AwChlJE;EACE,kBnCmpCgC;ALg8GpC;AwChlJE;EACE,UAAA;EACA,WnC9BO;EiBJT,yBjBkCQ;EmCEN,qBnCFM;ALolJV;AwC/kJE;EACE,cnC9BO;EmC+BP,oBAAA;EACA,sBnCtCO;EmCuCP,qBnCpCO;ALqnJX;;AyC5nJE;EACE,yBAAA;AzC+nJJ;;AyCxnJQ;EnCqCJ,gCAAA;EACA,mCAAA;ANulJJ;AyCvnJQ;EnCiBJ,+BAAA;EACA,kCAAA;ANymJJ;;AyCzoJE;EACE,uBAAA;ErCgSE,kBALI;AJk3IV;AyCtoJQ;EnCqCJ,+BAAA;EACA,kCAAA;ANomJJ;AyCpoJQ;EnCiBJ,8BAAA;EACA,iCAAA;ANsnJJ;;AyCtpJE;EACE,uBAAA;ErCgSE,mBALI;AJ+3IV;AyCnpJQ;EnCqCJ,+BAAA;EACA,kCAAA;ANinJJ;AyCjpJQ;EnCiBJ,8BAAA;EACA,iCAAA;ANmoJJ;;A0ClqJA;EACE,qBAAA;EACA,sBAAA;EtC8RI,iBALI;EsCvRR,gBrC6jB4B;EqC5jB5B,cAAA;EACA,WrCHS;EqCIT,kBAAA;EACA,mBAAA;EACA,wBAAA;EpCKE,sBAAA;ANiqJJ;A0CjqJE;EACE,aAAA;A1CmqJJ;;A0C9pJA;EACE,kBAAA;EACA,SAAA;A1CiqJF;;A2CxrJA;EACE,kBAAA;EACA,kBAAA;EACA,mBtCs5C8B;EsCr5C9B,6BAAA;ErCWE,sBAAA;ANirJJ;;A2CvrJA;EAEE,cAAA;A3CyrJF;;A2CrrJA;EACE,gBtCkjB4B;ALsoI9B;;A2ChrJA;EACE,kBtCu4C8B;AL4yGhC;A2ChrJE;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,UAAA;EACA,qBAAA;A3CkrJJ;;A2CnqJE;EClDA,cD8Cc;ErB5Cd,yBqB0CmB;EC1CnB,qBD2Ce;A3C8qJjB;A4CvtJE;EACE,cAAA;A5CytJJ;;A2C5qJE;EClDA,cD8Cc;ErB5Cd,yBqB0CmB;EC1CnB,qBD2Ce;A3CurJjB;A4ChuJE;EACE,cAAA;A5CkuJJ;;A2CrrJE;EClDA,cD8Cc;ErB5Cd,yBqB0CmB;EC1CnB,qBD2Ce;A3CgsJjB;A4CzuJE;EACE,cAAA;A5C2uJJ;;A2C9rJE;EClDA,cDgDgB;ErB9ChB,yBqB0CmB;EC1CnB,qBD2Ce;A3CysJjB;A4ClvJE;EACE,cAAA;A5CovJJ;;A2CvsJE;EClDA,cDgDgB;ErB9ChB,yBqB0CmB;EC1CnB,qBD2Ce;A3CktJjB;A4C3vJE;EACE,cAAA;A5C6vJJ;;A2ChtJE;EClDA,cD8Cc;ErB5Cd,yBqB0CmB;EC1CnB,qBD2Ce;A3C2tJjB;A4CpwJE;EACE,cAAA;A5CswJJ;;A2CztJE;EClDA,cDgDgB;ErB9ChB,yBqB0CmB;EC1CnB,qBD2Ce;A3CouJjB;A4C7wJE;EACE,cAAA;A5C+wJJ;;A2CluJE;EClDA,cD8Cc;ErB5Cd,yBqB0CmB;EC1CnB,qBD2Ce;A3C6uJjB;A4CtxJE;EACE,cAAA;A5CwxJJ;;A6C3xJE;EACE;IAAK,2BxCs6C2B;ELy3GlC;AACF;;A6CjyJE;EACE;IAAK,2BxCs6C2B;ELy3GlC;AACF;A6C3xJA;EACE,aAAA;EACA,YxC+5CkC;EwC95ClC,gBAAA;EzCwRI,kBALI;EyCjRR,yBxCLS;ECSP,sBAAA;AN0xJJ;;A6CzxJA;EACE,aAAA;EACA,sBAAA;EACA,uBAAA;EACA,gBAAA;EACA,WxCjBS;EwCkBT,kBAAA;EACA,mBAAA;EACA,yBxCUQ;EgBtBJ,2BwBaJ;A7C4xJF;AqBryJM;EwBAN;IxBCQ,gBAAA;ErBwyJN;AACF;;A6C9xJA;EvBYE,sMAAA;EuBVA,0BAAA;A7CiyJF;;A6C7xJE;EACE,0DAAA;EAAA,kDAAA;A7CgyJJ;A6C7xJM;EAJJ;IAKM,uBAAA;IAAA,eAAA;E7CgyJN;AACF;;A8Cx0JA;EACE,aAAA;EACA,sBAAA;EAGA,gBAAA;EACA,gBAAA;ExCSE,sBAAA;ANi0JJ;;A8Ct0JA;EACE,qBAAA;EACA,sBAAA;A9Cy0JF;A8Cv0JE;EAEE,oCAAA;EACA,0BAAA;A9Cw0JJ;;A8C9zJA;EACE,WAAA;EACA,czClBS;EyCmBT,mBAAA;A9Ci0JF;A8C9zJE;EAEE,UAAA;EACA,czCzBO;EyC0BP,qBAAA;EACA,yBzCjCO;ALg2JX;A8C5zJE;EACE,czC7BO;EyC8BP,yBzCrCO;ALm2JX;;A8CrzJA;EACE,kBAAA;EACA,cAAA;EACA,oBAAA;EACA,czC3CS;EyC4CT,qBAAA;EACA,sBzCtDS;EyCuDT,sCAAA;A9CwzJF;A8CtzJE;ExCrCE,gCAAA;EACA,+BAAA;AN81JJ;A8CtzJE;ExC3BE,kCAAA;EACA,mCAAA;ANo1JJ;A8CtzJE;EAEE,czC7DO;EyC8DP,oBAAA;EACA,sBzCrEO;AL43JX;A8CnzJE;EACE,UAAA;EACA,WzC3EO;EyC4EP,yBzC9CM;EyC+CN,qBzC/CM;ALo2JV;A8ClzJE;EACE,mBAAA;A9CozJJ;A8ClzJI;EACE,gBAAA;EACA,qBzC8ZwB;ALs5I9B;;A8CtyJI;EACE,mBAAA;A9CyyJN;A8CtyJQ;ExCrCJ,mCAAA;EAZA,yBAAA;AN21JJ;A8CryJQ;ExCtDJ,+BAAA;EAYA,6BAAA;ANm1JJ;A8CpyJQ;EACE,aAAA;A9CsyJV;A8CnyJQ;EACE,qBzC6XoB;EyC5XpB,qBAAA;A9CqyJV;A8CnyJU;EACE,kBAAA;EACA,uBzCwXkB;AL66I9B;;Aaz2JI;EiC4CA;IACE,mBAAA;E9Ci0JJ;E8C9zJM;IxCrCJ,mCAAA;IAZA,yBAAA;ENm3JF;E8C7zJM;IxCtDJ,+BAAA;IAYA,6BAAA;EN22JF;E8C5zJM;IACE,aAAA;E9C8zJR;E8C3zJM;IACE,qBzC6XoB;IyC5XpB,qBAAA;E9C6zJR;E8C3zJQ;IACE,kBAAA;IACA,uBzCwXkB;ELq8I5B;AACF;Aal4JI;EiC4CA;IACE,mBAAA;E9Cy1JJ;E8Ct1JM;IxCrCJ,mCAAA;IAZA,yBAAA;EN24JF;E8Cr1JM;IxCtDJ,+BAAA;IAYA,6BAAA;ENm4JF;E8Cp1JM;IACE,aAAA;E9Cs1JR;E8Cn1JM;IACE,qBzC6XoB;IyC5XpB,qBAAA;E9Cq1JR;E8Cn1JQ;IACE,kBAAA;IACA,uBzCwXkB;EL69I5B;AACF;Aa15JI;EiC4CA;IACE,mBAAA;E9Ci3JJ;E8C92JM;IxCrCJ,mCAAA;IAZA,yBAAA;ENm6JF;E8C72JM;IxCtDJ,+BAAA;IAYA,6BAAA;EN25JF;E8C52JM;IACE,aAAA;E9C82JR;E8C32JM;IACE,qBzC6XoB;IyC5XpB,qBAAA;E9C62JR;E8C32JQ;IACE,kBAAA;IACA,uBzCwXkB;ELq/I5B;AACF;Aal7JI;EiC4CA;IACE,mBAAA;E9Cy4JJ;E8Ct4JM;IxCrCJ,mCAAA;IAZA,yBAAA;EN27JF;E8Cr4JM;IxCtDJ,+BAAA;IAYA,6BAAA;ENm7JF;E8Cp4JM;IACE,aAAA;E9Cs4JR;E8Cn4JM;IACE,qBzC6XoB;IyC5XpB,qBAAA;E9Cq4JR;E8Cn4JQ;IACE,kBAAA;IACA,uBzCwXkB;EL6gJ5B;AACF;Aa18JI;EiC4CA;IACE,mBAAA;E9Ci6JJ;E8C95JM;IxCrCJ,mCAAA;IAZA,yBAAA;ENm9JF;E8C75JM;IxCtDJ,+BAAA;IAYA,6BAAA;EN28JF;E8C55JM;IACE,aAAA;E9C85JR;E8C35JM;IACE,qBzC6XoB;IyC5XpB,qBAAA;E9C65JR;E8C35JQ;IACE,kBAAA;IACA,uBzCwXkB;ELqiJ5B;AACF;A8Ch5JA;ExC9HI,gBAAA;ANihKJ;A8Ch5JE;EACE,qBAAA;A9Ck5JJ;A8Ch5JI;EACE,sBAAA;A9Ck5JN;;A+CtiKE;EACE,cDiKyB;EChKzB,yBD+JsB;A9C04J1B;A+CtiKM;EAEE,cD2JqB;EC1JrB,yBAAA;A/CuiKR;A+CpiKM;EACE,W1CRG;E0CSH,yBDqJqB;ECpJrB,qBDoJqB;A9Ck5J7B;;A+CpjKE;EACE,cDiKyB;EChKzB,yBD+JsB;A9Cw5J1B;A+CpjKM;EAEE,cD2JqB;EC1JrB,yBAAA;A/CqjKR;A+CljKM;EACE,W1CRG;E0CSH,yBDqJqB;ECpJrB,qBDoJqB;A9Cg6J7B;;A+ClkKE;EACE,cDiKyB;EChKzB,yBD+JsB;A9Cs6J1B;A+ClkKM;EAEE,cD2JqB;EC1JrB,yBAAA;A/CmkKR;A+ChkKM;EACE,W1CRG;E0CSH,yBDqJqB;ECpJrB,qBDoJqB;A9C86J7B;;A+ChlKE;EACE,cDmK2B;EClK3B,yBD+JsB;A9Co7J1B;A+ChlKM;EAEE,cD6JuB;EC5JvB,yBAAA;A/CilKR;A+C9kKM;EACE,W1CRG;E0CSH,yBDuJuB;ECtJvB,qBDsJuB;A9C07J/B;;A+C9lKE;EACE,cDmK2B;EClK3B,yBD+JsB;A9Ck8J1B;A+C9lKM;EAEE,cD6JuB;EC5JvB,yBAAA;A/C+lKR;A+C5lKM;EACE,W1CRG;E0CSH,yBDuJuB;ECtJvB,qBDsJuB;A9Cw8J/B;;A+C5mKE;EACE,cDiKyB;EChKzB,yBD+JsB;A9Cg9J1B;A+C5mKM;EAEE,cD2JqB;EC1JrB,yBAAA;A/C6mKR;A+C1mKM;EACE,W1CRG;E0CSH,yBDqJqB;ECpJrB,qBDoJqB;A9Cw9J7B;;A+C1nKE;EACE,cDmK2B;EClK3B,yBD+JsB;A9C89J1B;A+C1nKM;EAEE,cD6JuB;EC5JvB,yBAAA;A/C2nKR;A+CxnKM;EACE,W1CRG;E0CSH,yBDuJuB;ECtJvB,qBDsJuB;A9Co+J/B;;A+CxoKE;EACE,cDiKyB;EChKzB,yBD+JsB;A9C4+J1B;A+CxoKM;EAEE,cD2JqB;EC1JrB,yBAAA;A/CyoKR;A+CtoKM;EACE,W1CRG;E0CSH,yBDqJqB;ECpJrB,qBDoJqB;A9Co/J7B;;AgDrpKA;EACE,uBAAA;EACA,U3CyiD2B;E2CxiD3B,W3CwiD2B;E2CviD3B,sBAAA;EACA,W3CQS;E2CPT,2WAAA;EACA,SAAA;E1COE,sBAAA;E0CLF,Y3CyiD2B;AL+mH7B;AgDrpKE;EACE,WAAA;EACA,qBAAA;EACA,a3CoiDyB;ALmnH7B;AgDppKE;EACE,UAAA;EACA,kD3C8sB4B;E2C7sB5B,U3C+hDyB;ALunH7B;AgDnpKE;EAEE,oBAAA;EACA,yBAAA;EAAA,sBAAA;EAAA,iBAAA;EACA,a3CyhDyB;AL2nH7B;;AgDhpKA;EACE,kD3CqhD2B;AL8nH7B;;AiDzrKA;EACE,Y5C40CkC;E4C30ClC,eAAA;E7CmSI,mBALI;E6C3RR,oBAAA;EACA,2C5C40CkC;E4C30ClC,4BAAA;EACA,oCAAA;EACA,6C5CsgB4B;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BAAA;AtEy5MZ;;AsEh6MQ;EAOI,mBAAA;AtE65MZ;;AsEp6MQ;EAOI,oBAAA;AtEi6MZ;;AsEx6MQ;EAOI,oBAAA;AtEq6MZ;;AsE56MQ;EAOI,sBAAA;AtEy6MZ;;AsEh7MQ;EAOI,uBAAA;AtE66MZ;;AsEp7MQ;EAOI,mBAAA;AtEi7MZ;;AsEx7MQ;EAOI,qBAAA;AtEq7MZ;;AsE57MQ;EAOI,sBAAA;AtEy7MZ;;AsEh8MQ;EAOI,kBAAA;AtE67MZ;;AsEp8MQ;EAOI,oBAAA;AtEi8MZ;;AsEx8MQ;EAOI,qBAAA;AtEq8MZ;;AsE58MQ;EAOI,0CAAA;AtEy8MZ;;AsEh9MQ;EAOI,qCAAA;AtE68MZ;;AsEp9MQ;EAOI,sCAAA;AtEi9MZ;;AsEx9MQ;EAOI,oCAAA;AtEq9MZ;;AsE59MQ;EAOI,oBAAA;AtEy9MZ;;AsEh+MQ;EAOI,wCAAA;AtE69MZ;;AsEp+MQ;EAOI,wBAAA;AtEi+MZ;;AsEx+MQ;EAOI,yCAAA;AtEq+MZ;;AsE5+MQ;EAOI,yBAAA;AtEy+MZ;;AsEh/MQ;EAOI,2CAAA;AtE6+MZ;;AsEp/MQ;EAOI,2BAAA;AtEi/MZ;;AsEx/MQ;EAOI,0CAAA;AtEq/MZ;;AsE5/MQ;EAOI,0BAAA;AtEy/MZ;;AsEhgNQ;EAOI,gCAAA;AtE6/MZ;;AsEpgNQ;EAOI,gCAAA;AtEigNZ;;AsExgNQ;EAOI,gCAAA;AtEqgNZ;;AsE5gNQ;EAOI,gCAAA;AtEygNZ;;AsEhhNQ;EAOI,gCAAA;AtE6gNZ;;AsEphNQ;EAOI,gCAAA;AtEihNZ;;AsExhNQ;EAOI,gCAAA;AtEqhNZ;;AsE5hNQ;EAOI,gCAAA;AtEyhNZ;;AsEhiNQ;EAOI,6BAAA;AtE6hNZ;;AsEpiNQ;EAOI,4BAAA;AtEiiNZ;;AsExiNQ;EAOI,4BAAA;AtEqiNZ;;AsE5iNQ;EAOI,4BAAA;AtEyiNZ;;AsEhjNQ;EAOI,4BAAA;AtE6iNZ;;AsEpjNQ;EAOI,4BAAA;AtEijNZ;;AsExjNQ;EAOI,qBAAA;AtEqjNZ;;AsE5jNQ;EAOI,qBAAA;AtEyjNZ;;AsEhkNQ;EAOI,qBAAA;AtE6jNZ;;AsEpkNQ;EAOI,sBAAA;AtEikNZ;;AsExkNQ;EAOI,sBAAA;AtEqkNZ;;AsE5kNQ;EAOI,0BAAA;AtEykNZ;;AsEhlNQ;EAOI,uBAAA;AtE6kNZ;;AsEplNQ;EAOI,2BAAA;AtEilNZ;;AsExlNQ;EAOI,sBAAA;AtEqlNZ;;AsE5lNQ;EAOI,sBAAA;AtEylNZ;;AsEhmNQ;EAOI,sBAAA;AtE6lNZ;;AsEpmNQ;EAOI,uBAAA;AtEimNZ;;AsExmNQ;EAOI,uBAAA;AtEqmNZ;;AsE5mNQ;EAOI,2BAAA;AtEymNZ;;AsEhnNQ;EAOI,wBAAA;AtE6mNZ;;AsEpnNQ;EAOI,4BAAA;AtEinNZ;;AsExnNQ;EAOI,yBAAA;AtEqnNZ;;AsE5nNQ;EAOI,8BAAA;AtEynNZ;;AsEhoNQ;EAOI,iCAAA;AtE6nNZ;;AsEpoNQ;EAOI,sCAAA;AtEioNZ;;AsExoNQ;EAOI,yCAAA;AtEqoNZ;;AsE5oNQ;EAOI,uBAAA;AtEyoNZ;;AsEhpNQ;EAOI,uBAAA;AtE6oNZ;;AsEppNQ;EAOI,yBAAA;AtEipNZ;;AsExpNQ;EAOI,yBAAA;AtEqpNZ;;AsE5pNQ;EAOI,0BAAA;AtEypNZ;;AsEhqNQ;EAOI,4BAAA;AtE6pNZ;;AsEpqNQ;EAOI,kCAAA;AtEiqNZ;;AsExqNQ;EAOI,iBAAA;AtEqqNZ;;AsE5qNQ;EAOI,uBAAA;AtEyqNZ;;AsEhrNQ;EAOI,sBAAA;AtE6qNZ;;AsEprNQ;EAOI,oBAAA;AtEirNZ;;AsExrNQ;EAOI,sBAAA;AtEqrNZ;;AsE5rNQ;EAOI,oBAAA;AtEyrNZ;;AsEhsNQ;EAOI,sCAAA;AtE6rNZ;;AsEpsNQ;EAOI,oCAAA;AtEisNZ;;AsExsNQ;EAOI,kCAAA;AtEqsNZ;;AsE5sNQ;EAOI,yCAAA;AtEysNZ;;AsEhtNQ;EAOI,wCAAA;AtE6sNZ;;AsEptNQ;EAOI,wCAAA;AtEitNZ;;AsExtNQ;EAOI,kCAAA;AtEqtNZ;;AsE5tNQ;EAOI,gCAAA;AtEytNZ;;AsEhuNQ;EAOI,8BAAA;AtE6tNZ;;AsEpuNQ;EAOI,gCAAA;AtEiuNZ;;AsExuNQ;EAOI,+BAAA;AtEquNZ;;AsE5uNQ;EAOI,oCAAA;AtEyuNZ;;AsEhvNQ;EAOI,kCAAA;AtE6uNZ;;AsEpvN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BAAA;EtEqsQV;;EsE5sQM;IAOI,sBAAA;EtEysQV;;EsEhtQM;IAOI,0BAAA;EtE6sQV;;EsEptQM;IAOI,gCAAA;EtEitQV;;EsExtQM;IAOI,yBAAA;EtEqtQV;;EsE5tQM;IAOI,wBAAA;EtEytQV;;EsEhuQM;IAOI,yBAAA;EtE6tQV;;EsEpuQM;IAOI,6BAAA;EtEiuQV;;EsExuQM;IAOI,8BAAA;EtEquQV;;EsE5uQM;IAOI,wBAAA;EtEyuQV;;EsEhvQM;IAOI,+BAAA;EtE6uQV;;EsEpvQM;IAOI,wBAAA;EtEivQV;;EsExvQM;IAOI,yBAAA;EtEqvQV;;EsE5vQM;IAOI,8BAAA;EtEyvQV;;EsEhwQM;IAOI,iCAAA;EtE6vQV;;EsEpwQM;IAOI,sCAAA;EtEiwQV;;EsExwQM;IAOI,yCAAA;EtEqwQV;;EsE5wQM;IAOI,uBAAA;EtEywQV;;EsEhxQM;IAOI,uBAAA;EtE6wQV;;EsEpxQM;IAOI,yBAAA;EtEixQV;;EsExxQM;IAOI,yBAAA;EtEqxQV;;EsE5xQM;IAOI,0BAAA;EtEyxQV;;EsEhyQM;IAOI,4BAAA;EtE6xQV;;EsEpyQM;IAOI,kCAAA;EtEiyQV;;EsExyQM;IAOI,iBAAA;EtEqyQV;;EsE5yQM;IAOI,uBAAA;EtEyyQV;;EsEhzQM;IAOI,sBAAA;EtE6yQV;;EsEpzQM;IAOI,oBAAA;EtEizQV;;EsExzQM;IAOI,sBAAA;EtEqzQV;;EsE5zQM;IAOI,oBAAA;EtEyzQV;;EsEh0QM;IAOI,sCAAA;EtE6zQV;;EsEp0QM;IAOI,oCAAA;EtEi0QV;;EsEx0QM;IAOI,kCAAA;EtEq0QV;;EsE50QM;IAOI,yCAAA;EtEy0QV;;EsEh1QM;IAOI,wCAAA;EtE60QV;;EsEp1QM;IAOI,wCAAA;EtEi1QV;;EsEx1QM;IAOI,kCAAA;EtEq1QV;;EsE51QM;IAOI,gCAAA;EtEy1QV;;EsEh2QM;IAOI,8BAAA;EtE61QV;;EsEp2QM;IAOI,gCAAA;EtEi2QV;;EsEx2QM;IAOI,+BAAA;EtEq2QV;;EsE52QM;IAOI,oCAAA;EtEy2QV;;EsEh3QM;IAOI,kCAAA;EtE62QV;;EsEp3QM;IA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I,wBAAA;EtEo2RV;;EsE32RM;IAOI,yBAAA;EtEw2RV;;EsE/2RM;IAOI,6BAAA;EtE42RV;;EsEn3RM;IAOI,8BAAA;EtEg3RV;;EsEv3RM;IAOI,wBAAA;EtEo3RV;;EsE33RM;IAOI,+BAAA;EtEw3RV;;EsE/3RM;IAOI,wBAAA;EtE43RV;;EsEn4RM;IAOI,yBAAA;EtEg4RV;;EsEv4RM;IAOI,8BAAA;EtEo4RV;;EsE34RM;IAOI,iCAAA;EtEw4RV;;EsE/4RM;IAOI,sCAAA;EtE44RV;;EsEn5RM;IAOI,yCAAA;EtEg5RV;;EsEv5RM;IAOI,uBAAA;EtEo5RV;;EsE35RM;IAOI,uBAAA;EtEw5RV;;EsE/5RM;IAOI,yBAAA;EtE45RV;;EsEn6RM;IAOI,yBAAA;EtEg6RV;;EsEv6RM;IAOI,0BAAA;EtEo6RV;;EsE36RM;IAOI,4BAAA;EtEw6RV;;EsE/6RM;IAOI,kCAAA;EtE46RV;;EsEn7RM;IAOI,iBAAA;EtEg7RV;;EsEv7RM;IAOI,uBAAA;EtEo7RV;;EsE37RM;IAOI,sBAAA;EtEw7RV;;EsE/7RM;IAOI,oBAAA;EtE47RV;;EsEn8RM;IAOI,sBAAA;EtEg8RV;;EsEv8RM;IAOI,oBAAA;EtEo8RV;;EsE38RM;IAOI,sCAAA;EtEw8RV;;EsE/8RM;IAOI,oCAAA;EtE48RV;;EsEn9RM;IAOI,kCAAA;EtEg9RV;;EsEv9RM;IAOI,yCAAA;EtEo9RV;;EsE39RM;IAOI,wCAAA;EtEw9RV;;EsE/9RM;IAOI,wCAAA;EtE49RV;;EsEn+RM;IAOI,kCAAA;EtEg+RV;;EsEv+RM;IAOI,gCAAA;EtEo+RV;;EsE3+RM;IAOI,8BAAA;EtEw+RV;;EsE/+RM;IAOI,gCAAA;EtE4+RV;;EsEn/RM;IAOI,+BAAA;EtEg/RV;;EsEv/RM;IAOI,oCAAA;EtEo/RV;;EsE3/RM;IAOI,kCAAA;EtEw/RV;;EsE//RM;IAOI,gCAAA;EtE4/RV;;EsEngSM;IAOI,uCAAA;EtEggSV;;EsEvgSM;IAOI,sCAAA;EtEogSV;;EsE3gSM;IAOI,iCAAA;EtEwgSV;;EsE/gSM;IAOI,2BAAA;EtE4gSV;;EsEnhSM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IAOI,+BAAA;EtEmgTV;;EsE1gTM;IAOI,wBAAA;EtEugTV;;EsE9gTM;IAOI,yBAAA;EtE2gTV;;EsElhTM;IAOI,8BAAA;EtE+gTV;;EsEthTM;IAOI,iCAAA;EtEmhTV;;EsE1hTM;IAOI,sCAAA;EtEuhTV;;EsE9hTM;IAOI,yCAAA;EtE2hTV;;EsEliTM;IAOI,uBAAA;EtE+hTV;;EsEtiTM;IAOI,uBAAA;EtEmiTV;;EsE1iTM;IAOI,yBAAA;EtEuiTV;;EsE9iTM;IAOI,yBAAA;EtE2iTV;;EsEljTM;IAOI,0BAAA;EtE+iTV;;EsEtjTM;IAOI,4BAAA;EtEmjTV;;EsE1jTM;IAOI,kCAAA;EtEujTV;;EsE9jTM;IAOI,iBAAA;EtE2jTV;;EsElkTM;IAOI,uBAAA;EtE+jTV;;EsEtkTM;IAOI,sBAAA;EtEmkTV;;EsE1kTM;IAOI,oBAAA;EtEukTV;;EsE9kTM;IAOI,sBAAA;EtE2kTV;;EsEllTM;IAOI,oBAAA;EtE+kTV;;EsEtlTM;IAOI,sCAAA;EtEmlTV;;EsE1lTM;IAOI,oCAAA;EtEulTV;;EsE9lTM;IAOI,kCAAA;EtE2lTV;;EsElmTM;IAOI,yCAAA;EtE+lTV;;EsEtmTM;IAOI,wCAAA;EtEmmTV;;EsE1mTM;IAOI,wCAAA;EtEumTV;;EsE9mTM;IAOI,kCAAA;EtE2mTV;;EsElnTM;IAOI,gCAAA;EtE+mTV;;EsEtnTM;IAOI,8BAAA;EtEmnTV;;EsE1nTM;IAOI,gCAAA;EtEunTV;;EsE9nTM;IAOI,+BAAA;EtE2nTV;;EsEloTM;IAOI,oCAAA;EtE+nTV;;EsEtoTM;IAOI,kCAAA;EtEmoTV;;EsE1oTM;IAOI,gCAAA;EtEuoTV;;EsE9oTM;IAOI,uCAAA;EtE2oTV;;EsElpTM;IAOI,sCAAA;EtE+oTV;;EsEtpTM;IAOI,iCAAA;EtEmpTV;;EsE1pTM;IAOI,2BAAA;EtEupTV;;EsE9pTM;IAOI,iCAAA;EtE2pTV;;EsElqTM;IAOI,+BAAA;EtE+pTV;;EsEtqTM;IAOI,6BAAA;EtEmqTV;;EsE1qTM;IAOI,+BAAA;EtEuqTV;;EsE9qTM;IAOI,8BAAA;EtE2qTV;;EsEl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;EtEq/TV;;EsE5/TM;IAOI,+BAAA;EtEy/TV;;EsEhgUM;IAOI,8BAAA;EtE6/TV;;EsEpgUM;IAOI,4BAAA;EtEigUV;;EsExgUM;IAOI,8BAAA;EtEqgUV;;EsE5gUM;IAOI,4BAAA;EtEygUV;;EsEhhUM;IAOI,0BAAA;EtE6gUV;;EsEphUM;IAOI,gCAAA;EtEihUV;;EsExhUM;IAOI,+BAAA;EtEqhUV;;EsE5hUM;IAOI,6BAAA;EtEyhUV;;EsEhiUM;IAOI,+BAAA;EtE6hUV;;EsEpiUM;IAOI,6BAAA;EtEiiUV;;EsExiUM;IAOI,4BAAA;EtEqiUV;;EsE5iUM;IAOI,kCAAA;EtEyiUV;;EsEhjUM;IAOI,iCAAA;EtE6iUV;;EsEpjUM;IAOI,+BAAA;EtEijUV;;EsExjUM;IAOI,iCAAA;EtEqjUV;;EsE5jUM;IAOI,+BAAA;EtEyjUV;;EsEhkUM;IAOI,2BAAA;EtE6jUV;;EsEpkUM;IAOI,iCAAA;EtEikUV;;EsExkUM;IAOI,gCAAA;EtEqkUV;;EsE5kUM;IAOI,8BAAA;EtEykUV;;EsEhlUM;IAOI,gCAAA;EtE6kUV;;EsEplUM;IAOI,8BAAA;EtEilUV;;EsExlUM;IAOI,4BAAA;EtEqlUV;;EsE5lUM;IAOI,2BAAA;EtEylUV;;EsEhmUM;IAOI,6BAAA;EtE6lUV;AACF;AarmUI;EyDAI;IAOI,uBAAA;EtEkmUV;;EsEzmUM;IAOI,sBAAA;EtEsmUV;;EsE7mUM;IAOI,sBAAA;EtE0mUV;;EsEjnUM;IAOI,0BAAA;EtE8mUV;;EsErnUM;IAOI,gCAAA;EtEknUV;;EsEznUM;IAOI,yBAAA;EtEsnUV;;EsE7nUM;IAOI,wBAAA;EtE0nUV;;EsEjoUM;IAOI,yBAAA;EtE8nUV;;EsEroUM;IAOI,6BAAA;EtEkoUV;;EsEzoUM;IAOI,8BAAA;EtEsoUV;;EsE7oUM;IAOI,wBAAA;EtE0oUV;;EsEjpUM;IAOI,+BAAA;EtE8oUV;;EsErpUM;IAOI,wBAAA;EtEkpUV;;EsEzpUM;IAOI,yBAAA;EtEspUV;;EsE7pUM;IAOI,8BAAA;EtE0pUV;;EsEjqUM;IAOI,iCAAA;EtE8pUV;;EsErqUM;IAOI,sCAAA;EtEkqUV;;EsEzqUM;IAOI,yCAAA;EtEsqUV;;EsE7qUM;IAOI,uBAAA;EtE0qUV;;EsEjrUM;IAOI,uBAAA;EtE8qUV;;EsErrUM;IAOI,yBAAA;EtEkrUV;;EsEzrUM;IAOI,yBAAA;EtEsrUV;;EsE7rUM;IAOI,0BAAA;EtE0rUV;;EsEjsUM;IAOI,4BAAA;EtE8rUV;;EsErsUM;IAOI,kCAAA;EtEksUV;;EsEzsUM;IAOI,iBAAA;EtEssUV;;EsE7sUM;IAOI,uBAAA;EtE0sUV;;EsEjtUM;IAOI,sBAAA;EtE8sUV;;EsErtUM;IAOI,oBAAA;EtEktUV;;EsEztUM;IAOI,sBAAA;EtEstUV;;EsE7tUM;IAOI,oBAAA;EtE0tUV;;EsEjuUM;IAOI,sCAAA;EtE8tUV;;EsEruUM;IAOI,oCAAA;EtEkuUV;;EsEzuUM;IAOI,kCAAA;EtEsuUV;;EsE7uUM;IAOI,yCAAA;EtE0uUV;;EsEjvUM;IAOI,wCAAA;EtE8uUV;;EsErvUM;IAOI,wCAAA;EtEkvUV;;EsEzvUM;IAOI,kCAAA;EtEsvUV;;EsE7vUM;IAOI,gCAAA;EtE0vUV;;EsEjwUM;IAOI,8BAAA;EtE8vUV;;EsErwUM;IAOI,gCAAA;EtEkwUV;;EsEzwUM;IAOI,+BAAA;EtEswUV;;EsE7wUM;IAOI,oCAAA;EtE0wUV;;EsEjxUM;IAOI,kCAAA;EtE8wUV;;EsErxUM;IAOI,gCAAA;EtEkxUV;;EsEzxUM;IAOI,uCAAA;EtEsxUV;;EsE7xUM;IAOI,sCAAA;EtE0xUV;;EsEjyUM;IAOI,iCAAA;EtE8xUV;;EsEryUM;IAOI,2BAAA;EtEkyUV;;EsEzyUM;IAOI,iCAAA;EtEsyUV;;EsE7yUM;IAOI,+BAAA;EtE0yUV;;EsEjzUM;IAOI,6BAAA;EtE8yUV;;EsErzUM;IAOI,+BAAA;EtEkzUV;;EsEzzUM;IAOI,8BAAA;EtEszUV;;EsE7zUM;IAOI,oBAAA;EtE0zUV;;EsEj0UM;IAOI,mBAAA;EtE8zUV;;EsEr0UM;IAOI,mBAAA;EtEk0UV;;EsEz0UM;IAOI,mBAAA;EtEs0UV;;EsE70UM;IAOI,mBAAA;EtE00UV;;E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AAA;EtEopVV;;EsE3pVM;IAOI,0BAAA;EtEwpVV;;EsE/pVM;IAOI,gCAAA;EtE4pVV;;EsEnqVM;IAOI,+BAAA;EtEgqVV;;EsEvqVM;IAOI,6BAAA;EtEoqVV;;EsE3qVM;IAOI,+BAAA;EtEwqVV;;EsE/qVM;IAOI,6BAAA;EtE4qVV;;EsEnrVM;IAOI,4BAAA;EtEgrVV;;EsEvrVM;IAOI,kCAAA;EtEorVV;;EsE3rVM;IAOI,iCAAA;EtEwrVV;;EsE/rVM;IAOI,+BAAA;EtE4rVV;;EsEnsVM;IAOI,iCAAA;EtEgsVV;;EsEvsVM;IAOI,+BAAA;EtEosVV;;EsE3sVM;IAOI,2BAAA;EtEwsVV;;EsE/sVM;IAOI,iCAAA;EtE4sVV;;EsEntVM;IAOI,gCAAA;EtEgtVV;;EsEvtVM;IAOI,8BAAA;EtEotVV;;EsE3tVM;IAOI,gCAAA;EtEwtVV;;EsE/tVM;IAOI,8BAAA;EtE4tVV;;EsEnuVM;IAOI,4BAAA;EtEguVV;;EsEvuVM;IAOI,2BAAA;EtEouVV;;EsE3uVM;IAOI,6BAAA;EtEwuVV;AACF;AuE5xVA;ED4CQ;IAOI,4BAAA;EtE6uVV;;EsEpvVM;IAOI,0BAAA;EtEivVV;;EsExvVM;IAOI,6BAAA;EtEqvVV;;EsE5vVM;IAOI,4BAAA;EtEyvVV;AACF;AuE1xVA;EDyBQ;IAOI,0BAAA;EtE8vVV;;EsErwVM;IAOI,gCAAA;EtEkwVV;;EsEzwVM;IAOI,yBAAA;EtEswVV;;EsE7wVM;IAOI,wBAAA;EtE0wVV;;EsEjxVM;IAOI,yBAAA;EtE8wVV;;EsErxVM;IAOI,6BAAA;EtEkxVV;;EsEzxVM;IAOI,8BAAA;EtEsxVV;;EsE7xVM;IAOI,wBAAA;EtE0xVV;;EsEjyVM;IAOI,+BAAA;EtE8xVV;;EsEryVM;IAOI,wBAAA;EtEkyVV;AACF","file":"bootstrap.rtl.css","sourcesContent":["@charset \"UTF-8\";\n/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root {\n  --bs-blue: #0d6efd;\n  --bs-indigo: #6610f2;\n  --bs-purple: #6f42c1;\n  --bs-pink: #d63384;\n  --bs-red: #dc3545;\n  --bs-orange: #fd7e14;\n  --bs-yellow: #ffc107;\n  --bs-green: #198754;\n  --bs-teal: #20c997;\n  --bs-cyan: #0dcaf0;\n  --bs-white: #fff;\n  --bs-gray: #6c757d;\n  --bs-gray-dark: #343a40;\n  --bs-gray-100: #f8f9fa;\n  --bs-gray-200: #e9ecef;\n  --bs-gray-300: #dee2e6;\n  --bs-gray-400: #ced4da;\n  --bs-gray-500: #adb5bd;\n  --bs-gray-600: #6c757d;\n  --bs-gray-700: #495057;\n  --bs-gray-800: #343a40;\n  --bs-gray-900: #212529;\n  --bs-primary: #0d6efd;\n  --bs-secondary: #6c757d;\n  --bs-success: #198754;\n  --bs-info: #0dcaf0;\n  --bs-warning: #ffc107;\n  --bs-danger: #dc3545;\n  --bs-light: #f8f9fa;\n  --bs-dark: #212529;\n  --bs-primary-rgb: 13, 110, 253;\n  --bs-secondary-rgb: 108, 117, 125;\n  --bs-success-rgb: 25, 135, 84;\n  --bs-info-rgb: 13, 202, 240;\n  --bs-warning-rgb: 255, 193, 7;\n  --bs-danger-rgb: 220, 53, 69;\n  --bs-light-rgb: 248, 249, 250;\n  --bs-dark-rgb: 33, 37, 41;\n  --bs-white-rgb: 255, 255, 255;\n  --bs-black-rgb: 0, 0, 0;\n  --bs-body-rgb: 33, 37, 41;\n  --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n  --bs-body-font-family: var(--bs-font-sans-serif);\n  --bs-body-font-size: 1rem;\n  --bs-body-font-weight: 400;\n  --bs-body-line-height: 1.5;\n  --bs-body-color: #212529;\n  --bs-body-bg: #fff;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  :root {\n    scroll-behavior: smooth;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: var(--bs-body-font-family);\n  font-size: var(--bs-body-font-size);\n  font-weight: var(--bs-body-font-weight);\n  line-height: var(--bs-body-line-height);\n  color: var(--bs-body-color);\n  text-align: var(--bs-body-text-align);\n  background-color: var(--bs-body-bg);\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n  margin: 1rem 0;\n  color: inherit;\n  background-color: currentColor;\n  border: 0;\n  opacity: 0.25;\n}\n\nhr:not([size]) {\n  height: 1px;\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\nh1, .h1 {\n  font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n  h1, .h1 {\n    font-size: 2.5rem;\n  }\n}\n\nh2, .h2 {\n  font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n  h2, .h2 {\n    font-size: 2rem;\n  }\n}\n\nh3, .h3 {\n  font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n  h3, .h3 {\n    font-size: 1.75rem;\n  }\n}\n\nh4, .h4 {\n  font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n  h4, .h4 {\n    font-size: 1.5rem;\n  }\n}\n\nh5, .h5 {\n  font-size: 1.25rem;\n}\n\nh6, .h6 {\n  font-size: 1rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-bs-original-title] {\n  text-decoration: underline dotted;\n  cursor: help;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: 0.5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall, .small {\n  font-size: 0.875em;\n}\n\nmark, .mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 0.75em;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\na {\n  color: #0d6efd;\n  text-decoration: underline;\n}\na:hover {\n  color: #0a58ca;\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n  color: inherit;\n  text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: var(--bs-font-monospace);\n  font-size: 1em;\n  direction: ltr /* rtl:ignore */;\n  unicode-bidi: bidi-override;\n}\n\npre {\n  display: block;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  font-size: 0.875em;\n}\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\ncode {\n  font-size: 0.875em;\n  color: #d63384;\n  word-wrap: break-word;\n}\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 0.875em;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\nkbd kbd {\n  padding: 0;\n  font-size: 1em;\n  font-weight: 700;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  color: #6c757d;\n  text-align: left;\n}\n\nth {\n  text-align: inherit;\n  text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\nlabel {\n  display: inline-block;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n[role=button] {\n  cursor: pointer;\n}\n\nselect {\n  word-wrap: normal;\n}\nselect:disabled {\n  opacity: 1;\n}\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n  -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n  cursor: pointer;\n}\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ntextarea {\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  float: left;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 0.5rem;\n  font-size: calc(1.275rem + 0.3vw);\n  line-height: inherit;\n}\n@media (min-width: 1200px) {\n  legend {\n    font-size: 1.5rem;\n  }\n}\nlegend + * {\n  clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n[type=search] {\n  outline-offset: -2px;\n  -webkit-appearance: textfield;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n::file-selector-button {\n  font: inherit;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\niframe {\n  border: 0;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[hidden] {\n  display: none !important;\n}\n\n.lead {\n  font-size: 1.25rem;\n  font-weight: 300;\n}\n\n.display-1 {\n  font-size: calc(1.625rem + 4.5vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-1 {\n    font-size: 5rem;\n  }\n}\n\n.display-2 {\n  font-size: calc(1.575rem + 3.9vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-2 {\n    font-size: 4.5rem;\n  }\n}\n\n.display-3 {\n  font-size: calc(1.525rem + 3.3vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-3 {\n    font-size: 4rem;\n  }\n}\n\n.display-4 {\n  font-size: calc(1.475rem + 2.7vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-4 {\n    font-size: 3.5rem;\n  }\n}\n\n.display-5 {\n  font-size: calc(1.425rem + 2.1vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-5 {\n    font-size: 3rem;\n  }\n}\n\n.display-6 {\n  font-size: calc(1.375rem + 1.5vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-6 {\n    font-size: 2.5rem;\n  }\n}\n\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline-item {\n  display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n  margin-right: 0.5rem;\n}\n\n.initialism {\n  font-size: 0.875em;\n  text-transform: uppercase;\n}\n\n.blockquote {\n  margin-bottom: 1rem;\n  font-size: 1.25rem;\n}\n.blockquote > :last-child {\n  margin-bottom: 0;\n}\n\n.blockquote-footer {\n  margin-top: -1rem;\n  margin-bottom: 1rem;\n  font-size: 0.875em;\n  color: #6c757d;\n}\n.blockquote-footer::before {\n  content: \"鈥斅燶";\n}\n\n.img-fluid {\n  max-width: 100%;\n  height: auto;\n}\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  border-radius: 0.25rem;\n  max-width: 100%;\n  height: auto;\n}\n\n.figure {\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: 0.5rem;\n  line-height: 1;\n}\n\n.figure-caption {\n  font-size: 0.875em;\n  color: #6c757d;\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n  width: 100%;\n  padding-right: var(--bs-gutter-x, 0.75rem);\n  padding-left: var(--bs-gutter-x, 0.75rem);\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container-sm, .container {\n    max-width: 540px;\n  }\n}\n@media (min-width: 768px) {\n  .container-md, .container-sm, .container {\n    max-width: 720px;\n  }\n}\n@media (min-width: 992px) {\n  .container-lg, .container-md, .container-sm, .container {\n    max-width: 960px;\n  }\n}\n@media (min-width: 1200px) {\n  .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1140px;\n  }\n}\n@media (min-width: 1400px) {\n  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1320px;\n  }\n}\n.row {\n  --bs-gutter-x: 1.5rem;\n  --bs-gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--bs-gutter-y) * -1);\n  margin-right: calc(var(--bs-gutter-x) * -.5);\n  margin-left: calc(var(--bs-gutter-x) * -.5);\n}\n.row > * {\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%;\n  padding-right: calc(var(--bs-gutter-x) * .5);\n  padding-left: calc(var(--bs-gutter-x) * .5);\n  margin-top: var(--bs-gutter-y);\n}\n\n.col {\n  flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.row-cols-1 > * {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.row-cols-2 > * {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.row-cols-3 > * {\n  flex: 0 0 auto;\n  width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.row-cols-5 > * {\n  flex: 0 0 auto;\n  width: 20%;\n}\n\n.row-cols-6 > * {\n  flex: 0 0 auto;\n  width: 16.6666666667%;\n}\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.col-1 {\n  flex: 0 0 auto;\n  width: 8.33333333%;\n}\n\n.col-2 {\n  flex: 0 0 auto;\n  width: 16.66666667%;\n}\n\n.col-3 {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 auto;\n  width: 33.33333333%;\n}\n\n.col-5 {\n  flex: 0 0 auto;\n  width: 41.66666667%;\n}\n\n.col-6 {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 auto;\n  width: 58.33333333%;\n}\n\n.col-8 {\n  flex: 0 0 auto;\n  width: 66.66666667%;\n}\n\n.col-9 {\n  flex: 0 0 auto;\n  width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 auto;\n  width: 83.33333333%;\n}\n\n.col-11 {\n  flex: 0 0 auto;\n  width: 91.66666667%;\n}\n\n.col-12 {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.offset-1 {\n  margin-left: 8.33333333%;\n}\n\n.offset-2 {\n  margin-left: 16.66666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.33333333%;\n}\n\n.offset-5 {\n  margin-left: 41.66666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.33333333%;\n}\n\n.offset-8 {\n  margin-left: 66.66666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.33333333%;\n}\n\n.offset-11 {\n  margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n  --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n  --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n  --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n  --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n  --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n  --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n  --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n  --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n  --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n  --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n  --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n  --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-sm-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-sm-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-sm-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-sm-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-sm-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-sm-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-sm-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-sm-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-sm-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-sm-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-sm-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-sm-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-sm-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-sm-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-sm-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-sm-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-sm-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-sm-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-sm-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n\n  .offset-sm-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-sm-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n\n  .offset-sm-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-sm-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n\n  .offset-sm-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-sm-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n\n  .offset-sm-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-sm-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-sm-0,\n.gx-sm-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-sm-0,\n.gy-sm-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-sm-1,\n.gx-sm-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-sm-1,\n.gy-sm-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-sm-2,\n.gx-sm-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-sm-2,\n.gy-sm-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-sm-3,\n.gx-sm-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-sm-3,\n.gy-sm-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-sm-4,\n.gx-sm-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-sm-4,\n.gy-sm-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-sm-5,\n.gx-sm-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-sm-5,\n.gy-sm-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 768px) {\n  .col-md {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-md-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-md-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-md-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-md-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-md-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-md-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-md-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-md-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-md-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-md-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-md-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-md-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-md-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-md-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-md-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-md-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-md-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-md-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-md-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-md-0 {\n    margin-left: 0;\n  }\n\n  .offset-md-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-md-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n\n  .offset-md-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-md-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n\n  .offset-md-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-md-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n\n  .offset-md-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-md-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-md-0,\n.gx-md-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-md-0,\n.gy-md-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-md-1,\n.gx-md-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-md-1,\n.gy-md-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-md-2,\n.gx-md-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-md-2,\n.gy-md-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-md-3,\n.gx-md-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-md-3,\n.gy-md-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-md-4,\n.gx-md-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-md-4,\n.gy-md-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-md-5,\n.gx-md-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-md-5,\n.gy-md-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 992px) {\n  .col-lg {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-lg-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-lg-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-lg-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-lg-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-lg-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-lg-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-lg-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-lg-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-lg-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-lg-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-lg-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-lg-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-lg-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-lg-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-lg-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-lg-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-lg-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-lg-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-lg-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n\n  .offset-lg-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-lg-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n\n  .offset-lg-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-lg-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n\n  .offset-lg-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-lg-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n\n  .offset-lg-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-lg-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-lg-0,\n.gx-lg-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-lg-0,\n.gy-lg-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-lg-1,\n.gx-lg-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-lg-1,\n.gy-lg-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-lg-2,\n.gx-lg-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-lg-2,\n.gy-lg-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-lg-3,\n.gx-lg-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-lg-3,\n.gy-lg-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-lg-4,\n.gx-lg-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-lg-4,\n.gy-lg-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-lg-5,\n.gx-lg-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-lg-5,\n.gy-lg-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1200px) {\n  .col-xl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xl-0,\n.gx-xl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xl-0,\n.gy-xl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xl-1,\n.gx-xl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xl-1,\n.gy-xl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xl-2,\n.gx-xl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xl-2,\n.gy-xl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xl-3,\n.gx-xl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xl-3,\n.gy-xl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xl-4,\n.gx-xl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xl-4,\n.gy-xl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xl-5,\n.gx-xl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xl-5,\n.gy-xl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1400px) {\n  .col-xxl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xxl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xxl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xxl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xxl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xxl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xxl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xxl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xxl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xxl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xxl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xxl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xxl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xxl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xxl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xxl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xxl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xxl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xxl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xxl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xxl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xxl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xxl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xxl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xxl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xxl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xxl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xxl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xxl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xxl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xxl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xxl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xxl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xxl-0,\n.gx-xxl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xxl-0,\n.gy-xxl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xxl-1,\n.gx-xxl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xxl-1,\n.gy-xxl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xxl-2,\n.gx-xxl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xxl-2,\n.gy-xxl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xxl-3,\n.gx-xxl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xxl-3,\n.gy-xxl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xxl-4,\n.gx-xxl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xxl-4,\n.gy-xxl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xxl-5,\n.gx-xxl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xxl-5,\n.gy-xxl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n.table {\n  --bs-table-bg: transparent;\n  --bs-table-accent-bg: transparent;\n  --bs-table-striped-color: #212529;\n  --bs-table-striped-bg: rgba(0, 0, 0, 0.05);\n  --bs-table-active-color: #212529;\n  --bs-table-active-bg: rgba(0, 0, 0, 0.1);\n  --bs-table-hover-color: #212529;\n  --bs-table-hover-bg: rgba(0, 0, 0, 0.075);\n  width: 100%;\n  margin-bottom: 1rem;\n  color: #212529;\n  vertical-align: top;\n  border-color: #dee2e6;\n}\n.table > :not(caption) > * > * {\n  padding: 0.5rem 0.5rem;\n  background-color: var(--bs-table-bg);\n  border-bottom-width: 1px;\n  box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg);\n}\n.table > tbody {\n  vertical-align: inherit;\n}\n.table > thead {\n  vertical-align: bottom;\n}\n.table > :not(:last-child) > :last-child > * {\n  border-bottom-color: currentColor;\n}\n\n.caption-top {\n  caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n  padding: 0.25rem 0.25rem;\n}\n\n.table-bordered > :not(caption) > * {\n  border-width: 1px 0;\n}\n.table-bordered > :not(caption) > * > * {\n  border-width: 0 1px;\n}\n\n.table-borderless > :not(caption) > * > * {\n  border-bottom-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) {\n  --bs-table-accent-bg: var(--bs-table-striped-bg);\n  color: var(--bs-table-striped-color);\n}\n\n.table-active {\n  --bs-table-accent-bg: var(--bs-table-active-bg);\n  color: var(--bs-table-active-color);\n}\n\n.table-hover > tbody > tr:hover {\n  --bs-table-accent-bg: var(--bs-table-hover-bg);\n  color: var(--bs-table-hover-color);\n}\n\n.table-primary {\n  --bs-table-bg: #cfe2ff;\n  --bs-table-striped-bg: #c5d7f2;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #bacbe6;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #bfd1ec;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #bacbe6;\n}\n\n.table-secondary {\n  --bs-table-bg: #e2e3e5;\n  --bs-table-striped-bg: #d7d8da;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #cbccce;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #d1d2d4;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #cbccce;\n}\n\n.table-success {\n  --bs-table-bg: #d1e7dd;\n  --bs-table-striped-bg: #c7dbd2;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #bcd0c7;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #c1d6cc;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #bcd0c7;\n}\n\n.table-info {\n  --bs-table-bg: #cff4fc;\n  --bs-table-striped-bg: #c5e8ef;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #badce3;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #bfe2e9;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #badce3;\n}\n\n.table-warning {\n  --bs-table-bg: #fff3cd;\n  --bs-table-striped-bg: #f2e7c3;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #e6dbb9;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #ece1be;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #e6dbb9;\n}\n\n.table-danger {\n  --bs-table-bg: #f8d7da;\n  --bs-table-striped-bg: #eccccf;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #dfc2c4;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #e5c7ca;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #dfc2c4;\n}\n\n.table-light {\n  --bs-table-bg: #f8f9fa;\n  --bs-table-striped-bg: #ecedee;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #dfe0e1;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #e5e6e7;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #dfe0e1;\n}\n\n.table-dark {\n  --bs-table-bg: #212529;\n  --bs-table-striped-bg: #2c3034;\n  --bs-table-striped-color: #fff;\n  --bs-table-active-bg: #373b3e;\n  --bs-table-active-color: #fff;\n  --bs-table-hover-bg: #323539;\n  --bs-table-hover-color: #fff;\n  color: #fff;\n  border-color: #373b3e;\n}\n\n.table-responsive {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n}\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 1199.98px) {\n  .table-responsive-xl {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 1399.98px) {\n  .table-responsive-xxl {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n.form-label {\n  margin-bottom: 0.5rem;\n}\n\n.col-form-label {\n  padding-top: calc(0.375rem + 1px);\n  padding-bottom: calc(0.375rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5;\n}\n\n.col-form-label-lg {\n  padding-top: calc(0.5rem + 1px);\n  padding-bottom: calc(0.5rem + 1px);\n  font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n  padding-top: calc(0.25rem + 1px);\n  padding-bottom: calc(0.25rem + 1px);\n  font-size: 0.875rem;\n}\n\n.form-text {\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #6c757d;\n}\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ced4da;\n  appearance: none;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control {\n    transition: none;\n  }\n}\n.form-control[type=file] {\n  overflow: hidden;\n}\n.form-control[type=file]:not(:disabled):not([readonly]) {\n  cursor: pointer;\n}\n.form-control:focus {\n  color: #212529;\n  background-color: #fff;\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-control::-webkit-date-and-time-value {\n  height: 1.5em;\n}\n.form-control::placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n.form-control:disabled, .form-control[readonly] {\n  background-color: #e9ecef;\n  opacity: 1;\n}\n.form-control::file-selector-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control::file-selector-button {\n    transition: none;\n  }\n}\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n  background-color: #dde0e3;\n}\n.form-control::-webkit-file-upload-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control::-webkit-file-upload-button {\n    transition: none;\n  }\n}\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n  background-color: #dde0e3;\n}\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0;\n  margin-bottom: 0;\n  line-height: 1.5;\n  color: #212529;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.form-control-sm {\n  min-height: calc(1.5em + 0.5rem + 2px);\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n.form-control-sm::file-selector-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  margin-inline-end: 0.5rem;\n}\n.form-control-sm::-webkit-file-upload-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  margin-inline-end: 0.5rem;\n}\n\n.form-control-lg {\n  min-height: calc(1.5em + 1rem + 2px);\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n.form-control-lg::file-selector-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  margin-inline-end: 1rem;\n}\n.form-control-lg::-webkit-file-upload-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  margin-inline-end: 1rem;\n}\n\ntextarea.form-control {\n  min-height: calc(1.5em + 0.75rem + 2px);\n}\ntextarea.form-control-sm {\n  min-height: calc(1.5em + 0.5rem + 2px);\n}\ntextarea.form-control-lg {\n  min-height: calc(1.5em + 1rem + 2px);\n}\n\n.form-control-color {\n  width: 3rem;\n  height: auto;\n  padding: 0.375rem;\n}\n.form-control-color:not(:disabled):not([readonly]) {\n  cursor: pointer;\n}\n.form-control-color::-moz-color-swatch {\n  height: 1.5em;\n  border-radius: 0.25rem;\n}\n.form-control-color::-webkit-color-swatch {\n  height: 1.5em;\n  border-radius: 0.25rem;\n}\n\n.form-select {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 2.25rem 0.375rem 0.75rem;\n  -moz-padding-start: calc(0.75rem - 3px);\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  background-color: #fff;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right 0.75rem center;\n  background-size: 16px 12px;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-select {\n    transition: none;\n  }\n}\n.form-select:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n  padding-right: 0.75rem;\n  background-image: none;\n}\n.form-select:disabled {\n  background-color: #e9ecef;\n}\n.form-select:-moz-focusring {\n  color: transparent;\n  text-shadow: 0 0 0 #212529;\n}\n\n.form-select-sm {\n  padding-top: 0.25rem;\n  padding-bottom: 0.25rem;\n  padding-left: 0.5rem;\n  font-size: 0.875rem;\n}\n\n.form-select-lg {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  padding-left: 1rem;\n  font-size: 1.25rem;\n}\n\n.form-check {\n  display: block;\n  min-height: 1.5rem;\n  padding-left: 1.5em;\n  margin-bottom: 0.125rem;\n}\n.form-check .form-check-input {\n  float: left;\n  margin-left: -1.5em;\n}\n\n.form-check-input {\n  width: 1em;\n  height: 1em;\n  margin-top: 0.25em;\n  vertical-align: top;\n  background-color: #fff;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: contain;\n  border: 1px solid rgba(0, 0, 0, 0.25);\n  appearance: none;\n  color-adjust: exact;\n}\n.form-check-input[type=checkbox] {\n  border-radius: 0.25em;\n}\n.form-check-input[type=radio] {\n  border-radius: 50%;\n}\n.form-check-input:active {\n  filter: brightness(90%);\n}\n.form-check-input:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-check-input:checked {\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.form-check-input:checked[type=checkbox] {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e\");\n}\n.form-check-input:checked[type=radio] {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-check-input[type=checkbox]:indeterminate {\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n}\n.form-check-input:disabled {\n  pointer-events: none;\n  filter: none;\n  opacity: 0.5;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n  opacity: 0.5;\n}\n\n.form-switch {\n  padding-left: 2.5em;\n}\n.form-switch .form-check-input {\n  width: 2em;\n  margin-left: -2.5em;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n  background-position: left center;\n  border-radius: 2em;\n  transition: background-position 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-switch .form-check-input {\n    transition: none;\n  }\n}\n.form-switch .form-check-input:focus {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n.form-switch .form-check-input:checked {\n  background-position: right center;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.form-check-inline {\n  display: inline-block;\n  margin-right: 1rem;\n}\n\n.btn-check {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\n  pointer-events: none;\n  filter: none;\n  opacity: 0.65;\n}\n\n.form-range {\n  width: 100%;\n  height: 1.5rem;\n  padding: 0;\n  background-color: transparent;\n  appearance: none;\n}\n.form-range:focus {\n  outline: 0;\n}\n.form-range:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range::-moz-focus-outer {\n  border: 0;\n}\n.form-range::-webkit-slider-thumb {\n  width: 1rem;\n  height: 1rem;\n  margin-top: -0.25rem;\n  background-color: #0d6efd;\n  border: 0;\n  border-radius: 1rem;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-range::-webkit-slider-thumb {\n    transition: none;\n  }\n}\n.form-range::-webkit-slider-thumb:active {\n  background-color: #b6d4fe;\n}\n.form-range::-webkit-slider-runnable-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n.form-range::-moz-range-thumb {\n  width: 1rem;\n  height: 1rem;\n  background-color: #0d6efd;\n  border: 0;\n  border-radius: 1rem;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-range::-moz-range-thumb {\n    transition: none;\n  }\n}\n.form-range::-moz-range-thumb:active {\n  background-color: #b6d4fe;\n}\n.form-range::-moz-range-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n.form-range:disabled {\n  pointer-events: none;\n}\n.form-range:disabled::-webkit-slider-thumb {\n  background-color: #adb5bd;\n}\n.form-range:disabled::-moz-range-thumb {\n  background-color: #adb5bd;\n}\n\n.form-floating {\n  position: relative;\n}\n.form-floating > .form-control,\n.form-floating > .form-select {\n  height: calc(3.5rem + 2px);\n  line-height: 1.25;\n}\n.form-floating > label {\n  position: absolute;\n  top: 0;\n  left: 0;\n  height: 100%;\n  padding: 1rem 0.75rem;\n  pointer-events: none;\n  border: 1px solid transparent;\n  transform-origin: 0 0;\n  transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-floating > label {\n    transition: none;\n  }\n}\n.form-floating > .form-control {\n  padding: 1rem 0.75rem;\n}\n.form-floating > .form-control::placeholder {\n  color: transparent;\n}\n.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown) {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:-webkit-autofill {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-select {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:focus ~ label,\n.form-floating > .form-control:not(:placeholder-shown) ~ label,\n.form-floating > .form-select ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control:-webkit-autofill ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: stretch;\n  width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-select {\n  position: relative;\n  flex: 1 1 auto;\n  width: 1%;\n  min-width: 0;\n}\n.input-group > .form-control:focus,\n.input-group > .form-select:focus {\n  z-index: 3;\n}\n.input-group .btn {\n  position: relative;\n  z-index: 2;\n}\n.input-group .btn:focus {\n  z-index: 3;\n}\n\n.input-group-text {\n  display: flex;\n  align-items: center;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #e9ecef;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n  padding-right: 3rem;\n}\n\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n  margin-left: -1px;\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #198754;\n}\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: 0.1rem;\n  font-size: 0.875rem;\n  color: #fff;\n  background-color: rgba(25, 135, 84, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n  border-color: #198754;\n  padding-right: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right calc(0.375em + 0.1875rem) center;\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n  border-color: #198754;\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n  padding-right: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:valid, .form-select.is-valid {\n  border-color: #198754;\n}\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"] {\n  padding-right: 4.125rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\"), url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-position: right 0.75rem center, center right 2.25rem;\n  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\n  border-color: #198754;\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\n  border-color: #198754;\n}\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n  background-color: #198754;\n}\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #198754;\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n  margin-left: 0.5em;\n}\n\n.was-validated .input-group .form-control:valid, .input-group .form-control.is-valid,\n.was-validated .input-group .form-select:valid,\n.input-group .form-select.is-valid {\n  z-index: 1;\n}\n.was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus,\n.was-validated .input-group .form-select:valid:focus,\n.input-group .form-select.is-valid:focus {\n  z-index: 3;\n}\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #dc3545;\n}\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: 0.1rem;\n  font-size: 0.875rem;\n  color: #fff;\n  background-color: rgba(220, 53, 69, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n  border-color: #dc3545;\n  padding-right: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right calc(0.375em + 0.1875rem) center;\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n  padding-right: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:invalid, .form-select.is-invalid {\n  border-color: #dc3545;\n}\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"] {\n  padding-right: 4.125rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\"), url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n  background-position: right 0.75rem center, center right 2.25rem;\n  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n  border-color: #dc3545;\n}\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n  background-color: #dc3545;\n}\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #dc3545;\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n  margin-left: 0.5em;\n}\n\n.was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid,\n.was-validated .input-group .form-select:invalid,\n.input-group .form-select.is-invalid {\n  z-index: 2;\n}\n.was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus,\n.was-validated .input-group .form-select:invalid:focus,\n.input-group .form-select.is-invalid:focus {\n  z-index: 3;\n}\n\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: center;\n  text-decoration: none;\n  vertical-align: middle;\n  cursor: pointer;\n  user-select: none;\n  background-color: transparent;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  border-radius: 0.25rem;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .btn {\n    transition: none;\n  }\n}\n.btn:hover {\n  color: #212529;\n}\n.btn-check:focus + .btn, .btn:focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\n  pointer-events: none;\n  opacity: 0.65;\n}\n\n.btn-primary {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #0b5ed7;\n  border-color: #0a58ca;\n}\n.btn-check:focus + .btn-primary, .btn-primary:focus {\n  color: #fff;\n  background-color: #0b5ed7;\n  border-color: #0a58ca;\n  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\n}\n.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #0a58ca;\n  border-color: #0a53be;\n}\n.btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\n}\n.btn-primary:disabled, .btn-primary.disabled {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n\n.btn-secondary {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-secondary:hover {\n  color: #fff;\n  background-color: #5c636a;\n  border-color: #565e64;\n}\n.btn-check:focus + .btn-secondary, .btn-secondary:focus {\n  color: #fff;\n  background-color: #5c636a;\n  border-color: #565e64;\n  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\n}\n.btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #565e64;\n  border-color: #51585e;\n}\n.btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\n}\n.btn-secondary:disabled, .btn-secondary.disabled {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-success {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #157347;\n  border-color: #146c43;\n}\n.btn-check:focus + .btn-success, .btn-success:focus {\n  color: #fff;\n  background-color: #157347;\n  border-color: #146c43;\n  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\n}\n.btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle {\n  color: #fff;\n  background-color: #146c43;\n  border-color: #13653f;\n}\n.btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\n}\n.btn-success:disabled, .btn-success.disabled {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n\n.btn-info {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-info:hover {\n  color: #000;\n  background-color: #31d2f2;\n  border-color: #25cff2;\n}\n.btn-check:focus + .btn-info, .btn-info:focus {\n  color: #000;\n  background-color: #31d2f2;\n  border-color: #25cff2;\n  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\n}\n.btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle {\n  color: #000;\n  background-color: #3dd5f3;\n  border-color: #25cff2;\n}\n.btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\n}\n.btn-info:disabled, .btn-info.disabled {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n\n.btn-warning {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-warning:hover {\n  color: #000;\n  background-color: #ffca2c;\n  border-color: #ffc720;\n}\n.btn-check:focus + .btn-warning, .btn-warning:focus {\n  color: #000;\n  background-color: #ffca2c;\n  border-color: #ffc720;\n  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\n}\n.btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle {\n  color: #000;\n  background-color: #ffcd39;\n  border-color: #ffc720;\n}\n.btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\n}\n.btn-warning:disabled, .btn-warning.disabled {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-danger {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #bb2d3b;\n  border-color: #b02a37;\n}\n.btn-check:focus + .btn-danger, .btn-danger:focus {\n  color: #fff;\n  background-color: #bb2d3b;\n  border-color: #b02a37;\n  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\n}\n.btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #b02a37;\n  border-color: #a52834;\n}\n.btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\n}\n.btn-danger:disabled, .btn-danger.disabled {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-light {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-light:hover {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n}\n.btn-check:focus + .btn-light, .btn-light:focus {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\n}\n.btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n}\n.btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\n}\n.btn-light:disabled, .btn-light.disabled {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-dark {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-dark:hover {\n  color: #fff;\n  background-color: #1c1f23;\n  border-color: #1a1e21;\n}\n.btn-check:focus + .btn-dark, .btn-dark:focus {\n  color: #fff;\n  background-color: #1c1f23;\n  border-color: #1a1e21;\n  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\n}\n.btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #1a1e21;\n  border-color: #191c1f;\n}\n.btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\n}\n.btn-dark:disabled, .btn-dark.disabled {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n\n.btn-outline-primary {\n  color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-outline-primary:hover {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\n}\n.btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\n}\n.btn-outline-primary:disabled, .btn-outline-primary.disabled {\n  color: #0d6efd;\n  background-color: transparent;\n}\n\n.btn-outline-secondary {\n  color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-outline-secondary:hover {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus {\n  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\n}\n.btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\n}\n.btn-outline-secondary:disabled, .btn-outline-secondary.disabled {\n  color: #6c757d;\n  background-color: transparent;\n}\n\n.btn-outline-success {\n  color: #198754;\n  border-color: #198754;\n}\n.btn-outline-success:hover {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-check:focus + .btn-outline-success, .btn-outline-success:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\n}\n.btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\n}\n.btn-outline-success:disabled, .btn-outline-success.disabled {\n  color: #198754;\n  background-color: transparent;\n}\n\n.btn-outline-info {\n  color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-outline-info:hover {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-check:focus + .btn-outline-info, .btn-outline-info:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\n}\n.btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\n}\n.btn-outline-info:disabled, .btn-outline-info.disabled {\n  color: #0dcaf0;\n  background-color: transparent;\n}\n\n.btn-outline-warning {\n  color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-outline-warning:hover {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus {\n  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\n}\n.btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\n}\n.btn-outline-warning:disabled, .btn-outline-warning.disabled {\n  color: #ffc107;\n  background-color: transparent;\n}\n\n.btn-outline-danger {\n  color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-outline-danger:hover {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\n}\n.btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\n}\n.btn-outline-danger:disabled, .btn-outline-danger.disabled {\n  color: #dc3545;\n  background-color: transparent;\n}\n\n.btn-outline-light {\n  color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-outline-light:hover {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-check:focus + .btn-outline-light, .btn-outline-light:focus {\n  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\n}\n.btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\n}\n.btn-outline-light:disabled, .btn-outline-light.disabled {\n  color: #f8f9fa;\n  background-color: transparent;\n}\n\n.btn-outline-dark {\n  color: #212529;\n  border-color: #212529;\n}\n.btn-outline-dark:hover {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus {\n  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\n}\n.btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\n}\n.btn-outline-dark:disabled, .btn-outline-dark.disabled {\n  color: #212529;\n  background-color: transparent;\n}\n\n.btn-link {\n  font-weight: 400;\n  color: #0d6efd;\n  text-decoration: underline;\n}\n.btn-link:hover {\n  color: #0a58ca;\n}\n.btn-link:disabled, .btn-link.disabled {\n  color: #6c757d;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n.dropup,\n.dropend,\n.dropdown,\n.dropstart {\n  position: relative;\n}\n\n.dropdown-toggle {\n  white-space: nowrap;\n}\n.dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropdown-menu {\n  position: absolute;\n  z-index: 1000;\n  display: none;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0;\n  font-size: 1rem;\n  color: #212529;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n.dropdown-menu[data-bs-popper] {\n  top: 100%;\n  left: 0;\n  margin-top: 0.125rem;\n}\n\n.dropdown-menu-start {\n  --bs-position: start;\n}\n.dropdown-menu-start[data-bs-popper] {\n  right: auto;\n  left: 0;\n}\n\n.dropdown-menu-end {\n  --bs-position: end;\n}\n.dropdown-menu-end[data-bs-popper] {\n  right: 0;\n  left: auto;\n}\n\n@media (min-width: 576px) {\n  .dropdown-menu-sm-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-sm-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-sm-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-sm-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 768px) {\n  .dropdown-menu-md-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-md-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-md-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-md-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 992px) {\n  .dropdown-menu-lg-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-lg-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-lg-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-lg-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 1200px) {\n  .dropdown-menu-xl-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-xl-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-xl-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-xl-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 1400px) {\n  .dropdown-menu-xxl-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-xxl-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-xxl-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-xxl-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n.dropup .dropdown-menu[data-bs-popper] {\n  top: auto;\n  bottom: 100%;\n  margin-top: 0;\n  margin-bottom: 0.125rem;\n}\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0.3em solid;\n  border-left: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n  top: 0;\n  right: auto;\n  left: 100%;\n  margin-top: 0;\n  margin-left: 0.125rem;\n}\n.dropend .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0;\n  border-bottom: 0.3em solid transparent;\n  border-left: 0.3em solid;\n}\n.dropend .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n.dropend .dropdown-toggle::after {\n  vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n  top: 0;\n  right: 100%;\n  left: auto;\n  margin-top: 0;\n  margin-right: 0.125rem;\n}\n.dropstart .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n}\n.dropstart .dropdown-toggle::after {\n  display: none;\n}\n.dropstart .dropdown-toggle::before {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0.3em solid;\n  border-bottom: 0.3em solid transparent;\n}\n.dropstart .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n.dropstart .dropdown-toggle::before {\n  vertical-align: 0;\n}\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.25rem 1rem;\n  clear: both;\n  font-weight: 400;\n  color: #212529;\n  text-align: inherit;\n  text-decoration: none;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n.dropdown-item:hover, .dropdown-item:focus {\n  color: #1e2125;\n  background-color: #e9ecef;\n}\n.dropdown-item.active, .dropdown-item:active {\n  color: #fff;\n  text-decoration: none;\n  background-color: #0d6efd;\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n  color: #adb5bd;\n  pointer-events: none;\n  background-color: transparent;\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 0.875rem;\n  color: #6c757d;\n  white-space: nowrap;\n}\n\n.dropdown-item-text {\n  display: block;\n  padding: 0.25rem 1rem;\n  color: #212529;\n}\n\n.dropdown-menu-dark {\n  color: #dee2e6;\n  background-color: #343a40;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.dropdown-menu-dark .dropdown-item {\n  color: #dee2e6;\n}\n.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus {\n  color: #fff;\n  background-color: rgba(255, 255, 255, 0.15);\n}\n.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active {\n  color: #fff;\n  background-color: #0d6efd;\n}\n.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled {\n  color: #adb5bd;\n}\n.dropdown-menu-dark .dropdown-divider {\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.dropdown-menu-dark .dropdown-item-text {\n  color: #dee2e6;\n}\n.dropdown-menu-dark .dropdown-header {\n  color: #adb5bd;\n}\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  flex: 1 1 auto;\n}\n.btn-group > .btn-check:checked + .btn,\n.btn-group > .btn-check:focus + .btn,\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn-check:checked + .btn,\n.btn-group-vertical > .btn-check:focus + .btn,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n  z-index: 1;\n}\n\n.btn-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n  width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n  margin-left: -1px;\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:nth-child(n+3),\n.btn-group > :not(.btn-check) + .btn,\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n  padding-right: 0.5625rem;\n  padding-left: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n  margin-left: 0;\n}\n.dropstart .dropdown-toggle-split::before {\n  margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-right: 0.375rem;\n  padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-right: 0.75rem;\n  padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n  width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n  margin-top: -1px;\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn ~ .btn,\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav {\n  display: flex;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 1rem;\n  color: #0d6efd;\n  text-decoration: none;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .nav-link {\n    transition: none;\n  }\n}\n.nav-link:hover, .nav-link:focus {\n  color: #0a58ca;\n}\n.nav-link.disabled {\n  color: #6c757d;\n  pointer-events: none;\n  cursor: default;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #dee2e6;\n}\n.nav-tabs .nav-link {\n  margin-bottom: -1px;\n  background: none;\n  border: 1px solid transparent;\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n  border-color: #e9ecef #e9ecef #dee2e6;\n  isolation: isolate;\n}\n.nav-tabs .nav-link.disabled {\n  color: #6c757d;\n  background-color: transparent;\n  border-color: transparent;\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n  color: #495057;\n  background-color: #fff;\n  border-color: #dee2e6 #dee2e6 #fff;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n  background: none;\n  border: 0;\n  border-radius: 0.25rem;\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #0d6efd;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n  flex: 1 1 auto;\n  text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n  flex-basis: 0;\n  flex-grow: 1;\n  text-align: center;\n}\n\n.nav-fill .nav-item .nav-link,\n.nav-justified .nav-item .nav-link {\n  width: 100%;\n}\n\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n\n.navbar {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n.navbar > .container,\n.navbar > .container-fluid,\n.navbar > .container-sm,\n.navbar > .container-md,\n.navbar > .container-lg,\n.navbar > .container-xl,\n.navbar > .container-xxl {\n  display: flex;\n  flex-wrap: inherit;\n  align-items: center;\n  justify-content: space-between;\n}\n.navbar-brand {\n  padding-top: 0.3125rem;\n  padding-bottom: 0.3125rem;\n  margin-right: 1rem;\n  font-size: 1.25rem;\n  text-decoration: none;\n  white-space: nowrap;\n}\n.navbar-nav {\n  display: flex;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.navbar-nav .nav-link {\n  padding-right: 0;\n  padding-left: 0;\n}\n.navbar-nav .dropdown-menu {\n  position: static;\n}\n\n.navbar-text {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n  flex-basis: 100%;\n  flex-grow: 1;\n  align-items: center;\n}\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.25rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n  transition: box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .navbar-toggler {\n    transition: none;\n  }\n}\n.navbar-toggler:hover {\n  text-decoration: none;\n}\n.navbar-toggler:focus {\n  text-decoration: none;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem;\n}\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 100%;\n}\n\n.navbar-nav-scroll {\n  max-height: var(--bs-scroll-height, 75vh);\n  overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-sm .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-sm .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-sm .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-sm .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-sm .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-sm .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-sm .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-sm .offcanvas-top,\n.navbar-expand-sm .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-sm .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-md .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-md .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-md .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-md .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-md .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-md .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-md .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-md .offcanvas-top,\n.navbar-expand-md .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-md .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-lg .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-lg .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-lg .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-lg .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-lg .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-lg .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-lg .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-lg .offcanvas-top,\n.navbar-expand-lg .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-lg .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 1200px) {\n  .navbar-expand-xl {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xl .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-xl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xl .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-xl .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-xl .offcanvas-top,\n.navbar-expand-xl .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-xl .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 1400px) {\n  .navbar-expand-xxl {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xxl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xxl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xxl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xxl .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-xxl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xxl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xxl .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-xxl .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-xxl .offcanvas-top,\n.navbar-expand-xxl .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-xxl .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n.navbar-expand {\n  flex-wrap: nowrap;\n  justify-content: flex-start;\n}\n.navbar-expand .navbar-nav {\n  flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n  position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n  padding-right: 0.5rem;\n  padding-left: 0.5rem;\n}\n.navbar-expand .navbar-nav-scroll {\n  overflow: visible;\n}\n.navbar-expand .navbar-collapse {\n  display: flex !important;\n  flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n  display: none;\n}\n.navbar-expand .offcanvas-header {\n  display: none;\n}\n.navbar-expand .offcanvas {\n  position: inherit;\n  bottom: 0;\n  z-index: 1000;\n  flex-grow: 1;\n  visibility: visible !important;\n  background-color: transparent;\n  border-right: 0;\n  border-left: 0;\n  transition: none;\n  transform: none;\n}\n.navbar-expand .offcanvas-top,\n.navbar-expand .offcanvas-bottom {\n  height: auto;\n  border-top: 0;\n  border-bottom: 0;\n}\n.navbar-expand .offcanvas-body {\n  display: flex;\n  flex-grow: 0;\n  padding: 0;\n  overflow-y: visible;\n}\n\n.navbar-light .navbar-brand {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(0, 0, 0, 0.55);\n}\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n  color: rgba(0, 0, 0, 0.7);\n}\n.navbar-light .navbar-nav .nav-link.disabled {\n  color: rgba(0, 0, 0, 0.3);\n}\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .nav-link.active {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-toggler {\n  color: rgba(0, 0, 0, 0.55);\n  border-color: rgba(0, 0, 0, 0.1);\n}\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-light .navbar-text {\n  color: rgba(0, 0, 0, 0.55);\n}\n.navbar-light .navbar-text a,\n.navbar-light .navbar-text a:hover,\n.navbar-light .navbar-text a:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n  color: #fff;\n}\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n  color: #fff;\n}\n.navbar-dark .navbar-nav .nav-link {\n  color: rgba(255, 255, 255, 0.55);\n}\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n  color: rgba(255, 255, 255, 0.75);\n}\n.navbar-dark .navbar-nav .nav-link.disabled {\n  color: rgba(255, 255, 255, 0.25);\n}\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #fff;\n}\n.navbar-dark .navbar-toggler {\n  color: rgba(255, 255, 255, 0.55);\n  border-color: rgba(255, 255, 255, 0.1);\n}\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-dark .navbar-text {\n  color: rgba(255, 255, 255, 0.55);\n}\n.navbar-dark .navbar-text a,\n.navbar-dark .navbar-text a:hover,\n.navbar-dark .navbar-text a:focus {\n  color: #fff;\n}\n\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.25rem;\n}\n.card > hr {\n  margin-right: 0;\n  margin-left: 0;\n}\n.card > .list-group {\n  border-top: inherit;\n  border-bottom: inherit;\n}\n.card > .list-group:first-child {\n  border-top-width: 0;\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.card > .list-group:last-child {\n  border-bottom-width: 0;\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n  border-top: 0;\n}\n\n.card-body {\n  flex: 1 1 auto;\n  padding: 1rem 1rem;\n}\n\n.card-title {\n  margin-bottom: 0.5rem;\n}\n\n.card-subtitle {\n  margin-top: -0.25rem;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link + .card-link {\n  margin-left: 1rem;\n}\n\n.card-header {\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-header:first-child {\n  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n  padding: 0.5rem 1rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-footer:last-child {\n  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n  margin-right: -0.5rem;\n  margin-bottom: -0.5rem;\n  margin-left: -0.5rem;\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-right: -0.5rem;\n  margin-left: -0.5rem;\n}\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 1rem;\n  border-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n  width: 100%;\n}\n\n.card-img,\n.card-img-top {\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-bottom {\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-group > .card {\n  margin-bottom: 0.75rem;\n}\n@media (min-width: 576px) {\n  .card-group {\n    display: flex;\n    flex-flow: row wrap;\n  }\n  .card-group > .card {\n    flex: 1 0 0%;\n    margin-bottom: 0;\n  }\n  .card-group > .card + .card {\n    margin-left: 0;\n    border-left: 0;\n  }\n  .card-group > .card:not(:last-child) {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-top,\n.card-group > .card:not(:last-child) .card-header {\n    border-top-right-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-bottom,\n.card-group > .card:not(:last-child) .card-footer {\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:not(:first-child) {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-top,\n.card-group > .card:not(:first-child) .card-header {\n    border-top-left-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-bottom,\n.card-group > .card:not(:first-child) .card-footer {\n    border-bottom-left-radius: 0;\n  }\n}\n\n.accordion-button {\n  position: relative;\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: 1rem 1.25rem;\n  font-size: 1rem;\n  color: #212529;\n  text-align: left;\n  background-color: #fff;\n  border: 0;\n  border-radius: 0;\n  overflow-anchor: none;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .accordion-button {\n    transition: none;\n  }\n}\n.accordion-button:not(.collapsed) {\n  color: #0c63e4;\n  background-color: #e7f1ff;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125);\n}\n.accordion-button:not(.collapsed)::after {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n  transform: rotate(-180deg);\n}\n.accordion-button::after {\n  flex-shrink: 0;\n  width: 1.25rem;\n  height: 1.25rem;\n  margin-left: auto;\n  content: \"\";\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-size: 1.25rem;\n  transition: transform 0.2s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .accordion-button::after {\n    transition: none;\n  }\n}\n.accordion-button:hover {\n  z-index: 2;\n}\n.accordion-button:focus {\n  z-index: 3;\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.accordion-header {\n  margin-bottom: 0;\n}\n\n.accordion-item {\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.accordion-item:first-of-type {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n.accordion-item:first-of-type .accordion-button {\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.accordion-item:not(:first-of-type) {\n  border-top: 0;\n}\n.accordion-item:last-of-type {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n.accordion-item:last-of-type .accordion-button.collapsed {\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n.accordion-item:last-of-type .accordion-collapse {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.accordion-body {\n  padding: 1rem 1.25rem;\n}\n\n.accordion-flush .accordion-collapse {\n  border-width: 0;\n}\n.accordion-flush .accordion-item {\n  border-right: 0;\n  border-left: 0;\n  border-radius: 0;\n}\n.accordion-flush .accordion-item:first-child {\n  border-top: 0;\n}\n.accordion-flush .accordion-item:last-child {\n  border-bottom: 0;\n}\n.accordion-flush .accordion-item .accordion-button {\n  border-radius: 0;\n}\n\n.breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  padding: 0 0;\n  margin-bottom: 1rem;\n  list-style: none;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n  padding-left: 0.5rem;\n}\n.breadcrumb-item + .breadcrumb-item::before {\n  float: left;\n  padding-right: 0.5rem;\n  color: #6c757d;\n  content: var(--bs-breadcrumb-divider, \"/\") /* rtl: var(--bs-breadcrumb-divider, \"/\") */;\n}\n.breadcrumb-item.active {\n  color: #6c757d;\n}\n\n.pagination {\n  display: flex;\n  padding-left: 0;\n  list-style: none;\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  color: #0d6efd;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .page-link {\n    transition: none;\n  }\n}\n.page-link:hover {\n  z-index: 2;\n  color: #0a58ca;\n  background-color: #e9ecef;\n  border-color: #dee2e6;\n}\n.page-link:focus {\n  z-index: 3;\n  color: #0a58ca;\n  background-color: #e9ecef;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.page-item:not(:first-child) .page-link {\n  margin-left: -1px;\n}\n.page-item.active .page-link {\n  z-index: 3;\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.page-item.disabled .page-link {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #fff;\n  border-color: #dee2e6;\n}\n\n.page-link {\n  padding: 0.375rem 0.75rem;\n}\n\n.page-item:first-child .page-link {\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n.page-item:last-child .page-link {\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.25rem;\n}\n.pagination-lg .page-item:first-child .page-link {\n  border-top-left-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem;\n}\n.pagination-lg .page-item:last-child .page-link {\n  border-top-right-radius: 0.3rem;\n  border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n}\n.pagination-sm .page-item:first-child .page-link {\n  border-top-left-radius: 0.2rem;\n  border-bottom-left-radius: 0.2rem;\n}\n.pagination-sm .page-item:last-child .page-link {\n  border-top-right-radius: 0.2rem;\n  border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n  display: inline-block;\n  padding: 0.35em 0.65em;\n  font-size: 0.75em;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n}\n.badge:empty {\n  display: none;\n}\n\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.alert {\n  position: relative;\n  padding: 1rem 1rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.alert-heading {\n  color: inherit;\n}\n\n.alert-link {\n  font-weight: 700;\n}\n\n.alert-dismissible {\n  padding-right: 3rem;\n}\n.alert-dismissible .btn-close {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  padding: 1.25rem 1rem;\n}\n\n.alert-primary {\n  color: #084298;\n  background-color: #cfe2ff;\n  border-color: #b6d4fe;\n}\n.alert-primary .alert-link {\n  color: #06357a;\n}\n\n.alert-secondary {\n  color: #41464b;\n  background-color: #e2e3e5;\n  border-color: #d3d6d8;\n}\n.alert-secondary .alert-link {\n  color: #34383c;\n}\n\n.alert-success {\n  color: #0f5132;\n  background-color: #d1e7dd;\n  border-color: #badbcc;\n}\n.alert-success .alert-link {\n  color: #0c4128;\n}\n\n.alert-info {\n  color: #055160;\n  background-color: #cff4fc;\n  border-color: #b6effb;\n}\n.alert-info .alert-link {\n  color: #04414d;\n}\n\n.alert-warning {\n  color: #664d03;\n  background-color: #fff3cd;\n  border-color: #ffecb5;\n}\n.alert-warning .alert-link {\n  color: #523e02;\n}\n\n.alert-danger {\n  color: #842029;\n  background-color: #f8d7da;\n  border-color: #f5c2c7;\n}\n.alert-danger .alert-link {\n  color: #6a1a21;\n}\n\n.alert-light {\n  color: #636464;\n  background-color: #fefefe;\n  border-color: #fdfdfe;\n}\n.alert-light .alert-link {\n  color: #4f5050;\n}\n\n.alert-dark {\n  color: #141619;\n  background-color: #d3d3d4;\n  border-color: #bcbebf;\n}\n.alert-dark .alert-link {\n  color: #101214;\n}\n\n@keyframes progress-bar-stripes {\n  0% {\n    background-position-x: 1rem;\n  }\n}\n.progress {\n  display: flex;\n  height: 1rem;\n  overflow: hidden;\n  font-size: 0.75rem;\n  background-color: #e9ecef;\n  border-radius: 0.25rem;\n}\n\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #0d6efd;\n  transition: width 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar {\n    transition: none;\n  }\n}\n\n.progress-bar-striped {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n  animation: 1s linear infinite progress-bar-stripes;\n}\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar-animated {\n    animation: none;\n  }\n}\n\n.list-group {\n  display: flex;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  border-radius: 0.25rem;\n}\n\n.list-group-numbered {\n  list-style-type: none;\n  counter-reset: section;\n}\n.list-group-numbered > li::before {\n  content: counters(section, \".\") \". \";\n  counter-increment: section;\n}\n\n.list-group-item-action {\n  width: 100%;\n  color: #495057;\n  text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n  z-index: 1;\n  color: #495057;\n  text-decoration: none;\n  background-color: #f8f9fa;\n}\n.list-group-item-action:active {\n  color: #212529;\n  background-color: #e9ecef;\n}\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.5rem 1rem;\n  color: #212529;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.list-group-item:first-child {\n  border-top-left-radius: inherit;\n  border-top-right-radius: inherit;\n}\n.list-group-item:last-child {\n  border-bottom-right-radius: inherit;\n  border-bottom-left-radius: inherit;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #fff;\n}\n.list-group-item.active {\n  z-index: 2;\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.list-group-item + .list-group-item {\n  border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n  margin-top: -1px;\n  border-top-width: 1px;\n}\n\n.list-group-horizontal {\n  flex-direction: row;\n}\n.list-group-horizontal > .list-group-item:first-child {\n  border-bottom-left-radius: 0.25rem;\n  border-top-right-radius: 0;\n}\n.list-group-horizontal > .list-group-item:last-child {\n  border-top-right-radius: 0.25rem;\n  border-bottom-left-radius: 0;\n}\n.list-group-horizontal > .list-group-item.active {\n  margin-top: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item {\n  border-top-width: 1px;\n  border-left-width: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n  margin-left: -1px;\n  border-left-width: 1px;\n}\n\n@media (min-width: 576px) {\n  .list-group-horizontal-sm {\n    flex-direction: row;\n  }\n  .list-group-horizontal-sm > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 768px) {\n  .list-group-horizontal-md {\n    flex-direction: row;\n  }\n  .list-group-horizontal-md > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-md > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-md > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-md > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 992px) {\n  .list-group-horizontal-lg {\n    flex-direction: row;\n  }\n  .list-group-horizontal-lg > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 1200px) {\n  .list-group-horizontal-xl {\n    flex-direction: row;\n  }\n  .list-group-horizontal-xl > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 1400px) {\n  .list-group-horizontal-xxl {\n    flex-direction: row;\n  }\n  .list-group-horizontal-xxl > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n.list-group-flush {\n  border-radius: 0;\n}\n.list-group-flush > .list-group-item {\n  border-width: 0 0 1px;\n}\n.list-group-flush > .list-group-item:last-child {\n  border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n  color: #084298;\n  background-color: #cfe2ff;\n}\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n  color: #084298;\n  background-color: #bacbe6;\n}\n.list-group-item-primary.list-group-item-action.active {\n  color: #fff;\n  background-color: #084298;\n  border-color: #084298;\n}\n\n.list-group-item-secondary {\n  color: #41464b;\n  background-color: #e2e3e5;\n}\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n  color: #41464b;\n  background-color: #cbccce;\n}\n.list-group-item-secondary.list-group-item-action.active {\n  color: #fff;\n  background-color: #41464b;\n  border-color: #41464b;\n}\n\n.list-group-item-success {\n  color: #0f5132;\n  background-color: #d1e7dd;\n}\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n  color: #0f5132;\n  background-color: #bcd0c7;\n}\n.list-group-item-success.list-group-item-action.active {\n  color: #fff;\n  background-color: #0f5132;\n  border-color: #0f5132;\n}\n\n.list-group-item-info {\n  color: #055160;\n  background-color: #cff4fc;\n}\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n  color: #055160;\n  background-color: #badce3;\n}\n.list-group-item-info.list-group-item-action.active {\n  color: #fff;\n  background-color: #055160;\n  border-color: #055160;\n}\n\n.list-group-item-warning {\n  color: #664d03;\n  background-color: #fff3cd;\n}\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n  color: #664d03;\n  background-color: #e6dbb9;\n}\n.list-group-item-warning.list-group-item-action.active {\n  color: #fff;\n  background-color: #664d03;\n  border-color: #664d03;\n}\n\n.list-group-item-danger {\n  color: #842029;\n  background-color: #f8d7da;\n}\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n  color: #842029;\n  background-color: #dfc2c4;\n}\n.list-group-item-danger.list-group-item-action.active {\n  color: #fff;\n  background-color: #842029;\n  border-color: #842029;\n}\n\n.list-group-item-light {\n  color: #636464;\n  background-color: #fefefe;\n}\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n  color: #636464;\n  background-color: #e5e5e5;\n}\n.list-group-item-light.list-group-item-action.active {\n  color: #fff;\n  background-color: #636464;\n  border-color: #636464;\n}\n\n.list-group-item-dark {\n  color: #141619;\n  background-color: #d3d3d4;\n}\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n  color: #141619;\n  background-color: #bebebf;\n}\n.list-group-item-dark.list-group-item-action.active {\n  color: #fff;\n  background-color: #141619;\n  border-color: #141619;\n}\n\n.btn-close {\n  box-sizing: content-box;\n  width: 1em;\n  height: 1em;\n  padding: 0.25em 0.25em;\n  color: #000;\n  background: transparent url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e\") center/1em auto no-repeat;\n  border: 0;\n  border-radius: 0.25rem;\n  opacity: 0.5;\n}\n.btn-close:hover {\n  color: #000;\n  text-decoration: none;\n  opacity: 0.75;\n}\n.btn-close:focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n  opacity: 1;\n}\n.btn-close:disabled, .btn-close.disabled {\n  pointer-events: none;\n  user-select: none;\n  opacity: 0.25;\n}\n\n.btn-close-white {\n  filter: invert(1) grayscale(100%) brightness(200%);\n}\n\n.toast {\n  width: 350px;\n  max-width: 100%;\n  font-size: 0.875rem;\n  pointer-events: auto;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.1);\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n.toast.showing {\n  opacity: 0;\n}\n.toast:not(.show) {\n  display: none;\n}\n\n.toast-container {\n  width: max-content;\n  max-width: 100%;\n  pointer-events: none;\n}\n.toast-container > :not(:last-child) {\n  margin-bottom: 0.75rem;\n}\n\n.toast-header {\n  display: flex;\n  align-items: center;\n  padding: 0.5rem 0.75rem;\n  color: #6c757d;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.toast-header .btn-close {\n  margin-right: -0.375rem;\n  margin-left: 0.75rem;\n}\n\n.toast-body {\n  padding: 0.75rem;\n  word-wrap: break-word;\n}\n\n.modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1055;\n  display: none;\n  width: 100%;\n  height: 100%;\n  overflow-x: hidden;\n  overflow-y: auto;\n  outline: 0;\n}\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none;\n}\n.modal.fade .modal-dialog {\n  transition: transform 0.3s ease-out;\n  transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n  .modal.fade .modal-dialog {\n    transition: none;\n  }\n}\n.modal.show .modal-dialog {\n  transform: none;\n}\n.modal.modal-static .modal-dialog {\n  transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n  height: calc(100% - 1rem);\n}\n.modal-dialog-scrollable .modal-content {\n  max-height: 100%;\n  overflow: hidden;\n}\n.modal-dialog-scrollable .modal-body {\n  overflow-y: auto;\n}\n\n.modal-dialog-centered {\n  display: flex;\n  align-items: center;\n  min-height: calc(100% - 1rem);\n}\n\n.modal-content {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n  outline: 0;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1050;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  opacity: 0;\n}\n.modal-backdrop.show {\n  opacity: 0.5;\n}\n\n.modal-header {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n  border-bottom: 1px solid #dee2e6;\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n.modal-header .btn-close {\n  padding: 0.5rem 0.5rem;\n  margin: -0.5rem -0.5rem -0.5rem auto;\n}\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.modal-body {\n  position: relative;\n  flex: 1 1 auto;\n  padding: 1rem;\n}\n\n.modal-footer {\n  display: flex;\n  flex-wrap: wrap;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: flex-end;\n  padding: 0.75rem;\n  border-top: 1px solid #dee2e6;\n  border-bottom-right-radius: calc(0.3rem - 1px);\n  border-bottom-left-radius: calc(0.3rem - 1px);\n}\n.modal-footer > * {\n  margin: 0.25rem;\n}\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto;\n  }\n\n  .modal-dialog-scrollable {\n    height: calc(100% - 3.5rem);\n  }\n\n  .modal-dialog-centered {\n    min-height: calc(100% - 3.5rem);\n  }\n\n  .modal-sm {\n    max-width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg,\n.modal-xl {\n    max-width: 800px;\n  }\n}\n@media (min-width: 1200px) {\n  .modal-xl {\n    max-width: 1140px;\n  }\n}\n.modal-fullscreen {\n  width: 100vw;\n  max-width: none;\n  height: 100%;\n  margin: 0;\n}\n.modal-fullscreen .modal-content {\n  height: 100%;\n  border: 0;\n  border-radius: 0;\n}\n.modal-fullscreen .modal-header {\n  border-radius: 0;\n}\n.modal-fullscreen .modal-body {\n  overflow-y: auto;\n}\n.modal-fullscreen .modal-footer {\n  border-radius: 0;\n}\n\n@media (max-width: 575.98px) {\n  .modal-fullscreen-sm-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-sm-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-sm-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-sm-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-sm-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 767.98px) {\n  .modal-fullscreen-md-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-md-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-md-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-md-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-md-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 991.98px) {\n  .modal-fullscreen-lg-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-lg-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-lg-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-lg-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-lg-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 1199.98px) {\n  .modal-fullscreen-xl-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-xl-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-xl-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-xl-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-xl-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 1399.98px) {\n  .modal-fullscreen-xxl-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-xxl-down .modal-footer {\n    border-radius: 0;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1080;\n  display: block;\n  margin: 0;\n  font-family: var(--bs-font-sans-serif);\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  opacity: 0;\n}\n.tooltip.show {\n  opacity: 0.9;\n}\n.tooltip .tooltip-arrow {\n  position: absolute;\n  display: block;\n  width: 0.8rem;\n  height: 0.4rem;\n}\n.tooltip .tooltip-arrow::before {\n  position: absolute;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[data-popper-placement^=top] {\n  padding: 0.4rem 0;\n}\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\n  bottom: 0;\n}\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\n  top: -1px;\n  border-width: 0.4rem 0.4rem 0;\n  border-top-color: #000;\n}\n\n.bs-tooltip-end, .bs-tooltip-auto[data-popper-placement^=right] {\n  padding: 0 0.4rem;\n}\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\n  left: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\n  right: -1px;\n  border-width: 0.4rem 0.4rem 0.4rem 0;\n  border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[data-popper-placement^=bottom] {\n  padding: 0.4rem 0;\n}\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\n  top: 0;\n}\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\n  bottom: -1px;\n  border-width: 0 0.4rem 0.4rem;\n  border-bottom-color: #000;\n}\n\n.bs-tooltip-start, .bs-tooltip-auto[data-popper-placement^=left] {\n  padding: 0 0.4rem;\n}\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\n  right: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\n  left: -1px;\n  border-width: 0.4rem 0 0.4rem 0.4rem;\n  border-left-color: #000;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 0.25rem;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0 /* rtl:ignore */;\n  z-index: 1070;\n  display: block;\n  max-width: 276px;\n  font-family: var(--bs-font-sans-serif);\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n}\n.popover .popover-arrow {\n  position: absolute;\n  display: block;\n  width: 1rem;\n  height: 0.5rem;\n}\n.popover .popover-arrow::before, .popover .popover-arrow::after {\n  position: absolute;\n  display: block;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\n  bottom: calc(-0.5rem - 1px);\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\n  bottom: 0;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n  bottom: 1px;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: #fff;\n}\n\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\n  left: calc(-0.5rem - 1px);\n  width: 0.5rem;\n  height: 1rem;\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\n  left: 0;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n  left: 1px;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: #fff;\n}\n\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\n  top: calc(-0.5rem - 1px);\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\n  top: 0;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n  top: 1px;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: #fff;\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\n  position: absolute;\n  top: 0;\n  left: 50%;\n  display: block;\n  width: 1rem;\n  margin-left: -0.5rem;\n  content: \"\";\n  border-bottom: 1px solid #f0f0f0;\n}\n\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\n  right: calc(-0.5rem - 1px);\n  width: 0.5rem;\n  height: 1rem;\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\n  right: 0;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n  right: 1px;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: #fff;\n}\n\n.popover-header {\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  background-color: #f0f0f0;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n.popover-header:empty {\n  display: none;\n}\n\n.popover-body {\n  padding: 1rem 1rem;\n  color: #212529;\n}\n\n.carousel {\n  position: relative;\n}\n\n.carousel.pointer-event {\n  touch-action: pan-y;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  float: left;\n  width: 100%;\n  margin-right: -100%;\n  backface-visibility: hidden;\n  transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-item {\n    transition: none;\n  }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n/* rtl:begin:ignore */\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n  transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n  transform: translateX(-100%);\n}\n\n/* rtl:end:ignore */\n.carousel-fade .carousel-item {\n  opacity: 0;\n  transition-property: opacity;\n  transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-start,\n.carousel-fade .carousel-item-prev.carousel-item-end {\n  z-index: 1;\n  opacity: 1;\n}\n.carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n  z-index: 0;\n  opacity: 0;\n  transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n    transition: none;\n  }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 15%;\n  padding: 0;\n  color: #fff;\n  text-align: center;\n  background: none;\n  border: 0;\n  opacity: 0.5;\n  transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-control-prev,\n.carousel-control-next {\n    transition: none;\n  }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  opacity: 0.9;\n}\n\n.carousel-control-prev {\n  left: 0;\n}\n\n.carousel-control-next {\n  right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  background-repeat: no-repeat;\n  background-position: 50%;\n  background-size: 100% 100%;\n}\n\n/* rtl:options: {\n  \"autoRename\": true,\n  \"stringMap\":[ {\n    \"name\"    : \"prev-next\",\n    \"search\"  : \"prev\",\n    \"replace\" : \"next\"\n  } ]\n} */\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 2;\n  display: flex;\n  justify-content: center;\n  padding: 0;\n  margin-right: 15%;\n  margin-bottom: 1rem;\n  margin-left: 15%;\n  list-style: none;\n}\n.carousel-indicators [data-bs-target] {\n  box-sizing: content-box;\n  flex: 0 1 auto;\n  width: 30px;\n  height: 3px;\n  padding: 0;\n  margin-right: 3px;\n  margin-left: 3px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 0;\n  border-top: 10px solid transparent;\n  border-bottom: 10px solid transparent;\n  opacity: 0.5;\n  transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-indicators [data-bs-target] {\n    transition: none;\n  }\n}\n.carousel-indicators .active {\n  opacity: 1;\n}\n\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 1.25rem;\n  left: 15%;\n  padding-top: 1.25rem;\n  padding-bottom: 1.25rem;\n  color: #fff;\n  text-align: center;\n}\n\n.carousel-dark .carousel-control-prev-icon,\n.carousel-dark .carousel-control-next-icon {\n  filter: invert(1) grayscale(100);\n}\n.carousel-dark .carousel-indicators [data-bs-target] {\n  background-color: #000;\n}\n.carousel-dark .carousel-caption {\n  color: #000;\n}\n\n@keyframes spinner-border {\n  to {\n    transform: rotate(360deg) /* rtl:ignore */;\n  }\n}\n.spinner-border {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: -0.125em;\n  border: 0.25em solid currentColor;\n  border-right-color: transparent;\n  border-radius: 50%;\n  animation: 0.75s linear infinite spinner-border;\n}\n\n.spinner-border-sm {\n  width: 1rem;\n  height: 1rem;\n  border-width: 0.2em;\n}\n\n@keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n.spinner-grow {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: -0.125em;\n  background-color: currentColor;\n  border-radius: 50%;\n  opacity: 0;\n  animation: 0.75s linear infinite spinner-grow;\n}\n\n.spinner-grow-sm {\n  width: 1rem;\n  height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .spinner-border,\n.spinner-grow {\n    animation-duration: 1.5s;\n  }\n}\n.offcanvas {\n  position: fixed;\n  bottom: 0;\n  z-index: 1045;\n  display: flex;\n  flex-direction: column;\n  max-width: 100%;\n  visibility: hidden;\n  background-color: #fff;\n  background-clip: padding-box;\n  outline: 0;\n  transition: transform 0.3s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .offcanvas {\n    transition: none;\n  }\n}\n\n.offcanvas-backdrop {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1040;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n.offcanvas-backdrop.fade {\n  opacity: 0;\n}\n.offcanvas-backdrop.show {\n  opacity: 0.5;\n}\n\n.offcanvas-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n}\n.offcanvas-header .btn-close {\n  padding: 0.5rem 0.5rem;\n  margin-top: -0.5rem;\n  margin-right: -0.5rem;\n  margin-bottom: -0.5rem;\n}\n\n.offcanvas-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.offcanvas-body {\n  flex-grow: 1;\n  padding: 1rem 1rem;\n  overflow-y: auto;\n}\n\n.offcanvas-start {\n  top: 0;\n  left: 0;\n  width: 400px;\n  border-right: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateX(-100%);\n}\n\n.offcanvas-end {\n  top: 0;\n  right: 0;\n  width: 400px;\n  border-left: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateX(100%);\n}\n\n.offcanvas-top {\n  top: 0;\n  right: 0;\n  left: 0;\n  height: 30vh;\n  max-height: 100%;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateY(-100%);\n}\n\n.offcanvas-bottom {\n  right: 0;\n  left: 0;\n  height: 30vh;\n  max-height: 100%;\n  border-top: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateY(100%);\n}\n\n.offcanvas.show {\n  transform: none;\n}\n\n.placeholder {\n  display: inline-block;\n  min-height: 1em;\n  vertical-align: middle;\n  cursor: wait;\n  background-color: currentColor;\n  opacity: 0.5;\n}\n.placeholder.btn::before {\n  display: inline-block;\n  content: \"\";\n}\n\n.placeholder-xs {\n  min-height: 0.6em;\n}\n\n.placeholder-sm {\n  min-height: 0.8em;\n}\n\n.placeholder-lg {\n  min-height: 1.2em;\n}\n\n.placeholder-glow .placeholder {\n  animation: placeholder-glow 2s ease-in-out infinite;\n}\n\n@keyframes placeholder-glow {\n  50% {\n    opacity: 0.2;\n  }\n}\n.placeholder-wave {\n  mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n  mask-size: 200% 100%;\n  animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n  100% {\n    mask-position: -200% 0%;\n  }\n}\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.link-primary {\n  color: #0d6efd;\n}\n.link-primary:hover, .link-primary:focus {\n  color: #0a58ca;\n}\n\n.link-secondary {\n  color: #6c757d;\n}\n.link-secondary:hover, .link-secondary:focus {\n  color: #565e64;\n}\n\n.link-success {\n  color: #198754;\n}\n.link-success:hover, .link-success:focus {\n  color: #146c43;\n}\n\n.link-info {\n  color: #0dcaf0;\n}\n.link-info:hover, .link-info:focus {\n  color: #3dd5f3;\n}\n\n.link-warning {\n  color: #ffc107;\n}\n.link-warning:hover, .link-warning:focus {\n  color: #ffcd39;\n}\n\n.link-danger {\n  color: #dc3545;\n}\n.link-danger:hover, .link-danger:focus {\n  color: #b02a37;\n}\n\n.link-light {\n  color: #f8f9fa;\n}\n.link-light:hover, .link-light:focus {\n  color: #f9fafb;\n}\n\n.link-dark {\n  color: #212529;\n}\n.link-dark:hover, .link-dark:focus {\n  color: #1a1e21;\n}\n\n.ratio {\n  position: relative;\n  width: 100%;\n}\n.ratio::before {\n  display: block;\n  padding-top: var(--bs-aspect-ratio);\n  content: \"\";\n}\n.ratio > * {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.ratio-1x1 {\n  --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n  --bs-aspect-ratio: calc(3 / 4 * 100%);\n}\n\n.ratio-16x9 {\n  --bs-aspect-ratio: calc(9 / 16 * 100%);\n}\n\n.ratio-21x9 {\n  --bs-aspect-ratio: calc(9 / 21 * 100%);\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.sticky-top {\n  position: sticky;\n  top: 0;\n  z-index: 1020;\n}\n\n@media (min-width: 576px) {\n  .sticky-sm-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 768px) {\n  .sticky-md-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 992px) {\n  .sticky-lg-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1200px) {\n  .sticky-xl-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1400px) {\n  .sticky-xxl-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1;\n  content: \"\";\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: 0.25;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.float-start {\n  float: left !important;\n}\n\n.float-end {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-25 {\n  opacity: 0.25 !important;\n}\n\n.opacity-50 {\n  opacity: 0.5 !important;\n}\n\n.opacity-75 {\n  opacity: 0.75 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: sticky !important;\n}\n\n.top-0 {\n  top: 0 !important;\n}\n\n.top-50 {\n  top: 50% !important;\n}\n\n.top-100 {\n  top: 100% !important;\n}\n\n.bottom-0 {\n  bottom: 0 !important;\n}\n\n.bottom-50 {\n  bottom: 50% !important;\n}\n\n.bottom-100 {\n  bottom: 100% !important;\n}\n\n.start-0 {\n  left: 0 !important;\n}\n\n.start-50 {\n  left: 50% !important;\n}\n\n.start-100 {\n  left: 100% !important;\n}\n\n.end-0 {\n  right: 0 !important;\n}\n\n.end-50 {\n  right: 50% !important;\n}\n\n.end-100 {\n  right: 100% !important;\n}\n\n.translate-middle {\n  transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n  transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n  transform: translateY(-50%) !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-end {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-end-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-start {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-start-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #0d6efd !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #198754 !important;\n}\n\n.border-info {\n  border-color: #0dcaf0 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #212529 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.border-1 {\n  border-width: 1px !important;\n}\n\n.border-2 {\n  border-width: 2px !important;\n}\n\n.border-3 {\n  border-width: 3px !important;\n}\n\n.border-4 {\n  border-width: 4px !important;\n}\n\n.border-5 {\n  border-width: 5px !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.vw-100 {\n  width: 100vw !important;\n}\n\n.min-vw-100 {\n  min-width: 100vw !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.vh-100 {\n  height: 100vh !important;\n}\n\n.min-vh-100 {\n  min-height: 100vh !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.gap-0 {\n  gap: 0 !important;\n}\n\n.gap-1 {\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  gap: 1rem !important;\n}\n\n.gap-4 {\n  gap: 1.5rem !important;\n}\n\n.gap-5 {\n  gap: 3rem !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-right: 0 !important;\n  margin-left: 0 !important;\n}\n\n.mx-1 {\n  margin-right: 0.25rem !important;\n  margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-right: 0.5rem !important;\n  margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-right: 1rem !important;\n  margin-left: 1rem !important;\n}\n\n.mx-4 {\n  margin-right: 1.5rem !important;\n  margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-right: 3rem !important;\n  margin-left: 3rem !important;\n}\n\n.mx-auto {\n  margin-right: auto !important;\n  margin-left: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-right: 0 !important;\n}\n\n.me-1 {\n  margin-right: 0.25rem !important;\n}\n\n.me-2 {\n  margin-right: 0.5rem !important;\n}\n\n.me-3 {\n  margin-right: 1rem !important;\n}\n\n.me-4 {\n  margin-right: 1.5rem !important;\n}\n\n.me-5 {\n  margin-right: 3rem !important;\n}\n\n.me-auto {\n  margin-right: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-left: 0 !important;\n}\n\n.ms-1 {\n  margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-left: 1rem !important;\n}\n\n.ms-4 {\n  margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-left: 3rem !important;\n}\n\n.ms-auto {\n  margin-left: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-right: 0 !important;\n  padding-left: 0 !important;\n}\n\n.px-1 {\n  padding-right: 0.25rem !important;\n  padding-left: 0.25rem !important;\n}\n\n.px-2 {\n  padding-right: 0.5rem !important;\n  padding-left: 0.5rem !important;\n}\n\n.px-3 {\n  padding-right: 1rem !important;\n  padding-left: 1rem !important;\n}\n\n.px-4 {\n  padding-right: 1.5rem !important;\n  padding-left: 1.5rem !important;\n}\n\n.px-5 {\n  padding-right: 3rem !important;\n  padding-left: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-right: 0 !important;\n}\n\n.pe-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-right: 1rem !important;\n}\n\n.pe-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-left: 0 !important;\n}\n\n.ps-1 {\n  padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-left: 1rem !important;\n}\n\n.ps-4 {\n  padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-left: 3rem !important;\n}\n\n.font-monospace {\n  font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n  font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n  font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n  font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n  font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n  font-size: 1.25rem !important;\n}\n\n.fs-6 {\n  font-size: 1rem !important;\n}\n\n.fst-italic {\n  font-style: italic !important;\n}\n\n.fst-normal {\n  font-style: normal !important;\n}\n\n.fw-light {\n  font-weight: 300 !important;\n}\n\n.fw-lighter {\n  font-weight: lighter !important;\n}\n\n.fw-normal {\n  font-weight: 400 !important;\n}\n\n.fw-bold {\n  font-weight: 700 !important;\n}\n\n.fw-bolder {\n  font-weight: bolder !important;\n}\n\n.lh-1 {\n  line-height: 1 !important;\n}\n\n.lh-sm {\n  line-height: 1.25 !important;\n}\n\n.lh-base {\n  line-height: 1.5 !important;\n}\n\n.lh-lg {\n  line-height: 2 !important;\n}\n\n.text-start {\n  text-align: left !important;\n}\n\n.text-end {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n.text-decoration-none {\n  text-decoration: none !important;\n}\n\n.text-decoration-underline {\n  text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n  text-decoration: line-through !important;\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.text-wrap {\n  white-space: normal !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n  word-wrap: break-word !important;\n  word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n  --bs-text-opacity: 1;\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  --bs-text-opacity: 1;\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  --bs-text-opacity: 1;\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-reset {\n  --bs-text-opacity: 1;\n  color: inherit !important;\n}\n\n.text-opacity-25 {\n  --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n  --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n  --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n  --bs-text-opacity: 1;\n}\n\n.bg-primary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n  --bs-bg-opacity: 1;\n  background-color: transparent !important;\n}\n\n.bg-opacity-10 {\n  --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n  --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n  --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n  --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n  --bs-bg-opacity: 1;\n}\n\n.bg-gradient {\n  background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n  user-select: all !important;\n}\n\n.user-select-auto {\n  user-select: auto !important;\n}\n\n.user-select-none {\n  user-select: none !important;\n}\n\n.pe-none {\n  pointer-events: none !important;\n}\n\n.pe-auto {\n  pointer-events: auto !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.rounded-1 {\n  border-radius: 0.2rem !important;\n}\n\n.rounded-2 {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-3 {\n  border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-pill {\n  border-radius: 50rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-end {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-start {\n  border-bottom-left-radius: 0.25rem !important;\n  border-top-left-radius: 0.25rem !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-start {\n    float: left !important;\n  }\n\n  .float-sm-end {\n    float: right !important;\n  }\n\n  .float-sm-none {\n    float: none !important;\n  }\n\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-sm-0 {\n    gap: 0 !important;\n  }\n\n  .gap-sm-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-sm-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-sm-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-sm-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-sm-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-sm-start {\n    text-align: left !important;\n  }\n\n  .text-sm-end {\n    text-align: right !important;\n  }\n\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 768px) {\n  .float-md-start {\n    float: left !important;\n  }\n\n  .float-md-end {\n    float: right !important;\n  }\n\n  .float-md-none {\n    float: none !important;\n  }\n\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-md-0 {\n    gap: 0 !important;\n  }\n\n  .gap-md-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-md-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-md-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-md-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-md-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-left: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-md-start {\n    text-align: left !important;\n  }\n\n  .text-md-end {\n    text-align: right !important;\n  }\n\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 992px) {\n  .float-lg-start {\n    float: left !important;\n  }\n\n  .float-lg-end {\n    float: right !important;\n  }\n\n  .float-lg-none {\n    float: none !important;\n  }\n\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-lg-0 {\n    gap: 0 !important;\n  }\n\n  .gap-lg-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-lg-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-lg-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-lg-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-lg-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-lg-start {\n    text-align: left !important;\n  }\n\n  .text-lg-end {\n    text-align: right !important;\n  }\n\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .float-xl-start {\n    float: left !important;\n  }\n\n  .float-xl-end {\n    float: right !important;\n  }\n\n  .float-xl-none {\n    float: none !important;\n  }\n\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xl-start {\n    text-align: left !important;\n  }\n\n  .text-xl-end {\n    text-align: right !important;\n  }\n\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1400px) {\n  .float-xxl-start {\n    float: left !important;\n  }\n\n  .float-xxl-end {\n    float: right !important;\n  }\n\n  .float-xxl-none {\n    float: none !important;\n  }\n\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xxl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xxl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xxl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xxl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xxl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xxl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xxl-start {\n    text-align: left !important;\n  }\n\n  .text-xxl-end {\n    text-align: right !important;\n  }\n\n  .text-xxl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .fs-1 {\n    font-size: 2.5rem !important;\n  }\n\n  .fs-2 {\n    font-size: 2rem !important;\n  }\n\n  .fs-3 {\n    font-size: 1.75rem !important;\n  }\n\n  .fs-4 {\n    font-size: 1.5rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */\n","/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n@import \"placeholders\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n  // Note: Custom variable values only support SassScript inside `#{}`.\n\n  // Colors\n  //\n  // Generate palettes for full colors, grays, and theme colors.\n\n  @each $color, $value in $colors {\n    --#{$variable-prefix}#{$color}: #{$value};\n  }\n\n  @each $color, $value in $grays {\n    --#{$variable-prefix}gray-#{$color}: #{$value};\n  }\n\n  @each $color, $value in $theme-colors {\n    --#{$variable-prefix}#{$color}: #{$value};\n  }\n\n  @each $color, $value in $theme-colors-rgb {\n    --#{$variable-prefix}#{$color}-rgb: #{$value};\n  }\n\n  --#{$variable-prefix}white-rgb: #{to-rgb($white)};\n  --#{$variable-prefix}black-rgb: #{to-rgb($black)};\n  --#{$variable-prefix}body-rgb: #{to-rgb($body-color)};\n\n  // Fonts\n\n  // Note: Use `inspect` for lists so that quoted items keep the quotes.\n  // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n  --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n  --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n  --#{$variable-prefix}gradient: #{$gradient};\n\n  // Root and body\n  // stylelint-disable custom-property-empty-line-before\n  // scss-docs-start root-body-variables\n  @if $font-size-root != null {\n    --#{$variable-prefix}root-font-size: #{$font-size-root};\n  }\n  --#{$variable-prefix}body-font-family: #{$font-family-base};\n  --#{$variable-prefix}body-font-size: #{$font-size-base};\n  --#{$variable-prefix}body-font-weight: #{$font-weight-base};\n  --#{$variable-prefix}body-line-height: #{$line-height-base};\n  --#{$variable-prefix}body-color: #{$body-color};\n  @if $body-text-align != null {\n    --#{$variable-prefix}body-text-align: #{$body-text-align};\n  }\n  --#{$variable-prefix}body-bg: #{$body-bg};\n  // scss-docs-end root-body-variables\n  // stylelint-enable custom-property-empty-line-before\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n  @if $font-size-root != null {\n    font-size: var(--#{$variable-prefix}-root-font-size);\n  }\n\n  @if $enable-smooth-scroll {\n    @media (prefers-reduced-motion: no-preference) {\n      scroll-behavior: smooth;\n    }\n  }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n  margin: 0; // 1\n  font-family: var(--#{$variable-prefix}body-font-family);\n  @include font-size(var(--#{$variable-prefix}body-font-size));\n  font-weight: var(--#{$variable-prefix}body-font-weight);\n  line-height: var(--#{$variable-prefix}body-line-height);\n  color: var(--#{$variable-prefix}body-color);\n  text-align: var(--#{$variable-prefix}body-text-align);\n  background-color: var(--#{$variable-prefix}body-bg); // 2\n  -webkit-text-size-adjust: 100%; // 3\n  -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n  margin: $hr-margin-y 0;\n  color: $hr-color; // 1\n  background-color: currentColor;\n  border: 0;\n  opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n  height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n//    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n//    margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n  margin-top: 0; // 1\n  margin-bottom: $headings-margin-bottom;\n  font-family: $headings-font-family;\n  font-style: $headings-font-style;\n  font-weight: $headings-font-weight;\n  line-height: $headings-line-height;\n  color: $headings-color;\n}\n\nh1 {\n  @extend %heading;\n  @include font-size($h1-font-size);\n}\n\nh2 {\n  @extend %heading;\n  @include font-size($h2-font-size);\n}\n\nh3 {\n  @extend %heading;\n  @include font-size($h3-font-size);\n}\n\nh4 {\n  @extend %heading;\n  @include font-size($h4-font-size);\n}\n\nh5 {\n  @extend %heading;\n  @include font-size($h5-font-size);\n}\n\nh6 {\n  @extend %heading;\n  @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n  margin-top: 0;\n  margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n  text-decoration: underline dotted; // 2\n  cursor: help; // 3\n  text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n  font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n  @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n  padding: $mark-padding;\n  background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n  position: relative;\n  @include font-size($sub-sup-font-size);\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n  color: $link-color;\n  text-decoration: $link-decoration;\n\n  &:hover {\n    color: $link-hover-color;\n    text-decoration: $link-hover-decoration;\n  }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n  &,\n  &:hover {\n    color: inherit;\n    text-decoration: none;\n  }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: $font-family-code;\n  @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n  direction: ltr #{\"/* rtl:ignore */\"};\n  unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n  display: block;\n  margin-top: 0; // 1\n  margin-bottom: 1rem; // 2\n  overflow: auto; // 3\n  @include font-size($code-font-size);\n  color: $pre-color;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    @include font-size(inherit);\n    color: inherit;\n    word-break: normal;\n  }\n}\n\ncode {\n  @include font-size($code-font-size);\n  color: $code-color;\n  word-wrap: break-word;\n\n  // Streamline the style when inside anchors to avoid broken underline and more\n  a > & {\n    color: inherit;\n  }\n}\n\nkbd {\n  padding: $kbd-padding-y $kbd-padding-x;\n  @include font-size($kbd-font-size);\n  color: $kbd-color;\n  background-color: $kbd-bg;\n  @include border-radius($border-radius-sm);\n\n  kbd {\n    padding: 0;\n    @include font-size(1em);\n    font-weight: $nested-kbd-font-weight;\n  }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n  margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: $table-cell-padding-y;\n  padding-bottom: $table-cell-padding-y;\n  color: $table-caption-color;\n  text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `<td>` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n  font-weight: $table-th-font-weight; // 1\n  text-align: inherit; // 2\n  text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n  display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0; // 1\n  font-family: inherit;\n  @include font-size(inherit);\n  line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n  text-transform: none;\n}\n// Set the cursor for non-`<button>` buttons\n//\n// Details at https://github.com/twbs/bootstrap/pull/30562\n[role=\"button\"] {\n  cursor: pointer;\n}\n\nselect {\n  // Remove the inheritance of word-wrap in Safari.\n  // See https://github.com/twbs/bootstrap/issues/24990\n  word-wrap: normal;\n\n  // Undo the opacity change from Chrome\n  &:disabled {\n    opacity: 1;\n  }\n}\n\n// Remove the dropdown arrow in Chrome from inputs built with datalists.\n// See https://stackoverflow.com/a/54997118\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n//    controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\n// 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n\n  @if $enable-button-pointers {\n    &:not(:disabled) {\n      cursor: pointer; // 3\n    }\n  }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\n// 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\ntextarea {\n  resize: vertical; // 1\n}\n\n// 1. Browsers set a default `min-width: min-content;` on fieldsets,\n//    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n//    So we reset that to ensure fieldsets behave more like a standard block element.\n//    See https://github.com/twbs/bootstrap/issues/12359\n//    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n// 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\nfieldset {\n  min-width: 0; // 1\n  padding: 0; // 2\n  margin: 0; // 2\n  border: 0; // 2\n}\n\n// 1. By using `float: left`, the legend will behave like a block element.\n//    This way the border of a fieldset wraps around the legend if present.\n// 2. Fix wrapping bug.\n//    See https://github.com/twbs/bootstrap/issues/29712\n\nlegend {\n  float: left; // 1\n  width: 100%;\n  padding: 0;\n  margin-bottom: $legend-margin-bottom;\n  @include font-size($legend-font-size);\n  font-weight: $legend-font-weight;\n  line-height: inherit;\n\n  + * {\n    clear: left; // 2\n  }\n}\n\n// Fix height of inputs with a type of datetime-local, date, month, week, or time\n// See https://github.com/twbs/bootstrap/issues/18842\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n// 1. Correct the outline style in Safari.\n// 2. This overrides the extra rounded corners on search inputs in iOS so that our\n//    `.form-control` class can properly style them. Note that this cannot simply\n//    be added to `.form-control` as it's not specific enough. For details, see\n//    https://github.com/twbs/bootstrap/issues/11586.\n\n[type=\"search\"] {\n  outline-offset: -2px; // 1\n  -webkit-appearance: textfield; // 2\n}\n\n// 1. A few input types should stay LTR\n// See https://rtlstyling.com/posts/rtl-styling#form-inputs\n// 2. RTL only output\n// See https://rtlcss.com/learn/usage-guide/control-directives/#raw\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n\n// Remove the inner padding in Chrome and Safari on macOS.\n\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n// Remove padding around color pickers in webkit browsers\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n\n// Inherit font family and line height for file input buttons\n\n::file-selector-button {\n  font: inherit;\n}\n\n// 1. Change font properties to `inherit`\n// 2. Correct the inability to style clickable types in iOS and Safari.\n\n::-webkit-file-upload-button {\n  font: inherit; // 1\n  -webkit-appearance: button; // 2\n}\n\n// Correct element displays\n\noutput {\n  display: inline-block;\n}\n\n// Remove border from iframe\n\niframe {\n  border: 0;\n}\n\n// Summary\n//\n// 1. Add the correct display in all browsers\n\nsummary {\n  display: list-item; // 1\n  cursor: pointer;\n}\n\n\n// Progress\n//\n// Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\nprogress {\n  vertical-align: baseline;\n}\n\n\n// Hidden attribute\n//\n// Always hide an element with the `hidden` HTML attribute.\n\n[hidden] {\n  display: none !important;\n}\n","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n  @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n  @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n  @error \"`#{$rfs-factor}` is not a valid  $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n  $dividend: abs($dividend);\n  $divisor: abs($divisor);\n  @if $dividend == 0 {\n    @return 0;\n  }\n  @if $divisor == 0 {\n    @error \"Cannot divide by 0\";\n  }\n  $remainder: $dividend;\n  $result: 0;\n  $factor: 10;\n  @while ($remainder > 0 and $precision >= 0) {\n    $quotient: 0;\n    @while ($remainder >= $divisor) {\n      $remainder: $remainder - $divisor;\n      $quotient: $quotient + 1;\n    }\n    $result: $result * 10 + $quotient;\n    $factor: $factor * .1;\n    $remainder: $remainder * 10;\n    $precision: $precision - 1;\n    @if ($precision < 0 and $remainder >= $divisor * 5) {\n      $result: $result + 1;\n    }\n  }\n  $result: $result * $factor * $sign;\n  $dividend-unit: unit($dividend);\n  $divisor-unit: unit($divisor);\n  $unit-map: (\n    \"px\": 1px,\n    \"rem\": 1rem,\n    \"em\": 1em,\n    \"%\": 1%\n  );\n  @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n    $result: $result * map-get($unit-map, $dividend-unit);\n  }\n  @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n  $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n  $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n  $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n  $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n  @if $rfs-two-dimensional {\n    @if $rfs-mode == max-media-query {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n    @else {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n  }\n  @else {\n    @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n      @content;\n    }\n  }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n  @if $rfs-class == disable and $rfs-mode == max-media-query {\n    // Adding an extra class increases specificity, which prevents the media query to override the property\n    &,\n    .disable-rfs &,\n    &.disable-rfs {\n      @content;\n    }\n  }\n  @else if $rfs-class == enable and $rfs-mode == min-media-query {\n    .enable-rfs &,\n    &.enable-rfs {\n      @content;\n    }\n  }\n  @else {\n    @content;\n  }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n  @if $rfs-class == enable {\n    @if $rfs-mode == min-media-query {\n      @content;\n    }\n\n    @include _rfs-media-query {\n      .enable-rfs &,\n      &.enable-rfs {\n        @content;\n      }\n    }\n  }\n  @else {\n    @if $rfs-class == disable and $rfs-mode == min-media-query {\n      .disable-rfs &,\n      &.disable-rfs {\n        @content;\n      }\n    }\n    @include _rfs-media-query {\n      @content;\n    }\n  }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      @if $unit == px {\n        // Convert to rem if needed\n        $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n      }\n      @else if $unit == rem {\n        // Convert to px if needed\n        $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n      }\n      @else {\n        // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n        $val: $val + ' ' + $value;\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n      @if not $unit or $unit != px and $unit != rem {\n        $val: $val + ' ' + $value;\n      }\n\n      @else {\n        // Remove unit from $value for calculations\n        $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n        // Only add the media query if the value is greater than the minimum value\n        @if abs($value) <= $rfs-base-value or not $enable-rfs {\n          $val: $val + ' ' +  if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n        }\n        @else {\n          // Calculate the minimum value\n          $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n          // Calculate difference between $value and the minimum value\n          $value-diff: abs($value) - $value-min;\n\n          // Base value formatting\n          $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n          // Use negative value if needed\n          $min-width: if($value < 0, -$min-width, $min-width);\n\n          // Use `vmin` if two-dimensional is enabled\n          $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n          // Calculate the variable width between 0 and $rfs-breakpoint\n          $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n          // Return the calculated value\n          $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n        }\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n  @if $values != null {\n    $val: rfs-value($values);\n    $fluidVal: rfs-fluid-value($values);\n\n    // Do not print the media query if responsive & non-responsive values are the same\n    @if $val == $fluidVal {\n      #{$property}: $val;\n    }\n    @else {\n      @include _rfs-rule {\n        #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n        // Include safari iframe resize fix if needed\n        min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n      }\n\n      @include _rfs-media-query-rule {\n        #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n      }\n    }\n  }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n  @include rfs($value);\n}\n\n@mixin padding($value) {\n  @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n  @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n  @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n  @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n  @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n  @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n  @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n  @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n  @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n  @include rfs($value, margin-left);\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white:    #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black:    #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n  \"100\": $gray-100,\n  \"200\": $gray-200,\n  \"300\": $gray-300,\n  \"400\": $gray-400,\n  \"500\": $gray-500,\n  \"600\": $gray-600,\n  \"700\": $gray-700,\n  \"800\": $gray-800,\n  \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue:    #0d6efd !default;\n$indigo:  #6610f2 !default;\n$purple:  #6f42c1 !default;\n$pink:    #d63384 !default;\n$red:     #dc3545 !default;\n$orange:  #fd7e14 !default;\n$yellow:  #ffc107 !default;\n$green:   #198754 !default;\n$teal:    #20c997 !default;\n$cyan:    #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n  \"blue\":       $blue,\n  \"indigo\":     $indigo,\n  \"purple\":     $purple,\n  \"pink\":       $pink,\n  \"red\":        $red,\n  \"orange\":     $orange,\n  \"yellow\":     $yellow,\n  \"green\":      $green,\n  \"teal\":       $teal,\n  \"cyan\":       $cyan,\n  \"white\":      $white,\n  \"gray\":       $gray-600,\n  \"gray-dark\":  $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// scss-docs-start theme-color-variables\n$primary:       $blue !default;\n$secondary:     $gray-600 !default;\n$success:       $green !default;\n$info:          $cyan !default;\n$warning:       $yellow !default;\n$danger:        $red !default;\n$light:         $gray-100 !default;\n$dark:          $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n  \"primary\":    $primary,\n  \"secondary\":  $secondary,\n  \"success\":    $success,\n  \"info\":       $info,\n  \"warning\":    $warning,\n  \"danger\":     $danger,\n  \"light\":      $light,\n  \"dark\":       $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-colors-rgb\n$theme-colors-rgb: map-loop($theme-colors, to-rgb, \"$value\") !default;\n// scss-docs-end theme-colors-rgb\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio:   4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark:      $black !default;\n$color-contrast-light:     $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n  \"blue-100\": $blue-100,\n  \"blue-200\": $blue-200,\n  \"blue-300\": $blue-300,\n  \"blue-400\": $blue-400,\n  \"blue-500\": $blue-500,\n  \"blue-600\": $blue-600,\n  \"blue-700\": $blue-700,\n  \"blue-800\": $blue-800,\n  \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n  \"indigo-100\": $indigo-100,\n  \"indigo-200\": $indigo-200,\n  \"indigo-300\": $indigo-300,\n  \"indigo-400\": $indigo-400,\n  \"indigo-500\": $indigo-500,\n  \"indigo-600\": $indigo-600,\n  \"indigo-700\": $indigo-700,\n  \"indigo-800\": $indigo-800,\n  \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n  \"purple-100\": $purple-200,\n  \"purple-200\": $purple-100,\n  \"purple-300\": $purple-300,\n  \"purple-400\": $purple-400,\n  \"purple-500\": $purple-500,\n  \"purple-600\": $purple-600,\n  \"purple-700\": $purple-700,\n  \"purple-800\": $purple-800,\n  \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n  \"pink-100\": $pink-100,\n  \"pink-200\": $pink-200,\n  \"pink-300\": $pink-300,\n  \"pink-400\": $pink-400,\n  \"pink-500\": $pink-500,\n  \"pink-600\": $pink-600,\n  \"pink-700\": $pink-700,\n  \"pink-800\": $pink-800,\n  \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n  \"red-100\": $red-100,\n  \"red-200\": $red-200,\n  \"red-300\": $red-300,\n  \"red-400\": $red-400,\n  \"red-500\": $red-500,\n  \"red-600\": $red-600,\n  \"red-700\": $red-700,\n  \"red-800\": $red-800,\n  \"red-900\": $red-900\n) !default;\n\n$oranges: (\n  \"orange-100\": $orange-100,\n  \"orange-200\": $orange-200,\n  \"orange-300\": $orange-300,\n  \"orange-400\": $orange-400,\n  \"orange-500\": $orange-500,\n  \"orange-600\": $orange-600,\n  \"orange-700\": $orange-700,\n  \"orange-800\": $orange-800,\n  \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n  \"yellow-100\": $yellow-100,\n  \"yellow-200\": $yellow-200,\n  \"yellow-300\": $yellow-300,\n  \"yellow-400\": $yellow-400,\n  \"yellow-500\": $yellow-500,\n  \"yellow-600\": $yellow-600,\n  \"yellow-700\": $yellow-700,\n  \"yellow-800\": $yellow-800,\n  \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n  \"green-100\": $green-100,\n  \"green-200\": $green-200,\n  \"green-300\": $green-300,\n  \"green-400\": $green-400,\n  \"green-500\": $green-500,\n  \"green-600\": $green-600,\n  \"green-700\": $green-700,\n  \"green-800\": $green-800,\n  \"green-900\": $green-900\n) !default;\n\n$teals: (\n  \"teal-100\": $teal-100,\n  \"teal-200\": $teal-200,\n  \"teal-300\": $teal-300,\n  \"teal-400\": $teal-400,\n  \"teal-500\": $teal-500,\n  \"teal-600\": $teal-600,\n  \"teal-700\": $teal-700,\n  \"teal-800\": $teal-800,\n  \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n  \"cyan-100\": $cyan-100,\n  \"cyan-200\": $cyan-200,\n  \"cyan-300\": $cyan-300,\n  \"cyan-400\": $cyan-400,\n  \"cyan-500\": $cyan-500,\n  \"cyan-600\": $cyan-600,\n  \"cyan-700\": $cyan-700,\n  \"cyan-800\": $cyan-800,\n  \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              false !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-cssgrid:              false !default;\n$enable-button-pointers:      true !default;\n$enable-rfs:                  true !default;\n$enable-validation-icons:     true !default;\n$enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities:  true !default;\n\n// Prefix for :root CSS variables\n\n$variable-prefix:             bs- !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg:                   $white !default;\n$body-color:                $gray-900 !default;\n$body-text-align:           null !default;\n\n// Utilities maps\n//\n// Extends the default `$theme-colors` maps to help create our utilities.\n\n// scss-docs-start utilities-colors\n$utilities-colors: map-merge(\n  $theme-colors-rgb,\n  (\n    \"black\": to-rgb($black),\n    \"white\": to-rgb($white),\n    \"body\":  to-rgb($body-color)\n  )\n) !default;\n// scss-docs-end utilities-colors\n\n// scss-docs-start utilities-text-colors\n$utilities-text-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"text\") !default;\n// scss-docs-end utilities-text-colors\n\n// scss-docs-start utilities-bg-colors\n$utilities-bg-colors: map-loop($utilities-colors, rgba-css-var, \"$key\", \"bg\") !default;\n// scss-docs-end utilities-bg-colors\n\n// Links\n//\n// Style anchor elements.\n\n$link-color:                              $primary !default;\n$link-decoration:                         underline !default;\n$link-shade-percentage:                   20% !default;\n$link-hover-color:                        shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration:                   null !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 992px,\n  xl: 1200px,\n  xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1140px,\n  xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns:                12 !default;\n$grid-gutter-width:           1.5rem !default;\n$grid-row-columns:            6 !default;\n\n$gutters: $spacers !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width * .5 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n\n$border-color:                $gray-300 !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius:               .25rem !default;\n$border-radius-sm:            .2rem !default;\n$border-radius-lg:            .3rem !default;\n$border-radius-pill:          50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow:                  0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm:               0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg:               0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset:            inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color:      $white !default;\n$component-active-bg:         $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width:                 .3em !default;\n$caret-vertical-align:        $caret-width * .85 !default;\n$caret-spacing:               $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"1x1\": 100%,\n  \"4x3\": calc(3 / 4 * 100%),\n  \"16x9\": calc(9 / 16 * 100%),\n  \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif:      system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base:            var(--#{$variable-prefix}font-sans-serif) !default;\n$font-family-code:            var(--#{$variable-prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root:              null !default;\n$font-size-base:              1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm:                $font-size-base * .875 !default;\n$font-size-lg:                $font-size-base * 1.25 !default;\n\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n\n$h1-font-size:                $font-size-base * 2.5 !default;\n$h2-font-size:                $font-size-base * 2 !default;\n$h3-font-size:                $font-size-base * 1.75 !default;\n$h4-font-size:                $font-size-base * 1.5 !default;\n$h5-font-size:                $font-size-base * 1.25 !default;\n$h6-font-size:                $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n  1: $h1-font-size,\n  2: $h2-font-size,\n  3: $h3-font-size,\n  4: $h4-font-size,\n  5: $h5-font-size,\n  6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n  1: 5rem,\n  2: 4.5rem,\n  3: 4rem,\n  4: 3.5rem,\n  5: 3rem,\n  6: 2.5rem\n) !default;\n\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size:              $font-size-base * 1.25 !default;\n$lead-font-weight:            300 !default;\n\n$small-font-size:             .875em !default;\n\n$sub-sup-font-size:           .75em !default;\n\n$text-muted:                  $gray-600 !default;\n\n$initialism-font-size:        $small-font-size !default;\n\n$blockquote-margin-y:         $spacer !default;\n$blockquote-font-size:        $font-size-base * 1.25 !default;\n$blockquote-footer-color:     $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y:                 $spacer !default;\n$hr-color:                    inherit !default;\n$hr-height:                   $border-width !default;\n$hr-opacity:                  .25 !default;\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$mark-padding:                .2em !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n$nested-kbd-font-weight:      $font-weight-bold !default;\n\n$list-inline-padding:         .5rem !default;\n\n$mark-bg:                     #fcf8e3 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y:        .5rem !default;\n$table-cell-padding-x:        .5rem !default;\n$table-cell-padding-y-sm:     .25rem !default;\n$table-cell-padding-x-sm:     .25rem !default;\n\n$table-cell-vertical-align:   top !default;\n\n$table-color:                 $body-color !default;\n$table-bg:                    transparent !default;\n$table-accent-bg:             transparent !default;\n\n$table-th-font-weight:        null !default;\n\n$table-striped-color:         $table-color !default;\n$table-striped-bg-factor:     .05 !default;\n$table-striped-bg:            rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color:          $table-color !default;\n$table-active-bg-factor:      .1 !default;\n$table-active-bg:             rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color:           $table-color !default;\n$table-hover-bg-factor:       .075 !default;\n$table-hover-bg:              rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor:         .1 !default;\n$table-border-width:          $border-width !default;\n$table-border-color:          $border-color !default;\n\n$table-striped-order:         odd !default;\n\n$table-group-separator-color: currentColor !default;\n\n$table-caption-color:         $text-muted !default;\n\n$table-bg-scale:              -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n  \"primary\":    shift-color($primary, $table-bg-scale),\n  \"secondary\":  shift-color($secondary, $table-bg-scale),\n  \"success\":    shift-color($success, $table-bg-scale),\n  \"info\":       shift-color($info, $table-bg-scale),\n  \"warning\":    shift-color($warning, $table-bg-scale),\n  \"danger\":     shift-color($danger, $table-bg-scale),\n  \"light\":      $light,\n  \"dark\":       $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y:         .375rem !default;\n$input-btn-padding-x:         .75rem !default;\n$input-btn-font-family:       null !default;\n$input-btn-font-size:         $font-size-base !default;\n$input-btn-line-height:       $line-height-base !default;\n\n$input-btn-focus-width:         .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color:         rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur:          0 !default;\n$input-btn-focus-box-shadow:    0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm:      .25rem !default;\n$input-btn-padding-x-sm:      .5rem !default;\n$input-btn-font-size-sm:      $font-size-sm !default;\n\n$input-btn-padding-y-lg:      .5rem !default;\n$input-btn-padding-x-lg:      1rem !default;\n$input-btn-font-size-lg:      $font-size-lg !default;\n\n$input-btn-border-width:      $border-width !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y:               $input-btn-padding-y !default;\n$btn-padding-x:               $input-btn-padding-x !default;\n$btn-font-family:             $input-btn-font-family !default;\n$btn-font-size:               $input-btn-font-size !default;\n$btn-line-height:             $input-btn-line-height !default;\n$btn-white-space:             null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm:            $input-btn-padding-y-sm !default;\n$btn-padding-x-sm:            $input-btn-padding-x-sm !default;\n$btn-font-size-sm:            $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg:            $input-btn-padding-y-lg !default;\n$btn-padding-x-lg:            $input-btn-padding-x-lg !default;\n$btn-font-size-lg:            $input-btn-font-size-lg !default;\n\n$btn-border-width:            $input-btn-border-width !default;\n\n$btn-font-weight:             $font-weight-normal !default;\n$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width:             $input-btn-focus-width !default;\n$btn-focus-box-shadow:        $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity:        .65 !default;\n$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color:              $link-color !default;\n$btn-link-hover-color:        $link-hover-color !default;\n$btn-link-disabled-color:     $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius:           $border-radius !default;\n$btn-border-radius-sm:        $border-radius-sm !default;\n$btn-border-radius-lg:        $border-radius-lg !default;\n\n$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount:       15% !default;\n$btn-hover-bg-tint-amount:        15% !default;\n$btn-hover-border-shade-amount:   20% !default;\n$btn-hover-border-tint-amount:    10% !default;\n$btn-active-bg-shade-amount:      20% !default;\n$btn-active-bg-tint-amount:       20% !default;\n$btn-active-border-shade-amount:  25% !default;\n$btn-active-border-tint-amount:   10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top:                  .25rem !default;\n$form-text-font-size:                   $small-font-size !default;\n$form-text-font-style:                  null !default;\n$form-text-font-weight:                 null !default;\n$form-text-color:                       $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom:              .5rem !default;\n$form-label-font-size:                  null !default;\n$form-label-font-style:                 null !default;\n$form-label-font-weight:                null !default;\n$form-label-color:                      null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y:                       $input-btn-padding-y !default;\n$input-padding-x:                       $input-btn-padding-x !default;\n$input-font-family:                     $input-btn-font-family !default;\n$input-font-size:                       $input-btn-font-size !default;\n$input-font-weight:                     $font-weight-base !default;\n$input-line-height:                     $input-btn-line-height !default;\n\n$input-padding-y-sm:                    $input-btn-padding-y-sm !default;\n$input-padding-x-sm:                    $input-btn-padding-x-sm !default;\n$input-font-size-sm:                    $input-btn-font-size-sm !default;\n\n$input-padding-y-lg:                    $input-btn-padding-y-lg !default;\n$input-padding-x-lg:                    $input-btn-padding-x-lg !default;\n$input-font-size-lg:                    $input-btn-font-size-lg !default;\n\n$input-bg:                              $body-bg !default;\n$input-disabled-bg:                     $gray-200 !default;\n$input-disabled-border-color:           null !default;\n\n$input-color:                           $body-color !default;\n$input-border-color:                    $gray-400 !default;\n$input-border-width:                    $input-btn-border-width !default;\n$input-box-shadow:                      $box-shadow-inset !default;\n\n$input-border-radius:                   $border-radius !default;\n$input-border-radius-sm:                $border-radius-sm !default;\n$input-border-radius-lg:                $border-radius-lg !default;\n\n$input-focus-bg:                        $input-bg !default;\n$input-focus-border-color:              tint-color($component-active-bg, 50%) !default;\n$input-focus-color:                     $input-color !default;\n$input-focus-width:                     $input-btn-focus-width !default;\n$input-focus-box-shadow:                $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color:               $gray-600 !default;\n$input-plaintext-color:                 $body-color !default;\n\n$input-height-border:                   $input-border-width * 2 !default;\n\n$input-height-inner:                    add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half:               add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter:            add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height:                          add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm:                       add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg:                       add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width:                      3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width:                  1em !default;\n$form-check-min-height:                   $font-size-base * $line-height-base !default;\n$form-check-padding-start:                $form-check-input-width + .5em !default;\n$form-check-margin-bottom:                .125rem !default;\n$form-check-label-color:                  null !default;\n$form-check-label-cursor:                 null !default;\n$form-check-transition:                   null !default;\n\n$form-check-input-active-filter:          brightness(90%) !default;\n\n$form-check-input-bg:                     $input-bg !default;\n$form-check-input-border:                 1px solid rgba($black, .25) !default;\n$form-check-input-border-radius:          .25em !default;\n$form-check-radio-border-radius:          50% !default;\n$form-check-input-focus-border:           $input-focus-border-color !default;\n$form-check-input-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color:          $component-active-color !default;\n$form-check-input-checked-bg-color:       $component-active-bg !default;\n$form-check-input-checked-border-color:   $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-checked-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/></svg>\") !default;\n$form-check-radio-checked-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$form-check-input-checked-color}'/></svg>\") !default;\n\n$form-check-input-indeterminate-color:          $component-active-color !default;\n$form-check-input-indeterminate-bg-color:       $component-active-bg !default;\n$form-check-input-indeterminate-border-color:   $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-indeterminate-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>\") !default;\n\n$form-check-input-disabled-opacity:        .5 !default;\n$form-check-label-disabled-opacity:        $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity:    $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end:    1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color:               rgba(0, 0, 0, .25) !default;\n$form-switch-width:               2em !default;\n$form-switch-padding-start:       $form-switch-width + .5em !default;\n$form-switch-bg-image:            url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>\") !default;\n$form-switch-border-radius:       $form-switch-width !default;\n$form-switch-transition:          background-position .15s ease-in-out !default;\n\n$form-switch-focus-color:         $input-focus-border-color !default;\n$form-switch-focus-bg-image:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-focus-color}'/></svg>\") !default;\n\n$form-switch-checked-color:       $component-active-color !default;\n$form-switch-checked-bg-image:    url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y:           $input-padding-y !default;\n$input-group-addon-padding-x:           $input-padding-x !default;\n$input-group-addon-font-weight:         $input-font-weight !default;\n$input-group-addon-color:               $input-color !default;\n$input-group-addon-bg:                  $gray-200 !default;\n$input-group-addon-border-color:        $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y:             $input-padding-y !default;\n$form-select-padding-x:             $input-padding-x !default;\n$form-select-font-family:           $input-font-family !default;\n$form-select-font-size:             $input-font-size !default;\n$form-select-indicator-padding:     $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight:           $input-font-weight !default;\n$form-select-line-height:           $input-line-height !default;\n$form-select-color:                 $input-color !default;\n$form-select-bg:                    $input-bg !default;\n$form-select-disabled-color:        null !default;\n$form-select-disabled-bg:           $gray-200 !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position:           right $form-select-padding-x center !default;\n$form-select-bg-size:               16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color:       $gray-800 !default;\n$form-select-indicator:             url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/></svg>\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position:    center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size:        $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width:        $input-border-width !default;\n$form-select-border-color:        $input-border-color !default;\n$form-select-border-radius:       $border-radius !default;\n$form-select-box-shadow:          $box-shadow-inset !default;\n\n$form-select-focus-border-color:  $input-focus-border-color !default;\n$form-select-focus-width:         $input-focus-width !default;\n$form-select-focus-box-shadow:    0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm:        $input-padding-y-sm !default;\n$form-select-padding-x-sm:        $input-padding-x-sm !default;\n$form-select-font-size-sm:        $input-font-size-sm !default;\n\n$form-select-padding-y-lg:        $input-padding-y-lg !default;\n$form-select-padding-x-lg:        $input-padding-x-lg !default;\n$form-select-font-size-lg:        $input-font-size-lg !default;\n\n$form-select-transition:          $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width:          100% !default;\n$form-range-track-height:         .5rem !default;\n$form-range-track-cursor:         pointer !default;\n$form-range-track-bg:             $gray-300 !default;\n$form-range-track-border-radius:  1rem !default;\n$form-range-track-box-shadow:     $box-shadow-inset !default;\n\n$form-range-thumb-width:                   1rem !default;\n$form-range-thumb-height:                  $form-range-thumb-width !default;\n$form-range-thumb-bg:                      $component-active-bg !default;\n$form-range-thumb-border:                  0 !default;\n$form-range-thumb-border-radius:           1rem !default;\n$form-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width:  $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg:               tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg:             $gray-500 !default;\n$form-range-thumb-transition:              background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color:          $input-color !default;\n$form-file-button-bg:             $input-group-addon-bg !default;\n$form-file-button-hover-bg:       shade-color($form-file-button-bg, 5%) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height:            add(3.5rem, $input-height-border) !default;\n$form-floating-line-height:       1.25 !default;\n$form-floating-padding-x:         $input-padding-x !default;\n$form-floating-padding-y:         1rem !default;\n$form-floating-input-padding-t:   1.625rem !default;\n$form-floating-input-padding-b:   .625rem !default;\n$form-floating-label-opacity:     .65 !default;\n$form-floating-label-transform:   scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-transition:        opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top:          $form-text-margin-top !default;\n$form-feedback-font-size:           $form-text-font-size !default;\n$form-feedback-font-style:          $form-text-font-style !default;\n$form-feedback-valid-color:         $success !default;\n$form-feedback-invalid-color:       $danger !default;\n\n$form-feedback-icon-valid-color:    $form-feedback-valid-color !default;\n$form-feedback-icon-valid:          url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>\") !default;\n$form-feedback-icon-invalid-color:  $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid:        url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n  \"valid\": (\n    \"color\": $form-feedback-valid-color,\n    \"icon\": $form-feedback-icon-valid\n  ),\n  \"invalid\": (\n    \"color\": $form-feedback-invalid-color,\n    \"icon\": $form-feedback-icon-invalid\n  )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown:                   1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-modal-backdrop:             1050 !default;\n$zindex-modal:                      1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n// scss-docs-end zindex-stack\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y:                .5rem !default;\n$nav-link-padding-x:                1rem !default;\n$nav-link-font-size:                null !default;\n$nav-link-font-weight:              null !default;\n$nav-link-color:                    $link-color !default;\n$nav-link-hover-color:              $link-hover-color !default;\n$nav-link-transition:               color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color:           $gray-600 !default;\n\n$nav-tabs-border-color:             $gray-300 !default;\n$nav-tabs-border-width:             $border-width !default;\n$nav-tabs-border-radius:            $border-radius !default;\n$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color:        $gray-700 !default;\n$nav-tabs-link-active-bg:           $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius:           $border-radius !default;\n$nav-pills-link-active-color:       $component-active-color !default;\n$nav-pills-link-active-bg:          $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y:                  $spacer * .5 !default;\n$navbar-padding-x:                  null !default;\n\n$navbar-nav-link-padding-x:         .5rem !default;\n\n$navbar-brand-font-size:            $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height:                   $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end:           1rem !default;\n\n$navbar-toggler-padding-y:          .25rem !default;\n$navbar-toggler-padding-x:          .75rem !default;\n$navbar-toggler-font-size:          $font-size-lg !default;\n$navbar-toggler-border-radius:      $btn-border-radius !default;\n$navbar-toggler-focus-width:        $btn-focus-width !default;\n$navbar-toggler-transition:         box-shadow .15s ease-in-out !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-theme-variables\n$navbar-dark-color:                 rgba($white, .55) !default;\n$navbar-dark-hover-color:           rgba($white, .75) !default;\n$navbar-dark-active-color:          $white !default;\n$navbar-dark-disabled-color:        rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg:       url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-dark-toggler-border-color:  rgba($white, .1) !default;\n\n$navbar-light-color:                rgba($black, .55) !default;\n$navbar-light-hover-color:          rgba($black, .7) !default;\n$navbar-light-active-color:         rgba($black, .9) !default;\n$navbar-light-disabled-color:       rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color:                $navbar-light-active-color !default;\n$navbar-light-brand-hover-color:          $navbar-light-active-color !default;\n$navbar-dark-brand-color:                 $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color:           $navbar-dark-active-color !default;\n// scss-docs-end navbar-theme-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width:                10rem !default;\n$dropdown-padding-x:                0 !default;\n$dropdown-padding-y:                .5rem !default;\n$dropdown-spacer:                   .125rem !default;\n$dropdown-font-size:                $font-size-base !default;\n$dropdown-color:                    $body-color !default;\n$dropdown-bg:                       $white !default;\n$dropdown-border-color:             rgba($black, .15) !default;\n$dropdown-border-radius:            $border-radius !default;\n$dropdown-border-width:             $border-width !default;\n$dropdown-inner-border-radius:      subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg:               $dropdown-border-color !default;\n$dropdown-divider-margin-y:         $spacer * .5 !default;\n$dropdown-box-shadow:               $box-shadow !default;\n\n$dropdown-link-color:               $gray-900 !default;\n$dropdown-link-hover-color:         shade-color($gray-900, 10%) !default;\n$dropdown-link-hover-bg:            $gray-200 !default;\n\n$dropdown-link-active-color:        $component-active-color !default;\n$dropdown-link-active-bg:           $component-active-bg !default;\n\n$dropdown-link-disabled-color:      $gray-500 !default;\n\n$dropdown-item-padding-y:           $spacer * .25 !default;\n$dropdown-item-padding-x:           $spacer !default;\n\n$dropdown-header-color:             $gray-600 !default;\n$dropdown-header-padding:           $dropdown-padding-y $dropdown-item-padding-x !default;\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color:               $gray-300 !default;\n$dropdown-dark-bg:                  $gray-800 !default;\n$dropdown-dark-border-color:        $dropdown-border-color !default;\n$dropdown-dark-divider-bg:          $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow:          null !default;\n$dropdown-dark-link-color:          $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color:    $white !default;\n$dropdown-dark-link-hover-bg:       rgba($white, .15) !default;\n$dropdown-dark-link-active-color:   $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg:      $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color:        $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y:              .375rem !default;\n$pagination-padding-x:              .75rem !default;\n$pagination-padding-y-sm:           .25rem !default;\n$pagination-padding-x-sm:           .5rem !default;\n$pagination-padding-y-lg:           .75rem !default;\n$pagination-padding-x-lg:           1.5rem !default;\n\n$pagination-color:                  $link-color !default;\n$pagination-bg:                     $white !default;\n$pagination-border-width:           $border-width !default;\n$pagination-border-radius:          $border-radius !default;\n$pagination-margin-start:           -$pagination-border-width !default;\n$pagination-border-color:           $gray-300 !default;\n\n$pagination-focus-color:            $link-hover-color !default;\n$pagination-focus-bg:               $gray-200 !default;\n$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n$pagination-focus-outline:          0 !default;\n\n$pagination-hover-color:            $link-hover-color !default;\n$pagination-hover-bg:               $gray-200 !default;\n$pagination-hover-border-color:     $gray-300 !default;\n\n$pagination-active-color:           $component-active-color !default;\n$pagination-active-bg:              $component-active-bg !default;\n$pagination-active-border-color:    $pagination-active-bg !default;\n\n$pagination-disabled-color:         $gray-600 !default;\n$pagination-disabled-bg:            $white !default;\n$pagination-disabled-border-color:  $gray-300 !default;\n\n$pagination-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm:       $border-radius-sm !default;\n$pagination-border-radius-lg:       $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max:           .5 !default;\n$placeholder-opacity-min:           .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y:                     $spacer !default;\n$card-spacer-x:                     $spacer !default;\n$card-title-spacer-y:               $spacer * .5 !default;\n$card-border-width:                 $border-width !default;\n$card-border-color:                 rgba($black, .125) !default;\n$card-border-radius:                $border-radius !default;\n$card-box-shadow:                   null !default;\n$card-inner-border-radius:          subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y:                $card-spacer-y * .5 !default;\n$card-cap-padding-x:                $card-spacer-x !default;\n$card-cap-bg:                       rgba($black, .03) !default;\n$card-cap-color:                    null !default;\n$card-height:                       null !default;\n$card-color:                        null !default;\n$card-bg:                           $white !default;\n$card-img-overlay-padding:          $spacer !default;\n$card-group-margin:                 $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y:                     1rem !default;\n$accordion-padding-x:                     1.25rem !default;\n$accordion-color:                         $body-color !default;\n$accordion-bg:                            $body-bg !default;\n$accordion-border-width:                  $border-width !default;\n$accordion-border-color:                  rgba($black, .125) !default;\n$accordion-border-radius:                 $border-radius !default;\n$accordion-inner-border-radius:           subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y:                $accordion-padding-y !default;\n$accordion-body-padding-x:                $accordion-padding-x !default;\n\n$accordion-button-padding-y:              $accordion-padding-y !default;\n$accordion-button-padding-x:              $accordion-padding-x !default;\n$accordion-button-color:                  $accordion-color !default;\n$accordion-button-bg:                     $accordion-bg !default;\n$accordion-transition:                    $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg:              tint-color($component-active-bg, 90%) !default;\n$accordion-button-active-color:           shade-color($primary, 10%) !default;\n\n$accordion-button-focus-border-color:     $input-focus-border-color !default;\n$accordion-button-focus-box-shadow:       $btn-focus-box-shadow !default;\n\n$accordion-icon-width:                    1.25rem !default;\n$accordion-icon-color:                    $accordion-button-color !default;\n$accordion-icon-active-color:             $accordion-button-active-color !default;\n$accordion-icon-transition:               transform .2s ease-in-out !default;\n$accordion-icon-transform:                rotate(-180deg) !default;\n\n$accordion-button-icon:         url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n$accordion-button-active-icon:  url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size:                 $font-size-sm !default;\n$tooltip-max-width:                 200px !default;\n$tooltip-color:                     $white !default;\n$tooltip-bg:                        $black !default;\n$tooltip-border-radius:             $border-radius !default;\n$tooltip-opacity:                   .9 !default;\n$tooltip-padding-y:                 $spacer * .25 !default;\n$tooltip-padding-x:                 $spacer * .5 !default;\n$tooltip-margin:                    0 !default;\n\n$tooltip-arrow-width:               .8rem !default;\n$tooltip-arrow-height:              .4rem !default;\n$tooltip-arrow-color:               $tooltip-bg !default;\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y:     $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x:     $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size:     $tooltip-font-size !default;\n$form-feedback-tooltip-line-height:   null !default;\n$form-feedback-tooltip-opacity:       $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size:                 $font-size-sm !default;\n$popover-bg:                        $white !default;\n$popover-max-width:                 276px !default;\n$popover-border-width:              $border-width !default;\n$popover-border-color:              rgba($black, .2) !default;\n$popover-border-radius:             $border-radius-lg !default;\n$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow:                $box-shadow !default;\n\n$popover-header-bg:                 shade-color($popover-bg, 6%) !default;\n$popover-header-color:              $headings-color !default;\n$popover-header-padding-y:          .5rem !default;\n$popover-header-padding-x:          $spacer !default;\n\n$popover-body-color:                $body-color !default;\n$popover-body-padding-y:            $spacer !default;\n$popover-body-padding-x:            $spacer !default;\n\n$popover-arrow-width:               1rem !default;\n$popover-arrow-height:              .5rem !default;\n$popover-arrow-color:               $popover-bg !default;\n\n$popover-arrow-outer-color:         fade-in($popover-border-color, .05) !default;\n// scss-docs-end popover-variables\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width:                   350px !default;\n$toast-padding-x:                   .75rem !default;\n$toast-padding-y:                   .5rem !default;\n$toast-font-size:                   .875rem !default;\n$toast-color:                       null !default;\n$toast-background-color:            rgba($white, .85) !default;\n$toast-border-width:                1px !default;\n$toast-border-color:                rgba(0, 0, 0, .1) !default;\n$toast-border-radius:               $border-radius !default;\n$toast-box-shadow:                  $box-shadow !default;\n$toast-spacing:                     $container-padding-x !default;\n\n$toast-header-color:                $gray-600 !default;\n$toast-header-background-color:     rgba($white, .85) !default;\n$toast-header-border-color:         rgba(0, 0, 0, .05) !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size:                   .75em !default;\n$badge-font-weight:                 $font-weight-bold !default;\n$badge-color:                       $white !default;\n$badge-padding-y:                   .35em !default;\n$badge-padding-x:                   .65em !default;\n$badge-border-radius:               $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding:               $spacer !default;\n\n$modal-footer-margin-between:       .5rem !default;\n\n$modal-dialog-margin:               .5rem !default;\n$modal-dialog-margin-y-sm-up:       1.75rem !default;\n\n$modal-title-line-height:           $line-height-base !default;\n\n$modal-content-color:               null !default;\n$modal-content-bg:                  $white !default;\n$modal-content-border-color:        rgba($black, .2) !default;\n$modal-content-border-width:        $border-width !default;\n$modal-content-border-radius:       $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs:       $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up:    $box-shadow !default;\n\n$modal-backdrop-bg:                 $black !default;\n$modal-backdrop-opacity:            .5 !default;\n$modal-header-border-color:         $border-color !default;\n$modal-footer-border-color:         $modal-header-border-color !default;\n$modal-header-border-width:         $modal-content-border-width !default;\n$modal-footer-border-width:         $modal-header-border-width !default;\n$modal-header-padding-y:            $modal-inner-padding !default;\n$modal-header-padding-x:            $modal-inner-padding !default;\n$modal-header-padding:              $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-sm:                          300px !default;\n$modal-md:                          500px !default;\n$modal-lg:                          800px !default;\n$modal-xl:                          1140px !default;\n\n$modal-fade-transform:              translate(0, -50px) !default;\n$modal-show-transform:              none !default;\n$modal-transition:                  transform .3s ease-out !default;\n$modal-scale-transform:             scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y:               $spacer !default;\n$alert-padding-x:               $spacer !default;\n$alert-margin-bottom:           1rem !default;\n$alert-border-radius:           $border-radius !default;\n$alert-link-font-weight:        $font-weight-bold !default;\n$alert-border-width:            $border-width !default;\n$alert-bg-scale:                -80% !default;\n$alert-border-scale:            -70% !default;\n$alert-color-scale:             40% !default;\n$alert-dismissible-padding-r:   $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height:                   1rem !default;\n$progress-font-size:                $font-size-base * .75 !default;\n$progress-bg:                       $gray-200 !default;\n$progress-border-radius:            $border-radius !default;\n$progress-box-shadow:               $box-shadow-inset !default;\n$progress-bar-color:                $white !default;\n$progress-bar-bg:                   $primary !default;\n$progress-bar-animation-timing:     1s linear infinite !default;\n$progress-bar-transition:           width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color:                  $gray-900 !default;\n$list-group-bg:                     $white !default;\n$list-group-border-color:           rgba($black, .125) !default;\n$list-group-border-width:           $border-width !default;\n$list-group-border-radius:          $border-radius !default;\n\n$list-group-item-padding-y:         $spacer * .5 !default;\n$list-group-item-padding-x:         $spacer !default;\n$list-group-item-bg-scale:          -80% !default;\n$list-group-item-color-scale:       40% !default;\n\n$list-group-hover-bg:               $gray-100 !default;\n$list-group-active-color:           $component-active-color !default;\n$list-group-active-bg:              $component-active-bg !default;\n$list-group-active-border-color:    $list-group-active-bg !default;\n\n$list-group-disabled-color:         $gray-600 !default;\n$list-group-disabled-bg:            $list-group-bg !default;\n\n$list-group-action-color:           $gray-700 !default;\n$list-group-action-hover-color:     $list-group-action-color !default;\n\n$list-group-action-active-color:    $body-color !default;\n$list-group-action-active-bg:       $gray-200 !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding:                 .25rem !default;\n$thumbnail-bg:                      $body-bg !default;\n$thumbnail-border-width:            $border-width !default;\n$thumbnail-border-color:            $gray-300 !default;\n$thumbnail-border-radius:           $border-radius !default;\n$thumbnail-box-shadow:              $box-shadow-sm !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size:          $small-font-size !default;\n$figure-caption-color:              $gray-600 !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size:              null !default;\n$breadcrumb-padding-y:              0 !default;\n$breadcrumb-padding-x:              0 !default;\n$breadcrumb-item-padding-x:         .5rem !default;\n$breadcrumb-margin-bottom:          1rem !default;\n$breadcrumb-bg:                     null !default;\n$breadcrumb-divider-color:          $gray-600 !default;\n$breadcrumb-active-color:           $gray-600 !default;\n$breadcrumb-divider:                quote(\"/\") !default;\n$breadcrumb-divider-flipped:        $breadcrumb-divider !default;\n$breadcrumb-border-radius:          null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color:             $white !default;\n$carousel-control-width:             15% !default;\n$carousel-control-opacity:           .5 !default;\n$carousel-control-hover-opacity:     .9 !default;\n$carousel-control-transition:        opacity .15s ease !default;\n\n$carousel-indicator-width:           30px !default;\n$carousel-indicator-height:          3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer:          3px !default;\n$carousel-indicator-opacity:         .5 !default;\n$carousel-indicator-active-bg:       $white !default;\n$carousel-indicator-active-opacity:  1 !default;\n$carousel-indicator-transition:      opacity .6s ease !default;\n\n$carousel-caption-width:             70% !default;\n$carousel-caption-color:             $white !default;\n$carousel-caption-padding-y:         1.25rem !default;\n$carousel-caption-spacer:            1.25rem !default;\n\n$carousel-control-icon-width:        2rem !default;\n\n$carousel-control-prev-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>\") !default;\n$carousel-control-next-icon-bg:      url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>\") !default;\n\n$carousel-transition-duration:       .6s !default;\n$carousel-transition:                transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n$carousel-dark-indicator-active-bg:  $black !default;\n$carousel-dark-caption-color:        $black !default;\n$carousel-dark-control-icon-filter:  invert(1) grayscale(100) !default;\n// scss-docs-end carousel-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width:           2rem !default;\n$spinner-height:          $spinner-width !default;\n$spinner-vertical-align:  -.125em !default;\n$spinner-border-width:    .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm:        1rem !default;\n$spinner-height-sm:       $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width:            1em !default;\n$btn-close-height:           $btn-close-width !default;\n$btn-close-padding-x:        .25em !default;\n$btn-close-padding-y:        $btn-close-padding-x !default;\n$btn-close-color:            $black !default;\n$btn-close-bg:               url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/></svg>\") !default;\n$btn-close-focus-shadow:     $input-btn-focus-box-shadow !default;\n$btn-close-opacity:          .5 !default;\n$btn-close-hover-opacity:    .75 !default;\n$btn-close-focus-opacity:    1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter:     invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y:               $modal-inner-padding !default;\n$offcanvas-padding-x:               $modal-inner-padding !default;\n$offcanvas-horizontal-width:        400px !default;\n$offcanvas-vertical-height:         30vh !default;\n$offcanvas-transition-duration:     .3s !default;\n$offcanvas-border-color:            $modal-content-border-color !default;\n$offcanvas-border-width:            $modal-content-border-width !default;\n$offcanvas-title-line-height:       $modal-title-line-height !default;\n$offcanvas-bg-color:                $modal-content-bg !default;\n$offcanvas-color:                   $modal-content-color !default;\n$offcanvas-box-shadow:              $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg:             $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity:        $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size:                    $small-font-size !default;\n$code-color:                        $pink !default;\n\n$kbd-padding-y:                     .2rem !default;\n$kbd-padding-x:                     .4rem !default;\n$kbd-font-size:                     $code-font-size !default;\n$kbd-color:                         $white !default;\n$kbd-bg:                            $gray-900 !default;\n\n$pre-color:                         null !default;\n","// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if type-of($value) == number {\n      $return: append($return, max($value, 0));\n    } @else {\n      $return: append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n","//\n// Headings\n//\n.h1 {\n  @extend h1;\n}\n\n.h2 {\n  @extend h2;\n}\n\n.h3 {\n  @extend h3;\n}\n\n.h4 {\n  @extend h4;\n}\n\n.h5 {\n  @extend h5;\n}\n\n.h6 {\n  @extend h6;\n}\n\n\n.lead {\n  @include font-size($lead-font-size);\n  font-weight: $lead-font-weight;\n}\n\n// Type display classes\n@each $display, $font-size in $display-font-sizes {\n  .display-#{$display} {\n    @include font-size($font-size);\n    font-weight: $display-font-weight;\n    line-height: $display-line-height;\n  }\n}\n\n//\n// Emphasis\n//\n.small {\n  @extend small;\n}\n\n.mark {\n  @extend mark;\n}\n\n//\n// Lists\n//\n\n.list-unstyled {\n  @include list-unstyled();\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  @include list-unstyled();\n}\n.list-inline-item {\n  display: inline-block;\n\n  &:not(:last-child) {\n    margin-right: $list-inline-padding;\n  }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n  @include font-size($initialism-font-size);\n  text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n  margin-bottom: $blockquote-margin-y;\n  @include font-size($blockquote-font-size);\n\n  > :last-child {\n    margin-bottom: 0;\n  }\n}\n\n.blockquote-footer {\n  margin-top: -$blockquote-margin-y;\n  margin-bottom: $blockquote-margin-y;\n  @include font-size($blockquote-footer-font-size);\n  color: $blockquote-footer-color;\n\n  &::before {\n    content: \"\\2014\\00A0\"; // em dash, nbsp\n  }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n  @include img-fluid();\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n  padding: $thumbnail-padding;\n  background-color: $thumbnail-bg;\n  border: $thumbnail-border-width solid $thumbnail-border-color;\n  @include border-radius($thumbnail-border-radius);\n  @include box-shadow($thumbnail-box-shadow);\n\n  // Keep them at most 100% wide\n  @include img-fluid();\n}\n\n//\n// Figures\n//\n\n.figure {\n  // Ensures the caption's text aligns with the image.\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: $spacer * .5;\n  line-height: 1;\n}\n\n.figure-caption {\n  @include font-size($figure-caption-font-size);\n  color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n  // Part 1: Set a maximum relative to the parent\n  max-width: 100%;\n  // Part 2: Override the height to auto, otherwise images will be stretched\n  // when setting a width and height attribute on the img element.\n  height: auto;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n  // Single container class with breakpoint max-widths\n  .container,\n  // 100% wide container at all breakpoints\n  .container-fluid {\n    @include make-container();\n  }\n\n  // Responsive containers that are 100% wide until a breakpoint\n  @each $breakpoint, $container-max-width in $container-max-widths {\n    .container-#{$breakpoint} {\n      @extend .container-fluid;\n    }\n\n    @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n      %responsive-container-#{$breakpoint} {\n        max-width: $container-max-width;\n      }\n\n      // Extend each breakpoint which is smaller or equal to the current breakpoint\n      $extend-breakpoint: true;\n\n      @each $name, $width in $grid-breakpoints {\n        @if ($extend-breakpoint) {\n          .container#{breakpoint-infix($name, $grid-breakpoints)} {\n            @extend %responsive-container-#{$breakpoint};\n          }\n\n          // Once the current breakpoint is reached, stop extending\n          @if ($breakpoint == $name) {\n            $extend-breakpoint: false;\n          }\n        }\n      }\n    }\n  }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  width: 100%;\n  padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  margin-right: auto;\n  margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n  $n: index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n  }\n  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n  $min: map-get($breakpoints, $name);\n  @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n  $max: map-get($breakpoints, $name);\n  @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n  @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n  .row {\n    @include make-row();\n\n    > * {\n      @include make-col-ready();\n    }\n  }\n}\n\n@if $enable-cssgrid {\n  .grid {\n    display: grid;\n    grid-template-rows: repeat(var(--#{$variable-prefix}rows, 1), 1fr);\n    grid-template-columns: repeat(var(--#{$variable-prefix}columns, #{$grid-columns}), 1fr);\n    gap: var(--#{$variable-prefix}gap, #{$grid-gutter-width});\n\n    @include make-cssgrid();\n  }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n  @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n  --#{$variable-prefix}gutter-x: #{$gutter};\n  --#{$variable-prefix}gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list\n  margin-right: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n  margin-left: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n  // Add box sizing if only the grid is loaded\n  box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-right: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  padding-left: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  margin-top: var(--#{$variable-prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: percentage(divide($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: divide($size, $columns);\n  margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: divide(100%, $count);\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is and invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","//\n// Basic Bootstrap table\n//\n\n.table {\n  --#{$variable-prefix}table-bg: #{$table-bg};\n  --#{$variable-prefix}table-accent-bg: #{$table-accent-bg};\n  --#{$variable-prefix}table-striped-color: #{$table-striped-color};\n  --#{$variable-prefix}table-striped-bg: #{$table-striped-bg};\n  --#{$variable-prefix}table-active-color: #{$table-active-color};\n  --#{$variable-prefix}table-active-bg: #{$table-active-bg};\n  --#{$variable-prefix}table-hover-color: #{$table-hover-color};\n  --#{$variable-prefix}table-hover-bg: #{$table-hover-bg};\n\n  width: 100%;\n  margin-bottom: $spacer;\n  color: $table-color;\n  vertical-align: $table-cell-vertical-align;\n  border-color: $table-border-color;\n\n  // Target th & td\n  // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.\n  // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).\n  // Another advantage is that this generates less code and makes the selector less specific making it easier to override.\n  // stylelint-disable-next-line selector-max-universal\n  > :not(caption) > * > * {\n    padding: $table-cell-padding-y $table-cell-padding-x;\n    background-color: var(--#{$variable-prefix}table-bg);\n    border-bottom-width: $table-border-width;\n    box-shadow: inset 0 0 0 9999px var(--#{$variable-prefix}table-accent-bg);\n  }\n\n  > tbody {\n    vertical-align: inherit;\n  }\n\n  > thead {\n    vertical-align: bottom;\n  }\n\n  // Highlight border color between thead, tbody and tfoot.\n  > :not(:last-child) > :last-child > * {\n    border-bottom-color: $table-group-separator-color;\n  }\n}\n\n\n//\n// Change placement of captions with a class\n//\n\n.caption-top {\n  caption-side: top;\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n  // stylelint-disable-next-line selector-max-universal\n  > :not(caption) > * > * {\n    padding: $table-cell-padding-y-sm $table-cell-padding-x-sm;\n  }\n}\n\n\n// Border versions\n//\n// Add or remove borders all around the table and between all the columns.\n//\n// When borders are added on all sides of the cells, the corners can render odd when\n// these borders do not have the same color or if they are semi-transparent.\n// Therefor we add top and border bottoms to the `tr`s and left and right borders\n// to the `td`s or `th`s\n\n.table-bordered {\n  > :not(caption) > * {\n    border-width: $table-border-width 0;\n\n    // stylelint-disable-next-line selector-max-universal\n    > * {\n      border-width: 0 $table-border-width;\n    }\n  }\n}\n\n.table-borderless {\n  // stylelint-disable-next-line selector-max-universal\n  > :not(caption) > * > * {\n    border-bottom-width: 0;\n  }\n}\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-of-type(#{$table-striped-order}) {\n    --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-striped-bg);\n    color: var(--#{$variable-prefix}table-striped-color);\n  }\n}\n\n// Active table\n//\n// The `.table-active` class can be added to highlight rows or cells\n\n.table-active {\n  --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-active-bg);\n  color: var(--#{$variable-prefix}table-active-color);\n}\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-hover-bg);\n    color: var(--#{$variable-prefix}table-hover-color);\n  }\n}\n\n\n// Table variants\n//\n// Table variants set the table cell backgrounds, border colors\n// and the colors of the striped, hovered & active tables\n\n@each $color, $value in $table-variants {\n  @include table-variant($color, $value);\n}\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n  @include media-breakpoint-down($breakpoint) {\n    .table-responsive#{$infix} {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n}\n","// scss-docs-start table-variant\n@mixin table-variant($state, $background) {\n  .table-#{$state} {\n    $color: color-contrast(opaque($body-bg, $background));\n    $hover-bg: mix($color, $background, percentage($table-hover-bg-factor));\n    $striped-bg: mix($color, $background, percentage($table-striped-bg-factor));\n    $active-bg: mix($color, $background, percentage($table-active-bg-factor));\n\n    --#{$variable-prefix}table-bg: #{$background};\n    --#{$variable-prefix}table-striped-bg: #{$striped-bg};\n    --#{$variable-prefix}table-striped-color: #{color-contrast($striped-bg)};\n    --#{$variable-prefix}table-active-bg: #{$active-bg};\n    --#{$variable-prefix}table-active-color: #{color-contrast($active-bg)};\n    --#{$variable-prefix}table-hover-bg: #{$hover-bg};\n    --#{$variable-prefix}table-hover-color: #{color-contrast($hover-bg)};\n\n    color: $color;\n    border-color: mix($color, $background, percentage($table-border-factor));\n  }\n}\n// scss-docs-end table-variant\n","//\n// Labels\n//\n\n.form-label {\n  margin-bottom: $form-label-margin-bottom;\n  @include font-size($form-label-font-size);\n  font-style: $form-label-font-style;\n  font-weight: $form-label-font-weight;\n  color: $form-label-color;\n}\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n  padding-top: add($input-padding-y, $input-border-width);\n  padding-bottom: add($input-padding-y, $input-border-width);\n  margin-bottom: 0; // Override the `<legend>` default\n  @include font-size(inherit); // Override the `<legend>` default\n  font-style: $form-label-font-style;\n  font-weight: $form-label-font-weight;\n  line-height: $input-line-height;\n  color: $form-label-color;\n}\n\n.col-form-label-lg {\n  padding-top: add($input-padding-y-lg, $input-border-width);\n  padding-bottom: add($input-padding-y-lg, $input-border-width);\n  @include font-size($input-font-size-lg);\n}\n\n.col-form-label-sm {\n  padding-top: add($input-padding-y-sm, $input-border-width);\n  padding-bottom: add($input-padding-y-sm, $input-border-width);\n  @include font-size($input-font-size-sm);\n}\n","//\n// Form text\n//\n\n.form-text {\n  margin-top: $form-text-margin-top;\n  @include font-size($form-text-font-size);\n  font-style: $form-text-font-style;\n  font-weight: $form-text-font-weight;\n  color: $form-text-color;\n}\n","//\n// General form controls (plus a few specific high-level interventions)\n//\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: $input-padding-y $input-padding-x;\n  font-family: $input-font-family;\n  @include font-size($input-font-size);\n  font-weight: $input-font-weight;\n  line-height: $input-line-height;\n  color: $input-color;\n  background-color: $input-bg;\n  background-clip: padding-box;\n  border: $input-border-width solid $input-border-color;\n  appearance: none; // Fix appearance for date inputs in Safari\n\n  // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.\n  @include border-radius($input-border-radius, 0);\n\n  @include box-shadow($input-box-shadow);\n  @include transition($input-transition);\n\n  &[type=\"file\"] {\n    overflow: hidden; // prevent pseudo element button overlap\n\n    &:not(:disabled):not([readonly]) {\n      cursor: pointer;\n    }\n  }\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  &:focus {\n    color: $input-focus-color;\n    background-color: $input-focus-bg;\n    border-color: $input-focus-border-color;\n    outline: 0;\n    @if $enable-shadows {\n      @include box-shadow($input-box-shadow, $input-focus-box-shadow);\n    } @else {\n      // Avoid using mixin so we can pass custom focus shadow properly\n      box-shadow: $input-focus-box-shadow;\n    }\n  }\n\n  // Add some height to date inputs on iOS\n  // https://github.com/twbs/bootstrap/issues/23307\n  // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved\n  &::-webkit-date-and-time-value {\n    // Multiply line-height by 1em if it has no unit\n    height: if(unit($input-line-height) == \"\", $input-line-height * 1em, $input-line-height);\n  }\n\n  // Placeholder\n  &::placeholder {\n    color: $input-placeholder-color;\n    // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n    opacity: 1;\n  }\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &:disabled,\n  &[readonly] {\n    background-color: $input-disabled-bg;\n    border-color: $input-disabled-border-color;\n    // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n    opacity: 1;\n  }\n\n  // File input buttons theming\n  &::file-selector-button {\n    padding: $input-padding-y $input-padding-x;\n    margin: (-$input-padding-y) (-$input-padding-x);\n    margin-inline-end: $input-padding-x;\n    color: $form-file-button-color;\n    @include gradient-bg($form-file-button-bg);\n    pointer-events: none;\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: $input-border-width;\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n    @include transition($btn-transition);\n  }\n\n  &:hover:not(:disabled):not([readonly])::file-selector-button {\n    background-color: $form-file-button-hover-bg;\n  }\n\n  &::-webkit-file-upload-button {\n    padding: $input-padding-y $input-padding-x;\n    margin: (-$input-padding-y) (-$input-padding-x);\n    margin-inline-end: $input-padding-x;\n    color: $form-file-button-color;\n    @include gradient-bg($form-file-button-bg);\n    pointer-events: none;\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: $input-border-width;\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n    @include transition($btn-transition);\n  }\n\n  &:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n    background-color: $form-file-button-hover-bg;\n  }\n}\n\n// Readonly controls as plain text\n//\n// Apply class to a readonly input to make it appear like regular plain\n// text (without any border, background color, focus indicator)\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding: $input-padding-y 0;\n  margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n  line-height: $input-line-height;\n  color: $input-plaintext-color;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: $input-border-width 0;\n\n  &.form-control-sm,\n  &.form-control-lg {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// Repeated in `_input_group.scss` to avoid Sass extend issues.\n\n.form-control-sm {\n  min-height: $input-height-sm;\n  padding: $input-padding-y-sm $input-padding-x-sm;\n  @include font-size($input-font-size-sm);\n  @include border-radius($input-border-radius-sm);\n\n  &::file-selector-button {\n    padding: $input-padding-y-sm $input-padding-x-sm;\n    margin: (-$input-padding-y-sm) (-$input-padding-x-sm);\n    margin-inline-end: $input-padding-x-sm;\n  }\n\n  &::-webkit-file-upload-button {\n    padding: $input-padding-y-sm $input-padding-x-sm;\n    margin: (-$input-padding-y-sm) (-$input-padding-x-sm);\n    margin-inline-end: $input-padding-x-sm;\n  }\n}\n\n.form-control-lg {\n  min-height: $input-height-lg;\n  padding: $input-padding-y-lg $input-padding-x-lg;\n  @include font-size($input-font-size-lg);\n  @include border-radius($input-border-radius-lg);\n\n  &::file-selector-button {\n    padding: $input-padding-y-lg $input-padding-x-lg;\n    margin: (-$input-padding-y-lg) (-$input-padding-x-lg);\n    margin-inline-end: $input-padding-x-lg;\n  }\n\n  &::-webkit-file-upload-button {\n    padding: $input-padding-y-lg $input-padding-x-lg;\n    margin: (-$input-padding-y-lg) (-$input-padding-x-lg);\n    margin-inline-end: $input-padding-x-lg;\n  }\n}\n\n// Make sure textareas don't shrink too much when resized\n// https://github.com/twbs/bootstrap/pull/29124\n// stylelint-disable selector-no-qualifying-type\ntextarea {\n  &.form-control {\n    min-height: $input-height;\n  }\n\n  &.form-control-sm {\n    min-height: $input-height-sm;\n  }\n\n  &.form-control-lg {\n    min-height: $input-height-lg;\n  }\n}\n// stylelint-enable selector-no-qualifying-type\n\n.form-control-color {\n  width: $form-color-width;\n  height: auto; // Override fixed browser height\n  padding: $input-padding-y;\n\n  &:not(:disabled):not([readonly]) {\n    cursor: pointer;\n  }\n\n  &::-moz-color-swatch {\n    height: if(unit($input-line-height) == \"\", $input-line-height * 1em, $input-line-height);\n    @include border-radius($input-border-radius);\n  }\n\n  &::-webkit-color-swatch {\n    height: if(unit($input-line-height) == \"\", $input-line-height * 1em, $input-line-height);\n    @include border-radius($input-border-radius);\n  }\n}\n","// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","// Gradients\n\n// scss-docs-start gradient-bg-mixin\n@mixin gradient-bg($color: null) {\n  background-color: $color;\n\n  @if $enable-gradients {\n    background-image: var(--#{$variable-prefix}gradient);\n  }\n}\n// scss-docs-end gradient-bg-mixin\n\n// scss-docs-start gradient-mixins\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: null, $end-percent: null) {\n  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n  background-image: linear-gradient($deg, $start-color, $end-color);\n}\n\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n  background-image: radial-gradient(circle, $inner-color, $outer-color);\n}\n\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n// scss-docs-end gradient-mixins\n","// Select\n//\n// Replaces the browser default select with a custom one, mostly pulled from\n// https://primer.github.io/.\n\n.form-select {\n  display: block;\n  width: 100%;\n  padding: $form-select-padding-y $form-select-indicator-padding $form-select-padding-y $form-select-padding-x;\n  // stylelint-disable-next-line property-no-vendor-prefix\n  -moz-padding-start: subtract($form-select-padding-x, 3px); // See https://github.com/twbs/bootstrap/issues/32636\n  font-family: $form-select-font-family;\n  @include font-size($form-select-font-size);\n  font-weight: $form-select-font-weight;\n  line-height: $form-select-line-height;\n  color: $form-select-color;\n  background-color: $form-select-bg;\n  background-image: escape-svg($form-select-indicator);\n  background-repeat: no-repeat;\n  background-position: $form-select-bg-position;\n  background-size: $form-select-bg-size;\n  border: $form-select-border-width solid $form-select-border-color;\n  @include border-radius($form-select-border-radius, 0);\n  @include box-shadow($form-select-box-shadow);\n  @include transition($form-select-transition);\n  appearance: none;\n\n  &:focus {\n    border-color: $form-select-focus-border-color;\n    outline: 0;\n    @if $enable-shadows {\n      @include box-shadow($form-select-box-shadow, $form-select-focus-box-shadow);\n    } @else {\n      // Avoid using mixin so we can pass custom focus shadow properly\n      box-shadow: $form-select-focus-box-shadow;\n    }\n  }\n\n  &[multiple],\n  &[size]:not([size=\"1\"]) {\n    padding-right: $form-select-padding-x;\n    background-image: none;\n  }\n\n  &:disabled {\n    color: $form-select-disabled-color;\n    background-color: $form-select-disabled-bg;\n    border-color: $form-select-disabled-border-color;\n  }\n\n  // Remove outline from select box in FF\n  &:-moz-focusring {\n    color: transparent;\n    text-shadow: 0 0 0 $form-select-color;\n  }\n}\n\n.form-select-sm {\n  padding-top: $form-select-padding-y-sm;\n  padding-bottom: $form-select-padding-y-sm;\n  padding-left: $form-select-padding-x-sm;\n  @include font-size($form-select-font-size-sm);\n}\n\n.form-select-lg {\n  padding-top: $form-select-padding-y-lg;\n  padding-bottom: $form-select-padding-y-lg;\n  padding-left: $form-select-padding-x-lg;\n  @include font-size($form-select-font-size-lg);\n}\n","//\n// Check/radio\n//\n\n.form-check {\n  display: block;\n  min-height: $form-check-min-height;\n  padding-left: $form-check-padding-start;\n  margin-bottom: $form-check-margin-bottom;\n\n  .form-check-input {\n    float: left;\n    margin-left: $form-check-padding-start * -1;\n  }\n}\n\n.form-check-input {\n  width: $form-check-input-width;\n  height: $form-check-input-width;\n  margin-top: ($line-height-base - $form-check-input-width) * .5; // line-height minus check height\n  vertical-align: top;\n  background-color: $form-check-input-bg;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: contain;\n  border: $form-check-input-border;\n  appearance: none;\n  color-adjust: exact; // Keep themed appearance for print\n  @include transition($form-check-transition);\n\n  &[type=\"checkbox\"] {\n    @include border-radius($form-check-input-border-radius);\n  }\n\n  &[type=\"radio\"] {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: $form-check-radio-border-radius;\n  }\n\n  &:active {\n    filter: $form-check-input-active-filter;\n  }\n\n  &:focus {\n    border-color: $form-check-input-focus-border;\n    outline: 0;\n    box-shadow: $form-check-input-focus-box-shadow;\n  }\n\n  &:checked {\n    background-color: $form-check-input-checked-bg-color;\n    border-color: $form-check-input-checked-border-color;\n\n    &[type=\"checkbox\"] {\n      @if $enable-gradients {\n        background-image: escape-svg($form-check-input-checked-bg-image), var(--#{$variable-prefix}gradient);\n      } @else {\n        background-image: escape-svg($form-check-input-checked-bg-image);\n      }\n    }\n\n    &[type=\"radio\"] {\n      @if $enable-gradients {\n        background-image: escape-svg($form-check-radio-checked-bg-image), var(--#{$variable-prefix}gradient);\n      } @else {\n        background-image: escape-svg($form-check-radio-checked-bg-image);\n      }\n    }\n  }\n\n  &[type=\"checkbox\"]:indeterminate {\n    background-color: $form-check-input-indeterminate-bg-color;\n    border-color: $form-check-input-indeterminate-border-color;\n\n    @if $enable-gradients {\n      background-image: escape-svg($form-check-input-indeterminate-bg-image), var(--#{$variable-prefix}gradient);\n    } @else {\n      background-image: escape-svg($form-check-input-indeterminate-bg-image);\n    }\n  }\n\n  &:disabled {\n    pointer-events: none;\n    filter: none;\n    opacity: $form-check-input-disabled-opacity;\n  }\n\n  // Use disabled attribute in addition of :disabled pseudo-class\n  // See: https://github.com/twbs/bootstrap/issues/28247\n  &[disabled],\n  &:disabled {\n    ~ .form-check-label {\n      opacity: $form-check-label-disabled-opacity;\n    }\n  }\n}\n\n.form-check-label {\n  color: $form-check-label-color;\n  cursor: $form-check-label-cursor;\n}\n\n//\n// Switch\n//\n\n.form-switch {\n  padding-left: $form-switch-padding-start;\n\n  .form-check-input {\n    width: $form-switch-width;\n    margin-left: $form-switch-padding-start * -1;\n    background-image: escape-svg($form-switch-bg-image);\n    background-position: left center;\n    @include border-radius($form-switch-border-radius);\n    @include transition($form-switch-transition);\n\n    &:focus {\n      background-image: escape-svg($form-switch-focus-bg-image);\n    }\n\n    &:checked {\n      background-position: $form-switch-checked-bg-position;\n\n      @if $enable-gradients {\n        background-image: escape-svg($form-switch-checked-bg-image), var(--#{$variable-prefix}gradient);\n      } @else {\n        background-image: escape-svg($form-switch-checked-bg-image);\n      }\n    }\n  }\n}\n\n.form-check-inline {\n  display: inline-block;\n  margin-right: $form-check-inline-margin-end;\n}\n\n.btn-check {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n\n  &[disabled],\n  &:disabled {\n    + .btn {\n      pointer-events: none;\n      filter: none;\n      opacity: $form-check-btn-check-disabled-opacity;\n    }\n  }\n}\n","// Range\n//\n// Style range inputs the same across browsers. Vendor-specific rules for pseudo\n// elements cannot be mixed. As such, there are no shared styles for focus or\n// active states on prefixed selectors.\n\n.form-range {\n  width: 100%;\n  height: add($form-range-thumb-height, $form-range-thumb-focus-box-shadow-width * 2);\n  padding: 0; // Need to reset padding\n  background-color: transparent;\n  appearance: none;\n\n  &:focus {\n    outline: 0;\n\n    // Pseudo-elements must be split across multiple rulesets to have an effect.\n    // No box-shadow() mixin for focus accessibility.\n    &::-webkit-slider-thumb { box-shadow: $form-range-thumb-focus-box-shadow; }\n    &::-moz-range-thumb     { box-shadow: $form-range-thumb-focus-box-shadow; }\n  }\n\n  &::-moz-focus-outer {\n    border: 0;\n  }\n\n  &::-webkit-slider-thumb {\n    width: $form-range-thumb-width;\n    height: $form-range-thumb-height;\n    margin-top: ($form-range-track-height - $form-range-thumb-height) * .5; // Webkit specific\n    @include gradient-bg($form-range-thumb-bg);\n    border: $form-range-thumb-border;\n    @include border-radius($form-range-thumb-border-radius);\n    @include box-shadow($form-range-thumb-box-shadow);\n    @include transition($form-range-thumb-transition);\n    appearance: none;\n\n    &:active {\n      @include gradient-bg($form-range-thumb-active-bg);\n    }\n  }\n\n  &::-webkit-slider-runnable-track {\n    width: $form-range-track-width;\n    height: $form-range-track-height;\n    color: transparent; // Why?\n    cursor: $form-range-track-cursor;\n    background-color: $form-range-track-bg;\n    border-color: transparent;\n    @include border-radius($form-range-track-border-radius);\n    @include box-shadow($form-range-track-box-shadow);\n  }\n\n  &::-moz-range-thumb {\n    width: $form-range-thumb-width;\n    height: $form-range-thumb-height;\n    @include gradient-bg($form-range-thumb-bg);\n    border: $form-range-thumb-border;\n    @include border-radius($form-range-thumb-border-radius);\n    @include box-shadow($form-range-thumb-box-shadow);\n    @include transition($form-range-thumb-transition);\n    appearance: none;\n\n    &:active {\n      @include gradient-bg($form-range-thumb-active-bg);\n    }\n  }\n\n  &::-moz-range-track {\n    width: $form-range-track-width;\n    height: $form-range-track-height;\n    color: transparent;\n    cursor: $form-range-track-cursor;\n    background-color: $form-range-track-bg;\n    border-color: transparent; // Firefox specific?\n    @include border-radius($form-range-track-border-radius);\n    @include box-shadow($form-range-track-box-shadow);\n  }\n\n  &:disabled {\n    pointer-events: none;\n\n    &::-webkit-slider-thumb {\n      background-color: $form-range-thumb-disabled-bg;\n    }\n\n    &::-moz-range-thumb {\n      background-color: $form-range-thumb-disabled-bg;\n    }\n  }\n}\n",".form-floating {\n  position: relative;\n\n  > .form-control,\n  > .form-select {\n    height: $form-floating-height;\n    line-height: $form-floating-line-height;\n  }\n\n  > label {\n    position: absolute;\n    top: 0;\n    left: 0;\n    height: 100%; // allow textareas\n    padding: $form-floating-padding-y $form-floating-padding-x;\n    pointer-events: none;\n    border: $input-border-width solid transparent; // Required for aligning label's text with the input as it affects inner box model\n    transform-origin: 0 0;\n    @include transition($form-floating-transition);\n  }\n\n  // stylelint-disable no-duplicate-selectors\n  > .form-control {\n    padding: $form-floating-padding-y $form-floating-padding-x;\n\n    &::placeholder {\n      color: transparent;\n    }\n\n    &:focus,\n    &:not(:placeholder-shown) {\n      padding-top: $form-floating-input-padding-t;\n      padding-bottom: $form-floating-input-padding-b;\n    }\n    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n    &:-webkit-autofill {\n      padding-top: $form-floating-input-padding-t;\n      padding-bottom: $form-floating-input-padding-b;\n    }\n  }\n\n  > .form-select {\n    padding-top: $form-floating-input-padding-t;\n    padding-bottom: $form-floating-input-padding-b;\n  }\n\n  > .form-control:focus,\n  > .form-control:not(:placeholder-shown),\n  > .form-select {\n    ~ label {\n      opacity: $form-floating-label-opacity;\n      transform: $form-floating-label-transform;\n    }\n  }\n  // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n  > .form-control:-webkit-autofill {\n    ~ label {\n      opacity: $form-floating-label-opacity;\n      transform: $form-floating-label-transform;\n    }\n  }\n  // stylelint-enable no-duplicate-selectors\n}\n","//\n// Base styles\n//\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap; // For form validation feedback\n  align-items: stretch;\n  width: 100%;\n\n  > .form-control,\n  > .form-select {\n    position: relative; // For focus state's z-index\n    flex: 1 1 auto;\n    width: 1%;\n    min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size\n  }\n\n  // Bring the \"active\" form control to the top of surrounding elements\n  > .form-control:focus,\n  > .form-select:focus {\n    z-index: 3;\n  }\n\n  // Ensure buttons are always above inputs for more visually pleasing borders.\n  // This isn't needed for `.input-group-text` since it shares the same border-color\n  // as our inputs.\n  .btn {\n    position: relative;\n    z-index: 2;\n\n    &:focus {\n      z-index: 3;\n    }\n  }\n}\n\n\n// Textual addons\n//\n// Serves as a catch-all element for any text or radio/checkbox input you wish\n// to prepend or append to an input.\n\n.input-group-text {\n  display: flex;\n  align-items: center;\n  padding: $input-group-addon-padding-y $input-group-addon-padding-x;\n  @include font-size($input-font-size); // Match inputs\n  font-weight: $input-group-addon-font-weight;\n  line-height: $input-line-height;\n  color: $input-group-addon-color;\n  text-align: center;\n  white-space: nowrap;\n  background-color: $input-group-addon-bg;\n  border: $input-border-width solid $input-group-addon-border-color;\n  @include border-radius($input-border-radius);\n}\n\n\n// Sizing\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n  padding: $input-padding-y-lg $input-padding-x-lg;\n  @include font-size($input-font-size-lg);\n  @include border-radius($input-border-radius-lg);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n  padding: $input-padding-y-sm $input-padding-x-sm;\n  @include font-size($input-font-size-sm);\n  @include border-radius($input-border-radius-sm);\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n  padding-right: $form-select-padding-x + $form-select-indicator-padding;\n}\n\n\n// Rounded corners\n//\n// These rulesets must come after the sizing ones to properly override sm and lg\n// border-radius values when extending. They're more specific than we'd like\n// with the `.input-group >` part, but without it, we cannot override the sizing.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.input-group {\n  &:not(.has-validation) {\n    > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),\n    > .dropdown-toggle:nth-last-child(n + 3) {\n      @include border-end-radius(0);\n    }\n  }\n\n  &.has-validation {\n    > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu),\n    > .dropdown-toggle:nth-last-child(n + 4) {\n      @include border-end-radius(0);\n    }\n  }\n\n  $validation-messages: \"\";\n  @each $state in map-keys($form-validation-states) {\n    $validation-messages: $validation-messages + \":not(.\" + unquote($state) + \"-tooltip)\" + \":not(.\" + unquote($state) + \"-feedback)\";\n  }\n\n  > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {\n    margin-left: -$input-border-width;\n    @include border-start-radius(0);\n  }\n}\n","// This mixin uses an `if()` technique to be compatible with Dart Sass\n// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details\n\n// scss-docs-start form-validation-mixins\n@mixin form-validation-state-selector($state) {\n  @if ($state == \"valid\" or $state == \"invalid\") {\n    .was-validated #{if(&, \"&\", \"\")}:#{$state},\n    #{if(&, \"&\", \"\")}.is-#{$state} {\n      @content;\n    }\n  } @else {\n    #{if(&, \"&\", \"\")}.is-#{$state} {\n      @content;\n    }\n  }\n}\n\n@mixin form-validation-state(\n  $state,\n  $color,\n  $icon,\n  $tooltip-color: color-contrast($color),\n  $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),\n  $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity)\n) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    margin-top: $form-feedback-margin-top;\n    @include font-size($form-feedback-font-size);\n    font-style: $form-feedback-font-style;\n    color: $color;\n  }\n\n  .#{$state}-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%; // Contain to parent when possible\n    padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n    margin-top: .1rem;\n    @include font-size($form-feedback-tooltip-font-size);\n    line-height: $form-feedback-tooltip-line-height;\n    color: $tooltip-color;\n    background-color: $tooltip-bg-color;\n    @include border-radius($form-feedback-tooltip-border-radius);\n  }\n\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  .form-control {\n    @include form-validation-state-selector($state) {\n      border-color: $color;\n\n      @if $enable-validation-icons {\n        padding-right: $input-height-inner;\n        background-image: escape-svg($icon);\n        background-repeat: no-repeat;\n        background-position: right $input-height-inner-quarter center;\n        background-size: $input-height-inner-half $input-height-inner-half;\n      }\n\n      &:focus {\n        border-color: $color;\n        box-shadow: $focus-box-shadow;\n      }\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  textarea.form-control {\n    @include form-validation-state-selector($state) {\n      @if $enable-validation-icons {\n        padding-right: $input-height-inner;\n        background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n      }\n    }\n  }\n\n  .form-select {\n    @include form-validation-state-selector($state) {\n      border-color: $color;\n\n      @if $enable-validation-icons {\n        &:not([multiple]):not([size]),\n        &:not([multiple])[size=\"1\"] {\n          padding-right: $form-select-feedback-icon-padding-end;\n          background-image: escape-svg($form-select-indicator), escape-svg($icon);\n          background-position: $form-select-bg-position, $form-select-feedback-icon-position;\n          background-size: $form-select-bg-size, $form-select-feedback-icon-size;\n        }\n      }\n\n      &:focus {\n        border-color: $color;\n        box-shadow: $focus-box-shadow;\n      }\n    }\n  }\n\n  .form-check-input {\n    @include form-validation-state-selector($state) {\n      border-color: $color;\n\n      &:checked {\n        background-color: $color;\n      }\n\n      &:focus {\n        box-shadow: $focus-box-shadow;\n      }\n\n      ~ .form-check-label {\n        color: $color;\n      }\n    }\n  }\n  .form-check-inline .form-check-input {\n    ~ .#{$state}-feedback {\n      margin-left: .5em;\n    }\n  }\n\n  .input-group .form-control,\n  .input-group .form-select {\n    @include form-validation-state-selector($state) {\n      @if $state == \"valid\" {\n        z-index: 1;\n      } @else if $state == \"invalid\" {\n        z-index: 2;\n      }\n      &:focus {\n        z-index: 3;\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-mixins\n","//\n// Base styles\n//\n\n.btn {\n  display: inline-block;\n  font-family: $btn-font-family;\n  font-weight: $btn-font-weight;\n  line-height: $btn-line-height;\n  color: $body-color;\n  text-align: center;\n  text-decoration: if($link-decoration == none, null, none);\n  white-space: $btn-white-space;\n  vertical-align: middle;\n  cursor: if($enable-button-pointers, pointer, null);\n  user-select: none;\n  background-color: transparent;\n  border: $btn-border-width solid transparent;\n  @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-border-radius);\n  @include transition($btn-transition);\n\n  &:hover {\n    color: $body-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n\n  .btn-check:focus + &,\n  &:focus {\n    outline: 0;\n    box-shadow: $btn-focus-box-shadow;\n  }\n\n  .btn-check:checked + &,\n  .btn-check:active + &,\n  &:active,\n  &.active {\n    @include box-shadow($btn-active-box-shadow);\n\n    &:focus {\n      @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);\n    }\n  }\n\n  &:disabled,\n  &.disabled,\n  fieldset:disabled & {\n    pointer-events: none;\n    opacity: $btn-disabled-opacity;\n    @include box-shadow(none);\n  }\n}\n\n\n//\n// Alternate buttons\n//\n\n// scss-docs-start btn-variant-loops\n@each $color, $value in $theme-colors {\n  .btn-#{$color} {\n    @include button-variant($value, $value);\n  }\n}\n\n@each $color, $value in $theme-colors {\n  .btn-outline-#{$color} {\n    @include button-outline-variant($value);\n  }\n}\n// scss-docs-end btn-variant-loops\n\n\n//\n// Link buttons\n//\n\n// Make a button look and behave like a link\n.btn-link {\n  font-weight: $font-weight-normal;\n  color: $btn-link-color;\n  text-decoration: $link-decoration;\n\n  &:hover {\n    color: $btn-link-hover-color;\n    text-decoration: $link-hover-decoration;\n  }\n\n  &:focus {\n    text-decoration: $link-hover-decoration;\n  }\n\n  &:disabled,\n  &.disabled {\n    color: $btn-link-disabled-color;\n  }\n\n  // No need for an active state here\n}\n\n\n//\n// Button Sizes\n//\n\n.btn-lg {\n  @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg);\n}\n\n.btn-sm {\n  @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm);\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n// scss-docs-start btn-variant-mixin\n@mixin button-variant(\n  $background,\n  $border,\n  $color: color-contrast($background),\n  $hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),\n  $hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),\n  $hover-color: color-contrast($hover-background),\n  $active-background: if($color == $color-contrast-light, shade-color($background, $btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),\n  $active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),\n  $active-color: color-contrast($active-background),\n  $disabled-background: $background,\n  $disabled-border: $border,\n  $disabled-color: color-contrast($disabled-background)\n) {\n  color: $color;\n  @include gradient-bg($background);\n  border-color: $border;\n  @include box-shadow($btn-box-shadow);\n\n  &:hover {\n    color: $hover-color;\n    @include gradient-bg($hover-background);\n    border-color: $hover-border;\n  }\n\n  .btn-check:focus + &,\n  &:focus {\n    color: $hover-color;\n    @include gradient-bg($hover-background);\n    border-color: $hover-border;\n    @if $enable-shadows {\n      @include box-shadow($btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5));\n    } @else {\n      // Avoid using mixin so we can pass custom focus shadow properly\n      box-shadow: 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5);\n    }\n  }\n\n  .btn-check:checked + &,\n  .btn-check:active + &,\n  &:active,\n  &.active,\n  .show > &.dropdown-toggle {\n    color: $active-color;\n    background-color: $active-background;\n    // Remove CSS gradients if they're enabled\n    background-image: if($enable-gradients, none, null);\n    border-color: $active-border;\n\n    &:focus {\n      @if $enable-shadows {\n        @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5));\n      } @else {\n        // Avoid using mixin so we can pass custom focus shadow properly\n        box-shadow: 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5);\n      }\n    }\n  }\n\n  &:disabled,\n  &.disabled {\n    color: $disabled-color;\n    background-color: $disabled-background;\n    // Remove CSS gradients if they're enabled\n    background-image: if($enable-gradients, none, null);\n    border-color: $disabled-border;\n  }\n}\n// scss-docs-end btn-variant-mixin\n\n// scss-docs-start btn-outline-variant-mixin\n@mixin button-outline-variant(\n  $color,\n  $color-hover: color-contrast($color),\n  $active-background: $color,\n  $active-border: $color,\n  $active-color: color-contrast($active-background)\n) {\n  color: $color;\n  border-color: $color;\n\n  &:hover {\n    color: $color-hover;\n    background-color: $active-background;\n    border-color: $active-border;\n  }\n\n  .btn-check:focus + &,\n  &:focus {\n    box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n  }\n\n  .btn-check:checked + &,\n  .btn-check:active + &,\n  &:active,\n  &.active,\n  &.dropdown-toggle.show {\n    color: $active-color;\n    background-color: $active-background;\n    border-color: $active-border;\n\n    &:focus {\n      @if $enable-shadows {\n        @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5));\n      } @else {\n        // Avoid using mixin so we can pass custom focus shadow properly\n        box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n      }\n    }\n  }\n\n  &:disabled,\n  &.disabled {\n    color: $color;\n    background-color: transparent;\n  }\n}\n// scss-docs-end btn-outline-variant-mixin\n\n// scss-docs-start btn-size-mixin\n@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {\n  padding: $padding-y $padding-x;\n  @include font-size($font-size);\n  // Manually declare to provide an override to the browser default\n  @include border-radius($border-radius, 0);\n}\n// scss-docs-end btn-size-mixin\n",".fade {\n  @include transition($transition-fade);\n\n  &:not(.show) {\n    opacity: 0;\n  }\n}\n\n// scss-docs-start collapse-classes\n.collapse {\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  @include transition($transition-collapse);\n\n  &.collapse-horizontal {\n    width: 0;\n    height: auto;\n    @include transition($transition-collapse-width);\n  }\n}\n// scss-docs-end collapse-classes\n","// The dropdown wrapper (`<div>`)\n.dropup,\n.dropend,\n.dropdown,\n.dropstart {\n  position: relative;\n}\n\n.dropdown-toggle {\n  white-space: nowrap;\n\n  // Generate the caret automatically\n  @include caret();\n}\n\n// The dropdown menu\n.dropdown-menu {\n  position: absolute;\n  z-index: $zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  min-width: $dropdown-min-width;\n  padding: $dropdown-padding-y $dropdown-padding-x;\n  margin: 0; // Override default margin of ul\n  @include font-size($dropdown-font-size);\n  color: $dropdown-color;\n  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n  list-style: none;\n  background-color: $dropdown-bg;\n  background-clip: padding-box;\n  border: $dropdown-border-width solid $dropdown-border-color;\n  @include border-radius($dropdown-border-radius);\n  @include box-shadow($dropdown-box-shadow);\n\n  &[data-bs-popper] {\n    top: 100%;\n    left: 0;\n    margin-top: $dropdown-spacer;\n  }\n}\n\n// scss-docs-start responsive-breakpoints\n// We deliberately hardcode the `bs-` prefix because we check\n// this custom property in JS to determine Popper's positioning\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .dropdown-menu#{$infix}-start {\n      --bs-position: start;\n\n      &[data-bs-popper] {\n        right: auto;\n        left: 0;\n      }\n    }\n\n    .dropdown-menu#{$infix}-end {\n      --bs-position: end;\n\n      &[data-bs-popper] {\n        right: 0;\n        left: auto;\n      }\n    }\n  }\n}\n// scss-docs-end responsive-breakpoints\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n// Just add .dropup after the standard .dropdown class and you're set.\n.dropup {\n  .dropdown-menu[data-bs-popper] {\n    top: auto;\n    bottom: 100%;\n    margin-top: 0;\n    margin-bottom: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(up);\n  }\n}\n\n.dropend {\n  .dropdown-menu[data-bs-popper] {\n    top: 0;\n    right: auto;\n    left: 100%;\n    margin-top: 0;\n    margin-left: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(end);\n    &::after {\n      vertical-align: 0;\n    }\n  }\n}\n\n.dropstart {\n  .dropdown-menu[data-bs-popper] {\n    top: 0;\n    right: 100%;\n    left: auto;\n    margin-top: 0;\n    margin-right: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(start);\n    &::before {\n      vertical-align: 0;\n    }\n  }\n}\n\n\n// Dividers (basically an `<hr>`) within the dropdown\n.dropdown-divider {\n  height: 0;\n  margin: $dropdown-divider-margin-y 0;\n  overflow: hidden;\n  border-top: 1px solid $dropdown-divider-bg;\n}\n\n// Links, buttons, and more within the dropdown menu\n//\n// `<button>`-specific styles are denoted with `// For <button>s`\n.dropdown-item {\n  display: block;\n  width: 100%; // For `<button>`s\n  padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n  clear: both;\n  font-weight: $font-weight-normal;\n  color: $dropdown-link-color;\n  text-align: inherit; // For `<button>`s\n  text-decoration: if($link-decoration == none, null, none);\n  white-space: nowrap; // prevent links from randomly breaking onto new lines\n  background-color: transparent; // For `<button>`s\n  border: 0; // For `<button>`s\n\n  // Prevent dropdown overflow if there's no padding\n  // See https://github.com/twbs/bootstrap/pull/27703\n  @if $dropdown-padding-y == 0 {\n    &:first-child {\n      @include border-top-radius($dropdown-inner-border-radius);\n    }\n\n    &:last-child {\n      @include border-bottom-radius($dropdown-inner-border-radius);\n    }\n  }\n\n  &:hover,\n  &:focus {\n    color: $dropdown-link-hover-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n    @include gradient-bg($dropdown-link-hover-bg);\n  }\n\n  &.active,\n  &:active {\n    color: $dropdown-link-active-color;\n    text-decoration: none;\n    @include gradient-bg($dropdown-link-active-bg);\n  }\n\n  &.disabled,\n  &:disabled {\n    color: $dropdown-link-disabled-color;\n    pointer-events: none;\n    background-color: transparent;\n    // Remove CSS gradients if they're enabled\n    background-image: if($enable-gradients, none, null);\n  }\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: $dropdown-header-padding;\n  margin-bottom: 0; // for use with heading elements\n  @include font-size($font-size-sm);\n  color: $dropdown-header-color;\n  white-space: nowrap; // as with > li > a\n}\n\n// Dropdown text\n.dropdown-item-text {\n  display: block;\n  padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n  color: $dropdown-link-color;\n}\n\n// Dark dropdowns\n.dropdown-menu-dark {\n  color: $dropdown-dark-color;\n  background-color: $dropdown-dark-bg;\n  border-color: $dropdown-dark-border-color;\n  @include box-shadow($dropdown-dark-box-shadow);\n\n  .dropdown-item {\n    color: $dropdown-dark-link-color;\n\n    &:hover,\n    &:focus {\n      color: $dropdown-dark-link-hover-color;\n      @include gradient-bg($dropdown-dark-link-hover-bg);\n    }\n\n    &.active,\n    &:active {\n      color: $dropdown-dark-link-active-color;\n      @include gradient-bg($dropdown-dark-link-active-bg);\n    }\n\n    &.disabled,\n    &:disabled {\n      color: $dropdown-dark-link-disabled-color;\n    }\n  }\n\n  .dropdown-divider {\n    border-color: $dropdown-dark-divider-bg;\n  }\n\n  .dropdown-item-text {\n    color: $dropdown-dark-link-color;\n  }\n\n  .dropdown-header {\n    color: $dropdown-dark-header-color;\n  }\n}\n","// scss-docs-start caret-mixins\n@mixin caret-down {\n  border-top: $caret-width solid;\n  border-right: $caret-width solid transparent;\n  border-bottom: 0;\n  border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n  border-top: 0;\n  border-right: $caret-width solid transparent;\n  border-bottom: $caret-width solid;\n  border-left: $caret-width solid transparent;\n}\n\n@mixin caret-end {\n  border-top: $caret-width solid transparent;\n  border-right: 0;\n  border-bottom: $caret-width solid transparent;\n  border-left: $caret-width solid;\n}\n\n@mixin caret-start {\n  border-top: $caret-width solid transparent;\n  border-right: $caret-width solid;\n  border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n  @if $enable-caret {\n    &::after {\n      display: inline-block;\n      margin-left: $caret-spacing;\n      vertical-align: $caret-vertical-align;\n      content: \"\";\n      @if $direction == down {\n        @include caret-down();\n      } @else if $direction == up {\n        @include caret-up();\n      } @else if $direction == end {\n        @include caret-end();\n      }\n    }\n\n    @if $direction == start {\n      &::after {\n        display: none;\n      }\n\n      &::before {\n        display: inline-block;\n        margin-right: $caret-spacing;\n        vertical-align: $caret-vertical-align;\n        content: \"\";\n        @include caret-start();\n      }\n    }\n\n    &:empty::after {\n      margin-left: 0;\n    }\n  }\n}\n// scss-docs-end caret-mixins\n","// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n\n  > .btn {\n    position: relative;\n    flex: 1 1 auto;\n  }\n\n  // Bring the hover, focused, and \"active\" buttons to the front to overlay\n  // the borders properly\n  > .btn-check:checked + .btn,\n  > .btn-check:focus + .btn,\n  > .btn:hover,\n  > .btn:focus,\n  > .btn:active,\n  > .btn.active {\n    z-index: 1;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n\n  .input-group {\n    width: auto;\n  }\n}\n\n.btn-group {\n  // Prevent double borders when buttons are next to each other\n  > .btn:not(:first-child),\n  > .btn-group:not(:first-child) {\n    margin-left: -$btn-border-width;\n  }\n\n  // Reset rounded corners\n  > .btn:not(:last-child):not(.dropdown-toggle),\n  > .btn-group:not(:last-child) > .btn {\n    @include border-end-radius(0);\n  }\n\n  // The left radius should be 0 if the button is:\n  // - the \"third or more\" child\n  // - the second child and the previous element isn't `.btn-check` (making it the first child visually)\n  // - part of a btn-group which isn't the first child\n  > .btn:nth-child(n + 3),\n  > :not(.btn-check) + .btn,\n  > .btn-group:not(:first-child) > .btn {\n    @include border-start-radius(0);\n  }\n}\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-sm > .btn { @extend .btn-sm; }\n.btn-group-lg > .btn { @extend .btn-lg; }\n\n\n//\n// Split button dropdowns\n//\n\n.dropdown-toggle-split {\n  padding-right: $btn-padding-x * .75;\n  padding-left: $btn-padding-x * .75;\n\n  &::after,\n  .dropup &::after,\n  .dropend &::after {\n    margin-left: 0;\n  }\n\n  .dropstart &::before {\n    margin-right: 0;\n  }\n}\n\n.btn-sm + .dropdown-toggle-split {\n  padding-right: $btn-padding-x-sm * .75;\n  padding-left: $btn-padding-x-sm * .75;\n}\n\n.btn-lg + .dropdown-toggle-split {\n  padding-right: $btn-padding-x-lg * .75;\n  padding-left: $btn-padding-x-lg * .75;\n}\n\n\n// The clickable button for toggling the menu\n// Set the same inset shadow as the :active state\n.btn-group.show .dropdown-toggle {\n  @include box-shadow($btn-active-box-shadow);\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    @include box-shadow(none);\n  }\n}\n\n\n//\n// Vertical button groups\n//\n\n.btn-group-vertical {\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: center;\n\n  > .btn,\n  > .btn-group {\n    width: 100%;\n  }\n\n  > .btn:not(:first-child),\n  > .btn-group:not(:first-child) {\n    margin-top: -$btn-border-width;\n  }\n\n  // Reset rounded corners\n  > .btn:not(:last-child):not(.dropdown-toggle),\n  > .btn-group:not(:last-child) > .btn {\n    @include border-bottom-radius(0);\n  }\n\n  > .btn ~ .btn,\n  > .btn-group:not(:first-child) > .btn {\n    @include border-top-radius(0);\n  }\n}\n","// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<ol>`s.\n\n.nav {\n  display: flex;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: $nav-link-padding-y $nav-link-padding-x;\n  @include font-size($nav-link-font-size);\n  font-weight: $nav-link-font-weight;\n  color: $nav-link-color;\n  text-decoration: if($link-decoration == none, null, none);\n  @include transition($nav-link-transition);\n\n  &:hover,\n  &:focus {\n    color: $nav-link-hover-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n\n  // Disabled state lightens text\n  &.disabled {\n    color: $nav-link-disabled-color;\n    pointer-events: none;\n    cursor: default;\n  }\n}\n\n//\n// Tabs\n//\n\n.nav-tabs {\n  border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;\n\n  .nav-link {\n    margin-bottom: -$nav-tabs-border-width;\n    background: none;\n    border: $nav-tabs-border-width solid transparent;\n    @include border-top-radius($nav-tabs-border-radius);\n\n    &:hover,\n    &:focus {\n      border-color: $nav-tabs-link-hover-border-color;\n      // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link\n      isolation: isolate;\n    }\n\n    &.disabled {\n      color: $nav-link-disabled-color;\n      background-color: transparent;\n      border-color: transparent;\n    }\n  }\n\n  .nav-link.active,\n  .nav-item.show .nav-link {\n    color: $nav-tabs-link-active-color;\n    background-color: $nav-tabs-link-active-bg;\n    border-color: $nav-tabs-link-active-border-color;\n  }\n\n  .dropdown-menu {\n    // Make dropdown border overlap tab border\n    margin-top: -$nav-tabs-border-width;\n    // Remove the top rounded corners here since there is a hard edge above the menu\n    @include border-top-radius(0);\n  }\n}\n\n\n//\n// Pills\n//\n\n.nav-pills {\n  .nav-link {\n    background: none;\n    border: 0;\n    @include border-radius($nav-pills-border-radius);\n  }\n\n  .nav-link.active,\n  .show > .nav-link {\n    color: $nav-pills-link-active-color;\n    @include gradient-bg($nav-pills-link-active-bg);\n  }\n}\n\n\n//\n// Justified variants\n//\n\n.nav-fill {\n  > .nav-link,\n  .nav-item {\n    flex: 1 1 auto;\n    text-align: center;\n  }\n}\n\n.nav-justified {\n  > .nav-link,\n  .nav-item {\n    flex-basis: 0;\n    flex-grow: 1;\n    text-align: center;\n  }\n}\n\n.nav-fill,\n.nav-justified {\n  .nav-item .nav-link {\n    width: 100%; // Make sure button will grow\n  }\n}\n\n\n// Tabbable tabs\n//\n// Hide tabbable panes to start, show them when `.active`\n\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n","// Contents\n//\n// Navbar\n// Navbar brand\n// Navbar nav\n// Navbar text\n// Responsive navbar\n// Navbar position\n// Navbar themes\n\n\n// Navbar\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap; // allow us to do the line break for collapsing content\n  align-items: center;\n  justify-content: space-between; // space out brand from logo\n  padding-top: $navbar-padding-y;\n  padding-right: $navbar-padding-x; // default: null\n  padding-bottom: $navbar-padding-y;\n  padding-left: $navbar-padding-x; // default: null\n  @include gradient-bg();\n\n  // Because flex properties aren't inherited, we need to redeclare these first\n  // few properties so that content nested within behave properly.\n  // The `flex-wrap` property is inherited to simplify the expanded navbars\n  %container-flex-properties {\n    display: flex;\n    flex-wrap: inherit;\n    align-items: center;\n    justify-content: space-between;\n  }\n\n  > .container,\n  > .container-fluid {\n    @extend %container-flex-properties;\n  }\n\n  @each $breakpoint, $container-max-width in $container-max-widths {\n    > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {\n      @extend %container-flex-properties;\n    }\n  }\n}\n\n\n// Navbar brand\n//\n// Used for brand, project, or site names.\n\n.navbar-brand {\n  padding-top: $navbar-brand-padding-y;\n  padding-bottom: $navbar-brand-padding-y;\n  margin-right: $navbar-brand-margin-end;\n  @include font-size($navbar-brand-font-size);\n  text-decoration: if($link-decoration == none, null, none);\n  white-space: nowrap;\n\n  &:hover,\n  &:focus {\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n}\n\n\n// Navbar nav\n//\n// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).\n\n.navbar-nav {\n  display: flex;\n  flex-direction: column; // cannot use `inherit` to get the `.navbar`s value\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n\n  .nav-link {\n    padding-right: 0;\n    padding-left: 0;\n  }\n\n  .dropdown-menu {\n    position: static;\n  }\n}\n\n\n// Navbar text\n//\n//\n\n.navbar-text {\n  padding-top: $nav-link-padding-y;\n  padding-bottom: $nav-link-padding-y;\n}\n\n\n// Responsive navbar\n//\n// Custom styles for responsive collapsing and toggling of navbar contents.\n// Powered by the collapse Bootstrap JavaScript plugin.\n\n// When collapsed, prevent the toggleable navbar contents from appearing in\n// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`\n// on the `.navbar` parent.\n.navbar-collapse {\n  flex-basis: 100%;\n  flex-grow: 1;\n  // For always expanded or extra full navbars, ensure content aligns itself\n  // properly vertically. Can be easily overridden with flex utilities.\n  align-items: center;\n}\n\n// Button for toggling the navbar when in its collapsed state\n.navbar-toggler {\n  padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;\n  @include font-size($navbar-toggler-font-size);\n  line-height: 1;\n  background-color: transparent; // remove default button style\n  border: $border-width solid transparent; // remove default button style\n  @include border-radius($navbar-toggler-border-radius);\n  @include transition($navbar-toggler-transition);\n\n  &:hover {\n    text-decoration: none;\n  }\n\n  &:focus {\n    text-decoration: none;\n    outline: 0;\n    box-shadow: 0 0 0 $navbar-toggler-focus-width;\n  }\n}\n\n// Keep as a separate element so folks can easily override it with another icon\n// or image file as needed.\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 100%;\n}\n\n.navbar-nav-scroll {\n  max-height: var(--#{$variable-prefix}scroll-height, 75vh);\n  overflow-y: auto;\n}\n\n// scss-docs-start navbar-expand-loop\n// Generate series of `.navbar-expand-*` responsive classes for configuring\n// where your navbar collapses.\n.navbar-expand {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $next: breakpoint-next($breakpoint, $grid-breakpoints);\n    $infix: breakpoint-infix($next, $grid-breakpoints);\n\n    // stylelint-disable-next-line scss/selector-no-union-class-name\n    &#{$infix} {\n      @include media-breakpoint-up($next) {\n        flex-wrap: nowrap;\n        justify-content: flex-start;\n\n        .navbar-nav {\n          flex-direction: row;\n\n          .dropdown-menu {\n            position: absolute;\n          }\n\n          .nav-link {\n            padding-right: $navbar-nav-link-padding-x;\n            padding-left: $navbar-nav-link-padding-x;\n          }\n        }\n\n        .navbar-nav-scroll {\n          overflow: visible;\n        }\n\n        .navbar-collapse {\n          display: flex !important; // stylelint-disable-line declaration-no-important\n          flex-basis: auto;\n        }\n\n        .navbar-toggler {\n          display: none;\n        }\n\n        .offcanvas-header {\n          display: none;\n        }\n\n        .offcanvas {\n          position: inherit;\n          bottom: 0;\n          z-index: 1000;\n          flex-grow: 1;\n          visibility: visible !important; // stylelint-disable-line declaration-no-important\n          background-color: transparent;\n          border-right: 0;\n          border-left: 0;\n          @include transition(none);\n          transform: none;\n        }\n        .offcanvas-top,\n        .offcanvas-bottom {\n          height: auto;\n          border-top: 0;\n          border-bottom: 0;\n        }\n\n        .offcanvas-body {\n          display: flex;\n          flex-grow: 0;\n          padding: 0;\n          overflow-y: visible;\n        }\n      }\n    }\n  }\n}\n// scss-docs-end navbar-expand-loop\n\n// Navbar themes\n//\n// Styles for switching between navbars with light or dark background.\n\n// Dark links against a light background\n.navbar-light {\n  .navbar-brand {\n    color: $navbar-light-brand-color;\n\n    &:hover,\n    &:focus {\n      color: $navbar-light-brand-hover-color;\n    }\n  }\n\n  .navbar-nav {\n    .nav-link {\n      color: $navbar-light-color;\n\n      &:hover,\n      &:focus {\n        color: $navbar-light-hover-color;\n      }\n\n      &.disabled {\n        color: $navbar-light-disabled-color;\n      }\n    }\n\n    .show > .nav-link,\n    .nav-link.active {\n      color: $navbar-light-active-color;\n    }\n  }\n\n  .navbar-toggler {\n    color: $navbar-light-color;\n    border-color: $navbar-light-toggler-border-color;\n  }\n\n  .navbar-toggler-icon {\n    background-image: escape-svg($navbar-light-toggler-icon-bg);\n  }\n\n  .navbar-text {\n    color: $navbar-light-color;\n\n    a,\n    a:hover,\n    a:focus  {\n      color: $navbar-light-active-color;\n    }\n  }\n}\n\n// White links against a dark background\n.navbar-dark {\n  .navbar-brand {\n    color: $navbar-dark-brand-color;\n\n    &:hover,\n    &:focus {\n      color: $navbar-dark-brand-hover-color;\n    }\n  }\n\n  .navbar-nav {\n    .nav-link {\n      color: $navbar-dark-color;\n\n      &:hover,\n      &:focus {\n        color: $navbar-dark-hover-color;\n      }\n\n      &.disabled {\n        color: $navbar-dark-disabled-color;\n      }\n    }\n\n    .show > .nav-link,\n    .nav-link.active {\n      color: $navbar-dark-active-color;\n    }\n  }\n\n  .navbar-toggler {\n    color: $navbar-dark-color;\n    border-color: $navbar-dark-toggler-border-color;\n  }\n\n  .navbar-toggler-icon {\n    background-image: escape-svg($navbar-dark-toggler-icon-bg);\n  }\n\n  .navbar-text {\n    color: $navbar-dark-color;\n    a,\n    a:hover,\n    a:focus {\n      color: $navbar-dark-active-color;\n    }\n  }\n}\n","//\n// Base styles\n//\n\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\n  height: $card-height;\n  word-wrap: break-word;\n  background-color: $card-bg;\n  background-clip: border-box;\n  border: $card-border-width solid $card-border-color;\n  @include border-radius($card-border-radius);\n  @include box-shadow($card-box-shadow);\n\n  > hr {\n    margin-right: 0;\n    margin-left: 0;\n  }\n\n  > .list-group {\n    border-top: inherit;\n    border-bottom: inherit;\n\n    &:first-child {\n      border-top-width: 0;\n      @include border-top-radius($card-inner-border-radius);\n    }\n\n    &:last-child  {\n      border-bottom-width: 0;\n      @include border-bottom-radius($card-inner-border-radius);\n    }\n  }\n\n  // Due to specificity of the above selector (`.card > .list-group`), we must\n  // use a child selector here to prevent double borders.\n  > .card-header + .list-group,\n  > .list-group + .card-footer {\n    border-top: 0;\n  }\n}\n\n.card-body {\n  // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n  // as much space as possible, ensuring footers are aligned to the bottom.\n  flex: 1 1 auto;\n  padding: $card-spacer-y $card-spacer-x;\n  color: $card-color;\n}\n\n.card-title {\n  margin-bottom: $card-title-spacer-y;\n}\n\n.card-subtitle {\n  margin-top: -$card-title-spacer-y * .5;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link {\n  &:hover {\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n\n  + .card-link {\n    margin-left: $card-spacer-x;\n  }\n}\n\n//\n// Optional textual caps\n//\n\n.card-header {\n  padding: $card-cap-padding-y $card-cap-padding-x;\n  margin-bottom: 0; // Removes the default margin-bottom of <hN>\n  color: $card-cap-color;\n  background-color: $card-cap-bg;\n  border-bottom: $card-border-width solid $card-border-color;\n\n  &:first-child {\n    @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);\n  }\n}\n\n.card-footer {\n  padding: $card-cap-padding-y $card-cap-padding-x;\n  color: $card-cap-color;\n  background-color: $card-cap-bg;\n  border-top: $card-border-width solid $card-border-color;\n\n  &:last-child {\n    @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);\n  }\n}\n\n\n//\n// Header navs\n//\n\n.card-header-tabs {\n  margin-right: -$card-cap-padding-x * .5;\n  margin-bottom: -$card-cap-padding-y;\n  margin-left: -$card-cap-padding-x * .5;\n  border-bottom: 0;\n\n  @if $nav-tabs-link-active-bg != $card-bg {\n    .nav-link.active {\n      background-color: $card-bg;\n      border-bottom-color: $card-bg;\n    }\n  }\n}\n\n.card-header-pills {\n  margin-right: -$card-cap-padding-x * .5;\n  margin-left: -$card-cap-padding-x * .5;\n}\n\n// Card image\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: $card-img-overlay-padding;\n  @include border-radius($card-inner-border-radius);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n}\n\n.card-img,\n.card-img-top {\n  @include border-top-radius($card-inner-border-radius);\n}\n\n.card-img,\n.card-img-bottom {\n  @include border-bottom-radius($card-inner-border-radius);\n}\n\n\n//\n// Card groups\n//\n\n.card-group {\n  // The child selector allows nested `.card` within `.card-group`\n  // to display properly.\n  > .card {\n    margin-bottom: $card-group-margin;\n  }\n\n  @include media-breakpoint-up(sm) {\n    display: flex;\n    flex-flow: row wrap;\n    // The child selector allows nested `.card` within `.card-group`\n    // to display properly.\n    > .card {\n      // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n      flex: 1 0 0%;\n      margin-bottom: 0;\n\n      + .card {\n        margin-left: 0;\n        border-left: 0;\n      }\n\n      // Handle rounded corners\n      @if $enable-rounded {\n        &:not(:last-child) {\n          @include border-end-radius(0);\n\n          .card-img-top,\n          .card-header {\n            // stylelint-disable-next-line property-disallowed-list\n            border-top-right-radius: 0;\n          }\n          .card-img-bottom,\n          .card-footer {\n            // stylelint-disable-next-line property-disallowed-list\n            border-bottom-right-radius: 0;\n          }\n        }\n\n        &:not(:first-child) {\n          @include border-start-radius(0);\n\n          .card-img-top,\n          .card-header {\n            // stylelint-disable-next-line property-disallowed-list\n            border-top-left-radius: 0;\n          }\n          .card-img-bottom,\n          .card-footer {\n            // stylelint-disable-next-line property-disallowed-list\n            border-bottom-left-radius: 0;\n          }\n        }\n      }\n    }\n  }\n}\n","//\n// Base styles\n//\n\n.accordion-button {\n  position: relative;\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: $accordion-button-padding-y $accordion-button-padding-x;\n  @include font-size($font-size-base);\n  color: $accordion-button-color;\n  text-align: left; // Reset button style\n  background-color: $accordion-button-bg;\n  border: 0;\n  @include border-radius(0);\n  overflow-anchor: none;\n  @include transition($accordion-transition);\n\n  &:not(.collapsed) {\n    color: $accordion-button-active-color;\n    background-color: $accordion-button-active-bg;\n    box-shadow: inset 0 ($accordion-border-width * -1) 0 $accordion-border-color;\n\n    &::after {\n      background-image: escape-svg($accordion-button-active-icon);\n      transform: $accordion-icon-transform;\n    }\n  }\n\n  // Accordion icon\n  &::after {\n    flex-shrink: 0;\n    width: $accordion-icon-width;\n    height: $accordion-icon-width;\n    margin-left: auto;\n    content: \"\";\n    background-image: escape-svg($accordion-button-icon);\n    background-repeat: no-repeat;\n    background-size: $accordion-icon-width;\n    @include transition($accordion-icon-transition);\n  }\n\n  &:hover {\n    z-index: 2;\n  }\n\n  &:focus {\n    z-index: 3;\n    border-color: $accordion-button-focus-border-color;\n    outline: 0;\n    box-shadow: $accordion-button-focus-box-shadow;\n  }\n}\n\n.accordion-header {\n  margin-bottom: 0;\n}\n\n.accordion-item {\n  background-color: $accordion-bg;\n  border: $accordion-border-width solid $accordion-border-color;\n\n  &:first-of-type {\n    @include border-top-radius($accordion-border-radius);\n\n    .accordion-button {\n      @include border-top-radius($accordion-inner-border-radius);\n    }\n  }\n\n  &:not(:first-of-type) {\n    border-top: 0;\n  }\n\n  // Only set a border-radius on the last item if the accordion is collapsed\n  &:last-of-type {\n    @include border-bottom-radius($accordion-border-radius);\n\n    .accordion-button {\n      &.collapsed {\n        @include border-bottom-radius($accordion-inner-border-radius);\n      }\n    }\n\n    .accordion-collapse {\n      @include border-bottom-radius($accordion-border-radius);\n    }\n  }\n}\n\n.accordion-body {\n  padding: $accordion-body-padding-y $accordion-body-padding-x;\n}\n\n\n// Flush accordion items\n//\n// Remove borders and border-radius to keep accordion items edge-to-edge.\n\n.accordion-flush {\n  .accordion-collapse {\n    border-width: 0;\n  }\n\n  .accordion-item {\n    border-right: 0;\n    border-left: 0;\n    @include border-radius(0);\n\n    &:first-child { border-top: 0; }\n    &:last-child { border-bottom: 0; }\n\n    .accordion-button {\n      @include border-radius(0);\n    }\n  }\n}\n",".breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  padding: $breadcrumb-padding-y $breadcrumb-padding-x;\n  margin-bottom: $breadcrumb-margin-bottom;\n  @include font-size($breadcrumb-font-size);\n  list-style: none;\n  background-color: $breadcrumb-bg;\n  @include border-radius($breadcrumb-border-radius);\n}\n\n.breadcrumb-item {\n  // The separator between breadcrumbs (by default, a forward-slash: \"/\")\n  + .breadcrumb-item {\n    padding-left: $breadcrumb-item-padding-x;\n\n    &::before {\n      float: left; // Suppress inline spacings and underlining of the separator\n      padding-right: $breadcrumb-item-padding-x;\n      color: $breadcrumb-divider-color;\n      content: var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{\"/* rtl:\"} var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{\"*/\"};\n    }\n  }\n\n  &.active {\n    color: $breadcrumb-active-color;\n  }\n}\n",".pagination {\n  display: flex;\n  @include list-unstyled();\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  color: $pagination-color;\n  text-decoration: if($link-decoration == none, null, none);\n  background-color: $pagination-bg;\n  border: $pagination-border-width solid $pagination-border-color;\n  @include transition($pagination-transition);\n\n  &:hover {\n    z-index: 2;\n    color: $pagination-hover-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n    background-color: $pagination-hover-bg;\n    border-color: $pagination-hover-border-color;\n  }\n\n  &:focus {\n    z-index: 3;\n    color: $pagination-focus-color;\n    background-color: $pagination-focus-bg;\n    outline: $pagination-focus-outline;\n    box-shadow: $pagination-focus-box-shadow;\n  }\n}\n\n.page-item {\n  &:not(:first-child) .page-link {\n    margin-left: $pagination-margin-start;\n  }\n\n  &.active .page-link {\n    z-index: 3;\n    color: $pagination-active-color;\n    @include gradient-bg($pagination-active-bg);\n    border-color: $pagination-active-border-color;\n  }\n\n  &.disabled .page-link {\n    color: $pagination-disabled-color;\n    pointer-events: none;\n    background-color: $pagination-disabled-bg;\n    border-color: $pagination-disabled-border-color;\n  }\n}\n\n\n//\n// Sizing\n//\n@include pagination-size($pagination-padding-y, $pagination-padding-x, null, $pagination-border-radius);\n\n.pagination-lg {\n  @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $pagination-border-radius-lg);\n}\n\n.pagination-sm {\n  @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $pagination-border-radius-sm);\n}\n","// Pagination\n\n// scss-docs-start pagination-mixin\n@mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) {\n  .page-link {\n    padding: $padding-y $padding-x;\n    @include font-size($font-size);\n  }\n\n  .page-item {\n    @if $pagination-margin-start == (-$pagination-border-width) {\n      &:first-child {\n        .page-link {\n          @include border-start-radius($border-radius);\n        }\n      }\n\n      &:last-child {\n        .page-link {\n          @include border-end-radius($border-radius);\n        }\n      }\n    } @else {\n      //Add border-radius to all pageLinks in case they have left margin\n      .page-link {\n        @include border-radius($border-radius);\n      }\n    }\n  }\n}\n// scss-docs-end pagination-mixin\n","// Base class\n//\n// Requires one of the contextual, color modifier classes for `color` and\n// `background-color`.\n\n.badge {\n  display: inline-block;\n  padding: $badge-padding-y $badge-padding-x;\n  @include font-size($badge-font-size);\n  font-weight: $badge-font-weight;\n  line-height: 1;\n  color: $badge-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  @include border-radius($badge-border-radius);\n  @include gradient-bg();\n\n  // Empty badges collapse automatically\n  &:empty {\n    display: none;\n  }\n}\n\n// Quick fix for badges in buttons\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n","//\n// Base styles\n//\n\n.alert {\n  position: relative;\n  padding: $alert-padding-y $alert-padding-x;\n  margin-bottom: $alert-margin-bottom;\n  border: $alert-border-width solid transparent;\n  @include border-radius($alert-border-radius);\n}\n\n// Headings for larger alerts\n.alert-heading {\n  // Specified to prevent conflicts of changing $headings-color\n  color: inherit;\n}\n\n// Provide class for links that match alerts\n.alert-link {\n  font-weight: $alert-link-font-weight;\n}\n\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissible {\n  padding-right: $alert-dismissible-padding-r;\n\n  // Adjust close link position\n  .btn-close {\n    position: absolute;\n    top: 0;\n    right: 0;\n    z-index: $stretched-link-z-index + 1;\n    padding: $alert-padding-y * 1.25 $alert-padding-x;\n  }\n}\n\n\n// scss-docs-start alert-modifiers\n// Generate contextual modifier classes for colorizing the alert.\n\n@each $state, $value in $theme-colors {\n  $alert-background: shift-color($value, $alert-bg-scale);\n  $alert-border: shift-color($value, $alert-border-scale);\n  $alert-color: shift-color($value, $alert-color-scale);\n  @if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) {\n    $alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale));\n  }\n  .alert-#{$state} {\n    @include alert-variant($alert-background, $alert-border, $alert-color);\n  }\n}\n// scss-docs-end alert-modifiers\n","// scss-docs-start alert-variant-mixin\n@mixin alert-variant($background, $border, $color) {\n  color: $color;\n  @include gradient-bg($background);\n  border-color: $border;\n\n  .alert-link {\n    color: shade-color($color, 20%);\n  }\n}\n// scss-docs-end alert-variant-mixin\n","// Disable animation if transitions are disabled\n\n// scss-docs-start progress-keyframes\n@if $enable-transitions {\n  @keyframes progress-bar-stripes {\n    0% { background-position-x: $progress-height; }\n  }\n}\n// scss-docs-end progress-keyframes\n\n.progress {\n  display: flex;\n  height: $progress-height;\n  overflow: hidden; // force rounded corners by cropping it\n  @include font-size($progress-font-size);\n  background-color: $progress-bg;\n  @include border-radius($progress-border-radius);\n  @include box-shadow($progress-box-shadow);\n}\n\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  color: $progress-bar-color;\n  text-align: center;\n  white-space: nowrap;\n  background-color: $progress-bar-bg;\n  @include transition($progress-bar-transition);\n}\n\n.progress-bar-striped {\n  @include gradient-striped();\n  background-size: $progress-height $progress-height;\n}\n\n@if $enable-transitions {\n  .progress-bar-animated {\n    animation: $progress-bar-animation-timing progress-bar-stripes;\n\n    @if $enable-reduced-motion {\n      @media (prefers-reduced-motion: reduce) {\n        animation: none;\n      }\n    }\n  }\n}\n","// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n  display: flex;\n  flex-direction: column;\n\n  // No need to set list-style: none; since .list-group-item is block level\n  padding-left: 0; // reset padding because ul and ol\n  margin-bottom: 0;\n  @include border-radius($list-group-border-radius);\n}\n\n.list-group-numbered {\n  list-style-type: none;\n  counter-reset: section;\n\n  > li::before {\n    // Increments only this instance of the section counter\n    content: counters(section, \".\") \". \";\n    counter-increment: section;\n  }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive\n// list items. Includes an extra `.active` modifier class for selected items.\n\n.list-group-item-action {\n  width: 100%; // For `<button>`s (anchors become 100% by default though)\n  color: $list-group-action-color;\n  text-align: inherit; // For `<button>`s (anchors inherit)\n\n  // Hover state\n  &:hover,\n  &:focus {\n    z-index: 1; // Place hover/focus items above their siblings for proper border styling\n    color: $list-group-action-hover-color;\n    text-decoration: none;\n    background-color: $list-group-hover-bg;\n  }\n\n  &:active {\n    color: $list-group-action-active-color;\n    background-color: $list-group-action-active-bg;\n  }\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: $list-group-item-padding-y $list-group-item-padding-x;\n  color: $list-group-color;\n  text-decoration: if($link-decoration == none, null, none);\n  background-color: $list-group-bg;\n  border: $list-group-border-width solid $list-group-border-color;\n\n  &:first-child {\n    @include border-top-radius(inherit);\n  }\n\n  &:last-child {\n    @include border-bottom-radius(inherit);\n  }\n\n  &.disabled,\n  &:disabled {\n    color: $list-group-disabled-color;\n    pointer-events: none;\n    background-color: $list-group-disabled-bg;\n  }\n\n  // Include both here for `<a>`s and `<button>`s\n  &.active {\n    z-index: 2; // Place active items above their siblings for proper border styling\n    color: $list-group-active-color;\n    background-color: $list-group-active-bg;\n    border-color: $list-group-active-border-color;\n  }\n\n  & + & {\n    border-top-width: 0;\n\n    &.active {\n      margin-top: -$list-group-border-width;\n      border-top-width: $list-group-border-width;\n    }\n  }\n}\n\n\n// Horizontal\n//\n// Change the layout of list group items from vertical (default) to horizontal.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .list-group-horizontal#{$infix} {\n      flex-direction: row;\n\n      > .list-group-item {\n        &:first-child {\n          @include border-bottom-start-radius($list-group-border-radius);\n          @include border-top-end-radius(0);\n        }\n\n        &:last-child {\n          @include border-top-end-radius($list-group-border-radius);\n          @include border-bottom-start-radius(0);\n        }\n\n        &.active {\n          margin-top: 0;\n        }\n\n        + .list-group-item {\n          border-top-width: $list-group-border-width;\n          border-left-width: 0;\n\n          &.active {\n            margin-left: -$list-group-border-width;\n            border-left-width: $list-group-border-width;\n          }\n        }\n      }\n    }\n  }\n}\n\n\n// Flush list items\n//\n// Remove borders and border-radius to keep list group items edge-to-edge. Most\n// useful within other components (e.g., cards).\n\n.list-group-flush {\n  @include border-radius(0);\n\n  > .list-group-item {\n    border-width: 0 0 $list-group-border-width;\n\n    &:last-child {\n      border-bottom-width: 0;\n    }\n  }\n}\n\n\n// scss-docs-start list-group-modifiers\n// List group contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n@each $state, $value in $theme-colors {\n  $list-group-variant-bg: shift-color($value, $list-group-item-bg-scale);\n  $list-group-variant-color: shift-color($value, $list-group-item-color-scale);\n  @if (contrast-ratio($list-group-variant-bg, $list-group-variant-color) < $min-contrast-ratio) {\n    $list-group-variant-color: mix($value, color-contrast($list-group-variant-bg), abs($list-group-item-color-scale));\n  }\n\n  @include list-group-item-variant($state, $list-group-variant-bg, $list-group-variant-color);\n}\n// scss-docs-end list-group-modifiers\n","// List Groups\n\n// scss-docs-start list-group-mixin\n@mixin list-group-item-variant($state, $background, $color) {\n  .list-group-item-#{$state} {\n    color: $color;\n    background-color: $background;\n\n    &.list-group-item-action {\n      &:hover,\n      &:focus {\n        color: $color;\n        background-color: shade-color($background, 10%);\n      }\n\n      &.active {\n        color: $white;\n        background-color: $color;\n        border-color: $color;\n      }\n    }\n  }\n}\n// scss-docs-end list-group-mixin\n","// transparent background and border properties included for button version.\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n.btn-close {\n  box-sizing: content-box;\n  width: $btn-close-width;\n  height: $btn-close-height;\n  padding: $btn-close-padding-y $btn-close-padding-x;\n  color: $btn-close-color;\n  background: transparent escape-svg($btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements\n  border: 0; // for button elements\n  @include border-radius();\n  opacity: $btn-close-opacity;\n\n  // Override <a>'s hover style\n  &:hover {\n    color: $btn-close-color;\n    text-decoration: none;\n    opacity: $btn-close-hover-opacity;\n  }\n\n  &:focus {\n    outline: 0;\n    box-shadow: $btn-close-focus-shadow;\n    opacity: $btn-close-focus-opacity;\n  }\n\n  &:disabled,\n  &.disabled {\n    pointer-events: none;\n    user-select: none;\n    opacity: $btn-close-disabled-opacity;\n  }\n}\n\n.btn-close-white {\n  filter: $btn-close-white-filter;\n}\n",".toast {\n  width: $toast-max-width;\n  max-width: 100%;\n  @include font-size($toast-font-size);\n  color: $toast-color;\n  pointer-events: auto;\n  background-color: $toast-background-color;\n  background-clip: padding-box;\n  border: $toast-border-width solid $toast-border-color;\n  box-shadow: $toast-box-shadow;\n  @include border-radius($toast-border-radius);\n\n  &.showing {\n    opacity: 0;\n  }\n\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.toast-container {\n  width: max-content;\n  max-width: 100%;\n  pointer-events: none;\n\n  > :not(:last-child) {\n    margin-bottom: $toast-spacing;\n  }\n}\n\n.toast-header {\n  display: flex;\n  align-items: center;\n  padding: $toast-padding-y $toast-padding-x;\n  color: $toast-header-color;\n  background-color: $toast-header-background-color;\n  background-clip: padding-box;\n  border-bottom: $toast-border-width solid $toast-header-border-color;\n  @include border-top-radius(subtract($toast-border-radius, $toast-border-width));\n\n  .btn-close {\n    margin-right: $toast-padding-x * -.5;\n    margin-left: $toast-padding-x;\n  }\n}\n\n.toast-body {\n  padding: $toast-padding-x; // apply to both vertical and horizontal\n  word-wrap: break-word;\n}\n","// .modal-open      - body class for killing the scroll\n// .modal           - container to scroll within\n// .modal-dialog    - positioning shell for the actual modal\n// .modal-content   - actual modal w/ bg and corners and stuff\n\n\n// Container that the modal scrolls within\n.modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: $zindex-modal;\n  display: none;\n  width: 100%;\n  height: 100%;\n  overflow-x: hidden;\n  overflow-y: auto;\n  // Prevent Chrome on Windows from adding a focus outline. For details, see\n  // https://github.com/twbs/bootstrap/pull/10951.\n  outline: 0;\n  // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a\n  // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342\n  // See also https://github.com/twbs/bootstrap/issues/17695\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: $modal-dialog-margin;\n  // allow clicks to pass through for custom click handling to close modal\n  pointer-events: none;\n\n  // When fading in the modal, animate it to slide down\n  .modal.fade & {\n    @include transition($modal-transition);\n    transform: $modal-fade-transform;\n  }\n  .modal.show & {\n    transform: $modal-show-transform;\n  }\n\n  // When trying to close, animate focus to scale\n  .modal.modal-static & {\n    transform: $modal-scale-transform;\n  }\n}\n\n.modal-dialog-scrollable {\n  height: subtract(100%, $modal-dialog-margin * 2);\n\n  .modal-content {\n    max-height: 100%;\n    overflow: hidden;\n  }\n\n  .modal-body {\n    overflow-y: auto;\n  }\n}\n\n.modal-dialog-centered {\n  display: flex;\n  align-items: center;\n  min-height: subtract(100%, $modal-dialog-margin * 2);\n}\n\n// Actual modal\n.modal-content {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`\n  // counteract the pointer-events: none; in the .modal-dialog\n  color: $modal-content-color;\n  pointer-events: auto;\n  background-color: $modal-content-bg;\n  background-clip: padding-box;\n  border: $modal-content-border-width solid $modal-content-border-color;\n  @include border-radius($modal-content-border-radius);\n  @include box-shadow($modal-content-box-shadow-xs);\n  // Remove focus outline from opened modal\n  outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n  @include overlay-backdrop($zindex-modal-backdrop, $modal-backdrop-bg, $modal-backdrop-opacity);\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends\n  padding: $modal-header-padding;\n  border-bottom: $modal-header-border-width solid $modal-header-border-color;\n  @include border-top-radius($modal-content-inner-border-radius);\n\n  .btn-close {\n    padding: ($modal-header-padding-y * .5) ($modal-header-padding-x * .5);\n    margin: ($modal-header-padding-y * -.5) ($modal-header-padding-x * -.5) ($modal-header-padding-y * -.5) auto;\n  }\n}\n\n// Title text within header\n.modal-title {\n  margin-bottom: 0;\n  line-height: $modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n  position: relative;\n  // Enable `flex-grow: 1` so that the body take up as much space as possible\n  // when there should be a fixed height on `.modal-dialog`.\n  flex: 1 1 auto;\n  padding: $modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n  display: flex;\n  flex-wrap: wrap;\n  flex-shrink: 0;\n  align-items: center; // vertically center\n  justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items\n  padding: $modal-inner-padding - $modal-footer-margin-between * .5;\n  border-top: $modal-footer-border-width solid $modal-footer-border-color;\n  @include border-bottom-radius($modal-content-inner-border-radius);\n\n  // Place margin between footer elements\n  // This solution is far from ideal because of the universal selector usage,\n  // but is needed to fix https://github.com/twbs/bootstrap/issues/24800\n  > * {\n    margin: $modal-footer-margin-between * .5;\n  }\n}\n\n// Scale up the modal\n@include media-breakpoint-up(sm) {\n  // Automatically set modal's width for larger viewports\n  .modal-dialog {\n    max-width: $modal-md;\n    margin: $modal-dialog-margin-y-sm-up auto;\n  }\n\n  .modal-dialog-scrollable {\n    height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);\n  }\n\n  .modal-dialog-centered {\n    min-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);\n  }\n\n  .modal-content {\n    @include box-shadow($modal-content-box-shadow-sm-up);\n  }\n\n  .modal-sm { max-width: $modal-sm; }\n}\n\n@include media-breakpoint-up(lg) {\n  .modal-lg,\n  .modal-xl {\n    max-width: $modal-lg;\n  }\n}\n\n@include media-breakpoint-up(xl) {\n  .modal-xl { max-width: $modal-xl; }\n}\n\n// scss-docs-start modal-fullscreen-loop\n@each $breakpoint in map-keys($grid-breakpoints) {\n  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n  $postfix: if($infix != \"\", $infix + \"-down\", \"\");\n\n  @include media-breakpoint-down($breakpoint) {\n    .modal-fullscreen#{$postfix} {\n      width: 100vw;\n      max-width: none;\n      height: 100%;\n      margin: 0;\n\n      .modal-content {\n        height: 100%;\n        border: 0;\n        @include border-radius(0);\n      }\n\n      .modal-header {\n        @include border-radius(0);\n      }\n\n      .modal-body {\n        overflow-y: auto;\n      }\n\n      .modal-footer {\n        @include border-radius(0);\n      }\n    }\n  }\n}\n// scss-docs-end modal-fullscreen-loop\n","// Shared between modals and offcanvases\n@mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity) {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: $zindex;\n  width: 100vw;\n  height: 100vh;\n  background-color: $backdrop-bg;\n\n  // Fade for backdrop\n  &.fade { opacity: 0; }\n  &.show { opacity: $backdrop-opacity; }\n}\n","// Base class\n.tooltip {\n  position: absolute;\n  z-index: $zindex-tooltip;\n  display: block;\n  margin: $tooltip-margin;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  @include reset-text();\n  @include font-size($tooltip-font-size);\n  // Allow breaking very long words so they don't overflow the tooltip's bounds\n  word-wrap: break-word;\n  opacity: 0;\n\n  &.show { opacity: $tooltip-opacity; }\n\n  .tooltip-arrow {\n    position: absolute;\n    display: block;\n    width: $tooltip-arrow-width;\n    height: $tooltip-arrow-height;\n\n    &::before {\n      position: absolute;\n      content: \"\";\n      border-color: transparent;\n      border-style: solid;\n    }\n  }\n}\n\n.bs-tooltip-top {\n  padding: $tooltip-arrow-height 0;\n\n  .tooltip-arrow {\n    bottom: 0;\n\n    &::before {\n      top: -1px;\n      border-width: $tooltip-arrow-height ($tooltip-arrow-width * .5) 0;\n      border-top-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-end {\n  padding: 0 $tooltip-arrow-height;\n\n  .tooltip-arrow {\n    left: 0;\n    width: $tooltip-arrow-height;\n    height: $tooltip-arrow-width;\n\n    &::before {\n      right: -1px;\n      border-width: ($tooltip-arrow-width * .5) $tooltip-arrow-height ($tooltip-arrow-width * .5) 0;\n      border-right-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-bottom {\n  padding: $tooltip-arrow-height 0;\n\n  .tooltip-arrow {\n    top: 0;\n\n    &::before {\n      bottom: -1px;\n      border-width: 0 ($tooltip-arrow-width * .5) $tooltip-arrow-height;\n      border-bottom-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-start {\n  padding: 0 $tooltip-arrow-height;\n\n  .tooltip-arrow {\n    right: 0;\n    width: $tooltip-arrow-height;\n    height: $tooltip-arrow-width;\n\n    &::before {\n      left: -1px;\n      border-width: ($tooltip-arrow-width * .5) 0 ($tooltip-arrow-width * .5) $tooltip-arrow-height;\n      border-left-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-auto {\n  &[data-popper-placement^=\"top\"] {\n    @extend .bs-tooltip-top;\n  }\n  &[data-popper-placement^=\"right\"] {\n    @extend .bs-tooltip-end;\n  }\n  &[data-popper-placement^=\"bottom\"] {\n    @extend .bs-tooltip-bottom;\n  }\n  &[data-popper-placement^=\"left\"] {\n    @extend .bs-tooltip-start;\n  }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n  max-width: $tooltip-max-width;\n  padding: $tooltip-padding-y $tooltip-padding-x;\n  color: $tooltip-color;\n  text-align: center;\n  background-color: $tooltip-bg;\n  @include border-radius($tooltip-border-radius);\n}\n","@mixin reset-text {\n  font-family: $font-family-base;\n  // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.\n  font-style: normal;\n  font-weight: $font-weight-normal;\n  line-height: $line-height-base;\n  text-align: left; // Fallback for where `start` is not supported\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n}\n",".popover {\n  position: absolute;\n  top: 0;\n  left: 0 #{\"/* rtl:ignore */\"};\n  z-index: $zindex-popover;\n  display: block;\n  max-width: $popover-max-width;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  @include reset-text();\n  @include font-size($popover-font-size);\n  // Allow breaking very long words so they don't overflow the popover's bounds\n  word-wrap: break-word;\n  background-color: $popover-bg;\n  background-clip: padding-box;\n  border: $popover-border-width solid $popover-border-color;\n  @include border-radius($popover-border-radius);\n  @include box-shadow($popover-box-shadow);\n\n  .popover-arrow {\n    position: absolute;\n    display: block;\n    width: $popover-arrow-width;\n    height: $popover-arrow-height;\n\n    &::before,\n    &::after {\n      position: absolute;\n      display: block;\n      content: \"\";\n      border-color: transparent;\n      border-style: solid;\n    }\n  }\n}\n\n.bs-popover-top {\n  > .popover-arrow {\n    bottom: subtract(-$popover-arrow-height, $popover-border-width);\n\n    &::before {\n      bottom: 0;\n      border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-top-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      bottom: $popover-border-width;\n      border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-top-color: $popover-arrow-color;\n    }\n  }\n}\n\n.bs-popover-end {\n  > .popover-arrow {\n    left: subtract(-$popover-arrow-height, $popover-border-width);\n    width: $popover-arrow-height;\n    height: $popover-arrow-width;\n\n    &::before {\n      left: 0;\n      border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-right-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      left: $popover-border-width;\n      border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-right-color: $popover-arrow-color;\n    }\n  }\n}\n\n.bs-popover-bottom {\n  > .popover-arrow {\n    top: subtract(-$popover-arrow-height, $popover-border-width);\n\n    &::before {\n      top: 0;\n      border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);\n      border-bottom-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      top: $popover-border-width;\n      border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);\n      border-bottom-color: $popover-arrow-color;\n    }\n  }\n\n  // This will remove the popover-header's border just below the arrow\n  .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: $popover-arrow-width;\n    margin-left: -$popover-arrow-width * .5;\n    content: \"\";\n    border-bottom: $popover-border-width solid $popover-header-bg;\n  }\n}\n\n.bs-popover-start {\n  > .popover-arrow {\n    right: subtract(-$popover-arrow-height, $popover-border-width);\n    width: $popover-arrow-height;\n    height: $popover-arrow-width;\n\n    &::before {\n      right: 0;\n      border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;\n      border-left-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      right: $popover-border-width;\n      border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;\n      border-left-color: $popover-arrow-color;\n    }\n  }\n}\n\n.bs-popover-auto {\n  &[data-popper-placement^=\"top\"] {\n    @extend .bs-popover-top;\n  }\n  &[data-popper-placement^=\"right\"] {\n    @extend .bs-popover-end;\n  }\n  &[data-popper-placement^=\"bottom\"] {\n    @extend .bs-popover-bottom;\n  }\n  &[data-popper-placement^=\"left\"] {\n    @extend .bs-popover-start;\n  }\n}\n\n// Offset the popover to account for the popover arrow\n.popover-header {\n  padding: $popover-header-padding-y $popover-header-padding-x;\n  margin-bottom: 0; // Reset the default from Reboot\n  @include font-size($font-size-base);\n  color: $popover-header-color;\n  background-color: $popover-header-bg;\n  border-bottom: $popover-border-width solid $popover-border-color;\n  @include border-top-radius($popover-inner-border-radius);\n\n  &:empty {\n    display: none;\n  }\n}\n\n.popover-body {\n  padding: $popover-body-padding-y $popover-body-padding-x;\n  color: $popover-body-color;\n}\n","// Notes on the classes:\n//\n// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)\n//    even when their scroll action started on a carousel, but for compatibility (with Firefox)\n//    we're preventing all actions instead\n// 2. The .carousel-item-start and .carousel-item-end is used to indicate where\n//    the active slide is heading.\n// 3. .active.carousel-item is the current slide.\n// 4. .active.carousel-item-start and .active.carousel-item-end is the current\n//    slide in its in-transition state. Only one of these occurs at a time.\n// 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end\n//    is the upcoming slide in transition.\n\n.carousel {\n  position: relative;\n}\n\n.carousel.pointer-event {\n  touch-action: pan-y;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n  @include clearfix();\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  float: left;\n  width: 100%;\n  margin-right: -100%;\n  backface-visibility: hidden;\n  @include transition($carousel-transition);\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n/* rtl:begin:ignore */\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n  transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n  transform: translateX(-100%);\n}\n\n/* rtl:end:ignore */\n\n\n//\n// Alternate transitions\n//\n\n.carousel-fade {\n  .carousel-item {\n    opacity: 0;\n    transition-property: opacity;\n    transform: none;\n  }\n\n  .carousel-item.active,\n  .carousel-item-next.carousel-item-start,\n  .carousel-item-prev.carousel-item-end {\n    z-index: 1;\n    opacity: 1;\n  }\n\n  .active.carousel-item-start,\n  .active.carousel-item-end {\n    z-index: 0;\n    opacity: 0;\n    @include transition(opacity 0s $carousel-transition-duration);\n  }\n}\n\n\n//\n// Left/right controls for nav\n//\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n  // Use flex for alignment (1-3)\n  display: flex; // 1. allow flex styles\n  align-items: center; // 2. vertically center contents\n  justify-content: center; // 3. horizontally center contents\n  width: $carousel-control-width;\n  padding: 0;\n  color: $carousel-control-color;\n  text-align: center;\n  background: none;\n  border: 0;\n  opacity: $carousel-control-opacity;\n  @include transition($carousel-control-transition);\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    color: $carousel-control-color;\n    text-decoration: none;\n    outline: 0;\n    opacity: $carousel-control-hover-opacity;\n  }\n}\n.carousel-control-prev {\n  left: 0;\n  background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null);\n}\n.carousel-control-next {\n  right: 0;\n  background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null);\n}\n\n// Icons for within\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: $carousel-control-icon-width;\n  height: $carousel-control-icon-width;\n  background-repeat: no-repeat;\n  background-position: 50%;\n  background-size: 100% 100%;\n}\n\n/* rtl:options: {\n  \"autoRename\": true,\n  \"stringMap\":[ {\n    \"name\"    : \"prev-next\",\n    \"search\"  : \"prev\",\n    \"replace\" : \"next\"\n  } ]\n} */\n.carousel-control-prev-icon {\n  background-image: escape-svg($carousel-control-prev-icon-bg);\n}\n.carousel-control-next-icon {\n  background-image: escape-svg($carousel-control-next-icon-bg);\n}\n\n// Optional indicator pips/controls\n//\n// Add a container (such as a list) with the following class and add an item (ideally a focusable control,\n// like a button) with data-bs-target for each slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 2;\n  display: flex;\n  justify-content: center;\n  padding: 0;\n  // Use the .carousel-control's width as margin so we don't overlay those\n  margin-right: $carousel-control-width;\n  margin-bottom: 1rem;\n  margin-left: $carousel-control-width;\n  list-style: none;\n\n  [data-bs-target] {\n    box-sizing: content-box;\n    flex: 0 1 auto;\n    width: $carousel-indicator-width;\n    height: $carousel-indicator-height;\n    padding: 0;\n    margin-right: $carousel-indicator-spacer;\n    margin-left: $carousel-indicator-spacer;\n    text-indent: -999px;\n    cursor: pointer;\n    background-color: $carousel-indicator-active-bg;\n    background-clip: padding-box;\n    border: 0;\n    // Use transparent borders to increase the hit area by 10px on top and bottom.\n    border-top: $carousel-indicator-hit-area-height solid transparent;\n    border-bottom: $carousel-indicator-hit-area-height solid transparent;\n    opacity: $carousel-indicator-opacity;\n    @include transition($carousel-indicator-transition);\n  }\n\n  .active {\n    opacity: $carousel-indicator-active-opacity;\n  }\n}\n\n\n// Optional captions\n//\n//\n\n.carousel-caption {\n  position: absolute;\n  right: (100% - $carousel-caption-width) * .5;\n  bottom: $carousel-caption-spacer;\n  left: (100% - $carousel-caption-width) * .5;\n  padding-top: $carousel-caption-padding-y;\n  padding-bottom: $carousel-caption-padding-y;\n  color: $carousel-caption-color;\n  text-align: center;\n}\n\n// Dark mode carousel\n\n.carousel-dark {\n  .carousel-control-prev-icon,\n  .carousel-control-next-icon {\n    filter: $carousel-dark-control-icon-filter;\n  }\n\n  .carousel-indicators [data-bs-target] {\n    background-color: $carousel-dark-indicator-active-bg;\n  }\n\n  .carousel-caption {\n    color: $carousel-dark-caption-color;\n  }\n}\n","// scss-docs-start clearfix\n@mixin clearfix() {\n  &::after {\n    display: block;\n    clear: both;\n    content: \"\";\n  }\n}\n// scss-docs-end clearfix\n","//\n// Rotating border\n//\n\n// scss-docs-start spinner-border-keyframes\n@keyframes spinner-border {\n  to { transform: rotate(360deg) #{\"/* rtl:ignore */\"}; }\n}\n// scss-docs-end spinner-border-keyframes\n\n.spinner-border {\n  display: inline-block;\n  width: $spinner-width;\n  height: $spinner-height;\n  vertical-align: $spinner-vertical-align;\n  border: $spinner-border-width solid currentColor;\n  border-right-color: transparent;\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 50%;\n  animation: $spinner-animation-speed linear infinite spinner-border;\n}\n\n.spinner-border-sm {\n  width: $spinner-width-sm;\n  height: $spinner-height-sm;\n  border-width: $spinner-border-width-sm;\n}\n\n//\n// Growing circle\n//\n\n// scss-docs-start spinner-grow-keyframes\n@keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n// scss-docs-end spinner-grow-keyframes\n\n.spinner-grow {\n  display: inline-block;\n  width: $spinner-width;\n  height: $spinner-height;\n  vertical-align: $spinner-vertical-align;\n  background-color: currentColor;\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 50%;\n  opacity: 0;\n  animation: $spinner-animation-speed linear infinite spinner-grow;\n}\n\n.spinner-grow-sm {\n  width: $spinner-width-sm;\n  height: $spinner-height-sm;\n}\n\n@if $enable-reduced-motion {\n  @media (prefers-reduced-motion: reduce) {\n    .spinner-border,\n    .spinner-grow {\n      animation-duration: $spinner-animation-speed * 2;\n    }\n  }\n}\n",".offcanvas {\n  position: fixed;\n  bottom: 0;\n  z-index: $zindex-offcanvas;\n  display: flex;\n  flex-direction: column;\n  max-width: 100%;\n  color: $offcanvas-color;\n  visibility: hidden;\n  background-color: $offcanvas-bg-color;\n  background-clip: padding-box;\n  outline: 0;\n  @include box-shadow($offcanvas-box-shadow);\n  @include transition(transform $offcanvas-transition-duration ease-in-out);\n}\n\n.offcanvas-backdrop {\n  @include overlay-backdrop($zindex-offcanvas-backdrop, $offcanvas-backdrop-bg, $offcanvas-backdrop-opacity);\n}\n\n.offcanvas-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: $offcanvas-padding-y $offcanvas-padding-x;\n\n  .btn-close {\n    padding: ($offcanvas-padding-y * .5) ($offcanvas-padding-x * .5);\n    margin-top: $offcanvas-padding-y * -.5;\n    margin-right: $offcanvas-padding-x * -.5;\n    margin-bottom: $offcanvas-padding-y * -.5;\n  }\n}\n\n.offcanvas-title {\n  margin-bottom: 0;\n  line-height: $offcanvas-title-line-height;\n}\n\n.offcanvas-body {\n  flex-grow: 1;\n  padding: $offcanvas-padding-y $offcanvas-padding-x;\n  overflow-y: auto;\n}\n\n.offcanvas-start {\n  top: 0;\n  left: 0;\n  width: $offcanvas-horizontal-width;\n  border-right: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateX(-100%);\n}\n\n.offcanvas-end {\n  top: 0;\n  right: 0;\n  width: $offcanvas-horizontal-width;\n  border-left: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateX(100%);\n}\n\n.offcanvas-top {\n  top: 0;\n  right: 0;\n  left: 0;\n  height: $offcanvas-vertical-height;\n  max-height: 100%;\n  border-bottom: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateY(-100%);\n}\n\n.offcanvas-bottom {\n  right: 0;\n  left: 0;\n  height: $offcanvas-vertical-height;\n  max-height: 100%;\n  border-top: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateY(100%);\n}\n\n.offcanvas.show {\n  transform: none;\n}\n",".placeholder {\n  display: inline-block;\n  min-height: 1em;\n  vertical-align: middle;\n  cursor: wait;\n  background-color: currentColor;\n  opacity: $placeholder-opacity-max;\n\n  &.btn::before {\n    display: inline-block;\n    content: \"\";\n  }\n}\n\n// Sizing\n.placeholder-xs {\n  min-height: .6em;\n}\n\n.placeholder-sm {\n  min-height: .8em;\n}\n\n.placeholder-lg {\n  min-height: 1.2em;\n}\n\n// Animation\n.placeholder-glow {\n  .placeholder {\n    animation: placeholder-glow 2s ease-in-out infinite;\n  }\n}\n\n@keyframes placeholder-glow {\n  50% {\n    opacity: $placeholder-opacity-min;\n  }\n}\n\n.placeholder-wave {\n  mask-image: linear-gradient(130deg, $black 55%, rgba(0, 0, 0, (1 - $placeholder-opacity-min)) 75%, $black 95%);\n  mask-size: 200% 100%;\n  animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n  100% {\n    mask-position: -200% 0%;\n  }\n}\n","@each $color, $value in $theme-colors {\n  .link-#{$color} {\n    color: $value;\n\n    @if $link-shade-percentage != 0 {\n      &:hover,\n      &:focus {\n        color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));\n      }\n    }\n  }\n}\n","// Credit: Nicolas Gallagher and SUIT CSS.\n\n.ratio {\n  position: relative;\n  width: 100%;\n\n  &::before {\n    display: block;\n    padding-top: var(--#{$variable-prefix}aspect-ratio);\n    content: \"\";\n  }\n\n  > * {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n  }\n}\n\n@each $key, $ratio in $aspect-ratios {\n  .ratio-#{$key} {\n    --#{$variable-prefix}aspect-ratio: #{$ratio};\n  }\n}\n","// Shorthand\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n// Responsive sticky top\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .sticky#{$infix}-top {\n      position: sticky;\n      top: 0;\n      z-index: $zindex-sticky;\n    }\n  }\n}\n","// scss-docs-start stacks\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n// scss-docs-end stacks\n","//\n// Visually hidden\n//\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  @include visually-hidden();\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","//\n// Stretched link\n//\n\n.stretched-link {\n  &::#{$stretched-link-pseudo-element} {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: $stretched-link-z-index;\n    content: \"\";\n  }\n}\n","//\n// Text truncation\n//\n\n.text-truncate {\n  @include text-truncate();\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n",".vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: $hr-opacity;\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n  $values: map-get($utility, values);\n\n  // If the values are a list or string, convert it into a map\n  @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n    $values: zip($values, $values);\n  }\n\n  @each $key, $value in $values {\n    $properties: map-get($utility, property);\n\n    // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n    @if type-of($properties) == \"string\" {\n      $properties: append((), $properties);\n    }\n\n    // Use custom class if present\n    $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n    $property-class: if($property-class == null, \"\", $property-class);\n\n    // State params to generate pseudo-classes\n    $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n    $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (eg. with shadow class)\n    $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n    @if map-get($utility, rfs) {\n      // Inside the media query\n      @if $is-rfs-media-query {\n        $val: rfs-value($value);\n\n        // Do not render anything if fluid and non fluid values are the same\n        $value: if($val == rfs-fluid-value($value), null, $val);\n      }\n      @else {\n        $value: rfs-fluid-value($value);\n      }\n    }\n\n    $is-css-var: map-get($utility, css-var);\n    $is-local-vars: map-get($utility, local-vars);\n    $is-rtl: map-get($utility, rtl);\n\n    @if $value != null {\n      @if $is-rtl == false {\n        /* rtl:begin:remove */\n      }\n\n      @if $is-css-var {\n        .#{$property-class + $infix + $property-class-modifier} {\n          --#{$variable-prefix}#{$property-class}: #{$value};\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            --#{$variable-prefix}#{$property-class}: #{$value};\n          }\n        }\n      } @else {\n        .#{$property-class + $infix + $property-class-modifier} {\n          @each $property in $properties {\n            @if $is-local-vars {\n              @each $local-var, $value in $is-local-vars {\n                --#{$variable-prefix}#{$local-var}: #{$value};\n              }\n            }\n            #{$property}: $value if($enable-important-utilities, !important, null);\n          }\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            @each $property in $properties {\n              #{$property}: $value if($enable-important-utilities, !important, null);\n            }\n          }\n        }\n      }\n\n      @if $is-rtl == false {\n        /* rtl:end:remove */\n      }\n    }\n  }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n  // Generate media query if needed\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    // Loop over each utility property\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Only proceed if responsive media queries are enabled or if it's the base media query\n      @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n        @include generate-utility($utility, $infix);\n      }\n    }\n  }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix, true);\n        }\n      }\n    }\n  }\n}\n\n\n// Print utilities\n@media print {\n  @each $key, $utility in $utilities {\n    // The utility can be disabled with `false`, thus check if the utility is a map first\n    // Then check if the utility needs print styles\n    @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n      @include generate-utility($utility, \"-print\");\n    }\n  }\n}\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css
new file mode 100644
index 0000000..9f76829
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css
@@ -0,0 +1,7 @@
+@charset "UTF-8";/*!
+ * Bootstrap v5.1.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-rgb:33,37,41;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-right:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-right:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:right}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:right;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:right}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}[type=email],[type=number],[type=tel],[type=url]{direction:ltr}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-right:0;list-style:none}.list-inline{padding-right:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-left:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"鈥斅�"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-left:var(--bs-gutter-x,.75rem);padding-right:var(--bs-gutter-x,.75rem);margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-left:calc(var(--bs-gutter-x) * -.5);margin-right:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-right:8.33333333%}.offset-2{margin-right:16.66666667%}.offset-3{margin-right:25%}.offset-4{margin-right:33.33333333%}.offset-5{margin-right:41.66666667%}.offset-6{margin-right:50%}.offset-7{margin-right:58.33333333%}.offset-8{margin-right:66.66666667%}.offset-9{margin-right:75%}.offset-10{margin-right:83.33333333%}.offset-11{margin-right:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-right:0}.offset-sm-1{margin-right:8.33333333%}.offset-sm-2{margin-right:16.66666667%}.offset-sm-3{margin-right:25%}.offset-sm-4{margin-right:33.33333333%}.offset-sm-5{margin-right:41.66666667%}.offset-sm-6{margin-right:50%}.offset-sm-7{margin-right:58.33333333%}.offset-sm-8{margin-right:66.66666667%}.offset-sm-9{margin-right:75%}.offset-sm-10{margin-right:83.33333333%}.offset-sm-11{margin-right:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-right:0}.offset-md-1{margin-right:8.33333333%}.offset-md-2{margin-right:16.66666667%}.offset-md-3{margin-right:25%}.offset-md-4{margin-right:33.33333333%}.offset-md-5{margin-right:41.66666667%}.offset-md-6{margin-right:50%}.offset-md-7{margin-right:58.33333333%}.offset-md-8{margin-right:66.66666667%}.offset-md-9{margin-right:75%}.offset-md-10{margin-right:83.33333333%}.offset-md-11{margin-right:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-right:0}.offset-lg-1{margin-right:8.33333333%}.offset-lg-2{margin-right:16.66666667%}.offset-lg-3{margin-right:25%}.offset-lg-4{margin-right:33.33333333%}.offset-lg-5{margin-right:41.66666667%}.offset-lg-6{margin-right:50%}.offset-lg-7{margin-right:58.33333333%}.offset-lg-8{margin-right:66.66666667%}.offset-lg-9{margin-right:75%}.offset-lg-10{margin-right:83.33333333%}.offset-lg-11{margin-right:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-right:0}.offset-xl-1{margin-right:8.33333333%}.offset-xl-2{margin-right:16.66666667%}.offset-xl-3{margin-right:25%}.offset-xl-4{margin-right:33.33333333%}.offset-xl-5{margin-right:41.66666667%}.offset-xl-6{margin-right:50%}.offset-xl-7{margin-right:58.33333333%}.offset-xl-8{margin-right:66.66666667%}.offset-xl-9{margin-right:75%}.offset-xl-10{margin-right:83.33333333%}.offset-xl-11{margin-right:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-right:0}.offset-xxl-1{margin-right:8.33333333%}.offset-xxl-2{margin-right:16.66666667%}.offset-xxl-3{margin-right:25%}.offset-xxl-4{margin-right:33.33333333%}.offset-xxl-5{margin-right:41.66666667%}.offset-xxl-6{margin-right:50%}.offset-xxl-7{margin-right:58.33333333%}.offset-xxl-8{margin-right:66.66666667%}.offset-xxl-9{margin-right:75%}.offset-xxl-10{margin-right:83.33333333%}.offset-xxl-11{margin-right:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-left:0;padding-right:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem .75rem .375rem 2.25rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:left .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-left:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-right:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-right:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-right:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:right;margin-right:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-right:2.5em}.form-switch .form-check-input{width:2em;margin-right:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:right center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:left center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-left:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;right:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:100% 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(-.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(-.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(-.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-left:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-left-radius:0;border-bottom-left-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-left:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:left calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-left:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) left calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-left:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:left .75rem center,center left 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-right:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-left:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:left calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-left:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) left calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-left:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:left .75rem center,center left 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-right:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-left:.3em solid transparent;border-bottom:0;border-right:.3em solid transparent}.dropdown-toggle:empty::after{margin-right:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:right;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;right:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{left:0;right:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{left:0;right:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{left:0;right:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{left:0;right:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{left:0;right:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{left:0;right:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:0;border-left:.3em solid transparent;border-bottom:.3em solid;border-right:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-right:0}.dropend .dropdown-menu[data-bs-popper]{top:0;left:auto;right:100%;margin-top:0;margin-right:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-left:0;border-bottom:.3em solid transparent;border-right:.3em solid}.dropend .dropdown-toggle:empty::after{margin-right:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;left:100%;right:auto;margin-top:0;margin-left:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-right:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-left:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-right:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-right:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-right-radius:0;border-bottom-right-radius:0}.dropdown-toggle-split{padding-left:.5625rem;padding-right:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-right:0}.dropstart .dropdown-toggle-split::before{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-left:.375rem;padding-right:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-left:.75rem;padding-right:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-left-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-right-radius:0;border-top-left-radius:0}.nav{display:flex;flex-wrap:wrap;padding-right:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-right-radius:.25rem;border-top-left-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-left:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-right:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-left:0;padding-right:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-left:0;border-right:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-bottom,.navbar-expand-sm .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-left:0;border-right:0;transition:none;transform:none}.navbar-expand-md .offcanvas-bottom,.navbar-expand-md .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-left:0;border-right:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-bottom,.navbar-expand-lg .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-left:0;border-right:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-bottom,.navbar-expand-xl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-left:0;border-right:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-bottom,.navbar-expand-xxl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-left:0;border-right:0;transition:none;transform:none}.navbar-expand .offcanvas-bottom,.navbar-expand .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-left:0;margin-right:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-right-radius:calc(.25rem - 1px);border-top-left-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-left-radius:calc(.25rem - 1px);border-bottom-right-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-right:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-left:-.5rem;margin-bottom:-.5rem;margin-right:-.5rem;border-bottom:0}.card-header-pills{margin-left:-.5rem;margin-right:-.5rem}.card-img-overlay{position:absolute;top:0;left:0;bottom:0;right:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-right-radius:calc(.25rem - 1px);border-top-left-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-left-radius:calc(.25rem - 1px);border-bottom-right-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-right:0;border-right:0}.card-group>.card:not(:last-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:not(:first-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-right-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:right;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-right:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-right-radius:.25rem;border-top-left-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-right-radius:calc(.25rem - 1px);border-top-left-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-left-radius:calc(.25rem - 1px);border-bottom-right-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-left:0;border-right:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-right:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:right;padding-left:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-right:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-right:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item:last-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-left:3rem}.alert-dismissible .btn-close{position:absolute;top:0;left:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-right:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-right-radius:inherit;border-top-left-radius:inherit}.list-group-item:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-right-radius:.25rem;border-top-left-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-left-radius:.25rem;border-bottom-right-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-right-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-right:-1px;border-right-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-right-radius:.25rem;border-top-left-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-left-radius:.25rem;border-bottom-right-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-right-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-right:-1px;border-right-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-right-radius:.25rem;border-top-left-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-left-radius:.25rem;border-bottom-right-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-right-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-right:-1px;border-right-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-right-radius:.25rem;border-top-left-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-left-radius:.25rem;border-bottom-right-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-right-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-right:-1px;border-right-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-right-radius:.25rem;border-top-left-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-left-radius:.25rem;border-bottom-right-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-right-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-right:-1px;border-right-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-right-radius:.25rem;border-top-left-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-left-radius:.25rem;border-bottom-right-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-right-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-right:-1px;border-right-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-right-radius:calc(.25rem - 1px);border-top-left-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-left:-.375rem;margin-right:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;right:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-right-radius:calc(.3rem - 1px);border-top-left-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem auto -.5rem -.5rem}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-left-radius:calc(.3rem - 1px);border-bottom-right-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:right;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:right;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;right:50%;display:block;width:1rem;margin-right:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-right-radius:calc(.3rem - 1px);border-top-left-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:right;width:100%;margin-left:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{right:0}.carousel-control-next{left:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;left:0;bottom:0;right:0;z-index:2;display:flex;justify-content:center;padding:0;margin-left:15%;margin-bottom:1rem;margin-right:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-left:3px;margin-right:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;left:15%;bottom:1.25rem;right:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-left-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;right:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-.5rem;margin-left:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-end{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-top{top:0;left:0;right:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{left:0;right:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;right:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;left:0;right:0;z-index:1030}.fixed-bottom{position:fixed;left:0;bottom:0;right:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;left:0;bottom:0;right:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:right!important}.float-end{float:left!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{right:0!important}.start-50{right:50%!important}.start-100{right:100%!important}.end-0{left:0!important}.end-50{left:50%!important}.end-100{left:100%!important}.translate-middle{transform:translate(50%,-50%)!important}.translate-middle-x{transform:translateX(50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-left:1px solid #dee2e6!important}.border-end-0{border-left:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-right:1px solid #dee2e6!important}.border-start-0{border-right:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-left:0!important}.me-1{margin-left:.25rem!important}.me-2{margin-left:.5rem!important}.me-3{margin-left:1rem!important}.me-4{margin-left:1.5rem!important}.me-5{margin-left:3rem!important}.me-auto{margin-left:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-right:0!important}.ms-1{margin-right:.25rem!important}.ms-2{margin-right:.5rem!important}.ms-3{margin-right:1rem!important}.ms-4{margin-right:1.5rem!important}.ms-5{margin-right:3rem!important}.ms-auto{margin-right:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-left:0!important}.pe-1{padding-left:.25rem!important}.pe-2{padding-left:.5rem!important}.pe-3{padding-left:1rem!important}.pe-4{padding-left:1.5rem!important}.pe-5{padding-left:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-right:0!important}.ps-1{padding-right:.25rem!important}.ps-2{padding-right:.5rem!important}.ps-3{padding-right:1rem!important}.ps-4{padding-right:1.5rem!important}.ps-5{padding-right:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:right!important}.text-end{text-align:left!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-right-radius:.25rem!important;border-top-left-radius:.25rem!important}.rounded-end{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-bottom{border-bottom-left-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-start{border-bottom-right-radius:.25rem!important;border-top-right-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:right!important}.float-sm-end{float:left!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-left:0!important}.me-sm-1{margin-left:.25rem!important}.me-sm-2{margin-left:.5rem!important}.me-sm-3{margin-left:1rem!important}.me-sm-4{margin-left:1.5rem!important}.me-sm-5{margin-left:3rem!important}.me-sm-auto{margin-left:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-right:0!important}.ms-sm-1{margin-right:.25rem!important}.ms-sm-2{margin-right:.5rem!important}.ms-sm-3{margin-right:1rem!important}.ms-sm-4{margin-right:1.5rem!important}.ms-sm-5{margin-right:3rem!important}.ms-sm-auto{margin-right:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-left:0!important}.pe-sm-1{padding-left:.25rem!important}.pe-sm-2{padding-left:.5rem!important}.pe-sm-3{padding-left:1rem!important}.pe-sm-4{padding-left:1.5rem!important}.pe-sm-5{padding-left:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-right:0!important}.ps-sm-1{padding-right:.25rem!important}.ps-sm-2{padding-right:.5rem!important}.ps-sm-3{padding-right:1rem!important}.ps-sm-4{padding-right:1.5rem!important}.ps-sm-5{padding-right:3rem!important}.text-sm-start{text-align:right!important}.text-sm-end{text-align:left!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:right!important}.float-md-end{float:left!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-left:0!important}.me-md-1{margin-left:.25rem!important}.me-md-2{margin-left:.5rem!important}.me-md-3{margin-left:1rem!important}.me-md-4{margin-left:1.5rem!important}.me-md-5{margin-left:3rem!important}.me-md-auto{margin-left:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-right:0!important}.ms-md-1{margin-right:.25rem!important}.ms-md-2{margin-right:.5rem!important}.ms-md-3{margin-right:1rem!important}.ms-md-4{margin-right:1.5rem!important}.ms-md-5{margin-right:3rem!important}.ms-md-auto{margin-right:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-left:0!important}.pe-md-1{padding-left:.25rem!important}.pe-md-2{padding-left:.5rem!important}.pe-md-3{padding-left:1rem!important}.pe-md-4{padding-left:1.5rem!important}.pe-md-5{padding-left:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-right:0!important}.ps-md-1{padding-right:.25rem!important}.ps-md-2{padding-right:.5rem!important}.ps-md-3{padding-right:1rem!important}.ps-md-4{padding-right:1.5rem!important}.ps-md-5{padding-right:3rem!important}.text-md-start{text-align:right!important}.text-md-end{text-align:left!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:right!important}.float-lg-end{float:left!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-left:0!important}.me-lg-1{margin-left:.25rem!important}.me-lg-2{margin-left:.5rem!important}.me-lg-3{margin-left:1rem!important}.me-lg-4{margin-left:1.5rem!important}.me-lg-5{margin-left:3rem!important}.me-lg-auto{margin-left:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-right:0!important}.ms-lg-1{margin-right:.25rem!important}.ms-lg-2{margin-right:.5rem!important}.ms-lg-3{margin-right:1rem!important}.ms-lg-4{margin-right:1.5rem!important}.ms-lg-5{margin-right:3rem!important}.ms-lg-auto{margin-right:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-left:0!important}.pe-lg-1{padding-left:.25rem!important}.pe-lg-2{padding-left:.5rem!important}.pe-lg-3{padding-left:1rem!important}.pe-lg-4{padding-left:1.5rem!important}.pe-lg-5{padding-left:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-right:0!important}.ps-lg-1{padding-right:.25rem!important}.ps-lg-2{padding-right:.5rem!important}.ps-lg-3{padding-right:1rem!important}.ps-lg-4{padding-right:1.5rem!important}.ps-lg-5{padding-right:3rem!important}.text-lg-start{text-align:right!important}.text-lg-end{text-align:left!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:right!important}.float-xl-end{float:left!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-left:0!important}.me-xl-1{margin-left:.25rem!important}.me-xl-2{margin-left:.5rem!important}.me-xl-3{margin-left:1rem!important}.me-xl-4{margin-left:1.5rem!important}.me-xl-5{margin-left:3rem!important}.me-xl-auto{margin-left:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-right:0!important}.ms-xl-1{margin-right:.25rem!important}.ms-xl-2{margin-right:.5rem!important}.ms-xl-3{margin-right:1rem!important}.ms-xl-4{margin-right:1.5rem!important}.ms-xl-5{margin-right:3rem!important}.ms-xl-auto{margin-right:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-left:0!important}.pe-xl-1{padding-left:.25rem!important}.pe-xl-2{padding-left:.5rem!important}.pe-xl-3{padding-left:1rem!important}.pe-xl-4{padding-left:1.5rem!important}.pe-xl-5{padding-left:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-right:0!important}.ps-xl-1{padding-right:.25rem!important}.ps-xl-2{padding-right:.5rem!important}.ps-xl-3{padding-right:1rem!important}.ps-xl-4{padding-right:1.5rem!important}.ps-xl-5{padding-right:3rem!important}.text-xl-start{text-align:right!important}.text-xl-end{text-align:left!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:right!important}.float-xxl-end{float:left!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-left:0!important}.me-xxl-1{margin-left:.25rem!important}.me-xxl-2{margin-left:.5rem!important}.me-xxl-3{margin-left:1rem!important}.me-xxl-4{margin-left:1.5rem!important}.me-xxl-5{margin-left:3rem!important}.me-xxl-auto{margin-left:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-right:0!important}.ms-xxl-1{margin-right:.25rem!important}.ms-xxl-2{margin-right:.5rem!important}.ms-xxl-3{margin-right:1rem!important}.ms-xxl-4{margin-right:1.5rem!important}.ms-xxl-5{margin-right:3rem!important}.ms-xxl-auto{margin-right:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-left:0!important}.pe-xxl-1{padding-left:.25rem!important}.pe-xxl-2{padding-left:.5rem!important}.pe-xxl-3{padding-left:1rem!important}.pe-xxl-4{padding-left:1.5rem!important}.pe-xxl-5{padding-left:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-right:0!important}.ps-xxl-1{padding-right:.25rem!important}.ps-xxl-2{padding-right:.5rem!important}.ps-xxl-3{padding-right:1rem!important}.ps-xxl-4{padding-right:1.5rem!important}.ps-xxl-5{padding-right:3rem!important}.text-xxl-start{text-align:right!important}.text-xxl-end{text-align:left!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
+/*# sourceMappingURL=bootstrap.rtl.min.css.map */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map
new file mode 100644
index 0000000..8d1977f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.rtl.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss","bootstrap.css","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n@import \"placeholders\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n  // Note: Custom variable values only support SassScript inside `#{}`.\n\n  // Colors\n  //\n  // Generate palettes for full colors, grays, and theme colors.\n\n  @each $color, $value in $colors {\n    --#{$variable-prefix}#{$color}: #{$value};\n  }\n\n  @each $color, $value in $grays {\n    --#{$variable-prefix}gray-#{$color}: #{$value};\n  }\n\n  @each $color, $value in $theme-colors {\n    --#{$variable-prefix}#{$color}: #{$value};\n  }\n\n  @each $color, $value in $theme-colors-rgb {\n    --#{$variable-prefix}#{$color}-rgb: #{$value};\n  }\n\n  --#{$variable-prefix}white-rgb: #{to-rgb($white)};\n  --#{$variable-prefix}black-rgb: #{to-rgb($black)};\n  --#{$variable-prefix}body-rgb: #{to-rgb($body-color)};\n\n  // Fonts\n\n  // Note: Use `inspect` for lists so that quoted items keep the quotes.\n  // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n  --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n  --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n  --#{$variable-prefix}gradient: #{$gradient};\n\n  // Root and body\n  // stylelint-disable custom-property-empty-line-before\n  // scss-docs-start root-body-variables\n  @if $font-size-root != null {\n    --#{$variable-prefix}root-font-size: #{$font-size-root};\n  }\n  --#{$variable-prefix}body-font-family: #{$font-family-base};\n  --#{$variable-prefix}body-font-size: #{$font-size-base};\n  --#{$variable-prefix}body-font-weight: #{$font-weight-base};\n  --#{$variable-prefix}body-line-height: #{$line-height-base};\n  --#{$variable-prefix}body-color: #{$body-color};\n  @if $body-text-align != null {\n    --#{$variable-prefix}body-text-align: #{$body-text-align};\n  }\n  --#{$variable-prefix}body-bg: #{$body-bg};\n  // scss-docs-end root-body-variables\n  // stylelint-enable custom-property-empty-line-before\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n  @if $font-size-root != null {\n    font-size: var(--#{$variable-prefix}-root-font-size);\n  }\n\n  @if $enable-smooth-scroll {\n    @media (prefers-reduced-motion: no-preference) {\n      scroll-behavior: smooth;\n    }\n  }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n  margin: 0; // 1\n  font-family: var(--#{$variable-prefix}body-font-family);\n  @include font-size(var(--#{$variable-prefix}body-font-size));\n  font-weight: var(--#{$variable-prefix}body-font-weight);\n  line-height: var(--#{$variable-prefix}body-line-height);\n  color: var(--#{$variable-prefix}body-color);\n  text-align: var(--#{$variable-prefix}body-text-align);\n  background-color: var(--#{$variable-prefix}body-bg); // 2\n  -webkit-text-size-adjust: 100%; // 3\n  -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n  margin: $hr-margin-y 0;\n  color: $hr-color; // 1\n  background-color: currentColor;\n  border: 0;\n  opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n  height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n//    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n//    margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n  margin-top: 0; // 1\n  margin-bottom: $headings-margin-bottom;\n  font-family: $headings-font-family;\n  font-style: $headings-font-style;\n  font-weight: $headings-font-weight;\n  line-height: $headings-line-height;\n  color: $headings-color;\n}\n\nh1 {\n  @extend %heading;\n  @include font-size($h1-font-size);\n}\n\nh2 {\n  @extend %heading;\n  @include font-size($h2-font-size);\n}\n\nh3 {\n  @extend %heading;\n  @include font-size($h3-font-size);\n}\n\nh4 {\n  @extend %heading;\n  @include font-size($h4-font-size);\n}\n\nh5 {\n  @extend %heading;\n  @include font-size($h5-font-size);\n}\n\nh6 {\n  @extend %heading;\n  @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n  margin-top: 0;\n  margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n  text-decoration: underline dotted; // 2\n  cursor: help; // 3\n  text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n  font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n  @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n  padding: $mark-padding;\n  background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n  position: relative;\n  @include font-size($sub-sup-font-size);\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n  color: $link-color;\n  text-decoration: $link-decoration;\n\n  &:hover {\n    color: $link-hover-color;\n    text-decoration: $link-hover-decoration;\n  }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n  &,\n  &:hover {\n    color: inherit;\n    text-decoration: none;\n  }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: $font-family-code;\n  @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n  direction: ltr #{\"/* rtl:ignore */\"};\n  unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n  display: block;\n  margin-top: 0; // 1\n  margin-bottom: 1rem; // 2\n  overflow: auto; // 3\n  @include font-size($code-font-size);\n  color: $pre-color;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    @include font-size(inherit);\n    color: inherit;\n    word-break: normal;\n  }\n}\n\ncode {\n  @include font-size($code-font-size);\n  color: $code-color;\n  word-wrap: break-word;\n\n  // Streamline the style when inside anchors to avoid broken underline and more\n  a > & {\n    color: inherit;\n  }\n}\n\nkbd {\n  padding: $kbd-padding-y $kbd-padding-x;\n  @include font-size($kbd-font-size);\n  color: $kbd-color;\n  background-color: $kbd-bg;\n  @include border-radius($border-radius-sm);\n\n  kbd {\n    padding: 0;\n    @include font-size(1em);\n    font-weight: $nested-kbd-font-weight;\n  }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n  margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: $table-cell-padding-y;\n  padding-bottom: $table-cell-padding-y;\n  color: $table-caption-color;\n  text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `<td>` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n  font-weight: $table-th-font-weight; // 1\n  text-align: inherit; // 2\n  text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n  display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0; // 1\n  font-family: inherit;\n  @include font-size(inherit);\n  line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n  text-transform: none;\n}\n// Set the cursor for non-`<button>` buttons\n//\n// Details at https://github.com/twbs/bootstrap/pull/30562\n[role=\"button\"] {\n  cursor: pointer;\n}\n\nselect {\n  // Remove the inheritance of word-wrap in Safari.\n  // See https://github.com/twbs/bootstrap/issues/24990\n  word-wrap: normal;\n\n  // Undo the opacity change from Chrome\n  &:disabled {\n    opacity: 1;\n  }\n}\n\n// Remove the dropdown arrow in Chrome from inputs built with datalists.\n// See https://stackoverflow.com/a/54997118\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n//    controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\n// 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n\n  @if $enable-button-pointers {\n    &:not(:disabled) {\n      cursor: pointer; // 3\n    }\n  }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\n// 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\ntextarea {\n  resize: vertical; // 1\n}\n\n// 1. Browsers set a default `min-width: min-content;` on fieldsets,\n//    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n//    So we reset that to ensure fieldsets behave more like a standard block element.\n//    See https://github.com/twbs/bootstrap/issues/12359\n//    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n// 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\nfieldset {\n  min-width: 0; // 1\n  padding: 0; // 2\n  margin: 0; // 2\n  border: 0; // 2\n}\n\n// 1. By using `float: left`, the legend will behave like a block element.\n//    This way the border of a fieldset wraps around the legend if present.\n// 2. Fix wrapping bug.\n//    See https://github.com/twbs/bootstrap/issues/29712\n\nlegend {\n  float: left; // 1\n  width: 100%;\n  padding: 0;\n  margin-bottom: $legend-margin-bottom;\n  @include font-size($legend-font-size);\n  font-weight: $legend-font-weight;\n  line-height: inherit;\n\n  + * {\n    clear: left; // 2\n  }\n}\n\n// Fix height of inputs with a type of datetime-local, date, month, week, or time\n// See https://github.com/twbs/bootstrap/issues/18842\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n// 1. Correct the outline style in Safari.\n// 2. This overrides the extra rounded corners on search inputs in iOS so that our\n//    `.form-control` class can properly style them. Note that this cannot simply\n//    be added to `.form-control` as it's not specific enough. For details, see\n//    https://github.com/twbs/bootstrap/issues/11586.\n\n[type=\"search\"] {\n  outline-offset: -2px; // 1\n  -webkit-appearance: textfield; // 2\n}\n\n// 1. A few input types should stay LTR\n// See https://rtlstyling.com/posts/rtl-styling#form-inputs\n// 2. RTL only output\n// See https://rtlcss.com/learn/usage-guide/control-directives/#raw\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n\n// Remove the inner padding in Chrome and Safari on macOS.\n\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n// Remove padding around color pickers in webkit browsers\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n\n// Inherit font family and line height for file input buttons\n\n::file-selector-button {\n  font: inherit;\n}\n\n// 1. Change font properties to `inherit`\n// 2. Correct the inability to style clickable types in iOS and Safari.\n\n::-webkit-file-upload-button {\n  font: inherit; // 1\n  -webkit-appearance: button; // 2\n}\n\n// Correct element displays\n\noutput {\n  display: inline-block;\n}\n\n// Remove border from iframe\n\niframe {\n  border: 0;\n}\n\n// Summary\n//\n// 1. Add the correct display in all browsers\n\nsummary {\n  display: list-item; // 1\n  cursor: pointer;\n}\n\n\n// Progress\n//\n// Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\nprogress {\n  vertical-align: baseline;\n}\n\n\n// Hidden attribute\n//\n// Always hide an element with the `hidden` HTML attribute.\n\n[hidden] {\n  display: none !important;\n}\n","@charset \"UTF-8\";\n/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root {\n  --bs-blue: #0d6efd;\n  --bs-indigo: #6610f2;\n  --bs-purple: #6f42c1;\n  --bs-pink: #d63384;\n  --bs-red: #dc3545;\n  --bs-orange: #fd7e14;\n  --bs-yellow: #ffc107;\n  --bs-green: #198754;\n  --bs-teal: #20c997;\n  --bs-cyan: #0dcaf0;\n  --bs-white: #fff;\n  --bs-gray: #6c757d;\n  --bs-gray-dark: #343a40;\n  --bs-gray-100: #f8f9fa;\n  --bs-gray-200: #e9ecef;\n  --bs-gray-300: #dee2e6;\n  --bs-gray-400: #ced4da;\n  --bs-gray-500: #adb5bd;\n  --bs-gray-600: #6c757d;\n  --bs-gray-700: #495057;\n  --bs-gray-800: #343a40;\n  --bs-gray-900: #212529;\n  --bs-primary: #0d6efd;\n  --bs-secondary: #6c757d;\n  --bs-success: #198754;\n  --bs-info: #0dcaf0;\n  --bs-warning: #ffc107;\n  --bs-danger: #dc3545;\n  --bs-light: #f8f9fa;\n  --bs-dark: #212529;\n  --bs-primary-rgb: 13, 110, 253;\n  --bs-secondary-rgb: 108, 117, 125;\n  --bs-success-rgb: 25, 135, 84;\n  --bs-info-rgb: 13, 202, 240;\n  --bs-warning-rgb: 255, 193, 7;\n  --bs-danger-rgb: 220, 53, 69;\n  --bs-light-rgb: 248, 249, 250;\n  --bs-dark-rgb: 33, 37, 41;\n  --bs-white-rgb: 255, 255, 255;\n  --bs-black-rgb: 0, 0, 0;\n  --bs-body-rgb: 33, 37, 41;\n  --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n  --bs-body-font-family: var(--bs-font-sans-serif);\n  --bs-body-font-size: 1rem;\n  --bs-body-font-weight: 400;\n  --bs-body-line-height: 1.5;\n  --bs-body-color: #212529;\n  --bs-body-bg: #fff;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  :root {\n    scroll-behavior: smooth;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: var(--bs-body-font-family);\n  font-size: var(--bs-body-font-size);\n  font-weight: var(--bs-body-font-weight);\n  line-height: var(--bs-body-line-height);\n  color: var(--bs-body-color);\n  text-align: var(--bs-body-text-align);\n  background-color: var(--bs-body-bg);\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n  margin: 1rem 0;\n  color: inherit;\n  background-color: currentColor;\n  border: 0;\n  opacity: 0.25;\n}\n\nhr:not([size]) {\n  height: 1px;\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\nh1, .h1 {\n  font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n  h1, .h1 {\n    font-size: 2.5rem;\n  }\n}\n\nh2, .h2 {\n  font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n  h2, .h2 {\n    font-size: 2rem;\n  }\n}\n\nh3, .h3 {\n  font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n  h3, .h3 {\n    font-size: 1.75rem;\n  }\n}\n\nh4, .h4 {\n  font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n  h4, .h4 {\n    font-size: 1.5rem;\n  }\n}\n\nh5, .h5 {\n  font-size: 1.25rem;\n}\n\nh6, .h6 {\n  font-size: 1rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-bs-original-title] {\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n  cursor: help;\n  -webkit-text-decoration-skip-ink: none;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul {\n  padding-right: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: 0.5rem;\n  margin-right: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall, .small {\n  font-size: 0.875em;\n}\n\nmark, .mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 0.75em;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\na {\n  color: #0d6efd;\n  text-decoration: underline;\n}\na:hover {\n  color: #0a58ca;\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n  color: inherit;\n  text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: var(--bs-font-monospace);\n  font-size: 1em;\n  direction: ltr ;\n  unicode-bidi: bidi-override;\n}\n\npre {\n  display: block;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  font-size: 0.875em;\n}\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\ncode {\n  font-size: 0.875em;\n  color: #d63384;\n  word-wrap: break-word;\n}\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 0.875em;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\nkbd kbd {\n  padding: 0;\n  font-size: 1em;\n  font-weight: 700;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  color: #6c757d;\n  text-align: right;\n}\n\nth {\n  text-align: inherit;\n  text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\nlabel {\n  display: inline-block;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n[role=button] {\n  cursor: pointer;\n}\n\nselect {\n  word-wrap: normal;\n}\nselect:disabled {\n  opacity: 1;\n}\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n  -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n  cursor: pointer;\n}\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ntextarea {\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  float: right;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 0.5rem;\n  font-size: calc(1.275rem + 0.3vw);\n  line-height: inherit;\n}\n@media (min-width: 1200px) {\n  legend {\n    font-size: 1.5rem;\n  }\n}\nlegend + * {\n  clear: right;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n[type=search] {\n  outline-offset: -2px;\n  -webkit-appearance: textfield;\n}\n\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n::file-selector-button {\n  font: inherit;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\niframe {\n  border: 0;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[hidden] {\n  display: none !important;\n}\n\n.lead {\n  font-size: 1.25rem;\n  font-weight: 300;\n}\n\n.display-1 {\n  font-size: calc(1.625rem + 4.5vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-1 {\n    font-size: 5rem;\n  }\n}\n\n.display-2 {\n  font-size: calc(1.575rem + 3.9vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-2 {\n    font-size: 4.5rem;\n  }\n}\n\n.display-3 {\n  font-size: calc(1.525rem + 3.3vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-3 {\n    font-size: 4rem;\n  }\n}\n\n.display-4 {\n  font-size: calc(1.475rem + 2.7vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-4 {\n    font-size: 3.5rem;\n  }\n}\n\n.display-5 {\n  font-size: calc(1.425rem + 2.1vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-5 {\n    font-size: 3rem;\n  }\n}\n\n.display-6 {\n  font-size: calc(1.375rem + 1.5vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-6 {\n    font-size: 2.5rem;\n  }\n}\n\n.list-unstyled {\n  padding-right: 0;\n  list-style: none;\n}\n\n.list-inline {\n  padding-right: 0;\n  list-style: none;\n}\n\n.list-inline-item {\n  display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n  margin-left: 0.5rem;\n}\n\n.initialism {\n  font-size: 0.875em;\n  text-transform: uppercase;\n}\n\n.blockquote {\n  margin-bottom: 1rem;\n  font-size: 1.25rem;\n}\n.blockquote > :last-child {\n  margin-bottom: 0;\n}\n\n.blockquote-footer {\n  margin-top: -1rem;\n  margin-bottom: 1rem;\n  font-size: 0.875em;\n  color: #6c757d;\n}\n.blockquote-footer::before {\n  content: \"鈥斅燶";\n}\n\n.img-fluid {\n  max-width: 100%;\n  height: auto;\n}\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  border-radius: 0.25rem;\n  max-width: 100%;\n  height: auto;\n}\n\n.figure {\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: 0.5rem;\n  line-height: 1;\n}\n\n.figure-caption {\n  font-size: 0.875em;\n  color: #6c757d;\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n  width: 100%;\n  padding-left: var(--bs-gutter-x, 0.75rem);\n  padding-right: var(--bs-gutter-x, 0.75rem);\n  margin-left: auto;\n  margin-right: auto;\n}\n\n@media (min-width: 576px) {\n  .container-sm, .container {\n    max-width: 540px;\n  }\n}\n@media (min-width: 768px) {\n  .container-md, .container-sm, .container {\n    max-width: 720px;\n  }\n}\n@media (min-width: 992px) {\n  .container-lg, .container-md, .container-sm, .container {\n    max-width: 960px;\n  }\n}\n@media (min-width: 1200px) {\n  .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1140px;\n  }\n}\n@media (min-width: 1400px) {\n  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1320px;\n  }\n}\n.row {\n  --bs-gutter-x: 1.5rem;\n  --bs-gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--bs-gutter-y) * -1);\n  margin-left: calc(var(--bs-gutter-x) * -.5);\n  margin-right: calc(var(--bs-gutter-x) * -.5);\n}\n.row > * {\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%;\n  padding-left: calc(var(--bs-gutter-x) * .5);\n  padding-right: calc(var(--bs-gutter-x) * .5);\n  margin-top: var(--bs-gutter-y);\n}\n\n.col {\n  flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.row-cols-1 > * {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.row-cols-2 > * {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.row-cols-3 > * {\n  flex: 0 0 auto;\n  width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.row-cols-5 > * {\n  flex: 0 0 auto;\n  width: 20%;\n}\n\n.row-cols-6 > * {\n  flex: 0 0 auto;\n  width: 16.6666666667%;\n}\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.col-1 {\n  flex: 0 0 auto;\n  width: 8.33333333%;\n}\n\n.col-2 {\n  flex: 0 0 auto;\n  width: 16.66666667%;\n}\n\n.col-3 {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 auto;\n  width: 33.33333333%;\n}\n\n.col-5 {\n  flex: 0 0 auto;\n  width: 41.66666667%;\n}\n\n.col-6 {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 auto;\n  width: 58.33333333%;\n}\n\n.col-8 {\n  flex: 0 0 auto;\n  width: 66.66666667%;\n}\n\n.col-9 {\n  flex: 0 0 auto;\n  width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 auto;\n  width: 83.33333333%;\n}\n\n.col-11 {\n  flex: 0 0 auto;\n  width: 91.66666667%;\n}\n\n.col-12 {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.offset-1 {\n  margin-right: 8.33333333%;\n}\n\n.offset-2 {\n  margin-right: 16.66666667%;\n}\n\n.offset-3 {\n  margin-right: 25%;\n}\n\n.offset-4 {\n  margin-right: 33.33333333%;\n}\n\n.offset-5 {\n  margin-right: 41.66666667%;\n}\n\n.offset-6 {\n  margin-right: 50%;\n}\n\n.offset-7 {\n  margin-right: 58.33333333%;\n}\n\n.offset-8 {\n  margin-right: 66.66666667%;\n}\n\n.offset-9 {\n  margin-right: 75%;\n}\n\n.offset-10 {\n  margin-right: 83.33333333%;\n}\n\n.offset-11 {\n  margin-right: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n  --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n  --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n  --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n  --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n  --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n  --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n  --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n  --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n  --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n  --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n  --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n  --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-sm-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-sm-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-sm-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-sm-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-sm-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-sm-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-sm-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-sm-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-sm-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-sm-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-sm-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-sm-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-sm-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-sm-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-sm-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-sm-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-sm-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-sm-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-sm-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-sm-0 {\n    margin-right: 0;\n  }\n\n  .offset-sm-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-sm-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-sm-3 {\n    margin-right: 25%;\n  }\n\n  .offset-sm-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-sm-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-sm-6 {\n    margin-right: 50%;\n  }\n\n  .offset-sm-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-sm-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-sm-9 {\n    margin-right: 75%;\n  }\n\n  .offset-sm-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-sm-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-sm-0,\n.gx-sm-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-sm-0,\n.gy-sm-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-sm-1,\n.gx-sm-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-sm-1,\n.gy-sm-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-sm-2,\n.gx-sm-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-sm-2,\n.gy-sm-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-sm-3,\n.gx-sm-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-sm-3,\n.gy-sm-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-sm-4,\n.gx-sm-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-sm-4,\n.gy-sm-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-sm-5,\n.gx-sm-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-sm-5,\n.gy-sm-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 768px) {\n  .col-md {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-md-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-md-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-md-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-md-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-md-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-md-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-md-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-md-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-md-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-md-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-md-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-md-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-md-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-md-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-md-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-md-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-md-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-md-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-md-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-md-0 {\n    margin-right: 0;\n  }\n\n  .offset-md-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-md-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-md-3 {\n    margin-right: 25%;\n  }\n\n  .offset-md-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-md-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-md-6 {\n    margin-right: 50%;\n  }\n\n  .offset-md-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-md-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-md-9 {\n    margin-right: 75%;\n  }\n\n  .offset-md-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-md-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-md-0,\n.gx-md-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-md-0,\n.gy-md-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-md-1,\n.gx-md-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-md-1,\n.gy-md-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-md-2,\n.gx-md-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-md-2,\n.gy-md-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-md-3,\n.gx-md-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-md-3,\n.gy-md-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-md-4,\n.gx-md-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-md-4,\n.gy-md-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-md-5,\n.gx-md-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-md-5,\n.gy-md-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 992px) {\n  .col-lg {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-lg-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-lg-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-lg-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-lg-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-lg-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-lg-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-lg-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-lg-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-lg-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-lg-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-lg-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-lg-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-lg-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-lg-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-lg-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-lg-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-lg-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-lg-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-lg-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-lg-0 {\n    margin-right: 0;\n  }\n\n  .offset-lg-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-lg-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-lg-3 {\n    margin-right: 25%;\n  }\n\n  .offset-lg-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-lg-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-lg-6 {\n    margin-right: 50%;\n  }\n\n  .offset-lg-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-lg-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-lg-9 {\n    margin-right: 75%;\n  }\n\n  .offset-lg-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-lg-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-lg-0,\n.gx-lg-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-lg-0,\n.gy-lg-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-lg-1,\n.gx-lg-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-lg-1,\n.gy-lg-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-lg-2,\n.gx-lg-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-lg-2,\n.gy-lg-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-lg-3,\n.gx-lg-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-lg-3,\n.gy-lg-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-lg-4,\n.gx-lg-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-lg-4,\n.gy-lg-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-lg-5,\n.gx-lg-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-lg-5,\n.gy-lg-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1200px) {\n  .col-xl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xl-0 {\n    margin-right: 0;\n  }\n\n  .offset-xl-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-xl-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-xl-3 {\n    margin-right: 25%;\n  }\n\n  .offset-xl-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-xl-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-xl-6 {\n    margin-right: 50%;\n  }\n\n  .offset-xl-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-xl-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-xl-9 {\n    margin-right: 75%;\n  }\n\n  .offset-xl-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-xl-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-xl-0,\n.gx-xl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xl-0,\n.gy-xl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xl-1,\n.gx-xl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xl-1,\n.gy-xl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xl-2,\n.gx-xl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xl-2,\n.gy-xl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xl-3,\n.gx-xl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xl-3,\n.gy-xl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xl-4,\n.gx-xl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xl-4,\n.gy-xl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xl-5,\n.gx-xl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xl-5,\n.gy-xl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1400px) {\n  .col-xxl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xxl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xxl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xxl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xxl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xxl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xxl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xxl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xxl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xxl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xxl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xxl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xxl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xxl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xxl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xxl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xxl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xxl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xxl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xxl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xxl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xxl-0 {\n    margin-right: 0;\n  }\n\n  .offset-xxl-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-xxl-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-xxl-3 {\n    margin-right: 25%;\n  }\n\n  .offset-xxl-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-xxl-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-xxl-6 {\n    margin-right: 50%;\n  }\n\n  .offset-xxl-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-xxl-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-xxl-9 {\n    margin-right: 75%;\n  }\n\n  .offset-xxl-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-xxl-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-xxl-0,\n.gx-xxl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xxl-0,\n.gy-xxl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xxl-1,\n.gx-xxl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xxl-1,\n.gy-xxl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xxl-2,\n.gx-xxl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xxl-2,\n.gy-xxl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xxl-3,\n.gx-xxl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xxl-3,\n.gy-xxl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xxl-4,\n.gx-xxl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xxl-4,\n.gy-xxl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xxl-5,\n.gx-xxl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xxl-5,\n.gy-xxl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n.table {\n  --bs-table-bg: transparent;\n  --bs-table-accent-bg: transparent;\n  --bs-table-striped-color: #212529;\n  --bs-table-striped-bg: rgba(0, 0, 0, 0.05);\n  --bs-table-active-color: #212529;\n  --bs-table-active-bg: rgba(0, 0, 0, 0.1);\n  --bs-table-hover-color: #212529;\n  --bs-table-hover-bg: rgba(0, 0, 0, 0.075);\n  width: 100%;\n  margin-bottom: 1rem;\n  color: #212529;\n  vertical-align: top;\n  border-color: #dee2e6;\n}\n.table > :not(caption) > * > * {\n  padding: 0.5rem 0.5rem;\n  background-color: var(--bs-table-bg);\n  border-bottom-width: 1px;\n  box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg);\n}\n.table > tbody {\n  vertical-align: inherit;\n}\n.table > thead {\n  vertical-align: bottom;\n}\n.table > :not(:last-child) > :last-child > * {\n  border-bottom-color: currentColor;\n}\n\n.caption-top {\n  caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n  padding: 0.25rem 0.25rem;\n}\n\n.table-bordered > :not(caption) > * {\n  border-width: 1px 0;\n}\n.table-bordered > :not(caption) > * > * {\n  border-width: 0 1px;\n}\n\n.table-borderless > :not(caption) > * > * {\n  border-bottom-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) {\n  --bs-table-accent-bg: var(--bs-table-striped-bg);\n  color: var(--bs-table-striped-color);\n}\n\n.table-active {\n  --bs-table-accent-bg: var(--bs-table-active-bg);\n  color: var(--bs-table-active-color);\n}\n\n.table-hover > tbody > tr:hover {\n  --bs-table-accent-bg: var(--bs-table-hover-bg);\n  color: var(--bs-table-hover-color);\n}\n\n.table-primary {\n  --bs-table-bg: #cfe2ff;\n  --bs-table-striped-bg: #c5d7f2;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #bacbe6;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #bfd1ec;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #bacbe6;\n}\n\n.table-secondary {\n  --bs-table-bg: #e2e3e5;\n  --bs-table-striped-bg: #d7d8da;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #cbccce;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #d1d2d4;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #cbccce;\n}\n\n.table-success {\n  --bs-table-bg: #d1e7dd;\n  --bs-table-striped-bg: #c7dbd2;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #bcd0c7;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #c1d6cc;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #bcd0c7;\n}\n\n.table-info {\n  --bs-table-bg: #cff4fc;\n  --bs-table-striped-bg: #c5e8ef;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #badce3;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #bfe2e9;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #badce3;\n}\n\n.table-warning {\n  --bs-table-bg: #fff3cd;\n  --bs-table-striped-bg: #f2e7c3;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #e6dbb9;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #ece1be;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #e6dbb9;\n}\n\n.table-danger {\n  --bs-table-bg: #f8d7da;\n  --bs-table-striped-bg: #eccccf;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #dfc2c4;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #e5c7ca;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #dfc2c4;\n}\n\n.table-light {\n  --bs-table-bg: #f8f9fa;\n  --bs-table-striped-bg: #ecedee;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #dfe0e1;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #e5e6e7;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #dfe0e1;\n}\n\n.table-dark {\n  --bs-table-bg: #212529;\n  --bs-table-striped-bg: #2c3034;\n  --bs-table-striped-color: #fff;\n  --bs-table-active-bg: #373b3e;\n  --bs-table-active-color: #fff;\n  --bs-table-hover-bg: #323539;\n  --bs-table-hover-color: #fff;\n  color: #fff;\n  border-color: #373b3e;\n}\n\n.table-responsive {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n}\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 1199.98px) {\n  .table-responsive-xl {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 1399.98px) {\n  .table-responsive-xxl {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n.form-label {\n  margin-bottom: 0.5rem;\n}\n\n.col-form-label {\n  padding-top: calc(0.375rem + 1px);\n  padding-bottom: calc(0.375rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5;\n}\n\n.col-form-label-lg {\n  padding-top: calc(0.5rem + 1px);\n  padding-bottom: calc(0.5rem + 1px);\n  font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n  padding-top: calc(0.25rem + 1px);\n  padding-bottom: calc(0.25rem + 1px);\n  font-size: 0.875rem;\n}\n\n.form-text {\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #6c757d;\n}\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ced4da;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control {\n    transition: none;\n  }\n}\n.form-control[type=file] {\n  overflow: hidden;\n}\n.form-control[type=file]:not(:disabled):not([readonly]) {\n  cursor: pointer;\n}\n.form-control:focus {\n  color: #212529;\n  background-color: #fff;\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-control::-webkit-date-and-time-value {\n  height: 1.5em;\n}\n.form-control::-moz-placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n.form-control::placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n.form-control:disabled, .form-control[readonly] {\n  background-color: #e9ecef;\n  opacity: 1;\n}\n.form-control::file-selector-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  -webkit-margin-end: 0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control::file-selector-button {\n    transition: none;\n  }\n}\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n  background-color: #dde0e3;\n}\n.form-control::-webkit-file-upload-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  -webkit-margin-end: 0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control::-webkit-file-upload-button {\n    -webkit-transition: none;\n    transition: none;\n  }\n}\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n  background-color: #dde0e3;\n}\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0;\n  margin-bottom: 0;\n  line-height: 1.5;\n  color: #212529;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n  padding-left: 0;\n  padding-right: 0;\n}\n\n.form-control-sm {\n  min-height: calc(1.5em + 0.5rem + 2px);\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n.form-control-sm::file-selector-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  -webkit-margin-end: 0.5rem;\n  margin-inline-end: 0.5rem;\n}\n.form-control-sm::-webkit-file-upload-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  -webkit-margin-end: 0.5rem;\n  margin-inline-end: 0.5rem;\n}\n\n.form-control-lg {\n  min-height: calc(1.5em + 1rem + 2px);\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n.form-control-lg::file-selector-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  -webkit-margin-end: 1rem;\n  margin-inline-end: 1rem;\n}\n.form-control-lg::-webkit-file-upload-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  -webkit-margin-end: 1rem;\n  margin-inline-end: 1rem;\n}\n\ntextarea.form-control {\n  min-height: calc(1.5em + 0.75rem + 2px);\n}\ntextarea.form-control-sm {\n  min-height: calc(1.5em + 0.5rem + 2px);\n}\ntextarea.form-control-lg {\n  min-height: calc(1.5em + 1rem + 2px);\n}\n\n.form-control-color {\n  width: 3rem;\n  height: auto;\n  padding: 0.375rem;\n}\n.form-control-color:not(:disabled):not([readonly]) {\n  cursor: pointer;\n}\n.form-control-color::-moz-color-swatch {\n  height: 1.5em;\n  border-radius: 0.25rem;\n}\n.form-control-color::-webkit-color-swatch {\n  height: 1.5em;\n  border-radius: 0.25rem;\n}\n\n.form-select {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem 0.375rem 2.25rem;\n  -moz-padding-start: calc(0.75rem - 3px);\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  background-color: #fff;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: left 0.75rem center;\n  background-size: 16px 12px;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-select {\n    transition: none;\n  }\n}\n.form-select:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n  padding-left: 0.75rem;\n  background-image: none;\n}\n.form-select:disabled {\n  background-color: #e9ecef;\n}\n.form-select:-moz-focusring {\n  color: transparent;\n  text-shadow: 0 0 0 #212529;\n}\n\n.form-select-sm {\n  padding-top: 0.25rem;\n  padding-bottom: 0.25rem;\n  padding-right: 0.5rem;\n  font-size: 0.875rem;\n}\n\n.form-select-lg {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  padding-right: 1rem;\n  font-size: 1.25rem;\n}\n\n.form-check {\n  display: block;\n  min-height: 1.5rem;\n  padding-right: 1.5em;\n  margin-bottom: 0.125rem;\n}\n.form-check .form-check-input {\n  float: right;\n  margin-right: -1.5em;\n}\n\n.form-check-input {\n  width: 1em;\n  height: 1em;\n  margin-top: 0.25em;\n  vertical-align: top;\n  background-color: #fff;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: contain;\n  border: 1px solid rgba(0, 0, 0, 0.25);\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n  -webkit-print-color-adjust: exact;\n  color-adjust: exact;\n}\n.form-check-input[type=checkbox] {\n  border-radius: 0.25em;\n}\n.form-check-input[type=radio] {\n  border-radius: 50%;\n}\n.form-check-input:active {\n  filter: brightness(90%);\n}\n.form-check-input:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-check-input:checked {\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.form-check-input:checked[type=checkbox] {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e\");\n}\n.form-check-input:checked[type=radio] {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-check-input[type=checkbox]:indeterminate {\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n}\n.form-check-input:disabled {\n  pointer-events: none;\n  filter: none;\n  opacity: 0.5;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n  opacity: 0.5;\n}\n\n.form-switch {\n  padding-right: 2.5em;\n}\n.form-switch .form-check-input {\n  width: 2em;\n  margin-right: -2.5em;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n  background-position: right center;\n  border-radius: 2em;\n  transition: background-position 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-switch .form-check-input {\n    transition: none;\n  }\n}\n.form-switch .form-check-input:focus {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n.form-switch .form-check-input:checked {\n  background-position: left center;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.form-check-inline {\n  display: inline-block;\n  margin-left: 1rem;\n}\n\n.btn-check {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\n  pointer-events: none;\n  filter: none;\n  opacity: 0.65;\n}\n\n.form-range {\n  width: 100%;\n  height: 1.5rem;\n  padding: 0;\n  background-color: transparent;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n.form-range:focus {\n  outline: 0;\n}\n.form-range:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range::-moz-focus-outer {\n  border: 0;\n}\n.form-range::-webkit-slider-thumb {\n  width: 1rem;\n  height: 1rem;\n  margin-top: -0.25rem;\n  background-color: #0d6efd;\n  border: 0;\n  border-radius: 1rem;\n  -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  -webkit-appearance: none;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-range::-webkit-slider-thumb {\n    -webkit-transition: none;\n    transition: none;\n  }\n}\n.form-range::-webkit-slider-thumb:active {\n  background-color: #b6d4fe;\n}\n.form-range::-webkit-slider-runnable-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n.form-range::-moz-range-thumb {\n  width: 1rem;\n  height: 1rem;\n  background-color: #0d6efd;\n  border: 0;\n  border-radius: 1rem;\n  -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  -moz-appearance: none;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-range::-moz-range-thumb {\n    -moz-transition: none;\n    transition: none;\n  }\n}\n.form-range::-moz-range-thumb:active {\n  background-color: #b6d4fe;\n}\n.form-range::-moz-range-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n.form-range:disabled {\n  pointer-events: none;\n}\n.form-range:disabled::-webkit-slider-thumb {\n  background-color: #adb5bd;\n}\n.form-range:disabled::-moz-range-thumb {\n  background-color: #adb5bd;\n}\n\n.form-floating {\n  position: relative;\n}\n.form-floating > .form-control,\n.form-floating > .form-select {\n  height: calc(3.5rem + 2px);\n  line-height: 1.25;\n}\n.form-floating > label {\n  position: absolute;\n  top: 0;\n  right: 0;\n  height: 100%;\n  padding: 1rem 0.75rem;\n  pointer-events: none;\n  border: 1px solid transparent;\n  transform-origin: 100% 0;\n  transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-floating > label {\n    transition: none;\n  }\n}\n.form-floating > .form-control {\n  padding: 1rem 0.75rem;\n}\n.form-floating > .form-control::-moz-placeholder {\n  color: transparent;\n}\n.form-floating > .form-control::placeholder {\n  color: transparent;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown) {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:-webkit-autofill {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-select {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem);\n}\n.form-floating > .form-control:focus ~ label,\n.form-floating > .form-control:not(:placeholder-shown) ~ label,\n.form-floating > .form-select ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem);\n}\n.form-floating > .form-control:-webkit-autofill ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem);\n}\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: stretch;\n  width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-select {\n  position: relative;\n  flex: 1 1 auto;\n  width: 1%;\n  min-width: 0;\n}\n.input-group > .form-control:focus,\n.input-group > .form-select:focus {\n  z-index: 3;\n}\n.input-group .btn {\n  position: relative;\n  z-index: 2;\n}\n.input-group .btn:focus {\n  z-index: 3;\n}\n\n.input-group-text {\n  display: flex;\n  align-items: center;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #e9ecef;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n  padding-left: 3rem;\n}\n\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n  margin-right: -1px;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #198754;\n}\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: 0.1rem;\n  font-size: 0.875rem;\n  color: #fff;\n  background-color: rgba(25, 135, 84, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n  border-color: #198754;\n  padding-left: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: left calc(0.375em + 0.1875rem) center;\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n  border-color: #198754;\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n  padding-left: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) left calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:valid, .form-select.is-valid {\n  border-color: #198754;\n}\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"] {\n  padding-left: 4.125rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\"), url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-position: left 0.75rem center, center left 2.25rem;\n  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\n  border-color: #198754;\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\n  border-color: #198754;\n}\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n  background-color: #198754;\n}\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #198754;\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n  margin-right: 0.5em;\n}\n\n.was-validated .input-group .form-control:valid, .input-group .form-control.is-valid,\n.was-validated .input-group .form-select:valid,\n.input-group .form-select.is-valid {\n  z-index: 1;\n}\n.was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus,\n.was-validated .input-group .form-select:valid:focus,\n.input-group .form-select.is-valid:focus {\n  z-index: 3;\n}\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #dc3545;\n}\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: 0.1rem;\n  font-size: 0.875rem;\n  color: #fff;\n  background-color: rgba(220, 53, 69, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n  border-color: #dc3545;\n  padding-left: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: left calc(0.375em + 0.1875rem) center;\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n  padding-left: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) left calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:invalid, .form-select.is-invalid {\n  border-color: #dc3545;\n}\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"] {\n  padding-left: 4.125rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\"), url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n  background-position: left 0.75rem center, center left 2.25rem;\n  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n  border-color: #dc3545;\n}\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n  background-color: #dc3545;\n}\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #dc3545;\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n  margin-right: 0.5em;\n}\n\n.was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid,\n.was-validated .input-group .form-select:invalid,\n.input-group .form-select.is-invalid {\n  z-index: 2;\n}\n.was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus,\n.was-validated .input-group .form-select:invalid:focus,\n.input-group .form-select.is-invalid:focus {\n  z-index: 3;\n}\n\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: center;\n  text-decoration: none;\n  vertical-align: middle;\n  cursor: pointer;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n  background-color: transparent;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  border-radius: 0.25rem;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .btn {\n    transition: none;\n  }\n}\n.btn:hover {\n  color: #212529;\n}\n.btn-check:focus + .btn, .btn:focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\n  pointer-events: none;\n  opacity: 0.65;\n}\n\n.btn-primary {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #0b5ed7;\n  border-color: #0a58ca;\n}\n.btn-check:focus + .btn-primary, .btn-primary:focus {\n  color: #fff;\n  background-color: #0b5ed7;\n  border-color: #0a58ca;\n  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\n}\n.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #0a58ca;\n  border-color: #0a53be;\n}\n.btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\n}\n.btn-primary:disabled, .btn-primary.disabled {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n\n.btn-secondary {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-secondary:hover {\n  color: #fff;\n  background-color: #5c636a;\n  border-color: #565e64;\n}\n.btn-check:focus + .btn-secondary, .btn-secondary:focus {\n  color: #fff;\n  background-color: #5c636a;\n  border-color: #565e64;\n  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\n}\n.btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #565e64;\n  border-color: #51585e;\n}\n.btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\n}\n.btn-secondary:disabled, .btn-secondary.disabled {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-success {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #157347;\n  border-color: #146c43;\n}\n.btn-check:focus + .btn-success, .btn-success:focus {\n  color: #fff;\n  background-color: #157347;\n  border-color: #146c43;\n  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\n}\n.btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle {\n  color: #fff;\n  background-color: #146c43;\n  border-color: #13653f;\n}\n.btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\n}\n.btn-success:disabled, .btn-success.disabled {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n\n.btn-info {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-info:hover {\n  color: #000;\n  background-color: #31d2f2;\n  border-color: #25cff2;\n}\n.btn-check:focus + .btn-info, .btn-info:focus {\n  color: #000;\n  background-color: #31d2f2;\n  border-color: #25cff2;\n  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\n}\n.btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle {\n  color: #000;\n  background-color: #3dd5f3;\n  border-color: #25cff2;\n}\n.btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\n}\n.btn-info:disabled, .btn-info.disabled {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n\n.btn-warning {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-warning:hover {\n  color: #000;\n  background-color: #ffca2c;\n  border-color: #ffc720;\n}\n.btn-check:focus + .btn-warning, .btn-warning:focus {\n  color: #000;\n  background-color: #ffca2c;\n  border-color: #ffc720;\n  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\n}\n.btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle {\n  color: #000;\n  background-color: #ffcd39;\n  border-color: #ffc720;\n}\n.btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\n}\n.btn-warning:disabled, .btn-warning.disabled {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-danger {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #bb2d3b;\n  border-color: #b02a37;\n}\n.btn-check:focus + .btn-danger, .btn-danger:focus {\n  color: #fff;\n  background-color: #bb2d3b;\n  border-color: #b02a37;\n  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\n}\n.btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #b02a37;\n  border-color: #a52834;\n}\n.btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\n}\n.btn-danger:disabled, .btn-danger.disabled {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-light {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-light:hover {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n}\n.btn-check:focus + .btn-light, .btn-light:focus {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\n}\n.btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n}\n.btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\n}\n.btn-light:disabled, .btn-light.disabled {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-dark {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-dark:hover {\n  color: #fff;\n  background-color: #1c1f23;\n  border-color: #1a1e21;\n}\n.btn-check:focus + .btn-dark, .btn-dark:focus {\n  color: #fff;\n  background-color: #1c1f23;\n  border-color: #1a1e21;\n  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\n}\n.btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #1a1e21;\n  border-color: #191c1f;\n}\n.btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\n}\n.btn-dark:disabled, .btn-dark.disabled {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n\n.btn-outline-primary {\n  color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-outline-primary:hover {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\n}\n.btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\n}\n.btn-outline-primary:disabled, .btn-outline-primary.disabled {\n  color: #0d6efd;\n  background-color: transparent;\n}\n\n.btn-outline-secondary {\n  color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-outline-secondary:hover {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus {\n  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\n}\n.btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\n}\n.btn-outline-secondary:disabled, .btn-outline-secondary.disabled {\n  color: #6c757d;\n  background-color: transparent;\n}\n\n.btn-outline-success {\n  color: #198754;\n  border-color: #198754;\n}\n.btn-outline-success:hover {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-check:focus + .btn-outline-success, .btn-outline-success:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\n}\n.btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\n}\n.btn-outline-success:disabled, .btn-outline-success.disabled {\n  color: #198754;\n  background-color: transparent;\n}\n\n.btn-outline-info {\n  color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-outline-info:hover {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-check:focus + .btn-outline-info, .btn-outline-info:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\n}\n.btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\n}\n.btn-outline-info:disabled, .btn-outline-info.disabled {\n  color: #0dcaf0;\n  background-color: transparent;\n}\n\n.btn-outline-warning {\n  color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-outline-warning:hover {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus {\n  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\n}\n.btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\n}\n.btn-outline-warning:disabled, .btn-outline-warning.disabled {\n  color: #ffc107;\n  background-color: transparent;\n}\n\n.btn-outline-danger {\n  color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-outline-danger:hover {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\n}\n.btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\n}\n.btn-outline-danger:disabled, .btn-outline-danger.disabled {\n  color: #dc3545;\n  background-color: transparent;\n}\n\n.btn-outline-light {\n  color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-outline-light:hover {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-check:focus + .btn-outline-light, .btn-outline-light:focus {\n  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\n}\n.btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\n}\n.btn-outline-light:disabled, .btn-outline-light.disabled {\n  color: #f8f9fa;\n  background-color: transparent;\n}\n\n.btn-outline-dark {\n  color: #212529;\n  border-color: #212529;\n}\n.btn-outline-dark:hover {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus {\n  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\n}\n.btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\n}\n.btn-outline-dark:disabled, .btn-outline-dark.disabled {\n  color: #212529;\n  background-color: transparent;\n}\n\n.btn-link {\n  font-weight: 400;\n  color: #0d6efd;\n  text-decoration: underline;\n}\n.btn-link:hover {\n  color: #0a58ca;\n}\n.btn-link:disabled, .btn-link.disabled {\n  color: #6c757d;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n.dropup,\n.dropend,\n.dropdown,\n.dropstart {\n  position: relative;\n}\n\n.dropdown-toggle {\n  white-space: nowrap;\n}\n.dropdown-toggle::after {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-left: 0.3em solid transparent;\n  border-bottom: 0;\n  border-right: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n  margin-right: 0;\n}\n\n.dropdown-menu {\n  position: absolute;\n  z-index: 1000;\n  display: none;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0;\n  font-size: 1rem;\n  color: #212529;\n  text-align: right;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n.dropdown-menu[data-bs-popper] {\n  top: 100%;\n  right: 0;\n  margin-top: 0.125rem;\n}\n\n.dropdown-menu-start {\n  --bs-position: start;\n}\n.dropdown-menu-start[data-bs-popper] {\n  left: auto;\n  right: 0;\n}\n\n.dropdown-menu-end {\n  --bs-position: end;\n}\n.dropdown-menu-end[data-bs-popper] {\n  left: 0;\n  right: auto;\n}\n\n@media (min-width: 576px) {\n  .dropdown-menu-sm-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-sm-start[data-bs-popper] {\n    left: auto;\n    right: 0;\n  }\n\n  .dropdown-menu-sm-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-sm-end[data-bs-popper] {\n    left: 0;\n    right: auto;\n  }\n}\n@media (min-width: 768px) {\n  .dropdown-menu-md-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-md-start[data-bs-popper] {\n    left: auto;\n    right: 0;\n  }\n\n  .dropdown-menu-md-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-md-end[data-bs-popper] {\n    left: 0;\n    right: auto;\n  }\n}\n@media (min-width: 992px) {\n  .dropdown-menu-lg-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-lg-start[data-bs-popper] {\n    left: auto;\n    right: 0;\n  }\n\n  .dropdown-menu-lg-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-lg-end[data-bs-popper] {\n    left: 0;\n    right: auto;\n  }\n}\n@media (min-width: 1200px) {\n  .dropdown-menu-xl-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-xl-start[data-bs-popper] {\n    left: auto;\n    right: 0;\n  }\n\n  .dropdown-menu-xl-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-xl-end[data-bs-popper] {\n    left: 0;\n    right: auto;\n  }\n}\n@media (min-width: 1400px) {\n  .dropdown-menu-xxl-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-xxl-start[data-bs-popper] {\n    left: auto;\n    right: 0;\n  }\n\n  .dropdown-menu-xxl-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-xxl-end[data-bs-popper] {\n    left: 0;\n    right: auto;\n  }\n}\n.dropup .dropdown-menu[data-bs-popper] {\n  top: auto;\n  bottom: 100%;\n  margin-top: 0;\n  margin-bottom: 0.125rem;\n}\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-left: 0.3em solid transparent;\n  border-bottom: 0.3em solid;\n  border-right: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n  margin-right: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n  top: 0;\n  left: auto;\n  right: 100%;\n  margin-top: 0;\n  margin-right: 0.125rem;\n}\n.dropend .dropdown-toggle::after {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-left: 0;\n  border-bottom: 0.3em solid transparent;\n  border-right: 0.3em solid;\n}\n.dropend .dropdown-toggle:empty::after {\n  margin-right: 0;\n}\n.dropend .dropdown-toggle::after {\n  vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n  top: 0;\n  left: 100%;\n  right: auto;\n  margin-top: 0;\n  margin-left: 0.125rem;\n}\n.dropstart .dropdown-toggle::after {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n}\n.dropstart .dropdown-toggle::after {\n  display: none;\n}\n.dropstart .dropdown-toggle::before {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-left: 0.3em solid;\n  border-bottom: 0.3em solid transparent;\n}\n.dropstart .dropdown-toggle:empty::after {\n  margin-right: 0;\n}\n.dropstart .dropdown-toggle::before {\n  vertical-align: 0;\n}\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.25rem 1rem;\n  clear: both;\n  font-weight: 400;\n  color: #212529;\n  text-align: inherit;\n  text-decoration: none;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n.dropdown-item:hover, .dropdown-item:focus {\n  color: #1e2125;\n  background-color: #e9ecef;\n}\n.dropdown-item.active, .dropdown-item:active {\n  color: #fff;\n  text-decoration: none;\n  background-color: #0d6efd;\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n  color: #adb5bd;\n  pointer-events: none;\n  background-color: transparent;\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 0.875rem;\n  color: #6c757d;\n  white-space: nowrap;\n}\n\n.dropdown-item-text {\n  display: block;\n  padding: 0.25rem 1rem;\n  color: #212529;\n}\n\n.dropdown-menu-dark {\n  color: #dee2e6;\n  background-color: #343a40;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.dropdown-menu-dark .dropdown-item {\n  color: #dee2e6;\n}\n.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus {\n  color: #fff;\n  background-color: rgba(255, 255, 255, 0.15);\n}\n.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active {\n  color: #fff;\n  background-color: #0d6efd;\n}\n.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled {\n  color: #adb5bd;\n}\n.dropdown-menu-dark .dropdown-divider {\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.dropdown-menu-dark .dropdown-item-text {\n  color: #dee2e6;\n}\n.dropdown-menu-dark .dropdown-header {\n  color: #adb5bd;\n}\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  flex: 1 1 auto;\n}\n.btn-group > .btn-check:checked + .btn,\n.btn-group > .btn-check:focus + .btn,\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn-check:checked + .btn,\n.btn-group-vertical > .btn-check:focus + .btn,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n  z-index: 1;\n}\n\n.btn-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n  width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n  margin-right: -1px;\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn:nth-child(n+3),\n.btn-group > :not(.btn-check) + .btn,\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.dropdown-toggle-split {\n  padding-left: 0.5625rem;\n  padding-right: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n  margin-right: 0;\n}\n.dropstart .dropdown-toggle-split::before {\n  margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-left: 0.375rem;\n  padding-right: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-left: 0.75rem;\n  padding-right: 0.75rem;\n}\n\n.btn-group-vertical {\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n  width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n  margin-top: -1px;\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group-vertical > .btn ~ .btn,\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n\n.nav {\n  display: flex;\n  flex-wrap: wrap;\n  padding-right: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 1rem;\n  color: #0d6efd;\n  text-decoration: none;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .nav-link {\n    transition: none;\n  }\n}\n.nav-link:hover, .nav-link:focus {\n  color: #0a58ca;\n}\n.nav-link.disabled {\n  color: #6c757d;\n  pointer-events: none;\n  cursor: default;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #dee2e6;\n}\n.nav-tabs .nav-link {\n  margin-bottom: -1px;\n  background: none;\n  border: 1px solid transparent;\n  border-top-right-radius: 0.25rem;\n  border-top-left-radius: 0.25rem;\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n  border-color: #e9ecef #e9ecef #dee2e6;\n  isolation: isolate;\n}\n.nav-tabs .nav-link.disabled {\n  color: #6c757d;\n  background-color: transparent;\n  border-color: transparent;\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n  color: #495057;\n  background-color: #fff;\n  border-color: #dee2e6 #dee2e6 #fff;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n\n.nav-pills .nav-link {\n  background: none;\n  border: 0;\n  border-radius: 0.25rem;\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #0d6efd;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n  flex: 1 1 auto;\n  text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n  flex-basis: 0;\n  flex-grow: 1;\n  text-align: center;\n}\n\n.nav-fill .nav-item .nav-link,\n.nav-justified .nav-item .nav-link {\n  width: 100%;\n}\n\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n\n.navbar {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n.navbar > .container,\n.navbar > .container-fluid,\n.navbar > .container-sm,\n.navbar > .container-md,\n.navbar > .container-lg,\n.navbar > .container-xl,\n.navbar > .container-xxl {\n  display: flex;\n  flex-wrap: inherit;\n  align-items: center;\n  justify-content: space-between;\n}\n.navbar-brand {\n  padding-top: 0.3125rem;\n  padding-bottom: 0.3125rem;\n  margin-left: 1rem;\n  font-size: 1.25rem;\n  text-decoration: none;\n  white-space: nowrap;\n}\n.navbar-nav {\n  display: flex;\n  flex-direction: column;\n  padding-right: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.navbar-nav .nav-link {\n  padding-left: 0;\n  padding-right: 0;\n}\n.navbar-nav .dropdown-menu {\n  position: static;\n}\n\n.navbar-text {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n  flex-basis: 100%;\n  flex-grow: 1;\n  align-items: center;\n}\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.25rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n  transition: box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .navbar-toggler {\n    transition: none;\n  }\n}\n.navbar-toggler:hover {\n  text-decoration: none;\n}\n.navbar-toggler:focus {\n  text-decoration: none;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem;\n}\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 100%;\n}\n\n.navbar-nav-scroll {\n  max-height: var(--bs-scroll-height, 75vh);\n  overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-sm .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-sm .navbar-nav .nav-link {\n    padding-left: 0.5rem;\n    padding-right: 0.5rem;\n  }\n  .navbar-expand-sm .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-sm .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-sm .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-sm .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-sm .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-left: 0;\n    border-right: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-sm .offcanvas-top,\n.navbar-expand-sm .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-sm .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-md .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-md .navbar-nav .nav-link {\n    padding-left: 0.5rem;\n    padding-right: 0.5rem;\n  }\n  .navbar-expand-md .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-md .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-md .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-md .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-md .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-left: 0;\n    border-right: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-md .offcanvas-top,\n.navbar-expand-md .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-md .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-lg .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-lg .navbar-nav .nav-link {\n    padding-left: 0.5rem;\n    padding-right: 0.5rem;\n  }\n  .navbar-expand-lg .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-lg .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-lg .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-lg .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-lg .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-left: 0;\n    border-right: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-lg .offcanvas-top,\n.navbar-expand-lg .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-lg .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 1200px) {\n  .navbar-expand-xl {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xl .navbar-nav .nav-link {\n    padding-left: 0.5rem;\n    padding-right: 0.5rem;\n  }\n  .navbar-expand-xl .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-xl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xl .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-xl .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-left: 0;\n    border-right: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-xl .offcanvas-top,\n.navbar-expand-xl .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-xl .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 1400px) {\n  .navbar-expand-xxl {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xxl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xxl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xxl .navbar-nav .nav-link {\n    padding-left: 0.5rem;\n    padding-right: 0.5rem;\n  }\n  .navbar-expand-xxl .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-xxl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xxl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xxl .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-xxl .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-left: 0;\n    border-right: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-xxl .offcanvas-top,\n.navbar-expand-xxl .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-xxl .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n.navbar-expand {\n  flex-wrap: nowrap;\n  justify-content: flex-start;\n}\n.navbar-expand .navbar-nav {\n  flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n  position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n  padding-left: 0.5rem;\n  padding-right: 0.5rem;\n}\n.navbar-expand .navbar-nav-scroll {\n  overflow: visible;\n}\n.navbar-expand .navbar-collapse {\n  display: flex !important;\n  flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n  display: none;\n}\n.navbar-expand .offcanvas-header {\n  display: none;\n}\n.navbar-expand .offcanvas {\n  position: inherit;\n  bottom: 0;\n  z-index: 1000;\n  flex-grow: 1;\n  visibility: visible !important;\n  background-color: transparent;\n  border-left: 0;\n  border-right: 0;\n  transition: none;\n  transform: none;\n}\n.navbar-expand .offcanvas-top,\n.navbar-expand .offcanvas-bottom {\n  height: auto;\n  border-top: 0;\n  border-bottom: 0;\n}\n.navbar-expand .offcanvas-body {\n  display: flex;\n  flex-grow: 0;\n  padding: 0;\n  overflow-y: visible;\n}\n\n.navbar-light .navbar-brand {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(0, 0, 0, 0.55);\n}\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n  color: rgba(0, 0, 0, 0.7);\n}\n.navbar-light .navbar-nav .nav-link.disabled {\n  color: rgba(0, 0, 0, 0.3);\n}\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .nav-link.active {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-toggler {\n  color: rgba(0, 0, 0, 0.55);\n  border-color: rgba(0, 0, 0, 0.1);\n}\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-light .navbar-text {\n  color: rgba(0, 0, 0, 0.55);\n}\n.navbar-light .navbar-text a,\n.navbar-light .navbar-text a:hover,\n.navbar-light .navbar-text a:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n  color: #fff;\n}\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n  color: #fff;\n}\n.navbar-dark .navbar-nav .nav-link {\n  color: rgba(255, 255, 255, 0.55);\n}\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n  color: rgba(255, 255, 255, 0.75);\n}\n.navbar-dark .navbar-nav .nav-link.disabled {\n  color: rgba(255, 255, 255, 0.25);\n}\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #fff;\n}\n.navbar-dark .navbar-toggler {\n  color: rgba(255, 255, 255, 0.55);\n  border-color: rgba(255, 255, 255, 0.1);\n}\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-dark .navbar-text {\n  color: rgba(255, 255, 255, 0.55);\n}\n.navbar-dark .navbar-text a,\n.navbar-dark .navbar-text a:hover,\n.navbar-dark .navbar-text a:focus {\n  color: #fff;\n}\n\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.25rem;\n}\n.card > hr {\n  margin-left: 0;\n  margin-right: 0;\n}\n.card > .list-group {\n  border-top: inherit;\n  border-bottom: inherit;\n}\n.card > .list-group:first-child {\n  border-top-width: 0;\n  border-top-right-radius: calc(0.25rem - 1px);\n  border-top-left-radius: calc(0.25rem - 1px);\n}\n.card > .list-group:last-child {\n  border-bottom-width: 0;\n  border-bottom-left-radius: calc(0.25rem - 1px);\n  border-bottom-right-radius: calc(0.25rem - 1px);\n}\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n  border-top: 0;\n}\n\n.card-body {\n  flex: 1 1 auto;\n  padding: 1rem 1rem;\n}\n\n.card-title {\n  margin-bottom: 0.5rem;\n}\n\n.card-subtitle {\n  margin-top: -0.25rem;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link + .card-link {\n  margin-right: 1rem;\n}\n\n.card-header {\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-header:first-child {\n  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n  padding: 0.5rem 1rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-footer:last-child {\n  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n  margin-left: -0.5rem;\n  margin-bottom: -0.5rem;\n  margin-right: -0.5rem;\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-left: -0.5rem;\n  margin-right: -0.5rem;\n}\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  padding: 1rem;\n  border-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n  width: 100%;\n}\n\n.card-img,\n.card-img-top {\n  border-top-right-radius: calc(0.25rem - 1px);\n  border-top-left-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-bottom {\n  border-bottom-left-radius: calc(0.25rem - 1px);\n  border-bottom-right-radius: calc(0.25rem - 1px);\n}\n\n.card-group > .card {\n  margin-bottom: 0.75rem;\n}\n@media (min-width: 576px) {\n  .card-group {\n    display: flex;\n    flex-flow: row wrap;\n  }\n  .card-group > .card {\n    flex: 1 0 0%;\n    margin-bottom: 0;\n  }\n  .card-group > .card + .card {\n    margin-right: 0;\n    border-right: 0;\n  }\n  .card-group > .card:not(:last-child) {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-top,\n.card-group > .card:not(:last-child) .card-header {\n    border-top-left-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-bottom,\n.card-group > .card:not(:last-child) .card-footer {\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:not(:first-child) {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-top,\n.card-group > .card:not(:first-child) .card-header {\n    border-top-right-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-bottom,\n.card-group > .card:not(:first-child) .card-footer {\n    border-bottom-right-radius: 0;\n  }\n}\n\n.accordion-button {\n  position: relative;\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: 1rem 1.25rem;\n  font-size: 1rem;\n  color: #212529;\n  text-align: right;\n  background-color: #fff;\n  border: 0;\n  border-radius: 0;\n  overflow-anchor: none;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .accordion-button {\n    transition: none;\n  }\n}\n.accordion-button:not(.collapsed) {\n  color: #0c63e4;\n  background-color: #e7f1ff;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125);\n}\n.accordion-button:not(.collapsed)::after {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n  transform: rotate(180deg);\n}\n.accordion-button::after {\n  flex-shrink: 0;\n  width: 1.25rem;\n  height: 1.25rem;\n  margin-right: auto;\n  content: \"\";\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-size: 1.25rem;\n  transition: transform 0.2s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .accordion-button::after {\n    transition: none;\n  }\n}\n.accordion-button:hover {\n  z-index: 2;\n}\n.accordion-button:focus {\n  z-index: 3;\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.accordion-header {\n  margin-bottom: 0;\n}\n\n.accordion-item {\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.accordion-item:first-of-type {\n  border-top-right-radius: 0.25rem;\n  border-top-left-radius: 0.25rem;\n}\n.accordion-item:first-of-type .accordion-button {\n  border-top-right-radius: calc(0.25rem - 1px);\n  border-top-left-radius: calc(0.25rem - 1px);\n}\n.accordion-item:not(:first-of-type) {\n  border-top: 0;\n}\n.accordion-item:last-of-type {\n  border-bottom-left-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n.accordion-item:last-of-type .accordion-button.collapsed {\n  border-bottom-left-radius: calc(0.25rem - 1px);\n  border-bottom-right-radius: calc(0.25rem - 1px);\n}\n.accordion-item:last-of-type .accordion-collapse {\n  border-bottom-left-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n\n.accordion-body {\n  padding: 1rem 1.25rem;\n}\n\n.accordion-flush .accordion-collapse {\n  border-width: 0;\n}\n.accordion-flush .accordion-item {\n  border-left: 0;\n  border-right: 0;\n  border-radius: 0;\n}\n.accordion-flush .accordion-item:first-child {\n  border-top: 0;\n}\n.accordion-flush .accordion-item:last-child {\n  border-bottom: 0;\n}\n.accordion-flush .accordion-item .accordion-button {\n  border-radius: 0;\n}\n\n.breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  padding: 0 0;\n  margin-bottom: 1rem;\n  list-style: none;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n  padding-right: 0.5rem;\n}\n.breadcrumb-item + .breadcrumb-item::before {\n  float: right;\n  padding-left: 0.5rem;\n  color: #6c757d;\n  content:  var(--bs-breadcrumb-divider, \"/\") ;\n}\n.breadcrumb-item.active {\n  color: #6c757d;\n}\n\n.pagination {\n  display: flex;\n  padding-right: 0;\n  list-style: none;\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  color: #0d6efd;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .page-link {\n    transition: none;\n  }\n}\n.page-link:hover {\n  z-index: 2;\n  color: #0a58ca;\n  background-color: #e9ecef;\n  border-color: #dee2e6;\n}\n.page-link:focus {\n  z-index: 3;\n  color: #0a58ca;\n  background-color: #e9ecef;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.page-item:not(:first-child) .page-link {\n  margin-right: -1px;\n}\n.page-item.active .page-link {\n  z-index: 3;\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.page-item.disabled .page-link {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #fff;\n  border-color: #dee2e6;\n}\n\n.page-link {\n  padding: 0.375rem 0.75rem;\n}\n\n.page-item:first-child .page-link {\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n.page-item:last-child .page-link {\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.25rem;\n}\n.pagination-lg .page-item:first-child .page-link {\n  border-top-right-radius: 0.3rem;\n  border-bottom-right-radius: 0.3rem;\n}\n.pagination-lg .page-item:last-child .page-link {\n  border-top-left-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n}\n.pagination-sm .page-item:first-child .page-link {\n  border-top-right-radius: 0.2rem;\n  border-bottom-right-radius: 0.2rem;\n}\n.pagination-sm .page-item:last-child .page-link {\n  border-top-left-radius: 0.2rem;\n  border-bottom-left-radius: 0.2rem;\n}\n\n.badge {\n  display: inline-block;\n  padding: 0.35em 0.65em;\n  font-size: 0.75em;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n}\n.badge:empty {\n  display: none;\n}\n\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.alert {\n  position: relative;\n  padding: 1rem 1rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.alert-heading {\n  color: inherit;\n}\n\n.alert-link {\n  font-weight: 700;\n}\n\n.alert-dismissible {\n  padding-left: 3rem;\n}\n.alert-dismissible .btn-close {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 2;\n  padding: 1.25rem 1rem;\n}\n\n.alert-primary {\n  color: #084298;\n  background-color: #cfe2ff;\n  border-color: #b6d4fe;\n}\n.alert-primary .alert-link {\n  color: #06357a;\n}\n\n.alert-secondary {\n  color: #41464b;\n  background-color: #e2e3e5;\n  border-color: #d3d6d8;\n}\n.alert-secondary .alert-link {\n  color: #34383c;\n}\n\n.alert-success {\n  color: #0f5132;\n  background-color: #d1e7dd;\n  border-color: #badbcc;\n}\n.alert-success .alert-link {\n  color: #0c4128;\n}\n\n.alert-info {\n  color: #055160;\n  background-color: #cff4fc;\n  border-color: #b6effb;\n}\n.alert-info .alert-link {\n  color: #04414d;\n}\n\n.alert-warning {\n  color: #664d03;\n  background-color: #fff3cd;\n  border-color: #ffecb5;\n}\n.alert-warning .alert-link {\n  color: #523e02;\n}\n\n.alert-danger {\n  color: #842029;\n  background-color: #f8d7da;\n  border-color: #f5c2c7;\n}\n.alert-danger .alert-link {\n  color: #6a1a21;\n}\n\n.alert-light {\n  color: #636464;\n  background-color: #fefefe;\n  border-color: #fdfdfe;\n}\n.alert-light .alert-link {\n  color: #4f5050;\n}\n\n.alert-dark {\n  color: #141619;\n  background-color: #d3d3d4;\n  border-color: #bcbebf;\n}\n.alert-dark .alert-link {\n  color: #101214;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n  0% {\n    background-position-x: 1rem;\n  }\n}\n\n@keyframes progress-bar-stripes {\n  0% {\n    background-position-x: 1rem;\n  }\n}\n.progress {\n  display: flex;\n  height: 1rem;\n  overflow: hidden;\n  font-size: 0.75rem;\n  background-color: #e9ecef;\n  border-radius: 0.25rem;\n}\n\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #0d6efd;\n  transition: width 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar {\n    transition: none;\n  }\n}\n\n.progress-bar-striped {\n  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n  -webkit-animation: 1s linear infinite progress-bar-stripes;\n  animation: 1s linear infinite progress-bar-stripes;\n}\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar-animated {\n    -webkit-animation: none;\n    animation: none;\n  }\n}\n\n.list-group {\n  display: flex;\n  flex-direction: column;\n  padding-right: 0;\n  margin-bottom: 0;\n  border-radius: 0.25rem;\n}\n\n.list-group-numbered {\n  list-style-type: none;\n  counter-reset: section;\n}\n.list-group-numbered > li::before {\n  content: counters(section, \".\") \". \";\n  counter-increment: section;\n}\n\n.list-group-item-action {\n  width: 100%;\n  color: #495057;\n  text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n  z-index: 1;\n  color: #495057;\n  text-decoration: none;\n  background-color: #f8f9fa;\n}\n.list-group-item-action:active {\n  color: #212529;\n  background-color: #e9ecef;\n}\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.5rem 1rem;\n  color: #212529;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.list-group-item:first-child {\n  border-top-right-radius: inherit;\n  border-top-left-radius: inherit;\n}\n.list-group-item:last-child {\n  border-bottom-left-radius: inherit;\n  border-bottom-right-radius: inherit;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #fff;\n}\n.list-group-item.active {\n  z-index: 2;\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.list-group-item + .list-group-item {\n  border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n  margin-top: -1px;\n  border-top-width: 1px;\n}\n\n.list-group-horizontal {\n  flex-direction: row;\n}\n.list-group-horizontal > .list-group-item:first-child {\n  border-bottom-right-radius: 0.25rem;\n  border-top-left-radius: 0;\n}\n.list-group-horizontal > .list-group-item:last-child {\n  border-top-left-radius: 0.25rem;\n  border-bottom-right-radius: 0;\n}\n.list-group-horizontal > .list-group-item.active {\n  margin-top: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item {\n  border-top-width: 1px;\n  border-right-width: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n  margin-right: -1px;\n  border-right-width: 1px;\n}\n\n@media (min-width: 576px) {\n  .list-group-horizontal-sm {\n    flex-direction: row;\n  }\n  .list-group-horizontal-sm > .list-group-item:first-child {\n    border-bottom-right-radius: 0.25rem;\n    border-top-left-radius: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item:last-child {\n    border-top-left-radius: 0.25rem;\n    border-bottom-right-radius: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-right-width: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n    margin-right: -1px;\n    border-right-width: 1px;\n  }\n}\n@media (min-width: 768px) {\n  .list-group-horizontal-md {\n    flex-direction: row;\n  }\n  .list-group-horizontal-md > .list-group-item:first-child {\n    border-bottom-right-radius: 0.25rem;\n    border-top-left-radius: 0;\n  }\n  .list-group-horizontal-md > .list-group-item:last-child {\n    border-top-left-radius: 0.25rem;\n    border-bottom-right-radius: 0;\n  }\n  .list-group-horizontal-md > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-md > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-right-width: 0;\n  }\n  .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n    margin-right: -1px;\n    border-right-width: 1px;\n  }\n}\n@media (min-width: 992px) {\n  .list-group-horizontal-lg {\n    flex-direction: row;\n  }\n  .list-group-horizontal-lg > .list-group-item:first-child {\n    border-bottom-right-radius: 0.25rem;\n    border-top-left-radius: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item:last-child {\n    border-top-left-radius: 0.25rem;\n    border-bottom-right-radius: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-right-width: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n    margin-right: -1px;\n    border-right-width: 1px;\n  }\n}\n@media (min-width: 1200px) {\n  .list-group-horizontal-xl {\n    flex-direction: row;\n  }\n  .list-group-horizontal-xl > .list-group-item:first-child {\n    border-bottom-right-radius: 0.25rem;\n    border-top-left-radius: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item:last-child {\n    border-top-left-radius: 0.25rem;\n    border-bottom-right-radius: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-right-width: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n    margin-right: -1px;\n    border-right-width: 1px;\n  }\n}\n@media (min-width: 1400px) {\n  .list-group-horizontal-xxl {\n    flex-direction: row;\n  }\n  .list-group-horizontal-xxl > .list-group-item:first-child {\n    border-bottom-right-radius: 0.25rem;\n    border-top-left-radius: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item:last-child {\n    border-top-left-radius: 0.25rem;\n    border-bottom-right-radius: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-right-width: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n    margin-right: -1px;\n    border-right-width: 1px;\n  }\n}\n.list-group-flush {\n  border-radius: 0;\n}\n.list-group-flush > .list-group-item {\n  border-width: 0 0 1px;\n}\n.list-group-flush > .list-group-item:last-child {\n  border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n  color: #084298;\n  background-color: #cfe2ff;\n}\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n  color: #084298;\n  background-color: #bacbe6;\n}\n.list-group-item-primary.list-group-item-action.active {\n  color: #fff;\n  background-color: #084298;\n  border-color: #084298;\n}\n\n.list-group-item-secondary {\n  color: #41464b;\n  background-color: #e2e3e5;\n}\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n  color: #41464b;\n  background-color: #cbccce;\n}\n.list-group-item-secondary.list-group-item-action.active {\n  color: #fff;\n  background-color: #41464b;\n  border-color: #41464b;\n}\n\n.list-group-item-success {\n  color: #0f5132;\n  background-color: #d1e7dd;\n}\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n  color: #0f5132;\n  background-color: #bcd0c7;\n}\n.list-group-item-success.list-group-item-action.active {\n  color: #fff;\n  background-color: #0f5132;\n  border-color: #0f5132;\n}\n\n.list-group-item-info {\n  color: #055160;\n  background-color: #cff4fc;\n}\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n  color: #055160;\n  background-color: #badce3;\n}\n.list-group-item-info.list-group-item-action.active {\n  color: #fff;\n  background-color: #055160;\n  border-color: #055160;\n}\n\n.list-group-item-warning {\n  color: #664d03;\n  background-color: #fff3cd;\n}\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n  color: #664d03;\n  background-color: #e6dbb9;\n}\n.list-group-item-warning.list-group-item-action.active {\n  color: #fff;\n  background-color: #664d03;\n  border-color: #664d03;\n}\n\n.list-group-item-danger {\n  color: #842029;\n  background-color: #f8d7da;\n}\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n  color: #842029;\n  background-color: #dfc2c4;\n}\n.list-group-item-danger.list-group-item-action.active {\n  color: #fff;\n  background-color: #842029;\n  border-color: #842029;\n}\n\n.list-group-item-light {\n  color: #636464;\n  background-color: #fefefe;\n}\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n  color: #636464;\n  background-color: #e5e5e5;\n}\n.list-group-item-light.list-group-item-action.active {\n  color: #fff;\n  background-color: #636464;\n  border-color: #636464;\n}\n\n.list-group-item-dark {\n  color: #141619;\n  background-color: #d3d3d4;\n}\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n  color: #141619;\n  background-color: #bebebf;\n}\n.list-group-item-dark.list-group-item-action.active {\n  color: #fff;\n  background-color: #141619;\n  border-color: #141619;\n}\n\n.btn-close {\n  box-sizing: content-box;\n  width: 1em;\n  height: 1em;\n  padding: 0.25em 0.25em;\n  color: #000;\n  background: transparent url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e\") center/1em auto no-repeat;\n  border: 0;\n  border-radius: 0.25rem;\n  opacity: 0.5;\n}\n.btn-close:hover {\n  color: #000;\n  text-decoration: none;\n  opacity: 0.75;\n}\n.btn-close:focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n  opacity: 1;\n}\n.btn-close:disabled, .btn-close.disabled {\n  pointer-events: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n  opacity: 0.25;\n}\n\n.btn-close-white {\n  filter: invert(1) grayscale(100%) brightness(200%);\n}\n\n.toast {\n  width: 350px;\n  max-width: 100%;\n  font-size: 0.875rem;\n  pointer-events: auto;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.1);\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n.toast.showing {\n  opacity: 0;\n}\n.toast:not(.show) {\n  display: none;\n}\n\n.toast-container {\n  width: -webkit-max-content;\n  width: -moz-max-content;\n  width: max-content;\n  max-width: 100%;\n  pointer-events: none;\n}\n.toast-container > :not(:last-child) {\n  margin-bottom: 0.75rem;\n}\n\n.toast-header {\n  display: flex;\n  align-items: center;\n  padding: 0.5rem 0.75rem;\n  color: #6c757d;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n  border-top-right-radius: calc(0.25rem - 1px);\n  border-top-left-radius: calc(0.25rem - 1px);\n}\n.toast-header .btn-close {\n  margin-left: -0.375rem;\n  margin-right: 0.75rem;\n}\n\n.toast-body {\n  padding: 0.75rem;\n  word-wrap: break-word;\n}\n\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  z-index: 1055;\n  display: none;\n  width: 100%;\n  height: 100%;\n  overflow-x: hidden;\n  overflow-y: auto;\n  outline: 0;\n}\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none;\n}\n.modal.fade .modal-dialog {\n  transition: transform 0.3s ease-out;\n  transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n  .modal.fade .modal-dialog {\n    transition: none;\n  }\n}\n.modal.show .modal-dialog {\n  transform: none;\n}\n.modal.modal-static .modal-dialog {\n  transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n  height: calc(100% - 1rem);\n}\n.modal-dialog-scrollable .modal-content {\n  max-height: 100%;\n  overflow: hidden;\n}\n.modal-dialog-scrollable .modal-body {\n  overflow-y: auto;\n}\n\n.modal-dialog-centered {\n  display: flex;\n  align-items: center;\n  min-height: calc(100% - 1rem);\n}\n\n.modal-content {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n  outline: 0;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  z-index: 1050;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  opacity: 0;\n}\n.modal-backdrop.show {\n  opacity: 0.5;\n}\n\n.modal-header {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n  border-bottom: 1px solid #dee2e6;\n  border-top-right-radius: calc(0.3rem - 1px);\n  border-top-left-radius: calc(0.3rem - 1px);\n}\n.modal-header .btn-close {\n  padding: 0.5rem 0.5rem;\n  margin: -0.5rem auto -0.5rem -0.5rem;\n}\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.modal-body {\n  position: relative;\n  flex: 1 1 auto;\n  padding: 1rem;\n}\n\n.modal-footer {\n  display: flex;\n  flex-wrap: wrap;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: flex-end;\n  padding: 0.75rem;\n  border-top: 1px solid #dee2e6;\n  border-bottom-left-radius: calc(0.3rem - 1px);\n  border-bottom-right-radius: calc(0.3rem - 1px);\n}\n.modal-footer > * {\n  margin: 0.25rem;\n}\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto;\n  }\n\n  .modal-dialog-scrollable {\n    height: calc(100% - 3.5rem);\n  }\n\n  .modal-dialog-centered {\n    min-height: calc(100% - 3.5rem);\n  }\n\n  .modal-sm {\n    max-width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg,\n.modal-xl {\n    max-width: 800px;\n  }\n}\n@media (min-width: 1200px) {\n  .modal-xl {\n    max-width: 1140px;\n  }\n}\n.modal-fullscreen {\n  width: 100vw;\n  max-width: none;\n  height: 100%;\n  margin: 0;\n}\n.modal-fullscreen .modal-content {\n  height: 100%;\n  border: 0;\n  border-radius: 0;\n}\n.modal-fullscreen .modal-header {\n  border-radius: 0;\n}\n.modal-fullscreen .modal-body {\n  overflow-y: auto;\n}\n.modal-fullscreen .modal-footer {\n  border-radius: 0;\n}\n\n@media (max-width: 575.98px) {\n  .modal-fullscreen-sm-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-sm-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-sm-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-sm-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-sm-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 767.98px) {\n  .modal-fullscreen-md-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-md-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-md-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-md-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-md-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 991.98px) {\n  .modal-fullscreen-lg-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-lg-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-lg-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-lg-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-lg-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 1199.98px) {\n  .modal-fullscreen-xl-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-xl-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-xl-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-xl-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-xl-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 1399.98px) {\n  .modal-fullscreen-xxl-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-xxl-down .modal-footer {\n    border-radius: 0;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1080;\n  display: block;\n  margin: 0;\n  font-family: var(--bs-font-sans-serif);\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: right;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  opacity: 0;\n}\n.tooltip.show {\n  opacity: 0.9;\n}\n.tooltip .tooltip-arrow {\n  position: absolute;\n  display: block;\n  width: 0.8rem;\n  height: 0.4rem;\n}\n.tooltip .tooltip-arrow::before {\n  position: absolute;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[data-popper-placement^=top] {\n  padding: 0.4rem 0;\n}\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\n  bottom: 0;\n}\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\n  top: -1px;\n  border-width: 0.4rem 0.4rem 0;\n  border-top-color: #000;\n}\n\n.bs-tooltip-end, .bs-tooltip-auto[data-popper-placement^=right] {\n  padding: 0 0.4rem;\n}\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\n  right: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\n  left: -1px;\n  border-width: 0.4rem 0 0.4rem 0.4rem;\n  border-left-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[data-popper-placement^=bottom] {\n  padding: 0.4rem 0;\n}\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\n  top: 0;\n}\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\n  bottom: -1px;\n  border-width: 0 0.4rem 0.4rem;\n  border-bottom-color: #000;\n}\n\n.bs-tooltip-start, .bs-tooltip-auto[data-popper-placement^=left] {\n  padding: 0 0.4rem;\n}\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\n  left: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\n  right: -1px;\n  border-width: 0.4rem 0.4rem 0.4rem 0;\n  border-right-color: #000;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 0.25rem;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0 ;\n  z-index: 1070;\n  display: block;\n  max-width: 276px;\n  font-family: var(--bs-font-sans-serif);\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: right;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n}\n.popover .popover-arrow {\n  position: absolute;\n  display: block;\n  width: 1rem;\n  height: 0.5rem;\n}\n.popover .popover-arrow::before, .popover .popover-arrow::after {\n  position: absolute;\n  display: block;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\n  bottom: calc(-0.5rem - 1px);\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\n  bottom: 0;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n  bottom: 1px;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: #fff;\n}\n\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\n  right: calc(-0.5rem - 1px);\n  width: 0.5rem;\n  height: 1rem;\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\n  right: 0;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n  right: 1px;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: #fff;\n}\n\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\n  top: calc(-0.5rem - 1px);\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\n  top: 0;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n  top: 1px;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: #fff;\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\n  position: absolute;\n  top: 0;\n  right: 50%;\n  display: block;\n  width: 1rem;\n  margin-right: -0.5rem;\n  content: \"\";\n  border-bottom: 1px solid #f0f0f0;\n}\n\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\n  left: calc(-0.5rem - 1px);\n  width: 0.5rem;\n  height: 1rem;\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\n  left: 0;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n  left: 1px;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: #fff;\n}\n\n.popover-header {\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  background-color: #f0f0f0;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  border-top-right-radius: calc(0.3rem - 1px);\n  border-top-left-radius: calc(0.3rem - 1px);\n}\n.popover-header:empty {\n  display: none;\n}\n\n.popover-body {\n  padding: 1rem 1rem;\n  color: #212529;\n}\n\n.carousel {\n  position: relative;\n}\n\n.carousel.pointer-event {\n  touch-action: pan-y;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  float: right;\n  width: 100%;\n  margin-left: -100%;\n  -webkit-backface-visibility: hidden;\n  backface-visibility: hidden;\n  transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-item {\n    transition: none;\n  }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n  transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n  transform: translateX(-100%);\n}\n.carousel-fade .carousel-item {\n  opacity: 0;\n  transition-property: opacity;\n  transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-start,\n.carousel-fade .carousel-item-prev.carousel-item-end {\n  z-index: 1;\n  opacity: 1;\n}\n.carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n  z-index: 0;\n  opacity: 0;\n  transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n    transition: none;\n  }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 15%;\n  padding: 0;\n  color: #fff;\n  text-align: center;\n  background: none;\n  border: 0;\n  opacity: 0.5;\n  transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-control-prev,\n.carousel-control-next {\n    transition: none;\n  }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  opacity: 0.9;\n}\n\n.carousel-control-prev {\n  right: 0;\n}\n\n.carousel-control-next {\n  left: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  background-repeat: no-repeat;\n  background-position: 50%;\n  background-size: 100% 100%;\n}\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n  position: absolute;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  z-index: 2;\n  display: flex;\n  justify-content: center;\n  padding: 0;\n  margin-left: 15%;\n  margin-bottom: 1rem;\n  margin-right: 15%;\n  list-style: none;\n}\n.carousel-indicators [data-bs-target] {\n  box-sizing: content-box;\n  flex: 0 1 auto;\n  width: 30px;\n  height: 3px;\n  padding: 0;\n  margin-left: 3px;\n  margin-right: 3px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 0;\n  border-top: 10px solid transparent;\n  border-bottom: 10px solid transparent;\n  opacity: 0.5;\n  transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-indicators [data-bs-target] {\n    transition: none;\n  }\n}\n.carousel-indicators .active {\n  opacity: 1;\n}\n\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  bottom: 1.25rem;\n  right: 15%;\n  padding-top: 1.25rem;\n  padding-bottom: 1.25rem;\n  color: #fff;\n  text-align: center;\n}\n\n.carousel-dark .carousel-control-next-icon,\n.carousel-dark .carousel-control-prev-icon {\n  filter: invert(1) grayscale(100);\n}\n.carousel-dark .carousel-indicators [data-bs-target] {\n  background-color: #000;\n}\n.carousel-dark .carousel-caption {\n  color: #000;\n}\n\n@-webkit-keyframes spinner-border {\n  to {\n    transform: rotate(360deg) ;\n  }\n}\n\n@keyframes spinner-border {\n  to {\n    transform: rotate(360deg) ;\n  }\n}\n.spinner-border {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: -0.125em;\n  border: 0.25em solid currentColor;\n  border-left-color: transparent;\n  border-radius: 50%;\n  -webkit-animation: 0.75s linear infinite spinner-border;\n  animation: 0.75s linear infinite spinner-border;\n}\n\n.spinner-border-sm {\n  width: 1rem;\n  height: 1rem;\n  border-width: 0.2em;\n}\n\n@-webkit-keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n\n@keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n.spinner-grow {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: -0.125em;\n  background-color: currentColor;\n  border-radius: 50%;\n  opacity: 0;\n  -webkit-animation: 0.75s linear infinite spinner-grow;\n  animation: 0.75s linear infinite spinner-grow;\n}\n\n.spinner-grow-sm {\n  width: 1rem;\n  height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .spinner-border,\n.spinner-grow {\n    -webkit-animation-duration: 1.5s;\n    animation-duration: 1.5s;\n  }\n}\n.offcanvas {\n  position: fixed;\n  bottom: 0;\n  z-index: 1045;\n  display: flex;\n  flex-direction: column;\n  max-width: 100%;\n  visibility: hidden;\n  background-color: #fff;\n  background-clip: padding-box;\n  outline: 0;\n  transition: transform 0.3s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .offcanvas {\n    transition: none;\n  }\n}\n\n.offcanvas-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  z-index: 1040;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n.offcanvas-backdrop.fade {\n  opacity: 0;\n}\n.offcanvas-backdrop.show {\n  opacity: 0.5;\n}\n\n.offcanvas-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n}\n.offcanvas-header .btn-close {\n  padding: 0.5rem 0.5rem;\n  margin-top: -0.5rem;\n  margin-left: -0.5rem;\n  margin-bottom: -0.5rem;\n}\n\n.offcanvas-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.offcanvas-body {\n  flex-grow: 1;\n  padding: 1rem 1rem;\n  overflow-y: auto;\n}\n\n.offcanvas-start {\n  top: 0;\n  right: 0;\n  width: 400px;\n  border-left: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateX(100%);\n}\n\n.offcanvas-end {\n  top: 0;\n  left: 0;\n  width: 400px;\n  border-right: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateX(-100%);\n}\n\n.offcanvas-top {\n  top: 0;\n  left: 0;\n  right: 0;\n  height: 30vh;\n  max-height: 100%;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateY(-100%);\n}\n\n.offcanvas-bottom {\n  left: 0;\n  right: 0;\n  height: 30vh;\n  max-height: 100%;\n  border-top: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateY(100%);\n}\n\n.offcanvas.show {\n  transform: none;\n}\n\n.placeholder {\n  display: inline-block;\n  min-height: 1em;\n  vertical-align: middle;\n  cursor: wait;\n  background-color: currentColor;\n  opacity: 0.5;\n}\n.placeholder.btn::before {\n  display: inline-block;\n  content: \"\";\n}\n\n.placeholder-xs {\n  min-height: 0.6em;\n}\n\n.placeholder-sm {\n  min-height: 0.8em;\n}\n\n.placeholder-lg {\n  min-height: 1.2em;\n}\n\n.placeholder-glow .placeholder {\n  -webkit-animation: placeholder-glow 2s ease-in-out infinite;\n  animation: placeholder-glow 2s ease-in-out infinite;\n}\n\n@-webkit-keyframes placeholder-glow {\n  50% {\n    opacity: 0.2;\n  }\n}\n\n@keyframes placeholder-glow {\n  50% {\n    opacity: 0.2;\n  }\n}\n.placeholder-wave {\n  -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n  mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n  -webkit-mask-size: 200% 100%;\n  mask-size: 200% 100%;\n  -webkit-animation: placeholder-wave 2s linear infinite;\n  animation: placeholder-wave 2s linear infinite;\n}\n\n@-webkit-keyframes placeholder-wave {\n  100% {\n    -webkit-mask-position: -200% 0%;\n    mask-position: -200% 0%;\n  }\n}\n\n@keyframes placeholder-wave {\n  100% {\n    -webkit-mask-position: -200% 0%;\n    mask-position: -200% 0%;\n  }\n}\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.link-primary {\n  color: #0d6efd;\n}\n.link-primary:hover, .link-primary:focus {\n  color: #0a58ca;\n}\n\n.link-secondary {\n  color: #6c757d;\n}\n.link-secondary:hover, .link-secondary:focus {\n  color: #565e64;\n}\n\n.link-success {\n  color: #198754;\n}\n.link-success:hover, .link-success:focus {\n  color: #146c43;\n}\n\n.link-info {\n  color: #0dcaf0;\n}\n.link-info:hover, .link-info:focus {\n  color: #3dd5f3;\n}\n\n.link-warning {\n  color: #ffc107;\n}\n.link-warning:hover, .link-warning:focus {\n  color: #ffcd39;\n}\n\n.link-danger {\n  color: #dc3545;\n}\n.link-danger:hover, .link-danger:focus {\n  color: #b02a37;\n}\n\n.link-light {\n  color: #f8f9fa;\n}\n.link-light:hover, .link-light:focus {\n  color: #f9fafb;\n}\n\n.link-dark {\n  color: #212529;\n}\n.link-dark:hover, .link-dark:focus {\n  color: #1a1e21;\n}\n\n.ratio {\n  position: relative;\n  width: 100%;\n}\n.ratio::before {\n  display: block;\n  padding-top: var(--bs-aspect-ratio);\n  content: \"\";\n}\n.ratio > * {\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.ratio-1x1 {\n  --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n  --bs-aspect-ratio: calc(3 / 4 * 100%);\n}\n\n.ratio-16x9 {\n  --bs-aspect-ratio: calc(9 / 16 * 100%);\n}\n\n.ratio-21x9 {\n  --bs-aspect-ratio: calc(9 / 21 * 100%);\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  z-index: 1030;\n}\n\n.sticky-top {\n  position: -webkit-sticky;\n  position: sticky;\n  top: 0;\n  z-index: 1020;\n}\n\n@media (min-width: 576px) {\n  .sticky-sm-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 768px) {\n  .sticky-md-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 992px) {\n  .sticky-lg-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1200px) {\n  .sticky-xl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1400px) {\n  .sticky-xxl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  z-index: 1;\n  content: \"\";\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: 0.25;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.float-start {\n  float: right !important;\n}\n\n.float-end {\n  float: left !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-25 {\n  opacity: 0.25 !important;\n}\n\n.opacity-50 {\n  opacity: 0.5 !important;\n}\n\n.opacity-75 {\n  opacity: 0.75 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important;\n}\n\n.top-0 {\n  top: 0 !important;\n}\n\n.top-50 {\n  top: 50% !important;\n}\n\n.top-100 {\n  top: 100% !important;\n}\n\n.bottom-0 {\n  bottom: 0 !important;\n}\n\n.bottom-50 {\n  bottom: 50% !important;\n}\n\n.bottom-100 {\n  bottom: 100% !important;\n}\n\n.start-0 {\n  right: 0 !important;\n}\n\n.start-50 {\n  right: 50% !important;\n}\n\n.start-100 {\n  right: 100% !important;\n}\n\n.end-0 {\n  left: 0 !important;\n}\n\n.end-50 {\n  left: 50% !important;\n}\n\n.end-100 {\n  left: 100% !important;\n}\n\n.translate-middle {\n  transform: translate(50%, -50%) !important;\n}\n\n.translate-middle-x {\n  transform: translateX(50%) !important;\n}\n\n.translate-middle-y {\n  transform: translateY(-50%) !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-end {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-end-0 {\n  border-left: 0 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-start {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-start-0 {\n  border-right: 0 !important;\n}\n\n.border-primary {\n  border-color: #0d6efd !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #198754 !important;\n}\n\n.border-info {\n  border-color: #0dcaf0 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #212529 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.border-1 {\n  border-width: 1px !important;\n}\n\n.border-2 {\n  border-width: 2px !important;\n}\n\n.border-3 {\n  border-width: 3px !important;\n}\n\n.border-4 {\n  border-width: 4px !important;\n}\n\n.border-5 {\n  border-width: 5px !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.vw-100 {\n  width: 100vw !important;\n}\n\n.min-vw-100 {\n  min-width: 100vw !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.vh-100 {\n  height: 100vh !important;\n}\n\n.min-vh-100 {\n  min-height: 100vh !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.gap-0 {\n  gap: 0 !important;\n}\n\n.gap-1 {\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  gap: 1rem !important;\n}\n\n.gap-4 {\n  gap: 1.5rem !important;\n}\n\n.gap-5 {\n  gap: 3rem !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-left: 0 !important;\n  margin-right: 0 !important;\n}\n\n.mx-1 {\n  margin-left: 0.25rem !important;\n  margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-left: 0.5rem !important;\n  margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-left: 1rem !important;\n  margin-right: 1rem !important;\n}\n\n.mx-4 {\n  margin-left: 1.5rem !important;\n  margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-left: 3rem !important;\n  margin-right: 3rem !important;\n}\n\n.mx-auto {\n  margin-left: auto !important;\n  margin-right: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-left: 0 !important;\n}\n\n.me-1 {\n  margin-left: 0.25rem !important;\n}\n\n.me-2 {\n  margin-left: 0.5rem !important;\n}\n\n.me-3 {\n  margin-left: 1rem !important;\n}\n\n.me-4 {\n  margin-left: 1.5rem !important;\n}\n\n.me-5 {\n  margin-left: 3rem !important;\n}\n\n.me-auto {\n  margin-left: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-right: 0 !important;\n}\n\n.ms-1 {\n  margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-right: 1rem !important;\n}\n\n.ms-4 {\n  margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-right: 3rem !important;\n}\n\n.ms-auto {\n  margin-right: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-left: 0 !important;\n  padding-right: 0 !important;\n}\n\n.px-1 {\n  padding-left: 0.25rem !important;\n  padding-right: 0.25rem !important;\n}\n\n.px-2 {\n  padding-left: 0.5rem !important;\n  padding-right: 0.5rem !important;\n}\n\n.px-3 {\n  padding-left: 1rem !important;\n  padding-right: 1rem !important;\n}\n\n.px-4 {\n  padding-left: 1.5rem !important;\n  padding-right: 1.5rem !important;\n}\n\n.px-5 {\n  padding-left: 3rem !important;\n  padding-right: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-left: 0 !important;\n}\n\n.pe-1 {\n  padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-left: 1rem !important;\n}\n\n.pe-4 {\n  padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-left: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-right: 0 !important;\n}\n\n.ps-1 {\n  padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-right: 1rem !important;\n}\n\n.ps-4 {\n  padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-right: 3rem !important;\n}\n\n.font-monospace {\n  font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n  font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n  font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n  font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n  font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n  font-size: 1.25rem !important;\n}\n\n.fs-6 {\n  font-size: 1rem !important;\n}\n\n.fst-italic {\n  font-style: italic !important;\n}\n\n.fst-normal {\n  font-style: normal !important;\n}\n\n.fw-light {\n  font-weight: 300 !important;\n}\n\n.fw-lighter {\n  font-weight: lighter !important;\n}\n\n.fw-normal {\n  font-weight: 400 !important;\n}\n\n.fw-bold {\n  font-weight: 700 !important;\n}\n\n.fw-bolder {\n  font-weight: bolder !important;\n}\n\n.lh-1 {\n  line-height: 1 !important;\n}\n\n.lh-sm {\n  line-height: 1.25 !important;\n}\n\n.lh-base {\n  line-height: 1.5 !important;\n}\n\n.lh-lg {\n  line-height: 2 !important;\n}\n\n.text-start {\n  text-align: right !important;\n}\n\n.text-end {\n  text-align: left !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n.text-decoration-none {\n  text-decoration: none !important;\n}\n\n.text-decoration-underline {\n  text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n  text-decoration: line-through !important;\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.text-wrap {\n  white-space: normal !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n.text-primary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n  --bs-text-opacity: 1;\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  --bs-text-opacity: 1;\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  --bs-text-opacity: 1;\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-reset {\n  --bs-text-opacity: 1;\n  color: inherit !important;\n}\n\n.text-opacity-25 {\n  --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n  --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n  --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n  --bs-text-opacity: 1;\n}\n\n.bg-primary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n  --bs-bg-opacity: 1;\n  background-color: transparent !important;\n}\n\n.bg-opacity-10 {\n  --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n  --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n  --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n  --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n  --bs-bg-opacity: 1;\n}\n\n.bg-gradient {\n  background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n  -webkit-user-select: all !important;\n  -moz-user-select: all !important;\n  user-select: all !important;\n}\n\n.user-select-auto {\n  -webkit-user-select: auto !important;\n  -moz-user-select: auto !important;\n  user-select: auto !important;\n}\n\n.user-select-none {\n  -webkit-user-select: none !important;\n  -moz-user-select: none !important;\n  user-select: none !important;\n}\n\n.pe-none {\n  pointer-events: none !important;\n}\n\n.pe-auto {\n  pointer-events: auto !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.rounded-1 {\n  border-radius: 0.2rem !important;\n}\n\n.rounded-2 {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-3 {\n  border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-pill {\n  border-radius: 50rem !important;\n}\n\n.rounded-top {\n  border-top-right-radius: 0.25rem !important;\n  border-top-left-radius: 0.25rem !important;\n}\n\n.rounded-end {\n  border-top-left-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-left-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-start {\n  border-bottom-right-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-start {\n    float: right !important;\n  }\n\n  .float-sm-end {\n    float: left !important;\n  }\n\n  .float-sm-none {\n    float: none !important;\n  }\n\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-sm-0 {\n    gap: 0 !important;\n  }\n\n  .gap-sm-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-sm-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-sm-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-sm-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-sm-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-sm-start {\n    text-align: right !important;\n  }\n\n  .text-sm-end {\n    text-align: left !important;\n  }\n\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 768px) {\n  .float-md-start {\n    float: right !important;\n  }\n\n  .float-md-end {\n    float: left !important;\n  }\n\n  .float-md-none {\n    float: none !important;\n  }\n\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-md-0 {\n    gap: 0 !important;\n  }\n\n  .gap-md-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-md-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-md-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-md-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-md-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-right: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-md-start {\n    text-align: right !important;\n  }\n\n  .text-md-end {\n    text-align: left !important;\n  }\n\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 992px) {\n  .float-lg-start {\n    float: right !important;\n  }\n\n  .float-lg-end {\n    float: left !important;\n  }\n\n  .float-lg-none {\n    float: none !important;\n  }\n\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-lg-0 {\n    gap: 0 !important;\n  }\n\n  .gap-lg-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-lg-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-lg-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-lg-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-lg-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-lg-start {\n    text-align: right !important;\n  }\n\n  .text-lg-end {\n    text-align: left !important;\n  }\n\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .float-xl-start {\n    float: right !important;\n  }\n\n  .float-xl-end {\n    float: left !important;\n  }\n\n  .float-xl-none {\n    float: none !important;\n  }\n\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-xl-start {\n    text-align: right !important;\n  }\n\n  .text-xl-end {\n    text-align: left !important;\n  }\n\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1400px) {\n  .float-xxl-start {\n    float: right !important;\n  }\n\n  .float-xxl-end {\n    float: left !important;\n  }\n\n  .float-xxl-none {\n    float: none !important;\n  }\n\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xxl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xxl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xxl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xxl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xxl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xxl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-xxl-start {\n    text-align: right !important;\n  }\n\n  .text-xxl-end {\n    text-align: left !important;\n  }\n\n  .text-xxl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .fs-1 {\n    font-size: 2.5rem !important;\n  }\n\n  .fs-2 {\n    font-size: 2rem !important;\n  }\n\n  .fs-3 {\n    font-size: 1.75rem !important;\n  }\n\n  .fs-4 {\n    font-size: 1.5rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.rtl.css.map */","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n  @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n  @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n  @error \"`#{$rfs-factor}` is not a valid  $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n  $dividend: abs($dividend);\n  $divisor: abs($divisor);\n  @if $dividend == 0 {\n    @return 0;\n  }\n  @if $divisor == 0 {\n    @error \"Cannot divide by 0\";\n  }\n  $remainder: $dividend;\n  $result: 0;\n  $factor: 10;\n  @while ($remainder > 0 and $precision >= 0) {\n    $quotient: 0;\n    @while ($remainder >= $divisor) {\n      $remainder: $remainder - $divisor;\n      $quotient: $quotient + 1;\n    }\n    $result: $result * 10 + $quotient;\n    $factor: $factor * .1;\n    $remainder: $remainder * 10;\n    $precision: $precision - 1;\n    @if ($precision < 0 and $remainder >= $divisor * 5) {\n      $result: $result + 1;\n    }\n  }\n  $result: $result * $factor * $sign;\n  $dividend-unit: unit($dividend);\n  $divisor-unit: unit($divisor);\n  $unit-map: (\n    \"px\": 1px,\n    \"rem\": 1rem,\n    \"em\": 1em,\n    \"%\": 1%\n  );\n  @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n    $result: $result * map-get($unit-map, $dividend-unit);\n  }\n  @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n  $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n  $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n  $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n  $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n  @if $rfs-two-dimensional {\n    @if $rfs-mode == max-media-query {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n    @else {\n      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n        @content;\n      }\n    }\n  }\n  @else {\n    @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n      @content;\n    }\n  }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n  @if $rfs-class == disable and $rfs-mode == max-media-query {\n    // Adding an extra class increases specificity, which prevents the media query to override the property\n    &,\n    .disable-rfs &,\n    &.disable-rfs {\n      @content;\n    }\n  }\n  @else if $rfs-class == enable and $rfs-mode == min-media-query {\n    .enable-rfs &,\n    &.enable-rfs {\n      @content;\n    }\n  }\n  @else {\n    @content;\n  }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n  @if $rfs-class == enable {\n    @if $rfs-mode == min-media-query {\n      @content;\n    }\n\n    @include _rfs-media-query {\n      .enable-rfs &,\n      &.enable-rfs {\n        @content;\n      }\n    }\n  }\n  @else {\n    @if $rfs-class == disable and $rfs-mode == min-media-query {\n      .disable-rfs &,\n      &.disable-rfs {\n        @content;\n      }\n    }\n    @include _rfs-media-query {\n      @content;\n    }\n  }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      @if $unit == px {\n        // Convert to rem if needed\n        $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n      }\n      @else if $unit == rem {\n        // Convert to px if needed\n        $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n      }\n      @else {\n        // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n        $val: $val + ' ' + $value;\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n  // Convert to list\n  $values: if(type-of($values) != list, ($values,), $values);\n\n  $val: '';\n\n  // Loop over each value and calculate value\n  @each $value in $values {\n    @if $value == 0 {\n      $val: $val + ' 0';\n    }\n\n    @else {\n      // Cache $value unit\n      $unit: if(type-of($value) == \"number\", unit($value), false);\n\n      // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n      @if not $unit or $unit != px and $unit != rem {\n        $val: $val + ' ' + $value;\n      }\n\n      @else {\n        // Remove unit from $value for calculations\n        $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n        // Only add the media query if the value is greater than the minimum value\n        @if abs($value) <= $rfs-base-value or not $enable-rfs {\n          $val: $val + ' ' +  if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n        }\n        @else {\n          // Calculate the minimum value\n          $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n          // Calculate difference between $value and the minimum value\n          $value-diff: abs($value) - $value-min;\n\n          // Base value formatting\n          $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n          // Use negative value if needed\n          $min-width: if($value < 0, -$min-width, $min-width);\n\n          // Use `vmin` if two-dimensional is enabled\n          $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n          // Calculate the variable width between 0 and $rfs-breakpoint\n          $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n          // Return the calculated value\n          $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n        }\n      }\n    }\n  }\n\n  // Remove first space\n  @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n  @if $values != null {\n    $val: rfs-value($values);\n    $fluidVal: rfs-fluid-value($values);\n\n    // Do not print the media query if responsive & non-responsive values are the same\n    @if $val == $fluidVal {\n      #{$property}: $val;\n    }\n    @else {\n      @include _rfs-rule {\n        #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n        // Include safari iframe resize fix if needed\n        min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n      }\n\n      @include _rfs-media-query-rule {\n        #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n      }\n    }\n  }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n  @include rfs($value);\n}\n\n@mixin padding($value) {\n  @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n  @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n  @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n  @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n  @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n  @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n  @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n  @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n  @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n  @include rfs($value, margin-left);\n}\n","// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if type-of($value) == number {\n      $return: append($return, max($value, 0));\n    } @else {\n      $return: append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-left-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-top-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-bottom-left-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n","@charset \"UTF-8\";\n/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root {\n  --bs-blue: #0d6efd;\n  --bs-indigo: #6610f2;\n  --bs-purple: #6f42c1;\n  --bs-pink: #d63384;\n  --bs-red: #dc3545;\n  --bs-orange: #fd7e14;\n  --bs-yellow: #ffc107;\n  --bs-green: #198754;\n  --bs-teal: #20c997;\n  --bs-cyan: #0dcaf0;\n  --bs-white: #fff;\n  --bs-gray: #6c757d;\n  --bs-gray-dark: #343a40;\n  --bs-gray-100: #f8f9fa;\n  --bs-gray-200: #e9ecef;\n  --bs-gray-300: #dee2e6;\n  --bs-gray-400: #ced4da;\n  --bs-gray-500: #adb5bd;\n  --bs-gray-600: #6c757d;\n  --bs-gray-700: #495057;\n  --bs-gray-800: #343a40;\n  --bs-gray-900: #212529;\n  --bs-primary: #0d6efd;\n  --bs-secondary: #6c757d;\n  --bs-success: #198754;\n  --bs-info: #0dcaf0;\n  --bs-warning: #ffc107;\n  --bs-danger: #dc3545;\n  --bs-light: #f8f9fa;\n  --bs-dark: #212529;\n  --bs-primary-rgb: 13, 110, 253;\n  --bs-secondary-rgb: 108, 117, 125;\n  --bs-success-rgb: 25, 135, 84;\n  --bs-info-rgb: 13, 202, 240;\n  --bs-warning-rgb: 255, 193, 7;\n  --bs-danger-rgb: 220, 53, 69;\n  --bs-light-rgb: 248, 249, 250;\n  --bs-dark-rgb: 33, 37, 41;\n  --bs-white-rgb: 255, 255, 255;\n  --bs-black-rgb: 0, 0, 0;\n  --bs-body-rgb: 33, 37, 41;\n  --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n  --bs-body-font-family: var(--bs-font-sans-serif);\n  --bs-body-font-size: 1rem;\n  --bs-body-font-weight: 400;\n  --bs-body-line-height: 1.5;\n  --bs-body-color: #212529;\n  --bs-body-bg: #fff;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  :root {\n    scroll-behavior: smooth;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: var(--bs-body-font-family);\n  font-size: var(--bs-body-font-size);\n  font-weight: var(--bs-body-font-weight);\n  line-height: var(--bs-body-line-height);\n  color: var(--bs-body-color);\n  text-align: var(--bs-body-text-align);\n  background-color: var(--bs-body-bg);\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n  margin: 1rem 0;\n  color: inherit;\n  background-color: currentColor;\n  border: 0;\n  opacity: 0.25;\n}\n\nhr:not([size]) {\n  height: 1px;\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\nh1, .h1 {\n  font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n  h1, .h1 {\n    font-size: 2.5rem;\n  }\n}\n\nh2, .h2 {\n  font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n  h2, .h2 {\n    font-size: 2rem;\n  }\n}\n\nh3, .h3 {\n  font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n  h3, .h3 {\n    font-size: 1.75rem;\n  }\n}\n\nh4, .h4 {\n  font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n  h4, .h4 {\n    font-size: 1.5rem;\n  }\n}\n\nh5, .h5 {\n  font-size: 1.25rem;\n}\n\nh6, .h6 {\n  font-size: 1rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-bs-original-title] {\n  text-decoration: underline dotted;\n  cursor: help;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: 0.5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall, .small {\n  font-size: 0.875em;\n}\n\nmark, .mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 0.75em;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\na {\n  color: #0d6efd;\n  text-decoration: underline;\n}\na:hover {\n  color: #0a58ca;\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n  color: inherit;\n  text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: var(--bs-font-monospace);\n  font-size: 1em;\n  direction: ltr /* rtl:ignore */;\n  unicode-bidi: bidi-override;\n}\n\npre {\n  display: block;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  font-size: 0.875em;\n}\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\ncode {\n  font-size: 0.875em;\n  color: #d63384;\n  word-wrap: break-word;\n}\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 0.875em;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\nkbd kbd {\n  padding: 0;\n  font-size: 1em;\n  font-weight: 700;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  color: #6c757d;\n  text-align: left;\n}\n\nth {\n  text-align: inherit;\n  text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\nlabel {\n  display: inline-block;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n[role=button] {\n  cursor: pointer;\n}\n\nselect {\n  word-wrap: normal;\n}\nselect:disabled {\n  opacity: 1;\n}\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n  -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n  cursor: pointer;\n}\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ntextarea {\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  float: left;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 0.5rem;\n  font-size: calc(1.275rem + 0.3vw);\n  line-height: inherit;\n}\n@media (min-width: 1200px) {\n  legend {\n    font-size: 1.5rem;\n  }\n}\nlegend + * {\n  clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n[type=search] {\n  outline-offset: -2px;\n  -webkit-appearance: textfield;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n::file-selector-button {\n  font: inherit;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\niframe {\n  border: 0;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[hidden] {\n  display: none !important;\n}\n\n.lead {\n  font-size: 1.25rem;\n  font-weight: 300;\n}\n\n.display-1 {\n  font-size: calc(1.625rem + 4.5vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-1 {\n    font-size: 5rem;\n  }\n}\n\n.display-2 {\n  font-size: calc(1.575rem + 3.9vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-2 {\n    font-size: 4.5rem;\n  }\n}\n\n.display-3 {\n  font-size: calc(1.525rem + 3.3vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-3 {\n    font-size: 4rem;\n  }\n}\n\n.display-4 {\n  font-size: calc(1.475rem + 2.7vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-4 {\n    font-size: 3.5rem;\n  }\n}\n\n.display-5 {\n  font-size: calc(1.425rem + 2.1vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-5 {\n    font-size: 3rem;\n  }\n}\n\n.display-6 {\n  font-size: calc(1.375rem + 1.5vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-6 {\n    font-size: 2.5rem;\n  }\n}\n\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline-item {\n  display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n  margin-right: 0.5rem;\n}\n\n.initialism {\n  font-size: 0.875em;\n  text-transform: uppercase;\n}\n\n.blockquote {\n  margin-bottom: 1rem;\n  font-size: 1.25rem;\n}\n.blockquote > :last-child {\n  margin-bottom: 0;\n}\n\n.blockquote-footer {\n  margin-top: -1rem;\n  margin-bottom: 1rem;\n  font-size: 0.875em;\n  color: #6c757d;\n}\n.blockquote-footer::before {\n  content: \"鈥斅燶";\n}\n\n.img-fluid {\n  max-width: 100%;\n  height: auto;\n}\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  border-radius: 0.25rem;\n  max-width: 100%;\n  height: auto;\n}\n\n.figure {\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: 0.5rem;\n  line-height: 1;\n}\n\n.figure-caption {\n  font-size: 0.875em;\n  color: #6c757d;\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n  width: 100%;\n  padding-right: var(--bs-gutter-x, 0.75rem);\n  padding-left: var(--bs-gutter-x, 0.75rem);\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container-sm, .container {\n    max-width: 540px;\n  }\n}\n@media (min-width: 768px) {\n  .container-md, .container-sm, .container {\n    max-width: 720px;\n  }\n}\n@media (min-width: 992px) {\n  .container-lg, .container-md, .container-sm, .container {\n    max-width: 960px;\n  }\n}\n@media (min-width: 1200px) {\n  .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1140px;\n  }\n}\n@media (min-width: 1400px) {\n  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1320px;\n  }\n}\n.row {\n  --bs-gutter-x: 1.5rem;\n  --bs-gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--bs-gutter-y) * -1);\n  margin-right: calc(var(--bs-gutter-x) * -.5);\n  margin-left: calc(var(--bs-gutter-x) * -.5);\n}\n.row > * {\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%;\n  padding-right: calc(var(--bs-gutter-x) * .5);\n  padding-left: calc(var(--bs-gutter-x) * .5);\n  margin-top: var(--bs-gutter-y);\n}\n\n.col {\n  flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.row-cols-1 > * {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.row-cols-2 > * {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.row-cols-3 > * {\n  flex: 0 0 auto;\n  width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.row-cols-5 > * {\n  flex: 0 0 auto;\n  width: 20%;\n}\n\n.row-cols-6 > * {\n  flex: 0 0 auto;\n  width: 16.6666666667%;\n}\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.col-1 {\n  flex: 0 0 auto;\n  width: 8.33333333%;\n}\n\n.col-2 {\n  flex: 0 0 auto;\n  width: 16.66666667%;\n}\n\n.col-3 {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 auto;\n  width: 33.33333333%;\n}\n\n.col-5 {\n  flex: 0 0 auto;\n  width: 41.66666667%;\n}\n\n.col-6 {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 auto;\n  width: 58.33333333%;\n}\n\n.col-8 {\n  flex: 0 0 auto;\n  width: 66.66666667%;\n}\n\n.col-9 {\n  flex: 0 0 auto;\n  width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 auto;\n  width: 83.33333333%;\n}\n\n.col-11 {\n  flex: 0 0 auto;\n  width: 91.66666667%;\n}\n\n.col-12 {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.offset-1 {\n  margin-left: 8.33333333%;\n}\n\n.offset-2 {\n  margin-left: 16.66666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.33333333%;\n}\n\n.offset-5 {\n  margin-left: 41.66666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.33333333%;\n}\n\n.offset-8 {\n  margin-left: 66.66666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.33333333%;\n}\n\n.offset-11 {\n  margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n  --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n  --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n  --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n  --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n  --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n  --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n  --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n  --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n  --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n  --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n  --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n  --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-sm-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-sm-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-sm-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-sm-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-sm-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-sm-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-sm-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-sm-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-sm-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-sm-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-sm-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-sm-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-sm-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-sm-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-sm-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-sm-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-sm-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-sm-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-sm-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n\n  .offset-sm-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-sm-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n\n  .offset-sm-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-sm-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n\n  .offset-sm-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-sm-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n\n  .offset-sm-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-sm-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-sm-0,\n.gx-sm-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-sm-0,\n.gy-sm-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-sm-1,\n.gx-sm-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-sm-1,\n.gy-sm-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-sm-2,\n.gx-sm-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-sm-2,\n.gy-sm-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-sm-3,\n.gx-sm-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-sm-3,\n.gy-sm-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-sm-4,\n.gx-sm-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-sm-4,\n.gy-sm-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-sm-5,\n.gx-sm-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-sm-5,\n.gy-sm-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 768px) {\n  .col-md {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-md-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-md-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-md-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-md-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-md-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-md-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-md-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-md-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-md-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-md-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-md-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-md-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-md-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-md-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-md-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-md-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-md-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-md-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-md-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-md-0 {\n    margin-left: 0;\n  }\n\n  .offset-md-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-md-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n\n  .offset-md-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-md-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n\n  .offset-md-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-md-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n\n  .offset-md-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-md-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-md-0,\n.gx-md-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-md-0,\n.gy-md-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-md-1,\n.gx-md-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-md-1,\n.gy-md-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-md-2,\n.gx-md-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-md-2,\n.gy-md-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-md-3,\n.gx-md-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-md-3,\n.gy-md-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-md-4,\n.gx-md-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-md-4,\n.gy-md-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-md-5,\n.gx-md-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-md-5,\n.gy-md-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 992px) {\n  .col-lg {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-lg-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-lg-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-lg-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-lg-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-lg-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-lg-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-lg-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-lg-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-lg-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-lg-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-lg-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-lg-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-lg-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-lg-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-lg-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-lg-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-lg-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-lg-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-lg-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n\n  .offset-lg-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-lg-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n\n  .offset-lg-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-lg-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n\n  .offset-lg-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-lg-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n\n  .offset-lg-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-lg-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-lg-0,\n.gx-lg-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-lg-0,\n.gy-lg-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-lg-1,\n.gx-lg-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-lg-1,\n.gy-lg-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-lg-2,\n.gx-lg-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-lg-2,\n.gy-lg-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-lg-3,\n.gx-lg-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-lg-3,\n.gy-lg-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-lg-4,\n.gx-lg-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-lg-4,\n.gy-lg-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-lg-5,\n.gx-lg-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-lg-5,\n.gy-lg-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1200px) {\n  .col-xl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xl-0,\n.gx-xl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xl-0,\n.gy-xl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xl-1,\n.gx-xl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xl-1,\n.gy-xl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xl-2,\n.gx-xl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xl-2,\n.gy-xl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xl-3,\n.gx-xl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xl-3,\n.gy-xl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xl-4,\n.gx-xl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xl-4,\n.gy-xl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xl-5,\n.gx-xl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xl-5,\n.gy-xl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1400px) {\n  .col-xxl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xxl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xxl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xxl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xxl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xxl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xxl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xxl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xxl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xxl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xxl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xxl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xxl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xxl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xxl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xxl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xxl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xxl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xxl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xxl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xxl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xxl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xxl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xxl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xxl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xxl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xxl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xxl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xxl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xxl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xxl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xxl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xxl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xxl-0,\n.gx-xxl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xxl-0,\n.gy-xxl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xxl-1,\n.gx-xxl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xxl-1,\n.gy-xxl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xxl-2,\n.gx-xxl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xxl-2,\n.gy-xxl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xxl-3,\n.gx-xxl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xxl-3,\n.gy-xxl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xxl-4,\n.gx-xxl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xxl-4,\n.gy-xxl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xxl-5,\n.gx-xxl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xxl-5,\n.gy-xxl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n.table {\n  --bs-table-bg: transparent;\n  --bs-table-accent-bg: transparent;\n  --bs-table-striped-color: #212529;\n  --bs-table-striped-bg: rgba(0, 0, 0, 0.05);\n  --bs-table-active-color: #212529;\n  --bs-table-active-bg: rgba(0, 0, 0, 0.1);\n  --bs-table-hover-color: #212529;\n  --bs-table-hover-bg: rgba(0, 0, 0, 0.075);\n  width: 100%;\n  margin-bottom: 1rem;\n  color: #212529;\n  vertical-align: top;\n  border-color: #dee2e6;\n}\n.table > :not(caption) > * > * {\n  padding: 0.5rem 0.5rem;\n  background-color: var(--bs-table-bg);\n  border-bottom-width: 1px;\n  box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg);\n}\n.table > tbody {\n  vertical-align: inherit;\n}\n.table > thead {\n  vertical-align: bottom;\n}\n.table > :not(:last-child) > :last-child > * {\n  border-bottom-color: currentColor;\n}\n\n.caption-top {\n  caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n  padding: 0.25rem 0.25rem;\n}\n\n.table-bordered > :not(caption) > * {\n  border-width: 1px 0;\n}\n.table-bordered > :not(caption) > * > * {\n  border-width: 0 1px;\n}\n\n.table-borderless > :not(caption) > * > * {\n  border-bottom-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) {\n  --bs-table-accent-bg: var(--bs-table-striped-bg);\n  color: var(--bs-table-striped-color);\n}\n\n.table-active {\n  --bs-table-accent-bg: var(--bs-table-active-bg);\n  color: var(--bs-table-active-color);\n}\n\n.table-hover > tbody > tr:hover {\n  --bs-table-accent-bg: var(--bs-table-hover-bg);\n  color: var(--bs-table-hover-color);\n}\n\n.table-primary {\n  --bs-table-bg: #cfe2ff;\n  --bs-table-striped-bg: #c5d7f2;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #bacbe6;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #bfd1ec;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #bacbe6;\n}\n\n.table-secondary {\n  --bs-table-bg: #e2e3e5;\n  --bs-table-striped-bg: #d7d8da;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #cbccce;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #d1d2d4;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #cbccce;\n}\n\n.table-success {\n  --bs-table-bg: #d1e7dd;\n  --bs-table-striped-bg: #c7dbd2;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #bcd0c7;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #c1d6cc;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #bcd0c7;\n}\n\n.table-info {\n  --bs-table-bg: #cff4fc;\n  --bs-table-striped-bg: #c5e8ef;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #badce3;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #bfe2e9;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #badce3;\n}\n\n.table-warning {\n  --bs-table-bg: #fff3cd;\n  --bs-table-striped-bg: #f2e7c3;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #e6dbb9;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #ece1be;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #e6dbb9;\n}\n\n.table-danger {\n  --bs-table-bg: #f8d7da;\n  --bs-table-striped-bg: #eccccf;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #dfc2c4;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #e5c7ca;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #dfc2c4;\n}\n\n.table-light {\n  --bs-table-bg: #f8f9fa;\n  --bs-table-striped-bg: #ecedee;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #dfe0e1;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #e5e6e7;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #dfe0e1;\n}\n\n.table-dark {\n  --bs-table-bg: #212529;\n  --bs-table-striped-bg: #2c3034;\n  --bs-table-striped-color: #fff;\n  --bs-table-active-bg: #373b3e;\n  --bs-table-active-color: #fff;\n  --bs-table-hover-bg: #323539;\n  --bs-table-hover-color: #fff;\n  color: #fff;\n  border-color: #373b3e;\n}\n\n.table-responsive {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n}\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 1199.98px) {\n  .table-responsive-xl {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 1399.98px) {\n  .table-responsive-xxl {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n.form-label {\n  margin-bottom: 0.5rem;\n}\n\n.col-form-label {\n  padding-top: calc(0.375rem + 1px);\n  padding-bottom: calc(0.375rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5;\n}\n\n.col-form-label-lg {\n  padding-top: calc(0.5rem + 1px);\n  padding-bottom: calc(0.5rem + 1px);\n  font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n  padding-top: calc(0.25rem + 1px);\n  padding-bottom: calc(0.25rem + 1px);\n  font-size: 0.875rem;\n}\n\n.form-text {\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #6c757d;\n}\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ced4da;\n  appearance: none;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control {\n    transition: none;\n  }\n}\n.form-control[type=file] {\n  overflow: hidden;\n}\n.form-control[type=file]:not(:disabled):not([readonly]) {\n  cursor: pointer;\n}\n.form-control:focus {\n  color: #212529;\n  background-color: #fff;\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-control::-webkit-date-and-time-value {\n  height: 1.5em;\n}\n.form-control::placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n.form-control:disabled, .form-control[readonly] {\n  background-color: #e9ecef;\n  opacity: 1;\n}\n.form-control::file-selector-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control::file-selector-button {\n    transition: none;\n  }\n}\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n  background-color: #dde0e3;\n}\n.form-control::-webkit-file-upload-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control::-webkit-file-upload-button {\n    transition: none;\n  }\n}\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n  background-color: #dde0e3;\n}\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0;\n  margin-bottom: 0;\n  line-height: 1.5;\n  color: #212529;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.form-control-sm {\n  min-height: calc(1.5em + 0.5rem + 2px);\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n.form-control-sm::file-selector-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  margin-inline-end: 0.5rem;\n}\n.form-control-sm::-webkit-file-upload-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  margin-inline-end: 0.5rem;\n}\n\n.form-control-lg {\n  min-height: calc(1.5em + 1rem + 2px);\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n.form-control-lg::file-selector-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  margin-inline-end: 1rem;\n}\n.form-control-lg::-webkit-file-upload-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  margin-inline-end: 1rem;\n}\n\ntextarea.form-control {\n  min-height: calc(1.5em + 0.75rem + 2px);\n}\ntextarea.form-control-sm {\n  min-height: calc(1.5em + 0.5rem + 2px);\n}\ntextarea.form-control-lg {\n  min-height: calc(1.5em + 1rem + 2px);\n}\n\n.form-control-color {\n  width: 3rem;\n  height: auto;\n  padding: 0.375rem;\n}\n.form-control-color:not(:disabled):not([readonly]) {\n  cursor: pointer;\n}\n.form-control-color::-moz-color-swatch {\n  height: 1.5em;\n  border-radius: 0.25rem;\n}\n.form-control-color::-webkit-color-swatch {\n  height: 1.5em;\n  border-radius: 0.25rem;\n}\n\n.form-select {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 2.25rem 0.375rem 0.75rem;\n  -moz-padding-start: calc(0.75rem - 3px);\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  background-color: #fff;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right 0.75rem center;\n  background-size: 16px 12px;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-select {\n    transition: none;\n  }\n}\n.form-select:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n  padding-right: 0.75rem;\n  background-image: none;\n}\n.form-select:disabled {\n  background-color: #e9ecef;\n}\n.form-select:-moz-focusring {\n  color: transparent;\n  text-shadow: 0 0 0 #212529;\n}\n\n.form-select-sm {\n  padding-top: 0.25rem;\n  padding-bottom: 0.25rem;\n  padding-left: 0.5rem;\n  font-size: 0.875rem;\n}\n\n.form-select-lg {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  padding-left: 1rem;\n  font-size: 1.25rem;\n}\n\n.form-check {\n  display: block;\n  min-height: 1.5rem;\n  padding-left: 1.5em;\n  margin-bottom: 0.125rem;\n}\n.form-check .form-check-input {\n  float: left;\n  margin-left: -1.5em;\n}\n\n.form-check-input {\n  width: 1em;\n  height: 1em;\n  margin-top: 0.25em;\n  vertical-align: top;\n  background-color: #fff;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: contain;\n  border: 1px solid rgba(0, 0, 0, 0.25);\n  appearance: none;\n  color-adjust: exact;\n}\n.form-check-input[type=checkbox] {\n  border-radius: 0.25em;\n}\n.form-check-input[type=radio] {\n  border-radius: 50%;\n}\n.form-check-input:active {\n  filter: brightness(90%);\n}\n.form-check-input:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-check-input:checked {\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.form-check-input:checked[type=checkbox] {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e\");\n}\n.form-check-input:checked[type=radio] {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-check-input[type=checkbox]:indeterminate {\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n}\n.form-check-input:disabled {\n  pointer-events: none;\n  filter: none;\n  opacity: 0.5;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n  opacity: 0.5;\n}\n\n.form-switch {\n  padding-left: 2.5em;\n}\n.form-switch .form-check-input {\n  width: 2em;\n  margin-left: -2.5em;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n  background-position: left center;\n  border-radius: 2em;\n  transition: background-position 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-switch .form-check-input {\n    transition: none;\n  }\n}\n.form-switch .form-check-input:focus {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n.form-switch .form-check-input:checked {\n  background-position: right center;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.form-check-inline {\n  display: inline-block;\n  margin-right: 1rem;\n}\n\n.btn-check {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\n  pointer-events: none;\n  filter: none;\n  opacity: 0.65;\n}\n\n.form-range {\n  width: 100%;\n  height: 1.5rem;\n  padding: 0;\n  background-color: transparent;\n  appearance: none;\n}\n.form-range:focus {\n  outline: 0;\n}\n.form-range:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range::-moz-focus-outer {\n  border: 0;\n}\n.form-range::-webkit-slider-thumb {\n  width: 1rem;\n  height: 1rem;\n  margin-top: -0.25rem;\n  background-color: #0d6efd;\n  border: 0;\n  border-radius: 1rem;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-range::-webkit-slider-thumb {\n    transition: none;\n  }\n}\n.form-range::-webkit-slider-thumb:active {\n  background-color: #b6d4fe;\n}\n.form-range::-webkit-slider-runnable-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n.form-range::-moz-range-thumb {\n  width: 1rem;\n  height: 1rem;\n  background-color: #0d6efd;\n  border: 0;\n  border-radius: 1rem;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-range::-moz-range-thumb {\n    transition: none;\n  }\n}\n.form-range::-moz-range-thumb:active {\n  background-color: #b6d4fe;\n}\n.form-range::-moz-range-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n.form-range:disabled {\n  pointer-events: none;\n}\n.form-range:disabled::-webkit-slider-thumb {\n  background-color: #adb5bd;\n}\n.form-range:disabled::-moz-range-thumb {\n  background-color: #adb5bd;\n}\n\n.form-floating {\n  position: relative;\n}\n.form-floating > .form-control,\n.form-floating > .form-select {\n  height: calc(3.5rem + 2px);\n  line-height: 1.25;\n}\n.form-floating > label {\n  position: absolute;\n  top: 0;\n  left: 0;\n  height: 100%;\n  padding: 1rem 0.75rem;\n  pointer-events: none;\n  border: 1px solid transparent;\n  transform-origin: 0 0;\n  transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-floating > label {\n    transition: none;\n  }\n}\n.form-floating > .form-control {\n  padding: 1rem 0.75rem;\n}\n.form-floating > .form-control::placeholder {\n  color: transparent;\n}\n.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown) {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:-webkit-autofill {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-select {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:focus ~ label,\n.form-floating > .form-control:not(:placeholder-shown) ~ label,\n.form-floating > .form-select ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control:-webkit-autofill ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: stretch;\n  width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-select {\n  position: relative;\n  flex: 1 1 auto;\n  width: 1%;\n  min-width: 0;\n}\n.input-group > .form-control:focus,\n.input-group > .form-select:focus {\n  z-index: 3;\n}\n.input-group .btn {\n  position: relative;\n  z-index: 2;\n}\n.input-group .btn:focus {\n  z-index: 3;\n}\n\n.input-group-text {\n  display: flex;\n  align-items: center;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #e9ecef;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n  padding-right: 3rem;\n}\n\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n  margin-left: -1px;\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #198754;\n}\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: 0.1rem;\n  font-size: 0.875rem;\n  color: #fff;\n  background-color: rgba(25, 135, 84, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n  border-color: #198754;\n  padding-right: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right calc(0.375em + 0.1875rem) center;\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n  border-color: #198754;\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n  padding-right: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:valid, .form-select.is-valid {\n  border-color: #198754;\n}\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"] {\n  padding-right: 4.125rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\"), url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-position: right 0.75rem center, center right 2.25rem;\n  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\n  border-color: #198754;\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\n  border-color: #198754;\n}\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n  background-color: #198754;\n}\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #198754;\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n  margin-left: 0.5em;\n}\n\n.was-validated .input-group .form-control:valid, .input-group .form-control.is-valid,\n.was-validated .input-group .form-select:valid,\n.input-group .form-select.is-valid {\n  z-index: 1;\n}\n.was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus,\n.was-validated .input-group .form-select:valid:focus,\n.input-group .form-select.is-valid:focus {\n  z-index: 3;\n}\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #dc3545;\n}\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: 0.1rem;\n  font-size: 0.875rem;\n  color: #fff;\n  background-color: rgba(220, 53, 69, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n  border-color: #dc3545;\n  padding-right: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right calc(0.375em + 0.1875rem) center;\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n  padding-right: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:invalid, .form-select.is-invalid {\n  border-color: #dc3545;\n}\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"] {\n  padding-right: 4.125rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\"), url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n  background-position: right 0.75rem center, center right 2.25rem;\n  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n  border-color: #dc3545;\n}\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n  background-color: #dc3545;\n}\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #dc3545;\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n  margin-left: 0.5em;\n}\n\n.was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid,\n.was-validated .input-group .form-select:invalid,\n.input-group .form-select.is-invalid {\n  z-index: 2;\n}\n.was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus,\n.was-validated .input-group .form-select:invalid:focus,\n.input-group .form-select.is-invalid:focus {\n  z-index: 3;\n}\n\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: center;\n  text-decoration: none;\n  vertical-align: middle;\n  cursor: pointer;\n  user-select: none;\n  background-color: transparent;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  border-radius: 0.25rem;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .btn {\n    transition: none;\n  }\n}\n.btn:hover {\n  color: #212529;\n}\n.btn-check:focus + .btn, .btn:focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\n  pointer-events: none;\n  opacity: 0.65;\n}\n\n.btn-primary {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #0b5ed7;\n  border-color: #0a58ca;\n}\n.btn-check:focus + .btn-primary, .btn-primary:focus {\n  color: #fff;\n  background-color: #0b5ed7;\n  border-color: #0a58ca;\n  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\n}\n.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #0a58ca;\n  border-color: #0a53be;\n}\n.btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\n}\n.btn-primary:disabled, .btn-primary.disabled {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n\n.btn-secondary {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-secondary:hover {\n  color: #fff;\n  background-color: #5c636a;\n  border-color: #565e64;\n}\n.btn-check:focus + .btn-secondary, .btn-secondary:focus {\n  color: #fff;\n  background-color: #5c636a;\n  border-color: #565e64;\n  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\n}\n.btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #565e64;\n  border-color: #51585e;\n}\n.btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\n}\n.btn-secondary:disabled, .btn-secondary.disabled {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-success {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #157347;\n  border-color: #146c43;\n}\n.btn-check:focus + .btn-success, .btn-success:focus {\n  color: #fff;\n  background-color: #157347;\n  border-color: #146c43;\n  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\n}\n.btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle {\n  color: #fff;\n  background-color: #146c43;\n  border-color: #13653f;\n}\n.btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\n}\n.btn-success:disabled, .btn-success.disabled {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n\n.btn-info {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-info:hover {\n  color: #000;\n  background-color: #31d2f2;\n  border-color: #25cff2;\n}\n.btn-check:focus + .btn-info, .btn-info:focus {\n  color: #000;\n  background-color: #31d2f2;\n  border-color: #25cff2;\n  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\n}\n.btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle {\n  color: #000;\n  background-color: #3dd5f3;\n  border-color: #25cff2;\n}\n.btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\n}\n.btn-info:disabled, .btn-info.disabled {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n\n.btn-warning {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-warning:hover {\n  color: #000;\n  background-color: #ffca2c;\n  border-color: #ffc720;\n}\n.btn-check:focus + .btn-warning, .btn-warning:focus {\n  color: #000;\n  background-color: #ffca2c;\n  border-color: #ffc720;\n  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\n}\n.btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle {\n  color: #000;\n  background-color: #ffcd39;\n  border-color: #ffc720;\n}\n.btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\n}\n.btn-warning:disabled, .btn-warning.disabled {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-danger {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #bb2d3b;\n  border-color: #b02a37;\n}\n.btn-check:focus + .btn-danger, .btn-danger:focus {\n  color: #fff;\n  background-color: #bb2d3b;\n  border-color: #b02a37;\n  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\n}\n.btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #b02a37;\n  border-color: #a52834;\n}\n.btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\n}\n.btn-danger:disabled, .btn-danger.disabled {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-light {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-light:hover {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n}\n.btn-check:focus + .btn-light, .btn-light:focus {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\n}\n.btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n}\n.btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\n}\n.btn-light:disabled, .btn-light.disabled {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-dark {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-dark:hover {\n  color: #fff;\n  background-color: #1c1f23;\n  border-color: #1a1e21;\n}\n.btn-check:focus + .btn-dark, .btn-dark:focus {\n  color: #fff;\n  background-color: #1c1f23;\n  border-color: #1a1e21;\n  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\n}\n.btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #1a1e21;\n  border-color: #191c1f;\n}\n.btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\n}\n.btn-dark:disabled, .btn-dark.disabled {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n\n.btn-outline-primary {\n  color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-outline-primary:hover {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\n}\n.btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\n}\n.btn-outline-primary:disabled, .btn-outline-primary.disabled {\n  color: #0d6efd;\n  background-color: transparent;\n}\n\n.btn-outline-secondary {\n  color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-outline-secondary:hover {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus {\n  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\n}\n.btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\n}\n.btn-outline-secondary:disabled, .btn-outline-secondary.disabled {\n  color: #6c757d;\n  background-color: transparent;\n}\n\n.btn-outline-success {\n  color: #198754;\n  border-color: #198754;\n}\n.btn-outline-success:hover {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-check:focus + .btn-outline-success, .btn-outline-success:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\n}\n.btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\n}\n.btn-outline-success:disabled, .btn-outline-success.disabled {\n  color: #198754;\n  background-color: transparent;\n}\n\n.btn-outline-info {\n  color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-outline-info:hover {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-check:focus + .btn-outline-info, .btn-outline-info:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\n}\n.btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\n}\n.btn-outline-info:disabled, .btn-outline-info.disabled {\n  color: #0dcaf0;\n  background-color: transparent;\n}\n\n.btn-outline-warning {\n  color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-outline-warning:hover {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus {\n  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\n}\n.btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\n}\n.btn-outline-warning:disabled, .btn-outline-warning.disabled {\n  color: #ffc107;\n  background-color: transparent;\n}\n\n.btn-outline-danger {\n  color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-outline-danger:hover {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\n}\n.btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\n}\n.btn-outline-danger:disabled, .btn-outline-danger.disabled {\n  color: #dc3545;\n  background-color: transparent;\n}\n\n.btn-outline-light {\n  color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-outline-light:hover {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-check:focus + .btn-outline-light, .btn-outline-light:focus {\n  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\n}\n.btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\n}\n.btn-outline-light:disabled, .btn-outline-light.disabled {\n  color: #f8f9fa;\n  background-color: transparent;\n}\n\n.btn-outline-dark {\n  color: #212529;\n  border-color: #212529;\n}\n.btn-outline-dark:hover {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus {\n  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\n}\n.btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\n}\n.btn-outline-dark:disabled, .btn-outline-dark.disabled {\n  color: #212529;\n  background-color: transparent;\n}\n\n.btn-link {\n  font-weight: 400;\n  color: #0d6efd;\n  text-decoration: underline;\n}\n.btn-link:hover {\n  color: #0a58ca;\n}\n.btn-link:disabled, .btn-link.disabled {\n  color: #6c757d;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n.dropup,\n.dropend,\n.dropdown,\n.dropstart {\n  position: relative;\n}\n\n.dropdown-toggle {\n  white-space: nowrap;\n}\n.dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropdown-menu {\n  position: absolute;\n  z-index: 1000;\n  display: none;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0;\n  font-size: 1rem;\n  color: #212529;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n.dropdown-menu[data-bs-popper] {\n  top: 100%;\n  left: 0;\n  margin-top: 0.125rem;\n}\n\n.dropdown-menu-start {\n  --bs-position: start;\n}\n.dropdown-menu-start[data-bs-popper] {\n  right: auto;\n  left: 0;\n}\n\n.dropdown-menu-end {\n  --bs-position: end;\n}\n.dropdown-menu-end[data-bs-popper] {\n  right: 0;\n  left: auto;\n}\n\n@media (min-width: 576px) {\n  .dropdown-menu-sm-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-sm-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-sm-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-sm-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 768px) {\n  .dropdown-menu-md-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-md-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-md-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-md-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 992px) {\n  .dropdown-menu-lg-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-lg-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-lg-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-lg-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 1200px) {\n  .dropdown-menu-xl-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-xl-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-xl-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-xl-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 1400px) {\n  .dropdown-menu-xxl-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-xxl-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-xxl-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-xxl-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n.dropup .dropdown-menu[data-bs-popper] {\n  top: auto;\n  bottom: 100%;\n  margin-top: 0;\n  margin-bottom: 0.125rem;\n}\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0.3em solid;\n  border-left: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n  top: 0;\n  right: auto;\n  left: 100%;\n  margin-top: 0;\n  margin-left: 0.125rem;\n}\n.dropend .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0;\n  border-bottom: 0.3em solid transparent;\n  border-left: 0.3em solid;\n}\n.dropend .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n.dropend .dropdown-toggle::after {\n  vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n  top: 0;\n  right: 100%;\n  left: auto;\n  margin-top: 0;\n  margin-right: 0.125rem;\n}\n.dropstart .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n}\n.dropstart .dropdown-toggle::after {\n  display: none;\n}\n.dropstart .dropdown-toggle::before {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0.3em solid;\n  border-bottom: 0.3em solid transparent;\n}\n.dropstart .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n.dropstart .dropdown-toggle::before {\n  vertical-align: 0;\n}\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.25rem 1rem;\n  clear: both;\n  font-weight: 400;\n  color: #212529;\n  text-align: inherit;\n  text-decoration: none;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n.dropdown-item:hover, .dropdown-item:focus {\n  color: #1e2125;\n  background-color: #e9ecef;\n}\n.dropdown-item.active, .dropdown-item:active {\n  color: #fff;\n  text-decoration: none;\n  background-color: #0d6efd;\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n  color: #adb5bd;\n  pointer-events: none;\n  background-color: transparent;\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 0.875rem;\n  color: #6c757d;\n  white-space: nowrap;\n}\n\n.dropdown-item-text {\n  display: block;\n  padding: 0.25rem 1rem;\n  color: #212529;\n}\n\n.dropdown-menu-dark {\n  color: #dee2e6;\n  background-color: #343a40;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.dropdown-menu-dark .dropdown-item {\n  color: #dee2e6;\n}\n.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus {\n  color: #fff;\n  background-color: rgba(255, 255, 255, 0.15);\n}\n.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active {\n  color: #fff;\n  background-color: #0d6efd;\n}\n.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled {\n  color: #adb5bd;\n}\n.dropdown-menu-dark .dropdown-divider {\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.dropdown-menu-dark .dropdown-item-text {\n  color: #dee2e6;\n}\n.dropdown-menu-dark .dropdown-header {\n  color: #adb5bd;\n}\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  flex: 1 1 auto;\n}\n.btn-group > .btn-check:checked + .btn,\n.btn-group > .btn-check:focus + .btn,\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn-check:checked + .btn,\n.btn-group-vertical > .btn-check:focus + .btn,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n  z-index: 1;\n}\n\n.btn-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n  width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n  margin-left: -1px;\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:nth-child(n+3),\n.btn-group > :not(.btn-check) + .btn,\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n  padding-right: 0.5625rem;\n  padding-left: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n  margin-left: 0;\n}\n.dropstart .dropdown-toggle-split::before {\n  margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-right: 0.375rem;\n  padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-right: 0.75rem;\n  padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n  width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n  margin-top: -1px;\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn ~ .btn,\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav {\n  display: flex;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 1rem;\n  color: #0d6efd;\n  text-decoration: none;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .nav-link {\n    transition: none;\n  }\n}\n.nav-link:hover, .nav-link:focus {\n  color: #0a58ca;\n}\n.nav-link.disabled {\n  color: #6c757d;\n  pointer-events: none;\n  cursor: default;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #dee2e6;\n}\n.nav-tabs .nav-link {\n  margin-bottom: -1px;\n  background: none;\n  border: 1px solid transparent;\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n  border-color: #e9ecef #e9ecef #dee2e6;\n  isolation: isolate;\n}\n.nav-tabs .nav-link.disabled {\n  color: #6c757d;\n  background-color: transparent;\n  border-color: transparent;\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n  color: #495057;\n  background-color: #fff;\n  border-color: #dee2e6 #dee2e6 #fff;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n  background: none;\n  border: 0;\n  border-radius: 0.25rem;\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #0d6efd;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n  flex: 1 1 auto;\n  text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n  flex-basis: 0;\n  flex-grow: 1;\n  text-align: center;\n}\n\n.nav-fill .nav-item .nav-link,\n.nav-justified .nav-item .nav-link {\n  width: 100%;\n}\n\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n\n.navbar {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n.navbar > .container,\n.navbar > .container-fluid,\n.navbar > .container-sm,\n.navbar > .container-md,\n.navbar > .container-lg,\n.navbar > .container-xl,\n.navbar > .container-xxl {\n  display: flex;\n  flex-wrap: inherit;\n  align-items: center;\n  justify-content: space-between;\n}\n.navbar-brand {\n  padding-top: 0.3125rem;\n  padding-bottom: 0.3125rem;\n  margin-right: 1rem;\n  font-size: 1.25rem;\n  text-decoration: none;\n  white-space: nowrap;\n}\n.navbar-nav {\n  display: flex;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.navbar-nav .nav-link {\n  padding-right: 0;\n  padding-left: 0;\n}\n.navbar-nav .dropdown-menu {\n  position: static;\n}\n\n.navbar-text {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n  flex-basis: 100%;\n  flex-grow: 1;\n  align-items: center;\n}\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.25rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n  transition: box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .navbar-toggler {\n    transition: none;\n  }\n}\n.navbar-toggler:hover {\n  text-decoration: none;\n}\n.navbar-toggler:focus {\n  text-decoration: none;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem;\n}\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 100%;\n}\n\n.navbar-nav-scroll {\n  max-height: var(--bs-scroll-height, 75vh);\n  overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-sm .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-sm .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-sm .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-sm .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-sm .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-sm .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-sm .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-sm .offcanvas-top,\n.navbar-expand-sm .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-sm .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-md .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-md .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-md .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-md .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-md .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-md .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-md .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-md .offcanvas-top,\n.navbar-expand-md .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-md .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-lg .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-lg .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-lg .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-lg .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-lg .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-lg .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-lg .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-lg .offcanvas-top,\n.navbar-expand-lg .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-lg .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 1200px) {\n  .navbar-expand-xl {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xl .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-xl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xl .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-xl .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-xl .offcanvas-top,\n.navbar-expand-xl .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-xl .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 1400px) {\n  .navbar-expand-xxl {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xxl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xxl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xxl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xxl .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-xxl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xxl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xxl .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-xxl .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-xxl .offcanvas-top,\n.navbar-expand-xxl .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-xxl .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n.navbar-expand {\n  flex-wrap: nowrap;\n  justify-content: flex-start;\n}\n.navbar-expand .navbar-nav {\n  flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n  position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n  padding-right: 0.5rem;\n  padding-left: 0.5rem;\n}\n.navbar-expand .navbar-nav-scroll {\n  overflow: visible;\n}\n.navbar-expand .navbar-collapse {\n  display: flex !important;\n  flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n  display: none;\n}\n.navbar-expand .offcanvas-header {\n  display: none;\n}\n.navbar-expand .offcanvas {\n  position: inherit;\n  bottom: 0;\n  z-index: 1000;\n  flex-grow: 1;\n  visibility: visible !important;\n  background-color: transparent;\n  border-right: 0;\n  border-left: 0;\n  transition: none;\n  transform: none;\n}\n.navbar-expand .offcanvas-top,\n.navbar-expand .offcanvas-bottom {\n  height: auto;\n  border-top: 0;\n  border-bottom: 0;\n}\n.navbar-expand .offcanvas-body {\n  display: flex;\n  flex-grow: 0;\n  padding: 0;\n  overflow-y: visible;\n}\n\n.navbar-light .navbar-brand {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(0, 0, 0, 0.55);\n}\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n  color: rgba(0, 0, 0, 0.7);\n}\n.navbar-light .navbar-nav .nav-link.disabled {\n  color: rgba(0, 0, 0, 0.3);\n}\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .nav-link.active {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-toggler {\n  color: rgba(0, 0, 0, 0.55);\n  border-color: rgba(0, 0, 0, 0.1);\n}\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-light .navbar-text {\n  color: rgba(0, 0, 0, 0.55);\n}\n.navbar-light .navbar-text a,\n.navbar-light .navbar-text a:hover,\n.navbar-light .navbar-text a:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n  color: #fff;\n}\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n  color: #fff;\n}\n.navbar-dark .navbar-nav .nav-link {\n  color: rgba(255, 255, 255, 0.55);\n}\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n  color: rgba(255, 255, 255, 0.75);\n}\n.navbar-dark .navbar-nav .nav-link.disabled {\n  color: rgba(255, 255, 255, 0.25);\n}\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #fff;\n}\n.navbar-dark .navbar-toggler {\n  color: rgba(255, 255, 255, 0.55);\n  border-color: rgba(255, 255, 255, 0.1);\n}\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-dark .navbar-text {\n  color: rgba(255, 255, 255, 0.55);\n}\n.navbar-dark .navbar-text a,\n.navbar-dark .navbar-text a:hover,\n.navbar-dark .navbar-text a:focus {\n  color: #fff;\n}\n\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.25rem;\n}\n.card > hr {\n  margin-right: 0;\n  margin-left: 0;\n}\n.card > .list-group {\n  border-top: inherit;\n  border-bottom: inherit;\n}\n.card > .list-group:first-child {\n  border-top-width: 0;\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.card > .list-group:last-child {\n  border-bottom-width: 0;\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n  border-top: 0;\n}\n\n.card-body {\n  flex: 1 1 auto;\n  padding: 1rem 1rem;\n}\n\n.card-title {\n  margin-bottom: 0.5rem;\n}\n\n.card-subtitle {\n  margin-top: -0.25rem;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link + .card-link {\n  margin-left: 1rem;\n}\n\n.card-header {\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-header:first-child {\n  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n  padding: 0.5rem 1rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-footer:last-child {\n  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n  margin-right: -0.5rem;\n  margin-bottom: -0.5rem;\n  margin-left: -0.5rem;\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-right: -0.5rem;\n  margin-left: -0.5rem;\n}\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 1rem;\n  border-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n  width: 100%;\n}\n\n.card-img,\n.card-img-top {\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-bottom {\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-group > .card {\n  margin-bottom: 0.75rem;\n}\n@media (min-width: 576px) {\n  .card-group {\n    display: flex;\n    flex-flow: row wrap;\n  }\n  .card-group > .card {\n    flex: 1 0 0%;\n    margin-bottom: 0;\n  }\n  .card-group > .card + .card {\n    margin-left: 0;\n    border-left: 0;\n  }\n  .card-group > .card:not(:last-child) {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-top,\n.card-group > .card:not(:last-child) .card-header {\n    border-top-right-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-bottom,\n.card-group > .card:not(:last-child) .card-footer {\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:not(:first-child) {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-top,\n.card-group > .card:not(:first-child) .card-header {\n    border-top-left-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-bottom,\n.card-group > .card:not(:first-child) .card-footer {\n    border-bottom-left-radius: 0;\n  }\n}\n\n.accordion-button {\n  position: relative;\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: 1rem 1.25rem;\n  font-size: 1rem;\n  color: #212529;\n  text-align: left;\n  background-color: #fff;\n  border: 0;\n  border-radius: 0;\n  overflow-anchor: none;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .accordion-button {\n    transition: none;\n  }\n}\n.accordion-button:not(.collapsed) {\n  color: #0c63e4;\n  background-color: #e7f1ff;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125);\n}\n.accordion-button:not(.collapsed)::after {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n  transform: rotate(-180deg);\n}\n.accordion-button::after {\n  flex-shrink: 0;\n  width: 1.25rem;\n  height: 1.25rem;\n  margin-left: auto;\n  content: \"\";\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-size: 1.25rem;\n  transition: transform 0.2s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .accordion-button::after {\n    transition: none;\n  }\n}\n.accordion-button:hover {\n  z-index: 2;\n}\n.accordion-button:focus {\n  z-index: 3;\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.accordion-header {\n  margin-bottom: 0;\n}\n\n.accordion-item {\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.accordion-item:first-of-type {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n.accordion-item:first-of-type .accordion-button {\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.accordion-item:not(:first-of-type) {\n  border-top: 0;\n}\n.accordion-item:last-of-type {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n.accordion-item:last-of-type .accordion-button.collapsed {\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n.accordion-item:last-of-type .accordion-collapse {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.accordion-body {\n  padding: 1rem 1.25rem;\n}\n\n.accordion-flush .accordion-collapse {\n  border-width: 0;\n}\n.accordion-flush .accordion-item {\n  border-right: 0;\n  border-left: 0;\n  border-radius: 0;\n}\n.accordion-flush .accordion-item:first-child {\n  border-top: 0;\n}\n.accordion-flush .accordion-item:last-child {\n  border-bottom: 0;\n}\n.accordion-flush .accordion-item .accordion-button {\n  border-radius: 0;\n}\n\n.breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  padding: 0 0;\n  margin-bottom: 1rem;\n  list-style: none;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n  padding-left: 0.5rem;\n}\n.breadcrumb-item + .breadcrumb-item::before {\n  float: left;\n  padding-right: 0.5rem;\n  color: #6c757d;\n  content: var(--bs-breadcrumb-divider, \"/\") /* rtl: var(--bs-breadcrumb-divider, \"/\") */;\n}\n.breadcrumb-item.active {\n  color: #6c757d;\n}\n\n.pagination {\n  display: flex;\n  padding-left: 0;\n  list-style: none;\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  color: #0d6efd;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .page-link {\n    transition: none;\n  }\n}\n.page-link:hover {\n  z-index: 2;\n  color: #0a58ca;\n  background-color: #e9ecef;\n  border-color: #dee2e6;\n}\n.page-link:focus {\n  z-index: 3;\n  color: #0a58ca;\n  background-color: #e9ecef;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.page-item:not(:first-child) .page-link {\n  margin-left: -1px;\n}\n.page-item.active .page-link {\n  z-index: 3;\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.page-item.disabled .page-link {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #fff;\n  border-color: #dee2e6;\n}\n\n.page-link {\n  padding: 0.375rem 0.75rem;\n}\n\n.page-item:first-child .page-link {\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n.page-item:last-child .page-link {\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.25rem;\n}\n.pagination-lg .page-item:first-child .page-link {\n  border-top-left-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem;\n}\n.pagination-lg .page-item:last-child .page-link {\n  border-top-right-radius: 0.3rem;\n  border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n}\n.pagination-sm .page-item:first-child .page-link {\n  border-top-left-radius: 0.2rem;\n  border-bottom-left-radius: 0.2rem;\n}\n.pagination-sm .page-item:last-child .page-link {\n  border-top-right-radius: 0.2rem;\n  border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n  display: inline-block;\n  padding: 0.35em 0.65em;\n  font-size: 0.75em;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n}\n.badge:empty {\n  display: none;\n}\n\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.alert {\n  position: relative;\n  padding: 1rem 1rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.alert-heading {\n  color: inherit;\n}\n\n.alert-link {\n  font-weight: 700;\n}\n\n.alert-dismissible {\n  padding-right: 3rem;\n}\n.alert-dismissible .btn-close {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  padding: 1.25rem 1rem;\n}\n\n.alert-primary {\n  color: #084298;\n  background-color: #cfe2ff;\n  border-color: #b6d4fe;\n}\n.alert-primary .alert-link {\n  color: #06357a;\n}\n\n.alert-secondary {\n  color: #41464b;\n  background-color: #e2e3e5;\n  border-color: #d3d6d8;\n}\n.alert-secondary .alert-link {\n  color: #34383c;\n}\n\n.alert-success {\n  color: #0f5132;\n  background-color: #d1e7dd;\n  border-color: #badbcc;\n}\n.alert-success .alert-link {\n  color: #0c4128;\n}\n\n.alert-info {\n  color: #055160;\n  background-color: #cff4fc;\n  border-color: #b6effb;\n}\n.alert-info .alert-link {\n  color: #04414d;\n}\n\n.alert-warning {\n  color: #664d03;\n  background-color: #fff3cd;\n  border-color: #ffecb5;\n}\n.alert-warning .alert-link {\n  color: #523e02;\n}\n\n.alert-danger {\n  color: #842029;\n  background-color: #f8d7da;\n  border-color: #f5c2c7;\n}\n.alert-danger .alert-link {\n  color: #6a1a21;\n}\n\n.alert-light {\n  color: #636464;\n  background-color: #fefefe;\n  border-color: #fdfdfe;\n}\n.alert-light .alert-link {\n  color: #4f5050;\n}\n\n.alert-dark {\n  color: #141619;\n  background-color: #d3d3d4;\n  border-color: #bcbebf;\n}\n.alert-dark .alert-link {\n  color: #101214;\n}\n\n@keyframes progress-bar-stripes {\n  0% {\n    background-position-x: 1rem;\n  }\n}\n.progress {\n  display: flex;\n  height: 1rem;\n  overflow: hidden;\n  font-size: 0.75rem;\n  background-color: #e9ecef;\n  border-radius: 0.25rem;\n}\n\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #0d6efd;\n  transition: width 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar {\n    transition: none;\n  }\n}\n\n.progress-bar-striped {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n  animation: 1s linear infinite progress-bar-stripes;\n}\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar-animated {\n    animation: none;\n  }\n}\n\n.list-group {\n  display: flex;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  border-radius: 0.25rem;\n}\n\n.list-group-numbered {\n  list-style-type: none;\n  counter-reset: section;\n}\n.list-group-numbered > li::before {\n  content: counters(section, \".\") \". \";\n  counter-increment: section;\n}\n\n.list-group-item-action {\n  width: 100%;\n  color: #495057;\n  text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n  z-index: 1;\n  color: #495057;\n  text-decoration: none;\n  background-color: #f8f9fa;\n}\n.list-group-item-action:active {\n  color: #212529;\n  background-color: #e9ecef;\n}\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.5rem 1rem;\n  color: #212529;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.list-group-item:first-child {\n  border-top-left-radius: inherit;\n  border-top-right-radius: inherit;\n}\n.list-group-item:last-child {\n  border-bottom-right-radius: inherit;\n  border-bottom-left-radius: inherit;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #fff;\n}\n.list-group-item.active {\n  z-index: 2;\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.list-group-item + .list-group-item {\n  border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n  margin-top: -1px;\n  border-top-width: 1px;\n}\n\n.list-group-horizontal {\n  flex-direction: row;\n}\n.list-group-horizontal > .list-group-item:first-child {\n  border-bottom-left-radius: 0.25rem;\n  border-top-right-radius: 0;\n}\n.list-group-horizontal > .list-group-item:last-child {\n  border-top-right-radius: 0.25rem;\n  border-bottom-left-radius: 0;\n}\n.list-group-horizontal > .list-group-item.active {\n  margin-top: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item {\n  border-top-width: 1px;\n  border-left-width: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n  margin-left: -1px;\n  border-left-width: 1px;\n}\n\n@media (min-width: 576px) {\n  .list-group-horizontal-sm {\n    flex-direction: row;\n  }\n  .list-group-horizontal-sm > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 768px) {\n  .list-group-horizontal-md {\n    flex-direction: row;\n  }\n  .list-group-horizontal-md > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-md > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-md > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-md > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 992px) {\n  .list-group-horizontal-lg {\n    flex-direction: row;\n  }\n  .list-group-horizontal-lg > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 1200px) {\n  .list-group-horizontal-xl {\n    flex-direction: row;\n  }\n  .list-group-horizontal-xl > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 1400px) {\n  .list-group-horizontal-xxl {\n    flex-direction: row;\n  }\n  .list-group-horizontal-xxl > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n.list-group-flush {\n  border-radius: 0;\n}\n.list-group-flush > .list-group-item {\n  border-width: 0 0 1px;\n}\n.list-group-flush > .list-group-item:last-child {\n  border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n  color: #084298;\n  background-color: #cfe2ff;\n}\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n  color: #084298;\n  background-color: #bacbe6;\n}\n.list-group-item-primary.list-group-item-action.active {\n  color: #fff;\n  background-color: #084298;\n  border-color: #084298;\n}\n\n.list-group-item-secondary {\n  color: #41464b;\n  background-color: #e2e3e5;\n}\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n  color: #41464b;\n  background-color: #cbccce;\n}\n.list-group-item-secondary.list-group-item-action.active {\n  color: #fff;\n  background-color: #41464b;\n  border-color: #41464b;\n}\n\n.list-group-item-success {\n  color: #0f5132;\n  background-color: #d1e7dd;\n}\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n  color: #0f5132;\n  background-color: #bcd0c7;\n}\n.list-group-item-success.list-group-item-action.active {\n  color: #fff;\n  background-color: #0f5132;\n  border-color: #0f5132;\n}\n\n.list-group-item-info {\n  color: #055160;\n  background-color: #cff4fc;\n}\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n  color: #055160;\n  background-color: #badce3;\n}\n.list-group-item-info.list-group-item-action.active {\n  color: #fff;\n  background-color: #055160;\n  border-color: #055160;\n}\n\n.list-group-item-warning {\n  color: #664d03;\n  background-color: #fff3cd;\n}\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n  color: #664d03;\n  background-color: #e6dbb9;\n}\n.list-group-item-warning.list-group-item-action.active {\n  color: #fff;\n  background-color: #664d03;\n  border-color: #664d03;\n}\n\n.list-group-item-danger {\n  color: #842029;\n  background-color: #f8d7da;\n}\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n  color: #842029;\n  background-color: #dfc2c4;\n}\n.list-group-item-danger.list-group-item-action.active {\n  color: #fff;\n  background-color: #842029;\n  border-color: #842029;\n}\n\n.list-group-item-light {\n  color: #636464;\n  background-color: #fefefe;\n}\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n  color: #636464;\n  background-color: #e5e5e5;\n}\n.list-group-item-light.list-group-item-action.active {\n  color: #fff;\n  background-color: #636464;\n  border-color: #636464;\n}\n\n.list-group-item-dark {\n  color: #141619;\n  background-color: #d3d3d4;\n}\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n  color: #141619;\n  background-color: #bebebf;\n}\n.list-group-item-dark.list-group-item-action.active {\n  color: #fff;\n  background-color: #141619;\n  border-color: #141619;\n}\n\n.btn-close {\n  box-sizing: content-box;\n  width: 1em;\n  height: 1em;\n  padding: 0.25em 0.25em;\n  color: #000;\n  background: transparent url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e\") center/1em auto no-repeat;\n  border: 0;\n  border-radius: 0.25rem;\n  opacity: 0.5;\n}\n.btn-close:hover {\n  color: #000;\n  text-decoration: none;\n  opacity: 0.75;\n}\n.btn-close:focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n  opacity: 1;\n}\n.btn-close:disabled, .btn-close.disabled {\n  pointer-events: none;\n  user-select: none;\n  opacity: 0.25;\n}\n\n.btn-close-white {\n  filter: invert(1) grayscale(100%) brightness(200%);\n}\n\n.toast {\n  width: 350px;\n  max-width: 100%;\n  font-size: 0.875rem;\n  pointer-events: auto;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.1);\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n.toast.showing {\n  opacity: 0;\n}\n.toast:not(.show) {\n  display: none;\n}\n\n.toast-container {\n  width: max-content;\n  max-width: 100%;\n  pointer-events: none;\n}\n.toast-container > :not(:last-child) {\n  margin-bottom: 0.75rem;\n}\n\n.toast-header {\n  display: flex;\n  align-items: center;\n  padding: 0.5rem 0.75rem;\n  color: #6c757d;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.toast-header .btn-close {\n  margin-right: -0.375rem;\n  margin-left: 0.75rem;\n}\n\n.toast-body {\n  padding: 0.75rem;\n  word-wrap: break-word;\n}\n\n.modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1055;\n  display: none;\n  width: 100%;\n  height: 100%;\n  overflow-x: hidden;\n  overflow-y: auto;\n  outline: 0;\n}\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none;\n}\n.modal.fade .modal-dialog {\n  transition: transform 0.3s ease-out;\n  transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n  .modal.fade .modal-dialog {\n    transition: none;\n  }\n}\n.modal.show .modal-dialog {\n  transform: none;\n}\n.modal.modal-static .modal-dialog {\n  transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n  height: calc(100% - 1rem);\n}\n.modal-dialog-scrollable .modal-content {\n  max-height: 100%;\n  overflow: hidden;\n}\n.modal-dialog-scrollable .modal-body {\n  overflow-y: auto;\n}\n\n.modal-dialog-centered {\n  display: flex;\n  align-items: center;\n  min-height: calc(100% - 1rem);\n}\n\n.modal-content {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n  outline: 0;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1050;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  opacity: 0;\n}\n.modal-backdrop.show {\n  opacity: 0.5;\n}\n\n.modal-header {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n  border-bottom: 1px solid #dee2e6;\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n.modal-header .btn-close {\n  padding: 0.5rem 0.5rem;\n  margin: -0.5rem -0.5rem -0.5rem auto;\n}\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.modal-body {\n  position: relative;\n  flex: 1 1 auto;\n  padding: 1rem;\n}\n\n.modal-footer {\n  display: flex;\n  flex-wrap: wrap;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: flex-end;\n  padding: 0.75rem;\n  border-top: 1px solid #dee2e6;\n  border-bottom-right-radius: calc(0.3rem - 1px);\n  border-bottom-left-radius: calc(0.3rem - 1px);\n}\n.modal-footer > * {\n  margin: 0.25rem;\n}\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto;\n  }\n\n  .modal-dialog-scrollable {\n    height: calc(100% - 3.5rem);\n  }\n\n  .modal-dialog-centered {\n    min-height: calc(100% - 3.5rem);\n  }\n\n  .modal-sm {\n    max-width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg,\n.modal-xl {\n    max-width: 800px;\n  }\n}\n@media (min-width: 1200px) {\n  .modal-xl {\n    max-width: 1140px;\n  }\n}\n.modal-fullscreen {\n  width: 100vw;\n  max-width: none;\n  height: 100%;\n  margin: 0;\n}\n.modal-fullscreen .modal-content {\n  height: 100%;\n  border: 0;\n  border-radius: 0;\n}\n.modal-fullscreen .modal-header {\n  border-radius: 0;\n}\n.modal-fullscreen .modal-body {\n  overflow-y: auto;\n}\n.modal-fullscreen .modal-footer {\n  border-radius: 0;\n}\n\n@media (max-width: 575.98px) {\n  .modal-fullscreen-sm-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-sm-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-sm-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-sm-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-sm-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 767.98px) {\n  .modal-fullscreen-md-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-md-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-md-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-md-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-md-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 991.98px) {\n  .modal-fullscreen-lg-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-lg-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-lg-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-lg-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-lg-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 1199.98px) {\n  .modal-fullscreen-xl-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-xl-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-xl-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-xl-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-xl-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 1399.98px) {\n  .modal-fullscreen-xxl-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-xxl-down .modal-footer {\n    border-radius: 0;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1080;\n  display: block;\n  margin: 0;\n  font-family: var(--bs-font-sans-serif);\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  opacity: 0;\n}\n.tooltip.show {\n  opacity: 0.9;\n}\n.tooltip .tooltip-arrow {\n  position: absolute;\n  display: block;\n  width: 0.8rem;\n  height: 0.4rem;\n}\n.tooltip .tooltip-arrow::before {\n  position: absolute;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[data-popper-placement^=top] {\n  padding: 0.4rem 0;\n}\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\n  bottom: 0;\n}\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\n  top: -1px;\n  border-width: 0.4rem 0.4rem 0;\n  border-top-color: #000;\n}\n\n.bs-tooltip-end, .bs-tooltip-auto[data-popper-placement^=right] {\n  padding: 0 0.4rem;\n}\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\n  left: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\n  right: -1px;\n  border-width: 0.4rem 0.4rem 0.4rem 0;\n  border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[data-popper-placement^=bottom] {\n  padding: 0.4rem 0;\n}\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\n  top: 0;\n}\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\n  bottom: -1px;\n  border-width: 0 0.4rem 0.4rem;\n  border-bottom-color: #000;\n}\n\n.bs-tooltip-start, .bs-tooltip-auto[data-popper-placement^=left] {\n  padding: 0 0.4rem;\n}\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\n  right: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\n  left: -1px;\n  border-width: 0.4rem 0 0.4rem 0.4rem;\n  border-left-color: #000;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 0.25rem;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0 /* rtl:ignore */;\n  z-index: 1070;\n  display: block;\n  max-width: 276px;\n  font-family: var(--bs-font-sans-serif);\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n}\n.popover .popover-arrow {\n  position: absolute;\n  display: block;\n  width: 1rem;\n  height: 0.5rem;\n}\n.popover .popover-arrow::before, .popover .popover-arrow::after {\n  position: absolute;\n  display: block;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\n  bottom: calc(-0.5rem - 1px);\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\n  bottom: 0;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n  bottom: 1px;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: #fff;\n}\n\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\n  left: calc(-0.5rem - 1px);\n  width: 0.5rem;\n  height: 1rem;\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\n  left: 0;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n  left: 1px;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: #fff;\n}\n\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\n  top: calc(-0.5rem - 1px);\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\n  top: 0;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n  top: 1px;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: #fff;\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\n  position: absolute;\n  top: 0;\n  left: 50%;\n  display: block;\n  width: 1rem;\n  margin-left: -0.5rem;\n  content: \"\";\n  border-bottom: 1px solid #f0f0f0;\n}\n\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\n  right: calc(-0.5rem - 1px);\n  width: 0.5rem;\n  height: 1rem;\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\n  right: 0;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n  right: 1px;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: #fff;\n}\n\n.popover-header {\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  background-color: #f0f0f0;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n.popover-header:empty {\n  display: none;\n}\n\n.popover-body {\n  padding: 1rem 1rem;\n  color: #212529;\n}\n\n.carousel {\n  position: relative;\n}\n\n.carousel.pointer-event {\n  touch-action: pan-y;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  float: left;\n  width: 100%;\n  margin-right: -100%;\n  backface-visibility: hidden;\n  transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-item {\n    transition: none;\n  }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n/* rtl:begin:ignore */\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n  transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n  transform: translateX(-100%);\n}\n\n/* rtl:end:ignore */\n.carousel-fade .carousel-item {\n  opacity: 0;\n  transition-property: opacity;\n  transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-start,\n.carousel-fade .carousel-item-prev.carousel-item-end {\n  z-index: 1;\n  opacity: 1;\n}\n.carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n  z-index: 0;\n  opacity: 0;\n  transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n    transition: none;\n  }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 15%;\n  padding: 0;\n  color: #fff;\n  text-align: center;\n  background: none;\n  border: 0;\n  opacity: 0.5;\n  transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-control-prev,\n.carousel-control-next {\n    transition: none;\n  }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  opacity: 0.9;\n}\n\n.carousel-control-prev {\n  left: 0;\n}\n\n.carousel-control-next {\n  right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  background-repeat: no-repeat;\n  background-position: 50%;\n  background-size: 100% 100%;\n}\n\n/* rtl:options: {\n  \"autoRename\": true,\n  \"stringMap\":[ {\n    \"name\"    : \"prev-next\",\n    \"search\"  : \"prev\",\n    \"replace\" : \"next\"\n  } ]\n} */\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 2;\n  display: flex;\n  justify-content: center;\n  padding: 0;\n  margin-right: 15%;\n  margin-bottom: 1rem;\n  margin-left: 15%;\n  list-style: none;\n}\n.carousel-indicators [data-bs-target] {\n  box-sizing: content-box;\n  flex: 0 1 auto;\n  width: 30px;\n  height: 3px;\n  padding: 0;\n  margin-right: 3px;\n  margin-left: 3px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 0;\n  border-top: 10px solid transparent;\n  border-bottom: 10px solid transparent;\n  opacity: 0.5;\n  transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-indicators [data-bs-target] {\n    transition: none;\n  }\n}\n.carousel-indicators .active {\n  opacity: 1;\n}\n\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 1.25rem;\n  left: 15%;\n  padding-top: 1.25rem;\n  padding-bottom: 1.25rem;\n  color: #fff;\n  text-align: center;\n}\n\n.carousel-dark .carousel-control-prev-icon,\n.carousel-dark .carousel-control-next-icon {\n  filter: invert(1) grayscale(100);\n}\n.carousel-dark .carousel-indicators [data-bs-target] {\n  background-color: #000;\n}\n.carousel-dark .carousel-caption {\n  color: #000;\n}\n\n@keyframes spinner-border {\n  to {\n    transform: rotate(360deg) /* rtl:ignore */;\n  }\n}\n.spinner-border {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: -0.125em;\n  border: 0.25em solid currentColor;\n  border-right-color: transparent;\n  border-radius: 50%;\n  animation: 0.75s linear infinite spinner-border;\n}\n\n.spinner-border-sm {\n  width: 1rem;\n  height: 1rem;\n  border-width: 0.2em;\n}\n\n@keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n.spinner-grow {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: -0.125em;\n  background-color: currentColor;\n  border-radius: 50%;\n  opacity: 0;\n  animation: 0.75s linear infinite spinner-grow;\n}\n\n.spinner-grow-sm {\n  width: 1rem;\n  height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .spinner-border,\n.spinner-grow {\n    animation-duration: 1.5s;\n  }\n}\n.offcanvas {\n  position: fixed;\n  bottom: 0;\n  z-index: 1045;\n  display: flex;\n  flex-direction: column;\n  max-width: 100%;\n  visibility: hidden;\n  background-color: #fff;\n  background-clip: padding-box;\n  outline: 0;\n  transition: transform 0.3s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .offcanvas {\n    transition: none;\n  }\n}\n\n.offcanvas-backdrop {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1040;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n.offcanvas-backdrop.fade {\n  opacity: 0;\n}\n.offcanvas-backdrop.show {\n  opacity: 0.5;\n}\n\n.offcanvas-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n}\n.offcanvas-header .btn-close {\n  padding: 0.5rem 0.5rem;\n  margin-top: -0.5rem;\n  margin-right: -0.5rem;\n  margin-bottom: -0.5rem;\n}\n\n.offcanvas-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.offcanvas-body {\n  flex-grow: 1;\n  padding: 1rem 1rem;\n  overflow-y: auto;\n}\n\n.offcanvas-start {\n  top: 0;\n  left: 0;\n  width: 400px;\n  border-right: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateX(-100%);\n}\n\n.offcanvas-end {\n  top: 0;\n  right: 0;\n  width: 400px;\n  border-left: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateX(100%);\n}\n\n.offcanvas-top {\n  top: 0;\n  right: 0;\n  left: 0;\n  height: 30vh;\n  max-height: 100%;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateY(-100%);\n}\n\n.offcanvas-bottom {\n  right: 0;\n  left: 0;\n  height: 30vh;\n  max-height: 100%;\n  border-top: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateY(100%);\n}\n\n.offcanvas.show {\n  transform: none;\n}\n\n.placeholder {\n  display: inline-block;\n  min-height: 1em;\n  vertical-align: middle;\n  cursor: wait;\n  background-color: currentColor;\n  opacity: 0.5;\n}\n.placeholder.btn::before {\n  display: inline-block;\n  content: \"\";\n}\n\n.placeholder-xs {\n  min-height: 0.6em;\n}\n\n.placeholder-sm {\n  min-height: 0.8em;\n}\n\n.placeholder-lg {\n  min-height: 1.2em;\n}\n\n.placeholder-glow .placeholder {\n  animation: placeholder-glow 2s ease-in-out infinite;\n}\n\n@keyframes placeholder-glow {\n  50% {\n    opacity: 0.2;\n  }\n}\n.placeholder-wave {\n  mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n  mask-size: 200% 100%;\n  animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n  100% {\n    mask-position: -200% 0%;\n  }\n}\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.link-primary {\n  color: #0d6efd;\n}\n.link-primary:hover, .link-primary:focus {\n  color: #0a58ca;\n}\n\n.link-secondary {\n  color: #6c757d;\n}\n.link-secondary:hover, .link-secondary:focus {\n  color: #565e64;\n}\n\n.link-success {\n  color: #198754;\n}\n.link-success:hover, .link-success:focus {\n  color: #146c43;\n}\n\n.link-info {\n  color: #0dcaf0;\n}\n.link-info:hover, .link-info:focus {\n  color: #3dd5f3;\n}\n\n.link-warning {\n  color: #ffc107;\n}\n.link-warning:hover, .link-warning:focus {\n  color: #ffcd39;\n}\n\n.link-danger {\n  color: #dc3545;\n}\n.link-danger:hover, .link-danger:focus {\n  color: #b02a37;\n}\n\n.link-light {\n  color: #f8f9fa;\n}\n.link-light:hover, .link-light:focus {\n  color: #f9fafb;\n}\n\n.link-dark {\n  color: #212529;\n}\n.link-dark:hover, .link-dark:focus {\n  color: #1a1e21;\n}\n\n.ratio {\n  position: relative;\n  width: 100%;\n}\n.ratio::before {\n  display: block;\n  padding-top: var(--bs-aspect-ratio);\n  content: \"\";\n}\n.ratio > * {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.ratio-1x1 {\n  --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n  --bs-aspect-ratio: calc(3 / 4 * 100%);\n}\n\n.ratio-16x9 {\n  --bs-aspect-ratio: calc(9 / 16 * 100%);\n}\n\n.ratio-21x9 {\n  --bs-aspect-ratio: calc(9 / 21 * 100%);\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.sticky-top {\n  position: sticky;\n  top: 0;\n  z-index: 1020;\n}\n\n@media (min-width: 576px) {\n  .sticky-sm-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 768px) {\n  .sticky-md-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 992px) {\n  .sticky-lg-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1200px) {\n  .sticky-xl-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1400px) {\n  .sticky-xxl-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1;\n  content: \"\";\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: 0.25;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.float-start {\n  float: left !important;\n}\n\n.float-end {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-25 {\n  opacity: 0.25 !important;\n}\n\n.opacity-50 {\n  opacity: 0.5 !important;\n}\n\n.opacity-75 {\n  opacity: 0.75 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: sticky !important;\n}\n\n.top-0 {\n  top: 0 !important;\n}\n\n.top-50 {\n  top: 50% !important;\n}\n\n.top-100 {\n  top: 100% !important;\n}\n\n.bottom-0 {\n  bottom: 0 !important;\n}\n\n.bottom-50 {\n  bottom: 50% !important;\n}\n\n.bottom-100 {\n  bottom: 100% !important;\n}\n\n.start-0 {\n  left: 0 !important;\n}\n\n.start-50 {\n  left: 50% !important;\n}\n\n.start-100 {\n  left: 100% !important;\n}\n\n.end-0 {\n  right: 0 !important;\n}\n\n.end-50 {\n  right: 50% !important;\n}\n\n.end-100 {\n  right: 100% !important;\n}\n\n.translate-middle {\n  transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n  transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n  transform: translateY(-50%) !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-end {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-end-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-start {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-start-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #0d6efd !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #198754 !important;\n}\n\n.border-info {\n  border-color: #0dcaf0 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #212529 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.border-1 {\n  border-width: 1px !important;\n}\n\n.border-2 {\n  border-width: 2px !important;\n}\n\n.border-3 {\n  border-width: 3px !important;\n}\n\n.border-4 {\n  border-width: 4px !important;\n}\n\n.border-5 {\n  border-width: 5px !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.vw-100 {\n  width: 100vw !important;\n}\n\n.min-vw-100 {\n  min-width: 100vw !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.vh-100 {\n  height: 100vh !important;\n}\n\n.min-vh-100 {\n  min-height: 100vh !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.gap-0 {\n  gap: 0 !important;\n}\n\n.gap-1 {\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  gap: 1rem !important;\n}\n\n.gap-4 {\n  gap: 1.5rem !important;\n}\n\n.gap-5 {\n  gap: 3rem !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-right: 0 !important;\n  margin-left: 0 !important;\n}\n\n.mx-1 {\n  margin-right: 0.25rem !important;\n  margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-right: 0.5rem !important;\n  margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-right: 1rem !important;\n  margin-left: 1rem !important;\n}\n\n.mx-4 {\n  margin-right: 1.5rem !important;\n  margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-right: 3rem !important;\n  margin-left: 3rem !important;\n}\n\n.mx-auto {\n  margin-right: auto !important;\n  margin-left: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-right: 0 !important;\n}\n\n.me-1 {\n  margin-right: 0.25rem !important;\n}\n\n.me-2 {\n  margin-right: 0.5rem !important;\n}\n\n.me-3 {\n  margin-right: 1rem !important;\n}\n\n.me-4 {\n  margin-right: 1.5rem !important;\n}\n\n.me-5 {\n  margin-right: 3rem !important;\n}\n\n.me-auto {\n  margin-right: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-left: 0 !important;\n}\n\n.ms-1 {\n  margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-left: 1rem !important;\n}\n\n.ms-4 {\n  margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-left: 3rem !important;\n}\n\n.ms-auto {\n  margin-left: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-right: 0 !important;\n  padding-left: 0 !important;\n}\n\n.px-1 {\n  padding-right: 0.25rem !important;\n  padding-left: 0.25rem !important;\n}\n\n.px-2 {\n  padding-right: 0.5rem !important;\n  padding-left: 0.5rem !important;\n}\n\n.px-3 {\n  padding-right: 1rem !important;\n  padding-left: 1rem !important;\n}\n\n.px-4 {\n  padding-right: 1.5rem !important;\n  padding-left: 1.5rem !important;\n}\n\n.px-5 {\n  padding-right: 3rem !important;\n  padding-left: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-right: 0 !important;\n}\n\n.pe-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-right: 1rem !important;\n}\n\n.pe-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-left: 0 !important;\n}\n\n.ps-1 {\n  padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-left: 1rem !important;\n}\n\n.ps-4 {\n  padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-left: 3rem !important;\n}\n\n.font-monospace {\n  font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n  font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n  font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n  font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n  font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n  font-size: 1.25rem !important;\n}\n\n.fs-6 {\n  font-size: 1rem !important;\n}\n\n.fst-italic {\n  font-style: italic !important;\n}\n\n.fst-normal {\n  font-style: normal !important;\n}\n\n.fw-light {\n  font-weight: 300 !important;\n}\n\n.fw-lighter {\n  font-weight: lighter !important;\n}\n\n.fw-normal {\n  font-weight: 400 !important;\n}\n\n.fw-bold {\n  font-weight: 700 !important;\n}\n\n.fw-bolder {\n  font-weight: bolder !important;\n}\n\n.lh-1 {\n  line-height: 1 !important;\n}\n\n.lh-sm {\n  line-height: 1.25 !important;\n}\n\n.lh-base {\n  line-height: 1.5 !important;\n}\n\n.lh-lg {\n  line-height: 2 !important;\n}\n\n.text-start {\n  text-align: left !important;\n}\n\n.text-end {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n.text-decoration-none {\n  text-decoration: none !important;\n}\n\n.text-decoration-underline {\n  text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n  text-decoration: line-through !important;\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.text-wrap {\n  white-space: normal !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n  word-wrap: break-word !important;\n  word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n  --bs-text-opacity: 1;\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  --bs-text-opacity: 1;\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  --bs-text-opacity: 1;\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-reset {\n  --bs-text-opacity: 1;\n  color: inherit !important;\n}\n\n.text-opacity-25 {\n  --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n  --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n  --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n  --bs-text-opacity: 1;\n}\n\n.bg-primary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n  --bs-bg-opacity: 1;\n  background-color: transparent !important;\n}\n\n.bg-opacity-10 {\n  --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n  --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n  --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n  --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n  --bs-bg-opacity: 1;\n}\n\n.bg-gradient {\n  background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n  user-select: all !important;\n}\n\n.user-select-auto {\n  user-select: auto !important;\n}\n\n.user-select-none {\n  user-select: none !important;\n}\n\n.pe-none {\n  pointer-events: none !important;\n}\n\n.pe-auto {\n  pointer-events: auto !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.rounded-1 {\n  border-radius: 0.2rem !important;\n}\n\n.rounded-2 {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-3 {\n  border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-pill {\n  border-radius: 50rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-end {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-start {\n  border-bottom-left-radius: 0.25rem !important;\n  border-top-left-radius: 0.25rem !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-start {\n    float: left !important;\n  }\n\n  .float-sm-end {\n    float: right !important;\n  }\n\n  .float-sm-none {\n    float: none !important;\n  }\n\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-sm-0 {\n    gap: 0 !important;\n  }\n\n  .gap-sm-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-sm-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-sm-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-sm-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-sm-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-sm-start {\n    text-align: left !important;\n  }\n\n  .text-sm-end {\n    text-align: right !important;\n  }\n\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 768px) {\n  .float-md-start {\n    float: left !important;\n  }\n\n  .float-md-end {\n    float: right !important;\n  }\n\n  .float-md-none {\n    float: none !important;\n  }\n\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-md-0 {\n    gap: 0 !important;\n  }\n\n  .gap-md-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-md-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-md-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-md-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-md-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-left: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-md-start {\n    text-align: left !important;\n  }\n\n  .text-md-end {\n    text-align: right !important;\n  }\n\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 992px) {\n  .float-lg-start {\n    float: left !important;\n  }\n\n  .float-lg-end {\n    float: right !important;\n  }\n\n  .float-lg-none {\n    float: none !important;\n  }\n\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-lg-0 {\n    gap: 0 !important;\n  }\n\n  .gap-lg-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-lg-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-lg-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-lg-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-lg-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-lg-start {\n    text-align: left !important;\n  }\n\n  .text-lg-end {\n    text-align: right !important;\n  }\n\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .float-xl-start {\n    float: left !important;\n  }\n\n  .float-xl-end {\n    float: right !important;\n  }\n\n  .float-xl-none {\n    float: none !important;\n  }\n\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xl-start {\n    text-align: left !important;\n  }\n\n  .text-xl-end {\n    text-align: right !important;\n  }\n\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1400px) {\n  .float-xxl-start {\n    float: left !important;\n  }\n\n  .float-xxl-end {\n    float: right !important;\n  }\n\n  .float-xxl-none {\n    float: none !important;\n  }\n\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xxl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xxl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xxl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xxl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xxl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xxl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xxl-start {\n    text-align: left !important;\n  }\n\n  .text-xxl-end {\n    text-align: right !important;\n  }\n\n  .text-xxl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .fs-1 {\n    font-size: 2.5rem !important;\n  }\n\n  .fs-2 {\n    font-size: 2rem !important;\n  }\n\n  .fs-3 {\n    font-size: 1.75rem !important;\n  }\n\n  .fs-4 {\n    font-size: 1.5rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */\n","//\n// Headings\n//\n.h1 {\n  @extend h1;\n}\n\n.h2 {\n  @extend h2;\n}\n\n.h3 {\n  @extend h3;\n}\n\n.h4 {\n  @extend h4;\n}\n\n.h5 {\n  @extend h5;\n}\n\n.h6 {\n  @extend h6;\n}\n\n\n.lead {\n  @include font-size($lead-font-size);\n  font-weight: $lead-font-weight;\n}\n\n// Type display classes\n@each $display, $font-size in $display-font-sizes {\n  .display-#{$display} {\n    @include font-size($font-size);\n    font-weight: $display-font-weight;\n    line-height: $display-line-height;\n  }\n}\n\n//\n// Emphasis\n//\n.small {\n  @extend small;\n}\n\n.mark {\n  @extend mark;\n}\n\n//\n// Lists\n//\n\n.list-unstyled {\n  @include list-unstyled();\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  @include list-unstyled();\n}\n.list-inline-item {\n  display: inline-block;\n\n  &:not(:last-child) {\n    margin-right: $list-inline-padding;\n  }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n  @include font-size($initialism-font-size);\n  text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n  margin-bottom: $blockquote-margin-y;\n  @include font-size($blockquote-font-size);\n\n  > :last-child {\n    margin-bottom: 0;\n  }\n}\n\n.blockquote-footer {\n  margin-top: -$blockquote-margin-y;\n  margin-bottom: $blockquote-margin-y;\n  @include font-size($blockquote-footer-font-size);\n  color: $blockquote-footer-color;\n\n  &::before {\n    content: \"\\2014\\00A0\"; // em dash, nbsp\n  }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n  @include img-fluid();\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n  padding: $thumbnail-padding;\n  background-color: $thumbnail-bg;\n  border: $thumbnail-border-width solid $thumbnail-border-color;\n  @include border-radius($thumbnail-border-radius);\n  @include box-shadow($thumbnail-box-shadow);\n\n  // Keep them at most 100% wide\n  @include img-fluid();\n}\n\n//\n// Figures\n//\n\n.figure {\n  // Ensures the caption's text aligns with the image.\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: $spacer * .5;\n  line-height: 1;\n}\n\n.figure-caption {\n  @include font-size($figure-caption-font-size);\n  color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n  // Part 1: Set a maximum relative to the parent\n  max-width: 100%;\n  // Part 2: Override the height to auto, otherwise images will be stretched\n  // when setting a width and height attribute on the img element.\n  height: auto;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n  // Single container class with breakpoint max-widths\n  .container,\n  // 100% wide container at all breakpoints\n  .container-fluid {\n    @include make-container();\n  }\n\n  // Responsive containers that are 100% wide until a breakpoint\n  @each $breakpoint, $container-max-width in $container-max-widths {\n    .container-#{$breakpoint} {\n      @extend .container-fluid;\n    }\n\n    @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n      %responsive-container-#{$breakpoint} {\n        max-width: $container-max-width;\n      }\n\n      // Extend each breakpoint which is smaller or equal to the current breakpoint\n      $extend-breakpoint: true;\n\n      @each $name, $width in $grid-breakpoints {\n        @if ($extend-breakpoint) {\n          .container#{breakpoint-infix($name, $grid-breakpoints)} {\n            @extend %responsive-container-#{$breakpoint};\n          }\n\n          // Once the current breakpoint is reached, stop extending\n          @if ($breakpoint == $name) {\n            $extend-breakpoint: false;\n          }\n        }\n      }\n    }\n  }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  width: 100%;\n  padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});\n  margin-right: auto;\n  margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n  $n: index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n  }\n  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n  $min: map-get($breakpoints, $name);\n  @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n  $max: map-get($breakpoints, $name);\n  @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n  @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n  .row {\n    @include make-row();\n\n    > * {\n      @include make-col-ready();\n    }\n  }\n}\n\n@if $enable-cssgrid {\n  .grid {\n    display: grid;\n    grid-template-rows: repeat(var(--#{$variable-prefix}rows, 1), 1fr);\n    grid-template-columns: repeat(var(--#{$variable-prefix}columns, #{$grid-columns}), 1fr);\n    gap: var(--#{$variable-prefix}gap, #{$grid-gutter-width});\n\n    @include make-cssgrid();\n  }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n  @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n  --#{$variable-prefix}gutter-x: #{$gutter};\n  --#{$variable-prefix}gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list\n  margin-right: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n  margin-left: calc(var(--#{$variable-prefix}gutter-x) * -.5); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n  // Add box sizing if only the grid is loaded\n  box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-right: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  padding-left: calc(var(--#{$variable-prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n  margin-top: var(--#{$variable-prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: percentage(divide($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: divide($size, $columns);\n  margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: divide(100%, $count);\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --#{$variable-prefix}gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is and invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","//\n// Basic Bootstrap table\n//\n\n.table {\n  --#{$variable-prefix}table-bg: #{$table-bg};\n  --#{$variable-prefix}table-accent-bg: #{$table-accent-bg};\n  --#{$variable-prefix}table-striped-color: #{$table-striped-color};\n  --#{$variable-prefix}table-striped-bg: #{$table-striped-bg};\n  --#{$variable-prefix}table-active-color: #{$table-active-color};\n  --#{$variable-prefix}table-active-bg: #{$table-active-bg};\n  --#{$variable-prefix}table-hover-color: #{$table-hover-color};\n  --#{$variable-prefix}table-hover-bg: #{$table-hover-bg};\n\n  width: 100%;\n  margin-bottom: $spacer;\n  color: $table-color;\n  vertical-align: $table-cell-vertical-align;\n  border-color: $table-border-color;\n\n  // Target th & td\n  // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.\n  // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).\n  // Another advantage is that this generates less code and makes the selector less specific making it easier to override.\n  // stylelint-disable-next-line selector-max-universal\n  > :not(caption) > * > * {\n    padding: $table-cell-padding-y $table-cell-padding-x;\n    background-color: var(--#{$variable-prefix}table-bg);\n    border-bottom-width: $table-border-width;\n    box-shadow: inset 0 0 0 9999px var(--#{$variable-prefix}table-accent-bg);\n  }\n\n  > tbody {\n    vertical-align: inherit;\n  }\n\n  > thead {\n    vertical-align: bottom;\n  }\n\n  // Highlight border color between thead, tbody and tfoot.\n  > :not(:last-child) > :last-child > * {\n    border-bottom-color: $table-group-separator-color;\n  }\n}\n\n\n//\n// Change placement of captions with a class\n//\n\n.caption-top {\n  caption-side: top;\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n  // stylelint-disable-next-line selector-max-universal\n  > :not(caption) > * > * {\n    padding: $table-cell-padding-y-sm $table-cell-padding-x-sm;\n  }\n}\n\n\n// Border versions\n//\n// Add or remove borders all around the table and between all the columns.\n//\n// When borders are added on all sides of the cells, the corners can render odd when\n// these borders do not have the same color or if they are semi-transparent.\n// Therefor we add top and border bottoms to the `tr`s and left and right borders\n// to the `td`s or `th`s\n\n.table-bordered {\n  > :not(caption) > * {\n    border-width: $table-border-width 0;\n\n    // stylelint-disable-next-line selector-max-universal\n    > * {\n      border-width: 0 $table-border-width;\n    }\n  }\n}\n\n.table-borderless {\n  // stylelint-disable-next-line selector-max-universal\n  > :not(caption) > * > * {\n    border-bottom-width: 0;\n  }\n}\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-of-type(#{$table-striped-order}) {\n    --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-striped-bg);\n    color: var(--#{$variable-prefix}table-striped-color);\n  }\n}\n\n// Active table\n//\n// The `.table-active` class can be added to highlight rows or cells\n\n.table-active {\n  --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-active-bg);\n  color: var(--#{$variable-prefix}table-active-color);\n}\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-hover-bg);\n    color: var(--#{$variable-prefix}table-hover-color);\n  }\n}\n\n\n// Table variants\n//\n// Table variants set the table cell backgrounds, border colors\n// and the colors of the striped, hovered & active tables\n\n@each $color, $value in $table-variants {\n  @include table-variant($color, $value);\n}\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n  @include media-breakpoint-down($breakpoint) {\n    .table-responsive#{$infix} {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n}\n","// scss-docs-start table-variant\n@mixin table-variant($state, $background) {\n  .table-#{$state} {\n    $color: color-contrast(opaque($body-bg, $background));\n    $hover-bg: mix($color, $background, percentage($table-hover-bg-factor));\n    $striped-bg: mix($color, $background, percentage($table-striped-bg-factor));\n    $active-bg: mix($color, $background, percentage($table-active-bg-factor));\n\n    --#{$variable-prefix}table-bg: #{$background};\n    --#{$variable-prefix}table-striped-bg: #{$striped-bg};\n    --#{$variable-prefix}table-striped-color: #{color-contrast($striped-bg)};\n    --#{$variable-prefix}table-active-bg: #{$active-bg};\n    --#{$variable-prefix}table-active-color: #{color-contrast($active-bg)};\n    --#{$variable-prefix}table-hover-bg: #{$hover-bg};\n    --#{$variable-prefix}table-hover-color: #{color-contrast($hover-bg)};\n\n    color: $color;\n    border-color: mix($color, $background, percentage($table-border-factor));\n  }\n}\n// scss-docs-end table-variant\n","//\n// Labels\n//\n\n.form-label {\n  margin-bottom: $form-label-margin-bottom;\n  @include font-size($form-label-font-size);\n  font-style: $form-label-font-style;\n  font-weight: $form-label-font-weight;\n  color: $form-label-color;\n}\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n  padding-top: add($input-padding-y, $input-border-width);\n  padding-bottom: add($input-padding-y, $input-border-width);\n  margin-bottom: 0; // Override the `<legend>` default\n  @include font-size(inherit); // Override the `<legend>` default\n  font-style: $form-label-font-style;\n  font-weight: $form-label-font-weight;\n  line-height: $input-line-height;\n  color: $form-label-color;\n}\n\n.col-form-label-lg {\n  padding-top: add($input-padding-y-lg, $input-border-width);\n  padding-bottom: add($input-padding-y-lg, $input-border-width);\n  @include font-size($input-font-size-lg);\n}\n\n.col-form-label-sm {\n  padding-top: add($input-padding-y-sm, $input-border-width);\n  padding-bottom: add($input-padding-y-sm, $input-border-width);\n  @include font-size($input-font-size-sm);\n}\n","//\n// Form text\n//\n\n.form-text {\n  margin-top: $form-text-margin-top;\n  @include font-size($form-text-font-size);\n  font-style: $form-text-font-style;\n  font-weight: $form-text-font-weight;\n  color: $form-text-color;\n}\n","//\n// General form controls (plus a few specific high-level interventions)\n//\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: $input-padding-y $input-padding-x;\n  font-family: $input-font-family;\n  @include font-size($input-font-size);\n  font-weight: $input-font-weight;\n  line-height: $input-line-height;\n  color: $input-color;\n  background-color: $input-bg;\n  background-clip: padding-box;\n  border: $input-border-width solid $input-border-color;\n  appearance: none; // Fix appearance for date inputs in Safari\n\n  // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.\n  @include border-radius($input-border-radius, 0);\n\n  @include box-shadow($input-box-shadow);\n  @include transition($input-transition);\n\n  &[type=\"file\"] {\n    overflow: hidden; // prevent pseudo element button overlap\n\n    &:not(:disabled):not([readonly]) {\n      cursor: pointer;\n    }\n  }\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  &:focus {\n    color: $input-focus-color;\n    background-color: $input-focus-bg;\n    border-color: $input-focus-border-color;\n    outline: 0;\n    @if $enable-shadows {\n      @include box-shadow($input-box-shadow, $input-focus-box-shadow);\n    } @else {\n      // Avoid using mixin so we can pass custom focus shadow properly\n      box-shadow: $input-focus-box-shadow;\n    }\n  }\n\n  // Add some height to date inputs on iOS\n  // https://github.com/twbs/bootstrap/issues/23307\n  // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved\n  &::-webkit-date-and-time-value {\n    // Multiply line-height by 1em if it has no unit\n    height: if(unit($input-line-height) == \"\", $input-line-height * 1em, $input-line-height);\n  }\n\n  // Placeholder\n  &::placeholder {\n    color: $input-placeholder-color;\n    // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n    opacity: 1;\n  }\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &:disabled,\n  &[readonly] {\n    background-color: $input-disabled-bg;\n    border-color: $input-disabled-border-color;\n    // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n    opacity: 1;\n  }\n\n  // File input buttons theming\n  &::file-selector-button {\n    padding: $input-padding-y $input-padding-x;\n    margin: (-$input-padding-y) (-$input-padding-x);\n    margin-inline-end: $input-padding-x;\n    color: $form-file-button-color;\n    @include gradient-bg($form-file-button-bg);\n    pointer-events: none;\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: $input-border-width;\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n    @include transition($btn-transition);\n  }\n\n  &:hover:not(:disabled):not([readonly])::file-selector-button {\n    background-color: $form-file-button-hover-bg;\n  }\n\n  &::-webkit-file-upload-button {\n    padding: $input-padding-y $input-padding-x;\n    margin: (-$input-padding-y) (-$input-padding-x);\n    margin-inline-end: $input-padding-x;\n    color: $form-file-button-color;\n    @include gradient-bg($form-file-button-bg);\n    pointer-events: none;\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: $input-border-width;\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n    @include transition($btn-transition);\n  }\n\n  &:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n    background-color: $form-file-button-hover-bg;\n  }\n}\n\n// Readonly controls as plain text\n//\n// Apply class to a readonly input to make it appear like regular plain\n// text (without any border, background color, focus indicator)\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding: $input-padding-y 0;\n  margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n  line-height: $input-line-height;\n  color: $input-plaintext-color;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: $input-border-width 0;\n\n  &.form-control-sm,\n  &.form-control-lg {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// Repeated in `_input_group.scss` to avoid Sass extend issues.\n\n.form-control-sm {\n  min-height: $input-height-sm;\n  padding: $input-padding-y-sm $input-padding-x-sm;\n  @include font-size($input-font-size-sm);\n  @include border-radius($input-border-radius-sm);\n\n  &::file-selector-button {\n    padding: $input-padding-y-sm $input-padding-x-sm;\n    margin: (-$input-padding-y-sm) (-$input-padding-x-sm);\n    margin-inline-end: $input-padding-x-sm;\n  }\n\n  &::-webkit-file-upload-button {\n    padding: $input-padding-y-sm $input-padding-x-sm;\n    margin: (-$input-padding-y-sm) (-$input-padding-x-sm);\n    margin-inline-end: $input-padding-x-sm;\n  }\n}\n\n.form-control-lg {\n  min-height: $input-height-lg;\n  padding: $input-padding-y-lg $input-padding-x-lg;\n  @include font-size($input-font-size-lg);\n  @include border-radius($input-border-radius-lg);\n\n  &::file-selector-button {\n    padding: $input-padding-y-lg $input-padding-x-lg;\n    margin: (-$input-padding-y-lg) (-$input-padding-x-lg);\n    margin-inline-end: $input-padding-x-lg;\n  }\n\n  &::-webkit-file-upload-button {\n    padding: $input-padding-y-lg $input-padding-x-lg;\n    margin: (-$input-padding-y-lg) (-$input-padding-x-lg);\n    margin-inline-end: $input-padding-x-lg;\n  }\n}\n\n// Make sure textareas don't shrink too much when resized\n// https://github.com/twbs/bootstrap/pull/29124\n// stylelint-disable selector-no-qualifying-type\ntextarea {\n  &.form-control {\n    min-height: $input-height;\n  }\n\n  &.form-control-sm {\n    min-height: $input-height-sm;\n  }\n\n  &.form-control-lg {\n    min-height: $input-height-lg;\n  }\n}\n// stylelint-enable selector-no-qualifying-type\n\n.form-control-color {\n  width: $form-color-width;\n  height: auto; // Override fixed browser height\n  padding: $input-padding-y;\n\n  &:not(:disabled):not([readonly]) {\n    cursor: pointer;\n  }\n\n  &::-moz-color-swatch {\n    height: if(unit($input-line-height) == \"\", $input-line-height * 1em, $input-line-height);\n    @include border-radius($input-border-radius);\n  }\n\n  &::-webkit-color-swatch {\n    height: if(unit($input-line-height) == \"\", $input-line-height * 1em, $input-line-height);\n    @include border-radius($input-border-radius);\n  }\n}\n","// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","// Gradients\n\n// scss-docs-start gradient-bg-mixin\n@mixin gradient-bg($color: null) {\n  background-color: $color;\n\n  @if $enable-gradients {\n    background-image: var(--#{$variable-prefix}gradient);\n  }\n}\n// scss-docs-end gradient-bg-mixin\n\n// scss-docs-start gradient-mixins\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: null, $end-percent: null) {\n  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n  background-image: linear-gradient($deg, $start-color, $end-color);\n}\n\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n  background-image: radial-gradient(circle, $inner-color, $outer-color);\n}\n\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n// scss-docs-end gradient-mixins\n","// Select\n//\n// Replaces the browser default select with a custom one, mostly pulled from\n// https://primer.github.io/.\n\n.form-select {\n  display: block;\n  width: 100%;\n  padding: $form-select-padding-y $form-select-indicator-padding $form-select-padding-y $form-select-padding-x;\n  // stylelint-disable-next-line property-no-vendor-prefix\n  -moz-padding-start: subtract($form-select-padding-x, 3px); // See https://github.com/twbs/bootstrap/issues/32636\n  font-family: $form-select-font-family;\n  @include font-size($form-select-font-size);\n  font-weight: $form-select-font-weight;\n  line-height: $form-select-line-height;\n  color: $form-select-color;\n  background-color: $form-select-bg;\n  background-image: escape-svg($form-select-indicator);\n  background-repeat: no-repeat;\n  background-position: $form-select-bg-position;\n  background-size: $form-select-bg-size;\n  border: $form-select-border-width solid $form-select-border-color;\n  @include border-radius($form-select-border-radius, 0);\n  @include box-shadow($form-select-box-shadow);\n  @include transition($form-select-transition);\n  appearance: none;\n\n  &:focus {\n    border-color: $form-select-focus-border-color;\n    outline: 0;\n    @if $enable-shadows {\n      @include box-shadow($form-select-box-shadow, $form-select-focus-box-shadow);\n    } @else {\n      // Avoid using mixin so we can pass custom focus shadow properly\n      box-shadow: $form-select-focus-box-shadow;\n    }\n  }\n\n  &[multiple],\n  &[size]:not([size=\"1\"]) {\n    padding-right: $form-select-padding-x;\n    background-image: none;\n  }\n\n  &:disabled {\n    color: $form-select-disabled-color;\n    background-color: $form-select-disabled-bg;\n    border-color: $form-select-disabled-border-color;\n  }\n\n  // Remove outline from select box in FF\n  &:-moz-focusring {\n    color: transparent;\n    text-shadow: 0 0 0 $form-select-color;\n  }\n}\n\n.form-select-sm {\n  padding-top: $form-select-padding-y-sm;\n  padding-bottom: $form-select-padding-y-sm;\n  padding-left: $form-select-padding-x-sm;\n  @include font-size($form-select-font-size-sm);\n}\n\n.form-select-lg {\n  padding-top: $form-select-padding-y-lg;\n  padding-bottom: $form-select-padding-y-lg;\n  padding-left: $form-select-padding-x-lg;\n  @include font-size($form-select-font-size-lg);\n}\n","//\n// Check/radio\n//\n\n.form-check {\n  display: block;\n  min-height: $form-check-min-height;\n  padding-left: $form-check-padding-start;\n  margin-bottom: $form-check-margin-bottom;\n\n  .form-check-input {\n    float: left;\n    margin-left: $form-check-padding-start * -1;\n  }\n}\n\n.form-check-input {\n  width: $form-check-input-width;\n  height: $form-check-input-width;\n  margin-top: ($line-height-base - $form-check-input-width) * .5; // line-height minus check height\n  vertical-align: top;\n  background-color: $form-check-input-bg;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: contain;\n  border: $form-check-input-border;\n  appearance: none;\n  color-adjust: exact; // Keep themed appearance for print\n  @include transition($form-check-transition);\n\n  &[type=\"checkbox\"] {\n    @include border-radius($form-check-input-border-radius);\n  }\n\n  &[type=\"radio\"] {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: $form-check-radio-border-radius;\n  }\n\n  &:active {\n    filter: $form-check-input-active-filter;\n  }\n\n  &:focus {\n    border-color: $form-check-input-focus-border;\n    outline: 0;\n    box-shadow: $form-check-input-focus-box-shadow;\n  }\n\n  &:checked {\n    background-color: $form-check-input-checked-bg-color;\n    border-color: $form-check-input-checked-border-color;\n\n    &[type=\"checkbox\"] {\n      @if $enable-gradients {\n        background-image: escape-svg($form-check-input-checked-bg-image), var(--#{$variable-prefix}gradient);\n      } @else {\n        background-image: escape-svg($form-check-input-checked-bg-image);\n      }\n    }\n\n    &[type=\"radio\"] {\n      @if $enable-gradients {\n        background-image: escape-svg($form-check-radio-checked-bg-image), var(--#{$variable-prefix}gradient);\n      } @else {\n        background-image: escape-svg($form-check-radio-checked-bg-image);\n      }\n    }\n  }\n\n  &[type=\"checkbox\"]:indeterminate {\n    background-color: $form-check-input-indeterminate-bg-color;\n    border-color: $form-check-input-indeterminate-border-color;\n\n    @if $enable-gradients {\n      background-image: escape-svg($form-check-input-indeterminate-bg-image), var(--#{$variable-prefix}gradient);\n    } @else {\n      background-image: escape-svg($form-check-input-indeterminate-bg-image);\n    }\n  }\n\n  &:disabled {\n    pointer-events: none;\n    filter: none;\n    opacity: $form-check-input-disabled-opacity;\n  }\n\n  // Use disabled attribute in addition of :disabled pseudo-class\n  // See: https://github.com/twbs/bootstrap/issues/28247\n  &[disabled],\n  &:disabled {\n    ~ .form-check-label {\n      opacity: $form-check-label-disabled-opacity;\n    }\n  }\n}\n\n.form-check-label {\n  color: $form-check-label-color;\n  cursor: $form-check-label-cursor;\n}\n\n//\n// Switch\n//\n\n.form-switch {\n  padding-left: $form-switch-padding-start;\n\n  .form-check-input {\n    width: $form-switch-width;\n    margin-left: $form-switch-padding-start * -1;\n    background-image: escape-svg($form-switch-bg-image);\n    background-position: left center;\n    @include border-radius($form-switch-border-radius);\n    @include transition($form-switch-transition);\n\n    &:focus {\n      background-image: escape-svg($form-switch-focus-bg-image);\n    }\n\n    &:checked {\n      background-position: $form-switch-checked-bg-position;\n\n      @if $enable-gradients {\n        background-image: escape-svg($form-switch-checked-bg-image), var(--#{$variable-prefix}gradient);\n      } @else {\n        background-image: escape-svg($form-switch-checked-bg-image);\n      }\n    }\n  }\n}\n\n.form-check-inline {\n  display: inline-block;\n  margin-right: $form-check-inline-margin-end;\n}\n\n.btn-check {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n\n  &[disabled],\n  &:disabled {\n    + .btn {\n      pointer-events: none;\n      filter: none;\n      opacity: $form-check-btn-check-disabled-opacity;\n    }\n  }\n}\n","// Range\n//\n// Style range inputs the same across browsers. Vendor-specific rules for pseudo\n// elements cannot be mixed. As such, there are no shared styles for focus or\n// active states on prefixed selectors.\n\n.form-range {\n  width: 100%;\n  height: add($form-range-thumb-height, $form-range-thumb-focus-box-shadow-width * 2);\n  padding: 0; // Need to reset padding\n  background-color: transparent;\n  appearance: none;\n\n  &:focus {\n    outline: 0;\n\n    // Pseudo-elements must be split across multiple rulesets to have an effect.\n    // No box-shadow() mixin for focus accessibility.\n    &::-webkit-slider-thumb { box-shadow: $form-range-thumb-focus-box-shadow; }\n    &::-moz-range-thumb     { box-shadow: $form-range-thumb-focus-box-shadow; }\n  }\n\n  &::-moz-focus-outer {\n    border: 0;\n  }\n\n  &::-webkit-slider-thumb {\n    width: $form-range-thumb-width;\n    height: $form-range-thumb-height;\n    margin-top: ($form-range-track-height - $form-range-thumb-height) * .5; // Webkit specific\n    @include gradient-bg($form-range-thumb-bg);\n    border: $form-range-thumb-border;\n    @include border-radius($form-range-thumb-border-radius);\n    @include box-shadow($form-range-thumb-box-shadow);\n    @include transition($form-range-thumb-transition);\n    appearance: none;\n\n    &:active {\n      @include gradient-bg($form-range-thumb-active-bg);\n    }\n  }\n\n  &::-webkit-slider-runnable-track {\n    width: $form-range-track-width;\n    height: $form-range-track-height;\n    color: transparent; // Why?\n    cursor: $form-range-track-cursor;\n    background-color: $form-range-track-bg;\n    border-color: transparent;\n    @include border-radius($form-range-track-border-radius);\n    @include box-shadow($form-range-track-box-shadow);\n  }\n\n  &::-moz-range-thumb {\n    width: $form-range-thumb-width;\n    height: $form-range-thumb-height;\n    @include gradient-bg($form-range-thumb-bg);\n    border: $form-range-thumb-border;\n    @include border-radius($form-range-thumb-border-radius);\n    @include box-shadow($form-range-thumb-box-shadow);\n    @include transition($form-range-thumb-transition);\n    appearance: none;\n\n    &:active {\n      @include gradient-bg($form-range-thumb-active-bg);\n    }\n  }\n\n  &::-moz-range-track {\n    width: $form-range-track-width;\n    height: $form-range-track-height;\n    color: transparent;\n    cursor: $form-range-track-cursor;\n    background-color: $form-range-track-bg;\n    border-color: transparent; // Firefox specific?\n    @include border-radius($form-range-track-border-radius);\n    @include box-shadow($form-range-track-box-shadow);\n  }\n\n  &:disabled {\n    pointer-events: none;\n\n    &::-webkit-slider-thumb {\n      background-color: $form-range-thumb-disabled-bg;\n    }\n\n    &::-moz-range-thumb {\n      background-color: $form-range-thumb-disabled-bg;\n    }\n  }\n}\n",".form-floating {\n  position: relative;\n\n  > .form-control,\n  > .form-select {\n    height: $form-floating-height;\n    line-height: $form-floating-line-height;\n  }\n\n  > label {\n    position: absolute;\n    top: 0;\n    left: 0;\n    height: 100%; // allow textareas\n    padding: $form-floating-padding-y $form-floating-padding-x;\n    pointer-events: none;\n    border: $input-border-width solid transparent; // Required for aligning label's text with the input as it affects inner box model\n    transform-origin: 0 0;\n    @include transition($form-floating-transition);\n  }\n\n  // stylelint-disable no-duplicate-selectors\n  > .form-control {\n    padding: $form-floating-padding-y $form-floating-padding-x;\n\n    &::placeholder {\n      color: transparent;\n    }\n\n    &:focus,\n    &:not(:placeholder-shown) {\n      padding-top: $form-floating-input-padding-t;\n      padding-bottom: $form-floating-input-padding-b;\n    }\n    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n    &:-webkit-autofill {\n      padding-top: $form-floating-input-padding-t;\n      padding-bottom: $form-floating-input-padding-b;\n    }\n  }\n\n  > .form-select {\n    padding-top: $form-floating-input-padding-t;\n    padding-bottom: $form-floating-input-padding-b;\n  }\n\n  > .form-control:focus,\n  > .form-control:not(:placeholder-shown),\n  > .form-select {\n    ~ label {\n      opacity: $form-floating-label-opacity;\n      transform: $form-floating-label-transform;\n    }\n  }\n  // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n  > .form-control:-webkit-autofill {\n    ~ label {\n      opacity: $form-floating-label-opacity;\n      transform: $form-floating-label-transform;\n    }\n  }\n  // stylelint-enable no-duplicate-selectors\n}\n","//\n// Base styles\n//\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap; // For form validation feedback\n  align-items: stretch;\n  width: 100%;\n\n  > .form-control,\n  > .form-select {\n    position: relative; // For focus state's z-index\n    flex: 1 1 auto;\n    width: 1%;\n    min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size\n  }\n\n  // Bring the \"active\" form control to the top of surrounding elements\n  > .form-control:focus,\n  > .form-select:focus {\n    z-index: 3;\n  }\n\n  // Ensure buttons are always above inputs for more visually pleasing borders.\n  // This isn't needed for `.input-group-text` since it shares the same border-color\n  // as our inputs.\n  .btn {\n    position: relative;\n    z-index: 2;\n\n    &:focus {\n      z-index: 3;\n    }\n  }\n}\n\n\n// Textual addons\n//\n// Serves as a catch-all element for any text or radio/checkbox input you wish\n// to prepend or append to an input.\n\n.input-group-text {\n  display: flex;\n  align-items: center;\n  padding: $input-group-addon-padding-y $input-group-addon-padding-x;\n  @include font-size($input-font-size); // Match inputs\n  font-weight: $input-group-addon-font-weight;\n  line-height: $input-line-height;\n  color: $input-group-addon-color;\n  text-align: center;\n  white-space: nowrap;\n  background-color: $input-group-addon-bg;\n  border: $input-border-width solid $input-group-addon-border-color;\n  @include border-radius($input-border-radius);\n}\n\n\n// Sizing\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n  padding: $input-padding-y-lg $input-padding-x-lg;\n  @include font-size($input-font-size-lg);\n  @include border-radius($input-border-radius-lg);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n  padding: $input-padding-y-sm $input-padding-x-sm;\n  @include font-size($input-font-size-sm);\n  @include border-radius($input-border-radius-sm);\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n  padding-right: $form-select-padding-x + $form-select-indicator-padding;\n}\n\n\n// Rounded corners\n//\n// These rulesets must come after the sizing ones to properly override sm and lg\n// border-radius values when extending. They're more specific than we'd like\n// with the `.input-group >` part, but without it, we cannot override the sizing.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.input-group {\n  &:not(.has-validation) {\n    > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),\n    > .dropdown-toggle:nth-last-child(n + 3) {\n      @include border-end-radius(0);\n    }\n  }\n\n  &.has-validation {\n    > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu),\n    > .dropdown-toggle:nth-last-child(n + 4) {\n      @include border-end-radius(0);\n    }\n  }\n\n  $validation-messages: \"\";\n  @each $state in map-keys($form-validation-states) {\n    $validation-messages: $validation-messages + \":not(.\" + unquote($state) + \"-tooltip)\" + \":not(.\" + unquote($state) + \"-feedback)\";\n  }\n\n  > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {\n    margin-left: -$input-border-width;\n    @include border-start-radius(0);\n  }\n}\n","// This mixin uses an `if()` technique to be compatible with Dart Sass\n// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details\n\n// scss-docs-start form-validation-mixins\n@mixin form-validation-state-selector($state) {\n  @if ($state == \"valid\" or $state == \"invalid\") {\n    .was-validated #{if(&, \"&\", \"\")}:#{$state},\n    #{if(&, \"&\", \"\")}.is-#{$state} {\n      @content;\n    }\n  } @else {\n    #{if(&, \"&\", \"\")}.is-#{$state} {\n      @content;\n    }\n  }\n}\n\n@mixin form-validation-state(\n  $state,\n  $color,\n  $icon,\n  $tooltip-color: color-contrast($color),\n  $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),\n  $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity)\n) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    margin-top: $form-feedback-margin-top;\n    @include font-size($form-feedback-font-size);\n    font-style: $form-feedback-font-style;\n    color: $color;\n  }\n\n  .#{$state}-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%; // Contain to parent when possible\n    padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n    margin-top: .1rem;\n    @include font-size($form-feedback-tooltip-font-size);\n    line-height: $form-feedback-tooltip-line-height;\n    color: $tooltip-color;\n    background-color: $tooltip-bg-color;\n    @include border-radius($form-feedback-tooltip-border-radius);\n  }\n\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  .form-control {\n    @include form-validation-state-selector($state) {\n      border-color: $color;\n\n      @if $enable-validation-icons {\n        padding-right: $input-height-inner;\n        background-image: escape-svg($icon);\n        background-repeat: no-repeat;\n        background-position: right $input-height-inner-quarter center;\n        background-size: $input-height-inner-half $input-height-inner-half;\n      }\n\n      &:focus {\n        border-color: $color;\n        box-shadow: $focus-box-shadow;\n      }\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  textarea.form-control {\n    @include form-validation-state-selector($state) {\n      @if $enable-validation-icons {\n        padding-right: $input-height-inner;\n        background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n      }\n    }\n  }\n\n  .form-select {\n    @include form-validation-state-selector($state) {\n      border-color: $color;\n\n      @if $enable-validation-icons {\n        &:not([multiple]):not([size]),\n        &:not([multiple])[size=\"1\"] {\n          padding-right: $form-select-feedback-icon-padding-end;\n          background-image: escape-svg($form-select-indicator), escape-svg($icon);\n          background-position: $form-select-bg-position, $form-select-feedback-icon-position;\n          background-size: $form-select-bg-size, $form-select-feedback-icon-size;\n        }\n      }\n\n      &:focus {\n        border-color: $color;\n        box-shadow: $focus-box-shadow;\n      }\n    }\n  }\n\n  .form-check-input {\n    @include form-validation-state-selector($state) {\n      border-color: $color;\n\n      &:checked {\n        background-color: $color;\n      }\n\n      &:focus {\n        box-shadow: $focus-box-shadow;\n      }\n\n      ~ .form-check-label {\n        color: $color;\n      }\n    }\n  }\n  .form-check-inline .form-check-input {\n    ~ .#{$state}-feedback {\n      margin-left: .5em;\n    }\n  }\n\n  .input-group .form-control,\n  .input-group .form-select {\n    @include form-validation-state-selector($state) {\n      @if $state == \"valid\" {\n        z-index: 1;\n      } @else if $state == \"invalid\" {\n        z-index: 2;\n      }\n      &:focus {\n        z-index: 3;\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-mixins\n","//\n// Base styles\n//\n\n.btn {\n  display: inline-block;\n  font-family: $btn-font-family;\n  font-weight: $btn-font-weight;\n  line-height: $btn-line-height;\n  color: $body-color;\n  text-align: center;\n  text-decoration: if($link-decoration == none, null, none);\n  white-space: $btn-white-space;\n  vertical-align: middle;\n  cursor: if($enable-button-pointers, pointer, null);\n  user-select: none;\n  background-color: transparent;\n  border: $btn-border-width solid transparent;\n  @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-border-radius);\n  @include transition($btn-transition);\n\n  &:hover {\n    color: $body-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n\n  .btn-check:focus + &,\n  &:focus {\n    outline: 0;\n    box-shadow: $btn-focus-box-shadow;\n  }\n\n  .btn-check:checked + &,\n  .btn-check:active + &,\n  &:active,\n  &.active {\n    @include box-shadow($btn-active-box-shadow);\n\n    &:focus {\n      @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);\n    }\n  }\n\n  &:disabled,\n  &.disabled,\n  fieldset:disabled & {\n    pointer-events: none;\n    opacity: $btn-disabled-opacity;\n    @include box-shadow(none);\n  }\n}\n\n\n//\n// Alternate buttons\n//\n\n// scss-docs-start btn-variant-loops\n@each $color, $value in $theme-colors {\n  .btn-#{$color} {\n    @include button-variant($value, $value);\n  }\n}\n\n@each $color, $value in $theme-colors {\n  .btn-outline-#{$color} {\n    @include button-outline-variant($value);\n  }\n}\n// scss-docs-end btn-variant-loops\n\n\n//\n// Link buttons\n//\n\n// Make a button look and behave like a link\n.btn-link {\n  font-weight: $font-weight-normal;\n  color: $btn-link-color;\n  text-decoration: $link-decoration;\n\n  &:hover {\n    color: $btn-link-hover-color;\n    text-decoration: $link-hover-decoration;\n  }\n\n  &:focus {\n    text-decoration: $link-hover-decoration;\n  }\n\n  &:disabled,\n  &.disabled {\n    color: $btn-link-disabled-color;\n  }\n\n  // No need for an active state here\n}\n\n\n//\n// Button Sizes\n//\n\n.btn-lg {\n  @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg);\n}\n\n.btn-sm {\n  @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm);\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n// scss-docs-start btn-variant-mixin\n@mixin button-variant(\n  $background,\n  $border,\n  $color: color-contrast($background),\n  $hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),\n  $hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),\n  $hover-color: color-contrast($hover-background),\n  $active-background: if($color == $color-contrast-light, shade-color($background, $btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),\n  $active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),\n  $active-color: color-contrast($active-background),\n  $disabled-background: $background,\n  $disabled-border: $border,\n  $disabled-color: color-contrast($disabled-background)\n) {\n  color: $color;\n  @include gradient-bg($background);\n  border-color: $border;\n  @include box-shadow($btn-box-shadow);\n\n  &:hover {\n    color: $hover-color;\n    @include gradient-bg($hover-background);\n    border-color: $hover-border;\n  }\n\n  .btn-check:focus + &,\n  &:focus {\n    color: $hover-color;\n    @include gradient-bg($hover-background);\n    border-color: $hover-border;\n    @if $enable-shadows {\n      @include box-shadow($btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5));\n    } @else {\n      // Avoid using mixin so we can pass custom focus shadow properly\n      box-shadow: 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5);\n    }\n  }\n\n  .btn-check:checked + &,\n  .btn-check:active + &,\n  &:active,\n  &.active,\n  .show > &.dropdown-toggle {\n    color: $active-color;\n    background-color: $active-background;\n    // Remove CSS gradients if they're enabled\n    background-image: if($enable-gradients, none, null);\n    border-color: $active-border;\n\n    &:focus {\n      @if $enable-shadows {\n        @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5));\n      } @else {\n        // Avoid using mixin so we can pass custom focus shadow properly\n        box-shadow: 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5);\n      }\n    }\n  }\n\n  &:disabled,\n  &.disabled {\n    color: $disabled-color;\n    background-color: $disabled-background;\n    // Remove CSS gradients if they're enabled\n    background-image: if($enable-gradients, none, null);\n    border-color: $disabled-border;\n  }\n}\n// scss-docs-end btn-variant-mixin\n\n// scss-docs-start btn-outline-variant-mixin\n@mixin button-outline-variant(\n  $color,\n  $color-hover: color-contrast($color),\n  $active-background: $color,\n  $active-border: $color,\n  $active-color: color-contrast($active-background)\n) {\n  color: $color;\n  border-color: $color;\n\n  &:hover {\n    color: $color-hover;\n    background-color: $active-background;\n    border-color: $active-border;\n  }\n\n  .btn-check:focus + &,\n  &:focus {\n    box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n  }\n\n  .btn-check:checked + &,\n  .btn-check:active + &,\n  &:active,\n  &.active,\n  &.dropdown-toggle.show {\n    color: $active-color;\n    background-color: $active-background;\n    border-color: $active-border;\n\n    &:focus {\n      @if $enable-shadows {\n        @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5));\n      } @else {\n        // Avoid using mixin so we can pass custom focus shadow properly\n        box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n      }\n    }\n  }\n\n  &:disabled,\n  &.disabled {\n    color: $color;\n    background-color: transparent;\n  }\n}\n// scss-docs-end btn-outline-variant-mixin\n\n// scss-docs-start btn-size-mixin\n@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {\n  padding: $padding-y $padding-x;\n  @include font-size($font-size);\n  // Manually declare to provide an override to the browser default\n  @include border-radius($border-radius, 0);\n}\n// scss-docs-end btn-size-mixin\n",".fade {\n  @include transition($transition-fade);\n\n  &:not(.show) {\n    opacity: 0;\n  }\n}\n\n// scss-docs-start collapse-classes\n.collapse {\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  @include transition($transition-collapse);\n\n  &.collapse-horizontal {\n    width: 0;\n    height: auto;\n    @include transition($transition-collapse-width);\n  }\n}\n// scss-docs-end collapse-classes\n","// The dropdown wrapper (`<div>`)\n.dropup,\n.dropend,\n.dropdown,\n.dropstart {\n  position: relative;\n}\n\n.dropdown-toggle {\n  white-space: nowrap;\n\n  // Generate the caret automatically\n  @include caret();\n}\n\n// The dropdown menu\n.dropdown-menu {\n  position: absolute;\n  z-index: $zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  min-width: $dropdown-min-width;\n  padding: $dropdown-padding-y $dropdown-padding-x;\n  margin: 0; // Override default margin of ul\n  @include font-size($dropdown-font-size);\n  color: $dropdown-color;\n  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n  list-style: none;\n  background-color: $dropdown-bg;\n  background-clip: padding-box;\n  border: $dropdown-border-width solid $dropdown-border-color;\n  @include border-radius($dropdown-border-radius);\n  @include box-shadow($dropdown-box-shadow);\n\n  &[data-bs-popper] {\n    top: 100%;\n    left: 0;\n    margin-top: $dropdown-spacer;\n  }\n}\n\n// scss-docs-start responsive-breakpoints\n// We deliberately hardcode the `bs-` prefix because we check\n// this custom property in JS to determine Popper's positioning\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .dropdown-menu#{$infix}-start {\n      --bs-position: start;\n\n      &[data-bs-popper] {\n        right: auto;\n        left: 0;\n      }\n    }\n\n    .dropdown-menu#{$infix}-end {\n      --bs-position: end;\n\n      &[data-bs-popper] {\n        right: 0;\n        left: auto;\n      }\n    }\n  }\n}\n// scss-docs-end responsive-breakpoints\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n// Just add .dropup after the standard .dropdown class and you're set.\n.dropup {\n  .dropdown-menu[data-bs-popper] {\n    top: auto;\n    bottom: 100%;\n    margin-top: 0;\n    margin-bottom: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(up);\n  }\n}\n\n.dropend {\n  .dropdown-menu[data-bs-popper] {\n    top: 0;\n    right: auto;\n    left: 100%;\n    margin-top: 0;\n    margin-left: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(end);\n    &::after {\n      vertical-align: 0;\n    }\n  }\n}\n\n.dropstart {\n  .dropdown-menu[data-bs-popper] {\n    top: 0;\n    right: 100%;\n    left: auto;\n    margin-top: 0;\n    margin-right: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(start);\n    &::before {\n      vertical-align: 0;\n    }\n  }\n}\n\n\n// Dividers (basically an `<hr>`) within the dropdown\n.dropdown-divider {\n  height: 0;\n  margin: $dropdown-divider-margin-y 0;\n  overflow: hidden;\n  border-top: 1px solid $dropdown-divider-bg;\n}\n\n// Links, buttons, and more within the dropdown menu\n//\n// `<button>`-specific styles are denoted with `// For <button>s`\n.dropdown-item {\n  display: block;\n  width: 100%; // For `<button>`s\n  padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n  clear: both;\n  font-weight: $font-weight-normal;\n  color: $dropdown-link-color;\n  text-align: inherit; // For `<button>`s\n  text-decoration: if($link-decoration == none, null, none);\n  white-space: nowrap; // prevent links from randomly breaking onto new lines\n  background-color: transparent; // For `<button>`s\n  border: 0; // For `<button>`s\n\n  // Prevent dropdown overflow if there's no padding\n  // See https://github.com/twbs/bootstrap/pull/27703\n  @if $dropdown-padding-y == 0 {\n    &:first-child {\n      @include border-top-radius($dropdown-inner-border-radius);\n    }\n\n    &:last-child {\n      @include border-bottom-radius($dropdown-inner-border-radius);\n    }\n  }\n\n  &:hover,\n  &:focus {\n    color: $dropdown-link-hover-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n    @include gradient-bg($dropdown-link-hover-bg);\n  }\n\n  &.active,\n  &:active {\n    color: $dropdown-link-active-color;\n    text-decoration: none;\n    @include gradient-bg($dropdown-link-active-bg);\n  }\n\n  &.disabled,\n  &:disabled {\n    color: $dropdown-link-disabled-color;\n    pointer-events: none;\n    background-color: transparent;\n    // Remove CSS gradients if they're enabled\n    background-image: if($enable-gradients, none, null);\n  }\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: $dropdown-header-padding;\n  margin-bottom: 0; // for use with heading elements\n  @include font-size($font-size-sm);\n  color: $dropdown-header-color;\n  white-space: nowrap; // as with > li > a\n}\n\n// Dropdown text\n.dropdown-item-text {\n  display: block;\n  padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n  color: $dropdown-link-color;\n}\n\n// Dark dropdowns\n.dropdown-menu-dark {\n  color: $dropdown-dark-color;\n  background-color: $dropdown-dark-bg;\n  border-color: $dropdown-dark-border-color;\n  @include box-shadow($dropdown-dark-box-shadow);\n\n  .dropdown-item {\n    color: $dropdown-dark-link-color;\n\n    &:hover,\n    &:focus {\n      color: $dropdown-dark-link-hover-color;\n      @include gradient-bg($dropdown-dark-link-hover-bg);\n    }\n\n    &.active,\n    &:active {\n      color: $dropdown-dark-link-active-color;\n      @include gradient-bg($dropdown-dark-link-active-bg);\n    }\n\n    &.disabled,\n    &:disabled {\n      color: $dropdown-dark-link-disabled-color;\n    }\n  }\n\n  .dropdown-divider {\n    border-color: $dropdown-dark-divider-bg;\n  }\n\n  .dropdown-item-text {\n    color: $dropdown-dark-link-color;\n  }\n\n  .dropdown-header {\n    color: $dropdown-dark-header-color;\n  }\n}\n","// scss-docs-start caret-mixins\n@mixin caret-down {\n  border-top: $caret-width solid;\n  border-right: $caret-width solid transparent;\n  border-bottom: 0;\n  border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n  border-top: 0;\n  border-right: $caret-width solid transparent;\n  border-bottom: $caret-width solid;\n  border-left: $caret-width solid transparent;\n}\n\n@mixin caret-end {\n  border-top: $caret-width solid transparent;\n  border-right: 0;\n  border-bottom: $caret-width solid transparent;\n  border-left: $caret-width solid;\n}\n\n@mixin caret-start {\n  border-top: $caret-width solid transparent;\n  border-right: $caret-width solid;\n  border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n  @if $enable-caret {\n    &::after {\n      display: inline-block;\n      margin-left: $caret-spacing;\n      vertical-align: $caret-vertical-align;\n      content: \"\";\n      @if $direction == down {\n        @include caret-down();\n      } @else if $direction == up {\n        @include caret-up();\n      } @else if $direction == end {\n        @include caret-end();\n      }\n    }\n\n    @if $direction == start {\n      &::after {\n        display: none;\n      }\n\n      &::before {\n        display: inline-block;\n        margin-right: $caret-spacing;\n        vertical-align: $caret-vertical-align;\n        content: \"\";\n        @include caret-start();\n      }\n    }\n\n    &:empty::after {\n      margin-left: 0;\n    }\n  }\n}\n// scss-docs-end caret-mixins\n","// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n\n  > .btn {\n    position: relative;\n    flex: 1 1 auto;\n  }\n\n  // Bring the hover, focused, and \"active\" buttons to the front to overlay\n  // the borders properly\n  > .btn-check:checked + .btn,\n  > .btn-check:focus + .btn,\n  > .btn:hover,\n  > .btn:focus,\n  > .btn:active,\n  > .btn.active {\n    z-index: 1;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n\n  .input-group {\n    width: auto;\n  }\n}\n\n.btn-group {\n  // Prevent double borders when buttons are next to each other\n  > .btn:not(:first-child),\n  > .btn-group:not(:first-child) {\n    margin-left: -$btn-border-width;\n  }\n\n  // Reset rounded corners\n  > .btn:not(:last-child):not(.dropdown-toggle),\n  > .btn-group:not(:last-child) > .btn {\n    @include border-end-radius(0);\n  }\n\n  // The left radius should be 0 if the button is:\n  // - the \"third or more\" child\n  // - the second child and the previous element isn't `.btn-check` (making it the first child visually)\n  // - part of a btn-group which isn't the first child\n  > .btn:nth-child(n + 3),\n  > :not(.btn-check) + .btn,\n  > .btn-group:not(:first-child) > .btn {\n    @include border-start-radius(0);\n  }\n}\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-sm > .btn { @extend .btn-sm; }\n.btn-group-lg > .btn { @extend .btn-lg; }\n\n\n//\n// Split button dropdowns\n//\n\n.dropdown-toggle-split {\n  padding-right: $btn-padding-x * .75;\n  padding-left: $btn-padding-x * .75;\n\n  &::after,\n  .dropup &::after,\n  .dropend &::after {\n    margin-left: 0;\n  }\n\n  .dropstart &::before {\n    margin-right: 0;\n  }\n}\n\n.btn-sm + .dropdown-toggle-split {\n  padding-right: $btn-padding-x-sm * .75;\n  padding-left: $btn-padding-x-sm * .75;\n}\n\n.btn-lg + .dropdown-toggle-split {\n  padding-right: $btn-padding-x-lg * .75;\n  padding-left: $btn-padding-x-lg * .75;\n}\n\n\n// The clickable button for toggling the menu\n// Set the same inset shadow as the :active state\n.btn-group.show .dropdown-toggle {\n  @include box-shadow($btn-active-box-shadow);\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    @include box-shadow(none);\n  }\n}\n\n\n//\n// Vertical button groups\n//\n\n.btn-group-vertical {\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: center;\n\n  > .btn,\n  > .btn-group {\n    width: 100%;\n  }\n\n  > .btn:not(:first-child),\n  > .btn-group:not(:first-child) {\n    margin-top: -$btn-border-width;\n  }\n\n  // Reset rounded corners\n  > .btn:not(:last-child):not(.dropdown-toggle),\n  > .btn-group:not(:last-child) > .btn {\n    @include border-bottom-radius(0);\n  }\n\n  > .btn ~ .btn,\n  > .btn-group:not(:first-child) > .btn {\n    @include border-top-radius(0);\n  }\n}\n","// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<ol>`s.\n\n.nav {\n  display: flex;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: $nav-link-padding-y $nav-link-padding-x;\n  @include font-size($nav-link-font-size);\n  font-weight: $nav-link-font-weight;\n  color: $nav-link-color;\n  text-decoration: if($link-decoration == none, null, none);\n  @include transition($nav-link-transition);\n\n  &:hover,\n  &:focus {\n    color: $nav-link-hover-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n\n  // Disabled state lightens text\n  &.disabled {\n    color: $nav-link-disabled-color;\n    pointer-events: none;\n    cursor: default;\n  }\n}\n\n//\n// Tabs\n//\n\n.nav-tabs {\n  border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;\n\n  .nav-link {\n    margin-bottom: -$nav-tabs-border-width;\n    background: none;\n    border: $nav-tabs-border-width solid transparent;\n    @include border-top-radius($nav-tabs-border-radius);\n\n    &:hover,\n    &:focus {\n      border-color: $nav-tabs-link-hover-border-color;\n      // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link\n      isolation: isolate;\n    }\n\n    &.disabled {\n      color: $nav-link-disabled-color;\n      background-color: transparent;\n      border-color: transparent;\n    }\n  }\n\n  .nav-link.active,\n  .nav-item.show .nav-link {\n    color: $nav-tabs-link-active-color;\n    background-color: $nav-tabs-link-active-bg;\n    border-color: $nav-tabs-link-active-border-color;\n  }\n\n  .dropdown-menu {\n    // Make dropdown border overlap tab border\n    margin-top: -$nav-tabs-border-width;\n    // Remove the top rounded corners here since there is a hard edge above the menu\n    @include border-top-radius(0);\n  }\n}\n\n\n//\n// Pills\n//\n\n.nav-pills {\n  .nav-link {\n    background: none;\n    border: 0;\n    @include border-radius($nav-pills-border-radius);\n  }\n\n  .nav-link.active,\n  .show > .nav-link {\n    color: $nav-pills-link-active-color;\n    @include gradient-bg($nav-pills-link-active-bg);\n  }\n}\n\n\n//\n// Justified variants\n//\n\n.nav-fill {\n  > .nav-link,\n  .nav-item {\n    flex: 1 1 auto;\n    text-align: center;\n  }\n}\n\n.nav-justified {\n  > .nav-link,\n  .nav-item {\n    flex-basis: 0;\n    flex-grow: 1;\n    text-align: center;\n  }\n}\n\n.nav-fill,\n.nav-justified {\n  .nav-item .nav-link {\n    width: 100%; // Make sure button will grow\n  }\n}\n\n\n// Tabbable tabs\n//\n// Hide tabbable panes to start, show them when `.active`\n\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n","// Contents\n//\n// Navbar\n// Navbar brand\n// Navbar nav\n// Navbar text\n// Responsive navbar\n// Navbar position\n// Navbar themes\n\n\n// Navbar\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap; // allow us to do the line break for collapsing content\n  align-items: center;\n  justify-content: space-between; // space out brand from logo\n  padding-top: $navbar-padding-y;\n  padding-right: $navbar-padding-x; // default: null\n  padding-bottom: $navbar-padding-y;\n  padding-left: $navbar-padding-x; // default: null\n  @include gradient-bg();\n\n  // Because flex properties aren't inherited, we need to redeclare these first\n  // few properties so that content nested within behave properly.\n  // The `flex-wrap` property is inherited to simplify the expanded navbars\n  %container-flex-properties {\n    display: flex;\n    flex-wrap: inherit;\n    align-items: center;\n    justify-content: space-between;\n  }\n\n  > .container,\n  > .container-fluid {\n    @extend %container-flex-properties;\n  }\n\n  @each $breakpoint, $container-max-width in $container-max-widths {\n    > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {\n      @extend %container-flex-properties;\n    }\n  }\n}\n\n\n// Navbar brand\n//\n// Used for brand, project, or site names.\n\n.navbar-brand {\n  padding-top: $navbar-brand-padding-y;\n  padding-bottom: $navbar-brand-padding-y;\n  margin-right: $navbar-brand-margin-end;\n  @include font-size($navbar-brand-font-size);\n  text-decoration: if($link-decoration == none, null, none);\n  white-space: nowrap;\n\n  &:hover,\n  &:focus {\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n}\n\n\n// Navbar nav\n//\n// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).\n\n.navbar-nav {\n  display: flex;\n  flex-direction: column; // cannot use `inherit` to get the `.navbar`s value\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n\n  .nav-link {\n    padding-right: 0;\n    padding-left: 0;\n  }\n\n  .dropdown-menu {\n    position: static;\n  }\n}\n\n\n// Navbar text\n//\n//\n\n.navbar-text {\n  padding-top: $nav-link-padding-y;\n  padding-bottom: $nav-link-padding-y;\n}\n\n\n// Responsive navbar\n//\n// Custom styles for responsive collapsing and toggling of navbar contents.\n// Powered by the collapse Bootstrap JavaScript plugin.\n\n// When collapsed, prevent the toggleable navbar contents from appearing in\n// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`\n// on the `.navbar` parent.\n.navbar-collapse {\n  flex-basis: 100%;\n  flex-grow: 1;\n  // For always expanded or extra full navbars, ensure content aligns itself\n  // properly vertically. Can be easily overridden with flex utilities.\n  align-items: center;\n}\n\n// Button for toggling the navbar when in its collapsed state\n.navbar-toggler {\n  padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;\n  @include font-size($navbar-toggler-font-size);\n  line-height: 1;\n  background-color: transparent; // remove default button style\n  border: $border-width solid transparent; // remove default button style\n  @include border-radius($navbar-toggler-border-radius);\n  @include transition($navbar-toggler-transition);\n\n  &:hover {\n    text-decoration: none;\n  }\n\n  &:focus {\n    text-decoration: none;\n    outline: 0;\n    box-shadow: 0 0 0 $navbar-toggler-focus-width;\n  }\n}\n\n// Keep as a separate element so folks can easily override it with another icon\n// or image file as needed.\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 100%;\n}\n\n.navbar-nav-scroll {\n  max-height: var(--#{$variable-prefix}scroll-height, 75vh);\n  overflow-y: auto;\n}\n\n// scss-docs-start navbar-expand-loop\n// Generate series of `.navbar-expand-*` responsive classes for configuring\n// where your navbar collapses.\n.navbar-expand {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $next: breakpoint-next($breakpoint, $grid-breakpoints);\n    $infix: breakpoint-infix($next, $grid-breakpoints);\n\n    // stylelint-disable-next-line scss/selector-no-union-class-name\n    &#{$infix} {\n      @include media-breakpoint-up($next) {\n        flex-wrap: nowrap;\n        justify-content: flex-start;\n\n        .navbar-nav {\n          flex-direction: row;\n\n          .dropdown-menu {\n            position: absolute;\n          }\n\n          .nav-link {\n            padding-right: $navbar-nav-link-padding-x;\n            padding-left: $navbar-nav-link-padding-x;\n          }\n        }\n\n        .navbar-nav-scroll {\n          overflow: visible;\n        }\n\n        .navbar-collapse {\n          display: flex !important; // stylelint-disable-line declaration-no-important\n          flex-basis: auto;\n        }\n\n        .navbar-toggler {\n          display: none;\n        }\n\n        .offcanvas-header {\n          display: none;\n        }\n\n        .offcanvas {\n          position: inherit;\n          bottom: 0;\n          z-index: 1000;\n          flex-grow: 1;\n          visibility: visible !important; // stylelint-disable-line declaration-no-important\n          background-color: transparent;\n          border-right: 0;\n          border-left: 0;\n          @include transition(none);\n          transform: none;\n        }\n        .offcanvas-top,\n        .offcanvas-bottom {\n          height: auto;\n          border-top: 0;\n          border-bottom: 0;\n        }\n\n        .offcanvas-body {\n          display: flex;\n          flex-grow: 0;\n          padding: 0;\n          overflow-y: visible;\n        }\n      }\n    }\n  }\n}\n// scss-docs-end navbar-expand-loop\n\n// Navbar themes\n//\n// Styles for switching between navbars with light or dark background.\n\n// Dark links against a light background\n.navbar-light {\n  .navbar-brand {\n    color: $navbar-light-brand-color;\n\n    &:hover,\n    &:focus {\n      color: $navbar-light-brand-hover-color;\n    }\n  }\n\n  .navbar-nav {\n    .nav-link {\n      color: $navbar-light-color;\n\n      &:hover,\n      &:focus {\n        color: $navbar-light-hover-color;\n      }\n\n      &.disabled {\n        color: $navbar-light-disabled-color;\n      }\n    }\n\n    .show > .nav-link,\n    .nav-link.active {\n      color: $navbar-light-active-color;\n    }\n  }\n\n  .navbar-toggler {\n    color: $navbar-light-color;\n    border-color: $navbar-light-toggler-border-color;\n  }\n\n  .navbar-toggler-icon {\n    background-image: escape-svg($navbar-light-toggler-icon-bg);\n  }\n\n  .navbar-text {\n    color: $navbar-light-color;\n\n    a,\n    a:hover,\n    a:focus  {\n      color: $navbar-light-active-color;\n    }\n  }\n}\n\n// White links against a dark background\n.navbar-dark {\n  .navbar-brand {\n    color: $navbar-dark-brand-color;\n\n    &:hover,\n    &:focus {\n      color: $navbar-dark-brand-hover-color;\n    }\n  }\n\n  .navbar-nav {\n    .nav-link {\n      color: $navbar-dark-color;\n\n      &:hover,\n      &:focus {\n        color: $navbar-dark-hover-color;\n      }\n\n      &.disabled {\n        color: $navbar-dark-disabled-color;\n      }\n    }\n\n    .show > .nav-link,\n    .nav-link.active {\n      color: $navbar-dark-active-color;\n    }\n  }\n\n  .navbar-toggler {\n    color: $navbar-dark-color;\n    border-color: $navbar-dark-toggler-border-color;\n  }\n\n  .navbar-toggler-icon {\n    background-image: escape-svg($navbar-dark-toggler-icon-bg);\n  }\n\n  .navbar-text {\n    color: $navbar-dark-color;\n    a,\n    a:hover,\n    a:focus {\n      color: $navbar-dark-active-color;\n    }\n  }\n}\n","//\n// Base styles\n//\n\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\n  height: $card-height;\n  word-wrap: break-word;\n  background-color: $card-bg;\n  background-clip: border-box;\n  border: $card-border-width solid $card-border-color;\n  @include border-radius($card-border-radius);\n  @include box-shadow($card-box-shadow);\n\n  > hr {\n    margin-right: 0;\n    margin-left: 0;\n  }\n\n  > .list-group {\n    border-top: inherit;\n    border-bottom: inherit;\n\n    &:first-child {\n      border-top-width: 0;\n      @include border-top-radius($card-inner-border-radius);\n    }\n\n    &:last-child  {\n      border-bottom-width: 0;\n      @include border-bottom-radius($card-inner-border-radius);\n    }\n  }\n\n  // Due to specificity of the above selector (`.card > .list-group`), we must\n  // use a child selector here to prevent double borders.\n  > .card-header + .list-group,\n  > .list-group + .card-footer {\n    border-top: 0;\n  }\n}\n\n.card-body {\n  // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n  // as much space as possible, ensuring footers are aligned to the bottom.\n  flex: 1 1 auto;\n  padding: $card-spacer-y $card-spacer-x;\n  color: $card-color;\n}\n\n.card-title {\n  margin-bottom: $card-title-spacer-y;\n}\n\n.card-subtitle {\n  margin-top: -$card-title-spacer-y * .5;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link {\n  &:hover {\n    text-decoration: if($link-hover-decoration == underline, none, null);\n  }\n\n  + .card-link {\n    margin-left: $card-spacer-x;\n  }\n}\n\n//\n// Optional textual caps\n//\n\n.card-header {\n  padding: $card-cap-padding-y $card-cap-padding-x;\n  margin-bottom: 0; // Removes the default margin-bottom of <hN>\n  color: $card-cap-color;\n  background-color: $card-cap-bg;\n  border-bottom: $card-border-width solid $card-border-color;\n\n  &:first-child {\n    @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);\n  }\n}\n\n.card-footer {\n  padding: $card-cap-padding-y $card-cap-padding-x;\n  color: $card-cap-color;\n  background-color: $card-cap-bg;\n  border-top: $card-border-width solid $card-border-color;\n\n  &:last-child {\n    @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);\n  }\n}\n\n\n//\n// Header navs\n//\n\n.card-header-tabs {\n  margin-right: -$card-cap-padding-x * .5;\n  margin-bottom: -$card-cap-padding-y;\n  margin-left: -$card-cap-padding-x * .5;\n  border-bottom: 0;\n\n  @if $nav-tabs-link-active-bg != $card-bg {\n    .nav-link.active {\n      background-color: $card-bg;\n      border-bottom-color: $card-bg;\n    }\n  }\n}\n\n.card-header-pills {\n  margin-right: -$card-cap-padding-x * .5;\n  margin-left: -$card-cap-padding-x * .5;\n}\n\n// Card image\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: $card-img-overlay-padding;\n  @include border-radius($card-inner-border-radius);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n}\n\n.card-img,\n.card-img-top {\n  @include border-top-radius($card-inner-border-radius);\n}\n\n.card-img,\n.card-img-bottom {\n  @include border-bottom-radius($card-inner-border-radius);\n}\n\n\n//\n// Card groups\n//\n\n.card-group {\n  // The child selector allows nested `.card` within `.card-group`\n  // to display properly.\n  > .card {\n    margin-bottom: $card-group-margin;\n  }\n\n  @include media-breakpoint-up(sm) {\n    display: flex;\n    flex-flow: row wrap;\n    // The child selector allows nested `.card` within `.card-group`\n    // to display properly.\n    > .card {\n      // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n      flex: 1 0 0%;\n      margin-bottom: 0;\n\n      + .card {\n        margin-left: 0;\n        border-left: 0;\n      }\n\n      // Handle rounded corners\n      @if $enable-rounded {\n        &:not(:last-child) {\n          @include border-end-radius(0);\n\n          .card-img-top,\n          .card-header {\n            // stylelint-disable-next-line property-disallowed-list\n            border-top-right-radius: 0;\n          }\n          .card-img-bottom,\n          .card-footer {\n            // stylelint-disable-next-line property-disallowed-list\n            border-bottom-right-radius: 0;\n          }\n        }\n\n        &:not(:first-child) {\n          @include border-start-radius(0);\n\n          .card-img-top,\n          .card-header {\n            // stylelint-disable-next-line property-disallowed-list\n            border-top-left-radius: 0;\n          }\n          .card-img-bottom,\n          .card-footer {\n            // stylelint-disable-next-line property-disallowed-list\n            border-bottom-left-radius: 0;\n          }\n        }\n      }\n    }\n  }\n}\n","//\n// Base styles\n//\n\n.accordion-button {\n  position: relative;\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: $accordion-button-padding-y $accordion-button-padding-x;\n  @include font-size($font-size-base);\n  color: $accordion-button-color;\n  text-align: left; // Reset button style\n  background-color: $accordion-button-bg;\n  border: 0;\n  @include border-radius(0);\n  overflow-anchor: none;\n  @include transition($accordion-transition);\n\n  &:not(.collapsed) {\n    color: $accordion-button-active-color;\n    background-color: $accordion-button-active-bg;\n    box-shadow: inset 0 ($accordion-border-width * -1) 0 $accordion-border-color;\n\n    &::after {\n      background-image: escape-svg($accordion-button-active-icon);\n      transform: $accordion-icon-transform;\n    }\n  }\n\n  // Accordion icon\n  &::after {\n    flex-shrink: 0;\n    width: $accordion-icon-width;\n    height: $accordion-icon-width;\n    margin-left: auto;\n    content: \"\";\n    background-image: escape-svg($accordion-button-icon);\n    background-repeat: no-repeat;\n    background-size: $accordion-icon-width;\n    @include transition($accordion-icon-transition);\n  }\n\n  &:hover {\n    z-index: 2;\n  }\n\n  &:focus {\n    z-index: 3;\n    border-color: $accordion-button-focus-border-color;\n    outline: 0;\n    box-shadow: $accordion-button-focus-box-shadow;\n  }\n}\n\n.accordion-header {\n  margin-bottom: 0;\n}\n\n.accordion-item {\n  background-color: $accordion-bg;\n  border: $accordion-border-width solid $accordion-border-color;\n\n  &:first-of-type {\n    @include border-top-radius($accordion-border-radius);\n\n    .accordion-button {\n      @include border-top-radius($accordion-inner-border-radius);\n    }\n  }\n\n  &:not(:first-of-type) {\n    border-top: 0;\n  }\n\n  // Only set a border-radius on the last item if the accordion is collapsed\n  &:last-of-type {\n    @include border-bottom-radius($accordion-border-radius);\n\n    .accordion-button {\n      &.collapsed {\n        @include border-bottom-radius($accordion-inner-border-radius);\n      }\n    }\n\n    .accordion-collapse {\n      @include border-bottom-radius($accordion-border-radius);\n    }\n  }\n}\n\n.accordion-body {\n  padding: $accordion-body-padding-y $accordion-body-padding-x;\n}\n\n\n// Flush accordion items\n//\n// Remove borders and border-radius to keep accordion items edge-to-edge.\n\n.accordion-flush {\n  .accordion-collapse {\n    border-width: 0;\n  }\n\n  .accordion-item {\n    border-right: 0;\n    border-left: 0;\n    @include border-radius(0);\n\n    &:first-child { border-top: 0; }\n    &:last-child { border-bottom: 0; }\n\n    .accordion-button {\n      @include border-radius(0);\n    }\n  }\n}\n",".breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  padding: $breadcrumb-padding-y $breadcrumb-padding-x;\n  margin-bottom: $breadcrumb-margin-bottom;\n  @include font-size($breadcrumb-font-size);\n  list-style: none;\n  background-color: $breadcrumb-bg;\n  @include border-radius($breadcrumb-border-radius);\n}\n\n.breadcrumb-item {\n  // The separator between breadcrumbs (by default, a forward-slash: \"/\")\n  + .breadcrumb-item {\n    padding-left: $breadcrumb-item-padding-x;\n\n    &::before {\n      float: left; // Suppress inline spacings and underlining of the separator\n      padding-right: $breadcrumb-item-padding-x;\n      color: $breadcrumb-divider-color;\n      content: var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{\"/* rtl:\"} var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{\"*/\"};\n    }\n  }\n\n  &.active {\n    color: $breadcrumb-active-color;\n  }\n}\n",".pagination {\n  display: flex;\n  @include list-unstyled();\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  color: $pagination-color;\n  text-decoration: if($link-decoration == none, null, none);\n  background-color: $pagination-bg;\n  border: $pagination-border-width solid $pagination-border-color;\n  @include transition($pagination-transition);\n\n  &:hover {\n    z-index: 2;\n    color: $pagination-hover-color;\n    text-decoration: if($link-hover-decoration == underline, none, null);\n    background-color: $pagination-hover-bg;\n    border-color: $pagination-hover-border-color;\n  }\n\n  &:focus {\n    z-index: 3;\n    color: $pagination-focus-color;\n    background-color: $pagination-focus-bg;\n    outline: $pagination-focus-outline;\n    box-shadow: $pagination-focus-box-shadow;\n  }\n}\n\n.page-item {\n  &:not(:first-child) .page-link {\n    margin-left: $pagination-margin-start;\n  }\n\n  &.active .page-link {\n    z-index: 3;\n    color: $pagination-active-color;\n    @include gradient-bg($pagination-active-bg);\n    border-color: $pagination-active-border-color;\n  }\n\n  &.disabled .page-link {\n    color: $pagination-disabled-color;\n    pointer-events: none;\n    background-color: $pagination-disabled-bg;\n    border-color: $pagination-disabled-border-color;\n  }\n}\n\n\n//\n// Sizing\n//\n@include pagination-size($pagination-padding-y, $pagination-padding-x, null, $pagination-border-radius);\n\n.pagination-lg {\n  @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $pagination-border-radius-lg);\n}\n\n.pagination-sm {\n  @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $pagination-border-radius-sm);\n}\n","// Pagination\n\n// scss-docs-start pagination-mixin\n@mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) {\n  .page-link {\n    padding: $padding-y $padding-x;\n    @include font-size($font-size);\n  }\n\n  .page-item {\n    @if $pagination-margin-start == (-$pagination-border-width) {\n      &:first-child {\n        .page-link {\n          @include border-start-radius($border-radius);\n        }\n      }\n\n      &:last-child {\n        .page-link {\n          @include border-end-radius($border-radius);\n        }\n      }\n    } @else {\n      //Add border-radius to all pageLinks in case they have left margin\n      .page-link {\n        @include border-radius($border-radius);\n      }\n    }\n  }\n}\n// scss-docs-end pagination-mixin\n","// Base class\n//\n// Requires one of the contextual, color modifier classes for `color` and\n// `background-color`.\n\n.badge {\n  display: inline-block;\n  padding: $badge-padding-y $badge-padding-x;\n  @include font-size($badge-font-size);\n  font-weight: $badge-font-weight;\n  line-height: 1;\n  color: $badge-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  @include border-radius($badge-border-radius);\n  @include gradient-bg();\n\n  // Empty badges collapse automatically\n  &:empty {\n    display: none;\n  }\n}\n\n// Quick fix for badges in buttons\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n","//\n// Base styles\n//\n\n.alert {\n  position: relative;\n  padding: $alert-padding-y $alert-padding-x;\n  margin-bottom: $alert-margin-bottom;\n  border: $alert-border-width solid transparent;\n  @include border-radius($alert-border-radius);\n}\n\n// Headings for larger alerts\n.alert-heading {\n  // Specified to prevent conflicts of changing $headings-color\n  color: inherit;\n}\n\n// Provide class for links that match alerts\n.alert-link {\n  font-weight: $alert-link-font-weight;\n}\n\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissible {\n  padding-right: $alert-dismissible-padding-r;\n\n  // Adjust close link position\n  .btn-close {\n    position: absolute;\n    top: 0;\n    right: 0;\n    z-index: $stretched-link-z-index + 1;\n    padding: $alert-padding-y * 1.25 $alert-padding-x;\n  }\n}\n\n\n// scss-docs-start alert-modifiers\n// Generate contextual modifier classes for colorizing the alert.\n\n@each $state, $value in $theme-colors {\n  $alert-background: shift-color($value, $alert-bg-scale);\n  $alert-border: shift-color($value, $alert-border-scale);\n  $alert-color: shift-color($value, $alert-color-scale);\n  @if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) {\n    $alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale));\n  }\n  .alert-#{$state} {\n    @include alert-variant($alert-background, $alert-border, $alert-color);\n  }\n}\n// scss-docs-end alert-modifiers\n","// scss-docs-start alert-variant-mixin\n@mixin alert-variant($background, $border, $color) {\n  color: $color;\n  @include gradient-bg($background);\n  border-color: $border;\n\n  .alert-link {\n    color: shade-color($color, 20%);\n  }\n}\n// scss-docs-end alert-variant-mixin\n","// Disable animation if transitions are disabled\n\n// scss-docs-start progress-keyframes\n@if $enable-transitions {\n  @keyframes progress-bar-stripes {\n    0% { background-position-x: $progress-height; }\n  }\n}\n// scss-docs-end progress-keyframes\n\n.progress {\n  display: flex;\n  height: $progress-height;\n  overflow: hidden; // force rounded corners by cropping it\n  @include font-size($progress-font-size);\n  background-color: $progress-bg;\n  @include border-radius($progress-border-radius);\n  @include box-shadow($progress-box-shadow);\n}\n\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  color: $progress-bar-color;\n  text-align: center;\n  white-space: nowrap;\n  background-color: $progress-bar-bg;\n  @include transition($progress-bar-transition);\n}\n\n.progress-bar-striped {\n  @include gradient-striped();\n  background-size: $progress-height $progress-height;\n}\n\n@if $enable-transitions {\n  .progress-bar-animated {\n    animation: $progress-bar-animation-timing progress-bar-stripes;\n\n    @if $enable-reduced-motion {\n      @media (prefers-reduced-motion: reduce) {\n        animation: none;\n      }\n    }\n  }\n}\n","// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n  display: flex;\n  flex-direction: column;\n\n  // No need to set list-style: none; since .list-group-item is block level\n  padding-left: 0; // reset padding because ul and ol\n  margin-bottom: 0;\n  @include border-radius($list-group-border-radius);\n}\n\n.list-group-numbered {\n  list-style-type: none;\n  counter-reset: section;\n\n  > li::before {\n    // Increments only this instance of the section counter\n    content: counters(section, \".\") \". \";\n    counter-increment: section;\n  }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive\n// list items. Includes an extra `.active` modifier class for selected items.\n\n.list-group-item-action {\n  width: 100%; // For `<button>`s (anchors become 100% by default though)\n  color: $list-group-action-color;\n  text-align: inherit; // For `<button>`s (anchors inherit)\n\n  // Hover state\n  &:hover,\n  &:focus {\n    z-index: 1; // Place hover/focus items above their siblings for proper border styling\n    color: $list-group-action-hover-color;\n    text-decoration: none;\n    background-color: $list-group-hover-bg;\n  }\n\n  &:active {\n    color: $list-group-action-active-color;\n    background-color: $list-group-action-active-bg;\n  }\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: $list-group-item-padding-y $list-group-item-padding-x;\n  color: $list-group-color;\n  text-decoration: if($link-decoration == none, null, none);\n  background-color: $list-group-bg;\n  border: $list-group-border-width solid $list-group-border-color;\n\n  &:first-child {\n    @include border-top-radius(inherit);\n  }\n\n  &:last-child {\n    @include border-bottom-radius(inherit);\n  }\n\n  &.disabled,\n  &:disabled {\n    color: $list-group-disabled-color;\n    pointer-events: none;\n    background-color: $list-group-disabled-bg;\n  }\n\n  // Include both here for `<a>`s and `<button>`s\n  &.active {\n    z-index: 2; // Place active items above their siblings for proper border styling\n    color: $list-group-active-color;\n    background-color: $list-group-active-bg;\n    border-color: $list-group-active-border-color;\n  }\n\n  & + & {\n    border-top-width: 0;\n\n    &.active {\n      margin-top: -$list-group-border-width;\n      border-top-width: $list-group-border-width;\n    }\n  }\n}\n\n\n// Horizontal\n//\n// Change the layout of list group items from vertical (default) to horizontal.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .list-group-horizontal#{$infix} {\n      flex-direction: row;\n\n      > .list-group-item {\n        &:first-child {\n          @include border-bottom-start-radius($list-group-border-radius);\n          @include border-top-end-radius(0);\n        }\n\n        &:last-child {\n          @include border-top-end-radius($list-group-border-radius);\n          @include border-bottom-start-radius(0);\n        }\n\n        &.active {\n          margin-top: 0;\n        }\n\n        + .list-group-item {\n          border-top-width: $list-group-border-width;\n          border-left-width: 0;\n\n          &.active {\n            margin-left: -$list-group-border-width;\n            border-left-width: $list-group-border-width;\n          }\n        }\n      }\n    }\n  }\n}\n\n\n// Flush list items\n//\n// Remove borders and border-radius to keep list group items edge-to-edge. Most\n// useful within other components (e.g., cards).\n\n.list-group-flush {\n  @include border-radius(0);\n\n  > .list-group-item {\n    border-width: 0 0 $list-group-border-width;\n\n    &:last-child {\n      border-bottom-width: 0;\n    }\n  }\n}\n\n\n// scss-docs-start list-group-modifiers\n// List group contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n@each $state, $value in $theme-colors {\n  $list-group-variant-bg: shift-color($value, $list-group-item-bg-scale);\n  $list-group-variant-color: shift-color($value, $list-group-item-color-scale);\n  @if (contrast-ratio($list-group-variant-bg, $list-group-variant-color) < $min-contrast-ratio) {\n    $list-group-variant-color: mix($value, color-contrast($list-group-variant-bg), abs($list-group-item-color-scale));\n  }\n\n  @include list-group-item-variant($state, $list-group-variant-bg, $list-group-variant-color);\n}\n// scss-docs-end list-group-modifiers\n","// List Groups\n\n// scss-docs-start list-group-mixin\n@mixin list-group-item-variant($state, $background, $color) {\n  .list-group-item-#{$state} {\n    color: $color;\n    background-color: $background;\n\n    &.list-group-item-action {\n      &:hover,\n      &:focus {\n        color: $color;\n        background-color: shade-color($background, 10%);\n      }\n\n      &.active {\n        color: $white;\n        background-color: $color;\n        border-color: $color;\n      }\n    }\n  }\n}\n// scss-docs-end list-group-mixin\n","// transparent background and border properties included for button version.\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n.btn-close {\n  box-sizing: content-box;\n  width: $btn-close-width;\n  height: $btn-close-height;\n  padding: $btn-close-padding-y $btn-close-padding-x;\n  color: $btn-close-color;\n  background: transparent escape-svg($btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements\n  border: 0; // for button elements\n  @include border-radius();\n  opacity: $btn-close-opacity;\n\n  // Override <a>'s hover style\n  &:hover {\n    color: $btn-close-color;\n    text-decoration: none;\n    opacity: $btn-close-hover-opacity;\n  }\n\n  &:focus {\n    outline: 0;\n    box-shadow: $btn-close-focus-shadow;\n    opacity: $btn-close-focus-opacity;\n  }\n\n  &:disabled,\n  &.disabled {\n    pointer-events: none;\n    user-select: none;\n    opacity: $btn-close-disabled-opacity;\n  }\n}\n\n.btn-close-white {\n  filter: $btn-close-white-filter;\n}\n",".toast {\n  width: $toast-max-width;\n  max-width: 100%;\n  @include font-size($toast-font-size);\n  color: $toast-color;\n  pointer-events: auto;\n  background-color: $toast-background-color;\n  background-clip: padding-box;\n  border: $toast-border-width solid $toast-border-color;\n  box-shadow: $toast-box-shadow;\n  @include border-radius($toast-border-radius);\n\n  &.showing {\n    opacity: 0;\n  }\n\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.toast-container {\n  width: max-content;\n  max-width: 100%;\n  pointer-events: none;\n\n  > :not(:last-child) {\n    margin-bottom: $toast-spacing;\n  }\n}\n\n.toast-header {\n  display: flex;\n  align-items: center;\n  padding: $toast-padding-y $toast-padding-x;\n  color: $toast-header-color;\n  background-color: $toast-header-background-color;\n  background-clip: padding-box;\n  border-bottom: $toast-border-width solid $toast-header-border-color;\n  @include border-top-radius(subtract($toast-border-radius, $toast-border-width));\n\n  .btn-close {\n    margin-right: $toast-padding-x * -.5;\n    margin-left: $toast-padding-x;\n  }\n}\n\n.toast-body {\n  padding: $toast-padding-x; // apply to both vertical and horizontal\n  word-wrap: break-word;\n}\n","// .modal-open      - body class for killing the scroll\n// .modal           - container to scroll within\n// .modal-dialog    - positioning shell for the actual modal\n// .modal-content   - actual modal w/ bg and corners and stuff\n\n\n// Container that the modal scrolls within\n.modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: $zindex-modal;\n  display: none;\n  width: 100%;\n  height: 100%;\n  overflow-x: hidden;\n  overflow-y: auto;\n  // Prevent Chrome on Windows from adding a focus outline. For details, see\n  // https://github.com/twbs/bootstrap/pull/10951.\n  outline: 0;\n  // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a\n  // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342\n  // See also https://github.com/twbs/bootstrap/issues/17695\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: $modal-dialog-margin;\n  // allow clicks to pass through for custom click handling to close modal\n  pointer-events: none;\n\n  // When fading in the modal, animate it to slide down\n  .modal.fade & {\n    @include transition($modal-transition);\n    transform: $modal-fade-transform;\n  }\n  .modal.show & {\n    transform: $modal-show-transform;\n  }\n\n  // When trying to close, animate focus to scale\n  .modal.modal-static & {\n    transform: $modal-scale-transform;\n  }\n}\n\n.modal-dialog-scrollable {\n  height: subtract(100%, $modal-dialog-margin * 2);\n\n  .modal-content {\n    max-height: 100%;\n    overflow: hidden;\n  }\n\n  .modal-body {\n    overflow-y: auto;\n  }\n}\n\n.modal-dialog-centered {\n  display: flex;\n  align-items: center;\n  min-height: subtract(100%, $modal-dialog-margin * 2);\n}\n\n// Actual modal\n.modal-content {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`\n  // counteract the pointer-events: none; in the .modal-dialog\n  color: $modal-content-color;\n  pointer-events: auto;\n  background-color: $modal-content-bg;\n  background-clip: padding-box;\n  border: $modal-content-border-width solid $modal-content-border-color;\n  @include border-radius($modal-content-border-radius);\n  @include box-shadow($modal-content-box-shadow-xs);\n  // Remove focus outline from opened modal\n  outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n  @include overlay-backdrop($zindex-modal-backdrop, $modal-backdrop-bg, $modal-backdrop-opacity);\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends\n  padding: $modal-header-padding;\n  border-bottom: $modal-header-border-width solid $modal-header-border-color;\n  @include border-top-radius($modal-content-inner-border-radius);\n\n  .btn-close {\n    padding: ($modal-header-padding-y * .5) ($modal-header-padding-x * .5);\n    margin: ($modal-header-padding-y * -.5) ($modal-header-padding-x * -.5) ($modal-header-padding-y * -.5) auto;\n  }\n}\n\n// Title text within header\n.modal-title {\n  margin-bottom: 0;\n  line-height: $modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n  position: relative;\n  // Enable `flex-grow: 1` so that the body take up as much space as possible\n  // when there should be a fixed height on `.modal-dialog`.\n  flex: 1 1 auto;\n  padding: $modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n  display: flex;\n  flex-wrap: wrap;\n  flex-shrink: 0;\n  align-items: center; // vertically center\n  justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items\n  padding: $modal-inner-padding - $modal-footer-margin-between * .5;\n  border-top: $modal-footer-border-width solid $modal-footer-border-color;\n  @include border-bottom-radius($modal-content-inner-border-radius);\n\n  // Place margin between footer elements\n  // This solution is far from ideal because of the universal selector usage,\n  // but is needed to fix https://github.com/twbs/bootstrap/issues/24800\n  > * {\n    margin: $modal-footer-margin-between * .5;\n  }\n}\n\n// Scale up the modal\n@include media-breakpoint-up(sm) {\n  // Automatically set modal's width for larger viewports\n  .modal-dialog {\n    max-width: $modal-md;\n    margin: $modal-dialog-margin-y-sm-up auto;\n  }\n\n  .modal-dialog-scrollable {\n    height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);\n  }\n\n  .modal-dialog-centered {\n    min-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);\n  }\n\n  .modal-content {\n    @include box-shadow($modal-content-box-shadow-sm-up);\n  }\n\n  .modal-sm { max-width: $modal-sm; }\n}\n\n@include media-breakpoint-up(lg) {\n  .modal-lg,\n  .modal-xl {\n    max-width: $modal-lg;\n  }\n}\n\n@include media-breakpoint-up(xl) {\n  .modal-xl { max-width: $modal-xl; }\n}\n\n// scss-docs-start modal-fullscreen-loop\n@each $breakpoint in map-keys($grid-breakpoints) {\n  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n  $postfix: if($infix != \"\", $infix + \"-down\", \"\");\n\n  @include media-breakpoint-down($breakpoint) {\n    .modal-fullscreen#{$postfix} {\n      width: 100vw;\n      max-width: none;\n      height: 100%;\n      margin: 0;\n\n      .modal-content {\n        height: 100%;\n        border: 0;\n        @include border-radius(0);\n      }\n\n      .modal-header {\n        @include border-radius(0);\n      }\n\n      .modal-body {\n        overflow-y: auto;\n      }\n\n      .modal-footer {\n        @include border-radius(0);\n      }\n    }\n  }\n}\n// scss-docs-end modal-fullscreen-loop\n","// Shared between modals and offcanvases\n@mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity) {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: $zindex;\n  width: 100vw;\n  height: 100vh;\n  background-color: $backdrop-bg;\n\n  // Fade for backdrop\n  &.fade { opacity: 0; }\n  &.show { opacity: $backdrop-opacity; }\n}\n","// Base class\n.tooltip {\n  position: absolute;\n  z-index: $zindex-tooltip;\n  display: block;\n  margin: $tooltip-margin;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  @include reset-text();\n  @include font-size($tooltip-font-size);\n  // Allow breaking very long words so they don't overflow the tooltip's bounds\n  word-wrap: break-word;\n  opacity: 0;\n\n  &.show { opacity: $tooltip-opacity; }\n\n  .tooltip-arrow {\n    position: absolute;\n    display: block;\n    width: $tooltip-arrow-width;\n    height: $tooltip-arrow-height;\n\n    &::before {\n      position: absolute;\n      content: \"\";\n      border-color: transparent;\n      border-style: solid;\n    }\n  }\n}\n\n.bs-tooltip-top {\n  padding: $tooltip-arrow-height 0;\n\n  .tooltip-arrow {\n    bottom: 0;\n\n    &::before {\n      top: -1px;\n      border-width: $tooltip-arrow-height ($tooltip-arrow-width * .5) 0;\n      border-top-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-end {\n  padding: 0 $tooltip-arrow-height;\n\n  .tooltip-arrow {\n    left: 0;\n    width: $tooltip-arrow-height;\n    height: $tooltip-arrow-width;\n\n    &::before {\n      right: -1px;\n      border-width: ($tooltip-arrow-width * .5) $tooltip-arrow-height ($tooltip-arrow-width * .5) 0;\n      border-right-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-bottom {\n  padding: $tooltip-arrow-height 0;\n\n  .tooltip-arrow {\n    top: 0;\n\n    &::before {\n      bottom: -1px;\n      border-width: 0 ($tooltip-arrow-width * .5) $tooltip-arrow-height;\n      border-bottom-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-start {\n  padding: 0 $tooltip-arrow-height;\n\n  .tooltip-arrow {\n    right: 0;\n    width: $tooltip-arrow-height;\n    height: $tooltip-arrow-width;\n\n    &::before {\n      left: -1px;\n      border-width: ($tooltip-arrow-width * .5) 0 ($tooltip-arrow-width * .5) $tooltip-arrow-height;\n      border-left-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-auto {\n  &[data-popper-placement^=\"top\"] {\n    @extend .bs-tooltip-top;\n  }\n  &[data-popper-placement^=\"right\"] {\n    @extend .bs-tooltip-end;\n  }\n  &[data-popper-placement^=\"bottom\"] {\n    @extend .bs-tooltip-bottom;\n  }\n  &[data-popper-placement^=\"left\"] {\n    @extend .bs-tooltip-start;\n  }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n  max-width: $tooltip-max-width;\n  padding: $tooltip-padding-y $tooltip-padding-x;\n  color: $tooltip-color;\n  text-align: center;\n  background-color: $tooltip-bg;\n  @include border-radius($tooltip-border-radius);\n}\n","@mixin reset-text {\n  font-family: $font-family-base;\n  // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.\n  font-style: normal;\n  font-weight: $font-weight-normal;\n  line-height: $line-height-base;\n  text-align: left; // Fallback for where `start` is not supported\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n}\n",".popover {\n  position: absolute;\n  top: 0;\n  left: 0 #{\"/* rtl:ignore */\"};\n  z-index: $zindex-popover;\n  display: block;\n  max-width: $popover-max-width;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  @include reset-text();\n  @include font-size($popover-font-size);\n  // Allow breaking very long words so they don't overflow the popover's bounds\n  word-wrap: break-word;\n  background-color: $popover-bg;\n  background-clip: padding-box;\n  border: $popover-border-width solid $popover-border-color;\n  @include border-radius($popover-border-radius);\n  @include box-shadow($popover-box-shadow);\n\n  .popover-arrow {\n    position: absolute;\n    display: block;\n    width: $popover-arrow-width;\n    height: $popover-arrow-height;\n\n    &::before,\n    &::after {\n      position: absolute;\n      display: block;\n      content: \"\";\n      border-color: transparent;\n      border-style: solid;\n    }\n  }\n}\n\n.bs-popover-top {\n  > .popover-arrow {\n    bottom: subtract(-$popover-arrow-height, $popover-border-width);\n\n    &::before {\n      bottom: 0;\n      border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-top-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      bottom: $popover-border-width;\n      border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-top-color: $popover-arrow-color;\n    }\n  }\n}\n\n.bs-popover-end {\n  > .popover-arrow {\n    left: subtract(-$popover-arrow-height, $popover-border-width);\n    width: $popover-arrow-height;\n    height: $popover-arrow-width;\n\n    &::before {\n      left: 0;\n      border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-right-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      left: $popover-border-width;\n      border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;\n      border-right-color: $popover-arrow-color;\n    }\n  }\n}\n\n.bs-popover-bottom {\n  > .popover-arrow {\n    top: subtract(-$popover-arrow-height, $popover-border-width);\n\n    &::before {\n      top: 0;\n      border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);\n      border-bottom-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      top: $popover-border-width;\n      border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);\n      border-bottom-color: $popover-arrow-color;\n    }\n  }\n\n  // This will remove the popover-header's border just below the arrow\n  .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: $popover-arrow-width;\n    margin-left: -$popover-arrow-width * .5;\n    content: \"\";\n    border-bottom: $popover-border-width solid $popover-header-bg;\n  }\n}\n\n.bs-popover-start {\n  > .popover-arrow {\n    right: subtract(-$popover-arrow-height, $popover-border-width);\n    width: $popover-arrow-height;\n    height: $popover-arrow-width;\n\n    &::before {\n      right: 0;\n      border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;\n      border-left-color: $popover-arrow-outer-color;\n    }\n\n    &::after {\n      right: $popover-border-width;\n      border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;\n      border-left-color: $popover-arrow-color;\n    }\n  }\n}\n\n.bs-popover-auto {\n  &[data-popper-placement^=\"top\"] {\n    @extend .bs-popover-top;\n  }\n  &[data-popper-placement^=\"right\"] {\n    @extend .bs-popover-end;\n  }\n  &[data-popper-placement^=\"bottom\"] {\n    @extend .bs-popover-bottom;\n  }\n  &[data-popper-placement^=\"left\"] {\n    @extend .bs-popover-start;\n  }\n}\n\n// Offset the popover to account for the popover arrow\n.popover-header {\n  padding: $popover-header-padding-y $popover-header-padding-x;\n  margin-bottom: 0; // Reset the default from Reboot\n  @include font-size($font-size-base);\n  color: $popover-header-color;\n  background-color: $popover-header-bg;\n  border-bottom: $popover-border-width solid $popover-border-color;\n  @include border-top-radius($popover-inner-border-radius);\n\n  &:empty {\n    display: none;\n  }\n}\n\n.popover-body {\n  padding: $popover-body-padding-y $popover-body-padding-x;\n  color: $popover-body-color;\n}\n","// Notes on the classes:\n//\n// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)\n//    even when their scroll action started on a carousel, but for compatibility (with Firefox)\n//    we're preventing all actions instead\n// 2. The .carousel-item-start and .carousel-item-end is used to indicate where\n//    the active slide is heading.\n// 3. .active.carousel-item is the current slide.\n// 4. .active.carousel-item-start and .active.carousel-item-end is the current\n//    slide in its in-transition state. Only one of these occurs at a time.\n// 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end\n//    is the upcoming slide in transition.\n\n.carousel {\n  position: relative;\n}\n\n.carousel.pointer-event {\n  touch-action: pan-y;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n  @include clearfix();\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  float: left;\n  width: 100%;\n  margin-right: -100%;\n  backface-visibility: hidden;\n  @include transition($carousel-transition);\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n/* rtl:begin:ignore */\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n  transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n  transform: translateX(-100%);\n}\n\n/* rtl:end:ignore */\n\n\n//\n// Alternate transitions\n//\n\n.carousel-fade {\n  .carousel-item {\n    opacity: 0;\n    transition-property: opacity;\n    transform: none;\n  }\n\n  .carousel-item.active,\n  .carousel-item-next.carousel-item-start,\n  .carousel-item-prev.carousel-item-end {\n    z-index: 1;\n    opacity: 1;\n  }\n\n  .active.carousel-item-start,\n  .active.carousel-item-end {\n    z-index: 0;\n    opacity: 0;\n    @include transition(opacity 0s $carousel-transition-duration);\n  }\n}\n\n\n//\n// Left/right controls for nav\n//\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n  // Use flex for alignment (1-3)\n  display: flex; // 1. allow flex styles\n  align-items: center; // 2. vertically center contents\n  justify-content: center; // 3. horizontally center contents\n  width: $carousel-control-width;\n  padding: 0;\n  color: $carousel-control-color;\n  text-align: center;\n  background: none;\n  border: 0;\n  opacity: $carousel-control-opacity;\n  @include transition($carousel-control-transition);\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    color: $carousel-control-color;\n    text-decoration: none;\n    outline: 0;\n    opacity: $carousel-control-hover-opacity;\n  }\n}\n.carousel-control-prev {\n  left: 0;\n  background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null);\n}\n.carousel-control-next {\n  right: 0;\n  background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null);\n}\n\n// Icons for within\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: $carousel-control-icon-width;\n  height: $carousel-control-icon-width;\n  background-repeat: no-repeat;\n  background-position: 50%;\n  background-size: 100% 100%;\n}\n\n/* rtl:options: {\n  \"autoRename\": true,\n  \"stringMap\":[ {\n    \"name\"    : \"prev-next\",\n    \"search\"  : \"prev\",\n    \"replace\" : \"next\"\n  } ]\n} */\n.carousel-control-prev-icon {\n  background-image: escape-svg($carousel-control-prev-icon-bg);\n}\n.carousel-control-next-icon {\n  background-image: escape-svg($carousel-control-next-icon-bg);\n}\n\n// Optional indicator pips/controls\n//\n// Add a container (such as a list) with the following class and add an item (ideally a focusable control,\n// like a button) with data-bs-target for each slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 2;\n  display: flex;\n  justify-content: center;\n  padding: 0;\n  // Use the .carousel-control's width as margin so we don't overlay those\n  margin-right: $carousel-control-width;\n  margin-bottom: 1rem;\n  margin-left: $carousel-control-width;\n  list-style: none;\n\n  [data-bs-target] {\n    box-sizing: content-box;\n    flex: 0 1 auto;\n    width: $carousel-indicator-width;\n    height: $carousel-indicator-height;\n    padding: 0;\n    margin-right: $carousel-indicator-spacer;\n    margin-left: $carousel-indicator-spacer;\n    text-indent: -999px;\n    cursor: pointer;\n    background-color: $carousel-indicator-active-bg;\n    background-clip: padding-box;\n    border: 0;\n    // Use transparent borders to increase the hit area by 10px on top and bottom.\n    border-top: $carousel-indicator-hit-area-height solid transparent;\n    border-bottom: $carousel-indicator-hit-area-height solid transparent;\n    opacity: $carousel-indicator-opacity;\n    @include transition($carousel-indicator-transition);\n  }\n\n  .active {\n    opacity: $carousel-indicator-active-opacity;\n  }\n}\n\n\n// Optional captions\n//\n//\n\n.carousel-caption {\n  position: absolute;\n  right: (100% - $carousel-caption-width) * .5;\n  bottom: $carousel-caption-spacer;\n  left: (100% - $carousel-caption-width) * .5;\n  padding-top: $carousel-caption-padding-y;\n  padding-bottom: $carousel-caption-padding-y;\n  color: $carousel-caption-color;\n  text-align: center;\n}\n\n// Dark mode carousel\n\n.carousel-dark {\n  .carousel-control-prev-icon,\n  .carousel-control-next-icon {\n    filter: $carousel-dark-control-icon-filter;\n  }\n\n  .carousel-indicators [data-bs-target] {\n    background-color: $carousel-dark-indicator-active-bg;\n  }\n\n  .carousel-caption {\n    color: $carousel-dark-caption-color;\n  }\n}\n","// scss-docs-start clearfix\n@mixin clearfix() {\n  &::after {\n    display: block;\n    clear: both;\n    content: \"\";\n  }\n}\n// scss-docs-end clearfix\n","//\n// Rotating border\n//\n\n// scss-docs-start spinner-border-keyframes\n@keyframes spinner-border {\n  to { transform: rotate(360deg) #{\"/* rtl:ignore */\"}; }\n}\n// scss-docs-end spinner-border-keyframes\n\n.spinner-border {\n  display: inline-block;\n  width: $spinner-width;\n  height: $spinner-height;\n  vertical-align: $spinner-vertical-align;\n  border: $spinner-border-width solid currentColor;\n  border-right-color: transparent;\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 50%;\n  animation: $spinner-animation-speed linear infinite spinner-border;\n}\n\n.spinner-border-sm {\n  width: $spinner-width-sm;\n  height: $spinner-height-sm;\n  border-width: $spinner-border-width-sm;\n}\n\n//\n// Growing circle\n//\n\n// scss-docs-start spinner-grow-keyframes\n@keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n// scss-docs-end spinner-grow-keyframes\n\n.spinner-grow {\n  display: inline-block;\n  width: $spinner-width;\n  height: $spinner-height;\n  vertical-align: $spinner-vertical-align;\n  background-color: currentColor;\n  // stylelint-disable-next-line property-disallowed-list\n  border-radius: 50%;\n  opacity: 0;\n  animation: $spinner-animation-speed linear infinite spinner-grow;\n}\n\n.spinner-grow-sm {\n  width: $spinner-width-sm;\n  height: $spinner-height-sm;\n}\n\n@if $enable-reduced-motion {\n  @media (prefers-reduced-motion: reduce) {\n    .spinner-border,\n    .spinner-grow {\n      animation-duration: $spinner-animation-speed * 2;\n    }\n  }\n}\n",".offcanvas {\n  position: fixed;\n  bottom: 0;\n  z-index: $zindex-offcanvas;\n  display: flex;\n  flex-direction: column;\n  max-width: 100%;\n  color: $offcanvas-color;\n  visibility: hidden;\n  background-color: $offcanvas-bg-color;\n  background-clip: padding-box;\n  outline: 0;\n  @include box-shadow($offcanvas-box-shadow);\n  @include transition(transform $offcanvas-transition-duration ease-in-out);\n}\n\n.offcanvas-backdrop {\n  @include overlay-backdrop($zindex-offcanvas-backdrop, $offcanvas-backdrop-bg, $offcanvas-backdrop-opacity);\n}\n\n.offcanvas-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: $offcanvas-padding-y $offcanvas-padding-x;\n\n  .btn-close {\n    padding: ($offcanvas-padding-y * .5) ($offcanvas-padding-x * .5);\n    margin-top: $offcanvas-padding-y * -.5;\n    margin-right: $offcanvas-padding-x * -.5;\n    margin-bottom: $offcanvas-padding-y * -.5;\n  }\n}\n\n.offcanvas-title {\n  margin-bottom: 0;\n  line-height: $offcanvas-title-line-height;\n}\n\n.offcanvas-body {\n  flex-grow: 1;\n  padding: $offcanvas-padding-y $offcanvas-padding-x;\n  overflow-y: auto;\n}\n\n.offcanvas-start {\n  top: 0;\n  left: 0;\n  width: $offcanvas-horizontal-width;\n  border-right: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateX(-100%);\n}\n\n.offcanvas-end {\n  top: 0;\n  right: 0;\n  width: $offcanvas-horizontal-width;\n  border-left: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateX(100%);\n}\n\n.offcanvas-top {\n  top: 0;\n  right: 0;\n  left: 0;\n  height: $offcanvas-vertical-height;\n  max-height: 100%;\n  border-bottom: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateY(-100%);\n}\n\n.offcanvas-bottom {\n  right: 0;\n  left: 0;\n  height: $offcanvas-vertical-height;\n  max-height: 100%;\n  border-top: $offcanvas-border-width solid $offcanvas-border-color;\n  transform: translateY(100%);\n}\n\n.offcanvas.show {\n  transform: none;\n}\n",".placeholder {\n  display: inline-block;\n  min-height: 1em;\n  vertical-align: middle;\n  cursor: wait;\n  background-color: currentColor;\n  opacity: $placeholder-opacity-max;\n\n  &.btn::before {\n    display: inline-block;\n    content: \"\";\n  }\n}\n\n// Sizing\n.placeholder-xs {\n  min-height: .6em;\n}\n\n.placeholder-sm {\n  min-height: .8em;\n}\n\n.placeholder-lg {\n  min-height: 1.2em;\n}\n\n// Animation\n.placeholder-glow {\n  .placeholder {\n    animation: placeholder-glow 2s ease-in-out infinite;\n  }\n}\n\n@keyframes placeholder-glow {\n  50% {\n    opacity: $placeholder-opacity-min;\n  }\n}\n\n.placeholder-wave {\n  mask-image: linear-gradient(130deg, $black 55%, rgba(0, 0, 0, (1 - $placeholder-opacity-min)) 75%, $black 95%);\n  mask-size: 200% 100%;\n  animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n  100% {\n    mask-position: -200% 0%;\n  }\n}\n","@each $color, $value in $theme-colors {\n  .link-#{$color} {\n    color: $value;\n\n    @if $link-shade-percentage != 0 {\n      &:hover,\n      &:focus {\n        color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));\n      }\n    }\n  }\n}\n","// Credit: Nicolas Gallagher and SUIT CSS.\n\n.ratio {\n  position: relative;\n  width: 100%;\n\n  &::before {\n    display: block;\n    padding-top: var(--#{$variable-prefix}aspect-ratio);\n    content: \"\";\n  }\n\n  > * {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n  }\n}\n\n@each $key, $ratio in $aspect-ratios {\n  .ratio-#{$key} {\n    --#{$variable-prefix}aspect-ratio: #{$ratio};\n  }\n}\n","// Shorthand\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n// Responsive sticky top\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .sticky#{$infix}-top {\n      position: sticky;\n      top: 0;\n      z-index: $zindex-sticky;\n    }\n  }\n}\n","// scss-docs-start stacks\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n// scss-docs-end stacks\n","//\n// Visually hidden\n//\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  @include visually-hidden();\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","//\n// Stretched link\n//\n\n.stretched-link {\n  &::#{$stretched-link-pseudo-element} {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: $stretched-link-z-index;\n    content: \"\";\n  }\n}\n","//\n// Text truncation\n//\n\n.text-truncate {\n  @include text-truncate();\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n",".vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: $hr-opacity;\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n  $values: map-get($utility, values);\n\n  // If the values are a list or string, convert it into a map\n  @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n    $values: zip($values, $values);\n  }\n\n  @each $key, $value in $values {\n    $properties: map-get($utility, property);\n\n    // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n    @if type-of($properties) == \"string\" {\n      $properties: append((), $properties);\n    }\n\n    // Use custom class if present\n    $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n    $property-class: if($property-class == null, \"\", $property-class);\n\n    // State params to generate pseudo-classes\n    $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n    $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (eg. with shadow class)\n    $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n    @if map-get($utility, rfs) {\n      // Inside the media query\n      @if $is-rfs-media-query {\n        $val: rfs-value($value);\n\n        // Do not render anything if fluid and non fluid values are the same\n        $value: if($val == rfs-fluid-value($value), null, $val);\n      }\n      @else {\n        $value: rfs-fluid-value($value);\n      }\n    }\n\n    $is-css-var: map-get($utility, css-var);\n    $is-local-vars: map-get($utility, local-vars);\n    $is-rtl: map-get($utility, rtl);\n\n    @if $value != null {\n      @if $is-rtl == false {\n        /* rtl:begin:remove */\n      }\n\n      @if $is-css-var {\n        .#{$property-class + $infix + $property-class-modifier} {\n          --#{$variable-prefix}#{$property-class}: #{$value};\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            --#{$variable-prefix}#{$property-class}: #{$value};\n          }\n        }\n      } @else {\n        .#{$property-class + $infix + $property-class-modifier} {\n          @each $property in $properties {\n            @if $is-local-vars {\n              @each $local-var, $value in $is-local-vars {\n                --#{$variable-prefix}#{$local-var}: #{$value};\n              }\n            }\n            #{$property}: $value if($enable-important-utilities, !important, null);\n          }\n        }\n\n        @each $pseudo in $state {\n          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n            @each $property in $properties {\n              #{$property}: $value if($enable-important-utilities, !important, null);\n            }\n          }\n        }\n      }\n\n      @if $is-rtl == false {\n        /* rtl:end:remove */\n      }\n    }\n  }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n  // Generate media query if needed\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    // Loop over each utility property\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Only proceed if responsive media queries are enabled or if it's the base media query\n      @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n        @include generate-utility($utility, $infix);\n      }\n    }\n  }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix, true);\n        }\n      }\n    }\n  }\n}\n\n\n// Print utilities\n@media print {\n  @each $key, $utility in $utilities {\n    // The utility can be disabled with `false`, thus check if the utility is a map first\n    // Then check if the utility needs print styles\n    @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n      @include generate-utility($utility, \"-print\");\n    }\n  }\n}\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js
new file mode 100644
index 0000000..969ecb0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js
@@ -0,0 +1,6780 @@
+/*!
+  * Bootstrap v5.1.0 (https://getbootstrap.com/)
+  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+  */
+(function (global, factory) {
+  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+  typeof define === 'function' && define.amd ? define(factory) :
+  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory());
+}(this, (function () { 'use strict';
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): util/index.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  const MAX_UID = 1000000;
+  const MILLISECONDS_MULTIPLIER = 1000;
+  const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
+
+  const toType = obj => {
+    if (obj === null || obj === undefined) {
+      return `${obj}`;
+    }
+
+    return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
+  };
+  /**
+   * --------------------------------------------------------------------------
+   * Public Util Api
+   * --------------------------------------------------------------------------
+   */
+
+
+  const getUID = prefix => {
+    do {
+      prefix += Math.floor(Math.random() * MAX_UID);
+    } while (document.getElementById(prefix));
+
+    return prefix;
+  };
+
+  const getSelector = element => {
+    let selector = element.getAttribute('data-bs-target');
+
+    if (!selector || selector === '#') {
+      let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
+      // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
+      // `document.querySelector` will rightfully complain it is invalid.
+      // See https://github.com/twbs/bootstrap/issues/32273
+
+      if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
+        return null;
+      } // Just in case some CMS puts out a full URL with the anchor appended
+
+
+      if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
+        hrefAttr = `#${hrefAttr.split('#')[1]}`;
+      }
+
+      selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
+    }
+
+    return selector;
+  };
+
+  const getSelectorFromElement = element => {
+    const selector = getSelector(element);
+
+    if (selector) {
+      return document.querySelector(selector) ? selector : null;
+    }
+
+    return null;
+  };
+
+  const getElementFromSelector = element => {
+    const selector = getSelector(element);
+    return selector ? document.querySelector(selector) : null;
+  };
+
+  const getTransitionDurationFromElement = element => {
+    if (!element) {
+      return 0;
+    } // Get transition-duration of the element
+
+
+    let {
+      transitionDuration,
+      transitionDelay
+    } = window.getComputedStyle(element);
+    const floatTransitionDuration = Number.parseFloat(transitionDuration);
+    const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
+
+    if (!floatTransitionDuration && !floatTransitionDelay) {
+      return 0;
+    } // If multiple durations are defined, take the first
+
+
+    transitionDuration = transitionDuration.split(',')[0];
+    transitionDelay = transitionDelay.split(',')[0];
+    return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
+  };
+
+  const triggerTransitionEnd = element => {
+    element.dispatchEvent(new Event(TRANSITION_END));
+  };
+
+  const isElement$1 = obj => {
+    if (!obj || typeof obj !== 'object') {
+      return false;
+    }
+
+    if (typeof obj.jquery !== 'undefined') {
+      obj = obj[0];
+    }
+
+    return typeof obj.nodeType !== 'undefined';
+  };
+
+  const getElement = obj => {
+    if (isElement$1(obj)) {
+      // it's a jQuery object or a node element
+      return obj.jquery ? obj[0] : obj;
+    }
+
+    if (typeof obj === 'string' && obj.length > 0) {
+      return document.querySelector(obj);
+    }
+
+    return null;
+  };
+
+  const typeCheckConfig = (componentName, config, configTypes) => {
+    Object.keys(configTypes).forEach(property => {
+      const expectedTypes = configTypes[property];
+      const value = config[property];
+      const valueType = value && isElement$1(value) ? 'element' : toType(value);
+
+      if (!new RegExp(expectedTypes).test(valueType)) {
+        throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
+      }
+    });
+  };
+
+  const isVisible = element => {
+    if (!isElement$1(element) || element.getClientRects().length === 0) {
+      return false;
+    }
+
+    return getComputedStyle(element).getPropertyValue('visibility') === 'visible';
+  };
+
+  const isDisabled = element => {
+    if (!element || element.nodeType !== Node.ELEMENT_NODE) {
+      return true;
+    }
+
+    if (element.classList.contains('disabled')) {
+      return true;
+    }
+
+    if (typeof element.disabled !== 'undefined') {
+      return element.disabled;
+    }
+
+    return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
+  };
+
+  const findShadowRoot = element => {
+    if (!document.documentElement.attachShadow) {
+      return null;
+    } // Can find the shadow root otherwise it'll return the document
+
+
+    if (typeof element.getRootNode === 'function') {
+      const root = element.getRootNode();
+      return root instanceof ShadowRoot ? root : null;
+    }
+
+    if (element instanceof ShadowRoot) {
+      return element;
+    } // when we don't find a shadow root
+
+
+    if (!element.parentNode) {
+      return null;
+    }
+
+    return findShadowRoot(element.parentNode);
+  };
+
+  const noop = () => {};
+  /**
+   * Trick to restart an element's animation
+   *
+   * @param {HTMLElement} element
+   * @return void
+   *
+   * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
+   */
+
+
+  const reflow = element => {
+    // eslint-disable-next-line no-unused-expressions
+    element.offsetHeight;
+  };
+
+  const getjQuery = () => {
+    const {
+      jQuery
+    } = window;
+
+    if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
+      return jQuery;
+    }
+
+    return null;
+  };
+
+  const DOMContentLoadedCallbacks = [];
+
+  const onDOMContentLoaded = callback => {
+    if (document.readyState === 'loading') {
+      // add listener on the first call when the document is in loading state
+      if (!DOMContentLoadedCallbacks.length) {
+        document.addEventListener('DOMContentLoaded', () => {
+          DOMContentLoadedCallbacks.forEach(callback => callback());
+        });
+      }
+
+      DOMContentLoadedCallbacks.push(callback);
+    } else {
+      callback();
+    }
+  };
+
+  const isRTL = () => document.documentElement.dir === 'rtl';
+
+  const defineJQueryPlugin = plugin => {
+    onDOMContentLoaded(() => {
+      const $ = getjQuery();
+      /* istanbul ignore if */
+
+      if ($) {
+        const name = plugin.NAME;
+        const JQUERY_NO_CONFLICT = $.fn[name];
+        $.fn[name] = plugin.jQueryInterface;
+        $.fn[name].Constructor = plugin;
+
+        $.fn[name].noConflict = () => {
+          $.fn[name] = JQUERY_NO_CONFLICT;
+          return plugin.jQueryInterface;
+        };
+      }
+    });
+  };
+
+  const execute = callback => {
+    if (typeof callback === 'function') {
+      callback();
+    }
+  };
+
+  const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
+    if (!waitForTransition) {
+      execute(callback);
+      return;
+    }
+
+    const durationPadding = 5;
+    const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
+    let called = false;
+
+    const handler = ({
+      target
+    }) => {
+      if (target !== transitionElement) {
+        return;
+      }
+
+      called = true;
+      transitionElement.removeEventListener(TRANSITION_END, handler);
+      execute(callback);
+    };
+
+    transitionElement.addEventListener(TRANSITION_END, handler);
+    setTimeout(() => {
+      if (!called) {
+        triggerTransitionEnd(transitionElement);
+      }
+    }, emulatedDuration);
+  };
+  /**
+   * Return the previous/next element of a list.
+   *
+   * @param {array} list    The list of elements
+   * @param activeElement   The active element
+   * @param shouldGetNext   Choose to get next or previous element
+   * @param isCycleAllowed
+   * @return {Element|elem} The proper element
+   */
+
+
+  const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
+    let index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed
+
+    if (index === -1) {
+      return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0];
+    }
+
+    const listLength = list.length;
+    index += shouldGetNext ? 1 : -1;
+
+    if (isCycleAllowed) {
+      index = (index + listLength) % listLength;
+    }
+
+    return list[Math.max(0, Math.min(index, listLength - 1))];
+  };
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): dom/event-handler.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
+  const stripNameRegex = /\..*/;
+  const stripUidRegex = /::\d+$/;
+  const eventRegistry = {}; // Events storage
+
+  let uidEvent = 1;
+  const customEvents = {
+    mouseenter: 'mouseover',
+    mouseleave: 'mouseout'
+  };
+  const customEventsRegex = /^(mouseenter|mouseleave)/i;
+  const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
+  /**
+   * ------------------------------------------------------------------------
+   * Private methods
+   * ------------------------------------------------------------------------
+   */
+
+  function getUidEvent(element, uid) {
+    return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
+  }
+
+  function getEvent(element) {
+    const uid = getUidEvent(element);
+    element.uidEvent = uid;
+    eventRegistry[uid] = eventRegistry[uid] || {};
+    return eventRegistry[uid];
+  }
+
+  function bootstrapHandler(element, fn) {
+    return function handler(event) {
+      event.delegateTarget = element;
+
+      if (handler.oneOff) {
+        EventHandler.off(element, event.type, fn);
+      }
+
+      return fn.apply(element, [event]);
+    };
+  }
+
+  function bootstrapDelegationHandler(element, selector, fn) {
+    return function handler(event) {
+      const domElements = element.querySelectorAll(selector);
+
+      for (let {
+        target
+      } = event; target && target !== this; target = target.parentNode) {
+        for (let i = domElements.length; i--;) {
+          if (domElements[i] === target) {
+            event.delegateTarget = target;
+
+            if (handler.oneOff) {
+              // eslint-disable-next-line unicorn/consistent-destructuring
+              EventHandler.off(element, event.type, selector, fn);
+            }
+
+            return fn.apply(target, [event]);
+          }
+        }
+      } // To please ESLint
+
+
+      return null;
+    };
+  }
+
+  function findHandler(events, handler, delegationSelector = null) {
+    const uidEventList = Object.keys(events);
+
+    for (let i = 0, len = uidEventList.length; i < len; i++) {
+      const event = events[uidEventList[i]];
+
+      if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
+        return event;
+      }
+    }
+
+    return null;
+  }
+
+  function normalizeParams(originalTypeEvent, handler, delegationFn) {
+    const delegation = typeof handler === 'string';
+    const originalHandler = delegation ? delegationFn : handler;
+    let typeEvent = getTypeEvent(originalTypeEvent);
+    const isNative = nativeEvents.has(typeEvent);
+
+    if (!isNative) {
+      typeEvent = originalTypeEvent;
+    }
+
+    return [delegation, originalHandler, typeEvent];
+  }
+
+  function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {
+    if (typeof originalTypeEvent !== 'string' || !element) {
+      return;
+    }
+
+    if (!handler) {
+      handler = delegationFn;
+      delegationFn = null;
+    } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
+    // this prevents the handler from being dispatched the same way as mouseover or mouseout does
+
+
+    if (customEventsRegex.test(originalTypeEvent)) {
+      const wrapFn = fn => {
+        return function (event) {
+          if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
+            return fn.call(this, event);
+          }
+        };
+      };
+
+      if (delegationFn) {
+        delegationFn = wrapFn(delegationFn);
+      } else {
+        handler = wrapFn(handler);
+      }
+    }
+
+    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
+    const events = getEvent(element);
+    const handlers = events[typeEvent] || (events[typeEvent] = {});
+    const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
+
+    if (previousFn) {
+      previousFn.oneOff = previousFn.oneOff && oneOff;
+      return;
+    }
+
+    const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));
+    const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);
+    fn.delegationSelector = delegation ? handler : null;
+    fn.originalHandler = originalHandler;
+    fn.oneOff = oneOff;
+    fn.uidEvent = uid;
+    handlers[uid] = fn;
+    element.addEventListener(typeEvent, fn, delegation);
+  }
+
+  function removeHandler(element, events, typeEvent, handler, delegationSelector) {
+    const fn = findHandler(events[typeEvent], handler, delegationSelector);
+
+    if (!fn) {
+      return;
+    }
+
+    element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
+    delete events[typeEvent][fn.uidEvent];
+  }
+
+  function removeNamespacedHandlers(element, events, typeEvent, namespace) {
+    const storeElementEvent = events[typeEvent] || {};
+    Object.keys(storeElementEvent).forEach(handlerKey => {
+      if (handlerKey.includes(namespace)) {
+        const event = storeElementEvent[handlerKey];
+        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
+      }
+    });
+  }
+
+  function getTypeEvent(event) {
+    // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
+    event = event.replace(stripNameRegex, '');
+    return customEvents[event] || event;
+  }
+
+  const EventHandler = {
+    on(element, event, handler, delegationFn) {
+      addHandler(element, event, handler, delegationFn, false);
+    },
+
+    one(element, event, handler, delegationFn) {
+      addHandler(element, event, handler, delegationFn, true);
+    },
+
+    off(element, originalTypeEvent, handler, delegationFn) {
+      if (typeof originalTypeEvent !== 'string' || !element) {
+        return;
+      }
+
+      const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
+      const inNamespace = typeEvent !== originalTypeEvent;
+      const events = getEvent(element);
+      const isNamespace = originalTypeEvent.startsWith('.');
+
+      if (typeof originalHandler !== 'undefined') {
+        // Simplest case: handler is passed, remove that listener ONLY.
+        if (!events || !events[typeEvent]) {
+          return;
+        }
+
+        removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);
+        return;
+      }
+
+      if (isNamespace) {
+        Object.keys(events).forEach(elementEvent => {
+          removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
+        });
+      }
+
+      const storeElementEvent = events[typeEvent] || {};
+      Object.keys(storeElementEvent).forEach(keyHandlers => {
+        const handlerKey = keyHandlers.replace(stripUidRegex, '');
+
+        if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
+          const event = storeElementEvent[keyHandlers];
+          removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
+        }
+      });
+    },
+
+    trigger(element, event, args) {
+      if (typeof event !== 'string' || !element) {
+        return null;
+      }
+
+      const $ = getjQuery();
+      const typeEvent = getTypeEvent(event);
+      const inNamespace = event !== typeEvent;
+      const isNative = nativeEvents.has(typeEvent);
+      let jQueryEvent;
+      let bubbles = true;
+      let nativeDispatch = true;
+      let defaultPrevented = false;
+      let evt = null;
+
+      if (inNamespace && $) {
+        jQueryEvent = $.Event(event, args);
+        $(element).trigger(jQueryEvent);
+        bubbles = !jQueryEvent.isPropagationStopped();
+        nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
+        defaultPrevented = jQueryEvent.isDefaultPrevented();
+      }
+
+      if (isNative) {
+        evt = document.createEvent('HTMLEvents');
+        evt.initEvent(typeEvent, bubbles, true);
+      } else {
+        evt = new CustomEvent(event, {
+          bubbles,
+          cancelable: true
+        });
+      } // merge custom information in our event
+
+
+      if (typeof args !== 'undefined') {
+        Object.keys(args).forEach(key => {
+          Object.defineProperty(evt, key, {
+            get() {
+              return args[key];
+            }
+
+          });
+        });
+      }
+
+      if (defaultPrevented) {
+        evt.preventDefault();
+      }
+
+      if (nativeDispatch) {
+        element.dispatchEvent(evt);
+      }
+
+      if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {
+        jQueryEvent.preventDefault();
+      }
+
+      return evt;
+    }
+
+  };
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): dom/data.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+  const elementMap = new Map();
+  var Data = {
+    set(element, key, instance) {
+      if (!elementMap.has(element)) {
+        elementMap.set(element, new Map());
+      }
+
+      const instanceMap = elementMap.get(element); // make it clear we only want one instance per element
+      // can be removed later when multiple key/instances are fine to be used
+
+      if (!instanceMap.has(key) && instanceMap.size !== 0) {
+        // eslint-disable-next-line no-console
+        console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
+        return;
+      }
+
+      instanceMap.set(key, instance);
+    },
+
+    get(element, key) {
+      if (elementMap.has(element)) {
+        return elementMap.get(element).get(key) || null;
+      }
+
+      return null;
+    },
+
+    remove(element, key) {
+      if (!elementMap.has(element)) {
+        return;
+      }
+
+      const instanceMap = elementMap.get(element);
+      instanceMap.delete(key); // free up element references if there are no instances left for an element
+
+      if (instanceMap.size === 0) {
+        elementMap.delete(element);
+      }
+    }
+
+  };
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): base-component.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const VERSION = '5.1.0';
+
+  class BaseComponent {
+    constructor(element) {
+      element = getElement(element);
+
+      if (!element) {
+        return;
+      }
+
+      this._element = element;
+      Data.set(this._element, this.constructor.DATA_KEY, this);
+    }
+
+    dispose() {
+      Data.remove(this._element, this.constructor.DATA_KEY);
+      EventHandler.off(this._element, this.constructor.EVENT_KEY);
+      Object.getOwnPropertyNames(this).forEach(propertyName => {
+        this[propertyName] = null;
+      });
+    }
+
+    _queueCallback(callback, element, isAnimated = true) {
+      executeAfterTransition(callback, element, isAnimated);
+    }
+    /** Static */
+
+
+    static getInstance(element) {
+      return Data.get(getElement(element), this.DATA_KEY);
+    }
+
+    static getOrCreateInstance(element, config = {}) {
+      return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
+    }
+
+    static get VERSION() {
+      return VERSION;
+    }
+
+    static get NAME() {
+      throw new Error('You have to implement the static method "NAME", for each component!');
+    }
+
+    static get DATA_KEY() {
+      return `bs.${this.NAME}`;
+    }
+
+    static get EVENT_KEY() {
+      return `.${this.DATA_KEY}`;
+    }
+
+  }
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): util/component-functions.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+
+  const enableDismissTrigger = (component, method = 'hide') => {
+    const clickEvent = `click.dismiss${component.EVENT_KEY}`;
+    const name = component.NAME;
+    EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
+      if (['A', 'AREA'].includes(this.tagName)) {
+        event.preventDefault();
+      }
+
+      if (isDisabled(this)) {
+        return;
+      }
+
+      const target = getElementFromSelector(this) || this.closest(`.${name}`);
+      const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
+
+      instance[method]();
+    });
+  };
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): alert.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$d = 'alert';
+  const DATA_KEY$c = 'bs.alert';
+  const EVENT_KEY$c = `.${DATA_KEY$c}`;
+  const EVENT_CLOSE = `close${EVENT_KEY$c}`;
+  const EVENT_CLOSED = `closed${EVENT_KEY$c}`;
+  const CLASS_NAME_FADE$5 = 'fade';
+  const CLASS_NAME_SHOW$8 = 'show';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Alert extends BaseComponent {
+    // Getters
+    static get NAME() {
+      return NAME$d;
+    } // Public
+
+
+    close() {
+      const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
+
+      if (closeEvent.defaultPrevented) {
+        return;
+      }
+
+      this._element.classList.remove(CLASS_NAME_SHOW$8);
+
+      const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
+
+      this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
+    } // Private
+
+
+    _destroyElement() {
+      this._element.remove();
+
+      EventHandler.trigger(this._element, EVENT_CLOSED);
+      this.dispose();
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Alert.getOrCreateInstance(this);
+
+        if (typeof config !== 'string') {
+          return;
+        }
+
+        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config](this);
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  enableDismissTrigger(Alert, 'close');
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Alert to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Alert);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): button.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$c = 'button';
+  const DATA_KEY$b = 'bs.button';
+  const EVENT_KEY$b = `.${DATA_KEY$b}`;
+  const DATA_API_KEY$7 = '.data-api';
+  const CLASS_NAME_ACTIVE$3 = 'active';
+  const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
+  const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$b}${DATA_API_KEY$7}`;
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Button extends BaseComponent {
+    // Getters
+    static get NAME() {
+      return NAME$c;
+    } // Public
+
+
+    toggle() {
+      // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
+      this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Button.getOrCreateInstance(this);
+
+        if (config === 'toggle') {
+          data[config]();
+        }
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {
+    event.preventDefault();
+    const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
+    const data = Button.getOrCreateInstance(button);
+    data.toggle();
+  });
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Button to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Button);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): dom/manipulator.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  function normalizeData(val) {
+    if (val === 'true') {
+      return true;
+    }
+
+    if (val === 'false') {
+      return false;
+    }
+
+    if (val === Number(val).toString()) {
+      return Number(val);
+    }
+
+    if (val === '' || val === 'null') {
+      return null;
+    }
+
+    return val;
+  }
+
+  function normalizeDataKey(key) {
+    return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
+  }
+
+  const Manipulator = {
+    setDataAttribute(element, key, value) {
+      element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
+    },
+
+    removeDataAttribute(element, key) {
+      element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
+    },
+
+    getDataAttributes(element) {
+      if (!element) {
+        return {};
+      }
+
+      const attributes = {};
+      Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => {
+        let pureKey = key.replace(/^bs/, '');
+        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
+        attributes[pureKey] = normalizeData(element.dataset[key]);
+      });
+      return attributes;
+    },
+
+    getDataAttribute(element, key) {
+      return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
+    },
+
+    offset(element) {
+      const rect = element.getBoundingClientRect();
+      return {
+        top: rect.top + window.pageYOffset,
+        left: rect.left + window.pageXOffset
+      };
+    },
+
+    position(element) {
+      return {
+        top: element.offsetTop,
+        left: element.offsetLeft
+      };
+    }
+
+  };
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): dom/selector-engine.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  const NODE_TEXT = 3;
+  const SelectorEngine = {
+    find(selector, element = document.documentElement) {
+      return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
+    },
+
+    findOne(selector, element = document.documentElement) {
+      return Element.prototype.querySelector.call(element, selector);
+    },
+
+    children(element, selector) {
+      return [].concat(...element.children).filter(child => child.matches(selector));
+    },
+
+    parents(element, selector) {
+      const parents = [];
+      let ancestor = element.parentNode;
+
+      while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {
+        if (ancestor.matches(selector)) {
+          parents.push(ancestor);
+        }
+
+        ancestor = ancestor.parentNode;
+      }
+
+      return parents;
+    },
+
+    prev(element, selector) {
+      let previous = element.previousElementSibling;
+
+      while (previous) {
+        if (previous.matches(selector)) {
+          return [previous];
+        }
+
+        previous = previous.previousElementSibling;
+      }
+
+      return [];
+    },
+
+    next(element, selector) {
+      let next = element.nextElementSibling;
+
+      while (next) {
+        if (next.matches(selector)) {
+          return [next];
+        }
+
+        next = next.nextElementSibling;
+      }
+
+      return [];
+    },
+
+    focusableChildren(element) {
+      const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(', ');
+      return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));
+    }
+
+  };
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): carousel.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$b = 'carousel';
+  const DATA_KEY$a = 'bs.carousel';
+  const EVENT_KEY$a = `.${DATA_KEY$a}`;
+  const DATA_API_KEY$6 = '.data-api';
+  const ARROW_LEFT_KEY = 'ArrowLeft';
+  const ARROW_RIGHT_KEY = 'ArrowRight';
+  const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
+
+  const SWIPE_THRESHOLD = 40;
+  const Default$a = {
+    interval: 5000,
+    keyboard: true,
+    slide: false,
+    pause: 'hover',
+    wrap: true,
+    touch: true
+  };
+  const DefaultType$a = {
+    interval: '(number|boolean)',
+    keyboard: 'boolean',
+    slide: '(boolean|string)',
+    pause: '(string|boolean)',
+    wrap: 'boolean',
+    touch: 'boolean'
+  };
+  const ORDER_NEXT = 'next';
+  const ORDER_PREV = 'prev';
+  const DIRECTION_LEFT = 'left';
+  const DIRECTION_RIGHT = 'right';
+  const KEY_TO_DIRECTION = {
+    [ARROW_LEFT_KEY]: DIRECTION_RIGHT,
+    [ARROW_RIGHT_KEY]: DIRECTION_LEFT
+  };
+  const EVENT_SLIDE = `slide${EVENT_KEY$a}`;
+  const EVENT_SLID = `slid${EVENT_KEY$a}`;
+  const EVENT_KEYDOWN = `keydown${EVENT_KEY$a}`;
+  const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY$a}`;
+  const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY$a}`;
+  const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$a}`;
+  const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$a}`;
+  const EVENT_TOUCHEND = `touchend${EVENT_KEY$a}`;
+  const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$a}`;
+  const EVENT_POINTERUP = `pointerup${EVENT_KEY$a}`;
+  const EVENT_DRAG_START = `dragstart${EVENT_KEY$a}`;
+  const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$a}${DATA_API_KEY$6}`;
+  const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
+  const CLASS_NAME_CAROUSEL = 'carousel';
+  const CLASS_NAME_ACTIVE$2 = 'active';
+  const CLASS_NAME_SLIDE = 'slide';
+  const CLASS_NAME_END = 'carousel-item-end';
+  const CLASS_NAME_START = 'carousel-item-start';
+  const CLASS_NAME_NEXT = 'carousel-item-next';
+  const CLASS_NAME_PREV = 'carousel-item-prev';
+  const CLASS_NAME_POINTER_EVENT = 'pointer-event';
+  const SELECTOR_ACTIVE$1 = '.active';
+  const SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
+  const SELECTOR_ITEM = '.carousel-item';
+  const SELECTOR_ITEM_IMG = '.carousel-item img';
+  const SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
+  const SELECTOR_INDICATORS = '.carousel-indicators';
+  const SELECTOR_INDICATOR = '[data-bs-target]';
+  const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
+  const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
+  const POINTER_TYPE_TOUCH = 'touch';
+  const POINTER_TYPE_PEN = 'pen';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Carousel extends BaseComponent {
+    constructor(element, config) {
+      super(element);
+      this._items = null;
+      this._interval = null;
+      this._activeElement = null;
+      this._isPaused = false;
+      this._isSliding = false;
+      this.touchTimeout = null;
+      this.touchStartX = 0;
+      this.touchDeltaX = 0;
+      this._config = this._getConfig(config);
+      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
+      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
+      this._pointerEvent = Boolean(window.PointerEvent);
+
+      this._addEventListeners();
+    } // Getters
+
+
+    static get Default() {
+      return Default$a;
+    }
+
+    static get NAME() {
+      return NAME$b;
+    } // Public
+
+
+    next() {
+      this._slide(ORDER_NEXT);
+    }
+
+    nextWhenVisible() {
+      // Don't call next when the page isn't visible
+      // or the carousel or its parent isn't visible
+      if (!document.hidden && isVisible(this._element)) {
+        this.next();
+      }
+    }
+
+    prev() {
+      this._slide(ORDER_PREV);
+    }
+
+    pause(event) {
+      if (!event) {
+        this._isPaused = true;
+      }
+
+      if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {
+        triggerTransitionEnd(this._element);
+        this.cycle(true);
+      }
+
+      clearInterval(this._interval);
+      this._interval = null;
+    }
+
+    cycle(event) {
+      if (!event) {
+        this._isPaused = false;
+      }
+
+      if (this._interval) {
+        clearInterval(this._interval);
+        this._interval = null;
+      }
+
+      if (this._config && this._config.interval && !this._isPaused) {
+        this._updateInterval();
+
+        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
+      }
+    }
+
+    to(index) {
+      this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
+
+      const activeIndex = this._getItemIndex(this._activeElement);
+
+      if (index > this._items.length - 1 || index < 0) {
+        return;
+      }
+
+      if (this._isSliding) {
+        EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
+        return;
+      }
+
+      if (activeIndex === index) {
+        this.pause();
+        this.cycle();
+        return;
+      }
+
+      const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
+
+      this._slide(order, this._items[index]);
+    } // Private
+
+
+    _getConfig(config) {
+      config = { ...Default$a,
+        ...Manipulator.getDataAttributes(this._element),
+        ...(typeof config === 'object' ? config : {})
+      };
+      typeCheckConfig(NAME$b, config, DefaultType$a);
+      return config;
+    }
+
+    _handleSwipe() {
+      const absDeltax = Math.abs(this.touchDeltaX);
+
+      if (absDeltax <= SWIPE_THRESHOLD) {
+        return;
+      }
+
+      const direction = absDeltax / this.touchDeltaX;
+      this.touchDeltaX = 0;
+
+      if (!direction) {
+        return;
+      }
+
+      this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT);
+    }
+
+    _addEventListeners() {
+      if (this._config.keyboard) {
+        EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
+      }
+
+      if (this._config.pause === 'hover') {
+        EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event));
+        EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event));
+      }
+
+      if (this._config.touch && this._touchSupported) {
+        this._addTouchEventListeners();
+      }
+    }
+
+    _addTouchEventListeners() {
+      const start = event => {
+        if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {
+          this.touchStartX = event.clientX;
+        } else if (!this._pointerEvent) {
+          this.touchStartX = event.touches[0].clientX;
+        }
+      };
+
+      const move = event => {
+        // ensure swiping with one touch and not pinching
+        this.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this.touchStartX;
+      };
+
+      const end = event => {
+        if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {
+          this.touchDeltaX = event.clientX - this.touchStartX;
+        }
+
+        this._handleSwipe();
+
+        if (this._config.pause === 'hover') {
+          // If it's a touch-enabled device, mouseenter/leave are fired as
+          // part of the mouse compatibility events on first tap - the carousel
+          // would stop cycling until user tapped out of it;
+          // here, we listen for touchend, explicitly pause the carousel
+          // (as if it's the second time we tap on it, mouseenter compat event
+          // is NOT fired) and after a timeout (to allow for mouse compatibility
+          // events to fire) we explicitly restart cycling
+          this.pause();
+
+          if (this.touchTimeout) {
+            clearTimeout(this.touchTimeout);
+          }
+
+          this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
+        }
+      };
+
+      SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {
+        EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault());
+      });
+
+      if (this._pointerEvent) {
+        EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event));
+        EventHandler.on(this._element, EVENT_POINTERUP, event => end(event));
+
+        this._element.classList.add(CLASS_NAME_POINTER_EVENT);
+      } else {
+        EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event));
+        EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event));
+        EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event));
+      }
+    }
+
+    _keydown(event) {
+      if (/input|textarea/i.test(event.target.tagName)) {
+        return;
+      }
+
+      const direction = KEY_TO_DIRECTION[event.key];
+
+      if (direction) {
+        event.preventDefault();
+
+        this._slide(direction);
+      }
+    }
+
+    _getItemIndex(element) {
+      this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];
+      return this._items.indexOf(element);
+    }
+
+    _getItemByOrder(order, activeElement) {
+      const isNext = order === ORDER_NEXT;
+      return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap);
+    }
+
+    _triggerSlideEvent(relatedTarget, eventDirectionName) {
+      const targetIndex = this._getItemIndex(relatedTarget);
+
+      const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));
+
+      return EventHandler.trigger(this._element, EVENT_SLIDE, {
+        relatedTarget,
+        direction: eventDirectionName,
+        from: fromIndex,
+        to: targetIndex
+      });
+    }
+
+    _setActiveIndicatorElement(element) {
+      if (this._indicatorsElement) {
+        const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE$1, this._indicatorsElement);
+        activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
+        activeIndicator.removeAttribute('aria-current');
+        const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement);
+
+        for (let i = 0; i < indicators.length; i++) {
+          if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {
+            indicators[i].classList.add(CLASS_NAME_ACTIVE$2);
+            indicators[i].setAttribute('aria-current', 'true');
+            break;
+          }
+        }
+      }
+    }
+
+    _updateInterval() {
+      const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
+
+      if (!element) {
+        return;
+      }
+
+      const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
+
+      if (elementInterval) {
+        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
+        this._config.interval = elementInterval;
+      } else {
+        this._config.interval = this._config.defaultInterval || this._config.interval;
+      }
+    }
+
+    _slide(directionOrOrder, element) {
+      const order = this._directionToOrder(directionOrOrder);
+
+      const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
+
+      const activeElementIndex = this._getItemIndex(activeElement);
+
+      const nextElement = element || this._getItemByOrder(order, activeElement);
+
+      const nextElementIndex = this._getItemIndex(nextElement);
+
+      const isCycling = Boolean(this._interval);
+      const isNext = order === ORDER_NEXT;
+      const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
+      const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
+
+      const eventDirectionName = this._orderToDirection(order);
+
+      if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$2)) {
+        this._isSliding = false;
+        return;
+      }
+
+      if (this._isSliding) {
+        return;
+      }
+
+      const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
+
+      if (slideEvent.defaultPrevented) {
+        return;
+      }
+
+      if (!activeElement || !nextElement) {
+        // Some weirdness is happening, so we bail
+        return;
+      }
+
+      this._isSliding = true;
+
+      if (isCycling) {
+        this.pause();
+      }
+
+      this._setActiveIndicatorElement(nextElement);
+
+      this._activeElement = nextElement;
+
+      const triggerSlidEvent = () => {
+        EventHandler.trigger(this._element, EVENT_SLID, {
+          relatedTarget: nextElement,
+          direction: eventDirectionName,
+          from: activeElementIndex,
+          to: nextElementIndex
+        });
+      };
+
+      if (this._element.classList.contains(CLASS_NAME_SLIDE)) {
+        nextElement.classList.add(orderClassName);
+        reflow(nextElement);
+        activeElement.classList.add(directionalClassName);
+        nextElement.classList.add(directionalClassName);
+
+        const completeCallBack = () => {
+          nextElement.classList.remove(directionalClassName, orderClassName);
+          nextElement.classList.add(CLASS_NAME_ACTIVE$2);
+          activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
+          this._isSliding = false;
+          setTimeout(triggerSlidEvent, 0);
+        };
+
+        this._queueCallback(completeCallBack, activeElement, true);
+      } else {
+        activeElement.classList.remove(CLASS_NAME_ACTIVE$2);
+        nextElement.classList.add(CLASS_NAME_ACTIVE$2);
+        this._isSliding = false;
+        triggerSlidEvent();
+      }
+
+      if (isCycling) {
+        this.cycle();
+      }
+    }
+
+    _directionToOrder(direction) {
+      if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {
+        return direction;
+      }
+
+      if (isRTL()) {
+        return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
+      }
+
+      return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
+    }
+
+    _orderToDirection(order) {
+      if (![ORDER_NEXT, ORDER_PREV].includes(order)) {
+        return order;
+      }
+
+      if (isRTL()) {
+        return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
+      }
+
+      return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
+    } // Static
+
+
+    static carouselInterface(element, config) {
+      const data = Carousel.getOrCreateInstance(element, config);
+      let {
+        _config
+      } = data;
+
+      if (typeof config === 'object') {
+        _config = { ..._config,
+          ...config
+        };
+      }
+
+      const action = typeof config === 'string' ? config : _config.slide;
+
+      if (typeof config === 'number') {
+        data.to(config);
+      } else if (typeof action === 'string') {
+        if (typeof data[action] === 'undefined') {
+          throw new TypeError(`No method named "${action}"`);
+        }
+
+        data[action]();
+      } else if (_config.interval && _config.ride) {
+        data.pause();
+        data.cycle();
+      }
+    }
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        Carousel.carouselInterface(this, config);
+      });
+    }
+
+    static dataApiClickHandler(event) {
+      const target = getElementFromSelector(this);
+
+      if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
+        return;
+      }
+
+      const config = { ...Manipulator.getDataAttributes(target),
+        ...Manipulator.getDataAttributes(this)
+      };
+      const slideIndex = this.getAttribute('data-bs-slide-to');
+
+      if (slideIndex) {
+        config.interval = false;
+      }
+
+      Carousel.carouselInterface(target, config);
+
+      if (slideIndex) {
+        Carousel.getInstance(target).to(slideIndex);
+      }
+
+      event.preventDefault();
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
+  EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
+    const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
+
+    for (let i = 0, len = carousels.length; i < len; i++) {
+      Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]));
+    }
+  });
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Carousel to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Carousel);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): collapse.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$a = 'collapse';
+  const DATA_KEY$9 = 'bs.collapse';
+  const EVENT_KEY$9 = `.${DATA_KEY$9}`;
+  const DATA_API_KEY$5 = '.data-api';
+  const Default$9 = {
+    toggle: true,
+    parent: null
+  };
+  const DefaultType$9 = {
+    toggle: 'boolean',
+    parent: '(null|element)'
+  };
+  const EVENT_SHOW$5 = `show${EVENT_KEY$9}`;
+  const EVENT_SHOWN$5 = `shown${EVENT_KEY$9}`;
+  const EVENT_HIDE$5 = `hide${EVENT_KEY$9}`;
+  const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$9}`;
+  const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$9}${DATA_API_KEY$5}`;
+  const CLASS_NAME_SHOW$7 = 'show';
+  const CLASS_NAME_COLLAPSE = 'collapse';
+  const CLASS_NAME_COLLAPSING = 'collapsing';
+  const CLASS_NAME_COLLAPSED = 'collapsed';
+  const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
+  const WIDTH = 'width';
+  const HEIGHT = 'height';
+  const SELECTOR_ACTIVES = '.show, .collapsing';
+  const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Collapse extends BaseComponent {
+    constructor(element, config) {
+      super(element);
+      this._isTransitioning = false;
+      this._config = this._getConfig(config);
+      this._triggerArray = [];
+      const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
+
+      for (let i = 0, len = toggleList.length; i < len; i++) {
+        const elem = toggleList[i];
+        const selector = getSelectorFromElement(elem);
+        const filterElement = SelectorEngine.find(selector).filter(foundElem => foundElem === this._element);
+
+        if (selector !== null && filterElement.length) {
+          this._selector = selector;
+
+          this._triggerArray.push(elem);
+        }
+      }
+
+      this._initializeChildren();
+
+      if (!this._config.parent) {
+        this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
+      }
+
+      if (this._config.toggle) {
+        this.toggle();
+      }
+    } // Getters
+
+
+    static get Default() {
+      return Default$9;
+    }
+
+    static get NAME() {
+      return NAME$a;
+    } // Public
+
+
+    toggle() {
+      if (this._isShown()) {
+        this.hide();
+      } else {
+        this.show();
+      }
+    }
+
+    show() {
+      if (this._isTransitioning || this._isShown()) {
+        return;
+      }
+
+      let actives = [];
+      let activesData;
+
+      if (this._config.parent) {
+        const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent);
+        actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth
+      }
+
+      const container = SelectorEngine.findOne(this._selector);
+
+      if (actives.length) {
+        const tempActiveData = actives.find(elem => container !== elem);
+        activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null;
+
+        if (activesData && activesData._isTransitioning) {
+          return;
+        }
+      }
+
+      const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$5);
+
+      if (startEvent.defaultPrevented) {
+        return;
+      }
+
+      actives.forEach(elemActive => {
+        if (container !== elemActive) {
+          Collapse.getOrCreateInstance(elemActive, {
+            toggle: false
+          }).hide();
+        }
+
+        if (!activesData) {
+          Data.set(elemActive, DATA_KEY$9, null);
+        }
+      });
+
+      const dimension = this._getDimension();
+
+      this._element.classList.remove(CLASS_NAME_COLLAPSE);
+
+      this._element.classList.add(CLASS_NAME_COLLAPSING);
+
+      this._element.style[dimension] = 0;
+
+      this._addAriaAndCollapsedClass(this._triggerArray, true);
+
+      this._isTransitioning = true;
+
+      const complete = () => {
+        this._isTransitioning = false;
+
+        this._element.classList.remove(CLASS_NAME_COLLAPSING);
+
+        this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
+
+        this._element.style[dimension] = '';
+        EventHandler.trigger(this._element, EVENT_SHOWN$5);
+      };
+
+      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
+      const scrollSize = `scroll${capitalizedDimension}`;
+
+      this._queueCallback(complete, this._element, true);
+
+      this._element.style[dimension] = `${this._element[scrollSize]}px`;
+    }
+
+    hide() {
+      if (this._isTransitioning || !this._isShown()) {
+        return;
+      }
+
+      const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$5);
+
+      if (startEvent.defaultPrevented) {
+        return;
+      }
+
+      const dimension = this._getDimension();
+
+      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
+      reflow(this._element);
+
+      this._element.classList.add(CLASS_NAME_COLLAPSING);
+
+      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
+
+      const triggerArrayLength = this._triggerArray.length;
+
+      for (let i = 0; i < triggerArrayLength; i++) {
+        const trigger = this._triggerArray[i];
+        const elem = getElementFromSelector(trigger);
+
+        if (elem && !this._isShown(elem)) {
+          this._addAriaAndCollapsedClass([trigger], false);
+        }
+      }
+
+      this._isTransitioning = true;
+
+      const complete = () => {
+        this._isTransitioning = false;
+
+        this._element.classList.remove(CLASS_NAME_COLLAPSING);
+
+        this._element.classList.add(CLASS_NAME_COLLAPSE);
+
+        EventHandler.trigger(this._element, EVENT_HIDDEN$5);
+      };
+
+      this._element.style[dimension] = '';
+
+      this._queueCallback(complete, this._element, true);
+    }
+
+    _isShown(element = this._element) {
+      return element.classList.contains(CLASS_NAME_SHOW$7);
+    } // Private
+
+
+    _getConfig(config) {
+      config = { ...Default$9,
+        ...Manipulator.getDataAttributes(this._element),
+        ...config
+      };
+      config.toggle = Boolean(config.toggle); // Coerce string values
+
+      config.parent = getElement(config.parent);
+      typeCheckConfig(NAME$a, config, DefaultType$9);
+      return config;
+    }
+
+    _getDimension() {
+      return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
+    }
+
+    _initializeChildren() {
+      if (!this._config.parent) {
+        return;
+      }
+
+      const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent);
+      SelectorEngine.find(SELECTOR_DATA_TOGGLE$4, this._config.parent).filter(elem => !children.includes(elem)).forEach(element => {
+        const selected = getElementFromSelector(element);
+
+        if (selected) {
+          this._addAriaAndCollapsedClass([element], this._isShown(selected));
+        }
+      });
+    }
+
+    _addAriaAndCollapsedClass(triggerArray, isOpen) {
+      if (!triggerArray.length) {
+        return;
+      }
+
+      triggerArray.forEach(elem => {
+        if (isOpen) {
+          elem.classList.remove(CLASS_NAME_COLLAPSED);
+        } else {
+          elem.classList.add(CLASS_NAME_COLLAPSED);
+        }
+
+        elem.setAttribute('aria-expanded', isOpen);
+      });
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const _config = {};
+
+        if (typeof config === 'string' && /show|hide/.test(config)) {
+          _config.toggle = false;
+        }
+
+        const data = Collapse.getOrCreateInstance(this, _config);
+
+        if (typeof config === 'string') {
+          if (typeof data[config] === 'undefined') {
+            throw new TypeError(`No method named "${config}"`);
+          }
+
+          data[config]();
+        }
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {
+    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
+    if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
+      event.preventDefault();
+    }
+
+    const selector = getSelectorFromElement(this);
+    const selectorElements = SelectorEngine.find(selector);
+    selectorElements.forEach(element => {
+      Collapse.getOrCreateInstance(element, {
+        toggle: false
+      }).toggle();
+    });
+  });
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Collapse to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Collapse);
+
+  var top = 'top';
+  var bottom = 'bottom';
+  var right = 'right';
+  var left = 'left';
+  var auto = 'auto';
+  var basePlacements = [top, bottom, right, left];
+  var start = 'start';
+  var end = 'end';
+  var clippingParents = 'clippingParents';
+  var viewport = 'viewport';
+  var popper = 'popper';
+  var reference = 'reference';
+  var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {
+    return acc.concat([placement + "-" + start, placement + "-" + end]);
+  }, []);
+  var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {
+    return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
+  }, []); // modifiers that need to read the DOM
+
+  var beforeRead = 'beforeRead';
+  var read = 'read';
+  var afterRead = 'afterRead'; // pure-logic modifiers
+
+  var beforeMain = 'beforeMain';
+  var main = 'main';
+  var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)
+
+  var beforeWrite = 'beforeWrite';
+  var write = 'write';
+  var afterWrite = 'afterWrite';
+  var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
+
+  function getNodeName(element) {
+    return element ? (element.nodeName || '').toLowerCase() : null;
+  }
+
+  function getWindow(node) {
+    if (node == null) {
+      return window;
+    }
+
+    if (node.toString() !== '[object Window]') {
+      var ownerDocument = node.ownerDocument;
+      return ownerDocument ? ownerDocument.defaultView || window : window;
+    }
+
+    return node;
+  }
+
+  function isElement(node) {
+    var OwnElement = getWindow(node).Element;
+    return node instanceof OwnElement || node instanceof Element;
+  }
+
+  function isHTMLElement(node) {
+    var OwnElement = getWindow(node).HTMLElement;
+    return node instanceof OwnElement || node instanceof HTMLElement;
+  }
+
+  function isShadowRoot(node) {
+    // IE 11 has no ShadowRoot
+    if (typeof ShadowRoot === 'undefined') {
+      return false;
+    }
+
+    var OwnElement = getWindow(node).ShadowRoot;
+    return node instanceof OwnElement || node instanceof ShadowRoot;
+  }
+
+  // and applies them to the HTMLElements such as popper and arrow
+
+  function applyStyles(_ref) {
+    var state = _ref.state;
+    Object.keys(state.elements).forEach(function (name) {
+      var style = state.styles[name] || {};
+      var attributes = state.attributes[name] || {};
+      var element = state.elements[name]; // arrow is optional + virtual elements
+
+      if (!isHTMLElement(element) || !getNodeName(element)) {
+        return;
+      } // Flow doesn't support to extend this property, but it's the most
+      // effective way to apply styles to an HTMLElement
+      // $FlowFixMe[cannot-write]
+
+
+      Object.assign(element.style, style);
+      Object.keys(attributes).forEach(function (name) {
+        var value = attributes[name];
+
+        if (value === false) {
+          element.removeAttribute(name);
+        } else {
+          element.setAttribute(name, value === true ? '' : value);
+        }
+      });
+    });
+  }
+
+  function effect$2(_ref2) {
+    var state = _ref2.state;
+    var initialStyles = {
+      popper: {
+        position: state.options.strategy,
+        left: '0',
+        top: '0',
+        margin: '0'
+      },
+      arrow: {
+        position: 'absolute'
+      },
+      reference: {}
+    };
+    Object.assign(state.elements.popper.style, initialStyles.popper);
+    state.styles = initialStyles;
+
+    if (state.elements.arrow) {
+      Object.assign(state.elements.arrow.style, initialStyles.arrow);
+    }
+
+    return function () {
+      Object.keys(state.elements).forEach(function (name) {
+        var element = state.elements[name];
+        var attributes = state.attributes[name] || {};
+        var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them
+
+        var style = styleProperties.reduce(function (style, property) {
+          style[property] = '';
+          return style;
+        }, {}); // arrow is optional + virtual elements
+
+        if (!isHTMLElement(element) || !getNodeName(element)) {
+          return;
+        }
+
+        Object.assign(element.style, style);
+        Object.keys(attributes).forEach(function (attribute) {
+          element.removeAttribute(attribute);
+        });
+      });
+    };
+  } // eslint-disable-next-line import/no-unused-modules
+
+
+  var applyStyles$1 = {
+    name: 'applyStyles',
+    enabled: true,
+    phase: 'write',
+    fn: applyStyles,
+    effect: effect$2,
+    requires: ['computeStyles']
+  };
+
+  function getBasePlacement(placement) {
+    return placement.split('-')[0];
+  }
+
+  var round$1 = Math.round;
+  function getBoundingClientRect(element, includeScale) {
+    if (includeScale === void 0) {
+      includeScale = false;
+    }
+
+    var rect = element.getBoundingClientRect();
+    var scaleX = 1;
+    var scaleY = 1;
+
+    if (isHTMLElement(element) && includeScale) {
+      // Fallback to 1 in case both values are `0`
+      scaleX = rect.width / element.offsetWidth || 1;
+      scaleY = rect.height / element.offsetHeight || 1;
+    }
+
+    return {
+      width: round$1(rect.width / scaleX),
+      height: round$1(rect.height / scaleY),
+      top: round$1(rect.top / scaleY),
+      right: round$1(rect.right / scaleX),
+      bottom: round$1(rect.bottom / scaleY),
+      left: round$1(rect.left / scaleX),
+      x: round$1(rect.left / scaleX),
+      y: round$1(rect.top / scaleY)
+    };
+  }
+
+  // means it doesn't take into account transforms.
+
+  function getLayoutRect(element) {
+    var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.
+    // Fixes https://github.com/popperjs/popper-core/issues/1223
+
+    var width = element.offsetWidth;
+    var height = element.offsetHeight;
+
+    if (Math.abs(clientRect.width - width) <= 1) {
+      width = clientRect.width;
+    }
+
+    if (Math.abs(clientRect.height - height) <= 1) {
+      height = clientRect.height;
+    }
+
+    return {
+      x: element.offsetLeft,
+      y: element.offsetTop,
+      width: width,
+      height: height
+    };
+  }
+
+  function contains(parent, child) {
+    var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method
+
+    if (parent.contains(child)) {
+      return true;
+    } // then fallback to custom implementation with Shadow DOM support
+    else if (rootNode && isShadowRoot(rootNode)) {
+        var next = child;
+
+        do {
+          if (next && parent.isSameNode(next)) {
+            return true;
+          } // $FlowFixMe[prop-missing]: need a better way to handle this...
+
+
+          next = next.parentNode || next.host;
+        } while (next);
+      } // Give up, the result is false
+
+
+    return false;
+  }
+
+  function getComputedStyle$1(element) {
+    return getWindow(element).getComputedStyle(element);
+  }
+
+  function isTableElement(element) {
+    return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;
+  }
+
+  function getDocumentElement(element) {
+    // $FlowFixMe[incompatible-return]: assume body is always available
+    return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]
+    element.document) || window.document).documentElement;
+  }
+
+  function getParentNode(element) {
+    if (getNodeName(element) === 'html') {
+      return element;
+    }
+
+    return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle
+      // $FlowFixMe[incompatible-return]
+      // $FlowFixMe[prop-missing]
+      element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
+      element.parentNode || ( // DOM Element detected
+      isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
+      // $FlowFixMe[incompatible-call]: HTMLElement is a Node
+      getDocumentElement(element) // fallback
+
+    );
+  }
+
+  function getTrueOffsetParent(element) {
+    if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
+    getComputedStyle$1(element).position === 'fixed') {
+      return null;
+    }
+
+    return element.offsetParent;
+  } // `.offsetParent` reports `null` for fixed elements, while absolute elements
+  // return the containing block
+
+
+  function getContainingBlock(element) {
+    var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;
+    var isIE = navigator.userAgent.indexOf('Trident') !== -1;
+
+    if (isIE && isHTMLElement(element)) {
+      // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport
+      var elementCss = getComputedStyle$1(element);
+
+      if (elementCss.position === 'fixed') {
+        return null;
+      }
+    }
+
+    var currentNode = getParentNode(element);
+
+    while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
+      var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that
+      // create a containing block.
+      // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
+
+      if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {
+        return currentNode;
+      } else {
+        currentNode = currentNode.parentNode;
+      }
+    }
+
+    return null;
+  } // Gets the closest ancestor positioned element. Handles some edge cases,
+  // such as table ancestors and cross browser bugs.
+
+
+  function getOffsetParent(element) {
+    var window = getWindow(element);
+    var offsetParent = getTrueOffsetParent(element);
+
+    while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {
+      offsetParent = getTrueOffsetParent(offsetParent);
+    }
+
+    if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) {
+      return window;
+    }
+
+    return offsetParent || getContainingBlock(element) || window;
+  }
+
+  function getMainAxisFromPlacement(placement) {
+    return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
+  }
+
+  var max = Math.max;
+  var min = Math.min;
+  var round = Math.round;
+
+  function within(min$1, value, max$1) {
+    return max(min$1, min(value, max$1));
+  }
+
+  function getFreshSideObject() {
+    return {
+      top: 0,
+      right: 0,
+      bottom: 0,
+      left: 0
+    };
+  }
+
+  function mergePaddingObject(paddingObject) {
+    return Object.assign({}, getFreshSideObject(), paddingObject);
+  }
+
+  function expandToHashMap(value, keys) {
+    return keys.reduce(function (hashMap, key) {
+      hashMap[key] = value;
+      return hashMap;
+    }, {});
+  }
+
+  var toPaddingObject = function toPaddingObject(padding, state) {
+    padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {
+      placement: state.placement
+    })) : padding;
+    return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
+  };
+
+  function arrow(_ref) {
+    var _state$modifiersData$;
+
+    var state = _ref.state,
+        name = _ref.name,
+        options = _ref.options;
+    var arrowElement = state.elements.arrow;
+    var popperOffsets = state.modifiersData.popperOffsets;
+    var basePlacement = getBasePlacement(state.placement);
+    var axis = getMainAxisFromPlacement(basePlacement);
+    var isVertical = [left, right].indexOf(basePlacement) >= 0;
+    var len = isVertical ? 'height' : 'width';
+
+    if (!arrowElement || !popperOffsets) {
+      return;
+    }
+
+    var paddingObject = toPaddingObject(options.padding, state);
+    var arrowRect = getLayoutRect(arrowElement);
+    var minProp = axis === 'y' ? top : left;
+    var maxProp = axis === 'y' ? bottom : right;
+    var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
+    var startDiff = popperOffsets[axis] - state.rects.reference[axis];
+    var arrowOffsetParent = getOffsetParent(arrowElement);
+    var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
+    var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is
+    // outside of the popper bounds
+
+    var min = paddingObject[minProp];
+    var max = clientSize - arrowRect[len] - paddingObject[maxProp];
+    var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
+    var offset = within(min, center, max); // Prevents breaking syntax highlighting...
+
+    var axisProp = axis;
+    state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
+  }
+
+  function effect$1(_ref2) {
+    var state = _ref2.state,
+        options = _ref2.options;
+    var _options$element = options.element,
+        arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;
+
+    if (arrowElement == null) {
+      return;
+    } // CSS selector
+
+
+    if (typeof arrowElement === 'string') {
+      arrowElement = state.elements.popper.querySelector(arrowElement);
+
+      if (!arrowElement) {
+        return;
+      }
+    }
+
+    if (!contains(state.elements.popper, arrowElement)) {
+
+      return;
+    }
+
+    state.elements.arrow = arrowElement;
+  } // eslint-disable-next-line import/no-unused-modules
+
+
+  var arrow$1 = {
+    name: 'arrow',
+    enabled: true,
+    phase: 'main',
+    fn: arrow,
+    effect: effect$1,
+    requires: ['popperOffsets'],
+    requiresIfExists: ['preventOverflow']
+  };
+
+  var unsetSides = {
+    top: 'auto',
+    right: 'auto',
+    bottom: 'auto',
+    left: 'auto'
+  }; // Round the offsets to the nearest suitable subpixel based on the DPR.
+  // Zooming can change the DPR, but it seems to report a value that will
+  // cleanly divide the values into the appropriate subpixels.
+
+  function roundOffsetsByDPR(_ref) {
+    var x = _ref.x,
+        y = _ref.y;
+    var win = window;
+    var dpr = win.devicePixelRatio || 1;
+    return {
+      x: round(round(x * dpr) / dpr) || 0,
+      y: round(round(y * dpr) / dpr) || 0
+    };
+  }
+
+  function mapToStyles(_ref2) {
+    var _Object$assign2;
+
+    var popper = _ref2.popper,
+        popperRect = _ref2.popperRect,
+        placement = _ref2.placement,
+        offsets = _ref2.offsets,
+        position = _ref2.position,
+        gpuAcceleration = _ref2.gpuAcceleration,
+        adaptive = _ref2.adaptive,
+        roundOffsets = _ref2.roundOffsets;
+
+    var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,
+        _ref3$x = _ref3.x,
+        x = _ref3$x === void 0 ? 0 : _ref3$x,
+        _ref3$y = _ref3.y,
+        y = _ref3$y === void 0 ? 0 : _ref3$y;
+
+    var hasX = offsets.hasOwnProperty('x');
+    var hasY = offsets.hasOwnProperty('y');
+    var sideX = left;
+    var sideY = top;
+    var win = window;
+
+    if (adaptive) {
+      var offsetParent = getOffsetParent(popper);
+      var heightProp = 'clientHeight';
+      var widthProp = 'clientWidth';
+
+      if (offsetParent === getWindow(popper)) {
+        offsetParent = getDocumentElement(popper);
+
+        if (getComputedStyle$1(offsetParent).position !== 'static') {
+          heightProp = 'scrollHeight';
+          widthProp = 'scrollWidth';
+        }
+      } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it
+
+
+      offsetParent = offsetParent;
+
+      if (placement === top) {
+        sideY = bottom; // $FlowFixMe[prop-missing]
+
+        y -= offsetParent[heightProp] - popperRect.height;
+        y *= gpuAcceleration ? 1 : -1;
+      }
+
+      if (placement === left) {
+        sideX = right; // $FlowFixMe[prop-missing]
+
+        x -= offsetParent[widthProp] - popperRect.width;
+        x *= gpuAcceleration ? 1 : -1;
+      }
+    }
+
+    var commonStyles = Object.assign({
+      position: position
+    }, adaptive && unsetSides);
+
+    if (gpuAcceleration) {
+      var _Object$assign;
+
+      return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
+    }
+
+    return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
+  }
+
+  function computeStyles(_ref4) {
+    var state = _ref4.state,
+        options = _ref4.options;
+    var _options$gpuAccelerat = options.gpuAcceleration,
+        gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
+        _options$adaptive = options.adaptive,
+        adaptive = _options$adaptive === void 0 ? true : _options$adaptive,
+        _options$roundOffsets = options.roundOffsets,
+        roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
+
+    var commonStyles = {
+      placement: getBasePlacement(state.placement),
+      popper: state.elements.popper,
+      popperRect: state.rects.popper,
+      gpuAcceleration: gpuAcceleration
+    };
+
+    if (state.modifiersData.popperOffsets != null) {
+      state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
+        offsets: state.modifiersData.popperOffsets,
+        position: state.options.strategy,
+        adaptive: adaptive,
+        roundOffsets: roundOffsets
+      })));
+    }
+
+    if (state.modifiersData.arrow != null) {
+      state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
+        offsets: state.modifiersData.arrow,
+        position: 'absolute',
+        adaptive: false,
+        roundOffsets: roundOffsets
+      })));
+    }
+
+    state.attributes.popper = Object.assign({}, state.attributes.popper, {
+      'data-popper-placement': state.placement
+    });
+  } // eslint-disable-next-line import/no-unused-modules
+
+
+  var computeStyles$1 = {
+    name: 'computeStyles',
+    enabled: true,
+    phase: 'beforeWrite',
+    fn: computeStyles,
+    data: {}
+  };
+
+  var passive = {
+    passive: true
+  };
+
+  function effect(_ref) {
+    var state = _ref.state,
+        instance = _ref.instance,
+        options = _ref.options;
+    var _options$scroll = options.scroll,
+        scroll = _options$scroll === void 0 ? true : _options$scroll,
+        _options$resize = options.resize,
+        resize = _options$resize === void 0 ? true : _options$resize;
+    var window = getWindow(state.elements.popper);
+    var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
+
+    if (scroll) {
+      scrollParents.forEach(function (scrollParent) {
+        scrollParent.addEventListener('scroll', instance.update, passive);
+      });
+    }
+
+    if (resize) {
+      window.addEventListener('resize', instance.update, passive);
+    }
+
+    return function () {
+      if (scroll) {
+        scrollParents.forEach(function (scrollParent) {
+          scrollParent.removeEventListener('scroll', instance.update, passive);
+        });
+      }
+
+      if (resize) {
+        window.removeEventListener('resize', instance.update, passive);
+      }
+    };
+  } // eslint-disable-next-line import/no-unused-modules
+
+
+  var eventListeners = {
+    name: 'eventListeners',
+    enabled: true,
+    phase: 'write',
+    fn: function fn() {},
+    effect: effect,
+    data: {}
+  };
+
+  var hash$1 = {
+    left: 'right',
+    right: 'left',
+    bottom: 'top',
+    top: 'bottom'
+  };
+  function getOppositePlacement(placement) {
+    return placement.replace(/left|right|bottom|top/g, function (matched) {
+      return hash$1[matched];
+    });
+  }
+
+  var hash = {
+    start: 'end',
+    end: 'start'
+  };
+  function getOppositeVariationPlacement(placement) {
+    return placement.replace(/start|end/g, function (matched) {
+      return hash[matched];
+    });
+  }
+
+  function getWindowScroll(node) {
+    var win = getWindow(node);
+    var scrollLeft = win.pageXOffset;
+    var scrollTop = win.pageYOffset;
+    return {
+      scrollLeft: scrollLeft,
+      scrollTop: scrollTop
+    };
+  }
+
+  function getWindowScrollBarX(element) {
+    // If <html> has a CSS width greater than the viewport, then this will be
+    // incorrect for RTL.
+    // Popper 1 is broken in this case and never had a bug report so let's assume
+    // it's not an issue. I don't think anyone ever specifies width on <html>
+    // anyway.
+    // Browsers where the left scrollbar doesn't cause an issue report `0` for
+    // this (e.g. Edge 2019, IE11, Safari)
+    return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
+  }
+
+  function getViewportRect(element) {
+    var win = getWindow(element);
+    var html = getDocumentElement(element);
+    var visualViewport = win.visualViewport;
+    var width = html.clientWidth;
+    var height = html.clientHeight;
+    var x = 0;
+    var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper
+    // can be obscured underneath it.
+    // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even
+    // if it isn't open, so if this isn't available, the popper will be detected
+    // to overflow the bottom of the screen too early.
+
+    if (visualViewport) {
+      width = visualViewport.width;
+      height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)
+      // In Chrome, it returns a value very close to 0 (+/-) but contains rounding
+      // errors due to floating point numbers, so we need to check precision.
+      // Safari returns a number <= 0, usually < -1 when pinch-zoomed
+      // Feature detection fails in mobile emulation mode in Chrome.
+      // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <
+      // 0.001
+      // Fallback here: "Not Safari" userAgent
+
+      if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
+        x = visualViewport.offsetLeft;
+        y = visualViewport.offsetTop;
+      }
+    }
+
+    return {
+      width: width,
+      height: height,
+      x: x + getWindowScrollBarX(element),
+      y: y
+    };
+  }
+
+  // of the `<html>` and `<body>` rect bounds if horizontally scrollable
+
+  function getDocumentRect(element) {
+    var _element$ownerDocumen;
+
+    var html = getDocumentElement(element);
+    var winScroll = getWindowScroll(element);
+    var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
+    var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
+    var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
+    var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
+    var y = -winScroll.scrollTop;
+
+    if (getComputedStyle$1(body || html).direction === 'rtl') {
+      x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
+    }
+
+    return {
+      width: width,
+      height: height,
+      x: x,
+      y: y
+    };
+  }
+
+  function isScrollParent(element) {
+    // Firefox wants us to check `-x` and `-y` variations as well
+    var _getComputedStyle = getComputedStyle$1(element),
+        overflow = _getComputedStyle.overflow,
+        overflowX = _getComputedStyle.overflowX,
+        overflowY = _getComputedStyle.overflowY;
+
+    return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
+  }
+
+  function getScrollParent(node) {
+    if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
+      // $FlowFixMe[incompatible-return]: assume body is always available
+      return node.ownerDocument.body;
+    }
+
+    if (isHTMLElement(node) && isScrollParent(node)) {
+      return node;
+    }
+
+    return getScrollParent(getParentNode(node));
+  }
+
+  /*
+  given a DOM element, return the list of all scroll parents, up the list of ancesors
+  until we get to the top window object. This list is what we attach scroll listeners
+  to, because if any of these parent elements scroll, we'll need to re-calculate the
+  reference element's position.
+  */
+
+  function listScrollParents(element, list) {
+    var _element$ownerDocumen;
+
+    if (list === void 0) {
+      list = [];
+    }
+
+    var scrollParent = getScrollParent(element);
+    var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
+    var win = getWindow(scrollParent);
+    var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
+    var updatedList = list.concat(target);
+    return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
+    updatedList.concat(listScrollParents(getParentNode(target)));
+  }
+
+  function rectToClientRect(rect) {
+    return Object.assign({}, rect, {
+      left: rect.x,
+      top: rect.y,
+      right: rect.x + rect.width,
+      bottom: rect.y + rect.height
+    });
+  }
+
+  function getInnerBoundingClientRect(element) {
+    var rect = getBoundingClientRect(element);
+    rect.top = rect.top + element.clientTop;
+    rect.left = rect.left + element.clientLeft;
+    rect.bottom = rect.top + element.clientHeight;
+    rect.right = rect.left + element.clientWidth;
+    rect.width = element.clientWidth;
+    rect.height = element.clientHeight;
+    rect.x = rect.left;
+    rect.y = rect.top;
+    return rect;
+  }
+
+  function getClientRectFromMixedType(element, clippingParent) {
+    return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
+  } // A "clipping parent" is an overflowable container with the characteristic of
+  // clipping (or hiding) overflowing elements with a position different from
+  // `initial`
+
+
+  function getClippingParents(element) {
+    var clippingParents = listScrollParents(getParentNode(element));
+    var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0;
+    var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
+
+    if (!isElement(clipperElement)) {
+      return [];
+    } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414
+
+
+    return clippingParents.filter(function (clippingParent) {
+      return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
+    });
+  } // Gets the maximum area that the element is visible in due to any number of
+  // clipping parents
+
+
+  function getClippingRect(element, boundary, rootBoundary) {
+    var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
+    var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
+    var firstClippingParent = clippingParents[0];
+    var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
+      var rect = getClientRectFromMixedType(element, clippingParent);
+      accRect.top = max(rect.top, accRect.top);
+      accRect.right = min(rect.right, accRect.right);
+      accRect.bottom = min(rect.bottom, accRect.bottom);
+      accRect.left = max(rect.left, accRect.left);
+      return accRect;
+    }, getClientRectFromMixedType(element, firstClippingParent));
+    clippingRect.width = clippingRect.right - clippingRect.left;
+    clippingRect.height = clippingRect.bottom - clippingRect.top;
+    clippingRect.x = clippingRect.left;
+    clippingRect.y = clippingRect.top;
+    return clippingRect;
+  }
+
+  function getVariation(placement) {
+    return placement.split('-')[1];
+  }
+
+  function computeOffsets(_ref) {
+    var reference = _ref.reference,
+        element = _ref.element,
+        placement = _ref.placement;
+    var basePlacement = placement ? getBasePlacement(placement) : null;
+    var variation = placement ? getVariation(placement) : null;
+    var commonX = reference.x + reference.width / 2 - element.width / 2;
+    var commonY = reference.y + reference.height / 2 - element.height / 2;
+    var offsets;
+
+    switch (basePlacement) {
+      case top:
+        offsets = {
+          x: commonX,
+          y: reference.y - element.height
+        };
+        break;
+
+      case bottom:
+        offsets = {
+          x: commonX,
+          y: reference.y + reference.height
+        };
+        break;
+
+      case right:
+        offsets = {
+          x: reference.x + reference.width,
+          y: commonY
+        };
+        break;
+
+      case left:
+        offsets = {
+          x: reference.x - element.width,
+          y: commonY
+        };
+        break;
+
+      default:
+        offsets = {
+          x: reference.x,
+          y: reference.y
+        };
+    }
+
+    var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
+
+    if (mainAxis != null) {
+      var len = mainAxis === 'y' ? 'height' : 'width';
+
+      switch (variation) {
+        case start:
+          offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
+          break;
+
+        case end:
+          offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
+          break;
+      }
+    }
+
+    return offsets;
+  }
+
+  function detectOverflow(state, options) {
+    if (options === void 0) {
+      options = {};
+    }
+
+    var _options = options,
+        _options$placement = _options.placement,
+        placement = _options$placement === void 0 ? state.placement : _options$placement,
+        _options$boundary = _options.boundary,
+        boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
+        _options$rootBoundary = _options.rootBoundary,
+        rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
+        _options$elementConte = _options.elementContext,
+        elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
+        _options$altBoundary = _options.altBoundary,
+        altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
+        _options$padding = _options.padding,
+        padding = _options$padding === void 0 ? 0 : _options$padding;
+    var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
+    var altContext = elementContext === popper ? reference : popper;
+    var referenceElement = state.elements.reference;
+    var popperRect = state.rects.popper;
+    var element = state.elements[altBoundary ? altContext : elementContext];
+    var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
+    var referenceClientRect = getBoundingClientRect(referenceElement);
+    var popperOffsets = computeOffsets({
+      reference: referenceClientRect,
+      element: popperRect,
+      strategy: 'absolute',
+      placement: placement
+    });
+    var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));
+    var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
+    // 0 or negative = within the clipping rect
+
+    var overflowOffsets = {
+      top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
+      bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
+      left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
+      right: elementClientRect.right - clippingClientRect.right + paddingObject.right
+    };
+    var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
+
+    if (elementContext === popper && offsetData) {
+      var offset = offsetData[placement];
+      Object.keys(overflowOffsets).forEach(function (key) {
+        var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
+        var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
+        overflowOffsets[key] += offset[axis] * multiply;
+      });
+    }
+
+    return overflowOffsets;
+  }
+
+  function computeAutoPlacement(state, options) {
+    if (options === void 0) {
+      options = {};
+    }
+
+    var _options = options,
+        placement = _options.placement,
+        boundary = _options.boundary,
+        rootBoundary = _options.rootBoundary,
+        padding = _options.padding,
+        flipVariations = _options.flipVariations,
+        _options$allowedAutoP = _options.allowedAutoPlacements,
+        allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
+    var variation = getVariation(placement);
+    var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
+      return getVariation(placement) === variation;
+    }) : basePlacements;
+    var allowedPlacements = placements$1.filter(function (placement) {
+      return allowedAutoPlacements.indexOf(placement) >= 0;
+    });
+
+    if (allowedPlacements.length === 0) {
+      allowedPlacements = placements$1;
+    } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...
+
+
+    var overflows = allowedPlacements.reduce(function (acc, placement) {
+      acc[placement] = detectOverflow(state, {
+        placement: placement,
+        boundary: boundary,
+        rootBoundary: rootBoundary,
+        padding: padding
+      })[getBasePlacement(placement)];
+      return acc;
+    }, {});
+    return Object.keys(overflows).sort(function (a, b) {
+      return overflows[a] - overflows[b];
+    });
+  }
+
+  function getExpandedFallbackPlacements(placement) {
+    if (getBasePlacement(placement) === auto) {
+      return [];
+    }
+
+    var oppositePlacement = getOppositePlacement(placement);
+    return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
+  }
+
+  function flip(_ref) {
+    var state = _ref.state,
+        options = _ref.options,
+        name = _ref.name;
+
+    if (state.modifiersData[name]._skip) {
+      return;
+    }
+
+    var _options$mainAxis = options.mainAxis,
+        checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
+        _options$altAxis = options.altAxis,
+        checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
+        specifiedFallbackPlacements = options.fallbackPlacements,
+        padding = options.padding,
+        boundary = options.boundary,
+        rootBoundary = options.rootBoundary,
+        altBoundary = options.altBoundary,
+        _options$flipVariatio = options.flipVariations,
+        flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,
+        allowedAutoPlacements = options.allowedAutoPlacements;
+    var preferredPlacement = state.options.placement;
+    var basePlacement = getBasePlacement(preferredPlacement);
+    var isBasePlacement = basePlacement === preferredPlacement;
+    var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
+    var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {
+      return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {
+        placement: placement,
+        boundary: boundary,
+        rootBoundary: rootBoundary,
+        padding: padding,
+        flipVariations: flipVariations,
+        allowedAutoPlacements: allowedAutoPlacements
+      }) : placement);
+    }, []);
+    var referenceRect = state.rects.reference;
+    var popperRect = state.rects.popper;
+    var checksMap = new Map();
+    var makeFallbackChecks = true;
+    var firstFittingPlacement = placements[0];
+
+    for (var i = 0; i < placements.length; i++) {
+      var placement = placements[i];
+
+      var _basePlacement = getBasePlacement(placement);
+
+      var isStartVariation = getVariation(placement) === start;
+      var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
+      var len = isVertical ? 'width' : 'height';
+      var overflow = detectOverflow(state, {
+        placement: placement,
+        boundary: boundary,
+        rootBoundary: rootBoundary,
+        altBoundary: altBoundary,
+        padding: padding
+      });
+      var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
+
+      if (referenceRect[len] > popperRect[len]) {
+        mainVariationSide = getOppositePlacement(mainVariationSide);
+      }
+
+      var altVariationSide = getOppositePlacement(mainVariationSide);
+      var checks = [];
+
+      if (checkMainAxis) {
+        checks.push(overflow[_basePlacement] <= 0);
+      }
+
+      if (checkAltAxis) {
+        checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
+      }
+
+      if (checks.every(function (check) {
+        return check;
+      })) {
+        firstFittingPlacement = placement;
+        makeFallbackChecks = false;
+        break;
+      }
+
+      checksMap.set(placement, checks);
+    }
+
+    if (makeFallbackChecks) {
+      // `2` may be desired in some cases 鈥� research later
+      var numberOfChecks = flipVariations ? 3 : 1;
+
+      var _loop = function _loop(_i) {
+        var fittingPlacement = placements.find(function (placement) {
+          var checks = checksMap.get(placement);
+
+          if (checks) {
+            return checks.slice(0, _i).every(function (check) {
+              return check;
+            });
+          }
+        });
+
+        if (fittingPlacement) {
+          firstFittingPlacement = fittingPlacement;
+          return "break";
+        }
+      };
+
+      for (var _i = numberOfChecks; _i > 0; _i--) {
+        var _ret = _loop(_i);
+
+        if (_ret === "break") break;
+      }
+    }
+
+    if (state.placement !== firstFittingPlacement) {
+      state.modifiersData[name]._skip = true;
+      state.placement = firstFittingPlacement;
+      state.reset = true;
+    }
+  } // eslint-disable-next-line import/no-unused-modules
+
+
+  var flip$1 = {
+    name: 'flip',
+    enabled: true,
+    phase: 'main',
+    fn: flip,
+    requiresIfExists: ['offset'],
+    data: {
+      _skip: false
+    }
+  };
+
+  function getSideOffsets(overflow, rect, preventedOffsets) {
+    if (preventedOffsets === void 0) {
+      preventedOffsets = {
+        x: 0,
+        y: 0
+      };
+    }
+
+    return {
+      top: overflow.top - rect.height - preventedOffsets.y,
+      right: overflow.right - rect.width + preventedOffsets.x,
+      bottom: overflow.bottom - rect.height + preventedOffsets.y,
+      left: overflow.left - rect.width - preventedOffsets.x
+    };
+  }
+
+  function isAnySideFullyClipped(overflow) {
+    return [top, right, bottom, left].some(function (side) {
+      return overflow[side] >= 0;
+    });
+  }
+
+  function hide(_ref) {
+    var state = _ref.state,
+        name = _ref.name;
+    var referenceRect = state.rects.reference;
+    var popperRect = state.rects.popper;
+    var preventedOffsets = state.modifiersData.preventOverflow;
+    var referenceOverflow = detectOverflow(state, {
+      elementContext: 'reference'
+    });
+    var popperAltOverflow = detectOverflow(state, {
+      altBoundary: true
+    });
+    var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
+    var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
+    var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
+    var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
+    state.modifiersData[name] = {
+      referenceClippingOffsets: referenceClippingOffsets,
+      popperEscapeOffsets: popperEscapeOffsets,
+      isReferenceHidden: isReferenceHidden,
+      hasPopperEscaped: hasPopperEscaped
+    };
+    state.attributes.popper = Object.assign({}, state.attributes.popper, {
+      'data-popper-reference-hidden': isReferenceHidden,
+      'data-popper-escaped': hasPopperEscaped
+    });
+  } // eslint-disable-next-line import/no-unused-modules
+
+
+  var hide$1 = {
+    name: 'hide',
+    enabled: true,
+    phase: 'main',
+    requiresIfExists: ['preventOverflow'],
+    fn: hide
+  };
+
+  function distanceAndSkiddingToXY(placement, rects, offset) {
+    var basePlacement = getBasePlacement(placement);
+    var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
+
+    var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
+      placement: placement
+    })) : offset,
+        skidding = _ref[0],
+        distance = _ref[1];
+
+    skidding = skidding || 0;
+    distance = (distance || 0) * invertDistance;
+    return [left, right].indexOf(basePlacement) >= 0 ? {
+      x: distance,
+      y: skidding
+    } : {
+      x: skidding,
+      y: distance
+    };
+  }
+
+  function offset(_ref2) {
+    var state = _ref2.state,
+        options = _ref2.options,
+        name = _ref2.name;
+    var _options$offset = options.offset,
+        offset = _options$offset === void 0 ? [0, 0] : _options$offset;
+    var data = placements.reduce(function (acc, placement) {
+      acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
+      return acc;
+    }, {});
+    var _data$state$placement = data[state.placement],
+        x = _data$state$placement.x,
+        y = _data$state$placement.y;
+
+    if (state.modifiersData.popperOffsets != null) {
+      state.modifiersData.popperOffsets.x += x;
+      state.modifiersData.popperOffsets.y += y;
+    }
+
+    state.modifiersData[name] = data;
+  } // eslint-disable-next-line import/no-unused-modules
+
+
+  var offset$1 = {
+    name: 'offset',
+    enabled: true,
+    phase: 'main',
+    requires: ['popperOffsets'],
+    fn: offset
+  };
+
+  function popperOffsets(_ref) {
+    var state = _ref.state,
+        name = _ref.name;
+    // Offsets are the actual position the popper needs to have to be
+    // properly positioned near its reference element
+    // This is the most basic placement, and will be adjusted by
+    // the modifiers in the next step
+    state.modifiersData[name] = computeOffsets({
+      reference: state.rects.reference,
+      element: state.rects.popper,
+      strategy: 'absolute',
+      placement: state.placement
+    });
+  } // eslint-disable-next-line import/no-unused-modules
+
+
+  var popperOffsets$1 = {
+    name: 'popperOffsets',
+    enabled: true,
+    phase: 'read',
+    fn: popperOffsets,
+    data: {}
+  };
+
+  function getAltAxis(axis) {
+    return axis === 'x' ? 'y' : 'x';
+  }
+
+  function preventOverflow(_ref) {
+    var state = _ref.state,
+        options = _ref.options,
+        name = _ref.name;
+    var _options$mainAxis = options.mainAxis,
+        checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
+        _options$altAxis = options.altAxis,
+        checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,
+        boundary = options.boundary,
+        rootBoundary = options.rootBoundary,
+        altBoundary = options.altBoundary,
+        padding = options.padding,
+        _options$tether = options.tether,
+        tether = _options$tether === void 0 ? true : _options$tether,
+        _options$tetherOffset = options.tetherOffset,
+        tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
+    var overflow = detectOverflow(state, {
+      boundary: boundary,
+      rootBoundary: rootBoundary,
+      padding: padding,
+      altBoundary: altBoundary
+    });
+    var basePlacement = getBasePlacement(state.placement);
+    var variation = getVariation(state.placement);
+    var isBasePlacement = !variation;
+    var mainAxis = getMainAxisFromPlacement(basePlacement);
+    var altAxis = getAltAxis(mainAxis);
+    var popperOffsets = state.modifiersData.popperOffsets;
+    var referenceRect = state.rects.reference;
+    var popperRect = state.rects.popper;
+    var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
+      placement: state.placement
+    })) : tetherOffset;
+    var data = {
+      x: 0,
+      y: 0
+    };
+
+    if (!popperOffsets) {
+      return;
+    }
+
+    if (checkMainAxis || checkAltAxis) {
+      var mainSide = mainAxis === 'y' ? top : left;
+      var altSide = mainAxis === 'y' ? bottom : right;
+      var len = mainAxis === 'y' ? 'height' : 'width';
+      var offset = popperOffsets[mainAxis];
+      var min$1 = popperOffsets[mainAxis] + overflow[mainSide];
+      var max$1 = popperOffsets[mainAxis] - overflow[altSide];
+      var additive = tether ? -popperRect[len] / 2 : 0;
+      var minLen = variation === start ? referenceRect[len] : popperRect[len];
+      var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go
+      // outside the reference bounds
+
+      var arrowElement = state.elements.arrow;
+      var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
+        width: 0,
+        height: 0
+      };
+      var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();
+      var arrowPaddingMin = arrowPaddingObject[mainSide];
+      var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want
+      // to include its full size in the calculation. If the reference is small
+      // and near the edge of a boundary, the popper can overflow even if the
+      // reference is not overflowing as well (e.g. virtual elements with no
+      // width or height)
+
+      var arrowLen = within(0, referenceRect[len], arrowRect[len]);
+      var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;
+      var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;
+      var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
+      var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
+      var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;
+      var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;
+      var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;
+
+      if (checkMainAxis) {
+        var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);
+        popperOffsets[mainAxis] = preventedOffset;
+        data[mainAxis] = preventedOffset - offset;
+      }
+
+      if (checkAltAxis) {
+        var _mainSide = mainAxis === 'x' ? top : left;
+
+        var _altSide = mainAxis === 'x' ? bottom : right;
+
+        var _offset = popperOffsets[altAxis];
+
+        var _min = _offset + overflow[_mainSide];
+
+        var _max = _offset - overflow[_altSide];
+
+        var _preventedOffset = within(tether ? min(_min, tetherMin) : _min, _offset, tether ? max(_max, tetherMax) : _max);
+
+        popperOffsets[altAxis] = _preventedOffset;
+        data[altAxis] = _preventedOffset - _offset;
+      }
+    }
+
+    state.modifiersData[name] = data;
+  } // eslint-disable-next-line import/no-unused-modules
+
+
+  var preventOverflow$1 = {
+    name: 'preventOverflow',
+    enabled: true,
+    phase: 'main',
+    fn: preventOverflow,
+    requiresIfExists: ['offset']
+  };
+
+  function getHTMLElementScroll(element) {
+    return {
+      scrollLeft: element.scrollLeft,
+      scrollTop: element.scrollTop
+    };
+  }
+
+  function getNodeScroll(node) {
+    if (node === getWindow(node) || !isHTMLElement(node)) {
+      return getWindowScroll(node);
+    } else {
+      return getHTMLElementScroll(node);
+    }
+  }
+
+  function isElementScaled(element) {
+    var rect = element.getBoundingClientRect();
+    var scaleX = rect.width / element.offsetWidth || 1;
+    var scaleY = rect.height / element.offsetHeight || 1;
+    return scaleX !== 1 || scaleY !== 1;
+  } // Returns the composite rect of an element relative to its offsetParent.
+  // Composite means it takes into account transforms as well as layout.
+
+
+  function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
+    if (isFixed === void 0) {
+      isFixed = false;
+    }
+
+    var isOffsetParentAnElement = isHTMLElement(offsetParent);
+    var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
+    var documentElement = getDocumentElement(offsetParent);
+    var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);
+    var scroll = {
+      scrollLeft: 0,
+      scrollTop: 0
+    };
+    var offsets = {
+      x: 0,
+      y: 0
+    };
+
+    if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
+      if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
+      isScrollParent(documentElement)) {
+        scroll = getNodeScroll(offsetParent);
+      }
+
+      if (isHTMLElement(offsetParent)) {
+        offsets = getBoundingClientRect(offsetParent, true);
+        offsets.x += offsetParent.clientLeft;
+        offsets.y += offsetParent.clientTop;
+      } else if (documentElement) {
+        offsets.x = getWindowScrollBarX(documentElement);
+      }
+    }
+
+    return {
+      x: rect.left + scroll.scrollLeft - offsets.x,
+      y: rect.top + scroll.scrollTop - offsets.y,
+      width: rect.width,
+      height: rect.height
+    };
+  }
+
+  function order(modifiers) {
+    var map = new Map();
+    var visited = new Set();
+    var result = [];
+    modifiers.forEach(function (modifier) {
+      map.set(modifier.name, modifier);
+    }); // On visiting object, check for its dependencies and visit them recursively
+
+    function sort(modifier) {
+      visited.add(modifier.name);
+      var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
+      requires.forEach(function (dep) {
+        if (!visited.has(dep)) {
+          var depModifier = map.get(dep);
+
+          if (depModifier) {
+            sort(depModifier);
+          }
+        }
+      });
+      result.push(modifier);
+    }
+
+    modifiers.forEach(function (modifier) {
+      if (!visited.has(modifier.name)) {
+        // check for visited object
+        sort(modifier);
+      }
+    });
+    return result;
+  }
+
+  function orderModifiers(modifiers) {
+    // order based on dependencies
+    var orderedModifiers = order(modifiers); // order based on phase
+
+    return modifierPhases.reduce(function (acc, phase) {
+      return acc.concat(orderedModifiers.filter(function (modifier) {
+        return modifier.phase === phase;
+      }));
+    }, []);
+  }
+
+  function debounce(fn) {
+    var pending;
+    return function () {
+      if (!pending) {
+        pending = new Promise(function (resolve) {
+          Promise.resolve().then(function () {
+            pending = undefined;
+            resolve(fn());
+          });
+        });
+      }
+
+      return pending;
+    };
+  }
+
+  function mergeByName(modifiers) {
+    var merged = modifiers.reduce(function (merged, current) {
+      var existing = merged[current.name];
+      merged[current.name] = existing ? Object.assign({}, existing, current, {
+        options: Object.assign({}, existing.options, current.options),
+        data: Object.assign({}, existing.data, current.data)
+      }) : current;
+      return merged;
+    }, {}); // IE11 does not support Object.values
+
+    return Object.keys(merged).map(function (key) {
+      return merged[key];
+    });
+  }
+
+  var DEFAULT_OPTIONS = {
+    placement: 'bottom',
+    modifiers: [],
+    strategy: 'absolute'
+  };
+
+  function areValidElements() {
+    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+      args[_key] = arguments[_key];
+    }
+
+    return !args.some(function (element) {
+      return !(element && typeof element.getBoundingClientRect === 'function');
+    });
+  }
+
+  function popperGenerator(generatorOptions) {
+    if (generatorOptions === void 0) {
+      generatorOptions = {};
+    }
+
+    var _generatorOptions = generatorOptions,
+        _generatorOptions$def = _generatorOptions.defaultModifiers,
+        defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,
+        _generatorOptions$def2 = _generatorOptions.defaultOptions,
+        defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
+    return function createPopper(reference, popper, options) {
+      if (options === void 0) {
+        options = defaultOptions;
+      }
+
+      var state = {
+        placement: 'bottom',
+        orderedModifiers: [],
+        options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
+        modifiersData: {},
+        elements: {
+          reference: reference,
+          popper: popper
+        },
+        attributes: {},
+        styles: {}
+      };
+      var effectCleanupFns = [];
+      var isDestroyed = false;
+      var instance = {
+        state: state,
+        setOptions: function setOptions(options) {
+          cleanupModifierEffects();
+          state.options = Object.assign({}, defaultOptions, state.options, options);
+          state.scrollParents = {
+            reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
+            popper: listScrollParents(popper)
+          }; // Orders the modifiers based on their dependencies and `phase`
+          // properties
+
+          var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers
+
+          state.orderedModifiers = orderedModifiers.filter(function (m) {
+            return m.enabled;
+          }); // Validate the provided modifiers so that the consumer will get warned
+
+          runModifierEffects();
+          return instance.update();
+        },
+        // Sync update 鈥� it will always be executed, even if not necessary. This
+        // is useful for low frequency updates where sync behavior simplifies the
+        // logic.
+        // For high frequency updates (e.g. `resize` and `scroll` events), always
+        // prefer the async Popper#update method
+        forceUpdate: function forceUpdate() {
+          if (isDestroyed) {
+            return;
+          }
+
+          var _state$elements = state.elements,
+              reference = _state$elements.reference,
+              popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements
+          // anymore
+
+          if (!areValidElements(reference, popper)) {
+
+            return;
+          } // Store the reference and popper rects to be read by modifiers
+
+
+          state.rects = {
+            reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),
+            popper: getLayoutRect(popper)
+          }; // Modifiers have the ability to reset the current update cycle. The
+          // most common use case for this is the `flip` modifier changing the
+          // placement, which then needs to re-run all the modifiers, because the
+          // logic was previously ran for the previous placement and is therefore
+          // stale/incorrect
+
+          state.reset = false;
+          state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier
+          // is filled with the initial data specified by the modifier. This means
+          // it doesn't persist and is fresh on each update.
+          // To ensure persistent data, use `${name}#persistent`
+
+          state.orderedModifiers.forEach(function (modifier) {
+            return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
+          });
+
+          for (var index = 0; index < state.orderedModifiers.length; index++) {
+
+            if (state.reset === true) {
+              state.reset = false;
+              index = -1;
+              continue;
+            }
+
+            var _state$orderedModifie = state.orderedModifiers[index],
+                fn = _state$orderedModifie.fn,
+                _state$orderedModifie2 = _state$orderedModifie.options,
+                _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,
+                name = _state$orderedModifie.name;
+
+            if (typeof fn === 'function') {
+              state = fn({
+                state: state,
+                options: _options,
+                name: name,
+                instance: instance
+              }) || state;
+            }
+          }
+        },
+        // Async and optimistically optimized update 鈥� it will not be executed if
+        // not necessary (debounced to run at most once-per-tick)
+        update: debounce(function () {
+          return new Promise(function (resolve) {
+            instance.forceUpdate();
+            resolve(state);
+          });
+        }),
+        destroy: function destroy() {
+          cleanupModifierEffects();
+          isDestroyed = true;
+        }
+      };
+
+      if (!areValidElements(reference, popper)) {
+
+        return instance;
+      }
+
+      instance.setOptions(options).then(function (state) {
+        if (!isDestroyed && options.onFirstUpdate) {
+          options.onFirstUpdate(state);
+        }
+      }); // Modifiers have the ability to execute arbitrary code before the first
+      // update cycle runs. They will be executed in the same order as the update
+      // cycle. This is useful when a modifier adds some persistent data that
+      // other modifiers need to use, but the modifier is run after the dependent
+      // one.
+
+      function runModifierEffects() {
+        state.orderedModifiers.forEach(function (_ref3) {
+          var name = _ref3.name,
+              _ref3$options = _ref3.options,
+              options = _ref3$options === void 0 ? {} : _ref3$options,
+              effect = _ref3.effect;
+
+          if (typeof effect === 'function') {
+            var cleanupFn = effect({
+              state: state,
+              name: name,
+              instance: instance,
+              options: options
+            });
+
+            var noopFn = function noopFn() {};
+
+            effectCleanupFns.push(cleanupFn || noopFn);
+          }
+        });
+      }
+
+      function cleanupModifierEffects() {
+        effectCleanupFns.forEach(function (fn) {
+          return fn();
+        });
+        effectCleanupFns = [];
+      }
+
+      return instance;
+    };
+  }
+  var createPopper$2 = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules
+
+  var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];
+  var createPopper$1 = /*#__PURE__*/popperGenerator({
+    defaultModifiers: defaultModifiers$1
+  }); // eslint-disable-next-line import/no-unused-modules
+
+  var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
+  var createPopper = /*#__PURE__*/popperGenerator({
+    defaultModifiers: defaultModifiers
+  }); // eslint-disable-next-line import/no-unused-modules
+
+  var Popper = /*#__PURE__*/Object.freeze({
+    __proto__: null,
+    popperGenerator: popperGenerator,
+    detectOverflow: detectOverflow,
+    createPopperBase: createPopper$2,
+    createPopper: createPopper,
+    createPopperLite: createPopper$1,
+    top: top,
+    bottom: bottom,
+    right: right,
+    left: left,
+    auto: auto,
+    basePlacements: basePlacements,
+    start: start,
+    end: end,
+    clippingParents: clippingParents,
+    viewport: viewport,
+    popper: popper,
+    reference: reference,
+    variationPlacements: variationPlacements,
+    placements: placements,
+    beforeRead: beforeRead,
+    read: read,
+    afterRead: afterRead,
+    beforeMain: beforeMain,
+    main: main,
+    afterMain: afterMain,
+    beforeWrite: beforeWrite,
+    write: write,
+    afterWrite: afterWrite,
+    modifierPhases: modifierPhases,
+    applyStyles: applyStyles$1,
+    arrow: arrow$1,
+    computeStyles: computeStyles$1,
+    eventListeners: eventListeners,
+    flip: flip$1,
+    hide: hide$1,
+    offset: offset$1,
+    popperOffsets: popperOffsets$1,
+    preventOverflow: preventOverflow$1
+  });
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): dropdown.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$9 = 'dropdown';
+  const DATA_KEY$8 = 'bs.dropdown';
+  const EVENT_KEY$8 = `.${DATA_KEY$8}`;
+  const DATA_API_KEY$4 = '.data-api';
+  const ESCAPE_KEY$2 = 'Escape';
+  const SPACE_KEY = 'Space';
+  const TAB_KEY$1 = 'Tab';
+  const ARROW_UP_KEY = 'ArrowUp';
+  const ARROW_DOWN_KEY = 'ArrowDown';
+  const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
+
+  const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY$2}`);
+  const EVENT_HIDE$4 = `hide${EVENT_KEY$8}`;
+  const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$8}`;
+  const EVENT_SHOW$4 = `show${EVENT_KEY$8}`;
+  const EVENT_SHOWN$4 = `shown${EVENT_KEY$8}`;
+  const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$8}${DATA_API_KEY$4}`;
+  const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$8}${DATA_API_KEY$4}`;
+  const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$8}${DATA_API_KEY$4}`;
+  const CLASS_NAME_SHOW$6 = 'show';
+  const CLASS_NAME_DROPUP = 'dropup';
+  const CLASS_NAME_DROPEND = 'dropend';
+  const CLASS_NAME_DROPSTART = 'dropstart';
+  const CLASS_NAME_NAVBAR = 'navbar';
+  const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]';
+  const SELECTOR_MENU = '.dropdown-menu';
+  const SELECTOR_NAVBAR_NAV = '.navbar-nav';
+  const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
+  const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
+  const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
+  const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
+  const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
+  const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
+  const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
+  const Default$8 = {
+    offset: [0, 2],
+    boundary: 'clippingParents',
+    reference: 'toggle',
+    display: 'dynamic',
+    popperConfig: null,
+    autoClose: true
+  };
+  const DefaultType$8 = {
+    offset: '(array|string|function)',
+    boundary: '(string|element)',
+    reference: '(string|element|object)',
+    display: 'string',
+    popperConfig: '(null|object|function)',
+    autoClose: '(boolean|string)'
+  };
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Dropdown extends BaseComponent {
+    constructor(element, config) {
+      super(element);
+      this._popper = null;
+      this._config = this._getConfig(config);
+      this._menu = this._getMenuElement();
+      this._inNavbar = this._detectNavbar();
+    } // Getters
+
+
+    static get Default() {
+      return Default$8;
+    }
+
+    static get DefaultType() {
+      return DefaultType$8;
+    }
+
+    static get NAME() {
+      return NAME$9;
+    } // Public
+
+
+    toggle() {
+      return this._isShown() ? this.hide() : this.show();
+    }
+
+    show() {
+      if (isDisabled(this._element) || this._isShown(this._menu)) {
+        return;
+      }
+
+      const relatedTarget = {
+        relatedTarget: this._element
+      };
+      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget);
+
+      if (showEvent.defaultPrevented) {
+        return;
+      }
+
+      const parent = Dropdown.getParentFromElement(this._element); // Totally disable Popper for Dropdowns in Navbar
+
+      if (this._inNavbar) {
+        Manipulator.setDataAttribute(this._menu, 'popper', 'none');
+      } else {
+        this._createPopper(parent);
+      } // If this is a touch-enabled device we add extra
+      // empty mouseover listeners to the body's immediate children;
+      // only needed because of broken event delegation on iOS
+      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
+
+
+      if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {
+        [].concat(...document.body.children).forEach(elem => EventHandler.on(elem, 'mouseover', noop));
+      }
+
+      this._element.focus();
+
+      this._element.setAttribute('aria-expanded', true);
+
+      this._menu.classList.add(CLASS_NAME_SHOW$6);
+
+      this._element.classList.add(CLASS_NAME_SHOW$6);
+
+      EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget);
+    }
+
+    hide() {
+      if (isDisabled(this._element) || !this._isShown(this._menu)) {
+        return;
+      }
+
+      const relatedTarget = {
+        relatedTarget: this._element
+      };
+
+      this._completeHide(relatedTarget);
+    }
+
+    dispose() {
+      if (this._popper) {
+        this._popper.destroy();
+      }
+
+      super.dispose();
+    }
+
+    update() {
+      this._inNavbar = this._detectNavbar();
+
+      if (this._popper) {
+        this._popper.update();
+      }
+    } // Private
+
+
+    _completeHide(relatedTarget) {
+      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget);
+
+      if (hideEvent.defaultPrevented) {
+        return;
+      } // If this is a touch-enabled device we remove the extra
+      // empty mouseover listeners we added for iOS support
+
+
+      if ('ontouchstart' in document.documentElement) {
+        [].concat(...document.body.children).forEach(elem => EventHandler.off(elem, 'mouseover', noop));
+      }
+
+      if (this._popper) {
+        this._popper.destroy();
+      }
+
+      this._menu.classList.remove(CLASS_NAME_SHOW$6);
+
+      this._element.classList.remove(CLASS_NAME_SHOW$6);
+
+      this._element.setAttribute('aria-expanded', 'false');
+
+      Manipulator.removeDataAttribute(this._menu, 'popper');
+      EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget);
+    }
+
+    _getConfig(config) {
+      config = { ...this.constructor.Default,
+        ...Manipulator.getDataAttributes(this._element),
+        ...config
+      };
+      typeCheckConfig(NAME$9, config, this.constructor.DefaultType);
+
+      if (typeof config.reference === 'object' && !isElement$1(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
+        // Popper virtual elements require a getBoundingClientRect method
+        throw new TypeError(`${NAME$9.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
+      }
+
+      return config;
+    }
+
+    _createPopper(parent) {
+      if (typeof Popper === 'undefined') {
+        throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
+      }
+
+      let referenceElement = this._element;
+
+      if (this._config.reference === 'parent') {
+        referenceElement = parent;
+      } else if (isElement$1(this._config.reference)) {
+        referenceElement = getElement(this._config.reference);
+      } else if (typeof this._config.reference === 'object') {
+        referenceElement = this._config.reference;
+      }
+
+      const popperConfig = this._getPopperConfig();
+
+      const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false);
+      this._popper = createPopper(referenceElement, this._menu, popperConfig);
+
+      if (isDisplayStatic) {
+        Manipulator.setDataAttribute(this._menu, 'popper', 'static');
+      }
+    }
+
+    _isShown(element = this._element) {
+      return element.classList.contains(CLASS_NAME_SHOW$6);
+    }
+
+    _getMenuElement() {
+      return SelectorEngine.next(this._element, SELECTOR_MENU)[0];
+    }
+
+    _getPlacement() {
+      const parentDropdown = this._element.parentNode;
+
+      if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
+        return PLACEMENT_RIGHT;
+      }
+
+      if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
+        return PLACEMENT_LEFT;
+      } // We need to trim the value because custom properties can also include spaces
+
+
+      const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
+
+      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
+        return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
+      }
+
+      return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
+    }
+
+    _detectNavbar() {
+      return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null;
+    }
+
+    _getOffset() {
+      const {
+        offset
+      } = this._config;
+
+      if (typeof offset === 'string') {
+        return offset.split(',').map(val => Number.parseInt(val, 10));
+      }
+
+      if (typeof offset === 'function') {
+        return popperData => offset(popperData, this._element);
+      }
+
+      return offset;
+    }
+
+    _getPopperConfig() {
+      const defaultBsPopperConfig = {
+        placement: this._getPlacement(),
+        modifiers: [{
+          name: 'preventOverflow',
+          options: {
+            boundary: this._config.boundary
+          }
+        }, {
+          name: 'offset',
+          options: {
+            offset: this._getOffset()
+          }
+        }]
+      }; // Disable Popper if we have a static display
+
+      if (this._config.display === 'static') {
+        defaultBsPopperConfig.modifiers = [{
+          name: 'applyStyles',
+          enabled: false
+        }];
+      }
+
+      return { ...defaultBsPopperConfig,
+        ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)
+      };
+    }
+
+    _selectMenuItem({
+      key,
+      target
+    }) {
+      const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible);
+
+      if (!items.length) {
+        return;
+      } // if target isn't included in items (e.g. when expanding the dropdown)
+      // allow cycling to get the last item in case key equals ARROW_UP_KEY
+
+
+      getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Dropdown.getOrCreateInstance(this, config);
+
+        if (typeof config !== 'string') {
+          return;
+        }
+
+        if (typeof data[config] === 'undefined') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config]();
+      });
+    }
+
+    static clearMenus(event) {
+      if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1)) {
+        return;
+      }
+
+      const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3);
+
+      for (let i = 0, len = toggles.length; i < len; i++) {
+        const context = Dropdown.getInstance(toggles[i]);
+
+        if (!context || context._config.autoClose === false) {
+          continue;
+        }
+
+        if (!context._isShown()) {
+          continue;
+        }
+
+        const relatedTarget = {
+          relatedTarget: context._element
+        };
+
+        if (event) {
+          const composedPath = event.composedPath();
+          const isMenuTarget = composedPath.includes(context._menu);
+
+          if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
+            continue;
+          } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
+
+
+          if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
+            continue;
+          }
+
+          if (event.type === 'click') {
+            relatedTarget.clickEvent = event;
+          }
+        }
+
+        context._completeHide(relatedTarget);
+      }
+    }
+
+    static getParentFromElement(element) {
+      return getElementFromSelector(element) || element.parentNode;
+    }
+
+    static dataApiKeydownHandler(event) {
+      // If not input/textarea:
+      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
+      // If input/textarea:
+      //  - If space key => not a dropdown command
+      //  - If key is other than escape
+      //    - If key is not up or down => not a dropdown command
+      //    - If trigger inside the menu => not a dropdown command
+      if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY$2 && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {
+        return;
+      }
+
+      const isActive = this.classList.contains(CLASS_NAME_SHOW$6);
+
+      if (!isActive && event.key === ESCAPE_KEY$2) {
+        return;
+      }
+
+      event.preventDefault();
+      event.stopPropagation();
+
+      if (isDisabled(this)) {
+        return;
+      }
+
+      const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0];
+      const instance = Dropdown.getOrCreateInstance(getToggleButton);
+
+      if (event.key === ESCAPE_KEY$2) {
+        instance.hide();
+        return;
+      }
+
+      if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {
+        if (!isActive) {
+          instance.show();
+        }
+
+        instance._selectMenuItem(event);
+
+        return;
+      }
+
+      if (!isActive || event.key === SPACE_KEY) {
+        Dropdown.clearMenus();
+      }
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
+  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
+  EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
+  EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
+  EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
+    event.preventDefault();
+    Dropdown.getOrCreateInstance(this).toggle();
+  });
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Dropdown to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Dropdown);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): util/scrollBar.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
+  const SELECTOR_STICKY_CONTENT = '.sticky-top';
+
+  class ScrollBarHelper {
+    constructor() {
+      this._element = document.body;
+    }
+
+    getWidth() {
+      // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
+      const documentWidth = document.documentElement.clientWidth;
+      return Math.abs(window.innerWidth - documentWidth);
+    }
+
+    hide() {
+      const width = this.getWidth();
+
+      this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width
+
+
+      this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
+
+
+      this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width);
+
+      this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width);
+    }
+
+    _disableOverFlow() {
+      this._saveInitialAttribute(this._element, 'overflow');
+
+      this._element.style.overflow = 'hidden';
+    }
+
+    _setElementAttributes(selector, styleProp, callback) {
+      const scrollbarWidth = this.getWidth();
+
+      const manipulationCallBack = element => {
+        if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
+          return;
+        }
+
+        this._saveInitialAttribute(element, styleProp);
+
+        const calculatedValue = window.getComputedStyle(element)[styleProp];
+        element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;
+      };
+
+      this._applyManipulationCallback(selector, manipulationCallBack);
+    }
+
+    reset() {
+      this._resetElementAttributes(this._element, 'overflow');
+
+      this._resetElementAttributes(this._element, 'paddingRight');
+
+      this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');
+
+      this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');
+    }
+
+    _saveInitialAttribute(element, styleProp) {
+      const actualValue = element.style[styleProp];
+
+      if (actualValue) {
+        Manipulator.setDataAttribute(element, styleProp, actualValue);
+      }
+    }
+
+    _resetElementAttributes(selector, styleProp) {
+      const manipulationCallBack = element => {
+        const value = Manipulator.getDataAttribute(element, styleProp);
+
+        if (typeof value === 'undefined') {
+          element.style.removeProperty(styleProp);
+        } else {
+          Manipulator.removeDataAttribute(element, styleProp);
+          element.style[styleProp] = value;
+        }
+      };
+
+      this._applyManipulationCallback(selector, manipulationCallBack);
+    }
+
+    _applyManipulationCallback(selector, callBack) {
+      if (isElement$1(selector)) {
+        callBack(selector);
+      } else {
+        SelectorEngine.find(selector, this._element).forEach(callBack);
+      }
+    }
+
+    isOverflowing() {
+      return this.getWidth() > 0;
+    }
+
+  }
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): util/backdrop.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  const Default$7 = {
+    className: 'modal-backdrop',
+    isVisible: true,
+    // if false, we use the backdrop helper without adding any element to the dom
+    isAnimated: false,
+    rootElement: 'body',
+    // give the choice to place backdrop under different elements
+    clickCallback: null
+  };
+  const DefaultType$7 = {
+    className: 'string',
+    isVisible: 'boolean',
+    isAnimated: 'boolean',
+    rootElement: '(element|string)',
+    clickCallback: '(function|null)'
+  };
+  const NAME$8 = 'backdrop';
+  const CLASS_NAME_FADE$4 = 'fade';
+  const CLASS_NAME_SHOW$5 = 'show';
+  const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$8}`;
+
+  class Backdrop {
+    constructor(config) {
+      this._config = this._getConfig(config);
+      this._isAppended = false;
+      this._element = null;
+    }
+
+    show(callback) {
+      if (!this._config.isVisible) {
+        execute(callback);
+        return;
+      }
+
+      this._append();
+
+      if (this._config.isAnimated) {
+        reflow(this._getElement());
+      }
+
+      this._getElement().classList.add(CLASS_NAME_SHOW$5);
+
+      this._emulateAnimation(() => {
+        execute(callback);
+      });
+    }
+
+    hide(callback) {
+      if (!this._config.isVisible) {
+        execute(callback);
+        return;
+      }
+
+      this._getElement().classList.remove(CLASS_NAME_SHOW$5);
+
+      this._emulateAnimation(() => {
+        this.dispose();
+        execute(callback);
+      });
+    } // Private
+
+
+    _getElement() {
+      if (!this._element) {
+        const backdrop = document.createElement('div');
+        backdrop.className = this._config.className;
+
+        if (this._config.isAnimated) {
+          backdrop.classList.add(CLASS_NAME_FADE$4);
+        }
+
+        this._element = backdrop;
+      }
+
+      return this._element;
+    }
+
+    _getConfig(config) {
+      config = { ...Default$7,
+        ...(typeof config === 'object' ? config : {})
+      }; // use getElement() with the default "body" to get a fresh Element on each instantiation
+
+      config.rootElement = getElement(config.rootElement);
+      typeCheckConfig(NAME$8, config, DefaultType$7);
+      return config;
+    }
+
+    _append() {
+      if (this._isAppended) {
+        return;
+      }
+
+      this._config.rootElement.append(this._getElement());
+
+      EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {
+        execute(this._config.clickCallback);
+      });
+      this._isAppended = true;
+    }
+
+    dispose() {
+      if (!this._isAppended) {
+        return;
+      }
+
+      EventHandler.off(this._element, EVENT_MOUSEDOWN);
+
+      this._element.remove();
+
+      this._isAppended = false;
+    }
+
+    _emulateAnimation(callback) {
+      executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
+    }
+
+  }
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): util/focustrap.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  const Default$6 = {
+    trapElement: null,
+    // The element to trap focus inside of
+    autofocus: true
+  };
+  const DefaultType$6 = {
+    trapElement: 'element',
+    autofocus: 'boolean'
+  };
+  const NAME$7 = 'focustrap';
+  const DATA_KEY$7 = 'bs.focustrap';
+  const EVENT_KEY$7 = `.${DATA_KEY$7}`;
+  const EVENT_FOCUSIN$1 = `focusin${EVENT_KEY$7}`;
+  const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$7}`;
+  const TAB_KEY = 'Tab';
+  const TAB_NAV_FORWARD = 'forward';
+  const TAB_NAV_BACKWARD = 'backward';
+
+  class FocusTrap {
+    constructor(config) {
+      this._config = this._getConfig(config);
+      this._isActive = false;
+      this._lastTabNavDirection = null;
+    }
+
+    activate() {
+      const {
+        trapElement,
+        autofocus
+      } = this._config;
+
+      if (this._isActive) {
+        return;
+      }
+
+      if (autofocus) {
+        trapElement.focus();
+      }
+
+      EventHandler.off(document, EVENT_KEY$7); // guard against infinite focus loop
+
+      EventHandler.on(document, EVENT_FOCUSIN$1, event => this._handleFocusin(event));
+      EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
+      this._isActive = true;
+    }
+
+    deactivate() {
+      if (!this._isActive) {
+        return;
+      }
+
+      this._isActive = false;
+      EventHandler.off(document, EVENT_KEY$7);
+    } // Private
+
+
+    _handleFocusin(event) {
+      const {
+        target
+      } = event;
+      const {
+        trapElement
+      } = this._config;
+
+      if (target === document || target === trapElement || trapElement.contains(target)) {
+        return;
+      }
+
+      const elements = SelectorEngine.focusableChildren(trapElement);
+
+      if (elements.length === 0) {
+        trapElement.focus();
+      } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
+        elements[elements.length - 1].focus();
+      } else {
+        elements[0].focus();
+      }
+    }
+
+    _handleKeydown(event) {
+      if (event.key !== TAB_KEY) {
+        return;
+      }
+
+      this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
+    }
+
+    _getConfig(config) {
+      config = { ...Default$6,
+        ...(typeof config === 'object' ? config : {})
+      };
+      typeCheckConfig(NAME$7, config, DefaultType$6);
+      return config;
+    }
+
+  }
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): modal.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$6 = 'modal';
+  const DATA_KEY$6 = 'bs.modal';
+  const EVENT_KEY$6 = `.${DATA_KEY$6}`;
+  const DATA_API_KEY$3 = '.data-api';
+  const ESCAPE_KEY$1 = 'Escape';
+  const Default$5 = {
+    backdrop: true,
+    keyboard: true,
+    focus: true
+  };
+  const DefaultType$5 = {
+    backdrop: '(boolean|string)',
+    keyboard: 'boolean',
+    focus: 'boolean'
+  };
+  const EVENT_HIDE$3 = `hide${EVENT_KEY$6}`;
+  const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$6}`;
+  const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$6}`;
+  const EVENT_SHOW$3 = `show${EVENT_KEY$6}`;
+  const EVENT_SHOWN$3 = `shown${EVENT_KEY$6}`;
+  const EVENT_RESIZE = `resize${EVENT_KEY$6}`;
+  const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$6}`;
+  const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$6}`;
+  const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY$6}`;
+  const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$6}`;
+  const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
+  const CLASS_NAME_OPEN = 'modal-open';
+  const CLASS_NAME_FADE$3 = 'fade';
+  const CLASS_NAME_SHOW$4 = 'show';
+  const CLASS_NAME_STATIC = 'modal-static';
+  const SELECTOR_DIALOG = '.modal-dialog';
+  const SELECTOR_MODAL_BODY = '.modal-body';
+  const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Modal extends BaseComponent {
+    constructor(element, config) {
+      super(element);
+      this._config = this._getConfig(config);
+      this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
+      this._backdrop = this._initializeBackDrop();
+      this._focustrap = this._initializeFocusTrap();
+      this._isShown = false;
+      this._ignoreBackdropClick = false;
+      this._isTransitioning = false;
+      this._scrollBar = new ScrollBarHelper();
+    } // Getters
+
+
+    static get Default() {
+      return Default$5;
+    }
+
+    static get NAME() {
+      return NAME$6;
+    } // Public
+
+
+    toggle(relatedTarget) {
+      return this._isShown ? this.hide() : this.show(relatedTarget);
+    }
+
+    show(relatedTarget) {
+      if (this._isShown || this._isTransitioning) {
+        return;
+      }
+
+      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
+        relatedTarget
+      });
+
+      if (showEvent.defaultPrevented) {
+        return;
+      }
+
+      this._isShown = true;
+
+      if (this._isAnimated()) {
+        this._isTransitioning = true;
+      }
+
+      this._scrollBar.hide();
+
+      document.body.classList.add(CLASS_NAME_OPEN);
+
+      this._adjustDialog();
+
+      this._setEscapeEvent();
+
+      this._setResizeEvent();
+
+      EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {
+        EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {
+          if (event.target === this._element) {
+            this._ignoreBackdropClick = true;
+          }
+        });
+      });
+
+      this._showBackdrop(() => this._showElement(relatedTarget));
+    }
+
+    hide() {
+      if (!this._isShown || this._isTransitioning) {
+        return;
+      }
+
+      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
+
+      if (hideEvent.defaultPrevented) {
+        return;
+      }
+
+      this._isShown = false;
+
+      const isAnimated = this._isAnimated();
+
+      if (isAnimated) {
+        this._isTransitioning = true;
+      }
+
+      this._setEscapeEvent();
+
+      this._setResizeEvent();
+
+      this._focustrap.deactivate();
+
+      this._element.classList.remove(CLASS_NAME_SHOW$4);
+
+      EventHandler.off(this._element, EVENT_CLICK_DISMISS);
+      EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
+
+      this._queueCallback(() => this._hideModal(), this._element, isAnimated);
+    }
+
+    dispose() {
+      [window, this._dialog].forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY$6));
+
+      this._backdrop.dispose();
+
+      this._focustrap.deactivate();
+
+      super.dispose();
+    }
+
+    handleUpdate() {
+      this._adjustDialog();
+    } // Private
+
+
+    _initializeBackDrop() {
+      return new Backdrop({
+        isVisible: Boolean(this._config.backdrop),
+        // 'static' option will be translated to true, and booleans will keep their value
+        isAnimated: this._isAnimated()
+      });
+    }
+
+    _initializeFocusTrap() {
+      return new FocusTrap({
+        trapElement: this._element
+      });
+    }
+
+    _getConfig(config) {
+      config = { ...Default$5,
+        ...Manipulator.getDataAttributes(this._element),
+        ...(typeof config === 'object' ? config : {})
+      };
+      typeCheckConfig(NAME$6, config, DefaultType$5);
+      return config;
+    }
+
+    _showElement(relatedTarget) {
+      const isAnimated = this._isAnimated();
+
+      const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
+
+      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
+        // Don't move modal's DOM position
+        document.body.append(this._element);
+      }
+
+      this._element.style.display = 'block';
+
+      this._element.removeAttribute('aria-hidden');
+
+      this._element.setAttribute('aria-modal', true);
+
+      this._element.setAttribute('role', 'dialog');
+
+      this._element.scrollTop = 0;
+
+      if (modalBody) {
+        modalBody.scrollTop = 0;
+      }
+
+      if (isAnimated) {
+        reflow(this._element);
+      }
+
+      this._element.classList.add(CLASS_NAME_SHOW$4);
+
+      const transitionComplete = () => {
+        if (this._config.focus) {
+          this._focustrap.activate();
+        }
+
+        this._isTransitioning = false;
+        EventHandler.trigger(this._element, EVENT_SHOWN$3, {
+          relatedTarget
+        });
+      };
+
+      this._queueCallback(transitionComplete, this._dialog, isAnimated);
+    }
+
+    _setEscapeEvent() {
+      if (this._isShown) {
+        EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {
+          if (this._config.keyboard && event.key === ESCAPE_KEY$1) {
+            event.preventDefault();
+            this.hide();
+          } else if (!this._config.keyboard && event.key === ESCAPE_KEY$1) {
+            this._triggerBackdropTransition();
+          }
+        });
+      } else {
+        EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS$1);
+      }
+    }
+
+    _setResizeEvent() {
+      if (this._isShown) {
+        EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog());
+      } else {
+        EventHandler.off(window, EVENT_RESIZE);
+      }
+    }
+
+    _hideModal() {
+      this._element.style.display = 'none';
+
+      this._element.setAttribute('aria-hidden', true);
+
+      this._element.removeAttribute('aria-modal');
+
+      this._element.removeAttribute('role');
+
+      this._isTransitioning = false;
+
+      this._backdrop.hide(() => {
+        document.body.classList.remove(CLASS_NAME_OPEN);
+
+        this._resetAdjustments();
+
+        this._scrollBar.reset();
+
+        EventHandler.trigger(this._element, EVENT_HIDDEN$3);
+      });
+    }
+
+    _showBackdrop(callback) {
+      EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {
+        if (this._ignoreBackdropClick) {
+          this._ignoreBackdropClick = false;
+          return;
+        }
+
+        if (event.target !== event.currentTarget) {
+          return;
+        }
+
+        if (this._config.backdrop === true) {
+          this.hide();
+        } else if (this._config.backdrop === 'static') {
+          this._triggerBackdropTransition();
+        }
+      });
+
+      this._backdrop.show(callback);
+    }
+
+    _isAnimated() {
+      return this._element.classList.contains(CLASS_NAME_FADE$3);
+    }
+
+    _triggerBackdropTransition() {
+      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
+
+      if (hideEvent.defaultPrevented) {
+        return;
+      }
+
+      const {
+        classList,
+        scrollHeight,
+        style
+      } = this._element;
+      const isModalOverflowing = scrollHeight > document.documentElement.clientHeight; // return if the following background transition hasn't yet completed
+
+      if (!isModalOverflowing && style.overflowY === 'hidden' || classList.contains(CLASS_NAME_STATIC)) {
+        return;
+      }
+
+      if (!isModalOverflowing) {
+        style.overflowY = 'hidden';
+      }
+
+      classList.add(CLASS_NAME_STATIC);
+
+      this._queueCallback(() => {
+        classList.remove(CLASS_NAME_STATIC);
+
+        if (!isModalOverflowing) {
+          this._queueCallback(() => {
+            style.overflowY = '';
+          }, this._dialog);
+        }
+      }, this._dialog);
+
+      this._element.focus();
+    } // ----------------------------------------------------------------------
+    // the following methods are used to handle overflowing modals
+    // ----------------------------------------------------------------------
+
+
+    _adjustDialog() {
+      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
+
+      const scrollbarWidth = this._scrollBar.getWidth();
+
+      const isBodyOverflowing = scrollbarWidth > 0;
+
+      if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) {
+        this._element.style.paddingLeft = `${scrollbarWidth}px`;
+      }
+
+      if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) {
+        this._element.style.paddingRight = `${scrollbarWidth}px`;
+      }
+    }
+
+    _resetAdjustments() {
+      this._element.style.paddingLeft = '';
+      this._element.style.paddingRight = '';
+    } // Static
+
+
+    static jQueryInterface(config, relatedTarget) {
+      return this.each(function () {
+        const data = Modal.getOrCreateInstance(this, config);
+
+        if (typeof config !== 'string') {
+          return;
+        }
+
+        if (typeof data[config] === 'undefined') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config](relatedTarget);
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
+    const target = getElementFromSelector(this);
+
+    if (['A', 'AREA'].includes(this.tagName)) {
+      event.preventDefault();
+    }
+
+    EventHandler.one(target, EVENT_SHOW$3, showEvent => {
+      if (showEvent.defaultPrevented) {
+        // only register focus restorer if modal will actually get shown
+        return;
+      }
+
+      EventHandler.one(target, EVENT_HIDDEN$3, () => {
+        if (isVisible(this)) {
+          this.focus();
+        }
+      });
+    });
+    const data = Modal.getOrCreateInstance(target);
+    data.toggle(this);
+  });
+  enableDismissTrigger(Modal);
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Modal to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Modal);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): offcanvas.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$5 = 'offcanvas';
+  const DATA_KEY$5 = 'bs.offcanvas';
+  const EVENT_KEY$5 = `.${DATA_KEY$5}`;
+  const DATA_API_KEY$2 = '.data-api';
+  const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$5}${DATA_API_KEY$2}`;
+  const ESCAPE_KEY = 'Escape';
+  const Default$4 = {
+    backdrop: true,
+    keyboard: true,
+    scroll: false
+  };
+  const DefaultType$4 = {
+    backdrop: 'boolean',
+    keyboard: 'boolean',
+    scroll: 'boolean'
+  };
+  const CLASS_NAME_SHOW$3 = 'show';
+  const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
+  const OPEN_SELECTOR = '.offcanvas.show';
+  const EVENT_SHOW$2 = `show${EVENT_KEY$5}`;
+  const EVENT_SHOWN$2 = `shown${EVENT_KEY$5}`;
+  const EVENT_HIDE$2 = `hide${EVENT_KEY$5}`;
+  const EVENT_HIDDEN$2 = `hidden${EVENT_KEY$5}`;
+  const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$5}${DATA_API_KEY$2}`;
+  const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$5}`;
+  const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Offcanvas extends BaseComponent {
+    constructor(element, config) {
+      super(element);
+      this._config = this._getConfig(config);
+      this._isShown = false;
+      this._backdrop = this._initializeBackDrop();
+      this._focustrap = this._initializeFocusTrap();
+
+      this._addEventListeners();
+    } // Getters
+
+
+    static get NAME() {
+      return NAME$5;
+    }
+
+    static get Default() {
+      return Default$4;
+    } // Public
+
+
+    toggle(relatedTarget) {
+      return this._isShown ? this.hide() : this.show(relatedTarget);
+    }
+
+    show(relatedTarget) {
+      if (this._isShown) {
+        return;
+      }
+
+      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {
+        relatedTarget
+      });
+
+      if (showEvent.defaultPrevented) {
+        return;
+      }
+
+      this._isShown = true;
+      this._element.style.visibility = 'visible';
+
+      this._backdrop.show();
+
+      if (!this._config.scroll) {
+        new ScrollBarHelper().hide();
+      }
+
+      this._element.removeAttribute('aria-hidden');
+
+      this._element.setAttribute('aria-modal', true);
+
+      this._element.setAttribute('role', 'dialog');
+
+      this._element.classList.add(CLASS_NAME_SHOW$3);
+
+      const completeCallBack = () => {
+        if (!this._config.scroll) {
+          this._focustrap.activate();
+        }
+
+        EventHandler.trigger(this._element, EVENT_SHOWN$2, {
+          relatedTarget
+        });
+      };
+
+      this._queueCallback(completeCallBack, this._element, true);
+    }
+
+    hide() {
+      if (!this._isShown) {
+        return;
+      }
+
+      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);
+
+      if (hideEvent.defaultPrevented) {
+        return;
+      }
+
+      this._focustrap.deactivate();
+
+      this._element.blur();
+
+      this._isShown = false;
+
+      this._element.classList.remove(CLASS_NAME_SHOW$3);
+
+      this._backdrop.hide();
+
+      const completeCallback = () => {
+        this._element.setAttribute('aria-hidden', true);
+
+        this._element.removeAttribute('aria-modal');
+
+        this._element.removeAttribute('role');
+
+        this._element.style.visibility = 'hidden';
+
+        if (!this._config.scroll) {
+          new ScrollBarHelper().reset();
+        }
+
+        EventHandler.trigger(this._element, EVENT_HIDDEN$2);
+      };
+
+      this._queueCallback(completeCallback, this._element, true);
+    }
+
+    dispose() {
+      this._backdrop.dispose();
+
+      this._focustrap.deactivate();
+
+      super.dispose();
+    } // Private
+
+
+    _getConfig(config) {
+      config = { ...Default$4,
+        ...Manipulator.getDataAttributes(this._element),
+        ...(typeof config === 'object' ? config : {})
+      };
+      typeCheckConfig(NAME$5, config, DefaultType$4);
+      return config;
+    }
+
+    _initializeBackDrop() {
+      return new Backdrop({
+        className: CLASS_NAME_BACKDROP,
+        isVisible: this._config.backdrop,
+        isAnimated: true,
+        rootElement: this._element.parentNode,
+        clickCallback: () => this.hide()
+      });
+    }
+
+    _initializeFocusTrap() {
+      return new FocusTrap({
+        trapElement: this._element
+      });
+    }
+
+    _addEventListeners() {
+      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
+        if (this._config.keyboard && event.key === ESCAPE_KEY) {
+          this.hide();
+        }
+      });
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Offcanvas.getOrCreateInstance(this, config);
+
+        if (typeof config !== 'string') {
+          return;
+        }
+
+        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config](this);
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
+    const target = getElementFromSelector(this);
+
+    if (['A', 'AREA'].includes(this.tagName)) {
+      event.preventDefault();
+    }
+
+    if (isDisabled(this)) {
+      return;
+    }
+
+    EventHandler.one(target, EVENT_HIDDEN$2, () => {
+      // focus on trigger when it is closed
+      if (isVisible(this)) {
+        this.focus();
+      }
+    }); // avoid conflict when clicking a toggler of an offcanvas, while another is open
+
+    const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
+
+    if (allReadyOpen && allReadyOpen !== target) {
+      Offcanvas.getInstance(allReadyOpen).hide();
+    }
+
+    const data = Offcanvas.getOrCreateInstance(target);
+    data.toggle(this);
+  });
+  EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show()));
+  enableDismissTrigger(Offcanvas);
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   */
+
+  defineJQueryPlugin(Offcanvas);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): util/sanitizer.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  const uriAttrs = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
+  const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
+  /**
+   * A pattern that recognizes a commonly useful subset of URLs that are safe.
+   *
+   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
+   */
+
+  const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i;
+  /**
+   * A pattern that matches safe data URLs. Only matches image, video and audio types.
+   *
+   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
+   */
+
+  const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
+
+  const allowedAttribute = (attr, allowedAttributeList) => {
+    const attrName = attr.nodeName.toLowerCase();
+
+    if (allowedAttributeList.includes(attrName)) {
+      if (uriAttrs.has(attrName)) {
+        return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));
+      }
+
+      return true;
+    }
+
+    const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp); // Check if a regular expression validates the attribute.
+
+    for (let i = 0, len = regExp.length; i < len; i++) {
+      if (regExp[i].test(attrName)) {
+        return true;
+      }
+    }
+
+    return false;
+  };
+
+  const DefaultAllowlist = {
+    // Global attributes allowed on any supplied element below.
+    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
+    a: ['target', 'href', 'title', 'rel'],
+    area: [],
+    b: [],
+    br: [],
+    col: [],
+    code: [],
+    div: [],
+    em: [],
+    hr: [],
+    h1: [],
+    h2: [],
+    h3: [],
+    h4: [],
+    h5: [],
+    h6: [],
+    i: [],
+    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
+    li: [],
+    ol: [],
+    p: [],
+    pre: [],
+    s: [],
+    small: [],
+    span: [],
+    sub: [],
+    sup: [],
+    strong: [],
+    u: [],
+    ul: []
+  };
+  function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
+    if (!unsafeHtml.length) {
+      return unsafeHtml;
+    }
+
+    if (sanitizeFn && typeof sanitizeFn === 'function') {
+      return sanitizeFn(unsafeHtml);
+    }
+
+    const domParser = new window.DOMParser();
+    const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
+    const allowlistKeys = Object.keys(allowList);
+    const elements = [].concat(...createdDocument.body.querySelectorAll('*'));
+
+    for (let i = 0, len = elements.length; i < len; i++) {
+      const el = elements[i];
+      const elName = el.nodeName.toLowerCase();
+
+      if (!allowlistKeys.includes(elName)) {
+        el.remove();
+        continue;
+      }
+
+      const attributeList = [].concat(...el.attributes);
+      const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []);
+      attributeList.forEach(attr => {
+        if (!allowedAttribute(attr, allowedAttributes)) {
+          el.removeAttribute(attr.nodeName);
+        }
+      });
+    }
+
+    return createdDocument.body.innerHTML;
+  }
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): tooltip.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$4 = 'tooltip';
+  const DATA_KEY$4 = 'bs.tooltip';
+  const EVENT_KEY$4 = `.${DATA_KEY$4}`;
+  const CLASS_PREFIX$1 = 'bs-tooltip';
+  const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
+  const DefaultType$3 = {
+    animation: 'boolean',
+    template: 'string',
+    title: '(string|element|function)',
+    trigger: 'string',
+    delay: '(number|object)',
+    html: 'boolean',
+    selector: '(string|boolean)',
+    placement: '(string|function)',
+    offset: '(array|string|function)',
+    container: '(string|element|boolean)',
+    fallbackPlacements: 'array',
+    boundary: '(string|element)',
+    customClass: '(string|function)',
+    sanitize: 'boolean',
+    sanitizeFn: '(null|function)',
+    allowList: 'object',
+    popperConfig: '(null|object|function)'
+  };
+  const AttachmentMap = {
+    AUTO: 'auto',
+    TOP: 'top',
+    RIGHT: isRTL() ? 'left' : 'right',
+    BOTTOM: 'bottom',
+    LEFT: isRTL() ? 'right' : 'left'
+  };
+  const Default$3 = {
+    animation: true,
+    template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
+    trigger: 'hover focus',
+    title: '',
+    delay: 0,
+    html: false,
+    selector: false,
+    placement: 'top',
+    offset: [0, 0],
+    container: false,
+    fallbackPlacements: ['top', 'right', 'bottom', 'left'],
+    boundary: 'clippingParents',
+    customClass: '',
+    sanitize: true,
+    sanitizeFn: null,
+    allowList: DefaultAllowlist,
+    popperConfig: null
+  };
+  const Event$2 = {
+    HIDE: `hide${EVENT_KEY$4}`,
+    HIDDEN: `hidden${EVENT_KEY$4}`,
+    SHOW: `show${EVENT_KEY$4}`,
+    SHOWN: `shown${EVENT_KEY$4}`,
+    INSERTED: `inserted${EVENT_KEY$4}`,
+    CLICK: `click${EVENT_KEY$4}`,
+    FOCUSIN: `focusin${EVENT_KEY$4}`,
+    FOCUSOUT: `focusout${EVENT_KEY$4}`,
+    MOUSEENTER: `mouseenter${EVENT_KEY$4}`,
+    MOUSELEAVE: `mouseleave${EVENT_KEY$4}`
+  };
+  const CLASS_NAME_FADE$2 = 'fade';
+  const CLASS_NAME_MODAL = 'modal';
+  const CLASS_NAME_SHOW$2 = 'show';
+  const HOVER_STATE_SHOW = 'show';
+  const HOVER_STATE_OUT = 'out';
+  const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
+  const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
+  const EVENT_MODAL_HIDE = 'hide.bs.modal';
+  const TRIGGER_HOVER = 'hover';
+  const TRIGGER_FOCUS = 'focus';
+  const TRIGGER_CLICK = 'click';
+  const TRIGGER_MANUAL = 'manual';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Tooltip extends BaseComponent {
+    constructor(element, config) {
+      if (typeof Popper === 'undefined') {
+        throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
+      }
+
+      super(element); // private
+
+      this._isEnabled = true;
+      this._timeout = 0;
+      this._hoverState = '';
+      this._activeTrigger = {};
+      this._popper = null; // Protected
+
+      this._config = this._getConfig(config);
+      this.tip = null;
+
+      this._setListeners();
+    } // Getters
+
+
+    static get Default() {
+      return Default$3;
+    }
+
+    static get NAME() {
+      return NAME$4;
+    }
+
+    static get Event() {
+      return Event$2;
+    }
+
+    static get DefaultType() {
+      return DefaultType$3;
+    } // Public
+
+
+    enable() {
+      this._isEnabled = true;
+    }
+
+    disable() {
+      this._isEnabled = false;
+    }
+
+    toggleEnabled() {
+      this._isEnabled = !this._isEnabled;
+    }
+
+    toggle(event) {
+      if (!this._isEnabled) {
+        return;
+      }
+
+      if (event) {
+        const context = this._initializeOnDelegatedTarget(event);
+
+        context._activeTrigger.click = !context._activeTrigger.click;
+
+        if (context._isWithActiveTrigger()) {
+          context._enter(null, context);
+        } else {
+          context._leave(null, context);
+        }
+      } else {
+        if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$2)) {
+          this._leave(null, this);
+
+          return;
+        }
+
+        this._enter(null, this);
+      }
+    }
+
+    dispose() {
+      clearTimeout(this._timeout);
+      EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
+
+      if (this.tip) {
+        this.tip.remove();
+      }
+
+      if (this._popper) {
+        this._popper.destroy();
+      }
+
+      super.dispose();
+    }
+
+    show() {
+      if (this._element.style.display === 'none') {
+        throw new Error('Please use show on visible elements');
+      }
+
+      if (!(this.isWithContent() && this._isEnabled)) {
+        return;
+      }
+
+      const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW);
+      const shadowRoot = findShadowRoot(this._element);
+      const isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element);
+
+      if (showEvent.defaultPrevented || !isInTheDom) {
+        return;
+      }
+
+      const tip = this.getTipElement();
+      const tipId = getUID(this.constructor.NAME);
+      tip.setAttribute('id', tipId);
+
+      this._element.setAttribute('aria-describedby', tipId);
+
+      if (this._config.animation) {
+        tip.classList.add(CLASS_NAME_FADE$2);
+      }
+
+      const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;
+
+      const attachment = this._getAttachment(placement);
+
+      this._addAttachmentClass(attachment);
+
+      const {
+        container
+      } = this._config;
+      Data.set(tip, this.constructor.DATA_KEY, this);
+
+      if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
+        container.append(tip);
+        EventHandler.trigger(this._element, this.constructor.Event.INSERTED);
+      }
+
+      if (this._popper) {
+        this._popper.update();
+      } else {
+        this._popper = createPopper(this._element, tip, this._getPopperConfig(attachment));
+      }
+
+      tip.classList.add(CLASS_NAME_SHOW$2);
+
+      const customClass = this._resolvePossibleFunction(this._config.customClass);
+
+      if (customClass) {
+        tip.classList.add(...customClass.split(' '));
+      } // If this is a touch-enabled device we add extra
+      // empty mouseover listeners to the body's immediate children;
+      // only needed because of broken event delegation on iOS
+      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
+
+
+      if ('ontouchstart' in document.documentElement) {
+        [].concat(...document.body.children).forEach(element => {
+          EventHandler.on(element, 'mouseover', noop);
+        });
+      }
+
+      const complete = () => {
+        const prevHoverState = this._hoverState;
+        this._hoverState = null;
+        EventHandler.trigger(this._element, this.constructor.Event.SHOWN);
+
+        if (prevHoverState === HOVER_STATE_OUT) {
+          this._leave(null, this);
+        }
+      };
+
+      const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);
+
+      this._queueCallback(complete, this.tip, isAnimated);
+    }
+
+    hide() {
+      if (!this._popper) {
+        return;
+      }
+
+      const tip = this.getTipElement();
+
+      const complete = () => {
+        if (this._isWithActiveTrigger()) {
+          return;
+        }
+
+        if (this._hoverState !== HOVER_STATE_SHOW) {
+          tip.remove();
+        }
+
+        this._cleanTipClass();
+
+        this._element.removeAttribute('aria-describedby');
+
+        EventHandler.trigger(this._element, this.constructor.Event.HIDDEN);
+
+        if (this._popper) {
+          this._popper.destroy();
+
+          this._popper = null;
+        }
+      };
+
+      const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE);
+
+      if (hideEvent.defaultPrevented) {
+        return;
+      }
+
+      tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra
+      // empty mouseover listeners we added for iOS support
+
+      if ('ontouchstart' in document.documentElement) {
+        [].concat(...document.body.children).forEach(element => EventHandler.off(element, 'mouseover', noop));
+      }
+
+      this._activeTrigger[TRIGGER_CLICK] = false;
+      this._activeTrigger[TRIGGER_FOCUS] = false;
+      this._activeTrigger[TRIGGER_HOVER] = false;
+      const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);
+
+      this._queueCallback(complete, this.tip, isAnimated);
+
+      this._hoverState = '';
+    }
+
+    update() {
+      if (this._popper !== null) {
+        this._popper.update();
+      }
+    } // Protected
+
+
+    isWithContent() {
+      return Boolean(this.getTitle());
+    }
+
+    getTipElement() {
+      if (this.tip) {
+        return this.tip;
+      }
+
+      const element = document.createElement('div');
+      element.innerHTML = this._config.template;
+      const tip = element.children[0];
+      this.setContent(tip);
+      tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
+      this.tip = tip;
+      return this.tip;
+    }
+
+    setContent(tip) {
+      this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER);
+    }
+
+    _sanitizeAndSetContent(template, content, selector) {
+      const templateElement = SelectorEngine.findOne(selector, template);
+
+      if (!content && templateElement) {
+        templateElement.remove();
+        return;
+      } // we use append for html objects to maintain js events
+
+
+      this.setElementContent(templateElement, content);
+    }
+
+    setElementContent(element, content) {
+      if (element === null) {
+        return;
+      }
+
+      if (isElement$1(content)) {
+        content = getElement(content); // content is a DOM node or a jQuery
+
+        if (this._config.html) {
+          if (content.parentNode !== element) {
+            element.innerHTML = '';
+            element.append(content);
+          }
+        } else {
+          element.textContent = content.textContent;
+        }
+
+        return;
+      }
+
+      if (this._config.html) {
+        if (this._config.sanitize) {
+          content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn);
+        }
+
+        element.innerHTML = content;
+      } else {
+        element.textContent = content;
+      }
+    }
+
+    getTitle() {
+      const title = this._element.getAttribute('data-bs-original-title') || this._config.title;
+
+      return this._resolvePossibleFunction(title);
+    }
+
+    updateAttachment(attachment) {
+      if (attachment === 'right') {
+        return 'end';
+      }
+
+      if (attachment === 'left') {
+        return 'start';
+      }
+
+      return attachment;
+    } // Private
+
+
+    _initializeOnDelegatedTarget(event, context) {
+      return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
+    }
+
+    _getOffset() {
+      const {
+        offset
+      } = this._config;
+
+      if (typeof offset === 'string') {
+        return offset.split(',').map(val => Number.parseInt(val, 10));
+      }
+
+      if (typeof offset === 'function') {
+        return popperData => offset(popperData, this._element);
+      }
+
+      return offset;
+    }
+
+    _resolvePossibleFunction(content) {
+      return typeof content === 'function' ? content.call(this._element) : content;
+    }
+
+    _getPopperConfig(attachment) {
+      const defaultBsPopperConfig = {
+        placement: attachment,
+        modifiers: [{
+          name: 'flip',
+          options: {
+            fallbackPlacements: this._config.fallbackPlacements
+          }
+        }, {
+          name: 'offset',
+          options: {
+            offset: this._getOffset()
+          }
+        }, {
+          name: 'preventOverflow',
+          options: {
+            boundary: this._config.boundary
+          }
+        }, {
+          name: 'arrow',
+          options: {
+            element: `.${this.constructor.NAME}-arrow`
+          }
+        }, {
+          name: 'onChange',
+          enabled: true,
+          phase: 'afterWrite',
+          fn: data => this._handlePopperPlacementChange(data)
+        }],
+        onFirstUpdate: data => {
+          if (data.options.placement !== data.placement) {
+            this._handlePopperPlacementChange(data);
+          }
+        }
+      };
+      return { ...defaultBsPopperConfig,
+        ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)
+      };
+    }
+
+    _addAttachmentClass(attachment) {
+      this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`);
+    }
+
+    _getAttachment(placement) {
+      return AttachmentMap[placement.toUpperCase()];
+    }
+
+    _setListeners() {
+      const triggers = this._config.trigger.split(' ');
+
+      triggers.forEach(trigger => {
+        if (trigger === 'click') {
+          EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event));
+        } else if (trigger !== TRIGGER_MANUAL) {
+          const eventIn = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN;
+          const eventOut = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT;
+          EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event));
+          EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event));
+        }
+      });
+
+      this._hideModalHandler = () => {
+        if (this._element) {
+          this.hide();
+        }
+      };
+
+      EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
+
+      if (this._config.selector) {
+        this._config = { ...this._config,
+          trigger: 'manual',
+          selector: ''
+        };
+      } else {
+        this._fixTitle();
+      }
+    }
+
+    _fixTitle() {
+      const title = this._element.getAttribute('title');
+
+      const originalTitleType = typeof this._element.getAttribute('data-bs-original-title');
+
+      if (title || originalTitleType !== 'string') {
+        this._element.setAttribute('data-bs-original-title', title || '');
+
+        if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {
+          this._element.setAttribute('aria-label', title);
+        }
+
+        this._element.setAttribute('title', '');
+      }
+    }
+
+    _enter(event, context) {
+      context = this._initializeOnDelegatedTarget(event, context);
+
+      if (event) {
+        context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
+      }
+
+      if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$2) || context._hoverState === HOVER_STATE_SHOW) {
+        context._hoverState = HOVER_STATE_SHOW;
+        return;
+      }
+
+      clearTimeout(context._timeout);
+      context._hoverState = HOVER_STATE_SHOW;
+
+      if (!context._config.delay || !context._config.delay.show) {
+        context.show();
+        return;
+      }
+
+      context._timeout = setTimeout(() => {
+        if (context._hoverState === HOVER_STATE_SHOW) {
+          context.show();
+        }
+      }, context._config.delay.show);
+    }
+
+    _leave(event, context) {
+      context = this._initializeOnDelegatedTarget(event, context);
+
+      if (event) {
+        context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
+      }
+
+      if (context._isWithActiveTrigger()) {
+        return;
+      }
+
+      clearTimeout(context._timeout);
+      context._hoverState = HOVER_STATE_OUT;
+
+      if (!context._config.delay || !context._config.delay.hide) {
+        context.hide();
+        return;
+      }
+
+      context._timeout = setTimeout(() => {
+        if (context._hoverState === HOVER_STATE_OUT) {
+          context.hide();
+        }
+      }, context._config.delay.hide);
+    }
+
+    _isWithActiveTrigger() {
+      for (const trigger in this._activeTrigger) {
+        if (this._activeTrigger[trigger]) {
+          return true;
+        }
+      }
+
+      return false;
+    }
+
+    _getConfig(config) {
+      const dataAttributes = Manipulator.getDataAttributes(this._element);
+      Object.keys(dataAttributes).forEach(dataAttr => {
+        if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {
+          delete dataAttributes[dataAttr];
+        }
+      });
+      config = { ...this.constructor.Default,
+        ...dataAttributes,
+        ...(typeof config === 'object' && config ? config : {})
+      };
+      config.container = config.container === false ? document.body : getElement(config.container);
+
+      if (typeof config.delay === 'number') {
+        config.delay = {
+          show: config.delay,
+          hide: config.delay
+        };
+      }
+
+      if (typeof config.title === 'number') {
+        config.title = config.title.toString();
+      }
+
+      if (typeof config.content === 'number') {
+        config.content = config.content.toString();
+      }
+
+      typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
+
+      if (config.sanitize) {
+        config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn);
+      }
+
+      return config;
+    }
+
+    _getDelegateConfig() {
+      const config = {};
+
+      for (const key in this._config) {
+        if (this.constructor.Default[key] !== this._config[key]) {
+          config[key] = this._config[key];
+        }
+      } // In the future can be replaced with:
+      // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
+      // `Object.fromEntries(keysWithDifferentValues)`
+
+
+      return config;
+    }
+
+    _cleanTipClass() {
+      const tip = this.getTipElement();
+      const basicClassPrefixRegex = new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`, 'g');
+      const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex);
+
+      if (tabClass !== null && tabClass.length > 0) {
+        tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass));
+      }
+    }
+
+    _getBasicClassPrefix() {
+      return CLASS_PREFIX$1;
+    }
+
+    _handlePopperPlacementChange(popperData) {
+      const {
+        state
+      } = popperData;
+
+      if (!state) {
+        return;
+      }
+
+      this.tip = state.elements.popper;
+
+      this._cleanTipClass();
+
+      this._addAttachmentClass(this._getAttachment(state.placement));
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Tooltip.getOrCreateInstance(this, config);
+
+        if (typeof config === 'string') {
+          if (typeof data[config] === 'undefined') {
+            throw new TypeError(`No method named "${config}"`);
+          }
+
+          data[config]();
+        }
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Tooltip to jQuery only if jQuery is present
+   */
+
+
+  defineJQueryPlugin(Tooltip);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): popover.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$3 = 'popover';
+  const DATA_KEY$3 = 'bs.popover';
+  const EVENT_KEY$3 = `.${DATA_KEY$3}`;
+  const CLASS_PREFIX = 'bs-popover';
+  const Default$2 = { ...Tooltip.Default,
+    placement: 'right',
+    offset: [0, 8],
+    trigger: 'click',
+    content: '',
+    template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>'
+  };
+  const DefaultType$2 = { ...Tooltip.DefaultType,
+    content: '(string|element|function)'
+  };
+  const Event$1 = {
+    HIDE: `hide${EVENT_KEY$3}`,
+    HIDDEN: `hidden${EVENT_KEY$3}`,
+    SHOW: `show${EVENT_KEY$3}`,
+    SHOWN: `shown${EVENT_KEY$3}`,
+    INSERTED: `inserted${EVENT_KEY$3}`,
+    CLICK: `click${EVENT_KEY$3}`,
+    FOCUSIN: `focusin${EVENT_KEY$3}`,
+    FOCUSOUT: `focusout${EVENT_KEY$3}`,
+    MOUSEENTER: `mouseenter${EVENT_KEY$3}`,
+    MOUSELEAVE: `mouseleave${EVENT_KEY$3}`
+  };
+  const SELECTOR_TITLE = '.popover-header';
+  const SELECTOR_CONTENT = '.popover-body';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Popover extends Tooltip {
+    // Getters
+    static get Default() {
+      return Default$2;
+    }
+
+    static get NAME() {
+      return NAME$3;
+    }
+
+    static get Event() {
+      return Event$1;
+    }
+
+    static get DefaultType() {
+      return DefaultType$2;
+    } // Overrides
+
+
+    isWithContent() {
+      return this.getTitle() || this._getContent();
+    }
+
+    setContent(tip) {
+      this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE);
+
+      this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT);
+    } // Private
+
+
+    _getContent() {
+      return this._resolvePossibleFunction(this._config.content);
+    }
+
+    _getBasicClassPrefix() {
+      return CLASS_PREFIX;
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Popover.getOrCreateInstance(this, config);
+
+        if (typeof config === 'string') {
+          if (typeof data[config] === 'undefined') {
+            throw new TypeError(`No method named "${config}"`);
+          }
+
+          data[config]();
+        }
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Popover to jQuery only if jQuery is present
+   */
+
+
+  defineJQueryPlugin(Popover);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): scrollspy.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$2 = 'scrollspy';
+  const DATA_KEY$2 = 'bs.scrollspy';
+  const EVENT_KEY$2 = `.${DATA_KEY$2}`;
+  const DATA_API_KEY$1 = '.data-api';
+  const Default$1 = {
+    offset: 10,
+    method: 'auto',
+    target: ''
+  };
+  const DefaultType$1 = {
+    offset: 'number',
+    method: 'string',
+    target: '(string|element)'
+  };
+  const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
+  const EVENT_SCROLL = `scroll${EVENT_KEY$2}`;
+  const EVENT_LOAD_DATA_API = `load${EVENT_KEY$2}${DATA_API_KEY$1}`;
+  const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
+  const CLASS_NAME_ACTIVE$1 = 'active';
+  const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
+  const SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';
+  const SELECTOR_NAV_LINKS = '.nav-link';
+  const SELECTOR_NAV_ITEMS = '.nav-item';
+  const SELECTOR_LIST_ITEMS = '.list-group-item';
+  const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`;
+  const SELECTOR_DROPDOWN$1 = '.dropdown';
+  const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
+  const METHOD_OFFSET = 'offset';
+  const METHOD_POSITION = 'position';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class ScrollSpy extends BaseComponent {
+    constructor(element, config) {
+      super(element);
+      this._scrollElement = this._element.tagName === 'BODY' ? window : this._element;
+      this._config = this._getConfig(config);
+      this._offsets = [];
+      this._targets = [];
+      this._activeTarget = null;
+      this._scrollHeight = 0;
+      EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process());
+      this.refresh();
+
+      this._process();
+    } // Getters
+
+
+    static get Default() {
+      return Default$1;
+    }
+
+    static get NAME() {
+      return NAME$2;
+    } // Public
+
+
+    refresh() {
+      const autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
+      const offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
+      const offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
+      this._offsets = [];
+      this._targets = [];
+      this._scrollHeight = this._getScrollHeight();
+      const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target);
+      targets.map(element => {
+        const targetSelector = getSelectorFromElement(element);
+        const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null;
+
+        if (target) {
+          const targetBCR = target.getBoundingClientRect();
+
+          if (targetBCR.width || targetBCR.height) {
+            return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];
+          }
+        }
+
+        return null;
+      }).filter(item => item).sort((a, b) => a[0] - b[0]).forEach(item => {
+        this._offsets.push(item[0]);
+
+        this._targets.push(item[1]);
+      });
+    }
+
+    dispose() {
+      EventHandler.off(this._scrollElement, EVENT_KEY$2);
+      super.dispose();
+    } // Private
+
+
+    _getConfig(config) {
+      config = { ...Default$1,
+        ...Manipulator.getDataAttributes(this._element),
+        ...(typeof config === 'object' && config ? config : {})
+      };
+      config.target = getElement(config.target) || document.documentElement;
+      typeCheckConfig(NAME$2, config, DefaultType$1);
+      return config;
+    }
+
+    _getScrollTop() {
+      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
+    }
+
+    _getScrollHeight() {
+      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
+    }
+
+    _getOffsetHeight() {
+      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
+    }
+
+    _process() {
+      const scrollTop = this._getScrollTop() + this._config.offset;
+
+      const scrollHeight = this._getScrollHeight();
+
+      const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
+
+      if (this._scrollHeight !== scrollHeight) {
+        this.refresh();
+      }
+
+      if (scrollTop >= maxScroll) {
+        const target = this._targets[this._targets.length - 1];
+
+        if (this._activeTarget !== target) {
+          this._activate(target);
+        }
+
+        return;
+      }
+
+      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
+        this._activeTarget = null;
+
+        this._clear();
+
+        return;
+      }
+
+      for (let i = this._offsets.length; i--;) {
+        const isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
+
+        if (isActiveTarget) {
+          this._activate(this._targets[i]);
+        }
+      }
+    }
+
+    _activate(target) {
+      this._activeTarget = target;
+
+      this._clear();
+
+      const queries = SELECTOR_LINK_ITEMS.split(',').map(selector => `${selector}[data-bs-target="${target}"],${selector}[href="${target}"]`);
+      const link = SelectorEngine.findOne(queries.join(','), this._config.target);
+      link.classList.add(CLASS_NAME_ACTIVE$1);
+
+      if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
+        SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, link.closest(SELECTOR_DROPDOWN$1)).classList.add(CLASS_NAME_ACTIVE$1);
+      } else {
+        SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP$1).forEach(listGroup => {
+          // Set triggered links parents as active
+          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
+          SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1)); // Handle special case when .nav-link is inside .nav-item
+
+          SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(navItem => {
+            SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1));
+          });
+        });
+      }
+
+      EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {
+        relatedTarget: target
+      });
+    }
+
+    _clear() {
+      SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target).filter(node => node.classList.contains(CLASS_NAME_ACTIVE$1)).forEach(node => node.classList.remove(CLASS_NAME_ACTIVE$1));
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = ScrollSpy.getOrCreateInstance(this, config);
+
+        if (typeof config !== 'string') {
+          return;
+        }
+
+        if (typeof data[config] === 'undefined') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config]();
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
+    SelectorEngine.find(SELECTOR_DATA_SPY).forEach(spy => new ScrollSpy(spy));
+  });
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .ScrollSpy to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(ScrollSpy);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): tab.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$1 = 'tab';
+  const DATA_KEY$1 = 'bs.tab';
+  const EVENT_KEY$1 = `.${DATA_KEY$1}`;
+  const DATA_API_KEY = '.data-api';
+  const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
+  const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
+  const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
+  const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
+  const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}${DATA_API_KEY}`;
+  const CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
+  const CLASS_NAME_ACTIVE = 'active';
+  const CLASS_NAME_FADE$1 = 'fade';
+  const CLASS_NAME_SHOW$1 = 'show';
+  const SELECTOR_DROPDOWN = '.dropdown';
+  const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
+  const SELECTOR_ACTIVE = '.active';
+  const SELECTOR_ACTIVE_UL = ':scope > li > .active';
+  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]';
+  const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
+  const SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Tab extends BaseComponent {
+    // Getters
+    static get NAME() {
+      return NAME$1;
+    } // Public
+
+
+    show() {
+      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
+        return;
+      }
+
+      let previous;
+      const target = getElementFromSelector(this._element);
+
+      const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);
+
+      if (listElement) {
+        const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
+        previous = SelectorEngine.find(itemSelector, listElement);
+        previous = previous[previous.length - 1];
+      }
+
+      const hideEvent = previous ? EventHandler.trigger(previous, EVENT_HIDE$1, {
+        relatedTarget: this._element
+      }) : null;
+      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, {
+        relatedTarget: previous
+      });
+
+      if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {
+        return;
+      }
+
+      this._activate(this._element, listElement);
+
+      const complete = () => {
+        EventHandler.trigger(previous, EVENT_HIDDEN$1, {
+          relatedTarget: this._element
+        });
+        EventHandler.trigger(this._element, EVENT_SHOWN$1, {
+          relatedTarget: previous
+        });
+      };
+
+      if (target) {
+        this._activate(target, target.parentNode, complete);
+      } else {
+        complete();
+      }
+    } // Private
+
+
+    _activate(element, container, callback) {
+      const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE);
+      const active = activeElements[0];
+      const isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$1);
+
+      const complete = () => this._transitionComplete(element, active, callback);
+
+      if (active && isTransitioning) {
+        active.classList.remove(CLASS_NAME_SHOW$1);
+
+        this._queueCallback(complete, element, true);
+      } else {
+        complete();
+      }
+    }
+
+    _transitionComplete(element, active, callback) {
+      if (active) {
+        active.classList.remove(CLASS_NAME_ACTIVE);
+        const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);
+
+        if (dropdownChild) {
+          dropdownChild.classList.remove(CLASS_NAME_ACTIVE);
+        }
+
+        if (active.getAttribute('role') === 'tab') {
+          active.setAttribute('aria-selected', false);
+        }
+      }
+
+      element.classList.add(CLASS_NAME_ACTIVE);
+
+      if (element.getAttribute('role') === 'tab') {
+        element.setAttribute('aria-selected', true);
+      }
+
+      reflow(element);
+
+      if (element.classList.contains(CLASS_NAME_FADE$1)) {
+        element.classList.add(CLASS_NAME_SHOW$1);
+      }
+
+      let parent = element.parentNode;
+
+      if (parent && parent.nodeName === 'LI') {
+        parent = parent.parentNode;
+      }
+
+      if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
+        const dropdownElement = element.closest(SELECTOR_DROPDOWN);
+
+        if (dropdownElement) {
+          SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));
+        }
+
+        element.setAttribute('aria-expanded', true);
+      }
+
+      if (callback) {
+        callback();
+      }
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Tab.getOrCreateInstance(this);
+
+        if (typeof config === 'string') {
+          if (typeof data[config] === 'undefined') {
+            throw new TypeError(`No method named "${config}"`);
+          }
+
+          data[config]();
+        }
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
+    if (['A', 'AREA'].includes(this.tagName)) {
+      event.preventDefault();
+    }
+
+    if (isDisabled(this)) {
+      return;
+    }
+
+    const data = Tab.getOrCreateInstance(this);
+    data.show();
+  });
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Tab to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Tab);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): toast.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME = 'toast';
+  const DATA_KEY = 'bs.toast';
+  const EVENT_KEY = `.${DATA_KEY}`;
+  const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
+  const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
+  const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
+  const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
+  const EVENT_HIDE = `hide${EVENT_KEY}`;
+  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
+  const EVENT_SHOW = `show${EVENT_KEY}`;
+  const EVENT_SHOWN = `shown${EVENT_KEY}`;
+  const CLASS_NAME_FADE = 'fade';
+  const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
+
+  const CLASS_NAME_SHOW = 'show';
+  const CLASS_NAME_SHOWING = 'showing';
+  const DefaultType = {
+    animation: 'boolean',
+    autohide: 'boolean',
+    delay: 'number'
+  };
+  const Default = {
+    animation: true,
+    autohide: true,
+    delay: 5000
+  };
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Toast extends BaseComponent {
+    constructor(element, config) {
+      super(element);
+      this._config = this._getConfig(config);
+      this._timeout = null;
+      this._hasMouseInteraction = false;
+      this._hasKeyboardInteraction = false;
+
+      this._setListeners();
+    } // Getters
+
+
+    static get DefaultType() {
+      return DefaultType;
+    }
+
+    static get Default() {
+      return Default;
+    }
+
+    static get NAME() {
+      return NAME;
+    } // Public
+
+
+    show() {
+      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
+
+      if (showEvent.defaultPrevented) {
+        return;
+      }
+
+      this._clearTimeout();
+
+      if (this._config.animation) {
+        this._element.classList.add(CLASS_NAME_FADE);
+      }
+
+      const complete = () => {
+        this._element.classList.remove(CLASS_NAME_SHOWING);
+
+        EventHandler.trigger(this._element, EVENT_SHOWN);
+
+        this._maybeScheduleHide();
+      };
+
+      this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
+
+
+      reflow(this._element);
+
+      this._element.classList.add(CLASS_NAME_SHOW);
+
+      this._element.classList.add(CLASS_NAME_SHOWING);
+
+      this._queueCallback(complete, this._element, this._config.animation);
+    }
+
+    hide() {
+      if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
+        return;
+      }
+
+      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
+
+      if (hideEvent.defaultPrevented) {
+        return;
+      }
+
+      const complete = () => {
+        this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
+
+
+        this._element.classList.remove(CLASS_NAME_SHOWING);
+
+        this._element.classList.remove(CLASS_NAME_SHOW);
+
+        EventHandler.trigger(this._element, EVENT_HIDDEN);
+      };
+
+      this._element.classList.add(CLASS_NAME_SHOWING);
+
+      this._queueCallback(complete, this._element, this._config.animation);
+    }
+
+    dispose() {
+      this._clearTimeout();
+
+      if (this._element.classList.contains(CLASS_NAME_SHOW)) {
+        this._element.classList.remove(CLASS_NAME_SHOW);
+      }
+
+      super.dispose();
+    } // Private
+
+
+    _getConfig(config) {
+      config = { ...Default,
+        ...Manipulator.getDataAttributes(this._element),
+        ...(typeof config === 'object' && config ? config : {})
+      };
+      typeCheckConfig(NAME, config, this.constructor.DefaultType);
+      return config;
+    }
+
+    _maybeScheduleHide() {
+      if (!this._config.autohide) {
+        return;
+      }
+
+      if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
+        return;
+      }
+
+      this._timeout = setTimeout(() => {
+        this.hide();
+      }, this._config.delay);
+    }
+
+    _onInteraction(event, isInteracting) {
+      switch (event.type) {
+        case 'mouseover':
+        case 'mouseout':
+          this._hasMouseInteraction = isInteracting;
+          break;
+
+        case 'focusin':
+        case 'focusout':
+          this._hasKeyboardInteraction = isInteracting;
+          break;
+      }
+
+      if (isInteracting) {
+        this._clearTimeout();
+
+        return;
+      }
+
+      const nextElement = event.relatedTarget;
+
+      if (this._element === nextElement || this._element.contains(nextElement)) {
+        return;
+      }
+
+      this._maybeScheduleHide();
+    }
+
+    _setListeners() {
+      EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
+      EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
+      EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
+      EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
+    }
+
+    _clearTimeout() {
+      clearTimeout(this._timeout);
+      this._timeout = null;
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Toast.getOrCreateInstance(this, config);
+
+        if (typeof config === 'string') {
+          if (typeof data[config] === 'undefined') {
+            throw new TypeError(`No method named "${config}"`);
+          }
+
+          data[config](this);
+        }
+      });
+    }
+
+  }
+
+  enableDismissTrigger(Toast);
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Toast to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Toast);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): index.umd.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  var index_umd = {
+    Alert,
+    Button,
+    Carousel,
+    Collapse,
+    Dropdown,
+    Modal,
+    Offcanvas,
+    Popover,
+    ScrollSpy,
+    Tab,
+    Toast,
+    Tooltip
+  };
+
+  return index_umd;
+
+})));
+//# sourceMappingURL=bootstrap.bundle.js.map
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map
new file mode 100644
index 0000000..631f1ec
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"bootstrap.bundle.js","sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/math.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n  if (obj === null || obj === undefined) {\n    return `${obj}`\n  }\n\n  return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttr = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n      hrefAttr = `#${hrefAttr.split('#')[1]}`\n    }\n\n    selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n  }\n\n  return selector\n}\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element)\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null\n  }\n\n  return null\n}\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element)\n\n  return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => {\n  if (!obj || typeof obj !== 'object') {\n    return false\n  }\n\n  if (typeof obj.jquery !== 'undefined') {\n    obj = obj[0]\n  }\n\n  return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n  if (isElement(obj)) { // it's a jQuery object or a node element\n    return obj.jquery ? obj[0] : obj\n  }\n\n  if (typeof obj === 'string' && obj.length > 0) {\n    return document.querySelector(obj)\n  }\n\n  return null\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n  Object.keys(configTypes).forEach(property => {\n    const expectedTypes = configTypes[property]\n    const value = config[property]\n    const valueType = value && isElement(value) ? 'element' : toType(value)\n\n    if (!new RegExp(expectedTypes).test(valueType)) {\n      throw new TypeError(\n        `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n      )\n    }\n  })\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  // eslint-disable-next-line no-unused-expressions\n  element.offsetHeight\n}\n\nconst getjQuery = () => {\n  const { jQuery } = window\n\n  if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return jQuery\n  }\n\n  return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        DOMContentLoadedCallbacks.forEach(callback => callback())\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = callback => {\n  if (typeof callback === 'function') {\n    callback()\n  }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n  }\n\n  const listLength = list.length\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  getElement,\n  getUID,\n  getSelectorFromElement,\n  getElementFromSelector,\n  getTransitionDurationFromElement,\n  triggerTransitionEnd,\n  isElement,\n  typeCheckConfig,\n  isVisible,\n  isDisabled,\n  findShadowRoot,\n  noop,\n  getNextActiveElement,\n  reflow,\n  getjQuery,\n  onDOMContentLoaded,\n  isRTL,\n  defineJQueryPlugin,\n  execute,\n  executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n  const uid = getUidEvent(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    event.delegateTarget = element\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (let i = domElements.length; i--;) {\n        if (domElements[i] === target) {\n          event.delegateTarget = target\n\n          if (handler.oneOff) {\n            // eslint-disable-next-line unicorn/consistent-destructuring\n            EventHandler.off(element, event.type, selector, fn)\n          }\n\n          return fn.apply(target, [event])\n        }\n      }\n    }\n\n    // To please ESLint\n    return null\n  }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n  const uidEventList = Object.keys(events)\n\n  for (let i = 0, len = uidEventList.length; i < len; i++) {\n    const event = events[uidEventList[i]]\n\n    if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n      return event\n    }\n  }\n\n  return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n  const delegation = typeof handler === 'string'\n  const originalHandler = delegation ? delegationFn : handler\n\n  let typeEvent = getTypeEvent(originalTypeEvent)\n  const isNative = nativeEvents.has(typeEvent)\n\n  if (!isNative) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  if (!handler) {\n    handler = delegationFn\n    delegationFn = null\n  }\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (customEventsRegex.test(originalTypeEvent)) {\n    const wrapFn = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    if (delegationFn) {\n      delegationFn = wrapFn(delegationFn)\n    } else {\n      handler = wrapFn(handler)\n    }\n  }\n\n  const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n  const events = getEvent(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n  if (previousFn) {\n    previousFn.oneOff = previousFn.oneOff && oneOff\n\n    return\n  }\n\n  const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = delegation ?\n    bootstrapDelegationHandler(element, handler, delegationFn) :\n    bootstrapHandler(element, handler)\n\n  fn.delegationSelector = delegation ? handler : null\n  fn.originalHandler = originalHandler\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  Object.keys(storeElementEvent).forEach(handlerKey => {\n    if (handlerKey.includes(namespace)) {\n      const event = storeElementEvent[handlerKey]\n\n      removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n    }\n  })\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, false)\n  },\n\n  one(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFn) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getEvent(element)\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof originalHandler !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!events || !events[typeEvent]) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      Object.keys(events).forEach(elementEvent => {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      })\n    }\n\n    const storeElementEvent = events[typeEvent] || {}\n    Object.keys(storeElementEvent).forEach(keyHandlers => {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        const event = storeElementEvent[keyHandlers]\n\n        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n      }\n    })\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const $ = getjQuery()\n    const typeEvent = getTypeEvent(event)\n    const inNamespace = event !== typeEvent\n    const isNative = nativeEvents.has(typeEvent)\n\n    let jQueryEvent\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n    let evt = null\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args)\n\n      $(element).trigger(jQueryEvent)\n      bubbles = !jQueryEvent.isPropagationStopped()\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n      defaultPrevented = jQueryEvent.isDefaultPrevented()\n    }\n\n    if (isNative) {\n      evt = document.createEvent('HTMLEvents')\n      evt.initEvent(typeEvent, bubbles, true)\n    } else {\n      evt = new CustomEvent(event, {\n        bubbles,\n        cancelable: true\n      })\n    }\n\n    // merge custom information in our event\n    if (typeof args !== 'undefined') {\n      Object.keys(args).forEach(key => {\n        Object.defineProperty(evt, key, {\n          get() {\n            return args[key]\n          }\n        })\n      })\n    }\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n  executeAfterTransition,\n  getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.1.0'\n\nclass BaseComponent {\n  constructor(element) {\n    element = getElement(element)\n\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    Object.getOwnPropertyNames(this).forEach(propertyName => {\n      this[propertyName] = null\n    })\n  }\n\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  /** Static */\n\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nexport {\n  enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nenableDismissTrigger(Alert, 'close')\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this)\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n  if (val === 'true') {\n    return true\n  }\n\n  if (val === 'false') {\n    return false\n  }\n\n  if (val === Number(val).toString()) {\n    return Number(val)\n  }\n\n  if (val === '' || val === 'null') {\n    return null\n  }\n\n  return val\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n\n    Object.keys(element.dataset)\n      .filter(key => key.startsWith('bs'))\n      .forEach(key => {\n        let pureKey = key.replace(/^bs/, '')\n        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n        attributes[pureKey] = normalizeData(element.dataset[key])\n      })\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  },\n\n  offset(element) {\n    const rect = element.getBoundingClientRect()\n\n    return {\n      top: rect.top + window.pageYOffset,\n      left: rect.left + window.pageXOffset\n    }\n  },\n\n  position(element) {\n    return {\n      top: element.offsetTop,\n      left: element.offsetLeft\n    }\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children)\n      .filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n\n    let ancestor = element.parentNode\n\n    while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n      if (ancestor.matches(selector)) {\n        parents.push(ancestor)\n      }\n\n      ancestor = ancestor.parentNode\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  getNextActiveElement,\n  reflow,\n  triggerTransitionEnd,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  slide: false,\n  pause: 'hover',\n  wrap: true,\n  touch: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)',\n  keyboard: 'boolean',\n  slide: '(boolean|string)',\n  pause: '(string|boolean)',\n  wrap: 'boolean',\n  touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._items = null\n    this._interval = null\n    this._activeElement = null\n    this._isPaused = false\n    this._isSliding = false\n    this.touchTimeout = null\n    this.touchStartX = 0\n    this.touchDeltaX = 0\n\n    this._config = this._getConfig(config)\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n    this._pointerEvent = Boolean(window.PointerEvent)\n\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause(event) {\n    if (!event) {\n      this._isPaused = true\n    }\n\n    if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n      triggerTransitionEnd(this._element)\n      this.cycle(true)\n    }\n\n    clearInterval(this._interval)\n    this._interval = null\n  }\n\n  cycle(event) {\n    if (!event) {\n      this._isPaused = false\n    }\n\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    if (this._config && this._config.interval && !this._isPaused) {\n      this._updateInterval()\n\n      this._interval = setInterval(\n        (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n        this._config.interval\n      )\n    }\n  }\n\n  to(index) {\n    this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeIndex = this._getItemIndex(this._activeElement)\n\n    if (index > this._items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    if (activeIndex === index) {\n      this.pause()\n      this.cycle()\n      return\n    }\n\n    const order = index > activeIndex ?\n      ORDER_NEXT :\n      ORDER_PREV\n\n    this._slide(order, this._items[index])\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _handleSwipe() {\n    const absDeltax = Math.abs(this.touchDeltaX)\n\n    if (absDeltax <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltax / this.touchDeltaX\n\n    this.touchDeltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n    }\n\n    if (this._config.touch && this._touchSupported) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    const start = event => {\n      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n        this.touchStartX = event.clientX\n      } else if (!this._pointerEvent) {\n        this.touchStartX = event.touches[0].clientX\n      }\n    }\n\n    const move = event => {\n      // ensure swiping with one touch and not pinching\n      this.touchDeltaX = event.touches && event.touches.length > 1 ?\n        0 :\n        event.touches[0].clientX - this.touchStartX\n    }\n\n    const end = event => {\n      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n        this.touchDeltaX = event.clientX - this.touchStartX\n      }\n\n      this._handleSwipe()\n      if (this._config.pause === 'hover') {\n        // If it's a touch-enabled device, mouseenter/leave are fired as\n        // part of the mouse compatibility events on first tap - the carousel\n        // would stop cycling until user tapped out of it;\n        // here, we listen for touchend, explicitly pause the carousel\n        // (as if it's the second time we tap on it, mouseenter compat event\n        // is NOT fired) and after a timeout (to allow for mouse compatibility\n        // events to fire) we explicitly restart cycling\n\n        this.pause()\n        if (this.touchTimeout) {\n          clearTimeout(this.touchTimeout)\n        }\n\n        this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n      }\n    }\n\n    SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n      EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n    })\n\n    if (this._pointerEvent) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n    }\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(direction)\n    }\n  }\n\n  _getItemIndex(element) {\n    this._items = element && element.parentNode ?\n      SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n      []\n\n    return this._items.indexOf(element)\n  }\n\n  _getItemByOrder(order, activeElement) {\n    const isNext = order === ORDER_NEXT\n    return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n  }\n\n  _triggerSlideEvent(relatedTarget, eventDirectionName) {\n    const targetIndex = this._getItemIndex(relatedTarget)\n    const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n    return EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget,\n      direction: eventDirectionName,\n      from: fromIndex,\n      to: targetIndex\n    })\n  }\n\n  _setActiveIndicatorElement(element) {\n    if (this._indicatorsElement) {\n      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n      activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n      activeIndicator.removeAttribute('aria-current')\n\n      const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n      for (let i = 0; i < indicators.length; i++) {\n        if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n          indicators[i].classList.add(CLASS_NAME_ACTIVE)\n          indicators[i].setAttribute('aria-current', 'true')\n          break\n        }\n      }\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    if (elementInterval) {\n      this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n      this._config.interval = elementInterval\n    } else {\n      this._config.interval = this._config.defaultInterval || this._config.interval\n    }\n  }\n\n  _slide(directionOrOrder, element) {\n    const order = this._directionToOrder(directionOrOrder)\n    const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeElementIndex = this._getItemIndex(activeElement)\n    const nextElement = element || this._getItemByOrder(order, activeElement)\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n    const isCycling = Boolean(this._interval)\n\n    const isNext = order === ORDER_NEXT\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n    const eventDirectionName = this._orderToDirection(order)\n\n    if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n      this._isSliding = false\n      return\n    }\n\n    if (this._isSliding) {\n      return\n    }\n\n    const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    this._isSliding = true\n\n    if (isCycling) {\n      this.pause()\n    }\n\n    this._setActiveIndicatorElement(nextElement)\n    this._activeElement = nextElement\n\n    const triggerSlidEvent = () => {\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      })\n    }\n\n    if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n      nextElement.classList.add(orderClassName)\n\n      reflow(nextElement)\n\n      activeElement.classList.add(directionalClassName)\n      nextElement.classList.add(directionalClassName)\n\n      const completeCallBack = () => {\n        nextElement.classList.remove(directionalClassName, orderClassName)\n        nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n        activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n        this._isSliding = false\n\n        setTimeout(triggerSlidEvent, 0)\n      }\n\n      this._queueCallback(completeCallBack, activeElement, true)\n    } else {\n      activeElement.classList.remove(CLASS_NAME_ACTIVE)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      this._isSliding = false\n      triggerSlidEvent()\n    }\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n      return direction\n    }\n\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n      return order\n    }\n\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n\n  // Static\n\n  static carouselInterface(element, config) {\n    const data = Carousel.getOrCreateInstance(element, config)\n\n    let { _config } = data\n    if (typeof config === 'object') {\n      _config = {\n        ..._config,\n        ...config\n      }\n    }\n\n    const action = typeof config === 'string' ? config : _config.slide\n\n    if (typeof config === 'number') {\n      data.to(config)\n    } else if (typeof action === 'string') {\n      if (typeof data[action] === 'undefined') {\n        throw new TypeError(`No method named \"${action}\"`)\n      }\n\n      data[action]()\n    } else if (_config.interval && _config.ride) {\n      data.pause()\n      data.cycle()\n    }\n  }\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      Carousel.carouselInterface(this, config)\n    })\n  }\n\n  static dataApiClickHandler(event) {\n    const target = getElementFromSelector(this)\n\n    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n      return\n    }\n\n    const config = {\n      ...Manipulator.getDataAttributes(target),\n      ...Manipulator.getDataAttributes(this)\n    }\n    const slideIndex = this.getAttribute('data-bs-slide-to')\n\n    if (slideIndex) {\n      config.interval = false\n    }\n\n    Carousel.carouselInterface(target, config)\n\n    if (slideIndex) {\n      Carousel.getInstance(target).to(slideIndex)\n    }\n\n    event.preventDefault()\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (let i = 0, len = carousels.length; i < len; i++) {\n    Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]))\n  }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getSelectorFromElement,\n  getElementFromSelector,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  toggle: true,\n  parent: null\n}\n\nconst DefaultType = {\n  toggle: 'boolean',\n  parent: '(null|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._isTransitioning = false\n    this._config = this._getConfig(config)\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggleList.length; i < len; i++) {\n      const elem = toggleList[i]\n      const selector = getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElem => foundElem === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._selector = selector\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let actives = []\n    let activesData\n\n    if (this._config.parent) {\n      const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n      actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)) // remove children if greater depth\n    }\n\n    const container = SelectorEngine.findOne(this._selector)\n    if (actives.length) {\n      const tempActiveData = actives.find(elem => container !== elem)\n      activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null\n\n      if (activesData && activesData._isTransitioning) {\n        return\n      }\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    actives.forEach(elemActive => {\n      if (container !== elemActive) {\n        Collapse.getOrCreateInstance(elemActive, { toggle: false }).hide()\n      }\n\n      if (!activesData) {\n        Data.set(elemActive, DATA_KEY, null)\n      }\n    })\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    const triggerArrayLength = this._triggerArray.length\n    for (let i = 0; i < triggerArrayLength; i++) {\n      const trigger = this._triggerArray[i]\n      const elem = getElementFromSelector(trigger)\n\n      if (elem && !this._isShown(elem)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n    SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem))\n      .forEach(element => {\n        const selected = getElementFromSelector(element)\n\n        if (selected) {\n          this._addAriaAndCollapsedClass([element], this._isShown(selected))\n        }\n      })\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    triggerArray.forEach(elem => {\n      if (isOpen) {\n        elem.classList.remove(CLASS_NAME_COLLAPSED)\n      } else {\n        elem.classList.add(CLASS_NAME_COLLAPSED)\n      }\n\n      elem.setAttribute('aria-expanded', isOpen)\n    })\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const _config = {}\n      if (typeof config === 'string' && /show|hide/.test(config)) {\n        _config.toggle = false\n      }\n\n      const data = Collapse.getOrCreateInstance(this, _config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  const selector = getSelectorFromElement(this)\n  const selectorElements = SelectorEngine.find(selector)\n\n  selectorElements.forEach(element => {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","import { isHTMLElement } from \"./instanceOf.js\";\nvar round = Math.round;\nexport default function getBoundingClientRect(element, includeScale) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  var rect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (isHTMLElement(element) && includeScale) {\n    // Fallback to 1 in case both values are `0`\n    scaleX = rect.width / element.offsetWidth || 1;\n    scaleY = rect.height / element.offsetHeight || 1;\n  }\n\n  return {\n    width: round(rect.width / scaleX),\n    height: round(rect.height / scaleY),\n    top: round(rect.top / scaleY),\n    right: round(rect.right / scaleX),\n    bottom: round(rect.bottom / scaleY),\n    left: round(rect.left / scaleX),\n    x: round(rect.left / scaleX),\n    y: round(rect.top / scaleY)\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n  var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!isHTMLElement(arrowElement)) {\n      console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n    }\n\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n  var x = _ref.x,\n      y = _ref.y;\n  var win = window;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(round(x * dpr) / dpr) || 0,\n    y: round(round(y * dpr) / dpr) || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets;\n\n  var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n      _ref3$x = _ref3.x,\n      x = _ref3$x === void 0 ? 0 : _ref3$x,\n      _ref3$y = _ref3.y,\n      y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top) {\n      sideY = bottom; // $FlowFixMe[prop-missing]\n\n      y -= offsetParent[heightProp] - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left) {\n      sideX = right; // $FlowFixMe[prop-missing]\n\n      x -= offsetParent[widthProp] - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n  var state = _ref4.state,\n      options = _ref4.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n    if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n      return transitionProperty.indexOf(property) >= 0;\n    })) {\n      console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n    }\n  }\n\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n  // can be obscured underneath it.\n  // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n  // if it isn't open, so if this isn't available, the popper will be detected\n  // to overflow the bottom of the screen too early.\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n    // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n    // errors due to floating point numbers, so we need to check precision.\n    // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n    // Feature detection fails in mobile emulation mode in Chrome.\n    // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n    // 0.001\n    // Fallback here: \"Not Safari\" userAgent\n\n    if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n  var rect = getBoundingClientRect(element);\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var referenceElement = state.elements.reference;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n  var referenceClientRect = getBoundingClientRect(referenceElement);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n    }\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases 鈥� research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis || checkAltAxis) {\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = popperOffsets[mainAxis] + overflow[mainSide];\n    var max = popperOffsets[mainAxis] - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n    var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n    if (checkMainAxis) {\n      var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n      popperOffsets[mainAxis] = preventedOffset;\n      data[mainAxis] = preventedOffset - offset;\n    }\n\n    if (checkAltAxis) {\n      var _mainSide = mainAxis === 'x' ? top : left;\n\n      var _altSide = mainAxis === 'x' ? bottom : right;\n\n      var _offset = popperOffsets[altAxis];\n\n      var _min = _offset + overflow[_mainSide];\n\n      var _max = _offset - overflow[_altSide];\n\n      var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n      popperOffsets[altAxis] = _preventedOffset;\n      data[altAxis] = _preventedOffset - _offset;\n    }\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = rect.width / element.offsetWidth || 1;\n  var scaleY = rect.height / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(options) {\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        }); // Validate the provided modifiers so that the consumer will get warned\n        // if one of the modifiers is invalid for any reason\n\n        if (process.env.NODE_ENV !== \"production\") {\n          var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n            var name = _ref.name;\n            return name;\n          });\n          validateModifiers(modifiers);\n\n          if (getBasePlacement(state.options.placement) === auto) {\n            var flipModifier = state.orderedModifiers.find(function (_ref2) {\n              var name = _ref2.name;\n              return name === 'flip';\n            });\n\n            if (!flipModifier) {\n              console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n            }\n          }\n\n          var _getComputedStyle = getComputedStyle(popper),\n              marginTop = _getComputedStyle.marginTop,\n              marginRight = _getComputedStyle.marginRight,\n              marginBottom = _getComputedStyle.marginBottom,\n              marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n          // cause bugs with positioning, so we'll warn the consumer\n\n\n          if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n            return parseFloat(margin);\n          })) {\n            console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n          }\n        }\n\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update 鈥� it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          if (process.env.NODE_ENV !== \"production\") {\n            console.error(INVALID_ELEMENT_ERROR);\n          }\n\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n        var __debug_loops__ = 0;\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (process.env.NODE_ENV !== \"production\") {\n            __debug_loops__ += 1;\n\n            if (__debug_loops__ > 100) {\n              console.error(INFINITE_LOOP_ERROR);\n              break;\n            }\n          }\n\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update 鈥� it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      if (process.env.NODE_ENV !== \"production\") {\n        console.error(INVALID_ELEMENT_ERROR);\n      }\n\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref3) {\n        var name = _ref3.name,\n            _ref3$options = _ref3.options,\n            options = _ref3$options === void 0 ? {} : _ref3$options,\n            effect = _ref3.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getElementFromSelector,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n  offset: [0, 2],\n  boundary: 'clippingParents',\n  reference: 'toggle',\n  display: 'dynamic',\n  popperConfig: null,\n  autoClose: true\n}\n\nconst DefaultType = {\n  offset: '(array|string|function)',\n  boundary: '(string|element)',\n  reference: '(string|element|object)',\n  display: 'string',\n  popperConfig: '(null|object|function)',\n  autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._popper = null\n    this._config = this._getConfig(config)\n    this._menu = this._getMenuElement()\n    this._inNavbar = this._detectNavbar()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown(this._menu)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    const parent = Dropdown.getParentFromElement(this._element)\n    // Totally disable Popper for Dropdowns in Navbar\n    if (this._inNavbar) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n    } else {\n      this._createPopper(parent)\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement &&\n      !parent.closest(SELECTOR_NAVBAR_NAV)) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown(this._menu)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = {\n      ...this.constructor.Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createPopper(parent) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    const popperConfig = this._getPopperConfig()\n    const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n    if (isDisplayStatic) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n    }\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getMenuElement() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._element.parentNode\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display\n    if (this._config.display === 'static') {\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n\n  static clearMenus(event) {\n    if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n      return\n    }\n\n    const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggles.length; i < len; i++) {\n      const context = Dropdown.getInstance(toggles[i])\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      if (!context._isShown()) {\n        continue\n      }\n\n      const relatedTarget = {\n        relatedTarget: context._element\n      }\n\n      if (event) {\n        const composedPath = event.composedPath()\n        const isMenuTarget = composedPath.includes(context._menu)\n        if (\n          composedPath.includes(context._element) ||\n          (context._config.autoClose === 'inside' && !isMenuTarget) ||\n          (context._config.autoClose === 'outside' && isMenuTarget)\n        ) {\n          continue\n        }\n\n        // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n        if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n          continue\n        }\n\n        if (event.type === 'click') {\n          relatedTarget.clickEvent = event\n        }\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static getParentFromElement(element) {\n    return getElementFromSelector(element) || element.parentNode\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not input/textarea:\n    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n    // If input/textarea:\n    //  - If space key => not a dropdown command\n    //  - If key is other than escape\n    //    - If key is not up or down => not a dropdown command\n    //    - If trigger inside the menu => not a dropdown command\n    if (/input|textarea/i.test(event.target.tagName) ?\n      event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n      ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n        event.target.closest(SELECTOR_MENU))) :\n      !REGEXP_KEYDOWN.test(event.key)) {\n      return\n    }\n\n    const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n    if (!isActive && event.key === ESCAPE_KEY) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    if (event.key === ESCAPE_KEY) {\n      instance.hide()\n      return\n    }\n\n    if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n      if (!isActive) {\n        instance.show()\n      }\n\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (!isActive || event.key === SPACE_KEY) {\n      Dropdown.clearMenus()\n    }\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n  }\n\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProp, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProp)\n      const calculatedValue = window.getComputedStyle(element)[styleProp]\n      element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n  }\n\n  _saveInitialAttribute(element, styleProp) {\n    const actualValue = element.style[styleProp]\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProp, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProp) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProp)\n      if (typeof value === 'undefined') {\n        element.style.removeProperty(styleProp)\n      } else {\n        Manipulator.removeDataAttribute(element, styleProp)\n        element.style[styleProp] = value\n      }\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n    } else {\n      SelectorEngine.find(selector, this._element).forEach(callBack)\n    }\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n  className: 'modal-backdrop',\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  isAnimated: false,\n  rootElement: 'body', // give the choice to place backdrop under different elements\n  clickCallback: null\n}\n\nconst DefaultType = {\n  className: 'string',\n  isVisible: 'boolean',\n  isAnimated: 'boolean',\n  rootElement: '(element|string)',\n  clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    if (this._config.isAnimated) {\n      reflow(this._getElement())\n    }\n\n    this._getElement().classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  // Private\n\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    this._config.rootElement.append(this._getElement())\n\n    EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport { typeCheckConfig } from './index'\n\nconst Default = {\n  trapElement: null, // The element to trap focus inside of\n  autofocus: true\n}\n\nconst DefaultType = {\n  trapElement: 'element',\n  autofocus: 'boolean'\n}\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nclass FocusTrap {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  activate() {\n    const { trapElement, autofocus } = this._config\n\n    if (this._isActive) {\n      return\n    }\n\n    if (autofocus) {\n      trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n\n  _handleFocusin(event) {\n    const { target } = event\n    const { trapElement } = this._config\n\n    if (\n      target === document ||\n      target === trapElement ||\n      trapElement.contains(target)\n    ) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  focus: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._isShown = false\n    this._ignoreBackdropClick = false\n    this._isTransitioning = false\n    this._scrollBar = new ScrollBarHelper()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n\n    if (this._isAnimated()) {\n      this._isTransitioning = true\n    }\n\n    this._scrollBar.hide()\n\n    document.body.classList.add(CLASS_NAME_OPEN)\n\n    this._adjustDialog()\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n      EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n        if (event.target === this._element) {\n          this._ignoreBackdropClick = true\n        }\n      })\n    })\n\n    this._showBackdrop(() => this._showElement(relatedTarget))\n  }\n\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = false\n    const isAnimated = this._isAnimated()\n\n    if (isAnimated) {\n      this._isTransitioning = true\n    }\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    this._focustrap.deactivate()\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n    EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n    this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n  }\n\n  dispose() {\n    [window, this._dialog]\n      .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n      isAnimated: this._isAnimated()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _showElement(relatedTarget) {\n    const isAnimated = this._isAnimated()\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n    if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n      // Don't move modal's DOM position\n      document.body.append(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.scrollTop = 0\n\n    if (modalBody) {\n      modalBody.scrollTop = 0\n    }\n\n    if (isAnimated) {\n      reflow(this._element)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate()\n      }\n\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }\n\n    this._queueCallback(transitionComplete, this._dialog, isAnimated)\n  }\n\n  _setEscapeEvent() {\n    if (this._isShown) {\n      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n        if (this._config.keyboard && event.key === ESCAPE_KEY) {\n          event.preventDefault()\n          this.hide()\n        } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n          this._triggerBackdropTransition()\n        }\n      })\n    } else {\n      EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n    }\n  }\n\n  _setResizeEvent() {\n    if (this._isShown) {\n      EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n    } else {\n      EventHandler.off(window, EVENT_RESIZE)\n    }\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._scrollBar.reset()\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    })\n  }\n\n  _showBackdrop(callback) {\n    EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n      if (this._ignoreBackdropClick) {\n        this._ignoreBackdropClick = false\n        return\n      }\n\n      if (event.target !== event.currentTarget) {\n        return\n      }\n\n      if (this._config.backdrop === true) {\n        this.hide()\n      } else if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n      }\n    })\n\n    this._backdrop.show(callback)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const { classList, scrollHeight, style } = this._element\n    const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n    // return if the following background transition hasn't yet completed\n    if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n      return\n    }\n\n    if (!isModalOverflowing) {\n      style.overflowY = 'hidden'\n    }\n\n    classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      classList.remove(CLASS_NAME_STATIC)\n      if (!isModalOverflowing) {\n        this._queueCallback(() => {\n          style.overflowY = ''\n        }, this._dialog)\n      }\n    }, this._dialog)\n\n    this._element.focus()\n  }\n\n  // ----------------------------------------------------------------------\n  // the following methods are used to handle overflowing modals\n  // ----------------------------------------------------------------------\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const scrollbarWidth = this._scrollBar.getWidth()\n    const isBodyOverflowing = scrollbarWidth > 0\n\n    if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n      this._element.style.paddingLeft = `${scrollbarWidth}px`\n    }\n\n    if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n      this._element.style.paddingRight = `${scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  // Static\n\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](relatedTarget)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  const data = Modal.getOrCreateInstance(target)\n\n  data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  isVisible,\n  typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: 'boolean',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._element.style.visibility = 'visible'\n\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll) {\n        this._focustrap.activate()\n      }\n\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.setAttribute('aria-hidden', true)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n      this._element.style.visibility = 'hidden'\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible: this._config.backdrop,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: () => this.hide()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (this._config.keyboard && event.key === ESCAPE_KEY) {\n        this.hide()\n      }\n    })\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (allReadyOpen && allReadyOpen !== target) {\n    Offcanvas.getInstance(allReadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\n  SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())\n)\n\nenableDismissTrigger(Offcanvas)\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n  const attrName = attr.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attrName)) {\n    if (uriAttrs.has(attrName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n    }\n\n    return true\n  }\n\n  const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n  // Check if a regular expression validates the attribute.\n  for (let i = 0, len = regExp.length; i < len; i++) {\n    if (regExp[i].test(attrName)) {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFn && typeof sanitizeFn === 'function') {\n    return sanitizeFn(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const allowlistKeys = Object.keys(allowList)\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (let i = 0, len = elements.length; i < len; i++) {\n    const el = elements[i]\n    const elName = el.nodeName.toLowerCase()\n\n    if (!allowlistKeys.includes(elName)) {\n      el.remove()\n\n      continue\n    }\n\n    const attributeList = [].concat(...el.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n    attributeList.forEach(attr => {\n      if (!allowedAttribute(attr, allowedAttributes)) {\n        el.removeAttribute(attr.nodeName)\n      }\n    })\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  findShadowRoot,\n  getElement,\n  getUID,\n  isElement,\n  isRTL,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport { DefaultAllowlist, sanitizeHtml } from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n  animation: 'boolean',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string',\n  delay: '(number|object)',\n  html: 'boolean',\n  selector: '(string|boolean)',\n  placement: '(string|function)',\n  offset: '(array|string|function)',\n  container: '(string|element|boolean)',\n  fallbackPlacements: 'array',\n  boundary: '(string|element)',\n  customClass: '(string|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  allowList: 'object',\n  popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n              '<div class=\"tooltip-arrow\"></div>' +\n              '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  selector: false,\n  placement: 'top',\n  offset: [0, 0],\n  container: false,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  boundary: 'clippingParents',\n  customClass: '',\n  sanitize: true,\n  sanitizeFn: null,\n  allowList: DefaultAllowlist,\n  popperConfig: null\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    super(element)\n\n    // private\n    this._isEnabled = true\n    this._timeout = 0\n    this._hoverState = ''\n    this._activeTrigger = {}\n    this._popper = null\n\n    // Protected\n    this._config = this._getConfig(config)\n    this.tip = null\n\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle(event) {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (event) {\n      const context = this._initializeOnDelegatedTarget(event)\n\n      context._activeTrigger.click = !context._activeTrigger.click\n\n      if (context._isWithActiveTrigger()) {\n        context._enter(null, context)\n      } else {\n        context._leave(null, context)\n      }\n    } else {\n      if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n        this._leave(null, this)\n        return\n      }\n\n      this._enter(null, this)\n    }\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this.tip) {\n      this.tip.remove()\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this.isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = shadowRoot === null ?\n      this._element.ownerDocument.documentElement.contains(this._element) :\n      shadowRoot.contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const tipId = getUID(this.constructor.NAME)\n\n    tip.setAttribute('id', tipId)\n    this._element.setAttribute('aria-describedby', tipId)\n\n    if (this._config.animation) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    const placement = typeof this._config.placement === 'function' ?\n      this._config.placement.call(this, tip, this._element) :\n      this._config.placement\n\n    const attachment = this._getAttachment(placement)\n    this._addAttachmentClass(attachment)\n\n    const { container } = this._config\n    Data.set(tip, this.constructor.DATA_KEY, this)\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n    }\n\n    if (this._popper) {\n      this._popper.update()\n    } else {\n      this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n    }\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    const customClass = this._resolvePossibleFunction(this._config.customClass)\n    if (customClass) {\n      tip.classList.add(...customClass.split(' '))\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children).forEach(element => {\n        EventHandler.on(element, 'mouseover', noop)\n      })\n    }\n\n    const complete = () => {\n      const prevHoverState = this._hoverState\n\n      this._hoverState = null\n      EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n      if (prevHoverState === HOVER_STATE_OUT) {\n        this._leave(null, this)\n      }\n    }\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n  }\n\n  hide() {\n    if (!this._popper) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (this._hoverState !== HOVER_STATE_SHOW) {\n        tip.remove()\n      }\n\n      this._cleanTipClass()\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n      if (this._popper) {\n        this._popper.destroy()\n        this._popper = null\n      }\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children)\n        .forEach(element => EventHandler.off(element, 'mouseover', noop))\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n    this._hoverState = ''\n  }\n\n  update() {\n    if (this._popper !== null) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n\n  isWithContent() {\n    return Boolean(this.getTitle())\n  }\n\n  getTipElement() {\n    if (this.tip) {\n      return this.tip\n    }\n\n    const element = document.createElement('div')\n    element.innerHTML = this._config.template\n\n    const tip = element.children[0]\n    this.setContent(tip)\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n\n    this.tip = tip\n    return this.tip\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER)\n  }\n\n  _sanitizeAndSetContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!content && templateElement) {\n      templateElement.remove()\n      return\n    }\n\n    // we use append for html objects to maintain js events\n    this.setElementContent(templateElement, content)\n  }\n\n  setElementContent(element, content) {\n    if (element === null) {\n      return\n    }\n\n    if (isElement(content)) {\n      content = getElement(content)\n\n      // content is a DOM node or a jQuery\n      if (this._config.html) {\n        if (content.parentNode !== element) {\n          element.innerHTML = ''\n          element.append(content)\n        }\n      } else {\n        element.textContent = content.textContent\n      }\n\n      return\n    }\n\n    if (this._config.html) {\n      if (this._config.sanitize) {\n        content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n      }\n\n      element.innerHTML = content\n    } else {\n      element.textContent = content\n    }\n  }\n\n  getTitle() {\n    const title = this._element.getAttribute('data-bs-original-title') || this._config.title\n\n    return this._resolvePossibleFunction(title)\n  }\n\n  updateAttachment(attachment) {\n    if (attachment === 'right') {\n      return 'end'\n    }\n\n    if (attachment === 'left') {\n      return 'start'\n    }\n\n    return attachment\n  }\n\n  // Private\n\n  _initializeOnDelegatedTarget(event, context) {\n    return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(content) {\n    return typeof content === 'function' ? content.call(this._element) : content\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'onChange',\n          enabled: true,\n          phase: 'afterWrite',\n          fn: data => this._handlePopperPlacementChange(data)\n        }\n      ],\n      onFirstUpdate: data => {\n        if (data.options.placement !== data.placement) {\n          this._handlePopperPlacementChange(data)\n        }\n      }\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _addAttachmentClass(attachment) {\n    this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`)\n  }\n\n  _getAttachment(placement) {\n    return AttachmentMap[placement.toUpperCase()]\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    triggers.forEach(trigger => {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSEENTER :\n          this.constructor.Event.FOCUSIN\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSELEAVE :\n          this.constructor.Event.FOCUSOUT\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n        EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n      }\n    })\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._config.selector) {\n      this._config = {\n        ...this._config,\n        trigger: 'manual',\n        selector: ''\n      }\n    } else {\n      this._fixTitle()\n    }\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n    const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n    if (title || originalTitleType !== 'string') {\n      this._element.setAttribute('data-bs-original-title', title || '')\n      if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n        this._element.setAttribute('aria-label', title)\n      }\n\n      this._element.setAttribute('title', '')\n    }\n  }\n\n  _enter(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = true\n    }\n\n    if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n      context._hoverState = HOVER_STATE_SHOW\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_SHOW\n\n    if (!context._config.delay || !context._config.delay.show) {\n      context.show()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_SHOW) {\n        context.show()\n      }\n    }, context._config.delay.show)\n  }\n\n  _leave(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = context._element.contains(event.relatedTarget)\n    }\n\n    if (context._isWithActiveTrigger()) {\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_OUT\n\n    if (!context._config.delay || !context._config.delay.hide) {\n      context.hide()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_OUT) {\n        context.hide()\n      }\n    }, context._config.delay.hide)\n  }\n\n  _isWithActiveTrigger() {\n    for (const trigger in this._activeTrigger) {\n      if (this._activeTrigger[trigger]) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    Object.keys(dataAttributes).forEach(dataAttr => {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n        delete dataAttributes[dataAttr]\n      }\n    })\n\n    config = {\n      ...this.constructor.Default,\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (config.sanitize) {\n      config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const key in this._config) {\n      if (this.constructor.Default[key] !== this._config[key]) {\n        config[key] = this._config[key]\n      }\n    }\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _cleanTipClass() {\n    const tip = this.getTipElement()\n    const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g')\n    const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex)\n    if (tabClass !== null && tabClass.length > 0) {\n      tabClass.map(token => token.trim())\n        .forEach(tClass => tip.classList.remove(tClass))\n    }\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX\n  }\n\n  _handlePopperPlacementChange(popperData) {\n    const { state } = popperData\n\n    if (!state) {\n      return\n    }\n\n    this.tip = state.elements.popper\n    this._cleanTipClass()\n    this._addAttachmentClass(this._getAttachment(state.placement))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\n\nconst Default = {\n  ...Tooltip.Default,\n  placement: 'right',\n  offset: [0, 8],\n  trigger: 'click',\n  content: '',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n              '<div class=\"popover-arrow\"></div>' +\n              '<h3 class=\"popover-header\"></h3>' +\n              '<div class=\"popover-body\"></div>' +\n            '</div>'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(string|element|function)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Overrides\n\n  isWithContent() {\n    return this.getTitle() || this._getContent()\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE)\n    this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT)\n  }\n\n  // Private\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getSelectorFromElement,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  offset: 10,\n  method: 'auto',\n  target: ''\n}\n\nconst DefaultType = {\n  offset: 'number',\n  method: 'string',\n  target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n    this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n    this._config = this._getConfig(config)\n    this._offsets = []\n    this._targets = []\n    this._activeTarget = null\n    this._scrollHeight = 0\n\n    EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n    this.refresh()\n    this._process()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  refresh() {\n    const autoMethod = this._scrollElement === this._scrollElement.window ?\n      METHOD_OFFSET :\n      METHOD_POSITION\n\n    const offsetMethod = this._config.method === 'auto' ?\n      autoMethod :\n      this._config.method\n\n    const offsetBase = offsetMethod === METHOD_POSITION ?\n      this._getScrollTop() :\n      0\n\n    this._offsets = []\n    this._targets = []\n    this._scrollHeight = this._getScrollHeight()\n\n    const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n\n    targets.map(element => {\n      const targetSelector = getSelectorFromElement(element)\n      const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n      if (target) {\n        const targetBCR = target.getBoundingClientRect()\n        if (targetBCR.width || targetBCR.height) {\n          return [\n            Manipulator[offsetMethod](target).top + offsetBase,\n            targetSelector\n          ]\n        }\n      }\n\n      return null\n    })\n      .filter(item => item)\n      .sort((a, b) => a[0] - b[0])\n      .forEach(item => {\n        this._offsets.push(item[0])\n        this._targets.push(item[1])\n      })\n  }\n\n  dispose() {\n    EventHandler.off(this._scrollElement, EVENT_KEY)\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.target = getElement(config.target) || document.documentElement\n\n    typeCheckConfig(NAME, config, DefaultType)\n\n    return config\n  }\n\n  _getScrollTop() {\n    return this._scrollElement === window ?\n      this._scrollElement.pageYOffset :\n      this._scrollElement.scrollTop\n  }\n\n  _getScrollHeight() {\n    return this._scrollElement.scrollHeight || Math.max(\n      document.body.scrollHeight,\n      document.documentElement.scrollHeight\n    )\n  }\n\n  _getOffsetHeight() {\n    return this._scrollElement === window ?\n      window.innerHeight :\n      this._scrollElement.getBoundingClientRect().height\n  }\n\n  _process() {\n    const scrollTop = this._getScrollTop() + this._config.offset\n    const scrollHeight = this._getScrollHeight()\n    const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n    if (this._scrollHeight !== scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      const target = this._targets[this._targets.length - 1]\n\n      if (this._activeTarget !== target) {\n        this._activate(target)\n      }\n\n      return\n    }\n\n    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n      this._activeTarget = null\n      this._clear()\n      return\n    }\n\n    for (let i = this._offsets.length; i--;) {\n      const isActiveTarget = this._activeTarget !== this._targets[i] &&\n          scrollTop >= this._offsets[i] &&\n          (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n      if (isActiveTarget) {\n        this._activate(this._targets[i])\n      }\n    }\n  }\n\n  _activate(target) {\n    this._activeTarget = target\n\n    this._clear()\n\n    const queries = SELECTOR_LINK_ITEMS.split(',')\n      .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n    const link = SelectorEngine.findOne(queries.join(','), this._config.target)\n\n    link.classList.add(CLASS_NAME_ACTIVE)\n    if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n        .forEach(listGroup => {\n          // Set triggered links parents as active\n          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n          SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n            .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n          // Handle special case when .nav-link is inside .nav-item\n          SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n            .forEach(navItem => {\n              SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n                .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n            })\n        })\n    }\n\n    EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n      relatedTarget: target\n    })\n  }\n\n  _clear() {\n    SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n      .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n      .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  SelectorEngine.find(SELECTOR_DATA_SPY)\n    .forEach(spy => new ScrollSpy(spy))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  show() {\n    if ((this._element.parentNode &&\n      this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n      this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n      return\n    }\n\n    let previous\n    const target = getElementFromSelector(this._element)\n    const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n    if (listElement) {\n      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n      previous = SelectorEngine.find(itemSelector, listElement)\n      previous = previous[previous.length - 1]\n    }\n\n    const hideEvent = previous ?\n      EventHandler.trigger(previous, EVENT_HIDE, {\n        relatedTarget: this._element\n      }) :\n      null\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget: previous\n    })\n\n    if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._activate(this._element, listElement)\n\n    const complete = () => {\n      EventHandler.trigger(previous, EVENT_HIDDEN, {\n        relatedTarget: this._element\n      })\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget: previous\n      })\n    }\n\n    if (target) {\n      this._activate(target, target.parentNode, complete)\n    } else {\n      complete()\n    }\n  }\n\n  // Private\n\n  _activate(element, container, callback) {\n    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n      SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n      SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n    const active = activeElements[0]\n    const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n    const complete = () => this._transitionComplete(element, active, callback)\n\n    if (active && isTransitioning) {\n      active.classList.remove(CLASS_NAME_SHOW)\n      this._queueCallback(complete, element, true)\n    } else {\n      complete()\n    }\n  }\n\n  _transitionComplete(element, active, callback) {\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n\n      const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n      if (dropdownChild) {\n        dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n      }\n\n      if (active.getAttribute('role') === 'tab') {\n        active.setAttribute('aria-selected', false)\n      }\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n    if (element.getAttribute('role') === 'tab') {\n      element.setAttribute('aria-selected', true)\n    }\n\n    reflow(element)\n\n    if (element.classList.contains(CLASS_NAME_FADE)) {\n      element.classList.add(CLASS_NAME_SHOW)\n    }\n\n    let parent = element.parentNode\n    if (parent && parent.nodeName === 'LI') {\n      parent = parent.parentNode\n    }\n\n    if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n      const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n      if (dropdownElement) {\n        SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n          .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n      }\n\n      element.setAttribute('aria-expanded', true)\n    }\n\n    if (callback) {\n      callback()\n    }\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  const data = Tab.getOrCreateInstance(this)\n  data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      this._element.classList.remove(CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    return config\n  }\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout':\n        this._hasMouseInteraction = isInteracting\n        break\n      case 'focusin':\n      case 'focusout':\n        this._hasKeyboardInteraction = isInteracting\n        break\n      default:\n        break\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\nenableDismissTrigger(Toast)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert'\nimport Button from './src/button'\nimport Carousel from './src/carousel'\nimport Collapse from './src/collapse'\nimport Dropdown from './src/dropdown'\nimport Modal from './src/modal'\nimport Offcanvas from './src/offcanvas'\nimport Popover from './src/popover'\nimport ScrollSpy from './src/scrollspy'\nimport Tab from './src/tab'\nimport Toast from './src/toast'\nimport Tooltip from './src/tooltip'\n\nexport default {\n  Alert,\n  Button,\n  Carousel,\n  Collapse,\n  Dropdown,\n  Modal,\n  Offcanvas,\n  Popover,\n  ScrollSpy,\n  Tab,\n  Toast,\n  Tooltip\n}\n"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","undefined","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","uid","getEvent","bootstrapHandler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","i","findHandler","events","delegationSelector","uidEventList","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","isNative","has","addHandler","wrapFn","relatedTarget","handlers","previousFn","replace","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","on","one","inNamespace","isNamespace","elementEvent","slice","keyHandlers","trigger","args","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","elementMap","Map","set","instance","instanceMap","size","console","error","Array","from","remove","delete","VERSION","BaseComponent","constructor","_element","Data","DATA_KEY","dispose","EVENT_KEY","getOwnPropertyNames","propertyName","_queueCallback","isAnimated","getInstance","getOrCreateInstance","Error","enableDismissTrigger","component","method","clickEvent","tagName","closest","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","closeEvent","_destroyElement","each","data","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","setAttribute","button","normalizeData","val","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","pageYOffset","left","pageXOffset","position","offsetTop","offsetLeft","NODE_TEXT","SelectorEngine","find","concat","Element","prototype","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","KEY_TO_DIRECTION","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_INDICATOR","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","order","_handleSwipe","absDeltax","abs","direction","_keydown","_addTouchEventListeners","start","pointerType","clientX","touches","move","end","clearTimeout","itemImg","e","add","_getItemByOrder","isNext","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","slideEvent","triggerSlidEvent","completeCallBack","carouselInterface","action","ride","dataApiClickHandler","slideIndex","carousels","parent","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","actives","activesData","container","tempActiveData","startEvent","elemActive","dimension","_getDimension","style","complete","capitalizedDimension","scrollSize","triggerArrayLength","selected","triggerArray","isOpen","selectorElements","effect","round","mathMax","mathMin","hash","allPlacements","placements","createPopper","defaultModifiers","popperOffsets","computeStyles","applyStyles","flip","preventOverflow","arrow","ESCAPE_KEY","SPACE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","REGEXP_KEYDOWN","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_NAVBAR","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","boundary","reference","display","popperConfig","autoClose","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","showEvent","getParentFromElement","_createPopper","focus","_completeHide","destroy","update","hideEvent","Popper","referenceElement","_getPopperConfig","isDisplayStatic","modifiers","modifier","enabled","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","placement","options","_selectMenuItem","items","clearMenus","toggles","context","composedPath","isMenuTarget","dataApiKeydownHandler","isActive","stopPropagation","getToggleButton","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","ScrollBarHelper","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","overflow","styleProp","scrollbarWidth","manipulationCallBack","_applyManipulationCallback","reset","_resetElementAttributes","actualValue","removeProperty","callBack","isOverflowing","className","rootElement","clickCallback","EVENT_MOUSEDOWN","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","trapElement","autofocus","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_ignoreBackdropClick","_scrollBar","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","scrollTop","transitionComplete","_triggerBackdropTransition","_resetAdjustments","currentTarget","scrollHeight","isModalOverflowing","clientHeight","overflowY","isBodyOverflowing","paddingLeft","paddingRight","scroll","CLASS_NAME_BACKDROP","OPEN_SELECTOR","Offcanvas","visibility","blur","completeCallback","allReadyOpen","uriAttrs","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","domParser","DOMParser","createdDocument","parseFromString","allowlistKeys","elName","attributeList","allowedAttributes","innerHTML","CLASS_PREFIX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_MODAL","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","attachment","_getAttachment","_addAttachmentClass","_resolvePossibleFunction","prevHoverState","_cleanTipClass","getTitle","setContent","_sanitizeAndSetContent","content","templateElement","setElementContent","textContent","updateAttachment","_getDelegateConfig","phase","_handlePopperPlacementChange","onFirstUpdate","_getBasicClassPrefix","triggers","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","basicClassPrefixRegex","tabClass","token","tClass","state","popper","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","EVENT_ACTIVATE","EVENT_SCROLL","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","targetSelector","targetBCR","height","item","sort","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","isActiveTarget","queries","link","listGroup","navItem","node","spy","CLASS_NAME_DROPDOWN_MENU","SELECTOR_ACTIVE_UL","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","listElement","itemSelector","activeElements","active","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","dropdown","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting"],"mappings":"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"}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js
new file mode 100644
index 0000000..b65b161
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js
@@ -0,0 +1,7 @@
+/*!
+  * Bootstrap v5.1.0 (https://getbootstrap.com/)
+  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+  */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i="#"+i.split("#")[1]),e=i&&"#"!==i?i.trim():null}return e},e=e=>{const i=t(e);return i&&document.querySelector(i)?i:null},i=e=>{const i=t(e);return i?document.querySelector(i):null},n=t=>{t.dispatchEvent(new Event("transitionend"))},s=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),o=t=>s(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,r=(t,e,i)=>{Object.keys(i).forEach(n=>{const o=i[n],r=e[n],a=r&&s(r)?"element":null==(l=r)?""+l:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(o).test(a))throw new TypeError(`${t.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${o}".`)})},a=t=>!(!s(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",()=>{f.forEach(t=>t())}),f.push(e)):e()},g=t=>{"function"==typeof t&&t()},_=(t,e,i=!0)=>{if(!i)return void g(t);const s=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let o=!1;const r=({target:i})=>{i===e&&(o=!0,e.removeEventListener("transitionend",r),g(t))};e.addEventListener("transitionend",r),setTimeout(()=>{o||n(e)},s)},b=(t,e,i,n)=>{let s=t.indexOf(e);if(-1===s)return t[!i&&n?t.length-1:0];const o=t.length;return s+=i?1:-1,n&&(s=(s+o)%o),t[Math.max(0,Math.min(s,o-1))]},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,E={};let A=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},O=/^(mouseenter|mouseleave)/i,C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function k(t,e){return e&&`${e}::${A++}`||t.uidEvent||A++}function L(t){const e=k(t);return t.uidEvent=e,E[e]=E[e]||{},E[e]}function x(t,e,i=null){const n=Object.keys(t);for(let s=0,o=n.length;s<o;s++){const o=t[n[s]];if(o.originalHandler===e&&o.delegationSelector===i)return o}return null}function D(t,e,i){const n="string"==typeof e,s=n?i:e;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;if(i||(i=n,n=null),O.test(e)){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};n?n=t(n):i=t(i)}const[o,r,a]=D(e,i,n),l=L(t),c=l[a]||(l[a]={}),h=x(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=k(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&P.off(t,s.type,e,i),i.apply(r,[s]);return null}}(t,i,n):function(t,e){return function i(n){return n.delegateTarget=t,i.oneOff&&P.off(t,n.type,e),e.apply(t,[n])}}(t,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function N(t,e,i,n,s){const o=x(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function I(t){return t=t.replace(y,""),T[t]||t}const P={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=D(e,i,n),a=r!==e,l=L(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void N(t,l,r,o,s?i:null)}c&&Object.keys(l).forEach(i=>{!function(t,e,i,n){const s=e[i]||{};Object.keys(s).forEach(o=>{if(o.includes(n)){const n=s[o];N(t,e,i,n.originalHandler,n.delegationSelector)}})}(t,l,i,e.slice(1))});const h=l[r]||{};Object.keys(h).forEach(i=>{const n=i.replace(w,"");if(!a||e.includes(n)){const e=h[i];N(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u(),s=I(e),o=e!==s,r=C.has(s);let a,l=!0,c=!0,h=!1,d=null;return o&&n&&(a=n.Event(e,i),n(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach(t=>{Object.defineProperty(d,t,{get:()=>i[t]})}),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},j=new Map;var M={set(t,e,i){j.has(t)||j.set(t,new Map);const n=j.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>j.has(t)&&j.get(t).get(e)||null,remove(t,e){if(!j.has(t))return;const i=j.get(t);i.delete(e),0===i.size&&j.delete(t)}};class H{constructor(t){(t=o(t))&&(this._element=t,M.set(this._element,this.constructor.DATA_KEY,this))}dispose(){M.remove(this._element,this.constructor.DATA_KEY),P.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(t=>{this[t]=null})}_queueCallback(t,e,i=!0){_(t,e,i)}static getInstance(t){return M.get(o(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.1.0"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return"bs."+this.NAME}static get EVENT_KEY(){return"."+this.DATA_KEY}}const B=(t,e="hide")=>{const n="click.dismiss"+t.EVENT_KEY,s=t.NAME;P.on(document,n,`[data-bs-dismiss="${s}"]`,(function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),l(this))return;const o=i(this)||this.closest("."+s);t.getOrCreateInstance(o)[e]()}))};class R extends H{static get NAME(){return"alert"}close(){if(P.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,t)}_destroyElement(){this._element.remove(),P.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=R.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}B(R,"close"),m(R);class W extends H{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=W.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function z(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function q(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}P.on(document,"click.bs.button.data-api",'[data-bs-toggle="button"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle="button"]');W.getOrCreateInstance(e).toggle()}),m(W);const F={setDataAttribute(t,e,i){t.setAttribute("data-bs-"+q(e),i)},removeDataAttribute(t,e){t.removeAttribute("data-bs-"+q(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith("bs")).forEach(i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=z(t.dataset[i])}),e},getDataAttribute:(t,e)=>z(t.getAttribute("data-bs-"+q(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},U={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const i=[];let n=t.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(e)&&i.push(n),n=n.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(t=>t+':not([tabindex^="-"])').join(", ");return this.find(e,t).filter(t=>!l(t)&&a(t))}},$={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},V={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},K="next",X="prev",Y="left",Q="right",G={ArrowLeft:Q,ArrowRight:Y};class Z extends H{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=U.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return $}static get NAME(){return"carousel"}next(){this._slide(K)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(X)}pause(t){t||(this._isPaused=!0),U.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(n(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=U.findOne(".active.carousel-item",this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void P.one(this._element,"slid.bs.carousel",()=>this.to(t));if(e===t)return this.pause(),void this.cycle();const i=t>e?K:X;this._slide(i,this._items[t])}_getConfig(t){return t={...$,...F.getDataAttributes(this._element),..."object"==typeof t?t:{}},r("carousel",t,V),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?Q:Y)}_addEventListeners(){this._config.keyboard&&P.on(this._element,"keydown.bs.carousel",t=>this._keydown(t)),"hover"===this._config.pause&&(P.on(this._element,"mouseenter.bs.carousel",t=>this.pause(t)),P.on(this._element,"mouseleave.bs.carousel",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},e=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},i=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};U.find(".carousel-item img",this._element).forEach(t=>{P.on(t,"dragstart.bs.carousel",t=>t.preventDefault())}),this._pointerEvent?(P.on(this._element,"pointerdown.bs.carousel",e=>t(e)),P.on(this._element,"pointerup.bs.carousel",t=>i(t)),this._element.classList.add("pointer-event")):(P.on(this._element,"touchstart.bs.carousel",e=>t(e)),P.on(this._element,"touchmove.bs.carousel",t=>e(t)),P.on(this._element,"touchend.bs.carousel",t=>i(t)))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=G[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(t){return this._items=t&&t.parentNode?U.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const i=t===K;return b(this._items,e,i,this._config.wrap)}_triggerSlideEvent(t,e){const i=this._getItemIndex(t),n=this._getItemIndex(U.findOne(".active.carousel-item",this._element));return P.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:n,to:i})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=U.findOne(".active",this._indicatorsElement);e.classList.remove("active"),e.removeAttribute("aria-current");const i=U.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e<i.length;e++)if(Number.parseInt(i[e].getAttribute("data-bs-slide-to"),10)===this._getItemIndex(t)){i[e].classList.add("active"),i[e].setAttribute("aria-current","true");break}}}_updateInterval(){const t=this._activeElement||U.findOne(".active.carousel-item",this._element);if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}_slide(t,e){const i=this._directionToOrder(t),n=U.findOne(".active.carousel-item",this._element),s=this._getItemIndex(n),o=e||this._getItemByOrder(i,n),r=this._getItemIndex(o),a=Boolean(this._interval),l=i===K,c=l?"carousel-item-start":"carousel-item-end",h=l?"carousel-item-next":"carousel-item-prev",u=this._orderToDirection(i);if(o&&o.classList.contains("active"))return void(this._isSliding=!1);if(this._isSliding)return;if(this._triggerSlideEvent(o,u).defaultPrevented)return;if(!n||!o)return;this._isSliding=!0,a&&this.pause(),this._setActiveIndicatorElement(o),this._activeElement=o;const f=()=>{P.trigger(this._element,"slid.bs.carousel",{relatedTarget:o,direction:u,from:s,to:r})};if(this._element.classList.contains("slide")){o.classList.add(h),d(o),n.classList.add(c),o.classList.add(c);const t=()=>{o.classList.remove(c,h),o.classList.add("active"),n.classList.remove("active",h,c),this._isSliding=!1,setTimeout(f,0)};this._queueCallback(t,n,!0)}else n.classList.remove("active"),o.classList.add("active"),this._isSliding=!1,f();a&&this.cycle()}_directionToOrder(t){return[Q,Y].includes(t)?p()?t===Y?X:K:t===Y?K:X:t}_orderToDirection(t){return[K,X].includes(t)?p()?t===X?Y:Q:t===X?Q:Y:t}static carouselInterface(t,e){const i=Z.getOrCreateInstance(t,e);let{_config:n}=i;"object"==typeof e&&(n={...n,...e});const s="string"==typeof e?e:n.slide;if("number"==typeof e)i.to(e);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){Z.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=i(this);if(!e||!e.classList.contains("carousel"))return;const n={...F.getDataAttributes(e),...F.getDataAttributes(this)},s=this.getAttribute("data-bs-slide-to");s&&(n.interval=!1),Z.carouselInterface(e,n),s&&Z.getInstance(e).to(s),t.preventDefault()}}P.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",Z.dataApiClickHandler),P.on(window,"load.bs.carousel.data-api",()=>{const t=U.find('[data-bs-ride="carousel"]');for(let e=0,i=t.length;e<i;e++)Z.carouselInterface(t[e],Z.getInstance(t[e]))}),m(Z);const J={toggle:!0,parent:null},tt={toggle:"boolean",parent:"(null|element)"};class et extends H{constructor(t,i){super(t),this._isTransitioning=!1,this._config=this._getConfig(i),this._triggerArray=[];const n=U.find('[data-bs-toggle="collapse"]');for(let t=0,i=n.length;t<i;t++){const i=n[t],s=e(i),o=U.find(s).filter(t=>t===this._element);null!==s&&o.length&&(this._selector=s,this._triggerArray.push(i))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return J}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t,e=[];if(this._config.parent){const t=U.find(".collapse .collapse",this._config.parent);e=U.find(".show, .collapsing",this._config.parent).filter(e=>!t.includes(e))}const i=U.findOne(this._selector);if(e.length){const n=e.find(t=>i!==t);if(t=n?et.getInstance(n):null,t&&t._isTransitioning)return}if(P.trigger(this._element,"show.bs.collapse").defaultPrevented)return;e.forEach(e=>{i!==e&&et.getOrCreateInstance(e,{toggle:!1}).hide(),t||M.set(e,"bs.collapse",null)});const n=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s="scroll"+(n[0].toUpperCase()+n.slice(1));this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[n]="",P.trigger(this._element,"shown.bs.collapse")},this._element,!0),this._element.style[n]=this._element[s]+"px"}hide(){if(this._isTransitioning||!this._isShown())return;if(P.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",d(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const e=this._triggerArray.length;for(let t=0;t<e;t++){const e=this._triggerArray[t],n=i(e);n&&!this._isShown(n)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),P.trigger(this._element,"hidden.bs.collapse")},this._element,!0)}_isShown(t=this._element){return t.classList.contains("show")}_getConfig(t){return(t={...J,...F.getDataAttributes(this._element),...t}).toggle=Boolean(t.toggle),t.parent=o(t.parent),r("collapse",t,tt),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=U.find(".collapse .collapse",this._config.parent);U.find('[data-bs-toggle="collapse"]',this._config.parent).filter(e=>!t.includes(e)).forEach(t=>{const e=i(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))})}_addAriaAndCollapsedClass(t,e){t.length&&t.forEach(t=>{e?t.classList.remove("collapsed"):t.classList.add("collapsed"),t.setAttribute("aria-expanded",e)})}static jQueryInterface(t){return this.each((function(){const e={};"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1);const i=et.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}P.on(document,"click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const i=e(this);U.find(i).forEach(t=>{et.getOrCreateInstance(t,{toggle:!1}).toggle()})})),m(et);var it="top",nt="bottom",st="right",ot="left",rt=[it,nt,st,ot],at=rt.reduce((function(t,e){return t.concat([e+"-start",e+"-end"])}),[]),lt=[].concat(rt,["auto"]).reduce((function(t,e){return t.concat([e,e+"-start",e+"-end"])}),[]),ct=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function ht(t){return t?(t.nodeName||"").toLowerCase():null}function dt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function ut(t){return t instanceof dt(t).Element||t instanceof Element}function ft(t){return t instanceof dt(t).HTMLElement||t instanceof HTMLElement}function pt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof dt(t).ShadowRoot||t instanceof ShadowRoot)}var mt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];ft(s)&&ht(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});ft(n)&&ht(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function gt(t){return t.split("-")[0]}var _t=Math.round;function bt(t,e){void 0===e&&(e=!1);var i=t.getBoundingClientRect(),n=1,s=1;return ft(t)&&e&&(n=i.width/t.offsetWidth||1,s=i.height/t.offsetHeight||1),{width:_t(i.width/n),height:_t(i.height/s),top:_t(i.top/s),right:_t(i.right/n),bottom:_t(i.bottom/s),left:_t(i.left/n),x:_t(i.left/n),y:_t(i.top/s)}}function vt(t){var e=bt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function yt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&pt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function wt(t){return dt(t).getComputedStyle(t)}function Et(t){return["table","td","th"].indexOf(ht(t))>=0}function At(t){return((ut(t)?t.ownerDocument:t.document)||window.document).documentElement}function Tt(t){return"html"===ht(t)?t:t.assignedSlot||t.parentNode||(pt(t)?t.host:null)||At(t)}function Ot(t){return ft(t)&&"fixed"!==wt(t).position?t.offsetParent:null}function Ct(t){for(var e=dt(t),i=Ot(t);i&&Et(i)&&"static"===wt(i).position;)i=Ot(i);return i&&("html"===ht(i)||"body"===ht(i)&&"static"===wt(i).position)?e:i||function(t){var e=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&ft(t)&&"fixed"===wt(t).position)return null;for(var i=Tt(t);ft(i)&&["html","body"].indexOf(ht(i))<0;){var n=wt(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function kt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var Lt=Math.max,xt=Math.min,Dt=Math.round;function St(t,e,i){return Lt(t,xt(e,i))}function Nt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function It(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}var Pt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=gt(i.placement),l=kt(a),c=[ot,st].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Nt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:It(t,rt))}(s.padding,i),d=vt(o),u="y"===l?it:ot,f="y"===l?nt:st,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=Ct(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,E=St(v,w,y),A=l;i.modifiersData[n]=((e={})[A]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&yt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},jt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Mt(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.offsets,r=t.position,a=t.gpuAcceleration,l=t.adaptive,c=t.roundOffsets,h=!0===c?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:Dt(Dt(e*n)/n)||0,y:Dt(Dt(i*n)/n)||0}}(o):"function"==typeof c?c(o):o,d=h.x,u=void 0===d?0:d,f=h.y,p=void 0===f?0:f,m=o.hasOwnProperty("x"),g=o.hasOwnProperty("y"),_=ot,b=it,v=window;if(l){var y=Ct(i),w="clientHeight",E="clientWidth";y===dt(i)&&"static"!==wt(y=At(i)).position&&(w="scrollHeight",E="scrollWidth"),y=y,s===it&&(b=nt,p-=y[w]-n.height,p*=a?1:-1),s===ot&&(_=st,u-=y[E]-n.width,u*=a?1:-1)}var A,T=Object.assign({position:r},l&&jt);return a?Object.assign({},T,((A={})[b]=g?"0":"",A[_]=m?"0":"",A.transform=(v.devicePixelRatio||1)<2?"translate("+u+"px, "+p+"px)":"translate3d("+u+"px, "+p+"px, 0)",A)):Object.assign({},T,((e={})[b]=g?p+"px":"",e[_]=m?u+"px":"",e.transform="",e))}var Ht={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:gt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,Mt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,Mt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},Bt={passive:!0},Rt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=dt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,Bt)})),a&&l.addEventListener("resize",i.update,Bt),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,Bt)})),a&&l.removeEventListener("resize",i.update,Bt)}},data:{}},Wt={left:"right",right:"left",bottom:"top",top:"bottom"};function zt(t){return t.replace(/left|right|bottom|top/g,(function(t){return Wt[t]}))}var qt={start:"end",end:"start"};function Ft(t){return t.replace(/start|end/g,(function(t){return qt[t]}))}function Ut(t){var e=dt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function $t(t){return bt(At(t)).left+Ut(t).scrollLeft}function Vt(t){var e=wt(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Kt(t,e){var i;void 0===e&&(e=[]);var n=function t(e){return["html","body","#document"].indexOf(ht(e))>=0?e.ownerDocument.body:ft(e)&&Vt(e)?e:t(Tt(e))}(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=dt(n),r=s?[o].concat(o.visualViewport||[],Vt(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Kt(Tt(r)))}function Xt(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Yt(t,e){return"viewport"===e?Xt(function(t){var e=dt(t),i=At(t),n=e.visualViewport,s=i.clientWidth,o=i.clientHeight,r=0,a=0;return n&&(s=n.width,o=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=n.offsetLeft,a=n.offsetTop)),{width:s,height:o,x:r+$t(t),y:a}}(t)):ft(e)?function(t){var e=bt(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Xt(function(t){var e,i=At(t),n=Ut(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=Lt(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=Lt(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+$t(t),l=-n.scrollTop;return"rtl"===wt(s||i).direction&&(a+=Lt(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(At(t)))}function Qt(t){return t.split("-")[1]}function Gt(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?gt(s):null,r=s?Qt(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case it:e={x:a,y:i.y-n.height};break;case nt:e={x:a,y:i.y+i.height};break;case st:e={x:i.x+i.width,y:l};break;case ot:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?kt(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case"start":e[c]=e[c]-(i[h]/2-n[h]/2);break;case"end":e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function Zt(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.boundary,r=void 0===o?"clippingParents":o,a=i.rootBoundary,l=void 0===a?"viewport":a,c=i.elementContext,h=void 0===c?"popper":c,d=i.altBoundary,u=void 0!==d&&d,f=i.padding,p=void 0===f?0:f,m=Nt("number"!=typeof p?p:It(p,rt)),g="popper"===h?"reference":"popper",_=t.elements.reference,b=t.rects.popper,v=t.elements[u?g:h],y=function(t,e,i){var n="clippingParents"===e?function(t){var e=Kt(Tt(t)),i=["absolute","fixed"].indexOf(wt(t).position)>=0&&ft(t)?Ct(t):t;return ut(i)?e.filter((function(t){return ut(t)&&yt(t,i)&&"body"!==ht(t)})):[]}(t):[].concat(e),s=[].concat(n,[i]),o=s[0],r=s.reduce((function(e,i){var n=Yt(t,i);return e.top=Lt(n.top,e.top),e.right=xt(n.right,e.right),e.bottom=xt(n.bottom,e.bottom),e.left=Lt(n.left,e.left),e}),Yt(t,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}(ut(v)?v:v.contextElement||At(t.elements.popper),r,l),w=bt(_),E=Gt({reference:w,element:b,strategy:"absolute",placement:s}),A=Xt(Object.assign({},b,E)),T="popper"===h?A:w,O={top:y.top-T.top+m.top,bottom:T.bottom-y.bottom+m.bottom,left:y.left-T.left+m.left,right:T.right-y.right+m.right},C=t.modifiersData.offset;if("popper"===h&&C){var k=C[s];Object.keys(O).forEach((function(t){var e=[st,nt].indexOf(t)>=0?1:-1,i=[it,nt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function Jt(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?lt:l,h=Qt(n),d=h?a?at:at.filter((function(t){return Qt(t)===h})):rt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=Zt(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[gt(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}var te={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=gt(g),b=l||(_!==g&&p?function(t){if("auto"===gt(t))return[];var e=zt(t);return[Ft(t),e,Ft(e)]}(g):[zt(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat("auto"===gt(i)?Jt(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,A=!0,T=v[0],O=0;O<v.length;O++){var C=v[O],k=gt(C),L="start"===Qt(C),x=[it,nt].indexOf(k)>=0,D=x?"width":"height",S=Zt(e,{placement:C,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),N=x?L?st:ot:L?nt:it;y[D]>w[D]&&(N=zt(N));var I=zt(N),P=[];if(o&&P.push(S[k]<=0),a&&P.push(S[N]<=0,S[I]<=0),P.every((function(t){return t}))){T=C,A=!1;break}E.set(C,P)}if(A)for(var j=function(t){var e=v.find((function(e){var i=E.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ee(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ie(t){return[it,st,nt,ot].some((function(e){return t[e]>=0}))}var ne={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=Zt(e,{elementContext:"reference"}),a=Zt(e,{altBoundary:!0}),l=ee(r,n),c=ee(a,s,o),h=ie(l),d=ie(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},se={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=lt.reduce((function(t,i){return t[i]=function(t,e,i){var n=gt(t),s=[ot,it].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[ot,st].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},oe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=Gt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},re={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=Zt(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=gt(e.placement),b=Qt(e.placement),v=!b,y=kt(_),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,A=e.rects.reference,T=e.rects.popper,O="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C={x:0,y:0};if(E){if(o||a){var k="y"===y?it:ot,L="y"===y?nt:st,x="y"===y?"height":"width",D=E[y],S=E[y]+g[k],N=E[y]-g[L],I=f?-T[x]/2:0,P="start"===b?A[x]:T[x],j="start"===b?-T[x]:-A[x],M=e.elements.arrow,H=f&&M?vt(M):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},R=B[k],W=B[L],z=St(0,A[x],H[x]),q=v?A[x]/2-I-z-R-O:P-z-R-O,F=v?-A[x]/2+I+z+W+O:j+z+W+O,U=e.elements.arrow&&Ct(e.elements.arrow),$=U?"y"===y?U.clientTop||0:U.clientLeft||0:0,V=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,K=E[y]+q-V-$,X=E[y]+F-V;if(o){var Y=St(f?xt(S,K):S,D,f?Lt(N,X):N);E[y]=Y,C[y]=Y-D}if(a){var Q="x"===y?it:ot,G="x"===y?nt:st,Z=E[w],J=Z+g[Q],tt=Z-g[G],et=St(f?xt(J,K):J,Z,f?Lt(tt,X):tt);E[w]=et,C[w]=et-Z}}e.modifiersData[n]=C}},requiresIfExists:["offset"]};function ae(t,e,i){void 0===i&&(i=!1);var n,s,o=ft(e),r=ft(e)&&function(t){var e=t.getBoundingClientRect(),i=e.width/t.offsetWidth||1,n=e.height/t.offsetHeight||1;return 1!==i||1!==n}(e),a=At(e),l=bt(t,r),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ht(e)||Vt(a))&&(c=(n=e)!==dt(n)&&ft(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Ut(n)),ft(e)?((h=bt(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=$t(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}var le={placement:"bottom",modifiers:[],strategy:"absolute"};function ce(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some((function(t){return!(t&&"function"==typeof t.getBoundingClientRect)}))}function he(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?le:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},le,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){d(),a.options=Object.assign({},o,a.options,i),a.scrollParents={reference:ut(t)?Kt(t):t.contextElement?Kt(t.contextElement):[],popper:Kt(e)};var s,r,c=function(t){var e=function(t){var e=new Map,i=new Set,n=[];return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||function t(s){i.add(s.name),[].concat(s.requires||[],s.requiresIfExists||[]).forEach((function(n){if(!i.has(n)){var s=e.get(n);s&&t(s)}})),n.push(s)}(t)})),n}(t);return ct.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}((s=[].concat(n,a.options.modifiers),r=s.reduce((function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t}),{}),Object.keys(r).map((function(t){return r[t]}))));return a.orderedModifiers=c.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,s=t.effect;if("function"==typeof s){var o=s({state:a,name:e,instance:h,options:n});l.push(o||function(){})}})),h.update()},forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;if(ce(e,i)){a.rects={reference:ae(e,Ct(i),"fixed"===a.options.strategy),popper:vt(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:h})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise((function(t){h.forceUpdate(),t(a)}))},function(){return r||(r=new Promise((function(t){Promise.resolve().then((function(){r=void 0,t(s())}))}))),r}),destroy:function(){d(),c=!0}};if(!ce(t,e))return h;function d(){l.forEach((function(t){return t()})),l=[]}return h.setOptions(i).then((function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)})),h}}var de=he(),ue=he({defaultModifiers:[Rt,oe,Ht,mt]}),fe=he({defaultModifiers:[Rt,oe,Ht,mt,se,te,re,Pt,ne]}),pe=Object.freeze({__proto__:null,popperGenerator:he,detectOverflow:Zt,createPopperBase:de,createPopper:fe,createPopperLite:ue,top:it,bottom:nt,right:st,left:ot,auto:"auto",basePlacements:rt,start:"start",end:"end",clippingParents:"clippingParents",viewport:"viewport",popper:"popper",reference:"reference",variationPlacements:at,placements:lt,beforeRead:"beforeRead",read:"read",afterRead:"afterRead",beforeMain:"beforeMain",main:"main",afterMain:"afterMain",beforeWrite:"beforeWrite",write:"write",afterWrite:"afterWrite",modifierPhases:ct,applyStyles:mt,arrow:Pt,computeStyles:Ht,eventListeners:Rt,flip:te,hide:ne,offset:se,popperOffsets:oe,preventOverflow:re});const me=new RegExp("ArrowUp|ArrowDown|Escape"),ge=p()?"top-end":"top-start",_e=p()?"top-start":"top-end",be=p()?"bottom-end":"bottom-start",ve=p()?"bottom-start":"bottom-end",ye=p()?"left-start":"right-start",we=p()?"right-start":"left-start",Ee={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},Ae={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"};class Te extends H{constructor(t,e){super(t),this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar()}static get Default(){return Ee}static get DefaultType(){return Ae}static get NAME(){return"dropdown"}toggle(){return this._isShown()?this.hide():this.show()}show(){if(l(this._element)||this._isShown(this._menu))return;const t={relatedTarget:this._element};if(P.trigger(this._element,"show.bs.dropdown",t).defaultPrevented)return;const e=Te.getParentFromElement(this._element);this._inNavbar?F.setDataAttribute(this._menu,"popper","none"):this._createPopper(e),"ontouchstart"in document.documentElement&&!e.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(t=>P.on(t,"mouseover",h)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add("show"),this._element.classList.add("show"),P.trigger(this._element,"shown.bs.dropdown",t)}hide(){if(l(this._element)||!this._isShown(this._menu))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){P.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>P.off(t,"mouseover",h)),this._popper&&this._popper.destroy(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),F.removeDataAttribute(this._menu,"popper"),P.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...F.getDataAttributes(this._element),...t},r("dropdown",t,this.constructor.DefaultType),"object"==typeof t.reference&&!s(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError("dropdown".toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return t}_createPopper(t){if(void 0===pe)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:s(this._config.reference)?e=o(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find(t=>"applyStyles"===t.name&&!1===t.enabled);this._popper=fe(e,this._menu,i),n&&F.setDataAttribute(this._menu,"popper","static")}_isShown(t=this._element){return t.classList.contains("show")}_getMenuElement(){return U.next(this._element,".dropdown-menu")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ye;if(t.classList.contains("dropstart"))return we;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?_e:ge:e?ve:be}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=U.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(a);i.length&&b(i,e,"ArrowDown"===t,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=Te.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(t&&(2===t.button||"keyup"===t.type&&"Tab"!==t.key))return;const e=U.find('[data-bs-toggle="dropdown"]');for(let i=0,n=e.length;i<n;i++){const n=Te.getInstance(e[i]);if(!n||!1===n._config.autoClose)continue;if(!n._isShown())continue;const s={relatedTarget:n._element};if(t){const e=t.composedPath(),i=e.includes(n._menu);if(e.includes(n._element)||"inside"===n._config.autoClose&&!i||"outside"===n._config.autoClose&&i)continue;if(n._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;"click"===t.type&&(s.clickEvent=t)}n._completeHide(s)}}static getParentFromElement(t){return i(t)||t.parentNode}static dataApiKeydownHandler(t){if(/input|textarea/i.test(t.target.tagName)?"Space"===t.key||"Escape"!==t.key&&("ArrowDown"!==t.key&&"ArrowUp"!==t.key||t.target.closest(".dropdown-menu")):!me.test(t.key))return;const e=this.classList.contains("show");if(!e&&"Escape"===t.key)return;if(t.preventDefault(),t.stopPropagation(),l(this))return;const i=this.matches('[data-bs-toggle="dropdown"]')?this:U.prev(this,'[data-bs-toggle="dropdown"]')[0],n=Te.getOrCreateInstance(i);if("Escape"!==t.key)return"ArrowUp"===t.key||"ArrowDown"===t.key?(e||n.show(),void n._selectMenuItem(t)):void(e&&"Space"!==t.key||Te.clearMenus());n.hide()}}P.on(document,"keydown.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',Te.dataApiKeydownHandler),P.on(document,"keydown.bs.dropdown.data-api",".dropdown-menu",Te.dataApiKeydownHandler),P.on(document,"click.bs.dropdown.data-api",Te.clearMenus),P.on(document,"keyup.bs.dropdown.data-api",Te.clearMenus),P.on(document,"click.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',(function(t){t.preventDefault(),Te.getOrCreateInstance(this).toggle()})),m(Te);class Oe{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",e=>e+t),this._setElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight",e=>e+t),this._setElementAttributes(".sticky-top","marginRight",e=>e-t)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t)[e];t.style[e]=i(Number.parseFloat(s))+"px"})}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight"),this._resetElementAttributes(".sticky-top","marginRight")}_saveInitialAttribute(t,e){const i=t.style[e];i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,t=>{const i=F.getDataAttribute(t,e);void 0===i?t.style.removeProperty(e):(F.removeDataAttribute(t,e),t.style[e]=i)})}_applyManipulationCallback(t,e){s(t)?e(t):U.find(t,this._element).forEach(e)}isOverflowing(){return this.getWidth()>0}}const Ce={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},ke={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"};class Le{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&d(this._getElement()),this._getElement().classList.add("show"),this._emulateAnimation(()=>{g(t)})):g(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),g(t)})):g(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...Ce,..."object"==typeof t?t:{}}).rootElement=o(t.rootElement),r("backdrop",t,ke),t}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),P.on(this._getElement(),"mousedown.bs.backdrop",()=>{g(this._config.clickCallback)}),this._isAppended=!0)}dispose(){this._isAppended&&(P.off(this._element,"mousedown.bs.backdrop"),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const xe={trapElement:null,autofocus:!0},De={trapElement:"element",autofocus:"boolean"};class Se{constructor(t){this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:t,autofocus:e}=this._config;this._isActive||(e&&t.focus(),P.off(document,".bs.focustrap"),P.on(document,"focusin.bs.focustrap",t=>this._handleFocusin(t)),P.on(document,"keydown.tab.bs.focustrap",t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,P.off(document,".bs.focustrap"))}_handleFocusin(t){const{target:e}=t,{trapElement:i}=this._config;if(e===document||e===i||i.contains(e))return;const n=U.focusableChildren(i);0===n.length?i.focus():"backward"===this._lastTabNavDirection?n[n.length-1].focus():n[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?"backward":"forward")}_getConfig(t){return t={...xe,..."object"==typeof t?t:{}},r("focustrap",t,De),t}}const Ne={backdrop:!0,keyboard:!0,focus:!0},Ie={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"};class Pe extends H{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=U.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new Oe}static get Default(){return Ne}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||P.trigger(this._element,"show.bs.modal",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add("modal-open"),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),P.on(this._dialog,"mousedown.dismiss.bs.modal",()=>{P.one(this._element,"mouseup.dismiss.bs.modal",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(){if(!this._isShown||this._isTransitioning)return;if(P.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const t=this._isAnimated();t&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove("show"),P.off(this._element,"click.dismiss.bs.modal"),P.off(this._dialog,"mousedown.dismiss.bs.modal"),this._queueCallback(()=>this._hideModal(),this._element,t)}dispose(){[window,this._dialog].forEach(t=>P.off(t,".bs.modal")),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Le({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Se({trapElement:this._element})}_getConfig(t){return t={...Ne,...F.getDataAttributes(this._element),..."object"==typeof t?t:{}},r("modal",t,Ie),t}_showElement(t){const e=this._isAnimated(),i=U.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),e&&d(this._element),this._element.classList.add("show"),this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,P.trigger(this._element,"shown.bs.modal",{relatedTarget:t})},this._dialog,e)}_setEscapeEvent(){this._isShown?P.on(this._element,"keydown.dismiss.bs.modal",t=>{this._config.keyboard&&"Escape"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==t.key||this._triggerBackdropTransition()}):P.off(this._element,"keydown.dismiss.bs.modal")}_setResizeEvent(){this._isShown?P.on(window,"resize.bs.modal",()=>this._adjustDialog()):P.off(window,"resize.bs.modal")}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._scrollBar.reset(),P.trigger(this._element,"hidden.bs.modal")})}_showBackdrop(t){P.on(this._element,"click.dismiss.bs.modal",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())}),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(P.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:i}=this._element,n=e>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||t.contains("modal-static")||(n||(i.overflowY="hidden"),t.add("modal-static"),this._queueCallback(()=>{t.remove("modal-static"),n||this._queueCallback(()=>{i.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;(!i&&t&&!p()||i&&!t&&p())&&(this._element.style.paddingLeft=e+"px"),(i&&!t&&!p()||!i&&t&&p())&&(this._element.style.paddingRight=e+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Pe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}P.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=i(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),P.one(e,"show.bs.modal",t=>{t.defaultPrevented||P.one(e,"hidden.bs.modal",()=>{a(this)&&this.focus()})}),Pe.getOrCreateInstance(e).toggle(this)})),B(Pe),m(Pe);const je={backdrop:!0,keyboard:!0,scroll:!1},Me={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"};class He extends H{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return"offcanvas"}static get Default(){return je}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||P.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new Oe).hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),this._queueCallback(()=>{this._config.scroll||this._focustrap.activate(),P.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&(P.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),this._backdrop.hide(),this._queueCallback(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new Oe).reset(),P.trigger(this._element,"hidden.bs.offcanvas")},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(t){return t={...je,...F.getDataAttributes(this._element),..."object"==typeof t?t:{}},r("offcanvas",t,Me),t}_initializeBackDrop(){return new Le({className:"offcanvas-backdrop",isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new Se({trapElement:this._element})}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.offcanvas",t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()})}static jQueryInterface(t){return this.each((function(){const e=He.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}P.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=i(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;P.one(e,"hidden.bs.offcanvas",()=>{a(this)&&this.focus()});const n=U.findOne(".offcanvas.show");n&&n!==e&&He.getInstance(n).hide(),He.getOrCreateInstance(e).toggle(this)})),P.on(window,"load.bs.offcanvas.data-api",()=>U.find(".offcanvas.show").forEach(t=>He.getOrCreateInstance(t).show())),B(He),m(He);const Be=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Re=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,We=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,ze=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!Be.has(i)||Boolean(Re.test(t.nodeValue)||We.test(t.nodeValue));const n=e.filter(t=>t instanceof RegExp);for(let t=0,e=n.length;t<e;t++)if(n[t].test(i))return!0;return!1};function qe(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=Object.keys(e),o=[].concat(...n.body.querySelectorAll("*"));for(let t=0,i=o.length;t<i;t++){const i=o[t],n=i.nodeName.toLowerCase();if(!s.includes(n)){i.remove();continue}const r=[].concat(...i.attributes),a=[].concat(e["*"]||[],e[n]||[]);r.forEach(t=>{ze(t,a)||i.removeAttribute(t.nodeName)})}return n.body.innerHTML}const Fe=new Set(["sanitize","allowList","sanitizeFn"]),Ue={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},$e={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},Ve={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ke={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class Xe extends H{constructor(t,e){if(void 0===pe)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return Ve}static get NAME(){return"tooltip"}static get Event(){return Ke}static get DefaultType(){return Ue}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),P.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=P.trigger(this._element,this.constructor.Event.SHOW),e=c(this._element),i=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!i)return;const n=this.getTipElement(),s=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME);n.setAttribute("id",s),this._element.setAttribute("aria-describedby",s),this._config.animation&&n.classList.add("fade");const o="function"==typeof this._config.placement?this._config.placement.call(this,n,this._element):this._config.placement,r=this._getAttachment(o);this._addAttachmentClass(r);const{container:a}=this._config;M.set(n,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(a.append(n),P.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=fe(this._element,n,this._getPopperConfig(r)),n.classList.add("show");const l=this._resolvePossibleFunction(this._config.customClass);l&&n.classList.add(...l.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{P.on(t,"mouseover",h)});const d=this.tip.classList.contains("fade");this._queueCallback(()=>{const t=this._hoverState;this._hoverState=null,P.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)},this.tip,d)}hide(){if(!this._popper)return;const t=this.getTipElement();if(P.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>P.off(t,"mouseover",h)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains("fade");this._queueCallback(()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),P.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))},this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");t.innerHTML=this._config.template;const e=t.children[0];return this.setContent(e),e.classList.remove("fade","show"),this.tip=e,this.tip}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".tooltip-inner")}_sanitizeAndSetContent(t,e,i){const n=U.findOne(i,t);e||!n?this.setElementContent(n,e):n.remove()}setElementContent(t,e){if(null!==t)return s(e)?(e=o(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.append(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=qe(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){const t=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(t)}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){return e||this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(t)}`)}_getAttachment(t){return $e[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(t=>{if("click"===t)P.on(this._element,this.constructor.Event.CLICK,this._config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;P.on(this._element,e,this._config.selector,t=>this._enter(t)),P.on(this._element,i,this._config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},P.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e._config.delay&&e._config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e._config.delay&&e._config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=F.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{Fe.has(t)&&delete e[t]}),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:o(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),r("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=qe(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=t.getAttribute("class").match(e);null!==i&&i.length>0&&i.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){const e=Xe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(Xe);const Ye={...Xe.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'},Qe={...Xe.DefaultType,content:"(string|element|function)"},Ge={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class Ze extends Xe{static get Default(){return Ye}static get NAME(){return"popover"}static get Event(){return Ge}static get DefaultType(){return Qe}isWithContent(){return this.getTitle()||this._getContent()}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".popover-header"),this._sanitizeAndSetContent(t,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(t){return this.each((function(){const e=Ze.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(Ze);const Je={offset:10,method:"auto",target:""},ti={offset:"number",method:"string",target:"(string|element)"},ei=".nav-link, .list-group-item, .dropdown-item";class ii extends H{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,P.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return Je}static get NAME(){return"scrollspy"}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":"position",i="auto"===this._config.method?t:this._config.method,n="position"===i?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),U.find(ei,this._config.target).map(t=>{const s=e(t),o=s?U.findOne(s):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[F[i](o).top+n,s]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){P.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){return(t={...Je,...F.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target=o(t.target)||document.documentElement,r("scrollspy",t,ti),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t<this._offsets[e+1])&&this._activate(this._targets[e])}}_activate(t){this._activeTarget=t,this._clear();const e=ei.split(",").map(e=>`${e}[data-bs-target="${t}"],${e}[href="${t}"]`),i=U.findOne(e.join(","),this._config.target);i.classList.add("active"),i.classList.contains("dropdown-item")?U.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add("active"):U.parents(i,".nav, .list-group").forEach(t=>{U.prev(t,".nav-link, .list-group-item").forEach(t=>t.classList.add("active")),U.prev(t,".nav-item").forEach(t=>{U.children(t,".nav-link").forEach(t=>t.classList.add("active"))})}),P.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){U.find(ei,this._config.target).filter(t=>t.classList.contains("active")).forEach(t=>t.classList.remove("active"))}static jQueryInterface(t){return this.each((function(){const e=ii.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(window,"load.bs.scrollspy.data-api",()=>{U.find('[data-bs-spy="scroll"]').forEach(t=>new ii(t))}),m(ii);class ni extends H{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active"))return;let t;const e=i(this._element),n=this._element.closest(".nav, .list-group");if(n){const e="UL"===n.nodeName||"OL"===n.nodeName?":scope > li > .active":".active";t=U.find(e,n),t=t[t.length-1]}const s=t?P.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(P.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==s&&s.defaultPrevented)return;this._activate(this._element,n);const o=()=>{P.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),P.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,i){const n=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?U.children(e,".active"):U.find(":scope > li > .active",e))[0],s=i&&n&&n.classList.contains("fade"),o=()=>this._transitionComplete(t,n,i);n&&s?(n.classList.remove("show"),this._queueCallback(o,t,!0)):o()}_transitionComplete(t,e,i){if(e){e.classList.remove("active");const t=U.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),d(t),t.classList.contains("fade")&&t.classList.add("show");let n=t.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const e=t.closest(".dropdown");e&&U.find(".dropdown-toggle",e).forEach(t=>t.classList.add("active")),t.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(t){return this.each((function(){const e=ni.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||ni.getOrCreateInstance(this).show()})),m(ni);const si={animation:"boolean",autohide:"boolean",delay:"number"},oi={animation:!0,autohide:!0,delay:5e3};class ri extends H{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return si}static get Default(){return oi}static get NAME(){return"toast"}show(){P.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),d(this._element),this._element.classList.add("show"),this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),P.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this._element.classList.contains("show")&&(P.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove("showing"),this._element.classList.remove("show"),P.trigger(this._element,"hidden.bs.toast")},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),super.dispose()}_getConfig(t){return t={...oi,...F.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},r("toast",t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){P.on(this._element,"mouseover.bs.toast",t=>this._onInteraction(t,!0)),P.on(this._element,"mouseout.bs.toast",t=>this._onInteraction(t,!1)),P.on(this._element,"focusin.bs.toast",t=>this._onInteraction(t,!0)),P.on(this._element,"focusout.bs.toast",t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ri.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return B(ri),m(ri),{Alert:R,Button:W,Carousel:Z,Collapse:et,Dropdown:Te,Modal:Pe,Offcanvas:He,Popover:Ze,ScrollSpy:ii,Tab:ni,Toast:ri,Tooltip:Xe}}));
+//# sourceMappingURL=bootstrap.bundle.min.js.map
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map
new file mode 100644
index 0000000..a59a60b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/math.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"names":["getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","document","querySelector","getElementFromSelector","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","toString","call","match","toLowerCase","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getComputedStyle","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","noop","reflow","offsetHeight","getjQuery","jQuery","window","body","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","addEventListener","push","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","Math","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","uid","getEvent","findHandler","events","delegationSelector","uidEventList","i","len","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","has","addHandler","oneOff","wrapFn","relatedTarget","delegateTarget","this","handlers","previousFn","replace","domElements","querySelectorAll","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","on","one","inNamespace","isNamespace","elementEvent","namespace","storeElementEvent","handlerKey","removeNamespacedHandlers","slice","keyHandlers","trigger","args","isNative","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","BaseComponent","constructor","_element","DATA_KEY","dispose","EVENT_KEY","getOwnPropertyNames","propertyName","_queueCallback","isAnimated","[object Object]","getInstance","VERSION","Error","enableDismissTrigger","component","method","clickEvent","tagName","closest","getOrCreateInstance","Alert","close","_destroyElement","each","data","undefined","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","pageYOffset","left","pageXOffset","position","offsetTop","offsetLeft","SelectorEngine","find","concat","Element","prototype","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","Carousel","super","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","order","_handleSwipe","absDeltax","abs","direction","_keydown","_addTouchEventListeners","start","pointerType","touches","clientX","move","end","clearTimeout","itemImg","e","add","_getItemByOrder","isNext","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","triggerSlidEvent","completeCallBack","action","ride","carouselInterface","slideIndex","dataApiClickHandler","carousels","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activesData","actives","container","tempActiveData","elemActive","dimension","_getDimension","style","scrollSize","triggerArrayLength","selected","triggerArray","isOpen","bottom","right","basePlacements","variationPlacements","reduce","acc","placement","placements","modifierPhases","getNodeName","nodeName","getWindow","node","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","applyStyles$1","enabled","phase","_ref","state","elements","styles","assign","effect","_ref2","initialStyles","popper","options","strategy","margin","arrow","reference","hasOwnProperty","attribute","requires","getBasePlacement","round","includeScale","scaleX","scaleY","width","offsetWidth","height","x","y","getLayoutRect","clientRect","rootNode","isSameNode","host","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","userAgent","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","axisProp","centerOffset","_options$element","requiresIfExists","unsetSides","mapToStyles","_Object$assign2","popperRect","offsets","gpuAcceleration","adaptive","roundOffsets","_ref3","dpr","devicePixelRatio","roundOffsetsByDPR","_ref3$x","_ref3$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","computeStyles$1","_ref4","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","data-popper-placement","passive","eventListeners","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","update","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","listScrollParents","_element$ownerDocumen","getScrollParent","isBody","visualViewport","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","html","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getVariation","computeOffsets","variation","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","referenceElement","clippingClientRect","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","sort","a","b","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","hide$1","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","data-popper-reference-hidden","data-popper-escaped","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets$1","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_min","_max","_preventedOffset","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","DEFAULT_OPTIONS","modifiers","areValidElements","_len","arguments","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","cleanupModifierEffects","merged","visited","result","modifier","dep","depModifier","orderModifiers","current","existing","m","_ref3$options","cleanupFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","destroy","onFirstUpdate","createPopper","computeStyles","applyStyles","flip","REGEXP_KEYDOWN","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","display","popperConfig","autoClose","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","getParentFromElement","_createPopper","focus","_completeHide","Popper","_getPopperConfig","isDisplayStatic","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","items","toggles","context","composedPath","isMenuTarget","isActive","stopPropagation","getToggleButton","clearMenus","dataApiKeydownHandler","ScrollBarHelper","getWidth","documentWidth","innerWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","styleProp","scrollbarWidth","_applyManipulationCallback","_resetElementAttributes","actualValue","removeProperty","callBack","isOverflowing","className","rootElement","clickCallback","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","trapElement","autofocus","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","shiftKey","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_ignoreBackdropClick","_scrollBar","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","_triggerBackdropTransition","_resetAdjustments","currentTarget","isModalOverflowing","isBodyOverflowing","paddingLeft","paddingRight","showEvent","Offcanvas","visibility","blur","allReadyOpen","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","allowlistKeys","elName","attributeList","allowedAttributes","innerHTML","DISALLOWED_ATTRIBUTES","animation","template","title","delay","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","*","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","prefix","floor","random","getElementById","getUID","attachment","_getAttachment","_addAttachmentClass","_resolvePossibleFunction","prevHoverState","_cleanTipClass","getTitle","setContent","_sanitizeAndSetContent","content","templateElement","setElementContent","textContent","updateAttachment","_getDelegateConfig","_handlePopperPlacementChange","_getBasicClassPrefix","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","basicClassPrefixRegex","tabClass","token","tClass","Popover","_getContent","SELECTOR_LINK_ITEMS","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","item","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","listGroup","navItem","spy","Tab","listElement","itemSelector","hideEvent","complete","active","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","dropdown","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n  if (obj === null || obj === undefined) {\n    return `${obj}`\n  }\n\n  return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttr = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n      hrefAttr = `#${hrefAttr.split('#')[1]}`\n    }\n\n    selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n  }\n\n  return selector\n}\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element)\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null\n  }\n\n  return null\n}\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element)\n\n  return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => {\n  if (!obj || typeof obj !== 'object') {\n    return false\n  }\n\n  if (typeof obj.jquery !== 'undefined') {\n    obj = obj[0]\n  }\n\n  return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n  if (isElement(obj)) { // it's a jQuery object or a node element\n    return obj.jquery ? obj[0] : obj\n  }\n\n  if (typeof obj === 'string' && obj.length > 0) {\n    return document.querySelector(obj)\n  }\n\n  return null\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n  Object.keys(configTypes).forEach(property => {\n    const expectedTypes = configTypes[property]\n    const value = config[property]\n    const valueType = value && isElement(value) ? 'element' : toType(value)\n\n    if (!new RegExp(expectedTypes).test(valueType)) {\n      throw new TypeError(\n        `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n      )\n    }\n  })\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  // eslint-disable-next-line no-unused-expressions\n  element.offsetHeight\n}\n\nconst getjQuery = () => {\n  const { jQuery } = window\n\n  if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return jQuery\n  }\n\n  return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        DOMContentLoadedCallbacks.forEach(callback => callback())\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = callback => {\n  if (typeof callback === 'function') {\n    callback()\n  }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n  }\n\n  const listLength = list.length\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  getElement,\n  getUID,\n  getSelectorFromElement,\n  getElementFromSelector,\n  getTransitionDurationFromElement,\n  triggerTransitionEnd,\n  isElement,\n  typeCheckConfig,\n  isVisible,\n  isDisabled,\n  findShadowRoot,\n  noop,\n  getNextActiveElement,\n  reflow,\n  getjQuery,\n  onDOMContentLoaded,\n  isRTL,\n  defineJQueryPlugin,\n  execute,\n  executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n  const uid = getUidEvent(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    event.delegateTarget = element\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (let i = domElements.length; i--;) {\n        if (domElements[i] === target) {\n          event.delegateTarget = target\n\n          if (handler.oneOff) {\n            // eslint-disable-next-line unicorn/consistent-destructuring\n            EventHandler.off(element, event.type, selector, fn)\n          }\n\n          return fn.apply(target, [event])\n        }\n      }\n    }\n\n    // To please ESLint\n    return null\n  }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n  const uidEventList = Object.keys(events)\n\n  for (let i = 0, len = uidEventList.length; i < len; i++) {\n    const event = events[uidEventList[i]]\n\n    if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n      return event\n    }\n  }\n\n  return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n  const delegation = typeof handler === 'string'\n  const originalHandler = delegation ? delegationFn : handler\n\n  let typeEvent = getTypeEvent(originalTypeEvent)\n  const isNative = nativeEvents.has(typeEvent)\n\n  if (!isNative) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  if (!handler) {\n    handler = delegationFn\n    delegationFn = null\n  }\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (customEventsRegex.test(originalTypeEvent)) {\n    const wrapFn = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    if (delegationFn) {\n      delegationFn = wrapFn(delegationFn)\n    } else {\n      handler = wrapFn(handler)\n    }\n  }\n\n  const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n  const events = getEvent(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n  if (previousFn) {\n    previousFn.oneOff = previousFn.oneOff && oneOff\n\n    return\n  }\n\n  const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = delegation ?\n    bootstrapDelegationHandler(element, handler, delegationFn) :\n    bootstrapHandler(element, handler)\n\n  fn.delegationSelector = delegation ? handler : null\n  fn.originalHandler = originalHandler\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  Object.keys(storeElementEvent).forEach(handlerKey => {\n    if (handlerKey.includes(namespace)) {\n      const event = storeElementEvent[handlerKey]\n\n      removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n    }\n  })\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, false)\n  },\n\n  one(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFn) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getEvent(element)\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof originalHandler !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!events || !events[typeEvent]) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      Object.keys(events).forEach(elementEvent => {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      })\n    }\n\n    const storeElementEvent = events[typeEvent] || {}\n    Object.keys(storeElementEvent).forEach(keyHandlers => {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        const event = storeElementEvent[keyHandlers]\n\n        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n      }\n    })\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const $ = getjQuery()\n    const typeEvent = getTypeEvent(event)\n    const inNamespace = event !== typeEvent\n    const isNative = nativeEvents.has(typeEvent)\n\n    let jQueryEvent\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n    let evt = null\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args)\n\n      $(element).trigger(jQueryEvent)\n      bubbles = !jQueryEvent.isPropagationStopped()\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n      defaultPrevented = jQueryEvent.isDefaultPrevented()\n    }\n\n    if (isNative) {\n      evt = document.createEvent('HTMLEvents')\n      evt.initEvent(typeEvent, bubbles, true)\n    } else {\n      evt = new CustomEvent(event, {\n        bubbles,\n        cancelable: true\n      })\n    }\n\n    // merge custom information in our event\n    if (typeof args !== 'undefined') {\n      Object.keys(args).forEach(key => {\n        Object.defineProperty(evt, key, {\n          get() {\n            return args[key]\n          }\n        })\n      })\n    }\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n  executeAfterTransition,\n  getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.1.0'\n\nclass BaseComponent {\n  constructor(element) {\n    element = getElement(element)\n\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    Object.getOwnPropertyNames(this).forEach(propertyName => {\n      this[propertyName] = null\n    })\n  }\n\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  /** Static */\n\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nexport {\n  enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nenableDismissTrigger(Alert, 'close')\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this)\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n  if (val === 'true') {\n    return true\n  }\n\n  if (val === 'false') {\n    return false\n  }\n\n  if (val === Number(val).toString()) {\n    return Number(val)\n  }\n\n  if (val === '' || val === 'null') {\n    return null\n  }\n\n  return val\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n\n    Object.keys(element.dataset)\n      .filter(key => key.startsWith('bs'))\n      .forEach(key => {\n        let pureKey = key.replace(/^bs/, '')\n        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n        attributes[pureKey] = normalizeData(element.dataset[key])\n      })\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  },\n\n  offset(element) {\n    const rect = element.getBoundingClientRect()\n\n    return {\n      top: rect.top + window.pageYOffset,\n      left: rect.left + window.pageXOffset\n    }\n  },\n\n  position(element) {\n    return {\n      top: element.offsetTop,\n      left: element.offsetLeft\n    }\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children)\n      .filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n\n    let ancestor = element.parentNode\n\n    while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n      if (ancestor.matches(selector)) {\n        parents.push(ancestor)\n      }\n\n      ancestor = ancestor.parentNode\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  getNextActiveElement,\n  reflow,\n  triggerTransitionEnd,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  slide: false,\n  pause: 'hover',\n  wrap: true,\n  touch: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)',\n  keyboard: 'boolean',\n  slide: '(boolean|string)',\n  pause: '(string|boolean)',\n  wrap: 'boolean',\n  touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._items = null\n    this._interval = null\n    this._activeElement = null\n    this._isPaused = false\n    this._isSliding = false\n    this.touchTimeout = null\n    this.touchStartX = 0\n    this.touchDeltaX = 0\n\n    this._config = this._getConfig(config)\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n    this._pointerEvent = Boolean(window.PointerEvent)\n\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause(event) {\n    if (!event) {\n      this._isPaused = true\n    }\n\n    if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n      triggerTransitionEnd(this._element)\n      this.cycle(true)\n    }\n\n    clearInterval(this._interval)\n    this._interval = null\n  }\n\n  cycle(event) {\n    if (!event) {\n      this._isPaused = false\n    }\n\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    if (this._config && this._config.interval && !this._isPaused) {\n      this._updateInterval()\n\n      this._interval = setInterval(\n        (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n        this._config.interval\n      )\n    }\n  }\n\n  to(index) {\n    this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeIndex = this._getItemIndex(this._activeElement)\n\n    if (index > this._items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    if (activeIndex === index) {\n      this.pause()\n      this.cycle()\n      return\n    }\n\n    const order = index > activeIndex ?\n      ORDER_NEXT :\n      ORDER_PREV\n\n    this._slide(order, this._items[index])\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _handleSwipe() {\n    const absDeltax = Math.abs(this.touchDeltaX)\n\n    if (absDeltax <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltax / this.touchDeltaX\n\n    this.touchDeltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n    }\n\n    if (this._config.touch && this._touchSupported) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    const start = event => {\n      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n        this.touchStartX = event.clientX\n      } else if (!this._pointerEvent) {\n        this.touchStartX = event.touches[0].clientX\n      }\n    }\n\n    const move = event => {\n      // ensure swiping with one touch and not pinching\n      this.touchDeltaX = event.touches && event.touches.length > 1 ?\n        0 :\n        event.touches[0].clientX - this.touchStartX\n    }\n\n    const end = event => {\n      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n        this.touchDeltaX = event.clientX - this.touchStartX\n      }\n\n      this._handleSwipe()\n      if (this._config.pause === 'hover') {\n        // If it's a touch-enabled device, mouseenter/leave are fired as\n        // part of the mouse compatibility events on first tap - the carousel\n        // would stop cycling until user tapped out of it;\n        // here, we listen for touchend, explicitly pause the carousel\n        // (as if it's the second time we tap on it, mouseenter compat event\n        // is NOT fired) and after a timeout (to allow for mouse compatibility\n        // events to fire) we explicitly restart cycling\n\n        this.pause()\n        if (this.touchTimeout) {\n          clearTimeout(this.touchTimeout)\n        }\n\n        this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n      }\n    }\n\n    SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n      EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n    })\n\n    if (this._pointerEvent) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n    }\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(direction)\n    }\n  }\n\n  _getItemIndex(element) {\n    this._items = element && element.parentNode ?\n      SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n      []\n\n    return this._items.indexOf(element)\n  }\n\n  _getItemByOrder(order, activeElement) {\n    const isNext = order === ORDER_NEXT\n    return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n  }\n\n  _triggerSlideEvent(relatedTarget, eventDirectionName) {\n    const targetIndex = this._getItemIndex(relatedTarget)\n    const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n    return EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget,\n      direction: eventDirectionName,\n      from: fromIndex,\n      to: targetIndex\n    })\n  }\n\n  _setActiveIndicatorElement(element) {\n    if (this._indicatorsElement) {\n      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n      activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n      activeIndicator.removeAttribute('aria-current')\n\n      const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n      for (let i = 0; i < indicators.length; i++) {\n        if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n          indicators[i].classList.add(CLASS_NAME_ACTIVE)\n          indicators[i].setAttribute('aria-current', 'true')\n          break\n        }\n      }\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    if (elementInterval) {\n      this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n      this._config.interval = elementInterval\n    } else {\n      this._config.interval = this._config.defaultInterval || this._config.interval\n    }\n  }\n\n  _slide(directionOrOrder, element) {\n    const order = this._directionToOrder(directionOrOrder)\n    const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeElementIndex = this._getItemIndex(activeElement)\n    const nextElement = element || this._getItemByOrder(order, activeElement)\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n    const isCycling = Boolean(this._interval)\n\n    const isNext = order === ORDER_NEXT\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n    const eventDirectionName = this._orderToDirection(order)\n\n    if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n      this._isSliding = false\n      return\n    }\n\n    if (this._isSliding) {\n      return\n    }\n\n    const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    this._isSliding = true\n\n    if (isCycling) {\n      this.pause()\n    }\n\n    this._setActiveIndicatorElement(nextElement)\n    this._activeElement = nextElement\n\n    const triggerSlidEvent = () => {\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      })\n    }\n\n    if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n      nextElement.classList.add(orderClassName)\n\n      reflow(nextElement)\n\n      activeElement.classList.add(directionalClassName)\n      nextElement.classList.add(directionalClassName)\n\n      const completeCallBack = () => {\n        nextElement.classList.remove(directionalClassName, orderClassName)\n        nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n        activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n        this._isSliding = false\n\n        setTimeout(triggerSlidEvent, 0)\n      }\n\n      this._queueCallback(completeCallBack, activeElement, true)\n    } else {\n      activeElement.classList.remove(CLASS_NAME_ACTIVE)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      this._isSliding = false\n      triggerSlidEvent()\n    }\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n      return direction\n    }\n\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n      return order\n    }\n\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n\n  // Static\n\n  static carouselInterface(element, config) {\n    const data = Carousel.getOrCreateInstance(element, config)\n\n    let { _config } = data\n    if (typeof config === 'object') {\n      _config = {\n        ..._config,\n        ...config\n      }\n    }\n\n    const action = typeof config === 'string' ? config : _config.slide\n\n    if (typeof config === 'number') {\n      data.to(config)\n    } else if (typeof action === 'string') {\n      if (typeof data[action] === 'undefined') {\n        throw new TypeError(`No method named \"${action}\"`)\n      }\n\n      data[action]()\n    } else if (_config.interval && _config.ride) {\n      data.pause()\n      data.cycle()\n    }\n  }\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      Carousel.carouselInterface(this, config)\n    })\n  }\n\n  static dataApiClickHandler(event) {\n    const target = getElementFromSelector(this)\n\n    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n      return\n    }\n\n    const config = {\n      ...Manipulator.getDataAttributes(target),\n      ...Manipulator.getDataAttributes(this)\n    }\n    const slideIndex = this.getAttribute('data-bs-slide-to')\n\n    if (slideIndex) {\n      config.interval = false\n    }\n\n    Carousel.carouselInterface(target, config)\n\n    if (slideIndex) {\n      Carousel.getInstance(target).to(slideIndex)\n    }\n\n    event.preventDefault()\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (let i = 0, len = carousels.length; i < len; i++) {\n    Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]))\n  }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getSelectorFromElement,\n  getElementFromSelector,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  toggle: true,\n  parent: null\n}\n\nconst DefaultType = {\n  toggle: 'boolean',\n  parent: '(null|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._isTransitioning = false\n    this._config = this._getConfig(config)\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggleList.length; i < len; i++) {\n      const elem = toggleList[i]\n      const selector = getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElem => foundElem === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._selector = selector\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let actives = []\n    let activesData\n\n    if (this._config.parent) {\n      const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n      actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)) // remove children if greater depth\n    }\n\n    const container = SelectorEngine.findOne(this._selector)\n    if (actives.length) {\n      const tempActiveData = actives.find(elem => container !== elem)\n      activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null\n\n      if (activesData && activesData._isTransitioning) {\n        return\n      }\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    actives.forEach(elemActive => {\n      if (container !== elemActive) {\n        Collapse.getOrCreateInstance(elemActive, { toggle: false }).hide()\n      }\n\n      if (!activesData) {\n        Data.set(elemActive, DATA_KEY, null)\n      }\n    })\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    const triggerArrayLength = this._triggerArray.length\n    for (let i = 0; i < triggerArrayLength; i++) {\n      const trigger = this._triggerArray[i]\n      const elem = getElementFromSelector(trigger)\n\n      if (elem && !this._isShown(elem)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n    SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem))\n      .forEach(element => {\n        const selected = getElementFromSelector(element)\n\n        if (selected) {\n          this._addAriaAndCollapsedClass([element], this._isShown(selected))\n        }\n      })\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    triggerArray.forEach(elem => {\n      if (isOpen) {\n        elem.classList.remove(CLASS_NAME_COLLAPSED)\n      } else {\n        elem.classList.add(CLASS_NAME_COLLAPSED)\n      }\n\n      elem.setAttribute('aria-expanded', isOpen)\n    })\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const _config = {}\n      if (typeof config === 'string' && /show|hide/.test(config)) {\n        _config.toggle = false\n      }\n\n      const data = Collapse.getOrCreateInstance(this, _config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  const selector = getSelectorFromElement(this)\n  const selectorElements = SelectorEngine.find(selector)\n\n  selectorElements.forEach(element => {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","import { isHTMLElement } from \"./instanceOf.js\";\nvar round = Math.round;\nexport default function getBoundingClientRect(element, includeScale) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  var rect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (isHTMLElement(element) && includeScale) {\n    // Fallback to 1 in case both values are `0`\n    scaleX = rect.width / element.offsetWidth || 1;\n    scaleY = rect.height / element.offsetHeight || 1;\n  }\n\n  return {\n    width: round(rect.width / scaleX),\n    height: round(rect.height / scaleY),\n    top: round(rect.top / scaleY),\n    right: round(rect.right / scaleX),\n    bottom: round(rect.bottom / scaleY),\n    left: round(rect.left / scaleX),\n    x: round(rect.left / scaleX),\n    y: round(rect.top / scaleY)\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n  var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!isHTMLElement(arrowElement)) {\n      console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n    }\n\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n  var x = _ref.x,\n      y = _ref.y;\n  var win = window;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(round(x * dpr) / dpr) || 0,\n    y: round(round(y * dpr) / dpr) || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets;\n\n  var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n      _ref3$x = _ref3.x,\n      x = _ref3$x === void 0 ? 0 : _ref3$x,\n      _ref3$y = _ref3.y,\n      y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top) {\n      sideY = bottom; // $FlowFixMe[prop-missing]\n\n      y -= offsetParent[heightProp] - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left) {\n      sideX = right; // $FlowFixMe[prop-missing]\n\n      x -= offsetParent[widthProp] - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n  var state = _ref4.state,\n      options = _ref4.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n    if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n      return transitionProperty.indexOf(property) >= 0;\n    })) {\n      console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n    }\n  }\n\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n  var rect = getBoundingClientRect(element);\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n  // can be obscured underneath it.\n  // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n  // if it isn't open, so if this isn't available, the popper will be detected\n  // to overflow the bottom of the screen too early.\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n    // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n    // errors due to floating point numbers, so we need to check precision.\n    // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n    // Feature detection fails in mobile emulation mode in Chrome.\n    // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n    // 0.001\n    // Fallback here: \"Not Safari\" userAgent\n\n    if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var referenceElement = state.elements.reference;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n  var referenceClientRect = getBoundingClientRect(referenceElement);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n    }\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases 鈥� research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis || checkAltAxis) {\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = popperOffsets[mainAxis] + overflow[mainSide];\n    var max = popperOffsets[mainAxis] - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n    var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n    if (checkMainAxis) {\n      var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n      popperOffsets[mainAxis] = preventedOffset;\n      data[mainAxis] = preventedOffset - offset;\n    }\n\n    if (checkAltAxis) {\n      var _mainSide = mainAxis === 'x' ? top : left;\n\n      var _altSide = mainAxis === 'x' ? bottom : right;\n\n      var _offset = popperOffsets[altAxis];\n\n      var _min = _offset + overflow[_mainSide];\n\n      var _max = _offset - overflow[_altSide];\n\n      var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n      popperOffsets[altAxis] = _preventedOffset;\n      data[altAxis] = _preventedOffset - _offset;\n    }\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = rect.width / element.offsetWidth || 1;\n  var scaleY = rect.height / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(options) {\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        }); // Validate the provided modifiers so that the consumer will get warned\n        // if one of the modifiers is invalid for any reason\n\n        if (process.env.NODE_ENV !== \"production\") {\n          var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n            var name = _ref.name;\n            return name;\n          });\n          validateModifiers(modifiers);\n\n          if (getBasePlacement(state.options.placement) === auto) {\n            var flipModifier = state.orderedModifiers.find(function (_ref2) {\n              var name = _ref2.name;\n              return name === 'flip';\n            });\n\n            if (!flipModifier) {\n              console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n            }\n          }\n\n          var _getComputedStyle = getComputedStyle(popper),\n              marginTop = _getComputedStyle.marginTop,\n              marginRight = _getComputedStyle.marginRight,\n              marginBottom = _getComputedStyle.marginBottom,\n              marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n          // cause bugs with positioning, so we'll warn the consumer\n\n\n          if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n            return parseFloat(margin);\n          })) {\n            console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n          }\n        }\n\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update 鈥� it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          if (process.env.NODE_ENV !== \"production\") {\n            console.error(INVALID_ELEMENT_ERROR);\n          }\n\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n        var __debug_loops__ = 0;\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (process.env.NODE_ENV !== \"production\") {\n            __debug_loops__ += 1;\n\n            if (__debug_loops__ > 100) {\n              console.error(INFINITE_LOOP_ERROR);\n              break;\n            }\n          }\n\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update 鈥� it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      if (process.env.NODE_ENV !== \"production\") {\n        console.error(INVALID_ELEMENT_ERROR);\n      }\n\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref3) {\n        var name = _ref3.name,\n            _ref3$options = _ref3.options,\n            options = _ref3$options === void 0 ? {} : _ref3$options,\n            effect = _ref3.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getElementFromSelector,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n  offset: [0, 2],\n  boundary: 'clippingParents',\n  reference: 'toggle',\n  display: 'dynamic',\n  popperConfig: null,\n  autoClose: true\n}\n\nconst DefaultType = {\n  offset: '(array|string|function)',\n  boundary: '(string|element)',\n  reference: '(string|element|object)',\n  display: 'string',\n  popperConfig: '(null|object|function)',\n  autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._popper = null\n    this._config = this._getConfig(config)\n    this._menu = this._getMenuElement()\n    this._inNavbar = this._detectNavbar()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown(this._menu)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    const parent = Dropdown.getParentFromElement(this._element)\n    // Totally disable Popper for Dropdowns in Navbar\n    if (this._inNavbar) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n    } else {\n      this._createPopper(parent)\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement &&\n      !parent.closest(SELECTOR_NAVBAR_NAV)) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown(this._menu)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = {\n      ...this.constructor.Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createPopper(parent) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    const popperConfig = this._getPopperConfig()\n    const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n    if (isDisplayStatic) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n    }\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getMenuElement() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._element.parentNode\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display\n    if (this._config.display === 'static') {\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n\n  static clearMenus(event) {\n    if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n      return\n    }\n\n    const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggles.length; i < len; i++) {\n      const context = Dropdown.getInstance(toggles[i])\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      if (!context._isShown()) {\n        continue\n      }\n\n      const relatedTarget = {\n        relatedTarget: context._element\n      }\n\n      if (event) {\n        const composedPath = event.composedPath()\n        const isMenuTarget = composedPath.includes(context._menu)\n        if (\n          composedPath.includes(context._element) ||\n          (context._config.autoClose === 'inside' && !isMenuTarget) ||\n          (context._config.autoClose === 'outside' && isMenuTarget)\n        ) {\n          continue\n        }\n\n        // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n        if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n          continue\n        }\n\n        if (event.type === 'click') {\n          relatedTarget.clickEvent = event\n        }\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static getParentFromElement(element) {\n    return getElementFromSelector(element) || element.parentNode\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not input/textarea:\n    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n    // If input/textarea:\n    //  - If space key => not a dropdown command\n    //  - If key is other than escape\n    //    - If key is not up or down => not a dropdown command\n    //    - If trigger inside the menu => not a dropdown command\n    if (/input|textarea/i.test(event.target.tagName) ?\n      event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n      ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n        event.target.closest(SELECTOR_MENU))) :\n      !REGEXP_KEYDOWN.test(event.key)) {\n      return\n    }\n\n    const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n    if (!isActive && event.key === ESCAPE_KEY) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    if (event.key === ESCAPE_KEY) {\n      instance.hide()\n      return\n    }\n\n    if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n      if (!isActive) {\n        instance.show()\n      }\n\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (!isActive || event.key === SPACE_KEY) {\n      Dropdown.clearMenus()\n    }\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n  }\n\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProp, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProp)\n      const calculatedValue = window.getComputedStyle(element)[styleProp]\n      element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n  }\n\n  _saveInitialAttribute(element, styleProp) {\n    const actualValue = element.style[styleProp]\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProp, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProp) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProp)\n      if (typeof value === 'undefined') {\n        element.style.removeProperty(styleProp)\n      } else {\n        Manipulator.removeDataAttribute(element, styleProp)\n        element.style[styleProp] = value\n      }\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n    } else {\n      SelectorEngine.find(selector, this._element).forEach(callBack)\n    }\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n  className: 'modal-backdrop',\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  isAnimated: false,\n  rootElement: 'body', // give the choice to place backdrop under different elements\n  clickCallback: null\n}\n\nconst DefaultType = {\n  className: 'string',\n  isVisible: 'boolean',\n  isAnimated: 'boolean',\n  rootElement: '(element|string)',\n  clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    if (this._config.isAnimated) {\n      reflow(this._getElement())\n    }\n\n    this._getElement().classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  // Private\n\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    this._config.rootElement.append(this._getElement())\n\n    EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport { typeCheckConfig } from './index'\n\nconst Default = {\n  trapElement: null, // The element to trap focus inside of\n  autofocus: true\n}\n\nconst DefaultType = {\n  trapElement: 'element',\n  autofocus: 'boolean'\n}\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nclass FocusTrap {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  activate() {\n    const { trapElement, autofocus } = this._config\n\n    if (this._isActive) {\n      return\n    }\n\n    if (autofocus) {\n      trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n\n  _handleFocusin(event) {\n    const { target } = event\n    const { trapElement } = this._config\n\n    if (\n      target === document ||\n      target === trapElement ||\n      trapElement.contains(target)\n    ) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  focus: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._isShown = false\n    this._ignoreBackdropClick = false\n    this._isTransitioning = false\n    this._scrollBar = new ScrollBarHelper()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n\n    if (this._isAnimated()) {\n      this._isTransitioning = true\n    }\n\n    this._scrollBar.hide()\n\n    document.body.classList.add(CLASS_NAME_OPEN)\n\n    this._adjustDialog()\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n      EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n        if (event.target === this._element) {\n          this._ignoreBackdropClick = true\n        }\n      })\n    })\n\n    this._showBackdrop(() => this._showElement(relatedTarget))\n  }\n\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = false\n    const isAnimated = this._isAnimated()\n\n    if (isAnimated) {\n      this._isTransitioning = true\n    }\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    this._focustrap.deactivate()\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n    EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n    this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n  }\n\n  dispose() {\n    [window, this._dialog]\n      .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n      isAnimated: this._isAnimated()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _showElement(relatedTarget) {\n    const isAnimated = this._isAnimated()\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n    if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n      // Don't move modal's DOM position\n      document.body.append(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.scrollTop = 0\n\n    if (modalBody) {\n      modalBody.scrollTop = 0\n    }\n\n    if (isAnimated) {\n      reflow(this._element)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate()\n      }\n\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }\n\n    this._queueCallback(transitionComplete, this._dialog, isAnimated)\n  }\n\n  _setEscapeEvent() {\n    if (this._isShown) {\n      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n        if (this._config.keyboard && event.key === ESCAPE_KEY) {\n          event.preventDefault()\n          this.hide()\n        } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n          this._triggerBackdropTransition()\n        }\n      })\n    } else {\n      EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n    }\n  }\n\n  _setResizeEvent() {\n    if (this._isShown) {\n      EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n    } else {\n      EventHandler.off(window, EVENT_RESIZE)\n    }\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._scrollBar.reset()\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    })\n  }\n\n  _showBackdrop(callback) {\n    EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n      if (this._ignoreBackdropClick) {\n        this._ignoreBackdropClick = false\n        return\n      }\n\n      if (event.target !== event.currentTarget) {\n        return\n      }\n\n      if (this._config.backdrop === true) {\n        this.hide()\n      } else if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n      }\n    })\n\n    this._backdrop.show(callback)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const { classList, scrollHeight, style } = this._element\n    const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n    // return if the following background transition hasn't yet completed\n    if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n      return\n    }\n\n    if (!isModalOverflowing) {\n      style.overflowY = 'hidden'\n    }\n\n    classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      classList.remove(CLASS_NAME_STATIC)\n      if (!isModalOverflowing) {\n        this._queueCallback(() => {\n          style.overflowY = ''\n        }, this._dialog)\n      }\n    }, this._dialog)\n\n    this._element.focus()\n  }\n\n  // ----------------------------------------------------------------------\n  // the following methods are used to handle overflowing modals\n  // ----------------------------------------------------------------------\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const scrollbarWidth = this._scrollBar.getWidth()\n    const isBodyOverflowing = scrollbarWidth > 0\n\n    if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n      this._element.style.paddingLeft = `${scrollbarWidth}px`\n    }\n\n    if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n      this._element.style.paddingRight = `${scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  // Static\n\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](relatedTarget)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  const data = Modal.getOrCreateInstance(target)\n\n  data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  isVisible,\n  typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: 'boolean',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._element.style.visibility = 'visible'\n\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll) {\n        this._focustrap.activate()\n      }\n\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.setAttribute('aria-hidden', true)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n      this._element.style.visibility = 'hidden'\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible: this._config.backdrop,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: () => this.hide()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (this._config.keyboard && event.key === ESCAPE_KEY) {\n        this.hide()\n      }\n    })\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (allReadyOpen && allReadyOpen !== target) {\n    Offcanvas.getInstance(allReadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\n  SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())\n)\n\nenableDismissTrigger(Offcanvas)\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n  const attrName = attr.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attrName)) {\n    if (uriAttrs.has(attrName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n    }\n\n    return true\n  }\n\n  const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n  // Check if a regular expression validates the attribute.\n  for (let i = 0, len = regExp.length; i < len; i++) {\n    if (regExp[i].test(attrName)) {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFn && typeof sanitizeFn === 'function') {\n    return sanitizeFn(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const allowlistKeys = Object.keys(allowList)\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (let i = 0, len = elements.length; i < len; i++) {\n    const el = elements[i]\n    const elName = el.nodeName.toLowerCase()\n\n    if (!allowlistKeys.includes(elName)) {\n      el.remove()\n\n      continue\n    }\n\n    const attributeList = [].concat(...el.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n    attributeList.forEach(attr => {\n      if (!allowedAttribute(attr, allowedAttributes)) {\n        el.removeAttribute(attr.nodeName)\n      }\n    })\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  findShadowRoot,\n  getElement,\n  getUID,\n  isElement,\n  isRTL,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport { DefaultAllowlist, sanitizeHtml } from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n  animation: 'boolean',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string',\n  delay: '(number|object)',\n  html: 'boolean',\n  selector: '(string|boolean)',\n  placement: '(string|function)',\n  offset: '(array|string|function)',\n  container: '(string|element|boolean)',\n  fallbackPlacements: 'array',\n  boundary: '(string|element)',\n  customClass: '(string|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  allowList: 'object',\n  popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n              '<div class=\"tooltip-arrow\"></div>' +\n              '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  selector: false,\n  placement: 'top',\n  offset: [0, 0],\n  container: false,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  boundary: 'clippingParents',\n  customClass: '',\n  sanitize: true,\n  sanitizeFn: null,\n  allowList: DefaultAllowlist,\n  popperConfig: null\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    super(element)\n\n    // private\n    this._isEnabled = true\n    this._timeout = 0\n    this._hoverState = ''\n    this._activeTrigger = {}\n    this._popper = null\n\n    // Protected\n    this._config = this._getConfig(config)\n    this.tip = null\n\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle(event) {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (event) {\n      const context = this._initializeOnDelegatedTarget(event)\n\n      context._activeTrigger.click = !context._activeTrigger.click\n\n      if (context._isWithActiveTrigger()) {\n        context._enter(null, context)\n      } else {\n        context._leave(null, context)\n      }\n    } else {\n      if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n        this._leave(null, this)\n        return\n      }\n\n      this._enter(null, this)\n    }\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this.tip) {\n      this.tip.remove()\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this.isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = shadowRoot === null ?\n      this._element.ownerDocument.documentElement.contains(this._element) :\n      shadowRoot.contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const tipId = getUID(this.constructor.NAME)\n\n    tip.setAttribute('id', tipId)\n    this._element.setAttribute('aria-describedby', tipId)\n\n    if (this._config.animation) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    const placement = typeof this._config.placement === 'function' ?\n      this._config.placement.call(this, tip, this._element) :\n      this._config.placement\n\n    const attachment = this._getAttachment(placement)\n    this._addAttachmentClass(attachment)\n\n    const { container } = this._config\n    Data.set(tip, this.constructor.DATA_KEY, this)\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n    }\n\n    if (this._popper) {\n      this._popper.update()\n    } else {\n      this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n    }\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    const customClass = this._resolvePossibleFunction(this._config.customClass)\n    if (customClass) {\n      tip.classList.add(...customClass.split(' '))\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children).forEach(element => {\n        EventHandler.on(element, 'mouseover', noop)\n      })\n    }\n\n    const complete = () => {\n      const prevHoverState = this._hoverState\n\n      this._hoverState = null\n      EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n      if (prevHoverState === HOVER_STATE_OUT) {\n        this._leave(null, this)\n      }\n    }\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n  }\n\n  hide() {\n    if (!this._popper) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (this._hoverState !== HOVER_STATE_SHOW) {\n        tip.remove()\n      }\n\n      this._cleanTipClass()\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n      if (this._popper) {\n        this._popper.destroy()\n        this._popper = null\n      }\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children)\n        .forEach(element => EventHandler.off(element, 'mouseover', noop))\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n    this._hoverState = ''\n  }\n\n  update() {\n    if (this._popper !== null) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n\n  isWithContent() {\n    return Boolean(this.getTitle())\n  }\n\n  getTipElement() {\n    if (this.tip) {\n      return this.tip\n    }\n\n    const element = document.createElement('div')\n    element.innerHTML = this._config.template\n\n    const tip = element.children[0]\n    this.setContent(tip)\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n\n    this.tip = tip\n    return this.tip\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER)\n  }\n\n  _sanitizeAndSetContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!content && templateElement) {\n      templateElement.remove()\n      return\n    }\n\n    // we use append for html objects to maintain js events\n    this.setElementContent(templateElement, content)\n  }\n\n  setElementContent(element, content) {\n    if (element === null) {\n      return\n    }\n\n    if (isElement(content)) {\n      content = getElement(content)\n\n      // content is a DOM node or a jQuery\n      if (this._config.html) {\n        if (content.parentNode !== element) {\n          element.innerHTML = ''\n          element.append(content)\n        }\n      } else {\n        element.textContent = content.textContent\n      }\n\n      return\n    }\n\n    if (this._config.html) {\n      if (this._config.sanitize) {\n        content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n      }\n\n      element.innerHTML = content\n    } else {\n      element.textContent = content\n    }\n  }\n\n  getTitle() {\n    const title = this._element.getAttribute('data-bs-original-title') || this._config.title\n\n    return this._resolvePossibleFunction(title)\n  }\n\n  updateAttachment(attachment) {\n    if (attachment === 'right') {\n      return 'end'\n    }\n\n    if (attachment === 'left') {\n      return 'start'\n    }\n\n    return attachment\n  }\n\n  // Private\n\n  _initializeOnDelegatedTarget(event, context) {\n    return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(content) {\n    return typeof content === 'function' ? content.call(this._element) : content\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'onChange',\n          enabled: true,\n          phase: 'afterWrite',\n          fn: data => this._handlePopperPlacementChange(data)\n        }\n      ],\n      onFirstUpdate: data => {\n        if (data.options.placement !== data.placement) {\n          this._handlePopperPlacementChange(data)\n        }\n      }\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _addAttachmentClass(attachment) {\n    this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`)\n  }\n\n  _getAttachment(placement) {\n    return AttachmentMap[placement.toUpperCase()]\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    triggers.forEach(trigger => {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSEENTER :\n          this.constructor.Event.FOCUSIN\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSELEAVE :\n          this.constructor.Event.FOCUSOUT\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n        EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n      }\n    })\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._config.selector) {\n      this._config = {\n        ...this._config,\n        trigger: 'manual',\n        selector: ''\n      }\n    } else {\n      this._fixTitle()\n    }\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n    const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n    if (title || originalTitleType !== 'string') {\n      this._element.setAttribute('data-bs-original-title', title || '')\n      if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n        this._element.setAttribute('aria-label', title)\n      }\n\n      this._element.setAttribute('title', '')\n    }\n  }\n\n  _enter(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = true\n    }\n\n    if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n      context._hoverState = HOVER_STATE_SHOW\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_SHOW\n\n    if (!context._config.delay || !context._config.delay.show) {\n      context.show()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_SHOW) {\n        context.show()\n      }\n    }, context._config.delay.show)\n  }\n\n  _leave(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = context._element.contains(event.relatedTarget)\n    }\n\n    if (context._isWithActiveTrigger()) {\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_OUT\n\n    if (!context._config.delay || !context._config.delay.hide) {\n      context.hide()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_OUT) {\n        context.hide()\n      }\n    }, context._config.delay.hide)\n  }\n\n  _isWithActiveTrigger() {\n    for (const trigger in this._activeTrigger) {\n      if (this._activeTrigger[trigger]) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    Object.keys(dataAttributes).forEach(dataAttr => {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n        delete dataAttributes[dataAttr]\n      }\n    })\n\n    config = {\n      ...this.constructor.Default,\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (config.sanitize) {\n      config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const key in this._config) {\n      if (this.constructor.Default[key] !== this._config[key]) {\n        config[key] = this._config[key]\n      }\n    }\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _cleanTipClass() {\n    const tip = this.getTipElement()\n    const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g')\n    const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex)\n    if (tabClass !== null && tabClass.length > 0) {\n      tabClass.map(token => token.trim())\n        .forEach(tClass => tip.classList.remove(tClass))\n    }\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX\n  }\n\n  _handlePopperPlacementChange(popperData) {\n    const { state } = popperData\n\n    if (!state) {\n      return\n    }\n\n    this.tip = state.elements.popper\n    this._cleanTipClass()\n    this._addAttachmentClass(this._getAttachment(state.placement))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\n\nconst Default = {\n  ...Tooltip.Default,\n  placement: 'right',\n  offset: [0, 8],\n  trigger: 'click',\n  content: '',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n              '<div class=\"popover-arrow\"></div>' +\n              '<h3 class=\"popover-header\"></h3>' +\n              '<div class=\"popover-body\"></div>' +\n            '</div>'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(string|element|function)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Overrides\n\n  isWithContent() {\n    return this.getTitle() || this._getContent()\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE)\n    this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT)\n  }\n\n  // Private\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getSelectorFromElement,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  offset: 10,\n  method: 'auto',\n  target: ''\n}\n\nconst DefaultType = {\n  offset: 'number',\n  method: 'string',\n  target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n    this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n    this._config = this._getConfig(config)\n    this._offsets = []\n    this._targets = []\n    this._activeTarget = null\n    this._scrollHeight = 0\n\n    EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n    this.refresh()\n    this._process()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  refresh() {\n    const autoMethod = this._scrollElement === this._scrollElement.window ?\n      METHOD_OFFSET :\n      METHOD_POSITION\n\n    const offsetMethod = this._config.method === 'auto' ?\n      autoMethod :\n      this._config.method\n\n    const offsetBase = offsetMethod === METHOD_POSITION ?\n      this._getScrollTop() :\n      0\n\n    this._offsets = []\n    this._targets = []\n    this._scrollHeight = this._getScrollHeight()\n\n    const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n\n    targets.map(element => {\n      const targetSelector = getSelectorFromElement(element)\n      const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n      if (target) {\n        const targetBCR = target.getBoundingClientRect()\n        if (targetBCR.width || targetBCR.height) {\n          return [\n            Manipulator[offsetMethod](target).top + offsetBase,\n            targetSelector\n          ]\n        }\n      }\n\n      return null\n    })\n      .filter(item => item)\n      .sort((a, b) => a[0] - b[0])\n      .forEach(item => {\n        this._offsets.push(item[0])\n        this._targets.push(item[1])\n      })\n  }\n\n  dispose() {\n    EventHandler.off(this._scrollElement, EVENT_KEY)\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.target = getElement(config.target) || document.documentElement\n\n    typeCheckConfig(NAME, config, DefaultType)\n\n    return config\n  }\n\n  _getScrollTop() {\n    return this._scrollElement === window ?\n      this._scrollElement.pageYOffset :\n      this._scrollElement.scrollTop\n  }\n\n  _getScrollHeight() {\n    return this._scrollElement.scrollHeight || Math.max(\n      document.body.scrollHeight,\n      document.documentElement.scrollHeight\n    )\n  }\n\n  _getOffsetHeight() {\n    return this._scrollElement === window ?\n      window.innerHeight :\n      this._scrollElement.getBoundingClientRect().height\n  }\n\n  _process() {\n    const scrollTop = this._getScrollTop() + this._config.offset\n    const scrollHeight = this._getScrollHeight()\n    const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n    if (this._scrollHeight !== scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      const target = this._targets[this._targets.length - 1]\n\n      if (this._activeTarget !== target) {\n        this._activate(target)\n      }\n\n      return\n    }\n\n    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n      this._activeTarget = null\n      this._clear()\n      return\n    }\n\n    for (let i = this._offsets.length; i--;) {\n      const isActiveTarget = this._activeTarget !== this._targets[i] &&\n          scrollTop >= this._offsets[i] &&\n          (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n      if (isActiveTarget) {\n        this._activate(this._targets[i])\n      }\n    }\n  }\n\n  _activate(target) {\n    this._activeTarget = target\n\n    this._clear()\n\n    const queries = SELECTOR_LINK_ITEMS.split(',')\n      .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n    const link = SelectorEngine.findOne(queries.join(','), this._config.target)\n\n    link.classList.add(CLASS_NAME_ACTIVE)\n    if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n        .forEach(listGroup => {\n          // Set triggered links parents as active\n          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n          SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n            .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n          // Handle special case when .nav-link is inside .nav-item\n          SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n            .forEach(navItem => {\n              SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n                .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n            })\n        })\n    }\n\n    EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n      relatedTarget: target\n    })\n  }\n\n  _clear() {\n    SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n      .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n      .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  SelectorEngine.find(SELECTOR_DATA_SPY)\n    .forEach(spy => new ScrollSpy(spy))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  show() {\n    if ((this._element.parentNode &&\n      this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n      this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n      return\n    }\n\n    let previous\n    const target = getElementFromSelector(this._element)\n    const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n    if (listElement) {\n      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n      previous = SelectorEngine.find(itemSelector, listElement)\n      previous = previous[previous.length - 1]\n    }\n\n    const hideEvent = previous ?\n      EventHandler.trigger(previous, EVENT_HIDE, {\n        relatedTarget: this._element\n      }) :\n      null\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget: previous\n    })\n\n    if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._activate(this._element, listElement)\n\n    const complete = () => {\n      EventHandler.trigger(previous, EVENT_HIDDEN, {\n        relatedTarget: this._element\n      })\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget: previous\n      })\n    }\n\n    if (target) {\n      this._activate(target, target.parentNode, complete)\n    } else {\n      complete()\n    }\n  }\n\n  // Private\n\n  _activate(element, container, callback) {\n    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n      SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n      SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n    const active = activeElements[0]\n    const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n    const complete = () => this._transitionComplete(element, active, callback)\n\n    if (active && isTransitioning) {\n      active.classList.remove(CLASS_NAME_SHOW)\n      this._queueCallback(complete, element, true)\n    } else {\n      complete()\n    }\n  }\n\n  _transitionComplete(element, active, callback) {\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n\n      const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n      if (dropdownChild) {\n        dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n      }\n\n      if (active.getAttribute('role') === 'tab') {\n        active.setAttribute('aria-selected', false)\n      }\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n    if (element.getAttribute('role') === 'tab') {\n      element.setAttribute('aria-selected', true)\n    }\n\n    reflow(element)\n\n    if (element.classList.contains(CLASS_NAME_FADE)) {\n      element.classList.add(CLASS_NAME_SHOW)\n    }\n\n    let parent = element.parentNode\n    if (parent && parent.nodeName === 'LI') {\n      parent = parent.parentNode\n    }\n\n    if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n      const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n      if (dropdownElement) {\n        SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n          .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n      }\n\n      element.setAttribute('aria-expanded', true)\n    }\n\n    if (callback) {\n      callback()\n    }\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  const data = Tab.getOrCreateInstance(this)\n  data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      this._element.classList.remove(CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    return config\n  }\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout':\n        this._hasMouseInteraction = isInteracting\n        break\n      case 'focusin':\n      case 'focusout':\n        this._hasKeyboardInteraction = isInteracting\n        break\n      default:\n        break\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\nenableDismissTrigger(Toast)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert'\nimport Button from './src/button'\nimport Carousel from './src/carousel'\nimport Collapse from './src/collapse'\nimport Dropdown from './src/dropdown'\nimport Modal from './src/modal'\nimport Offcanvas from './src/offcanvas'\nimport Popover from './src/popover'\nimport ScrollSpy from './src/scrollspy'\nimport Tab from './src/tab'\nimport Toast from './src/toast'\nimport Tooltip from './src/tooltip'\n\nexport default {\n  Alert,\n  Button,\n  Carousel,\n  Collapse,\n  Dropdown,\n  Modal,\n  Offcanvas,\n  Popover,\n  ScrollSpy,\n  Tab,\n  Toast,\n  Tooltip\n}\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js
new file mode 100644
index 0000000..ca37afc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js
@@ -0,0 +1,4977 @@
+/*!
+  * Bootstrap v5.1.0 (https://getbootstrap.com/)
+  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+  */
+import * as Popper from '@popperjs/core';
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): util/index.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+const MAX_UID = 1000000;
+const MILLISECONDS_MULTIPLIER = 1000;
+const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
+
+const toType = obj => {
+  if (obj === null || obj === undefined) {
+    return `${obj}`;
+  }
+
+  return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
+};
+/**
+ * --------------------------------------------------------------------------
+ * Public Util Api
+ * --------------------------------------------------------------------------
+ */
+
+
+const getUID = prefix => {
+  do {
+    prefix += Math.floor(Math.random() * MAX_UID);
+  } while (document.getElementById(prefix));
+
+  return prefix;
+};
+
+const getSelector = element => {
+  let selector = element.getAttribute('data-bs-target');
+
+  if (!selector || selector === '#') {
+    let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
+    // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
+    // `document.querySelector` will rightfully complain it is invalid.
+    // See https://github.com/twbs/bootstrap/issues/32273
+
+    if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
+      return null;
+    } // Just in case some CMS puts out a full URL with the anchor appended
+
+
+    if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
+      hrefAttr = `#${hrefAttr.split('#')[1]}`;
+    }
+
+    selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
+  }
+
+  return selector;
+};
+
+const getSelectorFromElement = element => {
+  const selector = getSelector(element);
+
+  if (selector) {
+    return document.querySelector(selector) ? selector : null;
+  }
+
+  return null;
+};
+
+const getElementFromSelector = element => {
+  const selector = getSelector(element);
+  return selector ? document.querySelector(selector) : null;
+};
+
+const getTransitionDurationFromElement = element => {
+  if (!element) {
+    return 0;
+  } // Get transition-duration of the element
+
+
+  let {
+    transitionDuration,
+    transitionDelay
+  } = window.getComputedStyle(element);
+  const floatTransitionDuration = Number.parseFloat(transitionDuration);
+  const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
+
+  if (!floatTransitionDuration && !floatTransitionDelay) {
+    return 0;
+  } // If multiple durations are defined, take the first
+
+
+  transitionDuration = transitionDuration.split(',')[0];
+  transitionDelay = transitionDelay.split(',')[0];
+  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
+};
+
+const triggerTransitionEnd = element => {
+  element.dispatchEvent(new Event(TRANSITION_END));
+};
+
+const isElement = obj => {
+  if (!obj || typeof obj !== 'object') {
+    return false;
+  }
+
+  if (typeof obj.jquery !== 'undefined') {
+    obj = obj[0];
+  }
+
+  return typeof obj.nodeType !== 'undefined';
+};
+
+const getElement = obj => {
+  if (isElement(obj)) {
+    // it's a jQuery object or a node element
+    return obj.jquery ? obj[0] : obj;
+  }
+
+  if (typeof obj === 'string' && obj.length > 0) {
+    return document.querySelector(obj);
+  }
+
+  return null;
+};
+
+const typeCheckConfig = (componentName, config, configTypes) => {
+  Object.keys(configTypes).forEach(property => {
+    const expectedTypes = configTypes[property];
+    const value = config[property];
+    const valueType = value && isElement(value) ? 'element' : toType(value);
+
+    if (!new RegExp(expectedTypes).test(valueType)) {
+      throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
+    }
+  });
+};
+
+const isVisible = element => {
+  if (!isElement(element) || element.getClientRects().length === 0) {
+    return false;
+  }
+
+  return getComputedStyle(element).getPropertyValue('visibility') === 'visible';
+};
+
+const isDisabled = element => {
+  if (!element || element.nodeType !== Node.ELEMENT_NODE) {
+    return true;
+  }
+
+  if (element.classList.contains('disabled')) {
+    return true;
+  }
+
+  if (typeof element.disabled !== 'undefined') {
+    return element.disabled;
+  }
+
+  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
+};
+
+const findShadowRoot = element => {
+  if (!document.documentElement.attachShadow) {
+    return null;
+  } // Can find the shadow root otherwise it'll return the document
+
+
+  if (typeof element.getRootNode === 'function') {
+    const root = element.getRootNode();
+    return root instanceof ShadowRoot ? root : null;
+  }
+
+  if (element instanceof ShadowRoot) {
+    return element;
+  } // when we don't find a shadow root
+
+
+  if (!element.parentNode) {
+    return null;
+  }
+
+  return findShadowRoot(element.parentNode);
+};
+
+const noop = () => {};
+/**
+ * Trick to restart an element's animation
+ *
+ * @param {HTMLElement} element
+ * @return void
+ *
+ * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
+ */
+
+
+const reflow = element => {
+  // eslint-disable-next-line no-unused-expressions
+  element.offsetHeight;
+};
+
+const getjQuery = () => {
+  const {
+    jQuery
+  } = window;
+
+  if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
+    return jQuery;
+  }
+
+  return null;
+};
+
+const DOMContentLoadedCallbacks = [];
+
+const onDOMContentLoaded = callback => {
+  if (document.readyState === 'loading') {
+    // add listener on the first call when the document is in loading state
+    if (!DOMContentLoadedCallbacks.length) {
+      document.addEventListener('DOMContentLoaded', () => {
+        DOMContentLoadedCallbacks.forEach(callback => callback());
+      });
+    }
+
+    DOMContentLoadedCallbacks.push(callback);
+  } else {
+    callback();
+  }
+};
+
+const isRTL = () => document.documentElement.dir === 'rtl';
+
+const defineJQueryPlugin = plugin => {
+  onDOMContentLoaded(() => {
+    const $ = getjQuery();
+    /* istanbul ignore if */
+
+    if ($) {
+      const name = plugin.NAME;
+      const JQUERY_NO_CONFLICT = $.fn[name];
+      $.fn[name] = plugin.jQueryInterface;
+      $.fn[name].Constructor = plugin;
+
+      $.fn[name].noConflict = () => {
+        $.fn[name] = JQUERY_NO_CONFLICT;
+        return plugin.jQueryInterface;
+      };
+    }
+  });
+};
+
+const execute = callback => {
+  if (typeof callback === 'function') {
+    callback();
+  }
+};
+
+const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
+  if (!waitForTransition) {
+    execute(callback);
+    return;
+  }
+
+  const durationPadding = 5;
+  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
+  let called = false;
+
+  const handler = ({
+    target
+  }) => {
+    if (target !== transitionElement) {
+      return;
+    }
+
+    called = true;
+    transitionElement.removeEventListener(TRANSITION_END, handler);
+    execute(callback);
+  };
+
+  transitionElement.addEventListener(TRANSITION_END, handler);
+  setTimeout(() => {
+    if (!called) {
+      triggerTransitionEnd(transitionElement);
+    }
+  }, emulatedDuration);
+};
+/**
+ * Return the previous/next element of a list.
+ *
+ * @param {array} list    The list of elements
+ * @param activeElement   The active element
+ * @param shouldGetNext   Choose to get next or previous element
+ * @param isCycleAllowed
+ * @return {Element|elem} The proper element
+ */
+
+
+const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
+  let index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed
+
+  if (index === -1) {
+    return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0];
+  }
+
+  const listLength = list.length;
+  index += shouldGetNext ? 1 : -1;
+
+  if (isCycleAllowed) {
+    index = (index + listLength) % listLength;
+  }
+
+  return list[Math.max(0, Math.min(index, listLength - 1))];
+};
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): dom/event-handler.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+
+const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
+const stripNameRegex = /\..*/;
+const stripUidRegex = /::\d+$/;
+const eventRegistry = {}; // Events storage
+
+let uidEvent = 1;
+const customEvents = {
+  mouseenter: 'mouseover',
+  mouseleave: 'mouseout'
+};
+const customEventsRegex = /^(mouseenter|mouseleave)/i;
+const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
+/**
+ * ------------------------------------------------------------------------
+ * Private methods
+ * ------------------------------------------------------------------------
+ */
+
+function getUidEvent(element, uid) {
+  return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
+}
+
+function getEvent(element) {
+  const uid = getUidEvent(element);
+  element.uidEvent = uid;
+  eventRegistry[uid] = eventRegistry[uid] || {};
+  return eventRegistry[uid];
+}
+
+function bootstrapHandler(element, fn) {
+  return function handler(event) {
+    event.delegateTarget = element;
+
+    if (handler.oneOff) {
+      EventHandler.off(element, event.type, fn);
+    }
+
+    return fn.apply(element, [event]);
+  };
+}
+
+function bootstrapDelegationHandler(element, selector, fn) {
+  return function handler(event) {
+    const domElements = element.querySelectorAll(selector);
+
+    for (let {
+      target
+    } = event; target && target !== this; target = target.parentNode) {
+      for (let i = domElements.length; i--;) {
+        if (domElements[i] === target) {
+          event.delegateTarget = target;
+
+          if (handler.oneOff) {
+            // eslint-disable-next-line unicorn/consistent-destructuring
+            EventHandler.off(element, event.type, selector, fn);
+          }
+
+          return fn.apply(target, [event]);
+        }
+      }
+    } // To please ESLint
+
+
+    return null;
+  };
+}
+
+function findHandler(events, handler, delegationSelector = null) {
+  const uidEventList = Object.keys(events);
+
+  for (let i = 0, len = uidEventList.length; i < len; i++) {
+    const event = events[uidEventList[i]];
+
+    if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
+      return event;
+    }
+  }
+
+  return null;
+}
+
+function normalizeParams(originalTypeEvent, handler, delegationFn) {
+  const delegation = typeof handler === 'string';
+  const originalHandler = delegation ? delegationFn : handler;
+  let typeEvent = getTypeEvent(originalTypeEvent);
+  const isNative = nativeEvents.has(typeEvent);
+
+  if (!isNative) {
+    typeEvent = originalTypeEvent;
+  }
+
+  return [delegation, originalHandler, typeEvent];
+}
+
+function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {
+  if (typeof originalTypeEvent !== 'string' || !element) {
+    return;
+  }
+
+  if (!handler) {
+    handler = delegationFn;
+    delegationFn = null;
+  } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
+  // this prevents the handler from being dispatched the same way as mouseover or mouseout does
+
+
+  if (customEventsRegex.test(originalTypeEvent)) {
+    const wrapFn = fn => {
+      return function (event) {
+        if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
+          return fn.call(this, event);
+        }
+      };
+    };
+
+    if (delegationFn) {
+      delegationFn = wrapFn(delegationFn);
+    } else {
+      handler = wrapFn(handler);
+    }
+  }
+
+  const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
+  const events = getEvent(element);
+  const handlers = events[typeEvent] || (events[typeEvent] = {});
+  const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
+
+  if (previousFn) {
+    previousFn.oneOff = previousFn.oneOff && oneOff;
+    return;
+  }
+
+  const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));
+  const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);
+  fn.delegationSelector = delegation ? handler : null;
+  fn.originalHandler = originalHandler;
+  fn.oneOff = oneOff;
+  fn.uidEvent = uid;
+  handlers[uid] = fn;
+  element.addEventListener(typeEvent, fn, delegation);
+}
+
+function removeHandler(element, events, typeEvent, handler, delegationSelector) {
+  const fn = findHandler(events[typeEvent], handler, delegationSelector);
+
+  if (!fn) {
+    return;
+  }
+
+  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
+  delete events[typeEvent][fn.uidEvent];
+}
+
+function removeNamespacedHandlers(element, events, typeEvent, namespace) {
+  const storeElementEvent = events[typeEvent] || {};
+  Object.keys(storeElementEvent).forEach(handlerKey => {
+    if (handlerKey.includes(namespace)) {
+      const event = storeElementEvent[handlerKey];
+      removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
+    }
+  });
+}
+
+function getTypeEvent(event) {
+  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
+  event = event.replace(stripNameRegex, '');
+  return customEvents[event] || event;
+}
+
+const EventHandler = {
+  on(element, event, handler, delegationFn) {
+    addHandler(element, event, handler, delegationFn, false);
+  },
+
+  one(element, event, handler, delegationFn) {
+    addHandler(element, event, handler, delegationFn, true);
+  },
+
+  off(element, originalTypeEvent, handler, delegationFn) {
+    if (typeof originalTypeEvent !== 'string' || !element) {
+      return;
+    }
+
+    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
+    const inNamespace = typeEvent !== originalTypeEvent;
+    const events = getEvent(element);
+    const isNamespace = originalTypeEvent.startsWith('.');
+
+    if (typeof originalHandler !== 'undefined') {
+      // Simplest case: handler is passed, remove that listener ONLY.
+      if (!events || !events[typeEvent]) {
+        return;
+      }
+
+      removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);
+      return;
+    }
+
+    if (isNamespace) {
+      Object.keys(events).forEach(elementEvent => {
+        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
+      });
+    }
+
+    const storeElementEvent = events[typeEvent] || {};
+    Object.keys(storeElementEvent).forEach(keyHandlers => {
+      const handlerKey = keyHandlers.replace(stripUidRegex, '');
+
+      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
+        const event = storeElementEvent[keyHandlers];
+        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
+      }
+    });
+  },
+
+  trigger(element, event, args) {
+    if (typeof event !== 'string' || !element) {
+      return null;
+    }
+
+    const $ = getjQuery();
+    const typeEvent = getTypeEvent(event);
+    const inNamespace = event !== typeEvent;
+    const isNative = nativeEvents.has(typeEvent);
+    let jQueryEvent;
+    let bubbles = true;
+    let nativeDispatch = true;
+    let defaultPrevented = false;
+    let evt = null;
+
+    if (inNamespace && $) {
+      jQueryEvent = $.Event(event, args);
+      $(element).trigger(jQueryEvent);
+      bubbles = !jQueryEvent.isPropagationStopped();
+      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
+      defaultPrevented = jQueryEvent.isDefaultPrevented();
+    }
+
+    if (isNative) {
+      evt = document.createEvent('HTMLEvents');
+      evt.initEvent(typeEvent, bubbles, true);
+    } else {
+      evt = new CustomEvent(event, {
+        bubbles,
+        cancelable: true
+      });
+    } // merge custom information in our event
+
+
+    if (typeof args !== 'undefined') {
+      Object.keys(args).forEach(key => {
+        Object.defineProperty(evt, key, {
+          get() {
+            return args[key];
+          }
+
+        });
+      });
+    }
+
+    if (defaultPrevented) {
+      evt.preventDefault();
+    }
+
+    if (nativeDispatch) {
+      element.dispatchEvent(evt);
+    }
+
+    if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {
+      jQueryEvent.preventDefault();
+    }
+
+    return evt;
+  }
+
+};
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): dom/data.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+const elementMap = new Map();
+var Data = {
+  set(element, key, instance) {
+    if (!elementMap.has(element)) {
+      elementMap.set(element, new Map());
+    }
+
+    const instanceMap = elementMap.get(element); // make it clear we only want one instance per element
+    // can be removed later when multiple key/instances are fine to be used
+
+    if (!instanceMap.has(key) && instanceMap.size !== 0) {
+      // eslint-disable-next-line no-console
+      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
+      return;
+    }
+
+    instanceMap.set(key, instance);
+  },
+
+  get(element, key) {
+    if (elementMap.has(element)) {
+      return elementMap.get(element).get(key) || null;
+    }
+
+    return null;
+  },
+
+  remove(element, key) {
+    if (!elementMap.has(element)) {
+      return;
+    }
+
+    const instanceMap = elementMap.get(element);
+    instanceMap.delete(key); // free up element references if there are no instances left for an element
+
+    if (instanceMap.size === 0) {
+      elementMap.delete(element);
+    }
+  }
+
+};
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): base-component.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+
+const VERSION = '5.1.0';
+
+class BaseComponent {
+  constructor(element) {
+    element = getElement(element);
+
+    if (!element) {
+      return;
+    }
+
+    this._element = element;
+    Data.set(this._element, this.constructor.DATA_KEY, this);
+  }
+
+  dispose() {
+    Data.remove(this._element, this.constructor.DATA_KEY);
+    EventHandler.off(this._element, this.constructor.EVENT_KEY);
+    Object.getOwnPropertyNames(this).forEach(propertyName => {
+      this[propertyName] = null;
+    });
+  }
+
+  _queueCallback(callback, element, isAnimated = true) {
+    executeAfterTransition(callback, element, isAnimated);
+  }
+  /** Static */
+
+
+  static getInstance(element) {
+    return Data.get(getElement(element), this.DATA_KEY);
+  }
+
+  static getOrCreateInstance(element, config = {}) {
+    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
+  }
+
+  static get VERSION() {
+    return VERSION;
+  }
+
+  static get NAME() {
+    throw new Error('You have to implement the static method "NAME", for each component!');
+  }
+
+  static get DATA_KEY() {
+    return `bs.${this.NAME}`;
+  }
+
+  static get EVENT_KEY() {
+    return `.${this.DATA_KEY}`;
+  }
+
+}
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): util/component-functions.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+const enableDismissTrigger = (component, method = 'hide') => {
+  const clickEvent = `click.dismiss${component.EVENT_KEY}`;
+  const name = component.NAME;
+  EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
+    if (['A', 'AREA'].includes(this.tagName)) {
+      event.preventDefault();
+    }
+
+    if (isDisabled(this)) {
+      return;
+    }
+
+    const target = getElementFromSelector(this) || this.closest(`.${name}`);
+    const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
+
+    instance[method]();
+  });
+};
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): alert.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+
+const NAME$d = 'alert';
+const DATA_KEY$c = 'bs.alert';
+const EVENT_KEY$c = `.${DATA_KEY$c}`;
+const EVENT_CLOSE = `close${EVENT_KEY$c}`;
+const EVENT_CLOSED = `closed${EVENT_KEY$c}`;
+const CLASS_NAME_FADE$5 = 'fade';
+const CLASS_NAME_SHOW$8 = 'show';
+/**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+class Alert extends BaseComponent {
+  // Getters
+  static get NAME() {
+    return NAME$d;
+  } // Public
+
+
+  close() {
+    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
+
+    if (closeEvent.defaultPrevented) {
+      return;
+    }
+
+    this._element.classList.remove(CLASS_NAME_SHOW$8);
+
+    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
+
+    this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
+  } // Private
+
+
+  _destroyElement() {
+    this._element.remove();
+
+    EventHandler.trigger(this._element, EVENT_CLOSED);
+    this.dispose();
+  } // Static
+
+
+  static jQueryInterface(config) {
+    return this.each(function () {
+      const data = Alert.getOrCreateInstance(this);
+
+      if (typeof config !== 'string') {
+        return;
+      }
+
+      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
+        throw new TypeError(`No method named "${config}"`);
+      }
+
+      data[config](this);
+    });
+  }
+
+}
+/**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+enableDismissTrigger(Alert, 'close');
+/**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ * add .Alert to jQuery only if jQuery is present
+ */
+
+defineJQueryPlugin(Alert);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): button.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+
+const NAME$c = 'button';
+const DATA_KEY$b = 'bs.button';
+const EVENT_KEY$b = `.${DATA_KEY$b}`;
+const DATA_API_KEY$7 = '.data-api';
+const CLASS_NAME_ACTIVE$3 = 'active';
+const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
+const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$b}${DATA_API_KEY$7}`;
+/**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+class Button extends BaseComponent {
+  // Getters
+  static get NAME() {
+    return NAME$c;
+  } // Public
+
+
+  toggle() {
+    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
+    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
+  } // Static
+
+
+  static jQueryInterface(config) {
+    return this.each(function () {
+      const data = Button.getOrCreateInstance(this);
+
+      if (config === 'toggle') {
+        data[config]();
+      }
+    });
+  }
+
+}
+/**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {
+  event.preventDefault();
+  const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
+  const data = Button.getOrCreateInstance(button);
+  data.toggle();
+});
+/**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ * add .Button to jQuery only if jQuery is present
+ */
+
+defineJQueryPlugin(Button);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): dom/manipulator.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+function normalizeData(val) {
+  if (val === 'true') {
+    return true;
+  }
+
+  if (val === 'false') {
+    return false;
+  }
+
+  if (val === Number(val).toString()) {
+    return Number(val);
+  }
+
+  if (val === '' || val === 'null') {
+    return null;
+  }
+
+  return val;
+}
+
+function normalizeDataKey(key) {
+  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
+}
+
+const Manipulator = {
+  setDataAttribute(element, key, value) {
+    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
+  },
+
+  removeDataAttribute(element, key) {
+    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
+  },
+
+  getDataAttributes(element) {
+    if (!element) {
+      return {};
+    }
+
+    const attributes = {};
+    Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => {
+      let pureKey = key.replace(/^bs/, '');
+      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
+      attributes[pureKey] = normalizeData(element.dataset[key]);
+    });
+    return attributes;
+  },
+
+  getDataAttribute(element, key) {
+    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
+  },
+
+  offset(element) {
+    const rect = element.getBoundingClientRect();
+    return {
+      top: rect.top + window.pageYOffset,
+      left: rect.left + window.pageXOffset
+    };
+  },
+
+  position(element) {
+    return {
+      top: element.offsetTop,
+      left: element.offsetLeft
+    };
+  }
+
+};
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): dom/selector-engine.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+const NODE_TEXT = 3;
+const SelectorEngine = {
+  find(selector, element = document.documentElement) {
+    return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
+  },
+
+  findOne(selector, element = document.documentElement) {
+    return Element.prototype.querySelector.call(element, selector);
+  },
+
+  children(element, selector) {
+    return [].concat(...element.children).filter(child => child.matches(selector));
+  },
+
+  parents(element, selector) {
+    const parents = [];
+    let ancestor = element.parentNode;
+
+    while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {
+      if (ancestor.matches(selector)) {
+        parents.push(ancestor);
+      }
+
+      ancestor = ancestor.parentNode;
+    }
+
+    return parents;
+  },
+
+  prev(element, selector) {
+    let previous = element.previousElementSibling;
+
+    while (previous) {
+      if (previous.matches(selector)) {
+        return [previous];
+      }
+
+      previous = previous.previousElementSibling;
+    }
+
+    return [];
+  },
+
+  next(element, selector) {
+    let next = element.nextElementSibling;
+
+    while (next) {
+      if (next.matches(selector)) {
+        return [next];
+      }
+
+      next = next.nextElementSibling;
+    }
+
+    return [];
+  },
+
+  focusableChildren(element) {
+    const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(', ');
+    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));
+  }
+
+};
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): carousel.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+
+const NAME$b = 'carousel';
+const DATA_KEY$a = 'bs.carousel';
+const EVENT_KEY$a = `.${DATA_KEY$a}`;
+const DATA_API_KEY$6 = '.data-api';
+const ARROW_LEFT_KEY = 'ArrowLeft';
+const ARROW_RIGHT_KEY = 'ArrowRight';
+const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
+
+const SWIPE_THRESHOLD = 40;
+const Default$a = {
+  interval: 5000,
+  keyboard: true,
+  slide: false,
+  pause: 'hover',
+  wrap: true,
+  touch: true
+};
+const DefaultType$a = {
+  interval: '(number|boolean)',
+  keyboard: 'boolean',
+  slide: '(boolean|string)',
+  pause: '(string|boolean)',
+  wrap: 'boolean',
+  touch: 'boolean'
+};
+const ORDER_NEXT = 'next';
+const ORDER_PREV = 'prev';
+const DIRECTION_LEFT = 'left';
+const DIRECTION_RIGHT = 'right';
+const KEY_TO_DIRECTION = {
+  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,
+  [ARROW_RIGHT_KEY]: DIRECTION_LEFT
+};
+const EVENT_SLIDE = `slide${EVENT_KEY$a}`;
+const EVENT_SLID = `slid${EVENT_KEY$a}`;
+const EVENT_KEYDOWN = `keydown${EVENT_KEY$a}`;
+const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY$a}`;
+const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY$a}`;
+const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$a}`;
+const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$a}`;
+const EVENT_TOUCHEND = `touchend${EVENT_KEY$a}`;
+const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$a}`;
+const EVENT_POINTERUP = `pointerup${EVENT_KEY$a}`;
+const EVENT_DRAG_START = `dragstart${EVENT_KEY$a}`;
+const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$a}${DATA_API_KEY$6}`;
+const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
+const CLASS_NAME_CAROUSEL = 'carousel';
+const CLASS_NAME_ACTIVE$2 = 'active';
+const CLASS_NAME_SLIDE = 'slide';
+const CLASS_NAME_END = 'carousel-item-end';
+const CLASS_NAME_START = 'carousel-item-start';
+const CLASS_NAME_NEXT = 'carousel-item-next';
+const CLASS_NAME_PREV = 'carousel-item-prev';
+const CLASS_NAME_POINTER_EVENT = 'pointer-event';
+const SELECTOR_ACTIVE$1 = '.active';
+const SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
+const SELECTOR_ITEM = '.carousel-item';
+const SELECTOR_ITEM_IMG = '.carousel-item img';
+const SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
+const SELECTOR_INDICATORS = '.carousel-indicators';
+const SELECTOR_INDICATOR = '[data-bs-target]';
+const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
+const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
+const POINTER_TYPE_TOUCH = 'touch';
+const POINTER_TYPE_PEN = 'pen';
+/**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+class Carousel extends BaseComponent {
+  constructor(element, config) {
+    super(element);
+    this._items = null;
+    this._interval = null;
+    this._activeElement = null;
+    this._isPaused = false;
+    this._isSliding = false;
+    this.touchTimeout = null;
+    this.touchStartX = 0;
+    this.touchDeltaX = 0;
+    this._config = this._getConfig(config);
+    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
+    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
+    this._pointerEvent = Boolean(window.PointerEvent);
+
+    this._addEventListeners();
+  } // Getters
+
+
+  static get Default() {
+    return Default$a;
+  }
+
+  static get NAME() {
+    return NAME$b;
+  } // Public
+
+
+  next() {
+    this._slide(ORDER_NEXT);
+  }
+
+  nextWhenVisible() {
+    // Don't call next when the page isn't visible
+    // or the carousel or its parent isn't visible
+    if (!document.hidden && isVisible(this._element)) {
+      this.next();
+    }
+  }
+
+  prev() {
+    this._slide(ORDER_PREV);
+  }
+
+  pause(event) {
+    if (!event) {
+      this._isPaused = true;
+    }
+
+    if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {
+      triggerTransitionEnd(this._element);
+      this.cycle(true);
+    }
+
+    clearInterval(this._interval);
+    this._interval = null;
+  }
+
+  cycle(event) {
+    if (!event) {
+      this._isPaused = false;
+    }
+
+    if (this._interval) {
+      clearInterval(this._interval);
+      this._interval = null;
+    }
+
+    if (this._config && this._config.interval && !this._isPaused) {
+      this._updateInterval();
+
+      this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
+    }
+  }
+
+  to(index) {
+    this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
+
+    const activeIndex = this._getItemIndex(this._activeElement);
+
+    if (index > this._items.length - 1 || index < 0) {
+      return;
+    }
+
+    if (this._isSliding) {
+      EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
+      return;
+    }
+
+    if (activeIndex === index) {
+      this.pause();
+      this.cycle();
+      return;
+    }
+
+    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
+
+    this._slide(order, this._items[index]);
+  } // Private
+
+
+  _getConfig(config) {
+    config = { ...Default$a,
+      ...Manipulator.getDataAttributes(this._element),
+      ...(typeof config === 'object' ? config : {})
+    };
+    typeCheckConfig(NAME$b, config, DefaultType$a);
+    return config;
+  }
+
+  _handleSwipe() {
+    const absDeltax = Math.abs(this.touchDeltaX);
+
+    if (absDeltax <= SWIPE_THRESHOLD) {
+      return;
+    }
+
+    const direction = absDeltax / this.touchDeltaX;
+    this.touchDeltaX = 0;
+
+    if (!direction) {
+      return;
+    }
+
+    this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT);
+  }
+
+  _addEventListeners() {
+    if (this._config.keyboard) {
+      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
+    }
+
+    if (this._config.pause === 'hover') {
+      EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event));
+      EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event));
+    }
+
+    if (this._config.touch && this._touchSupported) {
+      this._addTouchEventListeners();
+    }
+  }
+
+  _addTouchEventListeners() {
+    const start = event => {
+      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {
+        this.touchStartX = event.clientX;
+      } else if (!this._pointerEvent) {
+        this.touchStartX = event.touches[0].clientX;
+      }
+    };
+
+    const move = event => {
+      // ensure swiping with one touch and not pinching
+      this.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this.touchStartX;
+    };
+
+    const end = event => {
+      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {
+        this.touchDeltaX = event.clientX - this.touchStartX;
+      }
+
+      this._handleSwipe();
+
+      if (this._config.pause === 'hover') {
+        // If it's a touch-enabled device, mouseenter/leave are fired as
+        // part of the mouse compatibility events on first tap - the carousel
+        // would stop cycling until user tapped out of it;
+        // here, we listen for touchend, explicitly pause the carousel
+        // (as if it's the second time we tap on it, mouseenter compat event
+        // is NOT fired) and after a timeout (to allow for mouse compatibility
+        // events to fire) we explicitly restart cycling
+        this.pause();
+
+        if (this.touchTimeout) {
+          clearTimeout(this.touchTimeout);
+        }
+
+        this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
+      }
+    };
+
+    SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {
+      EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault());
+    });
+
+    if (this._pointerEvent) {
+      EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event));
+      EventHandler.on(this._element, EVENT_POINTERUP, event => end(event));
+
+      this._element.classList.add(CLASS_NAME_POINTER_EVENT);
+    } else {
+      EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event));
+      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event));
+      EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event));
+    }
+  }
+
+  _keydown(event) {
+    if (/input|textarea/i.test(event.target.tagName)) {
+      return;
+    }
+
+    const direction = KEY_TO_DIRECTION[event.key];
+
+    if (direction) {
+      event.preventDefault();
+
+      this._slide(direction);
+    }
+  }
+
+  _getItemIndex(element) {
+    this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];
+    return this._items.indexOf(element);
+  }
+
+  _getItemByOrder(order, activeElement) {
+    const isNext = order === ORDER_NEXT;
+    return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap);
+  }
+
+  _triggerSlideEvent(relatedTarget, eventDirectionName) {
+    const targetIndex = this._getItemIndex(relatedTarget);
+
+    const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));
+
+    return EventHandler.trigger(this._element, EVENT_SLIDE, {
+      relatedTarget,
+      direction: eventDirectionName,
+      from: fromIndex,
+      to: targetIndex
+    });
+  }
+
+  _setActiveIndicatorElement(element) {
+    if (this._indicatorsElement) {
+      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE$1, this._indicatorsElement);
+      activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
+      activeIndicator.removeAttribute('aria-current');
+      const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement);
+
+      for (let i = 0; i < indicators.length; i++) {
+        if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {
+          indicators[i].classList.add(CLASS_NAME_ACTIVE$2);
+          indicators[i].setAttribute('aria-current', 'true');
+          break;
+        }
+      }
+    }
+  }
+
+  _updateInterval() {
+    const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
+
+    if (!element) {
+      return;
+    }
+
+    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
+
+    if (elementInterval) {
+      this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
+      this._config.interval = elementInterval;
+    } else {
+      this._config.interval = this._config.defaultInterval || this._config.interval;
+    }
+  }
+
+  _slide(directionOrOrder, element) {
+    const order = this._directionToOrder(directionOrOrder);
+
+    const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
+
+    const activeElementIndex = this._getItemIndex(activeElement);
+
+    const nextElement = element || this._getItemByOrder(order, activeElement);
+
+    const nextElementIndex = this._getItemIndex(nextElement);
+
+    const isCycling = Boolean(this._interval);
+    const isNext = order === ORDER_NEXT;
+    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
+    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
+
+    const eventDirectionName = this._orderToDirection(order);
+
+    if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$2)) {
+      this._isSliding = false;
+      return;
+    }
+
+    if (this._isSliding) {
+      return;
+    }
+
+    const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
+
+    if (slideEvent.defaultPrevented) {
+      return;
+    }
+
+    if (!activeElement || !nextElement) {
+      // Some weirdness is happening, so we bail
+      return;
+    }
+
+    this._isSliding = true;
+
+    if (isCycling) {
+      this.pause();
+    }
+
+    this._setActiveIndicatorElement(nextElement);
+
+    this._activeElement = nextElement;
+
+    const triggerSlidEvent = () => {
+      EventHandler.trigger(this._element, EVENT_SLID, {
+        relatedTarget: nextElement,
+        direction: eventDirectionName,
+        from: activeElementIndex,
+        to: nextElementIndex
+      });
+    };
+
+    if (this._element.classList.contains(CLASS_NAME_SLIDE)) {
+      nextElement.classList.add(orderClassName);
+      reflow(nextElement);
+      activeElement.classList.add(directionalClassName);
+      nextElement.classList.add(directionalClassName);
+
+      const completeCallBack = () => {
+        nextElement.classList.remove(directionalClassName, orderClassName);
+        nextElement.classList.add(CLASS_NAME_ACTIVE$2);
+        activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
+        this._isSliding = false;
+        setTimeout(triggerSlidEvent, 0);
+      };
+
+      this._queueCallback(completeCallBack, activeElement, true);
+    } else {
+      activeElement.classList.remove(CLASS_NAME_ACTIVE$2);
+      nextElement.classList.add(CLASS_NAME_ACTIVE$2);
+      this._isSliding = false;
+      triggerSlidEvent();
+    }
+
+    if (isCycling) {
+      this.cycle();
+    }
+  }
+
+  _directionToOrder(direction) {
+    if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {
+      return direction;
+    }
+
+    if (isRTL()) {
+      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
+    }
+
+    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
+  }
+
+  _orderToDirection(order) {
+    if (![ORDER_NEXT, ORDER_PREV].includes(order)) {
+      return order;
+    }
+
+    if (isRTL()) {
+      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
+    }
+
+    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
+  } // Static
+
+
+  static carouselInterface(element, config) {
+    const data = Carousel.getOrCreateInstance(element, config);
+    let {
+      _config
+    } = data;
+
+    if (typeof config === 'object') {
+      _config = { ..._config,
+        ...config
+      };
+    }
+
+    const action = typeof config === 'string' ? config : _config.slide;
+
+    if (typeof config === 'number') {
+      data.to(config);
+    } else if (typeof action === 'string') {
+      if (typeof data[action] === 'undefined') {
+        throw new TypeError(`No method named "${action}"`);
+      }
+
+      data[action]();
+    } else if (_config.interval && _config.ride) {
+      data.pause();
+      data.cycle();
+    }
+  }
+
+  static jQueryInterface(config) {
+    return this.each(function () {
+      Carousel.carouselInterface(this, config);
+    });
+  }
+
+  static dataApiClickHandler(event) {
+    const target = getElementFromSelector(this);
+
+    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
+      return;
+    }
+
+    const config = { ...Manipulator.getDataAttributes(target),
+      ...Manipulator.getDataAttributes(this)
+    };
+    const slideIndex = this.getAttribute('data-bs-slide-to');
+
+    if (slideIndex) {
+      config.interval = false;
+    }
+
+    Carousel.carouselInterface(target, config);
+
+    if (slideIndex) {
+      Carousel.getInstance(target).to(slideIndex);
+    }
+
+    event.preventDefault();
+  }
+
+}
+/**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
+EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
+  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
+
+  for (let i = 0, len = carousels.length; i < len; i++) {
+    Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]));
+  }
+});
+/**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ * add .Carousel to jQuery only if jQuery is present
+ */
+
+defineJQueryPlugin(Carousel);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): collapse.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+
+const NAME$a = 'collapse';
+const DATA_KEY$9 = 'bs.collapse';
+const EVENT_KEY$9 = `.${DATA_KEY$9}`;
+const DATA_API_KEY$5 = '.data-api';
+const Default$9 = {
+  toggle: true,
+  parent: null
+};
+const DefaultType$9 = {
+  toggle: 'boolean',
+  parent: '(null|element)'
+};
+const EVENT_SHOW$5 = `show${EVENT_KEY$9}`;
+const EVENT_SHOWN$5 = `shown${EVENT_KEY$9}`;
+const EVENT_HIDE$5 = `hide${EVENT_KEY$9}`;
+const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$9}`;
+const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$9}${DATA_API_KEY$5}`;
+const CLASS_NAME_SHOW$7 = 'show';
+const CLASS_NAME_COLLAPSE = 'collapse';
+const CLASS_NAME_COLLAPSING = 'collapsing';
+const CLASS_NAME_COLLAPSED = 'collapsed';
+const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
+const WIDTH = 'width';
+const HEIGHT = 'height';
+const SELECTOR_ACTIVES = '.show, .collapsing';
+const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
+/**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+class Collapse extends BaseComponent {
+  constructor(element, config) {
+    super(element);
+    this._isTransitioning = false;
+    this._config = this._getConfig(config);
+    this._triggerArray = [];
+    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
+
+    for (let i = 0, len = toggleList.length; i < len; i++) {
+      const elem = toggleList[i];
+      const selector = getSelectorFromElement(elem);
+      const filterElement = SelectorEngine.find(selector).filter(foundElem => foundElem === this._element);
+
+      if (selector !== null && filterElement.length) {
+        this._selector = selector;
+
+        this._triggerArray.push(elem);
+      }
+    }
+
+    this._initializeChildren();
+
+    if (!this._config.parent) {
+      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
+    }
+
+    if (this._config.toggle) {
+      this.toggle();
+    }
+  } // Getters
+
+
+  static get Default() {
+    return Default$9;
+  }
+
+  static get NAME() {
+    return NAME$a;
+  } // Public
+
+
+  toggle() {
+    if (this._isShown()) {
+      this.hide();
+    } else {
+      this.show();
+    }
+  }
+
+  show() {
+    if (this._isTransitioning || this._isShown()) {
+      return;
+    }
+
+    let actives = [];
+    let activesData;
+
+    if (this._config.parent) {
+      const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent);
+      actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth
+    }
+
+    const container = SelectorEngine.findOne(this._selector);
+
+    if (actives.length) {
+      const tempActiveData = actives.find(elem => container !== elem);
+      activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null;
+
+      if (activesData && activesData._isTransitioning) {
+        return;
+      }
+    }
+
+    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$5);
+
+    if (startEvent.defaultPrevented) {
+      return;
+    }
+
+    actives.forEach(elemActive => {
+      if (container !== elemActive) {
+        Collapse.getOrCreateInstance(elemActive, {
+          toggle: false
+        }).hide();
+      }
+
+      if (!activesData) {
+        Data.set(elemActive, DATA_KEY$9, null);
+      }
+    });
+
+    const dimension = this._getDimension();
+
+    this._element.classList.remove(CLASS_NAME_COLLAPSE);
+
+    this._element.classList.add(CLASS_NAME_COLLAPSING);
+
+    this._element.style[dimension] = 0;
+
+    this._addAriaAndCollapsedClass(this._triggerArray, true);
+
+    this._isTransitioning = true;
+
+    const complete = () => {
+      this._isTransitioning = false;
+
+      this._element.classList.remove(CLASS_NAME_COLLAPSING);
+
+      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
+
+      this._element.style[dimension] = '';
+      EventHandler.trigger(this._element, EVENT_SHOWN$5);
+    };
+
+    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
+    const scrollSize = `scroll${capitalizedDimension}`;
+
+    this._queueCallback(complete, this._element, true);
+
+    this._element.style[dimension] = `${this._element[scrollSize]}px`;
+  }
+
+  hide() {
+    if (this._isTransitioning || !this._isShown()) {
+      return;
+    }
+
+    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$5);
+
+    if (startEvent.defaultPrevented) {
+      return;
+    }
+
+    const dimension = this._getDimension();
+
+    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
+    reflow(this._element);
+
+    this._element.classList.add(CLASS_NAME_COLLAPSING);
+
+    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
+
+    const triggerArrayLength = this._triggerArray.length;
+
+    for (let i = 0; i < triggerArrayLength; i++) {
+      const trigger = this._triggerArray[i];
+      const elem = getElementFromSelector(trigger);
+
+      if (elem && !this._isShown(elem)) {
+        this._addAriaAndCollapsedClass([trigger], false);
+      }
+    }
+
+    this._isTransitioning = true;
+
+    const complete = () => {
+      this._isTransitioning = false;
+
+      this._element.classList.remove(CLASS_NAME_COLLAPSING);
+
+      this._element.classList.add(CLASS_NAME_COLLAPSE);
+
+      EventHandler.trigger(this._element, EVENT_HIDDEN$5);
+    };
+
+    this._element.style[dimension] = '';
+
+    this._queueCallback(complete, this._element, true);
+  }
+
+  _isShown(element = this._element) {
+    return element.classList.contains(CLASS_NAME_SHOW$7);
+  } // Private
+
+
+  _getConfig(config) {
+    config = { ...Default$9,
+      ...Manipulator.getDataAttributes(this._element),
+      ...config
+    };
+    config.toggle = Boolean(config.toggle); // Coerce string values
+
+    config.parent = getElement(config.parent);
+    typeCheckConfig(NAME$a, config, DefaultType$9);
+    return config;
+  }
+
+  _getDimension() {
+    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
+  }
+
+  _initializeChildren() {
+    if (!this._config.parent) {
+      return;
+    }
+
+    const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent);
+    SelectorEngine.find(SELECTOR_DATA_TOGGLE$4, this._config.parent).filter(elem => !children.includes(elem)).forEach(element => {
+      const selected = getElementFromSelector(element);
+
+      if (selected) {
+        this._addAriaAndCollapsedClass([element], this._isShown(selected));
+      }
+    });
+  }
+
+  _addAriaAndCollapsedClass(triggerArray, isOpen) {
+    if (!triggerArray.length) {
+      return;
+    }
+
+    triggerArray.forEach(elem => {
+      if (isOpen) {
+        elem.classList.remove(CLASS_NAME_COLLAPSED);
+      } else {
+        elem.classList.add(CLASS_NAME_COLLAPSED);
+      }
+
+      elem.setAttribute('aria-expanded', isOpen);
+    });
+  } // Static
+
+
+  static jQueryInterface(config) {
+    return this.each(function () {
+      const _config = {};
+
+      if (typeof config === 'string' && /show|hide/.test(config)) {
+        _config.toggle = false;
+      }
+
+      const data = Collapse.getOrCreateInstance(this, _config);
+
+      if (typeof config === 'string') {
+        if (typeof data[config] === 'undefined') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config]();
+      }
+    });
+  }
+
+}
+/**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {
+  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
+  if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
+    event.preventDefault();
+  }
+
+  const selector = getSelectorFromElement(this);
+  const selectorElements = SelectorEngine.find(selector);
+  selectorElements.forEach(element => {
+    Collapse.getOrCreateInstance(element, {
+      toggle: false
+    }).toggle();
+  });
+});
+/**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ * add .Collapse to jQuery only if jQuery is present
+ */
+
+defineJQueryPlugin(Collapse);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): dropdown.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+
+const NAME$9 = 'dropdown';
+const DATA_KEY$8 = 'bs.dropdown';
+const EVENT_KEY$8 = `.${DATA_KEY$8}`;
+const DATA_API_KEY$4 = '.data-api';
+const ESCAPE_KEY$2 = 'Escape';
+const SPACE_KEY = 'Space';
+const TAB_KEY$1 = 'Tab';
+const ARROW_UP_KEY = 'ArrowUp';
+const ARROW_DOWN_KEY = 'ArrowDown';
+const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
+
+const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY$2}`);
+const EVENT_HIDE$4 = `hide${EVENT_KEY$8}`;
+const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$8}`;
+const EVENT_SHOW$4 = `show${EVENT_KEY$8}`;
+const EVENT_SHOWN$4 = `shown${EVENT_KEY$8}`;
+const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$8}${DATA_API_KEY$4}`;
+const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$8}${DATA_API_KEY$4}`;
+const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$8}${DATA_API_KEY$4}`;
+const CLASS_NAME_SHOW$6 = 'show';
+const CLASS_NAME_DROPUP = 'dropup';
+const CLASS_NAME_DROPEND = 'dropend';
+const CLASS_NAME_DROPSTART = 'dropstart';
+const CLASS_NAME_NAVBAR = 'navbar';
+const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]';
+const SELECTOR_MENU = '.dropdown-menu';
+const SELECTOR_NAVBAR_NAV = '.navbar-nav';
+const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
+const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
+const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
+const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
+const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
+const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
+const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
+const Default$8 = {
+  offset: [0, 2],
+  boundary: 'clippingParents',
+  reference: 'toggle',
+  display: 'dynamic',
+  popperConfig: null,
+  autoClose: true
+};
+const DefaultType$8 = {
+  offset: '(array|string|function)',
+  boundary: '(string|element)',
+  reference: '(string|element|object)',
+  display: 'string',
+  popperConfig: '(null|object|function)',
+  autoClose: '(boolean|string)'
+};
+/**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+class Dropdown extends BaseComponent {
+  constructor(element, config) {
+    super(element);
+    this._popper = null;
+    this._config = this._getConfig(config);
+    this._menu = this._getMenuElement();
+    this._inNavbar = this._detectNavbar();
+  } // Getters
+
+
+  static get Default() {
+    return Default$8;
+  }
+
+  static get DefaultType() {
+    return DefaultType$8;
+  }
+
+  static get NAME() {
+    return NAME$9;
+  } // Public
+
+
+  toggle() {
+    return this._isShown() ? this.hide() : this.show();
+  }
+
+  show() {
+    if (isDisabled(this._element) || this._isShown(this._menu)) {
+      return;
+    }
+
+    const relatedTarget = {
+      relatedTarget: this._element
+    };
+    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget);
+
+    if (showEvent.defaultPrevented) {
+      return;
+    }
+
+    const parent = Dropdown.getParentFromElement(this._element); // Totally disable Popper for Dropdowns in Navbar
+
+    if (this._inNavbar) {
+      Manipulator.setDataAttribute(this._menu, 'popper', 'none');
+    } else {
+      this._createPopper(parent);
+    } // If this is a touch-enabled device we add extra
+    // empty mouseover listeners to the body's immediate children;
+    // only needed because of broken event delegation on iOS
+    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
+
+
+    if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {
+      [].concat(...document.body.children).forEach(elem => EventHandler.on(elem, 'mouseover', noop));
+    }
+
+    this._element.focus();
+
+    this._element.setAttribute('aria-expanded', true);
+
+    this._menu.classList.add(CLASS_NAME_SHOW$6);
+
+    this._element.classList.add(CLASS_NAME_SHOW$6);
+
+    EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget);
+  }
+
+  hide() {
+    if (isDisabled(this._element) || !this._isShown(this._menu)) {
+      return;
+    }
+
+    const relatedTarget = {
+      relatedTarget: this._element
+    };
+
+    this._completeHide(relatedTarget);
+  }
+
+  dispose() {
+    if (this._popper) {
+      this._popper.destroy();
+    }
+
+    super.dispose();
+  }
+
+  update() {
+    this._inNavbar = this._detectNavbar();
+
+    if (this._popper) {
+      this._popper.update();
+    }
+  } // Private
+
+
+  _completeHide(relatedTarget) {
+    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget);
+
+    if (hideEvent.defaultPrevented) {
+      return;
+    } // If this is a touch-enabled device we remove the extra
+    // empty mouseover listeners we added for iOS support
+
+
+    if ('ontouchstart' in document.documentElement) {
+      [].concat(...document.body.children).forEach(elem => EventHandler.off(elem, 'mouseover', noop));
+    }
+
+    if (this._popper) {
+      this._popper.destroy();
+    }
+
+    this._menu.classList.remove(CLASS_NAME_SHOW$6);
+
+    this._element.classList.remove(CLASS_NAME_SHOW$6);
+
+    this._element.setAttribute('aria-expanded', 'false');
+
+    Manipulator.removeDataAttribute(this._menu, 'popper');
+    EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget);
+  }
+
+  _getConfig(config) {
+    config = { ...this.constructor.Default,
+      ...Manipulator.getDataAttributes(this._element),
+      ...config
+    };
+    typeCheckConfig(NAME$9, config, this.constructor.DefaultType);
+
+    if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
+      // Popper virtual elements require a getBoundingClientRect method
+      throw new TypeError(`${NAME$9.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
+    }
+
+    return config;
+  }
+
+  _createPopper(parent) {
+    if (typeof Popper === 'undefined') {
+      throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
+    }
+
+    let referenceElement = this._element;
+
+    if (this._config.reference === 'parent') {
+      referenceElement = parent;
+    } else if (isElement(this._config.reference)) {
+      referenceElement = getElement(this._config.reference);
+    } else if (typeof this._config.reference === 'object') {
+      referenceElement = this._config.reference;
+    }
+
+    const popperConfig = this._getPopperConfig();
+
+    const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false);
+    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);
+
+    if (isDisplayStatic) {
+      Manipulator.setDataAttribute(this._menu, 'popper', 'static');
+    }
+  }
+
+  _isShown(element = this._element) {
+    return element.classList.contains(CLASS_NAME_SHOW$6);
+  }
+
+  _getMenuElement() {
+    return SelectorEngine.next(this._element, SELECTOR_MENU)[0];
+  }
+
+  _getPlacement() {
+    const parentDropdown = this._element.parentNode;
+
+    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
+      return PLACEMENT_RIGHT;
+    }
+
+    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
+      return PLACEMENT_LEFT;
+    } // We need to trim the value because custom properties can also include spaces
+
+
+    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
+
+    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
+      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
+    }
+
+    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
+  }
+
+  _detectNavbar() {
+    return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null;
+  }
+
+  _getOffset() {
+    const {
+      offset
+    } = this._config;
+
+    if (typeof offset === 'string') {
+      return offset.split(',').map(val => Number.parseInt(val, 10));
+    }
+
+    if (typeof offset === 'function') {
+      return popperData => offset(popperData, this._element);
+    }
+
+    return offset;
+  }
+
+  _getPopperConfig() {
+    const defaultBsPopperConfig = {
+      placement: this._getPlacement(),
+      modifiers: [{
+        name: 'preventOverflow',
+        options: {
+          boundary: this._config.boundary
+        }
+      }, {
+        name: 'offset',
+        options: {
+          offset: this._getOffset()
+        }
+      }]
+    }; // Disable Popper if we have a static display
+
+    if (this._config.display === 'static') {
+      defaultBsPopperConfig.modifiers = [{
+        name: 'applyStyles',
+        enabled: false
+      }];
+    }
+
+    return { ...defaultBsPopperConfig,
+      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)
+    };
+  }
+
+  _selectMenuItem({
+    key,
+    target
+  }) {
+    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible);
+
+    if (!items.length) {
+      return;
+    } // if target isn't included in items (e.g. when expanding the dropdown)
+    // allow cycling to get the last item in case key equals ARROW_UP_KEY
+
+
+    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();
+  } // Static
+
+
+  static jQueryInterface(config) {
+    return this.each(function () {
+      const data = Dropdown.getOrCreateInstance(this, config);
+
+      if (typeof config !== 'string') {
+        return;
+      }
+
+      if (typeof data[config] === 'undefined') {
+        throw new TypeError(`No method named "${config}"`);
+      }
+
+      data[config]();
+    });
+  }
+
+  static clearMenus(event) {
+    if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1)) {
+      return;
+    }
+
+    const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3);
+
+    for (let i = 0, len = toggles.length; i < len; i++) {
+      const context = Dropdown.getInstance(toggles[i]);
+
+      if (!context || context._config.autoClose === false) {
+        continue;
+      }
+
+      if (!context._isShown()) {
+        continue;
+      }
+
+      const relatedTarget = {
+        relatedTarget: context._element
+      };
+
+      if (event) {
+        const composedPath = event.composedPath();
+        const isMenuTarget = composedPath.includes(context._menu);
+
+        if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
+          continue;
+        } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
+
+
+        if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
+          continue;
+        }
+
+        if (event.type === 'click') {
+          relatedTarget.clickEvent = event;
+        }
+      }
+
+      context._completeHide(relatedTarget);
+    }
+  }
+
+  static getParentFromElement(element) {
+    return getElementFromSelector(element) || element.parentNode;
+  }
+
+  static dataApiKeydownHandler(event) {
+    // If not input/textarea:
+    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
+    // If input/textarea:
+    //  - If space key => not a dropdown command
+    //  - If key is other than escape
+    //    - If key is not up or down => not a dropdown command
+    //    - If trigger inside the menu => not a dropdown command
+    if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY$2 && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {
+      return;
+    }
+
+    const isActive = this.classList.contains(CLASS_NAME_SHOW$6);
+
+    if (!isActive && event.key === ESCAPE_KEY$2) {
+      return;
+    }
+
+    event.preventDefault();
+    event.stopPropagation();
+
+    if (isDisabled(this)) {
+      return;
+    }
+
+    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0];
+    const instance = Dropdown.getOrCreateInstance(getToggleButton);
+
+    if (event.key === ESCAPE_KEY$2) {
+      instance.hide();
+      return;
+    }
+
+    if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {
+      if (!isActive) {
+        instance.show();
+      }
+
+      instance._selectMenuItem(event);
+
+      return;
+    }
+
+    if (!isActive || event.key === SPACE_KEY) {
+      Dropdown.clearMenus();
+    }
+  }
+
+}
+/**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
+EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
+EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
+EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
+EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
+  event.preventDefault();
+  Dropdown.getOrCreateInstance(this).toggle();
+});
+/**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ * add .Dropdown to jQuery only if jQuery is present
+ */
+
+defineJQueryPlugin(Dropdown);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): util/scrollBar.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
+const SELECTOR_STICKY_CONTENT = '.sticky-top';
+
+class ScrollBarHelper {
+  constructor() {
+    this._element = document.body;
+  }
+
+  getWidth() {
+    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
+    const documentWidth = document.documentElement.clientWidth;
+    return Math.abs(window.innerWidth - documentWidth);
+  }
+
+  hide() {
+    const width = this.getWidth();
+
+    this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width
+
+
+    this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
+
+
+    this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width);
+
+    this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width);
+  }
+
+  _disableOverFlow() {
+    this._saveInitialAttribute(this._element, 'overflow');
+
+    this._element.style.overflow = 'hidden';
+  }
+
+  _setElementAttributes(selector, styleProp, callback) {
+    const scrollbarWidth = this.getWidth();
+
+    const manipulationCallBack = element => {
+      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
+        return;
+      }
+
+      this._saveInitialAttribute(element, styleProp);
+
+      const calculatedValue = window.getComputedStyle(element)[styleProp];
+      element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;
+    };
+
+    this._applyManipulationCallback(selector, manipulationCallBack);
+  }
+
+  reset() {
+    this._resetElementAttributes(this._element, 'overflow');
+
+    this._resetElementAttributes(this._element, 'paddingRight');
+
+    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');
+
+    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');
+  }
+
+  _saveInitialAttribute(element, styleProp) {
+    const actualValue = element.style[styleProp];
+
+    if (actualValue) {
+      Manipulator.setDataAttribute(element, styleProp, actualValue);
+    }
+  }
+
+  _resetElementAttributes(selector, styleProp) {
+    const manipulationCallBack = element => {
+      const value = Manipulator.getDataAttribute(element, styleProp);
+
+      if (typeof value === 'undefined') {
+        element.style.removeProperty(styleProp);
+      } else {
+        Manipulator.removeDataAttribute(element, styleProp);
+        element.style[styleProp] = value;
+      }
+    };
+
+    this._applyManipulationCallback(selector, manipulationCallBack);
+  }
+
+  _applyManipulationCallback(selector, callBack) {
+    if (isElement(selector)) {
+      callBack(selector);
+    } else {
+      SelectorEngine.find(selector, this._element).forEach(callBack);
+    }
+  }
+
+  isOverflowing() {
+    return this.getWidth() > 0;
+  }
+
+}
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): util/backdrop.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+const Default$7 = {
+  className: 'modal-backdrop',
+  isVisible: true,
+  // if false, we use the backdrop helper without adding any element to the dom
+  isAnimated: false,
+  rootElement: 'body',
+  // give the choice to place backdrop under different elements
+  clickCallback: null
+};
+const DefaultType$7 = {
+  className: 'string',
+  isVisible: 'boolean',
+  isAnimated: 'boolean',
+  rootElement: '(element|string)',
+  clickCallback: '(function|null)'
+};
+const NAME$8 = 'backdrop';
+const CLASS_NAME_FADE$4 = 'fade';
+const CLASS_NAME_SHOW$5 = 'show';
+const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$8}`;
+
+class Backdrop {
+  constructor(config) {
+    this._config = this._getConfig(config);
+    this._isAppended = false;
+    this._element = null;
+  }
+
+  show(callback) {
+    if (!this._config.isVisible) {
+      execute(callback);
+      return;
+    }
+
+    this._append();
+
+    if (this._config.isAnimated) {
+      reflow(this._getElement());
+    }
+
+    this._getElement().classList.add(CLASS_NAME_SHOW$5);
+
+    this._emulateAnimation(() => {
+      execute(callback);
+    });
+  }
+
+  hide(callback) {
+    if (!this._config.isVisible) {
+      execute(callback);
+      return;
+    }
+
+    this._getElement().classList.remove(CLASS_NAME_SHOW$5);
+
+    this._emulateAnimation(() => {
+      this.dispose();
+      execute(callback);
+    });
+  } // Private
+
+
+  _getElement() {
+    if (!this._element) {
+      const backdrop = document.createElement('div');
+      backdrop.className = this._config.className;
+
+      if (this._config.isAnimated) {
+        backdrop.classList.add(CLASS_NAME_FADE$4);
+      }
+
+      this._element = backdrop;
+    }
+
+    return this._element;
+  }
+
+  _getConfig(config) {
+    config = { ...Default$7,
+      ...(typeof config === 'object' ? config : {})
+    }; // use getElement() with the default "body" to get a fresh Element on each instantiation
+
+    config.rootElement = getElement(config.rootElement);
+    typeCheckConfig(NAME$8, config, DefaultType$7);
+    return config;
+  }
+
+  _append() {
+    if (this._isAppended) {
+      return;
+    }
+
+    this._config.rootElement.append(this._getElement());
+
+    EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {
+      execute(this._config.clickCallback);
+    });
+    this._isAppended = true;
+  }
+
+  dispose() {
+    if (!this._isAppended) {
+      return;
+    }
+
+    EventHandler.off(this._element, EVENT_MOUSEDOWN);
+
+    this._element.remove();
+
+    this._isAppended = false;
+  }
+
+  _emulateAnimation(callback) {
+    executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
+  }
+
+}
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): util/focustrap.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+const Default$6 = {
+  trapElement: null,
+  // The element to trap focus inside of
+  autofocus: true
+};
+const DefaultType$6 = {
+  trapElement: 'element',
+  autofocus: 'boolean'
+};
+const NAME$7 = 'focustrap';
+const DATA_KEY$7 = 'bs.focustrap';
+const EVENT_KEY$7 = `.${DATA_KEY$7}`;
+const EVENT_FOCUSIN$1 = `focusin${EVENT_KEY$7}`;
+const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$7}`;
+const TAB_KEY = 'Tab';
+const TAB_NAV_FORWARD = 'forward';
+const TAB_NAV_BACKWARD = 'backward';
+
+class FocusTrap {
+  constructor(config) {
+    this._config = this._getConfig(config);
+    this._isActive = false;
+    this._lastTabNavDirection = null;
+  }
+
+  activate() {
+    const {
+      trapElement,
+      autofocus
+    } = this._config;
+
+    if (this._isActive) {
+      return;
+    }
+
+    if (autofocus) {
+      trapElement.focus();
+    }
+
+    EventHandler.off(document, EVENT_KEY$7); // guard against infinite focus loop
+
+    EventHandler.on(document, EVENT_FOCUSIN$1, event => this._handleFocusin(event));
+    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
+    this._isActive = true;
+  }
+
+  deactivate() {
+    if (!this._isActive) {
+      return;
+    }
+
+    this._isActive = false;
+    EventHandler.off(document, EVENT_KEY$7);
+  } // Private
+
+
+  _handleFocusin(event) {
+    const {
+      target
+    } = event;
+    const {
+      trapElement
+    } = this._config;
+
+    if (target === document || target === trapElement || trapElement.contains(target)) {
+      return;
+    }
+
+    const elements = SelectorEngine.focusableChildren(trapElement);
+
+    if (elements.length === 0) {
+      trapElement.focus();
+    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
+      elements[elements.length - 1].focus();
+    } else {
+      elements[0].focus();
+    }
+  }
+
+  _handleKeydown(event) {
+    if (event.key !== TAB_KEY) {
+      return;
+    }
+
+    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
+  }
+
+  _getConfig(config) {
+    config = { ...Default$6,
+      ...(typeof config === 'object' ? config : {})
+    };
+    typeCheckConfig(NAME$7, config, DefaultType$6);
+    return config;
+  }
+
+}
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): modal.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+
+const NAME$6 = 'modal';
+const DATA_KEY$6 = 'bs.modal';
+const EVENT_KEY$6 = `.${DATA_KEY$6}`;
+const DATA_API_KEY$3 = '.data-api';
+const ESCAPE_KEY$1 = 'Escape';
+const Default$5 = {
+  backdrop: true,
+  keyboard: true,
+  focus: true
+};
+const DefaultType$5 = {
+  backdrop: '(boolean|string)',
+  keyboard: 'boolean',
+  focus: 'boolean'
+};
+const EVENT_HIDE$3 = `hide${EVENT_KEY$6}`;
+const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$6}`;
+const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$6}`;
+const EVENT_SHOW$3 = `show${EVENT_KEY$6}`;
+const EVENT_SHOWN$3 = `shown${EVENT_KEY$6}`;
+const EVENT_RESIZE = `resize${EVENT_KEY$6}`;
+const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$6}`;
+const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$6}`;
+const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY$6}`;
+const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$6}`;
+const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
+const CLASS_NAME_OPEN = 'modal-open';
+const CLASS_NAME_FADE$3 = 'fade';
+const CLASS_NAME_SHOW$4 = 'show';
+const CLASS_NAME_STATIC = 'modal-static';
+const SELECTOR_DIALOG = '.modal-dialog';
+const SELECTOR_MODAL_BODY = '.modal-body';
+const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
+/**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+class Modal extends BaseComponent {
+  constructor(element, config) {
+    super(element);
+    this._config = this._getConfig(config);
+    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
+    this._backdrop = this._initializeBackDrop();
+    this._focustrap = this._initializeFocusTrap();
+    this._isShown = false;
+    this._ignoreBackdropClick = false;
+    this._isTransitioning = false;
+    this._scrollBar = new ScrollBarHelper();
+  } // Getters
+
+
+  static get Default() {
+    return Default$5;
+  }
+
+  static get NAME() {
+    return NAME$6;
+  } // Public
+
+
+  toggle(relatedTarget) {
+    return this._isShown ? this.hide() : this.show(relatedTarget);
+  }
+
+  show(relatedTarget) {
+    if (this._isShown || this._isTransitioning) {
+      return;
+    }
+
+    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
+      relatedTarget
+    });
+
+    if (showEvent.defaultPrevented) {
+      return;
+    }
+
+    this._isShown = true;
+
+    if (this._isAnimated()) {
+      this._isTransitioning = true;
+    }
+
+    this._scrollBar.hide();
+
+    document.body.classList.add(CLASS_NAME_OPEN);
+
+    this._adjustDialog();
+
+    this._setEscapeEvent();
+
+    this._setResizeEvent();
+
+    EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {
+      EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {
+        if (event.target === this._element) {
+          this._ignoreBackdropClick = true;
+        }
+      });
+    });
+
+    this._showBackdrop(() => this._showElement(relatedTarget));
+  }
+
+  hide() {
+    if (!this._isShown || this._isTransitioning) {
+      return;
+    }
+
+    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
+
+    if (hideEvent.defaultPrevented) {
+      return;
+    }
+
+    this._isShown = false;
+
+    const isAnimated = this._isAnimated();
+
+    if (isAnimated) {
+      this._isTransitioning = true;
+    }
+
+    this._setEscapeEvent();
+
+    this._setResizeEvent();
+
+    this._focustrap.deactivate();
+
+    this._element.classList.remove(CLASS_NAME_SHOW$4);
+
+    EventHandler.off(this._element, EVENT_CLICK_DISMISS);
+    EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
+
+    this._queueCallback(() => this._hideModal(), this._element, isAnimated);
+  }
+
+  dispose() {
+    [window, this._dialog].forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY$6));
+
+    this._backdrop.dispose();
+
+    this._focustrap.deactivate();
+
+    super.dispose();
+  }
+
+  handleUpdate() {
+    this._adjustDialog();
+  } // Private
+
+
+  _initializeBackDrop() {
+    return new Backdrop({
+      isVisible: Boolean(this._config.backdrop),
+      // 'static' option will be translated to true, and booleans will keep their value
+      isAnimated: this._isAnimated()
+    });
+  }
+
+  _initializeFocusTrap() {
+    return new FocusTrap({
+      trapElement: this._element
+    });
+  }
+
+  _getConfig(config) {
+    config = { ...Default$5,
+      ...Manipulator.getDataAttributes(this._element),
+      ...(typeof config === 'object' ? config : {})
+    };
+    typeCheckConfig(NAME$6, config, DefaultType$5);
+    return config;
+  }
+
+  _showElement(relatedTarget) {
+    const isAnimated = this._isAnimated();
+
+    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
+
+    if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
+      // Don't move modal's DOM position
+      document.body.append(this._element);
+    }
+
+    this._element.style.display = 'block';
+
+    this._element.removeAttribute('aria-hidden');
+
+    this._element.setAttribute('aria-modal', true);
+
+    this._element.setAttribute('role', 'dialog');
+
+    this._element.scrollTop = 0;
+
+    if (modalBody) {
+      modalBody.scrollTop = 0;
+    }
+
+    if (isAnimated) {
+      reflow(this._element);
+    }
+
+    this._element.classList.add(CLASS_NAME_SHOW$4);
+
+    const transitionComplete = () => {
+      if (this._config.focus) {
+        this._focustrap.activate();
+      }
+
+      this._isTransitioning = false;
+      EventHandler.trigger(this._element, EVENT_SHOWN$3, {
+        relatedTarget
+      });
+    };
+
+    this._queueCallback(transitionComplete, this._dialog, isAnimated);
+  }
+
+  _setEscapeEvent() {
+    if (this._isShown) {
+      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {
+        if (this._config.keyboard && event.key === ESCAPE_KEY$1) {
+          event.preventDefault();
+          this.hide();
+        } else if (!this._config.keyboard && event.key === ESCAPE_KEY$1) {
+          this._triggerBackdropTransition();
+        }
+      });
+    } else {
+      EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS$1);
+    }
+  }
+
+  _setResizeEvent() {
+    if (this._isShown) {
+      EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog());
+    } else {
+      EventHandler.off(window, EVENT_RESIZE);
+    }
+  }
+
+  _hideModal() {
+    this._element.style.display = 'none';
+
+    this._element.setAttribute('aria-hidden', true);
+
+    this._element.removeAttribute('aria-modal');
+
+    this._element.removeAttribute('role');
+
+    this._isTransitioning = false;
+
+    this._backdrop.hide(() => {
+      document.body.classList.remove(CLASS_NAME_OPEN);
+
+      this._resetAdjustments();
+
+      this._scrollBar.reset();
+
+      EventHandler.trigger(this._element, EVENT_HIDDEN$3);
+    });
+  }
+
+  _showBackdrop(callback) {
+    EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {
+      if (this._ignoreBackdropClick) {
+        this._ignoreBackdropClick = false;
+        return;
+      }
+
+      if (event.target !== event.currentTarget) {
+        return;
+      }
+
+      if (this._config.backdrop === true) {
+        this.hide();
+      } else if (this._config.backdrop === 'static') {
+        this._triggerBackdropTransition();
+      }
+    });
+
+    this._backdrop.show(callback);
+  }
+
+  _isAnimated() {
+    return this._element.classList.contains(CLASS_NAME_FADE$3);
+  }
+
+  _triggerBackdropTransition() {
+    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
+
+    if (hideEvent.defaultPrevented) {
+      return;
+    }
+
+    const {
+      classList,
+      scrollHeight,
+      style
+    } = this._element;
+    const isModalOverflowing = scrollHeight > document.documentElement.clientHeight; // return if the following background transition hasn't yet completed
+
+    if (!isModalOverflowing && style.overflowY === 'hidden' || classList.contains(CLASS_NAME_STATIC)) {
+      return;
+    }
+
+    if (!isModalOverflowing) {
+      style.overflowY = 'hidden';
+    }
+
+    classList.add(CLASS_NAME_STATIC);
+
+    this._queueCallback(() => {
+      classList.remove(CLASS_NAME_STATIC);
+
+      if (!isModalOverflowing) {
+        this._queueCallback(() => {
+          style.overflowY = '';
+        }, this._dialog);
+      }
+    }, this._dialog);
+
+    this._element.focus();
+  } // ----------------------------------------------------------------------
+  // the following methods are used to handle overflowing modals
+  // ----------------------------------------------------------------------
+
+
+  _adjustDialog() {
+    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
+
+    const scrollbarWidth = this._scrollBar.getWidth();
+
+    const isBodyOverflowing = scrollbarWidth > 0;
+
+    if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) {
+      this._element.style.paddingLeft = `${scrollbarWidth}px`;
+    }
+
+    if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) {
+      this._element.style.paddingRight = `${scrollbarWidth}px`;
+    }
+  }
+
+  _resetAdjustments() {
+    this._element.style.paddingLeft = '';
+    this._element.style.paddingRight = '';
+  } // Static
+
+
+  static jQueryInterface(config, relatedTarget) {
+    return this.each(function () {
+      const data = Modal.getOrCreateInstance(this, config);
+
+      if (typeof config !== 'string') {
+        return;
+      }
+
+      if (typeof data[config] === 'undefined') {
+        throw new TypeError(`No method named "${config}"`);
+      }
+
+      data[config](relatedTarget);
+    });
+  }
+
+}
+/**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
+  const target = getElementFromSelector(this);
+
+  if (['A', 'AREA'].includes(this.tagName)) {
+    event.preventDefault();
+  }
+
+  EventHandler.one(target, EVENT_SHOW$3, showEvent => {
+    if (showEvent.defaultPrevented) {
+      // only register focus restorer if modal will actually get shown
+      return;
+    }
+
+    EventHandler.one(target, EVENT_HIDDEN$3, () => {
+      if (isVisible(this)) {
+        this.focus();
+      }
+    });
+  });
+  const data = Modal.getOrCreateInstance(target);
+  data.toggle(this);
+});
+enableDismissTrigger(Modal);
+/**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ * add .Modal to jQuery only if jQuery is present
+ */
+
+defineJQueryPlugin(Modal);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): offcanvas.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+
+const NAME$5 = 'offcanvas';
+const DATA_KEY$5 = 'bs.offcanvas';
+const EVENT_KEY$5 = `.${DATA_KEY$5}`;
+const DATA_API_KEY$2 = '.data-api';
+const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$5}${DATA_API_KEY$2}`;
+const ESCAPE_KEY = 'Escape';
+const Default$4 = {
+  backdrop: true,
+  keyboard: true,
+  scroll: false
+};
+const DefaultType$4 = {
+  backdrop: 'boolean',
+  keyboard: 'boolean',
+  scroll: 'boolean'
+};
+const CLASS_NAME_SHOW$3 = 'show';
+const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
+const OPEN_SELECTOR = '.offcanvas.show';
+const EVENT_SHOW$2 = `show${EVENT_KEY$5}`;
+const EVENT_SHOWN$2 = `shown${EVENT_KEY$5}`;
+const EVENT_HIDE$2 = `hide${EVENT_KEY$5}`;
+const EVENT_HIDDEN$2 = `hidden${EVENT_KEY$5}`;
+const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$5}${DATA_API_KEY$2}`;
+const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$5}`;
+const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
+/**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+class Offcanvas extends BaseComponent {
+  constructor(element, config) {
+    super(element);
+    this._config = this._getConfig(config);
+    this._isShown = false;
+    this._backdrop = this._initializeBackDrop();
+    this._focustrap = this._initializeFocusTrap();
+
+    this._addEventListeners();
+  } // Getters
+
+
+  static get NAME() {
+    return NAME$5;
+  }
+
+  static get Default() {
+    return Default$4;
+  } // Public
+
+
+  toggle(relatedTarget) {
+    return this._isShown ? this.hide() : this.show(relatedTarget);
+  }
+
+  show(relatedTarget) {
+    if (this._isShown) {
+      return;
+    }
+
+    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {
+      relatedTarget
+    });
+
+    if (showEvent.defaultPrevented) {
+      return;
+    }
+
+    this._isShown = true;
+    this._element.style.visibility = 'visible';
+
+    this._backdrop.show();
+
+    if (!this._config.scroll) {
+      new ScrollBarHelper().hide();
+    }
+
+    this._element.removeAttribute('aria-hidden');
+
+    this._element.setAttribute('aria-modal', true);
+
+    this._element.setAttribute('role', 'dialog');
+
+    this._element.classList.add(CLASS_NAME_SHOW$3);
+
+    const completeCallBack = () => {
+      if (!this._config.scroll) {
+        this._focustrap.activate();
+      }
+
+      EventHandler.trigger(this._element, EVENT_SHOWN$2, {
+        relatedTarget
+      });
+    };
+
+    this._queueCallback(completeCallBack, this._element, true);
+  }
+
+  hide() {
+    if (!this._isShown) {
+      return;
+    }
+
+    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);
+
+    if (hideEvent.defaultPrevented) {
+      return;
+    }
+
+    this._focustrap.deactivate();
+
+    this._element.blur();
+
+    this._isShown = false;
+
+    this._element.classList.remove(CLASS_NAME_SHOW$3);
+
+    this._backdrop.hide();
+
+    const completeCallback = () => {
+      this._element.setAttribute('aria-hidden', true);
+
+      this._element.removeAttribute('aria-modal');
+
+      this._element.removeAttribute('role');
+
+      this._element.style.visibility = 'hidden';
+
+      if (!this._config.scroll) {
+        new ScrollBarHelper().reset();
+      }
+
+      EventHandler.trigger(this._element, EVENT_HIDDEN$2);
+    };
+
+    this._queueCallback(completeCallback, this._element, true);
+  }
+
+  dispose() {
+    this._backdrop.dispose();
+
+    this._focustrap.deactivate();
+
+    super.dispose();
+  } // Private
+
+
+  _getConfig(config) {
+    config = { ...Default$4,
+      ...Manipulator.getDataAttributes(this._element),
+      ...(typeof config === 'object' ? config : {})
+    };
+    typeCheckConfig(NAME$5, config, DefaultType$4);
+    return config;
+  }
+
+  _initializeBackDrop() {
+    return new Backdrop({
+      className: CLASS_NAME_BACKDROP,
+      isVisible: this._config.backdrop,
+      isAnimated: true,
+      rootElement: this._element.parentNode,
+      clickCallback: () => this.hide()
+    });
+  }
+
+  _initializeFocusTrap() {
+    return new FocusTrap({
+      trapElement: this._element
+    });
+  }
+
+  _addEventListeners() {
+    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
+      if (this._config.keyboard && event.key === ESCAPE_KEY) {
+        this.hide();
+      }
+    });
+  } // Static
+
+
+  static jQueryInterface(config) {
+    return this.each(function () {
+      const data = Offcanvas.getOrCreateInstance(this, config);
+
+      if (typeof config !== 'string') {
+        return;
+      }
+
+      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
+        throw new TypeError(`No method named "${config}"`);
+      }
+
+      data[config](this);
+    });
+  }
+
+}
+/**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
+  const target = getElementFromSelector(this);
+
+  if (['A', 'AREA'].includes(this.tagName)) {
+    event.preventDefault();
+  }
+
+  if (isDisabled(this)) {
+    return;
+  }
+
+  EventHandler.one(target, EVENT_HIDDEN$2, () => {
+    // focus on trigger when it is closed
+    if (isVisible(this)) {
+      this.focus();
+    }
+  }); // avoid conflict when clicking a toggler of an offcanvas, while another is open
+
+  const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
+
+  if (allReadyOpen && allReadyOpen !== target) {
+    Offcanvas.getInstance(allReadyOpen).hide();
+  }
+
+  const data = Offcanvas.getOrCreateInstance(target);
+  data.toggle(this);
+});
+EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show()));
+enableDismissTrigger(Offcanvas);
+/**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ */
+
+defineJQueryPlugin(Offcanvas);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): util/sanitizer.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+const uriAttrs = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
+const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
+/**
+ * A pattern that recognizes a commonly useful subset of URLs that are safe.
+ *
+ * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
+ */
+
+const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i;
+/**
+ * A pattern that matches safe data URLs. Only matches image, video and audio types.
+ *
+ * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
+ */
+
+const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
+
+const allowedAttribute = (attr, allowedAttributeList) => {
+  const attrName = attr.nodeName.toLowerCase();
+
+  if (allowedAttributeList.includes(attrName)) {
+    if (uriAttrs.has(attrName)) {
+      return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));
+    }
+
+    return true;
+  }
+
+  const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp); // Check if a regular expression validates the attribute.
+
+  for (let i = 0, len = regExp.length; i < len; i++) {
+    if (regExp[i].test(attrName)) {
+      return true;
+    }
+  }
+
+  return false;
+};
+
+const DefaultAllowlist = {
+  // Global attributes allowed on any supplied element below.
+  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
+  a: ['target', 'href', 'title', 'rel'],
+  area: [],
+  b: [],
+  br: [],
+  col: [],
+  code: [],
+  div: [],
+  em: [],
+  hr: [],
+  h1: [],
+  h2: [],
+  h3: [],
+  h4: [],
+  h5: [],
+  h6: [],
+  i: [],
+  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
+  li: [],
+  ol: [],
+  p: [],
+  pre: [],
+  s: [],
+  small: [],
+  span: [],
+  sub: [],
+  sup: [],
+  strong: [],
+  u: [],
+  ul: []
+};
+function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
+  if (!unsafeHtml.length) {
+    return unsafeHtml;
+  }
+
+  if (sanitizeFn && typeof sanitizeFn === 'function') {
+    return sanitizeFn(unsafeHtml);
+  }
+
+  const domParser = new window.DOMParser();
+  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
+  const allowlistKeys = Object.keys(allowList);
+  const elements = [].concat(...createdDocument.body.querySelectorAll('*'));
+
+  for (let i = 0, len = elements.length; i < len; i++) {
+    const el = elements[i];
+    const elName = el.nodeName.toLowerCase();
+
+    if (!allowlistKeys.includes(elName)) {
+      el.remove();
+      continue;
+    }
+
+    const attributeList = [].concat(...el.attributes);
+    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []);
+    attributeList.forEach(attr => {
+      if (!allowedAttribute(attr, allowedAttributes)) {
+        el.removeAttribute(attr.nodeName);
+      }
+    });
+  }
+
+  return createdDocument.body.innerHTML;
+}
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): tooltip.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+
+const NAME$4 = 'tooltip';
+const DATA_KEY$4 = 'bs.tooltip';
+const EVENT_KEY$4 = `.${DATA_KEY$4}`;
+const CLASS_PREFIX$1 = 'bs-tooltip';
+const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
+const DefaultType$3 = {
+  animation: 'boolean',
+  template: 'string',
+  title: '(string|element|function)',
+  trigger: 'string',
+  delay: '(number|object)',
+  html: 'boolean',
+  selector: '(string|boolean)',
+  placement: '(string|function)',
+  offset: '(array|string|function)',
+  container: '(string|element|boolean)',
+  fallbackPlacements: 'array',
+  boundary: '(string|element)',
+  customClass: '(string|function)',
+  sanitize: 'boolean',
+  sanitizeFn: '(null|function)',
+  allowList: 'object',
+  popperConfig: '(null|object|function)'
+};
+const AttachmentMap = {
+  AUTO: 'auto',
+  TOP: 'top',
+  RIGHT: isRTL() ? 'left' : 'right',
+  BOTTOM: 'bottom',
+  LEFT: isRTL() ? 'right' : 'left'
+};
+const Default$3 = {
+  animation: true,
+  template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
+  trigger: 'hover focus',
+  title: '',
+  delay: 0,
+  html: false,
+  selector: false,
+  placement: 'top',
+  offset: [0, 0],
+  container: false,
+  fallbackPlacements: ['top', 'right', 'bottom', 'left'],
+  boundary: 'clippingParents',
+  customClass: '',
+  sanitize: true,
+  sanitizeFn: null,
+  allowList: DefaultAllowlist,
+  popperConfig: null
+};
+const Event$2 = {
+  HIDE: `hide${EVENT_KEY$4}`,
+  HIDDEN: `hidden${EVENT_KEY$4}`,
+  SHOW: `show${EVENT_KEY$4}`,
+  SHOWN: `shown${EVENT_KEY$4}`,
+  INSERTED: `inserted${EVENT_KEY$4}`,
+  CLICK: `click${EVENT_KEY$4}`,
+  FOCUSIN: `focusin${EVENT_KEY$4}`,
+  FOCUSOUT: `focusout${EVENT_KEY$4}`,
+  MOUSEENTER: `mouseenter${EVENT_KEY$4}`,
+  MOUSELEAVE: `mouseleave${EVENT_KEY$4}`
+};
+const CLASS_NAME_FADE$2 = 'fade';
+const CLASS_NAME_MODAL = 'modal';
+const CLASS_NAME_SHOW$2 = 'show';
+const HOVER_STATE_SHOW = 'show';
+const HOVER_STATE_OUT = 'out';
+const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
+const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
+const EVENT_MODAL_HIDE = 'hide.bs.modal';
+const TRIGGER_HOVER = 'hover';
+const TRIGGER_FOCUS = 'focus';
+const TRIGGER_CLICK = 'click';
+const TRIGGER_MANUAL = 'manual';
+/**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+class Tooltip extends BaseComponent {
+  constructor(element, config) {
+    if (typeof Popper === 'undefined') {
+      throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
+    }
+
+    super(element); // private
+
+    this._isEnabled = true;
+    this._timeout = 0;
+    this._hoverState = '';
+    this._activeTrigger = {};
+    this._popper = null; // Protected
+
+    this._config = this._getConfig(config);
+    this.tip = null;
+
+    this._setListeners();
+  } // Getters
+
+
+  static get Default() {
+    return Default$3;
+  }
+
+  static get NAME() {
+    return NAME$4;
+  }
+
+  static get Event() {
+    return Event$2;
+  }
+
+  static get DefaultType() {
+    return DefaultType$3;
+  } // Public
+
+
+  enable() {
+    this._isEnabled = true;
+  }
+
+  disable() {
+    this._isEnabled = false;
+  }
+
+  toggleEnabled() {
+    this._isEnabled = !this._isEnabled;
+  }
+
+  toggle(event) {
+    if (!this._isEnabled) {
+      return;
+    }
+
+    if (event) {
+      const context = this._initializeOnDelegatedTarget(event);
+
+      context._activeTrigger.click = !context._activeTrigger.click;
+
+      if (context._isWithActiveTrigger()) {
+        context._enter(null, context);
+      } else {
+        context._leave(null, context);
+      }
+    } else {
+      if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$2)) {
+        this._leave(null, this);
+
+        return;
+      }
+
+      this._enter(null, this);
+    }
+  }
+
+  dispose() {
+    clearTimeout(this._timeout);
+    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
+
+    if (this.tip) {
+      this.tip.remove();
+    }
+
+    if (this._popper) {
+      this._popper.destroy();
+    }
+
+    super.dispose();
+  }
+
+  show() {
+    if (this._element.style.display === 'none') {
+      throw new Error('Please use show on visible elements');
+    }
+
+    if (!(this.isWithContent() && this._isEnabled)) {
+      return;
+    }
+
+    const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW);
+    const shadowRoot = findShadowRoot(this._element);
+    const isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element);
+
+    if (showEvent.defaultPrevented || !isInTheDom) {
+      return;
+    }
+
+    const tip = this.getTipElement();
+    const tipId = getUID(this.constructor.NAME);
+    tip.setAttribute('id', tipId);
+
+    this._element.setAttribute('aria-describedby', tipId);
+
+    if (this._config.animation) {
+      tip.classList.add(CLASS_NAME_FADE$2);
+    }
+
+    const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;
+
+    const attachment = this._getAttachment(placement);
+
+    this._addAttachmentClass(attachment);
+
+    const {
+      container
+    } = this._config;
+    Data.set(tip, this.constructor.DATA_KEY, this);
+
+    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
+      container.append(tip);
+      EventHandler.trigger(this._element, this.constructor.Event.INSERTED);
+    }
+
+    if (this._popper) {
+      this._popper.update();
+    } else {
+      this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));
+    }
+
+    tip.classList.add(CLASS_NAME_SHOW$2);
+
+    const customClass = this._resolvePossibleFunction(this._config.customClass);
+
+    if (customClass) {
+      tip.classList.add(...customClass.split(' '));
+    } // If this is a touch-enabled device we add extra
+    // empty mouseover listeners to the body's immediate children;
+    // only needed because of broken event delegation on iOS
+    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
+
+
+    if ('ontouchstart' in document.documentElement) {
+      [].concat(...document.body.children).forEach(element => {
+        EventHandler.on(element, 'mouseover', noop);
+      });
+    }
+
+    const complete = () => {
+      const prevHoverState = this._hoverState;
+      this._hoverState = null;
+      EventHandler.trigger(this._element, this.constructor.Event.SHOWN);
+
+      if (prevHoverState === HOVER_STATE_OUT) {
+        this._leave(null, this);
+      }
+    };
+
+    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);
+
+    this._queueCallback(complete, this.tip, isAnimated);
+  }
+
+  hide() {
+    if (!this._popper) {
+      return;
+    }
+
+    const tip = this.getTipElement();
+
+    const complete = () => {
+      if (this._isWithActiveTrigger()) {
+        return;
+      }
+
+      if (this._hoverState !== HOVER_STATE_SHOW) {
+        tip.remove();
+      }
+
+      this._cleanTipClass();
+
+      this._element.removeAttribute('aria-describedby');
+
+      EventHandler.trigger(this._element, this.constructor.Event.HIDDEN);
+
+      if (this._popper) {
+        this._popper.destroy();
+
+        this._popper = null;
+      }
+    };
+
+    const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE);
+
+    if (hideEvent.defaultPrevented) {
+      return;
+    }
+
+    tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra
+    // empty mouseover listeners we added for iOS support
+
+    if ('ontouchstart' in document.documentElement) {
+      [].concat(...document.body.children).forEach(element => EventHandler.off(element, 'mouseover', noop));
+    }
+
+    this._activeTrigger[TRIGGER_CLICK] = false;
+    this._activeTrigger[TRIGGER_FOCUS] = false;
+    this._activeTrigger[TRIGGER_HOVER] = false;
+    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);
+
+    this._queueCallback(complete, this.tip, isAnimated);
+
+    this._hoverState = '';
+  }
+
+  update() {
+    if (this._popper !== null) {
+      this._popper.update();
+    }
+  } // Protected
+
+
+  isWithContent() {
+    return Boolean(this.getTitle());
+  }
+
+  getTipElement() {
+    if (this.tip) {
+      return this.tip;
+    }
+
+    const element = document.createElement('div');
+    element.innerHTML = this._config.template;
+    const tip = element.children[0];
+    this.setContent(tip);
+    tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
+    this.tip = tip;
+    return this.tip;
+  }
+
+  setContent(tip) {
+    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER);
+  }
+
+  _sanitizeAndSetContent(template, content, selector) {
+    const templateElement = SelectorEngine.findOne(selector, template);
+
+    if (!content && templateElement) {
+      templateElement.remove();
+      return;
+    } // we use append for html objects to maintain js events
+
+
+    this.setElementContent(templateElement, content);
+  }
+
+  setElementContent(element, content) {
+    if (element === null) {
+      return;
+    }
+
+    if (isElement(content)) {
+      content = getElement(content); // content is a DOM node or a jQuery
+
+      if (this._config.html) {
+        if (content.parentNode !== element) {
+          element.innerHTML = '';
+          element.append(content);
+        }
+      } else {
+        element.textContent = content.textContent;
+      }
+
+      return;
+    }
+
+    if (this._config.html) {
+      if (this._config.sanitize) {
+        content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn);
+      }
+
+      element.innerHTML = content;
+    } else {
+      element.textContent = content;
+    }
+  }
+
+  getTitle() {
+    const title = this._element.getAttribute('data-bs-original-title') || this._config.title;
+
+    return this._resolvePossibleFunction(title);
+  }
+
+  updateAttachment(attachment) {
+    if (attachment === 'right') {
+      return 'end';
+    }
+
+    if (attachment === 'left') {
+      return 'start';
+    }
+
+    return attachment;
+  } // Private
+
+
+  _initializeOnDelegatedTarget(event, context) {
+    return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
+  }
+
+  _getOffset() {
+    const {
+      offset
+    } = this._config;
+
+    if (typeof offset === 'string') {
+      return offset.split(',').map(val => Number.parseInt(val, 10));
+    }
+
+    if (typeof offset === 'function') {
+      return popperData => offset(popperData, this._element);
+    }
+
+    return offset;
+  }
+
+  _resolvePossibleFunction(content) {
+    return typeof content === 'function' ? content.call(this._element) : content;
+  }
+
+  _getPopperConfig(attachment) {
+    const defaultBsPopperConfig = {
+      placement: attachment,
+      modifiers: [{
+        name: 'flip',
+        options: {
+          fallbackPlacements: this._config.fallbackPlacements
+        }
+      }, {
+        name: 'offset',
+        options: {
+          offset: this._getOffset()
+        }
+      }, {
+        name: 'preventOverflow',
+        options: {
+          boundary: this._config.boundary
+        }
+      }, {
+        name: 'arrow',
+        options: {
+          element: `.${this.constructor.NAME}-arrow`
+        }
+      }, {
+        name: 'onChange',
+        enabled: true,
+        phase: 'afterWrite',
+        fn: data => this._handlePopperPlacementChange(data)
+      }],
+      onFirstUpdate: data => {
+        if (data.options.placement !== data.placement) {
+          this._handlePopperPlacementChange(data);
+        }
+      }
+    };
+    return { ...defaultBsPopperConfig,
+      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)
+    };
+  }
+
+  _addAttachmentClass(attachment) {
+    this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`);
+  }
+
+  _getAttachment(placement) {
+    return AttachmentMap[placement.toUpperCase()];
+  }
+
+  _setListeners() {
+    const triggers = this._config.trigger.split(' ');
+
+    triggers.forEach(trigger => {
+      if (trigger === 'click') {
+        EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event));
+      } else if (trigger !== TRIGGER_MANUAL) {
+        const eventIn = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN;
+        const eventOut = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT;
+        EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event));
+        EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event));
+      }
+    });
+
+    this._hideModalHandler = () => {
+      if (this._element) {
+        this.hide();
+      }
+    };
+
+    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
+
+    if (this._config.selector) {
+      this._config = { ...this._config,
+        trigger: 'manual',
+        selector: ''
+      };
+    } else {
+      this._fixTitle();
+    }
+  }
+
+  _fixTitle() {
+    const title = this._element.getAttribute('title');
+
+    const originalTitleType = typeof this._element.getAttribute('data-bs-original-title');
+
+    if (title || originalTitleType !== 'string') {
+      this._element.setAttribute('data-bs-original-title', title || '');
+
+      if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {
+        this._element.setAttribute('aria-label', title);
+      }
+
+      this._element.setAttribute('title', '');
+    }
+  }
+
+  _enter(event, context) {
+    context = this._initializeOnDelegatedTarget(event, context);
+
+    if (event) {
+      context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
+    }
+
+    if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$2) || context._hoverState === HOVER_STATE_SHOW) {
+      context._hoverState = HOVER_STATE_SHOW;
+      return;
+    }
+
+    clearTimeout(context._timeout);
+    context._hoverState = HOVER_STATE_SHOW;
+
+    if (!context._config.delay || !context._config.delay.show) {
+      context.show();
+      return;
+    }
+
+    context._timeout = setTimeout(() => {
+      if (context._hoverState === HOVER_STATE_SHOW) {
+        context.show();
+      }
+    }, context._config.delay.show);
+  }
+
+  _leave(event, context) {
+    context = this._initializeOnDelegatedTarget(event, context);
+
+    if (event) {
+      context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
+    }
+
+    if (context._isWithActiveTrigger()) {
+      return;
+    }
+
+    clearTimeout(context._timeout);
+    context._hoverState = HOVER_STATE_OUT;
+
+    if (!context._config.delay || !context._config.delay.hide) {
+      context.hide();
+      return;
+    }
+
+    context._timeout = setTimeout(() => {
+      if (context._hoverState === HOVER_STATE_OUT) {
+        context.hide();
+      }
+    }, context._config.delay.hide);
+  }
+
+  _isWithActiveTrigger() {
+    for (const trigger in this._activeTrigger) {
+      if (this._activeTrigger[trigger]) {
+        return true;
+      }
+    }
+
+    return false;
+  }
+
+  _getConfig(config) {
+    const dataAttributes = Manipulator.getDataAttributes(this._element);
+    Object.keys(dataAttributes).forEach(dataAttr => {
+      if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {
+        delete dataAttributes[dataAttr];
+      }
+    });
+    config = { ...this.constructor.Default,
+      ...dataAttributes,
+      ...(typeof config === 'object' && config ? config : {})
+    };
+    config.container = config.container === false ? document.body : getElement(config.container);
+
+    if (typeof config.delay === 'number') {
+      config.delay = {
+        show: config.delay,
+        hide: config.delay
+      };
+    }
+
+    if (typeof config.title === 'number') {
+      config.title = config.title.toString();
+    }
+
+    if (typeof config.content === 'number') {
+      config.content = config.content.toString();
+    }
+
+    typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
+
+    if (config.sanitize) {
+      config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn);
+    }
+
+    return config;
+  }
+
+  _getDelegateConfig() {
+    const config = {};
+
+    for (const key in this._config) {
+      if (this.constructor.Default[key] !== this._config[key]) {
+        config[key] = this._config[key];
+      }
+    } // In the future can be replaced with:
+    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
+    // `Object.fromEntries(keysWithDifferentValues)`
+
+
+    return config;
+  }
+
+  _cleanTipClass() {
+    const tip = this.getTipElement();
+    const basicClassPrefixRegex = new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`, 'g');
+    const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex);
+
+    if (tabClass !== null && tabClass.length > 0) {
+      tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass));
+    }
+  }
+
+  _getBasicClassPrefix() {
+    return CLASS_PREFIX$1;
+  }
+
+  _handlePopperPlacementChange(popperData) {
+    const {
+      state
+    } = popperData;
+
+    if (!state) {
+      return;
+    }
+
+    this.tip = state.elements.popper;
+
+    this._cleanTipClass();
+
+    this._addAttachmentClass(this._getAttachment(state.placement));
+  } // Static
+
+
+  static jQueryInterface(config) {
+    return this.each(function () {
+      const data = Tooltip.getOrCreateInstance(this, config);
+
+      if (typeof config === 'string') {
+        if (typeof data[config] === 'undefined') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config]();
+      }
+    });
+  }
+
+}
+/**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ * add .Tooltip to jQuery only if jQuery is present
+ */
+
+
+defineJQueryPlugin(Tooltip);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): popover.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+
+const NAME$3 = 'popover';
+const DATA_KEY$3 = 'bs.popover';
+const EVENT_KEY$3 = `.${DATA_KEY$3}`;
+const CLASS_PREFIX = 'bs-popover';
+const Default$2 = { ...Tooltip.Default,
+  placement: 'right',
+  offset: [0, 8],
+  trigger: 'click',
+  content: '',
+  template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>'
+};
+const DefaultType$2 = { ...Tooltip.DefaultType,
+  content: '(string|element|function)'
+};
+const Event$1 = {
+  HIDE: `hide${EVENT_KEY$3}`,
+  HIDDEN: `hidden${EVENT_KEY$3}`,
+  SHOW: `show${EVENT_KEY$3}`,
+  SHOWN: `shown${EVENT_KEY$3}`,
+  INSERTED: `inserted${EVENT_KEY$3}`,
+  CLICK: `click${EVENT_KEY$3}`,
+  FOCUSIN: `focusin${EVENT_KEY$3}`,
+  FOCUSOUT: `focusout${EVENT_KEY$3}`,
+  MOUSEENTER: `mouseenter${EVENT_KEY$3}`,
+  MOUSELEAVE: `mouseleave${EVENT_KEY$3}`
+};
+const SELECTOR_TITLE = '.popover-header';
+const SELECTOR_CONTENT = '.popover-body';
+/**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+class Popover extends Tooltip {
+  // Getters
+  static get Default() {
+    return Default$2;
+  }
+
+  static get NAME() {
+    return NAME$3;
+  }
+
+  static get Event() {
+    return Event$1;
+  }
+
+  static get DefaultType() {
+    return DefaultType$2;
+  } // Overrides
+
+
+  isWithContent() {
+    return this.getTitle() || this._getContent();
+  }
+
+  setContent(tip) {
+    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE);
+
+    this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT);
+  } // Private
+
+
+  _getContent() {
+    return this._resolvePossibleFunction(this._config.content);
+  }
+
+  _getBasicClassPrefix() {
+    return CLASS_PREFIX;
+  } // Static
+
+
+  static jQueryInterface(config) {
+    return this.each(function () {
+      const data = Popover.getOrCreateInstance(this, config);
+
+      if (typeof config === 'string') {
+        if (typeof data[config] === 'undefined') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config]();
+      }
+    });
+  }
+
+}
+/**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ * add .Popover to jQuery only if jQuery is present
+ */
+
+
+defineJQueryPlugin(Popover);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): scrollspy.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+
+const NAME$2 = 'scrollspy';
+const DATA_KEY$2 = 'bs.scrollspy';
+const EVENT_KEY$2 = `.${DATA_KEY$2}`;
+const DATA_API_KEY$1 = '.data-api';
+const Default$1 = {
+  offset: 10,
+  method: 'auto',
+  target: ''
+};
+const DefaultType$1 = {
+  offset: 'number',
+  method: 'string',
+  target: '(string|element)'
+};
+const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
+const EVENT_SCROLL = `scroll${EVENT_KEY$2}`;
+const EVENT_LOAD_DATA_API = `load${EVENT_KEY$2}${DATA_API_KEY$1}`;
+const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
+const CLASS_NAME_ACTIVE$1 = 'active';
+const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
+const SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';
+const SELECTOR_NAV_LINKS = '.nav-link';
+const SELECTOR_NAV_ITEMS = '.nav-item';
+const SELECTOR_LIST_ITEMS = '.list-group-item';
+const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`;
+const SELECTOR_DROPDOWN$1 = '.dropdown';
+const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
+const METHOD_OFFSET = 'offset';
+const METHOD_POSITION = 'position';
+/**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+class ScrollSpy extends BaseComponent {
+  constructor(element, config) {
+    super(element);
+    this._scrollElement = this._element.tagName === 'BODY' ? window : this._element;
+    this._config = this._getConfig(config);
+    this._offsets = [];
+    this._targets = [];
+    this._activeTarget = null;
+    this._scrollHeight = 0;
+    EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process());
+    this.refresh();
+
+    this._process();
+  } // Getters
+
+
+  static get Default() {
+    return Default$1;
+  }
+
+  static get NAME() {
+    return NAME$2;
+  } // Public
+
+
+  refresh() {
+    const autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
+    const offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
+    const offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
+    this._offsets = [];
+    this._targets = [];
+    this._scrollHeight = this._getScrollHeight();
+    const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target);
+    targets.map(element => {
+      const targetSelector = getSelectorFromElement(element);
+      const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null;
+
+      if (target) {
+        const targetBCR = target.getBoundingClientRect();
+
+        if (targetBCR.width || targetBCR.height) {
+          return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];
+        }
+      }
+
+      return null;
+    }).filter(item => item).sort((a, b) => a[0] - b[0]).forEach(item => {
+      this._offsets.push(item[0]);
+
+      this._targets.push(item[1]);
+    });
+  }
+
+  dispose() {
+    EventHandler.off(this._scrollElement, EVENT_KEY$2);
+    super.dispose();
+  } // Private
+
+
+  _getConfig(config) {
+    config = { ...Default$1,
+      ...Manipulator.getDataAttributes(this._element),
+      ...(typeof config === 'object' && config ? config : {})
+    };
+    config.target = getElement(config.target) || document.documentElement;
+    typeCheckConfig(NAME$2, config, DefaultType$1);
+    return config;
+  }
+
+  _getScrollTop() {
+    return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
+  }
+
+  _getScrollHeight() {
+    return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
+  }
+
+  _getOffsetHeight() {
+    return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
+  }
+
+  _process() {
+    const scrollTop = this._getScrollTop() + this._config.offset;
+
+    const scrollHeight = this._getScrollHeight();
+
+    const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
+
+    if (this._scrollHeight !== scrollHeight) {
+      this.refresh();
+    }
+
+    if (scrollTop >= maxScroll) {
+      const target = this._targets[this._targets.length - 1];
+
+      if (this._activeTarget !== target) {
+        this._activate(target);
+      }
+
+      return;
+    }
+
+    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
+      this._activeTarget = null;
+
+      this._clear();
+
+      return;
+    }
+
+    for (let i = this._offsets.length; i--;) {
+      const isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
+
+      if (isActiveTarget) {
+        this._activate(this._targets[i]);
+      }
+    }
+  }
+
+  _activate(target) {
+    this._activeTarget = target;
+
+    this._clear();
+
+    const queries = SELECTOR_LINK_ITEMS.split(',').map(selector => `${selector}[data-bs-target="${target}"],${selector}[href="${target}"]`);
+    const link = SelectorEngine.findOne(queries.join(','), this._config.target);
+    link.classList.add(CLASS_NAME_ACTIVE$1);
+
+    if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
+      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, link.closest(SELECTOR_DROPDOWN$1)).classList.add(CLASS_NAME_ACTIVE$1);
+    } else {
+      SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP$1).forEach(listGroup => {
+        // Set triggered links parents as active
+        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
+        SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1)); // Handle special case when .nav-link is inside .nav-item
+
+        SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(navItem => {
+          SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1));
+        });
+      });
+    }
+
+    EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {
+      relatedTarget: target
+    });
+  }
+
+  _clear() {
+    SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target).filter(node => node.classList.contains(CLASS_NAME_ACTIVE$1)).forEach(node => node.classList.remove(CLASS_NAME_ACTIVE$1));
+  } // Static
+
+
+  static jQueryInterface(config) {
+    return this.each(function () {
+      const data = ScrollSpy.getOrCreateInstance(this, config);
+
+      if (typeof config !== 'string') {
+        return;
+      }
+
+      if (typeof data[config] === 'undefined') {
+        throw new TypeError(`No method named "${config}"`);
+      }
+
+      data[config]();
+    });
+  }
+
+}
+/**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
+  SelectorEngine.find(SELECTOR_DATA_SPY).forEach(spy => new ScrollSpy(spy));
+});
+/**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ * add .ScrollSpy to jQuery only if jQuery is present
+ */
+
+defineJQueryPlugin(ScrollSpy);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): tab.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+
+const NAME$1 = 'tab';
+const DATA_KEY$1 = 'bs.tab';
+const EVENT_KEY$1 = `.${DATA_KEY$1}`;
+const DATA_API_KEY = '.data-api';
+const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
+const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
+const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
+const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
+const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}${DATA_API_KEY}`;
+const CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
+const CLASS_NAME_ACTIVE = 'active';
+const CLASS_NAME_FADE$1 = 'fade';
+const CLASS_NAME_SHOW$1 = 'show';
+const SELECTOR_DROPDOWN = '.dropdown';
+const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
+const SELECTOR_ACTIVE = '.active';
+const SELECTOR_ACTIVE_UL = ':scope > li > .active';
+const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]';
+const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
+const SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';
+/**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+class Tab extends BaseComponent {
+  // Getters
+  static get NAME() {
+    return NAME$1;
+  } // Public
+
+
+  show() {
+    if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
+      return;
+    }
+
+    let previous;
+    const target = getElementFromSelector(this._element);
+
+    const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);
+
+    if (listElement) {
+      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
+      previous = SelectorEngine.find(itemSelector, listElement);
+      previous = previous[previous.length - 1];
+    }
+
+    const hideEvent = previous ? EventHandler.trigger(previous, EVENT_HIDE$1, {
+      relatedTarget: this._element
+    }) : null;
+    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, {
+      relatedTarget: previous
+    });
+
+    if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {
+      return;
+    }
+
+    this._activate(this._element, listElement);
+
+    const complete = () => {
+      EventHandler.trigger(previous, EVENT_HIDDEN$1, {
+        relatedTarget: this._element
+      });
+      EventHandler.trigger(this._element, EVENT_SHOWN$1, {
+        relatedTarget: previous
+      });
+    };
+
+    if (target) {
+      this._activate(target, target.parentNode, complete);
+    } else {
+      complete();
+    }
+  } // Private
+
+
+  _activate(element, container, callback) {
+    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE);
+    const active = activeElements[0];
+    const isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$1);
+
+    const complete = () => this._transitionComplete(element, active, callback);
+
+    if (active && isTransitioning) {
+      active.classList.remove(CLASS_NAME_SHOW$1);
+
+      this._queueCallback(complete, element, true);
+    } else {
+      complete();
+    }
+  }
+
+  _transitionComplete(element, active, callback) {
+    if (active) {
+      active.classList.remove(CLASS_NAME_ACTIVE);
+      const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);
+
+      if (dropdownChild) {
+        dropdownChild.classList.remove(CLASS_NAME_ACTIVE);
+      }
+
+      if (active.getAttribute('role') === 'tab') {
+        active.setAttribute('aria-selected', false);
+      }
+    }
+
+    element.classList.add(CLASS_NAME_ACTIVE);
+
+    if (element.getAttribute('role') === 'tab') {
+      element.setAttribute('aria-selected', true);
+    }
+
+    reflow(element);
+
+    if (element.classList.contains(CLASS_NAME_FADE$1)) {
+      element.classList.add(CLASS_NAME_SHOW$1);
+    }
+
+    let parent = element.parentNode;
+
+    if (parent && parent.nodeName === 'LI') {
+      parent = parent.parentNode;
+    }
+
+    if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
+      const dropdownElement = element.closest(SELECTOR_DROPDOWN);
+
+      if (dropdownElement) {
+        SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));
+      }
+
+      element.setAttribute('aria-expanded', true);
+    }
+
+    if (callback) {
+      callback();
+    }
+  } // Static
+
+
+  static jQueryInterface(config) {
+    return this.each(function () {
+      const data = Tab.getOrCreateInstance(this);
+
+      if (typeof config === 'string') {
+        if (typeof data[config] === 'undefined') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config]();
+      }
+    });
+  }
+
+}
+/**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
+
+
+EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
+  if (['A', 'AREA'].includes(this.tagName)) {
+    event.preventDefault();
+  }
+
+  if (isDisabled(this)) {
+    return;
+  }
+
+  const data = Tab.getOrCreateInstance(this);
+  data.show();
+});
+/**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ * add .Tab to jQuery only if jQuery is present
+ */
+
+defineJQueryPlugin(Tab);
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): toast.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+/**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
+
+const NAME = 'toast';
+const DATA_KEY = 'bs.toast';
+const EVENT_KEY = `.${DATA_KEY}`;
+const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
+const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
+const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
+const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
+const EVENT_HIDE = `hide${EVENT_KEY}`;
+const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
+const EVENT_SHOW = `show${EVENT_KEY}`;
+const EVENT_SHOWN = `shown${EVENT_KEY}`;
+const CLASS_NAME_FADE = 'fade';
+const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
+
+const CLASS_NAME_SHOW = 'show';
+const CLASS_NAME_SHOWING = 'showing';
+const DefaultType = {
+  animation: 'boolean',
+  autohide: 'boolean',
+  delay: 'number'
+};
+const Default = {
+  animation: true,
+  autohide: true,
+  delay: 5000
+};
+/**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
+
+class Toast extends BaseComponent {
+  constructor(element, config) {
+    super(element);
+    this._config = this._getConfig(config);
+    this._timeout = null;
+    this._hasMouseInteraction = false;
+    this._hasKeyboardInteraction = false;
+
+    this._setListeners();
+  } // Getters
+
+
+  static get DefaultType() {
+    return DefaultType;
+  }
+
+  static get Default() {
+    return Default;
+  }
+
+  static get NAME() {
+    return NAME;
+  } // Public
+
+
+  show() {
+    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
+
+    if (showEvent.defaultPrevented) {
+      return;
+    }
+
+    this._clearTimeout();
+
+    if (this._config.animation) {
+      this._element.classList.add(CLASS_NAME_FADE);
+    }
+
+    const complete = () => {
+      this._element.classList.remove(CLASS_NAME_SHOWING);
+
+      EventHandler.trigger(this._element, EVENT_SHOWN);
+
+      this._maybeScheduleHide();
+    };
+
+    this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
+
+
+    reflow(this._element);
+
+    this._element.classList.add(CLASS_NAME_SHOW);
+
+    this._element.classList.add(CLASS_NAME_SHOWING);
+
+    this._queueCallback(complete, this._element, this._config.animation);
+  }
+
+  hide() {
+    if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
+      return;
+    }
+
+    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
+
+    if (hideEvent.defaultPrevented) {
+      return;
+    }
+
+    const complete = () => {
+      this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
+
+
+      this._element.classList.remove(CLASS_NAME_SHOWING);
+
+      this._element.classList.remove(CLASS_NAME_SHOW);
+
+      EventHandler.trigger(this._element, EVENT_HIDDEN);
+    };
+
+    this._element.classList.add(CLASS_NAME_SHOWING);
+
+    this._queueCallback(complete, this._element, this._config.animation);
+  }
+
+  dispose() {
+    this._clearTimeout();
+
+    if (this._element.classList.contains(CLASS_NAME_SHOW)) {
+      this._element.classList.remove(CLASS_NAME_SHOW);
+    }
+
+    super.dispose();
+  } // Private
+
+
+  _getConfig(config) {
+    config = { ...Default,
+      ...Manipulator.getDataAttributes(this._element),
+      ...(typeof config === 'object' && config ? config : {})
+    };
+    typeCheckConfig(NAME, config, this.constructor.DefaultType);
+    return config;
+  }
+
+  _maybeScheduleHide() {
+    if (!this._config.autohide) {
+      return;
+    }
+
+    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
+      return;
+    }
+
+    this._timeout = setTimeout(() => {
+      this.hide();
+    }, this._config.delay);
+  }
+
+  _onInteraction(event, isInteracting) {
+    switch (event.type) {
+      case 'mouseover':
+      case 'mouseout':
+        this._hasMouseInteraction = isInteracting;
+        break;
+
+      case 'focusin':
+      case 'focusout':
+        this._hasKeyboardInteraction = isInteracting;
+        break;
+    }
+
+    if (isInteracting) {
+      this._clearTimeout();
+
+      return;
+    }
+
+    const nextElement = event.relatedTarget;
+
+    if (this._element === nextElement || this._element.contains(nextElement)) {
+      return;
+    }
+
+    this._maybeScheduleHide();
+  }
+
+  _setListeners() {
+    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
+    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
+    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
+    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
+  }
+
+  _clearTimeout() {
+    clearTimeout(this._timeout);
+    this._timeout = null;
+  } // Static
+
+
+  static jQueryInterface(config) {
+    return this.each(function () {
+      const data = Toast.getOrCreateInstance(this, config);
+
+      if (typeof config === 'string') {
+        if (typeof data[config] === 'undefined') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config](this);
+      }
+    });
+  }
+
+}
+
+enableDismissTrigger(Toast);
+/**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ * add .Toast to jQuery only if jQuery is present
+ */
+
+defineJQueryPlugin(Toast);
+
+export { Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip };
+//# sourceMappingURL=bootstrap.esm.js.map
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map
new file mode 100644
index 0000000..9053c34
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"bootstrap.esm.js","sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n  if (obj === null || obj === undefined) {\n    return `${obj}`\n  }\n\n  return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttr = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n      hrefAttr = `#${hrefAttr.split('#')[1]}`\n    }\n\n    selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n  }\n\n  return selector\n}\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element)\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null\n  }\n\n  return null\n}\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element)\n\n  return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => {\n  if (!obj || typeof obj !== 'object') {\n    return false\n  }\n\n  if (typeof obj.jquery !== 'undefined') {\n    obj = obj[0]\n  }\n\n  return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n  if (isElement(obj)) { // it's a jQuery object or a node element\n    return obj.jquery ? obj[0] : obj\n  }\n\n  if (typeof obj === 'string' && obj.length > 0) {\n    return document.querySelector(obj)\n  }\n\n  return null\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n  Object.keys(configTypes).forEach(property => {\n    const expectedTypes = configTypes[property]\n    const value = config[property]\n    const valueType = value && isElement(value) ? 'element' : toType(value)\n\n    if (!new RegExp(expectedTypes).test(valueType)) {\n      throw new TypeError(\n        `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n      )\n    }\n  })\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  // eslint-disable-next-line no-unused-expressions\n  element.offsetHeight\n}\n\nconst getjQuery = () => {\n  const { jQuery } = window\n\n  if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return jQuery\n  }\n\n  return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        DOMContentLoadedCallbacks.forEach(callback => callback())\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = callback => {\n  if (typeof callback === 'function') {\n    callback()\n  }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n  }\n\n  const listLength = list.length\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  getElement,\n  getUID,\n  getSelectorFromElement,\n  getElementFromSelector,\n  getTransitionDurationFromElement,\n  triggerTransitionEnd,\n  isElement,\n  typeCheckConfig,\n  isVisible,\n  isDisabled,\n  findShadowRoot,\n  noop,\n  getNextActiveElement,\n  reflow,\n  getjQuery,\n  onDOMContentLoaded,\n  isRTL,\n  defineJQueryPlugin,\n  execute,\n  executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n  const uid = getUidEvent(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    event.delegateTarget = element\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (let i = domElements.length; i--;) {\n        if (domElements[i] === target) {\n          event.delegateTarget = target\n\n          if (handler.oneOff) {\n            // eslint-disable-next-line unicorn/consistent-destructuring\n            EventHandler.off(element, event.type, selector, fn)\n          }\n\n          return fn.apply(target, [event])\n        }\n      }\n    }\n\n    // To please ESLint\n    return null\n  }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n  const uidEventList = Object.keys(events)\n\n  for (let i = 0, len = uidEventList.length; i < len; i++) {\n    const event = events[uidEventList[i]]\n\n    if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n      return event\n    }\n  }\n\n  return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n  const delegation = typeof handler === 'string'\n  const originalHandler = delegation ? delegationFn : handler\n\n  let typeEvent = getTypeEvent(originalTypeEvent)\n  const isNative = nativeEvents.has(typeEvent)\n\n  if (!isNative) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  if (!handler) {\n    handler = delegationFn\n    delegationFn = null\n  }\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (customEventsRegex.test(originalTypeEvent)) {\n    const wrapFn = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    if (delegationFn) {\n      delegationFn = wrapFn(delegationFn)\n    } else {\n      handler = wrapFn(handler)\n    }\n  }\n\n  const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n  const events = getEvent(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n  if (previousFn) {\n    previousFn.oneOff = previousFn.oneOff && oneOff\n\n    return\n  }\n\n  const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = delegation ?\n    bootstrapDelegationHandler(element, handler, delegationFn) :\n    bootstrapHandler(element, handler)\n\n  fn.delegationSelector = delegation ? handler : null\n  fn.originalHandler = originalHandler\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  Object.keys(storeElementEvent).forEach(handlerKey => {\n    if (handlerKey.includes(namespace)) {\n      const event = storeElementEvent[handlerKey]\n\n      removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n    }\n  })\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, false)\n  },\n\n  one(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFn) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getEvent(element)\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof originalHandler !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!events || !events[typeEvent]) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      Object.keys(events).forEach(elementEvent => {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      })\n    }\n\n    const storeElementEvent = events[typeEvent] || {}\n    Object.keys(storeElementEvent).forEach(keyHandlers => {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        const event = storeElementEvent[keyHandlers]\n\n        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n      }\n    })\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const $ = getjQuery()\n    const typeEvent = getTypeEvent(event)\n    const inNamespace = event !== typeEvent\n    const isNative = nativeEvents.has(typeEvent)\n\n    let jQueryEvent\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n    let evt = null\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args)\n\n      $(element).trigger(jQueryEvent)\n      bubbles = !jQueryEvent.isPropagationStopped()\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n      defaultPrevented = jQueryEvent.isDefaultPrevented()\n    }\n\n    if (isNative) {\n      evt = document.createEvent('HTMLEvents')\n      evt.initEvent(typeEvent, bubbles, true)\n    } else {\n      evt = new CustomEvent(event, {\n        bubbles,\n        cancelable: true\n      })\n    }\n\n    // merge custom information in our event\n    if (typeof args !== 'undefined') {\n      Object.keys(args).forEach(key => {\n        Object.defineProperty(evt, key, {\n          get() {\n            return args[key]\n          }\n        })\n      })\n    }\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n  executeAfterTransition,\n  getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.1.0'\n\nclass BaseComponent {\n  constructor(element) {\n    element = getElement(element)\n\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    Object.getOwnPropertyNames(this).forEach(propertyName => {\n      this[propertyName] = null\n    })\n  }\n\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  /** Static */\n\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nexport {\n  enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nenableDismissTrigger(Alert, 'close')\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this)\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n  if (val === 'true') {\n    return true\n  }\n\n  if (val === 'false') {\n    return false\n  }\n\n  if (val === Number(val).toString()) {\n    return Number(val)\n  }\n\n  if (val === '' || val === 'null') {\n    return null\n  }\n\n  return val\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n\n    Object.keys(element.dataset)\n      .filter(key => key.startsWith('bs'))\n      .forEach(key => {\n        let pureKey = key.replace(/^bs/, '')\n        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n        attributes[pureKey] = normalizeData(element.dataset[key])\n      })\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  },\n\n  offset(element) {\n    const rect = element.getBoundingClientRect()\n\n    return {\n      top: rect.top + window.pageYOffset,\n      left: rect.left + window.pageXOffset\n    }\n  },\n\n  position(element) {\n    return {\n      top: element.offsetTop,\n      left: element.offsetLeft\n    }\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children)\n      .filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n\n    let ancestor = element.parentNode\n\n    while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n      if (ancestor.matches(selector)) {\n        parents.push(ancestor)\n      }\n\n      ancestor = ancestor.parentNode\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  getNextActiveElement,\n  reflow,\n  triggerTransitionEnd,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  slide: false,\n  pause: 'hover',\n  wrap: true,\n  touch: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)',\n  keyboard: 'boolean',\n  slide: '(boolean|string)',\n  pause: '(string|boolean)',\n  wrap: 'boolean',\n  touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._items = null\n    this._interval = null\n    this._activeElement = null\n    this._isPaused = false\n    this._isSliding = false\n    this.touchTimeout = null\n    this.touchStartX = 0\n    this.touchDeltaX = 0\n\n    this._config = this._getConfig(config)\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n    this._pointerEvent = Boolean(window.PointerEvent)\n\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause(event) {\n    if (!event) {\n      this._isPaused = true\n    }\n\n    if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n      triggerTransitionEnd(this._element)\n      this.cycle(true)\n    }\n\n    clearInterval(this._interval)\n    this._interval = null\n  }\n\n  cycle(event) {\n    if (!event) {\n      this._isPaused = false\n    }\n\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    if (this._config && this._config.interval && !this._isPaused) {\n      this._updateInterval()\n\n      this._interval = setInterval(\n        (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n        this._config.interval\n      )\n    }\n  }\n\n  to(index) {\n    this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeIndex = this._getItemIndex(this._activeElement)\n\n    if (index > this._items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    if (activeIndex === index) {\n      this.pause()\n      this.cycle()\n      return\n    }\n\n    const order = index > activeIndex ?\n      ORDER_NEXT :\n      ORDER_PREV\n\n    this._slide(order, this._items[index])\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _handleSwipe() {\n    const absDeltax = Math.abs(this.touchDeltaX)\n\n    if (absDeltax <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltax / this.touchDeltaX\n\n    this.touchDeltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n    }\n\n    if (this._config.touch && this._touchSupported) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    const start = event => {\n      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n        this.touchStartX = event.clientX\n      } else if (!this._pointerEvent) {\n        this.touchStartX = event.touches[0].clientX\n      }\n    }\n\n    const move = event => {\n      // ensure swiping with one touch and not pinching\n      this.touchDeltaX = event.touches && event.touches.length > 1 ?\n        0 :\n        event.touches[0].clientX - this.touchStartX\n    }\n\n    const end = event => {\n      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n        this.touchDeltaX = event.clientX - this.touchStartX\n      }\n\n      this._handleSwipe()\n      if (this._config.pause === 'hover') {\n        // If it's a touch-enabled device, mouseenter/leave are fired as\n        // part of the mouse compatibility events on first tap - the carousel\n        // would stop cycling until user tapped out of it;\n        // here, we listen for touchend, explicitly pause the carousel\n        // (as if it's the second time we tap on it, mouseenter compat event\n        // is NOT fired) and after a timeout (to allow for mouse compatibility\n        // events to fire) we explicitly restart cycling\n\n        this.pause()\n        if (this.touchTimeout) {\n          clearTimeout(this.touchTimeout)\n        }\n\n        this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n      }\n    }\n\n    SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n      EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n    })\n\n    if (this._pointerEvent) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n    }\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(direction)\n    }\n  }\n\n  _getItemIndex(element) {\n    this._items = element && element.parentNode ?\n      SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n      []\n\n    return this._items.indexOf(element)\n  }\n\n  _getItemByOrder(order, activeElement) {\n    const isNext = order === ORDER_NEXT\n    return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n  }\n\n  _triggerSlideEvent(relatedTarget, eventDirectionName) {\n    const targetIndex = this._getItemIndex(relatedTarget)\n    const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n    return EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget,\n      direction: eventDirectionName,\n      from: fromIndex,\n      to: targetIndex\n    })\n  }\n\n  _setActiveIndicatorElement(element) {\n    if (this._indicatorsElement) {\n      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n      activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n      activeIndicator.removeAttribute('aria-current')\n\n      const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n      for (let i = 0; i < indicators.length; i++) {\n        if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n          indicators[i].classList.add(CLASS_NAME_ACTIVE)\n          indicators[i].setAttribute('aria-current', 'true')\n          break\n        }\n      }\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    if (elementInterval) {\n      this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n      this._config.interval = elementInterval\n    } else {\n      this._config.interval = this._config.defaultInterval || this._config.interval\n    }\n  }\n\n  _slide(directionOrOrder, element) {\n    const order = this._directionToOrder(directionOrOrder)\n    const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeElementIndex = this._getItemIndex(activeElement)\n    const nextElement = element || this._getItemByOrder(order, activeElement)\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n    const isCycling = Boolean(this._interval)\n\n    const isNext = order === ORDER_NEXT\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n    const eventDirectionName = this._orderToDirection(order)\n\n    if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n      this._isSliding = false\n      return\n    }\n\n    if (this._isSliding) {\n      return\n    }\n\n    const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    this._isSliding = true\n\n    if (isCycling) {\n      this.pause()\n    }\n\n    this._setActiveIndicatorElement(nextElement)\n    this._activeElement = nextElement\n\n    const triggerSlidEvent = () => {\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      })\n    }\n\n    if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n      nextElement.classList.add(orderClassName)\n\n      reflow(nextElement)\n\n      activeElement.classList.add(directionalClassName)\n      nextElement.classList.add(directionalClassName)\n\n      const completeCallBack = () => {\n        nextElement.classList.remove(directionalClassName, orderClassName)\n        nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n        activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n        this._isSliding = false\n\n        setTimeout(triggerSlidEvent, 0)\n      }\n\n      this._queueCallback(completeCallBack, activeElement, true)\n    } else {\n      activeElement.classList.remove(CLASS_NAME_ACTIVE)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      this._isSliding = false\n      triggerSlidEvent()\n    }\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n      return direction\n    }\n\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n      return order\n    }\n\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n\n  // Static\n\n  static carouselInterface(element, config) {\n    const data = Carousel.getOrCreateInstance(element, config)\n\n    let { _config } = data\n    if (typeof config === 'object') {\n      _config = {\n        ..._config,\n        ...config\n      }\n    }\n\n    const action = typeof config === 'string' ? config : _config.slide\n\n    if (typeof config === 'number') {\n      data.to(config)\n    } else if (typeof action === 'string') {\n      if (typeof data[action] === 'undefined') {\n        throw new TypeError(`No method named \"${action}\"`)\n      }\n\n      data[action]()\n    } else if (_config.interval && _config.ride) {\n      data.pause()\n      data.cycle()\n    }\n  }\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      Carousel.carouselInterface(this, config)\n    })\n  }\n\n  static dataApiClickHandler(event) {\n    const target = getElementFromSelector(this)\n\n    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n      return\n    }\n\n    const config = {\n      ...Manipulator.getDataAttributes(target),\n      ...Manipulator.getDataAttributes(this)\n    }\n    const slideIndex = this.getAttribute('data-bs-slide-to')\n\n    if (slideIndex) {\n      config.interval = false\n    }\n\n    Carousel.carouselInterface(target, config)\n\n    if (slideIndex) {\n      Carousel.getInstance(target).to(slideIndex)\n    }\n\n    event.preventDefault()\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (let i = 0, len = carousels.length; i < len; i++) {\n    Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]))\n  }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getSelectorFromElement,\n  getElementFromSelector,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  toggle: true,\n  parent: null\n}\n\nconst DefaultType = {\n  toggle: 'boolean',\n  parent: '(null|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._isTransitioning = false\n    this._config = this._getConfig(config)\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggleList.length; i < len; i++) {\n      const elem = toggleList[i]\n      const selector = getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElem => foundElem === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._selector = selector\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let actives = []\n    let activesData\n\n    if (this._config.parent) {\n      const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n      actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)) // remove children if greater depth\n    }\n\n    const container = SelectorEngine.findOne(this._selector)\n    if (actives.length) {\n      const tempActiveData = actives.find(elem => container !== elem)\n      activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null\n\n      if (activesData && activesData._isTransitioning) {\n        return\n      }\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    actives.forEach(elemActive => {\n      if (container !== elemActive) {\n        Collapse.getOrCreateInstance(elemActive, { toggle: false }).hide()\n      }\n\n      if (!activesData) {\n        Data.set(elemActive, DATA_KEY, null)\n      }\n    })\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    const triggerArrayLength = this._triggerArray.length\n    for (let i = 0; i < triggerArrayLength; i++) {\n      const trigger = this._triggerArray[i]\n      const elem = getElementFromSelector(trigger)\n\n      if (elem && !this._isShown(elem)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n    SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem))\n      .forEach(element => {\n        const selected = getElementFromSelector(element)\n\n        if (selected) {\n          this._addAriaAndCollapsedClass([element], this._isShown(selected))\n        }\n      })\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    triggerArray.forEach(elem => {\n      if (isOpen) {\n        elem.classList.remove(CLASS_NAME_COLLAPSED)\n      } else {\n        elem.classList.add(CLASS_NAME_COLLAPSED)\n      }\n\n      elem.setAttribute('aria-expanded', isOpen)\n    })\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const _config = {}\n      if (typeof config === 'string' && /show|hide/.test(config)) {\n        _config.toggle = false\n      }\n\n      const data = Collapse.getOrCreateInstance(this, _config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  const selector = getSelectorFromElement(this)\n  const selectorElements = SelectorEngine.find(selector)\n\n  selectorElements.forEach(element => {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getElementFromSelector,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n  offset: [0, 2],\n  boundary: 'clippingParents',\n  reference: 'toggle',\n  display: 'dynamic',\n  popperConfig: null,\n  autoClose: true\n}\n\nconst DefaultType = {\n  offset: '(array|string|function)',\n  boundary: '(string|element)',\n  reference: '(string|element|object)',\n  display: 'string',\n  popperConfig: '(null|object|function)',\n  autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._popper = null\n    this._config = this._getConfig(config)\n    this._menu = this._getMenuElement()\n    this._inNavbar = this._detectNavbar()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown(this._menu)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    const parent = Dropdown.getParentFromElement(this._element)\n    // Totally disable Popper for Dropdowns in Navbar\n    if (this._inNavbar) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n    } else {\n      this._createPopper(parent)\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement &&\n      !parent.closest(SELECTOR_NAVBAR_NAV)) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown(this._menu)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = {\n      ...this.constructor.Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createPopper(parent) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    const popperConfig = this._getPopperConfig()\n    const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n    if (isDisplayStatic) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n    }\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getMenuElement() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._element.parentNode\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display\n    if (this._config.display === 'static') {\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n\n  static clearMenus(event) {\n    if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n      return\n    }\n\n    const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggles.length; i < len; i++) {\n      const context = Dropdown.getInstance(toggles[i])\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      if (!context._isShown()) {\n        continue\n      }\n\n      const relatedTarget = {\n        relatedTarget: context._element\n      }\n\n      if (event) {\n        const composedPath = event.composedPath()\n        const isMenuTarget = composedPath.includes(context._menu)\n        if (\n          composedPath.includes(context._element) ||\n          (context._config.autoClose === 'inside' && !isMenuTarget) ||\n          (context._config.autoClose === 'outside' && isMenuTarget)\n        ) {\n          continue\n        }\n\n        // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n        if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n          continue\n        }\n\n        if (event.type === 'click') {\n          relatedTarget.clickEvent = event\n        }\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static getParentFromElement(element) {\n    return getElementFromSelector(element) || element.parentNode\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not input/textarea:\n    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n    // If input/textarea:\n    //  - If space key => not a dropdown command\n    //  - If key is other than escape\n    //    - If key is not up or down => not a dropdown command\n    //    - If trigger inside the menu => not a dropdown command\n    if (/input|textarea/i.test(event.target.tagName) ?\n      event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n      ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n        event.target.closest(SELECTOR_MENU))) :\n      !REGEXP_KEYDOWN.test(event.key)) {\n      return\n    }\n\n    const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n    if (!isActive && event.key === ESCAPE_KEY) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    if (event.key === ESCAPE_KEY) {\n      instance.hide()\n      return\n    }\n\n    if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n      if (!isActive) {\n        instance.show()\n      }\n\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (!isActive || event.key === SPACE_KEY) {\n      Dropdown.clearMenus()\n    }\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n  }\n\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProp, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProp)\n      const calculatedValue = window.getComputedStyle(element)[styleProp]\n      element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n  }\n\n  _saveInitialAttribute(element, styleProp) {\n    const actualValue = element.style[styleProp]\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProp, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProp) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProp)\n      if (typeof value === 'undefined') {\n        element.style.removeProperty(styleProp)\n      } else {\n        Manipulator.removeDataAttribute(element, styleProp)\n        element.style[styleProp] = value\n      }\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n    } else {\n      SelectorEngine.find(selector, this._element).forEach(callBack)\n    }\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n  className: 'modal-backdrop',\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  isAnimated: false,\n  rootElement: 'body', // give the choice to place backdrop under different elements\n  clickCallback: null\n}\n\nconst DefaultType = {\n  className: 'string',\n  isVisible: 'boolean',\n  isAnimated: 'boolean',\n  rootElement: '(element|string)',\n  clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    if (this._config.isAnimated) {\n      reflow(this._getElement())\n    }\n\n    this._getElement().classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  // Private\n\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    this._config.rootElement.append(this._getElement())\n\n    EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport { typeCheckConfig } from './index'\n\nconst Default = {\n  trapElement: null, // The element to trap focus inside of\n  autofocus: true\n}\n\nconst DefaultType = {\n  trapElement: 'element',\n  autofocus: 'boolean'\n}\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nclass FocusTrap {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  activate() {\n    const { trapElement, autofocus } = this._config\n\n    if (this._isActive) {\n      return\n    }\n\n    if (autofocus) {\n      trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n\n  _handleFocusin(event) {\n    const { target } = event\n    const { trapElement } = this._config\n\n    if (\n      target === document ||\n      target === trapElement ||\n      trapElement.contains(target)\n    ) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  focus: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._isShown = false\n    this._ignoreBackdropClick = false\n    this._isTransitioning = false\n    this._scrollBar = new ScrollBarHelper()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n\n    if (this._isAnimated()) {\n      this._isTransitioning = true\n    }\n\n    this._scrollBar.hide()\n\n    document.body.classList.add(CLASS_NAME_OPEN)\n\n    this._adjustDialog()\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n      EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n        if (event.target === this._element) {\n          this._ignoreBackdropClick = true\n        }\n      })\n    })\n\n    this._showBackdrop(() => this._showElement(relatedTarget))\n  }\n\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = false\n    const isAnimated = this._isAnimated()\n\n    if (isAnimated) {\n      this._isTransitioning = true\n    }\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    this._focustrap.deactivate()\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n    EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n    this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n  }\n\n  dispose() {\n    [window, this._dialog]\n      .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n      isAnimated: this._isAnimated()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _showElement(relatedTarget) {\n    const isAnimated = this._isAnimated()\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n    if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n      // Don't move modal's DOM position\n      document.body.append(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.scrollTop = 0\n\n    if (modalBody) {\n      modalBody.scrollTop = 0\n    }\n\n    if (isAnimated) {\n      reflow(this._element)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate()\n      }\n\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }\n\n    this._queueCallback(transitionComplete, this._dialog, isAnimated)\n  }\n\n  _setEscapeEvent() {\n    if (this._isShown) {\n      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n        if (this._config.keyboard && event.key === ESCAPE_KEY) {\n          event.preventDefault()\n          this.hide()\n        } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n          this._triggerBackdropTransition()\n        }\n      })\n    } else {\n      EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n    }\n  }\n\n  _setResizeEvent() {\n    if (this._isShown) {\n      EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n    } else {\n      EventHandler.off(window, EVENT_RESIZE)\n    }\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._scrollBar.reset()\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    })\n  }\n\n  _showBackdrop(callback) {\n    EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n      if (this._ignoreBackdropClick) {\n        this._ignoreBackdropClick = false\n        return\n      }\n\n      if (event.target !== event.currentTarget) {\n        return\n      }\n\n      if (this._config.backdrop === true) {\n        this.hide()\n      } else if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n      }\n    })\n\n    this._backdrop.show(callback)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const { classList, scrollHeight, style } = this._element\n    const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n    // return if the following background transition hasn't yet completed\n    if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n      return\n    }\n\n    if (!isModalOverflowing) {\n      style.overflowY = 'hidden'\n    }\n\n    classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      classList.remove(CLASS_NAME_STATIC)\n      if (!isModalOverflowing) {\n        this._queueCallback(() => {\n          style.overflowY = ''\n        }, this._dialog)\n      }\n    }, this._dialog)\n\n    this._element.focus()\n  }\n\n  // ----------------------------------------------------------------------\n  // the following methods are used to handle overflowing modals\n  // ----------------------------------------------------------------------\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const scrollbarWidth = this._scrollBar.getWidth()\n    const isBodyOverflowing = scrollbarWidth > 0\n\n    if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n      this._element.style.paddingLeft = `${scrollbarWidth}px`\n    }\n\n    if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n      this._element.style.paddingRight = `${scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  // Static\n\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](relatedTarget)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  const data = Modal.getOrCreateInstance(target)\n\n  data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  isVisible,\n  typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: 'boolean',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._element.style.visibility = 'visible'\n\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll) {\n        this._focustrap.activate()\n      }\n\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.setAttribute('aria-hidden', true)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n      this._element.style.visibility = 'hidden'\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible: this._config.backdrop,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: () => this.hide()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (this._config.keyboard && event.key === ESCAPE_KEY) {\n        this.hide()\n      }\n    })\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (allReadyOpen && allReadyOpen !== target) {\n    Offcanvas.getInstance(allReadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\n  SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())\n)\n\nenableDismissTrigger(Offcanvas)\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n  const attrName = attr.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attrName)) {\n    if (uriAttrs.has(attrName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n    }\n\n    return true\n  }\n\n  const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n  // Check if a regular expression validates the attribute.\n  for (let i = 0, len = regExp.length; i < len; i++) {\n    if (regExp[i].test(attrName)) {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFn && typeof sanitizeFn === 'function') {\n    return sanitizeFn(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const allowlistKeys = Object.keys(allowList)\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (let i = 0, len = elements.length; i < len; i++) {\n    const el = elements[i]\n    const elName = el.nodeName.toLowerCase()\n\n    if (!allowlistKeys.includes(elName)) {\n      el.remove()\n\n      continue\n    }\n\n    const attributeList = [].concat(...el.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n    attributeList.forEach(attr => {\n      if (!allowedAttribute(attr, allowedAttributes)) {\n        el.removeAttribute(attr.nodeName)\n      }\n    })\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  findShadowRoot,\n  getElement,\n  getUID,\n  isElement,\n  isRTL,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport { DefaultAllowlist, sanitizeHtml } from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n  animation: 'boolean',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string',\n  delay: '(number|object)',\n  html: 'boolean',\n  selector: '(string|boolean)',\n  placement: '(string|function)',\n  offset: '(array|string|function)',\n  container: '(string|element|boolean)',\n  fallbackPlacements: 'array',\n  boundary: '(string|element)',\n  customClass: '(string|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  allowList: 'object',\n  popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n              '<div class=\"tooltip-arrow\"></div>' +\n              '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  selector: false,\n  placement: 'top',\n  offset: [0, 0],\n  container: false,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  boundary: 'clippingParents',\n  customClass: '',\n  sanitize: true,\n  sanitizeFn: null,\n  allowList: DefaultAllowlist,\n  popperConfig: null\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    super(element)\n\n    // private\n    this._isEnabled = true\n    this._timeout = 0\n    this._hoverState = ''\n    this._activeTrigger = {}\n    this._popper = null\n\n    // Protected\n    this._config = this._getConfig(config)\n    this.tip = null\n\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle(event) {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (event) {\n      const context = this._initializeOnDelegatedTarget(event)\n\n      context._activeTrigger.click = !context._activeTrigger.click\n\n      if (context._isWithActiveTrigger()) {\n        context._enter(null, context)\n      } else {\n        context._leave(null, context)\n      }\n    } else {\n      if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n        this._leave(null, this)\n        return\n      }\n\n      this._enter(null, this)\n    }\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this.tip) {\n      this.tip.remove()\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this.isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = shadowRoot === null ?\n      this._element.ownerDocument.documentElement.contains(this._element) :\n      shadowRoot.contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const tipId = getUID(this.constructor.NAME)\n\n    tip.setAttribute('id', tipId)\n    this._element.setAttribute('aria-describedby', tipId)\n\n    if (this._config.animation) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    const placement = typeof this._config.placement === 'function' ?\n      this._config.placement.call(this, tip, this._element) :\n      this._config.placement\n\n    const attachment = this._getAttachment(placement)\n    this._addAttachmentClass(attachment)\n\n    const { container } = this._config\n    Data.set(tip, this.constructor.DATA_KEY, this)\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n    }\n\n    if (this._popper) {\n      this._popper.update()\n    } else {\n      this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n    }\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    const customClass = this._resolvePossibleFunction(this._config.customClass)\n    if (customClass) {\n      tip.classList.add(...customClass.split(' '))\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children).forEach(element => {\n        EventHandler.on(element, 'mouseover', noop)\n      })\n    }\n\n    const complete = () => {\n      const prevHoverState = this._hoverState\n\n      this._hoverState = null\n      EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n      if (prevHoverState === HOVER_STATE_OUT) {\n        this._leave(null, this)\n      }\n    }\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n  }\n\n  hide() {\n    if (!this._popper) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (this._hoverState !== HOVER_STATE_SHOW) {\n        tip.remove()\n      }\n\n      this._cleanTipClass()\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n      if (this._popper) {\n        this._popper.destroy()\n        this._popper = null\n      }\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children)\n        .forEach(element => EventHandler.off(element, 'mouseover', noop))\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n    this._hoverState = ''\n  }\n\n  update() {\n    if (this._popper !== null) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n\n  isWithContent() {\n    return Boolean(this.getTitle())\n  }\n\n  getTipElement() {\n    if (this.tip) {\n      return this.tip\n    }\n\n    const element = document.createElement('div')\n    element.innerHTML = this._config.template\n\n    const tip = element.children[0]\n    this.setContent(tip)\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n\n    this.tip = tip\n    return this.tip\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER)\n  }\n\n  _sanitizeAndSetContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!content && templateElement) {\n      templateElement.remove()\n      return\n    }\n\n    // we use append for html objects to maintain js events\n    this.setElementContent(templateElement, content)\n  }\n\n  setElementContent(element, content) {\n    if (element === null) {\n      return\n    }\n\n    if (isElement(content)) {\n      content = getElement(content)\n\n      // content is a DOM node or a jQuery\n      if (this._config.html) {\n        if (content.parentNode !== element) {\n          element.innerHTML = ''\n          element.append(content)\n        }\n      } else {\n        element.textContent = content.textContent\n      }\n\n      return\n    }\n\n    if (this._config.html) {\n      if (this._config.sanitize) {\n        content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n      }\n\n      element.innerHTML = content\n    } else {\n      element.textContent = content\n    }\n  }\n\n  getTitle() {\n    const title = this._element.getAttribute('data-bs-original-title') || this._config.title\n\n    return this._resolvePossibleFunction(title)\n  }\n\n  updateAttachment(attachment) {\n    if (attachment === 'right') {\n      return 'end'\n    }\n\n    if (attachment === 'left') {\n      return 'start'\n    }\n\n    return attachment\n  }\n\n  // Private\n\n  _initializeOnDelegatedTarget(event, context) {\n    return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(content) {\n    return typeof content === 'function' ? content.call(this._element) : content\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'onChange',\n          enabled: true,\n          phase: 'afterWrite',\n          fn: data => this._handlePopperPlacementChange(data)\n        }\n      ],\n      onFirstUpdate: data => {\n        if (data.options.placement !== data.placement) {\n          this._handlePopperPlacementChange(data)\n        }\n      }\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _addAttachmentClass(attachment) {\n    this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`)\n  }\n\n  _getAttachment(placement) {\n    return AttachmentMap[placement.toUpperCase()]\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    triggers.forEach(trigger => {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSEENTER :\n          this.constructor.Event.FOCUSIN\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSELEAVE :\n          this.constructor.Event.FOCUSOUT\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n        EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n      }\n    })\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._config.selector) {\n      this._config = {\n        ...this._config,\n        trigger: 'manual',\n        selector: ''\n      }\n    } else {\n      this._fixTitle()\n    }\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n    const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n    if (title || originalTitleType !== 'string') {\n      this._element.setAttribute('data-bs-original-title', title || '')\n      if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n        this._element.setAttribute('aria-label', title)\n      }\n\n      this._element.setAttribute('title', '')\n    }\n  }\n\n  _enter(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = true\n    }\n\n    if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n      context._hoverState = HOVER_STATE_SHOW\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_SHOW\n\n    if (!context._config.delay || !context._config.delay.show) {\n      context.show()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_SHOW) {\n        context.show()\n      }\n    }, context._config.delay.show)\n  }\n\n  _leave(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = context._element.contains(event.relatedTarget)\n    }\n\n    if (context._isWithActiveTrigger()) {\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_OUT\n\n    if (!context._config.delay || !context._config.delay.hide) {\n      context.hide()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_OUT) {\n        context.hide()\n      }\n    }, context._config.delay.hide)\n  }\n\n  _isWithActiveTrigger() {\n    for (const trigger in this._activeTrigger) {\n      if (this._activeTrigger[trigger]) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    Object.keys(dataAttributes).forEach(dataAttr => {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n        delete dataAttributes[dataAttr]\n      }\n    })\n\n    config = {\n      ...this.constructor.Default,\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (config.sanitize) {\n      config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const key in this._config) {\n      if (this.constructor.Default[key] !== this._config[key]) {\n        config[key] = this._config[key]\n      }\n    }\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _cleanTipClass() {\n    const tip = this.getTipElement()\n    const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g')\n    const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex)\n    if (tabClass !== null && tabClass.length > 0) {\n      tabClass.map(token => token.trim())\n        .forEach(tClass => tip.classList.remove(tClass))\n    }\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX\n  }\n\n  _handlePopperPlacementChange(popperData) {\n    const { state } = popperData\n\n    if (!state) {\n      return\n    }\n\n    this.tip = state.elements.popper\n    this._cleanTipClass()\n    this._addAttachmentClass(this._getAttachment(state.placement))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\n\nconst Default = {\n  ...Tooltip.Default,\n  placement: 'right',\n  offset: [0, 8],\n  trigger: 'click',\n  content: '',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n              '<div class=\"popover-arrow\"></div>' +\n              '<h3 class=\"popover-header\"></h3>' +\n              '<div class=\"popover-body\"></div>' +\n            '</div>'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(string|element|function)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Overrides\n\n  isWithContent() {\n    return this.getTitle() || this._getContent()\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE)\n    this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT)\n  }\n\n  // Private\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getSelectorFromElement,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  offset: 10,\n  method: 'auto',\n  target: ''\n}\n\nconst DefaultType = {\n  offset: 'number',\n  method: 'string',\n  target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n    this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n    this._config = this._getConfig(config)\n    this._offsets = []\n    this._targets = []\n    this._activeTarget = null\n    this._scrollHeight = 0\n\n    EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n    this.refresh()\n    this._process()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  refresh() {\n    const autoMethod = this._scrollElement === this._scrollElement.window ?\n      METHOD_OFFSET :\n      METHOD_POSITION\n\n    const offsetMethod = this._config.method === 'auto' ?\n      autoMethod :\n      this._config.method\n\n    const offsetBase = offsetMethod === METHOD_POSITION ?\n      this._getScrollTop() :\n      0\n\n    this._offsets = []\n    this._targets = []\n    this._scrollHeight = this._getScrollHeight()\n\n    const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n\n    targets.map(element => {\n      const targetSelector = getSelectorFromElement(element)\n      const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n      if (target) {\n        const targetBCR = target.getBoundingClientRect()\n        if (targetBCR.width || targetBCR.height) {\n          return [\n            Manipulator[offsetMethod](target).top + offsetBase,\n            targetSelector\n          ]\n        }\n      }\n\n      return null\n    })\n      .filter(item => item)\n      .sort((a, b) => a[0] - b[0])\n      .forEach(item => {\n        this._offsets.push(item[0])\n        this._targets.push(item[1])\n      })\n  }\n\n  dispose() {\n    EventHandler.off(this._scrollElement, EVENT_KEY)\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.target = getElement(config.target) || document.documentElement\n\n    typeCheckConfig(NAME, config, DefaultType)\n\n    return config\n  }\n\n  _getScrollTop() {\n    return this._scrollElement === window ?\n      this._scrollElement.pageYOffset :\n      this._scrollElement.scrollTop\n  }\n\n  _getScrollHeight() {\n    return this._scrollElement.scrollHeight || Math.max(\n      document.body.scrollHeight,\n      document.documentElement.scrollHeight\n    )\n  }\n\n  _getOffsetHeight() {\n    return this._scrollElement === window ?\n      window.innerHeight :\n      this._scrollElement.getBoundingClientRect().height\n  }\n\n  _process() {\n    const scrollTop = this._getScrollTop() + this._config.offset\n    const scrollHeight = this._getScrollHeight()\n    const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n    if (this._scrollHeight !== scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      const target = this._targets[this._targets.length - 1]\n\n      if (this._activeTarget !== target) {\n        this._activate(target)\n      }\n\n      return\n    }\n\n    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n      this._activeTarget = null\n      this._clear()\n      return\n    }\n\n    for (let i = this._offsets.length; i--;) {\n      const isActiveTarget = this._activeTarget !== this._targets[i] &&\n          scrollTop >= this._offsets[i] &&\n          (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n      if (isActiveTarget) {\n        this._activate(this._targets[i])\n      }\n    }\n  }\n\n  _activate(target) {\n    this._activeTarget = target\n\n    this._clear()\n\n    const queries = SELECTOR_LINK_ITEMS.split(',')\n      .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n    const link = SelectorEngine.findOne(queries.join(','), this._config.target)\n\n    link.classList.add(CLASS_NAME_ACTIVE)\n    if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n        .forEach(listGroup => {\n          // Set triggered links parents as active\n          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n          SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n            .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n          // Handle special case when .nav-link is inside .nav-item\n          SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n            .forEach(navItem => {\n              SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n                .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n            })\n        })\n    }\n\n    EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n      relatedTarget: target\n    })\n  }\n\n  _clear() {\n    SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n      .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n      .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  SelectorEngine.find(SELECTOR_DATA_SPY)\n    .forEach(spy => new ScrollSpy(spy))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  show() {\n    if ((this._element.parentNode &&\n      this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n      this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n      return\n    }\n\n    let previous\n    const target = getElementFromSelector(this._element)\n    const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n    if (listElement) {\n      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n      previous = SelectorEngine.find(itemSelector, listElement)\n      previous = previous[previous.length - 1]\n    }\n\n    const hideEvent = previous ?\n      EventHandler.trigger(previous, EVENT_HIDE, {\n        relatedTarget: this._element\n      }) :\n      null\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget: previous\n    })\n\n    if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._activate(this._element, listElement)\n\n    const complete = () => {\n      EventHandler.trigger(previous, EVENT_HIDDEN, {\n        relatedTarget: this._element\n      })\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget: previous\n      })\n    }\n\n    if (target) {\n      this._activate(target, target.parentNode, complete)\n    } else {\n      complete()\n    }\n  }\n\n  // Private\n\n  _activate(element, container, callback) {\n    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n      SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n      SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n    const active = activeElements[0]\n    const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n    const complete = () => this._transitionComplete(element, active, callback)\n\n    if (active && isTransitioning) {\n      active.classList.remove(CLASS_NAME_SHOW)\n      this._queueCallback(complete, element, true)\n    } else {\n      complete()\n    }\n  }\n\n  _transitionComplete(element, active, callback) {\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n\n      const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n      if (dropdownChild) {\n        dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n      }\n\n      if (active.getAttribute('role') === 'tab') {\n        active.setAttribute('aria-selected', false)\n      }\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n    if (element.getAttribute('role') === 'tab') {\n      element.setAttribute('aria-selected', true)\n    }\n\n    reflow(element)\n\n    if (element.classList.contains(CLASS_NAME_FADE)) {\n      element.classList.add(CLASS_NAME_SHOW)\n    }\n\n    let parent = element.parentNode\n    if (parent && parent.nodeName === 'LI') {\n      parent = parent.parentNode\n    }\n\n    if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n      const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n      if (dropdownElement) {\n        SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n          .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n      }\n\n      element.setAttribute('aria-expanded', true)\n    }\n\n    if (callback) {\n      callback()\n    }\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  const data = Tab.getOrCreateInstance(this)\n  data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      this._element.classList.remove(CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    return config\n  }\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout':\n        this._hasMouseInteraction = isInteracting\n        break\n      case 'focusin':\n      case 'focusout':\n        this._hasKeyboardInteraction = isInteracting\n        break\n      default:\n        break\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\nenableDismissTrigger(Toast)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","undefined","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","uid","getEvent","bootstrapHandler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","i","findHandler","events","delegationSelector","uidEventList","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","isNative","has","addHandler","wrapFn","relatedTarget","handlers","previousFn","replace","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","on","one","inNamespace","isNamespace","elementEvent","slice","keyHandlers","trigger","args","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","elementMap","Map","set","instance","instanceMap","size","console","error","Array","from","remove","delete","VERSION","BaseComponent","constructor","_element","Data","DATA_KEY","dispose","EVENT_KEY","getOwnPropertyNames","propertyName","_queueCallback","isAnimated","getInstance","getOrCreateInstance","Error","enableDismissTrigger","component","method","clickEvent","tagName","closest","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","closeEvent","_destroyElement","each","data","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","setAttribute","button","normalizeData","val","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","pageYOffset","left","pageXOffset","position","offsetTop","offsetLeft","NODE_TEXT","SelectorEngine","find","concat","Element","prototype","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","KEY_TO_DIRECTION","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_INDICATOR","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","order","_handleSwipe","absDeltax","abs","direction","_keydown","_addTouchEventListeners","start","pointerType","clientX","touches","move","end","clearTimeout","itemImg","e","add","_getItemByOrder","isNext","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","slideEvent","triggerSlidEvent","completeCallBack","carouselInterface","action","ride","dataApiClickHandler","slideIndex","carousels","parent","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","actives","activesData","container","tempActiveData","startEvent","elemActive","dimension","_getDimension","style","complete","capitalizedDimension","scrollSize","triggerArrayLength","selected","triggerArray","isOpen","selectorElements","ESCAPE_KEY","SPACE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","REGEXP_KEYDOWN","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_NAVBAR","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","boundary","reference","display","popperConfig","autoClose","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","showEvent","getParentFromElement","_createPopper","focus","_completeHide","destroy","update","hideEvent","Popper","referenceElement","_getPopperConfig","isDisplayStatic","modifiers","modifier","enabled","createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","placement","options","_selectMenuItem","items","clearMenus","toggles","context","composedPath","isMenuTarget","dataApiKeydownHandler","isActive","stopPropagation","getToggleButton","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","ScrollBarHelper","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","overflow","styleProp","scrollbarWidth","manipulationCallBack","_applyManipulationCallback","reset","_resetElementAttributes","actualValue","removeProperty","callBack","isOverflowing","className","rootElement","clickCallback","EVENT_MOUSEDOWN","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","trapElement","autofocus","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_ignoreBackdropClick","_scrollBar","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","scrollTop","transitionComplete","_triggerBackdropTransition","_resetAdjustments","currentTarget","scrollHeight","isModalOverflowing","clientHeight","overflowY","isBodyOverflowing","paddingLeft","paddingRight","scroll","CLASS_NAME_BACKDROP","OPEN_SELECTOR","Offcanvas","visibility","blur","completeCallback","allReadyOpen","uriAttrs","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","domParser","DOMParser","createdDocument","parseFromString","allowlistKeys","elName","attributeList","allowedAttributes","innerHTML","CLASS_PREFIX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_MODAL","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","attachment","_getAttachment","_addAttachmentClass","_resolvePossibleFunction","prevHoverState","_cleanTipClass","getTitle","setContent","_sanitizeAndSetContent","content","templateElement","setElementContent","textContent","updateAttachment","_getDelegateConfig","phase","_handlePopperPlacementChange","onFirstUpdate","_getBasicClassPrefix","triggers","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","basicClassPrefixRegex","tabClass","token","tClass","state","popper","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","EVENT_ACTIVATE","EVENT_SCROLL","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","targetSelector","targetBCR","height","item","sort","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","isActiveTarget","queries","link","listGroup","navItem","node","spy","CLASS_NAME_DROPDOWN_MENU","SELECTOR_ACTIVE_UL","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","listElement","itemSelector","activeElements","active","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","dropdown","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMA,OAAO,GAAG,OAAhB;AACA,MAAMC,uBAAuB,GAAG,IAAhC;AACA,MAAMC,cAAc,GAAG,eAAvB;;AAGA,MAAMC,MAAM,GAAGC,GAAG,IAAI;AACpB,MAAIA,GAAG,KAAK,IAAR,IAAgBA,GAAG,KAAKC,SAA5B,EAAuC;AACrC,WAAQ,GAAED,GAAI,EAAd;AACD;;AAED,SAAO,GAAGE,QAAH,CAAYC,IAAZ,CAAiBH,GAAjB,EAAsBI,KAAtB,CAA4B,aAA5B,EAA2C,CAA3C,EAA8CC,WAA9C,EAAP;AACD,CAND;AAQA;AACA;AACA;AACA;AACA;;;AAEA,MAAMC,MAAM,GAAGC,MAAM,IAAI;AACvB,KAAG;AACDA,IAAAA,MAAM,IAAIC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBd,OAA3B,CAAV;AACD,GAFD,QAESe,QAAQ,CAACC,cAAT,CAAwBL,MAAxB,CAFT;;AAIA,SAAOA,MAAP;AACD,CAND;;AAQA,MAAMM,WAAW,GAAGC,OAAO,IAAI;AAC7B,MAAIC,QAAQ,GAAGD,OAAO,CAACE,YAAR,CAAqB,gBAArB,CAAf;;AAEA,MAAI,CAACD,QAAD,IAAaA,QAAQ,KAAK,GAA9B,EAAmC;AACjC,QAAIE,QAAQ,GAAGH,OAAO,CAACE,YAAR,CAAqB,MAArB,CAAf,CADiC;AAIjC;AACA;AACA;;AACA,QAAI,CAACC,QAAD,IAAc,CAACA,QAAQ,CAACC,QAAT,CAAkB,GAAlB,CAAD,IAA2B,CAACD,QAAQ,CAACE,UAAT,CAAoB,GAApB,CAA9C,EAAyE;AACvE,aAAO,IAAP;AACD,KATgC;;;AAYjC,QAAIF,QAAQ,CAACC,QAAT,CAAkB,GAAlB,KAA0B,CAACD,QAAQ,CAACE,UAAT,CAAoB,GAApB,CAA/B,EAAyD;AACvDF,MAAAA,QAAQ,GAAI,IAAGA,QAAQ,CAACG,KAAT,CAAe,GAAf,EAAoB,CAApB,CAAuB,EAAtC;AACD;;AAEDL,IAAAA,QAAQ,GAAGE,QAAQ,IAAIA,QAAQ,KAAK,GAAzB,GAA+BA,QAAQ,CAACI,IAAT,EAA/B,GAAiD,IAA5D;AACD;;AAED,SAAON,QAAP;AACD,CAvBD;;AAyBA,MAAMO,sBAAsB,GAAGR,OAAO,IAAI;AACxC,QAAMC,QAAQ,GAAGF,WAAW,CAACC,OAAD,CAA5B;;AAEA,MAAIC,QAAJ,EAAc;AACZ,WAAOJ,QAAQ,CAACY,aAAT,CAAuBR,QAAvB,IAAmCA,QAAnC,GAA8C,IAArD;AACD;;AAED,SAAO,IAAP;AACD,CARD;;AAUA,MAAMS,sBAAsB,GAAGV,OAAO,IAAI;AACxC,QAAMC,QAAQ,GAAGF,WAAW,CAACC,OAAD,CAA5B;AAEA,SAAOC,QAAQ,GAAGJ,QAAQ,CAACY,aAAT,CAAuBR,QAAvB,CAAH,GAAsC,IAArD;AACD,CAJD;;AAMA,MAAMU,gCAAgC,GAAGX,OAAO,IAAI;AAClD,MAAI,CAACA,OAAL,EAAc;AACZ,WAAO,CAAP;AACD,GAHiD;;;AAMlD,MAAI;AAAEY,IAAAA,kBAAF;AAAsBC,IAAAA;AAAtB,MAA0CC,MAAM,CAACC,gBAAP,CAAwBf,OAAxB,CAA9C;AAEA,QAAMgB,uBAAuB,GAAGC,MAAM,CAACC,UAAP,CAAkBN,kBAAlB,CAAhC;AACA,QAAMO,oBAAoB,GAAGF,MAAM,CAACC,UAAP,CAAkBL,eAAlB,CAA7B,CATkD;;AAYlD,MAAI,CAACG,uBAAD,IAA4B,CAACG,oBAAjC,EAAuD;AACrD,WAAO,CAAP;AACD,GAdiD;;;AAiBlDP,EAAAA,kBAAkB,GAAGA,kBAAkB,CAACN,KAAnB,CAAyB,GAAzB,EAA8B,CAA9B,CAArB;AACAO,EAAAA,eAAe,GAAGA,eAAe,CAACP,KAAhB,CAAsB,GAAtB,EAA2B,CAA3B,CAAlB;AAEA,SAAO,CAACW,MAAM,CAACC,UAAP,CAAkBN,kBAAlB,IAAwCK,MAAM,CAACC,UAAP,CAAkBL,eAAlB,CAAzC,IAA+E9B,uBAAtF;AACD,CArBD;;AAuBA,MAAMqC,oBAAoB,GAAGpB,OAAO,IAAI;AACtCA,EAAAA,OAAO,CAACqB,aAAR,CAAsB,IAAIC,KAAJ,CAAUtC,cAAV,CAAtB;AACD,CAFD;;AAIA,MAAMuC,SAAS,GAAGrC,GAAG,IAAI;AACvB,MAAI,CAACA,GAAD,IAAQ,OAAOA,GAAP,KAAe,QAA3B,EAAqC;AACnC,WAAO,KAAP;AACD;;AAED,MAAI,OAAOA,GAAG,CAACsC,MAAX,KAAsB,WAA1B,EAAuC;AACrCtC,IAAAA,GAAG,GAAGA,GAAG,CAAC,CAAD,CAAT;AACD;;AAED,SAAO,OAAOA,GAAG,CAACuC,QAAX,KAAwB,WAA/B;AACD,CAVD;;AAYA,MAAMC,UAAU,GAAGxC,GAAG,IAAI;AACxB,MAAIqC,SAAS,CAACrC,GAAD,CAAb,EAAoB;AAAE;AACpB,WAAOA,GAAG,CAACsC,MAAJ,GAAatC,GAAG,CAAC,CAAD,CAAhB,GAAsBA,GAA7B;AACD;;AAED,MAAI,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAG,CAACyC,MAAJ,GAAa,CAA5C,EAA+C;AAC7C,WAAO9B,QAAQ,CAACY,aAAT,CAAuBvB,GAAvB,CAAP;AACD;;AAED,SAAO,IAAP;AACD,CAVD;;AAYA,MAAM0C,eAAe,GAAG,CAACC,aAAD,EAAgBC,MAAhB,EAAwBC,WAAxB,KAAwC;AAC9DC,EAAAA,MAAM,CAACC,IAAP,CAAYF,WAAZ,EAAyBG,OAAzB,CAAiCC,QAAQ,IAAI;AAC3C,UAAMC,aAAa,GAAGL,WAAW,CAACI,QAAD,CAAjC;AACA,UAAME,KAAK,GAAGP,MAAM,CAACK,QAAD,CAApB;AACA,UAAMG,SAAS,GAAGD,KAAK,IAAId,SAAS,CAACc,KAAD,CAAlB,GAA4B,SAA5B,GAAwCpD,MAAM,CAACoD,KAAD,CAAhE;;AAEA,QAAI,CAAC,IAAIE,MAAJ,CAAWH,aAAX,EAA0BI,IAA1B,CAA+BF,SAA/B,CAAL,EAAgD;AAC9C,YAAM,IAAIG,SAAJ,CACH,GAAEZ,aAAa,CAACa,WAAd,EAA4B,aAAYP,QAAS,oBAAmBG,SAAU,wBAAuBF,aAAc,IADlH,CAAN;AAGD;AACF,GAVD;AAWD,CAZD;;AAcA,MAAMO,SAAS,GAAG3C,OAAO,IAAI;AAC3B,MAAI,CAACuB,SAAS,CAACvB,OAAD,CAAV,IAAuBA,OAAO,CAAC4C,cAAR,GAAyBjB,MAAzB,KAAoC,CAA/D,EAAkE;AAChE,WAAO,KAAP;AACD;;AAED,SAAOZ,gBAAgB,CAACf,OAAD,CAAhB,CAA0B6C,gBAA1B,CAA2C,YAA3C,MAA6D,SAApE;AACD,CAND;;AAQA,MAAMC,UAAU,GAAG9C,OAAO,IAAI;AAC5B,MAAI,CAACA,OAAD,IAAYA,OAAO,CAACyB,QAAR,KAAqBsB,IAAI,CAACC,YAA1C,EAAwD;AACtD,WAAO,IAAP;AACD;;AAED,MAAIhD,OAAO,CAACiD,SAAR,CAAkBC,QAAlB,CAA2B,UAA3B,CAAJ,EAA4C;AAC1C,WAAO,IAAP;AACD;;AAED,MAAI,OAAOlD,OAAO,CAACmD,QAAf,KAA4B,WAAhC,EAA6C;AAC3C,WAAOnD,OAAO,CAACmD,QAAf;AACD;;AAED,SAAOnD,OAAO,CAACoD,YAAR,CAAqB,UAArB,KAAoCpD,OAAO,CAACE,YAAR,CAAqB,UAArB,MAAqC,OAAhF;AACD,CAdD;;AAgBA,MAAMmD,cAAc,GAAGrD,OAAO,IAAI;AAChC,MAAI,CAACH,QAAQ,CAACyD,eAAT,CAAyBC,YAA9B,EAA4C;AAC1C,WAAO,IAAP;AACD,GAH+B;;;AAMhC,MAAI,OAAOvD,OAAO,CAACwD,WAAf,KAA+B,UAAnC,EAA+C;AAC7C,UAAMC,IAAI,GAAGzD,OAAO,CAACwD,WAAR,EAAb;AACA,WAAOC,IAAI,YAAYC,UAAhB,GAA6BD,IAA7B,GAAoC,IAA3C;AACD;;AAED,MAAIzD,OAAO,YAAY0D,UAAvB,EAAmC;AACjC,WAAO1D,OAAP;AACD,GAb+B;;;AAgBhC,MAAI,CAACA,OAAO,CAAC2D,UAAb,EAAyB;AACvB,WAAO,IAAP;AACD;;AAED,SAAON,cAAc,CAACrD,OAAO,CAAC2D,UAAT,CAArB;AACD,CArBD;;AAuBA,MAAMC,IAAI,GAAG,MAAM,EAAnB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,MAAM,GAAG7D,OAAO,IAAI;AACxB;AACAA,EAAAA,OAAO,CAAC8D,YAAR;AACD,CAHD;;AAKA,MAAMC,SAAS,GAAG,MAAM;AACtB,QAAM;AAAEC,IAAAA;AAAF,MAAalD,MAAnB;;AAEA,MAAIkD,MAAM,IAAI,CAACnE,QAAQ,CAACoE,IAAT,CAAcb,YAAd,CAA2B,mBAA3B,CAAf,EAAgE;AAC9D,WAAOY,MAAP;AACD;;AAED,SAAO,IAAP;AACD,CARD;;AAUA,MAAME,yBAAyB,GAAG,EAAlC;;AAEA,MAAMC,kBAAkB,GAAGC,QAAQ,IAAI;AACrC,MAAIvE,QAAQ,CAACwE,UAAT,KAAwB,SAA5B,EAAuC;AACrC;AACA,QAAI,CAACH,yBAAyB,CAACvC,MAA/B,EAAuC;AACrC9B,MAAAA,QAAQ,CAACyE,gBAAT,CAA0B,kBAA1B,EAA8C,MAAM;AAClDJ,QAAAA,yBAAyB,CAAChC,OAA1B,CAAkCkC,QAAQ,IAAIA,QAAQ,EAAtD;AACD,OAFD;AAGD;;AAEDF,IAAAA,yBAAyB,CAACK,IAA1B,CAA+BH,QAA/B;AACD,GATD,MASO;AACLA,IAAAA,QAAQ;AACT;AACF,CAbD;;AAeA,MAAMI,KAAK,GAAG,MAAM3E,QAAQ,CAACyD,eAAT,CAAyBmB,GAAzB,KAAiC,KAArD;;AAEA,MAAMC,kBAAkB,GAAGC,MAAM,IAAI;AACnCR,EAAAA,kBAAkB,CAAC,MAAM;AACvB,UAAMS,CAAC,GAAGb,SAAS,EAAnB;AACA;;AACA,QAAIa,CAAJ,EAAO;AACL,YAAMC,IAAI,GAAGF,MAAM,CAACG,IAApB;AACA,YAAMC,kBAAkB,GAAGH,CAAC,CAACI,EAAF,CAAKH,IAAL,CAA3B;AACAD,MAAAA,CAAC,CAACI,EAAF,CAAKH,IAAL,IAAaF,MAAM,CAACM,eAApB;AACAL,MAAAA,CAAC,CAACI,EAAF,CAAKH,IAAL,EAAWK,WAAX,GAAyBP,MAAzB;;AACAC,MAAAA,CAAC,CAACI,EAAF,CAAKH,IAAL,EAAWM,UAAX,GAAwB,MAAM;AAC5BP,QAAAA,CAAC,CAACI,EAAF,CAAKH,IAAL,IAAaE,kBAAb;AACA,eAAOJ,MAAM,CAACM,eAAd;AACD,OAHD;AAID;AACF,GAbiB,CAAlB;AAcD,CAfD;;AAiBA,MAAMG,OAAO,GAAGhB,QAAQ,IAAI;AAC1B,MAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;AAClCA,IAAAA,QAAQ;AACT;AACF,CAJD;;AAMA,MAAMiB,sBAAsB,GAAG,CAACjB,QAAD,EAAWkB,iBAAX,EAA8BC,iBAAiB,GAAG,IAAlD,KAA2D;AACxF,MAAI,CAACA,iBAAL,EAAwB;AACtBH,IAAAA,OAAO,CAAChB,QAAD,CAAP;AACA;AACD;;AAED,QAAMoB,eAAe,GAAG,CAAxB;AACA,QAAMC,gBAAgB,GAAG9E,gCAAgC,CAAC2E,iBAAD,CAAhC,GAAsDE,eAA/E;AAEA,MAAIE,MAAM,GAAG,KAAb;;AAEA,QAAMC,OAAO,GAAG,CAAC;AAAEC,IAAAA;AAAF,GAAD,KAAgB;AAC9B,QAAIA,MAAM,KAAKN,iBAAf,EAAkC;AAChC;AACD;;AAEDI,IAAAA,MAAM,GAAG,IAAT;AACAJ,IAAAA,iBAAiB,CAACO,mBAAlB,CAAsC7G,cAAtC,EAAsD2G,OAAtD;AACAP,IAAAA,OAAO,CAAChB,QAAD,CAAP;AACD,GARD;;AAUAkB,EAAAA,iBAAiB,CAAChB,gBAAlB,CAAmCtF,cAAnC,EAAmD2G,OAAnD;AACAG,EAAAA,UAAU,CAAC,MAAM;AACf,QAAI,CAACJ,MAAL,EAAa;AACXtE,MAAAA,oBAAoB,CAACkE,iBAAD,CAApB;AACD;AACF,GAJS,EAIPG,gBAJO,CAAV;AAKD,CA3BD;AA6BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMM,oBAAoB,GAAG,CAACC,IAAD,EAAOC,aAAP,EAAsBC,aAAtB,EAAqCC,cAArC,KAAwD;AACnF,MAAIC,KAAK,GAAGJ,IAAI,CAACK,OAAL,CAAaJ,aAAb,CAAZ,CADmF;;AAInF,MAAIG,KAAK,KAAK,CAAC,CAAf,EAAkB;AAChB,WAAOJ,IAAI,CAAC,CAACE,aAAD,IAAkBC,cAAlB,GAAmCH,IAAI,CAACrE,MAAL,GAAc,CAAjD,GAAqD,CAAtD,CAAX;AACD;;AAED,QAAM2E,UAAU,GAAGN,IAAI,CAACrE,MAAxB;AAEAyE,EAAAA,KAAK,IAAIF,aAAa,GAAG,CAAH,GAAO,CAAC,CAA9B;;AAEA,MAAIC,cAAJ,EAAoB;AAClBC,IAAAA,KAAK,GAAG,CAACA,KAAK,GAAGE,UAAT,IAAuBA,UAA/B;AACD;;AAED,SAAON,IAAI,CAACtG,IAAI,CAAC6G,GAAL,CAAS,CAAT,EAAY7G,IAAI,CAAC8G,GAAL,CAASJ,KAAT,EAAgBE,UAAU,GAAG,CAA7B,CAAZ,CAAD,CAAX;AACD,CAjBD;;ACpSA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;;AAEA,MAAMG,cAAc,GAAG,oBAAvB;AACA,MAAMC,cAAc,GAAG,MAAvB;AACA,MAAMC,aAAa,GAAG,QAAtB;AACA,MAAMC,aAAa,GAAG,EAAtB;;AACA,IAAIC,QAAQ,GAAG,CAAf;AACA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,UAAU,EAAE,WADO;AAEnBC,EAAAA,UAAU,EAAE;AAFO,CAArB;AAIA,MAAMC,iBAAiB,GAAG,2BAA1B;AACA,MAAMC,YAAY,GAAG,IAAIC,GAAJ,CAAQ,CAC3B,OAD2B,EAE3B,UAF2B,EAG3B,SAH2B,EAI3B,WAJ2B,EAK3B,aAL2B,EAM3B,YAN2B,EAO3B,gBAP2B,EAQ3B,WAR2B,EAS3B,UAT2B,EAU3B,WAV2B,EAW3B,aAX2B,EAY3B,WAZ2B,EAa3B,SAb2B,EAc3B,UAd2B,EAe3B,OAf2B,EAgB3B,mBAhB2B,EAiB3B,YAjB2B,EAkB3B,WAlB2B,EAmB3B,UAnB2B,EAoB3B,aApB2B,EAqB3B,aArB2B,EAsB3B,aAtB2B,EAuB3B,WAvB2B,EAwB3B,cAxB2B,EAyB3B,eAzB2B,EA0B3B,cA1B2B,EA2B3B,eA3B2B,EA4B3B,YA5B2B,EA6B3B,OA7B2B,EA8B3B,MA9B2B,EA+B3B,QA/B2B,EAgC3B,OAhC2B,EAiC3B,QAjC2B,EAkC3B,QAlC2B,EAmC3B,SAnC2B,EAoC3B,UApC2B,EAqC3B,MArC2B,EAsC3B,QAtC2B,EAuC3B,cAvC2B,EAwC3B,QAxC2B,EAyC3B,MAzC2B,EA0C3B,kBA1C2B,EA2C3B,kBA3C2B,EA4C3B,OA5C2B,EA6C3B,OA7C2B,EA8C3B,QA9C2B,CAAR,CAArB;AAiDA;AACA;AACA;AACA;AACA;;AAEA,SAASC,WAAT,CAAqBpH,OAArB,EAA8BqH,GAA9B,EAAmC;AACjC,SAAQA,GAAG,IAAK,GAAEA,GAAI,KAAIR,QAAQ,EAAG,EAA9B,IAAoC7G,OAAO,CAAC6G,QAA5C,IAAwDA,QAAQ,EAAvE;AACD;;AAED,SAASS,QAAT,CAAkBtH,OAAlB,EAA2B;AACzB,QAAMqH,GAAG,GAAGD,WAAW,CAACpH,OAAD,CAAvB;AAEAA,EAAAA,OAAO,CAAC6G,QAAR,GAAmBQ,GAAnB;AACAT,EAAAA,aAAa,CAACS,GAAD,CAAb,GAAqBT,aAAa,CAACS,GAAD,CAAb,IAAsB,EAA3C;AAEA,SAAOT,aAAa,CAACS,GAAD,CAApB;AACD;;AAED,SAASE,gBAAT,CAA0BvH,OAA1B,EAAmCgF,EAAnC,EAAuC;AACrC,SAAO,SAASW,OAAT,CAAiB6B,KAAjB,EAAwB;AAC7BA,IAAAA,KAAK,CAACC,cAAN,GAAuBzH,OAAvB;;AAEA,QAAI2F,OAAO,CAAC+B,MAAZ,EAAoB;AAClBC,MAAAA,YAAY,CAACC,GAAb,CAAiB5H,OAAjB,EAA0BwH,KAAK,CAACK,IAAhC,EAAsC7C,EAAtC;AACD;;AAED,WAAOA,EAAE,CAAC8C,KAAH,CAAS9H,OAAT,EAAkB,CAACwH,KAAD,CAAlB,CAAP;AACD,GARD;AASD;;AAED,SAASO,0BAAT,CAAoC/H,OAApC,EAA6CC,QAA7C,EAAuD+E,EAAvD,EAA2D;AACzD,SAAO,SAASW,OAAT,CAAiB6B,KAAjB,EAAwB;AAC7B,UAAMQ,WAAW,GAAGhI,OAAO,CAACiI,gBAAR,CAAyBhI,QAAzB,CAApB;;AAEA,SAAK,IAAI;AAAE2F,MAAAA;AAAF,QAAa4B,KAAtB,EAA6B5B,MAAM,IAAIA,MAAM,KAAK,IAAlD,EAAwDA,MAAM,GAAGA,MAAM,CAACjC,UAAxE,EAAoF;AAClF,WAAK,IAAIuE,CAAC,GAAGF,WAAW,CAACrG,MAAzB,EAAiCuG,CAAC,EAAlC,GAAuC;AACrC,YAAIF,WAAW,CAACE,CAAD,CAAX,KAAmBtC,MAAvB,EAA+B;AAC7B4B,UAAAA,KAAK,CAACC,cAAN,GAAuB7B,MAAvB;;AAEA,cAAID,OAAO,CAAC+B,MAAZ,EAAoB;AAClB;AACAC,YAAAA,YAAY,CAACC,GAAb,CAAiB5H,OAAjB,EAA0BwH,KAAK,CAACK,IAAhC,EAAsC5H,QAAtC,EAAgD+E,EAAhD;AACD;;AAED,iBAAOA,EAAE,CAAC8C,KAAH,CAASlC,MAAT,EAAiB,CAAC4B,KAAD,CAAjB,CAAP;AACD;AACF;AACF,KAhB4B;;;AAmB7B,WAAO,IAAP;AACD,GApBD;AAqBD;;AAED,SAASW,WAAT,CAAqBC,MAArB,EAA6BzC,OAA7B,EAAsC0C,kBAAkB,GAAG,IAA3D,EAAiE;AAC/D,QAAMC,YAAY,GAAGtG,MAAM,CAACC,IAAP,CAAYmG,MAAZ,CAArB;;AAEA,OAAK,IAAIF,CAAC,GAAG,CAAR,EAAWK,GAAG,GAAGD,YAAY,CAAC3G,MAAnC,EAA2CuG,CAAC,GAAGK,GAA/C,EAAoDL,CAAC,EAArD,EAAyD;AACvD,UAAMV,KAAK,GAAGY,MAAM,CAACE,YAAY,CAACJ,CAAD,CAAb,CAApB;;AAEA,QAAIV,KAAK,CAACgB,eAAN,KAA0B7C,OAA1B,IAAqC6B,KAAK,CAACa,kBAAN,KAA6BA,kBAAtE,EAA0F;AACxF,aAAOb,KAAP;AACD;AACF;;AAED,SAAO,IAAP;AACD;;AAED,SAASiB,eAAT,CAAyBC,iBAAzB,EAA4C/C,OAA5C,EAAqDgD,YAArD,EAAmE;AACjE,QAAMC,UAAU,GAAG,OAAOjD,OAAP,KAAmB,QAAtC;AACA,QAAM6C,eAAe,GAAGI,UAAU,GAAGD,YAAH,GAAkBhD,OAApD;AAEA,MAAIkD,SAAS,GAAGC,YAAY,CAACJ,iBAAD,CAA5B;AACA,QAAMK,QAAQ,GAAG7B,YAAY,CAAC8B,GAAb,CAAiBH,SAAjB,CAAjB;;AAEA,MAAI,CAACE,QAAL,EAAe;AACbF,IAAAA,SAAS,GAAGH,iBAAZ;AACD;;AAED,SAAO,CAACE,UAAD,EAAaJ,eAAb,EAA8BK,SAA9B,CAAP;AACD;;AAED,SAASI,UAAT,CAAoBjJ,OAApB,EAA6B0I,iBAA7B,EAAgD/C,OAAhD,EAAyDgD,YAAzD,EAAuEjB,MAAvE,EAA+E;AAC7E,MAAI,OAAOgB,iBAAP,KAA6B,QAA7B,IAAyC,CAAC1I,OAA9C,EAAuD;AACrD;AACD;;AAED,MAAI,CAAC2F,OAAL,EAAc;AACZA,IAAAA,OAAO,GAAGgD,YAAV;AACAA,IAAAA,YAAY,GAAG,IAAf;AACD,GAR4E;AAW7E;;;AACA,MAAI1B,iBAAiB,CAACzE,IAAlB,CAAuBkG,iBAAvB,CAAJ,EAA+C;AAC7C,UAAMQ,MAAM,GAAGlE,EAAE,IAAI;AACnB,aAAO,UAAUwC,KAAV,EAAiB;AACtB,YAAI,CAACA,KAAK,CAAC2B,aAAP,IAAyB3B,KAAK,CAAC2B,aAAN,KAAwB3B,KAAK,CAACC,cAA9B,IAAgD,CAACD,KAAK,CAACC,cAAN,CAAqBvE,QAArB,CAA8BsE,KAAK,CAAC2B,aAApC,CAA9E,EAAmI;AACjI,iBAAOnE,EAAE,CAAC3F,IAAH,CAAQ,IAAR,EAAcmI,KAAd,CAAP;AACD;AACF,OAJD;AAKD,KAND;;AAQA,QAAImB,YAAJ,EAAkB;AAChBA,MAAAA,YAAY,GAAGO,MAAM,CAACP,YAAD,CAArB;AACD,KAFD,MAEO;AACLhD,MAAAA,OAAO,GAAGuD,MAAM,CAACvD,OAAD,CAAhB;AACD;AACF;;AAED,QAAM,CAACiD,UAAD,EAAaJ,eAAb,EAA8BK,SAA9B,IAA2CJ,eAAe,CAACC,iBAAD,EAAoB/C,OAApB,EAA6BgD,YAA7B,CAAhE;AACA,QAAMP,MAAM,GAAGd,QAAQ,CAACtH,OAAD,CAAvB;AACA,QAAMoJ,QAAQ,GAAGhB,MAAM,CAACS,SAAD,CAAN,KAAsBT,MAAM,CAACS,SAAD,CAAN,GAAoB,EAA1C,CAAjB;AACA,QAAMQ,UAAU,GAAGlB,WAAW,CAACiB,QAAD,EAAWZ,eAAX,EAA4BI,UAAU,GAAGjD,OAAH,GAAa,IAAnD,CAA9B;;AAEA,MAAI0D,UAAJ,EAAgB;AACdA,IAAAA,UAAU,CAAC3B,MAAX,GAAoB2B,UAAU,CAAC3B,MAAX,IAAqBA,MAAzC;AAEA;AACD;;AAED,QAAML,GAAG,GAAGD,WAAW,CAACoB,eAAD,EAAkBE,iBAAiB,CAACY,OAAlB,CAA0B7C,cAA1B,EAA0C,EAA1C,CAAlB,CAAvB;AACA,QAAMzB,EAAE,GAAG4D,UAAU,GACnBb,0BAA0B,CAAC/H,OAAD,EAAU2F,OAAV,EAAmBgD,YAAnB,CADP,GAEnBpB,gBAAgB,CAACvH,OAAD,EAAU2F,OAAV,CAFlB;AAIAX,EAAAA,EAAE,CAACqD,kBAAH,GAAwBO,UAAU,GAAGjD,OAAH,GAAa,IAA/C;AACAX,EAAAA,EAAE,CAACwD,eAAH,GAAqBA,eAArB;AACAxD,EAAAA,EAAE,CAAC0C,MAAH,GAAYA,MAAZ;AACA1C,EAAAA,EAAE,CAAC6B,QAAH,GAAcQ,GAAd;AACA+B,EAAAA,QAAQ,CAAC/B,GAAD,CAAR,GAAgBrC,EAAhB;AAEAhF,EAAAA,OAAO,CAACsE,gBAAR,CAAyBuE,SAAzB,EAAoC7D,EAApC,EAAwC4D,UAAxC;AACD;;AAED,SAASW,aAAT,CAAuBvJ,OAAvB,EAAgCoI,MAAhC,EAAwCS,SAAxC,EAAmDlD,OAAnD,EAA4D0C,kBAA5D,EAAgF;AAC9E,QAAMrD,EAAE,GAAGmD,WAAW,CAACC,MAAM,CAACS,SAAD,CAAP,EAAoBlD,OAApB,EAA6B0C,kBAA7B,CAAtB;;AAEA,MAAI,CAACrD,EAAL,EAAS;AACP;AACD;;AAEDhF,EAAAA,OAAO,CAAC6F,mBAAR,CAA4BgD,SAA5B,EAAuC7D,EAAvC,EAA2CwE,OAAO,CAACnB,kBAAD,CAAlD;AACA,SAAOD,MAAM,CAACS,SAAD,CAAN,CAAkB7D,EAAE,CAAC6B,QAArB,CAAP;AACD;;AAED,SAAS4C,wBAAT,CAAkCzJ,OAAlC,EAA2CoI,MAA3C,EAAmDS,SAAnD,EAA8Da,SAA9D,EAAyE;AACvE,QAAMC,iBAAiB,GAAGvB,MAAM,CAACS,SAAD,CAAN,IAAqB,EAA/C;AAEA7G,EAAAA,MAAM,CAACC,IAAP,CAAY0H,iBAAZ,EAA+BzH,OAA/B,CAAuC0H,UAAU,IAAI;AACnD,QAAIA,UAAU,CAACxJ,QAAX,CAAoBsJ,SAApB,CAAJ,EAAoC;AAClC,YAAMlC,KAAK,GAAGmC,iBAAiB,CAACC,UAAD,CAA/B;AAEAL,MAAAA,aAAa,CAACvJ,OAAD,EAAUoI,MAAV,EAAkBS,SAAlB,EAA6BrB,KAAK,CAACgB,eAAnC,EAAoDhB,KAAK,CAACa,kBAA1D,CAAb;AACD;AACF,GAND;AAOD;;AAED,SAASS,YAAT,CAAsBtB,KAAtB,EAA6B;AAC3B;AACAA,EAAAA,KAAK,GAAGA,KAAK,CAAC8B,OAAN,CAAc5C,cAAd,EAA8B,EAA9B,CAAR;AACA,SAAOI,YAAY,CAACU,KAAD,CAAZ,IAAuBA,KAA9B;AACD;;AAED,MAAMG,YAAY,GAAG;AACnBkC,EAAAA,EAAE,CAAC7J,OAAD,EAAUwH,KAAV,EAAiB7B,OAAjB,EAA0BgD,YAA1B,EAAwC;AACxCM,IAAAA,UAAU,CAACjJ,OAAD,EAAUwH,KAAV,EAAiB7B,OAAjB,EAA0BgD,YAA1B,EAAwC,KAAxC,CAAV;AACD,GAHkB;;AAKnBmB,EAAAA,GAAG,CAAC9J,OAAD,EAAUwH,KAAV,EAAiB7B,OAAjB,EAA0BgD,YAA1B,EAAwC;AACzCM,IAAAA,UAAU,CAACjJ,OAAD,EAAUwH,KAAV,EAAiB7B,OAAjB,EAA0BgD,YAA1B,EAAwC,IAAxC,CAAV;AACD,GAPkB;;AASnBf,EAAAA,GAAG,CAAC5H,OAAD,EAAU0I,iBAAV,EAA6B/C,OAA7B,EAAsCgD,YAAtC,EAAoD;AACrD,QAAI,OAAOD,iBAAP,KAA6B,QAA7B,IAAyC,CAAC1I,OAA9C,EAAuD;AACrD;AACD;;AAED,UAAM,CAAC4I,UAAD,EAAaJ,eAAb,EAA8BK,SAA9B,IAA2CJ,eAAe,CAACC,iBAAD,EAAoB/C,OAApB,EAA6BgD,YAA7B,CAAhE;AACA,UAAMoB,WAAW,GAAGlB,SAAS,KAAKH,iBAAlC;AACA,UAAMN,MAAM,GAAGd,QAAQ,CAACtH,OAAD,CAAvB;AACA,UAAMgK,WAAW,GAAGtB,iBAAiB,CAACrI,UAAlB,CAA6B,GAA7B,CAApB;;AAEA,QAAI,OAAOmI,eAAP,KAA2B,WAA/B,EAA4C;AAC1C;AACA,UAAI,CAACJ,MAAD,IAAW,CAACA,MAAM,CAACS,SAAD,CAAtB,EAAmC;AACjC;AACD;;AAEDU,MAAAA,aAAa,CAACvJ,OAAD,EAAUoI,MAAV,EAAkBS,SAAlB,EAA6BL,eAA7B,EAA8CI,UAAU,GAAGjD,OAAH,GAAa,IAArE,CAAb;AACA;AACD;;AAED,QAAIqE,WAAJ,EAAiB;AACfhI,MAAAA,MAAM,CAACC,IAAP,CAAYmG,MAAZ,EAAoBlG,OAApB,CAA4B+H,YAAY,IAAI;AAC1CR,QAAAA,wBAAwB,CAACzJ,OAAD,EAAUoI,MAAV,EAAkB6B,YAAlB,EAAgCvB,iBAAiB,CAACwB,KAAlB,CAAwB,CAAxB,CAAhC,CAAxB;AACD,OAFD;AAGD;;AAED,UAAMP,iBAAiB,GAAGvB,MAAM,CAACS,SAAD,CAAN,IAAqB,EAA/C;AACA7G,IAAAA,MAAM,CAACC,IAAP,CAAY0H,iBAAZ,EAA+BzH,OAA/B,CAAuCiI,WAAW,IAAI;AACpD,YAAMP,UAAU,GAAGO,WAAW,CAACb,OAAZ,CAAoB3C,aAApB,EAAmC,EAAnC,CAAnB;;AAEA,UAAI,CAACoD,WAAD,IAAgBrB,iBAAiB,CAACtI,QAAlB,CAA2BwJ,UAA3B,CAApB,EAA4D;AAC1D,cAAMpC,KAAK,GAAGmC,iBAAiB,CAACQ,WAAD,CAA/B;AAEAZ,QAAAA,aAAa,CAACvJ,OAAD,EAAUoI,MAAV,EAAkBS,SAAlB,EAA6BrB,KAAK,CAACgB,eAAnC,EAAoDhB,KAAK,CAACa,kBAA1D,CAAb;AACD;AACF,KARD;AASD,GA7CkB;;AA+CnB+B,EAAAA,OAAO,CAACpK,OAAD,EAAUwH,KAAV,EAAiB6C,IAAjB,EAAuB;AAC5B,QAAI,OAAO7C,KAAP,KAAiB,QAAjB,IAA6B,CAACxH,OAAlC,EAA2C;AACzC,aAAO,IAAP;AACD;;AAED,UAAM4E,CAAC,GAAGb,SAAS,EAAnB;AACA,UAAM8E,SAAS,GAAGC,YAAY,CAACtB,KAAD,CAA9B;AACA,UAAMuC,WAAW,GAAGvC,KAAK,KAAKqB,SAA9B;AACA,UAAME,QAAQ,GAAG7B,YAAY,CAAC8B,GAAb,CAAiBH,SAAjB,CAAjB;AAEA,QAAIyB,WAAJ;AACA,QAAIC,OAAO,GAAG,IAAd;AACA,QAAIC,cAAc,GAAG,IAArB;AACA,QAAIC,gBAAgB,GAAG,KAAvB;AACA,QAAIC,GAAG,GAAG,IAAV;;AAEA,QAAIX,WAAW,IAAInF,CAAnB,EAAsB;AACpB0F,MAAAA,WAAW,GAAG1F,CAAC,CAACtD,KAAF,CAAQkG,KAAR,EAAe6C,IAAf,CAAd;AAEAzF,MAAAA,CAAC,CAAC5E,OAAD,CAAD,CAAWoK,OAAX,CAAmBE,WAAnB;AACAC,MAAAA,OAAO,GAAG,CAACD,WAAW,CAACK,oBAAZ,EAAX;AACAH,MAAAA,cAAc,GAAG,CAACF,WAAW,CAACM,6BAAZ,EAAlB;AACAH,MAAAA,gBAAgB,GAAGH,WAAW,CAACO,kBAAZ,EAAnB;AACD;;AAED,QAAI9B,QAAJ,EAAc;AACZ2B,MAAAA,GAAG,GAAG7K,QAAQ,CAACiL,WAAT,CAAqB,YAArB,CAAN;AACAJ,MAAAA,GAAG,CAACK,SAAJ,CAAclC,SAAd,EAAyB0B,OAAzB,EAAkC,IAAlC;AACD,KAHD,MAGO;AACLG,MAAAA,GAAG,GAAG,IAAIM,WAAJ,CAAgBxD,KAAhB,EAAuB;AAC3B+C,QAAAA,OAD2B;AAE3BU,QAAAA,UAAU,EAAE;AAFe,OAAvB,CAAN;AAID,KAjC2B;;;AAoC5B,QAAI,OAAOZ,IAAP,KAAgB,WAApB,EAAiC;AAC/BrI,MAAAA,MAAM,CAACC,IAAP,CAAYoI,IAAZ,EAAkBnI,OAAlB,CAA0BgJ,GAAG,IAAI;AAC/BlJ,QAAAA,MAAM,CAACmJ,cAAP,CAAsBT,GAAtB,EAA2BQ,GAA3B,EAAgC;AAC9BE,UAAAA,GAAG,GAAG;AACJ,mBAAOf,IAAI,CAACa,GAAD,CAAX;AACD;;AAH6B,SAAhC;AAKD,OAND;AAOD;;AAED,QAAIT,gBAAJ,EAAsB;AACpBC,MAAAA,GAAG,CAACW,cAAJ;AACD;;AAED,QAAIb,cAAJ,EAAoB;AAClBxK,MAAAA,OAAO,CAACqB,aAAR,CAAsBqJ,GAAtB;AACD;;AAED,QAAIA,GAAG,CAACD,gBAAJ,IAAwB,OAAOH,WAAP,KAAuB,WAAnD,EAAgE;AAC9DA,MAAAA,WAAW,CAACe,cAAZ;AACD;;AAED,WAAOX,GAAP;AACD;;AA1GkB,CAArB;;AC/OA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA,MAAMY,UAAU,GAAG,IAAIC,GAAJ,EAAnB;AAEA,WAAe;AACbC,EAAAA,GAAG,CAACxL,OAAD,EAAUkL,GAAV,EAAeO,QAAf,EAAyB;AAC1B,QAAI,CAACH,UAAU,CAACtC,GAAX,CAAehJ,OAAf,CAAL,EAA8B;AAC5BsL,MAAAA,UAAU,CAACE,GAAX,CAAexL,OAAf,EAAwB,IAAIuL,GAAJ,EAAxB;AACD;;AAED,UAAMG,WAAW,GAAGJ,UAAU,CAACF,GAAX,CAAepL,OAAf,CAApB,CAL0B;AAQ1B;;AACA,QAAI,CAAC0L,WAAW,CAAC1C,GAAZ,CAAgBkC,GAAhB,CAAD,IAAyBQ,WAAW,CAACC,IAAZ,KAAqB,CAAlD,EAAqD;AACnD;AACAC,MAAAA,OAAO,CAACC,KAAR,CAAe,+EAA8EC,KAAK,CAACC,IAAN,CAAWL,WAAW,CAACzJ,IAAZ,EAAX,EAA+B,CAA/B,CAAkC,GAA/H;AACA;AACD;;AAEDyJ,IAAAA,WAAW,CAACF,GAAZ,CAAgBN,GAAhB,EAAqBO,QAArB;AACD,GAjBY;;AAmBbL,EAAAA,GAAG,CAACpL,OAAD,EAAUkL,GAAV,EAAe;AAChB,QAAII,UAAU,CAACtC,GAAX,CAAehJ,OAAf,CAAJ,EAA6B;AAC3B,aAAOsL,UAAU,CAACF,GAAX,CAAepL,OAAf,EAAwBoL,GAAxB,CAA4BF,GAA5B,KAAoC,IAA3C;AACD;;AAED,WAAO,IAAP;AACD,GAzBY;;AA2Bbc,EAAAA,MAAM,CAAChM,OAAD,EAAUkL,GAAV,EAAe;AACnB,QAAI,CAACI,UAAU,CAACtC,GAAX,CAAehJ,OAAf,CAAL,EAA8B;AAC5B;AACD;;AAED,UAAM0L,WAAW,GAAGJ,UAAU,CAACF,GAAX,CAAepL,OAAf,CAApB;AAEA0L,IAAAA,WAAW,CAACO,MAAZ,CAAmBf,GAAnB,EAPmB;;AAUnB,QAAIQ,WAAW,CAACC,IAAZ,KAAqB,CAAzB,EAA4B;AAC1BL,MAAAA,UAAU,CAACW,MAAX,CAAkBjM,OAAlB;AACD;AACF;;AAxCY,CAAf;;ACfA;AACA;AACA;AACA;AACA;AACA;AASA;AACA;AACA;AACA;AACA;;AAEA,MAAMkM,OAAO,GAAG,OAAhB;;AAEA,MAAMC,aAAN,CAAoB;AAClBC,EAAAA,WAAW,CAACpM,OAAD,EAAU;AACnBA,IAAAA,OAAO,GAAG0B,UAAU,CAAC1B,OAAD,CAApB;;AAEA,QAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,SAAKqM,QAAL,GAAgBrM,OAAhB;AACAsM,IAAAA,IAAI,CAACd,GAAL,CAAS,KAAKa,QAAd,EAAwB,KAAKD,WAAL,CAAiBG,QAAzC,EAAmD,IAAnD;AACD;;AAEDC,EAAAA,OAAO,GAAG;AACRF,IAAAA,IAAI,CAACN,MAAL,CAAY,KAAKK,QAAjB,EAA2B,KAAKD,WAAL,CAAiBG,QAA5C;AACA5E,IAAAA,YAAY,CAACC,GAAb,CAAiB,KAAKyE,QAAtB,EAAgC,KAAKD,WAAL,CAAiBK,SAAjD;AAEAzK,IAAAA,MAAM,CAAC0K,mBAAP,CAA2B,IAA3B,EAAiCxK,OAAjC,CAAyCyK,YAAY,IAAI;AACvD,WAAKA,YAAL,IAAqB,IAArB;AACD,KAFD;AAGD;;AAEDC,EAAAA,cAAc,CAACxI,QAAD,EAAWpE,OAAX,EAAoB6M,UAAU,GAAG,IAAjC,EAAuC;AACnDxH,IAAAA,sBAAsB,CAACjB,QAAD,EAAWpE,OAAX,EAAoB6M,UAApB,CAAtB;AACD;AAED;;;AAEkB,SAAXC,WAAW,CAAC9M,OAAD,EAAU;AAC1B,WAAOsM,IAAI,CAAClB,GAAL,CAAS1J,UAAU,CAAC1B,OAAD,CAAnB,EAA8B,KAAKuM,QAAnC,CAAP;AACD;;AAEyB,SAAnBQ,mBAAmB,CAAC/M,OAAD,EAAU8B,MAAM,GAAG,EAAnB,EAAuB;AAC/C,WAAO,KAAKgL,WAAL,CAAiB9M,OAAjB,KAA6B,IAAI,IAAJ,CAASA,OAAT,EAAkB,OAAO8B,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,IAAxD,CAApC;AACD;;AAEiB,aAAPoK,OAAO,GAAG;AACnB,WAAOA,OAAP;AACD;;AAEc,aAAJpH,IAAI,GAAG;AAChB,UAAM,IAAIkI,KAAJ,CAAU,qEAAV,CAAN;AACD;;AAEkB,aAART,QAAQ,GAAG;AACpB,WAAQ,MAAK,KAAKzH,IAAK,EAAvB;AACD;;AAEmB,aAAT2H,SAAS,GAAG;AACrB,WAAQ,IAAG,KAAKF,QAAS,EAAzB;AACD;;AAjDiB;;ACtBpB;AACA;AACA;AACA;AACA;AACA;;AAKA,MAAMU,oBAAoB,GAAG,CAACC,SAAD,EAAYC,MAAM,GAAG,MAArB,KAAgC;AAC3D,QAAMC,UAAU,GAAI,gBAAeF,SAAS,CAACT,SAAU,EAAvD;AACA,QAAM5H,IAAI,GAAGqI,SAAS,CAACpI,IAAvB;AAEA6C,EAAAA,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuN,UAA1B,EAAuC,qBAAoBvI,IAAK,IAAhE,EAAqE,UAAU2C,KAAV,EAAiB;AACpF,QAAI,CAAC,GAAD,EAAM,MAAN,EAAcpH,QAAd,CAAuB,KAAKiN,OAA5B,CAAJ,EAA0C;AACxC7F,MAAAA,KAAK,CAAC6D,cAAN;AACD;;AAED,QAAIvI,UAAU,CAAC,IAAD,CAAd,EAAsB;AACpB;AACD;;AAED,UAAM8C,MAAM,GAAGlF,sBAAsB,CAAC,IAAD,CAAtB,IAAgC,KAAK4M,OAAL,CAAc,IAAGzI,IAAK,EAAtB,CAA/C;AACA,UAAM4G,QAAQ,GAAGyB,SAAS,CAACH,mBAAV,CAA8BnH,MAA9B,CAAjB,CAVoF;;AAapF6F,IAAAA,QAAQ,CAAC0B,MAAD,CAAR;AACD,GAdD;AAeD,CAnBD;;ACVA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;;AAEA,MAAMrI,MAAI,GAAG,OAAb;AACA,MAAMyH,UAAQ,GAAG,UAAjB;AACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;AAEA,MAAMgB,WAAW,GAAI,QAAOd,WAAU,EAAtC;AACA,MAAMe,YAAY,GAAI,SAAQf,WAAU,EAAxC;AACA,MAAMgB,iBAAe,GAAG,MAAxB;AACA,MAAMC,iBAAe,GAAG,MAAxB;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,KAAN,SAAoBxB,aAApB,CAAkC;AAChC;AAEe,aAAJrH,IAAI,GAAG;AAChB,WAAOA,MAAP;AACD,GAL+B;;;AAShC8I,EAAAA,KAAK,GAAG;AACN,UAAMC,UAAU,GAAGlG,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCkB,WAApC,CAAnB;;AAEA,QAAIM,UAAU,CAACpD,gBAAf,EAAiC;AAC/B;AACD;;AAED,SAAK4B,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0B,iBAA/B;;AAEA,UAAMb,UAAU,GAAG,KAAKR,QAAL,CAAcpJ,SAAd,CAAwBC,QAAxB,CAAiCuK,iBAAjC,CAAnB;;AACA,SAAKb,cAAL,CAAoB,MAAM,KAAKkB,eAAL,EAA1B,EAAkD,KAAKzB,QAAvD,EAAiEQ,UAAjE;AACD,GApB+B;;;AAuBhCiB,EAAAA,eAAe,GAAG;AAChB,SAAKzB,QAAL,CAAcL,MAAd;;AACArE,IAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCmB,YAApC;AACA,SAAKhB,OAAL;AACD,GA3B+B;;;AA+BV,SAAfvH,eAAe,CAACnD,MAAD,EAAS;AAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;AAC3B,YAAMC,IAAI,GAAGL,KAAK,CAACZ,mBAAN,CAA0B,IAA1B,CAAb;;AAEA,UAAI,OAAOjL,MAAP,KAAkB,QAAtB,EAAgC;AAC9B;AACD;;AAED,UAAIkM,IAAI,CAAClM,MAAD,CAAJ,KAAiB3C,SAAjB,IAA8B2C,MAAM,CAACzB,UAAP,CAAkB,GAAlB,CAA9B,IAAwDyB,MAAM,KAAK,aAAvE,EAAsF;AACpF,cAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;AACD;;AAEDkM,MAAAA,IAAI,CAAClM,MAAD,CAAJ,CAAa,IAAb;AACD,KAZM,CAAP;AAaD;;AA7C+B;AAgDlC;AACA;AACA;AACA;AACA;;;AAEAmL,oBAAoB,CAACU,KAAD,EAAQ,OAAR,CAApB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEAjJ,kBAAkB,CAACiJ,KAAD,CAAlB;;AC/FA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;;AAEA,MAAM7I,MAAI,GAAG,QAAb;AACA,MAAMyH,UAAQ,GAAG,WAAjB;AACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;AACA,MAAM0B,cAAY,GAAG,WAArB;AAEA,MAAMC,mBAAiB,GAAG,QAA1B;AAEA,MAAMC,sBAAoB,GAAG,2BAA7B;AAEA,MAAMC,sBAAoB,GAAI,QAAO3B,WAAU,GAAEwB,cAAa,EAA9D;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAMI,MAAN,SAAqBlC,aAArB,CAAmC;AACjC;AAEe,aAAJrH,IAAI,GAAG;AAChB,WAAOA,MAAP;AACD,GALgC;;;AASjCwJ,EAAAA,MAAM,GAAG;AACP;AACA,SAAKjC,QAAL,CAAckC,YAAd,CAA2B,cAA3B,EAA2C,KAAKlC,QAAL,CAAcpJ,SAAd,CAAwBqL,MAAxB,CAA+BJ,mBAA/B,CAA3C;AACD,GAZgC;;;AAgBX,SAAfjJ,eAAe,CAACnD,MAAD,EAAS;AAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;AAC3B,YAAMC,IAAI,GAAGK,MAAM,CAACtB,mBAAP,CAA2B,IAA3B,CAAb;;AAEA,UAAIjL,MAAM,KAAK,QAAf,EAAyB;AACvBkM,QAAAA,IAAI,CAAClM,MAAD,CAAJ;AACD;AACF,KANM,CAAP;AAOD;;AAxBgC;AA2BnC;AACA;AACA;AACA;AACA;;;AAEA6F,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,sBAA1B,EAAgDD,sBAAhD,EAAsE3G,KAAK,IAAI;AAC7EA,EAAAA,KAAK,CAAC6D,cAAN;AAEA,QAAMmD,MAAM,GAAGhH,KAAK,CAAC5B,MAAN,CAAa0H,OAAb,CAAqBa,sBAArB,CAAf;AACA,QAAMH,IAAI,GAAGK,MAAM,CAACtB,mBAAP,CAA2ByB,MAA3B,CAAb;AAEAR,EAAAA,IAAI,CAACM,MAAL;AACD,CAPD;AASA;AACA;AACA;AACA;AACA;AACA;;AAEA5J,kBAAkB,CAAC2J,MAAD,CAAlB;;ACnFA;AACA;AACA;AACA;AACA;AACA;AAEA,SAASI,aAAT,CAAuBC,GAAvB,EAA4B;AAC1B,MAAIA,GAAG,KAAK,MAAZ,EAAoB;AAClB,WAAO,IAAP;AACD;;AAED,MAAIA,GAAG,KAAK,OAAZ,EAAqB;AACnB,WAAO,KAAP;AACD;;AAED,MAAIA,GAAG,KAAKzN,MAAM,CAACyN,GAAD,CAAN,CAAYtP,QAAZ,EAAZ,EAAoC;AAClC,WAAO6B,MAAM,CAACyN,GAAD,CAAb;AACD;;AAED,MAAIA,GAAG,KAAK,EAAR,IAAcA,GAAG,KAAK,MAA1B,EAAkC;AAChC,WAAO,IAAP;AACD;;AAED,SAAOA,GAAP;AACD;;AAED,SAASC,gBAAT,CAA0BzD,GAA1B,EAA+B;AAC7B,SAAOA,GAAG,CAAC5B,OAAJ,CAAY,QAAZ,EAAsBsF,GAAG,IAAK,IAAGA,GAAG,CAACrP,WAAJ,EAAkB,EAAnD,CAAP;AACD;;AAED,MAAMsP,WAAW,GAAG;AAClBC,EAAAA,gBAAgB,CAAC9O,OAAD,EAAUkL,GAAV,EAAe7I,KAAf,EAAsB;AACpCrC,IAAAA,OAAO,CAACuO,YAAR,CAAsB,WAAUI,gBAAgB,CAACzD,GAAD,CAAM,EAAtD,EAAyD7I,KAAzD;AACD,GAHiB;;AAKlB0M,EAAAA,mBAAmB,CAAC/O,OAAD,EAAUkL,GAAV,EAAe;AAChClL,IAAAA,OAAO,CAACgP,eAAR,CAAyB,WAAUL,gBAAgB,CAACzD,GAAD,CAAM,EAAzD;AACD,GAPiB;;AASlB+D,EAAAA,iBAAiB,CAACjP,OAAD,EAAU;AACzB,QAAI,CAACA,OAAL,EAAc;AACZ,aAAO,EAAP;AACD;;AAED,UAAMkP,UAAU,GAAG,EAAnB;AAEAlN,IAAAA,MAAM,CAACC,IAAP,CAAYjC,OAAO,CAACmP,OAApB,EACGC,MADH,CACUlE,GAAG,IAAIA,GAAG,CAAC7K,UAAJ,CAAe,IAAf,CADjB,EAEG6B,OAFH,CAEWgJ,GAAG,IAAI;AACd,UAAImE,OAAO,GAAGnE,GAAG,CAAC5B,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAd;AACA+F,MAAAA,OAAO,GAAGA,OAAO,CAACC,MAAR,CAAe,CAAf,EAAkB/P,WAAlB,KAAkC8P,OAAO,CAACnF,KAAR,CAAc,CAAd,EAAiBmF,OAAO,CAAC1N,MAAzB,CAA5C;AACAuN,MAAAA,UAAU,CAACG,OAAD,CAAV,GAAsBZ,aAAa,CAACzO,OAAO,CAACmP,OAAR,CAAgBjE,GAAhB,CAAD,CAAnC;AACD,KANH;AAQA,WAAOgE,UAAP;AACD,GAzBiB;;AA2BlBK,EAAAA,gBAAgB,CAACvP,OAAD,EAAUkL,GAAV,EAAe;AAC7B,WAAOuD,aAAa,CAACzO,OAAO,CAACE,YAAR,CAAsB,WAAUyO,gBAAgB,CAACzD,GAAD,CAAM,EAAtD,CAAD,CAApB;AACD,GA7BiB;;AA+BlBsE,EAAAA,MAAM,CAACxP,OAAD,EAAU;AACd,UAAMyP,IAAI,GAAGzP,OAAO,CAAC0P,qBAAR,EAAb;AAEA,WAAO;AACLC,MAAAA,GAAG,EAAEF,IAAI,CAACE,GAAL,GAAW7O,MAAM,CAAC8O,WADlB;AAELC,MAAAA,IAAI,EAAEJ,IAAI,CAACI,IAAL,GAAY/O,MAAM,CAACgP;AAFpB,KAAP;AAID,GAtCiB;;AAwClBC,EAAAA,QAAQ,CAAC/P,OAAD,EAAU;AAChB,WAAO;AACL2P,MAAAA,GAAG,EAAE3P,OAAO,CAACgQ,SADR;AAELH,MAAAA,IAAI,EAAE7P,OAAO,CAACiQ;AAFT,KAAP;AAID;;AA7CiB,CAApB;;AC/BA;AACA;AACA;AACA;AACA;AACA;AAUA,MAAMC,SAAS,GAAG,CAAlB;AAEA,MAAMC,cAAc,GAAG;AACrBC,EAAAA,IAAI,CAACnQ,QAAD,EAAWD,OAAO,GAAGH,QAAQ,CAACyD,eAA9B,EAA+C;AACjD,WAAO,GAAG+M,MAAH,CAAU,GAAGC,OAAO,CAACC,SAAR,CAAkBtI,gBAAlB,CAAmC5I,IAAnC,CAAwCW,OAAxC,EAAiDC,QAAjD,CAAb,CAAP;AACD,GAHoB;;AAKrBuQ,EAAAA,OAAO,CAACvQ,QAAD,EAAWD,OAAO,GAAGH,QAAQ,CAACyD,eAA9B,EAA+C;AACpD,WAAOgN,OAAO,CAACC,SAAR,CAAkB9P,aAAlB,CAAgCpB,IAAhC,CAAqCW,OAArC,EAA8CC,QAA9C,CAAP;AACD,GAPoB;;AASrBwQ,EAAAA,QAAQ,CAACzQ,OAAD,EAAUC,QAAV,EAAoB;AAC1B,WAAO,GAAGoQ,MAAH,CAAU,GAAGrQ,OAAO,CAACyQ,QAArB,EACJrB,MADI,CACGsB,KAAK,IAAIA,KAAK,CAACC,OAAN,CAAc1Q,QAAd,CADZ,CAAP;AAED,GAZoB;;AAcrB2Q,EAAAA,OAAO,CAAC5Q,OAAD,EAAUC,QAAV,EAAoB;AACzB,UAAM2Q,OAAO,GAAG,EAAhB;AAEA,QAAIC,QAAQ,GAAG7Q,OAAO,CAAC2D,UAAvB;;AAEA,WAAOkN,QAAQ,IAAIA,QAAQ,CAACpP,QAAT,KAAsBsB,IAAI,CAACC,YAAvC,IAAuD6N,QAAQ,CAACpP,QAAT,KAAsByO,SAApF,EAA+F;AAC7F,UAAIW,QAAQ,CAACF,OAAT,CAAiB1Q,QAAjB,CAAJ,EAAgC;AAC9B2Q,QAAAA,OAAO,CAACrM,IAAR,CAAasM,QAAb;AACD;;AAEDA,MAAAA,QAAQ,GAAGA,QAAQ,CAAClN,UAApB;AACD;;AAED,WAAOiN,OAAP;AACD,GA5BoB;;AA8BrBE,EAAAA,IAAI,CAAC9Q,OAAD,EAAUC,QAAV,EAAoB;AACtB,QAAI8Q,QAAQ,GAAG/Q,OAAO,CAACgR,sBAAvB;;AAEA,WAAOD,QAAP,EAAiB;AACf,UAAIA,QAAQ,CAACJ,OAAT,CAAiB1Q,QAAjB,CAAJ,EAAgC;AAC9B,eAAO,CAAC8Q,QAAD,CAAP;AACD;;AAEDA,MAAAA,QAAQ,GAAGA,QAAQ,CAACC,sBAApB;AACD;;AAED,WAAO,EAAP;AACD,GA1CoB;;AA4CrBC,EAAAA,IAAI,CAACjR,OAAD,EAAUC,QAAV,EAAoB;AACtB,QAAIgR,IAAI,GAAGjR,OAAO,CAACkR,kBAAnB;;AAEA,WAAOD,IAAP,EAAa;AACX,UAAIA,IAAI,CAACN,OAAL,CAAa1Q,QAAb,CAAJ,EAA4B;AAC1B,eAAO,CAACgR,IAAD,CAAP;AACD;;AAEDA,MAAAA,IAAI,GAAGA,IAAI,CAACC,kBAAZ;AACD;;AAED,WAAO,EAAP;AACD,GAxDoB;;AA0DrBC,EAAAA,iBAAiB,CAACnR,OAAD,EAAU;AACzB,UAAMoR,UAAU,GAAG,CACjB,GADiB,EAEjB,QAFiB,EAGjB,OAHiB,EAIjB,UAJiB,EAKjB,QALiB,EAMjB,SANiB,EAOjB,YAPiB,EAQjB,0BARiB,EASjBC,GATiB,CASbpR,QAAQ,IAAK,GAAEA,QAAS,uBATX,EASmCqR,IATnC,CASwC,IATxC,CAAnB;AAWA,WAAO,KAAKlB,IAAL,CAAUgB,UAAV,EAAsBpR,OAAtB,EAA+BoP,MAA/B,CAAsCmC,EAAE,IAAI,CAACzO,UAAU,CAACyO,EAAD,CAAX,IAAmB5O,SAAS,CAAC4O,EAAD,CAAxE,CAAP;AACD;;AAvEoB,CAAvB;;ACjBA;AACA;AACA;AACA;AACA;AACA;AAiBA;AACA;AACA;AACA;AACA;;AAEA,MAAMzM,MAAI,GAAG,UAAb;AACA,MAAMyH,UAAQ,GAAG,aAAjB;AACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;AACA,MAAM0B,cAAY,GAAG,WAArB;AAEA,MAAMuD,cAAc,GAAG,WAAvB;AACA,MAAMC,eAAe,GAAG,YAAxB;AACA,MAAMC,sBAAsB,GAAG,GAA/B;;AACA,MAAMC,eAAe,GAAG,EAAxB;AAEA,MAAMC,SAAO,GAAG;AACdC,EAAAA,QAAQ,EAAE,IADI;AAEdC,EAAAA,QAAQ,EAAE,IAFI;AAGdC,EAAAA,KAAK,EAAE,KAHO;AAIdC,EAAAA,KAAK,EAAE,OAJO;AAKdC,EAAAA,IAAI,EAAE,IALQ;AAMdC,EAAAA,KAAK,EAAE;AANO,CAAhB;AASA,MAAMC,aAAW,GAAG;AAClBN,EAAAA,QAAQ,EAAE,kBADQ;AAElBC,EAAAA,QAAQ,EAAE,SAFQ;AAGlBC,EAAAA,KAAK,EAAE,kBAHW;AAIlBC,EAAAA,KAAK,EAAE,kBAJW;AAKlBC,EAAAA,IAAI,EAAE,SALY;AAMlBC,EAAAA,KAAK,EAAE;AANW,CAApB;AASA,MAAME,UAAU,GAAG,MAAnB;AACA,MAAMC,UAAU,GAAG,MAAnB;AACA,MAAMC,cAAc,GAAG,MAAvB;AACA,MAAMC,eAAe,GAAG,OAAxB;AAEA,MAAMC,gBAAgB,GAAG;AACvB,GAAChB,cAAD,GAAkBe,eADK;AAEvB,GAACd,eAAD,GAAmBa;AAFI,CAAzB;AAKA,MAAMG,WAAW,GAAI,QAAOhG,WAAU,EAAtC;AACA,MAAMiG,UAAU,GAAI,OAAMjG,WAAU,EAApC;AACA,MAAMkG,aAAa,GAAI,UAASlG,WAAU,EAA1C;AACA,MAAMmG,gBAAgB,GAAI,aAAYnG,WAAU,EAAhD;AACA,MAAMoG,gBAAgB,GAAI,aAAYpG,WAAU,EAAhD;AACA,MAAMqG,gBAAgB,GAAI,aAAYrG,WAAU,EAAhD;AACA,MAAMsG,eAAe,GAAI,YAAWtG,WAAU,EAA9C;AACA,MAAMuG,cAAc,GAAI,WAAUvG,WAAU,EAA5C;AACA,MAAMwG,iBAAiB,GAAI,cAAaxG,WAAU,EAAlD;AACA,MAAMyG,eAAe,GAAI,YAAWzG,WAAU,EAA9C;AACA,MAAM0G,gBAAgB,GAAI,YAAW1G,WAAU,EAA/C;AACA,MAAM2G,qBAAmB,GAAI,OAAM3G,WAAU,GAAEwB,cAAa,EAA5D;AACA,MAAMG,sBAAoB,GAAI,QAAO3B,WAAU,GAAEwB,cAAa,EAA9D;AAEA,MAAMoF,mBAAmB,GAAG,UAA5B;AACA,MAAMnF,mBAAiB,GAAG,QAA1B;AACA,MAAMoF,gBAAgB,GAAG,OAAzB;AACA,MAAMC,cAAc,GAAG,mBAAvB;AACA,MAAMC,gBAAgB,GAAG,qBAAzB;AACA,MAAMC,eAAe,GAAG,oBAAxB;AACA,MAAMC,eAAe,GAAG,oBAAxB;AACA,MAAMC,wBAAwB,GAAG,eAAjC;AAEA,MAAMC,iBAAe,GAAG,SAAxB;AACA,MAAMC,oBAAoB,GAAG,uBAA7B;AACA,MAAMC,aAAa,GAAG,gBAAtB;AACA,MAAMC,iBAAiB,GAAG,oBAA1B;AACA,MAAMC,kBAAkB,GAAG,0CAA3B;AACA,MAAMC,mBAAmB,GAAG,sBAA5B;AACA,MAAMC,kBAAkB,GAAG,kBAA3B;AACA,MAAMC,mBAAmB,GAAG,qCAA5B;AACA,MAAMC,kBAAkB,GAAG,2BAA3B;AAEA,MAAMC,kBAAkB,GAAG,OAA3B;AACA,MAAMC,gBAAgB,GAAG,KAAzB;AAEA;AACA;AACA;AACA;AACA;;AACA,MAAMC,QAAN,SAAuBpI,aAAvB,CAAqC;AACnCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;AAC3B,UAAM9B,OAAN;AAEA,SAAKwU,MAAL,GAAc,IAAd;AACA,SAAKC,SAAL,GAAiB,IAAjB;AACA,SAAKC,cAAL,GAAsB,IAAtB;AACA,SAAKC,SAAL,GAAiB,KAAjB;AACA,SAAKC,UAAL,GAAkB,KAAlB;AACA,SAAKC,YAAL,GAAoB,IAApB;AACA,SAAKC,WAAL,GAAmB,CAAnB;AACA,SAAKC,WAAL,GAAmB,CAAnB;AAEA,SAAKC,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;AACA,SAAKoT,kBAAL,GAA0B/E,cAAc,CAACK,OAAf,CAAuByD,mBAAvB,EAA4C,KAAK5H,QAAjD,CAA1B;AACA,SAAK8I,eAAL,GAAuB,kBAAkBtV,QAAQ,CAACyD,eAA3B,IAA8C8R,SAAS,CAACC,cAAV,GAA2B,CAAhG;AACA,SAAKC,aAAL,GAAqB9L,OAAO,CAAC1I,MAAM,CAACyU,YAAR,CAA5B;;AAEA,SAAKC,kBAAL;AACD,GAnBkC;;;AAuBjB,aAAP5D,OAAO,GAAG;AACnB,WAAOA,SAAP;AACD;;AAEc,aAAJ9M,IAAI,GAAG;AAChB,WAAOA,MAAP;AACD,GA7BkC;;;AAiCnCmM,EAAAA,IAAI,GAAG;AACL,SAAKwE,MAAL,CAAYrD,UAAZ;AACD;;AAEDsD,EAAAA,eAAe,GAAG;AAChB;AACA;AACA,QAAI,CAAC7V,QAAQ,CAAC8V,MAAV,IAAoBhT,SAAS,CAAC,KAAK0J,QAAN,CAAjC,EAAkD;AAChD,WAAK4E,IAAL;AACD;AACF;;AAEDH,EAAAA,IAAI,GAAG;AACL,SAAK2E,MAAL,CAAYpD,UAAZ;AACD;;AAEDL,EAAAA,KAAK,CAACxK,KAAD,EAAQ;AACX,QAAI,CAACA,KAAL,EAAY;AACV,WAAKmN,SAAL,GAAiB,IAAjB;AACD;;AAED,QAAIxE,cAAc,CAACK,OAAf,CAAuBwD,kBAAvB,EAA2C,KAAK3H,QAAhD,CAAJ,EAA+D;AAC7DjL,MAAAA,oBAAoB,CAAC,KAAKiL,QAAN,CAApB;AACA,WAAKuJ,KAAL,CAAW,IAAX;AACD;;AAEDC,IAAAA,aAAa,CAAC,KAAKpB,SAAN,CAAb;AACA,SAAKA,SAAL,GAAiB,IAAjB;AACD;;AAEDmB,EAAAA,KAAK,CAACpO,KAAD,EAAQ;AACX,QAAI,CAACA,KAAL,EAAY;AACV,WAAKmN,SAAL,GAAiB,KAAjB;AACD;;AAED,QAAI,KAAKF,SAAT,EAAoB;AAClBoB,MAAAA,aAAa,CAAC,KAAKpB,SAAN,CAAb;AACA,WAAKA,SAAL,GAAiB,IAAjB;AACD;;AAED,QAAI,KAAKO,OAAL,IAAgB,KAAKA,OAAL,CAAanD,QAA7B,IAAyC,CAAC,KAAK8C,SAAnD,EAA8D;AAC5D,WAAKmB,eAAL;;AAEA,WAAKrB,SAAL,GAAiBsB,WAAW,CAC1B,CAAClW,QAAQ,CAACmW,eAAT,GAA2B,KAAKN,eAAhC,GAAkD,KAAKzE,IAAxD,EAA8DgF,IAA9D,CAAmE,IAAnE,CAD0B,EAE1B,KAAKjB,OAAL,CAAanD,QAFa,CAA5B;AAID;AACF;;AAEDqE,EAAAA,EAAE,CAAC9P,KAAD,EAAQ;AACR,SAAKsO,cAAL,GAAsBvE,cAAc,CAACK,OAAf,CAAuBqD,oBAAvB,EAA6C,KAAKxH,QAAlD,CAAtB;;AACA,UAAM8J,WAAW,GAAG,KAAKC,aAAL,CAAmB,KAAK1B,cAAxB,CAApB;;AAEA,QAAItO,KAAK,GAAG,KAAKoO,MAAL,CAAY7S,MAAZ,GAAqB,CAA7B,IAAkCyE,KAAK,GAAG,CAA9C,EAAiD;AAC/C;AACD;;AAED,QAAI,KAAKwO,UAAT,EAAqB;AACnBjN,MAAAA,YAAY,CAACmC,GAAb,CAAiB,KAAKuC,QAAtB,EAAgCqG,UAAhC,EAA4C,MAAM,KAAKwD,EAAL,CAAQ9P,KAAR,CAAlD;AACA;AACD;;AAED,QAAI+P,WAAW,KAAK/P,KAApB,EAA2B;AACzB,WAAK4L,KAAL;AACA,WAAK4D,KAAL;AACA;AACD;;AAED,UAAMS,KAAK,GAAGjQ,KAAK,GAAG+P,WAAR,GACZ/D,UADY,GAEZC,UAFF;;AAIA,SAAKoD,MAAL,CAAYY,KAAZ,EAAmB,KAAK7B,MAAL,CAAYpO,KAAZ,CAAnB;AACD,GA3GkC;;;AA+GnC6O,EAAAA,UAAU,CAACnT,MAAD,EAAS;AACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,SADI;AAEP,SAAG/C,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAFI;AAGP,UAAI,OAAOvK,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,EAA1C;AAHO,KAAT;AAKAF,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAeqQ,aAAf,CAAf;AACA,WAAOrQ,MAAP;AACD;;AAEDwU,EAAAA,YAAY,GAAG;AACb,UAAMC,SAAS,GAAG7W,IAAI,CAAC8W,GAAL,CAAS,KAAKzB,WAAd,CAAlB;;AAEA,QAAIwB,SAAS,IAAI5E,eAAjB,EAAkC;AAChC;AACD;;AAED,UAAM8E,SAAS,GAAGF,SAAS,GAAG,KAAKxB,WAAnC;AAEA,SAAKA,WAAL,GAAmB,CAAnB;;AAEA,QAAI,CAAC0B,SAAL,EAAgB;AACd;AACD;;AAED,SAAKhB,MAAL,CAAYgB,SAAS,GAAG,CAAZ,GAAgBlE,eAAhB,GAAkCD,cAA9C;AACD;;AAEDkD,EAAAA,kBAAkB,GAAG;AACnB,QAAI,KAAKR,OAAL,CAAalD,QAAjB,EAA2B;AACzBnK,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BsG,aAA/B,EAA8CnL,KAAK,IAAI,KAAKkP,QAAL,CAAclP,KAAd,CAAvD;AACD;;AAED,QAAI,KAAKwN,OAAL,CAAahD,KAAb,KAAuB,OAA3B,EAAoC;AAClCrK,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BuG,gBAA/B,EAAiDpL,KAAK,IAAI,KAAKwK,KAAL,CAAWxK,KAAX,CAA1D;AACAG,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BwG,gBAA/B,EAAiDrL,KAAK,IAAI,KAAKoO,KAAL,CAAWpO,KAAX,CAA1D;AACD;;AAED,QAAI,KAAKwN,OAAL,CAAa9C,KAAb,IAAsB,KAAKiD,eAA/B,EAAgD;AAC9C,WAAKwB,uBAAL;AACD;AACF;;AAEDA,EAAAA,uBAAuB,GAAG;AACxB,UAAMC,KAAK,GAAGpP,KAAK,IAAI;AACrB,UAAI,KAAK8N,aAAL,KAAuB9N,KAAK,CAACqP,WAAN,KAAsBvC,gBAAtB,IAA0C9M,KAAK,CAACqP,WAAN,KAAsBxC,kBAAvF,CAAJ,EAAgH;AAC9G,aAAKS,WAAL,GAAmBtN,KAAK,CAACsP,OAAzB;AACD,OAFD,MAEO,IAAI,CAAC,KAAKxB,aAAV,EAAyB;AAC9B,aAAKR,WAAL,GAAmBtN,KAAK,CAACuP,OAAN,CAAc,CAAd,EAAiBD,OAApC;AACD;AACF,KAND;;AAQA,UAAME,IAAI,GAAGxP,KAAK,IAAI;AACpB;AACA,WAAKuN,WAAL,GAAmBvN,KAAK,CAACuP,OAAN,IAAiBvP,KAAK,CAACuP,OAAN,CAAcpV,MAAd,GAAuB,CAAxC,GACjB,CADiB,GAEjB6F,KAAK,CAACuP,OAAN,CAAc,CAAd,EAAiBD,OAAjB,GAA2B,KAAKhC,WAFlC;AAGD,KALD;;AAOA,UAAMmC,GAAG,GAAGzP,KAAK,IAAI;AACnB,UAAI,KAAK8N,aAAL,KAAuB9N,KAAK,CAACqP,WAAN,KAAsBvC,gBAAtB,IAA0C9M,KAAK,CAACqP,WAAN,KAAsBxC,kBAAvF,CAAJ,EAAgH;AAC9G,aAAKU,WAAL,GAAmBvN,KAAK,CAACsP,OAAN,GAAgB,KAAKhC,WAAxC;AACD;;AAED,WAAKwB,YAAL;;AACA,UAAI,KAAKtB,OAAL,CAAahD,KAAb,KAAuB,OAA3B,EAAoC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,aAAKA,KAAL;;AACA,YAAI,KAAK6C,YAAT,EAAuB;AACrBqC,UAAAA,YAAY,CAAC,KAAKrC,YAAN,CAAZ;AACD;;AAED,aAAKA,YAAL,GAAoB/O,UAAU,CAAC0B,KAAK,IAAI,KAAKoO,KAAL,CAAWpO,KAAX,CAAV,EAA6BkK,sBAAsB,GAAG,KAAKsD,OAAL,CAAanD,QAAnE,CAA9B;AACD;AACF,KAtBD;;AAwBA1B,IAAAA,cAAc,CAACC,IAAf,CAAoB2D,iBAApB,EAAuC,KAAK1H,QAA5C,EAAsDnK,OAAtD,CAA8DiV,OAAO,IAAI;AACvExP,MAAAA,YAAY,CAACkC,EAAb,CAAgBsN,OAAhB,EAAyBhE,gBAAzB,EAA2CiE,CAAC,IAAIA,CAAC,CAAC/L,cAAF,EAAhD;AACD,KAFD;;AAIA,QAAI,KAAKiK,aAAT,EAAwB;AACtB3N,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B4G,iBAA/B,EAAkDzL,KAAK,IAAIoP,KAAK,CAACpP,KAAD,CAAhE;AACAG,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B6G,eAA/B,EAAgD1L,KAAK,IAAIyP,GAAG,CAACzP,KAAD,CAA5D;;AAEA,WAAK6E,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4B1D,wBAA5B;AACD,KALD,MAKO;AACLhM,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+ByG,gBAA/B,EAAiDtL,KAAK,IAAIoP,KAAK,CAACpP,KAAD,CAA/D;AACAG,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B0G,eAA/B,EAAgDvL,KAAK,IAAIwP,IAAI,CAACxP,KAAD,CAA7D;AACAG,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B2G,cAA/B,EAA+CxL,KAAK,IAAIyP,GAAG,CAACzP,KAAD,CAA3D;AACD;AACF;;AAEDkP,EAAAA,QAAQ,CAAClP,KAAD,EAAQ;AACd,QAAI,kBAAkBhF,IAAlB,CAAuBgF,KAAK,CAAC5B,MAAN,CAAayH,OAApC,CAAJ,EAAkD;AAChD;AACD;;AAED,UAAMoJ,SAAS,GAAGjE,gBAAgB,CAAChL,KAAK,CAAC0D,GAAP,CAAlC;;AACA,QAAIuL,SAAJ,EAAe;AACbjP,MAAAA,KAAK,CAAC6D,cAAN;;AACA,WAAKoK,MAAL,CAAYgB,SAAZ;AACD;AACF;;AAEDL,EAAAA,aAAa,CAACpW,OAAD,EAAU;AACrB,SAAKwU,MAAL,GAAcxU,OAAO,IAAIA,OAAO,CAAC2D,UAAnB,GACZwM,cAAc,CAACC,IAAf,CAAoB0D,aAApB,EAAmC9T,OAAO,CAAC2D,UAA3C,CADY,GAEZ,EAFF;AAIA,WAAO,KAAK6Q,MAAL,CAAYnO,OAAZ,CAAoBrG,OAApB,CAAP;AACD;;AAEDsX,EAAAA,eAAe,CAACjB,KAAD,EAAQpQ,aAAR,EAAuB;AACpC,UAAMsR,MAAM,GAAGlB,KAAK,KAAKjE,UAAzB;AACA,WAAOrM,oBAAoB,CAAC,KAAKyO,MAAN,EAAcvO,aAAd,EAA6BsR,MAA7B,EAAqC,KAAKvC,OAAL,CAAa/C,IAAlD,CAA3B;AACD;;AAEDuF,EAAAA,kBAAkB,CAACrO,aAAD,EAAgBsO,kBAAhB,EAAoC;AACpD,UAAMC,WAAW,GAAG,KAAKtB,aAAL,CAAmBjN,aAAnB,CAApB;;AACA,UAAMwO,SAAS,GAAG,KAAKvB,aAAL,CAAmBjG,cAAc,CAACK,OAAf,CAAuBqD,oBAAvB,EAA6C,KAAKxH,QAAlD,CAAnB,CAAlB;;AAEA,WAAO1E,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCoG,WAApC,EAAiD;AACtDtJ,MAAAA,aADsD;AAEtDsN,MAAAA,SAAS,EAAEgB,kBAF2C;AAGtD1L,MAAAA,IAAI,EAAE4L,SAHgD;AAItDzB,MAAAA,EAAE,EAAEwB;AAJkD,KAAjD,CAAP;AAMD;;AAEDE,EAAAA,0BAA0B,CAAC5X,OAAD,EAAU;AAClC,QAAI,KAAKkV,kBAAT,EAA6B;AAC3B,YAAM2C,eAAe,GAAG1H,cAAc,CAACK,OAAf,CAAuBoD,iBAAvB,EAAwC,KAAKsB,kBAA7C,CAAxB;AAEA2C,MAAAA,eAAe,CAAC5U,SAAhB,CAA0B+I,MAA1B,CAAiCkC,mBAAjC;AACA2J,MAAAA,eAAe,CAAC7I,eAAhB,CAAgC,cAAhC;AAEA,YAAM8I,UAAU,GAAG3H,cAAc,CAACC,IAAf,CAAoB8D,kBAApB,EAAwC,KAAKgB,kBAA7C,CAAnB;;AAEA,WAAK,IAAIhN,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4P,UAAU,CAACnW,MAA/B,EAAuCuG,CAAC,EAAxC,EAA4C;AAC1C,YAAIjH,MAAM,CAAC8W,QAAP,CAAgBD,UAAU,CAAC5P,CAAD,CAAV,CAAchI,YAAd,CAA2B,kBAA3B,CAAhB,EAAgE,EAAhE,MAAwE,KAAKkW,aAAL,CAAmBpW,OAAnB,CAA5E,EAAyG;AACvG8X,UAAAA,UAAU,CAAC5P,CAAD,CAAV,CAAcjF,SAAd,CAAwBoU,GAAxB,CAA4BnJ,mBAA5B;AACA4J,UAAAA,UAAU,CAAC5P,CAAD,CAAV,CAAcqG,YAAd,CAA2B,cAA3B,EAA2C,MAA3C;AACA;AACD;AACF;AACF;AACF;;AAEDuH,EAAAA,eAAe,GAAG;AAChB,UAAM9V,OAAO,GAAG,KAAK0U,cAAL,IAAuBvE,cAAc,CAACK,OAAf,CAAuBqD,oBAAvB,EAA6C,KAAKxH,QAAlD,CAAvC;;AAEA,QAAI,CAACrM,OAAL,EAAc;AACZ;AACD;;AAED,UAAMgY,eAAe,GAAG/W,MAAM,CAAC8W,QAAP,CAAgB/X,OAAO,CAACE,YAAR,CAAqB,kBAArB,CAAhB,EAA0D,EAA1D,CAAxB;;AAEA,QAAI8X,eAAJ,EAAqB;AACnB,WAAKhD,OAAL,CAAaiD,eAAb,GAA+B,KAAKjD,OAAL,CAAaiD,eAAb,IAAgC,KAAKjD,OAAL,CAAanD,QAA5E;AACA,WAAKmD,OAAL,CAAanD,QAAb,GAAwBmG,eAAxB;AACD,KAHD,MAGO;AACL,WAAKhD,OAAL,CAAanD,QAAb,GAAwB,KAAKmD,OAAL,CAAaiD,eAAb,IAAgC,KAAKjD,OAAL,CAAanD,QAArE;AACD;AACF;;AAED4D,EAAAA,MAAM,CAACyC,gBAAD,EAAmBlY,OAAnB,EAA4B;AAChC,UAAMqW,KAAK,GAAG,KAAK8B,iBAAL,CAAuBD,gBAAvB,CAAd;;AACA,UAAMjS,aAAa,GAAGkK,cAAc,CAACK,OAAf,CAAuBqD,oBAAvB,EAA6C,KAAKxH,QAAlD,CAAtB;;AACA,UAAM+L,kBAAkB,GAAG,KAAKhC,aAAL,CAAmBnQ,aAAnB,CAA3B;;AACA,UAAMoS,WAAW,GAAGrY,OAAO,IAAI,KAAKsX,eAAL,CAAqBjB,KAArB,EAA4BpQ,aAA5B,CAA/B;;AAEA,UAAMqS,gBAAgB,GAAG,KAAKlC,aAAL,CAAmBiC,WAAnB,CAAzB;;AACA,UAAME,SAAS,GAAG/O,OAAO,CAAC,KAAKiL,SAAN,CAAzB;AAEA,UAAM8C,MAAM,GAAGlB,KAAK,KAAKjE,UAAzB;AACA,UAAMoG,oBAAoB,GAAGjB,MAAM,GAAG/D,gBAAH,GAAsBD,cAAzD;AACA,UAAMkF,cAAc,GAAGlB,MAAM,GAAG9D,eAAH,GAAqBC,eAAlD;;AACA,UAAM+D,kBAAkB,GAAG,KAAKiB,iBAAL,CAAuBrC,KAAvB,CAA3B;;AAEA,QAAIgC,WAAW,IAAIA,WAAW,CAACpV,SAAZ,CAAsBC,QAAtB,CAA+BgL,mBAA/B,CAAnB,EAAsE;AACpE,WAAK0G,UAAL,GAAkB,KAAlB;AACA;AACD;;AAED,QAAI,KAAKA,UAAT,EAAqB;AACnB;AACD;;AAED,UAAM+D,UAAU,GAAG,KAAKnB,kBAAL,CAAwBa,WAAxB,EAAqCZ,kBAArC,CAAnB;;AACA,QAAIkB,UAAU,CAAClO,gBAAf,EAAiC;AAC/B;AACD;;AAED,QAAI,CAACxE,aAAD,IAAkB,CAACoS,WAAvB,EAAoC;AAClC;AACA;AACD;;AAED,SAAKzD,UAAL,GAAkB,IAAlB;;AAEA,QAAI2D,SAAJ,EAAe;AACb,WAAKvG,KAAL;AACD;;AAED,SAAK4F,0BAAL,CAAgCS,WAAhC;;AACA,SAAK3D,cAAL,GAAsB2D,WAAtB;;AAEA,UAAMO,gBAAgB,GAAG,MAAM;AAC7BjR,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCqG,UAApC,EAAgD;AAC9CvJ,QAAAA,aAAa,EAAEkP,WAD+B;AAE9C5B,QAAAA,SAAS,EAAEgB,kBAFmC;AAG9C1L,QAAAA,IAAI,EAAEqM,kBAHwC;AAI9ClC,QAAAA,EAAE,EAAEoC;AAJ0C,OAAhD;AAMD,KAPD;;AASA,QAAI,KAAKjM,QAAL,CAAcpJ,SAAd,CAAwBC,QAAxB,CAAiCoQ,gBAAjC,CAAJ,EAAwD;AACtD+E,MAAAA,WAAW,CAACpV,SAAZ,CAAsBoU,GAAtB,CAA0BoB,cAA1B;AAEA5U,MAAAA,MAAM,CAACwU,WAAD,CAAN;AAEApS,MAAAA,aAAa,CAAChD,SAAd,CAAwBoU,GAAxB,CAA4BmB,oBAA5B;AACAH,MAAAA,WAAW,CAACpV,SAAZ,CAAsBoU,GAAtB,CAA0BmB,oBAA1B;;AAEA,YAAMK,gBAAgB,GAAG,MAAM;AAC7BR,QAAAA,WAAW,CAACpV,SAAZ,CAAsB+I,MAAtB,CAA6BwM,oBAA7B,EAAmDC,cAAnD;AACAJ,QAAAA,WAAW,CAACpV,SAAZ,CAAsBoU,GAAtB,CAA0BnJ,mBAA1B;AAEAjI,QAAAA,aAAa,CAAChD,SAAd,CAAwB+I,MAAxB,CAA+BkC,mBAA/B,EAAkDuK,cAAlD,EAAkED,oBAAlE;AAEA,aAAK5D,UAAL,GAAkB,KAAlB;AAEA9O,QAAAA,UAAU,CAAC8S,gBAAD,EAAmB,CAAnB,CAAV;AACD,OATD;;AAWA,WAAKhM,cAAL,CAAoBiM,gBAApB,EAAsC5S,aAAtC,EAAqD,IAArD;AACD,KApBD,MAoBO;AACLA,MAAAA,aAAa,CAAChD,SAAd,CAAwB+I,MAAxB,CAA+BkC,mBAA/B;AACAmK,MAAAA,WAAW,CAACpV,SAAZ,CAAsBoU,GAAtB,CAA0BnJ,mBAA1B;AAEA,WAAK0G,UAAL,GAAkB,KAAlB;AACAgE,MAAAA,gBAAgB;AACjB;;AAED,QAAIL,SAAJ,EAAe;AACb,WAAK3C,KAAL;AACD;AACF;;AAEDuC,EAAAA,iBAAiB,CAAC1B,SAAD,EAAY;AAC3B,QAAI,CAAC,CAAClE,eAAD,EAAkBD,cAAlB,EAAkClS,QAAlC,CAA2CqW,SAA3C,CAAL,EAA4D;AAC1D,aAAOA,SAAP;AACD;;AAED,QAAIjS,KAAK,EAAT,EAAa;AACX,aAAOiS,SAAS,KAAKnE,cAAd,GAA+BD,UAA/B,GAA4CD,UAAnD;AACD;;AAED,WAAOqE,SAAS,KAAKnE,cAAd,GAA+BF,UAA/B,GAA4CC,UAAnD;AACD;;AAEDqG,EAAAA,iBAAiB,CAACrC,KAAD,EAAQ;AACvB,QAAI,CAAC,CAACjE,UAAD,EAAaC,UAAb,EAAyBjS,QAAzB,CAAkCiW,KAAlC,CAAL,EAA+C;AAC7C,aAAOA,KAAP;AACD;;AAED,QAAI7R,KAAK,EAAT,EAAa;AACX,aAAO6R,KAAK,KAAKhE,UAAV,GAAuBC,cAAvB,GAAwCC,eAA/C;AACD;;AAED,WAAO8D,KAAK,KAAKhE,UAAV,GAAuBE,eAAvB,GAAyCD,cAAhD;AACD,GArYkC;;;AAyYX,SAAjBwG,iBAAiB,CAAC9Y,OAAD,EAAU8B,MAAV,EAAkB;AACxC,UAAMkM,IAAI,GAAGuG,QAAQ,CAACxH,mBAAT,CAA6B/M,OAA7B,EAAsC8B,MAAtC,CAAb;AAEA,QAAI;AAAEkT,MAAAA;AAAF,QAAchH,IAAlB;;AACA,QAAI,OAAOlM,MAAP,KAAkB,QAAtB,EAAgC;AAC9BkT,MAAAA,OAAO,GAAG,EACR,GAAGA,OADK;AAER,WAAGlT;AAFK,OAAV;AAID;;AAED,UAAMiX,MAAM,GAAG,OAAOjX,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCkT,OAAO,CAACjD,KAA7D;;AAEA,QAAI,OAAOjQ,MAAP,KAAkB,QAAtB,EAAgC;AAC9BkM,MAAAA,IAAI,CAACkI,EAAL,CAAQpU,MAAR;AACD,KAFD,MAEO,IAAI,OAAOiX,MAAP,KAAkB,QAAtB,EAAgC;AACrC,UAAI,OAAO/K,IAAI,CAAC+K,MAAD,CAAX,KAAwB,WAA5B,EAAyC;AACvC,cAAM,IAAItW,SAAJ,CAAe,oBAAmBsW,MAAO,GAAzC,CAAN;AACD;;AAED/K,MAAAA,IAAI,CAAC+K,MAAD,CAAJ;AACD,KANM,MAMA,IAAI/D,OAAO,CAACnD,QAAR,IAAoBmD,OAAO,CAACgE,IAAhC,EAAsC;AAC3ChL,MAAAA,IAAI,CAACgE,KAAL;AACAhE,MAAAA,IAAI,CAAC4H,KAAL;AACD;AACF;;AAEqB,SAAf3Q,eAAe,CAACnD,MAAD,EAAS;AAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;AAC3BwG,MAAAA,QAAQ,CAACuE,iBAAT,CAA2B,IAA3B,EAAiChX,MAAjC;AACD,KAFM,CAAP;AAGD;;AAEyB,SAAnBmX,mBAAmB,CAACzR,KAAD,EAAQ;AAChC,UAAM5B,MAAM,GAAGlF,sBAAsB,CAAC,IAAD,CAArC;;AAEA,QAAI,CAACkF,MAAD,IAAW,CAACA,MAAM,CAAC3C,SAAP,CAAiBC,QAAjB,CAA0BmQ,mBAA1B,CAAhB,EAAgE;AAC9D;AACD;;AAED,UAAMvR,MAAM,GAAG,EACb,GAAG+M,WAAW,CAACI,iBAAZ,CAA8BrJ,MAA9B,CADU;AAEb,SAAGiJ,WAAW,CAACI,iBAAZ,CAA8B,IAA9B;AAFU,KAAf;AAIA,UAAMiK,UAAU,GAAG,KAAKhZ,YAAL,CAAkB,kBAAlB,CAAnB;;AAEA,QAAIgZ,UAAJ,EAAgB;AACdpX,MAAAA,MAAM,CAAC+P,QAAP,GAAkB,KAAlB;AACD;;AAED0C,IAAAA,QAAQ,CAACuE,iBAAT,CAA2BlT,MAA3B,EAAmC9D,MAAnC;;AAEA,QAAIoX,UAAJ,EAAgB;AACd3E,MAAAA,QAAQ,CAACzH,WAAT,CAAqBlH,MAArB,EAA6BsQ,EAA7B,CAAgCgD,UAAhC;AACD;;AAED1R,IAAAA,KAAK,CAAC6D,cAAN;AACD;;AAlckC;AAqcrC;AACA;AACA;AACA;AACA;;;AAEA1D,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,sBAA1B,EAAgD+F,mBAAhD,EAAqEI,QAAQ,CAAC0E,mBAA9E;AAEAtR,YAAY,CAACkC,EAAb,CAAgB/I,MAAhB,EAAwBsS,qBAAxB,EAA6C,MAAM;AACjD,QAAM+F,SAAS,GAAGhJ,cAAc,CAACC,IAAf,CAAoBgE,kBAApB,CAAlB;;AAEA,OAAK,IAAIlM,CAAC,GAAG,CAAR,EAAWK,GAAG,GAAG4Q,SAAS,CAACxX,MAAhC,EAAwCuG,CAAC,GAAGK,GAA5C,EAAiDL,CAAC,EAAlD,EAAsD;AACpDqM,IAAAA,QAAQ,CAACuE,iBAAT,CAA2BK,SAAS,CAACjR,CAAD,CAApC,EAAyCqM,QAAQ,CAACzH,WAAT,CAAqBqM,SAAS,CAACjR,CAAD,CAA9B,CAAzC;AACD;AACF,CAND;AAQA;AACA;AACA;AACA;AACA;AACA;;AAEAxD,kBAAkB,CAAC6P,QAAD,CAAlB;;ACvkBA;AACA;AACA;AACA;AACA;AACA;AAgBA;AACA;AACA;AACA;AACA;;AAEA,MAAMzP,MAAI,GAAG,UAAb;AACA,MAAMyH,UAAQ,GAAG,aAAjB;AACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;AACA,MAAM0B,cAAY,GAAG,WAArB;AAEA,MAAM2D,SAAO,GAAG;AACdtD,EAAAA,MAAM,EAAE,IADM;AAEd8K,EAAAA,MAAM,EAAE;AAFM,CAAhB;AAKA,MAAMjH,aAAW,GAAG;AAClB7D,EAAAA,MAAM,EAAE,SADU;AAElB8K,EAAAA,MAAM,EAAE;AAFU,CAApB;AAKA,MAAMC,YAAU,GAAI,OAAM5M,WAAU,EAApC;AACA,MAAM6M,aAAW,GAAI,QAAO7M,WAAU,EAAtC;AACA,MAAM8M,YAAU,GAAI,OAAM9M,WAAU,EAApC;AACA,MAAM+M,cAAY,GAAI,SAAQ/M,WAAU,EAAxC;AACA,MAAM2B,sBAAoB,GAAI,QAAO3B,WAAU,GAAEwB,cAAa,EAA9D;AAEA,MAAMP,iBAAe,GAAG,MAAxB;AACA,MAAM+L,mBAAmB,GAAG,UAA5B;AACA,MAAMC,qBAAqB,GAAG,YAA9B;AACA,MAAMC,oBAAoB,GAAG,WAA7B;AACA,MAAMC,qBAAqB,GAAG,qBAA9B;AAEA,MAAMC,KAAK,GAAG,OAAd;AACA,MAAMC,MAAM,GAAG,QAAf;AAEA,MAAMC,gBAAgB,GAAG,oBAAzB;AACA,MAAM5L,sBAAoB,GAAG,6BAA7B;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAM6L,QAAN,SAAuB7N,aAAvB,CAAqC;AACnCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;AAC3B,UAAM9B,OAAN;AAEA,SAAKia,gBAAL,GAAwB,KAAxB;AACA,SAAKjF,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;AACA,SAAKoY,aAAL,GAAqB,EAArB;AAEA,UAAMC,UAAU,GAAGhK,cAAc,CAACC,IAAf,CAAoBjC,sBAApB,CAAnB;;AAEA,SAAK,IAAIjG,CAAC,GAAG,CAAR,EAAWK,GAAG,GAAG4R,UAAU,CAACxY,MAAjC,EAAyCuG,CAAC,GAAGK,GAA7C,EAAkDL,CAAC,EAAnD,EAAuD;AACrD,YAAMkS,IAAI,GAAGD,UAAU,CAACjS,CAAD,CAAvB;AACA,YAAMjI,QAAQ,GAAGO,sBAAsB,CAAC4Z,IAAD,CAAvC;AACA,YAAMC,aAAa,GAAGlK,cAAc,CAACC,IAAf,CAAoBnQ,QAApB,EACnBmP,MADmB,CACZkL,SAAS,IAAIA,SAAS,KAAK,KAAKjO,QADpB,CAAtB;;AAGA,UAAIpM,QAAQ,KAAK,IAAb,IAAqBoa,aAAa,CAAC1Y,MAAvC,EAA+C;AAC7C,aAAK4Y,SAAL,GAAiBta,QAAjB;;AACA,aAAKia,aAAL,CAAmB3V,IAAnB,CAAwB6V,IAAxB;AACD;AACF;;AAED,SAAKI,mBAAL;;AAEA,QAAI,CAAC,KAAKxF,OAAL,CAAaoE,MAAlB,EAA0B;AACxB,WAAKqB,yBAAL,CAA+B,KAAKP,aAApC,EAAmD,KAAKQ,QAAL,EAAnD;AACD;;AAED,QAAI,KAAK1F,OAAL,CAAa1G,MAAjB,EAAyB;AACvB,WAAKA,MAAL;AACD;AACF,GA/BkC;;;AAmCjB,aAAPsD,OAAO,GAAG;AACnB,WAAOA,SAAP;AACD;;AAEc,aAAJ9M,IAAI,GAAG;AAChB,WAAOA,MAAP;AACD,GAzCkC;;;AA6CnCwJ,EAAAA,MAAM,GAAG;AACP,QAAI,KAAKoM,QAAL,EAAJ,EAAqB;AACnB,WAAKC,IAAL;AACD,KAFD,MAEO;AACL,WAAKC,IAAL;AACD;AACF;;AAEDA,EAAAA,IAAI,GAAG;AACL,QAAI,KAAKX,gBAAL,IAAyB,KAAKS,QAAL,EAA7B,EAA8C;AAC5C;AACD;;AAED,QAAIG,OAAO,GAAG,EAAd;AACA,QAAIC,WAAJ;;AAEA,QAAI,KAAK9F,OAAL,CAAaoE,MAAjB,EAAyB;AACvB,YAAM3I,QAAQ,GAAGN,cAAc,CAACC,IAAf,CAAqB,IAAGqJ,mBAAoB,KAAIA,mBAAoB,EAApE,EAAuE,KAAKzE,OAAL,CAAaoE,MAApF,CAAjB;AACAyB,MAAAA,OAAO,GAAG1K,cAAc,CAACC,IAAf,CAAoB2J,gBAApB,EAAsC,KAAK/E,OAAL,CAAaoE,MAAnD,EAA2DhK,MAA3D,CAAkEgL,IAAI,IAAI,CAAC3J,QAAQ,CAACrQ,QAAT,CAAkBga,IAAlB,CAA3E,CAAV,CAFuB;AAGxB;;AAED,UAAMW,SAAS,GAAG5K,cAAc,CAACK,OAAf,CAAuB,KAAK+J,SAA5B,CAAlB;;AACA,QAAIM,OAAO,CAAClZ,MAAZ,EAAoB;AAClB,YAAMqZ,cAAc,GAAGH,OAAO,CAACzK,IAAR,CAAagK,IAAI,IAAIW,SAAS,KAAKX,IAAnC,CAAvB;AACAU,MAAAA,WAAW,GAAGE,cAAc,GAAGhB,QAAQ,CAAClN,WAAT,CAAqBkO,cAArB,CAAH,GAA0C,IAAtE;;AAEA,UAAIF,WAAW,IAAIA,WAAW,CAACb,gBAA/B,EAAiD;AAC/C;AACD;AACF;;AAED,UAAMgB,UAAU,GAAGtT,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCgN,YAApC,CAAnB;;AACA,QAAI4B,UAAU,CAACxQ,gBAAf,EAAiC;AAC/B;AACD;;AAEDoQ,IAAAA,OAAO,CAAC3Y,OAAR,CAAgBgZ,UAAU,IAAI;AAC5B,UAAIH,SAAS,KAAKG,UAAlB,EAA8B;AAC5BlB,QAAAA,QAAQ,CAACjN,mBAAT,CAA6BmO,UAA7B,EAAyC;AAAE5M,UAAAA,MAAM,EAAE;AAAV,SAAzC,EAA4DqM,IAA5D;AACD;;AAED,UAAI,CAACG,WAAL,EAAkB;AAChBxO,QAAAA,IAAI,CAACd,GAAL,CAAS0P,UAAT,EAAqB3O,UAArB,EAA+B,IAA/B;AACD;AACF,KARD;;AAUA,UAAM4O,SAAS,GAAG,KAAKC,aAAL,EAAlB;;AAEA,SAAK/O,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+ByN,mBAA/B;;AACA,SAAKpN,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4BqC,qBAA5B;;AAEA,SAAKrN,QAAL,CAAcgP,KAAd,CAAoBF,SAApB,IAAiC,CAAjC;;AAEA,SAAKV,yBAAL,CAA+B,KAAKP,aAApC,EAAmD,IAAnD;;AACA,SAAKD,gBAAL,GAAwB,IAAxB;;AAEA,UAAMqB,QAAQ,GAAG,MAAM;AACrB,WAAKrB,gBAAL,GAAwB,KAAxB;;AAEA,WAAK5N,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0N,qBAA/B;;AACA,WAAKrN,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4BoC,mBAA5B,EAAiD/L,iBAAjD;;AAEA,WAAKrB,QAAL,CAAcgP,KAAd,CAAoBF,SAApB,IAAiC,EAAjC;AAEAxT,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCiN,aAApC;AACD,KATD;;AAWA,UAAMiC,oBAAoB,GAAGJ,SAAS,CAAC,CAAD,CAAT,CAAazY,WAAb,KAA6ByY,SAAS,CAACjR,KAAV,CAAgB,CAAhB,CAA1D;AACA,UAAMsR,UAAU,GAAI,SAAQD,oBAAqB,EAAjD;;AAEA,SAAK3O,cAAL,CAAoB0O,QAApB,EAA8B,KAAKjP,QAAnC,EAA6C,IAA7C;;AACA,SAAKA,QAAL,CAAcgP,KAAd,CAAoBF,SAApB,IAAkC,GAAE,KAAK9O,QAAL,CAAcmP,UAAd,CAA0B,IAA9D;AACD;;AAEDb,EAAAA,IAAI,GAAG;AACL,QAAI,KAAKV,gBAAL,IAAyB,CAAC,KAAKS,QAAL,EAA9B,EAA+C;AAC7C;AACD;;AAED,UAAMO,UAAU,GAAGtT,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCkN,YAApC,CAAnB;;AACA,QAAI0B,UAAU,CAACxQ,gBAAf,EAAiC;AAC/B;AACD;;AAED,UAAM0Q,SAAS,GAAG,KAAKC,aAAL,EAAlB;;AAEA,SAAK/O,QAAL,CAAcgP,KAAd,CAAoBF,SAApB,IAAkC,GAAE,KAAK9O,QAAL,CAAcqD,qBAAd,GAAsCyL,SAAtC,CAAiD,IAArF;AAEAtX,IAAAA,MAAM,CAAC,KAAKwI,QAAN,CAAN;;AAEA,SAAKA,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4BqC,qBAA5B;;AACA,SAAKrN,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+ByN,mBAA/B,EAAoD/L,iBAApD;;AAEA,UAAM+N,kBAAkB,GAAG,KAAKvB,aAAL,CAAmBvY,MAA9C;;AACA,SAAK,IAAIuG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuT,kBAApB,EAAwCvT,CAAC,EAAzC,EAA6C;AAC3C,YAAMkC,OAAO,GAAG,KAAK8P,aAAL,CAAmBhS,CAAnB,CAAhB;AACA,YAAMkS,IAAI,GAAG1Z,sBAAsB,CAAC0J,OAAD,CAAnC;;AAEA,UAAIgQ,IAAI,IAAI,CAAC,KAAKM,QAAL,CAAcN,IAAd,CAAb,EAAkC;AAChC,aAAKK,yBAAL,CAA+B,CAACrQ,OAAD,CAA/B,EAA0C,KAA1C;AACD;AACF;;AAED,SAAK6P,gBAAL,GAAwB,IAAxB;;AAEA,UAAMqB,QAAQ,GAAG,MAAM;AACrB,WAAKrB,gBAAL,GAAwB,KAAxB;;AACA,WAAK5N,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0N,qBAA/B;;AACA,WAAKrN,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4BoC,mBAA5B;;AACA9R,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCmN,cAApC;AACD,KALD;;AAOA,SAAKnN,QAAL,CAAcgP,KAAd,CAAoBF,SAApB,IAAiC,EAAjC;;AAEA,SAAKvO,cAAL,CAAoB0O,QAApB,EAA8B,KAAKjP,QAAnC,EAA6C,IAA7C;AACD;;AAEDqO,EAAAA,QAAQ,CAAC1a,OAAO,GAAG,KAAKqM,QAAhB,EAA0B;AAChC,WAAOrM,OAAO,CAACiD,SAAR,CAAkBC,QAAlB,CAA2BwK,iBAA3B,CAAP;AACD,GApKkC;;;AAwKnCuH,EAAAA,UAAU,CAACnT,MAAD,EAAS;AACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,SADI;AAEP,SAAG/C,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAFI;AAGP,SAAGvK;AAHI,KAAT;AAKAA,IAAAA,MAAM,CAACwM,MAAP,GAAgB9E,OAAO,CAAC1H,MAAM,CAACwM,MAAR,CAAvB,CANiB;;AAOjBxM,IAAAA,MAAM,CAACsX,MAAP,GAAgB1X,UAAU,CAACI,MAAM,CAACsX,MAAR,CAA1B;AACAxX,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAeqQ,aAAf,CAAf;AACA,WAAOrQ,MAAP;AACD;;AAEDsZ,EAAAA,aAAa,GAAG;AACd,WAAO,KAAK/O,QAAL,CAAcpJ,SAAd,CAAwBC,QAAxB,CAAiC0W,qBAAjC,IAA0DC,KAA1D,GAAkEC,MAAzE;AACD;;AAEDU,EAAAA,mBAAmB,GAAG;AACpB,QAAI,CAAC,KAAKxF,OAAL,CAAaoE,MAAlB,EAA0B;AACxB;AACD;;AAED,UAAM3I,QAAQ,GAAGN,cAAc,CAACC,IAAf,CAAqB,IAAGqJ,mBAAoB,KAAIA,mBAAoB,EAApE,EAAuE,KAAKzE,OAAL,CAAaoE,MAApF,CAAjB;AACAjJ,IAAAA,cAAc,CAACC,IAAf,CAAoBjC,sBAApB,EAA0C,KAAK6G,OAAL,CAAaoE,MAAvD,EAA+DhK,MAA/D,CAAsEgL,IAAI,IAAI,CAAC3J,QAAQ,CAACrQ,QAAT,CAAkBga,IAAlB,CAA/E,EACGlY,OADH,CACWlC,OAAO,IAAI;AAClB,YAAM0b,QAAQ,GAAGhb,sBAAsB,CAACV,OAAD,CAAvC;;AAEA,UAAI0b,QAAJ,EAAc;AACZ,aAAKjB,yBAAL,CAA+B,CAACza,OAAD,CAA/B,EAA0C,KAAK0a,QAAL,CAAcgB,QAAd,CAA1C;AACD;AACF,KAPH;AAQD;;AAEDjB,EAAAA,yBAAyB,CAACkB,YAAD,EAAeC,MAAf,EAAuB;AAC9C,QAAI,CAACD,YAAY,CAACha,MAAlB,EAA0B;AACxB;AACD;;AAEDga,IAAAA,YAAY,CAACzZ,OAAb,CAAqBkY,IAAI,IAAI;AAC3B,UAAIwB,MAAJ,EAAY;AACVxB,QAAAA,IAAI,CAACnX,SAAL,CAAe+I,MAAf,CAAsB2N,oBAAtB;AACD,OAFD,MAEO;AACLS,QAAAA,IAAI,CAACnX,SAAL,CAAeoU,GAAf,CAAmBsC,oBAAnB;AACD;;AAEDS,MAAAA,IAAI,CAAC7L,YAAL,CAAkB,eAAlB,EAAmCqN,MAAnC;AACD,KARD;AASD,GAtNkC;;;AA0Nb,SAAf3W,eAAe,CAACnD,MAAD,EAAS;AAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;AAC3B,YAAMiH,OAAO,GAAG,EAAhB;;AACA,UAAI,OAAOlT,MAAP,KAAkB,QAAlB,IAA8B,YAAYU,IAAZ,CAAiBV,MAAjB,CAAlC,EAA4D;AAC1DkT,QAAAA,OAAO,CAAC1G,MAAR,GAAiB,KAAjB;AACD;;AAED,YAAMN,IAAI,GAAGgM,QAAQ,CAACjN,mBAAT,CAA6B,IAA7B,EAAmCiI,OAAnC,CAAb;;AAEA,UAAI,OAAOlT,MAAP,KAAkB,QAAtB,EAAgC;AAC9B,YAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;AACvC,gBAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;AACD;;AAEDkM,QAAAA,IAAI,CAAClM,MAAD,CAAJ;AACD;AACF,KAfM,CAAP;AAgBD;;AA3OkC;AA8OrC;AACA;AACA;AACA;AACA;;;AAEA6F,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,sBAA1B,EAAgDD,sBAAhD,EAAsE,UAAU3G,KAAV,EAAiB;AACrF;AACA,MAAIA,KAAK,CAAC5B,MAAN,CAAayH,OAAb,KAAyB,GAAzB,IAAiC7F,KAAK,CAACC,cAAN,IAAwBD,KAAK,CAACC,cAAN,CAAqB4F,OAArB,KAAiC,GAA9F,EAAoG;AAClG7F,IAAAA,KAAK,CAAC6D,cAAN;AACD;;AAED,QAAMpL,QAAQ,GAAGO,sBAAsB,CAAC,IAAD,CAAvC;AACA,QAAMqb,gBAAgB,GAAG1L,cAAc,CAACC,IAAf,CAAoBnQ,QAApB,CAAzB;AAEA4b,EAAAA,gBAAgB,CAAC3Z,OAAjB,CAAyBlC,OAAO,IAAI;AAClCga,IAAAA,QAAQ,CAACjN,mBAAT,CAA6B/M,OAA7B,EAAsC;AAAEsO,MAAAA,MAAM,EAAE;AAAV,KAAtC,EAAyDA,MAAzD;AACD,GAFD;AAGD,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;;AAEA5J,kBAAkB,CAACsV,QAAD,CAAlB;;AC3UA;AACA;AACA;AACA;AACA;AACA;AAqBA;AACA;AACA;AACA;AACA;;AAEA,MAAMlV,MAAI,GAAG,UAAb;AACA,MAAMyH,UAAQ,GAAG,aAAjB;AACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;AACA,MAAM0B,cAAY,GAAG,WAArB;AAEA,MAAM6N,YAAU,GAAG,QAAnB;AACA,MAAMC,SAAS,GAAG,OAAlB;AACA,MAAMC,SAAO,GAAG,KAAhB;AACA,MAAMC,YAAY,GAAG,SAArB;AACA,MAAMC,cAAc,GAAG,WAAvB;AACA,MAAMC,kBAAkB,GAAG,CAA3B;;AAEA,MAAMC,cAAc,GAAG,IAAI7Z,MAAJ,CAAY,GAAE0Z,YAAa,IAAGC,cAAe,IAAGJ,YAAW,EAA3D,CAAvB;AAEA,MAAMvC,YAAU,GAAI,OAAM9M,WAAU,EAApC;AACA,MAAM+M,cAAY,GAAI,SAAQ/M,WAAU,EAAxC;AACA,MAAM4M,YAAU,GAAI,OAAM5M,WAAU,EAApC;AACA,MAAM6M,aAAW,GAAI,QAAO7M,WAAU,EAAtC;AACA,MAAM2B,sBAAoB,GAAI,QAAO3B,WAAU,GAAEwB,cAAa,EAA9D;AACA,MAAMoO,sBAAsB,GAAI,UAAS5P,WAAU,GAAEwB,cAAa,EAAlE;AACA,MAAMqO,oBAAoB,GAAI,QAAO7P,WAAU,GAAEwB,cAAa,EAA9D;AAEA,MAAMP,iBAAe,GAAG,MAAxB;AACA,MAAM6O,iBAAiB,GAAG,QAA1B;AACA,MAAMC,kBAAkB,GAAG,SAA3B;AACA,MAAMC,oBAAoB,GAAG,WAA7B;AACA,MAAMC,iBAAiB,GAAG,QAA1B;AAEA,MAAMvO,sBAAoB,GAAG,6BAA7B;AACA,MAAMwO,aAAa,GAAG,gBAAtB;AACA,MAAMC,mBAAmB,GAAG,aAA5B;AACA,MAAMC,sBAAsB,GAAG,6DAA/B;AAEA,MAAMC,aAAa,GAAGtY,KAAK,KAAK,SAAL,GAAiB,WAA5C;AACA,MAAMuY,gBAAgB,GAAGvY,KAAK,KAAK,WAAL,GAAmB,SAAjD;AACA,MAAMwY,gBAAgB,GAAGxY,KAAK,KAAK,YAAL,GAAoB,cAAlD;AACA,MAAMyY,mBAAmB,GAAGzY,KAAK,KAAK,cAAL,GAAsB,YAAvD;AACA,MAAM0Y,eAAe,GAAG1Y,KAAK,KAAK,YAAL,GAAoB,aAAjD;AACA,MAAM2Y,cAAc,GAAG3Y,KAAK,KAAK,aAAL,GAAqB,YAAjD;AAEA,MAAMoN,SAAO,GAAG;AACdpC,EAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,CADM;AAEd4N,EAAAA,QAAQ,EAAE,iBAFI;AAGdC,EAAAA,SAAS,EAAE,QAHG;AAIdC,EAAAA,OAAO,EAAE,SAJK;AAKdC,EAAAA,YAAY,EAAE,IALA;AAMdC,EAAAA,SAAS,EAAE;AANG,CAAhB;AASA,MAAMrL,aAAW,GAAG;AAClB3C,EAAAA,MAAM,EAAE,yBADU;AAElB4N,EAAAA,QAAQ,EAAE,kBAFQ;AAGlBC,EAAAA,SAAS,EAAE,yBAHO;AAIlBC,EAAAA,OAAO,EAAE,QAJS;AAKlBC,EAAAA,YAAY,EAAE,wBALI;AAMlBC,EAAAA,SAAS,EAAE;AANO,CAApB;AASA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,QAAN,SAAuBtR,aAAvB,CAAqC;AACnCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;AAC3B,UAAM9B,OAAN;AAEA,SAAK0d,OAAL,GAAe,IAAf;AACA,SAAK1I,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;AACA,SAAK6b,KAAL,GAAa,KAAKC,eAAL,EAAb;AACA,SAAKC,SAAL,GAAiB,KAAKC,aAAL,EAAjB;AACD,GARkC;;;AAYjB,aAAPlM,OAAO,GAAG;AACnB,WAAOA,SAAP;AACD;;AAEqB,aAAXO,WAAW,GAAG;AACvB,WAAOA,aAAP;AACD;;AAEc,aAAJrN,IAAI,GAAG;AAChB,WAAOA,MAAP;AACD,GAtBkC;;;AA0BnCwJ,EAAAA,MAAM,GAAG;AACP,WAAO,KAAKoM,QAAL,KAAkB,KAAKC,IAAL,EAAlB,GAAgC,KAAKC,IAAL,EAAvC;AACD;;AAEDA,EAAAA,IAAI,GAAG;AACL,QAAI9X,UAAU,CAAC,KAAKuJ,QAAN,CAAV,IAA6B,KAAKqO,QAAL,CAAc,KAAKiD,KAAnB,CAAjC,EAA4D;AAC1D;AACD;;AAED,UAAMxU,aAAa,GAAG;AACpBA,MAAAA,aAAa,EAAE,KAAKkD;AADA,KAAtB;AAIA,UAAM0R,SAAS,GAAGpW,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCgN,YAApC,EAAgDlQ,aAAhD,CAAlB;;AAEA,QAAI4U,SAAS,CAACtT,gBAAd,EAAgC;AAC9B;AACD;;AAED,UAAM2O,MAAM,GAAGqE,QAAQ,CAACO,oBAAT,CAA8B,KAAK3R,QAAnC,CAAf,CAfK;;AAiBL,QAAI,KAAKwR,SAAT,EAAoB;AAClBhP,MAAAA,WAAW,CAACC,gBAAZ,CAA6B,KAAK6O,KAAlC,EAAyC,QAAzC,EAAmD,MAAnD;AACD,KAFD,MAEO;AACL,WAAKM,aAAL,CAAmB7E,MAAnB;AACD,KArBI;AAwBL;AACA;AACA;;;AACA,QAAI,kBAAkBvZ,QAAQ,CAACyD,eAA3B,IACF,CAAC8V,MAAM,CAAC9L,OAAP,CAAesP,mBAAf,CADH,EACwC;AACtC,SAAGvM,MAAH,CAAU,GAAGxQ,QAAQ,CAACoE,IAAT,CAAcwM,QAA3B,EACGvO,OADH,CACWkY,IAAI,IAAIzS,YAAY,CAACkC,EAAb,CAAgBuQ,IAAhB,EAAsB,WAAtB,EAAmCxW,IAAnC,CADnB;AAED;;AAED,SAAKyI,QAAL,CAAc6R,KAAd;;AACA,SAAK7R,QAAL,CAAckC,YAAd,CAA2B,eAA3B,EAA4C,IAA5C;;AAEA,SAAKoP,KAAL,CAAW1a,SAAX,CAAqBoU,GAArB,CAAyB3J,iBAAzB;;AACA,SAAKrB,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4B3J,iBAA5B;;AACA/F,IAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCiN,aAApC,EAAiDnQ,aAAjD;AACD;;AAEDwR,EAAAA,IAAI,GAAG;AACL,QAAI7X,UAAU,CAAC,KAAKuJ,QAAN,CAAV,IAA6B,CAAC,KAAKqO,QAAL,CAAc,KAAKiD,KAAnB,CAAlC,EAA6D;AAC3D;AACD;;AAED,UAAMxU,aAAa,GAAG;AACpBA,MAAAA,aAAa,EAAE,KAAKkD;AADA,KAAtB;;AAIA,SAAK8R,aAAL,CAAmBhV,aAAnB;AACD;;AAEDqD,EAAAA,OAAO,GAAG;AACR,QAAI,KAAKkR,OAAT,EAAkB;AAChB,WAAKA,OAAL,CAAaU,OAAb;AACD;;AAED,UAAM5R,OAAN;AACD;;AAED6R,EAAAA,MAAM,GAAG;AACP,SAAKR,SAAL,GAAiB,KAAKC,aAAL,EAAjB;;AACA,QAAI,KAAKJ,OAAT,EAAkB;AAChB,WAAKA,OAAL,CAAaW,MAAb;AACD;AACF,GAhGkC;;;AAoGnCF,EAAAA,aAAa,CAAChV,aAAD,EAAgB;AAC3B,UAAMmV,SAAS,GAAG3W,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCkN,YAApC,EAAgDpQ,aAAhD,CAAlB;;AACA,QAAImV,SAAS,CAAC7T,gBAAd,EAAgC;AAC9B;AACD,KAJ0B;AAO3B;;;AACA,QAAI,kBAAkB5K,QAAQ,CAACyD,eAA/B,EAAgD;AAC9C,SAAG+M,MAAH,CAAU,GAAGxQ,QAAQ,CAACoE,IAAT,CAAcwM,QAA3B,EACGvO,OADH,CACWkY,IAAI,IAAIzS,YAAY,CAACC,GAAb,CAAiBwS,IAAjB,EAAuB,WAAvB,EAAoCxW,IAApC,CADnB;AAED;;AAED,QAAI,KAAK8Z,OAAT,EAAkB;AAChB,WAAKA,OAAL,CAAaU,OAAb;AACD;;AAED,SAAKT,KAAL,CAAW1a,SAAX,CAAqB+I,MAArB,CAA4B0B,iBAA5B;;AACA,SAAKrB,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0B,iBAA/B;;AACA,SAAKrB,QAAL,CAAckC,YAAd,CAA2B,eAA3B,EAA4C,OAA5C;;AACAM,IAAAA,WAAW,CAACE,mBAAZ,CAAgC,KAAK4O,KAArC,EAA4C,QAA5C;AACAhW,IAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCmN,cAApC,EAAkDrQ,aAAlD;AACD;;AAED8L,EAAAA,UAAU,CAACnT,MAAD,EAAS;AACjBA,IAAAA,MAAM,GAAG,EACP,GAAG,KAAKsK,WAAL,CAAiBwF,OADb;AAEP,SAAG/C,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAFI;AAGP,SAAGvK;AAHI,KAAT;AAMAF,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAe,KAAKsK,WAAL,CAAiB+F,WAAhC,CAAf;;AAEA,QAAI,OAAOrQ,MAAM,CAACub,SAAd,KAA4B,QAA5B,IAAwC,CAAC9b,SAAS,CAACO,MAAM,CAACub,SAAR,CAAlD,IACF,OAAOvb,MAAM,CAACub,SAAP,CAAiB3N,qBAAxB,KAAkD,UADpD,EAEE;AACA;AACA,YAAM,IAAIjN,SAAJ,CAAe,GAAEqC,MAAI,CAACpC,WAAL,EAAmB,gGAApC,CAAN;AACD;;AAED,WAAOZ,MAAP;AACD;;AAEDmc,EAAAA,aAAa,CAAC7E,MAAD,EAAS;AACpB,QAAI,OAAOmF,MAAP,KAAkB,WAAtB,EAAmC;AACjC,YAAM,IAAI9b,SAAJ,CAAc,+DAAd,CAAN;AACD;;AAED,QAAI+b,gBAAgB,GAAG,KAAKnS,QAA5B;;AAEA,QAAI,KAAK2I,OAAL,CAAaqI,SAAb,KAA2B,QAA/B,EAAyC;AACvCmB,MAAAA,gBAAgB,GAAGpF,MAAnB;AACD,KAFD,MAEO,IAAI7X,SAAS,CAAC,KAAKyT,OAAL,CAAaqI,SAAd,CAAb,EAAuC;AAC5CmB,MAAAA,gBAAgB,GAAG9c,UAAU,CAAC,KAAKsT,OAAL,CAAaqI,SAAd,CAA7B;AACD,KAFM,MAEA,IAAI,OAAO,KAAKrI,OAAL,CAAaqI,SAApB,KAAkC,QAAtC,EAAgD;AACrDmB,MAAAA,gBAAgB,GAAG,KAAKxJ,OAAL,CAAaqI,SAAhC;AACD;;AAED,UAAME,YAAY,GAAG,KAAKkB,gBAAL,EAArB;;AACA,UAAMC,eAAe,GAAGnB,YAAY,CAACoB,SAAb,CAAuBvO,IAAvB,CAA4BwO,QAAQ,IAAIA,QAAQ,CAAC/Z,IAAT,KAAkB,aAAlB,IAAmC+Z,QAAQ,CAACC,OAAT,KAAqB,KAAhG,CAAxB;AAEA,SAAKnB,OAAL,GAAea,MAAM,CAACO,YAAP,CAAoBN,gBAApB,EAAsC,KAAKb,KAA3C,EAAkDJ,YAAlD,CAAf;;AAEA,QAAImB,eAAJ,EAAqB;AACnB7P,MAAAA,WAAW,CAACC,gBAAZ,CAA6B,KAAK6O,KAAlC,EAAyC,QAAzC,EAAmD,QAAnD;AACD;AACF;;AAEDjD,EAAAA,QAAQ,CAAC1a,OAAO,GAAG,KAAKqM,QAAhB,EAA0B;AAChC,WAAOrM,OAAO,CAACiD,SAAR,CAAkBC,QAAlB,CAA2BwK,iBAA3B,CAAP;AACD;;AAEDkQ,EAAAA,eAAe,GAAG;AAChB,WAAOzN,cAAc,CAACc,IAAf,CAAoB,KAAK5E,QAAzB,EAAmCsQ,aAAnC,EAAkD,CAAlD,CAAP;AACD;;AAEDoC,EAAAA,aAAa,GAAG;AACd,UAAMC,cAAc,GAAG,KAAK3S,QAAL,CAAc1I,UAArC;;AAEA,QAAIqb,cAAc,CAAC/b,SAAf,CAAyBC,QAAzB,CAAkCsZ,kBAAlC,CAAJ,EAA2D;AACzD,aAAOU,eAAP;AACD;;AAED,QAAI8B,cAAc,CAAC/b,SAAf,CAAyBC,QAAzB,CAAkCuZ,oBAAlC,CAAJ,EAA6D;AAC3D,aAAOU,cAAP;AACD,KATa;;;AAYd,UAAM8B,KAAK,GAAGle,gBAAgB,CAAC,KAAK4c,KAAN,CAAhB,CAA6B9a,gBAA7B,CAA8C,eAA9C,EAA+DtC,IAA/D,OAA0E,KAAxF;;AAEA,QAAIye,cAAc,CAAC/b,SAAf,CAAyBC,QAAzB,CAAkCqZ,iBAAlC,CAAJ,EAA0D;AACxD,aAAO0C,KAAK,GAAGlC,gBAAH,GAAsBD,aAAlC;AACD;;AAED,WAAOmC,KAAK,GAAGhC,mBAAH,GAAyBD,gBAArC;AACD;;AAEDc,EAAAA,aAAa,GAAG;AACd,WAAO,KAAKzR,QAAL,CAAciB,OAAd,CAAuB,IAAGoP,iBAAkB,EAA5C,MAAmD,IAA1D;AACD;;AAEDwC,EAAAA,UAAU,GAAG;AACX,UAAM;AAAE1P,MAAAA;AAAF,QAAa,KAAKwF,OAAxB;;AAEA,QAAI,OAAOxF,MAAP,KAAkB,QAAtB,EAAgC;AAC9B,aAAOA,MAAM,CAAClP,KAAP,CAAa,GAAb,EAAkB+Q,GAAlB,CAAsB3C,GAAG,IAAIzN,MAAM,CAAC8W,QAAP,CAAgBrJ,GAAhB,EAAqB,EAArB,CAA7B,CAAP;AACD;;AAED,QAAI,OAAOc,MAAP,KAAkB,UAAtB,EAAkC;AAChC,aAAO2P,UAAU,IAAI3P,MAAM,CAAC2P,UAAD,EAAa,KAAK9S,QAAlB,CAA3B;AACD;;AAED,WAAOmD,MAAP;AACD;;AAEDiP,EAAAA,gBAAgB,GAAG;AACjB,UAAMW,qBAAqB,GAAG;AAC5BC,MAAAA,SAAS,EAAE,KAAKN,aAAL,EADiB;AAE5BJ,MAAAA,SAAS,EAAE,CAAC;AACV9Z,QAAAA,IAAI,EAAE,iBADI;AAEVya,QAAAA,OAAO,EAAE;AACPlC,UAAAA,QAAQ,EAAE,KAAKpI,OAAL,CAAaoI;AADhB;AAFC,OAAD,EAMX;AACEvY,QAAAA,IAAI,EAAE,QADR;AAEEya,QAAAA,OAAO,EAAE;AACP9P,UAAAA,MAAM,EAAE,KAAK0P,UAAL;AADD;AAFX,OANW;AAFiB,KAA9B,CADiB;;AAkBjB,QAAI,KAAKlK,OAAL,CAAasI,OAAb,KAAyB,QAA7B,EAAuC;AACrC8B,MAAAA,qBAAqB,CAACT,SAAtB,GAAkC,CAAC;AACjC9Z,QAAAA,IAAI,EAAE,aAD2B;AAEjCga,QAAAA,OAAO,EAAE;AAFwB,OAAD,CAAlC;AAID;;AAED,WAAO,EACL,GAAGO,qBADE;AAEL,UAAI,OAAO,KAAKpK,OAAL,CAAauI,YAApB,KAAqC,UAArC,GAAkD,KAAKvI,OAAL,CAAauI,YAAb,CAA0B6B,qBAA1B,CAAlD,GAAqG,KAAKpK,OAAL,CAAauI,YAAtH;AAFK,KAAP;AAID;;AAEDgC,EAAAA,eAAe,CAAC;AAAErU,IAAAA,GAAF;AAAOtF,IAAAA;AAAP,GAAD,EAAkB;AAC/B,UAAM4Z,KAAK,GAAGrP,cAAc,CAACC,IAAf,CAAoByM,sBAApB,EAA4C,KAAKc,KAAjD,EAAwDvO,MAAxD,CAA+DzM,SAA/D,CAAd;;AAEA,QAAI,CAAC6c,KAAK,CAAC7d,MAAX,EAAmB;AACjB;AACD,KAL8B;AAQ/B;;;AACAoE,IAAAA,oBAAoB,CAACyZ,KAAD,EAAQ5Z,MAAR,EAAgBsF,GAAG,KAAKgR,cAAxB,EAAwC,CAACsD,KAAK,CAACpf,QAAN,CAAewF,MAAf,CAAzC,CAApB,CAAqFsY,KAArF;AACD,GAhQkC;;;AAoQb,SAAfjZ,eAAe,CAACnD,MAAD,EAAS;AAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;AAC3B,YAAMC,IAAI,GAAGyP,QAAQ,CAAC1Q,mBAAT,CAA6B,IAA7B,EAAmCjL,MAAnC,CAAb;;AAEA,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AAC9B;AACD;;AAED,UAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;AACvC,cAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;AACD;;AAEDkM,MAAAA,IAAI,CAAClM,MAAD,CAAJ;AACD,KAZM,CAAP;AAaD;;AAEgB,SAAV2d,UAAU,CAACjY,KAAD,EAAQ;AACvB,QAAIA,KAAK,KAAKA,KAAK,CAACgH,MAAN,KAAiB2N,kBAAjB,IAAwC3U,KAAK,CAACK,IAAN,KAAe,OAAf,IAA0BL,KAAK,CAAC0D,GAAN,KAAc8Q,SAArF,CAAT,EAAyG;AACvG;AACD;;AAED,UAAM0D,OAAO,GAAGvP,cAAc,CAACC,IAAf,CAAoBjC,sBAApB,CAAhB;;AAEA,SAAK,IAAIjG,CAAC,GAAG,CAAR,EAAWK,GAAG,GAAGmX,OAAO,CAAC/d,MAA9B,EAAsCuG,CAAC,GAAGK,GAA1C,EAA+CL,CAAC,EAAhD,EAAoD;AAClD,YAAMyX,OAAO,GAAGlC,QAAQ,CAAC3Q,WAAT,CAAqB4S,OAAO,CAACxX,CAAD,CAA5B,CAAhB;;AACA,UAAI,CAACyX,OAAD,IAAYA,OAAO,CAAC3K,OAAR,CAAgBwI,SAAhB,KAA8B,KAA9C,EAAqD;AACnD;AACD;;AAED,UAAI,CAACmC,OAAO,CAACjF,QAAR,EAAL,EAAyB;AACvB;AACD;;AAED,YAAMvR,aAAa,GAAG;AACpBA,QAAAA,aAAa,EAAEwW,OAAO,CAACtT;AADH,OAAtB;;AAIA,UAAI7E,KAAJ,EAAW;AACT,cAAMoY,YAAY,GAAGpY,KAAK,CAACoY,YAAN,EAArB;AACA,cAAMC,YAAY,GAAGD,YAAY,CAACxf,QAAb,CAAsBuf,OAAO,CAAChC,KAA9B,CAArB;;AACA,YACEiC,YAAY,CAACxf,QAAb,CAAsBuf,OAAO,CAACtT,QAA9B,KACCsT,OAAO,CAAC3K,OAAR,CAAgBwI,SAAhB,KAA8B,QAA9B,IAA0C,CAACqC,YAD5C,IAECF,OAAO,CAAC3K,OAAR,CAAgBwI,SAAhB,KAA8B,SAA9B,IAA2CqC,YAH9C,EAIE;AACA;AACD,SATQ;;;AAYT,YAAIF,OAAO,CAAChC,KAAR,CAAcza,QAAd,CAAuBsE,KAAK,CAAC5B,MAA7B,MAA0C4B,KAAK,CAACK,IAAN,KAAe,OAAf,IAA0BL,KAAK,CAAC0D,GAAN,KAAc8Q,SAAzC,IAAqD,qCAAqCxZ,IAArC,CAA0CgF,KAAK,CAAC5B,MAAN,CAAayH,OAAvD,CAA9F,CAAJ,EAAoK;AAClK;AACD;;AAED,YAAI7F,KAAK,CAACK,IAAN,KAAe,OAAnB,EAA4B;AAC1BsB,UAAAA,aAAa,CAACiE,UAAd,GAA2B5F,KAA3B;AACD;AACF;;AAEDmY,MAAAA,OAAO,CAACxB,aAAR,CAAsBhV,aAAtB;AACD;AACF;;AAE0B,SAApB6U,oBAAoB,CAAChe,OAAD,EAAU;AACnC,WAAOU,sBAAsB,CAACV,OAAD,CAAtB,IAAmCA,OAAO,CAAC2D,UAAlD;AACD;;AAE2B,SAArBmc,qBAAqB,CAACtY,KAAD,EAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAI,kBAAkBhF,IAAlB,CAAuBgF,KAAK,CAAC5B,MAAN,CAAayH,OAApC,IACF7F,KAAK,CAAC0D,GAAN,KAAc6Q,SAAd,IAA4BvU,KAAK,CAAC0D,GAAN,KAAc4Q,YAAd,KAC1BtU,KAAK,CAAC0D,GAAN,KAAcgR,cAAd,IAAgC1U,KAAK,CAAC0D,GAAN,KAAc+Q,YAA/C,IACCzU,KAAK,CAAC5B,MAAN,CAAa0H,OAAb,CAAqBqP,aAArB,CAF0B,CAD1B,GAIF,CAACP,cAAc,CAAC5Z,IAAf,CAAoBgF,KAAK,CAAC0D,GAA1B,CAJH,EAImC;AACjC;AACD;;AAED,UAAM6U,QAAQ,GAAG,KAAK9c,SAAL,CAAeC,QAAf,CAAwBwK,iBAAxB,CAAjB;;AAEA,QAAI,CAACqS,QAAD,IAAavY,KAAK,CAAC0D,GAAN,KAAc4Q,YAA/B,EAA2C;AACzC;AACD;;AAEDtU,IAAAA,KAAK,CAAC6D,cAAN;AACA7D,IAAAA,KAAK,CAACwY,eAAN;;AAEA,QAAIld,UAAU,CAAC,IAAD,CAAd,EAAsB;AACpB;AACD;;AAED,UAAMmd,eAAe,GAAG,KAAKtP,OAAL,CAAaxC,sBAAb,IAAqC,IAArC,GAA4CgC,cAAc,CAACW,IAAf,CAAoB,IAApB,EAA0B3C,sBAA1B,EAAgD,CAAhD,CAApE;AACA,UAAM1C,QAAQ,GAAGgS,QAAQ,CAAC1Q,mBAAT,CAA6BkT,eAA7B,CAAjB;;AAEA,QAAIzY,KAAK,CAAC0D,GAAN,KAAc4Q,YAAlB,EAA8B;AAC5BrQ,MAAAA,QAAQ,CAACkP,IAAT;AACA;AACD;;AAED,QAAInT,KAAK,CAAC0D,GAAN,KAAc+Q,YAAd,IAA8BzU,KAAK,CAAC0D,GAAN,KAAcgR,cAAhD,EAAgE;AAC9D,UAAI,CAAC6D,QAAL,EAAe;AACbtU,QAAAA,QAAQ,CAACmP,IAAT;AACD;;AAEDnP,MAAAA,QAAQ,CAAC8T,eAAT,CAAyB/X,KAAzB;;AACA;AACD;;AAED,QAAI,CAACuY,QAAD,IAAavY,KAAK,CAAC0D,GAAN,KAAc6Q,SAA/B,EAA0C;AACxC0B,MAAAA,QAAQ,CAACgC,UAAT;AACD;AACF;;AAvXkC;AA0XrC;AACA;AACA;AACA;AACA;;;AAEA9X,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0Bwc,sBAA1B,EAAkDlO,sBAAlD,EAAwEsP,QAAQ,CAACqC,qBAAjF;AACAnY,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0Bwc,sBAA1B,EAAkDM,aAAlD,EAAiEc,QAAQ,CAACqC,qBAA1E;AACAnY,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,sBAA1B,EAAgDqP,QAAQ,CAACgC,UAAzD;AACA9X,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0Byc,oBAA1B,EAAgDmB,QAAQ,CAACgC,UAAzD;AACA9X,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,sBAA1B,EAAgDD,sBAAhD,EAAsE,UAAU3G,KAAV,EAAiB;AACrFA,EAAAA,KAAK,CAAC6D,cAAN;AACAoS,EAAAA,QAAQ,CAAC1Q,mBAAT,CAA6B,IAA7B,EAAmCuB,MAAnC;AACD,CAHD;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA5J,kBAAkB,CAAC+Y,QAAD,CAAlB;;AChfA;AACA;AACA;AACA;AACA;AACA;AAMA,MAAMyC,sBAAsB,GAAG,mDAA/B;AACA,MAAMC,uBAAuB,GAAG,aAAhC;;AAEA,MAAMC,eAAN,CAAsB;AACpBhU,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgBxM,QAAQ,CAACoE,IAAzB;AACD;;AAEDoc,EAAAA,QAAQ,GAAG;AACT;AACA,UAAMC,aAAa,GAAGzgB,QAAQ,CAACyD,eAAT,CAAyBid,WAA/C;AACA,WAAO7gB,IAAI,CAAC8W,GAAL,CAAS1V,MAAM,CAAC0f,UAAP,GAAoBF,aAA7B,CAAP;AACD;;AAED3F,EAAAA,IAAI,GAAG;AACL,UAAM8F,KAAK,GAAG,KAAKJ,QAAL,EAAd;;AACA,SAAKK,gBAAL,GAFK;;;AAIL,SAAKC,qBAAL,CAA2B,KAAKtU,QAAhC,EAA0C,cAA1C,EAA0DuU,eAAe,IAAIA,eAAe,GAAGH,KAA/F,EAJK;;;AAML,SAAKE,qBAAL,CAA2BT,sBAA3B,EAAmD,cAAnD,EAAmEU,eAAe,IAAIA,eAAe,GAAGH,KAAxG;;AACA,SAAKE,qBAAL,CAA2BR,uBAA3B,EAAoD,aAApD,EAAmES,eAAe,IAAIA,eAAe,GAAGH,KAAxG;AACD;;AAEDC,EAAAA,gBAAgB,GAAG;AACjB,SAAKG,qBAAL,CAA2B,KAAKxU,QAAhC,EAA0C,UAA1C;;AACA,SAAKA,QAAL,CAAcgP,KAAd,CAAoByF,QAApB,GAA+B,QAA/B;AACD;;AAEDH,EAAAA,qBAAqB,CAAC1gB,QAAD,EAAW8gB,SAAX,EAAsB3c,QAAtB,EAAgC;AACnD,UAAM4c,cAAc,GAAG,KAAKX,QAAL,EAAvB;;AACA,UAAMY,oBAAoB,GAAGjhB,OAAO,IAAI;AACtC,UAAIA,OAAO,KAAK,KAAKqM,QAAjB,IAA6BvL,MAAM,CAAC0f,UAAP,GAAoBxgB,OAAO,CAACugB,WAAR,GAAsBS,cAA3E,EAA2F;AACzF;AACD;;AAED,WAAKH,qBAAL,CAA2B7gB,OAA3B,EAAoC+gB,SAApC;;AACA,YAAMH,eAAe,GAAG9f,MAAM,CAACC,gBAAP,CAAwBf,OAAxB,EAAiC+gB,SAAjC,CAAxB;AACA/gB,MAAAA,OAAO,CAACqb,KAAR,CAAc0F,SAAd,IAA4B,GAAE3c,QAAQ,CAACnD,MAAM,CAACC,UAAP,CAAkB0f,eAAlB,CAAD,CAAqC,IAA3E;AACD,KARD;;AAUA,SAAKM,0BAAL,CAAgCjhB,QAAhC,EAA0CghB,oBAA1C;AACD;;AAEDE,EAAAA,KAAK,GAAG;AACN,SAAKC,uBAAL,CAA6B,KAAK/U,QAAlC,EAA4C,UAA5C;;AACA,SAAK+U,uBAAL,CAA6B,KAAK/U,QAAlC,EAA4C,cAA5C;;AACA,SAAK+U,uBAAL,CAA6BlB,sBAA7B,EAAqD,cAArD;;AACA,SAAKkB,uBAAL,CAA6BjB,uBAA7B,EAAsD,aAAtD;AACD;;AAEDU,EAAAA,qBAAqB,CAAC7gB,OAAD,EAAU+gB,SAAV,EAAqB;AACxC,UAAMM,WAAW,GAAGrhB,OAAO,CAACqb,KAAR,CAAc0F,SAAd,CAApB;;AACA,QAAIM,WAAJ,EAAiB;AACfxS,MAAAA,WAAW,CAACC,gBAAZ,CAA6B9O,OAA7B,EAAsC+gB,SAAtC,EAAiDM,WAAjD;AACD;AACF;;AAEDD,EAAAA,uBAAuB,CAACnhB,QAAD,EAAW8gB,SAAX,EAAsB;AAC3C,UAAME,oBAAoB,GAAGjhB,OAAO,IAAI;AACtC,YAAMqC,KAAK,GAAGwM,WAAW,CAACU,gBAAZ,CAA6BvP,OAA7B,EAAsC+gB,SAAtC,CAAd;;AACA,UAAI,OAAO1e,KAAP,KAAiB,WAArB,EAAkC;AAChCrC,QAAAA,OAAO,CAACqb,KAAR,CAAciG,cAAd,CAA6BP,SAA7B;AACD,OAFD,MAEO;AACLlS,QAAAA,WAAW,CAACE,mBAAZ,CAAgC/O,OAAhC,EAAyC+gB,SAAzC;AACA/gB,QAAAA,OAAO,CAACqb,KAAR,CAAc0F,SAAd,IAA2B1e,KAA3B;AACD;AACF,KARD;;AAUA,SAAK6e,0BAAL,CAAgCjhB,QAAhC,EAA0CghB,oBAA1C;AACD;;AAEDC,EAAAA,0BAA0B,CAACjhB,QAAD,EAAWshB,QAAX,EAAqB;AAC7C,QAAIhgB,SAAS,CAACtB,QAAD,CAAb,EAAyB;AACvBshB,MAAAA,QAAQ,CAACthB,QAAD,CAAR;AACD,KAFD,MAEO;AACLkQ,MAAAA,cAAc,CAACC,IAAf,CAAoBnQ,QAApB,EAA8B,KAAKoM,QAAnC,EAA6CnK,OAA7C,CAAqDqf,QAArD;AACD;AACF;;AAEDC,EAAAA,aAAa,GAAG;AACd,WAAO,KAAKnB,QAAL,KAAkB,CAAzB;AACD;;AA/EmB;;ACdtB;AACA;AACA;AACA;AACA;AACA;AAKA,MAAMzO,SAAO,GAAG;AACd6P,EAAAA,SAAS,EAAE,gBADG;AAEd9e,EAAAA,SAAS,EAAE,IAFG;AAEG;AACjBkK,EAAAA,UAAU,EAAE,KAHE;AAId6U,EAAAA,WAAW,EAAE,MAJC;AAIO;AACrBC,EAAAA,aAAa,EAAE;AALD,CAAhB;AAQA,MAAMxP,aAAW,GAAG;AAClBsP,EAAAA,SAAS,EAAE,QADO;AAElB9e,EAAAA,SAAS,EAAE,SAFO;AAGlBkK,EAAAA,UAAU,EAAE,SAHM;AAIlB6U,EAAAA,WAAW,EAAE,kBAJK;AAKlBC,EAAAA,aAAa,EAAE;AALG,CAApB;AAOA,MAAM7c,MAAI,GAAG,UAAb;AACA,MAAM2I,iBAAe,GAAG,MAAxB;AACA,MAAMC,iBAAe,GAAG,MAAxB;AAEA,MAAMkU,eAAe,GAAI,gBAAe9c,MAAK,EAA7C;;AAEA,MAAM+c,QAAN,CAAe;AACbzV,EAAAA,WAAW,CAACtK,MAAD,EAAS;AAClB,SAAKkT,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;AACA,SAAKggB,WAAL,GAAmB,KAAnB;AACA,SAAKzV,QAAL,GAAgB,IAAhB;AACD;;AAEDuO,EAAAA,IAAI,CAACxW,QAAD,EAAW;AACb,QAAI,CAAC,KAAK4Q,OAAL,CAAarS,SAAlB,EAA6B;AAC3ByC,MAAAA,OAAO,CAAChB,QAAD,CAAP;AACA;AACD;;AAED,SAAK2d,OAAL;;AAEA,QAAI,KAAK/M,OAAL,CAAanI,UAAjB,EAA6B;AAC3BhJ,MAAAA,MAAM,CAAC,KAAKme,WAAL,EAAD,CAAN;AACD;;AAED,SAAKA,WAAL,GAAmB/e,SAAnB,CAA6BoU,GAA7B,CAAiC3J,iBAAjC;;AAEA,SAAKuU,iBAAL,CAAuB,MAAM;AAC3B7c,MAAAA,OAAO,CAAChB,QAAD,CAAP;AACD,KAFD;AAGD;;AAEDuW,EAAAA,IAAI,CAACvW,QAAD,EAAW;AACb,QAAI,CAAC,KAAK4Q,OAAL,CAAarS,SAAlB,EAA6B;AAC3ByC,MAAAA,OAAO,CAAChB,QAAD,CAAP;AACA;AACD;;AAED,SAAK4d,WAAL,GAAmB/e,SAAnB,CAA6B+I,MAA7B,CAAoC0B,iBAApC;;AAEA,SAAKuU,iBAAL,CAAuB,MAAM;AAC3B,WAAKzV,OAAL;AACApH,MAAAA,OAAO,CAAChB,QAAD,CAAP;AACD,KAHD;AAID,GAtCY;;;AA0Cb4d,EAAAA,WAAW,GAAG;AACZ,QAAI,CAAC,KAAK3V,QAAV,EAAoB;AAClB,YAAM6V,QAAQ,GAAGriB,QAAQ,CAACsiB,aAAT,CAAuB,KAAvB,CAAjB;AACAD,MAAAA,QAAQ,CAACT,SAAT,GAAqB,KAAKzM,OAAL,CAAayM,SAAlC;;AACA,UAAI,KAAKzM,OAAL,CAAanI,UAAjB,EAA6B;AAC3BqV,QAAAA,QAAQ,CAACjf,SAAT,CAAmBoU,GAAnB,CAAuB5J,iBAAvB;AACD;;AAED,WAAKpB,QAAL,GAAgB6V,QAAhB;AACD;;AAED,WAAO,KAAK7V,QAAZ;AACD;;AAED4I,EAAAA,UAAU,CAACnT,MAAD,EAAS;AACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,SADI;AAEP,UAAI,OAAO9P,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,EAA1C;AAFO,KAAT,CADiB;;AAOjBA,IAAAA,MAAM,CAAC4f,WAAP,GAAqBhgB,UAAU,CAACI,MAAM,CAAC4f,WAAR,CAA/B;AACA9f,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAeqQ,aAAf,CAAf;AACA,WAAOrQ,MAAP;AACD;;AAEDigB,EAAAA,OAAO,GAAG;AACR,QAAI,KAAKD,WAAT,EAAsB;AACpB;AACD;;AAED,SAAK9M,OAAL,CAAa0M,WAAb,CAAyBU,MAAzB,CAAgC,KAAKJ,WAAL,EAAhC;;AAEAra,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKmY,WAAL,EAAhB,EAAoCJ,eAApC,EAAqD,MAAM;AACzDxc,MAAAA,OAAO,CAAC,KAAK4P,OAAL,CAAa2M,aAAd,CAAP;AACD,KAFD;AAIA,SAAKG,WAAL,GAAmB,IAAnB;AACD;;AAEDtV,EAAAA,OAAO,GAAG;AACR,QAAI,CAAC,KAAKsV,WAAV,EAAuB;AACrB;AACD;;AAEDna,IAAAA,YAAY,CAACC,GAAb,CAAiB,KAAKyE,QAAtB,EAAgCuV,eAAhC;;AAEA,SAAKvV,QAAL,CAAcL,MAAd;;AACA,SAAK8V,WAAL,GAAmB,KAAnB;AACD;;AAEDG,EAAAA,iBAAiB,CAAC7d,QAAD,EAAW;AAC1BiB,IAAAA,sBAAsB,CAACjB,QAAD,EAAW,KAAK4d,WAAL,EAAX,EAA+B,KAAKhN,OAAL,CAAanI,UAA5C,CAAtB;AACD;;AA/FY;;AC/Bf;AACA;AACA;AACA;AACA;AACA;AAMA,MAAM+E,SAAO,GAAG;AACdyQ,EAAAA,WAAW,EAAE,IADC;AACK;AACnBC,EAAAA,SAAS,EAAE;AAFG,CAAhB;AAKA,MAAMnQ,aAAW,GAAG;AAClBkQ,EAAAA,WAAW,EAAE,SADK;AAElBC,EAAAA,SAAS,EAAE;AAFO,CAApB;AAKA,MAAMxd,MAAI,GAAG,WAAb;AACA,MAAMyH,UAAQ,GAAG,cAAjB;AACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;AACA,MAAMgW,eAAa,GAAI,UAAS9V,WAAU,EAA1C;AACA,MAAM+V,iBAAiB,GAAI,cAAa/V,WAAU,EAAlD;AAEA,MAAMuP,OAAO,GAAG,KAAhB;AACA,MAAMyG,eAAe,GAAG,SAAxB;AACA,MAAMC,gBAAgB,GAAG,UAAzB;;AAEA,MAAMC,SAAN,CAAgB;AACdvW,EAAAA,WAAW,CAACtK,MAAD,EAAS;AAClB,SAAKkT,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;AACA,SAAK8gB,SAAL,GAAiB,KAAjB;AACA,SAAKC,oBAAL,GAA4B,IAA5B;AACD;;AAEDC,EAAAA,QAAQ,GAAG;AACT,UAAM;AAAET,MAAAA,WAAF;AAAeC,MAAAA;AAAf,QAA6B,KAAKtN,OAAxC;;AAEA,QAAI,KAAK4N,SAAT,EAAoB;AAClB;AACD;;AAED,QAAIN,SAAJ,EAAe;AACbD,MAAAA,WAAW,CAACnE,KAAZ;AACD;;AAEDvW,IAAAA,YAAY,CAACC,GAAb,CAAiB/H,QAAjB,EAA2B4M,WAA3B,EAXS;;AAYT9E,IAAAA,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0B0iB,eAA1B,EAAyC/a,KAAK,IAAI,KAAKub,cAAL,CAAoBvb,KAApB,CAAlD;AACAG,IAAAA,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0B2iB,iBAA1B,EAA6Chb,KAAK,IAAI,KAAKwb,cAAL,CAAoBxb,KAApB,CAAtD;AAEA,SAAKob,SAAL,GAAiB,IAAjB;AACD;;AAEDK,EAAAA,UAAU,GAAG;AACX,QAAI,CAAC,KAAKL,SAAV,EAAqB;AACnB;AACD;;AAED,SAAKA,SAAL,GAAiB,KAAjB;AACAjb,IAAAA,YAAY,CAACC,GAAb,CAAiB/H,QAAjB,EAA2B4M,WAA3B;AACD,GAhCa;;;AAoCdsW,EAAAA,cAAc,CAACvb,KAAD,EAAQ;AACpB,UAAM;AAAE5B,MAAAA;AAAF,QAAa4B,KAAnB;AACA,UAAM;AAAE6a,MAAAA;AAAF,QAAkB,KAAKrN,OAA7B;;AAEA,QACEpP,MAAM,KAAK/F,QAAX,IACA+F,MAAM,KAAKyc,WADX,IAEAA,WAAW,CAACnf,QAAZ,CAAqB0C,MAArB,CAHF,EAIE;AACA;AACD;;AAED,UAAMsd,QAAQ,GAAG/S,cAAc,CAACgB,iBAAf,CAAiCkR,WAAjC,CAAjB;;AAEA,QAAIa,QAAQ,CAACvhB,MAAT,KAAoB,CAAxB,EAA2B;AACzB0gB,MAAAA,WAAW,CAACnE,KAAZ;AACD,KAFD,MAEO,IAAI,KAAK2E,oBAAL,KAA8BH,gBAAlC,EAAoD;AACzDQ,MAAAA,QAAQ,CAACA,QAAQ,CAACvhB,MAAT,GAAkB,CAAnB,CAAR,CAA8Buc,KAA9B;AACD,KAFM,MAEA;AACLgF,MAAAA,QAAQ,CAAC,CAAD,CAAR,CAAYhF,KAAZ;AACD;AACF;;AAED8E,EAAAA,cAAc,CAACxb,KAAD,EAAQ;AACpB,QAAIA,KAAK,CAAC0D,GAAN,KAAc8Q,OAAlB,EAA2B;AACzB;AACD;;AAED,SAAK6G,oBAAL,GAA4Brb,KAAK,CAAC2b,QAAN,GAAiBT,gBAAjB,GAAoCD,eAAhE;AACD;;AAEDxN,EAAAA,UAAU,CAACnT,MAAD,EAAS;AACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,SADI;AAEP,UAAI,OAAO9P,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,EAA1C;AAFO,KAAT;AAIAF,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAeqQ,aAAf,CAAf;AACA,WAAOrQ,MAAP;AACD;;AA1Ea;;AC/BhB;AACA;AACA;AACA;AACA;AACA;AAmBA;AACA;AACA;AACA;AACA;;AAEA,MAAMgD,MAAI,GAAG,OAAb;AACA,MAAMyH,UAAQ,GAAG,UAAjB;AACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;AACA,MAAM0B,cAAY,GAAG,WAArB;AACA,MAAM6N,YAAU,GAAG,QAAnB;AAEA,MAAMlK,SAAO,GAAG;AACdsQ,EAAAA,QAAQ,EAAE,IADI;AAEdpQ,EAAAA,QAAQ,EAAE,IAFI;AAGdoM,EAAAA,KAAK,EAAE;AAHO,CAAhB;AAMA,MAAM/L,aAAW,GAAG;AAClB+P,EAAAA,QAAQ,EAAE,kBADQ;AAElBpQ,EAAAA,QAAQ,EAAE,SAFQ;AAGlBoM,EAAAA,KAAK,EAAE;AAHW,CAApB;AAMA,MAAM3E,YAAU,GAAI,OAAM9M,WAAU,EAApC;AACA,MAAM2W,oBAAoB,GAAI,gBAAe3W,WAAU,EAAvD;AACA,MAAM+M,cAAY,GAAI,SAAQ/M,WAAU,EAAxC;AACA,MAAM4M,YAAU,GAAI,OAAM5M,WAAU,EAApC;AACA,MAAM6M,aAAW,GAAI,QAAO7M,WAAU,EAAtC;AACA,MAAM4W,YAAY,GAAI,SAAQ5W,WAAU,EAAxC;AACA,MAAM6W,mBAAmB,GAAI,gBAAe7W,WAAU,EAAtD;AACA,MAAM8W,uBAAqB,GAAI,kBAAiB9W,WAAU,EAA1D;AACA,MAAM+W,qBAAqB,GAAI,kBAAiB/W,WAAU,EAA1D;AACA,MAAMgX,uBAAuB,GAAI,oBAAmBhX,WAAU,EAA9D;AACA,MAAM2B,sBAAoB,GAAI,QAAO3B,WAAU,GAAEwB,cAAa,EAA9D;AAEA,MAAMyV,eAAe,GAAG,YAAxB;AACA,MAAMjW,iBAAe,GAAG,MAAxB;AACA,MAAMC,iBAAe,GAAG,MAAxB;AACA,MAAMiW,iBAAiB,GAAG,cAA1B;AAEA,MAAMC,eAAe,GAAG,eAAxB;AACA,MAAMC,mBAAmB,GAAG,aAA5B;AACA,MAAM1V,sBAAoB,GAAG,0BAA7B;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAM2V,KAAN,SAAoB3X,aAApB,CAAkC;AAChCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;AAC3B,UAAM9B,OAAN;AAEA,SAAKgV,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;AACA,SAAKiiB,OAAL,GAAe5T,cAAc,CAACK,OAAf,CAAuBoT,eAAvB,EAAwC,KAAKvX,QAA7C,CAAf;AACA,SAAK2X,SAAL,GAAiB,KAAKC,mBAAL,EAAjB;AACA,SAAKC,UAAL,GAAkB,KAAKC,oBAAL,EAAlB;AACA,SAAKzJ,QAAL,GAAgB,KAAhB;AACA,SAAK0J,oBAAL,GAA4B,KAA5B;AACA,SAAKnK,gBAAL,GAAwB,KAAxB;AACA,SAAKoK,UAAL,GAAkB,IAAIjE,eAAJ,EAAlB;AACD,GAZ+B;;;AAgBd,aAAPxO,OAAO,GAAG;AACnB,WAAOA,SAAP;AACD;;AAEc,aAAJ9M,IAAI,GAAG;AAChB,WAAOA,MAAP;AACD,GAtB+B;;;AA0BhCwJ,EAAAA,MAAM,CAACnF,aAAD,EAAgB;AACpB,WAAO,KAAKuR,QAAL,GAAgB,KAAKC,IAAL,EAAhB,GAA8B,KAAKC,IAAL,CAAUzR,aAAV,CAArC;AACD;;AAEDyR,EAAAA,IAAI,CAACzR,aAAD,EAAgB;AAClB,QAAI,KAAKuR,QAAL,IAAiB,KAAKT,gBAA1B,EAA4C;AAC1C;AACD;;AAED,UAAM8D,SAAS,GAAGpW,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCgN,YAApC,EAAgD;AAChElQ,MAAAA;AADgE,KAAhD,CAAlB;;AAIA,QAAI4U,SAAS,CAACtT,gBAAd,EAAgC;AAC9B;AACD;;AAED,SAAKiQ,QAAL,GAAgB,IAAhB;;AAEA,QAAI,KAAK4J,WAAL,EAAJ,EAAwB;AACtB,WAAKrK,gBAAL,GAAwB,IAAxB;AACD;;AAED,SAAKoK,UAAL,CAAgB1J,IAAhB;;AAEA9a,IAAAA,QAAQ,CAACoE,IAAT,CAAchB,SAAd,CAAwBoU,GAAxB,CAA4BqM,eAA5B;;AAEA,SAAKa,aAAL;;AAEA,SAAKC,eAAL;;AACA,SAAKC,eAAL;;AAEA9c,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKka,OAArB,EAA8BN,uBAA9B,EAAuD,MAAM;AAC3D9b,MAAAA,YAAY,CAACmC,GAAb,CAAiB,KAAKuC,QAAtB,EAAgCmX,qBAAhC,EAAuDhc,KAAK,IAAI;AAC9D,YAAIA,KAAK,CAAC5B,MAAN,KAAiB,KAAKyG,QAA1B,EAAoC;AAClC,eAAK+X,oBAAL,GAA4B,IAA5B;AACD;AACF,OAJD;AAKD,KAND;;AAQA,SAAKM,aAAL,CAAmB,MAAM,KAAKC,YAAL,CAAkBxb,aAAlB,CAAzB;AACD;;AAEDwR,EAAAA,IAAI,GAAG;AACL,QAAI,CAAC,KAAKD,QAAN,IAAkB,KAAKT,gBAA3B,EAA6C;AAC3C;AACD;;AAED,UAAMqE,SAAS,GAAG3W,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCkN,YAApC,CAAlB;;AAEA,QAAI+E,SAAS,CAAC7T,gBAAd,EAAgC;AAC9B;AACD;;AAED,SAAKiQ,QAAL,GAAgB,KAAhB;;AACA,UAAM7N,UAAU,GAAG,KAAKyX,WAAL,EAAnB;;AAEA,QAAIzX,UAAJ,EAAgB;AACd,WAAKoN,gBAAL,GAAwB,IAAxB;AACD;;AAED,SAAKuK,eAAL;;AACA,SAAKC,eAAL;;AAEA,SAAKP,UAAL,CAAgBjB,UAAhB;;AAEA,SAAK5W,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0B,iBAA/B;;AAEA/F,IAAAA,YAAY,CAACC,GAAb,CAAiB,KAAKyE,QAAtB,EAAgCiX,mBAAhC;AACA3b,IAAAA,YAAY,CAACC,GAAb,CAAiB,KAAKmc,OAAtB,EAA+BN,uBAA/B;;AAEA,SAAK7W,cAAL,CAAoB,MAAM,KAAKgY,UAAL,EAA1B,EAA6C,KAAKvY,QAAlD,EAA4DQ,UAA5D;AACD;;AAEDL,EAAAA,OAAO,GAAG;AACR,KAAC1L,MAAD,EAAS,KAAKijB,OAAd,EACG7hB,OADH,CACW2iB,WAAW,IAAIld,YAAY,CAACC,GAAb,CAAiBid,WAAjB,EAA8BpY,WAA9B,CAD1B;;AAGA,SAAKuX,SAAL,CAAexX,OAAf;;AACA,SAAK0X,UAAL,CAAgBjB,UAAhB;;AACA,UAAMzW,OAAN;AACD;;AAEDsY,EAAAA,YAAY,GAAG;AACb,SAAKP,aAAL;AACD,GA/G+B;;;AAmHhCN,EAAAA,mBAAmB,GAAG;AACpB,WAAO,IAAIpC,QAAJ,CAAa;AAClBlf,MAAAA,SAAS,EAAE6G,OAAO,CAAC,KAAKwL,OAAL,CAAakN,QAAd,CADA;AACyB;AAC3CrV,MAAAA,UAAU,EAAE,KAAKyX,WAAL;AAFM,KAAb,CAAP;AAID;;AAEDH,EAAAA,oBAAoB,GAAG;AACrB,WAAO,IAAIxB,SAAJ,CAAc;AACnBN,MAAAA,WAAW,EAAE,KAAKhW;AADC,KAAd,CAAP;AAGD;;AAED4I,EAAAA,UAAU,CAACnT,MAAD,EAAS;AACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,SADI;AAEP,SAAG/C,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAFI;AAGP,UAAI,OAAOvK,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,EAA1C;AAHO,KAAT;AAKAF,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAeqQ,aAAf,CAAf;AACA,WAAOrQ,MAAP;AACD;;AAED6iB,EAAAA,YAAY,CAACxb,aAAD,EAAgB;AAC1B,UAAM0D,UAAU,GAAG,KAAKyX,WAAL,EAAnB;;AACA,UAAMS,SAAS,GAAG5U,cAAc,CAACK,OAAf,CAAuBqT,mBAAvB,EAA4C,KAAKE,OAAjD,CAAlB;;AAEA,QAAI,CAAC,KAAK1X,QAAL,CAAc1I,UAAf,IAA6B,KAAK0I,QAAL,CAAc1I,UAAd,CAAyBlC,QAAzB,KAAsCsB,IAAI,CAACC,YAA5E,EAA0F;AACxF;AACAnD,MAAAA,QAAQ,CAACoE,IAAT,CAAcme,MAAd,CAAqB,KAAK/V,QAA1B;AACD;;AAED,SAAKA,QAAL,CAAcgP,KAAd,CAAoBiC,OAApB,GAA8B,OAA9B;;AACA,SAAKjR,QAAL,CAAc2C,eAAd,CAA8B,aAA9B;;AACA,SAAK3C,QAAL,CAAckC,YAAd,CAA2B,YAA3B,EAAyC,IAAzC;;AACA,SAAKlC,QAAL,CAAckC,YAAd,CAA2B,MAA3B,EAAmC,QAAnC;;AACA,SAAKlC,QAAL,CAAc2Y,SAAd,GAA0B,CAA1B;;AAEA,QAAID,SAAJ,EAAe;AACbA,MAAAA,SAAS,CAACC,SAAV,GAAsB,CAAtB;AACD;;AAED,QAAInY,UAAJ,EAAgB;AACdhJ,MAAAA,MAAM,CAAC,KAAKwI,QAAN,CAAN;AACD;;AAED,SAAKA,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4B3J,iBAA5B;;AAEA,UAAMuX,kBAAkB,GAAG,MAAM;AAC/B,UAAI,KAAKjQ,OAAL,CAAakJ,KAAjB,EAAwB;AACtB,aAAKgG,UAAL,CAAgBpB,QAAhB;AACD;;AAED,WAAK7I,gBAAL,GAAwB,KAAxB;AACAtS,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCiN,aAApC,EAAiD;AAC/CnQ,QAAAA;AAD+C,OAAjD;AAGD,KATD;;AAWA,SAAKyD,cAAL,CAAoBqY,kBAApB,EAAwC,KAAKlB,OAA7C,EAAsDlX,UAAtD;AACD;;AAED2X,EAAAA,eAAe,GAAG;AAChB,QAAI,KAAK9J,QAAT,EAAmB;AACjB/S,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BkX,uBAA/B,EAAsD/b,KAAK,IAAI;AAC7D,YAAI,KAAKwN,OAAL,CAAalD,QAAb,IAAyBtK,KAAK,CAAC0D,GAAN,KAAc4Q,YAA3C,EAAuD;AACrDtU,UAAAA,KAAK,CAAC6D,cAAN;AACA,eAAKsP,IAAL;AACD,SAHD,MAGO,IAAI,CAAC,KAAK3F,OAAL,CAAalD,QAAd,IAA0BtK,KAAK,CAAC0D,GAAN,KAAc4Q,YAA5C,EAAwD;AAC7D,eAAKoJ,0BAAL;AACD;AACF,OAPD;AAQD,KATD,MASO;AACLvd,MAAAA,YAAY,CAACC,GAAb,CAAiB,KAAKyE,QAAtB,EAAgCkX,uBAAhC;AACD;AACF;;AAEDkB,EAAAA,eAAe,GAAG;AAChB,QAAI,KAAK/J,QAAT,EAAmB;AACjB/S,MAAAA,YAAY,CAACkC,EAAb,CAAgB/I,MAAhB,EAAwBuiB,YAAxB,EAAsC,MAAM,KAAKkB,aAAL,EAA5C;AACD,KAFD,MAEO;AACL5c,MAAAA,YAAY,CAACC,GAAb,CAAiB9G,MAAjB,EAAyBuiB,YAAzB;AACD;AACF;;AAEDuB,EAAAA,UAAU,GAAG;AACX,SAAKvY,QAAL,CAAcgP,KAAd,CAAoBiC,OAApB,GAA8B,MAA9B;;AACA,SAAKjR,QAAL,CAAckC,YAAd,CAA2B,aAA3B,EAA0C,IAA1C;;AACA,SAAKlC,QAAL,CAAc2C,eAAd,CAA8B,YAA9B;;AACA,SAAK3C,QAAL,CAAc2C,eAAd,CAA8B,MAA9B;;AACA,SAAKiL,gBAAL,GAAwB,KAAxB;;AACA,SAAK+J,SAAL,CAAerJ,IAAf,CAAoB,MAAM;AACxB9a,MAAAA,QAAQ,CAACoE,IAAT,CAAchB,SAAd,CAAwB+I,MAAxB,CAA+B0X,eAA/B;;AACA,WAAKyB,iBAAL;;AACA,WAAKd,UAAL,CAAgBlD,KAAhB;;AACAxZ,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCmN,cAApC;AACD,KALD;AAMD;;AAEDkL,EAAAA,aAAa,CAACtgB,QAAD,EAAW;AACtBuD,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BiX,mBAA/B,EAAoD9b,KAAK,IAAI;AAC3D,UAAI,KAAK4c,oBAAT,EAA+B;AAC7B,aAAKA,oBAAL,GAA4B,KAA5B;AACA;AACD;;AAED,UAAI5c,KAAK,CAAC5B,MAAN,KAAiB4B,KAAK,CAAC4d,aAA3B,EAA0C;AACxC;AACD;;AAED,UAAI,KAAKpQ,OAAL,CAAakN,QAAb,KAA0B,IAA9B,EAAoC;AAClC,aAAKvH,IAAL;AACD,OAFD,MAEO,IAAI,KAAK3F,OAAL,CAAakN,QAAb,KAA0B,QAA9B,EAAwC;AAC7C,aAAKgD,0BAAL;AACD;AACF,KAfD;;AAiBA,SAAKlB,SAAL,CAAepJ,IAAf,CAAoBxW,QAApB;AACD;;AAEDkgB,EAAAA,WAAW,GAAG;AACZ,WAAO,KAAKjY,QAAL,CAAcpJ,SAAd,CAAwBC,QAAxB,CAAiCuK,iBAAjC,CAAP;AACD;;AAEDyX,EAAAA,0BAA0B,GAAG;AAC3B,UAAM5G,SAAS,GAAG3W,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoC+W,oBAApC,CAAlB;;AACA,QAAI9E,SAAS,CAAC7T,gBAAd,EAAgC;AAC9B;AACD;;AAED,UAAM;AAAExH,MAAAA,SAAF;AAAaoiB,MAAAA,YAAb;AAA2BhK,MAAAA;AAA3B,QAAqC,KAAKhP,QAAhD;AACA,UAAMiZ,kBAAkB,GAAGD,YAAY,GAAGxlB,QAAQ,CAACyD,eAAT,CAAyBiiB,YAAnE,CAP2B;;AAU3B,QAAK,CAACD,kBAAD,IAAuBjK,KAAK,CAACmK,SAAN,KAAoB,QAA5C,IAAyDviB,SAAS,CAACC,QAAV,CAAmBygB,iBAAnB,CAA7D,EAAoG;AAClG;AACD;;AAED,QAAI,CAAC2B,kBAAL,EAAyB;AACvBjK,MAAAA,KAAK,CAACmK,SAAN,GAAkB,QAAlB;AACD;;AAEDviB,IAAAA,SAAS,CAACoU,GAAV,CAAcsM,iBAAd;;AACA,SAAK/W,cAAL,CAAoB,MAAM;AACxB3J,MAAAA,SAAS,CAAC+I,MAAV,CAAiB2X,iBAAjB;;AACA,UAAI,CAAC2B,kBAAL,EAAyB;AACvB,aAAK1Y,cAAL,CAAoB,MAAM;AACxByO,UAAAA,KAAK,CAACmK,SAAN,GAAkB,EAAlB;AACD,SAFD,EAEG,KAAKzB,OAFR;AAGD;AACF,KAPD,EAOG,KAAKA,OAPR;;AASA,SAAK1X,QAAL,CAAc6R,KAAd;AACD,GA5Q+B;AA+QhC;AACA;;;AAEAqG,EAAAA,aAAa,GAAG;AACd,UAAMe,kBAAkB,GAAG,KAAKjZ,QAAL,CAAcgZ,YAAd,GAA6BxlB,QAAQ,CAACyD,eAAT,CAAyBiiB,YAAjF;;AACA,UAAMvE,cAAc,GAAG,KAAKqD,UAAL,CAAgBhE,QAAhB,EAAvB;;AACA,UAAMoF,iBAAiB,GAAGzE,cAAc,GAAG,CAA3C;;AAEA,QAAK,CAACyE,iBAAD,IAAsBH,kBAAtB,IAA4C,CAAC9gB,KAAK,EAAnD,IAA2DihB,iBAAiB,IAAI,CAACH,kBAAtB,IAA4C9gB,KAAK,EAAhH,EAAqH;AACnH,WAAK6H,QAAL,CAAcgP,KAAd,CAAoBqK,WAApB,GAAmC,GAAE1E,cAAe,IAApD;AACD;;AAED,QAAKyE,iBAAiB,IAAI,CAACH,kBAAtB,IAA4C,CAAC9gB,KAAK,EAAnD,IAA2D,CAACihB,iBAAD,IAAsBH,kBAAtB,IAA4C9gB,KAAK,EAAhH,EAAqH;AACnH,WAAK6H,QAAL,CAAcgP,KAAd,CAAoBsK,YAApB,GAAoC,GAAE3E,cAAe,IAArD;AACD;AACF;;AAEDmE,EAAAA,iBAAiB,GAAG;AAClB,SAAK9Y,QAAL,CAAcgP,KAAd,CAAoBqK,WAApB,GAAkC,EAAlC;AACA,SAAKrZ,QAAL,CAAcgP,KAAd,CAAoBsK,YAApB,GAAmC,EAAnC;AACD,GAnS+B;;;AAuSV,SAAf1gB,eAAe,CAACnD,MAAD,EAASqH,aAAT,EAAwB;AAC5C,WAAO,KAAK4E,IAAL,CAAU,YAAY;AAC3B,YAAMC,IAAI,GAAG8V,KAAK,CAAC/W,mBAAN,CAA0B,IAA1B,EAAgCjL,MAAhC,CAAb;;AAEA,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AAC9B;AACD;;AAED,UAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;AACvC,cAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;AACD;;AAEDkM,MAAAA,IAAI,CAAClM,MAAD,CAAJ,CAAaqH,aAAb;AACD,KAZM,CAAP;AAaD;;AArT+B;AAwTlC;AACA;AACA;AACA;AACA;;;AAEAxB,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,sBAA1B,EAAgDD,sBAAhD,EAAsE,UAAU3G,KAAV,EAAiB;AACrF,QAAM5B,MAAM,GAAGlF,sBAAsB,CAAC,IAAD,CAArC;;AAEA,MAAI,CAAC,GAAD,EAAM,MAAN,EAAcN,QAAd,CAAuB,KAAKiN,OAA5B,CAAJ,EAA0C;AACxC7F,IAAAA,KAAK,CAAC6D,cAAN;AACD;;AAED1D,EAAAA,YAAY,CAACmC,GAAb,CAAiBlE,MAAjB,EAAyByT,YAAzB,EAAqC0E,SAAS,IAAI;AAChD,QAAIA,SAAS,CAACtT,gBAAd,EAAgC;AAC9B;AACA;AACD;;AAED9C,IAAAA,YAAY,CAACmC,GAAb,CAAiBlE,MAAjB,EAAyB4T,cAAzB,EAAuC,MAAM;AAC3C,UAAI7W,SAAS,CAAC,IAAD,CAAb,EAAqB;AACnB,aAAKub,KAAL;AACD;AACF,KAJD;AAKD,GAXD;AAaA,QAAMlQ,IAAI,GAAG8V,KAAK,CAAC/W,mBAAN,CAA0BnH,MAA1B,CAAb;AAEAoI,EAAAA,IAAI,CAACM,MAAL,CAAY,IAAZ;AACD,CAvBD;AAyBArB,oBAAoB,CAAC6W,KAAD,CAApB;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEApf,kBAAkB,CAACof,KAAD,CAAlB;;AC3aA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;AACA;AACA;AACA;;AAEA,MAAMhf,MAAI,GAAG,WAAb;AACA,MAAMyH,UAAQ,GAAG,cAAjB;AACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;AACA,MAAM0B,cAAY,GAAG,WAArB;AACA,MAAMmF,qBAAmB,GAAI,OAAM3G,WAAU,GAAEwB,cAAa,EAA5D;AACA,MAAM6N,UAAU,GAAG,QAAnB;AAEA,MAAMlK,SAAO,GAAG;AACdsQ,EAAAA,QAAQ,EAAE,IADI;AAEdpQ,EAAAA,QAAQ,EAAE,IAFI;AAGd8T,EAAAA,MAAM,EAAE;AAHM,CAAhB;AAMA,MAAMzT,aAAW,GAAG;AAClB+P,EAAAA,QAAQ,EAAE,SADQ;AAElBpQ,EAAAA,QAAQ,EAAE,SAFQ;AAGlB8T,EAAAA,MAAM,EAAE;AAHU,CAApB;AAMA,MAAMlY,iBAAe,GAAG,MAAxB;AACA,MAAMmY,mBAAmB,GAAG,oBAA5B;AACA,MAAMC,aAAa,GAAG,iBAAtB;AAEA,MAAMzM,YAAU,GAAI,OAAM5M,WAAU,EAApC;AACA,MAAM6M,aAAW,GAAI,QAAO7M,WAAU,EAAtC;AACA,MAAM8M,YAAU,GAAI,OAAM9M,WAAU,EAApC;AACA,MAAM+M,cAAY,GAAI,SAAQ/M,WAAU,EAAxC;AACA,MAAM2B,sBAAoB,GAAI,QAAO3B,WAAU,GAAEwB,cAAa,EAA9D;AACA,MAAMsV,qBAAqB,GAAI,kBAAiB9W,WAAU,EAA1D;AAEA,MAAM0B,sBAAoB,GAAG,8BAA7B;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAM4X,SAAN,SAAwB5Z,aAAxB,CAAsC;AACpCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;AAC3B,UAAM9B,OAAN;AAEA,SAAKgV,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;AACA,SAAK4Y,QAAL,GAAgB,KAAhB;AACA,SAAKsJ,SAAL,GAAiB,KAAKC,mBAAL,EAAjB;AACA,SAAKC,UAAL,GAAkB,KAAKC,oBAAL,EAAlB;;AACA,SAAK3O,kBAAL;AACD,GATmC;;;AAarB,aAAJ1Q,IAAI,GAAG;AAChB,WAAOA,MAAP;AACD;;AAEiB,aAAP8M,OAAO,GAAG;AACnB,WAAOA,SAAP;AACD,GAnBmC;;;AAuBpCtD,EAAAA,MAAM,CAACnF,aAAD,EAAgB;AACpB,WAAO,KAAKuR,QAAL,GAAgB,KAAKC,IAAL,EAAhB,GAA8B,KAAKC,IAAL,CAAUzR,aAAV,CAArC;AACD;;AAEDyR,EAAAA,IAAI,CAACzR,aAAD,EAAgB;AAClB,QAAI,KAAKuR,QAAT,EAAmB;AACjB;AACD;;AAED,UAAMqD,SAAS,GAAGpW,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCgN,YAApC,EAAgD;AAAElQ,MAAAA;AAAF,KAAhD,CAAlB;;AAEA,QAAI4U,SAAS,CAACtT,gBAAd,EAAgC;AAC9B;AACD;;AAED,SAAKiQ,QAAL,GAAgB,IAAhB;AACA,SAAKrO,QAAL,CAAcgP,KAAd,CAAoB2K,UAApB,GAAiC,SAAjC;;AAEA,SAAKhC,SAAL,CAAepJ,IAAf;;AAEA,QAAI,CAAC,KAAK5F,OAAL,CAAa4Q,MAAlB,EAA0B;AACxB,UAAIxF,eAAJ,GAAsBzF,IAAtB;AACD;;AAED,SAAKtO,QAAL,CAAc2C,eAAd,CAA8B,aAA9B;;AACA,SAAK3C,QAAL,CAAckC,YAAd,CAA2B,YAA3B,EAAyC,IAAzC;;AACA,SAAKlC,QAAL,CAAckC,YAAd,CAA2B,MAA3B,EAAmC,QAAnC;;AACA,SAAKlC,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4B3J,iBAA5B;;AAEA,UAAMmL,gBAAgB,GAAG,MAAM;AAC7B,UAAI,CAAC,KAAK7D,OAAL,CAAa4Q,MAAlB,EAA0B;AACxB,aAAK1B,UAAL,CAAgBpB,QAAhB;AACD;;AAEDnb,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCiN,aAApC,EAAiD;AAAEnQ,QAAAA;AAAF,OAAjD;AACD,KAND;;AAQA,SAAKyD,cAAL,CAAoBiM,gBAApB,EAAsC,KAAKxM,QAA3C,EAAqD,IAArD;AACD;;AAEDsO,EAAAA,IAAI,GAAG;AACL,QAAI,CAAC,KAAKD,QAAV,EAAoB;AAClB;AACD;;AAED,UAAM4D,SAAS,GAAG3W,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCkN,YAApC,CAAlB;;AAEA,QAAI+E,SAAS,CAAC7T,gBAAd,EAAgC;AAC9B;AACD;;AAED,SAAKyZ,UAAL,CAAgBjB,UAAhB;;AACA,SAAK5W,QAAL,CAAc4Z,IAAd;;AACA,SAAKvL,QAAL,GAAgB,KAAhB;;AACA,SAAKrO,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0B,iBAA/B;;AACA,SAAKsW,SAAL,CAAerJ,IAAf;;AAEA,UAAMuL,gBAAgB,GAAG,MAAM;AAC7B,WAAK7Z,QAAL,CAAckC,YAAd,CAA2B,aAA3B,EAA0C,IAA1C;;AACA,WAAKlC,QAAL,CAAc2C,eAAd,CAA8B,YAA9B;;AACA,WAAK3C,QAAL,CAAc2C,eAAd,CAA8B,MAA9B;;AACA,WAAK3C,QAAL,CAAcgP,KAAd,CAAoB2K,UAApB,GAAiC,QAAjC;;AAEA,UAAI,CAAC,KAAKhR,OAAL,CAAa4Q,MAAlB,EAA0B;AACxB,YAAIxF,eAAJ,GAAsBe,KAAtB;AACD;;AAEDxZ,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCmN,cAApC;AACD,KAXD;;AAaA,SAAK5M,cAAL,CAAoBsZ,gBAApB,EAAsC,KAAK7Z,QAA3C,EAAqD,IAArD;AACD;;AAEDG,EAAAA,OAAO,GAAG;AACR,SAAKwX,SAAL,CAAexX,OAAf;;AACA,SAAK0X,UAAL,CAAgBjB,UAAhB;;AACA,UAAMzW,OAAN;AACD,GApGmC;;;AAwGpCyI,EAAAA,UAAU,CAACnT,MAAD,EAAS;AACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,SADI;AAEP,SAAG/C,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAFI;AAGP,UAAI,OAAOvK,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,EAA1C;AAHO,KAAT;AAKAF,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAeqQ,aAAf,CAAf;AACA,WAAOrQ,MAAP;AACD;;AAEDmiB,EAAAA,mBAAmB,GAAG;AACpB,WAAO,IAAIpC,QAAJ,CAAa;AAClBJ,MAAAA,SAAS,EAAEoE,mBADO;AAElBljB,MAAAA,SAAS,EAAE,KAAKqS,OAAL,CAAakN,QAFN;AAGlBrV,MAAAA,UAAU,EAAE,IAHM;AAIlB6U,MAAAA,WAAW,EAAE,KAAKrV,QAAL,CAAc1I,UAJT;AAKlBge,MAAAA,aAAa,EAAE,MAAM,KAAKhH,IAAL;AALH,KAAb,CAAP;AAOD;;AAEDwJ,EAAAA,oBAAoB,GAAG;AACrB,WAAO,IAAIxB,SAAJ,CAAc;AACnBN,MAAAA,WAAW,EAAE,KAAKhW;AADC,KAAd,CAAP;AAGD;;AAEDmJ,EAAAA,kBAAkB,GAAG;AACnB7N,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BkX,qBAA/B,EAAsD/b,KAAK,IAAI;AAC7D,UAAI,KAAKwN,OAAL,CAAalD,QAAb,IAAyBtK,KAAK,CAAC0D,GAAN,KAAc4Q,UAA3C,EAAuD;AACrD,aAAKnB,IAAL;AACD;AACF,KAJD;AAKD,GAxImC;;;AA4Id,SAAf1V,eAAe,CAACnD,MAAD,EAAS;AAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;AAC3B,YAAMC,IAAI,GAAG+X,SAAS,CAAChZ,mBAAV,CAA8B,IAA9B,EAAoCjL,MAApC,CAAb;;AAEA,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AAC9B;AACD;;AAED,UAAIkM,IAAI,CAAClM,MAAD,CAAJ,KAAiB3C,SAAjB,IAA8B2C,MAAM,CAACzB,UAAP,CAAkB,GAAlB,CAA9B,IAAwDyB,MAAM,KAAK,aAAvE,EAAsF;AACpF,cAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;AACD;;AAEDkM,MAAAA,IAAI,CAAClM,MAAD,CAAJ,CAAa,IAAb;AACD,KAZM,CAAP;AAaD;;AA1JmC;AA6JtC;AACA;AACA;AACA;AACA;;;AAEA6F,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,sBAA1B,EAAgDD,sBAAhD,EAAsE,UAAU3G,KAAV,EAAiB;AACrF,QAAM5B,MAAM,GAAGlF,sBAAsB,CAAC,IAAD,CAArC;;AAEA,MAAI,CAAC,GAAD,EAAM,MAAN,EAAcN,QAAd,CAAuB,KAAKiN,OAA5B,CAAJ,EAA0C;AACxC7F,IAAAA,KAAK,CAAC6D,cAAN;AACD;;AAED,MAAIvI,UAAU,CAAC,IAAD,CAAd,EAAsB;AACpB;AACD;;AAED6E,EAAAA,YAAY,CAACmC,GAAb,CAAiBlE,MAAjB,EAAyB4T,cAAzB,EAAuC,MAAM;AAC3C;AACA,QAAI7W,SAAS,CAAC,IAAD,CAAb,EAAqB;AACnB,WAAKub,KAAL;AACD;AACF,GALD,EAXqF;;AAmBrF,QAAMiI,YAAY,GAAGhW,cAAc,CAACK,OAAf,CAAuBsV,aAAvB,CAArB;;AACA,MAAIK,YAAY,IAAIA,YAAY,KAAKvgB,MAArC,EAA6C;AAC3CmgB,IAAAA,SAAS,CAACjZ,WAAV,CAAsBqZ,YAAtB,EAAoCxL,IAApC;AACD;;AAED,QAAM3M,IAAI,GAAG+X,SAAS,CAAChZ,mBAAV,CAA8BnH,MAA9B,CAAb;AACAoI,EAAAA,IAAI,CAACM,MAAL,CAAY,IAAZ;AACD,CA1BD;AA4BA3G,YAAY,CAACkC,EAAb,CAAgB/I,MAAhB,EAAwBsS,qBAAxB,EAA6C,MAC3CjD,cAAc,CAACC,IAAf,CAAoB0V,aAApB,EAAmC5jB,OAAnC,CAA2CqP,EAAE,IAAIwU,SAAS,CAAChZ,mBAAV,CAA8BwE,EAA9B,EAAkCqJ,IAAlC,EAAjD,CADF;AAIA3N,oBAAoB,CAAC8Y,SAAD,CAApB;AACA;AACA;AACA;AACA;AACA;;AAEArhB,kBAAkB,CAACqhB,SAAD,CAAlB;;AC7QA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMK,QAAQ,GAAG,IAAIjf,GAAJ,CAAQ,CACvB,YADuB,EAEvB,MAFuB,EAGvB,MAHuB,EAIvB,UAJuB,EAKvB,UALuB,EAMvB,QANuB,EAOvB,KAPuB,EAQvB,YARuB,CAAR,CAAjB;AAWA,MAAMkf,sBAAsB,GAAG,gBAA/B;AAEA;AACA;AACA;AACA;AACA;;AACA,MAAMC,gBAAgB,GAAG,4DAAzB;AAEA;AACA;AACA;AACA;AACA;;AACA,MAAMC,gBAAgB,GAAG,oIAAzB;;AAEA,MAAMC,gBAAgB,GAAG,CAACC,IAAD,EAAOC,oBAAP,KAAgC;AACvD,QAAMC,QAAQ,GAAGF,IAAI,CAACG,QAAL,CAAcrnB,WAAd,EAAjB;;AAEA,MAAImnB,oBAAoB,CAACtmB,QAArB,CAA8BumB,QAA9B,CAAJ,EAA6C;AAC3C,QAAIP,QAAQ,CAACpd,GAAT,CAAa2d,QAAb,CAAJ,EAA4B;AAC1B,aAAOnd,OAAO,CAAC8c,gBAAgB,CAAC9jB,IAAjB,CAAsBikB,IAAI,CAACI,SAA3B,KAAyCN,gBAAgB,CAAC/jB,IAAjB,CAAsBikB,IAAI,CAACI,SAA3B,CAA1C,CAAd;AACD;;AAED,WAAO,IAAP;AACD;;AAED,QAAMC,MAAM,GAAGJ,oBAAoB,CAACtX,MAArB,CAA4B2X,SAAS,IAAIA,SAAS,YAAYxkB,MAA9D,CAAf,CAXuD;;AAcvD,OAAK,IAAI2F,CAAC,GAAG,CAAR,EAAWK,GAAG,GAAGue,MAAM,CAACnlB,MAA7B,EAAqCuG,CAAC,GAAGK,GAAzC,EAA8CL,CAAC,EAA/C,EAAmD;AACjD,QAAI4e,MAAM,CAAC5e,CAAD,CAAN,CAAU1F,IAAV,CAAemkB,QAAf,CAAJ,EAA8B;AAC5B,aAAO,IAAP;AACD;AACF;;AAED,SAAO,KAAP;AACD,CArBD;;AAuBO,MAAMK,gBAAgB,GAAG;AAC9B;AACA,OAAK,CAAC,OAAD,EAAU,KAAV,EAAiB,IAAjB,EAAuB,MAAvB,EAA+B,MAA/B,EAAuCX,sBAAvC,CAFyB;AAG9BY,EAAAA,CAAC,EAAE,CAAC,QAAD,EAAW,MAAX,EAAmB,OAAnB,EAA4B,KAA5B,CAH2B;AAI9BC,EAAAA,IAAI,EAAE,EAJwB;AAK9BC,EAAAA,CAAC,EAAE,EAL2B;AAM9BC,EAAAA,EAAE,EAAE,EAN0B;AAO9BC,EAAAA,GAAG,EAAE,EAPyB;AAQ9BC,EAAAA,IAAI,EAAE,EARwB;AAS9BC,EAAAA,GAAG,EAAE,EATyB;AAU9BC,EAAAA,EAAE,EAAE,EAV0B;AAW9BC,EAAAA,EAAE,EAAE,EAX0B;AAY9BC,EAAAA,EAAE,EAAE,EAZ0B;AAa9BC,EAAAA,EAAE,EAAE,EAb0B;AAc9BC,EAAAA,EAAE,EAAE,EAd0B;AAe9BC,EAAAA,EAAE,EAAE,EAf0B;AAgB9BC,EAAAA,EAAE,EAAE,EAhB0B;AAiB9BC,EAAAA,EAAE,EAAE,EAjB0B;AAkB9B7f,EAAAA,CAAC,EAAE,EAlB2B;AAmB9B8f,EAAAA,GAAG,EAAE,CAAC,KAAD,EAAQ,QAAR,EAAkB,KAAlB,EAAyB,OAAzB,EAAkC,OAAlC,EAA2C,QAA3C,CAnByB;AAoB9BC,EAAAA,EAAE,EAAE,EApB0B;AAqB9BC,EAAAA,EAAE,EAAE,EArB0B;AAsB9BC,EAAAA,CAAC,EAAE,EAtB2B;AAuB9BC,EAAAA,GAAG,EAAE,EAvByB;AAwB9BC,EAAAA,CAAC,EAAE,EAxB2B;AAyB9BC,EAAAA,KAAK,EAAE,EAzBuB;AA0B9BC,EAAAA,IAAI,EAAE,EA1BwB;AA2B9BC,EAAAA,GAAG,EAAE,EA3ByB;AA4B9BC,EAAAA,GAAG,EAAE,EA5ByB;AA6B9BC,EAAAA,MAAM,EAAE,EA7BsB;AA8B9BC,EAAAA,CAAC,EAAE,EA9B2B;AA+B9BC,EAAAA,EAAE,EAAE;AA/B0B,CAAzB;AAkCA,SAASC,YAAT,CAAsBC,UAAtB,EAAkCC,SAAlC,EAA6CC,UAA7C,EAAyD;AAC9D,MAAI,CAACF,UAAU,CAACnnB,MAAhB,EAAwB;AACtB,WAAOmnB,UAAP;AACD;;AAED,MAAIE,UAAU,IAAI,OAAOA,UAAP,KAAsB,UAAxC,EAAoD;AAClD,WAAOA,UAAU,CAACF,UAAD,CAAjB;AACD;;AAED,QAAMG,SAAS,GAAG,IAAInoB,MAAM,CAACooB,SAAX,EAAlB;AACA,QAAMC,eAAe,GAAGF,SAAS,CAACG,eAAV,CAA0BN,UAA1B,EAAsC,WAAtC,CAAxB;AACA,QAAMO,aAAa,GAAGrnB,MAAM,CAACC,IAAP,CAAY8mB,SAAZ,CAAtB;AACA,QAAM7F,QAAQ,GAAG,GAAG7S,MAAH,CAAU,GAAG8Y,eAAe,CAACllB,IAAhB,CAAqBgE,gBAArB,CAAsC,GAAtC,CAAb,CAAjB;;AAEA,OAAK,IAAIC,CAAC,GAAG,CAAR,EAAWK,GAAG,GAAG2a,QAAQ,CAACvhB,MAA/B,EAAuCuG,CAAC,GAAGK,GAA3C,EAAgDL,CAAC,EAAjD,EAAqD;AACnD,UAAMqJ,EAAE,GAAG2R,QAAQ,CAAChb,CAAD,CAAnB;AACA,UAAMohB,MAAM,GAAG/X,EAAE,CAACqV,QAAH,CAAYrnB,WAAZ,EAAf;;AAEA,QAAI,CAAC8pB,aAAa,CAACjpB,QAAd,CAAuBkpB,MAAvB,CAAL,EAAqC;AACnC/X,MAAAA,EAAE,CAACvF,MAAH;AAEA;AACD;;AAED,UAAMud,aAAa,GAAG,GAAGlZ,MAAH,CAAU,GAAGkB,EAAE,CAACrC,UAAhB,CAAtB;AACA,UAAMsa,iBAAiB,GAAG,GAAGnZ,MAAH,CAAU0Y,SAAS,CAAC,GAAD,CAAT,IAAkB,EAA5B,EAAgCA,SAAS,CAACO,MAAD,CAAT,IAAqB,EAArD,CAA1B;AAEAC,IAAAA,aAAa,CAACrnB,OAAd,CAAsBukB,IAAI,IAAI;AAC5B,UAAI,CAACD,gBAAgB,CAACC,IAAD,EAAO+C,iBAAP,CAArB,EAAgD;AAC9CjY,QAAAA,EAAE,CAACvC,eAAH,CAAmByX,IAAI,CAACG,QAAxB;AACD;AACF,KAJD;AAKD;;AAED,SAAOuC,eAAe,CAACllB,IAAhB,CAAqBwlB,SAA5B;AACD;;AC9HD;AACA;AACA;AACA;AACA;AACA;AAqBA;AACA;AACA;AACA;AACA;;AAEA,MAAM3kB,MAAI,GAAG,SAAb;AACA,MAAMyH,UAAQ,GAAG,YAAjB;AACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;AACA,MAAMmd,cAAY,GAAG,YAArB;AACA,MAAMC,qBAAqB,GAAG,IAAIxiB,GAAJ,CAAQ,CAAC,UAAD,EAAa,WAAb,EAA0B,YAA1B,CAAR,CAA9B;AAEA,MAAMgL,aAAW,GAAG;AAClByX,EAAAA,SAAS,EAAE,SADO;AAElBC,EAAAA,QAAQ,EAAE,QAFQ;AAGlBC,EAAAA,KAAK,EAAE,2BAHW;AAIlB1f,EAAAA,OAAO,EAAE,QAJS;AAKlB2f,EAAAA,KAAK,EAAE,iBALW;AAMlBC,EAAAA,IAAI,EAAE,SANY;AAOlB/pB,EAAAA,QAAQ,EAAE,kBAPQ;AAQlBof,EAAAA,SAAS,EAAE,mBARO;AASlB7P,EAAAA,MAAM,EAAE,yBATU;AAUlBuL,EAAAA,SAAS,EAAE,0BAVO;AAWlBkP,EAAAA,kBAAkB,EAAE,OAXF;AAYlB7M,EAAAA,QAAQ,EAAE,kBAZQ;AAalB8M,EAAAA,WAAW,EAAE,mBAbK;AAclBC,EAAAA,QAAQ,EAAE,SAdQ;AAelBnB,EAAAA,UAAU,EAAE,iBAfM;AAgBlBD,EAAAA,SAAS,EAAE,QAhBO;AAiBlBxL,EAAAA,YAAY,EAAE;AAjBI,CAApB;AAoBA,MAAM6M,aAAa,GAAG;AACpBC,EAAAA,IAAI,EAAE,MADc;AAEpBC,EAAAA,GAAG,EAAE,KAFe;AAGpBC,EAAAA,KAAK,EAAE/lB,KAAK,KAAK,MAAL,GAAc,OAHN;AAIpBgmB,EAAAA,MAAM,EAAE,QAJY;AAKpBC,EAAAA,IAAI,EAAEjmB,KAAK,KAAK,OAAL,GAAe;AALN,CAAtB;AAQA,MAAMoN,SAAO,GAAG;AACdgY,EAAAA,SAAS,EAAE,IADG;AAEdC,EAAAA,QAAQ,EAAE,yCACE,mCADF,GAEE,mCAFF,GAGA,QALI;AAMdzf,EAAAA,OAAO,EAAE,aANK;AAOd0f,EAAAA,KAAK,EAAE,EAPO;AAQdC,EAAAA,KAAK,EAAE,CARO;AASdC,EAAAA,IAAI,EAAE,KATQ;AAUd/pB,EAAAA,QAAQ,EAAE,KAVI;AAWdof,EAAAA,SAAS,EAAE,KAXG;AAYd7P,EAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,CAZM;AAaduL,EAAAA,SAAS,EAAE,KAbG;AAcdkP,EAAAA,kBAAkB,EAAE,CAAC,KAAD,EAAQ,OAAR,EAAiB,QAAjB,EAA2B,MAA3B,CAdN;AAed7M,EAAAA,QAAQ,EAAE,iBAfI;AAgBd8M,EAAAA,WAAW,EAAE,EAhBC;AAiBdC,EAAAA,QAAQ,EAAE,IAjBI;AAkBdnB,EAAAA,UAAU,EAAE,IAlBE;AAmBdD,EAAAA,SAAS,EAAE/B,gBAnBG;AAoBdzJ,EAAAA,YAAY,EAAE;AApBA,CAAhB;AAuBA,MAAMjc,OAAK,GAAG;AACZopB,EAAAA,IAAI,EAAG,OAAMje,WAAU,EADX;AAEZke,EAAAA,MAAM,EAAG,SAAQle,WAAU,EAFf;AAGZme,EAAAA,IAAI,EAAG,OAAMne,WAAU,EAHX;AAIZoe,EAAAA,KAAK,EAAG,QAAOpe,WAAU,EAJb;AAKZqe,EAAAA,QAAQ,EAAG,WAAUre,WAAU,EALnB;AAMZse,EAAAA,KAAK,EAAG,QAAOte,WAAU,EANb;AAOZue,EAAAA,OAAO,EAAG,UAASve,WAAU,EAPjB;AAQZwe,EAAAA,QAAQ,EAAG,WAAUxe,WAAU,EARnB;AASZye,EAAAA,UAAU,EAAG,aAAYze,WAAU,EATvB;AAUZ0e,EAAAA,UAAU,EAAG,aAAY1e,WAAU;AAVvB,CAAd;AAaA,MAAMgB,iBAAe,GAAG,MAAxB;AACA,MAAM2d,gBAAgB,GAAG,OAAzB;AACA,MAAM1d,iBAAe,GAAG,MAAxB;AAEA,MAAM2d,gBAAgB,GAAG,MAAzB;AACA,MAAMC,eAAe,GAAG,KAAxB;AAEA,MAAMC,sBAAsB,GAAG,gBAA/B;AACA,MAAMC,cAAc,GAAI,IAAGJ,gBAAiB,EAA5C;AAEA,MAAMK,gBAAgB,GAAG,eAAzB;AAEA,MAAMC,aAAa,GAAG,OAAtB;AACA,MAAMC,aAAa,GAAG,OAAtB;AACA,MAAMC,aAAa,GAAG,OAAtB;AACA,MAAMC,cAAc,GAAG,QAAvB;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,OAAN,SAAsB3f,aAAtB,CAAoC;AAClCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;AAC3B,QAAI,OAAOyc,MAAP,KAAkB,WAAtB,EAAmC;AACjC,YAAM,IAAI9b,SAAJ,CAAc,8DAAd,CAAN;AACD;;AAED,UAAMzC,OAAN,EAL2B;;AAQ3B,SAAK+rB,UAAL,GAAkB,IAAlB;AACA,SAAKC,QAAL,GAAgB,CAAhB;AACA,SAAKC,WAAL,GAAmB,EAAnB;AACA,SAAKC,cAAL,GAAsB,EAAtB;AACA,SAAKxO,OAAL,GAAe,IAAf,CAZ2B;;AAe3B,SAAK1I,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;AACA,SAAKqqB,GAAL,GAAW,IAAX;;AAEA,SAAKC,aAAL;AACD,GApBiC;;;AAwBhB,aAAPxa,OAAO,GAAG;AACnB,WAAOA,SAAP;AACD;;AAEc,aAAJ9M,IAAI,GAAG;AAChB,WAAOA,MAAP;AACD;;AAEe,aAALxD,KAAK,GAAG;AACjB,WAAOA,OAAP;AACD;;AAEqB,aAAX6Q,WAAW,GAAG;AACvB,WAAOA,aAAP;AACD,GAtCiC;;;AA0ClCka,EAAAA,MAAM,GAAG;AACP,SAAKN,UAAL,GAAkB,IAAlB;AACD;;AAEDO,EAAAA,OAAO,GAAG;AACR,SAAKP,UAAL,GAAkB,KAAlB;AACD;;AAEDQ,EAAAA,aAAa,GAAG;AACd,SAAKR,UAAL,GAAkB,CAAC,KAAKA,UAAxB;AACD;;AAEDzd,EAAAA,MAAM,CAAC9G,KAAD,EAAQ;AACZ,QAAI,CAAC,KAAKukB,UAAV,EAAsB;AACpB;AACD;;AAED,QAAIvkB,KAAJ,EAAW;AACT,YAAMmY,OAAO,GAAG,KAAK6M,4BAAL,CAAkChlB,KAAlC,CAAhB;;AAEAmY,MAAAA,OAAO,CAACuM,cAAR,CAAuBO,KAAvB,GAA+B,CAAC9M,OAAO,CAACuM,cAAR,CAAuBO,KAAvD;;AAEA,UAAI9M,OAAO,CAAC+M,oBAAR,EAAJ,EAAoC;AAClC/M,QAAAA,OAAO,CAACgN,MAAR,CAAe,IAAf,EAAqBhN,OAArB;AACD,OAFD,MAEO;AACLA,QAAAA,OAAO,CAACiN,MAAR,CAAe,IAAf,EAAqBjN,OAArB;AACD;AACF,KAVD,MAUO;AACL,UAAI,KAAKkN,aAAL,GAAqB5pB,SAArB,CAA+BC,QAA/B,CAAwCwK,iBAAxC,CAAJ,EAA8D;AAC5D,aAAKkf,MAAL,CAAY,IAAZ,EAAkB,IAAlB;;AACA;AACD;;AAED,WAAKD,MAAL,CAAY,IAAZ,EAAkB,IAAlB;AACD;AACF;;AAEDngB,EAAAA,OAAO,GAAG;AACR0K,IAAAA,YAAY,CAAC,KAAK8U,QAAN,CAAZ;AAEArkB,IAAAA,YAAY,CAACC,GAAb,CAAiB,KAAKyE,QAAL,CAAciB,OAAd,CAAsBke,cAAtB,CAAjB,EAAwDC,gBAAxD,EAA0E,KAAKqB,iBAA/E;;AAEA,QAAI,KAAKX,GAAT,EAAc;AACZ,WAAKA,GAAL,CAASngB,MAAT;AACD;;AAED,QAAI,KAAK0R,OAAT,EAAkB;AAChB,WAAKA,OAAL,CAAaU,OAAb;AACD;;AAED,UAAM5R,OAAN;AACD;;AAEDoO,EAAAA,IAAI,GAAG;AACL,QAAI,KAAKvO,QAAL,CAAcgP,KAAd,CAAoBiC,OAApB,KAAgC,MAApC,EAA4C;AAC1C,YAAM,IAAItQ,KAAJ,CAAU,qCAAV,CAAN;AACD;;AAED,QAAI,EAAE,KAAK+f,aAAL,MAAwB,KAAKhB,UAA/B,CAAJ,EAAgD;AAC9C;AACD;;AAED,UAAMhO,SAAS,GAAGpW,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoC,KAAKD,WAAL,CAAiB9K,KAAjB,CAAuBspB,IAA3D,CAAlB;AACA,UAAMoC,UAAU,GAAG3pB,cAAc,CAAC,KAAKgJ,QAAN,CAAjC;AACA,UAAM4gB,UAAU,GAAGD,UAAU,KAAK,IAAf,GACjB,KAAK3gB,QAAL,CAAc6gB,aAAd,CAA4B5pB,eAA5B,CAA4CJ,QAA5C,CAAqD,KAAKmJ,QAA1D,CADiB,GAEjB2gB,UAAU,CAAC9pB,QAAX,CAAoB,KAAKmJ,QAAzB,CAFF;;AAIA,QAAI0R,SAAS,CAACtT,gBAAV,IAA8B,CAACwiB,UAAnC,EAA+C;AAC7C;AACD;;AAED,UAAMd,GAAG,GAAG,KAAKU,aAAL,EAAZ;AACA,UAAMM,KAAK,GAAG3tB,MAAM,CAAC,KAAK4M,WAAL,CAAiBtH,IAAlB,CAApB;AAEAqnB,IAAAA,GAAG,CAAC5d,YAAJ,CAAiB,IAAjB,EAAuB4e,KAAvB;;AACA,SAAK9gB,QAAL,CAAckC,YAAd,CAA2B,kBAA3B,EAA+C4e,KAA/C;;AAEA,QAAI,KAAKnY,OAAL,CAAa4U,SAAjB,EAA4B;AAC1BuC,MAAAA,GAAG,CAAClpB,SAAJ,CAAcoU,GAAd,CAAkB5J,iBAAlB;AACD;;AAED,UAAM4R,SAAS,GAAG,OAAO,KAAKrK,OAAL,CAAaqK,SAApB,KAAkC,UAAlC,GAChB,KAAKrK,OAAL,CAAaqK,SAAb,CAAuBhgB,IAAvB,CAA4B,IAA5B,EAAkC8sB,GAAlC,EAAuC,KAAK9f,QAA5C,CADgB,GAEhB,KAAK2I,OAAL,CAAaqK,SAFf;;AAIA,UAAM+N,UAAU,GAAG,KAAKC,cAAL,CAAoBhO,SAApB,CAAnB;;AACA,SAAKiO,mBAAL,CAAyBF,UAAzB;;AAEA,UAAM;AAAErS,MAAAA;AAAF,QAAgB,KAAK/F,OAA3B;AACA1I,IAAAA,IAAI,CAACd,GAAL,CAAS2gB,GAAT,EAAc,KAAK/f,WAAL,CAAiBG,QAA/B,EAAyC,IAAzC;;AAEA,QAAI,CAAC,KAAKF,QAAL,CAAc6gB,aAAd,CAA4B5pB,eAA5B,CAA4CJ,QAA5C,CAAqD,KAAKipB,GAA1D,CAAL,EAAqE;AACnEpR,MAAAA,SAAS,CAACqH,MAAV,CAAiB+J,GAAjB;AACAxkB,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoC,KAAKD,WAAL,CAAiB9K,KAAjB,CAAuBwpB,QAA3D;AACD;;AAED,QAAI,KAAKpN,OAAT,EAAkB;AAChB,WAAKA,OAAL,CAAaW,MAAb;AACD,KAFD,MAEO;AACL,WAAKX,OAAL,GAAea,MAAM,CAACO,YAAP,CAAoB,KAAKzS,QAAzB,EAAmC8f,GAAnC,EAAwC,KAAK1N,gBAAL,CAAsB2O,UAAtB,CAAxC,CAAf;AACD;;AAEDjB,IAAAA,GAAG,CAAClpB,SAAJ,CAAcoU,GAAd,CAAkB3J,iBAAlB;;AAEA,UAAMwc,WAAW,GAAG,KAAKqD,wBAAL,CAA8B,KAAKvY,OAAL,CAAakV,WAA3C,CAApB;;AACA,QAAIA,WAAJ,EAAiB;AACfiC,MAAAA,GAAG,CAAClpB,SAAJ,CAAcoU,GAAd,CAAkB,GAAG6S,WAAW,CAAC5pB,KAAZ,CAAkB,GAAlB,CAArB;AACD,KAvDI;AA0DL;AACA;AACA;;;AACA,QAAI,kBAAkBT,QAAQ,CAACyD,eAA/B,EAAgD;AAC9C,SAAG+M,MAAH,CAAU,GAAGxQ,QAAQ,CAACoE,IAAT,CAAcwM,QAA3B,EAAqCvO,OAArC,CAA6ClC,OAAO,IAAI;AACtD2H,QAAAA,YAAY,CAACkC,EAAb,CAAgB7J,OAAhB,EAAyB,WAAzB,EAAsC4D,IAAtC;AACD,OAFD;AAGD;;AAED,UAAM0X,QAAQ,GAAG,MAAM;AACrB,YAAMkS,cAAc,GAAG,KAAKvB,WAA5B;AAEA,WAAKA,WAAL,GAAmB,IAAnB;AACAtkB,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoC,KAAKD,WAAL,CAAiB9K,KAAjB,CAAuBupB,KAA3D;;AAEA,UAAI2C,cAAc,KAAKlC,eAAvB,EAAwC;AACtC,aAAKsB,MAAL,CAAY,IAAZ,EAAkB,IAAlB;AACD;AACF,KATD;;AAWA,UAAM/f,UAAU,GAAG,KAAKsf,GAAL,CAASlpB,SAAT,CAAmBC,QAAnB,CAA4BuK,iBAA5B,CAAnB;;AACA,SAAKb,cAAL,CAAoB0O,QAApB,EAA8B,KAAK6Q,GAAnC,EAAwCtf,UAAxC;AACD;;AAED8N,EAAAA,IAAI,GAAG;AACL,QAAI,CAAC,KAAK+C,OAAV,EAAmB;AACjB;AACD;;AAED,UAAMyO,GAAG,GAAG,KAAKU,aAAL,EAAZ;;AACA,UAAMvR,QAAQ,GAAG,MAAM;AACrB,UAAI,KAAKoR,oBAAL,EAAJ,EAAiC;AAC/B;AACD;;AAED,UAAI,KAAKT,WAAL,KAAqBZ,gBAAzB,EAA2C;AACzCc,QAAAA,GAAG,CAACngB,MAAJ;AACD;;AAED,WAAKyhB,cAAL;;AACA,WAAKphB,QAAL,CAAc2C,eAAd,CAA8B,kBAA9B;;AACArH,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoC,KAAKD,WAAL,CAAiB9K,KAAjB,CAAuBqpB,MAA3D;;AAEA,UAAI,KAAKjN,OAAT,EAAkB;AAChB,aAAKA,OAAL,CAAaU,OAAb;;AACA,aAAKV,OAAL,GAAe,IAAf;AACD;AACF,KAjBD;;AAmBA,UAAMY,SAAS,GAAG3W,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoC,KAAKD,WAAL,CAAiB9K,KAAjB,CAAuBopB,IAA3D,CAAlB;;AACA,QAAIpM,SAAS,CAAC7T,gBAAd,EAAgC;AAC9B;AACD;;AAED0hB,IAAAA,GAAG,CAAClpB,SAAJ,CAAc+I,MAAd,CAAqB0B,iBAArB,EA9BK;AAiCL;;AACA,QAAI,kBAAkB7N,QAAQ,CAACyD,eAA/B,EAAgD;AAC9C,SAAG+M,MAAH,CAAU,GAAGxQ,QAAQ,CAACoE,IAAT,CAAcwM,QAA3B,EACGvO,OADH,CACWlC,OAAO,IAAI2H,YAAY,CAACC,GAAb,CAAiB5H,OAAjB,EAA0B,WAA1B,EAAuC4D,IAAvC,CADtB;AAED;;AAED,SAAKsoB,cAAL,CAAoBN,aAApB,IAAqC,KAArC;AACA,SAAKM,cAAL,CAAoBP,aAApB,IAAqC,KAArC;AACA,SAAKO,cAAL,CAAoBR,aAApB,IAAqC,KAArC;AAEA,UAAM7e,UAAU,GAAG,KAAKsf,GAAL,CAASlpB,SAAT,CAAmBC,QAAnB,CAA4BuK,iBAA5B,CAAnB;;AACA,SAAKb,cAAL,CAAoB0O,QAApB,EAA8B,KAAK6Q,GAAnC,EAAwCtf,UAAxC;;AACA,SAAKof,WAAL,GAAmB,EAAnB;AACD;;AAED5N,EAAAA,MAAM,GAAG;AACP,QAAI,KAAKX,OAAL,KAAiB,IAArB,EAA2B;AACzB,WAAKA,OAAL,CAAaW,MAAb;AACD;AACF,GArOiC;;;AAyOlC0O,EAAAA,aAAa,GAAG;AACd,WAAOvjB,OAAO,CAAC,KAAKkkB,QAAL,EAAD,CAAd;AACD;;AAEDb,EAAAA,aAAa,GAAG;AACd,QAAI,KAAKV,GAAT,EAAc;AACZ,aAAO,KAAKA,GAAZ;AACD;;AAED,UAAMnsB,OAAO,GAAGH,QAAQ,CAACsiB,aAAT,CAAuB,KAAvB,CAAhB;AACAniB,IAAAA,OAAO,CAACypB,SAAR,GAAoB,KAAKzU,OAAL,CAAa6U,QAAjC;AAEA,UAAMsC,GAAG,GAAGnsB,OAAO,CAACyQ,QAAR,CAAiB,CAAjB,CAAZ;AACA,SAAKkd,UAAL,CAAgBxB,GAAhB;AACAA,IAAAA,GAAG,CAAClpB,SAAJ,CAAc+I,MAAd,CAAqByB,iBAArB,EAAsCC,iBAAtC;AAEA,SAAKye,GAAL,GAAWA,GAAX;AACA,WAAO,KAAKA,GAAZ;AACD;;AAEDwB,EAAAA,UAAU,CAACxB,GAAD,EAAM;AACd,SAAKyB,sBAAL,CAA4BzB,GAA5B,EAAiC,KAAKuB,QAAL,EAAjC,EAAkDnC,sBAAlD;AACD;;AAEDqC,EAAAA,sBAAsB,CAAC/D,QAAD,EAAWgE,OAAX,EAAoB5tB,QAApB,EAA8B;AAClD,UAAM6tB,eAAe,GAAG3d,cAAc,CAACK,OAAf,CAAuBvQ,QAAvB,EAAiC4pB,QAAjC,CAAxB;;AAEA,QAAI,CAACgE,OAAD,IAAYC,eAAhB,EAAiC;AAC/BA,MAAAA,eAAe,CAAC9hB,MAAhB;AACA;AACD,KANiD;;;AASlD,SAAK+hB,iBAAL,CAAuBD,eAAvB,EAAwCD,OAAxC;AACD;;AAEDE,EAAAA,iBAAiB,CAAC/tB,OAAD,EAAU6tB,OAAV,EAAmB;AAClC,QAAI7tB,OAAO,KAAK,IAAhB,EAAsB;AACpB;AACD;;AAED,QAAIuB,SAAS,CAACssB,OAAD,CAAb,EAAwB;AACtBA,MAAAA,OAAO,GAAGnsB,UAAU,CAACmsB,OAAD,CAApB,CADsB;;AAItB,UAAI,KAAK7Y,OAAL,CAAagV,IAAjB,EAAuB;AACrB,YAAI6D,OAAO,CAAClqB,UAAR,KAAuB3D,OAA3B,EAAoC;AAClCA,UAAAA,OAAO,CAACypB,SAAR,GAAoB,EAApB;AACAzpB,UAAAA,OAAO,CAACoiB,MAAR,CAAeyL,OAAf;AACD;AACF,OALD,MAKO;AACL7tB,QAAAA,OAAO,CAACguB,WAAR,GAAsBH,OAAO,CAACG,WAA9B;AACD;;AAED;AACD;;AAED,QAAI,KAAKhZ,OAAL,CAAagV,IAAjB,EAAuB;AACrB,UAAI,KAAKhV,OAAL,CAAamV,QAAjB,EAA2B;AACzB0D,QAAAA,OAAO,GAAGhF,YAAY,CAACgF,OAAD,EAAU,KAAK7Y,OAAL,CAAa+T,SAAvB,EAAkC,KAAK/T,OAAL,CAAagU,UAA/C,CAAtB;AACD;;AAEDhpB,MAAAA,OAAO,CAACypB,SAAR,GAAoBoE,OAApB;AACD,KAND,MAMO;AACL7tB,MAAAA,OAAO,CAACguB,WAAR,GAAsBH,OAAtB;AACD;AACF;;AAEDH,EAAAA,QAAQ,GAAG;AACT,UAAM5D,KAAK,GAAG,KAAKzd,QAAL,CAAcnM,YAAd,CAA2B,wBAA3B,KAAwD,KAAK8U,OAAL,CAAa8U,KAAnF;;AAEA,WAAO,KAAKyD,wBAAL,CAA8BzD,KAA9B,CAAP;AACD;;AAEDmE,EAAAA,gBAAgB,CAACb,UAAD,EAAa;AAC3B,QAAIA,UAAU,KAAK,OAAnB,EAA4B;AAC1B,aAAO,KAAP;AACD;;AAED,QAAIA,UAAU,KAAK,MAAnB,EAA2B;AACzB,aAAO,OAAP;AACD;;AAED,WAAOA,UAAP;AACD,GA7TiC;;;AAiUlCZ,EAAAA,4BAA4B,CAAChlB,KAAD,EAAQmY,OAAR,EAAiB;AAC3C,WAAOA,OAAO,IAAI,KAAKvT,WAAL,CAAiBW,mBAAjB,CAAqCvF,KAAK,CAACC,cAA3C,EAA2D,KAAKymB,kBAAL,EAA3D,CAAlB;AACD;;AAEDhP,EAAAA,UAAU,GAAG;AACX,UAAM;AAAE1P,MAAAA;AAAF,QAAa,KAAKwF,OAAxB;;AAEA,QAAI,OAAOxF,MAAP,KAAkB,QAAtB,EAAgC;AAC9B,aAAOA,MAAM,CAAClP,KAAP,CAAa,GAAb,EAAkB+Q,GAAlB,CAAsB3C,GAAG,IAAIzN,MAAM,CAAC8W,QAAP,CAAgBrJ,GAAhB,EAAqB,EAArB,CAA7B,CAAP;AACD;;AAED,QAAI,OAAOc,MAAP,KAAkB,UAAtB,EAAkC;AAChC,aAAO2P,UAAU,IAAI3P,MAAM,CAAC2P,UAAD,EAAa,KAAK9S,QAAlB,CAA3B;AACD;;AAED,WAAOmD,MAAP;AACD;;AAED+d,EAAAA,wBAAwB,CAACM,OAAD,EAAU;AAChC,WAAO,OAAOA,OAAP,KAAmB,UAAnB,GAAgCA,OAAO,CAACxuB,IAAR,CAAa,KAAKgN,QAAlB,CAAhC,GAA8DwhB,OAArE;AACD;;AAEDpP,EAAAA,gBAAgB,CAAC2O,UAAD,EAAa;AAC3B,UAAMhO,qBAAqB,GAAG;AAC5BC,MAAAA,SAAS,EAAE+N,UADiB;AAE5BzO,MAAAA,SAAS,EAAE,CACT;AACE9Z,QAAAA,IAAI,EAAE,MADR;AAEEya,QAAAA,OAAO,EAAE;AACP2K,UAAAA,kBAAkB,EAAE,KAAKjV,OAAL,CAAaiV;AAD1B;AAFX,OADS,EAOT;AACEplB,QAAAA,IAAI,EAAE,QADR;AAEEya,QAAAA,OAAO,EAAE;AACP9P,UAAAA,MAAM,EAAE,KAAK0P,UAAL;AADD;AAFX,OAPS,EAaT;AACEra,QAAAA,IAAI,EAAE,iBADR;AAEEya,QAAAA,OAAO,EAAE;AACPlC,UAAAA,QAAQ,EAAE,KAAKpI,OAAL,CAAaoI;AADhB;AAFX,OAbS,EAmBT;AACEvY,QAAAA,IAAI,EAAE,OADR;AAEEya,QAAAA,OAAO,EAAE;AACPtf,UAAAA,OAAO,EAAG,IAAG,KAAKoM,WAAL,CAAiBtH,IAAK;AAD5B;AAFX,OAnBS,EAyBT;AACED,QAAAA,IAAI,EAAE,UADR;AAEEga,QAAAA,OAAO,EAAE,IAFX;AAGEsP,QAAAA,KAAK,EAAE,YAHT;AAIEnpB,QAAAA,EAAE,EAAEgJ,IAAI,IAAI,KAAKogB,4BAAL,CAAkCpgB,IAAlC;AAJd,OAzBS,CAFiB;AAkC5BqgB,MAAAA,aAAa,EAAErgB,IAAI,IAAI;AACrB,YAAIA,IAAI,CAACsR,OAAL,CAAaD,SAAb,KAA2BrR,IAAI,CAACqR,SAApC,EAA+C;AAC7C,eAAK+O,4BAAL,CAAkCpgB,IAAlC;AACD;AACF;AAtC2B,KAA9B;AAyCA,WAAO,EACL,GAAGoR,qBADE;AAEL,UAAI,OAAO,KAAKpK,OAAL,CAAauI,YAApB,KAAqC,UAArC,GAAkD,KAAKvI,OAAL,CAAauI,YAAb,CAA0B6B,qBAA1B,CAAlD,GAAqG,KAAKpK,OAAL,CAAauI,YAAtH;AAFK,KAAP;AAID;;AAED+P,EAAAA,mBAAmB,CAACF,UAAD,EAAa;AAC9B,SAAKP,aAAL,GAAqB5pB,SAArB,CAA+BoU,GAA/B,CAAoC,GAAE,KAAKiX,oBAAL,EAA4B,IAAG,KAAKL,gBAAL,CAAsBb,UAAtB,CAAkC,EAAvG;AACD;;AAEDC,EAAAA,cAAc,CAAChO,SAAD,EAAY;AACxB,WAAO+K,aAAa,CAAC/K,SAAS,CAAC3c,WAAV,EAAD,CAApB;AACD;;AAED0pB,EAAAA,aAAa,GAAG;AACd,UAAMmC,QAAQ,GAAG,KAAKvZ,OAAL,CAAa5K,OAAb,CAAqB9J,KAArB,CAA2B,GAA3B,CAAjB;;AAEAiuB,IAAAA,QAAQ,CAACrsB,OAAT,CAAiBkI,OAAO,IAAI;AAC1B,UAAIA,OAAO,KAAK,OAAhB,EAAyB;AACvBzC,QAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B,KAAKD,WAAL,CAAiB9K,KAAjB,CAAuBypB,KAAtD,EAA6D,KAAK/V,OAAL,CAAa/U,QAA1E,EAAoFuH,KAAK,IAAI,KAAK8G,MAAL,CAAY9G,KAAZ,CAA7F;AACD,OAFD,MAEO,IAAI4C,OAAO,KAAKyhB,cAAhB,EAAgC;AACrC,cAAM2C,OAAO,GAAGpkB,OAAO,KAAKshB,aAAZ,GACd,KAAKtf,WAAL,CAAiB9K,KAAjB,CAAuB4pB,UADT,GAEd,KAAK9e,WAAL,CAAiB9K,KAAjB,CAAuB0pB,OAFzB;AAGA,cAAMyD,QAAQ,GAAGrkB,OAAO,KAAKshB,aAAZ,GACf,KAAKtf,WAAL,CAAiB9K,KAAjB,CAAuB6pB,UADR,GAEf,KAAK/e,WAAL,CAAiB9K,KAAjB,CAAuB2pB,QAFzB;AAIAtjB,QAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BmiB,OAA/B,EAAwC,KAAKxZ,OAAL,CAAa/U,QAArD,EAA+DuH,KAAK,IAAI,KAAKmlB,MAAL,CAAYnlB,KAAZ,CAAxE;AACAG,QAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BoiB,QAA/B,EAAyC,KAAKzZ,OAAL,CAAa/U,QAAtD,EAAgEuH,KAAK,IAAI,KAAKolB,MAAL,CAAYplB,KAAZ,CAAzE;AACD;AACF,KAdD;;AAgBA,SAAKslB,iBAAL,GAAyB,MAAM;AAC7B,UAAI,KAAKzgB,QAAT,EAAmB;AACjB,aAAKsO,IAAL;AACD;AACF,KAJD;;AAMAhT,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAAL,CAAciB,OAAd,CAAsBke,cAAtB,CAAhB,EAAuDC,gBAAvD,EAAyE,KAAKqB,iBAA9E;;AAEA,QAAI,KAAK9X,OAAL,CAAa/U,QAAjB,EAA2B;AACzB,WAAK+U,OAAL,GAAe,EACb,GAAG,KAAKA,OADK;AAEb5K,QAAAA,OAAO,EAAE,QAFI;AAGbnK,QAAAA,QAAQ,EAAE;AAHG,OAAf;AAKD,KAND,MAMO;AACL,WAAKyuB,SAAL;AACD;AACF;;AAEDA,EAAAA,SAAS,GAAG;AACV,UAAM5E,KAAK,GAAG,KAAKzd,QAAL,CAAcnM,YAAd,CAA2B,OAA3B,CAAd;;AACA,UAAMyuB,iBAAiB,GAAG,OAAO,KAAKtiB,QAAL,CAAcnM,YAAd,CAA2B,wBAA3B,CAAjC;;AAEA,QAAI4pB,KAAK,IAAI6E,iBAAiB,KAAK,QAAnC,EAA6C;AAC3C,WAAKtiB,QAAL,CAAckC,YAAd,CAA2B,wBAA3B,EAAqDub,KAAK,IAAI,EAA9D;;AACA,UAAIA,KAAK,IAAI,CAAC,KAAKzd,QAAL,CAAcnM,YAAd,CAA2B,YAA3B,CAAV,IAAsD,CAAC,KAAKmM,QAAL,CAAc2hB,WAAzE,EAAsF;AACpF,aAAK3hB,QAAL,CAAckC,YAAd,CAA2B,YAA3B,EAAyCub,KAAzC;AACD;;AAED,WAAKzd,QAAL,CAAckC,YAAd,CAA2B,OAA3B,EAAoC,EAApC;AACD;AACF;;AAEDoe,EAAAA,MAAM,CAACnlB,KAAD,EAAQmY,OAAR,EAAiB;AACrBA,IAAAA,OAAO,GAAG,KAAK6M,4BAAL,CAAkChlB,KAAlC,EAAyCmY,OAAzC,CAAV;;AAEA,QAAInY,KAAJ,EAAW;AACTmY,MAAAA,OAAO,CAACuM,cAAR,CACE1kB,KAAK,CAACK,IAAN,KAAe,SAAf,GAA2B8jB,aAA3B,GAA2CD,aAD7C,IAEI,IAFJ;AAGD;;AAED,QAAI/L,OAAO,CAACkN,aAAR,GAAwB5pB,SAAxB,CAAkCC,QAAlC,CAA2CwK,iBAA3C,KAA+DiS,OAAO,CAACsM,WAAR,KAAwBZ,gBAA3F,EAA6G;AAC3G1L,MAAAA,OAAO,CAACsM,WAAR,GAAsBZ,gBAAtB;AACA;AACD;;AAEDnU,IAAAA,YAAY,CAACyI,OAAO,CAACqM,QAAT,CAAZ;AAEArM,IAAAA,OAAO,CAACsM,WAAR,GAAsBZ,gBAAtB;;AAEA,QAAI,CAAC1L,OAAO,CAAC3K,OAAR,CAAgB+U,KAAjB,IAA0B,CAACpK,OAAO,CAAC3K,OAAR,CAAgB+U,KAAhB,CAAsBnP,IAArD,EAA2D;AACzD+E,MAAAA,OAAO,CAAC/E,IAAR;AACA;AACD;;AAED+E,IAAAA,OAAO,CAACqM,QAAR,GAAmBlmB,UAAU,CAAC,MAAM;AAClC,UAAI6Z,OAAO,CAACsM,WAAR,KAAwBZ,gBAA5B,EAA8C;AAC5C1L,QAAAA,OAAO,CAAC/E,IAAR;AACD;AACF,KAJ4B,EAI1B+E,OAAO,CAAC3K,OAAR,CAAgB+U,KAAhB,CAAsBnP,IAJI,CAA7B;AAKD;;AAEDgS,EAAAA,MAAM,CAACplB,KAAD,EAAQmY,OAAR,EAAiB;AACrBA,IAAAA,OAAO,GAAG,KAAK6M,4BAAL,CAAkChlB,KAAlC,EAAyCmY,OAAzC,CAAV;;AAEA,QAAInY,KAAJ,EAAW;AACTmY,MAAAA,OAAO,CAACuM,cAAR,CACE1kB,KAAK,CAACK,IAAN,KAAe,UAAf,GAA4B8jB,aAA5B,GAA4CD,aAD9C,IAEI/L,OAAO,CAACtT,QAAR,CAAiBnJ,QAAjB,CAA0BsE,KAAK,CAAC2B,aAAhC,CAFJ;AAGD;;AAED,QAAIwW,OAAO,CAAC+M,oBAAR,EAAJ,EAAoC;AAClC;AACD;;AAEDxV,IAAAA,YAAY,CAACyI,OAAO,CAACqM,QAAT,CAAZ;AAEArM,IAAAA,OAAO,CAACsM,WAAR,GAAsBX,eAAtB;;AAEA,QAAI,CAAC3L,OAAO,CAAC3K,OAAR,CAAgB+U,KAAjB,IAA0B,CAACpK,OAAO,CAAC3K,OAAR,CAAgB+U,KAAhB,CAAsBpP,IAArD,EAA2D;AACzDgF,MAAAA,OAAO,CAAChF,IAAR;AACA;AACD;;AAEDgF,IAAAA,OAAO,CAACqM,QAAR,GAAmBlmB,UAAU,CAAC,MAAM;AAClC,UAAI6Z,OAAO,CAACsM,WAAR,KAAwBX,eAA5B,EAA6C;AAC3C3L,QAAAA,OAAO,CAAChF,IAAR;AACD;AACF,KAJ4B,EAI1BgF,OAAO,CAAC3K,OAAR,CAAgB+U,KAAhB,CAAsBpP,IAJI,CAA7B;AAKD;;AAED+R,EAAAA,oBAAoB,GAAG;AACrB,SAAK,MAAMtiB,OAAX,IAAsB,KAAK8hB,cAA3B,EAA2C;AACzC,UAAI,KAAKA,cAAL,CAAoB9hB,OAApB,CAAJ,EAAkC;AAChC,eAAO,IAAP;AACD;AACF;;AAED,WAAO,KAAP;AACD;;AAED6K,EAAAA,UAAU,CAACnT,MAAD,EAAS;AACjB,UAAM8sB,cAAc,GAAG/f,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAAvB;AAEArK,IAAAA,MAAM,CAACC,IAAP,CAAY2sB,cAAZ,EAA4B1sB,OAA5B,CAAoC2sB,QAAQ,IAAI;AAC9C,UAAIlF,qBAAqB,CAAC3gB,GAAtB,CAA0B6lB,QAA1B,CAAJ,EAAyC;AACvC,eAAOD,cAAc,CAACC,QAAD,CAArB;AACD;AACF,KAJD;AAMA/sB,IAAAA,MAAM,GAAG,EACP,GAAG,KAAKsK,WAAL,CAAiBwF,OADb;AAEP,SAAGgd,cAFI;AAGP,UAAI,OAAO9sB,MAAP,KAAkB,QAAlB,IAA8BA,MAA9B,GAAuCA,MAAvC,GAAgD,EAApD;AAHO,KAAT;AAMAA,IAAAA,MAAM,CAACiZ,SAAP,GAAmBjZ,MAAM,CAACiZ,SAAP,KAAqB,KAArB,GAA6Blb,QAAQ,CAACoE,IAAtC,GAA6CvC,UAAU,CAACI,MAAM,CAACiZ,SAAR,CAA1E;;AAEA,QAAI,OAAOjZ,MAAM,CAACioB,KAAd,KAAwB,QAA5B,EAAsC;AACpCjoB,MAAAA,MAAM,CAACioB,KAAP,GAAe;AACbnP,QAAAA,IAAI,EAAE9Y,MAAM,CAACioB,KADA;AAEbpP,QAAAA,IAAI,EAAE7Y,MAAM,CAACioB;AAFA,OAAf;AAID;;AAED,QAAI,OAAOjoB,MAAM,CAACgoB,KAAd,KAAwB,QAA5B,EAAsC;AACpChoB,MAAAA,MAAM,CAACgoB,KAAP,GAAehoB,MAAM,CAACgoB,KAAP,CAAa1qB,QAAb,EAAf;AACD;;AAED,QAAI,OAAO0C,MAAM,CAAC+rB,OAAd,KAA0B,QAA9B,EAAwC;AACtC/rB,MAAAA,MAAM,CAAC+rB,OAAP,GAAiB/rB,MAAM,CAAC+rB,OAAP,CAAezuB,QAAf,EAAjB;AACD;;AAEDwC,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAe,KAAKsK,WAAL,CAAiB+F,WAAhC,CAAf;;AAEA,QAAIrQ,MAAM,CAACqoB,QAAX,EAAqB;AACnBroB,MAAAA,MAAM,CAAC+nB,QAAP,GAAkBhB,YAAY,CAAC/mB,MAAM,CAAC+nB,QAAR,EAAkB/nB,MAAM,CAACinB,SAAzB,EAAoCjnB,MAAM,CAACknB,UAA3C,CAA9B;AACD;;AAED,WAAOlnB,MAAP;AACD;;AAEDosB,EAAAA,kBAAkB,GAAG;AACnB,UAAMpsB,MAAM,GAAG,EAAf;;AAEA,SAAK,MAAMoJ,GAAX,IAAkB,KAAK8J,OAAvB,EAAgC;AAC9B,UAAI,KAAK5I,WAAL,CAAiBwF,OAAjB,CAAyB1G,GAAzB,MAAkC,KAAK8J,OAAL,CAAa9J,GAAb,CAAtC,EAAyD;AACvDpJ,QAAAA,MAAM,CAACoJ,GAAD,CAAN,GAAc,KAAK8J,OAAL,CAAa9J,GAAb,CAAd;AACD;AACF,KAPkB;AAUnB;AACA;;;AACA,WAAOpJ,MAAP;AACD;;AAED2rB,EAAAA,cAAc,GAAG;AACf,UAAMtB,GAAG,GAAG,KAAKU,aAAL,EAAZ;AACA,UAAMiC,qBAAqB,GAAG,IAAIvsB,MAAJ,CAAY,UAAS,KAAK+rB,oBAAL,EAA4B,MAAjD,EAAwD,GAAxD,CAA9B;AACA,UAAMS,QAAQ,GAAG5C,GAAG,CAACjsB,YAAJ,CAAiB,OAAjB,EAA0BZ,KAA1B,CAAgCwvB,qBAAhC,CAAjB;;AACA,QAAIC,QAAQ,KAAK,IAAb,IAAqBA,QAAQ,CAACptB,MAAT,GAAkB,CAA3C,EAA8C;AAC5CotB,MAAAA,QAAQ,CAAC1d,GAAT,CAAa2d,KAAK,IAAIA,KAAK,CAACzuB,IAAN,EAAtB,EACG2B,OADH,CACW+sB,MAAM,IAAI9C,GAAG,CAAClpB,SAAJ,CAAc+I,MAAd,CAAqBijB,MAArB,CADrB;AAED;AACF;;AAEDX,EAAAA,oBAAoB,GAAG;AACrB,WAAO5E,cAAP;AACD;;AAED0E,EAAAA,4BAA4B,CAACjP,UAAD,EAAa;AACvC,UAAM;AAAE+P,MAAAA;AAAF,QAAY/P,UAAlB;;AAEA,QAAI,CAAC+P,KAAL,EAAY;AACV;AACD;;AAED,SAAK/C,GAAL,GAAW+C,KAAK,CAAChM,QAAN,CAAeiM,MAA1B;;AACA,SAAK1B,cAAL;;AACA,SAAKH,mBAAL,CAAyB,KAAKD,cAAL,CAAoB6B,KAAK,CAAC7P,SAA1B,CAAzB;AACD,GAxlBiC;;;AA4lBZ,SAAfpa,eAAe,CAACnD,MAAD,EAAS;AAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;AAC3B,YAAMC,IAAI,GAAG8d,OAAO,CAAC/e,mBAAR,CAA4B,IAA5B,EAAkCjL,MAAlC,CAAb;;AAEA,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AAC9B,YAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;AACvC,gBAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;AACD;;AAEDkM,QAAAA,IAAI,CAAClM,MAAD,CAAJ;AACD;AACF,KAVM,CAAP;AAWD;;AAxmBiC;AA2mBpC;AACA;AACA;AACA;AACA;AACA;;;AAEA4C,kBAAkB,CAAConB,OAAD,CAAlB;;AC/uBA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;;AAEA,MAAMhnB,MAAI,GAAG,SAAb;AACA,MAAMyH,UAAQ,GAAG,YAAjB;AACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;AACA,MAAMmd,YAAY,GAAG,YAArB;AAEA,MAAM9X,SAAO,GAAG,EACd,GAAGka,OAAO,CAACla,OADG;AAEdyN,EAAAA,SAAS,EAAE,OAFG;AAGd7P,EAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,CAHM;AAIdpF,EAAAA,OAAO,EAAE,OAJK;AAKdyjB,EAAAA,OAAO,EAAE,EALK;AAMdhE,EAAAA,QAAQ,EAAE,yCACE,mCADF,GAEE,kCAFF,GAGE,kCAHF,GAIA;AAVI,CAAhB;AAaA,MAAM1X,aAAW,GAAG,EAClB,GAAG2Z,OAAO,CAAC3Z,WADO;AAElB0b,EAAAA,OAAO,EAAE;AAFS,CAApB;AAKA,MAAMvsB,OAAK,GAAG;AACZopB,EAAAA,IAAI,EAAG,OAAMje,WAAU,EADX;AAEZke,EAAAA,MAAM,EAAG,SAAQle,WAAU,EAFf;AAGZme,EAAAA,IAAI,EAAG,OAAMne,WAAU,EAHX;AAIZoe,EAAAA,KAAK,EAAG,QAAOpe,WAAU,EAJb;AAKZqe,EAAAA,QAAQ,EAAG,WAAUre,WAAU,EALnB;AAMZse,EAAAA,KAAK,EAAG,QAAOte,WAAU,EANb;AAOZue,EAAAA,OAAO,EAAG,UAASve,WAAU,EAPjB;AAQZwe,EAAAA,QAAQ,EAAG,WAAUxe,WAAU,EARnB;AASZye,EAAAA,UAAU,EAAG,aAAYze,WAAU,EATvB;AAUZ0e,EAAAA,UAAU,EAAG,aAAY1e,WAAU;AAVvB,CAAd;AAaA,MAAM2iB,cAAc,GAAG,iBAAvB;AACA,MAAMC,gBAAgB,GAAG,eAAzB;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,OAAN,SAAsBxD,OAAtB,CAA8B;AAC5B;AAEkB,aAAPla,OAAO,GAAG;AACnB,WAAOA,SAAP;AACD;;AAEc,aAAJ9M,IAAI,GAAG;AAChB,WAAOA,MAAP;AACD;;AAEe,aAALxD,KAAK,GAAG;AACjB,WAAOA,OAAP;AACD;;AAEqB,aAAX6Q,WAAW,GAAG;AACvB,WAAOA,aAAP;AACD,GAjB2B;;;AAqB5B4a,EAAAA,aAAa,GAAG;AACd,WAAO,KAAKW,QAAL,MAAmB,KAAK6B,WAAL,EAA1B;AACD;;AAED5B,EAAAA,UAAU,CAACxB,GAAD,EAAM;AACd,SAAKyB,sBAAL,CAA4BzB,GAA5B,EAAiC,KAAKuB,QAAL,EAAjC,EAAkD0B,cAAlD;;AACA,SAAKxB,sBAAL,CAA4BzB,GAA5B,EAAiC,KAAKoD,WAAL,EAAjC,EAAqDF,gBAArD;AACD,GA5B2B;;;AAgC5BE,EAAAA,WAAW,GAAG;AACZ,WAAO,KAAKhC,wBAAL,CAA8B,KAAKvY,OAAL,CAAa6Y,OAA3C,CAAP;AACD;;AAEDS,EAAAA,oBAAoB,GAAG;AACrB,WAAO5E,YAAP;AACD,GAtC2B;;;AA0CN,SAAfzkB,eAAe,CAACnD,MAAD,EAAS;AAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;AAC3B,YAAMC,IAAI,GAAGshB,OAAO,CAACviB,mBAAR,CAA4B,IAA5B,EAAkCjL,MAAlC,CAAb;;AAEA,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AAC9B,YAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;AACvC,gBAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;AACD;;AAEDkM,QAAAA,IAAI,CAAClM,MAAD,CAAJ;AACD;AACF,KAVM,CAAP;AAWD;;AAtD2B;AAyD9B;AACA;AACA;AACA;AACA;AACA;;;AAEA4C,kBAAkB,CAAC4qB,OAAD,CAAlB;;AC7HA;AACA;AACA;AACA;AACA;AACA;AAaA;AACA;AACA;AACA;AACA;;AAEA,MAAMxqB,MAAI,GAAG,WAAb;AACA,MAAMyH,UAAQ,GAAG,cAAjB;AACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;AACA,MAAM0B,cAAY,GAAG,WAArB;AAEA,MAAM2D,SAAO,GAAG;AACdpC,EAAAA,MAAM,EAAE,EADM;AAEdrC,EAAAA,MAAM,EAAE,MAFM;AAGdvH,EAAAA,MAAM,EAAE;AAHM,CAAhB;AAMA,MAAMuM,aAAW,GAAG;AAClB3C,EAAAA,MAAM,EAAE,QADU;AAElBrC,EAAAA,MAAM,EAAE,QAFU;AAGlBvH,EAAAA,MAAM,EAAE;AAHU,CAApB;AAMA,MAAM4pB,cAAc,GAAI,WAAU/iB,WAAU,EAA5C;AACA,MAAMgjB,YAAY,GAAI,SAAQhjB,WAAU,EAAxC;AACA,MAAM2G,mBAAmB,GAAI,OAAM3G,WAAU,GAAEwB,cAAa,EAA5D;AAEA,MAAMyhB,wBAAwB,GAAG,eAAjC;AACA,MAAMxhB,mBAAiB,GAAG,QAA1B;AAEA,MAAMyhB,iBAAiB,GAAG,wBAA1B;AACA,MAAMC,yBAAuB,GAAG,mBAAhC;AACA,MAAMC,kBAAkB,GAAG,WAA3B;AACA,MAAMC,kBAAkB,GAAG,WAA3B;AACA,MAAMC,mBAAmB,GAAG,kBAA5B;AACA,MAAMC,mBAAmB,GAAI,GAAEH,kBAAmB,KAAIE,mBAAoB,MAAKL,wBAAyB,EAAxG;AACA,MAAMO,mBAAiB,GAAG,WAA1B;AACA,MAAMC,0BAAwB,GAAG,kBAAjC;AAEA,MAAMC,aAAa,GAAG,QAAtB;AACA,MAAMC,eAAe,GAAG,UAAxB;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,SAAN,SAAwBlkB,aAAxB,CAAsC;AACpCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;AAC3B,UAAM9B,OAAN;AACA,SAAKswB,cAAL,GAAsB,KAAKjkB,QAAL,CAAcgB,OAAd,KAA0B,MAA1B,GAAmCvM,MAAnC,GAA4C,KAAKuL,QAAvE;AACA,SAAK2I,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;AACA,SAAKyuB,QAAL,GAAgB,EAAhB;AACA,SAAKC,QAAL,GAAgB,EAAhB;AACA,SAAKC,aAAL,GAAqB,IAArB;AACA,SAAKC,aAAL,GAAqB,CAArB;AAEA/oB,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKymB,cAArB,EAAqCb,YAArC,EAAmD,MAAM,KAAKkB,QAAL,EAAzD;AAEA,SAAKC,OAAL;;AACA,SAAKD,QAAL;AACD,GAdmC;;;AAkBlB,aAAP/e,OAAO,GAAG;AACnB,WAAOA,SAAP;AACD;;AAEc,aAAJ9M,IAAI,GAAG;AAChB,WAAOA,MAAP;AACD,GAxBmC;;;AA4BpC8rB,EAAAA,OAAO,GAAG;AACR,UAAMC,UAAU,GAAG,KAAKP,cAAL,KAAwB,KAAKA,cAAL,CAAoBxvB,MAA5C,GACjBqvB,aADiB,GAEjBC,eAFF;AAIA,UAAMU,YAAY,GAAG,KAAK9b,OAAL,CAAa7H,MAAb,KAAwB,MAAxB,GACnB0jB,UADmB,GAEnB,KAAK7b,OAAL,CAAa7H,MAFf;AAIA,UAAM4jB,UAAU,GAAGD,YAAY,KAAKV,eAAjB,GACjB,KAAKY,aAAL,EADiB,GAEjB,CAFF;AAIA,SAAKT,QAAL,GAAgB,EAAhB;AACA,SAAKC,QAAL,GAAgB,EAAhB;AACA,SAAKE,aAAL,GAAqB,KAAKO,gBAAL,EAArB;AAEA,UAAMC,OAAO,GAAG/gB,cAAc,CAACC,IAAf,CAAoB4f,mBAApB,EAAyC,KAAKhb,OAAL,CAAapP,MAAtD,CAAhB;AAEAsrB,IAAAA,OAAO,CAAC7f,GAAR,CAAYrR,OAAO,IAAI;AACrB,YAAMmxB,cAAc,GAAG3wB,sBAAsB,CAACR,OAAD,CAA7C;AACA,YAAM4F,MAAM,GAAGurB,cAAc,GAAGhhB,cAAc,CAACK,OAAf,CAAuB2gB,cAAvB,CAAH,GAA4C,IAAzE;;AAEA,UAAIvrB,MAAJ,EAAY;AACV,cAAMwrB,SAAS,GAAGxrB,MAAM,CAAC8J,qBAAP,EAAlB;;AACA,YAAI0hB,SAAS,CAAC3Q,KAAV,IAAmB2Q,SAAS,CAACC,MAAjC,EAAyC;AACvC,iBAAO,CACLxiB,WAAW,CAACiiB,YAAD,CAAX,CAA0BlrB,MAA1B,EAAkC+J,GAAlC,GAAwCohB,UADnC,EAELI,cAFK,CAAP;AAID;AACF;;AAED,aAAO,IAAP;AACD,KAfD,EAgBG/hB,MAhBH,CAgBUkiB,IAAI,IAAIA,IAhBlB,EAiBGC,IAjBH,CAiBQ,CAACtK,CAAD,EAAIE,CAAJ,KAAUF,CAAC,CAAC,CAAD,CAAD,GAAOE,CAAC,CAAC,CAAD,CAjB1B,EAkBGjlB,OAlBH,CAkBWovB,IAAI,IAAI;AACf,WAAKf,QAAL,CAAchsB,IAAd,CAAmB+sB,IAAI,CAAC,CAAD,CAAvB;;AACA,WAAKd,QAAL,CAAcjsB,IAAd,CAAmB+sB,IAAI,CAAC,CAAD,CAAvB;AACD,KArBH;AAsBD;;AAED9kB,EAAAA,OAAO,GAAG;AACR7E,IAAAA,YAAY,CAACC,GAAb,CAAiB,KAAK0oB,cAAtB,EAAsC7jB,WAAtC;AACA,UAAMD,OAAN;AACD,GA1EmC;;;AA8EpCyI,EAAAA,UAAU,CAACnT,MAAD,EAAS;AACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,SADI;AAEP,SAAG/C,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAFI;AAGP,UAAI,OAAOvK,MAAP,KAAkB,QAAlB,IAA8BA,MAA9B,GAAuCA,MAAvC,GAAgD,EAApD;AAHO,KAAT;AAMAA,IAAAA,MAAM,CAAC8D,MAAP,GAAgBlE,UAAU,CAACI,MAAM,CAAC8D,MAAR,CAAV,IAA6B/F,QAAQ,CAACyD,eAAtD;AAEA1B,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAeqQ,aAAf,CAAf;AAEA,WAAOrQ,MAAP;AACD;;AAEDkvB,EAAAA,aAAa,GAAG;AACd,WAAO,KAAKV,cAAL,KAAwBxvB,MAAxB,GACL,KAAKwvB,cAAL,CAAoB1gB,WADf,GAEL,KAAK0gB,cAAL,CAAoBtL,SAFtB;AAGD;;AAEDiM,EAAAA,gBAAgB,GAAG;AACjB,WAAO,KAAKX,cAAL,CAAoBjL,YAApB,IAAoC3lB,IAAI,CAAC6G,GAAL,CACzC1G,QAAQ,CAACoE,IAAT,CAAcohB,YAD2B,EAEzCxlB,QAAQ,CAACyD,eAAT,CAAyB+hB,YAFgB,CAA3C;AAID;;AAEDmM,EAAAA,gBAAgB,GAAG;AACjB,WAAO,KAAKlB,cAAL,KAAwBxvB,MAAxB,GACLA,MAAM,CAAC2wB,WADF,GAEL,KAAKnB,cAAL,CAAoB5gB,qBAApB,GAA4C2hB,MAF9C;AAGD;;AAEDV,EAAAA,QAAQ,GAAG;AACT,UAAM3L,SAAS,GAAG,KAAKgM,aAAL,KAAuB,KAAKhc,OAAL,CAAaxF,MAAtD;;AACA,UAAM6V,YAAY,GAAG,KAAK4L,gBAAL,EAArB;;AACA,UAAMS,SAAS,GAAG,KAAK1c,OAAL,CAAaxF,MAAb,GAAsB6V,YAAtB,GAAqC,KAAKmM,gBAAL,EAAvD;;AAEA,QAAI,KAAKd,aAAL,KAAuBrL,YAA3B,EAAyC;AACvC,WAAKuL,OAAL;AACD;;AAED,QAAI5L,SAAS,IAAI0M,SAAjB,EAA4B;AAC1B,YAAM9rB,MAAM,GAAG,KAAK4qB,QAAL,CAAc,KAAKA,QAAL,CAAc7uB,MAAd,GAAuB,CAArC,CAAf;;AAEA,UAAI,KAAK8uB,aAAL,KAAuB7qB,MAA3B,EAAmC;AACjC,aAAK+rB,SAAL,CAAe/rB,MAAf;AACD;;AAED;AACD;;AAED,QAAI,KAAK6qB,aAAL,IAAsBzL,SAAS,GAAG,KAAKuL,QAAL,CAAc,CAAd,CAAlC,IAAsD,KAAKA,QAAL,CAAc,CAAd,IAAmB,CAA7E,EAAgF;AAC9E,WAAKE,aAAL,GAAqB,IAArB;;AACA,WAAKmB,MAAL;;AACA;AACD;;AAED,SAAK,IAAI1pB,CAAC,GAAG,KAAKqoB,QAAL,CAAc5uB,MAA3B,EAAmCuG,CAAC,EAApC,GAAyC;AACvC,YAAM2pB,cAAc,GAAG,KAAKpB,aAAL,KAAuB,KAAKD,QAAL,CAActoB,CAAd,CAAvB,IACnB8c,SAAS,IAAI,KAAKuL,QAAL,CAAcroB,CAAd,CADM,KAElB,OAAO,KAAKqoB,QAAL,CAAcroB,CAAC,GAAG,CAAlB,CAAP,KAAgC,WAAhC,IAA+C8c,SAAS,GAAG,KAAKuL,QAAL,CAAcroB,CAAC,GAAG,CAAlB,CAFzC,CAAvB;;AAIA,UAAI2pB,cAAJ,EAAoB;AAClB,aAAKF,SAAL,CAAe,KAAKnB,QAAL,CAActoB,CAAd,CAAf;AACD;AACF;AACF;;AAEDypB,EAAAA,SAAS,CAAC/rB,MAAD,EAAS;AAChB,SAAK6qB,aAAL,GAAqB7qB,MAArB;;AAEA,SAAKgsB,MAAL;;AAEA,UAAME,OAAO,GAAG9B,mBAAmB,CAAC1vB,KAApB,CAA0B,GAA1B,EACb+Q,GADa,CACTpR,QAAQ,IAAK,GAAEA,QAAS,oBAAmB2F,MAAO,MAAK3F,QAAS,UAAS2F,MAAO,IADvE,CAAhB;AAGA,UAAMmsB,IAAI,GAAG5hB,cAAc,CAACK,OAAf,CAAuBshB,OAAO,CAACxgB,IAAR,CAAa,GAAb,CAAvB,EAA0C,KAAK0D,OAAL,CAAapP,MAAvD,CAAb;AAEAmsB,IAAAA,IAAI,CAAC9uB,SAAL,CAAeoU,GAAf,CAAmBnJ,mBAAnB;;AACA,QAAI6jB,IAAI,CAAC9uB,SAAL,CAAeC,QAAf,CAAwBwsB,wBAAxB,CAAJ,EAAuD;AACrDvf,MAAAA,cAAc,CAACK,OAAf,CAAuB0f,0BAAvB,EAAiD6B,IAAI,CAACzkB,OAAL,CAAa2iB,mBAAb,CAAjD,EACGhtB,SADH,CACaoU,GADb,CACiBnJ,mBADjB;AAED,KAHD,MAGO;AACLiC,MAAAA,cAAc,CAACS,OAAf,CAAuBmhB,IAAvB,EAA6BnC,yBAA7B,EACG1tB,OADH,CACW8vB,SAAS,IAAI;AACpB;AACA;AACA7hB,QAAAA,cAAc,CAACW,IAAf,CAAoBkhB,SAApB,EAAgC,GAAEnC,kBAAmB,KAAIE,mBAAoB,EAA7E,EACG7tB,OADH,CACWovB,IAAI,IAAIA,IAAI,CAACruB,SAAL,CAAeoU,GAAf,CAAmBnJ,mBAAnB,CADnB,EAHoB;;AAOpBiC,QAAAA,cAAc,CAACW,IAAf,CAAoBkhB,SAApB,EAA+BlC,kBAA/B,EACG5tB,OADH,CACW+vB,OAAO,IAAI;AAClB9hB,UAAAA,cAAc,CAACM,QAAf,CAAwBwhB,OAAxB,EAAiCpC,kBAAjC,EACG3tB,OADH,CACWovB,IAAI,IAAIA,IAAI,CAACruB,SAAL,CAAeoU,GAAf,CAAmBnJ,mBAAnB,CADnB;AAED,SAJH;AAKD,OAbH;AAcD;;AAEDvG,IAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKkmB,cAA1B,EAA0Cd,cAA1C,EAA0D;AACxDrmB,MAAAA,aAAa,EAAEvD;AADyC,KAA1D;AAGD;;AAEDgsB,EAAAA,MAAM,GAAG;AACPzhB,IAAAA,cAAc,CAACC,IAAf,CAAoB4f,mBAApB,EAAyC,KAAKhb,OAAL,CAAapP,MAAtD,EACGwJ,MADH,CACU8iB,IAAI,IAAIA,IAAI,CAACjvB,SAAL,CAAeC,QAAf,CAAwBgL,mBAAxB,CADlB,EAEGhM,OAFH,CAEWgwB,IAAI,IAAIA,IAAI,CAACjvB,SAAL,CAAe+I,MAAf,CAAsBkC,mBAAtB,CAFnB;AAGD,GA3LmC;;;AA+Ld,SAAfjJ,eAAe,CAACnD,MAAD,EAAS;AAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;AAC3B,YAAMC,IAAI,GAAGqiB,SAAS,CAACtjB,mBAAV,CAA8B,IAA9B,EAAoCjL,MAApC,CAAb;;AAEA,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AAC9B;AACD;;AAED,UAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;AACvC,cAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;AACD;;AAEDkM,MAAAA,IAAI,CAAClM,MAAD,CAAJ;AACD,KAZM,CAAP;AAaD;;AA7MmC;AAgNtC;AACA;AACA;AACA;AACA;;;AAEA6F,YAAY,CAACkC,EAAb,CAAgB/I,MAAhB,EAAwBsS,mBAAxB,EAA6C,MAAM;AACjDjD,EAAAA,cAAc,CAACC,IAAf,CAAoBuf,iBAApB,EACGztB,OADH,CACWiwB,GAAG,IAAI,IAAI9B,SAAJ,CAAc8B,GAAd,CADlB;AAED,CAHD;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEAztB,kBAAkB,CAAC2rB,SAAD,CAAlB;;ACpSA;AACA;AACA;AACA;AACA;AACA;AAYA;AACA;AACA;AACA;AACA;;AAEA,MAAMvrB,MAAI,GAAG,KAAb;AACA,MAAMyH,UAAQ,GAAG,QAAjB;AACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;AACA,MAAM0B,YAAY,GAAG,WAArB;AAEA,MAAMsL,YAAU,GAAI,OAAM9M,WAAU,EAApC;AACA,MAAM+M,cAAY,GAAI,SAAQ/M,WAAU,EAAxC;AACA,MAAM4M,YAAU,GAAI,OAAM5M,WAAU,EAApC;AACA,MAAM6M,aAAW,GAAI,QAAO7M,WAAU,EAAtC;AACA,MAAM2B,oBAAoB,GAAI,QAAO3B,WAAU,GAAEwB,YAAa,EAA9D;AAEA,MAAMmkB,wBAAwB,GAAG,eAAjC;AACA,MAAMlkB,iBAAiB,GAAG,QAA1B;AACA,MAAMT,iBAAe,GAAG,MAAxB;AACA,MAAMC,iBAAe,GAAG,MAAxB;AAEA,MAAMuiB,iBAAiB,GAAG,WAA1B;AACA,MAAML,uBAAuB,GAAG,mBAAhC;AACA,MAAMhc,eAAe,GAAG,SAAxB;AACA,MAAMye,kBAAkB,GAAG,uBAA3B;AACA,MAAMlkB,oBAAoB,GAAG,0EAA7B;AACA,MAAM+hB,wBAAwB,GAAG,kBAAjC;AACA,MAAMoC,8BAA8B,GAAG,iCAAvC;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,GAAN,SAAkBpmB,aAAlB,CAAgC;AAC9B;AAEe,aAAJrH,IAAI,GAAG;AAChB,WAAOA,MAAP;AACD,GAL6B;;;AAS9B8V,EAAAA,IAAI,GAAG;AACL,QAAK,KAAKvO,QAAL,CAAc1I,UAAd,IACH,KAAK0I,QAAL,CAAc1I,UAAd,CAAyBlC,QAAzB,KAAsCsB,IAAI,CAACC,YADxC,IAEH,KAAKqJ,QAAL,CAAcpJ,SAAd,CAAwBC,QAAxB,CAAiCgL,iBAAjC,CAFF,EAEwD;AACtD;AACD;;AAED,QAAI6C,QAAJ;AACA,UAAMnL,MAAM,GAAGlF,sBAAsB,CAAC,KAAK2L,QAAN,CAArC;;AACA,UAAMmmB,WAAW,GAAG,KAAKnmB,QAAL,CAAciB,OAAd,CAAsBsiB,uBAAtB,CAApB;;AAEA,QAAI4C,WAAJ,EAAiB;AACf,YAAMC,YAAY,GAAGD,WAAW,CAAC5L,QAAZ,KAAyB,IAAzB,IAAiC4L,WAAW,CAAC5L,QAAZ,KAAyB,IAA1D,GAAiEyL,kBAAjE,GAAsFze,eAA3G;AACA7C,MAAAA,QAAQ,GAAGZ,cAAc,CAACC,IAAf,CAAoBqiB,YAApB,EAAkCD,WAAlC,CAAX;AACAzhB,MAAAA,QAAQ,GAAGA,QAAQ,CAACA,QAAQ,CAACpP,MAAT,GAAkB,CAAnB,CAAnB;AACD;;AAED,UAAM2c,SAAS,GAAGvN,QAAQ,GACxBpJ,YAAY,CAACyC,OAAb,CAAqB2G,QAArB,EAA+BwI,YAA/B,EAA2C;AACzCpQ,MAAAA,aAAa,EAAE,KAAKkD;AADqB,KAA3C,CADwB,GAIxB,IAJF;AAMA,UAAM0R,SAAS,GAAGpW,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCgN,YAApC,EAAgD;AAChElQ,MAAAA,aAAa,EAAE4H;AADiD,KAAhD,CAAlB;;AAIA,QAAIgN,SAAS,CAACtT,gBAAV,IAA+B6T,SAAS,KAAK,IAAd,IAAsBA,SAAS,CAAC7T,gBAAnE,EAAsF;AACpF;AACD;;AAED,SAAKknB,SAAL,CAAe,KAAKtlB,QAApB,EAA8BmmB,WAA9B;;AAEA,UAAMlX,QAAQ,GAAG,MAAM;AACrB3T,MAAAA,YAAY,CAACyC,OAAb,CAAqB2G,QAArB,EAA+ByI,cAA/B,EAA6C;AAC3CrQ,QAAAA,aAAa,EAAE,KAAKkD;AADuB,OAA7C;AAGA1E,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCiN,aAApC,EAAiD;AAC/CnQ,QAAAA,aAAa,EAAE4H;AADgC,OAAjD;AAGD,KAPD;;AASA,QAAInL,MAAJ,EAAY;AACV,WAAK+rB,SAAL,CAAe/rB,MAAf,EAAuBA,MAAM,CAACjC,UAA9B,EAA0C2X,QAA1C;AACD,KAFD,MAEO;AACLA,MAAAA,QAAQ;AACT;AACF,GAxD6B;;;AA4D9BqW,EAAAA,SAAS,CAAC3xB,OAAD,EAAU+a,SAAV,EAAqB3W,QAArB,EAA+B;AACtC,UAAMsuB,cAAc,GAAG3X,SAAS,KAAKA,SAAS,CAAC6L,QAAV,KAAuB,IAAvB,IAA+B7L,SAAS,CAAC6L,QAAV,KAAuB,IAA3D,CAAT,GACrBzW,cAAc,CAACC,IAAf,CAAoBiiB,kBAApB,EAAwCtX,SAAxC,CADqB,GAErB5K,cAAc,CAACM,QAAf,CAAwBsK,SAAxB,EAAmCnH,eAAnC,CAFF;AAIA,UAAM+e,MAAM,GAAGD,cAAc,CAAC,CAAD,CAA7B;AACA,UAAME,eAAe,GAAGxuB,QAAQ,IAAKuuB,MAAM,IAAIA,MAAM,CAAC1vB,SAAP,CAAiBC,QAAjB,CAA0BuK,iBAA1B,CAA/C;;AAEA,UAAM6N,QAAQ,GAAG,MAAM,KAAKuX,mBAAL,CAAyB7yB,OAAzB,EAAkC2yB,MAAlC,EAA0CvuB,QAA1C,CAAvB;;AAEA,QAAIuuB,MAAM,IAAIC,eAAd,EAA+B;AAC7BD,MAAAA,MAAM,CAAC1vB,SAAP,CAAiB+I,MAAjB,CAAwB0B,iBAAxB;;AACA,WAAKd,cAAL,CAAoB0O,QAApB,EAA8Btb,OAA9B,EAAuC,IAAvC;AACD,KAHD,MAGO;AACLsb,MAAAA,QAAQ;AACT;AACF;;AAEDuX,EAAAA,mBAAmB,CAAC7yB,OAAD,EAAU2yB,MAAV,EAAkBvuB,QAAlB,EAA4B;AAC7C,QAAIuuB,MAAJ,EAAY;AACVA,MAAAA,MAAM,CAAC1vB,SAAP,CAAiB+I,MAAjB,CAAwBkC,iBAAxB;AAEA,YAAM4kB,aAAa,GAAG3iB,cAAc,CAACK,OAAf,CAAuB8hB,8BAAvB,EAAuDK,MAAM,CAAChvB,UAA9D,CAAtB;;AAEA,UAAImvB,aAAJ,EAAmB;AACjBA,QAAAA,aAAa,CAAC7vB,SAAd,CAAwB+I,MAAxB,CAA+BkC,iBAA/B;AACD;;AAED,UAAIykB,MAAM,CAACzyB,YAAP,CAAoB,MAApB,MAAgC,KAApC,EAA2C;AACzCyyB,QAAAA,MAAM,CAACpkB,YAAP,CAAoB,eAApB,EAAqC,KAArC;AACD;AACF;;AAEDvO,IAAAA,OAAO,CAACiD,SAAR,CAAkBoU,GAAlB,CAAsBnJ,iBAAtB;;AACA,QAAIlO,OAAO,CAACE,YAAR,CAAqB,MAArB,MAAiC,KAArC,EAA4C;AAC1CF,MAAAA,OAAO,CAACuO,YAAR,CAAqB,eAArB,EAAsC,IAAtC;AACD;;AAED1K,IAAAA,MAAM,CAAC7D,OAAD,CAAN;;AAEA,QAAIA,OAAO,CAACiD,SAAR,CAAkBC,QAAlB,CAA2BuK,iBAA3B,CAAJ,EAAiD;AAC/CzN,MAAAA,OAAO,CAACiD,SAAR,CAAkBoU,GAAlB,CAAsB3J,iBAAtB;AACD;;AAED,QAAI0L,MAAM,GAAGpZ,OAAO,CAAC2D,UAArB;;AACA,QAAIyV,MAAM,IAAIA,MAAM,CAACwN,QAAP,KAAoB,IAAlC,EAAwC;AACtCxN,MAAAA,MAAM,GAAGA,MAAM,CAACzV,UAAhB;AACD;;AAED,QAAIyV,MAAM,IAAIA,MAAM,CAACnW,SAAP,CAAiBC,QAAjB,CAA0BkvB,wBAA1B,CAAd,EAAmE;AACjE,YAAMW,eAAe,GAAG/yB,OAAO,CAACsN,OAAR,CAAgB2iB,iBAAhB,CAAxB;;AAEA,UAAI8C,eAAJ,EAAqB;AACnB5iB,QAAAA,cAAc,CAACC,IAAf,CAAoB8f,wBAApB,EAA8C6C,eAA9C,EACG7wB,OADH,CACW8wB,QAAQ,IAAIA,QAAQ,CAAC/vB,SAAT,CAAmBoU,GAAnB,CAAuBnJ,iBAAvB,CADvB;AAED;;AAEDlO,MAAAA,OAAO,CAACuO,YAAR,CAAqB,eAArB,EAAsC,IAAtC;AACD;;AAED,QAAInK,QAAJ,EAAc;AACZA,MAAAA,QAAQ;AACT;AACF,GA3H6B;;;AA+HR,SAAfa,eAAe,CAACnD,MAAD,EAAS;AAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;AAC3B,YAAMC,IAAI,GAAGukB,GAAG,CAACxlB,mBAAJ,CAAwB,IAAxB,CAAb;;AAEA,UAAI,OAAOjL,MAAP,KAAkB,QAAtB,EAAgC;AAC9B,YAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;AACvC,gBAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;AACD;;AAEDkM,QAAAA,IAAI,CAAClM,MAAD,CAAJ;AACD;AACF,KAVM,CAAP;AAWD;;AA3I6B;AA8IhC;AACA;AACA;AACA;AACA;;;AAEA6F,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,oBAA1B,EAAgDD,oBAAhD,EAAsE,UAAU3G,KAAV,EAAiB;AACrF,MAAI,CAAC,GAAD,EAAM,MAAN,EAAcpH,QAAd,CAAuB,KAAKiN,OAA5B,CAAJ,EAA0C;AACxC7F,IAAAA,KAAK,CAAC6D,cAAN;AACD;;AAED,MAAIvI,UAAU,CAAC,IAAD,CAAd,EAAsB;AACpB;AACD;;AAED,QAAMkL,IAAI,GAAGukB,GAAG,CAACxlB,mBAAJ,CAAwB,IAAxB,CAAb;AACAiB,EAAAA,IAAI,CAAC4M,IAAL;AACD,CAXD;AAaA;AACA;AACA;AACA;AACA;AACA;;AAEAlW,kBAAkB,CAAC6tB,GAAD,CAAlB;;AC7NA;AACA;AACA;AACA;AACA;AACA;AAYA;AACA;AACA;AACA;AACA;;AAEA,MAAMztB,IAAI,GAAG,OAAb;AACA,MAAMyH,QAAQ,GAAG,UAAjB;AACA,MAAME,SAAS,GAAI,IAAGF,QAAS,EAA/B;AAEA,MAAM0mB,eAAe,GAAI,YAAWxmB,SAAU,EAA9C;AACA,MAAMymB,cAAc,GAAI,WAAUzmB,SAAU,EAA5C;AACA,MAAM8V,aAAa,GAAI,UAAS9V,SAAU,EAA1C;AACA,MAAM0mB,cAAc,GAAI,WAAU1mB,SAAU,EAA5C;AACA,MAAM8M,UAAU,GAAI,OAAM9M,SAAU,EAApC;AACA,MAAM+M,YAAY,GAAI,SAAQ/M,SAAU,EAAxC;AACA,MAAM4M,UAAU,GAAI,OAAM5M,SAAU,EAApC;AACA,MAAM6M,WAAW,GAAI,QAAO7M,SAAU,EAAtC;AAEA,MAAMgB,eAAe,GAAG,MAAxB;AACA,MAAM2lB,eAAe,GAAG,MAAxB;;AACA,MAAM1lB,eAAe,GAAG,MAAxB;AACA,MAAM2lB,kBAAkB,GAAG,SAA3B;AAEA,MAAMlhB,WAAW,GAAG;AAClByX,EAAAA,SAAS,EAAE,SADO;AAElB0J,EAAAA,QAAQ,EAAE,SAFQ;AAGlBvJ,EAAAA,KAAK,EAAE;AAHW,CAApB;AAMA,MAAMnY,OAAO,GAAG;AACdgY,EAAAA,SAAS,EAAE,IADG;AAEd0J,EAAAA,QAAQ,EAAE,IAFI;AAGdvJ,EAAAA,KAAK,EAAE;AAHO,CAAhB;AAMA;AACA;AACA;AACA;AACA;;AAEA,MAAMwJ,KAAN,SAAoBpnB,aAApB,CAAkC;AAChCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;AAC3B,UAAM9B,OAAN;AAEA,SAAKgV,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;AACA,SAAKkqB,QAAL,GAAgB,IAAhB;AACA,SAAKwH,oBAAL,GAA4B,KAA5B;AACA,SAAKC,uBAAL,GAA+B,KAA/B;;AACA,SAAKrH,aAAL;AACD,GAT+B;;;AAaV,aAAXja,WAAW,GAAG;AACvB,WAAOA,WAAP;AACD;;AAEiB,aAAPP,OAAO,GAAG;AACnB,WAAOA,OAAP;AACD;;AAEc,aAAJ9M,IAAI,GAAG;AAChB,WAAOA,IAAP;AACD,GAvB+B;;;AA2BhC8V,EAAAA,IAAI,GAAG;AACL,UAAMmD,SAAS,GAAGpW,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCgN,UAApC,CAAlB;;AAEA,QAAI0E,SAAS,CAACtT,gBAAd,EAAgC;AAC9B;AACD;;AAED,SAAKipB,aAAL;;AAEA,QAAI,KAAK1e,OAAL,CAAa4U,SAAjB,EAA4B;AAC1B,WAAKvd,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4B5J,eAA5B;AACD;;AAED,UAAM6N,QAAQ,GAAG,MAAM;AACrB,WAAKjP,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+BqnB,kBAA/B;;AACA1rB,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCiN,WAApC;;AAEA,WAAKqa,kBAAL;AACD,KALD;;AAOA,SAAKtnB,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+BonB,eAA/B,EApBK;;;AAqBLvvB,IAAAA,MAAM,CAAC,KAAKwI,QAAN,CAAN;;AACA,SAAKA,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4B3J,eAA5B;;AACA,SAAKrB,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4Bgc,kBAA5B;;AAEA,SAAKzmB,cAAL,CAAoB0O,QAApB,EAA8B,KAAKjP,QAAnC,EAA6C,KAAK2I,OAAL,CAAa4U,SAA1D;AACD;;AAEDjP,EAAAA,IAAI,GAAG;AACL,QAAI,CAAC,KAAKtO,QAAL,CAAcpJ,SAAd,CAAwBC,QAAxB,CAAiCwK,eAAjC,CAAL,EAAwD;AACtD;AACD;;AAED,UAAM4Q,SAAS,GAAG3W,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCkN,UAApC,CAAlB;;AAEA,QAAI+E,SAAS,CAAC7T,gBAAd,EAAgC;AAC9B;AACD;;AAED,UAAM6Q,QAAQ,GAAG,MAAM;AACrB,WAAKjP,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4B+b,eAA5B,EADqB;;;AAErB,WAAK/mB,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+BqnB,kBAA/B;;AACA,WAAKhnB,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0B,eAA/B;;AACA/F,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCmN,YAApC;AACD,KALD;;AAOA,SAAKnN,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4Bgc,kBAA5B;;AACA,SAAKzmB,cAAL,CAAoB0O,QAApB,EAA8B,KAAKjP,QAAnC,EAA6C,KAAK2I,OAAL,CAAa4U,SAA1D;AACD;;AAEDpd,EAAAA,OAAO,GAAG;AACR,SAAKknB,aAAL;;AAEA,QAAI,KAAKrnB,QAAL,CAAcpJ,SAAd,CAAwBC,QAAxB,CAAiCwK,eAAjC,CAAJ,EAAuD;AACrD,WAAKrB,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0B,eAA/B;AACD;;AAED,UAAMlB,OAAN;AACD,GArF+B;;;AAyFhCyI,EAAAA,UAAU,CAACnT,MAAD,EAAS;AACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,OADI;AAEP,SAAG/C,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAFI;AAGP,UAAI,OAAOvK,MAAP,KAAkB,QAAlB,IAA8BA,MAA9B,GAAuCA,MAAvC,GAAgD,EAApD;AAHO,KAAT;AAMAF,IAAAA,eAAe,CAACkD,IAAD,EAAOhD,MAAP,EAAe,KAAKsK,WAAL,CAAiB+F,WAAhC,CAAf;AAEA,WAAOrQ,MAAP;AACD;;AAED6xB,EAAAA,kBAAkB,GAAG;AACnB,QAAI,CAAC,KAAK3e,OAAL,CAAase,QAAlB,EAA4B;AAC1B;AACD;;AAED,QAAI,KAAKE,oBAAL,IAA6B,KAAKC,uBAAtC,EAA+D;AAC7D;AACD;;AAED,SAAKzH,QAAL,GAAgBlmB,UAAU,CAAC,MAAM;AAC/B,WAAK6U,IAAL;AACD,KAFyB,EAEvB,KAAK3F,OAAL,CAAa+U,KAFU,CAA1B;AAGD;;AAED6J,EAAAA,cAAc,CAACpsB,KAAD,EAAQqsB,aAAR,EAAuB;AACnC,YAAQrsB,KAAK,CAACK,IAAd;AACE,WAAK,WAAL;AACA,WAAK,UAAL;AACE,aAAK2rB,oBAAL,GAA4BK,aAA5B;AACA;;AACF,WAAK,SAAL;AACA,WAAK,UAAL;AACE,aAAKJ,uBAAL,GAA+BI,aAA/B;AACA;AARJ;;AAaA,QAAIA,aAAJ,EAAmB;AACjB,WAAKH,aAAL;;AACA;AACD;;AAED,UAAMrb,WAAW,GAAG7Q,KAAK,CAAC2B,aAA1B;;AACA,QAAI,KAAKkD,QAAL,KAAkBgM,WAAlB,IAAiC,KAAKhM,QAAL,CAAcnJ,QAAd,CAAuBmV,WAAvB,CAArC,EAA0E;AACxE;AACD;;AAED,SAAKsb,kBAAL;AACD;;AAEDvH,EAAAA,aAAa,GAAG;AACdzkB,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B4mB,eAA/B,EAAgDzrB,KAAK,IAAI,KAAKosB,cAAL,CAAoBpsB,KAApB,EAA2B,IAA3B,CAAzD;AACAG,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B6mB,cAA/B,EAA+C1rB,KAAK,IAAI,KAAKosB,cAAL,CAAoBpsB,KAApB,EAA2B,KAA3B,CAAxD;AACAG,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BkW,aAA/B,EAA8C/a,KAAK,IAAI,KAAKosB,cAAL,CAAoBpsB,KAApB,EAA2B,IAA3B,CAAvD;AACAG,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B8mB,cAA/B,EAA+C3rB,KAAK,IAAI,KAAKosB,cAAL,CAAoBpsB,KAApB,EAA2B,KAA3B,CAAxD;AACD;;AAEDksB,EAAAA,aAAa,GAAG;AACdxc,IAAAA,YAAY,CAAC,KAAK8U,QAAN,CAAZ;AACA,SAAKA,QAAL,GAAgB,IAAhB;AACD,GAxJ+B;;;AA4JV,SAAf/mB,eAAe,CAACnD,MAAD,EAAS;AAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;AAC3B,YAAMC,IAAI,GAAGulB,KAAK,CAACxmB,mBAAN,CAA0B,IAA1B,EAAgCjL,MAAhC,CAAb;;AAEA,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AAC9B,YAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;AACvC,gBAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;AACD;;AAEDkM,QAAAA,IAAI,CAAClM,MAAD,CAAJ,CAAa,IAAb;AACD;AACF,KAVM,CAAP;AAWD;;AAxK+B;;AA2KlCmL,oBAAoB,CAACsmB,KAAD,CAApB;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA7uB,kBAAkB,CAAC6uB,KAAD,CAAlB;;;;"}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js
new file mode 100644
index 0000000..ab1666b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js
@@ -0,0 +1,7 @@
+/*!
+  * Bootstrap v5.1.0 (https://getbootstrap.com/)
+  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+  */
+import*as Popper from"@popperjs/core";const MAX_UID=1e6,MILLISECONDS_MULTIPLIER=1e3,TRANSITION_END="transitionend",toType=e=>null==e?""+e:{}.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),getUID=e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e},getSelector=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let i=e.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i="#"+i.split("#")[1]),t=i&&"#"!==i?i.trim():null}return t},getSelectorFromElement=e=>{const t=getSelector(e);return t&&document.querySelector(t)?t:null},getElementFromSelector=e=>{const t=getSelector(e);return t?document.querySelector(t):null},getTransitionDurationFromElement=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:i}=window.getComputedStyle(e);const n=Number.parseFloat(t),s=Number.parseFloat(i);return n||s?(t=t.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(i))):0},triggerTransitionEnd=e=>{e.dispatchEvent(new Event(TRANSITION_END))},isElement=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),getElement=e=>isElement(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(e):null,typeCheckConfig=(e,t,i)=>{Object.keys(i).forEach(n=>{const s=i[n],o=t[n],r=o&&isElement(o)?"element":null==(a=o)?""+a:{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase();var a;if(!new RegExp(s).test(r))throw new TypeError(`${e.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)})},isVisible=e=>!(!isElement(e)||0===e.getClientRects().length)&&"visible"===getComputedStyle(e).getPropertyValue("visibility"),isDisabled=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")),findShadowRoot=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?findShadowRoot(e.parentNode):null},noop=()=>{},reflow=e=>{e.offsetHeight},getjQuery=()=>{const{jQuery:e}=window;return e&&!document.body.hasAttribute("data-bs-no-jquery")?e:null},DOMContentLoadedCallbacks=[],onDOMContentLoaded=e=>{"loading"===document.readyState?(DOMContentLoadedCallbacks.length||document.addEventListener("DOMContentLoaded",()=>{DOMContentLoadedCallbacks.forEach(e=>e())}),DOMContentLoadedCallbacks.push(e)):e()},isRTL=()=>"rtl"===document.documentElement.dir,defineJQueryPlugin=e=>{var t;t=()=>{const t=getjQuery();if(t){const i=e.NAME,n=t.fn[i];t.fn[i]=e.jQueryInterface,t.fn[i].Constructor=e,t.fn[i].noConflict=()=>(t.fn[i]=n,e.jQueryInterface)}},"loading"===document.readyState?(DOMContentLoadedCallbacks.length||document.addEventListener("DOMContentLoaded",()=>{DOMContentLoadedCallbacks.forEach(e=>e())}),DOMContentLoadedCallbacks.push(t)):t()},execute=e=>{"function"==typeof e&&e()},executeAfterTransition=(e,t,i=!0)=>{if(!i)return void execute(e);const n=getTransitionDurationFromElement(t)+5;let s=!1;const o=({target:i})=>{i===t&&(s=!0,t.removeEventListener(TRANSITION_END,o),execute(e))};t.addEventListener(TRANSITION_END,o),setTimeout(()=>{s||triggerTransitionEnd(t)},n)},getNextActiveElement=(e,t,i,n)=>{let s=e.indexOf(t);if(-1===s)return e[!i&&n?e.length-1:0];const o=e.length;return s+=i?1:-1,n&&(s=(s+o)%o),e[Math.max(0,Math.min(s,o-1))]},namespaceRegex=/[^.]*(?=\..*)\.|.*/,stripNameRegex=/\..*/,stripUidRegex=/::\d+$/,eventRegistry={};let uidEvent=1;const customEvents={mouseenter:"mouseover",mouseleave:"mouseout"},customEventsRegex=/^(mouseenter|mouseleave)/i,nativeEvents=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function getUidEvent(e,t){return t&&`${t}::${uidEvent++}`||e.uidEvent||uidEvent++}function getEvent(e){const t=getUidEvent(e);return e.uidEvent=t,eventRegistry[t]=eventRegistry[t]||{},eventRegistry[t]}function bootstrapHandler(e,t){return function i(n){return n.delegateTarget=e,i.oneOff&&EventHandler.off(e,n.type,t),t.apply(e,[n])}}function bootstrapDelegationHandler(e,t,i){return function n(s){const o=e.querySelectorAll(t);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&EventHandler.off(e,s.type,t,i),i.apply(r,[s]);return null}}function findHandler(e,t,i=null){const n=Object.keys(e);for(let s=0,o=n.length;s<o;s++){const o=e[n[s]];if(o.originalHandler===t&&o.delegationSelector===i)return o}return null}function normalizeParams(e,t,i){const n="string"==typeof t,s=n?i:t;let o=getTypeEvent(e);return nativeEvents.has(o)||(o=e),[n,s,o]}function addHandler(e,t,i,n,s){if("string"!=typeof t||!e)return;if(i||(i=n,n=null),customEventsRegex.test(t)){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};n?n=e(n):i=e(i)}const[o,r,a]=normalizeParams(t,i,n),l=getEvent(e),c=l[a]||(l[a]={}),_=findHandler(c,r,o?i:null);if(_)return void(_.oneOff=_.oneOff&&s);const h=getUidEvent(r,t.replace(namespaceRegex,"")),E=o?bootstrapDelegationHandler(e,i,n):bootstrapHandler(e,i);E.delegationSelector=o?i:null,E.originalHandler=r,E.oneOff=s,E.uidEvent=h,c[h]=E,e.addEventListener(a,E,o)}function removeHandler(e,t,i,n,s){const o=findHandler(t[i],n,s);o&&(e.removeEventListener(i,o,Boolean(s)),delete t[i][o.uidEvent])}function removeNamespacedHandlers(e,t,i,n){const s=t[i]||{};Object.keys(s).forEach(o=>{if(o.includes(n)){const n=s[o];removeHandler(e,t,i,n.originalHandler,n.delegationSelector)}})}function getTypeEvent(e){return e=e.replace(stripNameRegex,""),customEvents[e]||e}const EventHandler={on(e,t,i,n){addHandler(e,t,i,n,!1)},one(e,t,i,n){addHandler(e,t,i,n,!0)},off(e,t,i,n){if("string"!=typeof t||!e)return;const[s,o,r]=normalizeParams(t,i,n),a=r!==t,l=getEvent(e),c=t.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void removeHandler(e,l,r,o,s?i:null)}c&&Object.keys(l).forEach(i=>{removeNamespacedHandlers(e,l,i,t.slice(1))});const _=l[r]||{};Object.keys(_).forEach(i=>{const n=i.replace(stripUidRegex,"");if(!a||t.includes(n)){const t=_[i];removeHandler(e,l,r,t.originalHandler,t.delegationSelector)}})},trigger(e,t,i){if("string"!=typeof t||!e)return null;const n=getjQuery(),s=getTypeEvent(t),o=t!==s,r=nativeEvents.has(s);let a,l=!0,c=!0,_=!1,h=null;return o&&n&&(a=n.Event(t,i),n(e).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),_=a.isDefaultPrevented()),r?(h=document.createEvent("HTMLEvents"),h.initEvent(s,l,!0)):h=new CustomEvent(t,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach(e=>{Object.defineProperty(h,e,{get:()=>i[e]})}),_&&h.preventDefault(),c&&e.dispatchEvent(h),h.defaultPrevented&&void 0!==a&&a.preventDefault(),h}},elementMap=new Map;var Data={set(e,t,i){elementMap.has(e)||elementMap.set(e,new Map);const n=elementMap.get(e);n.has(t)||0===n.size?n.set(t,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(e,t)=>elementMap.has(e)&&elementMap.get(e).get(t)||null,remove(e,t){if(!elementMap.has(e))return;const i=elementMap.get(e);i.delete(t),0===i.size&&elementMap.delete(e)}};const VERSION="5.1.0";class BaseComponent{constructor(e){(e=getElement(e))&&(this._element=e,Data.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Data.remove(this._element,this.constructor.DATA_KEY),EventHandler.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(e=>{this[e]=null})}_queueCallback(e,t,i=!0){executeAfterTransition(e,t,i)}static getInstance(e){return Data.get(getElement(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.1.0"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return"bs."+this.NAME}static get EVENT_KEY(){return"."+this.DATA_KEY}}const enableDismissTrigger=(e,t="hide")=>{const i="click.dismiss"+e.EVENT_KEY,n=e.NAME;EventHandler.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),isDisabled(this))return;const s=getElementFromSelector(this)||this.closest("."+n);e.getOrCreateInstance(s)[t]()}))},NAME$d="alert",DATA_KEY$c="bs.alert",EVENT_KEY$c=".bs.alert",EVENT_CLOSE="close.bs.alert",EVENT_CLOSED="closed.bs.alert",CLASS_NAME_FADE$5="fade",CLASS_NAME_SHOW$8="show";class Alert extends BaseComponent{static get NAME(){return NAME$d}close(){if(EventHandler.trigger(this._element,EVENT_CLOSE).defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),EventHandler.trigger(this._element,EVENT_CLOSED),this.dispose()}static jQueryInterface(e){return this.each((function(){const t=Alert.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}enableDismissTrigger(Alert,"close"),defineJQueryPlugin(Alert);const NAME$c="button",DATA_KEY$b="bs.button",EVENT_KEY$b=".bs.button",DATA_API_KEY$7=".data-api",CLASS_NAME_ACTIVE$3="active",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$6="click.bs.button.data-api";class Button extends BaseComponent{static get NAME(){return NAME$c}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(e){return this.each((function(){const t=Button.getOrCreateInstance(this);"toggle"===e&&t[e]()}))}}function normalizeData(e){return"true"===e||"false"!==e&&(e===Number(e).toString()?Number(e):""===e||"null"===e?null:e)}function normalizeDataKey(e){return e.replace(/[A-Z]/g,e=>"-"+e.toLowerCase())}EventHandler.on(document,EVENT_CLICK_DATA_API$6,SELECTOR_DATA_TOGGLE$5,e=>{e.preventDefault();const t=e.target.closest(SELECTOR_DATA_TOGGLE$5);Button.getOrCreateInstance(t).toggle()}),defineJQueryPlugin(Button);const Manipulator={setDataAttribute(e,t,i){e.setAttribute("data-bs-"+normalizeDataKey(t),i)},removeDataAttribute(e,t){e.removeAttribute("data-bs-"+normalizeDataKey(t))},getDataAttributes(e){if(!e)return{};const t={};return Object.keys(e.dataset).filter(e=>e.startsWith("bs")).forEach(i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=normalizeData(e.dataset[i])}),t},getDataAttribute:(e,t)=>normalizeData(e.getAttribute("data-bs-"+normalizeDataKey(t))),offset(e){const t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset,left:t.left+window.pageXOffset}},position:e=>({top:e.offsetTop,left:e.offsetLeft})},NODE_TEXT=3,SelectorEngine={find:(e,t=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(t,e)),findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[].concat(...e.children).filter(e=>e.matches(t)),parents(e,t){const i=[];let n=e.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(t)&&i.push(n),n=n.parentNode;return i},prev(e,t){let i=e.previousElementSibling;for(;i;){if(i.matches(t))return[i];i=i.previousElementSibling}return[]},next(e,t){let i=e.nextElementSibling;for(;i;){if(i.matches(t))return[i];i=i.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>e+':not([tabindex^="-"])').join(", ");return this.find(t,e).filter(e=>!isDisabled(e)&&isVisible(e))}},NAME$b="carousel",DATA_KEY$a="bs.carousel",EVENT_KEY$a=".bs.carousel",DATA_API_KEY$6=".data-api",ARROW_LEFT_KEY="ArrowLeft",ARROW_RIGHT_KEY="ArrowRight",TOUCHEVENT_COMPAT_WAIT=500,SWIPE_THRESHOLD=40,Default$a={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},DefaultType$a={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},ORDER_NEXT="next",ORDER_PREV="prev",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",KEY_TO_DIRECTION={ArrowLeft:DIRECTION_RIGHT,ArrowRight:DIRECTION_LEFT},EVENT_SLIDE="slide.bs.carousel",EVENT_SLID="slid.bs.carousel",EVENT_KEYDOWN="keydown.bs.carousel",EVENT_MOUSEENTER="mouseenter.bs.carousel",EVENT_MOUSELEAVE="mouseleave.bs.carousel",EVENT_TOUCHSTART="touchstart.bs.carousel",EVENT_TOUCHMOVE="touchmove.bs.carousel",EVENT_TOUCHEND="touchend.bs.carousel",EVENT_POINTERDOWN="pointerdown.bs.carousel",EVENT_POINTERUP="pointerup.bs.carousel",EVENT_DRAG_START="dragstart.bs.carousel",EVENT_LOAD_DATA_API$2="load.bs.carousel.data-api",EVENT_CLICK_DATA_API$5="click.bs.carousel.data-api",CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$2="active",CLASS_NAME_SLIDE="slide",CLASS_NAME_END="carousel-item-end",CLASS_NAME_START="carousel-item-start",CLASS_NAME_NEXT="carousel-item-next",CLASS_NAME_PREV="carousel-item-prev",CLASS_NAME_POINTER_EVENT="pointer-event",SELECTOR_ACTIVE$1=".active",SELECTOR_ACTIVE_ITEM=".active.carousel-item",SELECTOR_ITEM=".carousel-item",SELECTOR_ITEM_IMG=".carousel-item img",SELECTOR_NEXT_PREV=".carousel-item-next, .carousel-item-prev",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_INDICATOR="[data-bs-target]",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_RIDE='[data-bs-ride="carousel"]',POINTER_TYPE_TOUCH="touch",POINTER_TYPE_PEN="pen";class Carousel extends BaseComponent{constructor(e,t){super(e),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(t),this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return Default$a}static get NAME(){return NAME$b}next(){this._slide(ORDER_NEXT)}nextWhenVisible(){!document.hidden&&isVisible(this._element)&&this.next()}prev(){this._slide(ORDER_PREV)}pause(e){e||(this._isPaused=!0),SelectorEngine.findOne(SELECTOR_NEXT_PREV,this._element)&&(triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(e){e||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(e){this._activeElement=SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element);const t=this._getItemIndex(this._activeElement);if(e>this._items.length-1||e<0)return;if(this._isSliding)return void EventHandler.one(this._element,EVENT_SLID,()=>this.to(e));if(t===e)return this.pause(),void this.cycle();const i=e>t?ORDER_NEXT:ORDER_PREV;this._slide(i,this._items[e])}_getConfig(e){return e={...Default$a,...Manipulator.getDataAttributes(this._element),..."object"==typeof e?e:{}},typeCheckConfig(NAME$b,e,DefaultType$a),e}_handleSwipe(){const e=Math.abs(this.touchDeltaX);if(e<=40)return;const t=e/this.touchDeltaX;this.touchDeltaX=0,t&&this._slide(t>0?DIRECTION_RIGHT:DIRECTION_LEFT)}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN,e=>this._keydown(e)),"hover"===this._config.pause&&(EventHandler.on(this._element,EVENT_MOUSEENTER,e=>this.pause(e)),EventHandler.on(this._element,EVENT_MOUSELEAVE,e=>this.cycle(e))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const e=e=>{!this._pointerEvent||"pen"!==e.pointerType&&"touch"!==e.pointerType?this._pointerEvent||(this.touchStartX=e.touches[0].clientX):this.touchStartX=e.clientX},t=e=>{this.touchDeltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this.touchStartX},i=e=>{!this._pointerEvent||"pen"!==e.pointerType&&"touch"!==e.pointerType||(this.touchDeltaX=e.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(e=>this.cycle(e),500+this._config.interval))};SelectorEngine.find(SELECTOR_ITEM_IMG,this._element).forEach(e=>{EventHandler.on(e,EVENT_DRAG_START,e=>e.preventDefault())}),this._pointerEvent?(EventHandler.on(this._element,EVENT_POINTERDOWN,t=>e(t)),EventHandler.on(this._element,EVENT_POINTERUP,e=>i(e)),this._element.classList.add("pointer-event")):(EventHandler.on(this._element,EVENT_TOUCHSTART,t=>e(t)),EventHandler.on(this._element,EVENT_TOUCHMOVE,e=>t(e)),EventHandler.on(this._element,EVENT_TOUCHEND,e=>i(e)))}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=KEY_TO_DIRECTION[e.key];t&&(e.preventDefault(),this._slide(t))}_getItemIndex(e){return this._items=e&&e.parentNode?SelectorEngine.find(SELECTOR_ITEM,e.parentNode):[],this._items.indexOf(e)}_getItemByOrder(e,t){const i=e===ORDER_NEXT;return getNextActiveElement(this._items,t,i,this._config.wrap)}_triggerSlideEvent(e,t){const i=this._getItemIndex(e),n=this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element));return EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:e,direction:t,from:n,to:i})}_setActiveIndicatorElement(e){if(this._indicatorsElement){const t=SelectorEngine.findOne(".active",this._indicatorsElement);t.classList.remove("active"),t.removeAttribute("aria-current");const i=SelectorEngine.find("[data-bs-target]",this._indicatorsElement);for(let t=0;t<i.length;t++)if(Number.parseInt(i[t].getAttribute("data-bs-slide-to"),10)===this._getItemIndex(e)){i[t].classList.add("active"),i[t].setAttribute("aria-current","true");break}}}_updateInterval(){const e=this._activeElement||SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element);if(!e)return;const t=Number.parseInt(e.getAttribute("data-bs-interval"),10);t?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=t):this._config.interval=this._config.defaultInterval||this._config.interval}_slide(e,t){const i=this._directionToOrder(e),n=SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element),s=this._getItemIndex(n),o=t||this._getItemByOrder(i,n),r=this._getItemIndex(o),a=Boolean(this._interval),l=i===ORDER_NEXT,c=l?CLASS_NAME_START:CLASS_NAME_END,_=l?CLASS_NAME_NEXT:CLASS_NAME_PREV,h=this._orderToDirection(i);if(o&&o.classList.contains("active"))return void(this._isSliding=!1);if(this._isSliding)return;if(this._triggerSlideEvent(o,h).defaultPrevented)return;if(!n||!o)return;this._isSliding=!0,a&&this.pause(),this._setActiveIndicatorElement(o),this._activeElement=o;const E=()=>{EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:o,direction:h,from:s,to:r})};if(this._element.classList.contains("slide")){o.classList.add(_),reflow(o),n.classList.add(c),o.classList.add(c);const e=()=>{o.classList.remove(c,_),o.classList.add("active"),n.classList.remove("active",_,c),this._isSliding=!1,setTimeout(E,0)};this._queueCallback(e,n,!0)}else n.classList.remove("active"),o.classList.add("active"),this._isSliding=!1,E();a&&this.cycle()}_directionToOrder(e){return[DIRECTION_RIGHT,DIRECTION_LEFT].includes(e)?isRTL()?e===DIRECTION_LEFT?ORDER_PREV:ORDER_NEXT:e===DIRECTION_LEFT?ORDER_NEXT:ORDER_PREV:e}_orderToDirection(e){return[ORDER_NEXT,ORDER_PREV].includes(e)?isRTL()?e===ORDER_PREV?DIRECTION_LEFT:DIRECTION_RIGHT:e===ORDER_PREV?DIRECTION_RIGHT:DIRECTION_LEFT:e}static carouselInterface(e,t){const i=Carousel.getOrCreateInstance(e,t);let{_config:n}=i;"object"==typeof t&&(n={...n,...t});const s="string"==typeof t?t:n.slide;if("number"==typeof t)i.to(t);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(e){return this.each((function(){Carousel.carouselInterface(this,e)}))}static dataApiClickHandler(e){const t=getElementFromSelector(this);if(!t||!t.classList.contains("carousel"))return;const i={...Manipulator.getDataAttributes(t),...Manipulator.getDataAttributes(this)},n=this.getAttribute("data-bs-slide-to");n&&(i.interval=!1),Carousel.carouselInterface(t,i),n&&Carousel.getInstance(t).to(n),e.preventDefault()}}EventHandler.on(document,EVENT_CLICK_DATA_API$5,SELECTOR_DATA_SLIDE,Carousel.dataApiClickHandler),EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{const e=SelectorEngine.find(SELECTOR_DATA_RIDE);for(let t=0,i=e.length;t<i;t++)Carousel.carouselInterface(e[t],Carousel.getInstance(e[t]))}),defineJQueryPlugin(Carousel);const NAME$a="collapse",DATA_KEY$9="bs.collapse",EVENT_KEY$9=".bs.collapse",DATA_API_KEY$5=".data-api",Default$9={toggle:!0,parent:null},DefaultType$9={toggle:"boolean",parent:"(null|element)"},EVENT_SHOW$5="show.bs.collapse",EVENT_SHOWN$5="shown.bs.collapse",EVENT_HIDE$5="hide.bs.collapse",EVENT_HIDDEN$5="hidden.bs.collapse",EVENT_CLICK_DATA_API$4="click.bs.collapse.data-api",CLASS_NAME_SHOW$7="show",CLASS_NAME_COLLAPSE="collapse",CLASS_NAME_COLLAPSING="collapsing",CLASS_NAME_COLLAPSED="collapsed",CLASS_NAME_HORIZONTAL="collapse-horizontal",WIDTH="width",HEIGHT="height",SELECTOR_ACTIVES=".show, .collapsing",SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="collapse"]';class Collapse extends BaseComponent{constructor(e,t){super(e),this._isTransitioning=!1,this._config=this._getConfig(t),this._triggerArray=[];const i=SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);for(let e=0,t=i.length;e<t;e++){const t=i[e],n=getSelectorFromElement(t),s=SelectorEngine.find(n).filter(e=>e===this._element);null!==n&&s.length&&(this._selector=n,this._triggerArray.push(t))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Default$9}static get NAME(){return NAME$a}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e,t=[];if(this._config.parent){const e=SelectorEngine.find(".collapse .collapse",this._config.parent);t=SelectorEngine.find(SELECTOR_ACTIVES,this._config.parent).filter(t=>!e.includes(t))}const i=SelectorEngine.findOne(this._selector);if(t.length){const n=t.find(e=>i!==e);if(e=n?Collapse.getInstance(n):null,e&&e._isTransitioning)return}if(EventHandler.trigger(this._element,EVENT_SHOW$5).defaultPrevented)return;t.forEach(t=>{i!==t&&Collapse.getOrCreateInstance(t,{toggle:!1}).hide(),e||Data.set(t,DATA_KEY$9,null)});const n=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s="scroll"+(n[0].toUpperCase()+n.slice(1));this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[n]="",EventHandler.trigger(this._element,EVENT_SHOWN$5)},this._element,!0),this._element.style[n]=this._element[s]+"px"}hide(){if(this._isTransitioning||!this._isShown())return;if(EventHandler.trigger(this._element,EVENT_HIDE$5).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=this._element.getBoundingClientRect()[e]+"px",reflow(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const t=this._triggerArray.length;for(let e=0;e<t;e++){const t=this._triggerArray[e],i=getElementFromSelector(t);i&&!this._isShown(i)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[e]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),EventHandler.trigger(this._element,EVENT_HIDDEN$5)},this._element,!0)}_isShown(e=this._element){return e.classList.contains("show")}_getConfig(e){return(e={...Default$9,...Manipulator.getDataAttributes(this._element),...e}).toggle=Boolean(e.toggle),e.parent=getElement(e.parent),typeCheckConfig(NAME$a,e,DefaultType$9),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?WIDTH:HEIGHT}_initializeChildren(){if(!this._config.parent)return;const e=SelectorEngine.find(".collapse .collapse",this._config.parent);SelectorEngine.find(SELECTOR_DATA_TOGGLE$4,this._config.parent).filter(t=>!e.includes(t)).forEach(e=>{const t=getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))})}_addAriaAndCollapsedClass(e,t){e.length&&e.forEach(e=>{t?e.classList.remove("collapsed"):e.classList.add("collapsed"),e.setAttribute("aria-expanded",t)})}static jQueryInterface(e){return this.each((function(){const t={};"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1);const i=Collapse.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e]()}}))}}EventHandler.on(document,EVENT_CLICK_DATA_API$4,SELECTOR_DATA_TOGGLE$4,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();const t=getSelectorFromElement(this);SelectorEngine.find(t).forEach(e=>{Collapse.getOrCreateInstance(e,{toggle:!1}).toggle()})})),defineJQueryPlugin(Collapse);const NAME$9="dropdown",DATA_KEY$8="bs.dropdown",EVENT_KEY$8=".bs.dropdown",DATA_API_KEY$4=".data-api",ESCAPE_KEY$2="Escape",SPACE_KEY="Space",TAB_KEY$1="Tab",ARROW_UP_KEY="ArrowUp",ARROW_DOWN_KEY="ArrowDown",RIGHT_MOUSE_BUTTON=2,REGEXP_KEYDOWN=new RegExp("ArrowUp|ArrowDown|Escape"),EVENT_HIDE$4="hide.bs.dropdown",EVENT_HIDDEN$4="hidden.bs.dropdown",EVENT_SHOW$4="show.bs.dropdown",EVENT_SHOWN$4="shown.bs.dropdown",EVENT_CLICK_DATA_API$3="click.bs.dropdown.data-api",EVENT_KEYDOWN_DATA_API="keydown.bs.dropdown.data-api",EVENT_KEYUP_DATA_API="keyup.bs.dropdown.data-api",CLASS_NAME_SHOW$6="show",CLASS_NAME_DROPUP="dropup",CLASS_NAME_DROPEND="dropend",CLASS_NAME_DROPSTART="dropstart",CLASS_NAME_NAVBAR="navbar",SELECTOR_DATA_TOGGLE$3='[data-bs-toggle="dropdown"]',SELECTOR_MENU=".dropdown-menu",SELECTOR_NAVBAR_NAV=".navbar-nav",SELECTOR_VISIBLE_ITEMS=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",PLACEMENT_TOP=isRTL()?"top-end":"top-start",PLACEMENT_TOPEND=isRTL()?"top-start":"top-end",PLACEMENT_BOTTOM=isRTL()?"bottom-end":"bottom-start",PLACEMENT_BOTTOMEND=isRTL()?"bottom-start":"bottom-end",PLACEMENT_RIGHT=isRTL()?"left-start":"right-start",PLACEMENT_LEFT=isRTL()?"right-start":"left-start",Default$8={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},DefaultType$8={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"};class Dropdown extends BaseComponent{constructor(e,t){super(e),this._popper=null,this._config=this._getConfig(t),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar()}static get Default(){return Default$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}toggle(){return this._isShown()?this.hide():this.show()}show(){if(isDisabled(this._element)||this._isShown(this._menu))return;const e={relatedTarget:this._element};if(EventHandler.trigger(this._element,EVENT_SHOW$4,e).defaultPrevented)return;const t=Dropdown.getParentFromElement(this._element);this._inNavbar?Manipulator.setDataAttribute(this._menu,"popper","none"):this._createPopper(t),"ontouchstart"in document.documentElement&&!t.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(e=>EventHandler.on(e,"mouseover",noop)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add("show"),this._element.classList.add("show"),EventHandler.trigger(this._element,EVENT_SHOWN$4,e)}hide(){if(isDisabled(this._element)||!this._isShown(this._menu))return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(e){EventHandler.trigger(this._element,EVENT_HIDE$4,e).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(e=>EventHandler.off(e,"mouseover",noop)),this._popper&&this._popper.destroy(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),Manipulator.removeDataAttribute(this._menu,"popper"),EventHandler.trigger(this._element,EVENT_HIDDEN$4,e))}_getConfig(e){if(e={...this.constructor.Default,...Manipulator.getDataAttributes(this._element),...e},typeCheckConfig(NAME$9,e,this.constructor.DefaultType),"object"==typeof e.reference&&!isElement(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(NAME$9.toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return e}_createPopper(e){if(void 0===Popper)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=e:isElement(this._config.reference)?t=getElement(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find(e=>"applyStyles"===e.name&&!1===e.enabled);this._popper=Popper.createPopper(t,this._menu,i),n&&Manipulator.setDataAttribute(this._menu,"popper","static")}_isShown(e=this._element){return e.classList.contains("show")}_getMenuElement(){return SelectorEngine.next(this._element,SELECTOR_MENU)[0]}_getPlacement(){const e=this._element.parentNode;if(e.classList.contains("dropend"))return PLACEMENT_RIGHT;if(e.classList.contains("dropstart"))return PLACEMENT_LEFT;const t="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return e.classList.contains("dropup")?t?PLACEMENT_TOPEND:PLACEMENT_TOP:t?PLACEMENT_BOTTOMEND:PLACEMENT_BOTTOM}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?t=>e(t,this._element):e}_getPopperConfig(){const e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(e.modifiers=[{name:"applyStyles",enabled:!1}]),{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_selectMenuItem({key:e,target:t}){const i=SelectorEngine.find(SELECTOR_VISIBLE_ITEMS,this._menu).filter(isVisible);i.length&&getNextActiveElement(i,t,"ArrowDown"===e,!i.includes(t)).focus()}static jQueryInterface(e){return this.each((function(){const t=Dropdown.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}static clearMenus(e){if(e&&(2===e.button||"keyup"===e.type&&"Tab"!==e.key))return;const t=SelectorEngine.find(SELECTOR_DATA_TOGGLE$3);for(let i=0,n=t.length;i<n;i++){const n=Dropdown.getInstance(t[i]);if(!n||!1===n._config.autoClose)continue;if(!n._isShown())continue;const s={relatedTarget:n._element};if(e){const t=e.composedPath(),i=t.includes(n._menu);if(t.includes(n._element)||"inside"===n._config.autoClose&&!i||"outside"===n._config.autoClose&&i)continue;if(n._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;"click"===e.type&&(s.clickEvent=e)}n._completeHide(s)}}static getParentFromElement(e){return getElementFromSelector(e)||e.parentNode}static dataApiKeydownHandler(e){if(/input|textarea/i.test(e.target.tagName)?"Space"===e.key||"Escape"!==e.key&&("ArrowDown"!==e.key&&"ArrowUp"!==e.key||e.target.closest(SELECTOR_MENU)):!REGEXP_KEYDOWN.test(e.key))return;const t=this.classList.contains("show");if(!t&&"Escape"===e.key)return;if(e.preventDefault(),e.stopPropagation(),isDisabled(this))return;const i=this.matches(SELECTOR_DATA_TOGGLE$3)?this:SelectorEngine.prev(this,SELECTOR_DATA_TOGGLE$3)[0],n=Dropdown.getOrCreateInstance(i);if("Escape"!==e.key)return"ArrowUp"===e.key||"ArrowDown"===e.key?(t||n.show(),void n._selectMenuItem(e)):void(t&&"Space"!==e.key||Dropdown.clearMenus());n.hide()}}EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_DATA_TOGGLE$3,Dropdown.dataApiKeydownHandler),EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_MENU,Dropdown.dataApiKeydownHandler),EventHandler.on(document,EVENT_CLICK_DATA_API$3,Dropdown.clearMenus),EventHandler.on(document,EVENT_KEYUP_DATA_API,Dropdown.clearMenus),EventHandler.on(document,EVENT_CLICK_DATA_API$3,SELECTOR_DATA_TOGGLE$3,(function(e){e.preventDefault(),Dropdown.getOrCreateInstance(this).toggle()})),defineJQueryPlugin(Dropdown);const SELECTOR_FIXED_CONTENT=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",SELECTOR_STICKY_CONTENT=".sticky-top";class ScrollBarHelper{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",t=>t+e),this._setElementAttributes(SELECTOR_FIXED_CONTENT,"paddingRight",t=>t+e),this._setElementAttributes(".sticky-top","marginRight",t=>t-e)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,i){const n=this.getWidth();this._applyManipulationCallback(e,e=>{if(e!==this._element&&window.innerWidth>e.clientWidth+n)return;this._saveInitialAttribute(e,t);const s=window.getComputedStyle(e)[t];e.style[t]=i(Number.parseFloat(s))+"px"})}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(SELECTOR_FIXED_CONTENT,"paddingRight"),this._resetElementAttributes(".sticky-top","marginRight")}_saveInitialAttribute(e,t){const i=e.style[t];i&&Manipulator.setDataAttribute(e,t,i)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,e=>{const i=Manipulator.getDataAttribute(e,t);void 0===i?e.style.removeProperty(t):(Manipulator.removeDataAttribute(e,t),e.style[t]=i)})}_applyManipulationCallback(e,t){isElement(e)?t(e):SelectorEngine.find(e,this._element).forEach(t)}isOverflowing(){return this.getWidth()>0}}const Default$7={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},DefaultType$7={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},NAME$8="backdrop",CLASS_NAME_FADE$4="fade",CLASS_NAME_SHOW$5="show",EVENT_MOUSEDOWN="mousedown.bs.backdrop";class Backdrop{constructor(e){this._config=this._getConfig(e),this._isAppended=!1,this._element=null}show(e){this._config.isVisible?(this._append(),this._config.isAnimated&&reflow(this._getElement()),this._getElement().classList.add("show"),this._emulateAnimation(()=>{execute(e)})):execute(e)}hide(e){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),execute(e)})):execute(e)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add("fade"),this._element=e}return this._element}_getConfig(e){return(e={...Default$7,..."object"==typeof e?e:{}}).rootElement=getElement(e.rootElement),typeCheckConfig(NAME$8,e,DefaultType$7),e}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),EventHandler.on(this._getElement(),EVENT_MOUSEDOWN,()=>{execute(this._config.clickCallback)}),this._isAppended=!0)}dispose(){this._isAppended&&(EventHandler.off(this._element,EVENT_MOUSEDOWN),this._element.remove(),this._isAppended=!1)}_emulateAnimation(e){executeAfterTransition(e,this._getElement(),this._config.isAnimated)}}const Default$6={trapElement:null,autofocus:!0},DefaultType$6={trapElement:"element",autofocus:"boolean"},NAME$7="focustrap",DATA_KEY$7="bs.focustrap",EVENT_KEY$7=".bs.focustrap",EVENT_FOCUSIN$1="focusin.bs.focustrap",EVENT_KEYDOWN_TAB="keydown.tab.bs.focustrap",TAB_KEY="Tab",TAB_NAV_FORWARD="forward",TAB_NAV_BACKWARD="backward";class FocusTrap{constructor(e){this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:e,autofocus:t}=this._config;this._isActive||(t&&e.focus(),EventHandler.off(document,EVENT_KEY$7),EventHandler.on(document,EVENT_FOCUSIN$1,e=>this._handleFocusin(e)),EventHandler.on(document,EVENT_KEYDOWN_TAB,e=>this._handleKeydown(e)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,EventHandler.off(document,EVENT_KEY$7))}_handleFocusin(e){const{target:t}=e,{trapElement:i}=this._config;if(t===document||t===i||i.contains(t))return;const n=SelectorEngine.focusableChildren(i);0===n.length?i.focus():"backward"===this._lastTabNavDirection?n[n.length-1].focus():n[0].focus()}_handleKeydown(e){"Tab"===e.key&&(this._lastTabNavDirection=e.shiftKey?"backward":"forward")}_getConfig(e){return e={...Default$6,..."object"==typeof e?e:{}},typeCheckConfig(NAME$7,e,DefaultType$6),e}}const NAME$6="modal",DATA_KEY$6="bs.modal",EVENT_KEY$6=".bs.modal",DATA_API_KEY$3=".data-api",ESCAPE_KEY$1="Escape",Default$5={backdrop:!0,keyboard:!0,focus:!0},DefaultType$5={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},EVENT_HIDE$3="hide.bs.modal",EVENT_HIDE_PREVENTED="hidePrevented.bs.modal",EVENT_HIDDEN$3="hidden.bs.modal",EVENT_SHOW$3="show.bs.modal",EVENT_SHOWN$3="shown.bs.modal",EVENT_RESIZE="resize.bs.modal",EVENT_CLICK_DISMISS="click.dismiss.bs.modal",EVENT_KEYDOWN_DISMISS$1="keydown.dismiss.bs.modal",EVENT_MOUSEUP_DISMISS="mouseup.dismiss.bs.modal",EVENT_MOUSEDOWN_DISMISS="mousedown.dismiss.bs.modal",EVENT_CLICK_DATA_API$2="click.bs.modal.data-api",CLASS_NAME_OPEN="modal-open",CLASS_NAME_FADE$3="fade",CLASS_NAME_SHOW$4="show",CLASS_NAME_STATIC="modal-static",SELECTOR_DIALOG=".modal-dialog",SELECTOR_MODAL_BODY=".modal-body",SELECTOR_DATA_TOGGLE$2='[data-bs-toggle="modal"]';class Modal extends BaseComponent{constructor(e,t){super(e),this._config=this._getConfig(t),this._dialog=SelectorEngine.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new ScrollBarHelper}static get Default(){return Default$5}static get NAME(){return NAME$6}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||this._isTransitioning||EventHandler.trigger(this._element,EVENT_SHOW$3,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add("modal-open"),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),EventHandler.on(this._dialog,EVENT_MOUSEDOWN_DISMISS,()=>{EventHandler.one(this._element,EVENT_MOUSEUP_DISMISS,e=>{e.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(e)))}hide(){if(!this._isShown||this._isTransitioning)return;if(EventHandler.trigger(this._element,EVENT_HIDE$3).defaultPrevented)return;this._isShown=!1;const e=this._isAnimated();e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove("show"),EventHandler.off(this._element,EVENT_CLICK_DISMISS),EventHandler.off(this._dialog,EVENT_MOUSEDOWN_DISMISS),this._queueCallback(()=>this._hideModal(),this._element,e)}dispose(){[window,this._dialog].forEach(e=>EventHandler.off(e,".bs.modal")),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Backdrop({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new FocusTrap({trapElement:this._element})}_getConfig(e){return e={...Default$5,...Manipulator.getDataAttributes(this._element),..."object"==typeof e?e:{}},typeCheckConfig(NAME$6,e,DefaultType$5),e}_showElement(e){const t=this._isAnimated(),i=SelectorEngine.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),t&&reflow(this._element),this._element.classList.add("show"),this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,EventHandler.trigger(this._element,EVENT_SHOWN$3,{relatedTarget:e})},this._dialog,t)}_setEscapeEvent(){this._isShown?EventHandler.on(this._element,EVENT_KEYDOWN_DISMISS$1,e=>{this._config.keyboard&&"Escape"===e.key?(e.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==e.key||this._triggerBackdropTransition()}):EventHandler.off(this._element,EVENT_KEYDOWN_DISMISS$1)}_setResizeEvent(){this._isShown?EventHandler.on(window,EVENT_RESIZE,()=>this._adjustDialog()):EventHandler.off(window,EVENT_RESIZE)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._scrollBar.reset(),EventHandler.trigger(this._element,EVENT_HIDDEN$3)})}_showBackdrop(e){EventHandler.on(this._element,EVENT_CLICK_DISMISS,e=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:e.target===e.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())}),this._backdrop.show(e)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED).defaultPrevented)return;const{classList:e,scrollHeight:t,style:i}=this._element,n=t>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||e.contains("modal-static")||(n||(i.overflowY="hidden"),e.add("modal-static"),this._queueCallback(()=>{e.remove("modal-static"),n||this._queueCallback(()=>{i.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),i=t>0;(!i&&e&&!isRTL()||i&&!e&&isRTL())&&(this._element.style.paddingLeft=t+"px"),(i&&!e&&!isRTL()||!i&&e&&isRTL())&&(this._element.style.paddingRight=t+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(e,t){return this.each((function(){const i=Modal.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e](t)}}))}}EventHandler.on(document,EVENT_CLICK_DATA_API$2,SELECTOR_DATA_TOGGLE$2,(function(e){const t=getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),EventHandler.one(t,EVENT_SHOW$3,e=>{e.defaultPrevented||EventHandler.one(t,EVENT_HIDDEN$3,()=>{isVisible(this)&&this.focus()})}),Modal.getOrCreateInstance(t).toggle(this)})),enableDismissTrigger(Modal),defineJQueryPlugin(Modal);const NAME$5="offcanvas",DATA_KEY$5="bs.offcanvas",EVENT_KEY$5=".bs.offcanvas",DATA_API_KEY$2=".data-api",EVENT_LOAD_DATA_API$1="load.bs.offcanvas.data-api",ESCAPE_KEY="Escape",Default$4={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$4={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},CLASS_NAME_SHOW$3="show",CLASS_NAME_BACKDROP="offcanvas-backdrop",OPEN_SELECTOR=".offcanvas.show",EVENT_SHOW$2="show.bs.offcanvas",EVENT_SHOWN$2="shown.bs.offcanvas",EVENT_HIDE$2="hide.bs.offcanvas",EVENT_HIDDEN$2="hidden.bs.offcanvas",EVENT_CLICK_DATA_API$1="click.bs.offcanvas.data-api",EVENT_KEYDOWN_DISMISS="keydown.dismiss.bs.offcanvas",SELECTOR_DATA_TOGGLE$1='[data-bs-toggle="offcanvas"]';class Offcanvas extends BaseComponent{constructor(e,t){super(e),this._config=this._getConfig(t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return NAME$5}static get Default(){return Default$4}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$2,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new ScrollBarHelper).hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),this._queueCallback(()=>{this._config.scroll||this._focustrap.activate(),EventHandler.trigger(this._element,EVENT_SHOWN$2,{relatedTarget:e})},this._element,!0))}hide(){this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$2).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),this._backdrop.hide(),this._queueCallback(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new ScrollBarHelper).reset(),EventHandler.trigger(this._element,EVENT_HIDDEN$2)},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(e){return e={...Default$4,...Manipulator.getDataAttributes(this._element),..."object"==typeof e?e:{}},typeCheckConfig(NAME$5,e,DefaultType$4),e}_initializeBackDrop(){return new Backdrop({className:CLASS_NAME_BACKDROP,isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new FocusTrap({trapElement:this._element})}_addEventListeners(){EventHandler.on(this._element,EVENT_KEYDOWN_DISMISS,e=>{this._config.keyboard&&"Escape"===e.key&&this.hide()})}static jQueryInterface(e){return this.each((function(){const t=Offcanvas.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}EventHandler.on(document,EVENT_CLICK_DATA_API$1,SELECTOR_DATA_TOGGLE$1,(function(e){const t=getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this))return;EventHandler.one(t,EVENT_HIDDEN$2,()=>{isVisible(this)&&this.focus()});const i=SelectorEngine.findOne(OPEN_SELECTOR);i&&i!==t&&Offcanvas.getInstance(i).hide(),Offcanvas.getOrCreateInstance(t).toggle(this)})),EventHandler.on(window,EVENT_LOAD_DATA_API$1,()=>SelectorEngine.find(OPEN_SELECTOR).forEach(e=>Offcanvas.getOrCreateInstance(e).show())),enableDismissTrigger(Offcanvas),defineJQueryPlugin(Offcanvas);const uriAttrs=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),ARIA_ATTRIBUTE_PATTERN=/^aria-[\w-]*$/i,SAFE_URL_PATTERN=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,DATA_URL_PATTERN=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,allowedAttribute=(e,t)=>{const i=e.nodeName.toLowerCase();if(t.includes(i))return!uriAttrs.has(i)||Boolean(SAFE_URL_PATTERN.test(e.nodeValue)||DATA_URL_PATTERN.test(e.nodeValue));const n=t.filter(e=>e instanceof RegExp);for(let e=0,t=n.length;e<t;e++)if(n[e].test(i))return!0;return!1},DefaultAllowlist={"*":["class","dir","id","lang","role",ARIA_ATTRIBUTE_PATTERN],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]};function sanitizeHtml(e,t,i){if(!e.length)return e;if(i&&"function"==typeof i)return i(e);const n=(new window.DOMParser).parseFromString(e,"text/html"),s=Object.keys(t),o=[].concat(...n.body.querySelectorAll("*"));for(let e=0,i=o.length;e<i;e++){const i=o[e],n=i.nodeName.toLowerCase();if(!s.includes(n)){i.remove();continue}const r=[].concat(...i.attributes),a=[].concat(t["*"]||[],t[n]||[]);r.forEach(e=>{allowedAttribute(e,a)||i.removeAttribute(e.nodeName)})}return n.body.innerHTML}const NAME$4="tooltip",DATA_KEY$4="bs.tooltip",EVENT_KEY$4=".bs.tooltip",CLASS_PREFIX$1="bs-tooltip",DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),DefaultType$3={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL()?"left":"right",BOTTOM:"bottom",LEFT:isRTL()?"right":"left"},Default$3={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:DefaultAllowlist,popperConfig:null},Event$2={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},CLASS_NAME_FADE$2="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$2="show",HOVER_STATE_SHOW="show",HOVER_STATE_OUT="out",SELECTOR_TOOLTIP_INNER=".tooltip-inner",SELECTOR_MODAL=".modal",EVENT_MODAL_HIDE="hide.bs.modal",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual";class Tooltip extends BaseComponent{constructor(e,t){if(void 0===Popper)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(t),this.tip=null,this._setListeners()}static get Default(){return Default$3}static get NAME(){return NAME$4}static get Event(){return Event$2}static get DefaultType(){return DefaultType$3}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(e){if(this._isEnabled)if(e){const t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!t._activeTrigger.click,t._isWithActiveTrigger()?t._enter(null,t):t._leave(null,t)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),EventHandler.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const e=EventHandler.trigger(this._element,this.constructor.Event.SHOW),t=findShadowRoot(this._element),i=null===t?this._element.ownerDocument.documentElement.contains(this._element):t.contains(this._element);if(e.defaultPrevented||!i)return;const n=this.getTipElement(),s=getUID(this.constructor.NAME);n.setAttribute("id",s),this._element.setAttribute("aria-describedby",s),this._config.animation&&n.classList.add("fade");const o="function"==typeof this._config.placement?this._config.placement.call(this,n,this._element):this._config.placement,r=this._getAttachment(o);this._addAttachmentClass(r);const{container:a}=this._config;Data.set(n,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(a.append(n),EventHandler.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=Popper.createPopper(this._element,n,this._getPopperConfig(r)),n.classList.add("show");const l=this._resolvePossibleFunction(this._config.customClass);l&&n.classList.add(...l.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(e=>{EventHandler.on(e,"mouseover",noop)});const c=this.tip.classList.contains("fade");this._queueCallback(()=>{const e=this._hoverState;this._hoverState=null,EventHandler.trigger(this._element,this.constructor.Event.SHOWN),"out"===e&&this._leave(null,this)},this.tip,c)}hide(){if(!this._popper)return;const e=this.getTipElement();if(EventHandler.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;e.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(e=>EventHandler.off(e,"mouseover",noop)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const t=this.tip.classList.contains("fade");this._queueCallback(()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&e.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),EventHandler.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))},this.tip,t),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const e=document.createElement("div");e.innerHTML=this._config.template;const t=e.children[0];return this.setContent(t),t.classList.remove("fade","show"),this.tip=t,this.tip}setContent(e){this._sanitizeAndSetContent(e,this.getTitle(),".tooltip-inner")}_sanitizeAndSetContent(e,t,i){const n=SelectorEngine.findOne(i,e);t||!n?this.setElementContent(n,t):n.remove()}setElementContent(e,t){if(null!==e)return isElement(t)?(t=getElement(t),void(this._config.html?t.parentNode!==e&&(e.innerHTML="",e.append(t)):e.textContent=t.textContent)):void(this._config.html?(this._config.sanitize&&(t=sanitizeHtml(t,this._config.allowList,this._config.sanitizeFn)),e.innerHTML=t):e.textContent=t)}getTitle(){const e=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(e)}updateAttachment(e){return"right"===e?"end":"left"===e?"start":e}_initializeOnDelegatedTarget(e,t){return t||this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return"function"==typeof e?e.call(this._element):e}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:e=>this._handlePopperPlacementChange(e)}],onFirstUpdate:e=>{e.options.placement!==e.placement&&this._handlePopperPlacementChange(e)}};return{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_addAttachmentClass(e){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(e)}`)}_getAttachment(e){return AttachmentMap[e.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(e=>{if("click"===e)EventHandler.on(this._element,this.constructor.Event.CLICK,this._config.selector,e=>this.toggle(e));else if("manual"!==e){const t="hover"===e?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i="hover"===e?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;EventHandler.on(this._element,t,this._config.selector,e=>this._enter(e)),EventHandler.on(this._element,i,this._config.selector,e=>this._leave(e))}}),this._hideModalHandler=()=>{this._element&&this.hide()},EventHandler.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const e=this._element.getAttribute("title"),t=typeof this._element.getAttribute("data-bs-original-title");(e||"string"!==t)&&(this._element.setAttribute("data-bs-original-title",e||""),!e||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",e),this._element.setAttribute("title",""))}_enter(e,t){t=this._initializeOnDelegatedTarget(e,t),e&&(t._activeTrigger["focusin"===e.type?"focus":"hover"]=!0),t.getTipElement().classList.contains("show")||"show"===t._hoverState?t._hoverState="show":(clearTimeout(t._timeout),t._hoverState="show",t._config.delay&&t._config.delay.show?t._timeout=setTimeout(()=>{"show"===t._hoverState&&t.show()},t._config.delay.show):t.show())}_leave(e,t){t=this._initializeOnDelegatedTarget(e,t),e&&(t._activeTrigger["focusout"===e.type?"focus":"hover"]=t._element.contains(e.relatedTarget)),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState="out",t._config.delay&&t._config.delay.hide?t._timeout=setTimeout(()=>{"out"===t._hoverState&&t.hide()},t._config.delay.hide):t.hide())}_isWithActiveTrigger(){for(const e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1}_getConfig(e){const t=Manipulator.getDataAttributes(this._element);return Object.keys(t).forEach(e=>{DISALLOWED_ATTRIBUTES.has(e)&&delete t[e]}),(e={...this.constructor.Default,...t,..."object"==typeof e&&e?e:{}}).container=!1===e.container?document.body:getElement(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),typeCheckConfig(NAME$4,e,this.constructor.DefaultType),e.sanitize&&(e.template=sanitizeHtml(e.template,e.allowList,e.sanitizeFn)),e}_getDelegateConfig(){const e={};for(const t in this._config)this.constructor.Default[t]!==this._config[t]&&(e[t]=this._config[t]);return e}_cleanTipClass(){const e=this.getTipElement(),t=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=e.getAttribute("class").match(t);null!==i&&i.length>0&&i.map(e=>e.trim()).forEach(t=>e.classList.remove(t))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(e){const{state:t}=e;t&&(this.tip=t.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(t.placement)))}static jQueryInterface(e){return this.each((function(){const t=Tooltip.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}defineJQueryPlugin(Tooltip);const NAME$3="popover",DATA_KEY$3="bs.popover",EVENT_KEY$3=".bs.popover",CLASS_PREFIX="bs-popover",Default$2={...Tooltip.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'},DefaultType$2={...Tooltip.DefaultType,content:"(string|element|function)"},Event$1={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body";class Popover extends Tooltip{static get Default(){return Default$2}static get NAME(){return NAME$3}static get Event(){return Event$1}static get DefaultType(){return DefaultType$2}isWithContent(){return this.getTitle()||this._getContent()}setContent(e){this._sanitizeAndSetContent(e,this.getTitle(),SELECTOR_TITLE),this._sanitizeAndSetContent(e,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(e){return this.each((function(){const t=Popover.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}defineJQueryPlugin(Popover);const NAME$2="scrollspy",DATA_KEY$2="bs.scrollspy",EVENT_KEY$2=".bs.scrollspy",DATA_API_KEY$1=".data-api",Default$1={offset:10,method:"auto",target:""},DefaultType$1={offset:"number",method:"string",target:"(string|element)"},EVENT_ACTIVATE="activate.bs.scrollspy",EVENT_SCROLL="scroll.bs.scrollspy",EVENT_LOAD_DATA_API="load.bs.scrollspy.data-api",CLASS_NAME_DROPDOWN_ITEM="dropdown-item",CLASS_NAME_ACTIVE$1="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_NAV_LIST_GROUP$1=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_LINK_ITEMS=".nav-link, .list-group-item, .dropdown-item",SELECTOR_DROPDOWN$1=".dropdown",SELECTOR_DROPDOWN_TOGGLE$1=".dropdown-toggle",METHOD_OFFSET="offset",METHOD_POSITION="position";class ScrollSpy extends BaseComponent{constructor(e,t){super(e),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(t),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,EventHandler.on(this._scrollElement,EVENT_SCROLL,()=>this._process()),this.refresh(),this._process()}static get Default(){return Default$1}static get NAME(){return NAME$2}refresh(){const e=this._scrollElement===this._scrollElement.window?"offset":"position",t="auto"===this._config.method?e:this._config.method,i="position"===t?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),SelectorEngine.find(SELECTOR_LINK_ITEMS,this._config.target).map(e=>{const n=getSelectorFromElement(e),s=n?SelectorEngine.findOne(n):null;if(s){const e=s.getBoundingClientRect();if(e.width||e.height)return[Manipulator[t](s).top+i,n]}return null}).filter(e=>e).sort((e,t)=>e[0]-t[0]).forEach(e=>{this._offsets.push(e[0]),this._targets.push(e[1])})}dispose(){EventHandler.off(this._scrollElement,EVENT_KEY$2),super.dispose()}_getConfig(e){return(e={...Default$1,...Manipulator.getDataAttributes(this._element),..."object"==typeof e&&e?e:{}}).target=getElement(e.target)||document.documentElement,typeCheckConfig(NAME$2,e,DefaultType$1),e}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const e=this._getScrollTop()+this._config.offset,t=this._getScrollHeight(),i=this._config.offset+t-this._getOffsetHeight();if(this._scrollHeight!==t&&this.refresh(),e>=i){const e=this._targets[this._targets.length-1];this._activeTarget!==e&&this._activate(e)}else{if(this._activeTarget&&e<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(let t=this._offsets.length;t--;)this._activeTarget!==this._targets[t]&&e>=this._offsets[t]&&(void 0===this._offsets[t+1]||e<this._offsets[t+1])&&this._activate(this._targets[t])}}_activate(e){this._activeTarget=e,this._clear();const t=SELECTOR_LINK_ITEMS.split(",").map(t=>`${t}[data-bs-target="${e}"],${t}[href="${e}"]`),i=SelectorEngine.findOne(t.join(","),this._config.target);i.classList.add("active"),i.classList.contains("dropdown-item")?SelectorEngine.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add("active"):SelectorEngine.parents(i,".nav, .list-group").forEach(e=>{SelectorEngine.prev(e,".nav-link, .list-group-item").forEach(e=>e.classList.add("active")),SelectorEngine.prev(e,".nav-item").forEach(e=>{SelectorEngine.children(e,".nav-link").forEach(e=>e.classList.add("active"))})}),EventHandler.trigger(this._scrollElement,EVENT_ACTIVATE,{relatedTarget:e})}_clear(){SelectorEngine.find(SELECTOR_LINK_ITEMS,this._config.target).filter(e=>e.classList.contains("active")).forEach(e=>e.classList.remove("active"))}static jQueryInterface(e){return this.each((function(){const t=ScrollSpy.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}EventHandler.on(window,EVENT_LOAD_DATA_API,()=>{SelectorEngine.find(SELECTOR_DATA_SPY).forEach(e=>new ScrollSpy(e))}),defineJQueryPlugin(ScrollSpy);const NAME$1="tab",DATA_KEY$1="bs.tab",EVENT_KEY$1=".bs.tab",DATA_API_KEY=".data-api",EVENT_HIDE$1="hide.bs.tab",EVENT_HIDDEN$1="hidden.bs.tab",EVENT_SHOW$1="show.bs.tab",EVENT_SHOWN$1="shown.bs.tab",EVENT_CLICK_DATA_API="click.bs.tab.data-api",CLASS_NAME_DROPDOWN_MENU="dropdown-menu",CLASS_NAME_ACTIVE="active",CLASS_NAME_FADE$1="fade",CLASS_NAME_SHOW$1="show",SELECTOR_DROPDOWN=".dropdown",SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_ACTIVE=".active",SELECTOR_ACTIVE_UL=":scope > li > .active",SELECTOR_DATA_TOGGLE='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',SELECTOR_DROPDOWN_TOGGLE=".dropdown-toggle",SELECTOR_DROPDOWN_ACTIVE_CHILD=":scope > .dropdown-menu .active";class Tab extends BaseComponent{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active"))return;let e;const t=getElementFromSelector(this._element),i=this._element.closest(".nav, .list-group");if(i){const t="UL"===i.nodeName||"OL"===i.nodeName?SELECTOR_ACTIVE_UL:".active";e=SelectorEngine.find(t,i),e=e[e.length-1]}const n=e?EventHandler.trigger(e,EVENT_HIDE$1,{relatedTarget:this._element}):null;if(EventHandler.trigger(this._element,EVENT_SHOW$1,{relatedTarget:e}).defaultPrevented||null!==n&&n.defaultPrevented)return;this._activate(this._element,i);const s=()=>{EventHandler.trigger(e,EVENT_HIDDEN$1,{relatedTarget:this._element}),EventHandler.trigger(this._element,EVENT_SHOWN$1,{relatedTarget:e})};t?this._activate(t,t.parentNode,s):s()}_activate(e,t,i){const n=(!t||"UL"!==t.nodeName&&"OL"!==t.nodeName?SelectorEngine.children(t,".active"):SelectorEngine.find(SELECTOR_ACTIVE_UL,t))[0],s=i&&n&&n.classList.contains("fade"),o=()=>this._transitionComplete(e,n,i);n&&s?(n.classList.remove("show"),this._queueCallback(o,e,!0)):o()}_transitionComplete(e,t,i){if(t){t.classList.remove("active");const e=SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD,t.parentNode);e&&e.classList.remove("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!1)}e.classList.add("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),reflow(e),e.classList.contains("fade")&&e.classList.add("show");let n=e.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const t=e.closest(".dropdown");t&&SelectorEngine.find(".dropdown-toggle",t).forEach(e=>e.classList.add("active")),e.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(e){return this.each((function(){const t=Tab.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}EventHandler.on(document,EVENT_CLICK_DATA_API,SELECTOR_DATA_TOGGLE,(function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this)||Tab.getOrCreateInstance(this).show()})),defineJQueryPlugin(Tab);const NAME="toast",DATA_KEY="bs.toast",EVENT_KEY=".bs.toast",EVENT_MOUSEOVER="mouseover.bs.toast",EVENT_MOUSEOUT="mouseout.bs.toast",EVENT_FOCUSIN="focusin.bs.toast",EVENT_FOCUSOUT="focusout.bs.toast",EVENT_HIDE="hide.bs.toast",EVENT_HIDDEN="hidden.bs.toast",EVENT_SHOW="show.bs.toast",EVENT_SHOWN="shown.bs.toast",CLASS_NAME_FADE="fade",CLASS_NAME_HIDE="hide",CLASS_NAME_SHOW="show",CLASS_NAME_SHOWING="showing",DefaultType={animation:"boolean",autohide:"boolean",delay:"number"},Default={animation:!0,autohide:!0,delay:5e3};class Toast extends BaseComponent{constructor(e,t){super(e),this._config=this._getConfig(t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return DefaultType}static get Default(){return Default}static get NAME(){return NAME}show(){EventHandler.trigger(this._element,EVENT_SHOW).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),reflow(this._element),this._element.classList.add("show"),this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this._element.classList.contains("show")&&(EventHandler.trigger(this._element,EVENT_HIDE).defaultPrevented||(this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove("showing"),this._element.classList.remove("show"),EventHandler.trigger(this._element,EVENT_HIDDEN)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),super.dispose()}_getConfig(e){return e={...Default,...Manipulator.getDataAttributes(this._element),..."object"==typeof e&&e?e:{}},typeCheckConfig(NAME,e,this.constructor.DefaultType),e}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const i=e.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){EventHandler.on(this._element,EVENT_MOUSEOVER,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_MOUSEOUT,e=>this._onInteraction(e,!1)),EventHandler.on(this._element,EVENT_FOCUSIN,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_FOCUSOUT,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each((function(){const t=Toast.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}enableDismissTrigger(Toast),defineJQueryPlugin(Toast);export{Alert,Button,Carousel,Collapse,Dropdown,Modal,Offcanvas,Popover,ScrollSpy,Tab,Toast,Tooltip};
+//# sourceMappingURL=bootstrap.esm.min.js.map
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map
new file mode 100644
index 0000000..ebd1f8e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","uid","getEvent","bootstrapHandler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","this","i","findHandler","events","delegationSelector","uidEventList","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","has","addHandler","wrapFn","relatedTarget","handlers","previousFn","replace","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","on","one","inNamespace","isNamespace","elementEvent","slice","keyHandlers","trigger","args","isNative","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","VERSION","BaseComponent","constructor","_element","DATA_KEY","dispose","EVENT_KEY","getOwnPropertyNames","propertyName","_queueCallback","isAnimated","[object Object]","getInstance","Error","enableDismissTrigger","component","method","clickEvent","tagName","closest","getOrCreateInstance","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","_destroyElement","each","data","undefined","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","pageYOffset","left","pageXOffset","position","offsetTop","offsetLeft","NODE_TEXT","SelectorEngine","find","concat","Element","prototype","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_INDICATOR","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","Carousel","super","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","order","_handleSwipe","absDeltax","abs","direction","_keydown","_addTouchEventListeners","start","pointerType","touches","clientX","move","end","clearTimeout","itemImg","e","add","_getItemByOrder","isNext","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","triggerSlidEvent","completeCallBack","action","ride","carouselInterface","slideIndex","dataApiClickHandler","carousels","parent","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activesData","actives","container","tempActiveData","elemActive","dimension","_getDimension","style","scrollSize","triggerArrayLength","selected","triggerArray","isOpen","ESCAPE_KEY","SPACE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","REGEXP_KEYDOWN","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_NAVBAR","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","boundary","reference","display","popperConfig","autoClose","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","getParentFromElement","_createPopper","focus","_completeHide","destroy","update","Popper","referenceElement","_getPopperConfig","isDisplayStatic","modifiers","modifier","enabled","createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","placement","options","_selectMenuItem","items","toggles","context","composedPath","isMenuTarget","isActive","stopPropagation","getToggleButton","clearMenus","dataApiKeydownHandler","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","ScrollBarHelper","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","overflow","styleProp","scrollbarWidth","_applyManipulationCallback","reset","_resetElementAttributes","actualValue","removeProperty","callBack","isOverflowing","className","rootElement","clickCallback","EVENT_MOUSEDOWN","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","trapElement","autofocus","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_ignoreBackdropClick","_scrollBar","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","scrollTop","_triggerBackdropTransition","_resetAdjustments","currentTarget","scrollHeight","isModalOverflowing","clientHeight","overflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","scroll","CLASS_NAME_BACKDROP","OPEN_SELECTOR","Offcanvas","visibility","blur","allReadyOpen","uriAttrs","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","DefaultAllowlist","*","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","allowlistKeys","elName","attributeList","allowedAttributes","innerHTML","CLASS_PREFIX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_MODAL","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","attachment","_getAttachment","_addAttachmentClass","_resolvePossibleFunction","prevHoverState","_cleanTipClass","getTitle","setContent","_sanitizeAndSetContent","content","templateElement","setElementContent","textContent","updateAttachment","_getDelegateConfig","phase","_handlePopperPlacementChange","onFirstUpdate","_getBasicClassPrefix","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","basicClassPrefixRegex","tabClass","token","tClass","state","popper","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","EVENT_ACTIVATE","EVENT_SCROLL","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","height","item","sort","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","listGroup","navItem","node","spy","CLASS_NAME_DROPDOWN_MENU","SELECTOR_ACTIVE_UL","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","listElement","itemSelector","hideEvent","complete","active","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","dropdown","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n  if (obj === null || obj === undefined) {\n    return `${obj}`\n  }\n\n  return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttr = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n      hrefAttr = `#${hrefAttr.split('#')[1]}`\n    }\n\n    selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n  }\n\n  return selector\n}\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element)\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null\n  }\n\n  return null\n}\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element)\n\n  return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => {\n  if (!obj || typeof obj !== 'object') {\n    return false\n  }\n\n  if (typeof obj.jquery !== 'undefined') {\n    obj = obj[0]\n  }\n\n  return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n  if (isElement(obj)) { // it's a jQuery object or a node element\n    return obj.jquery ? obj[0] : obj\n  }\n\n  if (typeof obj === 'string' && obj.length > 0) {\n    return document.querySelector(obj)\n  }\n\n  return null\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n  Object.keys(configTypes).forEach(property => {\n    const expectedTypes = configTypes[property]\n    const value = config[property]\n    const valueType = value && isElement(value) ? 'element' : toType(value)\n\n    if (!new RegExp(expectedTypes).test(valueType)) {\n      throw new TypeError(\n        `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n      )\n    }\n  })\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  // eslint-disable-next-line no-unused-expressions\n  element.offsetHeight\n}\n\nconst getjQuery = () => {\n  const { jQuery } = window\n\n  if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return jQuery\n  }\n\n  return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        DOMContentLoadedCallbacks.forEach(callback => callback())\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = callback => {\n  if (typeof callback === 'function') {\n    callback()\n  }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n  }\n\n  const listLength = list.length\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  getElement,\n  getUID,\n  getSelectorFromElement,\n  getElementFromSelector,\n  getTransitionDurationFromElement,\n  triggerTransitionEnd,\n  isElement,\n  typeCheckConfig,\n  isVisible,\n  isDisabled,\n  findShadowRoot,\n  noop,\n  getNextActiveElement,\n  reflow,\n  getjQuery,\n  onDOMContentLoaded,\n  isRTL,\n  defineJQueryPlugin,\n  execute,\n  executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n  const uid = getUidEvent(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    event.delegateTarget = element\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (let i = domElements.length; i--;) {\n        if (domElements[i] === target) {\n          event.delegateTarget = target\n\n          if (handler.oneOff) {\n            // eslint-disable-next-line unicorn/consistent-destructuring\n            EventHandler.off(element, event.type, selector, fn)\n          }\n\n          return fn.apply(target, [event])\n        }\n      }\n    }\n\n    // To please ESLint\n    return null\n  }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n  const uidEventList = Object.keys(events)\n\n  for (let i = 0, len = uidEventList.length; i < len; i++) {\n    const event = events[uidEventList[i]]\n\n    if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n      return event\n    }\n  }\n\n  return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n  const delegation = typeof handler === 'string'\n  const originalHandler = delegation ? delegationFn : handler\n\n  let typeEvent = getTypeEvent(originalTypeEvent)\n  const isNative = nativeEvents.has(typeEvent)\n\n  if (!isNative) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  if (!handler) {\n    handler = delegationFn\n    delegationFn = null\n  }\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (customEventsRegex.test(originalTypeEvent)) {\n    const wrapFn = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    if (delegationFn) {\n      delegationFn = wrapFn(delegationFn)\n    } else {\n      handler = wrapFn(handler)\n    }\n  }\n\n  const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n  const events = getEvent(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n  if (previousFn) {\n    previousFn.oneOff = previousFn.oneOff && oneOff\n\n    return\n  }\n\n  const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = delegation ?\n    bootstrapDelegationHandler(element, handler, delegationFn) :\n    bootstrapHandler(element, handler)\n\n  fn.delegationSelector = delegation ? handler : null\n  fn.originalHandler = originalHandler\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  Object.keys(storeElementEvent).forEach(handlerKey => {\n    if (handlerKey.includes(namespace)) {\n      const event = storeElementEvent[handlerKey]\n\n      removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n    }\n  })\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, false)\n  },\n\n  one(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFn) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getEvent(element)\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof originalHandler !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!events || !events[typeEvent]) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      Object.keys(events).forEach(elementEvent => {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      })\n    }\n\n    const storeElementEvent = events[typeEvent] || {}\n    Object.keys(storeElementEvent).forEach(keyHandlers => {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        const event = storeElementEvent[keyHandlers]\n\n        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n      }\n    })\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const $ = getjQuery()\n    const typeEvent = getTypeEvent(event)\n    const inNamespace = event !== typeEvent\n    const isNative = nativeEvents.has(typeEvent)\n\n    let jQueryEvent\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n    let evt = null\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args)\n\n      $(element).trigger(jQueryEvent)\n      bubbles = !jQueryEvent.isPropagationStopped()\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n      defaultPrevented = jQueryEvent.isDefaultPrevented()\n    }\n\n    if (isNative) {\n      evt = document.createEvent('HTMLEvents')\n      evt.initEvent(typeEvent, bubbles, true)\n    } else {\n      evt = new CustomEvent(event, {\n        bubbles,\n        cancelable: true\n      })\n    }\n\n    // merge custom information in our event\n    if (typeof args !== 'undefined') {\n      Object.keys(args).forEach(key => {\n        Object.defineProperty(evt, key, {\n          get() {\n            return args[key]\n          }\n        })\n      })\n    }\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n  executeAfterTransition,\n  getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.1.0'\n\nclass BaseComponent {\n  constructor(element) {\n    element = getElement(element)\n\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    Object.getOwnPropertyNames(this).forEach(propertyName => {\n      this[propertyName] = null\n    })\n  }\n\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  /** Static */\n\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nexport {\n  enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nenableDismissTrigger(Alert, 'close')\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this)\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n  if (val === 'true') {\n    return true\n  }\n\n  if (val === 'false') {\n    return false\n  }\n\n  if (val === Number(val).toString()) {\n    return Number(val)\n  }\n\n  if (val === '' || val === 'null') {\n    return null\n  }\n\n  return val\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n\n    Object.keys(element.dataset)\n      .filter(key => key.startsWith('bs'))\n      .forEach(key => {\n        let pureKey = key.replace(/^bs/, '')\n        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n        attributes[pureKey] = normalizeData(element.dataset[key])\n      })\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  },\n\n  offset(element) {\n    const rect = element.getBoundingClientRect()\n\n    return {\n      top: rect.top + window.pageYOffset,\n      left: rect.left + window.pageXOffset\n    }\n  },\n\n  position(element) {\n    return {\n      top: element.offsetTop,\n      left: element.offsetLeft\n    }\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children)\n      .filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n\n    let ancestor = element.parentNode\n\n    while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n      if (ancestor.matches(selector)) {\n        parents.push(ancestor)\n      }\n\n      ancestor = ancestor.parentNode\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  getNextActiveElement,\n  reflow,\n  triggerTransitionEnd,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  slide: false,\n  pause: 'hover',\n  wrap: true,\n  touch: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)',\n  keyboard: 'boolean',\n  slide: '(boolean|string)',\n  pause: '(string|boolean)',\n  wrap: 'boolean',\n  touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._items = null\n    this._interval = null\n    this._activeElement = null\n    this._isPaused = false\n    this._isSliding = false\n    this.touchTimeout = null\n    this.touchStartX = 0\n    this.touchDeltaX = 0\n\n    this._config = this._getConfig(config)\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n    this._pointerEvent = Boolean(window.PointerEvent)\n\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause(event) {\n    if (!event) {\n      this._isPaused = true\n    }\n\n    if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n      triggerTransitionEnd(this._element)\n      this.cycle(true)\n    }\n\n    clearInterval(this._interval)\n    this._interval = null\n  }\n\n  cycle(event) {\n    if (!event) {\n      this._isPaused = false\n    }\n\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    if (this._config && this._config.interval && !this._isPaused) {\n      this._updateInterval()\n\n      this._interval = setInterval(\n        (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n        this._config.interval\n      )\n    }\n  }\n\n  to(index) {\n    this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeIndex = this._getItemIndex(this._activeElement)\n\n    if (index > this._items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    if (activeIndex === index) {\n      this.pause()\n      this.cycle()\n      return\n    }\n\n    const order = index > activeIndex ?\n      ORDER_NEXT :\n      ORDER_PREV\n\n    this._slide(order, this._items[index])\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _handleSwipe() {\n    const absDeltax = Math.abs(this.touchDeltaX)\n\n    if (absDeltax <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltax / this.touchDeltaX\n\n    this.touchDeltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n    }\n\n    if (this._config.touch && this._touchSupported) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    const start = event => {\n      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n        this.touchStartX = event.clientX\n      } else if (!this._pointerEvent) {\n        this.touchStartX = event.touches[0].clientX\n      }\n    }\n\n    const move = event => {\n      // ensure swiping with one touch and not pinching\n      this.touchDeltaX = event.touches && event.touches.length > 1 ?\n        0 :\n        event.touches[0].clientX - this.touchStartX\n    }\n\n    const end = event => {\n      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n        this.touchDeltaX = event.clientX - this.touchStartX\n      }\n\n      this._handleSwipe()\n      if (this._config.pause === 'hover') {\n        // If it's a touch-enabled device, mouseenter/leave are fired as\n        // part of the mouse compatibility events on first tap - the carousel\n        // would stop cycling until user tapped out of it;\n        // here, we listen for touchend, explicitly pause the carousel\n        // (as if it's the second time we tap on it, mouseenter compat event\n        // is NOT fired) and after a timeout (to allow for mouse compatibility\n        // events to fire) we explicitly restart cycling\n\n        this.pause()\n        if (this.touchTimeout) {\n          clearTimeout(this.touchTimeout)\n        }\n\n        this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n      }\n    }\n\n    SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n      EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n    })\n\n    if (this._pointerEvent) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n    }\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(direction)\n    }\n  }\n\n  _getItemIndex(element) {\n    this._items = element && element.parentNode ?\n      SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n      []\n\n    return this._items.indexOf(element)\n  }\n\n  _getItemByOrder(order, activeElement) {\n    const isNext = order === ORDER_NEXT\n    return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n  }\n\n  _triggerSlideEvent(relatedTarget, eventDirectionName) {\n    const targetIndex = this._getItemIndex(relatedTarget)\n    const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n    return EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget,\n      direction: eventDirectionName,\n      from: fromIndex,\n      to: targetIndex\n    })\n  }\n\n  _setActiveIndicatorElement(element) {\n    if (this._indicatorsElement) {\n      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n      activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n      activeIndicator.removeAttribute('aria-current')\n\n      const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n      for (let i = 0; i < indicators.length; i++) {\n        if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n          indicators[i].classList.add(CLASS_NAME_ACTIVE)\n          indicators[i].setAttribute('aria-current', 'true')\n          break\n        }\n      }\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    if (elementInterval) {\n      this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n      this._config.interval = elementInterval\n    } else {\n      this._config.interval = this._config.defaultInterval || this._config.interval\n    }\n  }\n\n  _slide(directionOrOrder, element) {\n    const order = this._directionToOrder(directionOrOrder)\n    const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeElementIndex = this._getItemIndex(activeElement)\n    const nextElement = element || this._getItemByOrder(order, activeElement)\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n    const isCycling = Boolean(this._interval)\n\n    const isNext = order === ORDER_NEXT\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n    const eventDirectionName = this._orderToDirection(order)\n\n    if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n      this._isSliding = false\n      return\n    }\n\n    if (this._isSliding) {\n      return\n    }\n\n    const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    this._isSliding = true\n\n    if (isCycling) {\n      this.pause()\n    }\n\n    this._setActiveIndicatorElement(nextElement)\n    this._activeElement = nextElement\n\n    const triggerSlidEvent = () => {\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      })\n    }\n\n    if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n      nextElement.classList.add(orderClassName)\n\n      reflow(nextElement)\n\n      activeElement.classList.add(directionalClassName)\n      nextElement.classList.add(directionalClassName)\n\n      const completeCallBack = () => {\n        nextElement.classList.remove(directionalClassName, orderClassName)\n        nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n        activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n        this._isSliding = false\n\n        setTimeout(triggerSlidEvent, 0)\n      }\n\n      this._queueCallback(completeCallBack, activeElement, true)\n    } else {\n      activeElement.classList.remove(CLASS_NAME_ACTIVE)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      this._isSliding = false\n      triggerSlidEvent()\n    }\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n      return direction\n    }\n\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n      return order\n    }\n\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n\n  // Static\n\n  static carouselInterface(element, config) {\n    const data = Carousel.getOrCreateInstance(element, config)\n\n    let { _config } = data\n    if (typeof config === 'object') {\n      _config = {\n        ..._config,\n        ...config\n      }\n    }\n\n    const action = typeof config === 'string' ? config : _config.slide\n\n    if (typeof config === 'number') {\n      data.to(config)\n    } else if (typeof action === 'string') {\n      if (typeof data[action] === 'undefined') {\n        throw new TypeError(`No method named \"${action}\"`)\n      }\n\n      data[action]()\n    } else if (_config.interval && _config.ride) {\n      data.pause()\n      data.cycle()\n    }\n  }\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      Carousel.carouselInterface(this, config)\n    })\n  }\n\n  static dataApiClickHandler(event) {\n    const target = getElementFromSelector(this)\n\n    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n      return\n    }\n\n    const config = {\n      ...Manipulator.getDataAttributes(target),\n      ...Manipulator.getDataAttributes(this)\n    }\n    const slideIndex = this.getAttribute('data-bs-slide-to')\n\n    if (slideIndex) {\n      config.interval = false\n    }\n\n    Carousel.carouselInterface(target, config)\n\n    if (slideIndex) {\n      Carousel.getInstance(target).to(slideIndex)\n    }\n\n    event.preventDefault()\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (let i = 0, len = carousels.length; i < len; i++) {\n    Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]))\n  }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getSelectorFromElement,\n  getElementFromSelector,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  toggle: true,\n  parent: null\n}\n\nconst DefaultType = {\n  toggle: 'boolean',\n  parent: '(null|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._isTransitioning = false\n    this._config = this._getConfig(config)\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggleList.length; i < len; i++) {\n      const elem = toggleList[i]\n      const selector = getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElem => foundElem === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._selector = selector\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let actives = []\n    let activesData\n\n    if (this._config.parent) {\n      const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n      actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)) // remove children if greater depth\n    }\n\n    const container = SelectorEngine.findOne(this._selector)\n    if (actives.length) {\n      const tempActiveData = actives.find(elem => container !== elem)\n      activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null\n\n      if (activesData && activesData._isTransitioning) {\n        return\n      }\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    actives.forEach(elemActive => {\n      if (container !== elemActive) {\n        Collapse.getOrCreateInstance(elemActive, { toggle: false }).hide()\n      }\n\n      if (!activesData) {\n        Data.set(elemActive, DATA_KEY, null)\n      }\n    })\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    const triggerArrayLength = this._triggerArray.length\n    for (let i = 0; i < triggerArrayLength; i++) {\n      const trigger = this._triggerArray[i]\n      const elem = getElementFromSelector(trigger)\n\n      if (elem && !this._isShown(elem)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n    SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem))\n      .forEach(element => {\n        const selected = getElementFromSelector(element)\n\n        if (selected) {\n          this._addAriaAndCollapsedClass([element], this._isShown(selected))\n        }\n      })\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    triggerArray.forEach(elem => {\n      if (isOpen) {\n        elem.classList.remove(CLASS_NAME_COLLAPSED)\n      } else {\n        elem.classList.add(CLASS_NAME_COLLAPSED)\n      }\n\n      elem.setAttribute('aria-expanded', isOpen)\n    })\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const _config = {}\n      if (typeof config === 'string' && /show|hide/.test(config)) {\n        _config.toggle = false\n      }\n\n      const data = Collapse.getOrCreateInstance(this, _config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  const selector = getSelectorFromElement(this)\n  const selectorElements = SelectorEngine.find(selector)\n\n  selectorElements.forEach(element => {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getElementFromSelector,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n  offset: [0, 2],\n  boundary: 'clippingParents',\n  reference: 'toggle',\n  display: 'dynamic',\n  popperConfig: null,\n  autoClose: true\n}\n\nconst DefaultType = {\n  offset: '(array|string|function)',\n  boundary: '(string|element)',\n  reference: '(string|element|object)',\n  display: 'string',\n  popperConfig: '(null|object|function)',\n  autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._popper = null\n    this._config = this._getConfig(config)\n    this._menu = this._getMenuElement()\n    this._inNavbar = this._detectNavbar()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown(this._menu)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    const parent = Dropdown.getParentFromElement(this._element)\n    // Totally disable Popper for Dropdowns in Navbar\n    if (this._inNavbar) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n    } else {\n      this._createPopper(parent)\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement &&\n      !parent.closest(SELECTOR_NAVBAR_NAV)) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown(this._menu)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = {\n      ...this.constructor.Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createPopper(parent) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    const popperConfig = this._getPopperConfig()\n    const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n    if (isDisplayStatic) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n    }\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getMenuElement() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._element.parentNode\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display\n    if (this._config.display === 'static') {\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n\n  static clearMenus(event) {\n    if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n      return\n    }\n\n    const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggles.length; i < len; i++) {\n      const context = Dropdown.getInstance(toggles[i])\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      if (!context._isShown()) {\n        continue\n      }\n\n      const relatedTarget = {\n        relatedTarget: context._element\n      }\n\n      if (event) {\n        const composedPath = event.composedPath()\n        const isMenuTarget = composedPath.includes(context._menu)\n        if (\n          composedPath.includes(context._element) ||\n          (context._config.autoClose === 'inside' && !isMenuTarget) ||\n          (context._config.autoClose === 'outside' && isMenuTarget)\n        ) {\n          continue\n        }\n\n        // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n        if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n          continue\n        }\n\n        if (event.type === 'click') {\n          relatedTarget.clickEvent = event\n        }\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static getParentFromElement(element) {\n    return getElementFromSelector(element) || element.parentNode\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not input/textarea:\n    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n    // If input/textarea:\n    //  - If space key => not a dropdown command\n    //  - If key is other than escape\n    //    - If key is not up or down => not a dropdown command\n    //    - If trigger inside the menu => not a dropdown command\n    if (/input|textarea/i.test(event.target.tagName) ?\n      event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n      ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n        event.target.closest(SELECTOR_MENU))) :\n      !REGEXP_KEYDOWN.test(event.key)) {\n      return\n    }\n\n    const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n    if (!isActive && event.key === ESCAPE_KEY) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    if (event.key === ESCAPE_KEY) {\n      instance.hide()\n      return\n    }\n\n    if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n      if (!isActive) {\n        instance.show()\n      }\n\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (!isActive || event.key === SPACE_KEY) {\n      Dropdown.clearMenus()\n    }\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n  }\n\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProp, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProp)\n      const calculatedValue = window.getComputedStyle(element)[styleProp]\n      element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n  }\n\n  _saveInitialAttribute(element, styleProp) {\n    const actualValue = element.style[styleProp]\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProp, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProp) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProp)\n      if (typeof value === 'undefined') {\n        element.style.removeProperty(styleProp)\n      } else {\n        Manipulator.removeDataAttribute(element, styleProp)\n        element.style[styleProp] = value\n      }\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n    } else {\n      SelectorEngine.find(selector, this._element).forEach(callBack)\n    }\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n  className: 'modal-backdrop',\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  isAnimated: false,\n  rootElement: 'body', // give the choice to place backdrop under different elements\n  clickCallback: null\n}\n\nconst DefaultType = {\n  className: 'string',\n  isVisible: 'boolean',\n  isAnimated: 'boolean',\n  rootElement: '(element|string)',\n  clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    if (this._config.isAnimated) {\n      reflow(this._getElement())\n    }\n\n    this._getElement().classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  // Private\n\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    this._config.rootElement.append(this._getElement())\n\n    EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport { typeCheckConfig } from './index'\n\nconst Default = {\n  trapElement: null, // The element to trap focus inside of\n  autofocus: true\n}\n\nconst DefaultType = {\n  trapElement: 'element',\n  autofocus: 'boolean'\n}\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nclass FocusTrap {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  activate() {\n    const { trapElement, autofocus } = this._config\n\n    if (this._isActive) {\n      return\n    }\n\n    if (autofocus) {\n      trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n\n  _handleFocusin(event) {\n    const { target } = event\n    const { trapElement } = this._config\n\n    if (\n      target === document ||\n      target === trapElement ||\n      trapElement.contains(target)\n    ) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  focus: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._isShown = false\n    this._ignoreBackdropClick = false\n    this._isTransitioning = false\n    this._scrollBar = new ScrollBarHelper()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n\n    if (this._isAnimated()) {\n      this._isTransitioning = true\n    }\n\n    this._scrollBar.hide()\n\n    document.body.classList.add(CLASS_NAME_OPEN)\n\n    this._adjustDialog()\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n      EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n        if (event.target === this._element) {\n          this._ignoreBackdropClick = true\n        }\n      })\n    })\n\n    this._showBackdrop(() => this._showElement(relatedTarget))\n  }\n\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = false\n    const isAnimated = this._isAnimated()\n\n    if (isAnimated) {\n      this._isTransitioning = true\n    }\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    this._focustrap.deactivate()\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n    EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n    this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n  }\n\n  dispose() {\n    [window, this._dialog]\n      .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n      isAnimated: this._isAnimated()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _showElement(relatedTarget) {\n    const isAnimated = this._isAnimated()\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n    if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n      // Don't move modal's DOM position\n      document.body.append(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.scrollTop = 0\n\n    if (modalBody) {\n      modalBody.scrollTop = 0\n    }\n\n    if (isAnimated) {\n      reflow(this._element)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate()\n      }\n\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }\n\n    this._queueCallback(transitionComplete, this._dialog, isAnimated)\n  }\n\n  _setEscapeEvent() {\n    if (this._isShown) {\n      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n        if (this._config.keyboard && event.key === ESCAPE_KEY) {\n          event.preventDefault()\n          this.hide()\n        } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n          this._triggerBackdropTransition()\n        }\n      })\n    } else {\n      EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n    }\n  }\n\n  _setResizeEvent() {\n    if (this._isShown) {\n      EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n    } else {\n      EventHandler.off(window, EVENT_RESIZE)\n    }\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._scrollBar.reset()\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    })\n  }\n\n  _showBackdrop(callback) {\n    EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n      if (this._ignoreBackdropClick) {\n        this._ignoreBackdropClick = false\n        return\n      }\n\n      if (event.target !== event.currentTarget) {\n        return\n      }\n\n      if (this._config.backdrop === true) {\n        this.hide()\n      } else if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n      }\n    })\n\n    this._backdrop.show(callback)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const { classList, scrollHeight, style } = this._element\n    const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n    // return if the following background transition hasn't yet completed\n    if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n      return\n    }\n\n    if (!isModalOverflowing) {\n      style.overflowY = 'hidden'\n    }\n\n    classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      classList.remove(CLASS_NAME_STATIC)\n      if (!isModalOverflowing) {\n        this._queueCallback(() => {\n          style.overflowY = ''\n        }, this._dialog)\n      }\n    }, this._dialog)\n\n    this._element.focus()\n  }\n\n  // ----------------------------------------------------------------------\n  // the following methods are used to handle overflowing modals\n  // ----------------------------------------------------------------------\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const scrollbarWidth = this._scrollBar.getWidth()\n    const isBodyOverflowing = scrollbarWidth > 0\n\n    if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n      this._element.style.paddingLeft = `${scrollbarWidth}px`\n    }\n\n    if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n      this._element.style.paddingRight = `${scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  // Static\n\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](relatedTarget)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  const data = Modal.getOrCreateInstance(target)\n\n  data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  isVisible,\n  typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: 'boolean',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._element.style.visibility = 'visible'\n\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll) {\n        this._focustrap.activate()\n      }\n\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.setAttribute('aria-hidden', true)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n      this._element.style.visibility = 'hidden'\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible: this._config.backdrop,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: () => this.hide()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (this._config.keyboard && event.key === ESCAPE_KEY) {\n        this.hide()\n      }\n    })\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (allReadyOpen && allReadyOpen !== target) {\n    Offcanvas.getInstance(allReadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\n  SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())\n)\n\nenableDismissTrigger(Offcanvas)\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n  const attrName = attr.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attrName)) {\n    if (uriAttrs.has(attrName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n    }\n\n    return true\n  }\n\n  const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n  // Check if a regular expression validates the attribute.\n  for (let i = 0, len = regExp.length; i < len; i++) {\n    if (regExp[i].test(attrName)) {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFn && typeof sanitizeFn === 'function') {\n    return sanitizeFn(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const allowlistKeys = Object.keys(allowList)\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (let i = 0, len = elements.length; i < len; i++) {\n    const el = elements[i]\n    const elName = el.nodeName.toLowerCase()\n\n    if (!allowlistKeys.includes(elName)) {\n      el.remove()\n\n      continue\n    }\n\n    const attributeList = [].concat(...el.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n    attributeList.forEach(attr => {\n      if (!allowedAttribute(attr, allowedAttributes)) {\n        el.removeAttribute(attr.nodeName)\n      }\n    })\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  findShadowRoot,\n  getElement,\n  getUID,\n  isElement,\n  isRTL,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport { DefaultAllowlist, sanitizeHtml } from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n  animation: 'boolean',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string',\n  delay: '(number|object)',\n  html: 'boolean',\n  selector: '(string|boolean)',\n  placement: '(string|function)',\n  offset: '(array|string|function)',\n  container: '(string|element|boolean)',\n  fallbackPlacements: 'array',\n  boundary: '(string|element)',\n  customClass: '(string|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  allowList: 'object',\n  popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n              '<div class=\"tooltip-arrow\"></div>' +\n              '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  selector: false,\n  placement: 'top',\n  offset: [0, 0],\n  container: false,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  boundary: 'clippingParents',\n  customClass: '',\n  sanitize: true,\n  sanitizeFn: null,\n  allowList: DefaultAllowlist,\n  popperConfig: null\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    super(element)\n\n    // private\n    this._isEnabled = true\n    this._timeout = 0\n    this._hoverState = ''\n    this._activeTrigger = {}\n    this._popper = null\n\n    // Protected\n    this._config = this._getConfig(config)\n    this.tip = null\n\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle(event) {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (event) {\n      const context = this._initializeOnDelegatedTarget(event)\n\n      context._activeTrigger.click = !context._activeTrigger.click\n\n      if (context._isWithActiveTrigger()) {\n        context._enter(null, context)\n      } else {\n        context._leave(null, context)\n      }\n    } else {\n      if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n        this._leave(null, this)\n        return\n      }\n\n      this._enter(null, this)\n    }\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this.tip) {\n      this.tip.remove()\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this.isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = shadowRoot === null ?\n      this._element.ownerDocument.documentElement.contains(this._element) :\n      shadowRoot.contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const tipId = getUID(this.constructor.NAME)\n\n    tip.setAttribute('id', tipId)\n    this._element.setAttribute('aria-describedby', tipId)\n\n    if (this._config.animation) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    const placement = typeof this._config.placement === 'function' ?\n      this._config.placement.call(this, tip, this._element) :\n      this._config.placement\n\n    const attachment = this._getAttachment(placement)\n    this._addAttachmentClass(attachment)\n\n    const { container } = this._config\n    Data.set(tip, this.constructor.DATA_KEY, this)\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n    }\n\n    if (this._popper) {\n      this._popper.update()\n    } else {\n      this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n    }\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    const customClass = this._resolvePossibleFunction(this._config.customClass)\n    if (customClass) {\n      tip.classList.add(...customClass.split(' '))\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children).forEach(element => {\n        EventHandler.on(element, 'mouseover', noop)\n      })\n    }\n\n    const complete = () => {\n      const prevHoverState = this._hoverState\n\n      this._hoverState = null\n      EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n      if (prevHoverState === HOVER_STATE_OUT) {\n        this._leave(null, this)\n      }\n    }\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n  }\n\n  hide() {\n    if (!this._popper) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (this._hoverState !== HOVER_STATE_SHOW) {\n        tip.remove()\n      }\n\n      this._cleanTipClass()\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n      if (this._popper) {\n        this._popper.destroy()\n        this._popper = null\n      }\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children)\n        .forEach(element => EventHandler.off(element, 'mouseover', noop))\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n    this._hoverState = ''\n  }\n\n  update() {\n    if (this._popper !== null) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n\n  isWithContent() {\n    return Boolean(this.getTitle())\n  }\n\n  getTipElement() {\n    if (this.tip) {\n      return this.tip\n    }\n\n    const element = document.createElement('div')\n    element.innerHTML = this._config.template\n\n    const tip = element.children[0]\n    this.setContent(tip)\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n\n    this.tip = tip\n    return this.tip\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER)\n  }\n\n  _sanitizeAndSetContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!content && templateElement) {\n      templateElement.remove()\n      return\n    }\n\n    // we use append for html objects to maintain js events\n    this.setElementContent(templateElement, content)\n  }\n\n  setElementContent(element, content) {\n    if (element === null) {\n      return\n    }\n\n    if (isElement(content)) {\n      content = getElement(content)\n\n      // content is a DOM node or a jQuery\n      if (this._config.html) {\n        if (content.parentNode !== element) {\n          element.innerHTML = ''\n          element.append(content)\n        }\n      } else {\n        element.textContent = content.textContent\n      }\n\n      return\n    }\n\n    if (this._config.html) {\n      if (this._config.sanitize) {\n        content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n      }\n\n      element.innerHTML = content\n    } else {\n      element.textContent = content\n    }\n  }\n\n  getTitle() {\n    const title = this._element.getAttribute('data-bs-original-title') || this._config.title\n\n    return this._resolvePossibleFunction(title)\n  }\n\n  updateAttachment(attachment) {\n    if (attachment === 'right') {\n      return 'end'\n    }\n\n    if (attachment === 'left') {\n      return 'start'\n    }\n\n    return attachment\n  }\n\n  // Private\n\n  _initializeOnDelegatedTarget(event, context) {\n    return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(content) {\n    return typeof content === 'function' ? content.call(this._element) : content\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'onChange',\n          enabled: true,\n          phase: 'afterWrite',\n          fn: data => this._handlePopperPlacementChange(data)\n        }\n      ],\n      onFirstUpdate: data => {\n        if (data.options.placement !== data.placement) {\n          this._handlePopperPlacementChange(data)\n        }\n      }\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _addAttachmentClass(attachment) {\n    this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`)\n  }\n\n  _getAttachment(placement) {\n    return AttachmentMap[placement.toUpperCase()]\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    triggers.forEach(trigger => {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSEENTER :\n          this.constructor.Event.FOCUSIN\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSELEAVE :\n          this.constructor.Event.FOCUSOUT\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n        EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n      }\n    })\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._config.selector) {\n      this._config = {\n        ...this._config,\n        trigger: 'manual',\n        selector: ''\n      }\n    } else {\n      this._fixTitle()\n    }\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n    const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n    if (title || originalTitleType !== 'string') {\n      this._element.setAttribute('data-bs-original-title', title || '')\n      if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n        this._element.setAttribute('aria-label', title)\n      }\n\n      this._element.setAttribute('title', '')\n    }\n  }\n\n  _enter(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = true\n    }\n\n    if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n      context._hoverState = HOVER_STATE_SHOW\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_SHOW\n\n    if (!context._config.delay || !context._config.delay.show) {\n      context.show()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_SHOW) {\n        context.show()\n      }\n    }, context._config.delay.show)\n  }\n\n  _leave(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = context._element.contains(event.relatedTarget)\n    }\n\n    if (context._isWithActiveTrigger()) {\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_OUT\n\n    if (!context._config.delay || !context._config.delay.hide) {\n      context.hide()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_OUT) {\n        context.hide()\n      }\n    }, context._config.delay.hide)\n  }\n\n  _isWithActiveTrigger() {\n    for (const trigger in this._activeTrigger) {\n      if (this._activeTrigger[trigger]) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    Object.keys(dataAttributes).forEach(dataAttr => {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n        delete dataAttributes[dataAttr]\n      }\n    })\n\n    config = {\n      ...this.constructor.Default,\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (config.sanitize) {\n      config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const key in this._config) {\n      if (this.constructor.Default[key] !== this._config[key]) {\n        config[key] = this._config[key]\n      }\n    }\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _cleanTipClass() {\n    const tip = this.getTipElement()\n    const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g')\n    const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex)\n    if (tabClass !== null && tabClass.length > 0) {\n      tabClass.map(token => token.trim())\n        .forEach(tClass => tip.classList.remove(tClass))\n    }\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX\n  }\n\n  _handlePopperPlacementChange(popperData) {\n    const { state } = popperData\n\n    if (!state) {\n      return\n    }\n\n    this.tip = state.elements.popper\n    this._cleanTipClass()\n    this._addAttachmentClass(this._getAttachment(state.placement))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\n\nconst Default = {\n  ...Tooltip.Default,\n  placement: 'right',\n  offset: [0, 8],\n  trigger: 'click',\n  content: '',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n              '<div class=\"popover-arrow\"></div>' +\n              '<h3 class=\"popover-header\"></h3>' +\n              '<div class=\"popover-body\"></div>' +\n            '</div>'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(string|element|function)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Overrides\n\n  isWithContent() {\n    return this.getTitle() || this._getContent()\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE)\n    this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT)\n  }\n\n  // Private\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getSelectorFromElement,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  offset: 10,\n  method: 'auto',\n  target: ''\n}\n\nconst DefaultType = {\n  offset: 'number',\n  method: 'string',\n  target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n    this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n    this._config = this._getConfig(config)\n    this._offsets = []\n    this._targets = []\n    this._activeTarget = null\n    this._scrollHeight = 0\n\n    EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n    this.refresh()\n    this._process()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  refresh() {\n    const autoMethod = this._scrollElement === this._scrollElement.window ?\n      METHOD_OFFSET :\n      METHOD_POSITION\n\n    const offsetMethod = this._config.method === 'auto' ?\n      autoMethod :\n      this._config.method\n\n    const offsetBase = offsetMethod === METHOD_POSITION ?\n      this._getScrollTop() :\n      0\n\n    this._offsets = []\n    this._targets = []\n    this._scrollHeight = this._getScrollHeight()\n\n    const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n\n    targets.map(element => {\n      const targetSelector = getSelectorFromElement(element)\n      const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n      if (target) {\n        const targetBCR = target.getBoundingClientRect()\n        if (targetBCR.width || targetBCR.height) {\n          return [\n            Manipulator[offsetMethod](target).top + offsetBase,\n            targetSelector\n          ]\n        }\n      }\n\n      return null\n    })\n      .filter(item => item)\n      .sort((a, b) => a[0] - b[0])\n      .forEach(item => {\n        this._offsets.push(item[0])\n        this._targets.push(item[1])\n      })\n  }\n\n  dispose() {\n    EventHandler.off(this._scrollElement, EVENT_KEY)\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.target = getElement(config.target) || document.documentElement\n\n    typeCheckConfig(NAME, config, DefaultType)\n\n    return config\n  }\n\n  _getScrollTop() {\n    return this._scrollElement === window ?\n      this._scrollElement.pageYOffset :\n      this._scrollElement.scrollTop\n  }\n\n  _getScrollHeight() {\n    return this._scrollElement.scrollHeight || Math.max(\n      document.body.scrollHeight,\n      document.documentElement.scrollHeight\n    )\n  }\n\n  _getOffsetHeight() {\n    return this._scrollElement === window ?\n      window.innerHeight :\n      this._scrollElement.getBoundingClientRect().height\n  }\n\n  _process() {\n    const scrollTop = this._getScrollTop() + this._config.offset\n    const scrollHeight = this._getScrollHeight()\n    const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n    if (this._scrollHeight !== scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      const target = this._targets[this._targets.length - 1]\n\n      if (this._activeTarget !== target) {\n        this._activate(target)\n      }\n\n      return\n    }\n\n    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n      this._activeTarget = null\n      this._clear()\n      return\n    }\n\n    for (let i = this._offsets.length; i--;) {\n      const isActiveTarget = this._activeTarget !== this._targets[i] &&\n          scrollTop >= this._offsets[i] &&\n          (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n      if (isActiveTarget) {\n        this._activate(this._targets[i])\n      }\n    }\n  }\n\n  _activate(target) {\n    this._activeTarget = target\n\n    this._clear()\n\n    const queries = SELECTOR_LINK_ITEMS.split(',')\n      .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n    const link = SelectorEngine.findOne(queries.join(','), this._config.target)\n\n    link.classList.add(CLASS_NAME_ACTIVE)\n    if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n        .forEach(listGroup => {\n          // Set triggered links parents as active\n          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n          SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n            .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n          // Handle special case when .nav-link is inside .nav-item\n          SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n            .forEach(navItem => {\n              SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n                .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n            })\n        })\n    }\n\n    EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n      relatedTarget: target\n    })\n  }\n\n  _clear() {\n    SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n      .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n      .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  SelectorEngine.find(SELECTOR_DATA_SPY)\n    .forEach(spy => new ScrollSpy(spy))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  show() {\n    if ((this._element.parentNode &&\n      this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n      this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n      return\n    }\n\n    let previous\n    const target = getElementFromSelector(this._element)\n    const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n    if (listElement) {\n      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n      previous = SelectorEngine.find(itemSelector, listElement)\n      previous = previous[previous.length - 1]\n    }\n\n    const hideEvent = previous ?\n      EventHandler.trigger(previous, EVENT_HIDE, {\n        relatedTarget: this._element\n      }) :\n      null\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget: previous\n    })\n\n    if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._activate(this._element, listElement)\n\n    const complete = () => {\n      EventHandler.trigger(previous, EVENT_HIDDEN, {\n        relatedTarget: this._element\n      })\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget: previous\n      })\n    }\n\n    if (target) {\n      this._activate(target, target.parentNode, complete)\n    } else {\n      complete()\n    }\n  }\n\n  // Private\n\n  _activate(element, container, callback) {\n    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n      SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n      SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n    const active = activeElements[0]\n    const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n    const complete = () => this._transitionComplete(element, active, callback)\n\n    if (active && isTransitioning) {\n      active.classList.remove(CLASS_NAME_SHOW)\n      this._queueCallback(complete, element, true)\n    } else {\n      complete()\n    }\n  }\n\n  _transitionComplete(element, active, callback) {\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n\n      const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n      if (dropdownChild) {\n        dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n      }\n\n      if (active.getAttribute('role') === 'tab') {\n        active.setAttribute('aria-selected', false)\n      }\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n    if (element.getAttribute('role') === 'tab') {\n      element.setAttribute('aria-selected', true)\n    }\n\n    reflow(element)\n\n    if (element.classList.contains(CLASS_NAME_FADE)) {\n      element.classList.add(CLASS_NAME_SHOW)\n    }\n\n    let parent = element.parentNode\n    if (parent && parent.nodeName === 'LI') {\n      parent = parent.parentNode\n    }\n\n    if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n      const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n      if (dropdownElement) {\n        SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n          .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n      }\n\n      element.setAttribute('aria-expanded', true)\n    }\n\n    if (callback) {\n      callback()\n    }\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  const data = Tab.getOrCreateInstance(this)\n  data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      this._element.classList.remove(CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    return config\n  }\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout':\n        this._hasMouseInteraction = isInteracting\n        break\n      case 'focusin':\n      case 'focusout':\n        this._hasKeyboardInteraction = isInteracting\n        break\n      default:\n        break\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\nenableDismissTrigger(Toast)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.js
new file mode 100644
index 0000000..05e7fd9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.js
@@ -0,0 +1,5026 @@
+/*!
+  * Bootstrap v5.1.0 (https://getbootstrap.com/)
+  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+  */
+(function (global, factory) {
+  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core')) :
+  typeof define === 'function' && define.amd ? define(['@popperjs/core'], factory) :
+  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory(global.Popper));
+}(this, (function (Popper) { 'use strict';
+
+  function _interopNamespace(e) {
+    if (e && e.__esModule) return e;
+    var n = Object.create(null);
+    if (e) {
+      Object.keys(e).forEach(function (k) {
+        if (k !== 'default') {
+          var d = Object.getOwnPropertyDescriptor(e, k);
+          Object.defineProperty(n, k, d.get ? d : {
+            enumerable: true,
+            get: function () {
+              return e[k];
+            }
+          });
+        }
+      });
+    }
+    n['default'] = e;
+    return Object.freeze(n);
+  }
+
+  var Popper__namespace = /*#__PURE__*/_interopNamespace(Popper);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): util/index.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  const MAX_UID = 1000000;
+  const MILLISECONDS_MULTIPLIER = 1000;
+  const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
+
+  const toType = obj => {
+    if (obj === null || obj === undefined) {
+      return `${obj}`;
+    }
+
+    return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
+  };
+  /**
+   * --------------------------------------------------------------------------
+   * Public Util Api
+   * --------------------------------------------------------------------------
+   */
+
+
+  const getUID = prefix => {
+    do {
+      prefix += Math.floor(Math.random() * MAX_UID);
+    } while (document.getElementById(prefix));
+
+    return prefix;
+  };
+
+  const getSelector = element => {
+    let selector = element.getAttribute('data-bs-target');
+
+    if (!selector || selector === '#') {
+      let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
+      // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
+      // `document.querySelector` will rightfully complain it is invalid.
+      // See https://github.com/twbs/bootstrap/issues/32273
+
+      if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
+        return null;
+      } // Just in case some CMS puts out a full URL with the anchor appended
+
+
+      if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
+        hrefAttr = `#${hrefAttr.split('#')[1]}`;
+      }
+
+      selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
+    }
+
+    return selector;
+  };
+
+  const getSelectorFromElement = element => {
+    const selector = getSelector(element);
+
+    if (selector) {
+      return document.querySelector(selector) ? selector : null;
+    }
+
+    return null;
+  };
+
+  const getElementFromSelector = element => {
+    const selector = getSelector(element);
+    return selector ? document.querySelector(selector) : null;
+  };
+
+  const getTransitionDurationFromElement = element => {
+    if (!element) {
+      return 0;
+    } // Get transition-duration of the element
+
+
+    let {
+      transitionDuration,
+      transitionDelay
+    } = window.getComputedStyle(element);
+    const floatTransitionDuration = Number.parseFloat(transitionDuration);
+    const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
+
+    if (!floatTransitionDuration && !floatTransitionDelay) {
+      return 0;
+    } // If multiple durations are defined, take the first
+
+
+    transitionDuration = transitionDuration.split(',')[0];
+    transitionDelay = transitionDelay.split(',')[0];
+    return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
+  };
+
+  const triggerTransitionEnd = element => {
+    element.dispatchEvent(new Event(TRANSITION_END));
+  };
+
+  const isElement = obj => {
+    if (!obj || typeof obj !== 'object') {
+      return false;
+    }
+
+    if (typeof obj.jquery !== 'undefined') {
+      obj = obj[0];
+    }
+
+    return typeof obj.nodeType !== 'undefined';
+  };
+
+  const getElement = obj => {
+    if (isElement(obj)) {
+      // it's a jQuery object or a node element
+      return obj.jquery ? obj[0] : obj;
+    }
+
+    if (typeof obj === 'string' && obj.length > 0) {
+      return document.querySelector(obj);
+    }
+
+    return null;
+  };
+
+  const typeCheckConfig = (componentName, config, configTypes) => {
+    Object.keys(configTypes).forEach(property => {
+      const expectedTypes = configTypes[property];
+      const value = config[property];
+      const valueType = value && isElement(value) ? 'element' : toType(value);
+
+      if (!new RegExp(expectedTypes).test(valueType)) {
+        throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
+      }
+    });
+  };
+
+  const isVisible = element => {
+    if (!isElement(element) || element.getClientRects().length === 0) {
+      return false;
+    }
+
+    return getComputedStyle(element).getPropertyValue('visibility') === 'visible';
+  };
+
+  const isDisabled = element => {
+    if (!element || element.nodeType !== Node.ELEMENT_NODE) {
+      return true;
+    }
+
+    if (element.classList.contains('disabled')) {
+      return true;
+    }
+
+    if (typeof element.disabled !== 'undefined') {
+      return element.disabled;
+    }
+
+    return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
+  };
+
+  const findShadowRoot = element => {
+    if (!document.documentElement.attachShadow) {
+      return null;
+    } // Can find the shadow root otherwise it'll return the document
+
+
+    if (typeof element.getRootNode === 'function') {
+      const root = element.getRootNode();
+      return root instanceof ShadowRoot ? root : null;
+    }
+
+    if (element instanceof ShadowRoot) {
+      return element;
+    } // when we don't find a shadow root
+
+
+    if (!element.parentNode) {
+      return null;
+    }
+
+    return findShadowRoot(element.parentNode);
+  };
+
+  const noop = () => {};
+  /**
+   * Trick to restart an element's animation
+   *
+   * @param {HTMLElement} element
+   * @return void
+   *
+   * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
+   */
+
+
+  const reflow = element => {
+    // eslint-disable-next-line no-unused-expressions
+    element.offsetHeight;
+  };
+
+  const getjQuery = () => {
+    const {
+      jQuery
+    } = window;
+
+    if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
+      return jQuery;
+    }
+
+    return null;
+  };
+
+  const DOMContentLoadedCallbacks = [];
+
+  const onDOMContentLoaded = callback => {
+    if (document.readyState === 'loading') {
+      // add listener on the first call when the document is in loading state
+      if (!DOMContentLoadedCallbacks.length) {
+        document.addEventListener('DOMContentLoaded', () => {
+          DOMContentLoadedCallbacks.forEach(callback => callback());
+        });
+      }
+
+      DOMContentLoadedCallbacks.push(callback);
+    } else {
+      callback();
+    }
+  };
+
+  const isRTL = () => document.documentElement.dir === 'rtl';
+
+  const defineJQueryPlugin = plugin => {
+    onDOMContentLoaded(() => {
+      const $ = getjQuery();
+      /* istanbul ignore if */
+
+      if ($) {
+        const name = plugin.NAME;
+        const JQUERY_NO_CONFLICT = $.fn[name];
+        $.fn[name] = plugin.jQueryInterface;
+        $.fn[name].Constructor = plugin;
+
+        $.fn[name].noConflict = () => {
+          $.fn[name] = JQUERY_NO_CONFLICT;
+          return plugin.jQueryInterface;
+        };
+      }
+    });
+  };
+
+  const execute = callback => {
+    if (typeof callback === 'function') {
+      callback();
+    }
+  };
+
+  const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
+    if (!waitForTransition) {
+      execute(callback);
+      return;
+    }
+
+    const durationPadding = 5;
+    const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
+    let called = false;
+
+    const handler = ({
+      target
+    }) => {
+      if (target !== transitionElement) {
+        return;
+      }
+
+      called = true;
+      transitionElement.removeEventListener(TRANSITION_END, handler);
+      execute(callback);
+    };
+
+    transitionElement.addEventListener(TRANSITION_END, handler);
+    setTimeout(() => {
+      if (!called) {
+        triggerTransitionEnd(transitionElement);
+      }
+    }, emulatedDuration);
+  };
+  /**
+   * Return the previous/next element of a list.
+   *
+   * @param {array} list    The list of elements
+   * @param activeElement   The active element
+   * @param shouldGetNext   Choose to get next or previous element
+   * @param isCycleAllowed
+   * @return {Element|elem} The proper element
+   */
+
+
+  const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
+    let index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed
+
+    if (index === -1) {
+      return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0];
+    }
+
+    const listLength = list.length;
+    index += shouldGetNext ? 1 : -1;
+
+    if (isCycleAllowed) {
+      index = (index + listLength) % listLength;
+    }
+
+    return list[Math.max(0, Math.min(index, listLength - 1))];
+  };
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): dom/event-handler.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
+  const stripNameRegex = /\..*/;
+  const stripUidRegex = /::\d+$/;
+  const eventRegistry = {}; // Events storage
+
+  let uidEvent = 1;
+  const customEvents = {
+    mouseenter: 'mouseover',
+    mouseleave: 'mouseout'
+  };
+  const customEventsRegex = /^(mouseenter|mouseleave)/i;
+  const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
+  /**
+   * ------------------------------------------------------------------------
+   * Private methods
+   * ------------------------------------------------------------------------
+   */
+
+  function getUidEvent(element, uid) {
+    return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
+  }
+
+  function getEvent(element) {
+    const uid = getUidEvent(element);
+    element.uidEvent = uid;
+    eventRegistry[uid] = eventRegistry[uid] || {};
+    return eventRegistry[uid];
+  }
+
+  function bootstrapHandler(element, fn) {
+    return function handler(event) {
+      event.delegateTarget = element;
+
+      if (handler.oneOff) {
+        EventHandler.off(element, event.type, fn);
+      }
+
+      return fn.apply(element, [event]);
+    };
+  }
+
+  function bootstrapDelegationHandler(element, selector, fn) {
+    return function handler(event) {
+      const domElements = element.querySelectorAll(selector);
+
+      for (let {
+        target
+      } = event; target && target !== this; target = target.parentNode) {
+        for (let i = domElements.length; i--;) {
+          if (domElements[i] === target) {
+            event.delegateTarget = target;
+
+            if (handler.oneOff) {
+              // eslint-disable-next-line unicorn/consistent-destructuring
+              EventHandler.off(element, event.type, selector, fn);
+            }
+
+            return fn.apply(target, [event]);
+          }
+        }
+      } // To please ESLint
+
+
+      return null;
+    };
+  }
+
+  function findHandler(events, handler, delegationSelector = null) {
+    const uidEventList = Object.keys(events);
+
+    for (let i = 0, len = uidEventList.length; i < len; i++) {
+      const event = events[uidEventList[i]];
+
+      if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
+        return event;
+      }
+    }
+
+    return null;
+  }
+
+  function normalizeParams(originalTypeEvent, handler, delegationFn) {
+    const delegation = typeof handler === 'string';
+    const originalHandler = delegation ? delegationFn : handler;
+    let typeEvent = getTypeEvent(originalTypeEvent);
+    const isNative = nativeEvents.has(typeEvent);
+
+    if (!isNative) {
+      typeEvent = originalTypeEvent;
+    }
+
+    return [delegation, originalHandler, typeEvent];
+  }
+
+  function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {
+    if (typeof originalTypeEvent !== 'string' || !element) {
+      return;
+    }
+
+    if (!handler) {
+      handler = delegationFn;
+      delegationFn = null;
+    } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
+    // this prevents the handler from being dispatched the same way as mouseover or mouseout does
+
+
+    if (customEventsRegex.test(originalTypeEvent)) {
+      const wrapFn = fn => {
+        return function (event) {
+          if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
+            return fn.call(this, event);
+          }
+        };
+      };
+
+      if (delegationFn) {
+        delegationFn = wrapFn(delegationFn);
+      } else {
+        handler = wrapFn(handler);
+      }
+    }
+
+    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
+    const events = getEvent(element);
+    const handlers = events[typeEvent] || (events[typeEvent] = {});
+    const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
+
+    if (previousFn) {
+      previousFn.oneOff = previousFn.oneOff && oneOff;
+      return;
+    }
+
+    const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));
+    const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);
+    fn.delegationSelector = delegation ? handler : null;
+    fn.originalHandler = originalHandler;
+    fn.oneOff = oneOff;
+    fn.uidEvent = uid;
+    handlers[uid] = fn;
+    element.addEventListener(typeEvent, fn, delegation);
+  }
+
+  function removeHandler(element, events, typeEvent, handler, delegationSelector) {
+    const fn = findHandler(events[typeEvent], handler, delegationSelector);
+
+    if (!fn) {
+      return;
+    }
+
+    element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
+    delete events[typeEvent][fn.uidEvent];
+  }
+
+  function removeNamespacedHandlers(element, events, typeEvent, namespace) {
+    const storeElementEvent = events[typeEvent] || {};
+    Object.keys(storeElementEvent).forEach(handlerKey => {
+      if (handlerKey.includes(namespace)) {
+        const event = storeElementEvent[handlerKey];
+        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
+      }
+    });
+  }
+
+  function getTypeEvent(event) {
+    // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
+    event = event.replace(stripNameRegex, '');
+    return customEvents[event] || event;
+  }
+
+  const EventHandler = {
+    on(element, event, handler, delegationFn) {
+      addHandler(element, event, handler, delegationFn, false);
+    },
+
+    one(element, event, handler, delegationFn) {
+      addHandler(element, event, handler, delegationFn, true);
+    },
+
+    off(element, originalTypeEvent, handler, delegationFn) {
+      if (typeof originalTypeEvent !== 'string' || !element) {
+        return;
+      }
+
+      const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
+      const inNamespace = typeEvent !== originalTypeEvent;
+      const events = getEvent(element);
+      const isNamespace = originalTypeEvent.startsWith('.');
+
+      if (typeof originalHandler !== 'undefined') {
+        // Simplest case: handler is passed, remove that listener ONLY.
+        if (!events || !events[typeEvent]) {
+          return;
+        }
+
+        removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);
+        return;
+      }
+
+      if (isNamespace) {
+        Object.keys(events).forEach(elementEvent => {
+          removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
+        });
+      }
+
+      const storeElementEvent = events[typeEvent] || {};
+      Object.keys(storeElementEvent).forEach(keyHandlers => {
+        const handlerKey = keyHandlers.replace(stripUidRegex, '');
+
+        if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
+          const event = storeElementEvent[keyHandlers];
+          removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
+        }
+      });
+    },
+
+    trigger(element, event, args) {
+      if (typeof event !== 'string' || !element) {
+        return null;
+      }
+
+      const $ = getjQuery();
+      const typeEvent = getTypeEvent(event);
+      const inNamespace = event !== typeEvent;
+      const isNative = nativeEvents.has(typeEvent);
+      let jQueryEvent;
+      let bubbles = true;
+      let nativeDispatch = true;
+      let defaultPrevented = false;
+      let evt = null;
+
+      if (inNamespace && $) {
+        jQueryEvent = $.Event(event, args);
+        $(element).trigger(jQueryEvent);
+        bubbles = !jQueryEvent.isPropagationStopped();
+        nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
+        defaultPrevented = jQueryEvent.isDefaultPrevented();
+      }
+
+      if (isNative) {
+        evt = document.createEvent('HTMLEvents');
+        evt.initEvent(typeEvent, bubbles, true);
+      } else {
+        evt = new CustomEvent(event, {
+          bubbles,
+          cancelable: true
+        });
+      } // merge custom information in our event
+
+
+      if (typeof args !== 'undefined') {
+        Object.keys(args).forEach(key => {
+          Object.defineProperty(evt, key, {
+            get() {
+              return args[key];
+            }
+
+          });
+        });
+      }
+
+      if (defaultPrevented) {
+        evt.preventDefault();
+      }
+
+      if (nativeDispatch) {
+        element.dispatchEvent(evt);
+      }
+
+      if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {
+        jQueryEvent.preventDefault();
+      }
+
+      return evt;
+    }
+
+  };
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): dom/data.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+  const elementMap = new Map();
+  var Data = {
+    set(element, key, instance) {
+      if (!elementMap.has(element)) {
+        elementMap.set(element, new Map());
+      }
+
+      const instanceMap = elementMap.get(element); // make it clear we only want one instance per element
+      // can be removed later when multiple key/instances are fine to be used
+
+      if (!instanceMap.has(key) && instanceMap.size !== 0) {
+        // eslint-disable-next-line no-console
+        console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
+        return;
+      }
+
+      instanceMap.set(key, instance);
+    },
+
+    get(element, key) {
+      if (elementMap.has(element)) {
+        return elementMap.get(element).get(key) || null;
+      }
+
+      return null;
+    },
+
+    remove(element, key) {
+      if (!elementMap.has(element)) {
+        return;
+      }
+
+      const instanceMap = elementMap.get(element);
+      instanceMap.delete(key); // free up element references if there are no instances left for an element
+
+      if (instanceMap.size === 0) {
+        elementMap.delete(element);
+      }
+    }
+
+  };
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): base-component.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const VERSION = '5.1.0';
+
+  class BaseComponent {
+    constructor(element) {
+      element = getElement(element);
+
+      if (!element) {
+        return;
+      }
+
+      this._element = element;
+      Data.set(this._element, this.constructor.DATA_KEY, this);
+    }
+
+    dispose() {
+      Data.remove(this._element, this.constructor.DATA_KEY);
+      EventHandler.off(this._element, this.constructor.EVENT_KEY);
+      Object.getOwnPropertyNames(this).forEach(propertyName => {
+        this[propertyName] = null;
+      });
+    }
+
+    _queueCallback(callback, element, isAnimated = true) {
+      executeAfterTransition(callback, element, isAnimated);
+    }
+    /** Static */
+
+
+    static getInstance(element) {
+      return Data.get(getElement(element), this.DATA_KEY);
+    }
+
+    static getOrCreateInstance(element, config = {}) {
+      return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
+    }
+
+    static get VERSION() {
+      return VERSION;
+    }
+
+    static get NAME() {
+      throw new Error('You have to implement the static method "NAME", for each component!');
+    }
+
+    static get DATA_KEY() {
+      return `bs.${this.NAME}`;
+    }
+
+    static get EVENT_KEY() {
+      return `.${this.DATA_KEY}`;
+    }
+
+  }
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): util/component-functions.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+
+  const enableDismissTrigger = (component, method = 'hide') => {
+    const clickEvent = `click.dismiss${component.EVENT_KEY}`;
+    const name = component.NAME;
+    EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
+      if (['A', 'AREA'].includes(this.tagName)) {
+        event.preventDefault();
+      }
+
+      if (isDisabled(this)) {
+        return;
+      }
+
+      const target = getElementFromSelector(this) || this.closest(`.${name}`);
+      const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
+
+      instance[method]();
+    });
+  };
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): alert.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$d = 'alert';
+  const DATA_KEY$c = 'bs.alert';
+  const EVENT_KEY$c = `.${DATA_KEY$c}`;
+  const EVENT_CLOSE = `close${EVENT_KEY$c}`;
+  const EVENT_CLOSED = `closed${EVENT_KEY$c}`;
+  const CLASS_NAME_FADE$5 = 'fade';
+  const CLASS_NAME_SHOW$8 = 'show';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Alert extends BaseComponent {
+    // Getters
+    static get NAME() {
+      return NAME$d;
+    } // Public
+
+
+    close() {
+      const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
+
+      if (closeEvent.defaultPrevented) {
+        return;
+      }
+
+      this._element.classList.remove(CLASS_NAME_SHOW$8);
+
+      const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
+
+      this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
+    } // Private
+
+
+    _destroyElement() {
+      this._element.remove();
+
+      EventHandler.trigger(this._element, EVENT_CLOSED);
+      this.dispose();
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Alert.getOrCreateInstance(this);
+
+        if (typeof config !== 'string') {
+          return;
+        }
+
+        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config](this);
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  enableDismissTrigger(Alert, 'close');
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Alert to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Alert);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): button.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$c = 'button';
+  const DATA_KEY$b = 'bs.button';
+  const EVENT_KEY$b = `.${DATA_KEY$b}`;
+  const DATA_API_KEY$7 = '.data-api';
+  const CLASS_NAME_ACTIVE$3 = 'active';
+  const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
+  const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$b}${DATA_API_KEY$7}`;
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Button extends BaseComponent {
+    // Getters
+    static get NAME() {
+      return NAME$c;
+    } // Public
+
+
+    toggle() {
+      // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
+      this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Button.getOrCreateInstance(this);
+
+        if (config === 'toggle') {
+          data[config]();
+        }
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {
+    event.preventDefault();
+    const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
+    const data = Button.getOrCreateInstance(button);
+    data.toggle();
+  });
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Button to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Button);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): dom/manipulator.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  function normalizeData(val) {
+    if (val === 'true') {
+      return true;
+    }
+
+    if (val === 'false') {
+      return false;
+    }
+
+    if (val === Number(val).toString()) {
+      return Number(val);
+    }
+
+    if (val === '' || val === 'null') {
+      return null;
+    }
+
+    return val;
+  }
+
+  function normalizeDataKey(key) {
+    return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
+  }
+
+  const Manipulator = {
+    setDataAttribute(element, key, value) {
+      element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
+    },
+
+    removeDataAttribute(element, key) {
+      element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
+    },
+
+    getDataAttributes(element) {
+      if (!element) {
+        return {};
+      }
+
+      const attributes = {};
+      Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => {
+        let pureKey = key.replace(/^bs/, '');
+        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
+        attributes[pureKey] = normalizeData(element.dataset[key]);
+      });
+      return attributes;
+    },
+
+    getDataAttribute(element, key) {
+      return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
+    },
+
+    offset(element) {
+      const rect = element.getBoundingClientRect();
+      return {
+        top: rect.top + window.pageYOffset,
+        left: rect.left + window.pageXOffset
+      };
+    },
+
+    position(element) {
+      return {
+        top: element.offsetTop,
+        left: element.offsetLeft
+      };
+    }
+
+  };
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): dom/selector-engine.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  const NODE_TEXT = 3;
+  const SelectorEngine = {
+    find(selector, element = document.documentElement) {
+      return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
+    },
+
+    findOne(selector, element = document.documentElement) {
+      return Element.prototype.querySelector.call(element, selector);
+    },
+
+    children(element, selector) {
+      return [].concat(...element.children).filter(child => child.matches(selector));
+    },
+
+    parents(element, selector) {
+      const parents = [];
+      let ancestor = element.parentNode;
+
+      while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {
+        if (ancestor.matches(selector)) {
+          parents.push(ancestor);
+        }
+
+        ancestor = ancestor.parentNode;
+      }
+
+      return parents;
+    },
+
+    prev(element, selector) {
+      let previous = element.previousElementSibling;
+
+      while (previous) {
+        if (previous.matches(selector)) {
+          return [previous];
+        }
+
+        previous = previous.previousElementSibling;
+      }
+
+      return [];
+    },
+
+    next(element, selector) {
+      let next = element.nextElementSibling;
+
+      while (next) {
+        if (next.matches(selector)) {
+          return [next];
+        }
+
+        next = next.nextElementSibling;
+      }
+
+      return [];
+    },
+
+    focusableChildren(element) {
+      const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(', ');
+      return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));
+    }
+
+  };
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): carousel.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$b = 'carousel';
+  const DATA_KEY$a = 'bs.carousel';
+  const EVENT_KEY$a = `.${DATA_KEY$a}`;
+  const DATA_API_KEY$6 = '.data-api';
+  const ARROW_LEFT_KEY = 'ArrowLeft';
+  const ARROW_RIGHT_KEY = 'ArrowRight';
+  const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
+
+  const SWIPE_THRESHOLD = 40;
+  const Default$a = {
+    interval: 5000,
+    keyboard: true,
+    slide: false,
+    pause: 'hover',
+    wrap: true,
+    touch: true
+  };
+  const DefaultType$a = {
+    interval: '(number|boolean)',
+    keyboard: 'boolean',
+    slide: '(boolean|string)',
+    pause: '(string|boolean)',
+    wrap: 'boolean',
+    touch: 'boolean'
+  };
+  const ORDER_NEXT = 'next';
+  const ORDER_PREV = 'prev';
+  const DIRECTION_LEFT = 'left';
+  const DIRECTION_RIGHT = 'right';
+  const KEY_TO_DIRECTION = {
+    [ARROW_LEFT_KEY]: DIRECTION_RIGHT,
+    [ARROW_RIGHT_KEY]: DIRECTION_LEFT
+  };
+  const EVENT_SLIDE = `slide${EVENT_KEY$a}`;
+  const EVENT_SLID = `slid${EVENT_KEY$a}`;
+  const EVENT_KEYDOWN = `keydown${EVENT_KEY$a}`;
+  const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY$a}`;
+  const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY$a}`;
+  const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$a}`;
+  const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$a}`;
+  const EVENT_TOUCHEND = `touchend${EVENT_KEY$a}`;
+  const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$a}`;
+  const EVENT_POINTERUP = `pointerup${EVENT_KEY$a}`;
+  const EVENT_DRAG_START = `dragstart${EVENT_KEY$a}`;
+  const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$a}${DATA_API_KEY$6}`;
+  const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
+  const CLASS_NAME_CAROUSEL = 'carousel';
+  const CLASS_NAME_ACTIVE$2 = 'active';
+  const CLASS_NAME_SLIDE = 'slide';
+  const CLASS_NAME_END = 'carousel-item-end';
+  const CLASS_NAME_START = 'carousel-item-start';
+  const CLASS_NAME_NEXT = 'carousel-item-next';
+  const CLASS_NAME_PREV = 'carousel-item-prev';
+  const CLASS_NAME_POINTER_EVENT = 'pointer-event';
+  const SELECTOR_ACTIVE$1 = '.active';
+  const SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
+  const SELECTOR_ITEM = '.carousel-item';
+  const SELECTOR_ITEM_IMG = '.carousel-item img';
+  const SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
+  const SELECTOR_INDICATORS = '.carousel-indicators';
+  const SELECTOR_INDICATOR = '[data-bs-target]';
+  const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
+  const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
+  const POINTER_TYPE_TOUCH = 'touch';
+  const POINTER_TYPE_PEN = 'pen';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Carousel extends BaseComponent {
+    constructor(element, config) {
+      super(element);
+      this._items = null;
+      this._interval = null;
+      this._activeElement = null;
+      this._isPaused = false;
+      this._isSliding = false;
+      this.touchTimeout = null;
+      this.touchStartX = 0;
+      this.touchDeltaX = 0;
+      this._config = this._getConfig(config);
+      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
+      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
+      this._pointerEvent = Boolean(window.PointerEvent);
+
+      this._addEventListeners();
+    } // Getters
+
+
+    static get Default() {
+      return Default$a;
+    }
+
+    static get NAME() {
+      return NAME$b;
+    } // Public
+
+
+    next() {
+      this._slide(ORDER_NEXT);
+    }
+
+    nextWhenVisible() {
+      // Don't call next when the page isn't visible
+      // or the carousel or its parent isn't visible
+      if (!document.hidden && isVisible(this._element)) {
+        this.next();
+      }
+    }
+
+    prev() {
+      this._slide(ORDER_PREV);
+    }
+
+    pause(event) {
+      if (!event) {
+        this._isPaused = true;
+      }
+
+      if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {
+        triggerTransitionEnd(this._element);
+        this.cycle(true);
+      }
+
+      clearInterval(this._interval);
+      this._interval = null;
+    }
+
+    cycle(event) {
+      if (!event) {
+        this._isPaused = false;
+      }
+
+      if (this._interval) {
+        clearInterval(this._interval);
+        this._interval = null;
+      }
+
+      if (this._config && this._config.interval && !this._isPaused) {
+        this._updateInterval();
+
+        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
+      }
+    }
+
+    to(index) {
+      this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
+
+      const activeIndex = this._getItemIndex(this._activeElement);
+
+      if (index > this._items.length - 1 || index < 0) {
+        return;
+      }
+
+      if (this._isSliding) {
+        EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
+        return;
+      }
+
+      if (activeIndex === index) {
+        this.pause();
+        this.cycle();
+        return;
+      }
+
+      const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
+
+      this._slide(order, this._items[index]);
+    } // Private
+
+
+    _getConfig(config) {
+      config = { ...Default$a,
+        ...Manipulator.getDataAttributes(this._element),
+        ...(typeof config === 'object' ? config : {})
+      };
+      typeCheckConfig(NAME$b, config, DefaultType$a);
+      return config;
+    }
+
+    _handleSwipe() {
+      const absDeltax = Math.abs(this.touchDeltaX);
+
+      if (absDeltax <= SWIPE_THRESHOLD) {
+        return;
+      }
+
+      const direction = absDeltax / this.touchDeltaX;
+      this.touchDeltaX = 0;
+
+      if (!direction) {
+        return;
+      }
+
+      this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT);
+    }
+
+    _addEventListeners() {
+      if (this._config.keyboard) {
+        EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
+      }
+
+      if (this._config.pause === 'hover') {
+        EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event));
+        EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event));
+      }
+
+      if (this._config.touch && this._touchSupported) {
+        this._addTouchEventListeners();
+      }
+    }
+
+    _addTouchEventListeners() {
+      const start = event => {
+        if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {
+          this.touchStartX = event.clientX;
+        } else if (!this._pointerEvent) {
+          this.touchStartX = event.touches[0].clientX;
+        }
+      };
+
+      const move = event => {
+        // ensure swiping with one touch and not pinching
+        this.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this.touchStartX;
+      };
+
+      const end = event => {
+        if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {
+          this.touchDeltaX = event.clientX - this.touchStartX;
+        }
+
+        this._handleSwipe();
+
+        if (this._config.pause === 'hover') {
+          // If it's a touch-enabled device, mouseenter/leave are fired as
+          // part of the mouse compatibility events on first tap - the carousel
+          // would stop cycling until user tapped out of it;
+          // here, we listen for touchend, explicitly pause the carousel
+          // (as if it's the second time we tap on it, mouseenter compat event
+          // is NOT fired) and after a timeout (to allow for mouse compatibility
+          // events to fire) we explicitly restart cycling
+          this.pause();
+
+          if (this.touchTimeout) {
+            clearTimeout(this.touchTimeout);
+          }
+
+          this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
+        }
+      };
+
+      SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {
+        EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault());
+      });
+
+      if (this._pointerEvent) {
+        EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event));
+        EventHandler.on(this._element, EVENT_POINTERUP, event => end(event));
+
+        this._element.classList.add(CLASS_NAME_POINTER_EVENT);
+      } else {
+        EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event));
+        EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event));
+        EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event));
+      }
+    }
+
+    _keydown(event) {
+      if (/input|textarea/i.test(event.target.tagName)) {
+        return;
+      }
+
+      const direction = KEY_TO_DIRECTION[event.key];
+
+      if (direction) {
+        event.preventDefault();
+
+        this._slide(direction);
+      }
+    }
+
+    _getItemIndex(element) {
+      this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];
+      return this._items.indexOf(element);
+    }
+
+    _getItemByOrder(order, activeElement) {
+      const isNext = order === ORDER_NEXT;
+      return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap);
+    }
+
+    _triggerSlideEvent(relatedTarget, eventDirectionName) {
+      const targetIndex = this._getItemIndex(relatedTarget);
+
+      const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));
+
+      return EventHandler.trigger(this._element, EVENT_SLIDE, {
+        relatedTarget,
+        direction: eventDirectionName,
+        from: fromIndex,
+        to: targetIndex
+      });
+    }
+
+    _setActiveIndicatorElement(element) {
+      if (this._indicatorsElement) {
+        const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE$1, this._indicatorsElement);
+        activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
+        activeIndicator.removeAttribute('aria-current');
+        const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement);
+
+        for (let i = 0; i < indicators.length; i++) {
+          if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {
+            indicators[i].classList.add(CLASS_NAME_ACTIVE$2);
+            indicators[i].setAttribute('aria-current', 'true');
+            break;
+          }
+        }
+      }
+    }
+
+    _updateInterval() {
+      const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
+
+      if (!element) {
+        return;
+      }
+
+      const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
+
+      if (elementInterval) {
+        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
+        this._config.interval = elementInterval;
+      } else {
+        this._config.interval = this._config.defaultInterval || this._config.interval;
+      }
+    }
+
+    _slide(directionOrOrder, element) {
+      const order = this._directionToOrder(directionOrOrder);
+
+      const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
+
+      const activeElementIndex = this._getItemIndex(activeElement);
+
+      const nextElement = element || this._getItemByOrder(order, activeElement);
+
+      const nextElementIndex = this._getItemIndex(nextElement);
+
+      const isCycling = Boolean(this._interval);
+      const isNext = order === ORDER_NEXT;
+      const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
+      const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
+
+      const eventDirectionName = this._orderToDirection(order);
+
+      if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$2)) {
+        this._isSliding = false;
+        return;
+      }
+
+      if (this._isSliding) {
+        return;
+      }
+
+      const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
+
+      if (slideEvent.defaultPrevented) {
+        return;
+      }
+
+      if (!activeElement || !nextElement) {
+        // Some weirdness is happening, so we bail
+        return;
+      }
+
+      this._isSliding = true;
+
+      if (isCycling) {
+        this.pause();
+      }
+
+      this._setActiveIndicatorElement(nextElement);
+
+      this._activeElement = nextElement;
+
+      const triggerSlidEvent = () => {
+        EventHandler.trigger(this._element, EVENT_SLID, {
+          relatedTarget: nextElement,
+          direction: eventDirectionName,
+          from: activeElementIndex,
+          to: nextElementIndex
+        });
+      };
+
+      if (this._element.classList.contains(CLASS_NAME_SLIDE)) {
+        nextElement.classList.add(orderClassName);
+        reflow(nextElement);
+        activeElement.classList.add(directionalClassName);
+        nextElement.classList.add(directionalClassName);
+
+        const completeCallBack = () => {
+          nextElement.classList.remove(directionalClassName, orderClassName);
+          nextElement.classList.add(CLASS_NAME_ACTIVE$2);
+          activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
+          this._isSliding = false;
+          setTimeout(triggerSlidEvent, 0);
+        };
+
+        this._queueCallback(completeCallBack, activeElement, true);
+      } else {
+        activeElement.classList.remove(CLASS_NAME_ACTIVE$2);
+        nextElement.classList.add(CLASS_NAME_ACTIVE$2);
+        this._isSliding = false;
+        triggerSlidEvent();
+      }
+
+      if (isCycling) {
+        this.cycle();
+      }
+    }
+
+    _directionToOrder(direction) {
+      if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {
+        return direction;
+      }
+
+      if (isRTL()) {
+        return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
+      }
+
+      return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
+    }
+
+    _orderToDirection(order) {
+      if (![ORDER_NEXT, ORDER_PREV].includes(order)) {
+        return order;
+      }
+
+      if (isRTL()) {
+        return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
+      }
+
+      return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
+    } // Static
+
+
+    static carouselInterface(element, config) {
+      const data = Carousel.getOrCreateInstance(element, config);
+      let {
+        _config
+      } = data;
+
+      if (typeof config === 'object') {
+        _config = { ..._config,
+          ...config
+        };
+      }
+
+      const action = typeof config === 'string' ? config : _config.slide;
+
+      if (typeof config === 'number') {
+        data.to(config);
+      } else if (typeof action === 'string') {
+        if (typeof data[action] === 'undefined') {
+          throw new TypeError(`No method named "${action}"`);
+        }
+
+        data[action]();
+      } else if (_config.interval && _config.ride) {
+        data.pause();
+        data.cycle();
+      }
+    }
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        Carousel.carouselInterface(this, config);
+      });
+    }
+
+    static dataApiClickHandler(event) {
+      const target = getElementFromSelector(this);
+
+      if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
+        return;
+      }
+
+      const config = { ...Manipulator.getDataAttributes(target),
+        ...Manipulator.getDataAttributes(this)
+      };
+      const slideIndex = this.getAttribute('data-bs-slide-to');
+
+      if (slideIndex) {
+        config.interval = false;
+      }
+
+      Carousel.carouselInterface(target, config);
+
+      if (slideIndex) {
+        Carousel.getInstance(target).to(slideIndex);
+      }
+
+      event.preventDefault();
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
+  EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
+    const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
+
+    for (let i = 0, len = carousels.length; i < len; i++) {
+      Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]));
+    }
+  });
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Carousel to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Carousel);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): collapse.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$a = 'collapse';
+  const DATA_KEY$9 = 'bs.collapse';
+  const EVENT_KEY$9 = `.${DATA_KEY$9}`;
+  const DATA_API_KEY$5 = '.data-api';
+  const Default$9 = {
+    toggle: true,
+    parent: null
+  };
+  const DefaultType$9 = {
+    toggle: 'boolean',
+    parent: '(null|element)'
+  };
+  const EVENT_SHOW$5 = `show${EVENT_KEY$9}`;
+  const EVENT_SHOWN$5 = `shown${EVENT_KEY$9}`;
+  const EVENT_HIDE$5 = `hide${EVENT_KEY$9}`;
+  const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$9}`;
+  const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$9}${DATA_API_KEY$5}`;
+  const CLASS_NAME_SHOW$7 = 'show';
+  const CLASS_NAME_COLLAPSE = 'collapse';
+  const CLASS_NAME_COLLAPSING = 'collapsing';
+  const CLASS_NAME_COLLAPSED = 'collapsed';
+  const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
+  const WIDTH = 'width';
+  const HEIGHT = 'height';
+  const SELECTOR_ACTIVES = '.show, .collapsing';
+  const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Collapse extends BaseComponent {
+    constructor(element, config) {
+      super(element);
+      this._isTransitioning = false;
+      this._config = this._getConfig(config);
+      this._triggerArray = [];
+      const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
+
+      for (let i = 0, len = toggleList.length; i < len; i++) {
+        const elem = toggleList[i];
+        const selector = getSelectorFromElement(elem);
+        const filterElement = SelectorEngine.find(selector).filter(foundElem => foundElem === this._element);
+
+        if (selector !== null && filterElement.length) {
+          this._selector = selector;
+
+          this._triggerArray.push(elem);
+        }
+      }
+
+      this._initializeChildren();
+
+      if (!this._config.parent) {
+        this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
+      }
+
+      if (this._config.toggle) {
+        this.toggle();
+      }
+    } // Getters
+
+
+    static get Default() {
+      return Default$9;
+    }
+
+    static get NAME() {
+      return NAME$a;
+    } // Public
+
+
+    toggle() {
+      if (this._isShown()) {
+        this.hide();
+      } else {
+        this.show();
+      }
+    }
+
+    show() {
+      if (this._isTransitioning || this._isShown()) {
+        return;
+      }
+
+      let actives = [];
+      let activesData;
+
+      if (this._config.parent) {
+        const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent);
+        actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth
+      }
+
+      const container = SelectorEngine.findOne(this._selector);
+
+      if (actives.length) {
+        const tempActiveData = actives.find(elem => container !== elem);
+        activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null;
+
+        if (activesData && activesData._isTransitioning) {
+          return;
+        }
+      }
+
+      const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$5);
+
+      if (startEvent.defaultPrevented) {
+        return;
+      }
+
+      actives.forEach(elemActive => {
+        if (container !== elemActive) {
+          Collapse.getOrCreateInstance(elemActive, {
+            toggle: false
+          }).hide();
+        }
+
+        if (!activesData) {
+          Data.set(elemActive, DATA_KEY$9, null);
+        }
+      });
+
+      const dimension = this._getDimension();
+
+      this._element.classList.remove(CLASS_NAME_COLLAPSE);
+
+      this._element.classList.add(CLASS_NAME_COLLAPSING);
+
+      this._element.style[dimension] = 0;
+
+      this._addAriaAndCollapsedClass(this._triggerArray, true);
+
+      this._isTransitioning = true;
+
+      const complete = () => {
+        this._isTransitioning = false;
+
+        this._element.classList.remove(CLASS_NAME_COLLAPSING);
+
+        this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
+
+        this._element.style[dimension] = '';
+        EventHandler.trigger(this._element, EVENT_SHOWN$5);
+      };
+
+      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
+      const scrollSize = `scroll${capitalizedDimension}`;
+
+      this._queueCallback(complete, this._element, true);
+
+      this._element.style[dimension] = `${this._element[scrollSize]}px`;
+    }
+
+    hide() {
+      if (this._isTransitioning || !this._isShown()) {
+        return;
+      }
+
+      const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$5);
+
+      if (startEvent.defaultPrevented) {
+        return;
+      }
+
+      const dimension = this._getDimension();
+
+      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
+      reflow(this._element);
+
+      this._element.classList.add(CLASS_NAME_COLLAPSING);
+
+      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
+
+      const triggerArrayLength = this._triggerArray.length;
+
+      for (let i = 0; i < triggerArrayLength; i++) {
+        const trigger = this._triggerArray[i];
+        const elem = getElementFromSelector(trigger);
+
+        if (elem && !this._isShown(elem)) {
+          this._addAriaAndCollapsedClass([trigger], false);
+        }
+      }
+
+      this._isTransitioning = true;
+
+      const complete = () => {
+        this._isTransitioning = false;
+
+        this._element.classList.remove(CLASS_NAME_COLLAPSING);
+
+        this._element.classList.add(CLASS_NAME_COLLAPSE);
+
+        EventHandler.trigger(this._element, EVENT_HIDDEN$5);
+      };
+
+      this._element.style[dimension] = '';
+
+      this._queueCallback(complete, this._element, true);
+    }
+
+    _isShown(element = this._element) {
+      return element.classList.contains(CLASS_NAME_SHOW$7);
+    } // Private
+
+
+    _getConfig(config) {
+      config = { ...Default$9,
+        ...Manipulator.getDataAttributes(this._element),
+        ...config
+      };
+      config.toggle = Boolean(config.toggle); // Coerce string values
+
+      config.parent = getElement(config.parent);
+      typeCheckConfig(NAME$a, config, DefaultType$9);
+      return config;
+    }
+
+    _getDimension() {
+      return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
+    }
+
+    _initializeChildren() {
+      if (!this._config.parent) {
+        return;
+      }
+
+      const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent);
+      SelectorEngine.find(SELECTOR_DATA_TOGGLE$4, this._config.parent).filter(elem => !children.includes(elem)).forEach(element => {
+        const selected = getElementFromSelector(element);
+
+        if (selected) {
+          this._addAriaAndCollapsedClass([element], this._isShown(selected));
+        }
+      });
+    }
+
+    _addAriaAndCollapsedClass(triggerArray, isOpen) {
+      if (!triggerArray.length) {
+        return;
+      }
+
+      triggerArray.forEach(elem => {
+        if (isOpen) {
+          elem.classList.remove(CLASS_NAME_COLLAPSED);
+        } else {
+          elem.classList.add(CLASS_NAME_COLLAPSED);
+        }
+
+        elem.setAttribute('aria-expanded', isOpen);
+      });
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const _config = {};
+
+        if (typeof config === 'string' && /show|hide/.test(config)) {
+          _config.toggle = false;
+        }
+
+        const data = Collapse.getOrCreateInstance(this, _config);
+
+        if (typeof config === 'string') {
+          if (typeof data[config] === 'undefined') {
+            throw new TypeError(`No method named "${config}"`);
+          }
+
+          data[config]();
+        }
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {
+    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
+    if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
+      event.preventDefault();
+    }
+
+    const selector = getSelectorFromElement(this);
+    const selectorElements = SelectorEngine.find(selector);
+    selectorElements.forEach(element => {
+      Collapse.getOrCreateInstance(element, {
+        toggle: false
+      }).toggle();
+    });
+  });
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Collapse to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Collapse);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): dropdown.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$9 = 'dropdown';
+  const DATA_KEY$8 = 'bs.dropdown';
+  const EVENT_KEY$8 = `.${DATA_KEY$8}`;
+  const DATA_API_KEY$4 = '.data-api';
+  const ESCAPE_KEY$2 = 'Escape';
+  const SPACE_KEY = 'Space';
+  const TAB_KEY$1 = 'Tab';
+  const ARROW_UP_KEY = 'ArrowUp';
+  const ARROW_DOWN_KEY = 'ArrowDown';
+  const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
+
+  const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY$2}`);
+  const EVENT_HIDE$4 = `hide${EVENT_KEY$8}`;
+  const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$8}`;
+  const EVENT_SHOW$4 = `show${EVENT_KEY$8}`;
+  const EVENT_SHOWN$4 = `shown${EVENT_KEY$8}`;
+  const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$8}${DATA_API_KEY$4}`;
+  const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$8}${DATA_API_KEY$4}`;
+  const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$8}${DATA_API_KEY$4}`;
+  const CLASS_NAME_SHOW$6 = 'show';
+  const CLASS_NAME_DROPUP = 'dropup';
+  const CLASS_NAME_DROPEND = 'dropend';
+  const CLASS_NAME_DROPSTART = 'dropstart';
+  const CLASS_NAME_NAVBAR = 'navbar';
+  const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]';
+  const SELECTOR_MENU = '.dropdown-menu';
+  const SELECTOR_NAVBAR_NAV = '.navbar-nav';
+  const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
+  const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
+  const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
+  const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
+  const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
+  const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
+  const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
+  const Default$8 = {
+    offset: [0, 2],
+    boundary: 'clippingParents',
+    reference: 'toggle',
+    display: 'dynamic',
+    popperConfig: null,
+    autoClose: true
+  };
+  const DefaultType$8 = {
+    offset: '(array|string|function)',
+    boundary: '(string|element)',
+    reference: '(string|element|object)',
+    display: 'string',
+    popperConfig: '(null|object|function)',
+    autoClose: '(boolean|string)'
+  };
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Dropdown extends BaseComponent {
+    constructor(element, config) {
+      super(element);
+      this._popper = null;
+      this._config = this._getConfig(config);
+      this._menu = this._getMenuElement();
+      this._inNavbar = this._detectNavbar();
+    } // Getters
+
+
+    static get Default() {
+      return Default$8;
+    }
+
+    static get DefaultType() {
+      return DefaultType$8;
+    }
+
+    static get NAME() {
+      return NAME$9;
+    } // Public
+
+
+    toggle() {
+      return this._isShown() ? this.hide() : this.show();
+    }
+
+    show() {
+      if (isDisabled(this._element) || this._isShown(this._menu)) {
+        return;
+      }
+
+      const relatedTarget = {
+        relatedTarget: this._element
+      };
+      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget);
+
+      if (showEvent.defaultPrevented) {
+        return;
+      }
+
+      const parent = Dropdown.getParentFromElement(this._element); // Totally disable Popper for Dropdowns in Navbar
+
+      if (this._inNavbar) {
+        Manipulator.setDataAttribute(this._menu, 'popper', 'none');
+      } else {
+        this._createPopper(parent);
+      } // If this is a touch-enabled device we add extra
+      // empty mouseover listeners to the body's immediate children;
+      // only needed because of broken event delegation on iOS
+      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
+
+
+      if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {
+        [].concat(...document.body.children).forEach(elem => EventHandler.on(elem, 'mouseover', noop));
+      }
+
+      this._element.focus();
+
+      this._element.setAttribute('aria-expanded', true);
+
+      this._menu.classList.add(CLASS_NAME_SHOW$6);
+
+      this._element.classList.add(CLASS_NAME_SHOW$6);
+
+      EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget);
+    }
+
+    hide() {
+      if (isDisabled(this._element) || !this._isShown(this._menu)) {
+        return;
+      }
+
+      const relatedTarget = {
+        relatedTarget: this._element
+      };
+
+      this._completeHide(relatedTarget);
+    }
+
+    dispose() {
+      if (this._popper) {
+        this._popper.destroy();
+      }
+
+      super.dispose();
+    }
+
+    update() {
+      this._inNavbar = this._detectNavbar();
+
+      if (this._popper) {
+        this._popper.update();
+      }
+    } // Private
+
+
+    _completeHide(relatedTarget) {
+      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget);
+
+      if (hideEvent.defaultPrevented) {
+        return;
+      } // If this is a touch-enabled device we remove the extra
+      // empty mouseover listeners we added for iOS support
+
+
+      if ('ontouchstart' in document.documentElement) {
+        [].concat(...document.body.children).forEach(elem => EventHandler.off(elem, 'mouseover', noop));
+      }
+
+      if (this._popper) {
+        this._popper.destroy();
+      }
+
+      this._menu.classList.remove(CLASS_NAME_SHOW$6);
+
+      this._element.classList.remove(CLASS_NAME_SHOW$6);
+
+      this._element.setAttribute('aria-expanded', 'false');
+
+      Manipulator.removeDataAttribute(this._menu, 'popper');
+      EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget);
+    }
+
+    _getConfig(config) {
+      config = { ...this.constructor.Default,
+        ...Manipulator.getDataAttributes(this._element),
+        ...config
+      };
+      typeCheckConfig(NAME$9, config, this.constructor.DefaultType);
+
+      if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
+        // Popper virtual elements require a getBoundingClientRect method
+        throw new TypeError(`${NAME$9.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
+      }
+
+      return config;
+    }
+
+    _createPopper(parent) {
+      if (typeof Popper__namespace === 'undefined') {
+        throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
+      }
+
+      let referenceElement = this._element;
+
+      if (this._config.reference === 'parent') {
+        referenceElement = parent;
+      } else if (isElement(this._config.reference)) {
+        referenceElement = getElement(this._config.reference);
+      } else if (typeof this._config.reference === 'object') {
+        referenceElement = this._config.reference;
+      }
+
+      const popperConfig = this._getPopperConfig();
+
+      const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false);
+      this._popper = Popper__namespace.createPopper(referenceElement, this._menu, popperConfig);
+
+      if (isDisplayStatic) {
+        Manipulator.setDataAttribute(this._menu, 'popper', 'static');
+      }
+    }
+
+    _isShown(element = this._element) {
+      return element.classList.contains(CLASS_NAME_SHOW$6);
+    }
+
+    _getMenuElement() {
+      return SelectorEngine.next(this._element, SELECTOR_MENU)[0];
+    }
+
+    _getPlacement() {
+      const parentDropdown = this._element.parentNode;
+
+      if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
+        return PLACEMENT_RIGHT;
+      }
+
+      if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
+        return PLACEMENT_LEFT;
+      } // We need to trim the value because custom properties can also include spaces
+
+
+      const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
+
+      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
+        return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
+      }
+
+      return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
+    }
+
+    _detectNavbar() {
+      return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null;
+    }
+
+    _getOffset() {
+      const {
+        offset
+      } = this._config;
+
+      if (typeof offset === 'string') {
+        return offset.split(',').map(val => Number.parseInt(val, 10));
+      }
+
+      if (typeof offset === 'function') {
+        return popperData => offset(popperData, this._element);
+      }
+
+      return offset;
+    }
+
+    _getPopperConfig() {
+      const defaultBsPopperConfig = {
+        placement: this._getPlacement(),
+        modifiers: [{
+          name: 'preventOverflow',
+          options: {
+            boundary: this._config.boundary
+          }
+        }, {
+          name: 'offset',
+          options: {
+            offset: this._getOffset()
+          }
+        }]
+      }; // Disable Popper if we have a static display
+
+      if (this._config.display === 'static') {
+        defaultBsPopperConfig.modifiers = [{
+          name: 'applyStyles',
+          enabled: false
+        }];
+      }
+
+      return { ...defaultBsPopperConfig,
+        ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)
+      };
+    }
+
+    _selectMenuItem({
+      key,
+      target
+    }) {
+      const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible);
+
+      if (!items.length) {
+        return;
+      } // if target isn't included in items (e.g. when expanding the dropdown)
+      // allow cycling to get the last item in case key equals ARROW_UP_KEY
+
+
+      getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Dropdown.getOrCreateInstance(this, config);
+
+        if (typeof config !== 'string') {
+          return;
+        }
+
+        if (typeof data[config] === 'undefined') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config]();
+      });
+    }
+
+    static clearMenus(event) {
+      if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1)) {
+        return;
+      }
+
+      const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3);
+
+      for (let i = 0, len = toggles.length; i < len; i++) {
+        const context = Dropdown.getInstance(toggles[i]);
+
+        if (!context || context._config.autoClose === false) {
+          continue;
+        }
+
+        if (!context._isShown()) {
+          continue;
+        }
+
+        const relatedTarget = {
+          relatedTarget: context._element
+        };
+
+        if (event) {
+          const composedPath = event.composedPath();
+          const isMenuTarget = composedPath.includes(context._menu);
+
+          if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
+            continue;
+          } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
+
+
+          if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
+            continue;
+          }
+
+          if (event.type === 'click') {
+            relatedTarget.clickEvent = event;
+          }
+        }
+
+        context._completeHide(relatedTarget);
+      }
+    }
+
+    static getParentFromElement(element) {
+      return getElementFromSelector(element) || element.parentNode;
+    }
+
+    static dataApiKeydownHandler(event) {
+      // If not input/textarea:
+      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
+      // If input/textarea:
+      //  - If space key => not a dropdown command
+      //  - If key is other than escape
+      //    - If key is not up or down => not a dropdown command
+      //    - If trigger inside the menu => not a dropdown command
+      if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY$2 && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {
+        return;
+      }
+
+      const isActive = this.classList.contains(CLASS_NAME_SHOW$6);
+
+      if (!isActive && event.key === ESCAPE_KEY$2) {
+        return;
+      }
+
+      event.preventDefault();
+      event.stopPropagation();
+
+      if (isDisabled(this)) {
+        return;
+      }
+
+      const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0];
+      const instance = Dropdown.getOrCreateInstance(getToggleButton);
+
+      if (event.key === ESCAPE_KEY$2) {
+        instance.hide();
+        return;
+      }
+
+      if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {
+        if (!isActive) {
+          instance.show();
+        }
+
+        instance._selectMenuItem(event);
+
+        return;
+      }
+
+      if (!isActive || event.key === SPACE_KEY) {
+        Dropdown.clearMenus();
+      }
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
+  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
+  EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
+  EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
+  EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
+    event.preventDefault();
+    Dropdown.getOrCreateInstance(this).toggle();
+  });
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Dropdown to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Dropdown);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): util/scrollBar.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
+  const SELECTOR_STICKY_CONTENT = '.sticky-top';
+
+  class ScrollBarHelper {
+    constructor() {
+      this._element = document.body;
+    }
+
+    getWidth() {
+      // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
+      const documentWidth = document.documentElement.clientWidth;
+      return Math.abs(window.innerWidth - documentWidth);
+    }
+
+    hide() {
+      const width = this.getWidth();
+
+      this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width
+
+
+      this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
+
+
+      this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width);
+
+      this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width);
+    }
+
+    _disableOverFlow() {
+      this._saveInitialAttribute(this._element, 'overflow');
+
+      this._element.style.overflow = 'hidden';
+    }
+
+    _setElementAttributes(selector, styleProp, callback) {
+      const scrollbarWidth = this.getWidth();
+
+      const manipulationCallBack = element => {
+        if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
+          return;
+        }
+
+        this._saveInitialAttribute(element, styleProp);
+
+        const calculatedValue = window.getComputedStyle(element)[styleProp];
+        element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;
+      };
+
+      this._applyManipulationCallback(selector, manipulationCallBack);
+    }
+
+    reset() {
+      this._resetElementAttributes(this._element, 'overflow');
+
+      this._resetElementAttributes(this._element, 'paddingRight');
+
+      this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');
+
+      this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');
+    }
+
+    _saveInitialAttribute(element, styleProp) {
+      const actualValue = element.style[styleProp];
+
+      if (actualValue) {
+        Manipulator.setDataAttribute(element, styleProp, actualValue);
+      }
+    }
+
+    _resetElementAttributes(selector, styleProp) {
+      const manipulationCallBack = element => {
+        const value = Manipulator.getDataAttribute(element, styleProp);
+
+        if (typeof value === 'undefined') {
+          element.style.removeProperty(styleProp);
+        } else {
+          Manipulator.removeDataAttribute(element, styleProp);
+          element.style[styleProp] = value;
+        }
+      };
+
+      this._applyManipulationCallback(selector, manipulationCallBack);
+    }
+
+    _applyManipulationCallback(selector, callBack) {
+      if (isElement(selector)) {
+        callBack(selector);
+      } else {
+        SelectorEngine.find(selector, this._element).forEach(callBack);
+      }
+    }
+
+    isOverflowing() {
+      return this.getWidth() > 0;
+    }
+
+  }
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): util/backdrop.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  const Default$7 = {
+    className: 'modal-backdrop',
+    isVisible: true,
+    // if false, we use the backdrop helper without adding any element to the dom
+    isAnimated: false,
+    rootElement: 'body',
+    // give the choice to place backdrop under different elements
+    clickCallback: null
+  };
+  const DefaultType$7 = {
+    className: 'string',
+    isVisible: 'boolean',
+    isAnimated: 'boolean',
+    rootElement: '(element|string)',
+    clickCallback: '(function|null)'
+  };
+  const NAME$8 = 'backdrop';
+  const CLASS_NAME_FADE$4 = 'fade';
+  const CLASS_NAME_SHOW$5 = 'show';
+  const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$8}`;
+
+  class Backdrop {
+    constructor(config) {
+      this._config = this._getConfig(config);
+      this._isAppended = false;
+      this._element = null;
+    }
+
+    show(callback) {
+      if (!this._config.isVisible) {
+        execute(callback);
+        return;
+      }
+
+      this._append();
+
+      if (this._config.isAnimated) {
+        reflow(this._getElement());
+      }
+
+      this._getElement().classList.add(CLASS_NAME_SHOW$5);
+
+      this._emulateAnimation(() => {
+        execute(callback);
+      });
+    }
+
+    hide(callback) {
+      if (!this._config.isVisible) {
+        execute(callback);
+        return;
+      }
+
+      this._getElement().classList.remove(CLASS_NAME_SHOW$5);
+
+      this._emulateAnimation(() => {
+        this.dispose();
+        execute(callback);
+      });
+    } // Private
+
+
+    _getElement() {
+      if (!this._element) {
+        const backdrop = document.createElement('div');
+        backdrop.className = this._config.className;
+
+        if (this._config.isAnimated) {
+          backdrop.classList.add(CLASS_NAME_FADE$4);
+        }
+
+        this._element = backdrop;
+      }
+
+      return this._element;
+    }
+
+    _getConfig(config) {
+      config = { ...Default$7,
+        ...(typeof config === 'object' ? config : {})
+      }; // use getElement() with the default "body" to get a fresh Element on each instantiation
+
+      config.rootElement = getElement(config.rootElement);
+      typeCheckConfig(NAME$8, config, DefaultType$7);
+      return config;
+    }
+
+    _append() {
+      if (this._isAppended) {
+        return;
+      }
+
+      this._config.rootElement.append(this._getElement());
+
+      EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {
+        execute(this._config.clickCallback);
+      });
+      this._isAppended = true;
+    }
+
+    dispose() {
+      if (!this._isAppended) {
+        return;
+      }
+
+      EventHandler.off(this._element, EVENT_MOUSEDOWN);
+
+      this._element.remove();
+
+      this._isAppended = false;
+    }
+
+    _emulateAnimation(callback) {
+      executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
+    }
+
+  }
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): util/focustrap.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  const Default$6 = {
+    trapElement: null,
+    // The element to trap focus inside of
+    autofocus: true
+  };
+  const DefaultType$6 = {
+    trapElement: 'element',
+    autofocus: 'boolean'
+  };
+  const NAME$7 = 'focustrap';
+  const DATA_KEY$7 = 'bs.focustrap';
+  const EVENT_KEY$7 = `.${DATA_KEY$7}`;
+  const EVENT_FOCUSIN$1 = `focusin${EVENT_KEY$7}`;
+  const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$7}`;
+  const TAB_KEY = 'Tab';
+  const TAB_NAV_FORWARD = 'forward';
+  const TAB_NAV_BACKWARD = 'backward';
+
+  class FocusTrap {
+    constructor(config) {
+      this._config = this._getConfig(config);
+      this._isActive = false;
+      this._lastTabNavDirection = null;
+    }
+
+    activate() {
+      const {
+        trapElement,
+        autofocus
+      } = this._config;
+
+      if (this._isActive) {
+        return;
+      }
+
+      if (autofocus) {
+        trapElement.focus();
+      }
+
+      EventHandler.off(document, EVENT_KEY$7); // guard against infinite focus loop
+
+      EventHandler.on(document, EVENT_FOCUSIN$1, event => this._handleFocusin(event));
+      EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
+      this._isActive = true;
+    }
+
+    deactivate() {
+      if (!this._isActive) {
+        return;
+      }
+
+      this._isActive = false;
+      EventHandler.off(document, EVENT_KEY$7);
+    } // Private
+
+
+    _handleFocusin(event) {
+      const {
+        target
+      } = event;
+      const {
+        trapElement
+      } = this._config;
+
+      if (target === document || target === trapElement || trapElement.contains(target)) {
+        return;
+      }
+
+      const elements = SelectorEngine.focusableChildren(trapElement);
+
+      if (elements.length === 0) {
+        trapElement.focus();
+      } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
+        elements[elements.length - 1].focus();
+      } else {
+        elements[0].focus();
+      }
+    }
+
+    _handleKeydown(event) {
+      if (event.key !== TAB_KEY) {
+        return;
+      }
+
+      this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
+    }
+
+    _getConfig(config) {
+      config = { ...Default$6,
+        ...(typeof config === 'object' ? config : {})
+      };
+      typeCheckConfig(NAME$7, config, DefaultType$6);
+      return config;
+    }
+
+  }
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): modal.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$6 = 'modal';
+  const DATA_KEY$6 = 'bs.modal';
+  const EVENT_KEY$6 = `.${DATA_KEY$6}`;
+  const DATA_API_KEY$3 = '.data-api';
+  const ESCAPE_KEY$1 = 'Escape';
+  const Default$5 = {
+    backdrop: true,
+    keyboard: true,
+    focus: true
+  };
+  const DefaultType$5 = {
+    backdrop: '(boolean|string)',
+    keyboard: 'boolean',
+    focus: 'boolean'
+  };
+  const EVENT_HIDE$3 = `hide${EVENT_KEY$6}`;
+  const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$6}`;
+  const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$6}`;
+  const EVENT_SHOW$3 = `show${EVENT_KEY$6}`;
+  const EVENT_SHOWN$3 = `shown${EVENT_KEY$6}`;
+  const EVENT_RESIZE = `resize${EVENT_KEY$6}`;
+  const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$6}`;
+  const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$6}`;
+  const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY$6}`;
+  const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$6}`;
+  const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
+  const CLASS_NAME_OPEN = 'modal-open';
+  const CLASS_NAME_FADE$3 = 'fade';
+  const CLASS_NAME_SHOW$4 = 'show';
+  const CLASS_NAME_STATIC = 'modal-static';
+  const SELECTOR_DIALOG = '.modal-dialog';
+  const SELECTOR_MODAL_BODY = '.modal-body';
+  const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Modal extends BaseComponent {
+    constructor(element, config) {
+      super(element);
+      this._config = this._getConfig(config);
+      this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
+      this._backdrop = this._initializeBackDrop();
+      this._focustrap = this._initializeFocusTrap();
+      this._isShown = false;
+      this._ignoreBackdropClick = false;
+      this._isTransitioning = false;
+      this._scrollBar = new ScrollBarHelper();
+    } // Getters
+
+
+    static get Default() {
+      return Default$5;
+    }
+
+    static get NAME() {
+      return NAME$6;
+    } // Public
+
+
+    toggle(relatedTarget) {
+      return this._isShown ? this.hide() : this.show(relatedTarget);
+    }
+
+    show(relatedTarget) {
+      if (this._isShown || this._isTransitioning) {
+        return;
+      }
+
+      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
+        relatedTarget
+      });
+
+      if (showEvent.defaultPrevented) {
+        return;
+      }
+
+      this._isShown = true;
+
+      if (this._isAnimated()) {
+        this._isTransitioning = true;
+      }
+
+      this._scrollBar.hide();
+
+      document.body.classList.add(CLASS_NAME_OPEN);
+
+      this._adjustDialog();
+
+      this._setEscapeEvent();
+
+      this._setResizeEvent();
+
+      EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {
+        EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {
+          if (event.target === this._element) {
+            this._ignoreBackdropClick = true;
+          }
+        });
+      });
+
+      this._showBackdrop(() => this._showElement(relatedTarget));
+    }
+
+    hide() {
+      if (!this._isShown || this._isTransitioning) {
+        return;
+      }
+
+      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
+
+      if (hideEvent.defaultPrevented) {
+        return;
+      }
+
+      this._isShown = false;
+
+      const isAnimated = this._isAnimated();
+
+      if (isAnimated) {
+        this._isTransitioning = true;
+      }
+
+      this._setEscapeEvent();
+
+      this._setResizeEvent();
+
+      this._focustrap.deactivate();
+
+      this._element.classList.remove(CLASS_NAME_SHOW$4);
+
+      EventHandler.off(this._element, EVENT_CLICK_DISMISS);
+      EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
+
+      this._queueCallback(() => this._hideModal(), this._element, isAnimated);
+    }
+
+    dispose() {
+      [window, this._dialog].forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY$6));
+
+      this._backdrop.dispose();
+
+      this._focustrap.deactivate();
+
+      super.dispose();
+    }
+
+    handleUpdate() {
+      this._adjustDialog();
+    } // Private
+
+
+    _initializeBackDrop() {
+      return new Backdrop({
+        isVisible: Boolean(this._config.backdrop),
+        // 'static' option will be translated to true, and booleans will keep their value
+        isAnimated: this._isAnimated()
+      });
+    }
+
+    _initializeFocusTrap() {
+      return new FocusTrap({
+        trapElement: this._element
+      });
+    }
+
+    _getConfig(config) {
+      config = { ...Default$5,
+        ...Manipulator.getDataAttributes(this._element),
+        ...(typeof config === 'object' ? config : {})
+      };
+      typeCheckConfig(NAME$6, config, DefaultType$5);
+      return config;
+    }
+
+    _showElement(relatedTarget) {
+      const isAnimated = this._isAnimated();
+
+      const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
+
+      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
+        // Don't move modal's DOM position
+        document.body.append(this._element);
+      }
+
+      this._element.style.display = 'block';
+
+      this._element.removeAttribute('aria-hidden');
+
+      this._element.setAttribute('aria-modal', true);
+
+      this._element.setAttribute('role', 'dialog');
+
+      this._element.scrollTop = 0;
+
+      if (modalBody) {
+        modalBody.scrollTop = 0;
+      }
+
+      if (isAnimated) {
+        reflow(this._element);
+      }
+
+      this._element.classList.add(CLASS_NAME_SHOW$4);
+
+      const transitionComplete = () => {
+        if (this._config.focus) {
+          this._focustrap.activate();
+        }
+
+        this._isTransitioning = false;
+        EventHandler.trigger(this._element, EVENT_SHOWN$3, {
+          relatedTarget
+        });
+      };
+
+      this._queueCallback(transitionComplete, this._dialog, isAnimated);
+    }
+
+    _setEscapeEvent() {
+      if (this._isShown) {
+        EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {
+          if (this._config.keyboard && event.key === ESCAPE_KEY$1) {
+            event.preventDefault();
+            this.hide();
+          } else if (!this._config.keyboard && event.key === ESCAPE_KEY$1) {
+            this._triggerBackdropTransition();
+          }
+        });
+      } else {
+        EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS$1);
+      }
+    }
+
+    _setResizeEvent() {
+      if (this._isShown) {
+        EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog());
+      } else {
+        EventHandler.off(window, EVENT_RESIZE);
+      }
+    }
+
+    _hideModal() {
+      this._element.style.display = 'none';
+
+      this._element.setAttribute('aria-hidden', true);
+
+      this._element.removeAttribute('aria-modal');
+
+      this._element.removeAttribute('role');
+
+      this._isTransitioning = false;
+
+      this._backdrop.hide(() => {
+        document.body.classList.remove(CLASS_NAME_OPEN);
+
+        this._resetAdjustments();
+
+        this._scrollBar.reset();
+
+        EventHandler.trigger(this._element, EVENT_HIDDEN$3);
+      });
+    }
+
+    _showBackdrop(callback) {
+      EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {
+        if (this._ignoreBackdropClick) {
+          this._ignoreBackdropClick = false;
+          return;
+        }
+
+        if (event.target !== event.currentTarget) {
+          return;
+        }
+
+        if (this._config.backdrop === true) {
+          this.hide();
+        } else if (this._config.backdrop === 'static') {
+          this._triggerBackdropTransition();
+        }
+      });
+
+      this._backdrop.show(callback);
+    }
+
+    _isAnimated() {
+      return this._element.classList.contains(CLASS_NAME_FADE$3);
+    }
+
+    _triggerBackdropTransition() {
+      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
+
+      if (hideEvent.defaultPrevented) {
+        return;
+      }
+
+      const {
+        classList,
+        scrollHeight,
+        style
+      } = this._element;
+      const isModalOverflowing = scrollHeight > document.documentElement.clientHeight; // return if the following background transition hasn't yet completed
+
+      if (!isModalOverflowing && style.overflowY === 'hidden' || classList.contains(CLASS_NAME_STATIC)) {
+        return;
+      }
+
+      if (!isModalOverflowing) {
+        style.overflowY = 'hidden';
+      }
+
+      classList.add(CLASS_NAME_STATIC);
+
+      this._queueCallback(() => {
+        classList.remove(CLASS_NAME_STATIC);
+
+        if (!isModalOverflowing) {
+          this._queueCallback(() => {
+            style.overflowY = '';
+          }, this._dialog);
+        }
+      }, this._dialog);
+
+      this._element.focus();
+    } // ----------------------------------------------------------------------
+    // the following methods are used to handle overflowing modals
+    // ----------------------------------------------------------------------
+
+
+    _adjustDialog() {
+      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
+
+      const scrollbarWidth = this._scrollBar.getWidth();
+
+      const isBodyOverflowing = scrollbarWidth > 0;
+
+      if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) {
+        this._element.style.paddingLeft = `${scrollbarWidth}px`;
+      }
+
+      if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) {
+        this._element.style.paddingRight = `${scrollbarWidth}px`;
+      }
+    }
+
+    _resetAdjustments() {
+      this._element.style.paddingLeft = '';
+      this._element.style.paddingRight = '';
+    } // Static
+
+
+    static jQueryInterface(config, relatedTarget) {
+      return this.each(function () {
+        const data = Modal.getOrCreateInstance(this, config);
+
+        if (typeof config !== 'string') {
+          return;
+        }
+
+        if (typeof data[config] === 'undefined') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config](relatedTarget);
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
+    const target = getElementFromSelector(this);
+
+    if (['A', 'AREA'].includes(this.tagName)) {
+      event.preventDefault();
+    }
+
+    EventHandler.one(target, EVENT_SHOW$3, showEvent => {
+      if (showEvent.defaultPrevented) {
+        // only register focus restorer if modal will actually get shown
+        return;
+      }
+
+      EventHandler.one(target, EVENT_HIDDEN$3, () => {
+        if (isVisible(this)) {
+          this.focus();
+        }
+      });
+    });
+    const data = Modal.getOrCreateInstance(target);
+    data.toggle(this);
+  });
+  enableDismissTrigger(Modal);
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Modal to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Modal);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): offcanvas.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$5 = 'offcanvas';
+  const DATA_KEY$5 = 'bs.offcanvas';
+  const EVENT_KEY$5 = `.${DATA_KEY$5}`;
+  const DATA_API_KEY$2 = '.data-api';
+  const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$5}${DATA_API_KEY$2}`;
+  const ESCAPE_KEY = 'Escape';
+  const Default$4 = {
+    backdrop: true,
+    keyboard: true,
+    scroll: false
+  };
+  const DefaultType$4 = {
+    backdrop: 'boolean',
+    keyboard: 'boolean',
+    scroll: 'boolean'
+  };
+  const CLASS_NAME_SHOW$3 = 'show';
+  const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
+  const OPEN_SELECTOR = '.offcanvas.show';
+  const EVENT_SHOW$2 = `show${EVENT_KEY$5}`;
+  const EVENT_SHOWN$2 = `shown${EVENT_KEY$5}`;
+  const EVENT_HIDE$2 = `hide${EVENT_KEY$5}`;
+  const EVENT_HIDDEN$2 = `hidden${EVENT_KEY$5}`;
+  const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$5}${DATA_API_KEY$2}`;
+  const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$5}`;
+  const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Offcanvas extends BaseComponent {
+    constructor(element, config) {
+      super(element);
+      this._config = this._getConfig(config);
+      this._isShown = false;
+      this._backdrop = this._initializeBackDrop();
+      this._focustrap = this._initializeFocusTrap();
+
+      this._addEventListeners();
+    } // Getters
+
+
+    static get NAME() {
+      return NAME$5;
+    }
+
+    static get Default() {
+      return Default$4;
+    } // Public
+
+
+    toggle(relatedTarget) {
+      return this._isShown ? this.hide() : this.show(relatedTarget);
+    }
+
+    show(relatedTarget) {
+      if (this._isShown) {
+        return;
+      }
+
+      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {
+        relatedTarget
+      });
+
+      if (showEvent.defaultPrevented) {
+        return;
+      }
+
+      this._isShown = true;
+      this._element.style.visibility = 'visible';
+
+      this._backdrop.show();
+
+      if (!this._config.scroll) {
+        new ScrollBarHelper().hide();
+      }
+
+      this._element.removeAttribute('aria-hidden');
+
+      this._element.setAttribute('aria-modal', true);
+
+      this._element.setAttribute('role', 'dialog');
+
+      this._element.classList.add(CLASS_NAME_SHOW$3);
+
+      const completeCallBack = () => {
+        if (!this._config.scroll) {
+          this._focustrap.activate();
+        }
+
+        EventHandler.trigger(this._element, EVENT_SHOWN$2, {
+          relatedTarget
+        });
+      };
+
+      this._queueCallback(completeCallBack, this._element, true);
+    }
+
+    hide() {
+      if (!this._isShown) {
+        return;
+      }
+
+      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);
+
+      if (hideEvent.defaultPrevented) {
+        return;
+      }
+
+      this._focustrap.deactivate();
+
+      this._element.blur();
+
+      this._isShown = false;
+
+      this._element.classList.remove(CLASS_NAME_SHOW$3);
+
+      this._backdrop.hide();
+
+      const completeCallback = () => {
+        this._element.setAttribute('aria-hidden', true);
+
+        this._element.removeAttribute('aria-modal');
+
+        this._element.removeAttribute('role');
+
+        this._element.style.visibility = 'hidden';
+
+        if (!this._config.scroll) {
+          new ScrollBarHelper().reset();
+        }
+
+        EventHandler.trigger(this._element, EVENT_HIDDEN$2);
+      };
+
+      this._queueCallback(completeCallback, this._element, true);
+    }
+
+    dispose() {
+      this._backdrop.dispose();
+
+      this._focustrap.deactivate();
+
+      super.dispose();
+    } // Private
+
+
+    _getConfig(config) {
+      config = { ...Default$4,
+        ...Manipulator.getDataAttributes(this._element),
+        ...(typeof config === 'object' ? config : {})
+      };
+      typeCheckConfig(NAME$5, config, DefaultType$4);
+      return config;
+    }
+
+    _initializeBackDrop() {
+      return new Backdrop({
+        className: CLASS_NAME_BACKDROP,
+        isVisible: this._config.backdrop,
+        isAnimated: true,
+        rootElement: this._element.parentNode,
+        clickCallback: () => this.hide()
+      });
+    }
+
+    _initializeFocusTrap() {
+      return new FocusTrap({
+        trapElement: this._element
+      });
+    }
+
+    _addEventListeners() {
+      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
+        if (this._config.keyboard && event.key === ESCAPE_KEY) {
+          this.hide();
+        }
+      });
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Offcanvas.getOrCreateInstance(this, config);
+
+        if (typeof config !== 'string') {
+          return;
+        }
+
+        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config](this);
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
+    const target = getElementFromSelector(this);
+
+    if (['A', 'AREA'].includes(this.tagName)) {
+      event.preventDefault();
+    }
+
+    if (isDisabled(this)) {
+      return;
+    }
+
+    EventHandler.one(target, EVENT_HIDDEN$2, () => {
+      // focus on trigger when it is closed
+      if (isVisible(this)) {
+        this.focus();
+      }
+    }); // avoid conflict when clicking a toggler of an offcanvas, while another is open
+
+    const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
+
+    if (allReadyOpen && allReadyOpen !== target) {
+      Offcanvas.getInstance(allReadyOpen).hide();
+    }
+
+    const data = Offcanvas.getOrCreateInstance(target);
+    data.toggle(this);
+  });
+  EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show()));
+  enableDismissTrigger(Offcanvas);
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   */
+
+  defineJQueryPlugin(Offcanvas);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): util/sanitizer.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  const uriAttrs = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
+  const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
+  /**
+   * A pattern that recognizes a commonly useful subset of URLs that are safe.
+   *
+   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
+   */
+
+  const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i;
+  /**
+   * A pattern that matches safe data URLs. Only matches image, video and audio types.
+   *
+   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
+   */
+
+  const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
+
+  const allowedAttribute = (attr, allowedAttributeList) => {
+    const attrName = attr.nodeName.toLowerCase();
+
+    if (allowedAttributeList.includes(attrName)) {
+      if (uriAttrs.has(attrName)) {
+        return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));
+      }
+
+      return true;
+    }
+
+    const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp); // Check if a regular expression validates the attribute.
+
+    for (let i = 0, len = regExp.length; i < len; i++) {
+      if (regExp[i].test(attrName)) {
+        return true;
+      }
+    }
+
+    return false;
+  };
+
+  const DefaultAllowlist = {
+    // Global attributes allowed on any supplied element below.
+    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
+    a: ['target', 'href', 'title', 'rel'],
+    area: [],
+    b: [],
+    br: [],
+    col: [],
+    code: [],
+    div: [],
+    em: [],
+    hr: [],
+    h1: [],
+    h2: [],
+    h3: [],
+    h4: [],
+    h5: [],
+    h6: [],
+    i: [],
+    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
+    li: [],
+    ol: [],
+    p: [],
+    pre: [],
+    s: [],
+    small: [],
+    span: [],
+    sub: [],
+    sup: [],
+    strong: [],
+    u: [],
+    ul: []
+  };
+  function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
+    if (!unsafeHtml.length) {
+      return unsafeHtml;
+    }
+
+    if (sanitizeFn && typeof sanitizeFn === 'function') {
+      return sanitizeFn(unsafeHtml);
+    }
+
+    const domParser = new window.DOMParser();
+    const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
+    const allowlistKeys = Object.keys(allowList);
+    const elements = [].concat(...createdDocument.body.querySelectorAll('*'));
+
+    for (let i = 0, len = elements.length; i < len; i++) {
+      const el = elements[i];
+      const elName = el.nodeName.toLowerCase();
+
+      if (!allowlistKeys.includes(elName)) {
+        el.remove();
+        continue;
+      }
+
+      const attributeList = [].concat(...el.attributes);
+      const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []);
+      attributeList.forEach(attr => {
+        if (!allowedAttribute(attr, allowedAttributes)) {
+          el.removeAttribute(attr.nodeName);
+        }
+      });
+    }
+
+    return createdDocument.body.innerHTML;
+  }
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): tooltip.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$4 = 'tooltip';
+  const DATA_KEY$4 = 'bs.tooltip';
+  const EVENT_KEY$4 = `.${DATA_KEY$4}`;
+  const CLASS_PREFIX$1 = 'bs-tooltip';
+  const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
+  const DefaultType$3 = {
+    animation: 'boolean',
+    template: 'string',
+    title: '(string|element|function)',
+    trigger: 'string',
+    delay: '(number|object)',
+    html: 'boolean',
+    selector: '(string|boolean)',
+    placement: '(string|function)',
+    offset: '(array|string|function)',
+    container: '(string|element|boolean)',
+    fallbackPlacements: 'array',
+    boundary: '(string|element)',
+    customClass: '(string|function)',
+    sanitize: 'boolean',
+    sanitizeFn: '(null|function)',
+    allowList: 'object',
+    popperConfig: '(null|object|function)'
+  };
+  const AttachmentMap = {
+    AUTO: 'auto',
+    TOP: 'top',
+    RIGHT: isRTL() ? 'left' : 'right',
+    BOTTOM: 'bottom',
+    LEFT: isRTL() ? 'right' : 'left'
+  };
+  const Default$3 = {
+    animation: true,
+    template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
+    trigger: 'hover focus',
+    title: '',
+    delay: 0,
+    html: false,
+    selector: false,
+    placement: 'top',
+    offset: [0, 0],
+    container: false,
+    fallbackPlacements: ['top', 'right', 'bottom', 'left'],
+    boundary: 'clippingParents',
+    customClass: '',
+    sanitize: true,
+    sanitizeFn: null,
+    allowList: DefaultAllowlist,
+    popperConfig: null
+  };
+  const Event$2 = {
+    HIDE: `hide${EVENT_KEY$4}`,
+    HIDDEN: `hidden${EVENT_KEY$4}`,
+    SHOW: `show${EVENT_KEY$4}`,
+    SHOWN: `shown${EVENT_KEY$4}`,
+    INSERTED: `inserted${EVENT_KEY$4}`,
+    CLICK: `click${EVENT_KEY$4}`,
+    FOCUSIN: `focusin${EVENT_KEY$4}`,
+    FOCUSOUT: `focusout${EVENT_KEY$4}`,
+    MOUSEENTER: `mouseenter${EVENT_KEY$4}`,
+    MOUSELEAVE: `mouseleave${EVENT_KEY$4}`
+  };
+  const CLASS_NAME_FADE$2 = 'fade';
+  const CLASS_NAME_MODAL = 'modal';
+  const CLASS_NAME_SHOW$2 = 'show';
+  const HOVER_STATE_SHOW = 'show';
+  const HOVER_STATE_OUT = 'out';
+  const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
+  const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
+  const EVENT_MODAL_HIDE = 'hide.bs.modal';
+  const TRIGGER_HOVER = 'hover';
+  const TRIGGER_FOCUS = 'focus';
+  const TRIGGER_CLICK = 'click';
+  const TRIGGER_MANUAL = 'manual';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Tooltip extends BaseComponent {
+    constructor(element, config) {
+      if (typeof Popper__namespace === 'undefined') {
+        throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
+      }
+
+      super(element); // private
+
+      this._isEnabled = true;
+      this._timeout = 0;
+      this._hoverState = '';
+      this._activeTrigger = {};
+      this._popper = null; // Protected
+
+      this._config = this._getConfig(config);
+      this.tip = null;
+
+      this._setListeners();
+    } // Getters
+
+
+    static get Default() {
+      return Default$3;
+    }
+
+    static get NAME() {
+      return NAME$4;
+    }
+
+    static get Event() {
+      return Event$2;
+    }
+
+    static get DefaultType() {
+      return DefaultType$3;
+    } // Public
+
+
+    enable() {
+      this._isEnabled = true;
+    }
+
+    disable() {
+      this._isEnabled = false;
+    }
+
+    toggleEnabled() {
+      this._isEnabled = !this._isEnabled;
+    }
+
+    toggle(event) {
+      if (!this._isEnabled) {
+        return;
+      }
+
+      if (event) {
+        const context = this._initializeOnDelegatedTarget(event);
+
+        context._activeTrigger.click = !context._activeTrigger.click;
+
+        if (context._isWithActiveTrigger()) {
+          context._enter(null, context);
+        } else {
+          context._leave(null, context);
+        }
+      } else {
+        if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$2)) {
+          this._leave(null, this);
+
+          return;
+        }
+
+        this._enter(null, this);
+      }
+    }
+
+    dispose() {
+      clearTimeout(this._timeout);
+      EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
+
+      if (this.tip) {
+        this.tip.remove();
+      }
+
+      if (this._popper) {
+        this._popper.destroy();
+      }
+
+      super.dispose();
+    }
+
+    show() {
+      if (this._element.style.display === 'none') {
+        throw new Error('Please use show on visible elements');
+      }
+
+      if (!(this.isWithContent() && this._isEnabled)) {
+        return;
+      }
+
+      const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW);
+      const shadowRoot = findShadowRoot(this._element);
+      const isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element);
+
+      if (showEvent.defaultPrevented || !isInTheDom) {
+        return;
+      }
+
+      const tip = this.getTipElement();
+      const tipId = getUID(this.constructor.NAME);
+      tip.setAttribute('id', tipId);
+
+      this._element.setAttribute('aria-describedby', tipId);
+
+      if (this._config.animation) {
+        tip.classList.add(CLASS_NAME_FADE$2);
+      }
+
+      const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;
+
+      const attachment = this._getAttachment(placement);
+
+      this._addAttachmentClass(attachment);
+
+      const {
+        container
+      } = this._config;
+      Data.set(tip, this.constructor.DATA_KEY, this);
+
+      if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
+        container.append(tip);
+        EventHandler.trigger(this._element, this.constructor.Event.INSERTED);
+      }
+
+      if (this._popper) {
+        this._popper.update();
+      } else {
+        this._popper = Popper__namespace.createPopper(this._element, tip, this._getPopperConfig(attachment));
+      }
+
+      tip.classList.add(CLASS_NAME_SHOW$2);
+
+      const customClass = this._resolvePossibleFunction(this._config.customClass);
+
+      if (customClass) {
+        tip.classList.add(...customClass.split(' '));
+      } // If this is a touch-enabled device we add extra
+      // empty mouseover listeners to the body's immediate children;
+      // only needed because of broken event delegation on iOS
+      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
+
+
+      if ('ontouchstart' in document.documentElement) {
+        [].concat(...document.body.children).forEach(element => {
+          EventHandler.on(element, 'mouseover', noop);
+        });
+      }
+
+      const complete = () => {
+        const prevHoverState = this._hoverState;
+        this._hoverState = null;
+        EventHandler.trigger(this._element, this.constructor.Event.SHOWN);
+
+        if (prevHoverState === HOVER_STATE_OUT) {
+          this._leave(null, this);
+        }
+      };
+
+      const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);
+
+      this._queueCallback(complete, this.tip, isAnimated);
+    }
+
+    hide() {
+      if (!this._popper) {
+        return;
+      }
+
+      const tip = this.getTipElement();
+
+      const complete = () => {
+        if (this._isWithActiveTrigger()) {
+          return;
+        }
+
+        if (this._hoverState !== HOVER_STATE_SHOW) {
+          tip.remove();
+        }
+
+        this._cleanTipClass();
+
+        this._element.removeAttribute('aria-describedby');
+
+        EventHandler.trigger(this._element, this.constructor.Event.HIDDEN);
+
+        if (this._popper) {
+          this._popper.destroy();
+
+          this._popper = null;
+        }
+      };
+
+      const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE);
+
+      if (hideEvent.defaultPrevented) {
+        return;
+      }
+
+      tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra
+      // empty mouseover listeners we added for iOS support
+
+      if ('ontouchstart' in document.documentElement) {
+        [].concat(...document.body.children).forEach(element => EventHandler.off(element, 'mouseover', noop));
+      }
+
+      this._activeTrigger[TRIGGER_CLICK] = false;
+      this._activeTrigger[TRIGGER_FOCUS] = false;
+      this._activeTrigger[TRIGGER_HOVER] = false;
+      const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);
+
+      this._queueCallback(complete, this.tip, isAnimated);
+
+      this._hoverState = '';
+    }
+
+    update() {
+      if (this._popper !== null) {
+        this._popper.update();
+      }
+    } // Protected
+
+
+    isWithContent() {
+      return Boolean(this.getTitle());
+    }
+
+    getTipElement() {
+      if (this.tip) {
+        return this.tip;
+      }
+
+      const element = document.createElement('div');
+      element.innerHTML = this._config.template;
+      const tip = element.children[0];
+      this.setContent(tip);
+      tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
+      this.tip = tip;
+      return this.tip;
+    }
+
+    setContent(tip) {
+      this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER);
+    }
+
+    _sanitizeAndSetContent(template, content, selector) {
+      const templateElement = SelectorEngine.findOne(selector, template);
+
+      if (!content && templateElement) {
+        templateElement.remove();
+        return;
+      } // we use append for html objects to maintain js events
+
+
+      this.setElementContent(templateElement, content);
+    }
+
+    setElementContent(element, content) {
+      if (element === null) {
+        return;
+      }
+
+      if (isElement(content)) {
+        content = getElement(content); // content is a DOM node or a jQuery
+
+        if (this._config.html) {
+          if (content.parentNode !== element) {
+            element.innerHTML = '';
+            element.append(content);
+          }
+        } else {
+          element.textContent = content.textContent;
+        }
+
+        return;
+      }
+
+      if (this._config.html) {
+        if (this._config.sanitize) {
+          content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn);
+        }
+
+        element.innerHTML = content;
+      } else {
+        element.textContent = content;
+      }
+    }
+
+    getTitle() {
+      const title = this._element.getAttribute('data-bs-original-title') || this._config.title;
+
+      return this._resolvePossibleFunction(title);
+    }
+
+    updateAttachment(attachment) {
+      if (attachment === 'right') {
+        return 'end';
+      }
+
+      if (attachment === 'left') {
+        return 'start';
+      }
+
+      return attachment;
+    } // Private
+
+
+    _initializeOnDelegatedTarget(event, context) {
+      return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
+    }
+
+    _getOffset() {
+      const {
+        offset
+      } = this._config;
+
+      if (typeof offset === 'string') {
+        return offset.split(',').map(val => Number.parseInt(val, 10));
+      }
+
+      if (typeof offset === 'function') {
+        return popperData => offset(popperData, this._element);
+      }
+
+      return offset;
+    }
+
+    _resolvePossibleFunction(content) {
+      return typeof content === 'function' ? content.call(this._element) : content;
+    }
+
+    _getPopperConfig(attachment) {
+      const defaultBsPopperConfig = {
+        placement: attachment,
+        modifiers: [{
+          name: 'flip',
+          options: {
+            fallbackPlacements: this._config.fallbackPlacements
+          }
+        }, {
+          name: 'offset',
+          options: {
+            offset: this._getOffset()
+          }
+        }, {
+          name: 'preventOverflow',
+          options: {
+            boundary: this._config.boundary
+          }
+        }, {
+          name: 'arrow',
+          options: {
+            element: `.${this.constructor.NAME}-arrow`
+          }
+        }, {
+          name: 'onChange',
+          enabled: true,
+          phase: 'afterWrite',
+          fn: data => this._handlePopperPlacementChange(data)
+        }],
+        onFirstUpdate: data => {
+          if (data.options.placement !== data.placement) {
+            this._handlePopperPlacementChange(data);
+          }
+        }
+      };
+      return { ...defaultBsPopperConfig,
+        ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)
+      };
+    }
+
+    _addAttachmentClass(attachment) {
+      this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`);
+    }
+
+    _getAttachment(placement) {
+      return AttachmentMap[placement.toUpperCase()];
+    }
+
+    _setListeners() {
+      const triggers = this._config.trigger.split(' ');
+
+      triggers.forEach(trigger => {
+        if (trigger === 'click') {
+          EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event));
+        } else if (trigger !== TRIGGER_MANUAL) {
+          const eventIn = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN;
+          const eventOut = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT;
+          EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event));
+          EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event));
+        }
+      });
+
+      this._hideModalHandler = () => {
+        if (this._element) {
+          this.hide();
+        }
+      };
+
+      EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
+
+      if (this._config.selector) {
+        this._config = { ...this._config,
+          trigger: 'manual',
+          selector: ''
+        };
+      } else {
+        this._fixTitle();
+      }
+    }
+
+    _fixTitle() {
+      const title = this._element.getAttribute('title');
+
+      const originalTitleType = typeof this._element.getAttribute('data-bs-original-title');
+
+      if (title || originalTitleType !== 'string') {
+        this._element.setAttribute('data-bs-original-title', title || '');
+
+        if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {
+          this._element.setAttribute('aria-label', title);
+        }
+
+        this._element.setAttribute('title', '');
+      }
+    }
+
+    _enter(event, context) {
+      context = this._initializeOnDelegatedTarget(event, context);
+
+      if (event) {
+        context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
+      }
+
+      if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$2) || context._hoverState === HOVER_STATE_SHOW) {
+        context._hoverState = HOVER_STATE_SHOW;
+        return;
+      }
+
+      clearTimeout(context._timeout);
+      context._hoverState = HOVER_STATE_SHOW;
+
+      if (!context._config.delay || !context._config.delay.show) {
+        context.show();
+        return;
+      }
+
+      context._timeout = setTimeout(() => {
+        if (context._hoverState === HOVER_STATE_SHOW) {
+          context.show();
+        }
+      }, context._config.delay.show);
+    }
+
+    _leave(event, context) {
+      context = this._initializeOnDelegatedTarget(event, context);
+
+      if (event) {
+        context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
+      }
+
+      if (context._isWithActiveTrigger()) {
+        return;
+      }
+
+      clearTimeout(context._timeout);
+      context._hoverState = HOVER_STATE_OUT;
+
+      if (!context._config.delay || !context._config.delay.hide) {
+        context.hide();
+        return;
+      }
+
+      context._timeout = setTimeout(() => {
+        if (context._hoverState === HOVER_STATE_OUT) {
+          context.hide();
+        }
+      }, context._config.delay.hide);
+    }
+
+    _isWithActiveTrigger() {
+      for (const trigger in this._activeTrigger) {
+        if (this._activeTrigger[trigger]) {
+          return true;
+        }
+      }
+
+      return false;
+    }
+
+    _getConfig(config) {
+      const dataAttributes = Manipulator.getDataAttributes(this._element);
+      Object.keys(dataAttributes).forEach(dataAttr => {
+        if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {
+          delete dataAttributes[dataAttr];
+        }
+      });
+      config = { ...this.constructor.Default,
+        ...dataAttributes,
+        ...(typeof config === 'object' && config ? config : {})
+      };
+      config.container = config.container === false ? document.body : getElement(config.container);
+
+      if (typeof config.delay === 'number') {
+        config.delay = {
+          show: config.delay,
+          hide: config.delay
+        };
+      }
+
+      if (typeof config.title === 'number') {
+        config.title = config.title.toString();
+      }
+
+      if (typeof config.content === 'number') {
+        config.content = config.content.toString();
+      }
+
+      typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
+
+      if (config.sanitize) {
+        config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn);
+      }
+
+      return config;
+    }
+
+    _getDelegateConfig() {
+      const config = {};
+
+      for (const key in this._config) {
+        if (this.constructor.Default[key] !== this._config[key]) {
+          config[key] = this._config[key];
+        }
+      } // In the future can be replaced with:
+      // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
+      // `Object.fromEntries(keysWithDifferentValues)`
+
+
+      return config;
+    }
+
+    _cleanTipClass() {
+      const tip = this.getTipElement();
+      const basicClassPrefixRegex = new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`, 'g');
+      const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex);
+
+      if (tabClass !== null && tabClass.length > 0) {
+        tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass));
+      }
+    }
+
+    _getBasicClassPrefix() {
+      return CLASS_PREFIX$1;
+    }
+
+    _handlePopperPlacementChange(popperData) {
+      const {
+        state
+      } = popperData;
+
+      if (!state) {
+        return;
+      }
+
+      this.tip = state.elements.popper;
+
+      this._cleanTipClass();
+
+      this._addAttachmentClass(this._getAttachment(state.placement));
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Tooltip.getOrCreateInstance(this, config);
+
+        if (typeof config === 'string') {
+          if (typeof data[config] === 'undefined') {
+            throw new TypeError(`No method named "${config}"`);
+          }
+
+          data[config]();
+        }
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Tooltip to jQuery only if jQuery is present
+   */
+
+
+  defineJQueryPlugin(Tooltip);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): popover.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$3 = 'popover';
+  const DATA_KEY$3 = 'bs.popover';
+  const EVENT_KEY$3 = `.${DATA_KEY$3}`;
+  const CLASS_PREFIX = 'bs-popover';
+  const Default$2 = { ...Tooltip.Default,
+    placement: 'right',
+    offset: [0, 8],
+    trigger: 'click',
+    content: '',
+    template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>'
+  };
+  const DefaultType$2 = { ...Tooltip.DefaultType,
+    content: '(string|element|function)'
+  };
+  const Event$1 = {
+    HIDE: `hide${EVENT_KEY$3}`,
+    HIDDEN: `hidden${EVENT_KEY$3}`,
+    SHOW: `show${EVENT_KEY$3}`,
+    SHOWN: `shown${EVENT_KEY$3}`,
+    INSERTED: `inserted${EVENT_KEY$3}`,
+    CLICK: `click${EVENT_KEY$3}`,
+    FOCUSIN: `focusin${EVENT_KEY$3}`,
+    FOCUSOUT: `focusout${EVENT_KEY$3}`,
+    MOUSEENTER: `mouseenter${EVENT_KEY$3}`,
+    MOUSELEAVE: `mouseleave${EVENT_KEY$3}`
+  };
+  const SELECTOR_TITLE = '.popover-header';
+  const SELECTOR_CONTENT = '.popover-body';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Popover extends Tooltip {
+    // Getters
+    static get Default() {
+      return Default$2;
+    }
+
+    static get NAME() {
+      return NAME$3;
+    }
+
+    static get Event() {
+      return Event$1;
+    }
+
+    static get DefaultType() {
+      return DefaultType$2;
+    } // Overrides
+
+
+    isWithContent() {
+      return this.getTitle() || this._getContent();
+    }
+
+    setContent(tip) {
+      this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE);
+
+      this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT);
+    } // Private
+
+
+    _getContent() {
+      return this._resolvePossibleFunction(this._config.content);
+    }
+
+    _getBasicClassPrefix() {
+      return CLASS_PREFIX;
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Popover.getOrCreateInstance(this, config);
+
+        if (typeof config === 'string') {
+          if (typeof data[config] === 'undefined') {
+            throw new TypeError(`No method named "${config}"`);
+          }
+
+          data[config]();
+        }
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Popover to jQuery only if jQuery is present
+   */
+
+
+  defineJQueryPlugin(Popover);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): scrollspy.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$2 = 'scrollspy';
+  const DATA_KEY$2 = 'bs.scrollspy';
+  const EVENT_KEY$2 = `.${DATA_KEY$2}`;
+  const DATA_API_KEY$1 = '.data-api';
+  const Default$1 = {
+    offset: 10,
+    method: 'auto',
+    target: ''
+  };
+  const DefaultType$1 = {
+    offset: 'number',
+    method: 'string',
+    target: '(string|element)'
+  };
+  const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
+  const EVENT_SCROLL = `scroll${EVENT_KEY$2}`;
+  const EVENT_LOAD_DATA_API = `load${EVENT_KEY$2}${DATA_API_KEY$1}`;
+  const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
+  const CLASS_NAME_ACTIVE$1 = 'active';
+  const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
+  const SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';
+  const SELECTOR_NAV_LINKS = '.nav-link';
+  const SELECTOR_NAV_ITEMS = '.nav-item';
+  const SELECTOR_LIST_ITEMS = '.list-group-item';
+  const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`;
+  const SELECTOR_DROPDOWN$1 = '.dropdown';
+  const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
+  const METHOD_OFFSET = 'offset';
+  const METHOD_POSITION = 'position';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class ScrollSpy extends BaseComponent {
+    constructor(element, config) {
+      super(element);
+      this._scrollElement = this._element.tagName === 'BODY' ? window : this._element;
+      this._config = this._getConfig(config);
+      this._offsets = [];
+      this._targets = [];
+      this._activeTarget = null;
+      this._scrollHeight = 0;
+      EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process());
+      this.refresh();
+
+      this._process();
+    } // Getters
+
+
+    static get Default() {
+      return Default$1;
+    }
+
+    static get NAME() {
+      return NAME$2;
+    } // Public
+
+
+    refresh() {
+      const autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
+      const offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
+      const offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
+      this._offsets = [];
+      this._targets = [];
+      this._scrollHeight = this._getScrollHeight();
+      const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target);
+      targets.map(element => {
+        const targetSelector = getSelectorFromElement(element);
+        const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null;
+
+        if (target) {
+          const targetBCR = target.getBoundingClientRect();
+
+          if (targetBCR.width || targetBCR.height) {
+            return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];
+          }
+        }
+
+        return null;
+      }).filter(item => item).sort((a, b) => a[0] - b[0]).forEach(item => {
+        this._offsets.push(item[0]);
+
+        this._targets.push(item[1]);
+      });
+    }
+
+    dispose() {
+      EventHandler.off(this._scrollElement, EVENT_KEY$2);
+      super.dispose();
+    } // Private
+
+
+    _getConfig(config) {
+      config = { ...Default$1,
+        ...Manipulator.getDataAttributes(this._element),
+        ...(typeof config === 'object' && config ? config : {})
+      };
+      config.target = getElement(config.target) || document.documentElement;
+      typeCheckConfig(NAME$2, config, DefaultType$1);
+      return config;
+    }
+
+    _getScrollTop() {
+      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
+    }
+
+    _getScrollHeight() {
+      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
+    }
+
+    _getOffsetHeight() {
+      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
+    }
+
+    _process() {
+      const scrollTop = this._getScrollTop() + this._config.offset;
+
+      const scrollHeight = this._getScrollHeight();
+
+      const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
+
+      if (this._scrollHeight !== scrollHeight) {
+        this.refresh();
+      }
+
+      if (scrollTop >= maxScroll) {
+        const target = this._targets[this._targets.length - 1];
+
+        if (this._activeTarget !== target) {
+          this._activate(target);
+        }
+
+        return;
+      }
+
+      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
+        this._activeTarget = null;
+
+        this._clear();
+
+        return;
+      }
+
+      for (let i = this._offsets.length; i--;) {
+        const isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
+
+        if (isActiveTarget) {
+          this._activate(this._targets[i]);
+        }
+      }
+    }
+
+    _activate(target) {
+      this._activeTarget = target;
+
+      this._clear();
+
+      const queries = SELECTOR_LINK_ITEMS.split(',').map(selector => `${selector}[data-bs-target="${target}"],${selector}[href="${target}"]`);
+      const link = SelectorEngine.findOne(queries.join(','), this._config.target);
+      link.classList.add(CLASS_NAME_ACTIVE$1);
+
+      if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
+        SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, link.closest(SELECTOR_DROPDOWN$1)).classList.add(CLASS_NAME_ACTIVE$1);
+      } else {
+        SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP$1).forEach(listGroup => {
+          // Set triggered links parents as active
+          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
+          SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1)); // Handle special case when .nav-link is inside .nav-item
+
+          SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(navItem => {
+            SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1));
+          });
+        });
+      }
+
+      EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {
+        relatedTarget: target
+      });
+    }
+
+    _clear() {
+      SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target).filter(node => node.classList.contains(CLASS_NAME_ACTIVE$1)).forEach(node => node.classList.remove(CLASS_NAME_ACTIVE$1));
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = ScrollSpy.getOrCreateInstance(this, config);
+
+        if (typeof config !== 'string') {
+          return;
+        }
+
+        if (typeof data[config] === 'undefined') {
+          throw new TypeError(`No method named "${config}"`);
+        }
+
+        data[config]();
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
+    SelectorEngine.find(SELECTOR_DATA_SPY).forEach(spy => new ScrollSpy(spy));
+  });
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .ScrollSpy to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(ScrollSpy);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): tab.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME$1 = 'tab';
+  const DATA_KEY$1 = 'bs.tab';
+  const EVENT_KEY$1 = `.${DATA_KEY$1}`;
+  const DATA_API_KEY = '.data-api';
+  const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
+  const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
+  const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
+  const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
+  const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}${DATA_API_KEY}`;
+  const CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
+  const CLASS_NAME_ACTIVE = 'active';
+  const CLASS_NAME_FADE$1 = 'fade';
+  const CLASS_NAME_SHOW$1 = 'show';
+  const SELECTOR_DROPDOWN = '.dropdown';
+  const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
+  const SELECTOR_ACTIVE = '.active';
+  const SELECTOR_ACTIVE_UL = ':scope > li > .active';
+  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]';
+  const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
+  const SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Tab extends BaseComponent {
+    // Getters
+    static get NAME() {
+      return NAME$1;
+    } // Public
+
+
+    show() {
+      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
+        return;
+      }
+
+      let previous;
+      const target = getElementFromSelector(this._element);
+
+      const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);
+
+      if (listElement) {
+        const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
+        previous = SelectorEngine.find(itemSelector, listElement);
+        previous = previous[previous.length - 1];
+      }
+
+      const hideEvent = previous ? EventHandler.trigger(previous, EVENT_HIDE$1, {
+        relatedTarget: this._element
+      }) : null;
+      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, {
+        relatedTarget: previous
+      });
+
+      if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {
+        return;
+      }
+
+      this._activate(this._element, listElement);
+
+      const complete = () => {
+        EventHandler.trigger(previous, EVENT_HIDDEN$1, {
+          relatedTarget: this._element
+        });
+        EventHandler.trigger(this._element, EVENT_SHOWN$1, {
+          relatedTarget: previous
+        });
+      };
+
+      if (target) {
+        this._activate(target, target.parentNode, complete);
+      } else {
+        complete();
+      }
+    } // Private
+
+
+    _activate(element, container, callback) {
+      const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE);
+      const active = activeElements[0];
+      const isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$1);
+
+      const complete = () => this._transitionComplete(element, active, callback);
+
+      if (active && isTransitioning) {
+        active.classList.remove(CLASS_NAME_SHOW$1);
+
+        this._queueCallback(complete, element, true);
+      } else {
+        complete();
+      }
+    }
+
+    _transitionComplete(element, active, callback) {
+      if (active) {
+        active.classList.remove(CLASS_NAME_ACTIVE);
+        const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);
+
+        if (dropdownChild) {
+          dropdownChild.classList.remove(CLASS_NAME_ACTIVE);
+        }
+
+        if (active.getAttribute('role') === 'tab') {
+          active.setAttribute('aria-selected', false);
+        }
+      }
+
+      element.classList.add(CLASS_NAME_ACTIVE);
+
+      if (element.getAttribute('role') === 'tab') {
+        element.setAttribute('aria-selected', true);
+      }
+
+      reflow(element);
+
+      if (element.classList.contains(CLASS_NAME_FADE$1)) {
+        element.classList.add(CLASS_NAME_SHOW$1);
+      }
+
+      let parent = element.parentNode;
+
+      if (parent && parent.nodeName === 'LI') {
+        parent = parent.parentNode;
+      }
+
+      if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
+        const dropdownElement = element.closest(SELECTOR_DROPDOWN);
+
+        if (dropdownElement) {
+          SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));
+        }
+
+        element.setAttribute('aria-expanded', true);
+      }
+
+      if (callback) {
+        callback();
+      }
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Tab.getOrCreateInstance(this);
+
+        if (typeof config === 'string') {
+          if (typeof data[config] === 'undefined') {
+            throw new TypeError(`No method named "${config}"`);
+          }
+
+          data[config]();
+        }
+      });
+    }
+
+  }
+  /**
+   * ------------------------------------------------------------------------
+   * Data Api implementation
+   * ------------------------------------------------------------------------
+   */
+
+
+  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
+    if (['A', 'AREA'].includes(this.tagName)) {
+      event.preventDefault();
+    }
+
+    if (isDisabled(this)) {
+      return;
+    }
+
+    const data = Tab.getOrCreateInstance(this);
+    data.show();
+  });
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Tab to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Tab);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): toast.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  /**
+   * ------------------------------------------------------------------------
+   * Constants
+   * ------------------------------------------------------------------------
+   */
+
+  const NAME = 'toast';
+  const DATA_KEY = 'bs.toast';
+  const EVENT_KEY = `.${DATA_KEY}`;
+  const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
+  const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
+  const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
+  const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
+  const EVENT_HIDE = `hide${EVENT_KEY}`;
+  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
+  const EVENT_SHOW = `show${EVENT_KEY}`;
+  const EVENT_SHOWN = `shown${EVENT_KEY}`;
+  const CLASS_NAME_FADE = 'fade';
+  const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
+
+  const CLASS_NAME_SHOW = 'show';
+  const CLASS_NAME_SHOWING = 'showing';
+  const DefaultType = {
+    animation: 'boolean',
+    autohide: 'boolean',
+    delay: 'number'
+  };
+  const Default = {
+    animation: true,
+    autohide: true,
+    delay: 5000
+  };
+  /**
+   * ------------------------------------------------------------------------
+   * Class Definition
+   * ------------------------------------------------------------------------
+   */
+
+  class Toast extends BaseComponent {
+    constructor(element, config) {
+      super(element);
+      this._config = this._getConfig(config);
+      this._timeout = null;
+      this._hasMouseInteraction = false;
+      this._hasKeyboardInteraction = false;
+
+      this._setListeners();
+    } // Getters
+
+
+    static get DefaultType() {
+      return DefaultType;
+    }
+
+    static get Default() {
+      return Default;
+    }
+
+    static get NAME() {
+      return NAME;
+    } // Public
+
+
+    show() {
+      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
+
+      if (showEvent.defaultPrevented) {
+        return;
+      }
+
+      this._clearTimeout();
+
+      if (this._config.animation) {
+        this._element.classList.add(CLASS_NAME_FADE);
+      }
+
+      const complete = () => {
+        this._element.classList.remove(CLASS_NAME_SHOWING);
+
+        EventHandler.trigger(this._element, EVENT_SHOWN);
+
+        this._maybeScheduleHide();
+      };
+
+      this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
+
+
+      reflow(this._element);
+
+      this._element.classList.add(CLASS_NAME_SHOW);
+
+      this._element.classList.add(CLASS_NAME_SHOWING);
+
+      this._queueCallback(complete, this._element, this._config.animation);
+    }
+
+    hide() {
+      if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
+        return;
+      }
+
+      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
+
+      if (hideEvent.defaultPrevented) {
+        return;
+      }
+
+      const complete = () => {
+        this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
+
+
+        this._element.classList.remove(CLASS_NAME_SHOWING);
+
+        this._element.classList.remove(CLASS_NAME_SHOW);
+
+        EventHandler.trigger(this._element, EVENT_HIDDEN);
+      };
+
+      this._element.classList.add(CLASS_NAME_SHOWING);
+
+      this._queueCallback(complete, this._element, this._config.animation);
+    }
+
+    dispose() {
+      this._clearTimeout();
+
+      if (this._element.classList.contains(CLASS_NAME_SHOW)) {
+        this._element.classList.remove(CLASS_NAME_SHOW);
+      }
+
+      super.dispose();
+    } // Private
+
+
+    _getConfig(config) {
+      config = { ...Default,
+        ...Manipulator.getDataAttributes(this._element),
+        ...(typeof config === 'object' && config ? config : {})
+      };
+      typeCheckConfig(NAME, config, this.constructor.DefaultType);
+      return config;
+    }
+
+    _maybeScheduleHide() {
+      if (!this._config.autohide) {
+        return;
+      }
+
+      if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
+        return;
+      }
+
+      this._timeout = setTimeout(() => {
+        this.hide();
+      }, this._config.delay);
+    }
+
+    _onInteraction(event, isInteracting) {
+      switch (event.type) {
+        case 'mouseover':
+        case 'mouseout':
+          this._hasMouseInteraction = isInteracting;
+          break;
+
+        case 'focusin':
+        case 'focusout':
+          this._hasKeyboardInteraction = isInteracting;
+          break;
+      }
+
+      if (isInteracting) {
+        this._clearTimeout();
+
+        return;
+      }
+
+      const nextElement = event.relatedTarget;
+
+      if (this._element === nextElement || this._element.contains(nextElement)) {
+        return;
+      }
+
+      this._maybeScheduleHide();
+    }
+
+    _setListeners() {
+      EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
+      EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
+      EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
+      EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
+    }
+
+    _clearTimeout() {
+      clearTimeout(this._timeout);
+      this._timeout = null;
+    } // Static
+
+
+    static jQueryInterface(config) {
+      return this.each(function () {
+        const data = Toast.getOrCreateInstance(this, config);
+
+        if (typeof config === 'string') {
+          if (typeof data[config] === 'undefined') {
+            throw new TypeError(`No method named "${config}"`);
+          }
+
+          data[config](this);
+        }
+      });
+    }
+
+  }
+
+  enableDismissTrigger(Toast);
+  /**
+   * ------------------------------------------------------------------------
+   * jQuery
+   * ------------------------------------------------------------------------
+   * add .Toast to jQuery only if jQuery is present
+   */
+
+  defineJQueryPlugin(Toast);
+
+  /**
+   * --------------------------------------------------------------------------
+   * Bootstrap (v5.1.0): index.umd.js
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   * --------------------------------------------------------------------------
+   */
+  var index_umd = {
+    Alert,
+    Button,
+    Carousel,
+    Collapse,
+    Dropdown,
+    Modal,
+    Offcanvas,
+    Popover,
+    ScrollSpy,
+    Tab,
+    Toast,
+    Tooltip
+  };
+
+  return index_umd;
+
+})));
+//# sourceMappingURL=bootstrap.js.map
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map
new file mode 100644
index 0000000..dff3dc4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"bootstrap.js","sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n  if (obj === null || obj === undefined) {\n    return `${obj}`\n  }\n\n  return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttr = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n      hrefAttr = `#${hrefAttr.split('#')[1]}`\n    }\n\n    selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n  }\n\n  return selector\n}\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element)\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null\n  }\n\n  return null\n}\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element)\n\n  return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => {\n  if (!obj || typeof obj !== 'object') {\n    return false\n  }\n\n  if (typeof obj.jquery !== 'undefined') {\n    obj = obj[0]\n  }\n\n  return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n  if (isElement(obj)) { // it's a jQuery object or a node element\n    return obj.jquery ? obj[0] : obj\n  }\n\n  if (typeof obj === 'string' && obj.length > 0) {\n    return document.querySelector(obj)\n  }\n\n  return null\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n  Object.keys(configTypes).forEach(property => {\n    const expectedTypes = configTypes[property]\n    const value = config[property]\n    const valueType = value && isElement(value) ? 'element' : toType(value)\n\n    if (!new RegExp(expectedTypes).test(valueType)) {\n      throw new TypeError(\n        `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n      )\n    }\n  })\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  // eslint-disable-next-line no-unused-expressions\n  element.offsetHeight\n}\n\nconst getjQuery = () => {\n  const { jQuery } = window\n\n  if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return jQuery\n  }\n\n  return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        DOMContentLoadedCallbacks.forEach(callback => callback())\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = callback => {\n  if (typeof callback === 'function') {\n    callback()\n  }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n  }\n\n  const listLength = list.length\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  getElement,\n  getUID,\n  getSelectorFromElement,\n  getElementFromSelector,\n  getTransitionDurationFromElement,\n  triggerTransitionEnd,\n  isElement,\n  typeCheckConfig,\n  isVisible,\n  isDisabled,\n  findShadowRoot,\n  noop,\n  getNextActiveElement,\n  reflow,\n  getjQuery,\n  onDOMContentLoaded,\n  isRTL,\n  defineJQueryPlugin,\n  execute,\n  executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n  const uid = getUidEvent(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    event.delegateTarget = element\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (let i = domElements.length; i--;) {\n        if (domElements[i] === target) {\n          event.delegateTarget = target\n\n          if (handler.oneOff) {\n            // eslint-disable-next-line unicorn/consistent-destructuring\n            EventHandler.off(element, event.type, selector, fn)\n          }\n\n          return fn.apply(target, [event])\n        }\n      }\n    }\n\n    // To please ESLint\n    return null\n  }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n  const uidEventList = Object.keys(events)\n\n  for (let i = 0, len = uidEventList.length; i < len; i++) {\n    const event = events[uidEventList[i]]\n\n    if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n      return event\n    }\n  }\n\n  return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n  const delegation = typeof handler === 'string'\n  const originalHandler = delegation ? delegationFn : handler\n\n  let typeEvent = getTypeEvent(originalTypeEvent)\n  const isNative = nativeEvents.has(typeEvent)\n\n  if (!isNative) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  if (!handler) {\n    handler = delegationFn\n    delegationFn = null\n  }\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (customEventsRegex.test(originalTypeEvent)) {\n    const wrapFn = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    if (delegationFn) {\n      delegationFn = wrapFn(delegationFn)\n    } else {\n      handler = wrapFn(handler)\n    }\n  }\n\n  const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n  const events = getEvent(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n  if (previousFn) {\n    previousFn.oneOff = previousFn.oneOff && oneOff\n\n    return\n  }\n\n  const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = delegation ?\n    bootstrapDelegationHandler(element, handler, delegationFn) :\n    bootstrapHandler(element, handler)\n\n  fn.delegationSelector = delegation ? handler : null\n  fn.originalHandler = originalHandler\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  Object.keys(storeElementEvent).forEach(handlerKey => {\n    if (handlerKey.includes(namespace)) {\n      const event = storeElementEvent[handlerKey]\n\n      removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n    }\n  })\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, false)\n  },\n\n  one(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFn) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getEvent(element)\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof originalHandler !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!events || !events[typeEvent]) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      Object.keys(events).forEach(elementEvent => {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      })\n    }\n\n    const storeElementEvent = events[typeEvent] || {}\n    Object.keys(storeElementEvent).forEach(keyHandlers => {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        const event = storeElementEvent[keyHandlers]\n\n        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n      }\n    })\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const $ = getjQuery()\n    const typeEvent = getTypeEvent(event)\n    const inNamespace = event !== typeEvent\n    const isNative = nativeEvents.has(typeEvent)\n\n    let jQueryEvent\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n    let evt = null\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args)\n\n      $(element).trigger(jQueryEvent)\n      bubbles = !jQueryEvent.isPropagationStopped()\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n      defaultPrevented = jQueryEvent.isDefaultPrevented()\n    }\n\n    if (isNative) {\n      evt = document.createEvent('HTMLEvents')\n      evt.initEvent(typeEvent, bubbles, true)\n    } else {\n      evt = new CustomEvent(event, {\n        bubbles,\n        cancelable: true\n      })\n    }\n\n    // merge custom information in our event\n    if (typeof args !== 'undefined') {\n      Object.keys(args).forEach(key => {\n        Object.defineProperty(evt, key, {\n          get() {\n            return args[key]\n          }\n        })\n      })\n    }\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n  executeAfterTransition,\n  getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.1.0'\n\nclass BaseComponent {\n  constructor(element) {\n    element = getElement(element)\n\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    Object.getOwnPropertyNames(this).forEach(propertyName => {\n      this[propertyName] = null\n    })\n  }\n\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  /** Static */\n\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nexport {\n  enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nenableDismissTrigger(Alert, 'close')\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this)\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n  if (val === 'true') {\n    return true\n  }\n\n  if (val === 'false') {\n    return false\n  }\n\n  if (val === Number(val).toString()) {\n    return Number(val)\n  }\n\n  if (val === '' || val === 'null') {\n    return null\n  }\n\n  return val\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n\n    Object.keys(element.dataset)\n      .filter(key => key.startsWith('bs'))\n      .forEach(key => {\n        let pureKey = key.replace(/^bs/, '')\n        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n        attributes[pureKey] = normalizeData(element.dataset[key])\n      })\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  },\n\n  offset(element) {\n    const rect = element.getBoundingClientRect()\n\n    return {\n      top: rect.top + window.pageYOffset,\n      left: rect.left + window.pageXOffset\n    }\n  },\n\n  position(element) {\n    return {\n      top: element.offsetTop,\n      left: element.offsetLeft\n    }\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children)\n      .filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n\n    let ancestor = element.parentNode\n\n    while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n      if (ancestor.matches(selector)) {\n        parents.push(ancestor)\n      }\n\n      ancestor = ancestor.parentNode\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  getNextActiveElement,\n  reflow,\n  triggerTransitionEnd,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  slide: false,\n  pause: 'hover',\n  wrap: true,\n  touch: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)',\n  keyboard: 'boolean',\n  slide: '(boolean|string)',\n  pause: '(string|boolean)',\n  wrap: 'boolean',\n  touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._items = null\n    this._interval = null\n    this._activeElement = null\n    this._isPaused = false\n    this._isSliding = false\n    this.touchTimeout = null\n    this.touchStartX = 0\n    this.touchDeltaX = 0\n\n    this._config = this._getConfig(config)\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n    this._pointerEvent = Boolean(window.PointerEvent)\n\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause(event) {\n    if (!event) {\n      this._isPaused = true\n    }\n\n    if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n      triggerTransitionEnd(this._element)\n      this.cycle(true)\n    }\n\n    clearInterval(this._interval)\n    this._interval = null\n  }\n\n  cycle(event) {\n    if (!event) {\n      this._isPaused = false\n    }\n\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    if (this._config && this._config.interval && !this._isPaused) {\n      this._updateInterval()\n\n      this._interval = setInterval(\n        (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n        this._config.interval\n      )\n    }\n  }\n\n  to(index) {\n    this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeIndex = this._getItemIndex(this._activeElement)\n\n    if (index > this._items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    if (activeIndex === index) {\n      this.pause()\n      this.cycle()\n      return\n    }\n\n    const order = index > activeIndex ?\n      ORDER_NEXT :\n      ORDER_PREV\n\n    this._slide(order, this._items[index])\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _handleSwipe() {\n    const absDeltax = Math.abs(this.touchDeltaX)\n\n    if (absDeltax <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltax / this.touchDeltaX\n\n    this.touchDeltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n    }\n\n    if (this._config.touch && this._touchSupported) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    const start = event => {\n      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n        this.touchStartX = event.clientX\n      } else if (!this._pointerEvent) {\n        this.touchStartX = event.touches[0].clientX\n      }\n    }\n\n    const move = event => {\n      // ensure swiping with one touch and not pinching\n      this.touchDeltaX = event.touches && event.touches.length > 1 ?\n        0 :\n        event.touches[0].clientX - this.touchStartX\n    }\n\n    const end = event => {\n      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n        this.touchDeltaX = event.clientX - this.touchStartX\n      }\n\n      this._handleSwipe()\n      if (this._config.pause === 'hover') {\n        // If it's a touch-enabled device, mouseenter/leave are fired as\n        // part of the mouse compatibility events on first tap - the carousel\n        // would stop cycling until user tapped out of it;\n        // here, we listen for touchend, explicitly pause the carousel\n        // (as if it's the second time we tap on it, mouseenter compat event\n        // is NOT fired) and after a timeout (to allow for mouse compatibility\n        // events to fire) we explicitly restart cycling\n\n        this.pause()\n        if (this.touchTimeout) {\n          clearTimeout(this.touchTimeout)\n        }\n\n        this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n      }\n    }\n\n    SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n      EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n    })\n\n    if (this._pointerEvent) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n    }\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(direction)\n    }\n  }\n\n  _getItemIndex(element) {\n    this._items = element && element.parentNode ?\n      SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n      []\n\n    return this._items.indexOf(element)\n  }\n\n  _getItemByOrder(order, activeElement) {\n    const isNext = order === ORDER_NEXT\n    return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n  }\n\n  _triggerSlideEvent(relatedTarget, eventDirectionName) {\n    const targetIndex = this._getItemIndex(relatedTarget)\n    const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n    return EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget,\n      direction: eventDirectionName,\n      from: fromIndex,\n      to: targetIndex\n    })\n  }\n\n  _setActiveIndicatorElement(element) {\n    if (this._indicatorsElement) {\n      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n      activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n      activeIndicator.removeAttribute('aria-current')\n\n      const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n      for (let i = 0; i < indicators.length; i++) {\n        if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n          indicators[i].classList.add(CLASS_NAME_ACTIVE)\n          indicators[i].setAttribute('aria-current', 'true')\n          break\n        }\n      }\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    if (elementInterval) {\n      this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n      this._config.interval = elementInterval\n    } else {\n      this._config.interval = this._config.defaultInterval || this._config.interval\n    }\n  }\n\n  _slide(directionOrOrder, element) {\n    const order = this._directionToOrder(directionOrOrder)\n    const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeElementIndex = this._getItemIndex(activeElement)\n    const nextElement = element || this._getItemByOrder(order, activeElement)\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n    const isCycling = Boolean(this._interval)\n\n    const isNext = order === ORDER_NEXT\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n    const eventDirectionName = this._orderToDirection(order)\n\n    if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n      this._isSliding = false\n      return\n    }\n\n    if (this._isSliding) {\n      return\n    }\n\n    const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    this._isSliding = true\n\n    if (isCycling) {\n      this.pause()\n    }\n\n    this._setActiveIndicatorElement(nextElement)\n    this._activeElement = nextElement\n\n    const triggerSlidEvent = () => {\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      })\n    }\n\n    if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n      nextElement.classList.add(orderClassName)\n\n      reflow(nextElement)\n\n      activeElement.classList.add(directionalClassName)\n      nextElement.classList.add(directionalClassName)\n\n      const completeCallBack = () => {\n        nextElement.classList.remove(directionalClassName, orderClassName)\n        nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n        activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n        this._isSliding = false\n\n        setTimeout(triggerSlidEvent, 0)\n      }\n\n      this._queueCallback(completeCallBack, activeElement, true)\n    } else {\n      activeElement.classList.remove(CLASS_NAME_ACTIVE)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      this._isSliding = false\n      triggerSlidEvent()\n    }\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n      return direction\n    }\n\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n      return order\n    }\n\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n\n  // Static\n\n  static carouselInterface(element, config) {\n    const data = Carousel.getOrCreateInstance(element, config)\n\n    let { _config } = data\n    if (typeof config === 'object') {\n      _config = {\n        ..._config,\n        ...config\n      }\n    }\n\n    const action = typeof config === 'string' ? config : _config.slide\n\n    if (typeof config === 'number') {\n      data.to(config)\n    } else if (typeof action === 'string') {\n      if (typeof data[action] === 'undefined') {\n        throw new TypeError(`No method named \"${action}\"`)\n      }\n\n      data[action]()\n    } else if (_config.interval && _config.ride) {\n      data.pause()\n      data.cycle()\n    }\n  }\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      Carousel.carouselInterface(this, config)\n    })\n  }\n\n  static dataApiClickHandler(event) {\n    const target = getElementFromSelector(this)\n\n    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n      return\n    }\n\n    const config = {\n      ...Manipulator.getDataAttributes(target),\n      ...Manipulator.getDataAttributes(this)\n    }\n    const slideIndex = this.getAttribute('data-bs-slide-to')\n\n    if (slideIndex) {\n      config.interval = false\n    }\n\n    Carousel.carouselInterface(target, config)\n\n    if (slideIndex) {\n      Carousel.getInstance(target).to(slideIndex)\n    }\n\n    event.preventDefault()\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (let i = 0, len = carousels.length; i < len; i++) {\n    Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]))\n  }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getSelectorFromElement,\n  getElementFromSelector,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  toggle: true,\n  parent: null\n}\n\nconst DefaultType = {\n  toggle: 'boolean',\n  parent: '(null|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._isTransitioning = false\n    this._config = this._getConfig(config)\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggleList.length; i < len; i++) {\n      const elem = toggleList[i]\n      const selector = getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElem => foundElem === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._selector = selector\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let actives = []\n    let activesData\n\n    if (this._config.parent) {\n      const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n      actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)) // remove children if greater depth\n    }\n\n    const container = SelectorEngine.findOne(this._selector)\n    if (actives.length) {\n      const tempActiveData = actives.find(elem => container !== elem)\n      activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null\n\n      if (activesData && activesData._isTransitioning) {\n        return\n      }\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    actives.forEach(elemActive => {\n      if (container !== elemActive) {\n        Collapse.getOrCreateInstance(elemActive, { toggle: false }).hide()\n      }\n\n      if (!activesData) {\n        Data.set(elemActive, DATA_KEY, null)\n      }\n    })\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    const triggerArrayLength = this._triggerArray.length\n    for (let i = 0; i < triggerArrayLength; i++) {\n      const trigger = this._triggerArray[i]\n      const elem = getElementFromSelector(trigger)\n\n      if (elem && !this._isShown(elem)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n    SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem))\n      .forEach(element => {\n        const selected = getElementFromSelector(element)\n\n        if (selected) {\n          this._addAriaAndCollapsedClass([element], this._isShown(selected))\n        }\n      })\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    triggerArray.forEach(elem => {\n      if (isOpen) {\n        elem.classList.remove(CLASS_NAME_COLLAPSED)\n      } else {\n        elem.classList.add(CLASS_NAME_COLLAPSED)\n      }\n\n      elem.setAttribute('aria-expanded', isOpen)\n    })\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const _config = {}\n      if (typeof config === 'string' && /show|hide/.test(config)) {\n        _config.toggle = false\n      }\n\n      const data = Collapse.getOrCreateInstance(this, _config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  const selector = getSelectorFromElement(this)\n  const selectorElements = SelectorEngine.find(selector)\n\n  selectorElements.forEach(element => {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getElementFromSelector,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n  offset: [0, 2],\n  boundary: 'clippingParents',\n  reference: 'toggle',\n  display: 'dynamic',\n  popperConfig: null,\n  autoClose: true\n}\n\nconst DefaultType = {\n  offset: '(array|string|function)',\n  boundary: '(string|element)',\n  reference: '(string|element|object)',\n  display: 'string',\n  popperConfig: '(null|object|function)',\n  autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._popper = null\n    this._config = this._getConfig(config)\n    this._menu = this._getMenuElement()\n    this._inNavbar = this._detectNavbar()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown(this._menu)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    const parent = Dropdown.getParentFromElement(this._element)\n    // Totally disable Popper for Dropdowns in Navbar\n    if (this._inNavbar) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n    } else {\n      this._createPopper(parent)\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement &&\n      !parent.closest(SELECTOR_NAVBAR_NAV)) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown(this._menu)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = {\n      ...this.constructor.Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createPopper(parent) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    const popperConfig = this._getPopperConfig()\n    const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n    if (isDisplayStatic) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n    }\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getMenuElement() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._element.parentNode\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display\n    if (this._config.display === 'static') {\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n\n  static clearMenus(event) {\n    if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n      return\n    }\n\n    const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggles.length; i < len; i++) {\n      const context = Dropdown.getInstance(toggles[i])\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      if (!context._isShown()) {\n        continue\n      }\n\n      const relatedTarget = {\n        relatedTarget: context._element\n      }\n\n      if (event) {\n        const composedPath = event.composedPath()\n        const isMenuTarget = composedPath.includes(context._menu)\n        if (\n          composedPath.includes(context._element) ||\n          (context._config.autoClose === 'inside' && !isMenuTarget) ||\n          (context._config.autoClose === 'outside' && isMenuTarget)\n        ) {\n          continue\n        }\n\n        // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n        if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n          continue\n        }\n\n        if (event.type === 'click') {\n          relatedTarget.clickEvent = event\n        }\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static getParentFromElement(element) {\n    return getElementFromSelector(element) || element.parentNode\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not input/textarea:\n    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n    // If input/textarea:\n    //  - If space key => not a dropdown command\n    //  - If key is other than escape\n    //    - If key is not up or down => not a dropdown command\n    //    - If trigger inside the menu => not a dropdown command\n    if (/input|textarea/i.test(event.target.tagName) ?\n      event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n      ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n        event.target.closest(SELECTOR_MENU))) :\n      !REGEXP_KEYDOWN.test(event.key)) {\n      return\n    }\n\n    const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n    if (!isActive && event.key === ESCAPE_KEY) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    if (event.key === ESCAPE_KEY) {\n      instance.hide()\n      return\n    }\n\n    if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n      if (!isActive) {\n        instance.show()\n      }\n\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (!isActive || event.key === SPACE_KEY) {\n      Dropdown.clearMenus()\n    }\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n  }\n\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProp, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProp)\n      const calculatedValue = window.getComputedStyle(element)[styleProp]\n      element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n  }\n\n  _saveInitialAttribute(element, styleProp) {\n    const actualValue = element.style[styleProp]\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProp, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProp) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProp)\n      if (typeof value === 'undefined') {\n        element.style.removeProperty(styleProp)\n      } else {\n        Manipulator.removeDataAttribute(element, styleProp)\n        element.style[styleProp] = value\n      }\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n    } else {\n      SelectorEngine.find(selector, this._element).forEach(callBack)\n    }\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n  className: 'modal-backdrop',\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  isAnimated: false,\n  rootElement: 'body', // give the choice to place backdrop under different elements\n  clickCallback: null\n}\n\nconst DefaultType = {\n  className: 'string',\n  isVisible: 'boolean',\n  isAnimated: 'boolean',\n  rootElement: '(element|string)',\n  clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    if (this._config.isAnimated) {\n      reflow(this._getElement())\n    }\n\n    this._getElement().classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  // Private\n\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    this._config.rootElement.append(this._getElement())\n\n    EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport { typeCheckConfig } from './index'\n\nconst Default = {\n  trapElement: null, // The element to trap focus inside of\n  autofocus: true\n}\n\nconst DefaultType = {\n  trapElement: 'element',\n  autofocus: 'boolean'\n}\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nclass FocusTrap {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  activate() {\n    const { trapElement, autofocus } = this._config\n\n    if (this._isActive) {\n      return\n    }\n\n    if (autofocus) {\n      trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n\n  _handleFocusin(event) {\n    const { target } = event\n    const { trapElement } = this._config\n\n    if (\n      target === document ||\n      target === trapElement ||\n      trapElement.contains(target)\n    ) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  focus: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._isShown = false\n    this._ignoreBackdropClick = false\n    this._isTransitioning = false\n    this._scrollBar = new ScrollBarHelper()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n\n    if (this._isAnimated()) {\n      this._isTransitioning = true\n    }\n\n    this._scrollBar.hide()\n\n    document.body.classList.add(CLASS_NAME_OPEN)\n\n    this._adjustDialog()\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n      EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n        if (event.target === this._element) {\n          this._ignoreBackdropClick = true\n        }\n      })\n    })\n\n    this._showBackdrop(() => this._showElement(relatedTarget))\n  }\n\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = false\n    const isAnimated = this._isAnimated()\n\n    if (isAnimated) {\n      this._isTransitioning = true\n    }\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    this._focustrap.deactivate()\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n    EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n    this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n  }\n\n  dispose() {\n    [window, this._dialog]\n      .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n      isAnimated: this._isAnimated()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _showElement(relatedTarget) {\n    const isAnimated = this._isAnimated()\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n    if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n      // Don't move modal's DOM position\n      document.body.append(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.scrollTop = 0\n\n    if (modalBody) {\n      modalBody.scrollTop = 0\n    }\n\n    if (isAnimated) {\n      reflow(this._element)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate()\n      }\n\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }\n\n    this._queueCallback(transitionComplete, this._dialog, isAnimated)\n  }\n\n  _setEscapeEvent() {\n    if (this._isShown) {\n      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n        if (this._config.keyboard && event.key === ESCAPE_KEY) {\n          event.preventDefault()\n          this.hide()\n        } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n          this._triggerBackdropTransition()\n        }\n      })\n    } else {\n      EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n    }\n  }\n\n  _setResizeEvent() {\n    if (this._isShown) {\n      EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n    } else {\n      EventHandler.off(window, EVENT_RESIZE)\n    }\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._scrollBar.reset()\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    })\n  }\n\n  _showBackdrop(callback) {\n    EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n      if (this._ignoreBackdropClick) {\n        this._ignoreBackdropClick = false\n        return\n      }\n\n      if (event.target !== event.currentTarget) {\n        return\n      }\n\n      if (this._config.backdrop === true) {\n        this.hide()\n      } else if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n      }\n    })\n\n    this._backdrop.show(callback)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const { classList, scrollHeight, style } = this._element\n    const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n    // return if the following background transition hasn't yet completed\n    if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n      return\n    }\n\n    if (!isModalOverflowing) {\n      style.overflowY = 'hidden'\n    }\n\n    classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      classList.remove(CLASS_NAME_STATIC)\n      if (!isModalOverflowing) {\n        this._queueCallback(() => {\n          style.overflowY = ''\n        }, this._dialog)\n      }\n    }, this._dialog)\n\n    this._element.focus()\n  }\n\n  // ----------------------------------------------------------------------\n  // the following methods are used to handle overflowing modals\n  // ----------------------------------------------------------------------\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const scrollbarWidth = this._scrollBar.getWidth()\n    const isBodyOverflowing = scrollbarWidth > 0\n\n    if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n      this._element.style.paddingLeft = `${scrollbarWidth}px`\n    }\n\n    if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n      this._element.style.paddingRight = `${scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  // Static\n\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](relatedTarget)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  const data = Modal.getOrCreateInstance(target)\n\n  data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  isVisible,\n  typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: 'boolean',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._element.style.visibility = 'visible'\n\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll) {\n        this._focustrap.activate()\n      }\n\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.setAttribute('aria-hidden', true)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n      this._element.style.visibility = 'hidden'\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible: this._config.backdrop,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: () => this.hide()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (this._config.keyboard && event.key === ESCAPE_KEY) {\n        this.hide()\n      }\n    })\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (allReadyOpen && allReadyOpen !== target) {\n    Offcanvas.getInstance(allReadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\n  SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())\n)\n\nenableDismissTrigger(Offcanvas)\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n  const attrName = attr.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attrName)) {\n    if (uriAttrs.has(attrName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n    }\n\n    return true\n  }\n\n  const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n  // Check if a regular expression validates the attribute.\n  for (let i = 0, len = regExp.length; i < len; i++) {\n    if (regExp[i].test(attrName)) {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFn && typeof sanitizeFn === 'function') {\n    return sanitizeFn(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const allowlistKeys = Object.keys(allowList)\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (let i = 0, len = elements.length; i < len; i++) {\n    const el = elements[i]\n    const elName = el.nodeName.toLowerCase()\n\n    if (!allowlistKeys.includes(elName)) {\n      el.remove()\n\n      continue\n    }\n\n    const attributeList = [].concat(...el.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n    attributeList.forEach(attr => {\n      if (!allowedAttribute(attr, allowedAttributes)) {\n        el.removeAttribute(attr.nodeName)\n      }\n    })\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  findShadowRoot,\n  getElement,\n  getUID,\n  isElement,\n  isRTL,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport { DefaultAllowlist, sanitizeHtml } from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n  animation: 'boolean',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string',\n  delay: '(number|object)',\n  html: 'boolean',\n  selector: '(string|boolean)',\n  placement: '(string|function)',\n  offset: '(array|string|function)',\n  container: '(string|element|boolean)',\n  fallbackPlacements: 'array',\n  boundary: '(string|element)',\n  customClass: '(string|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  allowList: 'object',\n  popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n              '<div class=\"tooltip-arrow\"></div>' +\n              '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  selector: false,\n  placement: 'top',\n  offset: [0, 0],\n  container: false,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  boundary: 'clippingParents',\n  customClass: '',\n  sanitize: true,\n  sanitizeFn: null,\n  allowList: DefaultAllowlist,\n  popperConfig: null\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    super(element)\n\n    // private\n    this._isEnabled = true\n    this._timeout = 0\n    this._hoverState = ''\n    this._activeTrigger = {}\n    this._popper = null\n\n    // Protected\n    this._config = this._getConfig(config)\n    this.tip = null\n\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle(event) {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (event) {\n      const context = this._initializeOnDelegatedTarget(event)\n\n      context._activeTrigger.click = !context._activeTrigger.click\n\n      if (context._isWithActiveTrigger()) {\n        context._enter(null, context)\n      } else {\n        context._leave(null, context)\n      }\n    } else {\n      if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n        this._leave(null, this)\n        return\n      }\n\n      this._enter(null, this)\n    }\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this.tip) {\n      this.tip.remove()\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this.isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = shadowRoot === null ?\n      this._element.ownerDocument.documentElement.contains(this._element) :\n      shadowRoot.contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const tipId = getUID(this.constructor.NAME)\n\n    tip.setAttribute('id', tipId)\n    this._element.setAttribute('aria-describedby', tipId)\n\n    if (this._config.animation) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    const placement = typeof this._config.placement === 'function' ?\n      this._config.placement.call(this, tip, this._element) :\n      this._config.placement\n\n    const attachment = this._getAttachment(placement)\n    this._addAttachmentClass(attachment)\n\n    const { container } = this._config\n    Data.set(tip, this.constructor.DATA_KEY, this)\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n    }\n\n    if (this._popper) {\n      this._popper.update()\n    } else {\n      this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n    }\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    const customClass = this._resolvePossibleFunction(this._config.customClass)\n    if (customClass) {\n      tip.classList.add(...customClass.split(' '))\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children).forEach(element => {\n        EventHandler.on(element, 'mouseover', noop)\n      })\n    }\n\n    const complete = () => {\n      const prevHoverState = this._hoverState\n\n      this._hoverState = null\n      EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n      if (prevHoverState === HOVER_STATE_OUT) {\n        this._leave(null, this)\n      }\n    }\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n  }\n\n  hide() {\n    if (!this._popper) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (this._hoverState !== HOVER_STATE_SHOW) {\n        tip.remove()\n      }\n\n      this._cleanTipClass()\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n      if (this._popper) {\n        this._popper.destroy()\n        this._popper = null\n      }\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children)\n        .forEach(element => EventHandler.off(element, 'mouseover', noop))\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n    this._hoverState = ''\n  }\n\n  update() {\n    if (this._popper !== null) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n\n  isWithContent() {\n    return Boolean(this.getTitle())\n  }\n\n  getTipElement() {\n    if (this.tip) {\n      return this.tip\n    }\n\n    const element = document.createElement('div')\n    element.innerHTML = this._config.template\n\n    const tip = element.children[0]\n    this.setContent(tip)\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n\n    this.tip = tip\n    return this.tip\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER)\n  }\n\n  _sanitizeAndSetContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!content && templateElement) {\n      templateElement.remove()\n      return\n    }\n\n    // we use append for html objects to maintain js events\n    this.setElementContent(templateElement, content)\n  }\n\n  setElementContent(element, content) {\n    if (element === null) {\n      return\n    }\n\n    if (isElement(content)) {\n      content = getElement(content)\n\n      // content is a DOM node or a jQuery\n      if (this._config.html) {\n        if (content.parentNode !== element) {\n          element.innerHTML = ''\n          element.append(content)\n        }\n      } else {\n        element.textContent = content.textContent\n      }\n\n      return\n    }\n\n    if (this._config.html) {\n      if (this._config.sanitize) {\n        content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n      }\n\n      element.innerHTML = content\n    } else {\n      element.textContent = content\n    }\n  }\n\n  getTitle() {\n    const title = this._element.getAttribute('data-bs-original-title') || this._config.title\n\n    return this._resolvePossibleFunction(title)\n  }\n\n  updateAttachment(attachment) {\n    if (attachment === 'right') {\n      return 'end'\n    }\n\n    if (attachment === 'left') {\n      return 'start'\n    }\n\n    return attachment\n  }\n\n  // Private\n\n  _initializeOnDelegatedTarget(event, context) {\n    return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(content) {\n    return typeof content === 'function' ? content.call(this._element) : content\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'onChange',\n          enabled: true,\n          phase: 'afterWrite',\n          fn: data => this._handlePopperPlacementChange(data)\n        }\n      ],\n      onFirstUpdate: data => {\n        if (data.options.placement !== data.placement) {\n          this._handlePopperPlacementChange(data)\n        }\n      }\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _addAttachmentClass(attachment) {\n    this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`)\n  }\n\n  _getAttachment(placement) {\n    return AttachmentMap[placement.toUpperCase()]\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    triggers.forEach(trigger => {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSEENTER :\n          this.constructor.Event.FOCUSIN\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSELEAVE :\n          this.constructor.Event.FOCUSOUT\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n        EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n      }\n    })\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._config.selector) {\n      this._config = {\n        ...this._config,\n        trigger: 'manual',\n        selector: ''\n      }\n    } else {\n      this._fixTitle()\n    }\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n    const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n    if (title || originalTitleType !== 'string') {\n      this._element.setAttribute('data-bs-original-title', title || '')\n      if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n        this._element.setAttribute('aria-label', title)\n      }\n\n      this._element.setAttribute('title', '')\n    }\n  }\n\n  _enter(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = true\n    }\n\n    if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n      context._hoverState = HOVER_STATE_SHOW\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_SHOW\n\n    if (!context._config.delay || !context._config.delay.show) {\n      context.show()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_SHOW) {\n        context.show()\n      }\n    }, context._config.delay.show)\n  }\n\n  _leave(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = context._element.contains(event.relatedTarget)\n    }\n\n    if (context._isWithActiveTrigger()) {\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_OUT\n\n    if (!context._config.delay || !context._config.delay.hide) {\n      context.hide()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_OUT) {\n        context.hide()\n      }\n    }, context._config.delay.hide)\n  }\n\n  _isWithActiveTrigger() {\n    for (const trigger in this._activeTrigger) {\n      if (this._activeTrigger[trigger]) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    Object.keys(dataAttributes).forEach(dataAttr => {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n        delete dataAttributes[dataAttr]\n      }\n    })\n\n    config = {\n      ...this.constructor.Default,\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (config.sanitize) {\n      config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const key in this._config) {\n      if (this.constructor.Default[key] !== this._config[key]) {\n        config[key] = this._config[key]\n      }\n    }\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _cleanTipClass() {\n    const tip = this.getTipElement()\n    const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g')\n    const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex)\n    if (tabClass !== null && tabClass.length > 0) {\n      tabClass.map(token => token.trim())\n        .forEach(tClass => tip.classList.remove(tClass))\n    }\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX\n  }\n\n  _handlePopperPlacementChange(popperData) {\n    const { state } = popperData\n\n    if (!state) {\n      return\n    }\n\n    this.tip = state.elements.popper\n    this._cleanTipClass()\n    this._addAttachmentClass(this._getAttachment(state.placement))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\n\nconst Default = {\n  ...Tooltip.Default,\n  placement: 'right',\n  offset: [0, 8],\n  trigger: 'click',\n  content: '',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n              '<div class=\"popover-arrow\"></div>' +\n              '<h3 class=\"popover-header\"></h3>' +\n              '<div class=\"popover-body\"></div>' +\n            '</div>'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(string|element|function)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Overrides\n\n  isWithContent() {\n    return this.getTitle() || this._getContent()\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE)\n    this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT)\n  }\n\n  // Private\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getSelectorFromElement,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  offset: 10,\n  method: 'auto',\n  target: ''\n}\n\nconst DefaultType = {\n  offset: 'number',\n  method: 'string',\n  target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n    this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n    this._config = this._getConfig(config)\n    this._offsets = []\n    this._targets = []\n    this._activeTarget = null\n    this._scrollHeight = 0\n\n    EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n    this.refresh()\n    this._process()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  refresh() {\n    const autoMethod = this._scrollElement === this._scrollElement.window ?\n      METHOD_OFFSET :\n      METHOD_POSITION\n\n    const offsetMethod = this._config.method === 'auto' ?\n      autoMethod :\n      this._config.method\n\n    const offsetBase = offsetMethod === METHOD_POSITION ?\n      this._getScrollTop() :\n      0\n\n    this._offsets = []\n    this._targets = []\n    this._scrollHeight = this._getScrollHeight()\n\n    const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n\n    targets.map(element => {\n      const targetSelector = getSelectorFromElement(element)\n      const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n      if (target) {\n        const targetBCR = target.getBoundingClientRect()\n        if (targetBCR.width || targetBCR.height) {\n          return [\n            Manipulator[offsetMethod](target).top + offsetBase,\n            targetSelector\n          ]\n        }\n      }\n\n      return null\n    })\n      .filter(item => item)\n      .sort((a, b) => a[0] - b[0])\n      .forEach(item => {\n        this._offsets.push(item[0])\n        this._targets.push(item[1])\n      })\n  }\n\n  dispose() {\n    EventHandler.off(this._scrollElement, EVENT_KEY)\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.target = getElement(config.target) || document.documentElement\n\n    typeCheckConfig(NAME, config, DefaultType)\n\n    return config\n  }\n\n  _getScrollTop() {\n    return this._scrollElement === window ?\n      this._scrollElement.pageYOffset :\n      this._scrollElement.scrollTop\n  }\n\n  _getScrollHeight() {\n    return this._scrollElement.scrollHeight || Math.max(\n      document.body.scrollHeight,\n      document.documentElement.scrollHeight\n    )\n  }\n\n  _getOffsetHeight() {\n    return this._scrollElement === window ?\n      window.innerHeight :\n      this._scrollElement.getBoundingClientRect().height\n  }\n\n  _process() {\n    const scrollTop = this._getScrollTop() + this._config.offset\n    const scrollHeight = this._getScrollHeight()\n    const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n    if (this._scrollHeight !== scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      const target = this._targets[this._targets.length - 1]\n\n      if (this._activeTarget !== target) {\n        this._activate(target)\n      }\n\n      return\n    }\n\n    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n      this._activeTarget = null\n      this._clear()\n      return\n    }\n\n    for (let i = this._offsets.length; i--;) {\n      const isActiveTarget = this._activeTarget !== this._targets[i] &&\n          scrollTop >= this._offsets[i] &&\n          (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n      if (isActiveTarget) {\n        this._activate(this._targets[i])\n      }\n    }\n  }\n\n  _activate(target) {\n    this._activeTarget = target\n\n    this._clear()\n\n    const queries = SELECTOR_LINK_ITEMS.split(',')\n      .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n    const link = SelectorEngine.findOne(queries.join(','), this._config.target)\n\n    link.classList.add(CLASS_NAME_ACTIVE)\n    if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n        .forEach(listGroup => {\n          // Set triggered links parents as active\n          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n          SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n            .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n          // Handle special case when .nav-link is inside .nav-item\n          SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n            .forEach(navItem => {\n              SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n                .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n            })\n        })\n    }\n\n    EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n      relatedTarget: target\n    })\n  }\n\n  _clear() {\n    SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n      .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n      .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  SelectorEngine.find(SELECTOR_DATA_SPY)\n    .forEach(spy => new ScrollSpy(spy))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  show() {\n    if ((this._element.parentNode &&\n      this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n      this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n      return\n    }\n\n    let previous\n    const target = getElementFromSelector(this._element)\n    const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n    if (listElement) {\n      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n      previous = SelectorEngine.find(itemSelector, listElement)\n      previous = previous[previous.length - 1]\n    }\n\n    const hideEvent = previous ?\n      EventHandler.trigger(previous, EVENT_HIDE, {\n        relatedTarget: this._element\n      }) :\n      null\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget: previous\n    })\n\n    if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._activate(this._element, listElement)\n\n    const complete = () => {\n      EventHandler.trigger(previous, EVENT_HIDDEN, {\n        relatedTarget: this._element\n      })\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget: previous\n      })\n    }\n\n    if (target) {\n      this._activate(target, target.parentNode, complete)\n    } else {\n      complete()\n    }\n  }\n\n  // Private\n\n  _activate(element, container, callback) {\n    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n      SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n      SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n    const active = activeElements[0]\n    const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n    const complete = () => this._transitionComplete(element, active, callback)\n\n    if (active && isTransitioning) {\n      active.classList.remove(CLASS_NAME_SHOW)\n      this._queueCallback(complete, element, true)\n    } else {\n      complete()\n    }\n  }\n\n  _transitionComplete(element, active, callback) {\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n\n      const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n      if (dropdownChild) {\n        dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n      }\n\n      if (active.getAttribute('role') === 'tab') {\n        active.setAttribute('aria-selected', false)\n      }\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n    if (element.getAttribute('role') === 'tab') {\n      element.setAttribute('aria-selected', true)\n    }\n\n    reflow(element)\n\n    if (element.classList.contains(CLASS_NAME_FADE)) {\n      element.classList.add(CLASS_NAME_SHOW)\n    }\n\n    let parent = element.parentNode\n    if (parent && parent.nodeName === 'LI') {\n      parent = parent.parentNode\n    }\n\n    if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n      const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n      if (dropdownElement) {\n        SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n          .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n      }\n\n      element.setAttribute('aria-expanded', true)\n    }\n\n    if (callback) {\n      callback()\n    }\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  const data = Tab.getOrCreateInstance(this)\n  data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      this._element.classList.remove(CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    return config\n  }\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout':\n        this._hasMouseInteraction = isInteracting\n        break\n      case 'focusin':\n      case 'focusout':\n        this._hasKeyboardInteraction = isInteracting\n        break\n      default:\n        break\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\nenableDismissTrigger(Toast)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert'\nimport Button from './src/button'\nimport Carousel from './src/carousel'\nimport Collapse from './src/collapse'\nimport Dropdown from './src/dropdown'\nimport Modal from './src/modal'\nimport Offcanvas from './src/offcanvas'\nimport Popover from './src/popover'\nimport ScrollSpy from './src/scrollspy'\nimport Tab from './src/tab'\nimport Toast from './src/toast'\nimport Tooltip from './src/tooltip'\n\nexport default {\n  Alert,\n  Button,\n  Carousel,\n  Collapse,\n  Dropdown,\n  Modal,\n  Offcanvas,\n  Popover,\n  ScrollSpy,\n  Tab,\n  Toast,\n  Tooltip\n}\n"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","undefined","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","uid","getEvent","bootstrapHandler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","i","findHandler","events","delegationSelector","uidEventList","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","isNative","has","addHandler","wrapFn","relatedTarget","handlers","previousFn","replace","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","on","one","inNamespace","isNamespace","elementEvent","slice","keyHandlers","trigger","args","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","elementMap","Map","set","instance","instanceMap","size","console","error","Array","from","remove","delete","VERSION","BaseComponent","constructor","_element","Data","DATA_KEY","dispose","EVENT_KEY","getOwnPropertyNames","propertyName","_queueCallback","isAnimated","getInstance","getOrCreateInstance","Error","enableDismissTrigger","component","method","clickEvent","tagName","closest","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","closeEvent","_destroyElement","each","data","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","setAttribute","button","normalizeData","val","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","pageYOffset","left","pageXOffset","position","offsetTop","offsetLeft","NODE_TEXT","SelectorEngine","find","concat","Element","prototype","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","KEY_TO_DIRECTION","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_INDICATOR","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","order","_handleSwipe","absDeltax","abs","direction","_keydown","_addTouchEventListeners","start","pointerType","clientX","touches","move","end","clearTimeout","itemImg","e","add","_getItemByOrder","isNext","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","slideEvent","triggerSlidEvent","completeCallBack","carouselInterface","action","ride","dataApiClickHandler","slideIndex","carousels","parent","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","actives","activesData","container","tempActiveData","startEvent","elemActive","dimension","_getDimension","style","complete","capitalizedDimension","scrollSize","triggerArrayLength","selected","triggerArray","isOpen","selectorElements","ESCAPE_KEY","SPACE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","REGEXP_KEYDOWN","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_NAVBAR","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","boundary","reference","display","popperConfig","autoClose","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","showEvent","getParentFromElement","_createPopper","focus","_completeHide","destroy","update","hideEvent","Popper","referenceElement","_getPopperConfig","isDisplayStatic","modifiers","modifier","enabled","createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","placement","options","_selectMenuItem","items","clearMenus","toggles","context","composedPath","isMenuTarget","dataApiKeydownHandler","isActive","stopPropagation","getToggleButton","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","ScrollBarHelper","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","overflow","styleProp","scrollbarWidth","manipulationCallBack","_applyManipulationCallback","reset","_resetElementAttributes","actualValue","removeProperty","callBack","isOverflowing","className","rootElement","clickCallback","EVENT_MOUSEDOWN","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","trapElement","autofocus","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_ignoreBackdropClick","_scrollBar","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","scrollTop","transitionComplete","_triggerBackdropTransition","_resetAdjustments","currentTarget","scrollHeight","isModalOverflowing","clientHeight","overflowY","isBodyOverflowing","paddingLeft","paddingRight","scroll","CLASS_NAME_BACKDROP","OPEN_SELECTOR","Offcanvas","visibility","blur","completeCallback","allReadyOpen","uriAttrs","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","domParser","DOMParser","createdDocument","parseFromString","allowlistKeys","elName","attributeList","allowedAttributes","innerHTML","CLASS_PREFIX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_MODAL","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","attachment","_getAttachment","_addAttachmentClass","_resolvePossibleFunction","prevHoverState","_cleanTipClass","getTitle","setContent","_sanitizeAndSetContent","content","templateElement","setElementContent","textContent","updateAttachment","_getDelegateConfig","phase","_handlePopperPlacementChange","onFirstUpdate","_getBasicClassPrefix","triggers","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","basicClassPrefixRegex","tabClass","token","tClass","state","popper","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","EVENT_ACTIVATE","EVENT_SCROLL","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","targetSelector","targetBCR","height","item","sort","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","isActiveTarget","queries","link","listGroup","navItem","node","spy","CLASS_NAME_DROPDOWN_MENU","SELECTOR_ACTIVE_UL","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","listElement","itemSelector","activeElements","active","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","dropdown","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;EAEA,MAAMA,OAAO,GAAG,OAAhB;EACA,MAAMC,uBAAuB,GAAG,IAAhC;EACA,MAAMC,cAAc,GAAG,eAAvB;;EAGA,MAAMC,MAAM,GAAGC,GAAG,IAAI;EACpB,MAAIA,GAAG,KAAK,IAAR,IAAgBA,GAAG,KAAKC,SAA5B,EAAuC;EACrC,WAAQ,GAAED,GAAI,EAAd;EACD;;EAED,SAAO,GAAGE,QAAH,CAAYC,IAAZ,CAAiBH,GAAjB,EAAsBI,KAAtB,CAA4B,aAA5B,EAA2C,CAA3C,EAA8CC,WAA9C,EAAP;EACD,CAND;EAQA;EACA;EACA;EACA;EACA;;;EAEA,MAAMC,MAAM,GAAGC,MAAM,IAAI;EACvB,KAAG;EACDA,IAAAA,MAAM,IAAIC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBd,OAA3B,CAAV;EACD,GAFD,QAESe,QAAQ,CAACC,cAAT,CAAwBL,MAAxB,CAFT;;EAIA,SAAOA,MAAP;EACD,CAND;;EAQA,MAAMM,WAAW,GAAGC,OAAO,IAAI;EAC7B,MAAIC,QAAQ,GAAGD,OAAO,CAACE,YAAR,CAAqB,gBAArB,CAAf;;EAEA,MAAI,CAACD,QAAD,IAAaA,QAAQ,KAAK,GAA9B,EAAmC;EACjC,QAAIE,QAAQ,GAAGH,OAAO,CAACE,YAAR,CAAqB,MAArB,CAAf,CADiC;EAIjC;EACA;EACA;;EACA,QAAI,CAACC,QAAD,IAAc,CAACA,QAAQ,CAACC,QAAT,CAAkB,GAAlB,CAAD,IAA2B,CAACD,QAAQ,CAACE,UAAT,CAAoB,GAApB,CAA9C,EAAyE;EACvE,aAAO,IAAP;EACD,KATgC;;;EAYjC,QAAIF,QAAQ,CAACC,QAAT,CAAkB,GAAlB,KAA0B,CAACD,QAAQ,CAACE,UAAT,CAAoB,GAApB,CAA/B,EAAyD;EACvDF,MAAAA,QAAQ,GAAI,IAAGA,QAAQ,CAACG,KAAT,CAAe,GAAf,EAAoB,CAApB,CAAuB,EAAtC;EACD;;EAEDL,IAAAA,QAAQ,GAAGE,QAAQ,IAAIA,QAAQ,KAAK,GAAzB,GAA+BA,QAAQ,CAACI,IAAT,EAA/B,GAAiD,IAA5D;EACD;;EAED,SAAON,QAAP;EACD,CAvBD;;EAyBA,MAAMO,sBAAsB,GAAGR,OAAO,IAAI;EACxC,QAAMC,QAAQ,GAAGF,WAAW,CAACC,OAAD,CAA5B;;EAEA,MAAIC,QAAJ,EAAc;EACZ,WAAOJ,QAAQ,CAACY,aAAT,CAAuBR,QAAvB,IAAmCA,QAAnC,GAA8C,IAArD;EACD;;EAED,SAAO,IAAP;EACD,CARD;;EAUA,MAAMS,sBAAsB,GAAGV,OAAO,IAAI;EACxC,QAAMC,QAAQ,GAAGF,WAAW,CAACC,OAAD,CAA5B;EAEA,SAAOC,QAAQ,GAAGJ,QAAQ,CAACY,aAAT,CAAuBR,QAAvB,CAAH,GAAsC,IAArD;EACD,CAJD;;EAMA,MAAMU,gCAAgC,GAAGX,OAAO,IAAI;EAClD,MAAI,CAACA,OAAL,EAAc;EACZ,WAAO,CAAP;EACD,GAHiD;;;EAMlD,MAAI;EAAEY,IAAAA,kBAAF;EAAsBC,IAAAA;EAAtB,MAA0CC,MAAM,CAACC,gBAAP,CAAwBf,OAAxB,CAA9C;EAEA,QAAMgB,uBAAuB,GAAGC,MAAM,CAACC,UAAP,CAAkBN,kBAAlB,CAAhC;EACA,QAAMO,oBAAoB,GAAGF,MAAM,CAACC,UAAP,CAAkBL,eAAlB,CAA7B,CATkD;;EAYlD,MAAI,CAACG,uBAAD,IAA4B,CAACG,oBAAjC,EAAuD;EACrD,WAAO,CAAP;EACD,GAdiD;;;EAiBlDP,EAAAA,kBAAkB,GAAGA,kBAAkB,CAACN,KAAnB,CAAyB,GAAzB,EAA8B,CAA9B,CAArB;EACAO,EAAAA,eAAe,GAAGA,eAAe,CAACP,KAAhB,CAAsB,GAAtB,EAA2B,CAA3B,CAAlB;EAEA,SAAO,CAACW,MAAM,CAACC,UAAP,CAAkBN,kBAAlB,IAAwCK,MAAM,CAACC,UAAP,CAAkBL,eAAlB,CAAzC,IAA+E9B,uBAAtF;EACD,CArBD;;EAuBA,MAAMqC,oBAAoB,GAAGpB,OAAO,IAAI;EACtCA,EAAAA,OAAO,CAACqB,aAAR,CAAsB,IAAIC,KAAJ,CAAUtC,cAAV,CAAtB;EACD,CAFD;;EAIA,MAAMuC,SAAS,GAAGrC,GAAG,IAAI;EACvB,MAAI,CAACA,GAAD,IAAQ,OAAOA,GAAP,KAAe,QAA3B,EAAqC;EACnC,WAAO,KAAP;EACD;;EAED,MAAI,OAAOA,GAAG,CAACsC,MAAX,KAAsB,WAA1B,EAAuC;EACrCtC,IAAAA,GAAG,GAAGA,GAAG,CAAC,CAAD,CAAT;EACD;;EAED,SAAO,OAAOA,GAAG,CAACuC,QAAX,KAAwB,WAA/B;EACD,CAVD;;EAYA,MAAMC,UAAU,GAAGxC,GAAG,IAAI;EACxB,MAAIqC,SAAS,CAACrC,GAAD,CAAb,EAAoB;EAAE;EACpB,WAAOA,GAAG,CAACsC,MAAJ,GAAatC,GAAG,CAAC,CAAD,CAAhB,GAAsBA,GAA7B;EACD;;EAED,MAAI,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAG,CAACyC,MAAJ,GAAa,CAA5C,EAA+C;EAC7C,WAAO9B,QAAQ,CAACY,aAAT,CAAuBvB,GAAvB,CAAP;EACD;;EAED,SAAO,IAAP;EACD,CAVD;;EAYA,MAAM0C,eAAe,GAAG,CAACC,aAAD,EAAgBC,MAAhB,EAAwBC,WAAxB,KAAwC;EAC9DC,EAAAA,MAAM,CAACC,IAAP,CAAYF,WAAZ,EAAyBG,OAAzB,CAAiCC,QAAQ,IAAI;EAC3C,UAAMC,aAAa,GAAGL,WAAW,CAACI,QAAD,CAAjC;EACA,UAAME,KAAK,GAAGP,MAAM,CAACK,QAAD,CAApB;EACA,UAAMG,SAAS,GAAGD,KAAK,IAAId,SAAS,CAACc,KAAD,CAAlB,GAA4B,SAA5B,GAAwCpD,MAAM,CAACoD,KAAD,CAAhE;;EAEA,QAAI,CAAC,IAAIE,MAAJ,CAAWH,aAAX,EAA0BI,IAA1B,CAA+BF,SAA/B,CAAL,EAAgD;EAC9C,YAAM,IAAIG,SAAJ,CACH,GAAEZ,aAAa,CAACa,WAAd,EAA4B,aAAYP,QAAS,oBAAmBG,SAAU,wBAAuBF,aAAc,IADlH,CAAN;EAGD;EACF,GAVD;EAWD,CAZD;;EAcA,MAAMO,SAAS,GAAG3C,OAAO,IAAI;EAC3B,MAAI,CAACuB,SAAS,CAACvB,OAAD,CAAV,IAAuBA,OAAO,CAAC4C,cAAR,GAAyBjB,MAAzB,KAAoC,CAA/D,EAAkE;EAChE,WAAO,KAAP;EACD;;EAED,SAAOZ,gBAAgB,CAACf,OAAD,CAAhB,CAA0B6C,gBAA1B,CAA2C,YAA3C,MAA6D,SAApE;EACD,CAND;;EAQA,MAAMC,UAAU,GAAG9C,OAAO,IAAI;EAC5B,MAAI,CAACA,OAAD,IAAYA,OAAO,CAACyB,QAAR,KAAqBsB,IAAI,CAACC,YAA1C,EAAwD;EACtD,WAAO,IAAP;EACD;;EAED,MAAIhD,OAAO,CAACiD,SAAR,CAAkBC,QAAlB,CAA2B,UAA3B,CAAJ,EAA4C;EAC1C,WAAO,IAAP;EACD;;EAED,MAAI,OAAOlD,OAAO,CAACmD,QAAf,KAA4B,WAAhC,EAA6C;EAC3C,WAAOnD,OAAO,CAACmD,QAAf;EACD;;EAED,SAAOnD,OAAO,CAACoD,YAAR,CAAqB,UAArB,KAAoCpD,OAAO,CAACE,YAAR,CAAqB,UAArB,MAAqC,OAAhF;EACD,CAdD;;EAgBA,MAAMmD,cAAc,GAAGrD,OAAO,IAAI;EAChC,MAAI,CAACH,QAAQ,CAACyD,eAAT,CAAyBC,YAA9B,EAA4C;EAC1C,WAAO,IAAP;EACD,GAH+B;;;EAMhC,MAAI,OAAOvD,OAAO,CAACwD,WAAf,KAA+B,UAAnC,EAA+C;EAC7C,UAAMC,IAAI,GAAGzD,OAAO,CAACwD,WAAR,EAAb;EACA,WAAOC,IAAI,YAAYC,UAAhB,GAA6BD,IAA7B,GAAoC,IAA3C;EACD;;EAED,MAAIzD,OAAO,YAAY0D,UAAvB,EAAmC;EACjC,WAAO1D,OAAP;EACD,GAb+B;;;EAgBhC,MAAI,CAACA,OAAO,CAAC2D,UAAb,EAAyB;EACvB,WAAO,IAAP;EACD;;EAED,SAAON,cAAc,CAACrD,OAAO,CAAC2D,UAAT,CAArB;EACD,CArBD;;EAuBA,MAAMC,IAAI,GAAG,MAAM,EAAnB;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,MAAMC,MAAM,GAAG7D,OAAO,IAAI;EACxB;EACAA,EAAAA,OAAO,CAAC8D,YAAR;EACD,CAHD;;EAKA,MAAMC,SAAS,GAAG,MAAM;EACtB,QAAM;EAAEC,IAAAA;EAAF,MAAalD,MAAnB;;EAEA,MAAIkD,MAAM,IAAI,CAACnE,QAAQ,CAACoE,IAAT,CAAcb,YAAd,CAA2B,mBAA3B,CAAf,EAAgE;EAC9D,WAAOY,MAAP;EACD;;EAED,SAAO,IAAP;EACD,CARD;;EAUA,MAAME,yBAAyB,GAAG,EAAlC;;EAEA,MAAMC,kBAAkB,GAAGC,QAAQ,IAAI;EACrC,MAAIvE,QAAQ,CAACwE,UAAT,KAAwB,SAA5B,EAAuC;EACrC;EACA,QAAI,CAACH,yBAAyB,CAACvC,MAA/B,EAAuC;EACrC9B,MAAAA,QAAQ,CAACyE,gBAAT,CAA0B,kBAA1B,EAA8C,MAAM;EAClDJ,QAAAA,yBAAyB,CAAChC,OAA1B,CAAkCkC,QAAQ,IAAIA,QAAQ,EAAtD;EACD,OAFD;EAGD;;EAEDF,IAAAA,yBAAyB,CAACK,IAA1B,CAA+BH,QAA/B;EACD,GATD,MASO;EACLA,IAAAA,QAAQ;EACT;EACF,CAbD;;EAeA,MAAMI,KAAK,GAAG,MAAM3E,QAAQ,CAACyD,eAAT,CAAyBmB,GAAzB,KAAiC,KAArD;;EAEA,MAAMC,kBAAkB,GAAGC,MAAM,IAAI;EACnCR,EAAAA,kBAAkB,CAAC,MAAM;EACvB,UAAMS,CAAC,GAAGb,SAAS,EAAnB;EACA;;EACA,QAAIa,CAAJ,EAAO;EACL,YAAMC,IAAI,GAAGF,MAAM,CAACG,IAApB;EACA,YAAMC,kBAAkB,GAAGH,CAAC,CAACI,EAAF,CAAKH,IAAL,CAA3B;EACAD,MAAAA,CAAC,CAACI,EAAF,CAAKH,IAAL,IAAaF,MAAM,CAACM,eAApB;EACAL,MAAAA,CAAC,CAACI,EAAF,CAAKH,IAAL,EAAWK,WAAX,GAAyBP,MAAzB;;EACAC,MAAAA,CAAC,CAACI,EAAF,CAAKH,IAAL,EAAWM,UAAX,GAAwB,MAAM;EAC5BP,QAAAA,CAAC,CAACI,EAAF,CAAKH,IAAL,IAAaE,kBAAb;EACA,eAAOJ,MAAM,CAACM,eAAd;EACD,OAHD;EAID;EACF,GAbiB,CAAlB;EAcD,CAfD;;EAiBA,MAAMG,OAAO,GAAGhB,QAAQ,IAAI;EAC1B,MAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;EAClCA,IAAAA,QAAQ;EACT;EACF,CAJD;;EAMA,MAAMiB,sBAAsB,GAAG,CAACjB,QAAD,EAAWkB,iBAAX,EAA8BC,iBAAiB,GAAG,IAAlD,KAA2D;EACxF,MAAI,CAACA,iBAAL,EAAwB;EACtBH,IAAAA,OAAO,CAAChB,QAAD,CAAP;EACA;EACD;;EAED,QAAMoB,eAAe,GAAG,CAAxB;EACA,QAAMC,gBAAgB,GAAG9E,gCAAgC,CAAC2E,iBAAD,CAAhC,GAAsDE,eAA/E;EAEA,MAAIE,MAAM,GAAG,KAAb;;EAEA,QAAMC,OAAO,GAAG,CAAC;EAAEC,IAAAA;EAAF,GAAD,KAAgB;EAC9B,QAAIA,MAAM,KAAKN,iBAAf,EAAkC;EAChC;EACD;;EAEDI,IAAAA,MAAM,GAAG,IAAT;EACAJ,IAAAA,iBAAiB,CAACO,mBAAlB,CAAsC7G,cAAtC,EAAsD2G,OAAtD;EACAP,IAAAA,OAAO,CAAChB,QAAD,CAAP;EACD,GARD;;EAUAkB,EAAAA,iBAAiB,CAAChB,gBAAlB,CAAmCtF,cAAnC,EAAmD2G,OAAnD;EACAG,EAAAA,UAAU,CAAC,MAAM;EACf,QAAI,CAACJ,MAAL,EAAa;EACXtE,MAAAA,oBAAoB,CAACkE,iBAAD,CAApB;EACD;EACF,GAJS,EAIPG,gBAJO,CAAV;EAKD,CA3BD;EA6BA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,MAAMM,oBAAoB,GAAG,CAACC,IAAD,EAAOC,aAAP,EAAsBC,aAAtB,EAAqCC,cAArC,KAAwD;EACnF,MAAIC,KAAK,GAAGJ,IAAI,CAACK,OAAL,CAAaJ,aAAb,CAAZ,CADmF;;EAInF,MAAIG,KAAK,KAAK,CAAC,CAAf,EAAkB;EAChB,WAAOJ,IAAI,CAAC,CAACE,aAAD,IAAkBC,cAAlB,GAAmCH,IAAI,CAACrE,MAAL,GAAc,CAAjD,GAAqD,CAAtD,CAAX;EACD;;EAED,QAAM2E,UAAU,GAAGN,IAAI,CAACrE,MAAxB;EAEAyE,EAAAA,KAAK,IAAIF,aAAa,GAAG,CAAH,GAAO,CAAC,CAA9B;;EAEA,MAAIC,cAAJ,EAAoB;EAClBC,IAAAA,KAAK,GAAG,CAACA,KAAK,GAAGE,UAAT,IAAuBA,UAA/B;EACD;;EAED,SAAON,IAAI,CAACtG,IAAI,CAAC6G,GAAL,CAAS,CAAT,EAAY7G,IAAI,CAAC8G,GAAL,CAASJ,KAAT,EAAgBE,UAAU,GAAG,CAA7B,CAAZ,CAAD,CAAX;EACD,CAjBD;;ECpSA;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;EACA;EACA;EACA;;EAEA,MAAMG,cAAc,GAAG,oBAAvB;EACA,MAAMC,cAAc,GAAG,MAAvB;EACA,MAAMC,aAAa,GAAG,QAAtB;EACA,MAAMC,aAAa,GAAG,EAAtB;;EACA,IAAIC,QAAQ,GAAG,CAAf;EACA,MAAMC,YAAY,GAAG;EACnBC,EAAAA,UAAU,EAAE,WADO;EAEnBC,EAAAA,UAAU,EAAE;EAFO,CAArB;EAIA,MAAMC,iBAAiB,GAAG,2BAA1B;EACA,MAAMC,YAAY,GAAG,IAAIC,GAAJ,CAAQ,CAC3B,OAD2B,EAE3B,UAF2B,EAG3B,SAH2B,EAI3B,WAJ2B,EAK3B,aAL2B,EAM3B,YAN2B,EAO3B,gBAP2B,EAQ3B,WAR2B,EAS3B,UAT2B,EAU3B,WAV2B,EAW3B,aAX2B,EAY3B,WAZ2B,EAa3B,SAb2B,EAc3B,UAd2B,EAe3B,OAf2B,EAgB3B,mBAhB2B,EAiB3B,YAjB2B,EAkB3B,WAlB2B,EAmB3B,UAnB2B,EAoB3B,aApB2B,EAqB3B,aArB2B,EAsB3B,aAtB2B,EAuB3B,WAvB2B,EAwB3B,cAxB2B,EAyB3B,eAzB2B,EA0B3B,cA1B2B,EA2B3B,eA3B2B,EA4B3B,YA5B2B,EA6B3B,OA7B2B,EA8B3B,MA9B2B,EA+B3B,QA/B2B,EAgC3B,OAhC2B,EAiC3B,QAjC2B,EAkC3B,QAlC2B,EAmC3B,SAnC2B,EAoC3B,UApC2B,EAqC3B,MArC2B,EAsC3B,QAtC2B,EAuC3B,cAvC2B,EAwC3B,QAxC2B,EAyC3B,MAzC2B,EA0C3B,kBA1C2B,EA2C3B,kBA3C2B,EA4C3B,OA5C2B,EA6C3B,OA7C2B,EA8C3B,QA9C2B,CAAR,CAArB;EAiDA;EACA;EACA;EACA;EACA;;EAEA,SAASC,WAAT,CAAqBpH,OAArB,EAA8BqH,GAA9B,EAAmC;EACjC,SAAQA,GAAG,IAAK,GAAEA,GAAI,KAAIR,QAAQ,EAAG,EAA9B,IAAoC7G,OAAO,CAAC6G,QAA5C,IAAwDA,QAAQ,EAAvE;EACD;;EAED,SAASS,QAAT,CAAkBtH,OAAlB,EAA2B;EACzB,QAAMqH,GAAG,GAAGD,WAAW,CAACpH,OAAD,CAAvB;EAEAA,EAAAA,OAAO,CAAC6G,QAAR,GAAmBQ,GAAnB;EACAT,EAAAA,aAAa,CAACS,GAAD,CAAb,GAAqBT,aAAa,CAACS,GAAD,CAAb,IAAsB,EAA3C;EAEA,SAAOT,aAAa,CAACS,GAAD,CAApB;EACD;;EAED,SAASE,gBAAT,CAA0BvH,OAA1B,EAAmCgF,EAAnC,EAAuC;EACrC,SAAO,SAASW,OAAT,CAAiB6B,KAAjB,EAAwB;EAC7BA,IAAAA,KAAK,CAACC,cAAN,GAAuBzH,OAAvB;;EAEA,QAAI2F,OAAO,CAAC+B,MAAZ,EAAoB;EAClBC,MAAAA,YAAY,CAACC,GAAb,CAAiB5H,OAAjB,EAA0BwH,KAAK,CAACK,IAAhC,EAAsC7C,EAAtC;EACD;;EAED,WAAOA,EAAE,CAAC8C,KAAH,CAAS9H,OAAT,EAAkB,CAACwH,KAAD,CAAlB,CAAP;EACD,GARD;EASD;;EAED,SAASO,0BAAT,CAAoC/H,OAApC,EAA6CC,QAA7C,EAAuD+E,EAAvD,EAA2D;EACzD,SAAO,SAASW,OAAT,CAAiB6B,KAAjB,EAAwB;EAC7B,UAAMQ,WAAW,GAAGhI,OAAO,CAACiI,gBAAR,CAAyBhI,QAAzB,CAApB;;EAEA,SAAK,IAAI;EAAE2F,MAAAA;EAAF,QAAa4B,KAAtB,EAA6B5B,MAAM,IAAIA,MAAM,KAAK,IAAlD,EAAwDA,MAAM,GAAGA,MAAM,CAACjC,UAAxE,EAAoF;EAClF,WAAK,IAAIuE,CAAC,GAAGF,WAAW,CAACrG,MAAzB,EAAiCuG,CAAC,EAAlC,GAAuC;EACrC,YAAIF,WAAW,CAACE,CAAD,CAAX,KAAmBtC,MAAvB,EAA+B;EAC7B4B,UAAAA,KAAK,CAACC,cAAN,GAAuB7B,MAAvB;;EAEA,cAAID,OAAO,CAAC+B,MAAZ,EAAoB;EAClB;EACAC,YAAAA,YAAY,CAACC,GAAb,CAAiB5H,OAAjB,EAA0BwH,KAAK,CAACK,IAAhC,EAAsC5H,QAAtC,EAAgD+E,EAAhD;EACD;;EAED,iBAAOA,EAAE,CAAC8C,KAAH,CAASlC,MAAT,EAAiB,CAAC4B,KAAD,CAAjB,CAAP;EACD;EACF;EACF,KAhB4B;;;EAmB7B,WAAO,IAAP;EACD,GApBD;EAqBD;;EAED,SAASW,WAAT,CAAqBC,MAArB,EAA6BzC,OAA7B,EAAsC0C,kBAAkB,GAAG,IAA3D,EAAiE;EAC/D,QAAMC,YAAY,GAAGtG,MAAM,CAACC,IAAP,CAAYmG,MAAZ,CAArB;;EAEA,OAAK,IAAIF,CAAC,GAAG,CAAR,EAAWK,GAAG,GAAGD,YAAY,CAAC3G,MAAnC,EAA2CuG,CAAC,GAAGK,GAA/C,EAAoDL,CAAC,EAArD,EAAyD;EACvD,UAAMV,KAAK,GAAGY,MAAM,CAACE,YAAY,CAACJ,CAAD,CAAb,CAApB;;EAEA,QAAIV,KAAK,CAACgB,eAAN,KAA0B7C,OAA1B,IAAqC6B,KAAK,CAACa,kBAAN,KAA6BA,kBAAtE,EAA0F;EACxF,aAAOb,KAAP;EACD;EACF;;EAED,SAAO,IAAP;EACD;;EAED,SAASiB,eAAT,CAAyBC,iBAAzB,EAA4C/C,OAA5C,EAAqDgD,YAArD,EAAmE;EACjE,QAAMC,UAAU,GAAG,OAAOjD,OAAP,KAAmB,QAAtC;EACA,QAAM6C,eAAe,GAAGI,UAAU,GAAGD,YAAH,GAAkBhD,OAApD;EAEA,MAAIkD,SAAS,GAAGC,YAAY,CAACJ,iBAAD,CAA5B;EACA,QAAMK,QAAQ,GAAG7B,YAAY,CAAC8B,GAAb,CAAiBH,SAAjB,CAAjB;;EAEA,MAAI,CAACE,QAAL,EAAe;EACbF,IAAAA,SAAS,GAAGH,iBAAZ;EACD;;EAED,SAAO,CAACE,UAAD,EAAaJ,eAAb,EAA8BK,SAA9B,CAAP;EACD;;EAED,SAASI,UAAT,CAAoBjJ,OAApB,EAA6B0I,iBAA7B,EAAgD/C,OAAhD,EAAyDgD,YAAzD,EAAuEjB,MAAvE,EAA+E;EAC7E,MAAI,OAAOgB,iBAAP,KAA6B,QAA7B,IAAyC,CAAC1I,OAA9C,EAAuD;EACrD;EACD;;EAED,MAAI,CAAC2F,OAAL,EAAc;EACZA,IAAAA,OAAO,GAAGgD,YAAV;EACAA,IAAAA,YAAY,GAAG,IAAf;EACD,GAR4E;EAW7E;;;EACA,MAAI1B,iBAAiB,CAACzE,IAAlB,CAAuBkG,iBAAvB,CAAJ,EAA+C;EAC7C,UAAMQ,MAAM,GAAGlE,EAAE,IAAI;EACnB,aAAO,UAAUwC,KAAV,EAAiB;EACtB,YAAI,CAACA,KAAK,CAAC2B,aAAP,IAAyB3B,KAAK,CAAC2B,aAAN,KAAwB3B,KAAK,CAACC,cAA9B,IAAgD,CAACD,KAAK,CAACC,cAAN,CAAqBvE,QAArB,CAA8BsE,KAAK,CAAC2B,aAApC,CAA9E,EAAmI;EACjI,iBAAOnE,EAAE,CAAC3F,IAAH,CAAQ,IAAR,EAAcmI,KAAd,CAAP;EACD;EACF,OAJD;EAKD,KAND;;EAQA,QAAImB,YAAJ,EAAkB;EAChBA,MAAAA,YAAY,GAAGO,MAAM,CAACP,YAAD,CAArB;EACD,KAFD,MAEO;EACLhD,MAAAA,OAAO,GAAGuD,MAAM,CAACvD,OAAD,CAAhB;EACD;EACF;;EAED,QAAM,CAACiD,UAAD,EAAaJ,eAAb,EAA8BK,SAA9B,IAA2CJ,eAAe,CAACC,iBAAD,EAAoB/C,OAApB,EAA6BgD,YAA7B,CAAhE;EACA,QAAMP,MAAM,GAAGd,QAAQ,CAACtH,OAAD,CAAvB;EACA,QAAMoJ,QAAQ,GAAGhB,MAAM,CAACS,SAAD,CAAN,KAAsBT,MAAM,CAACS,SAAD,CAAN,GAAoB,EAA1C,CAAjB;EACA,QAAMQ,UAAU,GAAGlB,WAAW,CAACiB,QAAD,EAAWZ,eAAX,EAA4BI,UAAU,GAAGjD,OAAH,GAAa,IAAnD,CAA9B;;EAEA,MAAI0D,UAAJ,EAAgB;EACdA,IAAAA,UAAU,CAAC3B,MAAX,GAAoB2B,UAAU,CAAC3B,MAAX,IAAqBA,MAAzC;EAEA;EACD;;EAED,QAAML,GAAG,GAAGD,WAAW,CAACoB,eAAD,EAAkBE,iBAAiB,CAACY,OAAlB,CAA0B7C,cAA1B,EAA0C,EAA1C,CAAlB,CAAvB;EACA,QAAMzB,EAAE,GAAG4D,UAAU,GACnBb,0BAA0B,CAAC/H,OAAD,EAAU2F,OAAV,EAAmBgD,YAAnB,CADP,GAEnBpB,gBAAgB,CAACvH,OAAD,EAAU2F,OAAV,CAFlB;EAIAX,EAAAA,EAAE,CAACqD,kBAAH,GAAwBO,UAAU,GAAGjD,OAAH,GAAa,IAA/C;EACAX,EAAAA,EAAE,CAACwD,eAAH,GAAqBA,eAArB;EACAxD,EAAAA,EAAE,CAAC0C,MAAH,GAAYA,MAAZ;EACA1C,EAAAA,EAAE,CAAC6B,QAAH,GAAcQ,GAAd;EACA+B,EAAAA,QAAQ,CAAC/B,GAAD,CAAR,GAAgBrC,EAAhB;EAEAhF,EAAAA,OAAO,CAACsE,gBAAR,CAAyBuE,SAAzB,EAAoC7D,EAApC,EAAwC4D,UAAxC;EACD;;EAED,SAASW,aAAT,CAAuBvJ,OAAvB,EAAgCoI,MAAhC,EAAwCS,SAAxC,EAAmDlD,OAAnD,EAA4D0C,kBAA5D,EAAgF;EAC9E,QAAMrD,EAAE,GAAGmD,WAAW,CAACC,MAAM,CAACS,SAAD,CAAP,EAAoBlD,OAApB,EAA6B0C,kBAA7B,CAAtB;;EAEA,MAAI,CAACrD,EAAL,EAAS;EACP;EACD;;EAEDhF,EAAAA,OAAO,CAAC6F,mBAAR,CAA4BgD,SAA5B,EAAuC7D,EAAvC,EAA2CwE,OAAO,CAACnB,kBAAD,CAAlD;EACA,SAAOD,MAAM,CAACS,SAAD,CAAN,CAAkB7D,EAAE,CAAC6B,QAArB,CAAP;EACD;;EAED,SAAS4C,wBAAT,CAAkCzJ,OAAlC,EAA2CoI,MAA3C,EAAmDS,SAAnD,EAA8Da,SAA9D,EAAyE;EACvE,QAAMC,iBAAiB,GAAGvB,MAAM,CAACS,SAAD,CAAN,IAAqB,EAA/C;EAEA7G,EAAAA,MAAM,CAACC,IAAP,CAAY0H,iBAAZ,EAA+BzH,OAA/B,CAAuC0H,UAAU,IAAI;EACnD,QAAIA,UAAU,CAACxJ,QAAX,CAAoBsJ,SAApB,CAAJ,EAAoC;EAClC,YAAMlC,KAAK,GAAGmC,iBAAiB,CAACC,UAAD,CAA/B;EAEAL,MAAAA,aAAa,CAACvJ,OAAD,EAAUoI,MAAV,EAAkBS,SAAlB,EAA6BrB,KAAK,CAACgB,eAAnC,EAAoDhB,KAAK,CAACa,kBAA1D,CAAb;EACD;EACF,GAND;EAOD;;EAED,SAASS,YAAT,CAAsBtB,KAAtB,EAA6B;EAC3B;EACAA,EAAAA,KAAK,GAAGA,KAAK,CAAC8B,OAAN,CAAc5C,cAAd,EAA8B,EAA9B,CAAR;EACA,SAAOI,YAAY,CAACU,KAAD,CAAZ,IAAuBA,KAA9B;EACD;;EAED,MAAMG,YAAY,GAAG;EACnBkC,EAAAA,EAAE,CAAC7J,OAAD,EAAUwH,KAAV,EAAiB7B,OAAjB,EAA0BgD,YAA1B,EAAwC;EACxCM,IAAAA,UAAU,CAACjJ,OAAD,EAAUwH,KAAV,EAAiB7B,OAAjB,EAA0BgD,YAA1B,EAAwC,KAAxC,CAAV;EACD,GAHkB;;EAKnBmB,EAAAA,GAAG,CAAC9J,OAAD,EAAUwH,KAAV,EAAiB7B,OAAjB,EAA0BgD,YAA1B,EAAwC;EACzCM,IAAAA,UAAU,CAACjJ,OAAD,EAAUwH,KAAV,EAAiB7B,OAAjB,EAA0BgD,YAA1B,EAAwC,IAAxC,CAAV;EACD,GAPkB;;EASnBf,EAAAA,GAAG,CAAC5H,OAAD,EAAU0I,iBAAV,EAA6B/C,OAA7B,EAAsCgD,YAAtC,EAAoD;EACrD,QAAI,OAAOD,iBAAP,KAA6B,QAA7B,IAAyC,CAAC1I,OAA9C,EAAuD;EACrD;EACD;;EAED,UAAM,CAAC4I,UAAD,EAAaJ,eAAb,EAA8BK,SAA9B,IAA2CJ,eAAe,CAACC,iBAAD,EAAoB/C,OAApB,EAA6BgD,YAA7B,CAAhE;EACA,UAAMoB,WAAW,GAAGlB,SAAS,KAAKH,iBAAlC;EACA,UAAMN,MAAM,GAAGd,QAAQ,CAACtH,OAAD,CAAvB;EACA,UAAMgK,WAAW,GAAGtB,iBAAiB,CAACrI,UAAlB,CAA6B,GAA7B,CAApB;;EAEA,QAAI,OAAOmI,eAAP,KAA2B,WAA/B,EAA4C;EAC1C;EACA,UAAI,CAACJ,MAAD,IAAW,CAACA,MAAM,CAACS,SAAD,CAAtB,EAAmC;EACjC;EACD;;EAEDU,MAAAA,aAAa,CAACvJ,OAAD,EAAUoI,MAAV,EAAkBS,SAAlB,EAA6BL,eAA7B,EAA8CI,UAAU,GAAGjD,OAAH,GAAa,IAArE,CAAb;EACA;EACD;;EAED,QAAIqE,WAAJ,EAAiB;EACfhI,MAAAA,MAAM,CAACC,IAAP,CAAYmG,MAAZ,EAAoBlG,OAApB,CAA4B+H,YAAY,IAAI;EAC1CR,QAAAA,wBAAwB,CAACzJ,OAAD,EAAUoI,MAAV,EAAkB6B,YAAlB,EAAgCvB,iBAAiB,CAACwB,KAAlB,CAAwB,CAAxB,CAAhC,CAAxB;EACD,OAFD;EAGD;;EAED,UAAMP,iBAAiB,GAAGvB,MAAM,CAACS,SAAD,CAAN,IAAqB,EAA/C;EACA7G,IAAAA,MAAM,CAACC,IAAP,CAAY0H,iBAAZ,EAA+BzH,OAA/B,CAAuCiI,WAAW,IAAI;EACpD,YAAMP,UAAU,GAAGO,WAAW,CAACb,OAAZ,CAAoB3C,aAApB,EAAmC,EAAnC,CAAnB;;EAEA,UAAI,CAACoD,WAAD,IAAgBrB,iBAAiB,CAACtI,QAAlB,CAA2BwJ,UAA3B,CAApB,EAA4D;EAC1D,cAAMpC,KAAK,GAAGmC,iBAAiB,CAACQ,WAAD,CAA/B;EAEAZ,QAAAA,aAAa,CAACvJ,OAAD,EAAUoI,MAAV,EAAkBS,SAAlB,EAA6BrB,KAAK,CAACgB,eAAnC,EAAoDhB,KAAK,CAACa,kBAA1D,CAAb;EACD;EACF,KARD;EASD,GA7CkB;;EA+CnB+B,EAAAA,OAAO,CAACpK,OAAD,EAAUwH,KAAV,EAAiB6C,IAAjB,EAAuB;EAC5B,QAAI,OAAO7C,KAAP,KAAiB,QAAjB,IAA6B,CAACxH,OAAlC,EAA2C;EACzC,aAAO,IAAP;EACD;;EAED,UAAM4E,CAAC,GAAGb,SAAS,EAAnB;EACA,UAAM8E,SAAS,GAAGC,YAAY,CAACtB,KAAD,CAA9B;EACA,UAAMuC,WAAW,GAAGvC,KAAK,KAAKqB,SAA9B;EACA,UAAME,QAAQ,GAAG7B,YAAY,CAAC8B,GAAb,CAAiBH,SAAjB,CAAjB;EAEA,QAAIyB,WAAJ;EACA,QAAIC,OAAO,GAAG,IAAd;EACA,QAAIC,cAAc,GAAG,IAArB;EACA,QAAIC,gBAAgB,GAAG,KAAvB;EACA,QAAIC,GAAG,GAAG,IAAV;;EAEA,QAAIX,WAAW,IAAInF,CAAnB,EAAsB;EACpB0F,MAAAA,WAAW,GAAG1F,CAAC,CAACtD,KAAF,CAAQkG,KAAR,EAAe6C,IAAf,CAAd;EAEAzF,MAAAA,CAAC,CAAC5E,OAAD,CAAD,CAAWoK,OAAX,CAAmBE,WAAnB;EACAC,MAAAA,OAAO,GAAG,CAACD,WAAW,CAACK,oBAAZ,EAAX;EACAH,MAAAA,cAAc,GAAG,CAACF,WAAW,CAACM,6BAAZ,EAAlB;EACAH,MAAAA,gBAAgB,GAAGH,WAAW,CAACO,kBAAZ,EAAnB;EACD;;EAED,QAAI9B,QAAJ,EAAc;EACZ2B,MAAAA,GAAG,GAAG7K,QAAQ,CAACiL,WAAT,CAAqB,YAArB,CAAN;EACAJ,MAAAA,GAAG,CAACK,SAAJ,CAAclC,SAAd,EAAyB0B,OAAzB,EAAkC,IAAlC;EACD,KAHD,MAGO;EACLG,MAAAA,GAAG,GAAG,IAAIM,WAAJ,CAAgBxD,KAAhB,EAAuB;EAC3B+C,QAAAA,OAD2B;EAE3BU,QAAAA,UAAU,EAAE;EAFe,OAAvB,CAAN;EAID,KAjC2B;;;EAoC5B,QAAI,OAAOZ,IAAP,KAAgB,WAApB,EAAiC;EAC/BrI,MAAAA,MAAM,CAACC,IAAP,CAAYoI,IAAZ,EAAkBnI,OAAlB,CAA0BgJ,GAAG,IAAI;EAC/BlJ,QAAAA,MAAM,CAACmJ,cAAP,CAAsBT,GAAtB,EAA2BQ,GAA3B,EAAgC;EAC9BE,UAAAA,GAAG,GAAG;EACJ,mBAAOf,IAAI,CAACa,GAAD,CAAX;EACD;;EAH6B,SAAhC;EAKD,OAND;EAOD;;EAED,QAAIT,gBAAJ,EAAsB;EACpBC,MAAAA,GAAG,CAACW,cAAJ;EACD;;EAED,QAAIb,cAAJ,EAAoB;EAClBxK,MAAAA,OAAO,CAACqB,aAAR,CAAsBqJ,GAAtB;EACD;;EAED,QAAIA,GAAG,CAACD,gBAAJ,IAAwB,OAAOH,WAAP,KAAuB,WAAnD,EAAgE;EAC9DA,MAAAA,WAAW,CAACe,cAAZ;EACD;;EAED,WAAOX,GAAP;EACD;;EA1GkB,CAArB;;EC/OA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EAEA,MAAMY,UAAU,GAAG,IAAIC,GAAJ,EAAnB;AAEA,aAAe;EACbC,EAAAA,GAAG,CAACxL,OAAD,EAAUkL,GAAV,EAAeO,QAAf,EAAyB;EAC1B,QAAI,CAACH,UAAU,CAACtC,GAAX,CAAehJ,OAAf,CAAL,EAA8B;EAC5BsL,MAAAA,UAAU,CAACE,GAAX,CAAexL,OAAf,EAAwB,IAAIuL,GAAJ,EAAxB;EACD;;EAED,UAAMG,WAAW,GAAGJ,UAAU,CAACF,GAAX,CAAepL,OAAf,CAApB,CAL0B;EAQ1B;;EACA,QAAI,CAAC0L,WAAW,CAAC1C,GAAZ,CAAgBkC,GAAhB,CAAD,IAAyBQ,WAAW,CAACC,IAAZ,KAAqB,CAAlD,EAAqD;EACnD;EACAC,MAAAA,OAAO,CAACC,KAAR,CAAe,+EAA8EC,KAAK,CAACC,IAAN,CAAWL,WAAW,CAACzJ,IAAZ,EAAX,EAA+B,CAA/B,CAAkC,GAA/H;EACA;EACD;;EAEDyJ,IAAAA,WAAW,CAACF,GAAZ,CAAgBN,GAAhB,EAAqBO,QAArB;EACD,GAjBY;;EAmBbL,EAAAA,GAAG,CAACpL,OAAD,EAAUkL,GAAV,EAAe;EAChB,QAAII,UAAU,CAACtC,GAAX,CAAehJ,OAAf,CAAJ,EAA6B;EAC3B,aAAOsL,UAAU,CAACF,GAAX,CAAepL,OAAf,EAAwBoL,GAAxB,CAA4BF,GAA5B,KAAoC,IAA3C;EACD;;EAED,WAAO,IAAP;EACD,GAzBY;;EA2Bbc,EAAAA,MAAM,CAAChM,OAAD,EAAUkL,GAAV,EAAe;EACnB,QAAI,CAACI,UAAU,CAACtC,GAAX,CAAehJ,OAAf,CAAL,EAA8B;EAC5B;EACD;;EAED,UAAM0L,WAAW,GAAGJ,UAAU,CAACF,GAAX,CAAepL,OAAf,CAApB;EAEA0L,IAAAA,WAAW,CAACO,MAAZ,CAAmBf,GAAnB,EAPmB;;EAUnB,QAAIQ,WAAW,CAACC,IAAZ,KAAqB,CAAzB,EAA4B;EAC1BL,MAAAA,UAAU,CAACW,MAAX,CAAkBjM,OAAlB;EACD;EACF;;EAxCY,CAAf;;ECfA;EACA;EACA;EACA;EACA;EACA;EASA;EACA;EACA;EACA;EACA;;EAEA,MAAMkM,OAAO,GAAG,OAAhB;;EAEA,MAAMC,aAAN,CAAoB;EAClBC,EAAAA,WAAW,CAACpM,OAAD,EAAU;EACnBA,IAAAA,OAAO,GAAG0B,UAAU,CAAC1B,OAAD,CAApB;;EAEA,QAAI,CAACA,OAAL,EAAc;EACZ;EACD;;EAED,SAAKqM,QAAL,GAAgBrM,OAAhB;EACAsM,IAAAA,IAAI,CAACd,GAAL,CAAS,KAAKa,QAAd,EAAwB,KAAKD,WAAL,CAAiBG,QAAzC,EAAmD,IAAnD;EACD;;EAEDC,EAAAA,OAAO,GAAG;EACRF,IAAAA,IAAI,CAACN,MAAL,CAAY,KAAKK,QAAjB,EAA2B,KAAKD,WAAL,CAAiBG,QAA5C;EACA5E,IAAAA,YAAY,CAACC,GAAb,CAAiB,KAAKyE,QAAtB,EAAgC,KAAKD,WAAL,CAAiBK,SAAjD;EAEAzK,IAAAA,MAAM,CAAC0K,mBAAP,CAA2B,IAA3B,EAAiCxK,OAAjC,CAAyCyK,YAAY,IAAI;EACvD,WAAKA,YAAL,IAAqB,IAArB;EACD,KAFD;EAGD;;EAEDC,EAAAA,cAAc,CAACxI,QAAD,EAAWpE,OAAX,EAAoB6M,UAAU,GAAG,IAAjC,EAAuC;EACnDxH,IAAAA,sBAAsB,CAACjB,QAAD,EAAWpE,OAAX,EAAoB6M,UAApB,CAAtB;EACD;EAED;;;EAEkB,SAAXC,WAAW,CAAC9M,OAAD,EAAU;EAC1B,WAAOsM,IAAI,CAAClB,GAAL,CAAS1J,UAAU,CAAC1B,OAAD,CAAnB,EAA8B,KAAKuM,QAAnC,CAAP;EACD;;EAEyB,SAAnBQ,mBAAmB,CAAC/M,OAAD,EAAU8B,MAAM,GAAG,EAAnB,EAAuB;EAC/C,WAAO,KAAKgL,WAAL,CAAiB9M,OAAjB,KAA6B,IAAI,IAAJ,CAASA,OAAT,EAAkB,OAAO8B,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,IAAxD,CAApC;EACD;;EAEiB,aAAPoK,OAAO,GAAG;EACnB,WAAOA,OAAP;EACD;;EAEc,aAAJpH,IAAI,GAAG;EAChB,UAAM,IAAIkI,KAAJ,CAAU,qEAAV,CAAN;EACD;;EAEkB,aAART,QAAQ,GAAG;EACpB,WAAQ,MAAK,KAAKzH,IAAK,EAAvB;EACD;;EAEmB,aAAT2H,SAAS,GAAG;EACrB,WAAQ,IAAG,KAAKF,QAAS,EAAzB;EACD;;EAjDiB;;ECtBpB;EACA;EACA;EACA;EACA;EACA;;EAKA,MAAMU,oBAAoB,GAAG,CAACC,SAAD,EAAYC,MAAM,GAAG,MAArB,KAAgC;EAC3D,QAAMC,UAAU,GAAI,gBAAeF,SAAS,CAACT,SAAU,EAAvD;EACA,QAAM5H,IAAI,GAAGqI,SAAS,CAACpI,IAAvB;EAEA6C,EAAAA,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuN,UAA1B,EAAuC,qBAAoBvI,IAAK,IAAhE,EAAqE,UAAU2C,KAAV,EAAiB;EACpF,QAAI,CAAC,GAAD,EAAM,MAAN,EAAcpH,QAAd,CAAuB,KAAKiN,OAA5B,CAAJ,EAA0C;EACxC7F,MAAAA,KAAK,CAAC6D,cAAN;EACD;;EAED,QAAIvI,UAAU,CAAC,IAAD,CAAd,EAAsB;EACpB;EACD;;EAED,UAAM8C,MAAM,GAAGlF,sBAAsB,CAAC,IAAD,CAAtB,IAAgC,KAAK4M,OAAL,CAAc,IAAGzI,IAAK,EAAtB,CAA/C;EACA,UAAM4G,QAAQ,GAAGyB,SAAS,CAACH,mBAAV,CAA8BnH,MAA9B,CAAjB,CAVoF;;EAapF6F,IAAAA,QAAQ,CAAC0B,MAAD,CAAR;EACD,GAdD;EAeD,CAnBD;;ECVA;EACA;EACA;EACA;EACA;EACA;EAOA;EACA;EACA;EACA;EACA;;EAEA,MAAMrI,MAAI,GAAG,OAAb;EACA,MAAMyH,UAAQ,GAAG,UAAjB;EACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;EAEA,MAAMgB,WAAW,GAAI,QAAOd,WAAU,EAAtC;EACA,MAAMe,YAAY,GAAI,SAAQf,WAAU,EAAxC;EACA,MAAMgB,iBAAe,GAAG,MAAxB;EACA,MAAMC,iBAAe,GAAG,MAAxB;EAEA;EACA;EACA;EACA;EACA;;EAEA,MAAMC,KAAN,SAAoBxB,aAApB,CAAkC;EAChC;EAEe,aAAJrH,IAAI,GAAG;EAChB,WAAOA,MAAP;EACD,GAL+B;;;EAShC8I,EAAAA,KAAK,GAAG;EACN,UAAMC,UAAU,GAAGlG,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCkB,WAApC,CAAnB;;EAEA,QAAIM,UAAU,CAACpD,gBAAf,EAAiC;EAC/B;EACD;;EAED,SAAK4B,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0B,iBAA/B;;EAEA,UAAMb,UAAU,GAAG,KAAKR,QAAL,CAAcpJ,SAAd,CAAwBC,QAAxB,CAAiCuK,iBAAjC,CAAnB;;EACA,SAAKb,cAAL,CAAoB,MAAM,KAAKkB,eAAL,EAA1B,EAAkD,KAAKzB,QAAvD,EAAiEQ,UAAjE;EACD,GApB+B;;;EAuBhCiB,EAAAA,eAAe,GAAG;EAChB,SAAKzB,QAAL,CAAcL,MAAd;;EACArE,IAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCmB,YAApC;EACA,SAAKhB,OAAL;EACD,GA3B+B;;;EA+BV,SAAfvH,eAAe,CAACnD,MAAD,EAAS;EAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;EAC3B,YAAMC,IAAI,GAAGL,KAAK,CAACZ,mBAAN,CAA0B,IAA1B,CAAb;;EAEA,UAAI,OAAOjL,MAAP,KAAkB,QAAtB,EAAgC;EAC9B;EACD;;EAED,UAAIkM,IAAI,CAAClM,MAAD,CAAJ,KAAiB3C,SAAjB,IAA8B2C,MAAM,CAACzB,UAAP,CAAkB,GAAlB,CAA9B,IAAwDyB,MAAM,KAAK,aAAvE,EAAsF;EACpF,cAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;EACD;;EAEDkM,MAAAA,IAAI,CAAClM,MAAD,CAAJ,CAAa,IAAb;EACD,KAZM,CAAP;EAaD;;EA7C+B;EAgDlC;EACA;EACA;EACA;EACA;;;EAEAmL,oBAAoB,CAACU,KAAD,EAAQ,OAAR,CAApB;EACA;EACA;EACA;EACA;EACA;EACA;;EAEAjJ,kBAAkB,CAACiJ,KAAD,CAAlB;;EC/FA;EACA;EACA;EACA;EACA;EACA;EAMA;EACA;EACA;EACA;EACA;;EAEA,MAAM7I,MAAI,GAAG,QAAb;EACA,MAAMyH,UAAQ,GAAG,WAAjB;EACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;EACA,MAAM0B,cAAY,GAAG,WAArB;EAEA,MAAMC,mBAAiB,GAAG,QAA1B;EAEA,MAAMC,sBAAoB,GAAG,2BAA7B;EAEA,MAAMC,sBAAoB,GAAI,QAAO3B,WAAU,GAAEwB,cAAa,EAA9D;EAEA;EACA;EACA;EACA;EACA;;EAEA,MAAMI,MAAN,SAAqBlC,aAArB,CAAmC;EACjC;EAEe,aAAJrH,IAAI,GAAG;EAChB,WAAOA,MAAP;EACD,GALgC;;;EASjCwJ,EAAAA,MAAM,GAAG;EACP;EACA,SAAKjC,QAAL,CAAckC,YAAd,CAA2B,cAA3B,EAA2C,KAAKlC,QAAL,CAAcpJ,SAAd,CAAwBqL,MAAxB,CAA+BJ,mBAA/B,CAA3C;EACD,GAZgC;;;EAgBX,SAAfjJ,eAAe,CAACnD,MAAD,EAAS;EAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;EAC3B,YAAMC,IAAI,GAAGK,MAAM,CAACtB,mBAAP,CAA2B,IAA3B,CAAb;;EAEA,UAAIjL,MAAM,KAAK,QAAf,EAAyB;EACvBkM,QAAAA,IAAI,CAAClM,MAAD,CAAJ;EACD;EACF,KANM,CAAP;EAOD;;EAxBgC;EA2BnC;EACA;EACA;EACA;EACA;;;EAEA6F,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,sBAA1B,EAAgDD,sBAAhD,EAAsE3G,KAAK,IAAI;EAC7EA,EAAAA,KAAK,CAAC6D,cAAN;EAEA,QAAMmD,MAAM,GAAGhH,KAAK,CAAC5B,MAAN,CAAa0H,OAAb,CAAqBa,sBAArB,CAAf;EACA,QAAMH,IAAI,GAAGK,MAAM,CAACtB,mBAAP,CAA2ByB,MAA3B,CAAb;EAEAR,EAAAA,IAAI,CAACM,MAAL;EACD,CAPD;EASA;EACA;EACA;EACA;EACA;EACA;;EAEA5J,kBAAkB,CAAC2J,MAAD,CAAlB;;ECnFA;EACA;EACA;EACA;EACA;EACA;EAEA,SAASI,aAAT,CAAuBC,GAAvB,EAA4B;EAC1B,MAAIA,GAAG,KAAK,MAAZ,EAAoB;EAClB,WAAO,IAAP;EACD;;EAED,MAAIA,GAAG,KAAK,OAAZ,EAAqB;EACnB,WAAO,KAAP;EACD;;EAED,MAAIA,GAAG,KAAKzN,MAAM,CAACyN,GAAD,CAAN,CAAYtP,QAAZ,EAAZ,EAAoC;EAClC,WAAO6B,MAAM,CAACyN,GAAD,CAAb;EACD;;EAED,MAAIA,GAAG,KAAK,EAAR,IAAcA,GAAG,KAAK,MAA1B,EAAkC;EAChC,WAAO,IAAP;EACD;;EAED,SAAOA,GAAP;EACD;;EAED,SAASC,gBAAT,CAA0BzD,GAA1B,EAA+B;EAC7B,SAAOA,GAAG,CAAC5B,OAAJ,CAAY,QAAZ,EAAsBsF,GAAG,IAAK,IAAGA,GAAG,CAACrP,WAAJ,EAAkB,EAAnD,CAAP;EACD;;EAED,MAAMsP,WAAW,GAAG;EAClBC,EAAAA,gBAAgB,CAAC9O,OAAD,EAAUkL,GAAV,EAAe7I,KAAf,EAAsB;EACpCrC,IAAAA,OAAO,CAACuO,YAAR,CAAsB,WAAUI,gBAAgB,CAACzD,GAAD,CAAM,EAAtD,EAAyD7I,KAAzD;EACD,GAHiB;;EAKlB0M,EAAAA,mBAAmB,CAAC/O,OAAD,EAAUkL,GAAV,EAAe;EAChClL,IAAAA,OAAO,CAACgP,eAAR,CAAyB,WAAUL,gBAAgB,CAACzD,GAAD,CAAM,EAAzD;EACD,GAPiB;;EASlB+D,EAAAA,iBAAiB,CAACjP,OAAD,EAAU;EACzB,QAAI,CAACA,OAAL,EAAc;EACZ,aAAO,EAAP;EACD;;EAED,UAAMkP,UAAU,GAAG,EAAnB;EAEAlN,IAAAA,MAAM,CAACC,IAAP,CAAYjC,OAAO,CAACmP,OAApB,EACGC,MADH,CACUlE,GAAG,IAAIA,GAAG,CAAC7K,UAAJ,CAAe,IAAf,CADjB,EAEG6B,OAFH,CAEWgJ,GAAG,IAAI;EACd,UAAImE,OAAO,GAAGnE,GAAG,CAAC5B,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAd;EACA+F,MAAAA,OAAO,GAAGA,OAAO,CAACC,MAAR,CAAe,CAAf,EAAkB/P,WAAlB,KAAkC8P,OAAO,CAACnF,KAAR,CAAc,CAAd,EAAiBmF,OAAO,CAAC1N,MAAzB,CAA5C;EACAuN,MAAAA,UAAU,CAACG,OAAD,CAAV,GAAsBZ,aAAa,CAACzO,OAAO,CAACmP,OAAR,CAAgBjE,GAAhB,CAAD,CAAnC;EACD,KANH;EAQA,WAAOgE,UAAP;EACD,GAzBiB;;EA2BlBK,EAAAA,gBAAgB,CAACvP,OAAD,EAAUkL,GAAV,EAAe;EAC7B,WAAOuD,aAAa,CAACzO,OAAO,CAACE,YAAR,CAAsB,WAAUyO,gBAAgB,CAACzD,GAAD,CAAM,EAAtD,CAAD,CAApB;EACD,GA7BiB;;EA+BlBsE,EAAAA,MAAM,CAACxP,OAAD,EAAU;EACd,UAAMyP,IAAI,GAAGzP,OAAO,CAAC0P,qBAAR,EAAb;EAEA,WAAO;EACLC,MAAAA,GAAG,EAAEF,IAAI,CAACE,GAAL,GAAW7O,MAAM,CAAC8O,WADlB;EAELC,MAAAA,IAAI,EAAEJ,IAAI,CAACI,IAAL,GAAY/O,MAAM,CAACgP;EAFpB,KAAP;EAID,GAtCiB;;EAwClBC,EAAAA,QAAQ,CAAC/P,OAAD,EAAU;EAChB,WAAO;EACL2P,MAAAA,GAAG,EAAE3P,OAAO,CAACgQ,SADR;EAELH,MAAAA,IAAI,EAAE7P,OAAO,CAACiQ;EAFT,KAAP;EAID;;EA7CiB,CAApB;;EC/BA;EACA;EACA;EACA;EACA;EACA;EAUA,MAAMC,SAAS,GAAG,CAAlB;EAEA,MAAMC,cAAc,GAAG;EACrBC,EAAAA,IAAI,CAACnQ,QAAD,EAAWD,OAAO,GAAGH,QAAQ,CAACyD,eAA9B,EAA+C;EACjD,WAAO,GAAG+M,MAAH,CAAU,GAAGC,OAAO,CAACC,SAAR,CAAkBtI,gBAAlB,CAAmC5I,IAAnC,CAAwCW,OAAxC,EAAiDC,QAAjD,CAAb,CAAP;EACD,GAHoB;;EAKrBuQ,EAAAA,OAAO,CAACvQ,QAAD,EAAWD,OAAO,GAAGH,QAAQ,CAACyD,eAA9B,EAA+C;EACpD,WAAOgN,OAAO,CAACC,SAAR,CAAkB9P,aAAlB,CAAgCpB,IAAhC,CAAqCW,OAArC,EAA8CC,QAA9C,CAAP;EACD,GAPoB;;EASrBwQ,EAAAA,QAAQ,CAACzQ,OAAD,EAAUC,QAAV,EAAoB;EAC1B,WAAO,GAAGoQ,MAAH,CAAU,GAAGrQ,OAAO,CAACyQ,QAArB,EACJrB,MADI,CACGsB,KAAK,IAAIA,KAAK,CAACC,OAAN,CAAc1Q,QAAd,CADZ,CAAP;EAED,GAZoB;;EAcrB2Q,EAAAA,OAAO,CAAC5Q,OAAD,EAAUC,QAAV,EAAoB;EACzB,UAAM2Q,OAAO,GAAG,EAAhB;EAEA,QAAIC,QAAQ,GAAG7Q,OAAO,CAAC2D,UAAvB;;EAEA,WAAOkN,QAAQ,IAAIA,QAAQ,CAACpP,QAAT,KAAsBsB,IAAI,CAACC,YAAvC,IAAuD6N,QAAQ,CAACpP,QAAT,KAAsByO,SAApF,EAA+F;EAC7F,UAAIW,QAAQ,CAACF,OAAT,CAAiB1Q,QAAjB,CAAJ,EAAgC;EAC9B2Q,QAAAA,OAAO,CAACrM,IAAR,CAAasM,QAAb;EACD;;EAEDA,MAAAA,QAAQ,GAAGA,QAAQ,CAAClN,UAApB;EACD;;EAED,WAAOiN,OAAP;EACD,GA5BoB;;EA8BrBE,EAAAA,IAAI,CAAC9Q,OAAD,EAAUC,QAAV,EAAoB;EACtB,QAAI8Q,QAAQ,GAAG/Q,OAAO,CAACgR,sBAAvB;;EAEA,WAAOD,QAAP,EAAiB;EACf,UAAIA,QAAQ,CAACJ,OAAT,CAAiB1Q,QAAjB,CAAJ,EAAgC;EAC9B,eAAO,CAAC8Q,QAAD,CAAP;EACD;;EAEDA,MAAAA,QAAQ,GAAGA,QAAQ,CAACC,sBAApB;EACD;;EAED,WAAO,EAAP;EACD,GA1CoB;;EA4CrBC,EAAAA,IAAI,CAACjR,OAAD,EAAUC,QAAV,EAAoB;EACtB,QAAIgR,IAAI,GAAGjR,OAAO,CAACkR,kBAAnB;;EAEA,WAAOD,IAAP,EAAa;EACX,UAAIA,IAAI,CAACN,OAAL,CAAa1Q,QAAb,CAAJ,EAA4B;EAC1B,eAAO,CAACgR,IAAD,CAAP;EACD;;EAEDA,MAAAA,IAAI,GAAGA,IAAI,CAACC,kBAAZ;EACD;;EAED,WAAO,EAAP;EACD,GAxDoB;;EA0DrBC,EAAAA,iBAAiB,CAACnR,OAAD,EAAU;EACzB,UAAMoR,UAAU,GAAG,CACjB,GADiB,EAEjB,QAFiB,EAGjB,OAHiB,EAIjB,UAJiB,EAKjB,QALiB,EAMjB,SANiB,EAOjB,YAPiB,EAQjB,0BARiB,EASjBC,GATiB,CASbpR,QAAQ,IAAK,GAAEA,QAAS,uBATX,EASmCqR,IATnC,CASwC,IATxC,CAAnB;EAWA,WAAO,KAAKlB,IAAL,CAAUgB,UAAV,EAAsBpR,OAAtB,EAA+BoP,MAA/B,CAAsCmC,EAAE,IAAI,CAACzO,UAAU,CAACyO,EAAD,CAAX,IAAmB5O,SAAS,CAAC4O,EAAD,CAAxE,CAAP;EACD;;EAvEoB,CAAvB;;ECjBA;EACA;EACA;EACA;EACA;EACA;EAiBA;EACA;EACA;EACA;EACA;;EAEA,MAAMzM,MAAI,GAAG,UAAb;EACA,MAAMyH,UAAQ,GAAG,aAAjB;EACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;EACA,MAAM0B,cAAY,GAAG,WAArB;EAEA,MAAMuD,cAAc,GAAG,WAAvB;EACA,MAAMC,eAAe,GAAG,YAAxB;EACA,MAAMC,sBAAsB,GAAG,GAA/B;;EACA,MAAMC,eAAe,GAAG,EAAxB;EAEA,MAAMC,SAAO,GAAG;EACdC,EAAAA,QAAQ,EAAE,IADI;EAEdC,EAAAA,QAAQ,EAAE,IAFI;EAGdC,EAAAA,KAAK,EAAE,KAHO;EAIdC,EAAAA,KAAK,EAAE,OAJO;EAKdC,EAAAA,IAAI,EAAE,IALQ;EAMdC,EAAAA,KAAK,EAAE;EANO,CAAhB;EASA,MAAMC,aAAW,GAAG;EAClBN,EAAAA,QAAQ,EAAE,kBADQ;EAElBC,EAAAA,QAAQ,EAAE,SAFQ;EAGlBC,EAAAA,KAAK,EAAE,kBAHW;EAIlBC,EAAAA,KAAK,EAAE,kBAJW;EAKlBC,EAAAA,IAAI,EAAE,SALY;EAMlBC,EAAAA,KAAK,EAAE;EANW,CAApB;EASA,MAAME,UAAU,GAAG,MAAnB;EACA,MAAMC,UAAU,GAAG,MAAnB;EACA,MAAMC,cAAc,GAAG,MAAvB;EACA,MAAMC,eAAe,GAAG,OAAxB;EAEA,MAAMC,gBAAgB,GAAG;EACvB,GAAChB,cAAD,GAAkBe,eADK;EAEvB,GAACd,eAAD,GAAmBa;EAFI,CAAzB;EAKA,MAAMG,WAAW,GAAI,QAAOhG,WAAU,EAAtC;EACA,MAAMiG,UAAU,GAAI,OAAMjG,WAAU,EAApC;EACA,MAAMkG,aAAa,GAAI,UAASlG,WAAU,EAA1C;EACA,MAAMmG,gBAAgB,GAAI,aAAYnG,WAAU,EAAhD;EACA,MAAMoG,gBAAgB,GAAI,aAAYpG,WAAU,EAAhD;EACA,MAAMqG,gBAAgB,GAAI,aAAYrG,WAAU,EAAhD;EACA,MAAMsG,eAAe,GAAI,YAAWtG,WAAU,EAA9C;EACA,MAAMuG,cAAc,GAAI,WAAUvG,WAAU,EAA5C;EACA,MAAMwG,iBAAiB,GAAI,cAAaxG,WAAU,EAAlD;EACA,MAAMyG,eAAe,GAAI,YAAWzG,WAAU,EAA9C;EACA,MAAM0G,gBAAgB,GAAI,YAAW1G,WAAU,EAA/C;EACA,MAAM2G,qBAAmB,GAAI,OAAM3G,WAAU,GAAEwB,cAAa,EAA5D;EACA,MAAMG,sBAAoB,GAAI,QAAO3B,WAAU,GAAEwB,cAAa,EAA9D;EAEA,MAAMoF,mBAAmB,GAAG,UAA5B;EACA,MAAMnF,mBAAiB,GAAG,QAA1B;EACA,MAAMoF,gBAAgB,GAAG,OAAzB;EACA,MAAMC,cAAc,GAAG,mBAAvB;EACA,MAAMC,gBAAgB,GAAG,qBAAzB;EACA,MAAMC,eAAe,GAAG,oBAAxB;EACA,MAAMC,eAAe,GAAG,oBAAxB;EACA,MAAMC,wBAAwB,GAAG,eAAjC;EAEA,MAAMC,iBAAe,GAAG,SAAxB;EACA,MAAMC,oBAAoB,GAAG,uBAA7B;EACA,MAAMC,aAAa,GAAG,gBAAtB;EACA,MAAMC,iBAAiB,GAAG,oBAA1B;EACA,MAAMC,kBAAkB,GAAG,0CAA3B;EACA,MAAMC,mBAAmB,GAAG,sBAA5B;EACA,MAAMC,kBAAkB,GAAG,kBAA3B;EACA,MAAMC,mBAAmB,GAAG,qCAA5B;EACA,MAAMC,kBAAkB,GAAG,2BAA3B;EAEA,MAAMC,kBAAkB,GAAG,OAA3B;EACA,MAAMC,gBAAgB,GAAG,KAAzB;EAEA;EACA;EACA;EACA;EACA;;EACA,MAAMC,QAAN,SAAuBpI,aAAvB,CAAqC;EACnCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;EAC3B,UAAM9B,OAAN;EAEA,SAAKwU,MAAL,GAAc,IAAd;EACA,SAAKC,SAAL,GAAiB,IAAjB;EACA,SAAKC,cAAL,GAAsB,IAAtB;EACA,SAAKC,SAAL,GAAiB,KAAjB;EACA,SAAKC,UAAL,GAAkB,KAAlB;EACA,SAAKC,YAAL,GAAoB,IAApB;EACA,SAAKC,WAAL,GAAmB,CAAnB;EACA,SAAKC,WAAL,GAAmB,CAAnB;EAEA,SAAKC,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;EACA,SAAKoT,kBAAL,GAA0B/E,cAAc,CAACK,OAAf,CAAuByD,mBAAvB,EAA4C,KAAK5H,QAAjD,CAA1B;EACA,SAAK8I,eAAL,GAAuB,kBAAkBtV,QAAQ,CAACyD,eAA3B,IAA8C8R,SAAS,CAACC,cAAV,GAA2B,CAAhG;EACA,SAAKC,aAAL,GAAqB9L,OAAO,CAAC1I,MAAM,CAACyU,YAAR,CAA5B;;EAEA,SAAKC,kBAAL;EACD,GAnBkC;;;EAuBjB,aAAP5D,OAAO,GAAG;EACnB,WAAOA,SAAP;EACD;;EAEc,aAAJ9M,IAAI,GAAG;EAChB,WAAOA,MAAP;EACD,GA7BkC;;;EAiCnCmM,EAAAA,IAAI,GAAG;EACL,SAAKwE,MAAL,CAAYrD,UAAZ;EACD;;EAEDsD,EAAAA,eAAe,GAAG;EAChB;EACA;EACA,QAAI,CAAC7V,QAAQ,CAAC8V,MAAV,IAAoBhT,SAAS,CAAC,KAAK0J,QAAN,CAAjC,EAAkD;EAChD,WAAK4E,IAAL;EACD;EACF;;EAEDH,EAAAA,IAAI,GAAG;EACL,SAAK2E,MAAL,CAAYpD,UAAZ;EACD;;EAEDL,EAAAA,KAAK,CAACxK,KAAD,EAAQ;EACX,QAAI,CAACA,KAAL,EAAY;EACV,WAAKmN,SAAL,GAAiB,IAAjB;EACD;;EAED,QAAIxE,cAAc,CAACK,OAAf,CAAuBwD,kBAAvB,EAA2C,KAAK3H,QAAhD,CAAJ,EAA+D;EAC7DjL,MAAAA,oBAAoB,CAAC,KAAKiL,QAAN,CAApB;EACA,WAAKuJ,KAAL,CAAW,IAAX;EACD;;EAEDC,IAAAA,aAAa,CAAC,KAAKpB,SAAN,CAAb;EACA,SAAKA,SAAL,GAAiB,IAAjB;EACD;;EAEDmB,EAAAA,KAAK,CAACpO,KAAD,EAAQ;EACX,QAAI,CAACA,KAAL,EAAY;EACV,WAAKmN,SAAL,GAAiB,KAAjB;EACD;;EAED,QAAI,KAAKF,SAAT,EAAoB;EAClBoB,MAAAA,aAAa,CAAC,KAAKpB,SAAN,CAAb;EACA,WAAKA,SAAL,GAAiB,IAAjB;EACD;;EAED,QAAI,KAAKO,OAAL,IAAgB,KAAKA,OAAL,CAAanD,QAA7B,IAAyC,CAAC,KAAK8C,SAAnD,EAA8D;EAC5D,WAAKmB,eAAL;;EAEA,WAAKrB,SAAL,GAAiBsB,WAAW,CAC1B,CAAClW,QAAQ,CAACmW,eAAT,GAA2B,KAAKN,eAAhC,GAAkD,KAAKzE,IAAxD,EAA8DgF,IAA9D,CAAmE,IAAnE,CAD0B,EAE1B,KAAKjB,OAAL,CAAanD,QAFa,CAA5B;EAID;EACF;;EAEDqE,EAAAA,EAAE,CAAC9P,KAAD,EAAQ;EACR,SAAKsO,cAAL,GAAsBvE,cAAc,CAACK,OAAf,CAAuBqD,oBAAvB,EAA6C,KAAKxH,QAAlD,CAAtB;;EACA,UAAM8J,WAAW,GAAG,KAAKC,aAAL,CAAmB,KAAK1B,cAAxB,CAApB;;EAEA,QAAItO,KAAK,GAAG,KAAKoO,MAAL,CAAY7S,MAAZ,GAAqB,CAA7B,IAAkCyE,KAAK,GAAG,CAA9C,EAAiD;EAC/C;EACD;;EAED,QAAI,KAAKwO,UAAT,EAAqB;EACnBjN,MAAAA,YAAY,CAACmC,GAAb,CAAiB,KAAKuC,QAAtB,EAAgCqG,UAAhC,EAA4C,MAAM,KAAKwD,EAAL,CAAQ9P,KAAR,CAAlD;EACA;EACD;;EAED,QAAI+P,WAAW,KAAK/P,KAApB,EAA2B;EACzB,WAAK4L,KAAL;EACA,WAAK4D,KAAL;EACA;EACD;;EAED,UAAMS,KAAK,GAAGjQ,KAAK,GAAG+P,WAAR,GACZ/D,UADY,GAEZC,UAFF;;EAIA,SAAKoD,MAAL,CAAYY,KAAZ,EAAmB,KAAK7B,MAAL,CAAYpO,KAAZ,CAAnB;EACD,GA3GkC;;;EA+GnC6O,EAAAA,UAAU,CAACnT,MAAD,EAAS;EACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,SADI;EAEP,SAAG/C,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAFI;EAGP,UAAI,OAAOvK,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,EAA1C;EAHO,KAAT;EAKAF,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAeqQ,aAAf,CAAf;EACA,WAAOrQ,MAAP;EACD;;EAEDwU,EAAAA,YAAY,GAAG;EACb,UAAMC,SAAS,GAAG7W,IAAI,CAAC8W,GAAL,CAAS,KAAKzB,WAAd,CAAlB;;EAEA,QAAIwB,SAAS,IAAI5E,eAAjB,EAAkC;EAChC;EACD;;EAED,UAAM8E,SAAS,GAAGF,SAAS,GAAG,KAAKxB,WAAnC;EAEA,SAAKA,WAAL,GAAmB,CAAnB;;EAEA,QAAI,CAAC0B,SAAL,EAAgB;EACd;EACD;;EAED,SAAKhB,MAAL,CAAYgB,SAAS,GAAG,CAAZ,GAAgBlE,eAAhB,GAAkCD,cAA9C;EACD;;EAEDkD,EAAAA,kBAAkB,GAAG;EACnB,QAAI,KAAKR,OAAL,CAAalD,QAAjB,EAA2B;EACzBnK,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BsG,aAA/B,EAA8CnL,KAAK,IAAI,KAAKkP,QAAL,CAAclP,KAAd,CAAvD;EACD;;EAED,QAAI,KAAKwN,OAAL,CAAahD,KAAb,KAAuB,OAA3B,EAAoC;EAClCrK,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BuG,gBAA/B,EAAiDpL,KAAK,IAAI,KAAKwK,KAAL,CAAWxK,KAAX,CAA1D;EACAG,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BwG,gBAA/B,EAAiDrL,KAAK,IAAI,KAAKoO,KAAL,CAAWpO,KAAX,CAA1D;EACD;;EAED,QAAI,KAAKwN,OAAL,CAAa9C,KAAb,IAAsB,KAAKiD,eAA/B,EAAgD;EAC9C,WAAKwB,uBAAL;EACD;EACF;;EAEDA,EAAAA,uBAAuB,GAAG;EACxB,UAAMC,KAAK,GAAGpP,KAAK,IAAI;EACrB,UAAI,KAAK8N,aAAL,KAAuB9N,KAAK,CAACqP,WAAN,KAAsBvC,gBAAtB,IAA0C9M,KAAK,CAACqP,WAAN,KAAsBxC,kBAAvF,CAAJ,EAAgH;EAC9G,aAAKS,WAAL,GAAmBtN,KAAK,CAACsP,OAAzB;EACD,OAFD,MAEO,IAAI,CAAC,KAAKxB,aAAV,EAAyB;EAC9B,aAAKR,WAAL,GAAmBtN,KAAK,CAACuP,OAAN,CAAc,CAAd,EAAiBD,OAApC;EACD;EACF,KAND;;EAQA,UAAME,IAAI,GAAGxP,KAAK,IAAI;EACpB;EACA,WAAKuN,WAAL,GAAmBvN,KAAK,CAACuP,OAAN,IAAiBvP,KAAK,CAACuP,OAAN,CAAcpV,MAAd,GAAuB,CAAxC,GACjB,CADiB,GAEjB6F,KAAK,CAACuP,OAAN,CAAc,CAAd,EAAiBD,OAAjB,GAA2B,KAAKhC,WAFlC;EAGD,KALD;;EAOA,UAAMmC,GAAG,GAAGzP,KAAK,IAAI;EACnB,UAAI,KAAK8N,aAAL,KAAuB9N,KAAK,CAACqP,WAAN,KAAsBvC,gBAAtB,IAA0C9M,KAAK,CAACqP,WAAN,KAAsBxC,kBAAvF,CAAJ,EAAgH;EAC9G,aAAKU,WAAL,GAAmBvN,KAAK,CAACsP,OAAN,GAAgB,KAAKhC,WAAxC;EACD;;EAED,WAAKwB,YAAL;;EACA,UAAI,KAAKtB,OAAL,CAAahD,KAAb,KAAuB,OAA3B,EAAoC;EAClC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,aAAKA,KAAL;;EACA,YAAI,KAAK6C,YAAT,EAAuB;EACrBqC,UAAAA,YAAY,CAAC,KAAKrC,YAAN,CAAZ;EACD;;EAED,aAAKA,YAAL,GAAoB/O,UAAU,CAAC0B,KAAK,IAAI,KAAKoO,KAAL,CAAWpO,KAAX,CAAV,EAA6BkK,sBAAsB,GAAG,KAAKsD,OAAL,CAAanD,QAAnE,CAA9B;EACD;EACF,KAtBD;;EAwBA1B,IAAAA,cAAc,CAACC,IAAf,CAAoB2D,iBAApB,EAAuC,KAAK1H,QAA5C,EAAsDnK,OAAtD,CAA8DiV,OAAO,IAAI;EACvExP,MAAAA,YAAY,CAACkC,EAAb,CAAgBsN,OAAhB,EAAyBhE,gBAAzB,EAA2CiE,CAAC,IAAIA,CAAC,CAAC/L,cAAF,EAAhD;EACD,KAFD;;EAIA,QAAI,KAAKiK,aAAT,EAAwB;EACtB3N,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B4G,iBAA/B,EAAkDzL,KAAK,IAAIoP,KAAK,CAACpP,KAAD,CAAhE;EACAG,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B6G,eAA/B,EAAgD1L,KAAK,IAAIyP,GAAG,CAACzP,KAAD,CAA5D;;EAEA,WAAK6E,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4B1D,wBAA5B;EACD,KALD,MAKO;EACLhM,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+ByG,gBAA/B,EAAiDtL,KAAK,IAAIoP,KAAK,CAACpP,KAAD,CAA/D;EACAG,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B0G,eAA/B,EAAgDvL,KAAK,IAAIwP,IAAI,CAACxP,KAAD,CAA7D;EACAG,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B2G,cAA/B,EAA+CxL,KAAK,IAAIyP,GAAG,CAACzP,KAAD,CAA3D;EACD;EACF;;EAEDkP,EAAAA,QAAQ,CAAClP,KAAD,EAAQ;EACd,QAAI,kBAAkBhF,IAAlB,CAAuBgF,KAAK,CAAC5B,MAAN,CAAayH,OAApC,CAAJ,EAAkD;EAChD;EACD;;EAED,UAAMoJ,SAAS,GAAGjE,gBAAgB,CAAChL,KAAK,CAAC0D,GAAP,CAAlC;;EACA,QAAIuL,SAAJ,EAAe;EACbjP,MAAAA,KAAK,CAAC6D,cAAN;;EACA,WAAKoK,MAAL,CAAYgB,SAAZ;EACD;EACF;;EAEDL,EAAAA,aAAa,CAACpW,OAAD,EAAU;EACrB,SAAKwU,MAAL,GAAcxU,OAAO,IAAIA,OAAO,CAAC2D,UAAnB,GACZwM,cAAc,CAACC,IAAf,CAAoB0D,aAApB,EAAmC9T,OAAO,CAAC2D,UAA3C,CADY,GAEZ,EAFF;EAIA,WAAO,KAAK6Q,MAAL,CAAYnO,OAAZ,CAAoBrG,OAApB,CAAP;EACD;;EAEDsX,EAAAA,eAAe,CAACjB,KAAD,EAAQpQ,aAAR,EAAuB;EACpC,UAAMsR,MAAM,GAAGlB,KAAK,KAAKjE,UAAzB;EACA,WAAOrM,oBAAoB,CAAC,KAAKyO,MAAN,EAAcvO,aAAd,EAA6BsR,MAA7B,EAAqC,KAAKvC,OAAL,CAAa/C,IAAlD,CAA3B;EACD;;EAEDuF,EAAAA,kBAAkB,CAACrO,aAAD,EAAgBsO,kBAAhB,EAAoC;EACpD,UAAMC,WAAW,GAAG,KAAKtB,aAAL,CAAmBjN,aAAnB,CAApB;;EACA,UAAMwO,SAAS,GAAG,KAAKvB,aAAL,CAAmBjG,cAAc,CAACK,OAAf,CAAuBqD,oBAAvB,EAA6C,KAAKxH,QAAlD,CAAnB,CAAlB;;EAEA,WAAO1E,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCoG,WAApC,EAAiD;EACtDtJ,MAAAA,aADsD;EAEtDsN,MAAAA,SAAS,EAAEgB,kBAF2C;EAGtD1L,MAAAA,IAAI,EAAE4L,SAHgD;EAItDzB,MAAAA,EAAE,EAAEwB;EAJkD,KAAjD,CAAP;EAMD;;EAEDE,EAAAA,0BAA0B,CAAC5X,OAAD,EAAU;EAClC,QAAI,KAAKkV,kBAAT,EAA6B;EAC3B,YAAM2C,eAAe,GAAG1H,cAAc,CAACK,OAAf,CAAuBoD,iBAAvB,EAAwC,KAAKsB,kBAA7C,CAAxB;EAEA2C,MAAAA,eAAe,CAAC5U,SAAhB,CAA0B+I,MAA1B,CAAiCkC,mBAAjC;EACA2J,MAAAA,eAAe,CAAC7I,eAAhB,CAAgC,cAAhC;EAEA,YAAM8I,UAAU,GAAG3H,cAAc,CAACC,IAAf,CAAoB8D,kBAApB,EAAwC,KAAKgB,kBAA7C,CAAnB;;EAEA,WAAK,IAAIhN,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4P,UAAU,CAACnW,MAA/B,EAAuCuG,CAAC,EAAxC,EAA4C;EAC1C,YAAIjH,MAAM,CAAC8W,QAAP,CAAgBD,UAAU,CAAC5P,CAAD,CAAV,CAAchI,YAAd,CAA2B,kBAA3B,CAAhB,EAAgE,EAAhE,MAAwE,KAAKkW,aAAL,CAAmBpW,OAAnB,CAA5E,EAAyG;EACvG8X,UAAAA,UAAU,CAAC5P,CAAD,CAAV,CAAcjF,SAAd,CAAwBoU,GAAxB,CAA4BnJ,mBAA5B;EACA4J,UAAAA,UAAU,CAAC5P,CAAD,CAAV,CAAcqG,YAAd,CAA2B,cAA3B,EAA2C,MAA3C;EACA;EACD;EACF;EACF;EACF;;EAEDuH,EAAAA,eAAe,GAAG;EAChB,UAAM9V,OAAO,GAAG,KAAK0U,cAAL,IAAuBvE,cAAc,CAACK,OAAf,CAAuBqD,oBAAvB,EAA6C,KAAKxH,QAAlD,CAAvC;;EAEA,QAAI,CAACrM,OAAL,EAAc;EACZ;EACD;;EAED,UAAMgY,eAAe,GAAG/W,MAAM,CAAC8W,QAAP,CAAgB/X,OAAO,CAACE,YAAR,CAAqB,kBAArB,CAAhB,EAA0D,EAA1D,CAAxB;;EAEA,QAAI8X,eAAJ,EAAqB;EACnB,WAAKhD,OAAL,CAAaiD,eAAb,GAA+B,KAAKjD,OAAL,CAAaiD,eAAb,IAAgC,KAAKjD,OAAL,CAAanD,QAA5E;EACA,WAAKmD,OAAL,CAAanD,QAAb,GAAwBmG,eAAxB;EACD,KAHD,MAGO;EACL,WAAKhD,OAAL,CAAanD,QAAb,GAAwB,KAAKmD,OAAL,CAAaiD,eAAb,IAAgC,KAAKjD,OAAL,CAAanD,QAArE;EACD;EACF;;EAED4D,EAAAA,MAAM,CAACyC,gBAAD,EAAmBlY,OAAnB,EAA4B;EAChC,UAAMqW,KAAK,GAAG,KAAK8B,iBAAL,CAAuBD,gBAAvB,CAAd;;EACA,UAAMjS,aAAa,GAAGkK,cAAc,CAACK,OAAf,CAAuBqD,oBAAvB,EAA6C,KAAKxH,QAAlD,CAAtB;;EACA,UAAM+L,kBAAkB,GAAG,KAAKhC,aAAL,CAAmBnQ,aAAnB,CAA3B;;EACA,UAAMoS,WAAW,GAAGrY,OAAO,IAAI,KAAKsX,eAAL,CAAqBjB,KAArB,EAA4BpQ,aAA5B,CAA/B;;EAEA,UAAMqS,gBAAgB,GAAG,KAAKlC,aAAL,CAAmBiC,WAAnB,CAAzB;;EACA,UAAME,SAAS,GAAG/O,OAAO,CAAC,KAAKiL,SAAN,CAAzB;EAEA,UAAM8C,MAAM,GAAGlB,KAAK,KAAKjE,UAAzB;EACA,UAAMoG,oBAAoB,GAAGjB,MAAM,GAAG/D,gBAAH,GAAsBD,cAAzD;EACA,UAAMkF,cAAc,GAAGlB,MAAM,GAAG9D,eAAH,GAAqBC,eAAlD;;EACA,UAAM+D,kBAAkB,GAAG,KAAKiB,iBAAL,CAAuBrC,KAAvB,CAA3B;;EAEA,QAAIgC,WAAW,IAAIA,WAAW,CAACpV,SAAZ,CAAsBC,QAAtB,CAA+BgL,mBAA/B,CAAnB,EAAsE;EACpE,WAAK0G,UAAL,GAAkB,KAAlB;EACA;EACD;;EAED,QAAI,KAAKA,UAAT,EAAqB;EACnB;EACD;;EAED,UAAM+D,UAAU,GAAG,KAAKnB,kBAAL,CAAwBa,WAAxB,EAAqCZ,kBAArC,CAAnB;;EACA,QAAIkB,UAAU,CAAClO,gBAAf,EAAiC;EAC/B;EACD;;EAED,QAAI,CAACxE,aAAD,IAAkB,CAACoS,WAAvB,EAAoC;EAClC;EACA;EACD;;EAED,SAAKzD,UAAL,GAAkB,IAAlB;;EAEA,QAAI2D,SAAJ,EAAe;EACb,WAAKvG,KAAL;EACD;;EAED,SAAK4F,0BAAL,CAAgCS,WAAhC;;EACA,SAAK3D,cAAL,GAAsB2D,WAAtB;;EAEA,UAAMO,gBAAgB,GAAG,MAAM;EAC7BjR,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCqG,UAApC,EAAgD;EAC9CvJ,QAAAA,aAAa,EAAEkP,WAD+B;EAE9C5B,QAAAA,SAAS,EAAEgB,kBAFmC;EAG9C1L,QAAAA,IAAI,EAAEqM,kBAHwC;EAI9ClC,QAAAA,EAAE,EAAEoC;EAJ0C,OAAhD;EAMD,KAPD;;EASA,QAAI,KAAKjM,QAAL,CAAcpJ,SAAd,CAAwBC,QAAxB,CAAiCoQ,gBAAjC,CAAJ,EAAwD;EACtD+E,MAAAA,WAAW,CAACpV,SAAZ,CAAsBoU,GAAtB,CAA0BoB,cAA1B;EAEA5U,MAAAA,MAAM,CAACwU,WAAD,CAAN;EAEApS,MAAAA,aAAa,CAAChD,SAAd,CAAwBoU,GAAxB,CAA4BmB,oBAA5B;EACAH,MAAAA,WAAW,CAACpV,SAAZ,CAAsBoU,GAAtB,CAA0BmB,oBAA1B;;EAEA,YAAMK,gBAAgB,GAAG,MAAM;EAC7BR,QAAAA,WAAW,CAACpV,SAAZ,CAAsB+I,MAAtB,CAA6BwM,oBAA7B,EAAmDC,cAAnD;EACAJ,QAAAA,WAAW,CAACpV,SAAZ,CAAsBoU,GAAtB,CAA0BnJ,mBAA1B;EAEAjI,QAAAA,aAAa,CAAChD,SAAd,CAAwB+I,MAAxB,CAA+BkC,mBAA/B,EAAkDuK,cAAlD,EAAkED,oBAAlE;EAEA,aAAK5D,UAAL,GAAkB,KAAlB;EAEA9O,QAAAA,UAAU,CAAC8S,gBAAD,EAAmB,CAAnB,CAAV;EACD,OATD;;EAWA,WAAKhM,cAAL,CAAoBiM,gBAApB,EAAsC5S,aAAtC,EAAqD,IAArD;EACD,KApBD,MAoBO;EACLA,MAAAA,aAAa,CAAChD,SAAd,CAAwB+I,MAAxB,CAA+BkC,mBAA/B;EACAmK,MAAAA,WAAW,CAACpV,SAAZ,CAAsBoU,GAAtB,CAA0BnJ,mBAA1B;EAEA,WAAK0G,UAAL,GAAkB,KAAlB;EACAgE,MAAAA,gBAAgB;EACjB;;EAED,QAAIL,SAAJ,EAAe;EACb,WAAK3C,KAAL;EACD;EACF;;EAEDuC,EAAAA,iBAAiB,CAAC1B,SAAD,EAAY;EAC3B,QAAI,CAAC,CAAClE,eAAD,EAAkBD,cAAlB,EAAkClS,QAAlC,CAA2CqW,SAA3C,CAAL,EAA4D;EAC1D,aAAOA,SAAP;EACD;;EAED,QAAIjS,KAAK,EAAT,EAAa;EACX,aAAOiS,SAAS,KAAKnE,cAAd,GAA+BD,UAA/B,GAA4CD,UAAnD;EACD;;EAED,WAAOqE,SAAS,KAAKnE,cAAd,GAA+BF,UAA/B,GAA4CC,UAAnD;EACD;;EAEDqG,EAAAA,iBAAiB,CAACrC,KAAD,EAAQ;EACvB,QAAI,CAAC,CAACjE,UAAD,EAAaC,UAAb,EAAyBjS,QAAzB,CAAkCiW,KAAlC,CAAL,EAA+C;EAC7C,aAAOA,KAAP;EACD;;EAED,QAAI7R,KAAK,EAAT,EAAa;EACX,aAAO6R,KAAK,KAAKhE,UAAV,GAAuBC,cAAvB,GAAwCC,eAA/C;EACD;;EAED,WAAO8D,KAAK,KAAKhE,UAAV,GAAuBE,eAAvB,GAAyCD,cAAhD;EACD,GArYkC;;;EAyYX,SAAjBwG,iBAAiB,CAAC9Y,OAAD,EAAU8B,MAAV,EAAkB;EACxC,UAAMkM,IAAI,GAAGuG,QAAQ,CAACxH,mBAAT,CAA6B/M,OAA7B,EAAsC8B,MAAtC,CAAb;EAEA,QAAI;EAAEkT,MAAAA;EAAF,QAAchH,IAAlB;;EACA,QAAI,OAAOlM,MAAP,KAAkB,QAAtB,EAAgC;EAC9BkT,MAAAA,OAAO,GAAG,EACR,GAAGA,OADK;EAER,WAAGlT;EAFK,OAAV;EAID;;EAED,UAAMiX,MAAM,GAAG,OAAOjX,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCkT,OAAO,CAACjD,KAA7D;;EAEA,QAAI,OAAOjQ,MAAP,KAAkB,QAAtB,EAAgC;EAC9BkM,MAAAA,IAAI,CAACkI,EAAL,CAAQpU,MAAR;EACD,KAFD,MAEO,IAAI,OAAOiX,MAAP,KAAkB,QAAtB,EAAgC;EACrC,UAAI,OAAO/K,IAAI,CAAC+K,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,cAAM,IAAItW,SAAJ,CAAe,oBAAmBsW,MAAO,GAAzC,CAAN;EACD;;EAED/K,MAAAA,IAAI,CAAC+K,MAAD,CAAJ;EACD,KANM,MAMA,IAAI/D,OAAO,CAACnD,QAAR,IAAoBmD,OAAO,CAACgE,IAAhC,EAAsC;EAC3ChL,MAAAA,IAAI,CAACgE,KAAL;EACAhE,MAAAA,IAAI,CAAC4H,KAAL;EACD;EACF;;EAEqB,SAAf3Q,eAAe,CAACnD,MAAD,EAAS;EAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;EAC3BwG,MAAAA,QAAQ,CAACuE,iBAAT,CAA2B,IAA3B,EAAiChX,MAAjC;EACD,KAFM,CAAP;EAGD;;EAEyB,SAAnBmX,mBAAmB,CAACzR,KAAD,EAAQ;EAChC,UAAM5B,MAAM,GAAGlF,sBAAsB,CAAC,IAAD,CAArC;;EAEA,QAAI,CAACkF,MAAD,IAAW,CAACA,MAAM,CAAC3C,SAAP,CAAiBC,QAAjB,CAA0BmQ,mBAA1B,CAAhB,EAAgE;EAC9D;EACD;;EAED,UAAMvR,MAAM,GAAG,EACb,GAAG+M,WAAW,CAACI,iBAAZ,CAA8BrJ,MAA9B,CADU;EAEb,SAAGiJ,WAAW,CAACI,iBAAZ,CAA8B,IAA9B;EAFU,KAAf;EAIA,UAAMiK,UAAU,GAAG,KAAKhZ,YAAL,CAAkB,kBAAlB,CAAnB;;EAEA,QAAIgZ,UAAJ,EAAgB;EACdpX,MAAAA,MAAM,CAAC+P,QAAP,GAAkB,KAAlB;EACD;;EAED0C,IAAAA,QAAQ,CAACuE,iBAAT,CAA2BlT,MAA3B,EAAmC9D,MAAnC;;EAEA,QAAIoX,UAAJ,EAAgB;EACd3E,MAAAA,QAAQ,CAACzH,WAAT,CAAqBlH,MAArB,EAA6BsQ,EAA7B,CAAgCgD,UAAhC;EACD;;EAED1R,IAAAA,KAAK,CAAC6D,cAAN;EACD;;EAlckC;EAqcrC;EACA;EACA;EACA;EACA;;;EAEA1D,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,sBAA1B,EAAgD+F,mBAAhD,EAAqEI,QAAQ,CAAC0E,mBAA9E;EAEAtR,YAAY,CAACkC,EAAb,CAAgB/I,MAAhB,EAAwBsS,qBAAxB,EAA6C,MAAM;EACjD,QAAM+F,SAAS,GAAGhJ,cAAc,CAACC,IAAf,CAAoBgE,kBAApB,CAAlB;;EAEA,OAAK,IAAIlM,CAAC,GAAG,CAAR,EAAWK,GAAG,GAAG4Q,SAAS,CAACxX,MAAhC,EAAwCuG,CAAC,GAAGK,GAA5C,EAAiDL,CAAC,EAAlD,EAAsD;EACpDqM,IAAAA,QAAQ,CAACuE,iBAAT,CAA2BK,SAAS,CAACjR,CAAD,CAApC,EAAyCqM,QAAQ,CAACzH,WAAT,CAAqBqM,SAAS,CAACjR,CAAD,CAA9B,CAAzC;EACD;EACF,CAND;EAQA;EACA;EACA;EACA;EACA;EACA;;EAEAxD,kBAAkB,CAAC6P,QAAD,CAAlB;;ECvkBA;EACA;EACA;EACA;EACA;EACA;EAgBA;EACA;EACA;EACA;EACA;;EAEA,MAAMzP,MAAI,GAAG,UAAb;EACA,MAAMyH,UAAQ,GAAG,aAAjB;EACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;EACA,MAAM0B,cAAY,GAAG,WAArB;EAEA,MAAM2D,SAAO,GAAG;EACdtD,EAAAA,MAAM,EAAE,IADM;EAEd8K,EAAAA,MAAM,EAAE;EAFM,CAAhB;EAKA,MAAMjH,aAAW,GAAG;EAClB7D,EAAAA,MAAM,EAAE,SADU;EAElB8K,EAAAA,MAAM,EAAE;EAFU,CAApB;EAKA,MAAMC,YAAU,GAAI,OAAM5M,WAAU,EAApC;EACA,MAAM6M,aAAW,GAAI,QAAO7M,WAAU,EAAtC;EACA,MAAM8M,YAAU,GAAI,OAAM9M,WAAU,EAApC;EACA,MAAM+M,cAAY,GAAI,SAAQ/M,WAAU,EAAxC;EACA,MAAM2B,sBAAoB,GAAI,QAAO3B,WAAU,GAAEwB,cAAa,EAA9D;EAEA,MAAMP,iBAAe,GAAG,MAAxB;EACA,MAAM+L,mBAAmB,GAAG,UAA5B;EACA,MAAMC,qBAAqB,GAAG,YAA9B;EACA,MAAMC,oBAAoB,GAAG,WAA7B;EACA,MAAMC,qBAAqB,GAAG,qBAA9B;EAEA,MAAMC,KAAK,GAAG,OAAd;EACA,MAAMC,MAAM,GAAG,QAAf;EAEA,MAAMC,gBAAgB,GAAG,oBAAzB;EACA,MAAM5L,sBAAoB,GAAG,6BAA7B;EAEA;EACA;EACA;EACA;EACA;;EAEA,MAAM6L,QAAN,SAAuB7N,aAAvB,CAAqC;EACnCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;EAC3B,UAAM9B,OAAN;EAEA,SAAKia,gBAAL,GAAwB,KAAxB;EACA,SAAKjF,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;EACA,SAAKoY,aAAL,GAAqB,EAArB;EAEA,UAAMC,UAAU,GAAGhK,cAAc,CAACC,IAAf,CAAoBjC,sBAApB,CAAnB;;EAEA,SAAK,IAAIjG,CAAC,GAAG,CAAR,EAAWK,GAAG,GAAG4R,UAAU,CAACxY,MAAjC,EAAyCuG,CAAC,GAAGK,GAA7C,EAAkDL,CAAC,EAAnD,EAAuD;EACrD,YAAMkS,IAAI,GAAGD,UAAU,CAACjS,CAAD,CAAvB;EACA,YAAMjI,QAAQ,GAAGO,sBAAsB,CAAC4Z,IAAD,CAAvC;EACA,YAAMC,aAAa,GAAGlK,cAAc,CAACC,IAAf,CAAoBnQ,QAApB,EACnBmP,MADmB,CACZkL,SAAS,IAAIA,SAAS,KAAK,KAAKjO,QADpB,CAAtB;;EAGA,UAAIpM,QAAQ,KAAK,IAAb,IAAqBoa,aAAa,CAAC1Y,MAAvC,EAA+C;EAC7C,aAAK4Y,SAAL,GAAiBta,QAAjB;;EACA,aAAKia,aAAL,CAAmB3V,IAAnB,CAAwB6V,IAAxB;EACD;EACF;;EAED,SAAKI,mBAAL;;EAEA,QAAI,CAAC,KAAKxF,OAAL,CAAaoE,MAAlB,EAA0B;EACxB,WAAKqB,yBAAL,CAA+B,KAAKP,aAApC,EAAmD,KAAKQ,QAAL,EAAnD;EACD;;EAED,QAAI,KAAK1F,OAAL,CAAa1G,MAAjB,EAAyB;EACvB,WAAKA,MAAL;EACD;EACF,GA/BkC;;;EAmCjB,aAAPsD,OAAO,GAAG;EACnB,WAAOA,SAAP;EACD;;EAEc,aAAJ9M,IAAI,GAAG;EAChB,WAAOA,MAAP;EACD,GAzCkC;;;EA6CnCwJ,EAAAA,MAAM,GAAG;EACP,QAAI,KAAKoM,QAAL,EAAJ,EAAqB;EACnB,WAAKC,IAAL;EACD,KAFD,MAEO;EACL,WAAKC,IAAL;EACD;EACF;;EAEDA,EAAAA,IAAI,GAAG;EACL,QAAI,KAAKX,gBAAL,IAAyB,KAAKS,QAAL,EAA7B,EAA8C;EAC5C;EACD;;EAED,QAAIG,OAAO,GAAG,EAAd;EACA,QAAIC,WAAJ;;EAEA,QAAI,KAAK9F,OAAL,CAAaoE,MAAjB,EAAyB;EACvB,YAAM3I,QAAQ,GAAGN,cAAc,CAACC,IAAf,CAAqB,IAAGqJ,mBAAoB,KAAIA,mBAAoB,EAApE,EAAuE,KAAKzE,OAAL,CAAaoE,MAApF,CAAjB;EACAyB,MAAAA,OAAO,GAAG1K,cAAc,CAACC,IAAf,CAAoB2J,gBAApB,EAAsC,KAAK/E,OAAL,CAAaoE,MAAnD,EAA2DhK,MAA3D,CAAkEgL,IAAI,IAAI,CAAC3J,QAAQ,CAACrQ,QAAT,CAAkBga,IAAlB,CAA3E,CAAV,CAFuB;EAGxB;;EAED,UAAMW,SAAS,GAAG5K,cAAc,CAACK,OAAf,CAAuB,KAAK+J,SAA5B,CAAlB;;EACA,QAAIM,OAAO,CAAClZ,MAAZ,EAAoB;EAClB,YAAMqZ,cAAc,GAAGH,OAAO,CAACzK,IAAR,CAAagK,IAAI,IAAIW,SAAS,KAAKX,IAAnC,CAAvB;EACAU,MAAAA,WAAW,GAAGE,cAAc,GAAGhB,QAAQ,CAAClN,WAAT,CAAqBkO,cAArB,CAAH,GAA0C,IAAtE;;EAEA,UAAIF,WAAW,IAAIA,WAAW,CAACb,gBAA/B,EAAiD;EAC/C;EACD;EACF;;EAED,UAAMgB,UAAU,GAAGtT,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCgN,YAApC,CAAnB;;EACA,QAAI4B,UAAU,CAACxQ,gBAAf,EAAiC;EAC/B;EACD;;EAEDoQ,IAAAA,OAAO,CAAC3Y,OAAR,CAAgBgZ,UAAU,IAAI;EAC5B,UAAIH,SAAS,KAAKG,UAAlB,EAA8B;EAC5BlB,QAAAA,QAAQ,CAACjN,mBAAT,CAA6BmO,UAA7B,EAAyC;EAAE5M,UAAAA,MAAM,EAAE;EAAV,SAAzC,EAA4DqM,IAA5D;EACD;;EAED,UAAI,CAACG,WAAL,EAAkB;EAChBxO,QAAAA,IAAI,CAACd,GAAL,CAAS0P,UAAT,EAAqB3O,UAArB,EAA+B,IAA/B;EACD;EACF,KARD;;EAUA,UAAM4O,SAAS,GAAG,KAAKC,aAAL,EAAlB;;EAEA,SAAK/O,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+ByN,mBAA/B;;EACA,SAAKpN,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4BqC,qBAA5B;;EAEA,SAAKrN,QAAL,CAAcgP,KAAd,CAAoBF,SAApB,IAAiC,CAAjC;;EAEA,SAAKV,yBAAL,CAA+B,KAAKP,aAApC,EAAmD,IAAnD;;EACA,SAAKD,gBAAL,GAAwB,IAAxB;;EAEA,UAAMqB,QAAQ,GAAG,MAAM;EACrB,WAAKrB,gBAAL,GAAwB,KAAxB;;EAEA,WAAK5N,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0N,qBAA/B;;EACA,WAAKrN,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4BoC,mBAA5B,EAAiD/L,iBAAjD;;EAEA,WAAKrB,QAAL,CAAcgP,KAAd,CAAoBF,SAApB,IAAiC,EAAjC;EAEAxT,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCiN,aAApC;EACD,KATD;;EAWA,UAAMiC,oBAAoB,GAAGJ,SAAS,CAAC,CAAD,CAAT,CAAazY,WAAb,KAA6ByY,SAAS,CAACjR,KAAV,CAAgB,CAAhB,CAA1D;EACA,UAAMsR,UAAU,GAAI,SAAQD,oBAAqB,EAAjD;;EAEA,SAAK3O,cAAL,CAAoB0O,QAApB,EAA8B,KAAKjP,QAAnC,EAA6C,IAA7C;;EACA,SAAKA,QAAL,CAAcgP,KAAd,CAAoBF,SAApB,IAAkC,GAAE,KAAK9O,QAAL,CAAcmP,UAAd,CAA0B,IAA9D;EACD;;EAEDb,EAAAA,IAAI,GAAG;EACL,QAAI,KAAKV,gBAAL,IAAyB,CAAC,KAAKS,QAAL,EAA9B,EAA+C;EAC7C;EACD;;EAED,UAAMO,UAAU,GAAGtT,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCkN,YAApC,CAAnB;;EACA,QAAI0B,UAAU,CAACxQ,gBAAf,EAAiC;EAC/B;EACD;;EAED,UAAM0Q,SAAS,GAAG,KAAKC,aAAL,EAAlB;;EAEA,SAAK/O,QAAL,CAAcgP,KAAd,CAAoBF,SAApB,IAAkC,GAAE,KAAK9O,QAAL,CAAcqD,qBAAd,GAAsCyL,SAAtC,CAAiD,IAArF;EAEAtX,IAAAA,MAAM,CAAC,KAAKwI,QAAN,CAAN;;EAEA,SAAKA,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4BqC,qBAA5B;;EACA,SAAKrN,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+ByN,mBAA/B,EAAoD/L,iBAApD;;EAEA,UAAM+N,kBAAkB,GAAG,KAAKvB,aAAL,CAAmBvY,MAA9C;;EACA,SAAK,IAAIuG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuT,kBAApB,EAAwCvT,CAAC,EAAzC,EAA6C;EAC3C,YAAMkC,OAAO,GAAG,KAAK8P,aAAL,CAAmBhS,CAAnB,CAAhB;EACA,YAAMkS,IAAI,GAAG1Z,sBAAsB,CAAC0J,OAAD,CAAnC;;EAEA,UAAIgQ,IAAI,IAAI,CAAC,KAAKM,QAAL,CAAcN,IAAd,CAAb,EAAkC;EAChC,aAAKK,yBAAL,CAA+B,CAACrQ,OAAD,CAA/B,EAA0C,KAA1C;EACD;EACF;;EAED,SAAK6P,gBAAL,GAAwB,IAAxB;;EAEA,UAAMqB,QAAQ,GAAG,MAAM;EACrB,WAAKrB,gBAAL,GAAwB,KAAxB;;EACA,WAAK5N,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0N,qBAA/B;;EACA,WAAKrN,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4BoC,mBAA5B;;EACA9R,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCmN,cAApC;EACD,KALD;;EAOA,SAAKnN,QAAL,CAAcgP,KAAd,CAAoBF,SAApB,IAAiC,EAAjC;;EAEA,SAAKvO,cAAL,CAAoB0O,QAApB,EAA8B,KAAKjP,QAAnC,EAA6C,IAA7C;EACD;;EAEDqO,EAAAA,QAAQ,CAAC1a,OAAO,GAAG,KAAKqM,QAAhB,EAA0B;EAChC,WAAOrM,OAAO,CAACiD,SAAR,CAAkBC,QAAlB,CAA2BwK,iBAA3B,CAAP;EACD,GApKkC;;;EAwKnCuH,EAAAA,UAAU,CAACnT,MAAD,EAAS;EACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,SADI;EAEP,SAAG/C,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAFI;EAGP,SAAGvK;EAHI,KAAT;EAKAA,IAAAA,MAAM,CAACwM,MAAP,GAAgB9E,OAAO,CAAC1H,MAAM,CAACwM,MAAR,CAAvB,CANiB;;EAOjBxM,IAAAA,MAAM,CAACsX,MAAP,GAAgB1X,UAAU,CAACI,MAAM,CAACsX,MAAR,CAA1B;EACAxX,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAeqQ,aAAf,CAAf;EACA,WAAOrQ,MAAP;EACD;;EAEDsZ,EAAAA,aAAa,GAAG;EACd,WAAO,KAAK/O,QAAL,CAAcpJ,SAAd,CAAwBC,QAAxB,CAAiC0W,qBAAjC,IAA0DC,KAA1D,GAAkEC,MAAzE;EACD;;EAEDU,EAAAA,mBAAmB,GAAG;EACpB,QAAI,CAAC,KAAKxF,OAAL,CAAaoE,MAAlB,EAA0B;EACxB;EACD;;EAED,UAAM3I,QAAQ,GAAGN,cAAc,CAACC,IAAf,CAAqB,IAAGqJ,mBAAoB,KAAIA,mBAAoB,EAApE,EAAuE,KAAKzE,OAAL,CAAaoE,MAApF,CAAjB;EACAjJ,IAAAA,cAAc,CAACC,IAAf,CAAoBjC,sBAApB,EAA0C,KAAK6G,OAAL,CAAaoE,MAAvD,EAA+DhK,MAA/D,CAAsEgL,IAAI,IAAI,CAAC3J,QAAQ,CAACrQ,QAAT,CAAkBga,IAAlB,CAA/E,EACGlY,OADH,CACWlC,OAAO,IAAI;EAClB,YAAM0b,QAAQ,GAAGhb,sBAAsB,CAACV,OAAD,CAAvC;;EAEA,UAAI0b,QAAJ,EAAc;EACZ,aAAKjB,yBAAL,CAA+B,CAACza,OAAD,CAA/B,EAA0C,KAAK0a,QAAL,CAAcgB,QAAd,CAA1C;EACD;EACF,KAPH;EAQD;;EAEDjB,EAAAA,yBAAyB,CAACkB,YAAD,EAAeC,MAAf,EAAuB;EAC9C,QAAI,CAACD,YAAY,CAACha,MAAlB,EAA0B;EACxB;EACD;;EAEDga,IAAAA,YAAY,CAACzZ,OAAb,CAAqBkY,IAAI,IAAI;EAC3B,UAAIwB,MAAJ,EAAY;EACVxB,QAAAA,IAAI,CAACnX,SAAL,CAAe+I,MAAf,CAAsB2N,oBAAtB;EACD,OAFD,MAEO;EACLS,QAAAA,IAAI,CAACnX,SAAL,CAAeoU,GAAf,CAAmBsC,oBAAnB;EACD;;EAEDS,MAAAA,IAAI,CAAC7L,YAAL,CAAkB,eAAlB,EAAmCqN,MAAnC;EACD,KARD;EASD,GAtNkC;;;EA0Nb,SAAf3W,eAAe,CAACnD,MAAD,EAAS;EAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;EAC3B,YAAMiH,OAAO,GAAG,EAAhB;;EACA,UAAI,OAAOlT,MAAP,KAAkB,QAAlB,IAA8B,YAAYU,IAAZ,CAAiBV,MAAjB,CAAlC,EAA4D;EAC1DkT,QAAAA,OAAO,CAAC1G,MAAR,GAAiB,KAAjB;EACD;;EAED,YAAMN,IAAI,GAAGgM,QAAQ,CAACjN,mBAAT,CAA6B,IAA7B,EAAmCiI,OAAnC,CAAb;;EAEA,UAAI,OAAOlT,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,YAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,gBAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;EACD;;EAEDkM,QAAAA,IAAI,CAAClM,MAAD,CAAJ;EACD;EACF,KAfM,CAAP;EAgBD;;EA3OkC;EA8OrC;EACA;EACA;EACA;EACA;;;EAEA6F,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,sBAA1B,EAAgDD,sBAAhD,EAAsE,UAAU3G,KAAV,EAAiB;EACrF;EACA,MAAIA,KAAK,CAAC5B,MAAN,CAAayH,OAAb,KAAyB,GAAzB,IAAiC7F,KAAK,CAACC,cAAN,IAAwBD,KAAK,CAACC,cAAN,CAAqB4F,OAArB,KAAiC,GAA9F,EAAoG;EAClG7F,IAAAA,KAAK,CAAC6D,cAAN;EACD;;EAED,QAAMpL,QAAQ,GAAGO,sBAAsB,CAAC,IAAD,CAAvC;EACA,QAAMqb,gBAAgB,GAAG1L,cAAc,CAACC,IAAf,CAAoBnQ,QAApB,CAAzB;EAEA4b,EAAAA,gBAAgB,CAAC3Z,OAAjB,CAAyBlC,OAAO,IAAI;EAClCga,IAAAA,QAAQ,CAACjN,mBAAT,CAA6B/M,OAA7B,EAAsC;EAAEsO,MAAAA,MAAM,EAAE;EAAV,KAAtC,EAAyDA,MAAzD;EACD,GAFD;EAGD,CAZD;EAcA;EACA;EACA;EACA;EACA;EACA;;EAEA5J,kBAAkB,CAACsV,QAAD,CAAlB;;EC3UA;EACA;EACA;EACA;EACA;EACA;EAqBA;EACA;EACA;EACA;EACA;;EAEA,MAAMlV,MAAI,GAAG,UAAb;EACA,MAAMyH,UAAQ,GAAG,aAAjB;EACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;EACA,MAAM0B,cAAY,GAAG,WAArB;EAEA,MAAM6N,YAAU,GAAG,QAAnB;EACA,MAAMC,SAAS,GAAG,OAAlB;EACA,MAAMC,SAAO,GAAG,KAAhB;EACA,MAAMC,YAAY,GAAG,SAArB;EACA,MAAMC,cAAc,GAAG,WAAvB;EACA,MAAMC,kBAAkB,GAAG,CAA3B;;EAEA,MAAMC,cAAc,GAAG,IAAI7Z,MAAJ,CAAY,GAAE0Z,YAAa,IAAGC,cAAe,IAAGJ,YAAW,EAA3D,CAAvB;EAEA,MAAMvC,YAAU,GAAI,OAAM9M,WAAU,EAApC;EACA,MAAM+M,cAAY,GAAI,SAAQ/M,WAAU,EAAxC;EACA,MAAM4M,YAAU,GAAI,OAAM5M,WAAU,EAApC;EACA,MAAM6M,aAAW,GAAI,QAAO7M,WAAU,EAAtC;EACA,MAAM2B,sBAAoB,GAAI,QAAO3B,WAAU,GAAEwB,cAAa,EAA9D;EACA,MAAMoO,sBAAsB,GAAI,UAAS5P,WAAU,GAAEwB,cAAa,EAAlE;EACA,MAAMqO,oBAAoB,GAAI,QAAO7P,WAAU,GAAEwB,cAAa,EAA9D;EAEA,MAAMP,iBAAe,GAAG,MAAxB;EACA,MAAM6O,iBAAiB,GAAG,QAA1B;EACA,MAAMC,kBAAkB,GAAG,SAA3B;EACA,MAAMC,oBAAoB,GAAG,WAA7B;EACA,MAAMC,iBAAiB,GAAG,QAA1B;EAEA,MAAMvO,sBAAoB,GAAG,6BAA7B;EACA,MAAMwO,aAAa,GAAG,gBAAtB;EACA,MAAMC,mBAAmB,GAAG,aAA5B;EACA,MAAMC,sBAAsB,GAAG,6DAA/B;EAEA,MAAMC,aAAa,GAAGtY,KAAK,KAAK,SAAL,GAAiB,WAA5C;EACA,MAAMuY,gBAAgB,GAAGvY,KAAK,KAAK,WAAL,GAAmB,SAAjD;EACA,MAAMwY,gBAAgB,GAAGxY,KAAK,KAAK,YAAL,GAAoB,cAAlD;EACA,MAAMyY,mBAAmB,GAAGzY,KAAK,KAAK,cAAL,GAAsB,YAAvD;EACA,MAAM0Y,eAAe,GAAG1Y,KAAK,KAAK,YAAL,GAAoB,aAAjD;EACA,MAAM2Y,cAAc,GAAG3Y,KAAK,KAAK,aAAL,GAAqB,YAAjD;EAEA,MAAMoN,SAAO,GAAG;EACdpC,EAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,CADM;EAEd4N,EAAAA,QAAQ,EAAE,iBAFI;EAGdC,EAAAA,SAAS,EAAE,QAHG;EAIdC,EAAAA,OAAO,EAAE,SAJK;EAKdC,EAAAA,YAAY,EAAE,IALA;EAMdC,EAAAA,SAAS,EAAE;EANG,CAAhB;EASA,MAAMrL,aAAW,GAAG;EAClB3C,EAAAA,MAAM,EAAE,yBADU;EAElB4N,EAAAA,QAAQ,EAAE,kBAFQ;EAGlBC,EAAAA,SAAS,EAAE,yBAHO;EAIlBC,EAAAA,OAAO,EAAE,QAJS;EAKlBC,EAAAA,YAAY,EAAE,wBALI;EAMlBC,EAAAA,SAAS,EAAE;EANO,CAApB;EASA;EACA;EACA;EACA;EACA;;EAEA,MAAMC,QAAN,SAAuBtR,aAAvB,CAAqC;EACnCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;EAC3B,UAAM9B,OAAN;EAEA,SAAK0d,OAAL,GAAe,IAAf;EACA,SAAK1I,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;EACA,SAAK6b,KAAL,GAAa,KAAKC,eAAL,EAAb;EACA,SAAKC,SAAL,GAAiB,KAAKC,aAAL,EAAjB;EACD,GARkC;;;EAYjB,aAAPlM,OAAO,GAAG;EACnB,WAAOA,SAAP;EACD;;EAEqB,aAAXO,WAAW,GAAG;EACvB,WAAOA,aAAP;EACD;;EAEc,aAAJrN,IAAI,GAAG;EAChB,WAAOA,MAAP;EACD,GAtBkC;;;EA0BnCwJ,EAAAA,MAAM,GAAG;EACP,WAAO,KAAKoM,QAAL,KAAkB,KAAKC,IAAL,EAAlB,GAAgC,KAAKC,IAAL,EAAvC;EACD;;EAEDA,EAAAA,IAAI,GAAG;EACL,QAAI9X,UAAU,CAAC,KAAKuJ,QAAN,CAAV,IAA6B,KAAKqO,QAAL,CAAc,KAAKiD,KAAnB,CAAjC,EAA4D;EAC1D;EACD;;EAED,UAAMxU,aAAa,GAAG;EACpBA,MAAAA,aAAa,EAAE,KAAKkD;EADA,KAAtB;EAIA,UAAM0R,SAAS,GAAGpW,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCgN,YAApC,EAAgDlQ,aAAhD,CAAlB;;EAEA,QAAI4U,SAAS,CAACtT,gBAAd,EAAgC;EAC9B;EACD;;EAED,UAAM2O,MAAM,GAAGqE,QAAQ,CAACO,oBAAT,CAA8B,KAAK3R,QAAnC,CAAf,CAfK;;EAiBL,QAAI,KAAKwR,SAAT,EAAoB;EAClBhP,MAAAA,WAAW,CAACC,gBAAZ,CAA6B,KAAK6O,KAAlC,EAAyC,QAAzC,EAAmD,MAAnD;EACD,KAFD,MAEO;EACL,WAAKM,aAAL,CAAmB7E,MAAnB;EACD,KArBI;EAwBL;EACA;EACA;;;EACA,QAAI,kBAAkBvZ,QAAQ,CAACyD,eAA3B,IACF,CAAC8V,MAAM,CAAC9L,OAAP,CAAesP,mBAAf,CADH,EACwC;EACtC,SAAGvM,MAAH,CAAU,GAAGxQ,QAAQ,CAACoE,IAAT,CAAcwM,QAA3B,EACGvO,OADH,CACWkY,IAAI,IAAIzS,YAAY,CAACkC,EAAb,CAAgBuQ,IAAhB,EAAsB,WAAtB,EAAmCxW,IAAnC,CADnB;EAED;;EAED,SAAKyI,QAAL,CAAc6R,KAAd;;EACA,SAAK7R,QAAL,CAAckC,YAAd,CAA2B,eAA3B,EAA4C,IAA5C;;EAEA,SAAKoP,KAAL,CAAW1a,SAAX,CAAqBoU,GAArB,CAAyB3J,iBAAzB;;EACA,SAAKrB,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4B3J,iBAA5B;;EACA/F,IAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCiN,aAApC,EAAiDnQ,aAAjD;EACD;;EAEDwR,EAAAA,IAAI,GAAG;EACL,QAAI7X,UAAU,CAAC,KAAKuJ,QAAN,CAAV,IAA6B,CAAC,KAAKqO,QAAL,CAAc,KAAKiD,KAAnB,CAAlC,EAA6D;EAC3D;EACD;;EAED,UAAMxU,aAAa,GAAG;EACpBA,MAAAA,aAAa,EAAE,KAAKkD;EADA,KAAtB;;EAIA,SAAK8R,aAAL,CAAmBhV,aAAnB;EACD;;EAEDqD,EAAAA,OAAO,GAAG;EACR,QAAI,KAAKkR,OAAT,EAAkB;EAChB,WAAKA,OAAL,CAAaU,OAAb;EACD;;EAED,UAAM5R,OAAN;EACD;;EAED6R,EAAAA,MAAM,GAAG;EACP,SAAKR,SAAL,GAAiB,KAAKC,aAAL,EAAjB;;EACA,QAAI,KAAKJ,OAAT,EAAkB;EAChB,WAAKA,OAAL,CAAaW,MAAb;EACD;EACF,GAhGkC;;;EAoGnCF,EAAAA,aAAa,CAAChV,aAAD,EAAgB;EAC3B,UAAMmV,SAAS,GAAG3W,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCkN,YAApC,EAAgDpQ,aAAhD,CAAlB;;EACA,QAAImV,SAAS,CAAC7T,gBAAd,EAAgC;EAC9B;EACD,KAJ0B;EAO3B;;;EACA,QAAI,kBAAkB5K,QAAQ,CAACyD,eAA/B,EAAgD;EAC9C,SAAG+M,MAAH,CAAU,GAAGxQ,QAAQ,CAACoE,IAAT,CAAcwM,QAA3B,EACGvO,OADH,CACWkY,IAAI,IAAIzS,YAAY,CAACC,GAAb,CAAiBwS,IAAjB,EAAuB,WAAvB,EAAoCxW,IAApC,CADnB;EAED;;EAED,QAAI,KAAK8Z,OAAT,EAAkB;EAChB,WAAKA,OAAL,CAAaU,OAAb;EACD;;EAED,SAAKT,KAAL,CAAW1a,SAAX,CAAqB+I,MAArB,CAA4B0B,iBAA5B;;EACA,SAAKrB,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0B,iBAA/B;;EACA,SAAKrB,QAAL,CAAckC,YAAd,CAA2B,eAA3B,EAA4C,OAA5C;;EACAM,IAAAA,WAAW,CAACE,mBAAZ,CAAgC,KAAK4O,KAArC,EAA4C,QAA5C;EACAhW,IAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCmN,cAApC,EAAkDrQ,aAAlD;EACD;;EAED8L,EAAAA,UAAU,CAACnT,MAAD,EAAS;EACjBA,IAAAA,MAAM,GAAG,EACP,GAAG,KAAKsK,WAAL,CAAiBwF,OADb;EAEP,SAAG/C,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAFI;EAGP,SAAGvK;EAHI,KAAT;EAMAF,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAe,KAAKsK,WAAL,CAAiB+F,WAAhC,CAAf;;EAEA,QAAI,OAAOrQ,MAAM,CAACub,SAAd,KAA4B,QAA5B,IAAwC,CAAC9b,SAAS,CAACO,MAAM,CAACub,SAAR,CAAlD,IACF,OAAOvb,MAAM,CAACub,SAAP,CAAiB3N,qBAAxB,KAAkD,UADpD,EAEE;EACA;EACA,YAAM,IAAIjN,SAAJ,CAAe,GAAEqC,MAAI,CAACpC,WAAL,EAAmB,gGAApC,CAAN;EACD;;EAED,WAAOZ,MAAP;EACD;;EAEDmc,EAAAA,aAAa,CAAC7E,MAAD,EAAS;EACpB,QAAI,OAAOmF,iBAAP,KAAkB,WAAtB,EAAmC;EACjC,YAAM,IAAI9b,SAAJ,CAAc,+DAAd,CAAN;EACD;;EAED,QAAI+b,gBAAgB,GAAG,KAAKnS,QAA5B;;EAEA,QAAI,KAAK2I,OAAL,CAAaqI,SAAb,KAA2B,QAA/B,EAAyC;EACvCmB,MAAAA,gBAAgB,GAAGpF,MAAnB;EACD,KAFD,MAEO,IAAI7X,SAAS,CAAC,KAAKyT,OAAL,CAAaqI,SAAd,CAAb,EAAuC;EAC5CmB,MAAAA,gBAAgB,GAAG9c,UAAU,CAAC,KAAKsT,OAAL,CAAaqI,SAAd,CAA7B;EACD,KAFM,MAEA,IAAI,OAAO,KAAKrI,OAAL,CAAaqI,SAApB,KAAkC,QAAtC,EAAgD;EACrDmB,MAAAA,gBAAgB,GAAG,KAAKxJ,OAAL,CAAaqI,SAAhC;EACD;;EAED,UAAME,YAAY,GAAG,KAAKkB,gBAAL,EAArB;;EACA,UAAMC,eAAe,GAAGnB,YAAY,CAACoB,SAAb,CAAuBvO,IAAvB,CAA4BwO,QAAQ,IAAIA,QAAQ,CAAC/Z,IAAT,KAAkB,aAAlB,IAAmC+Z,QAAQ,CAACC,OAAT,KAAqB,KAAhG,CAAxB;EAEA,SAAKnB,OAAL,GAAea,iBAAM,CAACO,YAAP,CAAoBN,gBAApB,EAAsC,KAAKb,KAA3C,EAAkDJ,YAAlD,CAAf;;EAEA,QAAImB,eAAJ,EAAqB;EACnB7P,MAAAA,WAAW,CAACC,gBAAZ,CAA6B,KAAK6O,KAAlC,EAAyC,QAAzC,EAAmD,QAAnD;EACD;EACF;;EAEDjD,EAAAA,QAAQ,CAAC1a,OAAO,GAAG,KAAKqM,QAAhB,EAA0B;EAChC,WAAOrM,OAAO,CAACiD,SAAR,CAAkBC,QAAlB,CAA2BwK,iBAA3B,CAAP;EACD;;EAEDkQ,EAAAA,eAAe,GAAG;EAChB,WAAOzN,cAAc,CAACc,IAAf,CAAoB,KAAK5E,QAAzB,EAAmCsQ,aAAnC,EAAkD,CAAlD,CAAP;EACD;;EAEDoC,EAAAA,aAAa,GAAG;EACd,UAAMC,cAAc,GAAG,KAAK3S,QAAL,CAAc1I,UAArC;;EAEA,QAAIqb,cAAc,CAAC/b,SAAf,CAAyBC,QAAzB,CAAkCsZ,kBAAlC,CAAJ,EAA2D;EACzD,aAAOU,eAAP;EACD;;EAED,QAAI8B,cAAc,CAAC/b,SAAf,CAAyBC,QAAzB,CAAkCuZ,oBAAlC,CAAJ,EAA6D;EAC3D,aAAOU,cAAP;EACD,KATa;;;EAYd,UAAM8B,KAAK,GAAGle,gBAAgB,CAAC,KAAK4c,KAAN,CAAhB,CAA6B9a,gBAA7B,CAA8C,eAA9C,EAA+DtC,IAA/D,OAA0E,KAAxF;;EAEA,QAAIye,cAAc,CAAC/b,SAAf,CAAyBC,QAAzB,CAAkCqZ,iBAAlC,CAAJ,EAA0D;EACxD,aAAO0C,KAAK,GAAGlC,gBAAH,GAAsBD,aAAlC;EACD;;EAED,WAAOmC,KAAK,GAAGhC,mBAAH,GAAyBD,gBAArC;EACD;;EAEDc,EAAAA,aAAa,GAAG;EACd,WAAO,KAAKzR,QAAL,CAAciB,OAAd,CAAuB,IAAGoP,iBAAkB,EAA5C,MAAmD,IAA1D;EACD;;EAEDwC,EAAAA,UAAU,GAAG;EACX,UAAM;EAAE1P,MAAAA;EAAF,QAAa,KAAKwF,OAAxB;;EAEA,QAAI,OAAOxF,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,aAAOA,MAAM,CAAClP,KAAP,CAAa,GAAb,EAAkB+Q,GAAlB,CAAsB3C,GAAG,IAAIzN,MAAM,CAAC8W,QAAP,CAAgBrJ,GAAhB,EAAqB,EAArB,CAA7B,CAAP;EACD;;EAED,QAAI,OAAOc,MAAP,KAAkB,UAAtB,EAAkC;EAChC,aAAO2P,UAAU,IAAI3P,MAAM,CAAC2P,UAAD,EAAa,KAAK9S,QAAlB,CAA3B;EACD;;EAED,WAAOmD,MAAP;EACD;;EAEDiP,EAAAA,gBAAgB,GAAG;EACjB,UAAMW,qBAAqB,GAAG;EAC5BC,MAAAA,SAAS,EAAE,KAAKN,aAAL,EADiB;EAE5BJ,MAAAA,SAAS,EAAE,CAAC;EACV9Z,QAAAA,IAAI,EAAE,iBADI;EAEVya,QAAAA,OAAO,EAAE;EACPlC,UAAAA,QAAQ,EAAE,KAAKpI,OAAL,CAAaoI;EADhB;EAFC,OAAD,EAMX;EACEvY,QAAAA,IAAI,EAAE,QADR;EAEEya,QAAAA,OAAO,EAAE;EACP9P,UAAAA,MAAM,EAAE,KAAK0P,UAAL;EADD;EAFX,OANW;EAFiB,KAA9B,CADiB;;EAkBjB,QAAI,KAAKlK,OAAL,CAAasI,OAAb,KAAyB,QAA7B,EAAuC;EACrC8B,MAAAA,qBAAqB,CAACT,SAAtB,GAAkC,CAAC;EACjC9Z,QAAAA,IAAI,EAAE,aAD2B;EAEjCga,QAAAA,OAAO,EAAE;EAFwB,OAAD,CAAlC;EAID;;EAED,WAAO,EACL,GAAGO,qBADE;EAEL,UAAI,OAAO,KAAKpK,OAAL,CAAauI,YAApB,KAAqC,UAArC,GAAkD,KAAKvI,OAAL,CAAauI,YAAb,CAA0B6B,qBAA1B,CAAlD,GAAqG,KAAKpK,OAAL,CAAauI,YAAtH;EAFK,KAAP;EAID;;EAEDgC,EAAAA,eAAe,CAAC;EAAErU,IAAAA,GAAF;EAAOtF,IAAAA;EAAP,GAAD,EAAkB;EAC/B,UAAM4Z,KAAK,GAAGrP,cAAc,CAACC,IAAf,CAAoByM,sBAApB,EAA4C,KAAKc,KAAjD,EAAwDvO,MAAxD,CAA+DzM,SAA/D,CAAd;;EAEA,QAAI,CAAC6c,KAAK,CAAC7d,MAAX,EAAmB;EACjB;EACD,KAL8B;EAQ/B;;;EACAoE,IAAAA,oBAAoB,CAACyZ,KAAD,EAAQ5Z,MAAR,EAAgBsF,GAAG,KAAKgR,cAAxB,EAAwC,CAACsD,KAAK,CAACpf,QAAN,CAAewF,MAAf,CAAzC,CAApB,CAAqFsY,KAArF;EACD,GAhQkC;;;EAoQb,SAAfjZ,eAAe,CAACnD,MAAD,EAAS;EAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;EAC3B,YAAMC,IAAI,GAAGyP,QAAQ,CAAC1Q,mBAAT,CAA6B,IAA7B,EAAmCjL,MAAnC,CAAb;;EAEA,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;EAC9B;EACD;;EAED,UAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,cAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;EACD;;EAEDkM,MAAAA,IAAI,CAAClM,MAAD,CAAJ;EACD,KAZM,CAAP;EAaD;;EAEgB,SAAV2d,UAAU,CAACjY,KAAD,EAAQ;EACvB,QAAIA,KAAK,KAAKA,KAAK,CAACgH,MAAN,KAAiB2N,kBAAjB,IAAwC3U,KAAK,CAACK,IAAN,KAAe,OAAf,IAA0BL,KAAK,CAAC0D,GAAN,KAAc8Q,SAArF,CAAT,EAAyG;EACvG;EACD;;EAED,UAAM0D,OAAO,GAAGvP,cAAc,CAACC,IAAf,CAAoBjC,sBAApB,CAAhB;;EAEA,SAAK,IAAIjG,CAAC,GAAG,CAAR,EAAWK,GAAG,GAAGmX,OAAO,CAAC/d,MAA9B,EAAsCuG,CAAC,GAAGK,GAA1C,EAA+CL,CAAC,EAAhD,EAAoD;EAClD,YAAMyX,OAAO,GAAGlC,QAAQ,CAAC3Q,WAAT,CAAqB4S,OAAO,CAACxX,CAAD,CAA5B,CAAhB;;EACA,UAAI,CAACyX,OAAD,IAAYA,OAAO,CAAC3K,OAAR,CAAgBwI,SAAhB,KAA8B,KAA9C,EAAqD;EACnD;EACD;;EAED,UAAI,CAACmC,OAAO,CAACjF,QAAR,EAAL,EAAyB;EACvB;EACD;;EAED,YAAMvR,aAAa,GAAG;EACpBA,QAAAA,aAAa,EAAEwW,OAAO,CAACtT;EADH,OAAtB;;EAIA,UAAI7E,KAAJ,EAAW;EACT,cAAMoY,YAAY,GAAGpY,KAAK,CAACoY,YAAN,EAArB;EACA,cAAMC,YAAY,GAAGD,YAAY,CAACxf,QAAb,CAAsBuf,OAAO,CAAChC,KAA9B,CAArB;;EACA,YACEiC,YAAY,CAACxf,QAAb,CAAsBuf,OAAO,CAACtT,QAA9B,KACCsT,OAAO,CAAC3K,OAAR,CAAgBwI,SAAhB,KAA8B,QAA9B,IAA0C,CAACqC,YAD5C,IAECF,OAAO,CAAC3K,OAAR,CAAgBwI,SAAhB,KAA8B,SAA9B,IAA2CqC,YAH9C,EAIE;EACA;EACD,SATQ;;;EAYT,YAAIF,OAAO,CAAChC,KAAR,CAAcza,QAAd,CAAuBsE,KAAK,CAAC5B,MAA7B,MAA0C4B,KAAK,CAACK,IAAN,KAAe,OAAf,IAA0BL,KAAK,CAAC0D,GAAN,KAAc8Q,SAAzC,IAAqD,qCAAqCxZ,IAArC,CAA0CgF,KAAK,CAAC5B,MAAN,CAAayH,OAAvD,CAA9F,CAAJ,EAAoK;EAClK;EACD;;EAED,YAAI7F,KAAK,CAACK,IAAN,KAAe,OAAnB,EAA4B;EAC1BsB,UAAAA,aAAa,CAACiE,UAAd,GAA2B5F,KAA3B;EACD;EACF;;EAEDmY,MAAAA,OAAO,CAACxB,aAAR,CAAsBhV,aAAtB;EACD;EACF;;EAE0B,SAApB6U,oBAAoB,CAAChe,OAAD,EAAU;EACnC,WAAOU,sBAAsB,CAACV,OAAD,CAAtB,IAAmCA,OAAO,CAAC2D,UAAlD;EACD;;EAE2B,SAArBmc,qBAAqB,CAACtY,KAAD,EAAQ;EAClC;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAI,kBAAkBhF,IAAlB,CAAuBgF,KAAK,CAAC5B,MAAN,CAAayH,OAApC,IACF7F,KAAK,CAAC0D,GAAN,KAAc6Q,SAAd,IAA4BvU,KAAK,CAAC0D,GAAN,KAAc4Q,YAAd,KAC1BtU,KAAK,CAAC0D,GAAN,KAAcgR,cAAd,IAAgC1U,KAAK,CAAC0D,GAAN,KAAc+Q,YAA/C,IACCzU,KAAK,CAAC5B,MAAN,CAAa0H,OAAb,CAAqBqP,aAArB,CAF0B,CAD1B,GAIF,CAACP,cAAc,CAAC5Z,IAAf,CAAoBgF,KAAK,CAAC0D,GAA1B,CAJH,EAImC;EACjC;EACD;;EAED,UAAM6U,QAAQ,GAAG,KAAK9c,SAAL,CAAeC,QAAf,CAAwBwK,iBAAxB,CAAjB;;EAEA,QAAI,CAACqS,QAAD,IAAavY,KAAK,CAAC0D,GAAN,KAAc4Q,YAA/B,EAA2C;EACzC;EACD;;EAEDtU,IAAAA,KAAK,CAAC6D,cAAN;EACA7D,IAAAA,KAAK,CAACwY,eAAN;;EAEA,QAAIld,UAAU,CAAC,IAAD,CAAd,EAAsB;EACpB;EACD;;EAED,UAAMmd,eAAe,GAAG,KAAKtP,OAAL,CAAaxC,sBAAb,IAAqC,IAArC,GAA4CgC,cAAc,CAACW,IAAf,CAAoB,IAApB,EAA0B3C,sBAA1B,EAAgD,CAAhD,CAApE;EACA,UAAM1C,QAAQ,GAAGgS,QAAQ,CAAC1Q,mBAAT,CAA6BkT,eAA7B,CAAjB;;EAEA,QAAIzY,KAAK,CAAC0D,GAAN,KAAc4Q,YAAlB,EAA8B;EAC5BrQ,MAAAA,QAAQ,CAACkP,IAAT;EACA;EACD;;EAED,QAAInT,KAAK,CAAC0D,GAAN,KAAc+Q,YAAd,IAA8BzU,KAAK,CAAC0D,GAAN,KAAcgR,cAAhD,EAAgE;EAC9D,UAAI,CAAC6D,QAAL,EAAe;EACbtU,QAAAA,QAAQ,CAACmP,IAAT;EACD;;EAEDnP,MAAAA,QAAQ,CAAC8T,eAAT,CAAyB/X,KAAzB;;EACA;EACD;;EAED,QAAI,CAACuY,QAAD,IAAavY,KAAK,CAAC0D,GAAN,KAAc6Q,SAA/B,EAA0C;EACxC0B,MAAAA,QAAQ,CAACgC,UAAT;EACD;EACF;;EAvXkC;EA0XrC;EACA;EACA;EACA;EACA;;;EAEA9X,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0Bwc,sBAA1B,EAAkDlO,sBAAlD,EAAwEsP,QAAQ,CAACqC,qBAAjF;EACAnY,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0Bwc,sBAA1B,EAAkDM,aAAlD,EAAiEc,QAAQ,CAACqC,qBAA1E;EACAnY,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,sBAA1B,EAAgDqP,QAAQ,CAACgC,UAAzD;EACA9X,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0Byc,oBAA1B,EAAgDmB,QAAQ,CAACgC,UAAzD;EACA9X,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,sBAA1B,EAAgDD,sBAAhD,EAAsE,UAAU3G,KAAV,EAAiB;EACrFA,EAAAA,KAAK,CAAC6D,cAAN;EACAoS,EAAAA,QAAQ,CAAC1Q,mBAAT,CAA6B,IAA7B,EAAmCuB,MAAnC;EACD,CAHD;EAKA;EACA;EACA;EACA;EACA;EACA;;EAEA5J,kBAAkB,CAAC+Y,QAAD,CAAlB;;EChfA;EACA;EACA;EACA;EACA;EACA;EAMA,MAAMyC,sBAAsB,GAAG,mDAA/B;EACA,MAAMC,uBAAuB,GAAG,aAAhC;;EAEA,MAAMC,eAAN,CAAsB;EACpBhU,EAAAA,WAAW,GAAG;EACZ,SAAKC,QAAL,GAAgBxM,QAAQ,CAACoE,IAAzB;EACD;;EAEDoc,EAAAA,QAAQ,GAAG;EACT;EACA,UAAMC,aAAa,GAAGzgB,QAAQ,CAACyD,eAAT,CAAyBid,WAA/C;EACA,WAAO7gB,IAAI,CAAC8W,GAAL,CAAS1V,MAAM,CAAC0f,UAAP,GAAoBF,aAA7B,CAAP;EACD;;EAED3F,EAAAA,IAAI,GAAG;EACL,UAAM8F,KAAK,GAAG,KAAKJ,QAAL,EAAd;;EACA,SAAKK,gBAAL,GAFK;;;EAIL,SAAKC,qBAAL,CAA2B,KAAKtU,QAAhC,EAA0C,cAA1C,EAA0DuU,eAAe,IAAIA,eAAe,GAAGH,KAA/F,EAJK;;;EAML,SAAKE,qBAAL,CAA2BT,sBAA3B,EAAmD,cAAnD,EAAmEU,eAAe,IAAIA,eAAe,GAAGH,KAAxG;;EACA,SAAKE,qBAAL,CAA2BR,uBAA3B,EAAoD,aAApD,EAAmES,eAAe,IAAIA,eAAe,GAAGH,KAAxG;EACD;;EAEDC,EAAAA,gBAAgB,GAAG;EACjB,SAAKG,qBAAL,CAA2B,KAAKxU,QAAhC,EAA0C,UAA1C;;EACA,SAAKA,QAAL,CAAcgP,KAAd,CAAoByF,QAApB,GAA+B,QAA/B;EACD;;EAEDH,EAAAA,qBAAqB,CAAC1gB,QAAD,EAAW8gB,SAAX,EAAsB3c,QAAtB,EAAgC;EACnD,UAAM4c,cAAc,GAAG,KAAKX,QAAL,EAAvB;;EACA,UAAMY,oBAAoB,GAAGjhB,OAAO,IAAI;EACtC,UAAIA,OAAO,KAAK,KAAKqM,QAAjB,IAA6BvL,MAAM,CAAC0f,UAAP,GAAoBxgB,OAAO,CAACugB,WAAR,GAAsBS,cAA3E,EAA2F;EACzF;EACD;;EAED,WAAKH,qBAAL,CAA2B7gB,OAA3B,EAAoC+gB,SAApC;;EACA,YAAMH,eAAe,GAAG9f,MAAM,CAACC,gBAAP,CAAwBf,OAAxB,EAAiC+gB,SAAjC,CAAxB;EACA/gB,MAAAA,OAAO,CAACqb,KAAR,CAAc0F,SAAd,IAA4B,GAAE3c,QAAQ,CAACnD,MAAM,CAACC,UAAP,CAAkB0f,eAAlB,CAAD,CAAqC,IAA3E;EACD,KARD;;EAUA,SAAKM,0BAAL,CAAgCjhB,QAAhC,EAA0CghB,oBAA1C;EACD;;EAEDE,EAAAA,KAAK,GAAG;EACN,SAAKC,uBAAL,CAA6B,KAAK/U,QAAlC,EAA4C,UAA5C;;EACA,SAAK+U,uBAAL,CAA6B,KAAK/U,QAAlC,EAA4C,cAA5C;;EACA,SAAK+U,uBAAL,CAA6BlB,sBAA7B,EAAqD,cAArD;;EACA,SAAKkB,uBAAL,CAA6BjB,uBAA7B,EAAsD,aAAtD;EACD;;EAEDU,EAAAA,qBAAqB,CAAC7gB,OAAD,EAAU+gB,SAAV,EAAqB;EACxC,UAAMM,WAAW,GAAGrhB,OAAO,CAACqb,KAAR,CAAc0F,SAAd,CAApB;;EACA,QAAIM,WAAJ,EAAiB;EACfxS,MAAAA,WAAW,CAACC,gBAAZ,CAA6B9O,OAA7B,EAAsC+gB,SAAtC,EAAiDM,WAAjD;EACD;EACF;;EAEDD,EAAAA,uBAAuB,CAACnhB,QAAD,EAAW8gB,SAAX,EAAsB;EAC3C,UAAME,oBAAoB,GAAGjhB,OAAO,IAAI;EACtC,YAAMqC,KAAK,GAAGwM,WAAW,CAACU,gBAAZ,CAA6BvP,OAA7B,EAAsC+gB,SAAtC,CAAd;;EACA,UAAI,OAAO1e,KAAP,KAAiB,WAArB,EAAkC;EAChCrC,QAAAA,OAAO,CAACqb,KAAR,CAAciG,cAAd,CAA6BP,SAA7B;EACD,OAFD,MAEO;EACLlS,QAAAA,WAAW,CAACE,mBAAZ,CAAgC/O,OAAhC,EAAyC+gB,SAAzC;EACA/gB,QAAAA,OAAO,CAACqb,KAAR,CAAc0F,SAAd,IAA2B1e,KAA3B;EACD;EACF,KARD;;EAUA,SAAK6e,0BAAL,CAAgCjhB,QAAhC,EAA0CghB,oBAA1C;EACD;;EAEDC,EAAAA,0BAA0B,CAACjhB,QAAD,EAAWshB,QAAX,EAAqB;EAC7C,QAAIhgB,SAAS,CAACtB,QAAD,CAAb,EAAyB;EACvBshB,MAAAA,QAAQ,CAACthB,QAAD,CAAR;EACD,KAFD,MAEO;EACLkQ,MAAAA,cAAc,CAACC,IAAf,CAAoBnQ,QAApB,EAA8B,KAAKoM,QAAnC,EAA6CnK,OAA7C,CAAqDqf,QAArD;EACD;EACF;;EAEDC,EAAAA,aAAa,GAAG;EACd,WAAO,KAAKnB,QAAL,KAAkB,CAAzB;EACD;;EA/EmB;;ECdtB;EACA;EACA;EACA;EACA;EACA;EAKA,MAAMzO,SAAO,GAAG;EACd6P,EAAAA,SAAS,EAAE,gBADG;EAEd9e,EAAAA,SAAS,EAAE,IAFG;EAEG;EACjBkK,EAAAA,UAAU,EAAE,KAHE;EAId6U,EAAAA,WAAW,EAAE,MAJC;EAIO;EACrBC,EAAAA,aAAa,EAAE;EALD,CAAhB;EAQA,MAAMxP,aAAW,GAAG;EAClBsP,EAAAA,SAAS,EAAE,QADO;EAElB9e,EAAAA,SAAS,EAAE,SAFO;EAGlBkK,EAAAA,UAAU,EAAE,SAHM;EAIlB6U,EAAAA,WAAW,EAAE,kBAJK;EAKlBC,EAAAA,aAAa,EAAE;EALG,CAApB;EAOA,MAAM7c,MAAI,GAAG,UAAb;EACA,MAAM2I,iBAAe,GAAG,MAAxB;EACA,MAAMC,iBAAe,GAAG,MAAxB;EAEA,MAAMkU,eAAe,GAAI,gBAAe9c,MAAK,EAA7C;;EAEA,MAAM+c,QAAN,CAAe;EACbzV,EAAAA,WAAW,CAACtK,MAAD,EAAS;EAClB,SAAKkT,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;EACA,SAAKggB,WAAL,GAAmB,KAAnB;EACA,SAAKzV,QAAL,GAAgB,IAAhB;EACD;;EAEDuO,EAAAA,IAAI,CAACxW,QAAD,EAAW;EACb,QAAI,CAAC,KAAK4Q,OAAL,CAAarS,SAAlB,EAA6B;EAC3ByC,MAAAA,OAAO,CAAChB,QAAD,CAAP;EACA;EACD;;EAED,SAAK2d,OAAL;;EAEA,QAAI,KAAK/M,OAAL,CAAanI,UAAjB,EAA6B;EAC3BhJ,MAAAA,MAAM,CAAC,KAAKme,WAAL,EAAD,CAAN;EACD;;EAED,SAAKA,WAAL,GAAmB/e,SAAnB,CAA6BoU,GAA7B,CAAiC3J,iBAAjC;;EAEA,SAAKuU,iBAAL,CAAuB,MAAM;EAC3B7c,MAAAA,OAAO,CAAChB,QAAD,CAAP;EACD,KAFD;EAGD;;EAEDuW,EAAAA,IAAI,CAACvW,QAAD,EAAW;EACb,QAAI,CAAC,KAAK4Q,OAAL,CAAarS,SAAlB,EAA6B;EAC3ByC,MAAAA,OAAO,CAAChB,QAAD,CAAP;EACA;EACD;;EAED,SAAK4d,WAAL,GAAmB/e,SAAnB,CAA6B+I,MAA7B,CAAoC0B,iBAApC;;EAEA,SAAKuU,iBAAL,CAAuB,MAAM;EAC3B,WAAKzV,OAAL;EACApH,MAAAA,OAAO,CAAChB,QAAD,CAAP;EACD,KAHD;EAID,GAtCY;;;EA0Cb4d,EAAAA,WAAW,GAAG;EACZ,QAAI,CAAC,KAAK3V,QAAV,EAAoB;EAClB,YAAM6V,QAAQ,GAAGriB,QAAQ,CAACsiB,aAAT,CAAuB,KAAvB,CAAjB;EACAD,MAAAA,QAAQ,CAACT,SAAT,GAAqB,KAAKzM,OAAL,CAAayM,SAAlC;;EACA,UAAI,KAAKzM,OAAL,CAAanI,UAAjB,EAA6B;EAC3BqV,QAAAA,QAAQ,CAACjf,SAAT,CAAmBoU,GAAnB,CAAuB5J,iBAAvB;EACD;;EAED,WAAKpB,QAAL,GAAgB6V,QAAhB;EACD;;EAED,WAAO,KAAK7V,QAAZ;EACD;;EAED4I,EAAAA,UAAU,CAACnT,MAAD,EAAS;EACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,SADI;EAEP,UAAI,OAAO9P,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,EAA1C;EAFO,KAAT,CADiB;;EAOjBA,IAAAA,MAAM,CAAC4f,WAAP,GAAqBhgB,UAAU,CAACI,MAAM,CAAC4f,WAAR,CAA/B;EACA9f,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAeqQ,aAAf,CAAf;EACA,WAAOrQ,MAAP;EACD;;EAEDigB,EAAAA,OAAO,GAAG;EACR,QAAI,KAAKD,WAAT,EAAsB;EACpB;EACD;;EAED,SAAK9M,OAAL,CAAa0M,WAAb,CAAyBU,MAAzB,CAAgC,KAAKJ,WAAL,EAAhC;;EAEAra,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKmY,WAAL,EAAhB,EAAoCJ,eAApC,EAAqD,MAAM;EACzDxc,MAAAA,OAAO,CAAC,KAAK4P,OAAL,CAAa2M,aAAd,CAAP;EACD,KAFD;EAIA,SAAKG,WAAL,GAAmB,IAAnB;EACD;;EAEDtV,EAAAA,OAAO,GAAG;EACR,QAAI,CAAC,KAAKsV,WAAV,EAAuB;EACrB;EACD;;EAEDna,IAAAA,YAAY,CAACC,GAAb,CAAiB,KAAKyE,QAAtB,EAAgCuV,eAAhC;;EAEA,SAAKvV,QAAL,CAAcL,MAAd;;EACA,SAAK8V,WAAL,GAAmB,KAAnB;EACD;;EAEDG,EAAAA,iBAAiB,CAAC7d,QAAD,EAAW;EAC1BiB,IAAAA,sBAAsB,CAACjB,QAAD,EAAW,KAAK4d,WAAL,EAAX,EAA+B,KAAKhN,OAAL,CAAanI,UAA5C,CAAtB;EACD;;EA/FY;;EC/Bf;EACA;EACA;EACA;EACA;EACA;EAMA,MAAM+E,SAAO,GAAG;EACdyQ,EAAAA,WAAW,EAAE,IADC;EACK;EACnBC,EAAAA,SAAS,EAAE;EAFG,CAAhB;EAKA,MAAMnQ,aAAW,GAAG;EAClBkQ,EAAAA,WAAW,EAAE,SADK;EAElBC,EAAAA,SAAS,EAAE;EAFO,CAApB;EAKA,MAAMxd,MAAI,GAAG,WAAb;EACA,MAAMyH,UAAQ,GAAG,cAAjB;EACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;EACA,MAAMgW,eAAa,GAAI,UAAS9V,WAAU,EAA1C;EACA,MAAM+V,iBAAiB,GAAI,cAAa/V,WAAU,EAAlD;EAEA,MAAMuP,OAAO,GAAG,KAAhB;EACA,MAAMyG,eAAe,GAAG,SAAxB;EACA,MAAMC,gBAAgB,GAAG,UAAzB;;EAEA,MAAMC,SAAN,CAAgB;EACdvW,EAAAA,WAAW,CAACtK,MAAD,EAAS;EAClB,SAAKkT,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;EACA,SAAK8gB,SAAL,GAAiB,KAAjB;EACA,SAAKC,oBAAL,GAA4B,IAA5B;EACD;;EAEDC,EAAAA,QAAQ,GAAG;EACT,UAAM;EAAET,MAAAA,WAAF;EAAeC,MAAAA;EAAf,QAA6B,KAAKtN,OAAxC;;EAEA,QAAI,KAAK4N,SAAT,EAAoB;EAClB;EACD;;EAED,QAAIN,SAAJ,EAAe;EACbD,MAAAA,WAAW,CAACnE,KAAZ;EACD;;EAEDvW,IAAAA,YAAY,CAACC,GAAb,CAAiB/H,QAAjB,EAA2B4M,WAA3B,EAXS;;EAYT9E,IAAAA,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0B0iB,eAA1B,EAAyC/a,KAAK,IAAI,KAAKub,cAAL,CAAoBvb,KAApB,CAAlD;EACAG,IAAAA,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0B2iB,iBAA1B,EAA6Chb,KAAK,IAAI,KAAKwb,cAAL,CAAoBxb,KAApB,CAAtD;EAEA,SAAKob,SAAL,GAAiB,IAAjB;EACD;;EAEDK,EAAAA,UAAU,GAAG;EACX,QAAI,CAAC,KAAKL,SAAV,EAAqB;EACnB;EACD;;EAED,SAAKA,SAAL,GAAiB,KAAjB;EACAjb,IAAAA,YAAY,CAACC,GAAb,CAAiB/H,QAAjB,EAA2B4M,WAA3B;EACD,GAhCa;;;EAoCdsW,EAAAA,cAAc,CAACvb,KAAD,EAAQ;EACpB,UAAM;EAAE5B,MAAAA;EAAF,QAAa4B,KAAnB;EACA,UAAM;EAAE6a,MAAAA;EAAF,QAAkB,KAAKrN,OAA7B;;EAEA,QACEpP,MAAM,KAAK/F,QAAX,IACA+F,MAAM,KAAKyc,WADX,IAEAA,WAAW,CAACnf,QAAZ,CAAqB0C,MAArB,CAHF,EAIE;EACA;EACD;;EAED,UAAMsd,QAAQ,GAAG/S,cAAc,CAACgB,iBAAf,CAAiCkR,WAAjC,CAAjB;;EAEA,QAAIa,QAAQ,CAACvhB,MAAT,KAAoB,CAAxB,EAA2B;EACzB0gB,MAAAA,WAAW,CAACnE,KAAZ;EACD,KAFD,MAEO,IAAI,KAAK2E,oBAAL,KAA8BH,gBAAlC,EAAoD;EACzDQ,MAAAA,QAAQ,CAACA,QAAQ,CAACvhB,MAAT,GAAkB,CAAnB,CAAR,CAA8Buc,KAA9B;EACD,KAFM,MAEA;EACLgF,MAAAA,QAAQ,CAAC,CAAD,CAAR,CAAYhF,KAAZ;EACD;EACF;;EAED8E,EAAAA,cAAc,CAACxb,KAAD,EAAQ;EACpB,QAAIA,KAAK,CAAC0D,GAAN,KAAc8Q,OAAlB,EAA2B;EACzB;EACD;;EAED,SAAK6G,oBAAL,GAA4Brb,KAAK,CAAC2b,QAAN,GAAiBT,gBAAjB,GAAoCD,eAAhE;EACD;;EAEDxN,EAAAA,UAAU,CAACnT,MAAD,EAAS;EACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,SADI;EAEP,UAAI,OAAO9P,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,EAA1C;EAFO,KAAT;EAIAF,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAeqQ,aAAf,CAAf;EACA,WAAOrQ,MAAP;EACD;;EA1Ea;;EC/BhB;EACA;EACA;EACA;EACA;EACA;EAmBA;EACA;EACA;EACA;EACA;;EAEA,MAAMgD,MAAI,GAAG,OAAb;EACA,MAAMyH,UAAQ,GAAG,UAAjB;EACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;EACA,MAAM0B,cAAY,GAAG,WAArB;EACA,MAAM6N,YAAU,GAAG,QAAnB;EAEA,MAAMlK,SAAO,GAAG;EACdsQ,EAAAA,QAAQ,EAAE,IADI;EAEdpQ,EAAAA,QAAQ,EAAE,IAFI;EAGdoM,EAAAA,KAAK,EAAE;EAHO,CAAhB;EAMA,MAAM/L,aAAW,GAAG;EAClB+P,EAAAA,QAAQ,EAAE,kBADQ;EAElBpQ,EAAAA,QAAQ,EAAE,SAFQ;EAGlBoM,EAAAA,KAAK,EAAE;EAHW,CAApB;EAMA,MAAM3E,YAAU,GAAI,OAAM9M,WAAU,EAApC;EACA,MAAM2W,oBAAoB,GAAI,gBAAe3W,WAAU,EAAvD;EACA,MAAM+M,cAAY,GAAI,SAAQ/M,WAAU,EAAxC;EACA,MAAM4M,YAAU,GAAI,OAAM5M,WAAU,EAApC;EACA,MAAM6M,aAAW,GAAI,QAAO7M,WAAU,EAAtC;EACA,MAAM4W,YAAY,GAAI,SAAQ5W,WAAU,EAAxC;EACA,MAAM6W,mBAAmB,GAAI,gBAAe7W,WAAU,EAAtD;EACA,MAAM8W,uBAAqB,GAAI,kBAAiB9W,WAAU,EAA1D;EACA,MAAM+W,qBAAqB,GAAI,kBAAiB/W,WAAU,EAA1D;EACA,MAAMgX,uBAAuB,GAAI,oBAAmBhX,WAAU,EAA9D;EACA,MAAM2B,sBAAoB,GAAI,QAAO3B,WAAU,GAAEwB,cAAa,EAA9D;EAEA,MAAMyV,eAAe,GAAG,YAAxB;EACA,MAAMjW,iBAAe,GAAG,MAAxB;EACA,MAAMC,iBAAe,GAAG,MAAxB;EACA,MAAMiW,iBAAiB,GAAG,cAA1B;EAEA,MAAMC,eAAe,GAAG,eAAxB;EACA,MAAMC,mBAAmB,GAAG,aAA5B;EACA,MAAM1V,sBAAoB,GAAG,0BAA7B;EAEA;EACA;EACA;EACA;EACA;;EAEA,MAAM2V,KAAN,SAAoB3X,aAApB,CAAkC;EAChCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;EAC3B,UAAM9B,OAAN;EAEA,SAAKgV,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;EACA,SAAKiiB,OAAL,GAAe5T,cAAc,CAACK,OAAf,CAAuBoT,eAAvB,EAAwC,KAAKvX,QAA7C,CAAf;EACA,SAAK2X,SAAL,GAAiB,KAAKC,mBAAL,EAAjB;EACA,SAAKC,UAAL,GAAkB,KAAKC,oBAAL,EAAlB;EACA,SAAKzJ,QAAL,GAAgB,KAAhB;EACA,SAAK0J,oBAAL,GAA4B,KAA5B;EACA,SAAKnK,gBAAL,GAAwB,KAAxB;EACA,SAAKoK,UAAL,GAAkB,IAAIjE,eAAJ,EAAlB;EACD,GAZ+B;;;EAgBd,aAAPxO,OAAO,GAAG;EACnB,WAAOA,SAAP;EACD;;EAEc,aAAJ9M,IAAI,GAAG;EAChB,WAAOA,MAAP;EACD,GAtB+B;;;EA0BhCwJ,EAAAA,MAAM,CAACnF,aAAD,EAAgB;EACpB,WAAO,KAAKuR,QAAL,GAAgB,KAAKC,IAAL,EAAhB,GAA8B,KAAKC,IAAL,CAAUzR,aAAV,CAArC;EACD;;EAEDyR,EAAAA,IAAI,CAACzR,aAAD,EAAgB;EAClB,QAAI,KAAKuR,QAAL,IAAiB,KAAKT,gBAA1B,EAA4C;EAC1C;EACD;;EAED,UAAM8D,SAAS,GAAGpW,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCgN,YAApC,EAAgD;EAChElQ,MAAAA;EADgE,KAAhD,CAAlB;;EAIA,QAAI4U,SAAS,CAACtT,gBAAd,EAAgC;EAC9B;EACD;;EAED,SAAKiQ,QAAL,GAAgB,IAAhB;;EAEA,QAAI,KAAK4J,WAAL,EAAJ,EAAwB;EACtB,WAAKrK,gBAAL,GAAwB,IAAxB;EACD;;EAED,SAAKoK,UAAL,CAAgB1J,IAAhB;;EAEA9a,IAAAA,QAAQ,CAACoE,IAAT,CAAchB,SAAd,CAAwBoU,GAAxB,CAA4BqM,eAA5B;;EAEA,SAAKa,aAAL;;EAEA,SAAKC,eAAL;;EACA,SAAKC,eAAL;;EAEA9c,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKka,OAArB,EAA8BN,uBAA9B,EAAuD,MAAM;EAC3D9b,MAAAA,YAAY,CAACmC,GAAb,CAAiB,KAAKuC,QAAtB,EAAgCmX,qBAAhC,EAAuDhc,KAAK,IAAI;EAC9D,YAAIA,KAAK,CAAC5B,MAAN,KAAiB,KAAKyG,QAA1B,EAAoC;EAClC,eAAK+X,oBAAL,GAA4B,IAA5B;EACD;EACF,OAJD;EAKD,KAND;;EAQA,SAAKM,aAAL,CAAmB,MAAM,KAAKC,YAAL,CAAkBxb,aAAlB,CAAzB;EACD;;EAEDwR,EAAAA,IAAI,GAAG;EACL,QAAI,CAAC,KAAKD,QAAN,IAAkB,KAAKT,gBAA3B,EAA6C;EAC3C;EACD;;EAED,UAAMqE,SAAS,GAAG3W,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCkN,YAApC,CAAlB;;EAEA,QAAI+E,SAAS,CAAC7T,gBAAd,EAAgC;EAC9B;EACD;;EAED,SAAKiQ,QAAL,GAAgB,KAAhB;;EACA,UAAM7N,UAAU,GAAG,KAAKyX,WAAL,EAAnB;;EAEA,QAAIzX,UAAJ,EAAgB;EACd,WAAKoN,gBAAL,GAAwB,IAAxB;EACD;;EAED,SAAKuK,eAAL;;EACA,SAAKC,eAAL;;EAEA,SAAKP,UAAL,CAAgBjB,UAAhB;;EAEA,SAAK5W,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0B,iBAA/B;;EAEA/F,IAAAA,YAAY,CAACC,GAAb,CAAiB,KAAKyE,QAAtB,EAAgCiX,mBAAhC;EACA3b,IAAAA,YAAY,CAACC,GAAb,CAAiB,KAAKmc,OAAtB,EAA+BN,uBAA/B;;EAEA,SAAK7W,cAAL,CAAoB,MAAM,KAAKgY,UAAL,EAA1B,EAA6C,KAAKvY,QAAlD,EAA4DQ,UAA5D;EACD;;EAEDL,EAAAA,OAAO,GAAG;EACR,KAAC1L,MAAD,EAAS,KAAKijB,OAAd,EACG7hB,OADH,CACW2iB,WAAW,IAAIld,YAAY,CAACC,GAAb,CAAiBid,WAAjB,EAA8BpY,WAA9B,CAD1B;;EAGA,SAAKuX,SAAL,CAAexX,OAAf;;EACA,SAAK0X,UAAL,CAAgBjB,UAAhB;;EACA,UAAMzW,OAAN;EACD;;EAEDsY,EAAAA,YAAY,GAAG;EACb,SAAKP,aAAL;EACD,GA/G+B;;;EAmHhCN,EAAAA,mBAAmB,GAAG;EACpB,WAAO,IAAIpC,QAAJ,CAAa;EAClBlf,MAAAA,SAAS,EAAE6G,OAAO,CAAC,KAAKwL,OAAL,CAAakN,QAAd,CADA;EACyB;EAC3CrV,MAAAA,UAAU,EAAE,KAAKyX,WAAL;EAFM,KAAb,CAAP;EAID;;EAEDH,EAAAA,oBAAoB,GAAG;EACrB,WAAO,IAAIxB,SAAJ,CAAc;EACnBN,MAAAA,WAAW,EAAE,KAAKhW;EADC,KAAd,CAAP;EAGD;;EAED4I,EAAAA,UAAU,CAACnT,MAAD,EAAS;EACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,SADI;EAEP,SAAG/C,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAFI;EAGP,UAAI,OAAOvK,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,EAA1C;EAHO,KAAT;EAKAF,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAeqQ,aAAf,CAAf;EACA,WAAOrQ,MAAP;EACD;;EAED6iB,EAAAA,YAAY,CAACxb,aAAD,EAAgB;EAC1B,UAAM0D,UAAU,GAAG,KAAKyX,WAAL,EAAnB;;EACA,UAAMS,SAAS,GAAG5U,cAAc,CAACK,OAAf,CAAuBqT,mBAAvB,EAA4C,KAAKE,OAAjD,CAAlB;;EAEA,QAAI,CAAC,KAAK1X,QAAL,CAAc1I,UAAf,IAA6B,KAAK0I,QAAL,CAAc1I,UAAd,CAAyBlC,QAAzB,KAAsCsB,IAAI,CAACC,YAA5E,EAA0F;EACxF;EACAnD,MAAAA,QAAQ,CAACoE,IAAT,CAAcme,MAAd,CAAqB,KAAK/V,QAA1B;EACD;;EAED,SAAKA,QAAL,CAAcgP,KAAd,CAAoBiC,OAApB,GAA8B,OAA9B;;EACA,SAAKjR,QAAL,CAAc2C,eAAd,CAA8B,aAA9B;;EACA,SAAK3C,QAAL,CAAckC,YAAd,CAA2B,YAA3B,EAAyC,IAAzC;;EACA,SAAKlC,QAAL,CAAckC,YAAd,CAA2B,MAA3B,EAAmC,QAAnC;;EACA,SAAKlC,QAAL,CAAc2Y,SAAd,GAA0B,CAA1B;;EAEA,QAAID,SAAJ,EAAe;EACbA,MAAAA,SAAS,CAACC,SAAV,GAAsB,CAAtB;EACD;;EAED,QAAInY,UAAJ,EAAgB;EACdhJ,MAAAA,MAAM,CAAC,KAAKwI,QAAN,CAAN;EACD;;EAED,SAAKA,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4B3J,iBAA5B;;EAEA,UAAMuX,kBAAkB,GAAG,MAAM;EAC/B,UAAI,KAAKjQ,OAAL,CAAakJ,KAAjB,EAAwB;EACtB,aAAKgG,UAAL,CAAgBpB,QAAhB;EACD;;EAED,WAAK7I,gBAAL,GAAwB,KAAxB;EACAtS,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCiN,aAApC,EAAiD;EAC/CnQ,QAAAA;EAD+C,OAAjD;EAGD,KATD;;EAWA,SAAKyD,cAAL,CAAoBqY,kBAApB,EAAwC,KAAKlB,OAA7C,EAAsDlX,UAAtD;EACD;;EAED2X,EAAAA,eAAe,GAAG;EAChB,QAAI,KAAK9J,QAAT,EAAmB;EACjB/S,MAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BkX,uBAA/B,EAAsD/b,KAAK,IAAI;EAC7D,YAAI,KAAKwN,OAAL,CAAalD,QAAb,IAAyBtK,KAAK,CAAC0D,GAAN,KAAc4Q,YAA3C,EAAuD;EACrDtU,UAAAA,KAAK,CAAC6D,cAAN;EACA,eAAKsP,IAAL;EACD,SAHD,MAGO,IAAI,CAAC,KAAK3F,OAAL,CAAalD,QAAd,IAA0BtK,KAAK,CAAC0D,GAAN,KAAc4Q,YAA5C,EAAwD;EAC7D,eAAKoJ,0BAAL;EACD;EACF,OAPD;EAQD,KATD,MASO;EACLvd,MAAAA,YAAY,CAACC,GAAb,CAAiB,KAAKyE,QAAtB,EAAgCkX,uBAAhC;EACD;EACF;;EAEDkB,EAAAA,eAAe,GAAG;EAChB,QAAI,KAAK/J,QAAT,EAAmB;EACjB/S,MAAAA,YAAY,CAACkC,EAAb,CAAgB/I,MAAhB,EAAwBuiB,YAAxB,EAAsC,MAAM,KAAKkB,aAAL,EAA5C;EACD,KAFD,MAEO;EACL5c,MAAAA,YAAY,CAACC,GAAb,CAAiB9G,MAAjB,EAAyBuiB,YAAzB;EACD;EACF;;EAEDuB,EAAAA,UAAU,GAAG;EACX,SAAKvY,QAAL,CAAcgP,KAAd,CAAoBiC,OAApB,GAA8B,MAA9B;;EACA,SAAKjR,QAAL,CAAckC,YAAd,CAA2B,aAA3B,EAA0C,IAA1C;;EACA,SAAKlC,QAAL,CAAc2C,eAAd,CAA8B,YAA9B;;EACA,SAAK3C,QAAL,CAAc2C,eAAd,CAA8B,MAA9B;;EACA,SAAKiL,gBAAL,GAAwB,KAAxB;;EACA,SAAK+J,SAAL,CAAerJ,IAAf,CAAoB,MAAM;EACxB9a,MAAAA,QAAQ,CAACoE,IAAT,CAAchB,SAAd,CAAwB+I,MAAxB,CAA+B0X,eAA/B;;EACA,WAAKyB,iBAAL;;EACA,WAAKd,UAAL,CAAgBlD,KAAhB;;EACAxZ,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCmN,cAApC;EACD,KALD;EAMD;;EAEDkL,EAAAA,aAAa,CAACtgB,QAAD,EAAW;EACtBuD,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BiX,mBAA/B,EAAoD9b,KAAK,IAAI;EAC3D,UAAI,KAAK4c,oBAAT,EAA+B;EAC7B,aAAKA,oBAAL,GAA4B,KAA5B;EACA;EACD;;EAED,UAAI5c,KAAK,CAAC5B,MAAN,KAAiB4B,KAAK,CAAC4d,aAA3B,EAA0C;EACxC;EACD;;EAED,UAAI,KAAKpQ,OAAL,CAAakN,QAAb,KAA0B,IAA9B,EAAoC;EAClC,aAAKvH,IAAL;EACD,OAFD,MAEO,IAAI,KAAK3F,OAAL,CAAakN,QAAb,KAA0B,QAA9B,EAAwC;EAC7C,aAAKgD,0BAAL;EACD;EACF,KAfD;;EAiBA,SAAKlB,SAAL,CAAepJ,IAAf,CAAoBxW,QAApB;EACD;;EAEDkgB,EAAAA,WAAW,GAAG;EACZ,WAAO,KAAKjY,QAAL,CAAcpJ,SAAd,CAAwBC,QAAxB,CAAiCuK,iBAAjC,CAAP;EACD;;EAEDyX,EAAAA,0BAA0B,GAAG;EAC3B,UAAM5G,SAAS,GAAG3W,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoC+W,oBAApC,CAAlB;;EACA,QAAI9E,SAAS,CAAC7T,gBAAd,EAAgC;EAC9B;EACD;;EAED,UAAM;EAAExH,MAAAA,SAAF;EAAaoiB,MAAAA,YAAb;EAA2BhK,MAAAA;EAA3B,QAAqC,KAAKhP,QAAhD;EACA,UAAMiZ,kBAAkB,GAAGD,YAAY,GAAGxlB,QAAQ,CAACyD,eAAT,CAAyBiiB,YAAnE,CAP2B;;EAU3B,QAAK,CAACD,kBAAD,IAAuBjK,KAAK,CAACmK,SAAN,KAAoB,QAA5C,IAAyDviB,SAAS,CAACC,QAAV,CAAmBygB,iBAAnB,CAA7D,EAAoG;EAClG;EACD;;EAED,QAAI,CAAC2B,kBAAL,EAAyB;EACvBjK,MAAAA,KAAK,CAACmK,SAAN,GAAkB,QAAlB;EACD;;EAEDviB,IAAAA,SAAS,CAACoU,GAAV,CAAcsM,iBAAd;;EACA,SAAK/W,cAAL,CAAoB,MAAM;EACxB3J,MAAAA,SAAS,CAAC+I,MAAV,CAAiB2X,iBAAjB;;EACA,UAAI,CAAC2B,kBAAL,EAAyB;EACvB,aAAK1Y,cAAL,CAAoB,MAAM;EACxByO,UAAAA,KAAK,CAACmK,SAAN,GAAkB,EAAlB;EACD,SAFD,EAEG,KAAKzB,OAFR;EAGD;EACF,KAPD,EAOG,KAAKA,OAPR;;EASA,SAAK1X,QAAL,CAAc6R,KAAd;EACD,GA5Q+B;EA+QhC;EACA;;;EAEAqG,EAAAA,aAAa,GAAG;EACd,UAAMe,kBAAkB,GAAG,KAAKjZ,QAAL,CAAcgZ,YAAd,GAA6BxlB,QAAQ,CAACyD,eAAT,CAAyBiiB,YAAjF;;EACA,UAAMvE,cAAc,GAAG,KAAKqD,UAAL,CAAgBhE,QAAhB,EAAvB;;EACA,UAAMoF,iBAAiB,GAAGzE,cAAc,GAAG,CAA3C;;EAEA,QAAK,CAACyE,iBAAD,IAAsBH,kBAAtB,IAA4C,CAAC9gB,KAAK,EAAnD,IAA2DihB,iBAAiB,IAAI,CAACH,kBAAtB,IAA4C9gB,KAAK,EAAhH,EAAqH;EACnH,WAAK6H,QAAL,CAAcgP,KAAd,CAAoBqK,WAApB,GAAmC,GAAE1E,cAAe,IAApD;EACD;;EAED,QAAKyE,iBAAiB,IAAI,CAACH,kBAAtB,IAA4C,CAAC9gB,KAAK,EAAnD,IAA2D,CAACihB,iBAAD,IAAsBH,kBAAtB,IAA4C9gB,KAAK,EAAhH,EAAqH;EACnH,WAAK6H,QAAL,CAAcgP,KAAd,CAAoBsK,YAApB,GAAoC,GAAE3E,cAAe,IAArD;EACD;EACF;;EAEDmE,EAAAA,iBAAiB,GAAG;EAClB,SAAK9Y,QAAL,CAAcgP,KAAd,CAAoBqK,WAApB,GAAkC,EAAlC;EACA,SAAKrZ,QAAL,CAAcgP,KAAd,CAAoBsK,YAApB,GAAmC,EAAnC;EACD,GAnS+B;;;EAuSV,SAAf1gB,eAAe,CAACnD,MAAD,EAASqH,aAAT,EAAwB;EAC5C,WAAO,KAAK4E,IAAL,CAAU,YAAY;EAC3B,YAAMC,IAAI,GAAG8V,KAAK,CAAC/W,mBAAN,CAA0B,IAA1B,EAAgCjL,MAAhC,CAAb;;EAEA,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;EAC9B;EACD;;EAED,UAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,cAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;EACD;;EAEDkM,MAAAA,IAAI,CAAClM,MAAD,CAAJ,CAAaqH,aAAb;EACD,KAZM,CAAP;EAaD;;EArT+B;EAwTlC;EACA;EACA;EACA;EACA;;;EAEAxB,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,sBAA1B,EAAgDD,sBAAhD,EAAsE,UAAU3G,KAAV,EAAiB;EACrF,QAAM5B,MAAM,GAAGlF,sBAAsB,CAAC,IAAD,CAArC;;EAEA,MAAI,CAAC,GAAD,EAAM,MAAN,EAAcN,QAAd,CAAuB,KAAKiN,OAA5B,CAAJ,EAA0C;EACxC7F,IAAAA,KAAK,CAAC6D,cAAN;EACD;;EAED1D,EAAAA,YAAY,CAACmC,GAAb,CAAiBlE,MAAjB,EAAyByT,YAAzB,EAAqC0E,SAAS,IAAI;EAChD,QAAIA,SAAS,CAACtT,gBAAd,EAAgC;EAC9B;EACA;EACD;;EAED9C,IAAAA,YAAY,CAACmC,GAAb,CAAiBlE,MAAjB,EAAyB4T,cAAzB,EAAuC,MAAM;EAC3C,UAAI7W,SAAS,CAAC,IAAD,CAAb,EAAqB;EACnB,aAAKub,KAAL;EACD;EACF,KAJD;EAKD,GAXD;EAaA,QAAMlQ,IAAI,GAAG8V,KAAK,CAAC/W,mBAAN,CAA0BnH,MAA1B,CAAb;EAEAoI,EAAAA,IAAI,CAACM,MAAL,CAAY,IAAZ;EACD,CAvBD;EAyBArB,oBAAoB,CAAC6W,KAAD,CAApB;EAEA;EACA;EACA;EACA;EACA;EACA;;EAEApf,kBAAkB,CAACof,KAAD,CAAlB;;EC3aA;EACA;EACA;EACA;EACA;EACA;EAkBA;EACA;EACA;EACA;EACA;;EAEA,MAAMhf,MAAI,GAAG,WAAb;EACA,MAAMyH,UAAQ,GAAG,cAAjB;EACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;EACA,MAAM0B,cAAY,GAAG,WAArB;EACA,MAAMmF,qBAAmB,GAAI,OAAM3G,WAAU,GAAEwB,cAAa,EAA5D;EACA,MAAM6N,UAAU,GAAG,QAAnB;EAEA,MAAMlK,SAAO,GAAG;EACdsQ,EAAAA,QAAQ,EAAE,IADI;EAEdpQ,EAAAA,QAAQ,EAAE,IAFI;EAGd8T,EAAAA,MAAM,EAAE;EAHM,CAAhB;EAMA,MAAMzT,aAAW,GAAG;EAClB+P,EAAAA,QAAQ,EAAE,SADQ;EAElBpQ,EAAAA,QAAQ,EAAE,SAFQ;EAGlB8T,EAAAA,MAAM,EAAE;EAHU,CAApB;EAMA,MAAMlY,iBAAe,GAAG,MAAxB;EACA,MAAMmY,mBAAmB,GAAG,oBAA5B;EACA,MAAMC,aAAa,GAAG,iBAAtB;EAEA,MAAMzM,YAAU,GAAI,OAAM5M,WAAU,EAApC;EACA,MAAM6M,aAAW,GAAI,QAAO7M,WAAU,EAAtC;EACA,MAAM8M,YAAU,GAAI,OAAM9M,WAAU,EAApC;EACA,MAAM+M,cAAY,GAAI,SAAQ/M,WAAU,EAAxC;EACA,MAAM2B,sBAAoB,GAAI,QAAO3B,WAAU,GAAEwB,cAAa,EAA9D;EACA,MAAMsV,qBAAqB,GAAI,kBAAiB9W,WAAU,EAA1D;EAEA,MAAM0B,sBAAoB,GAAG,8BAA7B;EAEA;EACA;EACA;EACA;EACA;;EAEA,MAAM4X,SAAN,SAAwB5Z,aAAxB,CAAsC;EACpCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;EAC3B,UAAM9B,OAAN;EAEA,SAAKgV,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;EACA,SAAK4Y,QAAL,GAAgB,KAAhB;EACA,SAAKsJ,SAAL,GAAiB,KAAKC,mBAAL,EAAjB;EACA,SAAKC,UAAL,GAAkB,KAAKC,oBAAL,EAAlB;;EACA,SAAK3O,kBAAL;EACD,GATmC;;;EAarB,aAAJ1Q,IAAI,GAAG;EAChB,WAAOA,MAAP;EACD;;EAEiB,aAAP8M,OAAO,GAAG;EACnB,WAAOA,SAAP;EACD,GAnBmC;;;EAuBpCtD,EAAAA,MAAM,CAACnF,aAAD,EAAgB;EACpB,WAAO,KAAKuR,QAAL,GAAgB,KAAKC,IAAL,EAAhB,GAA8B,KAAKC,IAAL,CAAUzR,aAAV,CAArC;EACD;;EAEDyR,EAAAA,IAAI,CAACzR,aAAD,EAAgB;EAClB,QAAI,KAAKuR,QAAT,EAAmB;EACjB;EACD;;EAED,UAAMqD,SAAS,GAAGpW,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCgN,YAApC,EAAgD;EAAElQ,MAAAA;EAAF,KAAhD,CAAlB;;EAEA,QAAI4U,SAAS,CAACtT,gBAAd,EAAgC;EAC9B;EACD;;EAED,SAAKiQ,QAAL,GAAgB,IAAhB;EACA,SAAKrO,QAAL,CAAcgP,KAAd,CAAoB2K,UAApB,GAAiC,SAAjC;;EAEA,SAAKhC,SAAL,CAAepJ,IAAf;;EAEA,QAAI,CAAC,KAAK5F,OAAL,CAAa4Q,MAAlB,EAA0B;EACxB,UAAIxF,eAAJ,GAAsBzF,IAAtB;EACD;;EAED,SAAKtO,QAAL,CAAc2C,eAAd,CAA8B,aAA9B;;EACA,SAAK3C,QAAL,CAAckC,YAAd,CAA2B,YAA3B,EAAyC,IAAzC;;EACA,SAAKlC,QAAL,CAAckC,YAAd,CAA2B,MAA3B,EAAmC,QAAnC;;EACA,SAAKlC,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4B3J,iBAA5B;;EAEA,UAAMmL,gBAAgB,GAAG,MAAM;EAC7B,UAAI,CAAC,KAAK7D,OAAL,CAAa4Q,MAAlB,EAA0B;EACxB,aAAK1B,UAAL,CAAgBpB,QAAhB;EACD;;EAEDnb,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCiN,aAApC,EAAiD;EAAEnQ,QAAAA;EAAF,OAAjD;EACD,KAND;;EAQA,SAAKyD,cAAL,CAAoBiM,gBAApB,EAAsC,KAAKxM,QAA3C,EAAqD,IAArD;EACD;;EAEDsO,EAAAA,IAAI,GAAG;EACL,QAAI,CAAC,KAAKD,QAAV,EAAoB;EAClB;EACD;;EAED,UAAM4D,SAAS,GAAG3W,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCkN,YAApC,CAAlB;;EAEA,QAAI+E,SAAS,CAAC7T,gBAAd,EAAgC;EAC9B;EACD;;EAED,SAAKyZ,UAAL,CAAgBjB,UAAhB;;EACA,SAAK5W,QAAL,CAAc4Z,IAAd;;EACA,SAAKvL,QAAL,GAAgB,KAAhB;;EACA,SAAKrO,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0B,iBAA/B;;EACA,SAAKsW,SAAL,CAAerJ,IAAf;;EAEA,UAAMuL,gBAAgB,GAAG,MAAM;EAC7B,WAAK7Z,QAAL,CAAckC,YAAd,CAA2B,aAA3B,EAA0C,IAA1C;;EACA,WAAKlC,QAAL,CAAc2C,eAAd,CAA8B,YAA9B;;EACA,WAAK3C,QAAL,CAAc2C,eAAd,CAA8B,MAA9B;;EACA,WAAK3C,QAAL,CAAcgP,KAAd,CAAoB2K,UAApB,GAAiC,QAAjC;;EAEA,UAAI,CAAC,KAAKhR,OAAL,CAAa4Q,MAAlB,EAA0B;EACxB,YAAIxF,eAAJ,GAAsBe,KAAtB;EACD;;EAEDxZ,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCmN,cAApC;EACD,KAXD;;EAaA,SAAK5M,cAAL,CAAoBsZ,gBAApB,EAAsC,KAAK7Z,QAA3C,EAAqD,IAArD;EACD;;EAEDG,EAAAA,OAAO,GAAG;EACR,SAAKwX,SAAL,CAAexX,OAAf;;EACA,SAAK0X,UAAL,CAAgBjB,UAAhB;;EACA,UAAMzW,OAAN;EACD,GApGmC;;;EAwGpCyI,EAAAA,UAAU,CAACnT,MAAD,EAAS;EACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,SADI;EAEP,SAAG/C,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAFI;EAGP,UAAI,OAAOvK,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsC,EAA1C;EAHO,KAAT;EAKAF,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAeqQ,aAAf,CAAf;EACA,WAAOrQ,MAAP;EACD;;EAEDmiB,EAAAA,mBAAmB,GAAG;EACpB,WAAO,IAAIpC,QAAJ,CAAa;EAClBJ,MAAAA,SAAS,EAAEoE,mBADO;EAElBljB,MAAAA,SAAS,EAAE,KAAKqS,OAAL,CAAakN,QAFN;EAGlBrV,MAAAA,UAAU,EAAE,IAHM;EAIlB6U,MAAAA,WAAW,EAAE,KAAKrV,QAAL,CAAc1I,UAJT;EAKlBge,MAAAA,aAAa,EAAE,MAAM,KAAKhH,IAAL;EALH,KAAb,CAAP;EAOD;;EAEDwJ,EAAAA,oBAAoB,GAAG;EACrB,WAAO,IAAIxB,SAAJ,CAAc;EACnBN,MAAAA,WAAW,EAAE,KAAKhW;EADC,KAAd,CAAP;EAGD;;EAEDmJ,EAAAA,kBAAkB,GAAG;EACnB7N,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BkX,qBAA/B,EAAsD/b,KAAK,IAAI;EAC7D,UAAI,KAAKwN,OAAL,CAAalD,QAAb,IAAyBtK,KAAK,CAAC0D,GAAN,KAAc4Q,UAA3C,EAAuD;EACrD,aAAKnB,IAAL;EACD;EACF,KAJD;EAKD,GAxImC;;;EA4Id,SAAf1V,eAAe,CAACnD,MAAD,EAAS;EAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;EAC3B,YAAMC,IAAI,GAAG+X,SAAS,CAAChZ,mBAAV,CAA8B,IAA9B,EAAoCjL,MAApC,CAAb;;EAEA,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;EAC9B;EACD;;EAED,UAAIkM,IAAI,CAAClM,MAAD,CAAJ,KAAiB3C,SAAjB,IAA8B2C,MAAM,CAACzB,UAAP,CAAkB,GAAlB,CAA9B,IAAwDyB,MAAM,KAAK,aAAvE,EAAsF;EACpF,cAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;EACD;;EAEDkM,MAAAA,IAAI,CAAClM,MAAD,CAAJ,CAAa,IAAb;EACD,KAZM,CAAP;EAaD;;EA1JmC;EA6JtC;EACA;EACA;EACA;EACA;;;EAEA6F,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,sBAA1B,EAAgDD,sBAAhD,EAAsE,UAAU3G,KAAV,EAAiB;EACrF,QAAM5B,MAAM,GAAGlF,sBAAsB,CAAC,IAAD,CAArC;;EAEA,MAAI,CAAC,GAAD,EAAM,MAAN,EAAcN,QAAd,CAAuB,KAAKiN,OAA5B,CAAJ,EAA0C;EACxC7F,IAAAA,KAAK,CAAC6D,cAAN;EACD;;EAED,MAAIvI,UAAU,CAAC,IAAD,CAAd,EAAsB;EACpB;EACD;;EAED6E,EAAAA,YAAY,CAACmC,GAAb,CAAiBlE,MAAjB,EAAyB4T,cAAzB,EAAuC,MAAM;EAC3C;EACA,QAAI7W,SAAS,CAAC,IAAD,CAAb,EAAqB;EACnB,WAAKub,KAAL;EACD;EACF,GALD,EAXqF;;EAmBrF,QAAMiI,YAAY,GAAGhW,cAAc,CAACK,OAAf,CAAuBsV,aAAvB,CAArB;;EACA,MAAIK,YAAY,IAAIA,YAAY,KAAKvgB,MAArC,EAA6C;EAC3CmgB,IAAAA,SAAS,CAACjZ,WAAV,CAAsBqZ,YAAtB,EAAoCxL,IAApC;EACD;;EAED,QAAM3M,IAAI,GAAG+X,SAAS,CAAChZ,mBAAV,CAA8BnH,MAA9B,CAAb;EACAoI,EAAAA,IAAI,CAACM,MAAL,CAAY,IAAZ;EACD,CA1BD;EA4BA3G,YAAY,CAACkC,EAAb,CAAgB/I,MAAhB,EAAwBsS,qBAAxB,EAA6C,MAC3CjD,cAAc,CAACC,IAAf,CAAoB0V,aAApB,EAAmC5jB,OAAnC,CAA2CqP,EAAE,IAAIwU,SAAS,CAAChZ,mBAAV,CAA8BwE,EAA9B,EAAkCqJ,IAAlC,EAAjD,CADF;EAIA3N,oBAAoB,CAAC8Y,SAAD,CAApB;EACA;EACA;EACA;EACA;EACA;;EAEArhB,kBAAkB,CAACqhB,SAAD,CAAlB;;EC7QA;EACA;EACA;EACA;EACA;EACA;EAEA,MAAMK,QAAQ,GAAG,IAAIjf,GAAJ,CAAQ,CACvB,YADuB,EAEvB,MAFuB,EAGvB,MAHuB,EAIvB,UAJuB,EAKvB,UALuB,EAMvB,QANuB,EAOvB,KAPuB,EAQvB,YARuB,CAAR,CAAjB;EAWA,MAAMkf,sBAAsB,GAAG,gBAA/B;EAEA;EACA;EACA;EACA;EACA;;EACA,MAAMC,gBAAgB,GAAG,4DAAzB;EAEA;EACA;EACA;EACA;EACA;;EACA,MAAMC,gBAAgB,GAAG,oIAAzB;;EAEA,MAAMC,gBAAgB,GAAG,CAACC,IAAD,EAAOC,oBAAP,KAAgC;EACvD,QAAMC,QAAQ,GAAGF,IAAI,CAACG,QAAL,CAAcrnB,WAAd,EAAjB;;EAEA,MAAImnB,oBAAoB,CAACtmB,QAArB,CAA8BumB,QAA9B,CAAJ,EAA6C;EAC3C,QAAIP,QAAQ,CAACpd,GAAT,CAAa2d,QAAb,CAAJ,EAA4B;EAC1B,aAAOnd,OAAO,CAAC8c,gBAAgB,CAAC9jB,IAAjB,CAAsBikB,IAAI,CAACI,SAA3B,KAAyCN,gBAAgB,CAAC/jB,IAAjB,CAAsBikB,IAAI,CAACI,SAA3B,CAA1C,CAAd;EACD;;EAED,WAAO,IAAP;EACD;;EAED,QAAMC,MAAM,GAAGJ,oBAAoB,CAACtX,MAArB,CAA4B2X,SAAS,IAAIA,SAAS,YAAYxkB,MAA9D,CAAf,CAXuD;;EAcvD,OAAK,IAAI2F,CAAC,GAAG,CAAR,EAAWK,GAAG,GAAGue,MAAM,CAACnlB,MAA7B,EAAqCuG,CAAC,GAAGK,GAAzC,EAA8CL,CAAC,EAA/C,EAAmD;EACjD,QAAI4e,MAAM,CAAC5e,CAAD,CAAN,CAAU1F,IAAV,CAAemkB,QAAf,CAAJ,EAA8B;EAC5B,aAAO,IAAP;EACD;EACF;;EAED,SAAO,KAAP;EACD,CArBD;;EAuBO,MAAMK,gBAAgB,GAAG;EAC9B;EACA,OAAK,CAAC,OAAD,EAAU,KAAV,EAAiB,IAAjB,EAAuB,MAAvB,EAA+B,MAA/B,EAAuCX,sBAAvC,CAFyB;EAG9BY,EAAAA,CAAC,EAAE,CAAC,QAAD,EAAW,MAAX,EAAmB,OAAnB,EAA4B,KAA5B,CAH2B;EAI9BC,EAAAA,IAAI,EAAE,EAJwB;EAK9BC,EAAAA,CAAC,EAAE,EAL2B;EAM9BC,EAAAA,EAAE,EAAE,EAN0B;EAO9BC,EAAAA,GAAG,EAAE,EAPyB;EAQ9BC,EAAAA,IAAI,EAAE,EARwB;EAS9BC,EAAAA,GAAG,EAAE,EATyB;EAU9BC,EAAAA,EAAE,EAAE,EAV0B;EAW9BC,EAAAA,EAAE,EAAE,EAX0B;EAY9BC,EAAAA,EAAE,EAAE,EAZ0B;EAa9BC,EAAAA,EAAE,EAAE,EAb0B;EAc9BC,EAAAA,EAAE,EAAE,EAd0B;EAe9BC,EAAAA,EAAE,EAAE,EAf0B;EAgB9BC,EAAAA,EAAE,EAAE,EAhB0B;EAiB9BC,EAAAA,EAAE,EAAE,EAjB0B;EAkB9B7f,EAAAA,CAAC,EAAE,EAlB2B;EAmB9B8f,EAAAA,GAAG,EAAE,CAAC,KAAD,EAAQ,QAAR,EAAkB,KAAlB,EAAyB,OAAzB,EAAkC,OAAlC,EAA2C,QAA3C,CAnByB;EAoB9BC,EAAAA,EAAE,EAAE,EApB0B;EAqB9BC,EAAAA,EAAE,EAAE,EArB0B;EAsB9BC,EAAAA,CAAC,EAAE,EAtB2B;EAuB9BC,EAAAA,GAAG,EAAE,EAvByB;EAwB9BC,EAAAA,CAAC,EAAE,EAxB2B;EAyB9BC,EAAAA,KAAK,EAAE,EAzBuB;EA0B9BC,EAAAA,IAAI,EAAE,EA1BwB;EA2B9BC,EAAAA,GAAG,EAAE,EA3ByB;EA4B9BC,EAAAA,GAAG,EAAE,EA5ByB;EA6B9BC,EAAAA,MAAM,EAAE,EA7BsB;EA8B9BC,EAAAA,CAAC,EAAE,EA9B2B;EA+B9BC,EAAAA,EAAE,EAAE;EA/B0B,CAAzB;EAkCA,SAASC,YAAT,CAAsBC,UAAtB,EAAkCC,SAAlC,EAA6CC,UAA7C,EAAyD;EAC9D,MAAI,CAACF,UAAU,CAACnnB,MAAhB,EAAwB;EACtB,WAAOmnB,UAAP;EACD;;EAED,MAAIE,UAAU,IAAI,OAAOA,UAAP,KAAsB,UAAxC,EAAoD;EAClD,WAAOA,UAAU,CAACF,UAAD,CAAjB;EACD;;EAED,QAAMG,SAAS,GAAG,IAAInoB,MAAM,CAACooB,SAAX,EAAlB;EACA,QAAMC,eAAe,GAAGF,SAAS,CAACG,eAAV,CAA0BN,UAA1B,EAAsC,WAAtC,CAAxB;EACA,QAAMO,aAAa,GAAGrnB,MAAM,CAACC,IAAP,CAAY8mB,SAAZ,CAAtB;EACA,QAAM7F,QAAQ,GAAG,GAAG7S,MAAH,CAAU,GAAG8Y,eAAe,CAACllB,IAAhB,CAAqBgE,gBAArB,CAAsC,GAAtC,CAAb,CAAjB;;EAEA,OAAK,IAAIC,CAAC,GAAG,CAAR,EAAWK,GAAG,GAAG2a,QAAQ,CAACvhB,MAA/B,EAAuCuG,CAAC,GAAGK,GAA3C,EAAgDL,CAAC,EAAjD,EAAqD;EACnD,UAAMqJ,EAAE,GAAG2R,QAAQ,CAAChb,CAAD,CAAnB;EACA,UAAMohB,MAAM,GAAG/X,EAAE,CAACqV,QAAH,CAAYrnB,WAAZ,EAAf;;EAEA,QAAI,CAAC8pB,aAAa,CAACjpB,QAAd,CAAuBkpB,MAAvB,CAAL,EAAqC;EACnC/X,MAAAA,EAAE,CAACvF,MAAH;EAEA;EACD;;EAED,UAAMud,aAAa,GAAG,GAAGlZ,MAAH,CAAU,GAAGkB,EAAE,CAACrC,UAAhB,CAAtB;EACA,UAAMsa,iBAAiB,GAAG,GAAGnZ,MAAH,CAAU0Y,SAAS,CAAC,GAAD,CAAT,IAAkB,EAA5B,EAAgCA,SAAS,CAACO,MAAD,CAAT,IAAqB,EAArD,CAA1B;EAEAC,IAAAA,aAAa,CAACrnB,OAAd,CAAsBukB,IAAI,IAAI;EAC5B,UAAI,CAACD,gBAAgB,CAACC,IAAD,EAAO+C,iBAAP,CAArB,EAAgD;EAC9CjY,QAAAA,EAAE,CAACvC,eAAH,CAAmByX,IAAI,CAACG,QAAxB;EACD;EACF,KAJD;EAKD;;EAED,SAAOuC,eAAe,CAACllB,IAAhB,CAAqBwlB,SAA5B;EACD;;EC9HD;EACA;EACA;EACA;EACA;EACA;EAqBA;EACA;EACA;EACA;EACA;;EAEA,MAAM3kB,MAAI,GAAG,SAAb;EACA,MAAMyH,UAAQ,GAAG,YAAjB;EACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;EACA,MAAMmd,cAAY,GAAG,YAArB;EACA,MAAMC,qBAAqB,GAAG,IAAIxiB,GAAJ,CAAQ,CAAC,UAAD,EAAa,WAAb,EAA0B,YAA1B,CAAR,CAA9B;EAEA,MAAMgL,aAAW,GAAG;EAClByX,EAAAA,SAAS,EAAE,SADO;EAElBC,EAAAA,QAAQ,EAAE,QAFQ;EAGlBC,EAAAA,KAAK,EAAE,2BAHW;EAIlB1f,EAAAA,OAAO,EAAE,QAJS;EAKlB2f,EAAAA,KAAK,EAAE,iBALW;EAMlBC,EAAAA,IAAI,EAAE,SANY;EAOlB/pB,EAAAA,QAAQ,EAAE,kBAPQ;EAQlBof,EAAAA,SAAS,EAAE,mBARO;EASlB7P,EAAAA,MAAM,EAAE,yBATU;EAUlBuL,EAAAA,SAAS,EAAE,0BAVO;EAWlBkP,EAAAA,kBAAkB,EAAE,OAXF;EAYlB7M,EAAAA,QAAQ,EAAE,kBAZQ;EAalB8M,EAAAA,WAAW,EAAE,mBAbK;EAclBC,EAAAA,QAAQ,EAAE,SAdQ;EAelBnB,EAAAA,UAAU,EAAE,iBAfM;EAgBlBD,EAAAA,SAAS,EAAE,QAhBO;EAiBlBxL,EAAAA,YAAY,EAAE;EAjBI,CAApB;EAoBA,MAAM6M,aAAa,GAAG;EACpBC,EAAAA,IAAI,EAAE,MADc;EAEpBC,EAAAA,GAAG,EAAE,KAFe;EAGpBC,EAAAA,KAAK,EAAE/lB,KAAK,KAAK,MAAL,GAAc,OAHN;EAIpBgmB,EAAAA,MAAM,EAAE,QAJY;EAKpBC,EAAAA,IAAI,EAAEjmB,KAAK,KAAK,OAAL,GAAe;EALN,CAAtB;EAQA,MAAMoN,SAAO,GAAG;EACdgY,EAAAA,SAAS,EAAE,IADG;EAEdC,EAAAA,QAAQ,EAAE,yCACE,mCADF,GAEE,mCAFF,GAGA,QALI;EAMdzf,EAAAA,OAAO,EAAE,aANK;EAOd0f,EAAAA,KAAK,EAAE,EAPO;EAQdC,EAAAA,KAAK,EAAE,CARO;EASdC,EAAAA,IAAI,EAAE,KATQ;EAUd/pB,EAAAA,QAAQ,EAAE,KAVI;EAWdof,EAAAA,SAAS,EAAE,KAXG;EAYd7P,EAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,CAZM;EAaduL,EAAAA,SAAS,EAAE,KAbG;EAcdkP,EAAAA,kBAAkB,EAAE,CAAC,KAAD,EAAQ,OAAR,EAAiB,QAAjB,EAA2B,MAA3B,CAdN;EAed7M,EAAAA,QAAQ,EAAE,iBAfI;EAgBd8M,EAAAA,WAAW,EAAE,EAhBC;EAiBdC,EAAAA,QAAQ,EAAE,IAjBI;EAkBdnB,EAAAA,UAAU,EAAE,IAlBE;EAmBdD,EAAAA,SAAS,EAAE/B,gBAnBG;EAoBdzJ,EAAAA,YAAY,EAAE;EApBA,CAAhB;EAuBA,MAAMjc,OAAK,GAAG;EACZopB,EAAAA,IAAI,EAAG,OAAMje,WAAU,EADX;EAEZke,EAAAA,MAAM,EAAG,SAAQle,WAAU,EAFf;EAGZme,EAAAA,IAAI,EAAG,OAAMne,WAAU,EAHX;EAIZoe,EAAAA,KAAK,EAAG,QAAOpe,WAAU,EAJb;EAKZqe,EAAAA,QAAQ,EAAG,WAAUre,WAAU,EALnB;EAMZse,EAAAA,KAAK,EAAG,QAAOte,WAAU,EANb;EAOZue,EAAAA,OAAO,EAAG,UAASve,WAAU,EAPjB;EAQZwe,EAAAA,QAAQ,EAAG,WAAUxe,WAAU,EARnB;EASZye,EAAAA,UAAU,EAAG,aAAYze,WAAU,EATvB;EAUZ0e,EAAAA,UAAU,EAAG,aAAY1e,WAAU;EAVvB,CAAd;EAaA,MAAMgB,iBAAe,GAAG,MAAxB;EACA,MAAM2d,gBAAgB,GAAG,OAAzB;EACA,MAAM1d,iBAAe,GAAG,MAAxB;EAEA,MAAM2d,gBAAgB,GAAG,MAAzB;EACA,MAAMC,eAAe,GAAG,KAAxB;EAEA,MAAMC,sBAAsB,GAAG,gBAA/B;EACA,MAAMC,cAAc,GAAI,IAAGJ,gBAAiB,EAA5C;EAEA,MAAMK,gBAAgB,GAAG,eAAzB;EAEA,MAAMC,aAAa,GAAG,OAAtB;EACA,MAAMC,aAAa,GAAG,OAAtB;EACA,MAAMC,aAAa,GAAG,OAAtB;EACA,MAAMC,cAAc,GAAG,QAAvB;EAEA;EACA;EACA;EACA;EACA;;EAEA,MAAMC,OAAN,SAAsB3f,aAAtB,CAAoC;EAClCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;EAC3B,QAAI,OAAOyc,iBAAP,KAAkB,WAAtB,EAAmC;EACjC,YAAM,IAAI9b,SAAJ,CAAc,8DAAd,CAAN;EACD;;EAED,UAAMzC,OAAN,EAL2B;;EAQ3B,SAAK+rB,UAAL,GAAkB,IAAlB;EACA,SAAKC,QAAL,GAAgB,CAAhB;EACA,SAAKC,WAAL,GAAmB,EAAnB;EACA,SAAKC,cAAL,GAAsB,EAAtB;EACA,SAAKxO,OAAL,GAAe,IAAf,CAZ2B;;EAe3B,SAAK1I,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;EACA,SAAKqqB,GAAL,GAAW,IAAX;;EAEA,SAAKC,aAAL;EACD,GApBiC;;;EAwBhB,aAAPxa,OAAO,GAAG;EACnB,WAAOA,SAAP;EACD;;EAEc,aAAJ9M,IAAI,GAAG;EAChB,WAAOA,MAAP;EACD;;EAEe,aAALxD,KAAK,GAAG;EACjB,WAAOA,OAAP;EACD;;EAEqB,aAAX6Q,WAAW,GAAG;EACvB,WAAOA,aAAP;EACD,GAtCiC;;;EA0ClCka,EAAAA,MAAM,GAAG;EACP,SAAKN,UAAL,GAAkB,IAAlB;EACD;;EAEDO,EAAAA,OAAO,GAAG;EACR,SAAKP,UAAL,GAAkB,KAAlB;EACD;;EAEDQ,EAAAA,aAAa,GAAG;EACd,SAAKR,UAAL,GAAkB,CAAC,KAAKA,UAAxB;EACD;;EAEDzd,EAAAA,MAAM,CAAC9G,KAAD,EAAQ;EACZ,QAAI,CAAC,KAAKukB,UAAV,EAAsB;EACpB;EACD;;EAED,QAAIvkB,KAAJ,EAAW;EACT,YAAMmY,OAAO,GAAG,KAAK6M,4BAAL,CAAkChlB,KAAlC,CAAhB;;EAEAmY,MAAAA,OAAO,CAACuM,cAAR,CAAuBO,KAAvB,GAA+B,CAAC9M,OAAO,CAACuM,cAAR,CAAuBO,KAAvD;;EAEA,UAAI9M,OAAO,CAAC+M,oBAAR,EAAJ,EAAoC;EAClC/M,QAAAA,OAAO,CAACgN,MAAR,CAAe,IAAf,EAAqBhN,OAArB;EACD,OAFD,MAEO;EACLA,QAAAA,OAAO,CAACiN,MAAR,CAAe,IAAf,EAAqBjN,OAArB;EACD;EACF,KAVD,MAUO;EACL,UAAI,KAAKkN,aAAL,GAAqB5pB,SAArB,CAA+BC,QAA/B,CAAwCwK,iBAAxC,CAAJ,EAA8D;EAC5D,aAAKkf,MAAL,CAAY,IAAZ,EAAkB,IAAlB;;EACA;EACD;;EAED,WAAKD,MAAL,CAAY,IAAZ,EAAkB,IAAlB;EACD;EACF;;EAEDngB,EAAAA,OAAO,GAAG;EACR0K,IAAAA,YAAY,CAAC,KAAK8U,QAAN,CAAZ;EAEArkB,IAAAA,YAAY,CAACC,GAAb,CAAiB,KAAKyE,QAAL,CAAciB,OAAd,CAAsBke,cAAtB,CAAjB,EAAwDC,gBAAxD,EAA0E,KAAKqB,iBAA/E;;EAEA,QAAI,KAAKX,GAAT,EAAc;EACZ,WAAKA,GAAL,CAASngB,MAAT;EACD;;EAED,QAAI,KAAK0R,OAAT,EAAkB;EAChB,WAAKA,OAAL,CAAaU,OAAb;EACD;;EAED,UAAM5R,OAAN;EACD;;EAEDoO,EAAAA,IAAI,GAAG;EACL,QAAI,KAAKvO,QAAL,CAAcgP,KAAd,CAAoBiC,OAApB,KAAgC,MAApC,EAA4C;EAC1C,YAAM,IAAItQ,KAAJ,CAAU,qCAAV,CAAN;EACD;;EAED,QAAI,EAAE,KAAK+f,aAAL,MAAwB,KAAKhB,UAA/B,CAAJ,EAAgD;EAC9C;EACD;;EAED,UAAMhO,SAAS,GAAGpW,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoC,KAAKD,WAAL,CAAiB9K,KAAjB,CAAuBspB,IAA3D,CAAlB;EACA,UAAMoC,UAAU,GAAG3pB,cAAc,CAAC,KAAKgJ,QAAN,CAAjC;EACA,UAAM4gB,UAAU,GAAGD,UAAU,KAAK,IAAf,GACjB,KAAK3gB,QAAL,CAAc6gB,aAAd,CAA4B5pB,eAA5B,CAA4CJ,QAA5C,CAAqD,KAAKmJ,QAA1D,CADiB,GAEjB2gB,UAAU,CAAC9pB,QAAX,CAAoB,KAAKmJ,QAAzB,CAFF;;EAIA,QAAI0R,SAAS,CAACtT,gBAAV,IAA8B,CAACwiB,UAAnC,EAA+C;EAC7C;EACD;;EAED,UAAMd,GAAG,GAAG,KAAKU,aAAL,EAAZ;EACA,UAAMM,KAAK,GAAG3tB,MAAM,CAAC,KAAK4M,WAAL,CAAiBtH,IAAlB,CAApB;EAEAqnB,IAAAA,GAAG,CAAC5d,YAAJ,CAAiB,IAAjB,EAAuB4e,KAAvB;;EACA,SAAK9gB,QAAL,CAAckC,YAAd,CAA2B,kBAA3B,EAA+C4e,KAA/C;;EAEA,QAAI,KAAKnY,OAAL,CAAa4U,SAAjB,EAA4B;EAC1BuC,MAAAA,GAAG,CAAClpB,SAAJ,CAAcoU,GAAd,CAAkB5J,iBAAlB;EACD;;EAED,UAAM4R,SAAS,GAAG,OAAO,KAAKrK,OAAL,CAAaqK,SAApB,KAAkC,UAAlC,GAChB,KAAKrK,OAAL,CAAaqK,SAAb,CAAuBhgB,IAAvB,CAA4B,IAA5B,EAAkC8sB,GAAlC,EAAuC,KAAK9f,QAA5C,CADgB,GAEhB,KAAK2I,OAAL,CAAaqK,SAFf;;EAIA,UAAM+N,UAAU,GAAG,KAAKC,cAAL,CAAoBhO,SAApB,CAAnB;;EACA,SAAKiO,mBAAL,CAAyBF,UAAzB;;EAEA,UAAM;EAAErS,MAAAA;EAAF,QAAgB,KAAK/F,OAA3B;EACA1I,IAAAA,IAAI,CAACd,GAAL,CAAS2gB,GAAT,EAAc,KAAK/f,WAAL,CAAiBG,QAA/B,EAAyC,IAAzC;;EAEA,QAAI,CAAC,KAAKF,QAAL,CAAc6gB,aAAd,CAA4B5pB,eAA5B,CAA4CJ,QAA5C,CAAqD,KAAKipB,GAA1D,CAAL,EAAqE;EACnEpR,MAAAA,SAAS,CAACqH,MAAV,CAAiB+J,GAAjB;EACAxkB,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoC,KAAKD,WAAL,CAAiB9K,KAAjB,CAAuBwpB,QAA3D;EACD;;EAED,QAAI,KAAKpN,OAAT,EAAkB;EAChB,WAAKA,OAAL,CAAaW,MAAb;EACD,KAFD,MAEO;EACL,WAAKX,OAAL,GAAea,iBAAM,CAACO,YAAP,CAAoB,KAAKzS,QAAzB,EAAmC8f,GAAnC,EAAwC,KAAK1N,gBAAL,CAAsB2O,UAAtB,CAAxC,CAAf;EACD;;EAEDjB,IAAAA,GAAG,CAAClpB,SAAJ,CAAcoU,GAAd,CAAkB3J,iBAAlB;;EAEA,UAAMwc,WAAW,GAAG,KAAKqD,wBAAL,CAA8B,KAAKvY,OAAL,CAAakV,WAA3C,CAApB;;EACA,QAAIA,WAAJ,EAAiB;EACfiC,MAAAA,GAAG,CAAClpB,SAAJ,CAAcoU,GAAd,CAAkB,GAAG6S,WAAW,CAAC5pB,KAAZ,CAAkB,GAAlB,CAArB;EACD,KAvDI;EA0DL;EACA;EACA;;;EACA,QAAI,kBAAkBT,QAAQ,CAACyD,eAA/B,EAAgD;EAC9C,SAAG+M,MAAH,CAAU,GAAGxQ,QAAQ,CAACoE,IAAT,CAAcwM,QAA3B,EAAqCvO,OAArC,CAA6ClC,OAAO,IAAI;EACtD2H,QAAAA,YAAY,CAACkC,EAAb,CAAgB7J,OAAhB,EAAyB,WAAzB,EAAsC4D,IAAtC;EACD,OAFD;EAGD;;EAED,UAAM0X,QAAQ,GAAG,MAAM;EACrB,YAAMkS,cAAc,GAAG,KAAKvB,WAA5B;EAEA,WAAKA,WAAL,GAAmB,IAAnB;EACAtkB,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoC,KAAKD,WAAL,CAAiB9K,KAAjB,CAAuBupB,KAA3D;;EAEA,UAAI2C,cAAc,KAAKlC,eAAvB,EAAwC;EACtC,aAAKsB,MAAL,CAAY,IAAZ,EAAkB,IAAlB;EACD;EACF,KATD;;EAWA,UAAM/f,UAAU,GAAG,KAAKsf,GAAL,CAASlpB,SAAT,CAAmBC,QAAnB,CAA4BuK,iBAA5B,CAAnB;;EACA,SAAKb,cAAL,CAAoB0O,QAApB,EAA8B,KAAK6Q,GAAnC,EAAwCtf,UAAxC;EACD;;EAED8N,EAAAA,IAAI,GAAG;EACL,QAAI,CAAC,KAAK+C,OAAV,EAAmB;EACjB;EACD;;EAED,UAAMyO,GAAG,GAAG,KAAKU,aAAL,EAAZ;;EACA,UAAMvR,QAAQ,GAAG,MAAM;EACrB,UAAI,KAAKoR,oBAAL,EAAJ,EAAiC;EAC/B;EACD;;EAED,UAAI,KAAKT,WAAL,KAAqBZ,gBAAzB,EAA2C;EACzCc,QAAAA,GAAG,CAACngB,MAAJ;EACD;;EAED,WAAKyhB,cAAL;;EACA,WAAKphB,QAAL,CAAc2C,eAAd,CAA8B,kBAA9B;;EACArH,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoC,KAAKD,WAAL,CAAiB9K,KAAjB,CAAuBqpB,MAA3D;;EAEA,UAAI,KAAKjN,OAAT,EAAkB;EAChB,aAAKA,OAAL,CAAaU,OAAb;;EACA,aAAKV,OAAL,GAAe,IAAf;EACD;EACF,KAjBD;;EAmBA,UAAMY,SAAS,GAAG3W,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoC,KAAKD,WAAL,CAAiB9K,KAAjB,CAAuBopB,IAA3D,CAAlB;;EACA,QAAIpM,SAAS,CAAC7T,gBAAd,EAAgC;EAC9B;EACD;;EAED0hB,IAAAA,GAAG,CAAClpB,SAAJ,CAAc+I,MAAd,CAAqB0B,iBAArB,EA9BK;EAiCL;;EACA,QAAI,kBAAkB7N,QAAQ,CAACyD,eAA/B,EAAgD;EAC9C,SAAG+M,MAAH,CAAU,GAAGxQ,QAAQ,CAACoE,IAAT,CAAcwM,QAA3B,EACGvO,OADH,CACWlC,OAAO,IAAI2H,YAAY,CAACC,GAAb,CAAiB5H,OAAjB,EAA0B,WAA1B,EAAuC4D,IAAvC,CADtB;EAED;;EAED,SAAKsoB,cAAL,CAAoBN,aAApB,IAAqC,KAArC;EACA,SAAKM,cAAL,CAAoBP,aAApB,IAAqC,KAArC;EACA,SAAKO,cAAL,CAAoBR,aAApB,IAAqC,KAArC;EAEA,UAAM7e,UAAU,GAAG,KAAKsf,GAAL,CAASlpB,SAAT,CAAmBC,QAAnB,CAA4BuK,iBAA5B,CAAnB;;EACA,SAAKb,cAAL,CAAoB0O,QAApB,EAA8B,KAAK6Q,GAAnC,EAAwCtf,UAAxC;;EACA,SAAKof,WAAL,GAAmB,EAAnB;EACD;;EAED5N,EAAAA,MAAM,GAAG;EACP,QAAI,KAAKX,OAAL,KAAiB,IAArB,EAA2B;EACzB,WAAKA,OAAL,CAAaW,MAAb;EACD;EACF,GArOiC;;;EAyOlC0O,EAAAA,aAAa,GAAG;EACd,WAAOvjB,OAAO,CAAC,KAAKkkB,QAAL,EAAD,CAAd;EACD;;EAEDb,EAAAA,aAAa,GAAG;EACd,QAAI,KAAKV,GAAT,EAAc;EACZ,aAAO,KAAKA,GAAZ;EACD;;EAED,UAAMnsB,OAAO,GAAGH,QAAQ,CAACsiB,aAAT,CAAuB,KAAvB,CAAhB;EACAniB,IAAAA,OAAO,CAACypB,SAAR,GAAoB,KAAKzU,OAAL,CAAa6U,QAAjC;EAEA,UAAMsC,GAAG,GAAGnsB,OAAO,CAACyQ,QAAR,CAAiB,CAAjB,CAAZ;EACA,SAAKkd,UAAL,CAAgBxB,GAAhB;EACAA,IAAAA,GAAG,CAAClpB,SAAJ,CAAc+I,MAAd,CAAqByB,iBAArB,EAAsCC,iBAAtC;EAEA,SAAKye,GAAL,GAAWA,GAAX;EACA,WAAO,KAAKA,GAAZ;EACD;;EAEDwB,EAAAA,UAAU,CAACxB,GAAD,EAAM;EACd,SAAKyB,sBAAL,CAA4BzB,GAA5B,EAAiC,KAAKuB,QAAL,EAAjC,EAAkDnC,sBAAlD;EACD;;EAEDqC,EAAAA,sBAAsB,CAAC/D,QAAD,EAAWgE,OAAX,EAAoB5tB,QAApB,EAA8B;EAClD,UAAM6tB,eAAe,GAAG3d,cAAc,CAACK,OAAf,CAAuBvQ,QAAvB,EAAiC4pB,QAAjC,CAAxB;;EAEA,QAAI,CAACgE,OAAD,IAAYC,eAAhB,EAAiC;EAC/BA,MAAAA,eAAe,CAAC9hB,MAAhB;EACA;EACD,KANiD;;;EASlD,SAAK+hB,iBAAL,CAAuBD,eAAvB,EAAwCD,OAAxC;EACD;;EAEDE,EAAAA,iBAAiB,CAAC/tB,OAAD,EAAU6tB,OAAV,EAAmB;EAClC,QAAI7tB,OAAO,KAAK,IAAhB,EAAsB;EACpB;EACD;;EAED,QAAIuB,SAAS,CAACssB,OAAD,CAAb,EAAwB;EACtBA,MAAAA,OAAO,GAAGnsB,UAAU,CAACmsB,OAAD,CAApB,CADsB;;EAItB,UAAI,KAAK7Y,OAAL,CAAagV,IAAjB,EAAuB;EACrB,YAAI6D,OAAO,CAAClqB,UAAR,KAAuB3D,OAA3B,EAAoC;EAClCA,UAAAA,OAAO,CAACypB,SAAR,GAAoB,EAApB;EACAzpB,UAAAA,OAAO,CAACoiB,MAAR,CAAeyL,OAAf;EACD;EACF,OALD,MAKO;EACL7tB,QAAAA,OAAO,CAACguB,WAAR,GAAsBH,OAAO,CAACG,WAA9B;EACD;;EAED;EACD;;EAED,QAAI,KAAKhZ,OAAL,CAAagV,IAAjB,EAAuB;EACrB,UAAI,KAAKhV,OAAL,CAAamV,QAAjB,EAA2B;EACzB0D,QAAAA,OAAO,GAAGhF,YAAY,CAACgF,OAAD,EAAU,KAAK7Y,OAAL,CAAa+T,SAAvB,EAAkC,KAAK/T,OAAL,CAAagU,UAA/C,CAAtB;EACD;;EAEDhpB,MAAAA,OAAO,CAACypB,SAAR,GAAoBoE,OAApB;EACD,KAND,MAMO;EACL7tB,MAAAA,OAAO,CAACguB,WAAR,GAAsBH,OAAtB;EACD;EACF;;EAEDH,EAAAA,QAAQ,GAAG;EACT,UAAM5D,KAAK,GAAG,KAAKzd,QAAL,CAAcnM,YAAd,CAA2B,wBAA3B,KAAwD,KAAK8U,OAAL,CAAa8U,KAAnF;;EAEA,WAAO,KAAKyD,wBAAL,CAA8BzD,KAA9B,CAAP;EACD;;EAEDmE,EAAAA,gBAAgB,CAACb,UAAD,EAAa;EAC3B,QAAIA,UAAU,KAAK,OAAnB,EAA4B;EAC1B,aAAO,KAAP;EACD;;EAED,QAAIA,UAAU,KAAK,MAAnB,EAA2B;EACzB,aAAO,OAAP;EACD;;EAED,WAAOA,UAAP;EACD,GA7TiC;;;EAiUlCZ,EAAAA,4BAA4B,CAAChlB,KAAD,EAAQmY,OAAR,EAAiB;EAC3C,WAAOA,OAAO,IAAI,KAAKvT,WAAL,CAAiBW,mBAAjB,CAAqCvF,KAAK,CAACC,cAA3C,EAA2D,KAAKymB,kBAAL,EAA3D,CAAlB;EACD;;EAEDhP,EAAAA,UAAU,GAAG;EACX,UAAM;EAAE1P,MAAAA;EAAF,QAAa,KAAKwF,OAAxB;;EAEA,QAAI,OAAOxF,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,aAAOA,MAAM,CAAClP,KAAP,CAAa,GAAb,EAAkB+Q,GAAlB,CAAsB3C,GAAG,IAAIzN,MAAM,CAAC8W,QAAP,CAAgBrJ,GAAhB,EAAqB,EAArB,CAA7B,CAAP;EACD;;EAED,QAAI,OAAOc,MAAP,KAAkB,UAAtB,EAAkC;EAChC,aAAO2P,UAAU,IAAI3P,MAAM,CAAC2P,UAAD,EAAa,KAAK9S,QAAlB,CAA3B;EACD;;EAED,WAAOmD,MAAP;EACD;;EAED+d,EAAAA,wBAAwB,CAACM,OAAD,EAAU;EAChC,WAAO,OAAOA,OAAP,KAAmB,UAAnB,GAAgCA,OAAO,CAACxuB,IAAR,CAAa,KAAKgN,QAAlB,CAAhC,GAA8DwhB,OAArE;EACD;;EAEDpP,EAAAA,gBAAgB,CAAC2O,UAAD,EAAa;EAC3B,UAAMhO,qBAAqB,GAAG;EAC5BC,MAAAA,SAAS,EAAE+N,UADiB;EAE5BzO,MAAAA,SAAS,EAAE,CACT;EACE9Z,QAAAA,IAAI,EAAE,MADR;EAEEya,QAAAA,OAAO,EAAE;EACP2K,UAAAA,kBAAkB,EAAE,KAAKjV,OAAL,CAAaiV;EAD1B;EAFX,OADS,EAOT;EACEplB,QAAAA,IAAI,EAAE,QADR;EAEEya,QAAAA,OAAO,EAAE;EACP9P,UAAAA,MAAM,EAAE,KAAK0P,UAAL;EADD;EAFX,OAPS,EAaT;EACEra,QAAAA,IAAI,EAAE,iBADR;EAEEya,QAAAA,OAAO,EAAE;EACPlC,UAAAA,QAAQ,EAAE,KAAKpI,OAAL,CAAaoI;EADhB;EAFX,OAbS,EAmBT;EACEvY,QAAAA,IAAI,EAAE,OADR;EAEEya,QAAAA,OAAO,EAAE;EACPtf,UAAAA,OAAO,EAAG,IAAG,KAAKoM,WAAL,CAAiBtH,IAAK;EAD5B;EAFX,OAnBS,EAyBT;EACED,QAAAA,IAAI,EAAE,UADR;EAEEga,QAAAA,OAAO,EAAE,IAFX;EAGEsP,QAAAA,KAAK,EAAE,YAHT;EAIEnpB,QAAAA,EAAE,EAAEgJ,IAAI,IAAI,KAAKogB,4BAAL,CAAkCpgB,IAAlC;EAJd,OAzBS,CAFiB;EAkC5BqgB,MAAAA,aAAa,EAAErgB,IAAI,IAAI;EACrB,YAAIA,IAAI,CAACsR,OAAL,CAAaD,SAAb,KAA2BrR,IAAI,CAACqR,SAApC,EAA+C;EAC7C,eAAK+O,4BAAL,CAAkCpgB,IAAlC;EACD;EACF;EAtC2B,KAA9B;EAyCA,WAAO,EACL,GAAGoR,qBADE;EAEL,UAAI,OAAO,KAAKpK,OAAL,CAAauI,YAApB,KAAqC,UAArC,GAAkD,KAAKvI,OAAL,CAAauI,YAAb,CAA0B6B,qBAA1B,CAAlD,GAAqG,KAAKpK,OAAL,CAAauI,YAAtH;EAFK,KAAP;EAID;;EAED+P,EAAAA,mBAAmB,CAACF,UAAD,EAAa;EAC9B,SAAKP,aAAL,GAAqB5pB,SAArB,CAA+BoU,GAA/B,CAAoC,GAAE,KAAKiX,oBAAL,EAA4B,IAAG,KAAKL,gBAAL,CAAsBb,UAAtB,CAAkC,EAAvG;EACD;;EAEDC,EAAAA,cAAc,CAAChO,SAAD,EAAY;EACxB,WAAO+K,aAAa,CAAC/K,SAAS,CAAC3c,WAAV,EAAD,CAApB;EACD;;EAED0pB,EAAAA,aAAa,GAAG;EACd,UAAMmC,QAAQ,GAAG,KAAKvZ,OAAL,CAAa5K,OAAb,CAAqB9J,KAArB,CAA2B,GAA3B,CAAjB;;EAEAiuB,IAAAA,QAAQ,CAACrsB,OAAT,CAAiBkI,OAAO,IAAI;EAC1B,UAAIA,OAAO,KAAK,OAAhB,EAAyB;EACvBzC,QAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B,KAAKD,WAAL,CAAiB9K,KAAjB,CAAuBypB,KAAtD,EAA6D,KAAK/V,OAAL,CAAa/U,QAA1E,EAAoFuH,KAAK,IAAI,KAAK8G,MAAL,CAAY9G,KAAZ,CAA7F;EACD,OAFD,MAEO,IAAI4C,OAAO,KAAKyhB,cAAhB,EAAgC;EACrC,cAAM2C,OAAO,GAAGpkB,OAAO,KAAKshB,aAAZ,GACd,KAAKtf,WAAL,CAAiB9K,KAAjB,CAAuB4pB,UADT,GAEd,KAAK9e,WAAL,CAAiB9K,KAAjB,CAAuB0pB,OAFzB;EAGA,cAAMyD,QAAQ,GAAGrkB,OAAO,KAAKshB,aAAZ,GACf,KAAKtf,WAAL,CAAiB9K,KAAjB,CAAuB6pB,UADR,GAEf,KAAK/e,WAAL,CAAiB9K,KAAjB,CAAuB2pB,QAFzB;EAIAtjB,QAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BmiB,OAA/B,EAAwC,KAAKxZ,OAAL,CAAa/U,QAArD,EAA+DuH,KAAK,IAAI,KAAKmlB,MAAL,CAAYnlB,KAAZ,CAAxE;EACAG,QAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BoiB,QAA/B,EAAyC,KAAKzZ,OAAL,CAAa/U,QAAtD,EAAgEuH,KAAK,IAAI,KAAKolB,MAAL,CAAYplB,KAAZ,CAAzE;EACD;EACF,KAdD;;EAgBA,SAAKslB,iBAAL,GAAyB,MAAM;EAC7B,UAAI,KAAKzgB,QAAT,EAAmB;EACjB,aAAKsO,IAAL;EACD;EACF,KAJD;;EAMAhT,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAAL,CAAciB,OAAd,CAAsBke,cAAtB,CAAhB,EAAuDC,gBAAvD,EAAyE,KAAKqB,iBAA9E;;EAEA,QAAI,KAAK9X,OAAL,CAAa/U,QAAjB,EAA2B;EACzB,WAAK+U,OAAL,GAAe,EACb,GAAG,KAAKA,OADK;EAEb5K,QAAAA,OAAO,EAAE,QAFI;EAGbnK,QAAAA,QAAQ,EAAE;EAHG,OAAf;EAKD,KAND,MAMO;EACL,WAAKyuB,SAAL;EACD;EACF;;EAEDA,EAAAA,SAAS,GAAG;EACV,UAAM5E,KAAK,GAAG,KAAKzd,QAAL,CAAcnM,YAAd,CAA2B,OAA3B,CAAd;;EACA,UAAMyuB,iBAAiB,GAAG,OAAO,KAAKtiB,QAAL,CAAcnM,YAAd,CAA2B,wBAA3B,CAAjC;;EAEA,QAAI4pB,KAAK,IAAI6E,iBAAiB,KAAK,QAAnC,EAA6C;EAC3C,WAAKtiB,QAAL,CAAckC,YAAd,CAA2B,wBAA3B,EAAqDub,KAAK,IAAI,EAA9D;;EACA,UAAIA,KAAK,IAAI,CAAC,KAAKzd,QAAL,CAAcnM,YAAd,CAA2B,YAA3B,CAAV,IAAsD,CAAC,KAAKmM,QAAL,CAAc2hB,WAAzE,EAAsF;EACpF,aAAK3hB,QAAL,CAAckC,YAAd,CAA2B,YAA3B,EAAyCub,KAAzC;EACD;;EAED,WAAKzd,QAAL,CAAckC,YAAd,CAA2B,OAA3B,EAAoC,EAApC;EACD;EACF;;EAEDoe,EAAAA,MAAM,CAACnlB,KAAD,EAAQmY,OAAR,EAAiB;EACrBA,IAAAA,OAAO,GAAG,KAAK6M,4BAAL,CAAkChlB,KAAlC,EAAyCmY,OAAzC,CAAV;;EAEA,QAAInY,KAAJ,EAAW;EACTmY,MAAAA,OAAO,CAACuM,cAAR,CACE1kB,KAAK,CAACK,IAAN,KAAe,SAAf,GAA2B8jB,aAA3B,GAA2CD,aAD7C,IAEI,IAFJ;EAGD;;EAED,QAAI/L,OAAO,CAACkN,aAAR,GAAwB5pB,SAAxB,CAAkCC,QAAlC,CAA2CwK,iBAA3C,KAA+DiS,OAAO,CAACsM,WAAR,KAAwBZ,gBAA3F,EAA6G;EAC3G1L,MAAAA,OAAO,CAACsM,WAAR,GAAsBZ,gBAAtB;EACA;EACD;;EAEDnU,IAAAA,YAAY,CAACyI,OAAO,CAACqM,QAAT,CAAZ;EAEArM,IAAAA,OAAO,CAACsM,WAAR,GAAsBZ,gBAAtB;;EAEA,QAAI,CAAC1L,OAAO,CAAC3K,OAAR,CAAgB+U,KAAjB,IAA0B,CAACpK,OAAO,CAAC3K,OAAR,CAAgB+U,KAAhB,CAAsBnP,IAArD,EAA2D;EACzD+E,MAAAA,OAAO,CAAC/E,IAAR;EACA;EACD;;EAED+E,IAAAA,OAAO,CAACqM,QAAR,GAAmBlmB,UAAU,CAAC,MAAM;EAClC,UAAI6Z,OAAO,CAACsM,WAAR,KAAwBZ,gBAA5B,EAA8C;EAC5C1L,QAAAA,OAAO,CAAC/E,IAAR;EACD;EACF,KAJ4B,EAI1B+E,OAAO,CAAC3K,OAAR,CAAgB+U,KAAhB,CAAsBnP,IAJI,CAA7B;EAKD;;EAEDgS,EAAAA,MAAM,CAACplB,KAAD,EAAQmY,OAAR,EAAiB;EACrBA,IAAAA,OAAO,GAAG,KAAK6M,4BAAL,CAAkChlB,KAAlC,EAAyCmY,OAAzC,CAAV;;EAEA,QAAInY,KAAJ,EAAW;EACTmY,MAAAA,OAAO,CAACuM,cAAR,CACE1kB,KAAK,CAACK,IAAN,KAAe,UAAf,GAA4B8jB,aAA5B,GAA4CD,aAD9C,IAEI/L,OAAO,CAACtT,QAAR,CAAiBnJ,QAAjB,CAA0BsE,KAAK,CAAC2B,aAAhC,CAFJ;EAGD;;EAED,QAAIwW,OAAO,CAAC+M,oBAAR,EAAJ,EAAoC;EAClC;EACD;;EAEDxV,IAAAA,YAAY,CAACyI,OAAO,CAACqM,QAAT,CAAZ;EAEArM,IAAAA,OAAO,CAACsM,WAAR,GAAsBX,eAAtB;;EAEA,QAAI,CAAC3L,OAAO,CAAC3K,OAAR,CAAgB+U,KAAjB,IAA0B,CAACpK,OAAO,CAAC3K,OAAR,CAAgB+U,KAAhB,CAAsBpP,IAArD,EAA2D;EACzDgF,MAAAA,OAAO,CAAChF,IAAR;EACA;EACD;;EAEDgF,IAAAA,OAAO,CAACqM,QAAR,GAAmBlmB,UAAU,CAAC,MAAM;EAClC,UAAI6Z,OAAO,CAACsM,WAAR,KAAwBX,eAA5B,EAA6C;EAC3C3L,QAAAA,OAAO,CAAChF,IAAR;EACD;EACF,KAJ4B,EAI1BgF,OAAO,CAAC3K,OAAR,CAAgB+U,KAAhB,CAAsBpP,IAJI,CAA7B;EAKD;;EAED+R,EAAAA,oBAAoB,GAAG;EACrB,SAAK,MAAMtiB,OAAX,IAAsB,KAAK8hB,cAA3B,EAA2C;EACzC,UAAI,KAAKA,cAAL,CAAoB9hB,OAApB,CAAJ,EAAkC;EAChC,eAAO,IAAP;EACD;EACF;;EAED,WAAO,KAAP;EACD;;EAED6K,EAAAA,UAAU,CAACnT,MAAD,EAAS;EACjB,UAAM8sB,cAAc,GAAG/f,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAAvB;EAEArK,IAAAA,MAAM,CAACC,IAAP,CAAY2sB,cAAZ,EAA4B1sB,OAA5B,CAAoC2sB,QAAQ,IAAI;EAC9C,UAAIlF,qBAAqB,CAAC3gB,GAAtB,CAA0B6lB,QAA1B,CAAJ,EAAyC;EACvC,eAAOD,cAAc,CAACC,QAAD,CAArB;EACD;EACF,KAJD;EAMA/sB,IAAAA,MAAM,GAAG,EACP,GAAG,KAAKsK,WAAL,CAAiBwF,OADb;EAEP,SAAGgd,cAFI;EAGP,UAAI,OAAO9sB,MAAP,KAAkB,QAAlB,IAA8BA,MAA9B,GAAuCA,MAAvC,GAAgD,EAApD;EAHO,KAAT;EAMAA,IAAAA,MAAM,CAACiZ,SAAP,GAAmBjZ,MAAM,CAACiZ,SAAP,KAAqB,KAArB,GAA6Blb,QAAQ,CAACoE,IAAtC,GAA6CvC,UAAU,CAACI,MAAM,CAACiZ,SAAR,CAA1E;;EAEA,QAAI,OAAOjZ,MAAM,CAACioB,KAAd,KAAwB,QAA5B,EAAsC;EACpCjoB,MAAAA,MAAM,CAACioB,KAAP,GAAe;EACbnP,QAAAA,IAAI,EAAE9Y,MAAM,CAACioB,KADA;EAEbpP,QAAAA,IAAI,EAAE7Y,MAAM,CAACioB;EAFA,OAAf;EAID;;EAED,QAAI,OAAOjoB,MAAM,CAACgoB,KAAd,KAAwB,QAA5B,EAAsC;EACpChoB,MAAAA,MAAM,CAACgoB,KAAP,GAAehoB,MAAM,CAACgoB,KAAP,CAAa1qB,QAAb,EAAf;EACD;;EAED,QAAI,OAAO0C,MAAM,CAAC+rB,OAAd,KAA0B,QAA9B,EAAwC;EACtC/rB,MAAAA,MAAM,CAAC+rB,OAAP,GAAiB/rB,MAAM,CAAC+rB,OAAP,CAAezuB,QAAf,EAAjB;EACD;;EAEDwC,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAe,KAAKsK,WAAL,CAAiB+F,WAAhC,CAAf;;EAEA,QAAIrQ,MAAM,CAACqoB,QAAX,EAAqB;EACnBroB,MAAAA,MAAM,CAAC+nB,QAAP,GAAkBhB,YAAY,CAAC/mB,MAAM,CAAC+nB,QAAR,EAAkB/nB,MAAM,CAACinB,SAAzB,EAAoCjnB,MAAM,CAACknB,UAA3C,CAA9B;EACD;;EAED,WAAOlnB,MAAP;EACD;;EAEDosB,EAAAA,kBAAkB,GAAG;EACnB,UAAMpsB,MAAM,GAAG,EAAf;;EAEA,SAAK,MAAMoJ,GAAX,IAAkB,KAAK8J,OAAvB,EAAgC;EAC9B,UAAI,KAAK5I,WAAL,CAAiBwF,OAAjB,CAAyB1G,GAAzB,MAAkC,KAAK8J,OAAL,CAAa9J,GAAb,CAAtC,EAAyD;EACvDpJ,QAAAA,MAAM,CAACoJ,GAAD,CAAN,GAAc,KAAK8J,OAAL,CAAa9J,GAAb,CAAd;EACD;EACF,KAPkB;EAUnB;EACA;;;EACA,WAAOpJ,MAAP;EACD;;EAED2rB,EAAAA,cAAc,GAAG;EACf,UAAMtB,GAAG,GAAG,KAAKU,aAAL,EAAZ;EACA,UAAMiC,qBAAqB,GAAG,IAAIvsB,MAAJ,CAAY,UAAS,KAAK+rB,oBAAL,EAA4B,MAAjD,EAAwD,GAAxD,CAA9B;EACA,UAAMS,QAAQ,GAAG5C,GAAG,CAACjsB,YAAJ,CAAiB,OAAjB,EAA0BZ,KAA1B,CAAgCwvB,qBAAhC,CAAjB;;EACA,QAAIC,QAAQ,KAAK,IAAb,IAAqBA,QAAQ,CAACptB,MAAT,GAAkB,CAA3C,EAA8C;EAC5CotB,MAAAA,QAAQ,CAAC1d,GAAT,CAAa2d,KAAK,IAAIA,KAAK,CAACzuB,IAAN,EAAtB,EACG2B,OADH,CACW+sB,MAAM,IAAI9C,GAAG,CAAClpB,SAAJ,CAAc+I,MAAd,CAAqBijB,MAArB,CADrB;EAED;EACF;;EAEDX,EAAAA,oBAAoB,GAAG;EACrB,WAAO5E,cAAP;EACD;;EAED0E,EAAAA,4BAA4B,CAACjP,UAAD,EAAa;EACvC,UAAM;EAAE+P,MAAAA;EAAF,QAAY/P,UAAlB;;EAEA,QAAI,CAAC+P,KAAL,EAAY;EACV;EACD;;EAED,SAAK/C,GAAL,GAAW+C,KAAK,CAAChM,QAAN,CAAeiM,MAA1B;;EACA,SAAK1B,cAAL;;EACA,SAAKH,mBAAL,CAAyB,KAAKD,cAAL,CAAoB6B,KAAK,CAAC7P,SAA1B,CAAzB;EACD,GAxlBiC;;;EA4lBZ,SAAfpa,eAAe,CAACnD,MAAD,EAAS;EAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;EAC3B,YAAMC,IAAI,GAAG8d,OAAO,CAAC/e,mBAAR,CAA4B,IAA5B,EAAkCjL,MAAlC,CAAb;;EAEA,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,YAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,gBAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;EACD;;EAEDkM,QAAAA,IAAI,CAAClM,MAAD,CAAJ;EACD;EACF,KAVM,CAAP;EAWD;;EAxmBiC;EA2mBpC;EACA;EACA;EACA;EACA;EACA;;;EAEA4C,kBAAkB,CAAConB,OAAD,CAAlB;;EC/uBA;EACA;EACA;EACA;EACA;EACA;EAKA;EACA;EACA;EACA;EACA;;EAEA,MAAMhnB,MAAI,GAAG,SAAb;EACA,MAAMyH,UAAQ,GAAG,YAAjB;EACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;EACA,MAAMmd,YAAY,GAAG,YAArB;EAEA,MAAM9X,SAAO,GAAG,EACd,GAAGka,OAAO,CAACla,OADG;EAEdyN,EAAAA,SAAS,EAAE,OAFG;EAGd7P,EAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,CAHM;EAIdpF,EAAAA,OAAO,EAAE,OAJK;EAKdyjB,EAAAA,OAAO,EAAE,EALK;EAMdhE,EAAAA,QAAQ,EAAE,yCACE,mCADF,GAEE,kCAFF,GAGE,kCAHF,GAIA;EAVI,CAAhB;EAaA,MAAM1X,aAAW,GAAG,EAClB,GAAG2Z,OAAO,CAAC3Z,WADO;EAElB0b,EAAAA,OAAO,EAAE;EAFS,CAApB;EAKA,MAAMvsB,OAAK,GAAG;EACZopB,EAAAA,IAAI,EAAG,OAAMje,WAAU,EADX;EAEZke,EAAAA,MAAM,EAAG,SAAQle,WAAU,EAFf;EAGZme,EAAAA,IAAI,EAAG,OAAMne,WAAU,EAHX;EAIZoe,EAAAA,KAAK,EAAG,QAAOpe,WAAU,EAJb;EAKZqe,EAAAA,QAAQ,EAAG,WAAUre,WAAU,EALnB;EAMZse,EAAAA,KAAK,EAAG,QAAOte,WAAU,EANb;EAOZue,EAAAA,OAAO,EAAG,UAASve,WAAU,EAPjB;EAQZwe,EAAAA,QAAQ,EAAG,WAAUxe,WAAU,EARnB;EASZye,EAAAA,UAAU,EAAG,aAAYze,WAAU,EATvB;EAUZ0e,EAAAA,UAAU,EAAG,aAAY1e,WAAU;EAVvB,CAAd;EAaA,MAAM2iB,cAAc,GAAG,iBAAvB;EACA,MAAMC,gBAAgB,GAAG,eAAzB;EAEA;EACA;EACA;EACA;EACA;;EAEA,MAAMC,OAAN,SAAsBxD,OAAtB,CAA8B;EAC5B;EAEkB,aAAPla,OAAO,GAAG;EACnB,WAAOA,SAAP;EACD;;EAEc,aAAJ9M,IAAI,GAAG;EAChB,WAAOA,MAAP;EACD;;EAEe,aAALxD,KAAK,GAAG;EACjB,WAAOA,OAAP;EACD;;EAEqB,aAAX6Q,WAAW,GAAG;EACvB,WAAOA,aAAP;EACD,GAjB2B;;;EAqB5B4a,EAAAA,aAAa,GAAG;EACd,WAAO,KAAKW,QAAL,MAAmB,KAAK6B,WAAL,EAA1B;EACD;;EAED5B,EAAAA,UAAU,CAACxB,GAAD,EAAM;EACd,SAAKyB,sBAAL,CAA4BzB,GAA5B,EAAiC,KAAKuB,QAAL,EAAjC,EAAkD0B,cAAlD;;EACA,SAAKxB,sBAAL,CAA4BzB,GAA5B,EAAiC,KAAKoD,WAAL,EAAjC,EAAqDF,gBAArD;EACD,GA5B2B;;;EAgC5BE,EAAAA,WAAW,GAAG;EACZ,WAAO,KAAKhC,wBAAL,CAA8B,KAAKvY,OAAL,CAAa6Y,OAA3C,CAAP;EACD;;EAEDS,EAAAA,oBAAoB,GAAG;EACrB,WAAO5E,YAAP;EACD,GAtC2B;;;EA0CN,SAAfzkB,eAAe,CAACnD,MAAD,EAAS;EAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;EAC3B,YAAMC,IAAI,GAAGshB,OAAO,CAACviB,mBAAR,CAA4B,IAA5B,EAAkCjL,MAAlC,CAAb;;EAEA,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,YAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,gBAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;EACD;;EAEDkM,QAAAA,IAAI,CAAClM,MAAD,CAAJ;EACD;EACF,KAVM,CAAP;EAWD;;EAtD2B;EAyD9B;EACA;EACA;EACA;EACA;EACA;;;EAEA4C,kBAAkB,CAAC4qB,OAAD,CAAlB;;EC7HA;EACA;EACA;EACA;EACA;EACA;EAaA;EACA;EACA;EACA;EACA;;EAEA,MAAMxqB,MAAI,GAAG,WAAb;EACA,MAAMyH,UAAQ,GAAG,cAAjB;EACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;EACA,MAAM0B,cAAY,GAAG,WAArB;EAEA,MAAM2D,SAAO,GAAG;EACdpC,EAAAA,MAAM,EAAE,EADM;EAEdrC,EAAAA,MAAM,EAAE,MAFM;EAGdvH,EAAAA,MAAM,EAAE;EAHM,CAAhB;EAMA,MAAMuM,aAAW,GAAG;EAClB3C,EAAAA,MAAM,EAAE,QADU;EAElBrC,EAAAA,MAAM,EAAE,QAFU;EAGlBvH,EAAAA,MAAM,EAAE;EAHU,CAApB;EAMA,MAAM4pB,cAAc,GAAI,WAAU/iB,WAAU,EAA5C;EACA,MAAMgjB,YAAY,GAAI,SAAQhjB,WAAU,EAAxC;EACA,MAAM2G,mBAAmB,GAAI,OAAM3G,WAAU,GAAEwB,cAAa,EAA5D;EAEA,MAAMyhB,wBAAwB,GAAG,eAAjC;EACA,MAAMxhB,mBAAiB,GAAG,QAA1B;EAEA,MAAMyhB,iBAAiB,GAAG,wBAA1B;EACA,MAAMC,yBAAuB,GAAG,mBAAhC;EACA,MAAMC,kBAAkB,GAAG,WAA3B;EACA,MAAMC,kBAAkB,GAAG,WAA3B;EACA,MAAMC,mBAAmB,GAAG,kBAA5B;EACA,MAAMC,mBAAmB,GAAI,GAAEH,kBAAmB,KAAIE,mBAAoB,MAAKL,wBAAyB,EAAxG;EACA,MAAMO,mBAAiB,GAAG,WAA1B;EACA,MAAMC,0BAAwB,GAAG,kBAAjC;EAEA,MAAMC,aAAa,GAAG,QAAtB;EACA,MAAMC,eAAe,GAAG,UAAxB;EAEA;EACA;EACA;EACA;EACA;;EAEA,MAAMC,SAAN,SAAwBlkB,aAAxB,CAAsC;EACpCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;EAC3B,UAAM9B,OAAN;EACA,SAAKswB,cAAL,GAAsB,KAAKjkB,QAAL,CAAcgB,OAAd,KAA0B,MAA1B,GAAmCvM,MAAnC,GAA4C,KAAKuL,QAAvE;EACA,SAAK2I,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;EACA,SAAKyuB,QAAL,GAAgB,EAAhB;EACA,SAAKC,QAAL,GAAgB,EAAhB;EACA,SAAKC,aAAL,GAAqB,IAArB;EACA,SAAKC,aAAL,GAAqB,CAArB;EAEA/oB,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKymB,cAArB,EAAqCb,YAArC,EAAmD,MAAM,KAAKkB,QAAL,EAAzD;EAEA,SAAKC,OAAL;;EACA,SAAKD,QAAL;EACD,GAdmC;;;EAkBlB,aAAP/e,OAAO,GAAG;EACnB,WAAOA,SAAP;EACD;;EAEc,aAAJ9M,IAAI,GAAG;EAChB,WAAOA,MAAP;EACD,GAxBmC;;;EA4BpC8rB,EAAAA,OAAO,GAAG;EACR,UAAMC,UAAU,GAAG,KAAKP,cAAL,KAAwB,KAAKA,cAAL,CAAoBxvB,MAA5C,GACjBqvB,aADiB,GAEjBC,eAFF;EAIA,UAAMU,YAAY,GAAG,KAAK9b,OAAL,CAAa7H,MAAb,KAAwB,MAAxB,GACnB0jB,UADmB,GAEnB,KAAK7b,OAAL,CAAa7H,MAFf;EAIA,UAAM4jB,UAAU,GAAGD,YAAY,KAAKV,eAAjB,GACjB,KAAKY,aAAL,EADiB,GAEjB,CAFF;EAIA,SAAKT,QAAL,GAAgB,EAAhB;EACA,SAAKC,QAAL,GAAgB,EAAhB;EACA,SAAKE,aAAL,GAAqB,KAAKO,gBAAL,EAArB;EAEA,UAAMC,OAAO,GAAG/gB,cAAc,CAACC,IAAf,CAAoB4f,mBAApB,EAAyC,KAAKhb,OAAL,CAAapP,MAAtD,CAAhB;EAEAsrB,IAAAA,OAAO,CAAC7f,GAAR,CAAYrR,OAAO,IAAI;EACrB,YAAMmxB,cAAc,GAAG3wB,sBAAsB,CAACR,OAAD,CAA7C;EACA,YAAM4F,MAAM,GAAGurB,cAAc,GAAGhhB,cAAc,CAACK,OAAf,CAAuB2gB,cAAvB,CAAH,GAA4C,IAAzE;;EAEA,UAAIvrB,MAAJ,EAAY;EACV,cAAMwrB,SAAS,GAAGxrB,MAAM,CAAC8J,qBAAP,EAAlB;;EACA,YAAI0hB,SAAS,CAAC3Q,KAAV,IAAmB2Q,SAAS,CAACC,MAAjC,EAAyC;EACvC,iBAAO,CACLxiB,WAAW,CAACiiB,YAAD,CAAX,CAA0BlrB,MAA1B,EAAkC+J,GAAlC,GAAwCohB,UADnC,EAELI,cAFK,CAAP;EAID;EACF;;EAED,aAAO,IAAP;EACD,KAfD,EAgBG/hB,MAhBH,CAgBUkiB,IAAI,IAAIA,IAhBlB,EAiBGC,IAjBH,CAiBQ,CAACtK,CAAD,EAAIE,CAAJ,KAAUF,CAAC,CAAC,CAAD,CAAD,GAAOE,CAAC,CAAC,CAAD,CAjB1B,EAkBGjlB,OAlBH,CAkBWovB,IAAI,IAAI;EACf,WAAKf,QAAL,CAAchsB,IAAd,CAAmB+sB,IAAI,CAAC,CAAD,CAAvB;;EACA,WAAKd,QAAL,CAAcjsB,IAAd,CAAmB+sB,IAAI,CAAC,CAAD,CAAvB;EACD,KArBH;EAsBD;;EAED9kB,EAAAA,OAAO,GAAG;EACR7E,IAAAA,YAAY,CAACC,GAAb,CAAiB,KAAK0oB,cAAtB,EAAsC7jB,WAAtC;EACA,UAAMD,OAAN;EACD,GA1EmC;;;EA8EpCyI,EAAAA,UAAU,CAACnT,MAAD,EAAS;EACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,SADI;EAEP,SAAG/C,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAFI;EAGP,UAAI,OAAOvK,MAAP,KAAkB,QAAlB,IAA8BA,MAA9B,GAAuCA,MAAvC,GAAgD,EAApD;EAHO,KAAT;EAMAA,IAAAA,MAAM,CAAC8D,MAAP,GAAgBlE,UAAU,CAACI,MAAM,CAAC8D,MAAR,CAAV,IAA6B/F,QAAQ,CAACyD,eAAtD;EAEA1B,IAAAA,eAAe,CAACkD,MAAD,EAAOhD,MAAP,EAAeqQ,aAAf,CAAf;EAEA,WAAOrQ,MAAP;EACD;;EAEDkvB,EAAAA,aAAa,GAAG;EACd,WAAO,KAAKV,cAAL,KAAwBxvB,MAAxB,GACL,KAAKwvB,cAAL,CAAoB1gB,WADf,GAEL,KAAK0gB,cAAL,CAAoBtL,SAFtB;EAGD;;EAEDiM,EAAAA,gBAAgB,GAAG;EACjB,WAAO,KAAKX,cAAL,CAAoBjL,YAApB,IAAoC3lB,IAAI,CAAC6G,GAAL,CACzC1G,QAAQ,CAACoE,IAAT,CAAcohB,YAD2B,EAEzCxlB,QAAQ,CAACyD,eAAT,CAAyB+hB,YAFgB,CAA3C;EAID;;EAEDmM,EAAAA,gBAAgB,GAAG;EACjB,WAAO,KAAKlB,cAAL,KAAwBxvB,MAAxB,GACLA,MAAM,CAAC2wB,WADF,GAEL,KAAKnB,cAAL,CAAoB5gB,qBAApB,GAA4C2hB,MAF9C;EAGD;;EAEDV,EAAAA,QAAQ,GAAG;EACT,UAAM3L,SAAS,GAAG,KAAKgM,aAAL,KAAuB,KAAKhc,OAAL,CAAaxF,MAAtD;;EACA,UAAM6V,YAAY,GAAG,KAAK4L,gBAAL,EAArB;;EACA,UAAMS,SAAS,GAAG,KAAK1c,OAAL,CAAaxF,MAAb,GAAsB6V,YAAtB,GAAqC,KAAKmM,gBAAL,EAAvD;;EAEA,QAAI,KAAKd,aAAL,KAAuBrL,YAA3B,EAAyC;EACvC,WAAKuL,OAAL;EACD;;EAED,QAAI5L,SAAS,IAAI0M,SAAjB,EAA4B;EAC1B,YAAM9rB,MAAM,GAAG,KAAK4qB,QAAL,CAAc,KAAKA,QAAL,CAAc7uB,MAAd,GAAuB,CAArC,CAAf;;EAEA,UAAI,KAAK8uB,aAAL,KAAuB7qB,MAA3B,EAAmC;EACjC,aAAK+rB,SAAL,CAAe/rB,MAAf;EACD;;EAED;EACD;;EAED,QAAI,KAAK6qB,aAAL,IAAsBzL,SAAS,GAAG,KAAKuL,QAAL,CAAc,CAAd,CAAlC,IAAsD,KAAKA,QAAL,CAAc,CAAd,IAAmB,CAA7E,EAAgF;EAC9E,WAAKE,aAAL,GAAqB,IAArB;;EACA,WAAKmB,MAAL;;EACA;EACD;;EAED,SAAK,IAAI1pB,CAAC,GAAG,KAAKqoB,QAAL,CAAc5uB,MAA3B,EAAmCuG,CAAC,EAApC,GAAyC;EACvC,YAAM2pB,cAAc,GAAG,KAAKpB,aAAL,KAAuB,KAAKD,QAAL,CAActoB,CAAd,CAAvB,IACnB8c,SAAS,IAAI,KAAKuL,QAAL,CAAcroB,CAAd,CADM,KAElB,OAAO,KAAKqoB,QAAL,CAAcroB,CAAC,GAAG,CAAlB,CAAP,KAAgC,WAAhC,IAA+C8c,SAAS,GAAG,KAAKuL,QAAL,CAAcroB,CAAC,GAAG,CAAlB,CAFzC,CAAvB;;EAIA,UAAI2pB,cAAJ,EAAoB;EAClB,aAAKF,SAAL,CAAe,KAAKnB,QAAL,CAActoB,CAAd,CAAf;EACD;EACF;EACF;;EAEDypB,EAAAA,SAAS,CAAC/rB,MAAD,EAAS;EAChB,SAAK6qB,aAAL,GAAqB7qB,MAArB;;EAEA,SAAKgsB,MAAL;;EAEA,UAAME,OAAO,GAAG9B,mBAAmB,CAAC1vB,KAApB,CAA0B,GAA1B,EACb+Q,GADa,CACTpR,QAAQ,IAAK,GAAEA,QAAS,oBAAmB2F,MAAO,MAAK3F,QAAS,UAAS2F,MAAO,IADvE,CAAhB;EAGA,UAAMmsB,IAAI,GAAG5hB,cAAc,CAACK,OAAf,CAAuBshB,OAAO,CAACxgB,IAAR,CAAa,GAAb,CAAvB,EAA0C,KAAK0D,OAAL,CAAapP,MAAvD,CAAb;EAEAmsB,IAAAA,IAAI,CAAC9uB,SAAL,CAAeoU,GAAf,CAAmBnJ,mBAAnB;;EACA,QAAI6jB,IAAI,CAAC9uB,SAAL,CAAeC,QAAf,CAAwBwsB,wBAAxB,CAAJ,EAAuD;EACrDvf,MAAAA,cAAc,CAACK,OAAf,CAAuB0f,0BAAvB,EAAiD6B,IAAI,CAACzkB,OAAL,CAAa2iB,mBAAb,CAAjD,EACGhtB,SADH,CACaoU,GADb,CACiBnJ,mBADjB;EAED,KAHD,MAGO;EACLiC,MAAAA,cAAc,CAACS,OAAf,CAAuBmhB,IAAvB,EAA6BnC,yBAA7B,EACG1tB,OADH,CACW8vB,SAAS,IAAI;EACpB;EACA;EACA7hB,QAAAA,cAAc,CAACW,IAAf,CAAoBkhB,SAApB,EAAgC,GAAEnC,kBAAmB,KAAIE,mBAAoB,EAA7E,EACG7tB,OADH,CACWovB,IAAI,IAAIA,IAAI,CAACruB,SAAL,CAAeoU,GAAf,CAAmBnJ,mBAAnB,CADnB,EAHoB;;EAOpBiC,QAAAA,cAAc,CAACW,IAAf,CAAoBkhB,SAApB,EAA+BlC,kBAA/B,EACG5tB,OADH,CACW+vB,OAAO,IAAI;EAClB9hB,UAAAA,cAAc,CAACM,QAAf,CAAwBwhB,OAAxB,EAAiCpC,kBAAjC,EACG3tB,OADH,CACWovB,IAAI,IAAIA,IAAI,CAACruB,SAAL,CAAeoU,GAAf,CAAmBnJ,mBAAnB,CADnB;EAED,SAJH;EAKD,OAbH;EAcD;;EAEDvG,IAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKkmB,cAA1B,EAA0Cd,cAA1C,EAA0D;EACxDrmB,MAAAA,aAAa,EAAEvD;EADyC,KAA1D;EAGD;;EAEDgsB,EAAAA,MAAM,GAAG;EACPzhB,IAAAA,cAAc,CAACC,IAAf,CAAoB4f,mBAApB,EAAyC,KAAKhb,OAAL,CAAapP,MAAtD,EACGwJ,MADH,CACU8iB,IAAI,IAAIA,IAAI,CAACjvB,SAAL,CAAeC,QAAf,CAAwBgL,mBAAxB,CADlB,EAEGhM,OAFH,CAEWgwB,IAAI,IAAIA,IAAI,CAACjvB,SAAL,CAAe+I,MAAf,CAAsBkC,mBAAtB,CAFnB;EAGD,GA3LmC;;;EA+Ld,SAAfjJ,eAAe,CAACnD,MAAD,EAAS;EAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;EAC3B,YAAMC,IAAI,GAAGqiB,SAAS,CAACtjB,mBAAV,CAA8B,IAA9B,EAAoCjL,MAApC,CAAb;;EAEA,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;EAC9B;EACD;;EAED,UAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,cAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;EACD;;EAEDkM,MAAAA,IAAI,CAAClM,MAAD,CAAJ;EACD,KAZM,CAAP;EAaD;;EA7MmC;EAgNtC;EACA;EACA;EACA;EACA;;;EAEA6F,YAAY,CAACkC,EAAb,CAAgB/I,MAAhB,EAAwBsS,mBAAxB,EAA6C,MAAM;EACjDjD,EAAAA,cAAc,CAACC,IAAf,CAAoBuf,iBAApB,EACGztB,OADH,CACWiwB,GAAG,IAAI,IAAI9B,SAAJ,CAAc8B,GAAd,CADlB;EAED,CAHD;EAKA;EACA;EACA;EACA;EACA;EACA;;EAEAztB,kBAAkB,CAAC2rB,SAAD,CAAlB;;ECpSA;EACA;EACA;EACA;EACA;EACA;EAYA;EACA;EACA;EACA;EACA;;EAEA,MAAMvrB,MAAI,GAAG,KAAb;EACA,MAAMyH,UAAQ,GAAG,QAAjB;EACA,MAAME,WAAS,GAAI,IAAGF,UAAS,EAA/B;EACA,MAAM0B,YAAY,GAAG,WAArB;EAEA,MAAMsL,YAAU,GAAI,OAAM9M,WAAU,EAApC;EACA,MAAM+M,cAAY,GAAI,SAAQ/M,WAAU,EAAxC;EACA,MAAM4M,YAAU,GAAI,OAAM5M,WAAU,EAApC;EACA,MAAM6M,aAAW,GAAI,QAAO7M,WAAU,EAAtC;EACA,MAAM2B,oBAAoB,GAAI,QAAO3B,WAAU,GAAEwB,YAAa,EAA9D;EAEA,MAAMmkB,wBAAwB,GAAG,eAAjC;EACA,MAAMlkB,iBAAiB,GAAG,QAA1B;EACA,MAAMT,iBAAe,GAAG,MAAxB;EACA,MAAMC,iBAAe,GAAG,MAAxB;EAEA,MAAMuiB,iBAAiB,GAAG,WAA1B;EACA,MAAML,uBAAuB,GAAG,mBAAhC;EACA,MAAMhc,eAAe,GAAG,SAAxB;EACA,MAAMye,kBAAkB,GAAG,uBAA3B;EACA,MAAMlkB,oBAAoB,GAAG,0EAA7B;EACA,MAAM+hB,wBAAwB,GAAG,kBAAjC;EACA,MAAMoC,8BAA8B,GAAG,iCAAvC;EAEA;EACA;EACA;EACA;EACA;;EAEA,MAAMC,GAAN,SAAkBpmB,aAAlB,CAAgC;EAC9B;EAEe,aAAJrH,IAAI,GAAG;EAChB,WAAOA,MAAP;EACD,GAL6B;;;EAS9B8V,EAAAA,IAAI,GAAG;EACL,QAAK,KAAKvO,QAAL,CAAc1I,UAAd,IACH,KAAK0I,QAAL,CAAc1I,UAAd,CAAyBlC,QAAzB,KAAsCsB,IAAI,CAACC,YADxC,IAEH,KAAKqJ,QAAL,CAAcpJ,SAAd,CAAwBC,QAAxB,CAAiCgL,iBAAjC,CAFF,EAEwD;EACtD;EACD;;EAED,QAAI6C,QAAJ;EACA,UAAMnL,MAAM,GAAGlF,sBAAsB,CAAC,KAAK2L,QAAN,CAArC;;EACA,UAAMmmB,WAAW,GAAG,KAAKnmB,QAAL,CAAciB,OAAd,CAAsBsiB,uBAAtB,CAApB;;EAEA,QAAI4C,WAAJ,EAAiB;EACf,YAAMC,YAAY,GAAGD,WAAW,CAAC5L,QAAZ,KAAyB,IAAzB,IAAiC4L,WAAW,CAAC5L,QAAZ,KAAyB,IAA1D,GAAiEyL,kBAAjE,GAAsFze,eAA3G;EACA7C,MAAAA,QAAQ,GAAGZ,cAAc,CAACC,IAAf,CAAoBqiB,YAApB,EAAkCD,WAAlC,CAAX;EACAzhB,MAAAA,QAAQ,GAAGA,QAAQ,CAACA,QAAQ,CAACpP,MAAT,GAAkB,CAAnB,CAAnB;EACD;;EAED,UAAM2c,SAAS,GAAGvN,QAAQ,GACxBpJ,YAAY,CAACyC,OAAb,CAAqB2G,QAArB,EAA+BwI,YAA/B,EAA2C;EACzCpQ,MAAAA,aAAa,EAAE,KAAKkD;EADqB,KAA3C,CADwB,GAIxB,IAJF;EAMA,UAAM0R,SAAS,GAAGpW,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCgN,YAApC,EAAgD;EAChElQ,MAAAA,aAAa,EAAE4H;EADiD,KAAhD,CAAlB;;EAIA,QAAIgN,SAAS,CAACtT,gBAAV,IAA+B6T,SAAS,KAAK,IAAd,IAAsBA,SAAS,CAAC7T,gBAAnE,EAAsF;EACpF;EACD;;EAED,SAAKknB,SAAL,CAAe,KAAKtlB,QAApB,EAA8BmmB,WAA9B;;EAEA,UAAMlX,QAAQ,GAAG,MAAM;EACrB3T,MAAAA,YAAY,CAACyC,OAAb,CAAqB2G,QAArB,EAA+ByI,cAA/B,EAA6C;EAC3CrQ,QAAAA,aAAa,EAAE,KAAKkD;EADuB,OAA7C;EAGA1E,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCiN,aAApC,EAAiD;EAC/CnQ,QAAAA,aAAa,EAAE4H;EADgC,OAAjD;EAGD,KAPD;;EASA,QAAInL,MAAJ,EAAY;EACV,WAAK+rB,SAAL,CAAe/rB,MAAf,EAAuBA,MAAM,CAACjC,UAA9B,EAA0C2X,QAA1C;EACD,KAFD,MAEO;EACLA,MAAAA,QAAQ;EACT;EACF,GAxD6B;;;EA4D9BqW,EAAAA,SAAS,CAAC3xB,OAAD,EAAU+a,SAAV,EAAqB3W,QAArB,EAA+B;EACtC,UAAMsuB,cAAc,GAAG3X,SAAS,KAAKA,SAAS,CAAC6L,QAAV,KAAuB,IAAvB,IAA+B7L,SAAS,CAAC6L,QAAV,KAAuB,IAA3D,CAAT,GACrBzW,cAAc,CAACC,IAAf,CAAoBiiB,kBAApB,EAAwCtX,SAAxC,CADqB,GAErB5K,cAAc,CAACM,QAAf,CAAwBsK,SAAxB,EAAmCnH,eAAnC,CAFF;EAIA,UAAM+e,MAAM,GAAGD,cAAc,CAAC,CAAD,CAA7B;EACA,UAAME,eAAe,GAAGxuB,QAAQ,IAAKuuB,MAAM,IAAIA,MAAM,CAAC1vB,SAAP,CAAiBC,QAAjB,CAA0BuK,iBAA1B,CAA/C;;EAEA,UAAM6N,QAAQ,GAAG,MAAM,KAAKuX,mBAAL,CAAyB7yB,OAAzB,EAAkC2yB,MAAlC,EAA0CvuB,QAA1C,CAAvB;;EAEA,QAAIuuB,MAAM,IAAIC,eAAd,EAA+B;EAC7BD,MAAAA,MAAM,CAAC1vB,SAAP,CAAiB+I,MAAjB,CAAwB0B,iBAAxB;;EACA,WAAKd,cAAL,CAAoB0O,QAApB,EAA8Btb,OAA9B,EAAuC,IAAvC;EACD,KAHD,MAGO;EACLsb,MAAAA,QAAQ;EACT;EACF;;EAEDuX,EAAAA,mBAAmB,CAAC7yB,OAAD,EAAU2yB,MAAV,EAAkBvuB,QAAlB,EAA4B;EAC7C,QAAIuuB,MAAJ,EAAY;EACVA,MAAAA,MAAM,CAAC1vB,SAAP,CAAiB+I,MAAjB,CAAwBkC,iBAAxB;EAEA,YAAM4kB,aAAa,GAAG3iB,cAAc,CAACK,OAAf,CAAuB8hB,8BAAvB,EAAuDK,MAAM,CAAChvB,UAA9D,CAAtB;;EAEA,UAAImvB,aAAJ,EAAmB;EACjBA,QAAAA,aAAa,CAAC7vB,SAAd,CAAwB+I,MAAxB,CAA+BkC,iBAA/B;EACD;;EAED,UAAIykB,MAAM,CAACzyB,YAAP,CAAoB,MAApB,MAAgC,KAApC,EAA2C;EACzCyyB,QAAAA,MAAM,CAACpkB,YAAP,CAAoB,eAApB,EAAqC,KAArC;EACD;EACF;;EAEDvO,IAAAA,OAAO,CAACiD,SAAR,CAAkBoU,GAAlB,CAAsBnJ,iBAAtB;;EACA,QAAIlO,OAAO,CAACE,YAAR,CAAqB,MAArB,MAAiC,KAArC,EAA4C;EAC1CF,MAAAA,OAAO,CAACuO,YAAR,CAAqB,eAArB,EAAsC,IAAtC;EACD;;EAED1K,IAAAA,MAAM,CAAC7D,OAAD,CAAN;;EAEA,QAAIA,OAAO,CAACiD,SAAR,CAAkBC,QAAlB,CAA2BuK,iBAA3B,CAAJ,EAAiD;EAC/CzN,MAAAA,OAAO,CAACiD,SAAR,CAAkBoU,GAAlB,CAAsB3J,iBAAtB;EACD;;EAED,QAAI0L,MAAM,GAAGpZ,OAAO,CAAC2D,UAArB;;EACA,QAAIyV,MAAM,IAAIA,MAAM,CAACwN,QAAP,KAAoB,IAAlC,EAAwC;EACtCxN,MAAAA,MAAM,GAAGA,MAAM,CAACzV,UAAhB;EACD;;EAED,QAAIyV,MAAM,IAAIA,MAAM,CAACnW,SAAP,CAAiBC,QAAjB,CAA0BkvB,wBAA1B,CAAd,EAAmE;EACjE,YAAMW,eAAe,GAAG/yB,OAAO,CAACsN,OAAR,CAAgB2iB,iBAAhB,CAAxB;;EAEA,UAAI8C,eAAJ,EAAqB;EACnB5iB,QAAAA,cAAc,CAACC,IAAf,CAAoB8f,wBAApB,EAA8C6C,eAA9C,EACG7wB,OADH,CACW8wB,QAAQ,IAAIA,QAAQ,CAAC/vB,SAAT,CAAmBoU,GAAnB,CAAuBnJ,iBAAvB,CADvB;EAED;;EAEDlO,MAAAA,OAAO,CAACuO,YAAR,CAAqB,eAArB,EAAsC,IAAtC;EACD;;EAED,QAAInK,QAAJ,EAAc;EACZA,MAAAA,QAAQ;EACT;EACF,GA3H6B;;;EA+HR,SAAfa,eAAe,CAACnD,MAAD,EAAS;EAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;EAC3B,YAAMC,IAAI,GAAGukB,GAAG,CAACxlB,mBAAJ,CAAwB,IAAxB,CAAb;;EAEA,UAAI,OAAOjL,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,YAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,gBAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;EACD;;EAEDkM,QAAAA,IAAI,CAAClM,MAAD,CAAJ;EACD;EACF,KAVM,CAAP;EAWD;;EA3I6B;EA8IhC;EACA;EACA;EACA;EACA;;;EAEA6F,YAAY,CAACkC,EAAb,CAAgBhK,QAAhB,EAA0BuO,oBAA1B,EAAgDD,oBAAhD,EAAsE,UAAU3G,KAAV,EAAiB;EACrF,MAAI,CAAC,GAAD,EAAM,MAAN,EAAcpH,QAAd,CAAuB,KAAKiN,OAA5B,CAAJ,EAA0C;EACxC7F,IAAAA,KAAK,CAAC6D,cAAN;EACD;;EAED,MAAIvI,UAAU,CAAC,IAAD,CAAd,EAAsB;EACpB;EACD;;EAED,QAAMkL,IAAI,GAAGukB,GAAG,CAACxlB,mBAAJ,CAAwB,IAAxB,CAAb;EACAiB,EAAAA,IAAI,CAAC4M,IAAL;EACD,CAXD;EAaA;EACA;EACA;EACA;EACA;EACA;;EAEAlW,kBAAkB,CAAC6tB,GAAD,CAAlB;;EC7NA;EACA;EACA;EACA;EACA;EACA;EAYA;EACA;EACA;EACA;EACA;;EAEA,MAAMztB,IAAI,GAAG,OAAb;EACA,MAAMyH,QAAQ,GAAG,UAAjB;EACA,MAAME,SAAS,GAAI,IAAGF,QAAS,EAA/B;EAEA,MAAM0mB,eAAe,GAAI,YAAWxmB,SAAU,EAA9C;EACA,MAAMymB,cAAc,GAAI,WAAUzmB,SAAU,EAA5C;EACA,MAAM8V,aAAa,GAAI,UAAS9V,SAAU,EAA1C;EACA,MAAM0mB,cAAc,GAAI,WAAU1mB,SAAU,EAA5C;EACA,MAAM8M,UAAU,GAAI,OAAM9M,SAAU,EAApC;EACA,MAAM+M,YAAY,GAAI,SAAQ/M,SAAU,EAAxC;EACA,MAAM4M,UAAU,GAAI,OAAM5M,SAAU,EAApC;EACA,MAAM6M,WAAW,GAAI,QAAO7M,SAAU,EAAtC;EAEA,MAAMgB,eAAe,GAAG,MAAxB;EACA,MAAM2lB,eAAe,GAAG,MAAxB;;EACA,MAAM1lB,eAAe,GAAG,MAAxB;EACA,MAAM2lB,kBAAkB,GAAG,SAA3B;EAEA,MAAMlhB,WAAW,GAAG;EAClByX,EAAAA,SAAS,EAAE,SADO;EAElB0J,EAAAA,QAAQ,EAAE,SAFQ;EAGlBvJ,EAAAA,KAAK,EAAE;EAHW,CAApB;EAMA,MAAMnY,OAAO,GAAG;EACdgY,EAAAA,SAAS,EAAE,IADG;EAEd0J,EAAAA,QAAQ,EAAE,IAFI;EAGdvJ,EAAAA,KAAK,EAAE;EAHO,CAAhB;EAMA;EACA;EACA;EACA;EACA;;EAEA,MAAMwJ,KAAN,SAAoBpnB,aAApB,CAAkC;EAChCC,EAAAA,WAAW,CAACpM,OAAD,EAAU8B,MAAV,EAAkB;EAC3B,UAAM9B,OAAN;EAEA,SAAKgV,OAAL,GAAe,KAAKC,UAAL,CAAgBnT,MAAhB,CAAf;EACA,SAAKkqB,QAAL,GAAgB,IAAhB;EACA,SAAKwH,oBAAL,GAA4B,KAA5B;EACA,SAAKC,uBAAL,GAA+B,KAA/B;;EACA,SAAKrH,aAAL;EACD,GAT+B;;;EAaV,aAAXja,WAAW,GAAG;EACvB,WAAOA,WAAP;EACD;;EAEiB,aAAPP,OAAO,GAAG;EACnB,WAAOA,OAAP;EACD;;EAEc,aAAJ9M,IAAI,GAAG;EAChB,WAAOA,IAAP;EACD,GAvB+B;;;EA2BhC8V,EAAAA,IAAI,GAAG;EACL,UAAMmD,SAAS,GAAGpW,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCgN,UAApC,CAAlB;;EAEA,QAAI0E,SAAS,CAACtT,gBAAd,EAAgC;EAC9B;EACD;;EAED,SAAKipB,aAAL;;EAEA,QAAI,KAAK1e,OAAL,CAAa4U,SAAjB,EAA4B;EAC1B,WAAKvd,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4B5J,eAA5B;EACD;;EAED,UAAM6N,QAAQ,GAAG,MAAM;EACrB,WAAKjP,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+BqnB,kBAA/B;;EACA1rB,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCiN,WAApC;;EAEA,WAAKqa,kBAAL;EACD,KALD;;EAOA,SAAKtnB,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+BonB,eAA/B,EApBK;;;EAqBLvvB,IAAAA,MAAM,CAAC,KAAKwI,QAAN,CAAN;;EACA,SAAKA,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4B3J,eAA5B;;EACA,SAAKrB,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4Bgc,kBAA5B;;EAEA,SAAKzmB,cAAL,CAAoB0O,QAApB,EAA8B,KAAKjP,QAAnC,EAA6C,KAAK2I,OAAL,CAAa4U,SAA1D;EACD;;EAEDjP,EAAAA,IAAI,GAAG;EACL,QAAI,CAAC,KAAKtO,QAAL,CAAcpJ,SAAd,CAAwBC,QAAxB,CAAiCwK,eAAjC,CAAL,EAAwD;EACtD;EACD;;EAED,UAAM4Q,SAAS,GAAG3W,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCkN,UAApC,CAAlB;;EAEA,QAAI+E,SAAS,CAAC7T,gBAAd,EAAgC;EAC9B;EACD;;EAED,UAAM6Q,QAAQ,GAAG,MAAM;EACrB,WAAKjP,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4B+b,eAA5B,EADqB;;;EAErB,WAAK/mB,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+BqnB,kBAA/B;;EACA,WAAKhnB,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0B,eAA/B;;EACA/F,MAAAA,YAAY,CAACyC,OAAb,CAAqB,KAAKiC,QAA1B,EAAoCmN,YAApC;EACD,KALD;;EAOA,SAAKnN,QAAL,CAAcpJ,SAAd,CAAwBoU,GAAxB,CAA4Bgc,kBAA5B;;EACA,SAAKzmB,cAAL,CAAoB0O,QAApB,EAA8B,KAAKjP,QAAnC,EAA6C,KAAK2I,OAAL,CAAa4U,SAA1D;EACD;;EAEDpd,EAAAA,OAAO,GAAG;EACR,SAAKknB,aAAL;;EAEA,QAAI,KAAKrnB,QAAL,CAAcpJ,SAAd,CAAwBC,QAAxB,CAAiCwK,eAAjC,CAAJ,EAAuD;EACrD,WAAKrB,QAAL,CAAcpJ,SAAd,CAAwB+I,MAAxB,CAA+B0B,eAA/B;EACD;;EAED,UAAMlB,OAAN;EACD,GArF+B;;;EAyFhCyI,EAAAA,UAAU,CAACnT,MAAD,EAAS;EACjBA,IAAAA,MAAM,GAAG,EACP,GAAG8P,OADI;EAEP,SAAG/C,WAAW,CAACI,iBAAZ,CAA8B,KAAK5C,QAAnC,CAFI;EAGP,UAAI,OAAOvK,MAAP,KAAkB,QAAlB,IAA8BA,MAA9B,GAAuCA,MAAvC,GAAgD,EAApD;EAHO,KAAT;EAMAF,IAAAA,eAAe,CAACkD,IAAD,EAAOhD,MAAP,EAAe,KAAKsK,WAAL,CAAiB+F,WAAhC,CAAf;EAEA,WAAOrQ,MAAP;EACD;;EAED6xB,EAAAA,kBAAkB,GAAG;EACnB,QAAI,CAAC,KAAK3e,OAAL,CAAase,QAAlB,EAA4B;EAC1B;EACD;;EAED,QAAI,KAAKE,oBAAL,IAA6B,KAAKC,uBAAtC,EAA+D;EAC7D;EACD;;EAED,SAAKzH,QAAL,GAAgBlmB,UAAU,CAAC,MAAM;EAC/B,WAAK6U,IAAL;EACD,KAFyB,EAEvB,KAAK3F,OAAL,CAAa+U,KAFU,CAA1B;EAGD;;EAED6J,EAAAA,cAAc,CAACpsB,KAAD,EAAQqsB,aAAR,EAAuB;EACnC,YAAQrsB,KAAK,CAACK,IAAd;EACE,WAAK,WAAL;EACA,WAAK,UAAL;EACE,aAAK2rB,oBAAL,GAA4BK,aAA5B;EACA;;EACF,WAAK,SAAL;EACA,WAAK,UAAL;EACE,aAAKJ,uBAAL,GAA+BI,aAA/B;EACA;EARJ;;EAaA,QAAIA,aAAJ,EAAmB;EACjB,WAAKH,aAAL;;EACA;EACD;;EAED,UAAMrb,WAAW,GAAG7Q,KAAK,CAAC2B,aAA1B;;EACA,QAAI,KAAKkD,QAAL,KAAkBgM,WAAlB,IAAiC,KAAKhM,QAAL,CAAcnJ,QAAd,CAAuBmV,WAAvB,CAArC,EAA0E;EACxE;EACD;;EAED,SAAKsb,kBAAL;EACD;;EAEDvH,EAAAA,aAAa,GAAG;EACdzkB,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B4mB,eAA/B,EAAgDzrB,KAAK,IAAI,KAAKosB,cAAL,CAAoBpsB,KAApB,EAA2B,IAA3B,CAAzD;EACAG,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B6mB,cAA/B,EAA+C1rB,KAAK,IAAI,KAAKosB,cAAL,CAAoBpsB,KAApB,EAA2B,KAA3B,CAAxD;EACAG,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+BkW,aAA/B,EAA8C/a,KAAK,IAAI,KAAKosB,cAAL,CAAoBpsB,KAApB,EAA2B,IAA3B,CAAvD;EACAG,IAAAA,YAAY,CAACkC,EAAb,CAAgB,KAAKwC,QAArB,EAA+B8mB,cAA/B,EAA+C3rB,KAAK,IAAI,KAAKosB,cAAL,CAAoBpsB,KAApB,EAA2B,KAA3B,CAAxD;EACD;;EAEDksB,EAAAA,aAAa,GAAG;EACdxc,IAAAA,YAAY,CAAC,KAAK8U,QAAN,CAAZ;EACA,SAAKA,QAAL,GAAgB,IAAhB;EACD,GAxJ+B;;;EA4JV,SAAf/mB,eAAe,CAACnD,MAAD,EAAS;EAC7B,WAAO,KAAKiM,IAAL,CAAU,YAAY;EAC3B,YAAMC,IAAI,GAAGulB,KAAK,CAACxmB,mBAAN,CAA0B,IAA1B,EAAgCjL,MAAhC,CAAb;;EAEA,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,YAAI,OAAOkM,IAAI,CAAClM,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,gBAAM,IAAIW,SAAJ,CAAe,oBAAmBX,MAAO,GAAzC,CAAN;EACD;;EAEDkM,QAAAA,IAAI,CAAClM,MAAD,CAAJ,CAAa,IAAb;EACD;EACF,KAVM,CAAP;EAWD;;EAxK+B;;EA2KlCmL,oBAAoB,CAACsmB,KAAD,CAApB;EAEA;EACA;EACA;EACA;EACA;EACA;;EAEA7uB,kBAAkB,CAAC6uB,KAAD,CAAlB;;EC/OA;EACA;EACA;EACA;EACA;EACA;AAeA,kBAAe;EACb5lB,EAAAA,KADa;EAEbU,EAAAA,MAFa;EAGbkG,EAAAA,QAHa;EAIbyF,EAAAA,QAJa;EAKbyD,EAAAA,QALa;EAMbqG,EAAAA,KANa;EAObiC,EAAAA,SAPa;EAQbuJ,EAAAA,OARa;EASbe,EAAAA,SATa;EAUbkC,EAAAA,GAVa;EAWbgB,EAAAA,KAXa;EAYbzH,EAAAA;EAZa,CAAf;;;;;;;;"}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js
new file mode 100644
index 0000000..e50d391
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js
@@ -0,0 +1,7 @@
+/*!
+  * Bootstrap v5.1.0 (https://getbootstrap.com/)
+  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+  */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){"use strict";function e(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(i){if("default"!==i){var s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:function(){return t[i]}})}})),e.default=t,Object.freeze(e)}var i=e(t);const s=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i="#"+i.split("#")[1]),e=i&&"#"!==i?i.trim():null}return e},n=t=>{const e=s(t);return e&&document.querySelector(e)?e:null},o=t=>{const e=s(t);return e?document.querySelector(e):null},r=t=>{t.dispatchEvent(new Event("transitionend"))},a=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),l=t=>a(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,c=(t,e,i)=>{Object.keys(i).forEach(s=>{const n=i[s],o=e[s],r=o&&a(o)?"element":null==(l=o)?""+l:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(n).test(r))throw new TypeError(`${t.toUpperCase()}: Option "${s}" provided type "${r}" but expected type "${n}".`)})},h=t=>!(!a(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),d=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),u=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?u(t.parentNode):null},g=()=>{},p=t=>{t.offsetHeight},f=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},_=[],m=()=>"rtl"===document.documentElement.dir,b=t=>{var e;e=()=>{const e=f();if(e){const i=t.NAME,s=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=s,t.jQueryInterface)}},"loading"===document.readyState?(_.length||document.addEventListener("DOMContentLoaded",()=>{_.forEach(t=>t())}),_.push(e)):e()},v=t=>{"function"==typeof t&&t()},y=(t,e,i=!0)=>{if(!i)return void v(t);const s=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const s=Number.parseFloat(e),n=Number.parseFloat(i);return s||n?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let n=!1;const o=({target:i})=>{i===e&&(n=!0,e.removeEventListener("transitionend",o),v(t))};e.addEventListener("transitionend",o),setTimeout(()=>{n||r(e)},s)},w=(t,e,i,s)=>{let n=t.indexOf(e);if(-1===n)return t[!i&&s?t.length-1:0];const o=t.length;return n+=i?1:-1,s&&(n=(n+o)%o),t[Math.max(0,Math.min(n,o-1))]},E=/[^.]*(?=\..*)\.|.*/,A=/\..*/,T=/::\d+$/,C={};let k=1;const L={mouseenter:"mouseover",mouseleave:"mouseout"},S=/^(mouseenter|mouseleave)/i,O=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function N(t,e){return e&&`${e}::${k++}`||t.uidEvent||k++}function D(t){const e=N(t);return t.uidEvent=e,C[e]=C[e]||{},C[e]}function I(t,e,i=null){const s=Object.keys(t);for(let n=0,o=s.length;n<o;n++){const o=t[s[n]];if(o.originalHandler===e&&o.delegationSelector===i)return o}return null}function x(t,e,i){const s="string"==typeof e,n=s?i:e;let o=j(t);return O.has(o)||(o=t),[s,n,o]}function P(t,e,i,s,n){if("string"!=typeof e||!t)return;if(i||(i=s,s=null),S.test(e)){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s?s=t(s):i=t(i)}const[o,r,a]=x(e,i,s),l=D(t),c=l[a]||(l[a]={}),h=I(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&n);const d=N(r,e.replace(E,"")),u=o?function(t,e,i){return function s(n){const o=t.querySelectorAll(e);for(let{target:r}=n;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return n.delegateTarget=r,s.oneOff&&H.off(t,n.type,e,i),i.apply(r,[n]);return null}}(t,i,s):function(t,e){return function i(s){return s.delegateTarget=t,i.oneOff&&H.off(t,s.type,e),e.apply(t,[s])}}(t,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=n,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function M(t,e,i,s,n){const o=I(e[i],s,n);o&&(t.removeEventListener(i,o,Boolean(n)),delete e[i][o.uidEvent])}function j(t){return t=t.replace(A,""),L[t]||t}const H={on(t,e,i,s){P(t,e,i,s,!1)},one(t,e,i,s){P(t,e,i,s,!0)},off(t,e,i,s){if("string"!=typeof e||!t)return;const[n,o,r]=x(e,i,s),a=r!==e,l=D(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void M(t,l,r,o,n?i:null)}c&&Object.keys(l).forEach(i=>{!function(t,e,i,s){const n=e[i]||{};Object.keys(n).forEach(o=>{if(o.includes(s)){const s=n[o];M(t,e,i,s.originalHandler,s.delegationSelector)}})}(t,l,i,e.slice(1))});const h=l[r]||{};Object.keys(h).forEach(i=>{const s=i.replace(T,"");if(!a||e.includes(s)){const e=h[i];M(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,i){if("string"!=typeof e||!t)return null;const s=f(),n=j(e),o=e!==n,r=O.has(n);let a,l=!0,c=!0,h=!1,d=null;return o&&s&&(a=s.Event(e,i),s(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(n,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach(t=>{Object.defineProperty(d,t,{get:()=>i[t]})}),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},B=new Map;var z={set(t,e,i){B.has(t)||B.set(t,new Map);const s=B.get(t);s.has(e)||0===s.size?s.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(t,e)=>B.has(t)&&B.get(t).get(e)||null,remove(t,e){if(!B.has(t))return;const i=B.get(t);i.delete(e),0===i.size&&B.delete(t)}};class R{constructor(t){(t=l(t))&&(this._element=t,z.set(this._element,this.constructor.DATA_KEY,this))}dispose(){z.remove(this._element,this.constructor.DATA_KEY),H.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(t=>{this[t]=null})}_queueCallback(t,e,i=!0){y(t,e,i)}static getInstance(t){return z.get(l(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.1.0"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return"bs."+this.NAME}static get EVENT_KEY(){return"."+this.DATA_KEY}}const F=(t,e="hide")=>{const i="click.dismiss"+t.EVENT_KEY,s=t.NAME;H.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),d(this))return;const n=o(this)||this.closest("."+s);t.getOrCreateInstance(n)[e]()}))};class W extends R{static get NAME(){return"alert"}close(){if(H.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,t)}_destroyElement(){this._element.remove(),H.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=W.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}F(W,"close"),b(W);class $ extends R{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=$.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function q(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function U(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}H.on(document,"click.bs.button.data-api",'[data-bs-toggle="button"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle="button"]');$.getOrCreateInstance(e).toggle()}),b($);const K={setDataAttribute(t,e,i){t.setAttribute("data-bs-"+U(e),i)},removeDataAttribute(t,e){t.removeAttribute("data-bs-"+U(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith("bs")).forEach(i=>{let s=i.replace(/^bs/,"");s=s.charAt(0).toLowerCase()+s.slice(1,s.length),e[s]=q(t.dataset[i])}),e},getDataAttribute:(t,e)=>q(t.getAttribute("data-bs-"+U(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},V={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const i=[];let s=t.parentNode;for(;s&&s.nodeType===Node.ELEMENT_NODE&&3!==s.nodeType;)s.matches(e)&&i.push(s),s=s.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(t=>t+':not([tabindex^="-"])').join(", ");return this.find(e,t).filter(t=>!d(t)&&h(t))}},X={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},Y={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Q="next",G="prev",Z="left",J="right",tt={ArrowLeft:J,ArrowRight:Z};class et extends R{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=V.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return X}static get NAME(){return"carousel"}next(){this._slide(Q)}nextWhenVisible(){!document.hidden&&h(this._element)&&this.next()}prev(){this._slide(G)}pause(t){t||(this._isPaused=!0),V.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(r(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=V.findOne(".active.carousel-item",this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void H.one(this._element,"slid.bs.carousel",()=>this.to(t));if(e===t)return this.pause(),void this.cycle();const i=t>e?Q:G;this._slide(i,this._items[t])}_getConfig(t){return t={...X,...K.getDataAttributes(this._element),..."object"==typeof t?t:{}},c("carousel",t,Y),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?J:Z)}_addEventListeners(){this._config.keyboard&&H.on(this._element,"keydown.bs.carousel",t=>this._keydown(t)),"hover"===this._config.pause&&(H.on(this._element,"mouseenter.bs.carousel",t=>this.pause(t)),H.on(this._element,"mouseleave.bs.carousel",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},e=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},i=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};V.find(".carousel-item img",this._element).forEach(t=>{H.on(t,"dragstart.bs.carousel",t=>t.preventDefault())}),this._pointerEvent?(H.on(this._element,"pointerdown.bs.carousel",e=>t(e)),H.on(this._element,"pointerup.bs.carousel",t=>i(t)),this._element.classList.add("pointer-event")):(H.on(this._element,"touchstart.bs.carousel",e=>t(e)),H.on(this._element,"touchmove.bs.carousel",t=>e(t)),H.on(this._element,"touchend.bs.carousel",t=>i(t)))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=tt[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(t){return this._items=t&&t.parentNode?V.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const i=t===Q;return w(this._items,e,i,this._config.wrap)}_triggerSlideEvent(t,e){const i=this._getItemIndex(t),s=this._getItemIndex(V.findOne(".active.carousel-item",this._element));return H.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:s,to:i})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=V.findOne(".active",this._indicatorsElement);e.classList.remove("active"),e.removeAttribute("aria-current");const i=V.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e<i.length;e++)if(Number.parseInt(i[e].getAttribute("data-bs-slide-to"),10)===this._getItemIndex(t)){i[e].classList.add("active"),i[e].setAttribute("aria-current","true");break}}}_updateInterval(){const t=this._activeElement||V.findOne(".active.carousel-item",this._element);if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}_slide(t,e){const i=this._directionToOrder(t),s=V.findOne(".active.carousel-item",this._element),n=this._getItemIndex(s),o=e||this._getItemByOrder(i,s),r=this._getItemIndex(o),a=Boolean(this._interval),l=i===Q,c=l?"carousel-item-start":"carousel-item-end",h=l?"carousel-item-next":"carousel-item-prev",d=this._orderToDirection(i);if(o&&o.classList.contains("active"))return void(this._isSliding=!1);if(this._isSliding)return;if(this._triggerSlideEvent(o,d).defaultPrevented)return;if(!s||!o)return;this._isSliding=!0,a&&this.pause(),this._setActiveIndicatorElement(o),this._activeElement=o;const u=()=>{H.trigger(this._element,"slid.bs.carousel",{relatedTarget:o,direction:d,from:n,to:r})};if(this._element.classList.contains("slide")){o.classList.add(h),p(o),s.classList.add(c),o.classList.add(c);const t=()=>{o.classList.remove(c,h),o.classList.add("active"),s.classList.remove("active",h,c),this._isSliding=!1,setTimeout(u,0)};this._queueCallback(t,s,!0)}else s.classList.remove("active"),o.classList.add("active"),this._isSliding=!1,u();a&&this.cycle()}_directionToOrder(t){return[J,Z].includes(t)?m()?t===Z?G:Q:t===Z?Q:G:t}_orderToDirection(t){return[Q,G].includes(t)?m()?t===G?Z:J:t===G?J:Z:t}static carouselInterface(t,e){const i=et.getOrCreateInstance(t,e);let{_config:s}=i;"object"==typeof e&&(s={...s,...e});const n="string"==typeof e?e:s.slide;if("number"==typeof e)i.to(e);else if("string"==typeof n){if(void 0===i[n])throw new TypeError(`No method named "${n}"`);i[n]()}else s.interval&&s.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){et.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=o(this);if(!e||!e.classList.contains("carousel"))return;const i={...K.getDataAttributes(e),...K.getDataAttributes(this)},s=this.getAttribute("data-bs-slide-to");s&&(i.interval=!1),et.carouselInterface(e,i),s&&et.getInstance(e).to(s),t.preventDefault()}}H.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",et.dataApiClickHandler),H.on(window,"load.bs.carousel.data-api",()=>{const t=V.find('[data-bs-ride="carousel"]');for(let e=0,i=t.length;e<i;e++)et.carouselInterface(t[e],et.getInstance(t[e]))}),b(et);const it={toggle:!0,parent:null},st={toggle:"boolean",parent:"(null|element)"};class nt extends R{constructor(t,e){super(t),this._isTransitioning=!1,this._config=this._getConfig(e),this._triggerArray=[];const i=V.find('[data-bs-toggle="collapse"]');for(let t=0,e=i.length;t<e;t++){const e=i[t],s=n(e),o=V.find(s).filter(t=>t===this._element);null!==s&&o.length&&(this._selector=s,this._triggerArray.push(e))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return it}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t,e=[];if(this._config.parent){const t=V.find(".collapse .collapse",this._config.parent);e=V.find(".show, .collapsing",this._config.parent).filter(e=>!t.includes(e))}const i=V.findOne(this._selector);if(e.length){const s=e.find(t=>i!==t);if(t=s?nt.getInstance(s):null,t&&t._isTransitioning)return}if(H.trigger(this._element,"show.bs.collapse").defaultPrevented)return;e.forEach(e=>{i!==e&&nt.getOrCreateInstance(e,{toggle:!1}).hide(),t||z.set(e,"bs.collapse",null)});const s=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[s]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n="scroll"+(s[0].toUpperCase()+s.slice(1));this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[s]="",H.trigger(this._element,"shown.bs.collapse")},this._element,!0),this._element.style[s]=this._element[n]+"px"}hide(){if(this._isTransitioning||!this._isShown())return;if(H.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",p(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const e=this._triggerArray.length;for(let t=0;t<e;t++){const e=this._triggerArray[t],i=o(e);i&&!this._isShown(i)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),H.trigger(this._element,"hidden.bs.collapse")},this._element,!0)}_isShown(t=this._element){return t.classList.contains("show")}_getConfig(t){return(t={...it,...K.getDataAttributes(this._element),...t}).toggle=Boolean(t.toggle),t.parent=l(t.parent),c("collapse",t,st),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=V.find(".collapse .collapse",this._config.parent);V.find('[data-bs-toggle="collapse"]',this._config.parent).filter(e=>!t.includes(e)).forEach(t=>{const e=o(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))})}_addAriaAndCollapsedClass(t,e){t.length&&t.forEach(t=>{e?t.classList.remove("collapsed"):t.classList.add("collapsed"),t.setAttribute("aria-expanded",e)})}static jQueryInterface(t){return this.each((function(){const e={};"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1);const i=nt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}H.on(document,"click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=n(this);V.find(e).forEach(t=>{nt.getOrCreateInstance(t,{toggle:!1}).toggle()})})),b(nt);const ot=new RegExp("ArrowUp|ArrowDown|Escape"),rt=m()?"top-end":"top-start",at=m()?"top-start":"top-end",lt=m()?"bottom-end":"bottom-start",ct=m()?"bottom-start":"bottom-end",ht=m()?"left-start":"right-start",dt=m()?"right-start":"left-start",ut={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},gt={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"};class pt extends R{constructor(t,e){super(t),this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar()}static get Default(){return ut}static get DefaultType(){return gt}static get NAME(){return"dropdown"}toggle(){return this._isShown()?this.hide():this.show()}show(){if(d(this._element)||this._isShown(this._menu))return;const t={relatedTarget:this._element};if(H.trigger(this._element,"show.bs.dropdown",t).defaultPrevented)return;const e=pt.getParentFromElement(this._element);this._inNavbar?K.setDataAttribute(this._menu,"popper","none"):this._createPopper(e),"ontouchstart"in document.documentElement&&!e.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(t=>H.on(t,"mouseover",g)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add("show"),this._element.classList.add("show"),H.trigger(this._element,"shown.bs.dropdown",t)}hide(){if(d(this._element)||!this._isShown(this._menu))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){H.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>H.off(t,"mouseover",g)),this._popper&&this._popper.destroy(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),K.removeDataAttribute(this._menu,"popper"),H.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...K.getDataAttributes(this._element),...t},c("dropdown",t,this.constructor.DefaultType),"object"==typeof t.reference&&!a(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError("dropdown".toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return t}_createPopper(t){if(void 0===i)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:a(this._config.reference)?e=l(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const s=this._getPopperConfig(),n=s.modifiers.find(t=>"applyStyles"===t.name&&!1===t.enabled);this._popper=i.createPopper(e,this._menu,s),n&&K.setDataAttribute(this._menu,"popper","static")}_isShown(t=this._element){return t.classList.contains("show")}_getMenuElement(){return V.next(this._element,".dropdown-menu")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ht;if(t.classList.contains("dropstart"))return dt;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?at:rt:e?ct:lt}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=V.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(h);i.length&&w(i,e,"ArrowDown"===t,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=pt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(t&&(2===t.button||"keyup"===t.type&&"Tab"!==t.key))return;const e=V.find('[data-bs-toggle="dropdown"]');for(let i=0,s=e.length;i<s;i++){const s=pt.getInstance(e[i]);if(!s||!1===s._config.autoClose)continue;if(!s._isShown())continue;const n={relatedTarget:s._element};if(t){const e=t.composedPath(),i=e.includes(s._menu);if(e.includes(s._element)||"inside"===s._config.autoClose&&!i||"outside"===s._config.autoClose&&i)continue;if(s._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;"click"===t.type&&(n.clickEvent=t)}s._completeHide(n)}}static getParentFromElement(t){return o(t)||t.parentNode}static dataApiKeydownHandler(t){if(/input|textarea/i.test(t.target.tagName)?"Space"===t.key||"Escape"!==t.key&&("ArrowDown"!==t.key&&"ArrowUp"!==t.key||t.target.closest(".dropdown-menu")):!ot.test(t.key))return;const e=this.classList.contains("show");if(!e&&"Escape"===t.key)return;if(t.preventDefault(),t.stopPropagation(),d(this))return;const i=this.matches('[data-bs-toggle="dropdown"]')?this:V.prev(this,'[data-bs-toggle="dropdown"]')[0],s=pt.getOrCreateInstance(i);if("Escape"!==t.key)return"ArrowUp"===t.key||"ArrowDown"===t.key?(e||s.show(),void s._selectMenuItem(t)):void(e&&"Space"!==t.key||pt.clearMenus());s.hide()}}H.on(document,"keydown.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',pt.dataApiKeydownHandler),H.on(document,"keydown.bs.dropdown.data-api",".dropdown-menu",pt.dataApiKeydownHandler),H.on(document,"click.bs.dropdown.data-api",pt.clearMenus),H.on(document,"keyup.bs.dropdown.data-api",pt.clearMenus),H.on(document,"click.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',(function(t){t.preventDefault(),pt.getOrCreateInstance(this).toggle()})),b(pt);class ft{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",e=>e+t),this._setElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight",e=>e+t),this._setElementAttributes(".sticky-top","marginRight",e=>e-t)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const s=this.getWidth();this._applyManipulationCallback(t,t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+s)return;this._saveInitialAttribute(t,e);const n=window.getComputedStyle(t)[e];t.style[e]=i(Number.parseFloat(n))+"px"})}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight"),this._resetElementAttributes(".sticky-top","marginRight")}_saveInitialAttribute(t,e){const i=t.style[e];i&&K.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,t=>{const i=K.getDataAttribute(t,e);void 0===i?t.style.removeProperty(e):(K.removeDataAttribute(t,e),t.style[e]=i)})}_applyManipulationCallback(t,e){a(t)?e(t):V.find(t,this._element).forEach(e)}isOverflowing(){return this.getWidth()>0}}const _t={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},mt={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"};class bt{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&p(this._getElement()),this._getElement().classList.add("show"),this._emulateAnimation(()=>{v(t)})):v(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),v(t)})):v(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={..._t,..."object"==typeof t?t:{}}).rootElement=l(t.rootElement),c("backdrop",t,mt),t}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),H.on(this._getElement(),"mousedown.bs.backdrop",()=>{v(this._config.clickCallback)}),this._isAppended=!0)}dispose(){this._isAppended&&(H.off(this._element,"mousedown.bs.backdrop"),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){y(t,this._getElement(),this._config.isAnimated)}}const vt={trapElement:null,autofocus:!0},yt={trapElement:"element",autofocus:"boolean"};class wt{constructor(t){this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:t,autofocus:e}=this._config;this._isActive||(e&&t.focus(),H.off(document,".bs.focustrap"),H.on(document,"focusin.bs.focustrap",t=>this._handleFocusin(t)),H.on(document,"keydown.tab.bs.focustrap",t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,H.off(document,".bs.focustrap"))}_handleFocusin(t){const{target:e}=t,{trapElement:i}=this._config;if(e===document||e===i||i.contains(e))return;const s=V.focusableChildren(i);0===s.length?i.focus():"backward"===this._lastTabNavDirection?s[s.length-1].focus():s[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?"backward":"forward")}_getConfig(t){return t={...vt,..."object"==typeof t?t:{}},c("focustrap",t,yt),t}}const Et={backdrop:!0,keyboard:!0,focus:!0},At={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"};class Tt extends R{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=V.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new ft}static get Default(){return Et}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||H.trigger(this._element,"show.bs.modal",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add("modal-open"),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),H.on(this._dialog,"mousedown.dismiss.bs.modal",()=>{H.one(this._element,"mouseup.dismiss.bs.modal",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(){if(!this._isShown||this._isTransitioning)return;if(H.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const t=this._isAnimated();t&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove("show"),H.off(this._element,"click.dismiss.bs.modal"),H.off(this._dialog,"mousedown.dismiss.bs.modal"),this._queueCallback(()=>this._hideModal(),this._element,t)}dispose(){[window,this._dialog].forEach(t=>H.off(t,".bs.modal")),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new bt({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new wt({trapElement:this._element})}_getConfig(t){return t={...Et,...K.getDataAttributes(this._element),..."object"==typeof t?t:{}},c("modal",t,At),t}_showElement(t){const e=this._isAnimated(),i=V.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),e&&p(this._element),this._element.classList.add("show"),this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,H.trigger(this._element,"shown.bs.modal",{relatedTarget:t})},this._dialog,e)}_setEscapeEvent(){this._isShown?H.on(this._element,"keydown.dismiss.bs.modal",t=>{this._config.keyboard&&"Escape"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==t.key||this._triggerBackdropTransition()}):H.off(this._element,"keydown.dismiss.bs.modal")}_setResizeEvent(){this._isShown?H.on(window,"resize.bs.modal",()=>this._adjustDialog()):H.off(window,"resize.bs.modal")}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._scrollBar.reset(),H.trigger(this._element,"hidden.bs.modal")})}_showBackdrop(t){H.on(this._element,"click.dismiss.bs.modal",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())}),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(H.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:i}=this._element,s=e>document.documentElement.clientHeight;!s&&"hidden"===i.overflowY||t.contains("modal-static")||(s||(i.overflowY="hidden"),t.add("modal-static"),this._queueCallback(()=>{t.remove("modal-static"),s||this._queueCallback(()=>{i.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;(!i&&t&&!m()||i&&!t&&m())&&(this._element.style.paddingLeft=e+"px"),(i&&!t&&!m()||!i&&t&&m())&&(this._element.style.paddingRight=e+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Tt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}H.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=o(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),H.one(e,"show.bs.modal",t=>{t.defaultPrevented||H.one(e,"hidden.bs.modal",()=>{h(this)&&this.focus()})}),Tt.getOrCreateInstance(e).toggle(this)})),F(Tt),b(Tt);const Ct={backdrop:!0,keyboard:!0,scroll:!1},kt={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"};class Lt extends R{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return"offcanvas"}static get Default(){return Ct}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||H.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new ft).hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),this._queueCallback(()=>{this._config.scroll||this._focustrap.activate(),H.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&(H.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),this._backdrop.hide(),this._queueCallback(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new ft).reset(),H.trigger(this._element,"hidden.bs.offcanvas")},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(t){return t={...Ct,...K.getDataAttributes(this._element),..."object"==typeof t?t:{}},c("offcanvas",t,kt),t}_initializeBackDrop(){return new bt({className:"offcanvas-backdrop",isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new wt({trapElement:this._element})}_addEventListeners(){H.on(this._element,"keydown.dismiss.bs.offcanvas",t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()})}static jQueryInterface(t){return this.each((function(){const e=Lt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}H.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=o(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),d(this))return;H.one(e,"hidden.bs.offcanvas",()=>{h(this)&&this.focus()});const i=V.findOne(".offcanvas.show");i&&i!==e&&Lt.getInstance(i).hide(),Lt.getOrCreateInstance(e).toggle(this)})),H.on(window,"load.bs.offcanvas.data-api",()=>V.find(".offcanvas.show").forEach(t=>Lt.getOrCreateInstance(t).show())),F(Lt),b(Lt);const St=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Ot=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,Nt=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Dt=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!St.has(i)||Boolean(Ot.test(t.nodeValue)||Nt.test(t.nodeValue));const s=e.filter(t=>t instanceof RegExp);for(let t=0,e=s.length;t<e;t++)if(s[t].test(i))return!0;return!1};function It(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const s=(new window.DOMParser).parseFromString(t,"text/html"),n=Object.keys(e),o=[].concat(...s.body.querySelectorAll("*"));for(let t=0,i=o.length;t<i;t++){const i=o[t],s=i.nodeName.toLowerCase();if(!n.includes(s)){i.remove();continue}const r=[].concat(...i.attributes),a=[].concat(e["*"]||[],e[s]||[]);r.forEach(t=>{Dt(t,a)||i.removeAttribute(t.nodeName)})}return s.body.innerHTML}const xt=new Set(["sanitize","allowList","sanitizeFn"]),Pt={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},Mt={AUTO:"auto",TOP:"top",RIGHT:m()?"left":"right",BOTTOM:"bottom",LEFT:m()?"right":"left"},jt={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ht={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class Bt extends R{constructor(t,e){if(void 0===i)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return jt}static get NAME(){return"tooltip"}static get Event(){return Ht}static get DefaultType(){return Pt}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),H.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=H.trigger(this._element,this.constructor.Event.SHOW),e=u(this._element),s=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!s)return;const n=this.getTipElement(),o=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME);n.setAttribute("id",o),this._element.setAttribute("aria-describedby",o),this._config.animation&&n.classList.add("fade");const r="function"==typeof this._config.placement?this._config.placement.call(this,n,this._element):this._config.placement,a=this._getAttachment(r);this._addAttachmentClass(a);const{container:l}=this._config;z.set(n,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(l.append(n),H.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=i.createPopper(this._element,n,this._getPopperConfig(a)),n.classList.add("show");const c=this._resolvePossibleFunction(this._config.customClass);c&&n.classList.add(...c.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{H.on(t,"mouseover",g)});const h=this.tip.classList.contains("fade");this._queueCallback(()=>{const t=this._hoverState;this._hoverState=null,H.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)},this.tip,h)}hide(){if(!this._popper)return;const t=this.getTipElement();if(H.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>H.off(t,"mouseover",g)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains("fade");this._queueCallback(()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),H.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))},this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");t.innerHTML=this._config.template;const e=t.children[0];return this.setContent(e),e.classList.remove("fade","show"),this.tip=e,this.tip}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".tooltip-inner")}_sanitizeAndSetContent(t,e,i){const s=V.findOne(i,t);e||!s?this.setElementContent(s,e):s.remove()}setElementContent(t,e){if(null!==t)return a(e)?(e=l(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.append(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=It(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){const t=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(t)}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){return e||this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(t)}`)}_getAttachment(t){return Mt[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(t=>{if("click"===t)H.on(this._element,this.constructor.Event.CLICK,this._config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;H.on(this._element,e,this._config.selector,t=>this._enter(t)),H.on(this._element,i,this._config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},H.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e._config.delay&&e._config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e._config.delay&&e._config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=K.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{xt.has(t)&&delete e[t]}),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:l(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),c("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=It(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=t.getAttribute("class").match(e);null!==i&&i.length>0&&i.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){const e=Bt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}b(Bt);const zt={...Bt.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'},Rt={...Bt.DefaultType,content:"(string|element|function)"},Ft={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class Wt extends Bt{static get Default(){return zt}static get NAME(){return"popover"}static get Event(){return Ft}static get DefaultType(){return Rt}isWithContent(){return this.getTitle()||this._getContent()}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".popover-header"),this._sanitizeAndSetContent(t,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(t){return this.each((function(){const e=Wt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}b(Wt);const $t={offset:10,method:"auto",target:""},qt={offset:"number",method:"string",target:"(string|element)"},Ut=".nav-link, .list-group-item, .dropdown-item";class Kt extends R{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,H.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return $t}static get NAME(){return"scrollspy"}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":"position",e="auto"===this._config.method?t:this._config.method,i="position"===e?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),V.find(Ut,this._config.target).map(t=>{const s=n(t),o=s?V.findOne(s):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[K[e](o).top+i,s]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){H.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){return(t={...$t,...K.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target=l(t.target)||document.documentElement,c("scrollspy",t,qt),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t<this._offsets[e+1])&&this._activate(this._targets[e])}}_activate(t){this._activeTarget=t,this._clear();const e=Ut.split(",").map(e=>`${e}[data-bs-target="${t}"],${e}[href="${t}"]`),i=V.findOne(e.join(","),this._config.target);i.classList.add("active"),i.classList.contains("dropdown-item")?V.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add("active"):V.parents(i,".nav, .list-group").forEach(t=>{V.prev(t,".nav-link, .list-group-item").forEach(t=>t.classList.add("active")),V.prev(t,".nav-item").forEach(t=>{V.children(t,".nav-link").forEach(t=>t.classList.add("active"))})}),H.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){V.find(Ut,this._config.target).filter(t=>t.classList.contains("active")).forEach(t=>t.classList.remove("active"))}static jQueryInterface(t){return this.each((function(){const e=Kt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}H.on(window,"load.bs.scrollspy.data-api",()=>{V.find('[data-bs-spy="scroll"]').forEach(t=>new Kt(t))}),b(Kt);class Vt extends R{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active"))return;let t;const e=o(this._element),i=this._element.closest(".nav, .list-group");if(i){const e="UL"===i.nodeName||"OL"===i.nodeName?":scope > li > .active":".active";t=V.find(e,i),t=t[t.length-1]}const s=t?H.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(H.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==s&&s.defaultPrevented)return;this._activate(this._element,i);const n=()=>{H.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),H.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,n):n()}_activate(t,e,i){const s=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?V.children(e,".active"):V.find(":scope > li > .active",e))[0],n=i&&s&&s.classList.contains("fade"),o=()=>this._transitionComplete(t,s,i);s&&n?(s.classList.remove("show"),this._queueCallback(o,t,!0)):o()}_transitionComplete(t,e,i){if(e){e.classList.remove("active");const t=V.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),p(t),t.classList.contains("fade")&&t.classList.add("show");let s=t.parentNode;if(s&&"LI"===s.nodeName&&(s=s.parentNode),s&&s.classList.contains("dropdown-menu")){const e=t.closest(".dropdown");e&&V.find(".dropdown-toggle",e).forEach(t=>t.classList.add("active")),t.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(t){return this.each((function(){const e=Vt.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}H.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),d(this)||Vt.getOrCreateInstance(this).show()})),b(Vt);const Xt={animation:"boolean",autohide:"boolean",delay:"number"},Yt={animation:!0,autohide:!0,delay:5e3};class Qt extends R{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return Xt}static get Default(){return Yt}static get NAME(){return"toast"}show(){H.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),p(this._element),this._element.classList.add("show"),this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),H.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this._element.classList.contains("show")&&(H.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove("showing"),this._element.classList.remove("show"),H.trigger(this._element,"hidden.bs.toast")},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),super.dispose()}_getConfig(t){return t={...Yt,...K.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},c("toast",t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){H.on(this._element,"mouseover.bs.toast",t=>this._onInteraction(t,!0)),H.on(this._element,"mouseout.bs.toast",t=>this._onInteraction(t,!1)),H.on(this._element,"focusin.bs.toast",t=>this._onInteraction(t,!0)),H.on(this._element,"focusout.bs.toast",t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Qt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return F(Qt),b(Qt),{Alert:W,Button:$,Carousel:et,Collapse:nt,Dropdown:pt,Modal:Tt,Offcanvas:Lt,Popover:Wt,ScrollSpy:Kt,Tab:Vt,Toast:Qt,Tooltip:Bt}}));
+//# sourceMappingURL=bootstrap.min.js.map
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map
new file mode 100644
index 0000000..75d817a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"names":["getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","document","querySelector","getElementFromSelector","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","toString","call","match","toLowerCase","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getComputedStyle","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","noop","reflow","offsetHeight","getjQuery","jQuery","window","body","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","addEventListener","push","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","Math","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","uid","getEvent","findHandler","events","delegationSelector","uidEventList","i","len","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","has","addHandler","oneOff","wrapFn","relatedTarget","delegateTarget","this","handlers","previousFn","replace","domElements","querySelectorAll","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","on","one","inNamespace","isNamespace","elementEvent","namespace","storeElementEvent","handlerKey","removeNamespacedHandlers","slice","keyHandlers","trigger","args","isNative","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","BaseComponent","constructor","_element","DATA_KEY","dispose","EVENT_KEY","getOwnPropertyNames","propertyName","_queueCallback","isAnimated","[object Object]","getInstance","VERSION","Error","enableDismissTrigger","component","method","clickEvent","tagName","closest","getOrCreateInstance","Alert","close","_destroyElement","each","data","undefined","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","pageYOffset","left","pageXOffset","position","offsetTop","offsetLeft","SelectorEngine","find","concat","Element","prototype","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","Carousel","super","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","order","_handleSwipe","absDeltax","abs","direction","_keydown","_addTouchEventListeners","start","pointerType","touches","clientX","move","end","clearTimeout","itemImg","e","add","_getItemByOrder","isNext","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","triggerSlidEvent","completeCallBack","action","ride","carouselInterface","slideIndex","dataApiClickHandler","carousels","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activesData","actives","container","tempActiveData","elemActive","dimension","_getDimension","style","scrollSize","triggerArrayLength","selected","triggerArray","isOpen","REGEXP_KEYDOWN","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","boundary","reference","display","popperConfig","autoClose","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","getParentFromElement","_createPopper","focus","_completeHide","destroy","update","Popper","referenceElement","_getPopperConfig","isDisplayStatic","modifiers","modifier","enabled","createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","placement","options","_selectMenuItem","items","toggles","context","composedPath","isMenuTarget","isActive","stopPropagation","getToggleButton","clearMenus","dataApiKeydownHandler","ScrollBarHelper","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","overflow","styleProp","scrollbarWidth","_applyManipulationCallback","reset","_resetElementAttributes","actualValue","removeProperty","callBack","isOverflowing","className","rootElement","clickCallback","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","trapElement","autofocus","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_ignoreBackdropClick","_scrollBar","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","scrollTop","_triggerBackdropTransition","_resetAdjustments","currentTarget","scrollHeight","isModalOverflowing","clientHeight","overflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","scroll","Offcanvas","visibility","blur","allReadyOpen","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","allowlistKeys","elName","attributeList","allowedAttributes","innerHTML","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","*","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","prefix","floor","random","getElementById","getUID","attachment","_getAttachment","_addAttachmentClass","_resolvePossibleFunction","prevHoverState","_cleanTipClass","getTitle","setContent","_sanitizeAndSetContent","content","templateElement","setElementContent","textContent","updateAttachment","_getDelegateConfig","phase","_handlePopperPlacementChange","onFirstUpdate","_getBasicClassPrefix","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","basicClassPrefixRegex","tabClass","token","tClass","state","popper","Popover","_getContent","SELECTOR_LINK_ITEMS","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","height","item","sort","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","listGroup","navItem","node","spy","Tab","listElement","itemSelector","hideEvent","complete","active","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","dropdown","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n  if (obj === null || obj === undefined) {\n    return `${obj}`\n  }\n\n  return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttr = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n      hrefAttr = `#${hrefAttr.split('#')[1]}`\n    }\n\n    selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n  }\n\n  return selector\n}\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element)\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null\n  }\n\n  return null\n}\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element)\n\n  return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => {\n  if (!obj || typeof obj !== 'object') {\n    return false\n  }\n\n  if (typeof obj.jquery !== 'undefined') {\n    obj = obj[0]\n  }\n\n  return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n  if (isElement(obj)) { // it's a jQuery object or a node element\n    return obj.jquery ? obj[0] : obj\n  }\n\n  if (typeof obj === 'string' && obj.length > 0) {\n    return document.querySelector(obj)\n  }\n\n  return null\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n  Object.keys(configTypes).forEach(property => {\n    const expectedTypes = configTypes[property]\n    const value = config[property]\n    const valueType = value && isElement(value) ? 'element' : toType(value)\n\n    if (!new RegExp(expectedTypes).test(valueType)) {\n      throw new TypeError(\n        `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n      )\n    }\n  })\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  // eslint-disable-next-line no-unused-expressions\n  element.offsetHeight\n}\n\nconst getjQuery = () => {\n  const { jQuery } = window\n\n  if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return jQuery\n  }\n\n  return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        DOMContentLoadedCallbacks.forEach(callback => callback())\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = callback => {\n  if (typeof callback === 'function') {\n    callback()\n  }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n  }\n\n  const listLength = list.length\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  getElement,\n  getUID,\n  getSelectorFromElement,\n  getElementFromSelector,\n  getTransitionDurationFromElement,\n  triggerTransitionEnd,\n  isElement,\n  typeCheckConfig,\n  isVisible,\n  isDisabled,\n  findShadowRoot,\n  noop,\n  getNextActiveElement,\n  reflow,\n  getjQuery,\n  onDOMContentLoaded,\n  isRTL,\n  defineJQueryPlugin,\n  execute,\n  executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n  const uid = getUidEvent(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    event.delegateTarget = element\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (let i = domElements.length; i--;) {\n        if (domElements[i] === target) {\n          event.delegateTarget = target\n\n          if (handler.oneOff) {\n            // eslint-disable-next-line unicorn/consistent-destructuring\n            EventHandler.off(element, event.type, selector, fn)\n          }\n\n          return fn.apply(target, [event])\n        }\n      }\n    }\n\n    // To please ESLint\n    return null\n  }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n  const uidEventList = Object.keys(events)\n\n  for (let i = 0, len = uidEventList.length; i < len; i++) {\n    const event = events[uidEventList[i]]\n\n    if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n      return event\n    }\n  }\n\n  return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n  const delegation = typeof handler === 'string'\n  const originalHandler = delegation ? delegationFn : handler\n\n  let typeEvent = getTypeEvent(originalTypeEvent)\n  const isNative = nativeEvents.has(typeEvent)\n\n  if (!isNative) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  if (!handler) {\n    handler = delegationFn\n    delegationFn = null\n  }\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (customEventsRegex.test(originalTypeEvent)) {\n    const wrapFn = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    if (delegationFn) {\n      delegationFn = wrapFn(delegationFn)\n    } else {\n      handler = wrapFn(handler)\n    }\n  }\n\n  const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n  const events = getEvent(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n  if (previousFn) {\n    previousFn.oneOff = previousFn.oneOff && oneOff\n\n    return\n  }\n\n  const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = delegation ?\n    bootstrapDelegationHandler(element, handler, delegationFn) :\n    bootstrapHandler(element, handler)\n\n  fn.delegationSelector = delegation ? handler : null\n  fn.originalHandler = originalHandler\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  Object.keys(storeElementEvent).forEach(handlerKey => {\n    if (handlerKey.includes(namespace)) {\n      const event = storeElementEvent[handlerKey]\n\n      removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n    }\n  })\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, false)\n  },\n\n  one(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFn) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getEvent(element)\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof originalHandler !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!events || !events[typeEvent]) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      Object.keys(events).forEach(elementEvent => {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      })\n    }\n\n    const storeElementEvent = events[typeEvent] || {}\n    Object.keys(storeElementEvent).forEach(keyHandlers => {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        const event = storeElementEvent[keyHandlers]\n\n        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n      }\n    })\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const $ = getjQuery()\n    const typeEvent = getTypeEvent(event)\n    const inNamespace = event !== typeEvent\n    const isNative = nativeEvents.has(typeEvent)\n\n    let jQueryEvent\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n    let evt = null\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args)\n\n      $(element).trigger(jQueryEvent)\n      bubbles = !jQueryEvent.isPropagationStopped()\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n      defaultPrevented = jQueryEvent.isDefaultPrevented()\n    }\n\n    if (isNative) {\n      evt = document.createEvent('HTMLEvents')\n      evt.initEvent(typeEvent, bubbles, true)\n    } else {\n      evt = new CustomEvent(event, {\n        bubbles,\n        cancelable: true\n      })\n    }\n\n    // merge custom information in our event\n    if (typeof args !== 'undefined') {\n      Object.keys(args).forEach(key => {\n        Object.defineProperty(evt, key, {\n          get() {\n            return args[key]\n          }\n        })\n      })\n    }\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n  executeAfterTransition,\n  getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.1.0'\n\nclass BaseComponent {\n  constructor(element) {\n    element = getElement(element)\n\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    Object.getOwnPropertyNames(this).forEach(propertyName => {\n      this[propertyName] = null\n    })\n  }\n\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  /** Static */\n\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nexport {\n  enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nenableDismissTrigger(Alert, 'close')\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this)\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n  if (val === 'true') {\n    return true\n  }\n\n  if (val === 'false') {\n    return false\n  }\n\n  if (val === Number(val).toString()) {\n    return Number(val)\n  }\n\n  if (val === '' || val === 'null') {\n    return null\n  }\n\n  return val\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n\n    Object.keys(element.dataset)\n      .filter(key => key.startsWith('bs'))\n      .forEach(key => {\n        let pureKey = key.replace(/^bs/, '')\n        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n        attributes[pureKey] = normalizeData(element.dataset[key])\n      })\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  },\n\n  offset(element) {\n    const rect = element.getBoundingClientRect()\n\n    return {\n      top: rect.top + window.pageYOffset,\n      left: rect.left + window.pageXOffset\n    }\n  },\n\n  position(element) {\n    return {\n      top: element.offsetTop,\n      left: element.offsetLeft\n    }\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children)\n      .filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n\n    let ancestor = element.parentNode\n\n    while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n      if (ancestor.matches(selector)) {\n        parents.push(ancestor)\n      }\n\n      ancestor = ancestor.parentNode\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  getNextActiveElement,\n  reflow,\n  triggerTransitionEnd,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  slide: false,\n  pause: 'hover',\n  wrap: true,\n  touch: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)',\n  keyboard: 'boolean',\n  slide: '(boolean|string)',\n  pause: '(string|boolean)',\n  wrap: 'boolean',\n  touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._items = null\n    this._interval = null\n    this._activeElement = null\n    this._isPaused = false\n    this._isSliding = false\n    this.touchTimeout = null\n    this.touchStartX = 0\n    this.touchDeltaX = 0\n\n    this._config = this._getConfig(config)\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n    this._pointerEvent = Boolean(window.PointerEvent)\n\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause(event) {\n    if (!event) {\n      this._isPaused = true\n    }\n\n    if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n      triggerTransitionEnd(this._element)\n      this.cycle(true)\n    }\n\n    clearInterval(this._interval)\n    this._interval = null\n  }\n\n  cycle(event) {\n    if (!event) {\n      this._isPaused = false\n    }\n\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    if (this._config && this._config.interval && !this._isPaused) {\n      this._updateInterval()\n\n      this._interval = setInterval(\n        (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n        this._config.interval\n      )\n    }\n  }\n\n  to(index) {\n    this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeIndex = this._getItemIndex(this._activeElement)\n\n    if (index > this._items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    if (activeIndex === index) {\n      this.pause()\n      this.cycle()\n      return\n    }\n\n    const order = index > activeIndex ?\n      ORDER_NEXT :\n      ORDER_PREV\n\n    this._slide(order, this._items[index])\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _handleSwipe() {\n    const absDeltax = Math.abs(this.touchDeltaX)\n\n    if (absDeltax <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltax / this.touchDeltaX\n\n    this.touchDeltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n    }\n\n    if (this._config.touch && this._touchSupported) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    const start = event => {\n      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n        this.touchStartX = event.clientX\n      } else if (!this._pointerEvent) {\n        this.touchStartX = event.touches[0].clientX\n      }\n    }\n\n    const move = event => {\n      // ensure swiping with one touch and not pinching\n      this.touchDeltaX = event.touches && event.touches.length > 1 ?\n        0 :\n        event.touches[0].clientX - this.touchStartX\n    }\n\n    const end = event => {\n      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n        this.touchDeltaX = event.clientX - this.touchStartX\n      }\n\n      this._handleSwipe()\n      if (this._config.pause === 'hover') {\n        // If it's a touch-enabled device, mouseenter/leave are fired as\n        // part of the mouse compatibility events on first tap - the carousel\n        // would stop cycling until user tapped out of it;\n        // here, we listen for touchend, explicitly pause the carousel\n        // (as if it's the second time we tap on it, mouseenter compat event\n        // is NOT fired) and after a timeout (to allow for mouse compatibility\n        // events to fire) we explicitly restart cycling\n\n        this.pause()\n        if (this.touchTimeout) {\n          clearTimeout(this.touchTimeout)\n        }\n\n        this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n      }\n    }\n\n    SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n      EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n    })\n\n    if (this._pointerEvent) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n    }\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(direction)\n    }\n  }\n\n  _getItemIndex(element) {\n    this._items = element && element.parentNode ?\n      SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n      []\n\n    return this._items.indexOf(element)\n  }\n\n  _getItemByOrder(order, activeElement) {\n    const isNext = order === ORDER_NEXT\n    return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n  }\n\n  _triggerSlideEvent(relatedTarget, eventDirectionName) {\n    const targetIndex = this._getItemIndex(relatedTarget)\n    const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n    return EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget,\n      direction: eventDirectionName,\n      from: fromIndex,\n      to: targetIndex\n    })\n  }\n\n  _setActiveIndicatorElement(element) {\n    if (this._indicatorsElement) {\n      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n      activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n      activeIndicator.removeAttribute('aria-current')\n\n      const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n      for (let i = 0; i < indicators.length; i++) {\n        if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n          indicators[i].classList.add(CLASS_NAME_ACTIVE)\n          indicators[i].setAttribute('aria-current', 'true')\n          break\n        }\n      }\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    if (elementInterval) {\n      this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n      this._config.interval = elementInterval\n    } else {\n      this._config.interval = this._config.defaultInterval || this._config.interval\n    }\n  }\n\n  _slide(directionOrOrder, element) {\n    const order = this._directionToOrder(directionOrOrder)\n    const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeElementIndex = this._getItemIndex(activeElement)\n    const nextElement = element || this._getItemByOrder(order, activeElement)\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n    const isCycling = Boolean(this._interval)\n\n    const isNext = order === ORDER_NEXT\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n    const eventDirectionName = this._orderToDirection(order)\n\n    if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n      this._isSliding = false\n      return\n    }\n\n    if (this._isSliding) {\n      return\n    }\n\n    const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    this._isSliding = true\n\n    if (isCycling) {\n      this.pause()\n    }\n\n    this._setActiveIndicatorElement(nextElement)\n    this._activeElement = nextElement\n\n    const triggerSlidEvent = () => {\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      })\n    }\n\n    if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n      nextElement.classList.add(orderClassName)\n\n      reflow(nextElement)\n\n      activeElement.classList.add(directionalClassName)\n      nextElement.classList.add(directionalClassName)\n\n      const completeCallBack = () => {\n        nextElement.classList.remove(directionalClassName, orderClassName)\n        nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n        activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n        this._isSliding = false\n\n        setTimeout(triggerSlidEvent, 0)\n      }\n\n      this._queueCallback(completeCallBack, activeElement, true)\n    } else {\n      activeElement.classList.remove(CLASS_NAME_ACTIVE)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      this._isSliding = false\n      triggerSlidEvent()\n    }\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n      return direction\n    }\n\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n      return order\n    }\n\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n\n  // Static\n\n  static carouselInterface(element, config) {\n    const data = Carousel.getOrCreateInstance(element, config)\n\n    let { _config } = data\n    if (typeof config === 'object') {\n      _config = {\n        ..._config,\n        ...config\n      }\n    }\n\n    const action = typeof config === 'string' ? config : _config.slide\n\n    if (typeof config === 'number') {\n      data.to(config)\n    } else if (typeof action === 'string') {\n      if (typeof data[action] === 'undefined') {\n        throw new TypeError(`No method named \"${action}\"`)\n      }\n\n      data[action]()\n    } else if (_config.interval && _config.ride) {\n      data.pause()\n      data.cycle()\n    }\n  }\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      Carousel.carouselInterface(this, config)\n    })\n  }\n\n  static dataApiClickHandler(event) {\n    const target = getElementFromSelector(this)\n\n    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n      return\n    }\n\n    const config = {\n      ...Manipulator.getDataAttributes(target),\n      ...Manipulator.getDataAttributes(this)\n    }\n    const slideIndex = this.getAttribute('data-bs-slide-to')\n\n    if (slideIndex) {\n      config.interval = false\n    }\n\n    Carousel.carouselInterface(target, config)\n\n    if (slideIndex) {\n      Carousel.getInstance(target).to(slideIndex)\n    }\n\n    event.preventDefault()\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (let i = 0, len = carousels.length; i < len; i++) {\n    Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]))\n  }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getSelectorFromElement,\n  getElementFromSelector,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  toggle: true,\n  parent: null\n}\n\nconst DefaultType = {\n  toggle: 'boolean',\n  parent: '(null|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._isTransitioning = false\n    this._config = this._getConfig(config)\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggleList.length; i < len; i++) {\n      const elem = toggleList[i]\n      const selector = getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElem => foundElem === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._selector = selector\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let actives = []\n    let activesData\n\n    if (this._config.parent) {\n      const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n      actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)) // remove children if greater depth\n    }\n\n    const container = SelectorEngine.findOne(this._selector)\n    if (actives.length) {\n      const tempActiveData = actives.find(elem => container !== elem)\n      activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null\n\n      if (activesData && activesData._isTransitioning) {\n        return\n      }\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    actives.forEach(elemActive => {\n      if (container !== elemActive) {\n        Collapse.getOrCreateInstance(elemActive, { toggle: false }).hide()\n      }\n\n      if (!activesData) {\n        Data.set(elemActive, DATA_KEY, null)\n      }\n    })\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    const triggerArrayLength = this._triggerArray.length\n    for (let i = 0; i < triggerArrayLength; i++) {\n      const trigger = this._triggerArray[i]\n      const elem = getElementFromSelector(trigger)\n\n      if (elem && !this._isShown(elem)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n    SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem))\n      .forEach(element => {\n        const selected = getElementFromSelector(element)\n\n        if (selected) {\n          this._addAriaAndCollapsedClass([element], this._isShown(selected))\n        }\n      })\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    triggerArray.forEach(elem => {\n      if (isOpen) {\n        elem.classList.remove(CLASS_NAME_COLLAPSED)\n      } else {\n        elem.classList.add(CLASS_NAME_COLLAPSED)\n      }\n\n      elem.setAttribute('aria-expanded', isOpen)\n    })\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const _config = {}\n      if (typeof config === 'string' && /show|hide/.test(config)) {\n        _config.toggle = false\n      }\n\n      const data = Collapse.getOrCreateInstance(this, _config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  const selector = getSelectorFromElement(this)\n  const selectorElements = SelectorEngine.find(selector)\n\n  selectorElements.forEach(element => {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getElementFromSelector,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n  offset: [0, 2],\n  boundary: 'clippingParents',\n  reference: 'toggle',\n  display: 'dynamic',\n  popperConfig: null,\n  autoClose: true\n}\n\nconst DefaultType = {\n  offset: '(array|string|function)',\n  boundary: '(string|element)',\n  reference: '(string|element|object)',\n  display: 'string',\n  popperConfig: '(null|object|function)',\n  autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._popper = null\n    this._config = this._getConfig(config)\n    this._menu = this._getMenuElement()\n    this._inNavbar = this._detectNavbar()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown(this._menu)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    const parent = Dropdown.getParentFromElement(this._element)\n    // Totally disable Popper for Dropdowns in Navbar\n    if (this._inNavbar) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n    } else {\n      this._createPopper(parent)\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement &&\n      !parent.closest(SELECTOR_NAVBAR_NAV)) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown(this._menu)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = {\n      ...this.constructor.Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createPopper(parent) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    const popperConfig = this._getPopperConfig()\n    const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n    if (isDisplayStatic) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n    }\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getMenuElement() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._element.parentNode\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display\n    if (this._config.display === 'static') {\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n\n  static clearMenus(event) {\n    if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n      return\n    }\n\n    const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggles.length; i < len; i++) {\n      const context = Dropdown.getInstance(toggles[i])\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      if (!context._isShown()) {\n        continue\n      }\n\n      const relatedTarget = {\n        relatedTarget: context._element\n      }\n\n      if (event) {\n        const composedPath = event.composedPath()\n        const isMenuTarget = composedPath.includes(context._menu)\n        if (\n          composedPath.includes(context._element) ||\n          (context._config.autoClose === 'inside' && !isMenuTarget) ||\n          (context._config.autoClose === 'outside' && isMenuTarget)\n        ) {\n          continue\n        }\n\n        // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n        if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n          continue\n        }\n\n        if (event.type === 'click') {\n          relatedTarget.clickEvent = event\n        }\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static getParentFromElement(element) {\n    return getElementFromSelector(element) || element.parentNode\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not input/textarea:\n    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n    // If input/textarea:\n    //  - If space key => not a dropdown command\n    //  - If key is other than escape\n    //    - If key is not up or down => not a dropdown command\n    //    - If trigger inside the menu => not a dropdown command\n    if (/input|textarea/i.test(event.target.tagName) ?\n      event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n      ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n        event.target.closest(SELECTOR_MENU))) :\n      !REGEXP_KEYDOWN.test(event.key)) {\n      return\n    }\n\n    const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n    if (!isActive && event.key === ESCAPE_KEY) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    if (event.key === ESCAPE_KEY) {\n      instance.hide()\n      return\n    }\n\n    if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n      if (!isActive) {\n        instance.show()\n      }\n\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (!isActive || event.key === SPACE_KEY) {\n      Dropdown.clearMenus()\n    }\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n  }\n\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProp, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProp)\n      const calculatedValue = window.getComputedStyle(element)[styleProp]\n      element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n  }\n\n  _saveInitialAttribute(element, styleProp) {\n    const actualValue = element.style[styleProp]\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProp, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProp) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProp)\n      if (typeof value === 'undefined') {\n        element.style.removeProperty(styleProp)\n      } else {\n        Manipulator.removeDataAttribute(element, styleProp)\n        element.style[styleProp] = value\n      }\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n    } else {\n      SelectorEngine.find(selector, this._element).forEach(callBack)\n    }\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n  className: 'modal-backdrop',\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  isAnimated: false,\n  rootElement: 'body', // give the choice to place backdrop under different elements\n  clickCallback: null\n}\n\nconst DefaultType = {\n  className: 'string',\n  isVisible: 'boolean',\n  isAnimated: 'boolean',\n  rootElement: '(element|string)',\n  clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    if (this._config.isAnimated) {\n      reflow(this._getElement())\n    }\n\n    this._getElement().classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  // Private\n\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    this._config.rootElement.append(this._getElement())\n\n    EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport { typeCheckConfig } from './index'\n\nconst Default = {\n  trapElement: null, // The element to trap focus inside of\n  autofocus: true\n}\n\nconst DefaultType = {\n  trapElement: 'element',\n  autofocus: 'boolean'\n}\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nclass FocusTrap {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  activate() {\n    const { trapElement, autofocus } = this._config\n\n    if (this._isActive) {\n      return\n    }\n\n    if (autofocus) {\n      trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n\n  _handleFocusin(event) {\n    const { target } = event\n    const { trapElement } = this._config\n\n    if (\n      target === document ||\n      target === trapElement ||\n      trapElement.contains(target)\n    ) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  focus: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._isShown = false\n    this._ignoreBackdropClick = false\n    this._isTransitioning = false\n    this._scrollBar = new ScrollBarHelper()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n\n    if (this._isAnimated()) {\n      this._isTransitioning = true\n    }\n\n    this._scrollBar.hide()\n\n    document.body.classList.add(CLASS_NAME_OPEN)\n\n    this._adjustDialog()\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n      EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n        if (event.target === this._element) {\n          this._ignoreBackdropClick = true\n        }\n      })\n    })\n\n    this._showBackdrop(() => this._showElement(relatedTarget))\n  }\n\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = false\n    const isAnimated = this._isAnimated()\n\n    if (isAnimated) {\n      this._isTransitioning = true\n    }\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    this._focustrap.deactivate()\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n    EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n    this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n  }\n\n  dispose() {\n    [window, this._dialog]\n      .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n      isAnimated: this._isAnimated()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _showElement(relatedTarget) {\n    const isAnimated = this._isAnimated()\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n    if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n      // Don't move modal's DOM position\n      document.body.append(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.scrollTop = 0\n\n    if (modalBody) {\n      modalBody.scrollTop = 0\n    }\n\n    if (isAnimated) {\n      reflow(this._element)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate()\n      }\n\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }\n\n    this._queueCallback(transitionComplete, this._dialog, isAnimated)\n  }\n\n  _setEscapeEvent() {\n    if (this._isShown) {\n      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n        if (this._config.keyboard && event.key === ESCAPE_KEY) {\n          event.preventDefault()\n          this.hide()\n        } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n          this._triggerBackdropTransition()\n        }\n      })\n    } else {\n      EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n    }\n  }\n\n  _setResizeEvent() {\n    if (this._isShown) {\n      EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n    } else {\n      EventHandler.off(window, EVENT_RESIZE)\n    }\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._scrollBar.reset()\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    })\n  }\n\n  _showBackdrop(callback) {\n    EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n      if (this._ignoreBackdropClick) {\n        this._ignoreBackdropClick = false\n        return\n      }\n\n      if (event.target !== event.currentTarget) {\n        return\n      }\n\n      if (this._config.backdrop === true) {\n        this.hide()\n      } else if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n      }\n    })\n\n    this._backdrop.show(callback)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const { classList, scrollHeight, style } = this._element\n    const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n    // return if the following background transition hasn't yet completed\n    if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n      return\n    }\n\n    if (!isModalOverflowing) {\n      style.overflowY = 'hidden'\n    }\n\n    classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      classList.remove(CLASS_NAME_STATIC)\n      if (!isModalOverflowing) {\n        this._queueCallback(() => {\n          style.overflowY = ''\n        }, this._dialog)\n      }\n    }, this._dialog)\n\n    this._element.focus()\n  }\n\n  // ----------------------------------------------------------------------\n  // the following methods are used to handle overflowing modals\n  // ----------------------------------------------------------------------\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const scrollbarWidth = this._scrollBar.getWidth()\n    const isBodyOverflowing = scrollbarWidth > 0\n\n    if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n      this._element.style.paddingLeft = `${scrollbarWidth}px`\n    }\n\n    if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n      this._element.style.paddingRight = `${scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  // Static\n\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](relatedTarget)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  const data = Modal.getOrCreateInstance(target)\n\n  data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  isVisible,\n  typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: 'boolean',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._element.style.visibility = 'visible'\n\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll) {\n        this._focustrap.activate()\n      }\n\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.setAttribute('aria-hidden', true)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n      this._element.style.visibility = 'hidden'\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible: this._config.backdrop,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: () => this.hide()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (this._config.keyboard && event.key === ESCAPE_KEY) {\n        this.hide()\n      }\n    })\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (allReadyOpen && allReadyOpen !== target) {\n    Offcanvas.getInstance(allReadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\n  SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())\n)\n\nenableDismissTrigger(Offcanvas)\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n  const attrName = attr.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attrName)) {\n    if (uriAttrs.has(attrName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n    }\n\n    return true\n  }\n\n  const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n  // Check if a regular expression validates the attribute.\n  for (let i = 0, len = regExp.length; i < len; i++) {\n    if (regExp[i].test(attrName)) {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFn && typeof sanitizeFn === 'function') {\n    return sanitizeFn(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const allowlistKeys = Object.keys(allowList)\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (let i = 0, len = elements.length; i < len; i++) {\n    const el = elements[i]\n    const elName = el.nodeName.toLowerCase()\n\n    if (!allowlistKeys.includes(elName)) {\n      el.remove()\n\n      continue\n    }\n\n    const attributeList = [].concat(...el.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n    attributeList.forEach(attr => {\n      if (!allowedAttribute(attr, allowedAttributes)) {\n        el.removeAttribute(attr.nodeName)\n      }\n    })\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  findShadowRoot,\n  getElement,\n  getUID,\n  isElement,\n  isRTL,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport { DefaultAllowlist, sanitizeHtml } from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n  animation: 'boolean',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string',\n  delay: '(number|object)',\n  html: 'boolean',\n  selector: '(string|boolean)',\n  placement: '(string|function)',\n  offset: '(array|string|function)',\n  container: '(string|element|boolean)',\n  fallbackPlacements: 'array',\n  boundary: '(string|element)',\n  customClass: '(string|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  allowList: 'object',\n  popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n              '<div class=\"tooltip-arrow\"></div>' +\n              '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  selector: false,\n  placement: 'top',\n  offset: [0, 0],\n  container: false,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  boundary: 'clippingParents',\n  customClass: '',\n  sanitize: true,\n  sanitizeFn: null,\n  allowList: DefaultAllowlist,\n  popperConfig: null\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    super(element)\n\n    // private\n    this._isEnabled = true\n    this._timeout = 0\n    this._hoverState = ''\n    this._activeTrigger = {}\n    this._popper = null\n\n    // Protected\n    this._config = this._getConfig(config)\n    this.tip = null\n\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle(event) {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (event) {\n      const context = this._initializeOnDelegatedTarget(event)\n\n      context._activeTrigger.click = !context._activeTrigger.click\n\n      if (context._isWithActiveTrigger()) {\n        context._enter(null, context)\n      } else {\n        context._leave(null, context)\n      }\n    } else {\n      if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n        this._leave(null, this)\n        return\n      }\n\n      this._enter(null, this)\n    }\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this.tip) {\n      this.tip.remove()\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this.isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = shadowRoot === null ?\n      this._element.ownerDocument.documentElement.contains(this._element) :\n      shadowRoot.contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const tipId = getUID(this.constructor.NAME)\n\n    tip.setAttribute('id', tipId)\n    this._element.setAttribute('aria-describedby', tipId)\n\n    if (this._config.animation) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    const placement = typeof this._config.placement === 'function' ?\n      this._config.placement.call(this, tip, this._element) :\n      this._config.placement\n\n    const attachment = this._getAttachment(placement)\n    this._addAttachmentClass(attachment)\n\n    const { container } = this._config\n    Data.set(tip, this.constructor.DATA_KEY, this)\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n    }\n\n    if (this._popper) {\n      this._popper.update()\n    } else {\n      this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n    }\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    const customClass = this._resolvePossibleFunction(this._config.customClass)\n    if (customClass) {\n      tip.classList.add(...customClass.split(' '))\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children).forEach(element => {\n        EventHandler.on(element, 'mouseover', noop)\n      })\n    }\n\n    const complete = () => {\n      const prevHoverState = this._hoverState\n\n      this._hoverState = null\n      EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n      if (prevHoverState === HOVER_STATE_OUT) {\n        this._leave(null, this)\n      }\n    }\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n  }\n\n  hide() {\n    if (!this._popper) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (this._hoverState !== HOVER_STATE_SHOW) {\n        tip.remove()\n      }\n\n      this._cleanTipClass()\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n      if (this._popper) {\n        this._popper.destroy()\n        this._popper = null\n      }\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children)\n        .forEach(element => EventHandler.off(element, 'mouseover', noop))\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n    this._hoverState = ''\n  }\n\n  update() {\n    if (this._popper !== null) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n\n  isWithContent() {\n    return Boolean(this.getTitle())\n  }\n\n  getTipElement() {\n    if (this.tip) {\n      return this.tip\n    }\n\n    const element = document.createElement('div')\n    element.innerHTML = this._config.template\n\n    const tip = element.children[0]\n    this.setContent(tip)\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n\n    this.tip = tip\n    return this.tip\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER)\n  }\n\n  _sanitizeAndSetContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!content && templateElement) {\n      templateElement.remove()\n      return\n    }\n\n    // we use append for html objects to maintain js events\n    this.setElementContent(templateElement, content)\n  }\n\n  setElementContent(element, content) {\n    if (element === null) {\n      return\n    }\n\n    if (isElement(content)) {\n      content = getElement(content)\n\n      // content is a DOM node or a jQuery\n      if (this._config.html) {\n        if (content.parentNode !== element) {\n          element.innerHTML = ''\n          element.append(content)\n        }\n      } else {\n        element.textContent = content.textContent\n      }\n\n      return\n    }\n\n    if (this._config.html) {\n      if (this._config.sanitize) {\n        content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n      }\n\n      element.innerHTML = content\n    } else {\n      element.textContent = content\n    }\n  }\n\n  getTitle() {\n    const title = this._element.getAttribute('data-bs-original-title') || this._config.title\n\n    return this._resolvePossibleFunction(title)\n  }\n\n  updateAttachment(attachment) {\n    if (attachment === 'right') {\n      return 'end'\n    }\n\n    if (attachment === 'left') {\n      return 'start'\n    }\n\n    return attachment\n  }\n\n  // Private\n\n  _initializeOnDelegatedTarget(event, context) {\n    return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(content) {\n    return typeof content === 'function' ? content.call(this._element) : content\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'onChange',\n          enabled: true,\n          phase: 'afterWrite',\n          fn: data => this._handlePopperPlacementChange(data)\n        }\n      ],\n      onFirstUpdate: data => {\n        if (data.options.placement !== data.placement) {\n          this._handlePopperPlacementChange(data)\n        }\n      }\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _addAttachmentClass(attachment) {\n    this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`)\n  }\n\n  _getAttachment(placement) {\n    return AttachmentMap[placement.toUpperCase()]\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    triggers.forEach(trigger => {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSEENTER :\n          this.constructor.Event.FOCUSIN\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSELEAVE :\n          this.constructor.Event.FOCUSOUT\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n        EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n      }\n    })\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._config.selector) {\n      this._config = {\n        ...this._config,\n        trigger: 'manual',\n        selector: ''\n      }\n    } else {\n      this._fixTitle()\n    }\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n    const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n    if (title || originalTitleType !== 'string') {\n      this._element.setAttribute('data-bs-original-title', title || '')\n      if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n        this._element.setAttribute('aria-label', title)\n      }\n\n      this._element.setAttribute('title', '')\n    }\n  }\n\n  _enter(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = true\n    }\n\n    if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n      context._hoverState = HOVER_STATE_SHOW\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_SHOW\n\n    if (!context._config.delay || !context._config.delay.show) {\n      context.show()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_SHOW) {\n        context.show()\n      }\n    }, context._config.delay.show)\n  }\n\n  _leave(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = context._element.contains(event.relatedTarget)\n    }\n\n    if (context._isWithActiveTrigger()) {\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_OUT\n\n    if (!context._config.delay || !context._config.delay.hide) {\n      context.hide()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_OUT) {\n        context.hide()\n      }\n    }, context._config.delay.hide)\n  }\n\n  _isWithActiveTrigger() {\n    for (const trigger in this._activeTrigger) {\n      if (this._activeTrigger[trigger]) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    Object.keys(dataAttributes).forEach(dataAttr => {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n        delete dataAttributes[dataAttr]\n      }\n    })\n\n    config = {\n      ...this.constructor.Default,\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (config.sanitize) {\n      config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const key in this._config) {\n      if (this.constructor.Default[key] !== this._config[key]) {\n        config[key] = this._config[key]\n      }\n    }\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _cleanTipClass() {\n    const tip = this.getTipElement()\n    const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g')\n    const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex)\n    if (tabClass !== null && tabClass.length > 0) {\n      tabClass.map(token => token.trim())\n        .forEach(tClass => tip.classList.remove(tClass))\n    }\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX\n  }\n\n  _handlePopperPlacementChange(popperData) {\n    const { state } = popperData\n\n    if (!state) {\n      return\n    }\n\n    this.tip = state.elements.popper\n    this._cleanTipClass()\n    this._addAttachmentClass(this._getAttachment(state.placement))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\n\nconst Default = {\n  ...Tooltip.Default,\n  placement: 'right',\n  offset: [0, 8],\n  trigger: 'click',\n  content: '',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n              '<div class=\"popover-arrow\"></div>' +\n              '<h3 class=\"popover-header\"></h3>' +\n              '<div class=\"popover-body\"></div>' +\n            '</div>'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(string|element|function)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Overrides\n\n  isWithContent() {\n    return this.getTitle() || this._getContent()\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE)\n    this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT)\n  }\n\n  // Private\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getSelectorFromElement,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  offset: 10,\n  method: 'auto',\n  target: ''\n}\n\nconst DefaultType = {\n  offset: 'number',\n  method: 'string',\n  target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n    this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n    this._config = this._getConfig(config)\n    this._offsets = []\n    this._targets = []\n    this._activeTarget = null\n    this._scrollHeight = 0\n\n    EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n    this.refresh()\n    this._process()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  refresh() {\n    const autoMethod = this._scrollElement === this._scrollElement.window ?\n      METHOD_OFFSET :\n      METHOD_POSITION\n\n    const offsetMethod = this._config.method === 'auto' ?\n      autoMethod :\n      this._config.method\n\n    const offsetBase = offsetMethod === METHOD_POSITION ?\n      this._getScrollTop() :\n      0\n\n    this._offsets = []\n    this._targets = []\n    this._scrollHeight = this._getScrollHeight()\n\n    const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n\n    targets.map(element => {\n      const targetSelector = getSelectorFromElement(element)\n      const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n      if (target) {\n        const targetBCR = target.getBoundingClientRect()\n        if (targetBCR.width || targetBCR.height) {\n          return [\n            Manipulator[offsetMethod](target).top + offsetBase,\n            targetSelector\n          ]\n        }\n      }\n\n      return null\n    })\n      .filter(item => item)\n      .sort((a, b) => a[0] - b[0])\n      .forEach(item => {\n        this._offsets.push(item[0])\n        this._targets.push(item[1])\n      })\n  }\n\n  dispose() {\n    EventHandler.off(this._scrollElement, EVENT_KEY)\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.target = getElement(config.target) || document.documentElement\n\n    typeCheckConfig(NAME, config, DefaultType)\n\n    return config\n  }\n\n  _getScrollTop() {\n    return this._scrollElement === window ?\n      this._scrollElement.pageYOffset :\n      this._scrollElement.scrollTop\n  }\n\n  _getScrollHeight() {\n    return this._scrollElement.scrollHeight || Math.max(\n      document.body.scrollHeight,\n      document.documentElement.scrollHeight\n    )\n  }\n\n  _getOffsetHeight() {\n    return this._scrollElement === window ?\n      window.innerHeight :\n      this._scrollElement.getBoundingClientRect().height\n  }\n\n  _process() {\n    const scrollTop = this._getScrollTop() + this._config.offset\n    const scrollHeight = this._getScrollHeight()\n    const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n    if (this._scrollHeight !== scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      const target = this._targets[this._targets.length - 1]\n\n      if (this._activeTarget !== target) {\n        this._activate(target)\n      }\n\n      return\n    }\n\n    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n      this._activeTarget = null\n      this._clear()\n      return\n    }\n\n    for (let i = this._offsets.length; i--;) {\n      const isActiveTarget = this._activeTarget !== this._targets[i] &&\n          scrollTop >= this._offsets[i] &&\n          (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n      if (isActiveTarget) {\n        this._activate(this._targets[i])\n      }\n    }\n  }\n\n  _activate(target) {\n    this._activeTarget = target\n\n    this._clear()\n\n    const queries = SELECTOR_LINK_ITEMS.split(',')\n      .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n    const link = SelectorEngine.findOne(queries.join(','), this._config.target)\n\n    link.classList.add(CLASS_NAME_ACTIVE)\n    if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n        .forEach(listGroup => {\n          // Set triggered links parents as active\n          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n          SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n            .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n          // Handle special case when .nav-link is inside .nav-item\n          SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n            .forEach(navItem => {\n              SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n                .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n            })\n        })\n    }\n\n    EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n      relatedTarget: target\n    })\n  }\n\n  _clear() {\n    SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n      .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n      .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  SelectorEngine.find(SELECTOR_DATA_SPY)\n    .forEach(spy => new ScrollSpy(spy))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  show() {\n    if ((this._element.parentNode &&\n      this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n      this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n      return\n    }\n\n    let previous\n    const target = getElementFromSelector(this._element)\n    const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n    if (listElement) {\n      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n      previous = SelectorEngine.find(itemSelector, listElement)\n      previous = previous[previous.length - 1]\n    }\n\n    const hideEvent = previous ?\n      EventHandler.trigger(previous, EVENT_HIDE, {\n        relatedTarget: this._element\n      }) :\n      null\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget: previous\n    })\n\n    if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._activate(this._element, listElement)\n\n    const complete = () => {\n      EventHandler.trigger(previous, EVENT_HIDDEN, {\n        relatedTarget: this._element\n      })\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget: previous\n      })\n    }\n\n    if (target) {\n      this._activate(target, target.parentNode, complete)\n    } else {\n      complete()\n    }\n  }\n\n  // Private\n\n  _activate(element, container, callback) {\n    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n      SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n      SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n    const active = activeElements[0]\n    const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n    const complete = () => this._transitionComplete(element, active, callback)\n\n    if (active && isTransitioning) {\n      active.classList.remove(CLASS_NAME_SHOW)\n      this._queueCallback(complete, element, true)\n    } else {\n      complete()\n    }\n  }\n\n  _transitionComplete(element, active, callback) {\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n\n      const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n      if (dropdownChild) {\n        dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n      }\n\n      if (active.getAttribute('role') === 'tab') {\n        active.setAttribute('aria-selected', false)\n      }\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n    if (element.getAttribute('role') === 'tab') {\n      element.setAttribute('aria-selected', true)\n    }\n\n    reflow(element)\n\n    if (element.classList.contains(CLASS_NAME_FADE)) {\n      element.classList.add(CLASS_NAME_SHOW)\n    }\n\n    let parent = element.parentNode\n    if (parent && parent.nodeName === 'LI') {\n      parent = parent.parentNode\n    }\n\n    if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n      const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n      if (dropdownElement) {\n        SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n          .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n      }\n\n      element.setAttribute('aria-expanded', true)\n    }\n\n    if (callback) {\n      callback()\n    }\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  const data = Tab.getOrCreateInstance(this)\n  data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      this._element.classList.remove(CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    return config\n  }\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout':\n        this._hasMouseInteraction = isInteracting\n        break\n      case 'focusin':\n      case 'focusout':\n        this._hasKeyboardInteraction = isInteracting\n        break\n      default:\n        break\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\nenableDismissTrigger(Toast)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert'\nimport Button from './src/button'\nimport Carousel from './src/carousel'\nimport Collapse from './src/collapse'\nimport Dropdown from './src/dropdown'\nimport Modal from './src/modal'\nimport Offcanvas from './src/offcanvas'\nimport Popover from './src/popover'\nimport ScrollSpy from './src/scrollspy'\nimport Tab from './src/tab'\nimport Toast from './src/toast'\nimport Tooltip from './src/tooltip'\n\nexport default {\n  Alert,\n  Button,\n  Carousel,\n  Collapse,\n  Dropdown,\n  Modal,\n  Offcanvas,\n  Popover,\n  ScrollSpy,\n  Tab,\n  Toast,\n  Tooltip\n}\n"]}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt
new file mode 100644
index 0000000..0bdc196
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt
@@ -0,0 +1,12 @@
+Copyright (c) .NET Foundation. All rights reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+these files except in compliance with the License. You may obtain a copy of the
+License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied. See the License for the
+specific language governing permissions and limitations under the License.
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js
new file mode 100644
index 0000000..73f5298
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js
@@ -0,0 +1,432 @@
+// Unobtrusive validation support library for jQuery and jQuery Validate
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+// @version v3.2.11
+
+/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */
+/*global document: false, jQuery: false */
+
+(function (factory) {
+    if (typeof define === 'function' && define.amd) {
+        // AMD. Register as an anonymous module.
+        define("jquery.validate.unobtrusive", ['jquery-validation'], factory);
+    } else if (typeof module === 'object' && module.exports) {
+        // CommonJS-like environments that support module.exports     
+        module.exports = factory(require('jquery-validation'));
+    } else {
+        // Browser global
+        jQuery.validator.unobtrusive = factory(jQuery);
+    }
+}(function ($) {
+    var $jQval = $.validator,
+        adapters,
+        data_validation = "unobtrusiveValidation";
+
+    function setValidationValues(options, ruleName, value) {
+        options.rules[ruleName] = value;
+        if (options.message) {
+            options.messages[ruleName] = options.message;
+        }
+    }
+
+    function splitAndTrim(value) {
+        return value.replace(/^\s+|\s+$/g, "").split(/\s*,\s*/g);
+    }
+
+    function escapeAttributeValue(value) {
+        // As mentioned on http://api.jquery.com/category/selectors/
+        return value.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\$1");
+    }
+
+    function getModelPrefix(fieldName) {
+        return fieldName.substr(0, fieldName.lastIndexOf(".") + 1);
+    }
+
+    function appendModelPrefix(value, prefix) {
+        if (value.indexOf("*.") === 0) {
+            value = value.replace("*.", prefix);
+        }
+        return value;
+    }
+
+    function onError(error, inputElement) {  // 'this' is the form element
+        var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"),
+            replaceAttrValue = container.attr("data-valmsg-replace"),
+            replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;
+
+        container.removeClass("field-validation-valid").addClass("field-validation-error");
+        error.data("unobtrusiveContainer", container);
+
+        if (replace) {
+            container.empty();
+            error.removeClass("input-validation-error").appendTo(container);
+        }
+        else {
+            error.hide();
+        }
+    }
+
+    function onErrors(event, validator) {  // 'this' is the form element
+        var container = $(this).find("[data-valmsg-summary=true]"),
+            list = container.find("ul");
+
+        if (list && list.length && validator.errorList.length) {
+            list.empty();
+            container.addClass("validation-summary-errors").removeClass("validation-summary-valid");
+
+            $.each(validator.errorList, function () {
+                $("<li />").html(this.message).appendTo(list);
+            });
+        }
+    }
+
+    function onSuccess(error) {  // 'this' is the form element
+        var container = error.data("unobtrusiveContainer");
+
+        if (container) {
+            var replaceAttrValue = container.attr("data-valmsg-replace"),
+                replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;
+
+            container.addClass("field-validation-valid").removeClass("field-validation-error");
+            error.removeData("unobtrusiveContainer");
+
+            if (replace) {
+                container.empty();
+            }
+        }
+    }
+
+    function onReset(event) {  // 'this' is the form element
+        var $form = $(this),
+            key = '__jquery_unobtrusive_validation_form_reset';
+        if ($form.data(key)) {
+            return;
+        }
+        // Set a flag that indicates we're currently resetting the form.
+        $form.data(key, true);
+        try {
+            $form.data("validator").resetForm();
+        } finally {
+            $form.removeData(key);
+        }
+
+        $form.find(".validation-summary-errors")
+            .addClass("validation-summary-valid")
+            .removeClass("validation-summary-errors");
+        $form.find(".field-validation-error")
+            .addClass("field-validation-valid")
+            .removeClass("field-validation-error")
+            .removeData("unobtrusiveContainer")
+            .find(">*")  // If we were using valmsg-replace, get the underlying error
+            .removeData("unobtrusiveContainer");
+    }
+
+    function validationInfo(form) {
+        var $form = $(form),
+            result = $form.data(data_validation),
+            onResetProxy = $.proxy(onReset, form),
+            defaultOptions = $jQval.unobtrusive.options || {},
+            execInContext = function (name, args) {
+                var func = defaultOptions[name];
+                func && $.isFunction(func) && func.apply(form, args);
+            };
+
+        if (!result) {
+            result = {
+                options: {  // options structure passed to jQuery Validate's validate() method
+                    errorClass: defaultOptions.errorClass || "input-validation-error",
+                    errorElement: defaultOptions.errorElement || "span",
+                    errorPlacement: function () {
+                        onError.apply(form, arguments);
+                        execInContext("errorPlacement", arguments);
+                    },
+                    invalidHandler: function () {
+                        onErrors.apply(form, arguments);
+                        execInContext("invalidHandler", arguments);
+                    },
+                    messages: {},
+                    rules: {},
+                    success: function () {
+                        onSuccess.apply(form, arguments);
+                        execInContext("success", arguments);
+                    }
+                },
+                attachValidation: function () {
+                    $form
+                        .off("reset." + data_validation, onResetProxy)
+                        .on("reset." + data_validation, onResetProxy)
+                        .validate(this.options);
+                },
+                validate: function () {  // a validation function that is called by unobtrusive Ajax
+                    $form.validate();
+                    return $form.valid();
+                }
+            };
+            $form.data(data_validation, result);
+        }
+
+        return result;
+    }
+
+    $jQval.unobtrusive = {
+        adapters: [],
+
+        parseElement: function (element, skipAttach) {
+            /// <summary>
+            /// Parses a single HTML element for unobtrusive validation attributes.
+            /// </summary>
+            /// <param name="element" domElement="true">The HTML element to be parsed.</param>
+            /// <param name="skipAttach" type="Boolean">[Optional] true to skip attaching the
+            /// validation to the form. If parsing just this single element, you should specify true.
+            /// If parsing several elements, you should specify false, and manually attach the validation
+            /// to the form when you are finished. The default is false.</param>
+            var $element = $(element),
+                form = $element.parents("form")[0],
+                valInfo, rules, messages;
+
+            if (!form) {  // Cannot do client-side validation without a form
+                return;
+            }
+
+            valInfo = validationInfo(form);
+            valInfo.options.rules[element.name] = rules = {};
+            valInfo.options.messages[element.name] = messages = {};
+
+            $.each(this.adapters, function () {
+                var prefix = "data-val-" + this.name,
+                    message = $element.attr(prefix),
+                    paramValues = {};
+
+                if (message !== undefined) {  // Compare against undefined, because an empty message is legal (and falsy)
+                    prefix += "-";
+
+                    $.each(this.params, function () {
+                        paramValues[this] = $element.attr(prefix + this);
+                    });
+
+                    this.adapt({
+                        element: element,
+                        form: form,
+                        message: message,
+                        params: paramValues,
+                        rules: rules,
+                        messages: messages
+                    });
+                }
+            });
+
+            $.extend(rules, { "__dummy__": true });
+
+            if (!skipAttach) {
+                valInfo.attachValidation();
+            }
+        },
+
+        parse: function (selector) {
+            /// <summary>
+            /// Parses all the HTML elements in the specified selector. It looks for input elements decorated
+            /// with the [data-val=true] attribute value and enables validation according to the data-val-*
+            /// attribute values.
+            /// </summary>
+            /// <param name="selector" type="String">Any valid jQuery selector.</param>
+
+            // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one
+            // element with data-val=true
+            var $selector = $(selector),
+                $forms = $selector.parents()
+                    .addBack()
+                    .filter("form")
+                    .add($selector.find("form"))
+                    .has("[data-val=true]");
+
+            $selector.find("[data-val=true]").each(function () {
+                $jQval.unobtrusive.parseElement(this, true);
+            });
+
+            $forms.each(function () {
+                var info = validationInfo(this);
+                if (info) {
+                    info.attachValidation();
+                }
+            });
+        }
+    };
+
+    adapters = $jQval.unobtrusive.adapters;
+
+    adapters.add = function (adapterName, params, fn) {
+        /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.</summary>
+        /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
+        /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
+        /// <param name="params" type="Array" optional="true">[Optional] An array of parameter names (strings) that will
+        /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and
+        /// mmmm is the parameter name).</param>
+        /// <param name="fn" type="Function">The function to call, which adapts the values from the HTML
+        /// attributes into jQuery Validate rules and/or messages.</param>
+        /// <returns type="jQuery.validator.unobtrusive.adapters" />
+        if (!fn) {  // Called with no params, just a function
+            fn = params;
+            params = [];
+        }
+        this.push({ name: adapterName, params: params, adapt: fn });
+        return this;
+    };
+
+    adapters.addBool = function (adapterName, ruleName) {
+        /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
+        /// the jQuery Validate validation rule has no parameter values.</summary>
+        /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
+        /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
+        /// <param name="ruleName" type="String" optional="true">[Optional] The name of the jQuery Validate rule. If not provided, the value
+        /// of adapterName will be used instead.</param>
+        /// <returns type="jQuery.validator.unobtrusive.adapters" />
+        return this.add(adapterName, function (options) {
+            setValidationValues(options, ruleName || adapterName, true);
+        });
+    };
+
+    adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {
+        /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
+        /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and
+        /// one for min-and-max). The HTML parameters are expected to be named -min and -max.</summary>
+        /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
+        /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
+        /// <param name="minRuleName" type="String">The name of the jQuery Validate rule to be used when you only
+        /// have a minimum value.</param>
+        /// <param name="maxRuleName" type="String">The name of the jQuery Validate rule to be used when you only
+        /// have a maximum value.</param>
+        /// <param name="minMaxRuleName" type="String">The name of the jQuery Validate rule to be used when you
+        /// have both a minimum and maximum value.</param>
+        /// <param name="minAttribute" type="String" optional="true">[Optional] The name of the HTML attribute that
+        /// contains the minimum value. The default is "min".</param>
+        /// <param name="maxAttribute" type="String" optional="true">[Optional] The name of the HTML attribute that
+        /// contains the maximum value. The default is "max".</param>
+        /// <returns type="jQuery.validator.unobtrusive.adapters" />
+        return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) {
+            var min = options.params.min,
+                max = options.params.max;
+
+            if (min && max) {
+                setValidationValues(options, minMaxRuleName, [min, max]);
+            }
+            else if (min) {
+                setValidationValues(options, minRuleName, min);
+            }
+            else if (max) {
+                setValidationValues(options, maxRuleName, max);
+            }
+        });
+    };
+
+    adapters.addSingleVal = function (adapterName, attribute, ruleName) {
+        /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
+        /// the jQuery Validate validation rule has a single value.</summary>
+        /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
+        /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).</param>
+        /// <param name="attribute" type="String">[Optional] The name of the HTML attribute that contains the value.
+        /// The default is "val".</param>
+        /// <param name="ruleName" type="String" optional="true">[Optional] The name of the jQuery Validate rule. If not provided, the value
+        /// of adapterName will be used instead.</param>
+        /// <returns type="jQuery.validator.unobtrusive.adapters" />
+        return this.add(adapterName, [attribute || "val"], function (options) {
+            setValidationValues(options, ruleName || adapterName, options.params[attribute]);
+        });
+    };
+
+    $jQval.addMethod("__dummy__", function (value, element, params) {
+        return true;
+    });
+
+    $jQval.addMethod("regex", function (value, element, params) {
+        var match;
+        if (this.optional(element)) {
+            return true;
+        }
+
+        match = new RegExp(params).exec(value);
+        return (match && (match.index === 0) && (match[0].length === value.length));
+    });
+
+    $jQval.addMethod("nonalphamin", function (value, element, nonalphamin) {
+        var match;
+        if (nonalphamin) {
+            match = value.match(/\W/g);
+            match = match && match.length >= nonalphamin;
+        }
+        return match;
+    });
+
+    if ($jQval.methods.extension) {
+        adapters.addSingleVal("accept", "mimtype");
+        adapters.addSingleVal("extension", "extension");
+    } else {
+        // for backward compatibility, when the 'extension' validation method does not exist, such as with versions
+        // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for
+        // validating the extension, and ignore mime-type validations as they are not supported.
+        adapters.addSingleVal("extension", "extension", "accept");
+    }
+
+    adapters.addSingleVal("regex", "pattern");
+    adapters.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");
+    adapters.addMinMax("length", "minlength", "maxlength", "rangelength").addMinMax("range", "min", "max", "range");
+    adapters.addMinMax("minlength", "minlength").addMinMax("maxlength", "minlength", "maxlength");
+    adapters.add("equalto", ["other"], function (options) {
+        var prefix = getModelPrefix(options.element.name),
+            other = options.params.other,
+            fullOtherName = appendModelPrefix(other, prefix),
+            element = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(fullOtherName) + "']")[0];
+
+        setValidationValues(options, "equalTo", element);
+    });
+    adapters.add("required", function (options) {
+        // jQuery Validate equates "required" with "mandatory" for checkbox elements
+        if (options.element.tagName.toUpperCase() !== "INPUT" || options.element.type.toUpperCase() !== "CHECKBOX") {
+            setValidationValues(options, "required", true);
+        }
+    });
+    adapters.add("remote", ["url", "type", "additionalfields"], function (options) {
+        var value = {
+            url: options.params.url,
+            type: options.params.type || "GET",
+            data: {}
+        },
+            prefix = getModelPrefix(options.element.name);
+
+        $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {
+            var paramName = appendModelPrefix(fieldName, prefix);
+            value.data[paramName] = function () {
+                var field = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(paramName) + "']");
+                // For checkboxes and radio buttons, only pick up values from checked fields.
+                if (field.is(":checkbox")) {
+                    return field.filter(":checked").val() || field.filter(":hidden").val() || '';
+                }
+                else if (field.is(":radio")) {
+                    return field.filter(":checked").val() || '';
+                }
+                return field.val();
+            };
+        });
+
+        setValidationValues(options, "remote", value);
+    });
+    adapters.add("password", ["min", "nonalphamin", "regex"], function (options) {
+        if (options.params.min) {
+            setValidationValues(options, "minlength", options.params.min);
+        }
+        if (options.params.nonalphamin) {
+            setValidationValues(options, "nonalphamin", options.params.nonalphamin);
+        }
+        if (options.params.regex) {
+            setValidationValues(options, "regex", options.params.regex);
+        }
+    });
+    adapters.add("fileextensions", ["extensions"], function (options) {
+        setValidationValues(options, "extension", options.params.extensions);
+    });
+
+    $(function () {
+        $jQval.unobtrusive.parse(document);
+    });
+
+    return $jQval.unobtrusive;
+}));
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js
new file mode 100644
index 0000000..553d427
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js
@@ -0,0 +1,5 @@
+// Unobtrusive validation support library for jQuery and jQuery Validate
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+// @version v3.2.11
+!function(a){"function"==typeof define&&define.amd?define("jquery.validate.unobtrusive",["jquery-validation"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery-validation")):jQuery.validator.unobtrusive=a(jQuery)}(function(a){function e(a,e,n){a.rules[e]=n,a.message&&(a.messages[e]=a.message)}function n(a){return a.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g)}function t(a){return a.replace(/([!"#$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~])/g,"\\$1")}function r(a){return a.substr(0,a.lastIndexOf(".")+1)}function i(a,e){return 0===a.indexOf("*.")&&(a=a.replace("*.",e)),a}function o(e,n){var r=a(this).find("[data-valmsg-for='"+t(n[0].name)+"']"),i=r.attr("data-valmsg-replace"),o=i?a.parseJSON(i)!==!1:null;r.removeClass("field-validation-valid").addClass("field-validation-error"),e.data("unobtrusiveContainer",r),o?(r.empty(),e.removeClass("input-validation-error").appendTo(r)):e.hide()}function d(e,n){var t=a(this).find("[data-valmsg-summary=true]"),r=t.find("ul");r&&r.length&&n.errorList.length&&(r.empty(),t.addClass("validation-summary-errors").removeClass("validation-summary-valid"),a.each(n.errorList,function(){a("<li />").html(this.message).appendTo(r)}))}function s(e){var n=e.data("unobtrusiveContainer");if(n){var t=n.attr("data-valmsg-replace"),r=t?a.parseJSON(t):null;n.addClass("field-validation-valid").removeClass("field-validation-error"),e.removeData("unobtrusiveContainer"),r&&n.empty()}}function l(e){var n=a(this),t="__jquery_unobtrusive_validation_form_reset";if(!n.data(t)){n.data(t,!0);try{n.data("validator").resetForm()}finally{n.removeData(t)}n.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors"),n.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")}}function u(e){var n=a(e),t=n.data(v),r=a.proxy(l,e),i=f.unobtrusive.options||{},u=function(n,t){var r=i[n];r&&a.isFunction(r)&&r.apply(e,t)};return t||(t={options:{errorClass:i.errorClass||"input-validation-error",errorElement:i.errorElement||"span",errorPlacement:function(){o.apply(e,arguments),u("errorPlacement",arguments)},invalidHandler:function(){d.apply(e,arguments),u("invalidHandler",arguments)},messages:{},rules:{},success:function(){s.apply(e,arguments),u("success",arguments)}},attachValidation:function(){n.off("reset."+v,r).on("reset."+v,r).validate(this.options)},validate:function(){return n.validate(),n.valid()}},n.data(v,t)),t}var m,f=a.validator,v="unobtrusiveValidation";return f.unobtrusive={adapters:[],parseElement:function(e,n){var t,r,i,o=a(e),d=o.parents("form")[0];d&&(t=u(d),t.options.rules[e.name]=r={},t.options.messages[e.name]=i={},a.each(this.adapters,function(){var n="data-val-"+this.name,t=o.attr(n),s={};void 0!==t&&(n+="-",a.each(this.params,function(){s[this]=o.attr(n+this)}),this.adapt({element:e,form:d,message:t,params:s,rules:r,messages:i}))}),a.extend(r,{__dummy__:!0}),n||t.attachValidation())},parse:function(e){var n=a(e),t=n.parents().addBack().filter("form").add(n.find("form")).has("[data-val=true]");n.find("[data-val=true]").each(function(){f.unobtrusive.parseElement(this,!0)}),t.each(function(){var a=u(this);a&&a.attachValidation()})}},m=f.unobtrusive.adapters,m.add=function(a,e,n){return n||(n=e,e=[]),this.push({name:a,params:e,adapt:n}),this},m.addBool=function(a,n){return this.add(a,function(t){e(t,n||a,!0)})},m.addMinMax=function(a,n,t,r,i,o){return this.add(a,[i||"min",o||"max"],function(a){var i=a.params.min,o=a.params.max;i&&o?e(a,r,[i,o]):i?e(a,n,i):o&&e(a,t,o)})},m.addSingleVal=function(a,n,t){return this.add(a,[n||"val"],function(r){e(r,t||a,r.params[n])})},f.addMethod("__dummy__",function(a,e,n){return!0}),f.addMethod("regex",function(a,e,n){var t;return!!this.optional(e)||(t=new RegExp(n).exec(a),t&&0===t.index&&t[0].length===a.length)}),f.addMethod("nonalphamin",function(a,e,n){var t;return n&&(t=a.match(/\W/g),t=t&&t.length>=n),t}),f.methods.extension?(m.addSingleVal("accept","mimtype"),m.addSingleVal("extension","extension")):m.addSingleVal("extension","extension","accept"),m.addSingleVal("regex","pattern"),m.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url"),m.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range"),m.addMinMax("minlength","minlength").addMinMax("maxlength","minlength","maxlength"),m.add("equalto",["other"],function(n){var o=r(n.element.name),d=n.params.other,s=i(d,o),l=a(n.form).find(":input").filter("[name='"+t(s)+"']")[0];e(n,"equalTo",l)}),m.add("required",function(a){"INPUT"===a.element.tagName.toUpperCase()&&"CHECKBOX"===a.element.type.toUpperCase()||e(a,"required",!0)}),m.add("remote",["url","type","additionalfields"],function(o){var d={url:o.params.url,type:o.params.type||"GET",data:{}},s=r(o.element.name);a.each(n(o.params.additionalfields||o.element.name),function(e,n){var r=i(n,s);d.data[r]=function(){var e=a(o.form).find(":input").filter("[name='"+t(r)+"']");return e.is(":checkbox")?e.filter(":checked").val()||e.filter(":hidden").val()||"":e.is(":radio")?e.filter(":checked").val()||"":e.val()}}),e(o,"remote",d)}),m.add("password",["min","nonalphamin","regex"],function(a){a.params.min&&e(a,"minlength",a.params.min),a.params.nonalphamin&&e(a,"nonalphamin",a.params.nonalphamin),a.params.regex&&e(a,"regex",a.params.regex)}),m.add("fileextensions",["extensions"],function(a){e(a,"extension",a.params.extensions)}),a(function(){f.unobtrusive.parse(document)}),f.unobtrusive});
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/LICENSE.md b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/LICENSE.md
new file mode 100644
index 0000000..dc377cc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/LICENSE.md
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+=====================
+
+Copyright J枚rn Zaefferer
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/additional-methods.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/additional-methods.js
new file mode 100644
index 0000000..e129bc0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/additional-methods.js
@@ -0,0 +1,1158 @@
+/*!
+ * jQuery Validation Plugin v1.17.0
+ *
+ * https://jqueryvalidation.org/
+ *
+ * Copyright (c) 2017 J枚rn Zaefferer
+ * Released under the MIT license
+ */
+(function( factory ) {
+	if ( typeof define === "function" && define.amd ) {
+		define( ["jquery", "./jquery.validate"], factory );
+	} else if (typeof module === "object" && module.exports) {
+		module.exports = factory( require( "jquery" ) );
+	} else {
+		factory( jQuery );
+	}
+}(function( $ ) {
+
+( function() {
+
+	function stripHtml( value ) {
+
+		// Remove html tags and space chars
+		return value.replace( /<.[^<>]*?>/g, " " ).replace( /&nbsp;|&#160;/gi, " " )
+
+		// Remove punctuation
+		.replace( /[.(),;:!?%#$'\"_+=\/\-鈥溾�濃�橾*/g, "" );
+	}
+
+	$.validator.addMethod( "maxWords", function( value, element, params ) {
+		return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length <= params;
+	}, $.validator.format( "Please enter {0} words or less." ) );
+
+	$.validator.addMethod( "minWords", function( value, element, params ) {
+		return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length >= params;
+	}, $.validator.format( "Please enter at least {0} words." ) );
+
+	$.validator.addMethod( "rangeWords", function( value, element, params ) {
+		var valueStripped = stripHtml( value ),
+			regex = /\b\w+\b/g;
+		return this.optional( element ) || valueStripped.match( regex ).length >= params[ 0 ] && valueStripped.match( regex ).length <= params[ 1 ];
+	}, $.validator.format( "Please enter between {0} and {1} words." ) );
+
+}() );
+
+// Accept a value from a file input based on a required mimetype
+$.validator.addMethod( "accept", function( value, element, param ) {
+
+	// Split mime on commas in case we have multiple types we can accept
+	var typeParam = typeof param === "string" ? param.replace( /\s/g, "" ) : "image/*",
+		optionalValue = this.optional( element ),
+		i, file, regex;
+
+	// Element is optional
+	if ( optionalValue ) {
+		return optionalValue;
+	}
+
+	if ( $( element ).attr( "type" ) === "file" ) {
+
+		// Escape string to be used in the regex
+		// see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
+		// Escape also "/*" as "/.*" as a wildcard
+		typeParam = typeParam
+				.replace( /[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&" )
+				.replace( /,/g, "|" )
+				.replace( /\/\*/g, "/.*" );
+
+		// Check if the element has a FileList before checking each file
+		if ( element.files && element.files.length ) {
+			regex = new RegExp( ".?(" + typeParam + ")$", "i" );
+			for ( i = 0; i < element.files.length; i++ ) {
+				file = element.files[ i ];
+
+				// Grab the mimetype from the loaded file, verify it matches
+				if ( !file.type.match( regex ) ) {
+					return false;
+				}
+			}
+		}
+	}
+
+	// Either return true because we've validated each file, or because the
+	// browser does not support element.files and the FileList feature
+	return true;
+}, $.validator.format( "Please enter a value with a valid mimetype." ) );
+
+$.validator.addMethod( "alphanumeric", function( value, element ) {
+	return this.optional( element ) || /^\w+$/i.test( value );
+}, "Letters, numbers, and underscores only please" );
+
+/*
+ * Dutch bank account numbers (not 'giro' numbers) have 9 digits
+ * and pass the '11 check'.
+ * We accept the notation with spaces, as that is common.
+ * acceptable: 123456789 or 12 34 56 789
+ */
+$.validator.addMethod( "bankaccountNL", function( value, element ) {
+	if ( this.optional( element ) ) {
+		return true;
+	}
+	if ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {
+		return false;
+	}
+
+	// Now '11 check'
+	var account = value.replace( / /g, "" ), // Remove spaces
+		sum = 0,
+		len = account.length,
+		pos, factor, digit;
+	for ( pos = 0; pos < len; pos++ ) {
+		factor = len - pos;
+		digit = account.substring( pos, pos + 1 );
+		sum = sum + factor * digit;
+	}
+	return sum % 11 === 0;
+}, "Please specify a valid bank account number" );
+
+$.validator.addMethod( "bankorgiroaccountNL", function( value, element ) {
+	return this.optional( element ) ||
+			( $.validator.methods.bankaccountNL.call( this, value, element ) ) ||
+			( $.validator.methods.giroaccountNL.call( this, value, element ) );
+}, "Please specify a valid bank or giro account number" );
+
+/**
+ * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity.
+ *
+ * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)
+ *
+ * Validation is case-insensitive. Please make sure to normalize input yourself.
+ *
+ * BIC definition in detail:
+ * - First 4 characters - bank code (only letters)
+ * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)
+ * - Next 2 characters - location code (letters and digits)
+ *   a. shall not start with '0' or '1'
+ *   b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)
+ * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)
+ */
+$.validator.addMethod( "bic", function( value, element ) {
+    return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );
+}, "Please specify a valid BIC code" );
+
+/*
+ * C贸digo de identificaci贸n fiscal ( CIF ) is the tax identification code for Spanish legal entities
+ * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal
+ *
+ * Spanish CIF structure:
+ *
+ * [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ]
+ *
+ * Where:
+ *
+ * T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW]
+ * P: 2 characters. Province.
+ * N: 5 characters. Secuencial Number within the province.
+ * C: 1 character. Control Digit: [0-9A-J].
+ *
+ * [ T ]: Kind of Organizations. Possible values:
+ *
+ *   A. Corporations
+ *   B. LLCs
+ *   C. General partnerships
+ *   D. Companies limited partnerships
+ *   E. Communities of goods
+ *   F. Cooperative Societies
+ *   G. Associations
+ *   H. Communities of homeowners in horizontal property regime
+ *   J. Civil Societies
+ *   K. Old format
+ *   L. Old format
+ *   M. Old format
+ *   N. Nonresident entities
+ *   P. Local authorities
+ *   Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions
+ *   R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008)
+ *   S. Organs of State Administration and regions
+ *   V. Agrarian Transformation
+ *   W. Permanent establishments of non-resident in Spain
+ *
+ * [ C ]: Control Digit. It can be a number or a letter depending on T value:
+ * [ T ]  -->  [ C ]
+ * ------    ----------
+ *   A         Number
+ *   B         Number
+ *   E         Number
+ *   H         Number
+ *   K         Letter
+ *   P         Letter
+ *   Q         Letter
+ *   S         Letter
+ *
+ */
+$.validator.addMethod( "cifES", function( value, element ) {
+	"use strict";
+
+	if ( this.optional( element ) ) {
+		return true;
+	}
+
+	var cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\d{7})([0-9A-J])$/gi );
+	var letter  = value.substring( 0, 1 ), // [ T ]
+		number  = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ]
+		control = value.substring( 8, 9 ), // [ C ]
+		all_sum = 0,
+		even_sum = 0,
+		odd_sum = 0,
+		i, n,
+		control_digit,
+		control_letter;
+
+	function isOdd( n ) {
+		return n % 2 === 0;
+	}
+
+	// Quick format test
+	if ( value.length !== 9 || !cifRegEx.test( value ) ) {
+		return false;
+	}
+
+	for ( i = 0; i < number.length; i++ ) {
+		n = parseInt( number[ i ], 10 );
+
+		// Odd positions
+		if ( isOdd( i ) ) {
+
+			// Odd positions are multiplied first.
+			n *= 2;
+
+			// If the multiplication is bigger than 10 we need to adjust
+			odd_sum += n < 10 ? n : n - 9;
+
+		// Even positions
+		// Just sum them
+		} else {
+			even_sum += n;
+		}
+	}
+
+	all_sum = even_sum + odd_sum;
+	control_digit = ( 10 - ( all_sum ).toString().substr( -1 ) ).toString();
+	control_digit = parseInt( control_digit, 10 ) > 9 ? "0" : control_digit;
+	control_letter = "JABCDEFGHI".substr( control_digit, 1 ).toString();
+
+	// Control must be a digit
+	if ( letter.match( /[ABEH]/ ) ) {
+		return control === control_digit;
+
+	// Control must be a letter
+	} else if ( letter.match( /[KPQS]/ ) ) {
+		return control === control_letter;
+	}
+
+	// Can be either
+	return control === control_digit || control === control_letter;
+
+}, "Please specify a valid CIF number." );
+
+/*
+ * Brazillian CPF number (Cadastrado de Pessoas F铆sicas) is the equivalent of a Brazilian tax registration number.
+ * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.
+ */
+$.validator.addMethod( "cpfBR", function( value ) {
+
+	// Removing special characters from value
+	value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );
+
+	// Checking value to have 11 digits only
+	if ( value.length !== 11 ) {
+		return false;
+	}
+
+	var sum = 0,
+		firstCN, secondCN, checkResult, i;
+
+	firstCN = parseInt( value.substring( 9, 10 ), 10 );
+	secondCN = parseInt( value.substring( 10, 11 ), 10 );
+
+	checkResult = function( sum, cn ) {
+		var result = ( sum * 10 ) % 11;
+		if ( ( result === 10 ) || ( result === 11 ) ) {
+			result = 0;
+		}
+		return ( result === cn );
+	};
+
+	// Checking for dump data
+	if ( value === "" ||
+		value === "00000000000" ||
+		value === "11111111111" ||
+		value === "22222222222" ||
+		value === "33333333333" ||
+		value === "44444444444" ||
+		value === "55555555555" ||
+		value === "66666666666" ||
+		value === "77777777777" ||
+		value === "88888888888" ||
+		value === "99999999999"
+	) {
+		return false;
+	}
+
+	// Step 1 - using first Check Number:
+	for ( i = 1; i <= 9; i++ ) {
+		sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 11 - i );
+	}
+
+	// If first Check Number (CN) is valid, move to Step 2 - using second Check Number:
+	if ( checkResult( sum, firstCN ) ) {
+		sum = 0;
+		for ( i = 1; i <= 10; i++ ) {
+			sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 12 - i );
+		}
+		return checkResult( sum, secondCN );
+	}
+	return false;
+
+}, "Please specify a valid CPF number" );
+
+// https://jqueryvalidation.org/creditcard-method/
+// based on https://en.wikipedia.org/wiki/Luhn_algorithm
+$.validator.addMethod( "creditcard", function( value, element ) {
+	if ( this.optional( element ) ) {
+		return "dependency-mismatch";
+	}
+
+	// Accept only spaces, digits and dashes
+	if ( /[^0-9 \-]+/.test( value ) ) {
+		return false;
+	}
+
+	var nCheck = 0,
+		nDigit = 0,
+		bEven = false,
+		n, cDigit;
+
+	value = value.replace( /\D/g, "" );
+
+	// Basing min and max length on
+	// https://developer.ean.com/general_info/Valid_Credit_Card_Types
+	if ( value.length < 13 || value.length > 19 ) {
+		return false;
+	}
+
+	for ( n = value.length - 1; n >= 0; n-- ) {
+		cDigit = value.charAt( n );
+		nDigit = parseInt( cDigit, 10 );
+		if ( bEven ) {
+			if ( ( nDigit *= 2 ) > 9 ) {
+				nDigit -= 9;
+			}
+		}
+
+		nCheck += nDigit;
+		bEven = !bEven;
+	}
+
+	return ( nCheck % 10 ) === 0;
+}, "Please enter a valid credit card number." );
+
+/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
+ * Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
+ * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
+ */
+$.validator.addMethod( "creditcardtypes", function( value, element, param ) {
+	if ( /[^0-9\-]+/.test( value ) ) {
+		return false;
+	}
+
+	value = value.replace( /\D/g, "" );
+
+	var validTypes = 0x0000;
+
+	if ( param.mastercard ) {
+		validTypes |= 0x0001;
+	}
+	if ( param.visa ) {
+		validTypes |= 0x0002;
+	}
+	if ( param.amex ) {
+		validTypes |= 0x0004;
+	}
+	if ( param.dinersclub ) {
+		validTypes |= 0x0008;
+	}
+	if ( param.enroute ) {
+		validTypes |= 0x0010;
+	}
+	if ( param.discover ) {
+		validTypes |= 0x0020;
+	}
+	if ( param.jcb ) {
+		validTypes |= 0x0040;
+	}
+	if ( param.unknown ) {
+		validTypes |= 0x0080;
+	}
+	if ( param.all ) {
+		validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
+	}
+	if ( validTypes & 0x0001 && /^(5[12345])/.test( value ) ) { // Mastercard
+		return value.length === 16;
+	}
+	if ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa
+		return value.length === 16;
+	}
+	if ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex
+		return value.length === 15;
+	}
+	if ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub
+		return value.length === 14;
+	}
+	if ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute
+		return value.length === 15;
+	}
+	if ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover
+		return value.length === 16;
+	}
+	if ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb
+		return value.length === 16;
+	}
+	if ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb
+		return value.length === 15;
+	}
+	if ( validTypes & 0x0080 ) { // Unknown
+		return true;
+	}
+	return false;
+}, "Please enter a valid credit card number." );
+
+/**
+ * Validates currencies with any given symbols by @jameslouiz
+ * Symbols can be optional or required. Symbols required by default
+ *
+ * Usage examples:
+ *  currency: ["拢", false] - Use false for soft currency validation
+ *  currency: ["$", false]
+ *  currency: ["RM", false] - also works with text based symbols such as "RM" - Malaysia Ringgit etc
+ *
+ *  <input class="currencyInput" name="currencyInput">
+ *
+ * Soft symbol checking
+ *  currencyInput: {
+ *     currency: ["$", false]
+ *  }
+ *
+ * Strict symbol checking (default)
+ *  currencyInput: {
+ *     currency: "$"
+ *     //OR
+ *     currency: ["$", true]
+ *  }
+ *
+ * Multiple Symbols
+ *  currencyInput: {
+ *     currency: "$,拢,垄"
+ *  }
+ */
+$.validator.addMethod( "currency", function( value, element, param ) {
+    var isParamString = typeof param === "string",
+        symbol = isParamString ? param : param[ 0 ],
+        soft = isParamString ? true : param[ 1 ],
+        regex;
+
+    symbol = symbol.replace( /,/g, "" );
+    symbol = soft ? symbol + "]" : symbol + "]?";
+    regex = "^[" + symbol + "([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$";
+    regex = new RegExp( regex );
+    return this.optional( element ) || regex.test( value );
+
+}, "Please specify a valid currency" );
+
+$.validator.addMethod( "dateFA", function( value, element ) {
+	return this.optional( element ) || /^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value );
+}, $.validator.messages.date );
+
+/**
+ * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
+ *
+ * @example $.validator.methods.date("01/01/1900")
+ * @result true
+ *
+ * @example $.validator.methods.date("01/13/1990")
+ * @result false
+ *
+ * @example $.validator.methods.date("01.01.1900")
+ * @result false
+ *
+ * @example <input name="pippo" class="{dateITA:true}" />
+ * @desc Declares an optional input element whose value must be a valid date.
+ *
+ * @name $.validator.methods.dateITA
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+$.validator.addMethod( "dateITA", function( value, element ) {
+	var check = false,
+		re = /^\d{1,2}\/\d{1,2}\/\d{4}$/,
+		adata, gg, mm, aaaa, xdata;
+	if ( re.test( value ) ) {
+		adata = value.split( "/" );
+		gg = parseInt( adata[ 0 ], 10 );
+		mm = parseInt( adata[ 1 ], 10 );
+		aaaa = parseInt( adata[ 2 ], 10 );
+		xdata = new Date( Date.UTC( aaaa, mm - 1, gg, 12, 0, 0, 0 ) );
+		if ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth() === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) {
+			check = true;
+		} else {
+			check = false;
+		}
+	} else {
+		check = false;
+	}
+	return this.optional( element ) || check;
+}, $.validator.messages.date );
+
+$.validator.addMethod( "dateNL", function( value, element ) {
+	return this.optional( element ) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test( value );
+}, $.validator.messages.date );
+
+// Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept
+$.validator.addMethod( "extension", function( value, element, param ) {
+	param = typeof param === "string" ? param.replace( /,/g, "|" ) : "png|jpe?g|gif";
+	return this.optional( element ) || value.match( new RegExp( "\\.(" + param + ")$", "i" ) );
+}, $.validator.format( "Please enter a value with a valid extension." ) );
+
+/**
+ * Dutch giro account numbers (not bank numbers) have max 7 digits
+ */
+$.validator.addMethod( "giroaccountNL", function( value, element ) {
+	return this.optional( element ) || /^[0-9]{1,7}$/.test( value );
+}, "Please specify a valid giro account number" );
+
+/**
+ * IBAN is the international bank account number.
+ * It has a country - specific format, that is checked here too
+ *
+ * Validation is case-insensitive. Please make sure to normalize input yourself.
+ */
+$.validator.addMethod( "iban", function( value, element ) {
+
+	// Some quick simple tests to prevent needless work
+	if ( this.optional( element ) ) {
+		return true;
+	}
+
+	// Remove spaces and to upper case
+	var iban = value.replace( / /g, "" ).toUpperCase(),
+		ibancheckdigits = "",
+		leadingZeroes = true,
+		cRest = "",
+		cOperator = "",
+		countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;
+
+	// Check for IBAN code length.
+	// It contains:
+	// country code ISO 3166-1 - two letters,
+	// two check digits,
+	// Basic Bank Account Number (BBAN) - up to 30 chars
+	var minimalIBANlength = 5;
+	if ( iban.length < minimalIBANlength ) {
+		return false;
+	}
+
+	// Check the country code and find the country specific format
+	countrycode = iban.substring( 0, 2 );
+	bbancountrypatterns = {
+		"AL": "\\d{8}[\\dA-Z]{16}",
+		"AD": "\\d{8}[\\dA-Z]{12}",
+		"AT": "\\d{16}",
+		"AZ": "[\\dA-Z]{4}\\d{20}",
+		"BE": "\\d{12}",
+		"BH": "[A-Z]{4}[\\dA-Z]{14}",
+		"BA": "\\d{16}",
+		"BR": "\\d{23}[A-Z][\\dA-Z]",
+		"BG": "[A-Z]{4}\\d{6}[\\dA-Z]{8}",
+		"CR": "\\d{17}",
+		"HR": "\\d{17}",
+		"CY": "\\d{8}[\\dA-Z]{16}",
+		"CZ": "\\d{20}",
+		"DK": "\\d{14}",
+		"DO": "[A-Z]{4}\\d{20}",
+		"EE": "\\d{16}",
+		"FO": "\\d{14}",
+		"FI": "\\d{14}",
+		"FR": "\\d{10}[\\dA-Z]{11}\\d{2}",
+		"GE": "[\\dA-Z]{2}\\d{16}",
+		"DE": "\\d{18}",
+		"GI": "[A-Z]{4}[\\dA-Z]{15}",
+		"GR": "\\d{7}[\\dA-Z]{16}",
+		"GL": "\\d{14}",
+		"GT": "[\\dA-Z]{4}[\\dA-Z]{20}",
+		"HU": "\\d{24}",
+		"IS": "\\d{22}",
+		"IE": "[\\dA-Z]{4}\\d{14}",
+		"IL": "\\d{19}",
+		"IT": "[A-Z]\\d{10}[\\dA-Z]{12}",
+		"KZ": "\\d{3}[\\dA-Z]{13}",
+		"KW": "[A-Z]{4}[\\dA-Z]{22}",
+		"LV": "[A-Z]{4}[\\dA-Z]{13}",
+		"LB": "\\d{4}[\\dA-Z]{20}",
+		"LI": "\\d{5}[\\dA-Z]{12}",
+		"LT": "\\d{16}",
+		"LU": "\\d{3}[\\dA-Z]{13}",
+		"MK": "\\d{3}[\\dA-Z]{10}\\d{2}",
+		"MT": "[A-Z]{4}\\d{5}[\\dA-Z]{18}",
+		"MR": "\\d{23}",
+		"MU": "[A-Z]{4}\\d{19}[A-Z]{3}",
+		"MC": "\\d{10}[\\dA-Z]{11}\\d{2}",
+		"MD": "[\\dA-Z]{2}\\d{18}",
+		"ME": "\\d{18}",
+		"NL": "[A-Z]{4}\\d{10}",
+		"NO": "\\d{11}",
+		"PK": "[\\dA-Z]{4}\\d{16}",
+		"PS": "[\\dA-Z]{4}\\d{21}",
+		"PL": "\\d{24}",
+		"PT": "\\d{21}",
+		"RO": "[A-Z]{4}[\\dA-Z]{16}",
+		"SM": "[A-Z]\\d{10}[\\dA-Z]{12}",
+		"SA": "\\d{2}[\\dA-Z]{18}",
+		"RS": "\\d{18}",
+		"SK": "\\d{20}",
+		"SI": "\\d{15}",
+		"ES": "\\d{20}",
+		"SE": "\\d{20}",
+		"CH": "\\d{5}[\\dA-Z]{12}",
+		"TN": "\\d{20}",
+		"TR": "\\d{5}[\\dA-Z]{17}",
+		"AE": "\\d{3}\\d{16}",
+		"GB": "[A-Z]{4}\\d{14}",
+		"VG": "[\\dA-Z]{4}\\d{16}"
+	};
+
+	bbanpattern = bbancountrypatterns[ countrycode ];
+
+	// As new countries will start using IBAN in the
+	// future, we only check if the countrycode is known.
+	// This prevents false negatives, while almost all
+	// false positives introduced by this, will be caught
+	// by the checksum validation below anyway.
+	// Strict checking should return FALSE for unknown
+	// countries.
+	if ( typeof bbanpattern !== "undefined" ) {
+		ibanregexp = new RegExp( "^[A-Z]{2}\\d{2}" + bbanpattern + "$", "" );
+		if ( !( ibanregexp.test( iban ) ) ) {
+			return false; // Invalid country specific format
+		}
+	}
+
+	// Now check the checksum, first convert to digits
+	ibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 );
+	for ( i = 0; i < ibancheck.length; i++ ) {
+		charAt = ibancheck.charAt( i );
+		if ( charAt !== "0" ) {
+			leadingZeroes = false;
+		}
+		if ( !leadingZeroes ) {
+			ibancheckdigits += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf( charAt );
+		}
+	}
+
+	// Calculate the result of: ibancheckdigits % 97
+	for ( p = 0; p < ibancheckdigits.length; p++ ) {
+		cChar = ibancheckdigits.charAt( p );
+		cOperator = "" + cRest + "" + cChar;
+		cRest = cOperator % 97;
+	}
+	return cRest === 1;
+}, "Please specify a valid IBAN" );
+
+$.validator.addMethod( "integer", function( value, element ) {
+	return this.optional( element ) || /^-?\d+$/.test( value );
+}, "A positive or negative non-decimal number please" );
+
+$.validator.addMethod( "ipv4", function( value, element ) {
+	return this.optional( element ) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test( value );
+}, "Please enter a valid IP v4 address." );
+
+$.validator.addMethod( "ipv6", function( value, element ) {
+	return this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value );
+}, "Please enter a valid IP v6 address." );
+
+$.validator.addMethod( "lettersonly", function( value, element ) {
+	return this.optional( element ) || /^[a-z]+$/i.test( value );
+}, "Letters only please" );
+
+$.validator.addMethod( "letterswithbasicpunc", function( value, element ) {
+	return this.optional( element ) || /^[a-z\-.,()'"\s]+$/i.test( value );
+}, "Letters or punctuation only please" );
+
+$.validator.addMethod( "mobileNL", function( value, element ) {
+	return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
+}, "Please specify a valid mobile number" );
+
+/* For UK phone functions, do the following server side processing:
+ * Compare original input with this RegEx pattern:
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
+ * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
+ */
+$.validator.addMethod( "mobileUK", function( phone_number, element ) {
+	phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
+	return this.optional( element ) || phone_number.length > 9 &&
+		phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/ );
+}, "Please specify a valid mobile number" );
+
+$.validator.addMethod( "netmask", function( value, element ) {
+    return this.optional( element ) || /^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test( value );
+}, "Please enter a valid netmask." );
+
+/*
+ * The NIE (N煤mero de Identificaci贸n de Extranjero) is a Spanish tax identification number assigned by the Spanish
+ * authorities to any foreigner.
+ *
+ * The NIE is the equivalent of a Spaniards N煤mero de Identificaci贸n Fiscal (NIF) which serves as a fiscal
+ * identification number. The CIF number (Certificado de Identificaci贸n Fiscal) is equivalent to the NIF, but applies to
+ * companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter.
+ */
+$.validator.addMethod( "nieES", function( value, element ) {
+	"use strict";
+
+	if ( this.optional( element ) ) {
+		return true;
+	}
+
+	var nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi );
+	var validChars = "TRWAGMYFPDXBNJZSQVHLCKET",
+		letter = value.substr( value.length - 1 ).toUpperCase(),
+		number;
+
+	value = value.toString().toUpperCase();
+
+	// Quick format test
+	if ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) {
+		return false;
+	}
+
+	// X means same number
+	// Y means number + 10000000
+	// Z means number + 20000000
+	value = value.replace( /^[X]/, "0" )
+		.replace( /^[Y]/, "1" )
+		.replace( /^[Z]/, "2" );
+
+	number = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 );
+
+	return validChars.charAt( parseInt( number, 10 ) % 23 ) === letter;
+
+}, "Please specify a valid NIE number." );
+
+/*
+ * The N煤mero de Identificaci贸n Fiscal ( NIF ) is the way tax identification used in Spain for individuals
+ */
+$.validator.addMethod( "nifES", function( value, element ) {
+	"use strict";
+
+	if ( this.optional( element ) ) {
+		return true;
+	}
+
+	value = value.toUpperCase();
+
+	// Basic format test
+	if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
+		return false;
+	}
+
+	// Test NIF
+	if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {
+		return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );
+	}
+
+	// Test specials NIF (starts with K, L or M)
+	if ( /^[KLM]{1}/.test( value ) ) {
+		return ( value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 1 ) % 23 ) );
+	}
+
+	return false;
+
+}, "Please specify a valid NIF number." );
+
+/*
+ * Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies
+ */
+$.validator.addMethod( "nipPL", function( value ) {
+	"use strict";
+
+	value = value.replace( /[^0-9]/g, "" );
+
+	if ( value.length !== 10 ) {
+		return false;
+	}
+
+	var arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ];
+	var intSum = 0;
+	for ( var i = 0; i < 9; i++ ) {
+		intSum += arrSteps[ i ] * value[ i ];
+	}
+	var int2 = intSum % 11;
+	var intControlNr = ( int2 === 10 ) ? 0 : int2;
+
+	return ( intControlNr === parseInt( value[ 9 ], 10 ) );
+}, "Please specify a valid NIP number." );
+
+$.validator.addMethod( "notEqualTo", function( value, element, param ) {
+	return this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );
+}, "Please enter a different value, values must not be the same." );
+
+$.validator.addMethod( "nowhitespace", function( value, element ) {
+	return this.optional( element ) || /^\S+$/i.test( value );
+}, "No white space please" );
+
+/**
+* Return true if the field value matches the given format RegExp
+*
+* @example $.validator.methods.pattern("AR1004",element,/^AR\d{4}$/)
+* @result true
+*
+* @example $.validator.methods.pattern("BR1004",element,/^AR\d{4}$/)
+* @result false
+*
+* @name $.validator.methods.pattern
+* @type Boolean
+* @cat Plugins/Validate/Methods
+*/
+$.validator.addMethod( "pattern", function( value, element, param ) {
+	if ( this.optional( element ) ) {
+		return true;
+	}
+	if ( typeof param === "string" ) {
+		param = new RegExp( "^(?:" + param + ")$" );
+	}
+	return param.test( value );
+}, "Invalid format." );
+
+/**
+ * Dutch phone numbers have 10 digits (or 11 and start with +31).
+ */
+$.validator.addMethod( "phoneNL", function( value, element ) {
+	return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
+}, "Please specify a valid phone number." );
+
+/* For UK phone functions, do the following server side processing:
+ * Compare original input with this RegEx pattern:
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
+ * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
+ */
+
+// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
+$.validator.addMethod( "phonesUK", function( phone_number, element ) {
+	phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
+	return this.optional( element ) || phone_number.length > 9 &&
+		phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/ );
+}, "Please specify a valid uk phone number" );
+
+/* For UK phone functions, do the following server side processing:
+ * Compare original input with this RegEx pattern:
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
+ * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
+ */
+$.validator.addMethod( "phoneUK", function( phone_number, element ) {
+	phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
+	return this.optional( element ) || phone_number.length > 9 &&
+		phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/ );
+}, "Please specify a valid phone number" );
+
+/**
+ * Matches US phone number format
+ *
+ * where the area code may not start with 1 and the prefix may not start with 1
+ * allows '-' or ' ' as a separator and allows parens around area code
+ * some people may want to put a '1' in front of their number
+ *
+ * 1(212)-999-2345 or
+ * 212 999 2344 or
+ * 212-999-0983
+ *
+ * but not
+ * 111-123-5434
+ * and not
+ * 212 123 4567
+ */
+$.validator.addMethod( "phoneUS", function( phone_number, element ) {
+	phone_number = phone_number.replace( /\s+/g, "" );
+	return this.optional( element ) || phone_number.length > 9 &&
+		phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/ );
+}, "Please specify a valid phone number" );
+
+/*
+* Valida CEPs do brasileiros:
+*
+* Formatos aceitos:
+* 99999-999
+* 99.999-999
+* 99999999
+*/
+$.validator.addMethod( "postalcodeBR", function( cep_value, element ) {
+	return this.optional( element ) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value );
+}, "Informe um CEP v谩lido." );
+
+/**
+ * Matches a valid Canadian Postal Code
+ *
+ * @example jQuery.validator.methods.postalCodeCA( "H0H 0H0", element )
+ * @result true
+ *
+ * @example jQuery.validator.methods.postalCodeCA( "H0H0H0", element )
+ * @result false
+ *
+ * @name jQuery.validator.methods.postalCodeCA
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+$.validator.addMethod( "postalCodeCA", function( value, element ) {
+	return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test( value );
+}, "Please specify a valid postal code" );
+
+/* Matches Italian postcode (CAP) */
+$.validator.addMethod( "postalcodeIT", function( value, element ) {
+	return this.optional( element ) || /^\d{5}$/.test( value );
+}, "Please specify a valid postal code" );
+
+$.validator.addMethod( "postalcodeNL", function( value, element ) {
+	return this.optional( element ) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test( value );
+}, "Please specify a valid postal code" );
+
+// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK)
+$.validator.addMethod( "postcodeUK", function( value, element ) {
+	return this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test( value );
+}, "Please specify a valid UK postcode" );
+
+/*
+ * Lets you say "at least X inputs that match selector Y must be filled."
+ *
+ * The end result is that neither of these inputs:
+ *
+ *	<input class="productinfo" name="partnumber">
+ *	<input class="productinfo" name="description">
+ *
+ *	...will validate unless at least one of them is filled.
+ *
+ * partnumber:	{require_from_group: [1,".productinfo"]},
+ * description: {require_from_group: [1,".productinfo"]}
+ *
+ * options[0]: number of fields that must be filled in the group
+ * options[1]: CSS selector that defines the group of conditionally required fields
+ */
+$.validator.addMethod( "require_from_group", function( value, element, options ) {
+	var $fields = $( options[ 1 ], element.form ),
+		$fieldsFirst = $fields.eq( 0 ),
+		validator = $fieldsFirst.data( "valid_req_grp" ) ? $fieldsFirst.data( "valid_req_grp" ) : $.extend( {}, this ),
+		isValid = $fields.filter( function() {
+			return validator.elementValue( this );
+		} ).length >= options[ 0 ];
+
+	// Store the cloned validator for future validation
+	$fieldsFirst.data( "valid_req_grp", validator );
+
+	// If element isn't being validated, run each require_from_group field's validation rules
+	if ( !$( element ).data( "being_validated" ) ) {
+		$fields.data( "being_validated", true );
+		$fields.each( function() {
+			validator.element( this );
+		} );
+		$fields.data( "being_validated", false );
+	}
+	return isValid;
+}, $.validator.format( "Please fill at least {0} of these fields." ) );
+
+/*
+ * Lets you say "either at least X inputs that match selector Y must be filled,
+ * OR they must all be skipped (left blank)."
+ *
+ * The end result, is that none of these inputs:
+ *
+ *	<input class="productinfo" name="partnumber">
+ *	<input class="productinfo" name="description">
+ *	<input class="productinfo" name="color">
+ *
+ *	...will validate unless either at least two of them are filled,
+ *	OR none of them are.
+ *
+ * partnumber:	{skip_or_fill_minimum: [2,".productinfo"]},
+ * description: {skip_or_fill_minimum: [2,".productinfo"]},
+ * color:		{skip_or_fill_minimum: [2,".productinfo"]}
+ *
+ * options[0]: number of fields that must be filled in the group
+ * options[1]: CSS selector that defines the group of conditionally required fields
+ *
+ */
+$.validator.addMethod( "skip_or_fill_minimum", function( value, element, options ) {
+	var $fields = $( options[ 1 ], element.form ),
+		$fieldsFirst = $fields.eq( 0 ),
+		validator = $fieldsFirst.data( "valid_skip" ) ? $fieldsFirst.data( "valid_skip" ) : $.extend( {}, this ),
+		numberFilled = $fields.filter( function() {
+			return validator.elementValue( this );
+		} ).length,
+		isValid = numberFilled === 0 || numberFilled >= options[ 0 ];
+
+	// Store the cloned validator for future validation
+	$fieldsFirst.data( "valid_skip", validator );
+
+	// If element isn't being validated, run each skip_or_fill_minimum field's validation rules
+	if ( !$( element ).data( "being_validated" ) ) {
+		$fields.data( "being_validated", true );
+		$fields.each( function() {
+			validator.element( this );
+		} );
+		$fields.data( "being_validated", false );
+	}
+	return isValid;
+}, $.validator.format( "Please either skip these fields or fill at least {0} of them." ) );
+
+/* Validates US States and/or Territories by @jdforsythe
+ * Can be case insensitive or require capitalization - default is case insensitive
+ * Can include US Territories or not - default does not
+ * Can include US Military postal abbreviations (AA, AE, AP) - default does not
+ *
+ * Note: "States" always includes DC (District of Colombia)
+ *
+ * Usage examples:
+ *
+ *  This is the default - case insensitive, no territories, no military zones
+ *  stateInput: {
+ *     caseSensitive: false,
+ *     includeTerritories: false,
+ *     includeMilitary: false
+ *  }
+ *
+ *  Only allow capital letters, no territories, no military zones
+ *  stateInput: {
+ *     caseSensitive: false
+ *  }
+ *
+ *  Case insensitive, include territories but not military zones
+ *  stateInput: {
+ *     includeTerritories: true
+ *  }
+ *
+ *  Only allow capital letters, include territories and military zones
+ *  stateInput: {
+ *     caseSensitive: true,
+ *     includeTerritories: true,
+ *     includeMilitary: true
+ *  }
+ *
+ */
+$.validator.addMethod( "stateUS", function( value, element, options ) {
+	var isDefault = typeof options === "undefined",
+		caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive,
+		includeTerritories = ( isDefault || typeof options.includeTerritories === "undefined" ) ? false : options.includeTerritories,
+		includeMilitary = ( isDefault || typeof options.includeMilitary === "undefined" ) ? false : options.includeMilitary,
+		regex;
+
+	if ( !includeTerritories && !includeMilitary ) {
+		regex = "^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
+	} else if ( includeTerritories && includeMilitary ) {
+		regex = "^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
+	} else if ( includeTerritories ) {
+		regex = "^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
+	} else {
+		regex = "^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
+	}
+
+	regex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, "i" );
+	return this.optional( element ) || regex.test( value );
+}, "Please specify a valid state" );
+
+// TODO check if value starts with <, otherwise don't try stripping anything
+$.validator.addMethod( "strippedminlength", function( value, element, param ) {
+	return $( value ).text().length >= param;
+}, $.validator.format( "Please enter at least {0} characters" ) );
+
+$.validator.addMethod( "time", function( value, element ) {
+	return this.optional( element ) || /^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test( value );
+}, "Please enter a valid time, between 00:00 and 23:59" );
+
+$.validator.addMethod( "time12h", function( value, element ) {
+	return this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test( value );
+}, "Please enter a valid time in 12-hour am/pm format" );
+
+// Same as url, but TLD is optional
+$.validator.addMethod( "url2", function( value, element ) {
+	return this.optional( element ) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value );
+}, $.validator.messages.url );
+
+/**
+ * Return true, if the value is a valid vehicle identification number (VIN).
+ *
+ * Works with all kind of text inputs.
+ *
+ * @example <input type="text" size="20" name="VehicleID" class="{required:true,vinUS:true}" />
+ * @desc Declares a required input element whose value must be a valid vehicle identification number.
+ *
+ * @name $.validator.methods.vinUS
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+$.validator.addMethod( "vinUS", function( v ) {
+	if ( v.length !== 17 ) {
+		return false;
+	}
+
+	var LL = [ "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ],
+		VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ],
+		FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ],
+		rs = 0,
+		i, n, d, f, cd, cdv;
+
+	for ( i = 0; i < 17; i++ ) {
+		f = FL[ i ];
+		d = v.slice( i, i + 1 );
+		if ( i === 8 ) {
+			cdv = d;
+		}
+		if ( !isNaN( d ) ) {
+			d *= f;
+		} else {
+			for ( n = 0; n < LL.length; n++ ) {
+				if ( d.toUpperCase() === LL[ n ] ) {
+					d = VL[ n ];
+					d *= f;
+					if ( isNaN( cdv ) && n === 8 ) {
+						cdv = LL[ n ];
+					}
+					break;
+				}
+			}
+		}
+		rs += d;
+	}
+	cd = rs % 11;
+	if ( cd === 10 ) {
+		cd = "X";
+	}
+	if ( cd === cdv ) {
+		return true;
+	}
+	return false;
+}, "The specified vehicle identification number (VIN) is invalid." );
+
+$.validator.addMethod( "zipcodeUS", function( value, element ) {
+	return this.optional( element ) || /^\d{5}(-\d{4})?$/.test( value );
+}, "The specified US ZIP Code is invalid" );
+
+$.validator.addMethod( "ziprange", function( value, element ) {
+	return this.optional( element ) || /^90[2-5]\d\{2\}-\d{4}$/.test( value );
+}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx" );
+return $;
+}));
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/additional-methods.min.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/additional-methods.min.js
new file mode 100644
index 0000000..6767f24
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/additional-methods.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.17.0 - 7/29/2017
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2017 J枚rn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","./jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return function(){function b(a){return a.replace(/<.[^<>]*?>/g," ").replace(/&nbsp;|&#160;/gi," ").replace(/[.(),;:!?%#$'\"_+=\/\-鈥溾�濃�橾*/g,"")}a.validator.addMethod("maxWords",function(a,c,d){return this.optional(c)||b(a).match(/\b\w+\b/g).length<=d},a.validator.format("Please enter {0} words or less.")),a.validator.addMethod("minWords",function(a,c,d){return this.optional(c)||b(a).match(/\b\w+\b/g).length>=d},a.validator.format("Please enter at least {0} words.")),a.validator.addMethod("rangeWords",function(a,c,d){var e=b(a),f=/\b\w+\b/g;return this.optional(c)||e.match(f).length>=d[0]&&e.match(f).length<=d[1]},a.validator.format("Please enter between {0} and {1} words."))}(),a.validator.addMethod("accept",function(b,c,d){var e,f,g,h="string"==typeof d?d.replace(/\s/g,""):"image/*",i=this.optional(c);if(i)return i;if("file"===a(c).attr("type")&&(h=h.replace(/[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g,"\\$&").replace(/,/g,"|").replace(/\/\*/g,"/.*"),c.files&&c.files.length))for(g=new RegExp(".?("+h+")$","i"),e=0;e<c.files.length;e++)if(f=c.files[e],!f.type.match(g))return!1;return!0},a.validator.format("Please enter a value with a valid mimetype.")),a.validator.addMethod("alphanumeric",function(a,b){return this.optional(b)||/^\w+$/i.test(a)},"Letters, numbers, and underscores only please"),a.validator.addMethod("bankaccountNL",function(a,b){if(this.optional(b))return!0;if(!/^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test(a))return!1;var c,d,e,f=a.replace(/ /g,""),g=0,h=f.length;for(c=0;c<h;c++)d=h-c,e=f.substring(c,c+1),g+=d*e;return g%11===0},"Please specify a valid bank account number"),a.validator.addMethod("bankorgiroaccountNL",function(b,c){return this.optional(c)||a.validator.methods.bankaccountNL.call(this,b,c)||a.validator.methods.giroaccountNL.call(this,b,c)},"Please specify a valid bank or giro account number"),a.validator.addMethod("bic",function(a,b){return this.optional(b)||/^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test(a.toUpperCase())},"Please specify a valid BIC code"),a.validator.addMethod("cifES",function(a,b){"use strict";function c(a){return a%2===0}if(this.optional(b))return!0;var d,e,f,g,h=new RegExp(/^([ABCDEFGHJKLMNPQRSUVW])(\d{7})([0-9A-J])$/gi),i=a.substring(0,1),j=a.substring(1,8),k=a.substring(8,9),l=0,m=0,n=0;if(9!==a.length||!h.test(a))return!1;for(d=0;d<j.length;d++)e=parseInt(j[d],10),c(d)?(e*=2,n+=e<10?e:e-9):m+=e;return l=m+n,f=(10-l.toString().substr(-1)).toString(),f=parseInt(f,10)>9?"0":f,g="JABCDEFGHI".substr(f,1).toString(),i.match(/[ABEH]/)?k===f:i.match(/[KPQS]/)?k===g:k===f||k===g},"Please specify a valid CIF number."),a.validator.addMethod("cpfBR",function(a){if(a=a.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g,""),11!==a.length)return!1;var b,c,d,e,f=0;if(b=parseInt(a.substring(9,10),10),c=parseInt(a.substring(10,11),10),d=function(a,b){var c=10*a%11;return 10!==c&&11!==c||(c=0),c===b},""===a||"00000000000"===a||"11111111111"===a||"22222222222"===a||"33333333333"===a||"44444444444"===a||"55555555555"===a||"66666666666"===a||"77777777777"===a||"88888888888"===a||"99999999999"===a)return!1;for(e=1;e<=9;e++)f+=parseInt(a.substring(e-1,e),10)*(11-e);if(d(f,b)){for(f=0,e=1;e<=10;e++)f+=parseInt(a.substring(e-1,e),10)*(12-e);return d(f,c)}return!1},"Please specify a valid CPF number"),a.validator.addMethod("creditcard",function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 \-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\D/g,""),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},"Please enter a valid credit card number."),a.validator.addMethod("creditcardtypes",function(a,b,c){if(/[^0-9\-]+/.test(a))return!1;a=a.replace(/\D/g,"");var d=0;return c.mastercard&&(d|=1),c.visa&&(d|=2),c.amex&&(d|=4),c.dinersclub&&(d|=8),c.enroute&&(d|=16),c.discover&&(d|=32),c.jcb&&(d|=64),c.unknown&&(d|=128),c.all&&(d=255),1&d&&/^(5[12345])/.test(a)?16===a.length:2&d&&/^(4)/.test(a)?16===a.length:4&d&&/^(3[47])/.test(a)?15===a.length:8&d&&/^(3(0[012345]|[68]))/.test(a)?14===a.length:16&d&&/^(2(014|149))/.test(a)?15===a.length:32&d&&/^(6011)/.test(a)?16===a.length:64&d&&/^(3)/.test(a)?16===a.length:64&d&&/^(2131|1800)/.test(a)?15===a.length:!!(128&d)},"Please enter a valid credit card number."),a.validator.addMethod("currency",function(a,b,c){var d,e="string"==typeof c,f=e?c:c[0],g=!!e||c[1];return f=f.replace(/,/g,""),f=g?f+"]":f+"]?",d="^["+f+"([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$",d=new RegExp(d),this.optional(b)||d.test(a)},"Please specify a valid currency"),a.validator.addMethod("dateFA",function(a,b){return this.optional(b)||/^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test(a)},a.validator.messages.date),a.validator.addMethod("dateITA",function(a,b){var c,d,e,f,g,h=!1,i=/^\d{1,2}\/\d{1,2}\/\d{4}$/;return i.test(a)?(c=a.split("/"),d=parseInt(c[0],10),e=parseInt(c[1],10),f=parseInt(c[2],10),g=new Date(Date.UTC(f,e-1,d,12,0,0,0)),h=g.getUTCFullYear()===f&&g.getUTCMonth()===e-1&&g.getUTCDate()===d):h=!1,this.optional(b)||h},a.validator.messages.date),a.validator.addMethod("dateNL",function(a,b){return this.optional(b)||/^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(a)},a.validator.messages.date),a.validator.addMethod("extension",function(a,b,c){return c="string"==typeof c?c.replace(/,/g,"|"):"png|jpe?g|gif",this.optional(b)||a.match(new RegExp("\\.("+c+")$","i"))},a.validator.format("Please enter a value with a valid extension.")),a.validator.addMethod("giroaccountNL",function(a,b){return this.optional(b)||/^[0-9]{1,7}$/.test(a)},"Please specify a valid giro account number"),a.validator.addMethod("iban",function(a,b){if(this.optional(b))return!0;var c,d,e,f,g,h,i,j,k,l=a.replace(/ /g,"").toUpperCase(),m="",n=!0,o="",p="",q=5;if(l.length<q)return!1;if(c=l.substring(0,2),h={AL:"\\d{8}[\\dA-Z]{16}",AD:"\\d{8}[\\dA-Z]{12}",AT:"\\d{16}",AZ:"[\\dA-Z]{4}\\d{20}",BE:"\\d{12}",BH:"[A-Z]{4}[\\dA-Z]{14}",BA:"\\d{16}",BR:"\\d{23}[A-Z][\\dA-Z]",BG:"[A-Z]{4}\\d{6}[\\dA-Z]{8}",CR:"\\d{17}",HR:"\\d{17}",CY:"\\d{8}[\\dA-Z]{16}",CZ:"\\d{20}",DK:"\\d{14}",DO:"[A-Z]{4}\\d{20}",EE:"\\d{16}",FO:"\\d{14}",FI:"\\d{14}",FR:"\\d{10}[\\dA-Z]{11}\\d{2}",GE:"[\\dA-Z]{2}\\d{16}",DE:"\\d{18}",GI:"[A-Z]{4}[\\dA-Z]{15}",GR:"\\d{7}[\\dA-Z]{16}",GL:"\\d{14}",GT:"[\\dA-Z]{4}[\\dA-Z]{20}",HU:"\\d{24}",IS:"\\d{22}",IE:"[\\dA-Z]{4}\\d{14}",IL:"\\d{19}",IT:"[A-Z]\\d{10}[\\dA-Z]{12}",KZ:"\\d{3}[\\dA-Z]{13}",KW:"[A-Z]{4}[\\dA-Z]{22}",LV:"[A-Z]{4}[\\dA-Z]{13}",LB:"\\d{4}[\\dA-Z]{20}",LI:"\\d{5}[\\dA-Z]{12}",LT:"\\d{16}",LU:"\\d{3}[\\dA-Z]{13}",MK:"\\d{3}[\\dA-Z]{10}\\d{2}",MT:"[A-Z]{4}\\d{5}[\\dA-Z]{18}",MR:"\\d{23}",MU:"[A-Z]{4}\\d{19}[A-Z]{3}",MC:"\\d{10}[\\dA-Z]{11}\\d{2}",MD:"[\\dA-Z]{2}\\d{18}",ME:"\\d{18}",NL:"[A-Z]{4}\\d{10}",NO:"\\d{11}",PK:"[\\dA-Z]{4}\\d{16}",PS:"[\\dA-Z]{4}\\d{21}",PL:"\\d{24}",PT:"\\d{21}",RO:"[A-Z]{4}[\\dA-Z]{16}",SM:"[A-Z]\\d{10}[\\dA-Z]{12}",SA:"\\d{2}[\\dA-Z]{18}",RS:"\\d{18}",SK:"\\d{20}",SI:"\\d{15}",ES:"\\d{20}",SE:"\\d{20}",CH:"\\d{5}[\\dA-Z]{12}",TN:"\\d{20}",TR:"\\d{5}[\\dA-Z]{17}",AE:"\\d{3}\\d{16}",GB:"[A-Z]{4}\\d{14}",VG:"[\\dA-Z]{4}\\d{16}"},g=h[c],"undefined"!=typeof g&&(i=new RegExp("^[A-Z]{2}\\d{2}"+g+"$",""),!i.test(l)))return!1;for(d=l.substring(4,l.length)+l.substring(0,4),j=0;j<d.length;j++)e=d.charAt(j),"0"!==e&&(n=!1),n||(m+="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(e));for(k=0;k<m.length;k++)f=m.charAt(k),p=""+o+f,o=p%97;return 1===o},"Please specify a valid IBAN"),a.validator.addMethod("integer",function(a,b){return this.optional(b)||/^-?\d+$/.test(a)},"A positive or negative non-decimal number please"),a.validator.addMethod("ipv4",function(a,b){return this.optional(b)||/^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test(a)},"Please enter a valid IP v4 address."),a.validator.addMethod("ipv6",function(a,b){return this.optional(b)||/^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(a)},"Please enter a valid IP v6 address."),a.validator.addMethod("lettersonly",function(a,b){return this.optional(b)||/^[a-z]+$/i.test(a)},"Letters only please"),a.validator.addMethod("letterswithbasicpunc",function(a,b){return this.optional(b)||/^[a-z\-.,()'"\s]+$/i.test(a)},"Letters or punctuation only please"),a.validator.addMethod("mobileNL",function(a,b){return this.optional(b)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(a)},"Please specify a valid mobile number"),a.validator.addMethod("mobileUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/)},"Please specify a valid mobile number"),a.validator.addMethod("netmask",function(a,b){return this.optional(b)||/^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test(a)},"Please enter a valid netmask."),a.validator.addMethod("nieES",function(a,b){"use strict";if(this.optional(b))return!0;var c,d=new RegExp(/^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi),e="TRWAGMYFPDXBNJZSQVHLCKET",f=a.substr(a.length-1).toUpperCase();return a=a.toString().toUpperCase(),!(a.length>10||a.length<9||!d.test(a))&&(a=a.replace(/^[X]/,"0").replace(/^[Y]/,"1").replace(/^[Z]/,"2"),c=9===a.length?a.substr(0,8):a.substr(0,9),e.charAt(parseInt(c,10)%23)===f)},"Please specify a valid NIE number."),a.validator.addMethod("nifES",function(a,b){"use strict";return!!this.optional(b)||(a=a.toUpperCase(),!!a.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)")&&(/^[0-9]{8}[A-Z]{1}$/.test(a)?"TRWAGMYFPDXBNJZSQVHLCKE".charAt(a.substring(8,0)%23)===a.charAt(8):!!/^[KLM]{1}/.test(a)&&a[8]==="TRWAGMYFPDXBNJZSQVHLCKE".charAt(a.substring(8,1)%23)))},"Please specify a valid NIF number."),a.validator.addMethod("nipPL",function(a){"use strict";if(a=a.replace(/[^0-9]/g,""),10!==a.length)return!1;for(var b=[6,5,7,2,3,4,5,6,7],c=0,d=0;d<9;d++)c+=b[d]*a[d];var e=c%11,f=10===e?0:e;return f===parseInt(a[9],10)},"Please specify a valid NIP number."),a.validator.addMethod("notEqualTo",function(b,c,d){return this.optional(c)||!a.validator.methods.equalTo.call(this,b,c,d)},"Please enter a different value, values must not be the same."),a.validator.addMethod("nowhitespace",function(a,b){return this.optional(b)||/^\S+$/i.test(a)},"No white space please"),a.validator.addMethod("pattern",function(a,b,c){return!!this.optional(b)||("string"==typeof c&&(c=new RegExp("^(?:"+c+")$")),c.test(a))},"Invalid format."),a.validator.addMethod("phoneNL",function(a,b){return this.optional(b)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test(a)},"Please specify a valid phone number."),a.validator.addMethod("phonesUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/)},"Please specify a valid uk phone number"),a.validator.addMethod("phoneUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/)},"Please specify a valid phone number"),a.validator.addMethod("phoneUS",function(a,b){return a=a.replace(/\s+/g,""),this.optional(b)||a.length>9&&a.match(/^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/)},"Please specify a valid phone number"),a.validator.addMethod("postalcodeBR",function(a,b){return this.optional(b)||/^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test(a)},"Informe um CEP v谩lido."),a.validator.addMethod("postalCodeCA",function(a,b){return this.optional(b)||/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postalcodeIT",function(a,b){return this.optional(b)||/^\d{5}$/.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postalcodeNL",function(a,b){return this.optional(b)||/^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postcodeUK",function(a,b){return this.optional(b)||/^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(a)},"Please specify a valid UK postcode"),a.validator.addMethod("require_from_group",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data("valid_req_grp")?f.data("valid_req_grp"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length>=d[0];return f.data("valid_req_grp",g),a(c).data("being_validated")||(e.data("being_validated",!0),e.each(function(){g.element(this)}),e.data("being_validated",!1)),h},a.validator.format("Please fill at least {0} of these fields.")),a.validator.addMethod("skip_or_fill_minimum",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data("valid_skip")?f.data("valid_skip"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length,i=0===h||h>=d[0];return f.data("valid_skip",g),a(c).data("being_validated")||(e.data("being_validated",!0),e.each(function(){g.element(this)}),e.data("being_validated",!1)),i},a.validator.format("Please either skip these fields or fill at least {0} of them.")),a.validator.addMethod("stateUS",function(a,b,c){var d,e="undefined"==typeof c,f=!e&&"undefined"!=typeof c.caseSensitive&&c.caseSensitive,g=!e&&"undefined"!=typeof c.includeTerritories&&c.includeTerritories,h=!e&&"undefined"!=typeof c.includeMilitary&&c.includeMilitary;return d=g||h?g&&h?"^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":g?"^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":"^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$":"^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$",d=f?new RegExp(d):new RegExp(d,"i"),this.optional(b)||d.test(a)},"Please specify a valid state"),a.validator.addMethod("strippedminlength",function(b,c,d){return a(b).text().length>=d},a.validator.format("Please enter at least {0} characters")),a.validator.addMethod("time",function(a,b){return this.optional(b)||/^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test(a)},"Please enter a valid time, between 00:00 and 23:59"),a.validator.addMethod("time12h",function(a,b){return this.optional(b)||/^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(a)},"Please enter a valid time in 12-hour am/pm format"),a.validator.addMethod("url2",function(a,b){return this.optional(b)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},a.validator.messages.url),a.validator.addMethod("vinUS",function(a){if(17!==a.length)return!1;var b,c,d,e,f,g,h=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"],i=[1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9],j=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2],k=0;for(b=0;b<17;b++){if(e=j[b],d=a.slice(b,b+1),8===b&&(g=d),isNaN(d)){for(c=0;c<h.length;c++)if(d.toUpperCase()===h[c]){d=i[c],d*=e,isNaN(g)&&8===c&&(g=h[c]);break}}else d*=e;k+=d}return f=k%11,10===f&&(f="X"),f===g},"The specified vehicle identification number (VIN) is invalid."),a.validator.addMethod("zipcodeUS",function(a,b){return this.optional(b)||/^\d{5}(-\d{4})?$/.test(a)},"The specified US ZIP Code is invalid"),a.validator.addMethod("ziprange",function(a,b){return this.optional(b)||/^90[2-5]\d\{2\}-\d{4}$/.test(a)},"Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx"),a});
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/jquery.validate.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/jquery.validate.js
new file mode 100644
index 0000000..12674b0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/jquery.validate.js
@@ -0,0 +1,1601 @@
+/*!
+ * jQuery Validation Plugin v1.17.0
+ *
+ * https://jqueryvalidation.org/
+ *
+ * Copyright (c) 2017 J枚rn Zaefferer
+ * Released under the MIT license
+ */
+(function( factory ) {
+	if ( typeof define === "function" && define.amd ) {
+		define( ["jquery"], factory );
+	} else if (typeof module === "object" && module.exports) {
+		module.exports = factory( require( "jquery" ) );
+	} else {
+		factory( jQuery );
+	}
+}(function( $ ) {
+
+$.extend( $.fn, {
+
+	// https://jqueryvalidation.org/validate/
+	validate: function( options ) {
+
+		// If nothing is selected, return nothing; can't chain anyway
+		if ( !this.length ) {
+			if ( options && options.debug && window.console ) {
+				console.warn( "Nothing selected, can't validate, returning nothing." );
+			}
+			return;
+		}
+
+		// Check if a validator for this form was already created
+		var validator = $.data( this[ 0 ], "validator" );
+		if ( validator ) {
+			return validator;
+		}
+
+		// Add novalidate tag if HTML5.
+		this.attr( "novalidate", "novalidate" );
+
+		validator = new $.validator( options, this[ 0 ] );
+		$.data( this[ 0 ], "validator", validator );
+
+		if ( validator.settings.onsubmit ) {
+
+			this.on( "click.validate", ":submit", function( event ) {
+
+				// Track the used submit button to properly handle scripted
+				// submits later.
+				validator.submitButton = event.currentTarget;
+
+				// Allow suppressing validation by adding a cancel class to the submit button
+				if ( $( this ).hasClass( "cancel" ) ) {
+					validator.cancelSubmit = true;
+				}
+
+				// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
+				if ( $( this ).attr( "formnovalidate" ) !== undefined ) {
+					validator.cancelSubmit = true;
+				}
+			} );
+
+			// Validate the form on submit
+			this.on( "submit.validate", function( event ) {
+				if ( validator.settings.debug ) {
+
+					// Prevent form submit to be able to see console output
+					event.preventDefault();
+				}
+				function handle() {
+					var hidden, result;
+
+					// Insert a hidden input as a replacement for the missing submit button
+					// The hidden input is inserted in two cases:
+					//   - A user defined a `submitHandler`
+					//   - There was a pending request due to `remote` method and `stopRequest()`
+					//     was called to submit the form in case it's valid
+					if ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {
+						hidden = $( "<input type='hidden'/>" )
+							.attr( "name", validator.submitButton.name )
+							.val( $( validator.submitButton ).val() )
+							.appendTo( validator.currentForm );
+					}
+
+					if ( validator.settings.submitHandler ) {
+						result = validator.settings.submitHandler.call( validator, validator.currentForm, event );
+						if ( hidden ) {
+
+							// And clean up afterwards; thanks to no-block-scope, hidden can be referenced
+							hidden.remove();
+						}
+						if ( result !== undefined ) {
+							return result;
+						}
+						return false;
+					}
+					return true;
+				}
+
+				// Prevent submit for invalid forms or custom submit handlers
+				if ( validator.cancelSubmit ) {
+					validator.cancelSubmit = false;
+					return handle();
+				}
+				if ( validator.form() ) {
+					if ( validator.pendingRequest ) {
+						validator.formSubmitted = true;
+						return false;
+					}
+					return handle();
+				} else {
+					validator.focusInvalid();
+					return false;
+				}
+			} );
+		}
+
+		return validator;
+	},
+
+	// https://jqueryvalidation.org/valid/
+	valid: function() {
+		var valid, validator, errorList;
+
+		if ( $( this[ 0 ] ).is( "form" ) ) {
+			valid = this.validate().form();
+		} else {
+			errorList = [];
+			valid = true;
+			validator = $( this[ 0 ].form ).validate();
+			this.each( function() {
+				valid = validator.element( this ) && valid;
+				if ( !valid ) {
+					errorList = errorList.concat( validator.errorList );
+				}
+			} );
+			validator.errorList = errorList;
+		}
+		return valid;
+	},
+
+	// https://jqueryvalidation.org/rules/
+	rules: function( command, argument ) {
+		var element = this[ 0 ],
+			settings, staticRules, existingRules, data, param, filtered;
+
+		// If nothing is selected, return empty object; can't chain anyway
+		if ( element == null ) {
+			return;
+		}
+
+		if ( !element.form && element.hasAttribute( "contenteditable" ) ) {
+			element.form = this.closest( "form" )[ 0 ];
+			element.name = this.attr( "name" );
+		}
+
+		if ( element.form == null ) {
+			return;
+		}
+
+		if ( command ) {
+			settings = $.data( element.form, "validator" ).settings;
+			staticRules = settings.rules;
+			existingRules = $.validator.staticRules( element );
+			switch ( command ) {
+			case "add":
+				$.extend( existingRules, $.validator.normalizeRule( argument ) );
+
+				// Remove messages from rules, but allow them to be set separately
+				delete existingRules.messages;
+				staticRules[ element.name ] = existingRules;
+				if ( argument.messages ) {
+					settings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );
+				}
+				break;
+			case "remove":
+				if ( !argument ) {
+					delete staticRules[ element.name ];
+					return existingRules;
+				}
+				filtered = {};
+				$.each( argument.split( /\s/ ), function( index, method ) {
+					filtered[ method ] = existingRules[ method ];
+					delete existingRules[ method ];
+				} );
+				return filtered;
+			}
+		}
+
+		data = $.validator.normalizeRules(
+		$.extend(
+			{},
+			$.validator.classRules( element ),
+			$.validator.attributeRules( element ),
+			$.validator.dataRules( element ),
+			$.validator.staticRules( element )
+		), element );
+
+		// Make sure required is at front
+		if ( data.required ) {
+			param = data.required;
+			delete data.required;
+			data = $.extend( { required: param }, data );
+		}
+
+		// Make sure remote is at back
+		if ( data.remote ) {
+			param = data.remote;
+			delete data.remote;
+			data = $.extend( data, { remote: param } );
+		}
+
+		return data;
+	}
+} );
+
+// Custom selectors
+$.extend( $.expr.pseudos || $.expr[ ":" ], {		// '|| $.expr[ ":" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support
+
+	// https://jqueryvalidation.org/blank-selector/
+	blank: function( a ) {
+		return !$.trim( "" + $( a ).val() );
+	},
+
+	// https://jqueryvalidation.org/filled-selector/
+	filled: function( a ) {
+		var val = $( a ).val();
+		return val !== null && !!$.trim( "" + val );
+	},
+
+	// https://jqueryvalidation.org/unchecked-selector/
+	unchecked: function( a ) {
+		return !$( a ).prop( "checked" );
+	}
+} );
+
+// Constructor for validator
+$.validator = function( options, form ) {
+	this.settings = $.extend( true, {}, $.validator.defaults, options );
+	this.currentForm = form;
+	this.init();
+};
+
+// https://jqueryvalidation.org/jQuery.validator.format/
+$.validator.format = function( source, params ) {
+	if ( arguments.length === 1 ) {
+		return function() {
+			var args = $.makeArray( arguments );
+			args.unshift( source );
+			return $.validator.format.apply( this, args );
+		};
+	}
+	if ( params === undefined ) {
+		return source;
+	}
+	if ( arguments.length > 2 && params.constructor !== Array  ) {
+		params = $.makeArray( arguments ).slice( 1 );
+	}
+	if ( params.constructor !== Array ) {
+		params = [ params ];
+	}
+	$.each( params, function( i, n ) {
+		source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
+			return n;
+		} );
+	} );
+	return source;
+};
+
+$.extend( $.validator, {
+
+	defaults: {
+		messages: {},
+		groups: {},
+		rules: {},
+		errorClass: "error",
+		pendingClass: "pending",
+		validClass: "valid",
+		errorElement: "label",
+		focusCleanup: false,
+		focusInvalid: true,
+		errorContainer: $( [] ),
+		errorLabelContainer: $( [] ),
+		onsubmit: true,
+		ignore: ":hidden",
+		ignoreTitle: false,
+		onfocusin: function( element ) {
+			this.lastActive = element;
+
+			// Hide error label and remove error class on focus if enabled
+			if ( this.settings.focusCleanup ) {
+				if ( this.settings.unhighlight ) {
+					this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
+				}
+				this.hideThese( this.errorsFor( element ) );
+			}
+		},
+		onfocusout: function( element ) {
+			if ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {
+				this.element( element );
+			}
+		},
+		onkeyup: function( element, event ) {
+
+			// Avoid revalidate the field when pressing one of the following keys
+			// Shift       => 16
+			// Ctrl        => 17
+			// Alt         => 18
+			// Caps lock   => 20
+			// End         => 35
+			// Home        => 36
+			// Left arrow  => 37
+			// Up arrow    => 38
+			// Right arrow => 39
+			// Down arrow  => 40
+			// Insert      => 45
+			// Num lock    => 144
+			// AltGr key   => 225
+			var excludedKeys = [
+				16, 17, 18, 20, 35, 36, 37,
+				38, 39, 40, 45, 144, 225
+			];
+
+			if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {
+				return;
+			} else if ( element.name in this.submitted || element.name in this.invalid ) {
+				this.element( element );
+			}
+		},
+		onclick: function( element ) {
+
+			// Click on selects, radiobuttons and checkboxes
+			if ( element.name in this.submitted ) {
+				this.element( element );
+
+			// Or option elements, check parent select in that case
+			} else if ( element.parentNode.name in this.submitted ) {
+				this.element( element.parentNode );
+			}
+		},
+		highlight: function( element, errorClass, validClass ) {
+			if ( element.type === "radio" ) {
+				this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
+			} else {
+				$( element ).addClass( errorClass ).removeClass( validClass );
+			}
+		},
+		unhighlight: function( element, errorClass, validClass ) {
+			if ( element.type === "radio" ) {
+				this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
+			} else {
+				$( element ).removeClass( errorClass ).addClass( validClass );
+			}
+		}
+	},
+
+	// https://jqueryvalidation.org/jQuery.validator.setDefaults/
+	setDefaults: function( settings ) {
+		$.extend( $.validator.defaults, settings );
+	},
+
+	messages: {
+		required: "This field is required.",
+		remote: "Please fix this field.",
+		email: "Please enter a valid email address.",
+		url: "Please enter a valid URL.",
+		date: "Please enter a valid date.",
+		dateISO: "Please enter a valid date (ISO).",
+		number: "Please enter a valid number.",
+		digits: "Please enter only digits.",
+		equalTo: "Please enter the same value again.",
+		maxlength: $.validator.format( "Please enter no more than {0} characters." ),
+		minlength: $.validator.format( "Please enter at least {0} characters." ),
+		rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
+		range: $.validator.format( "Please enter a value between {0} and {1}." ),
+		max: $.validator.format( "Please enter a value less than or equal to {0}." ),
+		min: $.validator.format( "Please enter a value greater than or equal to {0}." ),
+		step: $.validator.format( "Please enter a multiple of {0}." )
+	},
+
+	autoCreateRanges: false,
+
+	prototype: {
+
+		init: function() {
+			this.labelContainer = $( this.settings.errorLabelContainer );
+			this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );
+			this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );
+			this.submitted = {};
+			this.valueCache = {};
+			this.pendingRequest = 0;
+			this.pending = {};
+			this.invalid = {};
+			this.reset();
+
+			var groups = ( this.groups = {} ),
+				rules;
+			$.each( this.settings.groups, function( key, value ) {
+				if ( typeof value === "string" ) {
+					value = value.split( /\s/ );
+				}
+				$.each( value, function( index, name ) {
+					groups[ name ] = key;
+				} );
+			} );
+			rules = this.settings.rules;
+			$.each( rules, function( key, value ) {
+				rules[ key ] = $.validator.normalizeRule( value );
+			} );
+
+			function delegate( event ) {
+
+				// Set form expando on contenteditable
+				if ( !this.form && this.hasAttribute( "contenteditable" ) ) {
+					this.form = $( this ).closest( "form" )[ 0 ];
+					this.name = $( this ).attr( "name" );
+				}
+
+				var validator = $.data( this.form, "validator" ),
+					eventType = "on" + event.type.replace( /^validate/, "" ),
+					settings = validator.settings;
+				if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {
+					settings[ eventType ].call( validator, this, event );
+				}
+			}
+
+			$( this.currentForm )
+				.on( "focusin.validate focusout.validate keyup.validate",
+					":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
+					"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
+					"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
+					"[type='radio'], [type='checkbox'], [contenteditable], [type='button']", delegate )
+
+				// Support: Chrome, oldIE
+				// "select" is provided as event.target when clicking a option
+				.on( "click.validate", "select, option, [type='radio'], [type='checkbox']", delegate );
+
+			if ( this.settings.invalidHandler ) {
+				$( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler );
+			}
+		},
+
+		// https://jqueryvalidation.org/Validator.form/
+		form: function() {
+			this.checkForm();
+			$.extend( this.submitted, this.errorMap );
+			this.invalid = $.extend( {}, this.errorMap );
+			if ( !this.valid() ) {
+				$( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
+			}
+			this.showErrors();
+			return this.valid();
+		},
+
+		checkForm: function() {
+			this.prepareForm();
+			for ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {
+				this.check( elements[ i ] );
+			}
+			return this.valid();
+		},
+
+		// https://jqueryvalidation.org/Validator.element/
+		element: function( element ) {
+			var cleanElement = this.clean( element ),
+				checkElement = this.validationTargetFor( cleanElement ),
+				v = this,
+				result = true,
+				rs, group;
+
+			if ( checkElement === undefined ) {
+				delete this.invalid[ cleanElement.name ];
+			} else {
+				this.prepareElement( checkElement );
+				this.currentElements = $( checkElement );
+
+				// If this element is grouped, then validate all group elements already
+				// containing a value
+				group = this.groups[ checkElement.name ];
+				if ( group ) {
+					$.each( this.groups, function( name, testgroup ) {
+						if ( testgroup === group && name !== checkElement.name ) {
+							cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );
+							if ( cleanElement && cleanElement.name in v.invalid ) {
+								v.currentElements.push( cleanElement );
+								result = v.check( cleanElement ) && result;
+							}
+						}
+					} );
+				}
+
+				rs = this.check( checkElement ) !== false;
+				result = result && rs;
+				if ( rs ) {
+					this.invalid[ checkElement.name ] = false;
+				} else {
+					this.invalid[ checkElement.name ] = true;
+				}
+
+				if ( !this.numberOfInvalids() ) {
+
+					// Hide error containers on last error
+					this.toHide = this.toHide.add( this.containers );
+				}
+				this.showErrors();
+
+				// Add aria-invalid status for screen readers
+				$( element ).attr( "aria-invalid", !rs );
+			}
+
+			return result;
+		},
+
+		// https://jqueryvalidation.org/Validator.showErrors/
+		showErrors: function( errors ) {
+			if ( errors ) {
+				var validator = this;
+
+				// Add items to error list and map
+				$.extend( this.errorMap, errors );
+				this.errorList = $.map( this.errorMap, function( message, name ) {
+					return {
+						message: message,
+						element: validator.findByName( name )[ 0 ]
+					};
+				} );
+
+				// Remove items from success list
+				this.successList = $.grep( this.successList, function( element ) {
+					return !( element.name in errors );
+				} );
+			}
+			if ( this.settings.showErrors ) {
+				this.settings.showErrors.call( this, this.errorMap, this.errorList );
+			} else {
+				this.defaultShowErrors();
+			}
+		},
+
+		// https://jqueryvalidation.org/Validator.resetForm/
+		resetForm: function() {
+			if ( $.fn.resetForm ) {
+				$( this.currentForm ).resetForm();
+			}
+			this.invalid = {};
+			this.submitted = {};
+			this.prepareForm();
+			this.hideErrors();
+			var elements = this.elements()
+				.removeData( "previousValue" )
+				.removeAttr( "aria-invalid" );
+
+			this.resetElements( elements );
+		},
+
+		resetElements: function( elements ) {
+			var i;
+
+			if ( this.settings.unhighlight ) {
+				for ( i = 0; elements[ i ]; i++ ) {
+					this.settings.unhighlight.call( this, elements[ i ],
+						this.settings.errorClass, "" );
+					this.findByName( elements[ i ].name ).removeClass( this.settings.validClass );
+				}
+			} else {
+				elements
+					.removeClass( this.settings.errorClass )
+					.removeClass( this.settings.validClass );
+			}
+		},
+
+		numberOfInvalids: function() {
+			return this.objectLength( this.invalid );
+		},
+
+		objectLength: function( obj ) {
+			/* jshint unused: false */
+			var count = 0,
+				i;
+			for ( i in obj ) {
+
+				// This check allows counting elements with empty error
+				// message as invalid elements
+				if ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {
+					count++;
+				}
+			}
+			return count;
+		},
+
+		hideErrors: function() {
+			this.hideThese( this.toHide );
+		},
+
+		hideThese: function( errors ) {
+			errors.not( this.containers ).text( "" );
+			this.addWrapper( errors ).hide();
+		},
+
+		valid: function() {
+			return this.size() === 0;
+		},
+
+		size: function() {
+			return this.errorList.length;
+		},
+
+		focusInvalid: function() {
+			if ( this.settings.focusInvalid ) {
+				try {
+					$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )
+					.filter( ":visible" )
+					.focus()
+
+					// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
+					.trigger( "focusin" );
+				} catch ( e ) {
+
+					// Ignore IE throwing errors when focusing hidden elements
+				}
+			}
+		},
+
+		findLastActive: function() {
+			var lastActive = this.lastActive;
+			return lastActive && $.grep( this.errorList, function( n ) {
+				return n.element.name === lastActive.name;
+			} ).length === 1 && lastActive;
+		},
+
+		elements: function() {
+			var validator = this,
+				rulesCache = {};
+
+			// Select all valid inputs inside the form (no submit or reset buttons)
+			return $( this.currentForm )
+			.find( "input, select, textarea, [contenteditable]" )
+			.not( ":submit, :reset, :image, :disabled" )
+			.not( this.settings.ignore )
+			.filter( function() {
+				var name = this.name || $( this ).attr( "name" ); // For contenteditable
+				if ( !name && validator.settings.debug && window.console ) {
+					console.error( "%o has no name assigned", this );
+				}
+
+				// Set form expando on contenteditable
+				if ( this.hasAttribute( "contenteditable" ) ) {
+					this.form = $( this ).closest( "form" )[ 0 ];
+					this.name = name;
+				}
+
+				// Select only the first element for each name, and only those with rules specified
+				if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
+					return false;
+				}
+
+				rulesCache[ name ] = true;
+				return true;
+			} );
+		},
+
+		clean: function( selector ) {
+			return $( selector )[ 0 ];
+		},
+
+		errors: function() {
+			var errorClass = this.settings.errorClass.split( " " ).join( "." );
+			return $( this.settings.errorElement + "." + errorClass, this.errorContext );
+		},
+
+		resetInternals: function() {
+			this.successList = [];
+			this.errorList = [];
+			this.errorMap = {};
+			this.toShow = $( [] );
+			this.toHide = $( [] );
+		},
+
+		reset: function() {
+			this.resetInternals();
+			this.currentElements = $( [] );
+		},
+
+		prepareForm: function() {
+			this.reset();
+			this.toHide = this.errors().add( this.containers );
+		},
+
+		prepareElement: function( element ) {
+			this.reset();
+			this.toHide = this.errorsFor( element );
+		},
+
+		elementValue: function( element ) {
+			var $element = $( element ),
+				type = element.type,
+				val, idx;
+
+			if ( type === "radio" || type === "checkbox" ) {
+				return this.findByName( element.name ).filter( ":checked" ).val();
+			} else if ( type === "number" && typeof element.validity !== "undefined" ) {
+				return element.validity.badInput ? "NaN" : $element.val();
+			}
+
+			if ( element.hasAttribute( "contenteditable" ) ) {
+				val = $element.text();
+			} else {
+				val = $element.val();
+			}
+
+			if ( type === "file" ) {
+
+				// Modern browser (chrome & safari)
+				if ( val.substr( 0, 12 ) === "C:\\fakepath\\" ) {
+					return val.substr( 12 );
+				}
+
+				// Legacy browsers
+				// Unix-based path
+				idx = val.lastIndexOf( "/" );
+				if ( idx >= 0 ) {
+					return val.substr( idx + 1 );
+				}
+
+				// Windows-based path
+				idx = val.lastIndexOf( "\\" );
+				if ( idx >= 0 ) {
+					return val.substr( idx + 1 );
+				}
+
+				// Just the file name
+				return val;
+			}
+
+			if ( typeof val === "string" ) {
+				return val.replace( /\r/g, "" );
+			}
+			return val;
+		},
+
+		check: function( element ) {
+			element = this.validationTargetFor( this.clean( element ) );
+
+			var rules = $( element ).rules(),
+				rulesCount = $.map( rules, function( n, i ) {
+					return i;
+				} ).length,
+				dependencyMismatch = false,
+				val = this.elementValue( element ),
+				result, method, rule, normalizer;
+
+			// Prioritize the local normalizer defined for this element over the global one
+			// if the former exists, otherwise user the global one in case it exists.
+			if ( typeof rules.normalizer === "function" ) {
+				normalizer = rules.normalizer;
+			} else if (	typeof this.settings.normalizer === "function" ) {
+				normalizer = this.settings.normalizer;
+			}
+
+			// If normalizer is defined, then call it to retreive the changed value instead
+			// of using the real one.
+			// Note that `this` in the normalizer is `element`.
+			if ( normalizer ) {
+				val = normalizer.call( element, val );
+
+				if ( typeof val !== "string" ) {
+					throw new TypeError( "The normalizer should return a string value." );
+				}
+
+				// Delete the normalizer from rules to avoid treating it as a pre-defined method.
+				delete rules.normalizer;
+			}
+
+			for ( method in rules ) {
+				rule = { method: method, parameters: rules[ method ] };
+				try {
+					result = $.validator.methods[ method ].call( this, val, element, rule.parameters );
+
+					// If a method indicates that the field is optional and therefore valid,
+					// don't mark it as valid when there are no other rules
+					if ( result === "dependency-mismatch" && rulesCount === 1 ) {
+						dependencyMismatch = true;
+						continue;
+					}
+					dependencyMismatch = false;
+
+					if ( result === "pending" ) {
+						this.toHide = this.toHide.not( this.errorsFor( element ) );
+						return;
+					}
+
+					if ( !result ) {
+						this.formatAndAdd( element, rule );
+						return false;
+					}
+				} catch ( e ) {
+					if ( this.settings.debug && window.console ) {
+						console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
+					}
+					if ( e instanceof TypeError ) {
+						e.message += ".  Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
+					}
+
+					throw e;
+				}
+			}
+			if ( dependencyMismatch ) {
+				return;
+			}
+			if ( this.objectLength( rules ) ) {
+				this.successList.push( element );
+			}
+			return true;
+		},
+
+		// Return the custom message for the given element and validation method
+		// specified in the element's HTML5 data attribute
+		// return the generic message if present and no method specific message is present
+		customDataMessage: function( element, method ) {
+			return $( element ).data( "msg" + method.charAt( 0 ).toUpperCase() +
+				method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" );
+		},
+
+		// Return the custom message for the given element name and validation method
+		customMessage: function( name, method ) {
+			var m = this.settings.messages[ name ];
+			return m && ( m.constructor === String ? m : m[ method ] );
+		},
+
+		// Return the first defined argument, allowing empty strings
+		findDefined: function() {
+			for ( var i = 0; i < arguments.length; i++ ) {
+				if ( arguments[ i ] !== undefined ) {
+					return arguments[ i ];
+				}
+			}
+			return undefined;
+		},
+
+		// The second parameter 'rule' used to be a string, and extended to an object literal
+		// of the following form:
+		// rule = {
+		//     method: "method name",
+		//     parameters: "the given method parameters"
+		// }
+		//
+		// The old behavior still supported, kept to maintain backward compatibility with
+		// old code, and will be removed in the next major release.
+		defaultMessage: function( element, rule ) {
+			if ( typeof rule === "string" ) {
+				rule = { method: rule };
+			}
+
+			var message = this.findDefined(
+					this.customMessage( element.name, rule.method ),
+					this.customDataMessage( element, rule.method ),
+
+					// 'title' is never undefined, so handle empty string as undefined
+					!this.settings.ignoreTitle && element.title || undefined,
+					$.validator.messages[ rule.method ],
+					"<strong>Warning: No message defined for " + element.name + "</strong>"
+				),
+				theregex = /\$?\{(\d+)\}/g;
+			if ( typeof message === "function" ) {
+				message = message.call( this, rule.parameters, element );
+			} else if ( theregex.test( message ) ) {
+				message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters );
+			}
+
+			return message;
+		},
+
+		formatAndAdd: function( element, rule ) {
+			var message = this.defaultMessage( element, rule );
+
+			this.errorList.push( {
+				message: message,
+				element: element,
+				method: rule.method
+			} );
+
+			this.errorMap[ element.name ] = message;
+			this.submitted[ element.name ] = message;
+		},
+
+		addWrapper: function( toToggle ) {
+			if ( this.settings.wrapper ) {
+				toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
+			}
+			return toToggle;
+		},
+
+		defaultShowErrors: function() {
+			var i, elements, error;
+			for ( i = 0; this.errorList[ i ]; i++ ) {
+				error = this.errorList[ i ];
+				if ( this.settings.highlight ) {
+					this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
+				}
+				this.showLabel( error.element, error.message );
+			}
+			if ( this.errorList.length ) {
+				this.toShow = this.toShow.add( this.containers );
+			}
+			if ( this.settings.success ) {
+				for ( i = 0; this.successList[ i ]; i++ ) {
+					this.showLabel( this.successList[ i ] );
+				}
+			}
+			if ( this.settings.unhighlight ) {
+				for ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {
+					this.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );
+				}
+			}
+			this.toHide = this.toHide.not( this.toShow );
+			this.hideErrors();
+			this.addWrapper( this.toShow ).show();
+		},
+
+		validElements: function() {
+			return this.currentElements.not( this.invalidElements() );
+		},
+
+		invalidElements: function() {
+			return $( this.errorList ).map( function() {
+				return this.element;
+			} );
+		},
+
+		showLabel: function( element, message ) {
+			var place, group, errorID, v,
+				error = this.errorsFor( element ),
+				elementID = this.idOrName( element ),
+				describedBy = $( element ).attr( "aria-describedby" );
+
+			if ( error.length ) {
+
+				// Refresh error/success class
+				error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
+
+				// Replace message on existing label
+				error.html( message );
+			} else {
+
+				// Create error element
+				error = $( "<" + this.settings.errorElement + ">" )
+					.attr( "id", elementID + "-error" )
+					.addClass( this.settings.errorClass )
+					.html( message || "" );
+
+				// Maintain reference to the element to be placed into the DOM
+				place = error;
+				if ( this.settings.wrapper ) {
+
+					// Make sure the element is visible, even in IE
+					// actually showing the wrapped element is handled elsewhere
+					place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent();
+				}
+				if ( this.labelContainer.length ) {
+					this.labelContainer.append( place );
+				} else if ( this.settings.errorPlacement ) {
+					this.settings.errorPlacement.call( this, place, $( element ) );
+				} else {
+					place.insertAfter( element );
+				}
+
+				// Link error back to the element
+				if ( error.is( "label" ) ) {
+
+					// If the error is a label, then associate using 'for'
+					error.attr( "for", elementID );
+
+					// If the element is not a child of an associated label, then it's necessary
+					// to explicitly apply aria-describedby
+				} else if ( error.parents( "label[for='" + this.escapeCssMeta( elementID ) + "']" ).length === 0 ) {
+					errorID = error.attr( "id" );
+
+					// Respect existing non-error aria-describedby
+					if ( !describedBy ) {
+						describedBy = errorID;
+					} else if ( !describedBy.match( new RegExp( "\\b" + this.escapeCssMeta( errorID ) + "\\b" ) ) ) {
+
+						// Add to end of list if not already present
+						describedBy += " " + errorID;
+					}
+					$( element ).attr( "aria-describedby", describedBy );
+
+					// If this element is grouped, then assign to all elements in the same group
+					group = this.groups[ element.name ];
+					if ( group ) {
+						v = this;
+						$.each( v.groups, function( name, testgroup ) {
+							if ( testgroup === group ) {
+								$( "[name='" + v.escapeCssMeta( name ) + "']", v.currentForm )
+									.attr( "aria-describedby", error.attr( "id" ) );
+							}
+						} );
+					}
+				}
+			}
+			if ( !message && this.settings.success ) {
+				error.text( "" );
+				if ( typeof this.settings.success === "string" ) {
+					error.addClass( this.settings.success );
+				} else {
+					this.settings.success( error, element );
+				}
+			}
+			this.toShow = this.toShow.add( error );
+		},
+
+		errorsFor: function( element ) {
+			var name = this.escapeCssMeta( this.idOrName( element ) ),
+				describer = $( element ).attr( "aria-describedby" ),
+				selector = "label[for='" + name + "'], label[for='" + name + "'] *";
+
+			// 'aria-describedby' should directly reference the error element
+			if ( describer ) {
+				selector = selector + ", #" + this.escapeCssMeta( describer )
+					.replace( /\s+/g, ", #" );
+			}
+
+			return this
+				.errors()
+				.filter( selector );
+		},
+
+		// See https://api.jquery.com/category/selectors/, for CSS
+		// meta-characters that should be escaped in order to be used with JQuery
+		// as a literal part of a name/id or any selector.
+		escapeCssMeta: function( string ) {
+			return string.replace( /([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1" );
+		},
+
+		idOrName: function( element ) {
+			return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );
+		},
+
+		validationTargetFor: function( element ) {
+
+			// If radio/checkbox, validate first element in group instead
+			if ( this.checkable( element ) ) {
+				element = this.findByName( element.name );
+			}
+
+			// Always apply ignore filter
+			return $( element ).not( this.settings.ignore )[ 0 ];
+		},
+
+		checkable: function( element ) {
+			return ( /radio|checkbox/i ).test( element.type );
+		},
+
+		findByName: function( name ) {
+			return $( this.currentForm ).find( "[name='" + this.escapeCssMeta( name ) + "']" );
+		},
+
+		getLength: function( value, element ) {
+			switch ( element.nodeName.toLowerCase() ) {
+			case "select":
+				return $( "option:selected", element ).length;
+			case "input":
+				if ( this.checkable( element ) ) {
+					return this.findByName( element.name ).filter( ":checked" ).length;
+				}
+			}
+			return value.length;
+		},
+
+		depend: function( param, element ) {
+			return this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;
+		},
+
+		dependTypes: {
+			"boolean": function( param ) {
+				return param;
+			},
+			"string": function( param, element ) {
+				return !!$( param, element.form ).length;
+			},
+			"function": function( param, element ) {
+				return param( element );
+			}
+		},
+
+		optional: function( element ) {
+			var val = this.elementValue( element );
+			return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
+		},
+
+		startRequest: function( element ) {
+			if ( !this.pending[ element.name ] ) {
+				this.pendingRequest++;
+				$( element ).addClass( this.settings.pendingClass );
+				this.pending[ element.name ] = true;
+			}
+		},
+
+		stopRequest: function( element, valid ) {
+			this.pendingRequest--;
+
+			// Sometimes synchronization fails, make sure pendingRequest is never < 0
+			if ( this.pendingRequest < 0 ) {
+				this.pendingRequest = 0;
+			}
+			delete this.pending[ element.name ];
+			$( element ).removeClass( this.settings.pendingClass );
+			if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {
+				$( this.currentForm ).submit();
+
+				// Remove the hidden input that was used as a replacement for the
+				// missing submit button. The hidden input is added by `handle()`
+				// to ensure that the value of the used submit button is passed on
+				// for scripted submits triggered by this method
+				if ( this.submitButton ) {
+					$( "input:hidden[name='" + this.submitButton.name + "']", this.currentForm ).remove();
+				}
+
+				this.formSubmitted = false;
+			} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {
+				$( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
+				this.formSubmitted = false;
+			}
+		},
+
+		previousValue: function( element, method ) {
+			method = typeof method === "string" && method || "remote";
+
+			return $.data( element, "previousValue" ) || $.data( element, "previousValue", {
+				old: null,
+				valid: true,
+				message: this.defaultMessage( element, { method: method } )
+			} );
+		},
+
+		// Cleans up all forms and elements, removes validator-specific events
+		destroy: function() {
+			this.resetForm();
+
+			$( this.currentForm )
+				.off( ".validate" )
+				.removeData( "validator" )
+				.find( ".validate-equalTo-blur" )
+					.off( ".validate-equalTo" )
+					.removeClass( "validate-equalTo-blur" );
+		}
+
+	},
+
+	classRuleSettings: {
+		required: { required: true },
+		email: { email: true },
+		url: { url: true },
+		date: { date: true },
+		dateISO: { dateISO: true },
+		number: { number: true },
+		digits: { digits: true },
+		creditcard: { creditcard: true }
+	},
+
+	addClassRules: function( className, rules ) {
+		if ( className.constructor === String ) {
+			this.classRuleSettings[ className ] = rules;
+		} else {
+			$.extend( this.classRuleSettings, className );
+		}
+	},
+
+	classRules: function( element ) {
+		var rules = {},
+			classes = $( element ).attr( "class" );
+
+		if ( classes ) {
+			$.each( classes.split( " " ), function() {
+				if ( this in $.validator.classRuleSettings ) {
+					$.extend( rules, $.validator.classRuleSettings[ this ] );
+				}
+			} );
+		}
+		return rules;
+	},
+
+	normalizeAttributeRule: function( rules, type, method, value ) {
+
+		// Convert the value to a number for number inputs, and for text for backwards compability
+		// allows type="date" and others to be compared as strings
+		if ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
+			value = Number( value );
+
+			// Support Opera Mini, which returns NaN for undefined minlength
+			if ( isNaN( value ) ) {
+				value = undefined;
+			}
+		}
+
+		if ( value || value === 0 ) {
+			rules[ method ] = value;
+		} else if ( type === method && type !== "range" ) {
+
+			// Exception: the jquery validate 'range' method
+			// does not test for the html5 'range' type
+			rules[ method ] = true;
+		}
+	},
+
+	attributeRules: function( element ) {
+		var rules = {},
+			$element = $( element ),
+			type = element.getAttribute( "type" ),
+			method, value;
+
+		for ( method in $.validator.methods ) {
+
+			// Support for <input required> in both html5 and older browsers
+			if ( method === "required" ) {
+				value = element.getAttribute( method );
+
+				// Some browsers return an empty string for the required attribute
+				// and non-HTML5 browsers might have required="" markup
+				if ( value === "" ) {
+					value = true;
+				}
+
+				// Force non-HTML5 browsers to return bool
+				value = !!value;
+			} else {
+				value = $element.attr( method );
+			}
+
+			this.normalizeAttributeRule( rules, type, method, value );
+		}
+
+		// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
+		if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {
+			delete rules.maxlength;
+		}
+
+		return rules;
+	},
+
+	dataRules: function( element ) {
+		var rules = {},
+			$element = $( element ),
+			type = element.getAttribute( "type" ),
+			method, value;
+
+		for ( method in $.validator.methods ) {
+			value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
+			this.normalizeAttributeRule( rules, type, method, value );
+		}
+		return rules;
+	},
+
+	staticRules: function( element ) {
+		var rules = {},
+			validator = $.data( element.form, "validator" );
+
+		if ( validator.settings.rules ) {
+			rules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};
+		}
+		return rules;
+	},
+
+	normalizeRules: function( rules, element ) {
+
+		// Handle dependency check
+		$.each( rules, function( prop, val ) {
+
+			// Ignore rule when param is explicitly false, eg. required:false
+			if ( val === false ) {
+				delete rules[ prop ];
+				return;
+			}
+			if ( val.param || val.depends ) {
+				var keepRule = true;
+				switch ( typeof val.depends ) {
+				case "string":
+					keepRule = !!$( val.depends, element.form ).length;
+					break;
+				case "function":
+					keepRule = val.depends.call( element, element );
+					break;
+				}
+				if ( keepRule ) {
+					rules[ prop ] = val.param !== undefined ? val.param : true;
+				} else {
+					$.data( element.form, "validator" ).resetElements( $( element ) );
+					delete rules[ prop ];
+				}
+			}
+		} );
+
+		// Evaluate parameters
+		$.each( rules, function( rule, parameter ) {
+			rules[ rule ] = $.isFunction( parameter ) && rule !== "normalizer" ? parameter( element ) : parameter;
+		} );
+
+		// Clean number parameters
+		$.each( [ "minlength", "maxlength" ], function() {
+			if ( rules[ this ] ) {
+				rules[ this ] = Number( rules[ this ] );
+			}
+		} );
+		$.each( [ "rangelength", "range" ], function() {
+			var parts;
+			if ( rules[ this ] ) {
+				if ( $.isArray( rules[ this ] ) ) {
+					rules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];
+				} else if ( typeof rules[ this ] === "string" ) {
+					parts = rules[ this ].replace( /[\[\]]/g, "" ).split( /[\s,]+/ );
+					rules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];
+				}
+			}
+		} );
+
+		if ( $.validator.autoCreateRanges ) {
+
+			// Auto-create ranges
+			if ( rules.min != null && rules.max != null ) {
+				rules.range = [ rules.min, rules.max ];
+				delete rules.min;
+				delete rules.max;
+			}
+			if ( rules.minlength != null && rules.maxlength != null ) {
+				rules.rangelength = [ rules.minlength, rules.maxlength ];
+				delete rules.minlength;
+				delete rules.maxlength;
+			}
+		}
+
+		return rules;
+	},
+
+	// Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
+	normalizeRule: function( data ) {
+		if ( typeof data === "string" ) {
+			var transformed = {};
+			$.each( data.split( /\s/ ), function() {
+				transformed[ this ] = true;
+			} );
+			data = transformed;
+		}
+		return data;
+	},
+
+	// https://jqueryvalidation.org/jQuery.validator.addMethod/
+	addMethod: function( name, method, message ) {
+		$.validator.methods[ name ] = method;
+		$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];
+		if ( method.length < 3 ) {
+			$.validator.addClassRules( name, $.validator.normalizeRule( name ) );
+		}
+	},
+
+	// https://jqueryvalidation.org/jQuery.validator.methods/
+	methods: {
+
+		// https://jqueryvalidation.org/required-method/
+		required: function( value, element, param ) {
+
+			// Check if dependency is met
+			if ( !this.depend( param, element ) ) {
+				return "dependency-mismatch";
+			}
+			if ( element.nodeName.toLowerCase() === "select" ) {
+
+				// Could be an array for select-multiple or a string, both are fine this way
+				var val = $( element ).val();
+				return val && val.length > 0;
+			}
+			if ( this.checkable( element ) ) {
+				return this.getLength( value, element ) > 0;
+			}
+			return value.length > 0;
+		},
+
+		// https://jqueryvalidation.org/email-method/
+		email: function( value, element ) {
+
+			// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
+			// Retrieved 2014-01-14
+			// If you have a problem with this implementation, report a bug against the above spec
+			// Or use custom methods to implement your own email validation
+			return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );
+		},
+
+		// https://jqueryvalidation.org/url-method/
+		url: function( value, element ) {
+
+			// Copyright (c) 2010-2013 Diego Perini, MIT licensed
+			// https://gist.github.com/dperini/729294
+			// see also https://mathiasbynens.be/demo/url-regex
+			// modified to allow protocol-relative URLs
+			return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );
+		},
+
+		// https://jqueryvalidation.org/date-method/
+		date: function( value, element ) {
+			return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );
+		},
+
+		// https://jqueryvalidation.org/dateISO-method/
+		dateISO: function( value, element ) {
+			return this.optional( element ) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );
+		},
+
+		// https://jqueryvalidation.org/number-method/
+		number: function( value, element ) {
+			return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value );
+		},
+
+		// https://jqueryvalidation.org/digits-method/
+		digits: function( value, element ) {
+			return this.optional( element ) || /^\d+$/.test( value );
+		},
+
+		// https://jqueryvalidation.org/minlength-method/
+		minlength: function( value, element, param ) {
+			var length = $.isArray( value ) ? value.length : this.getLength( value, element );
+			return this.optional( element ) || length >= param;
+		},
+
+		// https://jqueryvalidation.org/maxlength-method/
+		maxlength: function( value, element, param ) {
+			var length = $.isArray( value ) ? value.length : this.getLength( value, element );
+			return this.optional( element ) || length <= param;
+		},
+
+		// https://jqueryvalidation.org/rangelength-method/
+		rangelength: function( value, element, param ) {
+			var length = $.isArray( value ) ? value.length : this.getLength( value, element );
+			return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );
+		},
+
+		// https://jqueryvalidation.org/min-method/
+		min: function( value, element, param ) {
+			return this.optional( element ) || value >= param;
+		},
+
+		// https://jqueryvalidation.org/max-method/
+		max: function( value, element, param ) {
+			return this.optional( element ) || value <= param;
+		},
+
+		// https://jqueryvalidation.org/range-method/
+		range: function( value, element, param ) {
+			return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );
+		},
+
+		// https://jqueryvalidation.org/step-method/
+		step: function( value, element, param ) {
+			var type = $( element ).attr( "type" ),
+				errorMessage = "Step attribute on input type " + type + " is not supported.",
+				supportedTypes = [ "text", "number", "range" ],
+				re = new RegExp( "\\b" + type + "\\b" ),
+				notSupported = type && !re.test( supportedTypes.join() ),
+				decimalPlaces = function( num ) {
+					var match = ( "" + num ).match( /(?:\.(\d+))?$/ );
+					if ( !match ) {
+						return 0;
+					}
+
+					// Number of digits right of decimal point.
+					return match[ 1 ] ? match[ 1 ].length : 0;
+				},
+				toInt = function( num ) {
+					return Math.round( num * Math.pow( 10, decimals ) );
+				},
+				valid = true,
+				decimals;
+
+			// Works only for text, number and range input types
+			// TODO find a way to support input types date, datetime, datetime-local, month, time and week
+			if ( notSupported ) {
+				throw new Error( errorMessage );
+			}
+
+			decimals = decimalPlaces( param );
+
+			// Value can't have too many decimals
+			if ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {
+				valid = false;
+			}
+
+			return this.optional( element ) || valid;
+		},
+
+		// https://jqueryvalidation.org/equalTo-method/
+		equalTo: function( value, element, param ) {
+
+			// Bind to the blur event of the target in order to revalidate whenever the target field is updated
+			var target = $( param );
+			if ( this.settings.onfocusout && target.not( ".validate-equalTo-blur" ).length ) {
+				target.addClass( "validate-equalTo-blur" ).on( "blur.validate-equalTo", function() {
+					$( element ).valid();
+				} );
+			}
+			return value === target.val();
+		},
+
+		// https://jqueryvalidation.org/remote-method/
+		remote: function( value, element, param, method ) {
+			if ( this.optional( element ) ) {
+				return "dependency-mismatch";
+			}
+
+			method = typeof method === "string" && method || "remote";
+
+			var previous = this.previousValue( element, method ),
+				validator, data, optionDataString;
+
+			if ( !this.settings.messages[ element.name ] ) {
+				this.settings.messages[ element.name ] = {};
+			}
+			previous.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];
+			this.settings.messages[ element.name ][ method ] = previous.message;
+
+			param = typeof param === "string" && { url: param } || param;
+			optionDataString = $.param( $.extend( { data: value }, param.data ) );
+			if ( previous.old === optionDataString ) {
+				return previous.valid;
+			}
+
+			previous.old = optionDataString;
+			validator = this;
+			this.startRequest( element );
+			data = {};
+			data[ element.name ] = value;
+			$.ajax( $.extend( true, {
+				mode: "abort",
+				port: "validate" + element.name,
+				dataType: "json",
+				data: data,
+				context: validator.currentForm,
+				success: function( response ) {
+					var valid = response === true || response === "true",
+						errors, message, submitted;
+
+					validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
+					if ( valid ) {
+						submitted = validator.formSubmitted;
+						validator.resetInternals();
+						validator.toHide = validator.errorsFor( element );
+						validator.formSubmitted = submitted;
+						validator.successList.push( element );
+						validator.invalid[ element.name ] = false;
+						validator.showErrors();
+					} else {
+						errors = {};
+						message = response || validator.defaultMessage( element, { method: method, parameters: value } );
+						errors[ element.name ] = previous.message = message;
+						validator.invalid[ element.name ] = true;
+						validator.showErrors( errors );
+					}
+					previous.valid = valid;
+					validator.stopRequest( element, valid );
+				}
+			}, param ) );
+			return "pending";
+		}
+	}
+
+} );
+
+// Ajax mode: abort
+// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
+// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
+
+var pendingRequests = {},
+	ajax;
+
+// Use a prefilter if available (1.5+)
+if ( $.ajaxPrefilter ) {
+	$.ajaxPrefilter( function( settings, _, xhr ) {
+		var port = settings.port;
+		if ( settings.mode === "abort" ) {
+			if ( pendingRequests[ port ] ) {
+				pendingRequests[ port ].abort();
+			}
+			pendingRequests[ port ] = xhr;
+		}
+	} );
+} else {
+
+	// Proxy ajax
+	ajax = $.ajax;
+	$.ajax = function( settings ) {
+		var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
+			port = ( "port" in settings ? settings : $.ajaxSettings ).port;
+		if ( mode === "abort" ) {
+			if ( pendingRequests[ port ] ) {
+				pendingRequests[ port ].abort();
+			}
+			pendingRequests[ port ] = ajax.apply( this, arguments );
+			return pendingRequests[ port ];
+		}
+		return ajax.apply( this, arguments );
+	};
+}
+return $;
+}));
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js
new file mode 100644
index 0000000..20402da
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.17.0 - 7/29/2017
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2017 J枚rn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.submitButton=b.currentTarget,a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.submitButton&&(c.settings.submitHandler||c.formSubmitted)&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!c.settings.submitHandler||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(null!=j&&(!j.form&&j.hasAttribute("contenteditable")&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}}),a.extend(a.expr.pseudos||a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){var c=a(b).val();return null!==c&&!!a.trim(""+c)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){!this.form&&this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name"));var c=a.data(this.form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!a(this).is(e.ignore)&&e[d].call(c,this,b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0],this.name=d),!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type;return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=b.hasAttribute("contenteditable")?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);if("function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f){if(j=f.call(b,j),"string"!=typeof j)throw new TypeError("The normalizer should return a string value.");delete g.normalizer}for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=".  Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a]},defaultMessage:function(b,c){"string"==typeof c&&(c={method:c});var d=this.findDefined(this.customMessage(b.name,c.method),this.customDataMessage(b,c.method),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c.method],"<strong>Warning: No message defined for "+b.name+"</strong>"),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return a.replace(/([\\!"#$%&'()*+,.\/:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(d,e){b[d]=a.isFunction(e)&&"normalizer"!==d?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[\/?#]\S*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e<=d},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var b,c={};return a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)}),a});
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/LICENSE.txt b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/LICENSE.txt
new file mode 100644
index 0000000..e4e5e00
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/LICENSE.txt
@@ -0,0 +1,36 @@
+Copyright JS Foundation and other contributors, https://js.foundation/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.js
new file mode 100644
index 0000000..5093733
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.js
@@ -0,0 +1,10872 @@
+/*!
+ * jQuery JavaScript Library v3.5.1
+ * https://jquery.com/
+ *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
+ * Copyright JS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2020-05-04T22:49Z
+ */
+( function( global, factory ) {
+
+	"use strict";
+
+	if ( typeof module === "object" && typeof module.exports === "object" ) {
+
+		// For CommonJS and CommonJS-like environments where a proper `window`
+		// is present, execute the factory and get jQuery.
+		// For environments that do not have a `window` with a `document`
+		// (such as Node.js), expose a factory as module.exports.
+		// This accentuates the need for the creation of a real `window`.
+		// e.g. var jQuery = require("jquery")(window);
+		// See ticket #14549 for more info.
+		module.exports = global.document ?
+			factory( global, true ) :
+			function( w ) {
+				if ( !w.document ) {
+					throw new Error( "jQuery requires a window with a document" );
+				}
+				return factory( w );
+			};
+	} else {
+		factory( global );
+	}
+
+// Pass this if window is not defined yet
+} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
+// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
+// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
+// enough that all such attempts are guarded in a try block.
+"use strict";
+
+var arr = [];
+
+var getProto = Object.getPrototypeOf;
+
+var slice = arr.slice;
+
+var flat = arr.flat ? function( array ) {
+	return arr.flat.call( array );
+} : function( array ) {
+	return arr.concat.apply( [], array );
+};
+
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var fnToString = hasOwn.toString;
+
+var ObjectFunctionString = fnToString.call( Object );
+
+var support = {};
+
+var isFunction = function isFunction( obj ) {
+
+      // Support: Chrome <=57, Firefox <=52
+      // In some browsers, typeof returns "function" for HTML <object> elements
+      // (i.e., `typeof document.createElement( "object" ) === "function"`).
+      // We don't want to classify *any* DOM node as a function.
+      return typeof obj === "function" && typeof obj.nodeType !== "number";
+  };
+
+
+var isWindow = function isWindow( obj ) {
+		return obj != null && obj === obj.window;
+	};
+
+
+var document = window.document;
+
+
+
+	var preservedScriptAttributes = {
+		type: true,
+		src: true,
+		nonce: true,
+		noModule: true
+	};
+
+	function DOMEval( code, node, doc ) {
+		doc = doc || document;
+
+		var i, val,
+			script = doc.createElement( "script" );
+
+		script.text = code;
+		if ( node ) {
+			for ( i in preservedScriptAttributes ) {
+
+				// Support: Firefox 64+, Edge 18+
+				// Some browsers don't support the "nonce" property on scripts.
+				// On the other hand, just using `getAttribute` is not enough as
+				// the `nonce` attribute is reset to an empty string whenever it
+				// becomes browsing-context connected.
+				// See https://github.com/whatwg/html/issues/2369
+				// See https://html.spec.whatwg.org/#nonce-attributes
+				// The `node.getAttribute` check was added for the sake of
+				// `jQuery.globalEval` so that it can fake a nonce-containing node
+				// via an object.
+				val = node[ i ] || node.getAttribute && node.getAttribute( i );
+				if ( val ) {
+					script.setAttribute( i, val );
+				}
+			}
+		}
+		doc.head.appendChild( script ).parentNode.removeChild( script );
+	}
+
+
+function toType( obj ) {
+	if ( obj == null ) {
+		return obj + "";
+	}
+
+	// Support: Android <=2.3 only (functionish RegExp)
+	return typeof obj === "object" || typeof obj === "function" ?
+		class2type[ toString.call( obj ) ] || "object" :
+		typeof obj;
+}
+/* global Symbol */
+// Defining this global in .eslintrc.json would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+
+
+var
+	version = "3.5.1",
+
+	// Define a local copy of jQuery
+	jQuery = function( selector, context ) {
+
+		// The jQuery object is actually just the init constructor 'enhanced'
+		// Need init if jQuery is called (just allow error to be thrown if not included)
+		return new jQuery.fn.init( selector, context );
+	};
+
+jQuery.fn = jQuery.prototype = {
+
+	// The current version of jQuery being used
+	jquery: version,
+
+	constructor: jQuery,
+
+	// The default length of a jQuery object is 0
+	length: 0,
+
+	toArray: function() {
+		return slice.call( this );
+	},
+
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+
+		// Return all the elements in a clean array
+		if ( num == null ) {
+			return slice.call( this );
+		}
+
+		// Return just the one element from the set
+		return num < 0 ? this[ num + this.length ] : this[ num ];
+	},
+
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems ) {
+
+		// Build a new jQuery matched element set
+		var ret = jQuery.merge( this.constructor(), elems );
+
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+
+		// Return the newly-formed element set
+		return ret;
+	},
+
+	// Execute a callback for every element in the matched set.
+	each: function( callback ) {
+		return jQuery.each( this, callback );
+	},
+
+	map: function( callback ) {
+		return this.pushStack( jQuery.map( this, function( elem, i ) {
+			return callback.call( elem, i, elem );
+		} ) );
+	},
+
+	slice: function() {
+		return this.pushStack( slice.apply( this, arguments ) );
+	},
+
+	first: function() {
+		return this.eq( 0 );
+	},
+
+	last: function() {
+		return this.eq( -1 );
+	},
+
+	even: function() {
+		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
+			return ( i + 1 ) % 2;
+		} ) );
+	},
+
+	odd: function() {
+		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
+			return i % 2;
+		} ) );
+	},
+
+	eq: function( i ) {
+		var len = this.length,
+			j = +i + ( i < 0 ? len : 0 );
+		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+	},
+
+	end: function() {
+		return this.prevObject || this.constructor();
+	},
+
+	// For internal use only.
+	// Behaves like an Array's method, not like a jQuery method.
+	push: push,
+	sort: arr.sort,
+	splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+	var options, name, src, copy, copyIsArray, clone,
+		target = arguments[ 0 ] || {},
+		i = 1,
+		length = arguments.length,
+		deep = false;
+
+	// Handle a deep copy situation
+	if ( typeof target === "boolean" ) {
+		deep = target;
+
+		// Skip the boolean and the target
+		target = arguments[ i ] || {};
+		i++;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target !== "object" && !isFunction( target ) ) {
+		target = {};
+	}
+
+	// Extend jQuery itself if only one argument is passed
+	if ( i === length ) {
+		target = this;
+		i--;
+	}
+
+	for ( ; i < length; i++ ) {
+
+		// Only deal with non-null/undefined values
+		if ( ( options = arguments[ i ] ) != null ) {
+
+			// Extend the base object
+			for ( name in options ) {
+				copy = options[ name ];
+
+				// Prevent Object.prototype pollution
+				// Prevent never-ending loop
+				if ( name === "__proto__" || target === copy ) {
+					continue;
+				}
+
+				// Recurse if we're merging plain objects or arrays
+				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+					( copyIsArray = Array.isArray( copy ) ) ) ) {
+					src = target[ name ];
+
+					// Ensure proper type for the source value
+					if ( copyIsArray && !Array.isArray( src ) ) {
+						clone = [];
+					} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
+						clone = {};
+					} else {
+						clone = src;
+					}
+					copyIsArray = false;
+
+					// Never move original objects, clone them
+					target[ name ] = jQuery.extend( deep, clone, copy );
+
+				// Don't bring in undefined values
+				} else if ( copy !== undefined ) {
+					target[ name ] = copy;
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+jQuery.extend( {
+
+	// Unique for each copy of jQuery on the page
+	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+	// Assume jQuery is ready without the ready module
+	isReady: true,
+
+	error: function( msg ) {
+		throw new Error( msg );
+	},
+
+	noop: function() {},
+
+	isPlainObject: function( obj ) {
+		var proto, Ctor;
+
+		// Detect obvious negatives
+		// Use toString instead of jQuery.type to catch host objects
+		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+			return false;
+		}
+
+		proto = getProto( obj );
+
+		// Objects with no prototype (e.g., `Object.create( null )`) are plain
+		if ( !proto ) {
+			return true;
+		}
+
+		// Objects with prototype are plain iff they were constructed by a global Object function
+		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+	},
+
+	isEmptyObject: function( obj ) {
+		var name;
+
+		for ( name in obj ) {
+			return false;
+		}
+		return true;
+	},
+
+	// Evaluates a script in a provided context; falls back to the global one
+	// if not specified.
+	globalEval: function( code, options, doc ) {
+		DOMEval( code, { nonce: options && options.nonce }, doc );
+	},
+
+	each: function( obj, callback ) {
+		var length, i = 0;
+
+		if ( isArrayLike( obj ) ) {
+			length = obj.length;
+			for ( ; i < length; i++ ) {
+				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+					break;
+				}
+			}
+		} else {
+			for ( i in obj ) {
+				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+					break;
+				}
+			}
+		}
+
+		return obj;
+	},
+
+	// results is for internal usage only
+	makeArray: function( arr, results ) {
+		var ret = results || [];
+
+		if ( arr != null ) {
+			if ( isArrayLike( Object( arr ) ) ) {
+				jQuery.merge( ret,
+					typeof arr === "string" ?
+					[ arr ] : arr
+				);
+			} else {
+				push.call( ret, arr );
+			}
+		}
+
+		return ret;
+	},
+
+	inArray: function( elem, arr, i ) {
+		return arr == null ? -1 : indexOf.call( arr, elem, i );
+	},
+
+	// Support: Android <=4.0 only, PhantomJS 1 only
+	// push.apply(_, arraylike) throws on ancient WebKit
+	merge: function( first, second ) {
+		var len = +second.length,
+			j = 0,
+			i = first.length;
+
+		for ( ; j < len; j++ ) {
+			first[ i++ ] = second[ j ];
+		}
+
+		first.length = i;
+
+		return first;
+	},
+
+	grep: function( elems, callback, invert ) {
+		var callbackInverse,
+			matches = [],
+			i = 0,
+			length = elems.length,
+			callbackExpect = !invert;
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( ; i < length; i++ ) {
+			callbackInverse = !callback( elems[ i ], i );
+			if ( callbackInverse !== callbackExpect ) {
+				matches.push( elems[ i ] );
+			}
+		}
+
+		return matches;
+	},
+
+	// arg is for internal usage only
+	map: function( elems, callback, arg ) {
+		var length, value,
+			i = 0,
+			ret = [];
+
+		// Go through the array, translating each of the items to their new values
+		if ( isArrayLike( elems ) ) {
+			length = elems.length;
+			for ( ; i < length; i++ ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+
+		// Go through every key on the object,
+		} else {
+			for ( i in elems ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+		}
+
+		// Flatten any nested arrays
+		return flat( ret );
+	},
+
+	// A global GUID counter for objects
+	guid: 1,
+
+	// jQuery.support is not used in Core but other projects attach their
+	// properties to it so it needs to exist.
+	support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( _i, name ) {
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+	// Support: real iOS 8.2 only (not reproducible in simulator)
+	// `in` check used to prevent JIT error (gh-2145)
+	// hasOwn isn't used here due to false negatives
+	// regarding Nodelist length in IE
+	var length = !!obj && "length" in obj && obj.length,
+		type = toType( obj );
+
+	if ( isFunction( obj ) || isWindow( obj ) ) {
+		return false;
+	}
+
+	return type === "array" || length === 0 ||
+		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.3.5
+ * https://sizzlejs.com/
+ *
+ * Copyright JS Foundation and other contributors
+ * Released under the MIT license
+ * https://js.foundation/
+ *
+ * Date: 2020-03-14
+ */
+( function( window ) {
+var i,
+	support,
+	Expr,
+	getText,
+	isXML,
+	tokenize,
+	compile,
+	select,
+	outermostContext,
+	sortInput,
+	hasDuplicate,
+
+	// Local document vars
+	setDocument,
+	document,
+	docElem,
+	documentIsHTML,
+	rbuggyQSA,
+	rbuggyMatches,
+	matches,
+	contains,
+
+	// Instance-specific data
+	expando = "sizzle" + 1 * new Date(),
+	preferredDoc = window.document,
+	dirruns = 0,
+	done = 0,
+	classCache = createCache(),
+	tokenCache = createCache(),
+	compilerCache = createCache(),
+	nonnativeSelectorCache = createCache(),
+	sortOrder = function( a, b ) {
+		if ( a === b ) {
+			hasDuplicate = true;
+		}
+		return 0;
+	},
+
+	// Instance methods
+	hasOwn = ( {} ).hasOwnProperty,
+	arr = [],
+	pop = arr.pop,
+	pushNative = arr.push,
+	push = arr.push,
+	slice = arr.slice,
+
+	// Use a stripped-down indexOf as it's faster than native
+	// https://jsperf.com/thor-indexof-vs-for/5
+	indexOf = function( list, elem ) {
+		var i = 0,
+			len = list.length;
+		for ( ; i < len; i++ ) {
+			if ( list[ i ] === elem ) {
+				return i;
+			}
+		}
+		return -1;
+	},
+
+	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
+		"ismap|loop|multiple|open|readonly|required|scoped",
+
+	// Regular expressions
+
+	// http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+
+	// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
+	identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
+		"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
+
+	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+
+		// Operator (capture 2)
+		"*([*^$|!~]?=)" + whitespace +
+
+		// "Attribute values must be CSS identifiers [capture 5]
+		// or strings [capture 3 or capture 4]"
+		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
+		whitespace + "*\\]",
+
+	pseudos = ":(" + identifier + ")(?:\\((" +
+
+		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+		// 1. quoted (capture 3; capture 4 or capture 5)
+		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+
+		// 2. simple (capture 6)
+		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+
+		// 3. anything else (capture 2)
+		".*" +
+		")\\)|)",
+
+	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+	rwhitespace = new RegExp( whitespace + "+", "g" ),
+	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
+		whitespace + "+$", "g" ),
+
+	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
+		"*" ),
+	rdescend = new RegExp( whitespace + "|>" ),
+
+	rpseudo = new RegExp( pseudos ),
+	ridentifier = new RegExp( "^" + identifier + "$" ),
+
+	matchExpr = {
+		"ID": new RegExp( "^#(" + identifier + ")" ),
+		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
+		"ATTR": new RegExp( "^" + attributes ),
+		"PSEUDO": new RegExp( "^" + pseudos ),
+		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
+			whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
+			whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+
+		// For use in libraries implementing .is()
+		// We use this for POS matching in `select`
+		"needsContext": new RegExp( "^" + whitespace +
+			"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
+			"*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+	},
+
+	rhtml = /HTML$/i,
+	rinputs = /^(?:input|select|textarea|button)$/i,
+	rheader = /^h\d$/i,
+
+	rnative = /^[^{]+\{\s*\[native \w/,
+
+	// Easily-parseable/retrievable ID or TAG or CLASS selectors
+	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+	rsibling = /[+~]/,
+
+	// CSS escapes
+	// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+	runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
+	funescape = function( escape, nonHex ) {
+		var high = "0x" + escape.slice( 1 ) - 0x10000;
+
+		return nonHex ?
+
+			// Strip the backslash prefix from a non-hex escape sequence
+			nonHex :
+
+			// Replace a hexadecimal escape sequence with the encoded Unicode code point
+			// Support: IE <=11+
+			// For values outside the Basic Multilingual Plane (BMP), manually construct a
+			// surrogate pair
+			high < 0 ?
+				String.fromCharCode( high + 0x10000 ) :
+				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+	},
+
+	// CSS string/identifier serialization
+	// https://drafts.csswg.org/cssom/#common-serializing-idioms
+	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
+	fcssescape = function( ch, asCodePoint ) {
+		if ( asCodePoint ) {
+
+			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+			if ( ch === "\0" ) {
+				return "\uFFFD";
+			}
+
+			// Control characters and (dependent upon position) numbers get escaped as code points
+			return ch.slice( 0, -1 ) + "\\" +
+				ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+		}
+
+		// Other potentially-special ASCII characters get backslash-escaped
+		return "\\" + ch;
+	},
+
+	// Used for iframes
+	// See setDocument()
+	// Removing the function wrapper causes a "Permission Denied"
+	// error in IE
+	unloadHandler = function() {
+		setDocument();
+	},
+
+	inDisabledFieldset = addCombinator(
+		function( elem ) {
+			return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
+		},
+		{ dir: "parentNode", next: "legend" }
+	);
+
+// Optimize for push.apply( _, NodeList )
+try {
+	push.apply(
+		( arr = slice.call( preferredDoc.childNodes ) ),
+		preferredDoc.childNodes
+	);
+
+	// Support: Android<4.0
+	// Detect silently failing push.apply
+	// eslint-disable-next-line no-unused-expressions
+	arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+	push = { apply: arr.length ?
+
+		// Leverage slice if possible
+		function( target, els ) {
+			pushNative.apply( target, slice.call( els ) );
+		} :
+
+		// Support: IE<9
+		// Otherwise append directly
+		function( target, els ) {
+			var j = target.length,
+				i = 0;
+
+			// Can't trust NodeList.length
+			while ( ( target[ j++ ] = els[ i++ ] ) ) {}
+			target.length = j - 1;
+		}
+	};
+}
+
+function Sizzle( selector, context, results, seed ) {
+	var m, i, elem, nid, match, groups, newSelector,
+		newContext = context && context.ownerDocument,
+
+		// nodeType defaults to 9, since context defaults to document
+		nodeType = context ? context.nodeType : 9;
+
+	results = results || [];
+
+	// Return early from calls with invalid selector or context
+	if ( typeof selector !== "string" || !selector ||
+		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+		return results;
+	}
+
+	// Try to shortcut find operations (as opposed to filters) in HTML documents
+	if ( !seed ) {
+		setDocument( context );
+		context = context || document;
+
+		if ( documentIsHTML ) {
+
+			// If the selector is sufficiently simple, try using a "get*By*" DOM method
+			// (excepting DocumentFragment context, where the methods don't exist)
+			if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
+
+				// ID selector
+				if ( ( m = match[ 1 ] ) ) {
+
+					// Document context
+					if ( nodeType === 9 ) {
+						if ( ( elem = context.getElementById( m ) ) ) {
+
+							// Support: IE, Opera, Webkit
+							// TODO: identify versions
+							// getElementById can match elements by name instead of ID
+							if ( elem.id === m ) {
+								results.push( elem );
+								return results;
+							}
+						} else {
+							return results;
+						}
+
+					// Element context
+					} else {
+
+						// Support: IE, Opera, Webkit
+						// TODO: identify versions
+						// getElementById can match elements by name instead of ID
+						if ( newContext && ( elem = newContext.getElementById( m ) ) &&
+							contains( context, elem ) &&
+							elem.id === m ) {
+
+							results.push( elem );
+							return results;
+						}
+					}
+
+				// Type selector
+				} else if ( match[ 2 ] ) {
+					push.apply( results, context.getElementsByTagName( selector ) );
+					return results;
+
+				// Class selector
+				} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
+					context.getElementsByClassName ) {
+
+					push.apply( results, context.getElementsByClassName( m ) );
+					return results;
+				}
+			}
+
+			// Take advantage of querySelectorAll
+			if ( support.qsa &&
+				!nonnativeSelectorCache[ selector + " " ] &&
+				( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
+
+				// Support: IE 8 only
+				// Exclude object elements
+				( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
+
+				newSelector = selector;
+				newContext = context;
+
+				// qSA considers elements outside a scoping root when evaluating child or
+				// descendant combinators, which is not what we want.
+				// In such cases, we work around the behavior by prefixing every selector in the
+				// list with an ID selector referencing the scope context.
+				// The technique has to be used as well when a leading combinator is used
+				// as such selectors are not recognized by querySelectorAll.
+				// Thanks to Andrew Dupont for this technique.
+				if ( nodeType === 1 &&
+					( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {
+
+					// Expand context for sibling selectors
+					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+						context;
+
+					// We can use :scope instead of the ID hack if the browser
+					// supports it & if we're not changing the context.
+					if ( newContext !== context || !support.scope ) {
+
+						// Capture the context ID, setting it first if necessary
+						if ( ( nid = context.getAttribute( "id" ) ) ) {
+							nid = nid.replace( rcssescape, fcssescape );
+						} else {
+							context.setAttribute( "id", ( nid = expando ) );
+						}
+					}
+
+					// Prefix every selector in the list
+					groups = tokenize( selector );
+					i = groups.length;
+					while ( i-- ) {
+						groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
+							toSelector( groups[ i ] );
+					}
+					newSelector = groups.join( "," );
+				}
+
+				try {
+					push.apply( results,
+						newContext.querySelectorAll( newSelector )
+					);
+					return results;
+				} catch ( qsaError ) {
+					nonnativeSelectorCache( selector, true );
+				} finally {
+					if ( nid === expando ) {
+						context.removeAttribute( "id" );
+					}
+				}
+			}
+		}
+	}
+
+	// All others
+	return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *	deleting the oldest entry
+ */
+function createCache() {
+	var keys = [];
+
+	function cache( key, value ) {
+
+		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+		if ( keys.push( key + " " ) > Expr.cacheLength ) {
+
+			// Only keep the most recent entries
+			delete cache[ keys.shift() ];
+		}
+		return ( cache[ key + " " ] = value );
+	}
+	return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+	fn[ expando ] = true;
+	return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created element and returns a boolean result
+ */
+function assert( fn ) {
+	var el = document.createElement( "fieldset" );
+
+	try {
+		return !!fn( el );
+	} catch ( e ) {
+		return false;
+	} finally {
+
+		// Remove from its parent by default
+		if ( el.parentNode ) {
+			el.parentNode.removeChild( el );
+		}
+
+		// release memory in IE
+		el = null;
+	}
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+	var arr = attrs.split( "|" ),
+		i = arr.length;
+
+	while ( i-- ) {
+		Expr.attrHandle[ arr[ i ] ] = handler;
+	}
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+	var cur = b && a,
+		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+			a.sourceIndex - b.sourceIndex;
+
+	// Use IE sourceIndex if available on both nodes
+	if ( diff ) {
+		return diff;
+	}
+
+	// Check if b follows a
+	if ( cur ) {
+		while ( ( cur = cur.nextSibling ) ) {
+			if ( cur === b ) {
+				return -1;
+			}
+		}
+	}
+
+	return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return name === "input" && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return ( name === "input" || name === "button" ) && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for :enabled/:disabled
+ * @param {Boolean} disabled true for :disabled; false for :enabled
+ */
+function createDisabledPseudo( disabled ) {
+
+	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
+	return function( elem ) {
+
+		// Only certain elements can match :enabled or :disabled
+		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
+		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
+		if ( "form" in elem ) {
+
+			// Check for inherited disabledness on relevant non-disabled elements:
+			// * listed form-associated elements in a disabled fieldset
+			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
+			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
+			// * option elements in a disabled optgroup
+			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
+			// All such elements have a "form" property.
+			if ( elem.parentNode && elem.disabled === false ) {
+
+				// Option elements defer to a parent optgroup if present
+				if ( "label" in elem ) {
+					if ( "label" in elem.parentNode ) {
+						return elem.parentNode.disabled === disabled;
+					} else {
+						return elem.disabled === disabled;
+					}
+				}
+
+				// Support: IE 6 - 11
+				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
+				return elem.isDisabled === disabled ||
+
+					// Where there is no isDisabled, check manually
+					/* jshint -W018 */
+					elem.isDisabled !== !disabled &&
+					inDisabledFieldset( elem ) === disabled;
+			}
+
+			return elem.disabled === disabled;
+
+		// Try to winnow out elements that can't be disabled before trusting the disabled property.
+		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
+		// even exist on them, let alone have a boolean value.
+		} else if ( "label" in elem ) {
+			return elem.disabled === disabled;
+		}
+
+		// Remaining elements are neither :enabled nor :disabled
+		return false;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+	return markFunction( function( argument ) {
+		argument = +argument;
+		return markFunction( function( seed, matches ) {
+			var j,
+				matchIndexes = fn( [], seed.length, argument ),
+				i = matchIndexes.length;
+
+			// Match elements found at the specified indexes
+			while ( i-- ) {
+				if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
+					seed[ j ] = !( matches[ j ] = seed[ j ] );
+				}
+			}
+		} );
+	} );
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+	return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+	var namespace = elem.namespaceURI,
+		docElem = ( elem.ownerDocument || elem ).documentElement;
+
+	// Support: IE <=8
+	// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
+	// https://bugs.jquery.com/ticket/4833
+	return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+	var hasCompare, subWindow,
+		doc = node ? node.ownerDocument || node : preferredDoc;
+
+	// Return early if doc is invalid or already selected
+	// Support: IE 11+, Edge 17 - 18+
+	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+	// two documents; shallow comparisons work.
+	// eslint-disable-next-line eqeqeq
+	if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
+		return document;
+	}
+
+	// Update global variables
+	document = doc;
+	docElem = document.documentElement;
+	documentIsHTML = !isXML( document );
+
+	// Support: IE 9 - 11+, Edge 12 - 18+
+	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+	// Support: IE 11+, Edge 17 - 18+
+	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+	// two documents; shallow comparisons work.
+	// eslint-disable-next-line eqeqeq
+	if ( preferredDoc != document &&
+		( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
+
+		// Support: IE 11, Edge
+		if ( subWindow.addEventListener ) {
+			subWindow.addEventListener( "unload", unloadHandler, false );
+
+		// Support: IE 9 - 10 only
+		} else if ( subWindow.attachEvent ) {
+			subWindow.attachEvent( "onunload", unloadHandler );
+		}
+	}
+
+	// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
+	// Safari 4 - 5 only, Opera <=11.6 - 12.x only
+	// IE/Edge & older browsers don't support the :scope pseudo-class.
+	// Support: Safari 6.0 only
+	// Safari 6.0 supports :scope but it's an alias of :root there.
+	support.scope = assert( function( el ) {
+		docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
+		return typeof el.querySelectorAll !== "undefined" &&
+			!el.querySelectorAll( ":scope fieldset div" ).length;
+	} );
+
+	/* Attributes
+	---------------------------------------------------------------------- */
+
+	// Support: IE<8
+	// Verify that getAttribute really returns attributes and not properties
+	// (excepting IE8 booleans)
+	support.attributes = assert( function( el ) {
+		el.className = "i";
+		return !el.getAttribute( "className" );
+	} );
+
+	/* getElement(s)By*
+	---------------------------------------------------------------------- */
+
+	// Check if getElementsByTagName("*") returns only elements
+	support.getElementsByTagName = assert( function( el ) {
+		el.appendChild( document.createComment( "" ) );
+		return !el.getElementsByTagName( "*" ).length;
+	} );
+
+	// Support: IE<9
+	support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+	// Support: IE<10
+	// Check if getElementById returns elements by name
+	// The broken getElementById methods don't pick up programmatically-set names,
+	// so use a roundabout getElementsByName test
+	support.getById = assert( function( el ) {
+		docElem.appendChild( el ).id = expando;
+		return !document.getElementsByName || !document.getElementsByName( expando ).length;
+	} );
+
+	// ID filter and find
+	if ( support.getById ) {
+		Expr.filter[ "ID" ] = function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				return elem.getAttribute( "id" ) === attrId;
+			};
+		};
+		Expr.find[ "ID" ] = function( id, context ) {
+			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+				var elem = context.getElementById( id );
+				return elem ? [ elem ] : [];
+			}
+		};
+	} else {
+		Expr.filter[ "ID" ] =  function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				var node = typeof elem.getAttributeNode !== "undefined" &&
+					elem.getAttributeNode( "id" );
+				return node && node.value === attrId;
+			};
+		};
+
+		// Support: IE 6 - 7 only
+		// getElementById is not reliable as a find shortcut
+		Expr.find[ "ID" ] = function( id, context ) {
+			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+				var node, i, elems,
+					elem = context.getElementById( id );
+
+				if ( elem ) {
+
+					// Verify the id attribute
+					node = elem.getAttributeNode( "id" );
+					if ( node && node.value === id ) {
+						return [ elem ];
+					}
+
+					// Fall back on getElementsByName
+					elems = context.getElementsByName( id );
+					i = 0;
+					while ( ( elem = elems[ i++ ] ) ) {
+						node = elem.getAttributeNode( "id" );
+						if ( node && node.value === id ) {
+							return [ elem ];
+						}
+					}
+				}
+
+				return [];
+			}
+		};
+	}
+
+	// Tag
+	Expr.find[ "TAG" ] = support.getElementsByTagName ?
+		function( tag, context ) {
+			if ( typeof context.getElementsByTagName !== "undefined" ) {
+				return context.getElementsByTagName( tag );
+
+			// DocumentFragment nodes don't have gEBTN
+			} else if ( support.qsa ) {
+				return context.querySelectorAll( tag );
+			}
+		} :
+
+		function( tag, context ) {
+			var elem,
+				tmp = [],
+				i = 0,
+
+				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+				results = context.getElementsByTagName( tag );
+
+			// Filter out possible comments
+			if ( tag === "*" ) {
+				while ( ( elem = results[ i++ ] ) ) {
+					if ( elem.nodeType === 1 ) {
+						tmp.push( elem );
+					}
+				}
+
+				return tmp;
+			}
+			return results;
+		};
+
+	// Class
+	Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
+		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+			return context.getElementsByClassName( className );
+		}
+	};
+
+	/* QSA/matchesSelector
+	---------------------------------------------------------------------- */
+
+	// QSA and matchesSelector support
+
+	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+	rbuggyMatches = [];
+
+	// qSa(:focus) reports false when true (Chrome 21)
+	// We allow this because of a bug in IE8/9 that throws an error
+	// whenever `document.activeElement` is accessed on an iframe
+	// So, we allow :focus to pass through QSA all the time to avoid the IE error
+	// See https://bugs.jquery.com/ticket/13378
+	rbuggyQSA = [];
+
+	if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
+
+		// Build QSA regex
+		// Regex strategy adopted from Diego Perini
+		assert( function( el ) {
+
+			var input;
+
+			// Select is set to empty string on purpose
+			// This is to test IE's treatment of not explicitly
+			// setting a boolean content attribute,
+			// since its presence should be enough
+			// https://bugs.jquery.com/ticket/12359
+			docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
+				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
+				"<option selected=''></option></select>";
+
+			// Support: IE8, Opera 11-12.16
+			// Nothing should be selected when empty strings follow ^= or $= or *=
+			// The test attribute must be unknown in Opera but "safe" for WinRT
+			// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+			if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
+				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+			}
+
+			// Support: IE8
+			// Boolean attributes and "value" are not treated correctly
+			if ( !el.querySelectorAll( "[selected]" ).length ) {
+				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+			}
+
+			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+			if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+				rbuggyQSA.push( "~=" );
+			}
+
+			// Support: IE 11+, Edge 15 - 18+
+			// IE 11/Edge don't find elements on a `[name='']` query in some cases.
+			// Adding a temporary attribute to the document before the selection works
+			// around the issue.
+			// Interestingly, IE 10 & older don't seem to have the issue.
+			input = document.createElement( "input" );
+			input.setAttribute( "name", "" );
+			el.appendChild( input );
+			if ( !el.querySelectorAll( "[name='']" ).length ) {
+				rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
+					whitespace + "*(?:''|\"\")" );
+			}
+
+			// Webkit/Opera - :checked should return selected option elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			// IE8 throws error here and will not see later tests
+			if ( !el.querySelectorAll( ":checked" ).length ) {
+				rbuggyQSA.push( ":checked" );
+			}
+
+			// Support: Safari 8+, iOS 8+
+			// https://bugs.webkit.org/show_bug.cgi?id=136851
+			// In-page `selector#id sibling-combinator selector` fails
+			if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
+				rbuggyQSA.push( ".#.+[+~]" );
+			}
+
+			// Support: Firefox <=3.6 - 5 only
+			// Old Firefox doesn't throw on a badly-escaped identifier.
+			el.querySelectorAll( "\\\f" );
+			rbuggyQSA.push( "[\\r\\n\\f]" );
+		} );
+
+		assert( function( el ) {
+			el.innerHTML = "<a href='' disabled='disabled'></a>" +
+				"<select disabled='disabled'><option/></select>";
+
+			// Support: Windows 8 Native Apps
+			// The type and name attributes are restricted during .innerHTML assignment
+			var input = document.createElement( "input" );
+			input.setAttribute( "type", "hidden" );
+			el.appendChild( input ).setAttribute( "name", "D" );
+
+			// Support: IE8
+			// Enforce case-sensitivity of name attribute
+			if ( el.querySelectorAll( "[name=d]" ).length ) {
+				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+			}
+
+			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+			// IE8 throws error here and will not see later tests
+			if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Support: IE9-11+
+			// IE's :disabled selector does not pick up the children of disabled fieldsets
+			docElem.appendChild( el ).disabled = true;
+			if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Support: Opera 10 - 11 only
+			// Opera 10-11 does not throw on post-comma invalid pseudos
+			el.querySelectorAll( "*,:x" );
+			rbuggyQSA.push( ",.*:" );
+		} );
+	}
+
+	if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
+		docElem.webkitMatchesSelector ||
+		docElem.mozMatchesSelector ||
+		docElem.oMatchesSelector ||
+		docElem.msMatchesSelector ) ) ) ) {
+
+		assert( function( el ) {
+
+			// Check to see if it's possible to do matchesSelector
+			// on a disconnected node (IE 9)
+			support.disconnectedMatch = matches.call( el, "*" );
+
+			// This should fail with an exception
+			// Gecko does not error, returns false instead
+			matches.call( el, "[s!='']:x" );
+			rbuggyMatches.push( "!=", pseudos );
+		} );
+	}
+
+	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
+	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
+
+	/* Contains
+	---------------------------------------------------------------------- */
+	hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+	// Element contains another
+	// Purposefully self-exclusive
+	// As in, an element does not contain itself
+	contains = hasCompare || rnative.test( docElem.contains ) ?
+		function( a, b ) {
+			var adown = a.nodeType === 9 ? a.documentElement : a,
+				bup = b && b.parentNode;
+			return a === bup || !!( bup && bup.nodeType === 1 && (
+				adown.contains ?
+					adown.contains( bup ) :
+					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+			) );
+		} :
+		function( a, b ) {
+			if ( b ) {
+				while ( ( b = b.parentNode ) ) {
+					if ( b === a ) {
+						return true;
+					}
+				}
+			}
+			return false;
+		};
+
+	/* Sorting
+	---------------------------------------------------------------------- */
+
+	// Document order sorting
+	sortOrder = hasCompare ?
+	function( a, b ) {
+
+		// Flag for duplicate removal
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		// Sort on method existence if only one input has compareDocumentPosition
+		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+		if ( compare ) {
+			return compare;
+		}
+
+		// Calculate position if both inputs belong to the same document
+		// Support: IE 11+, Edge 17 - 18+
+		// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+		// two documents; shallow comparisons work.
+		// eslint-disable-next-line eqeqeq
+		compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
+			a.compareDocumentPosition( b ) :
+
+			// Otherwise we know they are disconnected
+			1;
+
+		// Disconnected nodes
+		if ( compare & 1 ||
+			( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
+
+			// Choose the first element that is related to our preferred document
+			// Support: IE 11+, Edge 17 - 18+
+			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+			// two documents; shallow comparisons work.
+			// eslint-disable-next-line eqeqeq
+			if ( a == document || a.ownerDocument == preferredDoc &&
+				contains( preferredDoc, a ) ) {
+				return -1;
+			}
+
+			// Support: IE 11+, Edge 17 - 18+
+			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+			// two documents; shallow comparisons work.
+			// eslint-disable-next-line eqeqeq
+			if ( b == document || b.ownerDocument == preferredDoc &&
+				contains( preferredDoc, b ) ) {
+				return 1;
+			}
+
+			// Maintain original order
+			return sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+		}
+
+		return compare & 4 ? -1 : 1;
+	} :
+	function( a, b ) {
+
+		// Exit early if the nodes are identical
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		var cur,
+			i = 0,
+			aup = a.parentNode,
+			bup = b.parentNode,
+			ap = [ a ],
+			bp = [ b ];
+
+		// Parentless nodes are either documents or disconnected
+		if ( !aup || !bup ) {
+
+			// Support: IE 11+, Edge 17 - 18+
+			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+			// two documents; shallow comparisons work.
+			/* eslint-disable eqeqeq */
+			return a == document ? -1 :
+				b == document ? 1 :
+				/* eslint-enable eqeqeq */
+				aup ? -1 :
+				bup ? 1 :
+				sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+
+		// If the nodes are siblings, we can do a quick check
+		} else if ( aup === bup ) {
+			return siblingCheck( a, b );
+		}
+
+		// Otherwise we need full lists of their ancestors for comparison
+		cur = a;
+		while ( ( cur = cur.parentNode ) ) {
+			ap.unshift( cur );
+		}
+		cur = b;
+		while ( ( cur = cur.parentNode ) ) {
+			bp.unshift( cur );
+		}
+
+		// Walk down the tree looking for a discrepancy
+		while ( ap[ i ] === bp[ i ] ) {
+			i++;
+		}
+
+		return i ?
+
+			// Do a sibling check if the nodes have a common ancestor
+			siblingCheck( ap[ i ], bp[ i ] ) :
+
+			// Otherwise nodes in our document sort first
+			// Support: IE 11+, Edge 17 - 18+
+			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+			// two documents; shallow comparisons work.
+			/* eslint-disable eqeqeq */
+			ap[ i ] == preferredDoc ? -1 :
+			bp[ i ] == preferredDoc ? 1 :
+			/* eslint-enable eqeqeq */
+			0;
+	};
+
+	return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+	return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+	setDocument( elem );
+
+	if ( support.matchesSelector && documentIsHTML &&
+		!nonnativeSelectorCache[ expr + " " ] &&
+		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+		try {
+			var ret = matches.call( elem, expr );
+
+			// IE 9's matchesSelector returns false on disconnected nodes
+			if ( ret || support.disconnectedMatch ||
+
+				// As well, disconnected nodes are said to be in a document
+				// fragment in IE 9
+				elem.document && elem.document.nodeType !== 11 ) {
+				return ret;
+			}
+		} catch ( e ) {
+			nonnativeSelectorCache( expr, true );
+		}
+	}
+
+	return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+
+	// Set document vars if needed
+	// Support: IE 11+, Edge 17 - 18+
+	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+	// two documents; shallow comparisons work.
+	// eslint-disable-next-line eqeqeq
+	if ( ( context.ownerDocument || context ) != document ) {
+		setDocument( context );
+	}
+	return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+
+	// Set document vars if needed
+	// Support: IE 11+, Edge 17 - 18+
+	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+	// two documents; shallow comparisons work.
+	// eslint-disable-next-line eqeqeq
+	if ( ( elem.ownerDocument || elem ) != document ) {
+		setDocument( elem );
+	}
+
+	var fn = Expr.attrHandle[ name.toLowerCase() ],
+
+		// Don't get fooled by Object.prototype properties (jQuery #13807)
+		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+			fn( elem, name, !documentIsHTML ) :
+			undefined;
+
+	return val !== undefined ?
+		val :
+		support.attributes || !documentIsHTML ?
+			elem.getAttribute( name ) :
+			( val = elem.getAttributeNode( name ) ) && val.specified ?
+				val.value :
+				null;
+};
+
+Sizzle.escape = function( sel ) {
+	return ( sel + "" ).replace( rcssescape, fcssescape );
+};
+
+Sizzle.error = function( msg ) {
+	throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+	var elem,
+		duplicates = [],
+		j = 0,
+		i = 0;
+
+	// Unless we *know* we can detect duplicates, assume their presence
+	hasDuplicate = !support.detectDuplicates;
+	sortInput = !support.sortStable && results.slice( 0 );
+	results.sort( sortOrder );
+
+	if ( hasDuplicate ) {
+		while ( ( elem = results[ i++ ] ) ) {
+			if ( elem === results[ i ] ) {
+				j = duplicates.push( i );
+			}
+		}
+		while ( j-- ) {
+			results.splice( duplicates[ j ], 1 );
+		}
+	}
+
+	// Clear input after sorting to release objects
+	// See https://github.com/jquery/sizzle/pull/225
+	sortInput = null;
+
+	return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+	var node,
+		ret = "",
+		i = 0,
+		nodeType = elem.nodeType;
+
+	if ( !nodeType ) {
+
+		// If no nodeType, this is expected to be an array
+		while ( ( node = elem[ i++ ] ) ) {
+
+			// Do not traverse comment nodes
+			ret += getText( node );
+		}
+	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+
+		// Use textContent for elements
+		// innerText usage removed for consistency of new lines (jQuery #11153)
+		if ( typeof elem.textContent === "string" ) {
+			return elem.textContent;
+		} else {
+
+			// Traverse its children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				ret += getText( elem );
+			}
+		}
+	} else if ( nodeType === 3 || nodeType === 4 ) {
+		return elem.nodeValue;
+	}
+
+	// Do not include comment or processing instruction nodes
+
+	return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+	// Can be adjusted by the user
+	cacheLength: 50,
+
+	createPseudo: markFunction,
+
+	match: matchExpr,
+
+	attrHandle: {},
+
+	find: {},
+
+	relative: {
+		">": { dir: "parentNode", first: true },
+		" ": { dir: "parentNode" },
+		"+": { dir: "previousSibling", first: true },
+		"~": { dir: "previousSibling" }
+	},
+
+	preFilter: {
+		"ATTR": function( match ) {
+			match[ 1 ] = match[ 1 ].replace( runescape, funescape );
+
+			// Move the given value to match[3] whether quoted or unquoted
+			match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
+				match[ 5 ] || "" ).replace( runescape, funescape );
+
+			if ( match[ 2 ] === "~=" ) {
+				match[ 3 ] = " " + match[ 3 ] + " ";
+			}
+
+			return match.slice( 0, 4 );
+		},
+
+		"CHILD": function( match ) {
+
+			/* matches from matchExpr["CHILD"]
+				1 type (only|nth|...)
+				2 what (child|of-type)
+				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+				4 xn-component of xn+y argument ([+-]?\d*n|)
+				5 sign of xn-component
+				6 x of xn-component
+				7 sign of y-component
+				8 y of y-component
+			*/
+			match[ 1 ] = match[ 1 ].toLowerCase();
+
+			if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
+
+				// nth-* requires argument
+				if ( !match[ 3 ] ) {
+					Sizzle.error( match[ 0 ] );
+				}
+
+				// numeric x and y parameters for Expr.filter.CHILD
+				// remember that false/true cast respectively to 0/1
+				match[ 4 ] = +( match[ 4 ] ?
+					match[ 5 ] + ( match[ 6 ] || 1 ) :
+					2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
+				match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
+
+				// other types prohibit arguments
+			} else if ( match[ 3 ] ) {
+				Sizzle.error( match[ 0 ] );
+			}
+
+			return match;
+		},
+
+		"PSEUDO": function( match ) {
+			var excess,
+				unquoted = !match[ 6 ] && match[ 2 ];
+
+			if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
+				return null;
+			}
+
+			// Accept quoted arguments as-is
+			if ( match[ 3 ] ) {
+				match[ 2 ] = match[ 4 ] || match[ 5 ] || "";
+
+			// Strip excess characters from unquoted arguments
+			} else if ( unquoted && rpseudo.test( unquoted ) &&
+
+				// Get excess from tokenize (recursively)
+				( excess = tokenize( unquoted, true ) ) &&
+
+				// advance to the next closing parenthesis
+				( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {
+
+				// excess is a negative index
+				match[ 0 ] = match[ 0 ].slice( 0, excess );
+				match[ 2 ] = unquoted.slice( 0, excess );
+			}
+
+			// Return only captures needed by the pseudo filter method (type and argument)
+			return match.slice( 0, 3 );
+		}
+	},
+
+	filter: {
+
+		"TAG": function( nodeNameSelector ) {
+			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+			return nodeNameSelector === "*" ?
+				function() {
+					return true;
+				} :
+				function( elem ) {
+					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+				};
+		},
+
+		"CLASS": function( className ) {
+			var pattern = classCache[ className + " " ];
+
+			return pattern ||
+				( pattern = new RegExp( "(^|" + whitespace +
+					")" + className + "(" + whitespace + "|$)" ) ) && classCache(
+						className, function( elem ) {
+							return pattern.test(
+								typeof elem.className === "string" && elem.className ||
+								typeof elem.getAttribute !== "undefined" &&
+									elem.getAttribute( "class" ) ||
+								""
+							);
+				} );
+		},
+
+		"ATTR": function( name, operator, check ) {
+			return function( elem ) {
+				var result = Sizzle.attr( elem, name );
+
+				if ( result == null ) {
+					return operator === "!=";
+				}
+				if ( !operator ) {
+					return true;
+				}
+
+				result += "";
+
+				/* eslint-disable max-len */
+
+				return operator === "=" ? result === check :
+					operator === "!=" ? result !== check :
+					operator === "^=" ? check && result.indexOf( check ) === 0 :
+					operator === "*=" ? check && result.indexOf( check ) > -1 :
+					operator === "$=" ? check && result.slice( -check.length ) === check :
+					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+					false;
+				/* eslint-enable max-len */
+
+			};
+		},
+
+		"CHILD": function( type, what, _argument, first, last ) {
+			var simple = type.slice( 0, 3 ) !== "nth",
+				forward = type.slice( -4 ) !== "last",
+				ofType = what === "of-type";
+
+			return first === 1 && last === 0 ?
+
+				// Shortcut for :nth-*(n)
+				function( elem ) {
+					return !!elem.parentNode;
+				} :
+
+				function( elem, _context, xml ) {
+					var cache, uniqueCache, outerCache, node, nodeIndex, start,
+						dir = simple !== forward ? "nextSibling" : "previousSibling",
+						parent = elem.parentNode,
+						name = ofType && elem.nodeName.toLowerCase(),
+						useCache = !xml && !ofType,
+						diff = false;
+
+					if ( parent ) {
+
+						// :(first|last|only)-(child|of-type)
+						if ( simple ) {
+							while ( dir ) {
+								node = elem;
+								while ( ( node = node[ dir ] ) ) {
+									if ( ofType ?
+										node.nodeName.toLowerCase() === name :
+										node.nodeType === 1 ) {
+
+										return false;
+									}
+								}
+
+								// Reverse direction for :only-* (if we haven't yet done so)
+								start = dir = type === "only" && !start && "nextSibling";
+							}
+							return true;
+						}
+
+						start = [ forward ? parent.firstChild : parent.lastChild ];
+
+						// non-xml :nth-child(...) stores cache data on `parent`
+						if ( forward && useCache ) {
+
+							// Seek `elem` from a previously-cached index
+
+							// ...in a gzip-friendly way
+							node = parent;
+							outerCache = node[ expando ] || ( node[ expando ] = {} );
+
+							// Support: IE <9 only
+							// Defend against cloned attroperties (jQuery gh-1709)
+							uniqueCache = outerCache[ node.uniqueID ] ||
+								( outerCache[ node.uniqueID ] = {} );
+
+							cache = uniqueCache[ type ] || [];
+							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+							diff = nodeIndex && cache[ 2 ];
+							node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+							while ( ( node = ++nodeIndex && node && node[ dir ] ||
+
+								// Fallback to seeking `elem` from the start
+								( diff = nodeIndex = 0 ) || start.pop() ) ) {
+
+								// When found, cache indexes on `parent` and break
+								if ( node.nodeType === 1 && ++diff && node === elem ) {
+									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+									break;
+								}
+							}
+
+						} else {
+
+							// Use previously-cached element index if available
+							if ( useCache ) {
+
+								// ...in a gzip-friendly way
+								node = elem;
+								outerCache = node[ expando ] || ( node[ expando ] = {} );
+
+								// Support: IE <9 only
+								// Defend against cloned attroperties (jQuery gh-1709)
+								uniqueCache = outerCache[ node.uniqueID ] ||
+									( outerCache[ node.uniqueID ] = {} );
+
+								cache = uniqueCache[ type ] || [];
+								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+								diff = nodeIndex;
+							}
+
+							// xml :nth-child(...)
+							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
+							if ( diff === false ) {
+
+								// Use the same loop as above to seek `elem` from the start
+								while ( ( node = ++nodeIndex && node && node[ dir ] ||
+									( diff = nodeIndex = 0 ) || start.pop() ) ) {
+
+									if ( ( ofType ?
+										node.nodeName.toLowerCase() === name :
+										node.nodeType === 1 ) &&
+										++diff ) {
+
+										// Cache the index of each encountered element
+										if ( useCache ) {
+											outerCache = node[ expando ] ||
+												( node[ expando ] = {} );
+
+											// Support: IE <9 only
+											// Defend against cloned attroperties (jQuery gh-1709)
+											uniqueCache = outerCache[ node.uniqueID ] ||
+												( outerCache[ node.uniqueID ] = {} );
+
+											uniqueCache[ type ] = [ dirruns, diff ];
+										}
+
+										if ( node === elem ) {
+											break;
+										}
+									}
+								}
+							}
+						}
+
+						// Incorporate the offset, then check against cycle size
+						diff -= last;
+						return diff === first || ( diff % first === 0 && diff / first >= 0 );
+					}
+				};
+		},
+
+		"PSEUDO": function( pseudo, argument ) {
+
+			// pseudo-class names are case-insensitive
+			// http://www.w3.org/TR/selectors/#pseudo-classes
+			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+			// Remember that setFilters inherits from pseudos
+			var args,
+				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+					Sizzle.error( "unsupported pseudo: " + pseudo );
+
+			// The user may use createPseudo to indicate that
+			// arguments are needed to create the filter function
+			// just as Sizzle does
+			if ( fn[ expando ] ) {
+				return fn( argument );
+			}
+
+			// But maintain support for old signatures
+			if ( fn.length > 1 ) {
+				args = [ pseudo, pseudo, "", argument ];
+				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+					markFunction( function( seed, matches ) {
+						var idx,
+							matched = fn( seed, argument ),
+							i = matched.length;
+						while ( i-- ) {
+							idx = indexOf( seed, matched[ i ] );
+							seed[ idx ] = !( matches[ idx ] = matched[ i ] );
+						}
+					} ) :
+					function( elem ) {
+						return fn( elem, 0, args );
+					};
+			}
+
+			return fn;
+		}
+	},
+
+	pseudos: {
+
+		// Potentially complex pseudos
+		"not": markFunction( function( selector ) {
+
+			// Trim the selector passed to compile
+			// to avoid treating leading and trailing
+			// spaces as combinators
+			var input = [],
+				results = [],
+				matcher = compile( selector.replace( rtrim, "$1" ) );
+
+			return matcher[ expando ] ?
+				markFunction( function( seed, matches, _context, xml ) {
+					var elem,
+						unmatched = matcher( seed, null, xml, [] ),
+						i = seed.length;
+
+					// Match elements unmatched by `matcher`
+					while ( i-- ) {
+						if ( ( elem = unmatched[ i ] ) ) {
+							seed[ i ] = !( matches[ i ] = elem );
+						}
+					}
+				} ) :
+				function( elem, _context, xml ) {
+					input[ 0 ] = elem;
+					matcher( input, null, xml, results );
+
+					// Don't keep the element (issue #299)
+					input[ 0 ] = null;
+					return !results.pop();
+				};
+		} ),
+
+		"has": markFunction( function( selector ) {
+			return function( elem ) {
+				return Sizzle( selector, elem ).length > 0;
+			};
+		} ),
+
+		"contains": markFunction( function( text ) {
+			text = text.replace( runescape, funescape );
+			return function( elem ) {
+				return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
+			};
+		} ),
+
+		// "Whether an element is represented by a :lang() selector
+		// is based solely on the element's language value
+		// being equal to the identifier C,
+		// or beginning with the identifier C immediately followed by "-".
+		// The matching of C against the element's language value is performed case-insensitively.
+		// The identifier C does not have to be a valid language name."
+		// http://www.w3.org/TR/selectors/#lang-pseudo
+		"lang": markFunction( function( lang ) {
+
+			// lang value must be a valid identifier
+			if ( !ridentifier.test( lang || "" ) ) {
+				Sizzle.error( "unsupported lang: " + lang );
+			}
+			lang = lang.replace( runescape, funescape ).toLowerCase();
+			return function( elem ) {
+				var elemLang;
+				do {
+					if ( ( elemLang = documentIsHTML ?
+						elem.lang :
+						elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {
+
+						elemLang = elemLang.toLowerCase();
+						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+					}
+				} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
+				return false;
+			};
+		} ),
+
+		// Miscellaneous
+		"target": function( elem ) {
+			var hash = window.location && window.location.hash;
+			return hash && hash.slice( 1 ) === elem.id;
+		},
+
+		"root": function( elem ) {
+			return elem === docElem;
+		},
+
+		"focus": function( elem ) {
+			return elem === document.activeElement &&
+				( !document.hasFocus || document.hasFocus() ) &&
+				!!( elem.type || elem.href || ~elem.tabIndex );
+		},
+
+		// Boolean properties
+		"enabled": createDisabledPseudo( false ),
+		"disabled": createDisabledPseudo( true ),
+
+		"checked": function( elem ) {
+
+			// In CSS3, :checked should return both checked and selected elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			var nodeName = elem.nodeName.toLowerCase();
+			return ( nodeName === "input" && !!elem.checked ) ||
+				( nodeName === "option" && !!elem.selected );
+		},
+
+		"selected": function( elem ) {
+
+			// Accessing this property makes selected-by-default
+			// options in Safari work properly
+			if ( elem.parentNode ) {
+				// eslint-disable-next-line no-unused-expressions
+				elem.parentNode.selectedIndex;
+			}
+
+			return elem.selected === true;
+		},
+
+		// Contents
+		"empty": function( elem ) {
+
+			// http://www.w3.org/TR/selectors/#empty-pseudo
+			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+			//   but not by others (comment: 8; processing instruction: 7; etc.)
+			// nodeType < 6 works because attributes (2) do not appear as children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				if ( elem.nodeType < 6 ) {
+					return false;
+				}
+			}
+			return true;
+		},
+
+		"parent": function( elem ) {
+			return !Expr.pseudos[ "empty" ]( elem );
+		},
+
+		// Element/input types
+		"header": function( elem ) {
+			return rheader.test( elem.nodeName );
+		},
+
+		"input": function( elem ) {
+			return rinputs.test( elem.nodeName );
+		},
+
+		"button": function( elem ) {
+			var name = elem.nodeName.toLowerCase();
+			return name === "input" && elem.type === "button" || name === "button";
+		},
+
+		"text": function( elem ) {
+			var attr;
+			return elem.nodeName.toLowerCase() === "input" &&
+				elem.type === "text" &&
+
+				// Support: IE<8
+				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+				( ( attr = elem.getAttribute( "type" ) ) == null ||
+					attr.toLowerCase() === "text" );
+		},
+
+		// Position-in-collection
+		"first": createPositionalPseudo( function() {
+			return [ 0 ];
+		} ),
+
+		"last": createPositionalPseudo( function( _matchIndexes, length ) {
+			return [ length - 1 ];
+		} ),
+
+		"eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
+			return [ argument < 0 ? argument + length : argument ];
+		} ),
+
+		"even": createPositionalPseudo( function( matchIndexes, length ) {
+			var i = 0;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		} ),
+
+		"odd": createPositionalPseudo( function( matchIndexes, length ) {
+			var i = 1;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		} ),
+
+		"lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
+			var i = argument < 0 ?
+				argument + length :
+				argument > length ?
+					length :
+					argument;
+			for ( ; --i >= 0; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		} ),
+
+		"gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; ++i < length; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		} )
+	}
+};
+
+Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+	Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+	Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+	var matched, match, tokens, type,
+		soFar, groups, preFilters,
+		cached = tokenCache[ selector + " " ];
+
+	if ( cached ) {
+		return parseOnly ? 0 : cached.slice( 0 );
+	}
+
+	soFar = selector;
+	groups = [];
+	preFilters = Expr.preFilter;
+
+	while ( soFar ) {
+
+		// Comma and first run
+		if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
+			if ( match ) {
+
+				// Don't consume trailing commas as valid
+				soFar = soFar.slice( match[ 0 ].length ) || soFar;
+			}
+			groups.push( ( tokens = [] ) );
+		}
+
+		matched = false;
+
+		// Combinators
+		if ( ( match = rcombinators.exec( soFar ) ) ) {
+			matched = match.shift();
+			tokens.push( {
+				value: matched,
+
+				// Cast descendant combinators to space
+				type: match[ 0 ].replace( rtrim, " " )
+			} );
+			soFar = soFar.slice( matched.length );
+		}
+
+		// Filters
+		for ( type in Expr.filter ) {
+			if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
+				( match = preFilters[ type ]( match ) ) ) ) {
+				matched = match.shift();
+				tokens.push( {
+					value: matched,
+					type: type,
+					matches: match
+				} );
+				soFar = soFar.slice( matched.length );
+			}
+		}
+
+		if ( !matched ) {
+			break;
+		}
+	}
+
+	// Return the length of the invalid excess
+	// if we're just parsing
+	// Otherwise, throw an error or return tokens
+	return parseOnly ?
+		soFar.length :
+		soFar ?
+			Sizzle.error( selector ) :
+
+			// Cache the tokens
+			tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+	var i = 0,
+		len = tokens.length,
+		selector = "";
+	for ( ; i < len; i++ ) {
+		selector += tokens[ i ].value;
+	}
+	return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+	var dir = combinator.dir,
+		skip = combinator.next,
+		key = skip || dir,
+		checkNonElements = base && key === "parentNode",
+		doneName = done++;
+
+	return combinator.first ?
+
+		// Check against closest ancestor/preceding element
+		function( elem, context, xml ) {
+			while ( ( elem = elem[ dir ] ) ) {
+				if ( elem.nodeType === 1 || checkNonElements ) {
+					return matcher( elem, context, xml );
+				}
+			}
+			return false;
+		} :
+
+		// Check against all ancestor/preceding elements
+		function( elem, context, xml ) {
+			var oldCache, uniqueCache, outerCache,
+				newCache = [ dirruns, doneName ];
+
+			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+			if ( xml ) {
+				while ( ( elem = elem[ dir ] ) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						if ( matcher( elem, context, xml ) ) {
+							return true;
+						}
+					}
+				}
+			} else {
+				while ( ( elem = elem[ dir ] ) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						outerCache = elem[ expando ] || ( elem[ expando ] = {} );
+
+						// Support: IE <9 only
+						// Defend against cloned attroperties (jQuery gh-1709)
+						uniqueCache = outerCache[ elem.uniqueID ] ||
+							( outerCache[ elem.uniqueID ] = {} );
+
+						if ( skip && skip === elem.nodeName.toLowerCase() ) {
+							elem = elem[ dir ] || elem;
+						} else if ( ( oldCache = uniqueCache[ key ] ) &&
+							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+							// Assign to newCache so results back-propagate to previous elements
+							return ( newCache[ 2 ] = oldCache[ 2 ] );
+						} else {
+
+							// Reuse newcache so results back-propagate to previous elements
+							uniqueCache[ key ] = newCache;
+
+							// A match means we're done; a fail means we have to keep checking
+							if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
+								return true;
+							}
+						}
+					}
+				}
+			}
+			return false;
+		};
+}
+
+function elementMatcher( matchers ) {
+	return matchers.length > 1 ?
+		function( elem, context, xml ) {
+			var i = matchers.length;
+			while ( i-- ) {
+				if ( !matchers[ i ]( elem, context, xml ) ) {
+					return false;
+				}
+			}
+			return true;
+		} :
+		matchers[ 0 ];
+}
+
+function multipleContexts( selector, contexts, results ) {
+	var i = 0,
+		len = contexts.length;
+	for ( ; i < len; i++ ) {
+		Sizzle( selector, contexts[ i ], results );
+	}
+	return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+	var elem,
+		newUnmatched = [],
+		i = 0,
+		len = unmatched.length,
+		mapped = map != null;
+
+	for ( ; i < len; i++ ) {
+		if ( ( elem = unmatched[ i ] ) ) {
+			if ( !filter || filter( elem, context, xml ) ) {
+				newUnmatched.push( elem );
+				if ( mapped ) {
+					map.push( i );
+				}
+			}
+		}
+	}
+
+	return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+	if ( postFilter && !postFilter[ expando ] ) {
+		postFilter = setMatcher( postFilter );
+	}
+	if ( postFinder && !postFinder[ expando ] ) {
+		postFinder = setMatcher( postFinder, postSelector );
+	}
+	return markFunction( function( seed, results, context, xml ) {
+		var temp, i, elem,
+			preMap = [],
+			postMap = [],
+			preexisting = results.length,
+
+			// Get initial elements from seed or context
+			elems = seed || multipleContexts(
+				selector || "*",
+				context.nodeType ? [ context ] : context,
+				[]
+			),
+
+			// Prefilter to get matcher input, preserving a map for seed-results synchronization
+			matcherIn = preFilter && ( seed || !selector ) ?
+				condense( elems, preMap, preFilter, context, xml ) :
+				elems,
+
+			matcherOut = matcher ?
+
+				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+					// ...intermediate processing is necessary
+					[] :
+
+					// ...otherwise use results directly
+					results :
+				matcherIn;
+
+		// Find primary matches
+		if ( matcher ) {
+			matcher( matcherIn, matcherOut, context, xml );
+		}
+
+		// Apply postFilter
+		if ( postFilter ) {
+			temp = condense( matcherOut, postMap );
+			postFilter( temp, [], context, xml );
+
+			// Un-match failing elements by moving them back to matcherIn
+			i = temp.length;
+			while ( i-- ) {
+				if ( ( elem = temp[ i ] ) ) {
+					matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
+				}
+			}
+		}
+
+		if ( seed ) {
+			if ( postFinder || preFilter ) {
+				if ( postFinder ) {
+
+					// Get the final matcherOut by condensing this intermediate into postFinder contexts
+					temp = [];
+					i = matcherOut.length;
+					while ( i-- ) {
+						if ( ( elem = matcherOut[ i ] ) ) {
+
+							// Restore matcherIn since elem is not yet a final match
+							temp.push( ( matcherIn[ i ] = elem ) );
+						}
+					}
+					postFinder( null, ( matcherOut = [] ), temp, xml );
+				}
+
+				// Move matched elements from seed to results to keep them synchronized
+				i = matcherOut.length;
+				while ( i-- ) {
+					if ( ( elem = matcherOut[ i ] ) &&
+						( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
+
+						seed[ temp ] = !( results[ temp ] = elem );
+					}
+				}
+			}
+
+		// Add elements to results, through postFinder if defined
+		} else {
+			matcherOut = condense(
+				matcherOut === results ?
+					matcherOut.splice( preexisting, matcherOut.length ) :
+					matcherOut
+			);
+			if ( postFinder ) {
+				postFinder( null, results, matcherOut, xml );
+			} else {
+				push.apply( results, matcherOut );
+			}
+		}
+	} );
+}
+
+function matcherFromTokens( tokens ) {
+	var checkContext, matcher, j,
+		len = tokens.length,
+		leadingRelative = Expr.relative[ tokens[ 0 ].type ],
+		implicitRelative = leadingRelative || Expr.relative[ " " ],
+		i = leadingRelative ? 1 : 0,
+
+		// The foundational matcher ensures that elements are reachable from top-level context(s)
+		matchContext = addCombinator( function( elem ) {
+			return elem === checkContext;
+		}, implicitRelative, true ),
+		matchAnyContext = addCombinator( function( elem ) {
+			return indexOf( checkContext, elem ) > -1;
+		}, implicitRelative, true ),
+		matchers = [ function( elem, context, xml ) {
+			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+				( checkContext = context ).nodeType ?
+					matchContext( elem, context, xml ) :
+					matchAnyContext( elem, context, xml ) );
+
+			// Avoid hanging onto element (issue #299)
+			checkContext = null;
+			return ret;
+		} ];
+
+	for ( ; i < len; i++ ) {
+		if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
+			matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
+		} else {
+			matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );
+
+			// Return special upon seeing a positional matcher
+			if ( matcher[ expando ] ) {
+
+				// Find the next relative operator (if any) for proper handling
+				j = ++i;
+				for ( ; j < len; j++ ) {
+					if ( Expr.relative[ tokens[ j ].type ] ) {
+						break;
+					}
+				}
+				return setMatcher(
+					i > 1 && elementMatcher( matchers ),
+					i > 1 && toSelector(
+
+					// If the preceding token was a descendant combinator, insert an implicit any-element `*`
+					tokens
+						.slice( 0, i - 1 )
+						.concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
+					).replace( rtrim, "$1" ),
+					matcher,
+					i < j && matcherFromTokens( tokens.slice( i, j ) ),
+					j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
+					j < len && toSelector( tokens )
+				);
+			}
+			matchers.push( matcher );
+		}
+	}
+
+	return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+	var bySet = setMatchers.length > 0,
+		byElement = elementMatchers.length > 0,
+		superMatcher = function( seed, context, xml, results, outermost ) {
+			var elem, j, matcher,
+				matchedCount = 0,
+				i = "0",
+				unmatched = seed && [],
+				setMatched = [],
+				contextBackup = outermostContext,
+
+				// We must always have either seed elements or outermost context
+				elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),
+
+				// Use integer dirruns iff this is the outermost matcher
+				dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
+				len = elems.length;
+
+			if ( outermost ) {
+
+				// Support: IE 11+, Edge 17 - 18+
+				// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+				// two documents; shallow comparisons work.
+				// eslint-disable-next-line eqeqeq
+				outermostContext = context == document || context || outermost;
+			}
+
+			// Add elements passing elementMatchers directly to results
+			// Support: IE<9, Safari
+			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+			for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
+				if ( byElement && elem ) {
+					j = 0;
+
+					// Support: IE 11+, Edge 17 - 18+
+					// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+					// two documents; shallow comparisons work.
+					// eslint-disable-next-line eqeqeq
+					if ( !context && elem.ownerDocument != document ) {
+						setDocument( elem );
+						xml = !documentIsHTML;
+					}
+					while ( ( matcher = elementMatchers[ j++ ] ) ) {
+						if ( matcher( elem, context || document, xml ) ) {
+							results.push( elem );
+							break;
+						}
+					}
+					if ( outermost ) {
+						dirruns = dirrunsUnique;
+					}
+				}
+
+				// Track unmatched elements for set filters
+				if ( bySet ) {
+
+					// They will have gone through all possible matchers
+					if ( ( elem = !matcher && elem ) ) {
+						matchedCount--;
+					}
+
+					// Lengthen the array for every element, matched or not
+					if ( seed ) {
+						unmatched.push( elem );
+					}
+				}
+			}
+
+			// `i` is now the count of elements visited above, and adding it to `matchedCount`
+			// makes the latter nonnegative.
+			matchedCount += i;
+
+			// Apply set filters to unmatched elements
+			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+			// no element matchers and no seed.
+			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
+			// numerically zero.
+			if ( bySet && i !== matchedCount ) {
+				j = 0;
+				while ( ( matcher = setMatchers[ j++ ] ) ) {
+					matcher( unmatched, setMatched, context, xml );
+				}
+
+				if ( seed ) {
+
+					// Reintegrate element matches to eliminate the need for sorting
+					if ( matchedCount > 0 ) {
+						while ( i-- ) {
+							if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
+								setMatched[ i ] = pop.call( results );
+							}
+						}
+					}
+
+					// Discard index placeholder values to get only actual matches
+					setMatched = condense( setMatched );
+				}
+
+				// Add matches to results
+				push.apply( results, setMatched );
+
+				// Seedless set matches succeeding multiple successful matchers stipulate sorting
+				if ( outermost && !seed && setMatched.length > 0 &&
+					( matchedCount + setMatchers.length ) > 1 ) {
+
+					Sizzle.uniqueSort( results );
+				}
+			}
+
+			// Override manipulation of globals by nested matchers
+			if ( outermost ) {
+				dirruns = dirrunsUnique;
+				outermostContext = contextBackup;
+			}
+
+			return unmatched;
+		};
+
+	return bySet ?
+		markFunction( superMatcher ) :
+		superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+	var i,
+		setMatchers = [],
+		elementMatchers = [],
+		cached = compilerCache[ selector + " " ];
+
+	if ( !cached ) {
+
+		// Generate a function of recursive functions that can be used to check each element
+		if ( !match ) {
+			match = tokenize( selector );
+		}
+		i = match.length;
+		while ( i-- ) {
+			cached = matcherFromTokens( match[ i ] );
+			if ( cached[ expando ] ) {
+				setMatchers.push( cached );
+			} else {
+				elementMatchers.push( cached );
+			}
+		}
+
+		// Cache the compiled function
+		cached = compilerCache(
+			selector,
+			matcherFromGroupMatchers( elementMatchers, setMatchers )
+		);
+
+		// Save selector and tokenization
+		cached.selector = selector;
+	}
+	return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ *  selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ *  selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+	var i, tokens, token, type, find,
+		compiled = typeof selector === "function" && selector,
+		match = !seed && tokenize( ( selector = compiled.selector || selector ) );
+
+	results = results || [];
+
+	// Try to minimize operations if there is only one selector in the list and no seed
+	// (the latter of which guarantees us context)
+	if ( match.length === 1 ) {
+
+		// Reduce context if the leading compound selector is an ID
+		tokens = match[ 0 ] = match[ 0 ].slice( 0 );
+		if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
+			context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
+
+			context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
+				.replace( runescape, funescape ), context ) || [] )[ 0 ];
+			if ( !context ) {
+				return results;
+
+			// Precompiled matchers will still verify ancestry, so step up a level
+			} else if ( compiled ) {
+				context = context.parentNode;
+			}
+
+			selector = selector.slice( tokens.shift().value.length );
+		}
+
+		// Fetch a seed set for right-to-left matching
+		i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
+		while ( i-- ) {
+			token = tokens[ i ];
+
+			// Abort if we hit a combinator
+			if ( Expr.relative[ ( type = token.type ) ] ) {
+				break;
+			}
+			if ( ( find = Expr.find[ type ] ) ) {
+
+				// Search, expanding context for leading sibling combinators
+				if ( ( seed = find(
+					token.matches[ 0 ].replace( runescape, funescape ),
+					rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
+						context
+				) ) ) {
+
+					// If seed is empty or no tokens remain, we can return early
+					tokens.splice( i, 1 );
+					selector = seed.length && toSelector( tokens );
+					if ( !selector ) {
+						push.apply( results, seed );
+						return results;
+					}
+
+					break;
+				}
+			}
+		}
+	}
+
+	// Compile and execute a filtering function if one is not provided
+	// Provide `match` to avoid retokenization if we modified the selector above
+	( compiled || compile( selector, match ) )(
+		seed,
+		context,
+		!documentIsHTML,
+		results,
+		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+	);
+	return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert( function( el ) {
+
+	// Should return 1, but returns 4 (following)
+	return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
+} );
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert( function( el ) {
+	el.innerHTML = "<a href='#'></a>";
+	return el.firstChild.getAttribute( "href" ) === "#";
+} ) ) {
+	addHandle( "type|href|height|width", function( elem, name, isXML ) {
+		if ( !isXML ) {
+			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+		}
+	} );
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert( function( el ) {
+	el.innerHTML = "<input/>";
+	el.firstChild.setAttribute( "value", "" );
+	return el.firstChild.getAttribute( "value" ) === "";
+} ) ) {
+	addHandle( "value", function( elem, _name, isXML ) {
+		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+			return elem.defaultValue;
+		}
+	} );
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert( function( el ) {
+	return el.getAttribute( "disabled" ) == null;
+} ) ) {
+	addHandle( booleans, function( elem, name, isXML ) {
+		var val;
+		if ( !isXML ) {
+			return elem[ name ] === true ? name.toLowerCase() :
+				( val = elem.getAttributeNode( name ) ) && val.specified ?
+					val.value :
+					null;
+		}
+	} );
+}
+
+return Sizzle;
+
+} )( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+
+// Deprecated
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+jQuery.escapeSelector = Sizzle.escape;
+
+
+
+
+var dir = function( elem, dir, until ) {
+	var matched = [],
+		truncate = until !== undefined;
+
+	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+		if ( elem.nodeType === 1 ) {
+			if ( truncate && jQuery( elem ).is( until ) ) {
+				break;
+			}
+			matched.push( elem );
+		}
+	}
+	return matched;
+};
+
+
+var siblings = function( n, elem ) {
+	var matched = [];
+
+	for ( ; n; n = n.nextSibling ) {
+		if ( n.nodeType === 1 && n !== elem ) {
+			matched.push( n );
+		}
+	}
+
+	return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+
+
+function nodeName( elem, name ) {
+
+  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+
+};
+var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
+
+
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+	if ( isFunction( qualifier ) ) {
+		return jQuery.grep( elements, function( elem, i ) {
+			return !!qualifier.call( elem, i, elem ) !== not;
+		} );
+	}
+
+	// Single element
+	if ( qualifier.nodeType ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( elem === qualifier ) !== not;
+		} );
+	}
+
+	// Arraylike of elements (jQuery, arguments, Array)
+	if ( typeof qualifier !== "string" ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+		} );
+	}
+
+	// Filtered directly for both simple and complex selectors
+	return jQuery.filter( qualifier, elements, not );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+	var elem = elems[ 0 ];
+
+	if ( not ) {
+		expr = ":not(" + expr + ")";
+	}
+
+	if ( elems.length === 1 && elem.nodeType === 1 ) {
+		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
+	}
+
+	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+		return elem.nodeType === 1;
+	} ) );
+};
+
+jQuery.fn.extend( {
+	find: function( selector ) {
+		var i, ret,
+			len = this.length,
+			self = this;
+
+		if ( typeof selector !== "string" ) {
+			return this.pushStack( jQuery( selector ).filter( function() {
+				for ( i = 0; i < len; i++ ) {
+					if ( jQuery.contains( self[ i ], this ) ) {
+						return true;
+					}
+				}
+			} ) );
+		}
+
+		ret = this.pushStack( [] );
+
+		for ( i = 0; i < len; i++ ) {
+			jQuery.find( selector, self[ i ], ret );
+		}
+
+		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
+	},
+	filter: function( selector ) {
+		return this.pushStack( winnow( this, selector || [], false ) );
+	},
+	not: function( selector ) {
+		return this.pushStack( winnow( this, selector || [], true ) );
+	},
+	is: function( selector ) {
+		return !!winnow(
+			this,
+
+			// If this is a positional/relative selector, check membership in the returned set
+			// so $("p:first").is("p:last") won't return true for a doc with two "p".
+			typeof selector === "string" && rneedsContext.test( selector ) ?
+				jQuery( selector ) :
+				selector || [],
+			false
+		).length;
+	}
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+	// A simple way to check for HTML strings
+	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+	// Strict HTML recognition (#11290: must start with <)
+	// Shortcut simple #id case for speed
+	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
+
+	init = jQuery.fn.init = function( selector, context, root ) {
+		var match, elem;
+
+		// HANDLE: $(""), $(null), $(undefined), $(false)
+		if ( !selector ) {
+			return this;
+		}
+
+		// Method init() accepts an alternate rootjQuery
+		// so migrate can support jQuery.sub (gh-2101)
+		root = root || rootjQuery;
+
+		// Handle HTML strings
+		if ( typeof selector === "string" ) {
+			if ( selector[ 0 ] === "<" &&
+				selector[ selector.length - 1 ] === ">" &&
+				selector.length >= 3 ) {
+
+				// Assume that strings that start and end with <> are HTML and skip the regex check
+				match = [ null, selector, null ];
+
+			} else {
+				match = rquickExpr.exec( selector );
+			}
+
+			// Match html or make sure no context is specified for #id
+			if ( match && ( match[ 1 ] || !context ) ) {
+
+				// HANDLE: $(html) -> $(array)
+				if ( match[ 1 ] ) {
+					context = context instanceof jQuery ? context[ 0 ] : context;
+
+					// Option to run scripts is true for back-compat
+					// Intentionally let the error be thrown if parseHTML is not present
+					jQuery.merge( this, jQuery.parseHTML(
+						match[ 1 ],
+						context && context.nodeType ? context.ownerDocument || context : document,
+						true
+					) );
+
+					// HANDLE: $(html, props)
+					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+						for ( match in context ) {
+
+							// Properties of context are called as methods if possible
+							if ( isFunction( this[ match ] ) ) {
+								this[ match ]( context[ match ] );
+
+							// ...and otherwise set as attributes
+							} else {
+								this.attr( match, context[ match ] );
+							}
+						}
+					}
+
+					return this;
+
+				// HANDLE: $(#id)
+				} else {
+					elem = document.getElementById( match[ 2 ] );
+
+					if ( elem ) {
+
+						// Inject the element directly into the jQuery object
+						this[ 0 ] = elem;
+						this.length = 1;
+					}
+					return this;
+				}
+
+			// HANDLE: $(expr, $(...))
+			} else if ( !context || context.jquery ) {
+				return ( context || root ).find( selector );
+
+			// HANDLE: $(expr, context)
+			// (which is just equivalent to: $(context).find(expr)
+			} else {
+				return this.constructor( context ).find( selector );
+			}
+
+		// HANDLE: $(DOMElement)
+		} else if ( selector.nodeType ) {
+			this[ 0 ] = selector;
+			this.length = 1;
+			return this;
+
+		// HANDLE: $(function)
+		// Shortcut for document ready
+		} else if ( isFunction( selector ) ) {
+			return root.ready !== undefined ?
+				root.ready( selector ) :
+
+				// Execute immediately if ready is not present
+				selector( jQuery );
+		}
+
+		return jQuery.makeArray( selector, this );
+	};
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+	// Methods guaranteed to produce a unique set when starting from a unique set
+	guaranteedUnique = {
+		children: true,
+		contents: true,
+		next: true,
+		prev: true
+	};
+
+jQuery.fn.extend( {
+	has: function( target ) {
+		var targets = jQuery( target, this ),
+			l = targets.length;
+
+		return this.filter( function() {
+			var i = 0;
+			for ( ; i < l; i++ ) {
+				if ( jQuery.contains( this, targets[ i ] ) ) {
+					return true;
+				}
+			}
+		} );
+	},
+
+	closest: function( selectors, context ) {
+		var cur,
+			i = 0,
+			l = this.length,
+			matched = [],
+			targets = typeof selectors !== "string" && jQuery( selectors );
+
+		// Positional selectors never match, since there's no _selection_ context
+		if ( !rneedsContext.test( selectors ) ) {
+			for ( ; i < l; i++ ) {
+				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+					// Always skip document fragments
+					if ( cur.nodeType < 11 && ( targets ?
+						targets.index( cur ) > -1 :
+
+						// Don't pass non-elements to Sizzle
+						cur.nodeType === 1 &&
+							jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+						matched.push( cur );
+						break;
+					}
+				}
+			}
+		}
+
+		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+	},
+
+	// Determine the position of an element within the set
+	index: function( elem ) {
+
+		// No argument, return index in parent
+		if ( !elem ) {
+			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+		}
+
+		// Index in selector
+		if ( typeof elem === "string" ) {
+			return indexOf.call( jQuery( elem ), this[ 0 ] );
+		}
+
+		// Locate the position of the desired element
+		return indexOf.call( this,
+
+			// If it receives a jQuery object, the first element is used
+			elem.jquery ? elem[ 0 ] : elem
+		);
+	},
+
+	add: function( selector, context ) {
+		return this.pushStack(
+			jQuery.uniqueSort(
+				jQuery.merge( this.get(), jQuery( selector, context ) )
+			)
+		);
+	},
+
+	addBack: function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	}
+} );
+
+function sibling( cur, dir ) {
+	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+	return cur;
+}
+
+jQuery.each( {
+	parent: function( elem ) {
+		var parent = elem.parentNode;
+		return parent && parent.nodeType !== 11 ? parent : null;
+	},
+	parents: function( elem ) {
+		return dir( elem, "parentNode" );
+	},
+	parentsUntil: function( elem, _i, until ) {
+		return dir( elem, "parentNode", until );
+	},
+	next: function( elem ) {
+		return sibling( elem, "nextSibling" );
+	},
+	prev: function( elem ) {
+		return sibling( elem, "previousSibling" );
+	},
+	nextAll: function( elem ) {
+		return dir( elem, "nextSibling" );
+	},
+	prevAll: function( elem ) {
+		return dir( elem, "previousSibling" );
+	},
+	nextUntil: function( elem, _i, until ) {
+		return dir( elem, "nextSibling", until );
+	},
+	prevUntil: function( elem, _i, until ) {
+		return dir( elem, "previousSibling", until );
+	},
+	siblings: function( elem ) {
+		return siblings( ( elem.parentNode || {} ).firstChild, elem );
+	},
+	children: function( elem ) {
+		return siblings( elem.firstChild );
+	},
+	contents: function( elem ) {
+		if ( elem.contentDocument != null &&
+
+			// Support: IE 11+
+			// <object> elements with no `data` attribute has an object
+			// `contentDocument` with a `null` prototype.
+			getProto( elem.contentDocument ) ) {
+
+			return elem.contentDocument;
+		}
+
+		// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
+		// Treat the template element as a regular one in browsers that
+		// don't support it.
+		if ( nodeName( elem, "template" ) ) {
+			elem = elem.content || elem;
+		}
+
+		return jQuery.merge( [], elem.childNodes );
+	}
+}, function( name, fn ) {
+	jQuery.fn[ name ] = function( until, selector ) {
+		var matched = jQuery.map( this, fn, until );
+
+		if ( name.slice( -5 ) !== "Until" ) {
+			selector = until;
+		}
+
+		if ( selector && typeof selector === "string" ) {
+			matched = jQuery.filter( selector, matched );
+		}
+
+		if ( this.length > 1 ) {
+
+			// Remove duplicates
+			if ( !guaranteedUnique[ name ] ) {
+				jQuery.uniqueSort( matched );
+			}
+
+			// Reverse order for parents* and prev-derivatives
+			if ( rparentsprev.test( name ) ) {
+				matched.reverse();
+			}
+		}
+
+		return this.pushStack( matched );
+	};
+} );
+var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+	var object = {};
+	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
+		object[ flag ] = true;
+	} );
+	return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *	options: an optional list of space-separated options that will change how
+ *			the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *	once:			will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *	memory:			will keep track of previous values and will call any callback added
+ *					after the list has been fired right away with the latest "memorized"
+ *					values (like a Deferred)
+ *
+ *	unique:			will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *	stopOnFalse:	interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+	// Convert options from String-formatted to Object-formatted if needed
+	// (we check in cache first)
+	options = typeof options === "string" ?
+		createOptions( options ) :
+		jQuery.extend( {}, options );
+
+	var // Flag to know if list is currently firing
+		firing,
+
+		// Last fire value for non-forgettable lists
+		memory,
+
+		// Flag to know if list was already fired
+		fired,
+
+		// Flag to prevent firing
+		locked,
+
+		// Actual callback list
+		list = [],
+
+		// Queue of execution data for repeatable lists
+		queue = [],
+
+		// Index of currently firing callback (modified by add/remove as needed)
+		firingIndex = -1,
+
+		// Fire callbacks
+		fire = function() {
+
+			// Enforce single-firing
+			locked = locked || options.once;
+
+			// Execute callbacks for all pending executions,
+			// respecting firingIndex overrides and runtime changes
+			fired = firing = true;
+			for ( ; queue.length; firingIndex = -1 ) {
+				memory = queue.shift();
+				while ( ++firingIndex < list.length ) {
+
+					// Run callback and check for early termination
+					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+						options.stopOnFalse ) {
+
+						// Jump to end and forget the data so .add doesn't re-fire
+						firingIndex = list.length;
+						memory = false;
+					}
+				}
+			}
+
+			// Forget the data if we're done with it
+			if ( !options.memory ) {
+				memory = false;
+			}
+
+			firing = false;
+
+			// Clean up if we're done firing for good
+			if ( locked ) {
+
+				// Keep an empty list if we have data for future add calls
+				if ( memory ) {
+					list = [];
+
+				// Otherwise, this object is spent
+				} else {
+					list = "";
+				}
+			}
+		},
+
+		// Actual Callbacks object
+		self = {
+
+			// Add a callback or a collection of callbacks to the list
+			add: function() {
+				if ( list ) {
+
+					// If we have memory from a past run, we should fire after adding
+					if ( memory && !firing ) {
+						firingIndex = list.length - 1;
+						queue.push( memory );
+					}
+
+					( function add( args ) {
+						jQuery.each( args, function( _, arg ) {
+							if ( isFunction( arg ) ) {
+								if ( !options.unique || !self.has( arg ) ) {
+									list.push( arg );
+								}
+							} else if ( arg && arg.length && toType( arg ) !== "string" ) {
+
+								// Inspect recursively
+								add( arg );
+							}
+						} );
+					} )( arguments );
+
+					if ( memory && !firing ) {
+						fire();
+					}
+				}
+				return this;
+			},
+
+			// Remove a callback from the list
+			remove: function() {
+				jQuery.each( arguments, function( _, arg ) {
+					var index;
+					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+						list.splice( index, 1 );
+
+						// Handle firing indexes
+						if ( index <= firingIndex ) {
+							firingIndex--;
+						}
+					}
+				} );
+				return this;
+			},
+
+			// Check if a given callback is in the list.
+			// If no argument is given, return whether or not list has callbacks attached.
+			has: function( fn ) {
+				return fn ?
+					jQuery.inArray( fn, list ) > -1 :
+					list.length > 0;
+			},
+
+			// Remove all callbacks from the list
+			empty: function() {
+				if ( list ) {
+					list = [];
+				}
+				return this;
+			},
+
+			// Disable .fire and .add
+			// Abort any current/pending executions
+			// Clear all callbacks and values
+			disable: function() {
+				locked = queue = [];
+				list = memory = "";
+				return this;
+			},
+			disabled: function() {
+				return !list;
+			},
+
+			// Disable .fire
+			// Also disable .add unless we have memory (since it would have no effect)
+			// Abort any pending executions
+			lock: function() {
+				locked = queue = [];
+				if ( !memory && !firing ) {
+					list = memory = "";
+				}
+				return this;
+			},
+			locked: function() {
+				return !!locked;
+			},
+
+			// Call all callbacks with the given context and arguments
+			fireWith: function( context, args ) {
+				if ( !locked ) {
+					args = args || [];
+					args = [ context, args.slice ? args.slice() : args ];
+					queue.push( args );
+					if ( !firing ) {
+						fire();
+					}
+				}
+				return this;
+			},
+
+			// Call all the callbacks with the given arguments
+			fire: function() {
+				self.fireWith( this, arguments );
+				return this;
+			},
+
+			// To know if the callbacks have already been called at least once
+			fired: function() {
+				return !!fired;
+			}
+		};
+
+	return self;
+};
+
+
+function Identity( v ) {
+	return v;
+}
+function Thrower( ex ) {
+	throw ex;
+}
+
+function adoptValue( value, resolve, reject, noValue ) {
+	var method;
+
+	try {
+
+		// Check for promise aspect first to privilege synchronous behavior
+		if ( value && isFunction( ( method = value.promise ) ) ) {
+			method.call( value ).done( resolve ).fail( reject );
+
+		// Other thenables
+		} else if ( value && isFunction( ( method = value.then ) ) ) {
+			method.call( value, resolve, reject );
+
+		// Other non-thenables
+		} else {
+
+			// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
+			// * false: [ value ].slice( 0 ) => resolve( value )
+			// * true: [ value ].slice( 1 ) => resolve()
+			resolve.apply( undefined, [ value ].slice( noValue ) );
+		}
+
+	// For Promises/A+, convert exceptions into rejections
+	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
+	// Deferred#then to conditionally suppress rejection.
+	} catch ( value ) {
+
+		// Support: Android 4.0 only
+		// Strict mode functions invoked without .call/.apply get global-object context
+		reject.apply( undefined, [ value ] );
+	}
+}
+
+jQuery.extend( {
+
+	Deferred: function( func ) {
+		var tuples = [
+
+				// action, add listener, callbacks,
+				// ... .then handlers, argument index, [final state]
+				[ "notify", "progress", jQuery.Callbacks( "memory" ),
+					jQuery.Callbacks( "memory" ), 2 ],
+				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
+					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
+				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
+					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
+			],
+			state = "pending",
+			promise = {
+				state: function() {
+					return state;
+				},
+				always: function() {
+					deferred.done( arguments ).fail( arguments );
+					return this;
+				},
+				"catch": function( fn ) {
+					return promise.then( null, fn );
+				},
+
+				// Keep pipe for back-compat
+				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
+					var fns = arguments;
+
+					return jQuery.Deferred( function( newDefer ) {
+						jQuery.each( tuples, function( _i, tuple ) {
+
+							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
+							var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+
+							// deferred.progress(function() { bind to newDefer or newDefer.notify })
+							// deferred.done(function() { bind to newDefer or newDefer.resolve })
+							// deferred.fail(function() { bind to newDefer or newDefer.reject })
+							deferred[ tuple[ 1 ] ]( function() {
+								var returned = fn && fn.apply( this, arguments );
+								if ( returned && isFunction( returned.promise ) ) {
+									returned.promise()
+										.progress( newDefer.notify )
+										.done( newDefer.resolve )
+										.fail( newDefer.reject );
+								} else {
+									newDefer[ tuple[ 0 ] + "With" ](
+										this,
+										fn ? [ returned ] : arguments
+									);
+								}
+							} );
+						} );
+						fns = null;
+					} ).promise();
+				},
+				then: function( onFulfilled, onRejected, onProgress ) {
+					var maxDepth = 0;
+					function resolve( depth, deferred, handler, special ) {
+						return function() {
+							var that = this,
+								args = arguments,
+								mightThrow = function() {
+									var returned, then;
+
+									// Support: Promises/A+ section 2.3.3.3.3
+									// https://promisesaplus.com/#point-59
+									// Ignore double-resolution attempts
+									if ( depth < maxDepth ) {
+										return;
+									}
+
+									returned = handler.apply( that, args );
+
+									// Support: Promises/A+ section 2.3.1
+									// https://promisesaplus.com/#point-48
+									if ( returned === deferred.promise() ) {
+										throw new TypeError( "Thenable self-resolution" );
+									}
+
+									// Support: Promises/A+ sections 2.3.3.1, 3.5
+									// https://promisesaplus.com/#point-54
+									// https://promisesaplus.com/#point-75
+									// Retrieve `then` only once
+									then = returned &&
+
+										// Support: Promises/A+ section 2.3.4
+										// https://promisesaplus.com/#point-64
+										// Only check objects and functions for thenability
+										( typeof returned === "object" ||
+											typeof returned === "function" ) &&
+										returned.then;
+
+									// Handle a returned thenable
+									if ( isFunction( then ) ) {
+
+										// Special processors (notify) just wait for resolution
+										if ( special ) {
+											then.call(
+												returned,
+												resolve( maxDepth, deferred, Identity, special ),
+												resolve( maxDepth, deferred, Thrower, special )
+											);
+
+										// Normal processors (resolve) also hook into progress
+										} else {
+
+											// ...and disregard older resolution values
+											maxDepth++;
+
+											then.call(
+												returned,
+												resolve( maxDepth, deferred, Identity, special ),
+												resolve( maxDepth, deferred, Thrower, special ),
+												resolve( maxDepth, deferred, Identity,
+													deferred.notifyWith )
+											);
+										}
+
+									// Handle all other returned values
+									} else {
+
+										// Only substitute handlers pass on context
+										// and multiple values (non-spec behavior)
+										if ( handler !== Identity ) {
+											that = undefined;
+											args = [ returned ];
+										}
+
+										// Process the value(s)
+										// Default process is resolve
+										( special || deferred.resolveWith )( that, args );
+									}
+								},
+
+								// Only normal processors (resolve) catch and reject exceptions
+								process = special ?
+									mightThrow :
+									function() {
+										try {
+											mightThrow();
+										} catch ( e ) {
+
+											if ( jQuery.Deferred.exceptionHook ) {
+												jQuery.Deferred.exceptionHook( e,
+													process.stackTrace );
+											}
+
+											// Support: Promises/A+ section 2.3.3.3.4.1
+											// https://promisesaplus.com/#point-61
+											// Ignore post-resolution exceptions
+											if ( depth + 1 >= maxDepth ) {
+
+												// Only substitute handlers pass on context
+												// and multiple values (non-spec behavior)
+												if ( handler !== Thrower ) {
+													that = undefined;
+													args = [ e ];
+												}
+
+												deferred.rejectWith( that, args );
+											}
+										}
+									};
+
+							// Support: Promises/A+ section 2.3.3.3.1
+							// https://promisesaplus.com/#point-57
+							// Re-resolve promises immediately to dodge false rejection from
+							// subsequent errors
+							if ( depth ) {
+								process();
+							} else {
+
+								// Call an optional hook to record the stack, in case of exception
+								// since it's otherwise lost when execution goes async
+								if ( jQuery.Deferred.getStackHook ) {
+									process.stackTrace = jQuery.Deferred.getStackHook();
+								}
+								window.setTimeout( process );
+							}
+						};
+					}
+
+					return jQuery.Deferred( function( newDefer ) {
+
+						// progress_handlers.add( ... )
+						tuples[ 0 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								isFunction( onProgress ) ?
+									onProgress :
+									Identity,
+								newDefer.notifyWith
+							)
+						);
+
+						// fulfilled_handlers.add( ... )
+						tuples[ 1 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								isFunction( onFulfilled ) ?
+									onFulfilled :
+									Identity
+							)
+						);
+
+						// rejected_handlers.add( ... )
+						tuples[ 2 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								isFunction( onRejected ) ?
+									onRejected :
+									Thrower
+							)
+						);
+					} ).promise();
+				},
+
+				// Get a promise for this deferred
+				// If obj is provided, the promise aspect is added to the object
+				promise: function( obj ) {
+					return obj != null ? jQuery.extend( obj, promise ) : promise;
+				}
+			},
+			deferred = {};
+
+		// Add list-specific methods
+		jQuery.each( tuples, function( i, tuple ) {
+			var list = tuple[ 2 ],
+				stateString = tuple[ 5 ];
+
+			// promise.progress = list.add
+			// promise.done = list.add
+			// promise.fail = list.add
+			promise[ tuple[ 1 ] ] = list.add;
+
+			// Handle state
+			if ( stateString ) {
+				list.add(
+					function() {
+
+						// state = "resolved" (i.e., fulfilled)
+						// state = "rejected"
+						state = stateString;
+					},
+
+					// rejected_callbacks.disable
+					// fulfilled_callbacks.disable
+					tuples[ 3 - i ][ 2 ].disable,
+
+					// rejected_handlers.disable
+					// fulfilled_handlers.disable
+					tuples[ 3 - i ][ 3 ].disable,
+
+					// progress_callbacks.lock
+					tuples[ 0 ][ 2 ].lock,
+
+					// progress_handlers.lock
+					tuples[ 0 ][ 3 ].lock
+				);
+			}
+
+			// progress_handlers.fire
+			// fulfilled_handlers.fire
+			// rejected_handlers.fire
+			list.add( tuple[ 3 ].fire );
+
+			// deferred.notify = function() { deferred.notifyWith(...) }
+			// deferred.resolve = function() { deferred.resolveWith(...) }
+			// deferred.reject = function() { deferred.rejectWith(...) }
+			deferred[ tuple[ 0 ] ] = function() {
+				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
+				return this;
+			};
+
+			// deferred.notifyWith = list.fireWith
+			// deferred.resolveWith = list.fireWith
+			// deferred.rejectWith = list.fireWith
+			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+		} );
+
+		// Make the deferred a promise
+		promise.promise( deferred );
+
+		// Call given func if any
+		if ( func ) {
+			func.call( deferred, deferred );
+		}
+
+		// All done!
+		return deferred;
+	},
+
+	// Deferred helper
+	when: function( singleValue ) {
+		var
+
+			// count of uncompleted subordinates
+			remaining = arguments.length,
+
+			// count of unprocessed arguments
+			i = remaining,
+
+			// subordinate fulfillment data
+			resolveContexts = Array( i ),
+			resolveValues = slice.call( arguments ),
+
+			// the master Deferred
+			master = jQuery.Deferred(),
+
+			// subordinate callback factory
+			updateFunc = function( i ) {
+				return function( value ) {
+					resolveContexts[ i ] = this;
+					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+					if ( !( --remaining ) ) {
+						master.resolveWith( resolveContexts, resolveValues );
+					}
+				};
+			};
+
+		// Single- and empty arguments are adopted like Promise.resolve
+		if ( remaining <= 1 ) {
+			adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
+				!remaining );
+
+			// Use .then() to unwrap secondary thenables (cf. gh-3000)
+			if ( master.state() === "pending" ||
+				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+
+				return master.then();
+			}
+		}
+
+		// Multiple arguments are aggregated like Promise.all array elements
+		while ( i-- ) {
+			adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+		}
+
+		return master.promise();
+	}
+} );
+
+
+// These usually indicate a programmer mistake during development,
+// warn about them ASAP rather than swallowing them by default.
+var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+
+jQuery.Deferred.exceptionHook = function( error, stack ) {
+
+	// Support: IE 8 - 9 only
+	// Console exists when dev tools are open, which can happen at any time
+	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
+		window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
+	}
+};
+
+
+
+
+jQuery.readyException = function( error ) {
+	window.setTimeout( function() {
+		throw error;
+	} );
+};
+
+
+
+
+// The deferred used on DOM ready
+var readyList = jQuery.Deferred();
+
+jQuery.fn.ready = function( fn ) {
+
+	readyList
+		.then( fn )
+
+		// Wrap jQuery.readyException in a function so that the lookup
+		// happens at the time of error handling instead of callback
+		// registration.
+		.catch( function( error ) {
+			jQuery.readyException( error );
+		} );
+
+	return this;
+};
+
+jQuery.extend( {
+
+	// Is the DOM ready to be used? Set to true once it occurs.
+	isReady: false,
+
+	// A counter to track how many items to wait for before
+	// the ready event fires. See #6781
+	readyWait: 1,
+
+	// Handle when the DOM is ready
+	ready: function( wait ) {
+
+		// Abort if there are pending holds or we're already ready
+		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+			return;
+		}
+
+		// Remember that the DOM is ready
+		jQuery.isReady = true;
+
+		// If a normal DOM Ready event fired, decrement, and wait if need be
+		if ( wait !== true && --jQuery.readyWait > 0 ) {
+			return;
+		}
+
+		// If there are functions bound, to execute
+		readyList.resolveWith( document, [ jQuery ] );
+	}
+} );
+
+jQuery.ready.then = readyList.then;
+
+// The ready event handler and self cleanup method
+function completed() {
+	document.removeEventListener( "DOMContentLoaded", completed );
+	window.removeEventListener( "load", completed );
+	jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE <=9 - 10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+	// Handle it asynchronously to allow scripts the opportunity to delay ready
+	window.setTimeout( jQuery.ready );
+
+} else {
+
+	// Use the handy event callback
+	document.addEventListener( "DOMContentLoaded", completed );
+
+	// A fallback to window.onload, that will always work
+	window.addEventListener( "load", completed );
+}
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+	var i = 0,
+		len = elems.length,
+		bulk = key == null;
+
+	// Sets many values
+	if ( toType( key ) === "object" ) {
+		chainable = true;
+		for ( i in key ) {
+			access( elems, fn, i, key[ i ], true, emptyGet, raw );
+		}
+
+	// Sets one value
+	} else if ( value !== undefined ) {
+		chainable = true;
+
+		if ( !isFunction( value ) ) {
+			raw = true;
+		}
+
+		if ( bulk ) {
+
+			// Bulk operations run against the entire set
+			if ( raw ) {
+				fn.call( elems, value );
+				fn = null;
+
+			// ...except when executing function values
+			} else {
+				bulk = fn;
+				fn = function( elem, _key, value ) {
+					return bulk.call( jQuery( elem ), value );
+				};
+			}
+		}
+
+		if ( fn ) {
+			for ( ; i < len; i++ ) {
+				fn(
+					elems[ i ], key, raw ?
+					value :
+					value.call( elems[ i ], i, fn( elems[ i ], key ) )
+				);
+			}
+		}
+	}
+
+	if ( chainable ) {
+		return elems;
+	}
+
+	// Gets
+	if ( bulk ) {
+		return fn.call( elems );
+	}
+
+	return len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+
+
+// Matches dashed string for camelizing
+var rmsPrefix = /^-ms-/,
+	rdashAlpha = /-([a-z])/g;
+
+// Used by camelCase as callback to replace()
+function fcamelCase( _all, letter ) {
+	return letter.toUpperCase();
+}
+
+// Convert dashed to camelCase; used by the css and data modules
+// Support: IE <=9 - 11, Edge 12 - 15
+// Microsoft forgot to hump their vendor prefix (#9572)
+function camelCase( string ) {
+	return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+}
+var acceptData = function( owner ) {
+
+	// Accepts only:
+	//  - Node
+	//    - Node.ELEMENT_NODE
+	//    - Node.DOCUMENT_NODE
+	//  - Object
+	//    - Any
+	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+
+
+function Data() {
+	this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+	cache: function( owner ) {
+
+		// Check if the owner object already has a cache
+		var value = owner[ this.expando ];
+
+		// If not, create one
+		if ( !value ) {
+			value = {};
+
+			// We can accept data for non-element nodes in modern browsers,
+			// but we should not, see #8335.
+			// Always return an empty object.
+			if ( acceptData( owner ) ) {
+
+				// If it is a node unlikely to be stringify-ed or looped over
+				// use plain assignment
+				if ( owner.nodeType ) {
+					owner[ this.expando ] = value;
+
+				// Otherwise secure it in a non-enumerable property
+				// configurable must be true to allow the property to be
+				// deleted when data is removed
+				} else {
+					Object.defineProperty( owner, this.expando, {
+						value: value,
+						configurable: true
+					} );
+				}
+			}
+		}
+
+		return value;
+	},
+	set: function( owner, data, value ) {
+		var prop,
+			cache = this.cache( owner );
+
+		// Handle: [ owner, key, value ] args
+		// Always use camelCase key (gh-2257)
+		if ( typeof data === "string" ) {
+			cache[ camelCase( data ) ] = value;
+
+		// Handle: [ owner, { properties } ] args
+		} else {
+
+			// Copy the properties one-by-one to the cache object
+			for ( prop in data ) {
+				cache[ camelCase( prop ) ] = data[ prop ];
+			}
+		}
+		return cache;
+	},
+	get: function( owner, key ) {
+		return key === undefined ?
+			this.cache( owner ) :
+
+			// Always use camelCase key (gh-2257)
+			owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
+	},
+	access: function( owner, key, value ) {
+
+		// In cases where either:
+		//
+		//   1. No key was specified
+		//   2. A string key was specified, but no value provided
+		//
+		// Take the "read" path and allow the get method to determine
+		// which value to return, respectively either:
+		//
+		//   1. The entire cache object
+		//   2. The data stored at the key
+		//
+		if ( key === undefined ||
+				( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+			return this.get( owner, key );
+		}
+
+		// When the key is not a string, or both a key and value
+		// are specified, set or extend (existing objects) with either:
+		//
+		//   1. An object of properties
+		//   2. A key and value
+		//
+		this.set( owner, key, value );
+
+		// Since the "set" path can have two possible entry points
+		// return the expected data based on which path was taken[*]
+		return value !== undefined ? value : key;
+	},
+	remove: function( owner, key ) {
+		var i,
+			cache = owner[ this.expando ];
+
+		if ( cache === undefined ) {
+			return;
+		}
+
+		if ( key !== undefined ) {
+
+			// Support array or space separated string of keys
+			if ( Array.isArray( key ) ) {
+
+				// If key is an array of keys...
+				// We always set camelCase keys, so remove that.
+				key = key.map( camelCase );
+			} else {
+				key = camelCase( key );
+
+				// If a key with the spaces exists, use it.
+				// Otherwise, create an array by matching non-whitespace
+				key = key in cache ?
+					[ key ] :
+					( key.match( rnothtmlwhite ) || [] );
+			}
+
+			i = key.length;
+
+			while ( i-- ) {
+				delete cache[ key[ i ] ];
+			}
+		}
+
+		// Remove the expando if there's no more data
+		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+			// Support: Chrome <=35 - 45
+			// Webkit & Blink performance suffers when deleting properties
+			// from DOM nodes, so set to undefined instead
+			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
+			if ( owner.nodeType ) {
+				owner[ this.expando ] = undefined;
+			} else {
+				delete owner[ this.expando ];
+			}
+		}
+	},
+	hasData: function( owner ) {
+		var cache = owner[ this.expando ];
+		return cache !== undefined && !jQuery.isEmptyObject( cache );
+	}
+};
+var dataPriv = new Data();
+
+var dataUser = new Data();
+
+
+
+//	Implementation Summary
+//
+//	1. Enforce API surface and semantic compatibility with 1.9.x branch
+//	2. Improve the module's maintainability by reducing the storage
+//		paths to a single mechanism.
+//	3. Use the same single mechanism to support "private" and "user" data.
+//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+//	5. Avoid exposing implementation details on user objects (eg. expando properties)
+//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+	rmultiDash = /[A-Z]/g;
+
+function getData( data ) {
+	if ( data === "true" ) {
+		return true;
+	}
+
+	if ( data === "false" ) {
+		return false;
+	}
+
+	if ( data === "null" ) {
+		return null;
+	}
+
+	// Only convert to a number if it doesn't change the string
+	if ( data === +data + "" ) {
+		return +data;
+	}
+
+	if ( rbrace.test( data ) ) {
+		return JSON.parse( data );
+	}
+
+	return data;
+}
+
+function dataAttr( elem, key, data ) {
+	var name;
+
+	// If nothing was found internally, try to fetch any
+	// data from the HTML5 data-* attribute
+	if ( data === undefined && elem.nodeType === 1 ) {
+		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+		data = elem.getAttribute( name );
+
+		if ( typeof data === "string" ) {
+			try {
+				data = getData( data );
+			} catch ( e ) {}
+
+			// Make sure we set the data so it isn't changed later
+			dataUser.set( elem, key, data );
+		} else {
+			data = undefined;
+		}
+	}
+	return data;
+}
+
+jQuery.extend( {
+	hasData: function( elem ) {
+		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+	},
+
+	data: function( elem, name, data ) {
+		return dataUser.access( elem, name, data );
+	},
+
+	removeData: function( elem, name ) {
+		dataUser.remove( elem, name );
+	},
+
+	// TODO: Now that all calls to _data and _removeData have been replaced
+	// with direct calls to dataPriv methods, these can be deprecated.
+	_data: function( elem, name, data ) {
+		return dataPriv.access( elem, name, data );
+	},
+
+	_removeData: function( elem, name ) {
+		dataPriv.remove( elem, name );
+	}
+} );
+
+jQuery.fn.extend( {
+	data: function( key, value ) {
+		var i, name, data,
+			elem = this[ 0 ],
+			attrs = elem && elem.attributes;
+
+		// Gets all values
+		if ( key === undefined ) {
+			if ( this.length ) {
+				data = dataUser.get( elem );
+
+				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+					i = attrs.length;
+					while ( i-- ) {
+
+						// Support: IE 11 only
+						// The attrs elements can be null (#14894)
+						if ( attrs[ i ] ) {
+							name = attrs[ i ].name;
+							if ( name.indexOf( "data-" ) === 0 ) {
+								name = camelCase( name.slice( 5 ) );
+								dataAttr( elem, name, data[ name ] );
+							}
+						}
+					}
+					dataPriv.set( elem, "hasDataAttrs", true );
+				}
+			}
+
+			return data;
+		}
+
+		// Sets multiple values
+		if ( typeof key === "object" ) {
+			return this.each( function() {
+				dataUser.set( this, key );
+			} );
+		}
+
+		return access( this, function( value ) {
+			var data;
+
+			// The calling jQuery object (element matches) is not empty
+			// (and therefore has an element appears at this[ 0 ]) and the
+			// `value` parameter was not undefined. An empty jQuery object
+			// will result in `undefined` for elem = this[ 0 ] which will
+			// throw an exception if an attempt to read a data cache is made.
+			if ( elem && value === undefined ) {
+
+				// Attempt to get data from the cache
+				// The key will always be camelCased in Data
+				data = dataUser.get( elem, key );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// Attempt to "discover" the data in
+				// HTML5 custom data-* attrs
+				data = dataAttr( elem, key );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// We tried really hard, but the data doesn't exist.
+				return;
+			}
+
+			// Set the data...
+			this.each( function() {
+
+				// We always store the camelCased key
+				dataUser.set( this, key, value );
+			} );
+		}, null, value, arguments.length > 1, null, true );
+	},
+
+	removeData: function( key ) {
+		return this.each( function() {
+			dataUser.remove( this, key );
+		} );
+	}
+} );
+
+
+jQuery.extend( {
+	queue: function( elem, type, data ) {
+		var queue;
+
+		if ( elem ) {
+			type = ( type || "fx" ) + "queue";
+			queue = dataPriv.get( elem, type );
+
+			// Speed up dequeue by getting out quickly if this is just a lookup
+			if ( data ) {
+				if ( !queue || Array.isArray( data ) ) {
+					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+				} else {
+					queue.push( data );
+				}
+			}
+			return queue || [];
+		}
+	},
+
+	dequeue: function( elem, type ) {
+		type = type || "fx";
+
+		var queue = jQuery.queue( elem, type ),
+			startLength = queue.length,
+			fn = queue.shift(),
+			hooks = jQuery._queueHooks( elem, type ),
+			next = function() {
+				jQuery.dequeue( elem, type );
+			};
+
+		// If the fx queue is dequeued, always remove the progress sentinel
+		if ( fn === "inprogress" ) {
+			fn = queue.shift();
+			startLength--;
+		}
+
+		if ( fn ) {
+
+			// Add a progress sentinel to prevent the fx queue from being
+			// automatically dequeued
+			if ( type === "fx" ) {
+				queue.unshift( "inprogress" );
+			}
+
+			// Clear up the last queue stop function
+			delete hooks.stop;
+			fn.call( elem, next, hooks );
+		}
+
+		if ( !startLength && hooks ) {
+			hooks.empty.fire();
+		}
+	},
+
+	// Not public - generate a queueHooks object, or return the current one
+	_queueHooks: function( elem, type ) {
+		var key = type + "queueHooks";
+		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+			empty: jQuery.Callbacks( "once memory" ).add( function() {
+				dataPriv.remove( elem, [ type + "queue", key ] );
+			} )
+		} );
+	}
+} );
+
+jQuery.fn.extend( {
+	queue: function( type, data ) {
+		var setter = 2;
+
+		if ( typeof type !== "string" ) {
+			data = type;
+			type = "fx";
+			setter--;
+		}
+
+		if ( arguments.length < setter ) {
+			return jQuery.queue( this[ 0 ], type );
+		}
+
+		return data === undefined ?
+			this :
+			this.each( function() {
+				var queue = jQuery.queue( this, type, data );
+
+				// Ensure a hooks for this queue
+				jQuery._queueHooks( this, type );
+
+				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+					jQuery.dequeue( this, type );
+				}
+			} );
+	},
+	dequeue: function( type ) {
+		return this.each( function() {
+			jQuery.dequeue( this, type );
+		} );
+	},
+	clearQueue: function( type ) {
+		return this.queue( type || "fx", [] );
+	},
+
+	// Get a promise resolved when queues of a certain type
+	// are emptied (fx is the type by default)
+	promise: function( type, obj ) {
+		var tmp,
+			count = 1,
+			defer = jQuery.Deferred(),
+			elements = this,
+			i = this.length,
+			resolve = function() {
+				if ( !( --count ) ) {
+					defer.resolveWith( elements, [ elements ] );
+				}
+			};
+
+		if ( typeof type !== "string" ) {
+			obj = type;
+			type = undefined;
+		}
+		type = type || "fx";
+
+		while ( i-- ) {
+			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+			if ( tmp && tmp.empty ) {
+				count++;
+				tmp.empty.add( resolve );
+			}
+		}
+		resolve();
+		return defer.promise( obj );
+	}
+} );
+var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+
+var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var documentElement = document.documentElement;
+
+
+
+	var isAttached = function( elem ) {
+			return jQuery.contains( elem.ownerDocument, elem );
+		},
+		composed = { composed: true };
+
+	// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
+	// Check attachment across shadow DOM boundaries when possible (gh-3504)
+	// Support: iOS 10.0-10.2 only
+	// Early iOS 10 versions support `attachShadow` but not `getRootNode`,
+	// leading to errors. We need to check for `getRootNode`.
+	if ( documentElement.getRootNode ) {
+		isAttached = function( elem ) {
+			return jQuery.contains( elem.ownerDocument, elem ) ||
+				elem.getRootNode( composed ) === elem.ownerDocument;
+		};
+	}
+var isHiddenWithinTree = function( elem, el ) {
+
+		// isHiddenWithinTree might be called from jQuery#filter function;
+		// in that case, element will be second argument
+		elem = el || elem;
+
+		// Inline style trumps all
+		return elem.style.display === "none" ||
+			elem.style.display === "" &&
+
+			// Otherwise, check computed style
+			// Support: Firefox <=43 - 45
+			// Disconnected elements can have computed display: none, so first confirm that elem is
+			// in the document.
+			isAttached( elem ) &&
+
+			jQuery.css( elem, "display" ) === "none";
+	};
+
+
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+	var adjusted, scale,
+		maxIterations = 20,
+		currentValue = tween ?
+			function() {
+				return tween.cur();
+			} :
+			function() {
+				return jQuery.css( elem, prop, "" );
+			},
+		initial = currentValue(),
+		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+		// Starting value computation is required for potential unit mismatches
+		initialInUnit = elem.nodeType &&
+			( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+			rcssNum.exec( jQuery.css( elem, prop ) );
+
+	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+		// Support: Firefox <=54
+		// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
+		initial = initial / 2;
+
+		// Trust units reported by jQuery.css
+		unit = unit || initialInUnit[ 3 ];
+
+		// Iteratively approximate from a nonzero starting point
+		initialInUnit = +initial || 1;
+
+		while ( maxIterations-- ) {
+
+			// Evaluate and update our best guess (doubling guesses that zero out).
+			// Finish if the scale equals or crosses 1 (making the old*new product non-positive).
+			jQuery.style( elem, prop, initialInUnit + unit );
+			if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
+				maxIterations = 0;
+			}
+			initialInUnit = initialInUnit / scale;
+
+		}
+
+		initialInUnit = initialInUnit * 2;
+		jQuery.style( elem, prop, initialInUnit + unit );
+
+		// Make sure we update the tween properties later on
+		valueParts = valueParts || [];
+	}
+
+	if ( valueParts ) {
+		initialInUnit = +initialInUnit || +initial || 0;
+
+		// Apply relative offset (+=/-=) if specified
+		adjusted = valueParts[ 1 ] ?
+			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+			+valueParts[ 2 ];
+		if ( tween ) {
+			tween.unit = unit;
+			tween.start = initialInUnit;
+			tween.end = adjusted;
+		}
+	}
+	return adjusted;
+}
+
+
+var defaultDisplayMap = {};
+
+function getDefaultDisplay( elem ) {
+	var temp,
+		doc = elem.ownerDocument,
+		nodeName = elem.nodeName,
+		display = defaultDisplayMap[ nodeName ];
+
+	if ( display ) {
+		return display;
+	}
+
+	temp = doc.body.appendChild( doc.createElement( nodeName ) );
+	display = jQuery.css( temp, "display" );
+
+	temp.parentNode.removeChild( temp );
+
+	if ( display === "none" ) {
+		display = "block";
+	}
+	defaultDisplayMap[ nodeName ] = display;
+
+	return display;
+}
+
+function showHide( elements, show ) {
+	var display, elem,
+		values = [],
+		index = 0,
+		length = elements.length;
+
+	// Determine new display value for elements that need to change
+	for ( ; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+
+		display = elem.style.display;
+		if ( show ) {
+
+			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
+			// check is required in this first loop unless we have a nonempty display value (either
+			// inline or about-to-be-restored)
+			if ( display === "none" ) {
+				values[ index ] = dataPriv.get( elem, "display" ) || null;
+				if ( !values[ index ] ) {
+					elem.style.display = "";
+				}
+			}
+			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
+				values[ index ] = getDefaultDisplay( elem );
+			}
+		} else {
+			if ( display !== "none" ) {
+				values[ index ] = "none";
+
+				// Remember what we're overwriting
+				dataPriv.set( elem, "display", display );
+			}
+		}
+	}
+
+	// Set the display of the elements in a second loop to avoid constant reflow
+	for ( index = 0; index < length; index++ ) {
+		if ( values[ index ] != null ) {
+			elements[ index ].style.display = values[ index ];
+		}
+	}
+
+	return elements;
+}
+
+jQuery.fn.extend( {
+	show: function() {
+		return showHide( this, true );
+	},
+	hide: function() {
+		return showHide( this );
+	},
+	toggle: function( state ) {
+		if ( typeof state === "boolean" ) {
+			return state ? this.show() : this.hide();
+		}
+
+		return this.each( function() {
+			if ( isHiddenWithinTree( this ) ) {
+				jQuery( this ).show();
+			} else {
+				jQuery( this ).hide();
+			}
+		} );
+	}
+} );
+var rcheckableType = ( /^(?:checkbox|radio)$/i );
+
+var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
+
+var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
+
+
+
+( function() {
+	var fragment = document.createDocumentFragment(),
+		div = fragment.appendChild( document.createElement( "div" ) ),
+		input = document.createElement( "input" );
+
+	// Support: Android 4.0 - 4.3 only
+	// Check state lost if the name is set (#11217)
+	// Support: Windows Web Apps (WWA)
+	// `name` and `type` must use .setAttribute for WWA (#14901)
+	input.setAttribute( "type", "radio" );
+	input.setAttribute( "checked", "checked" );
+	input.setAttribute( "name", "t" );
+
+	div.appendChild( input );
+
+	// Support: Android <=4.1 only
+	// Older WebKit doesn't clone checked state correctly in fragments
+	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+	// Support: IE <=11 only
+	// Make sure textarea (and checkbox) defaultValue is properly cloned
+	div.innerHTML = "<textarea>x</textarea>";
+	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+
+	// Support: IE <=9 only
+	// IE <=9 replaces <option> tags with their contents when inserted outside of
+	// the select element.
+	div.innerHTML = "<option></option>";
+	support.option = !!div.lastChild;
+} )();
+
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+	// XHTML parsers do not magically insert elements in the
+	// same way that tag soup parsers do. So we cannot shorten
+	// this by omitting <tbody> or other required elements.
+	thead: [ 1, "<table>", "</table>" ],
+	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+	_default: [ 0, "", "" ]
+};
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// Support: IE <=9 only
+if ( !support.option ) {
+	wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ];
+}
+
+
+function getAll( context, tag ) {
+
+	// Support: IE <=9 - 11 only
+	// Use typeof to avoid zero-argument method invocation on host objects (#15151)
+	var ret;
+
+	if ( typeof context.getElementsByTagName !== "undefined" ) {
+		ret = context.getElementsByTagName( tag || "*" );
+
+	} else if ( typeof context.querySelectorAll !== "undefined" ) {
+		ret = context.querySelectorAll( tag || "*" );
+
+	} else {
+		ret = [];
+	}
+
+	if ( tag === undefined || tag && nodeName( context, tag ) ) {
+		return jQuery.merge( [ context ], ret );
+	}
+
+	return ret;
+}
+
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+	var i = 0,
+		l = elems.length;
+
+	for ( ; i < l; i++ ) {
+		dataPriv.set(
+			elems[ i ],
+			"globalEval",
+			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
+		);
+	}
+}
+
+
+var rhtml = /<|&#?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+	var elem, tmp, tag, wrap, attached, j,
+		fragment = context.createDocumentFragment(),
+		nodes = [],
+		i = 0,
+		l = elems.length;
+
+	for ( ; i < l; i++ ) {
+		elem = elems[ i ];
+
+		if ( elem || elem === 0 ) {
+
+			// Add nodes directly
+			if ( toType( elem ) === "object" ) {
+
+				// Support: Android <=4.0 only, PhantomJS 1 only
+				// push.apply(_, arraylike) throws on ancient WebKit
+				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+			// Convert non-html into a text node
+			} else if ( !rhtml.test( elem ) ) {
+				nodes.push( context.createTextNode( elem ) );
+
+			// Convert html into DOM nodes
+			} else {
+				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+				// Deserialize a standard representation
+				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+				wrap = wrapMap[ tag ] || wrapMap._default;
+				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+				// Descend through wrappers to the right content
+				j = wrap[ 0 ];
+				while ( j-- ) {
+					tmp = tmp.lastChild;
+				}
+
+				// Support: Android <=4.0 only, PhantomJS 1 only
+				// push.apply(_, arraylike) throws on ancient WebKit
+				jQuery.merge( nodes, tmp.childNodes );
+
+				// Remember the top-level container
+				tmp = fragment.firstChild;
+
+				// Ensure the created nodes are orphaned (#12392)
+				tmp.textContent = "";
+			}
+		}
+	}
+
+	// Remove wrapper from fragment
+	fragment.textContent = "";
+
+	i = 0;
+	while ( ( elem = nodes[ i++ ] ) ) {
+
+		// Skip elements already in the context collection (trac-4087)
+		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+			if ( ignored ) {
+				ignored.push( elem );
+			}
+			continue;
+		}
+
+		attached = isAttached( elem );
+
+		// Append to fragment
+		tmp = getAll( fragment.appendChild( elem ), "script" );
+
+		// Preserve script evaluation history
+		if ( attached ) {
+			setGlobalEval( tmp );
+		}
+
+		// Capture executables
+		if ( scripts ) {
+			j = 0;
+			while ( ( elem = tmp[ j++ ] ) ) {
+				if ( rscriptType.test( elem.type || "" ) ) {
+					scripts.push( elem );
+				}
+			}
+		}
+	}
+
+	return fragment;
+}
+
+
+var
+	rkeyEvent = /^key/,
+	rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+	rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+	return true;
+}
+
+function returnFalse() {
+	return false;
+}
+
+// Support: IE <=9 - 11+
+// focus() and blur() are asynchronous, except when they are no-op.
+// So expect focus to be synchronous when the element is already active,
+// and blur to be synchronous when the element is not already active.
+// (focus and blur are always synchronous in other supported browsers,
+// this just defines when we can count on it).
+function expectSync( elem, type ) {
+	return ( elem === safeActiveElement() ) === ( type === "focus" );
+}
+
+// Support: IE <=9 only
+// Accessing document.activeElement can throw unexpectedly
+// https://bugs.jquery.com/ticket/13393
+function safeActiveElement() {
+	try {
+		return document.activeElement;
+	} catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+	var origFn, type;
+
+	// Types can be a map of types/handlers
+	if ( typeof types === "object" ) {
+
+		// ( types-Object, selector, data )
+		if ( typeof selector !== "string" ) {
+
+			// ( types-Object, data )
+			data = data || selector;
+			selector = undefined;
+		}
+		for ( type in types ) {
+			on( elem, type, selector, data, types[ type ], one );
+		}
+		return elem;
+	}
+
+	if ( data == null && fn == null ) {
+
+		// ( types, fn )
+		fn = selector;
+		data = selector = undefined;
+	} else if ( fn == null ) {
+		if ( typeof selector === "string" ) {
+
+			// ( types, selector, fn )
+			fn = data;
+			data = undefined;
+		} else {
+
+			// ( types, data, fn )
+			fn = data;
+			data = selector;
+			selector = undefined;
+		}
+	}
+	if ( fn === false ) {
+		fn = returnFalse;
+	} else if ( !fn ) {
+		return elem;
+	}
+
+	if ( one === 1 ) {
+		origFn = fn;
+		fn = function( event ) {
+
+			// Can use an empty set, since event contains the info
+			jQuery().off( event );
+			return origFn.apply( this, arguments );
+		};
+
+		// Use same guid so caller can remove using origFn
+		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+	}
+	return elem.each( function() {
+		jQuery.event.add( this, types, fn, data, selector );
+	} );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+	global: {},
+
+	add: function( elem, types, handler, data, selector ) {
+
+		var handleObjIn, eventHandle, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = dataPriv.get( elem );
+
+		// Only attach events to objects that accept data
+		if ( !acceptData( elem ) ) {
+			return;
+		}
+
+		// Caller can pass in an object of custom data in lieu of the handler
+		if ( handler.handler ) {
+			handleObjIn = handler;
+			handler = handleObjIn.handler;
+			selector = handleObjIn.selector;
+		}
+
+		// Ensure that invalid selectors throw exceptions at attach time
+		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
+		if ( selector ) {
+			jQuery.find.matchesSelector( documentElement, selector );
+		}
+
+		// Make sure that the handler has a unique ID, used to find/remove it later
+		if ( !handler.guid ) {
+			handler.guid = jQuery.guid++;
+		}
+
+		// Init the element's event structure and main handler, if this is the first
+		if ( !( events = elemData.events ) ) {
+			events = elemData.events = Object.create( null );
+		}
+		if ( !( eventHandle = elemData.handle ) ) {
+			eventHandle = elemData.handle = function( e ) {
+
+				// Discard the second event of a jQuery.event.trigger() and
+				// when an event is called after a page has unloaded
+				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+			};
+		}
+
+		// Handle multiple events separated by a space
+		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[ t ] ) || [];
+			type = origType = tmp[ 1 ];
+			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+			// There *must* be a type, no attaching namespace-only handlers
+			if ( !type ) {
+				continue;
+			}
+
+			// If event changes its type, use the special event handlers for the changed type
+			special = jQuery.event.special[ type ] || {};
+
+			// If selector defined, determine special event api type, otherwise given type
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+
+			// Update special based on newly reset type
+			special = jQuery.event.special[ type ] || {};
+
+			// handleObj is passed to all event handlers
+			handleObj = jQuery.extend( {
+				type: type,
+				origType: origType,
+				data: data,
+				handler: handler,
+				guid: handler.guid,
+				selector: selector,
+				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+				namespace: namespaces.join( "." )
+			}, handleObjIn );
+
+			// Init the event handler queue if we're the first
+			if ( !( handlers = events[ type ] ) ) {
+				handlers = events[ type ] = [];
+				handlers.delegateCount = 0;
+
+				// Only use addEventListener if the special events handler returns false
+				if ( !special.setup ||
+					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+					if ( elem.addEventListener ) {
+						elem.addEventListener( type, eventHandle );
+					}
+				}
+			}
+
+			if ( special.add ) {
+				special.add.call( elem, handleObj );
+
+				if ( !handleObj.handler.guid ) {
+					handleObj.handler.guid = handler.guid;
+				}
+			}
+
+			// Add to the element's handler list, delegates in front
+			if ( selector ) {
+				handlers.splice( handlers.delegateCount++, 0, handleObj );
+			} else {
+				handlers.push( handleObj );
+			}
+
+			// Keep track of which events have ever been used, for event optimization
+			jQuery.event.global[ type ] = true;
+		}
+
+	},
+
+	// Detach an event or set of events from an element
+	remove: function( elem, types, handler, selector, mappedTypes ) {
+
+		var j, origCount, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+		if ( !elemData || !( events = elemData.events ) ) {
+			return;
+		}
+
+		// Once for each type.namespace in types; type may be omitted
+		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[ t ] ) || [];
+			type = origType = tmp[ 1 ];
+			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+			// Unbind all events (on this namespace, if provided) for the element
+			if ( !type ) {
+				for ( type in events ) {
+					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+				}
+				continue;
+			}
+
+			special = jQuery.event.special[ type ] || {};
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+			handlers = events[ type ] || [];
+			tmp = tmp[ 2 ] &&
+				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+			// Remove matching events
+			origCount = j = handlers.length;
+			while ( j-- ) {
+				handleObj = handlers[ j ];
+
+				if ( ( mappedTypes || origType === handleObj.origType ) &&
+					( !handler || handler.guid === handleObj.guid ) &&
+					( !tmp || tmp.test( handleObj.namespace ) ) &&
+					( !selector || selector === handleObj.selector ||
+						selector === "**" && handleObj.selector ) ) {
+					handlers.splice( j, 1 );
+
+					if ( handleObj.selector ) {
+						handlers.delegateCount--;
+					}
+					if ( special.remove ) {
+						special.remove.call( elem, handleObj );
+					}
+				}
+			}
+
+			// Remove generic event handler if we removed something and no more handlers exist
+			// (avoids potential for endless recursion during removal of special event handlers)
+			if ( origCount && !handlers.length ) {
+				if ( !special.teardown ||
+					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+					jQuery.removeEvent( elem, type, elemData.handle );
+				}
+
+				delete events[ type ];
+			}
+		}
+
+		// Remove data and the expando if it's no longer used
+		if ( jQuery.isEmptyObject( events ) ) {
+			dataPriv.remove( elem, "handle events" );
+		}
+	},
+
+	dispatch: function( nativeEvent ) {
+
+		var i, j, ret, matched, handleObj, handlerQueue,
+			args = new Array( arguments.length ),
+
+			// Make a writable jQuery.Event from the native event object
+			event = jQuery.event.fix( nativeEvent ),
+
+			handlers = (
+					dataPriv.get( this, "events" ) || Object.create( null )
+				)[ event.type ] || [],
+			special = jQuery.event.special[ event.type ] || {};
+
+		// Use the fix-ed jQuery.Event rather than the (read-only) native event
+		args[ 0 ] = event;
+
+		for ( i = 1; i < arguments.length; i++ ) {
+			args[ i ] = arguments[ i ];
+		}
+
+		event.delegateTarget = this;
+
+		// Call the preDispatch hook for the mapped type, and let it bail if desired
+		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+			return;
+		}
+
+		// Determine handlers
+		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+		// Run delegates first; they may want to stop propagation beneath us
+		i = 0;
+		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+			event.currentTarget = matched.elem;
+
+			j = 0;
+			while ( ( handleObj = matched.handlers[ j++ ] ) &&
+				!event.isImmediatePropagationStopped() ) {
+
+				// If the event is namespaced, then each handler is only invoked if it is
+				// specially universal or its namespaces are a superset of the event's.
+				if ( !event.rnamespace || handleObj.namespace === false ||
+					event.rnamespace.test( handleObj.namespace ) ) {
+
+					event.handleObj = handleObj;
+					event.data = handleObj.data;
+
+					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+						handleObj.handler ).apply( matched.elem, args );
+
+					if ( ret !== undefined ) {
+						if ( ( event.result = ret ) === false ) {
+							event.preventDefault();
+							event.stopPropagation();
+						}
+					}
+				}
+			}
+		}
+
+		// Call the postDispatch hook for the mapped type
+		if ( special.postDispatch ) {
+			special.postDispatch.call( this, event );
+		}
+
+		return event.result;
+	},
+
+	handlers: function( event, handlers ) {
+		var i, handleObj, sel, matchedHandlers, matchedSelectors,
+			handlerQueue = [],
+			delegateCount = handlers.delegateCount,
+			cur = event.target;
+
+		// Find delegate handlers
+		if ( delegateCount &&
+
+			// Support: IE <=9
+			// Black-hole SVG <use> instance trees (trac-13180)
+			cur.nodeType &&
+
+			// Support: Firefox <=42
+			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
+			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
+			// Support: IE 11 only
+			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
+			!( event.type === "click" && event.button >= 1 ) ) {
+
+			for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+				// Don't check non-elements (#13208)
+				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
+					matchedHandlers = [];
+					matchedSelectors = {};
+					for ( i = 0; i < delegateCount; i++ ) {
+						handleObj = handlers[ i ];
+
+						// Don't conflict with Object.prototype properties (#13203)
+						sel = handleObj.selector + " ";
+
+						if ( matchedSelectors[ sel ] === undefined ) {
+							matchedSelectors[ sel ] = handleObj.needsContext ?
+								jQuery( sel, this ).index( cur ) > -1 :
+								jQuery.find( sel, this, null, [ cur ] ).length;
+						}
+						if ( matchedSelectors[ sel ] ) {
+							matchedHandlers.push( handleObj );
+						}
+					}
+					if ( matchedHandlers.length ) {
+						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
+					}
+				}
+			}
+		}
+
+		// Add the remaining (directly-bound) handlers
+		cur = this;
+		if ( delegateCount < handlers.length ) {
+			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
+		}
+
+		return handlerQueue;
+	},
+
+	addProp: function( name, hook ) {
+		Object.defineProperty( jQuery.Event.prototype, name, {
+			enumerable: true,
+			configurable: true,
+
+			get: isFunction( hook ) ?
+				function() {
+					if ( this.originalEvent ) {
+							return hook( this.originalEvent );
+					}
+				} :
+				function() {
+					if ( this.originalEvent ) {
+							return this.originalEvent[ name ];
+					}
+				},
+
+			set: function( value ) {
+				Object.defineProperty( this, name, {
+					enumerable: true,
+					configurable: true,
+					writable: true,
+					value: value
+				} );
+			}
+		} );
+	},
+
+	fix: function( originalEvent ) {
+		return originalEvent[ jQuery.expando ] ?
+			originalEvent :
+			new jQuery.Event( originalEvent );
+	},
+
+	special: {
+		load: {
+
+			// Prevent triggered image.load events from bubbling to window.load
+			noBubble: true
+		},
+		click: {
+
+			// Utilize native event to ensure correct state for checkable inputs
+			setup: function( data ) {
+
+				// For mutual compressibility with _default, replace `this` access with a local var.
+				// `|| data` is dead code meant only to preserve the variable through minification.
+				var el = this || data;
+
+				// Claim the first handler
+				if ( rcheckableType.test( el.type ) &&
+					el.click && nodeName( el, "input" ) ) {
+
+					// dataPriv.set( el, "click", ... )
+					leverageNative( el, "click", returnTrue );
+				}
+
+				// Return false to allow normal processing in the caller
+				return false;
+			},
+			trigger: function( data ) {
+
+				// For mutual compressibility with _default, replace `this` access with a local var.
+				// `|| data` is dead code meant only to preserve the variable through minification.
+				var el = this || data;
+
+				// Force setup before triggering a click
+				if ( rcheckableType.test( el.type ) &&
+					el.click && nodeName( el, "input" ) ) {
+
+					leverageNative( el, "click" );
+				}
+
+				// Return non-false to allow normal event-path propagation
+				return true;
+			},
+
+			// For cross-browser consistency, suppress native .click() on links
+			// Also prevent it if we're currently inside a leveraged native-event stack
+			_default: function( event ) {
+				var target = event.target;
+				return rcheckableType.test( target.type ) &&
+					target.click && nodeName( target, "input" ) &&
+					dataPriv.get( target, "click" ) ||
+					nodeName( target, "a" );
+			}
+		},
+
+		beforeunload: {
+			postDispatch: function( event ) {
+
+				// Support: Firefox 20+
+				// Firefox doesn't alert if the returnValue field is not set.
+				if ( event.result !== undefined && event.originalEvent ) {
+					event.originalEvent.returnValue = event.result;
+				}
+			}
+		}
+	}
+};
+
+// Ensure the presence of an event listener that handles manually-triggered
+// synthetic events by interrupting progress until reinvoked in response to
+// *native* events that it fires directly, ensuring that state changes have
+// already occurred before other listeners are invoked.
+function leverageNative( el, type, expectSync ) {
+
+	// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
+	if ( !expectSync ) {
+		if ( dataPriv.get( el, type ) === undefined ) {
+			jQuery.event.add( el, type, returnTrue );
+		}
+		return;
+	}
+
+	// Register the controller as a special universal handler for all event namespaces
+	dataPriv.set( el, type, false );
+	jQuery.event.add( el, type, {
+		namespace: false,
+		handler: function( event ) {
+			var notAsync, result,
+				saved = dataPriv.get( this, type );
+
+			if ( ( event.isTrigger & 1 ) && this[ type ] ) {
+
+				// Interrupt processing of the outer synthetic .trigger()ed event
+				// Saved data should be false in such cases, but might be a leftover capture object
+				// from an async native handler (gh-4350)
+				if ( !saved.length ) {
+
+					// Store arguments for use when handling the inner native event
+					// There will always be at least one argument (an event object), so this array
+					// will not be confused with a leftover capture object.
+					saved = slice.call( arguments );
+					dataPriv.set( this, type, saved );
+
+					// Trigger the native event and capture its result
+					// Support: IE <=9 - 11+
+					// focus() and blur() are asynchronous
+					notAsync = expectSync( this, type );
+					this[ type ]();
+					result = dataPriv.get( this, type );
+					if ( saved !== result || notAsync ) {
+						dataPriv.set( this, type, false );
+					} else {
+						result = {};
+					}
+					if ( saved !== result ) {
+
+						// Cancel the outer synthetic event
+						event.stopImmediatePropagation();
+						event.preventDefault();
+						return result.value;
+					}
+
+				// If this is an inner synthetic event for an event with a bubbling surrogate
+				// (focus or blur), assume that the surrogate already propagated from triggering the
+				// native event and prevent that from happening again here.
+				// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
+				// bubbling surrogate propagates *after* the non-bubbling base), but that seems
+				// less bad than duplication.
+				} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
+					event.stopPropagation();
+				}
+
+			// If this is a native event triggered above, everything is now in order
+			// Fire an inner synthetic event with the original arguments
+			} else if ( saved.length ) {
+
+				// ...and capture the result
+				dataPriv.set( this, type, {
+					value: jQuery.event.trigger(
+
+						// Support: IE <=9 - 11+
+						// Extend with the prototype to reset the above stopImmediatePropagation()
+						jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
+						saved.slice( 1 ),
+						this
+					)
+				} );
+
+				// Abort handling of the native event
+				event.stopImmediatePropagation();
+			}
+		}
+	} );
+}
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+	// This "if" is needed for plain objects
+	if ( elem.removeEventListener ) {
+		elem.removeEventListener( type, handle );
+	}
+};
+
+jQuery.Event = function( src, props ) {
+
+	// Allow instantiation without the 'new' keyword
+	if ( !( this instanceof jQuery.Event ) ) {
+		return new jQuery.Event( src, props );
+	}
+
+	// Event object
+	if ( src && src.type ) {
+		this.originalEvent = src;
+		this.type = src.type;
+
+		// Events bubbling up the document may have been marked as prevented
+		// by a handler lower down the tree; reflect the correct value.
+		this.isDefaultPrevented = src.defaultPrevented ||
+				src.defaultPrevented === undefined &&
+
+				// Support: Android <=2.3 only
+				src.returnValue === false ?
+			returnTrue :
+			returnFalse;
+
+		// Create target properties
+		// Support: Safari <=6 - 7 only
+		// Target should not be a text node (#504, #13143)
+		this.target = ( src.target && src.target.nodeType === 3 ) ?
+			src.target.parentNode :
+			src.target;
+
+		this.currentTarget = src.currentTarget;
+		this.relatedTarget = src.relatedTarget;
+
+	// Event type
+	} else {
+		this.type = src;
+	}
+
+	// Put explicitly provided properties onto the event object
+	if ( props ) {
+		jQuery.extend( this, props );
+	}
+
+	// Create a timestamp if incoming event doesn't have one
+	this.timeStamp = src && src.timeStamp || Date.now();
+
+	// Mark it as fixed
+	this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+	constructor: jQuery.Event,
+	isDefaultPrevented: returnFalse,
+	isPropagationStopped: returnFalse,
+	isImmediatePropagationStopped: returnFalse,
+	isSimulated: false,
+
+	preventDefault: function() {
+		var e = this.originalEvent;
+
+		this.isDefaultPrevented = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.preventDefault();
+		}
+	},
+	stopPropagation: function() {
+		var e = this.originalEvent;
+
+		this.isPropagationStopped = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.stopPropagation();
+		}
+	},
+	stopImmediatePropagation: function() {
+		var e = this.originalEvent;
+
+		this.isImmediatePropagationStopped = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.stopImmediatePropagation();
+		}
+
+		this.stopPropagation();
+	}
+};
+
+// Includes all common event props including KeyEvent and MouseEvent specific props
+jQuery.each( {
+	altKey: true,
+	bubbles: true,
+	cancelable: true,
+	changedTouches: true,
+	ctrlKey: true,
+	detail: true,
+	eventPhase: true,
+	metaKey: true,
+	pageX: true,
+	pageY: true,
+	shiftKey: true,
+	view: true,
+	"char": true,
+	code: true,
+	charCode: true,
+	key: true,
+	keyCode: true,
+	button: true,
+	buttons: true,
+	clientX: true,
+	clientY: true,
+	offsetX: true,
+	offsetY: true,
+	pointerId: true,
+	pointerType: true,
+	screenX: true,
+	screenY: true,
+	targetTouches: true,
+	toElement: true,
+	touches: true,
+
+	which: function( event ) {
+		var button = event.button;
+
+		// Add which for key events
+		if ( event.which == null && rkeyEvent.test( event.type ) ) {
+			return event.charCode != null ? event.charCode : event.keyCode;
+		}
+
+		// Add which for click: 1 === left; 2 === middle; 3 === right
+		if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
+			if ( button & 1 ) {
+				return 1;
+			}
+
+			if ( button & 2 ) {
+				return 3;
+			}
+
+			if ( button & 4 ) {
+				return 2;
+			}
+
+			return 0;
+		}
+
+		return event.which;
+	}
+}, jQuery.event.addProp );
+
+jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
+	jQuery.event.special[ type ] = {
+
+		// Utilize native event if possible so blur/focus sequence is correct
+		setup: function() {
+
+			// Claim the first handler
+			// dataPriv.set( this, "focus", ... )
+			// dataPriv.set( this, "blur", ... )
+			leverageNative( this, type, expectSync );
+
+			// Return false to allow normal processing in the caller
+			return false;
+		},
+		trigger: function() {
+
+			// Force setup before trigger
+			leverageNative( this, type );
+
+			// Return non-false to allow normal event-path propagation
+			return true;
+		},
+
+		delegateType: delegateType
+	};
+} );
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+	mouseenter: "mouseover",
+	mouseleave: "mouseout",
+	pointerenter: "pointerover",
+	pointerleave: "pointerout"
+}, function( orig, fix ) {
+	jQuery.event.special[ orig ] = {
+		delegateType: fix,
+		bindType: fix,
+
+		handle: function( event ) {
+			var ret,
+				target = this,
+				related = event.relatedTarget,
+				handleObj = event.handleObj;
+
+			// For mouseenter/leave call the handler if related is outside the target.
+			// NB: No relatedTarget if the mouse left/entered the browser window
+			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+				event.type = handleObj.origType;
+				ret = handleObj.handler.apply( this, arguments );
+				event.type = fix;
+			}
+			return ret;
+		}
+	};
+} );
+
+jQuery.fn.extend( {
+
+	on: function( types, selector, data, fn ) {
+		return on( this, types, selector, data, fn );
+	},
+	one: function( types, selector, data, fn ) {
+		return on( this, types, selector, data, fn, 1 );
+	},
+	off: function( types, selector, fn ) {
+		var handleObj, type;
+		if ( types && types.preventDefault && types.handleObj ) {
+
+			// ( event )  dispatched jQuery.Event
+			handleObj = types.handleObj;
+			jQuery( types.delegateTarget ).off(
+				handleObj.namespace ?
+					handleObj.origType + "." + handleObj.namespace :
+					handleObj.origType,
+				handleObj.selector,
+				handleObj.handler
+			);
+			return this;
+		}
+		if ( typeof types === "object" ) {
+
+			// ( types-object [, selector] )
+			for ( type in types ) {
+				this.off( type, selector, types[ type ] );
+			}
+			return this;
+		}
+		if ( selector === false || typeof selector === "function" ) {
+
+			// ( types [, fn] )
+			fn = selector;
+			selector = undefined;
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		}
+		return this.each( function() {
+			jQuery.event.remove( this, types, fn, selector );
+		} );
+	}
+} );
+
+
+var
+
+	// Support: IE <=10 - 11, Edge 12 - 13 only
+	// In IE/Edge using regex groups here causes severe slowdowns.
+	// See https://connect.microsoft.com/IE/feedback/details/1736512/
+	rnoInnerhtml = /<script|<style|<link/i,
+
+	// checked="checked" or checked
+	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
+
+// Prefer a tbody over its parent table for containing new rows
+function manipulationTarget( elem, content ) {
+	if ( nodeName( elem, "table" ) &&
+		nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
+
+		return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
+	}
+
+	return elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
+	return elem;
+}
+function restoreScript( elem ) {
+	if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
+		elem.type = elem.type.slice( 5 );
+	} else {
+		elem.removeAttribute( "type" );
+	}
+
+	return elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+	var i, l, type, pdataOld, udataOld, udataCur, events;
+
+	if ( dest.nodeType !== 1 ) {
+		return;
+	}
+
+	// 1. Copy private data: events, handlers, etc.
+	if ( dataPriv.hasData( src ) ) {
+		pdataOld = dataPriv.get( src );
+		events = pdataOld.events;
+
+		if ( events ) {
+			dataPriv.remove( dest, "handle events" );
+
+			for ( type in events ) {
+				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+					jQuery.event.add( dest, type, events[ type ][ i ] );
+				}
+			}
+		}
+	}
+
+	// 2. Copy user data
+	if ( dataUser.hasData( src ) ) {
+		udataOld = dataUser.access( src );
+		udataCur = jQuery.extend( {}, udataOld );
+
+		dataUser.set( dest, udataCur );
+	}
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+	var nodeName = dest.nodeName.toLowerCase();
+
+	// Fails to persist the checked state of a cloned checkbox or radio button.
+	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+		dest.checked = src.checked;
+
+	// Fails to return the selected option to the default selected state when cloning options
+	} else if ( nodeName === "input" || nodeName === "textarea" ) {
+		dest.defaultValue = src.defaultValue;
+	}
+}
+
+function domManip( collection, args, callback, ignored ) {
+
+	// Flatten any nested arrays
+	args = flat( args );
+
+	var fragment, first, scripts, hasScripts, node, doc,
+		i = 0,
+		l = collection.length,
+		iNoClone = l - 1,
+		value = args[ 0 ],
+		valueIsFunction = isFunction( value );
+
+	// We can't cloneNode fragments that contain checked, in WebKit
+	if ( valueIsFunction ||
+			( l > 1 && typeof value === "string" &&
+				!support.checkClone && rchecked.test( value ) ) ) {
+		return collection.each( function( index ) {
+			var self = collection.eq( index );
+			if ( valueIsFunction ) {
+				args[ 0 ] = value.call( this, index, self.html() );
+			}
+			domManip( self, args, callback, ignored );
+		} );
+	}
+
+	if ( l ) {
+		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
+		first = fragment.firstChild;
+
+		if ( fragment.childNodes.length === 1 ) {
+			fragment = first;
+		}
+
+		// Require either new content or an interest in ignored elements to invoke the callback
+		if ( first || ignored ) {
+			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+			hasScripts = scripts.length;
+
+			// Use the original fragment for the last item
+			// instead of the first because it can end up
+			// being emptied incorrectly in certain situations (#8070).
+			for ( ; i < l; i++ ) {
+				node = fragment;
+
+				if ( i !== iNoClone ) {
+					node = jQuery.clone( node, true, true );
+
+					// Keep references to cloned scripts for later restoration
+					if ( hasScripts ) {
+
+						// Support: Android <=4.0 only, PhantomJS 1 only
+						// push.apply(_, arraylike) throws on ancient WebKit
+						jQuery.merge( scripts, getAll( node, "script" ) );
+					}
+				}
+
+				callback.call( collection[ i ], node, i );
+			}
+
+			if ( hasScripts ) {
+				doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+				// Reenable scripts
+				jQuery.map( scripts, restoreScript );
+
+				// Evaluate executable scripts on first document insertion
+				for ( i = 0; i < hasScripts; i++ ) {
+					node = scripts[ i ];
+					if ( rscriptType.test( node.type || "" ) &&
+						!dataPriv.access( node, "globalEval" ) &&
+						jQuery.contains( doc, node ) ) {
+
+						if ( node.src && ( node.type || "" ).toLowerCase()  !== "module" ) {
+
+							// Optional AJAX dependency, but won't run scripts if not present
+							if ( jQuery._evalUrl && !node.noModule ) {
+								jQuery._evalUrl( node.src, {
+									nonce: node.nonce || node.getAttribute( "nonce" )
+								}, doc );
+							}
+						} else {
+							DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return collection;
+}
+
+function remove( elem, selector, keepData ) {
+	var node,
+		nodes = selector ? jQuery.filter( selector, elem ) : elem,
+		i = 0;
+
+	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
+		if ( !keepData && node.nodeType === 1 ) {
+			jQuery.cleanData( getAll( node ) );
+		}
+
+		if ( node.parentNode ) {
+			if ( keepData && isAttached( node ) ) {
+				setGlobalEval( getAll( node, "script" ) );
+			}
+			node.parentNode.removeChild( node );
+		}
+	}
+
+	return elem;
+}
+
+jQuery.extend( {
+	htmlPrefilter: function( html ) {
+		return html;
+	},
+
+	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+		var i, l, srcElements, destElements,
+			clone = elem.cloneNode( true ),
+			inPage = isAttached( elem );
+
+		// Fix IE cloning issues
+		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+				!jQuery.isXMLDoc( elem ) ) {
+
+			// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
+			destElements = getAll( clone );
+			srcElements = getAll( elem );
+
+			for ( i = 0, l = srcElements.length; i < l; i++ ) {
+				fixInput( srcElements[ i ], destElements[ i ] );
+			}
+		}
+
+		// Copy the events from the original to the clone
+		if ( dataAndEvents ) {
+			if ( deepDataAndEvents ) {
+				srcElements = srcElements || getAll( elem );
+				destElements = destElements || getAll( clone );
+
+				for ( i = 0, l = srcElements.length; i < l; i++ ) {
+					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+				}
+			} else {
+				cloneCopyEvent( elem, clone );
+			}
+		}
+
+		// Preserve script evaluation history
+		destElements = getAll( clone, "script" );
+		if ( destElements.length > 0 ) {
+			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+		}
+
+		// Return the cloned set
+		return clone;
+	},
+
+	cleanData: function( elems ) {
+		var data, elem, type,
+			special = jQuery.event.special,
+			i = 0;
+
+		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
+			if ( acceptData( elem ) ) {
+				if ( ( data = elem[ dataPriv.expando ] ) ) {
+					if ( data.events ) {
+						for ( type in data.events ) {
+							if ( special[ type ] ) {
+								jQuery.event.remove( elem, type );
+
+							// This is a shortcut to avoid jQuery.event.remove's overhead
+							} else {
+								jQuery.removeEvent( elem, type, data.handle );
+							}
+						}
+					}
+
+					// Support: Chrome <=35 - 45+
+					// Assign undefined instead of using delete, see Data#remove
+					elem[ dataPriv.expando ] = undefined;
+				}
+				if ( elem[ dataUser.expando ] ) {
+
+					// Support: Chrome <=35 - 45+
+					// Assign undefined instead of using delete, see Data#remove
+					elem[ dataUser.expando ] = undefined;
+				}
+			}
+		}
+	}
+} );
+
+jQuery.fn.extend( {
+	detach: function( selector ) {
+		return remove( this, selector, true );
+	},
+
+	remove: function( selector ) {
+		return remove( this, selector );
+	},
+
+	text: function( value ) {
+		return access( this, function( value ) {
+			return value === undefined ?
+				jQuery.text( this ) :
+				this.empty().each( function() {
+					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+						this.textContent = value;
+					}
+				} );
+		}, null, value, arguments.length );
+	},
+
+	append: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.appendChild( elem );
+			}
+		} );
+	},
+
+	prepend: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.insertBefore( elem, target.firstChild );
+			}
+		} );
+	},
+
+	before: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this );
+			}
+		} );
+	},
+
+	after: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this.nextSibling );
+			}
+		} );
+	},
+
+	empty: function() {
+		var elem,
+			i = 0;
+
+		for ( ; ( elem = this[ i ] ) != null; i++ ) {
+			if ( elem.nodeType === 1 ) {
+
+				// Prevent memory leaks
+				jQuery.cleanData( getAll( elem, false ) );
+
+				// Remove any remaining nodes
+				elem.textContent = "";
+			}
+		}
+
+		return this;
+	},
+
+	clone: function( dataAndEvents, deepDataAndEvents ) {
+		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+		return this.map( function() {
+			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+		} );
+	},
+
+	html: function( value ) {
+		return access( this, function( value ) {
+			var elem = this[ 0 ] || {},
+				i = 0,
+				l = this.length;
+
+			if ( value === undefined && elem.nodeType === 1 ) {
+				return elem.innerHTML;
+			}
+
+			// See if we can take a shortcut and just use innerHTML
+			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+				value = jQuery.htmlPrefilter( value );
+
+				try {
+					for ( ; i < l; i++ ) {
+						elem = this[ i ] || {};
+
+						// Remove element nodes and prevent memory leaks
+						if ( elem.nodeType === 1 ) {
+							jQuery.cleanData( getAll( elem, false ) );
+							elem.innerHTML = value;
+						}
+					}
+
+					elem = 0;
+
+				// If using innerHTML throws an exception, use the fallback method
+				} catch ( e ) {}
+			}
+
+			if ( elem ) {
+				this.empty().append( value );
+			}
+		}, null, value, arguments.length );
+	},
+
+	replaceWith: function() {
+		var ignored = [];
+
+		// Make the changes, replacing each non-ignored context element with the new content
+		return domManip( this, arguments, function( elem ) {
+			var parent = this.parentNode;
+
+			if ( jQuery.inArray( this, ignored ) < 0 ) {
+				jQuery.cleanData( getAll( this ) );
+				if ( parent ) {
+					parent.replaceChild( elem, this );
+				}
+			}
+
+		// Force callback invocation
+		}, ignored );
+	}
+} );
+
+jQuery.each( {
+	appendTo: "append",
+	prependTo: "prepend",
+	insertBefore: "before",
+	insertAfter: "after",
+	replaceAll: "replaceWith"
+}, function( name, original ) {
+	jQuery.fn[ name ] = function( selector ) {
+		var elems,
+			ret = [],
+			insert = jQuery( selector ),
+			last = insert.length - 1,
+			i = 0;
+
+		for ( ; i <= last; i++ ) {
+			elems = i === last ? this : this.clone( true );
+			jQuery( insert[ i ] )[ original ]( elems );
+
+			// Support: Android <=4.0 only, PhantomJS 1 only
+			// .get() because push.apply(_, arraylike) throws on ancient WebKit
+			push.apply( ret, elems.get() );
+		}
+
+		return this.pushStack( ret );
+	};
+} );
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+
+		// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
+		// IE throws on elements created in popups
+		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+		var view = elem.ownerDocument.defaultView;
+
+		if ( !view || !view.opener ) {
+			view = window;
+		}
+
+		return view.getComputedStyle( elem );
+	};
+
+var swap = function( elem, options, callback ) {
+	var ret, name,
+		old = {};
+
+	// Remember the old values, and insert the new ones
+	for ( name in options ) {
+		old[ name ] = elem.style[ name ];
+		elem.style[ name ] = options[ name ];
+	}
+
+	ret = callback.call( elem );
+
+	// Revert the old values
+	for ( name in options ) {
+		elem.style[ name ] = old[ name ];
+	}
+
+	return ret;
+};
+
+
+var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
+
+
+
+( function() {
+
+	// Executing both pixelPosition & boxSizingReliable tests require only one layout
+	// so they're executed at the same time to save the second computation.
+	function computeStyleTests() {
+
+		// This is a singleton, we need to execute it only once
+		if ( !div ) {
+			return;
+		}
+
+		container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
+			"margin-top:1px;padding:0;border:0";
+		div.style.cssText =
+			"position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
+			"margin:auto;border:1px;padding:1px;" +
+			"width:60%;top:1%";
+		documentElement.appendChild( container ).appendChild( div );
+
+		var divStyle = window.getComputedStyle( div );
+		pixelPositionVal = divStyle.top !== "1%";
+
+		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
+		reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
+
+		// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
+		// Some styles come back with percentage values, even though they shouldn't
+		div.style.right = "60%";
+		pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
+
+		// Support: IE 9 - 11 only
+		// Detect misreporting of content dimensions for box-sizing:border-box elements
+		boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
+
+		// Support: IE 9 only
+		// Detect overflow:scroll screwiness (gh-3699)
+		// Support: Chrome <=64
+		// Don't get tricked when zoom affects offsetWidth (gh-4029)
+		div.style.position = "absolute";
+		scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
+
+		documentElement.removeChild( container );
+
+		// Nullify the div so it wouldn't be stored in the memory and
+		// it will also be a sign that checks already performed
+		div = null;
+	}
+
+	function roundPixelMeasures( measure ) {
+		return Math.round( parseFloat( measure ) );
+	}
+
+	var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
+		reliableTrDimensionsVal, reliableMarginLeftVal,
+		container = document.createElement( "div" ),
+		div = document.createElement( "div" );
+
+	// Finish early in limited (non-browser) environments
+	if ( !div.style ) {
+		return;
+	}
+
+	// Support: IE <=9 - 11 only
+	// Style of cloned element affects source element cloned (#8908)
+	div.style.backgroundClip = "content-box";
+	div.cloneNode( true ).style.backgroundClip = "";
+	support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+	jQuery.extend( support, {
+		boxSizingReliable: function() {
+			computeStyleTests();
+			return boxSizingReliableVal;
+		},
+		pixelBoxStyles: function() {
+			computeStyleTests();
+			return pixelBoxStylesVal;
+		},
+		pixelPosition: function() {
+			computeStyleTests();
+			return pixelPositionVal;
+		},
+		reliableMarginLeft: function() {
+			computeStyleTests();
+			return reliableMarginLeftVal;
+		},
+		scrollboxSize: function() {
+			computeStyleTests();
+			return scrollboxSizeVal;
+		},
+
+		// Support: IE 9 - 11+, Edge 15 - 18+
+		// IE/Edge misreport `getComputedStyle` of table rows with width/height
+		// set in CSS while `offset*` properties report correct values.
+		// Behavior in IE 9 is more subtle than in newer versions & it passes
+		// some versions of this test; make sure not to make it pass there!
+		reliableTrDimensions: function() {
+			var table, tr, trChild, trStyle;
+			if ( reliableTrDimensionsVal == null ) {
+				table = document.createElement( "table" );
+				tr = document.createElement( "tr" );
+				trChild = document.createElement( "div" );
+
+				table.style.cssText = "position:absolute;left:-11111px";
+				tr.style.height = "1px";
+				trChild.style.height = "9px";
+
+				documentElement
+					.appendChild( table )
+					.appendChild( tr )
+					.appendChild( trChild );
+
+				trStyle = window.getComputedStyle( tr );
+				reliableTrDimensionsVal = parseInt( trStyle.height ) > 3;
+
+				documentElement.removeChild( table );
+			}
+			return reliableTrDimensionsVal;
+		}
+	} );
+} )();
+
+
+function curCSS( elem, name, computed ) {
+	var width, minWidth, maxWidth, ret,
+
+		// Support: Firefox 51+
+		// Retrieving style before computed somehow
+		// fixes an issue with getting wrong values
+		// on detached elements
+		style = elem.style;
+
+	computed = computed || getStyles( elem );
+
+	// getPropertyValue is needed for:
+	//   .css('filter') (IE 9 only, #12537)
+	//   .css('--customProperty) (#3144)
+	if ( computed ) {
+		ret = computed.getPropertyValue( name ) || computed[ name ];
+
+		if ( ret === "" && !isAttached( elem ) ) {
+			ret = jQuery.style( elem, name );
+		}
+
+		// A tribute to the "awesome hack by Dean Edwards"
+		// Android Browser returns percentage for some values,
+		// but width seems to be reliably pixels.
+		// This is against the CSSOM draft spec:
+		// https://drafts.csswg.org/cssom/#resolved-values
+		if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
+
+			// Remember the original values
+			width = style.width;
+			minWidth = style.minWidth;
+			maxWidth = style.maxWidth;
+
+			// Put in the new values to get a computed value out
+			style.minWidth = style.maxWidth = style.width = ret;
+			ret = computed.width;
+
+			// Revert the changed values
+			style.width = width;
+			style.minWidth = minWidth;
+			style.maxWidth = maxWidth;
+		}
+	}
+
+	return ret !== undefined ?
+
+		// Support: IE <=9 - 11 only
+		// IE returns zIndex value as an integer.
+		ret + "" :
+		ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+
+	// Define the hook, we'll check on the first run if it's really needed.
+	return {
+		get: function() {
+			if ( conditionFn() ) {
+
+				// Hook not needed (or it's not possible to use it due
+				// to missing dependency), remove it.
+				delete this.get;
+				return;
+			}
+
+			// Hook needed; redefine it so that the support test is not executed again.
+			return ( this.get = hookFn ).apply( this, arguments );
+		}
+	};
+}
+
+
+var cssPrefixes = [ "Webkit", "Moz", "ms" ],
+	emptyStyle = document.createElement( "div" ).style,
+	vendorProps = {};
+
+// Return a vendor-prefixed property or undefined
+function vendorPropName( name ) {
+
+	// Check for vendor prefixed names
+	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
+		i = cssPrefixes.length;
+
+	while ( i-- ) {
+		name = cssPrefixes[ i ] + capName;
+		if ( name in emptyStyle ) {
+			return name;
+		}
+	}
+}
+
+// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
+function finalPropName( name ) {
+	var final = jQuery.cssProps[ name ] || vendorProps[ name ];
+
+	if ( final ) {
+		return final;
+	}
+	if ( name in emptyStyle ) {
+		return name;
+	}
+	return vendorProps[ name ] = vendorPropName( name ) || name;
+}
+
+
+var
+
+	// Swappable if display is none or starts with table
+	// except "table", "table-cell", or "table-caption"
+	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+	rcustomProp = /^--/,
+	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+	cssNormalTransform = {
+		letterSpacing: "0",
+		fontWeight: "400"
+	};
+
+function setPositiveNumber( _elem, value, subtract ) {
+
+	// Any relative (+/-) values have already been
+	// normalized at this point
+	var matches = rcssNum.exec( value );
+	return matches ?
+
+		// Guard against undefined "subtract", e.g., when used as in cssHooks
+		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
+		value;
+}
+
+function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
+	var i = dimension === "width" ? 1 : 0,
+		extra = 0,
+		delta = 0;
+
+	// Adjustment may not be necessary
+	if ( box === ( isBorderBox ? "border" : "content" ) ) {
+		return 0;
+	}
+
+	for ( ; i < 4; i += 2 ) {
+
+		// Both box models exclude margin
+		if ( box === "margin" ) {
+			delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
+		}
+
+		// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
+		if ( !isBorderBox ) {
+
+			// Add padding
+			delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+			// For "border" or "margin", add border
+			if ( box !== "padding" ) {
+				delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+
+			// But still keep track of it otherwise
+			} else {
+				extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+
+		// If we get here with a border-box (content + padding + border), we're seeking "content" or
+		// "padding" or "margin"
+		} else {
+
+			// For "content", subtract padding
+			if ( box === "content" ) {
+				delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+			}
+
+			// For "content" or "padding", subtract border
+			if ( box !== "margin" ) {
+				delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		}
+	}
+
+	// Account for positive content-box scroll gutter when requested by providing computedVal
+	if ( !isBorderBox && computedVal >= 0 ) {
+
+		// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
+		// Assuming integer scroll gutter, subtract the rest and round down
+		delta += Math.max( 0, Math.ceil(
+			elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
+			computedVal -
+			delta -
+			extra -
+			0.5
+
+		// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
+		// Use an explicit zero to avoid NaN (gh-3964)
+		) ) || 0;
+	}
+
+	return delta;
+}
+
+function getWidthOrHeight( elem, dimension, extra ) {
+
+	// Start with computed style
+	var styles = getStyles( elem ),
+
+		// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
+		// Fake content-box until we know it's needed to know the true value.
+		boxSizingNeeded = !support.boxSizingReliable() || extra,
+		isBorderBox = boxSizingNeeded &&
+			jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+		valueIsBorderBox = isBorderBox,
+
+		val = curCSS( elem, dimension, styles ),
+		offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
+
+	// Support: Firefox <=54
+	// Return a confounding non-pixel value or feign ignorance, as appropriate.
+	if ( rnumnonpx.test( val ) ) {
+		if ( !extra ) {
+			return val;
+		}
+		val = "auto";
+	}
+
+
+	// Support: IE 9 - 11 only
+	// Use offsetWidth/offsetHeight for when box sizing is unreliable.
+	// In those cases, the computed value can be trusted to be border-box.
+	if ( ( !support.boxSizingReliable() && isBorderBox ||
+
+		// Support: IE 10 - 11+, Edge 15 - 18+
+		// IE/Edge misreport `getComputedStyle` of table rows with width/height
+		// set in CSS while `offset*` properties report correct values.
+		// Interestingly, in some cases IE 9 doesn't suffer from this issue.
+		!support.reliableTrDimensions() && nodeName( elem, "tr" ) ||
+
+		// Fall back to offsetWidth/offsetHeight when value is "auto"
+		// This happens for inline elements with no explicit setting (gh-3571)
+		val === "auto" ||
+
+		// Support: Android <=4.1 - 4.3 only
+		// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
+		!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
+
+		// Make sure the element is visible & connected
+		elem.getClientRects().length ) {
+
+		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+		// Where available, offsetWidth/offsetHeight approximate border box dimensions.
+		// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
+		// retrieved value as a content box dimension.
+		valueIsBorderBox = offsetProp in elem;
+		if ( valueIsBorderBox ) {
+			val = elem[ offsetProp ];
+		}
+	}
+
+	// Normalize "" and auto
+	val = parseFloat( val ) || 0;
+
+	// Adjust for the element's box model
+	return ( val +
+		boxModelAdjustment(
+			elem,
+			dimension,
+			extra || ( isBorderBox ? "border" : "content" ),
+			valueIsBorderBox,
+			styles,
+
+			// Provide the current computed size to request scroll gutter calculation (gh-3589)
+			val
+		)
+	) + "px";
+}
+
+jQuery.extend( {
+
+	// Add in style property hooks for overriding the default
+	// behavior of getting and setting a style property
+	cssHooks: {
+		opacity: {
+			get: function( elem, computed ) {
+				if ( computed ) {
+
+					// We should always get a number back from opacity
+					var ret = curCSS( elem, "opacity" );
+					return ret === "" ? "1" : ret;
+				}
+			}
+		}
+	},
+
+	// Don't automatically add "px" to these possibly-unitless properties
+	cssNumber: {
+		"animationIterationCount": true,
+		"columnCount": true,
+		"fillOpacity": true,
+		"flexGrow": true,
+		"flexShrink": true,
+		"fontWeight": true,
+		"gridArea": true,
+		"gridColumn": true,
+		"gridColumnEnd": true,
+		"gridColumnStart": true,
+		"gridRow": true,
+		"gridRowEnd": true,
+		"gridRowStart": true,
+		"lineHeight": true,
+		"opacity": true,
+		"order": true,
+		"orphans": true,
+		"widows": true,
+		"zIndex": true,
+		"zoom": true
+	},
+
+	// Add in properties whose names you wish to fix before
+	// setting or getting the value
+	cssProps: {},
+
+	// Get and set the style property on a DOM Node
+	style: function( elem, name, value, extra ) {
+
+		// Don't set styles on text and comment nodes
+		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+			return;
+		}
+
+		// Make sure that we're working with the right name
+		var ret, type, hooks,
+			origName = camelCase( name ),
+			isCustomProp = rcustomProp.test( name ),
+			style = elem.style;
+
+		// Make sure that we're working with the right name. We don't
+		// want to query the value if it is a CSS custom property
+		// since they are user-defined.
+		if ( !isCustomProp ) {
+			name = finalPropName( origName );
+		}
+
+		// Gets hook for the prefixed version, then unprefixed version
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// Check if we're setting a value
+		if ( value !== undefined ) {
+			type = typeof value;
+
+			// Convert "+=" or "-=" to relative numbers (#7345)
+			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
+				value = adjustCSS( elem, name, ret );
+
+				// Fixes bug #9237
+				type = "number";
+			}
+
+			// Make sure that null and NaN values aren't set (#7116)
+			if ( value == null || value !== value ) {
+				return;
+			}
+
+			// If a number was passed in, add the unit (except for certain CSS properties)
+			// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
+			// "px" to a few hardcoded values.
+			if ( type === "number" && !isCustomProp ) {
+				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
+			}
+
+			// background-* props affect original clone's values
+			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+				style[ name ] = "inherit";
+			}
+
+			// If a hook was provided, use that value, otherwise just set the specified value
+			if ( !hooks || !( "set" in hooks ) ||
+				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
+
+				if ( isCustomProp ) {
+					style.setProperty( name, value );
+				} else {
+					style[ name ] = value;
+				}
+			}
+
+		} else {
+
+			// If a hook was provided get the non-computed value from there
+			if ( hooks && "get" in hooks &&
+				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
+
+				return ret;
+			}
+
+			// Otherwise just get the value from the style object
+			return style[ name ];
+		}
+	},
+
+	css: function( elem, name, extra, styles ) {
+		var val, num, hooks,
+			origName = camelCase( name ),
+			isCustomProp = rcustomProp.test( name );
+
+		// Make sure that we're working with the right name. We don't
+		// want to modify the value if it is a CSS custom property
+		// since they are user-defined.
+		if ( !isCustomProp ) {
+			name = finalPropName( origName );
+		}
+
+		// Try prefixed name followed by the unprefixed name
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// If a hook was provided get the computed value from there
+		if ( hooks && "get" in hooks ) {
+			val = hooks.get( elem, true, extra );
+		}
+
+		// Otherwise, if a way to get the computed value exists, use that
+		if ( val === undefined ) {
+			val = curCSS( elem, name, styles );
+		}
+
+		// Convert "normal" to computed value
+		if ( val === "normal" && name in cssNormalTransform ) {
+			val = cssNormalTransform[ name ];
+		}
+
+		// Make numeric if forced or a qualifier was provided and val looks numeric
+		if ( extra === "" || extra ) {
+			num = parseFloat( val );
+			return extra === true || isFinite( num ) ? num || 0 : val;
+		}
+
+		return val;
+	}
+} );
+
+jQuery.each( [ "height", "width" ], function( _i, dimension ) {
+	jQuery.cssHooks[ dimension ] = {
+		get: function( elem, computed, extra ) {
+			if ( computed ) {
+
+				// Certain elements can have dimension info if we invisibly show them
+				// but it must have a current display style that would benefit
+				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
+
+					// Support: Safari 8+
+					// Table columns in Safari have non-zero offsetWidth & zero
+					// getBoundingClientRect().width unless display is changed.
+					// Support: IE <=11 only
+					// Running getBoundingClientRect on a disconnected node
+					// in IE throws an error.
+					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
+						swap( elem, cssShow, function() {
+							return getWidthOrHeight( elem, dimension, extra );
+						} ) :
+						getWidthOrHeight( elem, dimension, extra );
+			}
+		},
+
+		set: function( elem, value, extra ) {
+			var matches,
+				styles = getStyles( elem ),
+
+				// Only read styles.position if the test has a chance to fail
+				// to avoid forcing a reflow.
+				scrollboxSizeBuggy = !support.scrollboxSize() &&
+					styles.position === "absolute",
+
+				// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
+				boxSizingNeeded = scrollboxSizeBuggy || extra,
+				isBorderBox = boxSizingNeeded &&
+					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+				subtract = extra ?
+					boxModelAdjustment(
+						elem,
+						dimension,
+						extra,
+						isBorderBox,
+						styles
+					) :
+					0;
+
+			// Account for unreliable border-box dimensions by comparing offset* to computed and
+			// faking a content-box to get border and padding (gh-3699)
+			if ( isBorderBox && scrollboxSizeBuggy ) {
+				subtract -= Math.ceil(
+					elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
+					parseFloat( styles[ dimension ] ) -
+					boxModelAdjustment( elem, dimension, "border", false, styles ) -
+					0.5
+				);
+			}
+
+			// Convert to pixels if value adjustment is needed
+			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
+				( matches[ 3 ] || "px" ) !== "px" ) {
+
+				elem.style[ dimension ] = value;
+				value = jQuery.css( elem, dimension );
+			}
+
+			return setPositiveNumber( elem, value, subtract );
+		}
+	};
+} );
+
+jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
+	function( elem, computed ) {
+		if ( computed ) {
+			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
+				elem.getBoundingClientRect().left -
+					swap( elem, { marginLeft: 0 }, function() {
+						return elem.getBoundingClientRect().left;
+					} )
+				) + "px";
+		}
+	}
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each( {
+	margin: "",
+	padding: "",
+	border: "Width"
+}, function( prefix, suffix ) {
+	jQuery.cssHooks[ prefix + suffix ] = {
+		expand: function( value ) {
+			var i = 0,
+				expanded = {},
+
+				// Assumes a single number if not a string
+				parts = typeof value === "string" ? value.split( " " ) : [ value ];
+
+			for ( ; i < 4; i++ ) {
+				expanded[ prefix + cssExpand[ i ] + suffix ] =
+					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+			}
+
+			return expanded;
+		}
+	};
+
+	if ( prefix !== "margin" ) {
+		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+	}
+} );
+
+jQuery.fn.extend( {
+	css: function( name, value ) {
+		return access( this, function( elem, name, value ) {
+			var styles, len,
+				map = {},
+				i = 0;
+
+			if ( Array.isArray( name ) ) {
+				styles = getStyles( elem );
+				len = name.length;
+
+				for ( ; i < len; i++ ) {
+					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+				}
+
+				return map;
+			}
+
+			return value !== undefined ?
+				jQuery.style( elem, name, value ) :
+				jQuery.css( elem, name );
+		}, name, value, arguments.length > 1 );
+	}
+} );
+
+
+function Tween( elem, options, prop, end, easing ) {
+	return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+	constructor: Tween,
+	init: function( elem, options, prop, end, easing, unit ) {
+		this.elem = elem;
+		this.prop = prop;
+		this.easing = easing || jQuery.easing._default;
+		this.options = options;
+		this.start = this.now = this.cur();
+		this.end = end;
+		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+	},
+	cur: function() {
+		var hooks = Tween.propHooks[ this.prop ];
+
+		return hooks && hooks.get ?
+			hooks.get( this ) :
+			Tween.propHooks._default.get( this );
+	},
+	run: function( percent ) {
+		var eased,
+			hooks = Tween.propHooks[ this.prop ];
+
+		if ( this.options.duration ) {
+			this.pos = eased = jQuery.easing[ this.easing ](
+				percent, this.options.duration * percent, 0, 1, this.options.duration
+			);
+		} else {
+			this.pos = eased = percent;
+		}
+		this.now = ( this.end - this.start ) * eased + this.start;
+
+		if ( this.options.step ) {
+			this.options.step.call( this.elem, this.now, this );
+		}
+
+		if ( hooks && hooks.set ) {
+			hooks.set( this );
+		} else {
+			Tween.propHooks._default.set( this );
+		}
+		return this;
+	}
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+	_default: {
+		get: function( tween ) {
+			var result;
+
+			// Use a property on the element directly when it is not a DOM element,
+			// or when there is no matching style property that exists.
+			if ( tween.elem.nodeType !== 1 ||
+				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
+				return tween.elem[ tween.prop ];
+			}
+
+			// Passing an empty string as a 3rd parameter to .css will automatically
+			// attempt a parseFloat and fallback to a string if the parse fails.
+			// Simple values such as "10px" are parsed to Float;
+			// complex values such as "rotate(1rad)" are returned as-is.
+			result = jQuery.css( tween.elem, tween.prop, "" );
+
+			// Empty strings, null, undefined and "auto" are converted to 0.
+			return !result || result === "auto" ? 0 : result;
+		},
+		set: function( tween ) {
+
+			// Use step hook for back compat.
+			// Use cssHook if its there.
+			// Use .style if available and use plain properties where available.
+			if ( jQuery.fx.step[ tween.prop ] ) {
+				jQuery.fx.step[ tween.prop ]( tween );
+			} else if ( tween.elem.nodeType === 1 && (
+					jQuery.cssHooks[ tween.prop ] ||
+					tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
+				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+			} else {
+				tween.elem[ tween.prop ] = tween.now;
+			}
+		}
+	}
+};
+
+// Support: IE <=9 only
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+	set: function( tween ) {
+		if ( tween.elem.nodeType && tween.elem.parentNode ) {
+			tween.elem[ tween.prop ] = tween.now;
+		}
+	}
+};
+
+jQuery.easing = {
+	linear: function( p ) {
+		return p;
+	},
+	swing: function( p ) {
+		return 0.5 - Math.cos( p * Math.PI ) / 2;
+	},
+	_default: "swing"
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+	fxNow, inProgress,
+	rfxtypes = /^(?:toggle|show|hide)$/,
+	rrun = /queueHooks$/;
+
+function schedule() {
+	if ( inProgress ) {
+		if ( document.hidden === false && window.requestAnimationFrame ) {
+			window.requestAnimationFrame( schedule );
+		} else {
+			window.setTimeout( schedule, jQuery.fx.interval );
+		}
+
+		jQuery.fx.tick();
+	}
+}
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+	window.setTimeout( function() {
+		fxNow = undefined;
+	} );
+	return ( fxNow = Date.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+	var which,
+		i = 0,
+		attrs = { height: type };
+
+	// If we include width, step value is 1 to do all cssExpand values,
+	// otherwise step value is 2 to skip over Left and Right
+	includeWidth = includeWidth ? 1 : 0;
+	for ( ; i < 4; i += 2 - includeWidth ) {
+		which = cssExpand[ i ];
+		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+	}
+
+	if ( includeWidth ) {
+		attrs.opacity = attrs.width = type;
+	}
+
+	return attrs;
+}
+
+function createTween( value, prop, animation ) {
+	var tween,
+		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
+		index = 0,
+		length = collection.length;
+	for ( ; index < length; index++ ) {
+		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
+
+			// We're done with this property
+			return tween;
+		}
+	}
+}
+
+function defaultPrefilter( elem, props, opts ) {
+	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
+		isBox = "width" in props || "height" in props,
+		anim = this,
+		orig = {},
+		style = elem.style,
+		hidden = elem.nodeType && isHiddenWithinTree( elem ),
+		dataShow = dataPriv.get( elem, "fxshow" );
+
+	// Queue-skipping animations hijack the fx hooks
+	if ( !opts.queue ) {
+		hooks = jQuery._queueHooks( elem, "fx" );
+		if ( hooks.unqueued == null ) {
+			hooks.unqueued = 0;
+			oldfire = hooks.empty.fire;
+			hooks.empty.fire = function() {
+				if ( !hooks.unqueued ) {
+					oldfire();
+				}
+			};
+		}
+		hooks.unqueued++;
+
+		anim.always( function() {
+
+			// Ensure the complete handler is called before this completes
+			anim.always( function() {
+				hooks.unqueued--;
+				if ( !jQuery.queue( elem, "fx" ).length ) {
+					hooks.empty.fire();
+				}
+			} );
+		} );
+	}
+
+	// Detect show/hide animations
+	for ( prop in props ) {
+		value = props[ prop ];
+		if ( rfxtypes.test( value ) ) {
+			delete props[ prop ];
+			toggle = toggle || value === "toggle";
+			if ( value === ( hidden ? "hide" : "show" ) ) {
+
+				// Pretend to be hidden if this is a "show" and
+				// there is still data from a stopped show/hide
+				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+					hidden = true;
+
+				// Ignore all other no-op show/hide data
+				} else {
+					continue;
+				}
+			}
+			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+		}
+	}
+
+	// Bail out if this is a no-op like .hide().hide()
+	propTween = !jQuery.isEmptyObject( props );
+	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
+		return;
+	}
+
+	// Restrict "overflow" and "display" styles during box animations
+	if ( isBox && elem.nodeType === 1 ) {
+
+		// Support: IE <=9 - 11, Edge 12 - 15
+		// Record all 3 overflow attributes because IE does not infer the shorthand
+		// from identically-valued overflowX and overflowY and Edge just mirrors
+		// the overflowX value there.
+		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+		// Identify a display type, preferring old show/hide data over the CSS cascade
+		restoreDisplay = dataShow && dataShow.display;
+		if ( restoreDisplay == null ) {
+			restoreDisplay = dataPriv.get( elem, "display" );
+		}
+		display = jQuery.css( elem, "display" );
+		if ( display === "none" ) {
+			if ( restoreDisplay ) {
+				display = restoreDisplay;
+			} else {
+
+				// Get nonempty value(s) by temporarily forcing visibility
+				showHide( [ elem ], true );
+				restoreDisplay = elem.style.display || restoreDisplay;
+				display = jQuery.css( elem, "display" );
+				showHide( [ elem ] );
+			}
+		}
+
+		// Animate inline elements as inline-block
+		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
+			if ( jQuery.css( elem, "float" ) === "none" ) {
+
+				// Restore the original display value at the end of pure show/hide animations
+				if ( !propTween ) {
+					anim.done( function() {
+						style.display = restoreDisplay;
+					} );
+					if ( restoreDisplay == null ) {
+						display = style.display;
+						restoreDisplay = display === "none" ? "" : display;
+					}
+				}
+				style.display = "inline-block";
+			}
+		}
+	}
+
+	if ( opts.overflow ) {
+		style.overflow = "hidden";
+		anim.always( function() {
+			style.overflow = opts.overflow[ 0 ];
+			style.overflowX = opts.overflow[ 1 ];
+			style.overflowY = opts.overflow[ 2 ];
+		} );
+	}
+
+	// Implement show/hide animations
+	propTween = false;
+	for ( prop in orig ) {
+
+		// General show/hide setup for this element animation
+		if ( !propTween ) {
+			if ( dataShow ) {
+				if ( "hidden" in dataShow ) {
+					hidden = dataShow.hidden;
+				}
+			} else {
+				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
+			}
+
+			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
+			if ( toggle ) {
+				dataShow.hidden = !hidden;
+			}
+
+			// Show elements before animating them
+			if ( hidden ) {
+				showHide( [ elem ], true );
+			}
+
+			/* eslint-disable no-loop-func */
+
+			anim.done( function() {
+
+			/* eslint-enable no-loop-func */
+
+				// The final step of a "hide" animation is actually hiding the element
+				if ( !hidden ) {
+					showHide( [ elem ] );
+				}
+				dataPriv.remove( elem, "fxshow" );
+				for ( prop in orig ) {
+					jQuery.style( elem, prop, orig[ prop ] );
+				}
+			} );
+		}
+
+		// Per-property setup
+		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+		if ( !( prop in dataShow ) ) {
+			dataShow[ prop ] = propTween.start;
+			if ( hidden ) {
+				propTween.end = propTween.start;
+				propTween.start = 0;
+			}
+		}
+	}
+}
+
+function propFilter( props, specialEasing ) {
+	var index, name, easing, value, hooks;
+
+	// camelCase, specialEasing and expand cssHook pass
+	for ( index in props ) {
+		name = camelCase( index );
+		easing = specialEasing[ name ];
+		value = props[ index ];
+		if ( Array.isArray( value ) ) {
+			easing = value[ 1 ];
+			value = props[ index ] = value[ 0 ];
+		}
+
+		if ( index !== name ) {
+			props[ name ] = value;
+			delete props[ index ];
+		}
+
+		hooks = jQuery.cssHooks[ name ];
+		if ( hooks && "expand" in hooks ) {
+			value = hooks.expand( value );
+			delete props[ name ];
+
+			// Not quite $.extend, this won't overwrite existing keys.
+			// Reusing 'index' because we have the correct "name"
+			for ( index in value ) {
+				if ( !( index in props ) ) {
+					props[ index ] = value[ index ];
+					specialEasing[ index ] = easing;
+				}
+			}
+		} else {
+			specialEasing[ name ] = easing;
+		}
+	}
+}
+
+function Animation( elem, properties, options ) {
+	var result,
+		stopped,
+		index = 0,
+		length = Animation.prefilters.length,
+		deferred = jQuery.Deferred().always( function() {
+
+			// Don't match elem in the :animated selector
+			delete tick.elem;
+		} ),
+		tick = function() {
+			if ( stopped ) {
+				return false;
+			}
+			var currentTime = fxNow || createFxNow(),
+				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+
+				// Support: Android 2.3 only
+				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+				temp = remaining / animation.duration || 0,
+				percent = 1 - temp,
+				index = 0,
+				length = animation.tweens.length;
+
+			for ( ; index < length; index++ ) {
+				animation.tweens[ index ].run( percent );
+			}
+
+			deferred.notifyWith( elem, [ animation, percent, remaining ] );
+
+			// If there's more to do, yield
+			if ( percent < 1 && length ) {
+				return remaining;
+			}
+
+			// If this was an empty animation, synthesize a final progress notification
+			if ( !length ) {
+				deferred.notifyWith( elem, [ animation, 1, 0 ] );
+			}
+
+			// Resolve the animation and report its conclusion
+			deferred.resolveWith( elem, [ animation ] );
+			return false;
+		},
+		animation = deferred.promise( {
+			elem: elem,
+			props: jQuery.extend( {}, properties ),
+			opts: jQuery.extend( true, {
+				specialEasing: {},
+				easing: jQuery.easing._default
+			}, options ),
+			originalProperties: properties,
+			originalOptions: options,
+			startTime: fxNow || createFxNow(),
+			duration: options.duration,
+			tweens: [],
+			createTween: function( prop, end ) {
+				var tween = jQuery.Tween( elem, animation.opts, prop, end,
+						animation.opts.specialEasing[ prop ] || animation.opts.easing );
+				animation.tweens.push( tween );
+				return tween;
+			},
+			stop: function( gotoEnd ) {
+				var index = 0,
+
+					// If we are going to the end, we want to run all the tweens
+					// otherwise we skip this part
+					length = gotoEnd ? animation.tweens.length : 0;
+				if ( stopped ) {
+					return this;
+				}
+				stopped = true;
+				for ( ; index < length; index++ ) {
+					animation.tweens[ index ].run( 1 );
+				}
+
+				// Resolve when we played the last frame; otherwise, reject
+				if ( gotoEnd ) {
+					deferred.notifyWith( elem, [ animation, 1, 0 ] );
+					deferred.resolveWith( elem, [ animation, gotoEnd ] );
+				} else {
+					deferred.rejectWith( elem, [ animation, gotoEnd ] );
+				}
+				return this;
+			}
+		} ),
+		props = animation.props;
+
+	propFilter( props, animation.opts.specialEasing );
+
+	for ( ; index < length; index++ ) {
+		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
+		if ( result ) {
+			if ( isFunction( result.stop ) ) {
+				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
+					result.stop.bind( result );
+			}
+			return result;
+		}
+	}
+
+	jQuery.map( props, createTween, animation );
+
+	if ( isFunction( animation.opts.start ) ) {
+		animation.opts.start.call( elem, animation );
+	}
+
+	// Attach callbacks from options
+	animation
+		.progress( animation.opts.progress )
+		.done( animation.opts.done, animation.opts.complete )
+		.fail( animation.opts.fail )
+		.always( animation.opts.always );
+
+	jQuery.fx.timer(
+		jQuery.extend( tick, {
+			elem: elem,
+			anim: animation,
+			queue: animation.opts.queue
+		} )
+	);
+
+	return animation;
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+	tweeners: {
+		"*": [ function( prop, value ) {
+			var tween = this.createTween( prop, value );
+			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
+			return tween;
+		} ]
+	},
+
+	tweener: function( props, callback ) {
+		if ( isFunction( props ) ) {
+			callback = props;
+			props = [ "*" ];
+		} else {
+			props = props.match( rnothtmlwhite );
+		}
+
+		var prop,
+			index = 0,
+			length = props.length;
+
+		for ( ; index < length; index++ ) {
+			prop = props[ index ];
+			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
+			Animation.tweeners[ prop ].unshift( callback );
+		}
+	},
+
+	prefilters: [ defaultPrefilter ],
+
+	prefilter: function( callback, prepend ) {
+		if ( prepend ) {
+			Animation.prefilters.unshift( callback );
+		} else {
+			Animation.prefilters.push( callback );
+		}
+	}
+} );
+
+jQuery.speed = function( speed, easing, fn ) {
+	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+		complete: fn || !fn && easing ||
+			isFunction( speed ) && speed,
+		duration: speed,
+		easing: fn && easing || easing && !isFunction( easing ) && easing
+	};
+
+	// Go to the end state if fx are off
+	if ( jQuery.fx.off ) {
+		opt.duration = 0;
+
+	} else {
+		if ( typeof opt.duration !== "number" ) {
+			if ( opt.duration in jQuery.fx.speeds ) {
+				opt.duration = jQuery.fx.speeds[ opt.duration ];
+
+			} else {
+				opt.duration = jQuery.fx.speeds._default;
+			}
+		}
+	}
+
+	// Normalize opt.queue - true/undefined/null -> "fx"
+	if ( opt.queue == null || opt.queue === true ) {
+		opt.queue = "fx";
+	}
+
+	// Queueing
+	opt.old = opt.complete;
+
+	opt.complete = function() {
+		if ( isFunction( opt.old ) ) {
+			opt.old.call( this );
+		}
+
+		if ( opt.queue ) {
+			jQuery.dequeue( this, opt.queue );
+		}
+	};
+
+	return opt;
+};
+
+jQuery.fn.extend( {
+	fadeTo: function( speed, to, easing, callback ) {
+
+		// Show any hidden elements after setting opacity to 0
+		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
+
+			// Animate to the value specified
+			.end().animate( { opacity: to }, speed, easing, callback );
+	},
+	animate: function( prop, speed, easing, callback ) {
+		var empty = jQuery.isEmptyObject( prop ),
+			optall = jQuery.speed( speed, easing, callback ),
+			doAnimation = function() {
+
+				// Operate on a copy of prop so per-property easing won't be lost
+				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+				// Empty animations, or finishing resolves immediately
+				if ( empty || dataPriv.get( this, "finish" ) ) {
+					anim.stop( true );
+				}
+			};
+			doAnimation.finish = doAnimation;
+
+		return empty || optall.queue === false ?
+			this.each( doAnimation ) :
+			this.queue( optall.queue, doAnimation );
+	},
+	stop: function( type, clearQueue, gotoEnd ) {
+		var stopQueue = function( hooks ) {
+			var stop = hooks.stop;
+			delete hooks.stop;
+			stop( gotoEnd );
+		};
+
+		if ( typeof type !== "string" ) {
+			gotoEnd = clearQueue;
+			clearQueue = type;
+			type = undefined;
+		}
+		if ( clearQueue ) {
+			this.queue( type || "fx", [] );
+		}
+
+		return this.each( function() {
+			var dequeue = true,
+				index = type != null && type + "queueHooks",
+				timers = jQuery.timers,
+				data = dataPriv.get( this );
+
+			if ( index ) {
+				if ( data[ index ] && data[ index ].stop ) {
+					stopQueue( data[ index ] );
+				}
+			} else {
+				for ( index in data ) {
+					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+						stopQueue( data[ index ] );
+					}
+				}
+			}
+
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this &&
+					( type == null || timers[ index ].queue === type ) ) {
+
+					timers[ index ].anim.stop( gotoEnd );
+					dequeue = false;
+					timers.splice( index, 1 );
+				}
+			}
+
+			// Start the next in the queue if the last step wasn't forced.
+			// Timers currently will call their complete callbacks, which
+			// will dequeue but only if they were gotoEnd.
+			if ( dequeue || !gotoEnd ) {
+				jQuery.dequeue( this, type );
+			}
+		} );
+	},
+	finish: function( type ) {
+		if ( type !== false ) {
+			type = type || "fx";
+		}
+		return this.each( function() {
+			var index,
+				data = dataPriv.get( this ),
+				queue = data[ type + "queue" ],
+				hooks = data[ type + "queueHooks" ],
+				timers = jQuery.timers,
+				length = queue ? queue.length : 0;
+
+			// Enable finishing flag on private data
+			data.finish = true;
+
+			// Empty the queue first
+			jQuery.queue( this, type, [] );
+
+			if ( hooks && hooks.stop ) {
+				hooks.stop.call( this, true );
+			}
+
+			// Look for any active animations, and finish them
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+					timers[ index ].anim.stop( true );
+					timers.splice( index, 1 );
+				}
+			}
+
+			// Look for any animations in the old queue and finish them
+			for ( index = 0; index < length; index++ ) {
+				if ( queue[ index ] && queue[ index ].finish ) {
+					queue[ index ].finish.call( this );
+				}
+			}
+
+			// Turn off finishing flag
+			delete data.finish;
+		} );
+	}
+} );
+
+jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) {
+	var cssFn = jQuery.fn[ name ];
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return speed == null || typeof speed === "boolean" ?
+			cssFn.apply( this, arguments ) :
+			this.animate( genFx( name, true ), speed, easing, callback );
+	};
+} );
+
+// Generate shortcuts for custom animations
+jQuery.each( {
+	slideDown: genFx( "show" ),
+	slideUp: genFx( "hide" ),
+	slideToggle: genFx( "toggle" ),
+	fadeIn: { opacity: "show" },
+	fadeOut: { opacity: "hide" },
+	fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return this.animate( props, speed, easing, callback );
+	};
+} );
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+	var timer,
+		i = 0,
+		timers = jQuery.timers;
+
+	fxNow = Date.now();
+
+	for ( ; i < timers.length; i++ ) {
+		timer = timers[ i ];
+
+		// Run the timer and safely remove it when done (allowing for external removal)
+		if ( !timer() && timers[ i ] === timer ) {
+			timers.splice( i--, 1 );
+		}
+	}
+
+	if ( !timers.length ) {
+		jQuery.fx.stop();
+	}
+	fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+	jQuery.timers.push( timer );
+	jQuery.fx.start();
+};
+
+jQuery.fx.interval = 13;
+jQuery.fx.start = function() {
+	if ( inProgress ) {
+		return;
+	}
+
+	inProgress = true;
+	schedule();
+};
+
+jQuery.fx.stop = function() {
+	inProgress = null;
+};
+
+jQuery.fx.speeds = {
+	slow: 600,
+	fast: 200,
+
+	// Default speed
+	_default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+	type = type || "fx";
+
+	return this.queue( type, function( next, hooks ) {
+		var timeout = window.setTimeout( next, time );
+		hooks.stop = function() {
+			window.clearTimeout( timeout );
+		};
+	} );
+};
+
+
+( function() {
+	var input = document.createElement( "input" ),
+		select = document.createElement( "select" ),
+		opt = select.appendChild( document.createElement( "option" ) );
+
+	input.type = "checkbox";
+
+	// Support: Android <=4.3 only
+	// Default value for a checkbox should be "on"
+	support.checkOn = input.value !== "";
+
+	// Support: IE <=11 only
+	// Must access selectedIndex to make default options select
+	support.optSelected = opt.selected;
+
+	// Support: IE <=11 only
+	// An input loses its value after becoming a radio
+	input = document.createElement( "input" );
+	input.value = "t";
+	input.type = "radio";
+	support.radioValue = input.value === "t";
+} )();
+
+
+var boolHook,
+	attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend( {
+	attr: function( name, value ) {
+		return access( this, jQuery.attr, name, value, arguments.length > 1 );
+	},
+
+	removeAttr: function( name ) {
+		return this.each( function() {
+			jQuery.removeAttr( this, name );
+		} );
+	}
+} );
+
+jQuery.extend( {
+	attr: function( elem, name, value ) {
+		var ret, hooks,
+			nType = elem.nodeType;
+
+		// Don't get/set attributes on text, comment and attribute nodes
+		if ( nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		// Fallback to prop when attributes are not supported
+		if ( typeof elem.getAttribute === "undefined" ) {
+			return jQuery.prop( elem, name, value );
+		}
+
+		// Attribute hooks are determined by the lowercase version
+		// Grab necessary hook if one is defined
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
+				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
+		}
+
+		if ( value !== undefined ) {
+			if ( value === null ) {
+				jQuery.removeAttr( elem, name );
+				return;
+			}
+
+			if ( hooks && "set" in hooks &&
+				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+				return ret;
+			}
+
+			elem.setAttribute( name, value + "" );
+			return value;
+		}
+
+		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+			return ret;
+		}
+
+		ret = jQuery.find.attr( elem, name );
+
+		// Non-existent attributes return null, we normalize to undefined
+		return ret == null ? undefined : ret;
+	},
+
+	attrHooks: {
+		type: {
+			set: function( elem, value ) {
+				if ( !support.radioValue && value === "radio" &&
+					nodeName( elem, "input" ) ) {
+					var val = elem.value;
+					elem.setAttribute( "type", value );
+					if ( val ) {
+						elem.value = val;
+					}
+					return value;
+				}
+			}
+		}
+	},
+
+	removeAttr: function( elem, value ) {
+		var name,
+			i = 0,
+
+			// Attribute names can contain non-HTML whitespace characters
+			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
+			attrNames = value && value.match( rnothtmlwhite );
+
+		if ( attrNames && elem.nodeType === 1 ) {
+			while ( ( name = attrNames[ i++ ] ) ) {
+				elem.removeAttribute( name );
+			}
+		}
+	}
+} );
+
+// Hooks for boolean attributes
+boolHook = {
+	set: function( elem, value, name ) {
+		if ( value === false ) {
+
+			// Remove boolean attributes when set to false
+			jQuery.removeAttr( elem, name );
+		} else {
+			elem.setAttribute( name, name );
+		}
+		return name;
+	}
+};
+
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
+	var getter = attrHandle[ name ] || jQuery.find.attr;
+
+	attrHandle[ name ] = function( elem, name, isXML ) {
+		var ret, handle,
+			lowercaseName = name.toLowerCase();
+
+		if ( !isXML ) {
+
+			// Avoid an infinite loop by temporarily removing this function from the getter
+			handle = attrHandle[ lowercaseName ];
+			attrHandle[ lowercaseName ] = ret;
+			ret = getter( elem, name, isXML ) != null ?
+				lowercaseName :
+				null;
+			attrHandle[ lowercaseName ] = handle;
+		}
+		return ret;
+	};
+} );
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i,
+	rclickable = /^(?:a|area)$/i;
+
+jQuery.fn.extend( {
+	prop: function( name, value ) {
+		return access( this, jQuery.prop, name, value, arguments.length > 1 );
+	},
+
+	removeProp: function( name ) {
+		return this.each( function() {
+			delete this[ jQuery.propFix[ name ] || name ];
+		} );
+	}
+} );
+
+jQuery.extend( {
+	prop: function( elem, name, value ) {
+		var ret, hooks,
+			nType = elem.nodeType;
+
+		// Don't get/set properties on text, comment and attribute nodes
+		if ( nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+
+			// Fix name and attach hooks
+			name = jQuery.propFix[ name ] || name;
+			hooks = jQuery.propHooks[ name ];
+		}
+
+		if ( value !== undefined ) {
+			if ( hooks && "set" in hooks &&
+				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+				return ret;
+			}
+
+			return ( elem[ name ] = value );
+		}
+
+		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+			return ret;
+		}
+
+		return elem[ name ];
+	},
+
+	propHooks: {
+		tabIndex: {
+			get: function( elem ) {
+
+				// Support: IE <=9 - 11 only
+				// elem.tabIndex doesn't always return the
+				// correct value when it hasn't been explicitly set
+				// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+				// Use proper attribute retrieval(#12072)
+				var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+				if ( tabindex ) {
+					return parseInt( tabindex, 10 );
+				}
+
+				if (
+					rfocusable.test( elem.nodeName ) ||
+					rclickable.test( elem.nodeName ) &&
+					elem.href
+				) {
+					return 0;
+				}
+
+				return -1;
+			}
+		}
+	},
+
+	propFix: {
+		"for": "htmlFor",
+		"class": "className"
+	}
+} );
+
+// Support: IE <=11 only
+// Accessing the selectedIndex property
+// forces the browser to respect setting selected
+// on the option
+// The getter ensures a default option is selected
+// when in an optgroup
+// eslint rule "no-unused-expressions" is disabled for this code
+// since it considers such accessions noop
+if ( !support.optSelected ) {
+	jQuery.propHooks.selected = {
+		get: function( elem ) {
+
+			/* eslint no-unused-expressions: "off" */
+
+			var parent = elem.parentNode;
+			if ( parent && parent.parentNode ) {
+				parent.parentNode.selectedIndex;
+			}
+			return null;
+		},
+		set: function( elem ) {
+
+			/* eslint no-unused-expressions: "off" */
+
+			var parent = elem.parentNode;
+			if ( parent ) {
+				parent.selectedIndex;
+
+				if ( parent.parentNode ) {
+					parent.parentNode.selectedIndex;
+				}
+			}
+		}
+	};
+}
+
+jQuery.each( [
+	"tabIndex",
+	"readOnly",
+	"maxLength",
+	"cellSpacing",
+	"cellPadding",
+	"rowSpan",
+	"colSpan",
+	"useMap",
+	"frameBorder",
+	"contentEditable"
+], function() {
+	jQuery.propFix[ this.toLowerCase() ] = this;
+} );
+
+
+
+
+	// Strip and collapse whitespace according to HTML spec
+	// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
+	function stripAndCollapse( value ) {
+		var tokens = value.match( rnothtmlwhite ) || [];
+		return tokens.join( " " );
+	}
+
+
+function getClass( elem ) {
+	return elem.getAttribute && elem.getAttribute( "class" ) || "";
+}
+
+function classesToArray( value ) {
+	if ( Array.isArray( value ) ) {
+		return value;
+	}
+	if ( typeof value === "string" ) {
+		return value.match( rnothtmlwhite ) || [];
+	}
+	return [];
+}
+
+jQuery.fn.extend( {
+	addClass: function( value ) {
+		var classes, elem, cur, curValue, clazz, j, finalValue,
+			i = 0;
+
+		if ( isFunction( value ) ) {
+			return this.each( function( j ) {
+				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
+			} );
+		}
+
+		classes = classesToArray( value );
+
+		if ( classes.length ) {
+			while ( ( elem = this[ i++ ] ) ) {
+				curValue = getClass( elem );
+				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+				if ( cur ) {
+					j = 0;
+					while ( ( clazz = classes[ j++ ] ) ) {
+						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+							cur += clazz + " ";
+						}
+					}
+
+					// Only assign if different to avoid unneeded rendering.
+					finalValue = stripAndCollapse( cur );
+					if ( curValue !== finalValue ) {
+						elem.setAttribute( "class", finalValue );
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	removeClass: function( value ) {
+		var classes, elem, cur, curValue, clazz, j, finalValue,
+			i = 0;
+
+		if ( isFunction( value ) ) {
+			return this.each( function( j ) {
+				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
+			} );
+		}
+
+		if ( !arguments.length ) {
+			return this.attr( "class", "" );
+		}
+
+		classes = classesToArray( value );
+
+		if ( classes.length ) {
+			while ( ( elem = this[ i++ ] ) ) {
+				curValue = getClass( elem );
+
+				// This expression is here for better compressibility (see addClass)
+				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+				if ( cur ) {
+					j = 0;
+					while ( ( clazz = classes[ j++ ] ) ) {
+
+						// Remove *all* instances
+						while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
+							cur = cur.replace( " " + clazz + " ", " " );
+						}
+					}
+
+					// Only assign if different to avoid unneeded rendering.
+					finalValue = stripAndCollapse( cur );
+					if ( curValue !== finalValue ) {
+						elem.setAttribute( "class", finalValue );
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	toggleClass: function( value, stateVal ) {
+		var type = typeof value,
+			isValidValue = type === "string" || Array.isArray( value );
+
+		if ( typeof stateVal === "boolean" && isValidValue ) {
+			return stateVal ? this.addClass( value ) : this.removeClass( value );
+		}
+
+		if ( isFunction( value ) ) {
+			return this.each( function( i ) {
+				jQuery( this ).toggleClass(
+					value.call( this, i, getClass( this ), stateVal ),
+					stateVal
+				);
+			} );
+		}
+
+		return this.each( function() {
+			var className, i, self, classNames;
+
+			if ( isValidValue ) {
+
+				// Toggle individual class names
+				i = 0;
+				self = jQuery( this );
+				classNames = classesToArray( value );
+
+				while ( ( className = classNames[ i++ ] ) ) {
+
+					// Check each className given, space separated list
+					if ( self.hasClass( className ) ) {
+						self.removeClass( className );
+					} else {
+						self.addClass( className );
+					}
+				}
+
+			// Toggle whole class name
+			} else if ( value === undefined || type === "boolean" ) {
+				className = getClass( this );
+				if ( className ) {
+
+					// Store className if set
+					dataPriv.set( this, "__className__", className );
+				}
+
+				// If the element has a class name or if we're passed `false`,
+				// then remove the whole classname (if there was one, the above saved it).
+				// Otherwise bring back whatever was previously saved (if anything),
+				// falling back to the empty string if nothing was stored.
+				if ( this.setAttribute ) {
+					this.setAttribute( "class",
+						className || value === false ?
+						"" :
+						dataPriv.get( this, "__className__" ) || ""
+					);
+				}
+			}
+		} );
+	},
+
+	hasClass: function( selector ) {
+		var className, elem,
+			i = 0;
+
+		className = " " + selector + " ";
+		while ( ( elem = this[ i++ ] ) ) {
+			if ( elem.nodeType === 1 &&
+				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
+					return true;
+			}
+		}
+
+		return false;
+	}
+} );
+
+
+
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend( {
+	val: function( value ) {
+		var hooks, ret, valueIsFunction,
+			elem = this[ 0 ];
+
+		if ( !arguments.length ) {
+			if ( elem ) {
+				hooks = jQuery.valHooks[ elem.type ] ||
+					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+				if ( hooks &&
+					"get" in hooks &&
+					( ret = hooks.get( elem, "value" ) ) !== undefined
+				) {
+					return ret;
+				}
+
+				ret = elem.value;
+
+				// Handle most common string cases
+				if ( typeof ret === "string" ) {
+					return ret.replace( rreturn, "" );
+				}
+
+				// Handle cases where value is null/undef or number
+				return ret == null ? "" : ret;
+			}
+
+			return;
+		}
+
+		valueIsFunction = isFunction( value );
+
+		return this.each( function( i ) {
+			var val;
+
+			if ( this.nodeType !== 1 ) {
+				return;
+			}
+
+			if ( valueIsFunction ) {
+				val = value.call( this, i, jQuery( this ).val() );
+			} else {
+				val = value;
+			}
+
+			// Treat null/undefined as ""; convert numbers to string
+			if ( val == null ) {
+				val = "";
+
+			} else if ( typeof val === "number" ) {
+				val += "";
+
+			} else if ( Array.isArray( val ) ) {
+				val = jQuery.map( val, function( value ) {
+					return value == null ? "" : value + "";
+				} );
+			}
+
+			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+			// If set returns undefined, fall back to normal setting
+			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
+				this.value = val;
+			}
+		} );
+	}
+} );
+
+jQuery.extend( {
+	valHooks: {
+		option: {
+			get: function( elem ) {
+
+				var val = jQuery.find.attr( elem, "value" );
+				return val != null ?
+					val :
+
+					// Support: IE <=10 - 11 only
+					// option.text throws exceptions (#14686, #14858)
+					// Strip and collapse whitespace
+					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
+					stripAndCollapse( jQuery.text( elem ) );
+			}
+		},
+		select: {
+			get: function( elem ) {
+				var value, option, i,
+					options = elem.options,
+					index = elem.selectedIndex,
+					one = elem.type === "select-one",
+					values = one ? null : [],
+					max = one ? index + 1 : options.length;
+
+				if ( index < 0 ) {
+					i = max;
+
+				} else {
+					i = one ? index : 0;
+				}
+
+				// Loop through all the selected options
+				for ( ; i < max; i++ ) {
+					option = options[ i ];
+
+					// Support: IE <=9 only
+					// IE8-9 doesn't update selected after form reset (#2551)
+					if ( ( option.selected || i === index ) &&
+
+							// Don't return options that are disabled or in a disabled optgroup
+							!option.disabled &&
+							( !option.parentNode.disabled ||
+								!nodeName( option.parentNode, "optgroup" ) ) ) {
+
+						// Get the specific value for the option
+						value = jQuery( option ).val();
+
+						// We don't need an array for one selects
+						if ( one ) {
+							return value;
+						}
+
+						// Multi-Selects return an array
+						values.push( value );
+					}
+				}
+
+				return values;
+			},
+
+			set: function( elem, value ) {
+				var optionSet, option,
+					options = elem.options,
+					values = jQuery.makeArray( value ),
+					i = options.length;
+
+				while ( i-- ) {
+					option = options[ i ];
+
+					/* eslint-disable no-cond-assign */
+
+					if ( option.selected =
+						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
+					) {
+						optionSet = true;
+					}
+
+					/* eslint-enable no-cond-assign */
+				}
+
+				// Force browsers to behave consistently when non-matching value is set
+				if ( !optionSet ) {
+					elem.selectedIndex = -1;
+				}
+				return values;
+			}
+		}
+	}
+} );
+
+// Radios and checkboxes getter/setter
+jQuery.each( [ "radio", "checkbox" ], function() {
+	jQuery.valHooks[ this ] = {
+		set: function( elem, value ) {
+			if ( Array.isArray( value ) ) {
+				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
+			}
+		}
+	};
+	if ( !support.checkOn ) {
+		jQuery.valHooks[ this ].get = function( elem ) {
+			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
+		};
+	}
+} );
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+support.focusin = "onfocusin" in window;
+
+
+var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+	stopPropagationCallback = function( e ) {
+		e.stopPropagation();
+	};
+
+jQuery.extend( jQuery.event, {
+
+	trigger: function( event, data, elem, onlyHandlers ) {
+
+		var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
+			eventPath = [ elem || document ],
+			type = hasOwn.call( event, "type" ) ? event.type : event,
+			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
+
+		cur = lastElement = tmp = elem = elem || document;
+
+		// Don't do events on text and comment nodes
+		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+			return;
+		}
+
+		// focus/blur morphs to focusin/out; ensure we're not firing them right now
+		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+			return;
+		}
+
+		if ( type.indexOf( "." ) > -1 ) {
+
+			// Namespaced trigger; create a regexp to match event type in handle()
+			namespaces = type.split( "." );
+			type = namespaces.shift();
+			namespaces.sort();
+		}
+		ontype = type.indexOf( ":" ) < 0 && "on" + type;
+
+		// Caller can pass in a jQuery.Event object, Object, or just an event type string
+		event = event[ jQuery.expando ] ?
+			event :
+			new jQuery.Event( type, typeof event === "object" && event );
+
+		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+		event.isTrigger = onlyHandlers ? 2 : 3;
+		event.namespace = namespaces.join( "." );
+		event.rnamespace = event.namespace ?
+			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
+			null;
+
+		// Clean up the event in case it is being reused
+		event.result = undefined;
+		if ( !event.target ) {
+			event.target = elem;
+		}
+
+		// Clone any incoming data and prepend the event, creating the handler arg list
+		data = data == null ?
+			[ event ] :
+			jQuery.makeArray( data, [ event ] );
+
+		// Allow special events to draw outside the lines
+		special = jQuery.event.special[ type ] || {};
+		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+			return;
+		}
+
+		// Determine event propagation path in advance, per W3C events spec (#9951)
+		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+		if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
+
+			bubbleType = special.delegateType || type;
+			if ( !rfocusMorph.test( bubbleType + type ) ) {
+				cur = cur.parentNode;
+			}
+			for ( ; cur; cur = cur.parentNode ) {
+				eventPath.push( cur );
+				tmp = cur;
+			}
+
+			// Only add window if we got to document (e.g., not plain obj or detached DOM)
+			if ( tmp === ( elem.ownerDocument || document ) ) {
+				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+			}
+		}
+
+		// Fire handlers on the event path
+		i = 0;
+		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
+			lastElement = cur;
+			event.type = i > 1 ?
+				bubbleType :
+				special.bindType || type;
+
+			// jQuery handler
+			handle = (
+					dataPriv.get( cur, "events" ) || Object.create( null )
+				)[ event.type ] &&
+				dataPriv.get( cur, "handle" );
+			if ( handle ) {
+				handle.apply( cur, data );
+			}
+
+			// Native handler
+			handle = ontype && cur[ ontype ];
+			if ( handle && handle.apply && acceptData( cur ) ) {
+				event.result = handle.apply( cur, data );
+				if ( event.result === false ) {
+					event.preventDefault();
+				}
+			}
+		}
+		event.type = type;
+
+		// If nobody prevented the default action, do it now
+		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+			if ( ( !special._default ||
+				special._default.apply( eventPath.pop(), data ) === false ) &&
+				acceptData( elem ) ) {
+
+				// Call a native DOM method on the target with the same name as the event.
+				// Don't do default actions on window, that's where global variables be (#6170)
+				if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
+
+					// Don't re-trigger an onFOO event when we call its FOO() method
+					tmp = elem[ ontype ];
+
+					if ( tmp ) {
+						elem[ ontype ] = null;
+					}
+
+					// Prevent re-triggering of the same event, since we already bubbled it above
+					jQuery.event.triggered = type;
+
+					if ( event.isPropagationStopped() ) {
+						lastElement.addEventListener( type, stopPropagationCallback );
+					}
+
+					elem[ type ]();
+
+					if ( event.isPropagationStopped() ) {
+						lastElement.removeEventListener( type, stopPropagationCallback );
+					}
+
+					jQuery.event.triggered = undefined;
+
+					if ( tmp ) {
+						elem[ ontype ] = tmp;
+					}
+				}
+			}
+		}
+
+		return event.result;
+	},
+
+	// Piggyback on a donor event to simulate a different one
+	// Used only for `focus(in | out)` events
+	simulate: function( type, elem, event ) {
+		var e = jQuery.extend(
+			new jQuery.Event(),
+			event,
+			{
+				type: type,
+				isSimulated: true
+			}
+		);
+
+		jQuery.event.trigger( e, null, elem );
+	}
+
+} );
+
+jQuery.fn.extend( {
+
+	trigger: function( type, data ) {
+		return this.each( function() {
+			jQuery.event.trigger( type, data, this );
+		} );
+	},
+	triggerHandler: function( type, data ) {
+		var elem = this[ 0 ];
+		if ( elem ) {
+			return jQuery.event.trigger( type, data, elem, true );
+		}
+	}
+} );
+
+
+// Support: Firefox <=44
+// Firefox doesn't have focus(in | out) events
+// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+//
+// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
+// focus(in | out) events fire after focus & blur events,
+// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
+// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
+if ( !support.focusin ) {
+	jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+		// Attach a single capturing handler on the document while someone wants focusin/focusout
+		var handler = function( event ) {
+			jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
+		};
+
+		jQuery.event.special[ fix ] = {
+			setup: function() {
+
+				// Handle: regular nodes (via `this.ownerDocument`), window
+				// (via `this.document`) & document (via `this`).
+				var doc = this.ownerDocument || this.document || this,
+					attaches = dataPriv.access( doc, fix );
+
+				if ( !attaches ) {
+					doc.addEventListener( orig, handler, true );
+				}
+				dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
+			},
+			teardown: function() {
+				var doc = this.ownerDocument || this.document || this,
+					attaches = dataPriv.access( doc, fix ) - 1;
+
+				if ( !attaches ) {
+					doc.removeEventListener( orig, handler, true );
+					dataPriv.remove( doc, fix );
+
+				} else {
+					dataPriv.access( doc, fix, attaches );
+				}
+			}
+		};
+	} );
+}
+var location = window.location;
+
+var nonce = { guid: Date.now() };
+
+var rquery = ( /\?/ );
+
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+	var xml;
+	if ( !data || typeof data !== "string" ) {
+		return null;
+	}
+
+	// Support: IE 9 - 11 only
+	// IE throws on parseFromString with invalid input.
+	try {
+		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
+	} catch ( e ) {
+		xml = undefined;
+	}
+
+	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+		jQuery.error( "Invalid XML: " + data );
+	}
+	return xml;
+};
+
+
+var
+	rbracket = /\[\]$/,
+	rCRLF = /\r?\n/g,
+	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+	rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+	var name;
+
+	if ( Array.isArray( obj ) ) {
+
+		// Serialize array item.
+		jQuery.each( obj, function( i, v ) {
+			if ( traditional || rbracket.test( prefix ) ) {
+
+				// Treat each array item as a scalar.
+				add( prefix, v );
+
+			} else {
+
+				// Item is non-scalar (array or object), encode its numeric index.
+				buildParams(
+					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
+					v,
+					traditional,
+					add
+				);
+			}
+		} );
+
+	} else if ( !traditional && toType( obj ) === "object" ) {
+
+		// Serialize object item.
+		for ( name in obj ) {
+			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+		}
+
+	} else {
+
+		// Serialize scalar item.
+		add( prefix, obj );
+	}
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+	var prefix,
+		s = [],
+		add = function( key, valueOrFunction ) {
+
+			// If value is a function, invoke it and use its return value
+			var value = isFunction( valueOrFunction ) ?
+				valueOrFunction() :
+				valueOrFunction;
+
+			s[ s.length ] = encodeURIComponent( key ) + "=" +
+				encodeURIComponent( value == null ? "" : value );
+		};
+
+	if ( a == null ) {
+		return "";
+	}
+
+	// If an array was passed in, assume that it is an array of form elements.
+	if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+
+		// Serialize the form elements
+		jQuery.each( a, function() {
+			add( this.name, this.value );
+		} );
+
+	} else {
+
+		// If traditional, encode the "old" way (the way 1.3.2 or older
+		// did it), otherwise encode params recursively.
+		for ( prefix in a ) {
+			buildParams( prefix, a[ prefix ], traditional, add );
+		}
+	}
+
+	// Return the resulting serialization
+	return s.join( "&" );
+};
+
+jQuery.fn.extend( {
+	serialize: function() {
+		return jQuery.param( this.serializeArray() );
+	},
+	serializeArray: function() {
+		return this.map( function() {
+
+			// Can add propHook for "elements" to filter or add form elements
+			var elements = jQuery.prop( this, "elements" );
+			return elements ? jQuery.makeArray( elements ) : this;
+		} )
+		.filter( function() {
+			var type = this.type;
+
+			// Use .is( ":disabled" ) so that fieldset[disabled] works
+			return this.name && !jQuery( this ).is( ":disabled" ) &&
+				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+				( this.checked || !rcheckableType.test( type ) );
+		} )
+		.map( function( _i, elem ) {
+			var val = jQuery( this ).val();
+
+			if ( val == null ) {
+				return null;
+			}
+
+			if ( Array.isArray( val ) ) {
+				return jQuery.map( val, function( val ) {
+					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+				} );
+			}
+
+			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+		} ).get();
+	}
+} );
+
+
+var
+	r20 = /%20/g,
+	rhash = /#.*$/,
+	rantiCache = /([?&])_=[^&]*/,
+	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+
+	// #7653, #8125, #8152: local protocol detection
+	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+	rnoContent = /^(?:GET|HEAD)$/,
+	rprotocol = /^\/\//,
+
+	/* Prefilters
+	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+	 * 2) These are called:
+	 *    - BEFORE asking for a transport
+	 *    - AFTER param serialization (s.data is a string if s.processData is true)
+	 * 3) key is the dataType
+	 * 4) the catchall symbol "*" can be used
+	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+	 */
+	prefilters = {},
+
+	/* Transports bindings
+	 * 1) key is the dataType
+	 * 2) the catchall symbol "*" can be used
+	 * 3) selection will start with transport dataType and THEN go to "*" if needed
+	 */
+	transports = {},
+
+	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+	allTypes = "*/".concat( "*" ),
+
+	// Anchor tag for parsing the document origin
+	originAnchor = document.createElement( "a" );
+	originAnchor.href = location.href;
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+	// dataTypeExpression is optional and defaults to "*"
+	return function( dataTypeExpression, func ) {
+
+		if ( typeof dataTypeExpression !== "string" ) {
+			func = dataTypeExpression;
+			dataTypeExpression = "*";
+		}
+
+		var dataType,
+			i = 0,
+			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
+
+		if ( isFunction( func ) ) {
+
+			// For each dataType in the dataTypeExpression
+			while ( ( dataType = dataTypes[ i++ ] ) ) {
+
+				// Prepend if requested
+				if ( dataType[ 0 ] === "+" ) {
+					dataType = dataType.slice( 1 ) || "*";
+					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
+
+				// Otherwise append
+				} else {
+					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
+				}
+			}
+		}
+	};
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+	var inspected = {},
+		seekingTransport = ( structure === transports );
+
+	function inspect( dataType ) {
+		var selected;
+		inspected[ dataType ] = true;
+		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+			if ( typeof dataTypeOrTransport === "string" &&
+				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+
+				options.dataTypes.unshift( dataTypeOrTransport );
+				inspect( dataTypeOrTransport );
+				return false;
+			} else if ( seekingTransport ) {
+				return !( selected = dataTypeOrTransport );
+			}
+		} );
+		return selected;
+	}
+
+	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+	var key, deep,
+		flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+	for ( key in src ) {
+		if ( src[ key ] !== undefined ) {
+			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+		}
+	}
+	if ( deep ) {
+		jQuery.extend( true, target, deep );
+	}
+
+	return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+	var ct, type, finalDataType, firstDataType,
+		contents = s.contents,
+		dataTypes = s.dataTypes;
+
+	// Remove auto dataType and get content-type in the process
+	while ( dataTypes[ 0 ] === "*" ) {
+		dataTypes.shift();
+		if ( ct === undefined ) {
+			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
+		}
+	}
+
+	// Check if we're dealing with a known content-type
+	if ( ct ) {
+		for ( type in contents ) {
+			if ( contents[ type ] && contents[ type ].test( ct ) ) {
+				dataTypes.unshift( type );
+				break;
+			}
+		}
+	}
+
+	// Check to see if we have a response for the expected dataType
+	if ( dataTypes[ 0 ] in responses ) {
+		finalDataType = dataTypes[ 0 ];
+	} else {
+
+		// Try convertible dataTypes
+		for ( type in responses ) {
+			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
+				finalDataType = type;
+				break;
+			}
+			if ( !firstDataType ) {
+				firstDataType = type;
+			}
+		}
+
+		// Or just use first one
+		finalDataType = finalDataType || firstDataType;
+	}
+
+	// If we found a dataType
+	// We add the dataType to the list if needed
+	// and return the corresponding response
+	if ( finalDataType ) {
+		if ( finalDataType !== dataTypes[ 0 ] ) {
+			dataTypes.unshift( finalDataType );
+		}
+		return responses[ finalDataType ];
+	}
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+	var conv2, current, conv, tmp, prev,
+		converters = {},
+
+		// Work with a copy of dataTypes in case we need to modify it for conversion
+		dataTypes = s.dataTypes.slice();
+
+	// Create converters map with lowercased keys
+	if ( dataTypes[ 1 ] ) {
+		for ( conv in s.converters ) {
+			converters[ conv.toLowerCase() ] = s.converters[ conv ];
+		}
+	}
+
+	current = dataTypes.shift();
+
+	// Convert to each sequential dataType
+	while ( current ) {
+
+		if ( s.responseFields[ current ] ) {
+			jqXHR[ s.responseFields[ current ] ] = response;
+		}
+
+		// Apply the dataFilter if provided
+		if ( !prev && isSuccess && s.dataFilter ) {
+			response = s.dataFilter( response, s.dataType );
+		}
+
+		prev = current;
+		current = dataTypes.shift();
+
+		if ( current ) {
+
+			// There's only work to do if current dataType is non-auto
+			if ( current === "*" ) {
+
+				current = prev;
+
+			// Convert response if prev dataType is non-auto and differs from current
+			} else if ( prev !== "*" && prev !== current ) {
+
+				// Seek a direct converter
+				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+				// If none found, seek a pair
+				if ( !conv ) {
+					for ( conv2 in converters ) {
+
+						// If conv2 outputs current
+						tmp = conv2.split( " " );
+						if ( tmp[ 1 ] === current ) {
+
+							// If prev can be converted to accepted input
+							conv = converters[ prev + " " + tmp[ 0 ] ] ||
+								converters[ "* " + tmp[ 0 ] ];
+							if ( conv ) {
+
+								// Condense equivalence converters
+								if ( conv === true ) {
+									conv = converters[ conv2 ];
+
+								// Otherwise, insert the intermediate dataType
+								} else if ( converters[ conv2 ] !== true ) {
+									current = tmp[ 0 ];
+									dataTypes.unshift( tmp[ 1 ] );
+								}
+								break;
+							}
+						}
+					}
+				}
+
+				// Apply converter (if not an equivalence)
+				if ( conv !== true ) {
+
+					// Unless errors are allowed to bubble, catch and return them
+					if ( conv && s.throws ) {
+						response = conv( response );
+					} else {
+						try {
+							response = conv( response );
+						} catch ( e ) {
+							return {
+								state: "parsererror",
+								error: conv ? e : "No conversion from " + prev + " to " + current
+							};
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return { state: "success", data: response };
+}
+
+jQuery.extend( {
+
+	// Counter for holding the number of active queries
+	active: 0,
+
+	// Last-Modified header cache for next request
+	lastModified: {},
+	etag: {},
+
+	ajaxSettings: {
+		url: location.href,
+		type: "GET",
+		isLocal: rlocalProtocol.test( location.protocol ),
+		global: true,
+		processData: true,
+		async: true,
+		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+
+		/*
+		timeout: 0,
+		data: null,
+		dataType: null,
+		username: null,
+		password: null,
+		cache: null,
+		throws: false,
+		traditional: false,
+		headers: {},
+		*/
+
+		accepts: {
+			"*": allTypes,
+			text: "text/plain",
+			html: "text/html",
+			xml: "application/xml, text/xml",
+			json: "application/json, text/javascript"
+		},
+
+		contents: {
+			xml: /\bxml\b/,
+			html: /\bhtml/,
+			json: /\bjson\b/
+		},
+
+		responseFields: {
+			xml: "responseXML",
+			text: "responseText",
+			json: "responseJSON"
+		},
+
+		// Data converters
+		// Keys separate source (or catchall "*") and destination types with a single space
+		converters: {
+
+			// Convert anything to text
+			"* text": String,
+
+			// Text to html (true = no transformation)
+			"text html": true,
+
+			// Evaluate text as a json expression
+			"text json": JSON.parse,
+
+			// Parse text as xml
+			"text xml": jQuery.parseXML
+		},
+
+		// For options that shouldn't be deep extended:
+		// you can add your own custom options here if
+		// and when you create one that shouldn't be
+		// deep extended (see ajaxExtend)
+		flatOptions: {
+			url: true,
+			context: true
+		}
+	},
+
+	// Creates a full fledged settings object into target
+	// with both ajaxSettings and settings fields.
+	// If target is omitted, writes into ajaxSettings.
+	ajaxSetup: function( target, settings ) {
+		return settings ?
+
+			// Building a settings object
+			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+			// Extending ajaxSettings
+			ajaxExtend( jQuery.ajaxSettings, target );
+	},
+
+	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+	ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+	// Main method
+	ajax: function( url, options ) {
+
+		// If url is an object, simulate pre-1.5 signature
+		if ( typeof url === "object" ) {
+			options = url;
+			url = undefined;
+		}
+
+		// Force options to be an object
+		options = options || {};
+
+		var transport,
+
+			// URL without anti-cache param
+			cacheURL,
+
+			// Response headers
+			responseHeadersString,
+			responseHeaders,
+
+			// timeout handle
+			timeoutTimer,
+
+			// Url cleanup var
+			urlAnchor,
+
+			// Request state (becomes false upon send and true upon completion)
+			completed,
+
+			// To know if global events are to be dispatched
+			fireGlobals,
+
+			// Loop variable
+			i,
+
+			// uncached part of the url
+			uncached,
+
+			// Create the final options object
+			s = jQuery.ajaxSetup( {}, options ),
+
+			// Callbacks context
+			callbackContext = s.context || s,
+
+			// Context for global events is callbackContext if it is a DOM node or jQuery collection
+			globalEventContext = s.context &&
+				( callbackContext.nodeType || callbackContext.jquery ) ?
+					jQuery( callbackContext ) :
+					jQuery.event,
+
+			// Deferreds
+			deferred = jQuery.Deferred(),
+			completeDeferred = jQuery.Callbacks( "once memory" ),
+
+			// Status-dependent callbacks
+			statusCode = s.statusCode || {},
+
+			// Headers (they are sent all at once)
+			requestHeaders = {},
+			requestHeadersNames = {},
+
+			// Default abort message
+			strAbort = "canceled",
+
+			// Fake xhr
+			jqXHR = {
+				readyState: 0,
+
+				// Builds headers hashtable if needed
+				getResponseHeader: function( key ) {
+					var match;
+					if ( completed ) {
+						if ( !responseHeaders ) {
+							responseHeaders = {};
+							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
+								responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
+									( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
+										.concat( match[ 2 ] );
+							}
+						}
+						match = responseHeaders[ key.toLowerCase() + " " ];
+					}
+					return match == null ? null : match.join( ", " );
+				},
+
+				// Raw string
+				getAllResponseHeaders: function() {
+					return completed ? responseHeadersString : null;
+				},
+
+				// Caches the header
+				setRequestHeader: function( name, value ) {
+					if ( completed == null ) {
+						name = requestHeadersNames[ name.toLowerCase() ] =
+							requestHeadersNames[ name.toLowerCase() ] || name;
+						requestHeaders[ name ] = value;
+					}
+					return this;
+				},
+
+				// Overrides response content-type header
+				overrideMimeType: function( type ) {
+					if ( completed == null ) {
+						s.mimeType = type;
+					}
+					return this;
+				},
+
+				// Status-dependent callbacks
+				statusCode: function( map ) {
+					var code;
+					if ( map ) {
+						if ( completed ) {
+
+							// Execute the appropriate callbacks
+							jqXHR.always( map[ jqXHR.status ] );
+						} else {
+
+							// Lazy-add the new callbacks in a way that preserves old ones
+							for ( code in map ) {
+								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+							}
+						}
+					}
+					return this;
+				},
+
+				// Cancel the request
+				abort: function( statusText ) {
+					var finalText = statusText || strAbort;
+					if ( transport ) {
+						transport.abort( finalText );
+					}
+					done( 0, finalText );
+					return this;
+				}
+			};
+
+		// Attach deferreds
+		deferred.promise( jqXHR );
+
+		// Add protocol if not provided (prefilters might expect it)
+		// Handle falsy url in the settings object (#10093: consistency with old signature)
+		// We also use the url parameter if available
+		s.url = ( ( url || s.url || location.href ) + "" )
+			.replace( rprotocol, location.protocol + "//" );
+
+		// Alias method option to type as per ticket #12004
+		s.type = options.method || options.type || s.method || s.type;
+
+		// Extract dataTypes list
+		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
+
+		// A cross-domain request is in order when the origin doesn't match the current origin.
+		if ( s.crossDomain == null ) {
+			urlAnchor = document.createElement( "a" );
+
+			// Support: IE <=8 - 11, Edge 12 - 15
+			// IE throws exception on accessing the href property if url is malformed,
+			// e.g. http://example.com:80x/
+			try {
+				urlAnchor.href = s.url;
+
+				// Support: IE <=8 - 11 only
+				// Anchor's host property isn't correctly set when s.url is relative
+				urlAnchor.href = urlAnchor.href;
+				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
+					urlAnchor.protocol + "//" + urlAnchor.host;
+			} catch ( e ) {
+
+				// If there is an error parsing the URL, assume it is crossDomain,
+				// it can be rejected by the transport if it is invalid
+				s.crossDomain = true;
+			}
+		}
+
+		// Convert data if not already a string
+		if ( s.data && s.processData && typeof s.data !== "string" ) {
+			s.data = jQuery.param( s.data, s.traditional );
+		}
+
+		// Apply prefilters
+		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+		// If request was aborted inside a prefilter, stop there
+		if ( completed ) {
+			return jqXHR;
+		}
+
+		// We can fire global events as of now if asked to
+		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+		fireGlobals = jQuery.event && s.global;
+
+		// Watch for a new set of requests
+		if ( fireGlobals && jQuery.active++ === 0 ) {
+			jQuery.event.trigger( "ajaxStart" );
+		}
+
+		// Uppercase the type
+		s.type = s.type.toUpperCase();
+
+		// Determine if request has content
+		s.hasContent = !rnoContent.test( s.type );
+
+		// Save the URL in case we're toying with the If-Modified-Since
+		// and/or If-None-Match header later on
+		// Remove hash to simplify url manipulation
+		cacheURL = s.url.replace( rhash, "" );
+
+		// More options handling for requests with no content
+		if ( !s.hasContent ) {
+
+			// Remember the hash so we can put it back
+			uncached = s.url.slice( cacheURL.length );
+
+			// If data is available and should be processed, append data to url
+			if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
+				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
+
+				// #9682: remove data so that it's not used in an eventual retry
+				delete s.data;
+			}
+
+			// Add or update anti-cache param if needed
+			if ( s.cache === false ) {
+				cacheURL = cacheURL.replace( rantiCache, "$1" );
+				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) +
+					uncached;
+			}
+
+			// Put hash and anti-cache on the URL that will be requested (gh-1732)
+			s.url = cacheURL + uncached;
+
+		// Change '%20' to '+' if this is encoded form body content (gh-2658)
+		} else if ( s.data && s.processData &&
+			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
+			s.data = s.data.replace( r20, "+" );
+		}
+
+		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+		if ( s.ifModified ) {
+			if ( jQuery.lastModified[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+			}
+			if ( jQuery.etag[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+			}
+		}
+
+		// Set the correct header, if data is being sent
+		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+			jqXHR.setRequestHeader( "Content-Type", s.contentType );
+		}
+
+		// Set the Accepts header for the server, depending on the dataType
+		jqXHR.setRequestHeader(
+			"Accept",
+			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
+				s.accepts[ s.dataTypes[ 0 ] ] +
+					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+				s.accepts[ "*" ]
+		);
+
+		// Check for headers option
+		for ( i in s.headers ) {
+			jqXHR.setRequestHeader( i, s.headers[ i ] );
+		}
+
+		// Allow custom headers/mimetypes and early abort
+		if ( s.beforeSend &&
+			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
+
+			// Abort if not done already and return
+			return jqXHR.abort();
+		}
+
+		// Aborting is no longer a cancellation
+		strAbort = "abort";
+
+		// Install callbacks on deferreds
+		completeDeferred.add( s.complete );
+		jqXHR.done( s.success );
+		jqXHR.fail( s.error );
+
+		// Get transport
+		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+		// If no transport, we auto-abort
+		if ( !transport ) {
+			done( -1, "No Transport" );
+		} else {
+			jqXHR.readyState = 1;
+
+			// Send global event
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+			}
+
+			// If request was aborted inside ajaxSend, stop there
+			if ( completed ) {
+				return jqXHR;
+			}
+
+			// Timeout
+			if ( s.async && s.timeout > 0 ) {
+				timeoutTimer = window.setTimeout( function() {
+					jqXHR.abort( "timeout" );
+				}, s.timeout );
+			}
+
+			try {
+				completed = false;
+				transport.send( requestHeaders, done );
+			} catch ( e ) {
+
+				// Rethrow post-completion exceptions
+				if ( completed ) {
+					throw e;
+				}
+
+				// Propagate others as results
+				done( -1, e );
+			}
+		}
+
+		// Callback for when everything is done
+		function done( status, nativeStatusText, responses, headers ) {
+			var isSuccess, success, error, response, modified,
+				statusText = nativeStatusText;
+
+			// Ignore repeat invocations
+			if ( completed ) {
+				return;
+			}
+
+			completed = true;
+
+			// Clear timeout if it exists
+			if ( timeoutTimer ) {
+				window.clearTimeout( timeoutTimer );
+			}
+
+			// Dereference transport for early garbage collection
+			// (no matter how long the jqXHR object will be used)
+			transport = undefined;
+
+			// Cache response headers
+			responseHeadersString = headers || "";
+
+			// Set readyState
+			jqXHR.readyState = status > 0 ? 4 : 0;
+
+			// Determine if successful
+			isSuccess = status >= 200 && status < 300 || status === 304;
+
+			// Get response data
+			if ( responses ) {
+				response = ajaxHandleResponses( s, jqXHR, responses );
+			}
+
+			// Use a noop converter for missing script
+			if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) {
+				s.converters[ "text script" ] = function() {};
+			}
+
+			// Convert no matter what (that way responseXXX fields are always set)
+			response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+			// If successful, handle type chaining
+			if ( isSuccess ) {
+
+				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+				if ( s.ifModified ) {
+					modified = jqXHR.getResponseHeader( "Last-Modified" );
+					if ( modified ) {
+						jQuery.lastModified[ cacheURL ] = modified;
+					}
+					modified = jqXHR.getResponseHeader( "etag" );
+					if ( modified ) {
+						jQuery.etag[ cacheURL ] = modified;
+					}
+				}
+
+				// if no content
+				if ( status === 204 || s.type === "HEAD" ) {
+					statusText = "nocontent";
+
+				// if not modified
+				} else if ( status === 304 ) {
+					statusText = "notmodified";
+
+				// If we have data, let's convert it
+				} else {
+					statusText = response.state;
+					success = response.data;
+					error = response.error;
+					isSuccess = !error;
+				}
+			} else {
+
+				// Extract error from statusText and normalize for non-aborts
+				error = statusText;
+				if ( status || !statusText ) {
+					statusText = "error";
+					if ( status < 0 ) {
+						status = 0;
+					}
+				}
+			}
+
+			// Set data for the fake xhr object
+			jqXHR.status = status;
+			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+			// Success/Error
+			if ( isSuccess ) {
+				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+			} else {
+				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+			}
+
+			// Status-dependent callbacks
+			jqXHR.statusCode( statusCode );
+			statusCode = undefined;
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+					[ jqXHR, s, isSuccess ? success : error ] );
+			}
+
+			// Complete
+			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+
+				// Handle the global AJAX counter
+				if ( !( --jQuery.active ) ) {
+					jQuery.event.trigger( "ajaxStop" );
+				}
+			}
+		}
+
+		return jqXHR;
+	},
+
+	getJSON: function( url, data, callback ) {
+		return jQuery.get( url, data, callback, "json" );
+	},
+
+	getScript: function( url, callback ) {
+		return jQuery.get( url, undefined, callback, "script" );
+	}
+} );
+
+jQuery.each( [ "get", "post" ], function( _i, method ) {
+	jQuery[ method ] = function( url, data, callback, type ) {
+
+		// Shift arguments if data argument was omitted
+		if ( isFunction( data ) ) {
+			type = type || callback;
+			callback = data;
+			data = undefined;
+		}
+
+		// The url can be an options object (which then must have .url)
+		return jQuery.ajax( jQuery.extend( {
+			url: url,
+			type: method,
+			dataType: type,
+			data: data,
+			success: callback
+		}, jQuery.isPlainObject( url ) && url ) );
+	};
+} );
+
+jQuery.ajaxPrefilter( function( s ) {
+	var i;
+	for ( i in s.headers ) {
+		if ( i.toLowerCase() === "content-type" ) {
+			s.contentType = s.headers[ i ] || "";
+		}
+	}
+} );
+
+
+jQuery._evalUrl = function( url, options, doc ) {
+	return jQuery.ajax( {
+		url: url,
+
+		// Make this explicit, since user can override this through ajaxSetup (#11264)
+		type: "GET",
+		dataType: "script",
+		cache: true,
+		async: false,
+		global: false,
+
+		// Only evaluate the response if it is successful (gh-4126)
+		// dataFilter is not invoked for failure responses, so using it instead
+		// of the default converter is kludgy but it works.
+		converters: {
+			"text script": function() {}
+		},
+		dataFilter: function( response ) {
+			jQuery.globalEval( response, options, doc );
+		}
+	} );
+};
+
+
+jQuery.fn.extend( {
+	wrapAll: function( html ) {
+		var wrap;
+
+		if ( this[ 0 ] ) {
+			if ( isFunction( html ) ) {
+				html = html.call( this[ 0 ] );
+			}
+
+			// The elements to wrap the target around
+			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+			if ( this[ 0 ].parentNode ) {
+				wrap.insertBefore( this[ 0 ] );
+			}
+
+			wrap.map( function() {
+				var elem = this;
+
+				while ( elem.firstElementChild ) {
+					elem = elem.firstElementChild;
+				}
+
+				return elem;
+			} ).append( this );
+		}
+
+		return this;
+	},
+
+	wrapInner: function( html ) {
+		if ( isFunction( html ) ) {
+			return this.each( function( i ) {
+				jQuery( this ).wrapInner( html.call( this, i ) );
+			} );
+		}
+
+		return this.each( function() {
+			var self = jQuery( this ),
+				contents = self.contents();
+
+			if ( contents.length ) {
+				contents.wrapAll( html );
+
+			} else {
+				self.append( html );
+			}
+		} );
+	},
+
+	wrap: function( html ) {
+		var htmlIsFunction = isFunction( html );
+
+		return this.each( function( i ) {
+			jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
+		} );
+	},
+
+	unwrap: function( selector ) {
+		this.parent( selector ).not( "body" ).each( function() {
+			jQuery( this ).replaceWith( this.childNodes );
+		} );
+		return this;
+	}
+} );
+
+
+jQuery.expr.pseudos.hidden = function( elem ) {
+	return !jQuery.expr.pseudos.visible( elem );
+};
+jQuery.expr.pseudos.visible = function( elem ) {
+	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
+};
+
+
+
+
+jQuery.ajaxSettings.xhr = function() {
+	try {
+		return new window.XMLHttpRequest();
+	} catch ( e ) {}
+};
+
+var xhrSuccessStatus = {
+
+		// File protocol always yields status code 0, assume 200
+		0: 200,
+
+		// Support: IE <=9 only
+		// #1450: sometimes IE returns 1223 when it should be 204
+		1223: 204
+	},
+	xhrSupported = jQuery.ajaxSettings.xhr();
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport( function( options ) {
+	var callback, errorCallback;
+
+	// Cross domain only allowed if supported through XMLHttpRequest
+	if ( support.cors || xhrSupported && !options.crossDomain ) {
+		return {
+			send: function( headers, complete ) {
+				var i,
+					xhr = options.xhr();
+
+				xhr.open(
+					options.type,
+					options.url,
+					options.async,
+					options.username,
+					options.password
+				);
+
+				// Apply custom fields if provided
+				if ( options.xhrFields ) {
+					for ( i in options.xhrFields ) {
+						xhr[ i ] = options.xhrFields[ i ];
+					}
+				}
+
+				// Override mime type if needed
+				if ( options.mimeType && xhr.overrideMimeType ) {
+					xhr.overrideMimeType( options.mimeType );
+				}
+
+				// X-Requested-With header
+				// For cross-domain requests, seeing as conditions for a preflight are
+				// akin to a jigsaw puzzle, we simply never set it to be sure.
+				// (it can always be set on a per-request basis or even using ajaxSetup)
+				// For same-domain requests, won't change header if already provided.
+				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
+					headers[ "X-Requested-With" ] = "XMLHttpRequest";
+				}
+
+				// Set headers
+				for ( i in headers ) {
+					xhr.setRequestHeader( i, headers[ i ] );
+				}
+
+				// Callback
+				callback = function( type ) {
+					return function() {
+						if ( callback ) {
+							callback = errorCallback = xhr.onload =
+								xhr.onerror = xhr.onabort = xhr.ontimeout =
+									xhr.onreadystatechange = null;
+
+							if ( type === "abort" ) {
+								xhr.abort();
+							} else if ( type === "error" ) {
+
+								// Support: IE <=9 only
+								// On a manual native abort, IE9 throws
+								// errors on any property access that is not readyState
+								if ( typeof xhr.status !== "number" ) {
+									complete( 0, "error" );
+								} else {
+									complete(
+
+										// File: protocol always yields status 0; see #8605, #14207
+										xhr.status,
+										xhr.statusText
+									);
+								}
+							} else {
+								complete(
+									xhrSuccessStatus[ xhr.status ] || xhr.status,
+									xhr.statusText,
+
+									// Support: IE <=9 only
+									// IE9 has no XHR2 but throws on binary (trac-11426)
+									// For XHR2 non-text, let the caller handle it (gh-2498)
+									( xhr.responseType || "text" ) !== "text"  ||
+									typeof xhr.responseText !== "string" ?
+										{ binary: xhr.response } :
+										{ text: xhr.responseText },
+									xhr.getAllResponseHeaders()
+								);
+							}
+						}
+					};
+				};
+
+				// Listen to events
+				xhr.onload = callback();
+				errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
+
+				// Support: IE 9 only
+				// Use onreadystatechange to replace onabort
+				// to handle uncaught aborts
+				if ( xhr.onabort !== undefined ) {
+					xhr.onabort = errorCallback;
+				} else {
+					xhr.onreadystatechange = function() {
+
+						// Check readyState before timeout as it changes
+						if ( xhr.readyState === 4 ) {
+
+							// Allow onerror to be called first,
+							// but that will not handle a native abort
+							// Also, save errorCallback to a variable
+							// as xhr.onerror cannot be accessed
+							window.setTimeout( function() {
+								if ( callback ) {
+									errorCallback();
+								}
+							} );
+						}
+					};
+				}
+
+				// Create the abort callback
+				callback = callback( "abort" );
+
+				try {
+
+					// Do send the request (this may raise an exception)
+					xhr.send( options.hasContent && options.data || null );
+				} catch ( e ) {
+
+					// #14683: Only rethrow if this hasn't been notified as an error yet
+					if ( callback ) {
+						throw e;
+					}
+				}
+			},
+
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+} );
+
+
+
+
+// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
+jQuery.ajaxPrefilter( function( s ) {
+	if ( s.crossDomain ) {
+		s.contents.script = false;
+	}
+} );
+
+// Install script dataType
+jQuery.ajaxSetup( {
+	accepts: {
+		script: "text/javascript, application/javascript, " +
+			"application/ecmascript, application/x-ecmascript"
+	},
+	contents: {
+		script: /\b(?:java|ecma)script\b/
+	},
+	converters: {
+		"text script": function( text ) {
+			jQuery.globalEval( text );
+			return text;
+		}
+	}
+} );
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+	if ( s.cache === undefined ) {
+		s.cache = false;
+	}
+	if ( s.crossDomain ) {
+		s.type = "GET";
+	}
+} );
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+
+	// This transport only deals with cross domain or forced-by-attrs requests
+	if ( s.crossDomain || s.scriptAttrs ) {
+		var script, callback;
+		return {
+			send: function( _, complete ) {
+				script = jQuery( "<script>" )
+					.attr( s.scriptAttrs || {} )
+					.prop( { charset: s.scriptCharset, src: s.url } )
+					.on( "load error", callback = function( evt ) {
+						script.remove();
+						callback = null;
+						if ( evt ) {
+							complete( evt.type === "error" ? 404 : 200, evt.type );
+						}
+					} );
+
+				// Use native DOM manipulation to avoid our domManip AJAX trickery
+				document.head.appendChild( script[ 0 ] );
+			},
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+} );
+
+
+
+
+var oldCallbacks = [],
+	rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup( {
+	jsonp: "callback",
+	jsonpCallback: function() {
+		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) );
+		this[ callback ] = true;
+		return callback;
+	}
+} );
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+	var callbackName, overwritten, responseContainer,
+		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+			"url" :
+			typeof s.data === "string" &&
+				( s.contentType || "" )
+					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
+				rjsonp.test( s.data ) && "data"
+		);
+
+	// Handle iff the expected data type is "jsonp" or we have a parameter to set
+	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+		// Get callback name, remembering preexisting value associated with it
+		callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
+			s.jsonpCallback() :
+			s.jsonpCallback;
+
+		// Insert callback into url or form data
+		if ( jsonProp ) {
+			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+		} else if ( s.jsonp !== false ) {
+			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+		}
+
+		// Use data converter to retrieve json after script execution
+		s.converters[ "script json" ] = function() {
+			if ( !responseContainer ) {
+				jQuery.error( callbackName + " was not called" );
+			}
+			return responseContainer[ 0 ];
+		};
+
+		// Force json dataType
+		s.dataTypes[ 0 ] = "json";
+
+		// Install callback
+		overwritten = window[ callbackName ];
+		window[ callbackName ] = function() {
+			responseContainer = arguments;
+		};
+
+		// Clean-up function (fires after converters)
+		jqXHR.always( function() {
+
+			// If previous value didn't exist - remove it
+			if ( overwritten === undefined ) {
+				jQuery( window ).removeProp( callbackName );
+
+			// Otherwise restore preexisting value
+			} else {
+				window[ callbackName ] = overwritten;
+			}
+
+			// Save back as free
+			if ( s[ callbackName ] ) {
+
+				// Make sure that re-using the options doesn't screw things around
+				s.jsonpCallback = originalSettings.jsonpCallback;
+
+				// Save the callback name for future use
+				oldCallbacks.push( callbackName );
+			}
+
+			// Call if it was a function and we have a response
+			if ( responseContainer && isFunction( overwritten ) ) {
+				overwritten( responseContainer[ 0 ] );
+			}
+
+			responseContainer = overwritten = undefined;
+		} );
+
+		// Delegate to script
+		return "script";
+	}
+} );
+
+
+
+
+// Support: Safari 8 only
+// In Safari 8 documents created via document.implementation.createHTMLDocument
+// collapse sibling forms: the second one becomes a child of the first one.
+// Because of that, this security measure has to be disabled in Safari 8.
+// https://bugs.webkit.org/show_bug.cgi?id=137337
+support.createHTMLDocument = ( function() {
+	var body = document.implementation.createHTMLDocument( "" ).body;
+	body.innerHTML = "<form></form><form></form>";
+	return body.childNodes.length === 2;
+} )();
+
+
+// Argument "data" should be string of html
+// context (optional): If specified, the fragment will be created in this context,
+// defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+	if ( typeof data !== "string" ) {
+		return [];
+	}
+	if ( typeof context === "boolean" ) {
+		keepScripts = context;
+		context = false;
+	}
+
+	var base, parsed, scripts;
+
+	if ( !context ) {
+
+		// Stop scripts or inline event handlers from being executed immediately
+		// by using document.implementation
+		if ( support.createHTMLDocument ) {
+			context = document.implementation.createHTMLDocument( "" );
+
+			// Set the base href for the created document
+			// so any parsed elements with URLs
+			// are based on the document's URL (gh-2965)
+			base = context.createElement( "base" );
+			base.href = document.location.href;
+			context.head.appendChild( base );
+		} else {
+			context = document;
+		}
+	}
+
+	parsed = rsingleTag.exec( data );
+	scripts = !keepScripts && [];
+
+	// Single tag
+	if ( parsed ) {
+		return [ context.createElement( parsed[ 1 ] ) ];
+	}
+
+	parsed = buildFragment( [ data ], context, scripts );
+
+	if ( scripts && scripts.length ) {
+		jQuery( scripts ).remove();
+	}
+
+	return jQuery.merge( [], parsed.childNodes );
+};
+
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+	var selector, type, response,
+		self = this,
+		off = url.indexOf( " " );
+
+	if ( off > -1 ) {
+		selector = stripAndCollapse( url.slice( off ) );
+		url = url.slice( 0, off );
+	}
+
+	// If it's a function
+	if ( isFunction( params ) ) {
+
+		// We assume that it's the callback
+		callback = params;
+		params = undefined;
+
+	// Otherwise, build a param string
+	} else if ( params && typeof params === "object" ) {
+		type = "POST";
+	}
+
+	// If we have elements to modify, make the request
+	if ( self.length > 0 ) {
+		jQuery.ajax( {
+			url: url,
+
+			// If "type" variable is undefined, then "GET" method will be used.
+			// Make value of this field explicit since
+			// user can override it through ajaxSetup method
+			type: type || "GET",
+			dataType: "html",
+			data: params
+		} ).done( function( responseText ) {
+
+			// Save response for use in complete callback
+			response = arguments;
+
+			self.html( selector ?
+
+				// If a selector was specified, locate the right elements in a dummy div
+				// Exclude scripts to avoid IE 'Permission Denied' errors
+				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+				// Otherwise use the full result
+				responseText );
+
+		// If the request succeeds, this function gets "data", "status", "jqXHR"
+		// but they are ignored because response was set above.
+		// If it fails, this function gets "jqXHR", "status", "error"
+		} ).always( callback && function( jqXHR, status ) {
+			self.each( function() {
+				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
+			} );
+		} );
+	}
+
+	return this;
+};
+
+
+
+
+jQuery.expr.pseudos.animated = function( elem ) {
+	return jQuery.grep( jQuery.timers, function( fn ) {
+		return elem === fn.elem;
+	} ).length;
+};
+
+
+
+
+jQuery.offset = {
+	setOffset: function( elem, options, i ) {
+		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+			position = jQuery.css( elem, "position" ),
+			curElem = jQuery( elem ),
+			props = {};
+
+		// Set position first, in-case top/left are set even on static elem
+		if ( position === "static" ) {
+			elem.style.position = "relative";
+		}
+
+		curOffset = curElem.offset();
+		curCSSTop = jQuery.css( elem, "top" );
+		curCSSLeft = jQuery.css( elem, "left" );
+		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
+
+		// Need to be able to calculate position if either
+		// top or left is auto and position is either absolute or fixed
+		if ( calculatePosition ) {
+			curPosition = curElem.position();
+			curTop = curPosition.top;
+			curLeft = curPosition.left;
+
+		} else {
+			curTop = parseFloat( curCSSTop ) || 0;
+			curLeft = parseFloat( curCSSLeft ) || 0;
+		}
+
+		if ( isFunction( options ) ) {
+
+			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
+			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
+		}
+
+		if ( options.top != null ) {
+			props.top = ( options.top - curOffset.top ) + curTop;
+		}
+		if ( options.left != null ) {
+			props.left = ( options.left - curOffset.left ) + curLeft;
+		}
+
+		if ( "using" in options ) {
+			options.using.call( elem, props );
+
+		} else {
+			if ( typeof props.top === "number" ) {
+				props.top += "px";
+			}
+			if ( typeof props.left === "number" ) {
+				props.left += "px";
+			}
+			curElem.css( props );
+		}
+	}
+};
+
+jQuery.fn.extend( {
+
+	// offset() relates an element's border box to the document origin
+	offset: function( options ) {
+
+		// Preserve chaining for setter
+		if ( arguments.length ) {
+			return options === undefined ?
+				this :
+				this.each( function( i ) {
+					jQuery.offset.setOffset( this, options, i );
+				} );
+		}
+
+		var rect, win,
+			elem = this[ 0 ];
+
+		if ( !elem ) {
+			return;
+		}
+
+		// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
+		// Support: IE <=11 only
+		// Running getBoundingClientRect on a
+		// disconnected node in IE throws an error
+		if ( !elem.getClientRects().length ) {
+			return { top: 0, left: 0 };
+		}
+
+		// Get document-relative position by adding viewport scroll to viewport-relative gBCR
+		rect = elem.getBoundingClientRect();
+		win = elem.ownerDocument.defaultView;
+		return {
+			top: rect.top + win.pageYOffset,
+			left: rect.left + win.pageXOffset
+		};
+	},
+
+	// position() relates an element's margin box to its offset parent's padding box
+	// This corresponds to the behavior of CSS absolute positioning
+	position: function() {
+		if ( !this[ 0 ] ) {
+			return;
+		}
+
+		var offsetParent, offset, doc,
+			elem = this[ 0 ],
+			parentOffset = { top: 0, left: 0 };
+
+		// position:fixed elements are offset from the viewport, which itself always has zero offset
+		if ( jQuery.css( elem, "position" ) === "fixed" ) {
+
+			// Assume position:fixed implies availability of getBoundingClientRect
+			offset = elem.getBoundingClientRect();
+
+		} else {
+			offset = this.offset();
+
+			// Account for the *real* offset parent, which can be the document or its root element
+			// when a statically positioned element is identified
+			doc = elem.ownerDocument;
+			offsetParent = elem.offsetParent || doc.documentElement;
+			while ( offsetParent &&
+				( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
+				jQuery.css( offsetParent, "position" ) === "static" ) {
+
+				offsetParent = offsetParent.parentNode;
+			}
+			if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
+
+				// Incorporate borders into its offset, since they are outside its content origin
+				parentOffset = jQuery( offsetParent ).offset();
+				parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
+				parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
+			}
+		}
+
+		// Subtract parent offsets and element margins
+		return {
+			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+		};
+	},
+
+	// This method will return documentElement in the following cases:
+	// 1) For the element inside the iframe without offsetParent, this method will return
+	//    documentElement of the parent window
+	// 2) For the hidden or detached element
+	// 3) For body or html element, i.e. in case of the html node - it will return itself
+	//
+	// but those exceptions were never presented as a real life use-cases
+	// and might be considered as more preferable results.
+	//
+	// This logic, however, is not guaranteed and can change at any point in the future
+	offsetParent: function() {
+		return this.map( function() {
+			var offsetParent = this.offsetParent;
+
+			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
+				offsetParent = offsetParent.offsetParent;
+			}
+
+			return offsetParent || documentElement;
+		} );
+	}
+} );
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+	var top = "pageYOffset" === prop;
+
+	jQuery.fn[ method ] = function( val ) {
+		return access( this, function( elem, method, val ) {
+
+			// Coalesce documents and windows
+			var win;
+			if ( isWindow( elem ) ) {
+				win = elem;
+			} else if ( elem.nodeType === 9 ) {
+				win = elem.defaultView;
+			}
+
+			if ( val === undefined ) {
+				return win ? win[ prop ] : elem[ method ];
+			}
+
+			if ( win ) {
+				win.scrollTo(
+					!top ? val : win.pageXOffset,
+					top ? val : win.pageYOffset
+				);
+
+			} else {
+				elem[ method ] = val;
+			}
+		}, method, val, arguments.length );
+	};
+} );
+
+// Support: Safari <=7 - 9.1, Chrome <=37 - 49
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( _i, prop ) {
+	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+		function( elem, computed ) {
+			if ( computed ) {
+				computed = curCSS( elem, prop );
+
+				// If curCSS returns percentage, fallback to offset
+				return rnumnonpx.test( computed ) ?
+					jQuery( elem ).position()[ prop ] + "px" :
+					computed;
+			}
+		}
+	);
+} );
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
+		function( defaultExtra, funcName ) {
+
+		// Margin is only for outerHeight, outerWidth
+		jQuery.fn[ funcName ] = function( margin, value ) {
+			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+			return access( this, function( elem, type, value ) {
+				var doc;
+
+				if ( isWindow( elem ) ) {
+
+					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
+					return funcName.indexOf( "outer" ) === 0 ?
+						elem[ "inner" + name ] :
+						elem.document.documentElement[ "client" + name ];
+				}
+
+				// Get document width or height
+				if ( elem.nodeType === 9 ) {
+					doc = elem.documentElement;
+
+					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+					// whichever is greatest
+					return Math.max(
+						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+						elem.body[ "offset" + name ], doc[ "offset" + name ],
+						doc[ "client" + name ]
+					);
+				}
+
+				return value === undefined ?
+
+					// Get width or height on the element, requesting but not forcing parseFloat
+					jQuery.css( elem, type, extra ) :
+
+					// Set width or height on the element
+					jQuery.style( elem, type, value, extra );
+			}, type, chainable ? margin : undefined, chainable );
+		};
+	} );
+} );
+
+
+jQuery.each( [
+	"ajaxStart",
+	"ajaxStop",
+	"ajaxComplete",
+	"ajaxError",
+	"ajaxSuccess",
+	"ajaxSend"
+], function( _i, type ) {
+	jQuery.fn[ type ] = function( fn ) {
+		return this.on( type, fn );
+	};
+} );
+
+
+
+
+jQuery.fn.extend( {
+
+	bind: function( types, data, fn ) {
+		return this.on( types, null, data, fn );
+	},
+	unbind: function( types, fn ) {
+		return this.off( types, null, fn );
+	},
+
+	delegate: function( selector, types, data, fn ) {
+		return this.on( types, selector, data, fn );
+	},
+	undelegate: function( selector, types, fn ) {
+
+		// ( namespace ) or ( selector, types [, fn] )
+		return arguments.length === 1 ?
+			this.off( selector, "**" ) :
+			this.off( types, selector || "**", fn );
+	},
+
+	hover: function( fnOver, fnOut ) {
+		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+	}
+} );
+
+jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
+	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
+	function( _i, name ) {
+
+		// Handle event binding
+		jQuery.fn[ name ] = function( data, fn ) {
+			return arguments.length > 0 ?
+				this.on( name, null, data, fn ) :
+				this.trigger( name );
+		};
+	} );
+
+
+
+
+// Support: Android <=4.0 only
+// Make sure we trim BOM and NBSP
+var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
+
+// Bind a function to a context, optionally partially applying any
+// arguments.
+// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
+// However, it is not slated for removal any time soon
+jQuery.proxy = function( fn, context ) {
+	var tmp, args, proxy;
+
+	if ( typeof context === "string" ) {
+		tmp = fn[ context ];
+		context = fn;
+		fn = tmp;
+	}
+
+	// Quick check to determine if target is callable, in the spec
+	// this throws a TypeError, but we will just return undefined.
+	if ( !isFunction( fn ) ) {
+		return undefined;
+	}
+
+	// Simulated bind
+	args = slice.call( arguments, 2 );
+	proxy = function() {
+		return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+	};
+
+	// Set the guid of unique handler to the same of original handler, so it can be removed
+	proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+	return proxy;
+};
+
+jQuery.holdReady = function( hold ) {
+	if ( hold ) {
+		jQuery.readyWait++;
+	} else {
+		jQuery.ready( true );
+	}
+};
+jQuery.isArray = Array.isArray;
+jQuery.parseJSON = JSON.parse;
+jQuery.nodeName = nodeName;
+jQuery.isFunction = isFunction;
+jQuery.isWindow = isWindow;
+jQuery.camelCase = camelCase;
+jQuery.type = toType;
+
+jQuery.now = Date.now;
+
+jQuery.isNumeric = function( obj ) {
+
+	// As of jQuery 3.0, isNumeric is limited to
+	// strings and numbers (primitives or objects)
+	// that can be coerced to finite numbers (gh-2662)
+	var type = jQuery.type( obj );
+	return ( type === "number" || type === "string" ) &&
+
+		// parseFloat NaNs numeric-cast false positives ("")
+		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+		// subtraction forces infinities to NaN
+		!isNaN( obj - parseFloat( obj ) );
+};
+
+jQuery.trim = function( text ) {
+	return text == null ?
+		"" :
+		( text + "" ).replace( rtrim, "" );
+};
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+	define( "jquery", [], function() {
+		return jQuery;
+	} );
+}
+
+
+
+
+var
+
+	// Map over jQuery in case of overwrite
+	_jQuery = window.jQuery,
+
+	// Map over the $ in case of overwrite
+	_$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+	if ( window.$ === jQuery ) {
+		window.$ = _$;
+	}
+
+	if ( deep && window.jQuery === jQuery ) {
+		window.jQuery = _jQuery;
+	}
+
+	return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( typeof noGlobal === "undefined" ) {
+	window.jQuery = window.$ = jQuery;
+}
+
+
+
+
+return jQuery;
+} );
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.min.js b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.min.js
new file mode 100644
index 0000000..b061403
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(D).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Ae(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,Ce)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click",Ce),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ce:Ee,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Ee,isPropagationStopped:Ee,isImmediatePropagationStopped:Ee,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ce,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ce,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ce,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&be.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&we.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Ae(this,e,Se),!1},trigger:function(){return Ae(this,e),!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return ke(this,e,t,n,r)},one:function(e,t,n,r){return ke(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ee),this.each(function(){S.event.remove(this,e,n,t)})}});var Ne=/<script|<style|<link/i,De=/checked\s*(?:[^=]|=\s*.checked.)/i,je=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function Pe(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&De.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Pe(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),Le)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,He),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(je,""),u,l))}return n}function Re(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Oe(o[r],a[r]);else Oe(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Re(this,e,!0)},remove:function(e){return Re(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Pe(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)})},prepend:function(){return Pe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Pe(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Me=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Ie=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},We=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Fe=new RegExp(ne.join("|"),"i");function Be(e,t,n){var r,i,o,a,s=e.style;return(n=n||Ie(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Me.test(a)&&Fe.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px",t.style.height="1px",n.style.height="9px",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=3<parseInt(r.height),re.removeChild(e)),a}}))}();var _e=["Webkit","Moz","ms"],ze=E.createElement("div").style,Ue={};function Xe(e){var t=S.cssProps[e]||Ue[e];return t||(e in ze?e:Ue[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=_e.length;while(n--)if((e=_e[n]+t)in ze)return e}(e)||e)}var Ve=/^(none|table(?!-c[ea]).+)/,Ge=/^--/,Ye={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Ie(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ge.test(t),l=e.style;if(u||(t=Xe(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ge.test(t)||(t=Xe(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Qe&&(i=Qe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ve.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,u,n):We(e,Ye,function(){return Ze(e,u,n)})},set:function(e,t,n){var r,i=Ie(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Je(0,t,s)}}}),S.cssHooks.marginLeft=$e(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-We(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Je)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ie(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=et).prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}}).init.prototype=et.prototype,(et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[Xe(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=et.prototype.init,S.fx.step={};var tt,nt,rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){nt&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(st):C.setTimeout(st,S.fx.interval),S.fx.tick())}function ut(){return C.setTimeout(function(){tt=void 0}),tt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ft(o,e,t){var n,a,r=0,i=ft.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=tt||ut(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:tt||ut(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=ft.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ct,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(ft,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],ft.tweeners[n]=ft.tweeners[n]||[],ft.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ot.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ct(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?ft.prefilters.unshift(e):ft.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=ft(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&at.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(lt(r,!0),e,t,n)}}),S.each({slideDown:lt("show"),slideUp:lt("hide"),slideToggle:lt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(tt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),tt=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){nt||(nt=!0,st())},S.fx.stop=function(){nt=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},rt=E.createElement("input"),it=E.createElement("select").appendChild(E.createElement("option")),rt.type="checkbox",y.checkOn=""!==rt.value,y.optSelected=it.selected,(rt=E.createElement("input")).value="t",rt.type="radio",y.radioValue="t"===rt.value;var pt,dt=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=dt[t]||S.find.attr;dt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=dt[o],dt[o]=r,r=null!=a(e,t,n)?o:null,dt[o]=i),r}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(P)||[]).join(" ")}function yt(e){return e.getAttribute&&e.getAttribute("class")||""}function mt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,yt(this)))});if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,yt(this)))});if(!arguments.length)return this.attr("class","");if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,yt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=mt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=yt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+vt(yt(n))+" ").indexOf(t))return!0;return!1}});var xt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(xt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:vt(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!bt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,bt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,wt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,wt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var Tt=C.location,Ct={guid:Date.now()},Et=/\?/;S.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||S.error("Invalid XML: "+e),t};var St=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function Dt(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||St.test(n)?i(n,t):Dt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)Dt(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)Dt(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var jt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=E.createElement("a");function Ft(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Bt(t,i,o,a){var s={},u=t===Mt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function $t(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Wt.href=Tt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?$t($t(e,S.ajaxSettings),t):$t(S.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Ht.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Tt.href)+"").replace(Pt,Tt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Wt.protocol+"//"+Wt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Bt(Rt,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ot.test(v.type),f=v.url.replace(qt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(jt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Et.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Lt,"$1"),o=(Et.test(f)?"&":"?")+"_="+Ct.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+It+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Bt(Mt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=S.ajaxSettings.xhr();y.cors=!!zt&&"withCredentials"in zt,y.ajax=zt=!!zt,S.ajaxTransport(function(i){var o,a;if(y.cors||zt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(_t[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=vt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Gt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Gt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Yt=C.jQuery,Qt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Qt),e&&C.jQuery===S&&(C.jQuery=Yt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.min.map b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.min.map
new file mode 100644
index 0000000..cbe1012
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.min.map
@@ -0,0 +1 @@
+{"version":3,"sources":["jquery.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","flat","array","call","concat","apply","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","isFunction","obj","nodeType","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","arguments","first","eq","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","_i","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","pushNative","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","testContext","scope","toSelector","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","input","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","_matchIndexes","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","_","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","showHide","show","values","body","hide","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","height","parseInt","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","opt","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","for","class","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","trim","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery.min.js"}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/loading.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/loading.css
new file mode 100644
index 0000000..22c8a9a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/loading.css
@@ -0,0 +1,132 @@
+#preloadingAnimation {
+    position: fixed;
+    left: 0;
+    top: 0;
+    height: 100%;
+    width: 100%;
+    background: #ffffff;
+    user-select: none;
+    z-index: 9999;
+    overflow: hidden
+}
+
+.lds-roller {
+    display: inline-block;
+    position: relative;
+    left: 50%;
+    top: 50%;
+    transform: translate(-50%,-50%);
+    width: 64px;
+    height: 64px;
+}
+
+    .lds-roller div {
+        animation: lds-roller 1.2s cubic-bezier(0.5,0,0.5,1) infinite;
+        transform-origin: 32px 32px;
+    }
+
+        .lds-roller div:after {
+            content: " ";
+            display: block;
+            position: absolute;
+            width: 6px;
+            height: 6px;
+            border-radius: 50%;
+            background: #13c2c2;
+            margin: -3px 0 0 -3px;
+        }
+
+        .lds-roller div:nth-child(1) {
+            animation-delay: -0.036s;
+        }
+
+            .lds-roller div:nth-child(1):after {
+                top: 50px;
+                left: 50px;
+            }
+
+        .lds-roller div:nth-child(2) {
+            animation-delay: -0.072s;
+        }
+
+            .lds-roller div:nth-child(2):after {
+                top: 54px;
+                left: 45px;
+            }
+
+        .lds-roller div:nth-child(3) {
+            animation-delay: -0.108s;
+        }
+
+            .lds-roller div:nth-child(3):after {
+                top: 57px;
+                left: 39px;
+            }
+
+        .lds-roller div:nth-child(4) {
+            animation-delay: -0.144s;
+        }
+
+            .lds-roller div:nth-child(4):after {
+                top: 58px;
+                left: 32px;
+            }
+
+        .lds-roller div:nth-child(5) {
+            animation-delay: -0.18s;
+        }
+
+            .lds-roller div:nth-child(5):after {
+                top: 57px;
+                left: 25px;
+            }
+
+        .lds-roller div:nth-child(6) {
+            animation-delay: -0.216s;
+        }
+
+            .lds-roller div:nth-child(6):after {
+                top: 54px;
+                left: 19px;
+            }
+
+        .lds-roller div:nth-child(7) {
+            animation-delay: -0.252s;
+        }
+
+            .lds-roller div:nth-child(7):after {
+                top: 50px;
+                left: 14px;
+            }
+
+        .lds-roller div:nth-child(8) {
+            animation-delay: -0.288s;
+        }
+
+            .lds-roller div:nth-child(8):after {
+                top: 45px;
+                left: 10px;
+            }
+
+#preloadingAnimation .load-tips {
+    color: #13c2c2;
+    font-size: 2rem;
+    position: absolute;
+    left: 50%;
+    top: 50%;
+    transform: translate(-50%,-50%);
+    margin-top: 80px;
+    text-align: center;
+    width: 400px;
+    height: 64px;
+}
+
+@keyframes lds-roller {
+    0% {
+        transform: rotate(0deg);
+    }
+
+    100% {
+        transform: rotate(360deg);
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/loading.html b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/loading.html
new file mode 100644
index 0000000..9b93196
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/loading.html
@@ -0,0 +1 @@
+<div id="preloadingAnimation"><div class=lds-roller><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div><div class=load-tips>Loading</div></div>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/html_code_segment.html b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/html_code_segment.html
new file mode 100644
index 0000000..f293aef
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/html_code_segment.html
@@ -0,0 +1,5 @@
+<div class="preloading-animate">
+    <div class="preloading-wrapper">
+        <svg class="preloading-balls" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="67.802" cy="59.907" r="6" fill="#51CACC"><animate attributeName="cx" values="75;57.72542485937369" keyTimes="0;1" dur="1s" repeatCount="indefinite" /><animate attributeName="cy" values="50;73.77641290737884" keyTimes="0;1" dur="1s" repeatCount="indefinite" /><animate attributeName="fill" values="#51CACC;#9DF871" keyTimes="0;1" dur="1s" repeatCount="indefinite" /></circle><circle cx="46.079" cy="69.992" r="6" fill="#9DF871"><animate attributeName="cx" values="57.72542485937369;29.774575140626318" keyTimes="0;1" dur="1s" repeatCount="indefinite" /><animate attributeName="cy" values="73.77641290737884;64.69463130731182" keyTimes="0;1" dur="1s" repeatCount="indefinite" /><animate attributeName="fill" values="#9DF871;#E0FF77" keyTimes="0;1" dur="1s" repeatCount="indefinite" /></circle><circle cx="29.775" cy="52.449" r="6" fill="#E0FF77"><animate attributeName="cx" values="29.774575140626318;29.774575140626315" keyTimes="0;1" dur="1s" repeatCount="indefinite" /><animate attributeName="cy" values="64.69463130731182;35.30536869268818" keyTimes="0;1" dur="1s" repeatCount="indefinite" /><animate attributeName="fill" values="#E0FF77;#DE9DD6" keyTimes="0;1" dur="1s" repeatCount="indefinite" /></circle><circle cx="41.421" cy="31.521" r="6" fill="#DE9DD6"><animate attributeName="cx" values="29.774575140626315;57.72542485937368" keyTimes="0;1" dur="1s" repeatCount="indefinite" /><animate attributeName="cy" values="35.30536869268818;26.22358709262116" keyTimes="0;1" dur="1s" repeatCount="indefinite" /><animate attributeName="fill" values="#DE9DD6;#FF708E" keyTimes="0;1" dur="1s" repeatCount="indefinite" /></circle><circle cx="64.923" cy="36.13" r="6" fill="#FF708E"><animate attributeName="cx" values="57.72542485937368;75" keyTimes="0;1" dur="1s" repeatCount="indefinite" /><animate attributeName="cy" values="26.22358709262116;49.99999999999999" keyTimes="0;1" dur="1s" repeatCount="indefinite" /><animate attributeName="fill" values="#FF708E;#51CACC" keyTimes="0;1" dur="1s" repeatCount="indefinite" /></circle></svg>
+    </div>
+</div>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/loading.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/loading.css
new file mode 100644
index 0000000..4f47d7b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/loading.css
@@ -0,0 +1,22 @@
+.preloading-animate {
+    background: #ffffff;
+    width: 100%;
+    height: 100%;
+    position: fixed;
+    left: 0;
+    top: 0;
+    z-index: 299;
+}
+
+    .preloading-animate .preloading-wrapper {
+        position: absolute;
+        width: 5rem;
+        height: 5rem;
+        left: 50%;
+        top: 50%;
+        transform: translate(-50%,-50%);
+    }
+
+        .preloading-animate .preloading-wrapper .preloading-balls {
+            font-size: 5rem;
+        }
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/loading.svg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/loading.svg
new file mode 100644
index 0000000..7ff7322
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/loading.svg
@@ -0,0 +1 @@
+<svg class="preloading-balls" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="67.802" cy="59.907" r="6" fill="#51CACC"><animate attributeName="cx" values="75;57.72542485937369" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="50;73.77641290737884" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#51CACC;#9DF871" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="46.079" cy="69.992" r="6" fill="#9DF871"><animate attributeName="cx" values="57.72542485937369;29.774575140626318" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="73.77641290737884;64.69463130731182" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#9DF871;#E0FF77" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="29.775" cy="52.449" r="6" fill="#E0FF77"><animate attributeName="cx" values="29.774575140626318;29.774575140626315" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="64.69463130731182;35.30536869268818" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#E0FF77;#DE9DD6" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="41.421" cy="31.521" r="6" fill="#DE9DD6"><animate attributeName="cx" values="29.774575140626315;57.72542485937368" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="35.30536869268818;26.22358709262116" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#DE9DD6;#FF708E" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="64.923" cy="36.13" r="6" fill="#FF708E"><animate attributeName="cx" values="57.72542485937368;75" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="26.22358709262116;49.99999999999999" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#FF708E;#51CACC" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle></svg>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/logo.png b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/logo.png
new file mode 100644
index 0000000..5a014a8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/logo.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Admin.NET.WorkerService.csproj b/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Admin.NET.WorkerService.csproj
new file mode 100644
index 0000000..99412ee
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Admin.NET.WorkerService.csproj
@@ -0,0 +1,17 @@
+<Project Sdk="Microsoft.NET.Sdk.Worker">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <Nullable>enable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <UserSecretsId>dotnet-Yake.Les.WorkerService-6AF0DD27-7672-40AF-AA85-A8BB31E04666</UserSecretsId>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Furion" Version="4.8.8.43" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.9" />
+    <PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
+    <PackageReference Include="Microsoft.Extensions.Hosting.Systemd" Version="6.0.0" />
+    <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="6.0.1" />
+  </ItemGroup>
+</Project>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/DefaultDbContext.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/DefaultDbContext.cs
new file mode 100644
index 0000000..c5eae2c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/DefaultDbContext.cs
@@ -0,0 +1,13 @@
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.WorkerService.DbContexts
+{
+    [AppDbContext("DefaultConnection", DbProvider.SqlServer)]
+    public class DefaultDbContext : AppDbContext<DefaultDbContext>
+    {
+        public DefaultDbContext(DbContextOptions<DefaultDbContext> options) : base(options)
+        {
+        }
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/LogWorker/WorkerLog.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/LogWorker/WorkerLog.cs
new file mode 100644
index 0000000..9dfcb5c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/LogWorker/WorkerLog.cs
@@ -0,0 +1,48 @@
+锘縰sing Furion.DatabaseAccessor;
+using System.Data;
+
+namespace Admin.NET.WorkerService
+{
+    public class WorkerLog : BackgroundService
+    {
+        private readonly ILogger<WorkerLog> _logger;
+        // 鏈嶅姟宸ュ巶
+        private readonly IServiceScopeFactory _scopeFactory;
+
+        public WorkerLog(ILogger<WorkerLog> logger,
+                      IServiceScopeFactory scopeFactory)
+        {
+            _logger = logger;
+            _scopeFactory = scopeFactory;
+        }
+
+        // 鎵ц閫昏緫
+        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
+        {
+            using var scope = _scopeFactory.CreateScope();
+            var services = scope.ServiceProvider;
+            #region 娓呴櫎鏃ュ織
+            while (!stoppingToken.IsCancellationRequested)
+            {
+                await DeleteLog(services);
+                _logger.LogInformation("WorkerLog running at: {time}", DateTimeOffset.Now);
+                //鎵ц鐨勬柟娉�
+                await Task.Delay(24*60*60*1000, stoppingToken);
+            }
+            #endregion
+        }
+
+        /// <summary>
+        /// 瀹氭椂娓呴櫎log鏃ュ織
+        /// </summary>
+        /// <returns></returns>
+        public async Task DeleteLog(IServiceProvider services)
+        {
+            var respository = Db.GetSqlRepository(services);
+            //鍒犻櫎log鏃ュ織
+            await respository.SqlNonQueryAsync(@"TRUNCATE TABLE sys_log_ex ");
+            await respository.SqlNonQueryAsync(@"TRUNCATE TABLE sys_log_op ");
+            await respository.SqlNonQueryAsync(@"TRUNCATE TABLE sys_log_vis ");
+        }
+    }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Program.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Program.cs
new file mode 100644
index 0000000..c928c8e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Program.cs
@@ -0,0 +1,14 @@
+using Admin.NET.WorkerService.DbContexts;
+
+IHost host = Host.CreateDefaultBuilder(args).UseWindowsService().Inject()
+    .ConfigureServices(services =>
+    {
+        // 注册数据库服务
+        services.AddDatabaseAccessor(options =>
+        {
+            options.AddDb<DefaultDbContext>();
+        });
+    })
+    .Build();
+
+await host.RunAsync();
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Properties/launchSettings.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Properties/launchSettings.json
new file mode 100644
index 0000000..fb6d910
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Properties/launchSettings.json
@@ -0,0 +1,11 @@
+锘縶
+  "profiles": {
+    "Admin.NET.WorkerService": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "environmentVariables": {
+        "DOTNET_ENVIRONMENT": "Development"
+      }
+    }
+  }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Worker.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Worker.cs
new file mode 100644
index 0000000..61a64f9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Worker.cs
@@ -0,0 +1,44 @@
+using Furion.DatabaseAccessor;
+using System.Data;
+
+namespace Admin.NET.WorkerService
+{
+    public class Worker : BackgroundService
+    {
+        private readonly ILogger<Worker> _logger;
+        // 服务工厂
+        private readonly IServiceScopeFactory _scopeFactory;
+
+        public Worker(ILogger<Worker> logger, IServiceScopeFactory scopeFactory)
+        {
+            _logger = logger;
+            _scopeFactory = scopeFactory;
+        }
+
+        // 启动
+        public override Task StartAsync(CancellationToken cancellationToken)
+        {
+            return base.StartAsync(cancellationToken);
+        }
+        // 执行逻辑
+        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
+        {
+            while (!stoppingToken.IsCancellationRequested)
+            {
+                using (var scope = _scopeFactory.CreateScope())
+                {
+                    var services = scope.ServiceProvider;
+                    Console.WriteLine(DateTime.Now);
+                }
+                //执行的方法
+                await Task.Delay(2000, stoppingToken);
+            }
+        }
+        // 停止
+        public override Task StopAsync(CancellationToken cancellationToken)
+        {
+            return base.StopAsync(cancellationToken);
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/appsettings.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/appsettings.json
new file mode 100644
index 0000000..47c2585
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/appsettings.json
@@ -0,0 +1,9 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.Hosting.Lifetime": "Information"
+    }
+  },
+  "DefaultConnection": "Server=10.10.40.166;Database=Admin.NET;User=sa;Password=123abc.com;MultipleActiveResultSets=True;"
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/iWare_RawMaterialWarehouse_Wms.sln b/iWare_RawMaterialWarehouse_Wms/iWare_RawMaterialWarehouse_Wms.sln
new file mode 100644
index 0000000..f29b080
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/iWare_RawMaterialWarehouse_Wms.sln
@@ -0,0 +1,61 @@
+锘�
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.2.32616.157
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Admin.NET.Application", "Admin.NET.Application\Admin.NET.Application.csproj", "{BB790B2B-A9A6-40F6-8FBC-672D8F4DD577}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Admin.NET.Core", "Admin.NET.Core\Admin.NET.Core.csproj", "{42305754-428D-40A4-B1E5-29C54CC4C5D6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Admin.NET.Database.Migrations", "Admin.NET.Database.Migrations\Admin.NET.Database.Migrations.csproj", "{FCE8BC9E-8EB8-4C94-A066-98E84844F340}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Admin.NET.EntityFramework.Core", "Admin.NET.EntityFramework.Core\Admin.NET.EntityFramework.Core.csproj", "{4FFF74F5-673C-42DA-9CD0-434E9D447B95}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Admin.NET.Web.Core", "Admin.NET.Web.Core\Admin.NET.Web.Core.csproj", "{6D5ACDA5-3F93-47F4-AD77-E9E47CE65EC2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Admin.NET.Web.Entry", "Admin.NET.Web.Entry\Admin.NET.Web.Entry.csproj", "{EAE8E359-2F6F-48D0-9B0E-A73F9FF9719C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Admin.NET.WorkerService", "Admin.NET.WorkerService\Admin.NET.WorkerService.csproj", "{1AB6B79D-2011-4886-B603-99AD9BD56394}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{BB790B2B-A9A6-40F6-8FBC-672D8F4DD577}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{BB790B2B-A9A6-40F6-8FBC-672D8F4DD577}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{BB790B2B-A9A6-40F6-8FBC-672D8F4DD577}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{BB790B2B-A9A6-40F6-8FBC-672D8F4DD577}.Release|Any CPU.Build.0 = Release|Any CPU
+		{42305754-428D-40A4-B1E5-29C54CC4C5D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{42305754-428D-40A4-B1E5-29C54CC4C5D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{42305754-428D-40A4-B1E5-29C54CC4C5D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{42305754-428D-40A4-B1E5-29C54CC4C5D6}.Release|Any CPU.Build.0 = Release|Any CPU
+		{FCE8BC9E-8EB8-4C94-A066-98E84844F340}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{FCE8BC9E-8EB8-4C94-A066-98E84844F340}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{FCE8BC9E-8EB8-4C94-A066-98E84844F340}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{FCE8BC9E-8EB8-4C94-A066-98E84844F340}.Release|Any CPU.Build.0 = Release|Any CPU
+		{4FFF74F5-673C-42DA-9CD0-434E9D447B95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{4FFF74F5-673C-42DA-9CD0-434E9D447B95}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{4FFF74F5-673C-42DA-9CD0-434E9D447B95}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{4FFF74F5-673C-42DA-9CD0-434E9D447B95}.Release|Any CPU.Build.0 = Release|Any CPU
+		{6D5ACDA5-3F93-47F4-AD77-E9E47CE65EC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{6D5ACDA5-3F93-47F4-AD77-E9E47CE65EC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{6D5ACDA5-3F93-47F4-AD77-E9E47CE65EC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{6D5ACDA5-3F93-47F4-AD77-E9E47CE65EC2}.Release|Any CPU.Build.0 = Release|Any CPU
+		{EAE8E359-2F6F-48D0-9B0E-A73F9FF9719C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{EAE8E359-2F6F-48D0-9B0E-A73F9FF9719C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{EAE8E359-2F6F-48D0-9B0E-A73F9FF9719C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{EAE8E359-2F6F-48D0-9B0E-A73F9FF9719C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1AB6B79D-2011-4886-B603-99AD9BD56394}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1AB6B79D-2011-4886-B603-99AD9BD56394}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1AB6B79D-2011-4886-B603-99AD9BD56394}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1AB6B79D-2011-4886-B603-99AD9BD56394}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {8BAE642B-ACBC-46A8-AC07-EACCB555AB13}
+	EndGlobalSection
+EndGlobal

--
Gitblit v1.9.3